diff --git a/.dockerignore b/.dockerignore index db43474..6478979 100644 --- a/.dockerignore +++ b/.dockerignore @@ -15,3 +15,6 @@ target/ Thumbs.db .idea/ .vscode/ + +# A local server's one-time setup token must never reach an image. +checkgate-setup-token diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b1cb65a..9a4b546 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,6 +15,19 @@ concurrency: cancel-in-progress: true jobs: + # --------------------------------------------------------------------------- + # Repository hygiene — dependencies, build output and tool caches must not be + # committed; every job below installs and builds what it needs itself. + # --------------------------------------------------------------------------- + hygiene: + name: Repository hygiene + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - name: No generated or machine-specific files are tracked + run: scripts/check-tracked-artifacts.sh + # --------------------------------------------------------------------------- # Rust — test the whole workspace # --------------------------------------------------------------------------- @@ -144,6 +157,10 @@ jobs: run: | cargo test -p server --test integration -- --nocapture cargo test -p server --test e2e_sse -- --nocapture + cargo test -p server --test rate_limit -- --nocapture + cargo test -p server --test setup_ownership -- --nocapture + cargo test -p server --test sdk_health -- --nocapture + cargo test -p server --test environment_isolation -- --nocapture # --------------------------------------------------------------------------- # Native SDK e2e — build the real @checkgate/node addon and drive it over a @@ -203,17 +220,48 @@ jobs: REDIS_URL: redis://localhost:6379 run: | PORT=3111 + SETUP_TOKEN="ci-setup-token-$(openssl rand -hex 16)" SESSION_SECRET=ci-secret-0123456789-0123456789-0123456789-0123456789 \ + SETUP_TOKEN="$SETUP_TOKEN" \ COOKIE_SECURE=false PORT=$PORT PUBLIC_DIR="$(mktemp -d)" RUST_LOG=warn \ ./target/debug/server > server.log 2>&1 & SRV=$! for i in $(seq 1 60); do curl -sf "http://127.0.0.1:$PORT/health" >/dev/null && break; sleep 1; done - CHECKGATE_URL="http://127.0.0.1:$PORT" node sdks/nodejs/e2e/e2e.cjs + CHECKGATE_URL="http://127.0.0.1:$PORT" CHECKGATE_SETUP_TOKEN="$SETUP_TOKEN" \ + node sdks/nodejs/e2e/e2e.cjs RC=$? kill $SRV 2>/dev/null || true if [ $RC -ne 0 ]; then echo "=== server log ==="; cat server.log; fi exit $RC + # --------------------------------------------------------------------------- + # Docker image — build it and smoke-test both deployment modes (all-in-one + # and external PostgreSQL/Redis), restarts, persistence and refusal of + # half-specified configuration. + # --------------------------------------------------------------------------- + docker-smoke: + name: Docker image smoke tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build image + uses: docker/build-push-action@v6 + with: + context: . + file: Dockerfile + push: false + load: true + tags: checkgate:smoke + cache-from: type=gha + cache-to: type=gha,mode=max + + - name: Smoke-test deployment modes + run: scripts/docker-smoke.sh checkgate:smoke + # --------------------------------------------------------------------------- # Dashboard — TypeScript build check # --------------------------------------------------------------------------- diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8cc382c..f1f276a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -94,11 +94,10 @@ jobs: artifact: checkgate.linux-arm64-gnu.node cross: true - # Linux x64 (musl — Alpine) — cross-compile via napi-rs cross toolchain + # Linux x64 (musl — Alpine) — cross-compile with Zig - os: ubuntu-latest target: x86_64-unknown-linux-musl artifact: checkgate.linux-x64-musl.node - cross: true # macOS x64 — cross-compile natively from arm64 runner - os: macos-latest @@ -118,10 +117,19 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + # Install targets on the toolchain selected by rust-toolchain.toml. + # Installing them on `stable` can leave the pinned toolchain without core/std. + - name: Install Rust toolchain and target + shell: bash + run: | + rustup show + rustup target add "${{ matrix.target }}" + + - name: Install Zig for musl + if: matrix.target == 'x86_64-unknown-linux-musl' + uses: mlugg/setup-zig@v2 with: - targets: ${{ matrix.target }} + version: 0.14.1 - name: Cache Rust build artifacts uses: Swatinem/rust-cache@v2 @@ -141,10 +149,10 @@ jobs: shell: bash run: | JS_FLAGS="--js native-binding.js --dts native-binding.d.ts" - if [ "${{ matrix.target }}" = "aarch64-unknown-linux-musl" ]; then - # Satisfy host-side NAPI-RS linker check (will use real linker inside Docker) - sudo ln -s /usr/bin/true /usr/bin/aarch64-linux-musl-gcc - npx napi build --platform --release --target ${{ matrix.target }} --use-napi-cross $JS_FLAGS + if [ "${{ matrix.target }}" = "x86_64-unknown-linux-musl" ]; then + # Zig supplies the musl runtime and unwinder that Ubuntu's + # musl-gcc wrapper lacks. NAPI also disables static CRT linkage. + npx napi build --platform --release --target ${{ matrix.target }} --cross-compile $JS_FLAGS elif [ "${{ matrix.cross }}" = "true" ]; then npx napi build --platform --release --target ${{ matrix.target }} --use-napi-cross $JS_FLAGS else @@ -179,10 +187,10 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable - with: - targets: wasm32-unknown-unknown + - name: Install Rust toolchain and target + run: | + rustup show + rustup target add wasm32-unknown-unknown - name: Cache Rust build artifacts uses: Swatinem/rust-cache@v2 @@ -291,6 +299,11 @@ jobs: cache-from: type=gha cache-to: type=gha,mode=max + # Both deployment modes must start, persist data and refuse + # misconfiguration before anything is published. + - name: Smoke-test deployment modes + run: scripts/docker-smoke.sh "${{ env.IMAGE_NAME }}:scan" + - name: Run Trivy vulnerability scanner uses: aquasecurity/trivy-action@master with: diff --git a/.gitignore b/.gitignore index f45c362..697fee1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,19 @@ # Rust target/ -# Node / Bun -dashboard/node_modules/ -docs/node_modules/ +# Node / Bun — dependencies are installed by each package's own +# `npm install` / `bun install`; never commit them. +node_modules/ docs/.vitepress/dist/ server/public/ +coverage/ + +# Dart / Flutter — tool state and build/test caches are machine-specific and +# regenerated by `flutter pub get` / `flutter test`. +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +sdks/flutter/dart/build/ # TypeScript incremental build state — regenerated by every `tsc -b`, so # tracking it churns the diff on each commit. @@ -22,3 +30,6 @@ docs/bun.lock .env .env.* !.env.example + +# One-time setup token written by a local server that has not been set up. +checkgate-setup-token diff --git a/Cargo.lock b/Cargo.lock index 89bcdb8..fb0e844 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2228,6 +2228,7 @@ dependencies = [ "futures-util", "governor", "hmac", + "ipnet", "rand 0.10.2", "redis", "reqwest", @@ -2238,6 +2239,7 @@ dependencies = [ "time", "tokio", "tokio-stream", + "tower", "tower-http", "tracing", "tracing-subscriber", diff --git a/Dockerfile b/Dockerfile index 798deb6..8be4c32 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,14 @@ # ============================================================================= -# Checkgate — all-in-one image +# Checkgate image # -# Bundles: PostgreSQL 16 + Redis 7 + Checkgate server + React dashboard. -# Perfect for demos, staging, or single-node self-hosted deployments. +# Bundles: PostgreSQL + Redis + Checkgate server + React dashboard. +# +# One image, two modes (see docker/entrypoint-full.sh, CHECKGATE_MODE): +# all-in-one (default) starts the bundled PostgreSQL and Redis — demos, +# staging, single-node self-hosting. +# external uses DATABASE_URL and REDIS_URL and starts neither bundled +# service — managed databases, multiple replicas. Chosen +# automatically when either URL is set. # ============================================================================= # --------------------------------------------------------------------------- @@ -77,7 +83,8 @@ COPY --from=dashboard-builder /app/server/public ./public COPY docker/entrypoint-full.sh /entrypoint.sh RUN sed -i 's/\r//' /entrypoint.sh && chmod +x /entrypoint.sh && \ - mkdir -p /var/lib/postgresql/data /var/log && \ + mkdir -p /var/lib/postgresql/data /var/log /var/lib/checkgate /var/lib/redis && \ + chmod 700 /var/lib/checkgate && \ chown -R postgres:postgres /var/lib/postgresql && \ touch /var/log/postgresql.log /var/log/redis.log && \ chown postgres:postgres /var/log/postgresql.log /var/log/redis.log @@ -89,6 +96,7 @@ HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \ CMD curl -f http://localhost:3000/health || exit 1 ENV PUBLIC_DIR=/app/public \ + SETUP_TOKEN_FILE=/var/lib/checkgate/setup-token \ PGDATA=/var/lib/postgresql/data \ POSTGRES_USER=checkgate \ POSTGRES_PASSWORD=checkgate \ diff --git a/NOTICE b/NOTICE index abe2ee9..9fa5454 100644 --- a/NOTICE +++ b/NOTICE @@ -1,5 +1,5 @@ Checkgate -Copyright 2025 ThinkGrid Labs +Copyright 2025 -This product includes software developed at ThinkGrid Labs +This product includes software developed (https://github.com/checkgate-sh/checkgate). diff --git a/README.md b/README.md index 7b523bc..a16b51d 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,6 @@ See [CONTRIBUTING.md](CONTRIBUTING.md). ## License -Apache License 2.0 — © 2026 ThinkGrid Labs +Apache License 2.0 — © 2025 diff --git a/dashboard/scripts/capture-screenshots.mjs b/dashboard/scripts/capture-screenshots.mjs index 0a7b425..64c3c9f 100644 --- a/dashboard/scripts/capture-screenshots.mjs +++ b/dashboard/scripts/capture-screenshots.mjs @@ -8,6 +8,7 @@ const baseURL = process.env.CHECKGATE_SCREENSHOT_BASE_URL ?? 'http://127.0.0.1:3 const output = (process.env.CHECKGATE_SCREENSHOT_OUTPUT ?? fileURLToPath(new URL('../../assets/screenshots/', import.meta.url))).replace(/\/$/, '') const staging = `${output}.capture` +const setupToken = process.env.CHECKGATE_SCREENSHOT_SETUP_TOKEN ?? 'checkgate-screenshot-demo-setup-token' const workspaceName = 'Vantage Robotics' const projectName = 'Vantage Mobile' const password = 'checkgate-screenshot-demo-password' @@ -44,10 +45,10 @@ try { extraHTTPHeaders: { 'X-Checkgate-Request': 'true' }, }) - async function api(path, method = 'GET', data, request = context.request) { - // Respect the server's 60-request-per-minute API quota while seeding. + async function api(path, method = 'GET', data, request = context.request, headers = {}) { + // Stay well inside the server's per-client API quota while seeding. await new Promise(resolve => setTimeout(resolve, 1050)) - const response = await request.fetch(path, { method, data }) + const response = await request.fetch(path, { method, data, headers }) if (!response.ok()) throw new Error(`${method} ${path}: ${response.status()} ${await response.text()}`) return response.status() === 204 ? undefined : response.json() } @@ -56,7 +57,7 @@ try { if (!workspace.is_setup_complete) { await api('/api/setup/complete', 'POST', { workspace_name: workspaceName, project_name: projectName, ...admin, - }) + }, context.request, { 'X-Checkgate-Setup-Token': setupToken }) } else { assert.equal(workspace.workspace_name, workspaceName, 'Expected the disposable screenshot workspace') await api('/api/auth/login', 'POST', admin) diff --git a/dashboard/src/context/AuthContext.tsx b/dashboard/src/context/AuthContext.tsx index d2f773c..07e8a6b 100644 --- a/dashboard/src/context/AuthContext.tsx +++ b/dashboard/src/context/AuthContext.tsx @@ -41,6 +41,7 @@ interface AuthContextValue { name: string, email: string, password: string, + setupToken: string, ) => Promise<{ ok: boolean; error?: string }> } @@ -167,12 +168,16 @@ export function AuthProvider({ children }: { children: ReactNode }) { }, []) const completeSetup = useCallback( - async (workspaceName: string, projectName: string, name: string, email: string, password: string) => { + async (workspaceName: string, projectName: string, name: string, email: string, password: string, setupToken: string) => { try { const res = await fetch('/api/setup/complete', { method: 'POST', credentials: 'same-origin', - headers: { 'Content-Type': 'application/json', 'X-Checkgate-Request': 'true' }, + headers: { + 'Content-Type': 'application/json', + 'X-Checkgate-Request': 'true', + 'X-Checkgate-Setup-Token': setupToken, + }, body: JSON.stringify({ workspace_name: workspaceName.trim(), project_name: projectName.trim() || 'My App', @@ -185,6 +190,12 @@ export function AuthProvider({ children }: { children: ReactNode }) { if (res.status === 404) { return { ok: false, error: 'Setup already complete. Please log in.' } } + if (res.status === 401) { + return { ok: false, error: 'The setup token is not valid. Go back to the first step and re-enter it.' } + } + if (res.status === 409) { + return { ok: false, error: 'An account with this email already exists. Use a different email.' } + } if (res.status === 422) { return { ok: false, error: 'Password must be at least 8 characters.' } } diff --git a/dashboard/src/pages/SdkHealth.tsx b/dashboard/src/pages/SdkHealth.tsx index 456ef9a..191b14a 100644 --- a/dashboard/src/pages/SdkHealth.tsx +++ b/dashboard/src/pages/SdkHealth.tsx @@ -45,7 +45,12 @@ export default function SdkHealth() {

SDK Health

- Live SSE connections to this server instance. Refreshes every 10 s. + Live SSE connections to this server instance, for the projects you can access. + Refreshes every 10 s. +

+

+ Each instance tracks its own connections. Client addresses are shown as a network + prefix unless you are a workspace admin.

+ +
+ + { setSetupToken(e.target.value); setTokenError('') }} + placeholder="Paste the one-time setup token" + className="w-full bg-white border border-gray-100 rounded-xl pl-9 pr-4 py-2.5 text-gray-900 placeholder-gray-400 text-sm font-mono focus:outline-none focus:ring-4 focus:ring-brand-500/10 focus:border-brand-500/30 transition-all shadow-premium" + /> +
+

+ The value of SETUP_TOKEN, or the token the server wrote to its{' '} + checkgate-setup-token file on first start (see the server log for the path). +

+ {tokenError && ( +

{tokenError}

+ )} + +

Already set up?{' '} diff --git a/docker-compose.screenshots.yml b/docker-compose.screenshots.yml index f846bd3..50d90b8 100644 --- a/docker-compose.screenshots.yml +++ b/docker-compose.screenshots.yml @@ -13,4 +13,5 @@ services: - "127.0.0.1:3100:3000" environment: SESSION_SECRET: checkgate-screenshot-demo-session-secret + SETUP_TOKEN: checkgate-screenshot-demo-setup-token COOKIE_SECURE: "false" diff --git a/docker-compose.yml b/docker-compose.yml index 66724ff..062b1c7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,9 @@ # React dashboard bundled inside. Ideal for demos, CI smoke tests, or # single-node self-hosted deployments. # +# To use your own PostgreSQL and Redis instead, set DATABASE_URL and REDIS_URL +# (the image then runs in external mode) — see docs/self-hosting.md. +# # Usage: # docker compose up -d # @@ -24,6 +27,9 @@ services: POSTGRES_DB: checkgate SDK_KEY: ${SDK_KEY:-} SESSION_SECRET: ${SESSION_SECRET:-} + # One-time token for the setup wizard. Leave empty to have the server + # generate one: docker exec checkgate cat /var/lib/checkgate/setup-token + SETUP_TOKEN: ${SETUP_TOKEN:-} COOKIE_SECURE: ${COOKIE_SECURE:-false} volumes: - checkgate_pgdata:/var/lib/postgresql/data diff --git a/docker/entrypoint-full.sh b/docker/entrypoint-full.sh index 354bbdb..82b4a70 100644 --- a/docker/entrypoint-full.sh +++ b/docker/entrypoint-full.sh @@ -1,8 +1,60 @@ #!/usr/bin/env bash -# Checkgate full-image entrypoint -# Starts PostgreSQL → Redis → Checkgate server in sequence. +# Checkgate image entrypoint. +# +# The image runs in one of two modes, chosen by CHECKGATE_MODE: +# +# all-in-one Start the bundled PostgreSQL and Redis, then the server, wired +# to them. Data lives in the /var/lib/postgresql/data volume. +# external Start only the server, using DATABASE_URL and REDIS_URL as +# given. The bundled PostgreSQL and Redis are never started. +# +# When CHECKGATE_MODE is unset, the mode is external if DATABASE_URL or +# REDIS_URL is set, and all-in-one otherwise. Connection variables are never +# overwritten, and a half-specified configuration stops the container instead +# of falling back to the bundled services. set -euo pipefail +die() { + echo "[error] $*" >&2 + exit 1 +} + +# Strip credentials before a URL reaches the log: the userinfo part, and the +# whole query string (libpq-style URLs may carry ?password=…). +redact() { + printf '%s' "$1" | sed -E 's#(://)[^@/]*@#\1***@#; s#\?.*#?***#' +} + +MODE="${CHECKGATE_MODE:-}" +if [ -z "$MODE" ]; then + if [ -n "${DATABASE_URL:-}" ] || [ -n "${REDIS_URL:-}" ]; then + MODE=external + else + MODE=all-in-one + fi +fi + +case "$MODE" in + external) + [ -n "${DATABASE_URL:-}" ] || die "external mode needs DATABASE_URL (postgres://user:password@host:5432/db). Set it, or use CHECKGATE_MODE=all-in-one with neither DATABASE_URL nor REDIS_URL set." + [ -n "${REDIS_URL:-}" ] || die "external mode needs REDIS_URL (redis://host:6379). Set it, or use CHECKGATE_MODE=all-in-one with neither DATABASE_URL nor REDIS_URL set." + echo "[init] Mode: external — bundled PostgreSQL and Redis are not started." + echo "[init] PostgreSQL: $(redact "$DATABASE_URL")" + echo "[init] Redis: $(redact "$REDIS_URL")" + export PUBLIC_DIR="${PUBLIC_DIR:-/app/public}" + exec checkgate-server + ;; + all-in-one) + if [ -n "${DATABASE_URL:-}" ] || [ -n "${REDIS_URL:-}" ]; then + die "CHECKGATE_MODE=all-in-one runs the bundled PostgreSQL and Redis, but DATABASE_URL or REDIS_URL is set. Unset them, or use CHECKGATE_MODE=external." + fi + echo "[init] Mode: all-in-one — starting bundled PostgreSQL and Redis." + ;; + *) + die "CHECKGATE_MODE must be 'all-in-one' or 'external', got '$MODE'." + ;; +esac + PG_DATA="${PGDATA:-/var/lib/postgresql/data}" PG_USER="${POSTGRES_USER:-checkgate}" PG_PASSWORD="${POSTGRES_PASSWORD:-checkgate}" @@ -11,8 +63,7 @@ PG_DB="${POSTGRES_DB:-checkgate}" # Locate the versioned PostgreSQL bin dir (e.g. /usr/lib/postgresql/15/bin) PG_BIN=$(find /usr/lib/postgresql -name "initdb" -type f 2>/dev/null | head -1 | xargs -r dirname) if [ -z "$PG_BIN" ]; then - echo "[error] Could not locate PostgreSQL binaries. Is postgresql installed?" >&2 - exit 1 + die "Could not locate PostgreSQL binaries. Is postgresql installed?" fi export PATH="$PG_BIN:$PATH" @@ -20,10 +71,6 @@ if [ "${PG_PASSWORD}" = "checkgate" ]; then echo "[warn] POSTGRES_PASSWORD is set to the default value 'checkgate'. Set a strong password in production." fi -if [ -z "${SDK_KEY:-}" ]; then - echo "[warn] SDK_KEY is not set. API authentication is disabled. Set SDK_KEY in production." -fi - # --------------------------------------------------------------------------- # 1. Initialise PostgreSQL data directory (first boot only) # --------------------------------------------------------------------------- @@ -51,7 +98,7 @@ echo "[init] PostgreSQL ready." # 3. Start Redis (with optional password) # --------------------------------------------------------------------------- echo "[init] Starting Redis..." -REDIS_ARGS="--daemonize yes --logfile /var/log/redis.log --appendonly yes" +REDIS_ARGS="--daemonize yes --logfile /var/log/redis.log --dir /var/lib/redis --appendonly yes" if [ -n "${REDIS_PASSWORD:-}" ]; then REDIS_ARGS="${REDIS_ARGS} --requirepass ${REDIS_PASSWORD}" echo "[init] Redis password authentication enabled." @@ -63,7 +110,7 @@ redis-server ${REDIS_ARGS} echo "[init] Redis ready." # --------------------------------------------------------------------------- -# 4. Export connection strings for the server +# 4. Point the server at the bundled services # --------------------------------------------------------------------------- export DATABASE_URL="postgres://${PG_USER}:${PG_PASSWORD}@127.0.0.1/${PG_DB}" if [ -n "${REDIS_PASSWORD:-}" ]; then @@ -73,6 +120,5 @@ else fi export PUBLIC_DIR="${PUBLIC_DIR:-/app/public}" -# SDK_KEY and PORT are passed in via docker run -e / docker-compose env echo "[init] Starting Checkgate server..." exec checkgate-server diff --git a/docs/.vitepress/theme/FlowDiagram.vue b/docs/.vitepress/theme/FlowDiagram.vue index d5dd3ed..e43b584 100644 --- a/docs/.vitepress/theme/FlowDiagram.vue +++ b/docs/.vitepress/theme/FlowDiagram.vue @@ -30,7 +30,7 @@ const pushPath = (cy) => `M500,190 Q590,${cy} 654,${cy}` Checkgate Server - in-memory FlagStore + per-environment SSE PostgreSQL diff --git a/docs/api-reference.md b/docs/api-reference.md index dd92d52..082b666 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -135,7 +135,95 @@ Public endpoint — no auth required. Returns the workspace name for the login p **Response** `200 OK` ```json -{ "workspace_name": "Acme Corp" } +{ "workspace_name": "Acme Corp", "is_setup_complete": true } +``` + +--- + +## First-Run Setup + +These endpoints exist only until the first admin has been created; afterwards +both return `404`. They require the installation's one-time **setup token** in +a header (never a query parameter): + +```http +X-Checkgate-Setup-Token: +``` + +The token is the server's `SETUP_TOKEN` value, or — when that is unset — a +random token each instance writes to its `SETUP_TOKEN_FILE` on boot (see +[Self-Hosting → First-run setup](./self-hosting.md#first-run-setup)). A missing +or wrong token returns `401`. + +### Get the Seeded SDK Key + +```http +GET /api/setup/key +X-Checkgate-Setup-Token: +``` + +**Response** `200 OK` — the SDK key generated on first boot, in the same shape +as [Create SDK Key](#sdk-keys) (`id`, `name`, `key`, `prefix`, `environment_id`, +`environment_name`, `created_at`). + +### Complete Setup + +```http +POST /api/setup/complete +Content-Type: application/json +X-Checkgate-Request: true +X-Checkgate-Setup-Token: +``` + +```json +{ + "workspace_name": "Acme Corp", + "project_name": "My App", + "name": "Juan Dela Cruz", + "email": "admin@example.com", + "password": "at-least-8-characters" +} +``` + +**Response** `200 OK` — the new admin (same shape as [Login](#login)), with a +session cookie set. + +| Status | Meaning | +|--------|---------| +| `401` | Missing or invalid setup token | +| `404` | Setup is already complete | +| `409` | An account with this email already has a password | +| `422` | Missing field or password shorter than 8 characters | + +Setup is atomic: it runs in one transaction under a PostgreSQL advisory lock +and re-checks completion while holding it, so if several requests race — on +one instance or many — exactly one creates the admin and the others get `404`. + +--- + +## Rate Limits + +Requests are limited per client IP, with a separate budget per kind of +endpoint. Defaults (requests per minute, configurable — see +[Self-Hosting → Rate limits](./self-hosting.md#rate-limits)): + +| Class | Endpoints | Default | +|-------|-----------|---------| +| Auth | `POST /api/auth/login`, `/api/setup/*` | 20 | +| API | every other `/api/*` route | 300 | +| SDK | `GET /flags/snapshot` | 600 | +| SSE connect | opening `GET /stream` (events on an open stream are not counted) | 120 | +| Ingest | `POST /api/environments/{env_id}/impressions` and `/events` | 600 | +| — | `GET /health` | never limited | + +A refused request gets `429 Too Many Requests` with a `Retry-After` header +(seconds) and: + +```json +{ + "error": "Too many requests. Please slow down and try again shortly.", + "retry_after_seconds": 3 +} ``` --- @@ -1781,3 +1869,39 @@ Public endpoint — no authentication required. **Response** `200 OK` — body: `OK` Use this for load balancer and container health checks. +It is never rate limited. + +--- + +## SDK Connections + +```http +GET /api/health/connections +``` + +Lists the SSE connections currently open **on the server instance that answers +the request** — connections are tracked in that process's memory, so behind a +load balancer each instance reports only its own clients. Requires a session or +a personal access token (either scope); SDK keys get `403`. + +Visibility follows project membership: + +- **Workspace admins** see every connection, with the full client address. +- **Everyone else** sees only connections of environments in projects they are + a member of, with `client_ip` reduced to its network (`/24` for IPv4, `/48` + for IPv6). Connections with no environment (dashboard sessions, the legacy + `SDK_KEY`) are visible to workspace admins only. + +**Response** `200 OK` + +```json +[ + { + "connection_id": "9f2c4e1a7b3d5e60", + "environment_id": "a1b2c3d4-…", + "sdk_key_name": "Production", + "client_ip": "203.0.113.0/24", + "connected_at": 1767225600 + } +] +``` diff --git a/docs/enterprise-setup.md b/docs/enterprise-setup.md index 055d017..599014a 100644 --- a/docs/enterprise-setup.md +++ b/docs/enterprise-setup.md @@ -19,8 +19,8 @@ Checkgate uses PostgreSQL for long-term persistence of flags, user roles, and au ### 2. The Real-Time Sync (Redis) Checkgate uses Redis for inter-instance communication and real-time updates. - **Requirement**: A standard Redis instance (ElastiCache, MemoryStore, or self-hosted). -- **The Sync Engine**: Checkgate uses the **Redis Pub/Sub** pattern. When a flag is updated on one server instance, it broadcasts a message via Redis. All other instances receive the update and refresh their local memory caches instantly. -- **Resilience**: If Redis is temporarily unavailable, Checkgate continues to serve flags from its in-memory store; real-time updates will resume as soon as the connection is restored. +- **The Sync Engine**: Checkgate uses the **Redis Pub/Sub** pattern. When a flag is updated on one server instance, it broadcasts a message via Redis. Every instance receives it and pushes it to its connected SDKs of that environment. +- **Resilience**: If Redis is temporarily unavailable, flags keep being served from PostgreSQL (SSE bootstrap, snapshot polling, REST) and SDKs keep evaluating their local copies; once Redis is back, SSE clients are told to reconnect and re-bootstrap so no change is missed. --- @@ -34,16 +34,27 @@ docker run -d -p 3000:3000 \ -e DATABASE_URL="postgres://user:pass@your-rds-endpoint:5432/checkgate" \ -e REDIS_URL="redis://your-elasticache-endpoint:6379" \ -e SESSION_SECRET="$(openssl rand -hex 32)" \ + -e SETUP_TOKEN="$(openssl rand -hex 32)" \ + -e TRUSTED_PROXIES="10.0.0.0/16" \ -e COOKIE_SECURE="true" \ - ghcr.io/checkgate-sh/checkgate:latest + ghcr.io/checkgate-sh/checkgate: ``` +Passing `DATABASE_URL` and `REDIS_URL` runs the image in **external mode**: it +starts only the server and dashboard, never the bundled PostgreSQL or Redis, and +exits with a clear error if either URL is missing. Every replica must share the +same database, Redis, `SESSION_SECRET` and `SETUP_TOKEN`. Set `TRUSTED_PROXIES` +to the addresses your load balancer connects from so rate limits apply per +client. See [Self-Hosting](./self-hosting.md) for every option. + --- ## Phase 3: The Dashboard Onboarding Once your Control Plane is accessible (e.g., at `https://flags.internal.com`), you will be redirected to the setup wizard at `/setup` on first visit: +0. **Setup token** — the `SETUP_TOKEN` value you deployed with. It proves you + operate this installation, so nobody else can claim it first. 1. **Workspace name** — your company or team name, shown on the login page. 2. **Admin account** — your name, work email, and a password (minimum 8 characters). 3. **SDK key** — auto-generated on first boot; copy it now for use in your applications. diff --git a/docs/guide/architecture.md b/docs/guide/architecture.md index 092033d..e2b2e6c 100644 --- a/docs/guide/architecture.md +++ b/docs/guide/architecture.md @@ -21,18 +21,20 @@ lookup — no network on the evaluation path. The detailed view: │ │ │ Projects → Environments → Flags/Keys/Impressions │ │ │ -│ ┌──────────────────────────┐ ┌──────────┐ ┌───────────────┐ │ -│ │ REST API │ │ In-Memory│ │ SSE Stream │ │ -│ │ /api/projects/{id}/ │─▶│ FlagStore│─▶│ /stream │ │ -│ │ environments/{id}/ │ └──────────┘ └───────────────┘ │ -│ │ flags │ ▲ (per-env, scoped │ -│ └──────────────────────────┘ │ by SDK key) │ -│ │ │ Redis subscriber │ -│ ▼ │ applies updates │ -│ ┌──────────────┐ ┌──────────┐ │ │ -│ │ PostgreSQL │─▶│ Redis │─────┘ │ -│ │ (durable) │ │ (pub/sub)│ │ -│ └──────────────┘ └──────────┘ │ +│ ┌──────────────────────────┐ ┌────────────────────────┐ │ +│ │ REST API │ │ SSE Stream /stream │ │ +│ │ /api/projects/{id}/ │ │ per environment, │ │ +│ │ environments/{id}/ │ │ scoped by SDK key │ │ +│ │ flags │ └────────────────────────┘ │ +│ └──────────────────────────┘ ▲ bootstrap ▲ deltas │ +│ │ │ │ │ +│ ▼ │ │ │ +│ ┌──────────────┐ │ │ │ +│ │ PostgreSQL │──────────────────────┘ │ │ +│ │ (durable) │──▶┌──────────┐ │ │ +│ └──────────────┘ │ Redis │──────────────────────┘ │ +│ │ (pub/sub)│ │ +│ └──────────┘ │ └──────────────────────────────────────────────────────────────────┘ SSE (push on change, per-environment) │ @@ -67,7 +69,8 @@ An SDK key is tied to one environment. When a client authenticates, the server u The server is a single Rust binary built with **Axum**. It is responsible for: - Storing projects, environments, flags, and users durably in **PostgreSQL** -- Maintaining an in-memory `FlagStore` for fast SSE bootstrap +- Serving each SDK's SSE bootstrap and poll snapshot straight from **PostgreSQL**, + per environment (the server keeps no flag cache of its own) - Exposing a **REST API** for CRUD operations (project- and environment-scoped) - Broadcasting flag changes to connected SDKs via **SSE** (`/stream`), scoped per environment - Publishing change events to **Redis** pub/sub for multi-instance deployments @@ -79,10 +82,14 @@ When a flag is created or updated: 1. The REST API handler writes the flag to **PostgreSQL** 2. It publishes an `UPSERT` event (with `env_id`) to the `checkgate_updates` **Redis** channel -3. The server's own Redis subscriber receives the event and updates the local in-memory `FlagStore` +3. Every instance's Redis subscriber (including the writer's own) hands the event to its SSE connections 4. Connected SSE clients whose SDK key matches the flag's `environment_id` receive the event -> The in-memory store is updated via the Redis subscriber loop, not directly by the write handler. This ensures the same code path runs for both local writes and cross-instance propagation. +> Flags are identified by environment *and* key — two environments may hold the same key with +> different values. The server never caches flags in memory: a new SSE connection's bootstrap and +> `/flags/snapshot` read the environment's rows from PostgreSQL, so there is no shared cache that +> one environment's write could overwrite for another. Each SDK holds its own environment's flags +> in its local `FlagStore`. ### Multi-Instance Deployments @@ -135,7 +142,7 @@ POST /api/environments/{env_id}/impressions The core is a Rust library (`core/`) compiled into each SDK: -- **`FlagStore`** — thread-safe `DashMap` holding the in-memory flag cache +- **`FlagStore`** — thread-safe `DashMap` holding an SDK's in-memory flags (one environment per SDK instance) - **`evaluate(flag, user_context)`** — pure function, no I/O, no allocations on the hot path ### Evaluation Logic diff --git a/docs/self-hosting.md b/docs/self-hosting.md index 4d95517..5fe66e0 100644 --- a/docs/self-hosting.md +++ b/docs/self-hosting.md @@ -1,17 +1,43 @@ --- title: "Self-Hosting Checkgate — Docker & AWS Deployment Guide" -description: "Deploy Checkgate on your own infrastructure using Docker Compose, AWS EC2, or ECS Fargate. Your flag data stays on your servers. Includes environment variable reference, load balancing tips, and upgrade instructions." +description: "Deploy Checkgate on your own infrastructure: the all-in-one Docker image, or the same image against your own PostgreSQL and Redis. Covers local development, Docker Compose, production configuration, health checks, rate limits, reverse proxies and upgrades." --- # Self-Hosting -Checkgate is designed to be self-hosted. The all-in-one Docker image bundles PostgreSQL, Redis, the server, and the dashboard into a single container — no external services required. +Checkgate is designed to be self-hosted. One Docker image covers two deployment +modes: -## Docker Compose (Recommended) +| Mode | What runs in the container | Use it for | +|------|----------------------------|------------| +| **All-in-one** (default) | PostgreSQL + Redis + server + dashboard | Local evaluation, demos, staging, single-node installs | +| **External services** | Server + dashboard only, using your `DATABASE_URL` and `REDIS_URL` | Managed databases (RDS, Cloud SQL, ElastiCache…), several replicas, production | + +The image picks the mode from `CHECKGATE_MODE` (`all-in-one` or `external`). +When that is unset, it runs **external** if `DATABASE_URL` or `REDIS_URL` is set +and **all-in-one** otherwise. It never overrides connection strings you pass, +and it refuses to start on a half-specified configuration — for example +`DATABASE_URL` without `REDIS_URL` — rather than quietly using the bundled +services. + +## Docker Compose (all-in-one) Run the published release image with Docker Compose. No repository clone or local build is needed. -Create a deployment directory and save the following as `compose.yml`: +Create a deployment directory with a `.env` file (the server refuses to start +without `SESSION_SECRET`): + +```bash +SESSION_SECRET=$(openssl rand -hex 32) # Required +POSTGRES_PASSWORD=strong-db-password # Replaces default "checkgate" +SETUP_TOKEN=$(openssl rand -hex 32) # One-time token for the setup wizard +COOKIE_SECURE=false # true once served over HTTPS +``` + +Write the values themselves into the file (run the `openssl` commands and +paste their output); Compose does not execute `$(…)` in `.env` files. + +Save the following as `compose.yml`: ```yaml services: @@ -23,6 +49,7 @@ services: environment: POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-checkgate} SESSION_SECRET: ${SESSION_SECRET:-} + SETUP_TOKEN: ${SETUP_TOKEN:-} COOKIE_SECURE: ${COOKIE_SECURE:-false} volumes: - checkgate_pgdata:/var/lib/postgresql/data @@ -42,34 +69,104 @@ docker compose up -d ``` This starts a single container that includes: -- **PostgreSQL** — persistent flag and user storage -- **Redis** — pub/sub for real-time multi-instance sync +- **PostgreSQL** — persistent flag and user storage, in the `checkgate_pgdata` volume +- **Redis** — pub/sub for real-time sync - **Checkgate server** — REST API + SSE stream on port `3000` - **React dashboard** — served at `http://localhost:3000` -### Configuration +Open the dashboard and enter the setup token (see [First-run setup](#first-run-setup)). +Keep the `checkgate_pgdata` volume: it holds all of your data and survives +container restarts, re-creation and image upgrades. + +## External PostgreSQL and Redis -Create a `.env` file in the deployment directory, alongside `compose.yml`: +Pass both connection strings; the container then starts only the server and +dashboard: ```bash -SESSION_SECRET=your-random-64-char-secret # Required in production -POSTGRES_PASSWORD=strong-db-password # Replaces default "checkgate" -COOKIE_SECURE=true # Set false only for local HTTP development +docker run -d --name checkgate -p 3000:3000 \ + -e DATABASE_URL="postgres://checkgate:password@your-postgres:5432/checkgate" \ + -e REDIS_URL="redis://your-redis:6379" \ + -e SESSION_SECRET="$(openssl rand -hex 32)" \ + -e SETUP_TOKEN="$(openssl rand -hex 32)" \ + -e COOKIE_SECURE=true \ + ghcr.io/checkgate-sh/checkgate: +``` + +Or with Compose: + +```yaml +services: + checkgate: + image: ghcr.io/checkgate-sh/checkgate: + ports: + - "3000:3000" + environment: + CHECKGATE_MODE: external # optional — implied by the URLs below + DATABASE_URL: ${DATABASE_URL} + REDIS_URL: ${REDIS_URL} + SESSION_SECRET: ${SESSION_SECRET} + SETUP_TOKEN: ${SETUP_TOKEN} + COOKIE_SECURE: "true" + restart: unless-stopped ``` -Then run: +Requirements and behaviour: + +- **Both** `DATABASE_URL` and `REDIS_URL` are required. If either is missing, + the container exits with an error naming it. It never falls back to the + bundled services or to `localhost`. +- The database must already exist; Checkgate creates and migrates its tables on + startup, so the role needs permission to create tables in it. Tested with + PostgreSQL 15 (bundled in the image) and 16 (CI). +- The container logs the target it connects to with credentials removed + (`postgres://***@your-postgres:5432/checkgate`). If the database is + unreachable the container exits instead of running half-configured. +- Setting `CHECKGATE_MODE=all-in-one` together with either URL is a + configuration error and is refused. + +## Local development + +Run PostgreSQL and Redis in containers and the server from source: ```bash -docker compose up -d +docker run -d --name cg-dev-pg -e POSTGRES_USER=checkgate -e POSTGRES_PASSWORD=password \ + -e POSTGRES_DB=checkgate -p 5432:5432 postgres:16 +docker run -d --name cg-dev-redis -p 6379:6379 redis:7 + +cargo run -p server # http://localhost:3000 +cd dashboard && bun install && bun run dev ``` +Debug builds default `DATABASE_URL` to `postgres://checkgate:password@localhost/checkgate`, +`REDIS_URL` to `redis://localhost:6379` and `SESSION_SECRET` to an insecure +development key, and log a warning for each. **Release builds — including the +Docker image — have no such defaults** and refuse to start without them. With +`SETUP_TOKEN` unset, the first start writes the setup token to +`./checkgate-setup-token` (git-ignored); or export `SETUP_TOKEN` yourself. + +## Production configuration + +- Pin a version tag instead of `:latest`. +- Set `SESSION_SECRET` (≥ 32 random characters) and `SETUP_TOKEN`, and keep + them in your secret store rather than in the image or compose file. +- Serve Checkgate over HTTPS and set `COOKIE_SECURE=true`. +- Behind a reverse proxy or load balancer, set `TRUSTED_PROXIES` to its + addresses (see [Behind a reverse proxy](#behind-a-reverse-proxy-or-load-balancer)), + or every client is rate-limited as the proxy. +- For several replicas, use external mode: all replicas must share one + PostgreSQL database, one Redis, the same `SESSION_SECRET` and the same + `SETUP_TOKEN`. +- Size `DB_MAX_CONNECTIONS` × replicas below your database's connection limit. +- Back up PostgreSQL (see [Backup](#backup)); Redis holds no durable state. + ## Docker Images One image is published per release: | Image | Description | |-------|-------------| -| `ghcr.io/checkgate-sh/checkgate:latest` | All-in-one: PostgreSQL + Redis + server + dashboard | +| `ghcr.io/checkgate-sh/checkgate:latest` | All-in-one or external mode (see above) | | `ghcr.io/checkgate-sh/checkgate:` | Pinned release version (use the version tag without its leading `v`) | The image is multi-architecture: `linux/amd64` and `linux/arm64`. Docker selects the matching architecture automatically. For production, replace `:latest` in `compose.yml` with a published version tag to control upgrades. @@ -78,13 +175,23 @@ The image is multi-architecture: `linux/amd64` and `linux/arm64`. Docker selects | Variable | Default | Description | |----------|---------|-------------| -| `SESSION_SECRET` | _(insecure dev key)_ | Secret for encrypting session cookies. Use a random ≥32-char string in production. | -| `DATABASE_URL` | `postgres://checkgate:password@localhost/checkgate` | PostgreSQL connection string (used when not using bundled PG) | -| `REDIS_URL` | `redis://localhost:6379` | Redis connection string (used when not using bundled Redis) | -| `POSTGRES_PASSWORD` | `checkgate` | Password for the bundled PostgreSQL instance | -| `POSTGRES_USER` | `checkgate` | Username for the bundled PostgreSQL instance | -| `POSTGRES_DB` | `checkgate` | Database name for the bundled PostgreSQL instance | +| `CHECKGATE_MODE` | _(auto)_ | Image only: `all-in-one` or `external`. Unset: external if `DATABASE_URL` or `REDIS_URL` is set. | +| `SESSION_SECRET` | _(none — required)_ | Secret for encrypting session cookies. A random ≥32-char string. Release builds refuse to start without it. | +| `SETUP_TOKEN` | _(generated)_ | One-time token for the setup wizard, ≥16 chars. Unset: each instance generates one (see [First-run setup](#first-run-setup)). | +| `SETUP_TOKEN_FILE` | `checkgate-setup-token` (image: `/var/lib/checkgate/setup-token`) | Where a generated setup token is written. | +| `DATABASE_URL` | _(none — required)_ | PostgreSQL connection string. Set by the image in all-in-one mode; required in external mode and for the bare binary. | +| `REDIS_URL` | _(none — required)_ | Redis connection string. Same rules as `DATABASE_URL`. | +| `POSTGRES_PASSWORD` | `checkgate` | All-in-one only: password for the bundled PostgreSQL | +| `POSTGRES_USER` | `checkgate` | All-in-one only: username for the bundled PostgreSQL | +| `POSTGRES_DB` | `checkgate` | All-in-one only: database name for the bundled PostgreSQL | +| `REDIS_PASSWORD` | _(unset)_ | All-in-one only: password for the bundled Redis | | `COOKIE_SECURE` | `true` | Set `false` for local HTTP development. Controls the `Secure` cookie flag. | +| `TRUSTED_PROXIES` | _(none)_ | IPs/CIDRs whose `X-Forwarded-For` is believed (see [Rate limits](#rate-limits)) | +| `RATE_LIMIT_AUTH_PER_MINUTE` | `20` | Per-client login/setup budget; `0` disables | +| `RATE_LIMIT_API_PER_MINUTE` | `300` | Per-client REST API budget; `0` disables | +| `RATE_LIMIT_SDK_PER_MINUTE` | `600` | Per-client `/flags/snapshot` budget; `0` disables | +| `RATE_LIMIT_SSE_PER_MINUTE` | `120` | Per-client SSE connection budget; `0` disables | +| `RATE_LIMIT_INGEST_PER_MINUTE` | `600` | Per-client impression/event budget; `0` disables | | `SDK_KEY` | _(unset)_ | Legacy env var: adds an extra accepted SDK key without a DB entry | | `PUBLIC_DIR` | `public` | Directory to serve dashboard static files from | | `PORT` | `3000` | Port the server listens on | @@ -93,7 +200,8 @@ The image is multi-architecture: `linux/amd64` and `linux/arm64`. Docker selects ### Security -Always set `SESSION_SECRET` in production. Without it, session cookies use a hardcoded dev key that is public knowledge — anyone can forge sessions. +Always set `SESSION_SECRET` in production — it is what keeps session cookies +from being forged. Release builds refuse to start without it. ```bash # Generate a secure session secret @@ -102,18 +210,77 @@ openssl rand -hex 32 SDK keys are managed through the dashboard Settings page. The first key is auto-generated on first boot. Additional keys can be created and revoked without restarting the server. -## External PostgreSQL and Redis - -To use your own PostgreSQL and Redis instead of the bundled ones, run the image directly and pass the connection strings: +## First-run setup + +A fresh installation is claimed by whoever completes the setup wizard, so the +wizard requires a one-time **setup token**. This keeps an internet-reachable +server from being taken over by the first stranger to open it. + +- **Choose the token yourself (recommended for production and required for + read-only filesystems):** set `SETUP_TOKEN` to a random string of at least 16 + characters (`openssl rand -hex 32`). With several replicas, give them all the + same value. +- **Or let the server generate one:** with `SETUP_TOKEN` unset, every instance + writes a random token to `SETUP_TOKEN_FILE` (default `checkgate-setup-token` + in its working directory; `/var/lib/checkgate/setup-token` in the Docker + image) with mode `0600`, and logs the file's path — never the token. Any + instance accepts any instance's token. Read it with, for example: + + ```bash + docker exec checkgate cat /var/lib/checkgate/setup-token + ``` + +Paste the token into the first step of the wizard. It is sent in the +`X-Checkgate-Setup-Token` header, never in a URL. Completing setup invalidates +every setup token and the instance deletes its token file; other instances +delete theirs on their next start. + +**Upgrading:** installations that have already completed setup are not +affected. An installation that was never set up needs the token from now on. +No database migration is involved — generated token hashes are stored in the +existing `settings` table. + +## Rate limits + +Requests are limited per client IP, with an independent budget per class of +endpoint, so SDK traffic cannot lock operators out of the dashboard and a +password-guessing run cannot exhaust the SDK budget. `/health` is never +limited. Opening an SSE stream counts once; events delivered on an open stream +are never counted. + +| Variable | Default (per minute) | Applies to | +|----------|----------------------|------------| +| `RATE_LIMIT_AUTH_PER_MINUTE` | `20` | `POST /api/auth/login`, `/api/setup/*` | +| `RATE_LIMIT_API_PER_MINUTE` | `300` | all other `/api/*` routes | +| `RATE_LIMIT_SDK_PER_MINUTE` | `600` | `GET /flags/snapshot` | +| `RATE_LIMIT_SSE_PER_MINUTE` | `120` | opening `GET /stream` | +| `RATE_LIMIT_INGEST_PER_MINUTE` | `600` | impression and event ingestion | + +Set a variable to `0` to disable that class (for example, when a gateway in +front of Checkgate already limits it). Many SDK instances behind one NAT or +egress IP share a budget; raise the SDK, SSE and ingest limits accordingly. +Limiter state holds only recently active clients (IPv6 clients are grouped by +/64) and is pruned every minute. + +### Behind a reverse proxy or load balancer + +By default the client is the TCP peer, and `X-Forwarded-For` is **ignored** — +otherwise any client could choose its own rate-limit identity by sending the +header. If Checkgate runs behind a proxy, list the proxy's addresses so its +header is believed: ```bash -docker run -d -p 3000:3000 \ - -e DATABASE_URL="postgres://user:password@your-postgres:5432/checkgate" \ - -e REDIS_URL="redis://your-redis:6379" \ - -e SESSION_SECRET="your-secret" \ - ghcr.io/checkgate-sh/checkgate:latest +TRUSTED_PROXIES="10.0.0.0/8, 192.168.1.10" # IPs and/or CIDR ranges ``` +The `X-Forwarded-For` chain is read from the right: hops that are trusted +proxies are skipped and the first untrusted hop is the client. Entries a +client supplies itself are never used. If the header is malformed, the request +is attributed to the nearest trusted proxy. An invalid `TRUSTED_PROXIES` value +stops the server at startup. Only trust addresses that your proxies actually +use — a trusted range that untrusted clients can connect from lets them spoof +any address. + ## AWS ### EC2 Deployment @@ -124,23 +291,26 @@ docker run -d -p 3000:3000 \ sudo yum update -y && sudo yum install -y docker sudo systemctl start docker ``` -3. Set up RDS PostgreSQL and ElastiCache Redis (optional — use the bundled versions for simpler setups) +3. Either use the bundled services (all-in-one — just follow [Docker Compose](#docker-compose-all-in-one)), + or set up RDS PostgreSQL and ElastiCache Redis and continue below. 4. Create a `.env` file: ```bash DATABASE_URL=postgres://user:pass@rds-endpoint:5432/checkgate REDIS_URL=redis://elasticache-endpoint:6379 SESSION_SECRET=your-random-secret + SETUP_TOKEN=your-random-setup-token COOKIE_SECURE=true ``` 5. Run: ```bash docker run -d --env-file .env -p 3000:3000 \ - ghcr.io/checkgate-sh/checkgate:latest + ghcr.io/checkgate-sh/checkgate: ``` ### ECS (Fargate) -A basic task definition: +A basic task definition (keep the secrets in Secrets Manager or SSM and +reference them with `secrets` in production): ```json { @@ -152,22 +322,30 @@ A basic task definition: "containerDefinitions": [ { "name": "checkgate", - "image": "ghcr.io/checkgate-sh/checkgate:latest", + "image": "ghcr.io/checkgate-sh/checkgate:", "portMappings": [{"containerPort": 3000}], "environment": [ {"name": "DATABASE_URL", "value": "postgres://..."}, {"name": "REDIS_URL", "value": "redis://..."}, {"name": "SESSION_SECRET", "value": "your-random-secret"}, + {"name": "SETUP_TOKEN", "value": "your-random-setup-token"}, + {"name": "TRUSTED_PROXIES", "value": "10.0.0.0/16"}, {"name": "COOKIE_SECURE", "value": "true"} - ] + ], + "healthCheck": { + "command": ["CMD-SHELL", "curl -f http://localhost:3000/health || exit 1"], + "interval": 30, "timeout": 10, "retries": 3, "startPeriod": 30 + } } ] } ``` +Set `TRUSTED_PROXIES` to the subnets your load balancer connects from. + ### Load Balancing -Checkgate is stateless — the in-memory flag store is rebuilt from PostgreSQL on startup and kept in sync via Redis pub/sub. Run as many instances as you need behind an ALB. +Checkgate keeps no flag state in server memory: SSE bootstrap, snapshot polling and the REST API read PostgreSQL, and live changes fan out to every instance through Redis pub/sub. Run as many instances as you need behind an ALB. (The SDK health page is the exception — each instance lists only its own SSE connections.) **Important**: The SSE stream (`/stream`) requires sticky sessions or a long-lived HTTP/2 connection. Configure your ALB target group with: - **Protocol**: HTTP/1.1 (SSE is not compatible with HTTP/2 connection multiplexing on ALB) @@ -183,7 +361,23 @@ The server exposes a health check endpoint: GET /health ``` -Returns `200 OK` with body `OK`. Use this for load balancer and container health checks (as configured in the Dockerfile's `HEALTHCHECK` instruction). +Returns `200 OK` with body `OK` once the server is listening — that is, after it +has connected to PostgreSQL and Redis and applied migrations. It is never rate +limited. It is a liveness check: it does not re-check PostgreSQL or Redis on +each call. + +The image declares a `HEALTHCHECK` (`curl -f http://localhost:3000/health`, +every 30 s), so `docker ps` shows the container as `healthy`. On Kubernetes: + +```yaml +readinessProbe: + httpGet: { path: /health, port: 3000 } + periodSeconds: 10 +livenessProbe: + httpGet: { path: /health, port: 3000 } + initialDelaySeconds: 30 + periodSeconds: 30 +``` ## Upgrading @@ -196,6 +390,29 @@ docker compose up -d checkgate The server applies any new migrations before accepting traffic. Existing data is preserved. +### Upgrading to the release with deployment modes and setup tokens + +- **You ran the image with `DATABASE_URL`/`REDIS_URL` set.** Earlier images + ignored both and always used the bundled PostgreSQL inside the container, so + your data is there — in the `/var/lib/postgresql/data` volume, if you mounted + one. The new image connects to the URLs you pass, which will look like a fresh + install. Before upgrading, dump the bundled database + (`docker exec pg_dump -U checkgate checkgate > checkgate.sql`) + and restore it into your external database — or, to keep using the bundled + database, remove `DATABASE_URL` and `REDIS_URL` from the container's + environment. +- **Setup tokens.** Installations that already completed setup are unaffected. + A never-set-up installation now needs the setup token + ([First-run setup](#first-run-setup)). +- **Reverse proxies.** `X-Forwarded-For` is now honoured only from + `TRUSTED_PROXIES`. Behind a proxy, set it — otherwise all clients share the + proxy's rate-limit budget and are logged under its address. +- **Rate limits.** The single 60 requests/minute limit is replaced by the + per-class budgets in [Rate limits](#rate-limits), which are higher for every + class except login/setup (20/minute). +- **Missing connection settings.** The bare binary (outside the image) no longer + defaults `DATABASE_URL`/`REDIS_URL` to `localhost` in release builds. + ## Backup Back up your PostgreSQL database using standard tooling: diff --git a/scripts/check-tracked-artifacts.sh b/scripts/check-tracked-artifacts.sh new file mode 100755 index 0000000..e605e8c --- /dev/null +++ b/scripts/check-tracked-artifacts.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# Fails if generated or machine-specific files are tracked by Git. +# +# Dependencies, build output and tool caches are recreated by each package's +# own install/build step (npm/bun install, flutter pub get, cargo build), so +# committing them only bloats the repository — and can leak into published +# packages (pub and npm both pack from the working tree). +# +# scripts/check-tracked-artifacts.sh +set -euo pipefail + +cd "$(git rev-parse --show-toplevel)" + +# Directories that are always generated, wherever they appear. +dirs='node_modules|\.dart_tool|target|coverage|\.gradle|\.cxx|Pods|xcuserdata|__pycache__' +pattern="(^|/)(${dirs})/" +# Generated outputs at known locations. +pattern+='|^sdks/flutter/dart/build/|^sdks/react-native/android/build/|^sdks/react-native/rust-core/' +pattern+='|^docs/\.vitepress/dist/|^server/public/' +# Generated or local-only files. +pattern+='|\.(node|tsbuildinfo|dill|pyc)$|(^|/)native-binding\.(js|d\.ts)$' +pattern+='|(^|/)\.DS_Store$|(^|/)checkgate-setup-token$|(^|/)\.env$' + +offending="$(git ls-files | grep -E "$pattern" || true)" +if [ -n "$offending" ]; then + count="$(wc -l <<<"$offending")" + echo "error: $count generated or machine-specific file(s) are tracked:" >&2 + head -20 <<<"$offending" >&2 + [ "$count" -le 20 ] || echo " … and $((count - 20)) more" >&2 + echo "Remove them with 'git rm -r --cached ' and make sure .gitignore covers them." >&2 + exit 1 +fi +echo "ok: no generated or machine-specific files are tracked" diff --git a/scripts/docker-smoke.sh b/scripts/docker-smoke.sh new file mode 100755 index 0000000..9df1f67 --- /dev/null +++ b/scripts/docker-smoke.sh @@ -0,0 +1,223 @@ +#!/usr/bin/env bash +# Smoke-tests both deployment modes of a built Checkgate image. +# +# scripts/docker-smoke.sh [image] (default: checkgate:latest) +# +# all-in-one: first boot, generated setup token (file only, never logged), +# setup + login, data surviving a container restart and a container +# re-create on the same volume. +# external: connects to a separate PostgreSQL and Redis, starts neither +# bundled service, writes to the external database, survives a restart. +# misconfiguration: every half-specified or conflicting configuration stops +# the container with a clear error instead of using the bundled services. +# +# Needs docker, curl and python3. Everything it creates is removed on exit. +set -euo pipefail + +IMAGE="${1:-checkgate:latest}" +RUN_ID="cgsmoke-$$" +NET="$RUN_ID-net" +SECRET="smoke-session-secret-0123456789-0123456789-0123456789" +CONTAINERS=() +VOLUMES=() + +log() { echo "==> $*"; } +fail() { + echo "FAIL: $*" >&2 + exit 1 +} + +cleanup() { + for c in "${CONTAINERS[@]}"; do docker rm -f "$c" >/dev/null 2>&1 || true; done + for v in "${VOLUMES[@]}"; do docker volume rm -f "$v" >/dev/null 2>&1 || true; done + docker network rm "$NET" >/dev/null 2>&1 || true + rm -rf "$WORK" +} +WORK="$(mktemp -d)" +trap cleanup EXIT + +docker image inspect "$IMAGE" >/dev/null 2>&1 || fail "image $IMAGE not found — build it first" +docker network create "$NET" >/dev/null + +# Host port a container's 3000 is published on. +port_of() { docker port "$1" 3000/tcp | head -1 | sed 's/.*://'; } + +wait_healthy() { + local name="$1" port + for _ in $(seq 1 120); do + if [ "$(docker inspect -f '{{.State.Running}}' "$name" 2>/dev/null)" != "true" ]; then + docker logs "$name" >&2 || true + fail "$name stopped while starting" + fi + port="$(port_of "$name" 2>/dev/null || true)" + if [ -n "$port" ] && curl -sf "http://127.0.0.1:$port/health" >/dev/null; then + return 0 + fi + sleep 1 + done + docker logs "$name" >&2 || true + fail "$name did not become healthy" +} + +# api NAME METHOD PATH BODY [EXTRA_CURL_ARGS...] — prints the HTTP status and +# leaves the response body in $WORK/body. Pass '' for no body. +api() { + local name="$1" method="$2" path="$3" body="$4" + shift 4 + local port data=() + port="$(port_of "$name")" + [ -z "$body" ] || data=(--data "$body") + curl -s -o "$WORK/body" -w '%{http_code}' -X "$method" \ + -H 'Content-Type: application/json' -H 'X-Checkgate-Request: true' \ + -b "$WORK/cookies-$name" -c "$WORK/cookies-$name" \ + "${data[@]}" "$@" "http://127.0.0.1:$port$path" +} + +expect() { + local want="$1" got="$2" what="$3" + [ "$got" = "$want" ] || fail "$what: expected HTTP $want, got $got ($(cat "$WORK/body" 2>/dev/null))" +} + +json_field() { python3 -c 'import json,sys; print(json.load(sys.stdin)[sys.argv[1]])' "$1" < "$WORK/body"; } + +process_names() { docker exec "$1" sh -c 'cat /proc/[0-9]*/comm 2>/dev/null' | sort -u; } + +SETUP='{"workspace_name":"Smoke","project_name":"Smoke","name":"Admin","email":"admin@smoke.test","password":"smoke-password-1"}' +LOGIN='{"email":"admin@smoke.test","password":"smoke-password-1"}' + +# --------------------------------------------------------------------------- +log "all-in-one: first boot" +AIO="$RUN_ID-aio" +PGVOL="$RUN_ID-pgdata" +VOLUMES+=("$PGVOL") +CONTAINERS+=("$AIO") +run_aio() { + docker run -d --name "$AIO" -p 127.0.0.1::3000 \ + -e SESSION_SECRET="$SECRET" -e COOKIE_SECURE=false -e POSTGRES_PASSWORD=smoke-db-password \ + -v "$PGVOL:/var/lib/postgresql/data" "$IMAGE" >/dev/null +} +run_aio +wait_healthy "$AIO" +# Captured before grepping: with pipefail, `docker logs | grep -q` fails when +# grep exits early and docker logs gets SIGPIPE. +LOGS="$(docker logs "$AIO" 2>&1)" +grep -q "Mode: all-in-one" <<<"$LOGS" || fail "all-in-one mode not reported" +PROCS="$(process_names "$AIO")" +for p in postgres redis-server checkgate-serve; do + grep -qx "$p" <<<"$PROCS" || fail "all-in-one: $p is not running" +done + +docker exec "$AIO" test -d /var/lib/redis/appendonlydir || fail "bundled Redis does not write to its /var/lib/redis volume" + +TOKEN="$(docker exec "$AIO" cat /var/lib/checkgate/setup-token)" +[ "${#TOKEN}" -eq 64 ] || fail "generated setup token has unexpected length" +[ "$(docker exec "$AIO" stat -c %a /var/lib/checkgate/setup-token)" = "600" ] || fail "token file is not 0600" +LOGS="$(docker logs "$AIO" 2>&1)" +grep -q "setup token" <<<"$LOGS" || fail "log does not point at the token file" +if grep -qF "$TOKEN" <<<"$LOGS"; then fail "setup token appears in the log"; fi + +expect 401 "$(api "$AIO" POST /api/setup/complete "$SETUP")" "setup without token" +expect 401 "$(api "$AIO" POST /api/setup/complete "$SETUP" -H 'X-Checkgate-Setup-Token: wrong-token-0123456789')" "setup with wrong token" +expect 200 "$(api "$AIO" GET /api/setup/key '' -H "X-Checkgate-Setup-Token: $TOKEN")" "setup key" +ENV_ID="$(json_field environment_id)" +expect 200 "$(api "$AIO" POST /api/setup/complete "$SETUP" -H "X-Checkgate-Setup-Token: $TOKEN")" "setup" +docker exec "$AIO" test ! -e /var/lib/checkgate/setup-token || fail "token file left after setup" +expect 200 "$(api "$AIO" POST "/api/environments/$ENV_ID/flags" '{"key":"smoke-flag","is_enabled":true,"flag_type":"boolean","rules":[]}')" "create flag" + +log "all-in-one: container restart keeps data" +docker restart "$AIO" >/dev/null +wait_healthy "$AIO" +rm -f "$WORK/cookies-$AIO" +expect 200 "$(api "$AIO" POST /api/auth/login "$LOGIN")" "login after restart" +expect 200 "$(api "$AIO" GET "/api/environments/$ENV_ID/flags/smoke-flag" '')" "flag after restart" +expect 404 "$(api "$AIO" POST /api/setup/complete "$SETUP" -H "X-Checkgate-Setup-Token: $TOKEN")" "setup is one-time" + +log "all-in-one: re-created container on the same volume keeps data" +docker rm -f "$AIO" >/dev/null +run_aio +wait_healthy "$AIO" +rm -f "$WORK/cookies-$AIO" +expect 200 "$(api "$AIO" POST /api/auth/login "$LOGIN")" "login after re-create" +expect 200 "$(api "$AIO" GET "/api/environments/$ENV_ID/flags/smoke-flag" '')" "flag after re-create" +docker rm -f "$AIO" >/dev/null + +# --------------------------------------------------------------------------- +log "external: separate PostgreSQL and Redis" +EXT_PG="$RUN_ID-pg" +EXT_REDIS="$RUN_ID-redis" +EXT="$RUN_ID-ext" +CONTAINERS+=("$EXT_PG" "$EXT_REDIS" "$EXT") +docker run -d --name "$EXT_PG" --network "$NET" \ + -e POSTGRES_USER=cgext -e POSTGRES_PASSWORD=ext-db-secret -e POSTGRES_DB=checkgate_ext \ + postgres:16 >/dev/null +docker run -d --name "$EXT_REDIS" --network "$NET" redis:7 >/dev/null +for _ in $(seq 1 60); do + docker exec "$EXT_PG" pg_isready -U cgext -d checkgate_ext >/dev/null 2>&1 && break + sleep 1 +done + +EXT_DB_URL="postgres://cgext:ext-db-secret@$EXT_PG:5432/checkgate_ext?sslmode=disable" +EXT_TOKEN="smoke-ext-setup-token-0123456789" +run_ext() { + docker run -d --name "$EXT" --network "$NET" -p 127.0.0.1::3000 \ + -e DATABASE_URL="$EXT_DB_URL" -e REDIS_URL="redis://$EXT_REDIS:6379" \ + -e SESSION_SECRET="$SECRET" -e COOKIE_SECURE=false -e SETUP_TOKEN="$EXT_TOKEN" \ + "$IMAGE" >/dev/null +} +run_ext +wait_healthy "$EXT" +LOGS="$(docker logs "$EXT" 2>&1)" +grep -q "Mode: external" <<<"$LOGS" || fail "external mode not selected from DATABASE_URL" +grep -qF "postgres://***@$EXT_PG:5432/checkgate_ext?***" <<<"$LOGS" || fail "external DB target not logged (redacted)" +if grep -qF "ext-db-secret" <<<"$LOGS"; then fail "database password appears in the log"; fi +PROCS="$(process_names "$EXT")" +if grep -qxE "postgres|redis-server" <<<"$PROCS"; then fail "external mode started a bundled service"; fi +[ -z "$(docker exec "$EXT" ls -A /var/lib/postgresql/data)" ] || fail "external mode initialised the bundled data dir" + +expect 200 "$(api "$EXT" POST /api/setup/complete "$SETUP" -H "X-Checkgate-Setup-Token: $EXT_TOKEN")" "external setup" +COMPLETE="$(docker exec "$EXT_PG" psql -U cgext -d checkgate_ext -tAc "SELECT value FROM settings WHERE key='setup_complete'")" +[ "$COMPLETE" = "true" ] || fail "setup did not land in the external database" +USERS="$(docker exec "$EXT_PG" psql -U cgext -d checkgate_ext -tAc "SELECT email FROM users")" +[ "$USERS" = "admin@smoke.test" ] || fail "admin not in the external database: $USERS" + +log "external: container restart keeps data" +docker restart "$EXT" >/dev/null +wait_healthy "$EXT" +rm -f "$WORK/cookies-$EXT" +expect 200 "$(api "$EXT" POST /api/auth/login "$LOGIN")" "external login after restart" +docker rm -f "$EXT" >/dev/null + +# --------------------------------------------------------------------------- +# expect_refusal DESCRIPTION EXPECTED_MESSAGE docker-run-args... +expect_refusal() { + local what="$1" want="$2" out rc + shift 2 + set +e + out="$(timeout 120 docker run --rm --network "$NET" -e SESSION_SECRET="$SECRET" "$@" 2>&1)" + rc=$? + set -e + [ "$rc" -ne 0 ] || fail "$what: container started" + [ "$rc" -ne 124 ] || fail "$what: container kept running" + grep -qF "$want" <<<"$out" || fail "$what: missing '$want' in output: $out" + log "refused as expected: $what" +} + +log "misconfiguration is refused" +expect_refusal "external without DATABASE_URL" "external mode needs DATABASE_URL" \ + -e CHECKGATE_MODE=external -e REDIS_URL="redis://$EXT_REDIS:6379" "$IMAGE" +expect_refusal "external without REDIS_URL" "external mode needs REDIS_URL" \ + -e DATABASE_URL="$EXT_DB_URL" "$IMAGE" +expect_refusal "all-in-one with DATABASE_URL" "DATABASE_URL or REDIS_URL is set" \ + -e CHECKGATE_MODE=all-in-one -e DATABASE_URL="$EXT_DB_URL" "$IMAGE" +expect_refusal "unknown mode" "CHECKGATE_MODE must be" -e CHECKGATE_MODE=hybrid "$IMAGE" +expect_refusal "server without DATABASE_URL" "DATABASE_URL is not set" \ + --entrypoint checkgate-server "$IMAGE" +expect_refusal "server without REDIS_URL" "REDIS_URL is not set" \ + --entrypoint checkgate-server -e DATABASE_URL="$EXT_DB_URL" "$IMAGE" +expect_refusal "unreachable external database" "Failed to connect to PostgreSQL" \ + -e DATABASE_URL="postgres://cgext:ext-db-secret@$RUN_ID-missing:5432/checkgate_ext" \ + -e REDIS_URL="redis://$EXT_REDIS:6379" "$IMAGE" +expect_refusal "short SETUP_TOKEN" "SETUP_TOKEN must be at least" \ + -e DATABASE_URL="$EXT_DB_URL" -e REDIS_URL="redis://$EXT_REDIS:6379" -e SETUP_TOKEN=short "$IMAGE" + +log "all smoke tests passed" diff --git a/sdks/flutter/dart/.dart_tool/package_config.json b/sdks/flutter/dart/.dart_tool/package_config.json deleted file mode 100644 index 56c34d2..0000000 --- a/sdks/flutter/dart/.dart_tool/package_config.json +++ /dev/null @@ -1,202 +0,0 @@ -{ - "configVersion": 2, - "packages": [ - { - "name": "async", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/async-2.13.1", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "boolean_selector", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/boolean_selector-2.1.2", - "packageUri": "lib/", - "languageVersion": "3.1" - }, - { - "name": "characters", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/characters-1.4.0", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "clock", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/clock-1.1.2", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "collection", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/collection-1.19.1", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "fake_async", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/fake_async-1.3.3", - "packageUri": "lib/", - "languageVersion": "3.3" - }, - { - "name": "ffi", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/ffi-2.2.0", - "packageUri": "lib/", - "languageVersion": "3.7" - }, - { - "name": "flutter", - "rootUri": "file:///usr/local/share/flutter/packages/flutter", - "packageUri": "lib/", - "languageVersion": "3.8" - }, - { - "name": "flutter_lints", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/flutter_lints-3.0.2", - "packageUri": "lib/", - "languageVersion": "3.1" - }, - { - "name": "flutter_test", - "rootUri": "file:///usr/local/share/flutter/packages/flutter_test", - "packageUri": "lib/", - "languageVersion": "3.8" - }, - { - "name": "http", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/http-1.6.0", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "http_parser", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/http_parser-4.1.2", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "leak_tracker", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/leak_tracker-11.0.2", - "packageUri": "lib/", - "languageVersion": "3.2" - }, - { - "name": "leak_tracker_flutter_testing", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/leak_tracker_flutter_testing-3.0.10", - "packageUri": "lib/", - "languageVersion": "3.2" - }, - { - "name": "leak_tracker_testing", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/leak_tracker_testing-3.0.2", - "packageUri": "lib/", - "languageVersion": "3.2" - }, - { - "name": "lints", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/lints-3.0.0", - "packageUri": "lib/", - "languageVersion": "3.0" - }, - { - "name": "matcher", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/matcher-0.12.17", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "material_color_utilities", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/material_color_utilities-0.11.1", - "packageUri": "lib/", - "languageVersion": "2.17" - }, - { - "name": "meta", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/meta-1.17.0", - "packageUri": "lib/", - "languageVersion": "3.5" - }, - { - "name": "path", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/path-1.9.1", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "sky_engine", - "rootUri": "file:///usr/local/share/flutter/bin/cache/pkg/sky_engine", - "packageUri": "lib/", - "languageVersion": "3.8" - }, - { - "name": "source_span", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/source_span-1.10.2", - "packageUri": "lib/", - "languageVersion": "3.1" - }, - { - "name": "stack_trace", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/stack_trace-1.12.1", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "stream_channel", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/stream_channel-2.1.4", - "packageUri": "lib/", - "languageVersion": "3.3" - }, - { - "name": "string_scanner", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/string_scanner-1.4.1", - "packageUri": "lib/", - "languageVersion": "3.1" - }, - { - "name": "term_glyph", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/term_glyph-1.2.2", - "packageUri": "lib/", - "languageVersion": "3.1" - }, - { - "name": "test_api", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/test_api-0.7.7", - "packageUri": "lib/", - "languageVersion": "3.5" - }, - { - "name": "typed_data", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/typed_data-1.4.0", - "packageUri": "lib/", - "languageVersion": "3.5" - }, - { - "name": "vector_math", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/vector_math-2.2.0", - "packageUri": "lib/", - "languageVersion": "3.1" - }, - { - "name": "vm_service", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/vm_service-15.0.2", - "packageUri": "lib/", - "languageVersion": "3.5" - }, - { - "name": "web", - "rootUri": "file:///Users/akosidencio/.pub-cache/hosted/pub.dev/web-1.1.1", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "checkgate_flutter", - "rootUri": "../", - "packageUri": "lib/", - "languageVersion": "3.0" - } - ], - "generator": "pub", - "generatorVersion": "3.10.7", - "flutterRoot": "file:///usr/local/share/flutter", - "flutterVersion": "3.38.7", - "pubCache": "file:///Users/akosidencio/.pub-cache" -} diff --git a/sdks/flutter/dart/.dart_tool/package_graph.json b/sdks/flutter/dart/.dart_tool/package_graph.json deleted file mode 100644 index 593139c..0000000 --- a/sdks/flutter/dart/.dart_tool/package_graph.json +++ /dev/null @@ -1,263 +0,0 @@ -{ - "roots": [ - "checkgate_flutter" - ], - "packages": [ - { - "name": "checkgate_flutter", - "version": "0.1.20", - "dependencies": [ - "ffi", - "flutter", - "http" - ], - "devDependencies": [ - "flutter_lints", - "flutter_test" - ] - }, - { - "name": "flutter_lints", - "version": "3.0.2", - "dependencies": [ - "lints" - ] - }, - { - "name": "flutter_test", - "version": "0.0.0", - "dependencies": [ - "clock", - "collection", - "fake_async", - "flutter", - "leak_tracker_flutter_testing", - "matcher", - "meta", - "path", - "stack_trace", - "stream_channel", - "test_api", - "vector_math" - ] - }, - { - "name": "http", - "version": "1.6.0", - "dependencies": [ - "async", - "http_parser", - "meta", - "web" - ] - }, - { - "name": "ffi", - "version": "2.2.0", - "dependencies": [] - }, - { - "name": "flutter", - "version": "0.0.0", - "dependencies": [ - "characters", - "collection", - "material_color_utilities", - "meta", - "sky_engine", - "vector_math" - ] - }, - { - "name": "lints", - "version": "3.0.0", - "dependencies": [] - }, - { - "name": "stream_channel", - "version": "2.1.4", - "dependencies": [ - "async" - ] - }, - { - "name": "meta", - "version": "1.17.0", - "dependencies": [] - }, - { - "name": "collection", - "version": "1.19.1", - "dependencies": [] - }, - { - "name": "leak_tracker_flutter_testing", - "version": "3.0.10", - "dependencies": [ - "flutter", - "leak_tracker", - "leak_tracker_testing", - "matcher", - "meta" - ] - }, - { - "name": "vector_math", - "version": "2.2.0", - "dependencies": [] - }, - { - "name": "stack_trace", - "version": "1.12.1", - "dependencies": [ - "path" - ] - }, - { - "name": "clock", - "version": "1.1.2", - "dependencies": [] - }, - { - "name": "fake_async", - "version": "1.3.3", - "dependencies": [ - "clock", - "collection" - ] - }, - { - "name": "path", - "version": "1.9.1", - "dependencies": [] - }, - { - "name": "matcher", - "version": "0.12.17", - "dependencies": [ - "async", - "meta", - "stack_trace", - "term_glyph", - "test_api" - ] - }, - { - "name": "test_api", - "version": "0.7.7", - "dependencies": [ - "async", - "boolean_selector", - "collection", - "meta", - "source_span", - "stack_trace", - "stream_channel", - "string_scanner", - "term_glyph" - ] - }, - { - "name": "web", - "version": "1.1.1", - "dependencies": [] - }, - { - "name": "http_parser", - "version": "4.1.2", - "dependencies": [ - "collection", - "source_span", - "string_scanner", - "typed_data" - ] - }, - { - "name": "async", - "version": "2.13.1", - "dependencies": [ - "collection", - "meta" - ] - }, - { - "name": "sky_engine", - "version": "0.0.0", - "dependencies": [] - }, - { - "name": "material_color_utilities", - "version": "0.11.1", - "dependencies": [ - "collection" - ] - }, - { - "name": "characters", - "version": "1.4.0", - "dependencies": [] - }, - { - "name": "leak_tracker_testing", - "version": "3.0.2", - "dependencies": [ - "leak_tracker", - "matcher", - "meta" - ] - }, - { - "name": "leak_tracker", - "version": "11.0.2", - "dependencies": [ - "clock", - "collection", - "meta", - "path", - "vm_service" - ] - }, - { - "name": "term_glyph", - "version": "1.2.2", - "dependencies": [] - }, - { - "name": "string_scanner", - "version": "1.4.1", - "dependencies": [ - "source_span" - ] - }, - { - "name": "source_span", - "version": "1.10.2", - "dependencies": [ - "collection", - "path", - "term_glyph" - ] - }, - { - "name": "boolean_selector", - "version": "2.1.2", - "dependencies": [ - "source_span", - "string_scanner" - ] - }, - { - "name": "typed_data", - "version": "1.4.0", - "dependencies": [ - "collection" - ] - }, - { - "name": "vm_service", - "version": "15.0.2", - "dependencies": [] - } - ], - "configVersion": 1 -} \ No newline at end of file diff --git a/sdks/flutter/dart/.dart_tool/version b/sdks/flutter/dart/.dart_tool/version deleted file mode 100644 index 6a20a82..0000000 --- a/sdks/flutter/dart/.dart_tool/version +++ /dev/null @@ -1 +0,0 @@ -3.38.7 \ No newline at end of file diff --git a/sdks/flutter/dart/build/native_assets/macos/native_assets.json b/sdks/flutter/dart/build/native_assets/macos/native_assets.json deleted file mode 100644 index 523bfc7..0000000 --- a/sdks/flutter/dart/build/native_assets/macos/native_assets.json +++ /dev/null @@ -1 +0,0 @@ -{"format-version":[1,0,0],"native-assets":{}} \ No newline at end of file diff --git a/sdks/flutter/dart/build/test_cache/build/199e63d12aae48772fe1ad268adc4fc7.cache.dill.track.dill b/sdks/flutter/dart/build/test_cache/build/199e63d12aae48772fe1ad268adc4fc7.cache.dill.track.dill deleted file mode 100644 index 72619d1..0000000 Binary files a/sdks/flutter/dart/build/test_cache/build/199e63d12aae48772fe1ad268adc4fc7.cache.dill.track.dill and /dev/null differ diff --git a/sdks/flutter/dart/build/unit_test_assets/AssetManifest.bin b/sdks/flutter/dart/build/unit_test_assets/AssetManifest.bin deleted file mode 100644 index 86d111f..0000000 Binary files a/sdks/flutter/dart/build/unit_test_assets/AssetManifest.bin and /dev/null differ diff --git a/sdks/flutter/dart/build/unit_test_assets/FontManifest.json b/sdks/flutter/dart/build/unit_test_assets/FontManifest.json deleted file mode 100644 index 0637a08..0000000 --- a/sdks/flutter/dart/build/unit_test_assets/FontManifest.json +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/sdks/flutter/dart/build/unit_test_assets/NOTICES.Z b/sdks/flutter/dart/build/unit_test_assets/NOTICES.Z deleted file mode 100644 index 716469f..0000000 Binary files a/sdks/flutter/dart/build/unit_test_assets/NOTICES.Z and /dev/null differ diff --git a/sdks/flutter/dart/build/unit_test_assets/NativeAssetsManifest.json b/sdks/flutter/dart/build/unit_test_assets/NativeAssetsManifest.json deleted file mode 100644 index 523bfc7..0000000 --- a/sdks/flutter/dart/build/unit_test_assets/NativeAssetsManifest.json +++ /dev/null @@ -1 +0,0 @@ -{"format-version":[1,0,0],"native-assets":{}} \ No newline at end of file diff --git a/sdks/flutter/dart/build/unit_test_assets/shaders/ink_sparkle.frag b/sdks/flutter/dart/build/unit_test_assets/shaders/ink_sparkle.frag deleted file mode 100644 index 85fc357..0000000 Binary files a/sdks/flutter/dart/build/unit_test_assets/shaders/ink_sparkle.frag and /dev/null differ diff --git a/sdks/flutter/dart/build/unit_test_assets/shaders/stretch_effect.frag b/sdks/flutter/dart/build/unit_test_assets/shaders/stretch_effect.frag deleted file mode 100644 index fa18379..0000000 Binary files a/sdks/flutter/dart/build/unit_test_assets/shaders/stretch_effect.frag and /dev/null differ diff --git a/sdks/nodejs/e2e/e2e.cjs b/sdks/nodejs/e2e/e2e.cjs index 133104f..57a6d04 100644 --- a/sdks/nodejs/e2e/e2e.cjs +++ b/sdks/nodejs/e2e/e2e.cjs @@ -12,20 +12,23 @@ // - A server is running at CHECKGATE_URL with a FRESH (un-set-up) database. // // Env: CHECKGATE_URL (default http://127.0.0.1:3000) +// CHECKGATE_SETUP_TOKEN — the server's SETUP_TOKEN, required for first-run setup const assert = require('node:assert') const { CheckgateClient } = require('../index.js') const BASE = process.env.CHECKGATE_URL || 'http://127.0.0.1:3000' +const SETUP_TOKEN = process.env.CHECKGATE_SETUP_TOKEN || '' const sleep = (ms) => new Promise((r) => setTimeout(r, ms)) -async function api(method, path, { token, cookie, body } = {}) { +async function api(method, path, { token, cookie, body, setupToken } = {}) { const res = await fetch(`${BASE}${path}`, { method, headers: { 'Content-Type': 'application/json', 'X-Checkgate-Request': 'true', + ...(setupToken ? { 'X-Checkgate-Setup-Token': setupToken } : {}), ...(token ? { Authorization: `Bearer ${token}` } : {}), ...(cookie ? { Cookie: cookie } : {}), }, @@ -46,11 +49,12 @@ async function waitFor(label, predicate, timeoutMs = 8000) { async function main() { // 1. First-run setup: grab the seeded SDK key + environment, create the admin. - const keyRes = await api('GET', '/api/setup/key') + const keyRes = await api('GET', '/api/setup/key', { setupToken: SETUP_TOKEN }) assert.equal(keyRes.status, 200, 'GET /api/setup/key') const { key: sdkKey, environment_id: env } = await keyRes.json() const setupRes = await api('POST', '/api/setup/complete', { + setupToken: SETUP_TOKEN, body: { workspace_name: 'E2E', project_name: 'P', name: 'A', email: 'a@e.test', password: 'supersecret1' }, }) assert.equal(setupRes.status, 200, 'POST /api/setup/complete') diff --git a/sdks/nodejs/node_modules/.bin/js-yaml b/sdks/nodejs/node_modules/.bin/js-yaml deleted file mode 120000 index 9dbd010..0000000 --- a/sdks/nodejs/node_modules/.bin/js-yaml +++ /dev/null @@ -1 +0,0 @@ -../js-yaml/bin/js-yaml.js \ No newline at end of file diff --git a/sdks/nodejs/node_modules/.bin/napi b/sdks/nodejs/node_modules/.bin/napi deleted file mode 120000 index eeb3ff0..0000000 --- a/sdks/nodejs/node_modules/.bin/napi +++ /dev/null @@ -1 +0,0 @@ -../@napi-rs/cli/dist/cli.js \ No newline at end of file diff --git a/sdks/nodejs/node_modules/.bin/napi-raw b/sdks/nodejs/node_modules/.bin/napi-raw deleted file mode 120000 index fa59378..0000000 --- a/sdks/nodejs/node_modules/.bin/napi-raw +++ /dev/null @@ -1 +0,0 @@ -../@napi-rs/cli/cli.mjs \ No newline at end of file diff --git a/sdks/nodejs/node_modules/.bin/semver b/sdks/nodejs/node_modules/.bin/semver deleted file mode 120000 index 5aaadf4..0000000 --- a/sdks/nodejs/node_modules/.bin/semver +++ /dev/null @@ -1 +0,0 @@ -../semver/bin/semver.js \ No newline at end of file diff --git a/sdks/nodejs/node_modules/.package-lock.json b/sdks/nodejs/node_modules/.package-lock.json deleted file mode 100644 index 2b0551e..0000000 --- a/sdks/nodejs/node_modules/.package-lock.json +++ /dev/null @@ -1,1115 +0,0 @@ -{ - "name": "@checkgate/node", - "version": "0.1.20", - "lockfileVersion": 3, - "requires": true, - "packages": { - "node_modules/@emnapi/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@inquirer/ansi": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.3.tgz", - "integrity": "sha512-g44zhR3NIKVs0zUesa4iMzExmZpLUdTLRMCStqX3GE5NT6VkPcxQGJ+uC8tDgBUC/vB1rUhUd55cOf++4NZcmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - } - }, - "node_modules/@inquirer/checkbox": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.1.0.tgz", - "integrity": "sha512-/HjF1LN0a1h4/OFsbGKHNDtWICFU/dqXCdym719HFTyJo9IG7Otr+ziGWc9S0iQuohRZllh+WprSgd5UW5Fw0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.3", - "@inquirer/core": "^11.1.5", - "@inquirer/figures": "^2.0.3", - "@inquirer/type": "^4.0.3" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/confirm": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.8.tgz", - "integrity": "sha512-Di6dgmiZ9xCSUxWUReWTqDtbhXCuG2MQm2xmgSAIruzQzBqNf49b8E07/vbCYY506kDe8BiwJbegXweG8M1klw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/type": "^4.0.3" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/core": { - "version": "11.1.5", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.5.tgz", - "integrity": "sha512-QQPAX+lka8GyLcZ7u7Nb1h6q72iZ/oy0blilC3IB2nSt1Qqxp7akt94Jqhi/DzARuN3Eo9QwJRvtl4tmVe4T5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.3", - "@inquirer/figures": "^2.0.3", - "@inquirer/type": "^4.0.3", - "cli-width": "^4.1.0", - "fast-wrap-ansi": "^0.2.0", - "mute-stream": "^3.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/editor": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.0.8.tgz", - "integrity": "sha512-sLcpbb9B3XqUEGrj1N66KwhDhEckzZ4nI/W6SvLXyBX8Wic3LDLENlWRvkOGpCPoserabe+MxQkpiMoI8irvyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/external-editor": "^2.0.3", - "@inquirer/type": "^4.0.3" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/expand": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.8.tgz", - "integrity": "sha512-QieW3F1prNw3j+hxO7/NKkG1pk3oz7pOB6+5Upwu3OIwADfPX0oZVppsqlL+Vl/uBHHDSOBY0BirLctLnXwGGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/type": "^4.0.3" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/external-editor": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-2.0.3.tgz", - "integrity": "sha512-LgyI7Agbda74/cL5MvA88iDpvdXI2KuMBCGRkbCl2Dg1vzHeOgs+s0SDcXV7b+WZJrv2+ERpWSM65Fpi9VfY3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.2" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/figures": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.3.tgz", - "integrity": "sha512-y09iGt3JKoOCBQ3w4YrSJdokcD8ciSlMIWsD+auPu+OZpfxLuyz+gICAQ6GCBOmJJt4KEQGHuZSVff2jiNOy7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - } - }, - "node_modules/@inquirer/input": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.8.tgz", - "integrity": "sha512-p0IJslw0AmedLEkOU+yrEX3Aj2RTpQq7ZOf8nc1DIhjzaxRWrrgeuE5Kyh39fVRgtcACaMXx/9WNo8+GjgBOfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/type": "^4.0.3" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/number": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.8.tgz", - "integrity": "sha512-uGLiQah9A0F9UIvJBX52m0CnqtLaym0WpT9V4YZrjZ+YRDKZdwwoEPz06N6w8ChE2lrnsdyhY9sL+Y690Kh9gQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/type": "^4.0.3" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/password": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.8.tgz", - "integrity": "sha512-zt1sF4lYLdvPqvmvHdmjOzuUUjuCQ897pdUCO8RbXMUDKXJTTyOQgtn23le+jwcb+MpHl3VAFvzIdxRAf6aPlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.3", - "@inquirer/core": "^11.1.5", - "@inquirer/type": "^4.0.3" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.3.0.tgz", - "integrity": "sha512-JAj66kjdH/F1+B7LCigjARbwstt3SNUOSzMdjpsvwJmzunK88gJeXmcm95L9nw1KynvFVuY4SzXh/3Y0lvtgSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^5.1.0", - "@inquirer/confirm": "^6.0.8", - "@inquirer/editor": "^5.0.8", - "@inquirer/expand": "^5.0.8", - "@inquirer/input": "^5.0.8", - "@inquirer/number": "^4.0.8", - "@inquirer/password": "^5.0.8", - "@inquirer/rawlist": "^5.2.4", - "@inquirer/search": "^4.1.4", - "@inquirer/select": "^5.1.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/rawlist": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.4.tgz", - "integrity": "sha512-fTuJ5Cq9W286isLxwj6GGyfTjx1Zdk4qppVEPexFuA6yioCCXS4V1zfKroQqw7QdbDPN73xs2DiIAlo55+kBqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/type": "^4.0.3" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/search": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.4.tgz", - "integrity": "sha512-9yPTxq7LPmYjrGn3DRuaPuPbmC6u3fiWcsE9ggfLcdgO/ICHYgxq7mEy1yJ39brVvgXhtOtvDVjDh9slJxE4LQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/figures": "^2.0.3", - "@inquirer/type": "^4.0.3" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.1.0.tgz", - "integrity": "sha512-OyYbKnchS1u+zRe14LpYrN8S0wH1vD0p2yKISvSsJdH2TpI87fh4eZdWnpdbrGauCRWDph3NwxRmM4Pcm/hx1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.3", - "@inquirer/core": "^11.1.5", - "@inquirer/figures": "^2.0.3", - "@inquirer/type": "^4.0.3" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/type": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.3.tgz", - "integrity": "sha512-cKZN7qcXOpj1h+1eTTcGDVLaBIHNMT1Rz9JqJP5MnEJ0JhgVWllx7H/tahUp5YEK1qaByH2Itb8wLG/iScD5kw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@napi-rs/cli": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-3.5.1.tgz", - "integrity": "sha512-XBfLQRDcB3qhu6bazdMJsecWW55kR85l5/k0af9BIBELXQSsCFU0fzug7PX8eQp6vVdm7W/U3z6uP5WmITB2Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/prompts": "^8.0.0", - "@napi-rs/cross-toolchain": "^1.0.3", - "@napi-rs/wasm-tools": "^1.0.1", - "@octokit/rest": "^22.0.1", - "clipanion": "^4.0.0-rc.4", - "colorette": "^2.0.20", - "emnapi": "^1.7.1", - "es-toolkit": "^1.41.0", - "js-yaml": "^4.1.0", - "obug": "^2.0.0", - "semver": "^7.7.3", - "typanion": "^3.14.0" - }, - "bin": { - "napi": "dist/cli.js", - "napi-raw": "cli.mjs" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/runtime": "^1.7.1" - }, - "peerDependenciesMeta": { - "@emnapi/runtime": { - "optional": true - } - } - }, - "node_modules/@napi-rs/cross-toolchain": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@napi-rs/cross-toolchain/-/cross-toolchain-1.0.3.tgz", - "integrity": "sha512-ENPfLe4937bsKVTDA6zdABx4pq9w0tHqRrJHyaGxgaPq03a2Bd1unD5XSKjXJjebsABJ+MjAv1A2OvCgK9yehg==", - "dev": true, - "license": "MIT", - "workspaces": [ - ".", - "arm64/*", - "x64/*" - ], - "dependencies": { - "@napi-rs/lzma": "^1.4.5", - "@napi-rs/tar": "^1.1.0", - "debug": "^4.4.1" - }, - "peerDependencies": { - "@napi-rs/cross-toolchain-arm64-target-aarch64": "^1.0.3", - "@napi-rs/cross-toolchain-arm64-target-armv7": "^1.0.3", - "@napi-rs/cross-toolchain-arm64-target-ppc64le": "^1.0.3", - "@napi-rs/cross-toolchain-arm64-target-s390x": "^1.0.3", - "@napi-rs/cross-toolchain-arm64-target-x86_64": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-aarch64": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-armv7": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-ppc64le": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-s390x": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-x86_64": "^1.0.3" - }, - "peerDependenciesMeta": { - "@napi-rs/cross-toolchain-arm64-target-aarch64": { - "optional": true - }, - "@napi-rs/cross-toolchain-arm64-target-armv7": { - "optional": true - }, - "@napi-rs/cross-toolchain-arm64-target-ppc64le": { - "optional": true - }, - "@napi-rs/cross-toolchain-arm64-target-s390x": { - "optional": true - }, - "@napi-rs/cross-toolchain-arm64-target-x86_64": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-aarch64": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-armv7": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-ppc64le": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-s390x": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-x86_64": { - "optional": true - } - } - }, - "node_modules/@napi-rs/lzma": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma/-/lzma-1.4.5.tgz", - "integrity": "sha512-zS5LuN1OBPAyZpda2ZZgYOEDC+xecUdAGnrvbYzjnLXkrq/OBC3B9qcRvlxbDR3k5H/gVfvef1/jyUqPknqjbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "optionalDependencies": { - "@napi-rs/lzma-android-arm-eabi": "1.4.5", - "@napi-rs/lzma-android-arm64": "1.4.5", - "@napi-rs/lzma-darwin-arm64": "1.4.5", - "@napi-rs/lzma-darwin-x64": "1.4.5", - "@napi-rs/lzma-freebsd-x64": "1.4.5", - "@napi-rs/lzma-linux-arm-gnueabihf": "1.4.5", - "@napi-rs/lzma-linux-arm64-gnu": "1.4.5", - "@napi-rs/lzma-linux-arm64-musl": "1.4.5", - "@napi-rs/lzma-linux-ppc64-gnu": "1.4.5", - "@napi-rs/lzma-linux-riscv64-gnu": "1.4.5", - "@napi-rs/lzma-linux-s390x-gnu": "1.4.5", - "@napi-rs/lzma-linux-x64-gnu": "1.4.5", - "@napi-rs/lzma-linux-x64-musl": "1.4.5", - "@napi-rs/lzma-wasm32-wasi": "1.4.5", - "@napi-rs/lzma-win32-arm64-msvc": "1.4.5", - "@napi-rs/lzma-win32-ia32-msvc": "1.4.5", - "@napi-rs/lzma-win32-x64-msvc": "1.4.5" - } - }, - "node_modules/@napi-rs/lzma-darwin-x64": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-darwin-x64/-/lzma-darwin-x64-1.4.5.tgz", - "integrity": "sha512-vR2IUyJY3En+V1wJkwmbGWcYiT8pHloTAWdW4pG24+51GIq+intst6Uf6D/r46citObGZrlX0QvMarOkQeHWpw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar/-/tar-1.1.0.tgz", - "integrity": "sha512-7cmzIu+Vbupriudo7UudoMRH2OA3cTw67vva8MxeoAe5S7vPFI7z0vp0pMXiA25S8IUJefImQ90FeJjl8fjEaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@napi-rs/tar-android-arm-eabi": "1.1.0", - "@napi-rs/tar-android-arm64": "1.1.0", - "@napi-rs/tar-darwin-arm64": "1.1.0", - "@napi-rs/tar-darwin-x64": "1.1.0", - "@napi-rs/tar-freebsd-x64": "1.1.0", - "@napi-rs/tar-linux-arm-gnueabihf": "1.1.0", - "@napi-rs/tar-linux-arm64-gnu": "1.1.0", - "@napi-rs/tar-linux-arm64-musl": "1.1.0", - "@napi-rs/tar-linux-ppc64-gnu": "1.1.0", - "@napi-rs/tar-linux-s390x-gnu": "1.1.0", - "@napi-rs/tar-linux-x64-gnu": "1.1.0", - "@napi-rs/tar-linux-x64-musl": "1.1.0", - "@napi-rs/tar-wasm32-wasi": "1.1.0", - "@napi-rs/tar-win32-arm64-msvc": "1.1.0", - "@napi-rs/tar-win32-ia32-msvc": "1.1.0", - "@napi-rs/tar-win32-x64-msvc": "1.1.0" - } - }, - "node_modules/@napi-rs/tar-darwin-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-darwin-x64/-/tar-darwin-x64-1.1.0.tgz", - "integrity": "sha512-EI+CptIMNweT0ms9S3mkP/q+J6FNZ1Q6pvpJOEcWglRfyfQpLqjlC0O+dptruTPE8VamKYuqdjxfqD8hifZDOA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", - "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - } - }, - "node_modules/@napi-rs/wasm-tools": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools/-/wasm-tools-1.0.1.tgz", - "integrity": "sha512-enkZYyuCdo+9jneCPE/0fjIta4wWnvVN9hBo2HuiMpRF0q3lzv1J6b/cl7i0mxZUKhBrV3aCKDBQnCOhwKbPmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@napi-rs/wasm-tools-android-arm-eabi": "1.0.1", - "@napi-rs/wasm-tools-android-arm64": "1.0.1", - "@napi-rs/wasm-tools-darwin-arm64": "1.0.1", - "@napi-rs/wasm-tools-darwin-x64": "1.0.1", - "@napi-rs/wasm-tools-freebsd-x64": "1.0.1", - "@napi-rs/wasm-tools-linux-arm64-gnu": "1.0.1", - "@napi-rs/wasm-tools-linux-arm64-musl": "1.0.1", - "@napi-rs/wasm-tools-linux-x64-gnu": "1.0.1", - "@napi-rs/wasm-tools-linux-x64-musl": "1.0.1", - "@napi-rs/wasm-tools-wasm32-wasi": "1.0.1", - "@napi-rs/wasm-tools-win32-arm64-msvc": "1.0.1", - "@napi-rs/wasm-tools-win32-ia32-msvc": "1.0.1", - "@napi-rs/wasm-tools-win32-x64-msvc": "1.0.1" - } - }, - "node_modules/@napi-rs/wasm-tools-darwin-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-darwin-x64/-/wasm-tools-darwin-x64-1.0.1.tgz", - "integrity": "sha512-bA6hubqtHROR5UI3tToAF/c6TDmaAgF0SWgo4rADHtQ4wdn0JeogvOk50gs2TYVhKPE2ZD2+qqt7oBKB+sxW3A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@octokit/auth-token": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", - "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/core": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", - "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^6.0.0", - "@octokit/graphql": "^9.0.3", - "@octokit/request": "^10.0.6", - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", - "before-after-hook": "^4.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/endpoint": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.3.tgz", - "integrity": "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/graphql": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", - "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/request": "^10.0.6", - "@octokit/types": "^16.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "27.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", - "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", - "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0" - }, - "engines": { - "node": ">= 20" - }, - "peerDependencies": { - "@octokit/core": ">=6" - } - }, - "node_modules/@octokit/plugin-request-log": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz", - "integrity": "sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - }, - "peerDependencies": { - "@octokit/core": ">=6" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz", - "integrity": "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0" - }, - "engines": { - "node": ">= 20" - }, - "peerDependencies": { - "@octokit/core": ">=6" - } - }, - "node_modules/@octokit/request": { - "version": "10.0.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.8.tgz", - "integrity": "sha512-SJZNwY9pur9Agf7l87ywFi14W+Hd9Jg6Ifivsd33+/bGUQIjNujdFiXII2/qSlN2ybqUHfp5xpekMEjIBTjlSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^11.0.3", - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", - "fast-content-type-parse": "^3.0.0", - "json-with-bigint": "^3.5.3", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/request-error": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz", - "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/rest": { - "version": "22.0.1", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-22.0.1.tgz", - "integrity": "sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/core": "^7.0.6", - "@octokit/plugin-paginate-rest": "^14.0.0", - "@octokit/plugin-request-log": "^6.0.0", - "@octokit/plugin-rest-endpoint-methods": "^17.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", - "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^27.0.0" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/before-after-hook": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", - "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, - "node_modules/clipanion": { - "version": "4.0.0-rc.4", - "resolved": "https://registry.npmjs.org/clipanion/-/clipanion-4.0.0-rc.4.tgz", - "integrity": "sha512-CXkMQxU6s9GklO/1f714dkKBMu1lopS1WFF0B8o4AxPykR1hpozxSiUZ5ZUeBjfPgCWqbcNOtZVFhB8Lkfp1+Q==", - "dev": true, - "license": "MIT", - "workspaces": [ - "website" - ], - "dependencies": { - "typanion": "^3.8.0" - }, - "peerDependencies": { - "typanion": "*" - } - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/emnapi": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/emnapi/-/emnapi-1.8.1.tgz", - "integrity": "sha512-34i2BbgHx1LnEO4JCGQYo6h6s4e4KrdWtdTHfllBNLbXSHPmdIHplxKejfabsRK+ukNciqVdalB+fxMibqHdaQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "node-addon-api": ">= 6.1.0" - }, - "peerDependenciesMeta": { - "node-addon-api": { - "optional": true - } - } - }, - "node_modules/es-toolkit": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.44.0.tgz", - "integrity": "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==", - "dev": true, - "license": "MIT", - "workspaces": [ - "docs", - "benchmarks" - ] - }, - "node_modules/eventsource": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-4.1.0.tgz", - "integrity": "sha512-2GuF51iuHX6A9xdTccMTsNb7VO0lHZihApxhvQzJB5A03DvHDd2FQepodbMaztPBmBcE/ox7o2gqaxGhYB9LhQ==", - "license": "MIT", - "dependencies": { - "eventsource-parser": "^3.0.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/eventsource-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", - "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", - "license": "MIT", - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/fast-content-type-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", - "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/fast-string-truncated-width": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", - "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-string-width": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", - "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-string-truncated-width": "^3.0.2" - } - }, - "node_modules/fast-wrap-ansi": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz", - "integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-string-width": "^3.0.2" - } - }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/js-yaml": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", - "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/nodeca" - } - ], - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-with-bigint": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.3.tgz", - "integrity": "sha512-QObKu6nxy7NsxqR0VK4rkXnsNr5L9ElJaGEg+ucJ6J7/suoKZ0n+p76cu9aCqowytxEbwYNzvrMerfMkXneF5A==", - "dev": true, - "license": "MIT" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/mute-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", - "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/obug": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", - "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/sxzz", - "https://opencollective.com/debug" - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD", - "optional": true - }, - "node_modules/typanion": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/typanion/-/typanion-3.14.0.tgz", - "integrity": "sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug==", - "dev": true, - "license": "MIT", - "workspaces": [ - "website" - ] - }, - "node_modules/universal-user-agent": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", - "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", - "dev": true, - "license": "ISC" - } - } -} diff --git a/sdks/nodejs/node_modules/@emnapi/core/LICENSE b/sdks/nodejs/node_modules/@emnapi/core/LICENSE deleted file mode 100644 index 05a5944..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021-present Toyobayashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/@emnapi/core/README.md b/sdks/nodejs/node_modules/@emnapi/core/README.md deleted file mode 100644 index c98dddc..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/README.md +++ /dev/null @@ -1 +0,0 @@ -See [https://github.com/toyobayashi/emnapi](https://github.com/toyobayashi/emnapi) diff --git a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.cjs.js b/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.cjs.js deleted file mode 100644 index a7cad69..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +++ /dev/null @@ -1,6850 +0,0 @@ -var wasiThreads = require('@emnapi/wasi-threads'); - -const _WebAssembly = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; -function validateImports(imports) { - if (imports && typeof imports !== 'object') { - throw new TypeError('imports must be an object or undefined'); - } - return true; -} -function load(wasmInput, imports) { - if (!wasmInput) - throw new TypeError('Invalid wasm source'); - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - try { - const then = typeof wasmInput === 'object' && wasmInput !== null && 'then' in wasmInput ? wasmInput.then : undefined; - if (typeof then === 'function') { - return then.call(wasmInput, (input) => load(input, imports)); - } - } - catch (_) { } - if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { - return _WebAssembly.instantiate(wasmInput, imports); - } - if (wasmInput instanceof _WebAssembly.Module) { - return _WebAssembly.instantiate(wasmInput, imports).then((instance) => { - return { instance, module: wasmInput }; - }); - } - if (typeof Response !== 'undefined' && wasmInput instanceof Response) { - return wasmInput.arrayBuffer().then(buffer => { - return _WebAssembly.instantiate(buffer, imports); - }); - } - const inputIsString = typeof wasmInput === 'string'; - if (inputIsString || (typeof URL !== 'undefined' && wasmInput instanceof URL)) { - if (inputIsString && typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { - return _WebAssembly.instantiate(wasmInput, imports); - } - if (typeof fetch !== 'function') { - throw new TypeError('wasm source can not be a string or URL in this environment'); - } - if (typeof _WebAssembly.instantiateStreaming === 'function') { - try { - return _WebAssembly.instantiateStreaming(fetch(wasmInput), imports).catch(() => { - return load(fetch(wasmInput), imports); - }); - } - catch (_) { - return load(fetch(wasmInput), imports); - } - } - else { - return load(fetch(wasmInput), imports); - } - } - throw new TypeError('Invalid wasm source'); -} -function loadSync(wasmInput, imports) { - if (!wasmInput) - throw new TypeError('Invalid wasm source'); - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - let module; - if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { - module = new _WebAssembly.Module(wasmInput); - } - else if (wasmInput instanceof WebAssembly.Module) { - module = wasmInput; - } - else { - throw new TypeError('Invalid wasm source'); - } - const instance = new _WebAssembly.Instance(module, imports); - const source = { instance, module }; - return source; -} - -function createNapiModule(options) { - var napiModule = (function () { - var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && typeof process.versions === 'object' && process.versions !== null && typeof process.versions.node === 'string'; - var ENVIRONMENT_IS_PTHREAD = Boolean(options.childThread); - var waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); - var wasmInstance; - var wasmMemory; - var wasmTable; - var _malloc; - var _free; - function abort(msg) { - if (typeof _WebAssembly.RuntimeError === 'function') { - throw new _WebAssembly.RuntimeError(msg); - } - throw Error(msg); - } - var napiModule = { - imports: { - env: {}, - napi: {}, - emnapi: {} - }, - exports: {}, - emnapi: {}, - loaded: false, - filename: '', - childThread: ENVIRONMENT_IS_PTHREAD, - initWorker: undefined, - executeAsyncWork: undefined, - waitThreadStart: waitThreadStart, - PThread: undefined, - init: function (options) { - if (napiModule.loaded) - return napiModule.exports; - if (!options) - throw new TypeError('Invalid napi init options'); - var instance = options.instance; - if (!(instance === null || instance === void 0 ? void 0 : instance.exports)) - throw new TypeError('Invalid wasm instance'); - wasmInstance = instance; - var exports$1 = instance.exports; - var module = options.module; - var memory = options.memory || exports$1.memory; - var table = options.table || exports$1.__indirect_function_table; - if (!(module instanceof _WebAssembly.Module)) - throw new TypeError('Invalid wasm module'); - if (!(memory instanceof _WebAssembly.Memory)) - throw new TypeError('Invalid wasm memory'); - if (!(table instanceof _WebAssembly.Table)) - throw new TypeError('Invalid wasm table'); - wasmMemory = memory; - wasmTable = table; - if (typeof exports$1.malloc !== 'function') - throw new TypeError('malloc is not exported'); - if (typeof exports$1.free !== 'function') - throw new TypeError('free is not exported'); - _malloc = exports$1.malloc; - _free = exports$1.free; - if (!napiModule.childThread) { - var moduleApiVersion = 8; - var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1; - if (typeof node_api_module_get_api_version_v1 === 'function') { - moduleApiVersion = node_api_module_get_api_version_v1(); - } - var envObject = napiModule.envObject || (napiModule.envObject = emnapiCtx.createEnv(napiModule.filename, moduleApiVersion, function (cb) { return (wasmTable.get(cb)); }, function (cb) { return (wasmTable.get(cb)); }, abort, emnapiNodeBinding)); - var scope_1 = emnapiCtx.openScope(envObject); - try { - envObject.callIntoModule(function (_envObject) { - var exports$1 = napiModule.exports; - var exportsHandle = scope_1.add(exports$1); - var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1; - var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id); - napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value; - }); - } - catch (e) { - if (e !== 'unwind') { - throw e; - } - } - finally { - emnapiCtx.closeScope(envObject, scope_1); - } - napiModule.loaded = true; - delete napiModule.envObject; - return napiModule.exports; - } - } - }; - var emnapiCtx; - var emnapiNodeBinding; - var onCreateWorker = undefined; - var err; - if (!ENVIRONMENT_IS_PTHREAD) { - var context = options.context; - if (typeof context !== 'object' || context === null) { - throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`"); - } - emnapiCtx = context; - } - else { - emnapiCtx = options === null || options === void 0 ? void 0 : options.context; - var postMsg = typeof options.postMessage === 'function' - ? options.postMessage - : typeof postMessage === 'function' - ? postMessage - : undefined; - if (typeof postMsg !== 'function') { - throw new TypeError('No postMessage found'); - } - napiModule.postMessage = postMsg; - } - if (typeof options.filename === 'string') { - napiModule.filename = options.filename; - } - if (typeof options.onCreateWorker === 'function') { - onCreateWorker = options.onCreateWorker; - } - if (typeof options.print === 'function') { - options.print; - } - else { - console.log.bind(console); - } - if (typeof options.printErr === 'function') { - err = options.printErr; - } - else { - err = console.warn.bind(console); - } - if ('nodeBinding' in options) { - var nodeBinding = options.nodeBinding; - if (typeof nodeBinding !== 'object' || nodeBinding === null) { - throw new TypeError('Invalid `options.nodeBinding`. Use @emnapi/node-binding package'); - } - emnapiNodeBinding = nodeBinding; - } - var emnapiAsyncWorkPoolSize = 0; - if ('asyncWorkPoolSize' in options) { - if (typeof options.asyncWorkPoolSize !== 'number') { - throw new TypeError('options.asyncWorkPoolSize must be a integer'); - } - emnapiAsyncWorkPoolSize = options.asyncWorkPoolSize >> 0; - if (emnapiAsyncWorkPoolSize > 1024) { - emnapiAsyncWorkPoolSize = 1024; - } - else if (emnapiAsyncWorkPoolSize < -1024) { - emnapiAsyncWorkPoolSize = -1024; - } - } - var singleThreadAsyncWork = ENVIRONMENT_IS_PTHREAD ? false : (emnapiAsyncWorkPoolSize <= 0); - function _emnapi_async_work_pool_size() { - return Math.abs(emnapiAsyncWorkPoolSize); - } - napiModule.imports.env._emnapi_async_work_pool_size = _emnapi_async_work_pool_size; - function emnapiAddSendListener(worker) { - if (!worker) - return false; - if (worker._emnapiSendListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__ && __emnapi__.type === 'async-send') { - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_1 = napiModule.postMessage; - postMessage_1({ __emnapi__: __emnapi__ }); - } - else { - var callback = __emnapi__.payload.callback; - (wasmTable.get(callback))(__emnapi__.payload.data); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiSendListener; - }; - worker._emnapiSendListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; - } - napiModule.emnapi.addSendListener = emnapiAddSendListener; - var PThread = new wasiThreads.ThreadManager(ENVIRONMENT_IS_PTHREAD - ? { - printErr: err, - childThread: true - } - : { - printErr: err, - beforeLoad: function (worker) { - emnapiAddSendListener(worker); - }, - reuseWorker: options.reuseWorker, - onCreateWorker: onCreateWorker - }); - napiModule.PThread = PThread; - function napi_set_last_error(env, error_code, engine_error_code, engine_reserved) { - var envObject = emnapiCtx.envStore.get(env); - return envObject.setLastError(error_code, engine_error_code, engine_reserved); - } - function napi_clear_last_error(env) { - var envObject = emnapiCtx.envStore.get(env); - return envObject.clearLastError(); - } - function _emnapi_get_node_version(major, minor, patch) { - var versions = (typeof process === 'object' && process !== null && - typeof process.versions === 'object' && process.versions !== null && - typeof process.versions.node === 'string') - ? process.versions.node.split('.').map(function (n) { return Number(n); }) - : [0, 0, 0]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(major, versions[0], true); - HEAP_DATA_VIEW.setUint32(minor, versions[1], true); - HEAP_DATA_VIEW.setUint32(patch, versions[2], true); - } - function _emnapi_runtime_keepalive_push() { - } - function _emnapi_runtime_keepalive_pop() { - } - function _emnapi_set_immediate(callback, data) { - emnapiCtx.feature.setImmediate(function () { - (wasmTable.get(callback))(data); - }); - } - function _emnapi_next_tick(callback, data) { - Promise.resolve().then(function () { - (wasmTable.get(callback))(data); - }); - } - function _emnapi_callback_into_module(forceUncaught, env, callback, data, close_scope_if_throw) { - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - try { - envObject.callbackIntoModule(Boolean(forceUncaught), function () { - (wasmTable.get(callback))(env, data); - }); - } - catch (err) { - emnapiCtx.closeScope(envObject, scope); - if (close_scope_if_throw) { - emnapiCtx.closeScope(envObject); - } - throw err; - } - emnapiCtx.closeScope(envObject, scope); - } - function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) { - var envObject = emnapiCtx.envStore.get(env); - envObject.callFinalizerInternal(forceUncaught, callback, data, hint); - } - function _emnapi_ctx_increase_waiting_request_counter() { - emnapiCtx.increaseWaitingRequestCounter(); - } - function _emnapi_ctx_decrease_waiting_request_counter() { - emnapiCtx.decreaseWaitingRequestCounter(); - } - function _emnapi_is_main_runtime_thread() { - return ENVIRONMENT_IS_PTHREAD ? 0 : 1; - } - function _emnapi_is_main_browser_thread() { - return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0; - } - function _emnapi_unwind() { - throw 'unwind'; - } - function _emnapi_get_now() { - return performance.timeOrigin + performance.now(); - } - function $emnapiSetValueI64(result, numberValue) { - var tempDouble; - var tempI64 = [ - numberValue >>> 0, - (tempDouble = numberValue, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) - ]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, tempI64[0], true); - HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true); - } - function _emnapi_open_handle_scope() { - return emnapiCtx.openScope().id; - } - function _emnapi_close_handle_scope(_scope) { - return emnapiCtx.closeScope(); - } - var utilMod = Object.freeze({ - __proto__: null, - $emnapiSetValueI64: $emnapiSetValueI64, - _emnapi_call_finalizer: _emnapi_call_finalizer, - _emnapi_callback_into_module: _emnapi_callback_into_module, - _emnapi_close_handle_scope: _emnapi_close_handle_scope, - _emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter, - _emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter, - _emnapi_get_node_version: _emnapi_get_node_version, - _emnapi_get_now: _emnapi_get_now, - _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread, - _emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread, - _emnapi_next_tick: _emnapi_next_tick, - _emnapi_open_handle_scope: _emnapi_open_handle_scope, - _emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop, - _emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push, - _emnapi_set_immediate: _emnapi_set_immediate, - _emnapi_unwind: _emnapi_unwind, - napi_clear_last_error: napi_clear_last_error, - napi_set_last_error: napi_set_last_error - }); - function emnapiGetWorkerByPthreadPtr(pthreadPtr) { - var view = new DataView(wasmMemory.buffer); - var tidOffset = 20; - var tid = view.getInt32(pthreadPtr + tidOffset, true); - var worker = PThread.pthreads[tid]; - return worker; - } - function _emnapi_worker_unref(pthreadPtr) { - if (ENVIRONMENT_IS_PTHREAD) - return; - var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); - if (worker && typeof worker.unref === 'function') { - worker.unref(); - } - } - function _emnapi_async_send_js(type, callback, data) { - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_1 = napiModule.postMessage; - postMessage_1({ - __emnapi__: { - type: 'async-send', - payload: { - callback: callback, - data: data - } - } - }); - } - else { - switch (type) { - case 0: - _emnapi_set_immediate(callback, data); - break; - case 1: - _emnapi_next_tick(callback, data); - break; - } - } - } - var uvThreadpoolReadyResolve; - var uvThreadpoolReady = new Promise(function (resolve) { - uvThreadpoolReadyResolve = function () { - uvThreadpoolReady.ready = true; - resolve(); - }; - }); - uvThreadpoolReady.ready = false; - function _emnapi_after_uvthreadpool_ready(callback, q, type) { - if (uvThreadpoolReady.ready) { - (wasmTable.get(callback))(q, type); - } - else { - uvThreadpoolReady.then(function () { - (wasmTable.get(callback))(q, type); - }); - } - } - function _emnapi_tell_js_uvthreadpool(threads, size) { - var p = []; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var _loop_1 = function (i) { - var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true); - var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); - p.push(new Promise(function (resolve) { - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__ && __emnapi__.type === 'async-thread-ready') { - resolve(); - if (worker && typeof worker.unref === 'function') { - worker.unref(); - } - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler); - } - } - }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler); - } - })); - }; - for (var i = 0; i < size; i++) { - _loop_1(i); - } - Promise.all(p).then(uvThreadpoolReadyResolve); - } - function _emnapi_emit_async_thread_ready() { - if (!ENVIRONMENT_IS_PTHREAD) - return; - var postMessage = napiModule.postMessage; - postMessage({ - __emnapi__: { - type: 'async-thread-ready', - payload: {} - } - }); - } - var asyncMod = Object.freeze({ - __proto__: null, - _emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready, - _emnapi_async_send_js: _emnapi_async_send_js, - _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready, - _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool, - _emnapi_worker_unref: _emnapi_worker_unref - }); - function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!adjusted_value) - return envObject.setLastError(1); - var change_in_bytes_number = Number(change_in_bytes); - if (change_in_bytes_number < 0) { - return envObject.setLastError(1); - } - var old_size = wasmMemory.buffer.byteLength; - var new_size = old_size + change_in_bytes_number; - new_size = new_size + ((65536 - new_size % 65536) % 65536); - if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) { - return envObject.setLastError(9); - } - if (emnapiCtx.feature.supportBigInt) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true); - } - else { - $emnapiSetValueI64(adjusted_value, wasmMemory.buffer.byteLength); - } - return envObject.clearLastError(); - } - var memoryMod = Object.freeze({ - __proto__: null, - napi_adjust_external_memory: napi_adjust_external_memory - }); - var emnapiAWST = { - idGen: {}, - values: [undefined], - queued: new Set(), - pending: [], - init: function () { - var idGen = { - nextId: 1, - list: [], - generate: function () { - var id; - if (idGen.list.length) { - id = idGen.list.shift(); - } - else { - id = idGen.nextId; - idGen.nextId++; - } - return id; - }, - reuse: function (id) { - idGen.list.push(id); - } - }; - emnapiAWST.idGen = idGen; - emnapiAWST.values = [undefined]; - emnapiAWST.queued = new Set(); - emnapiAWST.pending = []; - }, - create: function (env, resource, resourceName, execute, complete, data) { - var asyncId = 0; - var triggerAsyncId = 0; - if (emnapiNodeBinding) { - var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resourceName, -1); - asyncId = asyncContext.asyncId; - triggerAsyncId = asyncContext.triggerAsyncId; - } - var id = emnapiAWST.idGen.generate(); - emnapiAWST.values[id] = { - env: env, - id: id, - resource: resource, - asyncId: asyncId, - triggerAsyncId: triggerAsyncId, - status: 0, - execute: execute, - complete: complete, - data: data - }; - return id; - }, - callComplete: function (work, status) { - var complete = work.complete; - var env = work.env; - var data = work.data; - var callback = function () { - if (!complete) - return; - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - try { - envObject.callbackIntoModule(true, function () { - (wasmTable.get(complete))(env, status, data); - }); - } - finally { - emnapiCtx.closeScope(envObject, scope); - } - }; - if (emnapiNodeBinding) { - emnapiNodeBinding.node.makeCallback(work.resource, callback, [], { - asyncId: work.asyncId, - triggerAsyncId: work.triggerAsyncId - }); - } - else { - callback(); - } - }, - queue: function (id) { - var work = emnapiAWST.values[id]; - if (!work) - return; - if (work.status === 0) { - work.status = 1; - if (emnapiAWST.queued.size >= (Math.abs(emnapiAsyncWorkPoolSize) || 4)) { - emnapiAWST.pending.push(id); - return; - } - emnapiAWST.queued.add(id); - var env_1 = work.env; - var data_1 = work.data; - var execute = work.execute; - work.status = 2; - emnapiCtx.feature.setImmediate(function () { - (wasmTable.get(execute))(env_1, data_1); - emnapiAWST.queued.delete(id); - work.status = 3; - emnapiCtx.feature.setImmediate(function () { - emnapiAWST.callComplete(work, 0); - }); - if (emnapiAWST.pending.length > 0) { - var nextWorkId = emnapiAWST.pending.shift(); - emnapiAWST.values[nextWorkId].status = 0; - emnapiAWST.queue(nextWorkId); - } - }); - } - }, - cancel: function (id) { - var index = emnapiAWST.pending.indexOf(id); - if (index !== -1) { - var work_1 = emnapiAWST.values[id]; - if (work_1 && (work_1.status === 1)) { - work_1.status = 4; - emnapiAWST.pending.splice(index, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiAWST.callComplete(work_1, 11); - }); - return 0; - } - else { - return 9; - } - } - return 9; - }, - remove: function (id) { - var work = emnapiAWST.values[id]; - if (!work) - return; - if (emnapiNodeBinding) { - emnapiNodeBinding.node.emitAsyncDestroy({ - asyncId: work.asyncId, - triggerAsyncId: work.triggerAsyncId - }); - } - emnapiAWST.values[id] = undefined; - emnapiAWST.idGen.reuse(id); - } - }; - function _emnapi_node_emit_async_init(async_resource, async_resource_name, trigger_async_id, result) { - if (!emnapiNodeBinding) - return; - var resource = emnapiCtx.handleStore.get(async_resource).value; - var resource_name = emnapiCtx.handleStore.get(async_resource_name).value; - var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resource_name, trigger_async_id); - var asyncId = asyncContext.asyncId; - var triggerAsyncId = asyncContext.triggerAsyncId; - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setFloat64(result, asyncId, true); - HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true); - } - } - function _emnapi_node_emit_async_destroy(async_id, trigger_async_id) { - if (!emnapiNodeBinding) - return; - emnapiNodeBinding.node.emitAsyncDestroy({ - asyncId: async_id, - triggerAsyncId: trigger_async_id - }); - } - function _emnapi_node_make_callback(env, async_resource, cb, argv, size, async_id, trigger_async_id, result) { - var i = 0; - var v; - if (!emnapiNodeBinding) - return; - var resource = emnapiCtx.handleStore.get(async_resource).value; - var callback = emnapiCtx.handleStore.get(cb).value; - size = size >>> 0; - var arr = Array(size); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (; i < size; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - arr[i] = emnapiCtx.handleStore.get(argVal).value; - } - var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, { - asyncId: async_id, - triggerAsyncId: trigger_async_id - }); - if (result) { - var envObject = emnapiCtx.envStore.get(env); - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - } - function _emnapi_async_init_js(async_resource, async_resource_name, result) { - if (!emnapiNodeBinding) { - return 9; - } - var resource; - if (async_resource) { - resource = Object(emnapiCtx.handleStore.get(async_resource).value); - } - var name = emnapiCtx.handleStore.get(async_resource_name).value; - var ret = emnapiNodeBinding.napi.asyncInit(resource, name); - if (ret.status !== 0) - return ret.status; - var numberValue = ret.value; - if (!((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63))))) { - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - if (numberValue >= (BigInt(1) << BigInt(63))) { - numberValue = numberValue - (BigInt(1) << BigInt(64)); - } - } - var low = Number(numberValue & BigInt(0xffffffff)); - var high = Number(numberValue >> BigInt(32)); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, low, true); - HEAP_DATA_VIEW.setInt32(result + 4, high, true); - return 0; - } - function _emnapi_async_destroy_js(async_context) { - if (!emnapiNodeBinding) { - return 9; - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var low = HEAP_DATA_VIEW.getInt32(async_context, true); - var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); - var pointer = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); - var ret = emnapiNodeBinding.napi.asyncDestroy(pointer); - if (ret.status !== 0) - return ret.status; - return 0; - } - function napi_open_callback_scope(env, ignored, async_context_handle, result) { - throw new Error('napi_open_callback_scope has not been implemented yet'); - } - function napi_close_callback_scope(env, scope) { - throw new Error('napi_close_callback_scope has not been implemented yet'); - } - function napi_make_callback(env, async_context, recv, func, argc, argv, result) { - var i = 0; - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!emnapiNodeBinding) { - return envObject.setLastError(9); - } - if (!recv) - return envObject.setLastError(1); - if (argc > 0) { - if (!argv) - return envObject.setLastError(1); - } - var v8recv = Object(emnapiCtx.handleStore.get(recv).value); - var v8func = emnapiCtx.handleStore.get(func).value; - if (typeof v8func !== 'function') { - return envObject.setLastError(1); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var low = HEAP_DATA_VIEW.getInt32(async_context, true); - var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); - var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); - argc = argc >>> 0; - var arr = Array(argc); - for (; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - arr[i] = emnapiCtx.handleStore.get(argVal).value; - } - var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr); - if (ret.error) { - throw ret.error; - } - if (ret.status !== 0) - return envObject.setLastError(ret.status); - if (result) { - v = envObject.ensureHandleId(ret.value); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function _emnapi_env_check_gc_access(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - } - var nodeMod = Object.freeze({ - __proto__: null, - _emnapi_async_destroy_js: _emnapi_async_destroy_js, - _emnapi_async_init_js: _emnapi_async_init_js, - _emnapi_env_check_gc_access: _emnapi_env_check_gc_access, - _emnapi_node_emit_async_destroy: _emnapi_node_emit_async_destroy, - _emnapi_node_emit_async_init: _emnapi_node_emit_async_init, - _emnapi_node_make_callback: _emnapi_node_make_callback, - napi_close_callback_scope: napi_close_callback_scope, - napi_make_callback: napi_make_callback, - napi_open_callback_scope: napi_open_callback_scope - }); - var emnapiTSFN = { - offset: { - resource: 0, - async_id: 8, - trigger_async_id: 16, - queue_size: 24, - queue: 1 * 4 + 24, - thread_count: 2 * 4 + 24, - is_closing: 3 * 4 + 24, - dispatch_state: 3 * 4 + 28, - context: 3 * 4 + 32, - max_queue_size: 4 * 4 + 32, - ref: 5 * 4 + 32, - env: 6 * 4 + 32, - finalize_data: 7 * 4 + 32, - finalize_cb: 8 * 4 + 32, - call_js_cb: 9 * 4 + 32, - handles_closing: 10 * 4 + 32, - async_ref: 10 * 4 + 36, - mutex: 10 * 4 + 40, - cond: 10 * 4 + 44, - end: 10 * 4 + 48 - }, - init: function () { - if (typeof PThread !== 'undefined') { - PThread.unusedWorkers.forEach(emnapiTSFN.addListener); - PThread.runningWorkers.forEach(emnapiTSFN.addListener); - var __original_getNewWorker_1 = PThread.getNewWorker; - PThread.getNewWorker = function () { - var r = __original_getNewWorker_1.apply(this, arguments); - emnapiTSFN.addListener(r); - return r; - }; - } - }, - addListener: function (worker) { - if (!worker) - return false; - if (worker._emnapiTSFNListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__) { - var type = __emnapi__.type; - var payload = __emnapi__.payload; - if (type === 'tsfn-send') { - emnapiTSFN.dispatch(payload.tsfn); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiTSFNListener; - }; - worker._emnapiTSFNListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; - }, - initQueue: function (func) { - var size = 2 * 4; - var queue = _malloc(size); - if (!queue) - return false; - new Uint8Array(wasmMemory.buffer, queue, size).fill(0); - emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false); - return true; - }, - destroyQueue: function (func) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - if (queue) { - _free(queue); - } - }, - pushQueue: function (func, data) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - var head = emnapiTSFN.loadSizeTypeValue(queue, false); - var tail = emnapiTSFN.loadSizeTypeValue(queue + 4, false); - var size = 2 * 4; - var node = _malloc(size); - if (!node) - throw new Error('OOM'); - emnapiTSFN.storeSizeTypeValue(node, data, false); - emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); - if (head === 0 && tail === 0) { - emnapiTSFN.storeSizeTypeValue(queue, node, false); - emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); - } - else { - emnapiTSFN.storeSizeTypeValue(tail + 4, node, false); - emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); - } - emnapiTSFN.addQueueSize(func); - }, - shiftQueue: function (func) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - var head = emnapiTSFN.loadSizeTypeValue(queue, false); - if (head === 0) - return 0; - var node = head; - var next = emnapiTSFN.loadSizeTypeValue(head + 4, false); - emnapiTSFN.storeSizeTypeValue(queue, next, false); - if (next === 0) { - emnapiTSFN.storeSizeTypeValue(queue + 4, 0, false); - } - emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); - var value = emnapiTSFN.loadSizeTypeValue(node, false); - _free(node); - emnapiTSFN.subQueueSize(func); - return value; - }, - push: function (func, data, mode) { - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - var waitCondition = function () { - var queueSize = emnapiTSFN.getQueueSize(func); - var maxSize = emnapiTSFN.getMaxQueueSize(func); - var isClosing = emnapiTSFN.getIsClosing(func); - return queueSize >= maxSize && maxSize > 0 && !isClosing; - }; - var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; - return mutex.execute(function () { - while (waitCondition()) { - if (mode === 0) { - return 15; - } - if (isBrowserMain) { - return 21; - } - cond.wait(); - } - if (emnapiTSFN.getIsClosing(func)) { - if (emnapiTSFN.getThreadCount(func) === 0) { - return 1; - } - else { - emnapiTSFN.subThreadCount(func); - return 16; - } - } - else { - emnapiTSFN.pushQueue(func, data); - emnapiTSFN.send(func); - return 0; - } - }); - }, - getMutex: function (func) { - var index = func + emnapiTSFN.offset.mutex; - var mutex = { - lock: function () { - var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - if (isBrowserMain) { - while (true) { - var oldValue = Atomics.compareExchange(i32a, 0, 0, 1); - if (oldValue === 0) { - return; - } - } - } - else { - while (true) { - var oldValue = Atomics.compareExchange(i32a, 0, 0, 1); - if (oldValue === 0) { - return; - } - Atomics.wait(i32a, 0, 1); - } - } - }, - unlock: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - var oldValue = Atomics.compareExchange(i32a, 0, 1, 0); - if (oldValue !== 1) { - throw new Error('Tried to unlock while not holding the mutex'); - } - Atomics.notify(i32a, 0, 1); - }, - execute: function (fn) { - mutex.lock(); - try { - return fn(); - } - finally { - mutex.unlock(); - } - } - }; - return mutex; - }, - getCond: function (func) { - var index = func + emnapiTSFN.offset.cond; - var mutex = emnapiTSFN.getMutex(func); - var cond = { - wait: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - var value = Atomics.load(i32a, 0); - mutex.unlock(); - Atomics.wait(i32a, 0, value); - mutex.lock(); - }, - signal: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - Atomics.add(i32a, 0, 1); - Atomics.notify(i32a, 0, 1); - } - }; - return cond; - }, - getQueueSize: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue_size, true); - }, - addQueueSize: function (func) { - var offset = emnapiTSFN.offset.queue_size; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.add(arr, index, 1); - }, - subQueueSize: function (func) { - var offset = emnapiTSFN.offset.queue_size; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.sub(arr, index, 1); - }, - getThreadCount: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.thread_count, true); - }, - addThreadCount: function (func) { - var offset = emnapiTSFN.offset.thread_count; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.add(arr, index, 1); - }, - subThreadCount: function (func) { - var offset = emnapiTSFN.offset.thread_count; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.sub(arr, index, 1); - }, - getIsClosing: function (func) { - return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2); - }, - setIsClosing: function (func, value) { - Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value); - }, - getHandlesClosing: function (func) { - return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2); - }, - setHandlesClosing: function (func, value) { - Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value); - }, - getDispatchState: function (func) { - return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2); - }, - getContext: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false); - }, - getMaxQueueSize: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.max_queue_size, true); - }, - getEnv: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.env, false); - }, - getCallJSCb: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.call_js_cb, false); - }, - getRef: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.ref, false); - }, - getResource: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.resource, false); - }, - getFinalizeCb: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_cb, false); - }, - getFinalizeData: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_data, false); - }, - loadSizeTypeValue: function (offset, unsigned) { - var ret; - var arr; - if (unsigned) { - arr = new Uint32Array(wasmMemory.buffer); - ret = Atomics.load(arr, offset >> 2); - return ret; - } - else { - arr = new Int32Array(wasmMemory.buffer); - ret = Atomics.load(arr, offset >> 2); - return ret; - } - }, - storeSizeTypeValue: function (offset, value, unsigned) { - var arr; - if (unsigned) { - arr = new Uint32Array(wasmMemory.buffer); - Atomics.store(arr, offset >> 2, value); - return undefined; - } - else { - arr = new Int32Array(wasmMemory.buffer); - Atomics.store(arr, offset >> 2, value >>> 0); - return undefined; - } - }, - destroy: function (func) { - emnapiTSFN.destroyQueue(func); - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - var ref = emnapiTSFN.getRef(func); - if (ref) { - emnapiCtx.refStore.get(ref).dispose(); - } - emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func); - envObject.unref(); - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 0); - emnapiCtx.decreaseWaitingRequestCounter(); - } - var resource = emnapiTSFN.getResource(func); - emnapiCtx.refStore.get(resource).dispose(); - if (emnapiNodeBinding) { - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); - var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); - _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); - } - _free(func); - }, - emptyQueueAndDelete: function (func) { - var callJsCb = emnapiTSFN.getCallJSCb(func); - var context = emnapiTSFN.getContext(func); - var data; - while (emnapiTSFN.getQueueSize(func) > 0) { - data = emnapiTSFN.shiftQueue(func); - if (callJsCb) { - (wasmTable.get(callJsCb))(0, 0, context, data); - } - } - emnapiTSFN.destroy(func); - }, - finalize: function (func) { - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject); - var finalize = emnapiTSFN.getFinalizeCb(func); - var data = emnapiTSFN.getFinalizeData(func); - var context = emnapiTSFN.getContext(func); - var f = function () { - envObject.callFinalizerInternal(0, finalize, data, context); - }; - try { - if (finalize) { - if (emnapiNodeBinding) { - var resource = emnapiTSFN.getResource(func); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); - var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); - emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { - asyncId: asyncId, - triggerAsyncId: triggerAsyncId - }); - } - else { - f(); - } - } - emnapiTSFN.emptyQueueAndDelete(func); - } - finally { - emnapiCtx.closeScope(envObject); - } - }, - cleanup: function (func) { - emnapiTSFN.closeHandlesAndMaybeDelete(func, 1); - }, - closeHandlesAndMaybeDelete: function (func, set_closing) { - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject); - try { - if (set_closing) { - emnapiTSFN.getMutex(func).execute(function () { - emnapiTSFN.setIsClosing(func, 1); - if (emnapiTSFN.getMaxQueueSize(func) > 0) { - emnapiTSFN.getCond(func).signal(); - } - }); - } - if (emnapiTSFN.getHandlesClosing(func)) { - return; - } - emnapiTSFN.setHandlesClosing(func, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiTSFN.finalize(func); - }); - } - finally { - emnapiCtx.closeScope(envObject); - } - }, - dispatchOne: function (func) { - var data = 0; - var popped_value = false; - var has_more = false; - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - mutex.execute(function () { - if (emnapiTSFN.getIsClosing(func)) { - emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); - } - else { - var size = emnapiTSFN.getQueueSize(func); - if (size > 0) { - data = emnapiTSFN.shiftQueue(func); - popped_value = true; - var maxQueueSize = emnapiTSFN.getMaxQueueSize(func); - if (size === maxQueueSize && maxQueueSize > 0) { - cond.signal(); - } - size--; - } - if (size === 0) { - if (emnapiTSFN.getThreadCount(func) === 0) { - emnapiTSFN.setIsClosing(func, 1); - if (emnapiTSFN.getMaxQueueSize(func) > 0) { - cond.signal(); - } - emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); - } - } - else { - has_more = true; - } - } - }); - if (popped_value) { - var env = emnapiTSFN.getEnv(func); - var envObject_1 = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject_1); - var f = function () { - envObject_1.callbackIntoModule(false, function () { - var callJsCb = emnapiTSFN.getCallJSCb(func); - var ref = emnapiTSFN.getRef(func); - var js_callback = ref ? emnapiCtx.refStore.get(ref).get() : 0; - if (callJsCb) { - var context = emnapiTSFN.getContext(func); - (wasmTable.get(callJsCb))(env, js_callback, context, data); - } - else { - var jsCallback = js_callback ? emnapiCtx.handleStore.get(js_callback).value : null; - if (typeof jsCallback === 'function') { - jsCallback(); - } - } - }); - }; - try { - if (emnapiNodeBinding) { - var resource = emnapiTSFN.getResource(func); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { - asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true), - triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true) - }); - } - else { - f(); - } - } - finally { - emnapiCtx.closeScope(envObject_1); - } - } - return has_more; - }, - dispatch: function (func) { - var has_more = true; - var iterations_left = 1000; - var ui32a = new Uint32Array(wasmMemory.buffer); - var index = (func + emnapiTSFN.offset.dispatch_state) >> 2; - while (has_more && --iterations_left !== 0) { - Atomics.store(ui32a, index, 1); - has_more = emnapiTSFN.dispatchOne(func); - if (Atomics.exchange(ui32a, index, 0) !== 1) { - has_more = true; - } - } - if (has_more) { - emnapiTSFN.send(func); - } - }, - send: function (func) { - var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1); - if ((current_state & 1) === 1) { - return; - } - if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) { - postMessage({ - __emnapi__: { - type: 'tsfn-send', - payload: { - tsfn: func - } - } - }); - } - else { - emnapiCtx.feature.setImmediate(function () { - emnapiTSFN.dispatch(func); - }); - } - } - }; - function napi_create_threadsafe_function(env, func, async_resource, async_resource_name, max_queue_size, initial_thread_count, thread_finalize_data, thread_finalize_cb, context, call_js_cb, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!async_resource_name) - return envObject.setLastError(1); - max_queue_size = max_queue_size >>> 0; - initial_thread_count = initial_thread_count >>> 0; - if (initial_thread_count === 0) { - return envObject.setLastError(1); - } - if (!result) - return envObject.setLastError(1); - var ref = 0; - if (!func) { - if (!call_js_cb) - return envObject.setLastError(1); - } - else { - var funcValue = emnapiCtx.handleStore.get(func).value; - if (typeof funcValue !== 'function') { - return envObject.setLastError(1); - } - ref = emnapiCtx.createReference(envObject, func, 1, 1).id; - } - var asyncResourceObject; - if (async_resource) { - asyncResourceObject = emnapiCtx.handleStore.get(async_resource).value; - if (asyncResourceObject == null) { - return envObject.setLastError(2); - } - asyncResourceObject = Object(asyncResourceObject); - } - else { - asyncResourceObject = {}; - } - var resource = envObject.ensureHandleId(asyncResourceObject); - var asyncResourceName = emnapiCtx.handleStore.get(async_resource_name).value; - if (typeof asyncResourceName === 'symbol') { - return envObject.setLastError(3); - } - asyncResourceName = String(asyncResourceName); - var resource_name = envObject.ensureHandleId(asyncResourceName); - var sizeofTSFN = emnapiTSFN.offset.end; - var tsfn = _malloc(sizeofTSFN); - if (!tsfn) - return envObject.setLastError(9); - new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0); - var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1); - var resource_ = resourceRef.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(tsfn, resource_, true); - if (!emnapiTSFN.initQueue(tsfn)) { - _free(tsfn); - resourceRef.dispose(); - return envObject.setLastError(9); - } - _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true); - emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn); - envObject.ref(); - emnapiCtx.increaseWaitingRequestCounter(); - HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true); - HEAP_DATA_VIEW.setUint32(result, tsfn, true); - return envObject.clearLastError(); - } - function napi_get_threadsafe_function_context(func, result) { - if (!func || !result) { - abort(); - return 1; - } - var context = emnapiTSFN.getContext(func); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, context, true); - return 0; - } - function napi_call_threadsafe_function(func, data, mode) { - if (!func) { - abort(); - return 1; - } - return emnapiTSFN.push(func, data, mode); - } - function napi_acquire_threadsafe_function(func) { - if (!func) { - abort(); - return 1; - } - var mutex = emnapiTSFN.getMutex(func); - return mutex.execute(function () { - if (emnapiTSFN.getIsClosing(func)) { - return 16; - } - emnapiTSFN.addThreadCount(func); - return 0; - }); - } - function napi_release_threadsafe_function(func, mode) { - if (!func) { - abort(); - return 1; - } - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - return mutex.execute(function () { - if (emnapiTSFN.getThreadCount(func) === 0) { - return 1; - } - emnapiTSFN.subThreadCount(func); - if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) { - var isClosing = emnapiTSFN.getIsClosing(func); - if (!isClosing) { - var isClosingValue = (mode === 1) ? 1 : 0; - emnapiTSFN.setIsClosing(func, isClosingValue); - if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) { - cond.signal(); - } - emnapiTSFN.send(func); - } - } - return 0; - }); - } - function napi_unref_threadsafe_function(env, func) { - if (!func) { - abort(); - return 1; - } - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 0); - emnapiCtx.decreaseWaitingRequestCounter(); - } - return 0; - } - function napi_ref_threadsafe_function(env, func) { - if (!func) { - abort(); - return 1; - } - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (!Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 1); - emnapiCtx.increaseWaitingRequestCounter(); - } - return 0; - } - var emnapiAWMT = { - unusedWorkers: [], - runningWorkers: [], - workQueue: [], - workerReady: null, - offset: { - resource: 0, - async_id: 8, - trigger_async_id: 16, - env: 24, - data: 1 * 4 + 24, - execute: 2 * 4 + 24, - complete: 3 * 4 + 24, - end: 4 * 4 + 24 - }, - init: function () { - emnapiAWMT.unusedWorkers = []; - emnapiAWMT.runningWorkers = []; - emnapiAWMT.workQueue = []; - emnapiAWMT.workerReady = null; - }, - addListener: function (worker) { - if (!worker) - return false; - if (worker._emnapiAWMTListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__) { - var type = __emnapi__.type; - var payload = __emnapi__.payload; - if (type === 'async-work-complete') { - emnapiCtx.decreaseWaitingRequestCounter(); - emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1); - emnapiAWMT.unusedWorkers.push(worker); - emnapiAWMT.checkIdleWorker(); - emnapiAWMT.callComplete(payload.work, 0); - } - else if (type === 'async-work-queue') { - emnapiAWMT.scheduleWork(payload.work); - } - else if (type === 'async-work-cancel') { - emnapiAWMT.cancelWork(payload.work); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiAWMTListener; - }; - worker._emnapiAWMTListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; - }, - initWorkers: function (n) { - if (ENVIRONMENT_IS_PTHREAD) { - return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve()); - } - if (emnapiAWMT.workerReady) - return emnapiAWMT.workerReady; - if (typeof onCreateWorker !== 'function') { - throw new TypeError('`options.onCreateWorker` is not a function'); - } - var promises = []; - var args = []; - if (!('emnapi_async_worker_create' in wasmInstance.exports)) { - throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags'); - } - for (var i = 0; i < n; ++i) { - args.push(wasmInstance.exports.emnapi_async_worker_create()); - } - try { - var _loop_1 = function (i) { - var worker = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' }); - var p = PThread.loadWasmModuleToWorker(worker); - emnapiAWMT.addListener(worker); - promises.push(p.then(function () { - if (typeof worker.unref === 'function') { - worker.unref(); - } - })); - emnapiAWMT.unusedWorkers.push(worker); - var arg = args[i]; - worker.threadBlockBase = arg; - worker.postMessage({ - __emnapi__: { - type: 'async-worker-init', - payload: { arg: arg } - } - }); - }; - for (var i = 0; i < n; ++i) { - _loop_1(i); - } - } - catch (err) { - for (var i = 0; i < n; ++i) { - var arg = args[i]; - _free(arg); - } - throw err; - } - emnapiAWMT.workerReady = Promise.all(promises); - return emnapiAWMT.workerReady; - }, - checkIdleWorker: function () { - if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) { - var worker = emnapiAWMT.unusedWorkers.shift(); - var work = emnapiAWMT.workQueue.shift(); - emnapiAWMT.runningWorkers.push(worker); - worker.postMessage({ - __emnapi__: { - type: 'async-work-execute', - payload: { work: work } - } - }); - } - }, - getResource: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.resource, false); - }, - getExecute: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.execute, false); - }, - getComplete: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.complete, false); - }, - getEnv: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.env, false); - }, - getData: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.data, false); - }, - scheduleWork: function (work) { - var _a; - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_1 = napiModule.postMessage; - postMessage_1({ - __emnapi__: { - type: 'async-work-queue', - payload: { work: work } - } - }); - return; - } - emnapiCtx.increaseWaitingRequestCounter(); - emnapiAWMT.workQueue.push(work); - if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) { - emnapiAWMT.checkIdleWorker(); - } - else { - var fail = function (err) { - emnapiCtx.decreaseWaitingRequestCounter(); - throw err; - }; - try { - emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () { - emnapiAWMT.workerReady.ready = true; - emnapiAWMT.checkIdleWorker(); - }, fail); - } - catch (err) { - fail(err); - } - } - }, - cancelWork: function (work) { - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_2 = napiModule.postMessage; - postMessage_2({ - __emnapi__: { - type: 'async-work-cancel', - payload: { work: work } - } - }); - return 0; - } - var index = emnapiAWMT.workQueue.indexOf(work); - if (index !== -1) { - emnapiAWMT.workQueue.splice(index, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiCtx.decreaseWaitingRequestCounter(); - emnapiAWMT.checkIdleWorker(); - emnapiAWMT.callComplete(work, 11); - }); - return 0; - } - return 9; - }, - callComplete: function (work, status) { - var complete = emnapiAWMT.getComplete(work); - var env = emnapiAWMT.getEnv(work); - var data = emnapiAWMT.getData(work); - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - var callback = function () { - if (!complete) - return; - envObject.callbackIntoModule(true, function () { - (wasmTable.get(complete))(env, status, data); - }); - }; - try { - if (emnapiNodeBinding) { - var resource = emnapiAWMT.getResource(work); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); - var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); - emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], { - asyncId: asyncId, - triggerAsyncId: triggerAsyncId - }); - } - else { - callback(); - } - } - finally { - emnapiCtx.closeScope(envObject, scope); - } - } - }; - var napi_create_async_work = singleThreadAsyncWork - ? function (env, resource, resource_name, execute, complete, data, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!execute) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var resourceObject; - if (resource) { - resourceObject = Object(emnapiCtx.handleStore.get(resource).value); - } - else { - resourceObject = {}; - } - if (!resource_name) - return envObject.setLastError(1); - var resourceName = String(emnapiCtx.handleStore.get(resource_name).value); - var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, id, true); - return envObject.clearLastError(); - } - : function (env, resource, resource_name, execute, complete, data, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!execute) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var resourceObject; - if (resource) { - resourceObject = Object(emnapiCtx.handleStore.get(resource).value); - } - else { - resourceObject = {}; - } - if (!resource_name) - return envObject.setLastError(1); - var sizeofAW = emnapiAWMT.offset.end; - var aw = _malloc(sizeofAW); - if (!aw) - return envObject.setLastError(9); - new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0); - var s = envObject.ensureHandleId(resourceObject); - var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1); - var resource_ = resourceRef.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(aw, resource_, true); - _emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true); - HEAP_DATA_VIEW.setUint32(result, aw, true); - return envObject.clearLastError(); - }; - var napi_delete_async_work = singleThreadAsyncWork - ? function (env, work) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!work) - return envObject.setLastError(1); - emnapiAWST.remove(work); - return envObject.clearLastError(); - } - : function (env, work) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!work) - return envObject.setLastError(1); - var resource = emnapiAWMT.getResource(work); - emnapiCtx.refStore.get(resource).dispose(); - if (emnapiNodeBinding) { - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); - var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); - _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); - } - _free(work); - return envObject.clearLastError(); - }; - var napi_queue_async_work = singleThreadAsyncWork - ? function (env, work) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1); - emnapiAWST.queue(work); - return envObject.clearLastError(); - } - : function (env, work) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1); - emnapiAWMT.scheduleWork(work); - return envObject.clearLastError(); - }; - var napi_cancel_async_work = singleThreadAsyncWork - ? function (env, work) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1); - var status = emnapiAWST.cancel(work); - if (status === 0) - return envObject.clearLastError(); - return envObject.setLastError(status); - } - : function (env, work) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1); - var status = emnapiAWMT.cancelWork(work); - if (status === 0) - return envObject.clearLastError(); - return envObject.setLastError(status); - }; - function initWorker(startArg) { - if (napiModule.childThread) { - if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') { - throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags'); - } - wasmInstance.exports.emnapi_async_worker_init(startArg); - } - else { - throw new Error('startThread is only available in child threads'); - } - } - function executeAsyncWork(work) { - if (!ENVIRONMENT_IS_PTHREAD) - return; - var execute = emnapiAWMT.getExecute(work); - var env = emnapiAWMT.getEnv(work); - var data = emnapiAWMT.getData(work); - (wasmTable.get(execute))(env, data); - var postMessage = napiModule.postMessage; - postMessage({ - __emnapi__: { - type: 'async-work-complete', - payload: { work: work } - } - }); - } - napiModule.initWorker = initWorker; - napiModule.executeAsyncWork = executeAsyncWork; - var asyncWorkMod = Object.freeze({ - __proto__: null, - napi_cancel_async_work: napi_cancel_async_work, - napi_create_async_work: napi_create_async_work, - napi_delete_async_work: napi_delete_async_work, - napi_queue_async_work: napi_queue_async_work - }); - var emnapiExternalMemory = { - registry: typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined, - table: new WeakMap(), - wasmMemoryViewTable: new WeakMap(), - init: function () { - emnapiExternalMemory.registry = typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined; - emnapiExternalMemory.table = new WeakMap(); - emnapiExternalMemory.wasmMemoryViewTable = new WeakMap(); - }, - isSharedArrayBuffer: function (value) { - return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); - }, - isDetachedArrayBuffer: function (arrayBuffer) { - if (arrayBuffer.byteLength === 0) { - try { - new Uint8Array(arrayBuffer); - } - catch (_) { - return true; - } - } - return false; - }, - getArrayBufferPointer: function (arrayBuffer, shouldCopy) { - var _a; - var info = { - address: 0, - ownership: 0, - runtimeAllocated: 0 - }; - if (arrayBuffer === wasmMemory.buffer) { - return info; - } - var isDetached = emnapiExternalMemory.isDetachedArrayBuffer(arrayBuffer); - if (emnapiExternalMemory.table.has(arrayBuffer)) { - var cachedInfo = emnapiExternalMemory.table.get(arrayBuffer); - if (isDetached) { - cachedInfo.address = 0; - return cachedInfo; - } - if (shouldCopy && cachedInfo.ownership === 0 && cachedInfo.runtimeAllocated === 1) { - new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), cachedInfo.address); - } - return cachedInfo; - } - if (isDetached || (arrayBuffer.byteLength === 0)) { - return info; - } - if (!shouldCopy) { - return info; - } - var pointer = _malloc(arrayBuffer.byteLength); - if (!pointer) - throw new Error('Out of memory'); - new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer); - info.address = pointer; - info.ownership = emnapiExternalMemory.registry ? 0 : 1; - info.runtimeAllocated = 1; - emnapiExternalMemory.table.set(arrayBuffer, info); - (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(arrayBuffer, pointer); - return info; - }, - getOrUpdateMemoryView: function (view) { - if (view.buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - emnapiExternalMemory.wasmMemoryViewTable.set(view, { - Ctor: view.constructor, - address: view.byteOffset, - length: view instanceof DataView ? view.byteLength : view.length, - ownership: 1, - runtimeAllocated: 0 - }); - } - return view; - } - var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || - ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer)); - if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - var info = emnapiExternalMemory.wasmMemoryViewTable.get(view); - var Ctor = info.Ctor; - var newView = void 0; - var Buffer_1 = emnapiCtx.feature.Buffer; - if (typeof Buffer_1 === 'function' && Ctor === Buffer_1) { - newView = Buffer_1.from(wasmMemory.buffer, info.address, info.length); - } - else { - newView = new Ctor(wasmMemory.buffer, info.address, info.length); - } - emnapiExternalMemory.wasmMemoryViewTable.set(newView, info); - return newView; - } - return view; - }, - getViewPointer: function (view, shouldCopy) { - view = emnapiExternalMemory.getOrUpdateMemoryView(view); - if (view.buffer === wasmMemory.buffer) { - if (emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - var _a = emnapiExternalMemory.wasmMemoryViewTable.get(view), address_1 = _a.address, ownership_1 = _a.ownership, runtimeAllocated_1 = _a.runtimeAllocated; - return { address: address_1, ownership: ownership_1, runtimeAllocated: runtimeAllocated_1, view: view }; - } - return { address: view.byteOffset, ownership: 1, runtimeAllocated: 0, view: view }; - } - var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated; - return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view }; - } - }; - var emnapiString = { - utf8Decoder: undefined, - utf16Decoder: undefined, - init: function () { - var fallbackDecoder = { - decode: function (bytes) { - var inputIndex = 0; - var pendingSize = Math.min(0x1000, bytes.length + 1); - var pending = new Uint16Array(pendingSize); - var chunks = []; - var pendingIndex = 0; - for (;;) { - var more = inputIndex < bytes.length; - if (!more || (pendingIndex >= pendingSize - 1)) { - var subarray = pending.subarray(0, pendingIndex); - var arraylike = subarray; - chunks.push(String.fromCharCode.apply(null, arraylike)); - if (!more) { - return chunks.join(''); - } - bytes = bytes.subarray(inputIndex); - inputIndex = 0; - pendingIndex = 0; - } - var byte1 = bytes[inputIndex++]; - if ((byte1 & 0x80) === 0) { - pending[pendingIndex++] = byte1; - } - else if ((byte1 & 0xe0) === 0xc0) { - var byte2 = bytes[inputIndex++] & 0x3f; - pending[pendingIndex++] = ((byte1 & 0x1f) << 6) | byte2; - } - else if ((byte1 & 0xf0) === 0xe0) { - var byte2 = bytes[inputIndex++] & 0x3f; - var byte3 = bytes[inputIndex++] & 0x3f; - pending[pendingIndex++] = ((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3; - } - else if ((byte1 & 0xf8) === 0xf0) { - var byte2 = bytes[inputIndex++] & 0x3f; - var byte3 = bytes[inputIndex++] & 0x3f; - var byte4 = bytes[inputIndex++] & 0x3f; - var codepoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4; - if (codepoint > 0xffff) { - codepoint -= 0x10000; - pending[pendingIndex++] = (codepoint >>> 10) & 0x3ff | 0xd800; - codepoint = 0xdc00 | codepoint & 0x3ff; - } - pending[pendingIndex++] = codepoint; - } - else ; - } - } - }; - var utf8Decoder; - utf8Decoder = typeof TextDecoder === 'function' ? new TextDecoder() : fallbackDecoder; - emnapiString.utf8Decoder = utf8Decoder; - var fallbackDecoder2 = { - decode: function (input) { - var bytes = new Uint16Array(input.buffer, input.byteOffset, input.byteLength / 2); - if (bytes.length <= 0x1000) { - return String.fromCharCode.apply(null, bytes); - } - var chunks = []; - var i = 0; - var len = 0; - for (; i < bytes.length; i += len) { - len = Math.min(0x1000, bytes.length - i); - chunks.push(String.fromCharCode.apply(null, bytes.subarray(i, i + len))); - } - return chunks.join(''); - } - }; - var utf16Decoder; - utf16Decoder = typeof TextDecoder === 'function' ? new TextDecoder('utf-16le') : fallbackDecoder2; - emnapiString.utf16Decoder = utf16Decoder; - }, - lengthBytesUTF8: function (str) { - var c; - var len = 0; - for (var i = 0; i < str.length; ++i) { - c = str.charCodeAt(i); - if (c <= 0x7F) { - len++; - } - else if (c <= 0x7FF) { - len += 2; - } - else if (c >= 0xD800 && c <= 0xDFFF) { - len += 4; - ++i; - } - else { - len += 3; - } - } - return len; - }, - UTF8ToString: function (ptr, length) { - if (!ptr || !length) - return ''; - ptr >>>= 0; - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - var end = ptr; - if (length === -1) { - for (; HEAPU8[end];) - ++end; - } - else { - end = ptr + (length >>> 0); - } - length = end - ptr; - if (length <= 16) { - var idx = ptr; - var str = ''; - while (idx < end) { - var u0 = HEAPU8[idx++]; - if (!(u0 & 0x80)) { - str += String.fromCharCode(u0); - continue; - } - var u1 = HEAPU8[idx++] & 63; - if ((u0 & 0xE0) === 0xC0) { - str += String.fromCharCode(((u0 & 31) << 6) | u1); - continue; - } - var u2 = HEAPU8[idx++] & 63; - if ((u0 & 0xF0) === 0xE0) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; - } - else { - u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (HEAPU8[idx++] & 63); - } - if (u0 < 0x10000) { - str += String.fromCharCode(u0); - } - else { - var ch = u0 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } - } - return str; - } - return emnapiString.utf8Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); - }, - stringToUTF8: function (str, outPtr, maxBytesToWrite) { - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - var outIdx = outPtr; - outIdx >>>= 0; - if (!(maxBytesToWrite > 0)) { - return 0; - } - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i); - if (u >= 0xD800 && u <= 0xDFFF) { - var u1 = str.charCodeAt(++i); - u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); - } - if (u <= 0x7F) { - if (outIdx >= endIdx) - break; - HEAPU8[outIdx++] = u; - } - else if (u <= 0x7FF) { - if (outIdx + 1 >= endIdx) - break; - HEAPU8[outIdx++] = 0xC0 | (u >> 6); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - else if (u <= 0xFFFF) { - if (outIdx + 2 >= endIdx) - break; - HEAPU8[outIdx++] = 0xE0 | (u >> 12); - HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - else { - if (outIdx + 3 >= endIdx) - break; - HEAPU8[outIdx++] = 0xF0 | (u >> 18); - HEAPU8[outIdx++] = 0x80 | ((u >> 12) & 63); - HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - } - HEAPU8[outIdx] = 0; - return outIdx - startIdx; - }, - UTF16ToString: function (ptr, length) { - if (!ptr || !length) - return ''; - ptr >>>= 0; - var end = ptr; - if (length === -1) { - var idx = end >> 1; - var HEAPU16 = new Uint16Array(wasmMemory.buffer); - while (HEAPU16[idx]) - ++idx; - end = idx << 1; - } - else { - end = ptr + (length >>> 0) * 2; - } - length = end - ptr; - if (length <= 32) { - return String.fromCharCode.apply(null, new Uint16Array(wasmMemory.buffer, ptr, length / 2)); - } - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - return emnapiString.utf16Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); - }, - stringToUTF16: function (str, outPtr, maxBytesToWrite) { - if (maxBytesToWrite === undefined) { - maxBytesToWrite = 0x7FFFFFFF; - } - if (maxBytesToWrite < 2) - return 0; - maxBytesToWrite -= 2; - var startPtr = outPtr; - var numCharsToWrite = (maxBytesToWrite < str.length * 2) ? (maxBytesToWrite / 2) : str.length; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < numCharsToWrite; ++i) { - var codeUnit = str.charCodeAt(i); - HEAP_DATA_VIEW.setInt16(outPtr, codeUnit, true); - outPtr += 2; - } - HEAP_DATA_VIEW.setInt16(outPtr, 0, true); - return outPtr - startPtr; - }, - newString: function (env, str, length, result, stringMaker) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!str) - return envObject.setLastError(1); - } - if (!result) - return envObject.setLastError(1); - if (!(autoLength || (sizelength <= 2147483647))) - return envObject.setLastError(1); - var strValue = stringMaker(str, autoLength, sizelength); - var value = emnapiCtx.addToCurrentScope(strValue).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - }, - newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!str) - return envObject.setLastError(1); - } - if (!result) - return envObject.setLastError(1); - if (!(autoLength || (sizelength <= 2147483647))) - return envObject.setLastError(1); - var status = createApi(env, str, length, result); - if (status === 0) { - if (copied) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(copied, 1, true); - } - if (finalize_callback) { - envObject.callFinalizer(finalize_callback, str, finalize_hint); - } - } - return status; - } - }; - function napi_get_array_length(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isArray()) { - return envObject.setLastError(8); - } - var v = handle.value.length >>> 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_arraybuffer_info(env, arraybuffer, data, byte_length) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!arraybuffer) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { - return envObject.setLastError(1); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (data) { - var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address; - HEAP_DATA_VIEW.setUint32(data, p, true); - } - if (byte_length) { - HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true); - } - return envObject.clearLastError(); - } - function node_api_set_prototype(env, object, value) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - var obj = emnapiCtx.handleStore.get(object).value; - if (obj == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var type = typeof obj; - var v = void 0; - try { - v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj); - } - catch (_) { - return envObject.setLastError(2); - } - var val = emnapiCtx.handleStore.get(value).value; - Object.setPrototypeOf(v, val); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_prototype(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (handle.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = handle.isObject() || handle.isFunction() ? handle.value : Object(handle.value); - } - catch (_) { - return envObject.setLastError(2); - } - var p = envObject.ensureHandleId(Object.getPrototypeOf(v)); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, p, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_typedarray_info(env, typedarray, type, length, data, arraybuffer, byte_offset) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!typedarray) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(typedarray); - if (!handle.isTypedArray()) { - return envObject.setLastError(1); - } - var v = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (type) { - var t = void 0; - if (v instanceof Int8Array) { - t = 0; - } - else if (v instanceof Uint8Array) { - t = 1; - } - else if (v instanceof Uint8ClampedArray) { - t = 2; - } - else if (v instanceof Int16Array) { - t = 3; - } - else if (v instanceof Uint16Array) { - t = 4; - } - else if (v instanceof Int32Array) { - t = 5; - } - else if (v instanceof Uint32Array) { - t = 6; - } - else if (typeof Float16Array === 'function' && v instanceof Float16Array) { - t = 11; - } - else if (v instanceof Float32Array) { - t = 7; - } - else if (v instanceof Float64Array) { - t = 8; - } - else if (v instanceof BigInt64Array) { - t = 9; - } - else if (v instanceof BigUint64Array) { - t = 10; - } - else { - return envObject.setLastError(9); - } - HEAP_DATA_VIEW.setInt32(type, t, true); - } - if (length) { - HEAP_DATA_VIEW.setUint32(length, v.length, true); - } - var buffer; - if (data || arraybuffer) { - buffer = v.buffer; - if (data) { - var p = emnapiExternalMemory.getViewPointer(v, true).address; - HEAP_DATA_VIEW.setUint32(data, p, true); - } - if (arraybuffer) { - var ab = envObject.ensureHandleId(buffer); - HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); - } - } - if (byte_offset) { - HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); - } - return envObject.clearLastError(); - } - function napi_get_buffer_info(env, buffer, data, length) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!buffer) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(buffer); - if (!handle.isBuffer(emnapiCtx.feature.Buffer)) - return envObject.setLastError(1); - if (handle.isDataView()) { - return napi_get_dataview_info(env, buffer, length, data, 0, 0); - } - return napi_get_typedarray_info(env, buffer, 0, length, data, 0, 0); - } - function napi_get_dataview_info(env, dataview, byte_length, data, arraybuffer, byte_offset) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!dataview) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(dataview); - if (!handle.isDataView()) { - return envObject.setLastError(1); - } - var v = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (byte_length) { - HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true); - } - var buffer; - if (data || arraybuffer) { - buffer = v.buffer; - if (data) { - var p = emnapiExternalMemory.getViewPointer(v, true).address; - HEAP_DATA_VIEW.setUint32(data, p, true); - } - if (arraybuffer) { - var ab = envObject.ensureHandleId(buffer); - HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); - } - } - if (byte_offset) { - HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); - } - return envObject.clearLastError(); - } - function napi_get_date_value(env, value, result) { - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isDate()) { - return envObject.setLastError(1); - } - v = handle.value.valueOf(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setFloat64(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_value_bool(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'boolean') { - return envObject.setLastError(7); - } - var r = handle.value ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_get_value_double(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6); - } - var r = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setFloat64(result, r, true); - return envObject.clearLastError(); - } - function napi_get_value_bigint_int64(env, value, result, lossless) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9); - } - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - if (!lossless) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - var numberValue = handle.value; - if (typeof numberValue !== 'bigint') { - return envObject.setLastError(6); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) { - HEAP_DATA_VIEW.setInt8(lossless, 1, true); - } - else { - HEAP_DATA_VIEW.setInt8(lossless, 0, true); - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - if (numberValue >= (BigInt(1) << BigInt(63))) { - numberValue = numberValue - (BigInt(1) << BigInt(64)); - } - } - var low = Number(numberValue & BigInt(0xffffffff)); - var high = Number(numberValue >> BigInt(32)); - HEAP_DATA_VIEW.setInt32(result, low, true); - HEAP_DATA_VIEW.setInt32(result + 4, high, true); - return envObject.clearLastError(); - } - function napi_get_value_bigint_uint64(env, value, result, lossless) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9); - } - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - if (!lossless) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - var numberValue = handle.value; - if (typeof numberValue !== 'bigint') { - return envObject.setLastError(6); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) { - HEAP_DATA_VIEW.setInt8(lossless, 1, true); - } - else { - HEAP_DATA_VIEW.setInt8(lossless, 0, true); - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - } - var low = Number(numberValue & BigInt(0xffffffff)); - var high = Number(numberValue >> BigInt(32)); - HEAP_DATA_VIEW.setUint32(result, low, true); - HEAP_DATA_VIEW.setUint32(result + 4, high, true); - return envObject.clearLastError(); - } - function napi_get_value_bigint_words(env, value, sign_bit, word_count, words) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9); - } - if (!value) - return envObject.setLastError(1); - if (!word_count) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isBigInt()) { - return envObject.setLastError(17); - } - var isMinus = handle.value < BigInt(0); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true); - var wordCount = 0; - var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; - while (bigintValue !== BigInt(0)) { - wordCount++; - bigintValue = bigintValue >> BigInt(64); - } - bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; - if (!sign_bit && !words) { - word_count_int = wordCount; - HEAP_DATA_VIEW.setUint32(word_count, word_count_int, true); - } - else { - if (!sign_bit) - return envObject.setLastError(1); - if (!words) - return envObject.setLastError(1); - var wordsArr = []; - while (bigintValue !== BigInt(0)) { - var uint64 = bigintValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - wordsArr.push(uint64); - bigintValue = bigintValue >> BigInt(64); - } - var len = Math.min(word_count_int, wordsArr.length); - for (var i = 0; i < len; i++) { - var low = Number(wordsArr[i] & BigInt(0xffffffff)); - var high = Number(wordsArr[i] >> BigInt(32)); - HEAP_DATA_VIEW.setUint32(words + i * 8, low, true); - HEAP_DATA_VIEW.setUint32(words + (i * 8 + 4), high, true); - } - HEAP_DATA_VIEW.setInt32(sign_bit, isMinus ? 1 : 0, true); - HEAP_DATA_VIEW.setUint32(word_count, len, true); - } - return envObject.clearLastError(); - } - function napi_get_value_external(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isExternal()) { - return envObject.setLastError(1); - } - var p = handle.data(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, p, true); - return envObject.clearLastError(); - } - function napi_get_value_int32(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6); - } - var v = new Int32Array([handle.value])[0]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, v, true); - return envObject.clearLastError(); - } - function napi_get_value_int64(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6); - } - var numberValue = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) { - HEAP_DATA_VIEW.setInt32(result, 0, true); - HEAP_DATA_VIEW.setInt32(result + 4, 0, true); - } - else if (numberValue < -9223372036854776e3) { - HEAP_DATA_VIEW.setInt32(result, 0, true); - HEAP_DATA_VIEW.setInt32(result + 4, 2147483648, true); - } - else if (numberValue >= 9223372036854776000) { - HEAP_DATA_VIEW.setUint32(result, 4294967295, true); - HEAP_DATA_VIEW.setUint32(result + 4, 2147483647, true); - } - else { - $emnapiSetValueI64(result, Math.trunc(numberValue)); - } - return envObject.clearLastError(); - } - function napi_get_value_string_latin1(env, value, buf, buf_size, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!buf) { - if (!result) - return envObject.setLastError(1); - HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); - } - else if (buf_size !== 0) { - var copied = 0; - var v = void 0; - for (var i = 0; i < buf_size - 1; ++i) { - v = handle.value.charCodeAt(i) & 0xff; - HEAP_DATA_VIEW.setUint8(buf + i, v, true); - copied++; - } - HEAP_DATA_VIEW.setUint8(buf + copied, 0, true); - if (result) { - HEAP_DATA_VIEW.setUint32(result, copied, true); - } - } - else if (result) { - HEAP_DATA_VIEW.setUint32(result, 0, true); - } - return envObject.clearLastError(); - } - function napi_get_value_string_utf8(env, value, buf, buf_size, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!buf) { - if (!result) - return envObject.setLastError(1); - var strLength = emnapiString.lengthBytesUTF8(handle.value); - HEAP_DATA_VIEW.setUint32(result, strLength, true); - } - else if (buf_size !== 0) { - var copied = emnapiString.stringToUTF8(handle.value, buf, buf_size); - if (result) { - HEAP_DATA_VIEW.setUint32(result, copied, true); - } - } - else if (result) { - HEAP_DATA_VIEW.setUint32(result, 0, true); - } - return envObject.clearLastError(); - } - function napi_get_value_string_utf16(env, value, buf, buf_size, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!buf) { - if (!result) - return envObject.setLastError(1); - HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); - } - else if (buf_size !== 0) { - var copied = emnapiString.stringToUTF16(handle.value, buf, buf_size * 2); - if (result) { - HEAP_DATA_VIEW.setUint32(result, copied / 2, true); - } - } - else if (result) { - HEAP_DATA_VIEW.setUint32(result, 0, true); - } - return envObject.clearLastError(); - } - function napi_get_value_uint32(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6); - } - var v = new Uint32Array([handle.value])[0]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - var convert2cMod = Object.freeze({ - __proto__: null, - napi_get_array_length: napi_get_array_length, - napi_get_arraybuffer_info: napi_get_arraybuffer_info, - napi_get_buffer_info: napi_get_buffer_info, - napi_get_dataview_info: napi_get_dataview_info, - napi_get_date_value: napi_get_date_value, - napi_get_prototype: napi_get_prototype, - napi_get_typedarray_info: napi_get_typedarray_info, - napi_get_value_bigint_int64: napi_get_value_bigint_int64, - napi_get_value_bigint_uint64: napi_get_value_bigint_uint64, - napi_get_value_bigint_words: napi_get_value_bigint_words, - napi_get_value_bool: napi_get_value_bool, - napi_get_value_double: napi_get_value_double, - napi_get_value_external: napi_get_value_external, - napi_get_value_int32: napi_get_value_int32, - napi_get_value_int64: napi_get_value_int64, - napi_get_value_string_latin1: napi_get_value_string_latin1, - napi_get_value_string_utf16: napi_get_value_string_utf16, - napi_get_value_string_utf8: napi_get_value_string_utf8, - napi_get_value_uint32: napi_get_value_uint32, - node_api_set_prototype: node_api_set_prototype - }); - function napi_create_int32(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var v = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - function napi_create_uint32(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var v = emnapiCtx.addToCurrentScope(value >>> 0).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - function napi_create_int64(env, low, high, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var value; - if (!high) - return envObject.setLastError(1); - value = Number(low); - var v1 = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(high, v1, true); - return envObject.clearLastError(); - } - function napi_create_double(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var v = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - function napi_create_string_latin1(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str, autoLength, sizeLength) { - var latin1String = ''; - var len = 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (autoLength) { - while (true) { - var ch = HEAP_DATA_VIEW.getUint8(str, true); - if (!ch) - break; - latin1String += String.fromCharCode(ch); - str++; - } - } - else { - while (len < sizeLength) { - var ch = HEAP_DATA_VIEW.getUint8(str, true); - if (!ch) - break; - latin1String += String.fromCharCode(ch); - len++; - str++; - } - } - return latin1String; - }); - } - function napi_create_string_utf16(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str) { - return emnapiString.UTF16ToString(str, length); - }); - } - function napi_create_string_utf8(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str) { - return emnapiString.UTF8ToString(str, length); - }); - } - function node_api_create_external_string_latin1(env, str, length, finalize_callback, finalize_hint, result, copied) { - return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_latin1, undefined); - } - function node_api_create_external_string_utf16(env, str, length, finalize_callback, finalize_hint, result, copied) { - return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_utf16, undefined); - } - function node_api_create_property_key_latin1(env, str, length, result) { - return napi_create_string_latin1(env, str, length, result); - } - function node_api_create_property_key_utf8(env, str, length, result) { - return napi_create_string_utf8(env, str, length, result); - } - function node_api_create_property_key_utf16(env, str, length, result) { - return napi_create_string_utf16(env, str, length, result); - } - function napi_create_bigint_int64(env, low, high, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9); - } - var value; - if (!high) - return envObject.setLastError(1); - value = low; - var v1 = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(high, v1, true); - return envObject.clearLastError(); - } - function napi_create_bigint_uint64(env, low, high, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9); - } - var value; - if (!high) - return envObject.setLastError(1); - value = low & ((BigInt(1) << BigInt(64)) - BigInt(1)); - var v1 = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(high, v1, true); - return envObject.clearLastError(); - } - function napi_create_bigint_words(env, sign_bit, word_count, words, result) { - var v, i; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9); - } - if (!result) - return envObject.setLastError(1); - word_count = word_count >>> 0; - if (word_count > 2147483647) { - return envObject.setLastError(1); - } - if (word_count > (1024 * 1024 / (4 * 8) / 2)) { - throw new RangeError('Maximum BigInt size exceeded'); - } - var value = BigInt(0); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (i = 0; i < word_count; i++) { - var low = HEAP_DATA_VIEW.getUint32(words + i * 8, true); - var high = HEAP_DATA_VIEW.getUint32(words + (i * 8 + 4), true); - var wordi = BigInt(low) | (BigInt(high) << BigInt(32)); - value += wordi << BigInt(64 * i); - } - value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1)); - v = emnapiCtx.addToCurrentScope(value).id; - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - var convert2napiMod = Object.freeze({ - __proto__: null, - napi_create_bigint_int64: napi_create_bigint_int64, - napi_create_bigint_uint64: napi_create_bigint_uint64, - napi_create_bigint_words: napi_create_bigint_words, - napi_create_double: napi_create_double, - napi_create_int32: napi_create_int32, - napi_create_int64: napi_create_int64, - napi_create_string_latin1: napi_create_string_latin1, - napi_create_string_utf16: napi_create_string_utf16, - napi_create_string_utf8: napi_create_string_utf8, - napi_create_uint32: napi_create_uint32, - node_api_create_external_string_latin1: node_api_create_external_string_latin1, - node_api_create_external_string_utf16: node_api_create_external_string_utf16, - node_api_create_property_key_latin1: node_api_create_property_key_latin1, - node_api_create_property_key_utf16: node_api_create_property_key_utf16, - node_api_create_property_key_utf8: node_api_create_property_key_utf8 - }); - function emnapiCreateFunction(envObject, utf8name, length, cb, data) { - var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length)); - var f; - var napiCallback = (wasmTable.get(cb)); - var callback = function (envObject) { - return napiCallback(envObject.id, envObject.ctx.scopeStore.currentScope.id); - }; - var makeFunction = function (envObject, callback) { - return function () { - var scope = envObject.ctx.openScope(envObject); - var callbackInfo = scope.callbackInfo; - callbackInfo.data = data; - callbackInfo.args = arguments; - callbackInfo.thiz = this; - callbackInfo.fn = f; - try { - var napiValue = envObject.callIntoModule(callback); - return (!napiValue) ? undefined : envObject.ctx.handleStore.get(napiValue).value; - } - finally { - callbackInfo.data = 0; - callbackInfo.args = undefined; - callbackInfo.thiz = undefined; - callbackInfo.fn = undefined; - envObject.ctx.closeScope(envObject, scope); - } - }; - }; - if (functionName === '') { - f = makeFunction(envObject, callback); - return { status: 0, f: f }; - } - if (!(/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(functionName))) { - return { status: 1, f: undefined }; - } - if (emnapiCtx.feature.supportNewFunction) { - var _ = makeFunction(envObject, callback); - try { - f = (new Function('_', 'return function ' + functionName + '(){' + - '"use strict";' + - 'return _.apply(this,arguments);' + - '};'))(_); - } - catch (_err) { - f = makeFunction(envObject, callback); - if (emnapiCtx.feature.canSetFunctionName) - Object.defineProperty(f, 'name', { value: functionName }); - } - } - else { - f = makeFunction(envObject, callback); - if (emnapiCtx.feature.canSetFunctionName) - Object.defineProperty(f, 'name', { value: functionName }); - } - return { status: 0, f: f }; - } - function emnapiDefineProperty(envObject, obj, propertyName, method, getter, setter, value, attributes, data) { - if (getter || setter) { - var localGetter = void 0; - var localSetter = void 0; - if (getter) { - localGetter = emnapiCreateFunction(envObject, 0, 0, getter, data).f; - } - if (setter) { - localSetter = emnapiCreateFunction(envObject, 0, 0, setter, data).f; - } - var desc = { - configurable: (attributes & 4) !== 0, - enumerable: (attributes & 2) !== 0, - get: localGetter, - set: localSetter - }; - Object.defineProperty(obj, propertyName, desc); - } - else if (method) { - var localMethod = emnapiCreateFunction(envObject, 0, 0, method, data).f; - var desc = { - configurable: (attributes & 4) !== 0, - enumerable: (attributes & 2) !== 0, - writable: (attributes & 1) !== 0, - value: localMethod - }; - Object.defineProperty(obj, propertyName, desc); - } - else { - var desc = { - configurable: (attributes & 4) !== 0, - enumerable: (attributes & 2) !== 0, - writable: (attributes & 1) !== 0, - value: emnapiCtx.handleStore.get(value).value - }; - Object.defineProperty(obj, propertyName, desc); - } - } - function emnapiGetHandle(js_object) { - var handle = emnapiCtx.handleStore.get(js_object); - if (!(handle.isObject() || handle.isFunction())) { - return { status: 1 }; - } - if (typeof emnapiExternalMemory !== 'undefined' && ArrayBuffer.isView(handle.value)) { - if (emnapiExternalMemory.wasmMemoryViewTable.has(handle.value)) { - handle = emnapiCtx.addToCurrentScope(emnapiExternalMemory.wasmMemoryViewTable.get(handle.value)); - } - } - return { status: 0, handle: handle }; - } - function emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { - var referenceId; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!emnapiCtx.feature.supportFinalizer) { - if (finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "finalize_cb" must be 0(NULL)'); - } - if (result) { - throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "result" must be 0(NULL)'); - } - } - if (!js_object) - return envObject.setLastError(1); - var handleResult = emnapiGetHandle(js_object); - if (handleResult.status !== 0) { - return envObject.setLastError(handleResult.status); - } - var handle = handleResult.handle; - if (envObject.getObjectBinding(handle.value).wrapped !== 0) { - return envObject.setLastError(1); - } - var reference = void 0; - if (result) { - if (!finalize_cb) - return envObject.setLastError(1); - reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint); - referenceId = reference.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, referenceId, true); - } - else { - if (finalize_cb) { - reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 0, finalize_cb, native_object, finalize_hint); - } - else { - reference = emnapiCtx.createReferenceWithData(envObject, handle.id, 0, 0, native_object); - } - } - envObject.getObjectBinding(handle.value).wrapped = reference.id; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function emnapiUnwrap(env, js_object, result, action) { - var data; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!js_object) - return envObject.setLastError(1); - if (action === 0) { - if (!result) - return envObject.setLastError(1); - } - var value = emnapiCtx.handleStore.get(js_object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(1); - } - var binding = envObject.getObjectBinding(value.value); - var referenceId = binding.wrapped; - var ref = emnapiCtx.refStore.get(referenceId); - if (!ref) - return envObject.setLastError(1); - if (result) { - data = ref.data(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, data, true); - } - if (action === 1) { - binding.wrapped = 0; - if (ref.ownership() === 1) { - ref.resetFinalizer(); - } - else { - ref.dispose(); - } - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_define_class(env, utf8name, length, constructor, callback_data, property_count, properties, result) { - var propPtr, valueHandleId, attributes; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!constructor) - return envObject.setLastError(1); - property_count = property_count >>> 0; - if (property_count > 0) { - if (!properties) - return envObject.setLastError(1); - } - if ((length < -1) || (length > 2147483647) || (!utf8name)) { - return envObject.setLastError(1); - } - var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data); - if (fresult.status !== 0) - return envObject.setLastError(fresult.status); - var F = fresult.f; - var propertyName = void 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < property_count; i++) { - propPtr = properties + (i * (4 * 8)); - var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); - var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); - var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); - var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); - var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); - var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); - attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); - var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); - if (utf8Name) { - propertyName = emnapiString.UTF8ToString(utf8Name, -1); - } - else { - if (!name_1) { - return envObject.setLastError(4); - } - propertyName = emnapiCtx.handleStore.get(name_1).value; - if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { - return envObject.setLastError(4); - } - } - if ((attributes & 1024) !== 0) { - emnapiDefineProperty(envObject, F, propertyName, method, getter, setter, value, attributes, data); - continue; - } - emnapiDefineProperty(envObject, F.prototype, propertyName, method, getter, setter, value, attributes, data); - } - var valueHandle = emnapiCtx.addToCurrentScope(F); - valueHandleId = valueHandle.id; - HEAP_DATA_VIEW.setUint32(result, valueHandleId, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_wrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { - return emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result); - } - function napi_unwrap(env, js_object, result) { - return emnapiUnwrap(env, js_object, result, 0); - } - function napi_remove_wrap(env, js_object, result) { - return emnapiUnwrap(env, js_object, result, 1); - } - function napi_type_tag_object(env, object, type_tag) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!object) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); - } - var value = emnapiCtx.handleStore.get(object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2); - } - if (!type_tag) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); - } - var binding = envObject.getObjectBinding(value.value); - if (binding.tag !== null) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); - } - var tag = new Uint8Array(16); - tag.set(new Uint8Array(wasmMemory.buffer, type_tag, 16)); - binding.tag = new Uint32Array(tag.buffer); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_check_object_type_tag(env, object, type_tag, result) { - var ret = true; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!object) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); - } - var value = emnapiCtx.handleStore.get(object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2); - } - if (!type_tag) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); - } - if (!result) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); - } - var binding = envObject.getObjectBinding(value.value); - if (binding.tag !== null) { - var tag = binding.tag; - var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4); - ret = (tag[0] === typeTag[0] && - tag[1] === typeTag[1] && - tag[2] === typeTag[2] && - tag[3] === typeTag[3]); - } - else { - ret = false; - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_add_finalizer(env, js_object, finalize_data, finalize_cb, finalize_hint, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportFinalizer) { - return envObject.setLastError(9); - } - if (!js_object) - return envObject.setLastError(1); - if (!finalize_cb) - return envObject.setLastError(1); - var handleResult = emnapiGetHandle(js_object); - if (handleResult.status !== 0) { - return envObject.setLastError(handleResult.status); - } - var handle = handleResult.handle; - var ownership = !result ? 0 : 1; - var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint); - if (result) { - var referenceId = reference.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, referenceId, true); - } - return envObject.clearLastError(); - } - function node_api_post_finalizer(env, finalize_cb, finalize_data, finalize_hint) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.enqueueFinalizer(emnapiCtx.createTrackedFinalizer(envObject, finalize_cb, finalize_data, finalize_hint)); - return envObject.clearLastError(); - } - var wrapMod = Object.freeze({ - __proto__: null, - napi_add_finalizer: napi_add_finalizer, - napi_check_object_type_tag: napi_check_object_type_tag, - napi_define_class: napi_define_class, - napi_remove_wrap: napi_remove_wrap, - napi_type_tag_object: napi_type_tag_object, - napi_unwrap: napi_unwrap, - napi_wrap: napi_wrap, - node_api_post_finalizer: node_api_post_finalizer - }); - function emnapi_create_memory_view(env, typedarray_type, external_data, byte_length, finalize_cb, finalize_hint, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - byte_length = byte_length >>> 0; - if (!external_data) { - byte_length = 0; - } - if (byte_length > 2147483647) { - throw new RangeError('Cannot create a memory view larger than 2147483647 bytes'); - } - if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { - throw new RangeError('Memory out of range'); - } - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('emnapi_create_memory_view', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var viewDescriptor = void 0; - switch (typedarray_type) { - case 0: - viewDescriptor = { Ctor: Int8Array, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; - break; - case 1: - viewDescriptor = { Ctor: Uint8Array, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; - break; - case 2: - viewDescriptor = { Ctor: Uint8ClampedArray, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; - break; - case 3: - viewDescriptor = { Ctor: Int16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 }; - break; - case 4: - viewDescriptor = { Ctor: Uint16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 }; - break; - case 5: - viewDescriptor = { Ctor: Int32Array, address: external_data, length: byte_length >> 2, ownership: 1, runtimeAllocated: 0 }; - break; - case 6: - viewDescriptor = { Ctor: Uint32Array, address: external_data, length: byte_length >> 2, ownership: 1, runtimeAllocated: 0 }; - break; - case 7: - viewDescriptor = { Ctor: Float32Array, address: external_data, length: byte_length >> 2, ownership: 1, runtimeAllocated: 0 }; - break; - case 8: - viewDescriptor = { Ctor: Float64Array, address: external_data, length: byte_length >> 3, ownership: 1, runtimeAllocated: 0 }; - break; - case 9: - viewDescriptor = { Ctor: BigInt64Array, address: external_data, length: byte_length >> 3, ownership: 1, runtimeAllocated: 0 }; - break; - case 10: - viewDescriptor = { Ctor: BigUint64Array, address: external_data, length: byte_length >> 3, ownership: 1, runtimeAllocated: 0 }; - break; - case -1: - viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; - break; - case 11: - if (typeof Float16Array !== 'function') { - return envObject.setLastError(1); - } - viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 }; - break; - case -2: { - if (!emnapiCtx.feature.Buffer) { - throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', ''); - } - viewDescriptor = { Ctor: emnapiCtx.feature.Buffer, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; - break; - } - default: return envObject.setLastError(1); - } - var Ctor = viewDescriptor.Ctor; - var typedArray = typedarray_type === -2 - ? emnapiCtx.feature.Buffer.from(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length) - : new Ctor(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length); - var handle = emnapiCtx.addToCurrentScope(typedArray); - emnapiExternalMemory.wasmMemoryViewTable.set(typedArray, viewDescriptor); - if (finalize_cb) { - var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, 0); - if (status_1 === 10) { - var err = envObject.tryCatch.extractException(); - envObject.clearLastError(); - throw err; - } - else if (status_1 !== 0) { - return envObject.setLastError(status_1); - } - } - value = handle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function emnapi_is_support_weakref() { - return emnapiCtx.feature.supportFinalizer ? 1 : 0; - } - function emnapi_is_support_bigint() { - return emnapiCtx.feature.supportBigInt ? 1 : 0; - } - function emnapi_is_node_binding_available() { - return emnapiNodeBinding ? 1 : 0; - } - function $emnapiSyncMemory(js_to_wasm, arrayBufferOrView, offset, len) { - offset = offset !== null && offset !== void 0 ? offset : 0; - offset = offset >>> 0; - var view; - if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { - var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address; - if (!pointer) - throw new Error('Unknown ArrayBuffer address'); - if (typeof len !== 'number' || len === -1) { - len = arrayBufferOrView.byteLength - offset; - } - len = len >>> 0; - if (len === 0) - return arrayBufferOrView; - view = new Uint8Array(arrayBufferOrView, offset, len); - var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); - if (!js_to_wasm) { - view.set(wasmMemoryU8.subarray(pointer, pointer + len)); - } - else { - wasmMemoryU8.set(view, pointer); - } - return arrayBufferOrView; - } - if (ArrayBuffer.isView(arrayBufferOrView)) { - var viewPointerInfo = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); - var latestView = viewPointerInfo.view; - var pointer = viewPointerInfo.address; - if (!pointer) - throw new Error('Unknown ArrayBuffer address'); - if (typeof len !== 'number' || len === -1) { - len = latestView.byteLength - offset; - } - len = len >>> 0; - if (len === 0) - return latestView; - view = new Uint8Array(latestView.buffer, latestView.byteOffset + offset, len); - var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); - if (!js_to_wasm) { - view.set(wasmMemoryU8.subarray(pointer, pointer + len)); - } - else { - wasmMemoryU8.set(view, pointer); - } - return latestView; - } - throw new TypeError('emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter'); - } - function emnapi_sync_memory(env, js_to_wasm, arraybuffer_or_view, offset, len) { - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!arraybuffer_or_view) - return envObject.setLastError(1); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true); - var handle = envObject.ctx.handleStore.get(handleId); - if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { - return envObject.setLastError(1); - } - var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len); - if (handle.value !== ret) { - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function $emnapiGetMemoryAddress(arrayBufferOrView) { - var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer; - var isDataView = arrayBufferOrView instanceof DataView; - var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView; - if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { - throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter'); - } - var info; - if (isArrayBuffer) { - info = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false); - } - else { - info = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); - } - return { - address: info.address, - ownership: info.ownership, - runtimeAllocated: info.runtimeAllocated - }; - } - function emnapi_get_memory_address(env, arraybuffer_or_view, address, ownership, runtime_allocated) { - var p, runtimeAllocated, ownershipOut; - var info; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!arraybuffer_or_view) - return envObject.setLastError(1); - if (!address && !ownership && !runtime_allocated) { - return envObject.setLastError(1); - } - var handle = envObject.ctx.handleStore.get(arraybuffer_or_view); - info = $emnapiGetMemoryAddress(handle.value); - p = info.address; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (address) { - HEAP_DATA_VIEW.setUint32(address, p, true); - } - if (ownership) { - ownershipOut = info.ownership; - HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true); - } - if (runtime_allocated) { - runtimeAllocated = info.runtimeAllocated; - HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function emnapi_get_runtime_version(env, version) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!version) - return envObject.setLastError(1); - var runtimeVersion; - try { - runtimeVersion = emnapiCtx.getRuntimeVersions().version; - } - catch (_) { - return envObject.setLastError(9); - } - var versions = runtimeVersion.split('.') - .map(function (n) { return Number(n); }); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(version, versions[0], true); - HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true); - HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true); - return envObject.clearLastError(); - } - var emnapiMod = Object.freeze({ - __proto__: null, - $emnapiGetMemoryAddress: $emnapiGetMemoryAddress, - $emnapiSyncMemory: $emnapiSyncMemory, - emnapi_create_memory_view: emnapi_create_memory_view, - emnapi_get_memory_address: emnapi_get_memory_address, - emnapi_get_runtime_version: emnapi_get_runtime_version, - emnapi_is_node_binding_available: emnapi_is_node_binding_available, - emnapi_is_support_bigint: emnapi_is_support_bigint, - emnapi_is_support_weakref: emnapi_is_support_weakref, - emnapi_sync_memory: emnapi_sync_memory - }); - function napi_create_array(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var value = emnapiCtx.addToCurrentScope([]).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_create_array_with_length(env, length, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - length = length >>> 0; - var value = emnapiCtx.addToCurrentScope(new Array(length)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function emnapiCreateArrayBuffer(byte_length, data, shared) { - byte_length = byte_length >>> 0; - var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length); - if (data) { - var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(data, p, true); - } - return arrayBuffer; - } - function napi_create_arraybuffer(env, byte_length, data, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false); - value = emnapiCtx.addToCurrentScope(arrayBuffer).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function node_api_create_sharedarraybuffer(env, byte_length, data, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true); - value = emnapiCtx.addToCurrentScope(arrayBuffer).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_date(env, time, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - value = emnapiCtx.addToCurrentScope(new Date(time)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_external(env, data, finalize_cb, finalize_hint, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_create_external', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var externalHandle = emnapiCtx.getCurrentScope().addExternal(data); - if (finalize_cb) { - emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint); - } - value = externalHandle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_external_arraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - byte_length = byte_length >>> 0; - if (!external_data) { - byte_length = 0; - } - if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { - throw new RangeError('Memory out of range'); - } - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_create_external_arraybuffer', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var arrayBuffer = new ArrayBuffer(byte_length); - if (byte_length === 0) { - try { - var MessageChannel_1 = emnapiCtx.feature.MessageChannel; - var messageChannel = new MessageChannel_1(); - messageChannel.port1.postMessage(arrayBuffer, [arrayBuffer]); - } - catch (_) { } - } - else { - var u8arr = new Uint8Array(arrayBuffer); - u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length)); - emnapiExternalMemory.table.set(arrayBuffer, { - address: external_data, - ownership: 1, - runtimeAllocated: 0 - }); - } - var handle = emnapiCtx.addToCurrentScope(arrayBuffer); - if (finalize_cb) { - var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, 0); - if (status_1 === 10) { - var err = envObject.tryCatch.extractException(); - envObject.clearLastError(); - throw err; - } - else if (status_1 !== 0) { - return envObject.setLastError(status_1); - } - } - value = handle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_object(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var value = emnapiCtx.addToCurrentScope({}).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - property_count = property_count >>> 0; - if (property_count > 0) { - if (!property_names) - return envObject.setLastError(1); - if (!property_values) - return envObject.setLastError(1); - } - var v8_prototype_or_null = prototype_or_null - ? emnapiCtx.handleStore.get(prototype_or_null).value - : null; - var properties = {}; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < property_count; i++) { - var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value; - if (!(typeof name_value === "string" || typeof name_value === "symbol")) - return envObject.setLastError(4); - properties[name_value] = { - value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value, - writable: true, - enumerable: true, - configurable: true - }; - } - var obj; - try { - obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties); - } - catch (_) { - return envObject.setLastError(9); - } - var value = emnapiCtx.addToCurrentScope(obj).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_create_symbol(env, description, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!description) { - var value = emnapiCtx.addToCurrentScope(Symbol()).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - } - else { - var handle = emnapiCtx.handleStore.get(description); - var desc = handle.value; - if (typeof desc !== 'string') { - return envObject.setLastError(3); - } - var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id; - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.clearLastError(); - } - function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer()) { - return envObject.setLastError(1); - } - var buffer = handle.value; - var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) { - var _a; - byte_offset = byte_offset >>> 0; - length = length >>> 0; - if (size_of_element > 1) { - if ((byte_offset) % (size_of_element) !== 0) { - var err = new RangeError("start offset of ".concat((_a = Type.name) !== null && _a !== void 0 ? _a : '', " should be a multiple of ").concat(size_of_element)); - err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT'; - envObject.tryCatch.setError(err); - return envObject.setLastError(9); - } - } - if (((length * size_of_element) + byte_offset) > buffer.byteLength) { - var err = new RangeError('Invalid typed array length'); - err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_LENGTH'; - envObject.tryCatch.setError(err); - return envObject.setLastError(9); - } - var out = new Type(buffer, byte_offset, length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { - emnapiExternalMemory.wasmMemoryViewTable.set(out, { - Ctor: Type, - address: byte_offset, - length: length, - ownership: 1, - runtimeAllocated: 0 - }); - } - } - value = emnapiCtx.addToCurrentScope(out).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - }; - switch (type) { - case 0: - return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length); - case 1: - return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length); - case 2: - return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length); - case 3: - return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length); - case 4: - return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length); - case 5: - return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length); - case 6: - return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length); - case 7: - return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length); - case 8: - return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length); - case 9: - return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length); - case 10: - return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length); - case 11: - if (typeof Float16Array !== 'function') { - return envObject.setLastError(1); - } - return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length); - default: - return envObject.setLastError(1); - } - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_buffer(env, size, data, result) { - var _a; - var value, pointer; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', ''); - } - var buffer = void 0; - size = size >>> 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!data || (size === 0)) { - buffer = Buffer.alloc(size); - value = emnapiCtx.addToCurrentScope(buffer).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - } - else { - pointer = _malloc(size); - if (!pointer) - throw new Error('Out of memory'); - new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0); - var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size); - var viewDescriptor = { - Ctor: Buffer, - address: pointer, - length: size, - ownership: emnapiExternalMemory.registry ? 0 : 1, - runtimeAllocated: 1 - }; - emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor); - (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer); - value = emnapiCtx.addToCurrentScope(buffer_1).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - HEAP_DATA_VIEW.setUint32(data, pointer, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_buffer_copy(env, length, data, result_data, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', ''); - } - var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false); - var buffer = Buffer.from(arrayBuffer); - buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length)); - value = emnapiCtx.addToCurrentScope(buffer).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_external_buffer(env, length, data, finalize_cb, finalize_hint, result) { - return emnapi_create_memory_view(env, -2, data, length, finalize_cb, finalize_hint, result); - } - function node_api_create_buffer_from_arraybuffer(env, arraybuffer, byte_offset, byte_length, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - byte_offset = byte_offset >>> 0; - byte_length = byte_length >>> 0; - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer()) { - return envObject.setLastError(1); - } - var buffer = handle.value; - if ((byte_length + byte_offset) > buffer.byteLength) { - var err = new RangeError('The byte offset + length is out of range'); - err.code = 'ERR_OUT_OF_RANGE'; - throw err; - } - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('node_api_create_buffer_from_arraybuffer', ''); - } - var out = Buffer.from(buffer, byte_offset, byte_length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { - emnapiExternalMemory.wasmMemoryViewTable.set(out, { - Ctor: Buffer, - address: byte_offset, - length: byte_length, - ownership: 1, - runtimeAllocated: 0 - }); - } - } - value = emnapiCtx.addToCurrentScope(out).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - byte_length = byte_length >>> 0; - byte_offset = byte_offset >>> 0; - var value = emnapiCtx.handleStore.get(arraybuffer).value; - var createDataview = function (buffer) { - if ((byte_length + byte_offset) > buffer.byteLength) { - var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in'); - err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS'; - throw err; - } - var dataview = new DataView(buffer, byte_offset, byte_length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) { - emnapiExternalMemory.wasmMemoryViewTable.set(dataview, { - Ctor: DataView, - address: byte_offset, - length: byte_length, - ownership: 1, - runtimeAllocated: 0 - }); - } - } - var v = emnapiCtx.addToCurrentScope(dataview).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - }; - if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) { - return createDataview(value); - } - else { - return envObject.setLastError(1); - } - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function node_api_symbol_for(env, utf8description, length, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!utf8description) - return envObject.setLastError(1); - } - if (!(autoLength || (sizelength <= 2147483647))) { - return envObject.setLastError(1); - } - var descriptionString = emnapiString.UTF8ToString(utf8description, length); - var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - var createMod = Object.freeze({ - __proto__: null, - napi_create_array: napi_create_array, - napi_create_array_with_length: napi_create_array_with_length, - napi_create_arraybuffer: napi_create_arraybuffer, - napi_create_buffer: napi_create_buffer, - napi_create_buffer_copy: napi_create_buffer_copy, - napi_create_dataview: napi_create_dataview, - napi_create_date: napi_create_date, - napi_create_external: napi_create_external, - napi_create_external_arraybuffer: napi_create_external_arraybuffer, - napi_create_external_buffer: napi_create_external_buffer, - napi_create_object: napi_create_object, - napi_create_object_with_properties: napi_create_object_with_properties, - napi_create_symbol: napi_create_symbol, - napi_create_typedarray: napi_create_typedarray, - node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer, - node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer, - node_api_symbol_for: node_api_symbol_for - }); - function napi_get_boolean(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var v = value === 0 ? 3 : 4; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - function napi_get_global(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var value = 5; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_get_null(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var value = 2; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_get_undefined(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var value = 1; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - var globalMod = Object.freeze({ - __proto__: null, - napi_get_boolean: napi_get_boolean, - napi_get_global: napi_get_global, - napi_get_null: napi_get_null, - napi_get_undefined: napi_get_undefined - }); - function napi_set_instance_data(env, data, finalize_cb, finalize_hint) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.setInstanceData(data, finalize_cb, finalize_hint); - return envObject.clearLastError(); - } - function napi_get_instance_data(env, data) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!data) - return envObject.setLastError(1); - var value = envObject.getInstanceData(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(data, value, true); - return envObject.clearLastError(); - } - var envMod = Object.freeze({ - __proto__: null, - napi_get_instance_data: napi_get_instance_data, - napi_set_instance_data: napi_set_instance_data - }); - function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) { - var envObject = emnapiCtx.envStore.get(env); - var lastError = envObject.lastError; - var errorCode = lastError.errorCode; - var engineErrorCode = lastError.engineErrorCode >>> 0; - var engineReserved = lastError.engineReserved; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(error_code, errorCode, true); - HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true); - HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true); - } - function napi_throw(env, error) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!error) - return envObject.setLastError(1); - envObject.tryCatch.setError(emnapiCtx.handleStore.get(error).value); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_throw_error(env, code, msg) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1); - var error = new Error(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_throw_type_error(env, code, msg) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1); - var error = new TypeError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_throw_range_error(env, code, msg) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1); - var error = new RangeError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function node_api_throw_syntax_error(env, code, msg) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1); - var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_is_exception_pending(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var r = envObject.tryCatch.hasCaught(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - return envObject.clearLastError(); - } - function napi_create_error(env, code, msg, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3); - } - var error = new Error(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3); - } - error.code = codeValue; - } - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_create_type_error(env, code, msg, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3); - } - var error = new TypeError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3); - } - error.code = codeValue; - } - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_create_range_error(env, code, msg, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3); - } - var error = new RangeError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3); - } - error.code = codeValue; - } - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function node_api_create_syntax_error(env, code, msg, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3); - } - var error = new SyntaxError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3); - } - error.code = codeValue; - } - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_get_and_clear_last_exception(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!envObject.tryCatch.hasCaught()) { - HEAP_DATA_VIEW.setUint32(result, 1, true); - return envObject.clearLastError(); - } - else { - var err = envObject.tryCatch.exception(); - var value = envObject.ensureHandleId(err); - HEAP_DATA_VIEW.setUint32(result, value, true); - envObject.tryCatch.reset(); - } - return envObject.clearLastError(); - } - function napi_fatal_error(location, location_len, message, message_len) { - var locationStr = emnapiString.UTF8ToString(location, location_len); - var messageStr = emnapiString.UTF8ToString(message, message_len); - if (emnapiNodeBinding) { - emnapiNodeBinding.napi.fatalError(locationStr, messageStr); - } - else { - abort('FATAL ERROR: ' + locationStr + ' ' + messageStr); - } - } - function napi_fatal_exception(env, err) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!err) - return envObject.setLastError(1); - var error = envObject.ctx.handleStore.get(err); - try { - envObject.triggerFatalException(error.value); - } - catch (_) { - return envObject.setLastError(9); - } - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - var errorMod = Object.freeze({ - __proto__: null, - _emnapi_get_last_error_info: _emnapi_get_last_error_info, - napi_create_error: napi_create_error, - napi_create_range_error: napi_create_range_error, - napi_create_type_error: napi_create_type_error, - napi_fatal_error: napi_fatal_error, - napi_fatal_exception: napi_fatal_exception, - napi_get_and_clear_last_exception: napi_get_and_clear_last_exception, - napi_is_exception_pending: napi_is_exception_pending, - napi_throw: napi_throw, - napi_throw_error: napi_throw_error, - napi_throw_range_error: napi_throw_range_error, - napi_throw_type_error: napi_throw_type_error, - node_api_create_syntax_error: node_api_create_syntax_error, - node_api_throw_syntax_error: node_api_throw_syntax_error - }); - function napi_create_function(env, utf8name, length, cb, data, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!cb) - return envObject.setLastError(1); - var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data); - if (fresult.status !== 0) - return envObject.setLastError(fresult.status); - var f = fresult.f; - var valueHandle = emnapiCtx.addToCurrentScope(f); - value = valueHandle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_cb_info(env, cbinfo, argc, argv, this_arg, data) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!cbinfo) - return envObject.setLastError(1); - var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (argv) { - if (!argc) - return envObject.setLastError(1); - var argcValue = HEAP_DATA_VIEW.getUint32(argc, true); - var len = cbinfoValue.args.length; - var arrlen = argcValue < len ? argcValue : len; - var i = 0; - for (; i < arrlen; i++) { - var argVal = envObject.ensureHandleId(cbinfoValue.args[i]); - HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true); - } - if (i < argcValue) { - for (; i < argcValue; i++) { - HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true); - } - } - } - if (argc) { - HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true); - } - if (this_arg) { - var v = envObject.ensureHandleId(cbinfoValue.thiz); - HEAP_DATA_VIEW.setUint32(this_arg, v, true); - } - if (data) { - HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true); - } - return envObject.clearLastError(); - } - function napi_call_function(env, recv, func, argc, argv, result) { - var i = 0; - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!recv) - return envObject.setLastError(1); - argc = argc >>> 0; - if (argc > 0) { - if (!argv) - return envObject.setLastError(1); - } - var v8recv = emnapiCtx.handleStore.get(recv).value; - if (!func) - return envObject.setLastError(1); - var v8func = emnapiCtx.handleStore.get(func).value; - if (typeof v8func !== 'function') - return envObject.setLastError(1); - var args = []; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - args.push(emnapiCtx.handleStore.get(argVal).value); - } - var ret = v8func.apply(v8recv, args); - if (result) { - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_new_instance(env, constructor, argc, argv, result) { - var i; - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!constructor) - return envObject.setLastError(1); - argc = argc >>> 0; - if (argc > 0) { - if (!argv) - return envObject.setLastError(1); - } - if (!result) - return envObject.setLastError(1); - var Ctor = emnapiCtx.handleStore.get(constructor).value; - if (typeof Ctor !== 'function') - return envObject.setLastError(1); - var ret = void 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (emnapiCtx.feature.supportReflect) { - var argList = Array(argc); - for (i = 0; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - argList[i] = emnapiCtx.handleStore.get(argVal).value; - } - ret = Reflect.construct(Ctor, argList, Ctor); - } - else { - var args = Array(argc + 1); - args[0] = undefined; - for (i = 0; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - args[i + 1] = emnapiCtx.handleStore.get(argVal).value; - } - var BoundCtor = Ctor.bind.apply(Ctor, args); - ret = new BoundCtor(); - } - if (result) { - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_new_target(env, cbinfo, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!cbinfo) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; - var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn; - var value = thiz == null || thiz.constructor == null - ? 0 - : thiz instanceof fn - ? envObject.ensureHandleId(thiz.constructor) - : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - var functionMod = Object.freeze({ - __proto__: null, - napi_call_function: napi_call_function, - napi_create_function: napi_create_function, - napi_get_cb_info: napi_get_cb_info, - napi_get_new_target: napi_get_new_target, - napi_new_instance: napi_new_instance - }); - function napi_open_handle_scope(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var scope = emnapiCtx.openScope(envObject); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, scope.id, true); - return envObject.clearLastError(); - } - function napi_close_handle_scope(env, scope) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1); - if ((envObject.openHandleScopes === 0)) { - return 13; - } - emnapiCtx.closeScope(envObject); - return envObject.clearLastError(); - } - function napi_open_escapable_handle_scope(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var scope = emnapiCtx.openScope(envObject); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, scope.id, true); - return envObject.clearLastError(); - } - function napi_close_escapable_handle_scope(env, scope) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1); - if ((envObject.openHandleScopes === 0)) { - return 13; - } - emnapiCtx.closeScope(envObject); - return envObject.clearLastError(); - } - function napi_escape_handle(env, scope, escapee, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1); - if (!escapee) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var scopeObject = emnapiCtx.scopeStore.get(scope); - if (!scopeObject.escapeCalled()) { - var newHandle = scopeObject.escape(escapee); - var value = newHandle ? newHandle.id : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - return envObject.setLastError(12); - } - function napi_create_reference(env, value, initial_refcount, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (envObject.moduleApiVersion < 10) { - if (!(handle.isObject() || handle.isFunction() || handle.isSymbol())) { - return envObject.setLastError(1); - } - } - var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, ref.id, true); - return envObject.clearLastError(); - } - function napi_delete_reference(env, ref) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!ref) - return envObject.setLastError(1); - emnapiCtx.refStore.get(ref).dispose(); - return envObject.clearLastError(); - } - function napi_reference_ref(env, ref, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1); - var count = emnapiCtx.refStore.get(ref).ref(); - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, count, true); - } - return envObject.clearLastError(); - } - function napi_reference_unref(env, ref, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1); - var reference = emnapiCtx.refStore.get(ref); - var refcount = reference.refcount(); - if (refcount === 0) { - return envObject.setLastError(9); - } - var count = reference.unref(); - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, count, true); - } - return envObject.clearLastError(); - } - function napi_get_reference_value(env, ref, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var reference = emnapiCtx.refStore.get(ref); - var handleId = reference.get(envObject); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, handleId, true); - return envObject.clearLastError(); - } - function napi_add_env_cleanup_hook(env, fun, arg) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!fun) - return envObject.setLastError(1); - emnapiCtx.addCleanupHook(envObject, fun, arg); - return 0; - } - function napi_remove_env_cleanup_hook(env, fun, arg) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!fun) - return envObject.setLastError(1); - emnapiCtx.removeCleanupHook(envObject, fun, arg); - return 0; - } - function _emnapi_env_ref(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.ref(); - } - function _emnapi_env_unref(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.unref(); - } - var lifeMod = Object.freeze({ - __proto__: null, - _emnapi_env_ref: _emnapi_env_ref, - _emnapi_env_unref: _emnapi_env_unref, - napi_add_env_cleanup_hook: napi_add_env_cleanup_hook, - napi_close_escapable_handle_scope: napi_close_escapable_handle_scope, - napi_close_handle_scope: napi_close_handle_scope, - napi_create_reference: napi_create_reference, - napi_delete_reference: napi_delete_reference, - napi_escape_handle: napi_escape_handle, - napi_get_reference_value: napi_get_reference_value, - napi_open_escapable_handle_scope: napi_open_escapable_handle_scope, - napi_open_handle_scope: napi_open_handle_scope, - napi_reference_ref: napi_reference_ref, - napi_reference_unref: napi_reference_unref, - napi_remove_env_cleanup_hook: napi_remove_env_cleanup_hook - }); - function _emnapi_get_filename(env, buf, len) { - var envObject = emnapiCtx.envStore.get(env); - var filename = envObject.filename; - if (!buf) { - return emnapiString.lengthBytesUTF8(filename); - } - return emnapiString.stringToUTF8(filename, buf, len); - } - var miscellaneousMod = Object.freeze({ - __proto__: null, - _emnapi_get_filename: _emnapi_get_filename - }); - function napi_create_promise(env, deferred, promise) { - var deferredObjectId, value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1); - if (!promise) - return envObject.setLastError(1); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var p = new Promise(function (resolve, reject) { - var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject }); - deferredObjectId = deferredObject.id; - HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true); - }); - value = emnapiCtx.addToCurrentScope(p).id; - HEAP_DATA_VIEW.setUint32(promise, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_resolve_deferred(env, deferred, resolution) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1); - if (!resolution) - return envObject.setLastError(1); - var deferredObject = emnapiCtx.deferredStore.get(deferred); - deferredObject.resolve(emnapiCtx.handleStore.get(resolution).value); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_reject_deferred(env, deferred, resolution) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1); - if (!resolution) - return envObject.setLastError(1); - var deferredObject = emnapiCtx.deferredStore.get(deferred); - deferredObject.reject(emnapiCtx.handleStore.get(resolution).value); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_is_promise(env, value, is_promise) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!is_promise) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isPromise() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(is_promise, r, true); - return envObject.clearLastError(); - } - var promiseMod = Object.freeze({ - __proto__: null, - napi_create_promise: napi_create_promise, - napi_is_promise: napi_is_promise, - napi_reject_deferred: napi_reject_deferred, - napi_resolve_deferred: napi_resolve_deferred - }); - function napi_get_all_property_names(env, object, key_mode, key_filter, key_conversion, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var obj = void 0; - try { - obj = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - if (key_mode !== 0 && key_mode !== 1) { - return envObject.setLastError(1); - } - if (key_conversion !== 0 && key_conversion !== 1) { - return envObject.setLastError(1); - } - var props = []; - var names = void 0; - var symbols = void 0; - var i = void 0; - var own = true; - var integerIndiceRegex = /^(0|[1-9][0-9]*)$/; - do { - names = Object.getOwnPropertyNames(obj); - symbols = Object.getOwnPropertySymbols(obj); - for (i = 0; i < names.length; i++) { - props.push({ - name: integerIndiceRegex.test(names[i]) ? Number(names[i]) : names[i], - desc: Object.getOwnPropertyDescriptor(obj, names[i]), - own: own - }); - } - for (i = 0; i < symbols.length; i++) { - props.push({ - name: symbols[i], - desc: Object.getOwnPropertyDescriptor(obj, symbols[i]), - own: own - }); - } - if (key_mode === 1) { - break; - } - obj = Object.getPrototypeOf(obj); - own = false; - } while (obj); - var ret = []; - var addName = function (ret, name, key_filter, conversion_mode) { - if (ret.indexOf(name) !== -1) - return; - if (conversion_mode === 0) { - ret.push(name); - } - else if (conversion_mode === 1) { - var realName = typeof name === 'number' ? String(name) : name; - if (typeof realName === 'string') { - if (!(key_filter & 8)) { - ret.push(realName); - } - } - else { - ret.push(realName); - } - } - }; - for (i = 0; i < props.length; i++) { - var prop = props[i]; - var name_1 = prop.name; - var desc = prop.desc; - if (key_filter === 0) { - addName(ret, name_1, key_filter, key_conversion); - } - else { - if (key_filter & 8 && typeof name_1 === 'string') { - continue; - } - if (key_filter & 16 && typeof name_1 === 'symbol') { - continue; - } - var shouldAdd = true; - switch (key_filter & 7) { - case 1: { - shouldAdd = Boolean(desc.writable); - break; - } - case 2: { - shouldAdd = Boolean(desc.enumerable); - break; - } - case (1 | 2): { - shouldAdd = Boolean(desc.writable && desc.enumerable); - break; - } - case 4: { - shouldAdd = Boolean(desc.configurable); - break; - } - case (4 | 1): { - shouldAdd = Boolean(desc.configurable && desc.writable); - break; - } - case (4 | 2): { - shouldAdd = Boolean(desc.configurable && desc.enumerable); - break; - } - case (4 | 2 | 1): { - shouldAdd = Boolean(desc.configurable && desc.enumerable && desc.writable); - break; - } - } - if (shouldAdd) { - addName(ret, name_1, key_filter, key_conversion); - } - } - } - value = emnapiCtx.addToCurrentScope(ret).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_property_names(env, object, result) { - return napi_get_all_property_names(env, object, 0, 2 | 16, 1, result); - } - function napi_set_property(env, object, key, value) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1); - if (!value) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - h.value[emnapiCtx.handleStore.get(key).value] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_has_property(env, object, key, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_property(env, object, key, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_delete_property(env, object, key, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - var propertyKey = emnapiCtx.handleStore.get(key).value; - if (emnapiCtx.feature.supportReflect) { - r = Reflect.deleteProperty(h.value, propertyKey); - } - else { - try { - r = delete h.value[propertyKey]; - } - catch (_) { - r = false; - } - } - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_has_own_property(env, object, key, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - var prop = emnapiCtx.handleStore.get(key).value; - if (typeof prop !== 'string' && typeof prop !== 'symbol') { - return envObject.setLastError(4); - } - r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_set_named_property(env, object, cname, value) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - if (!cname) { - return envObject.setLastError(1); - } - emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_has_named_property(env, object, utf8name, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - if (!utf8name) { - return envObject.setLastError(1); - } - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - r = emnapiString.UTF8ToString(utf8name, -1) in v; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_named_property(env, object, utf8name, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - if (!utf8name) { - return envObject.setLastError(1); - } - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_set_element(env, object, index, value) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - h.value[index >>> 0] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_has_element(env, object, index, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - r = ((index >>> 0) in v) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_element(env, object, index, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - value = envObject.ensureHandleId(v[index >>> 0]); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_delete_element(env, object, index, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - if (emnapiCtx.feature.supportReflect) { - r = Reflect.deleteProperty(h.value, index >>> 0); - } - else { - try { - r = delete h.value[index >>> 0]; - } - catch (_) { - r = false; - } - } - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_define_properties(env, object, property_count, properties) { - var propPtr, attributes; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - property_count = property_count >>> 0; - if (property_count > 0) { - if (!properties) - return envObject.setLastError(1); - } - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - var propertyName = void 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < property_count; i++) { - propPtr = properties + (i * (4 * 8)); - var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); - var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); - var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); - var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); - var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); - var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); - attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); - var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); - if (utf8Name) { - propertyName = emnapiString.UTF8ToString(utf8Name, -1); - } - else { - if (!name_2) { - return envObject.setLastError(4); - } - propertyName = emnapiCtx.handleStore.get(name_2).value; - if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { - return envObject.setLastError(4); - } - } - emnapiDefineProperty(envObject, maybeObject, propertyName, method, getter, setter, value, attributes, data); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_object_freeze(env, object) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - Object.freeze(maybeObject); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_object_seal(env, object) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - Object.seal(maybeObject); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - var propertyMod = Object.freeze({ - __proto__: null, - napi_define_properties: napi_define_properties, - napi_delete_element: napi_delete_element, - napi_delete_property: napi_delete_property, - napi_get_all_property_names: napi_get_all_property_names, - napi_get_element: napi_get_element, - napi_get_named_property: napi_get_named_property, - napi_get_property: napi_get_property, - napi_get_property_names: napi_get_property_names, - napi_has_element: napi_has_element, - napi_has_named_property: napi_has_named_property, - napi_has_own_property: napi_has_own_property, - napi_has_property: napi_has_property, - napi_object_freeze: napi_object_freeze, - napi_object_seal: napi_object_seal, - napi_set_element: napi_set_element, - napi_set_named_property: napi_set_named_property, - napi_set_property: napi_set_property - }); - function napi_run_script(env, script, result) { - var status; - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!script) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var v8Script = emnapiCtx.handleStore.get(script); - if (!v8Script.isString()) { - return envObject.setLastError(3); - } - var g = emnapiCtx.handleStore.get(5).value; - var ret = g.eval(v8Script.value); - value = envObject.ensureHandleId(ret); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - status = envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - return status; - } - var scriptMod = Object.freeze({ - __proto__: null, - napi_run_script: napi_run_script - }); - function napi_typeof(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var v = emnapiCtx.handleStore.get(value); - var r; - if (v.isNumber()) { - r = 3; - } - else if (v.isBigInt()) { - r = 9; - } - else if (v.isString()) { - r = 4; - } - else if (v.isFunction()) { - r = 7; - } - else if (v.isExternal()) { - r = 8; - } - else if (v.isObject()) { - r = 6; - } - else if (v.isBoolean()) { - r = 2; - } - else if (v.isUndefined()) { - r = 0; - } - else if (v.isSymbol()) { - r = 5; - } - else if (v.isNull()) { - r = 1; - } - else { - return envObject.setLastError(1); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, r, true); - return envObject.clearLastError(); - } - function napi_coerce_to_bool(env, value, result) { - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - v = handle.value ? 4 : 3; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_coerce_to_number(env, value, result) { - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (handle.isBigInt()) { - throw new TypeError('Cannot convert a BigInt value to a number'); - } - v = emnapiCtx.addToCurrentScope(Number(handle.value)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_coerce_to_object(env, value, result) { - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (handle.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - v = envObject.ensureHandleId(Object(handle.value)); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_coerce_to_string(env, value, result) { - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (handle.isSymbol()) { - throw new TypeError('Cannot convert a Symbol value to a string'); - } - v = emnapiCtx.addToCurrentScope(String(handle.value)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_instanceof(env, object, constructor, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - if (!constructor) - return envObject.setLastError(1); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, 0, true); - var ctor = emnapiCtx.handleStore.get(constructor); - if (!ctor.isFunction()) { - return envObject.setLastError(5); - } - var val = emnapiCtx.handleStore.get(object).value; - var ret = val instanceof ctor.value; - r = ret ? 1 : 0; - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_is_array(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isArray() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_is_arraybuffer(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isArrayBuffer() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function node_api_is_sharedarraybuffer(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]')) - ? 1 - : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_is_date(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isDate() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_is_error(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var val = emnapiCtx.handleStore.get(value).value; - var r = (val instanceof Error) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_is_typedarray(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isTypedArray() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_is_buffer(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_is_dataview(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isDataView() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_strict_equals(env, lhs, rhs, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!lhs) - return envObject.setLastError(1); - if (!rhs) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var lv = emnapiCtx.handleStore.get(lhs).value; - var rv = emnapiCtx.handleStore.get(rhs).value; - r = (lv === rv) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_detach_arraybuffer(env, arraybuffer) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!arraybuffer) - return envObject.setLastError(1); - var value = emnapiCtx.handleStore.get(arraybuffer).value; - if (!(value instanceof ArrayBuffer)) { - if (typeof SharedArrayBuffer === 'function' && (value instanceof SharedArrayBuffer)) { - return envObject.setLastError(20); - } - return envObject.setLastError(19); - } - try { - var MessageChannel_1 = emnapiCtx.feature.MessageChannel; - var messageChannel = new MessageChannel_1(); - messageChannel.port1.postMessage(value, [value]); - } - catch (_) { - return envObject.setLastError(9); - } - return envObject.clearLastError(); - } - function napi_is_detached_arraybuffer(env, arraybuffer, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(arraybuffer); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (h.isArrayBuffer() && h.value.byteLength === 0) { - try { - new Uint8Array(h.value); - } - catch (_) { - HEAP_DATA_VIEW.setInt8(result, 1, true); - return envObject.getReturnStatus(); - } - } - HEAP_DATA_VIEW.setInt8(result, 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - var valueOperationMod = Object.freeze({ - __proto__: null, - napi_coerce_to_bool: napi_coerce_to_bool, - napi_coerce_to_number: napi_coerce_to_number, - napi_coerce_to_object: napi_coerce_to_object, - napi_coerce_to_string: napi_coerce_to_string, - napi_detach_arraybuffer: napi_detach_arraybuffer, - napi_instanceof: napi_instanceof, - napi_is_array: napi_is_array, - napi_is_arraybuffer: napi_is_arraybuffer, - napi_is_buffer: napi_is_buffer, - napi_is_dataview: napi_is_dataview, - napi_is_date: napi_is_date, - napi_is_detached_arraybuffer: napi_is_detached_arraybuffer, - napi_is_error: napi_is_error, - napi_is_typedarray: napi_is_typedarray, - napi_strict_equals: napi_strict_equals, - napi_typeof: napi_typeof, - node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer - }); - function napi_get_version(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!result) - return envObject.setLastError(1); - var NODE_API_SUPPORTED_VERSION_MAX = 10; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, NODE_API_SUPPORTED_VERSION_MAX, true); - return envObject.clearLastError(); - } - var versionMod = Object.freeze({ - __proto__: null, - napi_get_version: napi_get_version - }); - emnapiAWST.init(); - emnapiExternalMemory.init(); - emnapiString.init(); - emnapiTSFN.init(); - PThread.init(); - napiModule.emnapi.syncMemory = $emnapiSyncMemory; - napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress; - function addImports(mod) { - var keys = Object.keys(mod); - for (var i = 0; i < keys.length; ++i) { - var k = keys[i]; - if (k.indexOf('$') === 0) - continue; - if (k.indexOf('emnapi_') === 0) { - napiModule.imports.emnapi[k] = mod[k]; - } - else if (k.indexOf('_emnapi_') === 0 || k === 'napi_set_last_error' || k === 'napi_clear_last_error') { - napiModule.imports.env[k] = mod[k]; - } - else { - napiModule.imports.napi[k] = mod[k]; - } - } - } - addImports(asyncMod); - addImports(memoryMod); - addImports(asyncWorkMod); - addImports(utilMod); - addImports(convert2cMod); - addImports(convert2napiMod); - addImports(createMod); - addImports(globalMod); - addImports(wrapMod); - addImports(envMod); - addImports(emnapiMod); - addImports(errorMod); - addImports(functionMod); - addImports(lifeMod); - addImports(miscellaneousMod); - addImports(nodeMod); - addImports(promiseMod); - addImports(propertyMod); - addImports(scriptMod); - addImports(valueOperationMod); - addImports(versionMod); - napiModule.imports.napi.napi_create_threadsafe_function = napi_create_threadsafe_function; - napiModule.imports.napi.napi_get_threadsafe_function_context = napi_get_threadsafe_function_context; - napiModule.imports.napi.napi_call_threadsafe_function = napi_call_threadsafe_function; - napiModule.imports.napi.napi_acquire_threadsafe_function = napi_acquire_threadsafe_function; - napiModule.imports.napi.napi_release_threadsafe_function = napi_release_threadsafe_function; - napiModule.imports.napi.napi_unref_threadsafe_function = napi_unref_threadsafe_function; - napiModule.imports.napi.napi_ref_threadsafe_function = napi_ref_threadsafe_function; - return napiModule; - })(); - return napiModule; -} - -function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) { - options = options !== null && options !== void 0 ? options : {}; - const getMemory = options.getMemory; - const getTable = options.getTable; - const beforeInit = options.beforeInit; - if (getMemory != null && typeof getMemory !== 'function') { - throw new TypeError('options.getMemory is not a function'); - } - if (getTable != null && typeof getTable !== 'function') { - throw new TypeError('options.getTable is not a function'); - } - if (beforeInit != null && typeof beforeInit !== 'function') { - throw new TypeError('options.beforeInit is not a function'); - } - let napiModule; - const isLoad = typeof userNapiModule === 'object' && userNapiModule !== null; - if (isLoad) { - if (userNapiModule.loaded) { - throw new Error('napiModule has already loaded'); - } - napiModule = userNapiModule; - } - else { - napiModule = createNapiModule(options); - } - const wasi = options.wasi; - let wasiThreads$1; - let importObject = { - env: napiModule.imports.env, - napi: napiModule.imports.napi, - emnapi: napiModule.imports.emnapi - }; - if (wasi) { - wasiThreads$1 = new wasiThreads.WASIThreads(napiModule.childThread - ? { - wasi, - childThread: true, - postMessage: napiModule.postMessage - } - : { - wasi, - threadManager: napiModule.PThread, - waitThreadStart: napiModule.waitThreadStart - }); - Object.assign(importObject, typeof wasi.getImportObject === 'function' - ? wasi.getImportObject() - : { wasi_snapshot_preview1: wasi.wasiImport }); - Object.assign(importObject, wasiThreads$1.getImportObject()); - } - const overwriteImports = options.overwriteImports; - if (typeof overwriteImports === 'function') { - const newImportObject = overwriteImports(importObject); - if (typeof newImportObject === 'object' && newImportObject !== null) { - importObject = newImportObject; - } - } - return loadFn(wasmInput, importObject, (err, source) => { - if (err) { - throw err; - } - const originalInstance = source.instance; - let instance = originalInstance; - const originalExports = originalInstance.exports; - const exportMemory = 'memory' in originalExports; - const importMemory = 'memory' in importObject.env; - const memory = getMemory - ? getMemory(originalExports) - : exportMemory - ? originalExports.memory - : importMemory - ? importObject.env.memory - : undefined; - if (!memory) { - throw new Error('memory is neither exported nor imported'); - } - const table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table; - if (wasi && !exportMemory) { - const exports$1 = Object.create(null); - Object.assign(exports$1, originalExports, { memory }); - instance = { exports: exports$1 }; - } - const module = source.module; - if (wasi) { - instance = wasiThreads$1.initialize(instance, module, memory); - } - else { - napiModule.PThread.setup(module, memory); - } - const emnapiInit = () => { - if (beforeInit) { - beforeInit({ - instance: originalInstance, - module - }); - } - napiModule.init({ - instance, - module, - memory, - table - }); - const ret = { - instance: originalInstance, - module, - usedInstance: instance - }; - if (!isLoad) { - ret.napiModule = napiModule; - } - return ret; - }; - if (napiModule.PThread.shouldPreloadWorkers()) { - const poolReady = napiModule.PThread.loadWasmModuleToAllWorkers(); - if (loadFn === loadCallback) { - return poolReady.then(emnapiInit); - } - else { - throw new Error('Synchronous loading is not supported with worker pool (reuseWorker.size > 0)'); - } - } - return emnapiInit(); - }); -} -function loadCallback(wasmInput, importObject, callback) { - return load(wasmInput, importObject).then((source) => { - return callback(null, source); - }, err => { - return callback(err); - }); -} -function loadSyncCallback(wasmInput, importObject, callback) { - let source; - try { - source = loadSync(wasmInput, importObject); - } - catch (err) { - return callback(err); - } - return callback(null, source); -} -function loadNapiModule(napiModule, wasmInput, options) { - if (typeof napiModule !== 'object' || napiModule === null) { - throw new TypeError('Invalid napiModule'); - } - return loadNapiModuleImpl(loadCallback, napiModule, wasmInput, options); -} -function loadNapiModuleSync(napiModule, wasmInput, options) { - if (typeof napiModule !== 'object' || napiModule === null) { - throw new TypeError('Invalid napiModule'); - } - return loadNapiModuleImpl(loadSyncCallback, napiModule, wasmInput, options); -} -function instantiateNapiModule(wasmInput, options) { - return loadNapiModuleImpl(loadCallback, undefined, wasmInput, options); -} -function instantiateNapiModuleSync(wasmInput, options) { - return loadNapiModuleImpl(loadSyncCallback, undefined, wasmInput, options); -} - -class MessageHandler extends wasiThreads.ThreadMessageHandler { - constructor(options) { - if (typeof options.onLoad !== 'function') { - throw new TypeError('options.onLoad is not a function'); - } - const userOnError = options.onError; - super({ - ...options, - onError: (err, type) => { - var _a; - const emnapi_thread_crashed = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed; - if (typeof emnapi_thread_crashed === 'function') { - emnapi_thread_crashed(); - } - if (typeof userOnError === 'function') { - userOnError(err, type); - } - else { - throw err; - } - } - }); - this.napiModule = undefined; - } - instantiate(data) { - const source = this.onLoad(data); - const then = source.then; - if (typeof then === 'function') { - return source.then((result) => { - this.napiModule = result.napiModule; - return result; - }); - } - this.napiModule = source.napiModule; - return source; - } - handle(e) { - var _a; - super.handle(e); - if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { - const type = e.data.__emnapi__.type; - const payload = e.data.__emnapi__.payload; - try { - if (type === 'async-worker-init') { - this.handleAfterLoad(e, () => { - this.napiModule.initWorker(payload.arg); - }); - } - else if (type === 'async-work-execute') { - this.handleAfterLoad(e, () => { - this.napiModule.executeAsyncWork(payload.work); - }); - } - } - catch (err) { - this.onError(err, type); - } - } - } -} - -const version = "1.8.1"; - -exports.MessageHandler = MessageHandler; -exports.createNapiModule = createNapiModule; -exports.instantiateNapiModule = instantiateNapiModule; -exports.instantiateNapiModuleSync = instantiateNapiModuleSync; -exports.loadNapiModule = loadNapiModule; -exports.loadNapiModuleSync = loadNapiModuleSync; -exports.version = version; -Object.keys(wasiThreads).forEach(function (k) { - if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, { - enumerable: true, - get: function () { return wasiThreads[k]; } - }); -}); diff --git a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts b/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts deleted file mode 100644 index f6e3cd4..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +++ /dev/null @@ -1,419 +0,0 @@ -/// - -import type { Context } from '@emnapi/runtime'; -import type { ReferenceOwnership } from '@emnapi/runtime'; -import type { Worker as Worker_2 } from 'worker_threads'; - -/** @public */ -export declare type BaseCreateOptions = { - filename?: string - nodeBinding?: NodeBinding - reuseWorker?: ThreadManagerOptionsMain['reuseWorker'] - asyncWorkPoolSize?: number - waitThreadStart?: MainThreadBaseOptions['waitThreadStart'] - onCreateWorker?: (info: CreateWorkerInfo) => any - print?: (str: string) => void - printErr?: (str: string) => void - postMessage?: (msg: any) => any -} - -/** @public */ -export declare interface BaseOptions { - wasi: WASIInstance; - version?: 'preview1'; - wasm64?: boolean; -} - -/** @public */ -export declare interface ChildThreadOptions extends BaseOptions { - childThread: true; - postMessage?: (data: any) => void; -} - -/** @public */ -export declare interface CleanupThreadPayload { - tid: number; -} - -/** @public */ -export declare interface CommandInfo { - type: T; - payload: CommandPayloadMap[T]; -} - -/** @public */ -export declare interface CommandPayloadMap { - load: LoadPayload; - loaded: LoadedPayload; - start: StartPayload; - 'cleanup-thread': CleanupThreadPayload; - 'terminate-all-threads': TerminateAllThreadsPayload; - 'spawn-thread': SpawnThreadPayload; -} - -/** @public */ -export declare type CommandType = keyof CommandPayloadMap; - -/** @public */ -export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; - -/** @public */ -export declare function createNapiModule ( -options: CreateOptions -): NapiModule - -/** @public */ -export declare type CreateOptions = BaseCreateOptions & ({ - context: Context - childThread?: boolean -} | { - context?: Context - childThread: true -}) - -/** @public */ -export declare interface CreateWorkerInfo { - type: 'thread' | 'async-work' - name: string -} - -/** @public */ -export declare interface InitOptions { - instance: WebAssembly.Instance - module: WebAssembly.Module - memory?: WebAssembly.Memory - table?: WebAssembly.Table -} - -export declare type InputType = string | URL | Response | BufferSource | WebAssembly.Module; - -/** @public */ -export declare interface InstantiatedSource extends LoadedSource { - napiModule: NapiModule; -} - -/** @public */ -export declare function instantiateNapiModule( -/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ -wasmInput: InputType | Promise, options: InstantiateOptions): Promise; - -/** @public */ -export declare function instantiateNapiModuleSync(wasmInput: BufferSource | WebAssembly.Module, options: InstantiateOptions): InstantiatedSource; - -/** @public */ -export declare type InstantiateOptions = CreateOptions & LoadOptions; - -/** @public */ -export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; - -/** @public */ -export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; - -/** @public */ -export declare interface LoadedPayload { -} - -/** @public */ -export declare interface LoadedSource extends WebAssembly.WebAssemblyInstantiatedSource { - usedInstance: WebAssembly.Instance; -} - -/** @public */ -export declare function loadNapiModule(napiModule: NapiModule, -/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ -wasmInput: InputType | Promise, options?: LoadOptions): Promise; - -/** @public */ -export declare function loadNapiModuleSync(napiModule: NapiModule, wasmInput: BufferSource | WebAssembly.Module, options?: LoadOptions): LoadedSource; - -/** @public */ -export declare interface LoadOptions { - wasi?: WASIInstance; - overwriteImports?: (importObject: WebAssembly.Imports) => WebAssembly.Imports; - beforeInit?: (source: WebAssembly.WebAssemblyInstantiatedSource) => void; - getMemory?: (exports: WebAssembly.Exports) => WebAssembly.Memory; - getTable?: (exports: WebAssembly.Exports) => WebAssembly.Table; -} - -/** @public */ -export declare interface LoadPayload { - wasmModule: WebAssembly.Module; - wasmMemory: WebAssembly.Memory; - sab?: Int32Array; -} - -/** @public */ -export declare interface MainThreadBaseOptions extends BaseOptions { - waitThreadStart?: boolean | number; -} - -/** @public */ -export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; - -/** @public */ -export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { -} - -/** @public */ -export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { - threadManager?: ThreadManager | (() => ThreadManager); -} - -/** @public */ -export declare interface MessageEventData { - __emnapi__: CommandInfo; -} - -/** @public */ -export declare class MessageHandler extends ThreadMessageHandler { - napiModule: NapiModule | undefined; - constructor(options: MessageHandlerOptions); - instantiate(data: LoadPayload): InstantiatedSource | PromiseLike; - handle(e: WorkerMessageEvent): void; -} - -/** @public */ -export declare interface MessageHandlerOptions extends ThreadMessageHandlerOptions { - onLoad: (data: LoadPayload) => InstantiatedSource | PromiseLike; -} - -/** @public */ -export declare interface NapiModule { - imports: { - env: any - napi: any - emnapi: any - } - exports: any - loaded: boolean - filename: string - childThread: boolean - emnapi: { - syncMemory ( - js_to_wasm: boolean, - arrayBufferOrView: T, - offset?: number, - len?: number - ): T - getMemoryAddress (arrayBufferOrView: ArrayBuffer | ArrayBufferView): PointerInfo - addSendListener (worker: any): boolean - } - - init (options: InitOptions): any - initWorker (arg: number): void - executeAsyncWork (work: number): void - postMessage?: (msg: any) => any - - waitThreadStart: boolean | number - /* Excluded from this release type: PThread */} - -/** @public */ -export declare interface NodeBinding { - node: { - emitAsyncInit: Function - emitAsyncDestroy: Function - makeCallback: Function - } - napi: { - asyncInit: Function - asyncDestroy: Function - makeCallback: Function - } -} - -/** @public */ -export declare interface PointerInfo { - address: number - ownership: ReferenceOwnership - runtimeAllocated: 0 | 1 -} - -/** @public */ -export declare interface ReuseWorkerOptions { - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} - */ - size: number; - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} - */ - strict?: boolean; -} - -/** @public */ -export declare interface SpawnThreadPayload { - startArg: number; - errorOrTid: number; -} - -/** @public */ -export declare interface StartPayload { - tid: number; - arg: number; - sab?: Int32Array; -} - -/** @public */ -export declare interface StartResult { - exitCode: number; - instance: WebAssembly.Instance; -} - -/** @public */ -export declare interface TerminateAllThreadsPayload { -} - -/** @public */ -export declare class ThreadManager { - unusedWorkers: WorkerLike[]; - runningWorkers: WorkerLike[]; - pthreads: Record; - get nextWorkerID(): number; - wasmModule: WebAssembly.Module | null; - wasmMemory: WebAssembly.Memory | null; - private readonly messageEvents; - private readonly _childThread; - private readonly _onCreateWorker; - private readonly _reuseWorker; - private readonly _beforeLoad?; - /* Excluded from this release type: printErr */ - constructor(options: ThreadManagerOptions); - init(): void; - initMainThread(): void; - private preparePool; - shouldPreloadWorkers(): boolean; - loadWasmModuleToAllWorkers(): Promise; - preloadWorkers(): Promise; - setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; - markId(worker: WorkerLike): number; - returnWorkerToPool(worker: WorkerLike): void; - loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; - allocateUnusedWorker(): WorkerLike; - getNewWorker(sab?: Int32Array): WorkerLike | undefined; - cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; - terminateWorker(worker: WorkerLike): void; - terminateAllThreads(): void; - addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; - fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; -} - -/** @public */ -export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; - -/** @public */ -export declare interface ThreadManagerOptionsBase { - printErr?: (message: string) => void; -} - -/** @public */ -export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { - childThread: true; -} - -/** @public */ -export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { - beforeLoad?: (worker: WorkerLike) => any; - reuseWorker?: boolean | number | ReuseWorkerOptions; - onCreateWorker: WorkerFactory; - childThread?: false; -} - -/** @public */ -export declare class ThreadMessageHandler { - protected instance: WebAssembly.Instance | undefined; - private messagesBeforeLoad; - protected postMessage: (message: any) => void; - protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - protected onError: (error: Error, type: WorkerMessageType) => void; - constructor(options?: ThreadMessageHandlerOptions); - /** @virtual */ - instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - /** @virtual */ - handle(e: WorkerMessageEvent>): void; - private _load; - private _start; - protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; - protected handleAfterLoad(e: E, f: (e: E) => void): void; -} - -/** @public */ -export declare interface ThreadMessageHandlerOptions { - onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - onError?: (error: Error, type: WorkerMessageType) => void; - postMessage?: (message: any) => void; -} - -export declare const version: string; - -/** @public */ -export declare interface WASIInstance { - readonly wasiImport?: Record; - initialize(instance: object): void; - start(instance: object): number; - getImportObject?(): any; -} - -/** @public */ -export declare class WASIThreads { - PThread: ThreadManager | undefined; - private wasmMemory; - private wasmInstance; - private readonly threadSpawn; - readonly childThread: boolean; - private readonly postMessage; - readonly wasi: WASIInstance; - constructor(options: WASIThreadsOptions); - getImportObject(): { - wasi: WASIThreadsImports; - }; - setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; - preloadWorkers(): Promise; - /** - * It's ok to call this method to a WASI command module. - * - * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module - * - * @returns A proxied WebAssembly instance if in child thread, other wise the original instance - */ - initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; - /** - * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} - * ```js - * this.initialize(instance, module, memory) - * this.wasi.start(instance) - * ``` - */ - start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; - terminateAllThreads(): void; -} - -/** @public */ -export declare interface WASIThreadsImports { - 'thread-spawn': (startArg: number, errorOrTid?: number) => number; -} - -/** @public */ -export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; - -/** @public */ -export declare type WorkerFactory = (ctx: { - type: string; - name: string; -}) => WorkerLike; - -/** @public */ -export declare type WorkerLike = (Worker | Worker_2) & { - whenLoaded?: Promise; - loaded?: boolean; - __emnapi_tid?: number; -}; - -/** @public */ -export declare interface WorkerMessageEvent { - data: T; -} - -/** @public */ -export declare type WorkerMessageType = 'load' | 'start'; - -export { } diff --git a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js b/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js deleted file mode 100644 index e92a9be..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +++ /dev/null @@ -1 +0,0 @@ -var r=require("@emnapi/wasi-threads");const e="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0;function t(r){if(r&&"object"!=typeof r)throw new TypeError("imports must be an object or undefined");return!0}function n(r,a){if(!r)throw new TypeError("Invalid wasm source");t(a),a=null!=a?a:{};try{const e="object"==typeof r&&null!==r&&"then"in r?r.then:void 0;if("function"==typeof e)return e.call(r,r=>n(r,a))}catch(r){}if(r instanceof ArrayBuffer||ArrayBuffer.isView(r))return e.instantiate(r,a);if(r instanceof e.Module)return e.instantiate(r,a).then(e=>({instance:e,module:r}));if("undefined"!=typeof Response&&r instanceof Response)return r.arrayBuffer().then(r=>e.instantiate(r,a));const o="string"==typeof r;if(o||"undefined"!=typeof URL&&r instanceof URL){if(o&&"undefined"!=typeof wx&&"undefined"!=typeof __wxConfig)return e.instantiate(r,a);if("function"!=typeof fetch)throw new TypeError("wasm source can not be a string or URL in this environment");if("function"!=typeof e.instantiateStreaming)return n(fetch(r),a);try{return e.instantiateStreaming(fetch(r),a).catch(()=>n(fetch(r),a))}catch(e){return n(fetch(r),a)}}throw new TypeError("Invalid wasm source")}function a(t){var n=function(){var n,a,o,s,i,u="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node,f=Boolean(t.childThread),c="number"==typeof t.waitThreadStart?t.waitThreadStart:Boolean(t.waitThreadStart);function l(r){if("function"==typeof e.RuntimeError)throw new e.RuntimeError(r);throw Error(r)}var d,p,v,g={imports:{env:{},napi:{},emnapi:{}},exports:{},emnapi:{},loaded:!1,filename:"",childThread:f,initWorker:void 0,executeAsyncWork:void 0,waitThreadStart:c,PThread:void 0,init:function(r){if(g.loaded)return g.exports;if(!r)throw new TypeError("Invalid napi init options");var t=r.instance;if(!(null==t?void 0:t.exports))throw new TypeError("Invalid wasm instance");n=t;var u=t.exports,f=r.module,c=r.memory||u.memory,v=r.table||u.__indirect_function_table;if(!(f instanceof e.Module))throw new TypeError("Invalid wasm module");if(!(c instanceof e.Memory))throw new TypeError("Invalid wasm memory");if(!(v instanceof e.Table))throw new TypeError("Invalid wasm table");if(a=c,o=v,"function"!=typeof u.malloc)throw new TypeError("malloc is not exported");if("function"!=typeof u.free)throw new TypeError("free is not exported");if(s=u.malloc,i=u.free,!g.childThread){var y=8,h=t.exports.node_api_module_get_api_version_v1;"function"==typeof h&&(y=h());var E=g.envObject||(g.envObject=d.createEnv(g.filename,y,function(r){return o.get(r)},function(r){return o.get(r)},l,p)),_=d.openScope(E);try{E.callIntoModule(function(r){var e=g.exports,n=_.add(e),a=(0,t.exports.napi_register_wasm_v1)(r.id,n.id);g.exports=a?d.handleStore.get(a).value:e})}catch(r){if("unwind"!==r)throw r}finally{d.closeScope(E,_)}return g.loaded=!0,delete g.envObject,g.exports}}},y=void 0;if(f){d=null==t?void 0:t.context;var h="function"==typeof t.postMessage?t.postMessage:"function"==typeof postMessage?postMessage:void 0;if("function"!=typeof h)throw new TypeError("No postMessage found");g.postMessage=h}else{var E=t.context;if("object"!=typeof E||null===E)throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`");d=E}if("string"==typeof t.filename&&(g.filename=t.filename),"function"==typeof t.onCreateWorker&&(y=t.onCreateWorker),"function"==typeof t.print?t.print:console.log.bind(console),v="function"==typeof t.printErr?t.printErr:console.warn.bind(console),"nodeBinding"in t){var _=t.nodeBinding;if("object"!=typeof _||null===_)throw new TypeError("Invalid `options.nodeBinding`. Use @emnapi/node-binding package");p=_}var w=0;if("asyncWorkPoolSize"in t){if("number"!=typeof t.asyncWorkPoolSize)throw new TypeError("options.asyncWorkPoolSize must be a integer");(w=t.asyncWorkPoolSize|0)>1024?w=1024:w<-1024&&(w=-1024)}var L=!f&&w<=0;function m(){return Math.abs(w)}function b(r){if(!r)return!1;if(r._emnapiSendListener)return!0;var e=function(r){var e=(u?r:r.data).__emnapi__;if(e&&"async-send"===e.type)if(f){(0,g.postMessage)({__emnapi__:e})}else{var t=e.payload.callback;o.get(t)(e.payload.data)}};return r._emnapiSendListener={handler:e,dispose:function(){u?r.off("message",e):r.removeEventListener("message",e,!1),delete r._emnapiSendListener}},u?r.on("message",e):r.addEventListener("message",e,!1),!0}g.imports.env._emnapi_async_work_pool_size=m,g.emnapi.addSendListener=b;var S=new r.ThreadManager(f?{printErr:v,childThread:!0}:{printErr:v,beforeLoad:function(r){b(r)},reuseWorker:t.reuseWorker,onCreateWorker:y});function C(r,e){d.feature.setImmediate(function(){o.get(r)(e)})}function A(r,e){Promise.resolve().then(function(){o.get(r)(e)})}function I(r,e){var t,n=[e>>>0,(t=e,+Math.abs(t)>=1?t>0?(0|Math.min(+Math.floor(t/4294967296),4294967295))>>>0:~~+Math.ceil((t-+(~~t>>>0))/4294967296)>>>0:0)],o=new DataView(a.buffer);o.setInt32(r,n[0],!0),o.setInt32(r+4,n[1],!0)}g.PThread=S;var k,V=Object.freeze({__proto__:null,$emnapiSetValueI64:I,_emnapi_call_finalizer:function(r,e,t,n,a){d.envStore.get(e).callFinalizerInternal(r,t,n,a)},_emnapi_callback_into_module:function(r,e,t,n,a){var s=d.envStore.get(e),i=d.openScope(s);try{s.callbackIntoModule(Boolean(r),function(){o.get(t)(e,n)})}catch(r){throw d.closeScope(s,i),a&&d.closeScope(s),r}d.closeScope(s,i)},_emnapi_close_handle_scope:function(r){return d.closeScope()},_emnapi_ctx_decrease_waiting_request_counter:function(){d.decreaseWaitingRequestCounter()},_emnapi_ctx_increase_waiting_request_counter:function(){d.increaseWaitingRequestCounter()},_emnapi_get_node_version:function(r,e,t){var n="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node?process.versions.node.split(".").map(function(r){return Number(r)}):[0,0,0],o=new DataView(a.buffer);o.setUint32(r,n[0],!0),o.setUint32(e,n[1],!0),o.setUint32(t,n[2],!0)},_emnapi_get_now:function(){return performance.timeOrigin+performance.now()},_emnapi_is_main_browser_thread:function(){return"undefined"==typeof window||"undefined"==typeof document||u?0:1},_emnapi_is_main_runtime_thread:function(){return f?0:1},_emnapi_next_tick:A,_emnapi_open_handle_scope:function(){return d.openScope().id},_emnapi_runtime_keepalive_pop:function(){},_emnapi_runtime_keepalive_push:function(){},_emnapi_set_immediate:C,_emnapi_unwind:function(){throw"unwind"},napi_clear_last_error:function(r){return d.envStore.get(r).clearLastError()},napi_set_last_error:function(r,e,t,n){return d.envStore.get(r).setLastError(e,t,n)}});function U(r){var e=new DataView(a.buffer).getInt32(r+20,!0);return S.pthreads[e]}var T=new Promise(function(r){k=function(){T.ready=!0,r()}});T.ready=!1;var B=Object.freeze({__proto__:null,_emnapi_after_uvthreadpool_ready:function(r,e,t){T.ready?o.get(r)(e,t):T.then(function(){o.get(r)(e,t)})},_emnapi_async_send_js:function(r,e,t){if(f)(0,g.postMessage)({__emnapi__:{type:"async-send",payload:{callback:e,data:t}}});else switch(r){case 0:C(e,t);break;case 1:A(e,t)}},_emnapi_emit_async_thread_ready:function(){f&&(0,g.postMessage)({__emnapi__:{type:"async-thread-ready",payload:{}}})},_emnapi_tell_js_uvthreadpool:function(r,e){for(var t=[],n=new DataView(a.buffer),o=function(e){var a=U(n.getUint32(r+4*e,!0));t.push(new Promise(function(r){var e=function(t){var n=(u?t:t.data).__emnapi__;n&&"async-thread-ready"===n.type&&(r(),a&&"function"==typeof a.unref&&a.unref(),u?a.off("message",e):a.removeEventListener("message",e))};u?a.on("message",e):a.addEventListener("message",e)}))},s=0;s>16)?n.setLastError(9):(d.feature.supportBigInt?new DataView(a.buffer).setBigInt64(t,BigInt(a.buffer.byteLength),!0):I(t,a.buffer.byteLength),n.clearLastError())}}),j={idGen:{},values:[void 0],queued:new Set,pending:[],init:function(){var r={nextId:1,list:[],generate:function(){var e;return r.list.length?e=r.list.shift():(e=r.nextId,r.nextId++),e},reuse:function(e){r.list.push(e)}};j.idGen=r,j.values=[void 0],j.queued=new Set,j.pending=[]},create:function(r,e,t,n,a,o){var s=0,i=0;if(p){var u=p.node.emitAsyncInit(e,t,-1);s=u.asyncId,i=u.triggerAsyncId}var f=j.idGen.generate();return j.values[f]={env:r,id:f,resource:e,asyncId:s,triggerAsyncId:i,status:0,execute:n,complete:a,data:o},f},callComplete:function(r,e){var t=r.complete,n=r.env,a=r.data,s=function(){if(t){var r=d.envStore.get(n),s=d.openScope(r);try{r.callbackIntoModule(!0,function(){o.get(t)(n,e,a)})}finally{d.closeScope(r,s)}}};p?p.node.makeCallback(r.resource,s,[],{asyncId:r.asyncId,triggerAsyncId:r.triggerAsyncId}):s()},queue:function(r){var e=j.values[r];if(e&&0===e.status){if(e.status=1,j.queued.size>=(Math.abs(w)||4))return void j.pending.push(r);j.queued.add(r);var t=e.env,n=e.data,a=e.execute;e.status=2,d.feature.setImmediate(function(){if(o.get(a)(t,n),j.queued.delete(r),e.status=3,d.feature.setImmediate(function(){j.callComplete(e,0)}),j.pending.length>0){var s=j.pending.shift();j.values[s].status=0,j.queue(s)}})}},cancel:function(r){var e=j.pending.indexOf(r);if(-1!==e){var t=j.values[r];return t&&1===t.status?(t.status=4,j.pending.splice(e,1),d.feature.setImmediate(function(){j.callComplete(t,11)}),0):9}return 9},remove:function(r){var e=j.values[r];e&&(p&&p.node.emitAsyncDestroy({asyncId:e.asyncId,triggerAsyncId:e.triggerAsyncId}),j.values[r]=void 0,j.idGen.reuse(r))}};function x(r,e,t,n){if(p){var o=d.handleStore.get(r).value,s=d.handleStore.get(e).value,i=p.node.emitAsyncInit(o,s,t),u=i.asyncId,f=i.triggerAsyncId;if(n){var c=new DataView(a.buffer);c.setFloat64(n,u,!0),c.setFloat64(n+8,f,!0)}}}function R(r,e){p&&p.node.emitAsyncDestroy({asyncId:r,triggerAsyncId:e})}var G=Object.freeze({__proto__:null,_emnapi_async_destroy_js:function(r){if(!p)return 9;var e=new DataView(a.buffer),t=e.getInt32(r,!0),n=e.getInt32(r+4,!0),o=BigInt(t>>>0)|BigInt(n)<=BigInt(-1)*(BigInt(1)<=BigInt(1)<>BigInt(32)),c=new DataView(a.buffer);return c.setInt32(t,u,!0),c.setInt32(t+4,f,!0),0},_emnapi_env_check_gc_access:function(r){d.envStore.get(r).checkGCAccess()},_emnapi_node_emit_async_destroy:R,_emnapi_node_emit_async_init:x,_emnapi_node_make_callback:function(r,e,t,n,o,s,i,u){var f,c=0;if(p){var l=d.handleStore.get(e).value,v=d.handleStore.get(t).value;o>>>=0;for(var g=Array(o),y=new DataView(a.buffer);c=10?23:10);c.clearLastError();try{if(!p)return c.setLastError(9);if(!t)return c.setLastError(1);if(o>0&&!s)return c.setLastError(1);var l=Object(d.handleStore.get(t).value),v=d.handleStore.get(n).value;if("function"!=typeof v)return c.setLastError(1);var g=new DataView(a.buffer),y=g.getInt32(e,!0),h=g.getInt32(e+4,!0),E=BigInt(y>>>0)|BigInt(h)<>>=0;for(var _=Array(o);f=t&&t>0&&!n},s="undefined"!=typeof window&&"undefined"!=typeof document&&!u;return n.execute(function(){for(;o();){if(0===t)return 15;if(s)return 21;a.wait()}return O.getIsClosing(r)?0===O.getThreadCount(r)?1:(O.subThreadCount(r),16):(O.pushQueue(r,e),O.send(r),0)})},getMutex:function(r){var e=r+O.offset.mutex,t={lock:function(){var r="undefined"!=typeof window&&"undefined"!=typeof document&&!u,t=new Int32Array(a.buffer,e,1);if(r)for(;;){if(0===Atomics.compareExchange(t,0,0,1))return}else for(;;){if(0===Atomics.compareExchange(t,0,0,1))return;Atomics.wait(t,0,1)}},unlock:function(){var r=new Int32Array(a.buffer,e,1);if(1!==Atomics.compareExchange(r,0,1,0))throw new Error("Tried to unlock while not holding the mutex");Atomics.notify(r,0,1)},execute:function(r){t.lock();try{return r()}finally{t.unlock()}}};return t},getCond:function(r){var e=r+O.offset.cond,t=O.getMutex(r);return{wait:function(){var r=new Int32Array(a.buffer,e,1),n=Atomics.load(r,0);t.unlock(),Atomics.wait(r,0,n),t.lock()},signal:function(){var r=new Int32Array(a.buffer,e,1);Atomics.add(r,0,1),Atomics.notify(r,0,1)}}},getQueueSize:function(r){return O.loadSizeTypeValue(r+O.offset.queue_size,!0)},addQueueSize:function(r){var e,t,n=O.offset.queue_size;e=new Uint32Array(a.buffer),t=r+n>>2,Atomics.add(e,t,1)},subQueueSize:function(r){var e,t,n=O.offset.queue_size;e=new Uint32Array(a.buffer),t=r+n>>2,Atomics.sub(e,t,1)},getThreadCount:function(r){return O.loadSizeTypeValue(r+O.offset.thread_count,!0)},addThreadCount:function(r){var e,t,n=O.offset.thread_count;e=new Uint32Array(a.buffer),t=r+n>>2,Atomics.add(e,t,1)},subThreadCount:function(r){var e,t,n=O.offset.thread_count;e=new Uint32Array(a.buffer),t=r+n>>2,Atomics.sub(e,t,1)},getIsClosing:function(r){return Atomics.load(new Int32Array(a.buffer),r+O.offset.is_closing>>2)},setIsClosing:function(r,e){Atomics.store(new Int32Array(a.buffer),r+O.offset.is_closing>>2,e)},getHandlesClosing:function(r){return Atomics.load(new Int32Array(a.buffer),r+O.offset.handles_closing>>2)},setHandlesClosing:function(r,e){Atomics.store(new Int32Array(a.buffer),r+O.offset.handles_closing>>2,e)},getDispatchState:function(r){return Atomics.load(new Uint32Array(a.buffer),r+O.offset.dispatch_state>>2)},getContext:function(r){return O.loadSizeTypeValue(r+O.offset.context,!1)},getMaxQueueSize:function(r){return O.loadSizeTypeValue(r+O.offset.max_queue_size,!0)},getEnv:function(r){return O.loadSizeTypeValue(r+O.offset.env,!1)},getCallJSCb:function(r){return O.loadSizeTypeValue(r+O.offset.call_js_cb,!1)},getRef:function(r){return O.loadSizeTypeValue(r+O.offset.ref,!1)},getResource:function(r){return O.loadSizeTypeValue(r+O.offset.resource,!1)},getFinalizeCb:function(r){return O.loadSizeTypeValue(r+O.offset.finalize_cb,!1)},getFinalizeData:function(r){return O.loadSizeTypeValue(r+O.offset.finalize_data,!1)},loadSizeTypeValue:function(r,e){var t;return e?(t=new Uint32Array(a.buffer),Atomics.load(t,r>>2)):(t=new Int32Array(a.buffer),Atomics.load(t,r>>2))},storeSizeTypeValue:function(r,e,t){var n;return t?(n=new Uint32Array(a.buffer),void Atomics.store(n,r>>2,e)):(n=new Int32Array(a.buffer),void Atomics.store(n,r>>2,e>>>0))},destroy:function(r){O.destroyQueue(r);var e=O.getEnv(r),t=d.envStore.get(e),n=O.getRef(r);n&&d.refStore.get(n).dispose(),d.removeCleanupHook(t,O.cleanup,r),t.unref();var o=r+O.offset.async_ref>>2,s=new Int32Array(a.buffer);Atomics.load(s,o)&&(Atomics.store(s,o,0),d.decreaseWaitingRequestCounter());var u=O.getResource(r);if(d.refStore.get(u).dispose(),p){var f=new DataView(a.buffer);R(f.getFloat64(r+O.offset.async_id,!0),f.getFloat64(r+O.offset.trigger_async_id,!0))}i(r)},emptyQueueAndDelete:function(r){for(var e,t=O.getCallJSCb(r),n=O.getContext(r);O.getQueueSize(r)>0;)e=O.shiftQueue(r),t&&o.get(t)(0,0,n,e);O.destroy(r)},finalize:function(r){var e=O.getEnv(r),t=d.envStore.get(e);d.openScope(t);var n=O.getFinalizeCb(r),o=O.getFinalizeData(r),s=O.getContext(r),i=function(){t.callFinalizerInternal(0,n,o,s)};try{if(n)if(p){var u=O.getResource(r),f=d.refStore.get(u).get(),c=d.handleStore.get(f).value,l=new DataView(a.buffer),v=l.getFloat64(r+O.offset.async_id,!0),g=l.getFloat64(r+O.offset.trigger_async_id,!0);p.node.makeCallback(c,i,[],{asyncId:v,triggerAsyncId:g})}else i();O.emptyQueueAndDelete(r)}finally{d.closeScope(t)}},cleanup:function(r){O.closeHandlesAndMaybeDelete(r,1)},closeHandlesAndMaybeDelete:function(r,e){var t=O.getEnv(r),n=d.envStore.get(t);d.openScope(n);try{if(e&&O.getMutex(r).execute(function(){O.setIsClosing(r,1),O.getMaxQueueSize(r)>0&&O.getCond(r).signal()}),O.getHandlesClosing(r))return;O.setHandlesClosing(r,1),d.feature.setImmediate(function(){O.finalize(r)})}finally{d.closeScope(n)}},dispatchOne:function(r){var e=0,t=!1,n=!1,s=O.getMutex(r),i=O.getCond(r);if(s.execute(function(){if(O.getIsClosing(r))O.closeHandlesAndMaybeDelete(r,0);else{var a=O.getQueueSize(r);if(a>0){e=O.shiftQueue(r),t=!0;var o=O.getMaxQueueSize(r);a===o&&o>0&&i.signal(),a--}0===a?0===O.getThreadCount(r)&&(O.setIsClosing(r,1),O.getMaxQueueSize(r)>0&&i.signal(),O.closeHandlesAndMaybeDelete(r,0)):n=!0}}),t){var u=O.getEnv(r),f=d.envStore.get(u);d.openScope(f);var c=function(){f.callbackIntoModule(!1,function(){var t=O.getCallJSCb(r),n=O.getRef(r),a=n?d.refStore.get(n).get():0;if(t){var s=O.getContext(r);o.get(t)(u,a,s,e)}else{var i=a?d.handleStore.get(a).value:null;"function"==typeof i&&i()}})};try{if(p){var l=O.getResource(r),v=d.refStore.get(l).get(),g=d.handleStore.get(v).value,y=new DataView(a.buffer);p.node.makeCallback(g,c,[],{asyncId:y.getFloat64(r+O.offset.async_id,!0),triggerAsyncId:y.getFloat64(r+O.offset.trigger_async_id,!0)})}else c()}finally{d.closeScope(f)}}return n},dispatch:function(r){for(var e=!0,t=1e3,n=new Uint32Array(a.buffer),o=r+O.offset.dispatch_state>>2;e&&0!==--t;)Atomics.store(n,o,1),e=O.dispatchOne(r),1!==Atomics.exchange(n,o,0)&&(e=!0);e&&O.send(r)},send:function(r){1&~Atomics.or(new Uint32Array(a.buffer),r+O.offset.dispatch_state>>2,2)&&(void 0!==f&&f?postMessage({__emnapi__:{type:"tsfn-send",payload:{tsfn:r}}}):d.feature.setImmediate(function(){O.dispatch(r)}))}};var z={unusedWorkers:[],runningWorkers:[],workQueue:[],workerReady:null,offset:{resource:0,async_id:8,trigger_async_id:16,env:24,data:28,execute:32,complete:36,end:40},init:function(){z.unusedWorkers=[],z.runningWorkers=[],z.workQueue=[],z.workerReady=null},addListener:function(r){if(!r)return!1;if(r._emnapiAWMTListener)return!0;var e=function(e){var t=(u?e:e.data).__emnapi__;if(t){var n=t.type,a=t.payload;"async-work-complete"===n?(d.decreaseWaitingRequestCounter(),z.runningWorkers.splice(z.runningWorkers.indexOf(r),1),z.unusedWorkers.push(r),z.checkIdleWorker(),z.callComplete(a.work,0)):"async-work-queue"===n?z.scheduleWork(a.work):"async-work-cancel"===n&&z.cancelWork(a.work)}};return r._emnapiAWMTListener={handler:e,dispose:function(){u?r.off("message",e):r.removeEventListener("message",e,!1),delete r._emnapiAWMTListener}},u?r.on("message",e):r.addEventListener("message",e,!1),!0},initWorkers:function(r){if(f)return z.workerReady||(z.workerReady=Promise.resolve());if(z.workerReady)return z.workerReady;if("function"!=typeof y)throw new TypeError("`options.onCreateWorker` is not a function");var e=[],t=[];if(!("emnapi_async_worker_create"in n.exports))throw new TypeError("`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags");for(var a=0;a0&&z.workQueue.length>0){var r=z.unusedWorkers.shift(),e=z.workQueue.shift();z.runningWorkers.push(r),r.postMessage({__emnapi__:{type:"async-work-execute",payload:{work:e}}})}},getResource:function(r){return O.loadSizeTypeValue(r+z.offset.resource,!1)},getExecute:function(r){return O.loadSizeTypeValue(r+z.offset.execute,!1)},getComplete:function(r){return O.loadSizeTypeValue(r+z.offset.complete,!1)},getEnv:function(r){return O.loadSizeTypeValue(r+z.offset.env,!1)},getData:function(r){return O.loadSizeTypeValue(r+z.offset.data,!1)},scheduleWork:function(r){var e;if(f)(0,g.postMessage)({__emnapi__:{type:"async-work-queue",payload:{work:r}}});else if(d.increaseWaitingRequestCounter(),z.workQueue.push(r),null===(e=z.workerReady)||void 0===e?void 0:e.ready)z.checkIdleWorker();else{var t=function(r){throw d.decreaseWaitingRequestCounter(),r};try{z.initWorkers(m()).then(function(){z.workerReady.ready=!0,z.checkIdleWorker()},t)}catch(r){t(r)}}},cancelWork:function(r){if(f)return(0,g.postMessage)({__emnapi__:{type:"async-work-cancel",payload:{work:r}}}),0;var e=z.workQueue.indexOf(r);return-1!==e?(z.workQueue.splice(e,1),d.feature.setImmediate(function(){d.decreaseWaitingRequestCounter(),z.checkIdleWorker(),z.callComplete(r,11)}),0):9},callComplete:function(r,e){var t=z.getComplete(r),n=z.getEnv(r),s=z.getData(r),i=d.envStore.get(n),u=d.openScope(i),f=function(){t&&i.callbackIntoModule(!0,function(){o.get(t)(n,e,s)})};try{if(p){var c=z.getResource(r),l=d.refStore.get(c).get(),v=d.handleStore.get(l).value,g=new DataView(a.buffer),y=g.getFloat64(r+z.offset.async_id,!0),h=g.getFloat64(r+z.offset.trigger_async_id,!0);p.node.makeCallback(v,f,[],{asyncId:y,triggerAsyncId:h})}else f()}finally{d.closeScope(i,u)}}},M=L?function(r,e,t,n,o,s,i){if(!r)return 1;var u,f=d.envStore.get(r);if(f.checkGCAccess(),!n)return f.setLastError(1);if(!i)return f.setLastError(1);if(u=e?Object(d.handleStore.get(e).value):{},!t)return f.setLastError(1);var c=String(d.handleStore.get(t).value),l=j.create(r,u,c,n,o,s);return new DataView(a.buffer).setUint32(i,l,!0),f.clearLastError()}:function(r,e,t,n,o,i,u){if(!r)return 1;var f,c=d.envStore.get(r);if(c.checkGCAccess(),!n)return c.setLastError(1);if(!u)return c.setLastError(1);if(f=e?Object(d.handleStore.get(e).value):{},!t)return c.setLastError(1);var l=z.offset.end,p=s(l);if(!p)return c.setLastError(9);new Uint8Array(a.buffer).subarray(p,p+l).fill(0);var v=c.ensureHandleId(f),g=d.createReference(c,v,1,1).id,y=new DataView(a.buffer);return y.setUint32(p,g,!0),x(v,t,-1,p+z.offset.async_id),y.setUint32(p+z.offset.env,r,!0),y.setUint32(p+z.offset.execute,n,!0),y.setUint32(p+z.offset.complete,o,!0),y.setUint32(p+z.offset.data,i,!0),y.setUint32(u,p,!0),c.clearLastError()},F=L?function(r,e){if(!r)return 1;var t=d.envStore.get(r);return t.checkGCAccess(),e?(j.remove(e),t.clearLastError()):t.setLastError(1)}:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=z.getResource(e);if(d.refStore.get(n).dispose(),p){var o=new DataView(a.buffer);R(o.getFloat64(e+z.offset.async_id,!0),o.getFloat64(e+z.offset.trigger_async_id,!0))}return i(e),t.clearLastError()},W=L?function(r,e){if(!r)return 1;var t=d.envStore.get(r);return e?(j.queue(e),t.clearLastError()):t.setLastError(1)}:function(r,e){if(!r)return 1;var t=d.envStore.get(r);return e?(z.scheduleWork(e),t.clearLastError()):t.setLastError(1)},N=L?function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(!e)return t.setLastError(1);var n=j.cancel(e);return 0===n?t.clearLastError():t.setLastError(n)}:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(!e)return t.setLastError(1);var n=z.cancelWork(e);return 0===n?t.clearLastError():t.setLastError(n)};g.initWorker=function(r){if(!g.childThread)throw new Error("startThread is only available in child threads");if("function"!=typeof n.exports.emnapi_async_worker_init)throw new TypeError("`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags");n.exports.emnapi_async_worker_init(r)},g.executeAsyncWork=function(r){if(f){var e=z.getExecute(r),t=z.getEnv(r),n=z.getData(r);o.get(e)(t,n),(0,g.postMessage)({__emnapi__:{type:"async-work-complete",payload:{work:r}}})}};var J=Object.freeze({__proto__:null,napi_cancel_async_work:N,napi_create_async_work:M,napi_delete_async_work:F,napi_queue_async_work:W}),P={registry:"function"==typeof FinalizationRegistry?new FinalizationRegistry(function(r){i(r)}):void 0,table:new WeakMap,wasmMemoryViewTable:new WeakMap,init:function(){P.registry="function"==typeof FinalizationRegistry?new FinalizationRegistry(function(r){i(r)}):void 0,P.table=new WeakMap,P.wasmMemoryViewTable=new WeakMap},isSharedArrayBuffer:function(r){return"function"==typeof SharedArrayBuffer&&r instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(r)},isDetachedArrayBuffer:function(r){if(0===r.byteLength)try{new Uint8Array(r)}catch(r){return!0}return!1},getArrayBufferPointer:function(r,e){var t,n={address:0,ownership:0,runtimeAllocated:0};if(r===a.buffer)return n;var o=P.isDetachedArrayBuffer(r);if(P.table.has(r)){var i=P.table.get(r);return o?(i.address=0,i):(e&&0===i.ownership&&1===i.runtimeAllocated&&new Uint8Array(a.buffer).set(new Uint8Array(r),i.address),i)}if(o||0===r.byteLength)return n;if(!e)return n;var u=s(r.byteLength);if(!u)throw new Error("Out of memory");return new Uint8Array(a.buffer).set(new Uint8Array(r),u),n.address=u,n.ownership=P.registry?0:1,n.runtimeAllocated=1,P.table.set(r,n),null===(t=P.registry)||void 0===t||t.register(r,u),n},getOrUpdateMemoryView:function(r){if(r.buffer===a.buffer)return P.wasmMemoryViewTable.has(r)||P.wasmMemoryViewTable.set(r,{Ctor:r.constructor,address:r.byteOffset,length:r instanceof DataView?r.byteLength:r.length,ownership:1,runtimeAllocated:0}),r;if((P.isDetachedArrayBuffer(r.buffer)||"function"==typeof SharedArrayBuffer&&r.buffer instanceof SharedArrayBuffer)&&P.wasmMemoryViewTable.has(r)){var e=P.wasmMemoryViewTable.get(r),t=e.Ctor,n=void 0,o=d.feature.Buffer;return n="function"==typeof o&&t===o?o.from(a.buffer,e.address,e.length):new t(a.buffer,e.address,e.length),P.wasmMemoryViewTable.set(n,e),n}return r},getViewPointer:function(r,e){if((r=P.getOrUpdateMemoryView(r)).buffer===a.buffer){if(P.wasmMemoryViewTable.has(r)){var t=P.wasmMemoryViewTable.get(r);return{address:t.address,ownership:t.ownership,runtimeAllocated:t.runtimeAllocated,view:r}}return{address:r.byteOffset,ownership:1,runtimeAllocated:0,view:r}}var n=P.getArrayBufferPointer(r.buffer,e),o=n.address,s=n.ownership,i=n.runtimeAllocated;return{address:0===o?0:o+r.byteOffset,ownership:s,runtimeAllocated:i,view:r}}},q={utf8Decoder:void 0,utf16Decoder:void 0,init:function(){var r,e={decode:function(r){for(var e=0,t=Math.min(4096,r.length+1),n=new Uint16Array(t),a=[],o=0;;){var s=e=t-1){var i=n.subarray(0,o);if(a.push(String.fromCharCode.apply(null,i)),!s)return a.join("");r=r.subarray(e),e=0,o=0}var u=r[e++];if(128&u){if(192==(224&u)){var f=63&r[e++];n[o++]=(31&u)<<6|f}else if(224==(240&u)){f=63&r[e++];var c=63&r[e++];n[o++]=(31&u)<<12|f<<6|c}else if(240==(248&u)){var l=(7&u)<<18|(f=63&r[e++])<<12|(c=63&r[e++])<<6|63&r[e++];l>65535&&(l-=65536,n[o++]=l>>>10&1023|55296,l=56320|1023&l),n[o++]=l}}else n[o++]=u}}};r="function"==typeof TextDecoder?new TextDecoder:e,q.utf8Decoder=r;var t,n={decode:function(r){var e=new Uint16Array(r.buffer,r.byteOffset,r.byteLength/2);if(e.length<=4096)return String.fromCharCode.apply(null,e);for(var t=[],n=0,a=0;n=55296&&e<=57343?(t+=4,++n):t+=3;return t},UTF8ToString:function(r,e){if(!r||!e)return"";r>>>=0;var t=new Uint8Array(a.buffer),n=r;if(-1===e)for(;t[n];)++n;else n=r+(e>>>0);if((e=n-r)<=16){for(var o=r,s="";o>10,56320|1023&c)}}else s+=String.fromCharCode((31&i)<<6|u)}else s+=String.fromCharCode(i)}return s}return q.utf8Decoder.decode("function"==typeof SharedArrayBuffer&&t.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(t.buffer)?t.slice(r,n):t.subarray(r,n))},stringToUTF8:function(r,e,t){var n=new Uint8Array(a.buffer),o=e;if(!(t>0))return 0;for(var s=o>>>=0,i=o+t-1,u=0;u=55296&&f<=57343)f=65536+((1023&f)<<10)|1023&r.charCodeAt(++u);if(f<=127){if(o>=i)break;n[o++]=f}else if(f<=2047){if(o+1>=i)break;n[o++]=192|f>>6,n[o++]=128|63&f}else if(f<=65535){if(o+2>=i)break;n[o++]=224|f>>12,n[o++]=128|f>>6&63,n[o++]=128|63&f}else{if(o+3>=i)break;n[o++]=240|f>>18,n[o++]=128|f>>12&63,n[o++]=128|f>>6&63,n[o++]=128|63&f}}return n[o]=0,o-s},UTF16ToString:function(r,e){if(!r||!e)return"";var t=r>>>=0;if(-1===e){for(var n=t>>1,o=new Uint16Array(a.buffer);o[n];)++n;t=n<<1}else t=r+2*(e>>>0);if((e=t-r)<=32)return String.fromCharCode.apply(null,new Uint16Array(a.buffer,r,e/2));var s=new Uint8Array(a.buffer);return q.utf16Decoder.decode("function"==typeof SharedArrayBuffer&&s.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(s.buffer)?s.slice(r,t):s.subarray(r,t))},stringToUTF16:function(r,e,t){if(void 0===t&&(t=2147483647),t<2)return 0;for(var n=e,o=(t-=2)<2*r.length?t/2:r.length,s=new DataView(a.buffer),i=0;i>>0;if(0!==t&&!e)return s.setLastError(1);if(!n)return s.setLastError(1);if(!(i||u<=2147483647))return s.setLastError(1);var f=o(e,i,u),c=d.addToCurrentScope(f).id;return new DataView(a.buffer).setUint32(n,c,!0),s.clearLastError()},newExternalString:function(r,e,t,n,o,s,i,u,f){if(!r)return 1;var c=d.envStore.get(r);c.checkGCAccess();var l=-1===t,p=t>>>0;if(0!==t&&!e)return c.setLastError(1);if(!s)return c.setLastError(1);if(!(l||p<=2147483647))return c.setLastError(1);var v=u(r,e,t,s);if(0===v){if(i)new DataView(a.buffer).setInt8(i,1,!0);n&&c.callFinalizer(n,e,o)}return v}};function H(r,e,t,n,o,s,i){if(!r)return 1;var u=d.envStore.get(r);if(u.checkGCAccess(),!e)return u.setLastError(1);var f=d.handleStore.get(e);if(!f.isTypedArray())return u.setLastError(1);var c,l=f.value,p=new DataView(a.buffer);if(t){var v=void 0;if(l instanceof Int8Array)v=0;else if(l instanceof Uint8Array)v=1;else if(l instanceof Uint8ClampedArray)v=2;else if(l instanceof Int16Array)v=3;else if(l instanceof Uint16Array)v=4;else if(l instanceof Int32Array)v=5;else if(l instanceof Uint32Array)v=6;else if("function"==typeof Float16Array&&l instanceof Float16Array)v=11;else if(l instanceof Float32Array)v=7;else if(l instanceof Float64Array)v=8;else if(l instanceof BigInt64Array)v=9;else{if(!(l instanceof BigUint64Array))return u.setLastError(9);v=10}p.setInt32(t,v,!0)}if(n&&p.setUint32(n,l.length,!0),o||s){if(c=l.buffer,o){var g=P.getViewPointer(l,!0).address;p.setUint32(o,g,!0)}if(s){var y=u.ensureHandleId(c);p.setUint32(s,y,!0)}}return i&&p.setUint32(i,l.byteOffset,!0),u.clearLastError()}function Q(r,e,t,n,o,s){if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!e)return i.setLastError(1);var u=d.handleStore.get(e);if(!u.isDataView())return i.setLastError(1);var f,c=u.value,l=new DataView(a.buffer);if(t&&l.setUint32(t,c.byteLength,!0),n||o){if(f=c.buffer,n){var p=P.getViewPointer(c,!0).address;l.setUint32(n,p,!0)}if(o){var v=i.ensureHandleId(f);l.setUint32(o,v,!0)}}return s&&l.setUint32(s,c.byteOffset,!0),i.clearLastError()}var $=Object.freeze({__proto__:null,napi_get_array_length:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if(!o.isArray())return n.setLastError(8);var s=o.value.length>>>0;return new DataView(a.buffer).setUint32(t,s,!0),n.getReturnStatus()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_get_arraybuffer_info:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!e)return o.setLastError(1);var s=d.handleStore.get(e);if(!s.isArrayBuffer()&&!P.isSharedArrayBuffer(s.value))return o.setLastError(1);var i=new DataView(a.buffer);if(t){var u=P.getArrayBufferPointer(s.value,!0).address;i.setUint32(t,u,!0)}return n&&i.setUint32(n,s.value.byteLength,!0),o.clearLastError()},napi_get_buffer_info:function(r,e,t,n){if(!r)return 1;var a=d.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);var o=d.handleStore.get(e);return o.isBuffer(d.feature.Buffer)?o.isDataView()?Q(r,e,n,t,0,0):H(r,e,0,n,t,0,0):a.setLastError(1)},napi_get_dataview_info:Q,napi_get_date_value:function(r,e,t){var n;if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(e);return s.isDate()?(n=s.value.valueOf(),new DataView(a.buffer).setFloat64(t,n,!0),o.getReturnStatus()):o.setLastError(1)}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_get_prototype:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if(null==o.value)throw new TypeError("Cannot convert undefined or null to object");var s=void 0;try{s=o.isObject()||o.isFunction()?o.value:Object(o.value)}catch(r){return n.setLastError(2)}var i=n.ensureHandleId(Object.getPrototypeOf(s));return new DataView(a.buffer).setUint32(t,i,!0),n.getReturnStatus()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_get_typedarray_info:H,napi_get_value_bigint_int64:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!d.feature.supportBigInt)return o.setLastError(9);if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(e).value;if("bigint"!=typeof s)return o.setLastError(6);var i=new DataView(a.buffer);s>=BigInt(-1)*(BigInt(1)<=BigInt(1)<>BigInt(32));return i.setInt32(t,u,!0),i.setInt32(t+4,f,!0),o.clearLastError()},napi_get_value_bigint_uint64:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!d.feature.supportBigInt)return o.setLastError(9);if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(e).value;if("bigint"!=typeof s)return o.setLastError(6);var i=new DataView(a.buffer);s>=BigInt(0)&&s>BigInt(32));return i.setUint32(t,u,!0),i.setUint32(t+4,f,!0),o.clearLastError()},napi_get_value_bigint_words:function(r,e,t,n,o){if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!d.feature.supportBigInt)return s.setLastError(9);if(!e)return s.setLastError(1);if(!n)return s.setLastError(1);var i=d.handleStore.get(e);if(!i.isBigInt())return s.setLastError(17);for(var u=i.value>=BigInt(64);if(p=u?i.value*BigInt(-1):i.value,t||o){if(!t)return s.setLastError(1);if(!o)return s.setLastError(1);for(var v=[];p!==BigInt(0);){var g=p&(BigInt(1)<>=BigInt(64)}for(var y=Math.min(c,v.length),h=0;h>BigInt(32));f.setUint32(o+8*h,E,!0),f.setUint32(o+(8*h+4),_,!0)}f.setInt32(t,u?1:0,!0),f.setUint32(n,y,!0)}else c=l,f.setUint32(n,c,!0);return s.clearLastError()},napi_get_value_bool:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if("boolean"!=typeof o.value)return n.setLastError(7);var s=o.value?1:0;return new DataView(a.buffer).setInt8(t,s,!0),n.clearLastError()},napi_get_value_double:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if("number"!=typeof o.value)return n.setLastError(6);var s=o.value;return new DataView(a.buffer).setFloat64(t,s,!0),n.clearLastError()},napi_get_value_external:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if(!o.isExternal())return n.setLastError(1);var s=o.data();return new DataView(a.buffer).setUint32(t,s,!0),n.clearLastError()},napi_get_value_int32:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if("number"!=typeof o.value)return n.setLastError(6);var s=new Int32Array([o.value])[0];return new DataView(a.buffer).setInt32(t,s,!0),n.clearLastError()},napi_get_value_int64:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if("number"!=typeof o.value)return n.setLastError(6);var s=o.value,i=new DataView(a.buffer);return s===Number.POSITIVE_INFINITY||s===Number.NEGATIVE_INFINITY||isNaN(s)?(i.setInt32(t,0,!0),i.setInt32(t+4,0,!0)):s<-0x8000000000000000?(i.setInt32(t,0,!0),i.setInt32(t+4,2147483648,!0)):s>=0x8000000000000000?(i.setUint32(t,4294967295,!0),i.setUint32(t+4,2147483647,!0)):I(t,Math.trunc(s)),n.clearLastError()},napi_get_value_string_latin1:function(r,e,t,n,o){if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!e)return s.setLastError(1);n>>>=0;var i=d.handleStore.get(e);if("string"!=typeof i.value)return s.setLastError(3);var u=new DataView(a.buffer);if(t)if(0!==n){for(var f=0,c=void 0,l=0;l>>=0;var i=d.handleStore.get(e);if("string"!=typeof i.value)return s.setLastError(3);var u=new DataView(a.buffer);if(t)if(0!==n){var f=q.stringToUTF16(i.value,t,2*n);o&&u.setUint32(o,f/2,!0)}else o&&u.setUint32(o,0,!0);else{if(!o)return s.setLastError(1);u.setUint32(o,i.value.length,!0)}return s.clearLastError()},napi_get_value_string_utf8:function(r,e,t,n,o){if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!e)return s.setLastError(1);n>>>=0;var i=d.handleStore.get(e);if("string"!=typeof i.value)return s.setLastError(3);var u=new DataView(a.buffer);if(t)if(0!==n){var f=q.stringToUTF8(i.value,t,n);o&&u.setUint32(o,f,!0)}else o&&u.setUint32(o,0,!0);else{if(!o)return s.setLastError(1);var c=q.lengthBytesUTF8(i.value);u.setUint32(o,c,!0)}return s.clearLastError()},napi_get_value_uint32:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if("number"!=typeof o.value)return n.setLastError(6);var s=new Uint32Array([o.value])[0];return new DataView(a.buffer).setUint32(t,s,!0),n.clearLastError()},node_api_set_prototype:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=d.handleStore.get(e).value;if(null==a)throw new TypeError("Cannot convert undefined or null to object");var o=typeof a,s=void 0;try{s="object"===o&&null!==a||"function"===o?a:Object(a)}catch(r){return n.setLastError(2)}var i=d.handleStore.get(t).value;return Object.setPrototypeOf(s,i),n.getReturnStatus()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}}});function Y(r,e,t,n){return q.newString(r,e,t,n,function(r,e,t){var n="",o=0,s=new DataView(a.buffer);if(e)for(;;){if(!(i=s.getUint8(r,!0)))break;n+=String.fromCharCode(i),r++}else for(;o=10?23:10);u.clearLastError();try{if(!d.feature.supportBigInt)return u.setLastError(9);if(!o)return u.setLastError(1);if((t>>>=0)>2147483647)return u.setLastError(1);if(t>16384)throw new RangeError("Maximum BigInt size exceeded");var f=BigInt(0),c=new DataView(a.buffer);for(i=0;i>>0).id;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},node_api_create_external_string_latin1:function(r,e,t,n,a,o,s){return q.newExternalString(r,e,t,n,a,o,s,Y,void 0)},node_api_create_external_string_utf16:function(r,e,t,n,a,o,s){return q.newExternalString(r,e,t,n,a,o,s,X,void 0)},node_api_create_property_key_latin1:function(r,e,t,n){return Y(r,e,t,n)},node_api_create_property_key_utf16:function(r,e,t,n){return X(r,e,t,n)},node_api_create_property_key_utf8:function(r,e,t,n){return Z(r,e,t,n)}});function rr(r,e,t,n,a){var s,i=e&&t?q.UTF8ToString(e,t):"",u=o.get(n),f=function(r){return u(r.id,r.ctx.scopeStore.currentScope.id)},c=function(r,e){return function(){var t=r.ctx.openScope(r),n=t.callbackInfo;n.data=a,n.args=arguments,n.thiz=this,n.fn=s;try{var o=r.callIntoModule(e);return o?r.ctx.handleStore.get(o).value:void 0}finally{n.data=0,n.args=void 0,n.thiz=void 0,n.fn=void 0,r.ctx.closeScope(r,t)}}};if(""===i)return{status:0,f:s=c(r,f)};if(!/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(i))return{status:1,f:void 0};if(d.feature.supportNewFunction){var l=c(r,f);try{s=new Function("_","return function "+i+'(){"use strict";return _.apply(this,arguments);};')(l)}catch(e){s=c(r,f),d.feature.canSetFunctionName&&Object.defineProperty(s,"name",{value:i})}}else s=c(r,f),d.feature.canSetFunctionName&&Object.defineProperty(s,"name",{value:i});return{status:0,f:s}}function er(r,e,t,n,a,o,s,i,u){if(a||o){var f=void 0,c=void 0;a&&(f=rr(r,0,0,a,u).f),o&&(c=rr(r,0,0,o,u).f);var l={configurable:!!(4&i),enumerable:!!(2&i),get:f,set:c};Object.defineProperty(e,t,l)}else if(n){l={configurable:!!(4&i),enumerable:!!(2&i),writable:!!(1&i),value:rr(r,0,0,n,u).f};Object.defineProperty(e,t,l)}else{l={configurable:!!(4&i),enumerable:!!(2&i),writable:!!(1&i),value:d.handleStore.get(s).value};Object.defineProperty(e,t,l)}}function tr(r){var e=d.handleStore.get(r);return e.isObject()||e.isFunction()?(void 0!==P&&ArrayBuffer.isView(e.value)&&P.wasmMemoryViewTable.has(e.value)&&(e=d.addToCurrentScope(P.wasmMemoryViewTable.get(e.value))),{status:0,handle:e}):{status:1}}function nr(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!e)return s.setLastError(1);if(0===n&&!t)return s.setLastError(1);var i=d.handleStore.get(e);if(!i.isObject()&&!i.isFunction())return s.setLastError(1);var u=s.getObjectBinding(i.value),f=u.wrapped,c=d.refStore.get(f);if(!c)return s.setLastError(1);if(t)o=c.data(),new DataView(a.buffer).setUint32(t,o,!0);return 1===n&&(u.wrapped=0,1===c.ownership()?c.resetFinalizer():c.dispose()),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}}function ar(r,e,t,n,o,s){if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!d.feature.supportFinalizer)return i.setLastError(9);if(!e)return i.setLastError(1);if(!n)return i.setLastError(1);var u=tr(e);if(0!==u.status)return i.setLastError(u.status);var f=u.handle,c=s?1:0,l=d.createReferenceWithFinalizer(i,f.id,0,c,n,t,o);if(s){var p=l.id;new DataView(a.buffer).setUint32(s,p,!0)}return i.clearLastError()}var or=Object.freeze({__proto__:null,napi_add_finalizer:ar,napi_check_object_type_tag:function(r,e,t,n){var o=!0;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!e)return s.setLastError(s.tryCatch.hasCaught()?10:1);var i=d.handleStore.get(e);if(!i.isObject()&&!i.isFunction())return s.setLastError(s.tryCatch.hasCaught()?10:2);if(!t)return s.setLastError(s.tryCatch.hasCaught()?10:1);if(!n)return s.setLastError(s.tryCatch.hasCaught()?10:1);var u=s.getObjectBinding(i.value);if(null!==u.tag){var f=u.tag,c=new Uint32Array(a.buffer,t,4);o=f[0]===c[0]&&f[1]===c[1]&&f[2]===c[2]&&f[3]===c[3]}else o=!1;return new DataView(a.buffer).setInt8(n,o?1:0,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_define_class:function(r,e,t,n,o,s,i,u){var f,c,l;if(!r)return 1;var p=d.envStore.get(r);if(p.checkGCAccess(),!p.tryCatch.isEmpty())return p.setLastError(10);if(!p.canCallIntoJs())return p.setLastError(p.moduleApiVersion>=10?23:10);p.clearLastError();try{if(!u)return p.setLastError(1);if(!n)return p.setLastError(1);if((s>>>=0)>0&&!i)return p.setLastError(1);if(t<-1||t>2147483647||!e)return p.setLastError(1);var v=rr(p,e,t,n,o);if(0!==v.status)return p.setLastError(v.status);for(var g=v.f,y=void 0,h=new DataView(a.buffer),E=0;E=10?23:10);n.clearLastError();try{if(!e)return n.setLastError(n.tryCatch.hasCaught()?10:1);var o=d.handleStore.get(e);if(!o.isObject()&&!o.isFunction())return n.setLastError(n.tryCatch.hasCaught()?10:2);if(!t)return n.setLastError(n.tryCatch.hasCaught()?10:1);var s=n.getObjectBinding(o.value);if(null!==s.tag)return n.setLastError(n.tryCatch.hasCaught()?10:1);var i=new Uint8Array(16);return i.set(new Uint8Array(a.buffer,t,16)),s.tag=new Uint32Array(i.buffer),n.getReturnStatus()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_unwrap:function(r,e,t){return nr(r,e,t,0)},napi_wrap:function(r,e,t,n,o,s){return function(r,e,t,n,o,s){var i;if(!r)return 1;var u=d.envStore.get(r);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!d.feature.supportFinalizer){if(n)throw d.createNotSupportWeakRefError("napi_wrap",'Parameter "finalize_cb" must be 0(NULL)');if(s)throw d.createNotSupportWeakRefError("napi_wrap",'Parameter "result" must be 0(NULL)')}if(!e)return u.setLastError(1);var f=tr(e);if(0!==f.status)return u.setLastError(f.status);var c=f.handle;if(0!==u.getObjectBinding(c.value).wrapped)return u.setLastError(1);var l=void 0;if(s){if(!n)return u.setLastError(1);i=(l=d.createReferenceWithFinalizer(u,c.id,0,1,n,t,o)).id,new DataView(a.buffer).setUint32(s,i,!0)}else l=n?d.createReferenceWithFinalizer(u,c.id,0,0,n,t,o):d.createReferenceWithData(u,c.id,0,0,t);return u.getObjectBinding(c.value).wrapped=l.id,u.getReturnStatus()}catch(r){return u.tryCatch.setError(r),u.setLastError(10)}}(r,e,t,n,o,s)},node_api_post_finalizer:function(r,e,t,n){if(!r)return 1;var a=d.envStore.get(r);return a.enqueueFinalizer(d.createTrackedFinalizer(a,e,t,n)),a.clearLastError()}});function sr(r,e,t,n,o,s,i){var u;if(!r)return 1;var f=d.envStore.get(r);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!i)return f.setLastError(1);if(n>>>=0,t||(n=0),n>2147483647)throw new RangeError("Cannot create a memory view larger than 2147483647 bytes");if(t+n>a.buffer.byteLength)throw new RangeError("Memory out of range");if(!d.feature.supportFinalizer&&o)throw d.createNotSupportWeakRefError("emnapi_create_memory_view",'Parameter "finalize_cb" must be 0(NULL)');var c=void 0;switch(e){case 0:c={Ctor:Int8Array,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 1:c={Ctor:Uint8Array,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 2:c={Ctor:Uint8ClampedArray,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 3:c={Ctor:Int16Array,address:t,length:n>>1,ownership:1,runtimeAllocated:0};break;case 4:c={Ctor:Uint16Array,address:t,length:n>>1,ownership:1,runtimeAllocated:0};break;case 5:c={Ctor:Int32Array,address:t,length:n>>2,ownership:1,runtimeAllocated:0};break;case 6:c={Ctor:Uint32Array,address:t,length:n>>2,ownership:1,runtimeAllocated:0};break;case 7:c={Ctor:Float32Array,address:t,length:n>>2,ownership:1,runtimeAllocated:0};break;case 8:c={Ctor:Float64Array,address:t,length:n>>3,ownership:1,runtimeAllocated:0};break;case 9:c={Ctor:BigInt64Array,address:t,length:n>>3,ownership:1,runtimeAllocated:0};break;case 10:c={Ctor:BigUint64Array,address:t,length:n>>3,ownership:1,runtimeAllocated:0};break;case-1:c={Ctor:DataView,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 11:if("function"!=typeof Float16Array)return f.setLastError(1);c={Ctor:Float16Array,address:t,length:n>>1,ownership:1,runtimeAllocated:0};break;case-2:if(!d.feature.Buffer)throw d.createNotSupportBufferError("emnapi_create_memory_view","");c={Ctor:d.feature.Buffer,address:t,length:n,ownership:1,runtimeAllocated:0};break;default:return f.setLastError(1)}var l=c.Ctor,p=-2===e?d.feature.Buffer.from(a.buffer,c.address,c.length):new l(a.buffer,c.address,c.length),v=d.addToCurrentScope(p);if(P.wasmMemoryViewTable.set(p,c),o){var g=ar(r,v.id,t,o,s,0);if(10===g){var y=f.tryCatch.extractException();throw f.clearLastError(),y}if(0!==g)return f.setLastError(g)}return u=v.id,new DataView(a.buffer).setUint32(i,u,!0),f.getReturnStatus()}catch(y){return f.tryCatch.setError(y),f.setLastError(10)}}function ir(r,e,t,n){var o;if(t=null!=t?t:0,t>>>=0,e instanceof ArrayBuffer||P.isSharedArrayBuffer(e)){if(!(i=P.getArrayBufferPointer(e,!1).address))throw new Error("Unknown ArrayBuffer address");if("number"==typeof n&&-1!==n||(n=e.byteLength-t),0===(n>>>=0))return e;o=new Uint8Array(e,t,n);var s=new Uint8Array(a.buffer);return r?s.set(o,i):o.set(s.subarray(i,i+n)),e}if(ArrayBuffer.isView(e)){var i,u=P.getViewPointer(e,!1),f=u.view;if(!(i=u.address))throw new Error("Unknown ArrayBuffer address");if("number"==typeof n&&-1!==n||(n=f.byteLength-t),0===(n>>>=0))return f;o=new Uint8Array(f.buffer,f.byteOffset+t,n);s=new Uint8Array(a.buffer);return r?s.set(o,i):o.set(s.subarray(i,i+n)),f}throw new TypeError("emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter")}function ur(r){var e,t=r instanceof ArrayBuffer,n=r instanceof DataView,a=ArrayBuffer.isView(r)&&!n;if(!(t||a||n||P.isSharedArrayBuffer(r)))throw new TypeError("emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter");return{address:(e=t?P.getArrayBufferPointer(r,!1):P.getViewPointer(r,!1)).address,ownership:e.ownership,runtimeAllocated:e.runtimeAllocated}}var fr=Object.freeze({__proto__:null,$emnapiGetMemoryAddress:ur,$emnapiSyncMemory:ir,emnapi_create_memory_view:sr,emnapi_get_memory_address:function(r,e,t,n,o){var s,i,u,f;if(!r)return 1;var c=d.envStore.get(r);if(c.checkGCAccess(),!c.tryCatch.isEmpty())return c.setLastError(10);if(!c.canCallIntoJs())return c.setLastError(c.moduleApiVersion>=10?23:10);c.clearLastError();try{if(!e)return c.setLastError(1);if(!t&&!n&&!o)return c.setLastError(1);s=(f=ur(c.ctx.handleStore.get(e).value)).address;var l=new DataView(a.buffer);return t&&l.setUint32(t,s,!0),n&&(u=f.ownership,l.setInt32(n,u,!0)),o&&(i=f.runtimeAllocated,l.setInt8(o,i,!0)),c.getReturnStatus()}catch(r){return c.tryCatch.setError(r),c.setLastError(10)}},emnapi_get_runtime_version:function(r,e){if(!r)return 1;var t,n=d.envStore.get(r);if(!e)return n.setLastError(1);try{t=d.getRuntimeVersions().version}catch(r){return n.setLastError(9)}var o=t.split(".").map(function(r){return Number(r)}),s=new DataView(a.buffer);return s.setUint32(e,o[0],!0),s.setUint32(e+4,o[1],!0),s.setUint32(e+8,o[2],!0),n.clearLastError()},emnapi_is_node_binding_available:function(){return p?1:0},emnapi_is_support_bigint:function(){return d.feature.supportBigInt?1:0},emnapi_is_support_weakref:function(){return d.feature.supportFinalizer?1:0},emnapi_sync_memory:function(r,e,t,n,o){var s;if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);var u=new DataView(a.buffer),f=u.getUint32(t,!0),c=i.ctx.handleStore.get(f);if(!(c.isArrayBuffer()||c.isTypedArray()||c.isDataView()||P.isSharedArrayBuffer(c.value)))return i.setLastError(1);var l=ir(Boolean(e),c.value,n,o);return c.value!==l&&(s=i.ensureHandleId(l),u.setUint32(t,s,!0)),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}}});function cr(r,e,t){r>>>=0;var n=t?new SharedArrayBuffer(r):new ArrayBuffer(r);if(e){var o=P.getArrayBufferPointer(n,!0).address;new DataView(a.buffer).setUint32(e,o,!0)}return n}var lr=Object.freeze({__proto__:null,napi_create_array:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=d.addToCurrentScope([]).id;return new DataView(a.buffer).setUint32(e,n,!0),t.clearLastError()},napi_create_array_with_length:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!t)return n.setLastError(1);e>>>=0;var o=d.addToCurrentScope(new Array(e)).id;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_create_arraybuffer:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);var i=cr(e,t,!1);return o=d.addToCurrentScope(i).id,new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_create_buffer:function(r,e,t,n){var o,i,u;if(!r)return 1;var f=d.envStore.get(r);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!n)return f.setLastError(1);var c=d.feature.Buffer;if(!c)throw d.createNotSupportBufferError("napi_create_buffer","");var l=void 0;e>>>=0;var p=new DataView(a.buffer);if(t&&0!==e){if(!(u=s(e)))throw new Error("Out of memory");new Uint8Array(a.buffer).subarray(u,u+e).fill(0);var v=c.from(a.buffer,u,e),g={Ctor:c,address:u,length:e,ownership:P.registry?0:1,runtimeAllocated:1};P.wasmMemoryViewTable.set(v,g),null===(o=P.registry)||void 0===o||o.register(g,u),i=d.addToCurrentScope(v).id,p.setUint32(n,i,!0),p.setUint32(t,u,!0)}else l=c.alloc(e),i=d.addToCurrentScope(l).id,p.setUint32(n,i,!0);return f.getReturnStatus()}catch(r){return f.tryCatch.setError(r),f.setLastError(10)}},napi_create_buffer_copy:function(r,e,t,n,o){var s;if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!o)return i.setLastError(1);var u=d.feature.Buffer;if(!u)throw d.createNotSupportBufferError("napi_create_buffer_copy","");var f=cr(e,n,!1),c=u.from(f);return c.set(new Uint8Array(a.buffer).subarray(t,t+e)),s=d.addToCurrentScope(c).id,new DataView(a.buffer).setUint32(o,s,!0),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_create_dataview:function(r,e,t,n,o){if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!o)return s.setLastError(1);e>>>=0,n>>>=0;var i=d.handleStore.get(t).value;return i instanceof ArrayBuffer||P.isSharedArrayBuffer(i)?function(r){if(e+n>r.byteLength){var t=new RangeError("byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in");throw t.code="ERR_NAPI_INVALID_DATAVIEW_ARGS",t}var i=new DataView(r,n,e);r===a.buffer&&(P.wasmMemoryViewTable.has(i)||P.wasmMemoryViewTable.set(i,{Ctor:DataView,address:n,length:e,ownership:1,runtimeAllocated:0}));var u=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(o,u,!0),s.getReturnStatus()}(i):s.setLastError(1)}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_create_date:function(r,e,t){var n;if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{return t?(n=d.addToCurrentScope(new Date(e)).id,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()):o.setLastError(1)}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_create_external:function(r,e,t,n,o){var s;if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!o)return i.setLastError(1);if(!d.feature.supportFinalizer&&t)throw d.createNotSupportWeakRefError("napi_create_external",'Parameter "finalize_cb" must be 0(NULL)');var u=d.getCurrentScope().addExternal(e);return t&&d.createReferenceWithFinalizer(i,u.id,0,0,t,e,n),s=u.id,new DataView(a.buffer).setUint32(o,s,!0),i.clearLastError()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_create_external_arraybuffer:function(r,e,t,n,o,s){var i;if(!r)return 1;var u=d.envStore.get(r);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!s)return u.setLastError(1);if(t>>>=0,e||(t=0),e+t>a.buffer.byteLength)throw new RangeError("Memory out of range");if(!d.feature.supportFinalizer&&n)throw d.createNotSupportWeakRefError("napi_create_external_arraybuffer",'Parameter "finalize_cb" must be 0(NULL)');var f=new ArrayBuffer(t);if(0===t)try{(new(0,d.feature.MessageChannel)).port1.postMessage(f,[f])}catch(r){}else new Uint8Array(f).set(new Uint8Array(a.buffer).subarray(e,e+t)),P.table.set(f,{address:e,ownership:1,runtimeAllocated:0});var c=d.addToCurrentScope(f);if(n){var l=ar(r,c.id,e,n,o,0);if(10===l){var p=u.tryCatch.extractException();throw u.clearLastError(),p}if(0!==l)return u.setLastError(l)}return i=c.id,new DataView(a.buffer).setUint32(s,i,!0),u.getReturnStatus()}catch(p){return u.tryCatch.setError(p),u.setLastError(10)}},napi_create_external_buffer:function(r,e,t,n,a,o){return sr(r,-2,t,e,n,a,o)},napi_create_object:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=d.addToCurrentScope({}).id;return new DataView(a.buffer).setUint32(e,n,!0),t.clearLastError()},napi_create_object_with_properties:function(r,e,t,n,o,s){if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!s)return i.setLastError(1);if((o>>>=0)>0){if(!t)return i.setLastError(1);if(!n)return i.setLastError(1)}for(var u,f=e?d.handleStore.get(e).value:null,c={},l=new DataView(a.buffer),p=0;p=10?23:10);u.clearLastError();try{if(!n)return u.setLastError(1);if(!s)return u.setLastError(1);var f=d.handleStore.get(n);if(!f.isArrayBuffer())return u.setLastError(1);var c=f.value,l=function(r,e,t,n,o,u){var f,c;if((o>>>=0,u>>>=0,t>1)&&o%t!==0)return(c=new RangeError("start offset of ".concat(null!==(f=e.name)&&void 0!==f?f:""," should be a multiple of ").concat(t))).code="ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT",r.tryCatch.setError(c),r.setLastError(9);if(u*t+o>n.byteLength)return(c=new RangeError("Invalid typed array length")).code="ERR_NAPI_INVALID_TYPEDARRAY_LENGTH",r.tryCatch.setError(c),r.setLastError(9);var l=new e(n,o,u);return n===a.buffer&&(P.wasmMemoryViewTable.has(l)||P.wasmMemoryViewTable.set(l,{Ctor:e,address:o,length:u,ownership:1,runtimeAllocated:0})),i=d.addToCurrentScope(l).id,new DataView(a.buffer).setUint32(s,i,!0),r.getReturnStatus()};switch(e){case 0:return l(u,Int8Array,1,c,o,t);case 1:return l(u,Uint8Array,1,c,o,t);case 2:return l(u,Uint8ClampedArray,1,c,o,t);case 3:return l(u,Int16Array,2,c,o,t);case 4:return l(u,Uint16Array,2,c,o,t);case 5:return l(u,Int32Array,4,c,o,t);case 6:return l(u,Uint32Array,4,c,o,t);case 7:return l(u,Float32Array,4,c,o,t);case 8:return l(u,Float64Array,8,c,o,t);case 9:return l(u,BigInt64Array,8,c,o,t);case 10:return l(u,BigUint64Array,8,c,o,t);case 11:return"function"!=typeof Float16Array?u.setLastError(1):l(u,Float16Array,2,c,o,t);default:return u.setLastError(1)}}catch(r){return u.tryCatch.setError(r),u.setLastError(10)}},node_api_create_buffer_from_arraybuffer:function(r,e,t,n,o){var s;if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!e)return i.setLastError(1);if(!o)return i.setLastError(1);t>>>=0,n>>>=0;var u=d.handleStore.get(e);if(!u.isArrayBuffer())return i.setLastError(1);var f=u.value;if(n+t>f.byteLength){var c=new RangeError("The byte offset + length is out of range");throw c.code="ERR_OUT_OF_RANGE",c}var l=d.feature.Buffer;if(!l)throw d.createNotSupportBufferError("node_api_create_buffer_from_arraybuffer","");var p=l.from(f,t,n);return f===a.buffer&&(P.wasmMemoryViewTable.has(p)||P.wasmMemoryViewTable.set(p,{Ctor:l,address:t,length:n,ownership:1,runtimeAllocated:0})),s=d.addToCurrentScope(p).id,new DataView(a.buffer).setUint32(o,s,!0),i.getReturnStatus()}catch(c){return i.tryCatch.setError(c),i.setLastError(10)}},node_api_create_sharedarraybuffer:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);var i=cr(e,t,!0);return o=d.addToCurrentScope(i).id,new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},node_api_symbol_for:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!n)return o.setLastError(1);var s=-1===t,i=t>>>0;if(0!==t&&!e)return o.setLastError(1);if(!(s||i<=2147483647))return o.setLastError(1);var u=q.UTF8ToString(e,t),f=d.addToCurrentScope(Symbol.for(u)).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()}});var dr=Object.freeze({__proto__:null,napi_get_boolean:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!t)return n.setLastError(1);var o=0===e?3:4;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_get_global:function(r,e){if(!r)return 1;var t=d.envStore.get(r);return t.checkGCAccess(),e?(new DataView(a.buffer).setUint32(e,5,!0),t.clearLastError()):t.setLastError(1)},napi_get_null:function(r,e){if(!r)return 1;var t=d.envStore.get(r);return t.checkGCAccess(),e?(new DataView(a.buffer).setUint32(e,2,!0),t.clearLastError()):t.setLastError(1)},napi_get_undefined:function(r,e){if(!r)return 1;var t=d.envStore.get(r);return t.checkGCAccess(),e?(new DataView(a.buffer).setUint32(e,1,!0),t.clearLastError()):t.setLastError(1)}});var pr=Object.freeze({__proto__:null,napi_get_instance_data:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(!e)return t.setLastError(1);var n=t.getInstanceData();return new DataView(a.buffer).setUint32(e,n,!0),t.clearLastError()},napi_set_instance_data:function(r,e,t,n){if(!r)return 1;var a=d.envStore.get(r);return a.setInstanceData(e,t,n),a.clearLastError()}});var vr=Object.freeze({__proto__:null,_emnapi_get_last_error_info:function(r,e,t,n){var o=d.envStore.get(r).lastError,s=o.errorCode,i=o.engineErrorCode>>>0,u=o.engineReserved,f=new DataView(a.buffer);f.setInt32(e,s,!0),f.setUint32(t,i,!0),f.setUint32(n,u,!0)},napi_create_error:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new Error(s);if(e){var u=d.handleStore.get(e).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},napi_create_range_error:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new RangeError(s);if(e){var u=d.handleStore.get(e).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},napi_create_type_error:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new TypeError(s);if(e){var u=d.handleStore.get(e).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},napi_fatal_error:function(r,e,t,n){var a=q.UTF8ToString(r,e),o=q.UTF8ToString(t,n);p?p.napi.fatalError(a,o):l("FATAL ERROR: "+a+" "+o)},napi_fatal_exception:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!e)return t.setLastError(1);var n=t.ctx.handleStore.get(e);try{t.triggerFatalException(n.value)}catch(r){return t.setLastError(9)}return t.clearLastError()}catch(e){return t.tryCatch.setError(e),t.setLastError(10)}},napi_get_and_clear_last_exception:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=new DataView(a.buffer);if(!t.tryCatch.hasCaught())return n.setUint32(e,1,!0),t.clearLastError();var o=t.tryCatch.exception(),s=t.ensureHandleId(o);return n.setUint32(e,s,!0),t.tryCatch.reset(),t.clearLastError()},napi_is_exception_pending:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=t.tryCatch.hasCaught();return new DataView(a.buffer).setInt8(e,n?1:0,!0),t.clearLastError()},napi_throw:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{return e?(t.tryCatch.setError(d.handleStore.get(e).value),t.clearLastError()):t.setLastError(1)}catch(r){return t.tryCatch.setError(r),t.setLastError(10)}},napi_throw_error:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=new Error(q.UTF8ToString(t,-1));return e&&(a.code=q.UTF8ToString(e,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_throw_range_error:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=new RangeError(q.UTF8ToString(t,-1));return e&&(a.code=q.UTF8ToString(e,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_throw_type_error:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=new TypeError(q.UTF8ToString(t,-1));return e&&(a.code=q.UTF8ToString(e,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},node_api_create_syntax_error:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new SyntaxError(s);if(e){var u=d.handleStore.get(e).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},node_api_throw_syntax_error:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=new SyntaxError(q.UTF8ToString(t,-1));return e&&(a.code=q.UTF8ToString(e,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}}});var gr=Object.freeze({__proto__:null,napi_call_function:function(r,e,t,n,o,s){var i,u=0;if(!r)return 1;var f=d.envStore.get(r);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!e)return f.setLastError(1);if((n>>>=0)>0&&!o)return f.setLastError(1);var c=d.handleStore.get(e).value;if(!t)return f.setLastError(1);var l=d.handleStore.get(t).value;if("function"!=typeof l)return f.setLastError(1);for(var p=[],v=new DataView(a.buffer);u=10?23:10);u.clearLastError();try{if(!s)return u.setLastError(1);if(!n)return u.setLastError(1);var f=rr(u,e,t,n,o);if(0!==f.status)return u.setLastError(f.status);var c=f.f;return i=d.addToCurrentScope(c).id,new DataView(a.buffer).setUint32(s,i,!0),u.getReturnStatus()}catch(r){return u.tryCatch.setError(r),u.setLastError(10)}},napi_get_cb_info:function(r,e,t,n,o,s){if(!r)return 1;var i=d.envStore.get(r);if(!e)return i.setLastError(1);var u=d.scopeStore.get(e).callbackInfo,f=new DataView(a.buffer);if(n){if(!t)return i.setLastError(1);for(var c=f.getUint32(t,!0),l=u.args.length,p=c=10?23:10);u.clearLastError();try{if(!e)return u.setLastError(1);if((t>>>=0)>0&&!n)return u.setLastError(1);if(!o)return u.setLastError(1);var f=d.handleStore.get(e).value;if("function"!=typeof f)return u.setLastError(1);var c=void 0,l=new DataView(a.buffer);if(d.feature.supportReflect){var p=Array(t);for(s=0;s>>0,1);return new DataView(a.buffer).setUint32(n,i.id,!0),o.clearLastError()},napi_delete_reference:function(r,e){if(!r)return 1;var t=d.envStore.get(r);return e?(d.refStore.get(e).dispose(),t.clearLastError()):t.setLastError(1)},napi_escape_handle:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!e)return o.setLastError(1);if(!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.scopeStore.get(e);if(!s.escapeCalled()){var i=s.escape(t),u=i?i.id:0;return new DataView(a.buffer).setUint32(n,u,!0),o.clearLastError()}return o.setLastError(12)},napi_get_reference_value:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.refStore.get(e).get(n);return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_open_escapable_handle_scope:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=d.openScope(t);return new DataView(a.buffer).setUint32(e,n.id,!0),t.clearLastError()},napi_open_handle_scope:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=d.openScope(t);return new DataView(a.buffer).setUint32(e,n.id,!0),t.clearLastError()},napi_reference_ref:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);var o=d.refStore.get(e).ref();return t&&new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_reference_unref:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);var o=d.refStore.get(e);if(0===o.refcount())return n.setLastError(9);var s=o.unref();return t&&new DataView(a.buffer).setUint32(t,s,!0),n.clearLastError()},napi_remove_env_cleanup_hook:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);return e?(d.removeCleanupHook(n,e,t),0):n.setLastError(1)}});var hr=Object.freeze({__proto__:null,_emnapi_get_filename:function(r,e,t){var n=d.envStore.get(r).filename;return e?q.stringToUTF8(n,e,t):q.lengthBytesUTF8(n)}});var Er=Object.freeze({__proto__:null,napi_create_promise:function(r,e,t){var n,o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!e)return s.setLastError(1);if(!t)return s.setLastError(1);var i=new DataView(a.buffer),u=new Promise(function(r,t){var a=d.createDeferred({resolve:r,reject:t});n=a.id,i.setUint32(e,n,!0)});return o=d.addToCurrentScope(u).id,i.setUint32(t,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_is_promise:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isPromise()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_reject_deferred:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{return e&&t?(d.deferredStore.get(e).reject(d.handleStore.get(t).value),n.getReturnStatus()):n.setLastError(1)}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_resolve_deferred:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{return e&&t?(d.deferredStore.get(e).resolve(d.handleStore.get(t).value),n.getReturnStatus()):n.setLastError(1)}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}}});function _r(r,e,t,n,o,s){var i;if(!r)return 1;var u=d.envStore.get(r);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!s)return u.setLastError(1);if(!e)return u.setLastError(1);var f=d.handleStore.get(e);if(null==f.value)throw new TypeError("Cannot convert undefined or null to object");var c=void 0;try{c=f.isObject()||f.isFunction()?f.value:Object(f.value)}catch(r){return u.setLastError(2)}if(0!==t&&1!==t)return u.setLastError(1);if(0!==o&&1!==o)return u.setLastError(1);var l=[],p=void 0,v=void 0,g=void 0,y=!0,h=/^(0|[1-9][0-9]*)$/;do{for(p=Object.getOwnPropertyNames(c),v=Object.getOwnPropertySymbols(c),g=0;g=10?23:10);i.clearLastError();try{if((t>>>=0)>0&&!n)return i.setLastError(1);if(!e)return i.setLastError(1);var u=d.handleStore.get(e),f=u.value;if(!u.isObject()&&!u.isFunction())return i.setLastError(2);for(var c=void 0,l=new DataView(a.buffer),p=0;p=10?23:10);s.clearLastError();try{if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(!i.isObject()&&!i.isFunction())return s.setLastError(2);if(d.feature.supportReflect)o=Reflect.deleteProperty(i.value,t>>>0);else try{o=delete i.value[t>>>0]}catch(r){o=!1}if(n)new DataView(a.buffer).setInt8(n,o?1:0,!0);return s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_delete_property:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(!i.isObject()&&!i.isFunction())return s.setLastError(2);var u=d.handleStore.get(t).value;if(d.feature.supportReflect)o=Reflect.deleteProperty(i.value,u);else try{o=delete i.value[u]}catch(r){o=!1}if(n)new DataView(a.buffer).setInt8(n,o?1:0,!0);return s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_get_all_property_names:_r,napi_get_element:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}return o=s.ensureHandleId(u[t>>>0]),new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_get_named_property:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);if(!t)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}return o=s.ensureHandleId(u[q.UTF8ToString(t,-1)]),new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_get_property:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}return o=s.ensureHandleId(u[d.handleStore.get(t).value]),new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_get_property_names:function(r,e,t){return _r(r,e,0,18,1,t)},napi_has_element:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}return o=t>>>0 in u?1:0,new DataView(a.buffer).setInt8(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_has_named_property:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);if(!t)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}return o=q.UTF8ToString(t,-1)in u,new DataView(a.buffer).setInt8(n,o?1:0,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_has_own_property:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}var f=d.handleStore.get(t).value;return"string"!=typeof f&&"symbol"!=typeof f?s.setLastError(4):(o=Object.prototype.hasOwnProperty.call(u,d.handleStore.get(t).value),new DataView(a.buffer).setInt8(n,o?1:0,!0),s.getReturnStatus())}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_has_property:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}return o=d.handleStore.get(t).value in u?1:0,new DataView(a.buffer).setInt8(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_object_freeze:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!e)return t.setLastError(1);var n=d.handleStore.get(e),a=n.value;return n.isObject()||n.isFunction()?(Object.freeze(a),t.getReturnStatus()):t.setLastError(2)}catch(r){return t.tryCatch.setError(r),t.setLastError(10)}},napi_object_seal:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!e)return t.setLastError(1);var n=d.handleStore.get(e),a=n.value;return n.isObject()||n.isFunction()?(Object.seal(a),t.getReturnStatus()):t.setLastError(2)}catch(r){return t.tryCatch.setError(r),t.setLastError(10)}},napi_set_element:function(r,e,t,n){if(!r)return 1;var a=d.envStore.get(r);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!n)return a.setLastError(1);if(!e)return a.setLastError(1);var o=d.handleStore.get(e);return o.isObject()||o.isFunction()?(o.value[t>>>0]=d.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(2)}catch(r){return a.tryCatch.setError(r),a.setLastError(10)}},napi_set_named_property:function(r,e,t,n){if(!r)return 1;var a=d.envStore.get(r);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!n)return a.setLastError(1);if(!e)return a.setLastError(1);var o=d.handleStore.get(e);return o.isObject()||o.isFunction()?t?(d.handleStore.get(e).value[q.UTF8ToString(t,-1)]=d.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(1):a.setLastError(2)}catch(r){return a.tryCatch.setError(r),a.setLastError(10)}},napi_set_property:function(r,e,t,n){if(!r)return 1;var a=d.envStore.get(r);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!t)return a.setLastError(1);if(!n)return a.setLastError(1);if(!e)return a.setLastError(1);var o=d.handleStore.get(e);return o.isObject()||o.isFunction()?(o.value[d.handleStore.get(t).value]=d.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(2)}catch(r){return a.tryCatch.setError(r),a.setLastError(10)}}});var Lr=Object.freeze({__proto__:null,napi_run_script:function(r,e,t){var n,o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!e)return s.setLastError(1);if(!t)return s.setLastError(1);var i=d.handleStore.get(e);if(!i.isString())return s.setLastError(3);var u=d.handleStore.get(5).value.eval(i.value);o=s.ensureHandleId(u),new DataView(a.buffer).setUint32(t,o,!0),n=s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}return n}});var mr=Object.freeze({__proto__:null,napi_coerce_to_bool:function(r,e,t){var n;if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{return e&&t?(n=d.handleStore.get(e).value?4:3,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()):o.setLastError(1)}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_coerce_to_number:function(r,e,t){var n;if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(e);if(s.isBigInt())throw new TypeError("Cannot convert a BigInt value to a number");return n=d.addToCurrentScope(Number(s.value)).id,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_coerce_to_object:function(r,e,t){var n;if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(e);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");return n=o.ensureHandleId(Object(s.value)),new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_coerce_to_string:function(r,e,t){var n;if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(e);if(s.isSymbol())throw new TypeError("Cannot convert a Symbol value to a string");return n=d.addToCurrentScope(String(s.value)).id,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_detach_arraybuffer:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=d.handleStore.get(e).value;if(!(n instanceof ArrayBuffer))return"function"==typeof SharedArrayBuffer&&n instanceof SharedArrayBuffer?t.setLastError(20):t.setLastError(19);try{(new(0,d.feature.MessageChannel)).port1.postMessage(n,[n])}catch(r){return t.setLastError(9)}return t.clearLastError()},napi_instanceof:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!e)return s.setLastError(1);if(!n)return s.setLastError(1);if(!t)return s.setLastError(1);var i=new DataView(a.buffer);i.setInt8(n,0,!0);var u=d.handleStore.get(t);return u.isFunction()?(o=d.handleStore.get(e).value instanceof u.value?1:0,i.setInt8(n,o,!0),s.getReturnStatus()):s.setLastError(5)}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_is_array:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isArray()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_arraybuffer:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isArrayBuffer()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_buffer:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isBuffer(d.feature.Buffer)?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_dataview:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isDataView()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_date:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isDate()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_detached_arraybuffer:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e),s=new DataView(a.buffer);if(o.isArrayBuffer()&&0===o.value.byteLength)try{new Uint8Array(o.value)}catch(r){return s.setInt8(t,1,!0),n.getReturnStatus()}return s.setInt8(t,0,!0),n.getReturnStatus()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_is_error:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).value instanceof Error?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_typedarray:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isTypedArray()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_strict_equals:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{return e&&(t&&n)?(o=d.handleStore.get(e).value===d.handleStore.get(t).value?1:0,new DataView(a.buffer).setInt8(n,o,!0),s.getReturnStatus()):s.setLastError(1)}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_typeof:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o,s=d.handleStore.get(e);if(s.isNumber())o=3;else if(s.isBigInt())o=9;else if(s.isString())o=4;else if(s.isFunction())o=7;else if(s.isExternal())o=8;else if(s.isObject())o=6;else if(s.isBoolean())o=2;else if(s.isUndefined())o=0;else if(s.isSymbol())o=5;else{if(!s.isNull())return n.setLastError(1);o=1}return new DataView(a.buffer).setInt32(t,o,!0),n.clearLastError()},node_api_is_sharedarraybuffer:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e),s="function"==typeof SharedArrayBuffer&&o.value instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(o.value)?1:0;return new DataView(a.buffer).setInt8(t,s,!0),n.clearLastError()}});var br=Object.freeze({__proto__:null,napi_get_version:function(r,e){if(!r)return 1;var t=d.envStore.get(r);return e?(new DataView(a.buffer).setUint32(e,10,!0),t.clearLastError()):t.setLastError(1)}});function Sr(r){for(var e=Object.keys(r),t=0;t>>=0,0===(u>>>=0))return g.setLastError(1);if(!v)return g.setLastError(1);var y,h=0;if(e){if("function"!=typeof d.handleStore.get(e).value)return g.setLastError(1);h=d.createReference(g,e,1,1).id}else if(!p)return g.setLastError(1);if(t){if(null==(y=d.handleStore.get(t).value))return g.setLastError(2);y=Object(y)}else y={};var E=g.ensureHandleId(y),_=d.handleStore.get(n).value;if("symbol"==typeof _)return g.setLastError(3);_=String(_);var w=g.ensureHandleId(_),L=O.offset.end,m=s(L);if(!m)return g.setLastError(9);new Uint8Array(a.buffer).subarray(m,m+L).fill(0);var b=d.createReference(g,E,1,1),S=b.id,C=new DataView(a.buffer);return C.setUint32(m,S,!0),O.initQueue(m)?(x(E,w,-1,m+O.offset.async_id),C.setUint32(m+O.offset.thread_count,u,!0),C.setUint32(m+O.offset.context,l,!0),C.setUint32(m+O.offset.max_queue_size,o,!0),C.setUint32(m+O.offset.ref,h,!0),C.setUint32(m+O.offset.env,r,!0),C.setUint32(m+O.offset.finalize_data,f,!0),C.setUint32(m+O.offset.finalize_cb,c,!0),C.setUint32(m+O.offset.call_js_cb,p,!0),d.addCleanupHook(g,O.cleanup,m),g.ref(),d.increaseWaitingRequestCounter(),C.setInt32(m+O.offset.async_ref,1,!0),C.setUint32(v,m,!0),g.clearLastError()):(i(m),b.dispose(),g.setLastError(9))},g.imports.napi.napi_get_threadsafe_function_context=function(r,e){if(!r||!e)return l(),1;var t=O.getContext(r);return new DataView(a.buffer).setUint32(e,t,!0),0},g.imports.napi.napi_call_threadsafe_function=function(r,e,t){return r?O.push(r,e,t):(l(),1)},g.imports.napi.napi_acquire_threadsafe_function=function(r){return r?O.getMutex(r).execute(function(){return O.getIsClosing(r)?16:(O.addThreadCount(r),0)}):(l(),1)},g.imports.napi.napi_release_threadsafe_function=function(r,e){if(!r)return l(),1;var t=O.getMutex(r),n=O.getCond(r);return t.execute(function(){if(0===O.getThreadCount(r))return 1;if((O.subThreadCount(r),0===O.getThreadCount(r)||1===e)&&!O.getIsClosing(r)){var t=1===e?1:0;O.setIsClosing(r,t),t&&O.getMaxQueueSize(r)>0&&n.signal(),O.send(r)}return 0})},g.imports.napi.napi_unref_threadsafe_function=function(r,e){if(!e)return l(),1;var t=e+O.offset.async_ref>>2,n=new Int32Array(a.buffer);return Atomics.load(n,t)&&(Atomics.store(n,t,0),d.decreaseWaitingRequestCounter()),0},g.imports.napi.napi_ref_threadsafe_function=function(r,e){if(!e)return l(),1;var t=e+O.offset.async_ref>>2,n=new Int32Array(a.buffer);return Atomics.load(n,t)||(Atomics.store(n,t,1),d.increaseWaitingRequestCounter()),0},g}();return n}function o(e,t,n,o){const i=(o=null!=o?o:{}).getMemory,u=o.getTable,f=o.beforeInit;if(null!=i&&"function"!=typeof i)throw new TypeError("options.getMemory is not a function");if(null!=u&&"function"!=typeof u)throw new TypeError("options.getTable is not a function");if(null!=f&&"function"!=typeof f)throw new TypeError("options.beforeInit is not a function");let c;const l="object"==typeof t&&null!==t;if(l){if(t.loaded)throw new Error("napiModule has already loaded");c=t}else c=a(o);const d=o.wasi;let p,v={env:c.imports.env,napi:c.imports.napi,emnapi:c.imports.emnapi};d&&(p=new r.WASIThreads(c.childThread?{wasi:d,childThread:!0,postMessage:c.postMessage}:{wasi:d,threadManager:c.PThread,waitThreadStart:c.waitThreadStart}),Object.assign(v,"function"==typeof d.getImportObject?d.getImportObject():{wasi_snapshot_preview1:d.wasiImport}),Object.assign(v,p.getImportObject()));const g=o.overwriteImports;if("function"==typeof g){const r=g(v);"object"==typeof r&&null!==r&&(v=r)}return e(n,v,(r,t)=>{if(r)throw r;const n=t.instance;let a=n;const o=n.exports,g="memory"in o,y="memory"in v.env,h=i?i(o):g?o.memory:y?v.env.memory:void 0;if(!h)throw new Error("memory is neither exported nor imported");const E=u?u(o):o.__indirect_function_table;if(d&&!g){const r=Object.create(null);Object.assign(r,o,{memory:h}),a={exports:r}}const _=t.module;d?a=p.initialize(a,_,h):c.PThread.setup(_,h);const w=()=>{f&&f({instance:n,module:_}),c.init({instance:a,module:_,memory:h,table:E});const r={instance:n,module:_,usedInstance:a};return l||(r.napiModule=c),r};if(c.PThread.shouldPreloadWorkers()){const r=c.PThread.loadWasmModuleToAllWorkers();if(e===s)return r.then(w);throw new Error("Synchronous loading is not supported with worker pool (reuseWorker.size > 0)")}return w()})}function s(r,e,t){return n(r,e).then(r=>t(null,r),r=>t(r))}function i(r,n,a){let o;try{o=function(r,n){if(!r)throw new TypeError("Invalid wasm source");let a;if(t(n),n=null!=n?n:{},r instanceof ArrayBuffer||ArrayBuffer.isView(r))a=new e.Module(r);else{if(!(r instanceof WebAssembly.Module))throw new TypeError("Invalid wasm source");a=r}return{instance:new e.Instance(a,n),module:a}}(r,n)}catch(r){return a(r)}return a(null,o)}class u extends r.ThreadMessageHandler{constructor(r){if("function"!=typeof r.onLoad)throw new TypeError("options.onLoad is not a function");const e=r.onError;super({...r,onError:(r,t)=>{var n;const a=null===(n=this.instance)||void 0===n?void 0:n.exports.emnapi_thread_crashed;if("function"==typeof a&&a(),"function"!=typeof e)throw r;e(r,t)}}),this.napiModule=void 0}instantiate(r){const e=this.onLoad(r);return"function"==typeof e.then?e.then(r=>(this.napiModule=r.napiModule,r)):(this.napiModule=e.napiModule,e)}handle(r){var e;if(super.handle(r),null===(e=null==r?void 0:r.data)||void 0===e?void 0:e.__emnapi__){const e=r.data.__emnapi__.type,t=r.data.__emnapi__.payload;try{"async-worker-init"===e?this.handleAfterLoad(r,()=>{this.napiModule.initWorker(t.arg)}):"async-work-execute"===e&&this.handleAfterLoad(r,()=>{this.napiModule.executeAsyncWork(t.work)})}catch(r){this.onError(r,e)}}}}exports.MessageHandler=u,exports.createNapiModule=a,exports.instantiateNapiModule=function(r,e){return o(s,void 0,r,e)},exports.instantiateNapiModuleSync=function(r,e){return o(i,void 0,r,e)},exports.loadNapiModule=function(r,e,t){if("object"!=typeof r||null===r)throw new TypeError("Invalid napiModule");return o(s,r,e,t)},exports.loadNapiModuleSync=function(r,e,t){if("object"!=typeof r||null===r)throw new TypeError("Invalid napiModule");return o(i,r,e,t)},exports.version="1.8.1",Object.keys(r).forEach(function(e){"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return r[e]}})}); diff --git a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.d.mts b/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.d.mts deleted file mode 100644 index f6e3cd4..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.d.mts +++ /dev/null @@ -1,419 +0,0 @@ -/// - -import type { Context } from '@emnapi/runtime'; -import type { ReferenceOwnership } from '@emnapi/runtime'; -import type { Worker as Worker_2 } from 'worker_threads'; - -/** @public */ -export declare type BaseCreateOptions = { - filename?: string - nodeBinding?: NodeBinding - reuseWorker?: ThreadManagerOptionsMain['reuseWorker'] - asyncWorkPoolSize?: number - waitThreadStart?: MainThreadBaseOptions['waitThreadStart'] - onCreateWorker?: (info: CreateWorkerInfo) => any - print?: (str: string) => void - printErr?: (str: string) => void - postMessage?: (msg: any) => any -} - -/** @public */ -export declare interface BaseOptions { - wasi: WASIInstance; - version?: 'preview1'; - wasm64?: boolean; -} - -/** @public */ -export declare interface ChildThreadOptions extends BaseOptions { - childThread: true; - postMessage?: (data: any) => void; -} - -/** @public */ -export declare interface CleanupThreadPayload { - tid: number; -} - -/** @public */ -export declare interface CommandInfo { - type: T; - payload: CommandPayloadMap[T]; -} - -/** @public */ -export declare interface CommandPayloadMap { - load: LoadPayload; - loaded: LoadedPayload; - start: StartPayload; - 'cleanup-thread': CleanupThreadPayload; - 'terminate-all-threads': TerminateAllThreadsPayload; - 'spawn-thread': SpawnThreadPayload; -} - -/** @public */ -export declare type CommandType = keyof CommandPayloadMap; - -/** @public */ -export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; - -/** @public */ -export declare function createNapiModule ( -options: CreateOptions -): NapiModule - -/** @public */ -export declare type CreateOptions = BaseCreateOptions & ({ - context: Context - childThread?: boolean -} | { - context?: Context - childThread: true -}) - -/** @public */ -export declare interface CreateWorkerInfo { - type: 'thread' | 'async-work' - name: string -} - -/** @public */ -export declare interface InitOptions { - instance: WebAssembly.Instance - module: WebAssembly.Module - memory?: WebAssembly.Memory - table?: WebAssembly.Table -} - -export declare type InputType = string | URL | Response | BufferSource | WebAssembly.Module; - -/** @public */ -export declare interface InstantiatedSource extends LoadedSource { - napiModule: NapiModule; -} - -/** @public */ -export declare function instantiateNapiModule( -/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ -wasmInput: InputType | Promise, options: InstantiateOptions): Promise; - -/** @public */ -export declare function instantiateNapiModuleSync(wasmInput: BufferSource | WebAssembly.Module, options: InstantiateOptions): InstantiatedSource; - -/** @public */ -export declare type InstantiateOptions = CreateOptions & LoadOptions; - -/** @public */ -export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; - -/** @public */ -export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; - -/** @public */ -export declare interface LoadedPayload { -} - -/** @public */ -export declare interface LoadedSource extends WebAssembly.WebAssemblyInstantiatedSource { - usedInstance: WebAssembly.Instance; -} - -/** @public */ -export declare function loadNapiModule(napiModule: NapiModule, -/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ -wasmInput: InputType | Promise, options?: LoadOptions): Promise; - -/** @public */ -export declare function loadNapiModuleSync(napiModule: NapiModule, wasmInput: BufferSource | WebAssembly.Module, options?: LoadOptions): LoadedSource; - -/** @public */ -export declare interface LoadOptions { - wasi?: WASIInstance; - overwriteImports?: (importObject: WebAssembly.Imports) => WebAssembly.Imports; - beforeInit?: (source: WebAssembly.WebAssemblyInstantiatedSource) => void; - getMemory?: (exports: WebAssembly.Exports) => WebAssembly.Memory; - getTable?: (exports: WebAssembly.Exports) => WebAssembly.Table; -} - -/** @public */ -export declare interface LoadPayload { - wasmModule: WebAssembly.Module; - wasmMemory: WebAssembly.Memory; - sab?: Int32Array; -} - -/** @public */ -export declare interface MainThreadBaseOptions extends BaseOptions { - waitThreadStart?: boolean | number; -} - -/** @public */ -export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; - -/** @public */ -export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { -} - -/** @public */ -export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { - threadManager?: ThreadManager | (() => ThreadManager); -} - -/** @public */ -export declare interface MessageEventData { - __emnapi__: CommandInfo; -} - -/** @public */ -export declare class MessageHandler extends ThreadMessageHandler { - napiModule: NapiModule | undefined; - constructor(options: MessageHandlerOptions); - instantiate(data: LoadPayload): InstantiatedSource | PromiseLike; - handle(e: WorkerMessageEvent): void; -} - -/** @public */ -export declare interface MessageHandlerOptions extends ThreadMessageHandlerOptions { - onLoad: (data: LoadPayload) => InstantiatedSource | PromiseLike; -} - -/** @public */ -export declare interface NapiModule { - imports: { - env: any - napi: any - emnapi: any - } - exports: any - loaded: boolean - filename: string - childThread: boolean - emnapi: { - syncMemory ( - js_to_wasm: boolean, - arrayBufferOrView: T, - offset?: number, - len?: number - ): T - getMemoryAddress (arrayBufferOrView: ArrayBuffer | ArrayBufferView): PointerInfo - addSendListener (worker: any): boolean - } - - init (options: InitOptions): any - initWorker (arg: number): void - executeAsyncWork (work: number): void - postMessage?: (msg: any) => any - - waitThreadStart: boolean | number - /* Excluded from this release type: PThread */} - -/** @public */ -export declare interface NodeBinding { - node: { - emitAsyncInit: Function - emitAsyncDestroy: Function - makeCallback: Function - } - napi: { - asyncInit: Function - asyncDestroy: Function - makeCallback: Function - } -} - -/** @public */ -export declare interface PointerInfo { - address: number - ownership: ReferenceOwnership - runtimeAllocated: 0 | 1 -} - -/** @public */ -export declare interface ReuseWorkerOptions { - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} - */ - size: number; - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} - */ - strict?: boolean; -} - -/** @public */ -export declare interface SpawnThreadPayload { - startArg: number; - errorOrTid: number; -} - -/** @public */ -export declare interface StartPayload { - tid: number; - arg: number; - sab?: Int32Array; -} - -/** @public */ -export declare interface StartResult { - exitCode: number; - instance: WebAssembly.Instance; -} - -/** @public */ -export declare interface TerminateAllThreadsPayload { -} - -/** @public */ -export declare class ThreadManager { - unusedWorkers: WorkerLike[]; - runningWorkers: WorkerLike[]; - pthreads: Record; - get nextWorkerID(): number; - wasmModule: WebAssembly.Module | null; - wasmMemory: WebAssembly.Memory | null; - private readonly messageEvents; - private readonly _childThread; - private readonly _onCreateWorker; - private readonly _reuseWorker; - private readonly _beforeLoad?; - /* Excluded from this release type: printErr */ - constructor(options: ThreadManagerOptions); - init(): void; - initMainThread(): void; - private preparePool; - shouldPreloadWorkers(): boolean; - loadWasmModuleToAllWorkers(): Promise; - preloadWorkers(): Promise; - setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; - markId(worker: WorkerLike): number; - returnWorkerToPool(worker: WorkerLike): void; - loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; - allocateUnusedWorker(): WorkerLike; - getNewWorker(sab?: Int32Array): WorkerLike | undefined; - cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; - terminateWorker(worker: WorkerLike): void; - terminateAllThreads(): void; - addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; - fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; -} - -/** @public */ -export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; - -/** @public */ -export declare interface ThreadManagerOptionsBase { - printErr?: (message: string) => void; -} - -/** @public */ -export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { - childThread: true; -} - -/** @public */ -export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { - beforeLoad?: (worker: WorkerLike) => any; - reuseWorker?: boolean | number | ReuseWorkerOptions; - onCreateWorker: WorkerFactory; - childThread?: false; -} - -/** @public */ -export declare class ThreadMessageHandler { - protected instance: WebAssembly.Instance | undefined; - private messagesBeforeLoad; - protected postMessage: (message: any) => void; - protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - protected onError: (error: Error, type: WorkerMessageType) => void; - constructor(options?: ThreadMessageHandlerOptions); - /** @virtual */ - instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - /** @virtual */ - handle(e: WorkerMessageEvent>): void; - private _load; - private _start; - protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; - protected handleAfterLoad(e: E, f: (e: E) => void): void; -} - -/** @public */ -export declare interface ThreadMessageHandlerOptions { - onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - onError?: (error: Error, type: WorkerMessageType) => void; - postMessage?: (message: any) => void; -} - -export declare const version: string; - -/** @public */ -export declare interface WASIInstance { - readonly wasiImport?: Record; - initialize(instance: object): void; - start(instance: object): number; - getImportObject?(): any; -} - -/** @public */ -export declare class WASIThreads { - PThread: ThreadManager | undefined; - private wasmMemory; - private wasmInstance; - private readonly threadSpawn; - readonly childThread: boolean; - private readonly postMessage; - readonly wasi: WASIInstance; - constructor(options: WASIThreadsOptions); - getImportObject(): { - wasi: WASIThreadsImports; - }; - setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; - preloadWorkers(): Promise; - /** - * It's ok to call this method to a WASI command module. - * - * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module - * - * @returns A proxied WebAssembly instance if in child thread, other wise the original instance - */ - initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; - /** - * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} - * ```js - * this.initialize(instance, module, memory) - * this.wasi.start(instance) - * ``` - */ - start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; - terminateAllThreads(): void; -} - -/** @public */ -export declare interface WASIThreadsImports { - 'thread-spawn': (startArg: number, errorOrTid?: number) => number; -} - -/** @public */ -export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; - -/** @public */ -export declare type WorkerFactory = (ctx: { - type: string; - name: string; -}) => WorkerLike; - -/** @public */ -export declare type WorkerLike = (Worker | Worker_2) & { - whenLoaded?: Promise; - loaded?: boolean; - __emnapi_tid?: number; -}; - -/** @public */ -export declare interface WorkerMessageEvent { - data: T; -} - -/** @public */ -export declare type WorkerMessageType = 'load' | 'start'; - -export { } diff --git a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.d.ts b/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.d.ts deleted file mode 100644 index 23104bc..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.d.ts +++ /dev/null @@ -1,421 +0,0 @@ -/// - -import type { Context } from '@emnapi/runtime'; -import type { ReferenceOwnership } from '@emnapi/runtime'; -import type { Worker as Worker_2 } from 'worker_threads'; - -/** @public */ -export declare type BaseCreateOptions = { - filename?: string - nodeBinding?: NodeBinding - reuseWorker?: ThreadManagerOptionsMain['reuseWorker'] - asyncWorkPoolSize?: number - waitThreadStart?: MainThreadBaseOptions['waitThreadStart'] - onCreateWorker?: (info: CreateWorkerInfo) => any - print?: (str: string) => void - printErr?: (str: string) => void - postMessage?: (msg: any) => any -} - -/** @public */ -export declare interface BaseOptions { - wasi: WASIInstance; - version?: 'preview1'; - wasm64?: boolean; -} - -/** @public */ -export declare interface ChildThreadOptions extends BaseOptions { - childThread: true; - postMessage?: (data: any) => void; -} - -/** @public */ -export declare interface CleanupThreadPayload { - tid: number; -} - -/** @public */ -export declare interface CommandInfo { - type: T; - payload: CommandPayloadMap[T]; -} - -/** @public */ -export declare interface CommandPayloadMap { - load: LoadPayload; - loaded: LoadedPayload; - start: StartPayload; - 'cleanup-thread': CleanupThreadPayload; - 'terminate-all-threads': TerminateAllThreadsPayload; - 'spawn-thread': SpawnThreadPayload; -} - -/** @public */ -export declare type CommandType = keyof CommandPayloadMap; - -/** @public */ -export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; - -/** @public */ -export declare function createNapiModule ( -options: CreateOptions -): NapiModule - -/** @public */ -export declare type CreateOptions = BaseCreateOptions & ({ - context: Context - childThread?: boolean -} | { - context?: Context - childThread: true -}) - -/** @public */ -export declare interface CreateWorkerInfo { - type: 'thread' | 'async-work' - name: string -} - -/** @public */ -export declare interface InitOptions { - instance: WebAssembly.Instance - module: WebAssembly.Module - memory?: WebAssembly.Memory - table?: WebAssembly.Table -} - -export declare type InputType = string | URL | Response | BufferSource | WebAssembly.Module; - -/** @public */ -export declare interface InstantiatedSource extends LoadedSource { - napiModule: NapiModule; -} - -/** @public */ -export declare function instantiateNapiModule( -/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ -wasmInput: InputType | Promise, options: InstantiateOptions): Promise; - -/** @public */ -export declare function instantiateNapiModuleSync(wasmInput: BufferSource | WebAssembly.Module, options: InstantiateOptions): InstantiatedSource; - -/** @public */ -export declare type InstantiateOptions = CreateOptions & LoadOptions; - -/** @public */ -export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; - -/** @public */ -export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; - -/** @public */ -export declare interface LoadedPayload { -} - -/** @public */ -export declare interface LoadedSource extends WebAssembly.WebAssemblyInstantiatedSource { - usedInstance: WebAssembly.Instance; -} - -/** @public */ -export declare function loadNapiModule(napiModule: NapiModule, -/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ -wasmInput: InputType | Promise, options?: LoadOptions): Promise; - -/** @public */ -export declare function loadNapiModuleSync(napiModule: NapiModule, wasmInput: BufferSource | WebAssembly.Module, options?: LoadOptions): LoadedSource; - -/** @public */ -export declare interface LoadOptions { - wasi?: WASIInstance; - overwriteImports?: (importObject: WebAssembly.Imports) => WebAssembly.Imports; - beforeInit?: (source: WebAssembly.WebAssemblyInstantiatedSource) => void; - getMemory?: (exports: WebAssembly.Exports) => WebAssembly.Memory; - getTable?: (exports: WebAssembly.Exports) => WebAssembly.Table; -} - -/** @public */ -export declare interface LoadPayload { - wasmModule: WebAssembly.Module; - wasmMemory: WebAssembly.Memory; - sab?: Int32Array; -} - -/** @public */ -export declare interface MainThreadBaseOptions extends BaseOptions { - waitThreadStart?: boolean | number; -} - -/** @public */ -export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; - -/** @public */ -export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { -} - -/** @public */ -export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { - threadManager?: ThreadManager | (() => ThreadManager); -} - -/** @public */ -export declare interface MessageEventData { - __emnapi__: CommandInfo; -} - -/** @public */ -export declare class MessageHandler extends ThreadMessageHandler { - napiModule: NapiModule | undefined; - constructor(options: MessageHandlerOptions); - instantiate(data: LoadPayload): InstantiatedSource | PromiseLike; - handle(e: WorkerMessageEvent): void; -} - -/** @public */ -export declare interface MessageHandlerOptions extends ThreadMessageHandlerOptions { - onLoad: (data: LoadPayload) => InstantiatedSource | PromiseLike; -} - -/** @public */ -export declare interface NapiModule { - imports: { - env: any - napi: any - emnapi: any - } - exports: any - loaded: boolean - filename: string - childThread: boolean - emnapi: { - syncMemory ( - js_to_wasm: boolean, - arrayBufferOrView: T, - offset?: number, - len?: number - ): T - getMemoryAddress (arrayBufferOrView: ArrayBuffer | ArrayBufferView): PointerInfo - addSendListener (worker: any): boolean - } - - init (options: InitOptions): any - initWorker (arg: number): void - executeAsyncWork (work: number): void - postMessage?: (msg: any) => any - - waitThreadStart: boolean | number - /* Excluded from this release type: PThread */} - -/** @public */ -export declare interface NodeBinding { - node: { - emitAsyncInit: Function - emitAsyncDestroy: Function - makeCallback: Function - } - napi: { - asyncInit: Function - asyncDestroy: Function - makeCallback: Function - } -} - -/** @public */ -export declare interface PointerInfo { - address: number - ownership: ReferenceOwnership - runtimeAllocated: 0 | 1 -} - -/** @public */ -export declare interface ReuseWorkerOptions { - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} - */ - size: number; - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} - */ - strict?: boolean; -} - -/** @public */ -export declare interface SpawnThreadPayload { - startArg: number; - errorOrTid: number; -} - -/** @public */ -export declare interface StartPayload { - tid: number; - arg: number; - sab?: Int32Array; -} - -/** @public */ -export declare interface StartResult { - exitCode: number; - instance: WebAssembly.Instance; -} - -/** @public */ -export declare interface TerminateAllThreadsPayload { -} - -/** @public */ -export declare class ThreadManager { - unusedWorkers: WorkerLike[]; - runningWorkers: WorkerLike[]; - pthreads: Record; - get nextWorkerID(): number; - wasmModule: WebAssembly.Module | null; - wasmMemory: WebAssembly.Memory | null; - private readonly messageEvents; - private readonly _childThread; - private readonly _onCreateWorker; - private readonly _reuseWorker; - private readonly _beforeLoad?; - /* Excluded from this release type: printErr */ - constructor(options: ThreadManagerOptions); - init(): void; - initMainThread(): void; - private preparePool; - shouldPreloadWorkers(): boolean; - loadWasmModuleToAllWorkers(): Promise; - preloadWorkers(): Promise; - setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; - markId(worker: WorkerLike): number; - returnWorkerToPool(worker: WorkerLike): void; - loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; - allocateUnusedWorker(): WorkerLike; - getNewWorker(sab?: Int32Array): WorkerLike | undefined; - cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; - terminateWorker(worker: WorkerLike): void; - terminateAllThreads(): void; - addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; - fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; -} - -/** @public */ -export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; - -/** @public */ -export declare interface ThreadManagerOptionsBase { - printErr?: (message: string) => void; -} - -/** @public */ -export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { - childThread: true; -} - -/** @public */ -export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { - beforeLoad?: (worker: WorkerLike) => any; - reuseWorker?: boolean | number | ReuseWorkerOptions; - onCreateWorker: WorkerFactory; - childThread?: false; -} - -/** @public */ -export declare class ThreadMessageHandler { - protected instance: WebAssembly.Instance | undefined; - private messagesBeforeLoad; - protected postMessage: (message: any) => void; - protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - protected onError: (error: Error, type: WorkerMessageType) => void; - constructor(options?: ThreadMessageHandlerOptions); - /** @virtual */ - instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - /** @virtual */ - handle(e: WorkerMessageEvent>): void; - private _load; - private _start; - protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; - protected handleAfterLoad(e: E, f: (e: E) => void): void; -} - -/** @public */ -export declare interface ThreadMessageHandlerOptions { - onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - onError?: (error: Error, type: WorkerMessageType) => void; - postMessage?: (message: any) => void; -} - -export declare const version: string; - -/** @public */ -export declare interface WASIInstance { - readonly wasiImport?: Record; - initialize(instance: object): void; - start(instance: object): number; - getImportObject?(): any; -} - -/** @public */ -export declare class WASIThreads { - PThread: ThreadManager | undefined; - private wasmMemory; - private wasmInstance; - private readonly threadSpawn; - readonly childThread: boolean; - private readonly postMessage; - readonly wasi: WASIInstance; - constructor(options: WASIThreadsOptions); - getImportObject(): { - wasi: WASIThreadsImports; - }; - setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; - preloadWorkers(): Promise; - /** - * It's ok to call this method to a WASI command module. - * - * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module - * - * @returns A proxied WebAssembly instance if in child thread, other wise the original instance - */ - initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; - /** - * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} - * ```js - * this.initialize(instance, module, memory) - * this.wasi.start(instance) - * ``` - */ - start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; - terminateAllThreads(): void; -} - -/** @public */ -export declare interface WASIThreadsImports { - 'thread-spawn': (startArg: number, errorOrTid?: number) => number; -} - -/** @public */ -export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; - -/** @public */ -export declare type WorkerFactory = (ctx: { - type: string; - name: string; -}) => WorkerLike; - -/** @public */ -export declare type WorkerLike = (Worker | Worker_2) & { - whenLoaded?: Promise; - loaded?: boolean; - __emnapi_tid?: number; -}; - -/** @public */ -export declare interface WorkerMessageEvent { - data: T; -} - -/** @public */ -export declare type WorkerMessageType = 'load' | 'start'; - -export { } - -export as namespace emnapiCore; diff --git a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js b/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js deleted file mode 100644 index 9d4947b..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +++ /dev/null @@ -1,7649 +0,0 @@ -import { ThreadManager, WASIThreads, ThreadMessageHandler } from '@emnapi/wasi-threads'; -export * from '@emnapi/wasi-threads'; -import { __extends, __assign } from 'tslib'; - -/* eslint-disable no-undef */ -var _WebAssembly = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; -function validateImports(imports) { - if (imports && typeof imports !== 'object') { - throw new TypeError('imports must be an object or undefined'); - } - return true; -} -function load(wasmInput, imports) { - if (!wasmInput) - throw new TypeError('Invalid wasm source'); - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - // Promise - try { - var then = typeof wasmInput === 'object' && wasmInput !== null && 'then' in wasmInput ? wasmInput.then : undefined; - if (typeof then === 'function') { - return then.call(wasmInput, function (input) { return load(input, imports); }); - } - } - catch (_) { } - // BufferSource - if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { - return _WebAssembly.instantiate(wasmInput, imports); - } - // WebAssembly.Module - if (wasmInput instanceof _WebAssembly.Module) { - return _WebAssembly.instantiate(wasmInput, imports).then(function (instance) { - return { instance: instance, module: wasmInput }; - }); - } - // Response - if (typeof Response !== 'undefined' && wasmInput instanceof Response) { - return wasmInput.arrayBuffer().then(function (buffer) { - return _WebAssembly.instantiate(buffer, imports); - }); - } - // string | URL - var inputIsString = typeof wasmInput === 'string'; - if (inputIsString || (typeof URL !== 'undefined' && wasmInput instanceof URL)) { - if (inputIsString && typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { - return _WebAssembly.instantiate(wasmInput, imports); - } - if (typeof fetch !== 'function') { - throw new TypeError('wasm source can not be a string or URL in this environment'); - } - if (typeof _WebAssembly.instantiateStreaming === 'function') { - try { - return _WebAssembly.instantiateStreaming(fetch(wasmInput), imports).catch(function () { - return load(fetch(wasmInput), imports); - }); - } - catch (_) { - return load(fetch(wasmInput), imports); - } - } - else { - return load(fetch(wasmInput), imports); - } - } - throw new TypeError('Invalid wasm source'); -} -function loadSync(wasmInput, imports) { - if (!wasmInput) - throw new TypeError('Invalid wasm source'); - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - var module; - if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { - module = new _WebAssembly.Module(wasmInput); - } - else if (wasmInput instanceof WebAssembly.Module) { - module = wasmInput; - } - else { - throw new TypeError('Invalid wasm source'); - } - var instance = new _WebAssembly.Instance(module, imports); - var source = { instance: instance, module: module }; - return source; -} - -function createNapiModule(options) { - var napiModule = (function () { - var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && typeof process.versions === 'object' && process.versions !== null && typeof process.versions.node === 'string'; - var ENVIRONMENT_IS_PTHREAD = Boolean(options.childThread); - var waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); - var wasmInstance; - var wasmMemory; - var wasmTable; - var _malloc; - var _free; - function abort(msg) { - if (typeof _WebAssembly.RuntimeError === 'function') { - throw new _WebAssembly.RuntimeError(msg); - } - throw Error(msg); - } - var napiModule = { - imports: { - env: {}, - napi: {}, - emnapi: {} - }, - exports: {}, - emnapi: {}, - loaded: false, - filename: '', - childThread: ENVIRONMENT_IS_PTHREAD, - initWorker: undefined, - executeAsyncWork: undefined, - waitThreadStart: waitThreadStart, - PThread: undefined, - init: function (options) { - if (napiModule.loaded) - return napiModule.exports; - if (!options) - throw new TypeError('Invalid napi init options'); - var instance = options.instance; - if (!(instance === null || instance === void 0 ? void 0 : instance.exports)) - throw new TypeError('Invalid wasm instance'); - wasmInstance = instance; - var exports$1 = instance.exports; - var module = options.module; - var memory = options.memory || exports$1.memory; - var table = options.table || exports$1.__indirect_function_table; - if (!(module instanceof _WebAssembly.Module)) - throw new TypeError('Invalid wasm module'); - if (!(memory instanceof _WebAssembly.Memory)) - throw new TypeError('Invalid wasm memory'); - if (!(table instanceof _WebAssembly.Table)) - throw new TypeError('Invalid wasm table'); - wasmMemory = memory; - wasmTable = table; - if (typeof exports$1.malloc !== 'function') - throw new TypeError('malloc is not exported'); - if (typeof exports$1.free !== 'function') - throw new TypeError('free is not exported'); - _malloc = exports$1.malloc; - _free = exports$1.free; - if (!napiModule.childThread) { - // main thread only - var moduleApiVersion = 8 /* Version.NODE_API_DEFAULT_MODULE_API_VERSION */; - var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1; - if (typeof node_api_module_get_api_version_v1 === 'function') { - moduleApiVersion = node_api_module_get_api_version_v1(); - } - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - var envObject = napiModule.envObject || (napiModule.envObject = emnapiCtx.createEnv(napiModule.filename, moduleApiVersion, function (cb) { return (wasmTable.get(cb)); }, function (cb) { return (wasmTable.get(cb)); }, abort, emnapiNodeBinding)); - var scope_1 = emnapiCtx.openScope(envObject); - try { - envObject.callIntoModule(function (_envObject) { - var exports$1 = napiModule.exports; - var exportsHandle = scope_1.add(exports$1); - var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1; - var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id); - napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value; - }); - } - catch (e) { - if (e !== 'unwind') { - throw e; - } - } - finally { - emnapiCtx.closeScope(envObject, scope_1); - } - napiModule.loaded = true; - delete napiModule.envObject; - return napiModule.exports; - } - } - }; - var emnapiCtx; - var emnapiNodeBinding; - var onCreateWorker = undefined; - var err; - if (!ENVIRONMENT_IS_PTHREAD) { - var context = options.context; - if (typeof context !== 'object' || context === null) { - throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`"); - } - emnapiCtx = context; - } - else { - emnapiCtx = options === null || options === void 0 ? void 0 : options.context; - var postMsg = typeof options.postMessage === 'function' - ? options.postMessage - : typeof postMessage === 'function' - ? postMessage - : undefined; - if (typeof postMsg !== 'function') { - throw new TypeError('No postMessage found'); - } - napiModule.postMessage = postMsg; - } - if (typeof options.filename === 'string') { - napiModule.filename = options.filename; - } - if (typeof options.onCreateWorker === 'function') { - onCreateWorker = options.onCreateWorker; - } - if (typeof options.print === 'function') { - options.print; - } - else { - console.log.bind(console); - } - if (typeof options.printErr === 'function') { - err = options.printErr; - } - else { - err = console.warn.bind(console); - } - if ('nodeBinding' in options) { - var nodeBinding = options.nodeBinding; - if (typeof nodeBinding !== 'object' || nodeBinding === null) { - throw new TypeError('Invalid `options.nodeBinding`. Use @emnapi/node-binding package'); - } - emnapiNodeBinding = nodeBinding; - } - var emnapiAsyncWorkPoolSize = 0; - if ('asyncWorkPoolSize' in options) { - if (typeof options.asyncWorkPoolSize !== 'number') { - throw new TypeError('options.asyncWorkPoolSize must be a integer'); - } - emnapiAsyncWorkPoolSize = options.asyncWorkPoolSize >> 0; - if (emnapiAsyncWorkPoolSize > 1024) { - emnapiAsyncWorkPoolSize = 1024; - } - else if (emnapiAsyncWorkPoolSize < -1024) { - emnapiAsyncWorkPoolSize = -1024; - } - } - var singleThreadAsyncWork = ENVIRONMENT_IS_PTHREAD ? false : (emnapiAsyncWorkPoolSize <= 0); - function _emnapi_async_work_pool_size() { - return Math.abs(emnapiAsyncWorkPoolSize); - } - napiModule.imports.env._emnapi_async_work_pool_size = _emnapi_async_work_pool_size; - // ------------------------------ pthread ------------------------------- - function emnapiAddSendListener(worker) { - if (!worker) - return false; - if (worker._emnapiSendListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__ && __emnapi__.type === 'async-send') { - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_1 = napiModule.postMessage; - postMessage_1({ __emnapi__: __emnapi__ }); - } - else { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var callback = __emnapi__.payload.callback; - (wasmTable.get(callback))(__emnapi__.payload.data); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiSendListener; - }; - worker._emnapiSendListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; - } - napiModule.emnapi.addSendListener = emnapiAddSendListener; - var PThread = new ThreadManager(ENVIRONMENT_IS_PTHREAD - ? { - printErr: err, - childThread: true - } - : { - printErr: err, - beforeLoad: function (worker) { - emnapiAddSendListener(worker); - }, - reuseWorker: options.reuseWorker, - onCreateWorker: onCreateWorker - }); - napiModule.PThread = PThread; - /** - * @__sig ipiip - */ - function napi_set_last_error(env, error_code, engine_error_code, engine_reserved) { - var envObject = emnapiCtx.envStore.get(env); - return envObject.setLastError(error_code, engine_error_code, engine_reserved); - } - /** - * @__sig ip - */ - function napi_clear_last_error(env) { - var envObject = emnapiCtx.envStore.get(env); - return envObject.clearLastError(); - } - /** - * @__sig vppp - */ - function _emnapi_get_node_version(major, minor, patch) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var versions = (typeof process === 'object' && process !== null && - typeof process.versions === 'object' && process.versions !== null && - typeof process.versions.node === 'string') - ? process.versions.node.split('.').map(function (n) { return Number(n); }) - : [0, 0, 0]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(major, versions[0], true); - HEAP_DATA_VIEW.setUint32(minor, versions[1], true); - HEAP_DATA_VIEW.setUint32(patch, versions[2], true); - } - /** - * @__sig v - * @__deps $runtimeKeepalivePush - */ - function _emnapi_runtime_keepalive_push() { - } - /** - * @__sig v - * @__deps $runtimeKeepalivePop - */ - function _emnapi_runtime_keepalive_pop() { - } - /** - * @__sig vpp - */ - function _emnapi_set_immediate(callback, data) { - emnapiCtx.feature.setImmediate(function () { - (wasmTable.get(callback))(data); - }); - } - /** - * @__sig vpp - */ - function _emnapi_next_tick(callback, data) { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - Promise.resolve().then(function () { - (wasmTable.get(callback))(data); - }); - } - /** - * @__sig vipppi - */ - function _emnapi_callback_into_module(forceUncaught, env, callback, data, close_scope_if_throw) { - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - try { - envObject.callbackIntoModule(Boolean(forceUncaught), function () { - (wasmTable.get(callback))(env, data); - }); - } - catch (err) { - emnapiCtx.closeScope(envObject, scope); - if (close_scope_if_throw) { - emnapiCtx.closeScope(envObject); - } - throw err; - } - emnapiCtx.closeScope(envObject, scope); - } - /** - * @__sig vipppp - */ - function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) { - var envObject = emnapiCtx.envStore.get(env); - envObject.callFinalizerInternal(forceUncaught, callback, data, hint); - } - /** - * @__sig v - */ - function _emnapi_ctx_increase_waiting_request_counter() { - emnapiCtx.increaseWaitingRequestCounter(); - } - /** - * @__sig v - */ - function _emnapi_ctx_decrease_waiting_request_counter() { - emnapiCtx.decreaseWaitingRequestCounter(); - } - /** - * @__sig i - */ - function _emnapi_is_main_runtime_thread() { - return ENVIRONMENT_IS_PTHREAD ? 0 : 1; - } - /** - * @__sig i - */ - function _emnapi_is_main_browser_thread() { - return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0; - } - /** - * @__sig v - */ - function _emnapi_unwind() { - // eslint-disable-next-line @typescript-eslint/no-throw-literal - throw 'unwind'; - } - /** - * @__sig d - */ - function _emnapi_get_now() { - return performance.timeOrigin + performance.now(); - } - function $emnapiSetValueI64(result, numberValue) { - var tempDouble; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var tempI64 = [ - numberValue >>> 0, - (tempDouble = numberValue, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) - ]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, tempI64[0], true); - HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true); - } - /** - * @__deps $emnapiCtx - * @__sig p - */ - function _emnapi_open_handle_scope() { - return emnapiCtx.openScope().id; - } - /** - * @__deps $emnapiCtx - * @__sig vp - */ - function _emnapi_close_handle_scope(_scope) { - return emnapiCtx.closeScope(); - } - var utilMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - $emnapiSetValueI64: $emnapiSetValueI64, - _emnapi_call_finalizer: _emnapi_call_finalizer, - _emnapi_callback_into_module: _emnapi_callback_into_module, - _emnapi_close_handle_scope: _emnapi_close_handle_scope, - _emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter, - _emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter, - _emnapi_get_node_version: _emnapi_get_node_version, - _emnapi_get_now: _emnapi_get_now, - _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread, - _emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread, - _emnapi_next_tick: _emnapi_next_tick, - _emnapi_open_handle_scope: _emnapi_open_handle_scope, - _emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop, - _emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push, - _emnapi_set_immediate: _emnapi_set_immediate, - _emnapi_unwind: _emnapi_unwind, - napi_clear_last_error: napi_clear_last_error, - napi_set_last_error: napi_set_last_error - }); - function emnapiGetWorkerByPthreadPtr(pthreadPtr) { - var view = new DataView(wasmMemory.buffer); - /** - * wasi-sdk-20.0+threads - * - * struct pthread { - * struct pthread *self; // 0 - * struct pthread *prev, *next; // 4, 8 - * uintptr_t sysinfo; // 12 - * uintptr_t canary; // 16 - * int tid; // 20 - * // ... - * } - */ - var tidOffset = 20; - var tid = view.getInt32(pthreadPtr + tidOffset, true); - var worker = PThread.pthreads[tid]; - return worker; - } - /** @__sig vp */ - function _emnapi_worker_unref(pthreadPtr) { - if (ENVIRONMENT_IS_PTHREAD) - return; - var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); - if (worker && typeof worker.unref === 'function') { - worker.unref(); - } - } - /** @__sig vipp */ - function _emnapi_async_send_js(type, callback, data) { - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_1 = napiModule.postMessage; - postMessage_1({ - __emnapi__: { - type: 'async-send', - payload: { - callback: callback, - data: data - } - } - }); - } - else { - switch (type) { - case 0: - _emnapi_set_immediate(callback, data); - break; - case 1: - _emnapi_next_tick(callback, data); - break; - } - } - } - // function ptrToString (ptr: number): string { - // return '0x' + ('00000000' + ptr.toString(16)).slice(-8) - // } - var uvThreadpoolReadyResolve; - var uvThreadpoolReady = new Promise(function (resolve) { - uvThreadpoolReadyResolve = function () { - uvThreadpoolReady.ready = true; - resolve(); - }; - }); - uvThreadpoolReady.ready = false; - /** @__sig vppi */ - function _emnapi_after_uvthreadpool_ready(callback, q, type) { - if (uvThreadpoolReady.ready) { - (wasmTable.get(callback))(q, type); - } - else { - uvThreadpoolReady.then(function () { - (wasmTable.get(callback))(q, type); - }); - } - } - /** @__sig vpi */ - function _emnapi_tell_js_uvthreadpool(threads, size) { - var p = []; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var _loop_1 = function (i) { - var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true); - var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); - p.push(new Promise(function (resolve) { - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__ && __emnapi__.type === 'async-thread-ready') { - resolve(); - if (worker && typeof worker.unref === 'function') { - worker.unref(); - } - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler); - } - } - }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler); - } - })); - }; - for (var i = 0; i < size; i++) { - _loop_1(i); - } - Promise.all(p).then(uvThreadpoolReadyResolve); - } - /** @__sig v */ - function _emnapi_emit_async_thread_ready() { - if (!ENVIRONMENT_IS_PTHREAD) - return; - var postMessage = napiModule.postMessage; - postMessage({ - __emnapi__: { - type: 'async-thread-ready', - payload: {} - } - }); - } - var asyncMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - _emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready, - _emnapi_async_send_js: _emnapi_async_send_js, - _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready, - _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool, - _emnapi_worker_unref: _emnapi_worker_unref - }); - /* eslint-disable @typescript-eslint/indent */ - /** @__sig ipjp */ - function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!adjusted_value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var change_in_bytes_number = Number(change_in_bytes); - if (change_in_bytes_number < 0) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var old_size = wasmMemory.buffer.byteLength; - var new_size = old_size + change_in_bytes_number; - new_size = new_size + ((65536 - new_size % 65536) % 65536); - if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (emnapiCtx.feature.supportBigInt) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true); - } - else { - $emnapiSetValueI64(adjusted_value, wasmMemory.buffer.byteLength); - } - return envObject.clearLastError(); - } - var memoryMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_adjust_external_memory: napi_adjust_external_memory - }); - /** - * @__postset - * ``` - * emnapiAWST.init(); - * ``` - */ - var emnapiAWST = { - idGen: {}, - values: [undefined], - queued: new Set(), - pending: [], - init: function () { - var idGen = { - nextId: 1, - list: [], - generate: function () { - var id; - if (idGen.list.length) { - id = idGen.list.shift(); - } - else { - id = idGen.nextId; - idGen.nextId++; - } - return id; - }, - reuse: function (id) { - idGen.list.push(id); - } - }; - emnapiAWST.idGen = idGen; - emnapiAWST.values = [undefined]; - emnapiAWST.queued = new Set(); - emnapiAWST.pending = []; - }, - create: function (env, resource, resourceName, execute, complete, data) { - var asyncId = 0; - var triggerAsyncId = 0; - if (emnapiNodeBinding) { - var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resourceName, -1); - asyncId = asyncContext.asyncId; - triggerAsyncId = asyncContext.triggerAsyncId; - } - var id = emnapiAWST.idGen.generate(); - emnapiAWST.values[id] = { - env: env, - id: id, - resource: resource, - asyncId: asyncId, - triggerAsyncId: triggerAsyncId, - status: 0, - execute: execute, - complete: complete, - data: data - }; - return id; - }, - callComplete: function (work, status) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var complete = work.complete; - var env = work.env; - var data = work.data; - var callback = function () { - if (!complete) - return; - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - try { - envObject.callbackIntoModule(true, function () { - (wasmTable.get(complete))(env, status, data); - }); - } - finally { - emnapiCtx.closeScope(envObject, scope); - } - }; - if (emnapiNodeBinding) { - emnapiNodeBinding.node.makeCallback(work.resource, callback, [], { - asyncId: work.asyncId, - triggerAsyncId: work.triggerAsyncId - }); - } - else { - callback(); - } - }, - queue: function (id) { - var work = emnapiAWST.values[id]; - if (!work) - return; - if (work.status === 0) { - work.status = 1; - if (emnapiAWST.queued.size >= (Math.abs(emnapiAsyncWorkPoolSize) || 4)) { - emnapiAWST.pending.push(id); - return; - } - emnapiAWST.queued.add(id); - var env_1 = work.env; - var data_1 = work.data; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var execute = work.execute; - work.status = 2; - emnapiCtx.feature.setImmediate(function () { - (wasmTable.get(execute))(env_1, data_1); - emnapiAWST.queued.delete(id); - work.status = 3; - emnapiCtx.feature.setImmediate(function () { - emnapiAWST.callComplete(work, 0 /* napi_status.napi_ok */); - }); - if (emnapiAWST.pending.length > 0) { - var nextWorkId = emnapiAWST.pending.shift(); - emnapiAWST.values[nextWorkId].status = 0; - emnapiAWST.queue(nextWorkId); - } - }); - } - }, - cancel: function (id) { - var index = emnapiAWST.pending.indexOf(id); - if (index !== -1) { - var work_1 = emnapiAWST.values[id]; - if (work_1 && (work_1.status === 1)) { - work_1.status = 4; - emnapiAWST.pending.splice(index, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiAWST.callComplete(work_1, 11 /* napi_status.napi_cancelled */); - }); - return 0 /* napi_status.napi_ok */; - } - else { - return 9 /* napi_status.napi_generic_failure */; - } - } - return 9 /* napi_status.napi_generic_failure */; - }, - remove: function (id) { - var work = emnapiAWST.values[id]; - if (!work) - return; - if (emnapiNodeBinding) { - emnapiNodeBinding.node.emitAsyncDestroy({ - asyncId: work.asyncId, - triggerAsyncId: work.triggerAsyncId - }); - } - emnapiAWST.values[id] = undefined; - emnapiAWST.idGen.reuse(id); - } - }; - /** @__sig vppdp */ - function _emnapi_node_emit_async_init(async_resource, async_resource_name, trigger_async_id, result) { - if (!emnapiNodeBinding) - return; - var resource = emnapiCtx.handleStore.get(async_resource).value; - var resource_name = emnapiCtx.handleStore.get(async_resource_name).value; - var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resource_name, trigger_async_id); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var asyncId = asyncContext.asyncId; - var triggerAsyncId = asyncContext.triggerAsyncId; - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setFloat64(result, asyncId, true); - HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true); - } - } - /** @__sig vdd */ - function _emnapi_node_emit_async_destroy(async_id, trigger_async_id) { - if (!emnapiNodeBinding) - return; - emnapiNodeBinding.node.emitAsyncDestroy({ - asyncId: async_id, - triggerAsyncId: trigger_async_id - }); - } - /* vpddp export function _emnapi_node_open_callback_scope (async_resource: napi_value, async_id: double, trigger_async_id: double, result: Pointer): void { - if (!emnapiNodeBinding || !result) return - const resource = emnapiCtx.handleStore.get(async_resource)!.value - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const nativeCallbackScopePointer = emnapiNodeBinding.node.openCallbackScope(resource, { - asyncId: async_id, - triggerAsyncId: trigger_async_id - }) - - from64('result') - $_TODO_makeSetValue('result', 0, 'nativeCallbackScopePointer', 'i64') - } - - vp - export function _emnapi_node_close_callback_scope (scope: Pointer): void { - if (!emnapiNodeBinding || !scope) return - from64('scope') - const nativeCallbackScopePointer = $_TODO_makeGetValue('scope', 0, 'i64') - emnapiNodeBinding.node.closeCallbackScope(BigInt(nativeCallbackScopePointer)) - } */ - /** @__sig ipppppddp */ - function _emnapi_node_make_callback(env, async_resource, cb, argv, size, async_id, trigger_async_id, result) { - var i = 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!emnapiNodeBinding) - return; - var resource = emnapiCtx.handleStore.get(async_resource).value; - var callback = emnapiCtx.handleStore.get(cb).value; - size = size >>> 0; - var arr = Array(size); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (; i < size; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - arr[i] = emnapiCtx.handleStore.get(argVal).value; - } - var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, { - asyncId: async_id, - triggerAsyncId: trigger_async_id - }); - if (result) { - var envObject = emnapiCtx.envStore.get(env); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - } - /** @__sig ippp */ - function _emnapi_async_init_js(async_resource, async_resource_name, result) { - if (!emnapiNodeBinding) { - return 9 /* napi_status.napi_generic_failure */; - } - var resource; - if (async_resource) { - resource = Object(emnapiCtx.handleStore.get(async_resource).value); - } - var name = emnapiCtx.handleStore.get(async_resource_name).value; - var ret = emnapiNodeBinding.napi.asyncInit(resource, name); - if (ret.status !== 0) - return ret.status; - var numberValue = ret.value; - if (!((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63))))) { - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - if (numberValue >= (BigInt(1) << BigInt(63))) { - numberValue = numberValue - (BigInt(1) << BigInt(64)); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var low = Number(numberValue & BigInt(0xffffffff)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var high = Number(numberValue >> BigInt(32)); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, low, true); - HEAP_DATA_VIEW.setInt32(result + 4, high, true); - return 0 /* napi_status.napi_ok */; - } - /** @__sig ip */ - function _emnapi_async_destroy_js(async_context) { - if (!emnapiNodeBinding) { - return 9 /* napi_status.napi_generic_failure */; - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var low = HEAP_DATA_VIEW.getInt32(async_context, true); - var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); - var pointer = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); - var ret = emnapiNodeBinding.napi.asyncDestroy(pointer); - if (ret.status !== 0) - return ret.status; - return 0 /* napi_status.napi_ok */; - } - // https://github.com/nodejs/node-addon-api/pull/1283 - /** @__sig ipppp */ - function napi_open_callback_scope(env, ignored, async_context_handle, result) { - throw new Error('napi_open_callback_scope has not been implemented yet'); - } - /** @__sig ipp */ - function napi_close_callback_scope(env, scope) { - throw new Error('napi_close_callback_scope has not been implemented yet'); - } - /** @__sig ippppppp */ - function napi_make_callback(env, async_context, recv, func, argc, argv, result) { - var i = 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!emnapiNodeBinding) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!recv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (argc > 0) { - if (!argv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v8recv = Object(emnapiCtx.handleStore.get(recv).value); - var v8func = emnapiCtx.handleStore.get(func).value; - if (typeof v8func !== 'function') { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var low = HEAP_DATA_VIEW.getInt32(async_context, true); - var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); - var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); - argc = argc >>> 0; - var arr = Array(argc); - for (; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - arr[i] = emnapiCtx.handleStore.get(argVal).value; - } - var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr); - if (ret.error) { - throw ret.error; - } - if (ret.status !== 0 /* napi_status.napi_ok */) - return envObject.setLastError(ret.status); - if (result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = envObject.ensureHandleId(ret.value); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig vp */ - function _emnapi_env_check_gc_access(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - } - var nodeMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - _emnapi_async_destroy_js: _emnapi_async_destroy_js, - _emnapi_async_init_js: _emnapi_async_init_js, - _emnapi_env_check_gc_access: _emnapi_env_check_gc_access, - _emnapi_node_emit_async_destroy: _emnapi_node_emit_async_destroy, - _emnapi_node_emit_async_init: _emnapi_node_emit_async_init, - _emnapi_node_make_callback: _emnapi_node_make_callback, - napi_close_callback_scope: napi_close_callback_scope, - napi_make_callback: napi_make_callback, - napi_open_callback_scope: napi_open_callback_scope - }); - /** - * @__deps malloc - * @__deps free - * @__postset - * ``` - * emnapiTSFN.init(); - * ``` - */ - var emnapiTSFN = { - offset: { - /* napi_ref */ resource: 0, - /* double */ async_id: 8, - /* double */ trigger_async_id: 16, - /* size_t */ queue_size: 24, - /* void* */ queue: 1 * 4 + 24, - /* size_t */ thread_count: 2 * 4 + 24, - /* bool */ is_closing: 3 * 4 + 24, - /* atomic_uchar */ dispatch_state: 3 * 4 + 28, - /* void* */ context: 3 * 4 + 32, - /* size_t */ max_queue_size: 4 * 4 + 32, - /* napi_ref */ ref: 5 * 4 + 32, - /* napi_env */ env: 6 * 4 + 32, - /* void* */ finalize_data: 7 * 4 + 32, - /* napi_finalize */ finalize_cb: 8 * 4 + 32, - /* napi_threadsafe_function_call_js */ call_js_cb: 9 * 4 + 32, - /* bool */ handles_closing: 10 * 4 + 32, - /* bool */ async_ref: 10 * 4 + 36, - /* int32_t */ mutex: 10 * 4 + 40, - /* int32_t */ cond: 10 * 4 + 44, - end: 10 * 4 + 48 - }, - init: function () { - if (typeof PThread !== 'undefined') { - PThread.unusedWorkers.forEach(emnapiTSFN.addListener); - PThread.runningWorkers.forEach(emnapiTSFN.addListener); - var __original_getNewWorker_1 = PThread.getNewWorker; - PThread.getNewWorker = function () { - var r = __original_getNewWorker_1.apply(this, arguments); - emnapiTSFN.addListener(r); - return r; - }; - } - }, - addListener: function (worker) { - if (!worker) - return false; - if (worker._emnapiTSFNListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__) { - var type = __emnapi__.type; - var payload = __emnapi__.payload; - if (type === 'tsfn-send') { - emnapiTSFN.dispatch(payload.tsfn); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiTSFNListener; - }; - worker._emnapiTSFNListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; - }, - initQueue: function (func) { - var size = 2 * 4; - var queue = _malloc(size); - if (!queue) - return false; - new Uint8Array(wasmMemory.buffer, queue, size).fill(0); - emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false); - return true; - }, - destroyQueue: function (func) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - if (queue) { - _free(queue); - } - }, - pushQueue: function (func, data) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - var head = emnapiTSFN.loadSizeTypeValue(queue, false); - var tail = emnapiTSFN.loadSizeTypeValue(queue + 4, false); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var size = 2 * 4; - var node = _malloc(size); - if (!node) - throw new Error('OOM'); - emnapiTSFN.storeSizeTypeValue(node, data, false); - emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); - if (head === 0 && tail === 0) { - emnapiTSFN.storeSizeTypeValue(queue, node, false); - emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); - } - else { - emnapiTSFN.storeSizeTypeValue(tail + 4, node, false); - emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); - } - emnapiTSFN.addQueueSize(func); - }, - shiftQueue: function (func) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - var head = emnapiTSFN.loadSizeTypeValue(queue, false); - if (head === 0) - return 0; - var node = head; - var next = emnapiTSFN.loadSizeTypeValue(head + 4, false); - emnapiTSFN.storeSizeTypeValue(queue, next, false); - if (next === 0) { - emnapiTSFN.storeSizeTypeValue(queue + 4, 0, false); - } - emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); - var value = emnapiTSFN.loadSizeTypeValue(node, false); - _free(node); - emnapiTSFN.subQueueSize(func); - return value; - }, - push: function (func, data, mode) { - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - var waitCondition = function () { - var queueSize = emnapiTSFN.getQueueSize(func); - var maxSize = emnapiTSFN.getMaxQueueSize(func); - var isClosing = emnapiTSFN.getIsClosing(func); - return queueSize >= maxSize && maxSize > 0 && !isClosing; - }; - var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; - return mutex.execute(function () { - while (waitCondition()) { - if (mode === 0 /* napi_threadsafe_function_call_mode.napi_tsfn_nonblocking */) { - return 15 /* napi_status.napi_queue_full */; - } - /** - * Browser JS main thread can not use `Atomics.wait` - * - * Related: - * https://github.com/nodejs/node/pull/32689 - * https://github.com/nodejs/node/pull/33453 - */ - if (isBrowserMain) { - return 21 /* napi_status.napi_would_deadlock */; - } - cond.wait(); - } - if (emnapiTSFN.getIsClosing(func)) { - if (emnapiTSFN.getThreadCount(func) === 0) { - return 1 /* napi_status.napi_invalid_arg */; - } - else { - emnapiTSFN.subThreadCount(func); - return 16 /* napi_status.napi_closing */; - } - } - else { - emnapiTSFN.pushQueue(func, data); - emnapiTSFN.send(func); - return 0 /* napi_status.napi_ok */; - } - }); - }, - getMutex: function (func) { - var index = func + emnapiTSFN.offset.mutex; - var mutex = { - lock: function () { - var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - if (isBrowserMain) { - while (true) { - var oldValue = Atomics.compareExchange(i32a, 0, 0, 1); - if (oldValue === 0) { - return; - } - } - } - else { - while (true) { - var oldValue = Atomics.compareExchange(i32a, 0, 0, 1); - if (oldValue === 0) { - return; - } - Atomics.wait(i32a, 0, 1); - } - } - }, - /* lockAsync () { - return new Promise(resolve => { - const again = (): void => { fn() } - const fn = (): void => { - const i32a = new Int32Array(wasmMemory.buffer, index, 1) - const oldValue = Atomics.compareExchange(i32a, 0, 0, 1) - if (oldValue === 0) { - resolve() - return - } - (Atomics as any).waitAsync(i32a, 0, 1).value.then(again) - } - fn() - }) - }, */ - unlock: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - var oldValue = Atomics.compareExchange(i32a, 0, 1, 0); - if (oldValue !== 1) { - throw new Error('Tried to unlock while not holding the mutex'); - } - Atomics.notify(i32a, 0, 1); - }, - execute: function (fn) { - mutex.lock(); - try { - return fn(); - } - finally { - mutex.unlock(); - } - } /* , - executeAsync (fn: () => Promise): Promise { - return mutex.lockAsync().then(() => { - const r = fn() - mutex.unlock() - return r - }, (err) => { - mutex.unlock() - throw err - }) - } */ - }; - return mutex; - }, - getCond: function (func) { - var index = func + emnapiTSFN.offset.cond; - var mutex = emnapiTSFN.getMutex(func); - var cond = { - wait: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - var value = Atomics.load(i32a, 0); - mutex.unlock(); - Atomics.wait(i32a, 0, value); - mutex.lock(); - }, - /* waitAsync () { - const i32a = new Int32Array(wasmMemory.buffer, index, 1) - const value = Atomics.load(i32a, 0) - mutex.unlock() - const lock = (): Promise => mutex.lockAsync() - try { - return (Atomics as any).waitAsync(i32a, 0, value).value.then(lock, lock) - } catch (err) { - return lock() - } - }, */ - signal: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - Atomics.add(i32a, 0, 1); - Atomics.notify(i32a, 0, 1); - } - }; - return cond; - }, - getQueueSize: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue_size, true); - }, - addQueueSize: function (func) { - var offset = emnapiTSFN.offset.queue_size; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.add(arr, index, 1); - }, - subQueueSize: function (func) { - var offset = emnapiTSFN.offset.queue_size; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.sub(arr, index, 1); - }, - getThreadCount: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.thread_count, true); - }, - addThreadCount: function (func) { - var offset = emnapiTSFN.offset.thread_count; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.add(arr, index, 1); - }, - subThreadCount: function (func) { - var offset = emnapiTSFN.offset.thread_count; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.sub(arr, index, 1); - }, - getIsClosing: function (func) { - return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2); - }, - setIsClosing: function (func, value) { - Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value); - }, - getHandlesClosing: function (func) { - return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2); - }, - setHandlesClosing: function (func, value) { - Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value); - }, - getDispatchState: function (func) { - return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2); - }, - getContext: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false); - }, - getMaxQueueSize: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.max_queue_size, true); - }, - getEnv: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.env, false); - }, - getCallJSCb: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.call_js_cb, false); - }, - getRef: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.ref, false); - }, - getResource: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.resource, false); - }, - getFinalizeCb: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_cb, false); - }, - getFinalizeData: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_data, false); - }, - loadSizeTypeValue: function (offset, unsigned) { - var ret; - var arr; - if (unsigned) { - arr = new Uint32Array(wasmMemory.buffer); - ret = Atomics.load(arr, offset >> 2); - return ret; - } - else { - arr = new Int32Array(wasmMemory.buffer); - ret = Atomics.load(arr, offset >> 2); - return ret; - } - }, - storeSizeTypeValue: function (offset, value, unsigned) { - var arr; - if (unsigned) { - arr = new Uint32Array(wasmMemory.buffer); - Atomics.store(arr, offset >> 2, value); - return undefined; - } - else { - arr = new Int32Array(wasmMemory.buffer); - Atomics.store(arr, offset >> 2, value >>> 0); - return undefined; - } - }, - destroy: function (func) { - emnapiTSFN.destroyQueue(func); - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - var ref = emnapiTSFN.getRef(func); - if (ref) { - emnapiCtx.refStore.get(ref).dispose(); - } - emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func); - envObject.unref(); - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 0); - emnapiCtx.decreaseWaitingRequestCounter(); - } - var resource = emnapiTSFN.getResource(func); - emnapiCtx.refStore.get(resource).dispose(); - if (emnapiNodeBinding) { - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); - var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); - _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); - } - _free(func); - }, - emptyQueueAndDelete: function (func) { - var callJsCb = emnapiTSFN.getCallJSCb(func); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var context = emnapiTSFN.getContext(func); - var data; - while (emnapiTSFN.getQueueSize(func) > 0) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - data = emnapiTSFN.shiftQueue(func); - if (callJsCb) { - (wasmTable.get(callJsCb))(0, 0, context, data); - } - } - emnapiTSFN.destroy(func); - }, - finalize: function (func) { - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject); - var finalize = emnapiTSFN.getFinalizeCb(func); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var data = emnapiTSFN.getFinalizeData(func); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var context = emnapiTSFN.getContext(func); - var f = function () { - envObject.callFinalizerInternal(0, finalize, data, context); - }; - try { - if (finalize) { - if (emnapiNodeBinding) { - var resource = emnapiTSFN.getResource(func); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); - var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); - emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { - asyncId: asyncId, - triggerAsyncId: triggerAsyncId - }); - } - else { - f(); - } - } - emnapiTSFN.emptyQueueAndDelete(func); - } - finally { - emnapiCtx.closeScope(envObject); - } - }, - cleanup: function (func) { - emnapiTSFN.closeHandlesAndMaybeDelete(func, 1); - }, - closeHandlesAndMaybeDelete: function (func, set_closing) { - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject); - try { - if (set_closing) { - emnapiTSFN.getMutex(func).execute(function () { - emnapiTSFN.setIsClosing(func, 1); - if (emnapiTSFN.getMaxQueueSize(func) > 0) { - emnapiTSFN.getCond(func).signal(); - } - }); - } - if (emnapiTSFN.getHandlesClosing(func)) { - return; - } - emnapiTSFN.setHandlesClosing(func, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiTSFN.finalize(func); - }); - } - finally { - emnapiCtx.closeScope(envObject); - } - }, - dispatchOne: function (func) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var data = 0; - var popped_value = false; - var has_more = false; - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - mutex.execute(function () { - if (emnapiTSFN.getIsClosing(func)) { - emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); - } - else { - var size = emnapiTSFN.getQueueSize(func); - if (size > 0) { - data = emnapiTSFN.shiftQueue(func); - popped_value = true; - var maxQueueSize = emnapiTSFN.getMaxQueueSize(func); - if (size === maxQueueSize && maxQueueSize > 0) { - cond.signal(); - } - size--; - } - if (size === 0) { - if (emnapiTSFN.getThreadCount(func) === 0) { - emnapiTSFN.setIsClosing(func, 1); - if (emnapiTSFN.getMaxQueueSize(func) > 0) { - cond.signal(); - } - emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); - } - } - else { - has_more = true; - } - } - }); - if (popped_value) { - var env = emnapiTSFN.getEnv(func); - var envObject_1 = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject_1); - var f = function () { - envObject_1.callbackIntoModule(false, function () { - var callJsCb = emnapiTSFN.getCallJSCb(func); - var ref = emnapiTSFN.getRef(func); - var js_callback = ref ? emnapiCtx.refStore.get(ref).get() : 0; - if (callJsCb) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var context = emnapiTSFN.getContext(func); - (wasmTable.get(callJsCb))(env, js_callback, context, data); - } - else { - var jsCallback = js_callback ? emnapiCtx.handleStore.get(js_callback).value : null; - if (typeof jsCallback === 'function') { - jsCallback(); - } - } - }); - }; - try { - if (emnapiNodeBinding) { - var resource = emnapiTSFN.getResource(func); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { - asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true), - triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true) - }); - } - else { - f(); - } - } - finally { - emnapiCtx.closeScope(envObject_1); - } - } - return has_more; - }, - dispatch: function (func) { - var has_more = true; - var iterations_left = 1000; - var ui32a = new Uint32Array(wasmMemory.buffer); - var index = (func + emnapiTSFN.offset.dispatch_state) >> 2; - while (has_more && --iterations_left !== 0) { - Atomics.store(ui32a, index, 1); - has_more = emnapiTSFN.dispatchOne(func); - if (Atomics.exchange(ui32a, index, 0) !== 1) { - has_more = true; - } - } - if (has_more) { - emnapiTSFN.send(func); - } - }, - send: function (func) { - var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1); - if ((current_state & 1) === 1) { - return; - } - if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) { - postMessage({ - __emnapi__: { - type: 'tsfn-send', - payload: { - tsfn: func - } - } - }); - } - else { - emnapiCtx.feature.setImmediate(function () { - emnapiTSFN.dispatch(func); - }); - } - } - }; - /** @__sig ippppppppppp */ - function napi_create_threadsafe_function(env, func, async_resource, async_resource_name, max_queue_size, initial_thread_count, thread_finalize_data, thread_finalize_cb, context, call_js_cb, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!async_resource_name) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - max_queue_size = max_queue_size >>> 0; - initial_thread_count = initial_thread_count >>> 0; - if (initial_thread_count === 0) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var ref = 0; - if (!func) { - if (!call_js_cb) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - else { - var funcValue = emnapiCtx.handleStore.get(func).value; - if (typeof funcValue !== 'function') { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - ref = emnapiCtx.createReference(envObject, func, 1, 1 /* ReferenceOwnership.kUserland */).id; - } - var asyncResourceObject; - if (async_resource) { - asyncResourceObject = emnapiCtx.handleStore.get(async_resource).value; - if (asyncResourceObject == null) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - asyncResourceObject = Object(asyncResourceObject); - } - else { - asyncResourceObject = {}; - } - var resource = envObject.ensureHandleId(asyncResourceObject); - var asyncResourceName = emnapiCtx.handleStore.get(async_resource_name).value; - if (typeof asyncResourceName === 'symbol') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - asyncResourceName = String(asyncResourceName); - var resource_name = envObject.ensureHandleId(asyncResourceName); - // tsfn create - var sizeofTSFN = emnapiTSFN.offset.end; - var tsfn = _malloc(sizeofTSFN); - if (!tsfn) - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0); - var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* ReferenceOwnership.kUserland */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var resource_ = resourceRef.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(tsfn, resource_, true); - if (!emnapiTSFN.initQueue(tsfn)) { - _free(tsfn); - resourceRef.dispose(); - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true); - emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn); - envObject.ref(); - emnapiCtx.increaseWaitingRequestCounter(); - HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true); - HEAP_DATA_VIEW.setUint32(result, tsfn, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_get_threadsafe_function_context(func, result) { - if (!func || !result) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var context = emnapiTSFN.getContext(func); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, context, true); - return 0 /* napi_status.napi_ok */; - } - /** @__sig ippi */ - function napi_call_threadsafe_function(func, data, mode) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - return emnapiTSFN.push(func, data, mode); - } - /** @__sig ip */ - function napi_acquire_threadsafe_function(func) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - var mutex = emnapiTSFN.getMutex(func); - return mutex.execute(function () { - if (emnapiTSFN.getIsClosing(func)) { - return 16 /* napi_status.napi_closing */; - } - emnapiTSFN.addThreadCount(func); - return 0 /* napi_status.napi_ok */; - }); - } - /** @__sig ipi */ - function napi_release_threadsafe_function(func, mode) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - return mutex.execute(function () { - if (emnapiTSFN.getThreadCount(func) === 0) { - return 1 /* napi_status.napi_invalid_arg */; - } - emnapiTSFN.subThreadCount(func); - if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) { - var isClosing = emnapiTSFN.getIsClosing(func); - if (!isClosing) { - var isClosingValue = (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) ? 1 : 0; - emnapiTSFN.setIsClosing(func, isClosingValue); - if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) { - cond.signal(); - } - emnapiTSFN.send(func); - } - } - return 0 /* napi_status.napi_ok */; - }); - } - /** @__sig ipp */ - function napi_unref_threadsafe_function(env, func) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 0); - emnapiCtx.decreaseWaitingRequestCounter(); - } - return 0 /* napi_status.napi_ok */; - } - /** @__sig ipp */ - function napi_ref_threadsafe_function(env, func) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (!Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 1); - emnapiCtx.increaseWaitingRequestCounter(); - } - return 0 /* napi_status.napi_ok */; - } - var emnapiAWMT = { - unusedWorkers: [], - runningWorkers: [], - workQueue: [], - workerReady: null, - offset: { - /* napi_ref */ resource: 0, - /* double */ async_id: 8, - /* double */ trigger_async_id: 16, - /* napi_env */ env: 24, - /* void* */ data: 1 * 4 + 24, - /* napi_async_execute_callback */ execute: 2 * 4 + 24, - /* napi_async_complete_callback */ complete: 3 * 4 + 24, - end: 4 * 4 + 24 - }, - init: function () { - emnapiAWMT.unusedWorkers = []; - emnapiAWMT.runningWorkers = []; - emnapiAWMT.workQueue = []; - emnapiAWMT.workerReady = null; - }, - addListener: function (worker) { - if (!worker) - return false; - if (worker._emnapiAWMTListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__) { - var type = __emnapi__.type; - var payload = __emnapi__.payload; - if (type === 'async-work-complete') { - emnapiCtx.decreaseWaitingRequestCounter(); - emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1); - emnapiAWMT.unusedWorkers.push(worker); - emnapiAWMT.checkIdleWorker(); - emnapiAWMT.callComplete(payload.work, 0 /* napi_status.napi_ok */); - } - else if (type === 'async-work-queue') { - emnapiAWMT.scheduleWork(payload.work); - } - else if (type === 'async-work-cancel') { - emnapiAWMT.cancelWork(payload.work); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiAWMTListener; - }; - worker._emnapiAWMTListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; - }, - initWorkers: function (n) { - if (ENVIRONMENT_IS_PTHREAD) { - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve()); - } - if (emnapiAWMT.workerReady) - return emnapiAWMT.workerReady; - if (typeof onCreateWorker !== 'function') { - throw new TypeError('`options.onCreateWorker` is not a function'); - } - var promises = []; - var args = []; - if (!('emnapi_async_worker_create' in wasmInstance.exports)) { - throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags'); - } - for (var i = 0; i < n; ++i) { - args.push(wasmInstance.exports.emnapi_async_worker_create()); - } - try { - var _loop_1 = function (i) { - var worker = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' }); - var p = PThread.loadWasmModuleToWorker(worker); - emnapiAWMT.addListener(worker); - promises.push(p.then(function () { - if (typeof worker.unref === 'function') { - worker.unref(); - } - })); - emnapiAWMT.unusedWorkers.push(worker); - var arg = args[i]; - worker.threadBlockBase = arg; - worker.postMessage({ - __emnapi__: { - type: 'async-worker-init', - payload: { arg: arg } - } - }); - }; - for (var i = 0; i < n; ++i) { - _loop_1(i); - } - } - catch (err) { - for (var i = 0; i < n; ++i) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var arg = args[i]; - _free(arg); - } - throw err; - } - emnapiAWMT.workerReady = Promise.all(promises); - return emnapiAWMT.workerReady; - }, - checkIdleWorker: function () { - if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) { - var worker = emnapiAWMT.unusedWorkers.shift(); - var work = emnapiAWMT.workQueue.shift(); - emnapiAWMT.runningWorkers.push(worker); - worker.postMessage({ - __emnapi__: { - type: 'async-work-execute', - payload: { work: work } - } - }); - } - }, - getResource: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.resource, false); - }, - getExecute: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.execute, false); - }, - getComplete: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.complete, false); - }, - getEnv: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.env, false); - }, - getData: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.data, false); - }, - scheduleWork: function (work) { - var _a; - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_1 = napiModule.postMessage; - postMessage_1({ - __emnapi__: { - type: 'async-work-queue', - payload: { work: work } - } - }); - return; - } - emnapiCtx.increaseWaitingRequestCounter(); - emnapiAWMT.workQueue.push(work); - if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) { - emnapiAWMT.checkIdleWorker(); - } - else { - var fail = function (err) { - emnapiCtx.decreaseWaitingRequestCounter(); - throw err; - }; - try { - emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () { - emnapiAWMT.workerReady.ready = true; - emnapiAWMT.checkIdleWorker(); - }, fail); - } - catch (err) { - fail(err); - } - } - }, - cancelWork: function (work) { - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_2 = napiModule.postMessage; - postMessage_2({ - __emnapi__: { - type: 'async-work-cancel', - payload: { work: work } - } - }); - return 0 /* napi_status.napi_ok */; - } - var index = emnapiAWMT.workQueue.indexOf(work); - if (index !== -1) { - emnapiAWMT.workQueue.splice(index, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiCtx.decreaseWaitingRequestCounter(); - emnapiAWMT.checkIdleWorker(); - emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */); - }); - return 0 /* napi_status.napi_ok */; - } - return 9 /* napi_status.napi_generic_failure */; - }, - callComplete: function (work, status) { - var complete = emnapiAWMT.getComplete(work); - var env = emnapiAWMT.getEnv(work); - var data = emnapiAWMT.getData(work); - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - var callback = function () { - if (!complete) - return; - envObject.callbackIntoModule(true, function () { - (wasmTable.get(complete))(env, status, data); - }); - }; - try { - if (emnapiNodeBinding) { - var resource = emnapiAWMT.getResource(work); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); - var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); - emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], { - asyncId: asyncId, - triggerAsyncId: triggerAsyncId - }); - } - else { - callback(); - } - } - finally { - emnapiCtx.closeScope(envObject, scope); - } - } - }; - /** @__sig ippppppp */ - var napi_create_async_work = singleThreadAsyncWork - ? function (env, resource, resource_name, execute, complete, data, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!execute) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var resourceObject; - if (resource) { - resourceObject = Object(emnapiCtx.handleStore.get(resource).value); - } - else { - resourceObject = {}; - } - if (!resource_name) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var resourceName = String(emnapiCtx.handleStore.get(resource_name).value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, id, true); - return envObject.clearLastError(); - } - : function (env, resource, resource_name, execute, complete, data, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!execute) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var resourceObject; - if (resource) { - resourceObject = Object(emnapiCtx.handleStore.get(resource).value); - } - else { - resourceObject = {}; - } - if (!resource_name) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var sizeofAW = emnapiAWMT.offset.end; - var aw = _malloc(sizeofAW); - if (!aw) - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0); - var s = envObject.ensureHandleId(resourceObject); - var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1 /* ReferenceOwnership.kUserland */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var resource_ = resourceRef.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(aw, resource_, true); - _emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true); - HEAP_DATA_VIEW.setUint32(result, aw, true); - return envObject.clearLastError(); - }; - /** @__sig ipp */ - var napi_delete_async_work = singleThreadAsyncWork - ? function (env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiAWST.remove(work); - return envObject.clearLastError(); - } - : function (env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var resource = emnapiAWMT.getResource(work); - emnapiCtx.refStore.get(resource).dispose(); - if (emnapiNodeBinding) { - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); - var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); - _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); - } - _free(work); - return envObject.clearLastError(); - }; - /** @__sig ipp */ - var napi_queue_async_work = singleThreadAsyncWork - ? function (env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiAWST.queue(work); - return envObject.clearLastError(); - } - : function (env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiAWMT.scheduleWork(work); - return envObject.clearLastError(); - }; - /** @__sig ipp */ - var napi_cancel_async_work = singleThreadAsyncWork - ? function (env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var status = emnapiAWST.cancel(work); - if (status === 0 /* napi_status.napi_ok */) - return envObject.clearLastError(); - return envObject.setLastError(status); - } - : function (env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var status = emnapiAWMT.cancelWork(work); - if (status === 0 /* napi_status.napi_ok */) - return envObject.clearLastError(); - return envObject.setLastError(status); - }; - function initWorker(startArg) { - if (napiModule.childThread) { - if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') { - throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags'); - } - wasmInstance.exports.emnapi_async_worker_init(startArg); - } - else { - throw new Error('startThread is only available in child threads'); - } - } - function executeAsyncWork(work) { - if (!ENVIRONMENT_IS_PTHREAD) - return; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var execute = emnapiAWMT.getExecute(work); - var env = emnapiAWMT.getEnv(work); - var data = emnapiAWMT.getData(work); - (wasmTable.get(execute))(env, data); - var postMessage = napiModule.postMessage; - postMessage({ - __emnapi__: { - type: 'async-work-complete', - payload: { work: work } - } - }); - } - napiModule.initWorker = initWorker; - napiModule.executeAsyncWork = executeAsyncWork; - var asyncWorkMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_cancel_async_work: napi_cancel_async_work, - napi_create_async_work: napi_create_async_work, - napi_delete_async_work: napi_delete_async_work, - napi_queue_async_work: napi_queue_async_work - }); - /** - * @__deps malloc - * @__deps free - * @__postset - * ``` - * emnapiExternalMemory.init(); - * ``` - */ - var emnapiExternalMemory = { - registry: typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined, - table: new WeakMap(), - wasmMemoryViewTable: new WeakMap(), - init: function () { - emnapiExternalMemory.registry = typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined; - emnapiExternalMemory.table = new WeakMap(); - emnapiExternalMemory.wasmMemoryViewTable = new WeakMap(); - }, - isSharedArrayBuffer: function (value) { - return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); - }, - isDetachedArrayBuffer: function (arrayBuffer) { - if (arrayBuffer.byteLength === 0) { - try { - // eslint-disable-next-line no-new - new Uint8Array(arrayBuffer); - } - catch (_) { - return true; - } - } - return false; - }, - getArrayBufferPointer: function (arrayBuffer, shouldCopy) { - var _a; - var info = { - address: 0, - ownership: 0 /* ReferenceOwnership.kRuntime */, - runtimeAllocated: 0 - }; - if (arrayBuffer === wasmMemory.buffer) { - return info; - } - var isDetached = emnapiExternalMemory.isDetachedArrayBuffer(arrayBuffer); - if (emnapiExternalMemory.table.has(arrayBuffer)) { - var cachedInfo = emnapiExternalMemory.table.get(arrayBuffer); - if (isDetached) { - cachedInfo.address = 0; - return cachedInfo; - } - if (shouldCopy && cachedInfo.ownership === 0 /* ReferenceOwnership.kRuntime */ && cachedInfo.runtimeAllocated === 1) { - new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), cachedInfo.address); - } - return cachedInfo; - } - if (isDetached || (arrayBuffer.byteLength === 0)) { - return info; - } - if (!shouldCopy) { - return info; - } - var pointer = _malloc(arrayBuffer.byteLength); - if (!pointer) - throw new Error('Out of memory'); - new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer); - info.address = pointer; - info.ownership = emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */; - info.runtimeAllocated = 1; - emnapiExternalMemory.table.set(arrayBuffer, info); - (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(arrayBuffer, pointer); - return info; - }, - getOrUpdateMemoryView: function (view) { - if (view.buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - emnapiExternalMemory.wasmMemoryViewTable.set(view, { - Ctor: view.constructor, - address: view.byteOffset, - length: view instanceof DataView ? view.byteLength : view.length, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - return view; - } - var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || - ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer)); - if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - var info = emnapiExternalMemory.wasmMemoryViewTable.get(view); - var Ctor = info.Ctor; - var newView = void 0; - var Buffer_1 = emnapiCtx.feature.Buffer; - if (typeof Buffer_1 === 'function' && Ctor === Buffer_1) { - newView = Buffer_1.from(wasmMemory.buffer, info.address, info.length); - } - else { - newView = new Ctor(wasmMemory.buffer, info.address, info.length); - } - emnapiExternalMemory.wasmMemoryViewTable.set(newView, info); - return newView; - } - return view; - }, - getViewPointer: function (view, shouldCopy) { - view = emnapiExternalMemory.getOrUpdateMemoryView(view); - if (view.buffer === wasmMemory.buffer) { - if (emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - var _a = emnapiExternalMemory.wasmMemoryViewTable.get(view), address_1 = _a.address, ownership_1 = _a.ownership, runtimeAllocated_1 = _a.runtimeAllocated; - return { address: address_1, ownership: ownership_1, runtimeAllocated: runtimeAllocated_1, view: view }; - } - return { address: view.byteOffset, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0, view: view }; - } - var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated; - return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view }; - } - }; - /* eslint-disable @typescript-eslint/indent */ - /** - * @__postset - * ``` - * emnapiString.init(); - * ``` - */ - var emnapiString = { - utf8Decoder: undefined, - utf16Decoder: undefined, - init: function () { - var fallbackDecoder = { - decode: function (bytes) { - var inputIndex = 0; - var pendingSize = Math.min(0x1000, bytes.length + 1); - var pending = new Uint16Array(pendingSize); - var chunks = []; - var pendingIndex = 0; - for (;;) { - var more = inputIndex < bytes.length; - if (!more || (pendingIndex >= pendingSize - 1)) { - var subarray = pending.subarray(0, pendingIndex); - var arraylike = subarray; - chunks.push(String.fromCharCode.apply(null, arraylike)); - if (!more) { - return chunks.join(''); - } - bytes = bytes.subarray(inputIndex); - inputIndex = 0; - pendingIndex = 0; - } - var byte1 = bytes[inputIndex++]; - if ((byte1 & 0x80) === 0) { - pending[pendingIndex++] = byte1; - } - else if ((byte1 & 0xe0) === 0xc0) { - var byte2 = bytes[inputIndex++] & 0x3f; - pending[pendingIndex++] = ((byte1 & 0x1f) << 6) | byte2; - } - else if ((byte1 & 0xf0) === 0xe0) { - var byte2 = bytes[inputIndex++] & 0x3f; - var byte3 = bytes[inputIndex++] & 0x3f; - pending[pendingIndex++] = ((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3; - } - else if ((byte1 & 0xf8) === 0xf0) { - var byte2 = bytes[inputIndex++] & 0x3f; - var byte3 = bytes[inputIndex++] & 0x3f; - var byte4 = bytes[inputIndex++] & 0x3f; - var codepoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4; - if (codepoint > 0xffff) { - codepoint -= 0x10000; - pending[pendingIndex++] = (codepoint >>> 10) & 0x3ff | 0xd800; - codepoint = 0xdc00 | codepoint & 0x3ff; - } - pending[pendingIndex++] = codepoint; - } - else ; - } - } - }; - var utf8Decoder; - utf8Decoder = typeof TextDecoder === 'function' ? new TextDecoder() : fallbackDecoder; - emnapiString.utf8Decoder = utf8Decoder; - var fallbackDecoder2 = { - decode: function (input) { - var bytes = new Uint16Array(input.buffer, input.byteOffset, input.byteLength / 2); - if (bytes.length <= 0x1000) { - return String.fromCharCode.apply(null, bytes); - } - var chunks = []; - var i = 0; - var len = 0; - for (; i < bytes.length; i += len) { - len = Math.min(0x1000, bytes.length - i); - chunks.push(String.fromCharCode.apply(null, bytes.subarray(i, i + len))); - } - return chunks.join(''); - } - }; - var utf16Decoder; - utf16Decoder = typeof TextDecoder === 'function' ? new TextDecoder('utf-16le') : fallbackDecoder2; - emnapiString.utf16Decoder = utf16Decoder; - }, - lengthBytesUTF8: function (str) { - var c; - var len = 0; - for (var i = 0; i < str.length; ++i) { - c = str.charCodeAt(i); - if (c <= 0x7F) { - len++; - } - else if (c <= 0x7FF) { - len += 2; - } - else if (c >= 0xD800 && c <= 0xDFFF) { - len += 4; - ++i; - } - else { - len += 3; - } - } - return len; - }, - UTF8ToString: function (ptr, length) { - if (!ptr || !length) - return ''; - ptr >>>= 0; - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - var end = ptr; - if (length === -1) { - for (; HEAPU8[end];) - ++end; - } - else { - end = ptr + (length >>> 0); - } - length = end - ptr; - if (length <= 16) { - var idx = ptr; - var str = ''; - while (idx < end) { - var u0 = HEAPU8[idx++]; - if (!(u0 & 0x80)) { - str += String.fromCharCode(u0); - continue; - } - var u1 = HEAPU8[idx++] & 63; - if ((u0 & 0xE0) === 0xC0) { - str += String.fromCharCode(((u0 & 31) << 6) | u1); - continue; - } - var u2 = HEAPU8[idx++] & 63; - if ((u0 & 0xF0) === 0xE0) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; - } - else { - u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (HEAPU8[idx++] & 63); - } - if (u0 < 0x10000) { - str += String.fromCharCode(u0); - } - else { - var ch = u0 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } - } - return str; - } - return emnapiString.utf8Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); - }, - stringToUTF8: function (str, outPtr, maxBytesToWrite) { - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - var outIdx = outPtr; - outIdx >>>= 0; - if (!(maxBytesToWrite > 0)) { - return 0; - } - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i); - if (u >= 0xD800 && u <= 0xDFFF) { - var u1 = str.charCodeAt(++i); - u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); - } - if (u <= 0x7F) { - if (outIdx >= endIdx) - break; - HEAPU8[outIdx++] = u; - } - else if (u <= 0x7FF) { - if (outIdx + 1 >= endIdx) - break; - HEAPU8[outIdx++] = 0xC0 | (u >> 6); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - else if (u <= 0xFFFF) { - if (outIdx + 2 >= endIdx) - break; - HEAPU8[outIdx++] = 0xE0 | (u >> 12); - HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - else { - if (outIdx + 3 >= endIdx) - break; - HEAPU8[outIdx++] = 0xF0 | (u >> 18); - HEAPU8[outIdx++] = 0x80 | ((u >> 12) & 63); - HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - } - HEAPU8[outIdx] = 0; - return outIdx - startIdx; - }, - UTF16ToString: function (ptr, length) { - if (!ptr || !length) - return ''; - ptr >>>= 0; - var end = ptr; - if (length === -1) { - var idx = end >> 1; - var HEAPU16 = new Uint16Array(wasmMemory.buffer); - while (HEAPU16[idx]) - ++idx; - end = idx << 1; - } - else { - end = ptr + (length >>> 0) * 2; - } - length = end - ptr; - if (length <= 32) { - return String.fromCharCode.apply(null, new Uint16Array(wasmMemory.buffer, ptr, length / 2)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - return emnapiString.utf16Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); - }, - stringToUTF16: function (str, outPtr, maxBytesToWrite) { - if (maxBytesToWrite === undefined) { - maxBytesToWrite = 0x7FFFFFFF; - } - if (maxBytesToWrite < 2) - return 0; - maxBytesToWrite -= 2; - var startPtr = outPtr; - var numCharsToWrite = (maxBytesToWrite < str.length * 2) ? (maxBytesToWrite / 2) : str.length; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < numCharsToWrite; ++i) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var codeUnit = str.charCodeAt(i); - HEAP_DATA_VIEW.setInt16(outPtr, codeUnit, true); - outPtr += 2; - } - HEAP_DATA_VIEW.setInt16(outPtr, 0, true); - return outPtr - startPtr; - }, - newString: function (env, str, length, result, stringMaker) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!str) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!(autoLength || (sizelength <= 2147483647))) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var strValue = stringMaker(str, autoLength, sizelength); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(strValue).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - }, - newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!str) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!(autoLength || (sizelength <= 2147483647))) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var status = createApi(env, str, length, result); - if (status === 0 /* napi_status.napi_ok */) { - if (copied) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(copied, 1, true); - } - if (finalize_callback) { - envObject.callFinalizer(finalize_callback, str, finalize_hint); - } - } - return status; - } - }; - /** - * @__sig ippp - */ - function napi_get_array_length(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isArray()) { - return envObject.setLastError(8 /* napi_status.napi_array_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = handle.value.length >>> 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppp - */ - function napi_get_arraybuffer_info(env, arraybuffer, data, byte_length) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (data) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address; - HEAP_DATA_VIEW.setUint32(data, p, true); - } - if (byte_length) { - HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function node_api_set_prototype(env, object, value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var obj = emnapiCtx.handleStore.get(object).value; - if (obj == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var type = typeof obj; - var v = void 0; - try { - v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - var val = emnapiCtx.handleStore.get(value).value; - Object.setPrototypeOf(v, val); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ippp - */ - function napi_get_prototype(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (handle.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = handle.isObject() || handle.isFunction() ? handle.value : Object(handle.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = envObject.ensureHandleId(Object.getPrototypeOf(v)); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, p, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ippppppp - */ - function napi_get_typedarray_info(env, typedarray, type, length, data, arraybuffer, byte_offset) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!typedarray) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(typedarray); - if (!handle.isTypedArray()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (type) { - var t = void 0; - if (v instanceof Int8Array) { - t = 0 /* napi_typedarray_type.napi_int8_array */; - } - else if (v instanceof Uint8Array) { - t = 1 /* napi_typedarray_type.napi_uint8_array */; - } - else if (v instanceof Uint8ClampedArray) { - t = 2 /* napi_typedarray_type.napi_uint8_clamped_array */; - } - else if (v instanceof Int16Array) { - t = 3 /* napi_typedarray_type.napi_int16_array */; - } - else if (v instanceof Uint16Array) { - t = 4 /* napi_typedarray_type.napi_uint16_array */; - } - else if (v instanceof Int32Array) { - t = 5 /* napi_typedarray_type.napi_int32_array */; - } - else if (v instanceof Uint32Array) { - t = 6 /* napi_typedarray_type.napi_uint32_array */; - } - else if (typeof Float16Array === 'function' && v instanceof Float16Array) { - t = 11 /* napi_typedarray_type.napi_float16_array */; - } - else if (v instanceof Float32Array) { - t = 7 /* napi_typedarray_type.napi_float32_array */; - } - else if (v instanceof Float64Array) { - t = 8 /* napi_typedarray_type.napi_float64_array */; - } - else if (v instanceof BigInt64Array) { - t = 9 /* napi_typedarray_type.napi_bigint64_array */; - } - else if (v instanceof BigUint64Array) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - t = 10 /* napi_typedarray_type.napi_biguint64_array */; - } - else { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - HEAP_DATA_VIEW.setInt32(type, t, true); - } - if (length) { - HEAP_DATA_VIEW.setUint32(length, v.length, true); - } - var buffer; - if (data || arraybuffer) { - buffer = v.buffer; - if (data) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = emnapiExternalMemory.getViewPointer(v, true).address; - HEAP_DATA_VIEW.setUint32(data, p, true); - } - if (arraybuffer) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var ab = envObject.ensureHandleId(buffer); - HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); - } - } - if (byte_offset) { - HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ipppp - */ - function napi_get_buffer_info(env, buffer, data, length) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!buffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(buffer); - if (!handle.isBuffer(emnapiCtx.feature.Buffer)) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (handle.isDataView()) { - return napi_get_dataview_info(env, buffer, length, data, 0, 0); - } - return napi_get_typedarray_info(env, buffer, 0, length, data, 0, 0); - } - /** - * @__sig ipppppp - */ - function napi_get_dataview_info(env, dataview, byte_length, data, arraybuffer, byte_offset) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!dataview) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(dataview); - if (!handle.isDataView()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (byte_length) { - HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true); - } - var buffer; - if (data || arraybuffer) { - buffer = v.buffer; - if (data) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = emnapiExternalMemory.getViewPointer(v, true).address; - HEAP_DATA_VIEW.setUint32(data, p, true); - } - if (arraybuffer) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var ab = envObject.ensureHandleId(buffer); - HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); - } - } - if (byte_offset) { - HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_get_date_value(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isDate()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - v = handle.value.valueOf(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setFloat64(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ippp - */ - function napi_get_value_bool(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'boolean') { - return envObject.setLastError(7 /* napi_status.napi_boolean_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = handle.value ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_get_value_double(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setFloat64(result, r, true); - return envObject.clearLastError(); - } - /** - * @__sig ipppp - */ - function napi_get_value_bigint_int64(env, value, result, lossless) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!lossless) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - var numberValue = handle.value; - if (typeof numberValue !== 'bigint') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) { - HEAP_DATA_VIEW.setInt8(lossless, 1, true); - } - else { - HEAP_DATA_VIEW.setInt8(lossless, 0, true); - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - if (numberValue >= (BigInt(1) << BigInt(63))) { - numberValue = numberValue - (BigInt(1) << BigInt(64)); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var low = Number(numberValue & BigInt(0xffffffff)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var high = Number(numberValue >> BigInt(32)); - HEAP_DATA_VIEW.setInt32(result, low, true); - HEAP_DATA_VIEW.setInt32(result + 4, high, true); - return envObject.clearLastError(); - } - /** - * @__sig ipppp - */ - function napi_get_value_bigint_uint64(env, value, result, lossless) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!lossless) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - var numberValue = handle.value; - if (typeof numberValue !== 'bigint') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) { - HEAP_DATA_VIEW.setInt8(lossless, 1, true); - } - else { - HEAP_DATA_VIEW.setInt8(lossless, 0, true); - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var low = Number(numberValue & BigInt(0xffffffff)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var high = Number(numberValue >> BigInt(32)); - HEAP_DATA_VIEW.setUint32(result, low, true); - HEAP_DATA_VIEW.setUint32(result + 4, high, true); - return envObject.clearLastError(); - } - /** - * @__sig ippppp - */ - function napi_get_value_bigint_words(env, value, sign_bit, word_count, words) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!word_count) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isBigInt()) { - return envObject.setLastError(17 /* napi_status.napi_bigint_expected */); - } - var isMinus = handle.value < BigInt(0); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true); - var wordCount = 0; - var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; - while (bigintValue !== BigInt(0)) { - wordCount++; - bigintValue = bigintValue >> BigInt(64); - } - bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; - if (!sign_bit && !words) { - word_count_int = wordCount; - HEAP_DATA_VIEW.setUint32(word_count, word_count_int, true); - } - else { - if (!sign_bit) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!words) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var wordsArr = []; - while (bigintValue !== BigInt(0)) { - var uint64 = bigintValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - wordsArr.push(uint64); - bigintValue = bigintValue >> BigInt(64); - } - var len = Math.min(word_count_int, wordsArr.length); - for (var i = 0; i < len; i++) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var low = Number(wordsArr[i] & BigInt(0xffffffff)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var high = Number(wordsArr[i] >> BigInt(32)); - HEAP_DATA_VIEW.setUint32(words + i * 8, low, true); - HEAP_DATA_VIEW.setUint32(words + (i * 8 + 4), high, true); - } - HEAP_DATA_VIEW.setInt32(sign_bit, isMinus ? 1 : 0, true); - HEAP_DATA_VIEW.setUint32(word_count, len, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_get_value_external(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isExternal()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = handle.data(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, p, true); - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_get_value_int32(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = new Int32Array([handle.value])[0]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, v, true); - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_get_value_int64(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - var numberValue = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) { - HEAP_DATA_VIEW.setInt32(result, 0, true); - HEAP_DATA_VIEW.setInt32(result + 4, 0, true); - } - else if (numberValue < /* INT64_RANGE_NEGATIVE */ -9223372036854776e3) { - HEAP_DATA_VIEW.setInt32(result, 0, true); - HEAP_DATA_VIEW.setInt32(result + 4, 2147483648, true); - } - else if (numberValue >= /* INT64_RANGE_POSITIVE */ 9223372036854776000) { - HEAP_DATA_VIEW.setUint32(result, 4294967295, true); - HEAP_DATA_VIEW.setUint32(result + 4, 2147483647, true); - } - else { - $emnapiSetValueI64(result, Math.trunc(numberValue)); - } - return envObject.clearLastError(); - } - /** - * @__sig ippppp - */ - function napi_get_value_string_latin1(env, value, buf, buf_size, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!buf) { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); - } - else if (buf_size !== 0) { - var copied = 0; - var v = void 0; - for (var i = 0; i < buf_size - 1; ++i) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = handle.value.charCodeAt(i) & 0xff; - HEAP_DATA_VIEW.setUint8(buf + i, v, true); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - copied++; - } - HEAP_DATA_VIEW.setUint8(buf + copied, 0, true); - if (result) { - HEAP_DATA_VIEW.setUint32(result, copied, true); - } - } - else if (result) { - HEAP_DATA_VIEW.setUint32(result, 0, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ippppp - */ - function napi_get_value_string_utf8(env, value, buf, buf_size, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!buf) { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var strLength = emnapiString.lengthBytesUTF8(handle.value); - HEAP_DATA_VIEW.setUint32(result, strLength, true); - } - else if (buf_size !== 0) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var copied = emnapiString.stringToUTF8(handle.value, buf, buf_size); - if (result) { - HEAP_DATA_VIEW.setUint32(result, copied, true); - } - } - else if (result) { - HEAP_DATA_VIEW.setUint32(result, 0, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ippppp - */ - function napi_get_value_string_utf16(env, value, buf, buf_size, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!buf) { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); - } - else if (buf_size !== 0) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var copied = emnapiString.stringToUTF16(handle.value, buf, buf_size * 2); - if (result) { - HEAP_DATA_VIEW.setUint32(result, copied / 2, true); - } - } - else if (result) { - HEAP_DATA_VIEW.setUint32(result, 0, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_get_value_uint32(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = new Uint32Array([handle.value])[0]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - var convert2cMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_get_array_length: napi_get_array_length, - napi_get_arraybuffer_info: napi_get_arraybuffer_info, - napi_get_buffer_info: napi_get_buffer_info, - napi_get_dataview_info: napi_get_dataview_info, - napi_get_date_value: napi_get_date_value, - napi_get_prototype: napi_get_prototype, - napi_get_typedarray_info: napi_get_typedarray_info, - napi_get_value_bigint_int64: napi_get_value_bigint_int64, - napi_get_value_bigint_uint64: napi_get_value_bigint_uint64, - napi_get_value_bigint_words: napi_get_value_bigint_words, - napi_get_value_bool: napi_get_value_bool, - napi_get_value_double: napi_get_value_double, - napi_get_value_external: napi_get_value_external, - napi_get_value_int32: napi_get_value_int32, - napi_get_value_int64: napi_get_value_int64, - napi_get_value_string_latin1: napi_get_value_string_latin1, - napi_get_value_string_utf16: napi_get_value_string_utf16, - napi_get_value_string_utf8: napi_get_value_string_utf8, - napi_get_value_uint32: napi_get_value_uint32, - node_api_set_prototype: node_api_set_prototype - }); - /** - * @__sig ipip - */ - function napi_create_int32(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - /** - * @__sig ipip - */ - function napi_create_uint32(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(value >>> 0).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - /** - * @__sig ipjp - */ - function napi_create_int64(env, low, high, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var value; - if (!high) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - value = Number(low); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v1 = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(high, v1, true); - return envObject.clearLastError(); - } - /** - * @__sig ipdp - */ - function napi_create_double(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - /** - * @__sig ipppp - */ - function napi_create_string_latin1(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str, autoLength, sizeLength) { - var latin1String = ''; - var len = 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (autoLength) { - while (true) { - var ch = HEAP_DATA_VIEW.getUint8(str, true); - if (!ch) - break; - latin1String += String.fromCharCode(ch); - str++; - } - } - else { - while (len < sizeLength) { - var ch = HEAP_DATA_VIEW.getUint8(str, true); - if (!ch) - break; - latin1String += String.fromCharCode(ch); - len++; - str++; - } - } - return latin1String; - }); - } - /** - * @__sig ipppp - */ - function napi_create_string_utf16(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str) { - return emnapiString.UTF16ToString(str, length); - }); - } - /** - * @__sig ipppp - */ - function napi_create_string_utf8(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str) { - return emnapiString.UTF8ToString(str, length); - }); - } - /** - * @__sig ippppppp - */ - function node_api_create_external_string_latin1(env, str, length, finalize_callback, finalize_hint, result, copied) { - return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_latin1, undefined); - } - /** - * @__sig ippppppp - */ - function node_api_create_external_string_utf16(env, str, length, finalize_callback, finalize_hint, result, copied) { - return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_utf16, undefined); - } - /** - * @__sig ipppp - */ - function node_api_create_property_key_latin1(env, str, length, result) { - return napi_create_string_latin1(env, str, length, result); - } - /** - * @__sig ipppp - */ - function node_api_create_property_key_utf8(env, str, length, result) { - return napi_create_string_utf8(env, str, length, result); - } - /** - * @__sig ipppp - */ - function node_api_create_property_key_utf16(env, str, length, result) { - return napi_create_string_utf16(env, str, length, result); - } - /** - * @__sig ipjp - */ - function napi_create_bigint_int64(env, low, high, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - var value; - if (!high) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - value = low; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v1 = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(high, v1, true); - return envObject.clearLastError(); - } - /** - * @__sig ipjp - */ - function napi_create_bigint_uint64(env, low, high, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - var value; - if (!high) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - value = low & ((BigInt(1) << BigInt(64)) - BigInt(1)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v1 = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(high, v1, true); - return envObject.clearLastError(); - } - /** - * @__sig ipippp - */ - function napi_create_bigint_words(env, sign_bit, word_count, words, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v, i; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - word_count = word_count >>> 0; - if (word_count > 2147483647) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (word_count > (1024 * 1024 / (4 * 8) / 2)) { - throw new RangeError('Maximum BigInt size exceeded'); - } - var value = BigInt(0); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (i = 0; i < word_count; i++) { - var low = HEAP_DATA_VIEW.getUint32(words + i * 8, true); - var high = HEAP_DATA_VIEW.getUint32(words + (i * 8 + 4), true); - var wordi = BigInt(low) | (BigInt(high) << BigInt(32)); - value += wordi << BigInt(64 * i); - } - value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1)); - v = emnapiCtx.addToCurrentScope(value).id; - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - var convert2napiMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_create_bigint_int64: napi_create_bigint_int64, - napi_create_bigint_uint64: napi_create_bigint_uint64, - napi_create_bigint_words: napi_create_bigint_words, - napi_create_double: napi_create_double, - napi_create_int32: napi_create_int32, - napi_create_int64: napi_create_int64, - napi_create_string_latin1: napi_create_string_latin1, - napi_create_string_utf16: napi_create_string_utf16, - napi_create_string_utf8: napi_create_string_utf8, - napi_create_uint32: napi_create_uint32, - node_api_create_external_string_latin1: node_api_create_external_string_latin1, - node_api_create_external_string_utf16: node_api_create_external_string_utf16, - node_api_create_property_key_latin1: node_api_create_property_key_latin1, - node_api_create_property_key_utf16: node_api_create_property_key_utf16, - node_api_create_property_key_utf8: node_api_create_property_key_utf8 - }); - function emnapiCreateFunction(envObject, utf8name, length, cb, data) { - var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length)); - var f; - var napiCallback = (wasmTable.get(cb)); - var callback = function (envObject) { - return napiCallback(envObject.id, envObject.ctx.scopeStore.currentScope.id); - }; - var makeFunction = function (envObject, callback) { - return function () { - var scope = envObject.ctx.openScope(envObject); - var callbackInfo = scope.callbackInfo; - callbackInfo.data = data; - callbackInfo.args = arguments; - callbackInfo.thiz = this; - callbackInfo.fn = f; - try { - var napiValue = envObject.callIntoModule(callback); - return (!napiValue) ? undefined : envObject.ctx.handleStore.get(napiValue).value; - } - finally { - callbackInfo.data = 0; - callbackInfo.args = undefined; - callbackInfo.thiz = undefined; - callbackInfo.fn = undefined; - envObject.ctx.closeScope(envObject, scope); - } - }; - }; - if (functionName === '') { - f = makeFunction(envObject, callback); - return { status: 0 /* napi_status.napi_ok */, f: f }; - } - if (!(/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(functionName))) { - return { status: 1 /* napi_status.napi_invalid_arg */, f: undefined }; - } - if (emnapiCtx.feature.supportNewFunction) { - var _ = makeFunction(envObject, callback); - try { - f = (new Function('_', 'return function ' + functionName + '(){' + - '"use strict";' + - 'return _.apply(this,arguments);' + - '};'))(_); - } - catch (_err) { - f = makeFunction(envObject, callback); - if (emnapiCtx.feature.canSetFunctionName) - Object.defineProperty(f, 'name', { value: functionName }); - } - } - else { - f = makeFunction(envObject, callback); - if (emnapiCtx.feature.canSetFunctionName) - Object.defineProperty(f, 'name', { value: functionName }); - } - return { status: 0 /* napi_status.napi_ok */, f: f }; - } - function emnapiDefineProperty(envObject, obj, propertyName, method, getter, setter, value, attributes, data) { - if (getter || setter) { - var localGetter = void 0; - var localSetter = void 0; - if (getter) { - localGetter = emnapiCreateFunction(envObject, 0, 0, getter, data).f; - } - if (setter) { - localSetter = emnapiCreateFunction(envObject, 0, 0, setter, data).f; - } - var desc = { - configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, - enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, - get: localGetter, - set: localSetter - }; - Object.defineProperty(obj, propertyName, desc); - } - else if (method) { - var localMethod = emnapiCreateFunction(envObject, 0, 0, method, data).f; - var desc = { - configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, - enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, - writable: (attributes & 1 /* napi_property_attributes.napi_writable */) !== 0, - value: localMethod - }; - Object.defineProperty(obj, propertyName, desc); - } - else { - var desc = { - configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, - enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, - writable: (attributes & 1 /* napi_property_attributes.napi_writable */) !== 0, - value: emnapiCtx.handleStore.get(value).value - }; - Object.defineProperty(obj, propertyName, desc); - } - } - function emnapiGetHandle(js_object) { - var handle = emnapiCtx.handleStore.get(js_object); - if (!(handle.isObject() || handle.isFunction())) { - return { status: 1 /* napi_status.napi_invalid_arg */ }; - } - if (typeof emnapiExternalMemory !== 'undefined' && ArrayBuffer.isView(handle.value)) { - if (emnapiExternalMemory.wasmMemoryViewTable.has(handle.value)) { - handle = emnapiCtx.addToCurrentScope(emnapiExternalMemory.wasmMemoryViewTable.get(handle.value)); - } - } - return { status: 0 /* napi_status.napi_ok */, handle: handle }; - } - function emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var referenceId; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!emnapiCtx.feature.supportFinalizer) { - if (finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "finalize_cb" must be 0(NULL)'); - } - if (result) { - throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "result" must be 0(NULL)'); - } - } - if (!js_object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handleResult = emnapiGetHandle(js_object); - if (handleResult.status !== 0 /* napi_status.napi_ok */) { - return envObject.setLastError(handleResult.status); - } - var handle = handleResult.handle; - if (envObject.getObjectBinding(handle.value).wrapped !== 0) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var reference = void 0; - if (result) { - if (!finalize_cb) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1 /* ReferenceOwnership.kUserland */, finalize_cb, native_object, finalize_hint); - referenceId = reference.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, referenceId, true); - } - else { - if (finalize_cb) { - reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, native_object, finalize_hint); - } - else { - reference = emnapiCtx.createReferenceWithData(envObject, handle.id, 0, 0 /* ReferenceOwnership.kRuntime */, native_object); - } - } - envObject.getObjectBinding(handle.value).wrapped = reference.id; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - function emnapiUnwrap(env, js_object, result, action) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var data; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!js_object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (action === 0 /* UnwrapAction.KeepWrap */) { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var value = emnapiCtx.handleStore.get(js_object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var binding = envObject.getObjectBinding(value.value); - var referenceId = binding.wrapped; - var ref = emnapiCtx.refStore.get(referenceId); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - data = ref.data(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, data, true); - } - if (action === 1 /* UnwrapAction.RemoveWrap */) { - binding.wrapped = 0; - if (ref.ownership() === 1 /* ReferenceOwnership.kUserland */) { - // When the wrap is been removed, the finalizer should be reset. - ref.resetFinalizer(); - } - else { - ref.dispose(); - } - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppppppp - */ - function napi_define_class(env, utf8name, length, constructor, callback_data, property_count, properties, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var propPtr, valueHandleId, attributes; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!constructor) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - property_count = property_count >>> 0; - if (property_count > 0) { - if (!properties) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if ((length < -1) || (length > 2147483647) || (!utf8name)) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data); - if (fresult.status !== 0 /* napi_status.napi_ok */) - return envObject.setLastError(fresult.status); - var F = fresult.f; - var propertyName = void 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < property_count; i++) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - propPtr = properties + (i * (4 * 8)); - var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); - var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); - var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); - var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); - var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); - var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); - attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); - var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); - if (utf8Name) { - propertyName = emnapiString.UTF8ToString(utf8Name, -1); - } - else { - if (!name_1) { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - propertyName = emnapiCtx.handleStore.get(name_1).value; - if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - } - if ((attributes & 1024 /* napi_property_attributes.napi_static */) !== 0) { - emnapiDefineProperty(envObject, F, propertyName, method, getter, setter, value, attributes, data); - continue; - } - emnapiDefineProperty(envObject, F.prototype, propertyName, method, getter, setter, value, attributes, data); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var valueHandle = emnapiCtx.addToCurrentScope(F); - valueHandleId = valueHandle.id; - HEAP_DATA_VIEW.setUint32(result, valueHandleId, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppppp - */ - function napi_wrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { - return emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result); - } - /** - * @__sig ippp - */ - function napi_unwrap(env, js_object, result) { - return emnapiUnwrap(env, js_object, result, 0 /* UnwrapAction.KeepWrap */); - } - /** - * @__sig ippp - */ - function napi_remove_wrap(env, js_object, result) { - return emnapiUnwrap(env, js_object, result, 1 /* UnwrapAction.RemoveWrap */); - } - /** - * @__sig ippp - */ - function napi_type_tag_object(env, object, type_tag) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var value = emnapiCtx.handleStore.get(object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */); - } - if (!type_tag) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var binding = envObject.getObjectBinding(value.value); - if (binding.tag !== null) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var tag = new Uint8Array(16); - tag.set(new Uint8Array(wasmMemory.buffer, type_tag, 16)); - binding.tag = new Uint32Array(tag.buffer); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppp - */ - function napi_check_object_type_tag(env, object, type_tag, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars, one-var - var ret = true; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var value = emnapiCtx.handleStore.get(object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */); - } - if (!type_tag) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - if (!result) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var binding = envObject.getObjectBinding(value.value); - if (binding.tag !== null) { - var tag = binding.tag; - var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4); - ret = (tag[0] === typeTag[0] && - tag[1] === typeTag[1] && - tag[2] === typeTag[2] && - tag[3] === typeTag[3]); - } - else { - ret = false; - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppppp - */ - function napi_add_finalizer(env, js_object, finalize_data, finalize_cb, finalize_hint, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportFinalizer) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!js_object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!finalize_cb) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handleResult = emnapiGetHandle(js_object); - if (handleResult.status !== 0 /* napi_status.napi_ok */) { - return envObject.setLastError(handleResult.status); - } - var handle = handleResult.handle; - var ownership = !result ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */; - var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint); - if (result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var referenceId = reference.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, referenceId, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ipppp - */ - function node_api_post_finalizer(env, finalize_cb, finalize_data, finalize_hint) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - envObject.enqueueFinalizer(emnapiCtx.createTrackedFinalizer(envObject, finalize_cb, finalize_data, finalize_hint)); - return envObject.clearLastError(); - } - var wrapMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_add_finalizer: napi_add_finalizer, - napi_check_object_type_tag: napi_check_object_type_tag, - napi_define_class: napi_define_class, - napi_remove_wrap: napi_remove_wrap, - napi_type_tag_object: napi_type_tag_object, - napi_unwrap: napi_unwrap, - napi_wrap: napi_wrap, - node_api_post_finalizer: node_api_post_finalizer - }); - /** - * @__sig ipippppp - */ - function emnapi_create_memory_view(env, typedarray_type, external_data, byte_length, finalize_cb, finalize_hint, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - byte_length = byte_length >>> 0; - if (!external_data) { - byte_length = 0; - } - if (byte_length > 2147483647) { - throw new RangeError('Cannot create a memory view larger than 2147483647 bytes'); - } - if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { - throw new RangeError('Memory out of range'); - } - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('emnapi_create_memory_view', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var viewDescriptor = void 0; - switch (typedarray_type) { - case 0 /* emnapi_memory_view_type.emnapi_int8_array */: - viewDescriptor = { Ctor: Int8Array, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 1 /* emnapi_memory_view_type.emnapi_uint8_array */: - viewDescriptor = { Ctor: Uint8Array, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 2 /* emnapi_memory_view_type.emnapi_uint8_clamped_array */: - viewDescriptor = { Ctor: Uint8ClampedArray, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 3 /* emnapi_memory_view_type.emnapi_int16_array */: - viewDescriptor = { Ctor: Int16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 4 /* emnapi_memory_view_type.emnapi_uint16_array */: - viewDescriptor = { Ctor: Uint16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 5 /* emnapi_memory_view_type.emnapi_int32_array */: - viewDescriptor = { Ctor: Int32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 6 /* emnapi_memory_view_type.emnapi_uint32_array */: - viewDescriptor = { Ctor: Uint32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 7 /* emnapi_memory_view_type.emnapi_float32_array */: - viewDescriptor = { Ctor: Float32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 8 /* emnapi_memory_view_type.emnapi_float64_array */: - viewDescriptor = { Ctor: Float64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 9 /* emnapi_memory_view_type.emnapi_bigint64_array */: - viewDescriptor = { Ctor: BigInt64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 10 /* emnapi_memory_view_type.emnapi_biguint64_array */: - viewDescriptor = { Ctor: BigUint64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case -1 /* emnapi_memory_view_type.emnapi_data_view */: - viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 11 /* emnapi_memory_view_type.emnapi_float16_array */: - if (typeof Float16Array !== 'function') { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case -2 /* emnapi_memory_view_type.emnapi_buffer */: { - if (!emnapiCtx.feature.Buffer) { - throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', ''); - } - viewDescriptor = { Ctor: emnapiCtx.feature.Buffer, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - } - default: return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var Ctor = viewDescriptor.Ctor; - var typedArray = typedarray_type === -2 /* emnapi_memory_view_type.emnapi_buffer */ - ? emnapiCtx.feature.Buffer.from(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length) - : new Ctor(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length); - var handle = emnapiCtx.addToCurrentScope(typedArray); - emnapiExternalMemory.wasmMemoryViewTable.set(typedArray, viewDescriptor); - if (finalize_cb) { - var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, /* NULL */ 0); - if (status_1 === 10 /* napi_status.napi_pending_exception */) { - var err = envObject.tryCatch.extractException(); - envObject.clearLastError(); - throw err; - } - else if (status_1 !== 0 /* napi_status.napi_ok */) { - return envObject.setLastError(status_1); - } - } - value = handle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig i - */ - function emnapi_is_support_weakref() { - return emnapiCtx.feature.supportFinalizer ? 1 : 0; - } - /** - * @__sig i - */ - function emnapi_is_support_bigint() { - return emnapiCtx.feature.supportBigInt ? 1 : 0; - } - /** - * @__sig i - */ - function emnapi_is_node_binding_available() { - return emnapiNodeBinding ? 1 : 0; - } - function $emnapiSyncMemory(js_to_wasm, arrayBufferOrView, offset, len) { - offset = offset !== null && offset !== void 0 ? offset : 0; - offset = offset >>> 0; - var view; - if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { - var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address; - if (!pointer) - throw new Error('Unknown ArrayBuffer address'); - if (typeof len !== 'number' || len === -1) { - len = arrayBufferOrView.byteLength - offset; - } - len = len >>> 0; - if (len === 0) - return arrayBufferOrView; - view = new Uint8Array(arrayBufferOrView, offset, len); - var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); - if (!js_to_wasm) { - view.set(wasmMemoryU8.subarray(pointer, pointer + len)); - } - else { - wasmMemoryU8.set(view, pointer); - } - return arrayBufferOrView; - } - if (ArrayBuffer.isView(arrayBufferOrView)) { - var viewPointerInfo = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); - var latestView = viewPointerInfo.view; - var pointer = viewPointerInfo.address; - if (!pointer) - throw new Error('Unknown ArrayBuffer address'); - if (typeof len !== 'number' || len === -1) { - len = latestView.byteLength - offset; - } - len = len >>> 0; - if (len === 0) - return latestView; - view = new Uint8Array(latestView.buffer, latestView.byteOffset + offset, len); - var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); - if (!js_to_wasm) { - view.set(wasmMemoryU8.subarray(pointer, pointer + len)); - } - else { - wasmMemoryU8.set(view, pointer); - } - return latestView; - } - throw new TypeError('emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter'); - } - /** - * @__sig ipippp - */ - function emnapi_sync_memory(env, js_to_wasm, arraybuffer_or_view, offset, len) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer_or_view) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true); - var handle = envObject.ctx.handleStore.get(handleId); - if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len); - if (handle.value !== ret) { - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - function $emnapiGetMemoryAddress(arrayBufferOrView) { - var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer; - var isDataView = arrayBufferOrView instanceof DataView; - var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView; - if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { - throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter'); - } - var info; - if (isArrayBuffer) { - info = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false); - } - else { - info = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); - } - return { - address: info.address, - ownership: info.ownership, - runtimeAllocated: info.runtimeAllocated - }; - } - /** - * @__sig ipppp - */ - function emnapi_get_memory_address(env, arraybuffer_or_view, address, ownership, runtime_allocated) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p, runtimeAllocated, ownershipOut; - var info; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer_or_view) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!address && !ownership && !runtime_allocated) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var handle = envObject.ctx.handleStore.get(arraybuffer_or_view); - info = $emnapiGetMemoryAddress(handle.value); - p = info.address; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (address) { - HEAP_DATA_VIEW.setUint32(address, p, true); - } - if (ownership) { - ownershipOut = info.ownership; - HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true); - } - if (runtime_allocated) { - runtimeAllocated = info.runtimeAllocated; - HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipp - */ - function emnapi_get_runtime_version(env, version) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!version) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var runtimeVersion; - try { - runtimeVersion = emnapiCtx.getRuntimeVersions().version; - } - catch (_) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var versions = runtimeVersion.split('.') - .map(function (n) { return Number(n); }); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(version, versions[0], true); - HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true); - HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true); - return envObject.clearLastError(); - } - var emnapiMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - $emnapiGetMemoryAddress: $emnapiGetMemoryAddress, - $emnapiSyncMemory: $emnapiSyncMemory, - emnapi_create_memory_view: emnapi_create_memory_view, - emnapi_get_memory_address: emnapi_get_memory_address, - emnapi_get_runtime_version: emnapi_get_runtime_version, - emnapi_is_node_binding_available: emnapi_is_node_binding_available, - emnapi_is_support_bigint: emnapi_is_support_bigint, - emnapi_is_support_weakref: emnapi_is_support_weakref, - emnapi_sync_memory: emnapi_sync_memory - }); - /** - * @__sig ipp - */ - function napi_create_array(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope([]).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_create_array_with_length(env, length, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - length = length >>> 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(new Array(length)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function emnapiCreateArrayBuffer(byte_length, data, shared) { - byte_length = byte_length >>> 0; - var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length); - if (data) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(data, p, true); - } - return arrayBuffer; - } - /** - * @__sig ipppp - */ - function napi_create_arraybuffer(env, byte_length, data, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false); - value = emnapiCtx.addToCurrentScope(arrayBuffer).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppp - */ - function node_api_create_sharedarraybuffer(env, byte_length, data, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true); - value = emnapiCtx.addToCurrentScope(arrayBuffer).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipdp - */ - function napi_create_date(env, time, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(new Date(time)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ippppp - */ - function napi_create_external(env, data, finalize_cb, finalize_hint, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_create_external', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var externalHandle = emnapiCtx.getCurrentScope().addExternal(data); - if (finalize_cb) { - emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, data, finalize_hint); - } - value = externalHandle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppppp - */ - function napi_create_external_arraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - byte_length = byte_length >>> 0; - if (!external_data) { - byte_length = 0; - } - if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { - throw new RangeError('Memory out of range'); - } - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_create_external_arraybuffer', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var arrayBuffer = new ArrayBuffer(byte_length); - if (byte_length === 0) { - try { - var MessageChannel_1 = emnapiCtx.feature.MessageChannel; - var messageChannel = new MessageChannel_1(); - messageChannel.port1.postMessage(arrayBuffer, [arrayBuffer]); - } - catch (_) { } - } - else { - var u8arr = new Uint8Array(arrayBuffer); - u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length)); - emnapiExternalMemory.table.set(arrayBuffer, { - address: external_data, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - var handle = emnapiCtx.addToCurrentScope(arrayBuffer); - if (finalize_cb) { - var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, /* NULL */ 0); - if (status_1 === 10 /* napi_status.napi_pending_exception */) { - var err = envObject.tryCatch.extractException(); - envObject.clearLastError(); - throw err; - } - else if (status_1 !== 0 /* napi_status.napi_ok */) { - return envObject.setLastError(status_1); - } - } - value = handle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipp - */ - function napi_create_object(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope({}).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** - * @__sig ipppppp - */ - function napi_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - property_count = property_count >>> 0; - if (property_count > 0) { - if (!property_names) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!property_values) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v8_prototype_or_null = prototype_or_null - ? emnapiCtx.handleStore.get(prototype_or_null).value - : null; - var properties = {}; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < property_count; i++) { - var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value; - if (!(typeof name_value === "string" || typeof name_value === "symbol")) - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - properties[name_value] = { - value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value, - writable: true, - enumerable: true, - configurable: true - }; - } - var obj; - try { - obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties); - } - catch (_) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(obj).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_create_symbol(env, description, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!description) { - // eslint-disable-next-line symbol-description, @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(Symbol()).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - } - else { - var handle = emnapiCtx.handleStore.get(description); - var desc = handle.value; - if (typeof desc !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id; - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ipipppp - */ - function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var buffer = handle.value; - var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) { - var _a; - byte_offset = byte_offset >>> 0; - length = length >>> 0; - if (size_of_element > 1) { - if ((byte_offset) % (size_of_element) !== 0) { - var err = new RangeError("start offset of ".concat((_a = Type.name) !== null && _a !== void 0 ? _a : '', " should be a multiple of ").concat(size_of_element)); - err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT'; - envObject.tryCatch.setError(err); - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - } - if (((length * size_of_element) + byte_offset) > buffer.byteLength) { - var err = new RangeError('Invalid typed array length'); - err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_LENGTH'; - envObject.tryCatch.setError(err); - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - var out = new Type(buffer, byte_offset, length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { - emnapiExternalMemory.wasmMemoryViewTable.set(out, { - Ctor: Type, - address: byte_offset, - length: length, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(out).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - }; - switch (type) { - case 0 /* napi_typedarray_type.napi_int8_array */: - return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length); - case 1 /* napi_typedarray_type.napi_uint8_array */: - return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length); - case 2 /* napi_typedarray_type.napi_uint8_clamped_array */: - return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length); - case 3 /* napi_typedarray_type.napi_int16_array */: - return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length); - case 4 /* napi_typedarray_type.napi_uint16_array */: - return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length); - case 5 /* napi_typedarray_type.napi_int32_array */: - return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length); - case 6 /* napi_typedarray_type.napi_uint32_array */: - return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length); - case 7 /* napi_typedarray_type.napi_float32_array */: - return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length); - case 8 /* napi_typedarray_type.napi_float64_array */: - return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length); - case 9 /* napi_typedarray_type.napi_bigint64_array */: - return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length); - case 10 /* napi_typedarray_type.napi_biguint64_array */: - return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length); - case 11 /* napi_typedarray_type.napi_float16_array */: - if (typeof Float16Array !== 'function') { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length); - default: - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__deps malloc - * @__sig ippp - */ - function napi_create_buffer(env, size, data, result) { - var _a; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value, pointer; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', ''); - } - var buffer = void 0; - size = size >>> 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!data || (size === 0)) { - buffer = Buffer.alloc(size); - value = emnapiCtx.addToCurrentScope(buffer).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - } - else { - pointer = _malloc(size); - if (!pointer) - throw new Error('Out of memory'); - new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0); - var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size); - var viewDescriptor = { - Ctor: Buffer, - address: pointer, - length: size, - ownership: emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 1 - }; - emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor); - (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer); - value = emnapiCtx.addToCurrentScope(buffer_1).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - HEAP_DATA_VIEW.setUint32(data, pointer, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ippppp - */ - function napi_create_buffer_copy(env, length, data, result_data, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', ''); - } - var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false); - var buffer = Buffer.from(arrayBuffer); - buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length)); - value = emnapiCtx.addToCurrentScope(buffer).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppppp - */ - function napi_create_external_buffer(env, length, data, finalize_cb, finalize_hint, result) { - return emnapi_create_memory_view(env, -2 /* emnapi_memory_view_type.emnapi_buffer */, data, length, finalize_cb, finalize_hint, result); - } - /** - * @__sig ippppp - */ - function node_api_create_buffer_from_arraybuffer(env, arraybuffer, byte_offset, byte_length, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - byte_offset = byte_offset >>> 0; - byte_length = byte_length >>> 0; - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var buffer = handle.value; - if ((byte_length + byte_offset) > buffer.byteLength) { - var err = new RangeError('The byte offset + length is out of range'); - err.code = 'ERR_OUT_OF_RANGE'; - throw err; - } - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('node_api_create_buffer_from_arraybuffer', ''); - } - var out = Buffer.from(buffer, byte_offset, byte_length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { - emnapiExternalMemory.wasmMemoryViewTable.set(out, { - Ctor: Buffer, - address: byte_offset, - length: byte_length, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(out).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ippppp - */ - function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - byte_length = byte_length >>> 0; - byte_offset = byte_offset >>> 0; - var value = emnapiCtx.handleStore.get(arraybuffer).value; - var createDataview = function (buffer) { - if ((byte_length + byte_offset) > buffer.byteLength) { - var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in'); - err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS'; - throw err; - } - var dataview = new DataView(buffer, byte_offset, byte_length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) { - emnapiExternalMemory.wasmMemoryViewTable.set(dataview, { - Ctor: DataView, - address: byte_offset, - length: byte_length, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(dataview).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - }; - if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) { - return createDataview(value); - } - else { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppp - */ - function node_api_symbol_for(env, utf8description, length, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!utf8description) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!(autoLength || (sizelength <= 2147483647))) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var descriptionString = emnapiString.UTF8ToString(utf8description, length); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - var createMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_create_array: napi_create_array, - napi_create_array_with_length: napi_create_array_with_length, - napi_create_arraybuffer: napi_create_arraybuffer, - napi_create_buffer: napi_create_buffer, - napi_create_buffer_copy: napi_create_buffer_copy, - napi_create_dataview: napi_create_dataview, - napi_create_date: napi_create_date, - napi_create_external: napi_create_external, - napi_create_external_arraybuffer: napi_create_external_arraybuffer, - napi_create_external_buffer: napi_create_external_buffer, - napi_create_object: napi_create_object, - napi_create_object_with_properties: napi_create_object_with_properties, - napi_create_symbol: napi_create_symbol, - napi_create_typedarray: napi_create_typedarray, - node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer, - node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer, - node_api_symbol_for: node_api_symbol_for - }); - /** @__sig ipip */ - function napi_get_boolean(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = value === 0 ? 3 /* GlobalHandle.FALSE */ : 4 /* GlobalHandle.TRUE */; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_get_global(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = 5 /* GlobalHandle.GLOBAL */; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_get_null(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = 2 /* GlobalHandle.NULL */; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_get_undefined(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = 1 /* GlobalHandle.UNDEFINED */; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - var globalMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_get_boolean: napi_get_boolean, - napi_get_global: napi_get_global, - napi_get_null: napi_get_null, - napi_get_undefined: napi_get_undefined - }); - /** @__sig ipppp */ - function napi_set_instance_data(env, data, finalize_cb, finalize_hint) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - envObject.setInstanceData(data, finalize_cb, finalize_hint); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_get_instance_data(env, data) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!data) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = envObject.getInstanceData(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(data, value, true); - return envObject.clearLastError(); - } - var envMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_get_instance_data: napi_get_instance_data, - napi_set_instance_data: napi_set_instance_data - }); - /** @__sig vpppp */ - function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) { - var envObject = emnapiCtx.envStore.get(env); - var lastError = envObject.lastError; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var errorCode = lastError.errorCode; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var engineErrorCode = lastError.engineErrorCode >>> 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var engineReserved = lastError.engineReserved; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(error_code, errorCode, true); - HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true); - HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true); - } - /** @__sig ipp */ - function napi_throw(env, error) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!error) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - envObject.tryCatch.setError(emnapiCtx.handleStore.get(error).value); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_throw_error(env, code, msg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var error = new Error(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_throw_type_error(env, code, msg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var error = new TypeError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_throw_range_error(env, code, msg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var error = new RangeError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function node_api_throw_syntax_error(env, code, msg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipp */ - function napi_is_exception_pending(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = envObject.tryCatch.hasCaught(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - return envObject.clearLastError(); - } - /** @__sig ipppp */ - function napi_create_error(env, code, msg, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var error = new Error(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - error.code = codeValue; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** @__sig ipppp */ - function napi_create_type_error(env, code, msg, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var error = new TypeError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - error.code = codeValue; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** @__sig ipppp */ - function napi_create_range_error(env, code, msg, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var error = new RangeError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - error.code = codeValue; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** @__sig ipppp */ - function node_api_create_syntax_error(env, code, msg, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var error = new SyntaxError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - error.code = codeValue; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_get_and_clear_last_exception(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!envObject.tryCatch.hasCaught()) { - HEAP_DATA_VIEW.setUint32(result, 1, true); // ID_UNDEFINED - return envObject.clearLastError(); - } - else { - var err = envObject.tryCatch.exception(); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = envObject.ensureHandleId(err); - HEAP_DATA_VIEW.setUint32(result, value, true); - envObject.tryCatch.reset(); - } - return envObject.clearLastError(); - } - /** @__sig vpppp */ - function napi_fatal_error(location, location_len, message, message_len) { - var locationStr = emnapiString.UTF8ToString(location, location_len); - var messageStr = emnapiString.UTF8ToString(message, message_len); - if (emnapiNodeBinding) { - emnapiNodeBinding.napi.fatalError(locationStr, messageStr); - } - else { - abort('FATAL ERROR: ' + locationStr + ' ' + messageStr); - } - } - /** @__sig ipp */ - function napi_fatal_exception(env, err) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!err) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var error = envObject.ctx.handleStore.get(err); - try { - envObject.triggerFatalException(error.value); - } - catch (_) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - var errorMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - _emnapi_get_last_error_info: _emnapi_get_last_error_info, - napi_create_error: napi_create_error, - napi_create_range_error: napi_create_range_error, - napi_create_type_error: napi_create_type_error, - napi_fatal_error: napi_fatal_error, - napi_fatal_exception: napi_fatal_exception, - napi_get_and_clear_last_exception: napi_get_and_clear_last_exception, - napi_is_exception_pending: napi_is_exception_pending, - napi_throw: napi_throw, - napi_throw_error: napi_throw_error, - napi_throw_range_error: napi_throw_range_error, - napi_throw_type_error: napi_throw_type_error, - node_api_create_syntax_error: node_api_create_syntax_error, - node_api_throw_syntax_error: node_api_throw_syntax_error - }); - /** @__sig ipppppp */ - function napi_create_function(env, utf8name, length, cb, data, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!cb) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data); - if (fresult.status !== 0 /* napi_status.napi_ok */) - return envObject.setLastError(fresult.status); - var f = fresult.f; - var valueHandle = emnapiCtx.addToCurrentScope(f); - value = valueHandle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppppp */ - function napi_get_cb_info(env, cbinfo, argc, argv, this_arg, data) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!cbinfo) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (argv) { - if (!argc) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var argcValue = HEAP_DATA_VIEW.getUint32(argc, true); - var len = cbinfoValue.args.length; - var arrlen = argcValue < len ? argcValue : len; - var i = 0; - for (; i < arrlen; i++) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var argVal = envObject.ensureHandleId(cbinfoValue.args[i]); - HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true); - } - if (i < argcValue) { - for (; i < argcValue; i++) { - HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true); - } - } - } - if (argc) { - HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true); - } - if (this_arg) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = envObject.ensureHandleId(cbinfoValue.thiz); - HEAP_DATA_VIEW.setUint32(this_arg, v, true); - } - if (data) { - HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true); - } - return envObject.clearLastError(); - } - /** @__sig ipppppp */ - function napi_call_function(env, recv, func, argc, argv, result) { - var i = 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!recv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - argc = argc >>> 0; - if (argc > 0) { - if (!argv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v8recv = emnapiCtx.handleStore.get(recv).value; - if (!func) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var v8func = emnapiCtx.handleStore.get(func).value; - if (typeof v8func !== 'function') - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var args = []; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - args.push(emnapiCtx.handleStore.get(argVal).value); - } - var ret = v8func.apply(v8recv, args); - if (result) { - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippppp */ - function napi_new_instance(env, constructor, argc, argv, result) { - var i; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!constructor) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - argc = argc >>> 0; - if (argc > 0) { - if (!argv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var Ctor = emnapiCtx.handleStore.get(constructor).value; - if (typeof Ctor !== 'function') - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var ret = void 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (emnapiCtx.feature.supportReflect) { - var argList = Array(argc); - for (i = 0; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - argList[i] = emnapiCtx.handleStore.get(argVal).value; - } - ret = Reflect.construct(Ctor, argList, Ctor); - } - else { - var args = Array(argc + 1); - args[0] = undefined; - for (i = 0; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - args[i + 1] = emnapiCtx.handleStore.get(argVal).value; - } - var BoundCtor = Ctor.bind.apply(Ctor, args); - ret = new BoundCtor(); - } - if (result) { - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_get_new_target(env, cbinfo, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!cbinfo) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; - var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn; - var value = thiz == null || thiz.constructor == null - ? 0 - : thiz instanceof fn - ? envObject.ensureHandleId(thiz.constructor) - : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - var functionMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_call_function: napi_call_function, - napi_create_function: napi_create_function, - napi_get_cb_info: napi_get_cb_info, - napi_get_new_target: napi_get_new_target, - napi_new_instance: napi_new_instance - }); - /** @__sig ipp */ - function napi_open_handle_scope(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var scope = emnapiCtx.openScope(envObject); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, scope.id, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_close_handle_scope(env, scope) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if ((envObject.openHandleScopes === 0)) { - return 13 /* napi_status.napi_handle_scope_mismatch */; - } - emnapiCtx.closeScope(envObject); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_open_escapable_handle_scope(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var scope = emnapiCtx.openScope(envObject); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, scope.id, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_close_escapable_handle_scope(env, scope) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if ((envObject.openHandleScopes === 0)) { - return 13 /* napi_status.napi_handle_scope_mismatch */; - } - emnapiCtx.closeScope(envObject); - return envObject.clearLastError(); - } - /** @__sig ipppp */ - function napi_escape_handle(env, scope, escapee, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!escapee) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var scopeObject = emnapiCtx.scopeStore.get(scope); - if (!scopeObject.escapeCalled()) { - var newHandle = scopeObject.escape(escapee); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = newHandle ? newHandle.id : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - return envObject.setLastError(12 /* napi_status.napi_escape_called_twice */); - } - /** @__sig ippip */ - function napi_create_reference(env, value, initial_refcount, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (envObject.moduleApiVersion < 10) { - if (!(handle.isObject() || handle.isFunction() || handle.isSymbol())) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1 /* ReferenceOwnership.kUserland */); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, ref.id, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_delete_reference(env, ref) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiCtx.refStore.get(ref).dispose(); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_reference_ref(env, ref, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var count = emnapiCtx.refStore.get(ref).ref(); - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, count, true); - } - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_reference_unref(env, ref, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var reference = emnapiCtx.refStore.get(ref); - var refcount = reference.refcount(); - if (refcount === 0) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var count = reference.unref(); - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, count, true); - } - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_get_reference_value(env, ref, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var reference = emnapiCtx.refStore.get(ref); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var handleId = reference.get(envObject); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, handleId, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_add_env_cleanup_hook(env, fun, arg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!fun) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiCtx.addCleanupHook(envObject, fun, arg); - return 0 /* napi_status.napi_ok */; - } - /** @__sig ippp */ - function napi_remove_env_cleanup_hook(env, fun, arg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!fun) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiCtx.removeCleanupHook(envObject, fun, arg); - return 0 /* napi_status.napi_ok */; - } - /** @__sig vp */ - function _emnapi_env_ref(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.ref(); - } - /** @__sig vp */ - function _emnapi_env_unref(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.unref(); - } - var lifeMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - _emnapi_env_ref: _emnapi_env_ref, - _emnapi_env_unref: _emnapi_env_unref, - napi_add_env_cleanup_hook: napi_add_env_cleanup_hook, - napi_close_escapable_handle_scope: napi_close_escapable_handle_scope, - napi_close_handle_scope: napi_close_handle_scope, - napi_create_reference: napi_create_reference, - napi_delete_reference: napi_delete_reference, - napi_escape_handle: napi_escape_handle, - napi_get_reference_value: napi_get_reference_value, - napi_open_escapable_handle_scope: napi_open_escapable_handle_scope, - napi_open_handle_scope: napi_open_handle_scope, - napi_reference_ref: napi_reference_ref, - napi_reference_unref: napi_reference_unref, - napi_remove_env_cleanup_hook: napi_remove_env_cleanup_hook - }); - /** @__sig ippi */ - function _emnapi_get_filename(env, buf, len) { - var envObject = emnapiCtx.envStore.get(env); - var filename = envObject.filename; - if (!buf) { - return emnapiString.lengthBytesUTF8(filename); - } - return emnapiString.stringToUTF8(filename, buf, len); - } - var miscellaneousMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - _emnapi_get_filename: _emnapi_get_filename - }); - /** @__sig ippp */ - function napi_create_promise(env, deferred, promise) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var deferredObjectId, value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!promise) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var p = new Promise(function (resolve, reject) { - var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject }); - deferredObjectId = deferredObject.id; - HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true); - }); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(p).id; - HEAP_DATA_VIEW.setUint32(promise, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_resolve_deferred(env, deferred, resolution) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!resolution) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var deferredObject = emnapiCtx.deferredStore.get(deferred); - deferredObject.resolve(emnapiCtx.handleStore.get(resolution).value); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_reject_deferred(env, deferred, resolution) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!resolution) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var deferredObject = emnapiCtx.deferredStore.get(deferred); - deferredObject.reject(emnapiCtx.handleStore.get(resolution).value); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_is_promise(env, value, is_promise) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!is_promise) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isPromise() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(is_promise, r, true); - return envObject.clearLastError(); - } - var promiseMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_create_promise: napi_create_promise, - napi_is_promise: napi_is_promise, - napi_reject_deferred: napi_reject_deferred, - napi_resolve_deferred: napi_resolve_deferred - }); - /** @__sig ippiiip */ - function napi_get_all_property_names(env, object, key_mode, key_filter, key_conversion, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var obj = void 0; - try { - obj = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - if (key_mode !== 0 /* napi_key_collection_mode.napi_key_include_prototypes */ && key_mode !== 1 /* napi_key_collection_mode.napi_key_own_only */) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (key_conversion !== 0 /* napi_key_conversion.napi_key_keep_numbers */ && key_conversion !== 1 /* napi_key_conversion.napi_key_numbers_to_strings */) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var props = []; - var names = void 0; - var symbols = void 0; - var i = void 0; - var own = true; - var integerIndiceRegex = /^(0|[1-9][0-9]*)$/; - do { - names = Object.getOwnPropertyNames(obj); - symbols = Object.getOwnPropertySymbols(obj); - for (i = 0; i < names.length; i++) { - props.push({ - name: integerIndiceRegex.test(names[i]) ? Number(names[i]) : names[i], - desc: Object.getOwnPropertyDescriptor(obj, names[i]), - own: own - }); - } - for (i = 0; i < symbols.length; i++) { - props.push({ - name: symbols[i], - desc: Object.getOwnPropertyDescriptor(obj, symbols[i]), - own: own - }); - } - if (key_mode === 1 /* napi_key_collection_mode.napi_key_own_only */) { - break; - } - obj = Object.getPrototypeOf(obj); - own = false; - } while (obj); - var ret = []; - var addName = function (ret, name, key_filter, conversion_mode) { - if (ret.indexOf(name) !== -1) - return; - if (conversion_mode === 0 /* napi_key_conversion.napi_key_keep_numbers */) { - ret.push(name); - } - else if (conversion_mode === 1 /* napi_key_conversion.napi_key_numbers_to_strings */) { - var realName = typeof name === 'number' ? String(name) : name; - if (typeof realName === 'string') { - if (!(key_filter & 8 /* napi_key_filter.napi_key_skip_strings */)) { - ret.push(realName); - } - } - else { - ret.push(realName); - } - } - }; - for (i = 0; i < props.length; i++) { - var prop = props[i]; - var name_1 = prop.name; - var desc = prop.desc; - if (key_filter === 0 /* napi_key_filter.napi_key_all_properties */) { - addName(ret, name_1, key_filter, key_conversion); - } - else { - if (key_filter & 8 /* napi_key_filter.napi_key_skip_strings */ && typeof name_1 === 'string') { - continue; - } - if (key_filter & 16 /* napi_key_filter.napi_key_skip_symbols */ && typeof name_1 === 'symbol') { - continue; - } - var shouldAdd = true; - switch (key_filter & 7) { - case 1 /* napi_key_filter.napi_key_writable */: { - shouldAdd = Boolean(desc.writable); - break; - } - case 2 /* napi_key_filter.napi_key_enumerable */: { - shouldAdd = Boolean(desc.enumerable); - break; - } - case (1 /* napi_key_filter.napi_key_writable */ | 2 /* napi_key_filter.napi_key_enumerable */): { - shouldAdd = Boolean(desc.writable && desc.enumerable); - break; - } - case 4 /* napi_key_filter.napi_key_configurable */: { - shouldAdd = Boolean(desc.configurable); - break; - } - case (4 /* napi_key_filter.napi_key_configurable */ | 1 /* napi_key_filter.napi_key_writable */): { - shouldAdd = Boolean(desc.configurable && desc.writable); - break; - } - case (4 /* napi_key_filter.napi_key_configurable */ | 2 /* napi_key_filter.napi_key_enumerable */): { - shouldAdd = Boolean(desc.configurable && desc.enumerable); - break; - } - case (4 /* napi_key_filter.napi_key_configurable */ | 2 /* napi_key_filter.napi_key_enumerable */ | 1 /* napi_key_filter.napi_key_writable */): { - shouldAdd = Boolean(desc.configurable && desc.enumerable && desc.writable); - break; - } - } - if (shouldAdd) { - addName(ret, name_1, key_filter, key_conversion); - } - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(ret).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_get_property_names(env, object, result) { - return napi_get_all_property_names(env, object, 0 /* napi_key_collection_mode.napi_key_include_prototypes */, 2 /* napi_key_filter.napi_key_enumerable */ | 16 /* napi_key_filter.napi_key_skip_symbols */, 1 /* napi_key_conversion.napi_key_numbers_to_strings */, result); - } - /** @__sig ipppp */ - function napi_set_property(env, object, key, value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - h.value[emnapiCtx.handleStore.get(key).value] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_has_property(env, object, key, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_get_property(env, object, key, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_delete_property(env, object, key, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - var propertyKey = emnapiCtx.handleStore.get(key).value; - if (emnapiCtx.feature.supportReflect) { - r = Reflect.deleteProperty(h.value, propertyKey); - } - else { - try { - r = delete h.value[propertyKey]; - } - catch (_) { - r = false; - } - } - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_has_own_property(env, object, key, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - var prop = emnapiCtx.handleStore.get(key).value; - if (typeof prop !== 'string' && typeof prop !== 'symbol') { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_set_named_property(env, object, cname, value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - if (!cname) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_has_named_property(env, object, utf8name, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!utf8name) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - r = emnapiString.UTF8ToString(utf8name, -1) in v; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_get_named_property(env, object, utf8name, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!utf8name) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippip */ - function napi_set_element(env, object, index, value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - h.value[index >>> 0] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippip */ - function napi_has_element(env, object, index, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - r = ((index >>> 0) in v) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippip */ - function napi_get_element(env, object, index, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(v[index >>> 0]); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippip */ - function napi_delete_element(env, object, index, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - if (emnapiCtx.feature.supportReflect) { - r = Reflect.deleteProperty(h.value, index >>> 0); - } - else { - try { - r = delete h.value[index >>> 0]; - } - catch (_) { - r = false; - } - } - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_define_properties(env, object, property_count, properties) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var propPtr, attributes; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - property_count = property_count >>> 0; - if (property_count > 0) { - if (!properties) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - var propertyName = void 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < property_count; i++) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - propPtr = properties + (i * (4 * 8)); - var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); - var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); - var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); - var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); - var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); - var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); - attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); - var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); - if (utf8Name) { - propertyName = emnapiString.UTF8ToString(utf8Name, -1); - } - else { - if (!name_2) { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - propertyName = emnapiCtx.handleStore.get(name_2).value; - if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - } - emnapiDefineProperty(envObject, maybeObject, propertyName, method, getter, setter, value, attributes, data); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipp */ - function napi_object_freeze(env, object) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - Object.freeze(maybeObject); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipp */ - function napi_object_seal(env, object) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - Object.seal(maybeObject); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - var propertyMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_define_properties: napi_define_properties, - napi_delete_element: napi_delete_element, - napi_delete_property: napi_delete_property, - napi_get_all_property_names: napi_get_all_property_names, - napi_get_element: napi_get_element, - napi_get_named_property: napi_get_named_property, - napi_get_property: napi_get_property, - napi_get_property_names: napi_get_property_names, - napi_has_element: napi_has_element, - napi_has_named_property: napi_has_named_property, - napi_has_own_property: napi_has_own_property, - napi_has_property: napi_has_property, - napi_object_freeze: napi_object_freeze, - napi_object_seal: napi_object_seal, - napi_set_element: napi_set_element, - napi_set_named_property: napi_set_named_property, - napi_set_property: napi_set_property - }); - /** @__sig ippp */ - function napi_run_script(env, script, result) { - var status; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!script) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var v8Script = emnapiCtx.handleStore.get(script); - if (!v8Script.isString()) { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var g = emnapiCtx.handleStore.get(5 /* GlobalHandle.GLOBAL */).value; - var ret = g.eval(v8Script.value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(ret); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - status = envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - return status; - } - var scriptMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_run_script: napi_run_script - }); - /** @__sig ippp */ - function napi_typeof(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var v = emnapiCtx.handleStore.get(value); - var r; - if (v.isNumber()) { - r = 3 /* napi_valuetype.napi_number */; - } - else if (v.isBigInt()) { - r = 9 /* napi_valuetype.napi_bigint */; - } - else if (v.isString()) { - r = 4 /* napi_valuetype.napi_string */; - } - else if (v.isFunction()) { - // This test has to come before IsObject because IsFunction - // implies IsObject - r = 7 /* napi_valuetype.napi_function */; - } - else if (v.isExternal()) { - // This test has to come before IsObject because IsExternal - // implies IsObject - r = 8 /* napi_valuetype.napi_external */; - } - else if (v.isObject()) { - r = 6 /* napi_valuetype.napi_object */; - } - else if (v.isBoolean()) { - r = 2 /* napi_valuetype.napi_boolean */; - } - else if (v.isUndefined()) { - r = 0 /* napi_valuetype.napi_undefined */; - } - else if (v.isSymbol()) { - r = 5 /* napi_valuetype.napi_symbol */; - } - else if (v.isNull()) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - r = 1 /* napi_valuetype.napi_null */; - } - else { - // Should not get here unless V8 has added some new kind of value. - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_coerce_to_bool(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - v = handle.value ? 4 /* GlobalHandle.TRUE */ : 3 /* GlobalHandle.FALSE */; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_coerce_to_number(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (handle.isBigInt()) { - throw new TypeError('Cannot convert a BigInt value to a number'); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = emnapiCtx.addToCurrentScope(Number(handle.value)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_coerce_to_object(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (handle.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = envObject.ensureHandleId(Object(handle.value)); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_coerce_to_string(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (handle.isSymbol()) { - throw new TypeError('Cannot convert a Symbol value to a string'); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = emnapiCtx.addToCurrentScope(String(handle.value)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_instanceof(env, object, constructor, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!constructor) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, 0, true); - var ctor = emnapiCtx.handleStore.get(constructor); - if (!ctor.isFunction()) { - return envObject.setLastError(5 /* napi_status.napi_function_expected */); - } - var val = emnapiCtx.handleStore.get(object).value; - var ret = val instanceof ctor.value; - r = ret ? 1 : 0; - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_is_array(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isArray() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_arraybuffer(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isArrayBuffer() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function node_api_is_sharedarraybuffer(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]')) - ? 1 - : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_date(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isDate() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_error(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var val = emnapiCtx.handleStore.get(value).value; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = (val instanceof Error) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_typedarray(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isTypedArray() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_buffer(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_dataview(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isDataView() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ipppp */ - function napi_strict_equals(env, lhs, rhs, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!lhs) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!rhs) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var lv = emnapiCtx.handleStore.get(lhs).value; - var rv = emnapiCtx.handleStore.get(rhs).value; - r = (lv === rv) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipp */ - function napi_detach_arraybuffer(env, arraybuffer) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var value = emnapiCtx.handleStore.get(arraybuffer).value; - if (!(value instanceof ArrayBuffer)) { - if (typeof SharedArrayBuffer === 'function' && (value instanceof SharedArrayBuffer)) { - return envObject.setLastError(20 /* napi_status.napi_detachable_arraybuffer_expected */); - } - return envObject.setLastError(19 /* napi_status.napi_arraybuffer_expected */); - } - try { - var MessageChannel_1 = emnapiCtx.feature.MessageChannel; - var messageChannel = new MessageChannel_1(); - messageChannel.port1.postMessage(value, [value]); - } - catch (_) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_detached_arraybuffer(env, arraybuffer, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(arraybuffer); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (h.isArrayBuffer() && h.value.byteLength === 0) { - try { - // eslint-disable-next-line no-new - new Uint8Array(h.value); - } - catch (_) { - HEAP_DATA_VIEW.setInt8(result, 1, true); - return envObject.getReturnStatus(); - } - } - HEAP_DATA_VIEW.setInt8(result, 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - var valueOperationMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_coerce_to_bool: napi_coerce_to_bool, - napi_coerce_to_number: napi_coerce_to_number, - napi_coerce_to_object: napi_coerce_to_object, - napi_coerce_to_string: napi_coerce_to_string, - napi_detach_arraybuffer: napi_detach_arraybuffer, - napi_instanceof: napi_instanceof, - napi_is_array: napi_is_array, - napi_is_arraybuffer: napi_is_arraybuffer, - napi_is_buffer: napi_is_buffer, - napi_is_dataview: napi_is_dataview, - napi_is_date: napi_is_date, - napi_is_detached_arraybuffer: napi_is_detached_arraybuffer, - napi_is_error: napi_is_error, - napi_is_typedarray: napi_is_typedarray, - napi_strict_equals: napi_strict_equals, - napi_typeof: napi_typeof, - node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer - }); - /** @__sig ipp */ - function napi_get_version(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var NODE_API_SUPPORTED_VERSION_MAX = 10 /* Version.NODE_API_SUPPORTED_VERSION_MAX */; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, NODE_API_SUPPORTED_VERSION_MAX, true); - return envObject.clearLastError(); - } - var versionMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_get_version: napi_get_version - }); - emnapiAWST.init(); - emnapiExternalMemory.init(); - emnapiString.init(); - emnapiTSFN.init(); - PThread.init(); - napiModule.emnapi.syncMemory = $emnapiSyncMemory; - napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress; - function addImports(mod) { - var keys = Object.keys(mod); - for (var i = 0; i < keys.length; ++i) { - var k = keys[i]; - if (k.indexOf('$') === 0) - continue; - if (k.indexOf('emnapi_') === 0) { - napiModule.imports.emnapi[k] = mod[k]; - } - else if (k.indexOf('_emnapi_') === 0 || k === 'napi_set_last_error' || k === 'napi_clear_last_error') { - napiModule.imports.env[k] = mod[k]; - } - else { - napiModule.imports.napi[k] = mod[k]; - } - } - } - addImports(asyncMod); - addImports(memoryMod); - addImports(asyncWorkMod); - addImports(utilMod); - addImports(convert2cMod); - addImports(convert2napiMod); - addImports(createMod); - addImports(globalMod); - addImports(wrapMod); - addImports(envMod); - addImports(emnapiMod); - addImports(errorMod); - addImports(functionMod); - addImports(lifeMod); - addImports(miscellaneousMod); - addImports(nodeMod); - addImports(promiseMod); - addImports(propertyMod); - addImports(scriptMod); - addImports(valueOperationMod); - addImports(versionMod); - napiModule.imports.napi.napi_create_threadsafe_function = napi_create_threadsafe_function; - napiModule.imports.napi.napi_get_threadsafe_function_context = napi_get_threadsafe_function_context; - napiModule.imports.napi.napi_call_threadsafe_function = napi_call_threadsafe_function; - napiModule.imports.napi.napi_acquire_threadsafe_function = napi_acquire_threadsafe_function; - napiModule.imports.napi.napi_release_threadsafe_function = napi_release_threadsafe_function; - napiModule.imports.napi.napi_unref_threadsafe_function = napi_unref_threadsafe_function; - napiModule.imports.napi.napi_ref_threadsafe_function = napi_ref_threadsafe_function; - return napiModule; - })(); - return napiModule; -} - -function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) { - // eslint-disable-next-line @typescript-eslint/consistent-type-assertions - options = options !== null && options !== void 0 ? options : {}; - var getMemory = options.getMemory; - var getTable = options.getTable; - var beforeInit = options.beforeInit; - if (getMemory != null && typeof getMemory !== 'function') { - throw new TypeError('options.getMemory is not a function'); - } - if (getTable != null && typeof getTable !== 'function') { - throw new TypeError('options.getTable is not a function'); - } - if (beforeInit != null && typeof beforeInit !== 'function') { - throw new TypeError('options.beforeInit is not a function'); - } - var napiModule; - var isLoad = typeof userNapiModule === 'object' && userNapiModule !== null; - if (isLoad) { - if (userNapiModule.loaded) { - throw new Error('napiModule has already loaded'); - } - napiModule = userNapiModule; - } - else { - napiModule = createNapiModule(options); - } - var wasi = options.wasi; - var wasiThreads; - var importObject = { - env: napiModule.imports.env, - napi: napiModule.imports.napi, - emnapi: napiModule.imports.emnapi - }; - if (wasi) { - wasiThreads = new WASIThreads(napiModule.childThread - ? { - wasi: wasi, - childThread: true, - postMessage: napiModule.postMessage - } - : { - wasi: wasi, - threadManager: napiModule.PThread, - waitThreadStart: napiModule.waitThreadStart - }); - Object.assign(importObject, typeof wasi.getImportObject === 'function' - ? wasi.getImportObject() - : { wasi_snapshot_preview1: wasi.wasiImport }); - Object.assign(importObject, wasiThreads.getImportObject()); - } - var overwriteImports = options.overwriteImports; - if (typeof overwriteImports === 'function') { - var newImportObject = overwriteImports(importObject); - if (typeof newImportObject === 'object' && newImportObject !== null) { - importObject = newImportObject; - } - } - return loadFn(wasmInput, importObject, function (err, source) { - if (err) { - throw err; - } - var originalInstance = source.instance; - var instance = originalInstance; - var originalExports = originalInstance.exports; - var exportMemory = 'memory' in originalExports; - var importMemory = 'memory' in importObject.env; - var memory = getMemory - ? getMemory(originalExports) - : exportMemory - ? originalExports.memory - : importMemory - ? importObject.env.memory - : undefined; - if (!memory) { - throw new Error('memory is neither exported nor imported'); - } - var table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table; - if (wasi && !exportMemory) { - var exports_1 = Object.create(null); - Object.assign(exports_1, originalExports, { memory: memory }); - instance = { exports: exports_1 }; - } - var module = source.module; - if (wasi) { - instance = wasiThreads.initialize(instance, module, memory); - } - else { - napiModule.PThread.setup(module, memory); - } - var emnapiInit = function () { - if (beforeInit) { - beforeInit({ - instance: originalInstance, - module: module - }); - } - napiModule.init({ - instance: instance, - module: module, - memory: memory, - table: table - }); - var ret = { - instance: originalInstance, - module: module, - usedInstance: instance - }; - if (!isLoad) { - ret.napiModule = napiModule; - } - return ret; - }; - if (napiModule.PThread.shouldPreloadWorkers()) { - var poolReady = napiModule.PThread.loadWasmModuleToAllWorkers(); - if (loadFn === loadCallback) { - return poolReady.then(emnapiInit); - } - else { - throw new Error('Synchronous loading is not supported with worker pool (reuseWorker.size > 0)'); - } - } - return emnapiInit(); - }); -} -function loadCallback(wasmInput, importObject, callback) { - return load(wasmInput, importObject).then(function (source) { - return callback(null, source); - }, function (err) { - return callback(err); - }); -} -function loadSyncCallback(wasmInput, importObject, callback) { - var source; - try { - source = loadSync(wasmInput, importObject); - } - catch (err) { - return callback(err); - } - return callback(null, source); -} -/** @public */ -function loadNapiModule(napiModule, -/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ -wasmInput, options) { - if (typeof napiModule !== 'object' || napiModule === null) { - throw new TypeError('Invalid napiModule'); - } - return loadNapiModuleImpl(loadCallback, napiModule, wasmInput, options); -} -/** @public */ -function loadNapiModuleSync(napiModule, wasmInput, options) { - if (typeof napiModule !== 'object' || napiModule === null) { - throw new TypeError('Invalid napiModule'); - } - return loadNapiModuleImpl(loadSyncCallback, napiModule, wasmInput, options); -} -/** @public */ -function instantiateNapiModule( -/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ -wasmInput, options) { - return loadNapiModuleImpl(loadCallback, undefined, wasmInput, options); -} -/** @public */ -function instantiateNapiModuleSync(wasmInput, options) { - return loadNapiModuleImpl(loadSyncCallback, undefined, wasmInput, options); -} - -/** @public */ -var MessageHandler = /*#__PURE__*/ (function (_super) { - __extends(MessageHandler, _super); - function MessageHandler(options) { - var _this = this; - if (typeof options.onLoad !== 'function') { - throw new TypeError('options.onLoad is not a function'); - } - var userOnError = options.onError; - _this = _super.call(this, __assign(__assign({}, options), { onError: function (err, type) { - var _a; - var emnapi_thread_crashed = (_a = _this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed; - if (typeof emnapi_thread_crashed === 'function') { - emnapi_thread_crashed(); - } /* else { - tryWakeUpPthreadJoin(this.instance!) - } */ - if (typeof userOnError === 'function') { - userOnError(err, type); - } - else { - throw err; - } - } })) || this; - _this.napiModule = undefined; - return _this; - } - MessageHandler.prototype.instantiate = function (data) { - var _this = this; - var source = this.onLoad(data); - var then = source.then; - if (typeof then === 'function') { - return source.then(function (result) { - _this.napiModule = result.napiModule; - return result; - }); - } - this.napiModule = source.napiModule; - return source; - }; - MessageHandler.prototype.handle = function (e) { - var _this = this; - var _a; - _super.prototype.handle.call(this, e); - if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { - var type = e.data.__emnapi__.type; - var payload_1 = e.data.__emnapi__.payload; - try { - if (type === 'async-worker-init') { - this.handleAfterLoad(e, function () { - _this.napiModule.initWorker(payload_1.arg); - }); - } - else if (type === 'async-work-execute') { - this.handleAfterLoad(e, function () { - _this.napiModule.executeAsyncWork(payload_1.work); - }); - } - } - catch (err) { - this.onError(err, type); - } - } - }; - return MessageHandler; -}(ThreadMessageHandler)); -// function tryWakeUpPthreadJoin (instance: WebAssembly.Instance): void { -// // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/thread/pthread_join.c#L18-L21 -// const pthread_self = instance.exports.pthread_self as () => number -// const memory = instance.exports.memory as WebAssembly.Memory -// if (typeof pthread_self === 'function') { -// const selfThread = pthread_self() -// if (selfThread && memory) { -// // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/internal/pthread_impl.h#L45 -// const detatchState = new Int32Array(memory.buffer, selfThread + 7 * 4 /** detach_state */, 1) -// Atomics.store(detatchState, 0, 0) -// Atomics.notify(detatchState, 0, Infinity) -// } -// } -// } - -var version = "1.8.1"; - -export { MessageHandler, createNapiModule, instantiateNapiModule, instantiateNapiModuleSync, loadNapiModule, loadNapiModuleSync, version }; diff --git a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.js b/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.js deleted file mode 100644 index ce5edec..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.js +++ /dev/null @@ -1,8655 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.emnapiCore = {})); -})(this, (function (exports) { - /* eslint-disable no-undef */ - var _WebAssembly$1 = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; - function validateImports(imports) { - if (imports && typeof imports !== 'object') { - throw new TypeError('imports must be an object or undefined'); - } - return true; - } - function load(wasmInput, imports) { - if (!wasmInput) - throw new TypeError('Invalid wasm source'); - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - // Promise - try { - var then = typeof wasmInput === 'object' && wasmInput !== null && 'then' in wasmInput ? wasmInput.then : undefined; - if (typeof then === 'function') { - return then.call(wasmInput, function (input) { return load(input, imports); }); - } - } - catch (_) { } - // BufferSource - if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { - return _WebAssembly$1.instantiate(wasmInput, imports); - } - // WebAssembly.Module - if (wasmInput instanceof _WebAssembly$1.Module) { - return _WebAssembly$1.instantiate(wasmInput, imports).then(function (instance) { - return { instance: instance, module: wasmInput }; - }); - } - // Response - if (typeof Response !== 'undefined' && wasmInput instanceof Response) { - return wasmInput.arrayBuffer().then(function (buffer) { - return _WebAssembly$1.instantiate(buffer, imports); - }); - } - // string | URL - var inputIsString = typeof wasmInput === 'string'; - if (inputIsString || (typeof URL !== 'undefined' && wasmInput instanceof URL)) { - if (inputIsString && typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { - return _WebAssembly$1.instantiate(wasmInput, imports); - } - if (typeof fetch !== 'function') { - throw new TypeError('wasm source can not be a string or URL in this environment'); - } - if (typeof _WebAssembly$1.instantiateStreaming === 'function') { - try { - return _WebAssembly$1.instantiateStreaming(fetch(wasmInput), imports).catch(function () { - return load(fetch(wasmInput), imports); - }); - } - catch (_) { - return load(fetch(wasmInput), imports); - } - } - else { - return load(fetch(wasmInput), imports); - } - } - throw new TypeError('Invalid wasm source'); - } - function loadSync(wasmInput, imports) { - if (!wasmInput) - throw new TypeError('Invalid wasm source'); - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - var module; - if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { - module = new _WebAssembly$1.Module(wasmInput); - } - else if (wasmInput instanceof WebAssembly.Module) { - module = wasmInput; - } - else { - throw new TypeError('Invalid wasm source'); - } - var instance = new _WebAssembly$1.Instance(module, imports); - var source = { instance: instance, module: module }; - return source; - } - - var _WebAssembly = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; - var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && - typeof process.versions === 'object' && process.versions !== null && - typeof process.versions.node === 'string'; - function getPostMessage(options) { - return typeof (options === null || options === void 0 ? void 0 : options.postMessage) === 'function' - ? options.postMessage - : typeof postMessage === 'function' - ? postMessage - : undefined; - } - function serizeErrorToBuffer(sab, code, error) { - var i32array = new Int32Array(sab); - Atomics.store(i32array, 0, code); - if (code > 1 && error) { - var name_1 = error.name; - var message = error.message; - var stack = error.stack; - var nameBuffer = new TextEncoder().encode(name_1); - var messageBuffer = new TextEncoder().encode(message); - var stackBuffer = new TextEncoder().encode(stack); - Atomics.store(i32array, 1, nameBuffer.length); - Atomics.store(i32array, 2, messageBuffer.length); - Atomics.store(i32array, 3, stackBuffer.length); - var buffer = new Uint8Array(sab); - buffer.set(nameBuffer, 16); - buffer.set(messageBuffer, 16 + nameBuffer.length); - buffer.set(stackBuffer, 16 + nameBuffer.length + messageBuffer.length); - } - } - function deserizeErrorFromBuffer(sab) { - var _a, _b; - var i32array = new Int32Array(sab); - var status = Atomics.load(i32array, 0); - if (status <= 1) { - return null; - } - var nameLength = Atomics.load(i32array, 1); - var messageLength = Atomics.load(i32array, 2); - var stackLength = Atomics.load(i32array, 3); - var buffer = new Uint8Array(sab); - var nameBuffer = buffer.slice(16, 16 + nameLength); - var messageBuffer = buffer.slice(16 + nameLength, 16 + nameLength + messageLength); - var stackBuffer = buffer.slice(16 + nameLength + messageLength, 16 + nameLength + messageLength + stackLength); - var name = new TextDecoder().decode(nameBuffer); - var message = new TextDecoder().decode(messageBuffer); - var stack = new TextDecoder().decode(stackBuffer); - var ErrorConstructor = (_a = globalThis[name]) !== null && _a !== void 0 ? _a : (name === 'RuntimeError' ? ((_b = _WebAssembly.RuntimeError) !== null && _b !== void 0 ? _b : Error) : Error); - var error = new ErrorConstructor(message); - Object.defineProperty(error, 'stack', { - value: stack, - writable: true, - enumerable: false, - configurable: true - }); - return error; - } - /** @public */ - function isSharedArrayBuffer(value) { - return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); - } - /** @public */ - function isTrapError(e) { - try { - return e instanceof _WebAssembly.RuntimeError; - } - catch (_) { - return false; - } - } - - function createMessage(type, payload) { - return { - __emnapi__: { - type: type, - payload: payload - } - }; - } - - var WASI_THREADS_MAX_TID = 0x1FFFFFFF; - function checkSharedWasmMemory(wasmMemory) { - if (wasmMemory) { - if (!isSharedArrayBuffer(wasmMemory.buffer)) { - throw new Error('Multithread features require shared wasm memory. ' + - 'Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, ' + - 'then create WebAssembly.Memory with `shared: true` option'); - } - } - else { - if (typeof SharedArrayBuffer === 'undefined') { - throw new Error('Current environment does not support SharedArrayBuffer, threads are not available!'); - } - } - } - function getReuseWorker(value) { - var _a; - if (typeof value === 'boolean') { - return value ? { size: 0, strict: false } : false; - } - if (typeof value === 'number') { - if (!(value >= 0)) { - throw new RangeError('reuseWorker: size must be a non-negative integer'); - } - return { size: value, strict: false }; - } - if (!value) { - return false; - } - var size = (_a = Number(value.size)) !== null && _a !== void 0 ? _a : 0; - var strict = Boolean(value.strict); - if (!(size > 0) && strict) { - throw new RangeError('reuseWorker: size must be set to positive integer if strict is set to true'); - } - return { size: size, strict: strict }; - } - var nextWorkerID = 0; - /** @public */ - var ThreadManager = /*#__PURE__*/ (function () { - function ThreadManager(options) { - var _a; - this.unusedWorkers = []; - this.runningWorkers = []; - this.pthreads = Object.create(null); - this.wasmModule = null; - this.wasmMemory = null; - this.messageEvents = new WeakMap(); - if (!options) { - throw new TypeError('ThreadManager(): options is not provided'); - } - if ('childThread' in options) { - this._childThread = Boolean(options.childThread); - } - else { - this._childThread = false; - } - if (this._childThread) { - this._onCreateWorker = undefined; - this._reuseWorker = false; - this._beforeLoad = undefined; - } - else { - this._onCreateWorker = options.onCreateWorker; - this._reuseWorker = getReuseWorker(options.reuseWorker); - this._beforeLoad = options.beforeLoad; - } - this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console); - } - Object.defineProperty(ThreadManager.prototype, "nextWorkerID", { - get: function () { return nextWorkerID; }, - enumerable: false, - configurable: true - }); - ThreadManager.prototype.init = function () { - if (!this._childThread) { - this.initMainThread(); - } - }; - ThreadManager.prototype.initMainThread = function () { - this.preparePool(); - }; - ThreadManager.prototype.preparePool = function () { - if (this._reuseWorker) { - if (this._reuseWorker.size) { - var pthreadPoolSize = this._reuseWorker.size; - while (pthreadPoolSize--) { - var worker = this.allocateUnusedWorker(); - if (ENVIRONMENT_IS_NODE) { - // https://github.com/nodejs/node/issues/53036 - worker.once('message', function () { }); - worker.unref(); - } - } - } - } - }; - ThreadManager.prototype.shouldPreloadWorkers = function () { - return !this._childThread && this._reuseWorker && this._reuseWorker.size > 0; - }; - ThreadManager.prototype.loadWasmModuleToAllWorkers = function () { - var _this_1 = this; - var promises = Array(this.unusedWorkers.length); - var _loop_1 = function (i) { - var worker = this_1.unusedWorkers[i]; - if (ENVIRONMENT_IS_NODE) - worker.ref(); - promises[i] = this_1.loadWasmModuleToWorker(worker).then(function (w) { - if (ENVIRONMENT_IS_NODE) - worker.unref(); - return w; - }, function (e) { - if (ENVIRONMENT_IS_NODE) - worker.unref(); - throw e; - }); - }; - var this_1 = this; - for (var i = 0; i < this.unusedWorkers.length; ++i) { - _loop_1(i); - } - return Promise.all(promises).catch(function (err) { - _this_1.terminateAllThreads(); - throw err; - }); - }; - ThreadManager.prototype.preloadWorkers = function () { - if (this.shouldPreloadWorkers()) { - return this.loadWasmModuleToAllWorkers(); - } - return Promise.resolve([]); - }; - ThreadManager.prototype.setup = function (wasmModule, wasmMemory) { - this.wasmModule = wasmModule; - this.wasmMemory = wasmMemory; - }; - ThreadManager.prototype.markId = function (worker) { - if (worker.__emnapi_tid) - return worker.__emnapi_tid; - var tid = nextWorkerID + 43; - nextWorkerID = (nextWorkerID + 1) % (WASI_THREADS_MAX_TID - 42); - this.pthreads[tid] = worker; - worker.__emnapi_tid = tid; - return tid; - }; - ThreadManager.prototype.returnWorkerToPool = function (worker) { - var tid = worker.__emnapi_tid; - if (tid !== undefined) { - delete this.pthreads[tid]; - } - this.unusedWorkers.push(worker); - this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1); - delete worker.__emnapi_tid; - if (ENVIRONMENT_IS_NODE) { - worker.unref(); - } - }; - ThreadManager.prototype.loadWasmModuleToWorker = function (worker, sab) { - var _this_1 = this; - if (worker.whenLoaded) - return worker.whenLoaded; - var err = this.printErr; - var beforeLoad = this._beforeLoad; - // eslint-disable-next-line @typescript-eslint/no-this-alias - var _this = this; - worker.whenLoaded = new Promise(function (resolve, reject) { - var handleError = function (e) { - var message = 'worker sent an error!'; - if (worker.__emnapi_tid !== undefined) { - message = 'worker (tid = ' + worker.__emnapi_tid + ') sent an error!'; - } - if ('message' in e) { - err(message + ' ' + e.message); - if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) { - try { - _this.terminateAllThreads(); - } - catch (_) { } - } - } - else { - err(message); - } - reject(e); - throw e; - }; - var handleMessage = function (data) { - if (data.__emnapi__) { - var type = data.__emnapi__.type; - var payload = data.__emnapi__.payload; - if (type === 'loaded') { - worker.loaded = true; - if (ENVIRONMENT_IS_NODE && !worker.__emnapi_tid) { - worker.unref(); - } - resolve(worker); - // if (payload.err) { - // err('failed to load in child thread: ' + (payload.err.message || payload.err)) - // } - } - else if (type === 'cleanup-thread') { - if (payload.tid in _this_1.pthreads) { - _this_1.cleanThread(worker, payload.tid); - } - } - } - }; - worker.onmessage = function (e) { - handleMessage(e.data); - _this_1.fireMessageEvent(worker, e); - }; - worker.onerror = handleError; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', function (data) { - var _a, _b; - (_b = (_a = worker).onmessage) === null || _b === void 0 ? void 0 : _b.call(_a, { - data: data - }); - }); - worker.on('error', function (e) { - var _a, _b; - (_b = (_a = worker).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, e); - }); - worker.on('detachedExit', function () { }); - } - if (typeof beforeLoad === 'function') { - beforeLoad(worker); - } - try { - worker.postMessage(createMessage('load', { - wasmModule: _this_1.wasmModule, - wasmMemory: _this_1.wasmMemory, - sab: sab - })); - } - catch (err) { - checkSharedWasmMemory(_this_1.wasmMemory); - throw err; - } - }); - return worker.whenLoaded; - }; - ThreadManager.prototype.allocateUnusedWorker = function () { - var _onCreateWorker = this._onCreateWorker; - if (typeof _onCreateWorker !== 'function') { - throw new TypeError('`options.onCreateWorker` is not provided'); - } - var worker = _onCreateWorker({ type: 'thread', name: 'emnapi-pthread' }); - this.unusedWorkers.push(worker); - return worker; - }; - ThreadManager.prototype.getNewWorker = function (sab) { - if (this._reuseWorker) { - if (this.unusedWorkers.length === 0) { - if (this._reuseWorker.strict) { - if (!ENVIRONMENT_IS_NODE) { - var err = this.printErr; - err('Tried to spawn a new thread, but the thread pool is exhausted.\n' + - 'This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.'); - return; - } - } - var worker_1 = this.allocateUnusedWorker(); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - this.loadWasmModuleToWorker(worker_1, sab); - } - return this.unusedWorkers.pop(); - } - var worker = this.allocateUnusedWorker(); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - this.loadWasmModuleToWorker(worker, sab); - return this.unusedWorkers.pop(); - }; - ThreadManager.prototype.cleanThread = function (worker, tid, force) { - if (!force && this._reuseWorker) { - this.returnWorkerToPool(worker); - } - else { - delete this.pthreads[tid]; - var index = this.runningWorkers.indexOf(worker); - if (index !== -1) { - this.runningWorkers.splice(index, 1); - } - this.terminateWorker(worker); - delete worker.__emnapi_tid; - } - }; - ThreadManager.prototype.terminateWorker = function (worker) { - var _this_1 = this; - var _a; - var tid = worker.__emnapi_tid; - // eslint-disable-next-line @typescript-eslint/no-floating-promises - worker.terminate(); - (_a = this.messageEvents.get(worker)) === null || _a === void 0 ? void 0 : _a.clear(); - this.messageEvents.delete(worker); - worker.onmessage = function (e) { - if (e.data.__emnapi__) { - var err = _this_1.printErr; - err('received "' + e.data.__emnapi__.type + '" command from terminated worker: ' + tid); - } - }; - }; - ThreadManager.prototype.terminateAllThreads = function () { - for (var i = 0; i < this.runningWorkers.length; ++i) { - this.terminateWorker(this.runningWorkers[i]); - } - for (var i = 0; i < this.unusedWorkers.length; ++i) { - this.terminateWorker(this.unusedWorkers[i]); - } - this.unusedWorkers = []; - this.runningWorkers = []; - this.pthreads = Object.create(null); - this.preparePool(); - }; - ThreadManager.prototype.addMessageEventListener = function (worker, onMessage) { - var listeners = this.messageEvents.get(worker); - if (!listeners) { - listeners = new Set(); - this.messageEvents.set(worker, listeners); - } - listeners.add(onMessage); - return function () { - listeners === null || listeners === void 0 ? void 0 : listeners.delete(onMessage); - }; - }; - ThreadManager.prototype.fireMessageEvent = function (worker, e) { - var listeners = this.messageEvents.get(worker); - if (!listeners) - return; - var err = this.printErr; - listeners.forEach(function (listener) { - try { - listener(e); - } - catch (e) { - err(e.stack); - } - }); - }; - return ThreadManager; - }()); - - var kIsProxy = Symbol('kIsProxy'); - /** @public */ - function createInstanceProxy(instance, memory) { - if (instance[kIsProxy]) - return instance; - // https://github.com/nodejs/help/issues/4102 - var originalExports = instance.exports; - var createHandler = function (target) { - var handlers = [ - 'apply', - 'construct', - 'defineProperty', - 'deleteProperty', - 'get', - 'getOwnPropertyDescriptor', - 'getPrototypeOf', - 'has', - 'isExtensible', - 'ownKeys', - 'preventExtensions', - 'set', - 'setPrototypeOf' - ]; - var handler = {}; - var _loop_1 = function (i) { - var name_1 = handlers[i]; - handler[name_1] = function () { - var args = Array.prototype.slice.call(arguments, 1); - args.unshift(target); - return Reflect[name_1].apply(Reflect, args); - }; - }; - for (var i = 0; i < handlers.length; i++) { - _loop_1(i); - } - return handler; - }; - var handler = createHandler(originalExports); - var _initialize = function () { }; - var _start = function () { return 0; }; - handler.get = function (_target, p, receiver) { - var _a; - if (p === 'memory') { - return (_a = (typeof memory === 'function' ? memory() : memory)) !== null && _a !== void 0 ? _a : Reflect.get(originalExports, p, receiver); - } - if (p === '_initialize') { - return p in originalExports ? _initialize : undefined; - } - if (p === '_start') { - return p in originalExports ? _start : undefined; - } - return Reflect.get(originalExports, p, receiver); - }; - handler.has = function (_target, p) { - if (p === 'memory') - return true; - return Reflect.has(originalExports, p); - }; - var exportsProxy = new Proxy(Object.create(null), handler); - return new Proxy(instance, { - get: function (target, p, receiver) { - if (p === 'exports') { - return exportsProxy; - } - if (p === kIsProxy) { - return true; - } - return Reflect.get(target, p, receiver); - } - }); - } - - var patchedWasiInstances = new WeakMap(); - /** @public */ - var WASIThreads = /*#__PURE__*/ (function () { - function WASIThreads(options) { - var _this_1 = this; - if (!options) { - throw new TypeError('WASIThreads(): options is not provided'); - } - if (!options.wasi) { - throw new TypeError('WASIThreads(): options.wasi is not provided'); - } - patchedWasiInstances.set(this, new WeakSet()); - var wasi = options.wasi; - patchWasiInstance(this, wasi); - this.wasi = wasi; - if ('childThread' in options) { - this.childThread = Boolean(options.childThread); - } - else { - this.childThread = false; - } - this.PThread = undefined; - if ('threadManager' in options) { - if (typeof options.threadManager === 'function') { - this.PThread = options.threadManager(); - } - else { - this.PThread = options.threadManager; - } - } - else { - if (!this.childThread) { - this.PThread = new ThreadManager(options); - this.PThread.init(); - } - } - var waitThreadStart = false; - if ('waitThreadStart' in options) { - waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); - } - var postMessage = getPostMessage(options); - if (this.childThread && typeof postMessage !== 'function') { - throw new TypeError('options.postMessage is not a function'); - } - this.postMessage = postMessage; - var wasm64 = Boolean(options.wasm64); - var onMessage = function (e) { - if (e.data.__emnapi__) { - var type = e.data.__emnapi__.type; - var payload = e.data.__emnapi__.payload; - if (type === 'spawn-thread') { - threadSpawn(payload.startArg, payload.errorOrTid); - } - else if (type === 'terminate-all-threads') { - _this_1.terminateAllThreads(); - } - } - }; - var threadSpawn = function (startArg, errorOrTid) { - var _a; - var EAGAIN = 6; - var isNewABI = errorOrTid !== undefined; - try { - checkSharedWasmMemory(_this_1.wasmMemory); - } - catch (err) { - (_a = _this_1.PThread) === null || _a === void 0 ? void 0 : _a.printErr(err.stack); - if (isNewABI) { - var struct_1 = new Int32Array(_this_1.wasmMemory.buffer, errorOrTid, 2); - Atomics.store(struct_1, 0, 1); - Atomics.store(struct_1, 1, EAGAIN); - Atomics.notify(struct_1, 1); - return 1; - } - else { - return -EAGAIN; - } - } - if (!isNewABI) { - var malloc = _this_1.wasmInstance.exports.malloc; - errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : malloc(8); - if (!errorOrTid) { - return -48; /* ENOMEM */ - } - } - var _free = _this_1.wasmInstance.exports.free; - var free = wasm64 ? function (ptr) { _free(BigInt(ptr)); } : _free; - var struct = new Int32Array(_this_1.wasmMemory.buffer, errorOrTid, 2); - Atomics.store(struct, 0, 0); - Atomics.store(struct, 1, 0); - if (_this_1.childThread) { - postMessage(createMessage('spawn-thread', { - startArg: startArg, - errorOrTid: errorOrTid - })); - Atomics.wait(struct, 1, 0); - var isError = Atomics.load(struct, 0); - var result = Atomics.load(struct, 1); - if (isNewABI) { - return isError; - } - free(errorOrTid); - return isError ? -result : result; - } - var shouldWait = waitThreadStart || (waitThreadStart === 0); - var sab; - if (shouldWait) { - sab = new Int32Array(new SharedArrayBuffer(16 + 8192)); - Atomics.store(sab, 0, 0); - } - var worker; - var tid; - var PThread = _this_1.PThread; - try { - worker = PThread.getNewWorker(sab); - if (!worker) { - throw new Error('failed to get new worker'); - } - PThread.addMessageEventListener(worker, onMessage); - tid = PThread.markId(worker); - if (ENVIRONMENT_IS_NODE) { - worker.ref(); - } - worker.postMessage(createMessage('start', { - tid: tid, - arg: startArg, - sab: sab - })); - if (shouldWait) { - if (typeof waitThreadStart === 'number') { - var waitResult = Atomics.wait(sab, 0, 0, waitThreadStart); - if (waitResult === 'timed-out') { - try { - PThread.cleanThread(worker, tid, true); - } - catch (_) { } - throw new Error('Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.'); - } - } - else { - Atomics.wait(sab, 0, 0); - } - var r = Atomics.load(sab, 0); - if (r > 1) { - try { - PThread.cleanThread(worker, tid, true); - } - catch (_) { } - throw deserizeErrorFromBuffer(sab.buffer); - } - } - } - catch (e) { - Atomics.store(struct, 0, 1); - Atomics.store(struct, 1, EAGAIN); - Atomics.notify(struct, 1); - PThread === null || PThread === void 0 ? void 0 : PThread.printErr(e.stack); - if (isNewABI) { - return 1; - } - free(errorOrTid); - return -EAGAIN; - } - Atomics.store(struct, 0, 0); - Atomics.store(struct, 1, tid); - Atomics.notify(struct, 1); - PThread.runningWorkers.push(worker); - if (!shouldWait) { - worker.whenLoaded.catch(function (err) { - delete worker.whenLoaded; - PThread.cleanThread(worker, tid, true); - throw err; - }); - } - if (isNewABI) { - return 0; - } - free(errorOrTid); - return tid; - }; - this.threadSpawn = threadSpawn; - } - WASIThreads.prototype.getImportObject = function () { - return { - wasi: { - 'thread-spawn': this.threadSpawn - } - }; - }; - WASIThreads.prototype.setup = function (wasmInstance, wasmModule, wasmMemory) { - wasmMemory !== null && wasmMemory !== void 0 ? wasmMemory : (wasmMemory = wasmInstance.exports.memory); - this.wasmInstance = wasmInstance; - this.wasmMemory = wasmMemory; - if (this.PThread) { - this.PThread.setup(wasmModule, wasmMemory); - } - }; - WASIThreads.prototype.preloadWorkers = function () { - if (this.PThread) { - return this.PThread.preloadWorkers(); - } - return Promise.resolve([]); - }; - /** - * It's ok to call this method to a WASI command module. - * - * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module - * - * @returns A proxied WebAssembly instance if in child thread, other wise the original instance - */ - WASIThreads.prototype.initialize = function (instance, module, memory) { - var exports$1 = instance.exports; - memory !== null && memory !== void 0 ? memory : (memory = exports$1.memory); - if (this.childThread) { - instance = createInstanceProxy(instance, memory); - } - this.setup(instance, module, memory); - var wasi = this.wasi; - if (('_start' in exports$1) && (typeof exports$1._start === 'function')) { - if (this.childThread) { - wasi.start(instance); - try { - var kStarted = getWasiSymbol(wasi, 'kStarted'); - wasi[kStarted] = false; - } - catch (_) { } - } - else { - setupInstance(wasi, instance); - } - } - else { - wasi.initialize(instance); - } - return instance; - }; - /** - * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} - * ```js - * this.initialize(instance, module, memory) - * this.wasi.start(instance) - * ``` - */ - WASIThreads.prototype.start = function (instance, module, memory) { - var exports$1 = instance.exports; - memory !== null && memory !== void 0 ? memory : (memory = exports$1.memory); - if (this.childThread) { - instance = createInstanceProxy(instance, memory); - } - this.setup(instance, module, memory); - var exitCode = this.wasi.start(instance); - return { exitCode: exitCode, instance: instance }; - }; - WASIThreads.prototype.terminateAllThreads = function () { - var _a; - if (!this.childThread) { - (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.terminateAllThreads(); - } - else { - this.postMessage(createMessage('terminate-all-threads', {})); - } - }; - return WASIThreads; - }()); - function patchWasiInstance(wasiThreads, wasi) { - var patched = patchedWasiInstances.get(wasiThreads); - if (patched.has(wasi)) { - return; - } - var _this = wasiThreads; - var wasiImport = wasi.wasiImport; - if (wasiImport) { - var proc_exit_1 = wasiImport.proc_exit; - wasiImport.proc_exit = function (code) { - _this.terminateAllThreads(); - return proc_exit_1.call(this, code); - }; - } - if (!_this.childThread) { - var start_1 = wasi.start; - if (typeof start_1 === 'function') { - wasi.start = function (instance) { - try { - return start_1.call(this, instance); - } - catch (err) { - if (isTrapError(err)) { - _this.terminateAllThreads(); - } - throw err; - } - }; - } - } - patched.add(wasi); - } - function getWasiSymbol(wasi, description) { - var symbols = Object.getOwnPropertySymbols(wasi); - var selectDescription = function (description) { return function (s) { - if (s.description) { - return s.description === description; - } - return s.toString() === "Symbol(".concat(description, ")"); - }; }; - if (Array.isArray(description)) { - return description.map(function (d) { return symbols.filter(selectDescription(d))[0]; }); - } - return symbols.filter(selectDescription(description))[0]; - } - function setupInstance(wasi, instance) { - var _a = getWasiSymbol(wasi, ['kInstance', 'kSetMemory']), kInstance = _a[0], kSetMemory = _a[1]; - wasi[kInstance] = instance; - wasi[kSetMemory](instance.exports.memory); - } - - /** @public */ - var ThreadMessageHandler = /*#__PURE__*/ (function () { - function ThreadMessageHandler(options) { - var postMsg = getPostMessage(options); - if (typeof postMsg !== 'function') { - throw new TypeError('options.postMessage is not a function'); - } - this.postMessage = postMsg; - this.onLoad = options === null || options === void 0 ? void 0 : options.onLoad; - this.onError = typeof (options === null || options === void 0 ? void 0 : options.onError) === 'function' ? options.onError : function (_type, err) { throw err; }; - this.instance = undefined; - // this.module = undefined - this.messagesBeforeLoad = []; - } - /** @virtual */ - ThreadMessageHandler.prototype.instantiate = function (data) { - if (typeof this.onLoad === 'function') { - return this.onLoad(data); - } - throw new Error('ThreadMessageHandler.prototype.instantiate is not implemented'); - }; - /** @virtual */ - ThreadMessageHandler.prototype.handle = function (e) { - var _this = this; - var _a; - if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { - var type = e.data.__emnapi__.type; - var payload_1 = e.data.__emnapi__.payload; - try { - if (type === 'load') { - this._load(payload_1); - } - else if (type === 'start') { - this.handleAfterLoad(e, function () { - _this._start(payload_1); - }); - } - } - catch (err) { - this.onError(err, type); - } - } - }; - ThreadMessageHandler.prototype._load = function (payload) { - var _this = this; - if (this.instance !== undefined) - return; - var source; - try { - source = this.instantiate(payload); - } - catch (err) { - this._loaded(err, null, payload); - return; - } - var then = source && 'then' in source ? source.then : undefined; - if (typeof then === 'function') { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - then.call(source, function (source) { _this._loaded(null, source, payload); }, function (err) { _this._loaded(err, null, payload); }); - } - else { - this._loaded(null, source, payload); - } - }; - ThreadMessageHandler.prototype._start = function (payload) { - var wasi_thread_start = this.instance.exports.wasi_thread_start; - if (typeof wasi_thread_start !== 'function') { - var err = new TypeError('wasi_thread_start is not exported'); - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - var postMessage = this.postMessage; - var tid = payload.tid; - var startArg = payload.arg; - notifyPthreadCreateResult(payload.sab, 1); - try { - wasi_thread_start(tid, startArg); - } - catch (err) { - if (err !== 'unwind') { - throw err; - } - else { - return; - } - } - postMessage(createMessage('cleanup-thread', { tid: tid })); - }; - ThreadMessageHandler.prototype._loaded = function (err, source, payload) { - if (err) { - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - if (source == null) { - var err_1 = new TypeError('onLoad should return an object'); - notifyPthreadCreateResult(payload.sab, 2, err_1); - throw err_1; - } - var instance = source.instance; - if (!instance) { - var err_2 = new TypeError('onLoad should return an object which includes "instance"'); - notifyPthreadCreateResult(payload.sab, 2, err_2); - throw err_2; - } - this.instance = instance; - var postMessage = this.postMessage; - postMessage(createMessage('loaded', {})); - var messages = this.messagesBeforeLoad; - this.messagesBeforeLoad = []; - for (var i = 0; i < messages.length; i++) { - var data = messages[i]; - this.handle({ data: data }); - } - }; - ThreadMessageHandler.prototype.handleAfterLoad = function (e, f) { - if (this.instance !== undefined) { - f.call(this, e); - } - else { - this.messagesBeforeLoad.push(e.data); - } - }; - return ThreadMessageHandler; - }()); - function notifyPthreadCreateResult(sab, result, error) { - if (sab) { - serizeErrorToBuffer(sab.buffer, result, error); - Atomics.notify(sab, 0); - } - } - - function createNapiModule(options) { - var napiModule = (function () { - var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && typeof process.versions === 'object' && process.versions !== null && typeof process.versions.node === 'string'; - var ENVIRONMENT_IS_PTHREAD = Boolean(options.childThread); - var waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); - var wasmInstance; - var wasmMemory; - var wasmTable; - var _malloc; - var _free; - function abort(msg) { - if (typeof _WebAssembly$1.RuntimeError === 'function') { - throw new _WebAssembly$1.RuntimeError(msg); - } - throw Error(msg); - } - var napiModule = { - imports: { - env: {}, - napi: {}, - emnapi: {} - }, - exports: {}, - emnapi: {}, - loaded: false, - filename: '', - childThread: ENVIRONMENT_IS_PTHREAD, - initWorker: undefined, - executeAsyncWork: undefined, - waitThreadStart: waitThreadStart, - PThread: undefined, - init: function (options) { - if (napiModule.loaded) - return napiModule.exports; - if (!options) - throw new TypeError('Invalid napi init options'); - var instance = options.instance; - if (!(instance === null || instance === void 0 ? void 0 : instance.exports)) - throw new TypeError('Invalid wasm instance'); - wasmInstance = instance; - var exports$1 = instance.exports; - var module = options.module; - var memory = options.memory || exports$1.memory; - var table = options.table || exports$1.__indirect_function_table; - if (!(module instanceof _WebAssembly$1.Module)) - throw new TypeError('Invalid wasm module'); - if (!(memory instanceof _WebAssembly$1.Memory)) - throw new TypeError('Invalid wasm memory'); - if (!(table instanceof _WebAssembly$1.Table)) - throw new TypeError('Invalid wasm table'); - wasmMemory = memory; - wasmTable = table; - if (typeof exports$1.malloc !== 'function') - throw new TypeError('malloc is not exported'); - if (typeof exports$1.free !== 'function') - throw new TypeError('free is not exported'); - _malloc = exports$1.malloc; - _free = exports$1.free; - if (!napiModule.childThread) { - // main thread only - var moduleApiVersion = 8 /* Version.NODE_API_DEFAULT_MODULE_API_VERSION */; - var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1; - if (typeof node_api_module_get_api_version_v1 === 'function') { - moduleApiVersion = node_api_module_get_api_version_v1(); - } - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - var envObject = napiModule.envObject || (napiModule.envObject = emnapiCtx.createEnv(napiModule.filename, moduleApiVersion, function (cb) { return (wasmTable.get(cb)); }, function (cb) { return (wasmTable.get(cb)); }, abort, emnapiNodeBinding)); - var scope_1 = emnapiCtx.openScope(envObject); - try { - envObject.callIntoModule(function (_envObject) { - var exports$1 = napiModule.exports; - var exportsHandle = scope_1.add(exports$1); - var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1; - var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id); - napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value; - }); - } - catch (e) { - if (e !== 'unwind') { - throw e; - } - } - finally { - emnapiCtx.closeScope(envObject, scope_1); - } - napiModule.loaded = true; - delete napiModule.envObject; - return napiModule.exports; - } - } - }; - var emnapiCtx; - var emnapiNodeBinding; - var onCreateWorker = undefined; - var err; - if (!ENVIRONMENT_IS_PTHREAD) { - var context = options.context; - if (typeof context !== 'object' || context === null) { - throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`"); - } - emnapiCtx = context; - } - else { - emnapiCtx = options === null || options === void 0 ? void 0 : options.context; - var postMsg = typeof options.postMessage === 'function' - ? options.postMessage - : typeof postMessage === 'function' - ? postMessage - : undefined; - if (typeof postMsg !== 'function') { - throw new TypeError('No postMessage found'); - } - napiModule.postMessage = postMsg; - } - if (typeof options.filename === 'string') { - napiModule.filename = options.filename; - } - if (typeof options.onCreateWorker === 'function') { - onCreateWorker = options.onCreateWorker; - } - if (typeof options.print === 'function') { - options.print; - } - else { - console.log.bind(console); - } - if (typeof options.printErr === 'function') { - err = options.printErr; - } - else { - err = console.warn.bind(console); - } - if ('nodeBinding' in options) { - var nodeBinding = options.nodeBinding; - if (typeof nodeBinding !== 'object' || nodeBinding === null) { - throw new TypeError('Invalid `options.nodeBinding`. Use @emnapi/node-binding package'); - } - emnapiNodeBinding = nodeBinding; - } - var emnapiAsyncWorkPoolSize = 0; - if ('asyncWorkPoolSize' in options) { - if (typeof options.asyncWorkPoolSize !== 'number') { - throw new TypeError('options.asyncWorkPoolSize must be a integer'); - } - emnapiAsyncWorkPoolSize = options.asyncWorkPoolSize >> 0; - if (emnapiAsyncWorkPoolSize > 1024) { - emnapiAsyncWorkPoolSize = 1024; - } - else if (emnapiAsyncWorkPoolSize < -1024) { - emnapiAsyncWorkPoolSize = -1024; - } - } - var singleThreadAsyncWork = ENVIRONMENT_IS_PTHREAD ? false : (emnapiAsyncWorkPoolSize <= 0); - function _emnapi_async_work_pool_size() { - return Math.abs(emnapiAsyncWorkPoolSize); - } - napiModule.imports.env._emnapi_async_work_pool_size = _emnapi_async_work_pool_size; - // ------------------------------ pthread ------------------------------- - function emnapiAddSendListener(worker) { - if (!worker) - return false; - if (worker._emnapiSendListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__ && __emnapi__.type === 'async-send') { - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_1 = napiModule.postMessage; - postMessage_1({ __emnapi__: __emnapi__ }); - } - else { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var callback = __emnapi__.payload.callback; - (wasmTable.get(callback))(__emnapi__.payload.data); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiSendListener; - }; - worker._emnapiSendListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; - } - napiModule.emnapi.addSendListener = emnapiAddSendListener; - var PThread = new ThreadManager(ENVIRONMENT_IS_PTHREAD - ? { - printErr: err, - childThread: true - } - : { - printErr: err, - beforeLoad: function (worker) { - emnapiAddSendListener(worker); - }, - reuseWorker: options.reuseWorker, - onCreateWorker: onCreateWorker - }); - napiModule.PThread = PThread; - /** - * @__sig ipiip - */ - function napi_set_last_error(env, error_code, engine_error_code, engine_reserved) { - var envObject = emnapiCtx.envStore.get(env); - return envObject.setLastError(error_code, engine_error_code, engine_reserved); - } - /** - * @__sig ip - */ - function napi_clear_last_error(env) { - var envObject = emnapiCtx.envStore.get(env); - return envObject.clearLastError(); - } - /** - * @__sig vppp - */ - function _emnapi_get_node_version(major, minor, patch) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var versions = (typeof process === 'object' && process !== null && - typeof process.versions === 'object' && process.versions !== null && - typeof process.versions.node === 'string') - ? process.versions.node.split('.').map(function (n) { return Number(n); }) - : [0, 0, 0]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(major, versions[0], true); - HEAP_DATA_VIEW.setUint32(minor, versions[1], true); - HEAP_DATA_VIEW.setUint32(patch, versions[2], true); - } - /** - * @__sig v - * @__deps $runtimeKeepalivePush - */ - function _emnapi_runtime_keepalive_push() { - } - /** - * @__sig v - * @__deps $runtimeKeepalivePop - */ - function _emnapi_runtime_keepalive_pop() { - } - /** - * @__sig vpp - */ - function _emnapi_set_immediate(callback, data) { - emnapiCtx.feature.setImmediate(function () { - (wasmTable.get(callback))(data); - }); - } - /** - * @__sig vpp - */ - function _emnapi_next_tick(callback, data) { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - Promise.resolve().then(function () { - (wasmTable.get(callback))(data); - }); - } - /** - * @__sig vipppi - */ - function _emnapi_callback_into_module(forceUncaught, env, callback, data, close_scope_if_throw) { - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - try { - envObject.callbackIntoModule(Boolean(forceUncaught), function () { - (wasmTable.get(callback))(env, data); - }); - } - catch (err) { - emnapiCtx.closeScope(envObject, scope); - if (close_scope_if_throw) { - emnapiCtx.closeScope(envObject); - } - throw err; - } - emnapiCtx.closeScope(envObject, scope); - } - /** - * @__sig vipppp - */ - function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) { - var envObject = emnapiCtx.envStore.get(env); - envObject.callFinalizerInternal(forceUncaught, callback, data, hint); - } - /** - * @__sig v - */ - function _emnapi_ctx_increase_waiting_request_counter() { - emnapiCtx.increaseWaitingRequestCounter(); - } - /** - * @__sig v - */ - function _emnapi_ctx_decrease_waiting_request_counter() { - emnapiCtx.decreaseWaitingRequestCounter(); - } - /** - * @__sig i - */ - function _emnapi_is_main_runtime_thread() { - return ENVIRONMENT_IS_PTHREAD ? 0 : 1; - } - /** - * @__sig i - */ - function _emnapi_is_main_browser_thread() { - return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0; - } - /** - * @__sig v - */ - function _emnapi_unwind() { - // eslint-disable-next-line @typescript-eslint/no-throw-literal - throw 'unwind'; - } - /** - * @__sig d - */ - function _emnapi_get_now() { - return performance.timeOrigin + performance.now(); - } - function $emnapiSetValueI64(result, numberValue) { - var tempDouble; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var tempI64 = [ - numberValue >>> 0, - (tempDouble = numberValue, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) - ]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, tempI64[0], true); - HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true); - } - /** - * @__deps $emnapiCtx - * @__sig p - */ - function _emnapi_open_handle_scope() { - return emnapiCtx.openScope().id; - } - /** - * @__deps $emnapiCtx - * @__sig vp - */ - function _emnapi_close_handle_scope(_scope) { - return emnapiCtx.closeScope(); - } - var utilMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - $emnapiSetValueI64: $emnapiSetValueI64, - _emnapi_call_finalizer: _emnapi_call_finalizer, - _emnapi_callback_into_module: _emnapi_callback_into_module, - _emnapi_close_handle_scope: _emnapi_close_handle_scope, - _emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter, - _emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter, - _emnapi_get_node_version: _emnapi_get_node_version, - _emnapi_get_now: _emnapi_get_now, - _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread, - _emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread, - _emnapi_next_tick: _emnapi_next_tick, - _emnapi_open_handle_scope: _emnapi_open_handle_scope, - _emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop, - _emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push, - _emnapi_set_immediate: _emnapi_set_immediate, - _emnapi_unwind: _emnapi_unwind, - napi_clear_last_error: napi_clear_last_error, - napi_set_last_error: napi_set_last_error - }); - function emnapiGetWorkerByPthreadPtr(pthreadPtr) { - var view = new DataView(wasmMemory.buffer); - /** - * wasi-sdk-20.0+threads - * - * struct pthread { - * struct pthread *self; // 0 - * struct pthread *prev, *next; // 4, 8 - * uintptr_t sysinfo; // 12 - * uintptr_t canary; // 16 - * int tid; // 20 - * // ... - * } - */ - var tidOffset = 20; - var tid = view.getInt32(pthreadPtr + tidOffset, true); - var worker = PThread.pthreads[tid]; - return worker; - } - /** @__sig vp */ - function _emnapi_worker_unref(pthreadPtr) { - if (ENVIRONMENT_IS_PTHREAD) - return; - var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); - if (worker && typeof worker.unref === 'function') { - worker.unref(); - } - } - /** @__sig vipp */ - function _emnapi_async_send_js(type, callback, data) { - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_1 = napiModule.postMessage; - postMessage_1({ - __emnapi__: { - type: 'async-send', - payload: { - callback: callback, - data: data - } - } - }); - } - else { - switch (type) { - case 0: - _emnapi_set_immediate(callback, data); - break; - case 1: - _emnapi_next_tick(callback, data); - break; - } - } - } - // function ptrToString (ptr: number): string { - // return '0x' + ('00000000' + ptr.toString(16)).slice(-8) - // } - var uvThreadpoolReadyResolve; - var uvThreadpoolReady = new Promise(function (resolve) { - uvThreadpoolReadyResolve = function () { - uvThreadpoolReady.ready = true; - resolve(); - }; - }); - uvThreadpoolReady.ready = false; - /** @__sig vppi */ - function _emnapi_after_uvthreadpool_ready(callback, q, type) { - if (uvThreadpoolReady.ready) { - (wasmTable.get(callback))(q, type); - } - else { - uvThreadpoolReady.then(function () { - (wasmTable.get(callback))(q, type); - }); - } - } - /** @__sig vpi */ - function _emnapi_tell_js_uvthreadpool(threads, size) { - var p = []; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var _loop_1 = function (i) { - var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true); - var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); - p.push(new Promise(function (resolve) { - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__ && __emnapi__.type === 'async-thread-ready') { - resolve(); - if (worker && typeof worker.unref === 'function') { - worker.unref(); - } - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler); - } - } - }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler); - } - })); - }; - for (var i = 0; i < size; i++) { - _loop_1(i); - } - Promise.all(p).then(uvThreadpoolReadyResolve); - } - /** @__sig v */ - function _emnapi_emit_async_thread_ready() { - if (!ENVIRONMENT_IS_PTHREAD) - return; - var postMessage = napiModule.postMessage; - postMessage({ - __emnapi__: { - type: 'async-thread-ready', - payload: {} - } - }); - } - var asyncMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - _emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready, - _emnapi_async_send_js: _emnapi_async_send_js, - _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready, - _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool, - _emnapi_worker_unref: _emnapi_worker_unref - }); - /* eslint-disable @typescript-eslint/indent */ - /** @__sig ipjp */ - function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!adjusted_value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var change_in_bytes_number = Number(change_in_bytes); - if (change_in_bytes_number < 0) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var old_size = wasmMemory.buffer.byteLength; - var new_size = old_size + change_in_bytes_number; - new_size = new_size + ((65536 - new_size % 65536) % 65536); - if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (emnapiCtx.feature.supportBigInt) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true); - } - else { - $emnapiSetValueI64(adjusted_value, wasmMemory.buffer.byteLength); - } - return envObject.clearLastError(); - } - var memoryMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_adjust_external_memory: napi_adjust_external_memory - }); - /** - * @__postset - * ``` - * emnapiAWST.init(); - * ``` - */ - var emnapiAWST = { - idGen: {}, - values: [undefined], - queued: new Set(), - pending: [], - init: function () { - var idGen = { - nextId: 1, - list: [], - generate: function () { - var id; - if (idGen.list.length) { - id = idGen.list.shift(); - } - else { - id = idGen.nextId; - idGen.nextId++; - } - return id; - }, - reuse: function (id) { - idGen.list.push(id); - } - }; - emnapiAWST.idGen = idGen; - emnapiAWST.values = [undefined]; - emnapiAWST.queued = new Set(); - emnapiAWST.pending = []; - }, - create: function (env, resource, resourceName, execute, complete, data) { - var asyncId = 0; - var triggerAsyncId = 0; - if (emnapiNodeBinding) { - var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resourceName, -1); - asyncId = asyncContext.asyncId; - triggerAsyncId = asyncContext.triggerAsyncId; - } - var id = emnapiAWST.idGen.generate(); - emnapiAWST.values[id] = { - env: env, - id: id, - resource: resource, - asyncId: asyncId, - triggerAsyncId: triggerAsyncId, - status: 0, - execute: execute, - complete: complete, - data: data - }; - return id; - }, - callComplete: function (work, status) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var complete = work.complete; - var env = work.env; - var data = work.data; - var callback = function () { - if (!complete) - return; - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - try { - envObject.callbackIntoModule(true, function () { - (wasmTable.get(complete))(env, status, data); - }); - } - finally { - emnapiCtx.closeScope(envObject, scope); - } - }; - if (emnapiNodeBinding) { - emnapiNodeBinding.node.makeCallback(work.resource, callback, [], { - asyncId: work.asyncId, - triggerAsyncId: work.triggerAsyncId - }); - } - else { - callback(); - } - }, - queue: function (id) { - var work = emnapiAWST.values[id]; - if (!work) - return; - if (work.status === 0) { - work.status = 1; - if (emnapiAWST.queued.size >= (Math.abs(emnapiAsyncWorkPoolSize) || 4)) { - emnapiAWST.pending.push(id); - return; - } - emnapiAWST.queued.add(id); - var env_1 = work.env; - var data_1 = work.data; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var execute = work.execute; - work.status = 2; - emnapiCtx.feature.setImmediate(function () { - (wasmTable.get(execute))(env_1, data_1); - emnapiAWST.queued.delete(id); - work.status = 3; - emnapiCtx.feature.setImmediate(function () { - emnapiAWST.callComplete(work, 0 /* napi_status.napi_ok */); - }); - if (emnapiAWST.pending.length > 0) { - var nextWorkId = emnapiAWST.pending.shift(); - emnapiAWST.values[nextWorkId].status = 0; - emnapiAWST.queue(nextWorkId); - } - }); - } - }, - cancel: function (id) { - var index = emnapiAWST.pending.indexOf(id); - if (index !== -1) { - var work_1 = emnapiAWST.values[id]; - if (work_1 && (work_1.status === 1)) { - work_1.status = 4; - emnapiAWST.pending.splice(index, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiAWST.callComplete(work_1, 11 /* napi_status.napi_cancelled */); - }); - return 0 /* napi_status.napi_ok */; - } - else { - return 9 /* napi_status.napi_generic_failure */; - } - } - return 9 /* napi_status.napi_generic_failure */; - }, - remove: function (id) { - var work = emnapiAWST.values[id]; - if (!work) - return; - if (emnapiNodeBinding) { - emnapiNodeBinding.node.emitAsyncDestroy({ - asyncId: work.asyncId, - triggerAsyncId: work.triggerAsyncId - }); - } - emnapiAWST.values[id] = undefined; - emnapiAWST.idGen.reuse(id); - } - }; - /** @__sig vppdp */ - function _emnapi_node_emit_async_init(async_resource, async_resource_name, trigger_async_id, result) { - if (!emnapiNodeBinding) - return; - var resource = emnapiCtx.handleStore.get(async_resource).value; - var resource_name = emnapiCtx.handleStore.get(async_resource_name).value; - var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resource_name, trigger_async_id); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var asyncId = asyncContext.asyncId; - var triggerAsyncId = asyncContext.triggerAsyncId; - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setFloat64(result, asyncId, true); - HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true); - } - } - /** @__sig vdd */ - function _emnapi_node_emit_async_destroy(async_id, trigger_async_id) { - if (!emnapiNodeBinding) - return; - emnapiNodeBinding.node.emitAsyncDestroy({ - asyncId: async_id, - triggerAsyncId: trigger_async_id - }); - } - /* vpddp export function _emnapi_node_open_callback_scope (async_resource: napi_value, async_id: double, trigger_async_id: double, result: Pointer): void { - if (!emnapiNodeBinding || !result) return - const resource = emnapiCtx.handleStore.get(async_resource)!.value - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const nativeCallbackScopePointer = emnapiNodeBinding.node.openCallbackScope(resource, { - asyncId: async_id, - triggerAsyncId: trigger_async_id - }) - - from64('result') - $_TODO_makeSetValue('result', 0, 'nativeCallbackScopePointer', 'i64') - } - - vp - export function _emnapi_node_close_callback_scope (scope: Pointer): void { - if (!emnapiNodeBinding || !scope) return - from64('scope') - const nativeCallbackScopePointer = $_TODO_makeGetValue('scope', 0, 'i64') - emnapiNodeBinding.node.closeCallbackScope(BigInt(nativeCallbackScopePointer)) - } */ - /** @__sig ipppppddp */ - function _emnapi_node_make_callback(env, async_resource, cb, argv, size, async_id, trigger_async_id, result) { - var i = 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!emnapiNodeBinding) - return; - var resource = emnapiCtx.handleStore.get(async_resource).value; - var callback = emnapiCtx.handleStore.get(cb).value; - size = size >>> 0; - var arr = Array(size); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (; i < size; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - arr[i] = emnapiCtx.handleStore.get(argVal).value; - } - var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, { - asyncId: async_id, - triggerAsyncId: trigger_async_id - }); - if (result) { - var envObject = emnapiCtx.envStore.get(env); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - } - /** @__sig ippp */ - function _emnapi_async_init_js(async_resource, async_resource_name, result) { - if (!emnapiNodeBinding) { - return 9 /* napi_status.napi_generic_failure */; - } - var resource; - if (async_resource) { - resource = Object(emnapiCtx.handleStore.get(async_resource).value); - } - var name = emnapiCtx.handleStore.get(async_resource_name).value; - var ret = emnapiNodeBinding.napi.asyncInit(resource, name); - if (ret.status !== 0) - return ret.status; - var numberValue = ret.value; - if (!((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63))))) { - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - if (numberValue >= (BigInt(1) << BigInt(63))) { - numberValue = numberValue - (BigInt(1) << BigInt(64)); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var low = Number(numberValue & BigInt(0xffffffff)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var high = Number(numberValue >> BigInt(32)); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, low, true); - HEAP_DATA_VIEW.setInt32(result + 4, high, true); - return 0 /* napi_status.napi_ok */; - } - /** @__sig ip */ - function _emnapi_async_destroy_js(async_context) { - if (!emnapiNodeBinding) { - return 9 /* napi_status.napi_generic_failure */; - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var low = HEAP_DATA_VIEW.getInt32(async_context, true); - var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); - var pointer = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); - var ret = emnapiNodeBinding.napi.asyncDestroy(pointer); - if (ret.status !== 0) - return ret.status; - return 0 /* napi_status.napi_ok */; - } - // https://github.com/nodejs/node-addon-api/pull/1283 - /** @__sig ipppp */ - function napi_open_callback_scope(env, ignored, async_context_handle, result) { - throw new Error('napi_open_callback_scope has not been implemented yet'); - } - /** @__sig ipp */ - function napi_close_callback_scope(env, scope) { - throw new Error('napi_close_callback_scope has not been implemented yet'); - } - /** @__sig ippppppp */ - function napi_make_callback(env, async_context, recv, func, argc, argv, result) { - var i = 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!emnapiNodeBinding) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!recv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (argc > 0) { - if (!argv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v8recv = Object(emnapiCtx.handleStore.get(recv).value); - var v8func = emnapiCtx.handleStore.get(func).value; - if (typeof v8func !== 'function') { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var low = HEAP_DATA_VIEW.getInt32(async_context, true); - var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); - var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); - argc = argc >>> 0; - var arr = Array(argc); - for (; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - arr[i] = emnapiCtx.handleStore.get(argVal).value; - } - var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr); - if (ret.error) { - throw ret.error; - } - if (ret.status !== 0 /* napi_status.napi_ok */) - return envObject.setLastError(ret.status); - if (result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = envObject.ensureHandleId(ret.value); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig vp */ - function _emnapi_env_check_gc_access(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - } - var nodeMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - _emnapi_async_destroy_js: _emnapi_async_destroy_js, - _emnapi_async_init_js: _emnapi_async_init_js, - _emnapi_env_check_gc_access: _emnapi_env_check_gc_access, - _emnapi_node_emit_async_destroy: _emnapi_node_emit_async_destroy, - _emnapi_node_emit_async_init: _emnapi_node_emit_async_init, - _emnapi_node_make_callback: _emnapi_node_make_callback, - napi_close_callback_scope: napi_close_callback_scope, - napi_make_callback: napi_make_callback, - napi_open_callback_scope: napi_open_callback_scope - }); - /** - * @__deps malloc - * @__deps free - * @__postset - * ``` - * emnapiTSFN.init(); - * ``` - */ - var emnapiTSFN = { - offset: { - /* napi_ref */ resource: 0, - /* double */ async_id: 8, - /* double */ trigger_async_id: 16, - /* size_t */ queue_size: 24, - /* void* */ queue: 1 * 4 + 24, - /* size_t */ thread_count: 2 * 4 + 24, - /* bool */ is_closing: 3 * 4 + 24, - /* atomic_uchar */ dispatch_state: 3 * 4 + 28, - /* void* */ context: 3 * 4 + 32, - /* size_t */ max_queue_size: 4 * 4 + 32, - /* napi_ref */ ref: 5 * 4 + 32, - /* napi_env */ env: 6 * 4 + 32, - /* void* */ finalize_data: 7 * 4 + 32, - /* napi_finalize */ finalize_cb: 8 * 4 + 32, - /* napi_threadsafe_function_call_js */ call_js_cb: 9 * 4 + 32, - /* bool */ handles_closing: 10 * 4 + 32, - /* bool */ async_ref: 10 * 4 + 36, - /* int32_t */ mutex: 10 * 4 + 40, - /* int32_t */ cond: 10 * 4 + 44, - end: 10 * 4 + 48 - }, - init: function () { - if (typeof PThread !== 'undefined') { - PThread.unusedWorkers.forEach(emnapiTSFN.addListener); - PThread.runningWorkers.forEach(emnapiTSFN.addListener); - var __original_getNewWorker_1 = PThread.getNewWorker; - PThread.getNewWorker = function () { - var r = __original_getNewWorker_1.apply(this, arguments); - emnapiTSFN.addListener(r); - return r; - }; - } - }, - addListener: function (worker) { - if (!worker) - return false; - if (worker._emnapiTSFNListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__) { - var type = __emnapi__.type; - var payload = __emnapi__.payload; - if (type === 'tsfn-send') { - emnapiTSFN.dispatch(payload.tsfn); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiTSFNListener; - }; - worker._emnapiTSFNListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; - }, - initQueue: function (func) { - var size = 2 * 4; - var queue = _malloc(size); - if (!queue) - return false; - new Uint8Array(wasmMemory.buffer, queue, size).fill(0); - emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false); - return true; - }, - destroyQueue: function (func) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - if (queue) { - _free(queue); - } - }, - pushQueue: function (func, data) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - var head = emnapiTSFN.loadSizeTypeValue(queue, false); - var tail = emnapiTSFN.loadSizeTypeValue(queue + 4, false); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var size = 2 * 4; - var node = _malloc(size); - if (!node) - throw new Error('OOM'); - emnapiTSFN.storeSizeTypeValue(node, data, false); - emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); - if (head === 0 && tail === 0) { - emnapiTSFN.storeSizeTypeValue(queue, node, false); - emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); - } - else { - emnapiTSFN.storeSizeTypeValue(tail + 4, node, false); - emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); - } - emnapiTSFN.addQueueSize(func); - }, - shiftQueue: function (func) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - var head = emnapiTSFN.loadSizeTypeValue(queue, false); - if (head === 0) - return 0; - var node = head; - var next = emnapiTSFN.loadSizeTypeValue(head + 4, false); - emnapiTSFN.storeSizeTypeValue(queue, next, false); - if (next === 0) { - emnapiTSFN.storeSizeTypeValue(queue + 4, 0, false); - } - emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); - var value = emnapiTSFN.loadSizeTypeValue(node, false); - _free(node); - emnapiTSFN.subQueueSize(func); - return value; - }, - push: function (func, data, mode) { - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - var waitCondition = function () { - var queueSize = emnapiTSFN.getQueueSize(func); - var maxSize = emnapiTSFN.getMaxQueueSize(func); - var isClosing = emnapiTSFN.getIsClosing(func); - return queueSize >= maxSize && maxSize > 0 && !isClosing; - }; - var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; - return mutex.execute(function () { - while (waitCondition()) { - if (mode === 0 /* napi_threadsafe_function_call_mode.napi_tsfn_nonblocking */) { - return 15 /* napi_status.napi_queue_full */; - } - /** - * Browser JS main thread can not use `Atomics.wait` - * - * Related: - * https://github.com/nodejs/node/pull/32689 - * https://github.com/nodejs/node/pull/33453 - */ - if (isBrowserMain) { - return 21 /* napi_status.napi_would_deadlock */; - } - cond.wait(); - } - if (emnapiTSFN.getIsClosing(func)) { - if (emnapiTSFN.getThreadCount(func) === 0) { - return 1 /* napi_status.napi_invalid_arg */; - } - else { - emnapiTSFN.subThreadCount(func); - return 16 /* napi_status.napi_closing */; - } - } - else { - emnapiTSFN.pushQueue(func, data); - emnapiTSFN.send(func); - return 0 /* napi_status.napi_ok */; - } - }); - }, - getMutex: function (func) { - var index = func + emnapiTSFN.offset.mutex; - var mutex = { - lock: function () { - var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - if (isBrowserMain) { - while (true) { - var oldValue = Atomics.compareExchange(i32a, 0, 0, 1); - if (oldValue === 0) { - return; - } - } - } - else { - while (true) { - var oldValue = Atomics.compareExchange(i32a, 0, 0, 1); - if (oldValue === 0) { - return; - } - Atomics.wait(i32a, 0, 1); - } - } - }, - /* lockAsync () { - return new Promise(resolve => { - const again = (): void => { fn() } - const fn = (): void => { - const i32a = new Int32Array(wasmMemory.buffer, index, 1) - const oldValue = Atomics.compareExchange(i32a, 0, 0, 1) - if (oldValue === 0) { - resolve() - return - } - (Atomics as any).waitAsync(i32a, 0, 1).value.then(again) - } - fn() - }) - }, */ - unlock: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - var oldValue = Atomics.compareExchange(i32a, 0, 1, 0); - if (oldValue !== 1) { - throw new Error('Tried to unlock while not holding the mutex'); - } - Atomics.notify(i32a, 0, 1); - }, - execute: function (fn) { - mutex.lock(); - try { - return fn(); - } - finally { - mutex.unlock(); - } - } /* , - executeAsync (fn: () => Promise): Promise { - return mutex.lockAsync().then(() => { - const r = fn() - mutex.unlock() - return r - }, (err) => { - mutex.unlock() - throw err - }) - } */ - }; - return mutex; - }, - getCond: function (func) { - var index = func + emnapiTSFN.offset.cond; - var mutex = emnapiTSFN.getMutex(func); - var cond = { - wait: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - var value = Atomics.load(i32a, 0); - mutex.unlock(); - Atomics.wait(i32a, 0, value); - mutex.lock(); - }, - /* waitAsync () { - const i32a = new Int32Array(wasmMemory.buffer, index, 1) - const value = Atomics.load(i32a, 0) - mutex.unlock() - const lock = (): Promise => mutex.lockAsync() - try { - return (Atomics as any).waitAsync(i32a, 0, value).value.then(lock, lock) - } catch (err) { - return lock() - } - }, */ - signal: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - Atomics.add(i32a, 0, 1); - Atomics.notify(i32a, 0, 1); - } - }; - return cond; - }, - getQueueSize: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue_size, true); - }, - addQueueSize: function (func) { - var offset = emnapiTSFN.offset.queue_size; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.add(arr, index, 1); - }, - subQueueSize: function (func) { - var offset = emnapiTSFN.offset.queue_size; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.sub(arr, index, 1); - }, - getThreadCount: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.thread_count, true); - }, - addThreadCount: function (func) { - var offset = emnapiTSFN.offset.thread_count; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.add(arr, index, 1); - }, - subThreadCount: function (func) { - var offset = emnapiTSFN.offset.thread_count; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.sub(arr, index, 1); - }, - getIsClosing: function (func) { - return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2); - }, - setIsClosing: function (func, value) { - Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value); - }, - getHandlesClosing: function (func) { - return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2); - }, - setHandlesClosing: function (func, value) { - Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value); - }, - getDispatchState: function (func) { - return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2); - }, - getContext: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false); - }, - getMaxQueueSize: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.max_queue_size, true); - }, - getEnv: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.env, false); - }, - getCallJSCb: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.call_js_cb, false); - }, - getRef: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.ref, false); - }, - getResource: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.resource, false); - }, - getFinalizeCb: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_cb, false); - }, - getFinalizeData: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_data, false); - }, - loadSizeTypeValue: function (offset, unsigned) { - var ret; - var arr; - if (unsigned) { - arr = new Uint32Array(wasmMemory.buffer); - ret = Atomics.load(arr, offset >> 2); - return ret; - } - else { - arr = new Int32Array(wasmMemory.buffer); - ret = Atomics.load(arr, offset >> 2); - return ret; - } - }, - storeSizeTypeValue: function (offset, value, unsigned) { - var arr; - if (unsigned) { - arr = new Uint32Array(wasmMemory.buffer); - Atomics.store(arr, offset >> 2, value); - return undefined; - } - else { - arr = new Int32Array(wasmMemory.buffer); - Atomics.store(arr, offset >> 2, value >>> 0); - return undefined; - } - }, - destroy: function (func) { - emnapiTSFN.destroyQueue(func); - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - var ref = emnapiTSFN.getRef(func); - if (ref) { - emnapiCtx.refStore.get(ref).dispose(); - } - emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func); - envObject.unref(); - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 0); - emnapiCtx.decreaseWaitingRequestCounter(); - } - var resource = emnapiTSFN.getResource(func); - emnapiCtx.refStore.get(resource).dispose(); - if (emnapiNodeBinding) { - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); - var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); - _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); - } - _free(func); - }, - emptyQueueAndDelete: function (func) { - var callJsCb = emnapiTSFN.getCallJSCb(func); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var context = emnapiTSFN.getContext(func); - var data; - while (emnapiTSFN.getQueueSize(func) > 0) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - data = emnapiTSFN.shiftQueue(func); - if (callJsCb) { - (wasmTable.get(callJsCb))(0, 0, context, data); - } - } - emnapiTSFN.destroy(func); - }, - finalize: function (func) { - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject); - var finalize = emnapiTSFN.getFinalizeCb(func); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var data = emnapiTSFN.getFinalizeData(func); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var context = emnapiTSFN.getContext(func); - var f = function () { - envObject.callFinalizerInternal(0, finalize, data, context); - }; - try { - if (finalize) { - if (emnapiNodeBinding) { - var resource = emnapiTSFN.getResource(func); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); - var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); - emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { - asyncId: asyncId, - triggerAsyncId: triggerAsyncId - }); - } - else { - f(); - } - } - emnapiTSFN.emptyQueueAndDelete(func); - } - finally { - emnapiCtx.closeScope(envObject); - } - }, - cleanup: function (func) { - emnapiTSFN.closeHandlesAndMaybeDelete(func, 1); - }, - closeHandlesAndMaybeDelete: function (func, set_closing) { - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject); - try { - if (set_closing) { - emnapiTSFN.getMutex(func).execute(function () { - emnapiTSFN.setIsClosing(func, 1); - if (emnapiTSFN.getMaxQueueSize(func) > 0) { - emnapiTSFN.getCond(func).signal(); - } - }); - } - if (emnapiTSFN.getHandlesClosing(func)) { - return; - } - emnapiTSFN.setHandlesClosing(func, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiTSFN.finalize(func); - }); - } - finally { - emnapiCtx.closeScope(envObject); - } - }, - dispatchOne: function (func) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var data = 0; - var popped_value = false; - var has_more = false; - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - mutex.execute(function () { - if (emnapiTSFN.getIsClosing(func)) { - emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); - } - else { - var size = emnapiTSFN.getQueueSize(func); - if (size > 0) { - data = emnapiTSFN.shiftQueue(func); - popped_value = true; - var maxQueueSize = emnapiTSFN.getMaxQueueSize(func); - if (size === maxQueueSize && maxQueueSize > 0) { - cond.signal(); - } - size--; - } - if (size === 0) { - if (emnapiTSFN.getThreadCount(func) === 0) { - emnapiTSFN.setIsClosing(func, 1); - if (emnapiTSFN.getMaxQueueSize(func) > 0) { - cond.signal(); - } - emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); - } - } - else { - has_more = true; - } - } - }); - if (popped_value) { - var env = emnapiTSFN.getEnv(func); - var envObject_1 = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject_1); - var f = function () { - envObject_1.callbackIntoModule(false, function () { - var callJsCb = emnapiTSFN.getCallJSCb(func); - var ref = emnapiTSFN.getRef(func); - var js_callback = ref ? emnapiCtx.refStore.get(ref).get() : 0; - if (callJsCb) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var context = emnapiTSFN.getContext(func); - (wasmTable.get(callJsCb))(env, js_callback, context, data); - } - else { - var jsCallback = js_callback ? emnapiCtx.handleStore.get(js_callback).value : null; - if (typeof jsCallback === 'function') { - jsCallback(); - } - } - }); - }; - try { - if (emnapiNodeBinding) { - var resource = emnapiTSFN.getResource(func); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { - asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true), - triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true) - }); - } - else { - f(); - } - } - finally { - emnapiCtx.closeScope(envObject_1); - } - } - return has_more; - }, - dispatch: function (func) { - var has_more = true; - var iterations_left = 1000; - var ui32a = new Uint32Array(wasmMemory.buffer); - var index = (func + emnapiTSFN.offset.dispatch_state) >> 2; - while (has_more && --iterations_left !== 0) { - Atomics.store(ui32a, index, 1); - has_more = emnapiTSFN.dispatchOne(func); - if (Atomics.exchange(ui32a, index, 0) !== 1) { - has_more = true; - } - } - if (has_more) { - emnapiTSFN.send(func); - } - }, - send: function (func) { - var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1); - if ((current_state & 1) === 1) { - return; - } - if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) { - postMessage({ - __emnapi__: { - type: 'tsfn-send', - payload: { - tsfn: func - } - } - }); - } - else { - emnapiCtx.feature.setImmediate(function () { - emnapiTSFN.dispatch(func); - }); - } - } - }; - /** @__sig ippppppppppp */ - function napi_create_threadsafe_function(env, func, async_resource, async_resource_name, max_queue_size, initial_thread_count, thread_finalize_data, thread_finalize_cb, context, call_js_cb, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!async_resource_name) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - max_queue_size = max_queue_size >>> 0; - initial_thread_count = initial_thread_count >>> 0; - if (initial_thread_count === 0) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var ref = 0; - if (!func) { - if (!call_js_cb) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - else { - var funcValue = emnapiCtx.handleStore.get(func).value; - if (typeof funcValue !== 'function') { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - ref = emnapiCtx.createReference(envObject, func, 1, 1 /* ReferenceOwnership.kUserland */).id; - } - var asyncResourceObject; - if (async_resource) { - asyncResourceObject = emnapiCtx.handleStore.get(async_resource).value; - if (asyncResourceObject == null) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - asyncResourceObject = Object(asyncResourceObject); - } - else { - asyncResourceObject = {}; - } - var resource = envObject.ensureHandleId(asyncResourceObject); - var asyncResourceName = emnapiCtx.handleStore.get(async_resource_name).value; - if (typeof asyncResourceName === 'symbol') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - asyncResourceName = String(asyncResourceName); - var resource_name = envObject.ensureHandleId(asyncResourceName); - // tsfn create - var sizeofTSFN = emnapiTSFN.offset.end; - var tsfn = _malloc(sizeofTSFN); - if (!tsfn) - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0); - var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* ReferenceOwnership.kUserland */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var resource_ = resourceRef.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(tsfn, resource_, true); - if (!emnapiTSFN.initQueue(tsfn)) { - _free(tsfn); - resourceRef.dispose(); - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true); - emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn); - envObject.ref(); - emnapiCtx.increaseWaitingRequestCounter(); - HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true); - HEAP_DATA_VIEW.setUint32(result, tsfn, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_get_threadsafe_function_context(func, result) { - if (!func || !result) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var context = emnapiTSFN.getContext(func); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, context, true); - return 0 /* napi_status.napi_ok */; - } - /** @__sig ippi */ - function napi_call_threadsafe_function(func, data, mode) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - return emnapiTSFN.push(func, data, mode); - } - /** @__sig ip */ - function napi_acquire_threadsafe_function(func) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - var mutex = emnapiTSFN.getMutex(func); - return mutex.execute(function () { - if (emnapiTSFN.getIsClosing(func)) { - return 16 /* napi_status.napi_closing */; - } - emnapiTSFN.addThreadCount(func); - return 0 /* napi_status.napi_ok */; - }); - } - /** @__sig ipi */ - function napi_release_threadsafe_function(func, mode) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - return mutex.execute(function () { - if (emnapiTSFN.getThreadCount(func) === 0) { - return 1 /* napi_status.napi_invalid_arg */; - } - emnapiTSFN.subThreadCount(func); - if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) { - var isClosing = emnapiTSFN.getIsClosing(func); - if (!isClosing) { - var isClosingValue = (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) ? 1 : 0; - emnapiTSFN.setIsClosing(func, isClosingValue); - if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) { - cond.signal(); - } - emnapiTSFN.send(func); - } - } - return 0 /* napi_status.napi_ok */; - }); - } - /** @__sig ipp */ - function napi_unref_threadsafe_function(env, func) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 0); - emnapiCtx.decreaseWaitingRequestCounter(); - } - return 0 /* napi_status.napi_ok */; - } - /** @__sig ipp */ - function napi_ref_threadsafe_function(env, func) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (!Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 1); - emnapiCtx.increaseWaitingRequestCounter(); - } - return 0 /* napi_status.napi_ok */; - } - var emnapiAWMT = { - unusedWorkers: [], - runningWorkers: [], - workQueue: [], - workerReady: null, - offset: { - /* napi_ref */ resource: 0, - /* double */ async_id: 8, - /* double */ trigger_async_id: 16, - /* napi_env */ env: 24, - /* void* */ data: 1 * 4 + 24, - /* napi_async_execute_callback */ execute: 2 * 4 + 24, - /* napi_async_complete_callback */ complete: 3 * 4 + 24, - end: 4 * 4 + 24 - }, - init: function () { - emnapiAWMT.unusedWorkers = []; - emnapiAWMT.runningWorkers = []; - emnapiAWMT.workQueue = []; - emnapiAWMT.workerReady = null; - }, - addListener: function (worker) { - if (!worker) - return false; - if (worker._emnapiAWMTListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__) { - var type = __emnapi__.type; - var payload = __emnapi__.payload; - if (type === 'async-work-complete') { - emnapiCtx.decreaseWaitingRequestCounter(); - emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1); - emnapiAWMT.unusedWorkers.push(worker); - emnapiAWMT.checkIdleWorker(); - emnapiAWMT.callComplete(payload.work, 0 /* napi_status.napi_ok */); - } - else if (type === 'async-work-queue') { - emnapiAWMT.scheduleWork(payload.work); - } - else if (type === 'async-work-cancel') { - emnapiAWMT.cancelWork(payload.work); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiAWMTListener; - }; - worker._emnapiAWMTListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; - }, - initWorkers: function (n) { - if (ENVIRONMENT_IS_PTHREAD) { - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve()); - } - if (emnapiAWMT.workerReady) - return emnapiAWMT.workerReady; - if (typeof onCreateWorker !== 'function') { - throw new TypeError('`options.onCreateWorker` is not a function'); - } - var promises = []; - var args = []; - if (!('emnapi_async_worker_create' in wasmInstance.exports)) { - throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags'); - } - for (var i = 0; i < n; ++i) { - args.push(wasmInstance.exports.emnapi_async_worker_create()); - } - try { - var _loop_1 = function (i) { - var worker = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' }); - var p = PThread.loadWasmModuleToWorker(worker); - emnapiAWMT.addListener(worker); - promises.push(p.then(function () { - if (typeof worker.unref === 'function') { - worker.unref(); - } - })); - emnapiAWMT.unusedWorkers.push(worker); - var arg = args[i]; - worker.threadBlockBase = arg; - worker.postMessage({ - __emnapi__: { - type: 'async-worker-init', - payload: { arg: arg } - } - }); - }; - for (var i = 0; i < n; ++i) { - _loop_1(i); - } - } - catch (err) { - for (var i = 0; i < n; ++i) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var arg = args[i]; - _free(arg); - } - throw err; - } - emnapiAWMT.workerReady = Promise.all(promises); - return emnapiAWMT.workerReady; - }, - checkIdleWorker: function () { - if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) { - var worker = emnapiAWMT.unusedWorkers.shift(); - var work = emnapiAWMT.workQueue.shift(); - emnapiAWMT.runningWorkers.push(worker); - worker.postMessage({ - __emnapi__: { - type: 'async-work-execute', - payload: { work: work } - } - }); - } - }, - getResource: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.resource, false); - }, - getExecute: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.execute, false); - }, - getComplete: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.complete, false); - }, - getEnv: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.env, false); - }, - getData: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.data, false); - }, - scheduleWork: function (work) { - var _a; - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_1 = napiModule.postMessage; - postMessage_1({ - __emnapi__: { - type: 'async-work-queue', - payload: { work: work } - } - }); - return; - } - emnapiCtx.increaseWaitingRequestCounter(); - emnapiAWMT.workQueue.push(work); - if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) { - emnapiAWMT.checkIdleWorker(); - } - else { - var fail = function (err) { - emnapiCtx.decreaseWaitingRequestCounter(); - throw err; - }; - try { - emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () { - emnapiAWMT.workerReady.ready = true; - emnapiAWMT.checkIdleWorker(); - }, fail); - } - catch (err) { - fail(err); - } - } - }, - cancelWork: function (work) { - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_2 = napiModule.postMessage; - postMessage_2({ - __emnapi__: { - type: 'async-work-cancel', - payload: { work: work } - } - }); - return 0 /* napi_status.napi_ok */; - } - var index = emnapiAWMT.workQueue.indexOf(work); - if (index !== -1) { - emnapiAWMT.workQueue.splice(index, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiCtx.decreaseWaitingRequestCounter(); - emnapiAWMT.checkIdleWorker(); - emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */); - }); - return 0 /* napi_status.napi_ok */; - } - return 9 /* napi_status.napi_generic_failure */; - }, - callComplete: function (work, status) { - var complete = emnapiAWMT.getComplete(work); - var env = emnapiAWMT.getEnv(work); - var data = emnapiAWMT.getData(work); - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - var callback = function () { - if (!complete) - return; - envObject.callbackIntoModule(true, function () { - (wasmTable.get(complete))(env, status, data); - }); - }; - try { - if (emnapiNodeBinding) { - var resource = emnapiAWMT.getResource(work); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); - var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); - emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], { - asyncId: asyncId, - triggerAsyncId: triggerAsyncId - }); - } - else { - callback(); - } - } - finally { - emnapiCtx.closeScope(envObject, scope); - } - } - }; - /** @__sig ippppppp */ - var napi_create_async_work = singleThreadAsyncWork - ? function (env, resource, resource_name, execute, complete, data, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!execute) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var resourceObject; - if (resource) { - resourceObject = Object(emnapiCtx.handleStore.get(resource).value); - } - else { - resourceObject = {}; - } - if (!resource_name) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var resourceName = String(emnapiCtx.handleStore.get(resource_name).value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, id, true); - return envObject.clearLastError(); - } - : function (env, resource, resource_name, execute, complete, data, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!execute) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var resourceObject; - if (resource) { - resourceObject = Object(emnapiCtx.handleStore.get(resource).value); - } - else { - resourceObject = {}; - } - if (!resource_name) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var sizeofAW = emnapiAWMT.offset.end; - var aw = _malloc(sizeofAW); - if (!aw) - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0); - var s = envObject.ensureHandleId(resourceObject); - var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1 /* ReferenceOwnership.kUserland */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var resource_ = resourceRef.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(aw, resource_, true); - _emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true); - HEAP_DATA_VIEW.setUint32(result, aw, true); - return envObject.clearLastError(); - }; - /** @__sig ipp */ - var napi_delete_async_work = singleThreadAsyncWork - ? function (env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiAWST.remove(work); - return envObject.clearLastError(); - } - : function (env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var resource = emnapiAWMT.getResource(work); - emnapiCtx.refStore.get(resource).dispose(); - if (emnapiNodeBinding) { - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); - var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); - _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); - } - _free(work); - return envObject.clearLastError(); - }; - /** @__sig ipp */ - var napi_queue_async_work = singleThreadAsyncWork - ? function (env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiAWST.queue(work); - return envObject.clearLastError(); - } - : function (env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiAWMT.scheduleWork(work); - return envObject.clearLastError(); - }; - /** @__sig ipp */ - var napi_cancel_async_work = singleThreadAsyncWork - ? function (env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var status = emnapiAWST.cancel(work); - if (status === 0 /* napi_status.napi_ok */) - return envObject.clearLastError(); - return envObject.setLastError(status); - } - : function (env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var status = emnapiAWMT.cancelWork(work); - if (status === 0 /* napi_status.napi_ok */) - return envObject.clearLastError(); - return envObject.setLastError(status); - }; - function initWorker(startArg) { - if (napiModule.childThread) { - if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') { - throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags'); - } - wasmInstance.exports.emnapi_async_worker_init(startArg); - } - else { - throw new Error('startThread is only available in child threads'); - } - } - function executeAsyncWork(work) { - if (!ENVIRONMENT_IS_PTHREAD) - return; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var execute = emnapiAWMT.getExecute(work); - var env = emnapiAWMT.getEnv(work); - var data = emnapiAWMT.getData(work); - (wasmTable.get(execute))(env, data); - var postMessage = napiModule.postMessage; - postMessage({ - __emnapi__: { - type: 'async-work-complete', - payload: { work: work } - } - }); - } - napiModule.initWorker = initWorker; - napiModule.executeAsyncWork = executeAsyncWork; - var asyncWorkMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_cancel_async_work: napi_cancel_async_work, - napi_create_async_work: napi_create_async_work, - napi_delete_async_work: napi_delete_async_work, - napi_queue_async_work: napi_queue_async_work - }); - /** - * @__deps malloc - * @__deps free - * @__postset - * ``` - * emnapiExternalMemory.init(); - * ``` - */ - var emnapiExternalMemory = { - registry: typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined, - table: new WeakMap(), - wasmMemoryViewTable: new WeakMap(), - init: function () { - emnapiExternalMemory.registry = typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined; - emnapiExternalMemory.table = new WeakMap(); - emnapiExternalMemory.wasmMemoryViewTable = new WeakMap(); - }, - isSharedArrayBuffer: function (value) { - return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); - }, - isDetachedArrayBuffer: function (arrayBuffer) { - if (arrayBuffer.byteLength === 0) { - try { - // eslint-disable-next-line no-new - new Uint8Array(arrayBuffer); - } - catch (_) { - return true; - } - } - return false; - }, - getArrayBufferPointer: function (arrayBuffer, shouldCopy) { - var _a; - var info = { - address: 0, - ownership: 0 /* ReferenceOwnership.kRuntime */, - runtimeAllocated: 0 - }; - if (arrayBuffer === wasmMemory.buffer) { - return info; - } - var isDetached = emnapiExternalMemory.isDetachedArrayBuffer(arrayBuffer); - if (emnapiExternalMemory.table.has(arrayBuffer)) { - var cachedInfo = emnapiExternalMemory.table.get(arrayBuffer); - if (isDetached) { - cachedInfo.address = 0; - return cachedInfo; - } - if (shouldCopy && cachedInfo.ownership === 0 /* ReferenceOwnership.kRuntime */ && cachedInfo.runtimeAllocated === 1) { - new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), cachedInfo.address); - } - return cachedInfo; - } - if (isDetached || (arrayBuffer.byteLength === 0)) { - return info; - } - if (!shouldCopy) { - return info; - } - var pointer = _malloc(arrayBuffer.byteLength); - if (!pointer) - throw new Error('Out of memory'); - new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer); - info.address = pointer; - info.ownership = emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */; - info.runtimeAllocated = 1; - emnapiExternalMemory.table.set(arrayBuffer, info); - (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(arrayBuffer, pointer); - return info; - }, - getOrUpdateMemoryView: function (view) { - if (view.buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - emnapiExternalMemory.wasmMemoryViewTable.set(view, { - Ctor: view.constructor, - address: view.byteOffset, - length: view instanceof DataView ? view.byteLength : view.length, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - return view; - } - var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || - ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer)); - if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - var info = emnapiExternalMemory.wasmMemoryViewTable.get(view); - var Ctor = info.Ctor; - var newView = void 0; - var Buffer_1 = emnapiCtx.feature.Buffer; - if (typeof Buffer_1 === 'function' && Ctor === Buffer_1) { - newView = Buffer_1.from(wasmMemory.buffer, info.address, info.length); - } - else { - newView = new Ctor(wasmMemory.buffer, info.address, info.length); - } - emnapiExternalMemory.wasmMemoryViewTable.set(newView, info); - return newView; - } - return view; - }, - getViewPointer: function (view, shouldCopy) { - view = emnapiExternalMemory.getOrUpdateMemoryView(view); - if (view.buffer === wasmMemory.buffer) { - if (emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - var _a = emnapiExternalMemory.wasmMemoryViewTable.get(view), address_1 = _a.address, ownership_1 = _a.ownership, runtimeAllocated_1 = _a.runtimeAllocated; - return { address: address_1, ownership: ownership_1, runtimeAllocated: runtimeAllocated_1, view: view }; - } - return { address: view.byteOffset, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0, view: view }; - } - var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated; - return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view }; - } - }; - /* eslint-disable @typescript-eslint/indent */ - /** - * @__postset - * ``` - * emnapiString.init(); - * ``` - */ - var emnapiString = { - utf8Decoder: undefined, - utf16Decoder: undefined, - init: function () { - var fallbackDecoder = { - decode: function (bytes) { - var inputIndex = 0; - var pendingSize = Math.min(0x1000, bytes.length + 1); - var pending = new Uint16Array(pendingSize); - var chunks = []; - var pendingIndex = 0; - for (;;) { - var more = inputIndex < bytes.length; - if (!more || (pendingIndex >= pendingSize - 1)) { - var subarray = pending.subarray(0, pendingIndex); - var arraylike = subarray; - chunks.push(String.fromCharCode.apply(null, arraylike)); - if (!more) { - return chunks.join(''); - } - bytes = bytes.subarray(inputIndex); - inputIndex = 0; - pendingIndex = 0; - } - var byte1 = bytes[inputIndex++]; - if ((byte1 & 0x80) === 0) { - pending[pendingIndex++] = byte1; - } - else if ((byte1 & 0xe0) === 0xc0) { - var byte2 = bytes[inputIndex++] & 0x3f; - pending[pendingIndex++] = ((byte1 & 0x1f) << 6) | byte2; - } - else if ((byte1 & 0xf0) === 0xe0) { - var byte2 = bytes[inputIndex++] & 0x3f; - var byte3 = bytes[inputIndex++] & 0x3f; - pending[pendingIndex++] = ((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3; - } - else if ((byte1 & 0xf8) === 0xf0) { - var byte2 = bytes[inputIndex++] & 0x3f; - var byte3 = bytes[inputIndex++] & 0x3f; - var byte4 = bytes[inputIndex++] & 0x3f; - var codepoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4; - if (codepoint > 0xffff) { - codepoint -= 0x10000; - pending[pendingIndex++] = (codepoint >>> 10) & 0x3ff | 0xd800; - codepoint = 0xdc00 | codepoint & 0x3ff; - } - pending[pendingIndex++] = codepoint; - } - else ; - } - } - }; - var utf8Decoder; - utf8Decoder = typeof TextDecoder === 'function' ? new TextDecoder() : fallbackDecoder; - emnapiString.utf8Decoder = utf8Decoder; - var fallbackDecoder2 = { - decode: function (input) { - var bytes = new Uint16Array(input.buffer, input.byteOffset, input.byteLength / 2); - if (bytes.length <= 0x1000) { - return String.fromCharCode.apply(null, bytes); - } - var chunks = []; - var i = 0; - var len = 0; - for (; i < bytes.length; i += len) { - len = Math.min(0x1000, bytes.length - i); - chunks.push(String.fromCharCode.apply(null, bytes.subarray(i, i + len))); - } - return chunks.join(''); - } - }; - var utf16Decoder; - utf16Decoder = typeof TextDecoder === 'function' ? new TextDecoder('utf-16le') : fallbackDecoder2; - emnapiString.utf16Decoder = utf16Decoder; - }, - lengthBytesUTF8: function (str) { - var c; - var len = 0; - for (var i = 0; i < str.length; ++i) { - c = str.charCodeAt(i); - if (c <= 0x7F) { - len++; - } - else if (c <= 0x7FF) { - len += 2; - } - else if (c >= 0xD800 && c <= 0xDFFF) { - len += 4; - ++i; - } - else { - len += 3; - } - } - return len; - }, - UTF8ToString: function (ptr, length) { - if (!ptr || !length) - return ''; - ptr >>>= 0; - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - var end = ptr; - if (length === -1) { - for (; HEAPU8[end];) - ++end; - } - else { - end = ptr + (length >>> 0); - } - length = end - ptr; - if (length <= 16) { - var idx = ptr; - var str = ''; - while (idx < end) { - var u0 = HEAPU8[idx++]; - if (!(u0 & 0x80)) { - str += String.fromCharCode(u0); - continue; - } - var u1 = HEAPU8[idx++] & 63; - if ((u0 & 0xE0) === 0xC0) { - str += String.fromCharCode(((u0 & 31) << 6) | u1); - continue; - } - var u2 = HEAPU8[idx++] & 63; - if ((u0 & 0xF0) === 0xE0) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; - } - else { - u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (HEAPU8[idx++] & 63); - } - if (u0 < 0x10000) { - str += String.fromCharCode(u0); - } - else { - var ch = u0 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } - } - return str; - } - return emnapiString.utf8Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); - }, - stringToUTF8: function (str, outPtr, maxBytesToWrite) { - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - var outIdx = outPtr; - outIdx >>>= 0; - if (!(maxBytesToWrite > 0)) { - return 0; - } - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i); - if (u >= 0xD800 && u <= 0xDFFF) { - var u1 = str.charCodeAt(++i); - u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); - } - if (u <= 0x7F) { - if (outIdx >= endIdx) - break; - HEAPU8[outIdx++] = u; - } - else if (u <= 0x7FF) { - if (outIdx + 1 >= endIdx) - break; - HEAPU8[outIdx++] = 0xC0 | (u >> 6); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - else if (u <= 0xFFFF) { - if (outIdx + 2 >= endIdx) - break; - HEAPU8[outIdx++] = 0xE0 | (u >> 12); - HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - else { - if (outIdx + 3 >= endIdx) - break; - HEAPU8[outIdx++] = 0xF0 | (u >> 18); - HEAPU8[outIdx++] = 0x80 | ((u >> 12) & 63); - HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - } - HEAPU8[outIdx] = 0; - return outIdx - startIdx; - }, - UTF16ToString: function (ptr, length) { - if (!ptr || !length) - return ''; - ptr >>>= 0; - var end = ptr; - if (length === -1) { - var idx = end >> 1; - var HEAPU16 = new Uint16Array(wasmMemory.buffer); - while (HEAPU16[idx]) - ++idx; - end = idx << 1; - } - else { - end = ptr + (length >>> 0) * 2; - } - length = end - ptr; - if (length <= 32) { - return String.fromCharCode.apply(null, new Uint16Array(wasmMemory.buffer, ptr, length / 2)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - return emnapiString.utf16Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); - }, - stringToUTF16: function (str, outPtr, maxBytesToWrite) { - if (maxBytesToWrite === undefined) { - maxBytesToWrite = 0x7FFFFFFF; - } - if (maxBytesToWrite < 2) - return 0; - maxBytesToWrite -= 2; - var startPtr = outPtr; - var numCharsToWrite = (maxBytesToWrite < str.length * 2) ? (maxBytesToWrite / 2) : str.length; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < numCharsToWrite; ++i) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var codeUnit = str.charCodeAt(i); - HEAP_DATA_VIEW.setInt16(outPtr, codeUnit, true); - outPtr += 2; - } - HEAP_DATA_VIEW.setInt16(outPtr, 0, true); - return outPtr - startPtr; - }, - newString: function (env, str, length, result, stringMaker) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!str) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!(autoLength || (sizelength <= 2147483647))) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var strValue = stringMaker(str, autoLength, sizelength); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(strValue).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - }, - newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!str) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!(autoLength || (sizelength <= 2147483647))) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var status = createApi(env, str, length, result); - if (status === 0 /* napi_status.napi_ok */) { - if (copied) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(copied, 1, true); - } - if (finalize_callback) { - envObject.callFinalizer(finalize_callback, str, finalize_hint); - } - } - return status; - } - }; - /** - * @__sig ippp - */ - function napi_get_array_length(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isArray()) { - return envObject.setLastError(8 /* napi_status.napi_array_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = handle.value.length >>> 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppp - */ - function napi_get_arraybuffer_info(env, arraybuffer, data, byte_length) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (data) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address; - HEAP_DATA_VIEW.setUint32(data, p, true); - } - if (byte_length) { - HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function node_api_set_prototype(env, object, value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var obj = emnapiCtx.handleStore.get(object).value; - if (obj == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var type = typeof obj; - var v = void 0; - try { - v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - var val = emnapiCtx.handleStore.get(value).value; - Object.setPrototypeOf(v, val); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ippp - */ - function napi_get_prototype(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (handle.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = handle.isObject() || handle.isFunction() ? handle.value : Object(handle.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = envObject.ensureHandleId(Object.getPrototypeOf(v)); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, p, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ippppppp - */ - function napi_get_typedarray_info(env, typedarray, type, length, data, arraybuffer, byte_offset) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!typedarray) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(typedarray); - if (!handle.isTypedArray()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (type) { - var t = void 0; - if (v instanceof Int8Array) { - t = 0 /* napi_typedarray_type.napi_int8_array */; - } - else if (v instanceof Uint8Array) { - t = 1 /* napi_typedarray_type.napi_uint8_array */; - } - else if (v instanceof Uint8ClampedArray) { - t = 2 /* napi_typedarray_type.napi_uint8_clamped_array */; - } - else if (v instanceof Int16Array) { - t = 3 /* napi_typedarray_type.napi_int16_array */; - } - else if (v instanceof Uint16Array) { - t = 4 /* napi_typedarray_type.napi_uint16_array */; - } - else if (v instanceof Int32Array) { - t = 5 /* napi_typedarray_type.napi_int32_array */; - } - else if (v instanceof Uint32Array) { - t = 6 /* napi_typedarray_type.napi_uint32_array */; - } - else if (typeof Float16Array === 'function' && v instanceof Float16Array) { - t = 11 /* napi_typedarray_type.napi_float16_array */; - } - else if (v instanceof Float32Array) { - t = 7 /* napi_typedarray_type.napi_float32_array */; - } - else if (v instanceof Float64Array) { - t = 8 /* napi_typedarray_type.napi_float64_array */; - } - else if (v instanceof BigInt64Array) { - t = 9 /* napi_typedarray_type.napi_bigint64_array */; - } - else if (v instanceof BigUint64Array) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - t = 10 /* napi_typedarray_type.napi_biguint64_array */; - } - else { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - HEAP_DATA_VIEW.setInt32(type, t, true); - } - if (length) { - HEAP_DATA_VIEW.setUint32(length, v.length, true); - } - var buffer; - if (data || arraybuffer) { - buffer = v.buffer; - if (data) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = emnapiExternalMemory.getViewPointer(v, true).address; - HEAP_DATA_VIEW.setUint32(data, p, true); - } - if (arraybuffer) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var ab = envObject.ensureHandleId(buffer); - HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); - } - } - if (byte_offset) { - HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ipppp - */ - function napi_get_buffer_info(env, buffer, data, length) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!buffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(buffer); - if (!handle.isBuffer(emnapiCtx.feature.Buffer)) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (handle.isDataView()) { - return napi_get_dataview_info(env, buffer, length, data, 0, 0); - } - return napi_get_typedarray_info(env, buffer, 0, length, data, 0, 0); - } - /** - * @__sig ipppppp - */ - function napi_get_dataview_info(env, dataview, byte_length, data, arraybuffer, byte_offset) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!dataview) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(dataview); - if (!handle.isDataView()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (byte_length) { - HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true); - } - var buffer; - if (data || arraybuffer) { - buffer = v.buffer; - if (data) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = emnapiExternalMemory.getViewPointer(v, true).address; - HEAP_DATA_VIEW.setUint32(data, p, true); - } - if (arraybuffer) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var ab = envObject.ensureHandleId(buffer); - HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); - } - } - if (byte_offset) { - HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_get_date_value(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isDate()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - v = handle.value.valueOf(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setFloat64(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ippp - */ - function napi_get_value_bool(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'boolean') { - return envObject.setLastError(7 /* napi_status.napi_boolean_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = handle.value ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_get_value_double(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setFloat64(result, r, true); - return envObject.clearLastError(); - } - /** - * @__sig ipppp - */ - function napi_get_value_bigint_int64(env, value, result, lossless) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!lossless) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - var numberValue = handle.value; - if (typeof numberValue !== 'bigint') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) { - HEAP_DATA_VIEW.setInt8(lossless, 1, true); - } - else { - HEAP_DATA_VIEW.setInt8(lossless, 0, true); - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - if (numberValue >= (BigInt(1) << BigInt(63))) { - numberValue = numberValue - (BigInt(1) << BigInt(64)); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var low = Number(numberValue & BigInt(0xffffffff)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var high = Number(numberValue >> BigInt(32)); - HEAP_DATA_VIEW.setInt32(result, low, true); - HEAP_DATA_VIEW.setInt32(result + 4, high, true); - return envObject.clearLastError(); - } - /** - * @__sig ipppp - */ - function napi_get_value_bigint_uint64(env, value, result, lossless) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!lossless) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - var numberValue = handle.value; - if (typeof numberValue !== 'bigint') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) { - HEAP_DATA_VIEW.setInt8(lossless, 1, true); - } - else { - HEAP_DATA_VIEW.setInt8(lossless, 0, true); - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var low = Number(numberValue & BigInt(0xffffffff)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var high = Number(numberValue >> BigInt(32)); - HEAP_DATA_VIEW.setUint32(result, low, true); - HEAP_DATA_VIEW.setUint32(result + 4, high, true); - return envObject.clearLastError(); - } - /** - * @__sig ippppp - */ - function napi_get_value_bigint_words(env, value, sign_bit, word_count, words) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!word_count) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isBigInt()) { - return envObject.setLastError(17 /* napi_status.napi_bigint_expected */); - } - var isMinus = handle.value < BigInt(0); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true); - var wordCount = 0; - var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; - while (bigintValue !== BigInt(0)) { - wordCount++; - bigintValue = bigintValue >> BigInt(64); - } - bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; - if (!sign_bit && !words) { - word_count_int = wordCount; - HEAP_DATA_VIEW.setUint32(word_count, word_count_int, true); - } - else { - if (!sign_bit) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!words) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var wordsArr = []; - while (bigintValue !== BigInt(0)) { - var uint64 = bigintValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - wordsArr.push(uint64); - bigintValue = bigintValue >> BigInt(64); - } - var len = Math.min(word_count_int, wordsArr.length); - for (var i = 0; i < len; i++) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var low = Number(wordsArr[i] & BigInt(0xffffffff)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var high = Number(wordsArr[i] >> BigInt(32)); - HEAP_DATA_VIEW.setUint32(words + i * 8, low, true); - HEAP_DATA_VIEW.setUint32(words + (i * 8 + 4), high, true); - } - HEAP_DATA_VIEW.setInt32(sign_bit, isMinus ? 1 : 0, true); - HEAP_DATA_VIEW.setUint32(word_count, len, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_get_value_external(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isExternal()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = handle.data(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, p, true); - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_get_value_int32(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = new Int32Array([handle.value])[0]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, v, true); - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_get_value_int64(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - var numberValue = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) { - HEAP_DATA_VIEW.setInt32(result, 0, true); - HEAP_DATA_VIEW.setInt32(result + 4, 0, true); - } - else if (numberValue < /* INT64_RANGE_NEGATIVE */ -9223372036854776e3) { - HEAP_DATA_VIEW.setInt32(result, 0, true); - HEAP_DATA_VIEW.setInt32(result + 4, 2147483648, true); - } - else if (numberValue >= /* INT64_RANGE_POSITIVE */ 9223372036854776000) { - HEAP_DATA_VIEW.setUint32(result, 4294967295, true); - HEAP_DATA_VIEW.setUint32(result + 4, 2147483647, true); - } - else { - $emnapiSetValueI64(result, Math.trunc(numberValue)); - } - return envObject.clearLastError(); - } - /** - * @__sig ippppp - */ - function napi_get_value_string_latin1(env, value, buf, buf_size, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!buf) { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); - } - else if (buf_size !== 0) { - var copied = 0; - var v = void 0; - for (var i = 0; i < buf_size - 1; ++i) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = handle.value.charCodeAt(i) & 0xff; - HEAP_DATA_VIEW.setUint8(buf + i, v, true); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - copied++; - } - HEAP_DATA_VIEW.setUint8(buf + copied, 0, true); - if (result) { - HEAP_DATA_VIEW.setUint32(result, copied, true); - } - } - else if (result) { - HEAP_DATA_VIEW.setUint32(result, 0, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ippppp - */ - function napi_get_value_string_utf8(env, value, buf, buf_size, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!buf) { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var strLength = emnapiString.lengthBytesUTF8(handle.value); - HEAP_DATA_VIEW.setUint32(result, strLength, true); - } - else if (buf_size !== 0) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var copied = emnapiString.stringToUTF8(handle.value, buf, buf_size); - if (result) { - HEAP_DATA_VIEW.setUint32(result, copied, true); - } - } - else if (result) { - HEAP_DATA_VIEW.setUint32(result, 0, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ippppp - */ - function napi_get_value_string_utf16(env, value, buf, buf_size, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!buf) { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); - } - else if (buf_size !== 0) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var copied = emnapiString.stringToUTF16(handle.value, buf, buf_size * 2); - if (result) { - HEAP_DATA_VIEW.setUint32(result, copied / 2, true); - } - } - else if (result) { - HEAP_DATA_VIEW.setUint32(result, 0, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_get_value_uint32(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = new Uint32Array([handle.value])[0]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - var convert2cMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_get_array_length: napi_get_array_length, - napi_get_arraybuffer_info: napi_get_arraybuffer_info, - napi_get_buffer_info: napi_get_buffer_info, - napi_get_dataview_info: napi_get_dataview_info, - napi_get_date_value: napi_get_date_value, - napi_get_prototype: napi_get_prototype, - napi_get_typedarray_info: napi_get_typedarray_info, - napi_get_value_bigint_int64: napi_get_value_bigint_int64, - napi_get_value_bigint_uint64: napi_get_value_bigint_uint64, - napi_get_value_bigint_words: napi_get_value_bigint_words, - napi_get_value_bool: napi_get_value_bool, - napi_get_value_double: napi_get_value_double, - napi_get_value_external: napi_get_value_external, - napi_get_value_int32: napi_get_value_int32, - napi_get_value_int64: napi_get_value_int64, - napi_get_value_string_latin1: napi_get_value_string_latin1, - napi_get_value_string_utf16: napi_get_value_string_utf16, - napi_get_value_string_utf8: napi_get_value_string_utf8, - napi_get_value_uint32: napi_get_value_uint32, - node_api_set_prototype: node_api_set_prototype - }); - /** - * @__sig ipip - */ - function napi_create_int32(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - /** - * @__sig ipip - */ - function napi_create_uint32(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(value >>> 0).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - /** - * @__sig ipjp - */ - function napi_create_int64(env, low, high, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var value; - if (!high) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - value = Number(low); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v1 = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(high, v1, true); - return envObject.clearLastError(); - } - /** - * @__sig ipdp - */ - function napi_create_double(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - /** - * @__sig ipppp - */ - function napi_create_string_latin1(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str, autoLength, sizeLength) { - var latin1String = ''; - var len = 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (autoLength) { - while (true) { - var ch = HEAP_DATA_VIEW.getUint8(str, true); - if (!ch) - break; - latin1String += String.fromCharCode(ch); - str++; - } - } - else { - while (len < sizeLength) { - var ch = HEAP_DATA_VIEW.getUint8(str, true); - if (!ch) - break; - latin1String += String.fromCharCode(ch); - len++; - str++; - } - } - return latin1String; - }); - } - /** - * @__sig ipppp - */ - function napi_create_string_utf16(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str) { - return emnapiString.UTF16ToString(str, length); - }); - } - /** - * @__sig ipppp - */ - function napi_create_string_utf8(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str) { - return emnapiString.UTF8ToString(str, length); - }); - } - /** - * @__sig ippppppp - */ - function node_api_create_external_string_latin1(env, str, length, finalize_callback, finalize_hint, result, copied) { - return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_latin1, undefined); - } - /** - * @__sig ippppppp - */ - function node_api_create_external_string_utf16(env, str, length, finalize_callback, finalize_hint, result, copied) { - return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_utf16, undefined); - } - /** - * @__sig ipppp - */ - function node_api_create_property_key_latin1(env, str, length, result) { - return napi_create_string_latin1(env, str, length, result); - } - /** - * @__sig ipppp - */ - function node_api_create_property_key_utf8(env, str, length, result) { - return napi_create_string_utf8(env, str, length, result); - } - /** - * @__sig ipppp - */ - function node_api_create_property_key_utf16(env, str, length, result) { - return napi_create_string_utf16(env, str, length, result); - } - /** - * @__sig ipjp - */ - function napi_create_bigint_int64(env, low, high, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - var value; - if (!high) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - value = low; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v1 = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(high, v1, true); - return envObject.clearLastError(); - } - /** - * @__sig ipjp - */ - function napi_create_bigint_uint64(env, low, high, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - var value; - if (!high) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - value = low & ((BigInt(1) << BigInt(64)) - BigInt(1)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v1 = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(high, v1, true); - return envObject.clearLastError(); - } - /** - * @__sig ipippp - */ - function napi_create_bigint_words(env, sign_bit, word_count, words, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v, i; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - word_count = word_count >>> 0; - if (word_count > 2147483647) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (word_count > (1024 * 1024 / (4 * 8) / 2)) { - throw new RangeError('Maximum BigInt size exceeded'); - } - var value = BigInt(0); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (i = 0; i < word_count; i++) { - var low = HEAP_DATA_VIEW.getUint32(words + i * 8, true); - var high = HEAP_DATA_VIEW.getUint32(words + (i * 8 + 4), true); - var wordi = BigInt(low) | (BigInt(high) << BigInt(32)); - value += wordi << BigInt(64 * i); - } - value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1)); - v = emnapiCtx.addToCurrentScope(value).id; - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - var convert2napiMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_create_bigint_int64: napi_create_bigint_int64, - napi_create_bigint_uint64: napi_create_bigint_uint64, - napi_create_bigint_words: napi_create_bigint_words, - napi_create_double: napi_create_double, - napi_create_int32: napi_create_int32, - napi_create_int64: napi_create_int64, - napi_create_string_latin1: napi_create_string_latin1, - napi_create_string_utf16: napi_create_string_utf16, - napi_create_string_utf8: napi_create_string_utf8, - napi_create_uint32: napi_create_uint32, - node_api_create_external_string_latin1: node_api_create_external_string_latin1, - node_api_create_external_string_utf16: node_api_create_external_string_utf16, - node_api_create_property_key_latin1: node_api_create_property_key_latin1, - node_api_create_property_key_utf16: node_api_create_property_key_utf16, - node_api_create_property_key_utf8: node_api_create_property_key_utf8 - }); - function emnapiCreateFunction(envObject, utf8name, length, cb, data) { - var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length)); - var f; - var napiCallback = (wasmTable.get(cb)); - var callback = function (envObject) { - return napiCallback(envObject.id, envObject.ctx.scopeStore.currentScope.id); - }; - var makeFunction = function (envObject, callback) { - return function () { - var scope = envObject.ctx.openScope(envObject); - var callbackInfo = scope.callbackInfo; - callbackInfo.data = data; - callbackInfo.args = arguments; - callbackInfo.thiz = this; - callbackInfo.fn = f; - try { - var napiValue = envObject.callIntoModule(callback); - return (!napiValue) ? undefined : envObject.ctx.handleStore.get(napiValue).value; - } - finally { - callbackInfo.data = 0; - callbackInfo.args = undefined; - callbackInfo.thiz = undefined; - callbackInfo.fn = undefined; - envObject.ctx.closeScope(envObject, scope); - } - }; - }; - if (functionName === '') { - f = makeFunction(envObject, callback); - return { status: 0 /* napi_status.napi_ok */, f: f }; - } - if (!(/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(functionName))) { - return { status: 1 /* napi_status.napi_invalid_arg */, f: undefined }; - } - if (emnapiCtx.feature.supportNewFunction) { - var _ = makeFunction(envObject, callback); - try { - f = (new Function('_', 'return function ' + functionName + '(){' + - '"use strict";' + - 'return _.apply(this,arguments);' + - '};'))(_); - } - catch (_err) { - f = makeFunction(envObject, callback); - if (emnapiCtx.feature.canSetFunctionName) - Object.defineProperty(f, 'name', { value: functionName }); - } - } - else { - f = makeFunction(envObject, callback); - if (emnapiCtx.feature.canSetFunctionName) - Object.defineProperty(f, 'name', { value: functionName }); - } - return { status: 0 /* napi_status.napi_ok */, f: f }; - } - function emnapiDefineProperty(envObject, obj, propertyName, method, getter, setter, value, attributes, data) { - if (getter || setter) { - var localGetter = void 0; - var localSetter = void 0; - if (getter) { - localGetter = emnapiCreateFunction(envObject, 0, 0, getter, data).f; - } - if (setter) { - localSetter = emnapiCreateFunction(envObject, 0, 0, setter, data).f; - } - var desc = { - configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, - enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, - get: localGetter, - set: localSetter - }; - Object.defineProperty(obj, propertyName, desc); - } - else if (method) { - var localMethod = emnapiCreateFunction(envObject, 0, 0, method, data).f; - var desc = { - configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, - enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, - writable: (attributes & 1 /* napi_property_attributes.napi_writable */) !== 0, - value: localMethod - }; - Object.defineProperty(obj, propertyName, desc); - } - else { - var desc = { - configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, - enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, - writable: (attributes & 1 /* napi_property_attributes.napi_writable */) !== 0, - value: emnapiCtx.handleStore.get(value).value - }; - Object.defineProperty(obj, propertyName, desc); - } - } - function emnapiGetHandle(js_object) { - var handle = emnapiCtx.handleStore.get(js_object); - if (!(handle.isObject() || handle.isFunction())) { - return { status: 1 /* napi_status.napi_invalid_arg */ }; - } - if (typeof emnapiExternalMemory !== 'undefined' && ArrayBuffer.isView(handle.value)) { - if (emnapiExternalMemory.wasmMemoryViewTable.has(handle.value)) { - handle = emnapiCtx.addToCurrentScope(emnapiExternalMemory.wasmMemoryViewTable.get(handle.value)); - } - } - return { status: 0 /* napi_status.napi_ok */, handle: handle }; - } - function emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var referenceId; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!emnapiCtx.feature.supportFinalizer) { - if (finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "finalize_cb" must be 0(NULL)'); - } - if (result) { - throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "result" must be 0(NULL)'); - } - } - if (!js_object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handleResult = emnapiGetHandle(js_object); - if (handleResult.status !== 0 /* napi_status.napi_ok */) { - return envObject.setLastError(handleResult.status); - } - var handle = handleResult.handle; - if (envObject.getObjectBinding(handle.value).wrapped !== 0) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var reference = void 0; - if (result) { - if (!finalize_cb) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1 /* ReferenceOwnership.kUserland */, finalize_cb, native_object, finalize_hint); - referenceId = reference.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, referenceId, true); - } - else { - if (finalize_cb) { - reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, native_object, finalize_hint); - } - else { - reference = emnapiCtx.createReferenceWithData(envObject, handle.id, 0, 0 /* ReferenceOwnership.kRuntime */, native_object); - } - } - envObject.getObjectBinding(handle.value).wrapped = reference.id; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - function emnapiUnwrap(env, js_object, result, action) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var data; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!js_object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (action === 0 /* UnwrapAction.KeepWrap */) { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var value = emnapiCtx.handleStore.get(js_object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var binding = envObject.getObjectBinding(value.value); - var referenceId = binding.wrapped; - var ref = emnapiCtx.refStore.get(referenceId); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - data = ref.data(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, data, true); - } - if (action === 1 /* UnwrapAction.RemoveWrap */) { - binding.wrapped = 0; - if (ref.ownership() === 1 /* ReferenceOwnership.kUserland */) { - // When the wrap is been removed, the finalizer should be reset. - ref.resetFinalizer(); - } - else { - ref.dispose(); - } - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppppppp - */ - function napi_define_class(env, utf8name, length, constructor, callback_data, property_count, properties, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var propPtr, valueHandleId, attributes; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!constructor) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - property_count = property_count >>> 0; - if (property_count > 0) { - if (!properties) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if ((length < -1) || (length > 2147483647) || (!utf8name)) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data); - if (fresult.status !== 0 /* napi_status.napi_ok */) - return envObject.setLastError(fresult.status); - var F = fresult.f; - var propertyName = void 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < property_count; i++) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - propPtr = properties + (i * (4 * 8)); - var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); - var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); - var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); - var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); - var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); - var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); - attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); - var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); - if (utf8Name) { - propertyName = emnapiString.UTF8ToString(utf8Name, -1); - } - else { - if (!name_1) { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - propertyName = emnapiCtx.handleStore.get(name_1).value; - if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - } - if ((attributes & 1024 /* napi_property_attributes.napi_static */) !== 0) { - emnapiDefineProperty(envObject, F, propertyName, method, getter, setter, value, attributes, data); - continue; - } - emnapiDefineProperty(envObject, F.prototype, propertyName, method, getter, setter, value, attributes, data); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var valueHandle = emnapiCtx.addToCurrentScope(F); - valueHandleId = valueHandle.id; - HEAP_DATA_VIEW.setUint32(result, valueHandleId, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppppp - */ - function napi_wrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { - return emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result); - } - /** - * @__sig ippp - */ - function napi_unwrap(env, js_object, result) { - return emnapiUnwrap(env, js_object, result, 0 /* UnwrapAction.KeepWrap */); - } - /** - * @__sig ippp - */ - function napi_remove_wrap(env, js_object, result) { - return emnapiUnwrap(env, js_object, result, 1 /* UnwrapAction.RemoveWrap */); - } - /** - * @__sig ippp - */ - function napi_type_tag_object(env, object, type_tag) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var value = emnapiCtx.handleStore.get(object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */); - } - if (!type_tag) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var binding = envObject.getObjectBinding(value.value); - if (binding.tag !== null) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var tag = new Uint8Array(16); - tag.set(new Uint8Array(wasmMemory.buffer, type_tag, 16)); - binding.tag = new Uint32Array(tag.buffer); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppp - */ - function napi_check_object_type_tag(env, object, type_tag, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars, one-var - var ret = true; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var value = emnapiCtx.handleStore.get(object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */); - } - if (!type_tag) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - if (!result) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var binding = envObject.getObjectBinding(value.value); - if (binding.tag !== null) { - var tag = binding.tag; - var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4); - ret = (tag[0] === typeTag[0] && - tag[1] === typeTag[1] && - tag[2] === typeTag[2] && - tag[3] === typeTag[3]); - } - else { - ret = false; - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppppp - */ - function napi_add_finalizer(env, js_object, finalize_data, finalize_cb, finalize_hint, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportFinalizer) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!js_object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!finalize_cb) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handleResult = emnapiGetHandle(js_object); - if (handleResult.status !== 0 /* napi_status.napi_ok */) { - return envObject.setLastError(handleResult.status); - } - var handle = handleResult.handle; - var ownership = !result ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */; - var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint); - if (result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var referenceId = reference.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, referenceId, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ipppp - */ - function node_api_post_finalizer(env, finalize_cb, finalize_data, finalize_hint) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - envObject.enqueueFinalizer(emnapiCtx.createTrackedFinalizer(envObject, finalize_cb, finalize_data, finalize_hint)); - return envObject.clearLastError(); - } - var wrapMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_add_finalizer: napi_add_finalizer, - napi_check_object_type_tag: napi_check_object_type_tag, - napi_define_class: napi_define_class, - napi_remove_wrap: napi_remove_wrap, - napi_type_tag_object: napi_type_tag_object, - napi_unwrap: napi_unwrap, - napi_wrap: napi_wrap, - node_api_post_finalizer: node_api_post_finalizer - }); - /** - * @__sig ipippppp - */ - function emnapi_create_memory_view(env, typedarray_type, external_data, byte_length, finalize_cb, finalize_hint, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - byte_length = byte_length >>> 0; - if (!external_data) { - byte_length = 0; - } - if (byte_length > 2147483647) { - throw new RangeError('Cannot create a memory view larger than 2147483647 bytes'); - } - if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { - throw new RangeError('Memory out of range'); - } - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('emnapi_create_memory_view', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var viewDescriptor = void 0; - switch (typedarray_type) { - case 0 /* emnapi_memory_view_type.emnapi_int8_array */: - viewDescriptor = { Ctor: Int8Array, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 1 /* emnapi_memory_view_type.emnapi_uint8_array */: - viewDescriptor = { Ctor: Uint8Array, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 2 /* emnapi_memory_view_type.emnapi_uint8_clamped_array */: - viewDescriptor = { Ctor: Uint8ClampedArray, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 3 /* emnapi_memory_view_type.emnapi_int16_array */: - viewDescriptor = { Ctor: Int16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 4 /* emnapi_memory_view_type.emnapi_uint16_array */: - viewDescriptor = { Ctor: Uint16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 5 /* emnapi_memory_view_type.emnapi_int32_array */: - viewDescriptor = { Ctor: Int32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 6 /* emnapi_memory_view_type.emnapi_uint32_array */: - viewDescriptor = { Ctor: Uint32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 7 /* emnapi_memory_view_type.emnapi_float32_array */: - viewDescriptor = { Ctor: Float32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 8 /* emnapi_memory_view_type.emnapi_float64_array */: - viewDescriptor = { Ctor: Float64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 9 /* emnapi_memory_view_type.emnapi_bigint64_array */: - viewDescriptor = { Ctor: BigInt64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 10 /* emnapi_memory_view_type.emnapi_biguint64_array */: - viewDescriptor = { Ctor: BigUint64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case -1 /* emnapi_memory_view_type.emnapi_data_view */: - viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 11 /* emnapi_memory_view_type.emnapi_float16_array */: - if (typeof Float16Array !== 'function') { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case -2 /* emnapi_memory_view_type.emnapi_buffer */: { - if (!emnapiCtx.feature.Buffer) { - throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', ''); - } - viewDescriptor = { Ctor: emnapiCtx.feature.Buffer, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - } - default: return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var Ctor = viewDescriptor.Ctor; - var typedArray = typedarray_type === -2 /* emnapi_memory_view_type.emnapi_buffer */ - ? emnapiCtx.feature.Buffer.from(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length) - : new Ctor(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length); - var handle = emnapiCtx.addToCurrentScope(typedArray); - emnapiExternalMemory.wasmMemoryViewTable.set(typedArray, viewDescriptor); - if (finalize_cb) { - var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, /* NULL */ 0); - if (status_1 === 10 /* napi_status.napi_pending_exception */) { - var err = envObject.tryCatch.extractException(); - envObject.clearLastError(); - throw err; - } - else if (status_1 !== 0 /* napi_status.napi_ok */) { - return envObject.setLastError(status_1); - } - } - value = handle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig i - */ - function emnapi_is_support_weakref() { - return emnapiCtx.feature.supportFinalizer ? 1 : 0; - } - /** - * @__sig i - */ - function emnapi_is_support_bigint() { - return emnapiCtx.feature.supportBigInt ? 1 : 0; - } - /** - * @__sig i - */ - function emnapi_is_node_binding_available() { - return emnapiNodeBinding ? 1 : 0; - } - function $emnapiSyncMemory(js_to_wasm, arrayBufferOrView, offset, len) { - offset = offset !== null && offset !== void 0 ? offset : 0; - offset = offset >>> 0; - var view; - if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { - var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address; - if (!pointer) - throw new Error('Unknown ArrayBuffer address'); - if (typeof len !== 'number' || len === -1) { - len = arrayBufferOrView.byteLength - offset; - } - len = len >>> 0; - if (len === 0) - return arrayBufferOrView; - view = new Uint8Array(arrayBufferOrView, offset, len); - var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); - if (!js_to_wasm) { - view.set(wasmMemoryU8.subarray(pointer, pointer + len)); - } - else { - wasmMemoryU8.set(view, pointer); - } - return arrayBufferOrView; - } - if (ArrayBuffer.isView(arrayBufferOrView)) { - var viewPointerInfo = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); - var latestView = viewPointerInfo.view; - var pointer = viewPointerInfo.address; - if (!pointer) - throw new Error('Unknown ArrayBuffer address'); - if (typeof len !== 'number' || len === -1) { - len = latestView.byteLength - offset; - } - len = len >>> 0; - if (len === 0) - return latestView; - view = new Uint8Array(latestView.buffer, latestView.byteOffset + offset, len); - var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); - if (!js_to_wasm) { - view.set(wasmMemoryU8.subarray(pointer, pointer + len)); - } - else { - wasmMemoryU8.set(view, pointer); - } - return latestView; - } - throw new TypeError('emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter'); - } - /** - * @__sig ipippp - */ - function emnapi_sync_memory(env, js_to_wasm, arraybuffer_or_view, offset, len) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer_or_view) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true); - var handle = envObject.ctx.handleStore.get(handleId); - if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len); - if (handle.value !== ret) { - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - function $emnapiGetMemoryAddress(arrayBufferOrView) { - var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer; - var isDataView = arrayBufferOrView instanceof DataView; - var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView; - if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { - throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter'); - } - var info; - if (isArrayBuffer) { - info = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false); - } - else { - info = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); - } - return { - address: info.address, - ownership: info.ownership, - runtimeAllocated: info.runtimeAllocated - }; - } - /** - * @__sig ipppp - */ - function emnapi_get_memory_address(env, arraybuffer_or_view, address, ownership, runtime_allocated) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p, runtimeAllocated, ownershipOut; - var info; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer_or_view) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!address && !ownership && !runtime_allocated) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var handle = envObject.ctx.handleStore.get(arraybuffer_or_view); - info = $emnapiGetMemoryAddress(handle.value); - p = info.address; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (address) { - HEAP_DATA_VIEW.setUint32(address, p, true); - } - if (ownership) { - ownershipOut = info.ownership; - HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true); - } - if (runtime_allocated) { - runtimeAllocated = info.runtimeAllocated; - HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipp - */ - function emnapi_get_runtime_version(env, version) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!version) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var runtimeVersion; - try { - runtimeVersion = emnapiCtx.getRuntimeVersions().version; - } - catch (_) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var versions = runtimeVersion.split('.') - .map(function (n) { return Number(n); }); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(version, versions[0], true); - HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true); - HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true); - return envObject.clearLastError(); - } - var emnapiMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - $emnapiGetMemoryAddress: $emnapiGetMemoryAddress, - $emnapiSyncMemory: $emnapiSyncMemory, - emnapi_create_memory_view: emnapi_create_memory_view, - emnapi_get_memory_address: emnapi_get_memory_address, - emnapi_get_runtime_version: emnapi_get_runtime_version, - emnapi_is_node_binding_available: emnapi_is_node_binding_available, - emnapi_is_support_bigint: emnapi_is_support_bigint, - emnapi_is_support_weakref: emnapi_is_support_weakref, - emnapi_sync_memory: emnapi_sync_memory - }); - /** - * @__sig ipp - */ - function napi_create_array(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope([]).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_create_array_with_length(env, length, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - length = length >>> 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(new Array(length)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function emnapiCreateArrayBuffer(byte_length, data, shared) { - byte_length = byte_length >>> 0; - var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length); - if (data) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(data, p, true); - } - return arrayBuffer; - } - /** - * @__sig ipppp - */ - function napi_create_arraybuffer(env, byte_length, data, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false); - value = emnapiCtx.addToCurrentScope(arrayBuffer).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppp - */ - function node_api_create_sharedarraybuffer(env, byte_length, data, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true); - value = emnapiCtx.addToCurrentScope(arrayBuffer).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipdp - */ - function napi_create_date(env, time, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(new Date(time)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ippppp - */ - function napi_create_external(env, data, finalize_cb, finalize_hint, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_create_external', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var externalHandle = emnapiCtx.getCurrentScope().addExternal(data); - if (finalize_cb) { - emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, data, finalize_hint); - } - value = externalHandle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppppp - */ - function napi_create_external_arraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - byte_length = byte_length >>> 0; - if (!external_data) { - byte_length = 0; - } - if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { - throw new RangeError('Memory out of range'); - } - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_create_external_arraybuffer', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var arrayBuffer = new ArrayBuffer(byte_length); - if (byte_length === 0) { - try { - var MessageChannel_1 = emnapiCtx.feature.MessageChannel; - var messageChannel = new MessageChannel_1(); - messageChannel.port1.postMessage(arrayBuffer, [arrayBuffer]); - } - catch (_) { } - } - else { - var u8arr = new Uint8Array(arrayBuffer); - u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length)); - emnapiExternalMemory.table.set(arrayBuffer, { - address: external_data, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - var handle = emnapiCtx.addToCurrentScope(arrayBuffer); - if (finalize_cb) { - var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, /* NULL */ 0); - if (status_1 === 10 /* napi_status.napi_pending_exception */) { - var err = envObject.tryCatch.extractException(); - envObject.clearLastError(); - throw err; - } - else if (status_1 !== 0 /* napi_status.napi_ok */) { - return envObject.setLastError(status_1); - } - } - value = handle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipp - */ - function napi_create_object(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope({}).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** - * @__sig ipppppp - */ - function napi_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - property_count = property_count >>> 0; - if (property_count > 0) { - if (!property_names) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!property_values) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v8_prototype_or_null = prototype_or_null - ? emnapiCtx.handleStore.get(prototype_or_null).value - : null; - var properties = {}; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < property_count; i++) { - var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value; - if (!(typeof name_value === "string" || typeof name_value === "symbol")) - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - properties[name_value] = { - value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value, - writable: true, - enumerable: true, - configurable: true - }; - } - var obj; - try { - obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties); - } - catch (_) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(obj).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** - * @__sig ippp - */ - function napi_create_symbol(env, description, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!description) { - // eslint-disable-next-line symbol-description, @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(Symbol()).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - } - else { - var handle = emnapiCtx.handleStore.get(description); - var desc = handle.value; - if (typeof desc !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id; - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.clearLastError(); - } - /** - * @__sig ipipppp - */ - function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var buffer = handle.value; - var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) { - var _a; - byte_offset = byte_offset >>> 0; - length = length >>> 0; - if (size_of_element > 1) { - if ((byte_offset) % (size_of_element) !== 0) { - var err = new RangeError("start offset of ".concat((_a = Type.name) !== null && _a !== void 0 ? _a : '', " should be a multiple of ").concat(size_of_element)); - err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT'; - envObject.tryCatch.setError(err); - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - } - if (((length * size_of_element) + byte_offset) > buffer.byteLength) { - var err = new RangeError('Invalid typed array length'); - err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_LENGTH'; - envObject.tryCatch.setError(err); - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - var out = new Type(buffer, byte_offset, length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { - emnapiExternalMemory.wasmMemoryViewTable.set(out, { - Ctor: Type, - address: byte_offset, - length: length, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(out).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - }; - switch (type) { - case 0 /* napi_typedarray_type.napi_int8_array */: - return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length); - case 1 /* napi_typedarray_type.napi_uint8_array */: - return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length); - case 2 /* napi_typedarray_type.napi_uint8_clamped_array */: - return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length); - case 3 /* napi_typedarray_type.napi_int16_array */: - return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length); - case 4 /* napi_typedarray_type.napi_uint16_array */: - return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length); - case 5 /* napi_typedarray_type.napi_int32_array */: - return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length); - case 6 /* napi_typedarray_type.napi_uint32_array */: - return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length); - case 7 /* napi_typedarray_type.napi_float32_array */: - return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length); - case 8 /* napi_typedarray_type.napi_float64_array */: - return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length); - case 9 /* napi_typedarray_type.napi_bigint64_array */: - return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length); - case 10 /* napi_typedarray_type.napi_biguint64_array */: - return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length); - case 11 /* napi_typedarray_type.napi_float16_array */: - if (typeof Float16Array !== 'function') { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length); - default: - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__deps malloc - * @__sig ippp - */ - function napi_create_buffer(env, size, data, result) { - var _a; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value, pointer; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', ''); - } - var buffer = void 0; - size = size >>> 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!data || (size === 0)) { - buffer = Buffer.alloc(size); - value = emnapiCtx.addToCurrentScope(buffer).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - } - else { - pointer = _malloc(size); - if (!pointer) - throw new Error('Out of memory'); - new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0); - var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size); - var viewDescriptor = { - Ctor: Buffer, - address: pointer, - length: size, - ownership: emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 1 - }; - emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor); - (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer); - value = emnapiCtx.addToCurrentScope(buffer_1).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - HEAP_DATA_VIEW.setUint32(data, pointer, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ippppp - */ - function napi_create_buffer_copy(env, length, data, result_data, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', ''); - } - var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false); - var buffer = Buffer.from(arrayBuffer); - buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length)); - value = emnapiCtx.addToCurrentScope(buffer).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppppp - */ - function napi_create_external_buffer(env, length, data, finalize_cb, finalize_hint, result) { - return emnapi_create_memory_view(env, -2 /* emnapi_memory_view_type.emnapi_buffer */, data, length, finalize_cb, finalize_hint, result); - } - /** - * @__sig ippppp - */ - function node_api_create_buffer_from_arraybuffer(env, arraybuffer, byte_offset, byte_length, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - byte_offset = byte_offset >>> 0; - byte_length = byte_length >>> 0; - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var buffer = handle.value; - if ((byte_length + byte_offset) > buffer.byteLength) { - var err = new RangeError('The byte offset + length is out of range'); - err.code = 'ERR_OUT_OF_RANGE'; - throw err; - } - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('node_api_create_buffer_from_arraybuffer', ''); - } - var out = Buffer.from(buffer, byte_offset, byte_length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { - emnapiExternalMemory.wasmMemoryViewTable.set(out, { - Ctor: Buffer, - address: byte_offset, - length: byte_length, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(out).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ippppp - */ - function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - byte_length = byte_length >>> 0; - byte_offset = byte_offset >>> 0; - var value = emnapiCtx.handleStore.get(arraybuffer).value; - var createDataview = function (buffer) { - if ((byte_length + byte_offset) > buffer.byteLength) { - var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in'); - err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS'; - throw err; - } - var dataview = new DataView(buffer, byte_offset, byte_length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) { - emnapiExternalMemory.wasmMemoryViewTable.set(dataview, { - Ctor: DataView, - address: byte_offset, - length: byte_length, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(dataview).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - }; - if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) { - return createDataview(value); - } - else { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** - * @__sig ipppp - */ - function node_api_symbol_for(env, utf8description, length, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!utf8description) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!(autoLength || (sizelength <= 2147483647))) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var descriptionString = emnapiString.UTF8ToString(utf8description, length); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - var createMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_create_array: napi_create_array, - napi_create_array_with_length: napi_create_array_with_length, - napi_create_arraybuffer: napi_create_arraybuffer, - napi_create_buffer: napi_create_buffer, - napi_create_buffer_copy: napi_create_buffer_copy, - napi_create_dataview: napi_create_dataview, - napi_create_date: napi_create_date, - napi_create_external: napi_create_external, - napi_create_external_arraybuffer: napi_create_external_arraybuffer, - napi_create_external_buffer: napi_create_external_buffer, - napi_create_object: napi_create_object, - napi_create_object_with_properties: napi_create_object_with_properties, - napi_create_symbol: napi_create_symbol, - napi_create_typedarray: napi_create_typedarray, - node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer, - node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer, - node_api_symbol_for: node_api_symbol_for - }); - /** @__sig ipip */ - function napi_get_boolean(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = value === 0 ? 3 /* GlobalHandle.FALSE */ : 4 /* GlobalHandle.TRUE */; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_get_global(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = 5 /* GlobalHandle.GLOBAL */; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_get_null(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = 2 /* GlobalHandle.NULL */; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_get_undefined(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = 1 /* GlobalHandle.UNDEFINED */; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - var globalMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_get_boolean: napi_get_boolean, - napi_get_global: napi_get_global, - napi_get_null: napi_get_null, - napi_get_undefined: napi_get_undefined - }); - /** @__sig ipppp */ - function napi_set_instance_data(env, data, finalize_cb, finalize_hint) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - envObject.setInstanceData(data, finalize_cb, finalize_hint); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_get_instance_data(env, data) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!data) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = envObject.getInstanceData(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(data, value, true); - return envObject.clearLastError(); - } - var envMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_get_instance_data: napi_get_instance_data, - napi_set_instance_data: napi_set_instance_data - }); - /** @__sig vpppp */ - function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) { - var envObject = emnapiCtx.envStore.get(env); - var lastError = envObject.lastError; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var errorCode = lastError.errorCode; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var engineErrorCode = lastError.engineErrorCode >>> 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var engineReserved = lastError.engineReserved; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(error_code, errorCode, true); - HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true); - HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true); - } - /** @__sig ipp */ - function napi_throw(env, error) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!error) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - envObject.tryCatch.setError(emnapiCtx.handleStore.get(error).value); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_throw_error(env, code, msg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var error = new Error(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_throw_type_error(env, code, msg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var error = new TypeError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_throw_range_error(env, code, msg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var error = new RangeError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function node_api_throw_syntax_error(env, code, msg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipp */ - function napi_is_exception_pending(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = envObject.tryCatch.hasCaught(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - return envObject.clearLastError(); - } - /** @__sig ipppp */ - function napi_create_error(env, code, msg, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var error = new Error(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - error.code = codeValue; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** @__sig ipppp */ - function napi_create_type_error(env, code, msg, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var error = new TypeError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - error.code = codeValue; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** @__sig ipppp */ - function napi_create_range_error(env, code, msg, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var error = new RangeError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - error.code = codeValue; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** @__sig ipppp */ - function node_api_create_syntax_error(env, code, msg, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var error = new SyntaxError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - error.code = codeValue; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_get_and_clear_last_exception(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!envObject.tryCatch.hasCaught()) { - HEAP_DATA_VIEW.setUint32(result, 1, true); // ID_UNDEFINED - return envObject.clearLastError(); - } - else { - var err = envObject.tryCatch.exception(); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = envObject.ensureHandleId(err); - HEAP_DATA_VIEW.setUint32(result, value, true); - envObject.tryCatch.reset(); - } - return envObject.clearLastError(); - } - /** @__sig vpppp */ - function napi_fatal_error(location, location_len, message, message_len) { - var locationStr = emnapiString.UTF8ToString(location, location_len); - var messageStr = emnapiString.UTF8ToString(message, message_len); - if (emnapiNodeBinding) { - emnapiNodeBinding.napi.fatalError(locationStr, messageStr); - } - else { - abort('FATAL ERROR: ' + locationStr + ' ' + messageStr); - } - } - /** @__sig ipp */ - function napi_fatal_exception(env, err) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!err) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var error = envObject.ctx.handleStore.get(err); - try { - envObject.triggerFatalException(error.value); - } - catch (_) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - var errorMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - _emnapi_get_last_error_info: _emnapi_get_last_error_info, - napi_create_error: napi_create_error, - napi_create_range_error: napi_create_range_error, - napi_create_type_error: napi_create_type_error, - napi_fatal_error: napi_fatal_error, - napi_fatal_exception: napi_fatal_exception, - napi_get_and_clear_last_exception: napi_get_and_clear_last_exception, - napi_is_exception_pending: napi_is_exception_pending, - napi_throw: napi_throw, - napi_throw_error: napi_throw_error, - napi_throw_range_error: napi_throw_range_error, - napi_throw_type_error: napi_throw_type_error, - node_api_create_syntax_error: node_api_create_syntax_error, - node_api_throw_syntax_error: node_api_throw_syntax_error - }); - /** @__sig ipppppp */ - function napi_create_function(env, utf8name, length, cb, data, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!cb) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data); - if (fresult.status !== 0 /* napi_status.napi_ok */) - return envObject.setLastError(fresult.status); - var f = fresult.f; - var valueHandle = emnapiCtx.addToCurrentScope(f); - value = valueHandle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppppp */ - function napi_get_cb_info(env, cbinfo, argc, argv, this_arg, data) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!cbinfo) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (argv) { - if (!argc) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var argcValue = HEAP_DATA_VIEW.getUint32(argc, true); - var len = cbinfoValue.args.length; - var arrlen = argcValue < len ? argcValue : len; - var i = 0; - for (; i < arrlen; i++) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var argVal = envObject.ensureHandleId(cbinfoValue.args[i]); - HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true); - } - if (i < argcValue) { - for (; i < argcValue; i++) { - HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true); - } - } - } - if (argc) { - HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true); - } - if (this_arg) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = envObject.ensureHandleId(cbinfoValue.thiz); - HEAP_DATA_VIEW.setUint32(this_arg, v, true); - } - if (data) { - HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true); - } - return envObject.clearLastError(); - } - /** @__sig ipppppp */ - function napi_call_function(env, recv, func, argc, argv, result) { - var i = 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!recv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - argc = argc >>> 0; - if (argc > 0) { - if (!argv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v8recv = emnapiCtx.handleStore.get(recv).value; - if (!func) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var v8func = emnapiCtx.handleStore.get(func).value; - if (typeof v8func !== 'function') - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var args = []; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - args.push(emnapiCtx.handleStore.get(argVal).value); - } - var ret = v8func.apply(v8recv, args); - if (result) { - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippppp */ - function napi_new_instance(env, constructor, argc, argv, result) { - var i; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!constructor) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - argc = argc >>> 0; - if (argc > 0) { - if (!argv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var Ctor = emnapiCtx.handleStore.get(constructor).value; - if (typeof Ctor !== 'function') - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var ret = void 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (emnapiCtx.feature.supportReflect) { - var argList = Array(argc); - for (i = 0; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - argList[i] = emnapiCtx.handleStore.get(argVal).value; - } - ret = Reflect.construct(Ctor, argList, Ctor); - } - else { - var args = Array(argc + 1); - args[0] = undefined; - for (i = 0; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - args[i + 1] = emnapiCtx.handleStore.get(argVal).value; - } - var BoundCtor = Ctor.bind.apply(Ctor, args); - ret = new BoundCtor(); - } - if (result) { - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_get_new_target(env, cbinfo, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!cbinfo) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; - var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn; - var value = thiz == null || thiz.constructor == null - ? 0 - : thiz instanceof fn - ? envObject.ensureHandleId(thiz.constructor) - : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - var functionMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_call_function: napi_call_function, - napi_create_function: napi_create_function, - napi_get_cb_info: napi_get_cb_info, - napi_get_new_target: napi_get_new_target, - napi_new_instance: napi_new_instance - }); - /** @__sig ipp */ - function napi_open_handle_scope(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var scope = emnapiCtx.openScope(envObject); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, scope.id, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_close_handle_scope(env, scope) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if ((envObject.openHandleScopes === 0)) { - return 13 /* napi_status.napi_handle_scope_mismatch */; - } - emnapiCtx.closeScope(envObject); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_open_escapable_handle_scope(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var scope = emnapiCtx.openScope(envObject); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, scope.id, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_close_escapable_handle_scope(env, scope) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if ((envObject.openHandleScopes === 0)) { - return 13 /* napi_status.napi_handle_scope_mismatch */; - } - emnapiCtx.closeScope(envObject); - return envObject.clearLastError(); - } - /** @__sig ipppp */ - function napi_escape_handle(env, scope, escapee, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!escapee) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var scopeObject = emnapiCtx.scopeStore.get(scope); - if (!scopeObject.escapeCalled()) { - var newHandle = scopeObject.escape(escapee); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = newHandle ? newHandle.id : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - return envObject.setLastError(12 /* napi_status.napi_escape_called_twice */); - } - /** @__sig ippip */ - function napi_create_reference(env, value, initial_refcount, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (envObject.moduleApiVersion < 10) { - if (!(handle.isObject() || handle.isFunction() || handle.isSymbol())) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1 /* ReferenceOwnership.kUserland */); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, ref.id, true); - return envObject.clearLastError(); - } - /** @__sig ipp */ - function napi_delete_reference(env, ref) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiCtx.refStore.get(ref).dispose(); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_reference_ref(env, ref, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var count = emnapiCtx.refStore.get(ref).ref(); - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, count, true); - } - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_reference_unref(env, ref, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var reference = emnapiCtx.refStore.get(ref); - var refcount = reference.refcount(); - if (refcount === 0) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var count = reference.unref(); - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, count, true); - } - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_get_reference_value(env, ref, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var reference = emnapiCtx.refStore.get(ref); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var handleId = reference.get(envObject); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, handleId, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_add_env_cleanup_hook(env, fun, arg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!fun) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiCtx.addCleanupHook(envObject, fun, arg); - return 0 /* napi_status.napi_ok */; - } - /** @__sig ippp */ - function napi_remove_env_cleanup_hook(env, fun, arg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!fun) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiCtx.removeCleanupHook(envObject, fun, arg); - return 0 /* napi_status.napi_ok */; - } - /** @__sig vp */ - function _emnapi_env_ref(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.ref(); - } - /** @__sig vp */ - function _emnapi_env_unref(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.unref(); - } - var lifeMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - _emnapi_env_ref: _emnapi_env_ref, - _emnapi_env_unref: _emnapi_env_unref, - napi_add_env_cleanup_hook: napi_add_env_cleanup_hook, - napi_close_escapable_handle_scope: napi_close_escapable_handle_scope, - napi_close_handle_scope: napi_close_handle_scope, - napi_create_reference: napi_create_reference, - napi_delete_reference: napi_delete_reference, - napi_escape_handle: napi_escape_handle, - napi_get_reference_value: napi_get_reference_value, - napi_open_escapable_handle_scope: napi_open_escapable_handle_scope, - napi_open_handle_scope: napi_open_handle_scope, - napi_reference_ref: napi_reference_ref, - napi_reference_unref: napi_reference_unref, - napi_remove_env_cleanup_hook: napi_remove_env_cleanup_hook - }); - /** @__sig ippi */ - function _emnapi_get_filename(env, buf, len) { - var envObject = emnapiCtx.envStore.get(env); - var filename = envObject.filename; - if (!buf) { - return emnapiString.lengthBytesUTF8(filename); - } - return emnapiString.stringToUTF8(filename, buf, len); - } - var miscellaneousMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - _emnapi_get_filename: _emnapi_get_filename - }); - /** @__sig ippp */ - function napi_create_promise(env, deferred, promise) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var deferredObjectId, value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!promise) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var p = new Promise(function (resolve, reject) { - var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject }); - deferredObjectId = deferredObject.id; - HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true); - }); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(p).id; - HEAP_DATA_VIEW.setUint32(promise, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_resolve_deferred(env, deferred, resolution) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!resolution) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var deferredObject = emnapiCtx.deferredStore.get(deferred); - deferredObject.resolve(emnapiCtx.handleStore.get(resolution).value); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_reject_deferred(env, deferred, resolution) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!resolution) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var deferredObject = emnapiCtx.deferredStore.get(deferred); - deferredObject.reject(emnapiCtx.handleStore.get(resolution).value); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_is_promise(env, value, is_promise) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!is_promise) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isPromise() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(is_promise, r, true); - return envObject.clearLastError(); - } - var promiseMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_create_promise: napi_create_promise, - napi_is_promise: napi_is_promise, - napi_reject_deferred: napi_reject_deferred, - napi_resolve_deferred: napi_resolve_deferred - }); - /** @__sig ippiiip */ - function napi_get_all_property_names(env, object, key_mode, key_filter, key_conversion, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var obj = void 0; - try { - obj = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - if (key_mode !== 0 /* napi_key_collection_mode.napi_key_include_prototypes */ && key_mode !== 1 /* napi_key_collection_mode.napi_key_own_only */) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (key_conversion !== 0 /* napi_key_conversion.napi_key_keep_numbers */ && key_conversion !== 1 /* napi_key_conversion.napi_key_numbers_to_strings */) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var props = []; - var names = void 0; - var symbols = void 0; - var i = void 0; - var own = true; - var integerIndiceRegex = /^(0|[1-9][0-9]*)$/; - do { - names = Object.getOwnPropertyNames(obj); - symbols = Object.getOwnPropertySymbols(obj); - for (i = 0; i < names.length; i++) { - props.push({ - name: integerIndiceRegex.test(names[i]) ? Number(names[i]) : names[i], - desc: Object.getOwnPropertyDescriptor(obj, names[i]), - own: own - }); - } - for (i = 0; i < symbols.length; i++) { - props.push({ - name: symbols[i], - desc: Object.getOwnPropertyDescriptor(obj, symbols[i]), - own: own - }); - } - if (key_mode === 1 /* napi_key_collection_mode.napi_key_own_only */) { - break; - } - obj = Object.getPrototypeOf(obj); - own = false; - } while (obj); - var ret = []; - var addName = function (ret, name, key_filter, conversion_mode) { - if (ret.indexOf(name) !== -1) - return; - if (conversion_mode === 0 /* napi_key_conversion.napi_key_keep_numbers */) { - ret.push(name); - } - else if (conversion_mode === 1 /* napi_key_conversion.napi_key_numbers_to_strings */) { - var realName = typeof name === 'number' ? String(name) : name; - if (typeof realName === 'string') { - if (!(key_filter & 8 /* napi_key_filter.napi_key_skip_strings */)) { - ret.push(realName); - } - } - else { - ret.push(realName); - } - } - }; - for (i = 0; i < props.length; i++) { - var prop = props[i]; - var name_1 = prop.name; - var desc = prop.desc; - if (key_filter === 0 /* napi_key_filter.napi_key_all_properties */) { - addName(ret, name_1, key_filter, key_conversion); - } - else { - if (key_filter & 8 /* napi_key_filter.napi_key_skip_strings */ && typeof name_1 === 'string') { - continue; - } - if (key_filter & 16 /* napi_key_filter.napi_key_skip_symbols */ && typeof name_1 === 'symbol') { - continue; - } - var shouldAdd = true; - switch (key_filter & 7) { - case 1 /* napi_key_filter.napi_key_writable */: { - shouldAdd = Boolean(desc.writable); - break; - } - case 2 /* napi_key_filter.napi_key_enumerable */: { - shouldAdd = Boolean(desc.enumerable); - break; - } - case (1 /* napi_key_filter.napi_key_writable */ | 2 /* napi_key_filter.napi_key_enumerable */): { - shouldAdd = Boolean(desc.writable && desc.enumerable); - break; - } - case 4 /* napi_key_filter.napi_key_configurable */: { - shouldAdd = Boolean(desc.configurable); - break; - } - case (4 /* napi_key_filter.napi_key_configurable */ | 1 /* napi_key_filter.napi_key_writable */): { - shouldAdd = Boolean(desc.configurable && desc.writable); - break; - } - case (4 /* napi_key_filter.napi_key_configurable */ | 2 /* napi_key_filter.napi_key_enumerable */): { - shouldAdd = Boolean(desc.configurable && desc.enumerable); - break; - } - case (4 /* napi_key_filter.napi_key_configurable */ | 2 /* napi_key_filter.napi_key_enumerable */ | 1 /* napi_key_filter.napi_key_writable */): { - shouldAdd = Boolean(desc.configurable && desc.enumerable && desc.writable); - break; - } - } - if (shouldAdd) { - addName(ret, name_1, key_filter, key_conversion); - } - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(ret).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_get_property_names(env, object, result) { - return napi_get_all_property_names(env, object, 0 /* napi_key_collection_mode.napi_key_include_prototypes */, 2 /* napi_key_filter.napi_key_enumerable */ | 16 /* napi_key_filter.napi_key_skip_symbols */, 1 /* napi_key_conversion.napi_key_numbers_to_strings */, result); - } - /** @__sig ipppp */ - function napi_set_property(env, object, key, value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - h.value[emnapiCtx.handleStore.get(key).value] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_has_property(env, object, key, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_get_property(env, object, key, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_delete_property(env, object, key, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - var propertyKey = emnapiCtx.handleStore.get(key).value; - if (emnapiCtx.feature.supportReflect) { - r = Reflect.deleteProperty(h.value, propertyKey); - } - else { - try { - r = delete h.value[propertyKey]; - } - catch (_) { - r = false; - } - } - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_has_own_property(env, object, key, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - var prop = emnapiCtx.handleStore.get(key).value; - if (typeof prop !== 'string' && typeof prop !== 'symbol') { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_set_named_property(env, object, cname, value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - if (!cname) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_has_named_property(env, object, utf8name, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!utf8name) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - r = emnapiString.UTF8ToString(utf8name, -1) in v; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_get_named_property(env, object, utf8name, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!utf8name) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippip */ - function napi_set_element(env, object, index, value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - h.value[index >>> 0] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippip */ - function napi_has_element(env, object, index, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - r = ((index >>> 0) in v) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippip */ - function napi_get_element(env, object, index, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(v[index >>> 0]); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippip */ - function napi_delete_element(env, object, index, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - if (emnapiCtx.feature.supportReflect) { - r = Reflect.deleteProperty(h.value, index >>> 0); - } - else { - try { - r = delete h.value[index >>> 0]; - } - catch (_) { - r = false; - } - } - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_define_properties(env, object, property_count, properties) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var propPtr, attributes; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - property_count = property_count >>> 0; - if (property_count > 0) { - if (!properties) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - var propertyName = void 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < property_count; i++) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - propPtr = properties + (i * (4 * 8)); - var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); - var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); - var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); - var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); - var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); - var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); - attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); - var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); - if (utf8Name) { - propertyName = emnapiString.UTF8ToString(utf8Name, -1); - } - else { - if (!name_2) { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - propertyName = emnapiCtx.handleStore.get(name_2).value; - if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - } - emnapiDefineProperty(envObject, maybeObject, propertyName, method, getter, setter, value, attributes, data); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipp */ - function napi_object_freeze(env, object) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - Object.freeze(maybeObject); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipp */ - function napi_object_seal(env, object) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - Object.seal(maybeObject); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - var propertyMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_define_properties: napi_define_properties, - napi_delete_element: napi_delete_element, - napi_delete_property: napi_delete_property, - napi_get_all_property_names: napi_get_all_property_names, - napi_get_element: napi_get_element, - napi_get_named_property: napi_get_named_property, - napi_get_property: napi_get_property, - napi_get_property_names: napi_get_property_names, - napi_has_element: napi_has_element, - napi_has_named_property: napi_has_named_property, - napi_has_own_property: napi_has_own_property, - napi_has_property: napi_has_property, - napi_object_freeze: napi_object_freeze, - napi_object_seal: napi_object_seal, - napi_set_element: napi_set_element, - napi_set_named_property: napi_set_named_property, - napi_set_property: napi_set_property - }); - /** @__sig ippp */ - function napi_run_script(env, script, result) { - var status; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!script) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var v8Script = emnapiCtx.handleStore.get(script); - if (!v8Script.isString()) { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var g = emnapiCtx.handleStore.get(5 /* GlobalHandle.GLOBAL */).value; - var ret = g.eval(v8Script.value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(ret); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - status = envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - return status; - } - var scriptMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_run_script: napi_run_script - }); - /** @__sig ippp */ - function napi_typeof(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var v = emnapiCtx.handleStore.get(value); - var r; - if (v.isNumber()) { - r = 3 /* napi_valuetype.napi_number */; - } - else if (v.isBigInt()) { - r = 9 /* napi_valuetype.napi_bigint */; - } - else if (v.isString()) { - r = 4 /* napi_valuetype.napi_string */; - } - else if (v.isFunction()) { - // This test has to come before IsObject because IsFunction - // implies IsObject - r = 7 /* napi_valuetype.napi_function */; - } - else if (v.isExternal()) { - // This test has to come before IsObject because IsExternal - // implies IsObject - r = 8 /* napi_valuetype.napi_external */; - } - else if (v.isObject()) { - r = 6 /* napi_valuetype.napi_object */; - } - else if (v.isBoolean()) { - r = 2 /* napi_valuetype.napi_boolean */; - } - else if (v.isUndefined()) { - r = 0 /* napi_valuetype.napi_undefined */; - } - else if (v.isSymbol()) { - r = 5 /* napi_valuetype.napi_symbol */; - } - else if (v.isNull()) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - r = 1 /* napi_valuetype.napi_null */; - } - else { - // Should not get here unless V8 has added some new kind of value. - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_coerce_to_bool(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - v = handle.value ? 4 /* GlobalHandle.TRUE */ : 3 /* GlobalHandle.FALSE */; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_coerce_to_number(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (handle.isBigInt()) { - throw new TypeError('Cannot convert a BigInt value to a number'); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = emnapiCtx.addToCurrentScope(Number(handle.value)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_coerce_to_object(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (handle.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = envObject.ensureHandleId(Object(handle.value)); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_coerce_to_string(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (handle.isSymbol()) { - throw new TypeError('Cannot convert a Symbol value to a string'); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = emnapiCtx.addToCurrentScope(String(handle.value)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipppp */ - function napi_instanceof(env, object, constructor, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!constructor) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, 0, true); - var ctor = emnapiCtx.handleStore.get(constructor); - if (!ctor.isFunction()) { - return envObject.setLastError(5 /* napi_status.napi_function_expected */); - } - var val = emnapiCtx.handleStore.get(object).value; - var ret = val instanceof ctor.value; - r = ret ? 1 : 0; - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ippp */ - function napi_is_array(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isArray() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_arraybuffer(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isArrayBuffer() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function node_api_is_sharedarraybuffer(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]')) - ? 1 - : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_date(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isDate() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_error(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var val = emnapiCtx.handleStore.get(value).value; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = (val instanceof Error) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_typedarray(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isTypedArray() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_buffer(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_dataview(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isDataView() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - /** @__sig ipppp */ - function napi_strict_equals(env, lhs, rhs, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!lhs) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!rhs) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var lv = emnapiCtx.handleStore.get(lhs).value; - var rv = emnapiCtx.handleStore.get(rhs).value; - r = (lv === rv) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - /** @__sig ipp */ - function napi_detach_arraybuffer(env, arraybuffer) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var value = emnapiCtx.handleStore.get(arraybuffer).value; - if (!(value instanceof ArrayBuffer)) { - if (typeof SharedArrayBuffer === 'function' && (value instanceof SharedArrayBuffer)) { - return envObject.setLastError(20 /* napi_status.napi_detachable_arraybuffer_expected */); - } - return envObject.setLastError(19 /* napi_status.napi_arraybuffer_expected */); - } - try { - var MessageChannel_1 = emnapiCtx.feature.MessageChannel; - var messageChannel = new MessageChannel_1(); - messageChannel.port1.postMessage(value, [value]); - } - catch (_) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - return envObject.clearLastError(); - } - /** @__sig ippp */ - function napi_is_detached_arraybuffer(env, arraybuffer, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(arraybuffer); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (h.isArrayBuffer() && h.value.byteLength === 0) { - try { - // eslint-disable-next-line no-new - new Uint8Array(h.value); - } - catch (_) { - HEAP_DATA_VIEW.setInt8(result, 1, true); - return envObject.getReturnStatus(); - } - } - HEAP_DATA_VIEW.setInt8(result, 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } - } - var valueOperationMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_coerce_to_bool: napi_coerce_to_bool, - napi_coerce_to_number: napi_coerce_to_number, - napi_coerce_to_object: napi_coerce_to_object, - napi_coerce_to_string: napi_coerce_to_string, - napi_detach_arraybuffer: napi_detach_arraybuffer, - napi_instanceof: napi_instanceof, - napi_is_array: napi_is_array, - napi_is_arraybuffer: napi_is_arraybuffer, - napi_is_buffer: napi_is_buffer, - napi_is_dataview: napi_is_dataview, - napi_is_date: napi_is_date, - napi_is_detached_arraybuffer: napi_is_detached_arraybuffer, - napi_is_error: napi_is_error, - napi_is_typedarray: napi_is_typedarray, - napi_strict_equals: napi_strict_equals, - napi_typeof: napi_typeof, - node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer - }); - /** @__sig ipp */ - function napi_get_version(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var NODE_API_SUPPORTED_VERSION_MAX = 10 /* Version.NODE_API_SUPPORTED_VERSION_MAX */; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, NODE_API_SUPPORTED_VERSION_MAX, true); - return envObject.clearLastError(); - } - var versionMod = /*#__PURE__*/ Object.freeze({ - __proto__: null, - napi_get_version: napi_get_version - }); - emnapiAWST.init(); - emnapiExternalMemory.init(); - emnapiString.init(); - emnapiTSFN.init(); - PThread.init(); - napiModule.emnapi.syncMemory = $emnapiSyncMemory; - napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress; - function addImports(mod) { - var keys = Object.keys(mod); - for (var i = 0; i < keys.length; ++i) { - var k = keys[i]; - if (k.indexOf('$') === 0) - continue; - if (k.indexOf('emnapi_') === 0) { - napiModule.imports.emnapi[k] = mod[k]; - } - else if (k.indexOf('_emnapi_') === 0 || k === 'napi_set_last_error' || k === 'napi_clear_last_error') { - napiModule.imports.env[k] = mod[k]; - } - else { - napiModule.imports.napi[k] = mod[k]; - } - } - } - addImports(asyncMod); - addImports(memoryMod); - addImports(asyncWorkMod); - addImports(utilMod); - addImports(convert2cMod); - addImports(convert2napiMod); - addImports(createMod); - addImports(globalMod); - addImports(wrapMod); - addImports(envMod); - addImports(emnapiMod); - addImports(errorMod); - addImports(functionMod); - addImports(lifeMod); - addImports(miscellaneousMod); - addImports(nodeMod); - addImports(promiseMod); - addImports(propertyMod); - addImports(scriptMod); - addImports(valueOperationMod); - addImports(versionMod); - napiModule.imports.napi.napi_create_threadsafe_function = napi_create_threadsafe_function; - napiModule.imports.napi.napi_get_threadsafe_function_context = napi_get_threadsafe_function_context; - napiModule.imports.napi.napi_call_threadsafe_function = napi_call_threadsafe_function; - napiModule.imports.napi.napi_acquire_threadsafe_function = napi_acquire_threadsafe_function; - napiModule.imports.napi.napi_release_threadsafe_function = napi_release_threadsafe_function; - napiModule.imports.napi.napi_unref_threadsafe_function = napi_unref_threadsafe_function; - napiModule.imports.napi.napi_ref_threadsafe_function = napi_ref_threadsafe_function; - return napiModule; - })(); - return napiModule; - } - - function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) { - // eslint-disable-next-line @typescript-eslint/consistent-type-assertions - options = options !== null && options !== void 0 ? options : {}; - var getMemory = options.getMemory; - var getTable = options.getTable; - var beforeInit = options.beforeInit; - if (getMemory != null && typeof getMemory !== 'function') { - throw new TypeError('options.getMemory is not a function'); - } - if (getTable != null && typeof getTable !== 'function') { - throw new TypeError('options.getTable is not a function'); - } - if (beforeInit != null && typeof beforeInit !== 'function') { - throw new TypeError('options.beforeInit is not a function'); - } - var napiModule; - var isLoad = typeof userNapiModule === 'object' && userNapiModule !== null; - if (isLoad) { - if (userNapiModule.loaded) { - throw new Error('napiModule has already loaded'); - } - napiModule = userNapiModule; - } - else { - napiModule = createNapiModule(options); - } - var wasi = options.wasi; - var wasiThreads; - var importObject = { - env: napiModule.imports.env, - napi: napiModule.imports.napi, - emnapi: napiModule.imports.emnapi - }; - if (wasi) { - wasiThreads = new WASIThreads(napiModule.childThread - ? { - wasi: wasi, - childThread: true, - postMessage: napiModule.postMessage - } - : { - wasi: wasi, - threadManager: napiModule.PThread, - waitThreadStart: napiModule.waitThreadStart - }); - Object.assign(importObject, typeof wasi.getImportObject === 'function' - ? wasi.getImportObject() - : { wasi_snapshot_preview1: wasi.wasiImport }); - Object.assign(importObject, wasiThreads.getImportObject()); - } - var overwriteImports = options.overwriteImports; - if (typeof overwriteImports === 'function') { - var newImportObject = overwriteImports(importObject); - if (typeof newImportObject === 'object' && newImportObject !== null) { - importObject = newImportObject; - } - } - return loadFn(wasmInput, importObject, function (err, source) { - if (err) { - throw err; - } - var originalInstance = source.instance; - var instance = originalInstance; - var originalExports = originalInstance.exports; - var exportMemory = 'memory' in originalExports; - var importMemory = 'memory' in importObject.env; - var memory = getMemory - ? getMemory(originalExports) - : exportMemory - ? originalExports.memory - : importMemory - ? importObject.env.memory - : undefined; - if (!memory) { - throw new Error('memory is neither exported nor imported'); - } - var table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table; - if (wasi && !exportMemory) { - var exports_1 = Object.create(null); - Object.assign(exports_1, originalExports, { memory: memory }); - instance = { exports: exports_1 }; - } - var module = source.module; - if (wasi) { - instance = wasiThreads.initialize(instance, module, memory); - } - else { - napiModule.PThread.setup(module, memory); - } - var emnapiInit = function () { - if (beforeInit) { - beforeInit({ - instance: originalInstance, - module: module - }); - } - napiModule.init({ - instance: instance, - module: module, - memory: memory, - table: table - }); - var ret = { - instance: originalInstance, - module: module, - usedInstance: instance - }; - if (!isLoad) { - ret.napiModule = napiModule; - } - return ret; - }; - if (napiModule.PThread.shouldPreloadWorkers()) { - var poolReady = napiModule.PThread.loadWasmModuleToAllWorkers(); - if (loadFn === loadCallback) { - return poolReady.then(emnapiInit); - } - else { - throw new Error('Synchronous loading is not supported with worker pool (reuseWorker.size > 0)'); - } - } - return emnapiInit(); - }); - } - function loadCallback(wasmInput, importObject, callback) { - return load(wasmInput, importObject).then(function (source) { - return callback(null, source); - }, function (err) { - return callback(err); - }); - } - function loadSyncCallback(wasmInput, importObject, callback) { - var source; - try { - source = loadSync(wasmInput, importObject); - } - catch (err) { - return callback(err); - } - return callback(null, source); - } - /** @public */ - function loadNapiModule(napiModule, - /** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ - wasmInput, options) { - if (typeof napiModule !== 'object' || napiModule === null) { - throw new TypeError('Invalid napiModule'); - } - return loadNapiModuleImpl(loadCallback, napiModule, wasmInput, options); - } - /** @public */ - function loadNapiModuleSync(napiModule, wasmInput, options) { - if (typeof napiModule !== 'object' || napiModule === null) { - throw new TypeError('Invalid napiModule'); - } - return loadNapiModuleImpl(loadSyncCallback, napiModule, wasmInput, options); - } - /** @public */ - function instantiateNapiModule( - /** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ - wasmInput, options) { - return loadNapiModuleImpl(loadCallback, undefined, wasmInput, options); - } - /** @public */ - function instantiateNapiModuleSync(wasmInput, options) { - return loadNapiModuleImpl(loadSyncCallback, undefined, wasmInput, options); - } - - /****************************************************************************** - Copyright (c) Microsoft Corporation. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - 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. - ***************************************************************************** */ - /* global Reflect, Promise, SuppressedError, Symbol, Iterator */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - - typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; - }; - - /** @public */ - var MessageHandler = /*#__PURE__*/ (function (_super) { - __extends(MessageHandler, _super); - function MessageHandler(options) { - var _this = this; - if (typeof options.onLoad !== 'function') { - throw new TypeError('options.onLoad is not a function'); - } - var userOnError = options.onError; - _this = _super.call(this, __assign(__assign({}, options), { onError: function (err, type) { - var _a; - var emnapi_thread_crashed = (_a = _this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed; - if (typeof emnapi_thread_crashed === 'function') { - emnapi_thread_crashed(); - } /* else { - tryWakeUpPthreadJoin(this.instance!) - } */ - if (typeof userOnError === 'function') { - userOnError(err, type); - } - else { - throw err; - } - } })) || this; - _this.napiModule = undefined; - return _this; - } - MessageHandler.prototype.instantiate = function (data) { - var _this = this; - var source = this.onLoad(data); - var then = source.then; - if (typeof then === 'function') { - return source.then(function (result) { - _this.napiModule = result.napiModule; - return result; - }); - } - this.napiModule = source.napiModule; - return source; - }; - MessageHandler.prototype.handle = function (e) { - var _this = this; - var _a; - _super.prototype.handle.call(this, e); - if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { - var type = e.data.__emnapi__.type; - var payload_1 = e.data.__emnapi__.payload; - try { - if (type === 'async-worker-init') { - this.handleAfterLoad(e, function () { - _this.napiModule.initWorker(payload_1.arg); - }); - } - else if (type === 'async-work-execute') { - this.handleAfterLoad(e, function () { - _this.napiModule.executeAsyncWork(payload_1.work); - }); - } - } - catch (err) { - this.onError(err, type); - } - } - }; - return MessageHandler; - }(ThreadMessageHandler)); - // function tryWakeUpPthreadJoin (instance: WebAssembly.Instance): void { - // // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/thread/pthread_join.c#L18-L21 - // const pthread_self = instance.exports.pthread_self as () => number - // const memory = instance.exports.memory as WebAssembly.Memory - // if (typeof pthread_self === 'function') { - // const selfThread = pthread_self() - // if (selfThread && memory) { - // // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/internal/pthread_impl.h#L45 - // const detatchState = new Int32Array(memory.buffer, selfThread + 7 * 4 /** detach_state */, 1) - // Atomics.store(detatchState, 0, 0) - // Atomics.notify(detatchState, 0, Infinity) - // } - // } - // } - - var version = "1.8.1"; - - exports.MessageHandler = MessageHandler; - exports.ThreadManager = ThreadManager; - exports.ThreadMessageHandler = ThreadMessageHandler; - exports.WASIThreads = WASIThreads; - exports.createInstanceProxy = createInstanceProxy; - exports.createNapiModule = createNapiModule; - exports.instantiateNapiModule = instantiateNapiModule; - exports.instantiateNapiModuleSync = instantiateNapiModuleSync; - exports.isSharedArrayBuffer = isSharedArrayBuffer; - exports.isTrapError = isTrapError; - exports.loadNapiModule = loadNapiModule; - exports.loadNapiModuleSync = loadNapiModuleSync; - exports.version = version; - -})); diff --git a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts b/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts deleted file mode 100644 index f6e3cd4..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +++ /dev/null @@ -1,419 +0,0 @@ -/// - -import type { Context } from '@emnapi/runtime'; -import type { ReferenceOwnership } from '@emnapi/runtime'; -import type { Worker as Worker_2 } from 'worker_threads'; - -/** @public */ -export declare type BaseCreateOptions = { - filename?: string - nodeBinding?: NodeBinding - reuseWorker?: ThreadManagerOptionsMain['reuseWorker'] - asyncWorkPoolSize?: number - waitThreadStart?: MainThreadBaseOptions['waitThreadStart'] - onCreateWorker?: (info: CreateWorkerInfo) => any - print?: (str: string) => void - printErr?: (str: string) => void - postMessage?: (msg: any) => any -} - -/** @public */ -export declare interface BaseOptions { - wasi: WASIInstance; - version?: 'preview1'; - wasm64?: boolean; -} - -/** @public */ -export declare interface ChildThreadOptions extends BaseOptions { - childThread: true; - postMessage?: (data: any) => void; -} - -/** @public */ -export declare interface CleanupThreadPayload { - tid: number; -} - -/** @public */ -export declare interface CommandInfo { - type: T; - payload: CommandPayloadMap[T]; -} - -/** @public */ -export declare interface CommandPayloadMap { - load: LoadPayload; - loaded: LoadedPayload; - start: StartPayload; - 'cleanup-thread': CleanupThreadPayload; - 'terminate-all-threads': TerminateAllThreadsPayload; - 'spawn-thread': SpawnThreadPayload; -} - -/** @public */ -export declare type CommandType = keyof CommandPayloadMap; - -/** @public */ -export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; - -/** @public */ -export declare function createNapiModule ( -options: CreateOptions -): NapiModule - -/** @public */ -export declare type CreateOptions = BaseCreateOptions & ({ - context: Context - childThread?: boolean -} | { - context?: Context - childThread: true -}) - -/** @public */ -export declare interface CreateWorkerInfo { - type: 'thread' | 'async-work' - name: string -} - -/** @public */ -export declare interface InitOptions { - instance: WebAssembly.Instance - module: WebAssembly.Module - memory?: WebAssembly.Memory - table?: WebAssembly.Table -} - -export declare type InputType = string | URL | Response | BufferSource | WebAssembly.Module; - -/** @public */ -export declare interface InstantiatedSource extends LoadedSource { - napiModule: NapiModule; -} - -/** @public */ -export declare function instantiateNapiModule( -/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ -wasmInput: InputType | Promise, options: InstantiateOptions): Promise; - -/** @public */ -export declare function instantiateNapiModuleSync(wasmInput: BufferSource | WebAssembly.Module, options: InstantiateOptions): InstantiatedSource; - -/** @public */ -export declare type InstantiateOptions = CreateOptions & LoadOptions; - -/** @public */ -export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; - -/** @public */ -export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; - -/** @public */ -export declare interface LoadedPayload { -} - -/** @public */ -export declare interface LoadedSource extends WebAssembly.WebAssemblyInstantiatedSource { - usedInstance: WebAssembly.Instance; -} - -/** @public */ -export declare function loadNapiModule(napiModule: NapiModule, -/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ -wasmInput: InputType | Promise, options?: LoadOptions): Promise; - -/** @public */ -export declare function loadNapiModuleSync(napiModule: NapiModule, wasmInput: BufferSource | WebAssembly.Module, options?: LoadOptions): LoadedSource; - -/** @public */ -export declare interface LoadOptions { - wasi?: WASIInstance; - overwriteImports?: (importObject: WebAssembly.Imports) => WebAssembly.Imports; - beforeInit?: (source: WebAssembly.WebAssemblyInstantiatedSource) => void; - getMemory?: (exports: WebAssembly.Exports) => WebAssembly.Memory; - getTable?: (exports: WebAssembly.Exports) => WebAssembly.Table; -} - -/** @public */ -export declare interface LoadPayload { - wasmModule: WebAssembly.Module; - wasmMemory: WebAssembly.Memory; - sab?: Int32Array; -} - -/** @public */ -export declare interface MainThreadBaseOptions extends BaseOptions { - waitThreadStart?: boolean | number; -} - -/** @public */ -export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; - -/** @public */ -export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { -} - -/** @public */ -export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { - threadManager?: ThreadManager | (() => ThreadManager); -} - -/** @public */ -export declare interface MessageEventData { - __emnapi__: CommandInfo; -} - -/** @public */ -export declare class MessageHandler extends ThreadMessageHandler { - napiModule: NapiModule | undefined; - constructor(options: MessageHandlerOptions); - instantiate(data: LoadPayload): InstantiatedSource | PromiseLike; - handle(e: WorkerMessageEvent): void; -} - -/** @public */ -export declare interface MessageHandlerOptions extends ThreadMessageHandlerOptions { - onLoad: (data: LoadPayload) => InstantiatedSource | PromiseLike; -} - -/** @public */ -export declare interface NapiModule { - imports: { - env: any - napi: any - emnapi: any - } - exports: any - loaded: boolean - filename: string - childThread: boolean - emnapi: { - syncMemory ( - js_to_wasm: boolean, - arrayBufferOrView: T, - offset?: number, - len?: number - ): T - getMemoryAddress (arrayBufferOrView: ArrayBuffer | ArrayBufferView): PointerInfo - addSendListener (worker: any): boolean - } - - init (options: InitOptions): any - initWorker (arg: number): void - executeAsyncWork (work: number): void - postMessage?: (msg: any) => any - - waitThreadStart: boolean | number - /* Excluded from this release type: PThread */} - -/** @public */ -export declare interface NodeBinding { - node: { - emitAsyncInit: Function - emitAsyncDestroy: Function - makeCallback: Function - } - napi: { - asyncInit: Function - asyncDestroy: Function - makeCallback: Function - } -} - -/** @public */ -export declare interface PointerInfo { - address: number - ownership: ReferenceOwnership - runtimeAllocated: 0 | 1 -} - -/** @public */ -export declare interface ReuseWorkerOptions { - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} - */ - size: number; - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} - */ - strict?: boolean; -} - -/** @public */ -export declare interface SpawnThreadPayload { - startArg: number; - errorOrTid: number; -} - -/** @public */ -export declare interface StartPayload { - tid: number; - arg: number; - sab?: Int32Array; -} - -/** @public */ -export declare interface StartResult { - exitCode: number; - instance: WebAssembly.Instance; -} - -/** @public */ -export declare interface TerminateAllThreadsPayload { -} - -/** @public */ -export declare class ThreadManager { - unusedWorkers: WorkerLike[]; - runningWorkers: WorkerLike[]; - pthreads: Record; - get nextWorkerID(): number; - wasmModule: WebAssembly.Module | null; - wasmMemory: WebAssembly.Memory | null; - private readonly messageEvents; - private readonly _childThread; - private readonly _onCreateWorker; - private readonly _reuseWorker; - private readonly _beforeLoad?; - /* Excluded from this release type: printErr */ - constructor(options: ThreadManagerOptions); - init(): void; - initMainThread(): void; - private preparePool; - shouldPreloadWorkers(): boolean; - loadWasmModuleToAllWorkers(): Promise; - preloadWorkers(): Promise; - setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; - markId(worker: WorkerLike): number; - returnWorkerToPool(worker: WorkerLike): void; - loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; - allocateUnusedWorker(): WorkerLike; - getNewWorker(sab?: Int32Array): WorkerLike | undefined; - cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; - terminateWorker(worker: WorkerLike): void; - terminateAllThreads(): void; - addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; - fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; -} - -/** @public */ -export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; - -/** @public */ -export declare interface ThreadManagerOptionsBase { - printErr?: (message: string) => void; -} - -/** @public */ -export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { - childThread: true; -} - -/** @public */ -export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { - beforeLoad?: (worker: WorkerLike) => any; - reuseWorker?: boolean | number | ReuseWorkerOptions; - onCreateWorker: WorkerFactory; - childThread?: false; -} - -/** @public */ -export declare class ThreadMessageHandler { - protected instance: WebAssembly.Instance | undefined; - private messagesBeforeLoad; - protected postMessage: (message: any) => void; - protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - protected onError: (error: Error, type: WorkerMessageType) => void; - constructor(options?: ThreadMessageHandlerOptions); - /** @virtual */ - instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - /** @virtual */ - handle(e: WorkerMessageEvent>): void; - private _load; - private _start; - protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; - protected handleAfterLoad(e: E, f: (e: E) => void): void; -} - -/** @public */ -export declare interface ThreadMessageHandlerOptions { - onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - onError?: (error: Error, type: WorkerMessageType) => void; - postMessage?: (message: any) => void; -} - -export declare const version: string; - -/** @public */ -export declare interface WASIInstance { - readonly wasiImport?: Record; - initialize(instance: object): void; - start(instance: object): number; - getImportObject?(): any; -} - -/** @public */ -export declare class WASIThreads { - PThread: ThreadManager | undefined; - private wasmMemory; - private wasmInstance; - private readonly threadSpawn; - readonly childThread: boolean; - private readonly postMessage; - readonly wasi: WASIInstance; - constructor(options: WASIThreadsOptions); - getImportObject(): { - wasi: WASIThreadsImports; - }; - setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; - preloadWorkers(): Promise; - /** - * It's ok to call this method to a WASI command module. - * - * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module - * - * @returns A proxied WebAssembly instance if in child thread, other wise the original instance - */ - initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; - /** - * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} - * ```js - * this.initialize(instance, module, memory) - * this.wasi.start(instance) - * ``` - */ - start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; - terminateAllThreads(): void; -} - -/** @public */ -export declare interface WASIThreadsImports { - 'thread-spawn': (startArg: number, errorOrTid?: number) => number; -} - -/** @public */ -export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; - -/** @public */ -export declare type WorkerFactory = (ctx: { - type: string; - name: string; -}) => WorkerLike; - -/** @public */ -export declare type WorkerLike = (Worker | Worker_2) & { - whenLoaded?: Promise; - loaded?: boolean; - __emnapi_tid?: number; -}; - -/** @public */ -export declare interface WorkerMessageEvent { - data: T; -} - -/** @public */ -export declare type WorkerMessageType = 'load' | 'start'; - -export { } diff --git a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.min.js b/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.min.js deleted file mode 100644 index 728d9ba..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((r="undefined"!=typeof globalThis?globalThis:r||self).emnapiCore={})}(this,function(r){var e="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0;function t(r){if(r&&"object"!=typeof r)throw new TypeError("imports must be an object or undefined");return!0}function n(r,a){if(!r)throw new TypeError("Invalid wasm source");t(a),a=null!=a?a:{};try{var o="object"==typeof r&&null!==r&&"then"in r?r.then:void 0;if("function"==typeof o)return o.call(r,function(r){return n(r,a)})}catch(r){}if(r instanceof ArrayBuffer||ArrayBuffer.isView(r))return e.instantiate(r,a);if(r instanceof e.Module)return e.instantiate(r,a).then(function(e){return{instance:e,module:r}});if("undefined"!=typeof Response&&r instanceof Response)return r.arrayBuffer().then(function(r){return e.instantiate(r,a)});var i="string"==typeof r;if(i||"undefined"!=typeof URL&&r instanceof URL){if(i&&"undefined"!=typeof wx&&"undefined"!=typeof __wxConfig)return e.instantiate(r,a);if("function"!=typeof fetch)throw new TypeError("wasm source can not be a string or URL in this environment");if("function"!=typeof e.instantiateStreaming)return n(fetch(r),a);try{return e.instantiateStreaming(fetch(r),a).catch(function(){return n(fetch(r),a)})}catch(e){return n(fetch(r),a)}}throw new TypeError("Invalid wasm source")}var a="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0,o="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node;function i(r){return"function"==typeof(null==r?void 0:r.postMessage)?r.postMessage:"function"==typeof postMessage?postMessage:void 0}function s(r){return"function"==typeof SharedArrayBuffer&&r instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(r)}function u(r){try{return r instanceof a.RuntimeError}catch(r){return!1}}function f(r,e){return{__emnapi__:{type:r,payload:e}}}function c(r){if(r){if(!s(r.buffer))throw new Error("Multithread features require shared wasm memory. Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, then create WebAssembly.Memory with `shared: true` option")}else if("undefined"==typeof SharedArrayBuffer)throw new Error("Current environment does not support SharedArrayBuffer, threads are not available!")}var l=0,d=function(){function r(r){var e;if(this.unusedWorkers=[],this.runningWorkers=[],this.pthreads=Object.create(null),this.wasmModule=null,this.wasmMemory=null,this.messageEvents=new WeakMap,!r)throw new TypeError("ThreadManager(): options is not provided");this._childThread="childThread"in r&&Boolean(r.childThread),this._childThread?(this._onCreateWorker=void 0,this._reuseWorker=!1,this._beforeLoad=void 0):(this._onCreateWorker=r.onCreateWorker,this._reuseWorker=function(r){var e;if("boolean"==typeof r)return!!r&&{size:0,strict:!1};if("number"==typeof r){if(!(r>=0))throw new RangeError("reuseWorker: size must be a non-negative integer");return{size:r,strict:!1}}if(!r)return!1;var t=null!==(e=Number(r.size))&&void 0!==e?e:0,n=Boolean(r.strict);if(!(t>0)&&n)throw new RangeError("reuseWorker: size must be set to positive integer if strict is set to true");return{size:t,strict:n}}(r.reuseWorker),this._beforeLoad=r.beforeLoad),this.printErr=null!==(e=r.printErr)&&void 0!==e?e:console.error.bind(console)}return Object.defineProperty(r.prototype,"nextWorkerID",{get:function(){return l},enumerable:!1,configurable:!0}),r.prototype.init=function(){this._childThread||this.initMainThread()},r.prototype.initMainThread=function(){this.preparePool()},r.prototype.preparePool=function(){if(this._reuseWorker&&this._reuseWorker.size)for(var r=this._reuseWorker.size;r--;){var e=this.allocateUnusedWorker();o&&(e.once("message",function(){}),e.unref())}},r.prototype.shouldPreloadWorkers=function(){return!this._childThread&&this._reuseWorker&&this._reuseWorker.size>0},r.prototype.loadWasmModuleToAllWorkers=function(){for(var r=this,e=Array(this.unusedWorkers.length),t=function(r){var t=n.unusedWorkers[r];o&&t.ref(),e[r]=n.loadWasmModuleToWorker(t).then(function(r){return o&&t.unref(),r},function(r){throw o&&t.unref(),r})},n=this,a=0;a1){try{S.cleanThread(m,L,!0)}catch(r){}throw function(r){var e,t,n=new Int32Array(r);if(Atomics.load(n,0)<=1)return null;var o=Atomics.load(n,1),i=Atomics.load(n,2),s=Atomics.load(n,3),u=new Uint8Array(r),f=u.slice(16,16+o),c=u.slice(16+o,16+o+i),l=u.slice(16+o+i,16+o+i+s),d=(new TextDecoder).decode(f),p=(new TextDecoder).decode(c),v=(new TextDecoder).decode(l),h=new(null!==(e=globalThis[d])&&void 0!==e?e:"RuntimeError"===d&&null!==(t=a.RuntimeError)&&void 0!==t?t:Error)(p);return Object.defineProperty(h,"stack",{value:v,writable:!0,enumerable:!1,configurable:!0}),h}(w.buffer)}}}catch(r){return Atomics.store(g,0,1),Atomics.store(g,1,6),Atomics.notify(g,1),null==S||S.printErr(r.stack),u?1:(y(t),-6)}return Atomics.store(g,0,0),Atomics.store(g,1,L),Atomics.notify(g,1),S.runningWorkers.push(m),b||m.whenLoaded.catch(function(r){throw delete m.whenLoaded,S.cleanThread(m,L,!0),r}),u?0:(y(t),L)};this.threadSpawn=v}return r.prototype.getImportObject=function(){return{wasi:{"thread-spawn":this.threadSpawn}}},r.prototype.setup=function(r,e,t){null!=t||(t=r.exports.memory),this.wasmInstance=r,this.wasmMemory=t,this.PThread&&this.PThread.setup(e,t)},r.prototype.preloadWorkers=function(){return this.PThread?this.PThread.preloadWorkers():Promise.resolve([])},r.prototype.initialize=function(r,e,t){var n=r.exports;null!=t||(t=n.memory),this.childThread&&(r=v(r,t)),this.setup(r,e,t);var a=this.wasi;if("_start"in n&&"function"==typeof n._start)if(this.childThread){a.start(r);try{a[g(a,"kStarted")]=!1}catch(r){}}else!function(r,e){var t=g(r,["kInstance","kSetMemory"]),n=t[0],a=t[1];r[n]=e,r[a](e.exports.memory)}(a,r);else a.initialize(r);return r},r.prototype.start=function(r,e,t){var n=r.exports;return null!=t||(t=n.memory),this.childThread&&(r=v(r,t)),this.setup(r,e,t),{exitCode:this.wasi.start(r),instance:r}},r.prototype.terminateAllThreads=function(){var r;this.childThread?this.postMessage(f("terminate-all-threads",{})):null===(r=this.PThread)||void 0===r||r.terminateAllThreads()},r}();function g(r,e){var t=Object.getOwnPropertySymbols(r),n=function(r){return function(e){return e.description?e.description===r:e.toString()==="Symbol(".concat(r,")")}};return Array.isArray(e)?e.map(function(r){return t.filter(n(r))[0]}):t.filter(n(e))[0]}var _=function(){function r(r){var e=i(r);if("function"!=typeof e)throw new TypeError("options.postMessage is not a function");this.postMessage=e,this.onLoad=null==r?void 0:r.onLoad,this.onError="function"==typeof(null==r?void 0:r.onError)?r.onError:function(r,e){throw e},this.instance=void 0,this.messagesBeforeLoad=[]}return r.prototype.instantiate=function(r){if("function"==typeof this.onLoad)return this.onLoad(r);throw new Error("ThreadMessageHandler.prototype.instantiate is not implemented")},r.prototype.handle=function(r){var e,t=this;if(null===(e=null==r?void 0:r.data)||void 0===e?void 0:e.__emnapi__){var n=r.data.__emnapi__.type,a=r.data.__emnapi__.payload;try{"load"===n?this._load(a):"start"===n&&this.handleAfterLoad(r,function(){t._start(a)})}catch(r){this.onError(r,n)}}},r.prototype._load=function(r){var e=this;if(void 0===this.instance){var t;try{t=this.instantiate(r)}catch(e){return void this._loaded(e,null,r)}var n=t&&"then"in t?t.then:void 0;"function"==typeof n?n.call(t,function(t){e._loaded(null,t,r)},function(t){e._loaded(t,null,r)}):this._loaded(null,t,r)}},r.prototype._start=function(r){var e=this.instance.exports.wasi_thread_start;if("function"!=typeof e){var t=new TypeError("wasi_thread_start is not exported");throw E(r.sab,2,t),t}var n=this.postMessage,a=r.tid,o=r.arg;E(r.sab,1);try{e(a,o)}catch(t){if("unwind"!==t)throw t;return}n(f("cleanup-thread",{tid:a}))},r.prototype._loaded=function(r,e,t){if(r)throw E(t.sab,2,r),r;if(null==e){var n=new TypeError("onLoad should return an object");throw E(t.sab,2,n),n}var a=e.instance;if(!a){var o=new TypeError('onLoad should return an object which includes "instance"');throw E(t.sab,2,o),o}this.instance=a,(0,this.postMessage)(f("loaded",{}));var i=this.messagesBeforeLoad;this.messagesBeforeLoad=[];for(var s=0;s1&&t){var a=t.name,o=t.message,i=t.stack,s=(new TextEncoder).encode(a),u=(new TextEncoder).encode(o),f=(new TextEncoder).encode(i);Atomics.store(n,1,s.length),Atomics.store(n,2,u.length),Atomics.store(n,3,f.length);var c=new Uint8Array(r);c.set(s,16),c.set(u,16+s.length),c.set(f,16+s.length+u.length)}}(r.buffer,e,t),Atomics.notify(r,0))}function w(r){var t=function(){var t,n,a,o,i,s="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node,u=Boolean(r.childThread),f="number"==typeof r.waitThreadStart?r.waitThreadStart:Boolean(r.waitThreadStart);function c(r){if("function"==typeof e.RuntimeError)throw new e.RuntimeError(r);throw Error(r)}var l,p,v,h={imports:{env:{},napi:{},emnapi:{}},exports:{},emnapi:{},loaded:!1,filename:"",childThread:u,initWorker:void 0,executeAsyncWork:void 0,waitThreadStart:f,PThread:void 0,init:function(r){if(h.loaded)return h.exports;if(!r)throw new TypeError("Invalid napi init options");var s=r.instance;if(!(null==s?void 0:s.exports))throw new TypeError("Invalid wasm instance");t=s;var u=s.exports,f=r.module,d=r.memory||u.memory,v=r.table||u.__indirect_function_table;if(!(f instanceof e.Module))throw new TypeError("Invalid wasm module");if(!(d instanceof e.Memory))throw new TypeError("Invalid wasm memory");if(!(v instanceof e.Table))throw new TypeError("Invalid wasm table");if(n=d,a=v,"function"!=typeof u.malloc)throw new TypeError("malloc is not exported");if("function"!=typeof u.free)throw new TypeError("free is not exported");if(o=u.malloc,i=u.free,!h.childThread){var y=8,g=s.exports.node_api_module_get_api_version_v1;"function"==typeof g&&(y=g());var _=h.envObject||(h.envObject=l.createEnv(h.filename,y,function(r){return a.get(r)},function(r){return a.get(r)},c,p)),E=l.openScope(_);try{_.callIntoModule(function(r){var e=h.exports,t=E.add(e),n=(0,s.exports.napi_register_wasm_v1)(r.id,t.id);h.exports=n?l.handleStore.get(n).value:e})}catch(r){if("unwind"!==r)throw r}finally{l.closeScope(_,E)}return h.loaded=!0,delete h.envObject,h.exports}}},y=void 0;if(u){l=null==r?void 0:r.context;var g="function"==typeof r.postMessage?r.postMessage:"function"==typeof postMessage?postMessage:void 0;if("function"!=typeof g)throw new TypeError("No postMessage found");h.postMessage=g}else{var _=r.context;if("object"!=typeof _||null===_)throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`");l=_}if("string"==typeof r.filename&&(h.filename=r.filename),"function"==typeof r.onCreateWorker&&(y=r.onCreateWorker),"function"==typeof r.print?r.print:console.log.bind(console),v="function"==typeof r.printErr?r.printErr:console.warn.bind(console),"nodeBinding"in r){var E=r.nodeBinding;if("object"!=typeof E||null===E)throw new TypeError("Invalid `options.nodeBinding`. Use @emnapi/node-binding package");p=E}var w=0;if("asyncWorkPoolSize"in r){if("number"!=typeof r.asyncWorkPoolSize)throw new TypeError("options.asyncWorkPoolSize must be a integer");(w=r.asyncWorkPoolSize|0)>1024?w=1024:w<-1024&&(w=-1024)}var m=!u&&w<=0;function L(){return Math.abs(w)}function b(r){if(!r)return!1;if(r._emnapiSendListener)return!0;var e=function(r){var e=(s?r:r.data).__emnapi__;if(e&&"async-send"===e.type)if(u){(0,h.postMessage)({__emnapi__:e})}else{var t=e.payload.callback;a.get(t)(e.payload.data)}};return r._emnapiSendListener={handler:e,dispose:function(){s?r.off("message",e):r.removeEventListener("message",e,!1),delete r._emnapiSendListener}},s?r.on("message",e):r.addEventListener("message",e,!1),!0}h.imports.env._emnapi_async_work_pool_size=L,h.emnapi.addSendListener=b;var S=new d(u?{printErr:v,childThread:!0}:{printErr:v,beforeLoad:function(r){b(r)},reuseWorker:r.reuseWorker,onCreateWorker:y});function A(r,e){l.feature.setImmediate(function(){a.get(r)(e)})}function C(r,e){Promise.resolve().then(function(){a.get(r)(e)})}function k(r,e){var t,a=[e>>>0,(t=e,+Math.abs(t)>=1?t>0?(0|Math.min(+Math.floor(t/4294967296),4294967295))>>>0:~~+Math.ceil((t-+(~~t>>>0))/4294967296)>>>0:0)],o=new DataView(n.buffer);o.setInt32(r,a[0],!0),o.setInt32(r+4,a[1],!0)}h.PThread=S;var I,T=Object.freeze({__proto__:null,$emnapiSetValueI64:k,_emnapi_call_finalizer:function(r,e,t,n,a){l.envStore.get(e).callFinalizerInternal(r,t,n,a)},_emnapi_callback_into_module:function(r,e,t,n,o){var i=l.envStore.get(e),s=l.openScope(i);try{i.callbackIntoModule(Boolean(r),function(){a.get(t)(e,n)})}catch(r){throw l.closeScope(i,s),o&&l.closeScope(i),r}l.closeScope(i,s)},_emnapi_close_handle_scope:function(r){return l.closeScope()},_emnapi_ctx_decrease_waiting_request_counter:function(){l.decreaseWaitingRequestCounter()},_emnapi_ctx_increase_waiting_request_counter:function(){l.increaseWaitingRequestCounter()},_emnapi_get_node_version:function(r,e,t){var a="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node?process.versions.node.split(".").map(function(r){return Number(r)}):[0,0,0],o=new DataView(n.buffer);o.setUint32(r,a[0],!0),o.setUint32(e,a[1],!0),o.setUint32(t,a[2],!0)},_emnapi_get_now:function(){return performance.timeOrigin+performance.now()},_emnapi_is_main_browser_thread:function(){return"undefined"==typeof window||"undefined"==typeof document||s?0:1},_emnapi_is_main_runtime_thread:function(){return u?0:1},_emnapi_next_tick:C,_emnapi_open_handle_scope:function(){return l.openScope().id},_emnapi_runtime_keepalive_pop:function(){},_emnapi_runtime_keepalive_push:function(){},_emnapi_set_immediate:A,_emnapi_unwind:function(){throw"unwind"},napi_clear_last_error:function(r){return l.envStore.get(r).clearLastError()},napi_set_last_error:function(r,e,t,n){return l.envStore.get(r).setLastError(e,t,n)}});function V(r){var e=new DataView(n.buffer).getInt32(r+20,!0);return S.pthreads[e]}var U=new Promise(function(r){I=function(){U.ready=!0,r()}});U.ready=!1;var B=Object.freeze({__proto__:null,_emnapi_after_uvthreadpool_ready:function(r,e,t){U.ready?a.get(r)(e,t):U.then(function(){a.get(r)(e,t)})},_emnapi_async_send_js:function(r,e,t){if(u)(0,h.postMessage)({__emnapi__:{type:"async-send",payload:{callback:e,data:t}}});else switch(r){case 0:A(e,t);break;case 1:C(e,t)}},_emnapi_emit_async_thread_ready:function(){u&&(0,h.postMessage)({__emnapi__:{type:"async-thread-ready",payload:{}}})},_emnapi_tell_js_uvthreadpool:function(r,e){for(var t=[],a=new DataView(n.buffer),o=function(e){var n=V(a.getUint32(r+4*e,!0));t.push(new Promise(function(r){var e=function(t){var a=(s?t:t.data).__emnapi__;a&&"async-thread-ready"===a.type&&(r(),n&&"function"==typeof n.unref&&n.unref(),s?n.off("message",e):n.removeEventListener("message",e))};s?n.on("message",e):n.addEventListener("message",e)}))},i=0;i>16)?a.setLastError(9):(l.feature.supportBigInt?new DataView(n.buffer).setBigInt64(t,BigInt(n.buffer.byteLength),!0):k(t,n.buffer.byteLength),a.clearLastError())}}),x={idGen:{},values:[void 0],queued:new Set,pending:[],init:function(){var r={nextId:1,list:[],generate:function(){var e;return r.list.length?e=r.list.shift():(e=r.nextId,r.nextId++),e},reuse:function(e){r.list.push(e)}};x.idGen=r,x.values=[void 0],x.queued=new Set,x.pending=[]},create:function(r,e,t,n,a,o){var i=0,s=0;if(p){var u=p.node.emitAsyncInit(e,t,-1);i=u.asyncId,s=u.triggerAsyncId}var f=x.idGen.generate();return x.values[f]={env:r,id:f,resource:e,asyncId:i,triggerAsyncId:s,status:0,execute:n,complete:a,data:o},f},callComplete:function(r,e){var t=r.complete,n=r.env,o=r.data,i=function(){if(t){var r=l.envStore.get(n),i=l.openScope(r);try{r.callbackIntoModule(!0,function(){a.get(t)(n,e,o)})}finally{l.closeScope(r,i)}}};p?p.node.makeCallback(r.resource,i,[],{asyncId:r.asyncId,triggerAsyncId:r.triggerAsyncId}):i()},queue:function(r){var e=x.values[r];if(e&&0===e.status){if(e.status=1,x.queued.size>=(Math.abs(w)||4))return void x.pending.push(r);x.queued.add(r);var t=e.env,n=e.data,o=e.execute;e.status=2,l.feature.setImmediate(function(){if(a.get(o)(t,n),x.queued.delete(r),e.status=3,l.feature.setImmediate(function(){x.callComplete(e,0)}),x.pending.length>0){var i=x.pending.shift();x.values[i].status=0,x.queue(i)}})}},cancel:function(r){var e=x.pending.indexOf(r);if(-1!==e){var t=x.values[r];return t&&1===t.status?(t.status=4,x.pending.splice(e,1),l.feature.setImmediate(function(){x.callComplete(t,11)}),0):9}return 9},remove:function(r){var e=x.values[r];e&&(p&&p.node.emitAsyncDestroy({asyncId:e.asyncId,triggerAsyncId:e.triggerAsyncId}),x.values[r]=void 0,x.idGen.reuse(r))}};function M(r,e,t,a){if(p){var o=l.handleStore.get(r).value,i=l.handleStore.get(e).value,s=p.node.emitAsyncInit(o,i,t),u=s.asyncId,f=s.triggerAsyncId;if(a){var c=new DataView(n.buffer);c.setFloat64(a,u,!0),c.setFloat64(a+8,f,!0)}}}function W(r,e){p&&p.node.emitAsyncDestroy({asyncId:r,triggerAsyncId:e})}var j=Object.freeze({__proto__:null,_emnapi_async_destroy_js:function(r){if(!p)return 9;var e=new DataView(n.buffer),t=e.getInt32(r,!0),a=e.getInt32(r+4,!0),o=BigInt(t>>>0)|BigInt(a)<=BigInt(-1)*(BigInt(1)<=BigInt(1)<>BigInt(32)),c=new DataView(n.buffer);return c.setInt32(t,u,!0),c.setInt32(t+4,f,!0),0},_emnapi_env_check_gc_access:function(r){l.envStore.get(r).checkGCAccess()},_emnapi_node_emit_async_destroy:W,_emnapi_node_emit_async_init:M,_emnapi_node_make_callback:function(r,e,t,a,o,i,s,u){var f,c=0;if(p){var d=l.handleStore.get(e).value,v=l.handleStore.get(t).value;o>>>=0;for(var h=Array(o),y=new DataView(n.buffer);c=10?23:10);c.clearLastError();try{if(!p)return c.setLastError(9);if(!t)return c.setLastError(1);if(o>0&&!i)return c.setLastError(1);var d=Object(l.handleStore.get(t).value),v=l.handleStore.get(a).value;if("function"!=typeof v)return c.setLastError(1);var h=new DataView(n.buffer),y=h.getInt32(e,!0),g=h.getInt32(e+4,!0),_=BigInt(y>>>0)|BigInt(g)<>>=0;for(var E=Array(o);f=t&&t>0&&!n},i="undefined"!=typeof window&&"undefined"!=typeof document&&!s;return n.execute(function(){for(;o();){if(0===t)return 15;if(i)return 21;a.wait()}return O.getIsClosing(r)?0===O.getThreadCount(r)?1:(O.subThreadCount(r),16):(O.pushQueue(r,e),O.send(r),0)})},getMutex:function(r){var e=r+O.offset.mutex,t={lock:function(){var r="undefined"!=typeof window&&"undefined"!=typeof document&&!s,t=new Int32Array(n.buffer,e,1);if(r)for(;;){if(0===Atomics.compareExchange(t,0,0,1))return}else for(;;){if(0===Atomics.compareExchange(t,0,0,1))return;Atomics.wait(t,0,1)}},unlock:function(){var r=new Int32Array(n.buffer,e,1);if(1!==Atomics.compareExchange(r,0,1,0))throw new Error("Tried to unlock while not holding the mutex");Atomics.notify(r,0,1)},execute:function(r){t.lock();try{return r()}finally{t.unlock()}}};return t},getCond:function(r){var e=r+O.offset.cond,t=O.getMutex(r);return{wait:function(){var r=new Int32Array(n.buffer,e,1),a=Atomics.load(r,0);t.unlock(),Atomics.wait(r,0,a),t.lock()},signal:function(){var r=new Int32Array(n.buffer,e,1);Atomics.add(r,0,1),Atomics.notify(r,0,1)}}},getQueueSize:function(r){return O.loadSizeTypeValue(r+O.offset.queue_size,!0)},addQueueSize:function(r){var e,t,a=O.offset.queue_size;e=new Uint32Array(n.buffer),t=r+a>>2,Atomics.add(e,t,1)},subQueueSize:function(r){var e,t,a=O.offset.queue_size;e=new Uint32Array(n.buffer),t=r+a>>2,Atomics.sub(e,t,1)},getThreadCount:function(r){return O.loadSizeTypeValue(r+O.offset.thread_count,!0)},addThreadCount:function(r){var e,t,a=O.offset.thread_count;e=new Uint32Array(n.buffer),t=r+a>>2,Atomics.add(e,t,1)},subThreadCount:function(r){var e,t,a=O.offset.thread_count;e=new Uint32Array(n.buffer),t=r+a>>2,Atomics.sub(e,t,1)},getIsClosing:function(r){return Atomics.load(new Int32Array(n.buffer),r+O.offset.is_closing>>2)},setIsClosing:function(r,e){Atomics.store(new Int32Array(n.buffer),r+O.offset.is_closing>>2,e)},getHandlesClosing:function(r){return Atomics.load(new Int32Array(n.buffer),r+O.offset.handles_closing>>2)},setHandlesClosing:function(r,e){Atomics.store(new Int32Array(n.buffer),r+O.offset.handles_closing>>2,e)},getDispatchState:function(r){return Atomics.load(new Uint32Array(n.buffer),r+O.offset.dispatch_state>>2)},getContext:function(r){return O.loadSizeTypeValue(r+O.offset.context,!1)},getMaxQueueSize:function(r){return O.loadSizeTypeValue(r+O.offset.max_queue_size,!0)},getEnv:function(r){return O.loadSizeTypeValue(r+O.offset.env,!1)},getCallJSCb:function(r){return O.loadSizeTypeValue(r+O.offset.call_js_cb,!1)},getRef:function(r){return O.loadSizeTypeValue(r+O.offset.ref,!1)},getResource:function(r){return O.loadSizeTypeValue(r+O.offset.resource,!1)},getFinalizeCb:function(r){return O.loadSizeTypeValue(r+O.offset.finalize_cb,!1)},getFinalizeData:function(r){return O.loadSizeTypeValue(r+O.offset.finalize_data,!1)},loadSizeTypeValue:function(r,e){var t;return e?(t=new Uint32Array(n.buffer),Atomics.load(t,r>>2)):(t=new Int32Array(n.buffer),Atomics.load(t,r>>2))},storeSizeTypeValue:function(r,e,t){var a;return t?(a=new Uint32Array(n.buffer),void Atomics.store(a,r>>2,e)):(a=new Int32Array(n.buffer),void Atomics.store(a,r>>2,e>>>0))},destroy:function(r){O.destroyQueue(r);var e=O.getEnv(r),t=l.envStore.get(e),a=O.getRef(r);a&&l.refStore.get(a).dispose(),l.removeCleanupHook(t,O.cleanup,r),t.unref();var o=r+O.offset.async_ref>>2,s=new Int32Array(n.buffer);Atomics.load(s,o)&&(Atomics.store(s,o,0),l.decreaseWaitingRequestCounter());var u=O.getResource(r);if(l.refStore.get(u).dispose(),p){var f=new DataView(n.buffer);W(f.getFloat64(r+O.offset.async_id,!0),f.getFloat64(r+O.offset.trigger_async_id,!0))}i(r)},emptyQueueAndDelete:function(r){for(var e,t=O.getCallJSCb(r),n=O.getContext(r);O.getQueueSize(r)>0;)e=O.shiftQueue(r),t&&a.get(t)(0,0,n,e);O.destroy(r)},finalize:function(r){var e=O.getEnv(r),t=l.envStore.get(e);l.openScope(t);var a=O.getFinalizeCb(r),o=O.getFinalizeData(r),i=O.getContext(r),s=function(){t.callFinalizerInternal(0,a,o,i)};try{if(a)if(p){var u=O.getResource(r),f=l.refStore.get(u).get(),c=l.handleStore.get(f).value,d=new DataView(n.buffer),v=d.getFloat64(r+O.offset.async_id,!0),h=d.getFloat64(r+O.offset.trigger_async_id,!0);p.node.makeCallback(c,s,[],{asyncId:v,triggerAsyncId:h})}else s();O.emptyQueueAndDelete(r)}finally{l.closeScope(t)}},cleanup:function(r){O.closeHandlesAndMaybeDelete(r,1)},closeHandlesAndMaybeDelete:function(r,e){var t=O.getEnv(r),n=l.envStore.get(t);l.openScope(n);try{if(e&&O.getMutex(r).execute(function(){O.setIsClosing(r,1),O.getMaxQueueSize(r)>0&&O.getCond(r).signal()}),O.getHandlesClosing(r))return;O.setHandlesClosing(r,1),l.feature.setImmediate(function(){O.finalize(r)})}finally{l.closeScope(n)}},dispatchOne:function(r){var e=0,t=!1,o=!1,i=O.getMutex(r),s=O.getCond(r);if(i.execute(function(){if(O.getIsClosing(r))O.closeHandlesAndMaybeDelete(r,0);else{var n=O.getQueueSize(r);if(n>0){e=O.shiftQueue(r),t=!0;var a=O.getMaxQueueSize(r);n===a&&a>0&&s.signal(),n--}0===n?0===O.getThreadCount(r)&&(O.setIsClosing(r,1),O.getMaxQueueSize(r)>0&&s.signal(),O.closeHandlesAndMaybeDelete(r,0)):o=!0}}),t){var u=O.getEnv(r),f=l.envStore.get(u);l.openScope(f);var c=function(){f.callbackIntoModule(!1,function(){var t=O.getCallJSCb(r),n=O.getRef(r),o=n?l.refStore.get(n).get():0;if(t){var i=O.getContext(r);a.get(t)(u,o,i,e)}else{var s=o?l.handleStore.get(o).value:null;"function"==typeof s&&s()}})};try{if(p){var d=O.getResource(r),v=l.refStore.get(d).get(),h=l.handleStore.get(v).value,y=new DataView(n.buffer);p.node.makeCallback(h,c,[],{asyncId:y.getFloat64(r+O.offset.async_id,!0),triggerAsyncId:y.getFloat64(r+O.offset.trigger_async_id,!0)})}else c()}finally{l.closeScope(f)}}return o},dispatch:function(r){for(var e=!0,t=1e3,a=new Uint32Array(n.buffer),o=r+O.offset.dispatch_state>>2;e&&0!==--t;)Atomics.store(a,o,1),e=O.dispatchOne(r),1!==Atomics.exchange(a,o,0)&&(e=!0);e&&O.send(r)},send:function(r){1&~Atomics.or(new Uint32Array(n.buffer),r+O.offset.dispatch_state>>2,2)&&(void 0!==u&&u?postMessage({__emnapi__:{type:"tsfn-send",payload:{tsfn:r}}}):l.feature.setImmediate(function(){O.dispatch(r)}))}};var R={unusedWorkers:[],runningWorkers:[],workQueue:[],workerReady:null,offset:{resource:0,async_id:8,trigger_async_id:16,env:24,data:28,execute:32,complete:36,end:40},init:function(){R.unusedWorkers=[],R.runningWorkers=[],R.workQueue=[],R.workerReady=null},addListener:function(r){if(!r)return!1;if(r._emnapiAWMTListener)return!0;var e=function(e){var t=(s?e:e.data).__emnapi__;if(t){var n=t.type,a=t.payload;"async-work-complete"===n?(l.decreaseWaitingRequestCounter(),R.runningWorkers.splice(R.runningWorkers.indexOf(r),1),R.unusedWorkers.push(r),R.checkIdleWorker(),R.callComplete(a.work,0)):"async-work-queue"===n?R.scheduleWork(a.work):"async-work-cancel"===n&&R.cancelWork(a.work)}};return r._emnapiAWMTListener={handler:e,dispose:function(){s?r.off("message",e):r.removeEventListener("message",e,!1),delete r._emnapiAWMTListener}},s?r.on("message",e):r.addEventListener("message",e,!1),!0},initWorkers:function(r){if(u)return R.workerReady||(R.workerReady=Promise.resolve());if(R.workerReady)return R.workerReady;if("function"!=typeof y)throw new TypeError("`options.onCreateWorker` is not a function");var e=[],n=[];if(!("emnapi_async_worker_create"in t.exports))throw new TypeError("`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags");for(var a=0;a0&&R.workQueue.length>0){var r=R.unusedWorkers.shift(),e=R.workQueue.shift();R.runningWorkers.push(r),r.postMessage({__emnapi__:{type:"async-work-execute",payload:{work:e}}})}},getResource:function(r){return O.loadSizeTypeValue(r+R.offset.resource,!1)},getExecute:function(r){return O.loadSizeTypeValue(r+R.offset.execute,!1)},getComplete:function(r){return O.loadSizeTypeValue(r+R.offset.complete,!1)},getEnv:function(r){return O.loadSizeTypeValue(r+R.offset.env,!1)},getData:function(r){return O.loadSizeTypeValue(r+R.offset.data,!1)},scheduleWork:function(r){var e;if(u)(0,h.postMessage)({__emnapi__:{type:"async-work-queue",payload:{work:r}}});else if(l.increaseWaitingRequestCounter(),R.workQueue.push(r),null===(e=R.workerReady)||void 0===e?void 0:e.ready)R.checkIdleWorker();else{var t=function(r){throw l.decreaseWaitingRequestCounter(),r};try{R.initWorkers(L()).then(function(){R.workerReady.ready=!0,R.checkIdleWorker()},t)}catch(r){t(r)}}},cancelWork:function(r){if(u)return(0,h.postMessage)({__emnapi__:{type:"async-work-cancel",payload:{work:r}}}),0;var e=R.workQueue.indexOf(r);return-1!==e?(R.workQueue.splice(e,1),l.feature.setImmediate(function(){l.decreaseWaitingRequestCounter(),R.checkIdleWorker(),R.callComplete(r,11)}),0):9},callComplete:function(r,e){var t=R.getComplete(r),o=R.getEnv(r),i=R.getData(r),s=l.envStore.get(o),u=l.openScope(s),f=function(){t&&s.callbackIntoModule(!0,function(){a.get(t)(o,e,i)})};try{if(p){var c=R.getResource(r),d=l.refStore.get(c).get(),v=l.handleStore.get(d).value,h=new DataView(n.buffer),y=h.getFloat64(r+R.offset.async_id,!0),g=h.getFloat64(r+R.offset.trigger_async_id,!0);p.node.makeCallback(v,f,[],{asyncId:y,triggerAsyncId:g})}else f()}finally{l.closeScope(s,u)}}},z=m?function(r,e,t,a,o,i,s){if(!r)return 1;var u,f=l.envStore.get(r);if(f.checkGCAccess(),!a)return f.setLastError(1);if(!s)return f.setLastError(1);if(u=e?Object(l.handleStore.get(e).value):{},!t)return f.setLastError(1);var c=String(l.handleStore.get(t).value),d=x.create(r,u,c,a,o,i);return new DataView(n.buffer).setUint32(s,d,!0),f.clearLastError()}:function(r,e,t,a,i,s,u){if(!r)return 1;var f,c=l.envStore.get(r);if(c.checkGCAccess(),!a)return c.setLastError(1);if(!u)return c.setLastError(1);if(f=e?Object(l.handleStore.get(e).value):{},!t)return c.setLastError(1);var d=R.offset.end,p=o(d);if(!p)return c.setLastError(9);new Uint8Array(n.buffer).subarray(p,p+d).fill(0);var v=c.ensureHandleId(f),h=l.createReference(c,v,1,1).id,y=new DataView(n.buffer);return y.setUint32(p,h,!0),M(v,t,-1,p+R.offset.async_id),y.setUint32(p+R.offset.env,r,!0),y.setUint32(p+R.offset.execute,a,!0),y.setUint32(p+R.offset.complete,i,!0),y.setUint32(p+R.offset.data,s,!0),y.setUint32(u,p,!0),c.clearLastError()},G=m?function(r,e){if(!r)return 1;var t=l.envStore.get(r);return t.checkGCAccess(),e?(x.remove(e),t.clearLastError()):t.setLastError(1)}:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var a=R.getResource(e);if(l.refStore.get(a).dispose(),p){var o=new DataView(n.buffer);W(o.getFloat64(e+R.offset.async_id,!0),o.getFloat64(e+R.offset.trigger_async_id,!0))}return i(e),t.clearLastError()},F=m?function(r,e){if(!r)return 1;var t=l.envStore.get(r);return e?(x.queue(e),t.clearLastError()):t.setLastError(1)}:function(r,e){if(!r)return 1;var t=l.envStore.get(r);return e?(R.scheduleWork(e),t.clearLastError()):t.setLastError(1)},P=m?function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(!e)return t.setLastError(1);var n=x.cancel(e);return 0===n?t.clearLastError():t.setLastError(n)}:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(!e)return t.setLastError(1);var n=R.cancelWork(e);return 0===n?t.clearLastError():t.setLastError(n)};h.initWorker=function(r){if(!h.childThread)throw new Error("startThread is only available in child threads");if("function"!=typeof t.exports.emnapi_async_worker_init)throw new TypeError("`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags");t.exports.emnapi_async_worker_init(r)},h.executeAsyncWork=function(r){if(u){var e=R.getExecute(r),t=R.getEnv(r),n=R.getData(r);a.get(e)(t,n),(0,h.postMessage)({__emnapi__:{type:"async-work-complete",payload:{work:r}}})}};var N=Object.freeze({__proto__:null,napi_cancel_async_work:P,napi_create_async_work:z,napi_delete_async_work:G,napi_queue_async_work:F}),J={registry:"function"==typeof FinalizationRegistry?new FinalizationRegistry(function(r){i(r)}):void 0,table:new WeakMap,wasmMemoryViewTable:new WeakMap,init:function(){J.registry="function"==typeof FinalizationRegistry?new FinalizationRegistry(function(r){i(r)}):void 0,J.table=new WeakMap,J.wasmMemoryViewTable=new WeakMap},isSharedArrayBuffer:function(r){return"function"==typeof SharedArrayBuffer&&r instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(r)},isDetachedArrayBuffer:function(r){if(0===r.byteLength)try{new Uint8Array(r)}catch(r){return!0}return!1},getArrayBufferPointer:function(r,e){var t,a={address:0,ownership:0,runtimeAllocated:0};if(r===n.buffer)return a;var i=J.isDetachedArrayBuffer(r);if(J.table.has(r)){var s=J.table.get(r);return i?(s.address=0,s):(e&&0===s.ownership&&1===s.runtimeAllocated&&new Uint8Array(n.buffer).set(new Uint8Array(r),s.address),s)}if(i||0===r.byteLength)return a;if(!e)return a;var u=o(r.byteLength);if(!u)throw new Error("Out of memory");return new Uint8Array(n.buffer).set(new Uint8Array(r),u),a.address=u,a.ownership=J.registry?0:1,a.runtimeAllocated=1,J.table.set(r,a),null===(t=J.registry)||void 0===t||t.register(r,u),a},getOrUpdateMemoryView:function(r){if(r.buffer===n.buffer)return J.wasmMemoryViewTable.has(r)||J.wasmMemoryViewTable.set(r,{Ctor:r.constructor,address:r.byteOffset,length:r instanceof DataView?r.byteLength:r.length,ownership:1,runtimeAllocated:0}),r;if((J.isDetachedArrayBuffer(r.buffer)||"function"==typeof SharedArrayBuffer&&r.buffer instanceof SharedArrayBuffer)&&J.wasmMemoryViewTable.has(r)){var e=J.wasmMemoryViewTable.get(r),t=e.Ctor,a=void 0,o=l.feature.Buffer;return a="function"==typeof o&&t===o?o.from(n.buffer,e.address,e.length):new t(n.buffer,e.address,e.length),J.wasmMemoryViewTable.set(a,e),a}return r},getViewPointer:function(r,e){if((r=J.getOrUpdateMemoryView(r)).buffer===n.buffer){if(J.wasmMemoryViewTable.has(r)){var t=J.wasmMemoryViewTable.get(r);return{address:t.address,ownership:t.ownership,runtimeAllocated:t.runtimeAllocated,view:r}}return{address:r.byteOffset,ownership:1,runtimeAllocated:0,view:r}}var a=J.getArrayBufferPointer(r.buffer,e),o=a.address,i=a.ownership,s=a.runtimeAllocated;return{address:0===o?0:o+r.byteOffset,ownership:i,runtimeAllocated:s,view:r}}},q={utf8Decoder:void 0,utf16Decoder:void 0,init:function(){var r,e={decode:function(r){for(var e=0,t=Math.min(4096,r.length+1),n=new Uint16Array(t),a=[],o=0;;){var i=e=t-1){var s=n.subarray(0,o);if(a.push(String.fromCharCode.apply(null,s)),!i)return a.join("");r=r.subarray(e),e=0,o=0}var u=r[e++];if(128&u){if(192==(224&u)){var f=63&r[e++];n[o++]=(31&u)<<6|f}else if(224==(240&u)){f=63&r[e++];var c=63&r[e++];n[o++]=(31&u)<<12|f<<6|c}else if(240==(248&u)){var l=(7&u)<<18|(f=63&r[e++])<<12|(c=63&r[e++])<<6|63&r[e++];l>65535&&(l-=65536,n[o++]=l>>>10&1023|55296,l=56320|1023&l),n[o++]=l}}else n[o++]=u}}};r="function"==typeof TextDecoder?new TextDecoder:e,q.utf8Decoder=r;var t,n={decode:function(r){var e=new Uint16Array(r.buffer,r.byteOffset,r.byteLength/2);if(e.length<=4096)return String.fromCharCode.apply(null,e);for(var t=[],n=0,a=0;n=55296&&e<=57343?(t+=4,++n):t+=3;return t},UTF8ToString:function(r,e){if(!r||!e)return"";r>>>=0;var t=new Uint8Array(n.buffer),a=r;if(-1===e)for(;t[a];)++a;else a=r+(e>>>0);if((e=a-r)<=16){for(var o=r,i="";o>10,56320|1023&c)}}else i+=String.fromCharCode((31&s)<<6|u)}else i+=String.fromCharCode(s)}return i}return q.utf8Decoder.decode("function"==typeof SharedArrayBuffer&&t.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(t.buffer)?t.slice(r,a):t.subarray(r,a))},stringToUTF8:function(r,e,t){var a=new Uint8Array(n.buffer),o=e;if(!(t>0))return 0;for(var i=o>>>=0,s=o+t-1,u=0;u=55296&&f<=57343)f=65536+((1023&f)<<10)|1023&r.charCodeAt(++u);if(f<=127){if(o>=s)break;a[o++]=f}else if(f<=2047){if(o+1>=s)break;a[o++]=192|f>>6,a[o++]=128|63&f}else if(f<=65535){if(o+2>=s)break;a[o++]=224|f>>12,a[o++]=128|f>>6&63,a[o++]=128|63&f}else{if(o+3>=s)break;a[o++]=240|f>>18,a[o++]=128|f>>12&63,a[o++]=128|f>>6&63,a[o++]=128|63&f}}return a[o]=0,o-i},UTF16ToString:function(r,e){if(!r||!e)return"";var t=r>>>=0;if(-1===e){for(var a=t>>1,o=new Uint16Array(n.buffer);o[a];)++a;t=a<<1}else t=r+2*(e>>>0);if((e=t-r)<=32)return String.fromCharCode.apply(null,new Uint16Array(n.buffer,r,e/2));var i=new Uint8Array(n.buffer);return q.utf16Decoder.decode("function"==typeof SharedArrayBuffer&&i.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(i.buffer)?i.slice(r,t):i.subarray(r,t))},stringToUTF16:function(r,e,t){if(void 0===t&&(t=2147483647),t<2)return 0;for(var a=e,o=(t-=2)<2*r.length?t/2:r.length,i=new DataView(n.buffer),s=0;s>>0;if(0!==t&&!e)return i.setLastError(1);if(!a)return i.setLastError(1);if(!(s||u<=2147483647))return i.setLastError(1);var f=o(e,s,u),c=l.addToCurrentScope(f).id;return new DataView(n.buffer).setUint32(a,c,!0),i.clearLastError()},newExternalString:function(r,e,t,a,o,i,s,u,f){if(!r)return 1;var c=l.envStore.get(r);c.checkGCAccess();var d=-1===t,p=t>>>0;if(0!==t&&!e)return c.setLastError(1);if(!i)return c.setLastError(1);if(!(d||p<=2147483647))return c.setLastError(1);var v=u(r,e,t,i);if(0===v){if(s)new DataView(n.buffer).setInt8(s,1,!0);a&&c.callFinalizer(a,e,o)}return v}};function H(r,e,t,a,o,i,s){if(!r)return 1;var u=l.envStore.get(r);if(u.checkGCAccess(),!e)return u.setLastError(1);var f=l.handleStore.get(e);if(!f.isTypedArray())return u.setLastError(1);var c,d=f.value,p=new DataView(n.buffer);if(t){var v=void 0;if(d instanceof Int8Array)v=0;else if(d instanceof Uint8Array)v=1;else if(d instanceof Uint8ClampedArray)v=2;else if(d instanceof Int16Array)v=3;else if(d instanceof Uint16Array)v=4;else if(d instanceof Int32Array)v=5;else if(d instanceof Uint32Array)v=6;else if("function"==typeof Float16Array&&d instanceof Float16Array)v=11;else if(d instanceof Float32Array)v=7;else if(d instanceof Float64Array)v=8;else if(d instanceof BigInt64Array)v=9;else{if(!(d instanceof BigUint64Array))return u.setLastError(9);v=10}p.setInt32(t,v,!0)}if(a&&p.setUint32(a,d.length,!0),o||i){if(c=d.buffer,o){var h=J.getViewPointer(d,!0).address;p.setUint32(o,h,!0)}if(i){var y=u.ensureHandleId(c);p.setUint32(i,y,!0)}}return s&&p.setUint32(s,d.byteOffset,!0),u.clearLastError()}function Q(r,e,t,a,o,i){if(!r)return 1;var s=l.envStore.get(r);if(s.checkGCAccess(),!e)return s.setLastError(1);var u=l.handleStore.get(e);if(!u.isDataView())return s.setLastError(1);var f,c=u.value,d=new DataView(n.buffer);if(t&&d.setUint32(t,c.byteLength,!0),a||o){if(f=c.buffer,a){var p=J.getViewPointer(c,!0).address;d.setUint32(a,p,!0)}if(o){var v=s.ensureHandleId(f);d.setUint32(o,v,!0)}}return i&&d.setUint32(i,c.byteOffset,!0),s.clearLastError()}var $=Object.freeze({__proto__:null,napi_get_array_length:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e);if(!o.isArray())return a.setLastError(8);var i=o.value.length>>>0;return new DataView(n.buffer).setUint32(t,i,!0),a.getReturnStatus()}catch(r){return a.tryCatch.setError(r),a.setLastError(10)}},napi_get_arraybuffer_info:function(r,e,t,a){if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!e)return o.setLastError(1);var i=l.handleStore.get(e);if(!i.isArrayBuffer()&&!J.isSharedArrayBuffer(i.value))return o.setLastError(1);var s=new DataView(n.buffer);if(t){var u=J.getArrayBufferPointer(i.value,!0).address;s.setUint32(t,u,!0)}return a&&s.setUint32(a,i.value.byteLength,!0),o.clearLastError()},napi_get_buffer_info:function(r,e,t,n){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);var o=l.handleStore.get(e);return o.isBuffer(l.feature.Buffer)?o.isDataView()?Q(r,e,n,t,0,0):H(r,e,0,n,t,0,0):a.setLastError(1)},napi_get_dataview_info:Q,napi_get_date_value:function(r,e,t){var a;if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);var i=l.handleStore.get(e);return i.isDate()?(a=i.value.valueOf(),new DataView(n.buffer).setFloat64(t,a,!0),o.getReturnStatus()):o.setLastError(1)}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_get_prototype:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e);if(null==o.value)throw new TypeError("Cannot convert undefined or null to object");var i=void 0;try{i=o.isObject()||o.isFunction()?o.value:Object(o.value)}catch(r){return a.setLastError(2)}var s=a.ensureHandleId(Object.getPrototypeOf(i));return new DataView(n.buffer).setUint32(t,s,!0),a.getReturnStatus()}catch(r){return a.tryCatch.setError(r),a.setLastError(10)}},napi_get_typedarray_info:H,napi_get_value_bigint_int64:function(r,e,t,a){if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!l.feature.supportBigInt)return o.setLastError(9);if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.handleStore.get(e).value;if("bigint"!=typeof i)return o.setLastError(6);var s=new DataView(n.buffer);i>=BigInt(-1)*(BigInt(1)<=BigInt(1)<>BigInt(32));return s.setInt32(t,u,!0),s.setInt32(t+4,f,!0),o.clearLastError()},napi_get_value_bigint_uint64:function(r,e,t,a){if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!l.feature.supportBigInt)return o.setLastError(9);if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.handleStore.get(e).value;if("bigint"!=typeof i)return o.setLastError(6);var s=new DataView(n.buffer);i>=BigInt(0)&&i>BigInt(32));return s.setUint32(t,u,!0),s.setUint32(t+4,f,!0),o.clearLastError()},napi_get_value_bigint_words:function(r,e,t,a,o){if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!l.feature.supportBigInt)return i.setLastError(9);if(!e)return i.setLastError(1);if(!a)return i.setLastError(1);var s=l.handleStore.get(e);if(!s.isBigInt())return i.setLastError(17);for(var u=s.value>=BigInt(64);if(p=u?s.value*BigInt(-1):s.value,t||o){if(!t)return i.setLastError(1);if(!o)return i.setLastError(1);for(var v=[];p!==BigInt(0);){var h=p&(BigInt(1)<>=BigInt(64)}for(var y=Math.min(c,v.length),g=0;g>BigInt(32));f.setUint32(o+8*g,_,!0),f.setUint32(o+(8*g+4),E,!0)}f.setInt32(t,u?1:0,!0),f.setUint32(a,y,!0)}else c=d,f.setUint32(a,c,!0);return i.clearLastError()},napi_get_value_bool:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e);if("boolean"!=typeof o.value)return a.setLastError(7);var i=o.value?1:0;return new DataView(n.buffer).setInt8(t,i,!0),a.clearLastError()},napi_get_value_double:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e);if("number"!=typeof o.value)return a.setLastError(6);var i=o.value;return new DataView(n.buffer).setFloat64(t,i,!0),a.clearLastError()},napi_get_value_external:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e);if(!o.isExternal())return a.setLastError(1);var i=o.data();return new DataView(n.buffer).setUint32(t,i,!0),a.clearLastError()},napi_get_value_int32:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e);if("number"!=typeof o.value)return a.setLastError(6);var i=new Int32Array([o.value])[0];return new DataView(n.buffer).setInt32(t,i,!0),a.clearLastError()},napi_get_value_int64:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e);if("number"!=typeof o.value)return a.setLastError(6);var i=o.value,s=new DataView(n.buffer);return i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY||isNaN(i)?(s.setInt32(t,0,!0),s.setInt32(t+4,0,!0)):i<-0x8000000000000000?(s.setInt32(t,0,!0),s.setInt32(t+4,2147483648,!0)):i>=0x8000000000000000?(s.setUint32(t,4294967295,!0),s.setUint32(t+4,2147483647,!0)):k(t,Math.trunc(i)),a.clearLastError()},napi_get_value_string_latin1:function(r,e,t,a,o){if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!e)return i.setLastError(1);a>>>=0;var s=l.handleStore.get(e);if("string"!=typeof s.value)return i.setLastError(3);var u=new DataView(n.buffer);if(t)if(0!==a){for(var f=0,c=void 0,d=0;d>>=0;var s=l.handleStore.get(e);if("string"!=typeof s.value)return i.setLastError(3);var u=new DataView(n.buffer);if(t)if(0!==a){var f=q.stringToUTF16(s.value,t,2*a);o&&u.setUint32(o,f/2,!0)}else o&&u.setUint32(o,0,!0);else{if(!o)return i.setLastError(1);u.setUint32(o,s.value.length,!0)}return i.clearLastError()},napi_get_value_string_utf8:function(r,e,t,a,o){if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!e)return i.setLastError(1);a>>>=0;var s=l.handleStore.get(e);if("string"!=typeof s.value)return i.setLastError(3);var u=new DataView(n.buffer);if(t)if(0!==a){var f=q.stringToUTF8(s.value,t,a);o&&u.setUint32(o,f,!0)}else o&&u.setUint32(o,0,!0);else{if(!o)return i.setLastError(1);var c=q.lengthBytesUTF8(s.value);u.setUint32(o,c,!0)}return i.clearLastError()},napi_get_value_uint32:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e);if("number"!=typeof o.value)return a.setLastError(6);var i=new Uint32Array([o.value])[0];return new DataView(n.buffer).setUint32(t,i,!0),a.clearLastError()},node_api_set_prototype:function(r,e,t){if(!r)return 1;var n=l.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=l.handleStore.get(e).value;if(null==a)throw new TypeError("Cannot convert undefined or null to object");var o=typeof a,i=void 0;try{i="object"===o&&null!==a||"function"===o?a:Object(a)}catch(r){return n.setLastError(2)}var s=l.handleStore.get(t).value;return Object.setPrototypeOf(i,s),n.getReturnStatus()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}}});function Y(r,e,t,a){return q.newString(r,e,t,a,function(r,e,t){var a="",o=0,i=new DataView(n.buffer);if(e)for(;;){if(!(s=i.getUint8(r,!0)))break;a+=String.fromCharCode(s),r++}else for(;o=10?23:10);u.clearLastError();try{if(!l.feature.supportBigInt)return u.setLastError(9);if(!o)return u.setLastError(1);if((t>>>=0)>2147483647)return u.setLastError(1);if(t>16384)throw new RangeError("Maximum BigInt size exceeded");var f=BigInt(0),c=new DataView(n.buffer);for(s=0;s>>0).id;return new DataView(n.buffer).setUint32(t,o,!0),a.clearLastError()},node_api_create_external_string_latin1:function(r,e,t,n,a,o,i){return q.newExternalString(r,e,t,n,a,o,i,Y,void 0)},node_api_create_external_string_utf16:function(r,e,t,n,a,o,i){return q.newExternalString(r,e,t,n,a,o,i,X,void 0)},node_api_create_property_key_latin1:function(r,e,t,n){return Y(r,e,t,n)},node_api_create_property_key_utf16:function(r,e,t,n){return X(r,e,t,n)},node_api_create_property_key_utf8:function(r,e,t,n){return Z(r,e,t,n)}});function rr(r,e,t,n,o){var i,s=e&&t?q.UTF8ToString(e,t):"",u=a.get(n),f=function(r){return u(r.id,r.ctx.scopeStore.currentScope.id)},c=function(r,e){return function(){var t=r.ctx.openScope(r),n=t.callbackInfo;n.data=o,n.args=arguments,n.thiz=this,n.fn=i;try{var a=r.callIntoModule(e);return a?r.ctx.handleStore.get(a).value:void 0}finally{n.data=0,n.args=void 0,n.thiz=void 0,n.fn=void 0,r.ctx.closeScope(r,t)}}};if(""===s)return{status:0,f:i=c(r,f)};if(!/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(s))return{status:1,f:void 0};if(l.feature.supportNewFunction){var d=c(r,f);try{i=new Function("_","return function "+s+'(){"use strict";return _.apply(this,arguments);};')(d)}catch(e){i=c(r,f),l.feature.canSetFunctionName&&Object.defineProperty(i,"name",{value:s})}}else i=c(r,f),l.feature.canSetFunctionName&&Object.defineProperty(i,"name",{value:s});return{status:0,f:i}}function er(r,e,t,n,a,o,i,s,u){if(a||o){var f=void 0,c=void 0;a&&(f=rr(r,0,0,a,u).f),o&&(c=rr(r,0,0,o,u).f);var d={configurable:!!(4&s),enumerable:!!(2&s),get:f,set:c};Object.defineProperty(e,t,d)}else if(n){d={configurable:!!(4&s),enumerable:!!(2&s),writable:!!(1&s),value:rr(r,0,0,n,u).f};Object.defineProperty(e,t,d)}else{d={configurable:!!(4&s),enumerable:!!(2&s),writable:!!(1&s),value:l.handleStore.get(i).value};Object.defineProperty(e,t,d)}}function tr(r){var e=l.handleStore.get(r);return e.isObject()||e.isFunction()?(void 0!==J&&ArrayBuffer.isView(e.value)&&J.wasmMemoryViewTable.has(e.value)&&(e=l.addToCurrentScope(J.wasmMemoryViewTable.get(e.value))),{status:0,handle:e}):{status:1}}function nr(r,e,t,a){var o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!e)return i.setLastError(1);if(0===a&&!t)return i.setLastError(1);var s=l.handleStore.get(e);if(!s.isObject()&&!s.isFunction())return i.setLastError(1);var u=i.getObjectBinding(s.value),f=u.wrapped,c=l.refStore.get(f);if(!c)return i.setLastError(1);if(t)o=c.data(),new DataView(n.buffer).setUint32(t,o,!0);return 1===a&&(u.wrapped=0,1===c.ownership()?c.resetFinalizer():c.dispose()),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}}function ar(r,e,t,a,o,i){if(!r)return 1;var s=l.envStore.get(r);if(s.checkGCAccess(),!l.feature.supportFinalizer)return s.setLastError(9);if(!e)return s.setLastError(1);if(!a)return s.setLastError(1);var u=tr(e);if(0!==u.status)return s.setLastError(u.status);var f=u.handle,c=i?1:0,d=l.createReferenceWithFinalizer(s,f.id,0,c,a,t,o);if(i){var p=d.id;new DataView(n.buffer).setUint32(i,p,!0)}return s.clearLastError()}var or=Object.freeze({__proto__:null,napi_add_finalizer:ar,napi_check_object_type_tag:function(r,e,t,a){var o=!0;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!e)return i.setLastError(i.tryCatch.hasCaught()?10:1);var s=l.handleStore.get(e);if(!s.isObject()&&!s.isFunction())return i.setLastError(i.tryCatch.hasCaught()?10:2);if(!t)return i.setLastError(i.tryCatch.hasCaught()?10:1);if(!a)return i.setLastError(i.tryCatch.hasCaught()?10:1);var u=i.getObjectBinding(s.value);if(null!==u.tag){var f=u.tag,c=new Uint32Array(n.buffer,t,4);o=f[0]===c[0]&&f[1]===c[1]&&f[2]===c[2]&&f[3]===c[3]}else o=!1;return new DataView(n.buffer).setInt8(a,o?1:0,!0),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_define_class:function(r,e,t,a,o,i,s,u){var f,c,d;if(!r)return 1;var p=l.envStore.get(r);if(p.checkGCAccess(),!p.tryCatch.isEmpty())return p.setLastError(10);if(!p.canCallIntoJs())return p.setLastError(p.moduleApiVersion>=10?23:10);p.clearLastError();try{if(!u)return p.setLastError(1);if(!a)return p.setLastError(1);if((i>>>=0)>0&&!s)return p.setLastError(1);if(t<-1||t>2147483647||!e)return p.setLastError(1);var v=rr(p,e,t,a,o);if(0!==v.status)return p.setLastError(v.status);for(var h=v.f,y=void 0,g=new DataView(n.buffer),_=0;_=10?23:10);a.clearLastError();try{if(!e)return a.setLastError(a.tryCatch.hasCaught()?10:1);var o=l.handleStore.get(e);if(!o.isObject()&&!o.isFunction())return a.setLastError(a.tryCatch.hasCaught()?10:2);if(!t)return a.setLastError(a.tryCatch.hasCaught()?10:1);var i=a.getObjectBinding(o.value);if(null!==i.tag)return a.setLastError(a.tryCatch.hasCaught()?10:1);var s=new Uint8Array(16);return s.set(new Uint8Array(n.buffer,t,16)),i.tag=new Uint32Array(s.buffer),a.getReturnStatus()}catch(r){return a.tryCatch.setError(r),a.setLastError(10)}},napi_unwrap:function(r,e,t){return nr(r,e,t,0)},napi_wrap:function(r,e,t,a,o,i){return function(r,e,t,a,o,i){var s;if(!r)return 1;var u=l.envStore.get(r);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!l.feature.supportFinalizer){if(a)throw l.createNotSupportWeakRefError("napi_wrap",'Parameter "finalize_cb" must be 0(NULL)');if(i)throw l.createNotSupportWeakRefError("napi_wrap",'Parameter "result" must be 0(NULL)')}if(!e)return u.setLastError(1);var f=tr(e);if(0!==f.status)return u.setLastError(f.status);var c=f.handle;if(0!==u.getObjectBinding(c.value).wrapped)return u.setLastError(1);var d=void 0;if(i){if(!a)return u.setLastError(1);s=(d=l.createReferenceWithFinalizer(u,c.id,0,1,a,t,o)).id,new DataView(n.buffer).setUint32(i,s,!0)}else d=a?l.createReferenceWithFinalizer(u,c.id,0,0,a,t,o):l.createReferenceWithData(u,c.id,0,0,t);return u.getObjectBinding(c.value).wrapped=d.id,u.getReturnStatus()}catch(r){return u.tryCatch.setError(r),u.setLastError(10)}}(r,e,t,a,o,i)},node_api_post_finalizer:function(r,e,t,n){if(!r)return 1;var a=l.envStore.get(r);return a.enqueueFinalizer(l.createTrackedFinalizer(a,e,t,n)),a.clearLastError()}});function ir(r,e,t,a,o,i,s){var u;if(!r)return 1;var f=l.envStore.get(r);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!s)return f.setLastError(1);if(a>>>=0,t||(a=0),a>2147483647)throw new RangeError("Cannot create a memory view larger than 2147483647 bytes");if(t+a>n.buffer.byteLength)throw new RangeError("Memory out of range");if(!l.feature.supportFinalizer&&o)throw l.createNotSupportWeakRefError("emnapi_create_memory_view",'Parameter "finalize_cb" must be 0(NULL)');var c=void 0;switch(e){case 0:c={Ctor:Int8Array,address:t,length:a,ownership:1,runtimeAllocated:0};break;case 1:c={Ctor:Uint8Array,address:t,length:a,ownership:1,runtimeAllocated:0};break;case 2:c={Ctor:Uint8ClampedArray,address:t,length:a,ownership:1,runtimeAllocated:0};break;case 3:c={Ctor:Int16Array,address:t,length:a>>1,ownership:1,runtimeAllocated:0};break;case 4:c={Ctor:Uint16Array,address:t,length:a>>1,ownership:1,runtimeAllocated:0};break;case 5:c={Ctor:Int32Array,address:t,length:a>>2,ownership:1,runtimeAllocated:0};break;case 6:c={Ctor:Uint32Array,address:t,length:a>>2,ownership:1,runtimeAllocated:0};break;case 7:c={Ctor:Float32Array,address:t,length:a>>2,ownership:1,runtimeAllocated:0};break;case 8:c={Ctor:Float64Array,address:t,length:a>>3,ownership:1,runtimeAllocated:0};break;case 9:c={Ctor:BigInt64Array,address:t,length:a>>3,ownership:1,runtimeAllocated:0};break;case 10:c={Ctor:BigUint64Array,address:t,length:a>>3,ownership:1,runtimeAllocated:0};break;case-1:c={Ctor:DataView,address:t,length:a,ownership:1,runtimeAllocated:0};break;case 11:if("function"!=typeof Float16Array)return f.setLastError(1);c={Ctor:Float16Array,address:t,length:a>>1,ownership:1,runtimeAllocated:0};break;case-2:if(!l.feature.Buffer)throw l.createNotSupportBufferError("emnapi_create_memory_view","");c={Ctor:l.feature.Buffer,address:t,length:a,ownership:1,runtimeAllocated:0};break;default:return f.setLastError(1)}var d=c.Ctor,p=-2===e?l.feature.Buffer.from(n.buffer,c.address,c.length):new d(n.buffer,c.address,c.length),v=l.addToCurrentScope(p);if(J.wasmMemoryViewTable.set(p,c),o){var h=ar(r,v.id,t,o,i,0);if(10===h){var y=f.tryCatch.extractException();throw f.clearLastError(),y}if(0!==h)return f.setLastError(h)}return u=v.id,new DataView(n.buffer).setUint32(s,u,!0),f.getReturnStatus()}catch(y){return f.tryCatch.setError(y),f.setLastError(10)}}function sr(r,e,t,a){var o;if(t=null!=t?t:0,t>>>=0,e instanceof ArrayBuffer||J.isSharedArrayBuffer(e)){if(!(s=J.getArrayBufferPointer(e,!1).address))throw new Error("Unknown ArrayBuffer address");if("number"==typeof a&&-1!==a||(a=e.byteLength-t),0===(a>>>=0))return e;o=new Uint8Array(e,t,a);var i=new Uint8Array(n.buffer);return r?i.set(o,s):o.set(i.subarray(s,s+a)),e}if(ArrayBuffer.isView(e)){var s,u=J.getViewPointer(e,!1),f=u.view;if(!(s=u.address))throw new Error("Unknown ArrayBuffer address");if("number"==typeof a&&-1!==a||(a=f.byteLength-t),0===(a>>>=0))return f;o=new Uint8Array(f.buffer,f.byteOffset+t,a);i=new Uint8Array(n.buffer);return r?i.set(o,s):o.set(i.subarray(s,s+a)),f}throw new TypeError("emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter")}function ur(r){var e,t=r instanceof ArrayBuffer,n=r instanceof DataView,a=ArrayBuffer.isView(r)&&!n;if(!(t||a||n||J.isSharedArrayBuffer(r)))throw new TypeError("emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter");return{address:(e=t?J.getArrayBufferPointer(r,!1):J.getViewPointer(r,!1)).address,ownership:e.ownership,runtimeAllocated:e.runtimeAllocated}}var fr=Object.freeze({__proto__:null,$emnapiGetMemoryAddress:ur,$emnapiSyncMemory:sr,emnapi_create_memory_view:ir,emnapi_get_memory_address:function(r,e,t,a,o){var i,s,u,f;if(!r)return 1;var c=l.envStore.get(r);if(c.checkGCAccess(),!c.tryCatch.isEmpty())return c.setLastError(10);if(!c.canCallIntoJs())return c.setLastError(c.moduleApiVersion>=10?23:10);c.clearLastError();try{if(!e)return c.setLastError(1);if(!t&&!a&&!o)return c.setLastError(1);i=(f=ur(c.ctx.handleStore.get(e).value)).address;var d=new DataView(n.buffer);return t&&d.setUint32(t,i,!0),a&&(u=f.ownership,d.setInt32(a,u,!0)),o&&(s=f.runtimeAllocated,d.setInt8(o,s,!0)),c.getReturnStatus()}catch(r){return c.tryCatch.setError(r),c.setLastError(10)}},emnapi_get_runtime_version:function(r,e){if(!r)return 1;var t,a=l.envStore.get(r);if(!e)return a.setLastError(1);try{t=l.getRuntimeVersions().version}catch(r){return a.setLastError(9)}var o=t.split(".").map(function(r){return Number(r)}),i=new DataView(n.buffer);return i.setUint32(e,o[0],!0),i.setUint32(e+4,o[1],!0),i.setUint32(e+8,o[2],!0),a.clearLastError()},emnapi_is_node_binding_available:function(){return p?1:0},emnapi_is_support_bigint:function(){return l.feature.supportBigInt?1:0},emnapi_is_support_weakref:function(){return l.feature.supportFinalizer?1:0},emnapi_sync_memory:function(r,e,t,a,o){var i;if(!r)return 1;var s=l.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);var u=new DataView(n.buffer),f=u.getUint32(t,!0),c=s.ctx.handleStore.get(f);if(!(c.isArrayBuffer()||c.isTypedArray()||c.isDataView()||J.isSharedArrayBuffer(c.value)))return s.setLastError(1);var d=sr(Boolean(e),c.value,a,o);return c.value!==d&&(i=s.ensureHandleId(d),u.setUint32(t,i,!0)),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}}});function cr(r,e,t){r>>>=0;var a=t?new SharedArrayBuffer(r):new ArrayBuffer(r);if(e){var o=J.getArrayBufferPointer(a,!0).address;new DataView(n.buffer).setUint32(e,o,!0)}return a}var lr=Object.freeze({__proto__:null,napi_create_array:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var a=l.addToCurrentScope([]).id;return new DataView(n.buffer).setUint32(e,a,!0),t.clearLastError()},napi_create_array_with_length:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!t)return a.setLastError(1);e>>>=0;var o=l.addToCurrentScope(new Array(e)).id;return new DataView(n.buffer).setUint32(t,o,!0),a.clearLastError()},napi_create_arraybuffer:function(r,e,t,a){var o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!a)return i.setLastError(1);var s=cr(e,t,!1);return o=l.addToCurrentScope(s).id,new DataView(n.buffer).setUint32(a,o,!0),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_create_buffer:function(r,e,t,a){var i,s,u;if(!r)return 1;var f=l.envStore.get(r);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!a)return f.setLastError(1);var c=l.feature.Buffer;if(!c)throw l.createNotSupportBufferError("napi_create_buffer","");var d=void 0;e>>>=0;var p=new DataView(n.buffer);if(t&&0!==e){if(!(u=o(e)))throw new Error("Out of memory");new Uint8Array(n.buffer).subarray(u,u+e).fill(0);var v=c.from(n.buffer,u,e),h={Ctor:c,address:u,length:e,ownership:J.registry?0:1,runtimeAllocated:1};J.wasmMemoryViewTable.set(v,h),null===(i=J.registry)||void 0===i||i.register(h,u),s=l.addToCurrentScope(v).id,p.setUint32(a,s,!0),p.setUint32(t,u,!0)}else d=c.alloc(e),s=l.addToCurrentScope(d).id,p.setUint32(a,s,!0);return f.getReturnStatus()}catch(r){return f.tryCatch.setError(r),f.setLastError(10)}},napi_create_buffer_copy:function(r,e,t,a,o){var i;if(!r)return 1;var s=l.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!o)return s.setLastError(1);var u=l.feature.Buffer;if(!u)throw l.createNotSupportBufferError("napi_create_buffer_copy","");var f=cr(e,a,!1),c=u.from(f);return c.set(new Uint8Array(n.buffer).subarray(t,t+e)),i=l.addToCurrentScope(c).id,new DataView(n.buffer).setUint32(o,i,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_create_dataview:function(r,e,t,a,o){if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);if(!o)return i.setLastError(1);e>>>=0,a>>>=0;var s=l.handleStore.get(t).value;return s instanceof ArrayBuffer||J.isSharedArrayBuffer(s)?function(r){if(e+a>r.byteLength){var t=new RangeError("byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in");throw t.code="ERR_NAPI_INVALID_DATAVIEW_ARGS",t}var s=new DataView(r,a,e);r===n.buffer&&(J.wasmMemoryViewTable.has(s)||J.wasmMemoryViewTable.set(s,{Ctor:DataView,address:a,length:e,ownership:1,runtimeAllocated:0}));var u=l.addToCurrentScope(s).id;return new DataView(n.buffer).setUint32(o,u,!0),i.getReturnStatus()}(s):i.setLastError(1)}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_create_date:function(r,e,t){var a;if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{return t?(a=l.addToCurrentScope(new Date(e)).id,new DataView(n.buffer).setUint32(t,a,!0),o.getReturnStatus()):o.setLastError(1)}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_create_external:function(r,e,t,a,o){var i;if(!r)return 1;var s=l.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!o)return s.setLastError(1);if(!l.feature.supportFinalizer&&t)throw l.createNotSupportWeakRefError("napi_create_external",'Parameter "finalize_cb" must be 0(NULL)');var u=l.getCurrentScope().addExternal(e);return t&&l.createReferenceWithFinalizer(s,u.id,0,0,t,e,a),i=u.id,new DataView(n.buffer).setUint32(o,i,!0),s.clearLastError()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_create_external_arraybuffer:function(r,e,t,a,o,i){var s;if(!r)return 1;var u=l.envStore.get(r);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!i)return u.setLastError(1);if(t>>>=0,e||(t=0),e+t>n.buffer.byteLength)throw new RangeError("Memory out of range");if(!l.feature.supportFinalizer&&a)throw l.createNotSupportWeakRefError("napi_create_external_arraybuffer",'Parameter "finalize_cb" must be 0(NULL)');var f=new ArrayBuffer(t);if(0===t)try{(new(0,l.feature.MessageChannel)).port1.postMessage(f,[f])}catch(r){}else new Uint8Array(f).set(new Uint8Array(n.buffer).subarray(e,e+t)),J.table.set(f,{address:e,ownership:1,runtimeAllocated:0});var c=l.addToCurrentScope(f);if(a){var d=ar(r,c.id,e,a,o,0);if(10===d){var p=u.tryCatch.extractException();throw u.clearLastError(),p}if(0!==d)return u.setLastError(d)}return s=c.id,new DataView(n.buffer).setUint32(i,s,!0),u.getReturnStatus()}catch(p){return u.tryCatch.setError(p),u.setLastError(10)}},napi_create_external_buffer:function(r,e,t,n,a,o){return ir(r,-2,t,e,n,a,o)},napi_create_object:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var a=l.addToCurrentScope({}).id;return new DataView(n.buffer).setUint32(e,a,!0),t.clearLastError()},napi_create_object_with_properties:function(r,e,t,a,o,i){if(!r)return 1;var s=l.envStore.get(r);if(s.checkGCAccess(),!i)return s.setLastError(1);if((o>>>=0)>0){if(!t)return s.setLastError(1);if(!a)return s.setLastError(1)}for(var u,f=e?l.handleStore.get(e).value:null,c={},d=new DataView(n.buffer),p=0;p=10?23:10);u.clearLastError();try{if(!a)return u.setLastError(1);if(!i)return u.setLastError(1);var f=l.handleStore.get(a);if(!f.isArrayBuffer())return u.setLastError(1);var c=f.value,d=function(r,e,t,a,o,u){var f,c;if((o>>>=0,u>>>=0,t>1)&&o%t!==0)return(c=new RangeError("start offset of ".concat(null!==(f=e.name)&&void 0!==f?f:""," should be a multiple of ").concat(t))).code="ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT",r.tryCatch.setError(c),r.setLastError(9);if(u*t+o>a.byteLength)return(c=new RangeError("Invalid typed array length")).code="ERR_NAPI_INVALID_TYPEDARRAY_LENGTH",r.tryCatch.setError(c),r.setLastError(9);var d=new e(a,o,u);return a===n.buffer&&(J.wasmMemoryViewTable.has(d)||J.wasmMemoryViewTable.set(d,{Ctor:e,address:o,length:u,ownership:1,runtimeAllocated:0})),s=l.addToCurrentScope(d).id,new DataView(n.buffer).setUint32(i,s,!0),r.getReturnStatus()};switch(e){case 0:return d(u,Int8Array,1,c,o,t);case 1:return d(u,Uint8Array,1,c,o,t);case 2:return d(u,Uint8ClampedArray,1,c,o,t);case 3:return d(u,Int16Array,2,c,o,t);case 4:return d(u,Uint16Array,2,c,o,t);case 5:return d(u,Int32Array,4,c,o,t);case 6:return d(u,Uint32Array,4,c,o,t);case 7:return d(u,Float32Array,4,c,o,t);case 8:return d(u,Float64Array,8,c,o,t);case 9:return d(u,BigInt64Array,8,c,o,t);case 10:return d(u,BigUint64Array,8,c,o,t);case 11:return"function"!=typeof Float16Array?u.setLastError(1):d(u,Float16Array,2,c,o,t);default:return u.setLastError(1)}}catch(r){return u.tryCatch.setError(r),u.setLastError(10)}},node_api_create_buffer_from_arraybuffer:function(r,e,t,a,o){var i;if(!r)return 1;var s=l.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!e)return s.setLastError(1);if(!o)return s.setLastError(1);t>>>=0,a>>>=0;var u=l.handleStore.get(e);if(!u.isArrayBuffer())return s.setLastError(1);var f=u.value;if(a+t>f.byteLength){var c=new RangeError("The byte offset + length is out of range");throw c.code="ERR_OUT_OF_RANGE",c}var d=l.feature.Buffer;if(!d)throw l.createNotSupportBufferError("node_api_create_buffer_from_arraybuffer","");var p=d.from(f,t,a);return f===n.buffer&&(J.wasmMemoryViewTable.has(p)||J.wasmMemoryViewTable.set(p,{Ctor:d,address:t,length:a,ownership:1,runtimeAllocated:0})),i=l.addToCurrentScope(p).id,new DataView(n.buffer).setUint32(o,i,!0),s.getReturnStatus()}catch(c){return s.tryCatch.setError(c),s.setLastError(10)}},node_api_create_sharedarraybuffer:function(r,e,t,a){var o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!a)return i.setLastError(1);var s=cr(e,t,!0);return o=l.addToCurrentScope(s).id,new DataView(n.buffer).setUint32(a,o,!0),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},node_api_symbol_for:function(r,e,t,a){if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!a)return o.setLastError(1);var i=-1===t,s=t>>>0;if(0!==t&&!e)return o.setLastError(1);if(!(i||s<=2147483647))return o.setLastError(1);var u=q.UTF8ToString(e,t),f=l.addToCurrentScope(Symbol.for(u)).id;return new DataView(n.buffer).setUint32(a,f,!0),o.clearLastError()}});var dr=Object.freeze({__proto__:null,napi_get_boolean:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!t)return a.setLastError(1);var o=0===e?3:4;return new DataView(n.buffer).setUint32(t,o,!0),a.clearLastError()},napi_get_global:function(r,e){if(!r)return 1;var t=l.envStore.get(r);return t.checkGCAccess(),e?(new DataView(n.buffer).setUint32(e,5,!0),t.clearLastError()):t.setLastError(1)},napi_get_null:function(r,e){if(!r)return 1;var t=l.envStore.get(r);return t.checkGCAccess(),e?(new DataView(n.buffer).setUint32(e,2,!0),t.clearLastError()):t.setLastError(1)},napi_get_undefined:function(r,e){if(!r)return 1;var t=l.envStore.get(r);return t.checkGCAccess(),e?(new DataView(n.buffer).setUint32(e,1,!0),t.clearLastError()):t.setLastError(1)}});var pr=Object.freeze({__proto__:null,napi_get_instance_data:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(!e)return t.setLastError(1);var a=t.getInstanceData();return new DataView(n.buffer).setUint32(e,a,!0),t.clearLastError()},napi_set_instance_data:function(r,e,t,n){if(!r)return 1;var a=l.envStore.get(r);return a.setInstanceData(e,t,n),a.clearLastError()}});var vr=Object.freeze({__proto__:null,_emnapi_get_last_error_info:function(r,e,t,a){var o=l.envStore.get(r).lastError,i=o.errorCode,s=o.engineErrorCode>>>0,u=o.engineReserved,f=new DataView(n.buffer);f.setInt32(e,i,!0),f.setUint32(t,s,!0),f.setUint32(a,u,!0)},napi_create_error:function(r,e,t,a){if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.handleStore.get(t).value;if("string"!=typeof i)return o.setLastError(3);var s=new Error(i);if(e){var u=l.handleStore.get(e).value;if("string"!=typeof u)return o.setLastError(3);s.code=u}var f=l.addToCurrentScope(s).id;return new DataView(n.buffer).setUint32(a,f,!0),o.clearLastError()},napi_create_range_error:function(r,e,t,a){if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.handleStore.get(t).value;if("string"!=typeof i)return o.setLastError(3);var s=new RangeError(i);if(e){var u=l.handleStore.get(e).value;if("string"!=typeof u)return o.setLastError(3);s.code=u}var f=l.addToCurrentScope(s).id;return new DataView(n.buffer).setUint32(a,f,!0),o.clearLastError()},napi_create_type_error:function(r,e,t,a){if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.handleStore.get(t).value;if("string"!=typeof i)return o.setLastError(3);var s=new TypeError(i);if(e){var u=l.handleStore.get(e).value;if("string"!=typeof u)return o.setLastError(3);s.code=u}var f=l.addToCurrentScope(s).id;return new DataView(n.buffer).setUint32(a,f,!0),o.clearLastError()},napi_fatal_error:function(r,e,t,n){var a=q.UTF8ToString(r,e),o=q.UTF8ToString(t,n);p?p.napi.fatalError(a,o):c("FATAL ERROR: "+a+" "+o)},napi_fatal_exception:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!e)return t.setLastError(1);var n=t.ctx.handleStore.get(e);try{t.triggerFatalException(n.value)}catch(r){return t.setLastError(9)}return t.clearLastError()}catch(e){return t.tryCatch.setError(e),t.setLastError(10)}},napi_get_and_clear_last_exception:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var a=new DataView(n.buffer);if(!t.tryCatch.hasCaught())return a.setUint32(e,1,!0),t.clearLastError();var o=t.tryCatch.exception(),i=t.ensureHandleId(o);return a.setUint32(e,i,!0),t.tryCatch.reset(),t.clearLastError()},napi_is_exception_pending:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var a=t.tryCatch.hasCaught();return new DataView(n.buffer).setInt8(e,a?1:0,!0),t.clearLastError()},napi_throw:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{return e?(t.tryCatch.setError(l.handleStore.get(e).value),t.clearLastError()):t.setLastError(1)}catch(r){return t.tryCatch.setError(r),t.setLastError(10)}},napi_throw_error:function(r,e,t){if(!r)return 1;var n=l.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=new Error(q.UTF8ToString(t,-1));return e&&(a.code=q.UTF8ToString(e,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_throw_range_error:function(r,e,t){if(!r)return 1;var n=l.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=new RangeError(q.UTF8ToString(t,-1));return e&&(a.code=q.UTF8ToString(e,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_throw_type_error:function(r,e,t){if(!r)return 1;var n=l.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=new TypeError(q.UTF8ToString(t,-1));return e&&(a.code=q.UTF8ToString(e,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},node_api_create_syntax_error:function(r,e,t,a){if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.handleStore.get(t).value;if("string"!=typeof i)return o.setLastError(3);var s=new SyntaxError(i);if(e){var u=l.handleStore.get(e).value;if("string"!=typeof u)return o.setLastError(3);s.code=u}var f=l.addToCurrentScope(s).id;return new DataView(n.buffer).setUint32(a,f,!0),o.clearLastError()},node_api_throw_syntax_error:function(r,e,t){if(!r)return 1;var n=l.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=new SyntaxError(q.UTF8ToString(t,-1));return e&&(a.code=q.UTF8ToString(e,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}}});var hr=Object.freeze({__proto__:null,napi_call_function:function(r,e,t,a,o,i){var s,u=0;if(!r)return 1;var f=l.envStore.get(r);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!e)return f.setLastError(1);if((a>>>=0)>0&&!o)return f.setLastError(1);var c=l.handleStore.get(e).value;if(!t)return f.setLastError(1);var d=l.handleStore.get(t).value;if("function"!=typeof d)return f.setLastError(1);for(var p=[],v=new DataView(n.buffer);u=10?23:10);u.clearLastError();try{if(!i)return u.setLastError(1);if(!a)return u.setLastError(1);var f=rr(u,e,t,a,o);if(0!==f.status)return u.setLastError(f.status);var c=f.f;return s=l.addToCurrentScope(c).id,new DataView(n.buffer).setUint32(i,s,!0),u.getReturnStatus()}catch(r){return u.tryCatch.setError(r),u.setLastError(10)}},napi_get_cb_info:function(r,e,t,a,o,i){if(!r)return 1;var s=l.envStore.get(r);if(!e)return s.setLastError(1);var u=l.scopeStore.get(e).callbackInfo,f=new DataView(n.buffer);if(a){if(!t)return s.setLastError(1);for(var c=f.getUint32(t,!0),d=u.args.length,p=c=10?23:10);u.clearLastError();try{if(!e)return u.setLastError(1);if((t>>>=0)>0&&!a)return u.setLastError(1);if(!o)return u.setLastError(1);var f=l.handleStore.get(e).value;if("function"!=typeof f)return u.setLastError(1);var c=void 0,d=new DataView(n.buffer);if(l.feature.supportReflect){var p=Array(t);for(i=0;i>>0,1);return new DataView(n.buffer).setUint32(a,s.id,!0),o.clearLastError()},napi_delete_reference:function(r,e){if(!r)return 1;var t=l.envStore.get(r);return e?(l.refStore.get(e).dispose(),t.clearLastError()):t.setLastError(1)},napi_escape_handle:function(r,e,t,a){if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!e)return o.setLastError(1);if(!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.scopeStore.get(e);if(!i.escapeCalled()){var s=i.escape(t),u=s?s.id:0;return new DataView(n.buffer).setUint32(a,u,!0),o.clearLastError()}return o.setLastError(12)},napi_get_reference_value:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.refStore.get(e).get(a);return new DataView(n.buffer).setUint32(t,o,!0),a.clearLastError()},napi_open_escapable_handle_scope:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var a=l.openScope(t);return new DataView(n.buffer).setUint32(e,a.id,!0),t.clearLastError()},napi_open_handle_scope:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var a=l.openScope(t);return new DataView(n.buffer).setUint32(e,a.id,!0),t.clearLastError()},napi_reference_ref:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);var o=l.refStore.get(e).ref();return t&&new DataView(n.buffer).setUint32(t,o,!0),a.clearLastError()},napi_reference_unref:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);var o=l.refStore.get(e);if(0===o.refcount())return a.setLastError(9);var i=o.unref();return t&&new DataView(n.buffer).setUint32(t,i,!0),a.clearLastError()},napi_remove_env_cleanup_hook:function(r,e,t){if(!r)return 1;var n=l.envStore.get(r);return e?(l.removeCleanupHook(n,e,t),0):n.setLastError(1)}});var gr=Object.freeze({__proto__:null,_emnapi_get_filename:function(r,e,t){var n=l.envStore.get(r).filename;return e?q.stringToUTF8(n,e,t):q.lengthBytesUTF8(n)}});var _r=Object.freeze({__proto__:null,napi_create_promise:function(r,e,t){var a,o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!e)return i.setLastError(1);if(!t)return i.setLastError(1);var s=new DataView(n.buffer),u=new Promise(function(r,t){var n=l.createDeferred({resolve:r,reject:t});a=n.id,s.setUint32(e,a,!0)});return o=l.addToCurrentScope(u).id,s.setUint32(t,o,!0),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_is_promise:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e).isPromise()?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_reject_deferred:function(r,e,t){if(!r)return 1;var n=l.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{return e&&t?(l.deferredStore.get(e).reject(l.handleStore.get(t).value),n.getReturnStatus()):n.setLastError(1)}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_resolve_deferred:function(r,e,t){if(!r)return 1;var n=l.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{return e&&t?(l.deferredStore.get(e).resolve(l.handleStore.get(t).value),n.getReturnStatus()):n.setLastError(1)}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}}});function Er(r,e,t,a,o,i){var s;if(!r)return 1;var u=l.envStore.get(r);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!i)return u.setLastError(1);if(!e)return u.setLastError(1);var f=l.handleStore.get(e);if(null==f.value)throw new TypeError("Cannot convert undefined or null to object");var c=void 0;try{c=f.isObject()||f.isFunction()?f.value:Object(f.value)}catch(r){return u.setLastError(2)}if(0!==t&&1!==t)return u.setLastError(1);if(0!==o&&1!==o)return u.setLastError(1);var d=[],p=void 0,v=void 0,h=void 0,y=!0,g=/^(0|[1-9][0-9]*)$/;do{for(p=Object.getOwnPropertyNames(c),v=Object.getOwnPropertySymbols(c),h=0;h=10?23:10);s.clearLastError();try{if((t>>>=0)>0&&!a)return s.setLastError(1);if(!e)return s.setLastError(1);var u=l.handleStore.get(e),f=u.value;if(!u.isObject()&&!u.isFunction())return s.setLastError(2);for(var c=void 0,d=new DataView(n.buffer),p=0;p=10?23:10);i.clearLastError();try{if(!e)return i.setLastError(1);var s=l.handleStore.get(e);if(!s.isObject()&&!s.isFunction())return i.setLastError(2);if(l.feature.supportReflect)o=Reflect.deleteProperty(s.value,t>>>0);else try{o=delete s.value[t>>>0]}catch(r){o=!1}if(a)new DataView(n.buffer).setInt8(a,o?1:0,!0);return i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_delete_property:function(r,e,t,a){var o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);if(!e)return i.setLastError(1);var s=l.handleStore.get(e);if(!s.isObject()&&!s.isFunction())return i.setLastError(2);var u=l.handleStore.get(t).value;if(l.feature.supportReflect)o=Reflect.deleteProperty(s.value,u);else try{o=delete s.value[u]}catch(r){o=!1}if(a)new DataView(n.buffer).setInt8(a,o?1:0,!0);return i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_get_all_property_names:Er,napi_get_element:function(r,e,t,a){var o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!a)return i.setLastError(1);if(!e)return i.setLastError(1);var s=l.handleStore.get(e);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(r){return i.setLastError(2)}return o=i.ensureHandleId(u[t>>>0]),new DataView(n.buffer).setUint32(a,o,!0),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_get_named_property:function(r,e,t,a){var o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!a)return i.setLastError(1);if(!e)return i.setLastError(1);if(!t)return i.setLastError(1);var s=l.handleStore.get(e);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(r){return i.setLastError(2)}return o=i.ensureHandleId(u[q.UTF8ToString(t,-1)]),new DataView(n.buffer).setUint32(a,o,!0),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_get_property:function(r,e,t,a){var o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);if(!a)return i.setLastError(1);if(!e)return i.setLastError(1);var s=l.handleStore.get(e);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(r){return i.setLastError(2)}return o=i.ensureHandleId(u[l.handleStore.get(t).value]),new DataView(n.buffer).setUint32(a,o,!0),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_get_property_names:function(r,e,t){return Er(r,e,0,18,1,t)},napi_has_element:function(r,e,t,a){var o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!a)return i.setLastError(1);if(!e)return i.setLastError(1);var s=l.handleStore.get(e);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(r){return i.setLastError(2)}return o=t>>>0 in u?1:0,new DataView(n.buffer).setInt8(a,o,!0),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_has_named_property:function(r,e,t,a){var o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!a)return i.setLastError(1);if(!e)return i.setLastError(1);if(!t)return i.setLastError(1);var s=l.handleStore.get(e);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(r){return i.setLastError(2)}return o=q.UTF8ToString(t,-1)in u,new DataView(n.buffer).setInt8(a,o?1:0,!0),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_has_own_property:function(r,e,t,a){var o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);if(!a)return i.setLastError(1);if(!e)return i.setLastError(1);var s=l.handleStore.get(e);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(r){return i.setLastError(2)}var f=l.handleStore.get(t).value;return"string"!=typeof f&&"symbol"!=typeof f?i.setLastError(4):(o=Object.prototype.hasOwnProperty.call(u,l.handleStore.get(t).value),new DataView(n.buffer).setInt8(a,o?1:0,!0),i.getReturnStatus())}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_has_property:function(r,e,t,a){var o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);if(!a)return i.setLastError(1);if(!e)return i.setLastError(1);var s=l.handleStore.get(e);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(r){return i.setLastError(2)}return o=l.handleStore.get(t).value in u?1:0,new DataView(n.buffer).setInt8(a,o,!0),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_object_freeze:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!e)return t.setLastError(1);var n=l.handleStore.get(e),a=n.value;return n.isObject()||n.isFunction()?(Object.freeze(a),t.getReturnStatus()):t.setLastError(2)}catch(r){return t.tryCatch.setError(r),t.setLastError(10)}},napi_object_seal:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!e)return t.setLastError(1);var n=l.handleStore.get(e),a=n.value;return n.isObject()||n.isFunction()?(Object.seal(a),t.getReturnStatus()):t.setLastError(2)}catch(r){return t.tryCatch.setError(r),t.setLastError(10)}},napi_set_element:function(r,e,t,n){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!n)return a.setLastError(1);if(!e)return a.setLastError(1);var o=l.handleStore.get(e);return o.isObject()||o.isFunction()?(o.value[t>>>0]=l.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(2)}catch(r){return a.tryCatch.setError(r),a.setLastError(10)}},napi_set_named_property:function(r,e,t,n){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!n)return a.setLastError(1);if(!e)return a.setLastError(1);var o=l.handleStore.get(e);return o.isObject()||o.isFunction()?t?(l.handleStore.get(e).value[q.UTF8ToString(t,-1)]=l.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(1):a.setLastError(2)}catch(r){return a.tryCatch.setError(r),a.setLastError(10)}},napi_set_property:function(r,e,t,n){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!t)return a.setLastError(1);if(!n)return a.setLastError(1);if(!e)return a.setLastError(1);var o=l.handleStore.get(e);return o.isObject()||o.isFunction()?(o.value[l.handleStore.get(t).value]=l.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(2)}catch(r){return a.tryCatch.setError(r),a.setLastError(10)}}});var mr=Object.freeze({__proto__:null,napi_run_script:function(r,e,t){var a,o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!e)return i.setLastError(1);if(!t)return i.setLastError(1);var s=l.handleStore.get(e);if(!s.isString())return i.setLastError(3);var u=l.handleStore.get(5).value.eval(s.value);o=i.ensureHandleId(u),new DataView(n.buffer).setUint32(t,o,!0),a=i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}return a}});var Lr=Object.freeze({__proto__:null,napi_coerce_to_bool:function(r,e,t){var a;if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{return e&&t?(a=l.handleStore.get(e).value?4:3,new DataView(n.buffer).setUint32(t,a,!0),o.getReturnStatus()):o.setLastError(1)}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_coerce_to_number:function(r,e,t){var a;if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);var i=l.handleStore.get(e);if(i.isBigInt())throw new TypeError("Cannot convert a BigInt value to a number");return a=l.addToCurrentScope(Number(i.value)).id,new DataView(n.buffer).setUint32(t,a,!0),o.getReturnStatus()}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_coerce_to_object:function(r,e,t){var a;if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);var i=l.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");return a=o.ensureHandleId(Object(i.value)),new DataView(n.buffer).setUint32(t,a,!0),o.getReturnStatus()}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_coerce_to_string:function(r,e,t){var a;if(!r)return 1;var o=l.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);var i=l.handleStore.get(e);if(i.isSymbol())throw new TypeError("Cannot convert a Symbol value to a string");return a=l.addToCurrentScope(String(i.value)).id,new DataView(n.buffer).setUint32(t,a,!0),o.getReturnStatus()}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_detach_arraybuffer:function(r,e){if(!r)return 1;var t=l.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=l.handleStore.get(e).value;if(!(n instanceof ArrayBuffer))return"function"==typeof SharedArrayBuffer&&n instanceof SharedArrayBuffer?t.setLastError(20):t.setLastError(19);try{(new(0,l.feature.MessageChannel)).port1.postMessage(n,[n])}catch(r){return t.setLastError(9)}return t.clearLastError()},napi_instanceof:function(r,e,t,a){var o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!e)return i.setLastError(1);if(!a)return i.setLastError(1);if(!t)return i.setLastError(1);var s=new DataView(n.buffer);s.setInt8(a,0,!0);var u=l.handleStore.get(t);return u.isFunction()?(o=l.handleStore.get(e).value instanceof u.value?1:0,s.setInt8(a,o,!0),i.getReturnStatus()):i.setLastError(5)}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_is_array:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e).isArray()?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_is_arraybuffer:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e).isArrayBuffer()?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_is_buffer:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e).isBuffer(l.feature.Buffer)?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_is_dataview:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e).isDataView()?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_is_date:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e).isDate()?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_is_detached_arraybuffer:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e),i=new DataView(n.buffer);if(o.isArrayBuffer()&&0===o.value.byteLength)try{new Uint8Array(o.value)}catch(r){return i.setInt8(t,1,!0),a.getReturnStatus()}return i.setInt8(t,0,!0),a.getReturnStatus()}catch(r){return a.tryCatch.setError(r),a.setLastError(10)}},napi_is_error:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e).value instanceof Error?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_is_typedarray:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e).isTypedArray()?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_strict_equals:function(r,e,t,a){var o;if(!r)return 1;var i=l.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{return e&&(t&&a)?(o=l.handleStore.get(e).value===l.handleStore.get(t).value?1:0,new DataView(n.buffer).setInt8(a,o,!0),i.getReturnStatus()):i.setLastError(1)}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_typeof:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o,i=l.handleStore.get(e);if(i.isNumber())o=3;else if(i.isBigInt())o=9;else if(i.isString())o=4;else if(i.isFunction())o=7;else if(i.isExternal())o=8;else if(i.isObject())o=6;else if(i.isBoolean())o=2;else if(i.isUndefined())o=0;else if(i.isSymbol())o=5;else{if(!i.isNull())return a.setLastError(1);o=1}return new DataView(n.buffer).setInt32(t,o,!0),a.clearLastError()},node_api_is_sharedarraybuffer:function(r,e,t){if(!r)return 1;var a=l.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(e),i="function"==typeof SharedArrayBuffer&&o.value instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(o.value)?1:0;return new DataView(n.buffer).setInt8(t,i,!0),a.clearLastError()}});var br=Object.freeze({__proto__:null,napi_get_version:function(r,e){if(!r)return 1;var t=l.envStore.get(r);return e?(new DataView(n.buffer).setUint32(e,10,!0),t.clearLastError()):t.setLastError(1)}});function Sr(r){for(var e=Object.keys(r),t=0;t>>=0,0===(u>>>=0))return h.setLastError(1);if(!v)return h.setLastError(1);var y,g=0;if(e){if("function"!=typeof l.handleStore.get(e).value)return h.setLastError(1);g=l.createReference(h,e,1,1).id}else if(!p)return h.setLastError(1);if(t){if(null==(y=l.handleStore.get(t).value))return h.setLastError(2);y=Object(y)}else y={};var _=h.ensureHandleId(y),E=l.handleStore.get(a).value;if("symbol"==typeof E)return h.setLastError(3);E=String(E);var w=h.ensureHandleId(E),m=O.offset.end,L=o(m);if(!L)return h.setLastError(9);new Uint8Array(n.buffer).subarray(L,L+m).fill(0);var b=l.createReference(h,_,1,1),S=b.id,A=new DataView(n.buffer);return A.setUint32(L,S,!0),O.initQueue(L)?(M(_,w,-1,L+O.offset.async_id),A.setUint32(L+O.offset.thread_count,u,!0),A.setUint32(L+O.offset.context,d,!0),A.setUint32(L+O.offset.max_queue_size,s,!0),A.setUint32(L+O.offset.ref,g,!0),A.setUint32(L+O.offset.env,r,!0),A.setUint32(L+O.offset.finalize_data,f,!0),A.setUint32(L+O.offset.finalize_cb,c,!0),A.setUint32(L+O.offset.call_js_cb,p,!0),l.addCleanupHook(h,O.cleanup,L),h.ref(),l.increaseWaitingRequestCounter(),A.setInt32(L+O.offset.async_ref,1,!0),A.setUint32(v,L,!0),h.clearLastError()):(i(L),b.dispose(),h.setLastError(9))},h.imports.napi.napi_get_threadsafe_function_context=function(r,e){if(!r||!e)return c(),1;var t=O.getContext(r);return new DataView(n.buffer).setUint32(e,t,!0),0},h.imports.napi.napi_call_threadsafe_function=function(r,e,t){return r?O.push(r,e,t):(c(),1)},h.imports.napi.napi_acquire_threadsafe_function=function(r){return r?O.getMutex(r).execute(function(){return O.getIsClosing(r)?16:(O.addThreadCount(r),0)}):(c(),1)},h.imports.napi.napi_release_threadsafe_function=function(r,e){if(!r)return c(),1;var t=O.getMutex(r),n=O.getCond(r);return t.execute(function(){if(0===O.getThreadCount(r))return 1;if((O.subThreadCount(r),0===O.getThreadCount(r)||1===e)&&!O.getIsClosing(r)){var t=1===e?1:0;O.setIsClosing(r,t),t&&O.getMaxQueueSize(r)>0&&n.signal(),O.send(r)}return 0})},h.imports.napi.napi_unref_threadsafe_function=function(r,e){if(!e)return c(),1;var t=e+O.offset.async_ref>>2,a=new Int32Array(n.buffer);return Atomics.load(a,t)&&(Atomics.store(a,t,0),l.decreaseWaitingRequestCounter()),0},h.imports.napi.napi_ref_threadsafe_function=function(r,e){if(!e)return c(),1;var t=e+O.offset.async_ref>>2,a=new Int32Array(n.buffer);return Atomics.load(a,t)||(Atomics.store(a,t,1),l.increaseWaitingRequestCounter()),0},h}();return t}function m(r,e,t,n){var a,o=(n=null!=n?n:{}).getMemory,i=n.getTable,s=n.beforeInit;if(null!=o&&"function"!=typeof o)throw new TypeError("options.getMemory is not a function");if(null!=i&&"function"!=typeof i)throw new TypeError("options.getTable is not a function");if(null!=s&&"function"!=typeof s)throw new TypeError("options.beforeInit is not a function");var u="object"==typeof e&&null!==e;if(u){if(e.loaded)throw new Error("napiModule has already loaded");a=e}else a=w(n);var f,c=n.wasi,l={env:a.imports.env,napi:a.imports.napi,emnapi:a.imports.emnapi};c&&(f=new y(a.childThread?{wasi:c,childThread:!0,postMessage:a.postMessage}:{wasi:c,threadManager:a.PThread,waitThreadStart:a.waitThreadStart}),Object.assign(l,"function"==typeof c.getImportObject?c.getImportObject():{wasi_snapshot_preview1:c.wasiImport}),Object.assign(l,f.getImportObject()));var d=n.overwriteImports;if("function"==typeof d){var p=d(l);"object"==typeof p&&null!==p&&(l=p)}return r(t,l,function(e,t){if(e)throw e;var n=t.instance,d=n,p=n.exports,v="memory"in p,h="memory"in l.env,y=o?o(p):v?p.memory:h?l.env.memory:void 0;if(!y)throw new Error("memory is neither exported nor imported");var g=i?i(p):p.__indirect_function_table;if(c&&!v){var _=Object.create(null);Object.assign(_,p,{memory:y}),d={exports:_}}var E=t.module;c?d=f.initialize(d,E,y):a.PThread.setup(E,y);var w=function(){s&&s({instance:n,module:E}),a.init({instance:d,module:E,memory:y,table:g});var r={instance:n,module:E,usedInstance:d};return u||(r.napiModule=a),r};if(a.PThread.shouldPreloadWorkers()){var m=a.PThread.loadWasmModuleToAllWorkers();if(r===L)return m.then(w);throw new Error("Synchronous loading is not supported with worker pool (reuseWorker.size > 0)")}return w()})}function L(r,e,t){return n(r,e).then(function(r){return t(null,r)},function(r){return t(r)})}function b(r,n,a){var o;try{o=function(r,n){if(!r)throw new TypeError("Invalid wasm source");var a;if(t(n),n=null!=n?n:{},r instanceof ArrayBuffer||ArrayBuffer.isView(r))a=new e.Module(r);else{if(!(r instanceof WebAssembly.Module))throw new TypeError("Invalid wasm source");a=r}return{instance:new e.Instance(a,n),module:a}}(r,n)}catch(r){return a(r)}return a(null,o)}var S=function(r,e){return S=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,e){r.__proto__=e}||function(r,e){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])},S(r,e)};var A=function(){return A=Object.assign||function(r){for(var e,t=1,n=arguments.length;to(r,e))}catch(r){}if(r instanceof ArrayBuffer||ArrayBuffer.isView(r))return n.instantiate(r,e);if(r instanceof n.Module)return n.instantiate(r,e).then(e=>({instance:e,module:r}));if("undefined"!=typeof Response&&r instanceof Response)return r.arrayBuffer().then(r=>n.instantiate(r,e));const t="string"==typeof r;if(t||"undefined"!=typeof URL&&r instanceof URL){if(t&&"undefined"!=typeof wx&&"undefined"!=typeof __wxConfig)return n.instantiate(r,e);if("function"!=typeof fetch)throw new TypeError("wasm source can not be a string or URL in this environment");if("function"!=typeof n.instantiateStreaming)return o(fetch(r),e);try{return n.instantiateStreaming(fetch(r),e).catch(()=>o(fetch(r),e))}catch(t){return o(fetch(r),e)}}throw new TypeError("Invalid wasm source")}function s(e){var t=function(){var t,a,o,s,i,u="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node,f=Boolean(e.childThread),c="number"==typeof e.waitThreadStart?e.waitThreadStart:Boolean(e.waitThreadStart);function l(r){if("function"==typeof n.RuntimeError)throw new n.RuntimeError(r);throw Error(r)}var d,p,v,g={imports:{env:{},napi:{},emnapi:{}},exports:{},emnapi:{},loaded:!1,filename:"",childThread:f,initWorker:void 0,executeAsyncWork:void 0,waitThreadStart:c,PThread:void 0,init:function(r){if(g.loaded)return g.exports;if(!r)throw new TypeError("Invalid napi init options");var e=r.instance;if(!(null==e?void 0:e.exports))throw new TypeError("Invalid wasm instance");t=e;var u=e.exports,f=r.module,c=r.memory||u.memory,v=r.table||u.__indirect_function_table;if(!(f instanceof n.Module))throw new TypeError("Invalid wasm module");if(!(c instanceof n.Memory))throw new TypeError("Invalid wasm memory");if(!(v instanceof n.Table))throw new TypeError("Invalid wasm table");if(a=c,o=v,"function"!=typeof u.malloc)throw new TypeError("malloc is not exported");if("function"!=typeof u.free)throw new TypeError("free is not exported");if(s=u.malloc,i=u.free,!g.childThread){var y=8,h=e.exports.node_api_module_get_api_version_v1;"function"==typeof h&&(y=h());var E=g.envObject||(g.envObject=d.createEnv(g.filename,y,function(r){return o.get(r)},function(r){return o.get(r)},l,p)),_=d.openScope(E);try{E.callIntoModule(function(r){var t=g.exports,n=_.add(t),a=(0,e.exports.napi_register_wasm_v1)(r.id,n.id);g.exports=a?d.handleStore.get(a).value:t})}catch(r){if("unwind"!==r)throw r}finally{d.closeScope(E,_)}return g.loaded=!0,delete g.envObject,g.exports}}},y=void 0;if(f){d=null==e?void 0:e.context;var h="function"==typeof e.postMessage?e.postMessage:"function"==typeof postMessage?postMessage:void 0;if("function"!=typeof h)throw new TypeError("No postMessage found");g.postMessage=h}else{var E=e.context;if("object"!=typeof E||null===E)throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`");d=E}if("string"==typeof e.filename&&(g.filename=e.filename),"function"==typeof e.onCreateWorker&&(y=e.onCreateWorker),"function"==typeof e.print?e.print:console.log.bind(console),v="function"==typeof e.printErr?e.printErr:console.warn.bind(console),"nodeBinding"in e){var _=e.nodeBinding;if("object"!=typeof _||null===_)throw new TypeError("Invalid `options.nodeBinding`. Use @emnapi/node-binding package");p=_}var w=0;if("asyncWorkPoolSize"in e){if("number"!=typeof e.asyncWorkPoolSize)throw new TypeError("options.asyncWorkPoolSize must be a integer");(w=e.asyncWorkPoolSize|0)>1024?w=1024:w<-1024&&(w=-1024)}var L=!f&&w<=0;function m(){return Math.abs(w)}function b(r){if(!r)return!1;if(r._emnapiSendListener)return!0;var e=function(r){var e=(u?r:r.data).__emnapi__;if(e&&"async-send"===e.type)if(f){(0,g.postMessage)({__emnapi__:e})}else{var t=e.payload.callback;o.get(t)(e.payload.data)}};return r._emnapiSendListener={handler:e,dispose:function(){u?r.off("message",e):r.removeEventListener("message",e,!1),delete r._emnapiSendListener}},u?r.on("message",e):r.addEventListener("message",e,!1),!0}g.imports.env._emnapi_async_work_pool_size=m,g.emnapi.addSendListener=b;var S=new r(f?{printErr:v,childThread:!0}:{printErr:v,beforeLoad:function(r){b(r)},reuseWorker:e.reuseWorker,onCreateWorker:y});function C(r,e){d.feature.setImmediate(function(){o.get(r)(e)})}function A(r,e){Promise.resolve().then(function(){o.get(r)(e)})}function I(r,e){var t,n=[e>>>0,(t=e,+Math.abs(t)>=1?t>0?(0|Math.min(+Math.floor(t/4294967296),4294967295))>>>0:~~+Math.ceil((t-+(~~t>>>0))/4294967296)>>>0:0)],o=new DataView(a.buffer);o.setInt32(r,n[0],!0),o.setInt32(r+4,n[1],!0)}g.PThread=S;var k,V=Object.freeze({__proto__:null,$emnapiSetValueI64:I,_emnapi_call_finalizer:function(r,e,t,n,a){d.envStore.get(e).callFinalizerInternal(r,t,n,a)},_emnapi_callback_into_module:function(r,e,t,n,a){var s=d.envStore.get(e),i=d.openScope(s);try{s.callbackIntoModule(Boolean(r),function(){o.get(t)(e,n)})}catch(r){throw d.closeScope(s,i),a&&d.closeScope(s),r}d.closeScope(s,i)},_emnapi_close_handle_scope:function(r){return d.closeScope()},_emnapi_ctx_decrease_waiting_request_counter:function(){d.decreaseWaitingRequestCounter()},_emnapi_ctx_increase_waiting_request_counter:function(){d.increaseWaitingRequestCounter()},_emnapi_get_node_version:function(r,e,t){var n="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node?process.versions.node.split(".").map(function(r){return Number(r)}):[0,0,0],o=new DataView(a.buffer);o.setUint32(r,n[0],!0),o.setUint32(e,n[1],!0),o.setUint32(t,n[2],!0)},_emnapi_get_now:function(){return performance.timeOrigin+performance.now()},_emnapi_is_main_browser_thread:function(){return"undefined"==typeof window||"undefined"==typeof document||u?0:1},_emnapi_is_main_runtime_thread:function(){return f?0:1},_emnapi_next_tick:A,_emnapi_open_handle_scope:function(){return d.openScope().id},_emnapi_runtime_keepalive_pop:function(){},_emnapi_runtime_keepalive_push:function(){},_emnapi_set_immediate:C,_emnapi_unwind:function(){throw"unwind"},napi_clear_last_error:function(r){return d.envStore.get(r).clearLastError()},napi_set_last_error:function(r,e,t,n){return d.envStore.get(r).setLastError(e,t,n)}});function U(r){var e=new DataView(a.buffer).getInt32(r+20,!0);return S.pthreads[e]}var T=new Promise(function(r){k=function(){T.ready=!0,r()}});T.ready=!1;var B=Object.freeze({__proto__:null,_emnapi_after_uvthreadpool_ready:function(r,e,t){T.ready?o.get(r)(e,t):T.then(function(){o.get(r)(e,t)})},_emnapi_async_send_js:function(r,e,t){if(f)(0,g.postMessage)({__emnapi__:{type:"async-send",payload:{callback:e,data:t}}});else switch(r){case 0:C(e,t);break;case 1:A(e,t)}},_emnapi_emit_async_thread_ready:function(){f&&(0,g.postMessage)({__emnapi__:{type:"async-thread-ready",payload:{}}})},_emnapi_tell_js_uvthreadpool:function(r,e){for(var t=[],n=new DataView(a.buffer),o=function(e){var a=U(n.getUint32(r+4*e,!0));t.push(new Promise(function(r){var e=function(t){var n=(u?t:t.data).__emnapi__;n&&"async-thread-ready"===n.type&&(r(),a&&"function"==typeof a.unref&&a.unref(),u?a.off("message",e):a.removeEventListener("message",e))};u?a.on("message",e):a.addEventListener("message",e)}))},s=0;s>16)?n.setLastError(9):(d.feature.supportBigInt?new DataView(a.buffer).setBigInt64(t,BigInt(a.buffer.byteLength),!0):I(t,a.buffer.byteLength),n.clearLastError())}}),j={idGen:{},values:[void 0],queued:new Set,pending:[],init:function(){var r={nextId:1,list:[],generate:function(){var e;return r.list.length?e=r.list.shift():(e=r.nextId,r.nextId++),e},reuse:function(e){r.list.push(e)}};j.idGen=r,j.values=[void 0],j.queued=new Set,j.pending=[]},create:function(r,e,t,n,a,o){var s=0,i=0;if(p){var u=p.node.emitAsyncInit(e,t,-1);s=u.asyncId,i=u.triggerAsyncId}var f=j.idGen.generate();return j.values[f]={env:r,id:f,resource:e,asyncId:s,triggerAsyncId:i,status:0,execute:n,complete:a,data:o},f},callComplete:function(r,e){var t=r.complete,n=r.env,a=r.data,s=function(){if(t){var r=d.envStore.get(n),s=d.openScope(r);try{r.callbackIntoModule(!0,function(){o.get(t)(n,e,a)})}finally{d.closeScope(r,s)}}};p?p.node.makeCallback(r.resource,s,[],{asyncId:r.asyncId,triggerAsyncId:r.triggerAsyncId}):s()},queue:function(r){var e=j.values[r];if(e&&0===e.status){if(e.status=1,j.queued.size>=(Math.abs(w)||4))return void j.pending.push(r);j.queued.add(r);var t=e.env,n=e.data,a=e.execute;e.status=2,d.feature.setImmediate(function(){if(o.get(a)(t,n),j.queued.delete(r),e.status=3,d.feature.setImmediate(function(){j.callComplete(e,0)}),j.pending.length>0){var s=j.pending.shift();j.values[s].status=0,j.queue(s)}})}},cancel:function(r){var e=j.pending.indexOf(r);if(-1!==e){var t=j.values[r];return t&&1===t.status?(t.status=4,j.pending.splice(e,1),d.feature.setImmediate(function(){j.callComplete(t,11)}),0):9}return 9},remove:function(r){var e=j.values[r];e&&(p&&p.node.emitAsyncDestroy({asyncId:e.asyncId,triggerAsyncId:e.triggerAsyncId}),j.values[r]=void 0,j.idGen.reuse(r))}};function R(r,e,t,n){if(p){var o=d.handleStore.get(r).value,s=d.handleStore.get(e).value,i=p.node.emitAsyncInit(o,s,t),u=i.asyncId,f=i.triggerAsyncId;if(n){var c=new DataView(a.buffer);c.setFloat64(n,u,!0),c.setFloat64(n+8,f,!0)}}}function x(r,e){p&&p.node.emitAsyncDestroy({asyncId:r,triggerAsyncId:e})}var G=Object.freeze({__proto__:null,_emnapi_async_destroy_js:function(r){if(!p)return 9;var e=new DataView(a.buffer),t=e.getInt32(r,!0),n=e.getInt32(r+4,!0),o=BigInt(t>>>0)|BigInt(n)<=BigInt(-1)*(BigInt(1)<=BigInt(1)<>BigInt(32)),c=new DataView(a.buffer);return c.setInt32(t,u,!0),c.setInt32(t+4,f,!0),0},_emnapi_env_check_gc_access:function(r){d.envStore.get(r).checkGCAccess()},_emnapi_node_emit_async_destroy:x,_emnapi_node_emit_async_init:R,_emnapi_node_make_callback:function(r,e,t,n,o,s,i,u){var f,c=0;if(p){var l=d.handleStore.get(e).value,v=d.handleStore.get(t).value;o>>>=0;for(var g=Array(o),y=new DataView(a.buffer);c=10?23:10);c.clearLastError();try{if(!p)return c.setLastError(9);if(!t)return c.setLastError(1);if(o>0&&!s)return c.setLastError(1);var l=Object(d.handleStore.get(t).value),v=d.handleStore.get(n).value;if("function"!=typeof v)return c.setLastError(1);var g=new DataView(a.buffer),y=g.getInt32(e,!0),h=g.getInt32(e+4,!0),E=BigInt(y>>>0)|BigInt(h)<>>=0;for(var _=Array(o);f=t&&t>0&&!n},s="undefined"!=typeof window&&"undefined"!=typeof document&&!u;return n.execute(function(){for(;o();){if(0===t)return 15;if(s)return 21;a.wait()}return z.getIsClosing(r)?0===z.getThreadCount(r)?1:(z.subThreadCount(r),16):(z.pushQueue(r,e),z.send(r),0)})},getMutex:function(r){var e=r+z.offset.mutex,t={lock:function(){var r="undefined"!=typeof window&&"undefined"!=typeof document&&!u,t=new Int32Array(a.buffer,e,1);if(r)for(;;){if(0===Atomics.compareExchange(t,0,0,1))return}else for(;;){if(0===Atomics.compareExchange(t,0,0,1))return;Atomics.wait(t,0,1)}},unlock:function(){var r=new Int32Array(a.buffer,e,1);if(1!==Atomics.compareExchange(r,0,1,0))throw new Error("Tried to unlock while not holding the mutex");Atomics.notify(r,0,1)},execute:function(r){t.lock();try{return r()}finally{t.unlock()}}};return t},getCond:function(r){var e=r+z.offset.cond,t=z.getMutex(r);return{wait:function(){var r=new Int32Array(a.buffer,e,1),n=Atomics.load(r,0);t.unlock(),Atomics.wait(r,0,n),t.lock()},signal:function(){var r=new Int32Array(a.buffer,e,1);Atomics.add(r,0,1),Atomics.notify(r,0,1)}}},getQueueSize:function(r){return z.loadSizeTypeValue(r+z.offset.queue_size,!0)},addQueueSize:function(r){var e,t,n=z.offset.queue_size;e=new Uint32Array(a.buffer),t=r+n>>2,Atomics.add(e,t,1)},subQueueSize:function(r){var e,t,n=z.offset.queue_size;e=new Uint32Array(a.buffer),t=r+n>>2,Atomics.sub(e,t,1)},getThreadCount:function(r){return z.loadSizeTypeValue(r+z.offset.thread_count,!0)},addThreadCount:function(r){var e,t,n=z.offset.thread_count;e=new Uint32Array(a.buffer),t=r+n>>2,Atomics.add(e,t,1)},subThreadCount:function(r){var e,t,n=z.offset.thread_count;e=new Uint32Array(a.buffer),t=r+n>>2,Atomics.sub(e,t,1)},getIsClosing:function(r){return Atomics.load(new Int32Array(a.buffer),r+z.offset.is_closing>>2)},setIsClosing:function(r,e){Atomics.store(new Int32Array(a.buffer),r+z.offset.is_closing>>2,e)},getHandlesClosing:function(r){return Atomics.load(new Int32Array(a.buffer),r+z.offset.handles_closing>>2)},setHandlesClosing:function(r,e){Atomics.store(new Int32Array(a.buffer),r+z.offset.handles_closing>>2,e)},getDispatchState:function(r){return Atomics.load(new Uint32Array(a.buffer),r+z.offset.dispatch_state>>2)},getContext:function(r){return z.loadSizeTypeValue(r+z.offset.context,!1)},getMaxQueueSize:function(r){return z.loadSizeTypeValue(r+z.offset.max_queue_size,!0)},getEnv:function(r){return z.loadSizeTypeValue(r+z.offset.env,!1)},getCallJSCb:function(r){return z.loadSizeTypeValue(r+z.offset.call_js_cb,!1)},getRef:function(r){return z.loadSizeTypeValue(r+z.offset.ref,!1)},getResource:function(r){return z.loadSizeTypeValue(r+z.offset.resource,!1)},getFinalizeCb:function(r){return z.loadSizeTypeValue(r+z.offset.finalize_cb,!1)},getFinalizeData:function(r){return z.loadSizeTypeValue(r+z.offset.finalize_data,!1)},loadSizeTypeValue:function(r,e){var t;return e?(t=new Uint32Array(a.buffer),Atomics.load(t,r>>2)):(t=new Int32Array(a.buffer),Atomics.load(t,r>>2))},storeSizeTypeValue:function(r,e,t){var n;return t?(n=new Uint32Array(a.buffer),void Atomics.store(n,r>>2,e)):(n=new Int32Array(a.buffer),void Atomics.store(n,r>>2,e>>>0))},destroy:function(r){z.destroyQueue(r);var e=z.getEnv(r),t=d.envStore.get(e),n=z.getRef(r);n&&d.refStore.get(n).dispose(),d.removeCleanupHook(t,z.cleanup,r),t.unref();var o=r+z.offset.async_ref>>2,s=new Int32Array(a.buffer);Atomics.load(s,o)&&(Atomics.store(s,o,0),d.decreaseWaitingRequestCounter());var u=z.getResource(r);if(d.refStore.get(u).dispose(),p){var f=new DataView(a.buffer);x(f.getFloat64(r+z.offset.async_id,!0),f.getFloat64(r+z.offset.trigger_async_id,!0))}i(r)},emptyQueueAndDelete:function(r){for(var e,t=z.getCallJSCb(r),n=z.getContext(r);z.getQueueSize(r)>0;)e=z.shiftQueue(r),t&&o.get(t)(0,0,n,e);z.destroy(r)},finalize:function(r){var e=z.getEnv(r),t=d.envStore.get(e);d.openScope(t);var n=z.getFinalizeCb(r),o=z.getFinalizeData(r),s=z.getContext(r),i=function(){t.callFinalizerInternal(0,n,o,s)};try{if(n)if(p){var u=z.getResource(r),f=d.refStore.get(u).get(),c=d.handleStore.get(f).value,l=new DataView(a.buffer),v=l.getFloat64(r+z.offset.async_id,!0),g=l.getFloat64(r+z.offset.trigger_async_id,!0);p.node.makeCallback(c,i,[],{asyncId:v,triggerAsyncId:g})}else i();z.emptyQueueAndDelete(r)}finally{d.closeScope(t)}},cleanup:function(r){z.closeHandlesAndMaybeDelete(r,1)},closeHandlesAndMaybeDelete:function(r,e){var t=z.getEnv(r),n=d.envStore.get(t);d.openScope(n);try{if(e&&z.getMutex(r).execute(function(){z.setIsClosing(r,1),z.getMaxQueueSize(r)>0&&z.getCond(r).signal()}),z.getHandlesClosing(r))return;z.setHandlesClosing(r,1),d.feature.setImmediate(function(){z.finalize(r)})}finally{d.closeScope(n)}},dispatchOne:function(r){var e=0,t=!1,n=!1,s=z.getMutex(r),i=z.getCond(r);if(s.execute(function(){if(z.getIsClosing(r))z.closeHandlesAndMaybeDelete(r,0);else{var a=z.getQueueSize(r);if(a>0){e=z.shiftQueue(r),t=!0;var o=z.getMaxQueueSize(r);a===o&&o>0&&i.signal(),a--}0===a?0===z.getThreadCount(r)&&(z.setIsClosing(r,1),z.getMaxQueueSize(r)>0&&i.signal(),z.closeHandlesAndMaybeDelete(r,0)):n=!0}}),t){var u=z.getEnv(r),f=d.envStore.get(u);d.openScope(f);var c=function(){f.callbackIntoModule(!1,function(){var t=z.getCallJSCb(r),n=z.getRef(r),a=n?d.refStore.get(n).get():0;if(t){var s=z.getContext(r);o.get(t)(u,a,s,e)}else{var i=a?d.handleStore.get(a).value:null;"function"==typeof i&&i()}})};try{if(p){var l=z.getResource(r),v=d.refStore.get(l).get(),g=d.handleStore.get(v).value,y=new DataView(a.buffer);p.node.makeCallback(g,c,[],{asyncId:y.getFloat64(r+z.offset.async_id,!0),triggerAsyncId:y.getFloat64(r+z.offset.trigger_async_id,!0)})}else c()}finally{d.closeScope(f)}}return n},dispatch:function(r){for(var e=!0,t=1e3,n=new Uint32Array(a.buffer),o=r+z.offset.dispatch_state>>2;e&&0!==--t;)Atomics.store(n,o,1),e=z.dispatchOne(r),1!==Atomics.exchange(n,o,0)&&(e=!0);e&&z.send(r)},send:function(r){1&~Atomics.or(new Uint32Array(a.buffer),r+z.offset.dispatch_state>>2,2)&&(void 0!==f&&f?postMessage({__emnapi__:{type:"tsfn-send",payload:{tsfn:r}}}):d.feature.setImmediate(function(){z.dispatch(r)}))}};var O={unusedWorkers:[],runningWorkers:[],workQueue:[],workerReady:null,offset:{resource:0,async_id:8,trigger_async_id:16,env:24,data:28,execute:32,complete:36,end:40},init:function(){O.unusedWorkers=[],O.runningWorkers=[],O.workQueue=[],O.workerReady=null},addListener:function(r){if(!r)return!1;if(r._emnapiAWMTListener)return!0;var e=function(e){var t=(u?e:e.data).__emnapi__;if(t){var n=t.type,a=t.payload;"async-work-complete"===n?(d.decreaseWaitingRequestCounter(),O.runningWorkers.splice(O.runningWorkers.indexOf(r),1),O.unusedWorkers.push(r),O.checkIdleWorker(),O.callComplete(a.work,0)):"async-work-queue"===n?O.scheduleWork(a.work):"async-work-cancel"===n&&O.cancelWork(a.work)}};return r._emnapiAWMTListener={handler:e,dispose:function(){u?r.off("message",e):r.removeEventListener("message",e,!1),delete r._emnapiAWMTListener}},u?r.on("message",e):r.addEventListener("message",e,!1),!0},initWorkers:function(r){if(f)return O.workerReady||(O.workerReady=Promise.resolve());if(O.workerReady)return O.workerReady;if("function"!=typeof y)throw new TypeError("`options.onCreateWorker` is not a function");var e=[],n=[];if(!("emnapi_async_worker_create"in t.exports))throw new TypeError("`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags");for(var a=0;a0&&O.workQueue.length>0){var r=O.unusedWorkers.shift(),e=O.workQueue.shift();O.runningWorkers.push(r),r.postMessage({__emnapi__:{type:"async-work-execute",payload:{work:e}}})}},getResource:function(r){return z.loadSizeTypeValue(r+O.offset.resource,!1)},getExecute:function(r){return z.loadSizeTypeValue(r+O.offset.execute,!1)},getComplete:function(r){return z.loadSizeTypeValue(r+O.offset.complete,!1)},getEnv:function(r){return z.loadSizeTypeValue(r+O.offset.env,!1)},getData:function(r){return z.loadSizeTypeValue(r+O.offset.data,!1)},scheduleWork:function(r){var e;if(f)(0,g.postMessage)({__emnapi__:{type:"async-work-queue",payload:{work:r}}});else if(d.increaseWaitingRequestCounter(),O.workQueue.push(r),null===(e=O.workerReady)||void 0===e?void 0:e.ready)O.checkIdleWorker();else{var t=function(r){throw d.decreaseWaitingRequestCounter(),r};try{O.initWorkers(m()).then(function(){O.workerReady.ready=!0,O.checkIdleWorker()},t)}catch(r){t(r)}}},cancelWork:function(r){if(f)return(0,g.postMessage)({__emnapi__:{type:"async-work-cancel",payload:{work:r}}}),0;var e=O.workQueue.indexOf(r);return-1!==e?(O.workQueue.splice(e,1),d.feature.setImmediate(function(){d.decreaseWaitingRequestCounter(),O.checkIdleWorker(),O.callComplete(r,11)}),0):9},callComplete:function(r,e){var t=O.getComplete(r),n=O.getEnv(r),s=O.getData(r),i=d.envStore.get(n),u=d.openScope(i),f=function(){t&&i.callbackIntoModule(!0,function(){o.get(t)(n,e,s)})};try{if(p){var c=O.getResource(r),l=d.refStore.get(c).get(),v=d.handleStore.get(l).value,g=new DataView(a.buffer),y=g.getFloat64(r+O.offset.async_id,!0),h=g.getFloat64(r+O.offset.trigger_async_id,!0);p.node.makeCallback(v,f,[],{asyncId:y,triggerAsyncId:h})}else f()}finally{d.closeScope(i,u)}}},F=L?function(r,e,t,n,o,s,i){if(!r)return 1;var u,f=d.envStore.get(r);if(f.checkGCAccess(),!n)return f.setLastError(1);if(!i)return f.setLastError(1);if(u=e?Object(d.handleStore.get(e).value):{},!t)return f.setLastError(1);var c=String(d.handleStore.get(t).value),l=j.create(r,u,c,n,o,s);return new DataView(a.buffer).setUint32(i,l,!0),f.clearLastError()}:function(r,e,t,n,o,i,u){if(!r)return 1;var f,c=d.envStore.get(r);if(c.checkGCAccess(),!n)return c.setLastError(1);if(!u)return c.setLastError(1);if(f=e?Object(d.handleStore.get(e).value):{},!t)return c.setLastError(1);var l=O.offset.end,p=s(l);if(!p)return c.setLastError(9);new Uint8Array(a.buffer).subarray(p,p+l).fill(0);var v=c.ensureHandleId(f),g=d.createReference(c,v,1,1).id,y=new DataView(a.buffer);return y.setUint32(p,g,!0),R(v,t,-1,p+O.offset.async_id),y.setUint32(p+O.offset.env,r,!0),y.setUint32(p+O.offset.execute,n,!0),y.setUint32(p+O.offset.complete,o,!0),y.setUint32(p+O.offset.data,i,!0),y.setUint32(u,p,!0),c.clearLastError()},M=L?function(r,e){if(!r)return 1;var t=d.envStore.get(r);return t.checkGCAccess(),e?(j.remove(e),t.clearLastError()):t.setLastError(1)}:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=O.getResource(e);if(d.refStore.get(n).dispose(),p){var o=new DataView(a.buffer);x(o.getFloat64(e+O.offset.async_id,!0),o.getFloat64(e+O.offset.trigger_async_id,!0))}return i(e),t.clearLastError()},W=L?function(r,e){if(!r)return 1;var t=d.envStore.get(r);return e?(j.queue(e),t.clearLastError()):t.setLastError(1)}:function(r,e){if(!r)return 1;var t=d.envStore.get(r);return e?(O.scheduleWork(e),t.clearLastError()):t.setLastError(1)},J=L?function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(!e)return t.setLastError(1);var n=j.cancel(e);return 0===n?t.clearLastError():t.setLastError(n)}:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(!e)return t.setLastError(1);var n=O.cancelWork(e);return 0===n?t.clearLastError():t.setLastError(n)};g.initWorker=function(r){if(!g.childThread)throw new Error("startThread is only available in child threads");if("function"!=typeof t.exports.emnapi_async_worker_init)throw new TypeError("`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags");t.exports.emnapi_async_worker_init(r)},g.executeAsyncWork=function(r){if(f){var e=O.getExecute(r),t=O.getEnv(r),n=O.getData(r);o.get(e)(t,n),(0,g.postMessage)({__emnapi__:{type:"async-work-complete",payload:{work:r}}})}};var N=Object.freeze({__proto__:null,napi_cancel_async_work:J,napi_create_async_work:F,napi_delete_async_work:M,napi_queue_async_work:W}),P={registry:"function"==typeof FinalizationRegistry?new FinalizationRegistry(function(r){i(r)}):void 0,table:new WeakMap,wasmMemoryViewTable:new WeakMap,init:function(){P.registry="function"==typeof FinalizationRegistry?new FinalizationRegistry(function(r){i(r)}):void 0,P.table=new WeakMap,P.wasmMemoryViewTable=new WeakMap},isSharedArrayBuffer:function(r){return"function"==typeof SharedArrayBuffer&&r instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(r)},isDetachedArrayBuffer:function(r){if(0===r.byteLength)try{new Uint8Array(r)}catch(r){return!0}return!1},getArrayBufferPointer:function(r,e){var t,n={address:0,ownership:0,runtimeAllocated:0};if(r===a.buffer)return n;var o=P.isDetachedArrayBuffer(r);if(P.table.has(r)){var i=P.table.get(r);return o?(i.address=0,i):(e&&0===i.ownership&&1===i.runtimeAllocated&&new Uint8Array(a.buffer).set(new Uint8Array(r),i.address),i)}if(o||0===r.byteLength)return n;if(!e)return n;var u=s(r.byteLength);if(!u)throw new Error("Out of memory");return new Uint8Array(a.buffer).set(new Uint8Array(r),u),n.address=u,n.ownership=P.registry?0:1,n.runtimeAllocated=1,P.table.set(r,n),null===(t=P.registry)||void 0===t||t.register(r,u),n},getOrUpdateMemoryView:function(r){if(r.buffer===a.buffer)return P.wasmMemoryViewTable.has(r)||P.wasmMemoryViewTable.set(r,{Ctor:r.constructor,address:r.byteOffset,length:r instanceof DataView?r.byteLength:r.length,ownership:1,runtimeAllocated:0}),r;if((P.isDetachedArrayBuffer(r.buffer)||"function"==typeof SharedArrayBuffer&&r.buffer instanceof SharedArrayBuffer)&&P.wasmMemoryViewTable.has(r)){var e=P.wasmMemoryViewTable.get(r),t=e.Ctor,n=void 0,o=d.feature.Buffer;return n="function"==typeof o&&t===o?o.from(a.buffer,e.address,e.length):new t(a.buffer,e.address,e.length),P.wasmMemoryViewTable.set(n,e),n}return r},getViewPointer:function(r,e){if((r=P.getOrUpdateMemoryView(r)).buffer===a.buffer){if(P.wasmMemoryViewTable.has(r)){var t=P.wasmMemoryViewTable.get(r);return{address:t.address,ownership:t.ownership,runtimeAllocated:t.runtimeAllocated,view:r}}return{address:r.byteOffset,ownership:1,runtimeAllocated:0,view:r}}var n=P.getArrayBufferPointer(r.buffer,e),o=n.address,s=n.ownership,i=n.runtimeAllocated;return{address:0===o?0:o+r.byteOffset,ownership:s,runtimeAllocated:i,view:r}}},q={utf8Decoder:void 0,utf16Decoder:void 0,init:function(){var r,e={decode:function(r){for(var e=0,t=Math.min(4096,r.length+1),n=new Uint16Array(t),a=[],o=0;;){var s=e=t-1){var i=n.subarray(0,o);if(a.push(String.fromCharCode.apply(null,i)),!s)return a.join("");r=r.subarray(e),e=0,o=0}var u=r[e++];if(128&u){if(192==(224&u)){var f=63&r[e++];n[o++]=(31&u)<<6|f}else if(224==(240&u)){f=63&r[e++];var c=63&r[e++];n[o++]=(31&u)<<12|f<<6|c}else if(240==(248&u)){var l=(7&u)<<18|(f=63&r[e++])<<12|(c=63&r[e++])<<6|63&r[e++];l>65535&&(l-=65536,n[o++]=l>>>10&1023|55296,l=56320|1023&l),n[o++]=l}}else n[o++]=u}}};r="function"==typeof TextDecoder?new TextDecoder:e,q.utf8Decoder=r;var t,n={decode:function(r){var e=new Uint16Array(r.buffer,r.byteOffset,r.byteLength/2);if(e.length<=4096)return String.fromCharCode.apply(null,e);for(var t=[],n=0,a=0;n=55296&&e<=57343?(t+=4,++n):t+=3;return t},UTF8ToString:function(r,e){if(!r||!e)return"";r>>>=0;var t=new Uint8Array(a.buffer),n=r;if(-1===e)for(;t[n];)++n;else n=r+(e>>>0);if((e=n-r)<=16){for(var o=r,s="";o>10,56320|1023&c)}}else s+=String.fromCharCode((31&i)<<6|u)}else s+=String.fromCharCode(i)}return s}return q.utf8Decoder.decode("function"==typeof SharedArrayBuffer&&t.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(t.buffer)?t.slice(r,n):t.subarray(r,n))},stringToUTF8:function(r,e,t){var n=new Uint8Array(a.buffer),o=e;if(!(t>0))return 0;for(var s=o>>>=0,i=o+t-1,u=0;u=55296&&f<=57343)f=65536+((1023&f)<<10)|1023&r.charCodeAt(++u);if(f<=127){if(o>=i)break;n[o++]=f}else if(f<=2047){if(o+1>=i)break;n[o++]=192|f>>6,n[o++]=128|63&f}else if(f<=65535){if(o+2>=i)break;n[o++]=224|f>>12,n[o++]=128|f>>6&63,n[o++]=128|63&f}else{if(o+3>=i)break;n[o++]=240|f>>18,n[o++]=128|f>>12&63,n[o++]=128|f>>6&63,n[o++]=128|63&f}}return n[o]=0,o-s},UTF16ToString:function(r,e){if(!r||!e)return"";var t=r>>>=0;if(-1===e){for(var n=t>>1,o=new Uint16Array(a.buffer);o[n];)++n;t=n<<1}else t=r+2*(e>>>0);if((e=t-r)<=32)return String.fromCharCode.apply(null,new Uint16Array(a.buffer,r,e/2));var s=new Uint8Array(a.buffer);return q.utf16Decoder.decode("function"==typeof SharedArrayBuffer&&s.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(s.buffer)?s.slice(r,t):s.subarray(r,t))},stringToUTF16:function(r,e,t){if(void 0===t&&(t=2147483647),t<2)return 0;for(var n=e,o=(t-=2)<2*r.length?t/2:r.length,s=new DataView(a.buffer),i=0;i>>0;if(0!==t&&!e)return s.setLastError(1);if(!n)return s.setLastError(1);if(!(i||u<=2147483647))return s.setLastError(1);var f=o(e,i,u),c=d.addToCurrentScope(f).id;return new DataView(a.buffer).setUint32(n,c,!0),s.clearLastError()},newExternalString:function(r,e,t,n,o,s,i,u,f){if(!r)return 1;var c=d.envStore.get(r);c.checkGCAccess();var l=-1===t,p=t>>>0;if(0!==t&&!e)return c.setLastError(1);if(!s)return c.setLastError(1);if(!(l||p<=2147483647))return c.setLastError(1);var v=u(r,e,t,s);if(0===v){if(i)new DataView(a.buffer).setInt8(i,1,!0);n&&c.callFinalizer(n,e,o)}return v}};function H(r,e,t,n,o,s,i){if(!r)return 1;var u=d.envStore.get(r);if(u.checkGCAccess(),!e)return u.setLastError(1);var f=d.handleStore.get(e);if(!f.isTypedArray())return u.setLastError(1);var c,l=f.value,p=new DataView(a.buffer);if(t){var v=void 0;if(l instanceof Int8Array)v=0;else if(l instanceof Uint8Array)v=1;else if(l instanceof Uint8ClampedArray)v=2;else if(l instanceof Int16Array)v=3;else if(l instanceof Uint16Array)v=4;else if(l instanceof Int32Array)v=5;else if(l instanceof Uint32Array)v=6;else if("function"==typeof Float16Array&&l instanceof Float16Array)v=11;else if(l instanceof Float32Array)v=7;else if(l instanceof Float64Array)v=8;else if(l instanceof BigInt64Array)v=9;else{if(!(l instanceof BigUint64Array))return u.setLastError(9);v=10}p.setInt32(t,v,!0)}if(n&&p.setUint32(n,l.length,!0),o||s){if(c=l.buffer,o){var g=P.getViewPointer(l,!0).address;p.setUint32(o,g,!0)}if(s){var y=u.ensureHandleId(c);p.setUint32(s,y,!0)}}return i&&p.setUint32(i,l.byteOffset,!0),u.clearLastError()}function Q(r,e,t,n,o,s){if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!e)return i.setLastError(1);var u=d.handleStore.get(e);if(!u.isDataView())return i.setLastError(1);var f,c=u.value,l=new DataView(a.buffer);if(t&&l.setUint32(t,c.byteLength,!0),n||o){if(f=c.buffer,n){var p=P.getViewPointer(c,!0).address;l.setUint32(n,p,!0)}if(o){var v=i.ensureHandleId(f);l.setUint32(o,v,!0)}}return s&&l.setUint32(s,c.byteOffset,!0),i.clearLastError()}var $=Object.freeze({__proto__:null,napi_get_array_length:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if(!o.isArray())return n.setLastError(8);var s=o.value.length>>>0;return new DataView(a.buffer).setUint32(t,s,!0),n.getReturnStatus()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_get_arraybuffer_info:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!e)return o.setLastError(1);var s=d.handleStore.get(e);if(!s.isArrayBuffer()&&!P.isSharedArrayBuffer(s.value))return o.setLastError(1);var i=new DataView(a.buffer);if(t){var u=P.getArrayBufferPointer(s.value,!0).address;i.setUint32(t,u,!0)}return n&&i.setUint32(n,s.value.byteLength,!0),o.clearLastError()},napi_get_buffer_info:function(r,e,t,n){if(!r)return 1;var a=d.envStore.get(r);if(a.checkGCAccess(),!e)return a.setLastError(1);var o=d.handleStore.get(e);return o.isBuffer(d.feature.Buffer)?o.isDataView()?Q(r,e,n,t,0,0):H(r,e,0,n,t,0,0):a.setLastError(1)},napi_get_dataview_info:Q,napi_get_date_value:function(r,e,t){var n;if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(e);return s.isDate()?(n=s.value.valueOf(),new DataView(a.buffer).setFloat64(t,n,!0),o.getReturnStatus()):o.setLastError(1)}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_get_prototype:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if(null==o.value)throw new TypeError("Cannot convert undefined or null to object");var s=void 0;try{s=o.isObject()||o.isFunction()?o.value:Object(o.value)}catch(r){return n.setLastError(2)}var i=n.ensureHandleId(Object.getPrototypeOf(s));return new DataView(a.buffer).setUint32(t,i,!0),n.getReturnStatus()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_get_typedarray_info:H,napi_get_value_bigint_int64:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!d.feature.supportBigInt)return o.setLastError(9);if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(e).value;if("bigint"!=typeof s)return o.setLastError(6);var i=new DataView(a.buffer);s>=BigInt(-1)*(BigInt(1)<=BigInt(1)<>BigInt(32));return i.setInt32(t,u,!0),i.setInt32(t+4,f,!0),o.clearLastError()},napi_get_value_bigint_uint64:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!d.feature.supportBigInt)return o.setLastError(9);if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(e).value;if("bigint"!=typeof s)return o.setLastError(6);var i=new DataView(a.buffer);s>=BigInt(0)&&s>BigInt(32));return i.setUint32(t,u,!0),i.setUint32(t+4,f,!0),o.clearLastError()},napi_get_value_bigint_words:function(r,e,t,n,o){if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!d.feature.supportBigInt)return s.setLastError(9);if(!e)return s.setLastError(1);if(!n)return s.setLastError(1);var i=d.handleStore.get(e);if(!i.isBigInt())return s.setLastError(17);for(var u=i.value>=BigInt(64);if(p=u?i.value*BigInt(-1):i.value,t||o){if(!t)return s.setLastError(1);if(!o)return s.setLastError(1);for(var v=[];p!==BigInt(0);){var g=p&(BigInt(1)<>=BigInt(64)}for(var y=Math.min(c,v.length),h=0;h>BigInt(32));f.setUint32(o+8*h,E,!0),f.setUint32(o+(8*h+4),_,!0)}f.setInt32(t,u?1:0,!0),f.setUint32(n,y,!0)}else c=l,f.setUint32(n,c,!0);return s.clearLastError()},napi_get_value_bool:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if("boolean"!=typeof o.value)return n.setLastError(7);var s=o.value?1:0;return new DataView(a.buffer).setInt8(t,s,!0),n.clearLastError()},napi_get_value_double:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if("number"!=typeof o.value)return n.setLastError(6);var s=o.value;return new DataView(a.buffer).setFloat64(t,s,!0),n.clearLastError()},napi_get_value_external:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if(!o.isExternal())return n.setLastError(1);var s=o.data();return new DataView(a.buffer).setUint32(t,s,!0),n.clearLastError()},napi_get_value_int32:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if("number"!=typeof o.value)return n.setLastError(6);var s=new Int32Array([o.value])[0];return new DataView(a.buffer).setInt32(t,s,!0),n.clearLastError()},napi_get_value_int64:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if("number"!=typeof o.value)return n.setLastError(6);var s=o.value,i=new DataView(a.buffer);return s===Number.POSITIVE_INFINITY||s===Number.NEGATIVE_INFINITY||isNaN(s)?(i.setInt32(t,0,!0),i.setInt32(t+4,0,!0)):s<-0x8000000000000000?(i.setInt32(t,0,!0),i.setInt32(t+4,2147483648,!0)):s>=0x8000000000000000?(i.setUint32(t,4294967295,!0),i.setUint32(t+4,2147483647,!0)):I(t,Math.trunc(s)),n.clearLastError()},napi_get_value_string_latin1:function(r,e,t,n,o){if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!e)return s.setLastError(1);n>>>=0;var i=d.handleStore.get(e);if("string"!=typeof i.value)return s.setLastError(3);var u=new DataView(a.buffer);if(t)if(0!==n){for(var f=0,c=void 0,l=0;l>>=0;var i=d.handleStore.get(e);if("string"!=typeof i.value)return s.setLastError(3);var u=new DataView(a.buffer);if(t)if(0!==n){var f=q.stringToUTF16(i.value,t,2*n);o&&u.setUint32(o,f/2,!0)}else o&&u.setUint32(o,0,!0);else{if(!o)return s.setLastError(1);u.setUint32(o,i.value.length,!0)}return s.clearLastError()},napi_get_value_string_utf8:function(r,e,t,n,o){if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!e)return s.setLastError(1);n>>>=0;var i=d.handleStore.get(e);if("string"!=typeof i.value)return s.setLastError(3);var u=new DataView(a.buffer);if(t)if(0!==n){var f=q.stringToUTF8(i.value,t,n);o&&u.setUint32(o,f,!0)}else o&&u.setUint32(o,0,!0);else{if(!o)return s.setLastError(1);var c=q.lengthBytesUTF8(i.value);u.setUint32(o,c,!0)}return s.clearLastError()},napi_get_value_uint32:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e);if("number"!=typeof o.value)return n.setLastError(6);var s=new Uint32Array([o.value])[0];return new DataView(a.buffer).setUint32(t,s,!0),n.clearLastError()},node_api_set_prototype:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=d.handleStore.get(e).value;if(null==a)throw new TypeError("Cannot convert undefined or null to object");var o=typeof a,s=void 0;try{s="object"===o&&null!==a||"function"===o?a:Object(a)}catch(r){return n.setLastError(2)}var i=d.handleStore.get(t).value;return Object.setPrototypeOf(s,i),n.getReturnStatus()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}}});function Y(r,e,t,n){return q.newString(r,e,t,n,function(r,e,t){var n="",o=0,s=new DataView(a.buffer);if(e)for(;;){if(!(i=s.getUint8(r,!0)))break;n+=String.fromCharCode(i),r++}else for(;o=10?23:10);u.clearLastError();try{if(!d.feature.supportBigInt)return u.setLastError(9);if(!o)return u.setLastError(1);if((t>>>=0)>2147483647)return u.setLastError(1);if(t>16384)throw new RangeError("Maximum BigInt size exceeded");var f=BigInt(0),c=new DataView(a.buffer);for(i=0;i>>0).id;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},node_api_create_external_string_latin1:function(r,e,t,n,a,o,s){return q.newExternalString(r,e,t,n,a,o,s,Y,void 0)},node_api_create_external_string_utf16:function(r,e,t,n,a,o,s){return q.newExternalString(r,e,t,n,a,o,s,X,void 0)},node_api_create_property_key_latin1:function(r,e,t,n){return Y(r,e,t,n)},node_api_create_property_key_utf16:function(r,e,t,n){return X(r,e,t,n)},node_api_create_property_key_utf8:function(r,e,t,n){return Z(r,e,t,n)}});function rr(r,e,t,n,a){var s,i=e&&t?q.UTF8ToString(e,t):"",u=o.get(n),f=function(r){return u(r.id,r.ctx.scopeStore.currentScope.id)},c=function(r,e){return function(){var t=r.ctx.openScope(r),n=t.callbackInfo;n.data=a,n.args=arguments,n.thiz=this,n.fn=s;try{var o=r.callIntoModule(e);return o?r.ctx.handleStore.get(o).value:void 0}finally{n.data=0,n.args=void 0,n.thiz=void 0,n.fn=void 0,r.ctx.closeScope(r,t)}}};if(""===i)return{status:0,f:s=c(r,f)};if(!/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(i))return{status:1,f:void 0};if(d.feature.supportNewFunction){var l=c(r,f);try{s=new Function("_","return function "+i+'(){"use strict";return _.apply(this,arguments);};')(l)}catch(e){s=c(r,f),d.feature.canSetFunctionName&&Object.defineProperty(s,"name",{value:i})}}else s=c(r,f),d.feature.canSetFunctionName&&Object.defineProperty(s,"name",{value:i});return{status:0,f:s}}function er(r,e,t,n,a,o,s,i,u){if(a||o){var f=void 0,c=void 0;a&&(f=rr(r,0,0,a,u).f),o&&(c=rr(r,0,0,o,u).f);var l={configurable:!!(4&i),enumerable:!!(2&i),get:f,set:c};Object.defineProperty(e,t,l)}else if(n){l={configurable:!!(4&i),enumerable:!!(2&i),writable:!!(1&i),value:rr(r,0,0,n,u).f};Object.defineProperty(e,t,l)}else{l={configurable:!!(4&i),enumerable:!!(2&i),writable:!!(1&i),value:d.handleStore.get(s).value};Object.defineProperty(e,t,l)}}function tr(r){var e=d.handleStore.get(r);return e.isObject()||e.isFunction()?(void 0!==P&&ArrayBuffer.isView(e.value)&&P.wasmMemoryViewTable.has(e.value)&&(e=d.addToCurrentScope(P.wasmMemoryViewTable.get(e.value))),{status:0,handle:e}):{status:1}}function nr(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!e)return s.setLastError(1);if(0===n&&!t)return s.setLastError(1);var i=d.handleStore.get(e);if(!i.isObject()&&!i.isFunction())return s.setLastError(1);var u=s.getObjectBinding(i.value),f=u.wrapped,c=d.refStore.get(f);if(!c)return s.setLastError(1);if(t)o=c.data(),new DataView(a.buffer).setUint32(t,o,!0);return 1===n&&(u.wrapped=0,1===c.ownership()?c.resetFinalizer():c.dispose()),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}}function ar(r,e,t,n,o,s){if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!d.feature.supportFinalizer)return i.setLastError(9);if(!e)return i.setLastError(1);if(!n)return i.setLastError(1);var u=tr(e);if(0!==u.status)return i.setLastError(u.status);var f=u.handle,c=s?1:0,l=d.createReferenceWithFinalizer(i,f.id,0,c,n,t,o);if(s){var p=l.id;new DataView(a.buffer).setUint32(s,p,!0)}return i.clearLastError()}var or=Object.freeze({__proto__:null,napi_add_finalizer:ar,napi_check_object_type_tag:function(r,e,t,n){var o=!0;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!e)return s.setLastError(s.tryCatch.hasCaught()?10:1);var i=d.handleStore.get(e);if(!i.isObject()&&!i.isFunction())return s.setLastError(s.tryCatch.hasCaught()?10:2);if(!t)return s.setLastError(s.tryCatch.hasCaught()?10:1);if(!n)return s.setLastError(s.tryCatch.hasCaught()?10:1);var u=s.getObjectBinding(i.value);if(null!==u.tag){var f=u.tag,c=new Uint32Array(a.buffer,t,4);o=f[0]===c[0]&&f[1]===c[1]&&f[2]===c[2]&&f[3]===c[3]}else o=!1;return new DataView(a.buffer).setInt8(n,o?1:0,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_define_class:function(r,e,t,n,o,s,i,u){var f,c,l;if(!r)return 1;var p=d.envStore.get(r);if(p.checkGCAccess(),!p.tryCatch.isEmpty())return p.setLastError(10);if(!p.canCallIntoJs())return p.setLastError(p.moduleApiVersion>=10?23:10);p.clearLastError();try{if(!u)return p.setLastError(1);if(!n)return p.setLastError(1);if((s>>>=0)>0&&!i)return p.setLastError(1);if(t<-1||t>2147483647||!e)return p.setLastError(1);var v=rr(p,e,t,n,o);if(0!==v.status)return p.setLastError(v.status);for(var g=v.f,y=void 0,h=new DataView(a.buffer),E=0;E=10?23:10);n.clearLastError();try{if(!e)return n.setLastError(n.tryCatch.hasCaught()?10:1);var o=d.handleStore.get(e);if(!o.isObject()&&!o.isFunction())return n.setLastError(n.tryCatch.hasCaught()?10:2);if(!t)return n.setLastError(n.tryCatch.hasCaught()?10:1);var s=n.getObjectBinding(o.value);if(null!==s.tag)return n.setLastError(n.tryCatch.hasCaught()?10:1);var i=new Uint8Array(16);return i.set(new Uint8Array(a.buffer,t,16)),s.tag=new Uint32Array(i.buffer),n.getReturnStatus()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_unwrap:function(r,e,t){return nr(r,e,t,0)},napi_wrap:function(r,e,t,n,o,s){return function(r,e,t,n,o,s){var i;if(!r)return 1;var u=d.envStore.get(r);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!d.feature.supportFinalizer){if(n)throw d.createNotSupportWeakRefError("napi_wrap",'Parameter "finalize_cb" must be 0(NULL)');if(s)throw d.createNotSupportWeakRefError("napi_wrap",'Parameter "result" must be 0(NULL)')}if(!e)return u.setLastError(1);var f=tr(e);if(0!==f.status)return u.setLastError(f.status);var c=f.handle;if(0!==u.getObjectBinding(c.value).wrapped)return u.setLastError(1);var l=void 0;if(s){if(!n)return u.setLastError(1);i=(l=d.createReferenceWithFinalizer(u,c.id,0,1,n,t,o)).id,new DataView(a.buffer).setUint32(s,i,!0)}else l=n?d.createReferenceWithFinalizer(u,c.id,0,0,n,t,o):d.createReferenceWithData(u,c.id,0,0,t);return u.getObjectBinding(c.value).wrapped=l.id,u.getReturnStatus()}catch(r){return u.tryCatch.setError(r),u.setLastError(10)}}(r,e,t,n,o,s)},node_api_post_finalizer:function(r,e,t,n){if(!r)return 1;var a=d.envStore.get(r);return a.enqueueFinalizer(d.createTrackedFinalizer(a,e,t,n)),a.clearLastError()}});function sr(r,e,t,n,o,s,i){var u;if(!r)return 1;var f=d.envStore.get(r);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!i)return f.setLastError(1);if(n>>>=0,t||(n=0),n>2147483647)throw new RangeError("Cannot create a memory view larger than 2147483647 bytes");if(t+n>a.buffer.byteLength)throw new RangeError("Memory out of range");if(!d.feature.supportFinalizer&&o)throw d.createNotSupportWeakRefError("emnapi_create_memory_view",'Parameter "finalize_cb" must be 0(NULL)');var c=void 0;switch(e){case 0:c={Ctor:Int8Array,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 1:c={Ctor:Uint8Array,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 2:c={Ctor:Uint8ClampedArray,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 3:c={Ctor:Int16Array,address:t,length:n>>1,ownership:1,runtimeAllocated:0};break;case 4:c={Ctor:Uint16Array,address:t,length:n>>1,ownership:1,runtimeAllocated:0};break;case 5:c={Ctor:Int32Array,address:t,length:n>>2,ownership:1,runtimeAllocated:0};break;case 6:c={Ctor:Uint32Array,address:t,length:n>>2,ownership:1,runtimeAllocated:0};break;case 7:c={Ctor:Float32Array,address:t,length:n>>2,ownership:1,runtimeAllocated:0};break;case 8:c={Ctor:Float64Array,address:t,length:n>>3,ownership:1,runtimeAllocated:0};break;case 9:c={Ctor:BigInt64Array,address:t,length:n>>3,ownership:1,runtimeAllocated:0};break;case 10:c={Ctor:BigUint64Array,address:t,length:n>>3,ownership:1,runtimeAllocated:0};break;case-1:c={Ctor:DataView,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 11:if("function"!=typeof Float16Array)return f.setLastError(1);c={Ctor:Float16Array,address:t,length:n>>1,ownership:1,runtimeAllocated:0};break;case-2:if(!d.feature.Buffer)throw d.createNotSupportBufferError("emnapi_create_memory_view","");c={Ctor:d.feature.Buffer,address:t,length:n,ownership:1,runtimeAllocated:0};break;default:return f.setLastError(1)}var l=c.Ctor,p=-2===e?d.feature.Buffer.from(a.buffer,c.address,c.length):new l(a.buffer,c.address,c.length),v=d.addToCurrentScope(p);if(P.wasmMemoryViewTable.set(p,c),o){var g=ar(r,v.id,t,o,s,0);if(10===g){var y=f.tryCatch.extractException();throw f.clearLastError(),y}if(0!==g)return f.setLastError(g)}return u=v.id,new DataView(a.buffer).setUint32(i,u,!0),f.getReturnStatus()}catch(y){return f.tryCatch.setError(y),f.setLastError(10)}}function ir(r,e,t,n){var o;if(t=null!=t?t:0,t>>>=0,e instanceof ArrayBuffer||P.isSharedArrayBuffer(e)){if(!(i=P.getArrayBufferPointer(e,!1).address))throw new Error("Unknown ArrayBuffer address");if("number"==typeof n&&-1!==n||(n=e.byteLength-t),0===(n>>>=0))return e;o=new Uint8Array(e,t,n);var s=new Uint8Array(a.buffer);return r?s.set(o,i):o.set(s.subarray(i,i+n)),e}if(ArrayBuffer.isView(e)){var i,u=P.getViewPointer(e,!1),f=u.view;if(!(i=u.address))throw new Error("Unknown ArrayBuffer address");if("number"==typeof n&&-1!==n||(n=f.byteLength-t),0===(n>>>=0))return f;o=new Uint8Array(f.buffer,f.byteOffset+t,n);s=new Uint8Array(a.buffer);return r?s.set(o,i):o.set(s.subarray(i,i+n)),f}throw new TypeError("emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter")}function ur(r){var e,t=r instanceof ArrayBuffer,n=r instanceof DataView,a=ArrayBuffer.isView(r)&&!n;if(!(t||a||n||P.isSharedArrayBuffer(r)))throw new TypeError("emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter");return{address:(e=t?P.getArrayBufferPointer(r,!1):P.getViewPointer(r,!1)).address,ownership:e.ownership,runtimeAllocated:e.runtimeAllocated}}var fr=Object.freeze({__proto__:null,$emnapiGetMemoryAddress:ur,$emnapiSyncMemory:ir,emnapi_create_memory_view:sr,emnapi_get_memory_address:function(r,e,t,n,o){var s,i,u,f;if(!r)return 1;var c=d.envStore.get(r);if(c.checkGCAccess(),!c.tryCatch.isEmpty())return c.setLastError(10);if(!c.canCallIntoJs())return c.setLastError(c.moduleApiVersion>=10?23:10);c.clearLastError();try{if(!e)return c.setLastError(1);if(!t&&!n&&!o)return c.setLastError(1);s=(f=ur(c.ctx.handleStore.get(e).value)).address;var l=new DataView(a.buffer);return t&&l.setUint32(t,s,!0),n&&(u=f.ownership,l.setInt32(n,u,!0)),o&&(i=f.runtimeAllocated,l.setInt8(o,i,!0)),c.getReturnStatus()}catch(r){return c.tryCatch.setError(r),c.setLastError(10)}},emnapi_get_runtime_version:function(r,e){if(!r)return 1;var t,n=d.envStore.get(r);if(!e)return n.setLastError(1);try{t=d.getRuntimeVersions().version}catch(r){return n.setLastError(9)}var o=t.split(".").map(function(r){return Number(r)}),s=new DataView(a.buffer);return s.setUint32(e,o[0],!0),s.setUint32(e+4,o[1],!0),s.setUint32(e+8,o[2],!0),n.clearLastError()},emnapi_is_node_binding_available:function(){return p?1:0},emnapi_is_support_bigint:function(){return d.feature.supportBigInt?1:0},emnapi_is_support_weakref:function(){return d.feature.supportFinalizer?1:0},emnapi_sync_memory:function(r,e,t,n,o){var s;if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);var u=new DataView(a.buffer),f=u.getUint32(t,!0),c=i.ctx.handleStore.get(f);if(!(c.isArrayBuffer()||c.isTypedArray()||c.isDataView()||P.isSharedArrayBuffer(c.value)))return i.setLastError(1);var l=ir(Boolean(e),c.value,n,o);return c.value!==l&&(s=i.ensureHandleId(l),u.setUint32(t,s,!0)),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}}});function cr(r,e,t){r>>>=0;var n=t?new SharedArrayBuffer(r):new ArrayBuffer(r);if(e){var o=P.getArrayBufferPointer(n,!0).address;new DataView(a.buffer).setUint32(e,o,!0)}return n}var lr=Object.freeze({__proto__:null,napi_create_array:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=d.addToCurrentScope([]).id;return new DataView(a.buffer).setUint32(e,n,!0),t.clearLastError()},napi_create_array_with_length:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!t)return n.setLastError(1);e>>>=0;var o=d.addToCurrentScope(new Array(e)).id;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_create_arraybuffer:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);var i=cr(e,t,!1);return o=d.addToCurrentScope(i).id,new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_create_buffer:function(r,e,t,n){var o,i,u;if(!r)return 1;var f=d.envStore.get(r);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!n)return f.setLastError(1);var c=d.feature.Buffer;if(!c)throw d.createNotSupportBufferError("napi_create_buffer","");var l=void 0;e>>>=0;var p=new DataView(a.buffer);if(t&&0!==e){if(!(u=s(e)))throw new Error("Out of memory");new Uint8Array(a.buffer).subarray(u,u+e).fill(0);var v=c.from(a.buffer,u,e),g={Ctor:c,address:u,length:e,ownership:P.registry?0:1,runtimeAllocated:1};P.wasmMemoryViewTable.set(v,g),null===(o=P.registry)||void 0===o||o.register(g,u),i=d.addToCurrentScope(v).id,p.setUint32(n,i,!0),p.setUint32(t,u,!0)}else l=c.alloc(e),i=d.addToCurrentScope(l).id,p.setUint32(n,i,!0);return f.getReturnStatus()}catch(r){return f.tryCatch.setError(r),f.setLastError(10)}},napi_create_buffer_copy:function(r,e,t,n,o){var s;if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!o)return i.setLastError(1);var u=d.feature.Buffer;if(!u)throw d.createNotSupportBufferError("napi_create_buffer_copy","");var f=cr(e,n,!1),c=u.from(f);return c.set(new Uint8Array(a.buffer).subarray(t,t+e)),s=d.addToCurrentScope(c).id,new DataView(a.buffer).setUint32(o,s,!0),i.getReturnStatus()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_create_dataview:function(r,e,t,n,o){if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!o)return s.setLastError(1);e>>>=0,n>>>=0;var i=d.handleStore.get(t).value;return i instanceof ArrayBuffer||P.isSharedArrayBuffer(i)?function(r){if(e+n>r.byteLength){var t=new RangeError("byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in");throw t.code="ERR_NAPI_INVALID_DATAVIEW_ARGS",t}var i=new DataView(r,n,e);r===a.buffer&&(P.wasmMemoryViewTable.has(i)||P.wasmMemoryViewTable.set(i,{Ctor:DataView,address:n,length:e,ownership:1,runtimeAllocated:0}));var u=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(o,u,!0),s.getReturnStatus()}(i):s.setLastError(1)}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_create_date:function(r,e,t){var n;if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{return t?(n=d.addToCurrentScope(new Date(e)).id,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()):o.setLastError(1)}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_create_external:function(r,e,t,n,o){var s;if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!o)return i.setLastError(1);if(!d.feature.supportFinalizer&&t)throw d.createNotSupportWeakRefError("napi_create_external",'Parameter "finalize_cb" must be 0(NULL)');var u=d.getCurrentScope().addExternal(e);return t&&d.createReferenceWithFinalizer(i,u.id,0,0,t,e,n),s=u.id,new DataView(a.buffer).setUint32(o,s,!0),i.clearLastError()}catch(r){return i.tryCatch.setError(r),i.setLastError(10)}},napi_create_external_arraybuffer:function(r,e,t,n,o,s){var i;if(!r)return 1;var u=d.envStore.get(r);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!s)return u.setLastError(1);if(t>>>=0,e||(t=0),e+t>a.buffer.byteLength)throw new RangeError("Memory out of range");if(!d.feature.supportFinalizer&&n)throw d.createNotSupportWeakRefError("napi_create_external_arraybuffer",'Parameter "finalize_cb" must be 0(NULL)');var f=new ArrayBuffer(t);if(0===t)try{(new(0,d.feature.MessageChannel)).port1.postMessage(f,[f])}catch(r){}else new Uint8Array(f).set(new Uint8Array(a.buffer).subarray(e,e+t)),P.table.set(f,{address:e,ownership:1,runtimeAllocated:0});var c=d.addToCurrentScope(f);if(n){var l=ar(r,c.id,e,n,o,0);if(10===l){var p=u.tryCatch.extractException();throw u.clearLastError(),p}if(0!==l)return u.setLastError(l)}return i=c.id,new DataView(a.buffer).setUint32(s,i,!0),u.getReturnStatus()}catch(p){return u.tryCatch.setError(p),u.setLastError(10)}},napi_create_external_buffer:function(r,e,t,n,a,o){return sr(r,-2,t,e,n,a,o)},napi_create_object:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=d.addToCurrentScope({}).id;return new DataView(a.buffer).setUint32(e,n,!0),t.clearLastError()},napi_create_object_with_properties:function(r,e,t,n,o,s){if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!s)return i.setLastError(1);if((o>>>=0)>0){if(!t)return i.setLastError(1);if(!n)return i.setLastError(1)}for(var u,f=e?d.handleStore.get(e).value:null,c={},l=new DataView(a.buffer),p=0;p=10?23:10);u.clearLastError();try{if(!n)return u.setLastError(1);if(!s)return u.setLastError(1);var f=d.handleStore.get(n);if(!f.isArrayBuffer())return u.setLastError(1);var c=f.value,l=function(r,e,t,n,o,u){var f,c;if((o>>>=0,u>>>=0,t>1)&&o%t!==0)return(c=new RangeError("start offset of ".concat(null!==(f=e.name)&&void 0!==f?f:""," should be a multiple of ").concat(t))).code="ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT",r.tryCatch.setError(c),r.setLastError(9);if(u*t+o>n.byteLength)return(c=new RangeError("Invalid typed array length")).code="ERR_NAPI_INVALID_TYPEDARRAY_LENGTH",r.tryCatch.setError(c),r.setLastError(9);var l=new e(n,o,u);return n===a.buffer&&(P.wasmMemoryViewTable.has(l)||P.wasmMemoryViewTable.set(l,{Ctor:e,address:o,length:u,ownership:1,runtimeAllocated:0})),i=d.addToCurrentScope(l).id,new DataView(a.buffer).setUint32(s,i,!0),r.getReturnStatus()};switch(e){case 0:return l(u,Int8Array,1,c,o,t);case 1:return l(u,Uint8Array,1,c,o,t);case 2:return l(u,Uint8ClampedArray,1,c,o,t);case 3:return l(u,Int16Array,2,c,o,t);case 4:return l(u,Uint16Array,2,c,o,t);case 5:return l(u,Int32Array,4,c,o,t);case 6:return l(u,Uint32Array,4,c,o,t);case 7:return l(u,Float32Array,4,c,o,t);case 8:return l(u,Float64Array,8,c,o,t);case 9:return l(u,BigInt64Array,8,c,o,t);case 10:return l(u,BigUint64Array,8,c,o,t);case 11:return"function"!=typeof Float16Array?u.setLastError(1):l(u,Float16Array,2,c,o,t);default:return u.setLastError(1)}}catch(r){return u.tryCatch.setError(r),u.setLastError(10)}},node_api_create_buffer_from_arraybuffer:function(r,e,t,n,o){var s;if(!r)return 1;var i=d.envStore.get(r);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!e)return i.setLastError(1);if(!o)return i.setLastError(1);t>>>=0,n>>>=0;var u=d.handleStore.get(e);if(!u.isArrayBuffer())return i.setLastError(1);var f=u.value;if(n+t>f.byteLength){var c=new RangeError("The byte offset + length is out of range");throw c.code="ERR_OUT_OF_RANGE",c}var l=d.feature.Buffer;if(!l)throw d.createNotSupportBufferError("node_api_create_buffer_from_arraybuffer","");var p=l.from(f,t,n);return f===a.buffer&&(P.wasmMemoryViewTable.has(p)||P.wasmMemoryViewTable.set(p,{Ctor:l,address:t,length:n,ownership:1,runtimeAllocated:0})),s=d.addToCurrentScope(p).id,new DataView(a.buffer).setUint32(o,s,!0),i.getReturnStatus()}catch(c){return i.tryCatch.setError(c),i.setLastError(10)}},node_api_create_sharedarraybuffer:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);var i=cr(e,t,!0);return o=d.addToCurrentScope(i).id,new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},node_api_symbol_for:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!n)return o.setLastError(1);var s=-1===t,i=t>>>0;if(0!==t&&!e)return o.setLastError(1);if(!(s||i<=2147483647))return o.setLastError(1);var u=q.UTF8ToString(e,t),f=d.addToCurrentScope(Symbol.for(u)).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()}});var dr=Object.freeze({__proto__:null,napi_get_boolean:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!t)return n.setLastError(1);var o=0===e?3:4;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_get_global:function(r,e){if(!r)return 1;var t=d.envStore.get(r);return t.checkGCAccess(),e?(new DataView(a.buffer).setUint32(e,5,!0),t.clearLastError()):t.setLastError(1)},napi_get_null:function(r,e){if(!r)return 1;var t=d.envStore.get(r);return t.checkGCAccess(),e?(new DataView(a.buffer).setUint32(e,2,!0),t.clearLastError()):t.setLastError(1)},napi_get_undefined:function(r,e){if(!r)return 1;var t=d.envStore.get(r);return t.checkGCAccess(),e?(new DataView(a.buffer).setUint32(e,1,!0),t.clearLastError()):t.setLastError(1)}});var pr=Object.freeze({__proto__:null,napi_get_instance_data:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(!e)return t.setLastError(1);var n=t.getInstanceData();return new DataView(a.buffer).setUint32(e,n,!0),t.clearLastError()},napi_set_instance_data:function(r,e,t,n){if(!r)return 1;var a=d.envStore.get(r);return a.setInstanceData(e,t,n),a.clearLastError()}});var vr=Object.freeze({__proto__:null,_emnapi_get_last_error_info:function(r,e,t,n){var o=d.envStore.get(r).lastError,s=o.errorCode,i=o.engineErrorCode>>>0,u=o.engineReserved,f=new DataView(a.buffer);f.setInt32(e,s,!0),f.setUint32(t,i,!0),f.setUint32(n,u,!0)},napi_create_error:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new Error(s);if(e){var u=d.handleStore.get(e).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},napi_create_range_error:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new RangeError(s);if(e){var u=d.handleStore.get(e).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},napi_create_type_error:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new TypeError(s);if(e){var u=d.handleStore.get(e).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},napi_fatal_error:function(r,e,t,n){var a=q.UTF8ToString(r,e),o=q.UTF8ToString(t,n);p?p.napi.fatalError(a,o):l("FATAL ERROR: "+a+" "+o)},napi_fatal_exception:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!e)return t.setLastError(1);var n=t.ctx.handleStore.get(e);try{t.triggerFatalException(n.value)}catch(r){return t.setLastError(9)}return t.clearLastError()}catch(e){return t.tryCatch.setError(e),t.setLastError(10)}},napi_get_and_clear_last_exception:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=new DataView(a.buffer);if(!t.tryCatch.hasCaught())return n.setUint32(e,1,!0),t.clearLastError();var o=t.tryCatch.exception(),s=t.ensureHandleId(o);return n.setUint32(e,s,!0),t.tryCatch.reset(),t.clearLastError()},napi_is_exception_pending:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=t.tryCatch.hasCaught();return new DataView(a.buffer).setInt8(e,n?1:0,!0),t.clearLastError()},napi_throw:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{return e?(t.tryCatch.setError(d.handleStore.get(e).value),t.clearLastError()):t.setLastError(1)}catch(r){return t.tryCatch.setError(r),t.setLastError(10)}},napi_throw_error:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=new Error(q.UTF8ToString(t,-1));return e&&(a.code=q.UTF8ToString(e,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_throw_range_error:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=new RangeError(q.UTF8ToString(t,-1));return e&&(a.code=q.UTF8ToString(e,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_throw_type_error:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=new TypeError(q.UTF8ToString(t,-1));return e&&(a.code=q.UTF8ToString(e,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},node_api_create_syntax_error:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new SyntaxError(s);if(e){var u=d.handleStore.get(e).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},node_api_throw_syntax_error:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=new SyntaxError(q.UTF8ToString(t,-1));return e&&(a.code=q.UTF8ToString(e,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}}});var gr=Object.freeze({__proto__:null,napi_call_function:function(r,e,t,n,o,s){var i,u=0;if(!r)return 1;var f=d.envStore.get(r);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!e)return f.setLastError(1);if((n>>>=0)>0&&!o)return f.setLastError(1);var c=d.handleStore.get(e).value;if(!t)return f.setLastError(1);var l=d.handleStore.get(t).value;if("function"!=typeof l)return f.setLastError(1);for(var p=[],v=new DataView(a.buffer);u=10?23:10);u.clearLastError();try{if(!s)return u.setLastError(1);if(!n)return u.setLastError(1);var f=rr(u,e,t,n,o);if(0!==f.status)return u.setLastError(f.status);var c=f.f;return i=d.addToCurrentScope(c).id,new DataView(a.buffer).setUint32(s,i,!0),u.getReturnStatus()}catch(r){return u.tryCatch.setError(r),u.setLastError(10)}},napi_get_cb_info:function(r,e,t,n,o,s){if(!r)return 1;var i=d.envStore.get(r);if(!e)return i.setLastError(1);var u=d.scopeStore.get(e).callbackInfo,f=new DataView(a.buffer);if(n){if(!t)return i.setLastError(1);for(var c=f.getUint32(t,!0),l=u.args.length,p=c=10?23:10);u.clearLastError();try{if(!e)return u.setLastError(1);if((t>>>=0)>0&&!n)return u.setLastError(1);if(!o)return u.setLastError(1);var f=d.handleStore.get(e).value;if("function"!=typeof f)return u.setLastError(1);var c=void 0,l=new DataView(a.buffer);if(d.feature.supportReflect){var p=Array(t);for(s=0;s>>0,1);return new DataView(a.buffer).setUint32(n,i.id,!0),o.clearLastError()},napi_delete_reference:function(r,e){if(!r)return 1;var t=d.envStore.get(r);return e?(d.refStore.get(e).dispose(),t.clearLastError()):t.setLastError(1)},napi_escape_handle:function(r,e,t,n){if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!e)return o.setLastError(1);if(!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.scopeStore.get(e);if(!s.escapeCalled()){var i=s.escape(t),u=i?i.id:0;return new DataView(a.buffer).setUint32(n,u,!0),o.clearLastError()}return o.setLastError(12)},napi_get_reference_value:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.refStore.get(e).get(n);return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_open_escapable_handle_scope:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=d.openScope(t);return new DataView(a.buffer).setUint32(e,n.id,!0),t.clearLastError()},napi_open_handle_scope:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=d.openScope(t);return new DataView(a.buffer).setUint32(e,n.id,!0),t.clearLastError()},napi_reference_ref:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);var o=d.refStore.get(e).ref();return t&&new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_reference_unref:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);var o=d.refStore.get(e);if(0===o.refcount())return n.setLastError(9);var s=o.unref();return t&&new DataView(a.buffer).setUint32(t,s,!0),n.clearLastError()},napi_remove_env_cleanup_hook:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);return e?(d.removeCleanupHook(n,e,t),0):n.setLastError(1)}});var hr=Object.freeze({__proto__:null,_emnapi_get_filename:function(r,e,t){var n=d.envStore.get(r).filename;return e?q.stringToUTF8(n,e,t):q.lengthBytesUTF8(n)}});var Er=Object.freeze({__proto__:null,napi_create_promise:function(r,e,t){var n,o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!e)return s.setLastError(1);if(!t)return s.setLastError(1);var i=new DataView(a.buffer),u=new Promise(function(r,t){var a=d.createDeferred({resolve:r,reject:t});n=a.id,i.setUint32(e,n,!0)});return o=d.addToCurrentScope(u).id,i.setUint32(t,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_is_promise:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isPromise()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_reject_deferred:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{return e&&t?(d.deferredStore.get(e).reject(d.handleStore.get(t).value),n.getReturnStatus()):n.setLastError(1)}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_resolve_deferred:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{return e&&t?(d.deferredStore.get(e).resolve(d.handleStore.get(t).value),n.getReturnStatus()):n.setLastError(1)}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}}});function _r(r,e,t,n,o,s){var i;if(!r)return 1;var u=d.envStore.get(r);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!s)return u.setLastError(1);if(!e)return u.setLastError(1);var f=d.handleStore.get(e);if(null==f.value)throw new TypeError("Cannot convert undefined or null to object");var c=void 0;try{c=f.isObject()||f.isFunction()?f.value:Object(f.value)}catch(r){return u.setLastError(2)}if(0!==t&&1!==t)return u.setLastError(1);if(0!==o&&1!==o)return u.setLastError(1);var l=[],p=void 0,v=void 0,g=void 0,y=!0,h=/^(0|[1-9][0-9]*)$/;do{for(p=Object.getOwnPropertyNames(c),v=Object.getOwnPropertySymbols(c),g=0;g=10?23:10);i.clearLastError();try{if((t>>>=0)>0&&!n)return i.setLastError(1);if(!e)return i.setLastError(1);var u=d.handleStore.get(e),f=u.value;if(!u.isObject()&&!u.isFunction())return i.setLastError(2);for(var c=void 0,l=new DataView(a.buffer),p=0;p=10?23:10);s.clearLastError();try{if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(!i.isObject()&&!i.isFunction())return s.setLastError(2);if(d.feature.supportReflect)o=Reflect.deleteProperty(i.value,t>>>0);else try{o=delete i.value[t>>>0]}catch(r){o=!1}if(n)new DataView(a.buffer).setInt8(n,o?1:0,!0);return s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_delete_property:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(!i.isObject()&&!i.isFunction())return s.setLastError(2);var u=d.handleStore.get(t).value;if(d.feature.supportReflect)o=Reflect.deleteProperty(i.value,u);else try{o=delete i.value[u]}catch(r){o=!1}if(n)new DataView(a.buffer).setInt8(n,o?1:0,!0);return s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_get_all_property_names:_r,napi_get_element:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}return o=s.ensureHandleId(u[t>>>0]),new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_get_named_property:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);if(!t)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}return o=s.ensureHandleId(u[q.UTF8ToString(t,-1)]),new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_get_property:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}return o=s.ensureHandleId(u[d.handleStore.get(t).value]),new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_get_property_names:function(r,e,t){return _r(r,e,0,18,1,t)},napi_has_element:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}return o=t>>>0 in u?1:0,new DataView(a.buffer).setInt8(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_has_named_property:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);if(!t)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}return o=q.UTF8ToString(t,-1)in u,new DataView(a.buffer).setInt8(n,o?1:0,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_has_own_property:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}var f=d.handleStore.get(t).value;return"string"!=typeof f&&"symbol"!=typeof f?s.setLastError(4):(o=Object.prototype.hasOwnProperty.call(u,d.handleStore.get(t).value),new DataView(a.buffer).setInt8(n,o?1:0,!0),s.getReturnStatus())}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_has_property:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);if(!e)return s.setLastError(1);var i=d.handleStore.get(e);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(r){return s.setLastError(2)}return o=d.handleStore.get(t).value in u?1:0,new DataView(a.buffer).setInt8(n,o,!0),s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_object_freeze:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!e)return t.setLastError(1);var n=d.handleStore.get(e),a=n.value;return n.isObject()||n.isFunction()?(Object.freeze(a),t.getReturnStatus()):t.setLastError(2)}catch(r){return t.tryCatch.setError(r),t.setLastError(10)}},napi_object_seal:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!e)return t.setLastError(1);var n=d.handleStore.get(e),a=n.value;return n.isObject()||n.isFunction()?(Object.seal(a),t.getReturnStatus()):t.setLastError(2)}catch(r){return t.tryCatch.setError(r),t.setLastError(10)}},napi_set_element:function(r,e,t,n){if(!r)return 1;var a=d.envStore.get(r);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!n)return a.setLastError(1);if(!e)return a.setLastError(1);var o=d.handleStore.get(e);return o.isObject()||o.isFunction()?(o.value[t>>>0]=d.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(2)}catch(r){return a.tryCatch.setError(r),a.setLastError(10)}},napi_set_named_property:function(r,e,t,n){if(!r)return 1;var a=d.envStore.get(r);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!n)return a.setLastError(1);if(!e)return a.setLastError(1);var o=d.handleStore.get(e);return o.isObject()||o.isFunction()?t?(d.handleStore.get(e).value[q.UTF8ToString(t,-1)]=d.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(1):a.setLastError(2)}catch(r){return a.tryCatch.setError(r),a.setLastError(10)}},napi_set_property:function(r,e,t,n){if(!r)return 1;var a=d.envStore.get(r);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!t)return a.setLastError(1);if(!n)return a.setLastError(1);if(!e)return a.setLastError(1);var o=d.handleStore.get(e);return o.isObject()||o.isFunction()?(o.value[d.handleStore.get(t).value]=d.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(2)}catch(r){return a.tryCatch.setError(r),a.setLastError(10)}}});var Lr=Object.freeze({__proto__:null,napi_run_script:function(r,e,t){var n,o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!e)return s.setLastError(1);if(!t)return s.setLastError(1);var i=d.handleStore.get(e);if(!i.isString())return s.setLastError(3);var u=d.handleStore.get(5).value.eval(i.value);o=s.ensureHandleId(u),new DataView(a.buffer).setUint32(t,o,!0),n=s.getReturnStatus()}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}return n}});var mr=Object.freeze({__proto__:null,napi_coerce_to_bool:function(r,e,t){var n;if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{return e&&t?(n=d.handleStore.get(e).value?4:3,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()):o.setLastError(1)}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_coerce_to_number:function(r,e,t){var n;if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(e);if(s.isBigInt())throw new TypeError("Cannot convert a BigInt value to a number");return n=d.addToCurrentScope(Number(s.value)).id,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_coerce_to_object:function(r,e,t){var n;if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(e);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");return n=o.ensureHandleId(Object(s.value)),new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_coerce_to_string:function(r,e,t){var n;if(!r)return 1;var o=d.envStore.get(r);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!e)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(e);if(s.isSymbol())throw new TypeError("Cannot convert a Symbol value to a string");return n=d.addToCurrentScope(String(s.value)).id,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(r){return o.tryCatch.setError(r),o.setLastError(10)}},napi_detach_arraybuffer:function(r,e){if(!r)return 1;var t=d.envStore.get(r);if(t.checkGCAccess(),!e)return t.setLastError(1);var n=d.handleStore.get(e).value;if(!(n instanceof ArrayBuffer))return"function"==typeof SharedArrayBuffer&&n instanceof SharedArrayBuffer?t.setLastError(20):t.setLastError(19);try{(new(0,d.feature.MessageChannel)).port1.postMessage(n,[n])}catch(r){return t.setLastError(9)}return t.clearLastError()},napi_instanceof:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!e)return s.setLastError(1);if(!n)return s.setLastError(1);if(!t)return s.setLastError(1);var i=new DataView(a.buffer);i.setInt8(n,0,!0);var u=d.handleStore.get(t);return u.isFunction()?(o=d.handleStore.get(e).value instanceof u.value?1:0,i.setInt8(n,o,!0),s.getReturnStatus()):s.setLastError(5)}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_is_array:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isArray()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_arraybuffer:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isArrayBuffer()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_buffer:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isBuffer(d.feature.Buffer)?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_dataview:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isDataView()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_date:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isDate()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_detached_arraybuffer:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e),s=new DataView(a.buffer);if(o.isArrayBuffer()&&0===o.value.byteLength)try{new Uint8Array(o.value)}catch(r){return s.setInt8(t,1,!0),n.getReturnStatus()}return s.setInt8(t,0,!0),n.getReturnStatus()}catch(r){return n.tryCatch.setError(r),n.setLastError(10)}},napi_is_error:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).value instanceof Error?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_typedarray:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e).isTypedArray()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_strict_equals:function(r,e,t,n){var o;if(!r)return 1;var s=d.envStore.get(r);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{return e&&(t&&n)?(o=d.handleStore.get(e).value===d.handleStore.get(t).value?1:0,new DataView(a.buffer).setInt8(n,o,!0),s.getReturnStatus()):s.setLastError(1)}catch(r){return s.tryCatch.setError(r),s.setLastError(10)}},napi_typeof:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o,s=d.handleStore.get(e);if(s.isNumber())o=3;else if(s.isBigInt())o=9;else if(s.isString())o=4;else if(s.isFunction())o=7;else if(s.isExternal())o=8;else if(s.isObject())o=6;else if(s.isBoolean())o=2;else if(s.isUndefined())o=0;else if(s.isSymbol())o=5;else{if(!s.isNull())return n.setLastError(1);o=1}return new DataView(a.buffer).setInt32(t,o,!0),n.clearLastError()},node_api_is_sharedarraybuffer:function(r,e,t){if(!r)return 1;var n=d.envStore.get(r);if(n.checkGCAccess(),!e)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(e),s="function"==typeof SharedArrayBuffer&&o.value instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(o.value)?1:0;return new DataView(a.buffer).setInt8(t,s,!0),n.clearLastError()}});var br=Object.freeze({__proto__:null,napi_get_version:function(r,e){if(!r)return 1;var t=d.envStore.get(r);return e?(new DataView(a.buffer).setUint32(e,10,!0),t.clearLastError()):t.setLastError(1)}});function Sr(r){for(var e=Object.keys(r),t=0;t>>=0,0===(u>>>=0))return g.setLastError(1);if(!v)return g.setLastError(1);var y,h=0;if(e){if("function"!=typeof d.handleStore.get(e).value)return g.setLastError(1);h=d.createReference(g,e,1,1).id}else if(!p)return g.setLastError(1);if(t){if(null==(y=d.handleStore.get(t).value))return g.setLastError(2);y=Object(y)}else y={};var E=g.ensureHandleId(y),_=d.handleStore.get(n).value;if("symbol"==typeof _)return g.setLastError(3);_=String(_);var w=g.ensureHandleId(_),L=z.offset.end,m=s(L);if(!m)return g.setLastError(9);new Uint8Array(a.buffer).subarray(m,m+L).fill(0);var b=d.createReference(g,E,1,1),S=b.id,C=new DataView(a.buffer);return C.setUint32(m,S,!0),z.initQueue(m)?(R(E,w,-1,m+z.offset.async_id),C.setUint32(m+z.offset.thread_count,u,!0),C.setUint32(m+z.offset.context,l,!0),C.setUint32(m+z.offset.max_queue_size,o,!0),C.setUint32(m+z.offset.ref,h,!0),C.setUint32(m+z.offset.env,r,!0),C.setUint32(m+z.offset.finalize_data,f,!0),C.setUint32(m+z.offset.finalize_cb,c,!0),C.setUint32(m+z.offset.call_js_cb,p,!0),d.addCleanupHook(g,z.cleanup,m),g.ref(),d.increaseWaitingRequestCounter(),C.setInt32(m+z.offset.async_ref,1,!0),C.setUint32(v,m,!0),g.clearLastError()):(i(m),b.dispose(),g.setLastError(9))},g.imports.napi.napi_get_threadsafe_function_context=function(r,e){if(!r||!e)return l(),1;var t=z.getContext(r);return new DataView(a.buffer).setUint32(e,t,!0),0},g.imports.napi.napi_call_threadsafe_function=function(r,e,t){return r?z.push(r,e,t):(l(),1)},g.imports.napi.napi_acquire_threadsafe_function=function(r){return r?z.getMutex(r).execute(function(){return z.getIsClosing(r)?16:(z.addThreadCount(r),0)}):(l(),1)},g.imports.napi.napi_release_threadsafe_function=function(r,e){if(!r)return l(),1;var t=z.getMutex(r),n=z.getCond(r);return t.execute(function(){if(0===z.getThreadCount(r))return 1;if((z.subThreadCount(r),0===z.getThreadCount(r)||1===e)&&!z.getIsClosing(r)){var t=1===e?1:0;z.setIsClosing(r,t),t&&z.getMaxQueueSize(r)>0&&n.signal(),z.send(r)}return 0})},g.imports.napi.napi_unref_threadsafe_function=function(r,e){if(!e)return l(),1;var t=e+z.offset.async_ref>>2,n=new Int32Array(a.buffer);return Atomics.load(n,t)&&(Atomics.store(n,t,0),d.decreaseWaitingRequestCounter()),0},g.imports.napi.napi_ref_threadsafe_function=function(r,e){if(!e)return l(),1;var t=e+z.offset.async_ref>>2,n=new Int32Array(a.buffer);return Atomics.load(n,t)||(Atomics.store(n,t,1),d.increaseWaitingRequestCounter()),0},g}();return t}function i(r,t,n,a){const o=(a=null!=a?a:{}).getMemory,i=a.getTable,f=a.beforeInit;if(null!=o&&"function"!=typeof o)throw new TypeError("options.getMemory is not a function");if(null!=i&&"function"!=typeof i)throw new TypeError("options.getTable is not a function");if(null!=f&&"function"!=typeof f)throw new TypeError("options.beforeInit is not a function");let c;const l="object"==typeof t&&null!==t;if(l){if(t.loaded)throw new Error("napiModule has already loaded");c=t}else c=s(a);const d=a.wasi;let p,v={env:c.imports.env,napi:c.imports.napi,emnapi:c.imports.emnapi};d&&(p=new e(c.childThread?{wasi:d,childThread:!0,postMessage:c.postMessage}:{wasi:d,threadManager:c.PThread,waitThreadStart:c.waitThreadStart}),Object.assign(v,"function"==typeof d.getImportObject?d.getImportObject():{wasi_snapshot_preview1:d.wasiImport}),Object.assign(v,p.getImportObject()));const g=a.overwriteImports;if("function"==typeof g){const r=g(v);"object"==typeof r&&null!==r&&(v=r)}return r(n,v,(e,t)=>{if(e)throw e;const n=t.instance;let a=n;const s=n.exports,g="memory"in s,y="memory"in v.env,h=o?o(s):g?s.memory:y?v.env.memory:void 0;if(!h)throw new Error("memory is neither exported nor imported");const E=i?i(s):s.__indirect_function_table;if(d&&!g){const r=Object.create(null);Object.assign(r,s,{memory:h}),a={exports:r}}const _=t.module;d?a=p.initialize(a,_,h):c.PThread.setup(_,h);const w=()=>{f&&f({instance:n,module:_}),c.init({instance:a,module:_,memory:h,table:E});const r={instance:n,module:_,usedInstance:a};return l||(r.napiModule=c),r};if(c.PThread.shouldPreloadWorkers()){const e=c.PThread.loadWasmModuleToAllWorkers();if(r===u)return e.then(w);throw new Error("Synchronous loading is not supported with worker pool (reuseWorker.size > 0)")}return w()})}function u(r,e,t){return o(r,e).then(r=>t(null,r),r=>t(r))}function f(r,e,t){let o;try{o=function(r,e){if(!r)throw new TypeError("Invalid wasm source");let t;if(a(e),e=null!=e?e:{},r instanceof ArrayBuffer||ArrayBuffer.isView(r))t=new n.Module(r);else{if(!(r instanceof WebAssembly.Module))throw new TypeError("Invalid wasm source");t=r}return{instance:new n.Instance(t,e),module:t}}(r,e)}catch(r){return t(r)}return t(null,o)}function c(r,e,t){if("object"!=typeof r||null===r)throw new TypeError("Invalid napiModule");return i(u,r,e,t)}function l(r,e,t){if("object"!=typeof r||null===r)throw new TypeError("Invalid napiModule");return i(f,r,e,t)}function d(r,e){return i(u,void 0,r,e)}function p(r,e){return i(f,void 0,r,e)}class v extends t{constructor(r){if("function"!=typeof r.onLoad)throw new TypeError("options.onLoad is not a function");const e=r.onError;super({...r,onError:(r,t)=>{var n;const a=null===(n=this.instance)||void 0===n?void 0:n.exports.emnapi_thread_crashed;if("function"==typeof a&&a(),"function"!=typeof e)throw r;e(r,t)}}),this.napiModule=void 0}instantiate(r){const e=this.onLoad(r);return"function"==typeof e.then?e.then(r=>(this.napiModule=r.napiModule,r)):(this.napiModule=e.napiModule,e)}handle(r){var e;if(super.handle(r),null===(e=null==r?void 0:r.data)||void 0===e?void 0:e.__emnapi__){const e=r.data.__emnapi__.type,t=r.data.__emnapi__.payload;try{"async-worker-init"===e?this.handleAfterLoad(r,()=>{this.napiModule.initWorker(t.arg)}):"async-work-execute"===e&&this.handleAfterLoad(r,()=>{this.napiModule.executeAsyncWork(t.work)})}catch(r){this.onError(r,e)}}}}const g="1.8.1";export{v as MessageHandler,s as createNapiModule,d as instantiateNapiModule,p as instantiateNapiModuleSync,c as loadNapiModule,l as loadNapiModuleSync,g as version}; diff --git a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.mjs b/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.mjs deleted file mode 100644 index e9565fe..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/dist/emnapi-core.mjs +++ /dev/null @@ -1,6839 +0,0 @@ -import { ThreadManager, WASIThreads, ThreadMessageHandler } from '@emnapi/wasi-threads'; -export * from '@emnapi/wasi-threads'; - -const _WebAssembly = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; -function validateImports(imports) { - if (imports && typeof imports !== 'object') { - throw new TypeError('imports must be an object or undefined'); - } - return true; -} -function load(wasmInput, imports) { - if (!wasmInput) - throw new TypeError('Invalid wasm source'); - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - try { - const then = typeof wasmInput === 'object' && wasmInput !== null && 'then' in wasmInput ? wasmInput.then : undefined; - if (typeof then === 'function') { - return then.call(wasmInput, (input) => load(input, imports)); - } - } - catch (_) { } - if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { - return _WebAssembly.instantiate(wasmInput, imports); - } - if (wasmInput instanceof _WebAssembly.Module) { - return _WebAssembly.instantiate(wasmInput, imports).then((instance) => { - return { instance, module: wasmInput }; - }); - } - if (typeof Response !== 'undefined' && wasmInput instanceof Response) { - return wasmInput.arrayBuffer().then(buffer => { - return _WebAssembly.instantiate(buffer, imports); - }); - } - const inputIsString = typeof wasmInput === 'string'; - if (inputIsString || (typeof URL !== 'undefined' && wasmInput instanceof URL)) { - if (inputIsString && typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { - return _WebAssembly.instantiate(wasmInput, imports); - } - if (typeof fetch !== 'function') { - throw new TypeError('wasm source can not be a string or URL in this environment'); - } - if (typeof _WebAssembly.instantiateStreaming === 'function') { - try { - return _WebAssembly.instantiateStreaming(fetch(wasmInput), imports).catch(() => { - return load(fetch(wasmInput), imports); - }); - } - catch (_) { - return load(fetch(wasmInput), imports); - } - } - else { - return load(fetch(wasmInput), imports); - } - } - throw new TypeError('Invalid wasm source'); -} -function loadSync(wasmInput, imports) { - if (!wasmInput) - throw new TypeError('Invalid wasm source'); - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - let module; - if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { - module = new _WebAssembly.Module(wasmInput); - } - else if (wasmInput instanceof WebAssembly.Module) { - module = wasmInput; - } - else { - throw new TypeError('Invalid wasm source'); - } - const instance = new _WebAssembly.Instance(module, imports); - const source = { instance, module }; - return source; -} - -function createNapiModule(options) { - var napiModule = (function () { - var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && typeof process.versions === 'object' && process.versions !== null && typeof process.versions.node === 'string'; - var ENVIRONMENT_IS_PTHREAD = Boolean(options.childThread); - var waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); - var wasmInstance; - var wasmMemory; - var wasmTable; - var _malloc; - var _free; - function abort(msg) { - if (typeof _WebAssembly.RuntimeError === 'function') { - throw new _WebAssembly.RuntimeError(msg); - } - throw Error(msg); - } - var napiModule = { - imports: { - env: {}, - napi: {}, - emnapi: {} - }, - exports: {}, - emnapi: {}, - loaded: false, - filename: '', - childThread: ENVIRONMENT_IS_PTHREAD, - initWorker: undefined, - executeAsyncWork: undefined, - waitThreadStart: waitThreadStart, - PThread: undefined, - init: function (options) { - if (napiModule.loaded) - return napiModule.exports; - if (!options) - throw new TypeError('Invalid napi init options'); - var instance = options.instance; - if (!(instance === null || instance === void 0 ? void 0 : instance.exports)) - throw new TypeError('Invalid wasm instance'); - wasmInstance = instance; - var exports$1 = instance.exports; - var module = options.module; - var memory = options.memory || exports$1.memory; - var table = options.table || exports$1.__indirect_function_table; - if (!(module instanceof _WebAssembly.Module)) - throw new TypeError('Invalid wasm module'); - if (!(memory instanceof _WebAssembly.Memory)) - throw new TypeError('Invalid wasm memory'); - if (!(table instanceof _WebAssembly.Table)) - throw new TypeError('Invalid wasm table'); - wasmMemory = memory; - wasmTable = table; - if (typeof exports$1.malloc !== 'function') - throw new TypeError('malloc is not exported'); - if (typeof exports$1.free !== 'function') - throw new TypeError('free is not exported'); - _malloc = exports$1.malloc; - _free = exports$1.free; - if (!napiModule.childThread) { - var moduleApiVersion = 8; - var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1; - if (typeof node_api_module_get_api_version_v1 === 'function') { - moduleApiVersion = node_api_module_get_api_version_v1(); - } - var envObject = napiModule.envObject || (napiModule.envObject = emnapiCtx.createEnv(napiModule.filename, moduleApiVersion, function (cb) { return (wasmTable.get(cb)); }, function (cb) { return (wasmTable.get(cb)); }, abort, emnapiNodeBinding)); - var scope_1 = emnapiCtx.openScope(envObject); - try { - envObject.callIntoModule(function (_envObject) { - var exports$1 = napiModule.exports; - var exportsHandle = scope_1.add(exports$1); - var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1; - var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id); - napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value; - }); - } - catch (e) { - if (e !== 'unwind') { - throw e; - } - } - finally { - emnapiCtx.closeScope(envObject, scope_1); - } - napiModule.loaded = true; - delete napiModule.envObject; - return napiModule.exports; - } - } - }; - var emnapiCtx; - var emnapiNodeBinding; - var onCreateWorker = undefined; - var err; - if (!ENVIRONMENT_IS_PTHREAD) { - var context = options.context; - if (typeof context !== 'object' || context === null) { - throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`"); - } - emnapiCtx = context; - } - else { - emnapiCtx = options === null || options === void 0 ? void 0 : options.context; - var postMsg = typeof options.postMessage === 'function' - ? options.postMessage - : typeof postMessage === 'function' - ? postMessage - : undefined; - if (typeof postMsg !== 'function') { - throw new TypeError('No postMessage found'); - } - napiModule.postMessage = postMsg; - } - if (typeof options.filename === 'string') { - napiModule.filename = options.filename; - } - if (typeof options.onCreateWorker === 'function') { - onCreateWorker = options.onCreateWorker; - } - if (typeof options.print === 'function') { - options.print; - } - else { - console.log.bind(console); - } - if (typeof options.printErr === 'function') { - err = options.printErr; - } - else { - err = console.warn.bind(console); - } - if ('nodeBinding' in options) { - var nodeBinding = options.nodeBinding; - if (typeof nodeBinding !== 'object' || nodeBinding === null) { - throw new TypeError('Invalid `options.nodeBinding`. Use @emnapi/node-binding package'); - } - emnapiNodeBinding = nodeBinding; - } - var emnapiAsyncWorkPoolSize = 0; - if ('asyncWorkPoolSize' in options) { - if (typeof options.asyncWorkPoolSize !== 'number') { - throw new TypeError('options.asyncWorkPoolSize must be a integer'); - } - emnapiAsyncWorkPoolSize = options.asyncWorkPoolSize >> 0; - if (emnapiAsyncWorkPoolSize > 1024) { - emnapiAsyncWorkPoolSize = 1024; - } - else if (emnapiAsyncWorkPoolSize < -1024) { - emnapiAsyncWorkPoolSize = -1024; - } - } - var singleThreadAsyncWork = ENVIRONMENT_IS_PTHREAD ? false : (emnapiAsyncWorkPoolSize <= 0); - function _emnapi_async_work_pool_size() { - return Math.abs(emnapiAsyncWorkPoolSize); - } - napiModule.imports.env._emnapi_async_work_pool_size = _emnapi_async_work_pool_size; - function emnapiAddSendListener(worker) { - if (!worker) - return false; - if (worker._emnapiSendListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__ && __emnapi__.type === 'async-send') { - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_1 = napiModule.postMessage; - postMessage_1({ __emnapi__: __emnapi__ }); - } - else { - var callback = __emnapi__.payload.callback; - (wasmTable.get(callback))(__emnapi__.payload.data); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiSendListener; - }; - worker._emnapiSendListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; - } - napiModule.emnapi.addSendListener = emnapiAddSendListener; - var PThread = new ThreadManager(ENVIRONMENT_IS_PTHREAD - ? { - printErr: err, - childThread: true - } - : { - printErr: err, - beforeLoad: function (worker) { - emnapiAddSendListener(worker); - }, - reuseWorker: options.reuseWorker, - onCreateWorker: onCreateWorker - }); - napiModule.PThread = PThread; - function napi_set_last_error(env, error_code, engine_error_code, engine_reserved) { - var envObject = emnapiCtx.envStore.get(env); - return envObject.setLastError(error_code, engine_error_code, engine_reserved); - } - function napi_clear_last_error(env) { - var envObject = emnapiCtx.envStore.get(env); - return envObject.clearLastError(); - } - function _emnapi_get_node_version(major, minor, patch) { - var versions = (typeof process === 'object' && process !== null && - typeof process.versions === 'object' && process.versions !== null && - typeof process.versions.node === 'string') - ? process.versions.node.split('.').map(function (n) { return Number(n); }) - : [0, 0, 0]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(major, versions[0], true); - HEAP_DATA_VIEW.setUint32(minor, versions[1], true); - HEAP_DATA_VIEW.setUint32(patch, versions[2], true); - } - function _emnapi_runtime_keepalive_push() { - } - function _emnapi_runtime_keepalive_pop() { - } - function _emnapi_set_immediate(callback, data) { - emnapiCtx.feature.setImmediate(function () { - (wasmTable.get(callback))(data); - }); - } - function _emnapi_next_tick(callback, data) { - Promise.resolve().then(function () { - (wasmTable.get(callback))(data); - }); - } - function _emnapi_callback_into_module(forceUncaught, env, callback, data, close_scope_if_throw) { - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - try { - envObject.callbackIntoModule(Boolean(forceUncaught), function () { - (wasmTable.get(callback))(env, data); - }); - } - catch (err) { - emnapiCtx.closeScope(envObject, scope); - if (close_scope_if_throw) { - emnapiCtx.closeScope(envObject); - } - throw err; - } - emnapiCtx.closeScope(envObject, scope); - } - function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) { - var envObject = emnapiCtx.envStore.get(env); - envObject.callFinalizerInternal(forceUncaught, callback, data, hint); - } - function _emnapi_ctx_increase_waiting_request_counter() { - emnapiCtx.increaseWaitingRequestCounter(); - } - function _emnapi_ctx_decrease_waiting_request_counter() { - emnapiCtx.decreaseWaitingRequestCounter(); - } - function _emnapi_is_main_runtime_thread() { - return ENVIRONMENT_IS_PTHREAD ? 0 : 1; - } - function _emnapi_is_main_browser_thread() { - return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0; - } - function _emnapi_unwind() { - throw 'unwind'; - } - function _emnapi_get_now() { - return performance.timeOrigin + performance.now(); - } - function $emnapiSetValueI64(result, numberValue) { - var tempDouble; - var tempI64 = [ - numberValue >>> 0, - (tempDouble = numberValue, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) - ]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, tempI64[0], true); - HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true); - } - function _emnapi_open_handle_scope() { - return emnapiCtx.openScope().id; - } - function _emnapi_close_handle_scope(_scope) { - return emnapiCtx.closeScope(); - } - var utilMod = Object.freeze({ - __proto__: null, - $emnapiSetValueI64: $emnapiSetValueI64, - _emnapi_call_finalizer: _emnapi_call_finalizer, - _emnapi_callback_into_module: _emnapi_callback_into_module, - _emnapi_close_handle_scope: _emnapi_close_handle_scope, - _emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter, - _emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter, - _emnapi_get_node_version: _emnapi_get_node_version, - _emnapi_get_now: _emnapi_get_now, - _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread, - _emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread, - _emnapi_next_tick: _emnapi_next_tick, - _emnapi_open_handle_scope: _emnapi_open_handle_scope, - _emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop, - _emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push, - _emnapi_set_immediate: _emnapi_set_immediate, - _emnapi_unwind: _emnapi_unwind, - napi_clear_last_error: napi_clear_last_error, - napi_set_last_error: napi_set_last_error - }); - function emnapiGetWorkerByPthreadPtr(pthreadPtr) { - var view = new DataView(wasmMemory.buffer); - var tidOffset = 20; - var tid = view.getInt32(pthreadPtr + tidOffset, true); - var worker = PThread.pthreads[tid]; - return worker; - } - function _emnapi_worker_unref(pthreadPtr) { - if (ENVIRONMENT_IS_PTHREAD) - return; - var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); - if (worker && typeof worker.unref === 'function') { - worker.unref(); - } - } - function _emnapi_async_send_js(type, callback, data) { - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_1 = napiModule.postMessage; - postMessage_1({ - __emnapi__: { - type: 'async-send', - payload: { - callback: callback, - data: data - } - } - }); - } - else { - switch (type) { - case 0: - _emnapi_set_immediate(callback, data); - break; - case 1: - _emnapi_next_tick(callback, data); - break; - } - } - } - var uvThreadpoolReadyResolve; - var uvThreadpoolReady = new Promise(function (resolve) { - uvThreadpoolReadyResolve = function () { - uvThreadpoolReady.ready = true; - resolve(); - }; - }); - uvThreadpoolReady.ready = false; - function _emnapi_after_uvthreadpool_ready(callback, q, type) { - if (uvThreadpoolReady.ready) { - (wasmTable.get(callback))(q, type); - } - else { - uvThreadpoolReady.then(function () { - (wasmTable.get(callback))(q, type); - }); - } - } - function _emnapi_tell_js_uvthreadpool(threads, size) { - var p = []; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var _loop_1 = function (i) { - var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true); - var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); - p.push(new Promise(function (resolve) { - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__ && __emnapi__.type === 'async-thread-ready') { - resolve(); - if (worker && typeof worker.unref === 'function') { - worker.unref(); - } - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler); - } - } - }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler); - } - })); - }; - for (var i = 0; i < size; i++) { - _loop_1(i); - } - Promise.all(p).then(uvThreadpoolReadyResolve); - } - function _emnapi_emit_async_thread_ready() { - if (!ENVIRONMENT_IS_PTHREAD) - return; - var postMessage = napiModule.postMessage; - postMessage({ - __emnapi__: { - type: 'async-thread-ready', - payload: {} - } - }); - } - var asyncMod = Object.freeze({ - __proto__: null, - _emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready, - _emnapi_async_send_js: _emnapi_async_send_js, - _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready, - _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool, - _emnapi_worker_unref: _emnapi_worker_unref - }); - function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!adjusted_value) - return envObject.setLastError(1); - var change_in_bytes_number = Number(change_in_bytes); - if (change_in_bytes_number < 0) { - return envObject.setLastError(1); - } - var old_size = wasmMemory.buffer.byteLength; - var new_size = old_size + change_in_bytes_number; - new_size = new_size + ((65536 - new_size % 65536) % 65536); - if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) { - return envObject.setLastError(9); - } - if (emnapiCtx.feature.supportBigInt) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true); - } - else { - $emnapiSetValueI64(adjusted_value, wasmMemory.buffer.byteLength); - } - return envObject.clearLastError(); - } - var memoryMod = Object.freeze({ - __proto__: null, - napi_adjust_external_memory: napi_adjust_external_memory - }); - var emnapiAWST = { - idGen: {}, - values: [undefined], - queued: new Set(), - pending: [], - init: function () { - var idGen = { - nextId: 1, - list: [], - generate: function () { - var id; - if (idGen.list.length) { - id = idGen.list.shift(); - } - else { - id = idGen.nextId; - idGen.nextId++; - } - return id; - }, - reuse: function (id) { - idGen.list.push(id); - } - }; - emnapiAWST.idGen = idGen; - emnapiAWST.values = [undefined]; - emnapiAWST.queued = new Set(); - emnapiAWST.pending = []; - }, - create: function (env, resource, resourceName, execute, complete, data) { - var asyncId = 0; - var triggerAsyncId = 0; - if (emnapiNodeBinding) { - var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resourceName, -1); - asyncId = asyncContext.asyncId; - triggerAsyncId = asyncContext.triggerAsyncId; - } - var id = emnapiAWST.idGen.generate(); - emnapiAWST.values[id] = { - env: env, - id: id, - resource: resource, - asyncId: asyncId, - triggerAsyncId: triggerAsyncId, - status: 0, - execute: execute, - complete: complete, - data: data - }; - return id; - }, - callComplete: function (work, status) { - var complete = work.complete; - var env = work.env; - var data = work.data; - var callback = function () { - if (!complete) - return; - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - try { - envObject.callbackIntoModule(true, function () { - (wasmTable.get(complete))(env, status, data); - }); - } - finally { - emnapiCtx.closeScope(envObject, scope); - } - }; - if (emnapiNodeBinding) { - emnapiNodeBinding.node.makeCallback(work.resource, callback, [], { - asyncId: work.asyncId, - triggerAsyncId: work.triggerAsyncId - }); - } - else { - callback(); - } - }, - queue: function (id) { - var work = emnapiAWST.values[id]; - if (!work) - return; - if (work.status === 0) { - work.status = 1; - if (emnapiAWST.queued.size >= (Math.abs(emnapiAsyncWorkPoolSize) || 4)) { - emnapiAWST.pending.push(id); - return; - } - emnapiAWST.queued.add(id); - var env_1 = work.env; - var data_1 = work.data; - var execute = work.execute; - work.status = 2; - emnapiCtx.feature.setImmediate(function () { - (wasmTable.get(execute))(env_1, data_1); - emnapiAWST.queued.delete(id); - work.status = 3; - emnapiCtx.feature.setImmediate(function () { - emnapiAWST.callComplete(work, 0); - }); - if (emnapiAWST.pending.length > 0) { - var nextWorkId = emnapiAWST.pending.shift(); - emnapiAWST.values[nextWorkId].status = 0; - emnapiAWST.queue(nextWorkId); - } - }); - } - }, - cancel: function (id) { - var index = emnapiAWST.pending.indexOf(id); - if (index !== -1) { - var work_1 = emnapiAWST.values[id]; - if (work_1 && (work_1.status === 1)) { - work_1.status = 4; - emnapiAWST.pending.splice(index, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiAWST.callComplete(work_1, 11); - }); - return 0; - } - else { - return 9; - } - } - return 9; - }, - remove: function (id) { - var work = emnapiAWST.values[id]; - if (!work) - return; - if (emnapiNodeBinding) { - emnapiNodeBinding.node.emitAsyncDestroy({ - asyncId: work.asyncId, - triggerAsyncId: work.triggerAsyncId - }); - } - emnapiAWST.values[id] = undefined; - emnapiAWST.idGen.reuse(id); - } - }; - function _emnapi_node_emit_async_init(async_resource, async_resource_name, trigger_async_id, result) { - if (!emnapiNodeBinding) - return; - var resource = emnapiCtx.handleStore.get(async_resource).value; - var resource_name = emnapiCtx.handleStore.get(async_resource_name).value; - var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resource_name, trigger_async_id); - var asyncId = asyncContext.asyncId; - var triggerAsyncId = asyncContext.triggerAsyncId; - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setFloat64(result, asyncId, true); - HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true); - } - } - function _emnapi_node_emit_async_destroy(async_id, trigger_async_id) { - if (!emnapiNodeBinding) - return; - emnapiNodeBinding.node.emitAsyncDestroy({ - asyncId: async_id, - triggerAsyncId: trigger_async_id - }); - } - function _emnapi_node_make_callback(env, async_resource, cb, argv, size, async_id, trigger_async_id, result) { - var i = 0; - var v; - if (!emnapiNodeBinding) - return; - var resource = emnapiCtx.handleStore.get(async_resource).value; - var callback = emnapiCtx.handleStore.get(cb).value; - size = size >>> 0; - var arr = Array(size); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (; i < size; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - arr[i] = emnapiCtx.handleStore.get(argVal).value; - } - var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, { - asyncId: async_id, - triggerAsyncId: trigger_async_id - }); - if (result) { - var envObject = emnapiCtx.envStore.get(env); - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - } - function _emnapi_async_init_js(async_resource, async_resource_name, result) { - if (!emnapiNodeBinding) { - return 9; - } - var resource; - if (async_resource) { - resource = Object(emnapiCtx.handleStore.get(async_resource).value); - } - var name = emnapiCtx.handleStore.get(async_resource_name).value; - var ret = emnapiNodeBinding.napi.asyncInit(resource, name); - if (ret.status !== 0) - return ret.status; - var numberValue = ret.value; - if (!((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63))))) { - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - if (numberValue >= (BigInt(1) << BigInt(63))) { - numberValue = numberValue - (BigInt(1) << BigInt(64)); - } - } - var low = Number(numberValue & BigInt(0xffffffff)); - var high = Number(numberValue >> BigInt(32)); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, low, true); - HEAP_DATA_VIEW.setInt32(result + 4, high, true); - return 0; - } - function _emnapi_async_destroy_js(async_context) { - if (!emnapiNodeBinding) { - return 9; - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var low = HEAP_DATA_VIEW.getInt32(async_context, true); - var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); - var pointer = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); - var ret = emnapiNodeBinding.napi.asyncDestroy(pointer); - if (ret.status !== 0) - return ret.status; - return 0; - } - function napi_open_callback_scope(env, ignored, async_context_handle, result) { - throw new Error('napi_open_callback_scope has not been implemented yet'); - } - function napi_close_callback_scope(env, scope) { - throw new Error('napi_close_callback_scope has not been implemented yet'); - } - function napi_make_callback(env, async_context, recv, func, argc, argv, result) { - var i = 0; - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!emnapiNodeBinding) { - return envObject.setLastError(9); - } - if (!recv) - return envObject.setLastError(1); - if (argc > 0) { - if (!argv) - return envObject.setLastError(1); - } - var v8recv = Object(emnapiCtx.handleStore.get(recv).value); - var v8func = emnapiCtx.handleStore.get(func).value; - if (typeof v8func !== 'function') { - return envObject.setLastError(1); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var low = HEAP_DATA_VIEW.getInt32(async_context, true); - var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); - var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); - argc = argc >>> 0; - var arr = Array(argc); - for (; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - arr[i] = emnapiCtx.handleStore.get(argVal).value; - } - var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr); - if (ret.error) { - throw ret.error; - } - if (ret.status !== 0) - return envObject.setLastError(ret.status); - if (result) { - v = envObject.ensureHandleId(ret.value); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function _emnapi_env_check_gc_access(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - } - var nodeMod = Object.freeze({ - __proto__: null, - _emnapi_async_destroy_js: _emnapi_async_destroy_js, - _emnapi_async_init_js: _emnapi_async_init_js, - _emnapi_env_check_gc_access: _emnapi_env_check_gc_access, - _emnapi_node_emit_async_destroy: _emnapi_node_emit_async_destroy, - _emnapi_node_emit_async_init: _emnapi_node_emit_async_init, - _emnapi_node_make_callback: _emnapi_node_make_callback, - napi_close_callback_scope: napi_close_callback_scope, - napi_make_callback: napi_make_callback, - napi_open_callback_scope: napi_open_callback_scope - }); - var emnapiTSFN = { - offset: { - resource: 0, - async_id: 8, - trigger_async_id: 16, - queue_size: 24, - queue: 1 * 4 + 24, - thread_count: 2 * 4 + 24, - is_closing: 3 * 4 + 24, - dispatch_state: 3 * 4 + 28, - context: 3 * 4 + 32, - max_queue_size: 4 * 4 + 32, - ref: 5 * 4 + 32, - env: 6 * 4 + 32, - finalize_data: 7 * 4 + 32, - finalize_cb: 8 * 4 + 32, - call_js_cb: 9 * 4 + 32, - handles_closing: 10 * 4 + 32, - async_ref: 10 * 4 + 36, - mutex: 10 * 4 + 40, - cond: 10 * 4 + 44, - end: 10 * 4 + 48 - }, - init: function () { - if (typeof PThread !== 'undefined') { - PThread.unusedWorkers.forEach(emnapiTSFN.addListener); - PThread.runningWorkers.forEach(emnapiTSFN.addListener); - var __original_getNewWorker_1 = PThread.getNewWorker; - PThread.getNewWorker = function () { - var r = __original_getNewWorker_1.apply(this, arguments); - emnapiTSFN.addListener(r); - return r; - }; - } - }, - addListener: function (worker) { - if (!worker) - return false; - if (worker._emnapiTSFNListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__) { - var type = __emnapi__.type; - var payload = __emnapi__.payload; - if (type === 'tsfn-send') { - emnapiTSFN.dispatch(payload.tsfn); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiTSFNListener; - }; - worker._emnapiTSFNListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; - }, - initQueue: function (func) { - var size = 2 * 4; - var queue = _malloc(size); - if (!queue) - return false; - new Uint8Array(wasmMemory.buffer, queue, size).fill(0); - emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false); - return true; - }, - destroyQueue: function (func) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - if (queue) { - _free(queue); - } - }, - pushQueue: function (func, data) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - var head = emnapiTSFN.loadSizeTypeValue(queue, false); - var tail = emnapiTSFN.loadSizeTypeValue(queue + 4, false); - var size = 2 * 4; - var node = _malloc(size); - if (!node) - throw new Error('OOM'); - emnapiTSFN.storeSizeTypeValue(node, data, false); - emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); - if (head === 0 && tail === 0) { - emnapiTSFN.storeSizeTypeValue(queue, node, false); - emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); - } - else { - emnapiTSFN.storeSizeTypeValue(tail + 4, node, false); - emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); - } - emnapiTSFN.addQueueSize(func); - }, - shiftQueue: function (func) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - var head = emnapiTSFN.loadSizeTypeValue(queue, false); - if (head === 0) - return 0; - var node = head; - var next = emnapiTSFN.loadSizeTypeValue(head + 4, false); - emnapiTSFN.storeSizeTypeValue(queue, next, false); - if (next === 0) { - emnapiTSFN.storeSizeTypeValue(queue + 4, 0, false); - } - emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); - var value = emnapiTSFN.loadSizeTypeValue(node, false); - _free(node); - emnapiTSFN.subQueueSize(func); - return value; - }, - push: function (func, data, mode) { - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - var waitCondition = function () { - var queueSize = emnapiTSFN.getQueueSize(func); - var maxSize = emnapiTSFN.getMaxQueueSize(func); - var isClosing = emnapiTSFN.getIsClosing(func); - return queueSize >= maxSize && maxSize > 0 && !isClosing; - }; - var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; - return mutex.execute(function () { - while (waitCondition()) { - if (mode === 0) { - return 15; - } - if (isBrowserMain) { - return 21; - } - cond.wait(); - } - if (emnapiTSFN.getIsClosing(func)) { - if (emnapiTSFN.getThreadCount(func) === 0) { - return 1; - } - else { - emnapiTSFN.subThreadCount(func); - return 16; - } - } - else { - emnapiTSFN.pushQueue(func, data); - emnapiTSFN.send(func); - return 0; - } - }); - }, - getMutex: function (func) { - var index = func + emnapiTSFN.offset.mutex; - var mutex = { - lock: function () { - var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - if (isBrowserMain) { - while (true) { - var oldValue = Atomics.compareExchange(i32a, 0, 0, 1); - if (oldValue === 0) { - return; - } - } - } - else { - while (true) { - var oldValue = Atomics.compareExchange(i32a, 0, 0, 1); - if (oldValue === 0) { - return; - } - Atomics.wait(i32a, 0, 1); - } - } - }, - unlock: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - var oldValue = Atomics.compareExchange(i32a, 0, 1, 0); - if (oldValue !== 1) { - throw new Error('Tried to unlock while not holding the mutex'); - } - Atomics.notify(i32a, 0, 1); - }, - execute: function (fn) { - mutex.lock(); - try { - return fn(); - } - finally { - mutex.unlock(); - } - } - }; - return mutex; - }, - getCond: function (func) { - var index = func + emnapiTSFN.offset.cond; - var mutex = emnapiTSFN.getMutex(func); - var cond = { - wait: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - var value = Atomics.load(i32a, 0); - mutex.unlock(); - Atomics.wait(i32a, 0, value); - mutex.lock(); - }, - signal: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - Atomics.add(i32a, 0, 1); - Atomics.notify(i32a, 0, 1); - } - }; - return cond; - }, - getQueueSize: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue_size, true); - }, - addQueueSize: function (func) { - var offset = emnapiTSFN.offset.queue_size; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.add(arr, index, 1); - }, - subQueueSize: function (func) { - var offset = emnapiTSFN.offset.queue_size; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.sub(arr, index, 1); - }, - getThreadCount: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.thread_count, true); - }, - addThreadCount: function (func) { - var offset = emnapiTSFN.offset.thread_count; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.add(arr, index, 1); - }, - subThreadCount: function (func) { - var offset = emnapiTSFN.offset.thread_count; - var arr, index; - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; - Atomics.sub(arr, index, 1); - }, - getIsClosing: function (func) { - return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2); - }, - setIsClosing: function (func, value) { - Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value); - }, - getHandlesClosing: function (func) { - return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2); - }, - setHandlesClosing: function (func, value) { - Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value); - }, - getDispatchState: function (func) { - return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2); - }, - getContext: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false); - }, - getMaxQueueSize: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.max_queue_size, true); - }, - getEnv: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.env, false); - }, - getCallJSCb: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.call_js_cb, false); - }, - getRef: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.ref, false); - }, - getResource: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.resource, false); - }, - getFinalizeCb: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_cb, false); - }, - getFinalizeData: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_data, false); - }, - loadSizeTypeValue: function (offset, unsigned) { - var ret; - var arr; - if (unsigned) { - arr = new Uint32Array(wasmMemory.buffer); - ret = Atomics.load(arr, offset >> 2); - return ret; - } - else { - arr = new Int32Array(wasmMemory.buffer); - ret = Atomics.load(arr, offset >> 2); - return ret; - } - }, - storeSizeTypeValue: function (offset, value, unsigned) { - var arr; - if (unsigned) { - arr = new Uint32Array(wasmMemory.buffer); - Atomics.store(arr, offset >> 2, value); - return undefined; - } - else { - arr = new Int32Array(wasmMemory.buffer); - Atomics.store(arr, offset >> 2, value >>> 0); - return undefined; - } - }, - destroy: function (func) { - emnapiTSFN.destroyQueue(func); - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - var ref = emnapiTSFN.getRef(func); - if (ref) { - emnapiCtx.refStore.get(ref).dispose(); - } - emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func); - envObject.unref(); - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 0); - emnapiCtx.decreaseWaitingRequestCounter(); - } - var resource = emnapiTSFN.getResource(func); - emnapiCtx.refStore.get(resource).dispose(); - if (emnapiNodeBinding) { - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); - var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); - _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); - } - _free(func); - }, - emptyQueueAndDelete: function (func) { - var callJsCb = emnapiTSFN.getCallJSCb(func); - var context = emnapiTSFN.getContext(func); - var data; - while (emnapiTSFN.getQueueSize(func) > 0) { - data = emnapiTSFN.shiftQueue(func); - if (callJsCb) { - (wasmTable.get(callJsCb))(0, 0, context, data); - } - } - emnapiTSFN.destroy(func); - }, - finalize: function (func) { - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject); - var finalize = emnapiTSFN.getFinalizeCb(func); - var data = emnapiTSFN.getFinalizeData(func); - var context = emnapiTSFN.getContext(func); - var f = function () { - envObject.callFinalizerInternal(0, finalize, data, context); - }; - try { - if (finalize) { - if (emnapiNodeBinding) { - var resource = emnapiTSFN.getResource(func); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); - var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); - emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { - asyncId: asyncId, - triggerAsyncId: triggerAsyncId - }); - } - else { - f(); - } - } - emnapiTSFN.emptyQueueAndDelete(func); - } - finally { - emnapiCtx.closeScope(envObject); - } - }, - cleanup: function (func) { - emnapiTSFN.closeHandlesAndMaybeDelete(func, 1); - }, - closeHandlesAndMaybeDelete: function (func, set_closing) { - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject); - try { - if (set_closing) { - emnapiTSFN.getMutex(func).execute(function () { - emnapiTSFN.setIsClosing(func, 1); - if (emnapiTSFN.getMaxQueueSize(func) > 0) { - emnapiTSFN.getCond(func).signal(); - } - }); - } - if (emnapiTSFN.getHandlesClosing(func)) { - return; - } - emnapiTSFN.setHandlesClosing(func, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiTSFN.finalize(func); - }); - } - finally { - emnapiCtx.closeScope(envObject); - } - }, - dispatchOne: function (func) { - var data = 0; - var popped_value = false; - var has_more = false; - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - mutex.execute(function () { - if (emnapiTSFN.getIsClosing(func)) { - emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); - } - else { - var size = emnapiTSFN.getQueueSize(func); - if (size > 0) { - data = emnapiTSFN.shiftQueue(func); - popped_value = true; - var maxQueueSize = emnapiTSFN.getMaxQueueSize(func); - if (size === maxQueueSize && maxQueueSize > 0) { - cond.signal(); - } - size--; - } - if (size === 0) { - if (emnapiTSFN.getThreadCount(func) === 0) { - emnapiTSFN.setIsClosing(func, 1); - if (emnapiTSFN.getMaxQueueSize(func) > 0) { - cond.signal(); - } - emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); - } - } - else { - has_more = true; - } - } - }); - if (popped_value) { - var env = emnapiTSFN.getEnv(func); - var envObject_1 = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject_1); - var f = function () { - envObject_1.callbackIntoModule(false, function () { - var callJsCb = emnapiTSFN.getCallJSCb(func); - var ref = emnapiTSFN.getRef(func); - var js_callback = ref ? emnapiCtx.refStore.get(ref).get() : 0; - if (callJsCb) { - var context = emnapiTSFN.getContext(func); - (wasmTable.get(callJsCb))(env, js_callback, context, data); - } - else { - var jsCallback = js_callback ? emnapiCtx.handleStore.get(js_callback).value : null; - if (typeof jsCallback === 'function') { - jsCallback(); - } - } - }); - }; - try { - if (emnapiNodeBinding) { - var resource = emnapiTSFN.getResource(func); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { - asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true), - triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true) - }); - } - else { - f(); - } - } - finally { - emnapiCtx.closeScope(envObject_1); - } - } - return has_more; - }, - dispatch: function (func) { - var has_more = true; - var iterations_left = 1000; - var ui32a = new Uint32Array(wasmMemory.buffer); - var index = (func + emnapiTSFN.offset.dispatch_state) >> 2; - while (has_more && --iterations_left !== 0) { - Atomics.store(ui32a, index, 1); - has_more = emnapiTSFN.dispatchOne(func); - if (Atomics.exchange(ui32a, index, 0) !== 1) { - has_more = true; - } - } - if (has_more) { - emnapiTSFN.send(func); - } - }, - send: function (func) { - var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1); - if ((current_state & 1) === 1) { - return; - } - if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) { - postMessage({ - __emnapi__: { - type: 'tsfn-send', - payload: { - tsfn: func - } - } - }); - } - else { - emnapiCtx.feature.setImmediate(function () { - emnapiTSFN.dispatch(func); - }); - } - } - }; - function napi_create_threadsafe_function(env, func, async_resource, async_resource_name, max_queue_size, initial_thread_count, thread_finalize_data, thread_finalize_cb, context, call_js_cb, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!async_resource_name) - return envObject.setLastError(1); - max_queue_size = max_queue_size >>> 0; - initial_thread_count = initial_thread_count >>> 0; - if (initial_thread_count === 0) { - return envObject.setLastError(1); - } - if (!result) - return envObject.setLastError(1); - var ref = 0; - if (!func) { - if (!call_js_cb) - return envObject.setLastError(1); - } - else { - var funcValue = emnapiCtx.handleStore.get(func).value; - if (typeof funcValue !== 'function') { - return envObject.setLastError(1); - } - ref = emnapiCtx.createReference(envObject, func, 1, 1).id; - } - var asyncResourceObject; - if (async_resource) { - asyncResourceObject = emnapiCtx.handleStore.get(async_resource).value; - if (asyncResourceObject == null) { - return envObject.setLastError(2); - } - asyncResourceObject = Object(asyncResourceObject); - } - else { - asyncResourceObject = {}; - } - var resource = envObject.ensureHandleId(asyncResourceObject); - var asyncResourceName = emnapiCtx.handleStore.get(async_resource_name).value; - if (typeof asyncResourceName === 'symbol') { - return envObject.setLastError(3); - } - asyncResourceName = String(asyncResourceName); - var resource_name = envObject.ensureHandleId(asyncResourceName); - var sizeofTSFN = emnapiTSFN.offset.end; - var tsfn = _malloc(sizeofTSFN); - if (!tsfn) - return envObject.setLastError(9); - new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0); - var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1); - var resource_ = resourceRef.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(tsfn, resource_, true); - if (!emnapiTSFN.initQueue(tsfn)) { - _free(tsfn); - resourceRef.dispose(); - return envObject.setLastError(9); - } - _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true); - HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true); - emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn); - envObject.ref(); - emnapiCtx.increaseWaitingRequestCounter(); - HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true); - HEAP_DATA_VIEW.setUint32(result, tsfn, true); - return envObject.clearLastError(); - } - function napi_get_threadsafe_function_context(func, result) { - if (!func || !result) { - abort(); - return 1; - } - var context = emnapiTSFN.getContext(func); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, context, true); - return 0; - } - function napi_call_threadsafe_function(func, data, mode) { - if (!func) { - abort(); - return 1; - } - return emnapiTSFN.push(func, data, mode); - } - function napi_acquire_threadsafe_function(func) { - if (!func) { - abort(); - return 1; - } - var mutex = emnapiTSFN.getMutex(func); - return mutex.execute(function () { - if (emnapiTSFN.getIsClosing(func)) { - return 16; - } - emnapiTSFN.addThreadCount(func); - return 0; - }); - } - function napi_release_threadsafe_function(func, mode) { - if (!func) { - abort(); - return 1; - } - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - return mutex.execute(function () { - if (emnapiTSFN.getThreadCount(func) === 0) { - return 1; - } - emnapiTSFN.subThreadCount(func); - if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) { - var isClosing = emnapiTSFN.getIsClosing(func); - if (!isClosing) { - var isClosingValue = (mode === 1) ? 1 : 0; - emnapiTSFN.setIsClosing(func, isClosingValue); - if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) { - cond.signal(); - } - emnapiTSFN.send(func); - } - } - return 0; - }); - } - function napi_unref_threadsafe_function(env, func) { - if (!func) { - abort(); - return 1; - } - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 0); - emnapiCtx.decreaseWaitingRequestCounter(); - } - return 0; - } - function napi_ref_threadsafe_function(env, func) { - if (!func) { - abort(); - return 1; - } - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (!Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 1); - emnapiCtx.increaseWaitingRequestCounter(); - } - return 0; - } - var emnapiAWMT = { - unusedWorkers: [], - runningWorkers: [], - workQueue: [], - workerReady: null, - offset: { - resource: 0, - async_id: 8, - trigger_async_id: 16, - env: 24, - data: 1 * 4 + 24, - execute: 2 * 4 + 24, - complete: 3 * 4 + 24, - end: 4 * 4 + 24 - }, - init: function () { - emnapiAWMT.unusedWorkers = []; - emnapiAWMT.runningWorkers = []; - emnapiAWMT.workQueue = []; - emnapiAWMT.workerReady = null; - }, - addListener: function (worker) { - if (!worker) - return false; - if (worker._emnapiAWMTListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__) { - var type = __emnapi__.type; - var payload = __emnapi__.payload; - if (type === 'async-work-complete') { - emnapiCtx.decreaseWaitingRequestCounter(); - emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1); - emnapiAWMT.unusedWorkers.push(worker); - emnapiAWMT.checkIdleWorker(); - emnapiAWMT.callComplete(payload.work, 0); - } - else if (type === 'async-work-queue') { - emnapiAWMT.scheduleWork(payload.work); - } - else if (type === 'async-work-cancel') { - emnapiAWMT.cancelWork(payload.work); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiAWMTListener; - }; - worker._emnapiAWMTListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; - }, - initWorkers: function (n) { - if (ENVIRONMENT_IS_PTHREAD) { - return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve()); - } - if (emnapiAWMT.workerReady) - return emnapiAWMT.workerReady; - if (typeof onCreateWorker !== 'function') { - throw new TypeError('`options.onCreateWorker` is not a function'); - } - var promises = []; - var args = []; - if (!('emnapi_async_worker_create' in wasmInstance.exports)) { - throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags'); - } - for (var i = 0; i < n; ++i) { - args.push(wasmInstance.exports.emnapi_async_worker_create()); - } - try { - var _loop_1 = function (i) { - var worker = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' }); - var p = PThread.loadWasmModuleToWorker(worker); - emnapiAWMT.addListener(worker); - promises.push(p.then(function () { - if (typeof worker.unref === 'function') { - worker.unref(); - } - })); - emnapiAWMT.unusedWorkers.push(worker); - var arg = args[i]; - worker.threadBlockBase = arg; - worker.postMessage({ - __emnapi__: { - type: 'async-worker-init', - payload: { arg: arg } - } - }); - }; - for (var i = 0; i < n; ++i) { - _loop_1(i); - } - } - catch (err) { - for (var i = 0; i < n; ++i) { - var arg = args[i]; - _free(arg); - } - throw err; - } - emnapiAWMT.workerReady = Promise.all(promises); - return emnapiAWMT.workerReady; - }, - checkIdleWorker: function () { - if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) { - var worker = emnapiAWMT.unusedWorkers.shift(); - var work = emnapiAWMT.workQueue.shift(); - emnapiAWMT.runningWorkers.push(worker); - worker.postMessage({ - __emnapi__: { - type: 'async-work-execute', - payload: { work: work } - } - }); - } - }, - getResource: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.resource, false); - }, - getExecute: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.execute, false); - }, - getComplete: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.complete, false); - }, - getEnv: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.env, false); - }, - getData: function (work) { - return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.data, false); - }, - scheduleWork: function (work) { - var _a; - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_1 = napiModule.postMessage; - postMessage_1({ - __emnapi__: { - type: 'async-work-queue', - payload: { work: work } - } - }); - return; - } - emnapiCtx.increaseWaitingRequestCounter(); - emnapiAWMT.workQueue.push(work); - if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) { - emnapiAWMT.checkIdleWorker(); - } - else { - var fail = function (err) { - emnapiCtx.decreaseWaitingRequestCounter(); - throw err; - }; - try { - emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () { - emnapiAWMT.workerReady.ready = true; - emnapiAWMT.checkIdleWorker(); - }, fail); - } - catch (err) { - fail(err); - } - } - }, - cancelWork: function (work) { - if (ENVIRONMENT_IS_PTHREAD) { - var postMessage_2 = napiModule.postMessage; - postMessage_2({ - __emnapi__: { - type: 'async-work-cancel', - payload: { work: work } - } - }); - return 0; - } - var index = emnapiAWMT.workQueue.indexOf(work); - if (index !== -1) { - emnapiAWMT.workQueue.splice(index, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiCtx.decreaseWaitingRequestCounter(); - emnapiAWMT.checkIdleWorker(); - emnapiAWMT.callComplete(work, 11); - }); - return 0; - } - return 9; - }, - callComplete: function (work, status) { - var complete = emnapiAWMT.getComplete(work); - var env = emnapiAWMT.getEnv(work); - var data = emnapiAWMT.getData(work); - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - var callback = function () { - if (!complete) - return; - envObject.callbackIntoModule(true, function () { - (wasmTable.get(complete))(env, status, data); - }); - }; - try { - if (emnapiNodeBinding) { - var resource = emnapiAWMT.getResource(work); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); - var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); - emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], { - asyncId: asyncId, - triggerAsyncId: triggerAsyncId - }); - } - else { - callback(); - } - } - finally { - emnapiCtx.closeScope(envObject, scope); - } - } - }; - var napi_create_async_work = singleThreadAsyncWork - ? function (env, resource, resource_name, execute, complete, data, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!execute) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var resourceObject; - if (resource) { - resourceObject = Object(emnapiCtx.handleStore.get(resource).value); - } - else { - resourceObject = {}; - } - if (!resource_name) - return envObject.setLastError(1); - var resourceName = String(emnapiCtx.handleStore.get(resource_name).value); - var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, id, true); - return envObject.clearLastError(); - } - : function (env, resource, resource_name, execute, complete, data, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!execute) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var resourceObject; - if (resource) { - resourceObject = Object(emnapiCtx.handleStore.get(resource).value); - } - else { - resourceObject = {}; - } - if (!resource_name) - return envObject.setLastError(1); - var sizeofAW = emnapiAWMT.offset.end; - var aw = _malloc(sizeofAW); - if (!aw) - return envObject.setLastError(9); - new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0); - var s = envObject.ensureHandleId(resourceObject); - var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1); - var resource_ = resourceRef.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(aw, resource_, true); - _emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true); - HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true); - HEAP_DATA_VIEW.setUint32(result, aw, true); - return envObject.clearLastError(); - }; - var napi_delete_async_work = singleThreadAsyncWork - ? function (env, work) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!work) - return envObject.setLastError(1); - emnapiAWST.remove(work); - return envObject.clearLastError(); - } - : function (env, work) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!work) - return envObject.setLastError(1); - var resource = emnapiAWMT.getResource(work); - emnapiCtx.refStore.get(resource).dispose(); - if (emnapiNodeBinding) { - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); - var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); - _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); - } - _free(work); - return envObject.clearLastError(); - }; - var napi_queue_async_work = singleThreadAsyncWork - ? function (env, work) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1); - emnapiAWST.queue(work); - return envObject.clearLastError(); - } - : function (env, work) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1); - emnapiAWMT.scheduleWork(work); - return envObject.clearLastError(); - }; - var napi_cancel_async_work = singleThreadAsyncWork - ? function (env, work) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1); - var status = emnapiAWST.cancel(work); - if (status === 0) - return envObject.clearLastError(); - return envObject.setLastError(status); - } - : function (env, work) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1); - var status = emnapiAWMT.cancelWork(work); - if (status === 0) - return envObject.clearLastError(); - return envObject.setLastError(status); - }; - function initWorker(startArg) { - if (napiModule.childThread) { - if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') { - throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags'); - } - wasmInstance.exports.emnapi_async_worker_init(startArg); - } - else { - throw new Error('startThread is only available in child threads'); - } - } - function executeAsyncWork(work) { - if (!ENVIRONMENT_IS_PTHREAD) - return; - var execute = emnapiAWMT.getExecute(work); - var env = emnapiAWMT.getEnv(work); - var data = emnapiAWMT.getData(work); - (wasmTable.get(execute))(env, data); - var postMessage = napiModule.postMessage; - postMessage({ - __emnapi__: { - type: 'async-work-complete', - payload: { work: work } - } - }); - } - napiModule.initWorker = initWorker; - napiModule.executeAsyncWork = executeAsyncWork; - var asyncWorkMod = Object.freeze({ - __proto__: null, - napi_cancel_async_work: napi_cancel_async_work, - napi_create_async_work: napi_create_async_work, - napi_delete_async_work: napi_delete_async_work, - napi_queue_async_work: napi_queue_async_work - }); - var emnapiExternalMemory = { - registry: typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined, - table: new WeakMap(), - wasmMemoryViewTable: new WeakMap(), - init: function () { - emnapiExternalMemory.registry = typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined; - emnapiExternalMemory.table = new WeakMap(); - emnapiExternalMemory.wasmMemoryViewTable = new WeakMap(); - }, - isSharedArrayBuffer: function (value) { - return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); - }, - isDetachedArrayBuffer: function (arrayBuffer) { - if (arrayBuffer.byteLength === 0) { - try { - new Uint8Array(arrayBuffer); - } - catch (_) { - return true; - } - } - return false; - }, - getArrayBufferPointer: function (arrayBuffer, shouldCopy) { - var _a; - var info = { - address: 0, - ownership: 0, - runtimeAllocated: 0 - }; - if (arrayBuffer === wasmMemory.buffer) { - return info; - } - var isDetached = emnapiExternalMemory.isDetachedArrayBuffer(arrayBuffer); - if (emnapiExternalMemory.table.has(arrayBuffer)) { - var cachedInfo = emnapiExternalMemory.table.get(arrayBuffer); - if (isDetached) { - cachedInfo.address = 0; - return cachedInfo; - } - if (shouldCopy && cachedInfo.ownership === 0 && cachedInfo.runtimeAllocated === 1) { - new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), cachedInfo.address); - } - return cachedInfo; - } - if (isDetached || (arrayBuffer.byteLength === 0)) { - return info; - } - if (!shouldCopy) { - return info; - } - var pointer = _malloc(arrayBuffer.byteLength); - if (!pointer) - throw new Error('Out of memory'); - new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer); - info.address = pointer; - info.ownership = emnapiExternalMemory.registry ? 0 : 1; - info.runtimeAllocated = 1; - emnapiExternalMemory.table.set(arrayBuffer, info); - (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(arrayBuffer, pointer); - return info; - }, - getOrUpdateMemoryView: function (view) { - if (view.buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - emnapiExternalMemory.wasmMemoryViewTable.set(view, { - Ctor: view.constructor, - address: view.byteOffset, - length: view instanceof DataView ? view.byteLength : view.length, - ownership: 1, - runtimeAllocated: 0 - }); - } - return view; - } - var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || - ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer)); - if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - var info = emnapiExternalMemory.wasmMemoryViewTable.get(view); - var Ctor = info.Ctor; - var newView = void 0; - var Buffer_1 = emnapiCtx.feature.Buffer; - if (typeof Buffer_1 === 'function' && Ctor === Buffer_1) { - newView = Buffer_1.from(wasmMemory.buffer, info.address, info.length); - } - else { - newView = new Ctor(wasmMemory.buffer, info.address, info.length); - } - emnapiExternalMemory.wasmMemoryViewTable.set(newView, info); - return newView; - } - return view; - }, - getViewPointer: function (view, shouldCopy) { - view = emnapiExternalMemory.getOrUpdateMemoryView(view); - if (view.buffer === wasmMemory.buffer) { - if (emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - var _a = emnapiExternalMemory.wasmMemoryViewTable.get(view), address_1 = _a.address, ownership_1 = _a.ownership, runtimeAllocated_1 = _a.runtimeAllocated; - return { address: address_1, ownership: ownership_1, runtimeAllocated: runtimeAllocated_1, view: view }; - } - return { address: view.byteOffset, ownership: 1, runtimeAllocated: 0, view: view }; - } - var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated; - return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view }; - } - }; - var emnapiString = { - utf8Decoder: undefined, - utf16Decoder: undefined, - init: function () { - var fallbackDecoder = { - decode: function (bytes) { - var inputIndex = 0; - var pendingSize = Math.min(0x1000, bytes.length + 1); - var pending = new Uint16Array(pendingSize); - var chunks = []; - var pendingIndex = 0; - for (;;) { - var more = inputIndex < bytes.length; - if (!more || (pendingIndex >= pendingSize - 1)) { - var subarray = pending.subarray(0, pendingIndex); - var arraylike = subarray; - chunks.push(String.fromCharCode.apply(null, arraylike)); - if (!more) { - return chunks.join(''); - } - bytes = bytes.subarray(inputIndex); - inputIndex = 0; - pendingIndex = 0; - } - var byte1 = bytes[inputIndex++]; - if ((byte1 & 0x80) === 0) { - pending[pendingIndex++] = byte1; - } - else if ((byte1 & 0xe0) === 0xc0) { - var byte2 = bytes[inputIndex++] & 0x3f; - pending[pendingIndex++] = ((byte1 & 0x1f) << 6) | byte2; - } - else if ((byte1 & 0xf0) === 0xe0) { - var byte2 = bytes[inputIndex++] & 0x3f; - var byte3 = bytes[inputIndex++] & 0x3f; - pending[pendingIndex++] = ((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3; - } - else if ((byte1 & 0xf8) === 0xf0) { - var byte2 = bytes[inputIndex++] & 0x3f; - var byte3 = bytes[inputIndex++] & 0x3f; - var byte4 = bytes[inputIndex++] & 0x3f; - var codepoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4; - if (codepoint > 0xffff) { - codepoint -= 0x10000; - pending[pendingIndex++] = (codepoint >>> 10) & 0x3ff | 0xd800; - codepoint = 0xdc00 | codepoint & 0x3ff; - } - pending[pendingIndex++] = codepoint; - } - else ; - } - } - }; - var utf8Decoder; - utf8Decoder = typeof TextDecoder === 'function' ? new TextDecoder() : fallbackDecoder; - emnapiString.utf8Decoder = utf8Decoder; - var fallbackDecoder2 = { - decode: function (input) { - var bytes = new Uint16Array(input.buffer, input.byteOffset, input.byteLength / 2); - if (bytes.length <= 0x1000) { - return String.fromCharCode.apply(null, bytes); - } - var chunks = []; - var i = 0; - var len = 0; - for (; i < bytes.length; i += len) { - len = Math.min(0x1000, bytes.length - i); - chunks.push(String.fromCharCode.apply(null, bytes.subarray(i, i + len))); - } - return chunks.join(''); - } - }; - var utf16Decoder; - utf16Decoder = typeof TextDecoder === 'function' ? new TextDecoder('utf-16le') : fallbackDecoder2; - emnapiString.utf16Decoder = utf16Decoder; - }, - lengthBytesUTF8: function (str) { - var c; - var len = 0; - for (var i = 0; i < str.length; ++i) { - c = str.charCodeAt(i); - if (c <= 0x7F) { - len++; - } - else if (c <= 0x7FF) { - len += 2; - } - else if (c >= 0xD800 && c <= 0xDFFF) { - len += 4; - ++i; - } - else { - len += 3; - } - } - return len; - }, - UTF8ToString: function (ptr, length) { - if (!ptr || !length) - return ''; - ptr >>>= 0; - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - var end = ptr; - if (length === -1) { - for (; HEAPU8[end];) - ++end; - } - else { - end = ptr + (length >>> 0); - } - length = end - ptr; - if (length <= 16) { - var idx = ptr; - var str = ''; - while (idx < end) { - var u0 = HEAPU8[idx++]; - if (!(u0 & 0x80)) { - str += String.fromCharCode(u0); - continue; - } - var u1 = HEAPU8[idx++] & 63; - if ((u0 & 0xE0) === 0xC0) { - str += String.fromCharCode(((u0 & 31) << 6) | u1); - continue; - } - var u2 = HEAPU8[idx++] & 63; - if ((u0 & 0xF0) === 0xE0) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; - } - else { - u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (HEAPU8[idx++] & 63); - } - if (u0 < 0x10000) { - str += String.fromCharCode(u0); - } - else { - var ch = u0 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } - } - return str; - } - return emnapiString.utf8Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); - }, - stringToUTF8: function (str, outPtr, maxBytesToWrite) { - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - var outIdx = outPtr; - outIdx >>>= 0; - if (!(maxBytesToWrite > 0)) { - return 0; - } - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i); - if (u >= 0xD800 && u <= 0xDFFF) { - var u1 = str.charCodeAt(++i); - u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); - } - if (u <= 0x7F) { - if (outIdx >= endIdx) - break; - HEAPU8[outIdx++] = u; - } - else if (u <= 0x7FF) { - if (outIdx + 1 >= endIdx) - break; - HEAPU8[outIdx++] = 0xC0 | (u >> 6); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - else if (u <= 0xFFFF) { - if (outIdx + 2 >= endIdx) - break; - HEAPU8[outIdx++] = 0xE0 | (u >> 12); - HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - else { - if (outIdx + 3 >= endIdx) - break; - HEAPU8[outIdx++] = 0xF0 | (u >> 18); - HEAPU8[outIdx++] = 0x80 | ((u >> 12) & 63); - HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - } - HEAPU8[outIdx] = 0; - return outIdx - startIdx; - }, - UTF16ToString: function (ptr, length) { - if (!ptr || !length) - return ''; - ptr >>>= 0; - var end = ptr; - if (length === -1) { - var idx = end >> 1; - var HEAPU16 = new Uint16Array(wasmMemory.buffer); - while (HEAPU16[idx]) - ++idx; - end = idx << 1; - } - else { - end = ptr + (length >>> 0) * 2; - } - length = end - ptr; - if (length <= 32) { - return String.fromCharCode.apply(null, new Uint16Array(wasmMemory.buffer, ptr, length / 2)); - } - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - return emnapiString.utf16Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); - }, - stringToUTF16: function (str, outPtr, maxBytesToWrite) { - if (maxBytesToWrite === undefined) { - maxBytesToWrite = 0x7FFFFFFF; - } - if (maxBytesToWrite < 2) - return 0; - maxBytesToWrite -= 2; - var startPtr = outPtr; - var numCharsToWrite = (maxBytesToWrite < str.length * 2) ? (maxBytesToWrite / 2) : str.length; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < numCharsToWrite; ++i) { - var codeUnit = str.charCodeAt(i); - HEAP_DATA_VIEW.setInt16(outPtr, codeUnit, true); - outPtr += 2; - } - HEAP_DATA_VIEW.setInt16(outPtr, 0, true); - return outPtr - startPtr; - }, - newString: function (env, str, length, result, stringMaker) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!str) - return envObject.setLastError(1); - } - if (!result) - return envObject.setLastError(1); - if (!(autoLength || (sizelength <= 2147483647))) - return envObject.setLastError(1); - var strValue = stringMaker(str, autoLength, sizelength); - var value = emnapiCtx.addToCurrentScope(strValue).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - }, - newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!str) - return envObject.setLastError(1); - } - if (!result) - return envObject.setLastError(1); - if (!(autoLength || (sizelength <= 2147483647))) - return envObject.setLastError(1); - var status = createApi(env, str, length, result); - if (status === 0) { - if (copied) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(copied, 1, true); - } - if (finalize_callback) { - envObject.callFinalizer(finalize_callback, str, finalize_hint); - } - } - return status; - } - }; - function napi_get_array_length(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isArray()) { - return envObject.setLastError(8); - } - var v = handle.value.length >>> 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_arraybuffer_info(env, arraybuffer, data, byte_length) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!arraybuffer) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { - return envObject.setLastError(1); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (data) { - var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address; - HEAP_DATA_VIEW.setUint32(data, p, true); - } - if (byte_length) { - HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true); - } - return envObject.clearLastError(); - } - function node_api_set_prototype(env, object, value) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - var obj = emnapiCtx.handleStore.get(object).value; - if (obj == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var type = typeof obj; - var v = void 0; - try { - v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj); - } - catch (_) { - return envObject.setLastError(2); - } - var val = emnapiCtx.handleStore.get(value).value; - Object.setPrototypeOf(v, val); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_prototype(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (handle.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = handle.isObject() || handle.isFunction() ? handle.value : Object(handle.value); - } - catch (_) { - return envObject.setLastError(2); - } - var p = envObject.ensureHandleId(Object.getPrototypeOf(v)); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, p, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_typedarray_info(env, typedarray, type, length, data, arraybuffer, byte_offset) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!typedarray) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(typedarray); - if (!handle.isTypedArray()) { - return envObject.setLastError(1); - } - var v = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (type) { - var t = void 0; - if (v instanceof Int8Array) { - t = 0; - } - else if (v instanceof Uint8Array) { - t = 1; - } - else if (v instanceof Uint8ClampedArray) { - t = 2; - } - else if (v instanceof Int16Array) { - t = 3; - } - else if (v instanceof Uint16Array) { - t = 4; - } - else if (v instanceof Int32Array) { - t = 5; - } - else if (v instanceof Uint32Array) { - t = 6; - } - else if (typeof Float16Array === 'function' && v instanceof Float16Array) { - t = 11; - } - else if (v instanceof Float32Array) { - t = 7; - } - else if (v instanceof Float64Array) { - t = 8; - } - else if (v instanceof BigInt64Array) { - t = 9; - } - else if (v instanceof BigUint64Array) { - t = 10; - } - else { - return envObject.setLastError(9); - } - HEAP_DATA_VIEW.setInt32(type, t, true); - } - if (length) { - HEAP_DATA_VIEW.setUint32(length, v.length, true); - } - var buffer; - if (data || arraybuffer) { - buffer = v.buffer; - if (data) { - var p = emnapiExternalMemory.getViewPointer(v, true).address; - HEAP_DATA_VIEW.setUint32(data, p, true); - } - if (arraybuffer) { - var ab = envObject.ensureHandleId(buffer); - HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); - } - } - if (byte_offset) { - HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); - } - return envObject.clearLastError(); - } - function napi_get_buffer_info(env, buffer, data, length) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!buffer) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(buffer); - if (!handle.isBuffer(emnapiCtx.feature.Buffer)) - return envObject.setLastError(1); - if (handle.isDataView()) { - return napi_get_dataview_info(env, buffer, length, data, 0, 0); - } - return napi_get_typedarray_info(env, buffer, 0, length, data, 0, 0); - } - function napi_get_dataview_info(env, dataview, byte_length, data, arraybuffer, byte_offset) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!dataview) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(dataview); - if (!handle.isDataView()) { - return envObject.setLastError(1); - } - var v = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (byte_length) { - HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true); - } - var buffer; - if (data || arraybuffer) { - buffer = v.buffer; - if (data) { - var p = emnapiExternalMemory.getViewPointer(v, true).address; - HEAP_DATA_VIEW.setUint32(data, p, true); - } - if (arraybuffer) { - var ab = envObject.ensureHandleId(buffer); - HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); - } - } - if (byte_offset) { - HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); - } - return envObject.clearLastError(); - } - function napi_get_date_value(env, value, result) { - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isDate()) { - return envObject.setLastError(1); - } - v = handle.value.valueOf(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setFloat64(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_value_bool(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'boolean') { - return envObject.setLastError(7); - } - var r = handle.value ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_get_value_double(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6); - } - var r = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setFloat64(result, r, true); - return envObject.clearLastError(); - } - function napi_get_value_bigint_int64(env, value, result, lossless) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9); - } - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - if (!lossless) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - var numberValue = handle.value; - if (typeof numberValue !== 'bigint') { - return envObject.setLastError(6); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) { - HEAP_DATA_VIEW.setInt8(lossless, 1, true); - } - else { - HEAP_DATA_VIEW.setInt8(lossless, 0, true); - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - if (numberValue >= (BigInt(1) << BigInt(63))) { - numberValue = numberValue - (BigInt(1) << BigInt(64)); - } - } - var low = Number(numberValue & BigInt(0xffffffff)); - var high = Number(numberValue >> BigInt(32)); - HEAP_DATA_VIEW.setInt32(result, low, true); - HEAP_DATA_VIEW.setInt32(result + 4, high, true); - return envObject.clearLastError(); - } - function napi_get_value_bigint_uint64(env, value, result, lossless) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9); - } - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - if (!lossless) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - var numberValue = handle.value; - if (typeof numberValue !== 'bigint') { - return envObject.setLastError(6); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) { - HEAP_DATA_VIEW.setInt8(lossless, 1, true); - } - else { - HEAP_DATA_VIEW.setInt8(lossless, 0, true); - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - } - var low = Number(numberValue & BigInt(0xffffffff)); - var high = Number(numberValue >> BigInt(32)); - HEAP_DATA_VIEW.setUint32(result, low, true); - HEAP_DATA_VIEW.setUint32(result + 4, high, true); - return envObject.clearLastError(); - } - function napi_get_value_bigint_words(env, value, sign_bit, word_count, words) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9); - } - if (!value) - return envObject.setLastError(1); - if (!word_count) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isBigInt()) { - return envObject.setLastError(17); - } - var isMinus = handle.value < BigInt(0); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true); - var wordCount = 0; - var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; - while (bigintValue !== BigInt(0)) { - wordCount++; - bigintValue = bigintValue >> BigInt(64); - } - bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; - if (!sign_bit && !words) { - word_count_int = wordCount; - HEAP_DATA_VIEW.setUint32(word_count, word_count_int, true); - } - else { - if (!sign_bit) - return envObject.setLastError(1); - if (!words) - return envObject.setLastError(1); - var wordsArr = []; - while (bigintValue !== BigInt(0)) { - var uint64 = bigintValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - wordsArr.push(uint64); - bigintValue = bigintValue >> BigInt(64); - } - var len = Math.min(word_count_int, wordsArr.length); - for (var i = 0; i < len; i++) { - var low = Number(wordsArr[i] & BigInt(0xffffffff)); - var high = Number(wordsArr[i] >> BigInt(32)); - HEAP_DATA_VIEW.setUint32(words + i * 8, low, true); - HEAP_DATA_VIEW.setUint32(words + (i * 8 + 4), high, true); - } - HEAP_DATA_VIEW.setInt32(sign_bit, isMinus ? 1 : 0, true); - HEAP_DATA_VIEW.setUint32(word_count, len, true); - } - return envObject.clearLastError(); - } - function napi_get_value_external(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isExternal()) { - return envObject.setLastError(1); - } - var p = handle.data(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, p, true); - return envObject.clearLastError(); - } - function napi_get_value_int32(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6); - } - var v = new Int32Array([handle.value])[0]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, v, true); - return envObject.clearLastError(); - } - function napi_get_value_int64(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6); - } - var numberValue = handle.value; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) { - HEAP_DATA_VIEW.setInt32(result, 0, true); - HEAP_DATA_VIEW.setInt32(result + 4, 0, true); - } - else if (numberValue < -9223372036854776e3) { - HEAP_DATA_VIEW.setInt32(result, 0, true); - HEAP_DATA_VIEW.setInt32(result + 4, 2147483648, true); - } - else if (numberValue >= 9223372036854776000) { - HEAP_DATA_VIEW.setUint32(result, 4294967295, true); - HEAP_DATA_VIEW.setUint32(result + 4, 2147483647, true); - } - else { - $emnapiSetValueI64(result, Math.trunc(numberValue)); - } - return envObject.clearLastError(); - } - function napi_get_value_string_latin1(env, value, buf, buf_size, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!buf) { - if (!result) - return envObject.setLastError(1); - HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); - } - else if (buf_size !== 0) { - var copied = 0; - var v = void 0; - for (var i = 0; i < buf_size - 1; ++i) { - v = handle.value.charCodeAt(i) & 0xff; - HEAP_DATA_VIEW.setUint8(buf + i, v, true); - copied++; - } - HEAP_DATA_VIEW.setUint8(buf + copied, 0, true); - if (result) { - HEAP_DATA_VIEW.setUint32(result, copied, true); - } - } - else if (result) { - HEAP_DATA_VIEW.setUint32(result, 0, true); - } - return envObject.clearLastError(); - } - function napi_get_value_string_utf8(env, value, buf, buf_size, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!buf) { - if (!result) - return envObject.setLastError(1); - var strLength = emnapiString.lengthBytesUTF8(handle.value); - HEAP_DATA_VIEW.setUint32(result, strLength, true); - } - else if (buf_size !== 0) { - var copied = emnapiString.stringToUTF8(handle.value, buf, buf_size); - if (result) { - HEAP_DATA_VIEW.setUint32(result, copied, true); - } - } - else if (result) { - HEAP_DATA_VIEW.setUint32(result, 0, true); - } - return envObject.clearLastError(); - } - function napi_get_value_string_utf16(env, value, buf, buf_size, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!buf) { - if (!result) - return envObject.setLastError(1); - HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); - } - else if (buf_size !== 0) { - var copied = emnapiString.stringToUTF16(handle.value, buf, buf_size * 2); - if (result) { - HEAP_DATA_VIEW.setUint32(result, copied / 2, true); - } - } - else if (result) { - HEAP_DATA_VIEW.setUint32(result, 0, true); - } - return envObject.clearLastError(); - } - function napi_get_value_uint32(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6); - } - var v = new Uint32Array([handle.value])[0]; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - var convert2cMod = Object.freeze({ - __proto__: null, - napi_get_array_length: napi_get_array_length, - napi_get_arraybuffer_info: napi_get_arraybuffer_info, - napi_get_buffer_info: napi_get_buffer_info, - napi_get_dataview_info: napi_get_dataview_info, - napi_get_date_value: napi_get_date_value, - napi_get_prototype: napi_get_prototype, - napi_get_typedarray_info: napi_get_typedarray_info, - napi_get_value_bigint_int64: napi_get_value_bigint_int64, - napi_get_value_bigint_uint64: napi_get_value_bigint_uint64, - napi_get_value_bigint_words: napi_get_value_bigint_words, - napi_get_value_bool: napi_get_value_bool, - napi_get_value_double: napi_get_value_double, - napi_get_value_external: napi_get_value_external, - napi_get_value_int32: napi_get_value_int32, - napi_get_value_int64: napi_get_value_int64, - napi_get_value_string_latin1: napi_get_value_string_latin1, - napi_get_value_string_utf16: napi_get_value_string_utf16, - napi_get_value_string_utf8: napi_get_value_string_utf8, - napi_get_value_uint32: napi_get_value_uint32, - node_api_set_prototype: node_api_set_prototype - }); - function napi_create_int32(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var v = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - function napi_create_uint32(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var v = emnapiCtx.addToCurrentScope(value >>> 0).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - function napi_create_int64(env, low, high, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var value; - if (!high) - return envObject.setLastError(1); - value = Number(low); - var v1 = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(high, v1, true); - return envObject.clearLastError(); - } - function napi_create_double(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var v = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - function napi_create_string_latin1(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str, autoLength, sizeLength) { - var latin1String = ''; - var len = 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (autoLength) { - while (true) { - var ch = HEAP_DATA_VIEW.getUint8(str, true); - if (!ch) - break; - latin1String += String.fromCharCode(ch); - str++; - } - } - else { - while (len < sizeLength) { - var ch = HEAP_DATA_VIEW.getUint8(str, true); - if (!ch) - break; - latin1String += String.fromCharCode(ch); - len++; - str++; - } - } - return latin1String; - }); - } - function napi_create_string_utf16(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str) { - return emnapiString.UTF16ToString(str, length); - }); - } - function napi_create_string_utf8(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str) { - return emnapiString.UTF8ToString(str, length); - }); - } - function node_api_create_external_string_latin1(env, str, length, finalize_callback, finalize_hint, result, copied) { - return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_latin1, undefined); - } - function node_api_create_external_string_utf16(env, str, length, finalize_callback, finalize_hint, result, copied) { - return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_utf16, undefined); - } - function node_api_create_property_key_latin1(env, str, length, result) { - return napi_create_string_latin1(env, str, length, result); - } - function node_api_create_property_key_utf8(env, str, length, result) { - return napi_create_string_utf8(env, str, length, result); - } - function node_api_create_property_key_utf16(env, str, length, result) { - return napi_create_string_utf16(env, str, length, result); - } - function napi_create_bigint_int64(env, low, high, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9); - } - var value; - if (!high) - return envObject.setLastError(1); - value = low; - var v1 = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(high, v1, true); - return envObject.clearLastError(); - } - function napi_create_bigint_uint64(env, low, high, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9); - } - var value; - if (!high) - return envObject.setLastError(1); - value = low & ((BigInt(1) << BigInt(64)) - BigInt(1)); - var v1 = emnapiCtx.addToCurrentScope(value).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(high, v1, true); - return envObject.clearLastError(); - } - function napi_create_bigint_words(env, sign_bit, word_count, words, result) { - var v, i; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9); - } - if (!result) - return envObject.setLastError(1); - word_count = word_count >>> 0; - if (word_count > 2147483647) { - return envObject.setLastError(1); - } - if (word_count > (1024 * 1024 / (4 * 8) / 2)) { - throw new RangeError('Maximum BigInt size exceeded'); - } - var value = BigInt(0); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (i = 0; i < word_count; i++) { - var low = HEAP_DATA_VIEW.getUint32(words + i * 8, true); - var high = HEAP_DATA_VIEW.getUint32(words + (i * 8 + 4), true); - var wordi = BigInt(low) | (BigInt(high) << BigInt(32)); - value += wordi << BigInt(64 * i); - } - value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1)); - v = emnapiCtx.addToCurrentScope(value).id; - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - var convert2napiMod = Object.freeze({ - __proto__: null, - napi_create_bigint_int64: napi_create_bigint_int64, - napi_create_bigint_uint64: napi_create_bigint_uint64, - napi_create_bigint_words: napi_create_bigint_words, - napi_create_double: napi_create_double, - napi_create_int32: napi_create_int32, - napi_create_int64: napi_create_int64, - napi_create_string_latin1: napi_create_string_latin1, - napi_create_string_utf16: napi_create_string_utf16, - napi_create_string_utf8: napi_create_string_utf8, - napi_create_uint32: napi_create_uint32, - node_api_create_external_string_latin1: node_api_create_external_string_latin1, - node_api_create_external_string_utf16: node_api_create_external_string_utf16, - node_api_create_property_key_latin1: node_api_create_property_key_latin1, - node_api_create_property_key_utf16: node_api_create_property_key_utf16, - node_api_create_property_key_utf8: node_api_create_property_key_utf8 - }); - function emnapiCreateFunction(envObject, utf8name, length, cb, data) { - var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length)); - var f; - var napiCallback = (wasmTable.get(cb)); - var callback = function (envObject) { - return napiCallback(envObject.id, envObject.ctx.scopeStore.currentScope.id); - }; - var makeFunction = function (envObject, callback) { - return function () { - var scope = envObject.ctx.openScope(envObject); - var callbackInfo = scope.callbackInfo; - callbackInfo.data = data; - callbackInfo.args = arguments; - callbackInfo.thiz = this; - callbackInfo.fn = f; - try { - var napiValue = envObject.callIntoModule(callback); - return (!napiValue) ? undefined : envObject.ctx.handleStore.get(napiValue).value; - } - finally { - callbackInfo.data = 0; - callbackInfo.args = undefined; - callbackInfo.thiz = undefined; - callbackInfo.fn = undefined; - envObject.ctx.closeScope(envObject, scope); - } - }; - }; - if (functionName === '') { - f = makeFunction(envObject, callback); - return { status: 0, f: f }; - } - if (!(/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(functionName))) { - return { status: 1, f: undefined }; - } - if (emnapiCtx.feature.supportNewFunction) { - var _ = makeFunction(envObject, callback); - try { - f = (new Function('_', 'return function ' + functionName + '(){' + - '"use strict";' + - 'return _.apply(this,arguments);' + - '};'))(_); - } - catch (_err) { - f = makeFunction(envObject, callback); - if (emnapiCtx.feature.canSetFunctionName) - Object.defineProperty(f, 'name', { value: functionName }); - } - } - else { - f = makeFunction(envObject, callback); - if (emnapiCtx.feature.canSetFunctionName) - Object.defineProperty(f, 'name', { value: functionName }); - } - return { status: 0, f: f }; - } - function emnapiDefineProperty(envObject, obj, propertyName, method, getter, setter, value, attributes, data) { - if (getter || setter) { - var localGetter = void 0; - var localSetter = void 0; - if (getter) { - localGetter = emnapiCreateFunction(envObject, 0, 0, getter, data).f; - } - if (setter) { - localSetter = emnapiCreateFunction(envObject, 0, 0, setter, data).f; - } - var desc = { - configurable: (attributes & 4) !== 0, - enumerable: (attributes & 2) !== 0, - get: localGetter, - set: localSetter - }; - Object.defineProperty(obj, propertyName, desc); - } - else if (method) { - var localMethod = emnapiCreateFunction(envObject, 0, 0, method, data).f; - var desc = { - configurable: (attributes & 4) !== 0, - enumerable: (attributes & 2) !== 0, - writable: (attributes & 1) !== 0, - value: localMethod - }; - Object.defineProperty(obj, propertyName, desc); - } - else { - var desc = { - configurable: (attributes & 4) !== 0, - enumerable: (attributes & 2) !== 0, - writable: (attributes & 1) !== 0, - value: emnapiCtx.handleStore.get(value).value - }; - Object.defineProperty(obj, propertyName, desc); - } - } - function emnapiGetHandle(js_object) { - var handle = emnapiCtx.handleStore.get(js_object); - if (!(handle.isObject() || handle.isFunction())) { - return { status: 1 }; - } - if (typeof emnapiExternalMemory !== 'undefined' && ArrayBuffer.isView(handle.value)) { - if (emnapiExternalMemory.wasmMemoryViewTable.has(handle.value)) { - handle = emnapiCtx.addToCurrentScope(emnapiExternalMemory.wasmMemoryViewTable.get(handle.value)); - } - } - return { status: 0, handle: handle }; - } - function emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { - var referenceId; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!emnapiCtx.feature.supportFinalizer) { - if (finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "finalize_cb" must be 0(NULL)'); - } - if (result) { - throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "result" must be 0(NULL)'); - } - } - if (!js_object) - return envObject.setLastError(1); - var handleResult = emnapiGetHandle(js_object); - if (handleResult.status !== 0) { - return envObject.setLastError(handleResult.status); - } - var handle = handleResult.handle; - if (envObject.getObjectBinding(handle.value).wrapped !== 0) { - return envObject.setLastError(1); - } - var reference = void 0; - if (result) { - if (!finalize_cb) - return envObject.setLastError(1); - reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint); - referenceId = reference.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, referenceId, true); - } - else { - if (finalize_cb) { - reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 0, finalize_cb, native_object, finalize_hint); - } - else { - reference = emnapiCtx.createReferenceWithData(envObject, handle.id, 0, 0, native_object); - } - } - envObject.getObjectBinding(handle.value).wrapped = reference.id; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function emnapiUnwrap(env, js_object, result, action) { - var data; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!js_object) - return envObject.setLastError(1); - if (action === 0) { - if (!result) - return envObject.setLastError(1); - } - var value = emnapiCtx.handleStore.get(js_object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(1); - } - var binding = envObject.getObjectBinding(value.value); - var referenceId = binding.wrapped; - var ref = emnapiCtx.refStore.get(referenceId); - if (!ref) - return envObject.setLastError(1); - if (result) { - data = ref.data(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, data, true); - } - if (action === 1) { - binding.wrapped = 0; - if (ref.ownership() === 1) { - ref.resetFinalizer(); - } - else { - ref.dispose(); - } - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_define_class(env, utf8name, length, constructor, callback_data, property_count, properties, result) { - var propPtr, valueHandleId, attributes; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!constructor) - return envObject.setLastError(1); - property_count = property_count >>> 0; - if (property_count > 0) { - if (!properties) - return envObject.setLastError(1); - } - if ((length < -1) || (length > 2147483647) || (!utf8name)) { - return envObject.setLastError(1); - } - var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data); - if (fresult.status !== 0) - return envObject.setLastError(fresult.status); - var F = fresult.f; - var propertyName = void 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < property_count; i++) { - propPtr = properties + (i * (4 * 8)); - var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); - var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); - var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); - var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); - var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); - var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); - attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); - var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); - if (utf8Name) { - propertyName = emnapiString.UTF8ToString(utf8Name, -1); - } - else { - if (!name_1) { - return envObject.setLastError(4); - } - propertyName = emnapiCtx.handleStore.get(name_1).value; - if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { - return envObject.setLastError(4); - } - } - if ((attributes & 1024) !== 0) { - emnapiDefineProperty(envObject, F, propertyName, method, getter, setter, value, attributes, data); - continue; - } - emnapiDefineProperty(envObject, F.prototype, propertyName, method, getter, setter, value, attributes, data); - } - var valueHandle = emnapiCtx.addToCurrentScope(F); - valueHandleId = valueHandle.id; - HEAP_DATA_VIEW.setUint32(result, valueHandleId, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_wrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { - return emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result); - } - function napi_unwrap(env, js_object, result) { - return emnapiUnwrap(env, js_object, result, 0); - } - function napi_remove_wrap(env, js_object, result) { - return emnapiUnwrap(env, js_object, result, 1); - } - function napi_type_tag_object(env, object, type_tag) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!object) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); - } - var value = emnapiCtx.handleStore.get(object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2); - } - if (!type_tag) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); - } - var binding = envObject.getObjectBinding(value.value); - if (binding.tag !== null) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); - } - var tag = new Uint8Array(16); - tag.set(new Uint8Array(wasmMemory.buffer, type_tag, 16)); - binding.tag = new Uint32Array(tag.buffer); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_check_object_type_tag(env, object, type_tag, result) { - var ret = true; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!object) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); - } - var value = emnapiCtx.handleStore.get(object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2); - } - if (!type_tag) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); - } - if (!result) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); - } - var binding = envObject.getObjectBinding(value.value); - if (binding.tag !== null) { - var tag = binding.tag; - var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4); - ret = (tag[0] === typeTag[0] && - tag[1] === typeTag[1] && - tag[2] === typeTag[2] && - tag[3] === typeTag[3]); - } - else { - ret = false; - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_add_finalizer(env, js_object, finalize_data, finalize_cb, finalize_hint, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportFinalizer) { - return envObject.setLastError(9); - } - if (!js_object) - return envObject.setLastError(1); - if (!finalize_cb) - return envObject.setLastError(1); - var handleResult = emnapiGetHandle(js_object); - if (handleResult.status !== 0) { - return envObject.setLastError(handleResult.status); - } - var handle = handleResult.handle; - var ownership = !result ? 0 : 1; - var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint); - if (result) { - var referenceId = reference.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, referenceId, true); - } - return envObject.clearLastError(); - } - function node_api_post_finalizer(env, finalize_cb, finalize_data, finalize_hint) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.enqueueFinalizer(emnapiCtx.createTrackedFinalizer(envObject, finalize_cb, finalize_data, finalize_hint)); - return envObject.clearLastError(); - } - var wrapMod = Object.freeze({ - __proto__: null, - napi_add_finalizer: napi_add_finalizer, - napi_check_object_type_tag: napi_check_object_type_tag, - napi_define_class: napi_define_class, - napi_remove_wrap: napi_remove_wrap, - napi_type_tag_object: napi_type_tag_object, - napi_unwrap: napi_unwrap, - napi_wrap: napi_wrap, - node_api_post_finalizer: node_api_post_finalizer - }); - function emnapi_create_memory_view(env, typedarray_type, external_data, byte_length, finalize_cb, finalize_hint, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - byte_length = byte_length >>> 0; - if (!external_data) { - byte_length = 0; - } - if (byte_length > 2147483647) { - throw new RangeError('Cannot create a memory view larger than 2147483647 bytes'); - } - if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { - throw new RangeError('Memory out of range'); - } - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('emnapi_create_memory_view', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var viewDescriptor = void 0; - switch (typedarray_type) { - case 0: - viewDescriptor = { Ctor: Int8Array, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; - break; - case 1: - viewDescriptor = { Ctor: Uint8Array, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; - break; - case 2: - viewDescriptor = { Ctor: Uint8ClampedArray, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; - break; - case 3: - viewDescriptor = { Ctor: Int16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 }; - break; - case 4: - viewDescriptor = { Ctor: Uint16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 }; - break; - case 5: - viewDescriptor = { Ctor: Int32Array, address: external_data, length: byte_length >> 2, ownership: 1, runtimeAllocated: 0 }; - break; - case 6: - viewDescriptor = { Ctor: Uint32Array, address: external_data, length: byte_length >> 2, ownership: 1, runtimeAllocated: 0 }; - break; - case 7: - viewDescriptor = { Ctor: Float32Array, address: external_data, length: byte_length >> 2, ownership: 1, runtimeAllocated: 0 }; - break; - case 8: - viewDescriptor = { Ctor: Float64Array, address: external_data, length: byte_length >> 3, ownership: 1, runtimeAllocated: 0 }; - break; - case 9: - viewDescriptor = { Ctor: BigInt64Array, address: external_data, length: byte_length >> 3, ownership: 1, runtimeAllocated: 0 }; - break; - case 10: - viewDescriptor = { Ctor: BigUint64Array, address: external_data, length: byte_length >> 3, ownership: 1, runtimeAllocated: 0 }; - break; - case -1: - viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; - break; - case 11: - if (typeof Float16Array !== 'function') { - return envObject.setLastError(1); - } - viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 }; - break; - case -2: { - if (!emnapiCtx.feature.Buffer) { - throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', ''); - } - viewDescriptor = { Ctor: emnapiCtx.feature.Buffer, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; - break; - } - default: return envObject.setLastError(1); - } - var Ctor = viewDescriptor.Ctor; - var typedArray = typedarray_type === -2 - ? emnapiCtx.feature.Buffer.from(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length) - : new Ctor(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length); - var handle = emnapiCtx.addToCurrentScope(typedArray); - emnapiExternalMemory.wasmMemoryViewTable.set(typedArray, viewDescriptor); - if (finalize_cb) { - var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, 0); - if (status_1 === 10) { - var err = envObject.tryCatch.extractException(); - envObject.clearLastError(); - throw err; - } - else if (status_1 !== 0) { - return envObject.setLastError(status_1); - } - } - value = handle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function emnapi_is_support_weakref() { - return emnapiCtx.feature.supportFinalizer ? 1 : 0; - } - function emnapi_is_support_bigint() { - return emnapiCtx.feature.supportBigInt ? 1 : 0; - } - function emnapi_is_node_binding_available() { - return emnapiNodeBinding ? 1 : 0; - } - function $emnapiSyncMemory(js_to_wasm, arrayBufferOrView, offset, len) { - offset = offset !== null && offset !== void 0 ? offset : 0; - offset = offset >>> 0; - var view; - if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { - var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address; - if (!pointer) - throw new Error('Unknown ArrayBuffer address'); - if (typeof len !== 'number' || len === -1) { - len = arrayBufferOrView.byteLength - offset; - } - len = len >>> 0; - if (len === 0) - return arrayBufferOrView; - view = new Uint8Array(arrayBufferOrView, offset, len); - var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); - if (!js_to_wasm) { - view.set(wasmMemoryU8.subarray(pointer, pointer + len)); - } - else { - wasmMemoryU8.set(view, pointer); - } - return arrayBufferOrView; - } - if (ArrayBuffer.isView(arrayBufferOrView)) { - var viewPointerInfo = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); - var latestView = viewPointerInfo.view; - var pointer = viewPointerInfo.address; - if (!pointer) - throw new Error('Unknown ArrayBuffer address'); - if (typeof len !== 'number' || len === -1) { - len = latestView.byteLength - offset; - } - len = len >>> 0; - if (len === 0) - return latestView; - view = new Uint8Array(latestView.buffer, latestView.byteOffset + offset, len); - var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); - if (!js_to_wasm) { - view.set(wasmMemoryU8.subarray(pointer, pointer + len)); - } - else { - wasmMemoryU8.set(view, pointer); - } - return latestView; - } - throw new TypeError('emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter'); - } - function emnapi_sync_memory(env, js_to_wasm, arraybuffer_or_view, offset, len) { - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!arraybuffer_or_view) - return envObject.setLastError(1); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true); - var handle = envObject.ctx.handleStore.get(handleId); - if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { - return envObject.setLastError(1); - } - var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len); - if (handle.value !== ret) { - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function $emnapiGetMemoryAddress(arrayBufferOrView) { - var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer; - var isDataView = arrayBufferOrView instanceof DataView; - var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView; - if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { - throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter'); - } - var info; - if (isArrayBuffer) { - info = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false); - } - else { - info = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); - } - return { - address: info.address, - ownership: info.ownership, - runtimeAllocated: info.runtimeAllocated - }; - } - function emnapi_get_memory_address(env, arraybuffer_or_view, address, ownership, runtime_allocated) { - var p, runtimeAllocated, ownershipOut; - var info; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!arraybuffer_or_view) - return envObject.setLastError(1); - if (!address && !ownership && !runtime_allocated) { - return envObject.setLastError(1); - } - var handle = envObject.ctx.handleStore.get(arraybuffer_or_view); - info = $emnapiGetMemoryAddress(handle.value); - p = info.address; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (address) { - HEAP_DATA_VIEW.setUint32(address, p, true); - } - if (ownership) { - ownershipOut = info.ownership; - HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true); - } - if (runtime_allocated) { - runtimeAllocated = info.runtimeAllocated; - HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function emnapi_get_runtime_version(env, version) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!version) - return envObject.setLastError(1); - var runtimeVersion; - try { - runtimeVersion = emnapiCtx.getRuntimeVersions().version; - } - catch (_) { - return envObject.setLastError(9); - } - var versions = runtimeVersion.split('.') - .map(function (n) { return Number(n); }); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(version, versions[0], true); - HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true); - HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true); - return envObject.clearLastError(); - } - var emnapiMod = Object.freeze({ - __proto__: null, - $emnapiGetMemoryAddress: $emnapiGetMemoryAddress, - $emnapiSyncMemory: $emnapiSyncMemory, - emnapi_create_memory_view: emnapi_create_memory_view, - emnapi_get_memory_address: emnapi_get_memory_address, - emnapi_get_runtime_version: emnapi_get_runtime_version, - emnapi_is_node_binding_available: emnapi_is_node_binding_available, - emnapi_is_support_bigint: emnapi_is_support_bigint, - emnapi_is_support_weakref: emnapi_is_support_weakref, - emnapi_sync_memory: emnapi_sync_memory - }); - function napi_create_array(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var value = emnapiCtx.addToCurrentScope([]).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_create_array_with_length(env, length, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - length = length >>> 0; - var value = emnapiCtx.addToCurrentScope(new Array(length)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function emnapiCreateArrayBuffer(byte_length, data, shared) { - byte_length = byte_length >>> 0; - var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length); - if (data) { - var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(data, p, true); - } - return arrayBuffer; - } - function napi_create_arraybuffer(env, byte_length, data, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false); - value = emnapiCtx.addToCurrentScope(arrayBuffer).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function node_api_create_sharedarraybuffer(env, byte_length, data, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true); - value = emnapiCtx.addToCurrentScope(arrayBuffer).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_date(env, time, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - value = emnapiCtx.addToCurrentScope(new Date(time)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_external(env, data, finalize_cb, finalize_hint, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_create_external', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var externalHandle = emnapiCtx.getCurrentScope().addExternal(data); - if (finalize_cb) { - emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint); - } - value = externalHandle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_external_arraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - byte_length = byte_length >>> 0; - if (!external_data) { - byte_length = 0; - } - if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { - throw new RangeError('Memory out of range'); - } - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_create_external_arraybuffer', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var arrayBuffer = new ArrayBuffer(byte_length); - if (byte_length === 0) { - try { - var MessageChannel_1 = emnapiCtx.feature.MessageChannel; - var messageChannel = new MessageChannel_1(); - messageChannel.port1.postMessage(arrayBuffer, [arrayBuffer]); - } - catch (_) { } - } - else { - var u8arr = new Uint8Array(arrayBuffer); - u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length)); - emnapiExternalMemory.table.set(arrayBuffer, { - address: external_data, - ownership: 1, - runtimeAllocated: 0 - }); - } - var handle = emnapiCtx.addToCurrentScope(arrayBuffer); - if (finalize_cb) { - var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, 0); - if (status_1 === 10) { - var err = envObject.tryCatch.extractException(); - envObject.clearLastError(); - throw err; - } - else if (status_1 !== 0) { - return envObject.setLastError(status_1); - } - } - value = handle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_object(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var value = emnapiCtx.addToCurrentScope({}).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - property_count = property_count >>> 0; - if (property_count > 0) { - if (!property_names) - return envObject.setLastError(1); - if (!property_values) - return envObject.setLastError(1); - } - var v8_prototype_or_null = prototype_or_null - ? emnapiCtx.handleStore.get(prototype_or_null).value - : null; - var properties = {}; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < property_count; i++) { - var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value; - if (!(typeof name_value === "string" || typeof name_value === "symbol")) - return envObject.setLastError(4); - properties[name_value] = { - value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value, - writable: true, - enumerable: true, - configurable: true - }; - } - var obj; - try { - obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties); - } - catch (_) { - return envObject.setLastError(9); - } - var value = emnapiCtx.addToCurrentScope(obj).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_create_symbol(env, description, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!description) { - var value = emnapiCtx.addToCurrentScope(Symbol()).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - } - else { - var handle = emnapiCtx.handleStore.get(description); - var desc = handle.value; - if (typeof desc !== 'string') { - return envObject.setLastError(3); - } - var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id; - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.clearLastError(); - } - function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer()) { - return envObject.setLastError(1); - } - var buffer = handle.value; - var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) { - var _a; - byte_offset = byte_offset >>> 0; - length = length >>> 0; - if (size_of_element > 1) { - if ((byte_offset) % (size_of_element) !== 0) { - var err = new RangeError("start offset of ".concat((_a = Type.name) !== null && _a !== void 0 ? _a : '', " should be a multiple of ").concat(size_of_element)); - err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT'; - envObject.tryCatch.setError(err); - return envObject.setLastError(9); - } - } - if (((length * size_of_element) + byte_offset) > buffer.byteLength) { - var err = new RangeError('Invalid typed array length'); - err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_LENGTH'; - envObject.tryCatch.setError(err); - return envObject.setLastError(9); - } - var out = new Type(buffer, byte_offset, length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { - emnapiExternalMemory.wasmMemoryViewTable.set(out, { - Ctor: Type, - address: byte_offset, - length: length, - ownership: 1, - runtimeAllocated: 0 - }); - } - } - value = emnapiCtx.addToCurrentScope(out).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - }; - switch (type) { - case 0: - return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length); - case 1: - return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length); - case 2: - return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length); - case 3: - return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length); - case 4: - return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length); - case 5: - return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length); - case 6: - return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length); - case 7: - return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length); - case 8: - return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length); - case 9: - return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length); - case 10: - return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length); - case 11: - if (typeof Float16Array !== 'function') { - return envObject.setLastError(1); - } - return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length); - default: - return envObject.setLastError(1); - } - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_buffer(env, size, data, result) { - var _a; - var value, pointer; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', ''); - } - var buffer = void 0; - size = size >>> 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!data || (size === 0)) { - buffer = Buffer.alloc(size); - value = emnapiCtx.addToCurrentScope(buffer).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - } - else { - pointer = _malloc(size); - if (!pointer) - throw new Error('Out of memory'); - new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0); - var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size); - var viewDescriptor = { - Ctor: Buffer, - address: pointer, - length: size, - ownership: emnapiExternalMemory.registry ? 0 : 1, - runtimeAllocated: 1 - }; - emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor); - (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer); - value = emnapiCtx.addToCurrentScope(buffer_1).id; - HEAP_DATA_VIEW.setUint32(result, value, true); - HEAP_DATA_VIEW.setUint32(data, pointer, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_buffer_copy(env, length, data, result_data, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', ''); - } - var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false); - var buffer = Buffer.from(arrayBuffer); - buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length)); - value = emnapiCtx.addToCurrentScope(buffer).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_external_buffer(env, length, data, finalize_cb, finalize_hint, result) { - return emnapi_create_memory_view(env, -2, data, length, finalize_cb, finalize_hint, result); - } - function node_api_create_buffer_from_arraybuffer(env, arraybuffer, byte_offset, byte_length, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - byte_offset = byte_offset >>> 0; - byte_length = byte_length >>> 0; - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer()) { - return envObject.setLastError(1); - } - var buffer = handle.value; - if ((byte_length + byte_offset) > buffer.byteLength) { - var err = new RangeError('The byte offset + length is out of range'); - err.code = 'ERR_OUT_OF_RANGE'; - throw err; - } - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('node_api_create_buffer_from_arraybuffer', ''); - } - var out = Buffer.from(buffer, byte_offset, byte_length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { - emnapiExternalMemory.wasmMemoryViewTable.set(out, { - Ctor: Buffer, - address: byte_offset, - length: byte_length, - ownership: 1, - runtimeAllocated: 0 - }); - } - } - value = emnapiCtx.addToCurrentScope(out).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - byte_length = byte_length >>> 0; - byte_offset = byte_offset >>> 0; - var value = emnapiCtx.handleStore.get(arraybuffer).value; - var createDataview = function (buffer) { - if ((byte_length + byte_offset) > buffer.byteLength) { - var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in'); - err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS'; - throw err; - } - var dataview = new DataView(buffer, byte_offset, byte_length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) { - emnapiExternalMemory.wasmMemoryViewTable.set(dataview, { - Ctor: DataView, - address: byte_offset, - length: byte_length, - ownership: 1, - runtimeAllocated: 0 - }); - } - } - var v = emnapiCtx.addToCurrentScope(dataview).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - }; - if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) { - return createDataview(value); - } - else { - return envObject.setLastError(1); - } - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function node_api_symbol_for(env, utf8description, length, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!utf8description) - return envObject.setLastError(1); - } - if (!(autoLength || (sizelength <= 2147483647))) { - return envObject.setLastError(1); - } - var descriptionString = emnapiString.UTF8ToString(utf8description, length); - var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - var createMod = Object.freeze({ - __proto__: null, - napi_create_array: napi_create_array, - napi_create_array_with_length: napi_create_array_with_length, - napi_create_arraybuffer: napi_create_arraybuffer, - napi_create_buffer: napi_create_buffer, - napi_create_buffer_copy: napi_create_buffer_copy, - napi_create_dataview: napi_create_dataview, - napi_create_date: napi_create_date, - napi_create_external: napi_create_external, - napi_create_external_arraybuffer: napi_create_external_arraybuffer, - napi_create_external_buffer: napi_create_external_buffer, - napi_create_object: napi_create_object, - napi_create_object_with_properties: napi_create_object_with_properties, - napi_create_symbol: napi_create_symbol, - napi_create_typedarray: napi_create_typedarray, - node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer, - node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer, - node_api_symbol_for: node_api_symbol_for - }); - function napi_get_boolean(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var v = value === 0 ? 3 : 4; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.clearLastError(); - } - function napi_get_global(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var value = 5; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_get_null(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var value = 2; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_get_undefined(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var value = 1; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - var globalMod = Object.freeze({ - __proto__: null, - napi_get_boolean: napi_get_boolean, - napi_get_global: napi_get_global, - napi_get_null: napi_get_null, - napi_get_undefined: napi_get_undefined - }); - function napi_set_instance_data(env, data, finalize_cb, finalize_hint) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.setInstanceData(data, finalize_cb, finalize_hint); - return envObject.clearLastError(); - } - function napi_get_instance_data(env, data) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!data) - return envObject.setLastError(1); - var value = envObject.getInstanceData(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(data, value, true); - return envObject.clearLastError(); - } - var envMod = Object.freeze({ - __proto__: null, - napi_get_instance_data: napi_get_instance_data, - napi_set_instance_data: napi_set_instance_data - }); - function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) { - var envObject = emnapiCtx.envStore.get(env); - var lastError = envObject.lastError; - var errorCode = lastError.errorCode; - var engineErrorCode = lastError.engineErrorCode >>> 0; - var engineReserved = lastError.engineReserved; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(error_code, errorCode, true); - HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true); - HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true); - } - function napi_throw(env, error) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!error) - return envObject.setLastError(1); - envObject.tryCatch.setError(emnapiCtx.handleStore.get(error).value); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_throw_error(env, code, msg) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1); - var error = new Error(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_throw_type_error(env, code, msg) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1); - var error = new TypeError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_throw_range_error(env, code, msg) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1); - var error = new RangeError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function node_api_throw_syntax_error(env, code, msg) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1); - var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_is_exception_pending(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var r = envObject.tryCatch.hasCaught(); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - return envObject.clearLastError(); - } - function napi_create_error(env, code, msg, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3); - } - var error = new Error(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3); - } - error.code = codeValue; - } - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_create_type_error(env, code, msg, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3); - } - var error = new TypeError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3); - } - error.code = codeValue; - } - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_create_range_error(env, code, msg, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3); - } - var error = new RangeError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3); - } - error.code = codeValue; - } - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function node_api_create_syntax_error(env, code, msg, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3); - } - var error = new SyntaxError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3); - } - error.code = codeValue; - } - var value = emnapiCtx.addToCurrentScope(error).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - function napi_get_and_clear_last_exception(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (!envObject.tryCatch.hasCaught()) { - HEAP_DATA_VIEW.setUint32(result, 1, true); - return envObject.clearLastError(); - } - else { - var err = envObject.tryCatch.exception(); - var value = envObject.ensureHandleId(err); - HEAP_DATA_VIEW.setUint32(result, value, true); - envObject.tryCatch.reset(); - } - return envObject.clearLastError(); - } - function napi_fatal_error(location, location_len, message, message_len) { - var locationStr = emnapiString.UTF8ToString(location, location_len); - var messageStr = emnapiString.UTF8ToString(message, message_len); - if (emnapiNodeBinding) { - emnapiNodeBinding.napi.fatalError(locationStr, messageStr); - } - else { - abort('FATAL ERROR: ' + locationStr + ' ' + messageStr); - } - } - function napi_fatal_exception(env, err) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!err) - return envObject.setLastError(1); - var error = envObject.ctx.handleStore.get(err); - try { - envObject.triggerFatalException(error.value); - } - catch (_) { - return envObject.setLastError(9); - } - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - var errorMod = Object.freeze({ - __proto__: null, - _emnapi_get_last_error_info: _emnapi_get_last_error_info, - napi_create_error: napi_create_error, - napi_create_range_error: napi_create_range_error, - napi_create_type_error: napi_create_type_error, - napi_fatal_error: napi_fatal_error, - napi_fatal_exception: napi_fatal_exception, - napi_get_and_clear_last_exception: napi_get_and_clear_last_exception, - napi_is_exception_pending: napi_is_exception_pending, - napi_throw: napi_throw, - napi_throw_error: napi_throw_error, - napi_throw_range_error: napi_throw_range_error, - napi_throw_type_error: napi_throw_type_error, - node_api_create_syntax_error: node_api_create_syntax_error, - node_api_throw_syntax_error: node_api_throw_syntax_error - }); - function napi_create_function(env, utf8name, length, cb, data, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!cb) - return envObject.setLastError(1); - var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data); - if (fresult.status !== 0) - return envObject.setLastError(fresult.status); - var f = fresult.f; - var valueHandle = emnapiCtx.addToCurrentScope(f); - value = valueHandle.id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_cb_info(env, cbinfo, argc, argv, this_arg, data) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!cbinfo) - return envObject.setLastError(1); - var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (argv) { - if (!argc) - return envObject.setLastError(1); - var argcValue = HEAP_DATA_VIEW.getUint32(argc, true); - var len = cbinfoValue.args.length; - var arrlen = argcValue < len ? argcValue : len; - var i = 0; - for (; i < arrlen; i++) { - var argVal = envObject.ensureHandleId(cbinfoValue.args[i]); - HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true); - } - if (i < argcValue) { - for (; i < argcValue; i++) { - HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true); - } - } - } - if (argc) { - HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true); - } - if (this_arg) { - var v = envObject.ensureHandleId(cbinfoValue.thiz); - HEAP_DATA_VIEW.setUint32(this_arg, v, true); - } - if (data) { - HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true); - } - return envObject.clearLastError(); - } - function napi_call_function(env, recv, func, argc, argv, result) { - var i = 0; - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!recv) - return envObject.setLastError(1); - argc = argc >>> 0; - if (argc > 0) { - if (!argv) - return envObject.setLastError(1); - } - var v8recv = emnapiCtx.handleStore.get(recv).value; - if (!func) - return envObject.setLastError(1); - var v8func = emnapiCtx.handleStore.get(func).value; - if (typeof v8func !== 'function') - return envObject.setLastError(1); - var args = []; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - args.push(emnapiCtx.handleStore.get(argVal).value); - } - var ret = v8func.apply(v8recv, args); - if (result) { - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_new_instance(env, constructor, argc, argv, result) { - var i; - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!constructor) - return envObject.setLastError(1); - argc = argc >>> 0; - if (argc > 0) { - if (!argv) - return envObject.setLastError(1); - } - if (!result) - return envObject.setLastError(1); - var Ctor = emnapiCtx.handleStore.get(constructor).value; - if (typeof Ctor !== 'function') - return envObject.setLastError(1); - var ret = void 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (emnapiCtx.feature.supportReflect) { - var argList = Array(argc); - for (i = 0; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - argList[i] = emnapiCtx.handleStore.get(argVal).value; - } - ret = Reflect.construct(Ctor, argList, Ctor); - } - else { - var args = Array(argc + 1); - args[0] = undefined; - for (i = 0; i < argc; i++) { - var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); - args[i + 1] = emnapiCtx.handleStore.get(argVal).value; - } - var BoundCtor = Ctor.bind.apply(Ctor, args); - ret = new BoundCtor(); - } - if (result) { - v = envObject.ensureHandleId(ret); - HEAP_DATA_VIEW.setUint32(result, v, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_new_target(env, cbinfo, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!cbinfo) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; - var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn; - var value = thiz == null || thiz.constructor == null - ? 0 - : thiz instanceof fn - ? envObject.ensureHandleId(thiz.constructor) - : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - var functionMod = Object.freeze({ - __proto__: null, - napi_call_function: napi_call_function, - napi_create_function: napi_create_function, - napi_get_cb_info: napi_get_cb_info, - napi_get_new_target: napi_get_new_target, - napi_new_instance: napi_new_instance - }); - function napi_open_handle_scope(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var scope = emnapiCtx.openScope(envObject); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, scope.id, true); - return envObject.clearLastError(); - } - function napi_close_handle_scope(env, scope) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1); - if ((envObject.openHandleScopes === 0)) { - return 13; - } - emnapiCtx.closeScope(envObject); - return envObject.clearLastError(); - } - function napi_open_escapable_handle_scope(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1); - var scope = emnapiCtx.openScope(envObject); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, scope.id, true); - return envObject.clearLastError(); - } - function napi_close_escapable_handle_scope(env, scope) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1); - if ((envObject.openHandleScopes === 0)) { - return 13; - } - emnapiCtx.closeScope(envObject); - return envObject.clearLastError(); - } - function napi_escape_handle(env, scope, escapee, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1); - if (!escapee) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var scopeObject = emnapiCtx.scopeStore.get(scope); - if (!scopeObject.escapeCalled()) { - var newHandle = scopeObject.escape(escapee); - var value = newHandle ? newHandle.id : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.clearLastError(); - } - return envObject.setLastError(12); - } - function napi_create_reference(env, value, initial_refcount, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (envObject.moduleApiVersion < 10) { - if (!(handle.isObject() || handle.isFunction() || handle.isSymbol())) { - return envObject.setLastError(1); - } - } - var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, ref.id, true); - return envObject.clearLastError(); - } - function napi_delete_reference(env, ref) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!ref) - return envObject.setLastError(1); - emnapiCtx.refStore.get(ref).dispose(); - return envObject.clearLastError(); - } - function napi_reference_ref(env, ref, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1); - var count = emnapiCtx.refStore.get(ref).ref(); - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, count, true); - } - return envObject.clearLastError(); - } - function napi_reference_unref(env, ref, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1); - var reference = emnapiCtx.refStore.get(ref); - var refcount = reference.refcount(); - if (refcount === 0) { - return envObject.setLastError(9); - } - var count = reference.unref(); - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, count, true); - } - return envObject.clearLastError(); - } - function napi_get_reference_value(env, ref, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var reference = emnapiCtx.refStore.get(ref); - var handleId = reference.get(envObject); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, handleId, true); - return envObject.clearLastError(); - } - function napi_add_env_cleanup_hook(env, fun, arg) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!fun) - return envObject.setLastError(1); - emnapiCtx.addCleanupHook(envObject, fun, arg); - return 0; - } - function napi_remove_env_cleanup_hook(env, fun, arg) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!fun) - return envObject.setLastError(1); - emnapiCtx.removeCleanupHook(envObject, fun, arg); - return 0; - } - function _emnapi_env_ref(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.ref(); - } - function _emnapi_env_unref(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.unref(); - } - var lifeMod = Object.freeze({ - __proto__: null, - _emnapi_env_ref: _emnapi_env_ref, - _emnapi_env_unref: _emnapi_env_unref, - napi_add_env_cleanup_hook: napi_add_env_cleanup_hook, - napi_close_escapable_handle_scope: napi_close_escapable_handle_scope, - napi_close_handle_scope: napi_close_handle_scope, - napi_create_reference: napi_create_reference, - napi_delete_reference: napi_delete_reference, - napi_escape_handle: napi_escape_handle, - napi_get_reference_value: napi_get_reference_value, - napi_open_escapable_handle_scope: napi_open_escapable_handle_scope, - napi_open_handle_scope: napi_open_handle_scope, - napi_reference_ref: napi_reference_ref, - napi_reference_unref: napi_reference_unref, - napi_remove_env_cleanup_hook: napi_remove_env_cleanup_hook - }); - function _emnapi_get_filename(env, buf, len) { - var envObject = emnapiCtx.envStore.get(env); - var filename = envObject.filename; - if (!buf) { - return emnapiString.lengthBytesUTF8(filename); - } - return emnapiString.stringToUTF8(filename, buf, len); - } - var miscellaneousMod = Object.freeze({ - __proto__: null, - _emnapi_get_filename: _emnapi_get_filename - }); - function napi_create_promise(env, deferred, promise) { - var deferredObjectId, value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1); - if (!promise) - return envObject.setLastError(1); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - var p = new Promise(function (resolve, reject) { - var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject }); - deferredObjectId = deferredObject.id; - HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true); - }); - value = emnapiCtx.addToCurrentScope(p).id; - HEAP_DATA_VIEW.setUint32(promise, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_resolve_deferred(env, deferred, resolution) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1); - if (!resolution) - return envObject.setLastError(1); - var deferredObject = emnapiCtx.deferredStore.get(deferred); - deferredObject.resolve(emnapiCtx.handleStore.get(resolution).value); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_reject_deferred(env, deferred, resolution) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1); - if (!resolution) - return envObject.setLastError(1); - var deferredObject = emnapiCtx.deferredStore.get(deferred); - deferredObject.reject(emnapiCtx.handleStore.get(resolution).value); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_is_promise(env, value, is_promise) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!is_promise) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isPromise() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(is_promise, r, true); - return envObject.clearLastError(); - } - var promiseMod = Object.freeze({ - __proto__: null, - napi_create_promise: napi_create_promise, - napi_is_promise: napi_is_promise, - napi_reject_deferred: napi_reject_deferred, - napi_resolve_deferred: napi_resolve_deferred - }); - function napi_get_all_property_names(env, object, key_mode, key_filter, key_conversion, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var obj = void 0; - try { - obj = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - if (key_mode !== 0 && key_mode !== 1) { - return envObject.setLastError(1); - } - if (key_conversion !== 0 && key_conversion !== 1) { - return envObject.setLastError(1); - } - var props = []; - var names = void 0; - var symbols = void 0; - var i = void 0; - var own = true; - var integerIndiceRegex = /^(0|[1-9][0-9]*)$/; - do { - names = Object.getOwnPropertyNames(obj); - symbols = Object.getOwnPropertySymbols(obj); - for (i = 0; i < names.length; i++) { - props.push({ - name: integerIndiceRegex.test(names[i]) ? Number(names[i]) : names[i], - desc: Object.getOwnPropertyDescriptor(obj, names[i]), - own: own - }); - } - for (i = 0; i < symbols.length; i++) { - props.push({ - name: symbols[i], - desc: Object.getOwnPropertyDescriptor(obj, symbols[i]), - own: own - }); - } - if (key_mode === 1) { - break; - } - obj = Object.getPrototypeOf(obj); - own = false; - } while (obj); - var ret = []; - var addName = function (ret, name, key_filter, conversion_mode) { - if (ret.indexOf(name) !== -1) - return; - if (conversion_mode === 0) { - ret.push(name); - } - else if (conversion_mode === 1) { - var realName = typeof name === 'number' ? String(name) : name; - if (typeof realName === 'string') { - if (!(key_filter & 8)) { - ret.push(realName); - } - } - else { - ret.push(realName); - } - } - }; - for (i = 0; i < props.length; i++) { - var prop = props[i]; - var name_1 = prop.name; - var desc = prop.desc; - if (key_filter === 0) { - addName(ret, name_1, key_filter, key_conversion); - } - else { - if (key_filter & 8 && typeof name_1 === 'string') { - continue; - } - if (key_filter & 16 && typeof name_1 === 'symbol') { - continue; - } - var shouldAdd = true; - switch (key_filter & 7) { - case 1: { - shouldAdd = Boolean(desc.writable); - break; - } - case 2: { - shouldAdd = Boolean(desc.enumerable); - break; - } - case (1 | 2): { - shouldAdd = Boolean(desc.writable && desc.enumerable); - break; - } - case 4: { - shouldAdd = Boolean(desc.configurable); - break; - } - case (4 | 1): { - shouldAdd = Boolean(desc.configurable && desc.writable); - break; - } - case (4 | 2): { - shouldAdd = Boolean(desc.configurable && desc.enumerable); - break; - } - case (4 | 2 | 1): { - shouldAdd = Boolean(desc.configurable && desc.enumerable && desc.writable); - break; - } - } - if (shouldAdd) { - addName(ret, name_1, key_filter, key_conversion); - } - } - } - value = emnapiCtx.addToCurrentScope(ret).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_property_names(env, object, result) { - return napi_get_all_property_names(env, object, 0, 2 | 16, 1, result); - } - function napi_set_property(env, object, key, value) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1); - if (!value) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - h.value[emnapiCtx.handleStore.get(key).value] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_has_property(env, object, key, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_property(env, object, key, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_delete_property(env, object, key, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - var propertyKey = emnapiCtx.handleStore.get(key).value; - if (emnapiCtx.feature.supportReflect) { - r = Reflect.deleteProperty(h.value, propertyKey); - } - else { - try { - r = delete h.value[propertyKey]; - } - catch (_) { - r = false; - } - } - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_has_own_property(env, object, key, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - var prop = emnapiCtx.handleStore.get(key).value; - if (typeof prop !== 'string' && typeof prop !== 'symbol') { - return envObject.setLastError(4); - } - r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_set_named_property(env, object, cname, value) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - if (!cname) { - return envObject.setLastError(1); - } - emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_has_named_property(env, object, utf8name, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - if (!utf8name) { - return envObject.setLastError(1); - } - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - r = emnapiString.UTF8ToString(utf8name, -1) in v; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_named_property(env, object, utf8name, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - if (!utf8name) { - return envObject.setLastError(1); - } - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_set_element(env, object, index, value) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - h.value[index >>> 0] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_has_element(env, object, index, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - r = ((index >>> 0) in v) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_get_element(env, object, index, result) { - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1); - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2); - } - value = envObject.ensureHandleId(v[index >>> 0]); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_delete_element(env, object, index, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - if (emnapiCtx.feature.supportReflect) { - r = Reflect.deleteProperty(h.value, index >>> 0); - } - else { - try { - r = delete h.value[index >>> 0]; - } - catch (_) { - r = false; - } - } - if (result) { - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_define_properties(env, object, property_count, properties) { - var propPtr, attributes; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - property_count = property_count >>> 0; - if (property_count > 0) { - if (!properties) - return envObject.setLastError(1); - } - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - var propertyName = void 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - for (var i = 0; i < property_count; i++) { - propPtr = properties + (i * (4 * 8)); - var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); - var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); - var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); - var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); - var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); - var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); - attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); - var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); - if (utf8Name) { - propertyName = emnapiString.UTF8ToString(utf8Name, -1); - } - else { - if (!name_2) { - return envObject.setLastError(4); - } - propertyName = emnapiCtx.handleStore.get(name_2).value; - if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { - return envObject.setLastError(4); - } - } - emnapiDefineProperty(envObject, maybeObject, propertyName, method, getter, setter, value, attributes, data); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_object_freeze(env, object) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - Object.freeze(maybeObject); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_object_seal(env, object) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2); - } - Object.seal(maybeObject); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - var propertyMod = Object.freeze({ - __proto__: null, - napi_define_properties: napi_define_properties, - napi_delete_element: napi_delete_element, - napi_delete_property: napi_delete_property, - napi_get_all_property_names: napi_get_all_property_names, - napi_get_element: napi_get_element, - napi_get_named_property: napi_get_named_property, - napi_get_property: napi_get_property, - napi_get_property_names: napi_get_property_names, - napi_has_element: napi_has_element, - napi_has_named_property: napi_has_named_property, - napi_has_own_property: napi_has_own_property, - napi_has_property: napi_has_property, - napi_object_freeze: napi_object_freeze, - napi_object_seal: napi_object_seal, - napi_set_element: napi_set_element, - napi_set_named_property: napi_set_named_property, - napi_set_property: napi_set_property - }); - function napi_run_script(env, script, result) { - var status; - var value; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!script) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var v8Script = emnapiCtx.handleStore.get(script); - if (!v8Script.isString()) { - return envObject.setLastError(3); - } - var g = emnapiCtx.handleStore.get(5).value; - var ret = g.eval(v8Script.value); - value = envObject.ensureHandleId(ret); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, value, true); - status = envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - return status; - } - var scriptMod = Object.freeze({ - __proto__: null, - napi_run_script: napi_run_script - }); - function napi_typeof(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var v = emnapiCtx.handleStore.get(value); - var r; - if (v.isNumber()) { - r = 3; - } - else if (v.isBigInt()) { - r = 9; - } - else if (v.isString()) { - r = 4; - } - else if (v.isFunction()) { - r = 7; - } - else if (v.isExternal()) { - r = 8; - } - else if (v.isObject()) { - r = 6; - } - else if (v.isBoolean()) { - r = 2; - } - else if (v.isUndefined()) { - r = 0; - } - else if (v.isSymbol()) { - r = 5; - } - else if (v.isNull()) { - r = 1; - } - else { - return envObject.setLastError(1); - } - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt32(result, r, true); - return envObject.clearLastError(); - } - function napi_coerce_to_bool(env, value, result) { - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - v = handle.value ? 4 : 3; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_coerce_to_number(env, value, result) { - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (handle.isBigInt()) { - throw new TypeError('Cannot convert a BigInt value to a number'); - } - v = emnapiCtx.addToCurrentScope(Number(handle.value)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_coerce_to_object(env, value, result) { - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (handle.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - v = envObject.ensureHandleId(Object(handle.value)); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_coerce_to_string(env, value, result) { - var v; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var handle = emnapiCtx.handleStore.get(value); - if (handle.isSymbol()) { - throw new TypeError('Cannot convert a Symbol value to a string'); - } - v = emnapiCtx.addToCurrentScope(String(handle.value)).id; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, v, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_instanceof(env, object, constructor, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - if (!constructor) - return envObject.setLastError(1); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, 0, true); - var ctor = emnapiCtx.handleStore.get(constructor); - if (!ctor.isFunction()) { - return envObject.setLastError(5); - } - var val = emnapiCtx.handleStore.get(object).value; - var ret = val instanceof ctor.value; - r = ret ? 1 : 0; - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_is_array(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isArray() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_is_arraybuffer(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isArrayBuffer() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function node_api_is_sharedarraybuffer(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]')) - ? 1 - : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_is_date(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isDate() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_is_error(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var val = emnapiCtx.handleStore.get(value).value; - var r = (val instanceof Error) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_is_typedarray(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isTypedArray() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_is_buffer(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_is_dataview(env, value, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(value); - var r = h.isDataView() ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.clearLastError(); - } - function napi_strict_equals(env, lhs, rhs, result) { - var r; - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!lhs) - return envObject.setLastError(1); - if (!rhs) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var lv = emnapiCtx.handleStore.get(lhs).value; - var rv = emnapiCtx.handleStore.get(rhs).value; - r = (lv === rv) ? 1 : 0; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setInt8(result, r, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - function napi_detach_arraybuffer(env, arraybuffer) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!arraybuffer) - return envObject.setLastError(1); - var value = emnapiCtx.handleStore.get(arraybuffer).value; - if (!(value instanceof ArrayBuffer)) { - if (typeof SharedArrayBuffer === 'function' && (value instanceof SharedArrayBuffer)) { - return envObject.setLastError(20); - } - return envObject.setLastError(19); - } - try { - var MessageChannel_1 = emnapiCtx.feature.MessageChannel; - var messageChannel = new MessageChannel_1(); - messageChannel.port1.postMessage(value, [value]); - } - catch (_) { - return envObject.setLastError(9); - } - return envObject.clearLastError(); - } - function napi_is_detached_arraybuffer(env, arraybuffer, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1); - if (!result) - return envObject.setLastError(1); - var h = emnapiCtx.handleStore.get(arraybuffer); - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - if (h.isArrayBuffer() && h.value.byteLength === 0) { - try { - new Uint8Array(h.value); - } - catch (_) { - HEAP_DATA_VIEW.setInt8(result, 1, true); - return envObject.getReturnStatus(); - } - } - HEAP_DATA_VIEW.setInt8(result, 0, true); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10); - } - } - var valueOperationMod = Object.freeze({ - __proto__: null, - napi_coerce_to_bool: napi_coerce_to_bool, - napi_coerce_to_number: napi_coerce_to_number, - napi_coerce_to_object: napi_coerce_to_object, - napi_coerce_to_string: napi_coerce_to_string, - napi_detach_arraybuffer: napi_detach_arraybuffer, - napi_instanceof: napi_instanceof, - napi_is_array: napi_is_array, - napi_is_arraybuffer: napi_is_arraybuffer, - napi_is_buffer: napi_is_buffer, - napi_is_dataview: napi_is_dataview, - napi_is_date: napi_is_date, - napi_is_detached_arraybuffer: napi_is_detached_arraybuffer, - napi_is_error: napi_is_error, - napi_is_typedarray: napi_is_typedarray, - napi_strict_equals: napi_strict_equals, - napi_typeof: napi_typeof, - node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer - }); - function napi_get_version(env, result) { - if (!env) - return 1; - var envObject = emnapiCtx.envStore.get(env); - if (!result) - return envObject.setLastError(1); - var NODE_API_SUPPORTED_VERSION_MAX = 10; - var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); - HEAP_DATA_VIEW.setUint32(result, NODE_API_SUPPORTED_VERSION_MAX, true); - return envObject.clearLastError(); - } - var versionMod = Object.freeze({ - __proto__: null, - napi_get_version: napi_get_version - }); - emnapiAWST.init(); - emnapiExternalMemory.init(); - emnapiString.init(); - emnapiTSFN.init(); - PThread.init(); - napiModule.emnapi.syncMemory = $emnapiSyncMemory; - napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress; - function addImports(mod) { - var keys = Object.keys(mod); - for (var i = 0; i < keys.length; ++i) { - var k = keys[i]; - if (k.indexOf('$') === 0) - continue; - if (k.indexOf('emnapi_') === 0) { - napiModule.imports.emnapi[k] = mod[k]; - } - else if (k.indexOf('_emnapi_') === 0 || k === 'napi_set_last_error' || k === 'napi_clear_last_error') { - napiModule.imports.env[k] = mod[k]; - } - else { - napiModule.imports.napi[k] = mod[k]; - } - } - } - addImports(asyncMod); - addImports(memoryMod); - addImports(asyncWorkMod); - addImports(utilMod); - addImports(convert2cMod); - addImports(convert2napiMod); - addImports(createMod); - addImports(globalMod); - addImports(wrapMod); - addImports(envMod); - addImports(emnapiMod); - addImports(errorMod); - addImports(functionMod); - addImports(lifeMod); - addImports(miscellaneousMod); - addImports(nodeMod); - addImports(promiseMod); - addImports(propertyMod); - addImports(scriptMod); - addImports(valueOperationMod); - addImports(versionMod); - napiModule.imports.napi.napi_create_threadsafe_function = napi_create_threadsafe_function; - napiModule.imports.napi.napi_get_threadsafe_function_context = napi_get_threadsafe_function_context; - napiModule.imports.napi.napi_call_threadsafe_function = napi_call_threadsafe_function; - napiModule.imports.napi.napi_acquire_threadsafe_function = napi_acquire_threadsafe_function; - napiModule.imports.napi.napi_release_threadsafe_function = napi_release_threadsafe_function; - napiModule.imports.napi.napi_unref_threadsafe_function = napi_unref_threadsafe_function; - napiModule.imports.napi.napi_ref_threadsafe_function = napi_ref_threadsafe_function; - return napiModule; - })(); - return napiModule; -} - -function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) { - options = options !== null && options !== void 0 ? options : {}; - const getMemory = options.getMemory; - const getTable = options.getTable; - const beforeInit = options.beforeInit; - if (getMemory != null && typeof getMemory !== 'function') { - throw new TypeError('options.getMemory is not a function'); - } - if (getTable != null && typeof getTable !== 'function') { - throw new TypeError('options.getTable is not a function'); - } - if (beforeInit != null && typeof beforeInit !== 'function') { - throw new TypeError('options.beforeInit is not a function'); - } - let napiModule; - const isLoad = typeof userNapiModule === 'object' && userNapiModule !== null; - if (isLoad) { - if (userNapiModule.loaded) { - throw new Error('napiModule has already loaded'); - } - napiModule = userNapiModule; - } - else { - napiModule = createNapiModule(options); - } - const wasi = options.wasi; - let wasiThreads; - let importObject = { - env: napiModule.imports.env, - napi: napiModule.imports.napi, - emnapi: napiModule.imports.emnapi - }; - if (wasi) { - wasiThreads = new WASIThreads(napiModule.childThread - ? { - wasi, - childThread: true, - postMessage: napiModule.postMessage - } - : { - wasi, - threadManager: napiModule.PThread, - waitThreadStart: napiModule.waitThreadStart - }); - Object.assign(importObject, typeof wasi.getImportObject === 'function' - ? wasi.getImportObject() - : { wasi_snapshot_preview1: wasi.wasiImport }); - Object.assign(importObject, wasiThreads.getImportObject()); - } - const overwriteImports = options.overwriteImports; - if (typeof overwriteImports === 'function') { - const newImportObject = overwriteImports(importObject); - if (typeof newImportObject === 'object' && newImportObject !== null) { - importObject = newImportObject; - } - } - return loadFn(wasmInput, importObject, (err, source) => { - if (err) { - throw err; - } - const originalInstance = source.instance; - let instance = originalInstance; - const originalExports = originalInstance.exports; - const exportMemory = 'memory' in originalExports; - const importMemory = 'memory' in importObject.env; - const memory = getMemory - ? getMemory(originalExports) - : exportMemory - ? originalExports.memory - : importMemory - ? importObject.env.memory - : undefined; - if (!memory) { - throw new Error('memory is neither exported nor imported'); - } - const table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table; - if (wasi && !exportMemory) { - const exports$1 = Object.create(null); - Object.assign(exports$1, originalExports, { memory }); - instance = { exports: exports$1 }; - } - const module = source.module; - if (wasi) { - instance = wasiThreads.initialize(instance, module, memory); - } - else { - napiModule.PThread.setup(module, memory); - } - const emnapiInit = () => { - if (beforeInit) { - beforeInit({ - instance: originalInstance, - module - }); - } - napiModule.init({ - instance, - module, - memory, - table - }); - const ret = { - instance: originalInstance, - module, - usedInstance: instance - }; - if (!isLoad) { - ret.napiModule = napiModule; - } - return ret; - }; - if (napiModule.PThread.shouldPreloadWorkers()) { - const poolReady = napiModule.PThread.loadWasmModuleToAllWorkers(); - if (loadFn === loadCallback) { - return poolReady.then(emnapiInit); - } - else { - throw new Error('Synchronous loading is not supported with worker pool (reuseWorker.size > 0)'); - } - } - return emnapiInit(); - }); -} -function loadCallback(wasmInput, importObject, callback) { - return load(wasmInput, importObject).then((source) => { - return callback(null, source); - }, err => { - return callback(err); - }); -} -function loadSyncCallback(wasmInput, importObject, callback) { - let source; - try { - source = loadSync(wasmInput, importObject); - } - catch (err) { - return callback(err); - } - return callback(null, source); -} -function loadNapiModule(napiModule, wasmInput, options) { - if (typeof napiModule !== 'object' || napiModule === null) { - throw new TypeError('Invalid napiModule'); - } - return loadNapiModuleImpl(loadCallback, napiModule, wasmInput, options); -} -function loadNapiModuleSync(napiModule, wasmInput, options) { - if (typeof napiModule !== 'object' || napiModule === null) { - throw new TypeError('Invalid napiModule'); - } - return loadNapiModuleImpl(loadSyncCallback, napiModule, wasmInput, options); -} -function instantiateNapiModule(wasmInput, options) { - return loadNapiModuleImpl(loadCallback, undefined, wasmInput, options); -} -function instantiateNapiModuleSync(wasmInput, options) { - return loadNapiModuleImpl(loadSyncCallback, undefined, wasmInput, options); -} - -class MessageHandler extends ThreadMessageHandler { - constructor(options) { - if (typeof options.onLoad !== 'function') { - throw new TypeError('options.onLoad is not a function'); - } - const userOnError = options.onError; - super({ - ...options, - onError: (err, type) => { - var _a; - const emnapi_thread_crashed = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed; - if (typeof emnapi_thread_crashed === 'function') { - emnapi_thread_crashed(); - } - if (typeof userOnError === 'function') { - userOnError(err, type); - } - else { - throw err; - } - } - }); - this.napiModule = undefined; - } - instantiate(data) { - const source = this.onLoad(data); - const then = source.then; - if (typeof then === 'function') { - return source.then((result) => { - this.napiModule = result.napiModule; - return result; - }); - } - this.napiModule = source.napiModule; - return source; - } - handle(e) { - var _a; - super.handle(e); - if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { - const type = e.data.__emnapi__.type; - const payload = e.data.__emnapi__.payload; - try { - if (type === 'async-worker-init') { - this.handleAfterLoad(e, () => { - this.napiModule.initWorker(payload.arg); - }); - } - else if (type === 'async-work-execute') { - this.handleAfterLoad(e, () => { - this.napiModule.executeAsyncWork(payload.work); - }); - } - } - catch (err) { - this.onError(err, type); - } - } - } -} - -const version = "1.8.1"; - -export { MessageHandler, createNapiModule, instantiateNapiModule, instantiateNapiModuleSync, loadNapiModule, loadNapiModuleSync, version }; diff --git a/sdks/nodejs/node_modules/@emnapi/core/index.js b/sdks/nodejs/node_modules/@emnapi/core/index.js deleted file mode 100644 index 11764ed..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/index.js +++ /dev/null @@ -1,5 +0,0 @@ -if (typeof process !== 'undefined' && process.env.NODE_ENV === 'production') { - module.exports = require('./dist/emnapi-core.cjs.min.js') -} else { - module.exports = require('./dist/emnapi-core.cjs.js') -} diff --git a/sdks/nodejs/node_modules/@emnapi/core/package.json b/sdks/nodejs/node_modules/@emnapi/core/package.json deleted file mode 100644 index 590c982..0000000 --- a/sdks/nodejs/node_modules/@emnapi/core/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "@emnapi/core", - "version": "1.8.1", - "description": "emnapi core", - "main": "index.js", - "module": "./dist/emnapi-core.esm-bundler.js", - "types": "./dist/emnapi-core.d.ts", - "sideEffects": false, - "exports": { - ".": { - "types": { - "module": "./dist/emnapi-core.d.ts", - "import": "./dist/emnapi-core.d.mts", - "default": "./dist/emnapi-core.d.ts" - }, - "module": "./dist/emnapi-core.esm-bundler.js", - "import": "./dist/emnapi-core.mjs", - "default": "./index.js" - }, - "./dist/emnapi-core.cjs.min": { - "types": "./dist/emnapi-core.d.ts", - "default": "./dist/emnapi-core.cjs.min.js" - }, - "./dist/emnapi-core.min.mjs": { - "types": "./dist/emnapi-core.d.mts", - "default": "./dist/emnapi-core.min.mjs" - } - }, - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - }, - "scripts": { - "build": "node ./script/build.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/toyobayashi/emnapi.git" - }, - "author": "toyobayashi", - "license": "MIT", - "bugs": { - "url": "https://github.com/toyobayashi/emnapi/issues" - }, - "homepage": "https://github.com/toyobayashi/emnapi#readme", - "publishConfig": { - "access": "public" - } -} diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/LICENSE b/sdks/nodejs/node_modules/@emnapi/runtime/LICENSE deleted file mode 100644 index 05a5944..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021-present Toyobayashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/README.md b/sdks/nodejs/node_modules/@emnapi/runtime/README.md deleted file mode 100644 index c98dddc..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/README.md +++ /dev/null @@ -1 +0,0 @@ -See [https://github.com/toyobayashi/emnapi](https://github.com/toyobayashi/emnapi) diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.cjs.js b/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.cjs.js deleted file mode 100644 index 9b2105c..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +++ /dev/null @@ -1,1354 +0,0 @@ -const externalValue = new WeakMap(); -function isExternal(object) { - return externalValue.has(object); -} -const External = (() => { - function External(value) { - Object.setPrototypeOf(this, null); - externalValue.set(this, value); - } - External.prototype = null; - return External; -})(); -function getExternalValue(external) { - if (!isExternal(external)) { - throw new TypeError('not external'); - } - return externalValue.get(external); -} - -const supportNewFunction = (function () { - let f; - try { - f = new Function(); - } - catch (_) { - return false; - } - return typeof f === 'function'; -})(); -const _global = (function () { - if (typeof globalThis !== 'undefined') - return globalThis; - let g = (function () { return this; })(); - if (!g && supportNewFunction) { - try { - g = new Function('return this')(); - } - catch (_) { } - } - if (!g) { - if (typeof __webpack_public_path__ === 'undefined') { - if (typeof global !== 'undefined') - return global; - } - if (typeof window !== 'undefined') - return window; - if (typeof self !== 'undefined') - return self; - } - return g; -})(); -class TryCatch { - constructor() { - this._exception = undefined; - this._caught = false; - } - isEmpty() { - return !this._caught; - } - hasCaught() { - return this._caught; - } - exception() { - return this._exception; - } - setError(err) { - this._caught = true; - this._exception = err; - } - reset() { - this._caught = false; - this._exception = undefined; - } - extractException() { - const e = this._exception; - this.reset(); - return e; - } -} -const canSetFunctionName = (function () { - var _a; - try { - return Boolean((_a = Object.getOwnPropertyDescriptor(Function.prototype, 'name')) === null || _a === void 0 ? void 0 : _a.configurable); - } - catch (_) { - return false; - } -})(); -const supportReflect = typeof Reflect === 'object'; -const supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); -const supportWeakSymbol = (function () { - try { - const sym = Symbol(); - new WeakRef(sym); - new WeakMap().set(sym, undefined); - } - catch (_) { - return false; - } - return true; -})(); -const supportBigInt = typeof BigInt !== 'undefined'; -function isReferenceType(v) { - return (typeof v === 'object' && v !== null) || typeof v === 'function'; -} -const _require = (function () { - let nativeRequire; - if (typeof __webpack_public_path__ !== 'undefined') { - nativeRequire = (function () { - return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; - })(); - } - else { - nativeRequire = (function () { - return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); - })(); - } - return nativeRequire; -})(); -const _MessageChannel = typeof MessageChannel === 'function' - ? MessageChannel - : (function () { - try { - return _require('worker_threads').MessageChannel; - } - catch (_) { } - return undefined; - })(); -const _setImmediate = typeof setImmediate === 'function' - ? setImmediate - : function (callback) { - if (typeof callback !== 'function') { - throw new TypeError('The "callback" argument must be of type function'); - } - if (_MessageChannel) { - let channel = new _MessageChannel(); - channel.port1.onmessage = function () { - channel.port1.onmessage = null; - channel = undefined; - callback(); - }; - channel.port2.postMessage(null); - } - else { - setTimeout(callback, 0); - } - }; -const _Buffer = typeof Buffer === 'function' - ? Buffer - : (function () { - try { - return _require('buffer').Buffer; - } - catch (_) { } - return undefined; - })(); -const version = "1.8.1"; -const NODE_API_SUPPORTED_VERSION_MIN = 1; -const NODE_API_SUPPORTED_VERSION_MAX = 10; -const NAPI_VERSION_EXPERIMENTAL = 2147483647; -const NODE_API_DEFAULT_MODULE_API_VERSION = 8; - -class Handle { - constructor(id, value) { - this.id = id; - this.value = value; - } - data() { - return getExternalValue(this.value); - } - isNumber() { - return typeof this.value === 'number'; - } - isBigInt() { - return typeof this.value === 'bigint'; - } - isString() { - return typeof this.value === 'string'; - } - isFunction() { - return typeof this.value === 'function'; - } - isExternal() { - return isExternal(this.value); - } - isObject() { - return typeof this.value === 'object' && this.value !== null; - } - isArray() { - return Array.isArray(this.value); - } - isArrayBuffer() { - return (this.value instanceof ArrayBuffer); - } - isTypedArray() { - return (ArrayBuffer.isView(this.value)) && !(this.value instanceof DataView); - } - isBuffer(BufferConstructor) { - if (ArrayBuffer.isView(this.value)) - return true; - BufferConstructor !== null && BufferConstructor !== void 0 ? BufferConstructor : (BufferConstructor = _Buffer); - return typeof BufferConstructor === 'function' && BufferConstructor.isBuffer(this.value); - } - isDataView() { - return (this.value instanceof DataView); - } - isDate() { - return (this.value instanceof Date); - } - isPromise() { - return (this.value instanceof Promise); - } - isBoolean() { - return typeof this.value === 'boolean'; - } - isUndefined() { - return this.value === undefined; - } - isSymbol() { - return typeof this.value === 'symbol'; - } - isNull() { - return this.value === null; - } - dispose() { - this.value = undefined; - } -} -class ConstHandle extends Handle { - constructor(id, value) { - super(id, value); - } - dispose() { } -} -class HandleStore { - constructor() { - this._values = [ - undefined, - HandleStore.UNDEFINED, - HandleStore.NULL, - HandleStore.FALSE, - HandleStore.TRUE, - HandleStore.GLOBAL - ]; - this._next = HandleStore.MIN_ID; - } - push(value) { - let h; - const next = this._next; - const values = this._values; - if (next < values.length) { - h = values[next]; - h.value = value; - } - else { - h = new Handle(next, value); - values[next] = h; - } - this._next++; - return h; - } - erase(start, end) { - this._next = start; - const values = this._values; - for (let i = start; i < end; ++i) { - values[i].dispose(); - } - } - get(id) { - return this._values[id]; - } - swap(a, b) { - const values = this._values; - const h = values[a]; - values[a] = values[b]; - values[a].id = Number(a); - values[b] = h; - h.id = Number(b); - } - dispose() { - this._values.length = HandleStore.MIN_ID; - this._next = HandleStore.MIN_ID; - } -} -HandleStore.UNDEFINED = new ConstHandle(1, undefined); -HandleStore.NULL = new ConstHandle(2, null); -HandleStore.FALSE = new ConstHandle(3, false); -HandleStore.TRUE = new ConstHandle(4, true); -HandleStore.GLOBAL = new ConstHandle(5, _global); -HandleStore.MIN_ID = 6; - -class HandleScope { - constructor(handleStore, id, parentScope, start, end = start) { - this.handleStore = handleStore; - this.id = id; - this.parent = parentScope; - this.child = null; - if (parentScope !== null) - parentScope.child = this; - this.start = start; - this.end = end; - this._escapeCalled = false; - this.callbackInfo = { - thiz: undefined, - data: 0, - args: undefined, - fn: undefined - }; - } - add(value) { - const h = this.handleStore.push(value); - this.end++; - return h; - } - addExternal(data) { - return this.add(new External(data)); - } - dispose() { - if (this._escapeCalled) - this._escapeCalled = false; - if (this.start === this.end) - return; - this.handleStore.erase(this.start, this.end); - } - escape(handle) { - if (this._escapeCalled) - return null; - this._escapeCalled = true; - if (handle < this.start || handle >= this.end) { - return null; - } - this.handleStore.swap(handle, this.start); - const h = this.handleStore.get(this.start); - this.start++; - this.parent.end++; - return h; - } - escapeCalled() { - return this._escapeCalled; - } -} - -class ScopeStore { - constructor() { - this._rootScope = new HandleScope(null, 0, null, 1, HandleStore.MIN_ID); - this.currentScope = this._rootScope; - this._values = [undefined]; - } - get(id) { - return this._values[id]; - } - openScope(handleStore) { - const currentScope = this.currentScope; - let scope = currentScope.child; - if (scope !== null) { - scope.start = scope.end = currentScope.end; - } - else { - const id = currentScope.id + 1; - scope = new HandleScope(handleStore, id, currentScope, currentScope.end); - this._values[id] = scope; - } - this.currentScope = scope; - return scope; - } - closeScope() { - const scope = this.currentScope; - this.currentScope = scope.parent; - scope.dispose(); - } - dispose() { - this.currentScope = this._rootScope; - this._values.length = 1; - } -} - -class RefTracker { - constructor() { - this._next = null; - this._prev = null; - } - dispose() { } - finalize() { } - link(list) { - this._prev = list; - this._next = list._next; - if (this._next !== null) { - this._next._prev = this; - } - list._next = this; - } - unlink() { - if (this._prev !== null) { - this._prev._next = this._next; - } - if (this._next !== null) { - this._next._prev = this._prev; - } - this._prev = null; - this._next = null; - } - static finalizeAll(list) { - while (list._next !== null) { - list._next.finalize(); - } - } -} - -class Finalizer { - constructor(envObject, _finalizeCallback = 0, _finalizeData = 0, _finalizeHint = 0) { - this.envObject = envObject; - this._finalizeCallback = _finalizeCallback; - this._finalizeData = _finalizeData; - this._finalizeHint = _finalizeHint; - this._makeDynCall_vppp = envObject.makeDynCall_vppp; - } - callback() { return this._finalizeCallback; } - data() { return this._finalizeData; } - hint() { return this._finalizeHint; } - resetEnv() { - this.envObject = undefined; - } - resetFinalizer() { - this._finalizeCallback = 0; - this._finalizeData = 0; - this._finalizeHint = 0; - } - callFinalizer() { - const finalize_callback = this._finalizeCallback; - const finalize_data = this._finalizeData; - const finalize_hint = this._finalizeHint; - this.resetFinalizer(); - if (!finalize_callback) - return; - const fini = Number(finalize_callback); - if (!this.envObject) { - this._makeDynCall_vppp(fini)(0, finalize_data, finalize_hint); - } - else { - this.envObject.callFinalizer(fini, finalize_data, finalize_hint); - } - } - dispose() { - this.envObject = undefined; - this._makeDynCall_vppp = undefined; - } -} - -class TrackedFinalizer extends RefTracker { - static create(envObject, finalize_callback, finalize_data, finalize_hint) { - const finalizer = new TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint); - finalizer.link(envObject.finalizing_reflist); - return finalizer; - } - constructor(envObject, finalize_callback, finalize_data, finalize_hint) { - super(); - this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); - } - data() { - return this._finalizer.data(); - } - dispose() { - if (!this._finalizer) - return; - this.unlink(); - this._finalizer.envObject.dequeueFinalizer(this); - this._finalizer.dispose(); - this._finalizer = undefined; - super.dispose(); - } - finalize() { - this.unlink(); - let error; - let caught = false; - try { - this._finalizer.callFinalizer(); - } - catch (err) { - caught = true; - error = err; - } - this.dispose(); - if (caught) { - throw error; - } - } -} - -function throwNodeApiVersionError(moduleName, moduleApiVersion) { - const errorMessage = `${moduleName} requires Node-API version ${moduleApiVersion}, but this version of Node.js only supports version ${NODE_API_SUPPORTED_VERSION_MAX} add-ons.`; - throw new Error(errorMessage); -} -function handleThrow(envObject, value) { - if (envObject.terminatedOrTerminating()) { - return; - } - throw value; -} -class Env { - constructor(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) { - this.ctx = ctx; - this.moduleApiVersion = moduleApiVersion; - this.makeDynCall_vppp = makeDynCall_vppp; - this.makeDynCall_vp = makeDynCall_vp; - this.abort = abort; - this.openHandleScopes = 0; - this.instanceData = null; - this.tryCatch = new TryCatch(); - this.refs = 1; - this.reflist = new RefTracker(); - this.finalizing_reflist = new RefTracker(); - this.pendingFinalizers = []; - this.lastError = { - errorCode: 0, - engineErrorCode: 0, - engineReserved: 0 - }; - this.inGcFinalizer = false; - this._bindingMap = new WeakMap(); - this.id = 0; - } - canCallIntoJs() { - return true; - } - terminatedOrTerminating() { - return !this.canCallIntoJs(); - } - ref() { - this.refs++; - } - unref() { - this.refs--; - if (this.refs === 0) { - this.dispose(); - } - } - ensureHandle(value) { - return this.ctx.ensureHandle(value); - } - ensureHandleId(value) { - return this.ensureHandle(value).id; - } - clearLastError() { - const lastError = this.lastError; - if (lastError.errorCode !== 0) - lastError.errorCode = 0; - if (lastError.engineErrorCode !== 0) - lastError.engineErrorCode = 0; - if (lastError.engineReserved !== 0) - lastError.engineReserved = 0; - return 0; - } - setLastError(error_code, engine_error_code = 0, engine_reserved = 0) { - const lastError = this.lastError; - if (lastError.errorCode !== error_code) - lastError.errorCode = error_code; - if (lastError.engineErrorCode !== engine_error_code) - lastError.engineErrorCode = engine_error_code; - if (lastError.engineReserved !== engine_reserved) - lastError.engineReserved = engine_reserved; - return error_code; - } - getReturnStatus() { - return !this.tryCatch.hasCaught() ? 0 : this.setLastError(10); - } - callIntoModule(fn, handleException = handleThrow) { - const openHandleScopesBefore = this.openHandleScopes; - this.clearLastError(); - const r = fn(this); - if (openHandleScopesBefore !== this.openHandleScopes) { - this.abort('open_handle_scopes != open_handle_scopes_before'); - } - if (this.tryCatch.hasCaught()) { - const err = this.tryCatch.extractException(); - handleException(this, err); - } - return r; - } - invokeFinalizerFromGC(finalizer) { - if (this.moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { - this.enqueueFinalizer(finalizer); - } - else { - const saved = this.inGcFinalizer; - this.inGcFinalizer = true; - try { - finalizer.finalize(); - } - finally { - this.inGcFinalizer = saved; - } - } - } - checkGCAccess() { - if (this.moduleApiVersion === NAPI_VERSION_EXPERIMENTAL && this.inGcFinalizer) { - this.abort('Finalizer is calling a function that may affect GC state.\n' + - 'The finalizers are run directly from GC and must not affect GC ' + - 'state.\n' + - 'Use `node_api_post_finalizer` from inside of the finalizer to work ' + - 'around this issue.\n' + - 'It schedules the call as a new task in the event loop.'); - } - } - enqueueFinalizer(finalizer) { - if (this.pendingFinalizers.indexOf(finalizer) === -1) { - this.pendingFinalizers.push(finalizer); - } - } - dequeueFinalizer(finalizer) { - const index = this.pendingFinalizers.indexOf(finalizer); - if (index !== -1) { - this.pendingFinalizers.splice(index, 1); - } - } - deleteMe() { - RefTracker.finalizeAll(this.finalizing_reflist); - RefTracker.finalizeAll(this.reflist); - this.tryCatch.extractException(); - this.ctx.envStore.remove(this.id); - } - dispose() { - if (this.id === 0) - return; - this.deleteMe(); - this.finalizing_reflist.dispose(); - this.reflist.dispose(); - this.id = 0; - } - initObjectBinding(value) { - const binding = { - wrapped: 0, - tag: null - }; - this._bindingMap.set(value, binding); - return binding; - } - getObjectBinding(value) { - if (this._bindingMap.has(value)) { - return this._bindingMap.get(value); - } - return this.initObjectBinding(value); - } - setInstanceData(data, finalize_cb, finalize_hint) { - if (this.instanceData) { - this.instanceData.dispose(); - } - this.instanceData = TrackedFinalizer.create(this, finalize_cb, data, finalize_hint); - } - getInstanceData() { - return this.instanceData ? this.instanceData.data() : 0; - } -} -class NodeEnv extends Env { - constructor(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - super(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort); - this.filename = filename; - this.nodeBinding = nodeBinding; - this.destructing = false; - this.finalizationScheduled = false; - } - deleteMe() { - this.destructing = true; - this.drainFinalizerQueue(); - super.deleteMe(); - } - canCallIntoJs() { - return super.canCallIntoJs() && this.ctx.canCallIntoJs(); - } - triggerFatalException(err) { - if (this.nodeBinding) { - this.nodeBinding.napi.fatalException(err); - } - else { - if (typeof process === 'object' && process !== null && typeof process._fatalException === 'function') { - const handled = process._fatalException(err); - if (!handled) { - console.error(err); - process.exit(1); - } - } - else { - throw err; - } - } - } - callbackIntoModule(enforceUncaughtExceptionPolicy, fn) { - return this.callIntoModule(fn, (envObject, err) => { - if (envObject.terminatedOrTerminating()) { - return; - } - const hasProcess = typeof process === 'object' && process !== null; - const hasForceFlag = hasProcess ? Boolean(process.execArgv && (process.execArgv.indexOf('--force-node-api-uncaught-exceptions-policy') !== -1)) : false; - if (envObject.moduleApiVersion < 10 && !hasForceFlag && !enforceUncaughtExceptionPolicy) { - const warn = hasProcess && typeof process.emitWarning === 'function' - ? process.emitWarning - : function (warning, type, code) { - if (warning instanceof Error) { - console.warn(warning.toString()); - } - else { - const prefix = code ? `[${code}] ` : ''; - console.warn(`${prefix}${type || 'Warning'}: ${warning}`); - } - }; - warn('Uncaught N-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.', 'DeprecationWarning', 'DEP0168'); - return; - } - envObject.triggerFatalException(err); - }); - } - callFinalizer(cb, data, hint) { - this.callFinalizerInternal(1, cb, data, hint); - } - callFinalizerInternal(forceUncaught, cb, data, hint) { - const f = this.makeDynCall_vppp(cb); - const env = this.id; - const scope = this.ctx.openScope(this); - try { - this.callbackIntoModule(Boolean(forceUncaught), () => { f(env, data, hint); }); - } - finally { - this.ctx.closeScope(this, scope); - } - } - enqueueFinalizer(finalizer) { - super.enqueueFinalizer(finalizer); - if (!this.finalizationScheduled && !this.destructing) { - this.finalizationScheduled = true; - this.ref(); - _setImmediate(() => { - this.finalizationScheduled = false; - this.unref(); - this.drainFinalizerQueue(); - }); - } - } - drainFinalizerQueue() { - while (this.pendingFinalizers.length > 0) { - const refTracker = this.pendingFinalizers.shift(); - refTracker.finalize(); - } - } -} -function newEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - moduleApiVersion = typeof moduleApiVersion !== 'number' ? NODE_API_DEFAULT_MODULE_API_VERSION : moduleApiVersion; - if (moduleApiVersion < NODE_API_DEFAULT_MODULE_API_VERSION) { - moduleApiVersion = NODE_API_DEFAULT_MODULE_API_VERSION; - } - else if (moduleApiVersion > NODE_API_SUPPORTED_VERSION_MAX && moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { - throwNodeApiVersionError(filename, moduleApiVersion); - } - const env = new NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); - ctx.envStore.add(env); - ctx.addCleanupHook(env, () => { env.unref(); }, 0); - return env; -} - -class EmnapiError extends Error { - constructor(message) { - super(message); - const ErrorConstructor = new.target; - const proto = ErrorConstructor.prototype; - if (!(this instanceof EmnapiError)) { - const setPrototypeOf = Object.setPrototypeOf; - if (typeof setPrototypeOf === 'function') { - setPrototypeOf.call(Object, this, proto); - } - else { - this.__proto__ = proto; - } - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(this, ErrorConstructor); - } - } - } -} -Object.defineProperty(EmnapiError.prototype, 'name', { - configurable: true, - writable: true, - value: 'EmnapiError' -}); -class NotSupportWeakRefError extends EmnapiError { - constructor(api, message) { - super(`${api}: The current runtime does not support "FinalizationRegistry" and "WeakRef".${message ? ` ${message}` : ''}`); - } -} -Object.defineProperty(NotSupportWeakRefError.prototype, 'name', { - configurable: true, - writable: true, - value: 'NotSupportWeakRefError' -}); -class NotSupportBufferError extends EmnapiError { - constructor(api, message) { - super(`${api}: The current runtime does not support "Buffer". Consider using buffer polyfill to make sure \`globalThis.Buffer\` is defined.${message ? ` ${message}` : ''}`); - } -} -Object.defineProperty(NotSupportBufferError.prototype, 'name', { - configurable: true, - writable: true, - value: 'NotSupportBufferError' -}); - -class StrongRef { - constructor(value) { - this._value = value; - } - deref() { - return this._value; - } - dispose() { - this._value = undefined; - } -} -class Persistent { - constructor(value) { - this._ref = new StrongRef(value); - } - setWeak(param, callback) { - if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) - return; - const value = this._ref.deref(); - try { - Persistent._registry.register(value, this, this); - const weakRef = new WeakRef(value); - this._ref.dispose(); - this._ref = weakRef; - this._param = param; - this._callback = callback; - } - catch (err) { - if (typeof value === 'symbol') ; - else { - throw err; - } - } - } - clearWeak() { - if (!supportFinalizer || this._ref === undefined) - return; - if (this._ref instanceof WeakRef) { - try { - Persistent._registry.unregister(this); - } - catch (_) { } - this._param = undefined; - this._callback = undefined; - const value = this._ref.deref(); - if (value === undefined) { - this._ref = value; - } - else { - this._ref = new StrongRef(value); - } - } - } - reset() { - if (supportFinalizer) { - try { - Persistent._registry.unregister(this); - } - catch (_) { } - } - this._param = undefined; - this._callback = undefined; - if (this._ref instanceof StrongRef) { - this._ref.dispose(); - } - this._ref = undefined; - } - isEmpty() { - return this._ref === undefined; - } - deref() { - if (this._ref === undefined) - return undefined; - return this._ref.deref(); - } -} -Persistent._registry = supportFinalizer - ? new FinalizationRegistry((value) => { - value._ref = undefined; - const callback = value._callback; - const param = value._param; - value._callback = undefined; - value._param = undefined; - if (typeof callback === 'function') { - callback(param); - } - }) - : undefined; - -exports.ReferenceOwnership = void 0; -(function (ReferenceOwnership) { - ReferenceOwnership[ReferenceOwnership["kRuntime"] = 0] = "kRuntime"; - ReferenceOwnership[ReferenceOwnership["kUserland"] = 1] = "kUserland"; -})(exports.ReferenceOwnership || (exports.ReferenceOwnership = {})); -function canBeHeldWeakly(value) { - return value.isObject() || value.isFunction() || value.isSymbol(); -} -class Reference extends RefTracker { - static weakCallback(ref) { - ref.persistent.reset(); - ref.invokeFinalizerFromGC(); - } - static create(envObject, handle_id, initialRefcount, ownership, _unused1, _unused2, _unused3) { - const ref = new Reference(envObject, handle_id, initialRefcount, ownership); - envObject.ctx.refStore.add(ref); - ref.link(envObject.reflist); - return ref; - } - constructor(envObject, handle_id, initialRefcount, ownership) { - super(); - this.envObject = envObject; - this._refcount = initialRefcount; - this._ownership = ownership; - const handle = envObject.ctx.handleStore.get(handle_id); - this.canBeWeak = canBeHeldWeakly(handle); - this.persistent = new Persistent(handle.value); - this.id = 0; - if (initialRefcount === 0) { - this._setWeak(); - } - } - ref() { - if (this.persistent.isEmpty()) { - return 0; - } - if (++this._refcount === 1 && this.canBeWeak) { - this.persistent.clearWeak(); - } - return this._refcount; - } - unref() { - if (this.persistent.isEmpty() || this._refcount === 0) { - return 0; - } - if (--this._refcount === 0) { - this._setWeak(); - } - return this._refcount; - } - get(envObject = this.envObject) { - if (this.persistent.isEmpty()) { - return 0; - } - const obj = this.persistent.deref(); - const handle = envObject.ensureHandle(obj); - return handle.id; - } - resetFinalizer() { } - data() { return 0; } - refcount() { return this._refcount; } - ownership() { return this._ownership; } - callUserFinalizer() { } - invokeFinalizerFromGC() { - this.finalize(); - } - _setWeak() { - if (this.canBeWeak) { - this.persistent.setWeak(this, Reference.weakCallback); - } - else { - this.persistent.reset(); - } - } - finalize() { - this.persistent.reset(); - const deleteMe = this._ownership === exports.ReferenceOwnership.kRuntime; - this.unlink(); - this.callUserFinalizer(); - if (deleteMe) { - this.dispose(); - } - } - dispose() { - if (this.id === 0) - return; - this.unlink(); - this.persistent.reset(); - this.envObject.ctx.refStore.remove(this.id); - super.dispose(); - this.envObject = undefined; - this.id = 0; - } -} -class ReferenceWithData extends Reference { - static create(envObject, value, initialRefcount, ownership, data) { - const reference = new ReferenceWithData(envObject, value, initialRefcount, ownership, data); - envObject.ctx.refStore.add(reference); - reference.link(envObject.reflist); - return reference; - } - constructor(envObject, value, initialRefcount, ownership, _data) { - super(envObject, value, initialRefcount, ownership); - this._data = _data; - } - data() { - return this._data; - } -} -class ReferenceWithFinalizer extends Reference { - static create(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { - const reference = new ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); - envObject.ctx.refStore.add(reference); - reference.link(envObject.finalizing_reflist); - return reference; - } - constructor(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { - super(envObject, value, initialRefcount, ownership); - this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); - } - resetFinalizer() { - this._finalizer.resetFinalizer(); - } - data() { - return this._finalizer.data(); - } - callUserFinalizer() { - this._finalizer.callFinalizer(); - } - invokeFinalizerFromGC() { - this._finalizer.envObject.invokeFinalizerFromGC(this); - } - dispose() { - if (!this._finalizer) - return; - this._finalizer.envObject.dequeueFinalizer(this); - this._finalizer.dispose(); - super.dispose(); - this._finalizer = undefined; - } -} - -class Deferred { - static create(ctx, value) { - const deferred = new Deferred(ctx, value); - ctx.deferredStore.add(deferred); - return deferred; - } - constructor(ctx, value) { - this.id = 0; - this.ctx = ctx; - this.value = value; - } - resolve(value) { - this.value.resolve(value); - this.dispose(); - } - reject(reason) { - this.value.reject(reason); - this.dispose(); - } - dispose() { - this.ctx.deferredStore.remove(this.id); - this.id = 0; - this.value = null; - this.ctx = null; - } -} - -class Store { - constructor() { - this._values = [undefined]; - this._values.length = 4; - this._size = 1; - this._freeList = []; - } - add(value) { - let id; - if (this._freeList.length) { - id = this._freeList.shift(); - } - else { - id = this._size; - this._size++; - const capacity = this._values.length; - if (id >= capacity) { - this._values.length = capacity + (capacity >> 1) + 16; - } - } - value.id = id; - this._values[id] = value; - } - get(id) { - return this._values[id]; - } - has(id) { - return this._values[id] !== undefined; - } - remove(id) { - const value = this._values[id]; - if (value) { - value.id = 0; - this._values[id] = undefined; - this._freeList.push(Number(id)); - } - } - dispose() { - for (let i = 1; i < this._size; ++i) { - const value = this._values[i]; - value === null || value === void 0 ? void 0 : value.dispose(); - } - this._values = [undefined]; - this._size = 1; - this._freeList = []; - } -} - -class CleanupHookCallback { - constructor(envObject, fn, arg, order) { - this.envObject = envObject; - this.fn = fn; - this.arg = arg; - this.order = order; - } -} -class CleanupQueue { - constructor() { - this._cleanupHooks = []; - this._cleanupHookCounter = 0; - } - empty() { - return this._cleanupHooks.length === 0; - } - add(envObject, fn, arg) { - if (this._cleanupHooks.filter((hook) => (hook.envObject === envObject && hook.fn === fn && hook.arg === arg)).length > 0) { - throw new Error('Can not add same fn and arg twice'); - } - this._cleanupHooks.push(new CleanupHookCallback(envObject, fn, arg, this._cleanupHookCounter++)); - } - remove(envObject, fn, arg) { - for (let i = 0; i < this._cleanupHooks.length; ++i) { - const hook = this._cleanupHooks[i]; - if (hook.envObject === envObject && hook.fn === fn && hook.arg === arg) { - this._cleanupHooks.splice(i, 1); - return; - } - } - } - drain() { - const hooks = this._cleanupHooks.slice(); - hooks.sort((a, b) => (b.order - a.order)); - for (let i = 0; i < hooks.length; ++i) { - const cb = hooks[i]; - if (typeof cb.fn === 'number') { - cb.envObject.makeDynCall_vp(cb.fn)(cb.arg); - } - else { - cb.fn(cb.arg); - } - this._cleanupHooks.splice(this._cleanupHooks.indexOf(cb), 1); - } - } - dispose() { - this._cleanupHooks.length = 0; - this._cleanupHookCounter = 0; - } -} -class NodejsWaitingRequestCounter { - constructor() { - this.refHandle = new _MessageChannel().port1; - this.count = 0; - } - increase() { - if (this.count === 0) { - if (this.refHandle.ref) { - this.refHandle.ref(); - } - } - this.count++; - } - decrease() { - if (this.count === 0) - return; - if (this.count === 1) { - if (this.refHandle.unref) { - this.refHandle.unref(); - } - } - this.count--; - } -} -class Context { - constructor() { - this._isStopping = false; - this._canCallIntoJs = true; - this._suppressDestroy = false; - this.envStore = new Store(); - this.scopeStore = new ScopeStore(); - this.refStore = new Store(); - this.deferredStore = new Store(); - this.handleStore = new HandleStore(); - this.feature = { - supportReflect, - supportFinalizer, - supportWeakSymbol, - supportBigInt, - supportNewFunction, - canSetFunctionName, - setImmediate: _setImmediate, - Buffer: _Buffer, - MessageChannel: _MessageChannel - }; - this.cleanupQueue = new CleanupQueue(); - if (typeof process === 'object' && process !== null && typeof process.once === 'function') { - this.refCounter = new NodejsWaitingRequestCounter(); - process.once('beforeExit', () => { - if (!this._suppressDestroy) { - this.destroy(); - } - }); - } - } - suppressDestroy() { - this._suppressDestroy = true; - } - getRuntimeVersions() { - return { - version, - NODE_API_SUPPORTED_VERSION_MAX, - NAPI_VERSION_EXPERIMENTAL, - NODE_API_DEFAULT_MODULE_API_VERSION - }; - } - createNotSupportWeakRefError(api, message) { - return new NotSupportWeakRefError(api, message); - } - createNotSupportBufferError(api, message) { - return new NotSupportBufferError(api, message); - } - createReference(envObject, handle_id, initialRefcount, ownership) { - return Reference.create(envObject, handle_id, initialRefcount, ownership); - } - createReferenceWithData(envObject, handle_id, initialRefcount, ownership, data) { - return ReferenceWithData.create(envObject, handle_id, initialRefcount, ownership, data); - } - createReferenceWithFinalizer(envObject, handle_id, initialRefcount, ownership, finalize_callback = 0, finalize_data = 0, finalize_hint = 0) { - return ReferenceWithFinalizer.create(envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); - } - createDeferred(value) { - return Deferred.create(this, value); - } - createEnv(filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - return newEnv(this, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); - } - createTrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint) { - return TrackedFinalizer.create(envObject, finalize_callback, finalize_data, finalize_hint); - } - getCurrentScope() { - return this.scopeStore.currentScope; - } - addToCurrentScope(value) { - return this.scopeStore.currentScope.add(value); - } - openScope(envObject) { - const scope = this.scopeStore.openScope(this.handleStore); - if (envObject) - envObject.openHandleScopes++; - return scope; - } - closeScope(envObject, _scope) { - if (envObject && envObject.openHandleScopes === 0) - return; - this.scopeStore.closeScope(); - if (envObject) - envObject.openHandleScopes--; - } - ensureHandle(value) { - switch (value) { - case undefined: return HandleStore.UNDEFINED; - case null: return HandleStore.NULL; - case true: return HandleStore.TRUE; - case false: return HandleStore.FALSE; - case _global: return HandleStore.GLOBAL; - } - return this.addToCurrentScope(value); - } - addCleanupHook(envObject, fn, arg) { - this.cleanupQueue.add(envObject, fn, arg); - } - removeCleanupHook(envObject, fn, arg) { - this.cleanupQueue.remove(envObject, fn, arg); - } - runCleanup() { - while (!this.cleanupQueue.empty()) { - this.cleanupQueue.drain(); - } - } - increaseWaitingRequestCounter() { - var _a; - (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.increase(); - } - decreaseWaitingRequestCounter() { - var _a; - (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.decrease(); - } - setCanCallIntoJs(value) { - this._canCallIntoJs = value; - } - setStopping(value) { - this._isStopping = value; - } - canCallIntoJs() { - return this._canCallIntoJs && !this._isStopping; - } - destroy() { - this.setStopping(true); - this.setCanCallIntoJs(false); - this.runCleanup(); - } -} -let defaultContext; -function createContext() { - return new Context(); -} -function getDefaultContext() { - if (!defaultContext) { - defaultContext = createContext(); - } - return defaultContext; -} - -exports.ConstHandle = ConstHandle; -exports.Context = Context; -exports.Deferred = Deferred; -exports.EmnapiError = EmnapiError; -exports.Env = Env; -exports.External = External; -exports.Finalizer = Finalizer; -exports.Handle = Handle; -exports.HandleScope = HandleScope; -exports.HandleStore = HandleStore; -exports.NAPI_VERSION_EXPERIMENTAL = NAPI_VERSION_EXPERIMENTAL; -exports.NODE_API_DEFAULT_MODULE_API_VERSION = NODE_API_DEFAULT_MODULE_API_VERSION; -exports.NODE_API_SUPPORTED_VERSION_MAX = NODE_API_SUPPORTED_VERSION_MAX; -exports.NODE_API_SUPPORTED_VERSION_MIN = NODE_API_SUPPORTED_VERSION_MIN; -exports.NodeEnv = NodeEnv; -exports.NotSupportBufferError = NotSupportBufferError; -exports.NotSupportWeakRefError = NotSupportWeakRefError; -exports.Persistent = Persistent; -exports.RefTracker = RefTracker; -exports.Reference = Reference; -exports.ReferenceWithData = ReferenceWithData; -exports.ReferenceWithFinalizer = ReferenceWithFinalizer; -exports.ScopeStore = ScopeStore; -exports.Store = Store; -exports.TrackedFinalizer = TrackedFinalizer; -exports.TryCatch = TryCatch; -exports.createContext = createContext; -exports.getDefaultContext = getDefaultContext; -exports.getExternalValue = getExternalValue; -exports.isExternal = isExternal; -exports.isReferenceType = isReferenceType; -exports.version = version; diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts b/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts deleted file mode 100644 index d75787f..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +++ /dev/null @@ -1,665 +0,0 @@ -export declare type Ptr = number | bigint - -export declare interface IBuffer extends Uint8Array {} -export declare interface BufferCtor { - readonly prototype: IBuffer - /** @deprecated */ - new (...args: any[]): IBuffer - from: { - (buffer: ArrayBufferLike): IBuffer - (buffer: ArrayBufferLike, byteOffset: number, length: number): IBuffer - } - alloc: (size: number) => IBuffer - isBuffer: (obj: unknown) => obj is IBuffer -} - -export declare const enum GlobalHandle { - UNDEFINED = 1, - NULL, - FALSE, - TRUE, - GLOBAL -} - -export declare const enum Version { - NODE_API_SUPPORTED_VERSION_MIN = 1, - NODE_API_DEFAULT_MODULE_API_VERSION = 8, - NODE_API_SUPPORTED_VERSION_MAX = 10, - NAPI_VERSION_EXPERIMENTAL = 2147483647 // INT_MAX -} -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export declare type Pointer = number -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export declare type PointerPointer = number -export declare type FunctionPointer any> = Pointer -export declare type Const = T - -export declare type void_p = Pointer -export declare type void_pp = Pointer -export declare type bool = number -export declare type char = number -export declare type char_p = Pointer -export declare type unsigned_char = number -export declare type const_char = Const -export declare type const_char_p = Pointer -export declare type char16_t_p = number -export declare type const_char16_t_p = number - -export declare type short = number -export declare type unsigned_short = number -export declare type int = number -export declare type unsigned_int = number -export declare type long = number -export declare type unsigned_long = number -export declare type long_long = bigint -export declare type unsigned_long_long = bigint -export declare type float = number -export declare type double = number -export declare type long_double = number -export declare type size_t = number - -export declare type int8_t = number -export declare type uint8_t = number -export declare type int16_t = number -export declare type uint16_t = number -export declare type int32_t = number -export declare type uint32_t = number -export declare type int64_t = bigint -export declare type uint64_t = bigint -export declare type napi_env = Pointer - -export declare type napi_value = Pointer -export declare type napi_ref = Pointer -export declare type napi_deferred = Pointer -export declare type napi_handle_scope = Pointer -export declare type napi_escapable_handle_scope = Pointer - -export declare type napi_addon_register_func = FunctionPointer<(env: napi_env, exports: napi_value) => napi_value> - -export declare type napi_callback_info = Pointer -export declare type napi_callback = FunctionPointer<(env: napi_env, info: napi_callback_info) => napi_value> - -export declare interface napi_extended_error_info { - error_message: const_char_p - engine_reserved: void_p - engine_error_code: uint32_t - error_code: napi_status -} - -export declare interface napi_property_descriptor { - // One of utf8name or name should be NULL. - utf8name: const_char_p - name: napi_value - - method: napi_callback - getter: napi_callback - setter: napi_callback - value: napi_value - /* napi_property_attributes */ - attributes: number - data: void_p -} - -export declare type napi_finalize = FunctionPointer<( - env: napi_env, - finalize_data: void_p, - finalize_hint: void_p -) => void> - -export declare interface node_module { - nm_version: int32_t - nm_flags: uint32_t - nm_filename: Pointer - nm_register_func: napi_addon_register_func - nm_modname: Pointer - nm_priv: Pointer - reserved: PointerPointer -} - -export declare interface napi_node_version { - major: uint32_t - minor: uint32_t - patch: uint32_t - release: const_char_p -} - -export declare interface emnapi_emscripten_version { - major: uint32_t - minor: uint32_t - patch: uint32_t -} - -export declare const enum napi_status { - napi_ok, - napi_invalid_arg, - napi_object_expected, - napi_string_expected, - napi_name_expected, - napi_function_expected, - napi_number_expected, - napi_boolean_expected, - napi_array_expected, - napi_generic_failure, - napi_pending_exception, - napi_cancelled, - napi_escape_called_twice, - napi_handle_scope_mismatch, - napi_callback_scope_mismatch, - napi_queue_full, - napi_closing, - napi_bigint_expected, - napi_date_expected, - napi_arraybuffer_expected, - napi_detachable_arraybuffer_expected, - napi_would_deadlock, // unused - napi_no_external_buffers_allowed, - napi_cannot_run_js -} - -export declare const enum napi_property_attributes { - napi_default = 0, - napi_writable = 1 << 0, - napi_enumerable = 1 << 1, - napi_configurable = 1 << 2, - - // Used with napi_define_class to distinguish static properties - // from instance properties. Ignored by napi_define_properties. - napi_static = 1 << 10, - - /// #ifdef NAPI_EXPERIMENTAL - // Default for class methods. - napi_default_method = napi_writable | napi_configurable, - - // Default for object properties, like in JS obj[prop]. - napi_default_jsproperty = napi_writable | napi_enumerable | napi_configurable - /// #endif // NAPI_EXPERIMENTAL -} - -export declare const enum napi_valuetype { - napi_undefined, - napi_null, - napi_boolean, - napi_number, - napi_string, - napi_symbol, - napi_object, - napi_function, - napi_external, - napi_bigint -} - -export declare const enum napi_typedarray_type { - napi_int8_array, - napi_uint8_array, - napi_uint8_clamped_array, - napi_int16_array, - napi_uint16_array, - napi_int32_array, - napi_uint32_array, - napi_float32_array, - napi_float64_array, - napi_bigint64_array, - napi_biguint64_array, - napi_float16_array, -} - -export declare const enum napi_key_collection_mode { - napi_key_include_prototypes, - napi_key_own_only -} - -export declare const enum napi_key_filter { - napi_key_all_properties = 0, - napi_key_writable = 1, - napi_key_enumerable = 1 << 1, - napi_key_configurable = 1 << 2, - napi_key_skip_strings = 1 << 3, - napi_key_skip_symbols = 1 << 4 -} - -export declare const enum napi_key_conversion { - napi_key_keep_numbers, - napi_key_numbers_to_strings -} - -export declare const enum emnapi_memory_view_type { - emnapi_int8_array, - emnapi_uint8_array, - emnapi_uint8_clamped_array, - emnapi_int16_array, - emnapi_uint16_array, - emnapi_int32_array, - emnapi_uint32_array, - emnapi_float32_array, - emnapi_float64_array, - emnapi_bigint64_array, - emnapi_biguint64_array, - emnapi_float16_array, - emnapi_data_view = -1, - emnapi_buffer = -2 -} - -export declare const enum napi_threadsafe_function_call_mode { - napi_tsfn_nonblocking, - napi_tsfn_blocking -} - -export declare const enum napi_threadsafe_function_release_mode { - napi_tsfn_release, - napi_tsfn_abort -} -export declare type CleanupHookCallbackFunction = number | ((arg: number) => void); - -export declare class ConstHandle extends Handle { - constructor(id: number, value: S); - dispose(): void; -} - -export declare class Context { - private _isStopping; - private _canCallIntoJs; - private _suppressDestroy; - envStore: Store; - scopeStore: ScopeStore; - refStore: Store; - deferredStore: Store>; - handleStore: HandleStore; - private readonly refCounter?; - private readonly cleanupQueue; - feature: { - supportReflect: boolean; - supportFinalizer: boolean; - supportWeakSymbol: boolean; - supportBigInt: boolean; - supportNewFunction: boolean; - canSetFunctionName: boolean; - setImmediate: (callback: () => void) => void; - Buffer: BufferCtor | undefined; - MessageChannel: { - new (): MessageChannel; - prototype: MessageChannel; - } | undefined; - }; - constructor(); - /** - * Suppress the destroy on `beforeExit` event in Node.js. - * Call this method if you want to keep the context and - * all associated {@link Env | Env} alive, - * this also means that cleanup hooks will not be called. - * After call this method, you should call - * {@link Context.destroy | `Context.prototype.destroy`} method manually. - */ - suppressDestroy(): void; - getRuntimeVersions(): { - version: string; - NODE_API_SUPPORTED_VERSION_MAX: Version; - NAPI_VERSION_EXPERIMENTAL: Version; - NODE_API_DEFAULT_MODULE_API_VERSION: Version; - }; - createNotSupportWeakRefError(api: string, message: string): NotSupportWeakRefError; - createNotSupportBufferError(api: string, message: string): NotSupportBufferError; - createReference(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership): Reference; - createReferenceWithData(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): Reference; - createReferenceWithFinalizer(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback?: napi_finalize, finalize_data?: void_p, finalize_hint?: void_p): Reference; - createDeferred(value: IDeferrdValue): Deferred; - createEnv(filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any): Env; - createTrackedFinalizer(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; - getCurrentScope(): HandleScope | null; - addToCurrentScope(value: V): Handle; - openScope(envObject?: Env): HandleScope; - closeScope(envObject?: Env, _scope?: HandleScope): void; - ensureHandle(value: S): Handle; - addCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; - removeCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; - runCleanup(): void; - increaseWaitingRequestCounter(): void; - decreaseWaitingRequestCounter(): void; - setCanCallIntoJs(value: boolean): void; - setStopping(value: boolean): void; - canCallIntoJs(): boolean; - /** - * Destroy the context and call cleanup hooks. - * Associated {@link Env | Env} will be destroyed. - */ - destroy(): void; -} - -export declare function createContext(): Context; - -export declare class Deferred implements IStoreValue { - static create(ctx: Context, value: IDeferrdValue): Deferred; - id: number; - ctx: Context; - value: IDeferrdValue; - constructor(ctx: Context, value: IDeferrdValue); - resolve(value: T): void; - reject(reason?: any): void; - dispose(): void; -} - -export declare class EmnapiError extends Error { - constructor(message?: string); -} - -export declare abstract class Env implements IStoreValue { - readonly ctx: Context; - moduleApiVersion: number; - makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void; - makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void; - abort: (msg?: string) => never; - id: number; - openHandleScopes: number; - instanceData: TrackedFinalizer | null; - tryCatch: TryCatch; - refs: number; - reflist: RefTracker; - finalizing_reflist: RefTracker; - pendingFinalizers: RefTracker[]; - lastError: { - errorCode: napi_status; - engineErrorCode: number; - engineReserved: Ptr; - }; - inGcFinalizer: boolean; - constructor(ctx: Context, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never); - /** @virtual */ - canCallIntoJs(): boolean; - terminatedOrTerminating(): boolean; - ref(): void; - unref(): void; - ensureHandle(value: S): Handle; - ensureHandleId(value: any): napi_value; - clearLastError(): napi_status; - setLastError(error_code: napi_status, engine_error_code?: uint32_t, engine_reserved?: void_p): napi_status; - getReturnStatus(): napi_status; - callIntoModule(fn: (env: Env) => T, handleException?: (envObject: Env, value: any) => void): T; - /** @virtual */ - abstract callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; - invokeFinalizerFromGC(finalizer: RefTracker): void; - checkGCAccess(): void; - /** @virtual */ - enqueueFinalizer(finalizer: RefTracker): void; - /** @virtual */ - dequeueFinalizer(finalizer: RefTracker): void; - /** @virtual */ - deleteMe(): void; - dispose(): void; - private readonly _bindingMap; - initObjectBinding(value: S): IReferenceBinding; - getObjectBinding(value: S): IReferenceBinding; - setInstanceData(data: number, finalize_cb: number, finalize_hint: number): void; - getInstanceData(): number; -} - -/** @public */ -declare interface External_2 extends Record { -} - -/** @public */ -declare const External_2: { - new (value: number | bigint): External_2; - prototype: null; -}; -export { External_2 as External } - -export declare class Finalizer { - envObject: Env; - private _finalizeCallback; - private _finalizeData; - private _finalizeHint; - private _makeDynCall_vppp; - constructor(envObject: Env, _finalizeCallback?: napi_finalize, _finalizeData?: void_p, _finalizeHint?: void_p); - callback(): napi_finalize; - data(): void_p; - hint(): void_p; - resetEnv(): void; - resetFinalizer(): void; - callFinalizer(): void; - dispose(): void; -} - -export declare function getDefaultContext(): Context; - -/** @public */ -export declare function getExternalValue(external: External_2): number | bigint; - -export declare class Handle { - id: number; - value: S; - constructor(id: number, value: S); - data(): void_p; - isNumber(): boolean; - isBigInt(): boolean; - isString(): boolean; - isFunction(): boolean; - isExternal(): boolean; - isObject(): boolean; - isArray(): boolean; - isArrayBuffer(): boolean; - isTypedArray(): boolean; - isBuffer(BufferConstructor?: BufferCtor): boolean; - isDataView(): boolean; - isDate(): boolean; - isPromise(): boolean; - isBoolean(): boolean; - isUndefined(): boolean; - isSymbol(): boolean; - isNull(): boolean; - dispose(): void; -} - -export declare class HandleScope { - handleStore: HandleStore; - id: number; - parent: HandleScope | null; - child: HandleScope | null; - start: number; - end: number; - private _escapeCalled; - callbackInfo: ICallbackInfo; - constructor(handleStore: HandleStore, id: number, parentScope: HandleScope | null, start: number, end?: number); - add(value: V): Handle; - addExternal(data: void_p): Handle; - dispose(): void; - escape(handle: number): Handle | null; - escapeCalled(): boolean; -} - -export declare class HandleStore { - static UNDEFINED: ConstHandle; - static NULL: ConstHandle; - static FALSE: ConstHandle; - static TRUE: ConstHandle; - static GLOBAL: ConstHandle; - static MIN_ID: 6; - private readonly _values; - private _next; - push(value: S): Handle; - erase(start: number, end: number): void; - get(id: Ptr): Handle | undefined; - swap(a: number, b: number): void; - dispose(): void; -} - -export declare interface ICallbackInfo { - thiz: any; - data: void_p; - args: ArrayLike; - fn: Function; -} - -export declare interface IDeferrdValue { - resolve: (value: T) => void; - reject: (reason?: any) => void; -} - -export declare interface IReferenceBinding { - wrapped: number; - tag: Uint32Array | null; -} - -/** @public */ -export declare function isExternal(object: unknown): object is External_2; - -export declare function isReferenceType(v: any): v is object; - -export declare interface IStoreValue { - id: number; - dispose(): void; - [x: string]: any; -} - -export declare const NAPI_VERSION_EXPERIMENTAL = Version.NAPI_VERSION_EXPERIMENTAL; - -export declare const NODE_API_DEFAULT_MODULE_API_VERSION = Version.NODE_API_DEFAULT_MODULE_API_VERSION; - -export declare const NODE_API_SUPPORTED_VERSION_MAX = Version.NODE_API_SUPPORTED_VERSION_MAX; - -export declare const NODE_API_SUPPORTED_VERSION_MIN = Version.NODE_API_SUPPORTED_VERSION_MIN; - -export declare class NodeEnv extends Env { - filename: string; - private readonly nodeBinding?; - destructing: boolean; - finalizationScheduled: boolean; - constructor(ctx: Context, filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any); - deleteMe(): void; - canCallIntoJs(): boolean; - triggerFatalException(err: any): void; - callbackIntoModule(enforceUncaughtExceptionPolicy: boolean, fn: (env: Env) => T): T; - callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; - callFinalizerInternal(forceUncaught: int, cb: napi_finalize, data: void_p, hint: void_p): void; - enqueueFinalizer(finalizer: RefTracker): void; - drainFinalizerQueue(): void; -} - -export declare class NotSupportBufferError extends EmnapiError { - constructor(api: string, message: string); -} - -export declare class NotSupportWeakRefError extends EmnapiError { - constructor(api: string, message: string); -} - -export declare class Persistent { - private _ref; - private _param; - private _callback; - private static readonly _registry; - constructor(value: T); - setWeak

(param: P, callback: (param: P) => void): void; - clearWeak(): void; - reset(): void; - isEmpty(): boolean; - deref(): T | undefined; -} - -export declare class Reference extends RefTracker implements IStoreValue { - private static weakCallback; - id: number; - envObject: Env; - private readonly canBeWeak; - private _refcount; - private readonly _ownership; - persistent: Persistent; - static create(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, _unused1?: void_p, _unused2?: void_p, _unused3?: void_p): Reference; - protected constructor(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership); - ref(): number; - unref(): number; - get(envObject?: Env): napi_value; - /** @virtual */ - resetFinalizer(): void; - /** @virtual */ - data(): void_p; - refcount(): number; - ownership(): ReferenceOwnership; - /** @virtual */ - protected callUserFinalizer(): void; - /** @virtual */ - protected invokeFinalizerFromGC(): void; - private _setWeak; - finalize(): void; - dispose(): void; -} - -export declare enum ReferenceOwnership { - kRuntime = 0, - kUserland = 1 -} - -export declare class ReferenceWithData extends Reference { - private readonly _data; - static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): ReferenceWithData; - private constructor(); - data(): void_p; -} - -export declare class ReferenceWithFinalizer extends Reference { - private _finalizer; - static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): ReferenceWithFinalizer; - private constructor(); - resetFinalizer(): void; - data(): void_p; - protected callUserFinalizer(): void; - protected invokeFinalizerFromGC(): void; - dispose(): void; -} - -export declare class RefTracker { - /** @virtual */ - dispose(): void; - /** @virtual */ - finalize(): void; - private _next; - private _prev; - link(list: RefTracker): void; - unlink(): void; - static finalizeAll(list: RefTracker): void; -} - -export declare class ScopeStore { - private readonly _rootScope; - currentScope: HandleScope; - private readonly _values; - constructor(); - get(id: number): HandleScope | undefined; - openScope(handleStore: HandleStore): HandleScope; - closeScope(): void; - dispose(): void; -} - -export declare class Store { - protected _values: Array; - private _freeList; - private _size; - constructor(); - add(value: V): void; - get(id: Ptr): V | undefined; - has(id: Ptr): boolean; - remove(id: Ptr): void; - dispose(): void; -} - -export declare class TrackedFinalizer extends RefTracker { - private _finalizer; - static create(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; - private constructor(); - data(): void_p; - dispose(): void; - finalize(): void; -} - -export declare class TryCatch { - private _exception; - private _caught; - isEmpty(): boolean; - hasCaught(): boolean; - exception(): any; - setError(err: any): void; - reset(): void; - extractException(): any; -} - -export declare const version: string; - -export { } diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js b/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js deleted file mode 100644 index a79279c..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +++ /dev/null @@ -1 +0,0 @@ -const e=new WeakMap;function t(t){return e.has(t)}const i=(()=>{function t(t){Object.setPrototypeOf(this,null),e.set(this,t)}return t.prototype=null,t})();function s(i){if(!t(i))throw new TypeError("not external");return e.get(i)}const n=function(){let e;try{e=new Function}catch(e){return!1}return"function"==typeof e}(),r=function(){if("undefined"!=typeof globalThis)return globalThis;let e=function(){return this}();if(!e&&n)try{e=new Function("return this")()}catch(e){}if(!e){if("undefined"==typeof __webpack_public_path__&&"undefined"!=typeof global)return global;if("undefined"!=typeof window)return window;if("undefined"!=typeof self)return self}return e}();class o{constructor(){this._exception=void 0,this._caught=!1}isEmpty(){return!this._caught}hasCaught(){return this._caught}exception(){return this._exception}setError(e){this._caught=!0,this._exception=e}reset(){this._caught=!1,this._exception=void 0}extractException(){const e=this._exception;return this.reset(),e}}const a=function(){var e;try{return Boolean(null===(e=Object.getOwnPropertyDescriptor(Function.prototype,"name"))||void 0===e?void 0:e.configurable)}catch(e){return!1}}(),l="object"==typeof Reflect,c="undefined"!=typeof FinalizationRegistry&&"undefined"!=typeof WeakRef,h=function(){try{const e=Symbol();new WeakRef(e),(new WeakMap).set(e,void 0)}catch(e){return!1}return!0}(),u="undefined"!=typeof BigInt;const p=function(){let e;return e="undefined"!=typeof __webpack_public_path__||"undefined"!=typeof __webpack_public_path__?"undefined"!=typeof __non_webpack_require__?__non_webpack_require__:void 0:"undefined"!=typeof require?require:void 0,e}(),f="function"==typeof MessageChannel?MessageChannel:function(){try{return p("worker_threads").MessageChannel}catch(e){}}(),d="function"==typeof setImmediate?setImmediate:function(e){if("function"!=typeof e)throw new TypeError('The "callback" argument must be of type function');if(f){let t=new f;t.port1.onmessage=function(){t.port1.onmessage=null,t=void 0,e()},t.port2.postMessage(null)}else setTimeout(e,0)},_="function"==typeof Buffer?Buffer:function(){try{return p("buffer").Buffer}catch(e){}}(),v="1.8.1",g=2147483647;class y{constructor(e,t){this.id=e,this.value=t}data(){return s(this.value)}isNumber(){return"number"==typeof this.value}isBigInt(){return"bigint"==typeof this.value}isString(){return"string"==typeof this.value}isFunction(){return"function"==typeof this.value}isExternal(){return t(this.value)}isObject(){return"object"==typeof this.value&&null!==this.value}isArray(){return Array.isArray(this.value)}isArrayBuffer(){return this.value instanceof ArrayBuffer}isTypedArray(){return ArrayBuffer.isView(this.value)&&!(this.value instanceof DataView)}isBuffer(e){return!!ArrayBuffer.isView(this.value)||(null!=e||(e=_),"function"==typeof e&&e.isBuffer(this.value))}isDataView(){return this.value instanceof DataView}isDate(){return this.value instanceof Date}isPromise(){return this.value instanceof Promise}isBoolean(){return"boolean"==typeof this.value}isUndefined(){return void 0===this.value}isSymbol(){return"symbol"==typeof this.value}isNull(){return null===this.value}dispose(){this.value=void 0}}class x extends y{constructor(e,t){super(e,t)}dispose(){}}class z{constructor(){this._values=[void 0,z.UNDEFINED,z.NULL,z.FALSE,z.TRUE,z.GLOBAL],this._next=z.MIN_ID}push(e){let t;const i=this._next,s=this._values;return i=this.end)return null;this.handleStore.swap(e,this.start);const t=this.handleStore.get(this.start);return this.start++,this.parent.end++,t}escapeCalled(){return this._escapeCalled}}class b{constructor(){this._rootScope=new k(null,0,null,1,z.MIN_ID),this.currentScope=this._rootScope,this._values=[void 0]}get(e){return this._values[e]}openScope(e){const t=this.currentScope;let i=t.child;if(null!==i)i.start=i.end=t.end;else{const s=t.id+1;i=new k(e,s,t,t.end),this._values[s]=i}return this.currentScope=i,i}closeScope(){const e=this.currentScope;this.currentScope=e.parent,e.dispose()}dispose(){this.currentScope=this._rootScope,this._values.length=1}}class w{constructor(){this._next=null,this._prev=null}dispose(){}finalize(){}link(e){this._prev=e,this._next=e._next,null!==this._next&&(this._next._prev=this),e._next=this}unlink(){null!==this._prev&&(this._prev._next=this._next),null!==this._next&&(this._next._prev=this._prev),this._prev=null,this._next=null}static finalizeAll(e){for(;null!==e._next;)e._next.finalize()}}class S{constructor(e,t=0,i=0,s=0){this.envObject=e,this._finalizeCallback=t,this._finalizeData=i,this._finalizeHint=s,this._makeDynCall_vppp=e.makeDynCall_vppp}callback(){return this._finalizeCallback}data(){return this._finalizeData}hint(){return this._finalizeHint}resetEnv(){this.envObject=void 0}resetFinalizer(){this._finalizeCallback=0,this._finalizeData=0,this._finalizeHint=0}callFinalizer(){const e=this._finalizeCallback,t=this._finalizeData,i=this._finalizeHint;if(this.resetFinalizer(),!e)return;const s=Number(e);this.envObject?this.envObject.callFinalizer(s,t,i):this._makeDynCall_vppp(s)(0,t,i)}dispose(){this.envObject=void 0,this._makeDynCall_vppp=void 0}}class E extends w{static create(e,t,i,s){const n=new E(e,t,i,s);return n.link(e.finalizing_reflist),n}constructor(e,t,i,s){super(),this._finalizer=new S(e,t,i,s)}data(){return this._finalizer.data()}dispose(){this._finalizer&&(this.unlink(),this._finalizer.envObject.dequeueFinalizer(this),this._finalizer.dispose(),this._finalizer=void 0,super.dispose())}finalize(){let e;this.unlink();let t=!1;try{this._finalizer.callFinalizer()}catch(i){t=!0,e=i}if(this.dispose(),t)throw e}}function m(e,t){if(!e.terminatedOrTerminating())throw t}class C{constructor(e,t,i,s,n){this.ctx=e,this.moduleApiVersion=t,this.makeDynCall_vppp=i,this.makeDynCall_vp=s,this.abort=n,this.openHandleScopes=0,this.instanceData=null,this.tryCatch=new o,this.refs=1,this.reflist=new w,this.finalizing_reflist=new w,this.pendingFinalizers=[],this.lastError={errorCode:0,engineErrorCode:0,engineReserved:0},this.inGcFinalizer=!1,this._bindingMap=new WeakMap,this.id=0}canCallIntoJs(){return!0}terminatedOrTerminating(){return!this.canCallIntoJs()}ref(){this.refs++}unref(){this.refs--,0===this.refs&&this.dispose()}ensureHandle(e){return this.ctx.ensureHandle(e)}ensureHandleId(e){return this.ensureHandle(e).id}clearLastError(){const e=this.lastError;return 0!==e.errorCode&&(e.errorCode=0),0!==e.engineErrorCode&&(e.engineErrorCode=0),0!==e.engineReserved&&(e.engineReserved=0),0}setLastError(e,t=0,i=0){const s=this.lastError;return s.errorCode!==e&&(s.errorCode=e),s.engineErrorCode!==t&&(s.engineErrorCode=t),s.engineReserved!==i&&(s.engineReserved=i),e}getReturnStatus(){return this.tryCatch.hasCaught()?this.setLastError(10):0}callIntoModule(e,t=m){const i=this.openHandleScopes;this.clearLastError();const s=e(this);if(i!==this.openHandleScopes&&this.abort("open_handle_scopes != open_handle_scopes_before"),this.tryCatch.hasCaught()){t(this,this.tryCatch.extractException())}return s}invokeFinalizerFromGC(e){if(this.moduleApiVersion!==g)this.enqueueFinalizer(e);else{const t=this.inGcFinalizer;this.inGcFinalizer=!0;try{e.finalize()}finally{this.inGcFinalizer=t}}}checkGCAccess(){this.moduleApiVersion===g&&this.inGcFinalizer&&this.abort("Finalizer is calling a function that may affect GC state.\nThe finalizers are run directly from GC and must not affect GC state.\nUse `node_api_post_finalizer` from inside of the finalizer to work around this issue.\nIt schedules the call as a new task in the event loop.")}enqueueFinalizer(e){-1===this.pendingFinalizers.indexOf(e)&&this.pendingFinalizers.push(e)}dequeueFinalizer(e){const t=this.pendingFinalizers.indexOf(e);-1!==t&&this.pendingFinalizers.splice(t,1)}deleteMe(){w.finalizeAll(this.finalizing_reflist),w.finalizeAll(this.reflist),this.tryCatch.extractException(),this.ctx.envStore.remove(this.id)}dispose(){0!==this.id&&(this.deleteMe(),this.finalizing_reflist.dispose(),this.reflist.dispose(),this.id=0)}initObjectBinding(e){const t={wrapped:0,tag:null};return this._bindingMap.set(e,t),t}getObjectBinding(e){return this._bindingMap.has(e)?this._bindingMap.get(e):this.initObjectBinding(e)}setInstanceData(e,t,i){this.instanceData&&this.instanceData.dispose(),this.instanceData=E.create(this,t,e,i)}getInstanceData(){return this.instanceData?this.instanceData.data():0}}class F extends C{constructor(e,t,i,s,n,r,o){super(e,i,s,n,r),this.filename=t,this.nodeBinding=o,this.destructing=!1,this.finalizationScheduled=!1}deleteMe(){this.destructing=!0,this.drainFinalizerQueue(),super.deleteMe()}canCallIntoJs(){return super.canCallIntoJs()&&this.ctx.canCallIntoJs()}triggerFatalException(e){if(this.nodeBinding)this.nodeBinding.napi.fatalException(e);else{if("object"!=typeof process||null===process||"function"!=typeof process._fatalException)throw e;process._fatalException(e)||(console.error(e),process.exit(1))}}callbackIntoModule(e,t){return this.callIntoModule(t,(t,i)=>{if(t.terminatedOrTerminating())return;const s="object"==typeof process&&null!==process,n=!!s&&Boolean(process.execArgv&&-1!==process.execArgv.indexOf("--force-node-api-uncaught-exceptions-policy"));if(t.moduleApiVersion<10&&!n&&!e){return void(s&&"function"==typeof process.emitWarning?process.emitWarning:function(e,t,i){if(e instanceof Error)console.warn(e.toString());else{const s=i?`[${i}] `:"";console.warn(`${s}${t||"Warning"}: ${e}`)}})("Uncaught N-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.","DeprecationWarning","DEP0168")}t.triggerFatalException(i)})}callFinalizer(e,t,i){this.callFinalizerInternal(1,e,t,i)}callFinalizerInternal(e,t,i,s){const n=this.makeDynCall_vppp(t),r=this.id,o=this.ctx.openScope(this);try{this.callbackIntoModule(Boolean(e),()=>{n(r,i,s)})}finally{this.ctx.closeScope(this,o)}}enqueueFinalizer(e){super.enqueueFinalizer(e),this.finalizationScheduled||this.destructing||(this.finalizationScheduled=!0,this.ref(),d(()=>{this.finalizationScheduled=!1,this.unref(),this.drainFinalizerQueue()}))}drainFinalizerQueue(){for(;this.pendingFinalizers.length>0;){this.pendingFinalizers.shift().finalize()}}}function I(e,t,i,s,n,r,o){(i="number"!=typeof i?8:i)<8?i=8:i>10&&i!==g&&function(e,t){throw new Error(`${e} requires Node-API version ${t}, but this version of Node.js only supports version 10 add-ons.`)}(t,i);const a=new F(e,t,i,s,n,r,o);return e.envStore.add(a),e.addCleanupHook(a,()=>{a.unref()},0),a}class O extends Error{constructor(e){super(e);const t=new.target,i=t.prototype;if(!(this instanceof O)){const e=Object.setPrototypeOf;"function"==typeof e?e.call(Object,this,i):this.__proto__=i,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t)}}}Object.defineProperty(O.prototype,"name",{configurable:!0,writable:!0,value:"EmnapiError"});class D extends O{constructor(e,t){super(`${e}: The current runtime does not support "FinalizationRegistry" and "WeakRef".${t?` ${t}`:""}`)}}Object.defineProperty(D.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportWeakRefError"});class R extends O{constructor(e,t){super(`${e}: The current runtime does not support "Buffer". Consider using buffer polyfill to make sure \`globalThis.Buffer\` is defined.${t?` ${t}`:""}`)}}Object.defineProperty(R.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportBufferError"});class N{constructor(e){this._value=e}deref(){return this._value}dispose(){this._value=void 0}}class H{constructor(e){this._ref=new N(e)}setWeak(e,t){if(!c||void 0===this._ref||this._ref instanceof WeakRef)return;const i=this._ref.deref();try{H._registry.register(i,this,this);const s=new WeakRef(i);this._ref.dispose(),this._ref=s,this._param=e,this._callback=t}catch(e){if("symbol"!=typeof i)throw e}}clearWeak(){if(c&&void 0!==this._ref&&this._ref instanceof WeakRef){try{H._registry.unregister(this)}catch(e){}this._param=void 0,this._callback=void 0;const e=this._ref.deref();this._ref=void 0===e?e:new N(e)}}reset(){if(c)try{H._registry.unregister(this)}catch(e){}this._param=void 0,this._callback=void 0,this._ref instanceof N&&this._ref.dispose(),this._ref=void 0}isEmpty(){return void 0===this._ref}deref(){if(void 0!==this._ref)return this._ref.deref()}}var A;H._registry=c?new FinalizationRegistry(e=>{e._ref=void 0;const t=e._callback,i=e._param;e._callback=void 0,e._param=void 0,"function"==typeof t&&t(i)}):void 0,exports.ReferenceOwnership=void 0,(A=exports.ReferenceOwnership||(exports.ReferenceOwnership={}))[A.kRuntime=0]="kRuntime",A[A.kUserland=1]="kUserland";class j extends w{static weakCallback(e){e.persistent.reset(),e.invokeFinalizerFromGC()}static create(e,t,i,s,n,r,o){const a=new j(e,t,i,s);return e.ctx.refStore.add(a),a.link(e.reflist),a}constructor(e,t,i,s){super(),this.envObject=e,this._refcount=i,this._ownership=s;const n=e.ctx.handleStore.get(t);var r;this.canBeWeak=(r=n).isObject()||r.isFunction()||r.isSymbol(),this.persistent=new H(n.value),this.id=0,0===i&&this._setWeak()}ref(){return this.persistent.isEmpty()?0:(1===++this._refcount&&this.canBeWeak&&this.persistent.clearWeak(),this._refcount)}unref(){return this.persistent.isEmpty()||0===this._refcount?0:(0===--this._refcount&&this._setWeak(),this._refcount)}get(e=this.envObject){if(this.persistent.isEmpty())return 0;const t=this.persistent.deref();return e.ensureHandle(t).id}resetFinalizer(){}data(){return 0}refcount(){return this._refcount}ownership(){return this._ownership}callUserFinalizer(){}invokeFinalizerFromGC(){this.finalize()}_setWeak(){this.canBeWeak?this.persistent.setWeak(this,j.weakCallback):this.persistent.reset()}finalize(){this.persistent.reset();const e=this._ownership===exports.ReferenceOwnership.kRuntime;this.unlink(),this.callUserFinalizer(),e&&this.dispose()}dispose(){0!==this.id&&(this.unlink(),this.persistent.reset(),this.envObject.ctx.refStore.remove(this.id),super.dispose(),this.envObject=void 0,this.id=0)}}class B extends j{static create(e,t,i,s,n){const r=new B(e,t,i,s,n);return e.ctx.refStore.add(r),r.link(e.reflist),r}constructor(e,t,i,s,n){super(e,t,i,s),this._data=n}data(){return this._data}}class T extends j{static create(e,t,i,s,n,r,o){const a=new T(e,t,i,s,n,r,o);return e.ctx.refStore.add(a),a.link(e.finalizing_reflist),a}constructor(e,t,i,s,n,r,o){super(e,t,i,s),this._finalizer=new S(e,n,r,o)}resetFinalizer(){this._finalizer.resetFinalizer()}data(){return this._finalizer.data()}callUserFinalizer(){this._finalizer.callFinalizer()}invokeFinalizerFromGC(){this._finalizer.envObject.invokeFinalizerFromGC(this)}dispose(){this._finalizer&&(this._finalizer.envObject.dequeueFinalizer(this),this._finalizer.dispose(),super.dispose(),this._finalizer=void 0)}}class W{static create(e,t){const i=new W(e,t);return e.deferredStore.add(i),i}constructor(e,t){this.id=0,this.ctx=e,this.value=t}resolve(e){this.value.resolve(e),this.dispose()}reject(e){this.value.reject(e),this.dispose()}dispose(){this.ctx.deferredStore.remove(this.id),this.id=0,this.value=null,this.ctx=null}}class M{constructor(){this._values=[void 0],this._values.length=4,this._size=1,this._freeList=[]}add(e){let t;if(this._freeList.length)t=this._freeList.shift();else{t=this._size,this._size++;const e=this._values.length;t>=e&&(this._values.length=e+(e>>1)+16)}e.id=t,this._values[t]=e}get(e){return this._values[e]}has(e){return void 0!==this._values[e]}remove(e){const t=this._values[e];t&&(t.id=0,this._values[e]=void 0,this._freeList.push(Number(e)))}dispose(){for(let e=1;es.envObject===e&&s.fn===t&&s.arg===i).length>0)throw new Error("Can not add same fn and arg twice");this._cleanupHooks.push(new L(e,t,i,this._cleanupHookCounter++))}remove(e,t,i){for(let s=0;st.order-e.order);for(let t=0;t{this._suppressDestroy||this.destroy()}))}suppressDestroy(){this._suppressDestroy=!0}getRuntimeVersions(){return{version:v,NODE_API_SUPPORTED_VERSION_MAX:10,NAPI_VERSION_EXPERIMENTAL:g,NODE_API_DEFAULT_MODULE_API_VERSION:8}}createNotSupportWeakRefError(e,t){return new D(e,t)}createNotSupportBufferError(e,t){return new R(e,t)}createReference(e,t,i,s){return j.create(e,t,i,s)}createReferenceWithData(e,t,i,s,n){return B.create(e,t,i,s,n)}createReferenceWithFinalizer(e,t,i,s,n=0,r=0,o=0){return T.create(e,t,i,s,n,r,o)}createDeferred(e){return W.create(this,e)}createEnv(e,t,i,s,n,r){return I(this,e,t,i,s,n,r)}createTrackedFinalizer(e,t,i,s){return E.create(e,t,i,s)}getCurrentScope(){return this.scopeStore.currentScope}addToCurrentScope(e){return this.scopeStore.currentScope.add(e)}openScope(e){const t=this.scopeStore.openScope(this.handleStore);return e&&e.openHandleScopes++,t}closeScope(e,t){e&&0===e.openHandleScopes||(this.scopeStore.closeScope(),e&&e.openHandleScopes--)}ensureHandle(e){switch(e){case void 0:return z.UNDEFINED;case null:return z.NULL;case!0:return z.TRUE;case!1:return z.FALSE;case r:return z.GLOBAL}return this.addToCurrentScope(e)}addCleanupHook(e,t,i){this.cleanupQueue.add(e,t,i)}removeCleanupHook(e,t,i){this.cleanupQueue.remove(e,t,i)}runCleanup(){for(;!this.cleanupQueue.empty();)this.cleanupQueue.drain()}increaseWaitingRequestCounter(){var e;null===(e=this.refCounter)||void 0===e||e.increase()}decreaseWaitingRequestCounter(){var e;null===(e=this.refCounter)||void 0===e||e.decrease()}setCanCallIntoJs(e){this._canCallIntoJs=e}setStopping(e){this._isStopping=e}canCallIntoJs(){return this._canCallIntoJs&&!this._isStopping}destroy(){this.setStopping(!0),this.setCanCallIntoJs(!1),this.runCleanup()}}let G;function q(){return new V}exports.ConstHandle=x,exports.Context=V,exports.Deferred=W,exports.EmnapiError=O,exports.Env=C,exports.External=i,exports.Finalizer=S,exports.Handle=y,exports.HandleScope=k,exports.HandleStore=z,exports.NAPI_VERSION_EXPERIMENTAL=g,exports.NODE_API_DEFAULT_MODULE_API_VERSION=8,exports.NODE_API_SUPPORTED_VERSION_MAX=10,exports.NODE_API_SUPPORTED_VERSION_MIN=1,exports.NodeEnv=F,exports.NotSupportBufferError=R,exports.NotSupportWeakRefError=D,exports.Persistent=H,exports.RefTracker=w,exports.Reference=j,exports.ReferenceWithData=B,exports.ReferenceWithFinalizer=T,exports.ScopeStore=b,exports.Store=M,exports.TrackedFinalizer=E,exports.TryCatch=o,exports.createContext=q,exports.getDefaultContext=function(){return G||(G=q()),G},exports.getExternalValue=s,exports.isExternal=t,exports.isReferenceType=function(e){return"object"==typeof e&&null!==e||"function"==typeof e},exports.version=v; diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.d.mts b/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.d.mts deleted file mode 100644 index d75787f..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.d.mts +++ /dev/null @@ -1,665 +0,0 @@ -export declare type Ptr = number | bigint - -export declare interface IBuffer extends Uint8Array {} -export declare interface BufferCtor { - readonly prototype: IBuffer - /** @deprecated */ - new (...args: any[]): IBuffer - from: { - (buffer: ArrayBufferLike): IBuffer - (buffer: ArrayBufferLike, byteOffset: number, length: number): IBuffer - } - alloc: (size: number) => IBuffer - isBuffer: (obj: unknown) => obj is IBuffer -} - -export declare const enum GlobalHandle { - UNDEFINED = 1, - NULL, - FALSE, - TRUE, - GLOBAL -} - -export declare const enum Version { - NODE_API_SUPPORTED_VERSION_MIN = 1, - NODE_API_DEFAULT_MODULE_API_VERSION = 8, - NODE_API_SUPPORTED_VERSION_MAX = 10, - NAPI_VERSION_EXPERIMENTAL = 2147483647 // INT_MAX -} -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export declare type Pointer = number -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export declare type PointerPointer = number -export declare type FunctionPointer any> = Pointer -export declare type Const = T - -export declare type void_p = Pointer -export declare type void_pp = Pointer -export declare type bool = number -export declare type char = number -export declare type char_p = Pointer -export declare type unsigned_char = number -export declare type const_char = Const -export declare type const_char_p = Pointer -export declare type char16_t_p = number -export declare type const_char16_t_p = number - -export declare type short = number -export declare type unsigned_short = number -export declare type int = number -export declare type unsigned_int = number -export declare type long = number -export declare type unsigned_long = number -export declare type long_long = bigint -export declare type unsigned_long_long = bigint -export declare type float = number -export declare type double = number -export declare type long_double = number -export declare type size_t = number - -export declare type int8_t = number -export declare type uint8_t = number -export declare type int16_t = number -export declare type uint16_t = number -export declare type int32_t = number -export declare type uint32_t = number -export declare type int64_t = bigint -export declare type uint64_t = bigint -export declare type napi_env = Pointer - -export declare type napi_value = Pointer -export declare type napi_ref = Pointer -export declare type napi_deferred = Pointer -export declare type napi_handle_scope = Pointer -export declare type napi_escapable_handle_scope = Pointer - -export declare type napi_addon_register_func = FunctionPointer<(env: napi_env, exports: napi_value) => napi_value> - -export declare type napi_callback_info = Pointer -export declare type napi_callback = FunctionPointer<(env: napi_env, info: napi_callback_info) => napi_value> - -export declare interface napi_extended_error_info { - error_message: const_char_p - engine_reserved: void_p - engine_error_code: uint32_t - error_code: napi_status -} - -export declare interface napi_property_descriptor { - // One of utf8name or name should be NULL. - utf8name: const_char_p - name: napi_value - - method: napi_callback - getter: napi_callback - setter: napi_callback - value: napi_value - /* napi_property_attributes */ - attributes: number - data: void_p -} - -export declare type napi_finalize = FunctionPointer<( - env: napi_env, - finalize_data: void_p, - finalize_hint: void_p -) => void> - -export declare interface node_module { - nm_version: int32_t - nm_flags: uint32_t - nm_filename: Pointer - nm_register_func: napi_addon_register_func - nm_modname: Pointer - nm_priv: Pointer - reserved: PointerPointer -} - -export declare interface napi_node_version { - major: uint32_t - minor: uint32_t - patch: uint32_t - release: const_char_p -} - -export declare interface emnapi_emscripten_version { - major: uint32_t - minor: uint32_t - patch: uint32_t -} - -export declare const enum napi_status { - napi_ok, - napi_invalid_arg, - napi_object_expected, - napi_string_expected, - napi_name_expected, - napi_function_expected, - napi_number_expected, - napi_boolean_expected, - napi_array_expected, - napi_generic_failure, - napi_pending_exception, - napi_cancelled, - napi_escape_called_twice, - napi_handle_scope_mismatch, - napi_callback_scope_mismatch, - napi_queue_full, - napi_closing, - napi_bigint_expected, - napi_date_expected, - napi_arraybuffer_expected, - napi_detachable_arraybuffer_expected, - napi_would_deadlock, // unused - napi_no_external_buffers_allowed, - napi_cannot_run_js -} - -export declare const enum napi_property_attributes { - napi_default = 0, - napi_writable = 1 << 0, - napi_enumerable = 1 << 1, - napi_configurable = 1 << 2, - - // Used with napi_define_class to distinguish static properties - // from instance properties. Ignored by napi_define_properties. - napi_static = 1 << 10, - - /// #ifdef NAPI_EXPERIMENTAL - // Default for class methods. - napi_default_method = napi_writable | napi_configurable, - - // Default for object properties, like in JS obj[prop]. - napi_default_jsproperty = napi_writable | napi_enumerable | napi_configurable - /// #endif // NAPI_EXPERIMENTAL -} - -export declare const enum napi_valuetype { - napi_undefined, - napi_null, - napi_boolean, - napi_number, - napi_string, - napi_symbol, - napi_object, - napi_function, - napi_external, - napi_bigint -} - -export declare const enum napi_typedarray_type { - napi_int8_array, - napi_uint8_array, - napi_uint8_clamped_array, - napi_int16_array, - napi_uint16_array, - napi_int32_array, - napi_uint32_array, - napi_float32_array, - napi_float64_array, - napi_bigint64_array, - napi_biguint64_array, - napi_float16_array, -} - -export declare const enum napi_key_collection_mode { - napi_key_include_prototypes, - napi_key_own_only -} - -export declare const enum napi_key_filter { - napi_key_all_properties = 0, - napi_key_writable = 1, - napi_key_enumerable = 1 << 1, - napi_key_configurable = 1 << 2, - napi_key_skip_strings = 1 << 3, - napi_key_skip_symbols = 1 << 4 -} - -export declare const enum napi_key_conversion { - napi_key_keep_numbers, - napi_key_numbers_to_strings -} - -export declare const enum emnapi_memory_view_type { - emnapi_int8_array, - emnapi_uint8_array, - emnapi_uint8_clamped_array, - emnapi_int16_array, - emnapi_uint16_array, - emnapi_int32_array, - emnapi_uint32_array, - emnapi_float32_array, - emnapi_float64_array, - emnapi_bigint64_array, - emnapi_biguint64_array, - emnapi_float16_array, - emnapi_data_view = -1, - emnapi_buffer = -2 -} - -export declare const enum napi_threadsafe_function_call_mode { - napi_tsfn_nonblocking, - napi_tsfn_blocking -} - -export declare const enum napi_threadsafe_function_release_mode { - napi_tsfn_release, - napi_tsfn_abort -} -export declare type CleanupHookCallbackFunction = number | ((arg: number) => void); - -export declare class ConstHandle extends Handle { - constructor(id: number, value: S); - dispose(): void; -} - -export declare class Context { - private _isStopping; - private _canCallIntoJs; - private _suppressDestroy; - envStore: Store; - scopeStore: ScopeStore; - refStore: Store; - deferredStore: Store>; - handleStore: HandleStore; - private readonly refCounter?; - private readonly cleanupQueue; - feature: { - supportReflect: boolean; - supportFinalizer: boolean; - supportWeakSymbol: boolean; - supportBigInt: boolean; - supportNewFunction: boolean; - canSetFunctionName: boolean; - setImmediate: (callback: () => void) => void; - Buffer: BufferCtor | undefined; - MessageChannel: { - new (): MessageChannel; - prototype: MessageChannel; - } | undefined; - }; - constructor(); - /** - * Suppress the destroy on `beforeExit` event in Node.js. - * Call this method if you want to keep the context and - * all associated {@link Env | Env} alive, - * this also means that cleanup hooks will not be called. - * After call this method, you should call - * {@link Context.destroy | `Context.prototype.destroy`} method manually. - */ - suppressDestroy(): void; - getRuntimeVersions(): { - version: string; - NODE_API_SUPPORTED_VERSION_MAX: Version; - NAPI_VERSION_EXPERIMENTAL: Version; - NODE_API_DEFAULT_MODULE_API_VERSION: Version; - }; - createNotSupportWeakRefError(api: string, message: string): NotSupportWeakRefError; - createNotSupportBufferError(api: string, message: string): NotSupportBufferError; - createReference(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership): Reference; - createReferenceWithData(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): Reference; - createReferenceWithFinalizer(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback?: napi_finalize, finalize_data?: void_p, finalize_hint?: void_p): Reference; - createDeferred(value: IDeferrdValue): Deferred; - createEnv(filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any): Env; - createTrackedFinalizer(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; - getCurrentScope(): HandleScope | null; - addToCurrentScope(value: V): Handle; - openScope(envObject?: Env): HandleScope; - closeScope(envObject?: Env, _scope?: HandleScope): void; - ensureHandle(value: S): Handle; - addCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; - removeCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; - runCleanup(): void; - increaseWaitingRequestCounter(): void; - decreaseWaitingRequestCounter(): void; - setCanCallIntoJs(value: boolean): void; - setStopping(value: boolean): void; - canCallIntoJs(): boolean; - /** - * Destroy the context and call cleanup hooks. - * Associated {@link Env | Env} will be destroyed. - */ - destroy(): void; -} - -export declare function createContext(): Context; - -export declare class Deferred implements IStoreValue { - static create(ctx: Context, value: IDeferrdValue): Deferred; - id: number; - ctx: Context; - value: IDeferrdValue; - constructor(ctx: Context, value: IDeferrdValue); - resolve(value: T): void; - reject(reason?: any): void; - dispose(): void; -} - -export declare class EmnapiError extends Error { - constructor(message?: string); -} - -export declare abstract class Env implements IStoreValue { - readonly ctx: Context; - moduleApiVersion: number; - makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void; - makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void; - abort: (msg?: string) => never; - id: number; - openHandleScopes: number; - instanceData: TrackedFinalizer | null; - tryCatch: TryCatch; - refs: number; - reflist: RefTracker; - finalizing_reflist: RefTracker; - pendingFinalizers: RefTracker[]; - lastError: { - errorCode: napi_status; - engineErrorCode: number; - engineReserved: Ptr; - }; - inGcFinalizer: boolean; - constructor(ctx: Context, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never); - /** @virtual */ - canCallIntoJs(): boolean; - terminatedOrTerminating(): boolean; - ref(): void; - unref(): void; - ensureHandle(value: S): Handle; - ensureHandleId(value: any): napi_value; - clearLastError(): napi_status; - setLastError(error_code: napi_status, engine_error_code?: uint32_t, engine_reserved?: void_p): napi_status; - getReturnStatus(): napi_status; - callIntoModule(fn: (env: Env) => T, handleException?: (envObject: Env, value: any) => void): T; - /** @virtual */ - abstract callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; - invokeFinalizerFromGC(finalizer: RefTracker): void; - checkGCAccess(): void; - /** @virtual */ - enqueueFinalizer(finalizer: RefTracker): void; - /** @virtual */ - dequeueFinalizer(finalizer: RefTracker): void; - /** @virtual */ - deleteMe(): void; - dispose(): void; - private readonly _bindingMap; - initObjectBinding(value: S): IReferenceBinding; - getObjectBinding(value: S): IReferenceBinding; - setInstanceData(data: number, finalize_cb: number, finalize_hint: number): void; - getInstanceData(): number; -} - -/** @public */ -declare interface External_2 extends Record { -} - -/** @public */ -declare const External_2: { - new (value: number | bigint): External_2; - prototype: null; -}; -export { External_2 as External } - -export declare class Finalizer { - envObject: Env; - private _finalizeCallback; - private _finalizeData; - private _finalizeHint; - private _makeDynCall_vppp; - constructor(envObject: Env, _finalizeCallback?: napi_finalize, _finalizeData?: void_p, _finalizeHint?: void_p); - callback(): napi_finalize; - data(): void_p; - hint(): void_p; - resetEnv(): void; - resetFinalizer(): void; - callFinalizer(): void; - dispose(): void; -} - -export declare function getDefaultContext(): Context; - -/** @public */ -export declare function getExternalValue(external: External_2): number | bigint; - -export declare class Handle { - id: number; - value: S; - constructor(id: number, value: S); - data(): void_p; - isNumber(): boolean; - isBigInt(): boolean; - isString(): boolean; - isFunction(): boolean; - isExternal(): boolean; - isObject(): boolean; - isArray(): boolean; - isArrayBuffer(): boolean; - isTypedArray(): boolean; - isBuffer(BufferConstructor?: BufferCtor): boolean; - isDataView(): boolean; - isDate(): boolean; - isPromise(): boolean; - isBoolean(): boolean; - isUndefined(): boolean; - isSymbol(): boolean; - isNull(): boolean; - dispose(): void; -} - -export declare class HandleScope { - handleStore: HandleStore; - id: number; - parent: HandleScope | null; - child: HandleScope | null; - start: number; - end: number; - private _escapeCalled; - callbackInfo: ICallbackInfo; - constructor(handleStore: HandleStore, id: number, parentScope: HandleScope | null, start: number, end?: number); - add(value: V): Handle; - addExternal(data: void_p): Handle; - dispose(): void; - escape(handle: number): Handle | null; - escapeCalled(): boolean; -} - -export declare class HandleStore { - static UNDEFINED: ConstHandle; - static NULL: ConstHandle; - static FALSE: ConstHandle; - static TRUE: ConstHandle; - static GLOBAL: ConstHandle; - static MIN_ID: 6; - private readonly _values; - private _next; - push(value: S): Handle; - erase(start: number, end: number): void; - get(id: Ptr): Handle | undefined; - swap(a: number, b: number): void; - dispose(): void; -} - -export declare interface ICallbackInfo { - thiz: any; - data: void_p; - args: ArrayLike; - fn: Function; -} - -export declare interface IDeferrdValue { - resolve: (value: T) => void; - reject: (reason?: any) => void; -} - -export declare interface IReferenceBinding { - wrapped: number; - tag: Uint32Array | null; -} - -/** @public */ -export declare function isExternal(object: unknown): object is External_2; - -export declare function isReferenceType(v: any): v is object; - -export declare interface IStoreValue { - id: number; - dispose(): void; - [x: string]: any; -} - -export declare const NAPI_VERSION_EXPERIMENTAL = Version.NAPI_VERSION_EXPERIMENTAL; - -export declare const NODE_API_DEFAULT_MODULE_API_VERSION = Version.NODE_API_DEFAULT_MODULE_API_VERSION; - -export declare const NODE_API_SUPPORTED_VERSION_MAX = Version.NODE_API_SUPPORTED_VERSION_MAX; - -export declare const NODE_API_SUPPORTED_VERSION_MIN = Version.NODE_API_SUPPORTED_VERSION_MIN; - -export declare class NodeEnv extends Env { - filename: string; - private readonly nodeBinding?; - destructing: boolean; - finalizationScheduled: boolean; - constructor(ctx: Context, filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any); - deleteMe(): void; - canCallIntoJs(): boolean; - triggerFatalException(err: any): void; - callbackIntoModule(enforceUncaughtExceptionPolicy: boolean, fn: (env: Env) => T): T; - callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; - callFinalizerInternal(forceUncaught: int, cb: napi_finalize, data: void_p, hint: void_p): void; - enqueueFinalizer(finalizer: RefTracker): void; - drainFinalizerQueue(): void; -} - -export declare class NotSupportBufferError extends EmnapiError { - constructor(api: string, message: string); -} - -export declare class NotSupportWeakRefError extends EmnapiError { - constructor(api: string, message: string); -} - -export declare class Persistent { - private _ref; - private _param; - private _callback; - private static readonly _registry; - constructor(value: T); - setWeak

(param: P, callback: (param: P) => void): void; - clearWeak(): void; - reset(): void; - isEmpty(): boolean; - deref(): T | undefined; -} - -export declare class Reference extends RefTracker implements IStoreValue { - private static weakCallback; - id: number; - envObject: Env; - private readonly canBeWeak; - private _refcount; - private readonly _ownership; - persistent: Persistent; - static create(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, _unused1?: void_p, _unused2?: void_p, _unused3?: void_p): Reference; - protected constructor(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership); - ref(): number; - unref(): number; - get(envObject?: Env): napi_value; - /** @virtual */ - resetFinalizer(): void; - /** @virtual */ - data(): void_p; - refcount(): number; - ownership(): ReferenceOwnership; - /** @virtual */ - protected callUserFinalizer(): void; - /** @virtual */ - protected invokeFinalizerFromGC(): void; - private _setWeak; - finalize(): void; - dispose(): void; -} - -export declare enum ReferenceOwnership { - kRuntime = 0, - kUserland = 1 -} - -export declare class ReferenceWithData extends Reference { - private readonly _data; - static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): ReferenceWithData; - private constructor(); - data(): void_p; -} - -export declare class ReferenceWithFinalizer extends Reference { - private _finalizer; - static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): ReferenceWithFinalizer; - private constructor(); - resetFinalizer(): void; - data(): void_p; - protected callUserFinalizer(): void; - protected invokeFinalizerFromGC(): void; - dispose(): void; -} - -export declare class RefTracker { - /** @virtual */ - dispose(): void; - /** @virtual */ - finalize(): void; - private _next; - private _prev; - link(list: RefTracker): void; - unlink(): void; - static finalizeAll(list: RefTracker): void; -} - -export declare class ScopeStore { - private readonly _rootScope; - currentScope: HandleScope; - private readonly _values; - constructor(); - get(id: number): HandleScope | undefined; - openScope(handleStore: HandleStore): HandleScope; - closeScope(): void; - dispose(): void; -} - -export declare class Store { - protected _values: Array; - private _freeList; - private _size; - constructor(); - add(value: V): void; - get(id: Ptr): V | undefined; - has(id: Ptr): boolean; - remove(id: Ptr): void; - dispose(): void; -} - -export declare class TrackedFinalizer extends RefTracker { - private _finalizer; - static create(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; - private constructor(); - data(): void_p; - dispose(): void; - finalize(): void; -} - -export declare class TryCatch { - private _exception; - private _caught; - isEmpty(): boolean; - hasCaught(): boolean; - exception(): any; - setError(err: any): void; - reset(): void; - extractException(): any; -} - -export declare const version: string; - -export { } diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.d.ts b/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.d.ts deleted file mode 100644 index 8b1be1d..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.d.ts +++ /dev/null @@ -1,667 +0,0 @@ -export declare type Ptr = number | bigint - -export declare interface IBuffer extends Uint8Array {} -export declare interface BufferCtor { - readonly prototype: IBuffer - /** @deprecated */ - new (...args: any[]): IBuffer - from: { - (buffer: ArrayBufferLike): IBuffer - (buffer: ArrayBufferLike, byteOffset: number, length: number): IBuffer - } - alloc: (size: number) => IBuffer - isBuffer: (obj: unknown) => obj is IBuffer -} - -export declare const enum GlobalHandle { - UNDEFINED = 1, - NULL, - FALSE, - TRUE, - GLOBAL -} - -export declare const enum Version { - NODE_API_SUPPORTED_VERSION_MIN = 1, - NODE_API_DEFAULT_MODULE_API_VERSION = 8, - NODE_API_SUPPORTED_VERSION_MAX = 10, - NAPI_VERSION_EXPERIMENTAL = 2147483647 // INT_MAX -} -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export declare type Pointer = number -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export declare type PointerPointer = number -export declare type FunctionPointer any> = Pointer -export declare type Const = T - -export declare type void_p = Pointer -export declare type void_pp = Pointer -export declare type bool = number -export declare type char = number -export declare type char_p = Pointer -export declare type unsigned_char = number -export declare type const_char = Const -export declare type const_char_p = Pointer -export declare type char16_t_p = number -export declare type const_char16_t_p = number - -export declare type short = number -export declare type unsigned_short = number -export declare type int = number -export declare type unsigned_int = number -export declare type long = number -export declare type unsigned_long = number -export declare type long_long = bigint -export declare type unsigned_long_long = bigint -export declare type float = number -export declare type double = number -export declare type long_double = number -export declare type size_t = number - -export declare type int8_t = number -export declare type uint8_t = number -export declare type int16_t = number -export declare type uint16_t = number -export declare type int32_t = number -export declare type uint32_t = number -export declare type int64_t = bigint -export declare type uint64_t = bigint -export declare type napi_env = Pointer - -export declare type napi_value = Pointer -export declare type napi_ref = Pointer -export declare type napi_deferred = Pointer -export declare type napi_handle_scope = Pointer -export declare type napi_escapable_handle_scope = Pointer - -export declare type napi_addon_register_func = FunctionPointer<(env: napi_env, exports: napi_value) => napi_value> - -export declare type napi_callback_info = Pointer -export declare type napi_callback = FunctionPointer<(env: napi_env, info: napi_callback_info) => napi_value> - -export declare interface napi_extended_error_info { - error_message: const_char_p - engine_reserved: void_p - engine_error_code: uint32_t - error_code: napi_status -} - -export declare interface napi_property_descriptor { - // One of utf8name or name should be NULL. - utf8name: const_char_p - name: napi_value - - method: napi_callback - getter: napi_callback - setter: napi_callback - value: napi_value - /* napi_property_attributes */ - attributes: number - data: void_p -} - -export declare type napi_finalize = FunctionPointer<( - env: napi_env, - finalize_data: void_p, - finalize_hint: void_p -) => void> - -export declare interface node_module { - nm_version: int32_t - nm_flags: uint32_t - nm_filename: Pointer - nm_register_func: napi_addon_register_func - nm_modname: Pointer - nm_priv: Pointer - reserved: PointerPointer -} - -export declare interface napi_node_version { - major: uint32_t - minor: uint32_t - patch: uint32_t - release: const_char_p -} - -export declare interface emnapi_emscripten_version { - major: uint32_t - minor: uint32_t - patch: uint32_t -} - -export declare const enum napi_status { - napi_ok, - napi_invalid_arg, - napi_object_expected, - napi_string_expected, - napi_name_expected, - napi_function_expected, - napi_number_expected, - napi_boolean_expected, - napi_array_expected, - napi_generic_failure, - napi_pending_exception, - napi_cancelled, - napi_escape_called_twice, - napi_handle_scope_mismatch, - napi_callback_scope_mismatch, - napi_queue_full, - napi_closing, - napi_bigint_expected, - napi_date_expected, - napi_arraybuffer_expected, - napi_detachable_arraybuffer_expected, - napi_would_deadlock, // unused - napi_no_external_buffers_allowed, - napi_cannot_run_js -} - -export declare const enum napi_property_attributes { - napi_default = 0, - napi_writable = 1 << 0, - napi_enumerable = 1 << 1, - napi_configurable = 1 << 2, - - // Used with napi_define_class to distinguish static properties - // from instance properties. Ignored by napi_define_properties. - napi_static = 1 << 10, - - /// #ifdef NAPI_EXPERIMENTAL - // Default for class methods. - napi_default_method = napi_writable | napi_configurable, - - // Default for object properties, like in JS obj[prop]. - napi_default_jsproperty = napi_writable | napi_enumerable | napi_configurable - /// #endif // NAPI_EXPERIMENTAL -} - -export declare const enum napi_valuetype { - napi_undefined, - napi_null, - napi_boolean, - napi_number, - napi_string, - napi_symbol, - napi_object, - napi_function, - napi_external, - napi_bigint -} - -export declare const enum napi_typedarray_type { - napi_int8_array, - napi_uint8_array, - napi_uint8_clamped_array, - napi_int16_array, - napi_uint16_array, - napi_int32_array, - napi_uint32_array, - napi_float32_array, - napi_float64_array, - napi_bigint64_array, - napi_biguint64_array, - napi_float16_array, -} - -export declare const enum napi_key_collection_mode { - napi_key_include_prototypes, - napi_key_own_only -} - -export declare const enum napi_key_filter { - napi_key_all_properties = 0, - napi_key_writable = 1, - napi_key_enumerable = 1 << 1, - napi_key_configurable = 1 << 2, - napi_key_skip_strings = 1 << 3, - napi_key_skip_symbols = 1 << 4 -} - -export declare const enum napi_key_conversion { - napi_key_keep_numbers, - napi_key_numbers_to_strings -} - -export declare const enum emnapi_memory_view_type { - emnapi_int8_array, - emnapi_uint8_array, - emnapi_uint8_clamped_array, - emnapi_int16_array, - emnapi_uint16_array, - emnapi_int32_array, - emnapi_uint32_array, - emnapi_float32_array, - emnapi_float64_array, - emnapi_bigint64_array, - emnapi_biguint64_array, - emnapi_float16_array, - emnapi_data_view = -1, - emnapi_buffer = -2 -} - -export declare const enum napi_threadsafe_function_call_mode { - napi_tsfn_nonblocking, - napi_tsfn_blocking -} - -export declare const enum napi_threadsafe_function_release_mode { - napi_tsfn_release, - napi_tsfn_abort -} -export declare type CleanupHookCallbackFunction = number | ((arg: number) => void); - -export declare class ConstHandle extends Handle { - constructor(id: number, value: S); - dispose(): void; -} - -export declare class Context { - private _isStopping; - private _canCallIntoJs; - private _suppressDestroy; - envStore: Store; - scopeStore: ScopeStore; - refStore: Store; - deferredStore: Store>; - handleStore: HandleStore; - private readonly refCounter?; - private readonly cleanupQueue; - feature: { - supportReflect: boolean; - supportFinalizer: boolean; - supportWeakSymbol: boolean; - supportBigInt: boolean; - supportNewFunction: boolean; - canSetFunctionName: boolean; - setImmediate: (callback: () => void) => void; - Buffer: BufferCtor | undefined; - MessageChannel: { - new (): MessageChannel; - prototype: MessageChannel; - } | undefined; - }; - constructor(); - /** - * Suppress the destroy on `beforeExit` event in Node.js. - * Call this method if you want to keep the context and - * all associated {@link Env | Env} alive, - * this also means that cleanup hooks will not be called. - * After call this method, you should call - * {@link Context.destroy | `Context.prototype.destroy`} method manually. - */ - suppressDestroy(): void; - getRuntimeVersions(): { - version: string; - NODE_API_SUPPORTED_VERSION_MAX: Version; - NAPI_VERSION_EXPERIMENTAL: Version; - NODE_API_DEFAULT_MODULE_API_VERSION: Version; - }; - createNotSupportWeakRefError(api: string, message: string): NotSupportWeakRefError; - createNotSupportBufferError(api: string, message: string): NotSupportBufferError; - createReference(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership): Reference; - createReferenceWithData(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): Reference; - createReferenceWithFinalizer(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback?: napi_finalize, finalize_data?: void_p, finalize_hint?: void_p): Reference; - createDeferred(value: IDeferrdValue): Deferred; - createEnv(filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any): Env; - createTrackedFinalizer(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; - getCurrentScope(): HandleScope | null; - addToCurrentScope(value: V): Handle; - openScope(envObject?: Env): HandleScope; - closeScope(envObject?: Env, _scope?: HandleScope): void; - ensureHandle(value: S): Handle; - addCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; - removeCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; - runCleanup(): void; - increaseWaitingRequestCounter(): void; - decreaseWaitingRequestCounter(): void; - setCanCallIntoJs(value: boolean): void; - setStopping(value: boolean): void; - canCallIntoJs(): boolean; - /** - * Destroy the context and call cleanup hooks. - * Associated {@link Env | Env} will be destroyed. - */ - destroy(): void; -} - -export declare function createContext(): Context; - -export declare class Deferred implements IStoreValue { - static create(ctx: Context, value: IDeferrdValue): Deferred; - id: number; - ctx: Context; - value: IDeferrdValue; - constructor(ctx: Context, value: IDeferrdValue); - resolve(value: T): void; - reject(reason?: any): void; - dispose(): void; -} - -export declare class EmnapiError extends Error { - constructor(message?: string); -} - -export declare abstract class Env implements IStoreValue { - readonly ctx: Context; - moduleApiVersion: number; - makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void; - makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void; - abort: (msg?: string) => never; - id: number; - openHandleScopes: number; - instanceData: TrackedFinalizer | null; - tryCatch: TryCatch; - refs: number; - reflist: RefTracker; - finalizing_reflist: RefTracker; - pendingFinalizers: RefTracker[]; - lastError: { - errorCode: napi_status; - engineErrorCode: number; - engineReserved: Ptr; - }; - inGcFinalizer: boolean; - constructor(ctx: Context, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never); - /** @virtual */ - canCallIntoJs(): boolean; - terminatedOrTerminating(): boolean; - ref(): void; - unref(): void; - ensureHandle(value: S): Handle; - ensureHandleId(value: any): napi_value; - clearLastError(): napi_status; - setLastError(error_code: napi_status, engine_error_code?: uint32_t, engine_reserved?: void_p): napi_status; - getReturnStatus(): napi_status; - callIntoModule(fn: (env: Env) => T, handleException?: (envObject: Env, value: any) => void): T; - /** @virtual */ - abstract callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; - invokeFinalizerFromGC(finalizer: RefTracker): void; - checkGCAccess(): void; - /** @virtual */ - enqueueFinalizer(finalizer: RefTracker): void; - /** @virtual */ - dequeueFinalizer(finalizer: RefTracker): void; - /** @virtual */ - deleteMe(): void; - dispose(): void; - private readonly _bindingMap; - initObjectBinding(value: S): IReferenceBinding; - getObjectBinding(value: S): IReferenceBinding; - setInstanceData(data: number, finalize_cb: number, finalize_hint: number): void; - getInstanceData(): number; -} - -/** @public */ -declare interface External_2 extends Record { -} - -/** @public */ -declare const External_2: { - new (value: number | bigint): External_2; - prototype: null; -}; -export { External_2 as External } - -export declare class Finalizer { - envObject: Env; - private _finalizeCallback; - private _finalizeData; - private _finalizeHint; - private _makeDynCall_vppp; - constructor(envObject: Env, _finalizeCallback?: napi_finalize, _finalizeData?: void_p, _finalizeHint?: void_p); - callback(): napi_finalize; - data(): void_p; - hint(): void_p; - resetEnv(): void; - resetFinalizer(): void; - callFinalizer(): void; - dispose(): void; -} - -export declare function getDefaultContext(): Context; - -/** @public */ -export declare function getExternalValue(external: External_2): number | bigint; - -export declare class Handle { - id: number; - value: S; - constructor(id: number, value: S); - data(): void_p; - isNumber(): boolean; - isBigInt(): boolean; - isString(): boolean; - isFunction(): boolean; - isExternal(): boolean; - isObject(): boolean; - isArray(): boolean; - isArrayBuffer(): boolean; - isTypedArray(): boolean; - isBuffer(BufferConstructor?: BufferCtor): boolean; - isDataView(): boolean; - isDate(): boolean; - isPromise(): boolean; - isBoolean(): boolean; - isUndefined(): boolean; - isSymbol(): boolean; - isNull(): boolean; - dispose(): void; -} - -export declare class HandleScope { - handleStore: HandleStore; - id: number; - parent: HandleScope | null; - child: HandleScope | null; - start: number; - end: number; - private _escapeCalled; - callbackInfo: ICallbackInfo; - constructor(handleStore: HandleStore, id: number, parentScope: HandleScope | null, start: number, end?: number); - add(value: V): Handle; - addExternal(data: void_p): Handle; - dispose(): void; - escape(handle: number): Handle | null; - escapeCalled(): boolean; -} - -export declare class HandleStore { - static UNDEFINED: ConstHandle; - static NULL: ConstHandle; - static FALSE: ConstHandle; - static TRUE: ConstHandle; - static GLOBAL: ConstHandle; - static MIN_ID: 6; - private readonly _values; - private _next; - push(value: S): Handle; - erase(start: number, end: number): void; - get(id: Ptr): Handle | undefined; - swap(a: number, b: number): void; - dispose(): void; -} - -export declare interface ICallbackInfo { - thiz: any; - data: void_p; - args: ArrayLike; - fn: Function; -} - -export declare interface IDeferrdValue { - resolve: (value: T) => void; - reject: (reason?: any) => void; -} - -export declare interface IReferenceBinding { - wrapped: number; - tag: Uint32Array | null; -} - -/** @public */ -export declare function isExternal(object: unknown): object is External_2; - -export declare function isReferenceType(v: any): v is object; - -export declare interface IStoreValue { - id: number; - dispose(): void; - [x: string]: any; -} - -export declare const NAPI_VERSION_EXPERIMENTAL = Version.NAPI_VERSION_EXPERIMENTAL; - -export declare const NODE_API_DEFAULT_MODULE_API_VERSION = Version.NODE_API_DEFAULT_MODULE_API_VERSION; - -export declare const NODE_API_SUPPORTED_VERSION_MAX = Version.NODE_API_SUPPORTED_VERSION_MAX; - -export declare const NODE_API_SUPPORTED_VERSION_MIN = Version.NODE_API_SUPPORTED_VERSION_MIN; - -export declare class NodeEnv extends Env { - filename: string; - private readonly nodeBinding?; - destructing: boolean; - finalizationScheduled: boolean; - constructor(ctx: Context, filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any); - deleteMe(): void; - canCallIntoJs(): boolean; - triggerFatalException(err: any): void; - callbackIntoModule(enforceUncaughtExceptionPolicy: boolean, fn: (env: Env) => T): T; - callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; - callFinalizerInternal(forceUncaught: int, cb: napi_finalize, data: void_p, hint: void_p): void; - enqueueFinalizer(finalizer: RefTracker): void; - drainFinalizerQueue(): void; -} - -export declare class NotSupportBufferError extends EmnapiError { - constructor(api: string, message: string); -} - -export declare class NotSupportWeakRefError extends EmnapiError { - constructor(api: string, message: string); -} - -export declare class Persistent { - private _ref; - private _param; - private _callback; - private static readonly _registry; - constructor(value: T); - setWeak

(param: P, callback: (param: P) => void): void; - clearWeak(): void; - reset(): void; - isEmpty(): boolean; - deref(): T | undefined; -} - -export declare class Reference extends RefTracker implements IStoreValue { - private static weakCallback; - id: number; - envObject: Env; - private readonly canBeWeak; - private _refcount; - private readonly _ownership; - persistent: Persistent; - static create(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, _unused1?: void_p, _unused2?: void_p, _unused3?: void_p): Reference; - protected constructor(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership); - ref(): number; - unref(): number; - get(envObject?: Env): napi_value; - /** @virtual */ - resetFinalizer(): void; - /** @virtual */ - data(): void_p; - refcount(): number; - ownership(): ReferenceOwnership; - /** @virtual */ - protected callUserFinalizer(): void; - /** @virtual */ - protected invokeFinalizerFromGC(): void; - private _setWeak; - finalize(): void; - dispose(): void; -} - -export declare enum ReferenceOwnership { - kRuntime = 0, - kUserland = 1 -} - -export declare class ReferenceWithData extends Reference { - private readonly _data; - static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): ReferenceWithData; - private constructor(); - data(): void_p; -} - -export declare class ReferenceWithFinalizer extends Reference { - private _finalizer; - static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): ReferenceWithFinalizer; - private constructor(); - resetFinalizer(): void; - data(): void_p; - protected callUserFinalizer(): void; - protected invokeFinalizerFromGC(): void; - dispose(): void; -} - -export declare class RefTracker { - /** @virtual */ - dispose(): void; - /** @virtual */ - finalize(): void; - private _next; - private _prev; - link(list: RefTracker): void; - unlink(): void; - static finalizeAll(list: RefTracker): void; -} - -export declare class ScopeStore { - private readonly _rootScope; - currentScope: HandleScope; - private readonly _values; - constructor(); - get(id: number): HandleScope | undefined; - openScope(handleStore: HandleStore): HandleScope; - closeScope(): void; - dispose(): void; -} - -export declare class Store { - protected _values: Array; - private _freeList; - private _size; - constructor(); - add(value: V): void; - get(id: Ptr): V | undefined; - has(id: Ptr): boolean; - remove(id: Ptr): void; - dispose(): void; -} - -export declare class TrackedFinalizer extends RefTracker { - private _finalizer; - static create(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; - private constructor(); - data(): void_p; - dispose(): void; - finalize(): void; -} - -export declare class TryCatch { - private _exception; - private _caught; - isEmpty(): boolean; - hasCaught(): boolean; - exception(): any; - setError(err: any): void; - reset(): void; - extractException(): any; -} - -export declare const version: string; - -export { } - -export as namespace emnapi; diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js b/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js deleted file mode 100644 index 35baea8..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +++ /dev/null @@ -1,1410 +0,0 @@ -import { __extends } from 'tslib'; - -var externalValue = new WeakMap(); -/** @public */ -function isExternal(object) { - return externalValue.has(object); -} -/** @public */ // eslint-disable-next-line @typescript-eslint/no-redeclare -var External = (function () { - function External(value) { - Object.setPrototypeOf(this, null); - externalValue.set(this, value); - } - External.prototype = null; - return External; -})(); -/** @public */ -function getExternalValue(external) { - if (!isExternal(external)) { - throw new TypeError('not external'); - } - return externalValue.get(external); -} - -var supportNewFunction = /*#__PURE__*/ (function () { - var f; - try { - f = new Function(); - } - catch (_) { - return false; - } - return typeof f === 'function'; -})(); -var _global = /*#__PURE__*/ (function () { - if (typeof globalThis !== 'undefined') - return globalThis; - var g = (function () { return this; })(); - if (!g && supportNewFunction) { - try { - g = new Function('return this')(); - } - catch (_) { } - } - if (!g) { - if (typeof __webpack_public_path__ === 'undefined') { - if (typeof global !== 'undefined') - return global; - } - if (typeof window !== 'undefined') - return window; - if (typeof self !== 'undefined') - return self; - } - return g; -})(); -var TryCatch = /*#__PURE__*/ (function () { - function TryCatch() { - this._exception = undefined; - this._caught = false; - } - TryCatch.prototype.isEmpty = function () { - return !this._caught; - }; - TryCatch.prototype.hasCaught = function () { - return this._caught; - }; - TryCatch.prototype.exception = function () { - return this._exception; - }; - TryCatch.prototype.setError = function (err) { - this._caught = true; - this._exception = err; - }; - TryCatch.prototype.reset = function () { - this._caught = false; - this._exception = undefined; - }; - TryCatch.prototype.extractException = function () { - var e = this._exception; - this.reset(); - return e; - }; - return TryCatch; -}()); -var canSetFunctionName = /*#__PURE__*/ (function () { - var _a; - try { - return Boolean((_a = Object.getOwnPropertyDescriptor(Function.prototype, 'name')) === null || _a === void 0 ? void 0 : _a.configurable); - } - catch (_) { - return false; - } -})(); -var supportReflect = typeof Reflect === 'object'; -var supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); -var supportWeakSymbol = /*#__PURE__*/ (function () { - try { - // eslint-disable-next-line symbol-description - var sym = Symbol(); - // eslint-disable-next-line no-new - new WeakRef(sym); - new WeakMap().set(sym, undefined); - } - catch (_) { - return false; - } - return true; -})(); -var supportBigInt = typeof BigInt !== 'undefined'; -function isReferenceType(v) { - return (typeof v === 'object' && v !== null) || typeof v === 'function'; -} -var _require = /*#__PURE__*/ (function () { - var nativeRequire; - if (typeof __webpack_public_path__ !== 'undefined') { - nativeRequire = (function () { - return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; - })(); - } - else { - nativeRequire = (function () { - return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); - })(); - } - return nativeRequire; -})(); -var _MessageChannel = typeof MessageChannel === 'function' - ? MessageChannel - : /*#__PURE__*/ (function () { - try { - return _require('worker_threads').MessageChannel; - } - catch (_) { } - return undefined; - })(); -var _setImmediate = typeof setImmediate === 'function' - ? setImmediate - : function (callback) { - if (typeof callback !== 'function') { - throw new TypeError('The "callback" argument must be of type function'); - } - if (_MessageChannel) { - var channel_1 = new _MessageChannel(); - channel_1.port1.onmessage = function () { - channel_1.port1.onmessage = null; - channel_1 = undefined; - callback(); - }; - channel_1.port2.postMessage(null); - } - else { - setTimeout(callback, 0); - } - }; -var _Buffer = typeof Buffer === 'function' - ? Buffer - : /*#__PURE__*/ (function () { - try { - return _require('buffer').Buffer; - } - catch (_) { } - return undefined; - })(); -var version = "1.8.1"; -var NODE_API_SUPPORTED_VERSION_MIN = 1 /* Version.NODE_API_SUPPORTED_VERSION_MIN */; -var NODE_API_SUPPORTED_VERSION_MAX = 10 /* Version.NODE_API_SUPPORTED_VERSION_MAX */; -var NAPI_VERSION_EXPERIMENTAL = 2147483647 /* Version.NAPI_VERSION_EXPERIMENTAL */; -var NODE_API_DEFAULT_MODULE_API_VERSION = 8 /* Version.NODE_API_DEFAULT_MODULE_API_VERSION */; - -var Handle = /*#__PURE__*/ (function () { - function Handle(id, value) { - this.id = id; - this.value = value; - } - Handle.prototype.data = function () { - return getExternalValue(this.value); - }; - Handle.prototype.isNumber = function () { - return typeof this.value === 'number'; - }; - Handle.prototype.isBigInt = function () { - return typeof this.value === 'bigint'; - }; - Handle.prototype.isString = function () { - return typeof this.value === 'string'; - }; - Handle.prototype.isFunction = function () { - return typeof this.value === 'function'; - }; - Handle.prototype.isExternal = function () { - return isExternal(this.value); - }; - Handle.prototype.isObject = function () { - return typeof this.value === 'object' && this.value !== null; - }; - Handle.prototype.isArray = function () { - return Array.isArray(this.value); - }; - Handle.prototype.isArrayBuffer = function () { - return (this.value instanceof ArrayBuffer); - }; - Handle.prototype.isTypedArray = function () { - return (ArrayBuffer.isView(this.value)) && !(this.value instanceof DataView); - }; - Handle.prototype.isBuffer = function (BufferConstructor) { - if (ArrayBuffer.isView(this.value)) - return true; - BufferConstructor !== null && BufferConstructor !== void 0 ? BufferConstructor : (BufferConstructor = _Buffer); - return typeof BufferConstructor === 'function' && BufferConstructor.isBuffer(this.value); - }; - Handle.prototype.isDataView = function () { - return (this.value instanceof DataView); - }; - Handle.prototype.isDate = function () { - return (this.value instanceof Date); - }; - Handle.prototype.isPromise = function () { - return (this.value instanceof Promise); - }; - Handle.prototype.isBoolean = function () { - return typeof this.value === 'boolean'; - }; - Handle.prototype.isUndefined = function () { - return this.value === undefined; - }; - Handle.prototype.isSymbol = function () { - return typeof this.value === 'symbol'; - }; - Handle.prototype.isNull = function () { - return this.value === null; - }; - Handle.prototype.dispose = function () { - this.value = undefined; - }; - return Handle; -}()); -var ConstHandle = /*#__PURE__*/ (function (_super) { - __extends(ConstHandle, _super); - function ConstHandle(id, value) { - return _super.call(this, id, value) || this; - } - ConstHandle.prototype.dispose = function () { }; - return ConstHandle; -}(Handle)); -var HandleStore = /*#__PURE__*/ (function () { - function HandleStore() { - this._values = [ - undefined, - HandleStore.UNDEFINED, - HandleStore.NULL, - HandleStore.FALSE, - HandleStore.TRUE, - HandleStore.GLOBAL - ]; - this._next = HandleStore.MIN_ID; - } - HandleStore.prototype.push = function (value) { - var h; - var next = this._next; - var values = this._values; - if (next < values.length) { - h = values[next]; - h.value = value; - } - else { - h = new Handle(next, value); - values[next] = h; - } - this._next++; - return h; - }; - HandleStore.prototype.erase = function (start, end) { - this._next = start; - var values = this._values; - for (var i = start; i < end; ++i) { - values[i].dispose(); - } - }; - HandleStore.prototype.get = function (id) { - return this._values[id]; - }; - HandleStore.prototype.swap = function (a, b) { - var values = this._values; - var h = values[a]; - values[a] = values[b]; - values[a].id = Number(a); - values[b] = h; - h.id = Number(b); - }; - HandleStore.prototype.dispose = function () { - this._values.length = HandleStore.MIN_ID; - this._next = HandleStore.MIN_ID; - }; - HandleStore.UNDEFINED = new ConstHandle(1 /* GlobalHandle.UNDEFINED */, undefined); - HandleStore.NULL = new ConstHandle(2 /* GlobalHandle.NULL */, null); - HandleStore.FALSE = new ConstHandle(3 /* GlobalHandle.FALSE */, false); - HandleStore.TRUE = new ConstHandle(4 /* GlobalHandle.TRUE */, true); - HandleStore.GLOBAL = new ConstHandle(5 /* GlobalHandle.GLOBAL */, _global); - HandleStore.MIN_ID = 6; - return HandleStore; -}()); - -var HandleScope = /*#__PURE__*/ (function () { - function HandleScope(handleStore, id, parentScope, start, end) { - if (end === void 0) { end = start; } - this.handleStore = handleStore; - this.id = id; - this.parent = parentScope; - this.child = null; - if (parentScope !== null) - parentScope.child = this; - this.start = start; - this.end = end; - this._escapeCalled = false; - this.callbackInfo = { - thiz: undefined, - data: 0, - args: undefined, - fn: undefined - }; - } - HandleScope.prototype.add = function (value) { - var h = this.handleStore.push(value); - this.end++; - return h; - }; - HandleScope.prototype.addExternal = function (data) { - return this.add(new External(data)); - }; - HandleScope.prototype.dispose = function () { - if (this._escapeCalled) - this._escapeCalled = false; - if (this.start === this.end) - return; - this.handleStore.erase(this.start, this.end); - }; - HandleScope.prototype.escape = function (handle) { - if (this._escapeCalled) - return null; - this._escapeCalled = true; - if (handle < this.start || handle >= this.end) { - return null; - } - this.handleStore.swap(handle, this.start); - var h = this.handleStore.get(this.start); - this.start++; - this.parent.end++; - return h; - }; - HandleScope.prototype.escapeCalled = function () { - return this._escapeCalled; - }; - return HandleScope; -}()); - -var ScopeStore = /*#__PURE__*/ (function () { - function ScopeStore() { - this._rootScope = new HandleScope(null, 0, null, 1, HandleStore.MIN_ID); - this.currentScope = this._rootScope; - this._values = [undefined]; - } - ScopeStore.prototype.get = function (id) { - return this._values[id]; - }; - ScopeStore.prototype.openScope = function (handleStore) { - var currentScope = this.currentScope; - var scope = currentScope.child; - if (scope !== null) { - scope.start = scope.end = currentScope.end; - } - else { - var id = currentScope.id + 1; - scope = new HandleScope(handleStore, id, currentScope, currentScope.end); - this._values[id] = scope; - } - this.currentScope = scope; - return scope; - }; - ScopeStore.prototype.closeScope = function () { - var scope = this.currentScope; - this.currentScope = scope.parent; - scope.dispose(); - }; - ScopeStore.prototype.dispose = function () { - this.currentScope = this._rootScope; - this._values.length = 1; - }; - return ScopeStore; -}()); - -var RefTracker = /*#__PURE__*/ (function () { - function RefTracker() { - this._next = null; - this._prev = null; - } - /** @virtual */ - RefTracker.prototype.dispose = function () { }; - /** @virtual */ - RefTracker.prototype.finalize = function () { }; - RefTracker.prototype.link = function (list) { - this._prev = list; - this._next = list._next; - if (this._next !== null) { - this._next._prev = this; - } - list._next = this; - }; - RefTracker.prototype.unlink = function () { - if (this._prev !== null) { - this._prev._next = this._next; - } - if (this._next !== null) { - this._next._prev = this._prev; - } - this._prev = null; - this._next = null; - }; - RefTracker.finalizeAll = function (list) { - while (list._next !== null) { - list._next.finalize(); - } - }; - return RefTracker; -}()); - -var Finalizer = /*#__PURE__*/ (function () { - function Finalizer(envObject, _finalizeCallback, _finalizeData, _finalizeHint) { - if (_finalizeCallback === void 0) { _finalizeCallback = 0; } - if (_finalizeData === void 0) { _finalizeData = 0; } - if (_finalizeHint === void 0) { _finalizeHint = 0; } - this.envObject = envObject; - this._finalizeCallback = _finalizeCallback; - this._finalizeData = _finalizeData; - this._finalizeHint = _finalizeHint; - this._makeDynCall_vppp = envObject.makeDynCall_vppp; - } - Finalizer.prototype.callback = function () { return this._finalizeCallback; }; - Finalizer.prototype.data = function () { return this._finalizeData; }; - Finalizer.prototype.hint = function () { return this._finalizeHint; }; - Finalizer.prototype.resetEnv = function () { - this.envObject = undefined; - }; - Finalizer.prototype.resetFinalizer = function () { - this._finalizeCallback = 0; - this._finalizeData = 0; - this._finalizeHint = 0; - }; - Finalizer.prototype.callFinalizer = function () { - var finalize_callback = this._finalizeCallback; - var finalize_data = this._finalizeData; - var finalize_hint = this._finalizeHint; - this.resetFinalizer(); - if (!finalize_callback) - return; - var fini = Number(finalize_callback); - if (!this.envObject) { - this._makeDynCall_vppp(fini)(0, finalize_data, finalize_hint); - } - else { - this.envObject.callFinalizer(fini, finalize_data, finalize_hint); - } - }; - Finalizer.prototype.dispose = function () { - this.envObject = undefined; - this._makeDynCall_vppp = undefined; - }; - return Finalizer; -}()); - -var TrackedFinalizer = /*#__PURE__*/ (function (_super) { - __extends(TrackedFinalizer, _super); - function TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint) { - var _this = _super.call(this) || this; - _this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); - return _this; - } - TrackedFinalizer.create = function (envObject, finalize_callback, finalize_data, finalize_hint) { - var finalizer = new TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint); - finalizer.link(envObject.finalizing_reflist); - return finalizer; - }; - TrackedFinalizer.prototype.data = function () { - return this._finalizer.data(); - }; - TrackedFinalizer.prototype.dispose = function () { - if (!this._finalizer) - return; - this.unlink(); - this._finalizer.envObject.dequeueFinalizer(this); - this._finalizer.dispose(); - this._finalizer = undefined; - _super.prototype.dispose.call(this); - }; - TrackedFinalizer.prototype.finalize = function () { - this.unlink(); - var error; - var caught = false; - try { - this._finalizer.callFinalizer(); - } - catch (err) { - caught = true; - error = err; - } - this.dispose(); - if (caught) { - throw error; - } - }; - return TrackedFinalizer; -}(RefTracker)); - -function throwNodeApiVersionError(moduleName, moduleApiVersion) { - var errorMessage = "".concat(moduleName, " requires Node-API version ").concat(moduleApiVersion, ", but this version of Node.js only supports version ").concat(NODE_API_SUPPORTED_VERSION_MAX, " add-ons."); - throw new Error(errorMessage); -} -function handleThrow(envObject, value) { - if (envObject.terminatedOrTerminating()) { - return; - } - throw value; -} -var Env = /*#__PURE__*/ (function () { - function Env(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) { - this.ctx = ctx; - this.moduleApiVersion = moduleApiVersion; - this.makeDynCall_vppp = makeDynCall_vppp; - this.makeDynCall_vp = makeDynCall_vp; - this.abort = abort; - this.openHandleScopes = 0; - this.instanceData = null; - this.tryCatch = new TryCatch(); - this.refs = 1; - this.reflist = new RefTracker(); - this.finalizing_reflist = new RefTracker(); - this.pendingFinalizers = []; - this.lastError = { - errorCode: 0 /* napi_status.napi_ok */, - engineErrorCode: 0, - engineReserved: 0 - }; - this.inGcFinalizer = false; - this._bindingMap = new WeakMap(); - this.id = 0; - } - /** @virtual */ - Env.prototype.canCallIntoJs = function () { - return true; - }; - Env.prototype.terminatedOrTerminating = function () { - return !this.canCallIntoJs(); - }; - Env.prototype.ref = function () { - this.refs++; - }; - Env.prototype.unref = function () { - this.refs--; - if (this.refs === 0) { - this.dispose(); - } - }; - Env.prototype.ensureHandle = function (value) { - return this.ctx.ensureHandle(value); - }; - Env.prototype.ensureHandleId = function (value) { - return this.ensureHandle(value).id; - }; - Env.prototype.clearLastError = function () { - var lastError = this.lastError; - if (lastError.errorCode !== 0 /* napi_status.napi_ok */) - lastError.errorCode = 0 /* napi_status.napi_ok */; - if (lastError.engineErrorCode !== 0) - lastError.engineErrorCode = 0; - if (lastError.engineReserved !== 0) - lastError.engineReserved = 0; - return 0 /* napi_status.napi_ok */; - }; - Env.prototype.setLastError = function (error_code, engine_error_code, engine_reserved) { - if (engine_error_code === void 0) { engine_error_code = 0; } - if (engine_reserved === void 0) { engine_reserved = 0; } - var lastError = this.lastError; - if (lastError.errorCode !== error_code) - lastError.errorCode = error_code; - if (lastError.engineErrorCode !== engine_error_code) - lastError.engineErrorCode = engine_error_code; - if (lastError.engineReserved !== engine_reserved) - lastError.engineReserved = engine_reserved; - return error_code; - }; - Env.prototype.getReturnStatus = function () { - return !this.tryCatch.hasCaught() ? 0 /* napi_status.napi_ok */ : this.setLastError(10 /* napi_status.napi_pending_exception */); - }; - Env.prototype.callIntoModule = function (fn, handleException) { - if (handleException === void 0) { handleException = handleThrow; } - var openHandleScopesBefore = this.openHandleScopes; - this.clearLastError(); - var r = fn(this); - if (openHandleScopesBefore !== this.openHandleScopes) { - this.abort('open_handle_scopes != open_handle_scopes_before'); - } - if (this.tryCatch.hasCaught()) { - var err = this.tryCatch.extractException(); - handleException(this, err); - } - return r; - }; - Env.prototype.invokeFinalizerFromGC = function (finalizer) { - if (this.moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { - this.enqueueFinalizer(finalizer); - } - else { - var saved = this.inGcFinalizer; - this.inGcFinalizer = true; - try { - finalizer.finalize(); - } - finally { - this.inGcFinalizer = saved; - } - } - }; - Env.prototype.checkGCAccess = function () { - if (this.moduleApiVersion === NAPI_VERSION_EXPERIMENTAL && this.inGcFinalizer) { - this.abort('Finalizer is calling a function that may affect GC state.\n' + - 'The finalizers are run directly from GC and must not affect GC ' + - 'state.\n' + - 'Use `node_api_post_finalizer` from inside of the finalizer to work ' + - 'around this issue.\n' + - 'It schedules the call as a new task in the event loop.'); - } - }; - /** @virtual */ - Env.prototype.enqueueFinalizer = function (finalizer) { - if (this.pendingFinalizers.indexOf(finalizer) === -1) { - this.pendingFinalizers.push(finalizer); - } - }; - /** @virtual */ - Env.prototype.dequeueFinalizer = function (finalizer) { - var index = this.pendingFinalizers.indexOf(finalizer); - if (index !== -1) { - this.pendingFinalizers.splice(index, 1); - } - }; - /** @virtual */ - Env.prototype.deleteMe = function () { - RefTracker.finalizeAll(this.finalizing_reflist); - RefTracker.finalizeAll(this.reflist); - this.tryCatch.extractException(); - this.ctx.envStore.remove(this.id); - }; - Env.prototype.dispose = function () { - if (this.id === 0) - return; - this.deleteMe(); - this.finalizing_reflist.dispose(); - this.reflist.dispose(); - this.id = 0; - }; - Env.prototype.initObjectBinding = function (value) { - var binding = { - wrapped: 0, - tag: null - }; - this._bindingMap.set(value, binding); - return binding; - }; - Env.prototype.getObjectBinding = function (value) { - if (this._bindingMap.has(value)) { - return this._bindingMap.get(value); - } - return this.initObjectBinding(value); - }; - Env.prototype.setInstanceData = function (data, finalize_cb, finalize_hint) { - if (this.instanceData) { - this.instanceData.dispose(); - } - this.instanceData = TrackedFinalizer.create(this, finalize_cb, data, finalize_hint); - }; - Env.prototype.getInstanceData = function () { - return this.instanceData ? this.instanceData.data() : 0; - }; - return Env; -}()); -var NodeEnv = /*#__PURE__*/ (function (_super) { - __extends(NodeEnv, _super); - function NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - var _this = _super.call(this, ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) || this; - _this.filename = filename; - _this.nodeBinding = nodeBinding; - _this.destructing = false; - _this.finalizationScheduled = false; - return _this; - } - NodeEnv.prototype.deleteMe = function () { - this.destructing = true; - this.drainFinalizerQueue(); - _super.prototype.deleteMe.call(this); - }; - NodeEnv.prototype.canCallIntoJs = function () { - return _super.prototype.canCallIntoJs.call(this) && this.ctx.canCallIntoJs(); - }; - NodeEnv.prototype.triggerFatalException = function (err) { - if (this.nodeBinding) { - this.nodeBinding.napi.fatalException(err); - } - else { - if (typeof process === 'object' && process !== null && typeof process._fatalException === 'function') { - var handled = process._fatalException(err); - if (!handled) { - console.error(err); - process.exit(1); - } - } - else { - throw err; - } - } - }; - NodeEnv.prototype.callbackIntoModule = function (enforceUncaughtExceptionPolicy, fn) { - return this.callIntoModule(fn, function (envObject, err) { - if (envObject.terminatedOrTerminating()) { - return; - } - var hasProcess = typeof process === 'object' && process !== null; - var hasForceFlag = hasProcess ? Boolean(process.execArgv && (process.execArgv.indexOf('--force-node-api-uncaught-exceptions-policy') !== -1)) : false; - if (envObject.moduleApiVersion < 10 && !hasForceFlag && !enforceUncaughtExceptionPolicy) { - var warn = hasProcess && typeof process.emitWarning === 'function' - ? process.emitWarning - : function (warning, type, code) { - if (warning instanceof Error) { - console.warn(warning.toString()); - } - else { - var prefix = code ? "[".concat(code, "] ") : ''; - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - console.warn("".concat(prefix).concat(type || 'Warning', ": ").concat(warning)); - } - }; - warn('Uncaught N-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.', 'DeprecationWarning', 'DEP0168'); - return; - } - envObject.triggerFatalException(err); - }); - }; - NodeEnv.prototype.callFinalizer = function (cb, data, hint) { - this.callFinalizerInternal(1, cb, data, hint); - }; - NodeEnv.prototype.callFinalizerInternal = function (forceUncaught, cb, data, hint) { - var f = this.makeDynCall_vppp(cb); - var env = this.id; - var scope = this.ctx.openScope(this); - try { - this.callbackIntoModule(Boolean(forceUncaught), function () { f(env, data, hint); }); - } - finally { - this.ctx.closeScope(this, scope); - } - }; - NodeEnv.prototype.enqueueFinalizer = function (finalizer) { - var _this = this; - _super.prototype.enqueueFinalizer.call(this, finalizer); - if (!this.finalizationScheduled && !this.destructing) { - this.finalizationScheduled = true; - this.ref(); - _setImmediate(function () { - _this.finalizationScheduled = false; - _this.unref(); - _this.drainFinalizerQueue(); - }); - } - }; - NodeEnv.prototype.drainFinalizerQueue = function () { - while (this.pendingFinalizers.length > 0) { - var refTracker = this.pendingFinalizers.shift(); - refTracker.finalize(); - } - }; - return NodeEnv; -}(Env)); -function newEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - moduleApiVersion = typeof moduleApiVersion !== 'number' ? NODE_API_DEFAULT_MODULE_API_VERSION : moduleApiVersion; - // Validate module_api_version. - if (moduleApiVersion < NODE_API_DEFAULT_MODULE_API_VERSION) { - moduleApiVersion = NODE_API_DEFAULT_MODULE_API_VERSION; - } - else if (moduleApiVersion > NODE_API_SUPPORTED_VERSION_MAX && moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { - throwNodeApiVersionError(filename, moduleApiVersion); - } - var env = new NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); - ctx.envStore.add(env); - ctx.addCleanupHook(env, function () { env.unref(); }, 0); - return env; -} - -var EmnapiError = /*#__PURE__*/ (function (_super) { - __extends(EmnapiError, _super); - function EmnapiError(message) { - var _newTarget = this.constructor; - var _this = _super.call(this, message) || this; - var ErrorConstructor = _newTarget; - var proto = ErrorConstructor.prototype; - if (!(_this instanceof EmnapiError)) { - var setPrototypeOf = Object.setPrototypeOf; - if (typeof setPrototypeOf === 'function') { - setPrototypeOf.call(Object, _this, proto); - } - else { - // eslint-disable-next-line no-proto - _this.__proto__ = proto; - } - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(_this, ErrorConstructor); - } - } - return _this; - } - return EmnapiError; -}(Error)); -Object.defineProperty(EmnapiError.prototype, 'name', { - configurable: true, - writable: true, - value: 'EmnapiError' -}); -var NotSupportWeakRefError = /*#__PURE__*/ (function (_super) { - __extends(NotSupportWeakRefError, _super); - function NotSupportWeakRefError(api, message) { - return _super.call(this, "".concat(api, ": The current runtime does not support \"FinalizationRegistry\" and \"WeakRef\".").concat(message ? " ".concat(message) : '')) || this; - } - return NotSupportWeakRefError; -}(EmnapiError)); -Object.defineProperty(NotSupportWeakRefError.prototype, 'name', { - configurable: true, - writable: true, - value: 'NotSupportWeakRefError' -}); -var NotSupportBufferError = /*#__PURE__*/ (function (_super) { - __extends(NotSupportBufferError, _super); - function NotSupportBufferError(api, message) { - return _super.call(this, "".concat(api, ": The current runtime does not support \"Buffer\". Consider using buffer polyfill to make sure `globalThis.Buffer` is defined.").concat(message ? " ".concat(message) : '')) || this; - } - return NotSupportBufferError; -}(EmnapiError)); -Object.defineProperty(NotSupportBufferError.prototype, 'name', { - configurable: true, - writable: true, - value: 'NotSupportBufferError' -}); - -var StrongRef = /*#__PURE__*/ (function () { - function StrongRef(value) { - this._value = value; - } - StrongRef.prototype.deref = function () { - return this._value; - }; - StrongRef.prototype.dispose = function () { - this._value = undefined; - }; - return StrongRef; -}()); -var Persistent = /*#__PURE__*/ (function () { - function Persistent(value) { - this._ref = new StrongRef(value); - } - Persistent.prototype.setWeak = function (param, callback) { - if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) - return; - var value = this._ref.deref(); - try { - Persistent._registry.register(value, this, this); - var weakRef = new WeakRef(value); - this._ref.dispose(); - this._ref = weakRef; - this._param = param; - this._callback = callback; - } - catch (err) { - if (typeof value === 'symbol') ; - else { - throw err; - } - } - }; - Persistent.prototype.clearWeak = function () { - if (!supportFinalizer || this._ref === undefined) - return; - if (this._ref instanceof WeakRef) { - try { - Persistent._registry.unregister(this); - } - catch (_) { } - this._param = undefined; - this._callback = undefined; - var value = this._ref.deref(); - if (value === undefined) { - this._ref = value; - } - else { - this._ref = new StrongRef(value); - } - } - }; - Persistent.prototype.reset = function () { - if (supportFinalizer) { - try { - Persistent._registry.unregister(this); - } - catch (_) { } - } - this._param = undefined; - this._callback = undefined; - if (this._ref instanceof StrongRef) { - this._ref.dispose(); - } - this._ref = undefined; - }; - Persistent.prototype.isEmpty = function () { - return this._ref === undefined; - }; - Persistent.prototype.deref = function () { - if (this._ref === undefined) - return undefined; - return this._ref.deref(); - }; - Persistent._registry = supportFinalizer - ? new FinalizationRegistry(function (value) { - value._ref = undefined; - var callback = value._callback; - var param = value._param; - value._callback = undefined; - value._param = undefined; - if (typeof callback === 'function') { - callback(param); - } - }) - : undefined; - return Persistent; -}()); - -var ReferenceOwnership; -(function (ReferenceOwnership) { - ReferenceOwnership[ReferenceOwnership["kRuntime"] = 0] = "kRuntime"; - ReferenceOwnership[ReferenceOwnership["kUserland"] = 1] = "kUserland"; -})(ReferenceOwnership || (ReferenceOwnership = {})); -function canBeHeldWeakly(value) { - return value.isObject() || value.isFunction() || value.isSymbol(); -} -var Reference = /*#__PURE__*/ (function (_super) { - __extends(Reference, _super); - function Reference(envObject, handle_id, initialRefcount, ownership) { - var _this = _super.call(this) || this; - _this.envObject = envObject; - _this._refcount = initialRefcount; - _this._ownership = ownership; - var handle = envObject.ctx.handleStore.get(handle_id); - _this.canBeWeak = canBeHeldWeakly(handle); - _this.persistent = new Persistent(handle.value); - _this.id = 0; - if (initialRefcount === 0) { - _this._setWeak(); - } - return _this; - } - Reference.weakCallback = function (ref) { - ref.persistent.reset(); - ref.invokeFinalizerFromGC(); - }; - Reference.create = function (envObject, handle_id, initialRefcount, ownership, _unused1, _unused2, _unused3) { - var ref = new Reference(envObject, handle_id, initialRefcount, ownership); - envObject.ctx.refStore.add(ref); - ref.link(envObject.reflist); - return ref; - }; - Reference.prototype.ref = function () { - if (this.persistent.isEmpty()) { - return 0; - } - if (++this._refcount === 1 && this.canBeWeak) { - this.persistent.clearWeak(); - } - return this._refcount; - }; - Reference.prototype.unref = function () { - if (this.persistent.isEmpty() || this._refcount === 0) { - return 0; - } - if (--this._refcount === 0) { - this._setWeak(); - } - return this._refcount; - }; - Reference.prototype.get = function (envObject) { - if (envObject === void 0) { envObject = this.envObject; } - if (this.persistent.isEmpty()) { - return 0; - } - var obj = this.persistent.deref(); - var handle = envObject.ensureHandle(obj); - return handle.id; - }; - /** @virtual */ - Reference.prototype.resetFinalizer = function () { }; - /** @virtual */ - Reference.prototype.data = function () { return 0; }; - Reference.prototype.refcount = function () { return this._refcount; }; - Reference.prototype.ownership = function () { return this._ownership; }; - /** @virtual */ - Reference.prototype.callUserFinalizer = function () { }; - /** @virtual */ - Reference.prototype.invokeFinalizerFromGC = function () { - this.finalize(); - }; - Reference.prototype._setWeak = function () { - if (this.canBeWeak) { - this.persistent.setWeak(this, Reference.weakCallback); - } - else { - this.persistent.reset(); - } - }; - Reference.prototype.finalize = function () { - this.persistent.reset(); - var deleteMe = this._ownership === ReferenceOwnership.kRuntime; - this.unlink(); - this.callUserFinalizer(); - if (deleteMe) { - this.dispose(); - } - }; - Reference.prototype.dispose = function () { - if (this.id === 0) - return; - this.unlink(); - this.persistent.reset(); - this.envObject.ctx.refStore.remove(this.id); - _super.prototype.dispose.call(this); - this.envObject = undefined; - this.id = 0; - }; - return Reference; -}(RefTracker)); -var ReferenceWithData = /*#__PURE__*/ (function (_super) { - __extends(ReferenceWithData, _super); - function ReferenceWithData(envObject, value, initialRefcount, ownership, _data) { - var _this = _super.call(this, envObject, value, initialRefcount, ownership) || this; - _this._data = _data; - return _this; - } - ReferenceWithData.create = function (envObject, value, initialRefcount, ownership, data) { - var reference = new ReferenceWithData(envObject, value, initialRefcount, ownership, data); - envObject.ctx.refStore.add(reference); - reference.link(envObject.reflist); - return reference; - }; - ReferenceWithData.prototype.data = function () { - return this._data; - }; - return ReferenceWithData; -}(Reference)); -var ReferenceWithFinalizer = /*#__PURE__*/ (function (_super) { - __extends(ReferenceWithFinalizer, _super); - function ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { - var _this = _super.call(this, envObject, value, initialRefcount, ownership) || this; - _this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); - return _this; - } - ReferenceWithFinalizer.create = function (envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { - var reference = new ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); - envObject.ctx.refStore.add(reference); - reference.link(envObject.finalizing_reflist); - return reference; - }; - ReferenceWithFinalizer.prototype.resetFinalizer = function () { - this._finalizer.resetFinalizer(); - }; - ReferenceWithFinalizer.prototype.data = function () { - return this._finalizer.data(); - }; - ReferenceWithFinalizer.prototype.callUserFinalizer = function () { - this._finalizer.callFinalizer(); - }; - ReferenceWithFinalizer.prototype.invokeFinalizerFromGC = function () { - this._finalizer.envObject.invokeFinalizerFromGC(this); - }; - ReferenceWithFinalizer.prototype.dispose = function () { - if (!this._finalizer) - return; - this._finalizer.envObject.dequeueFinalizer(this); - this._finalizer.dispose(); - _super.prototype.dispose.call(this); - this._finalizer = undefined; - }; - return ReferenceWithFinalizer; -}(Reference)); - -var Deferred = /*#__PURE__*/ (function () { - function Deferred(ctx, value) { - this.id = 0; - this.ctx = ctx; - this.value = value; - } - Deferred.create = function (ctx, value) { - var deferred = new Deferred(ctx, value); - ctx.deferredStore.add(deferred); - return deferred; - }; - Deferred.prototype.resolve = function (value) { - this.value.resolve(value); - this.dispose(); - }; - Deferred.prototype.reject = function (reason) { - this.value.reject(reason); - this.dispose(); - }; - Deferred.prototype.dispose = function () { - this.ctx.deferredStore.remove(this.id); - this.id = 0; - this.value = null; - this.ctx = null; - }; - return Deferred; -}()); - -var Store = /*#__PURE__*/ (function () { - function Store() { - this._values = [undefined]; - this._values.length = 4; - this._size = 1; - this._freeList = []; - } - Store.prototype.add = function (value) { - var id; - if (this._freeList.length) { - id = this._freeList.shift(); - } - else { - id = this._size; - this._size++; - var capacity = this._values.length; - if (id >= capacity) { - this._values.length = capacity + (capacity >> 1) + 16; - } - } - value.id = id; - this._values[id] = value; - }; - Store.prototype.get = function (id) { - return this._values[id]; - }; - Store.prototype.has = function (id) { - return this._values[id] !== undefined; - }; - Store.prototype.remove = function (id) { - var value = this._values[id]; - if (value) { - value.id = 0; - this._values[id] = undefined; - this._freeList.push(Number(id)); - } - }; - Store.prototype.dispose = function () { - for (var i = 1; i < this._size; ++i) { - var value = this._values[i]; - value === null || value === void 0 ? void 0 : value.dispose(); - } - this._values = [undefined]; - this._size = 1; - this._freeList = []; - }; - return Store; -}()); - -var CleanupHookCallback = /*#__PURE__*/ (function () { - function CleanupHookCallback(envObject, fn, arg, order) { - this.envObject = envObject; - this.fn = fn; - this.arg = arg; - this.order = order; - } - return CleanupHookCallback; -}()); -var CleanupQueue = /*#__PURE__*/ (function () { - function CleanupQueue() { - this._cleanupHooks = []; - this._cleanupHookCounter = 0; - } - CleanupQueue.prototype.empty = function () { - return this._cleanupHooks.length === 0; - }; - CleanupQueue.prototype.add = function (envObject, fn, arg) { - if (this._cleanupHooks.filter(function (hook) { return (hook.envObject === envObject && hook.fn === fn && hook.arg === arg); }).length > 0) { - throw new Error('Can not add same fn and arg twice'); - } - this._cleanupHooks.push(new CleanupHookCallback(envObject, fn, arg, this._cleanupHookCounter++)); - }; - CleanupQueue.prototype.remove = function (envObject, fn, arg) { - for (var i = 0; i < this._cleanupHooks.length; ++i) { - var hook = this._cleanupHooks[i]; - if (hook.envObject === envObject && hook.fn === fn && hook.arg === arg) { - this._cleanupHooks.splice(i, 1); - return; - } - } - }; - CleanupQueue.prototype.drain = function () { - var hooks = this._cleanupHooks.slice(); - hooks.sort(function (a, b) { return (b.order - a.order); }); - for (var i = 0; i < hooks.length; ++i) { - var cb = hooks[i]; - if (typeof cb.fn === 'number') { - cb.envObject.makeDynCall_vp(cb.fn)(cb.arg); - } - else { - cb.fn(cb.arg); - } - this._cleanupHooks.splice(this._cleanupHooks.indexOf(cb), 1); - } - }; - CleanupQueue.prototype.dispose = function () { - this._cleanupHooks.length = 0; - this._cleanupHookCounter = 0; - }; - return CleanupQueue; -}()); -var NodejsWaitingRequestCounter = /*#__PURE__*/ (function () { - function NodejsWaitingRequestCounter() { - this.refHandle = new _MessageChannel().port1; - this.count = 0; - } - NodejsWaitingRequestCounter.prototype.increase = function () { - if (this.count === 0) { - if (this.refHandle.ref) { - this.refHandle.ref(); - } - } - this.count++; - }; - NodejsWaitingRequestCounter.prototype.decrease = function () { - if (this.count === 0) - return; - if (this.count === 1) { - if (this.refHandle.unref) { - this.refHandle.unref(); - } - } - this.count--; - }; - return NodejsWaitingRequestCounter; -}()); -var Context = /*#__PURE__*/ (function () { - function Context() { - var _this = this; - this._isStopping = false; - this._canCallIntoJs = true; - this._suppressDestroy = false; - this.envStore = new Store(); - this.scopeStore = new ScopeStore(); - this.refStore = new Store(); - this.deferredStore = new Store(); - this.handleStore = new HandleStore(); - this.feature = { - supportReflect: supportReflect, - supportFinalizer: supportFinalizer, - supportWeakSymbol: supportWeakSymbol, - supportBigInt: supportBigInt, - supportNewFunction: supportNewFunction, - canSetFunctionName: canSetFunctionName, - setImmediate: _setImmediate, - Buffer: _Buffer, - MessageChannel: _MessageChannel - }; - this.cleanupQueue = new CleanupQueue(); - if (typeof process === 'object' && process !== null && typeof process.once === 'function') { - this.refCounter = new NodejsWaitingRequestCounter(); - process.once('beforeExit', function () { - if (!_this._suppressDestroy) { - _this.destroy(); - } - }); - } - } - /** - * Suppress the destroy on `beforeExit` event in Node.js. - * Call this method if you want to keep the context and - * all associated {@link Env | Env} alive, - * this also means that cleanup hooks will not be called. - * After call this method, you should call - * {@link Context.destroy | `Context.prototype.destroy`} method manually. - */ - Context.prototype.suppressDestroy = function () { - this._suppressDestroy = true; - }; - // eslint-disable-next-line @typescript-eslint/explicit-function-return-type - Context.prototype.getRuntimeVersions = function () { - return { - version: version, - NODE_API_SUPPORTED_VERSION_MAX: NODE_API_SUPPORTED_VERSION_MAX, - NAPI_VERSION_EXPERIMENTAL: NAPI_VERSION_EXPERIMENTAL, - NODE_API_DEFAULT_MODULE_API_VERSION: NODE_API_DEFAULT_MODULE_API_VERSION - }; - }; - Context.prototype.createNotSupportWeakRefError = function (api, message) { - return new NotSupportWeakRefError(api, message); - }; - Context.prototype.createNotSupportBufferError = function (api, message) { - return new NotSupportBufferError(api, message); - }; - Context.prototype.createReference = function (envObject, handle_id, initialRefcount, ownership) { - return Reference.create(envObject, handle_id, initialRefcount, ownership); - }; - Context.prototype.createReferenceWithData = function (envObject, handle_id, initialRefcount, ownership, data) { - return ReferenceWithData.create(envObject, handle_id, initialRefcount, ownership, data); - }; - Context.prototype.createReferenceWithFinalizer = function (envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { - if (finalize_callback === void 0) { finalize_callback = 0; } - if (finalize_data === void 0) { finalize_data = 0; } - if (finalize_hint === void 0) { finalize_hint = 0; } - return ReferenceWithFinalizer.create(envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); - }; - Context.prototype.createDeferred = function (value) { - return Deferred.create(this, value); - }; - Context.prototype.createEnv = function (filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - return newEnv(this, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); - }; - Context.prototype.createTrackedFinalizer = function (envObject, finalize_callback, finalize_data, finalize_hint) { - return TrackedFinalizer.create(envObject, finalize_callback, finalize_data, finalize_hint); - }; - Context.prototype.getCurrentScope = function () { - return this.scopeStore.currentScope; - }; - Context.prototype.addToCurrentScope = function (value) { - return this.scopeStore.currentScope.add(value); - }; - Context.prototype.openScope = function (envObject) { - var scope = this.scopeStore.openScope(this.handleStore); - if (envObject) - envObject.openHandleScopes++; - return scope; - }; - Context.prototype.closeScope = function (envObject, _scope) { - if (envObject && envObject.openHandleScopes === 0) - return; - this.scopeStore.closeScope(); - if (envObject) - envObject.openHandleScopes--; - }; - Context.prototype.ensureHandle = function (value) { - switch (value) { - case undefined: return HandleStore.UNDEFINED; - case null: return HandleStore.NULL; - case true: return HandleStore.TRUE; - case false: return HandleStore.FALSE; - case _global: return HandleStore.GLOBAL; - } - return this.addToCurrentScope(value); - }; - Context.prototype.addCleanupHook = function (envObject, fn, arg) { - this.cleanupQueue.add(envObject, fn, arg); - }; - Context.prototype.removeCleanupHook = function (envObject, fn, arg) { - this.cleanupQueue.remove(envObject, fn, arg); - }; - Context.prototype.runCleanup = function () { - while (!this.cleanupQueue.empty()) { - this.cleanupQueue.drain(); - } - }; - Context.prototype.increaseWaitingRequestCounter = function () { - var _a; - (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.increase(); - }; - Context.prototype.decreaseWaitingRequestCounter = function () { - var _a; - (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.decrease(); - }; - Context.prototype.setCanCallIntoJs = function (value) { - this._canCallIntoJs = value; - }; - Context.prototype.setStopping = function (value) { - this._isStopping = value; - }; - Context.prototype.canCallIntoJs = function () { - return this._canCallIntoJs && !this._isStopping; - }; - /** - * Destroy the context and call cleanup hooks. - * Associated {@link Env | Env} will be destroyed. - */ - Context.prototype.destroy = function () { - this.setStopping(true); - this.setCanCallIntoJs(false); - this.runCleanup(); - }; - return Context; -}()); -var defaultContext; -function createContext() { - return new Context(); -} -function getDefaultContext() { - if (!defaultContext) { - defaultContext = createContext(); - } - return defaultContext; -} - -export { ConstHandle, Context, Deferred, EmnapiError, Env, External, Finalizer, Handle, HandleScope, HandleStore, NAPI_VERSION_EXPERIMENTAL, NODE_API_DEFAULT_MODULE_API_VERSION, NODE_API_SUPPORTED_VERSION_MAX, NODE_API_SUPPORTED_VERSION_MIN, NodeEnv, NotSupportBufferError, NotSupportWeakRefError, Persistent, RefTracker, Reference, ReferenceOwnership, ReferenceWithData, ReferenceWithFinalizer, ScopeStore, Store, TrackedFinalizer, TryCatch, createContext, getDefaultContext, getExternalValue, isExternal, isReferenceType, version }; diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts b/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts deleted file mode 100644 index 7c53f49..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +++ /dev/null @@ -1,420 +0,0 @@ -declare namespace emnapi { - -export type CleanupHookCallbackFunction = number | ((arg: number) => void); - -export class ConstHandle extends Handle { - constructor(id: number, value: S); - dispose(): void; -} - -export class Context { - private _isStopping; - private _canCallIntoJs; - private _suppressDestroy; - envStore: Store; - scopeStore: ScopeStore; - refStore: Store; - deferredStore: Store>; - handleStore: HandleStore; - private readonly refCounter?; - private readonly cleanupQueue; - feature: { - supportReflect: boolean; - supportFinalizer: boolean; - supportWeakSymbol: boolean; - supportBigInt: boolean; - supportNewFunction: boolean; - canSetFunctionName: boolean; - setImmediate: (callback: () => void) => void; - Buffer: BufferCtor | undefined; - MessageChannel: { - new (): MessageChannel; - prototype: MessageChannel; - } | undefined; - }; - constructor(); - /** - * Suppress the destroy on `beforeExit` event in Node.js. - * Call this method if you want to keep the context and - * all associated {@link Env | Env} alive, - * this also means that cleanup hooks will not be called. - * After call this method, you should call - * {@link Context.destroy | `Context.prototype.destroy`} method manually. - */ - suppressDestroy(): void; - getRuntimeVersions(): { - version: string; - NODE_API_SUPPORTED_VERSION_MAX: Version; - NAPI_VERSION_EXPERIMENTAL: Version; - NODE_API_DEFAULT_MODULE_API_VERSION: Version; - }; - createNotSupportWeakRefError(api: string, message: string): NotSupportWeakRefError; - createNotSupportBufferError(api: string, message: string): NotSupportBufferError; - createReference(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership): Reference; - createReferenceWithData(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): Reference; - createReferenceWithFinalizer(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback?: napi_finalize, finalize_data?: void_p, finalize_hint?: void_p): Reference; - createDeferred(value: IDeferrdValue): Deferred; - createEnv(filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any): Env; - createTrackedFinalizer(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; - getCurrentScope(): HandleScope | null; - addToCurrentScope(value: V): Handle; - openScope(envObject?: Env): HandleScope; - closeScope(envObject?: Env, _scope?: HandleScope): void; - ensureHandle(value: S): Handle; - addCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; - removeCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; - runCleanup(): void; - increaseWaitingRequestCounter(): void; - decreaseWaitingRequestCounter(): void; - setCanCallIntoJs(value: boolean): void; - setStopping(value: boolean): void; - canCallIntoJs(): boolean; - /** - * Destroy the context and call cleanup hooks. - * Associated {@link Env | Env} will be destroyed. - */ - destroy(): void; -} - -export function createContext(): Context; - -export class Deferred implements IStoreValue { - static create(ctx: Context, value: IDeferrdValue): Deferred; - id: number; - ctx: Context; - value: IDeferrdValue; - constructor(ctx: Context, value: IDeferrdValue); - resolve(value: T): void; - reject(reason?: any): void; - dispose(): void; -} - -export class EmnapiError extends Error { - constructor(message?: string); -} - -export abstract class Env implements IStoreValue { - readonly ctx: Context; - moduleApiVersion: number; - makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void; - makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void; - abort: (msg?: string) => never; - id: number; - openHandleScopes: number; - instanceData: TrackedFinalizer | null; - tryCatch: TryCatch; - refs: number; - reflist: RefTracker; - finalizing_reflist: RefTracker; - pendingFinalizers: RefTracker[]; - lastError: { - errorCode: napi_status; - engineErrorCode: number; - engineReserved: Ptr; - }; - inGcFinalizer: boolean; - constructor(ctx: Context, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never); - /** @virtual */ - canCallIntoJs(): boolean; - terminatedOrTerminating(): boolean; - ref(): void; - unref(): void; - ensureHandle(value: S): Handle; - ensureHandleId(value: any): napi_value; - clearLastError(): napi_status; - setLastError(error_code: napi_status, engine_error_code?: uint32_t, engine_reserved?: void_p): napi_status; - getReturnStatus(): napi_status; - callIntoModule(fn: (env: Env) => T, handleException?: (envObject: Env, value: any) => void): T; - /** @virtual */ - abstract callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; - invokeFinalizerFromGC(finalizer: RefTracker): void; - checkGCAccess(): void; - /** @virtual */ - enqueueFinalizer(finalizer: RefTracker): void; - /** @virtual */ - dequeueFinalizer(finalizer: RefTracker): void; - /** @virtual */ - deleteMe(): void; - dispose(): void; - private readonly _bindingMap; - initObjectBinding(value: S): IReferenceBinding; - getObjectBinding(value: S): IReferenceBinding; - setInstanceData(data: number, finalize_cb: number, finalize_hint: number): void; - getInstanceData(): number; -} - -/** @public */ -interface External_2 extends Record { -} - -/** @public */ -const External_2: { - new (value: number | bigint): External_2; - prototype: null; -}; -export { External_2 as External } - -export class Finalizer { - envObject: Env; - private _finalizeCallback; - private _finalizeData; - private _finalizeHint; - private _makeDynCall_vppp; - constructor(envObject: Env, _finalizeCallback?: napi_finalize, _finalizeData?: void_p, _finalizeHint?: void_p); - callback(): napi_finalize; - data(): void_p; - hint(): void_p; - resetEnv(): void; - resetFinalizer(): void; - callFinalizer(): void; - dispose(): void; -} - -export function getDefaultContext(): Context; - -/** @public */ -export function getExternalValue(external: External_2): number | bigint; - -export class Handle { - id: number; - value: S; - constructor(id: number, value: S); - data(): void_p; - isNumber(): boolean; - isBigInt(): boolean; - isString(): boolean; - isFunction(): boolean; - isExternal(): boolean; - isObject(): boolean; - isArray(): boolean; - isArrayBuffer(): boolean; - isTypedArray(): boolean; - isBuffer(BufferConstructor?: BufferCtor): boolean; - isDataView(): boolean; - isDate(): boolean; - isPromise(): boolean; - isBoolean(): boolean; - isUndefined(): boolean; - isSymbol(): boolean; - isNull(): boolean; - dispose(): void; -} - -export class HandleScope { - handleStore: HandleStore; - id: number; - parent: HandleScope | null; - child: HandleScope | null; - start: number; - end: number; - private _escapeCalled; - callbackInfo: ICallbackInfo; - constructor(handleStore: HandleStore, id: number, parentScope: HandleScope | null, start: number, end?: number); - add(value: V): Handle; - addExternal(data: void_p): Handle; - dispose(): void; - escape(handle: number): Handle | null; - escapeCalled(): boolean; -} - -export class HandleStore { - static UNDEFINED: ConstHandle; - static NULL: ConstHandle; - static FALSE: ConstHandle; - static TRUE: ConstHandle; - static GLOBAL: ConstHandle; - static MIN_ID: 6; - private readonly _values; - private _next; - push(value: S): Handle; - erase(start: number, end: number): void; - get(id: Ptr): Handle | undefined; - swap(a: number, b: number): void; - dispose(): void; -} - -export interface ICallbackInfo { - thiz: any; - data: void_p; - args: ArrayLike; - fn: Function; -} - -export interface IDeferrdValue { - resolve: (value: T) => void; - reject: (reason?: any) => void; -} - -export interface IReferenceBinding { - wrapped: number; - tag: Uint32Array | null; -} - -/** @public */ -export function isExternal(object: unknown): object is External_2; - -export function isReferenceType(v: any): v is object; - -export interface IStoreValue { - id: number; - dispose(): void; - [x: string]: any; -} - -export const NAPI_VERSION_EXPERIMENTAL = Version.NAPI_VERSION_EXPERIMENTAL; - -export const NODE_API_DEFAULT_MODULE_API_VERSION = Version.NODE_API_DEFAULT_MODULE_API_VERSION; - -export const NODE_API_SUPPORTED_VERSION_MAX = Version.NODE_API_SUPPORTED_VERSION_MAX; - -export const NODE_API_SUPPORTED_VERSION_MIN = Version.NODE_API_SUPPORTED_VERSION_MIN; - -export class NodeEnv extends Env { - filename: string; - private readonly nodeBinding?; - destructing: boolean; - finalizationScheduled: boolean; - constructor(ctx: Context, filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any); - deleteMe(): void; - canCallIntoJs(): boolean; - triggerFatalException(err: any): void; - callbackIntoModule(enforceUncaughtExceptionPolicy: boolean, fn: (env: Env) => T): T; - callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; - callFinalizerInternal(forceUncaught: int, cb: napi_finalize, data: void_p, hint: void_p): void; - enqueueFinalizer(finalizer: RefTracker): void; - drainFinalizerQueue(): void; -} - -export class NotSupportBufferError extends EmnapiError { - constructor(api: string, message: string); -} - -export class NotSupportWeakRefError extends EmnapiError { - constructor(api: string, message: string); -} - -export class Persistent { - private _ref; - private _param; - private _callback; - private static readonly _registry; - constructor(value: T); - setWeak

(param: P, callback: (param: P) => void): void; - clearWeak(): void; - reset(): void; - isEmpty(): boolean; - deref(): T | undefined; -} - -export class Reference extends RefTracker implements IStoreValue { - private static weakCallback; - id: number; - envObject: Env; - private readonly canBeWeak; - private _refcount; - private readonly _ownership; - persistent: Persistent; - static create(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, _unused1?: void_p, _unused2?: void_p, _unused3?: void_p): Reference; - protected constructor(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership); - ref(): number; - unref(): number; - get(envObject?: Env): napi_value; - /** @virtual */ - resetFinalizer(): void; - /** @virtual */ - data(): void_p; - refcount(): number; - ownership(): ReferenceOwnership; - /** @virtual */ - protected callUserFinalizer(): void; - /** @virtual */ - protected invokeFinalizerFromGC(): void; - private _setWeak; - finalize(): void; - dispose(): void; -} - -export enum ReferenceOwnership { - kRuntime = 0, - kUserland = 1 -} - -export class ReferenceWithData extends Reference { - private readonly _data; - static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): ReferenceWithData; - private constructor(); - data(): void_p; -} - -export class ReferenceWithFinalizer extends Reference { - private _finalizer; - static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): ReferenceWithFinalizer; - private constructor(); - resetFinalizer(): void; - data(): void_p; - protected callUserFinalizer(): void; - protected invokeFinalizerFromGC(): void; - dispose(): void; -} - -export class RefTracker { - /** @virtual */ - dispose(): void; - /** @virtual */ - finalize(): void; - private _next; - private _prev; - link(list: RefTracker): void; - unlink(): void; - static finalizeAll(list: RefTracker): void; -} - -export class ScopeStore { - private readonly _rootScope; - currentScope: HandleScope; - private readonly _values; - constructor(); - get(id: number): HandleScope | undefined; - openScope(handleStore: HandleStore): HandleScope; - closeScope(): void; - dispose(): void; -} - -export class Store { - protected _values: Array; - private _freeList; - private _size; - constructor(); - add(value: V): void; - get(id: Ptr): V | undefined; - has(id: Ptr): boolean; - remove(id: Ptr): void; - dispose(): void; -} - -export class TrackedFinalizer extends RefTracker { - private _finalizer; - static create(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; - private constructor(); - data(): void_p; - dispose(): void; - finalize(): void; -} - -export class TryCatch { - private _exception; - private _caught; - isEmpty(): boolean; - hasCaught(): boolean; - exception(): any; - setError(err: any): void; - reset(): void; - extractException(): any; -} - -export const version: string; - - - - -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.iife.js b/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.iife.js deleted file mode 100644 index c78dec0..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.iife.js +++ /dev/null @@ -1,1481 +0,0 @@ -var emnapi = (function (exports) { - - /****************************************************************************** - Copyright (c) Microsoft Corporation. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - 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. - ***************************************************************************** */ - /* global Reflect, Promise, SuppressedError, Symbol, Iterator */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; - }; - - var externalValue = new WeakMap(); - /** @public */ - function isExternal(object) { - return externalValue.has(object); - } - /** @public */ // eslint-disable-next-line @typescript-eslint/no-redeclare - var External = (function () { - function External(value) { - Object.setPrototypeOf(this, null); - externalValue.set(this, value); - } - External.prototype = null; - return External; - })(); - /** @public */ - function getExternalValue(external) { - if (!isExternal(external)) { - throw new TypeError('not external'); - } - return externalValue.get(external); - } - - var supportNewFunction = /*#__PURE__*/ (function () { - var f; - try { - f = new Function(); - } - catch (_) { - return false; - } - return typeof f === 'function'; - })(); - var _global = /*#__PURE__*/ (function () { - if (typeof globalThis !== 'undefined') - return globalThis; - var g = (function () { return this; })(); - if (!g && supportNewFunction) { - try { - g = new Function('return this')(); - } - catch (_) { } - } - if (!g) { - if (typeof __webpack_public_path__ === 'undefined') { - if (typeof global !== 'undefined') - return global; - } - if (typeof window !== 'undefined') - return window; - if (typeof self !== 'undefined') - return self; - } - return g; - })(); - var TryCatch = /*#__PURE__*/ (function () { - function TryCatch() { - this._exception = undefined; - this._caught = false; - } - TryCatch.prototype.isEmpty = function () { - return !this._caught; - }; - TryCatch.prototype.hasCaught = function () { - return this._caught; - }; - TryCatch.prototype.exception = function () { - return this._exception; - }; - TryCatch.prototype.setError = function (err) { - this._caught = true; - this._exception = err; - }; - TryCatch.prototype.reset = function () { - this._caught = false; - this._exception = undefined; - }; - TryCatch.prototype.extractException = function () { - var e = this._exception; - this.reset(); - return e; - }; - return TryCatch; - }()); - var canSetFunctionName = /*#__PURE__*/ (function () { - var _a; - try { - return Boolean((_a = Object.getOwnPropertyDescriptor(Function.prototype, 'name')) === null || _a === void 0 ? void 0 : _a.configurable); - } - catch (_) { - return false; - } - })(); - var supportReflect = typeof Reflect === 'object'; - var supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); - var supportWeakSymbol = /*#__PURE__*/ (function () { - try { - // eslint-disable-next-line symbol-description - var sym = Symbol(); - // eslint-disable-next-line no-new - new WeakRef(sym); - new WeakMap().set(sym, undefined); - } - catch (_) { - return false; - } - return true; - })(); - var supportBigInt = typeof BigInt !== 'undefined'; - function isReferenceType(v) { - return (typeof v === 'object' && v !== null) || typeof v === 'function'; - } - var _require = /*#__PURE__*/ (function () { - var nativeRequire; - if (typeof __webpack_public_path__ !== 'undefined') { - nativeRequire = (function () { - return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; - })(); - } - else { - nativeRequire = (function () { - return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); - })(); - } - return nativeRequire; - })(); - var _MessageChannel = typeof MessageChannel === 'function' - ? MessageChannel - : /*#__PURE__*/ (function () { - try { - return _require('worker_threads').MessageChannel; - } - catch (_) { } - return undefined; - })(); - var _setImmediate = typeof setImmediate === 'function' - ? setImmediate - : function (callback) { - if (typeof callback !== 'function') { - throw new TypeError('The "callback" argument must be of type function'); - } - if (_MessageChannel) { - var channel_1 = new _MessageChannel(); - channel_1.port1.onmessage = function () { - channel_1.port1.onmessage = null; - channel_1 = undefined; - callback(); - }; - channel_1.port2.postMessage(null); - } - else { - setTimeout(callback, 0); - } - }; - var _Buffer = typeof Buffer === 'function' - ? Buffer - : /*#__PURE__*/ (function () { - try { - return _require('buffer').Buffer; - } - catch (_) { } - return undefined; - })(); - var version = "1.8.1"; - var NODE_API_SUPPORTED_VERSION_MIN = 1 /* Version.NODE_API_SUPPORTED_VERSION_MIN */; - var NODE_API_SUPPORTED_VERSION_MAX = 10 /* Version.NODE_API_SUPPORTED_VERSION_MAX */; - var NAPI_VERSION_EXPERIMENTAL = 2147483647 /* Version.NAPI_VERSION_EXPERIMENTAL */; - var NODE_API_DEFAULT_MODULE_API_VERSION = 8 /* Version.NODE_API_DEFAULT_MODULE_API_VERSION */; - - var Handle = /*#__PURE__*/ (function () { - function Handle(id, value) { - this.id = id; - this.value = value; - } - Handle.prototype.data = function () { - return getExternalValue(this.value); - }; - Handle.prototype.isNumber = function () { - return typeof this.value === 'number'; - }; - Handle.prototype.isBigInt = function () { - return typeof this.value === 'bigint'; - }; - Handle.prototype.isString = function () { - return typeof this.value === 'string'; - }; - Handle.prototype.isFunction = function () { - return typeof this.value === 'function'; - }; - Handle.prototype.isExternal = function () { - return isExternal(this.value); - }; - Handle.prototype.isObject = function () { - return typeof this.value === 'object' && this.value !== null; - }; - Handle.prototype.isArray = function () { - return Array.isArray(this.value); - }; - Handle.prototype.isArrayBuffer = function () { - return (this.value instanceof ArrayBuffer); - }; - Handle.prototype.isTypedArray = function () { - return (ArrayBuffer.isView(this.value)) && !(this.value instanceof DataView); - }; - Handle.prototype.isBuffer = function (BufferConstructor) { - if (ArrayBuffer.isView(this.value)) - return true; - BufferConstructor !== null && BufferConstructor !== void 0 ? BufferConstructor : (BufferConstructor = _Buffer); - return typeof BufferConstructor === 'function' && BufferConstructor.isBuffer(this.value); - }; - Handle.prototype.isDataView = function () { - return (this.value instanceof DataView); - }; - Handle.prototype.isDate = function () { - return (this.value instanceof Date); - }; - Handle.prototype.isPromise = function () { - return (this.value instanceof Promise); - }; - Handle.prototype.isBoolean = function () { - return typeof this.value === 'boolean'; - }; - Handle.prototype.isUndefined = function () { - return this.value === undefined; - }; - Handle.prototype.isSymbol = function () { - return typeof this.value === 'symbol'; - }; - Handle.prototype.isNull = function () { - return this.value === null; - }; - Handle.prototype.dispose = function () { - this.value = undefined; - }; - return Handle; - }()); - var ConstHandle = /*#__PURE__*/ (function (_super) { - __extends(ConstHandle, _super); - function ConstHandle(id, value) { - return _super.call(this, id, value) || this; - } - ConstHandle.prototype.dispose = function () { }; - return ConstHandle; - }(Handle)); - var HandleStore = /*#__PURE__*/ (function () { - function HandleStore() { - this._values = [ - undefined, - HandleStore.UNDEFINED, - HandleStore.NULL, - HandleStore.FALSE, - HandleStore.TRUE, - HandleStore.GLOBAL - ]; - this._next = HandleStore.MIN_ID; - } - HandleStore.prototype.push = function (value) { - var h; - var next = this._next; - var values = this._values; - if (next < values.length) { - h = values[next]; - h.value = value; - } - else { - h = new Handle(next, value); - values[next] = h; - } - this._next++; - return h; - }; - HandleStore.prototype.erase = function (start, end) { - this._next = start; - var values = this._values; - for (var i = start; i < end; ++i) { - values[i].dispose(); - } - }; - HandleStore.prototype.get = function (id) { - return this._values[id]; - }; - HandleStore.prototype.swap = function (a, b) { - var values = this._values; - var h = values[a]; - values[a] = values[b]; - values[a].id = Number(a); - values[b] = h; - h.id = Number(b); - }; - HandleStore.prototype.dispose = function () { - this._values.length = HandleStore.MIN_ID; - this._next = HandleStore.MIN_ID; - }; - HandleStore.UNDEFINED = new ConstHandle(1 /* GlobalHandle.UNDEFINED */, undefined); - HandleStore.NULL = new ConstHandle(2 /* GlobalHandle.NULL */, null); - HandleStore.FALSE = new ConstHandle(3 /* GlobalHandle.FALSE */, false); - HandleStore.TRUE = new ConstHandle(4 /* GlobalHandle.TRUE */, true); - HandleStore.GLOBAL = new ConstHandle(5 /* GlobalHandle.GLOBAL */, _global); - HandleStore.MIN_ID = 6; - return HandleStore; - }()); - - var HandleScope = /*#__PURE__*/ (function () { - function HandleScope(handleStore, id, parentScope, start, end) { - if (end === void 0) { end = start; } - this.handleStore = handleStore; - this.id = id; - this.parent = parentScope; - this.child = null; - if (parentScope !== null) - parentScope.child = this; - this.start = start; - this.end = end; - this._escapeCalled = false; - this.callbackInfo = { - thiz: undefined, - data: 0, - args: undefined, - fn: undefined - }; - } - HandleScope.prototype.add = function (value) { - var h = this.handleStore.push(value); - this.end++; - return h; - }; - HandleScope.prototype.addExternal = function (data) { - return this.add(new External(data)); - }; - HandleScope.prototype.dispose = function () { - if (this._escapeCalled) - this._escapeCalled = false; - if (this.start === this.end) - return; - this.handleStore.erase(this.start, this.end); - }; - HandleScope.prototype.escape = function (handle) { - if (this._escapeCalled) - return null; - this._escapeCalled = true; - if (handle < this.start || handle >= this.end) { - return null; - } - this.handleStore.swap(handle, this.start); - var h = this.handleStore.get(this.start); - this.start++; - this.parent.end++; - return h; - }; - HandleScope.prototype.escapeCalled = function () { - return this._escapeCalled; - }; - return HandleScope; - }()); - - var ScopeStore = /*#__PURE__*/ (function () { - function ScopeStore() { - this._rootScope = new HandleScope(null, 0, null, 1, HandleStore.MIN_ID); - this.currentScope = this._rootScope; - this._values = [undefined]; - } - ScopeStore.prototype.get = function (id) { - return this._values[id]; - }; - ScopeStore.prototype.openScope = function (handleStore) { - var currentScope = this.currentScope; - var scope = currentScope.child; - if (scope !== null) { - scope.start = scope.end = currentScope.end; - } - else { - var id = currentScope.id + 1; - scope = new HandleScope(handleStore, id, currentScope, currentScope.end); - this._values[id] = scope; - } - this.currentScope = scope; - return scope; - }; - ScopeStore.prototype.closeScope = function () { - var scope = this.currentScope; - this.currentScope = scope.parent; - scope.dispose(); - }; - ScopeStore.prototype.dispose = function () { - this.currentScope = this._rootScope; - this._values.length = 1; - }; - return ScopeStore; - }()); - - var RefTracker = /*#__PURE__*/ (function () { - function RefTracker() { - this._next = null; - this._prev = null; - } - /** @virtual */ - RefTracker.prototype.dispose = function () { }; - /** @virtual */ - RefTracker.prototype.finalize = function () { }; - RefTracker.prototype.link = function (list) { - this._prev = list; - this._next = list._next; - if (this._next !== null) { - this._next._prev = this; - } - list._next = this; - }; - RefTracker.prototype.unlink = function () { - if (this._prev !== null) { - this._prev._next = this._next; - } - if (this._next !== null) { - this._next._prev = this._prev; - } - this._prev = null; - this._next = null; - }; - RefTracker.finalizeAll = function (list) { - while (list._next !== null) { - list._next.finalize(); - } - }; - return RefTracker; - }()); - - var Finalizer = /*#__PURE__*/ (function () { - function Finalizer(envObject, _finalizeCallback, _finalizeData, _finalizeHint) { - if (_finalizeCallback === void 0) { _finalizeCallback = 0; } - if (_finalizeData === void 0) { _finalizeData = 0; } - if (_finalizeHint === void 0) { _finalizeHint = 0; } - this.envObject = envObject; - this._finalizeCallback = _finalizeCallback; - this._finalizeData = _finalizeData; - this._finalizeHint = _finalizeHint; - this._makeDynCall_vppp = envObject.makeDynCall_vppp; - } - Finalizer.prototype.callback = function () { return this._finalizeCallback; }; - Finalizer.prototype.data = function () { return this._finalizeData; }; - Finalizer.prototype.hint = function () { return this._finalizeHint; }; - Finalizer.prototype.resetEnv = function () { - this.envObject = undefined; - }; - Finalizer.prototype.resetFinalizer = function () { - this._finalizeCallback = 0; - this._finalizeData = 0; - this._finalizeHint = 0; - }; - Finalizer.prototype.callFinalizer = function () { - var finalize_callback = this._finalizeCallback; - var finalize_data = this._finalizeData; - var finalize_hint = this._finalizeHint; - this.resetFinalizer(); - if (!finalize_callback) - return; - var fini = Number(finalize_callback); - if (!this.envObject) { - this._makeDynCall_vppp(fini)(0, finalize_data, finalize_hint); - } - else { - this.envObject.callFinalizer(fini, finalize_data, finalize_hint); - } - }; - Finalizer.prototype.dispose = function () { - this.envObject = undefined; - this._makeDynCall_vppp = undefined; - }; - return Finalizer; - }()); - - var TrackedFinalizer = /*#__PURE__*/ (function (_super) { - __extends(TrackedFinalizer, _super); - function TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint) { - var _this = _super.call(this) || this; - _this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); - return _this; - } - TrackedFinalizer.create = function (envObject, finalize_callback, finalize_data, finalize_hint) { - var finalizer = new TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint); - finalizer.link(envObject.finalizing_reflist); - return finalizer; - }; - TrackedFinalizer.prototype.data = function () { - return this._finalizer.data(); - }; - TrackedFinalizer.prototype.dispose = function () { - if (!this._finalizer) - return; - this.unlink(); - this._finalizer.envObject.dequeueFinalizer(this); - this._finalizer.dispose(); - this._finalizer = undefined; - _super.prototype.dispose.call(this); - }; - TrackedFinalizer.prototype.finalize = function () { - this.unlink(); - var error; - var caught = false; - try { - this._finalizer.callFinalizer(); - } - catch (err) { - caught = true; - error = err; - } - this.dispose(); - if (caught) { - throw error; - } - }; - return TrackedFinalizer; - }(RefTracker)); - - function throwNodeApiVersionError(moduleName, moduleApiVersion) { - var errorMessage = "".concat(moduleName, " requires Node-API version ").concat(moduleApiVersion, ", but this version of Node.js only supports version ").concat(NODE_API_SUPPORTED_VERSION_MAX, " add-ons."); - throw new Error(errorMessage); - } - function handleThrow(envObject, value) { - if (envObject.terminatedOrTerminating()) { - return; - } - throw value; - } - var Env = /*#__PURE__*/ (function () { - function Env(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) { - this.ctx = ctx; - this.moduleApiVersion = moduleApiVersion; - this.makeDynCall_vppp = makeDynCall_vppp; - this.makeDynCall_vp = makeDynCall_vp; - this.abort = abort; - this.openHandleScopes = 0; - this.instanceData = null; - this.tryCatch = new TryCatch(); - this.refs = 1; - this.reflist = new RefTracker(); - this.finalizing_reflist = new RefTracker(); - this.pendingFinalizers = []; - this.lastError = { - errorCode: 0 /* napi_status.napi_ok */, - engineErrorCode: 0, - engineReserved: 0 - }; - this.inGcFinalizer = false; - this._bindingMap = new WeakMap(); - this.id = 0; - } - /** @virtual */ - Env.prototype.canCallIntoJs = function () { - return true; - }; - Env.prototype.terminatedOrTerminating = function () { - return !this.canCallIntoJs(); - }; - Env.prototype.ref = function () { - this.refs++; - }; - Env.prototype.unref = function () { - this.refs--; - if (this.refs === 0) { - this.dispose(); - } - }; - Env.prototype.ensureHandle = function (value) { - return this.ctx.ensureHandle(value); - }; - Env.prototype.ensureHandleId = function (value) { - return this.ensureHandle(value).id; - }; - Env.prototype.clearLastError = function () { - var lastError = this.lastError; - if (lastError.errorCode !== 0 /* napi_status.napi_ok */) - lastError.errorCode = 0 /* napi_status.napi_ok */; - if (lastError.engineErrorCode !== 0) - lastError.engineErrorCode = 0; - if (lastError.engineReserved !== 0) - lastError.engineReserved = 0; - return 0 /* napi_status.napi_ok */; - }; - Env.prototype.setLastError = function (error_code, engine_error_code, engine_reserved) { - if (engine_error_code === void 0) { engine_error_code = 0; } - if (engine_reserved === void 0) { engine_reserved = 0; } - var lastError = this.lastError; - if (lastError.errorCode !== error_code) - lastError.errorCode = error_code; - if (lastError.engineErrorCode !== engine_error_code) - lastError.engineErrorCode = engine_error_code; - if (lastError.engineReserved !== engine_reserved) - lastError.engineReserved = engine_reserved; - return error_code; - }; - Env.prototype.getReturnStatus = function () { - return !this.tryCatch.hasCaught() ? 0 /* napi_status.napi_ok */ : this.setLastError(10 /* napi_status.napi_pending_exception */); - }; - Env.prototype.callIntoModule = function (fn, handleException) { - if (handleException === void 0) { handleException = handleThrow; } - var openHandleScopesBefore = this.openHandleScopes; - this.clearLastError(); - var r = fn(this); - if (openHandleScopesBefore !== this.openHandleScopes) { - this.abort('open_handle_scopes != open_handle_scopes_before'); - } - if (this.tryCatch.hasCaught()) { - var err = this.tryCatch.extractException(); - handleException(this, err); - } - return r; - }; - Env.prototype.invokeFinalizerFromGC = function (finalizer) { - if (this.moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { - this.enqueueFinalizer(finalizer); - } - else { - var saved = this.inGcFinalizer; - this.inGcFinalizer = true; - try { - finalizer.finalize(); - } - finally { - this.inGcFinalizer = saved; - } - } - }; - Env.prototype.checkGCAccess = function () { - if (this.moduleApiVersion === NAPI_VERSION_EXPERIMENTAL && this.inGcFinalizer) { - this.abort('Finalizer is calling a function that may affect GC state.\n' + - 'The finalizers are run directly from GC and must not affect GC ' + - 'state.\n' + - 'Use `node_api_post_finalizer` from inside of the finalizer to work ' + - 'around this issue.\n' + - 'It schedules the call as a new task in the event loop.'); - } - }; - /** @virtual */ - Env.prototype.enqueueFinalizer = function (finalizer) { - if (this.pendingFinalizers.indexOf(finalizer) === -1) { - this.pendingFinalizers.push(finalizer); - } - }; - /** @virtual */ - Env.prototype.dequeueFinalizer = function (finalizer) { - var index = this.pendingFinalizers.indexOf(finalizer); - if (index !== -1) { - this.pendingFinalizers.splice(index, 1); - } - }; - /** @virtual */ - Env.prototype.deleteMe = function () { - RefTracker.finalizeAll(this.finalizing_reflist); - RefTracker.finalizeAll(this.reflist); - this.tryCatch.extractException(); - this.ctx.envStore.remove(this.id); - }; - Env.prototype.dispose = function () { - if (this.id === 0) - return; - this.deleteMe(); - this.finalizing_reflist.dispose(); - this.reflist.dispose(); - this.id = 0; - }; - Env.prototype.initObjectBinding = function (value) { - var binding = { - wrapped: 0, - tag: null - }; - this._bindingMap.set(value, binding); - return binding; - }; - Env.prototype.getObjectBinding = function (value) { - if (this._bindingMap.has(value)) { - return this._bindingMap.get(value); - } - return this.initObjectBinding(value); - }; - Env.prototype.setInstanceData = function (data, finalize_cb, finalize_hint) { - if (this.instanceData) { - this.instanceData.dispose(); - } - this.instanceData = TrackedFinalizer.create(this, finalize_cb, data, finalize_hint); - }; - Env.prototype.getInstanceData = function () { - return this.instanceData ? this.instanceData.data() : 0; - }; - return Env; - }()); - var NodeEnv = /*#__PURE__*/ (function (_super) { - __extends(NodeEnv, _super); - function NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - var _this = _super.call(this, ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) || this; - _this.filename = filename; - _this.nodeBinding = nodeBinding; - _this.destructing = false; - _this.finalizationScheduled = false; - return _this; - } - NodeEnv.prototype.deleteMe = function () { - this.destructing = true; - this.drainFinalizerQueue(); - _super.prototype.deleteMe.call(this); - }; - NodeEnv.prototype.canCallIntoJs = function () { - return _super.prototype.canCallIntoJs.call(this) && this.ctx.canCallIntoJs(); - }; - NodeEnv.prototype.triggerFatalException = function (err) { - if (this.nodeBinding) { - this.nodeBinding.napi.fatalException(err); - } - else { - if (typeof process === 'object' && process !== null && typeof process._fatalException === 'function') { - var handled = process._fatalException(err); - if (!handled) { - console.error(err); - process.exit(1); - } - } - else { - throw err; - } - } - }; - NodeEnv.prototype.callbackIntoModule = function (enforceUncaughtExceptionPolicy, fn) { - return this.callIntoModule(fn, function (envObject, err) { - if (envObject.terminatedOrTerminating()) { - return; - } - var hasProcess = typeof process === 'object' && process !== null; - var hasForceFlag = hasProcess ? Boolean(process.execArgv && (process.execArgv.indexOf('--force-node-api-uncaught-exceptions-policy') !== -1)) : false; - if (envObject.moduleApiVersion < 10 && !hasForceFlag && !enforceUncaughtExceptionPolicy) { - var warn = hasProcess && typeof process.emitWarning === 'function' - ? process.emitWarning - : function (warning, type, code) { - if (warning instanceof Error) { - console.warn(warning.toString()); - } - else { - var prefix = code ? "[".concat(code, "] ") : ''; - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - console.warn("".concat(prefix).concat(type || 'Warning', ": ").concat(warning)); - } - }; - warn('Uncaught N-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.', 'DeprecationWarning', 'DEP0168'); - return; - } - envObject.triggerFatalException(err); - }); - }; - NodeEnv.prototype.callFinalizer = function (cb, data, hint) { - this.callFinalizerInternal(1, cb, data, hint); - }; - NodeEnv.prototype.callFinalizerInternal = function (forceUncaught, cb, data, hint) { - var f = this.makeDynCall_vppp(cb); - var env = this.id; - var scope = this.ctx.openScope(this); - try { - this.callbackIntoModule(Boolean(forceUncaught), function () { f(env, data, hint); }); - } - finally { - this.ctx.closeScope(this, scope); - } - }; - NodeEnv.prototype.enqueueFinalizer = function (finalizer) { - var _this = this; - _super.prototype.enqueueFinalizer.call(this, finalizer); - if (!this.finalizationScheduled && !this.destructing) { - this.finalizationScheduled = true; - this.ref(); - _setImmediate(function () { - _this.finalizationScheduled = false; - _this.unref(); - _this.drainFinalizerQueue(); - }); - } - }; - NodeEnv.prototype.drainFinalizerQueue = function () { - while (this.pendingFinalizers.length > 0) { - var refTracker = this.pendingFinalizers.shift(); - refTracker.finalize(); - } - }; - return NodeEnv; - }(Env)); - function newEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - moduleApiVersion = typeof moduleApiVersion !== 'number' ? NODE_API_DEFAULT_MODULE_API_VERSION : moduleApiVersion; - // Validate module_api_version. - if (moduleApiVersion < NODE_API_DEFAULT_MODULE_API_VERSION) { - moduleApiVersion = NODE_API_DEFAULT_MODULE_API_VERSION; - } - else if (moduleApiVersion > NODE_API_SUPPORTED_VERSION_MAX && moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { - throwNodeApiVersionError(filename, moduleApiVersion); - } - var env = new NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); - ctx.envStore.add(env); - ctx.addCleanupHook(env, function () { env.unref(); }, 0); - return env; - } - - var EmnapiError = /*#__PURE__*/ (function (_super) { - __extends(EmnapiError, _super); - function EmnapiError(message) { - var _newTarget = this.constructor; - var _this = _super.call(this, message) || this; - var ErrorConstructor = _newTarget; - var proto = ErrorConstructor.prototype; - if (!(_this instanceof EmnapiError)) { - var setPrototypeOf = Object.setPrototypeOf; - if (typeof setPrototypeOf === 'function') { - setPrototypeOf.call(Object, _this, proto); - } - else { - // eslint-disable-next-line no-proto - _this.__proto__ = proto; - } - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(_this, ErrorConstructor); - } - } - return _this; - } - return EmnapiError; - }(Error)); - Object.defineProperty(EmnapiError.prototype, 'name', { - configurable: true, - writable: true, - value: 'EmnapiError' - }); - var NotSupportWeakRefError = /*#__PURE__*/ (function (_super) { - __extends(NotSupportWeakRefError, _super); - function NotSupportWeakRefError(api, message) { - return _super.call(this, "".concat(api, ": The current runtime does not support \"FinalizationRegistry\" and \"WeakRef\".").concat(message ? " ".concat(message) : '')) || this; - } - return NotSupportWeakRefError; - }(EmnapiError)); - Object.defineProperty(NotSupportWeakRefError.prototype, 'name', { - configurable: true, - writable: true, - value: 'NotSupportWeakRefError' - }); - var NotSupportBufferError = /*#__PURE__*/ (function (_super) { - __extends(NotSupportBufferError, _super); - function NotSupportBufferError(api, message) { - return _super.call(this, "".concat(api, ": The current runtime does not support \"Buffer\". Consider using buffer polyfill to make sure `globalThis.Buffer` is defined.").concat(message ? " ".concat(message) : '')) || this; - } - return NotSupportBufferError; - }(EmnapiError)); - Object.defineProperty(NotSupportBufferError.prototype, 'name', { - configurable: true, - writable: true, - value: 'NotSupportBufferError' - }); - - var StrongRef = /*#__PURE__*/ (function () { - function StrongRef(value) { - this._value = value; - } - StrongRef.prototype.deref = function () { - return this._value; - }; - StrongRef.prototype.dispose = function () { - this._value = undefined; - }; - return StrongRef; - }()); - var Persistent = /*#__PURE__*/ (function () { - function Persistent(value) { - this._ref = new StrongRef(value); - } - Persistent.prototype.setWeak = function (param, callback) { - if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) - return; - var value = this._ref.deref(); - try { - Persistent._registry.register(value, this, this); - var weakRef = new WeakRef(value); - this._ref.dispose(); - this._ref = weakRef; - this._param = param; - this._callback = callback; - } - catch (err) { - if (typeof value === 'symbol') ; - else { - throw err; - } - } - }; - Persistent.prototype.clearWeak = function () { - if (!supportFinalizer || this._ref === undefined) - return; - if (this._ref instanceof WeakRef) { - try { - Persistent._registry.unregister(this); - } - catch (_) { } - this._param = undefined; - this._callback = undefined; - var value = this._ref.deref(); - if (value === undefined) { - this._ref = value; - } - else { - this._ref = new StrongRef(value); - } - } - }; - Persistent.prototype.reset = function () { - if (supportFinalizer) { - try { - Persistent._registry.unregister(this); - } - catch (_) { } - } - this._param = undefined; - this._callback = undefined; - if (this._ref instanceof StrongRef) { - this._ref.dispose(); - } - this._ref = undefined; - }; - Persistent.prototype.isEmpty = function () { - return this._ref === undefined; - }; - Persistent.prototype.deref = function () { - if (this._ref === undefined) - return undefined; - return this._ref.deref(); - }; - Persistent._registry = supportFinalizer - ? new FinalizationRegistry(function (value) { - value._ref = undefined; - var callback = value._callback; - var param = value._param; - value._callback = undefined; - value._param = undefined; - if (typeof callback === 'function') { - callback(param); - } - }) - : undefined; - return Persistent; - }()); - - exports.ReferenceOwnership = void 0; - (function (ReferenceOwnership) { - ReferenceOwnership[ReferenceOwnership["kRuntime"] = 0] = "kRuntime"; - ReferenceOwnership[ReferenceOwnership["kUserland"] = 1] = "kUserland"; - })(exports.ReferenceOwnership || (exports.ReferenceOwnership = {})); - function canBeHeldWeakly(value) { - return value.isObject() || value.isFunction() || value.isSymbol(); - } - var Reference = /*#__PURE__*/ (function (_super) { - __extends(Reference, _super); - function Reference(envObject, handle_id, initialRefcount, ownership) { - var _this = _super.call(this) || this; - _this.envObject = envObject; - _this._refcount = initialRefcount; - _this._ownership = ownership; - var handle = envObject.ctx.handleStore.get(handle_id); - _this.canBeWeak = canBeHeldWeakly(handle); - _this.persistent = new Persistent(handle.value); - _this.id = 0; - if (initialRefcount === 0) { - _this._setWeak(); - } - return _this; - } - Reference.weakCallback = function (ref) { - ref.persistent.reset(); - ref.invokeFinalizerFromGC(); - }; - Reference.create = function (envObject, handle_id, initialRefcount, ownership, _unused1, _unused2, _unused3) { - var ref = new Reference(envObject, handle_id, initialRefcount, ownership); - envObject.ctx.refStore.add(ref); - ref.link(envObject.reflist); - return ref; - }; - Reference.prototype.ref = function () { - if (this.persistent.isEmpty()) { - return 0; - } - if (++this._refcount === 1 && this.canBeWeak) { - this.persistent.clearWeak(); - } - return this._refcount; - }; - Reference.prototype.unref = function () { - if (this.persistent.isEmpty() || this._refcount === 0) { - return 0; - } - if (--this._refcount === 0) { - this._setWeak(); - } - return this._refcount; - }; - Reference.prototype.get = function (envObject) { - if (envObject === void 0) { envObject = this.envObject; } - if (this.persistent.isEmpty()) { - return 0; - } - var obj = this.persistent.deref(); - var handle = envObject.ensureHandle(obj); - return handle.id; - }; - /** @virtual */ - Reference.prototype.resetFinalizer = function () { }; - /** @virtual */ - Reference.prototype.data = function () { return 0; }; - Reference.prototype.refcount = function () { return this._refcount; }; - Reference.prototype.ownership = function () { return this._ownership; }; - /** @virtual */ - Reference.prototype.callUserFinalizer = function () { }; - /** @virtual */ - Reference.prototype.invokeFinalizerFromGC = function () { - this.finalize(); - }; - Reference.prototype._setWeak = function () { - if (this.canBeWeak) { - this.persistent.setWeak(this, Reference.weakCallback); - } - else { - this.persistent.reset(); - } - }; - Reference.prototype.finalize = function () { - this.persistent.reset(); - var deleteMe = this._ownership === exports.ReferenceOwnership.kRuntime; - this.unlink(); - this.callUserFinalizer(); - if (deleteMe) { - this.dispose(); - } - }; - Reference.prototype.dispose = function () { - if (this.id === 0) - return; - this.unlink(); - this.persistent.reset(); - this.envObject.ctx.refStore.remove(this.id); - _super.prototype.dispose.call(this); - this.envObject = undefined; - this.id = 0; - }; - return Reference; - }(RefTracker)); - var ReferenceWithData = /*#__PURE__*/ (function (_super) { - __extends(ReferenceWithData, _super); - function ReferenceWithData(envObject, value, initialRefcount, ownership, _data) { - var _this = _super.call(this, envObject, value, initialRefcount, ownership) || this; - _this._data = _data; - return _this; - } - ReferenceWithData.create = function (envObject, value, initialRefcount, ownership, data) { - var reference = new ReferenceWithData(envObject, value, initialRefcount, ownership, data); - envObject.ctx.refStore.add(reference); - reference.link(envObject.reflist); - return reference; - }; - ReferenceWithData.prototype.data = function () { - return this._data; - }; - return ReferenceWithData; - }(Reference)); - var ReferenceWithFinalizer = /*#__PURE__*/ (function (_super) { - __extends(ReferenceWithFinalizer, _super); - function ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { - var _this = _super.call(this, envObject, value, initialRefcount, ownership) || this; - _this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); - return _this; - } - ReferenceWithFinalizer.create = function (envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { - var reference = new ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); - envObject.ctx.refStore.add(reference); - reference.link(envObject.finalizing_reflist); - return reference; - }; - ReferenceWithFinalizer.prototype.resetFinalizer = function () { - this._finalizer.resetFinalizer(); - }; - ReferenceWithFinalizer.prototype.data = function () { - return this._finalizer.data(); - }; - ReferenceWithFinalizer.prototype.callUserFinalizer = function () { - this._finalizer.callFinalizer(); - }; - ReferenceWithFinalizer.prototype.invokeFinalizerFromGC = function () { - this._finalizer.envObject.invokeFinalizerFromGC(this); - }; - ReferenceWithFinalizer.prototype.dispose = function () { - if (!this._finalizer) - return; - this._finalizer.envObject.dequeueFinalizer(this); - this._finalizer.dispose(); - _super.prototype.dispose.call(this); - this._finalizer = undefined; - }; - return ReferenceWithFinalizer; - }(Reference)); - - var Deferred = /*#__PURE__*/ (function () { - function Deferred(ctx, value) { - this.id = 0; - this.ctx = ctx; - this.value = value; - } - Deferred.create = function (ctx, value) { - var deferred = new Deferred(ctx, value); - ctx.deferredStore.add(deferred); - return deferred; - }; - Deferred.prototype.resolve = function (value) { - this.value.resolve(value); - this.dispose(); - }; - Deferred.prototype.reject = function (reason) { - this.value.reject(reason); - this.dispose(); - }; - Deferred.prototype.dispose = function () { - this.ctx.deferredStore.remove(this.id); - this.id = 0; - this.value = null; - this.ctx = null; - }; - return Deferred; - }()); - - var Store = /*#__PURE__*/ (function () { - function Store() { - this._values = [undefined]; - this._values.length = 4; - this._size = 1; - this._freeList = []; - } - Store.prototype.add = function (value) { - var id; - if (this._freeList.length) { - id = this._freeList.shift(); - } - else { - id = this._size; - this._size++; - var capacity = this._values.length; - if (id >= capacity) { - this._values.length = capacity + (capacity >> 1) + 16; - } - } - value.id = id; - this._values[id] = value; - }; - Store.prototype.get = function (id) { - return this._values[id]; - }; - Store.prototype.has = function (id) { - return this._values[id] !== undefined; - }; - Store.prototype.remove = function (id) { - var value = this._values[id]; - if (value) { - value.id = 0; - this._values[id] = undefined; - this._freeList.push(Number(id)); - } - }; - Store.prototype.dispose = function () { - for (var i = 1; i < this._size; ++i) { - var value = this._values[i]; - value === null || value === void 0 ? void 0 : value.dispose(); - } - this._values = [undefined]; - this._size = 1; - this._freeList = []; - }; - return Store; - }()); - - var CleanupHookCallback = /*#__PURE__*/ (function () { - function CleanupHookCallback(envObject, fn, arg, order) { - this.envObject = envObject; - this.fn = fn; - this.arg = arg; - this.order = order; - } - return CleanupHookCallback; - }()); - var CleanupQueue = /*#__PURE__*/ (function () { - function CleanupQueue() { - this._cleanupHooks = []; - this._cleanupHookCounter = 0; - } - CleanupQueue.prototype.empty = function () { - return this._cleanupHooks.length === 0; - }; - CleanupQueue.prototype.add = function (envObject, fn, arg) { - if (this._cleanupHooks.filter(function (hook) { return (hook.envObject === envObject && hook.fn === fn && hook.arg === arg); }).length > 0) { - throw new Error('Can not add same fn and arg twice'); - } - this._cleanupHooks.push(new CleanupHookCallback(envObject, fn, arg, this._cleanupHookCounter++)); - }; - CleanupQueue.prototype.remove = function (envObject, fn, arg) { - for (var i = 0; i < this._cleanupHooks.length; ++i) { - var hook = this._cleanupHooks[i]; - if (hook.envObject === envObject && hook.fn === fn && hook.arg === arg) { - this._cleanupHooks.splice(i, 1); - return; - } - } - }; - CleanupQueue.prototype.drain = function () { - var hooks = this._cleanupHooks.slice(); - hooks.sort(function (a, b) { return (b.order - a.order); }); - for (var i = 0; i < hooks.length; ++i) { - var cb = hooks[i]; - if (typeof cb.fn === 'number') { - cb.envObject.makeDynCall_vp(cb.fn)(cb.arg); - } - else { - cb.fn(cb.arg); - } - this._cleanupHooks.splice(this._cleanupHooks.indexOf(cb), 1); - } - }; - CleanupQueue.prototype.dispose = function () { - this._cleanupHooks.length = 0; - this._cleanupHookCounter = 0; - }; - return CleanupQueue; - }()); - var NodejsWaitingRequestCounter = /*#__PURE__*/ (function () { - function NodejsWaitingRequestCounter() { - this.refHandle = new _MessageChannel().port1; - this.count = 0; - } - NodejsWaitingRequestCounter.prototype.increase = function () { - if (this.count === 0) { - if (this.refHandle.ref) { - this.refHandle.ref(); - } - } - this.count++; - }; - NodejsWaitingRequestCounter.prototype.decrease = function () { - if (this.count === 0) - return; - if (this.count === 1) { - if (this.refHandle.unref) { - this.refHandle.unref(); - } - } - this.count--; - }; - return NodejsWaitingRequestCounter; - }()); - var Context = /*#__PURE__*/ (function () { - function Context() { - var _this = this; - this._isStopping = false; - this._canCallIntoJs = true; - this._suppressDestroy = false; - this.envStore = new Store(); - this.scopeStore = new ScopeStore(); - this.refStore = new Store(); - this.deferredStore = new Store(); - this.handleStore = new HandleStore(); - this.feature = { - supportReflect: supportReflect, - supportFinalizer: supportFinalizer, - supportWeakSymbol: supportWeakSymbol, - supportBigInt: supportBigInt, - supportNewFunction: supportNewFunction, - canSetFunctionName: canSetFunctionName, - setImmediate: _setImmediate, - Buffer: _Buffer, - MessageChannel: _MessageChannel - }; - this.cleanupQueue = new CleanupQueue(); - if (typeof process === 'object' && process !== null && typeof process.once === 'function') { - this.refCounter = new NodejsWaitingRequestCounter(); - process.once('beforeExit', function () { - if (!_this._suppressDestroy) { - _this.destroy(); - } - }); - } - } - /** - * Suppress the destroy on `beforeExit` event in Node.js. - * Call this method if you want to keep the context and - * all associated {@link Env | Env} alive, - * this also means that cleanup hooks will not be called. - * After call this method, you should call - * {@link Context.destroy | `Context.prototype.destroy`} method manually. - */ - Context.prototype.suppressDestroy = function () { - this._suppressDestroy = true; - }; - // eslint-disable-next-line @typescript-eslint/explicit-function-return-type - Context.prototype.getRuntimeVersions = function () { - return { - version: version, - NODE_API_SUPPORTED_VERSION_MAX: NODE_API_SUPPORTED_VERSION_MAX, - NAPI_VERSION_EXPERIMENTAL: NAPI_VERSION_EXPERIMENTAL, - NODE_API_DEFAULT_MODULE_API_VERSION: NODE_API_DEFAULT_MODULE_API_VERSION - }; - }; - Context.prototype.createNotSupportWeakRefError = function (api, message) { - return new NotSupportWeakRefError(api, message); - }; - Context.prototype.createNotSupportBufferError = function (api, message) { - return new NotSupportBufferError(api, message); - }; - Context.prototype.createReference = function (envObject, handle_id, initialRefcount, ownership) { - return Reference.create(envObject, handle_id, initialRefcount, ownership); - }; - Context.prototype.createReferenceWithData = function (envObject, handle_id, initialRefcount, ownership, data) { - return ReferenceWithData.create(envObject, handle_id, initialRefcount, ownership, data); - }; - Context.prototype.createReferenceWithFinalizer = function (envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { - if (finalize_callback === void 0) { finalize_callback = 0; } - if (finalize_data === void 0) { finalize_data = 0; } - if (finalize_hint === void 0) { finalize_hint = 0; } - return ReferenceWithFinalizer.create(envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); - }; - Context.prototype.createDeferred = function (value) { - return Deferred.create(this, value); - }; - Context.prototype.createEnv = function (filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - return newEnv(this, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); - }; - Context.prototype.createTrackedFinalizer = function (envObject, finalize_callback, finalize_data, finalize_hint) { - return TrackedFinalizer.create(envObject, finalize_callback, finalize_data, finalize_hint); - }; - Context.prototype.getCurrentScope = function () { - return this.scopeStore.currentScope; - }; - Context.prototype.addToCurrentScope = function (value) { - return this.scopeStore.currentScope.add(value); - }; - Context.prototype.openScope = function (envObject) { - var scope = this.scopeStore.openScope(this.handleStore); - if (envObject) - envObject.openHandleScopes++; - return scope; - }; - Context.prototype.closeScope = function (envObject, _scope) { - if (envObject && envObject.openHandleScopes === 0) - return; - this.scopeStore.closeScope(); - if (envObject) - envObject.openHandleScopes--; - }; - Context.prototype.ensureHandle = function (value) { - switch (value) { - case undefined: return HandleStore.UNDEFINED; - case null: return HandleStore.NULL; - case true: return HandleStore.TRUE; - case false: return HandleStore.FALSE; - case _global: return HandleStore.GLOBAL; - } - return this.addToCurrentScope(value); - }; - Context.prototype.addCleanupHook = function (envObject, fn, arg) { - this.cleanupQueue.add(envObject, fn, arg); - }; - Context.prototype.removeCleanupHook = function (envObject, fn, arg) { - this.cleanupQueue.remove(envObject, fn, arg); - }; - Context.prototype.runCleanup = function () { - while (!this.cleanupQueue.empty()) { - this.cleanupQueue.drain(); - } - }; - Context.prototype.increaseWaitingRequestCounter = function () { - var _a; - (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.increase(); - }; - Context.prototype.decreaseWaitingRequestCounter = function () { - var _a; - (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.decrease(); - }; - Context.prototype.setCanCallIntoJs = function (value) { - this._canCallIntoJs = value; - }; - Context.prototype.setStopping = function (value) { - this._isStopping = value; - }; - Context.prototype.canCallIntoJs = function () { - return this._canCallIntoJs && !this._isStopping; - }; - /** - * Destroy the context and call cleanup hooks. - * Associated {@link Env | Env} will be destroyed. - */ - Context.prototype.destroy = function () { - this.setStopping(true); - this.setCanCallIntoJs(false); - this.runCleanup(); - }; - return Context; - }()); - var defaultContext; - function createContext() { - return new Context(); - } - function getDefaultContext() { - if (!defaultContext) { - defaultContext = createContext(); - } - return defaultContext; - } - - exports.ConstHandle = ConstHandle; - exports.Context = Context; - exports.Deferred = Deferred; - exports.EmnapiError = EmnapiError; - exports.Env = Env; - exports.External = External; - exports.Finalizer = Finalizer; - exports.Handle = Handle; - exports.HandleScope = HandleScope; - exports.HandleStore = HandleStore; - exports.NAPI_VERSION_EXPERIMENTAL = NAPI_VERSION_EXPERIMENTAL; - exports.NODE_API_DEFAULT_MODULE_API_VERSION = NODE_API_DEFAULT_MODULE_API_VERSION; - exports.NODE_API_SUPPORTED_VERSION_MAX = NODE_API_SUPPORTED_VERSION_MAX; - exports.NODE_API_SUPPORTED_VERSION_MIN = NODE_API_SUPPORTED_VERSION_MIN; - exports.NodeEnv = NodeEnv; - exports.NotSupportBufferError = NotSupportBufferError; - exports.NotSupportWeakRefError = NotSupportWeakRefError; - exports.Persistent = Persistent; - exports.RefTracker = RefTracker; - exports.Reference = Reference; - exports.ReferenceWithData = ReferenceWithData; - exports.ReferenceWithFinalizer = ReferenceWithFinalizer; - exports.ScopeStore = ScopeStore; - exports.Store = Store; - exports.TrackedFinalizer = TrackedFinalizer; - exports.TryCatch = TryCatch; - exports.createContext = createContext; - exports.getDefaultContext = getDefaultContext; - exports.getExternalValue = getExternalValue; - exports.isExternal = isExternal; - exports.isReferenceType = isReferenceType; - exports.version = version; - - return exports; - -})({}); diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.js b/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.js deleted file mode 100644 index 0c3e6eb..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.js +++ /dev/null @@ -1,1482 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.emnapi = {})); -})(this, (function (exports) { - /****************************************************************************** - Copyright (c) Microsoft Corporation. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - 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. - ***************************************************************************** */ - /* global Reflect, Promise, SuppressedError, Symbol, Iterator */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; - }; - - var externalValue = new WeakMap(); - /** @public */ - function isExternal(object) { - return externalValue.has(object); - } - /** @public */ // eslint-disable-next-line @typescript-eslint/no-redeclare - var External = (function () { - function External(value) { - Object.setPrototypeOf(this, null); - externalValue.set(this, value); - } - External.prototype = null; - return External; - })(); - /** @public */ - function getExternalValue(external) { - if (!isExternal(external)) { - throw new TypeError('not external'); - } - return externalValue.get(external); - } - - var supportNewFunction = /*#__PURE__*/ (function () { - var f; - try { - f = new Function(); - } - catch (_) { - return false; - } - return typeof f === 'function'; - })(); - var _global = /*#__PURE__*/ (function () { - if (typeof globalThis !== 'undefined') - return globalThis; - var g = (function () { return this; })(); - if (!g && supportNewFunction) { - try { - g = new Function('return this')(); - } - catch (_) { } - } - if (!g) { - if (typeof __webpack_public_path__ === 'undefined') { - if (typeof global !== 'undefined') - return global; - } - if (typeof window !== 'undefined') - return window; - if (typeof self !== 'undefined') - return self; - } - return g; - })(); - var TryCatch = /*#__PURE__*/ (function () { - function TryCatch() { - this._exception = undefined; - this._caught = false; - } - TryCatch.prototype.isEmpty = function () { - return !this._caught; - }; - TryCatch.prototype.hasCaught = function () { - return this._caught; - }; - TryCatch.prototype.exception = function () { - return this._exception; - }; - TryCatch.prototype.setError = function (err) { - this._caught = true; - this._exception = err; - }; - TryCatch.prototype.reset = function () { - this._caught = false; - this._exception = undefined; - }; - TryCatch.prototype.extractException = function () { - var e = this._exception; - this.reset(); - return e; - }; - return TryCatch; - }()); - var canSetFunctionName = /*#__PURE__*/ (function () { - var _a; - try { - return Boolean((_a = Object.getOwnPropertyDescriptor(Function.prototype, 'name')) === null || _a === void 0 ? void 0 : _a.configurable); - } - catch (_) { - return false; - } - })(); - var supportReflect = typeof Reflect === 'object'; - var supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); - var supportWeakSymbol = /*#__PURE__*/ (function () { - try { - // eslint-disable-next-line symbol-description - var sym = Symbol(); - // eslint-disable-next-line no-new - new WeakRef(sym); - new WeakMap().set(sym, undefined); - } - catch (_) { - return false; - } - return true; - })(); - var supportBigInt = typeof BigInt !== 'undefined'; - function isReferenceType(v) { - return (typeof v === 'object' && v !== null) || typeof v === 'function'; - } - var _require = /*#__PURE__*/ (function () { - var nativeRequire; - if (typeof __webpack_public_path__ !== 'undefined') { - nativeRequire = (function () { - return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; - })(); - } - else { - nativeRequire = (function () { - return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); - })(); - } - return nativeRequire; - })(); - var _MessageChannel = typeof MessageChannel === 'function' - ? MessageChannel - : /*#__PURE__*/ (function () { - try { - return _require('worker_threads').MessageChannel; - } - catch (_) { } - return undefined; - })(); - var _setImmediate = typeof setImmediate === 'function' - ? setImmediate - : function (callback) { - if (typeof callback !== 'function') { - throw new TypeError('The "callback" argument must be of type function'); - } - if (_MessageChannel) { - var channel_1 = new _MessageChannel(); - channel_1.port1.onmessage = function () { - channel_1.port1.onmessage = null; - channel_1 = undefined; - callback(); - }; - channel_1.port2.postMessage(null); - } - else { - setTimeout(callback, 0); - } - }; - var _Buffer = typeof Buffer === 'function' - ? Buffer - : /*#__PURE__*/ (function () { - try { - return _require('buffer').Buffer; - } - catch (_) { } - return undefined; - })(); - var version = "1.8.1"; - var NODE_API_SUPPORTED_VERSION_MIN = 1 /* Version.NODE_API_SUPPORTED_VERSION_MIN */; - var NODE_API_SUPPORTED_VERSION_MAX = 10 /* Version.NODE_API_SUPPORTED_VERSION_MAX */; - var NAPI_VERSION_EXPERIMENTAL = 2147483647 /* Version.NAPI_VERSION_EXPERIMENTAL */; - var NODE_API_DEFAULT_MODULE_API_VERSION = 8 /* Version.NODE_API_DEFAULT_MODULE_API_VERSION */; - - var Handle = /*#__PURE__*/ (function () { - function Handle(id, value) { - this.id = id; - this.value = value; - } - Handle.prototype.data = function () { - return getExternalValue(this.value); - }; - Handle.prototype.isNumber = function () { - return typeof this.value === 'number'; - }; - Handle.prototype.isBigInt = function () { - return typeof this.value === 'bigint'; - }; - Handle.prototype.isString = function () { - return typeof this.value === 'string'; - }; - Handle.prototype.isFunction = function () { - return typeof this.value === 'function'; - }; - Handle.prototype.isExternal = function () { - return isExternal(this.value); - }; - Handle.prototype.isObject = function () { - return typeof this.value === 'object' && this.value !== null; - }; - Handle.prototype.isArray = function () { - return Array.isArray(this.value); - }; - Handle.prototype.isArrayBuffer = function () { - return (this.value instanceof ArrayBuffer); - }; - Handle.prototype.isTypedArray = function () { - return (ArrayBuffer.isView(this.value)) && !(this.value instanceof DataView); - }; - Handle.prototype.isBuffer = function (BufferConstructor) { - if (ArrayBuffer.isView(this.value)) - return true; - BufferConstructor !== null && BufferConstructor !== void 0 ? BufferConstructor : (BufferConstructor = _Buffer); - return typeof BufferConstructor === 'function' && BufferConstructor.isBuffer(this.value); - }; - Handle.prototype.isDataView = function () { - return (this.value instanceof DataView); - }; - Handle.prototype.isDate = function () { - return (this.value instanceof Date); - }; - Handle.prototype.isPromise = function () { - return (this.value instanceof Promise); - }; - Handle.prototype.isBoolean = function () { - return typeof this.value === 'boolean'; - }; - Handle.prototype.isUndefined = function () { - return this.value === undefined; - }; - Handle.prototype.isSymbol = function () { - return typeof this.value === 'symbol'; - }; - Handle.prototype.isNull = function () { - return this.value === null; - }; - Handle.prototype.dispose = function () { - this.value = undefined; - }; - return Handle; - }()); - var ConstHandle = /*#__PURE__*/ (function (_super) { - __extends(ConstHandle, _super); - function ConstHandle(id, value) { - return _super.call(this, id, value) || this; - } - ConstHandle.prototype.dispose = function () { }; - return ConstHandle; - }(Handle)); - var HandleStore = /*#__PURE__*/ (function () { - function HandleStore() { - this._values = [ - undefined, - HandleStore.UNDEFINED, - HandleStore.NULL, - HandleStore.FALSE, - HandleStore.TRUE, - HandleStore.GLOBAL - ]; - this._next = HandleStore.MIN_ID; - } - HandleStore.prototype.push = function (value) { - var h; - var next = this._next; - var values = this._values; - if (next < values.length) { - h = values[next]; - h.value = value; - } - else { - h = new Handle(next, value); - values[next] = h; - } - this._next++; - return h; - }; - HandleStore.prototype.erase = function (start, end) { - this._next = start; - var values = this._values; - for (var i = start; i < end; ++i) { - values[i].dispose(); - } - }; - HandleStore.prototype.get = function (id) { - return this._values[id]; - }; - HandleStore.prototype.swap = function (a, b) { - var values = this._values; - var h = values[a]; - values[a] = values[b]; - values[a].id = Number(a); - values[b] = h; - h.id = Number(b); - }; - HandleStore.prototype.dispose = function () { - this._values.length = HandleStore.MIN_ID; - this._next = HandleStore.MIN_ID; - }; - HandleStore.UNDEFINED = new ConstHandle(1 /* GlobalHandle.UNDEFINED */, undefined); - HandleStore.NULL = new ConstHandle(2 /* GlobalHandle.NULL */, null); - HandleStore.FALSE = new ConstHandle(3 /* GlobalHandle.FALSE */, false); - HandleStore.TRUE = new ConstHandle(4 /* GlobalHandle.TRUE */, true); - HandleStore.GLOBAL = new ConstHandle(5 /* GlobalHandle.GLOBAL */, _global); - HandleStore.MIN_ID = 6; - return HandleStore; - }()); - - var HandleScope = /*#__PURE__*/ (function () { - function HandleScope(handleStore, id, parentScope, start, end) { - if (end === void 0) { end = start; } - this.handleStore = handleStore; - this.id = id; - this.parent = parentScope; - this.child = null; - if (parentScope !== null) - parentScope.child = this; - this.start = start; - this.end = end; - this._escapeCalled = false; - this.callbackInfo = { - thiz: undefined, - data: 0, - args: undefined, - fn: undefined - }; - } - HandleScope.prototype.add = function (value) { - var h = this.handleStore.push(value); - this.end++; - return h; - }; - HandleScope.prototype.addExternal = function (data) { - return this.add(new External(data)); - }; - HandleScope.prototype.dispose = function () { - if (this._escapeCalled) - this._escapeCalled = false; - if (this.start === this.end) - return; - this.handleStore.erase(this.start, this.end); - }; - HandleScope.prototype.escape = function (handle) { - if (this._escapeCalled) - return null; - this._escapeCalled = true; - if (handle < this.start || handle >= this.end) { - return null; - } - this.handleStore.swap(handle, this.start); - var h = this.handleStore.get(this.start); - this.start++; - this.parent.end++; - return h; - }; - HandleScope.prototype.escapeCalled = function () { - return this._escapeCalled; - }; - return HandleScope; - }()); - - var ScopeStore = /*#__PURE__*/ (function () { - function ScopeStore() { - this._rootScope = new HandleScope(null, 0, null, 1, HandleStore.MIN_ID); - this.currentScope = this._rootScope; - this._values = [undefined]; - } - ScopeStore.prototype.get = function (id) { - return this._values[id]; - }; - ScopeStore.prototype.openScope = function (handleStore) { - var currentScope = this.currentScope; - var scope = currentScope.child; - if (scope !== null) { - scope.start = scope.end = currentScope.end; - } - else { - var id = currentScope.id + 1; - scope = new HandleScope(handleStore, id, currentScope, currentScope.end); - this._values[id] = scope; - } - this.currentScope = scope; - return scope; - }; - ScopeStore.prototype.closeScope = function () { - var scope = this.currentScope; - this.currentScope = scope.parent; - scope.dispose(); - }; - ScopeStore.prototype.dispose = function () { - this.currentScope = this._rootScope; - this._values.length = 1; - }; - return ScopeStore; - }()); - - var RefTracker = /*#__PURE__*/ (function () { - function RefTracker() { - this._next = null; - this._prev = null; - } - /** @virtual */ - RefTracker.prototype.dispose = function () { }; - /** @virtual */ - RefTracker.prototype.finalize = function () { }; - RefTracker.prototype.link = function (list) { - this._prev = list; - this._next = list._next; - if (this._next !== null) { - this._next._prev = this; - } - list._next = this; - }; - RefTracker.prototype.unlink = function () { - if (this._prev !== null) { - this._prev._next = this._next; - } - if (this._next !== null) { - this._next._prev = this._prev; - } - this._prev = null; - this._next = null; - }; - RefTracker.finalizeAll = function (list) { - while (list._next !== null) { - list._next.finalize(); - } - }; - return RefTracker; - }()); - - var Finalizer = /*#__PURE__*/ (function () { - function Finalizer(envObject, _finalizeCallback, _finalizeData, _finalizeHint) { - if (_finalizeCallback === void 0) { _finalizeCallback = 0; } - if (_finalizeData === void 0) { _finalizeData = 0; } - if (_finalizeHint === void 0) { _finalizeHint = 0; } - this.envObject = envObject; - this._finalizeCallback = _finalizeCallback; - this._finalizeData = _finalizeData; - this._finalizeHint = _finalizeHint; - this._makeDynCall_vppp = envObject.makeDynCall_vppp; - } - Finalizer.prototype.callback = function () { return this._finalizeCallback; }; - Finalizer.prototype.data = function () { return this._finalizeData; }; - Finalizer.prototype.hint = function () { return this._finalizeHint; }; - Finalizer.prototype.resetEnv = function () { - this.envObject = undefined; - }; - Finalizer.prototype.resetFinalizer = function () { - this._finalizeCallback = 0; - this._finalizeData = 0; - this._finalizeHint = 0; - }; - Finalizer.prototype.callFinalizer = function () { - var finalize_callback = this._finalizeCallback; - var finalize_data = this._finalizeData; - var finalize_hint = this._finalizeHint; - this.resetFinalizer(); - if (!finalize_callback) - return; - var fini = Number(finalize_callback); - if (!this.envObject) { - this._makeDynCall_vppp(fini)(0, finalize_data, finalize_hint); - } - else { - this.envObject.callFinalizer(fini, finalize_data, finalize_hint); - } - }; - Finalizer.prototype.dispose = function () { - this.envObject = undefined; - this._makeDynCall_vppp = undefined; - }; - return Finalizer; - }()); - - var TrackedFinalizer = /*#__PURE__*/ (function (_super) { - __extends(TrackedFinalizer, _super); - function TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint) { - var _this = _super.call(this) || this; - _this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); - return _this; - } - TrackedFinalizer.create = function (envObject, finalize_callback, finalize_data, finalize_hint) { - var finalizer = new TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint); - finalizer.link(envObject.finalizing_reflist); - return finalizer; - }; - TrackedFinalizer.prototype.data = function () { - return this._finalizer.data(); - }; - TrackedFinalizer.prototype.dispose = function () { - if (!this._finalizer) - return; - this.unlink(); - this._finalizer.envObject.dequeueFinalizer(this); - this._finalizer.dispose(); - this._finalizer = undefined; - _super.prototype.dispose.call(this); - }; - TrackedFinalizer.prototype.finalize = function () { - this.unlink(); - var error; - var caught = false; - try { - this._finalizer.callFinalizer(); - } - catch (err) { - caught = true; - error = err; - } - this.dispose(); - if (caught) { - throw error; - } - }; - return TrackedFinalizer; - }(RefTracker)); - - function throwNodeApiVersionError(moduleName, moduleApiVersion) { - var errorMessage = "".concat(moduleName, " requires Node-API version ").concat(moduleApiVersion, ", but this version of Node.js only supports version ").concat(NODE_API_SUPPORTED_VERSION_MAX, " add-ons."); - throw new Error(errorMessage); - } - function handleThrow(envObject, value) { - if (envObject.terminatedOrTerminating()) { - return; - } - throw value; - } - var Env = /*#__PURE__*/ (function () { - function Env(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) { - this.ctx = ctx; - this.moduleApiVersion = moduleApiVersion; - this.makeDynCall_vppp = makeDynCall_vppp; - this.makeDynCall_vp = makeDynCall_vp; - this.abort = abort; - this.openHandleScopes = 0; - this.instanceData = null; - this.tryCatch = new TryCatch(); - this.refs = 1; - this.reflist = new RefTracker(); - this.finalizing_reflist = new RefTracker(); - this.pendingFinalizers = []; - this.lastError = { - errorCode: 0 /* napi_status.napi_ok */, - engineErrorCode: 0, - engineReserved: 0 - }; - this.inGcFinalizer = false; - this._bindingMap = new WeakMap(); - this.id = 0; - } - /** @virtual */ - Env.prototype.canCallIntoJs = function () { - return true; - }; - Env.prototype.terminatedOrTerminating = function () { - return !this.canCallIntoJs(); - }; - Env.prototype.ref = function () { - this.refs++; - }; - Env.prototype.unref = function () { - this.refs--; - if (this.refs === 0) { - this.dispose(); - } - }; - Env.prototype.ensureHandle = function (value) { - return this.ctx.ensureHandle(value); - }; - Env.prototype.ensureHandleId = function (value) { - return this.ensureHandle(value).id; - }; - Env.prototype.clearLastError = function () { - var lastError = this.lastError; - if (lastError.errorCode !== 0 /* napi_status.napi_ok */) - lastError.errorCode = 0 /* napi_status.napi_ok */; - if (lastError.engineErrorCode !== 0) - lastError.engineErrorCode = 0; - if (lastError.engineReserved !== 0) - lastError.engineReserved = 0; - return 0 /* napi_status.napi_ok */; - }; - Env.prototype.setLastError = function (error_code, engine_error_code, engine_reserved) { - if (engine_error_code === void 0) { engine_error_code = 0; } - if (engine_reserved === void 0) { engine_reserved = 0; } - var lastError = this.lastError; - if (lastError.errorCode !== error_code) - lastError.errorCode = error_code; - if (lastError.engineErrorCode !== engine_error_code) - lastError.engineErrorCode = engine_error_code; - if (lastError.engineReserved !== engine_reserved) - lastError.engineReserved = engine_reserved; - return error_code; - }; - Env.prototype.getReturnStatus = function () { - return !this.tryCatch.hasCaught() ? 0 /* napi_status.napi_ok */ : this.setLastError(10 /* napi_status.napi_pending_exception */); - }; - Env.prototype.callIntoModule = function (fn, handleException) { - if (handleException === void 0) { handleException = handleThrow; } - var openHandleScopesBefore = this.openHandleScopes; - this.clearLastError(); - var r = fn(this); - if (openHandleScopesBefore !== this.openHandleScopes) { - this.abort('open_handle_scopes != open_handle_scopes_before'); - } - if (this.tryCatch.hasCaught()) { - var err = this.tryCatch.extractException(); - handleException(this, err); - } - return r; - }; - Env.prototype.invokeFinalizerFromGC = function (finalizer) { - if (this.moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { - this.enqueueFinalizer(finalizer); - } - else { - var saved = this.inGcFinalizer; - this.inGcFinalizer = true; - try { - finalizer.finalize(); - } - finally { - this.inGcFinalizer = saved; - } - } - }; - Env.prototype.checkGCAccess = function () { - if (this.moduleApiVersion === NAPI_VERSION_EXPERIMENTAL && this.inGcFinalizer) { - this.abort('Finalizer is calling a function that may affect GC state.\n' + - 'The finalizers are run directly from GC and must not affect GC ' + - 'state.\n' + - 'Use `node_api_post_finalizer` from inside of the finalizer to work ' + - 'around this issue.\n' + - 'It schedules the call as a new task in the event loop.'); - } - }; - /** @virtual */ - Env.prototype.enqueueFinalizer = function (finalizer) { - if (this.pendingFinalizers.indexOf(finalizer) === -1) { - this.pendingFinalizers.push(finalizer); - } - }; - /** @virtual */ - Env.prototype.dequeueFinalizer = function (finalizer) { - var index = this.pendingFinalizers.indexOf(finalizer); - if (index !== -1) { - this.pendingFinalizers.splice(index, 1); - } - }; - /** @virtual */ - Env.prototype.deleteMe = function () { - RefTracker.finalizeAll(this.finalizing_reflist); - RefTracker.finalizeAll(this.reflist); - this.tryCatch.extractException(); - this.ctx.envStore.remove(this.id); - }; - Env.prototype.dispose = function () { - if (this.id === 0) - return; - this.deleteMe(); - this.finalizing_reflist.dispose(); - this.reflist.dispose(); - this.id = 0; - }; - Env.prototype.initObjectBinding = function (value) { - var binding = { - wrapped: 0, - tag: null - }; - this._bindingMap.set(value, binding); - return binding; - }; - Env.prototype.getObjectBinding = function (value) { - if (this._bindingMap.has(value)) { - return this._bindingMap.get(value); - } - return this.initObjectBinding(value); - }; - Env.prototype.setInstanceData = function (data, finalize_cb, finalize_hint) { - if (this.instanceData) { - this.instanceData.dispose(); - } - this.instanceData = TrackedFinalizer.create(this, finalize_cb, data, finalize_hint); - }; - Env.prototype.getInstanceData = function () { - return this.instanceData ? this.instanceData.data() : 0; - }; - return Env; - }()); - var NodeEnv = /*#__PURE__*/ (function (_super) { - __extends(NodeEnv, _super); - function NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - var _this = _super.call(this, ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) || this; - _this.filename = filename; - _this.nodeBinding = nodeBinding; - _this.destructing = false; - _this.finalizationScheduled = false; - return _this; - } - NodeEnv.prototype.deleteMe = function () { - this.destructing = true; - this.drainFinalizerQueue(); - _super.prototype.deleteMe.call(this); - }; - NodeEnv.prototype.canCallIntoJs = function () { - return _super.prototype.canCallIntoJs.call(this) && this.ctx.canCallIntoJs(); - }; - NodeEnv.prototype.triggerFatalException = function (err) { - if (this.nodeBinding) { - this.nodeBinding.napi.fatalException(err); - } - else { - if (typeof process === 'object' && process !== null && typeof process._fatalException === 'function') { - var handled = process._fatalException(err); - if (!handled) { - console.error(err); - process.exit(1); - } - } - else { - throw err; - } - } - }; - NodeEnv.prototype.callbackIntoModule = function (enforceUncaughtExceptionPolicy, fn) { - return this.callIntoModule(fn, function (envObject, err) { - if (envObject.terminatedOrTerminating()) { - return; - } - var hasProcess = typeof process === 'object' && process !== null; - var hasForceFlag = hasProcess ? Boolean(process.execArgv && (process.execArgv.indexOf('--force-node-api-uncaught-exceptions-policy') !== -1)) : false; - if (envObject.moduleApiVersion < 10 && !hasForceFlag && !enforceUncaughtExceptionPolicy) { - var warn = hasProcess && typeof process.emitWarning === 'function' - ? process.emitWarning - : function (warning, type, code) { - if (warning instanceof Error) { - console.warn(warning.toString()); - } - else { - var prefix = code ? "[".concat(code, "] ") : ''; - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - console.warn("".concat(prefix).concat(type || 'Warning', ": ").concat(warning)); - } - }; - warn('Uncaught N-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.', 'DeprecationWarning', 'DEP0168'); - return; - } - envObject.triggerFatalException(err); - }); - }; - NodeEnv.prototype.callFinalizer = function (cb, data, hint) { - this.callFinalizerInternal(1, cb, data, hint); - }; - NodeEnv.prototype.callFinalizerInternal = function (forceUncaught, cb, data, hint) { - var f = this.makeDynCall_vppp(cb); - var env = this.id; - var scope = this.ctx.openScope(this); - try { - this.callbackIntoModule(Boolean(forceUncaught), function () { f(env, data, hint); }); - } - finally { - this.ctx.closeScope(this, scope); - } - }; - NodeEnv.prototype.enqueueFinalizer = function (finalizer) { - var _this = this; - _super.prototype.enqueueFinalizer.call(this, finalizer); - if (!this.finalizationScheduled && !this.destructing) { - this.finalizationScheduled = true; - this.ref(); - _setImmediate(function () { - _this.finalizationScheduled = false; - _this.unref(); - _this.drainFinalizerQueue(); - }); - } - }; - NodeEnv.prototype.drainFinalizerQueue = function () { - while (this.pendingFinalizers.length > 0) { - var refTracker = this.pendingFinalizers.shift(); - refTracker.finalize(); - } - }; - return NodeEnv; - }(Env)); - function newEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - moduleApiVersion = typeof moduleApiVersion !== 'number' ? NODE_API_DEFAULT_MODULE_API_VERSION : moduleApiVersion; - // Validate module_api_version. - if (moduleApiVersion < NODE_API_DEFAULT_MODULE_API_VERSION) { - moduleApiVersion = NODE_API_DEFAULT_MODULE_API_VERSION; - } - else if (moduleApiVersion > NODE_API_SUPPORTED_VERSION_MAX && moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { - throwNodeApiVersionError(filename, moduleApiVersion); - } - var env = new NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); - ctx.envStore.add(env); - ctx.addCleanupHook(env, function () { env.unref(); }, 0); - return env; - } - - var EmnapiError = /*#__PURE__*/ (function (_super) { - __extends(EmnapiError, _super); - function EmnapiError(message) { - var _newTarget = this.constructor; - var _this = _super.call(this, message) || this; - var ErrorConstructor = _newTarget; - var proto = ErrorConstructor.prototype; - if (!(_this instanceof EmnapiError)) { - var setPrototypeOf = Object.setPrototypeOf; - if (typeof setPrototypeOf === 'function') { - setPrototypeOf.call(Object, _this, proto); - } - else { - // eslint-disable-next-line no-proto - _this.__proto__ = proto; - } - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(_this, ErrorConstructor); - } - } - return _this; - } - return EmnapiError; - }(Error)); - Object.defineProperty(EmnapiError.prototype, 'name', { - configurable: true, - writable: true, - value: 'EmnapiError' - }); - var NotSupportWeakRefError = /*#__PURE__*/ (function (_super) { - __extends(NotSupportWeakRefError, _super); - function NotSupportWeakRefError(api, message) { - return _super.call(this, "".concat(api, ": The current runtime does not support \"FinalizationRegistry\" and \"WeakRef\".").concat(message ? " ".concat(message) : '')) || this; - } - return NotSupportWeakRefError; - }(EmnapiError)); - Object.defineProperty(NotSupportWeakRefError.prototype, 'name', { - configurable: true, - writable: true, - value: 'NotSupportWeakRefError' - }); - var NotSupportBufferError = /*#__PURE__*/ (function (_super) { - __extends(NotSupportBufferError, _super); - function NotSupportBufferError(api, message) { - return _super.call(this, "".concat(api, ": The current runtime does not support \"Buffer\". Consider using buffer polyfill to make sure `globalThis.Buffer` is defined.").concat(message ? " ".concat(message) : '')) || this; - } - return NotSupportBufferError; - }(EmnapiError)); - Object.defineProperty(NotSupportBufferError.prototype, 'name', { - configurable: true, - writable: true, - value: 'NotSupportBufferError' - }); - - var StrongRef = /*#__PURE__*/ (function () { - function StrongRef(value) { - this._value = value; - } - StrongRef.prototype.deref = function () { - return this._value; - }; - StrongRef.prototype.dispose = function () { - this._value = undefined; - }; - return StrongRef; - }()); - var Persistent = /*#__PURE__*/ (function () { - function Persistent(value) { - this._ref = new StrongRef(value); - } - Persistent.prototype.setWeak = function (param, callback) { - if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) - return; - var value = this._ref.deref(); - try { - Persistent._registry.register(value, this, this); - var weakRef = new WeakRef(value); - this._ref.dispose(); - this._ref = weakRef; - this._param = param; - this._callback = callback; - } - catch (err) { - if (typeof value === 'symbol') ; - else { - throw err; - } - } - }; - Persistent.prototype.clearWeak = function () { - if (!supportFinalizer || this._ref === undefined) - return; - if (this._ref instanceof WeakRef) { - try { - Persistent._registry.unregister(this); - } - catch (_) { } - this._param = undefined; - this._callback = undefined; - var value = this._ref.deref(); - if (value === undefined) { - this._ref = value; - } - else { - this._ref = new StrongRef(value); - } - } - }; - Persistent.prototype.reset = function () { - if (supportFinalizer) { - try { - Persistent._registry.unregister(this); - } - catch (_) { } - } - this._param = undefined; - this._callback = undefined; - if (this._ref instanceof StrongRef) { - this._ref.dispose(); - } - this._ref = undefined; - }; - Persistent.prototype.isEmpty = function () { - return this._ref === undefined; - }; - Persistent.prototype.deref = function () { - if (this._ref === undefined) - return undefined; - return this._ref.deref(); - }; - Persistent._registry = supportFinalizer - ? new FinalizationRegistry(function (value) { - value._ref = undefined; - var callback = value._callback; - var param = value._param; - value._callback = undefined; - value._param = undefined; - if (typeof callback === 'function') { - callback(param); - } - }) - : undefined; - return Persistent; - }()); - - exports.ReferenceOwnership = void 0; - (function (ReferenceOwnership) { - ReferenceOwnership[ReferenceOwnership["kRuntime"] = 0] = "kRuntime"; - ReferenceOwnership[ReferenceOwnership["kUserland"] = 1] = "kUserland"; - })(exports.ReferenceOwnership || (exports.ReferenceOwnership = {})); - function canBeHeldWeakly(value) { - return value.isObject() || value.isFunction() || value.isSymbol(); - } - var Reference = /*#__PURE__*/ (function (_super) { - __extends(Reference, _super); - function Reference(envObject, handle_id, initialRefcount, ownership) { - var _this = _super.call(this) || this; - _this.envObject = envObject; - _this._refcount = initialRefcount; - _this._ownership = ownership; - var handle = envObject.ctx.handleStore.get(handle_id); - _this.canBeWeak = canBeHeldWeakly(handle); - _this.persistent = new Persistent(handle.value); - _this.id = 0; - if (initialRefcount === 0) { - _this._setWeak(); - } - return _this; - } - Reference.weakCallback = function (ref) { - ref.persistent.reset(); - ref.invokeFinalizerFromGC(); - }; - Reference.create = function (envObject, handle_id, initialRefcount, ownership, _unused1, _unused2, _unused3) { - var ref = new Reference(envObject, handle_id, initialRefcount, ownership); - envObject.ctx.refStore.add(ref); - ref.link(envObject.reflist); - return ref; - }; - Reference.prototype.ref = function () { - if (this.persistent.isEmpty()) { - return 0; - } - if (++this._refcount === 1 && this.canBeWeak) { - this.persistent.clearWeak(); - } - return this._refcount; - }; - Reference.prototype.unref = function () { - if (this.persistent.isEmpty() || this._refcount === 0) { - return 0; - } - if (--this._refcount === 0) { - this._setWeak(); - } - return this._refcount; - }; - Reference.prototype.get = function (envObject) { - if (envObject === void 0) { envObject = this.envObject; } - if (this.persistent.isEmpty()) { - return 0; - } - var obj = this.persistent.deref(); - var handle = envObject.ensureHandle(obj); - return handle.id; - }; - /** @virtual */ - Reference.prototype.resetFinalizer = function () { }; - /** @virtual */ - Reference.prototype.data = function () { return 0; }; - Reference.prototype.refcount = function () { return this._refcount; }; - Reference.prototype.ownership = function () { return this._ownership; }; - /** @virtual */ - Reference.prototype.callUserFinalizer = function () { }; - /** @virtual */ - Reference.prototype.invokeFinalizerFromGC = function () { - this.finalize(); - }; - Reference.prototype._setWeak = function () { - if (this.canBeWeak) { - this.persistent.setWeak(this, Reference.weakCallback); - } - else { - this.persistent.reset(); - } - }; - Reference.prototype.finalize = function () { - this.persistent.reset(); - var deleteMe = this._ownership === exports.ReferenceOwnership.kRuntime; - this.unlink(); - this.callUserFinalizer(); - if (deleteMe) { - this.dispose(); - } - }; - Reference.prototype.dispose = function () { - if (this.id === 0) - return; - this.unlink(); - this.persistent.reset(); - this.envObject.ctx.refStore.remove(this.id); - _super.prototype.dispose.call(this); - this.envObject = undefined; - this.id = 0; - }; - return Reference; - }(RefTracker)); - var ReferenceWithData = /*#__PURE__*/ (function (_super) { - __extends(ReferenceWithData, _super); - function ReferenceWithData(envObject, value, initialRefcount, ownership, _data) { - var _this = _super.call(this, envObject, value, initialRefcount, ownership) || this; - _this._data = _data; - return _this; - } - ReferenceWithData.create = function (envObject, value, initialRefcount, ownership, data) { - var reference = new ReferenceWithData(envObject, value, initialRefcount, ownership, data); - envObject.ctx.refStore.add(reference); - reference.link(envObject.reflist); - return reference; - }; - ReferenceWithData.prototype.data = function () { - return this._data; - }; - return ReferenceWithData; - }(Reference)); - var ReferenceWithFinalizer = /*#__PURE__*/ (function (_super) { - __extends(ReferenceWithFinalizer, _super); - function ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { - var _this = _super.call(this, envObject, value, initialRefcount, ownership) || this; - _this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); - return _this; - } - ReferenceWithFinalizer.create = function (envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { - var reference = new ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); - envObject.ctx.refStore.add(reference); - reference.link(envObject.finalizing_reflist); - return reference; - }; - ReferenceWithFinalizer.prototype.resetFinalizer = function () { - this._finalizer.resetFinalizer(); - }; - ReferenceWithFinalizer.prototype.data = function () { - return this._finalizer.data(); - }; - ReferenceWithFinalizer.prototype.callUserFinalizer = function () { - this._finalizer.callFinalizer(); - }; - ReferenceWithFinalizer.prototype.invokeFinalizerFromGC = function () { - this._finalizer.envObject.invokeFinalizerFromGC(this); - }; - ReferenceWithFinalizer.prototype.dispose = function () { - if (!this._finalizer) - return; - this._finalizer.envObject.dequeueFinalizer(this); - this._finalizer.dispose(); - _super.prototype.dispose.call(this); - this._finalizer = undefined; - }; - return ReferenceWithFinalizer; - }(Reference)); - - var Deferred = /*#__PURE__*/ (function () { - function Deferred(ctx, value) { - this.id = 0; - this.ctx = ctx; - this.value = value; - } - Deferred.create = function (ctx, value) { - var deferred = new Deferred(ctx, value); - ctx.deferredStore.add(deferred); - return deferred; - }; - Deferred.prototype.resolve = function (value) { - this.value.resolve(value); - this.dispose(); - }; - Deferred.prototype.reject = function (reason) { - this.value.reject(reason); - this.dispose(); - }; - Deferred.prototype.dispose = function () { - this.ctx.deferredStore.remove(this.id); - this.id = 0; - this.value = null; - this.ctx = null; - }; - return Deferred; - }()); - - var Store = /*#__PURE__*/ (function () { - function Store() { - this._values = [undefined]; - this._values.length = 4; - this._size = 1; - this._freeList = []; - } - Store.prototype.add = function (value) { - var id; - if (this._freeList.length) { - id = this._freeList.shift(); - } - else { - id = this._size; - this._size++; - var capacity = this._values.length; - if (id >= capacity) { - this._values.length = capacity + (capacity >> 1) + 16; - } - } - value.id = id; - this._values[id] = value; - }; - Store.prototype.get = function (id) { - return this._values[id]; - }; - Store.prototype.has = function (id) { - return this._values[id] !== undefined; - }; - Store.prototype.remove = function (id) { - var value = this._values[id]; - if (value) { - value.id = 0; - this._values[id] = undefined; - this._freeList.push(Number(id)); - } - }; - Store.prototype.dispose = function () { - for (var i = 1; i < this._size; ++i) { - var value = this._values[i]; - value === null || value === void 0 ? void 0 : value.dispose(); - } - this._values = [undefined]; - this._size = 1; - this._freeList = []; - }; - return Store; - }()); - - var CleanupHookCallback = /*#__PURE__*/ (function () { - function CleanupHookCallback(envObject, fn, arg, order) { - this.envObject = envObject; - this.fn = fn; - this.arg = arg; - this.order = order; - } - return CleanupHookCallback; - }()); - var CleanupQueue = /*#__PURE__*/ (function () { - function CleanupQueue() { - this._cleanupHooks = []; - this._cleanupHookCounter = 0; - } - CleanupQueue.prototype.empty = function () { - return this._cleanupHooks.length === 0; - }; - CleanupQueue.prototype.add = function (envObject, fn, arg) { - if (this._cleanupHooks.filter(function (hook) { return (hook.envObject === envObject && hook.fn === fn && hook.arg === arg); }).length > 0) { - throw new Error('Can not add same fn and arg twice'); - } - this._cleanupHooks.push(new CleanupHookCallback(envObject, fn, arg, this._cleanupHookCounter++)); - }; - CleanupQueue.prototype.remove = function (envObject, fn, arg) { - for (var i = 0; i < this._cleanupHooks.length; ++i) { - var hook = this._cleanupHooks[i]; - if (hook.envObject === envObject && hook.fn === fn && hook.arg === arg) { - this._cleanupHooks.splice(i, 1); - return; - } - } - }; - CleanupQueue.prototype.drain = function () { - var hooks = this._cleanupHooks.slice(); - hooks.sort(function (a, b) { return (b.order - a.order); }); - for (var i = 0; i < hooks.length; ++i) { - var cb = hooks[i]; - if (typeof cb.fn === 'number') { - cb.envObject.makeDynCall_vp(cb.fn)(cb.arg); - } - else { - cb.fn(cb.arg); - } - this._cleanupHooks.splice(this._cleanupHooks.indexOf(cb), 1); - } - }; - CleanupQueue.prototype.dispose = function () { - this._cleanupHooks.length = 0; - this._cleanupHookCounter = 0; - }; - return CleanupQueue; - }()); - var NodejsWaitingRequestCounter = /*#__PURE__*/ (function () { - function NodejsWaitingRequestCounter() { - this.refHandle = new _MessageChannel().port1; - this.count = 0; - } - NodejsWaitingRequestCounter.prototype.increase = function () { - if (this.count === 0) { - if (this.refHandle.ref) { - this.refHandle.ref(); - } - } - this.count++; - }; - NodejsWaitingRequestCounter.prototype.decrease = function () { - if (this.count === 0) - return; - if (this.count === 1) { - if (this.refHandle.unref) { - this.refHandle.unref(); - } - } - this.count--; - }; - return NodejsWaitingRequestCounter; - }()); - var Context = /*#__PURE__*/ (function () { - function Context() { - var _this = this; - this._isStopping = false; - this._canCallIntoJs = true; - this._suppressDestroy = false; - this.envStore = new Store(); - this.scopeStore = new ScopeStore(); - this.refStore = new Store(); - this.deferredStore = new Store(); - this.handleStore = new HandleStore(); - this.feature = { - supportReflect: supportReflect, - supportFinalizer: supportFinalizer, - supportWeakSymbol: supportWeakSymbol, - supportBigInt: supportBigInt, - supportNewFunction: supportNewFunction, - canSetFunctionName: canSetFunctionName, - setImmediate: _setImmediate, - Buffer: _Buffer, - MessageChannel: _MessageChannel - }; - this.cleanupQueue = new CleanupQueue(); - if (typeof process === 'object' && process !== null && typeof process.once === 'function') { - this.refCounter = new NodejsWaitingRequestCounter(); - process.once('beforeExit', function () { - if (!_this._suppressDestroy) { - _this.destroy(); - } - }); - } - } - /** - * Suppress the destroy on `beforeExit` event in Node.js. - * Call this method if you want to keep the context and - * all associated {@link Env | Env} alive, - * this also means that cleanup hooks will not be called. - * After call this method, you should call - * {@link Context.destroy | `Context.prototype.destroy`} method manually. - */ - Context.prototype.suppressDestroy = function () { - this._suppressDestroy = true; - }; - // eslint-disable-next-line @typescript-eslint/explicit-function-return-type - Context.prototype.getRuntimeVersions = function () { - return { - version: version, - NODE_API_SUPPORTED_VERSION_MAX: NODE_API_SUPPORTED_VERSION_MAX, - NAPI_VERSION_EXPERIMENTAL: NAPI_VERSION_EXPERIMENTAL, - NODE_API_DEFAULT_MODULE_API_VERSION: NODE_API_DEFAULT_MODULE_API_VERSION - }; - }; - Context.prototype.createNotSupportWeakRefError = function (api, message) { - return new NotSupportWeakRefError(api, message); - }; - Context.prototype.createNotSupportBufferError = function (api, message) { - return new NotSupportBufferError(api, message); - }; - Context.prototype.createReference = function (envObject, handle_id, initialRefcount, ownership) { - return Reference.create(envObject, handle_id, initialRefcount, ownership); - }; - Context.prototype.createReferenceWithData = function (envObject, handle_id, initialRefcount, ownership, data) { - return ReferenceWithData.create(envObject, handle_id, initialRefcount, ownership, data); - }; - Context.prototype.createReferenceWithFinalizer = function (envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { - if (finalize_callback === void 0) { finalize_callback = 0; } - if (finalize_data === void 0) { finalize_data = 0; } - if (finalize_hint === void 0) { finalize_hint = 0; } - return ReferenceWithFinalizer.create(envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); - }; - Context.prototype.createDeferred = function (value) { - return Deferred.create(this, value); - }; - Context.prototype.createEnv = function (filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - return newEnv(this, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); - }; - Context.prototype.createTrackedFinalizer = function (envObject, finalize_callback, finalize_data, finalize_hint) { - return TrackedFinalizer.create(envObject, finalize_callback, finalize_data, finalize_hint); - }; - Context.prototype.getCurrentScope = function () { - return this.scopeStore.currentScope; - }; - Context.prototype.addToCurrentScope = function (value) { - return this.scopeStore.currentScope.add(value); - }; - Context.prototype.openScope = function (envObject) { - var scope = this.scopeStore.openScope(this.handleStore); - if (envObject) - envObject.openHandleScopes++; - return scope; - }; - Context.prototype.closeScope = function (envObject, _scope) { - if (envObject && envObject.openHandleScopes === 0) - return; - this.scopeStore.closeScope(); - if (envObject) - envObject.openHandleScopes--; - }; - Context.prototype.ensureHandle = function (value) { - switch (value) { - case undefined: return HandleStore.UNDEFINED; - case null: return HandleStore.NULL; - case true: return HandleStore.TRUE; - case false: return HandleStore.FALSE; - case _global: return HandleStore.GLOBAL; - } - return this.addToCurrentScope(value); - }; - Context.prototype.addCleanupHook = function (envObject, fn, arg) { - this.cleanupQueue.add(envObject, fn, arg); - }; - Context.prototype.removeCleanupHook = function (envObject, fn, arg) { - this.cleanupQueue.remove(envObject, fn, arg); - }; - Context.prototype.runCleanup = function () { - while (!this.cleanupQueue.empty()) { - this.cleanupQueue.drain(); - } - }; - Context.prototype.increaseWaitingRequestCounter = function () { - var _a; - (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.increase(); - }; - Context.prototype.decreaseWaitingRequestCounter = function () { - var _a; - (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.decrease(); - }; - Context.prototype.setCanCallIntoJs = function (value) { - this._canCallIntoJs = value; - }; - Context.prototype.setStopping = function (value) { - this._isStopping = value; - }; - Context.prototype.canCallIntoJs = function () { - return this._canCallIntoJs && !this._isStopping; - }; - /** - * Destroy the context and call cleanup hooks. - * Associated {@link Env | Env} will be destroyed. - */ - Context.prototype.destroy = function () { - this.setStopping(true); - this.setCanCallIntoJs(false); - this.runCleanup(); - }; - return Context; - }()); - var defaultContext; - function createContext() { - return new Context(); - } - function getDefaultContext() { - if (!defaultContext) { - defaultContext = createContext(); - } - return defaultContext; - } - - exports.ConstHandle = ConstHandle; - exports.Context = Context; - exports.Deferred = Deferred; - exports.EmnapiError = EmnapiError; - exports.Env = Env; - exports.External = External; - exports.Finalizer = Finalizer; - exports.Handle = Handle; - exports.HandleScope = HandleScope; - exports.HandleStore = HandleStore; - exports.NAPI_VERSION_EXPERIMENTAL = NAPI_VERSION_EXPERIMENTAL; - exports.NODE_API_DEFAULT_MODULE_API_VERSION = NODE_API_DEFAULT_MODULE_API_VERSION; - exports.NODE_API_SUPPORTED_VERSION_MAX = NODE_API_SUPPORTED_VERSION_MAX; - exports.NODE_API_SUPPORTED_VERSION_MIN = NODE_API_SUPPORTED_VERSION_MIN; - exports.NodeEnv = NodeEnv; - exports.NotSupportBufferError = NotSupportBufferError; - exports.NotSupportWeakRefError = NotSupportWeakRefError; - exports.Persistent = Persistent; - exports.RefTracker = RefTracker; - exports.Reference = Reference; - exports.ReferenceWithData = ReferenceWithData; - exports.ReferenceWithFinalizer = ReferenceWithFinalizer; - exports.ScopeStore = ScopeStore; - exports.Store = Store; - exports.TrackedFinalizer = TrackedFinalizer; - exports.TryCatch = TryCatch; - exports.createContext = createContext; - exports.getDefaultContext = getDefaultContext; - exports.getExternalValue = getExternalValue; - exports.isExternal = isExternal; - exports.isReferenceType = isReferenceType; - exports.version = version; - -})); diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts b/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts deleted file mode 100644 index d75787f..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +++ /dev/null @@ -1,665 +0,0 @@ -export declare type Ptr = number | bigint - -export declare interface IBuffer extends Uint8Array {} -export declare interface BufferCtor { - readonly prototype: IBuffer - /** @deprecated */ - new (...args: any[]): IBuffer - from: { - (buffer: ArrayBufferLike): IBuffer - (buffer: ArrayBufferLike, byteOffset: number, length: number): IBuffer - } - alloc: (size: number) => IBuffer - isBuffer: (obj: unknown) => obj is IBuffer -} - -export declare const enum GlobalHandle { - UNDEFINED = 1, - NULL, - FALSE, - TRUE, - GLOBAL -} - -export declare const enum Version { - NODE_API_SUPPORTED_VERSION_MIN = 1, - NODE_API_DEFAULT_MODULE_API_VERSION = 8, - NODE_API_SUPPORTED_VERSION_MAX = 10, - NAPI_VERSION_EXPERIMENTAL = 2147483647 // INT_MAX -} -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export declare type Pointer = number -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export declare type PointerPointer = number -export declare type FunctionPointer any> = Pointer -export declare type Const = T - -export declare type void_p = Pointer -export declare type void_pp = Pointer -export declare type bool = number -export declare type char = number -export declare type char_p = Pointer -export declare type unsigned_char = number -export declare type const_char = Const -export declare type const_char_p = Pointer -export declare type char16_t_p = number -export declare type const_char16_t_p = number - -export declare type short = number -export declare type unsigned_short = number -export declare type int = number -export declare type unsigned_int = number -export declare type long = number -export declare type unsigned_long = number -export declare type long_long = bigint -export declare type unsigned_long_long = bigint -export declare type float = number -export declare type double = number -export declare type long_double = number -export declare type size_t = number - -export declare type int8_t = number -export declare type uint8_t = number -export declare type int16_t = number -export declare type uint16_t = number -export declare type int32_t = number -export declare type uint32_t = number -export declare type int64_t = bigint -export declare type uint64_t = bigint -export declare type napi_env = Pointer - -export declare type napi_value = Pointer -export declare type napi_ref = Pointer -export declare type napi_deferred = Pointer -export declare type napi_handle_scope = Pointer -export declare type napi_escapable_handle_scope = Pointer - -export declare type napi_addon_register_func = FunctionPointer<(env: napi_env, exports: napi_value) => napi_value> - -export declare type napi_callback_info = Pointer -export declare type napi_callback = FunctionPointer<(env: napi_env, info: napi_callback_info) => napi_value> - -export declare interface napi_extended_error_info { - error_message: const_char_p - engine_reserved: void_p - engine_error_code: uint32_t - error_code: napi_status -} - -export declare interface napi_property_descriptor { - // One of utf8name or name should be NULL. - utf8name: const_char_p - name: napi_value - - method: napi_callback - getter: napi_callback - setter: napi_callback - value: napi_value - /* napi_property_attributes */ - attributes: number - data: void_p -} - -export declare type napi_finalize = FunctionPointer<( - env: napi_env, - finalize_data: void_p, - finalize_hint: void_p -) => void> - -export declare interface node_module { - nm_version: int32_t - nm_flags: uint32_t - nm_filename: Pointer - nm_register_func: napi_addon_register_func - nm_modname: Pointer - nm_priv: Pointer - reserved: PointerPointer -} - -export declare interface napi_node_version { - major: uint32_t - minor: uint32_t - patch: uint32_t - release: const_char_p -} - -export declare interface emnapi_emscripten_version { - major: uint32_t - minor: uint32_t - patch: uint32_t -} - -export declare const enum napi_status { - napi_ok, - napi_invalid_arg, - napi_object_expected, - napi_string_expected, - napi_name_expected, - napi_function_expected, - napi_number_expected, - napi_boolean_expected, - napi_array_expected, - napi_generic_failure, - napi_pending_exception, - napi_cancelled, - napi_escape_called_twice, - napi_handle_scope_mismatch, - napi_callback_scope_mismatch, - napi_queue_full, - napi_closing, - napi_bigint_expected, - napi_date_expected, - napi_arraybuffer_expected, - napi_detachable_arraybuffer_expected, - napi_would_deadlock, // unused - napi_no_external_buffers_allowed, - napi_cannot_run_js -} - -export declare const enum napi_property_attributes { - napi_default = 0, - napi_writable = 1 << 0, - napi_enumerable = 1 << 1, - napi_configurable = 1 << 2, - - // Used with napi_define_class to distinguish static properties - // from instance properties. Ignored by napi_define_properties. - napi_static = 1 << 10, - - /// #ifdef NAPI_EXPERIMENTAL - // Default for class methods. - napi_default_method = napi_writable | napi_configurable, - - // Default for object properties, like in JS obj[prop]. - napi_default_jsproperty = napi_writable | napi_enumerable | napi_configurable - /// #endif // NAPI_EXPERIMENTAL -} - -export declare const enum napi_valuetype { - napi_undefined, - napi_null, - napi_boolean, - napi_number, - napi_string, - napi_symbol, - napi_object, - napi_function, - napi_external, - napi_bigint -} - -export declare const enum napi_typedarray_type { - napi_int8_array, - napi_uint8_array, - napi_uint8_clamped_array, - napi_int16_array, - napi_uint16_array, - napi_int32_array, - napi_uint32_array, - napi_float32_array, - napi_float64_array, - napi_bigint64_array, - napi_biguint64_array, - napi_float16_array, -} - -export declare const enum napi_key_collection_mode { - napi_key_include_prototypes, - napi_key_own_only -} - -export declare const enum napi_key_filter { - napi_key_all_properties = 0, - napi_key_writable = 1, - napi_key_enumerable = 1 << 1, - napi_key_configurable = 1 << 2, - napi_key_skip_strings = 1 << 3, - napi_key_skip_symbols = 1 << 4 -} - -export declare const enum napi_key_conversion { - napi_key_keep_numbers, - napi_key_numbers_to_strings -} - -export declare const enum emnapi_memory_view_type { - emnapi_int8_array, - emnapi_uint8_array, - emnapi_uint8_clamped_array, - emnapi_int16_array, - emnapi_uint16_array, - emnapi_int32_array, - emnapi_uint32_array, - emnapi_float32_array, - emnapi_float64_array, - emnapi_bigint64_array, - emnapi_biguint64_array, - emnapi_float16_array, - emnapi_data_view = -1, - emnapi_buffer = -2 -} - -export declare const enum napi_threadsafe_function_call_mode { - napi_tsfn_nonblocking, - napi_tsfn_blocking -} - -export declare const enum napi_threadsafe_function_release_mode { - napi_tsfn_release, - napi_tsfn_abort -} -export declare type CleanupHookCallbackFunction = number | ((arg: number) => void); - -export declare class ConstHandle extends Handle { - constructor(id: number, value: S); - dispose(): void; -} - -export declare class Context { - private _isStopping; - private _canCallIntoJs; - private _suppressDestroy; - envStore: Store; - scopeStore: ScopeStore; - refStore: Store; - deferredStore: Store>; - handleStore: HandleStore; - private readonly refCounter?; - private readonly cleanupQueue; - feature: { - supportReflect: boolean; - supportFinalizer: boolean; - supportWeakSymbol: boolean; - supportBigInt: boolean; - supportNewFunction: boolean; - canSetFunctionName: boolean; - setImmediate: (callback: () => void) => void; - Buffer: BufferCtor | undefined; - MessageChannel: { - new (): MessageChannel; - prototype: MessageChannel; - } | undefined; - }; - constructor(); - /** - * Suppress the destroy on `beforeExit` event in Node.js. - * Call this method if you want to keep the context and - * all associated {@link Env | Env} alive, - * this also means that cleanup hooks will not be called. - * After call this method, you should call - * {@link Context.destroy | `Context.prototype.destroy`} method manually. - */ - suppressDestroy(): void; - getRuntimeVersions(): { - version: string; - NODE_API_SUPPORTED_VERSION_MAX: Version; - NAPI_VERSION_EXPERIMENTAL: Version; - NODE_API_DEFAULT_MODULE_API_VERSION: Version; - }; - createNotSupportWeakRefError(api: string, message: string): NotSupportWeakRefError; - createNotSupportBufferError(api: string, message: string): NotSupportBufferError; - createReference(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership): Reference; - createReferenceWithData(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): Reference; - createReferenceWithFinalizer(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback?: napi_finalize, finalize_data?: void_p, finalize_hint?: void_p): Reference; - createDeferred(value: IDeferrdValue): Deferred; - createEnv(filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any): Env; - createTrackedFinalizer(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; - getCurrentScope(): HandleScope | null; - addToCurrentScope(value: V): Handle; - openScope(envObject?: Env): HandleScope; - closeScope(envObject?: Env, _scope?: HandleScope): void; - ensureHandle(value: S): Handle; - addCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; - removeCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; - runCleanup(): void; - increaseWaitingRequestCounter(): void; - decreaseWaitingRequestCounter(): void; - setCanCallIntoJs(value: boolean): void; - setStopping(value: boolean): void; - canCallIntoJs(): boolean; - /** - * Destroy the context and call cleanup hooks. - * Associated {@link Env | Env} will be destroyed. - */ - destroy(): void; -} - -export declare function createContext(): Context; - -export declare class Deferred implements IStoreValue { - static create(ctx: Context, value: IDeferrdValue): Deferred; - id: number; - ctx: Context; - value: IDeferrdValue; - constructor(ctx: Context, value: IDeferrdValue); - resolve(value: T): void; - reject(reason?: any): void; - dispose(): void; -} - -export declare class EmnapiError extends Error { - constructor(message?: string); -} - -export declare abstract class Env implements IStoreValue { - readonly ctx: Context; - moduleApiVersion: number; - makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void; - makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void; - abort: (msg?: string) => never; - id: number; - openHandleScopes: number; - instanceData: TrackedFinalizer | null; - tryCatch: TryCatch; - refs: number; - reflist: RefTracker; - finalizing_reflist: RefTracker; - pendingFinalizers: RefTracker[]; - lastError: { - errorCode: napi_status; - engineErrorCode: number; - engineReserved: Ptr; - }; - inGcFinalizer: boolean; - constructor(ctx: Context, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never); - /** @virtual */ - canCallIntoJs(): boolean; - terminatedOrTerminating(): boolean; - ref(): void; - unref(): void; - ensureHandle(value: S): Handle; - ensureHandleId(value: any): napi_value; - clearLastError(): napi_status; - setLastError(error_code: napi_status, engine_error_code?: uint32_t, engine_reserved?: void_p): napi_status; - getReturnStatus(): napi_status; - callIntoModule(fn: (env: Env) => T, handleException?: (envObject: Env, value: any) => void): T; - /** @virtual */ - abstract callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; - invokeFinalizerFromGC(finalizer: RefTracker): void; - checkGCAccess(): void; - /** @virtual */ - enqueueFinalizer(finalizer: RefTracker): void; - /** @virtual */ - dequeueFinalizer(finalizer: RefTracker): void; - /** @virtual */ - deleteMe(): void; - dispose(): void; - private readonly _bindingMap; - initObjectBinding(value: S): IReferenceBinding; - getObjectBinding(value: S): IReferenceBinding; - setInstanceData(data: number, finalize_cb: number, finalize_hint: number): void; - getInstanceData(): number; -} - -/** @public */ -declare interface External_2 extends Record { -} - -/** @public */ -declare const External_2: { - new (value: number | bigint): External_2; - prototype: null; -}; -export { External_2 as External } - -export declare class Finalizer { - envObject: Env; - private _finalizeCallback; - private _finalizeData; - private _finalizeHint; - private _makeDynCall_vppp; - constructor(envObject: Env, _finalizeCallback?: napi_finalize, _finalizeData?: void_p, _finalizeHint?: void_p); - callback(): napi_finalize; - data(): void_p; - hint(): void_p; - resetEnv(): void; - resetFinalizer(): void; - callFinalizer(): void; - dispose(): void; -} - -export declare function getDefaultContext(): Context; - -/** @public */ -export declare function getExternalValue(external: External_2): number | bigint; - -export declare class Handle { - id: number; - value: S; - constructor(id: number, value: S); - data(): void_p; - isNumber(): boolean; - isBigInt(): boolean; - isString(): boolean; - isFunction(): boolean; - isExternal(): boolean; - isObject(): boolean; - isArray(): boolean; - isArrayBuffer(): boolean; - isTypedArray(): boolean; - isBuffer(BufferConstructor?: BufferCtor): boolean; - isDataView(): boolean; - isDate(): boolean; - isPromise(): boolean; - isBoolean(): boolean; - isUndefined(): boolean; - isSymbol(): boolean; - isNull(): boolean; - dispose(): void; -} - -export declare class HandleScope { - handleStore: HandleStore; - id: number; - parent: HandleScope | null; - child: HandleScope | null; - start: number; - end: number; - private _escapeCalled; - callbackInfo: ICallbackInfo; - constructor(handleStore: HandleStore, id: number, parentScope: HandleScope | null, start: number, end?: number); - add(value: V): Handle; - addExternal(data: void_p): Handle; - dispose(): void; - escape(handle: number): Handle | null; - escapeCalled(): boolean; -} - -export declare class HandleStore { - static UNDEFINED: ConstHandle; - static NULL: ConstHandle; - static FALSE: ConstHandle; - static TRUE: ConstHandle; - static GLOBAL: ConstHandle; - static MIN_ID: 6; - private readonly _values; - private _next; - push(value: S): Handle; - erase(start: number, end: number): void; - get(id: Ptr): Handle | undefined; - swap(a: number, b: number): void; - dispose(): void; -} - -export declare interface ICallbackInfo { - thiz: any; - data: void_p; - args: ArrayLike; - fn: Function; -} - -export declare interface IDeferrdValue { - resolve: (value: T) => void; - reject: (reason?: any) => void; -} - -export declare interface IReferenceBinding { - wrapped: number; - tag: Uint32Array | null; -} - -/** @public */ -export declare function isExternal(object: unknown): object is External_2; - -export declare function isReferenceType(v: any): v is object; - -export declare interface IStoreValue { - id: number; - dispose(): void; - [x: string]: any; -} - -export declare const NAPI_VERSION_EXPERIMENTAL = Version.NAPI_VERSION_EXPERIMENTAL; - -export declare const NODE_API_DEFAULT_MODULE_API_VERSION = Version.NODE_API_DEFAULT_MODULE_API_VERSION; - -export declare const NODE_API_SUPPORTED_VERSION_MAX = Version.NODE_API_SUPPORTED_VERSION_MAX; - -export declare const NODE_API_SUPPORTED_VERSION_MIN = Version.NODE_API_SUPPORTED_VERSION_MIN; - -export declare class NodeEnv extends Env { - filename: string; - private readonly nodeBinding?; - destructing: boolean; - finalizationScheduled: boolean; - constructor(ctx: Context, filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any); - deleteMe(): void; - canCallIntoJs(): boolean; - triggerFatalException(err: any): void; - callbackIntoModule(enforceUncaughtExceptionPolicy: boolean, fn: (env: Env) => T): T; - callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; - callFinalizerInternal(forceUncaught: int, cb: napi_finalize, data: void_p, hint: void_p): void; - enqueueFinalizer(finalizer: RefTracker): void; - drainFinalizerQueue(): void; -} - -export declare class NotSupportBufferError extends EmnapiError { - constructor(api: string, message: string); -} - -export declare class NotSupportWeakRefError extends EmnapiError { - constructor(api: string, message: string); -} - -export declare class Persistent { - private _ref; - private _param; - private _callback; - private static readonly _registry; - constructor(value: T); - setWeak

(param: P, callback: (param: P) => void): void; - clearWeak(): void; - reset(): void; - isEmpty(): boolean; - deref(): T | undefined; -} - -export declare class Reference extends RefTracker implements IStoreValue { - private static weakCallback; - id: number; - envObject: Env; - private readonly canBeWeak; - private _refcount; - private readonly _ownership; - persistent: Persistent; - static create(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, _unused1?: void_p, _unused2?: void_p, _unused3?: void_p): Reference; - protected constructor(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership); - ref(): number; - unref(): number; - get(envObject?: Env): napi_value; - /** @virtual */ - resetFinalizer(): void; - /** @virtual */ - data(): void_p; - refcount(): number; - ownership(): ReferenceOwnership; - /** @virtual */ - protected callUserFinalizer(): void; - /** @virtual */ - protected invokeFinalizerFromGC(): void; - private _setWeak; - finalize(): void; - dispose(): void; -} - -export declare enum ReferenceOwnership { - kRuntime = 0, - kUserland = 1 -} - -export declare class ReferenceWithData extends Reference { - private readonly _data; - static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): ReferenceWithData; - private constructor(); - data(): void_p; -} - -export declare class ReferenceWithFinalizer extends Reference { - private _finalizer; - static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): ReferenceWithFinalizer; - private constructor(); - resetFinalizer(): void; - data(): void_p; - protected callUserFinalizer(): void; - protected invokeFinalizerFromGC(): void; - dispose(): void; -} - -export declare class RefTracker { - /** @virtual */ - dispose(): void; - /** @virtual */ - finalize(): void; - private _next; - private _prev; - link(list: RefTracker): void; - unlink(): void; - static finalizeAll(list: RefTracker): void; -} - -export declare class ScopeStore { - private readonly _rootScope; - currentScope: HandleScope; - private readonly _values; - constructor(); - get(id: number): HandleScope | undefined; - openScope(handleStore: HandleStore): HandleScope; - closeScope(): void; - dispose(): void; -} - -export declare class Store { - protected _values: Array; - private _freeList; - private _size; - constructor(); - add(value: V): void; - get(id: Ptr): V | undefined; - has(id: Ptr): boolean; - remove(id: Ptr): void; - dispose(): void; -} - -export declare class TrackedFinalizer extends RefTracker { - private _finalizer; - static create(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; - private constructor(); - data(): void_p; - dispose(): void; - finalize(): void; -} - -export declare class TryCatch { - private _exception; - private _caught; - isEmpty(): boolean; - hasCaught(): boolean; - exception(): any; - setError(err: any): void; - reset(): void; - extractException(): any; -} - -export declare const version: string; - -export { } diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.min.js b/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.min.js deleted file mode 100644 index d60541c..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).emnapi={})}(this,function(t){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},e(t,n)};function n(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}"function"==typeof SuppressedError&&SuppressedError;var i=new WeakMap;function r(t){return i.has(t)}var o=function(){function t(t){Object.setPrototypeOf(this,null),i.set(this,t)}return t.prototype=null,t}();function s(t){if(!r(t))throw new TypeError("not external");return i.get(t)}var a=function(){var t;try{t=new Function}catch(t){return!1}return"function"==typeof t}(),u=function(){if("undefined"!=typeof globalThis)return globalThis;var t=function(){return this}();if(!t&&a)try{t=new Function("return this")()}catch(t){}if(!t){if("undefined"==typeof __webpack_public_path__&&"undefined"!=typeof global)return global;if("undefined"!=typeof window)return window;if("undefined"!=typeof self)return self}return t}(),c=function(){function t(){this._exception=void 0,this._caught=!1}return t.prototype.isEmpty=function(){return!this._caught},t.prototype.hasCaught=function(){return this._caught},t.prototype.exception=function(){return this._exception},t.prototype.setError=function(t){this._caught=!0,this._exception=t},t.prototype.reset=function(){this._caught=!1,this._exception=void 0},t.prototype.extractException=function(){var t=this._exception;return this.reset(),t},t}(),p=function(){var t;try{return Boolean(null===(t=Object.getOwnPropertyDescriptor(Function.prototype,"name"))||void 0===t?void 0:t.configurable)}catch(t){return!1}}(),f="object"==typeof Reflect,l="undefined"!=typeof FinalizationRegistry&&"undefined"!=typeof WeakRef,h=function(){try{var t=Symbol();new WeakRef(t),(new WeakMap).set(t,void 0)}catch(t){return!1}return!0}(),d="undefined"!=typeof BigInt;var y=function(){return"undefined"!=typeof __webpack_public_path__||"undefined"!=typeof __webpack_public_path__?"undefined"!=typeof __non_webpack_require__?__non_webpack_require__:void 0:"undefined"!=typeof require?require:void 0}(),_="function"==typeof MessageChannel?MessageChannel:function(){try{return y("worker_threads").MessageChannel}catch(t){}}(),v="function"==typeof setImmediate?setImmediate:function(t){if("function"!=typeof t)throw new TypeError('The "callback" argument must be of type function');if(_){var e=new _;e.port1.onmessage=function(){e.port1.onmessage=null,e=void 0,t()},e.port2.postMessage(null)}else setTimeout(t,0)},g="function"==typeof Buffer?Buffer:function(){try{return y("buffer").Buffer}catch(t){}}(),z="1.8.1",b=2147483647,k=function(){function t(t,e){this.id=t,this.value=e}return t.prototype.data=function(){return s(this.value)},t.prototype.isNumber=function(){return"number"==typeof this.value},t.prototype.isBigInt=function(){return"bigint"==typeof this.value},t.prototype.isString=function(){return"string"==typeof this.value},t.prototype.isFunction=function(){return"function"==typeof this.value},t.prototype.isExternal=function(){return r(this.value)},t.prototype.isObject=function(){return"object"==typeof this.value&&null!==this.value},t.prototype.isArray=function(){return Array.isArray(this.value)},t.prototype.isArrayBuffer=function(){return this.value instanceof ArrayBuffer},t.prototype.isTypedArray=function(){return ArrayBuffer.isView(this.value)&&!(this.value instanceof DataView)},t.prototype.isBuffer=function(t){return!!ArrayBuffer.isView(this.value)||(null!=t||(t=g),"function"==typeof t&&t.isBuffer(this.value))},t.prototype.isDataView=function(){return this.value instanceof DataView},t.prototype.isDate=function(){return this.value instanceof Date},t.prototype.isPromise=function(){return this.value instanceof Promise},t.prototype.isBoolean=function(){return"boolean"==typeof this.value},t.prototype.isUndefined=function(){return void 0===this.value},t.prototype.isSymbol=function(){return"symbol"==typeof this.value},t.prototype.isNull=function(){return null===this.value},t.prototype.dispose=function(){this.value=void 0},t}(),w=function(t){function e(e,n){return t.call(this,e,n)||this}return n(e,t),e.prototype.dispose=function(){},e}(k),S=function(){function t(){this._values=[void 0,t.UNDEFINED,t.NULL,t.FALSE,t.TRUE,t.GLOBAL],this._next=t.MIN_ID}return t.prototype.push=function(t){var e,n=this._next,i=this._values;return n=this.end)return null;this.handleStore.swap(t,this.start);var e=this.handleStore.get(this.start);return this.start++,this.parent.end++,e},t.prototype.escapeCalled=function(){return this._escapeCalled},t}(),m=function(){function t(){this._rootScope=new E(null,0,null,1,S.MIN_ID),this.currentScope=this._rootScope,this._values=[void 0]}return t.prototype.get=function(t){return this._values[t]},t.prototype.openScope=function(t){var e=this.currentScope,n=e.child;if(null!==n)n.start=n.end=e.end;else{var i=e.id+1;n=new E(t,i,e,e.end),this._values[i]=n}return this.currentScope=n,n},t.prototype.closeScope=function(){var t=this.currentScope;this.currentScope=t.parent,t.dispose()},t.prototype.dispose=function(){this.currentScope=this._rootScope,this._values.length=1},t}(),C=function(){function t(){this._next=null,this._prev=null}return t.prototype.dispose=function(){},t.prototype.finalize=function(){},t.prototype.link=function(t){this._prev=t,this._next=t._next,null!==this._next&&(this._next._prev=this),t._next=this},t.prototype.unlink=function(){null!==this._prev&&(this._prev._next=this._next),null!==this._next&&(this._next._prev=this._prev),this._prev=null,this._next=null},t.finalizeAll=function(t){for(;null!==t._next;)t._next.finalize()},t}(),x=function(){function t(t,e,n,i){void 0===e&&(e=0),void 0===n&&(n=0),void 0===i&&(i=0),this.envObject=t,this._finalizeCallback=e,this._finalizeData=n,this._finalizeHint=i,this._makeDynCall_vppp=t.makeDynCall_vppp}return t.prototype.callback=function(){return this._finalizeCallback},t.prototype.data=function(){return this._finalizeData},t.prototype.hint=function(){return this._finalizeHint},t.prototype.resetEnv=function(){this.envObject=void 0},t.prototype.resetFinalizer=function(){this._finalizeCallback=0,this._finalizeData=0,this._finalizeHint=0},t.prototype.callFinalizer=function(){var t=this._finalizeCallback,e=this._finalizeData,n=this._finalizeHint;if(this.resetFinalizer(),t){var i=Number(t);this.envObject?this.envObject.callFinalizer(i,e,n):this._makeDynCall_vppp(i)(0,e,n)}},t.prototype.dispose=function(){this.envObject=void 0,this._makeDynCall_vppp=void 0},t}(),F=function(t){function e(e,n,i,r){var o=t.call(this)||this;return o._finalizer=new x(e,n,i,r),o}return n(e,t),e.create=function(t,n,i,r){var o=new e(t,n,i,r);return o.link(t.finalizing_reflist),o},e.prototype.data=function(){return this._finalizer.data()},e.prototype.dispose=function(){this._finalizer&&(this.unlink(),this._finalizer.envObject.dequeueFinalizer(this),this._finalizer.dispose(),this._finalizer=void 0,t.prototype.dispose.call(this))},e.prototype.finalize=function(){var t;this.unlink();var e=!1;try{this._finalizer.callFinalizer()}catch(n){e=!0,t=n}if(this.dispose(),e)throw t},e}(C);function O(t,e){if(!t.terminatedOrTerminating())throw e}var I=function(){function t(t,e,n,i,r){this.ctx=t,this.moduleApiVersion=e,this.makeDynCall_vppp=n,this.makeDynCall_vp=i,this.abort=r,this.openHandleScopes=0,this.instanceData=null,this.tryCatch=new c,this.refs=1,this.reflist=new C,this.finalizing_reflist=new C,this.pendingFinalizers=[],this.lastError={errorCode:0,engineErrorCode:0,engineReserved:0},this.inGcFinalizer=!1,this._bindingMap=new WeakMap,this.id=0}return t.prototype.canCallIntoJs=function(){return!0},t.prototype.terminatedOrTerminating=function(){return!this.canCallIntoJs()},t.prototype.ref=function(){this.refs++},t.prototype.unref=function(){this.refs--,0===this.refs&&this.dispose()},t.prototype.ensureHandle=function(t){return this.ctx.ensureHandle(t)},t.prototype.ensureHandleId=function(t){return this.ensureHandle(t).id},t.prototype.clearLastError=function(){var t=this.lastError;return 0!==t.errorCode&&(t.errorCode=0),0!==t.engineErrorCode&&(t.engineErrorCode=0),0!==t.engineReserved&&(t.engineReserved=0),0},t.prototype.setLastError=function(t,e,n){void 0===e&&(e=0),void 0===n&&(n=0);var i=this.lastError;return i.errorCode!==t&&(i.errorCode=t),i.engineErrorCode!==e&&(i.engineErrorCode=e),i.engineReserved!==n&&(i.engineReserved=n),t},t.prototype.getReturnStatus=function(){return this.tryCatch.hasCaught()?this.setLastError(10):0},t.prototype.callIntoModule=function(t,e){void 0===e&&(e=O);var n=this.openHandleScopes;this.clearLastError();var i=t(this);(n!==this.openHandleScopes&&this.abort("open_handle_scopes != open_handle_scopes_before"),this.tryCatch.hasCaught())&&e(this,this.tryCatch.extractException());return i},t.prototype.invokeFinalizerFromGC=function(t){if(this.moduleApiVersion!==b)this.enqueueFinalizer(t);else{var e=this.inGcFinalizer;this.inGcFinalizer=!0;try{t.finalize()}finally{this.inGcFinalizer=e}}},t.prototype.checkGCAccess=function(){this.moduleApiVersion===b&&this.inGcFinalizer&&this.abort("Finalizer is calling a function that may affect GC state.\nThe finalizers are run directly from GC and must not affect GC state.\nUse `node_api_post_finalizer` from inside of the finalizer to work around this issue.\nIt schedules the call as a new task in the event loop.")},t.prototype.enqueueFinalizer=function(t){-1===this.pendingFinalizers.indexOf(t)&&this.pendingFinalizers.push(t)},t.prototype.dequeueFinalizer=function(t){var e=this.pendingFinalizers.indexOf(t);-1!==e&&this.pendingFinalizers.splice(e,1)},t.prototype.deleteMe=function(){C.finalizeAll(this.finalizing_reflist),C.finalizeAll(this.reflist),this.tryCatch.extractException(),this.ctx.envStore.remove(this.id)},t.prototype.dispose=function(){0!==this.id&&(this.deleteMe(),this.finalizing_reflist.dispose(),this.reflist.dispose(),this.id=0)},t.prototype.initObjectBinding=function(t){var e={wrapped:0,tag:null};return this._bindingMap.set(t,e),e},t.prototype.getObjectBinding=function(t){return this._bindingMap.has(t)?this._bindingMap.get(t):this.initObjectBinding(t)},t.prototype.setInstanceData=function(t,e,n){this.instanceData&&this.instanceData.dispose(),this.instanceData=F.create(this,e,t,n)},t.prototype.getInstanceData=function(){return this.instanceData?this.instanceData.data():0},t}(),D=function(t){function e(e,n,i,r,o,s,a){var u=t.call(this,e,i,r,o,s)||this;return u.filename=n,u.nodeBinding=a,u.destructing=!1,u.finalizationScheduled=!1,u}return n(e,t),e.prototype.deleteMe=function(){this.destructing=!0,this.drainFinalizerQueue(),t.prototype.deleteMe.call(this)},e.prototype.canCallIntoJs=function(){return t.prototype.canCallIntoJs.call(this)&&this.ctx.canCallIntoJs()},e.prototype.triggerFatalException=function(t){if(this.nodeBinding)this.nodeBinding.napi.fatalException(t);else{if("object"!=typeof process||null===process||"function"!=typeof process._fatalException)throw t;process._fatalException(t)||(console.error(t),process.exit(1))}},e.prototype.callbackIntoModule=function(t,e){return this.callIntoModule(e,function(e,n){if(!e.terminatedOrTerminating()){var i="object"==typeof process&&null!==process,r=!!i&&Boolean(process.execArgv&&-1!==process.execArgv.indexOf("--force-node-api-uncaught-exceptions-policy"));if(e.moduleApiVersion<10&&!r&&!t)(i&&"function"==typeof process.emitWarning?process.emitWarning:function(t,e,n){if(t instanceof Error)console.warn(t.toString());else{var i=n?"[".concat(n,"] "):"";console.warn("".concat(i).concat(e||"Warning",": ").concat(t))}})("Uncaught N-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.","DeprecationWarning","DEP0168");else e.triggerFatalException(n)}})},e.prototype.callFinalizer=function(t,e,n){this.callFinalizerInternal(1,t,e,n)},e.prototype.callFinalizerInternal=function(t,e,n,i){var r=this.makeDynCall_vppp(e),o=this.id,s=this.ctx.openScope(this);try{this.callbackIntoModule(Boolean(t),function(){r(o,n,i)})}finally{this.ctx.closeScope(this,s)}},e.prototype.enqueueFinalizer=function(e){var n=this;t.prototype.enqueueFinalizer.call(this,e),this.finalizationScheduled||this.destructing||(this.finalizationScheduled=!0,this.ref(),v(function(){n.finalizationScheduled=!1,n.unref(),n.drainFinalizerQueue()}))},e.prototype.drainFinalizerQueue=function(){for(;this.pendingFinalizers.length>0;){this.pendingFinalizers.shift().finalize()}},e}(I);function R(t,e,n,i,r,o,s){(n="number"!=typeof n?8:n)<8?n=8:n>10&&n!==b&&function(t,e){var n="".concat(t," requires Node-API version ").concat(e,", but this version of Node.js only supports version ").concat(10," add-ons.");throw new Error(n)}(e,n);var a=new D(t,e,n,i,r,o,s);return t.envStore.add(a),t.addCleanupHook(a,function(){a.unref()},0),a}var N=function(t){function e(n){var i=this.constructor,r=t.call(this,n)||this,o=i,s=o.prototype;if(!(r instanceof e)){var a=Object.setPrototypeOf;"function"==typeof a?a.call(Object,r,s):r.__proto__=s,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(r,o)}return r}return n(e,t),e}(Error);Object.defineProperty(N.prototype,"name",{configurable:!0,writable:!0,value:"EmnapiError"});var A=function(t){function e(e,n){return t.call(this,"".concat(e,': The current runtime does not support "FinalizationRegistry" and "WeakRef".').concat(n?" ".concat(n):""))||this}return n(e,t),e}(N);Object.defineProperty(A.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportWeakRefError"});var H=function(t){function e(e,n){return t.call(this,"".concat(e,': The current runtime does not support "Buffer". Consider using buffer polyfill to make sure `globalThis.Buffer` is defined.').concat(n?" ".concat(n):""))||this}return n(e,t),e}(N);Object.defineProperty(H.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportBufferError"});var j,T=function(){function t(t){this._value=t}return t.prototype.deref=function(){return this._value},t.prototype.dispose=function(){this._value=void 0},t}(),B=function(){function t(t){this._ref=new T(t)}return t.prototype.setWeak=function(e,n){if(l&&void 0!==this._ref&&!(this._ref instanceof WeakRef)){var i=this._ref.deref();try{t._registry.register(i,this,this);var r=new WeakRef(i);this._ref.dispose(),this._ref=r,this._param=e,this._callback=n}catch(t){if("symbol"!=typeof i)throw t}}},t.prototype.clearWeak=function(){if(l&&void 0!==this._ref&&this._ref instanceof WeakRef){try{t._registry.unregister(this)}catch(t){}this._param=void 0,this._callback=void 0;var e=this._ref.deref();this._ref=void 0===e?e:new T(e)}},t.prototype.reset=function(){if(l)try{t._registry.unregister(this)}catch(t){}this._param=void 0,this._callback=void 0,this._ref instanceof T&&this._ref.dispose(),this._ref=void 0},t.prototype.isEmpty=function(){return void 0===this._ref},t.prototype.deref=function(){if(void 0!==this._ref)return this._ref.deref()},t._registry=l?new FinalizationRegistry(function(t){t._ref=void 0;var e=t._callback,n=t._param;t._callback=void 0,t._param=void 0,"function"==typeof e&&e(n)}):void 0,t}();t.ReferenceOwnership=void 0,(j=t.ReferenceOwnership||(t.ReferenceOwnership={}))[j.kRuntime=0]="kRuntime",j[j.kUserland=1]="kUserland";var W,M=function(e){function i(t,n,i,r){var o=e.call(this)||this;o.envObject=t,o._refcount=i,o._ownership=r;var s,a=t.ctx.handleStore.get(n);return o.canBeWeak=(s=a).isObject()||s.isFunction()||s.isSymbol(),o.persistent=new B(a.value),o.id=0,0===i&&o._setWeak(),o}return n(i,e),i.weakCallback=function(t){t.persistent.reset(),t.invokeFinalizerFromGC()},i.create=function(t,e,n,r,o,s,a){var u=new i(t,e,n,r);return t.ctx.refStore.add(u),u.link(t.reflist),u},i.prototype.ref=function(){return this.persistent.isEmpty()?0:(1===++this._refcount&&this.canBeWeak&&this.persistent.clearWeak(),this._refcount)},i.prototype.unref=function(){return this.persistent.isEmpty()||0===this._refcount?0:(0===--this._refcount&&this._setWeak(),this._refcount)},i.prototype.get=function(t){if(void 0===t&&(t=this.envObject),this.persistent.isEmpty())return 0;var e=this.persistent.deref();return t.ensureHandle(e).id},i.prototype.resetFinalizer=function(){},i.prototype.data=function(){return 0},i.prototype.refcount=function(){return this._refcount},i.prototype.ownership=function(){return this._ownership},i.prototype.callUserFinalizer=function(){},i.prototype.invokeFinalizerFromGC=function(){this.finalize()},i.prototype._setWeak=function(){this.canBeWeak?this.persistent.setWeak(this,i.weakCallback):this.persistent.reset()},i.prototype.finalize=function(){this.persistent.reset();var e=this._ownership===t.ReferenceOwnership.kRuntime;this.unlink(),this.callUserFinalizer(),e&&this.dispose()},i.prototype.dispose=function(){0!==this.id&&(this.unlink(),this.persistent.reset(),this.envObject.ctx.refStore.remove(this.id),e.prototype.dispose.call(this),this.envObject=void 0,this.id=0)},i}(C),P=function(t){function e(e,n,i,r,o){var s=t.call(this,e,n,i,r)||this;return s._data=o,s}return n(e,t),e.create=function(t,n,i,r,o){var s=new e(t,n,i,r,o);return t.ctx.refStore.add(s),s.link(t.reflist),s},e.prototype.data=function(){return this._data},e}(M),L=function(t){function e(e,n,i,r,o,s,a){var u=t.call(this,e,n,i,r)||this;return u._finalizer=new x(e,o,s,a),u}return n(e,t),e.create=function(t,n,i,r,o,s,a){var u=new e(t,n,i,r,o,s,a);return t.ctx.refStore.add(u),u.link(t.finalizing_reflist),u},e.prototype.resetFinalizer=function(){this._finalizer.resetFinalizer()},e.prototype.data=function(){return this._finalizer.data()},e.prototype.callUserFinalizer=function(){this._finalizer.callFinalizer()},e.prototype.invokeFinalizerFromGC=function(){this._finalizer.envObject.invokeFinalizerFromGC(this)},e.prototype.dispose=function(){this._finalizer&&(this._finalizer.envObject.dequeueFinalizer(this),this._finalizer.dispose(),t.prototype.dispose.call(this),this._finalizer=void 0)},e}(M),U=function(){function t(t,e){this.id=0,this.ctx=t,this.value=e}return t.create=function(e,n){var i=new t(e,n);return e.deferredStore.add(i),i},t.prototype.resolve=function(t){this.value.resolve(t),this.dispose()},t.prototype.reject=function(t){this.value.reject(t),this.dispose()},t.prototype.dispose=function(){this.ctx.deferredStore.remove(this.id),this.id=0,this.value=null,this.ctx=null},t}(),V=function(){function t(){this._values=[void 0],this._values.length=4,this._size=1,this._freeList=[]}return t.prototype.add=function(t){var e;if(this._freeList.length)e=this._freeList.shift();else{e=this._size,this._size++;var n=this._values.length;e>=n&&(this._values.length=n+(n>>1)+16)}t.id=e,this._values[e]=t},t.prototype.get=function(t){return this._values[t]},t.prototype.has=function(t){return void 0!==this._values[t]},t.prototype.remove=function(t){var e=this._values[t];e&&(e.id=0,this._values[t]=void 0,this._freeList.push(Number(t)))},t.prototype.dispose=function(){for(var t=1;t0)throw new Error("Can not add same fn and arg twice");this._cleanupHooks.push(new G(t,e,n,this._cleanupHookCounter++))},t.prototype.remove=function(t,e,n){for(var i=0;i{function t(t){Object.setPrototypeOf(this,null),e.set(this,t)}return t.prototype=null,t})();function s(i){if(!t(i))throw new TypeError("not external");return e.get(i)}const n=function(){let e;try{e=new Function}catch(e){return!1}return"function"==typeof e}(),r=function(){if("undefined"!=typeof globalThis)return globalThis;let e=function(){return this}();if(!e&&n)try{e=new Function("return this")()}catch(e){}if(!e){if("undefined"==typeof __webpack_public_path__&&"undefined"!=typeof global)return global;if("undefined"!=typeof window)return window;if("undefined"!=typeof self)return self}return e}();class a{constructor(){this._exception=void 0,this._caught=!1}isEmpty(){return!this._caught}hasCaught(){return this._caught}exception(){return this._exception}setError(e){this._caught=!0,this._exception=e}reset(){this._caught=!1,this._exception=void 0}extractException(){const e=this._exception;return this.reset(),e}}const o=function(){var e;try{return Boolean(null===(e=Object.getOwnPropertyDescriptor(Function.prototype,"name"))||void 0===e?void 0:e.configurable)}catch(e){return!1}}(),l="object"==typeof Reflect,c="undefined"!=typeof FinalizationRegistry&&"undefined"!=typeof WeakRef,h=function(){try{const e=Symbol();new WeakRef(e),(new WeakMap).set(e,void 0)}catch(e){return!1}return!0}(),u="undefined"!=typeof BigInt;function p(e){return"object"==typeof e&&null!==e||"function"==typeof e}const f=function(){let e;return e="undefined"!=typeof __webpack_public_path__||"undefined"!=typeof __webpack_public_path__?"undefined"!=typeof __non_webpack_require__?__non_webpack_require__:void 0:"undefined"!=typeof require?require:void 0,e}(),d="function"==typeof MessageChannel?MessageChannel:function(){try{return f("worker_threads").MessageChannel}catch(e){}}(),_="function"==typeof setImmediate?setImmediate:function(e){if("function"!=typeof e)throw new TypeError('The "callback" argument must be of type function');if(d){let t=new d;t.port1.onmessage=function(){t.port1.onmessage=null,t=void 0,e()},t.port2.postMessage(null)}else setTimeout(e,0)},v="function"==typeof Buffer?Buffer:function(){try{return f("buffer").Buffer}catch(e){}}(),g="1.8.1",y=1,z=10,b=2147483647,k=8;class w{constructor(e,t){this.id=e,this.value=t}data(){return s(this.value)}isNumber(){return"number"==typeof this.value}isBigInt(){return"bigint"==typeof this.value}isString(){return"string"==typeof this.value}isFunction(){return"function"==typeof this.value}isExternal(){return t(this.value)}isObject(){return"object"==typeof this.value&&null!==this.value}isArray(){return Array.isArray(this.value)}isArrayBuffer(){return this.value instanceof ArrayBuffer}isTypedArray(){return ArrayBuffer.isView(this.value)&&!(this.value instanceof DataView)}isBuffer(e){return!!ArrayBuffer.isView(this.value)||(null!=e||(e=v),"function"==typeof e&&e.isBuffer(this.value))}isDataView(){return this.value instanceof DataView}isDate(){return this.value instanceof Date}isPromise(){return this.value instanceof Promise}isBoolean(){return"boolean"==typeof this.value}isUndefined(){return void 0===this.value}isSymbol(){return"symbol"==typeof this.value}isNull(){return null===this.value}dispose(){this.value=void 0}}class m extends w{constructor(e,t){super(e,t)}dispose(){}}class C{constructor(){this._values=[void 0,C.UNDEFINED,C.NULL,C.FALSE,C.TRUE,C.GLOBAL],this._next=C.MIN_ID}push(e){let t;const i=this._next,s=this._values;return i=this.end)return null;this.handleStore.swap(e,this.start);const t=this.handleStore.get(this.start);return this.start++,this.parent.end++,t}escapeCalled(){return this._escapeCalled}}class x{constructor(){this._rootScope=new S(null,0,null,1,C.MIN_ID),this.currentScope=this._rootScope,this._values=[void 0]}get(e){return this._values[e]}openScope(e){const t=this.currentScope;let i=t.child;if(null!==i)i.start=i.end=t.end;else{const s=t.id+1;i=new S(e,s,t,t.end),this._values[s]=i}return this.currentScope=i,i}closeScope(){const e=this.currentScope;this.currentScope=e.parent,e.dispose()}dispose(){this.currentScope=this._rootScope,this._values.length=1}}class F{constructor(){this._next=null,this._prev=null}dispose(){}finalize(){}link(e){this._prev=e,this._next=e._next,null!==this._next&&(this._next._prev=this),e._next=this}unlink(){null!==this._prev&&(this._prev._next=this._next),null!==this._next&&(this._next._prev=this._prev),this._prev=null,this._next=null}static finalizeAll(e){for(;null!==e._next;)e._next.finalize()}}class E{constructor(e,t=0,i=0,s=0){this.envObject=e,this._finalizeCallback=t,this._finalizeData=i,this._finalizeHint=s,this._makeDynCall_vppp=e.makeDynCall_vppp}callback(){return this._finalizeCallback}data(){return this._finalizeData}hint(){return this._finalizeHint}resetEnv(){this.envObject=void 0}resetFinalizer(){this._finalizeCallback=0,this._finalizeData=0,this._finalizeHint=0}callFinalizer(){const e=this._finalizeCallback,t=this._finalizeData,i=this._finalizeHint;if(this.resetFinalizer(),!e)return;const s=Number(e);this.envObject?this.envObject.callFinalizer(s,t,i):this._makeDynCall_vppp(s)(0,t,i)}dispose(){this.envObject=void 0,this._makeDynCall_vppp=void 0}}class I extends F{static create(e,t,i,s){const n=new I(e,t,i,s);return n.link(e.finalizing_reflist),n}constructor(e,t,i,s){super(),this._finalizer=new E(e,t,i,s)}data(){return this._finalizer.data()}dispose(){this._finalizer&&(this.unlink(),this._finalizer.envObject.dequeueFinalizer(this),this._finalizer.dispose(),this._finalizer=void 0,super.dispose())}finalize(){let e;this.unlink();let t=!1;try{this._finalizer.callFinalizer()}catch(i){t=!0,e=i}if(this.dispose(),t)throw e}}function D(e,t){if(!e.terminatedOrTerminating())throw t}class O{constructor(e,t,i,s,n){this.ctx=e,this.moduleApiVersion=t,this.makeDynCall_vppp=i,this.makeDynCall_vp=s,this.abort=n,this.openHandleScopes=0,this.instanceData=null,this.tryCatch=new a,this.refs=1,this.reflist=new F,this.finalizing_reflist=new F,this.pendingFinalizers=[],this.lastError={errorCode:0,engineErrorCode:0,engineReserved:0},this.inGcFinalizer=!1,this._bindingMap=new WeakMap,this.id=0}canCallIntoJs(){return!0}terminatedOrTerminating(){return!this.canCallIntoJs()}ref(){this.refs++}unref(){this.refs--,0===this.refs&&this.dispose()}ensureHandle(e){return this.ctx.ensureHandle(e)}ensureHandleId(e){return this.ensureHandle(e).id}clearLastError(){const e=this.lastError;return 0!==e.errorCode&&(e.errorCode=0),0!==e.engineErrorCode&&(e.engineErrorCode=0),0!==e.engineReserved&&(e.engineReserved=0),0}setLastError(e,t=0,i=0){const s=this.lastError;return s.errorCode!==e&&(s.errorCode=e),s.engineErrorCode!==t&&(s.engineErrorCode=t),s.engineReserved!==i&&(s.engineReserved=i),e}getReturnStatus(){return this.tryCatch.hasCaught()?this.setLastError(10):0}callIntoModule(e,t=D){const i=this.openHandleScopes;this.clearLastError();const s=e(this);if(i!==this.openHandleScopes&&this.abort("open_handle_scopes != open_handle_scopes_before"),this.tryCatch.hasCaught()){t(this,this.tryCatch.extractException())}return s}invokeFinalizerFromGC(e){if(this.moduleApiVersion!==b)this.enqueueFinalizer(e);else{const t=this.inGcFinalizer;this.inGcFinalizer=!0;try{e.finalize()}finally{this.inGcFinalizer=t}}}checkGCAccess(){this.moduleApiVersion===b&&this.inGcFinalizer&&this.abort("Finalizer is calling a function that may affect GC state.\nThe finalizers are run directly from GC and must not affect GC state.\nUse `node_api_post_finalizer` from inside of the finalizer to work around this issue.\nIt schedules the call as a new task in the event loop.")}enqueueFinalizer(e){-1===this.pendingFinalizers.indexOf(e)&&this.pendingFinalizers.push(e)}dequeueFinalizer(e){const t=this.pendingFinalizers.indexOf(e);-1!==t&&this.pendingFinalizers.splice(t,1)}deleteMe(){F.finalizeAll(this.finalizing_reflist),F.finalizeAll(this.reflist),this.tryCatch.extractException(),this.ctx.envStore.remove(this.id)}dispose(){0!==this.id&&(this.deleteMe(),this.finalizing_reflist.dispose(),this.reflist.dispose(),this.id=0)}initObjectBinding(e){const t={wrapped:0,tag:null};return this._bindingMap.set(e,t),t}getObjectBinding(e){return this._bindingMap.has(e)?this._bindingMap.get(e):this.initObjectBinding(e)}setInstanceData(e,t,i){this.instanceData&&this.instanceData.dispose(),this.instanceData=I.create(this,t,e,i)}getInstanceData(){return this.instanceData?this.instanceData.data():0}}class H extends O{constructor(e,t,i,s,n,r,a){super(e,i,s,n,r),this.filename=t,this.nodeBinding=a,this.destructing=!1,this.finalizationScheduled=!1}deleteMe(){this.destructing=!0,this.drainFinalizerQueue(),super.deleteMe()}canCallIntoJs(){return super.canCallIntoJs()&&this.ctx.canCallIntoJs()}triggerFatalException(e){if(this.nodeBinding)this.nodeBinding.napi.fatalException(e);else{if("object"!=typeof process||null===process||"function"!=typeof process._fatalException)throw e;process._fatalException(e)||(console.error(e),process.exit(1))}}callbackIntoModule(e,t){return this.callIntoModule(t,(t,i)=>{if(t.terminatedOrTerminating())return;const s="object"==typeof process&&null!==process,n=!!s&&Boolean(process.execArgv&&-1!==process.execArgv.indexOf("--force-node-api-uncaught-exceptions-policy"));if(t.moduleApiVersion<10&&!n&&!e){return void(s&&"function"==typeof process.emitWarning?process.emitWarning:function(e,t,i){if(e instanceof Error)console.warn(e.toString());else{const s=i?`[${i}] `:"";console.warn(`${s}${t||"Warning"}: ${e}`)}})("Uncaught N-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.","DeprecationWarning","DEP0168")}t.triggerFatalException(i)})}callFinalizer(e,t,i){this.callFinalizerInternal(1,e,t,i)}callFinalizerInternal(e,t,i,s){const n=this.makeDynCall_vppp(t),r=this.id,a=this.ctx.openScope(this);try{this.callbackIntoModule(Boolean(e),()=>{n(r,i,s)})}finally{this.ctx.closeScope(this,a)}}enqueueFinalizer(e){super.enqueueFinalizer(e),this.finalizationScheduled||this.destructing||(this.finalizationScheduled=!0,this.ref(),_(()=>{this.finalizationScheduled=!1,this.unref(),this.drainFinalizerQueue()}))}drainFinalizerQueue(){for(;this.pendingFinalizers.length>0;){this.pendingFinalizers.shift().finalize()}}}function j(e,t,i,s,n,r,a){(i="number"!=typeof i?8:i)<8?i=8:i>10&&i!==b&&function(e,t){throw new Error(`${e} requires Node-API version ${t}, but this version of Node.js only supports version 10 add-ons.`)}(t,i);const o=new H(e,t,i,s,n,r,a);return e.envStore.add(o),e.addCleanupHook(o,()=>{o.unref()},0),o}class N extends Error{constructor(e){super(e);const t=new.target,i=t.prototype;if(!(this instanceof N)){const e=Object.setPrototypeOf;"function"==typeof e?e.call(Object,this,i):this.__proto__=i,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t)}}}Object.defineProperty(N.prototype,"name",{configurable:!0,writable:!0,value:"EmnapiError"});class R extends N{constructor(e,t){super(`${e}: The current runtime does not support "FinalizationRegistry" and "WeakRef".${t?` ${t}`:""}`)}}Object.defineProperty(R.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportWeakRefError"});class A extends N{constructor(e,t){super(`${e}: The current runtime does not support "Buffer". Consider using buffer polyfill to make sure \`globalThis.Buffer\` is defined.${t?` ${t}`:""}`)}}Object.defineProperty(A.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportBufferError"});class B{constructor(e){this._value=e}deref(){return this._value}dispose(){this._value=void 0}}class W{constructor(e){this._ref=new B(e)}setWeak(e,t){if(!c||void 0===this._ref||this._ref instanceof WeakRef)return;const i=this._ref.deref();try{W._registry.register(i,this,this);const s=new WeakRef(i);this._ref.dispose(),this._ref=s,this._param=e,this._callback=t}catch(e){if("symbol"!=typeof i)throw e}}clearWeak(){if(c&&void 0!==this._ref&&this._ref instanceof WeakRef){try{W._registry.unregister(this)}catch(e){}this._param=void 0,this._callback=void 0;const e=this._ref.deref();this._ref=void 0===e?e:new B(e)}}reset(){if(c)try{W._registry.unregister(this)}catch(e){}this._param=void 0,this._callback=void 0,this._ref instanceof B&&this._ref.dispose(),this._ref=void 0}isEmpty(){return void 0===this._ref}deref(){if(void 0!==this._ref)return this._ref.deref()}}var M;W._registry=c?new FinalizationRegistry(e=>{e._ref=void 0;const t=e._callback,i=e._param;e._callback=void 0,e._param=void 0,"function"==typeof t&&t(i)}):void 0,function(e){e[e.kRuntime=0]="kRuntime",e[e.kUserland=1]="kUserland"}(M||(M={}));class L extends F{static weakCallback(e){e.persistent.reset(),e.invokeFinalizerFromGC()}static create(e,t,i,s,n,r,a){const o=new L(e,t,i,s);return e.ctx.refStore.add(o),o.link(e.reflist),o}constructor(e,t,i,s){super(),this.envObject=e,this._refcount=i,this._ownership=s;const n=e.ctx.handleStore.get(t);var r;this.canBeWeak=(r=n).isObject()||r.isFunction()||r.isSymbol(),this.persistent=new W(n.value),this.id=0,0===i&&this._setWeak()}ref(){return this.persistent.isEmpty()?0:(1===++this._refcount&&this.canBeWeak&&this.persistent.clearWeak(),this._refcount)}unref(){return this.persistent.isEmpty()||0===this._refcount?0:(0===--this._refcount&&this._setWeak(),this._refcount)}get(e=this.envObject){if(this.persistent.isEmpty())return 0;const t=this.persistent.deref();return e.ensureHandle(t).id}resetFinalizer(){}data(){return 0}refcount(){return this._refcount}ownership(){return this._ownership}callUserFinalizer(){}invokeFinalizerFromGC(){this.finalize()}_setWeak(){this.canBeWeak?this.persistent.setWeak(this,L.weakCallback):this.persistent.reset()}finalize(){this.persistent.reset();const e=this._ownership===M.kRuntime;this.unlink(),this.callUserFinalizer(),e&&this.dispose()}dispose(){0!==this.id&&(this.unlink(),this.persistent.reset(),this.envObject.ctx.refStore.remove(this.id),super.dispose(),this.envObject=void 0,this.id=0)}}class T extends L{static create(e,t,i,s,n){const r=new T(e,t,i,s,n);return e.ctx.refStore.add(r),r.link(e.reflist),r}constructor(e,t,i,s,n){super(e,t,i,s),this._data=n}data(){return this._data}}class U extends L{static create(e,t,i,s,n,r,a){const o=new U(e,t,i,s,n,r,a);return e.ctx.refStore.add(o),o.link(e.finalizing_reflist),o}constructor(e,t,i,s,n,r,a){super(e,t,i,s),this._finalizer=new E(e,n,r,a)}resetFinalizer(){this._finalizer.resetFinalizer()}data(){return this._finalizer.data()}callUserFinalizer(){this._finalizer.callFinalizer()}invokeFinalizerFromGC(){this._finalizer.envObject.invokeFinalizerFromGC(this)}dispose(){this._finalizer&&(this._finalizer.envObject.dequeueFinalizer(this),this._finalizer.dispose(),super.dispose(),this._finalizer=void 0)}}class P{static create(e,t){const i=new P(e,t);return e.deferredStore.add(i),i}constructor(e,t){this.id=0,this.ctx=e,this.value=t}resolve(e){this.value.resolve(e),this.dispose()}reject(e){this.value.reject(e),this.dispose()}dispose(){this.ctx.deferredStore.remove(this.id),this.id=0,this.value=null,this.ctx=null}}class G{constructor(){this._values=[void 0],this._values.length=4,this._size=1,this._freeList=[]}add(e){let t;if(this._freeList.length)t=this._freeList.shift();else{t=this._size,this._size++;const e=this._values.length;t>=e&&(this._values.length=e+(e>>1)+16)}e.id=t,this._values[t]=e}get(e){return this._values[e]}has(e){return void 0!==this._values[e]}remove(e){const t=this._values[e];t&&(t.id=0,this._values[e]=void 0,this._freeList.push(Number(e)))}dispose(){for(let e=1;es.envObject===e&&s.fn===t&&s.arg===i).length>0)throw new Error("Can not add same fn and arg twice");this._cleanupHooks.push(new q(e,t,i,this._cleanupHookCounter++))}remove(e,t,i){for(let s=0;st.order-e.order);for(let t=0;t{this._suppressDestroy||this.destroy()}))}suppressDestroy(){this._suppressDestroy=!0}getRuntimeVersions(){return{version:g,NODE_API_SUPPORTED_VERSION_MAX:10,NAPI_VERSION_EXPERIMENTAL:b,NODE_API_DEFAULT_MODULE_API_VERSION:8}}createNotSupportWeakRefError(e,t){return new R(e,t)}createNotSupportBufferError(e,t){return new A(e,t)}createReference(e,t,i,s){return L.create(e,t,i,s)}createReferenceWithData(e,t,i,s,n){return T.create(e,t,i,s,n)}createReferenceWithFinalizer(e,t,i,s,n=0,r=0,a=0){return U.create(e,t,i,s,n,r,a)}createDeferred(e){return P.create(this,e)}createEnv(e,t,i,s,n,r){return j(this,e,t,i,s,n,r)}createTrackedFinalizer(e,t,i,s){return I.create(e,t,i,s)}getCurrentScope(){return this.scopeStore.currentScope}addToCurrentScope(e){return this.scopeStore.currentScope.add(e)}openScope(e){const t=this.scopeStore.openScope(this.handleStore);return e&&e.openHandleScopes++,t}closeScope(e,t){e&&0===e.openHandleScopes||(this.scopeStore.closeScope(),e&&e.openHandleScopes--)}ensureHandle(e){switch(e){case void 0:return C.UNDEFINED;case null:return C.NULL;case!0:return C.TRUE;case!1:return C.FALSE;case r:return C.GLOBAL}return this.addToCurrentScope(e)}addCleanupHook(e,t,i){this.cleanupQueue.add(e,t,i)}removeCleanupHook(e,t,i){this.cleanupQueue.remove(e,t,i)}runCleanup(){for(;!this.cleanupQueue.empty();)this.cleanupQueue.drain()}increaseWaitingRequestCounter(){var e;null===(e=this.refCounter)||void 0===e||e.increase()}decreaseWaitingRequestCounter(){var e;null===(e=this.refCounter)||void 0===e||e.decrease()}setCanCallIntoJs(e){this._canCallIntoJs=e}setStopping(e){this._isStopping=e}canCallIntoJs(){return this._canCallIntoJs&&!this._isStopping}destroy(){this.setStopping(!0),this.setCanCallIntoJs(!1),this.runCleanup()}}let Q;function X(){return new J}function K(){return Q||(Q=X()),Q}export{m as ConstHandle,J as Context,P as Deferred,N as EmnapiError,O as Env,i as External,E as Finalizer,w as Handle,S as HandleScope,C as HandleStore,b as NAPI_VERSION_EXPERIMENTAL,k as NODE_API_DEFAULT_MODULE_API_VERSION,z as NODE_API_SUPPORTED_VERSION_MAX,y as NODE_API_SUPPORTED_VERSION_MIN,H as NodeEnv,A as NotSupportBufferError,R as NotSupportWeakRefError,W as Persistent,F as RefTracker,L as Reference,M as ReferenceOwnership,T as ReferenceWithData,U as ReferenceWithFinalizer,x as ScopeStore,G as Store,I as TrackedFinalizer,a as TryCatch,X as createContext,K as getDefaultContext,s as getExternalValue,t as isExternal,p as isReferenceType,g as version}; diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.mjs b/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.mjs deleted file mode 100644 index 2a17f49..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/dist/emnapi.mjs +++ /dev/null @@ -1,1323 +0,0 @@ -const externalValue = new WeakMap(); -function isExternal(object) { - return externalValue.has(object); -} -const External = (() => { - function External(value) { - Object.setPrototypeOf(this, null); - externalValue.set(this, value); - } - External.prototype = null; - return External; -})(); -function getExternalValue(external) { - if (!isExternal(external)) { - throw new TypeError('not external'); - } - return externalValue.get(external); -} - -const supportNewFunction = (function () { - let f; - try { - f = new Function(); - } - catch (_) { - return false; - } - return typeof f === 'function'; -})(); -const _global = (function () { - if (typeof globalThis !== 'undefined') - return globalThis; - let g = (function () { return this; })(); - if (!g && supportNewFunction) { - try { - g = new Function('return this')(); - } - catch (_) { } - } - if (!g) { - if (typeof __webpack_public_path__ === 'undefined') { - if (typeof global !== 'undefined') - return global; - } - if (typeof window !== 'undefined') - return window; - if (typeof self !== 'undefined') - return self; - } - return g; -})(); -class TryCatch { - constructor() { - this._exception = undefined; - this._caught = false; - } - isEmpty() { - return !this._caught; - } - hasCaught() { - return this._caught; - } - exception() { - return this._exception; - } - setError(err) { - this._caught = true; - this._exception = err; - } - reset() { - this._caught = false; - this._exception = undefined; - } - extractException() { - const e = this._exception; - this.reset(); - return e; - } -} -const canSetFunctionName = (function () { - var _a; - try { - return Boolean((_a = Object.getOwnPropertyDescriptor(Function.prototype, 'name')) === null || _a === void 0 ? void 0 : _a.configurable); - } - catch (_) { - return false; - } -})(); -const supportReflect = typeof Reflect === 'object'; -const supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); -const supportWeakSymbol = (function () { - try { - const sym = Symbol(); - new WeakRef(sym); - new WeakMap().set(sym, undefined); - } - catch (_) { - return false; - } - return true; -})(); -const supportBigInt = typeof BigInt !== 'undefined'; -function isReferenceType(v) { - return (typeof v === 'object' && v !== null) || typeof v === 'function'; -} -const _require = (function () { - let nativeRequire; - if (typeof __webpack_public_path__ !== 'undefined') { - nativeRequire = (function () { - return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; - })(); - } - else { - nativeRequire = (function () { - return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); - })(); - } - return nativeRequire; -})(); -const _MessageChannel = typeof MessageChannel === 'function' - ? MessageChannel - : (function () { - try { - return _require('worker_threads').MessageChannel; - } - catch (_) { } - return undefined; - })(); -const _setImmediate = typeof setImmediate === 'function' - ? setImmediate - : function (callback) { - if (typeof callback !== 'function') { - throw new TypeError('The "callback" argument must be of type function'); - } - if (_MessageChannel) { - let channel = new _MessageChannel(); - channel.port1.onmessage = function () { - channel.port1.onmessage = null; - channel = undefined; - callback(); - }; - channel.port2.postMessage(null); - } - else { - setTimeout(callback, 0); - } - }; -const _Buffer = typeof Buffer === 'function' - ? Buffer - : (function () { - try { - return _require('buffer').Buffer; - } - catch (_) { } - return undefined; - })(); -const version = "1.8.1"; -const NODE_API_SUPPORTED_VERSION_MIN = 1; -const NODE_API_SUPPORTED_VERSION_MAX = 10; -const NAPI_VERSION_EXPERIMENTAL = 2147483647; -const NODE_API_DEFAULT_MODULE_API_VERSION = 8; - -class Handle { - constructor(id, value) { - this.id = id; - this.value = value; - } - data() { - return getExternalValue(this.value); - } - isNumber() { - return typeof this.value === 'number'; - } - isBigInt() { - return typeof this.value === 'bigint'; - } - isString() { - return typeof this.value === 'string'; - } - isFunction() { - return typeof this.value === 'function'; - } - isExternal() { - return isExternal(this.value); - } - isObject() { - return typeof this.value === 'object' && this.value !== null; - } - isArray() { - return Array.isArray(this.value); - } - isArrayBuffer() { - return (this.value instanceof ArrayBuffer); - } - isTypedArray() { - return (ArrayBuffer.isView(this.value)) && !(this.value instanceof DataView); - } - isBuffer(BufferConstructor) { - if (ArrayBuffer.isView(this.value)) - return true; - BufferConstructor !== null && BufferConstructor !== void 0 ? BufferConstructor : (BufferConstructor = _Buffer); - return typeof BufferConstructor === 'function' && BufferConstructor.isBuffer(this.value); - } - isDataView() { - return (this.value instanceof DataView); - } - isDate() { - return (this.value instanceof Date); - } - isPromise() { - return (this.value instanceof Promise); - } - isBoolean() { - return typeof this.value === 'boolean'; - } - isUndefined() { - return this.value === undefined; - } - isSymbol() { - return typeof this.value === 'symbol'; - } - isNull() { - return this.value === null; - } - dispose() { - this.value = undefined; - } -} -class ConstHandle extends Handle { - constructor(id, value) { - super(id, value); - } - dispose() { } -} -class HandleStore { - constructor() { - this._values = [ - undefined, - HandleStore.UNDEFINED, - HandleStore.NULL, - HandleStore.FALSE, - HandleStore.TRUE, - HandleStore.GLOBAL - ]; - this._next = HandleStore.MIN_ID; - } - push(value) { - let h; - const next = this._next; - const values = this._values; - if (next < values.length) { - h = values[next]; - h.value = value; - } - else { - h = new Handle(next, value); - values[next] = h; - } - this._next++; - return h; - } - erase(start, end) { - this._next = start; - const values = this._values; - for (let i = start; i < end; ++i) { - values[i].dispose(); - } - } - get(id) { - return this._values[id]; - } - swap(a, b) { - const values = this._values; - const h = values[a]; - values[a] = values[b]; - values[a].id = Number(a); - values[b] = h; - h.id = Number(b); - } - dispose() { - this._values.length = HandleStore.MIN_ID; - this._next = HandleStore.MIN_ID; - } -} -HandleStore.UNDEFINED = new ConstHandle(1, undefined); -HandleStore.NULL = new ConstHandle(2, null); -HandleStore.FALSE = new ConstHandle(3, false); -HandleStore.TRUE = new ConstHandle(4, true); -HandleStore.GLOBAL = new ConstHandle(5, _global); -HandleStore.MIN_ID = 6; - -class HandleScope { - constructor(handleStore, id, parentScope, start, end = start) { - this.handleStore = handleStore; - this.id = id; - this.parent = parentScope; - this.child = null; - if (parentScope !== null) - parentScope.child = this; - this.start = start; - this.end = end; - this._escapeCalled = false; - this.callbackInfo = { - thiz: undefined, - data: 0, - args: undefined, - fn: undefined - }; - } - add(value) { - const h = this.handleStore.push(value); - this.end++; - return h; - } - addExternal(data) { - return this.add(new External(data)); - } - dispose() { - if (this._escapeCalled) - this._escapeCalled = false; - if (this.start === this.end) - return; - this.handleStore.erase(this.start, this.end); - } - escape(handle) { - if (this._escapeCalled) - return null; - this._escapeCalled = true; - if (handle < this.start || handle >= this.end) { - return null; - } - this.handleStore.swap(handle, this.start); - const h = this.handleStore.get(this.start); - this.start++; - this.parent.end++; - return h; - } - escapeCalled() { - return this._escapeCalled; - } -} - -class ScopeStore { - constructor() { - this._rootScope = new HandleScope(null, 0, null, 1, HandleStore.MIN_ID); - this.currentScope = this._rootScope; - this._values = [undefined]; - } - get(id) { - return this._values[id]; - } - openScope(handleStore) { - const currentScope = this.currentScope; - let scope = currentScope.child; - if (scope !== null) { - scope.start = scope.end = currentScope.end; - } - else { - const id = currentScope.id + 1; - scope = new HandleScope(handleStore, id, currentScope, currentScope.end); - this._values[id] = scope; - } - this.currentScope = scope; - return scope; - } - closeScope() { - const scope = this.currentScope; - this.currentScope = scope.parent; - scope.dispose(); - } - dispose() { - this.currentScope = this._rootScope; - this._values.length = 1; - } -} - -class RefTracker { - constructor() { - this._next = null; - this._prev = null; - } - dispose() { } - finalize() { } - link(list) { - this._prev = list; - this._next = list._next; - if (this._next !== null) { - this._next._prev = this; - } - list._next = this; - } - unlink() { - if (this._prev !== null) { - this._prev._next = this._next; - } - if (this._next !== null) { - this._next._prev = this._prev; - } - this._prev = null; - this._next = null; - } - static finalizeAll(list) { - while (list._next !== null) { - list._next.finalize(); - } - } -} - -class Finalizer { - constructor(envObject, _finalizeCallback = 0, _finalizeData = 0, _finalizeHint = 0) { - this.envObject = envObject; - this._finalizeCallback = _finalizeCallback; - this._finalizeData = _finalizeData; - this._finalizeHint = _finalizeHint; - this._makeDynCall_vppp = envObject.makeDynCall_vppp; - } - callback() { return this._finalizeCallback; } - data() { return this._finalizeData; } - hint() { return this._finalizeHint; } - resetEnv() { - this.envObject = undefined; - } - resetFinalizer() { - this._finalizeCallback = 0; - this._finalizeData = 0; - this._finalizeHint = 0; - } - callFinalizer() { - const finalize_callback = this._finalizeCallback; - const finalize_data = this._finalizeData; - const finalize_hint = this._finalizeHint; - this.resetFinalizer(); - if (!finalize_callback) - return; - const fini = Number(finalize_callback); - if (!this.envObject) { - this._makeDynCall_vppp(fini)(0, finalize_data, finalize_hint); - } - else { - this.envObject.callFinalizer(fini, finalize_data, finalize_hint); - } - } - dispose() { - this.envObject = undefined; - this._makeDynCall_vppp = undefined; - } -} - -class TrackedFinalizer extends RefTracker { - static create(envObject, finalize_callback, finalize_data, finalize_hint) { - const finalizer = new TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint); - finalizer.link(envObject.finalizing_reflist); - return finalizer; - } - constructor(envObject, finalize_callback, finalize_data, finalize_hint) { - super(); - this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); - } - data() { - return this._finalizer.data(); - } - dispose() { - if (!this._finalizer) - return; - this.unlink(); - this._finalizer.envObject.dequeueFinalizer(this); - this._finalizer.dispose(); - this._finalizer = undefined; - super.dispose(); - } - finalize() { - this.unlink(); - let error; - let caught = false; - try { - this._finalizer.callFinalizer(); - } - catch (err) { - caught = true; - error = err; - } - this.dispose(); - if (caught) { - throw error; - } - } -} - -function throwNodeApiVersionError(moduleName, moduleApiVersion) { - const errorMessage = `${moduleName} requires Node-API version ${moduleApiVersion}, but this version of Node.js only supports version ${NODE_API_SUPPORTED_VERSION_MAX} add-ons.`; - throw new Error(errorMessage); -} -function handleThrow(envObject, value) { - if (envObject.terminatedOrTerminating()) { - return; - } - throw value; -} -class Env { - constructor(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) { - this.ctx = ctx; - this.moduleApiVersion = moduleApiVersion; - this.makeDynCall_vppp = makeDynCall_vppp; - this.makeDynCall_vp = makeDynCall_vp; - this.abort = abort; - this.openHandleScopes = 0; - this.instanceData = null; - this.tryCatch = new TryCatch(); - this.refs = 1; - this.reflist = new RefTracker(); - this.finalizing_reflist = new RefTracker(); - this.pendingFinalizers = []; - this.lastError = { - errorCode: 0, - engineErrorCode: 0, - engineReserved: 0 - }; - this.inGcFinalizer = false; - this._bindingMap = new WeakMap(); - this.id = 0; - } - canCallIntoJs() { - return true; - } - terminatedOrTerminating() { - return !this.canCallIntoJs(); - } - ref() { - this.refs++; - } - unref() { - this.refs--; - if (this.refs === 0) { - this.dispose(); - } - } - ensureHandle(value) { - return this.ctx.ensureHandle(value); - } - ensureHandleId(value) { - return this.ensureHandle(value).id; - } - clearLastError() { - const lastError = this.lastError; - if (lastError.errorCode !== 0) - lastError.errorCode = 0; - if (lastError.engineErrorCode !== 0) - lastError.engineErrorCode = 0; - if (lastError.engineReserved !== 0) - lastError.engineReserved = 0; - return 0; - } - setLastError(error_code, engine_error_code = 0, engine_reserved = 0) { - const lastError = this.lastError; - if (lastError.errorCode !== error_code) - lastError.errorCode = error_code; - if (lastError.engineErrorCode !== engine_error_code) - lastError.engineErrorCode = engine_error_code; - if (lastError.engineReserved !== engine_reserved) - lastError.engineReserved = engine_reserved; - return error_code; - } - getReturnStatus() { - return !this.tryCatch.hasCaught() ? 0 : this.setLastError(10); - } - callIntoModule(fn, handleException = handleThrow) { - const openHandleScopesBefore = this.openHandleScopes; - this.clearLastError(); - const r = fn(this); - if (openHandleScopesBefore !== this.openHandleScopes) { - this.abort('open_handle_scopes != open_handle_scopes_before'); - } - if (this.tryCatch.hasCaught()) { - const err = this.tryCatch.extractException(); - handleException(this, err); - } - return r; - } - invokeFinalizerFromGC(finalizer) { - if (this.moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { - this.enqueueFinalizer(finalizer); - } - else { - const saved = this.inGcFinalizer; - this.inGcFinalizer = true; - try { - finalizer.finalize(); - } - finally { - this.inGcFinalizer = saved; - } - } - } - checkGCAccess() { - if (this.moduleApiVersion === NAPI_VERSION_EXPERIMENTAL && this.inGcFinalizer) { - this.abort('Finalizer is calling a function that may affect GC state.\n' + - 'The finalizers are run directly from GC and must not affect GC ' + - 'state.\n' + - 'Use `node_api_post_finalizer` from inside of the finalizer to work ' + - 'around this issue.\n' + - 'It schedules the call as a new task in the event loop.'); - } - } - enqueueFinalizer(finalizer) { - if (this.pendingFinalizers.indexOf(finalizer) === -1) { - this.pendingFinalizers.push(finalizer); - } - } - dequeueFinalizer(finalizer) { - const index = this.pendingFinalizers.indexOf(finalizer); - if (index !== -1) { - this.pendingFinalizers.splice(index, 1); - } - } - deleteMe() { - RefTracker.finalizeAll(this.finalizing_reflist); - RefTracker.finalizeAll(this.reflist); - this.tryCatch.extractException(); - this.ctx.envStore.remove(this.id); - } - dispose() { - if (this.id === 0) - return; - this.deleteMe(); - this.finalizing_reflist.dispose(); - this.reflist.dispose(); - this.id = 0; - } - initObjectBinding(value) { - const binding = { - wrapped: 0, - tag: null - }; - this._bindingMap.set(value, binding); - return binding; - } - getObjectBinding(value) { - if (this._bindingMap.has(value)) { - return this._bindingMap.get(value); - } - return this.initObjectBinding(value); - } - setInstanceData(data, finalize_cb, finalize_hint) { - if (this.instanceData) { - this.instanceData.dispose(); - } - this.instanceData = TrackedFinalizer.create(this, finalize_cb, data, finalize_hint); - } - getInstanceData() { - return this.instanceData ? this.instanceData.data() : 0; - } -} -class NodeEnv extends Env { - constructor(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - super(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort); - this.filename = filename; - this.nodeBinding = nodeBinding; - this.destructing = false; - this.finalizationScheduled = false; - } - deleteMe() { - this.destructing = true; - this.drainFinalizerQueue(); - super.deleteMe(); - } - canCallIntoJs() { - return super.canCallIntoJs() && this.ctx.canCallIntoJs(); - } - triggerFatalException(err) { - if (this.nodeBinding) { - this.nodeBinding.napi.fatalException(err); - } - else { - if (typeof process === 'object' && process !== null && typeof process._fatalException === 'function') { - const handled = process._fatalException(err); - if (!handled) { - console.error(err); - process.exit(1); - } - } - else { - throw err; - } - } - } - callbackIntoModule(enforceUncaughtExceptionPolicy, fn) { - return this.callIntoModule(fn, (envObject, err) => { - if (envObject.terminatedOrTerminating()) { - return; - } - const hasProcess = typeof process === 'object' && process !== null; - const hasForceFlag = hasProcess ? Boolean(process.execArgv && (process.execArgv.indexOf('--force-node-api-uncaught-exceptions-policy') !== -1)) : false; - if (envObject.moduleApiVersion < 10 && !hasForceFlag && !enforceUncaughtExceptionPolicy) { - const warn = hasProcess && typeof process.emitWarning === 'function' - ? process.emitWarning - : function (warning, type, code) { - if (warning instanceof Error) { - console.warn(warning.toString()); - } - else { - const prefix = code ? `[${code}] ` : ''; - console.warn(`${prefix}${type || 'Warning'}: ${warning}`); - } - }; - warn('Uncaught N-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.', 'DeprecationWarning', 'DEP0168'); - return; - } - envObject.triggerFatalException(err); - }); - } - callFinalizer(cb, data, hint) { - this.callFinalizerInternal(1, cb, data, hint); - } - callFinalizerInternal(forceUncaught, cb, data, hint) { - const f = this.makeDynCall_vppp(cb); - const env = this.id; - const scope = this.ctx.openScope(this); - try { - this.callbackIntoModule(Boolean(forceUncaught), () => { f(env, data, hint); }); - } - finally { - this.ctx.closeScope(this, scope); - } - } - enqueueFinalizer(finalizer) { - super.enqueueFinalizer(finalizer); - if (!this.finalizationScheduled && !this.destructing) { - this.finalizationScheduled = true; - this.ref(); - _setImmediate(() => { - this.finalizationScheduled = false; - this.unref(); - this.drainFinalizerQueue(); - }); - } - } - drainFinalizerQueue() { - while (this.pendingFinalizers.length > 0) { - const refTracker = this.pendingFinalizers.shift(); - refTracker.finalize(); - } - } -} -function newEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - moduleApiVersion = typeof moduleApiVersion !== 'number' ? NODE_API_DEFAULT_MODULE_API_VERSION : moduleApiVersion; - if (moduleApiVersion < NODE_API_DEFAULT_MODULE_API_VERSION) { - moduleApiVersion = NODE_API_DEFAULT_MODULE_API_VERSION; - } - else if (moduleApiVersion > NODE_API_SUPPORTED_VERSION_MAX && moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { - throwNodeApiVersionError(filename, moduleApiVersion); - } - const env = new NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); - ctx.envStore.add(env); - ctx.addCleanupHook(env, () => { env.unref(); }, 0); - return env; -} - -class EmnapiError extends Error { - constructor(message) { - super(message); - const ErrorConstructor = new.target; - const proto = ErrorConstructor.prototype; - if (!(this instanceof EmnapiError)) { - const setPrototypeOf = Object.setPrototypeOf; - if (typeof setPrototypeOf === 'function') { - setPrototypeOf.call(Object, this, proto); - } - else { - this.__proto__ = proto; - } - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(this, ErrorConstructor); - } - } - } -} -Object.defineProperty(EmnapiError.prototype, 'name', { - configurable: true, - writable: true, - value: 'EmnapiError' -}); -class NotSupportWeakRefError extends EmnapiError { - constructor(api, message) { - super(`${api}: The current runtime does not support "FinalizationRegistry" and "WeakRef".${message ? ` ${message}` : ''}`); - } -} -Object.defineProperty(NotSupportWeakRefError.prototype, 'name', { - configurable: true, - writable: true, - value: 'NotSupportWeakRefError' -}); -class NotSupportBufferError extends EmnapiError { - constructor(api, message) { - super(`${api}: The current runtime does not support "Buffer". Consider using buffer polyfill to make sure \`globalThis.Buffer\` is defined.${message ? ` ${message}` : ''}`); - } -} -Object.defineProperty(NotSupportBufferError.prototype, 'name', { - configurable: true, - writable: true, - value: 'NotSupportBufferError' -}); - -class StrongRef { - constructor(value) { - this._value = value; - } - deref() { - return this._value; - } - dispose() { - this._value = undefined; - } -} -class Persistent { - constructor(value) { - this._ref = new StrongRef(value); - } - setWeak(param, callback) { - if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) - return; - const value = this._ref.deref(); - try { - Persistent._registry.register(value, this, this); - const weakRef = new WeakRef(value); - this._ref.dispose(); - this._ref = weakRef; - this._param = param; - this._callback = callback; - } - catch (err) { - if (typeof value === 'symbol') ; - else { - throw err; - } - } - } - clearWeak() { - if (!supportFinalizer || this._ref === undefined) - return; - if (this._ref instanceof WeakRef) { - try { - Persistent._registry.unregister(this); - } - catch (_) { } - this._param = undefined; - this._callback = undefined; - const value = this._ref.deref(); - if (value === undefined) { - this._ref = value; - } - else { - this._ref = new StrongRef(value); - } - } - } - reset() { - if (supportFinalizer) { - try { - Persistent._registry.unregister(this); - } - catch (_) { } - } - this._param = undefined; - this._callback = undefined; - if (this._ref instanceof StrongRef) { - this._ref.dispose(); - } - this._ref = undefined; - } - isEmpty() { - return this._ref === undefined; - } - deref() { - if (this._ref === undefined) - return undefined; - return this._ref.deref(); - } -} -Persistent._registry = supportFinalizer - ? new FinalizationRegistry((value) => { - value._ref = undefined; - const callback = value._callback; - const param = value._param; - value._callback = undefined; - value._param = undefined; - if (typeof callback === 'function') { - callback(param); - } - }) - : undefined; - -var ReferenceOwnership; -(function (ReferenceOwnership) { - ReferenceOwnership[ReferenceOwnership["kRuntime"] = 0] = "kRuntime"; - ReferenceOwnership[ReferenceOwnership["kUserland"] = 1] = "kUserland"; -})(ReferenceOwnership || (ReferenceOwnership = {})); -function canBeHeldWeakly(value) { - return value.isObject() || value.isFunction() || value.isSymbol(); -} -class Reference extends RefTracker { - static weakCallback(ref) { - ref.persistent.reset(); - ref.invokeFinalizerFromGC(); - } - static create(envObject, handle_id, initialRefcount, ownership, _unused1, _unused2, _unused3) { - const ref = new Reference(envObject, handle_id, initialRefcount, ownership); - envObject.ctx.refStore.add(ref); - ref.link(envObject.reflist); - return ref; - } - constructor(envObject, handle_id, initialRefcount, ownership) { - super(); - this.envObject = envObject; - this._refcount = initialRefcount; - this._ownership = ownership; - const handle = envObject.ctx.handleStore.get(handle_id); - this.canBeWeak = canBeHeldWeakly(handle); - this.persistent = new Persistent(handle.value); - this.id = 0; - if (initialRefcount === 0) { - this._setWeak(); - } - } - ref() { - if (this.persistent.isEmpty()) { - return 0; - } - if (++this._refcount === 1 && this.canBeWeak) { - this.persistent.clearWeak(); - } - return this._refcount; - } - unref() { - if (this.persistent.isEmpty() || this._refcount === 0) { - return 0; - } - if (--this._refcount === 0) { - this._setWeak(); - } - return this._refcount; - } - get(envObject = this.envObject) { - if (this.persistent.isEmpty()) { - return 0; - } - const obj = this.persistent.deref(); - const handle = envObject.ensureHandle(obj); - return handle.id; - } - resetFinalizer() { } - data() { return 0; } - refcount() { return this._refcount; } - ownership() { return this._ownership; } - callUserFinalizer() { } - invokeFinalizerFromGC() { - this.finalize(); - } - _setWeak() { - if (this.canBeWeak) { - this.persistent.setWeak(this, Reference.weakCallback); - } - else { - this.persistent.reset(); - } - } - finalize() { - this.persistent.reset(); - const deleteMe = this._ownership === ReferenceOwnership.kRuntime; - this.unlink(); - this.callUserFinalizer(); - if (deleteMe) { - this.dispose(); - } - } - dispose() { - if (this.id === 0) - return; - this.unlink(); - this.persistent.reset(); - this.envObject.ctx.refStore.remove(this.id); - super.dispose(); - this.envObject = undefined; - this.id = 0; - } -} -class ReferenceWithData extends Reference { - static create(envObject, value, initialRefcount, ownership, data) { - const reference = new ReferenceWithData(envObject, value, initialRefcount, ownership, data); - envObject.ctx.refStore.add(reference); - reference.link(envObject.reflist); - return reference; - } - constructor(envObject, value, initialRefcount, ownership, _data) { - super(envObject, value, initialRefcount, ownership); - this._data = _data; - } - data() { - return this._data; - } -} -class ReferenceWithFinalizer extends Reference { - static create(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { - const reference = new ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); - envObject.ctx.refStore.add(reference); - reference.link(envObject.finalizing_reflist); - return reference; - } - constructor(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { - super(envObject, value, initialRefcount, ownership); - this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); - } - resetFinalizer() { - this._finalizer.resetFinalizer(); - } - data() { - return this._finalizer.data(); - } - callUserFinalizer() { - this._finalizer.callFinalizer(); - } - invokeFinalizerFromGC() { - this._finalizer.envObject.invokeFinalizerFromGC(this); - } - dispose() { - if (!this._finalizer) - return; - this._finalizer.envObject.dequeueFinalizer(this); - this._finalizer.dispose(); - super.dispose(); - this._finalizer = undefined; - } -} - -class Deferred { - static create(ctx, value) { - const deferred = new Deferred(ctx, value); - ctx.deferredStore.add(deferred); - return deferred; - } - constructor(ctx, value) { - this.id = 0; - this.ctx = ctx; - this.value = value; - } - resolve(value) { - this.value.resolve(value); - this.dispose(); - } - reject(reason) { - this.value.reject(reason); - this.dispose(); - } - dispose() { - this.ctx.deferredStore.remove(this.id); - this.id = 0; - this.value = null; - this.ctx = null; - } -} - -class Store { - constructor() { - this._values = [undefined]; - this._values.length = 4; - this._size = 1; - this._freeList = []; - } - add(value) { - let id; - if (this._freeList.length) { - id = this._freeList.shift(); - } - else { - id = this._size; - this._size++; - const capacity = this._values.length; - if (id >= capacity) { - this._values.length = capacity + (capacity >> 1) + 16; - } - } - value.id = id; - this._values[id] = value; - } - get(id) { - return this._values[id]; - } - has(id) { - return this._values[id] !== undefined; - } - remove(id) { - const value = this._values[id]; - if (value) { - value.id = 0; - this._values[id] = undefined; - this._freeList.push(Number(id)); - } - } - dispose() { - for (let i = 1; i < this._size; ++i) { - const value = this._values[i]; - value === null || value === void 0 ? void 0 : value.dispose(); - } - this._values = [undefined]; - this._size = 1; - this._freeList = []; - } -} - -class CleanupHookCallback { - constructor(envObject, fn, arg, order) { - this.envObject = envObject; - this.fn = fn; - this.arg = arg; - this.order = order; - } -} -class CleanupQueue { - constructor() { - this._cleanupHooks = []; - this._cleanupHookCounter = 0; - } - empty() { - return this._cleanupHooks.length === 0; - } - add(envObject, fn, arg) { - if (this._cleanupHooks.filter((hook) => (hook.envObject === envObject && hook.fn === fn && hook.arg === arg)).length > 0) { - throw new Error('Can not add same fn and arg twice'); - } - this._cleanupHooks.push(new CleanupHookCallback(envObject, fn, arg, this._cleanupHookCounter++)); - } - remove(envObject, fn, arg) { - for (let i = 0; i < this._cleanupHooks.length; ++i) { - const hook = this._cleanupHooks[i]; - if (hook.envObject === envObject && hook.fn === fn && hook.arg === arg) { - this._cleanupHooks.splice(i, 1); - return; - } - } - } - drain() { - const hooks = this._cleanupHooks.slice(); - hooks.sort((a, b) => (b.order - a.order)); - for (let i = 0; i < hooks.length; ++i) { - const cb = hooks[i]; - if (typeof cb.fn === 'number') { - cb.envObject.makeDynCall_vp(cb.fn)(cb.arg); - } - else { - cb.fn(cb.arg); - } - this._cleanupHooks.splice(this._cleanupHooks.indexOf(cb), 1); - } - } - dispose() { - this._cleanupHooks.length = 0; - this._cleanupHookCounter = 0; - } -} -class NodejsWaitingRequestCounter { - constructor() { - this.refHandle = new _MessageChannel().port1; - this.count = 0; - } - increase() { - if (this.count === 0) { - if (this.refHandle.ref) { - this.refHandle.ref(); - } - } - this.count++; - } - decrease() { - if (this.count === 0) - return; - if (this.count === 1) { - if (this.refHandle.unref) { - this.refHandle.unref(); - } - } - this.count--; - } -} -class Context { - constructor() { - this._isStopping = false; - this._canCallIntoJs = true; - this._suppressDestroy = false; - this.envStore = new Store(); - this.scopeStore = new ScopeStore(); - this.refStore = new Store(); - this.deferredStore = new Store(); - this.handleStore = new HandleStore(); - this.feature = { - supportReflect, - supportFinalizer, - supportWeakSymbol, - supportBigInt, - supportNewFunction, - canSetFunctionName, - setImmediate: _setImmediate, - Buffer: _Buffer, - MessageChannel: _MessageChannel - }; - this.cleanupQueue = new CleanupQueue(); - if (typeof process === 'object' && process !== null && typeof process.once === 'function') { - this.refCounter = new NodejsWaitingRequestCounter(); - process.once('beforeExit', () => { - if (!this._suppressDestroy) { - this.destroy(); - } - }); - } - } - suppressDestroy() { - this._suppressDestroy = true; - } - getRuntimeVersions() { - return { - version, - NODE_API_SUPPORTED_VERSION_MAX, - NAPI_VERSION_EXPERIMENTAL, - NODE_API_DEFAULT_MODULE_API_VERSION - }; - } - createNotSupportWeakRefError(api, message) { - return new NotSupportWeakRefError(api, message); - } - createNotSupportBufferError(api, message) { - return new NotSupportBufferError(api, message); - } - createReference(envObject, handle_id, initialRefcount, ownership) { - return Reference.create(envObject, handle_id, initialRefcount, ownership); - } - createReferenceWithData(envObject, handle_id, initialRefcount, ownership, data) { - return ReferenceWithData.create(envObject, handle_id, initialRefcount, ownership, data); - } - createReferenceWithFinalizer(envObject, handle_id, initialRefcount, ownership, finalize_callback = 0, finalize_data = 0, finalize_hint = 0) { - return ReferenceWithFinalizer.create(envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); - } - createDeferred(value) { - return Deferred.create(this, value); - } - createEnv(filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { - return newEnv(this, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); - } - createTrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint) { - return TrackedFinalizer.create(envObject, finalize_callback, finalize_data, finalize_hint); - } - getCurrentScope() { - return this.scopeStore.currentScope; - } - addToCurrentScope(value) { - return this.scopeStore.currentScope.add(value); - } - openScope(envObject) { - const scope = this.scopeStore.openScope(this.handleStore); - if (envObject) - envObject.openHandleScopes++; - return scope; - } - closeScope(envObject, _scope) { - if (envObject && envObject.openHandleScopes === 0) - return; - this.scopeStore.closeScope(); - if (envObject) - envObject.openHandleScopes--; - } - ensureHandle(value) { - switch (value) { - case undefined: return HandleStore.UNDEFINED; - case null: return HandleStore.NULL; - case true: return HandleStore.TRUE; - case false: return HandleStore.FALSE; - case _global: return HandleStore.GLOBAL; - } - return this.addToCurrentScope(value); - } - addCleanupHook(envObject, fn, arg) { - this.cleanupQueue.add(envObject, fn, arg); - } - removeCleanupHook(envObject, fn, arg) { - this.cleanupQueue.remove(envObject, fn, arg); - } - runCleanup() { - while (!this.cleanupQueue.empty()) { - this.cleanupQueue.drain(); - } - } - increaseWaitingRequestCounter() { - var _a; - (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.increase(); - } - decreaseWaitingRequestCounter() { - var _a; - (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.decrease(); - } - setCanCallIntoJs(value) { - this._canCallIntoJs = value; - } - setStopping(value) { - this._isStopping = value; - } - canCallIntoJs() { - return this._canCallIntoJs && !this._isStopping; - } - destroy() { - this.setStopping(true); - this.setCanCallIntoJs(false); - this.runCleanup(); - } -} -let defaultContext; -function createContext() { - return new Context(); -} -function getDefaultContext() { - if (!defaultContext) { - defaultContext = createContext(); - } - return defaultContext; -} - -export { ConstHandle, Context, Deferred, EmnapiError, Env, External, Finalizer, Handle, HandleScope, HandleStore, NAPI_VERSION_EXPERIMENTAL, NODE_API_DEFAULT_MODULE_API_VERSION, NODE_API_SUPPORTED_VERSION_MAX, NODE_API_SUPPORTED_VERSION_MIN, NodeEnv, NotSupportBufferError, NotSupportWeakRefError, Persistent, RefTracker, Reference, ReferenceOwnership, ReferenceWithData, ReferenceWithFinalizer, ScopeStore, Store, TrackedFinalizer, TryCatch, createContext, getDefaultContext, getExternalValue, isExternal, isReferenceType, version }; diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/index.js b/sdks/nodejs/node_modules/@emnapi/runtime/index.js deleted file mode 100644 index efd0f2f..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/index.js +++ /dev/null @@ -1,5 +0,0 @@ -if (typeof process !== 'undefined' && process.env.NODE_ENV === 'production') { - module.exports = require('./dist/emnapi.cjs.min.js') -} else { - module.exports = require('./dist/emnapi.cjs.js') -} diff --git a/sdks/nodejs/node_modules/@emnapi/runtime/package.json b/sdks/nodejs/node_modules/@emnapi/runtime/package.json deleted file mode 100644 index eb52910..0000000 --- a/sdks/nodejs/node_modules/@emnapi/runtime/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "@emnapi/runtime", - "version": "1.8.1", - "description": "emnapi runtime", - "main": "index.js", - "module": "./dist/emnapi.esm-bundler.js", - "types": "./dist/emnapi.d.ts", - "sideEffects": false, - "exports": { - ".": { - "types": { - "module": "./dist/emnapi.d.ts", - "import": "./dist/emnapi.d.mts", - "default": "./dist/emnapi.d.ts" - }, - "module": "./dist/emnapi.esm-bundler.js", - "import": "./dist/emnapi.mjs", - "default": "./index.js" - }, - "./dist/emnapi.cjs.min": { - "types": "./dist/emnapi.d.ts", - "default": "./dist/emnapi.cjs.min.js" - }, - "./dist/emnapi.min.mjs": { - "types": "./dist/emnapi.d.mts", - "default": "./dist/emnapi.min.mjs" - } - }, - "dependencies": { - "tslib": "^2.4.0" - }, - "scripts": { - "build": "node ./script/build.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/toyobayashi/emnapi.git" - }, - "author": "toyobayashi", - "license": "MIT", - "bugs": { - "url": "https://github.com/toyobayashi/emnapi/issues" - }, - "homepage": "https://github.com/toyobayashi/emnapi#readme", - "publishConfig": { - "access": "public" - } -} diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/LICENSE b/sdks/nodejs/node_modules/@emnapi/wasi-threads/LICENSE deleted file mode 100644 index 05a5944..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021-present Toyobayashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/README.md b/sdks/nodejs/node_modules/@emnapi/wasi-threads/README.md deleted file mode 100644 index d7ab935..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/README.md +++ /dev/null @@ -1,203 +0,0 @@ -# @emnapi/wasi-threads - -This package makes [wasi-threads proposal](https://github.com/WebAssembly/wasi-threads) based WASI modules work in Node.js and browser. - -## Quick Start - -`index.html` - -```html - - - -``` - -If your application will block browser main thread (for example `pthread_join`), please run it in worker instead. - -```html - -``` - -`index.js` - -```js -const ENVIRONMENT_IS_NODE = - typeof process === 'object' && process !== null && - typeof process.versions === 'object' && process.versions !== null && - typeof process.versions.node === 'string'; - -(function (main) { - if (ENVIRONMENT_IS_NODE) { - main(require) - } else { - if (typeof importScripts === 'function') { - importScripts('./node_modules/@tybys/wasm-util/dist/wasm-util.js') - importScripts('./node_modules/@emnapi/wasi-threads/dist/wasi-threads.js') - } - const nodeWasi = { WASI: globalThis.wasmUtil.WASI } - const nodeWorkerThreads = { - Worker: globalThis.Worker - } - const _require = function (request) { - if (request === 'node:wasi' || request === 'wasi') return nodeWasi - if (request === 'node:worker_threads' || request === 'worker_threads') return nodeWorkerThreads - if (request === '@emnapi/wasi-threads') return globalThis.wasiThreads - throw new Error('Can not find module: ' + request) - } - main(_require) - } -})(async function (require) { - const { WASI } = require('wasi') - const { Worker } = require('worker_threads') - const { WASIThreads } = require('@emnapi/wasi-threads') - - const wasi = new WASI({ - version: 'preview1' - }) - const wasiThreads = new WASIThreads({ - wasi, - - /** - * avoid Atomics.wait() deadlock during thread creation in browser - * see https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size - */ - reuseWorker: ENVIRONMENT_IS_NODE - ? false - : { - size: 4 /** greater than actual needs (2) */, - strict: true - }, - - /** - * Synchronous thread creation - * pthread_create will not return until thread worker actually starts - */ - waitThreadStart: typeof window === 'undefined' ? 1000 : false, - - onCreateWorker: () => { - return new Worker('./worker.js', { - execArgv: ['--experimental-wasi-unstable-preview1'] - }) - } - }) - const memory = new WebAssembly.Memory({ - initial: 16777216 / 65536, - maximum: 2147483648 / 65536, - shared: true - }) - let input - const file = 'path/to/your/wasi-module.wasm' - try { - input = require('fs').readFileSync(require('path').join(__dirname, file)) - } catch (err) { - const response = await fetch(file) - input = await response.arrayBuffer() - } - let { module, instance } = await WebAssembly.instantiate(input, { - env: { memory }, - wasi_snapshot_preview1: wasi.wasiImport, - ...wasiThreads.getImportObject() - }) - - wasiThreads.setup(instance, module, memory) - await wasiThreads.preloadWorkers() - - if (typeof instance.exports._start === 'function') { - return wasi.start(instance) - } else { - wasi.initialize(instance) - // instance.exports.exported_wasm_function() - } -}) -``` - -`worker.js` - -```js -(function (main) { - const ENVIRONMENT_IS_NODE = - typeof process === 'object' && process !== null && - typeof process.versions === 'object' && process.versions !== null && - typeof process.versions.node === 'string' - - if (ENVIRONMENT_IS_NODE) { - const _require = function (request) { - return require(request) - } - - const _init = function () { - const nodeWorkerThreads = require('worker_threads') - const parentPort = nodeWorkerThreads.parentPort - - parentPort.on('message', (data) => { - globalThis.onmessage({ data }) - }) - - Object.assign(globalThis, { - self: globalThis, - require, - Worker: nodeWorkerThreads.Worker, - importScripts: function (f) { - (0, eval)(require('fs').readFileSync(f, 'utf8') + '//# sourceURL=' + f) - }, - postMessage: function (msg) { - parentPort.postMessage(msg) - } - }) - } - - main(_require, _init) - } else { - importScripts('./node_modules/@tybys/wasm-util/dist/wasm-util.js') - importScripts('./node_modules/@emnapi/wasi-threads/dist/wasi-threads.js') - - const nodeWasi = { WASI: globalThis.wasmUtil.WASI } - const _require = function (request) { - if (request === '@emnapi/wasi-threads') return globalThis.wasiThreads - if (request === 'node:wasi' || request === 'wasi') return nodeWasi - throw new Error('Can not find module: ' + request) - } - const _init = function () {} - main(_require, _init) - } -})(function main (require, init) { - init() - - const { WASI } = require('wasi') - const { ThreadMessageHandler, WASIThreads } = require('@emnapi/wasi-threads') - - const handler = new ThreadMessageHandler({ - async onLoad ({ wasmModule, wasmMemory }) { - const wasi = new WASI({ - version: 'preview1' - }) - - const wasiThreads = new WASIThreads({ - wasi, - childThread: true - }) - - const originalInstance = await WebAssembly.instantiate(wasmModule, { - env: { - memory: wasmMemory, - }, - wasi_snapshot_preview1: wasi.wasiImport, - ...wasiThreads.getImportObject() - }) - - // must call `initialize` instead of `start` in child thread - const instance = wasiThreads.initialize(originalInstance, wasmModule, wasmMemory) - - return { module: wasmModule, instance } - } - }) - - globalThis.onmessage = function (e) { - handler.handle(e) - // handle other messages - } -}) -``` diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js b/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js deleted file mode 100644 index 4432492..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +++ /dev/null @@ -1,897 +0,0 @@ -const _WebAssembly = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; -const ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && - typeof process.versions === 'object' && process.versions !== null && - typeof process.versions.node === 'string'; -function getPostMessage(options) { - return typeof (options === null || options === void 0 ? void 0 : options.postMessage) === 'function' - ? options.postMessage - : typeof postMessage === 'function' - ? postMessage - : undefined; -} -function serizeErrorToBuffer(sab, code, error) { - const i32array = new Int32Array(sab); - Atomics.store(i32array, 0, code); - if (code > 1 && error) { - const name = error.name; - const message = error.message; - const stack = error.stack; - const nameBuffer = new TextEncoder().encode(name); - const messageBuffer = new TextEncoder().encode(message); - const stackBuffer = new TextEncoder().encode(stack); - Atomics.store(i32array, 1, nameBuffer.length); - Atomics.store(i32array, 2, messageBuffer.length); - Atomics.store(i32array, 3, stackBuffer.length); - const buffer = new Uint8Array(sab); - buffer.set(nameBuffer, 16); - buffer.set(messageBuffer, 16 + nameBuffer.length); - buffer.set(stackBuffer, 16 + nameBuffer.length + messageBuffer.length); - } -} -function deserizeErrorFromBuffer(sab) { - var _a, _b; - const i32array = new Int32Array(sab); - const status = Atomics.load(i32array, 0); - if (status <= 1) { - return null; - } - const nameLength = Atomics.load(i32array, 1); - const messageLength = Atomics.load(i32array, 2); - const stackLength = Atomics.load(i32array, 3); - const buffer = new Uint8Array(sab); - const nameBuffer = buffer.slice(16, 16 + nameLength); - const messageBuffer = buffer.slice(16 + nameLength, 16 + nameLength + messageLength); - const stackBuffer = buffer.slice(16 + nameLength + messageLength, 16 + nameLength + messageLength + stackLength); - const name = new TextDecoder().decode(nameBuffer); - const message = new TextDecoder().decode(messageBuffer); - const stack = new TextDecoder().decode(stackBuffer); - const ErrorConstructor = (_a = globalThis[name]) !== null && _a !== void 0 ? _a : (name === 'RuntimeError' ? ((_b = _WebAssembly.RuntimeError) !== null && _b !== void 0 ? _b : Error) : Error); - const error = new ErrorConstructor(message); - Object.defineProperty(error, 'stack', { - value: stack, - writable: true, - enumerable: false, - configurable: true - }); - return error; -} -function isSharedArrayBuffer(value) { - return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); -} -function isTrapError(e) { - try { - return e instanceof _WebAssembly.RuntimeError; - } - catch (_) { - return false; - } -} - -function createMessage(type, payload) { - return { - __emnapi__: { - type, - payload - } - }; -} - -const WASI_THREADS_MAX_TID = 0x1FFFFFFF; -function checkSharedWasmMemory(wasmMemory) { - if (wasmMemory) { - if (!isSharedArrayBuffer(wasmMemory.buffer)) { - throw new Error('Multithread features require shared wasm memory. ' + - 'Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, ' + - 'then create WebAssembly.Memory with `shared: true` option'); - } - } - else { - if (typeof SharedArrayBuffer === 'undefined') { - throw new Error('Current environment does not support SharedArrayBuffer, threads are not available!'); - } - } -} -function getReuseWorker(value) { - var _a; - if (typeof value === 'boolean') { - return value ? { size: 0, strict: false } : false; - } - if (typeof value === 'number') { - if (!(value >= 0)) { - throw new RangeError('reuseWorker: size must be a non-negative integer'); - } - return { size: value, strict: false }; - } - if (!value) { - return false; - } - const size = (_a = Number(value.size)) !== null && _a !== void 0 ? _a : 0; - const strict = Boolean(value.strict); - if (!(size > 0) && strict) { - throw new RangeError('reuseWorker: size must be set to positive integer if strict is set to true'); - } - return { size, strict }; -} -let nextWorkerID = 0; -class ThreadManager { - get nextWorkerID() { return nextWorkerID; } - constructor(options) { - var _a; - this.unusedWorkers = []; - this.runningWorkers = []; - this.pthreads = Object.create(null); - this.wasmModule = null; - this.wasmMemory = null; - this.messageEvents = new WeakMap(); - if (!options) { - throw new TypeError('ThreadManager(): options is not provided'); - } - if ('childThread' in options) { - this._childThread = Boolean(options.childThread); - } - else { - this._childThread = false; - } - if (this._childThread) { - this._onCreateWorker = undefined; - this._reuseWorker = false; - this._beforeLoad = undefined; - } - else { - this._onCreateWorker = options.onCreateWorker; - this._reuseWorker = getReuseWorker(options.reuseWorker); - this._beforeLoad = options.beforeLoad; - } - this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console); - } - init() { - if (!this._childThread) { - this.initMainThread(); - } - } - initMainThread() { - this.preparePool(); - } - preparePool() { - if (this._reuseWorker) { - if (this._reuseWorker.size) { - let pthreadPoolSize = this._reuseWorker.size; - while (pthreadPoolSize--) { - const worker = this.allocateUnusedWorker(); - if (ENVIRONMENT_IS_NODE) { - worker.once('message', () => { }); - worker.unref(); - } - } - } - } - } - shouldPreloadWorkers() { - return !this._childThread && this._reuseWorker && this._reuseWorker.size > 0; - } - loadWasmModuleToAllWorkers() { - const promises = Array(this.unusedWorkers.length); - for (let i = 0; i < this.unusedWorkers.length; ++i) { - const worker = this.unusedWorkers[i]; - if (ENVIRONMENT_IS_NODE) - worker.ref(); - promises[i] = this.loadWasmModuleToWorker(worker).then((w) => { - if (ENVIRONMENT_IS_NODE) - worker.unref(); - return w; - }, (e) => { - if (ENVIRONMENT_IS_NODE) - worker.unref(); - throw e; - }); - } - return Promise.all(promises).catch((err) => { - this.terminateAllThreads(); - throw err; - }); - } - preloadWorkers() { - if (this.shouldPreloadWorkers()) { - return this.loadWasmModuleToAllWorkers(); - } - return Promise.resolve([]); - } - setup(wasmModule, wasmMemory) { - this.wasmModule = wasmModule; - this.wasmMemory = wasmMemory; - } - markId(worker) { - if (worker.__emnapi_tid) - return worker.__emnapi_tid; - const tid = nextWorkerID + 43; - nextWorkerID = (nextWorkerID + 1) % (WASI_THREADS_MAX_TID - 42); - this.pthreads[tid] = worker; - worker.__emnapi_tid = tid; - return tid; - } - returnWorkerToPool(worker) { - var tid = worker.__emnapi_tid; - if (tid !== undefined) { - delete this.pthreads[tid]; - } - this.unusedWorkers.push(worker); - this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1); - delete worker.__emnapi_tid; - if (ENVIRONMENT_IS_NODE) { - worker.unref(); - } - } - loadWasmModuleToWorker(worker, sab) { - if (worker.whenLoaded) - return worker.whenLoaded; - const err = this.printErr; - const beforeLoad = this._beforeLoad; - const _this = this; - worker.whenLoaded = new Promise((resolve, reject) => { - const handleError = function (e) { - let message = 'worker sent an error!'; - if (worker.__emnapi_tid !== undefined) { - message = 'worker (tid = ' + worker.__emnapi_tid + ') sent an error!'; - } - if ('message' in e) { - err(message + ' ' + e.message); - if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) { - try { - _this.terminateAllThreads(); - } - catch (_) { } - } - } - else { - err(message); - } - reject(e); - throw e; - }; - const handleMessage = (data) => { - if (data.__emnapi__) { - const type = data.__emnapi__.type; - const payload = data.__emnapi__.payload; - if (type === 'loaded') { - worker.loaded = true; - if (ENVIRONMENT_IS_NODE && !worker.__emnapi_tid) { - worker.unref(); - } - resolve(worker); - } - else if (type === 'cleanup-thread') { - if (payload.tid in this.pthreads) { - this.cleanThread(worker, payload.tid); - } - } - } - }; - worker.onmessage = (e) => { - handleMessage(e.data); - this.fireMessageEvent(worker, e); - }; - worker.onerror = handleError; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', function (data) { - var _a, _b; - (_b = (_a = worker).onmessage) === null || _b === void 0 ? void 0 : _b.call(_a, { - data - }); - }); - worker.on('error', function (e) { - var _a, _b; - (_b = (_a = worker).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, e); - }); - worker.on('detachedExit', function () { }); - } - if (typeof beforeLoad === 'function') { - beforeLoad(worker); - } - try { - worker.postMessage(createMessage('load', { - wasmModule: this.wasmModule, - wasmMemory: this.wasmMemory, - sab - })); - } - catch (err) { - checkSharedWasmMemory(this.wasmMemory); - throw err; - } - }); - return worker.whenLoaded; - } - allocateUnusedWorker() { - const _onCreateWorker = this._onCreateWorker; - if (typeof _onCreateWorker !== 'function') { - throw new TypeError('`options.onCreateWorker` is not provided'); - } - const worker = _onCreateWorker({ type: 'thread', name: 'emnapi-pthread' }); - this.unusedWorkers.push(worker); - return worker; - } - getNewWorker(sab) { - if (this._reuseWorker) { - if (this.unusedWorkers.length === 0) { - if (this._reuseWorker.strict) { - if (!ENVIRONMENT_IS_NODE) { - const err = this.printErr; - err('Tried to spawn a new thread, but the thread pool is exhausted.\n' + - 'This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.'); - return; - } - } - const worker = this.allocateUnusedWorker(); - this.loadWasmModuleToWorker(worker, sab); - } - return this.unusedWorkers.pop(); - } - const worker = this.allocateUnusedWorker(); - this.loadWasmModuleToWorker(worker, sab); - return this.unusedWorkers.pop(); - } - cleanThread(worker, tid, force) { - if (!force && this._reuseWorker) { - this.returnWorkerToPool(worker); - } - else { - delete this.pthreads[tid]; - const index = this.runningWorkers.indexOf(worker); - if (index !== -1) { - this.runningWorkers.splice(index, 1); - } - this.terminateWorker(worker); - delete worker.__emnapi_tid; - } - } - terminateWorker(worker) { - var _a; - const tid = worker.__emnapi_tid; - worker.terminate(); - (_a = this.messageEvents.get(worker)) === null || _a === void 0 ? void 0 : _a.clear(); - this.messageEvents.delete(worker); - worker.onmessage = (e) => { - if (e.data.__emnapi__) { - const err = this.printErr; - err('received "' + e.data.__emnapi__.type + '" command from terminated worker: ' + tid); - } - }; - } - terminateAllThreads() { - for (let i = 0; i < this.runningWorkers.length; ++i) { - this.terminateWorker(this.runningWorkers[i]); - } - for (let i = 0; i < this.unusedWorkers.length; ++i) { - this.terminateWorker(this.unusedWorkers[i]); - } - this.unusedWorkers = []; - this.runningWorkers = []; - this.pthreads = Object.create(null); - this.preparePool(); - } - addMessageEventListener(worker, onMessage) { - let listeners = this.messageEvents.get(worker); - if (!listeners) { - listeners = new Set(); - this.messageEvents.set(worker, listeners); - } - listeners.add(onMessage); - return () => { - listeners === null || listeners === void 0 ? void 0 : listeners.delete(onMessage); - }; - } - fireMessageEvent(worker, e) { - const listeners = this.messageEvents.get(worker); - if (!listeners) - return; - const err = this.printErr; - listeners.forEach((listener) => { - try { - listener(e); - } - catch (e) { - err(e.stack); - } - }); - } -} - -const kIsProxy = Symbol('kIsProxy'); -function createInstanceProxy(instance, memory) { - if (instance[kIsProxy]) - return instance; - const originalExports = instance.exports; - const createHandler = function (target) { - const handlers = [ - 'apply', - 'construct', - 'defineProperty', - 'deleteProperty', - 'get', - 'getOwnPropertyDescriptor', - 'getPrototypeOf', - 'has', - 'isExtensible', - 'ownKeys', - 'preventExtensions', - 'set', - 'setPrototypeOf' - ]; - const handler = {}; - for (let i = 0; i < handlers.length; i++) { - const name = handlers[i]; - handler[name] = function () { - const args = Array.prototype.slice.call(arguments, 1); - args.unshift(target); - return Reflect[name].apply(Reflect, args); - }; - } - return handler; - }; - const handler = createHandler(originalExports); - const _initialize = () => { }; - const _start = () => 0; - handler.get = function (_target, p, receiver) { - var _a; - if (p === 'memory') { - return (_a = (typeof memory === 'function' ? memory() : memory)) !== null && _a !== void 0 ? _a : Reflect.get(originalExports, p, receiver); - } - if (p === '_initialize') { - return p in originalExports ? _initialize : undefined; - } - if (p === '_start') { - return p in originalExports ? _start : undefined; - } - return Reflect.get(originalExports, p, receiver); - }; - handler.has = function (_target, p) { - if (p === 'memory') - return true; - return Reflect.has(originalExports, p); - }; - const exportsProxy = new Proxy(Object.create(null), handler); - return new Proxy(instance, { - get(target, p, receiver) { - if (p === 'exports') { - return exportsProxy; - } - if (p === kIsProxy) { - return true; - } - return Reflect.get(target, p, receiver); - } - }); -} - -const patchedWasiInstances = new WeakMap(); -class WASIThreads { - constructor(options) { - if (!options) { - throw new TypeError('WASIThreads(): options is not provided'); - } - if (!options.wasi) { - throw new TypeError('WASIThreads(): options.wasi is not provided'); - } - patchedWasiInstances.set(this, new WeakSet()); - const wasi = options.wasi; - patchWasiInstance(this, wasi); - this.wasi = wasi; - if ('childThread' in options) { - this.childThread = Boolean(options.childThread); - } - else { - this.childThread = false; - } - this.PThread = undefined; - if ('threadManager' in options) { - if (typeof options.threadManager === 'function') { - this.PThread = options.threadManager(); - } - else { - this.PThread = options.threadManager; - } - } - else { - if (!this.childThread) { - this.PThread = new ThreadManager(options); - this.PThread.init(); - } - } - let waitThreadStart = false; - if ('waitThreadStart' in options) { - waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); - } - const postMessage = getPostMessage(options); - if (this.childThread && typeof postMessage !== 'function') { - throw new TypeError('options.postMessage is not a function'); - } - this.postMessage = postMessage; - const wasm64 = Boolean(options.wasm64); - const onMessage = (e) => { - if (e.data.__emnapi__) { - const type = e.data.__emnapi__.type; - const payload = e.data.__emnapi__.payload; - if (type === 'spawn-thread') { - threadSpawn(payload.startArg, payload.errorOrTid); - } - else if (type === 'terminate-all-threads') { - this.terminateAllThreads(); - } - } - }; - const threadSpawn = (startArg, errorOrTid) => { - var _a; - const EAGAIN = 6; - const isNewABI = errorOrTid !== undefined; - try { - checkSharedWasmMemory(this.wasmMemory); - } - catch (err) { - (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.printErr(err.stack); - if (isNewABI) { - const struct = new Int32Array(this.wasmMemory.buffer, errorOrTid, 2); - Atomics.store(struct, 0, 1); - Atomics.store(struct, 1, EAGAIN); - Atomics.notify(struct, 1); - return 1; - } - else { - return -EAGAIN; - } - } - if (!isNewABI) { - const malloc = this.wasmInstance.exports.malloc; - errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : malloc(8); - if (!errorOrTid) { - return -48; - } - } - const _free = this.wasmInstance.exports.free; - const free = wasm64 ? (ptr) => { _free(BigInt(ptr)); } : _free; - const struct = new Int32Array(this.wasmMemory.buffer, errorOrTid, 2); - Atomics.store(struct, 0, 0); - Atomics.store(struct, 1, 0); - if (this.childThread) { - postMessage(createMessage('spawn-thread', { - startArg, - errorOrTid: errorOrTid - })); - Atomics.wait(struct, 1, 0); - const isError = Atomics.load(struct, 0); - const result = Atomics.load(struct, 1); - if (isNewABI) { - return isError; - } - free(errorOrTid); - return isError ? -result : result; - } - const shouldWait = waitThreadStart || (waitThreadStart === 0); - let sab; - if (shouldWait) { - sab = new Int32Array(new SharedArrayBuffer(16 + 8192)); - Atomics.store(sab, 0, 0); - } - let worker; - let tid; - const PThread = this.PThread; - try { - worker = PThread.getNewWorker(sab); - if (!worker) { - throw new Error('failed to get new worker'); - } - PThread.addMessageEventListener(worker, onMessage); - tid = PThread.markId(worker); - if (ENVIRONMENT_IS_NODE) { - worker.ref(); - } - worker.postMessage(createMessage('start', { - tid, - arg: startArg, - sab - })); - if (shouldWait) { - if (typeof waitThreadStart === 'number') { - const waitResult = Atomics.wait(sab, 0, 0, waitThreadStart); - if (waitResult === 'timed-out') { - try { - PThread.cleanThread(worker, tid, true); - } - catch (_) { } - throw new Error('Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.'); - } - } - else { - Atomics.wait(sab, 0, 0); - } - const r = Atomics.load(sab, 0); - if (r > 1) { - try { - PThread.cleanThread(worker, tid, true); - } - catch (_) { } - throw deserizeErrorFromBuffer(sab.buffer); - } - } - } - catch (e) { - Atomics.store(struct, 0, 1); - Atomics.store(struct, 1, EAGAIN); - Atomics.notify(struct, 1); - PThread === null || PThread === void 0 ? void 0 : PThread.printErr(e.stack); - if (isNewABI) { - return 1; - } - free(errorOrTid); - return -EAGAIN; - } - Atomics.store(struct, 0, 0); - Atomics.store(struct, 1, tid); - Atomics.notify(struct, 1); - PThread.runningWorkers.push(worker); - if (!shouldWait) { - worker.whenLoaded.catch((err) => { - delete worker.whenLoaded; - PThread.cleanThread(worker, tid, true); - throw err; - }); - } - if (isNewABI) { - return 0; - } - free(errorOrTid); - return tid; - }; - this.threadSpawn = threadSpawn; - } - getImportObject() { - return { - wasi: { - 'thread-spawn': this.threadSpawn - } - }; - } - setup(wasmInstance, wasmModule, wasmMemory) { - wasmMemory !== null && wasmMemory !== void 0 ? wasmMemory : (wasmMemory = wasmInstance.exports.memory); - this.wasmInstance = wasmInstance; - this.wasmMemory = wasmMemory; - if (this.PThread) { - this.PThread.setup(wasmModule, wasmMemory); - } - } - preloadWorkers() { - if (this.PThread) { - return this.PThread.preloadWorkers(); - } - return Promise.resolve([]); - } - initialize(instance, module, memory) { - const exports = instance.exports; - memory !== null && memory !== void 0 ? memory : (memory = exports.memory); - if (this.childThread) { - instance = createInstanceProxy(instance, memory); - } - this.setup(instance, module, memory); - const wasi = this.wasi; - if (('_start' in exports) && (typeof exports._start === 'function')) { - if (this.childThread) { - wasi.start(instance); - try { - const kStarted = getWasiSymbol(wasi, 'kStarted'); - wasi[kStarted] = false; - } - catch (_) { } - } - else { - setupInstance(wasi, instance); - } - } - else { - wasi.initialize(instance); - } - return instance; - } - start(instance, module, memory) { - const exports = instance.exports; - memory !== null && memory !== void 0 ? memory : (memory = exports.memory); - if (this.childThread) { - instance = createInstanceProxy(instance, memory); - } - this.setup(instance, module, memory); - const exitCode = this.wasi.start(instance); - return { exitCode, instance }; - } - terminateAllThreads() { - var _a; - if (!this.childThread) { - (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.terminateAllThreads(); - } - else { - this.postMessage(createMessage('terminate-all-threads', {})); - } - } -} -function patchWasiInstance(wasiThreads, wasi) { - const patched = patchedWasiInstances.get(wasiThreads); - if (patched.has(wasi)) { - return; - } - const _this = wasiThreads; - const wasiImport = wasi.wasiImport; - if (wasiImport) { - const proc_exit = wasiImport.proc_exit; - wasiImport.proc_exit = function (code) { - _this.terminateAllThreads(); - return proc_exit.call(this, code); - }; - } - if (!_this.childThread) { - const start = wasi.start; - if (typeof start === 'function') { - wasi.start = function (instance) { - try { - return start.call(this, instance); - } - catch (err) { - if (isTrapError(err)) { - _this.terminateAllThreads(); - } - throw err; - } - }; - } - } - patched.add(wasi); -} -function getWasiSymbol(wasi, description) { - const symbols = Object.getOwnPropertySymbols(wasi); - const selectDescription = (description) => (s) => { - if (s.description) { - return s.description === description; - } - return s.toString() === `Symbol(${description})`; - }; - if (Array.isArray(description)) { - return description.map(d => symbols.filter(selectDescription(d))[0]); - } - return symbols.filter(selectDescription(description))[0]; -} -function setupInstance(wasi, instance) { - const [kInstance, kSetMemory] = getWasiSymbol(wasi, ['kInstance', 'kSetMemory']); - wasi[kInstance] = instance; - wasi[kSetMemory](instance.exports.memory); -} - -class ThreadMessageHandler { - constructor(options) { - const postMsg = getPostMessage(options); - if (typeof postMsg !== 'function') { - throw new TypeError('options.postMessage is not a function'); - } - this.postMessage = postMsg; - this.onLoad = options === null || options === void 0 ? void 0 : options.onLoad; - this.onError = typeof (options === null || options === void 0 ? void 0 : options.onError) === 'function' ? options.onError : (_type, err) => { throw err; }; - this.instance = undefined; - this.messagesBeforeLoad = []; - } - instantiate(data) { - if (typeof this.onLoad === 'function') { - return this.onLoad(data); - } - throw new Error('ThreadMessageHandler.prototype.instantiate is not implemented'); - } - handle(e) { - var _a; - if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { - const type = e.data.__emnapi__.type; - const payload = e.data.__emnapi__.payload; - try { - if (type === 'load') { - this._load(payload); - } - else if (type === 'start') { - this.handleAfterLoad(e, () => { - this._start(payload); - }); - } - } - catch (err) { - this.onError(err, type); - } - } - } - _load(payload) { - if (this.instance !== undefined) - return; - let source; - try { - source = this.instantiate(payload); - } - catch (err) { - this._loaded(err, null, payload); - return; - } - const then = source && 'then' in source ? source.then : undefined; - if (typeof then === 'function') { - then.call(source, (source) => { this._loaded(null, source, payload); }, (err) => { this._loaded(err, null, payload); }); - } - else { - this._loaded(null, source, payload); - } - } - _start(payload) { - const wasi_thread_start = this.instance.exports.wasi_thread_start; - if (typeof wasi_thread_start !== 'function') { - const err = new TypeError('wasi_thread_start is not exported'); - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - const postMessage = this.postMessage; - const tid = payload.tid; - const startArg = payload.arg; - notifyPthreadCreateResult(payload.sab, 1); - try { - wasi_thread_start(tid, startArg); - } - catch (err) { - if (err !== 'unwind') { - throw err; - } - else { - return; - } - } - postMessage(createMessage('cleanup-thread', { tid })); - } - _loaded(err, source, payload) { - if (err) { - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - if (source == null) { - const err = new TypeError('onLoad should return an object'); - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - const instance = source.instance; - if (!instance) { - const err = new TypeError('onLoad should return an object which includes "instance"'); - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - this.instance = instance; - const postMessage = this.postMessage; - postMessage(createMessage('loaded', {})); - const messages = this.messagesBeforeLoad; - this.messagesBeforeLoad = []; - for (let i = 0; i < messages.length; i++) { - const data = messages[i]; - this.handle({ data }); - } - } - handleAfterLoad(e, f) { - if (this.instance !== undefined) { - f.call(this, e); - } - else { - this.messagesBeforeLoad.push(e.data); - } - } -} -function notifyPthreadCreateResult(sab, result, error) { - if (sab) { - serizeErrorToBuffer(sab.buffer, result, error); - Atomics.notify(sab, 0); - } -} - -exports.ThreadManager = ThreadManager; -exports.ThreadMessageHandler = ThreadMessageHandler; -exports.WASIThreads = WASIThreads; -exports.createInstanceProxy = createInstanceProxy; -exports.isSharedArrayBuffer = isSharedArrayBuffer; -exports.isTrapError = isTrapError; diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts b/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts deleted file mode 100644 index 53e0eb8..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +++ /dev/null @@ -1,270 +0,0 @@ -/// - -import type { Worker as Worker_2 } from 'worker_threads'; - -/** @public */ -export declare interface BaseOptions { - wasi: WASIInstance; - version?: 'preview1'; - wasm64?: boolean; -} - -/** @public */ -export declare interface ChildThreadOptions extends BaseOptions { - childThread: true; - postMessage?: (data: any) => void; -} - -/** @public */ -export declare interface CleanupThreadPayload { - tid: number; -} - -/** @public */ -export declare interface CommandInfo { - type: T; - payload: CommandPayloadMap[T]; -} - -/** @public */ -export declare interface CommandPayloadMap { - load: LoadPayload; - loaded: LoadedPayload; - start: StartPayload; - 'cleanup-thread': CleanupThreadPayload; - 'terminate-all-threads': TerminateAllThreadsPayload; - 'spawn-thread': SpawnThreadPayload; -} - -/** @public */ -export declare type CommandType = keyof CommandPayloadMap; - -/** @public */ -export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; - -/** @public */ -export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; - -/** @public */ -export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; - -/** @public */ -export declare interface LoadedPayload { -} - -/** @public */ -export declare interface LoadPayload { - wasmModule: WebAssembly.Module; - wasmMemory: WebAssembly.Memory; - sab?: Int32Array; -} - -/** @public */ -export declare interface MainThreadBaseOptions extends BaseOptions { - waitThreadStart?: boolean | number; -} - -/** @public */ -export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; - -/** @public */ -export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { -} - -/** @public */ -export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { - threadManager?: ThreadManager | (() => ThreadManager); -} - -/** @public */ -export declare interface MessageEventData { - __emnapi__: CommandInfo; -} - -/** @public */ -export declare interface ReuseWorkerOptions { - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} - */ - size: number; - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} - */ - strict?: boolean; -} - -/** @public */ -export declare interface SpawnThreadPayload { - startArg: number; - errorOrTid: number; -} - -/** @public */ -export declare interface StartPayload { - tid: number; - arg: number; - sab?: Int32Array; -} - -/** @public */ -export declare interface StartResult { - exitCode: number; - instance: WebAssembly.Instance; -} - -/** @public */ -export declare interface TerminateAllThreadsPayload { -} - -/** @public */ -export declare class ThreadManager { - unusedWorkers: WorkerLike[]; - runningWorkers: WorkerLike[]; - pthreads: Record; - get nextWorkerID(): number; - wasmModule: WebAssembly.Module | null; - wasmMemory: WebAssembly.Memory | null; - private readonly messageEvents; - private readonly _childThread; - private readonly _onCreateWorker; - private readonly _reuseWorker; - private readonly _beforeLoad?; - /* Excluded from this release type: printErr */ - constructor(options: ThreadManagerOptions); - init(): void; - initMainThread(): void; - private preparePool; - shouldPreloadWorkers(): boolean; - loadWasmModuleToAllWorkers(): Promise; - preloadWorkers(): Promise; - setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; - markId(worker: WorkerLike): number; - returnWorkerToPool(worker: WorkerLike): void; - loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; - allocateUnusedWorker(): WorkerLike; - getNewWorker(sab?: Int32Array): WorkerLike | undefined; - cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; - terminateWorker(worker: WorkerLike): void; - terminateAllThreads(): void; - addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; - fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; -} - -/** @public */ -export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; - -/** @public */ -export declare interface ThreadManagerOptionsBase { - printErr?: (message: string) => void; -} - -/** @public */ -export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { - childThread: true; -} - -/** @public */ -export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { - beforeLoad?: (worker: WorkerLike) => any; - reuseWorker?: boolean | number | ReuseWorkerOptions; - onCreateWorker: WorkerFactory; - childThread?: false; -} - -/** @public */ -export declare class ThreadMessageHandler { - protected instance: WebAssembly.Instance | undefined; - private messagesBeforeLoad; - protected postMessage: (message: any) => void; - protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - protected onError: (error: Error, type: WorkerMessageType) => void; - constructor(options?: ThreadMessageHandlerOptions); - /** @virtual */ - instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - /** @virtual */ - handle(e: WorkerMessageEvent>): void; - private _load; - private _start; - protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; - protected handleAfterLoad(e: E, f: (e: E) => void): void; -} - -/** @public */ -export declare interface ThreadMessageHandlerOptions { - onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - onError?: (error: Error, type: WorkerMessageType) => void; - postMessage?: (message: any) => void; -} - -/** @public */ -export declare interface WASIInstance { - readonly wasiImport?: Record; - initialize(instance: object): void; - start(instance: object): number; - getImportObject?(): any; -} - -/** @public */ -export declare class WASIThreads { - PThread: ThreadManager | undefined; - private wasmMemory; - private wasmInstance; - private readonly threadSpawn; - readonly childThread: boolean; - private readonly postMessage; - readonly wasi: WASIInstance; - constructor(options: WASIThreadsOptions); - getImportObject(): { - wasi: WASIThreadsImports; - }; - setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; - preloadWorkers(): Promise; - /** - * It's ok to call this method to a WASI command module. - * - * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module - * - * @returns A proxied WebAssembly instance if in child thread, other wise the original instance - */ - initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; - /** - * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} - * ```js - * this.initialize(instance, module, memory) - * this.wasi.start(instance) - * ``` - */ - start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; - terminateAllThreads(): void; -} - -/** @public */ -export declare interface WASIThreadsImports { - 'thread-spawn': (startArg: number, errorOrTid?: number) => number; -} - -/** @public */ -export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; - -/** @public */ -export declare type WorkerFactory = (ctx: { - type: string; - name: string; -}) => WorkerLike; - -/** @public */ -export declare type WorkerLike = (Worker | Worker_2) & { - whenLoaded?: Promise; - loaded?: boolean; - __emnapi_tid?: number; -}; - -/** @public */ -export declare interface WorkerMessageEvent { - data: T; -} - -/** @public */ -export declare type WorkerMessageType = 'load' | 'start'; - -export { } diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js b/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js deleted file mode 100644 index 06e377b..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +++ /dev/null @@ -1 +0,0 @@ -const e="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0,t="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node;function r(e){return"function"==typeof(null==e?void 0:e.postMessage)?e.postMessage:"function"==typeof postMessage?postMessage:void 0}function s(e){return"function"==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(e)}function o(t){try{return t instanceof e.RuntimeError}catch(e){return!1}}function n(e,t){return{__emnapi__:{type:e,payload:t}}}function i(e){if(e){if(!s(e.buffer))throw new Error("Multithread features require shared wasm memory. Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, then create WebAssembly.Memory with `shared: true` option")}else if("undefined"==typeof SharedArrayBuffer)throw new Error("Current environment does not support SharedArrayBuffer, threads are not available!")}let a=0;class d{get nextWorkerID(){return a}constructor(e){var t;if(this.unusedWorkers=[],this.runningWorkers=[],this.pthreads=Object.create(null),this.wasmModule=null,this.wasmMemory=null,this.messageEvents=new WeakMap,!e)throw new TypeError("ThreadManager(): options is not provided");this._childThread="childThread"in e&&Boolean(e.childThread),this._childThread?(this._onCreateWorker=void 0,this._reuseWorker=!1,this._beforeLoad=void 0):(this._onCreateWorker=e.onCreateWorker,this._reuseWorker=function(e){var t;if("boolean"==typeof e)return!!e&&{size:0,strict:!1};if("number"==typeof e){if(!(e>=0))throw new RangeError("reuseWorker: size must be a non-negative integer");return{size:e,strict:!1}}if(!e)return!1;const r=null!==(t=Number(e.size))&&void 0!==t?t:0,s=Boolean(e.strict);if(!(r>0)&&s)throw new RangeError("reuseWorker: size must be set to positive integer if strict is set to true");return{size:r,strict:s}}(e.reuseWorker),this._beforeLoad=e.beforeLoad),this.printErr=null!==(t=e.printErr)&&void 0!==t?t:console.error.bind(console)}init(){this._childThread||this.initMainThread()}initMainThread(){this.preparePool()}preparePool(){if(this._reuseWorker&&this._reuseWorker.size){let e=this._reuseWorker.size;for(;e--;){const e=this.allocateUnusedWorker();t&&(e.once("message",()=>{}),e.unref())}}}shouldPreloadWorkers(){return!this._childThread&&this._reuseWorker&&this._reuseWorker.size>0}loadWasmModuleToAllWorkers(){const e=Array(this.unusedWorkers.length);for(let r=0;r(t&&s.unref(),e),e=>{throw t&&s.unref(),e})}return Promise.all(e).catch(e=>{throw this.terminateAllThreads(),e})}preloadWorkers(){return this.shouldPreloadWorkers()?this.loadWasmModuleToAllWorkers():Promise.resolve([])}setup(e,t){this.wasmModule=e,this.wasmMemory=t}markId(e){if(e.__emnapi_tid)return e.__emnapi_tid;const t=a+43;return a=(a+1)%536870869,this.pthreads[t]=e,e.__emnapi_tid=t,t}returnWorkerToPool(e){var r=e.__emnapi_tid;void 0!==r&&delete this.pthreads[r],this.unusedWorkers.push(e),this.runningWorkers.splice(this.runningWorkers.indexOf(e),1),delete e.__emnapi_tid,t&&e.unref()}loadWasmModuleToWorker(e,r){if(e.whenLoaded)return e.whenLoaded;const s=this.printErr,o=this._beforeLoad,a=this;return e.whenLoaded=new Promise((d,h)=>{const l=r=>{if(r.__emnapi__){const s=r.__emnapi__.type,o=r.__emnapi__.payload;"loaded"===s?(e.loaded=!0,t&&!e.__emnapi_tid&&e.unref(),d(e)):"cleanup-thread"===s&&o.tid in this.pthreads&&this.cleanThread(e,o.tid)}};e.onmessage=t=>{l(t.data),this.fireMessageEvent(e,t)},e.onerror=function(t){let r="worker sent an error!";if(void 0!==e.__emnapi_tid&&(r="worker (tid = "+e.__emnapi_tid+") sent an error!"),"message"in t){if(s(r+" "+t.message),-1!==t.message.indexOf("RuntimeError")||-1!==t.message.indexOf("unreachable"))try{a.terminateAllThreads()}catch(e){}}else s(r);throw h(t),t},t&&(e.on("message",function(t){var r,s;null===(s=(r=e).onmessage)||void 0===s||s.call(r,{data:t})}),e.on("error",function(t){var r,s;null===(s=(r=e).onerror)||void 0===s||s.call(r,t)}),e.on("detachedExit",function(){})),"function"==typeof o&&o(e);try{e.postMessage(n("load",{wasmModule:this.wasmModule,wasmMemory:this.wasmMemory,sab:r}))}catch(e){throw i(this.wasmMemory),e}}),e.whenLoaded}allocateUnusedWorker(){const e=this._onCreateWorker;if("function"!=typeof e)throw new TypeError("`options.onCreateWorker` is not provided");const t=e({type:"thread",name:"emnapi-pthread"});return this.unusedWorkers.push(t),t}getNewWorker(e){if(this._reuseWorker){if(0===this.unusedWorkers.length){if(this._reuseWorker.strict&&!t){return void(0,this.printErr)("Tried to spawn a new thread, but the thread pool is exhausted.\nThis might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.")}const r=this.allocateUnusedWorker();this.loadWasmModuleToWorker(r,e)}return this.unusedWorkers.pop()}const r=this.allocateUnusedWorker();return this.loadWasmModuleToWorker(r,e),this.unusedWorkers.pop()}cleanThread(e,t,r){if(!r&&this._reuseWorker)this.returnWorkerToPool(e);else{delete this.pthreads[t];const r=this.runningWorkers.indexOf(e);-1!==r&&this.runningWorkers.splice(r,1),this.terminateWorker(e),delete e.__emnapi_tid}}terminateWorker(e){var t;const r=e.__emnapi_tid;e.terminate(),null===(t=this.messageEvents.get(e))||void 0===t||t.clear(),this.messageEvents.delete(e),e.onmessage=e=>{if(e.data.__emnapi__){(0,this.printErr)('received "'+e.data.__emnapi__.type+'" command from terminated worker: '+r)}}}terminateAllThreads(){for(let e=0;e{null==r||r.delete(t)}}fireMessageEvent(e,t){const r=this.messageEvents.get(e);if(!r)return;const s=this.printErr;r.forEach(e=>{try{e(t)}catch(e){s(e.stack)}})}}const h=Symbol("kIsProxy");function l(e,t){if(e[h])return e;const r=e.exports,s=function(e){const t=["apply","construct","defineProperty","deleteProperty","get","getOwnPropertyDescriptor","getPrototypeOf","has","isExtensible","ownKeys","preventExtensions","set","setPrototypeOf"],r={};for(let s=0;s{},n=()=>0;s.get=function(e,s,i){var a;return"memory"===s?null!==(a="function"==typeof t?t():t)&&void 0!==a?a:Reflect.get(r,s,i):"_initialize"===s?s in r?o:void 0:"_start"===s?s in r?n:void 0:Reflect.get(r,s,i)},s.has=function(e,t){return"memory"===t||Reflect.has(r,t)};const i=new Proxy(Object.create(null),s);return new Proxy(e,{get:(e,t,r)=>"exports"===t?i:t===h||Reflect.get(e,t,r)})}const c=new WeakMap;function u(e,t){const r=Object.getOwnPropertySymbols(e),s=e=>t=>t.description?t.description===e:t.toString()===`Symbol(${e})`;return Array.isArray(t)?t.map(e=>r.filter(s(e))[0]):r.filter(s(t))[0]}function f(e,t,r){e&&(!function(e,t,r){const s=new Int32Array(e);if(Atomics.store(s,0,t),t>1&&r){const t=r.name,o=r.message,n=r.stack,i=(new TextEncoder).encode(t),a=(new TextEncoder).encode(o),d=(new TextEncoder).encode(n);Atomics.store(s,1,i.length),Atomics.store(s,2,a.length),Atomics.store(s,3,d.length);const h=new Uint8Array(e);h.set(i,16),h.set(a,16+i.length),h.set(d,16+i.length+a.length)}}(e.buffer,t,r),Atomics.notify(e,0))}exports.ThreadManager=d,exports.ThreadMessageHandler=class{constructor(e){const t=r(e);if("function"!=typeof t)throw new TypeError("options.postMessage is not a function");this.postMessage=t,this.onLoad=null==e?void 0:e.onLoad,this.onError="function"==typeof(null==e?void 0:e.onError)?e.onError:(e,t)=>{throw t},this.instance=void 0,this.messagesBeforeLoad=[]}instantiate(e){if("function"==typeof this.onLoad)return this.onLoad(e);throw new Error("ThreadMessageHandler.prototype.instantiate is not implemented")}handle(e){var t;if(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.__emnapi__){const t=e.data.__emnapi__.type,r=e.data.__emnapi__.payload;try{"load"===t?this._load(r):"start"===t&&this.handleAfterLoad(e,()=>{this._start(r)})}catch(e){this.onError(e,t)}}}_load(e){if(void 0!==this.instance)return;let t;try{t=this.instantiate(e)}catch(t){return void this._loaded(t,null,e)}const r=t&&"then"in t?t.then:void 0;"function"==typeof r?r.call(t,t=>{this._loaded(null,t,e)},t=>{this._loaded(t,null,e)}):this._loaded(null,t,e)}_start(e){const t=this.instance.exports.wasi_thread_start;if("function"!=typeof t){const t=new TypeError("wasi_thread_start is not exported");throw f(e.sab,2,t),t}const r=this.postMessage,s=e.tid,o=e.arg;f(e.sab,1);try{t(s,o)}catch(e){if("unwind"!==e)throw e;return}r(n("cleanup-thread",{tid:s}))}_loaded(e,t,r){if(e)throw f(r.sab,2,e),e;if(null==t){const e=new TypeError("onLoad should return an object");throw f(r.sab,2,e),e}const s=t.instance;if(!s){const e=new TypeError('onLoad should return an object which includes "instance"');throw f(r.sab,2,e),e}this.instance=s;(0,this.postMessage)(n("loaded",{}));const o=this.messagesBeforeLoad;this.messagesBeforeLoad=[];for(let e=0;e{if(e.data.__emnapi__){const t=e.data.__emnapi__.type,r=e.data.__emnapi__.payload;"spawn-thread"===t?p(r.startArg,r.errorOrTid):"terminate-all-threads"===t&&this.terminateAllThreads()}},p=(r,s)=>{var o;const a=void 0!==s;try{i(this.wasmMemory)}catch(e){if(null===(o=this.PThread)||void 0===o||o.printErr(e.stack),a){const e=new Int32Array(this.wasmMemory.buffer,s,2);return Atomics.store(e,0,1),Atomics.store(e,1,6),Atomics.notify(e,1),1}return-6}if(!a){const e=this.wasmInstance.exports.malloc;if(!(s=u?Number(e(BigInt(8))):e(8)))return-48}const d=this.wasmInstance.exports.free,c=u?e=>{d(BigInt(e))}:d,p=new Int32Array(this.wasmMemory.buffer,s,2);if(Atomics.store(p,0,0),Atomics.store(p,1,0),this.childThread){l(n("spawn-thread",{startArg:r,errorOrTid:s})),Atomics.wait(p,1,0);const e=Atomics.load(p,0),t=Atomics.load(p,1);return a?e:(c(s),e?-t:t)}const m=h||0===h;let w,y,_;m&&(w=new Int32Array(new SharedArrayBuffer(8208)),Atomics.store(w,0,0));const g=this.PThread;try{if(y=g.getNewWorker(w),!y)throw new Error("failed to get new worker");if(g.addMessageEventListener(y,f),_=g.markId(y),t&&y.ref(),y.postMessage(n("start",{tid:_,arg:r,sab:w})),m){if("number"==typeof h){if("timed-out"===Atomics.wait(w,0,0,h)){try{g.cleanThread(y,_,!0)}catch(e){}throw new Error("Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.")}}else Atomics.wait(w,0,0);if(Atomics.load(w,0)>1){try{g.cleanThread(y,_,!0)}catch(e){}throw function(t){var r,s;const o=new Int32Array(t);if(Atomics.load(o,0)<=1)return null;const n=Atomics.load(o,1),i=Atomics.load(o,2),a=Atomics.load(o,3),d=new Uint8Array(t),h=d.slice(16,16+n),l=d.slice(16+n,16+n+i),c=d.slice(16+n+i,16+n+i+a),u=(new TextDecoder).decode(h),f=(new TextDecoder).decode(l),p=(new TextDecoder).decode(c),m=new(null!==(r=globalThis[u])&&void 0!==r?r:"RuntimeError"===u&&null!==(s=e.RuntimeError)&&void 0!==s?s:Error)(f);return Object.defineProperty(m,"stack",{value:p,writable:!0,enumerable:!1,configurable:!0}),m}(w.buffer)}}}catch(e){return Atomics.store(p,0,1),Atomics.store(p,1,6),Atomics.notify(p,1),null==g||g.printErr(e.stack),a?1:(c(s),-6)}return Atomics.store(p,0,0),Atomics.store(p,1,_),Atomics.notify(p,1),g.runningWorkers.push(y),m||y.whenLoaded.catch(e=>{throw delete y.whenLoaded,g.cleanThread(y,_,!0),e}),a?0:(c(s),_)};this.threadSpawn=p}getImportObject(){return{wasi:{"thread-spawn":this.threadSpawn}}}setup(e,t,r){null!=r||(r=e.exports.memory),this.wasmInstance=e,this.wasmMemory=r,this.PThread&&this.PThread.setup(t,r)}preloadWorkers(){return this.PThread?this.PThread.preloadWorkers():Promise.resolve([])}initialize(e,t,r){const s=e.exports;null!=r||(r=s.memory),this.childThread&&(e=l(e,r)),this.setup(e,t,r);const o=this.wasi;if("_start"in s&&"function"==typeof s._start)if(this.childThread){o.start(e);try{o[u(o,"kStarted")]=!1}catch(e){}}else!function(e,t){const[r,s]=u(e,["kInstance","kSetMemory"]);e[r]=t,e[s](t.exports.memory)}(o,e);else o.initialize(e);return e}start(e,t,r){const s=e.exports;null!=r||(r=s.memory),this.childThread&&(e=l(e,r)),this.setup(e,t,r);return{exitCode:this.wasi.start(e),instance:e}}terminateAllThreads(){var e;this.childThread?this.postMessage(n("terminate-all-threads",{})):null===(e=this.PThread)||void 0===e||e.terminateAllThreads()}},exports.createInstanceProxy=l,exports.isSharedArrayBuffer=s,exports.isTrapError=o; diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts b/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts deleted file mode 100644 index 53e0eb8..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +++ /dev/null @@ -1,270 +0,0 @@ -/// - -import type { Worker as Worker_2 } from 'worker_threads'; - -/** @public */ -export declare interface BaseOptions { - wasi: WASIInstance; - version?: 'preview1'; - wasm64?: boolean; -} - -/** @public */ -export declare interface ChildThreadOptions extends BaseOptions { - childThread: true; - postMessage?: (data: any) => void; -} - -/** @public */ -export declare interface CleanupThreadPayload { - tid: number; -} - -/** @public */ -export declare interface CommandInfo { - type: T; - payload: CommandPayloadMap[T]; -} - -/** @public */ -export declare interface CommandPayloadMap { - load: LoadPayload; - loaded: LoadedPayload; - start: StartPayload; - 'cleanup-thread': CleanupThreadPayload; - 'terminate-all-threads': TerminateAllThreadsPayload; - 'spawn-thread': SpawnThreadPayload; -} - -/** @public */ -export declare type CommandType = keyof CommandPayloadMap; - -/** @public */ -export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; - -/** @public */ -export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; - -/** @public */ -export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; - -/** @public */ -export declare interface LoadedPayload { -} - -/** @public */ -export declare interface LoadPayload { - wasmModule: WebAssembly.Module; - wasmMemory: WebAssembly.Memory; - sab?: Int32Array; -} - -/** @public */ -export declare interface MainThreadBaseOptions extends BaseOptions { - waitThreadStart?: boolean | number; -} - -/** @public */ -export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; - -/** @public */ -export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { -} - -/** @public */ -export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { - threadManager?: ThreadManager | (() => ThreadManager); -} - -/** @public */ -export declare interface MessageEventData { - __emnapi__: CommandInfo; -} - -/** @public */ -export declare interface ReuseWorkerOptions { - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} - */ - size: number; - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} - */ - strict?: boolean; -} - -/** @public */ -export declare interface SpawnThreadPayload { - startArg: number; - errorOrTid: number; -} - -/** @public */ -export declare interface StartPayload { - tid: number; - arg: number; - sab?: Int32Array; -} - -/** @public */ -export declare interface StartResult { - exitCode: number; - instance: WebAssembly.Instance; -} - -/** @public */ -export declare interface TerminateAllThreadsPayload { -} - -/** @public */ -export declare class ThreadManager { - unusedWorkers: WorkerLike[]; - runningWorkers: WorkerLike[]; - pthreads: Record; - get nextWorkerID(): number; - wasmModule: WebAssembly.Module | null; - wasmMemory: WebAssembly.Memory | null; - private readonly messageEvents; - private readonly _childThread; - private readonly _onCreateWorker; - private readonly _reuseWorker; - private readonly _beforeLoad?; - /* Excluded from this release type: printErr */ - constructor(options: ThreadManagerOptions); - init(): void; - initMainThread(): void; - private preparePool; - shouldPreloadWorkers(): boolean; - loadWasmModuleToAllWorkers(): Promise; - preloadWorkers(): Promise; - setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; - markId(worker: WorkerLike): number; - returnWorkerToPool(worker: WorkerLike): void; - loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; - allocateUnusedWorker(): WorkerLike; - getNewWorker(sab?: Int32Array): WorkerLike | undefined; - cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; - terminateWorker(worker: WorkerLike): void; - terminateAllThreads(): void; - addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; - fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; -} - -/** @public */ -export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; - -/** @public */ -export declare interface ThreadManagerOptionsBase { - printErr?: (message: string) => void; -} - -/** @public */ -export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { - childThread: true; -} - -/** @public */ -export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { - beforeLoad?: (worker: WorkerLike) => any; - reuseWorker?: boolean | number | ReuseWorkerOptions; - onCreateWorker: WorkerFactory; - childThread?: false; -} - -/** @public */ -export declare class ThreadMessageHandler { - protected instance: WebAssembly.Instance | undefined; - private messagesBeforeLoad; - protected postMessage: (message: any) => void; - protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - protected onError: (error: Error, type: WorkerMessageType) => void; - constructor(options?: ThreadMessageHandlerOptions); - /** @virtual */ - instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - /** @virtual */ - handle(e: WorkerMessageEvent>): void; - private _load; - private _start; - protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; - protected handleAfterLoad(e: E, f: (e: E) => void): void; -} - -/** @public */ -export declare interface ThreadMessageHandlerOptions { - onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - onError?: (error: Error, type: WorkerMessageType) => void; - postMessage?: (message: any) => void; -} - -/** @public */ -export declare interface WASIInstance { - readonly wasiImport?: Record; - initialize(instance: object): void; - start(instance: object): number; - getImportObject?(): any; -} - -/** @public */ -export declare class WASIThreads { - PThread: ThreadManager | undefined; - private wasmMemory; - private wasmInstance; - private readonly threadSpawn; - readonly childThread: boolean; - private readonly postMessage; - readonly wasi: WASIInstance; - constructor(options: WASIThreadsOptions); - getImportObject(): { - wasi: WASIThreadsImports; - }; - setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; - preloadWorkers(): Promise; - /** - * It's ok to call this method to a WASI command module. - * - * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module - * - * @returns A proxied WebAssembly instance if in child thread, other wise the original instance - */ - initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; - /** - * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} - * ```js - * this.initialize(instance, module, memory) - * this.wasi.start(instance) - * ``` - */ - start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; - terminateAllThreads(): void; -} - -/** @public */ -export declare interface WASIThreadsImports { - 'thread-spawn': (startArg: number, errorOrTid?: number) => number; -} - -/** @public */ -export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; - -/** @public */ -export declare type WorkerFactory = (ctx: { - type: string; - name: string; -}) => WorkerLike; - -/** @public */ -export declare type WorkerLike = (Worker | Worker_2) & { - whenLoaded?: Promise; - loaded?: boolean; - __emnapi_tid?: number; -}; - -/** @public */ -export declare interface WorkerMessageEvent { - data: T; -} - -/** @public */ -export declare type WorkerMessageType = 'load' | 'start'; - -export { } diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts b/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts deleted file mode 100644 index 197fa7e..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +++ /dev/null @@ -1,272 +0,0 @@ -/// - -import type { Worker as Worker_2 } from 'worker_threads'; - -/** @public */ -export declare interface BaseOptions { - wasi: WASIInstance; - version?: 'preview1'; - wasm64?: boolean; -} - -/** @public */ -export declare interface ChildThreadOptions extends BaseOptions { - childThread: true; - postMessage?: (data: any) => void; -} - -/** @public */ -export declare interface CleanupThreadPayload { - tid: number; -} - -/** @public */ -export declare interface CommandInfo { - type: T; - payload: CommandPayloadMap[T]; -} - -/** @public */ -export declare interface CommandPayloadMap { - load: LoadPayload; - loaded: LoadedPayload; - start: StartPayload; - 'cleanup-thread': CleanupThreadPayload; - 'terminate-all-threads': TerminateAllThreadsPayload; - 'spawn-thread': SpawnThreadPayload; -} - -/** @public */ -export declare type CommandType = keyof CommandPayloadMap; - -/** @public */ -export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; - -/** @public */ -export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; - -/** @public */ -export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; - -/** @public */ -export declare interface LoadedPayload { -} - -/** @public */ -export declare interface LoadPayload { - wasmModule: WebAssembly.Module; - wasmMemory: WebAssembly.Memory; - sab?: Int32Array; -} - -/** @public */ -export declare interface MainThreadBaseOptions extends BaseOptions { - waitThreadStart?: boolean | number; -} - -/** @public */ -export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; - -/** @public */ -export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { -} - -/** @public */ -export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { - threadManager?: ThreadManager | (() => ThreadManager); -} - -/** @public */ -export declare interface MessageEventData { - __emnapi__: CommandInfo; -} - -/** @public */ -export declare interface ReuseWorkerOptions { - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} - */ - size: number; - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} - */ - strict?: boolean; -} - -/** @public */ -export declare interface SpawnThreadPayload { - startArg: number; - errorOrTid: number; -} - -/** @public */ -export declare interface StartPayload { - tid: number; - arg: number; - sab?: Int32Array; -} - -/** @public */ -export declare interface StartResult { - exitCode: number; - instance: WebAssembly.Instance; -} - -/** @public */ -export declare interface TerminateAllThreadsPayload { -} - -/** @public */ -export declare class ThreadManager { - unusedWorkers: WorkerLike[]; - runningWorkers: WorkerLike[]; - pthreads: Record; - get nextWorkerID(): number; - wasmModule: WebAssembly.Module | null; - wasmMemory: WebAssembly.Memory | null; - private readonly messageEvents; - private readonly _childThread; - private readonly _onCreateWorker; - private readonly _reuseWorker; - private readonly _beforeLoad?; - /* Excluded from this release type: printErr */ - constructor(options: ThreadManagerOptions); - init(): void; - initMainThread(): void; - private preparePool; - shouldPreloadWorkers(): boolean; - loadWasmModuleToAllWorkers(): Promise; - preloadWorkers(): Promise; - setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; - markId(worker: WorkerLike): number; - returnWorkerToPool(worker: WorkerLike): void; - loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; - allocateUnusedWorker(): WorkerLike; - getNewWorker(sab?: Int32Array): WorkerLike | undefined; - cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; - terminateWorker(worker: WorkerLike): void; - terminateAllThreads(): void; - addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; - fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; -} - -/** @public */ -export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; - -/** @public */ -export declare interface ThreadManagerOptionsBase { - printErr?: (message: string) => void; -} - -/** @public */ -export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { - childThread: true; -} - -/** @public */ -export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { - beforeLoad?: (worker: WorkerLike) => any; - reuseWorker?: boolean | number | ReuseWorkerOptions; - onCreateWorker: WorkerFactory; - childThread?: false; -} - -/** @public */ -export declare class ThreadMessageHandler { - protected instance: WebAssembly.Instance | undefined; - private messagesBeforeLoad; - protected postMessage: (message: any) => void; - protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - protected onError: (error: Error, type: WorkerMessageType) => void; - constructor(options?: ThreadMessageHandlerOptions); - /** @virtual */ - instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - /** @virtual */ - handle(e: WorkerMessageEvent>): void; - private _load; - private _start; - protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; - protected handleAfterLoad(e: E, f: (e: E) => void): void; -} - -/** @public */ -export declare interface ThreadMessageHandlerOptions { - onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - onError?: (error: Error, type: WorkerMessageType) => void; - postMessage?: (message: any) => void; -} - -/** @public */ -export declare interface WASIInstance { - readonly wasiImport?: Record; - initialize(instance: object): void; - start(instance: object): number; - getImportObject?(): any; -} - -/** @public */ -export declare class WASIThreads { - PThread: ThreadManager | undefined; - private wasmMemory; - private wasmInstance; - private readonly threadSpawn; - readonly childThread: boolean; - private readonly postMessage; - readonly wasi: WASIInstance; - constructor(options: WASIThreadsOptions); - getImportObject(): { - wasi: WASIThreadsImports; - }; - setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; - preloadWorkers(): Promise; - /** - * It's ok to call this method to a WASI command module. - * - * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module - * - * @returns A proxied WebAssembly instance if in child thread, other wise the original instance - */ - initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; - /** - * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} - * ```js - * this.initialize(instance, module, memory) - * this.wasi.start(instance) - * ``` - */ - start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; - terminateAllThreads(): void; -} - -/** @public */ -export declare interface WASIThreadsImports { - 'thread-spawn': (startArg: number, errorOrTid?: number) => number; -} - -/** @public */ -export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; - -/** @public */ -export declare type WorkerFactory = (ctx: { - type: string; - name: string; -}) => WorkerLike; - -/** @public */ -export declare type WorkerLike = (Worker | Worker_2) & { - whenLoaded?: Promise; - loaded?: boolean; - __emnapi_tid?: number; -}; - -/** @public */ -export declare interface WorkerMessageEvent { - data: T; -} - -/** @public */ -export declare type WorkerMessageType = 'load' | 'start'; - -export { } - -export as namespace wasiThreads; diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js b/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js deleted file mode 100644 index b89b39c..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +++ /dev/null @@ -1,945 +0,0 @@ -var _WebAssembly = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; -var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && - typeof process.versions === 'object' && process.versions !== null && - typeof process.versions.node === 'string'; -function getPostMessage(options) { - return typeof (options === null || options === void 0 ? void 0 : options.postMessage) === 'function' - ? options.postMessage - : typeof postMessage === 'function' - ? postMessage - : undefined; -} -function serizeErrorToBuffer(sab, code, error) { - var i32array = new Int32Array(sab); - Atomics.store(i32array, 0, code); - if (code > 1 && error) { - var name_1 = error.name; - var message = error.message; - var stack = error.stack; - var nameBuffer = new TextEncoder().encode(name_1); - var messageBuffer = new TextEncoder().encode(message); - var stackBuffer = new TextEncoder().encode(stack); - Atomics.store(i32array, 1, nameBuffer.length); - Atomics.store(i32array, 2, messageBuffer.length); - Atomics.store(i32array, 3, stackBuffer.length); - var buffer = new Uint8Array(sab); - buffer.set(nameBuffer, 16); - buffer.set(messageBuffer, 16 + nameBuffer.length); - buffer.set(stackBuffer, 16 + nameBuffer.length + messageBuffer.length); - } -} -function deserizeErrorFromBuffer(sab) { - var _a, _b; - var i32array = new Int32Array(sab); - var status = Atomics.load(i32array, 0); - if (status <= 1) { - return null; - } - var nameLength = Atomics.load(i32array, 1); - var messageLength = Atomics.load(i32array, 2); - var stackLength = Atomics.load(i32array, 3); - var buffer = new Uint8Array(sab); - var nameBuffer = buffer.slice(16, 16 + nameLength); - var messageBuffer = buffer.slice(16 + nameLength, 16 + nameLength + messageLength); - var stackBuffer = buffer.slice(16 + nameLength + messageLength, 16 + nameLength + messageLength + stackLength); - var name = new TextDecoder().decode(nameBuffer); - var message = new TextDecoder().decode(messageBuffer); - var stack = new TextDecoder().decode(stackBuffer); - var ErrorConstructor = (_a = globalThis[name]) !== null && _a !== void 0 ? _a : (name === 'RuntimeError' ? ((_b = _WebAssembly.RuntimeError) !== null && _b !== void 0 ? _b : Error) : Error); - var error = new ErrorConstructor(message); - Object.defineProperty(error, 'stack', { - value: stack, - writable: true, - enumerable: false, - configurable: true - }); - return error; -} -/** @public */ -function isSharedArrayBuffer(value) { - return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); -} -/** @public */ -function isTrapError(e) { - try { - return e instanceof _WebAssembly.RuntimeError; - } - catch (_) { - return false; - } -} - -function createMessage(type, payload) { - return { - __emnapi__: { - type: type, - payload: payload - } - }; -} - -var WASI_THREADS_MAX_TID = 0x1FFFFFFF; -function checkSharedWasmMemory(wasmMemory) { - if (wasmMemory) { - if (!isSharedArrayBuffer(wasmMemory.buffer)) { - throw new Error('Multithread features require shared wasm memory. ' + - 'Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, ' + - 'then create WebAssembly.Memory with `shared: true` option'); - } - } - else { - if (typeof SharedArrayBuffer === 'undefined') { - throw new Error('Current environment does not support SharedArrayBuffer, threads are not available!'); - } - } -} -function getReuseWorker(value) { - var _a; - if (typeof value === 'boolean') { - return value ? { size: 0, strict: false } : false; - } - if (typeof value === 'number') { - if (!(value >= 0)) { - throw new RangeError('reuseWorker: size must be a non-negative integer'); - } - return { size: value, strict: false }; - } - if (!value) { - return false; - } - var size = (_a = Number(value.size)) !== null && _a !== void 0 ? _a : 0; - var strict = Boolean(value.strict); - if (!(size > 0) && strict) { - throw new RangeError('reuseWorker: size must be set to positive integer if strict is set to true'); - } - return { size: size, strict: strict }; -} -var nextWorkerID = 0; -/** @public */ -var ThreadManager = /*#__PURE__*/ (function () { - function ThreadManager(options) { - var _a; - this.unusedWorkers = []; - this.runningWorkers = []; - this.pthreads = Object.create(null); - this.wasmModule = null; - this.wasmMemory = null; - this.messageEvents = new WeakMap(); - if (!options) { - throw new TypeError('ThreadManager(): options is not provided'); - } - if ('childThread' in options) { - this._childThread = Boolean(options.childThread); - } - else { - this._childThread = false; - } - if (this._childThread) { - this._onCreateWorker = undefined; - this._reuseWorker = false; - this._beforeLoad = undefined; - } - else { - this._onCreateWorker = options.onCreateWorker; - this._reuseWorker = getReuseWorker(options.reuseWorker); - this._beforeLoad = options.beforeLoad; - } - this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console); - } - Object.defineProperty(ThreadManager.prototype, "nextWorkerID", { - get: function () { return nextWorkerID; }, - enumerable: false, - configurable: true - }); - ThreadManager.prototype.init = function () { - if (!this._childThread) { - this.initMainThread(); - } - }; - ThreadManager.prototype.initMainThread = function () { - this.preparePool(); - }; - ThreadManager.prototype.preparePool = function () { - if (this._reuseWorker) { - if (this._reuseWorker.size) { - var pthreadPoolSize = this._reuseWorker.size; - while (pthreadPoolSize--) { - var worker = this.allocateUnusedWorker(); - if (ENVIRONMENT_IS_NODE) { - // https://github.com/nodejs/node/issues/53036 - worker.once('message', function () { }); - worker.unref(); - } - } - } - } - }; - ThreadManager.prototype.shouldPreloadWorkers = function () { - return !this._childThread && this._reuseWorker && this._reuseWorker.size > 0; - }; - ThreadManager.prototype.loadWasmModuleToAllWorkers = function () { - var _this_1 = this; - var promises = Array(this.unusedWorkers.length); - var _loop_1 = function (i) { - var worker = this_1.unusedWorkers[i]; - if (ENVIRONMENT_IS_NODE) - worker.ref(); - promises[i] = this_1.loadWasmModuleToWorker(worker).then(function (w) { - if (ENVIRONMENT_IS_NODE) - worker.unref(); - return w; - }, function (e) { - if (ENVIRONMENT_IS_NODE) - worker.unref(); - throw e; - }); - }; - var this_1 = this; - for (var i = 0; i < this.unusedWorkers.length; ++i) { - _loop_1(i); - } - return Promise.all(promises).catch(function (err) { - _this_1.terminateAllThreads(); - throw err; - }); - }; - ThreadManager.prototype.preloadWorkers = function () { - if (this.shouldPreloadWorkers()) { - return this.loadWasmModuleToAllWorkers(); - } - return Promise.resolve([]); - }; - ThreadManager.prototype.setup = function (wasmModule, wasmMemory) { - this.wasmModule = wasmModule; - this.wasmMemory = wasmMemory; - }; - ThreadManager.prototype.markId = function (worker) { - if (worker.__emnapi_tid) - return worker.__emnapi_tid; - var tid = nextWorkerID + 43; - nextWorkerID = (nextWorkerID + 1) % (WASI_THREADS_MAX_TID - 42); - this.pthreads[tid] = worker; - worker.__emnapi_tid = tid; - return tid; - }; - ThreadManager.prototype.returnWorkerToPool = function (worker) { - var tid = worker.__emnapi_tid; - if (tid !== undefined) { - delete this.pthreads[tid]; - } - this.unusedWorkers.push(worker); - this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1); - delete worker.__emnapi_tid; - if (ENVIRONMENT_IS_NODE) { - worker.unref(); - } - }; - ThreadManager.prototype.loadWasmModuleToWorker = function (worker, sab) { - var _this_1 = this; - if (worker.whenLoaded) - return worker.whenLoaded; - var err = this.printErr; - var beforeLoad = this._beforeLoad; - // eslint-disable-next-line @typescript-eslint/no-this-alias - var _this = this; - worker.whenLoaded = new Promise(function (resolve, reject) { - var handleError = function (e) { - var message = 'worker sent an error!'; - if (worker.__emnapi_tid !== undefined) { - message = 'worker (tid = ' + worker.__emnapi_tid + ') sent an error!'; - } - if ('message' in e) { - err(message + ' ' + e.message); - if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) { - try { - _this.terminateAllThreads(); - } - catch (_) { } - } - } - else { - err(message); - } - reject(e); - throw e; - }; - var handleMessage = function (data) { - if (data.__emnapi__) { - var type = data.__emnapi__.type; - var payload = data.__emnapi__.payload; - if (type === 'loaded') { - worker.loaded = true; - if (ENVIRONMENT_IS_NODE && !worker.__emnapi_tid) { - worker.unref(); - } - resolve(worker); - // if (payload.err) { - // err('failed to load in child thread: ' + (payload.err.message || payload.err)) - // } - } - else if (type === 'cleanup-thread') { - if (payload.tid in _this_1.pthreads) { - _this_1.cleanThread(worker, payload.tid); - } - } - } - }; - worker.onmessage = function (e) { - handleMessage(e.data); - _this_1.fireMessageEvent(worker, e); - }; - worker.onerror = handleError; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', function (data) { - var _a, _b; - (_b = (_a = worker).onmessage) === null || _b === void 0 ? void 0 : _b.call(_a, { - data: data - }); - }); - worker.on('error', function (e) { - var _a, _b; - (_b = (_a = worker).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, e); - }); - worker.on('detachedExit', function () { }); - } - if (typeof beforeLoad === 'function') { - beforeLoad(worker); - } - try { - worker.postMessage(createMessage('load', { - wasmModule: _this_1.wasmModule, - wasmMemory: _this_1.wasmMemory, - sab: sab - })); - } - catch (err) { - checkSharedWasmMemory(_this_1.wasmMemory); - throw err; - } - }); - return worker.whenLoaded; - }; - ThreadManager.prototype.allocateUnusedWorker = function () { - var _onCreateWorker = this._onCreateWorker; - if (typeof _onCreateWorker !== 'function') { - throw new TypeError('`options.onCreateWorker` is not provided'); - } - var worker = _onCreateWorker({ type: 'thread', name: 'emnapi-pthread' }); - this.unusedWorkers.push(worker); - return worker; - }; - ThreadManager.prototype.getNewWorker = function (sab) { - if (this._reuseWorker) { - if (this.unusedWorkers.length === 0) { - if (this._reuseWorker.strict) { - if (!ENVIRONMENT_IS_NODE) { - var err = this.printErr; - err('Tried to spawn a new thread, but the thread pool is exhausted.\n' + - 'This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.'); - return; - } - } - var worker_1 = this.allocateUnusedWorker(); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - this.loadWasmModuleToWorker(worker_1, sab); - } - return this.unusedWorkers.pop(); - } - var worker = this.allocateUnusedWorker(); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - this.loadWasmModuleToWorker(worker, sab); - return this.unusedWorkers.pop(); - }; - ThreadManager.prototype.cleanThread = function (worker, tid, force) { - if (!force && this._reuseWorker) { - this.returnWorkerToPool(worker); - } - else { - delete this.pthreads[tid]; - var index = this.runningWorkers.indexOf(worker); - if (index !== -1) { - this.runningWorkers.splice(index, 1); - } - this.terminateWorker(worker); - delete worker.__emnapi_tid; - } - }; - ThreadManager.prototype.terminateWorker = function (worker) { - var _this_1 = this; - var _a; - var tid = worker.__emnapi_tid; - // eslint-disable-next-line @typescript-eslint/no-floating-promises - worker.terminate(); - (_a = this.messageEvents.get(worker)) === null || _a === void 0 ? void 0 : _a.clear(); - this.messageEvents.delete(worker); - worker.onmessage = function (e) { - if (e.data.__emnapi__) { - var err = _this_1.printErr; - err('received "' + e.data.__emnapi__.type + '" command from terminated worker: ' + tid); - } - }; - }; - ThreadManager.prototype.terminateAllThreads = function () { - for (var i = 0; i < this.runningWorkers.length; ++i) { - this.terminateWorker(this.runningWorkers[i]); - } - for (var i = 0; i < this.unusedWorkers.length; ++i) { - this.terminateWorker(this.unusedWorkers[i]); - } - this.unusedWorkers = []; - this.runningWorkers = []; - this.pthreads = Object.create(null); - this.preparePool(); - }; - ThreadManager.prototype.addMessageEventListener = function (worker, onMessage) { - var listeners = this.messageEvents.get(worker); - if (!listeners) { - listeners = new Set(); - this.messageEvents.set(worker, listeners); - } - listeners.add(onMessage); - return function () { - listeners === null || listeners === void 0 ? void 0 : listeners.delete(onMessage); - }; - }; - ThreadManager.prototype.fireMessageEvent = function (worker, e) { - var listeners = this.messageEvents.get(worker); - if (!listeners) - return; - var err = this.printErr; - listeners.forEach(function (listener) { - try { - listener(e); - } - catch (e) { - err(e.stack); - } - }); - }; - return ThreadManager; -}()); - -var kIsProxy = Symbol('kIsProxy'); -/** @public */ -function createInstanceProxy(instance, memory) { - if (instance[kIsProxy]) - return instance; - // https://github.com/nodejs/help/issues/4102 - var originalExports = instance.exports; - var createHandler = function (target) { - var handlers = [ - 'apply', - 'construct', - 'defineProperty', - 'deleteProperty', - 'get', - 'getOwnPropertyDescriptor', - 'getPrototypeOf', - 'has', - 'isExtensible', - 'ownKeys', - 'preventExtensions', - 'set', - 'setPrototypeOf' - ]; - var handler = {}; - var _loop_1 = function (i) { - var name_1 = handlers[i]; - handler[name_1] = function () { - var args = Array.prototype.slice.call(arguments, 1); - args.unshift(target); - return Reflect[name_1].apply(Reflect, args); - }; - }; - for (var i = 0; i < handlers.length; i++) { - _loop_1(i); - } - return handler; - }; - var handler = createHandler(originalExports); - var _initialize = function () { }; - var _start = function () { return 0; }; - handler.get = function (_target, p, receiver) { - var _a; - if (p === 'memory') { - return (_a = (typeof memory === 'function' ? memory() : memory)) !== null && _a !== void 0 ? _a : Reflect.get(originalExports, p, receiver); - } - if (p === '_initialize') { - return p in originalExports ? _initialize : undefined; - } - if (p === '_start') { - return p in originalExports ? _start : undefined; - } - return Reflect.get(originalExports, p, receiver); - }; - handler.has = function (_target, p) { - if (p === 'memory') - return true; - return Reflect.has(originalExports, p); - }; - var exportsProxy = new Proxy(Object.create(null), handler); - return new Proxy(instance, { - get: function (target, p, receiver) { - if (p === 'exports') { - return exportsProxy; - } - if (p === kIsProxy) { - return true; - } - return Reflect.get(target, p, receiver); - } - }); -} - -var patchedWasiInstances = new WeakMap(); -/** @public */ -var WASIThreads = /*#__PURE__*/ (function () { - function WASIThreads(options) { - var _this_1 = this; - if (!options) { - throw new TypeError('WASIThreads(): options is not provided'); - } - if (!options.wasi) { - throw new TypeError('WASIThreads(): options.wasi is not provided'); - } - patchedWasiInstances.set(this, new WeakSet()); - var wasi = options.wasi; - patchWasiInstance(this, wasi); - this.wasi = wasi; - if ('childThread' in options) { - this.childThread = Boolean(options.childThread); - } - else { - this.childThread = false; - } - this.PThread = undefined; - if ('threadManager' in options) { - if (typeof options.threadManager === 'function') { - this.PThread = options.threadManager(); - } - else { - this.PThread = options.threadManager; - } - } - else { - if (!this.childThread) { - this.PThread = new ThreadManager(options); - this.PThread.init(); - } - } - var waitThreadStart = false; - if ('waitThreadStart' in options) { - waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); - } - var postMessage = getPostMessage(options); - if (this.childThread && typeof postMessage !== 'function') { - throw new TypeError('options.postMessage is not a function'); - } - this.postMessage = postMessage; - var wasm64 = Boolean(options.wasm64); - var onMessage = function (e) { - if (e.data.__emnapi__) { - var type = e.data.__emnapi__.type; - var payload = e.data.__emnapi__.payload; - if (type === 'spawn-thread') { - threadSpawn(payload.startArg, payload.errorOrTid); - } - else if (type === 'terminate-all-threads') { - _this_1.terminateAllThreads(); - } - } - }; - var threadSpawn = function (startArg, errorOrTid) { - var _a; - var EAGAIN = 6; - var isNewABI = errorOrTid !== undefined; - try { - checkSharedWasmMemory(_this_1.wasmMemory); - } - catch (err) { - (_a = _this_1.PThread) === null || _a === void 0 ? void 0 : _a.printErr(err.stack); - if (isNewABI) { - var struct_1 = new Int32Array(_this_1.wasmMemory.buffer, errorOrTid, 2); - Atomics.store(struct_1, 0, 1); - Atomics.store(struct_1, 1, EAGAIN); - Atomics.notify(struct_1, 1); - return 1; - } - else { - return -EAGAIN; - } - } - if (!isNewABI) { - var malloc = _this_1.wasmInstance.exports.malloc; - errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : malloc(8); - if (!errorOrTid) { - return -48; /* ENOMEM */ - } - } - var _free = _this_1.wasmInstance.exports.free; - var free = wasm64 ? function (ptr) { _free(BigInt(ptr)); } : _free; - var struct = new Int32Array(_this_1.wasmMemory.buffer, errorOrTid, 2); - Atomics.store(struct, 0, 0); - Atomics.store(struct, 1, 0); - if (_this_1.childThread) { - postMessage(createMessage('spawn-thread', { - startArg: startArg, - errorOrTid: errorOrTid - })); - Atomics.wait(struct, 1, 0); - var isError = Atomics.load(struct, 0); - var result = Atomics.load(struct, 1); - if (isNewABI) { - return isError; - } - free(errorOrTid); - return isError ? -result : result; - } - var shouldWait = waitThreadStart || (waitThreadStart === 0); - var sab; - if (shouldWait) { - sab = new Int32Array(new SharedArrayBuffer(16 + 8192)); - Atomics.store(sab, 0, 0); - } - var worker; - var tid; - var PThread = _this_1.PThread; - try { - worker = PThread.getNewWorker(sab); - if (!worker) { - throw new Error('failed to get new worker'); - } - PThread.addMessageEventListener(worker, onMessage); - tid = PThread.markId(worker); - if (ENVIRONMENT_IS_NODE) { - worker.ref(); - } - worker.postMessage(createMessage('start', { - tid: tid, - arg: startArg, - sab: sab - })); - if (shouldWait) { - if (typeof waitThreadStart === 'number') { - var waitResult = Atomics.wait(sab, 0, 0, waitThreadStart); - if (waitResult === 'timed-out') { - try { - PThread.cleanThread(worker, tid, true); - } - catch (_) { } - throw new Error('Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.'); - } - } - else { - Atomics.wait(sab, 0, 0); - } - var r = Atomics.load(sab, 0); - if (r > 1) { - try { - PThread.cleanThread(worker, tid, true); - } - catch (_) { } - throw deserizeErrorFromBuffer(sab.buffer); - } - } - } - catch (e) { - Atomics.store(struct, 0, 1); - Atomics.store(struct, 1, EAGAIN); - Atomics.notify(struct, 1); - PThread === null || PThread === void 0 ? void 0 : PThread.printErr(e.stack); - if (isNewABI) { - return 1; - } - free(errorOrTid); - return -EAGAIN; - } - Atomics.store(struct, 0, 0); - Atomics.store(struct, 1, tid); - Atomics.notify(struct, 1); - PThread.runningWorkers.push(worker); - if (!shouldWait) { - worker.whenLoaded.catch(function (err) { - delete worker.whenLoaded; - PThread.cleanThread(worker, tid, true); - throw err; - }); - } - if (isNewABI) { - return 0; - } - free(errorOrTid); - return tid; - }; - this.threadSpawn = threadSpawn; - } - WASIThreads.prototype.getImportObject = function () { - return { - wasi: { - 'thread-spawn': this.threadSpawn - } - }; - }; - WASIThreads.prototype.setup = function (wasmInstance, wasmModule, wasmMemory) { - wasmMemory !== null && wasmMemory !== void 0 ? wasmMemory : (wasmMemory = wasmInstance.exports.memory); - this.wasmInstance = wasmInstance; - this.wasmMemory = wasmMemory; - if (this.PThread) { - this.PThread.setup(wasmModule, wasmMemory); - } - }; - WASIThreads.prototype.preloadWorkers = function () { - if (this.PThread) { - return this.PThread.preloadWorkers(); - } - return Promise.resolve([]); - }; - /** - * It's ok to call this method to a WASI command module. - * - * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module - * - * @returns A proxied WebAssembly instance if in child thread, other wise the original instance - */ - WASIThreads.prototype.initialize = function (instance, module, memory) { - var exports = instance.exports; - memory !== null && memory !== void 0 ? memory : (memory = exports.memory); - if (this.childThread) { - instance = createInstanceProxy(instance, memory); - } - this.setup(instance, module, memory); - var wasi = this.wasi; - if (('_start' in exports) && (typeof exports._start === 'function')) { - if (this.childThread) { - wasi.start(instance); - try { - var kStarted = getWasiSymbol(wasi, 'kStarted'); - wasi[kStarted] = false; - } - catch (_) { } - } - else { - setupInstance(wasi, instance); - } - } - else { - wasi.initialize(instance); - } - return instance; - }; - /** - * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} - * ```js - * this.initialize(instance, module, memory) - * this.wasi.start(instance) - * ``` - */ - WASIThreads.prototype.start = function (instance, module, memory) { - var exports = instance.exports; - memory !== null && memory !== void 0 ? memory : (memory = exports.memory); - if (this.childThread) { - instance = createInstanceProxy(instance, memory); - } - this.setup(instance, module, memory); - var exitCode = this.wasi.start(instance); - return { exitCode: exitCode, instance: instance }; - }; - WASIThreads.prototype.terminateAllThreads = function () { - var _a; - if (!this.childThread) { - (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.terminateAllThreads(); - } - else { - this.postMessage(createMessage('terminate-all-threads', {})); - } - }; - return WASIThreads; -}()); -function patchWasiInstance(wasiThreads, wasi) { - var patched = patchedWasiInstances.get(wasiThreads); - if (patched.has(wasi)) { - return; - } - var _this = wasiThreads; - var wasiImport = wasi.wasiImport; - if (wasiImport) { - var proc_exit_1 = wasiImport.proc_exit; - wasiImport.proc_exit = function (code) { - _this.terminateAllThreads(); - return proc_exit_1.call(this, code); - }; - } - if (!_this.childThread) { - var start_1 = wasi.start; - if (typeof start_1 === 'function') { - wasi.start = function (instance) { - try { - return start_1.call(this, instance); - } - catch (err) { - if (isTrapError(err)) { - _this.terminateAllThreads(); - } - throw err; - } - }; - } - } - patched.add(wasi); -} -function getWasiSymbol(wasi, description) { - var symbols = Object.getOwnPropertySymbols(wasi); - var selectDescription = function (description) { return function (s) { - if (s.description) { - return s.description === description; - } - return s.toString() === "Symbol(".concat(description, ")"); - }; }; - if (Array.isArray(description)) { - return description.map(function (d) { return symbols.filter(selectDescription(d))[0]; }); - } - return symbols.filter(selectDescription(description))[0]; -} -function setupInstance(wasi, instance) { - var _a = getWasiSymbol(wasi, ['kInstance', 'kSetMemory']), kInstance = _a[0], kSetMemory = _a[1]; - wasi[kInstance] = instance; - wasi[kSetMemory](instance.exports.memory); -} - -/** @public */ -var ThreadMessageHandler = /*#__PURE__*/ (function () { - function ThreadMessageHandler(options) { - var postMsg = getPostMessage(options); - if (typeof postMsg !== 'function') { - throw new TypeError('options.postMessage is not a function'); - } - this.postMessage = postMsg; - this.onLoad = options === null || options === void 0 ? void 0 : options.onLoad; - this.onError = typeof (options === null || options === void 0 ? void 0 : options.onError) === 'function' ? options.onError : function (_type, err) { throw err; }; - this.instance = undefined; - // this.module = undefined - this.messagesBeforeLoad = []; - } - /** @virtual */ - ThreadMessageHandler.prototype.instantiate = function (data) { - if (typeof this.onLoad === 'function') { - return this.onLoad(data); - } - throw new Error('ThreadMessageHandler.prototype.instantiate is not implemented'); - }; - /** @virtual */ - ThreadMessageHandler.prototype.handle = function (e) { - var _this = this; - var _a; - if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { - var type = e.data.__emnapi__.type; - var payload_1 = e.data.__emnapi__.payload; - try { - if (type === 'load') { - this._load(payload_1); - } - else if (type === 'start') { - this.handleAfterLoad(e, function () { - _this._start(payload_1); - }); - } - } - catch (err) { - this.onError(err, type); - } - } - }; - ThreadMessageHandler.prototype._load = function (payload) { - var _this = this; - if (this.instance !== undefined) - return; - var source; - try { - source = this.instantiate(payload); - } - catch (err) { - this._loaded(err, null, payload); - return; - } - var then = source && 'then' in source ? source.then : undefined; - if (typeof then === 'function') { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - then.call(source, function (source) { _this._loaded(null, source, payload); }, function (err) { _this._loaded(err, null, payload); }); - } - else { - this._loaded(null, source, payload); - } - }; - ThreadMessageHandler.prototype._start = function (payload) { - var wasi_thread_start = this.instance.exports.wasi_thread_start; - if (typeof wasi_thread_start !== 'function') { - var err = new TypeError('wasi_thread_start is not exported'); - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - var postMessage = this.postMessage; - var tid = payload.tid; - var startArg = payload.arg; - notifyPthreadCreateResult(payload.sab, 1); - try { - wasi_thread_start(tid, startArg); - } - catch (err) { - if (err !== 'unwind') { - throw err; - } - else { - return; - } - } - postMessage(createMessage('cleanup-thread', { tid: tid })); - }; - ThreadMessageHandler.prototype._loaded = function (err, source, payload) { - if (err) { - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - if (source == null) { - var err_1 = new TypeError('onLoad should return an object'); - notifyPthreadCreateResult(payload.sab, 2, err_1); - throw err_1; - } - var instance = source.instance; - if (!instance) { - var err_2 = new TypeError('onLoad should return an object which includes "instance"'); - notifyPthreadCreateResult(payload.sab, 2, err_2); - throw err_2; - } - this.instance = instance; - var postMessage = this.postMessage; - postMessage(createMessage('loaded', {})); - var messages = this.messagesBeforeLoad; - this.messagesBeforeLoad = []; - for (var i = 0; i < messages.length; i++) { - var data = messages[i]; - this.handle({ data: data }); - } - }; - ThreadMessageHandler.prototype.handleAfterLoad = function (e, f) { - if (this.instance !== undefined) { - f.call(this, e); - } - else { - this.messagesBeforeLoad.push(e.data); - } - }; - return ThreadMessageHandler; -}()); -function notifyPthreadCreateResult(sab, result, error) { - if (sab) { - serizeErrorToBuffer(sab.buffer, result, error); - Atomics.notify(sab, 0); - } -} - -export { ThreadManager, ThreadMessageHandler, WASIThreads, createInstanceProxy, isSharedArrayBuffer, isTrapError }; diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js b/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js deleted file mode 100644 index 893dfba..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +++ /dev/null @@ -1,957 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.wasiThreads = {})); -})(this, (function (exports) { - var _WebAssembly = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; - var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && - typeof process.versions === 'object' && process.versions !== null && - typeof process.versions.node === 'string'; - function getPostMessage(options) { - return typeof (options === null || options === void 0 ? void 0 : options.postMessage) === 'function' - ? options.postMessage - : typeof postMessage === 'function' - ? postMessage - : undefined; - } - function serizeErrorToBuffer(sab, code, error) { - var i32array = new Int32Array(sab); - Atomics.store(i32array, 0, code); - if (code > 1 && error) { - var name_1 = error.name; - var message = error.message; - var stack = error.stack; - var nameBuffer = new TextEncoder().encode(name_1); - var messageBuffer = new TextEncoder().encode(message); - var stackBuffer = new TextEncoder().encode(stack); - Atomics.store(i32array, 1, nameBuffer.length); - Atomics.store(i32array, 2, messageBuffer.length); - Atomics.store(i32array, 3, stackBuffer.length); - var buffer = new Uint8Array(sab); - buffer.set(nameBuffer, 16); - buffer.set(messageBuffer, 16 + nameBuffer.length); - buffer.set(stackBuffer, 16 + nameBuffer.length + messageBuffer.length); - } - } - function deserizeErrorFromBuffer(sab) { - var _a, _b; - var i32array = new Int32Array(sab); - var status = Atomics.load(i32array, 0); - if (status <= 1) { - return null; - } - var nameLength = Atomics.load(i32array, 1); - var messageLength = Atomics.load(i32array, 2); - var stackLength = Atomics.load(i32array, 3); - var buffer = new Uint8Array(sab); - var nameBuffer = buffer.slice(16, 16 + nameLength); - var messageBuffer = buffer.slice(16 + nameLength, 16 + nameLength + messageLength); - var stackBuffer = buffer.slice(16 + nameLength + messageLength, 16 + nameLength + messageLength + stackLength); - var name = new TextDecoder().decode(nameBuffer); - var message = new TextDecoder().decode(messageBuffer); - var stack = new TextDecoder().decode(stackBuffer); - var ErrorConstructor = (_a = globalThis[name]) !== null && _a !== void 0 ? _a : (name === 'RuntimeError' ? ((_b = _WebAssembly.RuntimeError) !== null && _b !== void 0 ? _b : Error) : Error); - var error = new ErrorConstructor(message); - Object.defineProperty(error, 'stack', { - value: stack, - writable: true, - enumerable: false, - configurable: true - }); - return error; - } - /** @public */ - function isSharedArrayBuffer(value) { - return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); - } - /** @public */ - function isTrapError(e) { - try { - return e instanceof _WebAssembly.RuntimeError; - } - catch (_) { - return false; - } - } - - function createMessage(type, payload) { - return { - __emnapi__: { - type: type, - payload: payload - } - }; - } - - var WASI_THREADS_MAX_TID = 0x1FFFFFFF; - function checkSharedWasmMemory(wasmMemory) { - if (wasmMemory) { - if (!isSharedArrayBuffer(wasmMemory.buffer)) { - throw new Error('Multithread features require shared wasm memory. ' + - 'Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, ' + - 'then create WebAssembly.Memory with `shared: true` option'); - } - } - else { - if (typeof SharedArrayBuffer === 'undefined') { - throw new Error('Current environment does not support SharedArrayBuffer, threads are not available!'); - } - } - } - function getReuseWorker(value) { - var _a; - if (typeof value === 'boolean') { - return value ? { size: 0, strict: false } : false; - } - if (typeof value === 'number') { - if (!(value >= 0)) { - throw new RangeError('reuseWorker: size must be a non-negative integer'); - } - return { size: value, strict: false }; - } - if (!value) { - return false; - } - var size = (_a = Number(value.size)) !== null && _a !== void 0 ? _a : 0; - var strict = Boolean(value.strict); - if (!(size > 0) && strict) { - throw new RangeError('reuseWorker: size must be set to positive integer if strict is set to true'); - } - return { size: size, strict: strict }; - } - var nextWorkerID = 0; - /** @public */ - var ThreadManager = /*#__PURE__*/ (function () { - function ThreadManager(options) { - var _a; - this.unusedWorkers = []; - this.runningWorkers = []; - this.pthreads = Object.create(null); - this.wasmModule = null; - this.wasmMemory = null; - this.messageEvents = new WeakMap(); - if (!options) { - throw new TypeError('ThreadManager(): options is not provided'); - } - if ('childThread' in options) { - this._childThread = Boolean(options.childThread); - } - else { - this._childThread = false; - } - if (this._childThread) { - this._onCreateWorker = undefined; - this._reuseWorker = false; - this._beforeLoad = undefined; - } - else { - this._onCreateWorker = options.onCreateWorker; - this._reuseWorker = getReuseWorker(options.reuseWorker); - this._beforeLoad = options.beforeLoad; - } - this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console); - } - Object.defineProperty(ThreadManager.prototype, "nextWorkerID", { - get: function () { return nextWorkerID; }, - enumerable: false, - configurable: true - }); - ThreadManager.prototype.init = function () { - if (!this._childThread) { - this.initMainThread(); - } - }; - ThreadManager.prototype.initMainThread = function () { - this.preparePool(); - }; - ThreadManager.prototype.preparePool = function () { - if (this._reuseWorker) { - if (this._reuseWorker.size) { - var pthreadPoolSize = this._reuseWorker.size; - while (pthreadPoolSize--) { - var worker = this.allocateUnusedWorker(); - if (ENVIRONMENT_IS_NODE) { - // https://github.com/nodejs/node/issues/53036 - worker.once('message', function () { }); - worker.unref(); - } - } - } - } - }; - ThreadManager.prototype.shouldPreloadWorkers = function () { - return !this._childThread && this._reuseWorker && this._reuseWorker.size > 0; - }; - ThreadManager.prototype.loadWasmModuleToAllWorkers = function () { - var _this_1 = this; - var promises = Array(this.unusedWorkers.length); - var _loop_1 = function (i) { - var worker = this_1.unusedWorkers[i]; - if (ENVIRONMENT_IS_NODE) - worker.ref(); - promises[i] = this_1.loadWasmModuleToWorker(worker).then(function (w) { - if (ENVIRONMENT_IS_NODE) - worker.unref(); - return w; - }, function (e) { - if (ENVIRONMENT_IS_NODE) - worker.unref(); - throw e; - }); - }; - var this_1 = this; - for (var i = 0; i < this.unusedWorkers.length; ++i) { - _loop_1(i); - } - return Promise.all(promises).catch(function (err) { - _this_1.terminateAllThreads(); - throw err; - }); - }; - ThreadManager.prototype.preloadWorkers = function () { - if (this.shouldPreloadWorkers()) { - return this.loadWasmModuleToAllWorkers(); - } - return Promise.resolve([]); - }; - ThreadManager.prototype.setup = function (wasmModule, wasmMemory) { - this.wasmModule = wasmModule; - this.wasmMemory = wasmMemory; - }; - ThreadManager.prototype.markId = function (worker) { - if (worker.__emnapi_tid) - return worker.__emnapi_tid; - var tid = nextWorkerID + 43; - nextWorkerID = (nextWorkerID + 1) % (WASI_THREADS_MAX_TID - 42); - this.pthreads[tid] = worker; - worker.__emnapi_tid = tid; - return tid; - }; - ThreadManager.prototype.returnWorkerToPool = function (worker) { - var tid = worker.__emnapi_tid; - if (tid !== undefined) { - delete this.pthreads[tid]; - } - this.unusedWorkers.push(worker); - this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1); - delete worker.__emnapi_tid; - if (ENVIRONMENT_IS_NODE) { - worker.unref(); - } - }; - ThreadManager.prototype.loadWasmModuleToWorker = function (worker, sab) { - var _this_1 = this; - if (worker.whenLoaded) - return worker.whenLoaded; - var err = this.printErr; - var beforeLoad = this._beforeLoad; - // eslint-disable-next-line @typescript-eslint/no-this-alias - var _this = this; - worker.whenLoaded = new Promise(function (resolve, reject) { - var handleError = function (e) { - var message = 'worker sent an error!'; - if (worker.__emnapi_tid !== undefined) { - message = 'worker (tid = ' + worker.__emnapi_tid + ') sent an error!'; - } - if ('message' in e) { - err(message + ' ' + e.message); - if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) { - try { - _this.terminateAllThreads(); - } - catch (_) { } - } - } - else { - err(message); - } - reject(e); - throw e; - }; - var handleMessage = function (data) { - if (data.__emnapi__) { - var type = data.__emnapi__.type; - var payload = data.__emnapi__.payload; - if (type === 'loaded') { - worker.loaded = true; - if (ENVIRONMENT_IS_NODE && !worker.__emnapi_tid) { - worker.unref(); - } - resolve(worker); - // if (payload.err) { - // err('failed to load in child thread: ' + (payload.err.message || payload.err)) - // } - } - else if (type === 'cleanup-thread') { - if (payload.tid in _this_1.pthreads) { - _this_1.cleanThread(worker, payload.tid); - } - } - } - }; - worker.onmessage = function (e) { - handleMessage(e.data); - _this_1.fireMessageEvent(worker, e); - }; - worker.onerror = handleError; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', function (data) { - var _a, _b; - (_b = (_a = worker).onmessage) === null || _b === void 0 ? void 0 : _b.call(_a, { - data: data - }); - }); - worker.on('error', function (e) { - var _a, _b; - (_b = (_a = worker).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, e); - }); - worker.on('detachedExit', function () { }); - } - if (typeof beforeLoad === 'function') { - beforeLoad(worker); - } - try { - worker.postMessage(createMessage('load', { - wasmModule: _this_1.wasmModule, - wasmMemory: _this_1.wasmMemory, - sab: sab - })); - } - catch (err) { - checkSharedWasmMemory(_this_1.wasmMemory); - throw err; - } - }); - return worker.whenLoaded; - }; - ThreadManager.prototype.allocateUnusedWorker = function () { - var _onCreateWorker = this._onCreateWorker; - if (typeof _onCreateWorker !== 'function') { - throw new TypeError('`options.onCreateWorker` is not provided'); - } - var worker = _onCreateWorker({ type: 'thread', name: 'emnapi-pthread' }); - this.unusedWorkers.push(worker); - return worker; - }; - ThreadManager.prototype.getNewWorker = function (sab) { - if (this._reuseWorker) { - if (this.unusedWorkers.length === 0) { - if (this._reuseWorker.strict) { - if (!ENVIRONMENT_IS_NODE) { - var err = this.printErr; - err('Tried to spawn a new thread, but the thread pool is exhausted.\n' + - 'This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.'); - return; - } - } - var worker_1 = this.allocateUnusedWorker(); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - this.loadWasmModuleToWorker(worker_1, sab); - } - return this.unusedWorkers.pop(); - } - var worker = this.allocateUnusedWorker(); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - this.loadWasmModuleToWorker(worker, sab); - return this.unusedWorkers.pop(); - }; - ThreadManager.prototype.cleanThread = function (worker, tid, force) { - if (!force && this._reuseWorker) { - this.returnWorkerToPool(worker); - } - else { - delete this.pthreads[tid]; - var index = this.runningWorkers.indexOf(worker); - if (index !== -1) { - this.runningWorkers.splice(index, 1); - } - this.terminateWorker(worker); - delete worker.__emnapi_tid; - } - }; - ThreadManager.prototype.terminateWorker = function (worker) { - var _this_1 = this; - var _a; - var tid = worker.__emnapi_tid; - // eslint-disable-next-line @typescript-eslint/no-floating-promises - worker.terminate(); - (_a = this.messageEvents.get(worker)) === null || _a === void 0 ? void 0 : _a.clear(); - this.messageEvents.delete(worker); - worker.onmessage = function (e) { - if (e.data.__emnapi__) { - var err = _this_1.printErr; - err('received "' + e.data.__emnapi__.type + '" command from terminated worker: ' + tid); - } - }; - }; - ThreadManager.prototype.terminateAllThreads = function () { - for (var i = 0; i < this.runningWorkers.length; ++i) { - this.terminateWorker(this.runningWorkers[i]); - } - for (var i = 0; i < this.unusedWorkers.length; ++i) { - this.terminateWorker(this.unusedWorkers[i]); - } - this.unusedWorkers = []; - this.runningWorkers = []; - this.pthreads = Object.create(null); - this.preparePool(); - }; - ThreadManager.prototype.addMessageEventListener = function (worker, onMessage) { - var listeners = this.messageEvents.get(worker); - if (!listeners) { - listeners = new Set(); - this.messageEvents.set(worker, listeners); - } - listeners.add(onMessage); - return function () { - listeners === null || listeners === void 0 ? void 0 : listeners.delete(onMessage); - }; - }; - ThreadManager.prototype.fireMessageEvent = function (worker, e) { - var listeners = this.messageEvents.get(worker); - if (!listeners) - return; - var err = this.printErr; - listeners.forEach(function (listener) { - try { - listener(e); - } - catch (e) { - err(e.stack); - } - }); - }; - return ThreadManager; - }()); - - var kIsProxy = Symbol('kIsProxy'); - /** @public */ - function createInstanceProxy(instance, memory) { - if (instance[kIsProxy]) - return instance; - // https://github.com/nodejs/help/issues/4102 - var originalExports = instance.exports; - var createHandler = function (target) { - var handlers = [ - 'apply', - 'construct', - 'defineProperty', - 'deleteProperty', - 'get', - 'getOwnPropertyDescriptor', - 'getPrototypeOf', - 'has', - 'isExtensible', - 'ownKeys', - 'preventExtensions', - 'set', - 'setPrototypeOf' - ]; - var handler = {}; - var _loop_1 = function (i) { - var name_1 = handlers[i]; - handler[name_1] = function () { - var args = Array.prototype.slice.call(arguments, 1); - args.unshift(target); - return Reflect[name_1].apply(Reflect, args); - }; - }; - for (var i = 0; i < handlers.length; i++) { - _loop_1(i); - } - return handler; - }; - var handler = createHandler(originalExports); - var _initialize = function () { }; - var _start = function () { return 0; }; - handler.get = function (_target, p, receiver) { - var _a; - if (p === 'memory') { - return (_a = (typeof memory === 'function' ? memory() : memory)) !== null && _a !== void 0 ? _a : Reflect.get(originalExports, p, receiver); - } - if (p === '_initialize') { - return p in originalExports ? _initialize : undefined; - } - if (p === '_start') { - return p in originalExports ? _start : undefined; - } - return Reflect.get(originalExports, p, receiver); - }; - handler.has = function (_target, p) { - if (p === 'memory') - return true; - return Reflect.has(originalExports, p); - }; - var exportsProxy = new Proxy(Object.create(null), handler); - return new Proxy(instance, { - get: function (target, p, receiver) { - if (p === 'exports') { - return exportsProxy; - } - if (p === kIsProxy) { - return true; - } - return Reflect.get(target, p, receiver); - } - }); - } - - var patchedWasiInstances = new WeakMap(); - /** @public */ - var WASIThreads = /*#__PURE__*/ (function () { - function WASIThreads(options) { - var _this_1 = this; - if (!options) { - throw new TypeError('WASIThreads(): options is not provided'); - } - if (!options.wasi) { - throw new TypeError('WASIThreads(): options.wasi is not provided'); - } - patchedWasiInstances.set(this, new WeakSet()); - var wasi = options.wasi; - patchWasiInstance(this, wasi); - this.wasi = wasi; - if ('childThread' in options) { - this.childThread = Boolean(options.childThread); - } - else { - this.childThread = false; - } - this.PThread = undefined; - if ('threadManager' in options) { - if (typeof options.threadManager === 'function') { - this.PThread = options.threadManager(); - } - else { - this.PThread = options.threadManager; - } - } - else { - if (!this.childThread) { - this.PThread = new ThreadManager(options); - this.PThread.init(); - } - } - var waitThreadStart = false; - if ('waitThreadStart' in options) { - waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); - } - var postMessage = getPostMessage(options); - if (this.childThread && typeof postMessage !== 'function') { - throw new TypeError('options.postMessage is not a function'); - } - this.postMessage = postMessage; - var wasm64 = Boolean(options.wasm64); - var onMessage = function (e) { - if (e.data.__emnapi__) { - var type = e.data.__emnapi__.type; - var payload = e.data.__emnapi__.payload; - if (type === 'spawn-thread') { - threadSpawn(payload.startArg, payload.errorOrTid); - } - else if (type === 'terminate-all-threads') { - _this_1.terminateAllThreads(); - } - } - }; - var threadSpawn = function (startArg, errorOrTid) { - var _a; - var EAGAIN = 6; - var isNewABI = errorOrTid !== undefined; - try { - checkSharedWasmMemory(_this_1.wasmMemory); - } - catch (err) { - (_a = _this_1.PThread) === null || _a === void 0 ? void 0 : _a.printErr(err.stack); - if (isNewABI) { - var struct_1 = new Int32Array(_this_1.wasmMemory.buffer, errorOrTid, 2); - Atomics.store(struct_1, 0, 1); - Atomics.store(struct_1, 1, EAGAIN); - Atomics.notify(struct_1, 1); - return 1; - } - else { - return -EAGAIN; - } - } - if (!isNewABI) { - var malloc = _this_1.wasmInstance.exports.malloc; - errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : malloc(8); - if (!errorOrTid) { - return -48; /* ENOMEM */ - } - } - var _free = _this_1.wasmInstance.exports.free; - var free = wasm64 ? function (ptr) { _free(BigInt(ptr)); } : _free; - var struct = new Int32Array(_this_1.wasmMemory.buffer, errorOrTid, 2); - Atomics.store(struct, 0, 0); - Atomics.store(struct, 1, 0); - if (_this_1.childThread) { - postMessage(createMessage('spawn-thread', { - startArg: startArg, - errorOrTid: errorOrTid - })); - Atomics.wait(struct, 1, 0); - var isError = Atomics.load(struct, 0); - var result = Atomics.load(struct, 1); - if (isNewABI) { - return isError; - } - free(errorOrTid); - return isError ? -result : result; - } - var shouldWait = waitThreadStart || (waitThreadStart === 0); - var sab; - if (shouldWait) { - sab = new Int32Array(new SharedArrayBuffer(16 + 8192)); - Atomics.store(sab, 0, 0); - } - var worker; - var tid; - var PThread = _this_1.PThread; - try { - worker = PThread.getNewWorker(sab); - if (!worker) { - throw new Error('failed to get new worker'); - } - PThread.addMessageEventListener(worker, onMessage); - tid = PThread.markId(worker); - if (ENVIRONMENT_IS_NODE) { - worker.ref(); - } - worker.postMessage(createMessage('start', { - tid: tid, - arg: startArg, - sab: sab - })); - if (shouldWait) { - if (typeof waitThreadStart === 'number') { - var waitResult = Atomics.wait(sab, 0, 0, waitThreadStart); - if (waitResult === 'timed-out') { - try { - PThread.cleanThread(worker, tid, true); - } - catch (_) { } - throw new Error('Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.'); - } - } - else { - Atomics.wait(sab, 0, 0); - } - var r = Atomics.load(sab, 0); - if (r > 1) { - try { - PThread.cleanThread(worker, tid, true); - } - catch (_) { } - throw deserizeErrorFromBuffer(sab.buffer); - } - } - } - catch (e) { - Atomics.store(struct, 0, 1); - Atomics.store(struct, 1, EAGAIN); - Atomics.notify(struct, 1); - PThread === null || PThread === void 0 ? void 0 : PThread.printErr(e.stack); - if (isNewABI) { - return 1; - } - free(errorOrTid); - return -EAGAIN; - } - Atomics.store(struct, 0, 0); - Atomics.store(struct, 1, tid); - Atomics.notify(struct, 1); - PThread.runningWorkers.push(worker); - if (!shouldWait) { - worker.whenLoaded.catch(function (err) { - delete worker.whenLoaded; - PThread.cleanThread(worker, tid, true); - throw err; - }); - } - if (isNewABI) { - return 0; - } - free(errorOrTid); - return tid; - }; - this.threadSpawn = threadSpawn; - } - WASIThreads.prototype.getImportObject = function () { - return { - wasi: { - 'thread-spawn': this.threadSpawn - } - }; - }; - WASIThreads.prototype.setup = function (wasmInstance, wasmModule, wasmMemory) { - wasmMemory !== null && wasmMemory !== void 0 ? wasmMemory : (wasmMemory = wasmInstance.exports.memory); - this.wasmInstance = wasmInstance; - this.wasmMemory = wasmMemory; - if (this.PThread) { - this.PThread.setup(wasmModule, wasmMemory); - } - }; - WASIThreads.prototype.preloadWorkers = function () { - if (this.PThread) { - return this.PThread.preloadWorkers(); - } - return Promise.resolve([]); - }; - /** - * It's ok to call this method to a WASI command module. - * - * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module - * - * @returns A proxied WebAssembly instance if in child thread, other wise the original instance - */ - WASIThreads.prototype.initialize = function (instance, module, memory) { - var exports = instance.exports; - memory !== null && memory !== void 0 ? memory : (memory = exports.memory); - if (this.childThread) { - instance = createInstanceProxy(instance, memory); - } - this.setup(instance, module, memory); - var wasi = this.wasi; - if (('_start' in exports) && (typeof exports._start === 'function')) { - if (this.childThread) { - wasi.start(instance); - try { - var kStarted = getWasiSymbol(wasi, 'kStarted'); - wasi[kStarted] = false; - } - catch (_) { } - } - else { - setupInstance(wasi, instance); - } - } - else { - wasi.initialize(instance); - } - return instance; - }; - /** - * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} - * ```js - * this.initialize(instance, module, memory) - * this.wasi.start(instance) - * ``` - */ - WASIThreads.prototype.start = function (instance, module, memory) { - var exports = instance.exports; - memory !== null && memory !== void 0 ? memory : (memory = exports.memory); - if (this.childThread) { - instance = createInstanceProxy(instance, memory); - } - this.setup(instance, module, memory); - var exitCode = this.wasi.start(instance); - return { exitCode: exitCode, instance: instance }; - }; - WASIThreads.prototype.terminateAllThreads = function () { - var _a; - if (!this.childThread) { - (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.terminateAllThreads(); - } - else { - this.postMessage(createMessage('terminate-all-threads', {})); - } - }; - return WASIThreads; - }()); - function patchWasiInstance(wasiThreads, wasi) { - var patched = patchedWasiInstances.get(wasiThreads); - if (patched.has(wasi)) { - return; - } - var _this = wasiThreads; - var wasiImport = wasi.wasiImport; - if (wasiImport) { - var proc_exit_1 = wasiImport.proc_exit; - wasiImport.proc_exit = function (code) { - _this.terminateAllThreads(); - return proc_exit_1.call(this, code); - }; - } - if (!_this.childThread) { - var start_1 = wasi.start; - if (typeof start_1 === 'function') { - wasi.start = function (instance) { - try { - return start_1.call(this, instance); - } - catch (err) { - if (isTrapError(err)) { - _this.terminateAllThreads(); - } - throw err; - } - }; - } - } - patched.add(wasi); - } - function getWasiSymbol(wasi, description) { - var symbols = Object.getOwnPropertySymbols(wasi); - var selectDescription = function (description) { return function (s) { - if (s.description) { - return s.description === description; - } - return s.toString() === "Symbol(".concat(description, ")"); - }; }; - if (Array.isArray(description)) { - return description.map(function (d) { return symbols.filter(selectDescription(d))[0]; }); - } - return symbols.filter(selectDescription(description))[0]; - } - function setupInstance(wasi, instance) { - var _a = getWasiSymbol(wasi, ['kInstance', 'kSetMemory']), kInstance = _a[0], kSetMemory = _a[1]; - wasi[kInstance] = instance; - wasi[kSetMemory](instance.exports.memory); - } - - /** @public */ - var ThreadMessageHandler = /*#__PURE__*/ (function () { - function ThreadMessageHandler(options) { - var postMsg = getPostMessage(options); - if (typeof postMsg !== 'function') { - throw new TypeError('options.postMessage is not a function'); - } - this.postMessage = postMsg; - this.onLoad = options === null || options === void 0 ? void 0 : options.onLoad; - this.onError = typeof (options === null || options === void 0 ? void 0 : options.onError) === 'function' ? options.onError : function (_type, err) { throw err; }; - this.instance = undefined; - // this.module = undefined - this.messagesBeforeLoad = []; - } - /** @virtual */ - ThreadMessageHandler.prototype.instantiate = function (data) { - if (typeof this.onLoad === 'function') { - return this.onLoad(data); - } - throw new Error('ThreadMessageHandler.prototype.instantiate is not implemented'); - }; - /** @virtual */ - ThreadMessageHandler.prototype.handle = function (e) { - var _this = this; - var _a; - if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { - var type = e.data.__emnapi__.type; - var payload_1 = e.data.__emnapi__.payload; - try { - if (type === 'load') { - this._load(payload_1); - } - else if (type === 'start') { - this.handleAfterLoad(e, function () { - _this._start(payload_1); - }); - } - } - catch (err) { - this.onError(err, type); - } - } - }; - ThreadMessageHandler.prototype._load = function (payload) { - var _this = this; - if (this.instance !== undefined) - return; - var source; - try { - source = this.instantiate(payload); - } - catch (err) { - this._loaded(err, null, payload); - return; - } - var then = source && 'then' in source ? source.then : undefined; - if (typeof then === 'function') { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - then.call(source, function (source) { _this._loaded(null, source, payload); }, function (err) { _this._loaded(err, null, payload); }); - } - else { - this._loaded(null, source, payload); - } - }; - ThreadMessageHandler.prototype._start = function (payload) { - var wasi_thread_start = this.instance.exports.wasi_thread_start; - if (typeof wasi_thread_start !== 'function') { - var err = new TypeError('wasi_thread_start is not exported'); - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - var postMessage = this.postMessage; - var tid = payload.tid; - var startArg = payload.arg; - notifyPthreadCreateResult(payload.sab, 1); - try { - wasi_thread_start(tid, startArg); - } - catch (err) { - if (err !== 'unwind') { - throw err; - } - else { - return; - } - } - postMessage(createMessage('cleanup-thread', { tid: tid })); - }; - ThreadMessageHandler.prototype._loaded = function (err, source, payload) { - if (err) { - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - if (source == null) { - var err_1 = new TypeError('onLoad should return an object'); - notifyPthreadCreateResult(payload.sab, 2, err_1); - throw err_1; - } - var instance = source.instance; - if (!instance) { - var err_2 = new TypeError('onLoad should return an object which includes "instance"'); - notifyPthreadCreateResult(payload.sab, 2, err_2); - throw err_2; - } - this.instance = instance; - var postMessage = this.postMessage; - postMessage(createMessage('loaded', {})); - var messages = this.messagesBeforeLoad; - this.messagesBeforeLoad = []; - for (var i = 0; i < messages.length; i++) { - var data = messages[i]; - this.handle({ data: data }); - } - }; - ThreadMessageHandler.prototype.handleAfterLoad = function (e, f) { - if (this.instance !== undefined) { - f.call(this, e); - } - else { - this.messagesBeforeLoad.push(e.data); - } - }; - return ThreadMessageHandler; - }()); - function notifyPthreadCreateResult(sab, result, error) { - if (sab) { - serizeErrorToBuffer(sab.buffer, result, error); - Atomics.notify(sab, 0); - } - } - - exports.ThreadManager = ThreadManager; - exports.ThreadMessageHandler = ThreadMessageHandler; - exports.WASIThreads = WASIThreads; - exports.createInstanceProxy = createInstanceProxy; - exports.isSharedArrayBuffer = isSharedArrayBuffer; - exports.isTrapError = isTrapError; - -})); diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts b/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts deleted file mode 100644 index 53e0eb8..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +++ /dev/null @@ -1,270 +0,0 @@ -/// - -import type { Worker as Worker_2 } from 'worker_threads'; - -/** @public */ -export declare interface BaseOptions { - wasi: WASIInstance; - version?: 'preview1'; - wasm64?: boolean; -} - -/** @public */ -export declare interface ChildThreadOptions extends BaseOptions { - childThread: true; - postMessage?: (data: any) => void; -} - -/** @public */ -export declare interface CleanupThreadPayload { - tid: number; -} - -/** @public */ -export declare interface CommandInfo { - type: T; - payload: CommandPayloadMap[T]; -} - -/** @public */ -export declare interface CommandPayloadMap { - load: LoadPayload; - loaded: LoadedPayload; - start: StartPayload; - 'cleanup-thread': CleanupThreadPayload; - 'terminate-all-threads': TerminateAllThreadsPayload; - 'spawn-thread': SpawnThreadPayload; -} - -/** @public */ -export declare type CommandType = keyof CommandPayloadMap; - -/** @public */ -export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; - -/** @public */ -export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; - -/** @public */ -export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; - -/** @public */ -export declare interface LoadedPayload { -} - -/** @public */ -export declare interface LoadPayload { - wasmModule: WebAssembly.Module; - wasmMemory: WebAssembly.Memory; - sab?: Int32Array; -} - -/** @public */ -export declare interface MainThreadBaseOptions extends BaseOptions { - waitThreadStart?: boolean | number; -} - -/** @public */ -export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; - -/** @public */ -export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { -} - -/** @public */ -export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { - threadManager?: ThreadManager | (() => ThreadManager); -} - -/** @public */ -export declare interface MessageEventData { - __emnapi__: CommandInfo; -} - -/** @public */ -export declare interface ReuseWorkerOptions { - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} - */ - size: number; - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} - */ - strict?: boolean; -} - -/** @public */ -export declare interface SpawnThreadPayload { - startArg: number; - errorOrTid: number; -} - -/** @public */ -export declare interface StartPayload { - tid: number; - arg: number; - sab?: Int32Array; -} - -/** @public */ -export declare interface StartResult { - exitCode: number; - instance: WebAssembly.Instance; -} - -/** @public */ -export declare interface TerminateAllThreadsPayload { -} - -/** @public */ -export declare class ThreadManager { - unusedWorkers: WorkerLike[]; - runningWorkers: WorkerLike[]; - pthreads: Record; - get nextWorkerID(): number; - wasmModule: WebAssembly.Module | null; - wasmMemory: WebAssembly.Memory | null; - private readonly messageEvents; - private readonly _childThread; - private readonly _onCreateWorker; - private readonly _reuseWorker; - private readonly _beforeLoad?; - /* Excluded from this release type: printErr */ - constructor(options: ThreadManagerOptions); - init(): void; - initMainThread(): void; - private preparePool; - shouldPreloadWorkers(): boolean; - loadWasmModuleToAllWorkers(): Promise; - preloadWorkers(): Promise; - setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; - markId(worker: WorkerLike): number; - returnWorkerToPool(worker: WorkerLike): void; - loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; - allocateUnusedWorker(): WorkerLike; - getNewWorker(sab?: Int32Array): WorkerLike | undefined; - cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; - terminateWorker(worker: WorkerLike): void; - terminateAllThreads(): void; - addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; - fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; -} - -/** @public */ -export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; - -/** @public */ -export declare interface ThreadManagerOptionsBase { - printErr?: (message: string) => void; -} - -/** @public */ -export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { - childThread: true; -} - -/** @public */ -export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { - beforeLoad?: (worker: WorkerLike) => any; - reuseWorker?: boolean | number | ReuseWorkerOptions; - onCreateWorker: WorkerFactory; - childThread?: false; -} - -/** @public */ -export declare class ThreadMessageHandler { - protected instance: WebAssembly.Instance | undefined; - private messagesBeforeLoad; - protected postMessage: (message: any) => void; - protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - protected onError: (error: Error, type: WorkerMessageType) => void; - constructor(options?: ThreadMessageHandlerOptions); - /** @virtual */ - instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - /** @virtual */ - handle(e: WorkerMessageEvent>): void; - private _load; - private _start; - protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; - protected handleAfterLoad(e: E, f: (e: E) => void): void; -} - -/** @public */ -export declare interface ThreadMessageHandlerOptions { - onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; - onError?: (error: Error, type: WorkerMessageType) => void; - postMessage?: (message: any) => void; -} - -/** @public */ -export declare interface WASIInstance { - readonly wasiImport?: Record; - initialize(instance: object): void; - start(instance: object): number; - getImportObject?(): any; -} - -/** @public */ -export declare class WASIThreads { - PThread: ThreadManager | undefined; - private wasmMemory; - private wasmInstance; - private readonly threadSpawn; - readonly childThread: boolean; - private readonly postMessage; - readonly wasi: WASIInstance; - constructor(options: WASIThreadsOptions); - getImportObject(): { - wasi: WASIThreadsImports; - }; - setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; - preloadWorkers(): Promise; - /** - * It's ok to call this method to a WASI command module. - * - * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module - * - * @returns A proxied WebAssembly instance if in child thread, other wise the original instance - */ - initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; - /** - * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} - * ```js - * this.initialize(instance, module, memory) - * this.wasi.start(instance) - * ``` - */ - start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; - terminateAllThreads(): void; -} - -/** @public */ -export declare interface WASIThreadsImports { - 'thread-spawn': (startArg: number, errorOrTid?: number) => number; -} - -/** @public */ -export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; - -/** @public */ -export declare type WorkerFactory = (ctx: { - type: string; - name: string; -}) => WorkerLike; - -/** @public */ -export declare type WorkerLike = (Worker | Worker_2) & { - whenLoaded?: Promise; - loaded?: boolean; - __emnapi_tid?: number; -}; - -/** @public */ -export declare interface WorkerMessageEvent { - data: T; -} - -/** @public */ -export declare type WorkerMessageType = 'load' | 'start'; - -export { } diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js b/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js deleted file mode 100644 index 59a0d34..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).wasiThreads={})}(this,function(e){var r="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0,t="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node;function o(e){return"function"==typeof(null==e?void 0:e.postMessage)?e.postMessage:"function"==typeof postMessage?postMessage:void 0}function n(e){return"function"==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(e)}function i(e){try{return e instanceof r.RuntimeError}catch(e){return!1}}function a(e,r){return{__emnapi__:{type:e,payload:r}}}function s(e){if(e){if(!n(e.buffer))throw new Error("Multithread features require shared wasm memory. Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, then create WebAssembly.Memory with `shared: true` option")}else if("undefined"==typeof SharedArrayBuffer)throw new Error("Current environment does not support SharedArrayBuffer, threads are not available!")}var d=0,h=function(){function e(e){var r;if(this.unusedWorkers=[],this.runningWorkers=[],this.pthreads=Object.create(null),this.wasmModule=null,this.wasmMemory=null,this.messageEvents=new WeakMap,!e)throw new TypeError("ThreadManager(): options is not provided");this._childThread="childThread"in e&&Boolean(e.childThread),this._childThread?(this._onCreateWorker=void 0,this._reuseWorker=!1,this._beforeLoad=void 0):(this._onCreateWorker=e.onCreateWorker,this._reuseWorker=function(e){var r;if("boolean"==typeof e)return!!e&&{size:0,strict:!1};if("number"==typeof e){if(!(e>=0))throw new RangeError("reuseWorker: size must be a non-negative integer");return{size:e,strict:!1}}if(!e)return!1;var t=null!==(r=Number(e.size))&&void 0!==r?r:0,o=Boolean(e.strict);if(!(t>0)&&o)throw new RangeError("reuseWorker: size must be set to positive integer if strict is set to true");return{size:t,strict:o}}(e.reuseWorker),this._beforeLoad=e.beforeLoad),this.printErr=null!==(r=e.printErr)&&void 0!==r?r:console.error.bind(console)}return Object.defineProperty(e.prototype,"nextWorkerID",{get:function(){return d},enumerable:!1,configurable:!0}),e.prototype.init=function(){this._childThread||this.initMainThread()},e.prototype.initMainThread=function(){this.preparePool()},e.prototype.preparePool=function(){if(this._reuseWorker&&this._reuseWorker.size)for(var e=this._reuseWorker.size;e--;){var r=this.allocateUnusedWorker();t&&(r.once("message",function(){}),r.unref())}},e.prototype.shouldPreloadWorkers=function(){return!this._childThread&&this._reuseWorker&&this._reuseWorker.size>0},e.prototype.loadWasmModuleToAllWorkers=function(){for(var e=this,r=Array(this.unusedWorkers.length),o=function(e){var o=n.unusedWorkers[e];t&&o.ref(),r[e]=n.loadWasmModuleToWorker(o).then(function(e){return t&&o.unref(),e},function(e){throw t&&o.unref(),e})},n=this,i=0;i1){try{A.cleanThread(k,T,!0)}catch(e){}throw function(e){var t,o,n=new Int32Array(e);if(Atomics.load(n,0)<=1)return null;var i=Atomics.load(n,1),a=Atomics.load(n,2),s=Atomics.load(n,3),d=new Uint8Array(e),h=d.slice(16,16+i),u=d.slice(16+i,16+i+a),c=d.slice(16+i+a,16+i+a+s),l=(new TextDecoder).decode(h),f=(new TextDecoder).decode(u),p=(new TextDecoder).decode(c),m=new(null!==(t=globalThis[l])&&void 0!==t?t:"RuntimeError"===l&&null!==(o=r.RuntimeError)&&void 0!==o?o:Error)(f);return Object.defineProperty(m,"stack",{value:p,writable:!0,enumerable:!1,configurable:!0}),m}(g.buffer)}}}catch(e){return Atomics.store(v,0,1),Atomics.store(v,1,6),Atomics.notify(v,1),null==A||A.printErr(e.stack),d?1:(y(o),-6)}return Atomics.store(v,0,0),Atomics.store(v,1,T),Atomics.notify(v,1),A.runningWorkers.push(k),W||k.whenLoaded.catch(function(e){throw delete k.whenLoaded,A.cleanThread(k,T,!0),e}),d?0:(y(o),T)};this.threadSpawn=m}return e.prototype.getImportObject=function(){return{wasi:{"thread-spawn":this.threadSpawn}}},e.prototype.setup=function(e,r,t){null!=t||(t=e.exports.memory),this.wasmInstance=e,this.wasmMemory=t,this.PThread&&this.PThread.setup(r,t)},e.prototype.preloadWorkers=function(){return this.PThread?this.PThread.preloadWorkers():Promise.resolve([])},e.prototype.initialize=function(e,r,t){var o=e.exports;null!=t||(t=o.memory),this.childThread&&(e=c(e,t)),this.setup(e,r,t);var n=this.wasi;if("_start"in o&&"function"==typeof o._start)if(this.childThread){n.start(e);try{n[p(n,"kStarted")]=!1}catch(e){}}else!function(e,r){var t=p(e,["kInstance","kSetMemory"]),o=t[0],n=t[1];e[o]=r,e[n](r.exports.memory)}(n,e);else n.initialize(e);return e},e.prototype.start=function(e,r,t){var o=e.exports;return null!=t||(t=o.memory),this.childThread&&(e=c(e,t)),this.setup(e,r,t),{exitCode:this.wasi.start(e),instance:e}},e.prototype.terminateAllThreads=function(){var e;this.childThread?this.postMessage(a("terminate-all-threads",{})):null===(e=this.PThread)||void 0===e||e.terminateAllThreads()},e}();function p(e,r){var t=Object.getOwnPropertySymbols(e),o=function(e){return function(r){return r.description?r.description===e:r.toString()==="Symbol(".concat(e,")")}};return Array.isArray(r)?r.map(function(e){return t.filter(o(e))[0]}):t.filter(o(r))[0]}var m=function(){function e(e){var r=o(e);if("function"!=typeof r)throw new TypeError("options.postMessage is not a function");this.postMessage=r,this.onLoad=null==e?void 0:e.onLoad,this.onError="function"==typeof(null==e?void 0:e.onError)?e.onError:function(e,r){throw r},this.instance=void 0,this.messagesBeforeLoad=[]}return e.prototype.instantiate=function(e){if("function"==typeof this.onLoad)return this.onLoad(e);throw new Error("ThreadMessageHandler.prototype.instantiate is not implemented")},e.prototype.handle=function(e){var r,t=this;if(null===(r=null==e?void 0:e.data)||void 0===r?void 0:r.__emnapi__){var o=e.data.__emnapi__.type,n=e.data.__emnapi__.payload;try{"load"===o?this._load(n):"start"===o&&this.handleAfterLoad(e,function(){t._start(n)})}catch(e){this.onError(e,o)}}},e.prototype._load=function(e){var r=this;if(void 0===this.instance){var t;try{t=this.instantiate(e)}catch(r){return void this._loaded(r,null,e)}var o=t&&"then"in t?t.then:void 0;"function"==typeof o?o.call(t,function(t){r._loaded(null,t,e)},function(t){r._loaded(t,null,e)}):this._loaded(null,t,e)}},e.prototype._start=function(e){var r=this.instance.exports.wasi_thread_start;if("function"!=typeof r){var t=new TypeError("wasi_thread_start is not exported");throw y(e.sab,2,t),t}var o=this.postMessage,n=e.tid,i=e.arg;y(e.sab,1);try{r(n,i)}catch(t){if("unwind"!==t)throw t;return}o(a("cleanup-thread",{tid:n}))},e.prototype._loaded=function(e,r,t){if(e)throw y(t.sab,2,e),e;if(null==r){var o=new TypeError("onLoad should return an object");throw y(t.sab,2,o),o}var n=r.instance;if(!n){var i=new TypeError('onLoad should return an object which includes "instance"');throw y(t.sab,2,i),i}this.instance=n,(0,this.postMessage)(a("loaded",{}));var s=this.messagesBeforeLoad;this.messagesBeforeLoad=[];for(var d=0;d1&&t){var n=t.name,i=t.message,a=t.stack,s=(new TextEncoder).encode(n),d=(new TextEncoder).encode(i),h=(new TextEncoder).encode(a);Atomics.store(o,1,s.length),Atomics.store(o,2,d.length),Atomics.store(o,3,h.length);var u=new Uint8Array(e);u.set(s,16),u.set(d,16+s.length),u.set(h,16+s.length+d.length)}}(e.buffer,r,t),Atomics.notify(e,0))}e.ThreadManager=h,e.ThreadMessageHandler=m,e.WASIThreads=f,e.createInstanceProxy=c,e.isSharedArrayBuffer=n,e.isTrapError=i}); diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs b/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs deleted file mode 100644 index 7837fc9..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +++ /dev/null @@ -1 +0,0 @@ -const e="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0,t="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node;function r(e){return"function"==typeof(null==e?void 0:e.postMessage)?e.postMessage:"function"==typeof postMessage?postMessage:void 0}function s(e){return"function"==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(e)}function o(t){try{return t instanceof e.RuntimeError}catch(e){return!1}}function n(e,t){return{__emnapi__:{type:e,payload:t}}}function i(e){if(e){if(!s(e.buffer))throw new Error("Multithread features require shared wasm memory. Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, then create WebAssembly.Memory with `shared: true` option")}else if("undefined"==typeof SharedArrayBuffer)throw new Error("Current environment does not support SharedArrayBuffer, threads are not available!")}let a=0;class d{get nextWorkerID(){return a}constructor(e){var t;if(this.unusedWorkers=[],this.runningWorkers=[],this.pthreads=Object.create(null),this.wasmModule=null,this.wasmMemory=null,this.messageEvents=new WeakMap,!e)throw new TypeError("ThreadManager(): options is not provided");this._childThread="childThread"in e&&Boolean(e.childThread),this._childThread?(this._onCreateWorker=void 0,this._reuseWorker=!1,this._beforeLoad=void 0):(this._onCreateWorker=e.onCreateWorker,this._reuseWorker=function(e){var t;if("boolean"==typeof e)return!!e&&{size:0,strict:!1};if("number"==typeof e){if(!(e>=0))throw new RangeError("reuseWorker: size must be a non-negative integer");return{size:e,strict:!1}}if(!e)return!1;const r=null!==(t=Number(e.size))&&void 0!==t?t:0,s=Boolean(e.strict);if(!(r>0)&&s)throw new RangeError("reuseWorker: size must be set to positive integer if strict is set to true");return{size:r,strict:s}}(e.reuseWorker),this._beforeLoad=e.beforeLoad),this.printErr=null!==(t=e.printErr)&&void 0!==t?t:console.error.bind(console)}init(){this._childThread||this.initMainThread()}initMainThread(){this.preparePool()}preparePool(){if(this._reuseWorker&&this._reuseWorker.size){let e=this._reuseWorker.size;for(;e--;){const e=this.allocateUnusedWorker();t&&(e.once("message",()=>{}),e.unref())}}}shouldPreloadWorkers(){return!this._childThread&&this._reuseWorker&&this._reuseWorker.size>0}loadWasmModuleToAllWorkers(){const e=Array(this.unusedWorkers.length);for(let r=0;r(t&&s.unref(),e),e=>{throw t&&s.unref(),e})}return Promise.all(e).catch(e=>{throw this.terminateAllThreads(),e})}preloadWorkers(){return this.shouldPreloadWorkers()?this.loadWasmModuleToAllWorkers():Promise.resolve([])}setup(e,t){this.wasmModule=e,this.wasmMemory=t}markId(e){if(e.__emnapi_tid)return e.__emnapi_tid;const t=a+43;return a=(a+1)%536870869,this.pthreads[t]=e,e.__emnapi_tid=t,t}returnWorkerToPool(e){var r=e.__emnapi_tid;void 0!==r&&delete this.pthreads[r],this.unusedWorkers.push(e),this.runningWorkers.splice(this.runningWorkers.indexOf(e),1),delete e.__emnapi_tid,t&&e.unref()}loadWasmModuleToWorker(e,r){if(e.whenLoaded)return e.whenLoaded;const s=this.printErr,o=this._beforeLoad,a=this;return e.whenLoaded=new Promise((d,h)=>{const l=r=>{if(r.__emnapi__){const s=r.__emnapi__.type,o=r.__emnapi__.payload;"loaded"===s?(e.loaded=!0,t&&!e.__emnapi_tid&&e.unref(),d(e)):"cleanup-thread"===s&&o.tid in this.pthreads&&this.cleanThread(e,o.tid)}};e.onmessage=t=>{l(t.data),this.fireMessageEvent(e,t)},e.onerror=function(t){let r="worker sent an error!";if(void 0!==e.__emnapi_tid&&(r="worker (tid = "+e.__emnapi_tid+") sent an error!"),"message"in t){if(s(r+" "+t.message),-1!==t.message.indexOf("RuntimeError")||-1!==t.message.indexOf("unreachable"))try{a.terminateAllThreads()}catch(e){}}else s(r);throw h(t),t},t&&(e.on("message",function(t){var r,s;null===(s=(r=e).onmessage)||void 0===s||s.call(r,{data:t})}),e.on("error",function(t){var r,s;null===(s=(r=e).onerror)||void 0===s||s.call(r,t)}),e.on("detachedExit",function(){})),"function"==typeof o&&o(e);try{e.postMessage(n("load",{wasmModule:this.wasmModule,wasmMemory:this.wasmMemory,sab:r}))}catch(e){throw i(this.wasmMemory),e}}),e.whenLoaded}allocateUnusedWorker(){const e=this._onCreateWorker;if("function"!=typeof e)throw new TypeError("`options.onCreateWorker` is not provided");const t=e({type:"thread",name:"emnapi-pthread"});return this.unusedWorkers.push(t),t}getNewWorker(e){if(this._reuseWorker){if(0===this.unusedWorkers.length){if(this._reuseWorker.strict&&!t){return void(0,this.printErr)("Tried to spawn a new thread, but the thread pool is exhausted.\nThis might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.")}const r=this.allocateUnusedWorker();this.loadWasmModuleToWorker(r,e)}return this.unusedWorkers.pop()}const r=this.allocateUnusedWorker();return this.loadWasmModuleToWorker(r,e),this.unusedWorkers.pop()}cleanThread(e,t,r){if(!r&&this._reuseWorker)this.returnWorkerToPool(e);else{delete this.pthreads[t];const r=this.runningWorkers.indexOf(e);-1!==r&&this.runningWorkers.splice(r,1),this.terminateWorker(e),delete e.__emnapi_tid}}terminateWorker(e){var t;const r=e.__emnapi_tid;e.terminate(),null===(t=this.messageEvents.get(e))||void 0===t||t.clear(),this.messageEvents.delete(e),e.onmessage=e=>{if(e.data.__emnapi__){(0,this.printErr)('received "'+e.data.__emnapi__.type+'" command from terminated worker: '+r)}}}terminateAllThreads(){for(let e=0;e{null==r||r.delete(t)}}fireMessageEvent(e,t){const r=this.messageEvents.get(e);if(!r)return;const s=this.printErr;r.forEach(e=>{try{e(t)}catch(e){s(e.stack)}})}}const h=Symbol("kIsProxy");function l(e,t){if(e[h])return e;const r=e.exports,s=function(e){const t=["apply","construct","defineProperty","deleteProperty","get","getOwnPropertyDescriptor","getPrototypeOf","has","isExtensible","ownKeys","preventExtensions","set","setPrototypeOf"],r={};for(let s=0;s{},n=()=>0;s.get=function(e,s,i){var a;return"memory"===s?null!==(a="function"==typeof t?t():t)&&void 0!==a?a:Reflect.get(r,s,i):"_initialize"===s?s in r?o:void 0:"_start"===s?s in r?n:void 0:Reflect.get(r,s,i)},s.has=function(e,t){return"memory"===t||Reflect.has(r,t)};const i=new Proxy(Object.create(null),s);return new Proxy(e,{get:(e,t,r)=>"exports"===t?i:t===h||Reflect.get(e,t,r)})}const c=new WeakMap;class u{constructor(s){if(!s)throw new TypeError("WASIThreads(): options is not provided");if(!s.wasi)throw new TypeError("WASIThreads(): options.wasi is not provided");c.set(this,new WeakSet);const a=s.wasi;!function(e,t){const r=c.get(e);if(r.has(t))return;const s=e,n=t.wasiImport;if(n){const e=n.proc_exit;n.proc_exit=function(t){return s.terminateAllThreads(),e.call(this,t)}}if(!s.childThread){const e=t.start;"function"==typeof e&&(t.start=function(t){try{return e.call(this,t)}catch(e){throw o(e)&&s.terminateAllThreads(),e}})}r.add(t)}(this,a),this.wasi=a,this.childThread="childThread"in s&&Boolean(s.childThread),this.PThread=void 0,"threadManager"in s?"function"==typeof s.threadManager?this.PThread=s.threadManager():this.PThread=s.threadManager:this.childThread||(this.PThread=new d(s),this.PThread.init());let h=!1;"waitThreadStart"in s&&(h="number"==typeof s.waitThreadStart?s.waitThreadStart:Boolean(s.waitThreadStart));const l=r(s);if(this.childThread&&"function"!=typeof l)throw new TypeError("options.postMessage is not a function");this.postMessage=l;const u=Boolean(s.wasm64),f=e=>{if(e.data.__emnapi__){const t=e.data.__emnapi__.type,r=e.data.__emnapi__.payload;"spawn-thread"===t?p(r.startArg,r.errorOrTid):"terminate-all-threads"===t&&this.terminateAllThreads()}},p=(r,s)=>{var o;const a=void 0!==s;try{i(this.wasmMemory)}catch(e){if(null===(o=this.PThread)||void 0===o||o.printErr(e.stack),a){const e=new Int32Array(this.wasmMemory.buffer,s,2);return Atomics.store(e,0,1),Atomics.store(e,1,6),Atomics.notify(e,1),1}return-6}if(!a){const e=this.wasmInstance.exports.malloc;if(!(s=u?Number(e(BigInt(8))):e(8)))return-48}const d=this.wasmInstance.exports.free,c=u?e=>{d(BigInt(e))}:d,p=new Int32Array(this.wasmMemory.buffer,s,2);if(Atomics.store(p,0,0),Atomics.store(p,1,0),this.childThread){l(n("spawn-thread",{startArg:r,errorOrTid:s})),Atomics.wait(p,1,0);const e=Atomics.load(p,0),t=Atomics.load(p,1);return a?e:(c(s),e?-t:t)}const m=h||0===h;let w,y,_;m&&(w=new Int32Array(new SharedArrayBuffer(8208)),Atomics.store(w,0,0));const g=this.PThread;try{if(y=g.getNewWorker(w),!y)throw new Error("failed to get new worker");if(g.addMessageEventListener(y,f),_=g.markId(y),t&&y.ref(),y.postMessage(n("start",{tid:_,arg:r,sab:w})),m){if("number"==typeof h){if("timed-out"===Atomics.wait(w,0,0,h)){try{g.cleanThread(y,_,!0)}catch(e){}throw new Error("Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.")}}else Atomics.wait(w,0,0);if(Atomics.load(w,0)>1){try{g.cleanThread(y,_,!0)}catch(e){}throw function(t){var r,s;const o=new Int32Array(t);if(Atomics.load(o,0)<=1)return null;const n=Atomics.load(o,1),i=Atomics.load(o,2),a=Atomics.load(o,3),d=new Uint8Array(t),h=d.slice(16,16+n),l=d.slice(16+n,16+n+i),c=d.slice(16+n+i,16+n+i+a),u=(new TextDecoder).decode(h),f=(new TextDecoder).decode(l),p=(new TextDecoder).decode(c),m=new(null!==(r=globalThis[u])&&void 0!==r?r:"RuntimeError"===u&&null!==(s=e.RuntimeError)&&void 0!==s?s:Error)(f);return Object.defineProperty(m,"stack",{value:p,writable:!0,enumerable:!1,configurable:!0}),m}(w.buffer)}}}catch(e){return Atomics.store(p,0,1),Atomics.store(p,1,6),Atomics.notify(p,1),null==g||g.printErr(e.stack),a?1:(c(s),-6)}return Atomics.store(p,0,0),Atomics.store(p,1,_),Atomics.notify(p,1),g.runningWorkers.push(y),m||y.whenLoaded.catch(e=>{throw delete y.whenLoaded,g.cleanThread(y,_,!0),e}),a?0:(c(s),_)};this.threadSpawn=p}getImportObject(){return{wasi:{"thread-spawn":this.threadSpawn}}}setup(e,t,r){null!=r||(r=e.exports.memory),this.wasmInstance=e,this.wasmMemory=r,this.PThread&&this.PThread.setup(t,r)}preloadWorkers(){return this.PThread?this.PThread.preloadWorkers():Promise.resolve([])}initialize(e,t,r){const s=e.exports;null!=r||(r=s.memory),this.childThread&&(e=l(e,r)),this.setup(e,t,r);const o=this.wasi;if("_start"in s&&"function"==typeof s._start)if(this.childThread){o.start(e);try{o[f(o,"kStarted")]=!1}catch(e){}}else!function(e,t){const[r,s]=f(e,["kInstance","kSetMemory"]);e[r]=t,e[s](t.exports.memory)}(o,e);else o.initialize(e);return e}start(e,t,r){const s=e.exports;null!=r||(r=s.memory),this.childThread&&(e=l(e,r)),this.setup(e,t,r);return{exitCode:this.wasi.start(e),instance:e}}terminateAllThreads(){var e;this.childThread?this.postMessage(n("terminate-all-threads",{})):null===(e=this.PThread)||void 0===e||e.terminateAllThreads()}}function f(e,t){const r=Object.getOwnPropertySymbols(e),s=e=>t=>t.description?t.description===e:t.toString()===`Symbol(${e})`;return Array.isArray(t)?t.map(e=>r.filter(s(e))[0]):r.filter(s(t))[0]}class p{constructor(e){const t=r(e);if("function"!=typeof t)throw new TypeError("options.postMessage is not a function");this.postMessage=t,this.onLoad=null==e?void 0:e.onLoad,this.onError="function"==typeof(null==e?void 0:e.onError)?e.onError:(e,t)=>{throw t},this.instance=void 0,this.messagesBeforeLoad=[]}instantiate(e){if("function"==typeof this.onLoad)return this.onLoad(e);throw new Error("ThreadMessageHandler.prototype.instantiate is not implemented")}handle(e){var t;if(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.__emnapi__){const t=e.data.__emnapi__.type,r=e.data.__emnapi__.payload;try{"load"===t?this._load(r):"start"===t&&this.handleAfterLoad(e,()=>{this._start(r)})}catch(e){this.onError(e,t)}}}_load(e){if(void 0!==this.instance)return;let t;try{t=this.instantiate(e)}catch(t){return void this._loaded(t,null,e)}const r=t&&"then"in t?t.then:void 0;"function"==typeof r?r.call(t,t=>{this._loaded(null,t,e)},t=>{this._loaded(t,null,e)}):this._loaded(null,t,e)}_start(e){const t=this.instance.exports.wasi_thread_start;if("function"!=typeof t){const t=new TypeError("wasi_thread_start is not exported");throw m(e.sab,2,t),t}const r=this.postMessage,s=e.tid,o=e.arg;m(e.sab,1);try{t(s,o)}catch(e){if("unwind"!==e)throw e;return}r(n("cleanup-thread",{tid:s}))}_loaded(e,t,r){if(e)throw m(r.sab,2,e),e;if(null==t){const e=new TypeError("onLoad should return an object");throw m(r.sab,2,e),e}const s=t.instance;if(!s){const e=new TypeError('onLoad should return an object which includes "instance"');throw m(r.sab,2,e),e}this.instance=s;(0,this.postMessage)(n("loaded",{}));const o=this.messagesBeforeLoad;this.messagesBeforeLoad=[];for(let e=0;e1&&r){const t=r.name,o=r.message,n=r.stack,i=(new TextEncoder).encode(t),a=(new TextEncoder).encode(o),d=(new TextEncoder).encode(n);Atomics.store(s,1,i.length),Atomics.store(s,2,a.length),Atomics.store(s,3,d.length);const h=new Uint8Array(e);h.set(i,16),h.set(a,16+i.length),h.set(d,16+i.length+a.length)}}(e.buffer,t,r),Atomics.notify(e,0))}export{d as ThreadManager,p as ThreadMessageHandler,u as WASIThreads,l as createInstanceProxy,s as isSharedArrayBuffer,o as isTrapError}; diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs b/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs deleted file mode 100644 index 43c0758..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +++ /dev/null @@ -1,892 +0,0 @@ -const _WebAssembly = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; -const ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && - typeof process.versions === 'object' && process.versions !== null && - typeof process.versions.node === 'string'; -function getPostMessage(options) { - return typeof (options === null || options === void 0 ? void 0 : options.postMessage) === 'function' - ? options.postMessage - : typeof postMessage === 'function' - ? postMessage - : undefined; -} -function serizeErrorToBuffer(sab, code, error) { - const i32array = new Int32Array(sab); - Atomics.store(i32array, 0, code); - if (code > 1 && error) { - const name = error.name; - const message = error.message; - const stack = error.stack; - const nameBuffer = new TextEncoder().encode(name); - const messageBuffer = new TextEncoder().encode(message); - const stackBuffer = new TextEncoder().encode(stack); - Atomics.store(i32array, 1, nameBuffer.length); - Atomics.store(i32array, 2, messageBuffer.length); - Atomics.store(i32array, 3, stackBuffer.length); - const buffer = new Uint8Array(sab); - buffer.set(nameBuffer, 16); - buffer.set(messageBuffer, 16 + nameBuffer.length); - buffer.set(stackBuffer, 16 + nameBuffer.length + messageBuffer.length); - } -} -function deserizeErrorFromBuffer(sab) { - var _a, _b; - const i32array = new Int32Array(sab); - const status = Atomics.load(i32array, 0); - if (status <= 1) { - return null; - } - const nameLength = Atomics.load(i32array, 1); - const messageLength = Atomics.load(i32array, 2); - const stackLength = Atomics.load(i32array, 3); - const buffer = new Uint8Array(sab); - const nameBuffer = buffer.slice(16, 16 + nameLength); - const messageBuffer = buffer.slice(16 + nameLength, 16 + nameLength + messageLength); - const stackBuffer = buffer.slice(16 + nameLength + messageLength, 16 + nameLength + messageLength + stackLength); - const name = new TextDecoder().decode(nameBuffer); - const message = new TextDecoder().decode(messageBuffer); - const stack = new TextDecoder().decode(stackBuffer); - const ErrorConstructor = (_a = globalThis[name]) !== null && _a !== void 0 ? _a : (name === 'RuntimeError' ? ((_b = _WebAssembly.RuntimeError) !== null && _b !== void 0 ? _b : Error) : Error); - const error = new ErrorConstructor(message); - Object.defineProperty(error, 'stack', { - value: stack, - writable: true, - enumerable: false, - configurable: true - }); - return error; -} -function isSharedArrayBuffer(value) { - return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); -} -function isTrapError(e) { - try { - return e instanceof _WebAssembly.RuntimeError; - } - catch (_) { - return false; - } -} - -function createMessage(type, payload) { - return { - __emnapi__: { - type, - payload - } - }; -} - -const WASI_THREADS_MAX_TID = 0x1FFFFFFF; -function checkSharedWasmMemory(wasmMemory) { - if (wasmMemory) { - if (!isSharedArrayBuffer(wasmMemory.buffer)) { - throw new Error('Multithread features require shared wasm memory. ' + - 'Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, ' + - 'then create WebAssembly.Memory with `shared: true` option'); - } - } - else { - if (typeof SharedArrayBuffer === 'undefined') { - throw new Error('Current environment does not support SharedArrayBuffer, threads are not available!'); - } - } -} -function getReuseWorker(value) { - var _a; - if (typeof value === 'boolean') { - return value ? { size: 0, strict: false } : false; - } - if (typeof value === 'number') { - if (!(value >= 0)) { - throw new RangeError('reuseWorker: size must be a non-negative integer'); - } - return { size: value, strict: false }; - } - if (!value) { - return false; - } - const size = (_a = Number(value.size)) !== null && _a !== void 0 ? _a : 0; - const strict = Boolean(value.strict); - if (!(size > 0) && strict) { - throw new RangeError('reuseWorker: size must be set to positive integer if strict is set to true'); - } - return { size, strict }; -} -let nextWorkerID = 0; -class ThreadManager { - get nextWorkerID() { return nextWorkerID; } - constructor(options) { - var _a; - this.unusedWorkers = []; - this.runningWorkers = []; - this.pthreads = Object.create(null); - this.wasmModule = null; - this.wasmMemory = null; - this.messageEvents = new WeakMap(); - if (!options) { - throw new TypeError('ThreadManager(): options is not provided'); - } - if ('childThread' in options) { - this._childThread = Boolean(options.childThread); - } - else { - this._childThread = false; - } - if (this._childThread) { - this._onCreateWorker = undefined; - this._reuseWorker = false; - this._beforeLoad = undefined; - } - else { - this._onCreateWorker = options.onCreateWorker; - this._reuseWorker = getReuseWorker(options.reuseWorker); - this._beforeLoad = options.beforeLoad; - } - this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console); - } - init() { - if (!this._childThread) { - this.initMainThread(); - } - } - initMainThread() { - this.preparePool(); - } - preparePool() { - if (this._reuseWorker) { - if (this._reuseWorker.size) { - let pthreadPoolSize = this._reuseWorker.size; - while (pthreadPoolSize--) { - const worker = this.allocateUnusedWorker(); - if (ENVIRONMENT_IS_NODE) { - worker.once('message', () => { }); - worker.unref(); - } - } - } - } - } - shouldPreloadWorkers() { - return !this._childThread && this._reuseWorker && this._reuseWorker.size > 0; - } - loadWasmModuleToAllWorkers() { - const promises = Array(this.unusedWorkers.length); - for (let i = 0; i < this.unusedWorkers.length; ++i) { - const worker = this.unusedWorkers[i]; - if (ENVIRONMENT_IS_NODE) - worker.ref(); - promises[i] = this.loadWasmModuleToWorker(worker).then((w) => { - if (ENVIRONMENT_IS_NODE) - worker.unref(); - return w; - }, (e) => { - if (ENVIRONMENT_IS_NODE) - worker.unref(); - throw e; - }); - } - return Promise.all(promises).catch((err) => { - this.terminateAllThreads(); - throw err; - }); - } - preloadWorkers() { - if (this.shouldPreloadWorkers()) { - return this.loadWasmModuleToAllWorkers(); - } - return Promise.resolve([]); - } - setup(wasmModule, wasmMemory) { - this.wasmModule = wasmModule; - this.wasmMemory = wasmMemory; - } - markId(worker) { - if (worker.__emnapi_tid) - return worker.__emnapi_tid; - const tid = nextWorkerID + 43; - nextWorkerID = (nextWorkerID + 1) % (WASI_THREADS_MAX_TID - 42); - this.pthreads[tid] = worker; - worker.__emnapi_tid = tid; - return tid; - } - returnWorkerToPool(worker) { - var tid = worker.__emnapi_tid; - if (tid !== undefined) { - delete this.pthreads[tid]; - } - this.unusedWorkers.push(worker); - this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1); - delete worker.__emnapi_tid; - if (ENVIRONMENT_IS_NODE) { - worker.unref(); - } - } - loadWasmModuleToWorker(worker, sab) { - if (worker.whenLoaded) - return worker.whenLoaded; - const err = this.printErr; - const beforeLoad = this._beforeLoad; - const _this = this; - worker.whenLoaded = new Promise((resolve, reject) => { - const handleError = function (e) { - let message = 'worker sent an error!'; - if (worker.__emnapi_tid !== undefined) { - message = 'worker (tid = ' + worker.__emnapi_tid + ') sent an error!'; - } - if ('message' in e) { - err(message + ' ' + e.message); - if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) { - try { - _this.terminateAllThreads(); - } - catch (_) { } - } - } - else { - err(message); - } - reject(e); - throw e; - }; - const handleMessage = (data) => { - if (data.__emnapi__) { - const type = data.__emnapi__.type; - const payload = data.__emnapi__.payload; - if (type === 'loaded') { - worker.loaded = true; - if (ENVIRONMENT_IS_NODE && !worker.__emnapi_tid) { - worker.unref(); - } - resolve(worker); - } - else if (type === 'cleanup-thread') { - if (payload.tid in this.pthreads) { - this.cleanThread(worker, payload.tid); - } - } - } - }; - worker.onmessage = (e) => { - handleMessage(e.data); - this.fireMessageEvent(worker, e); - }; - worker.onerror = handleError; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', function (data) { - var _a, _b; - (_b = (_a = worker).onmessage) === null || _b === void 0 ? void 0 : _b.call(_a, { - data - }); - }); - worker.on('error', function (e) { - var _a, _b; - (_b = (_a = worker).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, e); - }); - worker.on('detachedExit', function () { }); - } - if (typeof beforeLoad === 'function') { - beforeLoad(worker); - } - try { - worker.postMessage(createMessage('load', { - wasmModule: this.wasmModule, - wasmMemory: this.wasmMemory, - sab - })); - } - catch (err) { - checkSharedWasmMemory(this.wasmMemory); - throw err; - } - }); - return worker.whenLoaded; - } - allocateUnusedWorker() { - const _onCreateWorker = this._onCreateWorker; - if (typeof _onCreateWorker !== 'function') { - throw new TypeError('`options.onCreateWorker` is not provided'); - } - const worker = _onCreateWorker({ type: 'thread', name: 'emnapi-pthread' }); - this.unusedWorkers.push(worker); - return worker; - } - getNewWorker(sab) { - if (this._reuseWorker) { - if (this.unusedWorkers.length === 0) { - if (this._reuseWorker.strict) { - if (!ENVIRONMENT_IS_NODE) { - const err = this.printErr; - err('Tried to spawn a new thread, but the thread pool is exhausted.\n' + - 'This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.'); - return; - } - } - const worker = this.allocateUnusedWorker(); - this.loadWasmModuleToWorker(worker, sab); - } - return this.unusedWorkers.pop(); - } - const worker = this.allocateUnusedWorker(); - this.loadWasmModuleToWorker(worker, sab); - return this.unusedWorkers.pop(); - } - cleanThread(worker, tid, force) { - if (!force && this._reuseWorker) { - this.returnWorkerToPool(worker); - } - else { - delete this.pthreads[tid]; - const index = this.runningWorkers.indexOf(worker); - if (index !== -1) { - this.runningWorkers.splice(index, 1); - } - this.terminateWorker(worker); - delete worker.__emnapi_tid; - } - } - terminateWorker(worker) { - var _a; - const tid = worker.__emnapi_tid; - worker.terminate(); - (_a = this.messageEvents.get(worker)) === null || _a === void 0 ? void 0 : _a.clear(); - this.messageEvents.delete(worker); - worker.onmessage = (e) => { - if (e.data.__emnapi__) { - const err = this.printErr; - err('received "' + e.data.__emnapi__.type + '" command from terminated worker: ' + tid); - } - }; - } - terminateAllThreads() { - for (let i = 0; i < this.runningWorkers.length; ++i) { - this.terminateWorker(this.runningWorkers[i]); - } - for (let i = 0; i < this.unusedWorkers.length; ++i) { - this.terminateWorker(this.unusedWorkers[i]); - } - this.unusedWorkers = []; - this.runningWorkers = []; - this.pthreads = Object.create(null); - this.preparePool(); - } - addMessageEventListener(worker, onMessage) { - let listeners = this.messageEvents.get(worker); - if (!listeners) { - listeners = new Set(); - this.messageEvents.set(worker, listeners); - } - listeners.add(onMessage); - return () => { - listeners === null || listeners === void 0 ? void 0 : listeners.delete(onMessage); - }; - } - fireMessageEvent(worker, e) { - const listeners = this.messageEvents.get(worker); - if (!listeners) - return; - const err = this.printErr; - listeners.forEach((listener) => { - try { - listener(e); - } - catch (e) { - err(e.stack); - } - }); - } -} - -const kIsProxy = Symbol('kIsProxy'); -function createInstanceProxy(instance, memory) { - if (instance[kIsProxy]) - return instance; - const originalExports = instance.exports; - const createHandler = function (target) { - const handlers = [ - 'apply', - 'construct', - 'defineProperty', - 'deleteProperty', - 'get', - 'getOwnPropertyDescriptor', - 'getPrototypeOf', - 'has', - 'isExtensible', - 'ownKeys', - 'preventExtensions', - 'set', - 'setPrototypeOf' - ]; - const handler = {}; - for (let i = 0; i < handlers.length; i++) { - const name = handlers[i]; - handler[name] = function () { - const args = Array.prototype.slice.call(arguments, 1); - args.unshift(target); - return Reflect[name].apply(Reflect, args); - }; - } - return handler; - }; - const handler = createHandler(originalExports); - const _initialize = () => { }; - const _start = () => 0; - handler.get = function (_target, p, receiver) { - var _a; - if (p === 'memory') { - return (_a = (typeof memory === 'function' ? memory() : memory)) !== null && _a !== void 0 ? _a : Reflect.get(originalExports, p, receiver); - } - if (p === '_initialize') { - return p in originalExports ? _initialize : undefined; - } - if (p === '_start') { - return p in originalExports ? _start : undefined; - } - return Reflect.get(originalExports, p, receiver); - }; - handler.has = function (_target, p) { - if (p === 'memory') - return true; - return Reflect.has(originalExports, p); - }; - const exportsProxy = new Proxy(Object.create(null), handler); - return new Proxy(instance, { - get(target, p, receiver) { - if (p === 'exports') { - return exportsProxy; - } - if (p === kIsProxy) { - return true; - } - return Reflect.get(target, p, receiver); - } - }); -} - -const patchedWasiInstances = new WeakMap(); -class WASIThreads { - constructor(options) { - if (!options) { - throw new TypeError('WASIThreads(): options is not provided'); - } - if (!options.wasi) { - throw new TypeError('WASIThreads(): options.wasi is not provided'); - } - patchedWasiInstances.set(this, new WeakSet()); - const wasi = options.wasi; - patchWasiInstance(this, wasi); - this.wasi = wasi; - if ('childThread' in options) { - this.childThread = Boolean(options.childThread); - } - else { - this.childThread = false; - } - this.PThread = undefined; - if ('threadManager' in options) { - if (typeof options.threadManager === 'function') { - this.PThread = options.threadManager(); - } - else { - this.PThread = options.threadManager; - } - } - else { - if (!this.childThread) { - this.PThread = new ThreadManager(options); - this.PThread.init(); - } - } - let waitThreadStart = false; - if ('waitThreadStart' in options) { - waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); - } - const postMessage = getPostMessage(options); - if (this.childThread && typeof postMessage !== 'function') { - throw new TypeError('options.postMessage is not a function'); - } - this.postMessage = postMessage; - const wasm64 = Boolean(options.wasm64); - const onMessage = (e) => { - if (e.data.__emnapi__) { - const type = e.data.__emnapi__.type; - const payload = e.data.__emnapi__.payload; - if (type === 'spawn-thread') { - threadSpawn(payload.startArg, payload.errorOrTid); - } - else if (type === 'terminate-all-threads') { - this.terminateAllThreads(); - } - } - }; - const threadSpawn = (startArg, errorOrTid) => { - var _a; - const EAGAIN = 6; - const isNewABI = errorOrTid !== undefined; - try { - checkSharedWasmMemory(this.wasmMemory); - } - catch (err) { - (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.printErr(err.stack); - if (isNewABI) { - const struct = new Int32Array(this.wasmMemory.buffer, errorOrTid, 2); - Atomics.store(struct, 0, 1); - Atomics.store(struct, 1, EAGAIN); - Atomics.notify(struct, 1); - return 1; - } - else { - return -EAGAIN; - } - } - if (!isNewABI) { - const malloc = this.wasmInstance.exports.malloc; - errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : malloc(8); - if (!errorOrTid) { - return -48; - } - } - const _free = this.wasmInstance.exports.free; - const free = wasm64 ? (ptr) => { _free(BigInt(ptr)); } : _free; - const struct = new Int32Array(this.wasmMemory.buffer, errorOrTid, 2); - Atomics.store(struct, 0, 0); - Atomics.store(struct, 1, 0); - if (this.childThread) { - postMessage(createMessage('spawn-thread', { - startArg, - errorOrTid: errorOrTid - })); - Atomics.wait(struct, 1, 0); - const isError = Atomics.load(struct, 0); - const result = Atomics.load(struct, 1); - if (isNewABI) { - return isError; - } - free(errorOrTid); - return isError ? -result : result; - } - const shouldWait = waitThreadStart || (waitThreadStart === 0); - let sab; - if (shouldWait) { - sab = new Int32Array(new SharedArrayBuffer(16 + 8192)); - Atomics.store(sab, 0, 0); - } - let worker; - let tid; - const PThread = this.PThread; - try { - worker = PThread.getNewWorker(sab); - if (!worker) { - throw new Error('failed to get new worker'); - } - PThread.addMessageEventListener(worker, onMessage); - tid = PThread.markId(worker); - if (ENVIRONMENT_IS_NODE) { - worker.ref(); - } - worker.postMessage(createMessage('start', { - tid, - arg: startArg, - sab - })); - if (shouldWait) { - if (typeof waitThreadStart === 'number') { - const waitResult = Atomics.wait(sab, 0, 0, waitThreadStart); - if (waitResult === 'timed-out') { - try { - PThread.cleanThread(worker, tid, true); - } - catch (_) { } - throw new Error('Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.'); - } - } - else { - Atomics.wait(sab, 0, 0); - } - const r = Atomics.load(sab, 0); - if (r > 1) { - try { - PThread.cleanThread(worker, tid, true); - } - catch (_) { } - throw deserizeErrorFromBuffer(sab.buffer); - } - } - } - catch (e) { - Atomics.store(struct, 0, 1); - Atomics.store(struct, 1, EAGAIN); - Atomics.notify(struct, 1); - PThread === null || PThread === void 0 ? void 0 : PThread.printErr(e.stack); - if (isNewABI) { - return 1; - } - free(errorOrTid); - return -EAGAIN; - } - Atomics.store(struct, 0, 0); - Atomics.store(struct, 1, tid); - Atomics.notify(struct, 1); - PThread.runningWorkers.push(worker); - if (!shouldWait) { - worker.whenLoaded.catch((err) => { - delete worker.whenLoaded; - PThread.cleanThread(worker, tid, true); - throw err; - }); - } - if (isNewABI) { - return 0; - } - free(errorOrTid); - return tid; - }; - this.threadSpawn = threadSpawn; - } - getImportObject() { - return { - wasi: { - 'thread-spawn': this.threadSpawn - } - }; - } - setup(wasmInstance, wasmModule, wasmMemory) { - wasmMemory !== null && wasmMemory !== void 0 ? wasmMemory : (wasmMemory = wasmInstance.exports.memory); - this.wasmInstance = wasmInstance; - this.wasmMemory = wasmMemory; - if (this.PThread) { - this.PThread.setup(wasmModule, wasmMemory); - } - } - preloadWorkers() { - if (this.PThread) { - return this.PThread.preloadWorkers(); - } - return Promise.resolve([]); - } - initialize(instance, module, memory) { - const exports = instance.exports; - memory !== null && memory !== void 0 ? memory : (memory = exports.memory); - if (this.childThread) { - instance = createInstanceProxy(instance, memory); - } - this.setup(instance, module, memory); - const wasi = this.wasi; - if (('_start' in exports) && (typeof exports._start === 'function')) { - if (this.childThread) { - wasi.start(instance); - try { - const kStarted = getWasiSymbol(wasi, 'kStarted'); - wasi[kStarted] = false; - } - catch (_) { } - } - else { - setupInstance(wasi, instance); - } - } - else { - wasi.initialize(instance); - } - return instance; - } - start(instance, module, memory) { - const exports = instance.exports; - memory !== null && memory !== void 0 ? memory : (memory = exports.memory); - if (this.childThread) { - instance = createInstanceProxy(instance, memory); - } - this.setup(instance, module, memory); - const exitCode = this.wasi.start(instance); - return { exitCode, instance }; - } - terminateAllThreads() { - var _a; - if (!this.childThread) { - (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.terminateAllThreads(); - } - else { - this.postMessage(createMessage('terminate-all-threads', {})); - } - } -} -function patchWasiInstance(wasiThreads, wasi) { - const patched = patchedWasiInstances.get(wasiThreads); - if (patched.has(wasi)) { - return; - } - const _this = wasiThreads; - const wasiImport = wasi.wasiImport; - if (wasiImport) { - const proc_exit = wasiImport.proc_exit; - wasiImport.proc_exit = function (code) { - _this.terminateAllThreads(); - return proc_exit.call(this, code); - }; - } - if (!_this.childThread) { - const start = wasi.start; - if (typeof start === 'function') { - wasi.start = function (instance) { - try { - return start.call(this, instance); - } - catch (err) { - if (isTrapError(err)) { - _this.terminateAllThreads(); - } - throw err; - } - }; - } - } - patched.add(wasi); -} -function getWasiSymbol(wasi, description) { - const symbols = Object.getOwnPropertySymbols(wasi); - const selectDescription = (description) => (s) => { - if (s.description) { - return s.description === description; - } - return s.toString() === `Symbol(${description})`; - }; - if (Array.isArray(description)) { - return description.map(d => symbols.filter(selectDescription(d))[0]); - } - return symbols.filter(selectDescription(description))[0]; -} -function setupInstance(wasi, instance) { - const [kInstance, kSetMemory] = getWasiSymbol(wasi, ['kInstance', 'kSetMemory']); - wasi[kInstance] = instance; - wasi[kSetMemory](instance.exports.memory); -} - -class ThreadMessageHandler { - constructor(options) { - const postMsg = getPostMessage(options); - if (typeof postMsg !== 'function') { - throw new TypeError('options.postMessage is not a function'); - } - this.postMessage = postMsg; - this.onLoad = options === null || options === void 0 ? void 0 : options.onLoad; - this.onError = typeof (options === null || options === void 0 ? void 0 : options.onError) === 'function' ? options.onError : (_type, err) => { throw err; }; - this.instance = undefined; - this.messagesBeforeLoad = []; - } - instantiate(data) { - if (typeof this.onLoad === 'function') { - return this.onLoad(data); - } - throw new Error('ThreadMessageHandler.prototype.instantiate is not implemented'); - } - handle(e) { - var _a; - if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { - const type = e.data.__emnapi__.type; - const payload = e.data.__emnapi__.payload; - try { - if (type === 'load') { - this._load(payload); - } - else if (type === 'start') { - this.handleAfterLoad(e, () => { - this._start(payload); - }); - } - } - catch (err) { - this.onError(err, type); - } - } - } - _load(payload) { - if (this.instance !== undefined) - return; - let source; - try { - source = this.instantiate(payload); - } - catch (err) { - this._loaded(err, null, payload); - return; - } - const then = source && 'then' in source ? source.then : undefined; - if (typeof then === 'function') { - then.call(source, (source) => { this._loaded(null, source, payload); }, (err) => { this._loaded(err, null, payload); }); - } - else { - this._loaded(null, source, payload); - } - } - _start(payload) { - const wasi_thread_start = this.instance.exports.wasi_thread_start; - if (typeof wasi_thread_start !== 'function') { - const err = new TypeError('wasi_thread_start is not exported'); - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - const postMessage = this.postMessage; - const tid = payload.tid; - const startArg = payload.arg; - notifyPthreadCreateResult(payload.sab, 1); - try { - wasi_thread_start(tid, startArg); - } - catch (err) { - if (err !== 'unwind') { - throw err; - } - else { - return; - } - } - postMessage(createMessage('cleanup-thread', { tid })); - } - _loaded(err, source, payload) { - if (err) { - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - if (source == null) { - const err = new TypeError('onLoad should return an object'); - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - const instance = source.instance; - if (!instance) { - const err = new TypeError('onLoad should return an object which includes "instance"'); - notifyPthreadCreateResult(payload.sab, 2, err); - throw err; - } - this.instance = instance; - const postMessage = this.postMessage; - postMessage(createMessage('loaded', {})); - const messages = this.messagesBeforeLoad; - this.messagesBeforeLoad = []; - for (let i = 0; i < messages.length; i++) { - const data = messages[i]; - this.handle({ data }); - } - } - handleAfterLoad(e, f) { - if (this.instance !== undefined) { - f.call(this, e); - } - else { - this.messagesBeforeLoad.push(e.data); - } - } -} -function notifyPthreadCreateResult(sab, result, error) { - if (sab) { - serizeErrorToBuffer(sab.buffer, result, error); - Atomics.notify(sab, 0); - } -} - -export { ThreadManager, ThreadMessageHandler, WASIThreads, createInstanceProxy, isSharedArrayBuffer, isTrapError }; diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/index.js b/sdks/nodejs/node_modules/@emnapi/wasi-threads/index.js deleted file mode 100644 index 7e6eabd..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/index.js +++ /dev/null @@ -1,5 +0,0 @@ -if (typeof process !== 'undefined' && process.env.NODE_ENV === 'production') { - module.exports = require('./dist/wasi-threads.cjs.min.js') -} else { - module.exports = require('./dist/wasi-threads.cjs.js') -} diff --git a/sdks/nodejs/node_modules/@emnapi/wasi-threads/package.json b/sdks/nodejs/node_modules/@emnapi/wasi-threads/package.json deleted file mode 100644 index 7742e90..0000000 --- a/sdks/nodejs/node_modules/@emnapi/wasi-threads/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "@emnapi/wasi-threads", - "version": "1.1.0", - "description": "WASI threads proposal implementation in JavaScript", - "main": "index.js", - "module": "./dist/wasi-threads.esm-bundler.js", - "types": "./dist/wasi-threads.d.ts", - "sideEffects": false, - "exports": { - ".": { - "types": { - "module": "./dist/wasi-threads.d.ts", - "import": "./dist/wasi-threads.d.mts", - "default": "./dist/wasi-threads.d.ts" - }, - "module": "./dist/wasi-threads.esm-bundler.js", - "import": "./dist/wasi-threads.mjs", - "default": "./index.js" - }, - "./dist/wasi-threads.cjs.min": { - "types": "./dist/wasi-threads.d.ts", - "default": "./dist/wasi-threads.cjs.min.js" - }, - "./dist/wasi-threads.min.mjs": { - "types": "./dist/wasi-threads.d.mts", - "default": "./dist/wasi-threads.min.mjs" - } - }, - "dependencies": { - "tslib": "^2.4.0" - }, - "scripts": { - "build": "node ./script/build.js", - "build:test": "node ./test/build.js", - "test": "node ./test/index.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/toyobayashi/emnapi.git" - }, - "author": "toyobayashi", - "license": "MIT", - "bugs": { - "url": "https://github.com/toyobayashi/emnapi/issues" - }, - "homepage": "https://github.com/toyobayashi/emnapi#readme", - "publishConfig": { - "access": "public" - } -} diff --git a/sdks/nodejs/node_modules/@inquirer/ansi/LICENSE b/sdks/nodejs/node_modules/@inquirer/ansi/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/ansi/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/ansi/README.md b/sdks/nodejs/node_modules/@inquirer/ansi/README.md deleted file mode 100644 index ba2e266..0000000 --- a/sdks/nodejs/node_modules/@inquirer/ansi/README.md +++ /dev/null @@ -1,89 +0,0 @@ -# @inquirer/ansi - -A lightweight package providing ANSI escape sequences for terminal cursor manipulation and screen clearing. - -# Installation - - - - - - - - - - -
npmyarn
- -```sh -npm install @inquirer/ansi -``` - - - -```sh -yarn add @inquirer/ansi -``` - -
- -## Usage - -```js -import { - cursorUp, - cursorDown, - cursorTo, - cursorLeft, - cursorHide, - cursorShow, - eraseLines, -} from '@inquirer/ansi'; - -// Move cursor up 3 lines -process.stdout.write(cursorUp(3)); - -// Move cursor to specific position (x: 10, y: 5) -process.stdout.write(cursorTo(10, 5)); - -// Hide/show cursor -process.stdout.write(cursorHide); -process.stdout.write(cursorShow); - -// Clear 5 lines -process.stdout.write(eraseLines(5)); -``` - -Or when used inside an inquirer prompt: - -```js -import { cursorHide } from '@inquirer/ansi'; -import { createPrompt } from '@inquirer/core'; - -export default createPrompt((config, done: (value: void) => void) => { - return `Choose an option${cursorHide}`; -}); -``` - -## API - -### Cursor Movement - -- **`cursorUp(count?: number)`** - Move cursor up by `count` lines (default: 1) -- **`cursorDown(count?: number)`** - Move cursor down by `count` lines (default: 1) -- **`cursorTo(x: number, y?: number)`** - Move cursor to position (x, y). If y is omitted, only moves horizontally -- **`cursorLeft`** - Move cursor to beginning of line - -### Cursor Visibility - -- **`cursorHide`** - Hide the cursor -- **`cursorShow`** - Show the cursor - -### Screen Manipulation - -- **`eraseLines(count: number)`** - Clear `count` lines and position cursor at the beginning of the first cleared line - -# License - -Copyright (c) 2025 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/ansi/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/ansi/dist/index.d.ts deleted file mode 100644 index f607ad6..0000000 --- a/sdks/nodejs/node_modules/@inquirer/ansi/dist/index.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** Move cursor to first column */ -export declare const cursorLeft: string; -/** Hide the cursor */ -export declare const cursorHide: string; -/** Show the cursor */ -export declare const cursorShow: string; -/** Move cursor up by count rows */ -export declare const cursorUp: (rows?: number) => string; -/** Move cursor down by count rows */ -export declare const cursorDown: (rows?: number) => string; -/** Move cursor to position (x, y) */ -export declare const cursorTo: (x: number, y?: number) => string; -/** Erase the specified number of lines above the cursor */ -export declare const eraseLines: (lines: number) => string; diff --git a/sdks/nodejs/node_modules/@inquirer/ansi/dist/index.js b/sdks/nodejs/node_modules/@inquirer/ansi/dist/index.js deleted file mode 100644 index 2e69a44..0000000 --- a/sdks/nodejs/node_modules/@inquirer/ansi/dist/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ESC = '\u001B['; -/** Move cursor to first column */ -export const cursorLeft = ESC + 'G'; -/** Hide the cursor */ -export const cursorHide = ESC + '?25l'; -/** Show the cursor */ -export const cursorShow = ESC + '?25h'; -/** Move cursor up by count rows */ -export const cursorUp = (rows = 1) => (rows > 0 ? `${ESC}${rows}A` : ''); -/** Move cursor down by count rows */ -export const cursorDown = (rows = 1) => rows > 0 ? `${ESC}${rows}B` : ''; -/** Move cursor to position (x, y) */ -export const cursorTo = (x, y) => { - if (typeof y === 'number' && !Number.isNaN(y)) { - return `${ESC}${y + 1};${x + 1}H`; - } - return `${ESC}${x + 1}G`; -}; -const eraseLine = ESC + '2K'; -/** Erase the specified number of lines above the cursor */ -export const eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : ''; diff --git a/sdks/nodejs/node_modules/@inquirer/ansi/package.json b/sdks/nodejs/node_modules/@inquirer/ansi/package.json deleted file mode 100644 index 3044cbc..0000000 --- a/sdks/nodejs/node_modules/@inquirer/ansi/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "@inquirer/ansi", - "version": "2.0.3", - "keywords": [ - "ansi", - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "ui", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/ansi/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "devDependencies": { - "typescript": "^5.9.3" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "99d00a9adc53be8b7edf5926b2ec4ba0b792f68f" -} diff --git a/sdks/nodejs/node_modules/@inquirer/checkbox/LICENSE b/sdks/nodejs/node_modules/@inquirer/checkbox/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/checkbox/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/checkbox/README.md b/sdks/nodejs/node_modules/@inquirer/checkbox/README.md deleted file mode 100644 index e182d63..0000000 --- a/sdks/nodejs/node_modules/@inquirer/checkbox/README.md +++ /dev/null @@ -1,188 +0,0 @@ -# `@inquirer/checkbox` - -Simple interactive command line prompt to display a list of checkboxes (multi select). - -![Checkbox prompt](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/checkbox.svg) - -# Installation - - - - - - - - - - - - - - - - - -
npmyarn
- -```sh -npm install @inquirer/prompts -``` - - - -```sh -yarn add @inquirer/prompts -``` - -
Or
- -```sh -npm install @inquirer/checkbox -``` - - - -```sh -yarn add @inquirer/checkbox -``` - -
- -# Usage - -```js -import { checkbox, Separator } from '@inquirer/prompts'; -// Or -// import checkbox, { Separator } from '@inquirer/checkbox'; - -const answer = await checkbox({ - message: 'Select a package manager', - choices: [ - { name: 'npm', value: 'npm' }, - { name: 'yarn', value: 'yarn' }, - new Separator(), - { name: 'pnpm', value: 'pnpm', disabled: true }, - { - name: 'pnpm', - value: 'pnpm', - disabled: '(pnpm is not available)', - }, - ], -}); -``` - -## Options - -| Property | Type | Required | Description | -| --------- | --------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| message | `string` | yes | The question to ask | -| choices | `Choice[]` | yes | List of the available choices. | -| pageSize | `number` | no | By default, lists of choice longer than 7 will be paginated. Use this option to control how many choices will appear on the screen at once. | -| loop | `boolean` | no | Defaults to `true`. When set to `false`, the cursor will be constrained to the top and bottom of the choice list without looping. | -| required | `boolean` | no | When set to `true`, ensures at least one choice must be selected. | -| validate | `async (Choice[]) => boolean \| string` | no | On submit, validate the choices. When returning a string, it'll be used as the error message displayed to the user. Note: returning a rejected promise, we'll assume a code error happened and crash. | -| shortcuts | [See Shortcuts](#Shortcuts) | no | Customize shortcut keys for `all` and `invert`. | -| theme | [See Theming](#Theming) | no | Customize look of the prompt. | - -`Separator` objects can be used in the `choices` array to render non-selectable lines in the choice list. By default it'll render a line, but you can provide the text as argument (`new Separator('-- Dependencies --')`). This option is often used to add labels to groups within long list of options. - -### `Choice` object - -The `Choice` object is typed as - -```ts -type Choice = { - value: Value; - name?: string; - checkedName?: string; - description?: string; - short?: string; - checked?: boolean; - disabled?: boolean | string; -}; -``` - -Here's each property: - -- `value`: The value is what will be returned by `await checkbox()`. -- `name`: This is the string displayed in the choice list. -- `checkedName`: Alternative `name` (or format) displayed when the choice is checked. -- `description`: Option for a longer description string that'll appear under the list when the cursor highlight a given choice. -- `short`: Once the prompt is done (press enter), we'll use `short` if defined to render next to the question. By default we'll use `name`. -- `checked`: If `true`, the option will be checked by default. -- `disabled`: Disallow the option from being selected. If `disabled` is a string, it'll be used as a help tip explaining why the choice isn't available. - -Also note the `choices` array can contain `Separator`s to help organize long lists. - -`choices` can also be an array of string, in which case the string will be used both as the `value` and the `name`. - -## Shortcuts - -You can customize the shortcut keys for `all` and `invert` or disable them by setting them to `null`. - -```ts -type Shortcuts = { - all?: string | null; // default: 'a' - invert?: string | null; // default: 'i' -}; -``` - -## Theming - -You can theme a prompt by passing a `theme` object option. The theme object only need to includes the keys you wish to modify, we'll fallback on the defaults for the rest. - -```ts -type Theme = { - prefix: string | { idle: string; done: string }; - spinner: { - interval: number; - frames: string[]; - }; - style: { - answer: (text: string) => string; - message: (text: string, status: 'idle' | 'done' | 'loading') => string; - error: (text: string) => string; - defaultAnswer: (text: string) => string; - help: (text: string) => string; - highlight: (text: string) => string; - key: (text: string) => string; - disabledChoice: (text: string) => string; - description: (text: string) => string; - renderSelectedChoices: ( - selectedChoices: ReadonlyArray>, - allChoices: ReadonlyArray | Separator>, - ) => string; - keysHelpTip: (keys: [key: string, action: string][]) => string | undefined; - }; - icon: { - checked: string; - unchecked: string; - cursor: string; - }; -}; -``` - -### `theme.style.keysHelpTip` - -This function allows you to customize the keyboard shortcuts help tip displayed below the prompt. It receives an array of key-action pairs and should return a formatted string. You can also hook here to localize the labels to different languages. - -It can also returns `undefined` to hide the help tip entirely. - -```js -theme: { - style: { - keysHelpTip: (keys) => { - // Return undefined to hide the help tip completely - return undefined; - - // Or customize the formatting. Or localize the labels. - return keys.map(([key, action]) => `${key}: ${action}`).join(' | '); - }; - } -} -``` - -# License - -Copyright (c) 2023 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/checkbox/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/checkbox/dist/index.d.ts deleted file mode 100644 index 691e07b..0000000 --- a/sdks/nodejs/node_modules/@inquirer/checkbox/dist/index.d.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { Separator, type Theme, type Keybinding } from '@inquirer/core'; -import type { PartialDeep } from '@inquirer/type'; -type CheckboxTheme = { - icon: { - checked: string; - unchecked: string; - cursor: string; - disabledChecked: string; - disabledUnchecked: string; - }; - style: { - disabled: (text: string) => string; - renderSelectedChoices: (selectedChoices: ReadonlyArray>, allChoices: ReadonlyArray | Separator>) => string; - description: (text: string) => string; - keysHelpTip: (keys: [key: string, action: string][]) => string | undefined; - }; - i18n: { - disabledError: string; - }; - keybindings: ReadonlyArray; -}; -type CheckboxShortcuts = { - all?: string | null; - invert?: string | null; -}; -type Choice = { - value: Value; - name?: string; - checkedName?: string; - description?: string; - short?: string; - disabled?: boolean | string; - checked?: boolean; - type?: never; -}; -type NormalizedChoice = { - value: Value; - name: string; - checkedName: string; - description?: string; - short: string; - disabled: boolean | string; - checked: boolean; -}; -declare const _default: (config: { - message: string; - prefix?: string | undefined; - pageSize?: number | undefined; - choices: readonly (string | Separator)[] | readonly (Separator | Choice)[]; - loop?: boolean | undefined; - required?: boolean | undefined; - validate?: ((choices: readonly NormalizedChoice[]) => boolean | string | Promise) | undefined; - theme?: PartialDeep> | undefined; - shortcuts?: CheckboxShortcuts | undefined; -}, context?: import("@inquirer/type").Context) => Promise; -export default _default; -export { Separator } from '@inquirer/core'; diff --git a/sdks/nodejs/node_modules/@inquirer/checkbox/dist/index.js b/sdks/nodejs/node_modules/@inquirer/checkbox/dist/index.js deleted file mode 100644 index 724bf8b..0000000 --- a/sdks/nodejs/node_modules/@inquirer/checkbox/dist/index.js +++ /dev/null @@ -1,210 +0,0 @@ -import { createPrompt, useState, useKeypress, usePrefix, usePagination, useMemo, makeTheme, isUpKey, isDownKey, isSpaceKey, isNumberKey, isEnterKey, ValidationError, Separator, } from '@inquirer/core'; -import { cursorHide } from '@inquirer/ansi'; -import { styleText } from 'node:util'; -import figures from '@inquirer/figures'; -const checkboxTheme = { - icon: { - checked: styleText('green', figures.circleFilled), - unchecked: figures.circle, - cursor: figures.pointer, - disabledChecked: styleText('green', figures.circleDouble), - disabledUnchecked: '-', - }, - style: { - disabled: (text) => styleText('dim', text), - renderSelectedChoices: (selectedChoices) => selectedChoices.map((choice) => choice.short).join(', '), - description: (text) => styleText('cyan', text), - keysHelpTip: (keys) => keys - .map(([key, action]) => `${styleText('bold', key)} ${styleText('dim', action)}`) - .join(styleText('dim', ' • ')), - }, - i18n: { disabledError: 'This option is disabled and cannot be toggled.' }, - keybindings: [], -}; -function isSelectable(item) { - return !Separator.isSeparator(item) && !item.disabled; -} -function isNavigable(item) { - return !Separator.isSeparator(item); -} -function isChecked(item) { - return !Separator.isSeparator(item) && item.checked; -} -function toggle(item) { - return isSelectable(item) ? { ...item, checked: !item.checked } : item; -} -function check(checked) { - return function (item) { - return isSelectable(item) ? { ...item, checked } : item; - }; -} -function normalizeChoices(choices) { - return choices.map((choice) => { - if (Separator.isSeparator(choice)) - return choice; - if (typeof choice === 'string') { - return { - value: choice, - name: choice, - short: choice, - checkedName: choice, - disabled: false, - checked: false, - }; - } - const name = choice.name ?? String(choice.value); - const normalizedChoice = { - value: choice.value, - name, - short: choice.short ?? name, - checkedName: choice.checkedName ?? name, - disabled: choice.disabled ?? false, - checked: choice.checked ?? false, - }; - if (choice.description) { - normalizedChoice.description = choice.description; - } - return normalizedChoice; - }); -} -export default createPrompt((config, done) => { - const { pageSize = 7, loop = true, required, validate = () => true } = config; - const shortcuts = { all: 'a', invert: 'i', ...config.shortcuts }; - const theme = makeTheme(checkboxTheme, config.theme); - const { keybindings } = theme; - const [status, setStatus] = useState('idle'); - const prefix = usePrefix({ status, theme }); - const [items, setItems] = useState(normalizeChoices(config.choices)); - const bounds = useMemo(() => { - const first = items.findIndex(isNavigable); - const last = items.findLastIndex(isNavigable); - if (first === -1) { - throw new ValidationError('[checkbox prompt] No selectable choices. All choices are disabled.'); - } - return { first, last }; - }, [items]); - const [active, setActive] = useState(bounds.first); - const [errorMsg, setError] = useState(); - useKeypress(async (key) => { - if (isEnterKey(key)) { - const selection = items.filter(isChecked); - const isValid = await validate([...selection]); - if (required && !selection.length) { - setError('At least one choice must be selected'); - } - else if (isValid === true) { - setStatus('done'); - done(selection.map((choice) => choice.value)); - } - else { - setError(isValid || 'You must select a valid value'); - } - } - else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) { - if (errorMsg) { - setError(undefined); - } - if (loop || - (isUpKey(key, keybindings) && active !== bounds.first) || - (isDownKey(key, keybindings) && active !== bounds.last)) { - const offset = isUpKey(key, keybindings) ? -1 : 1; - let next = active; - do { - next = (next + offset + items.length) % items.length; - } while (!isNavigable(items[next])); - setActive(next); - } - } - else if (isSpaceKey(key)) { - const activeItem = items[active]; - if (activeItem && !Separator.isSeparator(activeItem)) { - if (activeItem.disabled) { - setError(theme.i18n.disabledError); - } - else { - setError(undefined); - setItems(items.map((choice, i) => (i === active ? toggle(choice) : choice))); - } - } - } - else if (key.name === shortcuts.all) { - const selectAll = items.some((choice) => isSelectable(choice) && !choice.checked); - setItems(items.map(check(selectAll))); - } - else if (key.name === shortcuts.invert) { - setItems(items.map(toggle)); - } - else if (isNumberKey(key)) { - const selectedIndex = Number(key.name) - 1; - // Find the nth item (ignoring separators) - let selectableIndex = -1; - const position = items.findIndex((item) => { - if (Separator.isSeparator(item)) - return false; - selectableIndex++; - return selectableIndex === selectedIndex; - }); - const selectedItem = items[position]; - if (selectedItem && isSelectable(selectedItem)) { - setActive(position); - setItems(items.map((choice, i) => (i === position ? toggle(choice) : choice))); - } - } - }); - const message = theme.style.message(config.message, status); - let description; - const page = usePagination({ - items, - active, - renderItem({ item, isActive }) { - if (Separator.isSeparator(item)) { - return ` ${item.separator}`; - } - const cursor = isActive ? theme.icon.cursor : ' '; - if (item.disabled) { - const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)'; - const checkbox = item.checked - ? theme.icon.disabledChecked - : theme.icon.disabledUnchecked; - return theme.style.disabled(`${cursor}${checkbox} ${item.name} ${disabledLabel}`); - } - if (isActive) { - description = item.description; - } - const checkbox = item.checked ? theme.icon.checked : theme.icon.unchecked; - const name = item.checked ? item.checkedName : item.name; - const color = isActive ? theme.style.highlight : (x) => x; - return color(`${cursor}${checkbox} ${name}`); - }, - pageSize, - loop, - }); - if (status === 'done') { - const selection = items.filter(isChecked); - const answer = theme.style.answer(theme.style.renderSelectedChoices(selection, items)); - return [prefix, message, answer].filter(Boolean).join(' '); - } - const keys = [ - ['↑↓', 'navigate'], - ['space', 'select'], - ]; - if (shortcuts.all) - keys.push([shortcuts.all, 'all']); - if (shortcuts.invert) - keys.push([shortcuts.invert, 'invert']); - keys.push(['⏎', 'submit']); - const helpLine = theme.style.keysHelpTip(keys); - const lines = [ - [prefix, message].filter(Boolean).join(' '), - page, - ' ', - description ? theme.style.description(description) : '', - errorMsg ? theme.style.error(errorMsg) : '', - helpLine, - ] - .filter(Boolean) - .join('\n') - .trimEnd(); - return `${lines}${cursorHide}`; -}); -export { Separator } from '@inquirer/core'; diff --git a/sdks/nodejs/node_modules/@inquirer/checkbox/package.json b/sdks/nodejs/node_modules/@inquirer/checkbox/package.json deleted file mode 100644 index 6ff1162..0000000 --- a/sdks/nodejs/node_modules/@inquirer/checkbox/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "name": "@inquirer/checkbox", - "version": "5.1.0", - "description": "Inquirer checkbox prompt", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "ui", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/checkbox/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "dependencies": { - "@inquirer/ansi": "^2.0.3", - "@inquirer/core": "^11.1.5", - "@inquirer/figures": "^2.0.3", - "@inquirer/type": "^4.0.3" - }, - "devDependencies": { - "@inquirer/testing": "^3.3.0", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "526eca2e64853510821ffd457561840ec0cbfb93" -} diff --git a/sdks/nodejs/node_modules/@inquirer/confirm/LICENSE b/sdks/nodejs/node_modules/@inquirer/confirm/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/confirm/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/confirm/README.md b/sdks/nodejs/node_modules/@inquirer/confirm/README.md deleted file mode 100644 index fe2e5f0..0000000 --- a/sdks/nodejs/node_modules/@inquirer/confirm/README.md +++ /dev/null @@ -1,92 +0,0 @@ -# `@inquirer/confirm` - -Simple interactive command line prompt to gather boolean input from users. - -![Confirm prompt](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/confirm.svg) - -# Installation - - - - - - - - - - - - - - - - - -
npmyarn
- -```sh -npm install @inquirer/prompts -``` - - - -```sh -yarn add @inquirer/prompts -``` - -
Or
- -```sh -npm install @inquirer/confirm -``` - - - -```sh -yarn add @inquirer/confirm -``` - -
- -# Usage - -```js -import { confirm } from '@inquirer/prompts'; -// Or -// import confirm from '@inquirer/confirm'; - -const answer = await confirm({ message: 'Continue?' }); -``` - -## Options - -| Property | Type | Required | Description | -| ----------- | ----------------------- | -------- | ------------------------------------------------------- | -| message | `string` | yes | The question to ask | -| default | `boolean` | no | Default answer (true or false) | -| transformer | `(boolean) => string` | no | Transform the prompt printed message to a custom string | -| theme | [See Theming](#Theming) | no | Customize look of the prompt. | - -## Theming - -You can theme a prompt by passing a `theme` object option. The theme object only need to includes the keys you wish to modify, we'll fallback on the defaults for the rest. - -```ts -type Theme = { - prefix: string | { idle: string; done: string }; - spinner: { - interval: number; - frames: string[]; - }; - style: { - answer: (text: string) => string; - message: (text: string, status: 'idle' | 'done' | 'loading') => string; - defaultAnswer: (text: string) => string; - }; -}; -``` - -# License - -Copyright (c) 2023 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/confirm/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/confirm/dist/index.d.ts deleted file mode 100644 index d3d323a..0000000 --- a/sdks/nodejs/node_modules/@inquirer/confirm/dist/index.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { type Theme } from '@inquirer/core'; -import type { PartialDeep } from '@inquirer/type'; -type ConfirmConfig = { - message: string; - default?: boolean; - transformer?: (value: boolean) => string; - theme?: PartialDeep; -}; -declare const _default: import("@inquirer/type").Prompt; -export default _default; diff --git a/sdks/nodejs/node_modules/@inquirer/confirm/dist/index.js b/sdks/nodejs/node_modules/@inquirer/confirm/dist/index.js deleted file mode 100644 index 44f3a5f..0000000 --- a/sdks/nodejs/node_modules/@inquirer/confirm/dist/index.js +++ /dev/null @@ -1,48 +0,0 @@ -import { createPrompt, useState, useKeypress, isEnterKey, isTabKey, usePrefix, makeTheme, } from '@inquirer/core'; -function getBooleanValue(value, defaultValue) { - let answer = defaultValue !== false; - if (/^(y|yes)/i.test(value)) - answer = true; - else if (/^(n|no)/i.test(value)) - answer = false; - return answer; -} -function boolToString(value) { - return value ? 'Yes' : 'No'; -} -export default createPrompt((config, done) => { - const { transformer = boolToString } = config; - const [status, setStatus] = useState('idle'); - const [value, setValue] = useState(''); - const theme = makeTheme(config.theme); - const prefix = usePrefix({ status, theme }); - useKeypress((key, rl) => { - if (status !== 'idle') - return; - if (isEnterKey(key)) { - const answer = getBooleanValue(value, config.default); - setValue(transformer(answer)); - setStatus('done'); - done(answer); - } - else if (isTabKey(key)) { - const answer = boolToString(!getBooleanValue(value, config.default)); - rl.clearLine(0); // Remove the tab character. - rl.write(answer); - setValue(answer); - } - else { - setValue(rl.line); - } - }); - let formattedValue = value; - let defaultValue = ''; - if (status === 'done') { - formattedValue = theme.style.answer(value); - } - else { - defaultValue = ` ${theme.style.defaultAnswer(config.default === false ? 'y/N' : 'Y/n')}`; - } - const message = theme.style.message(config.message, status); - return `${prefix} ${message}${defaultValue} ${formattedValue}`; -}); diff --git a/sdks/nodejs/node_modules/@inquirer/confirm/package.json b/sdks/nodejs/node_modules/@inquirer/confirm/package.json deleted file mode 100644 index 71b5deb..0000000 --- a/sdks/nodejs/node_modules/@inquirer/confirm/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "name": "@inquirer/confirm", - "version": "6.0.8", - "description": "Inquirer confirm prompt", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "ui", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/confirm/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/type": "^4.0.3" - }, - "devDependencies": { - "@inquirer/testing": "^3.3.0", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "526eca2e64853510821ffd457561840ec0cbfb93" -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/LICENSE b/sdks/nodejs/node_modules/@inquirer/core/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/core/README.md b/sdks/nodejs/node_modules/@inquirer/core/README.md deleted file mode 100644 index a54b150..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/README.md +++ /dev/null @@ -1,383 +0,0 @@ -# `@inquirer/core` - -The `@inquirer/core` package is the library enabling the creation of Inquirer prompts. - -It aims to implements a lightweight API similar to React hooks - but without JSX. - -# Installation - - - - - - - - - - -
npmyarn
- -```sh -npm install @inquirer/core -``` - - - -```sh -yarn add @inquirer/core -``` - -
- -# Usage - -## Basic concept - -Visual terminal apps are at their core strings rendered onto the terminal. - -The most basic prompt is a function returning a string that'll be rendered in the terminal. This function will run every time the prompt state change, and the new returned string will replace the previously rendered one. The prompt cursor appears after the string. - -Wrapping the rendering function with `createPrompt()` will setup the rendering layer, inject the state management utilities, and wait until the `done` callback is called. - -```ts -import { createPrompt } from '@inquirer/core'; - -const input = createPrompt((config, done) => { - // Implement logic - - return '? My question'; -}); - -// And it is then called as -const answer = await input({ - /* config */ -}); -``` - -## Hooks - -State management and user interactions are handled through hooks. Hooks are common [within the React ecosystem](https://react.dev/reference/react/hooks), and Inquirer reimplement the common ones. - -### State hook - -State lets a component “remember” information like user input. For example, an input prompt can use state to store the input value, while a list prompt can use state to track the cursor index. - -`useState` declares a state variable that you can update directly. - -```ts -import { createPrompt, useState } from '@inquirer/core'; - -const input = createPrompt((config, done) => { - const [index, setIndex] = useState(0); - - // ... -``` - -### Keypress hook - -Almost all prompts need to react to user actions. In a terminal, this is done through typing. - -`useKeypress` allows you to react to keypress events, and access the prompt line. - -```ts -const input = createPrompt((config, done) => { - useKeypress((key) => { - if (key.name === 'enter') { - done(answer); - } - }); - - // ... -``` - -Behind the scenes, Inquirer prompts are wrappers around [readlines](https://nodejs.org/api/readline.html). Aside the keypress event object, the hook also pass the active readline instance to the event handler. - -```ts -const input = createPrompt((config, done) => { - useKeypress((key, readline) => { - setValue(readline.line); - }); - - // ... -``` - -### Ref hook - -Refs let a prompt hold some information that isn’t used for rendering, like a class instance or a timeout ID. Unlike with state, updating a ref does not re-render your prompt. Refs are an “escape hatch” from the rendering paradigm. - -`useRef` declares a ref. You can hold any value in it, but most often it’s used to hold a timeout ID. - -```ts -const input = createPrompt((config, done) => { - const timeout = useRef(null); - - // ... -``` - -### Effect Hook - -Effects let a prompt connect to and synchronize with external systems. This includes dealing with network or animations. - -`useEffect` connects a component to an external system. - -```ts -const chat = createPrompt((config, done) => { - useEffect(() => { - const connection = createConnection(roomId); - connection.connect(); - return () => connection.disconnect(); - }, [roomId]); - - // ... -``` - -### Performance hook - -A common way to optimize re-rendering performance is to skip unnecessary work. For example, you can tell Inquirer to reuse a cached calculation or to skip a re-render if the data has not changed since the previous render. - -`useMemo` lets you cache the result of an expensive calculation. - -```ts -const todoSelect = createPrompt((config, done) => { - const visibleTodos = useMemo(() => filterTodos(todos, tab), [todos, tab]); - - // ... -``` - -### Rendering hooks - -#### Prefix / loading - -All default prompts, and most custom ones, uses a prefix at the beginning of the prompt line. This helps visually delineate different questions, and provides a convenient area to render a loading spinner. - -`usePrefix` is a built-in hook to do this. - -```ts -const input = createPrompt((config, done) => { - const prefix = usePrefix({ status }); - - return `${prefix} My question`; -}); -``` - -#### Pagination - -When looping through a long list of options (like in the `select` prompt), paginating the results appearing on the screen at once can be necessary. The `usePagination` hook is the utility used within the `select` and `checkbox` prompts to cycle through the list of options. - -Pagination works by taking in the list of options and returning a subset of the rendered items that fit within the page. The hook takes in a few options. It needs a list of options (`items`), and a `pageSize` which is the number of lines to be rendered. The `active` index is the index of the currently selected/selectable item. The `loop` option is a boolean that indicates if the list should loop around when reaching the end: this is the default behavior. The pagination hook renders items only as necessary, so it takes a function that can render an item at an index, including an `active` state, called `renderItem`. - -```js -export default createPrompt((config, done) => { - const [active, setActive] = useState(0); - - const allChoices = config.choices.map((choice) => choice.name); - - const page = usePagination({ - items: allChoices, - active: active, - renderItem: ({ item, index, isActive }) => `${isActive ? ">" : " "}${index}. ${item.toString()}` - pageSize: config.pageSize, - loop: config.loop, - }); - - return `... ${page}`; -}); -``` - -## `createPrompt()` API - -As we saw earlier, the rendering function should return a string, and eventually call `done` to close the prompt and return the answer. - -```ts -const input = createPrompt((config, done) => { - const [value, setValue] = useState(); - - useKeypress((key, readline) => { - if (key.name === 'enter') { - done(answer); - } else { - setValue(readline.line); - } - }); - - return `? ${config.message} ${value}`; -}); -``` - -The rendering function can also return a tuple of 2 string (`[string, string]`.) The first string represents the prompt. The second one is content to render under the prompt, like an error message. The text input cursor will appear after the first string. - -```ts -const number = createPrompt((config, done) => { - // Add some logic here - - return [`? My question ${input}`, `! The input must be a number`]; -}); -``` - -### Typescript - -If using typescript, `createPrompt` takes 2 generic arguments. - -```ts -// createPrompt -const input = createPrompt(// ... -``` - -The first one is the type of the resolved value - -```ts -const answer: string = await input(); -``` - -The second one is the type of the prompt config; in other words the interface the created prompt will provide to users. - -```ts -const answer = await input({ - message: 'My question', -}); -``` - -## Key utilities - -Listening for keypress events inside an inquirer prompt is a very common pattern. To ease this, we export a few utility functions taking in the keypress event object and return a boolean: - -- `isEnterKey()` -- `isBackspaceKey()` -- `isSpaceKey()` -- `isUpKey()` - Note: this utility will handle vim and emacs keybindings (up, `k`, and `ctrl+p`) -- `isDownKey()` - Note: this utility will handle vim and emacs keybindings (down, `j`, and `ctrl+n`) -- `isNumberKey()` one of 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 - -## Theming - -Theming utilities will allow you to expose customization of the prompt style. Inquirer also has a few standard theme values shared across all the official prompts. - -To allow standard customization: - -```ts -import { createPrompt, usePrefix, makeTheme, type Theme } from '@inquirer/core'; -import type { PartialDeep } from '@inquirer/type'; - -type PromptConfig = { - theme?: PartialDeep; -}; - -export default createPrompt((config, done) => { - const theme = makeTheme(config.theme); - - const prefix = usePrefix({ status, theme }); - - return `${prefix} ${theme.style.highlight('hello')}`; -}); -``` - -To setup a custom theme: - -```ts -import { createPrompt, makeTheme, type Theme } from '@inquirer/core'; -import type { PartialDeep } from '@inquirer/type'; - -type PromptTheme = {}; - -const promptTheme: PromptTheme = { - icon: '!', -}; - -type PromptConfig = { - theme?: PartialDeep>; -}; - -export default createPrompt((config, done) => { - const theme = makeTheme(promptTheme, config.theme); - - const prefix = usePrefix({ status, theme }); - - return `${prefix} ${theme.icon}`; -}); -``` - -The [default theme keys cover](https://github.com/SBoudrias/Inquirer.js/blob/main/packages/core/src/lib/theme.ts): - -```ts -type DefaultTheme = { - prefix: string | { idle: string; done: string }; - spinner: { - interval: number; - frames: string[]; - }; - style: { - answer: (text: string) => string; - message: (text: string, status: 'idle' | 'done' | 'loading') => string; - error: (text: string) => string; - defaultAnswer: (text: string) => string; - help: (text: string) => string; - highlight: (text: string) => string; - key: (text: string) => string; - }; -}; -``` - -# Examples - -You can refer to any `@inquirer/prompts` prompts for real examples: - -- [Confirm Prompt](https://github.com/SBoudrias/Inquirer.js/blob/main/packages/confirm/src/index.ts) -- [Input Prompt](https://github.com/SBoudrias/Inquirer.js/blob/main/packages/input/src/index.ts) -- [Password Prompt](https://github.com/SBoudrias/Inquirer.js/blob/main/packages/password/src/index.ts) -- [Editor Prompt](https://github.com/SBoudrias/Inquirer.js/blob/main/packages/editor/src/index.ts) -- [Select Prompt](https://github.com/SBoudrias/Inquirer.js/blob/main/packages/select/src/index.ts) -- [Checkbox Prompt](https://github.com/SBoudrias/Inquirer.js/blob/main/packages/checkbox/src/index.ts) -- [Rawlist Prompt](https://github.com/SBoudrias/Inquirer.js/blob/main/packages/rawlist/src/index.ts) -- [Expand Prompt](https://github.com/SBoudrias/Inquirer.js/blob/main/packages/expand/src/index.ts) - -```ts -import { styleText } from 'node:util'; -import { - createPrompt, - useState, - useKeypress, - isEnterKey, - usePrefix, - type Status, -} from '@inquirer/core'; - -const confirm = createPrompt( - (config, done) => { - const [status, setStatus] = useState('idle'); - const [value, setValue] = useState(''); - const prefix = usePrefix({}); - - useKeypress((key, rl) => { - if (isEnterKey(key)) { - const answer = value ? /^y(es)?/i.test(value) : config.default !== false; - setValue(answer ? 'yes' : 'no'); - setStatus('done'); - done(answer); - } else { - setValue(rl.line); - } - }); - - let formattedValue = value; - let defaultValue = ''; - if (status === 'done') { - formattedValue = styleText('cyan', value); - } else { - defaultValue = styleText('dim', config.default === false ? ' (y/N)' : ' (Y/n)'); - } - - const message = styleText('bold', config.message); - return `${prefix} ${message}${defaultValue} ${formattedValue}`; - }, -); - -/** - * Which then can be used like this: - */ -const answer = await confirm({ message: 'Do you want to continue?' }); -``` - -# License - -Copyright (c) 2023 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/index.d.ts deleted file mode 100644 index 615b010..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -export { isUpKey, isDownKey, isSpaceKey, isBackspaceKey, isTabKey, isNumberKey, isEnterKey, isShiftKey, type KeypressEvent, type Keybinding, } from './lib/key.ts'; -export * from './lib/errors.ts'; -export { usePrefix } from './lib/use-prefix.ts'; -export { useState } from './lib/use-state.ts'; -export { useEffect } from './lib/use-effect.ts'; -export { useMemo } from './lib/use-memo.ts'; -export { useRef } from './lib/use-ref.ts'; -export { useKeypress } from './lib/use-keypress.ts'; -export { makeTheme } from './lib/make-theme.ts'; -export type { Theme, Status } from './lib/theme.ts'; -export { usePagination } from './lib/pagination/use-pagination.ts'; -export { createPrompt } from './lib/create-prompt.ts'; -export { Separator } from './lib/Separator.ts'; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/index.js b/sdks/nodejs/node_modules/@inquirer/core/dist/index.js deleted file mode 100644 index 0dbfb03..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/index.js +++ /dev/null @@ -1,12 +0,0 @@ -export { isUpKey, isDownKey, isSpaceKey, isBackspaceKey, isTabKey, isNumberKey, isEnterKey, isShiftKey, } from "./lib/key.js"; -export * from "./lib/errors.js"; -export { usePrefix } from "./lib/use-prefix.js"; -export { useState } from "./lib/use-state.js"; -export { useEffect } from "./lib/use-effect.js"; -export { useMemo } from "./lib/use-memo.js"; -export { useRef } from "./lib/use-ref.js"; -export { useKeypress } from "./lib/use-keypress.js"; -export { makeTheme } from "./lib/make-theme.js"; -export { usePagination } from "./lib/pagination/use-pagination.js"; -export { createPrompt } from "./lib/create-prompt.js"; -export { Separator } from "./lib/Separator.js"; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/Separator.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/Separator.d.ts deleted file mode 100644 index 0283555..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/Separator.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Separator object - * Used to space/separate choices group - */ -export declare class Separator { - readonly separator: string; - readonly type: string; - constructor(separator?: string); - static isSeparator(choice: unknown): choice is Separator; -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/Separator.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/Separator.js deleted file mode 100644 index 562e928..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/Separator.js +++ /dev/null @@ -1,21 +0,0 @@ -import { styleText } from 'node:util'; -import figures from '@inquirer/figures'; -/** - * Separator object - * Used to space/separate choices group - */ -export class Separator { - separator = styleText('dim', Array.from({ length: 15 }).join(figures.line)); - type = 'separator'; - constructor(separator) { - if (separator) { - this.separator = separator; - } - } - static isSeparator(choice) { - return Boolean(choice && - typeof choice === 'object' && - 'type' in choice && - choice.type === 'separator'); - } -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/create-prompt.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/create-prompt.d.ts deleted file mode 100644 index 4414db4..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/create-prompt.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { type Prompt, type Prettify } from '@inquirer/type'; -type ViewFunction = (config: Prettify, done: (value: Value) => void) => string | [string, string | undefined]; -export declare function createPrompt(view: ViewFunction): Prompt; -export {}; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/create-prompt.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/create-prompt.js deleted file mode 100644 index b66ecfa..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/create-prompt.js +++ /dev/null @@ -1,143 +0,0 @@ -import * as readline from 'node:readline'; -import { AsyncResource } from 'node:async_hooks'; -import MuteStream from 'mute-stream'; -import { onExit as onSignalExit } from 'signal-exit'; -import ScreenManager from "./screen-manager.js"; -import { PromisePolyfill } from "./promise-polyfill.js"; -import { withHooks, effectScheduler } from "./hook-engine.js"; -import { AbortPromptError, CancelPromptError, ExitPromptError } from "./errors.js"; -// Capture the real setImmediate at module load time so it works even when test -// frameworks mock timers with vi.useFakeTimers() or similar. -const nativeSetImmediate = globalThis.setImmediate; -function getCallSites() { - // eslint-disable-next-line @typescript-eslint/unbound-method - const _prepareStackTrace = Error.prepareStackTrace; - let result = []; - try { - Error.prepareStackTrace = (_, callSites) => { - const callSitesWithoutCurrent = callSites.slice(1); - result = callSitesWithoutCurrent; - return callSitesWithoutCurrent; - }; - // oxlint-disable-next-line no-unused-expressions - new Error().stack; - } - catch { - // An error will occur if the Node flag --frozen-intrinsics is used. - // https://nodejs.org/api/cli.html#--frozen-intrinsics - return result; - } - Error.prepareStackTrace = _prepareStackTrace; - return result; -} -export function createPrompt(view) { - const callSites = getCallSites(); - const prompt = (config, context = {}) => { - // Default `input` to stdin - const { input = process.stdin, signal } = context; - const cleanups = new Set(); - // Add mute capabilities to the output - const output = new MuteStream(); - output.pipe(context.output ?? process.stdout); - // Pre-mute the output so that readline doesn't echo stale keystrokes - // to the terminal before the first render. ScreenManager will unmute/mute - // the output around each render call as needed. - output.mute(); - const rl = readline.createInterface({ - terminal: true, - input, - output, - }); - const screen = new ScreenManager(rl); - const { promise, resolve, reject } = PromisePolyfill.withResolver(); - const cancel = () => reject(new CancelPromptError()); - if (signal) { - const abort = () => reject(new AbortPromptError({ cause: signal.reason })); - if (signal.aborted) { - abort(); - return Object.assign(promise, { cancel }); - } - signal.addEventListener('abort', abort); - cleanups.add(() => signal.removeEventListener('abort', abort)); - } - cleanups.add(onSignalExit((code, signal) => { - reject(new ExitPromptError(`User force closed the prompt with ${code} ${signal}`)); - })); - // SIGINT must be explicitly handled by the prompt so the ExitPromptError can be handled. - // Otherwise, the prompt will stop and in some scenarios never resolve. - // Ref issue #1741 - const sigint = () => reject(new ExitPromptError(`User force closed the prompt with SIGINT`)); - rl.on('SIGINT', sigint); - cleanups.add(() => rl.removeListener('SIGINT', sigint)); - return withHooks(rl, (cycle) => { - // The close event triggers immediately when the user press ctrl+c. SignalExit on the other hand - // triggers after the process is done (which happens after timeouts are done triggering.) - // We triggers the hooks cleanup phase on rl `close` so active timeouts can be cleared. - const hooksCleanup = AsyncResource.bind(() => effectScheduler.clearAll()); - rl.on('close', hooksCleanup); - cleanups.add(() => rl.removeListener('close', hooksCleanup)); - const startCycle = () => { - // Re-renders only happen when the state change; but the readline cursor could - // change position and that also requires a re-render (and a manual one because - // we mute the streams). We set the listener after the initial workLoop to avoid - // a double render if render triggered by a state change sets the cursor to the - // right position. - const checkCursorPos = () => screen.checkCursorPos(); - rl.input.on('keypress', checkCursorPos); - cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos)); - cycle(() => { - try { - const nextView = view(config, (value) => { - setImmediate(() => resolve(value)); - }); - // Typescript won't allow this, but not all users rely on typescript. - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (nextView === undefined) { - const callerFilename = callSites[1]?.getFileName(); - throw new Error(`Prompt functions must return a string.\n at ${callerFilename}`); - } - const [content, bottomContent] = typeof nextView === 'string' ? [nextView] : nextView; - screen.render(content, bottomContent); - effectScheduler.run(); - } - catch (error) { - reject(error); - } - }); - }; - // Proper Readable streams (like process.stdin) may have OS-level buffered - // data that arrives in the poll phase when readline resumes the stream. - // Deferring the first render by one setImmediate tick (check phase, after - // poll) lets that stale data flow through readline harmlessly—no keypress - // handlers are registered yet and the output is muted, so the stale - // keystrokes are silently discarded. - // Old-style streams (like MuteStream) have no such buffering, so the - // render cycle starts immediately. - // - // @see https://github.com/SBoudrias/Inquirer.js/issues/1303 - if ('readableFlowing' in input) { - nativeSetImmediate(startCycle); - } - else { - startCycle(); - } - return Object.assign(promise - .then((answer) => { - effectScheduler.clearAll(); - return answer; - }, (error) => { - effectScheduler.clearAll(); - throw error; - }) - // Wait for the promise to settle, then cleanup. - .finally(() => { - cleanups.forEach((cleanup) => cleanup()); - screen.done({ clearContent: Boolean(context.clearPromptOnDone) }); - output.end(); - }) - // Once cleanup is done, let the expose promise resolve/reject to the internal one. - .then(() => promise), { cancel }); - }); - }; - return prompt; -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/errors.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/errors.d.ts deleted file mode 100644 index b9df681..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/errors.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -export declare class AbortPromptError extends Error { - name: string; - message: string; - constructor(options?: { - cause?: unknown; - }); -} -export declare class CancelPromptError extends Error { - name: string; - message: string; -} -export declare class ExitPromptError extends Error { - name: string; -} -export declare class HookError extends Error { - name: string; -} -export declare class ValidationError extends Error { - name: string; -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/errors.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/errors.js deleted file mode 100644 index 153a936..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/errors.js +++ /dev/null @@ -1,21 +0,0 @@ -export class AbortPromptError extends Error { - name = 'AbortPromptError'; - message = 'Prompt was aborted'; - constructor(options) { - super(); - this.cause = options?.cause; - } -} -export class CancelPromptError extends Error { - name = 'CancelPromptError'; - message = 'Prompt was canceled'; -} -export class ExitPromptError extends Error { - name = 'ExitPromptError'; -} -export class HookError extends Error { - name = 'HookError'; -} -export class ValidationError extends Error { - name = 'ValidationError'; -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/hook-engine.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/hook-engine.d.ts deleted file mode 100644 index edfc61c..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/hook-engine.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { InquirerReadline } from '@inquirer/type'; -export declare function withHooks(rl: InquirerReadline, cb: (cycle: (render: () => void) => void) => T): T; -export declare function readline(): InquirerReadline; -export declare function withUpdates(fn: (...args: Args) => R): (...args: Args) => R; -type SetPointer = { - get(): Value; - set(value: Value): void; - initialized: true; -}; -type UnsetPointer = { - get(): void; - set(value: Value): void; - initialized: false; -}; -type Pointer = SetPointer | UnsetPointer; -export declare function withPointer(cb: (pointer: Pointer) => ReturnValue): ReturnValue; -export declare function handleChange(): void; -export declare const effectScheduler: { - queue(cb: (readline: InquirerReadline) => void | (() => void)): void; - run(): void; - clearAll(): void; -}; -export {}; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/hook-engine.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/hook-engine.js deleted file mode 100644 index 3ed0432..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/hook-engine.js +++ /dev/null @@ -1,110 +0,0 @@ -/* eslint @typescript-eslint/no-explicit-any: ["off"] */ -import { AsyncLocalStorage, AsyncResource } from 'node:async_hooks'; -import { HookError, ValidationError } from "./errors.js"; -const hookStorage = new AsyncLocalStorage(); -function createStore(rl) { - const store = { - rl, - hooks: [], - hooksCleanup: [], - hooksEffect: [], - index: 0, - handleChange() { }, - }; - return store; -} -// Run callback in with the hook engine setup. -export function withHooks(rl, cb) { - const store = createStore(rl); - return hookStorage.run(store, () => { - function cycle(render) { - store.handleChange = () => { - store.index = 0; - render(); - }; - store.handleChange(); - } - return cb(cycle); - }); -} -// Safe getStore utility that'll return the store or throw if undefined. -function getStore() { - const store = hookStorage.getStore(); - if (!store) { - throw new HookError('[Inquirer] Hook functions can only be called from within a prompt'); - } - return store; -} -export function readline() { - return getStore().rl; -} -// Merge state updates happening within the callback function to avoid multiple renders. -export function withUpdates(fn) { - const wrapped = (...args) => { - const store = getStore(); - let shouldUpdate = false; - const oldHandleChange = store.handleChange; - store.handleChange = () => { - shouldUpdate = true; - }; - const returnValue = fn(...args); - if (shouldUpdate) { - oldHandleChange(); - } - store.handleChange = oldHandleChange; - return returnValue; - }; - return AsyncResource.bind(wrapped); -} -export function withPointer(cb) { - const store = getStore(); - const { index } = store; - const pointer = { - get() { - return store.hooks[index]; - }, - set(value) { - store.hooks[index] = value; - }, - initialized: index in store.hooks, - }; - const returnValue = cb(pointer); - store.index++; - return returnValue; -} -export function handleChange() { - getStore().handleChange(); -} -export const effectScheduler = { - queue(cb) { - const store = getStore(); - const { index } = store; - store.hooksEffect.push(() => { - store.hooksCleanup[index]?.(); - const cleanFn = cb(readline()); - if (cleanFn != null && typeof cleanFn !== 'function') { - throw new ValidationError('useEffect return value must be a cleanup function or nothing.'); - } - store.hooksCleanup[index] = cleanFn; - }); - }, - run() { - const store = getStore(); - withUpdates(() => { - store.hooksEffect.forEach((effect) => { - effect(); - }); - // Warning: Clean the hooks before exiting the `withUpdates` block. - // Failure to do so means an updates would hit the same effects again. - store.hooksEffect.length = 0; - })(); - }, - clearAll() { - const store = getStore(); - store.hooksCleanup.forEach((cleanFn) => { - cleanFn?.(); - }); - store.hooksEffect.length = 0; - store.hooksCleanup.length = 0; - }, -}; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/key.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/key.d.ts deleted file mode 100644 index ef28f5b..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/key.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -export type KeypressEvent = { - name: string; - ctrl: boolean; - shift: boolean; -}; -export type Keybinding = 'emacs' | 'vim'; -export declare const isUpKey: (key: KeypressEvent, keybindings?: ReadonlyArray) => boolean; -export declare const isDownKey: (key: KeypressEvent, keybindings?: ReadonlyArray) => boolean; -export declare const isSpaceKey: (key: KeypressEvent) => boolean; -export declare const isBackspaceKey: (key: KeypressEvent) => boolean; -export declare const isTabKey: (key: KeypressEvent) => boolean; -export declare const isNumberKey: (key: KeypressEvent) => boolean; -export declare const isEnterKey: (key: KeypressEvent) => boolean; -export declare const isShiftKey: (key: KeypressEvent) => boolean; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/key.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/key.js deleted file mode 100644 index 3bdf740..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/key.js +++ /dev/null @@ -1,20 +0,0 @@ -export const isUpKey = (key, keybindings = []) => -// The up key -key.name === 'up' || - // Vim keybinding: hjkl keys map to left/down/up/right - (keybindings.includes('vim') && key.name === 'k') || - // Emacs keybinding: Ctrl+P means "previous" in Emacs navigation conventions - (keybindings.includes('emacs') && key.ctrl && key.name === 'p'); -export const isDownKey = (key, keybindings = []) => -// The down key -key.name === 'down' || - // Vim keybinding: hjkl keys map to left/down/up/right - (keybindings.includes('vim') && key.name === 'j') || - // Emacs keybinding: Ctrl+N means "next" in Emacs navigation conventions - (keybindings.includes('emacs') && key.ctrl && key.name === 'n'); -export const isSpaceKey = (key) => key.name === 'space'; -export const isBackspaceKey = (key) => key.name === 'backspace'; -export const isTabKey = (key) => key.name === 'tab'; -export const isNumberKey = (key) => '1234567890'.includes(key.name); -export const isEnterKey = (key) => key.name === 'enter' || key.name === 'return'; -export const isShiftKey = (key) => key.shift; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/make-theme.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/make-theme.d.ts deleted file mode 100644 index c7aae8b..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/make-theme.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { Prettify, PartialDeep } from '@inquirer/type'; -import { type Theme } from './theme.ts'; -export declare function makeTheme(...themes: ReadonlyArray>>): Prettify>; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/make-theme.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/make-theme.js deleted file mode 100644 index 8086da6..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/make-theme.js +++ /dev/null @@ -1,30 +0,0 @@ -import { defaultTheme } from "./theme.js"; -function isPlainObject(value) { - if (typeof value !== 'object' || value === null) - return false; - let proto = value; - while (Object.getPrototypeOf(proto) !== null) { - proto = Object.getPrototypeOf(proto); - } - return Object.getPrototypeOf(value) === proto; -} -function deepMerge(...objects) { - const output = {}; - for (const obj of objects) { - for (const [key, value] of Object.entries(obj)) { - const prevValue = output[key]; - output[key] = - isPlainObject(prevValue) && isPlainObject(value) - ? deepMerge(prevValue, value) - : value; - } - } - return output; -} -export function makeTheme(...themes) { - const themesToMerge = [ - defaultTheme, - ...themes.filter((theme) => theme != null), - ]; - return deepMerge(...themesToMerge); -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.d.ts deleted file mode 100644 index 47467c3..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { Prettify } from '@inquirer/type'; -export declare function usePagination({ items, active, renderItem, pageSize, loop, }: { - items: ReadonlyArray; - /** The index of the active item. */ - active: number; - /** Renders an item as part of a page. */ - renderItem: (layout: Prettify<{ - item: T; - index: number; - isActive: boolean; - }>) => string; - /** The size of the page. */ - pageSize: number; - /** Allows creating an infinitely looping list. `true` if unspecified. */ - loop?: boolean; -}): string; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js deleted file mode 100644 index f3883d5..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js +++ /dev/null @@ -1,121 +0,0 @@ -import { useRef } from "../use-ref.js"; -import { readlineWidth, breakLines } from "../utils.js"; -function usePointerPosition({ active, renderedItems, pageSize, loop, }) { - const state = useRef({ - lastPointer: active, - lastActive: undefined, - }); - const { lastPointer, lastActive } = state.current; - const middle = Math.floor(pageSize / 2); - const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0); - const defaultPointerPosition = renderedItems - .slice(0, active) - .reduce((acc, item) => acc + item.length, 0); - let pointer = defaultPointerPosition; - if (renderedLength > pageSize) { - if (loop) { - /** - * Creates the next position for the pointer considering an infinitely - * looping list of items to be rendered on the page. - * - * The goal is to progressively move the cursor to the middle position as the user move down, and then keep - * the cursor there. When the user move up, maintain the cursor position. - */ - // By default, keep the cursor position as-is. - pointer = lastPointer; - if ( - // First render, skip this logic. - lastActive != null && - // Only move the pointer down when the user moves down. - lastActive < active && - // Check user didn't move up across page boundary. - active - lastActive < pageSize) { - pointer = Math.min( - // Furthest allowed position for the pointer is the middle of the list - middle, Math.abs(active - lastActive) === 1 - ? Math.min( - // Move the pointer at most the height of the last active item. - lastPointer + (renderedItems[lastActive]?.length ?? 0), - // If the user moved by one item, move the pointer to the natural position of the active item as - // long as it doesn't move the cursor up. - Math.max(defaultPointerPosition, lastPointer)) - : // Otherwise, move the pointer down by the difference between the active and last active item. - lastPointer + active - lastActive); - } - } - else { - /** - * Creates the next position for the pointer considering a finite list of - * items to be rendered on a page. - * - * The goal is to keep the pointer in the middle of the page whenever possible, until - * we reach the bounds of the list (top or bottom). In which case, the cursor moves progressively - * to the bottom or top of the list. - */ - const spaceUnderActive = renderedItems - .slice(active) - .reduce((acc, item) => acc + item.length, 0); - pointer = - spaceUnderActive < pageSize - middle - ? // If the active item is near the end of the list, progressively move the cursor towards the end. - pageSize - spaceUnderActive - : // Otherwise, progressively move the pointer to the middle of the list. - Math.min(defaultPointerPosition, middle); - } - } - // Save state for the next render - state.current.lastPointer = pointer; - state.current.lastActive = active; - return pointer; -} -export function usePagination({ items, active, renderItem, pageSize, loop = true, }) { - const width = readlineWidth(); - const bound = (num) => ((num % items.length) + items.length) % items.length; - const renderedItems = items.map((item, index) => { - if (item == null) - return []; - return breakLines(renderItem({ item, index, isActive: index === active }), width).split('\n'); - }); - const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0); - const renderItemAtIndex = (index) => renderedItems[index] ?? []; - const pointer = usePointerPosition({ active, renderedItems, pageSize, loop }); - // Render the active item to decide the position. - // If the active item fits under the pointer, we render it there. - // Otherwise, we need to render it to fit at the bottom of the page; moving the pointer up. - const activeItem = renderItemAtIndex(active).slice(0, pageSize); - const activeItemPosition = pointer + activeItem.length <= pageSize ? pointer : pageSize - activeItem.length; - // Create an array of lines for the page, and add the lines of the active item into the page - const pageBuffer = Array.from({ length: pageSize }); - pageBuffer.splice(activeItemPosition, activeItem.length, ...activeItem); - // Store to prevent rendering the same item twice - const itemVisited = new Set([active]); - // Fill the page under the active item - let bufferPointer = activeItemPosition + activeItem.length; - let itemPointer = bound(active + 1); - while (bufferPointer < pageSize && - !itemVisited.has(itemPointer) && - (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer > active)) { - const lines = renderItemAtIndex(itemPointer); - const linesToAdd = lines.slice(0, pageSize - bufferPointer); - pageBuffer.splice(bufferPointer, linesToAdd.length, ...linesToAdd); - // Move pointers for next iteration - itemVisited.add(itemPointer); - bufferPointer += linesToAdd.length; - itemPointer = bound(itemPointer + 1); - } - // Fill the page over the active item - bufferPointer = activeItemPosition - 1; - itemPointer = bound(active - 1); - while (bufferPointer >= 0 && - !itemVisited.has(itemPointer) && - (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer < active)) { - const lines = renderItemAtIndex(itemPointer); - const linesToAdd = lines.slice(Math.max(0, lines.length - bufferPointer - 1)); - pageBuffer.splice(bufferPointer - linesToAdd.length + 1, linesToAdd.length, ...linesToAdd); - // Move pointers for next iteration - itemVisited.add(itemPointer); - bufferPointer -= linesToAdd.length; - itemPointer = bound(itemPointer - 1); - } - return pageBuffer.filter((line) => typeof line === 'string').join('\n'); -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/promise-polyfill.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/promise-polyfill.d.ts deleted file mode 100644 index 0e4f74c..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/promise-polyfill.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export declare class PromisePolyfill extends Promise { - static withResolver(): { - promise: Promise; - resolve: (value: T) => void; - reject: (error: unknown) => void; - }; -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/promise-polyfill.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/promise-polyfill.js deleted file mode 100644 index 621708e..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/promise-polyfill.js +++ /dev/null @@ -1,14 +0,0 @@ -// TODO: Remove this class once Node 22 becomes the minimum supported version. -export class PromisePolyfill extends Promise { - // Available starting from Node 22 - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers - static withResolver() { - let resolve; - let reject; - const promise = new Promise((res, rej) => { - resolve = res; - reject = rej; - }); - return { promise, resolve: resolve, reject: reject }; - } -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/screen-manager.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/screen-manager.d.ts deleted file mode 100644 index de4c1e0..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/screen-manager.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { InquirerReadline } from '@inquirer/type'; -export default class ScreenManager { - private height; - private extraLinesUnderPrompt; - private cursorPos; - private readonly rl; - constructor(rl: InquirerReadline); - write(content: string): void; - render(content: string, bottomContent?: string): void; - checkCursorPos(): void; - done({ clearContent }: { - clearContent: boolean; - }): void; -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/screen-manager.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/screen-manager.js deleted file mode 100644 index 9d40f14..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/screen-manager.js +++ /dev/null @@ -1,79 +0,0 @@ -import { stripVTControlCharacters } from 'node:util'; -import { breakLines, readlineWidth } from "./utils.js"; -import { cursorDown, cursorUp, cursorTo, cursorShow, eraseLines } from '@inquirer/ansi'; -const height = (content) => content.split('\n').length; -const lastLine = (content) => content.split('\n').pop() ?? ''; -export default class ScreenManager { - // These variables are keeping information to allow correct prompt re-rendering - height = 0; - extraLinesUnderPrompt = 0; - cursorPos; - rl; - constructor(rl) { - this.rl = rl; - this.cursorPos = rl.getCursorPos(); - } - write(content) { - this.rl.output.unmute(); - this.rl.output.write(content); - this.rl.output.mute(); - } - render(content, bottomContent = '') { - // Write message to screen and setPrompt to control backspace - const promptLine = lastLine(content); - const rawPromptLine = stripVTControlCharacters(promptLine); - // Remove the rl.line from our prompt. We can't rely on the content of - // rl.line (mainly because of the password prompt), so just rely on it's - // length. - let prompt = rawPromptLine; - if (this.rl.line.length > 0) { - prompt = prompt.slice(0, -this.rl.line.length); - } - this.rl.setPrompt(prompt); - // SetPrompt will change cursor position, now we can get correct value - this.cursorPos = this.rl.getCursorPos(); - const width = readlineWidth(); - content = breakLines(content, width); - bottomContent = breakLines(bottomContent, width); - // Manually insert an extra line if we're at the end of the line. - // This prevent the cursor from appearing at the beginning of the - // current line. - if (rawPromptLine.length % width === 0) { - content += '\n'; - } - let output = content + (bottomContent ? '\n' + bottomContent : ''); - /** - * Re-adjust the cursor at the correct position. - */ - // We need to consider parts of the prompt under the cursor as part of the bottom - // content in order to correctly cleanup and re-render. - const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows; - const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0); - // Return cursor to the input position (on top of the bottomContent) - if (bottomContentHeight > 0) - output += cursorUp(bottomContentHeight); - // Return cursor to the initial left offset. - output += cursorTo(this.cursorPos.cols); - /** - * Render and store state for future re-rendering - */ - this.write(cursorDown(this.extraLinesUnderPrompt) + eraseLines(this.height) + output); - this.extraLinesUnderPrompt = bottomContentHeight; - this.height = height(output); - } - checkCursorPos() { - const cursorPos = this.rl.getCursorPos(); - if (cursorPos.cols !== this.cursorPos.cols) { - this.write(cursorTo(cursorPos.cols)); - this.cursorPos = cursorPos; - } - } - done({ clearContent }) { - this.rl.setPrompt(''); - let output = cursorDown(this.extraLinesUnderPrompt); - output += clearContent ? eraseLines(this.height) : '\n'; - output += cursorShow; - this.write(output); - this.rl.close(); - } -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/theme.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/theme.d.ts deleted file mode 100644 index d963437..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/theme.d.ts +++ /dev/null @@ -1,155 +0,0 @@ -import type { Prettify } from '@inquirer/type'; -/** - * Union type representing the possible statuses of a prompt. - * - * - `'loading'`: The prompt is currently loading. - * - `'idle'`: The prompt is loaded and currently waiting for the user to - * submit an answer. - * - `'done'`: The user has submitted an answer and the prompt is finished. - * - `string`: Any other string: The prompt is in a custom state. - */ -export type Status = 'loading' | 'idle' | 'done' | (string & {}); -type DefaultTheme = { - /** - * Prefix to prepend to the message. If a function is provided, it will be - * called with the current status of the prompt, and the return value will be - * used as the prefix. - * - * @remarks - * If `status === 'loading'`, this property is ignored and the spinner (styled - * by the `spinner` property) will be displayed instead. - * - * @defaultValue - * ```ts - * // import { styleText } from 'node:util'; - * (status) => status === 'done' ? styleText('green', '✔') : styleText('blue', '?') - * ``` - */ - prefix: string | Prettify, 'loading'>>; - /** - * Configuration for the spinner that is displayed when the prompt is in the - * `'loading'` state. - * - * We recommend the use of {@link https://github.com/sindresorhus/cli-spinners|cli-spinners} for a list of available spinners. - */ - spinner: { - /** - * The time interval between frames, in milliseconds. - * - * @defaultValue - * ```ts - * 80 - * ``` - */ - interval: number; - /** - * A list of frames to show for the spinner. - * - * @defaultValue - * ```ts - * ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'] - * ``` - */ - frames: string[]; - }; - /** - * Object containing functions to style different parts of the prompt. - */ - style: { - /** - * Style to apply to the user's answer once it has been submitted. - * - * @param text - The user's answer. - * @returns The styled answer. - * - * @defaultValue - * ```ts - * // import { styleText } from 'node:util'; - * (text) => styleText('cyan', text) - * ``` - */ - answer: (text: string) => string; - /** - * Style to apply to the message displayed to the user. - * - * @param text - The message to style. - * @param status - The current status of the prompt. - * @returns The styled message. - * - * @defaultValue - * ```ts - * // import { styleText } from 'node:util'; - * (text, status) => styleText('bold', text) - * ``` - */ - message: (text: string, status: Status) => string; - /** - * Style to apply to error messages. - * - * @param text - The error message. - * @returns The styled error message. - * - * @defaultValue - * ```ts - * // import { styleText } from 'node:util'; - * (text) => styleText('red', `> ${text}`) - * ``` - */ - error: (text: string) => string; - /** - * Style to apply to the default answer when one is provided. - * - * @param text - The default answer. - * @returns The styled default answer. - * - * @defaultValue - * ```ts - * // import { styleText } from 'node:util'; - * (text) => styleText('dim', `(${text})`) - * ``` - */ - defaultAnswer: (text: string) => string; - /** - * Style to apply to help text. - * - * @param text - The help text. - * @returns The styled help text. - * - * @defaultValue - * ```ts - * // import { styleText } from 'node:util'; - * (text) => styleText('dim', text) - * ``` - */ - help: (text: string) => string; - /** - * Style to apply to highlighted text. - * - * @param text - The text to highlight. - * @returns The highlighted text. - * - * @defaultValue - * ```ts - * // import { styleText } from 'node:util'; - * (text) => styleText('cyan', text) - * ``` - */ - highlight: (text: string) => string; - /** - * Style to apply to keyboard keys referred to in help texts. - * - * @param text - The key to style. - * @returns The styled key. - * - * @defaultValue - * ```ts - * // import { styleText } from 'node:util'; - * (text) => styleText('cyan', styleText('bold', `<${text}>`)) - * ``` - */ - key: (text: string) => string; - }; -}; -export type Theme = Prettify; -export declare const defaultTheme: DefaultTheme; -export {}; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/theme.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/theme.js deleted file mode 100644 index 216fe91..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/theme.js +++ /dev/null @@ -1,21 +0,0 @@ -import { styleText } from 'node:util'; -import figures from '@inquirer/figures'; -export const defaultTheme = { - prefix: { - idle: styleText('blue', '?'), - done: styleText('green', figures.tick), - }, - spinner: { - interval: 80, - frames: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'].map((frame) => styleText('yellow', frame)), - }, - style: { - answer: (text) => styleText('cyan', text), - message: (text) => styleText('bold', text), - error: (text) => styleText('red', `> ${text}`), - defaultAnswer: (text) => styleText('dim', `(${text})`), - help: (text) => styleText('dim', text), - highlight: (text) => styleText('cyan', text), - key: (text) => styleText('cyan', styleText('bold', `<${text}>`)), - }, -}; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-effect.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-effect.d.ts deleted file mode 100644 index abee906..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-effect.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import type { InquirerReadline } from '@inquirer/type'; -export declare function useEffect(cb: (rl: InquirerReadline) => void | (() => void), depArray: ReadonlyArray): void; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-effect.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-effect.js deleted file mode 100644 index 1c1a9ca..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-effect.js +++ /dev/null @@ -1,11 +0,0 @@ -import { withPointer, effectScheduler } from "./hook-engine.js"; -export function useEffect(cb, depArray) { - withPointer((pointer) => { - const oldDeps = pointer.get(); - const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i])); - if (hasChanged) { - effectScheduler.queue(cb); - } - pointer.set(depArray); - }); -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-keypress.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-keypress.d.ts deleted file mode 100644 index ccdeefa..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-keypress.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type InquirerReadline } from '@inquirer/type'; -import { type KeypressEvent } from './key.ts'; -export declare function useKeypress(userHandler: (event: KeypressEvent, rl: InquirerReadline) => void | Promise): void; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-keypress.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-keypress.js deleted file mode 100644 index 4ff9b89..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-keypress.js +++ /dev/null @@ -1,20 +0,0 @@ -import { useRef } from "./use-ref.js"; -import { useEffect } from "./use-effect.js"; -import { withUpdates } from "./hook-engine.js"; -export function useKeypress(userHandler) { - const signal = useRef(userHandler); - signal.current = userHandler; - useEffect((rl) => { - let ignore = false; - const handler = withUpdates((_input, event) => { - if (ignore) - return; - void signal.current(event, rl); - }); - rl.input.on('keypress', handler); - return () => { - ignore = true; - rl.input.removeListener('keypress', handler); - }; - }, []); -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-memo.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-memo.d.ts deleted file mode 100644 index 19d1644..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-memo.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function useMemo(fn: () => Value, dependencies: ReadonlyArray): Value; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-memo.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-memo.js deleted file mode 100644 index 0395f4e..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-memo.js +++ /dev/null @@ -1,14 +0,0 @@ -import { withPointer } from "./hook-engine.js"; -export function useMemo(fn, dependencies) { - return withPointer((pointer) => { - const prev = pointer.get(); - if (!prev || - prev.dependencies.length !== dependencies.length || - prev.dependencies.some((dep, i) => dep !== dependencies[i])) { - const value = fn(); - pointer.set({ value, dependencies }); - return value; - } - return prev.value; - }); -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-prefix.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-prefix.d.ts deleted file mode 100644 index db1dabb..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-prefix.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { Theme, Status } from './theme.ts'; -export declare function usePrefix({ status, theme, }: { - status?: Status; - theme?: Theme; -}): string; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-prefix.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-prefix.js deleted file mode 100644 index d334a50..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-prefix.js +++ /dev/null @@ -1,35 +0,0 @@ -import { useState } from "./use-state.js"; -import { useEffect } from "./use-effect.js"; -import { makeTheme } from "./make-theme.js"; -export function usePrefix({ status = 'idle', theme, }) { - const [showLoader, setShowLoader] = useState(false); - const [tick, setTick] = useState(0); - const { prefix, spinner } = makeTheme(theme); - useEffect(() => { - if (status === 'loading') { - let tickInterval; - let inc = -1; - // Delay displaying spinner by 300ms, to avoid flickering - const delayTimeout = setTimeout(() => { - setShowLoader(true); - tickInterval = setInterval(() => { - inc = inc + 1; - setTick(inc % spinner.frames.length); - }, spinner.interval); - }, 300); - return () => { - clearTimeout(delayTimeout); - clearInterval(tickInterval); - }; - } - else { - setShowLoader(false); - } - }, [status]); - if (showLoader) { - return spinner.frames[tick]; - } - // There's a delay before we show the loader. So we want to ignore `loading` here, and pass idle instead. - const iconName = status === 'loading' ? 'idle' : status; - return typeof prefix === 'string' ? prefix : (prefix[iconName] ?? prefix['idle']); -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-ref.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-ref.d.ts deleted file mode 100644 index be7126b..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-ref.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export declare function useRef(val: Value): { - current: Value; -}; -export declare function useRef(val?: Value): { - current: Value | undefined; -}; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-ref.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-ref.js deleted file mode 100644 index a025561..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-ref.js +++ /dev/null @@ -1,4 +0,0 @@ -import { useState } from "./use-state.js"; -export function useRef(val) { - return useState({ current: val })[0]; -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-state.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-state.d.ts deleted file mode 100644 index fba0b62..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-state.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -type NotFunction = T extends (...args: never) => unknown ? never : T; -export declare function useState(defaultValue: NotFunction | (() => Value)): [Value, (newValue: Value) => void]; -export declare function useState(defaultValue?: NotFunction | (() => Value)): [Value | undefined, (newValue?: Value) => void]; -export {}; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-state.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-state.js deleted file mode 100644 index c6b928d..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/use-state.js +++ /dev/null @@ -1,20 +0,0 @@ -import { AsyncResource } from 'node:async_hooks'; -import { withPointer, handleChange } from "./hook-engine.js"; -export function useState(defaultValue) { - return withPointer((pointer) => { - const setState = AsyncResource.bind(function setState(newValue) { - // Noop if the value is still the same. - if (pointer.get() !== newValue) { - pointer.set(newValue); - // Trigger re-render - handleChange(); - } - }); - if (pointer.initialized) { - return [pointer.get(), setState]; - } - const value = typeof defaultValue === 'function' ? defaultValue() : defaultValue; - pointer.set(value); - return [value, setState]; - }); -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/utils.d.ts b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/utils.d.ts deleted file mode 100644 index 14f8fc4..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/utils.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Force line returns at specific width. This function is ANSI code friendly and it'll - * ignore invisible codes during width calculation. - * @param {string} content - * @param {number} width - * @return {string} - */ -export declare function breakLines(content: string, width: number): string; -/** - * Returns the width of the active readline, or 80 as default value. - * @returns {number} - */ -export declare function readlineWidth(): number; diff --git a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/utils.js b/sdks/nodejs/node_modules/@inquirer/core/dist/lib/utils.js deleted file mode 100644 index 21a1553..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/dist/lib/utils.js +++ /dev/null @@ -1,25 +0,0 @@ -import cliWidth from 'cli-width'; -import { wrapAnsi } from 'fast-wrap-ansi'; -import { readline } from "./hook-engine.js"; -/** - * Force line returns at specific width. This function is ANSI code friendly and it'll - * ignore invisible codes during width calculation. - * @param {string} content - * @param {number} width - * @return {string} - */ -export function breakLines(content, width) { - return content - .split('\n') - .flatMap((line) => wrapAnsi(line, width, { trim: false, hard: true }) - .split('\n') - .map((str) => str.trimEnd())) - .join('\n'); -} -/** - * Returns the width of the active readline, or 80 as default value. - * @returns {number} - */ -export function readlineWidth() { - return cliWidth({ defaultWidth: 80, output: readline().output }); -} diff --git a/sdks/nodejs/node_modules/@inquirer/core/package.json b/sdks/nodejs/node_modules/@inquirer/core/package.json deleted file mode 100644 index ddc7e2e..0000000 --- a/sdks/nodejs/node_modules/@inquirer/core/package.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "name": "@inquirer/core", - "version": "11.1.5", - "description": "Core Inquirer prompt API", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "ui", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/core/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "dependencies": { - "@inquirer/ansi": "^2.0.3", - "@inquirer/figures": "^2.0.3", - "@inquirer/type": "^4.0.3", - "cli-width": "^4.1.0", - "fast-wrap-ansi": "^0.2.0", - "mute-stream": "^3.0.0", - "signal-exit": "^4.1.0" - }, - "devDependencies": { - "@inquirer/testing": "^3.3.0", - "@types/mute-stream": "^0.0.4", - "@types/node": "^25.0.2", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "526eca2e64853510821ffd457561840ec0cbfb93" -} diff --git a/sdks/nodejs/node_modules/@inquirer/editor/LICENSE b/sdks/nodejs/node_modules/@inquirer/editor/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/editor/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/editor/README.md b/sdks/nodejs/node_modules/@inquirer/editor/README.md deleted file mode 100644 index b7be322..0000000 --- a/sdks/nodejs/node_modules/@inquirer/editor/README.md +++ /dev/null @@ -1,101 +0,0 @@ -# `@inquirer/editor` - -Prompt that'll open the user preferred editor with default content and allow for a convenient multi-line input controlled through the command line. - -The editor launched is the one [defined by the user's `EDITOR` environment variable](https://dev.to/jonasbn/til-integrate-visual-studio-code-with-shell--cli-2l1l). - -# Installation - - - - - - - - - - - - - - - - - -
npmyarn
- -```sh -npm install @inquirer/prompts -``` - - - -```sh -yarn add @inquirer/prompts -``` - -
Or
- -```sh -npm install @inquirer/editor -``` - - - -```sh -yarn add @inquirer/editor -``` - -
- -# Usage - -```js -import { editor } from '@inquirer/prompts'; -// Or -// import editor from '@inquirer/editor'; - -const answer = await editor({ - message: 'Enter a description', -}); -``` - -## Options - -| Property | Type | Required | Description | -| ---------------- | ------------------------------------------------------------------------------ | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| message | `string` | yes | The question to ask | -| default | `string` | no | Default value which will automatically be present in the editor | -| validate | `string => boolean \| string \| Promise` | no | On submit, validate the content. When returning a string, it'll be used as the error message displayed to the user. Note: returning a rejected promise, we'll assume a code error happened and crash. | -| postfix | `string` | no (default to `.txt`) | The postfix of the file being edited. Adding this will add color highlighting to the file content in most editors. | -| file | [`IFileOptions`](https://github.com/mrkmg/node-external-editor#config-options) | no | Exposes the [`external-editor` package options](https://github.com/mrkmg/node-external-editor#config-options) to configure the temporary file. | -| waitForUserInput | `boolean` | no (default to `true`) | Open the editor automatically without waiting for the user to press enter. Note that this mean the user will not see the question! So make sure you have a default value that provide guidance if it's unclear what input is expected. | -| theme | [See Theming](#Theming) | no | Customize look of the prompt. | - -## Theming - -You can theme a prompt by passing a `theme` object option. The theme object only need to includes the keys you wish to modify, we'll fallback on the defaults for the rest. - -```ts -type Theme = { - prefix: string | { idle: string; done: string }; - spinner: { - interval: number; - frames: string[]; - }; - style: { - message: (text: string, status: 'idle' | 'done' | 'loading') => string; - error: (text: string) => string; - help: (text: string) => string; - key: (text: string) => string; - }; - validationFailureMode: 'keep' | 'clear'; -}; -``` - -`validationFailureMode` defines the behavior of the prompt when the value submitted is invalid. By default, we'll keep the value allowing the user to edit it. When the theme option is set to `clear`, we'll remove and reset to the default value or empty string. - -# License - -Copyright (c) 2023 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/editor/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/editor/dist/index.d.ts deleted file mode 100644 index 4a07b0e..0000000 --- a/sdks/nodejs/node_modules/@inquirer/editor/dist/index.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { type IFileOptions } from '@inquirer/external-editor'; -import { type Theme } from '@inquirer/core'; -import type { PartialDeep } from '@inquirer/type'; -type EditorTheme = { - validationFailureMode: 'keep' | 'clear'; - style: { - waitingMessage: (enterKey: string) => string; - }; -}; -type EditorConfig = { - message: string; - default?: string; - postfix?: string; - waitForUserInput?: boolean; - validate?: (value: string) => boolean | string | Promise; - file?: IFileOptions; - theme?: PartialDeep>; -}; -declare const _default: import("@inquirer/type").Prompt; -export default _default; diff --git a/sdks/nodejs/node_modules/@inquirer/editor/dist/index.js b/sdks/nodejs/node_modules/@inquirer/editor/dist/index.js deleted file mode 100644 index a2703e7..0000000 --- a/sdks/nodejs/node_modules/@inquirer/editor/dist/index.js +++ /dev/null @@ -1,74 +0,0 @@ -import { editAsync } from '@inquirer/external-editor'; -import { createPrompt, useEffect, useState, useKeypress, usePrefix, isEnterKey, makeTheme, } from '@inquirer/core'; -const editorTheme = { - validationFailureMode: 'keep', - style: { - waitingMessage: (enterKey) => `Press ${enterKey} to launch your preferred editor.`, - }, -}; -export default createPrompt((config, done) => { - const { waitForUserInput = true, file: { postfix = config.postfix ?? '.txt', ...fileProps } = {}, validate = () => true, } = config; - const theme = makeTheme(editorTheme, config.theme); - const [status, setStatus] = useState('idle'); - const [value = '', setValue] = useState(config.default); - const [errorMsg, setError] = useState(); - const prefix = usePrefix({ status, theme }); - function startEditor(rl) { - rl.pause(); - const editCallback = async (error, answer) => { - rl.resume(); - if (error) { - setError(error.toString()); - } - else { - setStatus('loading'); - const finalAnswer = answer ?? ''; - const isValid = await validate(finalAnswer); - if (isValid === true) { - setError(undefined); - setStatus('done'); - done(finalAnswer); - } - else { - if (theme.validationFailureMode === 'clear') { - setValue(config.default); - } - else { - setValue(finalAnswer); - } - setError(isValid || 'You must provide a valid value'); - setStatus('idle'); - } - } - }; - editAsync(value, (error, answer) => void editCallback(error, answer), { - postfix, - ...fileProps, - }); - } - useEffect((rl) => { - if (!waitForUserInput) { - startEditor(rl); - } - }, []); - useKeypress((key, rl) => { - // Ignore keypress while our prompt is doing other processing. - if (status !== 'idle') { - return; - } - if (isEnterKey(key)) { - startEditor(rl); - } - }); - const message = theme.style.message(config.message, status); - let helpTip = ''; - if (status === 'idle') { - const enterKey = theme.style.key('enter'); - helpTip = theme.style.help(theme.style.waitingMessage(enterKey)); - } - let error = ''; - if (errorMsg) { - error = theme.style.error(errorMsg); - } - return [[prefix, message, helpTip].filter(Boolean).join(' '), error]; -}); diff --git a/sdks/nodejs/node_modules/@inquirer/editor/package.json b/sdks/nodejs/node_modules/@inquirer/editor/package.json deleted file mode 100644 index 6529312..0000000 --- a/sdks/nodejs/node_modules/@inquirer/editor/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "name": "@inquirer/editor", - "version": "5.0.8", - "description": "Inquirer multiline editor prompt", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "ui", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/editor/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/external-editor": "^2.0.3", - "@inquirer/type": "^4.0.3" - }, - "devDependencies": { - "@inquirer/testing": "^3.3.0", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "526eca2e64853510821ffd457561840ec0cbfb93" -} diff --git a/sdks/nodejs/node_modules/@inquirer/expand/LICENSE b/sdks/nodejs/node_modules/@inquirer/expand/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/expand/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/expand/README.md b/sdks/nodejs/node_modules/@inquirer/expand/README.md deleted file mode 100644 index 8e17971..0000000 --- a/sdks/nodejs/node_modules/@inquirer/expand/README.md +++ /dev/null @@ -1,141 +0,0 @@ -# `@inquirer/expand` - -Compact single select prompt. Every option is assigned a shortcut key, and selecting `h` will expand all the choices and their descriptions. - -![Expand prompt closed](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/expand-y.svg) -![Expand prompt expanded](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/expand-d.svg) - -# Installation - - - - - - - - - - - - - - - - - -
npmyarn
- -```sh -npm install @inquirer/prompts -``` - - - -```sh -yarn add @inquirer/prompts -``` - -
Or
- -```sh -npm install @inquirer/expand -``` - - - -```sh -yarn add @inquirer/expand -``` - -
- -# Usage - -```js -import { expand } from '@inquirer/prompts'; -// Or -// import expand from '@inquirer/expand'; - -const answer = await expand({ - message: 'Conflict on file.js', - default: 'y', - choices: [ - { - key: 'y', - name: 'Overwrite', - value: 'overwrite', - }, - { - key: 'a', - name: 'Overwrite this one and all next', - value: 'overwrite_all', - }, - { - key: 'd', - name: 'Show diff', - value: 'diff', - }, - { - key: 'x', - name: 'Abort', - value: 'abort', - }, - ], -}); -``` - -## Options - -| Property | Type | Required | Description | -| -------- | ----------------------- | -------- | ----------------------------------------------------------------------------------------- | -| message | `string` | yes | The question to ask | -| choices | `Choice[]` | yes | Array of the different allowed choices. The `h`/help option is always provided by default | -| default | `string` | no | Default choices to be selected. (value must be one of the choices `key`) | -| expanded | `boolean` | no | Expand the choices by default | -| theme | [See Theming](#Theming) | no | Customize look of the prompt. | - -`Separator` objects can be used in the `choices` array to render non-selectable lines in the choice list. By default it'll render a line, but you can provide the text as argument (`new Separator('-- Dependencies --')`). This option is often used to add labels to groups within long list of options. - -### `Choice` object - -The `Choice` object is typed as - -```ts -type Choice = { - value: Value; - name?: string; - key: string; -}; -``` - -Here's each property: - -- `value`: The value is what will be returned by `await expand()`. -- `name`: The string displayed in the choice list. It'll default to the stringify `value`. -- `key`: The input the use must provide to select the choice. Must be a lowercase single alpha-numeric character string. - -## Theming - -You can theme a prompt by passing a `theme` object option. The theme object only need to includes the keys you wish to modify, we'll fallback on the defaults for the rest. - -```ts -type Theme = { - prefix: string | { idle: string; done: string }; - spinner: { - interval: number; - frames: string[]; - }; - style: { - answer: (text: string) => string; - message: (text: string, status: 'idle' | 'done' | 'loading') => string; - error: (text: string) => string; - defaultAnswer: (text: string) => string; - highlight: (text: string) => string; - }; -}; -``` - -# License - -Copyright (c) 2023 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/expand/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/expand/dist/index.d.ts deleted file mode 100644 index 464cf21..0000000 --- a/sdks/nodejs/node_modules/@inquirer/expand/dist/index.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Separator, type Theme } from '@inquirer/core'; -import type { PartialDeep } from '@inquirer/type'; -type Key = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' | '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'; -type Choice = { - key: Key; - value: Value; -} | { - key: Key; - name: string; - value: Value; -}; -declare const _default: (config: { - message: string; - choices: readonly { - key: Key; - name: string; - }[] | readonly (Separator | Choice)[]; - default?: (Key | "h") | undefined; - expanded?: boolean | undefined; - theme?: PartialDeep | undefined; -}, context?: import("@inquirer/type").Context) => Promise; -export default _default; -export { Separator } from '@inquirer/core'; diff --git a/sdks/nodejs/node_modules/@inquirer/expand/dist/index.js b/sdks/nodejs/node_modules/@inquirer/expand/dist/index.js deleted file mode 100644 index 6b04fea..0000000 --- a/sdks/nodejs/node_modules/@inquirer/expand/dist/index.js +++ /dev/null @@ -1,108 +0,0 @@ -import { createPrompt, useMemo, useState, useKeypress, usePrefix, isEnterKey, makeTheme, Separator, } from '@inquirer/core'; -import { styleText } from 'node:util'; -function normalizeChoices(choices) { - return choices.map((choice) => { - if (Separator.isSeparator(choice)) { - return choice; - } - const name = 'name' in choice ? choice.name : String(choice.value); - const value = 'value' in choice ? choice.value : name; - return { - value: value, - name, - key: choice.key.toLowerCase(), - }; - }); -} -const helpChoice = { - key: 'h', - name: 'Help, list all options', - value: undefined, -}; -export default createPrompt((config, done) => { - const { default: defaultKey = 'h' } = config; - const choices = useMemo(() => normalizeChoices(config.choices), [config.choices]); - const [status, setStatus] = useState('idle'); - const [value, setValue] = useState(''); - const [expanded, setExpanded] = useState(config.expanded ?? false); - const [errorMsg, setError] = useState(); - const theme = makeTheme(config.theme); - const prefix = usePrefix({ theme, status }); - useKeypress((event, rl) => { - if (isEnterKey(event)) { - const answer = (value || defaultKey).toLowerCase(); - if (answer === 'h' && !expanded) { - setExpanded(true); - } - else { - const selectedChoice = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === answer); - if (selectedChoice) { - setStatus('done'); - // Set the value as we might've selected the default one. - setValue(answer); - done(selectedChoice.value); - } - else if (value === '') { - setError('Please input a value'); - } - else { - setError(`"${styleText('red', value)}" isn't an available option`); - } - } - } - else { - setValue(rl.line); - setError(undefined); - } - }); - const message = theme.style.message(config.message, status); - if (status === 'done') { - // If the prompt is done, it's safe to assume there is a selected value. - const selectedChoice = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === value.toLowerCase()); - return `${prefix} ${message} ${theme.style.answer(selectedChoice.name)}`; - } - const allChoices = expanded ? choices : [...choices, helpChoice]; - // Collapsed display style - let longChoices = ''; - let shortChoices = allChoices - .map((choice) => { - if (Separator.isSeparator(choice)) - return ''; - if (choice.key === defaultKey) { - return choice.key.toUpperCase(); - } - return choice.key; - }) - .join(''); - shortChoices = ` ${theme.style.defaultAnswer(shortChoices)}`; - // Expanded display style - if (expanded) { - shortChoices = ''; - longChoices = allChoices - .map((choice) => { - if (Separator.isSeparator(choice)) { - return ` ${choice.separator}`; - } - const line = ` ${choice.key}) ${choice.name}`; - if (choice.key === value.toLowerCase()) { - return theme.style.highlight(line); - } - return line; - }) - .join('\n'); - } - let helpTip = ''; - const currentOption = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === value.toLowerCase()); - if (currentOption) { - helpTip = `${styleText('cyan', '>>')} ${currentOption.name}`; - } - let error = ''; - if (errorMsg) { - error = theme.style.error(errorMsg); - } - return [ - `${prefix} ${message}${shortChoices} ${value}`, - [longChoices, helpTip, error].filter(Boolean).join('\n'), - ]; -}); -export { Separator } from '@inquirer/core'; diff --git a/sdks/nodejs/node_modules/@inquirer/expand/package.json b/sdks/nodejs/node_modules/@inquirer/expand/package.json deleted file mode 100644 index b18b699..0000000 --- a/sdks/nodejs/node_modules/@inquirer/expand/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "name": "@inquirer/expand", - "version": "5.0.8", - "description": "Inquirer checkbox prompt", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "ui", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/expand/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/type": "^4.0.3" - }, - "devDependencies": { - "@inquirer/testing": "^3.3.0", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "526eca2e64853510821ffd457561840ec0cbfb93" -} diff --git a/sdks/nodejs/node_modules/@inquirer/external-editor/LICENSE b/sdks/nodejs/node_modules/@inquirer/external-editor/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/external-editor/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/external-editor/README.md b/sdks/nodejs/node_modules/@inquirer/external-editor/README.md deleted file mode 100644 index 980df00..0000000 --- a/sdks/nodejs/node_modules/@inquirer/external-editor/README.md +++ /dev/null @@ -1,154 +0,0 @@ -# `@inquirer/external-editor` - -A Node.js module to edit a string with the user's preferred text editor using $VISUAL or $EDITOR. - -> [!NOTE] -> This package is a replacement for the unmaintained `external-editor`. It includes security fixes. - -# Installation - - - - - - - - - - -
npmyarn
- -```sh -npm install @inquirer/external-editor -``` - - - -```sh -yarn add @inquirer/external-editor -``` - -
- -## Usage - -A simple example using the `edit` function - -```ts -import { edit } from '@inquirer/external-editor'; - -const data = edit('\n\n# Please write your text above'); -console.log(data); -``` - -Example relying on the class construct - -```ts -import { - ExternalEditor, - CreateFileError, - ReadFileError, - RemoveFileError, - LaunchEditorError, -} from '@inquirer/external-editor'; - -try { - const editor = new ExternalEditor(); - const text = editor.run(); // the text is also available in editor.text - - if (editor.lastExitStatus !== 0) { - console.log('The editor exited with a non-zero code'); - } - - // Do things with the text - editor.cleanup(); -} catch (err) { - if (err instanceof CreateFileError) { - console.log('Failed to create the temporary file'); - } else if (err instanceof ReadFileError) { - console.log('Failed to read the temporary file'); - } else if (err instanceof LaunchEditorError) { - console.log('Failed to launch your editor'); - } else if (err instanceof RemoveFileError) { - console.log('Failed to remove the temporary file'); - } else { - throw err; - } -} -``` - -#### API - -**Convenience Functions** - -- `edit(text, config)` - - `text` (string) _Optional_ Defaults to empty string - - `config` (Config) _Optional_ Options for temporary file creation - - **Returns** (string) The contents of the file - - Could throw `CreateFileError`, `ReadFileError`, or `LaunchEditorError`, or `RemoveFileError` -- `editAsync(text, callback, config)` - - `text` (string) _Optional_ Defaults to empty string - - `callback` (function (error?, text?)) - - `error` could be of type `CreateFileError`, `ReadFileError`, `LaunchEditorError`, or `RemoveFileError` - - `text` (string) The contents of the file - - `config` (Config) _Optional_ Options for temporary file creation - -**Errors** - -- `CreateFileError` Error thrown if the temporary file could not be created. -- `ReadFileError` Error thrown if the temporary file could not be read. -- `RemoveFileError` Error thrown if the temporary file could not be removed during cleanup. -- `LaunchEditorError` Error thrown if the editor could not be launched. - -**External Editor Public Methods** - -- `new ExternalEditor(text, config)` - - `text` (string) _Optional_ Defaults to empty string - - `config` (Config) _Optional_ Options for temporary file creation - - Could throw `CreateFileError` -- `run()` Launches the editor. - - **Returns** (string) The contents of the file - - Could throw `LaunchEditorError` or `ReadFileError` -- `runAsync(callback)` Launches the editor in an async way - - `callback` (function (error?, text?)) - - `error` could be of type `ReadFileError` or `LaunchEditorError` - - `text` (string) The contents of the file -- `cleanup()` Removes the temporary file. - - Could throw `RemoveFileError` - -**External Editor Public Properties** - -- `text` (string) _readonly_ The text in the temporary file. -- `editor.bin` (string) The editor determined from the environment. -- `editor.args` (array) Default arguments for the bin -- `tempFile` (string) Path to temporary file. Can be changed, but be careful as the temporary file probably already - exists and would need be removed manually. -- `lastExitStatus` (number) The last exit code emitted from the editor. - -**Config Options** - -- `prefix` (string) _Optional_ A prefix for the file name. -- `postfix` (string) _Optional_ A postfix for the file name. Useful if you want to provide an extension. -- `mode` (number) _Optional_ Which mode to create the file with. e.g. 644 -- `dir` (string) _Optional_ Which path to store the file. - -## Why Synchronous? - -Everything is synchronous to make sure the editor has complete control of the stdin and stdout. Testing has shown -async launching of the editor can lead to issues when using readline or other packages which try to read from stdin or -write to stdout. Seeing as this will be used in an interactive CLI environment, I made the decision to force the package -to be synchronous. If you know a reliable way to force all stdin and stdout to be limited only to the child_process, -please submit a PR. - -If async is really needed, you can use `editAsync` or `runAsync`. If you are using readline or have anything else -listening to the stdin or you write to stdout, you will most likely have problem, so make sure to remove any other -listeners on stdin, stdout, or stderr. - -## Demo - -[![asciicast](https://asciinema.org/a/a1qh9lypbe65mj0ivfuoslz2s.png)](https://asciinema.org/a/a1qh9lypbe65mj0ivfuoslz2s) - -# License - -Copyright (c) 2025 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/CreateFileError.d.ts b/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/CreateFileError.d.ts deleted file mode 100644 index 0df1b3d..0000000 --- a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/CreateFileError.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/*** - * Node External Editor - * - * Kevin Gravier - * MIT 2018 - */ -export declare class CreateFileError extends Error { - originalError: Error; - constructor(originalError: Error); -} diff --git a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/CreateFileError.js b/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/CreateFileError.js deleted file mode 100644 index 6f52e5f..0000000 --- a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/CreateFileError.js +++ /dev/null @@ -1,13 +0,0 @@ -/*** - * Node External Editor - * - * Kevin Gravier - * MIT 2018 - */ -export class CreateFileError extends Error { - originalError; - constructor(originalError) { - super(`Failed to create temporary file. ${originalError.message}`); - this.originalError = originalError; - } -} diff --git a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/LaunchEditorError.d.ts b/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/LaunchEditorError.d.ts deleted file mode 100644 index 105077c..0000000 --- a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/LaunchEditorError.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/*** - * Node External Editor - * - * Kevin Gravier - * MIT 2018 - */ -export declare class LaunchEditorError extends Error { - originalError: Error; - constructor(originalError: Error); -} diff --git a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/LaunchEditorError.js b/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/LaunchEditorError.js deleted file mode 100644 index 43d7441..0000000 --- a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/LaunchEditorError.js +++ /dev/null @@ -1,13 +0,0 @@ -/*** - * Node External Editor - * - * Kevin Gravier - * MIT 2018 - */ -export class LaunchEditorError extends Error { - originalError; - constructor(originalError) { - super(`Failed to launch editor. ${originalError.message}`); - this.originalError = originalError; - } -} diff --git a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/ReadFileError.d.ts b/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/ReadFileError.d.ts deleted file mode 100644 index 438eae1..0000000 --- a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/ReadFileError.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/*** - * Node External Editor - * - * Kevin Gravier - * MIT 2018 - */ -export declare class ReadFileError extends Error { - originalError: Error; - constructor(originalError: Error); -} diff --git a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/ReadFileError.js b/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/ReadFileError.js deleted file mode 100644 index fe2307e..0000000 --- a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/ReadFileError.js +++ /dev/null @@ -1,13 +0,0 @@ -/*** - * Node External Editor - * - * Kevin Gravier - * MIT 2018 - */ -export class ReadFileError extends Error { - originalError; - constructor(originalError) { - super(`Failed to read temporary file. ${originalError.message}`); - this.originalError = originalError; - } -} diff --git a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/RemoveFileError.d.ts b/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/RemoveFileError.d.ts deleted file mode 100644 index a6402e4..0000000 --- a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/RemoveFileError.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/*** - * Node External Editor - * - * Kevin Gravier - * MIT 2018 - */ -export declare class RemoveFileError extends Error { - originalError: Error; - constructor(originalError: Error); -} diff --git a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/RemoveFileError.js b/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/RemoveFileError.js deleted file mode 100644 index 4fe6313..0000000 --- a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/errors/RemoveFileError.js +++ /dev/null @@ -1,13 +0,0 @@ -/*** - * Node External Editor - * - * Kevin Gravier - * MIT 2018 - */ -export class RemoveFileError extends Error { - originalError; - constructor(originalError) { - super(`Failed to remove temporary file. ${originalError.message}`); - this.originalError = originalError; - } -} diff --git a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/external-editor/dist/index.d.ts deleted file mode 100644 index 47b7c4b..0000000 --- a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/index.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { CreateFileError } from './errors/CreateFileError.ts'; -import { LaunchEditorError } from './errors/LaunchEditorError.ts'; -import { ReadFileError } from './errors/ReadFileError.ts'; -import { RemoveFileError } from './errors/RemoveFileError.ts'; -export interface IEditorParams { - args: string[]; - bin: string; -} -export interface IFileOptions { - prefix?: string; - postfix?: string; - mode?: number; - template?: string; - dir?: string; -} -export type StringCallback = (err: Error | undefined, result: string | undefined) => void; -export type VoidCallback = () => void; -export { CreateFileError, LaunchEditorError, ReadFileError, RemoveFileError }; -export declare function edit(text?: string, fileOptions?: IFileOptions): string; -export declare function editAsync(text: string | undefined, callback: StringCallback, fileOptions?: IFileOptions): void; -export declare class ExternalEditor { - text: string; - tempFile: string; - editor: IEditorParams; - lastExitStatus: number; - private fileOptions; - get temp_file(): string; - get last_exit_status(): number; - constructor(text?: string, fileOptions?: IFileOptions); - run(): string; - runAsync(callback: StringCallback): void; - cleanup(): void; - private determineEditor; - private createTemporaryFile; - private readTemporaryFile; - private removeTemporaryFile; - private launchEditor; - private launchEditorAsync; -} diff --git a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/index.js b/sdks/nodejs/node_modules/@inquirer/external-editor/dist/index.js deleted file mode 100644 index 263244a..0000000 --- a/sdks/nodejs/node_modules/@inquirer/external-editor/dist/index.js +++ /dev/null @@ -1,191 +0,0 @@ -import { detect } from 'chardet'; -import { spawn, spawnSync } from 'child_process'; -import { readFileSync, unlinkSync, writeFileSync } from 'fs'; -import path from 'node:path'; -import os from 'node:os'; -import { randomUUID } from 'node:crypto'; -import iconv from 'iconv-lite'; -import { CreateFileError } from "./errors/CreateFileError.js"; -import { LaunchEditorError } from "./errors/LaunchEditorError.js"; -import { ReadFileError } from "./errors/ReadFileError.js"; -import { RemoveFileError } from "./errors/RemoveFileError.js"; -export { CreateFileError, LaunchEditorError, ReadFileError, RemoveFileError }; -export function edit(text = '', fileOptions) { - const editor = new ExternalEditor(text, fileOptions); - editor.run(); - editor.cleanup(); - return editor.text; -} -export function editAsync(text = '', callback, fileOptions) { - const editor = new ExternalEditor(text, fileOptions); - editor.runAsync((err, result) => { - if (err) { - setImmediate(callback, err, undefined); - } - else { - try { - editor.cleanup(); - setImmediate(callback, undefined, result); - } - catch (cleanupError) { - setImmediate(callback, cleanupError, undefined); - } - } - }); -} -function sanitizeAffix(affix) { - if (!affix) - return ''; - return affix.replace(/[^a-zA-Z0-9_.-]/g, '_'); -} -function splitStringBySpace(str) { - const pieces = []; - let currentString = ''; - for (let strIndex = 0; strIndex < str.length; strIndex++) { - const currentLetter = str.charAt(strIndex); - if (strIndex > 0 && - currentLetter === ' ' && - str[strIndex - 1] !== '\\' && - currentString.length > 0) { - pieces.push(currentString); - currentString = ''; - } - else { - currentString = `${currentString}${currentLetter}`; - } - } - if (currentString.length > 0) { - pieces.push(currentString); - } - return pieces; -} -export class ExternalEditor { - text = ''; - tempFile; - editor; - lastExitStatus = 0; - fileOptions = {}; - get temp_file() { - console.log('DEPRECATED: temp_file. Use tempFile moving forward.'); - return this.tempFile; - } - get last_exit_status() { - console.log('DEPRECATED: last_exit_status. Use lastExitStatus moving forward.'); - return this.lastExitStatus; - } - constructor(text = '', fileOptions) { - this.text = text; - if (fileOptions) { - this.fileOptions = fileOptions; - } - this.determineEditor(); - this.createTemporaryFile(); - } - run() { - this.launchEditor(); - this.readTemporaryFile(); - return this.text; - } - runAsync(callback) { - try { - this.launchEditorAsync(() => { - try { - this.readTemporaryFile(); - setImmediate(callback, undefined, this.text); - } - catch (readError) { - setImmediate(callback, readError, undefined); - } - }); - } - catch (launchError) { - setImmediate(callback, launchError, undefined); - } - } - cleanup() { - this.removeTemporaryFile(); - } - determineEditor() { - const editor = process.env['VISUAL'] - ? process.env['VISUAL'] - : process.env['EDITOR'] - ? process.env['EDITOR'] - : process.platform.startsWith('win') - ? 'notepad' - : 'vim'; - const editorOpts = splitStringBySpace(editor).map((piece) => piece.replace('\\ ', ' ')); - const bin = editorOpts.shift(); - this.editor = { args: editorOpts, bin }; - } - createTemporaryFile() { - try { - const baseDir = this.fileOptions.dir ?? os.tmpdir(); - const id = randomUUID(); - const prefix = sanitizeAffix(this.fileOptions.prefix); - const postfix = sanitizeAffix(this.fileOptions.postfix); - const filename = `${prefix}${id}${postfix}`; - const candidate = path.resolve(baseDir, filename); - const baseResolved = path.resolve(baseDir) + path.sep; - if (!candidate.startsWith(baseResolved)) { - throw new Error('Resolved temporary file escaped the base directory'); - } - this.tempFile = candidate; - const opt = { encoding: 'utf8', flag: 'wx' }; - if (Object.prototype.hasOwnProperty.call(this.fileOptions, 'mode')) { - opt.mode = this.fileOptions.mode; - } - writeFileSync(this.tempFile, this.text, opt); - } - catch (createFileError) { - throw new CreateFileError(createFileError); - } - } - readTemporaryFile() { - try { - const tempFileBuffer = readFileSync(this.tempFile); - if (tempFileBuffer.length === 0) { - this.text = ''; - } - else { - let encoding = detect(tempFileBuffer) ?? 'utf8'; - if (!iconv.encodingExists(encoding)) { - // Probably a bad idea, but will at least prevent crashing - encoding = 'utf8'; - } - this.text = iconv.decode(tempFileBuffer, encoding); - } - } - catch (readFileError) { - throw new ReadFileError(readFileError); - } - } - removeTemporaryFile() { - try { - unlinkSync(this.tempFile); - } - catch (removeFileError) { - throw new RemoveFileError(removeFileError); - } - } - launchEditor() { - try { - const editorProcess = spawnSync(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: 'inherit' }); - this.lastExitStatus = editorProcess.status ?? 0; - } - catch (launchError) { - throw new LaunchEditorError(launchError); - } - } - launchEditorAsync(callback) { - try { - const editorProcess = spawn(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: 'inherit' }); - editorProcess.on('exit', (code) => { - this.lastExitStatus = code; - setImmediate(callback); - }); - } - catch (launchError) { - throw new LaunchEditorError(launchError); - } - } -} diff --git a/sdks/nodejs/node_modules/@inquirer/external-editor/package.json b/sdks/nodejs/node_modules/@inquirer/external-editor/package.json deleted file mode 100644 index 5d60dd9..0000000 --- a/sdks/nodejs/node_modules/@inquirer/external-editor/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "name": "@inquirer/external-editor", - "version": "2.0.3", - "description": "Edit a string with the users preferred text editor using $VISUAL or $ENVIRONMENT", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "editor", - "enquirer", - "external", - "external-editor", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "ui", - "user", - "visual", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/external-editor/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.2" - }, - "devDependencies": { - "@types/chardet": "^1.0.0", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "99d00a9adc53be8b7edf5926b2ec4ba0b792f68f" -} diff --git a/sdks/nodejs/node_modules/@inquirer/figures/LICENSE b/sdks/nodejs/node_modules/@inquirer/figures/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/figures/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/figures/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/figures/dist/index.d.ts deleted file mode 100644 index f9e48b5..0000000 --- a/sdks/nodejs/node_modules/@inquirer/figures/dist/index.d.ts +++ /dev/null @@ -1,275 +0,0 @@ -declare const common: { - circleQuestionMark: string; - questionMarkPrefix: string; - square: string; - squareDarkShade: string; - squareMediumShade: string; - squareLightShade: string; - squareTop: string; - squareBottom: string; - squareLeft: string; - squareRight: string; - squareCenter: string; - bullet: string; - dot: string; - ellipsis: string; - pointerSmall: string; - triangleUp: string; - triangleUpSmall: string; - triangleDown: string; - triangleDownSmall: string; - triangleLeftSmall: string; - triangleRightSmall: string; - home: string; - heart: string; - musicNote: string; - musicNoteBeamed: string; - arrowUp: string; - arrowDown: string; - arrowLeft: string; - arrowRight: string; - arrowLeftRight: string; - arrowUpDown: string; - almostEqual: string; - notEqual: string; - lessOrEqual: string; - greaterOrEqual: string; - identical: string; - infinity: string; - subscriptZero: string; - subscriptOne: string; - subscriptTwo: string; - subscriptThree: string; - subscriptFour: string; - subscriptFive: string; - subscriptSix: string; - subscriptSeven: string; - subscriptEight: string; - subscriptNine: string; - oneHalf: string; - oneThird: string; - oneQuarter: string; - oneFifth: string; - oneSixth: string; - oneEighth: string; - twoThirds: string; - twoFifths: string; - threeQuarters: string; - threeFifths: string; - threeEighths: string; - fourFifths: string; - fiveSixths: string; - fiveEighths: string; - sevenEighths: string; - line: string; - lineBold: string; - lineDouble: string; - lineDashed0: string; - lineDashed1: string; - lineDashed2: string; - lineDashed3: string; - lineDashed4: string; - lineDashed5: string; - lineDashed6: string; - lineDashed7: string; - lineDashed8: string; - lineDashed9: string; - lineDashed10: string; - lineDashed11: string; - lineDashed12: string; - lineDashed13: string; - lineDashed14: string; - lineDashed15: string; - lineVertical: string; - lineVerticalBold: string; - lineVerticalDouble: string; - lineVerticalDashed0: string; - lineVerticalDashed1: string; - lineVerticalDashed2: string; - lineVerticalDashed3: string; - lineVerticalDashed4: string; - lineVerticalDashed5: string; - lineVerticalDashed6: string; - lineVerticalDashed7: string; - lineVerticalDashed8: string; - lineVerticalDashed9: string; - lineVerticalDashed10: string; - lineVerticalDashed11: string; - lineDownLeft: string; - lineDownLeftArc: string; - lineDownBoldLeftBold: string; - lineDownBoldLeft: string; - lineDownLeftBold: string; - lineDownDoubleLeftDouble: string; - lineDownDoubleLeft: string; - lineDownLeftDouble: string; - lineDownRight: string; - lineDownRightArc: string; - lineDownBoldRightBold: string; - lineDownBoldRight: string; - lineDownRightBold: string; - lineDownDoubleRightDouble: string; - lineDownDoubleRight: string; - lineDownRightDouble: string; - lineUpLeft: string; - lineUpLeftArc: string; - lineUpBoldLeftBold: string; - lineUpBoldLeft: string; - lineUpLeftBold: string; - lineUpDoubleLeftDouble: string; - lineUpDoubleLeft: string; - lineUpLeftDouble: string; - lineUpRight: string; - lineUpRightArc: string; - lineUpBoldRightBold: string; - lineUpBoldRight: string; - lineUpRightBold: string; - lineUpDoubleRightDouble: string; - lineUpDoubleRight: string; - lineUpRightDouble: string; - lineUpDownLeft: string; - lineUpBoldDownBoldLeftBold: string; - lineUpBoldDownBoldLeft: string; - lineUpDownLeftBold: string; - lineUpBoldDownLeftBold: string; - lineUpDownBoldLeftBold: string; - lineUpDownBoldLeft: string; - lineUpBoldDownLeft: string; - lineUpDoubleDownDoubleLeftDouble: string; - lineUpDoubleDownDoubleLeft: string; - lineUpDownLeftDouble: string; - lineUpDownRight: string; - lineUpBoldDownBoldRightBold: string; - lineUpBoldDownBoldRight: string; - lineUpDownRightBold: string; - lineUpBoldDownRightBold: string; - lineUpDownBoldRightBold: string; - lineUpDownBoldRight: string; - lineUpBoldDownRight: string; - lineUpDoubleDownDoubleRightDouble: string; - lineUpDoubleDownDoubleRight: string; - lineUpDownRightDouble: string; - lineDownLeftRight: string; - lineDownBoldLeftBoldRightBold: string; - lineDownLeftBoldRightBold: string; - lineDownBoldLeftRight: string; - lineDownBoldLeftBoldRight: string; - lineDownBoldLeftRightBold: string; - lineDownLeftRightBold: string; - lineDownLeftBoldRight: string; - lineDownDoubleLeftDoubleRightDouble: string; - lineDownDoubleLeftRight: string; - lineDownLeftDoubleRightDouble: string; - lineUpLeftRight: string; - lineUpBoldLeftBoldRightBold: string; - lineUpLeftBoldRightBold: string; - lineUpBoldLeftRight: string; - lineUpBoldLeftBoldRight: string; - lineUpBoldLeftRightBold: string; - lineUpLeftRightBold: string; - lineUpLeftBoldRight: string; - lineUpDoubleLeftDoubleRightDouble: string; - lineUpDoubleLeftRight: string; - lineUpLeftDoubleRightDouble: string; - lineUpDownLeftRight: string; - lineUpBoldDownBoldLeftBoldRightBold: string; - lineUpDownBoldLeftBoldRightBold: string; - lineUpBoldDownLeftBoldRightBold: string; - lineUpBoldDownBoldLeftRightBold: string; - lineUpBoldDownBoldLeftBoldRight: string; - lineUpBoldDownLeftRight: string; - lineUpDownBoldLeftRight: string; - lineUpDownLeftBoldRight: string; - lineUpDownLeftRightBold: string; - lineUpBoldDownBoldLeftRight: string; - lineUpDownLeftBoldRightBold: string; - lineUpBoldDownLeftBoldRight: string; - lineUpBoldDownLeftRightBold: string; - lineUpDownBoldLeftBoldRight: string; - lineUpDownBoldLeftRightBold: string; - lineUpDoubleDownDoubleLeftDoubleRightDouble: string; - lineUpDoubleDownDoubleLeftRight: string; - lineUpDownLeftDoubleRightDouble: string; - lineCross: string; - lineBackslash: string; - lineSlash: string; -}; -declare const specialMainSymbols: { - tick: string; - info: string; - warning: string; - cross: string; - squareSmall: string; - squareSmallFilled: string; - circle: string; - circleFilled: string; - circleDotted: string; - circleDouble: string; - circleCircle: string; - circleCross: string; - circlePipe: string; - radioOn: string; - radioOff: string; - checkboxOn: string; - checkboxOff: string; - checkboxCircleOn: string; - checkboxCircleOff: string; - pointer: string; - triangleUpOutline: string; - triangleLeft: string; - triangleRight: string; - lozenge: string; - lozengeOutline: string; - hamburger: string; - smiley: string; - mustache: string; - star: string; - play: string; - nodejs: string; - oneSeventh: string; - oneNinth: string; - oneTenth: string; -}; -declare const specialFallbackSymbols: { - tick: string; - info: string; - warning: string; - cross: string; - squareSmall: string; - squareSmallFilled: string; - circle: string; - circleFilled: string; - circleDotted: string; - circleDouble: string; - circleCircle: string; - circleCross: string; - circlePipe: string; - radioOn: string; - radioOff: string; - checkboxOn: string; - checkboxOff: string; - checkboxCircleOn: string; - checkboxCircleOff: string; - pointer: string; - triangleUpOutline: string; - triangleLeft: string; - triangleRight: string; - lozenge: string; - lozengeOutline: string; - hamburger: string; - smiley: string; - mustache: string; - star: string; - play: string; - nodejs: string; - oneSeventh: string; - oneNinth: string; - oneTenth: string; -}; -export declare const mainSymbols: typeof common & typeof specialMainSymbols; -export declare const fallbackSymbols: (typeof common & typeof specialFallbackSymbols) & Record; -declare const figures: typeof mainSymbols | typeof fallbackSymbols; -export default figures; -export declare const replaceSymbols: (string: string, { useFallback }?: { - useFallback?: boolean; -}) => string; diff --git a/sdks/nodejs/node_modules/@inquirer/figures/dist/index.js b/sdks/nodejs/node_modules/@inquirer/figures/dist/index.js deleted file mode 100644 index d81e664..0000000 --- a/sdks/nodejs/node_modules/@inquirer/figures/dist/index.js +++ /dev/null @@ -1,314 +0,0 @@ -// process.env dot-notation access prints: -// Property 'TERM' comes from an index signature, so it must be accessed with ['TERM'].ts(4111) -/* eslint dot-notation: ["off"] */ -import process from 'node:process'; -// Ported from is-unicode-supported -function isUnicodeSupported() { - if (process.platform !== 'win32') { - return process.env['TERM'] !== 'linux'; // Linux console (kernel) - } - return (Boolean(process.env['WT_SESSION']) || // Windows Terminal - Boolean(process.env['TERMINUS_SUBLIME']) || // Terminus (<0.2.27) - process.env['ConEmuTask'] === '{cmd::Cmder}' || // ConEmu and cmder - process.env['TERM_PROGRAM'] === 'Terminus-Sublime' || - process.env['TERM_PROGRAM'] === 'vscode' || - process.env['TERM'] === 'xterm-256color' || - process.env['TERM'] === 'alacritty' || - process.env['TERMINAL_EMULATOR'] === 'JetBrains-JediTerm'); -} -// Ported from figures -const common = { - circleQuestionMark: '(?)', - questionMarkPrefix: '(?)', - square: '█', - squareDarkShade: '▓', - squareMediumShade: '▒', - squareLightShade: '░', - squareTop: '▀', - squareBottom: '▄', - squareLeft: '▌', - squareRight: '▐', - squareCenter: '■', - bullet: '●', - dot: '․', - ellipsis: '…', - pointerSmall: '›', - triangleUp: '▲', - triangleUpSmall: '▴', - triangleDown: '▼', - triangleDownSmall: '▾', - triangleLeftSmall: '◂', - triangleRightSmall: '▸', - home: '⌂', - heart: '♥', - musicNote: '♪', - musicNoteBeamed: '♫', - arrowUp: '↑', - arrowDown: '↓', - arrowLeft: '←', - arrowRight: '→', - arrowLeftRight: '↔', - arrowUpDown: '↕', - almostEqual: '≈', - notEqual: '≠', - lessOrEqual: '≤', - greaterOrEqual: '≥', - identical: '≡', - infinity: '∞', - subscriptZero: '₀', - subscriptOne: '₁', - subscriptTwo: '₂', - subscriptThree: '₃', - subscriptFour: '₄', - subscriptFive: '₅', - subscriptSix: '₆', - subscriptSeven: '₇', - subscriptEight: '₈', - subscriptNine: '₉', - oneHalf: '½', - oneThird: '⅓', - oneQuarter: '¼', - oneFifth: '⅕', - oneSixth: '⅙', - oneEighth: '⅛', - twoThirds: '⅔', - twoFifths: '⅖', - threeQuarters: '¾', - threeFifths: '⅗', - threeEighths: '⅜', - fourFifths: '⅘', - fiveSixths: '⅚', - fiveEighths: '⅝', - sevenEighths: '⅞', - line: '─', - lineBold: '━', - lineDouble: '═', - lineDashed0: '┄', - lineDashed1: '┅', - lineDashed2: '┈', - lineDashed3: '┉', - lineDashed4: '╌', - lineDashed5: '╍', - lineDashed6: '╴', - lineDashed7: '╶', - lineDashed8: '╸', - lineDashed9: '╺', - lineDashed10: '╼', - lineDashed11: '╾', - lineDashed12: '−', - lineDashed13: '–', - lineDashed14: '‐', - lineDashed15: '⁃', - lineVertical: '│', - lineVerticalBold: '┃', - lineVerticalDouble: '║', - lineVerticalDashed0: '┆', - lineVerticalDashed1: '┇', - lineVerticalDashed2: '┊', - lineVerticalDashed3: '┋', - lineVerticalDashed4: '╎', - lineVerticalDashed5: '╏', - lineVerticalDashed6: '╵', - lineVerticalDashed7: '╷', - lineVerticalDashed8: '╹', - lineVerticalDashed9: '╻', - lineVerticalDashed10: '╽', - lineVerticalDashed11: '╿', - lineDownLeft: '┐', - lineDownLeftArc: '╮', - lineDownBoldLeftBold: '┓', - lineDownBoldLeft: '┒', - lineDownLeftBold: '┑', - lineDownDoubleLeftDouble: '╗', - lineDownDoubleLeft: '╖', - lineDownLeftDouble: '╕', - lineDownRight: '┌', - lineDownRightArc: '╭', - lineDownBoldRightBold: '┏', - lineDownBoldRight: '┎', - lineDownRightBold: '┍', - lineDownDoubleRightDouble: '╔', - lineDownDoubleRight: '╓', - lineDownRightDouble: '╒', - lineUpLeft: '┘', - lineUpLeftArc: '╯', - lineUpBoldLeftBold: '┛', - lineUpBoldLeft: '┚', - lineUpLeftBold: '┙', - lineUpDoubleLeftDouble: '╝', - lineUpDoubleLeft: '╜', - lineUpLeftDouble: '╛', - lineUpRight: '└', - lineUpRightArc: '╰', - lineUpBoldRightBold: '┗', - lineUpBoldRight: '┖', - lineUpRightBold: '┕', - lineUpDoubleRightDouble: '╚', - lineUpDoubleRight: '╙', - lineUpRightDouble: '╘', - lineUpDownLeft: '┤', - lineUpBoldDownBoldLeftBold: '┫', - lineUpBoldDownBoldLeft: '┨', - lineUpDownLeftBold: '┥', - lineUpBoldDownLeftBold: '┩', - lineUpDownBoldLeftBold: '┪', - lineUpDownBoldLeft: '┧', - lineUpBoldDownLeft: '┦', - lineUpDoubleDownDoubleLeftDouble: '╣', - lineUpDoubleDownDoubleLeft: '╢', - lineUpDownLeftDouble: '╡', - lineUpDownRight: '├', - lineUpBoldDownBoldRightBold: '┣', - lineUpBoldDownBoldRight: '┠', - lineUpDownRightBold: '┝', - lineUpBoldDownRightBold: '┡', - lineUpDownBoldRightBold: '┢', - lineUpDownBoldRight: '┟', - lineUpBoldDownRight: '┞', - lineUpDoubleDownDoubleRightDouble: '╠', - lineUpDoubleDownDoubleRight: '╟', - lineUpDownRightDouble: '╞', - lineDownLeftRight: '┬', - lineDownBoldLeftBoldRightBold: '┳', - lineDownLeftBoldRightBold: '┯', - lineDownBoldLeftRight: '┰', - lineDownBoldLeftBoldRight: '┱', - lineDownBoldLeftRightBold: '┲', - lineDownLeftRightBold: '┮', - lineDownLeftBoldRight: '┭', - lineDownDoubleLeftDoubleRightDouble: '╦', - lineDownDoubleLeftRight: '╥', - lineDownLeftDoubleRightDouble: '╤', - lineUpLeftRight: '┴', - lineUpBoldLeftBoldRightBold: '┻', - lineUpLeftBoldRightBold: '┷', - lineUpBoldLeftRight: '┸', - lineUpBoldLeftBoldRight: '┹', - lineUpBoldLeftRightBold: '┺', - lineUpLeftRightBold: '┶', - lineUpLeftBoldRight: '┵', - lineUpDoubleLeftDoubleRightDouble: '╩', - lineUpDoubleLeftRight: '╨', - lineUpLeftDoubleRightDouble: '╧', - lineUpDownLeftRight: '┼', - lineUpBoldDownBoldLeftBoldRightBold: '╋', - lineUpDownBoldLeftBoldRightBold: '╈', - lineUpBoldDownLeftBoldRightBold: '╇', - lineUpBoldDownBoldLeftRightBold: '╊', - lineUpBoldDownBoldLeftBoldRight: '╉', - lineUpBoldDownLeftRight: '╀', - lineUpDownBoldLeftRight: '╁', - lineUpDownLeftBoldRight: '┽', - lineUpDownLeftRightBold: '┾', - lineUpBoldDownBoldLeftRight: '╂', - lineUpDownLeftBoldRightBold: '┿', - lineUpBoldDownLeftBoldRight: '╃', - lineUpBoldDownLeftRightBold: '╄', - lineUpDownBoldLeftBoldRight: '╅', - lineUpDownBoldLeftRightBold: '╆', - lineUpDoubleDownDoubleLeftDoubleRightDouble: '╬', - lineUpDoubleDownDoubleLeftRight: '╫', - lineUpDownLeftDoubleRightDouble: '╪', - lineCross: '╳', - lineBackslash: '╲', - lineSlash: '╱', -}; -const specialMainSymbols = { - tick: '✔', - info: 'ℹ', - warning: '⚠', - cross: '✘', - squareSmall: '◻', - squareSmallFilled: '◼', - circle: '◯', - circleFilled: '◉', - circleDotted: '◌', - circleDouble: '◎', - circleCircle: 'ⓞ', - circleCross: 'ⓧ', - circlePipe: 'Ⓘ', - radioOn: '◉', - radioOff: '◯', - checkboxOn: '☒', - checkboxOff: '☐', - checkboxCircleOn: 'ⓧ', - checkboxCircleOff: 'Ⓘ', - pointer: '❯', - triangleUpOutline: '△', - triangleLeft: '◀', - triangleRight: '▶', - lozenge: '◆', - lozengeOutline: '◇', - hamburger: '☰', - smiley: '㋡', - mustache: '෴', - star: '★', - play: '▶', - nodejs: '⬢', - oneSeventh: '⅐', - oneNinth: '⅑', - oneTenth: '⅒', -}; -const specialFallbackSymbols = { - tick: '√', - info: 'i', - warning: '‼', - cross: '×', - squareSmall: '□', - squareSmallFilled: '■', - circle: '( )', - circleFilled: '(*)', - circleDotted: '( )', - circleDouble: '( )', - circleCircle: '(○)', - circleCross: '(×)', - circlePipe: '(│)', - radioOn: '(*)', - radioOff: '( )', - checkboxOn: '[×]', - checkboxOff: '[ ]', - checkboxCircleOn: '(×)', - checkboxCircleOff: '( )', - pointer: '>', - triangleUpOutline: '∆', - triangleLeft: '◄', - triangleRight: '►', - lozenge: '♦', - lozengeOutline: '◊', - hamburger: '≡', - smiley: '☺', - mustache: '┌─┐', - star: '✶', - play: '►', - nodejs: '♦', - oneSeventh: '1/7', - oneNinth: '1/9', - oneTenth: '1/10', -}; -export const mainSymbols = { - ...common, - ...specialMainSymbols, -}; -export const fallbackSymbols = { - ...common, - ...specialFallbackSymbols, -}; -const shouldUseMain = isUnicodeSupported(); -const figures = shouldUseMain - ? mainSymbols - : fallbackSymbols; -export default figures; -const replacements = Object.entries(specialMainSymbols); -// On terminals which do not support Unicode symbols, substitute them to other symbols -export const replaceSymbols = (string, { useFallback = !shouldUseMain } = {}) => { - if (useFallback) { - for (const [key, mainSymbol] of replacements) { - const fallbackSymbol = fallbackSymbols[key]; - if (!fallbackSymbol) { - throw new Error(`Unable to find fallback for ${key}`); - } - string = string.replaceAll(mainSymbol, fallbackSymbol); - } - } - return string; -}; diff --git a/sdks/nodejs/node_modules/@inquirer/figures/package.json b/sdks/nodejs/node_modules/@inquirer/figures/package.json deleted file mode 100644 index 910c7e6..0000000 --- a/sdks/nodejs/node_modules/@inquirer/figures/package.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "name": "@inquirer/figures", - "version": "2.0.3", - "description": "Vendored version of figures, for CJS compatibility", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "types", - "typescript", - "ui", - "yeoman", - "yo", - "zsh" - ], - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "devDependencies": { - "typescript": "^5.9.3" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "99d00a9adc53be8b7edf5926b2ec4ba0b792f68f" -} diff --git a/sdks/nodejs/node_modules/@inquirer/input/LICENSE b/sdks/nodejs/node_modules/@inquirer/input/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/input/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/input/README.md b/sdks/nodejs/node_modules/@inquirer/input/README.md deleted file mode 100644 index 4abb749..0000000 --- a/sdks/nodejs/node_modules/@inquirer/input/README.md +++ /dev/null @@ -1,101 +0,0 @@ -# `@inquirer/input` - -Interactive free text input component for command line interfaces. Supports validation, filtering, transformation, etc. - -![Input prompt](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/input.svg) - -# Installation - - - - - - - - - - - - - - - - - -
npmyarn
- -```sh -npm install @inquirer/prompts -``` - - - -```sh -yarn add @inquirer/prompts -``` - -
Or
- -```sh -npm install @inquirer/input -``` - - - -```sh -yarn add @inquirer/input -``` - -
- -# Usage - -```js -import { input } from '@inquirer/prompts'; -// Or -// import input from '@inquirer/input'; - -const answer = await input({ message: 'Enter your name' }); -``` - -## Options - -| Property | Type | Required | Description | -| ------------ | ----------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| message | `string` | yes | The question to ask | -| default | `string` | no | Default value if no answer is provided; see the prefill option below for governing it's behaviour. | -| prefill | `'tab' \| 'editable'` | no | Defaults to `'tab'`. If set to `'tab'`, pressing `backspace` will clear the default and pressing `tab` will inline the value for edits; If set to `'editable'`, the default value will already be inlined to edit. | -| required | `boolean` | no | Defaults to `false`. If set to true, `undefined` (empty) will not be accepted for this. | -| transformer | `(string, { isFinal: boolean }) => string` | no | Transform/Format the raw value entered by the user. Once the prompt is completed, `isFinal` will be `true`. This function is purely visual, modify the answer in your code if needed. | -| validate | `string => boolean \| string \| Promise` | no | On submit, validate the filtered answered content. When returning a string, it'll be used as the error message displayed to the user. Note: returning a rejected promise, we'll assume a code error happened and crash. | -| pattern | `RegExp` | no | Regular expression to validate the input against. If the input doesn't match the pattern, validation will fail with the error message specified in `patternError`. | -| patternError | `string` | no | Error message to display when the input doesn't match the `pattern`. Defaults to `'Invalid input'`. | -| theme | [See Theming](#Theming) | no | Customize look of the prompt. | - -## Theming - -You can theme a prompt by passing a `theme` object option. The theme object only need to includes the keys you wish to modify, we'll fallback on the defaults for the rest. - -```ts -type Theme = { - prefix: string | { idle: string; done: string }; - spinner: { - interval: number; - frames: string[]; - }; - style: { - answer: (text: string) => string; - message: (text: string, status: 'idle' | 'done' | 'loading') => string; - error: (text: string) => string; - defaultAnswer: (text: string) => string; - }; - validationFailureMode: 'keep' | 'clear'; -}; -``` - -`validationFailureMode` defines the behavior of the prompt when the value submitted is invalid. By default, we'll keep the value allowing the user to edit it. When the theme option is set to `clear`, we'll remove and reset to an empty string. - -# License - -Copyright (c) 2023 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/input/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/input/dist/index.d.ts deleted file mode 100644 index a7c4e39..0000000 --- a/sdks/nodejs/node_modules/@inquirer/input/dist/index.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { type Theme } from '@inquirer/core'; -import type { PartialDeep } from '@inquirer/type'; -type InputTheme = { - validationFailureMode: 'keep' | 'clear'; -}; -type InputConfig = { - message: string; - default?: string; - prefill?: 'tab' | 'editable'; - required?: boolean; - transformer?: (value: string, { isFinal }: { - isFinal: boolean; - }) => string; - validate?: (value: string) => boolean | string | Promise; - theme?: PartialDeep>; - pattern?: RegExp; - patternError?: string; -}; -declare const _default: import("@inquirer/type").Prompt; -export default _default; diff --git a/sdks/nodejs/node_modules/@inquirer/input/dist/index.js b/sdks/nodejs/node_modules/@inquirer/input/dist/index.js deleted file mode 100644 index fc0cd8a..0000000 --- a/sdks/nodejs/node_modules/@inquirer/input/dist/index.js +++ /dev/null @@ -1,99 +0,0 @@ -import { createPrompt, useState, useKeypress, useEffect, usePrefix, isBackspaceKey, isEnterKey, isTabKey, makeTheme, } from '@inquirer/core'; -const inputTheme = { - validationFailureMode: 'keep', -}; -export default createPrompt((config, done) => { - const { prefill = 'tab' } = config; - const theme = makeTheme(inputTheme, config.theme); - const [status, setStatus] = useState('idle'); - // Coerce to string to handle runtime values that may be numbers despite TypeScript types - // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-conversion - const [defaultValue, setDefaultValue] = useState(String(config.default ?? '')); - const [errorMsg, setError] = useState(); - const [value, setValue] = useState(''); - const prefix = usePrefix({ status, theme }); - async function validate(value) { - const { required, pattern, patternError = 'Invalid input' } = config; - if (required && !value) { - return 'You must provide a value'; - } - if (pattern && !pattern.test(value)) { - return patternError; - } - if (typeof config.validate === 'function') { - return (await config.validate(value)) || 'You must provide a valid value'; - } - return true; - } - useKeypress(async (key, rl) => { - // Ignore keypress while our prompt is doing other processing. - if (status !== 'idle') { - return; - } - if (isEnterKey(key)) { - const answer = value || defaultValue; - setStatus('loading'); - const isValid = await validate(answer); - if (isValid === true) { - setValue(answer); - setStatus('done'); - done(answer); - } - else { - if (theme.validationFailureMode === 'clear') { - setValue(''); - } - else { - // Reset the readline line value to the previous value. On line event, the value - // get cleared, forcing the user to re-enter the value instead of fixing it. - rl.write(value); - } - setError(isValid); - setStatus('idle'); - } - } - else if (isBackspaceKey(key) && !value) { - setDefaultValue(''); - } - else if (isTabKey(key) && !value) { - setDefaultValue(''); - rl.clearLine(0); // Remove the tab character. - rl.write(defaultValue); - setValue(defaultValue); - } - else { - setValue(rl.line); - setError(undefined); - } - }); - // If prefill is set to 'editable' cut out the default value and paste into current state and the user's cli buffer - // They can edit the value immediately instead of needing to press 'tab' - useEffect((rl) => { - if (prefill === 'editable' && defaultValue) { - rl.write(defaultValue); - setValue(defaultValue); - } - }, []); - const message = theme.style.message(config.message, status); - let formattedValue = value; - if (typeof config.transformer === 'function') { - formattedValue = config.transformer(value, { isFinal: status === 'done' }); - } - else if (status === 'done') { - formattedValue = theme.style.answer(value); - } - let defaultStr; - if (defaultValue && status !== 'done' && !value) { - defaultStr = theme.style.defaultAnswer(defaultValue); - } - let error = ''; - if (errorMsg) { - error = theme.style.error(errorMsg); - } - return [ - [prefix, message, defaultStr, formattedValue] - .filter((v) => v !== undefined) - .join(' '), - error, - ]; -}); diff --git a/sdks/nodejs/node_modules/@inquirer/input/package.json b/sdks/nodejs/node_modules/@inquirer/input/package.json deleted file mode 100644 index a42063c..0000000 --- a/sdks/nodejs/node_modules/@inquirer/input/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "name": "@inquirer/input", - "version": "5.0.8", - "description": "Inquirer input text prompt", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "ui", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/input/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/type": "^4.0.3" - }, - "devDependencies": { - "@inquirer/testing": "^3.3.0", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "526eca2e64853510821ffd457561840ec0cbfb93" -} diff --git a/sdks/nodejs/node_modules/@inquirer/number/LICENSE b/sdks/nodejs/node_modules/@inquirer/number/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/number/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/number/README.md b/sdks/nodejs/node_modules/@inquirer/number/README.md deleted file mode 100644 index f303e36..0000000 --- a/sdks/nodejs/node_modules/@inquirer/number/README.md +++ /dev/null @@ -1,95 +0,0 @@ -# `@inquirer/number` - -Interactive free number input component for command line interfaces. Supports validation, filtering, transformation, etc. - -# Installation - - - - - - - - - - - - - - - - - -
npmyarn
- -```sh -npm install @inquirer/prompts -``` - - - -```sh -yarn add @inquirer/prompts -``` - -
Or
- -```sh -npm install @inquirer/number -``` - - - -```sh -yarn add @inquirer/number -``` - -
- -# Usage - -```js -import { number } from '@inquirer/prompts'; -// Or -// import number from '@inquirer/number'; - -const answer = await number({ message: 'Enter your age' }); -``` - -## Options - -| Property | Type | Required | Description | -| -------- | -------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| message | `string` | yes | The question to ask | -| default | `number` | no | Default value if no answer is provided (clear it by pressing backspace) | -| min | `number` | no | The minimum value to accept for this input. | -| max | `number` | no | The maximum value to accept for this input. | -| step | `number \| 'any'` | no | The step option is a number that specifies the granularity that the value must adhere to. Only values which are equal to the basis for stepping (min if specified) are valid. This value defaults to 1, meaning by default the prompt will only allow integers. | -| required | `boolean` | no | Defaults to `false`. If set to true, `undefined` (empty) will not be accepted for this. | -| validate | `(number \| undefined) => boolean \| string \| Promise` | no | On submit, validate the filtered answered content. When returning a string, it'll be used as the error message displayed to the user. Note: returning a rejected promise, we'll assume a code error happened and crash. | -| theme | [See Theming](#Theming) | no | Customize look of the prompt. | - -## Theming - -You can theme a prompt by passing a `theme` object option. The theme object only need to includes the keys you wish to modify, we'll fallback on the defaults for the rest. - -```ts -type Theme = { - prefix: string | { idle: string; done: string }; - spinner: { - interval: number; - frames: string[]; - }; - style: { - answer: (text: string) => string; - message: (text: string, status: 'idle' | 'done' | 'loading') => string; - error: (text: string) => string; - defaultAnswer: (text: string) => string; - }; -}; -``` - -# License - -Copyright (c) 2023 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/number/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/number/dist/index.d.ts deleted file mode 100644 index 663a9cb..0000000 --- a/sdks/nodejs/node_modules/@inquirer/number/dist/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { type Theme } from '@inquirer/core'; -import type { PartialDeep } from '@inquirer/type'; -declare const _default: (config: { - message: string; - default?: number | undefined; - min?: number | undefined; - max?: number | undefined; - step?: number | "any" | undefined; - required?: Required | undefined; - validate?: ((value: Required extends true ? number : number | undefined) => boolean | string | Promise) | undefined; - theme?: PartialDeep | undefined; -}, context?: import("@inquirer/type").Context) => Promise; -export default _default; diff --git a/sdks/nodejs/node_modules/@inquirer/number/dist/index.js b/sdks/nodejs/node_modules/@inquirer/number/dist/index.js deleted file mode 100644 index 2bb83c5..0000000 --- a/sdks/nodejs/node_modules/@inquirer/number/dist/index.js +++ /dev/null @@ -1,94 +0,0 @@ -import { createPrompt, useState, useKeypress, usePrefix, isBackspaceKey, isEnterKey, isTabKey, makeTheme, } from '@inquirer/core'; -function isStepOf(value, step, min) { - const valuePow = value * Math.pow(10, 6); - const stepPow = step * Math.pow(10, 6); - const minPow = min * Math.pow(10, 6); - return (valuePow - (Number.isFinite(min) ? minPow : 0)) % stepPow === 0; -} -function validateNumber(value, { min, max, step, }) { - if (value == null || Number.isNaN(value)) { - return false; - } - else if (value < min || value > max) { - return `Value must be between ${min} and ${max}`; - } - else if (step !== 'any' && !isStepOf(value, step, min)) { - return `Value must be a multiple of ${step}${Number.isFinite(min) ? ` starting from ${min}` : ''}`; - } - return true; -} -export default createPrompt((config, done) => { - const { validate = () => true, min = -Infinity, max = Infinity, step = 1, required = false, } = config; - const theme = makeTheme(config.theme); - const [status, setStatus] = useState('idle'); - const [value, setValue] = useState(''); // store the input value as string and convert to number on "Enter" - // Ignore default if not valid. - const validDefault = validateNumber(config.default, { min, max, step }) === true - ? config.default?.toString() - : undefined; - const [defaultValue = '', setDefaultValue] = useState(validDefault); - const [errorMsg, setError] = useState(); - const prefix = usePrefix({ status, theme }); - useKeypress(async (key, rl) => { - // Ignore keypress while our prompt is doing other processing. - if (status !== 'idle') { - return; - } - if (isEnterKey(key)) { - const input = value || defaultValue; - const answer = input === '' ? undefined : Number(input); - setStatus('loading'); - let isValid = true; - if (required || answer != null) { - isValid = validateNumber(answer, { min, max, step }); - } - if (isValid === true) { - isValid = await validate(answer); - } - if (isValid === true) { - setValue(String(answer ?? '')); - setStatus('done'); - done(answer); - } - else { - // Reset the readline line value to the previous value. On line event, the value - // get cleared, forcing the user to re-enter the value instead of fixing it. - rl.write(value); - setError(isValid || 'You must provide a valid numeric value'); - setStatus('idle'); - } - } - else if (isBackspaceKey(key) && !value) { - setDefaultValue(undefined); - } - else if (isTabKey(key) && !value) { - setDefaultValue(undefined); - rl.clearLine(0); // Remove the tab character. - rl.write(defaultValue); - setValue(defaultValue); - } - else { - setValue(rl.line); - setError(undefined); - } - }); - const message = theme.style.message(config.message, status); - let formattedValue = value; - if (status === 'done') { - formattedValue = theme.style.answer(value); - } - let defaultStr; - if (defaultValue && status !== 'done' && !value) { - defaultStr = theme.style.defaultAnswer(defaultValue); - } - let error = ''; - if (errorMsg) { - error = theme.style.error(errorMsg); - } - return [ - [prefix, message, defaultStr, formattedValue] - .filter((v) => v !== undefined) - .join(' '), - error, - ]; -}); diff --git a/sdks/nodejs/node_modules/@inquirer/number/package.json b/sdks/nodejs/node_modules/@inquirer/number/package.json deleted file mode 100644 index 5c8ede0..0000000 --- a/sdks/nodejs/node_modules/@inquirer/number/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "name": "@inquirer/number", - "version": "4.0.8", - "description": "Inquirer number prompt", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "ui", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/number/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/type": "^4.0.3" - }, - "devDependencies": { - "@inquirer/testing": "^3.3.0", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "526eca2e64853510821ffd457561840ec0cbfb93" -} diff --git a/sdks/nodejs/node_modules/@inquirer/password/LICENSE b/sdks/nodejs/node_modules/@inquirer/password/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/password/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/password/README.md b/sdks/nodejs/node_modules/@inquirer/password/README.md deleted file mode 100644 index b265ad5..0000000 --- a/sdks/nodejs/node_modules/@inquirer/password/README.md +++ /dev/null @@ -1,93 +0,0 @@ -# `@inquirer/password` - -Interactive password input component for command line interfaces. Supports input validation and masked or transparent modes. - -![Password prompt](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/password.svg) - -# Installation - - - - - - - - - - - - - - - - - -
npmyarn
- -```sh -npm install @inquirer/prompts -``` - - - -```sh -yarn add @inquirer/prompts -``` - -
Or
- -```sh -npm install @inquirer/password -``` - - - -```sh -yarn add @inquirer/password -``` - -
- -# Usage - -```js -import { password } from '@inquirer/prompts'; -// Or -// import password from '@inquirer/password'; - -const answer = await password({ message: 'Enter your name' }); -``` - -## Options - -| Property | Type | Required | Description | -| -------- | ----------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| message | `string` | yes | The question to ask | -| mask | `boolean` | no | Show a `*` mask over the input or keep it transparent | -| validate | `string => boolean \| string \| Promise` | no | On submit, validate the filtered answered content. When returning a string, it'll be used as the error message displayed to the user. Note: returning a rejected promise, we'll assume a code error happened and crash. | -| theme | [See Theming](#Theming) | no | Customize look of the prompt. | - -## Theming - -You can theme a prompt by passing a `theme` object option. The theme object only need to includes the keys you wish to modify, we'll fallback on the defaults for the rest. - -```ts -type Theme = { - prefix: string | { idle: string; done: string }; - spinner: { - interval: number; - frames: string[]; - }; - style: { - answer: (text: string) => string; - message: (text: string, status: 'idle' | 'done' | 'loading') => string; - error: (text: string) => string; - help: (text: string) => string; - }; -}; -``` - -# License - -Copyright (c) 2023 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/password/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/password/dist/index.d.ts deleted file mode 100644 index 345e323..0000000 --- a/sdks/nodejs/node_modules/@inquirer/password/dist/index.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { type Theme } from '@inquirer/core'; -import type { PartialDeep } from '@inquirer/type'; -type PasswordTheme = { - style: { - maskedText: string; - }; -}; -type PasswordConfig = { - message: string; - mask?: boolean | string; - validate?: (value: string) => boolean | string | Promise; - theme?: PartialDeep>; -}; -declare const _default: import("@inquirer/type").Prompt; -export default _default; diff --git a/sdks/nodejs/node_modules/@inquirer/password/dist/index.js b/sdks/nodejs/node_modules/@inquirer/password/dist/index.js deleted file mode 100644 index c870e74..0000000 --- a/sdks/nodejs/node_modules/@inquirer/password/dist/index.js +++ /dev/null @@ -1,60 +0,0 @@ -import { createPrompt, useState, useKeypress, usePrefix, isEnterKey, makeTheme, } from '@inquirer/core'; -import { cursorHide } from '@inquirer/ansi'; -const passwordTheme = { - style: { - maskedText: '[input is masked]', - }, -}; -export default createPrompt((config, done) => { - const { validate = () => true } = config; - const theme = makeTheme(passwordTheme, config.theme); - const [status, setStatus] = useState('idle'); - const [errorMsg, setError] = useState(); - const [value, setValue] = useState(''); - const prefix = usePrefix({ status, theme }); - useKeypress(async (key, rl) => { - // Ignore keypress while our prompt is doing other processing. - if (status !== 'idle') { - return; - } - if (isEnterKey(key)) { - const answer = value; - setStatus('loading'); - const isValid = await validate(answer); - if (isValid === true) { - setValue(answer); - setStatus('done'); - done(answer); - } - else { - // Reset the readline line value to the previous value. On line event, the value - // get cleared, forcing the user to re-enter the value instead of fixing it. - rl.write(value); - setError(isValid || 'You must provide a valid value'); - setStatus('idle'); - } - } - else { - setValue(rl.line); - setError(undefined); - } - }); - const message = theme.style.message(config.message, status); - let formattedValue = ''; - let helpTip; - if (config.mask) { - const maskChar = typeof config.mask === 'string' ? config.mask : '*'; - formattedValue = maskChar.repeat(value.length); - } - else if (status !== 'done') { - helpTip = `${theme.style.help(theme.style.maskedText)}${cursorHide}`; - } - if (status === 'done') { - formattedValue = theme.style.answer(formattedValue); - } - let error = ''; - if (errorMsg) { - error = theme.style.error(errorMsg); - } - return [[prefix, message, config.mask ? formattedValue : helpTip].join(' '), error]; -}); diff --git a/sdks/nodejs/node_modules/@inquirer/password/package.json b/sdks/nodejs/node_modules/@inquirer/password/package.json deleted file mode 100644 index 816bb00..0000000 --- a/sdks/nodejs/node_modules/@inquirer/password/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "name": "@inquirer/password", - "version": "5.0.8", - "description": "Inquirer password prompt", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "ui", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/password/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "dependencies": { - "@inquirer/ansi": "^2.0.3", - "@inquirer/core": "^11.1.5", - "@inquirer/type": "^4.0.3" - }, - "devDependencies": { - "@inquirer/testing": "^3.3.0", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "526eca2e64853510821ffd457561840ec0cbfb93" -} diff --git a/sdks/nodejs/node_modules/@inquirer/prompts/LICENSE b/sdks/nodejs/node_modules/@inquirer/prompts/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/prompts/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/prompts/README.md b/sdks/nodejs/node_modules/@inquirer/prompts/README.md deleted file mode 100644 index 333537a..0000000 --- a/sdks/nodejs/node_modules/@inquirer/prompts/README.md +++ /dev/null @@ -1,543 +0,0 @@ -Inquirer Logo - -# Inquirer - -[![npm](https://badge.fury.io/js/@inquirer%2Fprompts.svg)](https://www.npmjs.com/package/@inquirer/prompts) -[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FSBoudrias%2FInquirer.js.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FSBoudrias%2FInquirer.js?ref=badge_shield) - -A collection of common interactive command line user interfaces. - -![List prompt](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/list.svg) - -Give it a try in your own terminal! - -```sh -npx @inquirer/demo@latest -``` - -# Installation - - - - - - - - - - - - - - -
npmyarnpnpmbun
- -```sh -npm install @inquirer/prompts -``` - - - -```sh -yarn add @inquirer/prompts -``` - - - -```sh -pnpm add @inquirer/prompts -``` - - - -```sh -bun add @inquirer/prompts -``` - -
- -> [!NOTE] -> Inquirer recently underwent a rewrite from the ground up to reduce the package size and improve performance. The previous version of the package is still maintained (though not actively developed), and offered hundreds of community contributed prompts that might not have been migrated to the latest API. If this is what you're looking for, the [previous package is over here](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/inquirer). - -# Usage - -```js -import { input } from '@inquirer/prompts'; - -const answer = await input({ message: 'Enter your name' }); -``` - -# Prompts - -## [Input](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/input) - -![Input prompt](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/input.svg) - -```js -import { input } from '@inquirer/prompts'; -``` - -[See documentation](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/input) for usage example and options documentation. - -## [Select](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/select) - -![Select prompt](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/list.svg) - -```js -import { select } from '@inquirer/prompts'; -``` - -[See documentation](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/select) for usage example and options documentation. - -## [Checkbox](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/checkbox) - -![Checkbox prompt](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/checkbox.svg) - -```js -import { checkbox } from '@inquirer/prompts'; -``` - -[See documentation](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/checkbox) for usage example and options documentation. - -## [Confirm](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/confirm) - -![Confirm prompt](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/confirm.svg) - -```js -import { confirm } from '@inquirer/prompts'; -``` - -[See documentation](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/confirm) for usage example and options documentation. - -## [Search](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/search) - -![search prompt](https://raw.githubusercontent.com/SBoudrias/Inquirer.js/f459199e679aec7676cecc0fc12ef8a4cd3dda0b/assets/screenshots/search.png) - -```js -import { search } from '@inquirer/prompts'; -``` - -[See documentation](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/search) for usage example and options documentation. - -## [Password](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/password) - -![Password prompt](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/password.svg) - -```js -import { password } from '@inquirer/prompts'; -``` - -[See documentation](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/password) for usage example and options documentation. - -## [Expand](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/expand) - -![Expand prompt closed](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/expand-y.svg) -![Expand prompt expanded](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/expand-d.svg) - -```js -import { expand } from '@inquirer/prompts'; -``` - -[See documentation](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/expand) for usage example and options documentation. - -## [Editor](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/editor) - -Launches an instance of the users preferred editor on a temporary file. Once the user exits their editor, the content of the temporary file is read as the answer. The editor used is determined by reading the $VISUAL or $EDITOR environment variables. If neither of those are present, the OS default is used (notepad on Windows, vim on Mac or Linux.) - -```js -import { editor } from '@inquirer/prompts'; -``` - -[See documentation](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/editor) for usage example and options documentation. - -## [Number](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/number) - -Very similar to the `input` prompt, but with built-in number validation configuration option. - -```js -import { number } from '@inquirer/prompts'; -``` - -[See documentation](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/number) for usage example and options documentation. - -## [Raw List](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/rawlist) - -![Raw list prompt](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/rawlist.svg) - -```js -import { rawlist } from '@inquirer/prompts'; -``` - -[See documentation](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/rawlist) for usage example and options documentation. - -# Internationalization (i18n) - -Need prompts in a language other than English? The [`@inquirer/i18n`](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/i18n) package is a drop-in replacement for `@inquirer/prompts` with built-in localization. - -The root import automatically detects your locale from the `LANGUAGE`, `LC_ALL`, `LC_MESSAGES`, and `LANG` environment variables (falling back to the `Intl` API). If no supported locale is found, English is used. - -```js -// Drop-in replacement — locale is auto-detected from environment variables -import { input, select, confirm } from '@inquirer/i18n'; -``` - -Built-in locales include English, French, Spanish, Chinese (Simplified), and Portuguese. You can also pin to a specific language via sub-path imports (e.g. `@inquirer/i18n/fr`), or use the `createLocalizedPrompts` and `registerLocale` APIs to add your own. - -[See the full documentation](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/i18n) for available languages and how to create a custom locale. - -# Create your own prompts - -The [API documentation is over here](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/core), and our [testing utilities here](https://github.com/SBoudrias/Inquirer.js/tree/main/packages/testing). - -# Advanced usage - -All inquirer prompts are a function taking 2 arguments. The first argument is the prompt configuration (unique to each prompt). The second is providing contextual or runtime configuration. - -The context options are: - -| Property | Type | Required | Description | -| ----------------- | ----------------------- | -------- | ------------------------------------------------------------ | -| input | `NodeJS.ReadableStream` | no | The stdin stream (defaults to `process.stdin`) | -| output | `NodeJS.WritableStream` | no | The stdout stream (defaults to `process.stdout`) | -| clearPromptOnDone | `boolean` | no | If true, we'll clear the screen after the prompt is answered | -| signal | `AbortSignal` | no | An AbortSignal to cancel prompts asynchronously | - -> [!WARNING] -> When providing an input stream or piping `process.stdin`, it's very likely you need to call `process.stdin.setRawMode(true)` -> before calling inquirer functions. Node.js usually does it automatically, but when we shadow the stdin, Node can loss track -> and not know it has to. If the prompt isn't interactive (arrows don't work, etc), it's likely due to this. - -Example: - -```js -import { confirm } from '@inquirer/prompts'; - -const allowEmail = await confirm( - { message: 'Do you allow us to send you email?' }, - { - output: new Stream.Writable({ - write(chunk, _encoding, next) { - // Do something - next(); - }, - }), - clearPromptOnDone: true, - }, -); -``` - -## Canceling prompt - -This can be done with either an `AbortController` or `AbortSignal`. - -```js -// Example 1: using built-in AbortSignal utilities -import { confirm } from '@inquirer/prompts'; - -const answer = await confirm({ ... }, { signal: AbortSignal.timeout(5000) }); -``` - -```js -// Example 2: implementing custom cancellation with an AbortController -import { confirm } from '@inquirer/prompts'; - -const controller = new AbortController(); -setTimeout(() => { - controller.abort(); // This will reject the promise -}, 5000); - -const answer = await confirm({ ... }, { signal: controller.signal }); -``` - -# Recipes - -## Handling `ctrl+c` gracefully - -When a user press `ctrl+c` to exit a prompt, Inquirer rejects the prompt promise. This is the expected behavior in order to allow your program to teardown/cleanup its environment. When using `async/await`, rejected promises throw their error. When unhandled, those errors print their stack trace in your user's terminal. - -``` -ExitPromptError: User force closed the prompt with 0 null - at file://example/packages/core/dist/esm/lib/create-prompt.js:55:20 - at Emitter.emit (file://example/node_modules/signal-exit/dist/mjs/index.js:67:19) - at #processEmit (file://example/node_modules/signal-exit/dist/mjs/index.js:236:27) - at #process.emit (file://example/node_modules/signal-exit/dist/mjs/index.js:187:37) - at process.callbackTrampoline (node:internal/async_hooks:130:17) -``` - -This isn't a great UX, which is why we highly recommend you to handle those errors gracefully. - -First option is to wrap your scripts in `try/catch`; like [we do in our demo program](https://github.com/SBoudrias/Inquirer.js/blob/649e78147cbb6390a162ff842d4b21d53a233472/packages/demo/src/index.ts#L89-L95). Or handle the error in your CLI framework mechanism; for example [`Clipanion catch` method](https://mael.dev/clipanion/docs/errors#custom-error-handling). - -Lastly, you could handle the error globally with an event listener and silence it. - -```ts -process.on('uncaughtException', (error) => { - if (error instanceof Error && error.name === 'ExitPromptError') { - console.log('👋 until next time!'); - } else { - // Rethrow unknown errors - throw error; - } -}); -``` - -## Get answers in an object - -When asking many questions, you might not want to keep one variable per answer everywhere. In which case, you can put the answer inside an object. - -```js -import { input, confirm } from '@inquirer/prompts'; - -const answers = { - firstName: await input({ message: "What's your first name?" }), - allowEmail: await confirm({ message: 'Do you allow us to send you email?' }), -}; - -console.log(answers.firstName); -``` - -## Ask a question conditionally - -Maybe some questions depend on some other question's answer. - -```js -import { input, confirm } from '@inquirer/prompts'; - -const allowEmail = await confirm({ message: 'Do you allow us to send you email?' }); - -let email; -if (allowEmail) { - email = await input({ message: 'What is your email address' }); -} -``` - -## Get default value after timeout - -```js -import { input } from '@inquirer/prompts'; - -const answer = await input( - { message: 'Enter a value (timing out in 5 seconds)' }, - { signal: AbortSignal.timeout(5000) }, -).catch((error) => { - if (error.name === 'AbortPromptError') { - return 'Default value'; - } - - throw error; -}); -``` - -## Using as pre-commit/git hooks, or scripts - -By default scripts ran from tools like `husky`/`lint-staged` might not run inside an interactive shell. In non-interactive shell, Inquirer cannot run, and users cannot send keypress events to the process. - -For it to work, you must make sure you start a `tty` (or "interactive" input stream.) - -If those scripts are set within your `package.json`, you can define the stream like so: - -```json - "precommit": "my-script < /dev/tty" -``` - -Or if in a shell script file, you'll do it like so: (on Windows that's likely your only option) - -```sh -#!/bin/sh -exec < /dev/tty - -node my-script.js -``` - -## Using with nodemon - -When using inquirer prompts with nodemon, you need to pass the `--no-stdin` flag for everything to work as expected. - -```sh -npx nodemon ./packages/demo/demos/password.mjs --no-stdin -``` - -Note that for most of you, you'll be able to use the new watch-mode built-in Node. This mode works out of the box with inquirer. - -```sh -# One of depending on your need -node --watch script.js -node --watch-path=packages/ packages/demo/ -``` - -## Wait for config - -Maybe some question configuration require to await a value. - -```js -import { confirm } from '@inquirer/prompts'; - -const answer = await confirm({ message: await getMessage() }); -``` - -## Usage with `npx` within bash scripts - -You can use Inquirer prompts directly in the shell via [`npx`](https://docs.npmjs.com/cli/v8/commands/npx), which is useful for quick scripts or `package.json` commands. - -A community library, [@inquirer-cli](https://github.com/fishballapp/inquirer-cli), exposes each prompt as a standalone CLI. - -For example, to prompt for input: - -```bash -name=$(npx -y @inquirer-cli/input -r "What is your name?") -echo "Hello, $name!" -``` - -Or to create an interactive version bump: - -```bash -$ npm version $(npx -y @inquirer-cli/select -c patch -c minor -c major 'Select Version') -``` - -Find out more: [@inquirer-cli](https://github.com/fishballapp/inquirer-cli). - -# Community prompts - -If you created a cool prompt, [send us a PR adding it](https://github.com/SBoudrias/Inquirer.js/edit/main/packages/prompts/README.md) to the list below! - -[**Interactive List Prompt**](https://github.com/pgibler/inquirer-interactive-list-prompt)
-Select a choice either with arrow keys + Enter or by pressing a key associated with a choice. - -``` -? Choose an option: -> Run command (D) - Quit (Q) -``` - -[**Action Select Prompt**](https://github.com/zenithlight/inquirer-action-select)
-Choose an item from a list and choose an action to take by pressing a key. - -``` -? Choose a file Open Edit Delete -❯ image.png - audio.mp3 - code.py -``` - -[**Table Multiple Prompt**](https://github.com/Bartheleway/inquirer-table-multiple)
-Select multiple answer from a table display. - -```sh -Choose between choices? (Press to select, to move rows, - to move columns) - -┌──────────┬───────┬───────┐ -│ 1-2 of 2 │ Yes? │ No? | -├──────────┼───────┼───────┤ -│ Choice 1 │ [ ◯ ] │ ◯ | -├──────────┼───────┼───────┤ -│ Choice 2 │ ◯ │ ◯ | -└──────────┴───────┴───────┘ - -``` - -[**Toggle Prompt**](https://github.com/skarahoda/inquirer-toggle)
-Confirm with a toggle. Select a choice with arrow keys + Enter. - -``` -? Do you want to continue? no / yes -``` - -[**Sortable Checkbox Prompt**](https://github.com/th0r/inquirer-sortable-checkbox)
-The same as built-in checkbox prompt, but also allowing to reorder choices using ctrl+up/down. - -``` -? Which PRs and in what order would you like to merge? (Press to select, to toggle all, to invert selection, to move item up, to move item down, and to proceed) -❯ ◯ PR 1 - ◯ PR 2 - ◯ PR 3 -``` - -[**Multi Select Prompt**](https://github.com/jeffwcx/inquirer-select-pro) - -An inquirer select that supports multiple selections and filtering/searching. - -``` -? Choose your OS, IDE, PL, etc. (Press to select/deselect, to remove selected -option, to select option) ->> vue ->[ ] vue - [ ] vuejs - [ ] fuelphp - [ ] venv - [ ] vercel - (Use arrow keys to reveal more options) -``` - -[**File Selector Prompt**](https://github.com/br14n-sol/inquirer-file-selector)
-A file selector, you can navigate freely between directories, choose what type of files you want to allow and it is fully customizable. - -```sh -? Select a file: -/main/path/ -├── folder1/ -├── folder2/ -├── folder3/ -├── file1.txt -├── file2.pdf -└── file3.jpg (not allowed) -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -Use ↑↓ to navigate through the list -Press to navigate to the parent directory -Press to select a file or navigate to a directory -``` - -[**Select Prompt with Stateful Banner**](https://github.com/patik/inquirer-select-with-state)
-The same as built-in select prompt, but it also displays a banner above the prompt which can be updated with a `setState` function. For example, it can display the results of a long-running command without making the user wait to see the prompt. - -Initial display: - -``` -Directory size: loading... -? Choose an option -❯ Rename - Copy - Delete -``` - -A moment later: - -``` -Directory size: 123M -? Choose an option -❯ Rename - Copy - Delete -``` - -[**Ordered Checkbox Prompt**](https://github.com/kyou-izumi/inquirer-ordered-checkbox)
-A sortable checkbox prompt that maintains the order of selection. Perfect for prioritizing tasks or ranking options. - -``` -? Configure your development workflow: - [1] Set up CI/CD pipeline -❯ [3] Code quality tools - [ ] Documentation - [2] Performance monitoring - ────────────── -- Legacy system (disabled) -(Linting, formatting, and analysis) -``` - -[**Checkbox Plus Plus Prompt**](https://github.com/behnamazimi/inquirer-checkbox-plus-plus)
-A modern multiselect checkbox prompt with search and filter capabilities, highlighting, autocomplete, and improved UX. Supports both ESM and CommonJS and is compatible with @inquirer/core v10+. - -``` -? Select colors [searching: "re"] -❯ ◉ The red color - ◯ The green color - ◉ The purple color - ◯ The orange color - -↑↓ navigate • space de/select • type search • 2 selected • ⏎ submit -``` - -# License - -Copyright (c) 2023 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/prompts/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/prompts/dist/index.d.ts deleted file mode 100644 index 1926375..0000000 --- a/sdks/nodejs/node_modules/@inquirer/prompts/dist/index.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export { default as checkbox, Separator } from '@inquirer/checkbox'; -export { default as editor } from '@inquirer/editor'; -export { default as confirm } from '@inquirer/confirm'; -export { default as input } from '@inquirer/input'; -export { default as number } from '@inquirer/number'; -export { default as expand } from '@inquirer/expand'; -export { default as rawlist } from '@inquirer/rawlist'; -export { default as password } from '@inquirer/password'; -export { default as search } from '@inquirer/search'; -export { default as select } from '@inquirer/select'; diff --git a/sdks/nodejs/node_modules/@inquirer/prompts/dist/index.js b/sdks/nodejs/node_modules/@inquirer/prompts/dist/index.js deleted file mode 100644 index 1926375..0000000 --- a/sdks/nodejs/node_modules/@inquirer/prompts/dist/index.js +++ /dev/null @@ -1,10 +0,0 @@ -export { default as checkbox, Separator } from '@inquirer/checkbox'; -export { default as editor } from '@inquirer/editor'; -export { default as confirm } from '@inquirer/confirm'; -export { default as input } from '@inquirer/input'; -export { default as number } from '@inquirer/number'; -export { default as expand } from '@inquirer/expand'; -export { default as rawlist } from '@inquirer/rawlist'; -export { default as password } from '@inquirer/password'; -export { default as search } from '@inquirer/search'; -export { default as select } from '@inquirer/select'; diff --git a/sdks/nodejs/node_modules/@inquirer/prompts/package.json b/sdks/nodejs/node_modules/@inquirer/prompts/package.json deleted file mode 100644 index a4f7b56..0000000 --- a/sdks/nodejs/node_modules/@inquirer/prompts/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "name": "@inquirer/prompts", - "version": "8.3.0", - "description": "Inquirer prompts, combined in a single package", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "types", - "typescript", - "ui", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/prompts/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "dependencies": { - "@inquirer/checkbox": "^5.1.0", - "@inquirer/confirm": "^6.0.8", - "@inquirer/editor": "^5.0.8", - "@inquirer/expand": "^5.0.8", - "@inquirer/input": "^5.0.8", - "@inquirer/number": "^4.0.8", - "@inquirer/password": "^5.0.8", - "@inquirer/rawlist": "^5.2.4", - "@inquirer/search": "^4.1.4", - "@inquirer/select": "^5.1.0" - }, - "devDependencies": { - "@inquirer/type": "^4.0.3", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "526eca2e64853510821ffd457561840ec0cbfb93" -} diff --git a/sdks/nodejs/node_modules/@inquirer/rawlist/LICENSE b/sdks/nodejs/node_modules/@inquirer/rawlist/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/rawlist/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/rawlist/README.md b/sdks/nodejs/node_modules/@inquirer/rawlist/README.md deleted file mode 100644 index d5a1a36..0000000 --- a/sdks/nodejs/node_modules/@inquirer/rawlist/README.md +++ /dev/null @@ -1,128 +0,0 @@ -# `@inquirer/rawlist` - -Simple interactive command line prompt to display a raw list of choices (single value select) with minimal interaction. - -![rawlist prompt](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/rawlist.svg) - -# Installation - - - - - - - - - - - - - - - - - -
npmyarn
- -```sh -npm install @inquirer/prompts -``` - - - -```sh -yarn add @inquirer/prompts -``` - -
Or
- -```sh -npm install @inquirer/rawlist -``` - - - -```sh -yarn add @inquirer/rawlist -``` - -
- -# Usage - -```js -import { rawlist } from '@inquirer/prompts'; -// Or -// import rawlist from '@inquirer/rawlist'; - -const answer = await rawlist({ - message: 'Select a package manager', - choices: [ - { name: 'npm', value: 'npm' }, - { name: 'yarn', value: 'yarn' }, - { name: 'pnpm', value: 'pnpm' }, - ], -}); -``` - -## Options - -| Property | Type | Required | Description | -| -------- | ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------- | -| message | `string` | yes | The question to ask | -| choices | `Choice[]` | yes | List of the available choices. | -| loop | `boolean` | no | Defaults to `true`. When set to `false`, the cursor will be constrained to the top and bottom of the choice list without looping. | -| default | `Value` | no | The value of the choice to preselect. If the value is not found, no choice is preselected. | -| theme | [See Theming](#Theming) | no | Customize look of the prompt. | - -`Separator` objects can be used in the `choices` array to render non-selectable lines in the choice list. By default it'll render a line, but you can provide the text as argument (`new Separator('-- Dependencies --')`). This option is often used to add labels to groups within long list of options. - -### `Choice` object - -The `Choice` object is typed as - -```ts -type Choice = { - value: Value; - name?: string; - short?: string; - key?: string; - description?: string; -}; -``` - -Here's each property: - -- `value`: The value is what will be returned by `await rawlist()`. -- `name`: This is the string displayed in the choice list. -- `short`: Once the prompt is done (press enter), we'll use `short` if defined to render next to the question. By default we'll use `name`. -- `key`: The key of the choice. Displayed as `key) name`. -- `description`: Option description which appears below the list when the choice is selected. - -`choices` can also be an array of string, in which case the string will be used both as the `value` and the `name`. - -## Theming - -You can theme a prompt by passing a `theme` object option. The theme object only need to includes the keys you wish to modify, we'll fallback on the defaults for the rest. - -```ts -type Theme = { - prefix: string | { idle: string; done: string }; - spinner: { - interval: number; - frames: string[]; - }; - style: { - answer: (text: string) => string; - message: (text: string, status: 'idle' | 'done' | 'loading') => string; - error: (text: string) => string; - highlight: (text: string) => string; - description: (text: string) => string; - }; -}; -``` - -# License - -Copyright (c) 2023 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/rawlist/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/rawlist/dist/index.d.ts deleted file mode 100644 index 6dc7275..0000000 --- a/sdks/nodejs/node_modules/@inquirer/rawlist/dist/index.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Separator, type Theme } from '@inquirer/core'; -import type { PartialDeep } from '@inquirer/type'; -type RawlistTheme = { - style: { - description: (text: string) => string; - }; -}; -type Choice = { - value: Value; - name?: string; - short?: string; - key?: string; - description?: string; -}; -declare const _default: (config: { - message: string; - choices: readonly (Separator | Value | Choice)[]; - loop?: boolean | undefined; - theme?: PartialDeep> | undefined; - default?: NoInfer | undefined; -}, context?: import("@inquirer/type").Context) => Promise; -export default _default; -export { Separator } from '@inquirer/core'; diff --git a/sdks/nodejs/node_modules/@inquirer/rawlist/dist/index.js b/sdks/nodejs/node_modules/@inquirer/rawlist/dist/index.js deleted file mode 100644 index eb7d661..0000000 --- a/sdks/nodejs/node_modules/@inquirer/rawlist/dist/index.js +++ /dev/null @@ -1,142 +0,0 @@ -import { createPrompt, useMemo, useState, useKeypress, usePrefix, isDownKey, isEnterKey, isUpKey, Separator, makeTheme, ValidationError, } from '@inquirer/core'; -import { styleText } from 'node:util'; -const numberRegex = /\d+/; -const rawlistTheme = { - style: { - description: (text) => styleText('cyan', text), - }, -}; -function isSelectableChoice(choice) { - return choice != null && !Separator.isSeparator(choice); -} -function normalizeChoices(choices) { - let index = 0; - return choices.map((choice) => { - if (Separator.isSeparator(choice)) - return choice; - index += 1; - if (typeof choice !== 'object' || choice === null || !('value' in choice)) { - const name = String(choice); - return { - value: choice, - name, - short: name, - key: String(index), - }; - } - const name = choice.name ?? String(choice.value); - return { - value: choice.value, - name, - short: choice.short ?? name, - key: choice.key ?? String(index), - description: choice.description, - }; - }); -} -function getSelectedChoice(input, choices) { - let selectedChoice; - const selectableChoices = choices.filter(isSelectableChoice); - // First, try to match by custom key (exact match) - selectedChoice = selectableChoices.find((choice) => choice.key === input); - // If no custom key match and input is numeric, try 1-based index - if (!selectedChoice && numberRegex.test(input)) { - const answer = Number.parseInt(input, 10) - 1; - selectedChoice = selectableChoices[answer]; - } - return selectedChoice - ? [selectedChoice, choices.indexOf(selectedChoice)] - : [undefined, undefined]; -} -export default createPrompt((config, done) => { - const { loop = true } = config; - const choices = useMemo(() => normalizeChoices(config.choices), [config.choices]); - const [status, setStatus] = useState('idle'); - const [value, setValue] = useState(() => { - const defaultChoice = config.default == null - ? undefined - : choices.find((choice) => isSelectableChoice(choice) && choice.value === config.default); - return defaultChoice?.key ?? ''; - }); - const [errorMsg, setError] = useState(); - const theme = makeTheme(rawlistTheme, config.theme); - const prefix = usePrefix({ status, theme }); - const bounds = useMemo(() => { - const first = choices.findIndex(isSelectableChoice); - const last = choices.findLastIndex(isSelectableChoice); - if (first === -1) { - throw new ValidationError('[select prompt] No selectable choices. All choices are disabled.'); - } - return { first, last }; - }, [choices]); - useKeypress((key, rl) => { - if (isEnterKey(key)) { - const [selectedChoice] = getSelectedChoice(value, choices); - if (isSelectableChoice(selectedChoice)) { - setValue(selectedChoice.short); - setStatus('done'); - done(selectedChoice.value); - } - else if (value === '') { - setError('Please input a value'); - } - else { - setError(`"${styleText('red', value)}" isn't an available option`); - } - } - else if (isUpKey(key) || isDownKey(key)) { - rl.clearLine(0); - const [selectedChoice, active] = getSelectedChoice(value, choices); - if (!selectedChoice) { - const firstChoice = isDownKey(key) - ? choices.find(isSelectableChoice) - : choices.findLast(isSelectableChoice); - setValue(firstChoice.key); - } - else if (loop || - (isUpKey(key) && active !== bounds.first) || - (isDownKey(key) && active !== bounds.last)) { - const offset = isUpKey(key) ? -1 : 1; - let next = active; - do { - next = (next + offset + choices.length) % choices.length; - } while (!isSelectableChoice(choices[next])); - setValue(choices[next].key); - } - } - else { - setValue(rl.line); - setError(undefined); - } - }); - const message = theme.style.message(config.message, status); - if (status === 'done') { - return `${prefix} ${message} ${theme.style.answer(value)}`; - } - const choicesStr = choices - .map((choice) => { - if (Separator.isSeparator(choice)) { - return ` ${choice.separator}`; - } - const line = ` ${choice.key}) ${choice.name}`; - if (choice.key === value) { - return theme.style.highlight(line); - } - return line; - }) - .join('\n'); - let error = ''; - if (errorMsg) { - error = theme.style.error(errorMsg); - } - const [selectedChoice] = getSelectedChoice(value, choices); - let description = ''; - if (!errorMsg && selectedChoice?.description) { - description = theme.style.description(selectedChoice.description); - } - return [ - `${prefix} ${message} ${value}`, - [choicesStr, error, description].filter(Boolean).join('\n'), - ]; -}); -export { Separator } from '@inquirer/core'; diff --git a/sdks/nodejs/node_modules/@inquirer/rawlist/package.json b/sdks/nodejs/node_modules/@inquirer/rawlist/package.json deleted file mode 100644 index 2aaa763..0000000 --- a/sdks/nodejs/node_modules/@inquirer/rawlist/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "name": "@inquirer/rawlist", - "version": "5.2.4", - "description": "Inquirer rawlist prompt", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "ui", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/rawlist/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/type": "^4.0.3" - }, - "devDependencies": { - "@inquirer/testing": "^3.3.0", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "526eca2e64853510821ffd457561840ec0cbfb93" -} diff --git a/sdks/nodejs/node_modules/@inquirer/search/LICENSE b/sdks/nodejs/node_modules/@inquirer/search/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/search/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/search/README.md b/sdks/nodejs/node_modules/@inquirer/search/README.md deleted file mode 100644 index f124758..0000000 --- a/sdks/nodejs/node_modules/@inquirer/search/README.md +++ /dev/null @@ -1,213 +0,0 @@ -# `@inquirer/search` - -Interactive search prompt component for command line interfaces. - -![search prompt](https://raw.githubusercontent.com/SBoudrias/Inquirer.js/f459199e679aec7676cecc0fc12ef8a4cd3dda0b/assets/screenshots/search.png) - -# Installation - - - - - - - - - - - - - - -
npmyarn
- -```sh -npm install @inquirer/prompts -``` - - - -```sh -yarn add @inquirer/prompts -``` - -
- -```sh -npm install @inquirer/search -``` - - - -```sh -yarn add @inquirer/search -``` - -
- -# Usage - -```js -import { search, Separator } from '@inquirer/prompts'; -// Or -// import search, { Separator } from '@inquirer/search'; - -const answer = await search({ - message: 'Select an npm package', - source: async (input, { signal }) => { - if (!input) { - return []; - } - - const response = await fetch( - `https://registry.npmjs.org/-/v1/search?text=${encodeURIComponent(input)}&size=20`, - { signal }, - ); - const data = await response.json(); - - return data.objects.map((pkg) => ({ - name: pkg.package.name, - value: pkg.package.name, - description: pkg.package.description, - })); - }, -}); -``` - -## Options - -| Property | Type | Required | Description | -| -------- | ---------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| message | `string` | yes | The question to ask | -| source | `(term: string \| void) => Promise` | yes | This function returns the choices relevant to the search term. | -| pageSize | `number` | no | By default, lists of choice longer than 7 will be paginated. Use this option to control how many choices will appear on the screen at once. | -| default | `Value` | no | Defines in front of which item the cursor will initially appear. When omitted, the cursor will appear on the first selectable item. | -| validate | `Value => boolean \| string \| Promise` | no | On submit, validate the answer. When returning a string, it'll be used as the error message displayed to the user. Note: returning a rejected promise, we'll assume a code error happened and crash. | -| theme | [See Theming](#Theming) | no | Customize look of the prompt. | - -### `source` function - -The full signature type of `source` is as follow: - -```ts -function( - term: string | void, - opt: { signal: AbortSignal }, -): Promise | Separator>>; -``` - -When `term` is `undefined`, it means the search term input is empty. You can use this to return default choices, or return an empty array. - -Aside from returning the choices: - -1. An `AbortSignal` is passed in to cancel ongoing network calls when the search term change. -2. `Separator`s can be used to organize the list. - -### `Choice` object - -The `Choice` object is typed as - -```ts -type Choice = { - value: Value; - name?: string; - description?: string; - short?: string; - disabled?: boolean | string; -}; -``` - -Here's each property: - -- `value`: The value is what will be returned by `await search()`. -- `name`: This is the string displayed in the choice list. -- `description`: Option for a longer description string that'll appear under the list when the cursor highlight a given choice. -- `short`: Once the prompt is done (press enter), we'll use `short` if defined to render next to the question. By default we'll use `name`. -- `disabled`: Disallow the option from being selected. If `disabled` is a string, it'll be used as a help tip explaining why the choice isn't available. - -Choices can also be an array of string, in which case the string will be used both as the `value` and the `name`. - -### Validation & autocomplete interaction - -The validation within the search prompt acts as a signal for the autocomplete feature. - -When a list value is submitted and fail validation, the prompt will compare it to the search term. If they're the same, the prompt display the error. If they're not the same, we'll autocomplete the search term to match the value. Doing this will trigger a new search. - -You can rely on this behavior to implement progressive autocomplete searches. Where you want the user to narrow the search in a progressive manner. - -Pressing `tab` also triggers the term autocomplete. - -You can see this behavior in action in [our search demo](https://github.com/SBoudrias/Inquirer.js/blob/main/packages/demo/src/demos/search.ts). - -## Theming - -You can theme a prompt by passing a `theme` object option. The theme object only need to includes the keys you wish to modify, we'll fallback on the defaults for the rest. - -```ts -type Theme = { - prefix: string | { idle: string; done: string }; - spinner: { - interval: number; - frames: string[]; - }; - style: { - answer: (text: string) => string; - message: (text: string, status: 'idle' | 'done' | 'loading') => string; - error: (text: string) => string; - help: (text: string) => string; - highlight: (text: string) => string; - description: (text: string) => string; - disabled: (text: string) => string; - searchTerm: (text: string) => string; - keysHelpTip: (keys: [key: string, action: string][]) => string | undefined; - }; - icon: { - cursor: string; - }; -}; -``` - -### `theme.style.keysHelpTip` - -This function allows you to customize the keyboard shortcuts help tip displayed below the prompt. It receives an array of key-action pairs and should return a formatted string. You can also hook here to localize the labels to different languages. - -It can also returns `undefined` to hide the help tip entirely. - -```js -theme: { - style: { - keysHelpTip: (keys) => { - // Return undefined to hide the help tip completely. - return undefined; - - // Or customize the formatting. Or localize the labels. - return keys.map(([key, action]) => `${key}: ${action}`).join(' | '); - }; - } -} -``` - -## Recipes - -### Debounce search - -```js -import { setTimeout } from 'node:timers/promises'; -import { search } from '@inquirer/prompts'; - -const answer = await search({ - message: 'Select an npm package', - source: async (input, { signal }) => { - await setTimeout(300); - if (signal.aborted) return []; - - // Do the search - fetch(...) - }, -}); -``` - -# License - -Copyright (c) 2024 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/search/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/search/dist/index.d.ts deleted file mode 100644 index dfaa70b..0000000 --- a/sdks/nodejs/node_modules/@inquirer/search/dist/index.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Separator, type Theme } from '@inquirer/core'; -import type { PartialDeep } from '@inquirer/type'; -type SearchTheme = { - icon: { - cursor: string; - }; - style: { - disabled: (text: string) => string; - searchTerm: (text: string) => string; - description: (text: string) => string; - keysHelpTip: (keys: [key: string, action: string][]) => string | undefined; - }; -}; -type Choice = { - value: Value; - name?: string; - description?: string; - short?: string; - disabled?: boolean | string; - type?: never; -}; -declare const _default: (config: { - message: string; - source: (term: string | undefined, opt: { - signal: AbortSignal; - }) => readonly (string | Separator)[] | readonly (Separator | Choice)[] | Promise | Promise)[]>; - validate?: ((value: Value) => boolean | string | Promise) | undefined; - pageSize?: number | undefined; - default?: NoInfer | undefined; - theme?: PartialDeep> | undefined; -}, context?: import("@inquirer/type").Context) => Promise; -export default _default; -export { Separator } from '@inquirer/core'; diff --git a/sdks/nodejs/node_modules/@inquirer/search/dist/index.js b/sdks/nodejs/node_modules/@inquirer/search/dist/index.js deleted file mode 100644 index b231bf3..0000000 --- a/sdks/nodejs/node_modules/@inquirer/search/dist/index.js +++ /dev/null @@ -1,193 +0,0 @@ -import { createPrompt, useState, useKeypress, usePrefix, usePagination, useEffect, useMemo, useRef, isDownKey, isEnterKey, isTabKey, isUpKey, Separator, makeTheme, } from '@inquirer/core'; -import { styleText } from 'node:util'; -import figures from '@inquirer/figures'; -const searchTheme = { - icon: { cursor: figures.pointer }, - style: { - disabled: (text) => styleText('dim', `- ${text}`), - searchTerm: (text) => styleText('cyan', text), - description: (text) => styleText('cyan', text), - keysHelpTip: (keys) => keys - .map(([key, action]) => `${styleText('bold', key)} ${styleText('dim', action)}`) - .join(styleText('dim', ' • ')), - }, -}; -function isSelectable(item) { - return !Separator.isSeparator(item) && !item.disabled; -} -function normalizeChoices(choices) { - return choices.map((choice) => { - if (Separator.isSeparator(choice)) - return choice; - if (typeof choice === 'string') { - return { - value: choice, - name: choice, - short: choice, - disabled: false, - }; - } - const name = choice.name ?? String(choice.value); - const normalizedChoice = { - value: choice.value, - name, - short: choice.short ?? name, - disabled: choice.disabled ?? false, - }; - if (choice.description) { - normalizedChoice.description = choice.description; - } - return normalizedChoice; - }); -} -export default createPrompt((config, done) => { - const { pageSize = 7, validate = () => true } = config; - const theme = makeTheme(searchTheme, config.theme); - const [status, setStatus] = useState('loading'); - const [searchTerm, setSearchTerm] = useState(''); - const [searchResults, setSearchResults] = useState([]); - const [searchError, setSearchError] = useState(); - const defaultApplied = useRef(false); - const prefix = usePrefix({ status, theme }); - const bounds = useMemo(() => { - const first = searchResults.findIndex(isSelectable); - const last = searchResults.findLastIndex(isSelectable); - return { first, last }; - }, [searchResults]); - const [active = bounds.first, setActive] = useState(); - useEffect(() => { - const controller = new AbortController(); - setStatus('loading'); - setSearchError(undefined); - const fetchResults = async () => { - try { - const results = await config.source(searchTerm || undefined, { - signal: controller.signal, - }); - if (!controller.signal.aborted) { - const normalized = normalizeChoices(results); - let initialActive; - if (!defaultApplied.current && 'default' in config) { - const defaultIndex = normalized.findIndex((item) => isSelectable(item) && item.value === config.default); - initialActive = defaultIndex === -1 ? undefined : defaultIndex; - defaultApplied.current = true; - } - setActive(initialActive); - setSearchError(undefined); - setSearchResults(normalized); - setStatus('idle'); - } - } - catch (error) { - if (!controller.signal.aborted && error instanceof Error) { - setSearchError(error.message); - } - } - }; - void fetchResults(); - return () => { - controller.abort(); - }; - }, [searchTerm]); - // Safe to assume the cursor position never points to a Separator. - const selectedChoice = searchResults[active]; - useKeypress(async (key, rl) => { - if (isEnterKey(key)) { - if (selectedChoice) { - setStatus('loading'); - const isValid = await validate(selectedChoice.value); - setStatus('idle'); - if (isValid === true) { - setStatus('done'); - done(selectedChoice.value); - } - else if (selectedChoice.name === searchTerm) { - setSearchError(isValid || 'You must provide a valid value'); - } - else { - // Reset line with new search term - rl.write(selectedChoice.name); - setSearchTerm(selectedChoice.name); - } - } - else { - // Reset the readline line value to the previous value. On line event, the value - // get cleared, forcing the user to re-enter the value instead of fixing it. - rl.write(searchTerm); - } - } - else if (isTabKey(key) && selectedChoice) { - rl.clearLine(0); // Remove the tab character. - rl.write(selectedChoice.name); - setSearchTerm(selectedChoice.name); - } - else if (status !== 'loading' && (isUpKey(key) || isDownKey(key))) { - rl.clearLine(0); - if ((isUpKey(key) && active !== bounds.first) || - (isDownKey(key) && active !== bounds.last)) { - const offset = isUpKey(key) ? -1 : 1; - let next = active; - do { - next = (next + offset + searchResults.length) % searchResults.length; - } while (!isSelectable(searchResults[next])); - setActive(next); - } - } - else { - setSearchTerm(rl.line); - } - }); - const message = theme.style.message(config.message, status); - const helpLine = theme.style.keysHelpTip([ - ['↑↓', 'navigate'], - ['⏎', 'select'], - ]); - const page = usePagination({ - items: searchResults, - active, - renderItem({ item, isActive }) { - if (Separator.isSeparator(item)) { - return ` ${item.separator}`; - } - if (item.disabled) { - const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)'; - return theme.style.disabled(`${item.name} ${disabledLabel}`); - } - const color = isActive ? theme.style.highlight : (x) => x; - const cursor = isActive ? theme.icon.cursor : ` `; - return color(`${cursor} ${item.name}`); - }, - pageSize, - loop: false, - }); - let error; - if (searchError) { - error = theme.style.error(searchError); - } - else if (searchResults.length === 0 && searchTerm !== '' && status === 'idle') { - error = theme.style.error('No results found'); - } - let searchStr; - if (status === 'done' && selectedChoice) { - return [prefix, message, theme.style.answer(selectedChoice.short)] - .filter(Boolean) - .join(' ') - .trimEnd(); - } - else { - searchStr = theme.style.searchTerm(searchTerm); - } - const description = selectedChoice?.description; - const header = [prefix, message, searchStr].filter(Boolean).join(' ').trimEnd(); - const body = [ - error ?? page, - ' ', - description ? theme.style.description(description) : '', - helpLine, - ] - .filter(Boolean) - .join('\n') - .trimEnd(); - return [header, body]; -}); -export { Separator } from '@inquirer/core'; diff --git a/sdks/nodejs/node_modules/@inquirer/search/package.json b/sdks/nodejs/node_modules/@inquirer/search/package.json deleted file mode 100644 index 3c85e40..0000000 --- a/sdks/nodejs/node_modules/@inquirer/search/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "name": "@inquirer/search", - "version": "4.1.4", - "description": "Inquirer search prompt", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "ui", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/search/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "dependencies": { - "@inquirer/core": "^11.1.5", - "@inquirer/figures": "^2.0.3", - "@inquirer/type": "^4.0.3" - }, - "devDependencies": { - "@inquirer/testing": "^3.3.0", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "526eca2e64853510821ffd457561840ec0cbfb93" -} diff --git a/sdks/nodejs/node_modules/@inquirer/select/LICENSE b/sdks/nodejs/node_modules/@inquirer/select/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/select/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/select/README.md b/sdks/nodejs/node_modules/@inquirer/select/README.md deleted file mode 100644 index 55f99f8..0000000 --- a/sdks/nodejs/node_modules/@inquirer/select/README.md +++ /dev/null @@ -1,181 +0,0 @@ -# `@inquirer/select` - -Simple interactive command line prompt to display a list of choices (single select.) - -![select prompt](https://cdn.rawgit.com/SBoudrias/Inquirer.js/28ae8337ba51d93e359ef4f7ee24e79b69898962/assets/screenshots/list.svg) - -# Installation - - - - - - - - - - - - - - - - - -
npmyarn
- -```sh -npm install @inquirer/prompts -``` - - - -```sh -yarn add @inquirer/prompts -``` - -
Or
- -```sh -npm install @inquirer/select -``` - - - -```sh -yarn add @inquirer/select -``` - -
- -# Usage - -```js -import { select, Separator } from '@inquirer/prompts'; -// Or -// import select, { Separator } from '@inquirer/select'; - -const answer = await select({ - message: 'Select a package manager', - choices: [ - { - name: 'npm', - value: 'npm', - description: 'npm is the most popular package manager', - }, - { - name: 'yarn', - value: 'yarn', - description: 'yarn is an awesome package manager', - }, - new Separator(), - { - name: 'jspm', - value: 'jspm', - disabled: true, - }, - { - name: 'pnpm', - value: 'pnpm', - disabled: '(pnpm is not available)', - }, - ], -}); -``` - -## Options - -| Property | Type | Required | Description | -| -------- | ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -| message | `string` | yes | The question to ask | -| choices | `Choice[]` | yes | List of the available choices. | -| default | `string` | no | Defines in front of which item the cursor will initially appear. When omitted, the cursor will appear on the first selectable item. | -| pageSize | `number` | no | By default, lists of choice longer than 7 will be paginated. Use this option to control how many choices will appear on the screen at once. | -| loop | `boolean` | no | Defaults to `true`. When set to `false`, the cursor will be constrained to the top and bottom of the choice list without looping. | -| theme | [See Theming](#Theming) | no | Customize look of the prompt. | - -`Separator` objects can be used in the `choices` array to render non-selectable lines in the choice list. By default it'll render a line, but you can provide the text as argument (`new Separator('-- Dependencies --')`). This option is often used to add labels to groups within long list of options. - -### `Choice` object - -The `Choice` object is typed as - -```ts -type Choice = { - value: Value; - name?: string; - description?: string; - short?: string; - disabled?: boolean | string; -}; -``` - -Here's each property: - -- `value`: The value is what will be returned by `await select()`. -- `name`: This is the string displayed in the choice list. -- `description`: Option for a longer description string that'll appear under the list when the cursor highlight a given choice. -- `short`: Once the prompt is done (press enter), we'll use `short` if defined to render next to the question. By default we'll use `name`. -- `disabled`: Disallow the option from being selected. If `disabled` is a string, it'll be used as a help tip explaining why the choice isn't available. - -`choices` can also be an array of string, in which case the string will be used both as the `value` and the `name`. - -## Theming - -You can theme a prompt by passing a `theme` object option. The theme object only need to includes the keys you wish to modify, we'll fallback on the defaults for the rest. - -```ts -type Theme = { - prefix: string | { idle: string; done: string }; - spinner: { - interval: number; - frames: string[]; - }; - style: { - answer: (text: string) => string; - message: (text: string, status: 'idle' | 'done' | 'loading') => string; - error: (text: string) => string; - help: (text: string) => string; - highlight: (text: string) => string; - description: (text: string) => string; - disabled: (text: string) => string; - keysHelpTip: (keys: [key: string, action: string][]) => string | undefined; - }; - icon: { - cursor: string; - }; - indexMode: 'hidden' | 'number'; -}; -``` - -### `theme.style.keysHelpTip` - -This function allows you to customize the keyboard shortcuts help tip displayed below the prompt. It receives an array of key-action pairs and should return a formatted string. You can also hook here to localize the labels to different languages. - -It can also returns `undefined` to hide the help tip entirely. - -```js -theme: { - style: { - keysHelpTip: (keys) => { - // Return undefined to hide the help tip completely. - return undefined; - - // Or customize the formatting. Or localize the labels. - return keys.map(([key, action]) => `${key}: ${action}`).join(' | '); - }; - } -} -``` - -### `theme.indexMode` - -Controls how indices are displayed before each choice: - -- `hidden` (default): No indices are shown -- `number`: Display a number before each choice (e.g. "1. Option A") - -# License - -Copyright (c) 2023 Simon Boudrias (twitter: [@vaxilart](https://twitter.com/Vaxilart))
-Licensed under the MIT license. diff --git a/sdks/nodejs/node_modules/@inquirer/select/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/select/dist/index.d.ts deleted file mode 100644 index e34b389..0000000 --- a/sdks/nodejs/node_modules/@inquirer/select/dist/index.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Separator, type Theme, type Keybinding } from '@inquirer/core'; -import type { PartialDeep } from '@inquirer/type'; -type SelectTheme = { - icon: { - cursor: string; - }; - style: { - disabled: (text: string) => string; - description: (text: string) => string; - keysHelpTip: (keys: [key: string, action: string][]) => string | undefined; - }; - i18n: { - disabledError: string; - }; - indexMode: 'hidden' | 'number'; - keybindings: ReadonlyArray; -}; -type Choice = { - value: Value; - name?: string; - description?: string; - short?: string; - disabled?: boolean | string; - type?: never; -}; -declare const _default: (config: { - message: string; - choices: readonly (Separator | Value | Choice)[]; - pageSize?: number | undefined; - loop?: boolean | undefined; - default?: NoInfer | undefined; - theme?: PartialDeep> | undefined; -}, context?: import("@inquirer/type").Context) => Promise; -export default _default; -export { Separator } from '@inquirer/core'; diff --git a/sdks/nodejs/node_modules/@inquirer/select/dist/index.js b/sdks/nodejs/node_modules/@inquirer/select/dist/index.js deleted file mode 100644 index 1951873..0000000 --- a/sdks/nodejs/node_modules/@inquirer/select/dist/index.js +++ /dev/null @@ -1,191 +0,0 @@ -import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useMemo, useEffect, isBackspaceKey, isEnterKey, isUpKey, isDownKey, isNumberKey, Separator, ValidationError, makeTheme, } from '@inquirer/core'; -import { cursorHide } from '@inquirer/ansi'; -import { styleText } from 'node:util'; -import figures from '@inquirer/figures'; -const selectTheme = { - icon: { cursor: figures.pointer }, - style: { - disabled: (text) => styleText('dim', text), - description: (text) => styleText('cyan', text), - keysHelpTip: (keys) => keys - .map(([key, action]) => `${styleText('bold', key)} ${styleText('dim', action)}`) - .join(styleText('dim', ' • ')), - }, - i18n: { disabledError: 'This option is disabled and cannot be selected.' }, - indexMode: 'hidden', - keybindings: [], -}; -function isSelectable(item) { - return !Separator.isSeparator(item) && !item.disabled; -} -function isNavigable(item) { - return !Separator.isSeparator(item); -} -function normalizeChoices(choices) { - return choices.map((choice) => { - if (Separator.isSeparator(choice)) - return choice; - if (typeof choice !== 'object' || choice === null || !('value' in choice)) { - // It's a raw value (string, number, etc.) - const name = String(choice); - return { - value: choice, - name, - short: name, - disabled: false, - }; - } - const name = choice.name ?? String(choice.value); - const normalizedChoice = { - value: choice.value, - name, - short: choice.short ?? name, - disabled: choice.disabled ?? false, - }; - if (choice.description) { - normalizedChoice.description = choice.description; - } - return normalizedChoice; - }); -} -export default createPrompt((config, done) => { - const { loop = true, pageSize = 7 } = config; - const theme = makeTheme(selectTheme, config.theme); - const { keybindings } = theme; - const [status, setStatus] = useState('idle'); - const prefix = usePrefix({ status, theme }); - const searchTimeoutRef = useRef(); - // Vim keybindings (j/k) conflict with typing those letters in search, - // so search must be disabled when vim bindings are enabled - const searchEnabled = !keybindings.includes('vim'); - const items = useMemo(() => normalizeChoices(config.choices), [config.choices]); - const bounds = useMemo(() => { - const first = items.findIndex(isNavigable); - const last = items.findLastIndex(isNavigable); - if (first === -1) { - throw new ValidationError('[select prompt] No selectable choices. All choices are disabled.'); - } - return { first, last }; - }, [items]); - const defaultItemIndex = useMemo(() => { - if (!('default' in config)) - return -1; - return items.findIndex((item) => isSelectable(item) && item.value === config.default); - }, [config.default, items]); - const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex); - // Safe to assume the cursor position always point to a Choice. - const selectedChoice = items[active]; - const [errorMsg, setError] = useState(); - useKeypress((key, rl) => { - clearTimeout(searchTimeoutRef.current); - if (errorMsg) { - setError(undefined); - } - if (isEnterKey(key)) { - if (selectedChoice.disabled) { - setError(theme.i18n.disabledError); - } - else { - setStatus('done'); - done(selectedChoice.value); - } - } - else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) { - rl.clearLine(0); - if (loop || - (isUpKey(key, keybindings) && active !== bounds.first) || - (isDownKey(key, keybindings) && active !== bounds.last)) { - const offset = isUpKey(key, keybindings) ? -1 : 1; - let next = active; - do { - next = (next + offset + items.length) % items.length; - } while (!isNavigable(items[next])); - setActive(next); - } - } - else if (isNumberKey(key) && !Number.isNaN(Number(rl.line))) { - const selectedIndex = Number(rl.line) - 1; - // Find the nth item (ignoring separators) - let selectableIndex = -1; - const position = items.findIndex((item) => { - if (Separator.isSeparator(item)) - return false; - selectableIndex++; - return selectableIndex === selectedIndex; - }); - const item = items[position]; - if (item != null && isSelectable(item)) { - setActive(position); - } - searchTimeoutRef.current = setTimeout(() => { - rl.clearLine(0); - }, 700); - } - else if (isBackspaceKey(key)) { - rl.clearLine(0); - } - else if (searchEnabled) { - const searchTerm = rl.line.toLowerCase(); - const matchIndex = items.findIndex((item) => { - if (Separator.isSeparator(item) || !isSelectable(item)) - return false; - return item.name.toLowerCase().startsWith(searchTerm); - }); - if (matchIndex !== -1) { - setActive(matchIndex); - } - searchTimeoutRef.current = setTimeout(() => { - rl.clearLine(0); - }, 700); - } - }); - useEffect(() => () => { - clearTimeout(searchTimeoutRef.current); - }, []); - const message = theme.style.message(config.message, status); - const helpLine = theme.style.keysHelpTip([ - ['↑↓', 'navigate'], - ['⏎', 'select'], - ]); - let separatorCount = 0; - const page = usePagination({ - items, - active, - renderItem({ item, isActive, index }) { - if (Separator.isSeparator(item)) { - separatorCount++; - return ` ${item.separator}`; - } - const cursor = isActive ? theme.icon.cursor : ' '; - const indexLabel = theme.indexMode === 'number' ? `${index + 1 - separatorCount}. ` : ''; - if (item.disabled) { - const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)'; - const disabledCursor = isActive ? theme.icon.cursor : '-'; - return theme.style.disabled(`${disabledCursor} ${indexLabel}${item.name} ${disabledLabel}`); - } - const color = isActive ? theme.style.highlight : (x) => x; - return color(`${cursor} ${indexLabel}${item.name}`); - }, - pageSize, - loop, - }); - if (status === 'done') { - return [prefix, message, theme.style.answer(selectedChoice.short)] - .filter(Boolean) - .join(' '); - } - const { description } = selectedChoice; - const lines = [ - [prefix, message].filter(Boolean).join(' '), - page, - ' ', - description ? theme.style.description(description) : '', - errorMsg ? theme.style.error(errorMsg) : '', - helpLine, - ] - .filter(Boolean) - .join('\n') - .trimEnd(); - return `${lines}${cursorHide}`; -}); -export { Separator } from '@inquirer/core'; diff --git a/sdks/nodejs/node_modules/@inquirer/select/package.json b/sdks/nodejs/node_modules/@inquirer/select/package.json deleted file mode 100644 index 6d8594b..0000000 --- a/sdks/nodejs/node_modules/@inquirer/select/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "name": "@inquirer/select", - "version": "5.1.0", - "description": "Inquirer select/list prompt", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "ui", - "yeoman", - "yo", - "zsh" - ], - "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/select/README.md", - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "dependencies": { - "@inquirer/ansi": "^2.0.3", - "@inquirer/core": "^11.1.5", - "@inquirer/figures": "^2.0.3", - "@inquirer/type": "^4.0.3" - }, - "devDependencies": { - "@inquirer/testing": "^3.3.0", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "526eca2e64853510821ffd457561840ec0cbfb93" -} diff --git a/sdks/nodejs/node_modules/@inquirer/type/LICENSE b/sdks/nodejs/node_modules/@inquirer/type/LICENSE deleted file mode 100644 index f718698..0000000 --- a/sdks/nodejs/node_modules/@inquirer/type/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2025 Simon Boudrias - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@inquirer/type/dist/index.d.ts b/sdks/nodejs/node_modules/@inquirer/type/dist/index.d.ts deleted file mode 100644 index 611714b..0000000 --- a/sdks/nodejs/node_modules/@inquirer/type/dist/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './inquirer.ts'; -export * from './utils.ts'; diff --git a/sdks/nodejs/node_modules/@inquirer/type/dist/index.js b/sdks/nodejs/node_modules/@inquirer/type/dist/index.js deleted file mode 100644 index e5adf2c..0000000 --- a/sdks/nodejs/node_modules/@inquirer/type/dist/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./inquirer.js"; -export * from "./utils.js"; diff --git a/sdks/nodejs/node_modules/@inquirer/type/dist/inquirer.d.ts b/sdks/nodejs/node_modules/@inquirer/type/dist/inquirer.d.ts deleted file mode 100644 index 354329b..0000000 --- a/sdks/nodejs/node_modules/@inquirer/type/dist/inquirer.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Duplex } from 'node:stream'; -/** - * `InquirerReadline` is a re-implementation of `readline.Interface` from Node.js. - * We're reimplementing it because of 3 reasons: - * 1. The `readline.Interface` API is not complete; it's missing for example `clearLine`. - * 2. The input/output streams are not generics, meaning they're inexact. - * 3. Since ReadLine isn't built-in Typescript Global NodeJS type, it'd force us to ship `@types/node` as a dependency to all users. - */ -export type InquirerReadline = { - output: Duplex & { - mute: () => void; - unmute: () => void; - }; - input: NodeJS.ReadableStream; - clearLine: (dir: 0 | 1 | -1) => void; - getCursorPos: () => { - rows: number; - cols: number; - }; - setPrompt: (prompt: string) => void; - line: string; - write: (data: string) => void; - on: (event: string, listener: (...args: unknown[]) => void) => void; - removeListener: (event: string, listener: (...args: unknown[]) => void) => void; - pause: () => void; - resume: () => void; - close: () => void; -}; -export type Context = { - input?: NodeJS.ReadableStream; - output?: NodeJS.WritableStream; - clearPromptOnDone?: boolean; - signal?: AbortSignal; -}; -export type Prompt = (config: Config, context?: Context) => Promise; diff --git a/sdks/nodejs/node_modules/@inquirer/type/dist/inquirer.js b/sdks/nodejs/node_modules/@inquirer/type/dist/inquirer.js deleted file mode 100644 index cb0ff5c..0000000 --- a/sdks/nodejs/node_modules/@inquirer/type/dist/inquirer.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/sdks/nodejs/node_modules/@inquirer/type/dist/utils.d.ts b/sdks/nodejs/node_modules/@inquirer/type/dist/utils.d.ts deleted file mode 100644 index c37eb73..0000000 --- a/sdks/nodejs/node_modules/@inquirer/type/dist/utils.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -type Key = string | number | symbol; -export type Prettify = { - [K in keyof T]: T[K]; -} & {}; -export type PartialDeep = T extends object ? { - [P in keyof T]?: PartialDeep; -} : T; -export type LiteralUnion = T | (F & {}); -export type KeyUnion = LiteralUnion>; -export type DistributiveMerge = A extends any ? Prettify & B> : never; -export type UnionToIntersection = (T extends any ? (input: T) => void : never) extends (input: infer Intersection) => void ? Intersection : never; -/** - * @hidden - */ -type __Pick = { - [P in K]: O[P]; -} & {}; -/** - * @hidden - */ -export type _Pick = __Pick; -/** - * Extract out of `O` the fields of key `K` - * @param O to extract from - * @param K to chose fields - * @returns [[Object]] - */ -export type Pick = O extends unknown ? _Pick : never; -export {}; diff --git a/sdks/nodejs/node_modules/@inquirer/type/dist/utils.js b/sdks/nodejs/node_modules/@inquirer/type/dist/utils.js deleted file mode 100644 index 7941332..0000000 --- a/sdks/nodejs/node_modules/@inquirer/type/dist/utils.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -export {}; diff --git a/sdks/nodejs/node_modules/@inquirer/type/package.json b/sdks/nodejs/node_modules/@inquirer/type/package.json deleted file mode 100644 index 4a63b52..0000000 --- a/sdks/nodejs/node_modules/@inquirer/type/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "name": "@inquirer/type", - "version": "4.0.3", - "description": "Inquirer core TS types", - "keywords": [ - "answer", - "answers", - "ask", - "base", - "cli", - "command", - "command-line", - "confirm", - "enquirer", - "generate", - "generator", - "hyper", - "input", - "inquire", - "inquirer", - "interface", - "iterm", - "javascript", - "menu", - "node", - "nodejs", - "prompt", - "promptly", - "prompts", - "question", - "readline", - "scaffold", - "scaffolder", - "scaffolding", - "stdin", - "stdout", - "terminal", - "tty", - "types", - "typescript", - "ui", - "yeoman", - "yo", - "zsh" - ], - "license": "MIT", - "author": "Simon Boudrias ", - "repository": { - "type": "git", - "url": "https://github.com/SBoudrias/Inquirer.js.git" - }, - "files": [ - "dist" - ], - "type": "module", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "tsc": "tsc" - }, - "devDependencies": { - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "gitHead": "99d00a9adc53be8b7edf5926b2ec4ba0b792f68f" -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/LICENSE b/sdks/nodejs/node_modules/@napi-rs/cli/LICENSE deleted file mode 100644 index 1afaf83..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 LongYinan - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/README.md b/sdks/nodejs/node_modules/@napi-rs/cli/README.md deleted file mode 100644 index f674eca..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# `@napi-rs/cli` - -[![Download](https://img.shields.io/npm/dm/@napi-rs/cli)](https://www.npmjs.com/package/@napi-rs/cli) -[![Install size](https://packagephobia.com/badge?p=@napi-rs/cli)](https://packagephobia.com/result?p=@napi-rs/cli) -
-chat - - -> Cli tools for napi-rs - -```sh -# or npm, pnpm -yarn add @napi-rs/cli -D -yarn napi build -``` - -## Commands - -| Command | desc | docs | -| --------------- | -------------------------------------------------------------- | --------------------------------------------------- | -| new | create new napi-rs project | [./docs/new.md](./docs/new.md) | -| build | build napi-rs project | [./docs/build.md](./docs/build.md) | -| create-npm-dirs | Create npm package dirs for different platforms | [./docs/create-npm-dirs](./docs/create-npm-dirs.md) | -| artifacts | Copy artifacts from Github Actions into specified dir | [./docs/artifacts.md](./docs/artifacts.md) | -| rename | Rename the napi-rs project | [./docs/rename.md](./docs/rename.md) | -| universalize | Combile built binaries into one universal binary | [./docs/universalize.md](./docs/universalize.md) | -| version | Update version in created npm packages by `create-npm-dirs` | [./docs/version.md](./docs/version.md) | -| pre-publish | Update package.json and copy addons into per platform packages | [./docs/pre-publish.md](./docs/pre-publish.md) | - -### Debug mode - -```bash -DEBUG="napi:*" napi [command] -``` diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/cli.mjs b/sdks/nodejs/node_modules/@napi-rs/cli/cli.mjs deleted file mode 100755 index 4216752..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/cli.mjs +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env node - -import { execSync } from 'node:child_process' -import { resolve } from 'node:path' -import { fileURLToPath } from 'node:url' - -execSync( - `node --import @oxc-node/core/register ${resolve( - fileURLToPath(import.meta.url), - '../src/cli.ts', - )} ${process.argv.slice(2).join(' ')}`, - { - stdio: 'inherit', - }, -) diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/dist/cli.js b/sdks/nodejs/node_modules/@napi-rs/cli/dist/cli.js deleted file mode 100755 index eebbc10..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/dist/cli.js +++ /dev/null @@ -1,3757 +0,0 @@ -#!/usr/bin/env node -import { createRequire } from "node:module"; -import { Cli, Command, Option } from "clipanion"; -import path, { dirname, isAbsolute, join, parse, resolve } from "node:path"; -import * as colors from "colorette"; -import { underline, yellow } from "colorette"; -import { createDebug } from "obug"; -import { access, copyFile, mkdir, readFile, readdir, rename, stat, unlink, writeFile } from "node:fs/promises"; -import { exec, execSync, spawn, spawnSync } from "node:child_process"; -import fs, { existsSync, mkdirSync, promises, rmSync, statSync } from "node:fs"; -import { isNil, merge, omit, omitBy, pick, sortBy } from "es-toolkit"; -import { createHash } from "node:crypto"; -import { homedir } from "node:os"; -import { parse as parse$1 } from "semver"; -import { dump, load } from "js-yaml"; -import * as typanion from "typanion"; -import { Octokit } from "@octokit/rest"; -import { checkbox, confirm, input, select } from "@inquirer/prompts"; - -//#region src/def/artifacts.ts -var BaseArtifactsCommand = class extends Command { - static paths = [["artifacts"]]; - static usage = Command.Usage({ description: "Copy artifacts from Github Actions into npm packages and ready to publish" }); - cwd = Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - outputDir = Option.String("--output-dir,-o,-d", "./artifacts", { description: "Path to the folder where all built `.node` files put, same as `--output-dir` of build command" }); - npmDir = Option.String("--npm-dir", "npm", { description: "Path to the folder where the npm packages put" }); - buildOutputDir = Option.String("--build-output-dir", { description: "Path to the build output dir, only needed when targets contains `wasm32-wasi-*`" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - outputDir: this.outputDir, - npmDir: this.npmDir, - buildOutputDir: this.buildOutputDir - }; - } -}; -function applyDefaultArtifactsOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - outputDir: "./artifacts", - npmDir: "npm", - ...options - }; -} - -//#endregion -//#region src/utils/log.ts -const debugFactory = (namespace) => { - const debug$10 = createDebug(`napi:${namespace}`, { formatters: { i(v) { - return colors.green(v); - } } }); - debug$10.info = (...args) => console.error(colors.black(colors.bgGreen(" INFO ")), ...args); - debug$10.warn = (...args) => console.error(colors.black(colors.bgYellow(" WARNING ")), ...args); - debug$10.error = (...args) => console.error(colors.white(colors.bgRed(" ERROR ")), ...args.map((arg) => arg instanceof Error ? arg.stack ?? arg.message : arg)); - return debug$10; -}; -const debug$9 = debugFactory("utils"); - -//#endregion -//#region package.json -var version$1 = "3.5.1"; - -//#endregion -//#region src/utils/misc.ts -const readFileAsync = readFile; -const writeFileAsync = writeFile; -const unlinkAsync = unlink; -const copyFileAsync = copyFile; -const mkdirAsync = mkdir; -const statAsync = stat; -const readdirAsync = readdir; -function fileExists(path$1) { - return access(path$1).then(() => true, () => false); -} -async function dirExistsAsync(path$1) { - try { - return (await statAsync(path$1)).isDirectory(); - } catch { - return false; - } -} -function pick$1(o, ...keys) { - return keys.reduce((acc, key) => { - acc[key] = o[key]; - return acc; - }, {}); -} -async function updatePackageJson(path$1, partial) { - if (!await fileExists(path$1)) { - debug$9(`File not exists ${path$1}`); - return; - } - const old = JSON.parse(await readFileAsync(path$1, "utf8")); - await writeFileAsync(path$1, JSON.stringify({ - ...old, - ...partial - }, null, 2)); -} -const CLI_VERSION = version$1; - -//#endregion -//#region src/utils/target.ts -const SUB_SYSTEMS = new Set(["android", "ohos"]); -const AVAILABLE_TARGETS = [ - "aarch64-apple-darwin", - "aarch64-linux-android", - "aarch64-unknown-linux-gnu", - "aarch64-unknown-linux-musl", - "aarch64-unknown-linux-ohos", - "aarch64-pc-windows-msvc", - "x86_64-apple-darwin", - "x86_64-pc-windows-msvc", - "x86_64-pc-windows-gnu", - "x86_64-unknown-linux-gnu", - "x86_64-unknown-linux-musl", - "x86_64-unknown-linux-ohos", - "x86_64-unknown-freebsd", - "i686-pc-windows-msvc", - "armv7-unknown-linux-gnueabihf", - "armv7-unknown-linux-musleabihf", - "armv7-linux-androideabi", - "universal-apple-darwin", - "loongarch64-unknown-linux-gnu", - "riscv64gc-unknown-linux-gnu", - "powerpc64le-unknown-linux-gnu", - "s390x-unknown-linux-gnu", - "wasm32-wasi-preview1-threads", - "wasm32-wasip1-threads" -]; -const DEFAULT_TARGETS = [ - "x86_64-apple-darwin", - "aarch64-apple-darwin", - "x86_64-pc-windows-msvc", - "x86_64-unknown-linux-gnu" -]; -const TARGET_LINKER = { - "aarch64-unknown-linux-musl": "aarch64-linux-musl-gcc", - "loongarch64-unknown-linux-gnu": "loongarch64-linux-gnu-gcc-13", - "riscv64gc-unknown-linux-gnu": "riscv64-linux-gnu-gcc", - "powerpc64le-unknown-linux-gnu": "powerpc64le-linux-gnu-gcc", - "s390x-unknown-linux-gnu": "s390x-linux-gnu-gcc" -}; -const CpuToNodeArch = { - x86_64: "x64", - aarch64: "arm64", - i686: "ia32", - armv7: "arm", - loongarch64: "loong64", - riscv64gc: "riscv64", - powerpc64le: "ppc64" -}; -const SysToNodePlatform = { - linux: "linux", - freebsd: "freebsd", - darwin: "darwin", - windows: "win32", - ohos: "openharmony" -}; -const UniArchsByPlatform = { darwin: ["x64", "arm64"] }; -/** -* A triple is a specific format for specifying a target architecture. -* Triples may be referred to as a target triple which is the architecture for the artifact produced, and the host triple which is the architecture that the compiler is running on. -* The general format of the triple is `---` where: -* - `arch` = The base CPU architecture, for example `x86_64`, `i686`, `arm`, `thumb`, `mips`, etc. -* - `sub` = The CPU sub-architecture, for example `arm` has `v7`, `v7s`, `v5te`, etc. -* - `vendor` = The vendor, for example `unknown`, `apple`, `pc`, `nvidia`, etc. -* - `sys` = The system name, for example `linux`, `windows`, `darwin`, etc. none is typically used for bare-metal without an OS. -* - `abi` = The ABI, for example `gnu`, `android`, `eabi`, etc. -*/ -function parseTriple(rawTriple) { - if (rawTriple === "wasm32-wasi" || rawTriple === "wasm32-wasi-preview1-threads" || rawTriple.startsWith("wasm32-wasip")) return { - triple: rawTriple, - platformArchABI: "wasm32-wasi", - platform: "wasi", - arch: "wasm32", - abi: "wasi" - }; - const triples = (rawTriple.endsWith("eabi") ? `${rawTriple.slice(0, -4)}-eabi` : rawTriple).split("-"); - let cpu; - let sys; - let abi = null; - if (triples.length === 2) [cpu, sys] = triples; - else [cpu, , sys, abi = null] = triples; - if (abi && SUB_SYSTEMS.has(abi)) { - sys = abi; - abi = null; - } - const platform = SysToNodePlatform[sys] ?? sys; - const arch = CpuToNodeArch[cpu] ?? cpu; - return { - triple: rawTriple, - platformArchABI: abi ? `${platform}-${arch}-${abi}` : `${platform}-${arch}`, - platform, - arch, - abi - }; -} -function getSystemDefaultTarget() { - const host = execSync(`rustc -vV`, { env: process.env }).toString("utf8").split("\n").find((line) => line.startsWith("host: ")); - const triple = host === null || host === void 0 ? void 0 : host.slice(6); - if (!triple) throw new TypeError(`Can not parse target triple from host`); - return parseTriple(triple); -} -function getTargetLinker(target) { - return TARGET_LINKER[target]; -} -function targetToEnvVar(target) { - return target.replace(/-/g, "_").toUpperCase(); -} - -//#endregion -//#region src/utils/version.ts -let NapiVersion = /* @__PURE__ */ function(NapiVersion$1) { - NapiVersion$1[NapiVersion$1["Napi1"] = 1] = "Napi1"; - NapiVersion$1[NapiVersion$1["Napi2"] = 2] = "Napi2"; - NapiVersion$1[NapiVersion$1["Napi3"] = 3] = "Napi3"; - NapiVersion$1[NapiVersion$1["Napi4"] = 4] = "Napi4"; - NapiVersion$1[NapiVersion$1["Napi5"] = 5] = "Napi5"; - NapiVersion$1[NapiVersion$1["Napi6"] = 6] = "Napi6"; - NapiVersion$1[NapiVersion$1["Napi7"] = 7] = "Napi7"; - NapiVersion$1[NapiVersion$1["Napi8"] = 8] = "Napi8"; - NapiVersion$1[NapiVersion$1["Napi9"] = 9] = "Napi9"; - return NapiVersion$1; -}({}); -const NAPI_VERSION_MATRIX = new Map([ - [NapiVersion.Napi1, "8.6.0 | 9.0.0 | 10.0.0"], - [NapiVersion.Napi2, "8.10.0 | 9.3.0 | 10.0.0"], - [NapiVersion.Napi3, "6.14.2 | 8.11.2 | 9.11.0 | 10.0.0"], - [NapiVersion.Napi4, "10.16.0 | 11.8.0 | 12.0.0"], - [NapiVersion.Napi5, "10.17.0 | 12.11.0 | 13.0.0"], - [NapiVersion.Napi6, "10.20.0 | 12.17.0 | 14.0.0"], - [NapiVersion.Napi7, "10.23.0 | 12.19.0 | 14.12.0 | 15.0.0"], - [NapiVersion.Napi8, "12.22.0 | 14.17.0 | 15.12.0 | 16.0.0"], - [NapiVersion.Napi9, "18.17.0 | 20.3.0 | 21.1.0"] -]); -function parseNodeVersion(v) { - const matches = v.match(/v?([0-9]+)\.([0-9]+)\.([0-9]+)/i); - if (!matches) throw new Error("Unknown node version number: " + v); - const [, major, minor, patch] = matches; - return { - major: parseInt(major), - minor: parseInt(minor), - patch: parseInt(patch) - }; -} -function requiredNodeVersions(napiVersion) { - const requirement = NAPI_VERSION_MATRIX.get(napiVersion); - if (!requirement) return [parseNodeVersion("10.0.0")]; - return requirement.split("|").map(parseNodeVersion); -} -function toEngineRequirement(versions) { - const requirements = []; - versions.forEach((v, i) => { - let req = ""; - if (i !== 0) { - const lastVersion = versions[i - 1]; - req += `< ${lastVersion.major + 1}`; - } - req += `${i === 0 ? "" : " || "}>= ${v.major}.${v.minor}.${v.patch}`; - requirements.push(req); - }); - return requirements.join(" "); -} -function napiEngineRequirement(napiVersion) { - return toEngineRequirement(requiredNodeVersions(napiVersion)); -} - -//#endregion -//#region src/utils/metadata.ts -async function parseMetadata(manifestPath) { - if (!fs.existsSync(manifestPath)) throw new Error(`No crate found in manifest: ${manifestPath}`); - const childProcess = spawn("cargo", [ - "metadata", - "--manifest-path", - manifestPath, - "--format-version", - "1" - ], { stdio: "pipe" }); - let stdout = ""; - let stderr = ""; - let status = 0; - childProcess.stdout.on("data", (data) => { - stdout += data; - }); - childProcess.stderr.on("data", (data) => { - stderr += data; - }); - await new Promise((resolve$1) => { - childProcess.on("close", (code) => { - status = code ?? 0; - resolve$1(); - }); - }); - if (status !== 0) { - const simpleMessage = `cargo metadata exited with code ${status}`; - throw new Error(`${simpleMessage} and error message:\n\n${stderr}`, { cause: new Error(simpleMessage) }); - } - try { - return JSON.parse(stdout); - } catch (e) { - throw new Error("Failed to parse cargo metadata JSON", { cause: e }); - } -} - -//#endregion -//#region src/utils/config.ts -async function readNapiConfig(path$1, configPath) { - if (configPath && !await fileExists(configPath)) throw new Error(`NAPI-RS config not found at ${configPath}`); - if (!await fileExists(path$1)) throw new Error(`package.json not found at ${path$1}`); - const content = await readFileAsync(path$1, "utf8"); - let pkgJson; - try { - pkgJson = JSON.parse(content); - } catch (e) { - throw new Error(`Failed to parse package.json at ${path$1}`, { cause: e }); - } - let separatedConfig; - if (configPath) { - const configContent = await readFileAsync(configPath, "utf8"); - try { - separatedConfig = JSON.parse(configContent); - } catch (e) { - throw new Error(`Failed to parse NAPI-RS config at ${configPath}`, { cause: e }); - } - } - const userNapiConfig = pkgJson.napi ?? {}; - if (pkgJson.napi && separatedConfig) { - const pkgJsonPath = underline(path$1); - const configPathUnderline = underline(configPath); - console.warn(yellow(`Both napi field in ${pkgJsonPath} and [NAPI-RS config](${configPathUnderline}) file are found, the NAPI-RS config file will be used.`)); - } - if (separatedConfig) Object.assign(userNapiConfig, separatedConfig); - const napiConfig = merge({ - binaryName: "index", - packageName: pkgJson.name, - targets: [], - packageJson: pkgJson, - npmClient: "npm" - }, omit(userNapiConfig, ["targets"])); - let targets = userNapiConfig.targets ?? []; - if (userNapiConfig === null || userNapiConfig === void 0 ? void 0 : userNapiConfig.name) { - console.warn(yellow(`[DEPRECATED] napi.name is deprecated, use napi.binaryName instead.`)); - napiConfig.binaryName = userNapiConfig.name; - } - if (!targets.length) { - var _userNapiConfig$tripl, _userNapiConfig$tripl2; - let deprecatedWarned = false; - const warning = yellow(`[DEPRECATED] napi.triples is deprecated, use napi.targets instead.`); - if ((_userNapiConfig$tripl = userNapiConfig.triples) === null || _userNapiConfig$tripl === void 0 ? void 0 : _userNapiConfig$tripl.defaults) { - deprecatedWarned = true; - console.warn(warning); - targets = targets.concat(DEFAULT_TARGETS); - } - if ((_userNapiConfig$tripl2 = userNapiConfig.triples) === null || _userNapiConfig$tripl2 === void 0 || (_userNapiConfig$tripl2 = _userNapiConfig$tripl2.additional) === null || _userNapiConfig$tripl2 === void 0 ? void 0 : _userNapiConfig$tripl2.length) { - targets = targets.concat(userNapiConfig.triples.additional); - if (!deprecatedWarned) console.warn(warning); - } - } - if (new Set(targets).size !== targets.length) { - const duplicateTarget = targets.find((target, index) => targets.indexOf(target) !== index); - throw new Error(`Duplicate targets are not allowed: ${duplicateTarget}`); - } - napiConfig.targets = targets.map(parseTriple); - return napiConfig; -} - -//#endregion -//#region src/utils/cargo.ts -function tryInstallCargoBinary(name, bin) { - if (detectCargoBinary(bin)) { - debug$9("Cargo binary already installed: %s", name); - return; - } - try { - debug$9("Installing cargo binary: %s", name); - execSync(`cargo install ${name}`, { stdio: "inherit" }); - } catch (e) { - throw new Error(`Failed to install cargo binary: ${name}`, { cause: e }); - } -} -function detectCargoBinary(bin) { - debug$9("Detecting cargo binary: %s", bin); - try { - execSync(`cargo help ${bin}`, { stdio: "ignore" }); - debug$9("Cargo binary detected: %s", bin); - return true; - } catch { - debug$9("Cargo binary not detected: %s", bin); - return false; - } -} - -//#endregion -//#region src/utils/typegen.ts -const TOP_LEVEL_NAMESPACE = "__TOP_LEVEL_MODULE__"; -const DEFAULT_TYPE_DEF_HEADER = `/* auto-generated by NAPI-RS */ -/* eslint-disable */ -`; -var TypeDefKind = /* @__PURE__ */ function(TypeDefKind$1) { - TypeDefKind$1["Const"] = "const"; - TypeDefKind$1["Enum"] = "enum"; - TypeDefKind$1["StringEnum"] = "string_enum"; - TypeDefKind$1["Interface"] = "interface"; - TypeDefKind$1["Type"] = "type"; - TypeDefKind$1["Fn"] = "fn"; - TypeDefKind$1["Struct"] = "struct"; - TypeDefKind$1["Extends"] = "extends"; - TypeDefKind$1["Impl"] = "impl"; - return TypeDefKind$1; -}(TypeDefKind || {}); -function prettyPrint(line, constEnum, ident, ambient = false) { - let s = line.js_doc ?? ""; - switch (line.kind) { - case TypeDefKind.Interface: - s += `export interface ${line.name} {\n${line.def}\n}`; - break; - case TypeDefKind.Type: - s += `export type ${line.name} = \n${line.def}`; - break; - case TypeDefKind.Enum: - const enumName = constEnum ? "const enum" : "enum"; - s += `${exportDeclare(ambient)} ${enumName} ${line.name} {\n${line.def}\n}`; - break; - case TypeDefKind.StringEnum: - if (constEnum) s += `${exportDeclare(ambient)} const enum ${line.name} {\n${line.def}\n}`; - else s += `export type ${line.name} = ${line.def.replaceAll(/.*=/g, "").replaceAll(",", "|")};`; - break; - case TypeDefKind.Struct: - const extendsDef = line.extends ? ` extends ${line.extends}` : ""; - if (line.extends) { - const genericMatch = line.extends.match(/Iterator<(.+)>$/); - if (genericMatch) { - const [T, TResult, TNext] = genericMatch[1].split(",").map((p) => p.trim()); - line.def = line.def + `\nnext(value?: ${TNext}): IteratorResult<${T}, ${TResult}>`; - } - } - s += `${exportDeclare(ambient)} class ${line.name}${extendsDef} {\n${line.def}\n}`; - if (line.original_name && line.original_name !== line.name) s += `\nexport type ${line.original_name} = ${line.name}`; - break; - case TypeDefKind.Fn: - s += `${exportDeclare(ambient)} ${line.def}`; - break; - default: s += line.def; - } - return correctStringIdent(s, ident); -} -function exportDeclare(ambient) { - if (ambient) return "export"; - return "export declare"; -} -async function processTypeDef(intermediateTypeFile, constEnum) { - const exports = []; - const groupedDefs = preprocessTypeDef(await readIntermediateTypeFile(intermediateTypeFile)); - return { - dts: sortBy(Array.from(groupedDefs), [([namespace]) => namespace]).map(([namespace, defs]) => { - if (namespace === TOP_LEVEL_NAMESPACE) return defs.map((def) => { - switch (def.kind) { - case TypeDefKind.Const: - case TypeDefKind.Enum: - case TypeDefKind.StringEnum: - case TypeDefKind.Fn: - case TypeDefKind.Struct: - exports.push(def.name); - if (def.original_name && def.original_name !== def.name) exports.push(def.original_name); - break; - default: break; - } - return prettyPrint(def, constEnum, 0); - }).join("\n\n"); - else { - exports.push(namespace); - let declaration = ""; - declaration += `export declare namespace ${namespace} {\n`; - for (const def of defs) declaration += prettyPrint(def, constEnum, 2, true) + "\n"; - declaration += "}"; - return declaration; - } - }).join("\n\n") + "\n", - exports - }; -} -async function readIntermediateTypeFile(file) { - return (await readFileAsync(file, "utf8")).split("\n").filter(Boolean).map((line) => { - line = line.trim(); - const parsed = JSON.parse(line); - if (parsed.js_doc) parsed.js_doc = parsed.js_doc.replace(/\\n/g, "\n"); - if (parsed.def) parsed.def = parsed.def.replace(/\\n/g, "\n"); - return parsed; - }).sort((a, b) => { - if (a.kind === TypeDefKind.Struct) { - if (b.kind === TypeDefKind.Struct) return a.name.localeCompare(b.name); - return -1; - } else if (b.kind === TypeDefKind.Struct) return 1; - else return a.name.localeCompare(b.name); - }); -} -function preprocessTypeDef(defs) { - const namespaceGrouped = /* @__PURE__ */ new Map(); - const classDefs = /* @__PURE__ */ new Map(); - for (const def of defs) { - const namespace = def.js_mod ?? TOP_LEVEL_NAMESPACE; - if (!namespaceGrouped.has(namespace)) namespaceGrouped.set(namespace, []); - const group = namespaceGrouped.get(namespace); - if (def.kind === TypeDefKind.Struct) { - group.push(def); - classDefs.set(def.name, def); - } else if (def.kind === TypeDefKind.Extends) { - const classDef = classDefs.get(def.name); - if (classDef) classDef.extends = def.def; - } else if (def.kind === TypeDefKind.Impl) { - const classDef = classDefs.get(def.name); - if (classDef) { - if (classDef.def) classDef.def += "\n"; - classDef.def += def.def; - if (classDef.def) classDef.def = classDef.def.replace(/\\n/g, "\n"); - } - } else group.push(def); - } - return namespaceGrouped; -} -function correctStringIdent(src, ident) { - let bracketDepth = 0; - return src.split("\n").map((line) => { - line = line.trim(); - if (line === "") return ""; - const isInMultilineComment = line.startsWith("*"); - const isClosingBracket = line.endsWith("}"); - const isOpeningBracket = line.endsWith("{"); - const isTypeDeclaration = line.endsWith("="); - const isTypeVariant = line.startsWith("|"); - let rightIndent = ident; - if ((isOpeningBracket || isTypeDeclaration) && !isInMultilineComment) { - bracketDepth += 1; - rightIndent += (bracketDepth - 1) * 2; - } else { - if (isClosingBracket && bracketDepth > 0 && !isInMultilineComment && !isTypeVariant) bracketDepth -= 1; - rightIndent += bracketDepth * 2; - } - if (isInMultilineComment) rightIndent += 1; - return `${" ".repeat(rightIndent)}${line}`; - }).join("\n"); -} - -//#endregion -//#region src/utils/read-config.ts -async function readConfig(options) { - const resolvePath = (...paths) => resolve(options.cwd, ...paths); - return await readNapiConfig(resolvePath(options.packageJsonPath ?? "package.json"), options.configPath ? resolvePath(options.configPath) : void 0); -} - -//#endregion -//#region src/api/artifacts.ts -const debug$8 = debugFactory("artifacts"); -async function collectArtifacts(userOptions) { - const options = applyDefaultArtifactsOptions(userOptions); - const resolvePath = (...paths) => resolve(options.cwd, ...paths); - const packageJsonPath = resolvePath(options.packageJsonPath); - const { targets, binaryName, packageName } = await readNapiConfig(packageJsonPath, options.configPath ? resolvePath(options.configPath) : void 0); - const distDirs = targets.map((platform) => join(options.cwd, options.npmDir, platform.platformArchABI)); - const universalSourceBins = new Set(targets.filter((platform) => platform.arch === "universal").flatMap((p) => { - var _UniArchsByPlatform$p; - return (_UniArchsByPlatform$p = UniArchsByPlatform[p.platform]) === null || _UniArchsByPlatform$p === void 0 ? void 0 : _UniArchsByPlatform$p.map((a) => `${p.platform}-${a}`); - }).filter(Boolean)); - await collectNodeBinaries(join(options.cwd, options.outputDir)).then((output) => Promise.all(output.map(async (filePath) => { - debug$8.info(`Read [${colors.yellowBright(filePath)}]`); - const sourceContent = await readFileAsync(filePath); - const parsedName = parse(filePath); - const terms = parsedName.name.split("."); - const platformArchABI = terms.pop(); - const _binaryName = terms.join("."); - if (_binaryName !== binaryName) { - debug$8.warn(`[${_binaryName}] is not matched with [${binaryName}], skip`); - return; - } - const dir$1 = distDirs.find((dir$2) => dir$2.includes(platformArchABI)); - if (!dir$1 && universalSourceBins.has(platformArchABI)) { - debug$8.warn(`[${platformArchABI}] has no dist dir but it is source bin for universal arch, skip`); - return; - } - if (!dir$1) throw new Error(`No dist dir found for ${filePath}`); - const distFilePath = join(dir$1, parsedName.base); - debug$8.info(`Write file content to [${colors.yellowBright(distFilePath)}]`); - await writeFileAsync(distFilePath, sourceContent); - const distFilePathLocal = join(parse(packageJsonPath).dir, parsedName.base); - debug$8.info(`Write file content to [${colors.yellowBright(distFilePathLocal)}]`); - await writeFileAsync(distFilePathLocal, sourceContent); - }))); - const wasiTarget = targets.find((t) => t.platform === "wasi"); - if (wasiTarget) { - const wasiDir = join(options.cwd, options.npmDir, wasiTarget.platformArchABI); - const cjsFile = join(options.buildOutputDir ?? options.cwd, `${binaryName}.wasi.cjs`); - const workerFile = join(options.buildOutputDir ?? options.cwd, `wasi-worker.mjs`); - const browserEntry = join(options.buildOutputDir ?? options.cwd, `${binaryName}.wasi-browser.js`); - const browserWorkerFile = join(options.buildOutputDir ?? options.cwd, `wasi-worker-browser.mjs`); - debug$8.info(`Move wasi binding file [${colors.yellowBright(cjsFile)}] to [${colors.yellowBright(wasiDir)}]`); - await writeFileAsync(join(wasiDir, `${binaryName}.wasi.cjs`), await readFileAsync(cjsFile)); - debug$8.info(`Move wasi worker file [${colors.yellowBright(workerFile)}] to [${colors.yellowBright(wasiDir)}]`); - await writeFileAsync(join(wasiDir, `wasi-worker.mjs`), await readFileAsync(workerFile)); - debug$8.info(`Move wasi browser entry file [${colors.yellowBright(browserEntry)}] to [${colors.yellowBright(wasiDir)}]`); - await writeFileAsync(join(wasiDir, `${binaryName}.wasi-browser.js`), (await readFileAsync(browserEntry, "utf8")).replace(`new URL('./wasi-worker-browser.mjs', import.meta.url)`, `new URL('${packageName}-wasm32-wasi/wasi-worker-browser.mjs', import.meta.url)`)); - debug$8.info(`Move wasi browser worker file [${colors.yellowBright(browserWorkerFile)}] to [${colors.yellowBright(wasiDir)}]`); - await writeFileAsync(join(wasiDir, `wasi-worker-browser.mjs`), await readFileAsync(browserWorkerFile)); - } -} -async function collectNodeBinaries(root) { - const files = await readdirAsync(root, { withFileTypes: true }); - const nodeBinaries = files.filter((file) => file.isFile() && (file.name.endsWith(".node") || file.name.endsWith(".wasm"))).map((file) => join(root, file.name)); - const dirs = files.filter((file) => file.isDirectory()); - for (const dir$1 of dirs) if (dir$1.name !== "node_modules") nodeBinaries.push(...await collectNodeBinaries(join(root, dir$1.name))); - return nodeBinaries; -} - -//#endregion -//#region src/api/templates/js-binding.ts -function createCjsBinding(localName, pkgName, idents, packageVersion) { - return `${bindingHeader} -${createCommonBinding(localName, pkgName, packageVersion)} -module.exports = nativeBinding -${idents.map((ident) => `module.exports.${ident} = nativeBinding.${ident}`).join("\n")} -`; -} -function createEsmBinding(localName, pkgName, idents, packageVersion) { - return `${bindingHeader} -import { createRequire } from 'node:module' -const require = createRequire(import.meta.url) -const __dirname = new URL('.', import.meta.url).pathname - -${createCommonBinding(localName, pkgName, packageVersion)} -const { ${idents.join(", ")} } = nativeBinding -${idents.map((ident) => `export { ${ident} }`).join("\n")} -`; -} -const bindingHeader = `// prettier-ignore -/* eslint-disable */ -// @ts-nocheck -/* auto-generated by NAPI-RS */ -`; -function createCommonBinding(localName, pkgName, packageVersion) { - function requireTuple(tuple, identSize = 8) { - const identLow = " ".repeat(identSize - 2); - const ident = " ".repeat(identSize); - return `try { -${ident}return require('./${localName}.${tuple}.node') -${identLow}} catch (e) { -${ident}loadErrors.push(e) -${identLow}}${packageVersion ? ` -${identLow}try { -${ident}const binding = require('${pkgName}-${tuple}') -${ident}const bindingPackageVersion = require('${pkgName}-${tuple}/package.json').version -${ident}if (bindingPackageVersion !== '${packageVersion}' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { -${ident} throw new Error(\`Native binding package version mismatch, expected ${packageVersion} but got \${bindingPackageVersion}. You can reinstall dependencies to fix this issue.\`) -${ident}} -${ident}return binding -${identLow}} catch (e) { -${ident}loadErrors.push(e) -${identLow}}` : ` -${identLow}try { -${ident}return require('${pkgName}-${tuple}') -${identLow}} catch (e) { -${ident}loadErrors.push(e) -${identLow}}`}`; - } - return `const { readFileSync } = require('node:fs') -let nativeBinding = null -const loadErrors = [] - -const isMusl = () => { - let musl = false - if (process.platform === 'linux') { - musl = isMuslFromFilesystem() - if (musl === null) { - musl = isMuslFromReport() - } - if (musl === null) { - musl = isMuslFromChildProcess() - } - } - return musl -} - -const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-') - -const isMuslFromFilesystem = () => { - try { - return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl') - } catch { - return null - } -} - -const isMuslFromReport = () => { - let report = null - if (typeof process.report?.getReport === 'function') { - process.report.excludeNetwork = true - report = process.report.getReport() - } - if (!report) { - return null - } - if (report.header && report.header.glibcVersionRuntime) { - return false - } - if (Array.isArray(report.sharedObjects)) { - if (report.sharedObjects.some(isFileMusl)) { - return true - } - } - return false -} - -const isMuslFromChildProcess = () => { - try { - return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl') - } catch (e) { - // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false - return false - } -} - -function requireNative() { - if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) { - try { - return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH); - } catch (err) { - loadErrors.push(err) - } - } else if (process.platform === 'android') { - if (process.arch === 'arm64') { - ${requireTuple("android-arm64")} - } else if (process.arch === 'arm') { - ${requireTuple("android-arm-eabi")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on Android \${process.arch}\`)) - } - } else if (process.platform === 'win32') { - if (process.arch === 'x64') { - if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') { - ${requireTuple("win32-x64-gnu")} - } else { - ${requireTuple("win32-x64-msvc")} - } - } else if (process.arch === 'ia32') { - ${requireTuple("win32-ia32-msvc")} - } else if (process.arch === 'arm64') { - ${requireTuple("win32-arm64-msvc")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on Windows: \${process.arch}\`)) - } - } else if (process.platform === 'darwin') { - ${requireTuple("darwin-universal", 6)} - if (process.arch === 'x64') { - ${requireTuple("darwin-x64")} - } else if (process.arch === 'arm64') { - ${requireTuple("darwin-arm64")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on macOS: \${process.arch}\`)) - } - } else if (process.platform === 'freebsd') { - if (process.arch === 'x64') { - ${requireTuple("freebsd-x64")} - } else if (process.arch === 'arm64') { - ${requireTuple("freebsd-arm64")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on FreeBSD: \${process.arch}\`)) - } - } else if (process.platform === 'linux') { - if (process.arch === 'x64') { - if (isMusl()) { - ${requireTuple("linux-x64-musl", 10)} - } else { - ${requireTuple("linux-x64-gnu", 10)} - } - } else if (process.arch === 'arm64') { - if (isMusl()) { - ${requireTuple("linux-arm64-musl", 10)} - } else { - ${requireTuple("linux-arm64-gnu", 10)} - } - } else if (process.arch === 'arm') { - if (isMusl()) { - ${requireTuple("linux-arm-musleabihf", 10)} - } else { - ${requireTuple("linux-arm-gnueabihf", 10)} - } - } else if (process.arch === 'loong64') { - if (isMusl()) { - ${requireTuple("linux-loong64-musl", 10)} - } else { - ${requireTuple("linux-loong64-gnu", 10)} - } - } else if (process.arch === 'riscv64') { - if (isMusl()) { - ${requireTuple("linux-riscv64-musl", 10)} - } else { - ${requireTuple("linux-riscv64-gnu", 10)} - } - } else if (process.arch === 'ppc64') { - ${requireTuple("linux-ppc64-gnu")} - } else if (process.arch === 's390x') { - ${requireTuple("linux-s390x-gnu")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on Linux: \${process.arch}\`)) - } - } else if (process.platform === 'openharmony') { - if (process.arch === 'arm64') { - ${requireTuple("openharmony-arm64")} - } else if (process.arch === 'x64') { - ${requireTuple("openharmony-x64")} - } else if (process.arch === 'arm') { - ${requireTuple("openharmony-arm")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on OpenHarmony: \${process.arch}\`)) - } - } else { - loadErrors.push(new Error(\`Unsupported OS: \${process.platform}, architecture: \${process.arch}\`)) - } -} - -nativeBinding = requireNative() - -if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) { - let wasiBinding = null - let wasiBindingError = null - try { - wasiBinding = require('./${localName}.wasi.cjs') - nativeBinding = wasiBinding - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - wasiBindingError = err - } - } - if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) { - try { - wasiBinding = require('${pkgName}-wasm32-wasi') - nativeBinding = wasiBinding - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - if (!wasiBindingError) { - wasiBindingError = err - } else { - wasiBindingError.cause = err - } - loadErrors.push(err) - } - } - } - if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) { - const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error') - error.cause = wasiBindingError - throw error - } -} - -if (!nativeBinding) { - if (loadErrors.length > 0) { - throw new Error( - \`Cannot find native binding. \` + - \`npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). \` + - 'Please try \`npm i\` again after removing both package-lock.json and node_modules directory.', - { - cause: loadErrors.reduce((err, cur) => { - cur.cause = err - return cur - }), - }, - ) - } - throw new Error(\`Failed to load native binding\`) -} -`; -} - -//#endregion -//#region src/api/templates/load-wasi-template.ts -const createWasiBrowserBinding = (wasiFilename, initialMemory = 4e3, maximumMemory = 65536, fs$1 = false, asyncInit = false, buffer = false) => { - return `import { - createOnMessage as __wasmCreateOnMessageForFsProxy, - getDefaultContext as __emnapiGetDefaultContext, - ${asyncInit ? `instantiateNapiModule as __emnapiInstantiateNapiModule` : `instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync`}, - WASI as __WASI, -} from '@napi-rs/wasm-runtime' -${fs$1 ? buffer ? `import { memfs, Buffer } from '@napi-rs/wasm-runtime/fs'` : `import { memfs } from '@napi-rs/wasm-runtime/fs'` : ""} -${buffer && !fs$1 ? `import { Buffer } from 'buffer'` : ""} -${fs$1 ? ` -export const { fs: __fs, vol: __volume } = memfs() - -const __wasi = new __WASI({ - version: 'preview1', - fs: __fs, - preopens: { - '/': '/', - }, -})` : ` -const __wasi = new __WASI({ - version: 'preview1', -})`} - -const __wasmUrl = new URL('./${wasiFilename}.wasm', import.meta.url).href -const __emnapiContext = __emnapiGetDefaultContext() -${buffer ? "__emnapiContext.feature.Buffer = Buffer" : ""} - -const __sharedMemory = new WebAssembly.Memory({ - initial: ${initialMemory}, - maximum: ${maximumMemory}, - shared: true, -}) - -const __wasmFile = await fetch(__wasmUrl).then((res) => res.arrayBuffer()) - -const { - instance: __napiInstance, - module: __wasiModule, - napiModule: __napiModule, -} = ${asyncInit ? `await __emnapiInstantiateNapiModule` : `__emnapiInstantiateNapiModuleSync`}(__wasmFile, { - context: __emnapiContext, - asyncWorkPoolSize: 4, - wasi: __wasi, - onCreateWorker() { - const worker = new Worker(new URL('./wasi-worker-browser.mjs', import.meta.url), { - type: 'module', - }) -${fs$1 ? ` worker.addEventListener('message', __wasmCreateOnMessageForFsProxy(__fs))\n` : ""} - return worker - }, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: __sharedMemory, - } - return importObject - }, - beforeInit({ instance }) { - for (const name of Object.keys(instance.exports)) { - if (name.startsWith('__napi_register__')) { - instance.exports[name]() - } - } - }, -}) -`; -}; -const createWasiBinding = (wasmFileName, packageName, initialMemory = 4e3, maximumMemory = 65536) => `/* eslint-disable */ -/* prettier-ignore */ - -/* auto-generated by NAPI-RS */ - -const __nodeFs = require('node:fs') -const __nodePath = require('node:path') -const { WASI: __nodeWASI } = require('node:wasi') -const { Worker } = require('node:worker_threads') - -const { - createOnMessage: __wasmCreateOnMessageForFsProxy, - getDefaultContext: __emnapiGetDefaultContext, - instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync, -} = require('@napi-rs/wasm-runtime') - -const __rootDir = __nodePath.parse(process.cwd()).root - -const __wasi = new __nodeWASI({ - version: 'preview1', - env: process.env, - preopens: { - [__rootDir]: __rootDir, - } -}) - -const __emnapiContext = __emnapiGetDefaultContext() - -const __sharedMemory = new WebAssembly.Memory({ - initial: ${initialMemory}, - maximum: ${maximumMemory}, - shared: true, -}) - -let __wasmFilePath = __nodePath.join(__dirname, '${wasmFileName}.wasm') -const __wasmDebugFilePath = __nodePath.join(__dirname, '${wasmFileName}.debug.wasm') - -if (__nodeFs.existsSync(__wasmDebugFilePath)) { - __wasmFilePath = __wasmDebugFilePath -} else if (!__nodeFs.existsSync(__wasmFilePath)) { - try { - __wasmFilePath = require.resolve('${packageName}-wasm32-wasi/${wasmFileName}.wasm') - } catch { - throw new Error('Cannot find ${wasmFileName}.wasm file, and ${packageName}-wasm32-wasi package is not installed.') - } -} - -const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { - context: __emnapiContext, - asyncWorkPoolSize: (function() { - const threadsSizeFromEnv = Number(process.env.NAPI_RS_ASYNC_WORK_POOL_SIZE ?? process.env.UV_THREADPOOL_SIZE) - // NaN > 0 is false - if (threadsSizeFromEnv > 0) { - return threadsSizeFromEnv - } else { - return 4 - } - })(), - reuseWorker: true, - wasi: __wasi, - onCreateWorker() { - const worker = new Worker(__nodePath.join(__dirname, 'wasi-worker.mjs'), { - env: process.env, - }) - worker.onmessage = ({ data }) => { - __wasmCreateOnMessageForFsProxy(__nodeFs)(data) - } - - // The main thread of Node.js waits for all the active handles before exiting. - // But Rust threads are never waited without \`thread::join\`. - // So here we hack the code of Node.js to prevent the workers from being referenced (active). - // According to https://github.com/nodejs/node/blob/19e0d472728c79d418b74bddff588bea70a403d0/lib/internal/worker.js#L415, - // a worker is consist of two handles: kPublicPort and kHandle. - { - const kPublicPort = Object.getOwnPropertySymbols(worker).find(s => - s.toString().includes("kPublicPort") - ); - if (kPublicPort) { - worker[kPublicPort].ref = () => {}; - } - - const kHandle = Object.getOwnPropertySymbols(worker).find(s => - s.toString().includes("kHandle") - ); - if (kHandle) { - worker[kHandle].ref = () => {}; - } - - worker.unref(); - } - return worker - }, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: __sharedMemory, - } - return importObject - }, - beforeInit({ instance }) { - for (const name of Object.keys(instance.exports)) { - if (name.startsWith('__napi_register__')) { - instance.exports[name]() - } - } - }, -}) -`; - -//#endregion -//#region src/api/templates/wasi-worker-template.ts -const WASI_WORKER_TEMPLATE = `import fs from "node:fs"; -import { createRequire } from "node:module"; -import { parse } from "node:path"; -import { WASI } from "node:wasi"; -import { parentPort, Worker } from "node:worker_threads"; - -const require = createRequire(import.meta.url); - -const { instantiateNapiModuleSync, MessageHandler, getDefaultContext } = require("@napi-rs/wasm-runtime"); - -if (parentPort) { - parentPort.on("message", (data) => { - globalThis.onmessage({ data }); - }); -} - -Object.assign(globalThis, { - self: globalThis, - require, - Worker, - importScripts: function (f) { - ;(0, eval)(fs.readFileSync(f, "utf8") + "//# sourceURL=" + f); - }, - postMessage: function (msg) { - if (parentPort) { - parentPort.postMessage(msg); - } - }, -}); - -const emnapiContext = getDefaultContext(); - -const __rootDir = parse(process.cwd()).root; - -const handler = new MessageHandler({ - onLoad({ wasmModule, wasmMemory }) { - const wasi = new WASI({ - version: 'preview1', - env: process.env, - preopens: { - [__rootDir]: __rootDir, - }, - }); - - return instantiateNapiModuleSync(wasmModule, { - childThread: true, - wasi, - context: emnapiContext, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: wasmMemory - }; - }, - }); - }, -}); - -globalThis.onmessage = function (e) { - handler.handle(e); -}; -`; -const createWasiBrowserWorkerBinding = (fs$1) => { - return `${fs$1 ? `import { instantiateNapiModuleSync, MessageHandler, WASI, createFsProxy } from '@napi-rs/wasm-runtime' -import { memfsExported as __memfsExported } from '@napi-rs/wasm-runtime/fs' - -const fs = createFsProxy(__memfsExported)` : `import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime'`} - -const handler = new MessageHandler({ - onLoad({ wasmModule, wasmMemory }) { - ${fs$1 ? `const wasi = new WASI({ - fs, - preopens: { - '/': '/', - }, - print: function () { - // eslint-disable-next-line no-console - console.log.apply(console, arguments) - }, - printErr: function() { - // eslint-disable-next-line no-console - console.error.apply(console, arguments) - }, - })` : `const wasi = new WASI({ - print: function () { - // eslint-disable-next-line no-console - console.log.apply(console, arguments) - }, - printErr: function() { - // eslint-disable-next-line no-console - console.error.apply(console, arguments) - }, - })`} - return instantiateNapiModuleSync(wasmModule, { - childThread: true, - wasi, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: wasmMemory, - } - }, - }) - }, -}) - -globalThis.onmessage = function (e) { - handler.handle(e) -} -`; -}; - -//#endregion -//#region src/api/build.ts -const debug$7 = debugFactory("build"); -const require = createRequire(import.meta.url); -async function buildProject(rawOptions) { - debug$7("napi build command receive options: %O", rawOptions); - const options = { - dtsCache: true, - ...rawOptions, - cwd: rawOptions.cwd ?? process.cwd() - }; - const resolvePath = (...paths) => resolve(options.cwd, ...paths); - const manifestPath = resolvePath(options.manifestPath ?? "Cargo.toml"); - const metadata = await parseMetadata(manifestPath); - const crate = metadata.packages.find((p) => { - if (options.package) return p.name === options.package; - else return p.manifest_path === manifestPath; - }); - if (!crate) throw new Error("Unable to find crate to build. It seems you are trying to build a crate in a workspace, try using `--package` option to specify the package to build."); - return new Builder(metadata, crate, await readNapiConfig(resolvePath(options.packageJsonPath ?? "package.json"), options.configPath ? resolvePath(options.configPath) : void 0), options).build(); -} -var Builder = class { - args = []; - envs = {}; - outputs = []; - target; - crateDir; - outputDir; - targetDir; - enableTypeDef = false; - constructor(metadata, crate, config, options) { - this.metadata = metadata; - this.crate = crate; - this.config = config; - this.options = options; - this.target = options.target ? parseTriple(options.target) : process.env.CARGO_BUILD_TARGET ? parseTriple(process.env.CARGO_BUILD_TARGET) : getSystemDefaultTarget(); - this.crateDir = parse(crate.manifest_path).dir; - this.outputDir = resolve(this.options.cwd, options.outputDir ?? this.crateDir); - this.targetDir = options.targetDir ?? process.env.CARGO_BUILD_TARGET_DIR ?? metadata.target_directory; - this.enableTypeDef = this.crate.dependencies.some((dep) => dep.name === "napi-derive" && (dep.uses_default_features || dep.features.includes("type-def"))); - if (!this.enableTypeDef) { - const requirementWarning = "`napi-derive` crate is not used or `type-def` feature is not enabled for `napi-derive` crate"; - debug$7.warn(`${requirementWarning}. Will skip binding generation for \`.node\`, \`.wasi\` and \`.d.ts\` files.`); - if (this.options.dts || this.options.dtsHeader || this.config.dtsHeader || this.config.dtsHeaderFile) debug$7.warn(`${requirementWarning}. \`dts\` related options are enabled but will be ignored.`); - } - } - get cdyLibName() { - var _this$crate$targets$f; - return (_this$crate$targets$f = this.crate.targets.find((t) => t.crate_types.includes("cdylib"))) === null || _this$crate$targets$f === void 0 ? void 0 : _this$crate$targets$f.name; - } - get binName() { - var _this$crate$targets$f2; - return this.options.bin ?? (this.cdyLibName ? null : (_this$crate$targets$f2 = this.crate.targets.find((t) => t.crate_types.includes("bin"))) === null || _this$crate$targets$f2 === void 0 ? void 0 : _this$crate$targets$f2.name); - } - build() { - if (!this.cdyLibName) { - const warning = "Missing `crate-type = [\"cdylib\"]` in [lib] config. The build result will not be available as node addon."; - if (this.binName) debug$7.warn(warning); - else throw new Error(warning); - } - return this.pickBinary().setPackage().setFeatures().setTarget().pickCrossToolchain().setEnvs().setBypassArgs().exec(); - } - pickCrossToolchain() { - if (!this.options.useNapiCross) return this; - if (this.options.useCross) debug$7.warn("You are trying to use both `--cross` and `--use-napi-cross` options, `--use-cross` will be ignored."); - if (this.options.crossCompile) debug$7.warn("You are trying to use both `--cross-compile` and `--use-napi-cross` options, `--cross-compile` will be ignored."); - try { - var _process$env$TARGET_C, _process$env$CC, _process$env$CXX, _process$env$TARGET_C2; - const { version: version$2, download } = require("@napi-rs/cross-toolchain"); - const alias = { "s390x-unknown-linux-gnu": "s390x-ibm-linux-gnu" }; - const toolchainPath = join(homedir(), ".napi-rs", "cross-toolchain", version$2, this.target.triple); - mkdirSync(toolchainPath, { recursive: true }); - if (existsSync(join(toolchainPath, "package.json"))) debug$7(`Toolchain ${toolchainPath} exists, skip extracting`); - else download(process.arch, this.target.triple).unpack(toolchainPath); - const upperCaseTarget = targetToEnvVar(this.target.triple); - const crossTargetName = alias[this.target.triple] ?? this.target.triple; - const linkerEnv = `CARGO_TARGET_${upperCaseTarget}_LINKER`; - this.setEnvIfNotExists(linkerEnv, join(toolchainPath, "bin", `${crossTargetName}-gcc`)); - this.setEnvIfNotExists("TARGET_SYSROOT", join(toolchainPath, crossTargetName, "sysroot")); - this.setEnvIfNotExists("TARGET_AR", join(toolchainPath, "bin", `${crossTargetName}-ar`)); - this.setEnvIfNotExists("TARGET_RANLIB", join(toolchainPath, "bin", `${crossTargetName}-ranlib`)); - this.setEnvIfNotExists("TARGET_READELF", join(toolchainPath, "bin", `${crossTargetName}-readelf`)); - this.setEnvIfNotExists("TARGET_C_INCLUDE_PATH", join(toolchainPath, crossTargetName, "sysroot", "usr", "include/")); - this.setEnvIfNotExists("TARGET_CC", join(toolchainPath, "bin", `${crossTargetName}-gcc`)); - this.setEnvIfNotExists("TARGET_CXX", join(toolchainPath, "bin", `${crossTargetName}-g++`)); - this.setEnvIfNotExists("BINDGEN_EXTRA_CLANG_ARGS", `--sysroot=${this.envs.TARGET_SYSROOT}}`); - if (((_process$env$TARGET_C = process.env.TARGET_CC) === null || _process$env$TARGET_C === void 0 ? void 0 : _process$env$TARGET_C.startsWith("clang")) || ((_process$env$CC = process.env.CC) === null || _process$env$CC === void 0 ? void 0 : _process$env$CC.startsWith("clang")) && !process.env.TARGET_CC) { - const TARGET_CFLAGS = process.env.TARGET_CFLAGS ?? ""; - this.envs.TARGET_CFLAGS = `--sysroot=${this.envs.TARGET_SYSROOT} --gcc-toolchain=${toolchainPath} ${TARGET_CFLAGS}`; - } - if (((_process$env$CXX = process.env.CXX) === null || _process$env$CXX === void 0 ? void 0 : _process$env$CXX.startsWith("clang++")) && !process.env.TARGET_CXX || ((_process$env$TARGET_C2 = process.env.TARGET_CXX) === null || _process$env$TARGET_C2 === void 0 ? void 0 : _process$env$TARGET_C2.startsWith("clang++"))) { - const TARGET_CXXFLAGS = process.env.TARGET_CXXFLAGS ?? ""; - this.envs.TARGET_CXXFLAGS = `--sysroot=${this.envs.TARGET_SYSROOT} --gcc-toolchain=${toolchainPath} ${TARGET_CXXFLAGS}`; - } - this.envs.PATH = this.envs.PATH ? `${toolchainPath}/bin:${this.envs.PATH}:${process.env.PATH}` : `${toolchainPath}/bin:${process.env.PATH}`; - } catch (e) { - debug$7.warn("Pick cross toolchain failed", e); - } - return this; - } - exec() { - debug$7(`Start building crate: ${this.crate.name}`); - debug$7(" %i", `cargo ${this.args.join(" ")}`); - const controller = new AbortController(); - const watch = this.options.watch; - return { - task: new Promise((resolve$1, reject) => { - var _buildProcess$stderr; - if (this.options.useCross && this.options.crossCompile) throw new Error("`--use-cross` and `--cross-compile` can not be used together"); - const buildProcess = spawn(process.env.CARGO ?? (this.options.useCross ? "cross" : "cargo"), this.args, { - env: { - ...process.env, - ...this.envs - }, - stdio: watch ? [ - "inherit", - "inherit", - "pipe" - ] : "inherit", - cwd: this.options.cwd, - signal: controller.signal - }); - buildProcess.once("exit", (code) => { - if (code === 0) { - debug$7("%i", `Build crate ${this.crate.name} successfully!`); - resolve$1(); - } else reject(/* @__PURE__ */ new Error(`Build failed with exit code ${code}`)); - }); - buildProcess.once("error", (e) => { - reject(new Error(`Build failed with error: ${e.message}`, { cause: e })); - }); - (_buildProcess$stderr = buildProcess.stderr) === null || _buildProcess$stderr === void 0 || _buildProcess$stderr.on("data", (data) => { - const output = data.toString(); - console.error(output); - if (/Finished\s(`dev`|`release`)/.test(output)) this.postBuild().catch(() => {}); - }); - }).then(() => this.postBuild()), - abort: () => controller.abort() - }; - } - pickBinary() { - let set = false; - if (this.options.watch) if (process.env.CI) debug$7.warn("Watch mode is not supported in CI environment"); - else { - debug$7("Use %i", "cargo-watch"); - tryInstallCargoBinary("cargo-watch", "watch"); - this.args.push("watch", "--why", "-i", "*.{js,ts,node}", "-w", this.crateDir, "--", "cargo", "build"); - set = true; - } - if (this.options.crossCompile) if (this.target.platform === "win32") if (process.platform === "win32") debug$7.warn("You are trying to cross compile to win32 platform on win32 platform which is unnecessary."); - else { - debug$7("Use %i", "cargo-xwin"); - tryInstallCargoBinary("cargo-xwin", "xwin"); - this.args.push("xwin", "build"); - if (this.target.arch === "ia32") this.envs.XWIN_ARCH = "x86"; - set = true; - } - else if (this.target.platform === "linux" && process.platform === "linux" && this.target.arch === process.arch && (function(abi) { - var _process$report; - return abi === (((_process$report = process.report) === null || _process$report === void 0 || (_process$report = _process$report.getReport()) === null || _process$report === void 0 || (_process$report = _process$report.header) === null || _process$report === void 0 ? void 0 : _process$report.glibcVersionRuntime) ? "gnu" : "musl"); - })(this.target.abi)) debug$7.warn("You are trying to cross compile to linux target on linux platform which is unnecessary."); - else if (this.target.platform === "darwin" && process.platform === "darwin") debug$7.warn("You are trying to cross compile to darwin target on darwin platform which is unnecessary."); - else { - debug$7("Use %i", "cargo-zigbuild"); - tryInstallCargoBinary("cargo-zigbuild", "zigbuild"); - this.args.push("zigbuild"); - set = true; - } - if (!set) this.args.push("build"); - return this; - } - setPackage() { - const args = []; - if (this.options.package) args.push("--package", this.options.package); - if (this.binName) args.push("--bin", this.binName); - if (args.length) { - debug$7("Set package flags: "); - debug$7(" %O", args); - this.args.push(...args); - } - return this; - } - setTarget() { - debug$7("Set compiling target to: "); - debug$7(" %i", this.target.triple); - this.args.push("--target", this.target.triple); - return this; - } - setEnvs() { - var _this$target$abi; - if (this.enableTypeDef) { - this.envs.NAPI_TYPE_DEF_TMP_FOLDER = this.generateIntermediateTypeDefFolder(); - this.setForceBuildEnvs(this.envs.NAPI_TYPE_DEF_TMP_FOLDER); - } - let rustflags = process.env.RUSTFLAGS ?? process.env.CARGO_BUILD_RUSTFLAGS ?? ""; - if (((_this$target$abi = this.target.abi) === null || _this$target$abi === void 0 ? void 0 : _this$target$abi.includes("musl")) && !rustflags.includes("target-feature=-crt-static")) rustflags += " -C target-feature=-crt-static"; - if (this.options.strip && !rustflags.includes("link-arg=-s")) rustflags += " -C link-arg=-s"; - if (rustflags.length) this.envs.RUSTFLAGS = rustflags; - const linker = this.options.crossCompile ? void 0 : getTargetLinker(this.target.triple); - const linkerEnv = `CARGO_TARGET_${targetToEnvVar(this.target.triple)}_LINKER`; - if (linker && !process.env[linkerEnv] && !this.envs[linkerEnv]) this.envs[linkerEnv] = linker; - if (this.target.platform === "android") this.setAndroidEnv(); - if (this.target.platform === "wasi") this.setWasiEnv(); - if (this.target.platform === "openharmony") this.setOpenHarmonyEnv(); - debug$7("Set envs: "); - Object.entries(this.envs).forEach(([k, v]) => { - debug$7(" %i", `${k}=${v}`); - }); - return this; - } - setForceBuildEnvs(typeDefTmpFolder) { - this.metadata.packages.forEach((crate) => { - if (crate.dependencies.some((d) => d.name === "napi-derive") && !existsSync(join(typeDefTmpFolder, crate.name))) this.envs[`NAPI_FORCE_BUILD_${crate.name.replace(/-/g, "_").toUpperCase()}`] = Date.now().toString(); - }); - } - setAndroidEnv() { - const { ANDROID_NDK_LATEST_HOME } = process.env; - if (!ANDROID_NDK_LATEST_HOME) debug$7.warn(`${colors.red("ANDROID_NDK_LATEST_HOME")} environment variable is missing`); - if (process.platform === "android") return; - const targetArch = this.target.arch === "arm" ? "armv7a" : "aarch64"; - const targetPlatform = this.target.arch === "arm" ? "androideabi24" : "android24"; - const hostPlatform = process.platform === "darwin" ? "darwin" : process.platform === "win32" ? "windows" : "linux"; - Object.assign(this.envs, { - CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-android24-clang`, - CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-androideabi24-clang`, - TARGET_CC: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang`, - TARGET_CXX: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang++`, - TARGET_AR: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/llvm-ar`, - TARGET_RANLIB: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/llvm-ranlib`, - ANDROID_NDK: ANDROID_NDK_LATEST_HOME, - PATH: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin${process.platform === "win32" ? ";" : ":"}${process.env.PATH}` - }); - } - setWasiEnv() { - const emnapi = join(require.resolve("emnapi"), "..", "lib", "wasm32-wasi-threads"); - this.envs.EMNAPI_LINK_DIR = emnapi; - const { WASI_SDK_PATH } = process.env; - if (WASI_SDK_PATH && existsSync(WASI_SDK_PATH)) { - this.envs.CARGO_TARGET_WASM32_WASI_PREVIEW1_THREADS_LINKER = join(WASI_SDK_PATH, "bin", "wasm-ld"); - this.envs.CARGO_TARGET_WASM32_WASIP1_LINKER = join(WASI_SDK_PATH, "bin", "wasm-ld"); - this.envs.CARGO_TARGET_WASM32_WASIP1_THREADS_LINKER = join(WASI_SDK_PATH, "bin", "wasm-ld"); - this.envs.CARGO_TARGET_WASM32_WASIP2_LINKER = join(WASI_SDK_PATH, "bin", "wasm-ld"); - this.setEnvIfNotExists("TARGET_CC", join(WASI_SDK_PATH, "bin", "clang")); - this.setEnvIfNotExists("TARGET_CXX", join(WASI_SDK_PATH, "bin", "clang++")); - this.setEnvIfNotExists("TARGET_AR", join(WASI_SDK_PATH, "bin", "ar")); - this.setEnvIfNotExists("TARGET_RANLIB", join(WASI_SDK_PATH, "bin", "ranlib")); - this.setEnvIfNotExists("TARGET_CFLAGS", `--target=wasm32-wasi-threads --sysroot=${WASI_SDK_PATH}/share/wasi-sysroot -pthread -mllvm -wasm-enable-sjlj`); - this.setEnvIfNotExists("TARGET_CXXFLAGS", `--target=wasm32-wasi-threads --sysroot=${WASI_SDK_PATH}/share/wasi-sysroot -pthread -mllvm -wasm-enable-sjlj`); - this.setEnvIfNotExists(`TARGET_LDFLAGS`, `-fuse-ld=${WASI_SDK_PATH}/bin/wasm-ld --target=wasm32-wasi-threads`); - } - } - setOpenHarmonyEnv() { - const { OHOS_SDK_PATH, OHOS_SDK_NATIVE } = process.env; - const ndkPath = OHOS_SDK_PATH ? `${OHOS_SDK_PATH}/native` : OHOS_SDK_NATIVE; - if (!ndkPath && process.platform !== "openharmony") { - debug$7.warn(`${colors.red("OHOS_SDK_PATH")} or ${colors.red("OHOS_SDK_NATIVE")} environment variable is missing`); - return; - } - const linkerName = `CARGO_TARGET_${this.target.triple.toUpperCase().replace(/-/g, "_")}_LINKER`; - const ranPath = `${ndkPath}/llvm/bin/llvm-ranlib`; - const arPath = `${ndkPath}/llvm/bin/llvm-ar`; - const ccPath = `${ndkPath}/llvm/bin/${this.target.triple}-clang`; - const cxxPath = `${ndkPath}/llvm/bin/${this.target.triple}-clang++`; - const asPath = `${ndkPath}/llvm/bin/llvm-as`; - const ldPath = `${ndkPath}/llvm/bin/ld.lld`; - const stripPath = `${ndkPath}/llvm/bin/llvm-strip`; - const objDumpPath = `${ndkPath}/llvm/bin/llvm-objdump`; - const objCopyPath = `${ndkPath}/llvm/bin/llvm-objcopy`; - const nmPath = `${ndkPath}/llvm/bin/llvm-nm`; - const binPath = `${ndkPath}/llvm/bin`; - const libPath = `${ndkPath}/llvm/lib`; - this.setEnvIfNotExists("LIBCLANG_PATH", libPath); - this.setEnvIfNotExists("DEP_ATOMIC", "clang_rt.builtins"); - this.setEnvIfNotExists(linkerName, ccPath); - this.setEnvIfNotExists("TARGET_CC", ccPath); - this.setEnvIfNotExists("TARGET_CXX", cxxPath); - this.setEnvIfNotExists("TARGET_AR", arPath); - this.setEnvIfNotExists("TARGET_RANLIB", ranPath); - this.setEnvIfNotExists("TARGET_AS", asPath); - this.setEnvIfNotExists("TARGET_LD", ldPath); - this.setEnvIfNotExists("TARGET_STRIP", stripPath); - this.setEnvIfNotExists("TARGET_OBJDUMP", objDumpPath); - this.setEnvIfNotExists("TARGET_OBJCOPY", objCopyPath); - this.setEnvIfNotExists("TARGET_NM", nmPath); - this.envs.PATH = `${binPath}${process.platform === "win32" ? ";" : ":"}${process.env.PATH}`; - } - setFeatures() { - const args = []; - if (this.options.allFeatures && this.options.noDefaultFeatures) throw new Error("Cannot specify --all-features and --no-default-features together"); - if (this.options.allFeatures) args.push("--all-features"); - else if (this.options.noDefaultFeatures) args.push("--no-default-features"); - if (this.options.features) args.push("--features", ...this.options.features); - debug$7("Set features flags: "); - debug$7(" %O", args); - this.args.push(...args); - return this; - } - setBypassArgs() { - var _this$options$cargoOp; - if (this.options.release) this.args.push("--release"); - if (this.options.verbose) this.args.push("--verbose"); - if (this.options.targetDir) this.args.push("--target-dir", this.options.targetDir); - if (this.options.profile) this.args.push("--profile", this.options.profile); - if (this.options.manifestPath) this.args.push("--manifest-path", this.options.manifestPath); - if ((_this$options$cargoOp = this.options.cargoOptions) === null || _this$options$cargoOp === void 0 ? void 0 : _this$options$cargoOp.length) this.args.push(...this.options.cargoOptions); - return this; - } - generateIntermediateTypeDefFolder() { - let folder = join(this.targetDir, "napi-rs", `${this.crate.name}-${createHash("sha256").update(this.crate.manifest_path).update(CLI_VERSION).digest("hex").substring(0, 8)}`); - if (!this.options.dtsCache) { - rmSync(folder, { - recursive: true, - force: true - }); - folder += `_${Date.now()}`; - } - mkdirAsync(folder, { recursive: true }); - return folder; - } - async postBuild() { - try { - debug$7(`Try to create output directory:`); - debug$7(" %i", this.outputDir); - await mkdirAsync(this.outputDir, { recursive: true }); - debug$7(`Output directory created`); - } catch (e) { - throw new Error(`Failed to create output directory ${this.outputDir}`, { cause: e }); - } - const wasmBinaryName = await this.copyArtifact(); - if (this.cdyLibName) { - const idents = await this.generateTypeDef(); - const jsOutput = await this.writeJsBinding(idents); - const wasmBindingsOutput = await this.writeWasiBinding(wasmBinaryName, idents); - if (jsOutput) this.outputs.push(jsOutput); - if (wasmBindingsOutput) this.outputs.push(...wasmBindingsOutput); - } - return this.outputs; - } - async copyArtifact() { - const [srcName, destName, wasmBinaryName] = this.getArtifactNames(); - if (!srcName || !destName) return; - const profile = this.options.profile ?? (this.options.release ? "release" : "debug"); - const src = join(this.targetDir, this.target.triple, profile, srcName); - debug$7(`Copy artifact from: [${src}]`); - const dest = join(this.outputDir, destName); - const isWasm = dest.endsWith(".wasm"); - try { - if (await fileExists(dest)) { - debug$7("Old artifact found, remove it first"); - await unlinkAsync(dest); - } - debug$7("Copy artifact to:"); - debug$7(" %i", dest); - if (isWasm) { - const { ModuleConfig } = await import("@napi-rs/wasm-tools"); - debug$7("Generate debug wasm module"); - try { - const debugWasmBinary = new ModuleConfig().generateDwarf(true).generateNameSection(true).generateProducersSection(true).preserveCodeTransform(true).strictValidate(false).parse(await readFileAsync(src)).emitWasm(true); - await writeFileAsync(dest.replace(/\.wasm$/, ".debug.wasm"), debugWasmBinary); - debug$7("Generate release wasm module"); - await writeFileAsync(dest, new ModuleConfig().generateDwarf(false).generateNameSection(false).generateProducersSection(false).preserveCodeTransform(false).strictValidate(false).onlyStableFeatures(false).parse(debugWasmBinary).emitWasm(false)); - } catch (e) { - debug$7.warn(`Failed to generate debug wasm module: ${e.message ?? e}`); - await copyFileAsync(src, dest); - } - } else await copyFileAsync(src, dest); - this.outputs.push({ - kind: dest.endsWith(".node") ? "node" : isWasm ? "wasm" : "exe", - path: dest - }); - return wasmBinaryName ? join(this.outputDir, wasmBinaryName) : null; - } catch (e) { - throw new Error("Failed to copy artifact", { cause: e }); - } - } - getArtifactNames() { - if (this.cdyLibName) { - const cdyLib = this.cdyLibName.replace(/-/g, "_"); - const wasiTarget = this.config.targets.find((t) => t.platform === "wasi"); - const srcName = this.target.platform === "darwin" ? `lib${cdyLib}.dylib` : this.target.platform === "win32" ? `${cdyLib}.dll` : this.target.platform === "wasi" || this.target.platform === "wasm" ? `${cdyLib}.wasm` : `lib${cdyLib}.so`; - let destName = this.config.binaryName; - if (this.options.platform) destName += `.${this.target.platformArchABI}`; - if (srcName.endsWith(".wasm")) destName += ".wasm"; - else destName += ".node"; - return [ - srcName, - destName, - wasiTarget ? `${this.config.binaryName}.${wasiTarget.platformArchABI}.wasm` : null - ]; - } else if (this.binName) { - const srcName = this.target.platform === "win32" ? `${this.binName}.exe` : this.binName; - return [srcName, srcName]; - } - return []; - } - async generateTypeDef() { - const typeDefDir = this.envs.NAPI_TYPE_DEF_TMP_FOLDER; - if (!this.enableTypeDef) return []; - const { exports, dts } = await generateTypeDef({ - typeDefDir, - noDtsHeader: this.options.noDtsHeader, - dtsHeader: this.options.dtsHeader, - configDtsHeader: this.config.dtsHeader, - configDtsHeaderFile: this.config.dtsHeaderFile, - constEnum: this.options.constEnum ?? this.config.constEnum, - cwd: this.options.cwd - }); - const dest = join(this.outputDir, this.options.dts ?? "index.d.ts"); - try { - debug$7("Writing type def to:"); - debug$7(" %i", dest); - await writeFileAsync(dest, dts, "utf-8"); - } catch (e) { - debug$7.error("Failed to write type def file"); - debug$7.error(e); - } - if (exports.length > 0) { - const dest$1 = join(this.outputDir, this.options.dts ?? "index.d.ts"); - this.outputs.push({ - kind: "dts", - path: dest$1 - }); - } - return exports; - } - async writeJsBinding(idents) { - return writeJsBinding({ - platform: this.options.platform, - noJsBinding: this.options.noJsBinding, - idents, - jsBinding: this.options.jsBinding, - esm: this.options.esm, - binaryName: this.config.binaryName, - packageName: this.options.jsPackageName ?? this.config.packageName, - version: process.env.npm_new_version ?? this.config.packageJson.version, - outputDir: this.outputDir - }); - } - async writeWasiBinding(distFileName, idents) { - if (distFileName) { - var _this$config$wasm, _this$config$wasm2, _this$config$wasm3, _this$config$wasm4, _this$config$wasm5, _this$config$wasm6, _this$config$wasm7, _this$config$wasm8; - const { name, dir: dir$1 } = parse(distFileName); - const bindingPath = join(dir$1, `${this.config.binaryName}.wasi.cjs`); - const browserBindingPath = join(dir$1, `${this.config.binaryName}.wasi-browser.js`); - const workerPath = join(dir$1, "wasi-worker.mjs"); - const browserWorkerPath = join(dir$1, "wasi-worker-browser.mjs"); - const browserEntryPath = join(dir$1, "browser.js"); - const exportsCode = `module.exports = __napiModule.exports\n` + idents.map((ident) => `module.exports.${ident} = __napiModule.exports.${ident}`).join("\n"); - await writeFileAsync(bindingPath, createWasiBinding(name, this.config.packageName, (_this$config$wasm = this.config.wasm) === null || _this$config$wasm === void 0 ? void 0 : _this$config$wasm.initialMemory, (_this$config$wasm2 = this.config.wasm) === null || _this$config$wasm2 === void 0 ? void 0 : _this$config$wasm2.maximumMemory) + exportsCode + "\n", "utf8"); - await writeFileAsync(browserBindingPath, createWasiBrowserBinding(name, (_this$config$wasm3 = this.config.wasm) === null || _this$config$wasm3 === void 0 ? void 0 : _this$config$wasm3.initialMemory, (_this$config$wasm4 = this.config.wasm) === null || _this$config$wasm4 === void 0 ? void 0 : _this$config$wasm4.maximumMemory, (_this$config$wasm5 = this.config.wasm) === null || _this$config$wasm5 === void 0 || (_this$config$wasm5 = _this$config$wasm5.browser) === null || _this$config$wasm5 === void 0 ? void 0 : _this$config$wasm5.fs, (_this$config$wasm6 = this.config.wasm) === null || _this$config$wasm6 === void 0 || (_this$config$wasm6 = _this$config$wasm6.browser) === null || _this$config$wasm6 === void 0 ? void 0 : _this$config$wasm6.asyncInit, (_this$config$wasm7 = this.config.wasm) === null || _this$config$wasm7 === void 0 || (_this$config$wasm7 = _this$config$wasm7.browser) === null || _this$config$wasm7 === void 0 ? void 0 : _this$config$wasm7.buffer) + `export default __napiModule.exports\n` + idents.map((ident) => `export const ${ident} = __napiModule.exports.${ident}`).join("\n") + "\n", "utf8"); - await writeFileAsync(workerPath, WASI_WORKER_TEMPLATE, "utf8"); - await writeFileAsync(browserWorkerPath, createWasiBrowserWorkerBinding(((_this$config$wasm8 = this.config.wasm) === null || _this$config$wasm8 === void 0 || (_this$config$wasm8 = _this$config$wasm8.browser) === null || _this$config$wasm8 === void 0 ? void 0 : _this$config$wasm8.fs) ?? false), "utf8"); - await writeFileAsync(browserEntryPath, `export * from '${this.config.packageName}-wasm32-wasi'\n`); - return [ - { - kind: "js", - path: bindingPath - }, - { - kind: "js", - path: browserBindingPath - }, - { - kind: "js", - path: workerPath - }, - { - kind: "js", - path: browserWorkerPath - }, - { - kind: "js", - path: browserEntryPath - } - ]; - } - return []; - } - setEnvIfNotExists(env, value$1) { - if (!process.env[env]) this.envs[env] = value$1; - } -}; -async function writeJsBinding(options) { - if (!options.platform || options.noJsBinding || options.idents.length === 0) return; - const name = options.jsBinding ?? "index.js"; - const binding = (options.esm ? createEsmBinding : createCjsBinding)(options.binaryName, options.packageName, options.idents, options.version); - try { - const dest = join(options.outputDir, name); - debug$7("Writing js binding to:"); - debug$7(" %i", dest); - await writeFileAsync(dest, binding, "utf-8"); - return { - kind: "js", - path: dest - }; - } catch (e) { - throw new Error("Failed to write js binding file", { cause: e }); - } -} -async function generateTypeDef(options) { - if (!await dirExistsAsync(options.typeDefDir)) return { - exports: [], - dts: "" - }; - let header = ""; - let dts = ""; - let exports = []; - if (!options.noDtsHeader) { - const dtsHeader = options.dtsHeader ?? options.configDtsHeader; - if (options.configDtsHeaderFile) try { - header = await readFileAsync(join(options.cwd, options.configDtsHeaderFile), "utf-8"); - } catch (e) { - debug$7.warn(`Failed to read dts header file ${options.configDtsHeaderFile}`, e); - } - else if (dtsHeader) header = dtsHeader; - else header = DEFAULT_TYPE_DEF_HEADER; - } - const files = await readdirAsync(options.typeDefDir, { withFileTypes: true }); - if (!files.length) { - debug$7("No type def files found. Skip generating dts file."); - return { - exports: [], - dts: "" - }; - } - for (const file of files) { - if (!file.isFile()) continue; - const { dts: fileDts, exports: fileExports } = await processTypeDef(join(options.typeDefDir, file.name), options.constEnum ?? true); - dts += fileDts; - exports.push(...fileExports); - } - if (dts.indexOf("ExternalObject<") > -1) header += ` -export declare class ExternalObject { - readonly '': { - readonly '': unique symbol - [K: symbol]: T - } -} -`; - if (dts.indexOf("TypedArray") > -1) header += ` -export type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array -`; - dts = header + dts; - return { - exports, - dts - }; -} - -//#endregion -//#region src/def/create-npm-dirs.ts -var BaseCreateNpmDirsCommand = class extends Command { - static paths = [["create-npm-dirs"]]; - static usage = Command.Usage({ description: "Create npm package dirs for different platforms" }); - cwd = Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - npmDir = Option.String("--npm-dir", "npm", { description: "Path to the folder where the npm packages put" }); - dryRun = Option.Boolean("--dry-run", false, { description: "Dry run without touching file system" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir, - dryRun: this.dryRun - }; - } -}; -function applyDefaultCreateNpmDirsOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - npmDir: "npm", - dryRun: false, - ...options - }; -} - -//#endregion -//#region src/api/create-npm-dirs.ts -const debug$6 = debugFactory("create-npm-dirs"); -async function createNpmDirs(userOptions) { - const options = applyDefaultCreateNpmDirsOptions(userOptions); - async function mkdirAsync$1(dir$1) { - debug$6("Try to create dir: %i", dir$1); - if (options.dryRun) return; - await mkdirAsync(dir$1, { recursive: true }); - } - async function writeFileAsync$1(file, content) { - debug$6("Writing file %i", file); - if (options.dryRun) { - debug$6(content); - return; - } - await writeFileAsync(file, content); - } - const packageJsonPath = resolve(options.cwd, options.packageJsonPath); - const npmPath = resolve(options.cwd, options.npmDir); - debug$6(`Read content from [${options.configPath ?? packageJsonPath}]`); - const { targets, binaryName, packageName, packageJson } = await readNapiConfig(packageJsonPath, options.configPath ? resolve(options.cwd, options.configPath) : void 0); - for (const target of targets) { - const targetDir = join(npmPath, `${target.platformArchABI}`); - await mkdirAsync$1(targetDir); - const binaryFileName = target.arch === "wasm32" ? `${binaryName}.${target.platformArchABI}.wasm` : `${binaryName}.${target.platformArchABI}.node`; - const scopedPackageJson = { - name: `${packageName}-${target.platformArchABI}`, - version: packageJson.version, - cpu: target.arch !== "universal" ? [target.arch] : void 0, - main: binaryFileName, - files: [binaryFileName], - ...pick$1(packageJson, "description", "keywords", "author", "authors", "homepage", "license", "engines", "repository", "bugs") - }; - if (packageJson.publishConfig) scopedPackageJson.publishConfig = pick$1(packageJson.publishConfig, "registry", "access"); - if (target.arch !== "wasm32") scopedPackageJson.os = [target.platform]; - else { - var _scopedPackageJson$fi, _scopedPackageJson$en; - const entry = `${binaryName}.wasi.cjs`; - scopedPackageJson.main = entry; - scopedPackageJson.browser = `${binaryName}.wasi-browser.js`; - (_scopedPackageJson$fi = scopedPackageJson.files) === null || _scopedPackageJson$fi === void 0 || _scopedPackageJson$fi.push(entry, scopedPackageJson.browser, `wasi-worker.mjs`, `wasi-worker-browser.mjs`); - let needRestrictNodeVersion = true; - if ((_scopedPackageJson$en = scopedPackageJson.engines) === null || _scopedPackageJson$en === void 0 ? void 0 : _scopedPackageJson$en.node) try { - const { major } = parse$1(scopedPackageJson.engines.node) ?? { major: 0 }; - if (major >= 14) needRestrictNodeVersion = false; - } catch {} - if (needRestrictNodeVersion) scopedPackageJson.engines = { node: ">=14.0.0" }; - const wasmRuntime = await fetch(`https://registry.npmjs.org/@napi-rs/wasm-runtime`).then((res) => res.json()); - scopedPackageJson.dependencies = { "@napi-rs/wasm-runtime": `^${wasmRuntime["dist-tags"].latest}` }; - } - if (target.abi === "gnu") scopedPackageJson.libc = ["glibc"]; - else if (target.abi === "musl") scopedPackageJson.libc = ["musl"]; - await writeFileAsync$1(join(targetDir, "package.json"), JSON.stringify(scopedPackageJson, null, 2) + "\n"); - await writeFileAsync$1(join(targetDir, "README.md"), readme(packageName, target)); - debug$6.info(`${packageName} -${target.platformArchABI} created`); - } -} -function readme(packageName, target) { - return `# \`${packageName}-${target.platformArchABI}\` - -This is the **${target.triple}** binary for \`${packageName}\` -`; -} - -//#endregion -//#region src/def/new.ts -var BaseNewCommand = class extends Command { - static paths = [["new"]]; - static usage = Command.Usage({ description: "Create a new project with pre-configured boilerplate" }); - $$path = Option.String({ required: false }); - $$name = Option.String("--name,-n", { description: "The name of the project, default to the name of the directory if not provided" }); - minNodeApiVersion = Option.String("--min-node-api,-v", "4", { - validator: typanion.isNumber(), - description: "The minimum Node-API version to support" - }); - packageManager = Option.String("--package-manager", "yarn", { description: "The package manager to use. Only support yarn 4.x for now." }); - license = Option.String("--license,-l", "MIT", { description: "License for open-sourced project" }); - targets = Option.Array("--targets,-t", [], { description: "All targets the crate will be compiled for." }); - enableDefaultTargets = Option.Boolean("--enable-default-targets", true, { description: "Whether enable default targets" }); - enableAllTargets = Option.Boolean("--enable-all-targets", false, { description: "Whether enable all targets" }); - enableTypeDef = Option.Boolean("--enable-type-def", true, { description: "Whether enable the `type-def` feature for typescript definitions auto-generation" }); - enableGithubActions = Option.Boolean("--enable-github-actions", true, { description: "Whether generate preconfigured GitHub Actions workflow" }); - testFramework = Option.String("--test-framework", "ava", { description: "The JavaScript test framework to use, only support `ava` for now" }); - dryRun = Option.Boolean("--dry-run", false, { description: "Whether to run the command in dry-run mode" }); - getOptions() { - return { - path: this.$$path, - name: this.$$name, - minNodeApiVersion: this.minNodeApiVersion, - packageManager: this.packageManager, - license: this.license, - targets: this.targets, - enableDefaultTargets: this.enableDefaultTargets, - enableAllTargets: this.enableAllTargets, - enableTypeDef: this.enableTypeDef, - enableGithubActions: this.enableGithubActions, - testFramework: this.testFramework, - dryRun: this.dryRun - }; - } -}; -function applyDefaultNewOptions(options) { - return { - minNodeApiVersion: 4, - packageManager: "yarn", - license: "MIT", - targets: [], - enableDefaultTargets: true, - enableAllTargets: false, - enableTypeDef: true, - enableGithubActions: true, - testFramework: "ava", - dryRun: false, - ...options - }; -} - -//#endregion -//#region ../node_modules/@std/toml/stringify.js -function joinKeys(keys) { - return keys.map((str) => { - return str.length === 0 || str.match(/[^A-Za-z0-9_-]/) ? JSON.stringify(str) : str; - }).join("."); -} -var Dumper = class { - maxPad = 0; - srcObject; - output = []; - #arrayTypeCache = /* @__PURE__ */ new Map(); - constructor(srcObjc) { - this.srcObject = srcObjc; - } - dump(fmtOptions = {}) { - this.output = this.#printObject(this.srcObject); - this.output = this.#format(fmtOptions); - return this.output; - } - #printObject(obj, keys = []) { - const out = []; - const props = Object.keys(obj); - const inlineProps = []; - const multilineProps = []; - for (const prop of props) if (this.#isSimplySerializable(obj[prop])) inlineProps.push(prop); - else multilineProps.push(prop); - const sortedProps = inlineProps.concat(multilineProps); - for (const prop of sortedProps) { - const value$1 = obj[prop]; - if (value$1 instanceof Date) out.push(this.#dateDeclaration([prop], value$1)); - else if (typeof value$1 === "string" || value$1 instanceof RegExp) out.push(this.#strDeclaration([prop], value$1.toString())); - else if (typeof value$1 === "number") out.push(this.#numberDeclaration([prop], value$1)); - else if (typeof value$1 === "boolean") out.push(this.#boolDeclaration([prop], value$1)); - else if (value$1 instanceof Array) { - const arrayType = this.#getTypeOfArray(value$1); - if (arrayType === "ONLY_PRIMITIVE") out.push(this.#arrayDeclaration([prop], value$1)); - else if (arrayType === "ONLY_OBJECT_EXCLUDING_ARRAY") for (let i = 0; i < value$1.length; i++) { - out.push(""); - out.push(this.#headerGroup([...keys, prop])); - out.push(...this.#printObject(value$1[i], [...keys, prop])); - } - else { - const str = value$1.map((x) => this.#printAsInlineValue(x)).join(","); - out.push(`${this.#declaration([prop])}[${str}]`); - } - } else if (typeof value$1 === "object") { - out.push(""); - out.push(this.#header([...keys, prop])); - if (value$1) { - const toParse = value$1; - out.push(...this.#printObject(toParse, [...keys, prop])); - } - } - } - out.push(""); - return out; - } - #isPrimitive(value$1) { - return value$1 instanceof Date || value$1 instanceof RegExp || [ - "string", - "number", - "boolean" - ].includes(typeof value$1); - } - #getTypeOfArray(arr) { - if (this.#arrayTypeCache.has(arr)) return this.#arrayTypeCache.get(arr); - const type = this.#doGetTypeOfArray(arr); - this.#arrayTypeCache.set(arr, type); - return type; - } - #doGetTypeOfArray(arr) { - if (!arr.length) return "ONLY_PRIMITIVE"; - const onlyPrimitive = this.#isPrimitive(arr[0]); - if (arr[0] instanceof Array) return "MIXED"; - for (let i = 1; i < arr.length; i++) if (onlyPrimitive !== this.#isPrimitive(arr[i]) || arr[i] instanceof Array) return "MIXED"; - return onlyPrimitive ? "ONLY_PRIMITIVE" : "ONLY_OBJECT_EXCLUDING_ARRAY"; - } - #printAsInlineValue(value$1) { - if (value$1 instanceof Date) return `"${this.#printDate(value$1)}"`; - else if (typeof value$1 === "string" || value$1 instanceof RegExp) return JSON.stringify(value$1.toString()); - else if (typeof value$1 === "number") return value$1; - else if (typeof value$1 === "boolean") return value$1.toString(); - else if (value$1 instanceof Array) return `[${value$1.map((x) => this.#printAsInlineValue(x)).join(",")}]`; - else if (typeof value$1 === "object") { - if (!value$1) throw new Error("Should never reach"); - return `{${Object.keys(value$1).map((key) => { - return `${joinKeys([key])} = ${this.#printAsInlineValue(value$1[key])}`; - }).join(",")}}`; - } - throw new Error("Should never reach"); - } - #isSimplySerializable(value$1) { - return typeof value$1 === "string" || typeof value$1 === "number" || typeof value$1 === "boolean" || value$1 instanceof RegExp || value$1 instanceof Date || value$1 instanceof Array && this.#getTypeOfArray(value$1) !== "ONLY_OBJECT_EXCLUDING_ARRAY"; - } - #header(keys) { - return `[${joinKeys(keys)}]`; - } - #headerGroup(keys) { - return `[[${joinKeys(keys)}]]`; - } - #declaration(keys) { - const title = joinKeys(keys); - if (title.length > this.maxPad) this.maxPad = title.length; - return `${title} = `; - } - #arrayDeclaration(keys, value$1) { - return `${this.#declaration(keys)}${JSON.stringify(value$1)}`; - } - #strDeclaration(keys, value$1) { - return `${this.#declaration(keys)}${JSON.stringify(value$1)}`; - } - #numberDeclaration(keys, value$1) { - if (Number.isNaN(value$1)) return `${this.#declaration(keys)}nan`; - switch (value$1) { - case Infinity: return `${this.#declaration(keys)}inf`; - case -Infinity: return `${this.#declaration(keys)}-inf`; - default: return `${this.#declaration(keys)}${value$1}`; - } - } - #boolDeclaration(keys, value$1) { - return `${this.#declaration(keys)}${value$1}`; - } - #printDate(value$1) { - function dtPad(v, lPad = 2) { - return v.padStart(lPad, "0"); - } - const m = dtPad((value$1.getUTCMonth() + 1).toString()); - const d = dtPad(value$1.getUTCDate().toString()); - const h = dtPad(value$1.getUTCHours().toString()); - const min = dtPad(value$1.getUTCMinutes().toString()); - const s = dtPad(value$1.getUTCSeconds().toString()); - const ms = dtPad(value$1.getUTCMilliseconds().toString(), 3); - return `${value$1.getUTCFullYear()}-${m}-${d}T${h}:${min}:${s}.${ms}`; - } - #dateDeclaration(keys, value$1) { - return `${this.#declaration(keys)}${this.#printDate(value$1)}`; - } - #format(options = {}) { - const { keyAlignment = false } = options; - const rDeclaration = /^(\".*\"|[^=]*)\s=/; - const out = []; - for (let i = 0; i < this.output.length; i++) { - const l = this.output[i]; - if (l[0] === "[" && l[1] !== "[") { - var _this$output; - if (this.output[i + 1] === "" && ((_this$output = this.output[i + 2]) === null || _this$output === void 0 ? void 0 : _this$output.slice(0, l.length)) === l.slice(0, -1) + ".") { - i += 1; - continue; - } - out.push(l); - } else if (keyAlignment) { - const m = rDeclaration.exec(l); - if (m && m[1]) out.push(l.replace(m[1], m[1].padEnd(this.maxPad))); - else out.push(l); - } else out.push(l); - } - const cleanedOutput = []; - for (let i = 0; i < out.length; i++) { - const l = out[i]; - if (!(l === "" && out[i + 1] === "")) cleanedOutput.push(l); - } - return cleanedOutput; - } -}; -/** -* Converts an object to a {@link https://toml.io | TOML} string. -* -* @example Usage -* ```ts -* import { stringify } from "@std/toml/stringify"; -* import { assertEquals } from "@std/assert"; -* -* const obj = { -* title: "TOML Example", -* owner: { -* name: "Bob", -* bio: "Bob is a cool guy", -* } -* }; -* const tomlString = stringify(obj); -* assertEquals(tomlString, `title = "TOML Example"\n\n[owner]\nname = "Bob"\nbio = "Bob is a cool guy"\n`); -* ``` -* @param obj Source object -* @param options Options for stringifying. -* @returns TOML string -*/ function stringify(obj, options) { - return new Dumper(obj).dump(options).join("\n"); -} - -//#endregion -//#region ../node_modules/@jsr/std__collections/_utils.js -/** -* Filters the given array, removing all elements that do not match the given predicate -* **in place. This means `array` will be modified!**. -*/ function filterInPlace(array, predicate) { - let outputIndex = 0; - for (const cur of array) { - if (!predicate(cur)) continue; - array[outputIndex] = cur; - outputIndex += 1; - } - array.splice(outputIndex); - return array; -} - -//#endregion -//#region ../node_modules/@jsr/std__collections/deep_merge.js -function deepMerge(record, other, options) { - return deepMergeInternal(record, other, /* @__PURE__ */ new Set(), options); -} -function deepMergeInternal(record, other, seen, options) { - const result = {}; - const keys = new Set([...getKeys(record), ...getKeys(other)]); - for (const key of keys) { - if (key === "__proto__") continue; - const a = record[key]; - if (!Object.hasOwn(other, key)) { - result[key] = a; - continue; - } - const b = other[key]; - if (isNonNullObject(a) && isNonNullObject(b) && !seen.has(a) && !seen.has(b)) { - seen.add(a); - seen.add(b); - result[key] = mergeObjects(a, b, seen, options); - continue; - } - result[key] = b; - } - return result; -} -function mergeObjects(left, right, seen, options = { - arrays: "merge", - sets: "merge", - maps: "merge" -}) { - if (isMergeable(left) && isMergeable(right)) return deepMergeInternal(left, right, seen, options); - if (isIterable(left) && isIterable(right)) { - if (Array.isArray(left) && Array.isArray(right)) { - if (options.arrays === "merge") return left.concat(right); - return right; - } - if (left instanceof Map && right instanceof Map) { - if (options.maps === "merge") return new Map([...left, ...right]); - return right; - } - if (left instanceof Set && right instanceof Set) { - if (options.sets === "merge") return new Set([...left, ...right]); - return right; - } - } - return right; -} -/** -* Test whether a value is mergeable or not -* Builtins that look like objects, null and user defined classes -* are not considered mergeable (it means that reference will be copied) -*/ function isMergeable(value$1) { - return Object.getPrototypeOf(value$1) === Object.prototype; -} -function isIterable(value$1) { - return typeof value$1[Symbol.iterator] === "function"; -} -function isNonNullObject(value$1) { - return value$1 !== null && typeof value$1 === "object"; -} -function getKeys(record) { - const result = Object.getOwnPropertySymbols(record); - filterInPlace(result, (key) => Object.prototype.propertyIsEnumerable.call(record, key)); - result.push(...Object.keys(record)); - return result; -} - -//#endregion -//#region ../node_modules/@std/toml/_parser.js -/** -* Copy of `import { isLeap } from "@std/datetime";` because it cannot be impoted as long as it is unstable. -*/ function isLeap(yearNumber) { - return yearNumber % 4 === 0 && yearNumber % 100 !== 0 || yearNumber % 400 === 0; -} -var Scanner = class { - #whitespace = /[ \t]/; - #position = 0; - #source; - constructor(source) { - this.#source = source; - } - get position() { - return this.#position; - } - get source() { - return this.#source; - } - /** - * Get current character - * @param index - relative index from current position - */ char(index = 0) { - return this.#source[this.#position + index] ?? ""; - } - /** - * Get sliced string - * @param start - start position relative from current position - * @param end - end position relative from current position - */ slice(start, end) { - return this.#source.slice(this.#position + start, this.#position + end); - } - /** - * Move position to next - */ next(count = 1) { - this.#position += count; - } - skipWhitespaces() { - while (this.#whitespace.test(this.char()) && !this.eof()) this.next(); - if (!this.isCurrentCharEOL() && /\s/.test(this.char())) { - const escaped = "\\u" + this.char().charCodeAt(0).toString(16); - const position = this.#position; - throw new SyntaxError(`Cannot parse the TOML: It contains invalid whitespace at position '${position}': \`${escaped}\``); - } - } - nextUntilChar(options = { skipComments: true }) { - while (!this.eof()) { - const char = this.char(); - if (this.#whitespace.test(char) || this.isCurrentCharEOL()) this.next(); - else if (options.skipComments && this.char() === "#") while (!this.isCurrentCharEOL() && !this.eof()) this.next(); - else break; - } - } - /** - * Position reached EOF or not - */ eof() { - return this.#position >= this.#source.length; - } - isCurrentCharEOL() { - return this.char() === "\n" || this.startsWith("\r\n"); - } - startsWith(searchString) { - return this.#source.startsWith(searchString, this.#position); - } - match(regExp) { - if (!regExp.sticky) throw new Error(`RegExp ${regExp} does not have a sticky 'y' flag`); - regExp.lastIndex = this.#position; - return this.#source.match(regExp); - } -}; -function success(body) { - return { - ok: true, - body - }; -} -function failure() { - return { ok: false }; -} -/** -* Creates a nested object from the keys and values. -* -* e.g. `unflat(["a", "b", "c"], 1)` returns `{ a: { b: { c: 1 } } }` -*/ function unflat(keys, values = { __proto__: null }) { - return keys.reduceRight((acc, key) => ({ [key]: acc }), values); -} -function isObject(value$1) { - return typeof value$1 === "object" && value$1 !== null; -} -function getTargetValue(target, keys) { - const key = keys[0]; - if (!key) throw new Error("Cannot parse the TOML: key length is not a positive number"); - return target[key]; -} -function deepAssignTable(target, table$1) { - const { keys, type, value: value$1 } = table$1; - const currentValue = getTargetValue(target, keys); - if (currentValue === void 0) return Object.assign(target, unflat(keys, value$1)); - if (Array.isArray(currentValue)) { - deepAssign(currentValue.at(-1), { - type, - keys: keys.slice(1), - value: value$1 - }); - return target; - } - if (isObject(currentValue)) { - deepAssign(currentValue, { - type, - keys: keys.slice(1), - value: value$1 - }); - return target; - } - throw new Error("Unexpected assign"); -} -function deepAssignTableArray(target, table$1) { - const { type, keys, value: value$1 } = table$1; - const currentValue = getTargetValue(target, keys); - if (currentValue === void 0) return Object.assign(target, unflat(keys, [value$1])); - if (Array.isArray(currentValue)) { - if (table$1.keys.length === 1) currentValue.push(value$1); - else deepAssign(currentValue.at(-1), { - type: table$1.type, - keys: table$1.keys.slice(1), - value: table$1.value - }); - return target; - } - if (isObject(currentValue)) { - deepAssign(currentValue, { - type, - keys: keys.slice(1), - value: value$1 - }); - return target; - } - throw new Error("Unexpected assign"); -} -function deepAssign(target, body) { - switch (body.type) { - case "Block": return deepMerge(target, body.value); - case "Table": return deepAssignTable(target, body); - case "TableArray": return deepAssignTableArray(target, body); - } -} -function or(parsers) { - return (scanner) => { - for (const parse$3 of parsers) { - const result = parse$3(scanner); - if (result.ok) return result; - } - return failure(); - }; -} -/** Join the parse results of the given parser into an array. -* -* If the parser fails at the first attempt, it will return an empty array. -*/ function join$1(parser, separator) { - const Separator = character(separator); - return (scanner) => { - const out = []; - const first = parser(scanner); - if (!first.ok) return success(out); - out.push(first.body); - while (!scanner.eof()) { - if (!Separator(scanner).ok) break; - const result = parser(scanner); - if (!result.ok) throw new SyntaxError(`Invalid token after "${separator}"`); - out.push(result.body); - } - return success(out); - }; -} -/** Join the parse results of the given parser into an array. -* -* This requires the parser to succeed at least once. -*/ function join1(parser, separator) { - const Separator = character(separator); - return (scanner) => { - const first = parser(scanner); - if (!first.ok) return failure(); - const out = [first.body]; - while (!scanner.eof()) { - if (!Separator(scanner).ok) break; - const result = parser(scanner); - if (!result.ok) throw new SyntaxError(`Invalid token after "${separator}"`); - out.push(result.body); - } - return success(out); - }; -} -function kv(keyParser, separator, valueParser) { - const Separator = character(separator); - return (scanner) => { - const position = scanner.position; - const key = keyParser(scanner); - if (!key.ok) return failure(); - if (!Separator(scanner).ok) throw new SyntaxError(`key/value pair doesn't have "${separator}"`); - const value$1 = valueParser(scanner); - if (!value$1.ok) { - const lineEndIndex = scanner.source.indexOf("\n", scanner.position); - const endPosition = lineEndIndex > 0 ? lineEndIndex : scanner.source.length; - const line = scanner.source.slice(position, endPosition); - throw new SyntaxError(`Cannot parse value on line '${line}'`); - } - return success(unflat(key.body, value$1.body)); - }; -} -function merge$1(parser) { - return (scanner) => { - const result = parser(scanner); - if (!result.ok) return failure(); - let body = { __proto__: null }; - for (const record of result.body) if (typeof record === "object" && record !== null) body = deepMerge(body, record); - return success(body); - }; -} -function repeat(parser) { - return (scanner) => { - const body = []; - while (!scanner.eof()) { - const result = parser(scanner); - if (!result.ok) break; - body.push(result.body); - scanner.nextUntilChar(); - } - if (body.length === 0) return failure(); - return success(body); - }; -} -function surround(left, parser, right) { - const Left = character(left); - const Right = character(right); - return (scanner) => { - if (!Left(scanner).ok) return failure(); - const result = parser(scanner); - if (!result.ok) throw new SyntaxError(`Invalid token after "${left}"`); - if (!Right(scanner).ok) throw new SyntaxError(`Not closed by "${right}" after started with "${left}"`); - return success(result.body); - }; -} -function character(str) { - return (scanner) => { - scanner.skipWhitespaces(); - if (!scanner.startsWith(str)) return failure(); - scanner.next(str.length); - scanner.skipWhitespaces(); - return success(void 0); - }; -} -const BARE_KEY_REGEXP = /[A-Za-z0-9_-]+/y; -function bareKey(scanner) { - var _scanner$match; - scanner.skipWhitespaces(); - const key = (_scanner$match = scanner.match(BARE_KEY_REGEXP)) === null || _scanner$match === void 0 ? void 0 : _scanner$match[0]; - if (!key) return failure(); - scanner.next(key.length); - return success(key); -} -function escapeSequence(scanner) { - if (scanner.char() !== "\\") return failure(); - scanner.next(); - switch (scanner.char()) { - case "b": - scanner.next(); - return success("\b"); - case "t": - scanner.next(); - return success(" "); - case "n": - scanner.next(); - return success("\n"); - case "f": - scanner.next(); - return success("\f"); - case "r": - scanner.next(); - return success("\r"); - case "u": - case "U": { - const codePointLen = scanner.char() === "u" ? 4 : 6; - const codePoint = parseInt("0x" + scanner.slice(1, 1 + codePointLen), 16); - const str = String.fromCodePoint(codePoint); - scanner.next(codePointLen + 1); - return success(str); - } - case "\"": - scanner.next(); - return success("\""); - case "\\": - scanner.next(); - return success("\\"); - default: throw new SyntaxError(`Invalid escape sequence: \\${scanner.char()}`); - } -} -function basicString(scanner) { - scanner.skipWhitespaces(); - if (scanner.char() !== "\"") return failure(); - scanner.next(); - const acc = []; - while (scanner.char() !== "\"" && !scanner.eof()) { - if (scanner.char() === "\n") throw new SyntaxError("Single-line string cannot contain EOL"); - const escapedChar = escapeSequence(scanner); - if (escapedChar.ok) acc.push(escapedChar.body); - else { - acc.push(scanner.char()); - scanner.next(); - } - } - if (scanner.eof()) throw new SyntaxError(`Single-line string is not closed:\n${acc.join("")}`); - scanner.next(); - return success(acc.join("")); -} -function literalString(scanner) { - scanner.skipWhitespaces(); - if (scanner.char() !== "'") return failure(); - scanner.next(); - const acc = []; - while (scanner.char() !== "'" && !scanner.eof()) { - if (scanner.char() === "\n") throw new SyntaxError("Single-line string cannot contain EOL"); - acc.push(scanner.char()); - scanner.next(); - } - if (scanner.eof()) throw new SyntaxError(`Single-line string is not closed:\n${acc.join("")}`); - scanner.next(); - return success(acc.join("")); -} -function multilineBasicString(scanner) { - scanner.skipWhitespaces(); - if (!scanner.startsWith("\"\"\"")) return failure(); - scanner.next(3); - if (scanner.char() === "\n") scanner.next(); - else if (scanner.startsWith("\r\n")) scanner.next(2); - const acc = []; - while (!scanner.startsWith("\"\"\"") && !scanner.eof()) { - if (scanner.startsWith("\\\n")) { - scanner.next(); - scanner.nextUntilChar({ skipComments: false }); - continue; - } else if (scanner.startsWith("\\\r\n")) { - scanner.next(); - scanner.nextUntilChar({ skipComments: false }); - continue; - } - const escapedChar = escapeSequence(scanner); - if (escapedChar.ok) acc.push(escapedChar.body); - else { - acc.push(scanner.char()); - scanner.next(); - } - } - if (scanner.eof()) throw new SyntaxError(`Multi-line string is not closed:\n${acc.join("")}`); - if (scanner.char(3) === "\"") { - acc.push("\""); - scanner.next(); - } - scanner.next(3); - return success(acc.join("")); -} -function multilineLiteralString(scanner) { - scanner.skipWhitespaces(); - if (!scanner.startsWith("'''")) return failure(); - scanner.next(3); - if (scanner.char() === "\n") scanner.next(); - else if (scanner.startsWith("\r\n")) scanner.next(2); - const acc = []; - while (!scanner.startsWith("'''") && !scanner.eof()) { - acc.push(scanner.char()); - scanner.next(); - } - if (scanner.eof()) throw new SyntaxError(`Multi-line string is not closed:\n${acc.join("")}`); - if (scanner.char(3) === "'") { - acc.push("'"); - scanner.next(); - } - scanner.next(3); - return success(acc.join("")); -} -const BOOLEAN_REGEXP = /(?:true|false)\b/y; -function boolean(scanner) { - scanner.skipWhitespaces(); - const match = scanner.match(BOOLEAN_REGEXP); - if (!match) return failure(); - const string = match[0]; - scanner.next(string.length); - return success(string === "true"); -} -const INFINITY_MAP = new Map([ - ["inf", Infinity], - ["+inf", Infinity], - ["-inf", -Infinity] -]); -const INFINITY_REGEXP = /[+-]?inf\b/y; -function infinity(scanner) { - scanner.skipWhitespaces(); - const match = scanner.match(INFINITY_REGEXP); - if (!match) return failure(); - const string = match[0]; - scanner.next(string.length); - return success(INFINITY_MAP.get(string)); -} -const NAN_REGEXP = /[+-]?nan\b/y; -function nan(scanner) { - scanner.skipWhitespaces(); - const match = scanner.match(NAN_REGEXP); - if (!match) return failure(); - const string = match[0]; - scanner.next(string.length); - return success(NaN); -} -const dottedKey = join1(or([ - bareKey, - basicString, - literalString -]), "."); -const BINARY_REGEXP = /0b[01]+(?:_[01]+)*\b/y; -function binary(scanner) { - var _scanner$match2; - scanner.skipWhitespaces(); - const match = (_scanner$match2 = scanner.match(BINARY_REGEXP)) === null || _scanner$match2 === void 0 ? void 0 : _scanner$match2[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.slice(2).replaceAll("_", ""); - const number = parseInt(value$1, 2); - return isNaN(number) ? failure() : success(number); -} -const OCTAL_REGEXP = /0o[0-7]+(?:_[0-7]+)*\b/y; -function octal(scanner) { - var _scanner$match3; - scanner.skipWhitespaces(); - const match = (_scanner$match3 = scanner.match(OCTAL_REGEXP)) === null || _scanner$match3 === void 0 ? void 0 : _scanner$match3[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.slice(2).replaceAll("_", ""); - const number = parseInt(value$1, 8); - return isNaN(number) ? failure() : success(number); -} -const HEX_REGEXP = /0x[0-9a-f]+(?:_[0-9a-f]+)*\b/iy; -function hex(scanner) { - var _scanner$match4; - scanner.skipWhitespaces(); - const match = (_scanner$match4 = scanner.match(HEX_REGEXP)) === null || _scanner$match4 === void 0 ? void 0 : _scanner$match4[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.slice(2).replaceAll("_", ""); - const number = parseInt(value$1, 16); - return isNaN(number) ? failure() : success(number); -} -const INTEGER_REGEXP = /[+-]?(?:0|[1-9][0-9]*(?:_[0-9]+)*)\b/y; -function integer(scanner) { - var _scanner$match5; - scanner.skipWhitespaces(); - const match = (_scanner$match5 = scanner.match(INTEGER_REGEXP)) === null || _scanner$match5 === void 0 ? void 0 : _scanner$match5[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.replaceAll("_", ""); - return success(parseInt(value$1, 10)); -} -const FLOAT_REGEXP = /[+-]?(?:0|[1-9][0-9]*(?:_[0-9]+)*)(?:\.[0-9]+(?:_[0-9]+)*)?(?:e[+-]?[0-9]+(?:_[0-9]+)*)?\b/iy; -function float(scanner) { - var _scanner$match6; - scanner.skipWhitespaces(); - const match = (_scanner$match6 = scanner.match(FLOAT_REGEXP)) === null || _scanner$match6 === void 0 ? void 0 : _scanner$match6[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.replaceAll("_", ""); - const float$1 = parseFloat(value$1); - if (isNaN(float$1)) return failure(); - return success(float$1); -} -const DATE_TIME_REGEXP = /(?\d{4})-(?\d{2})-(?\d{2})(?:[ 0-9TZ.:+-]+)?\b/y; -function dateTime(scanner) { - scanner.skipWhitespaces(); - const match = scanner.match(DATE_TIME_REGEXP); - if (!match) return failure(); - const string = match[0]; - scanner.next(string.length); - const groups = match.groups; - if (groups.month == "02") { - const days = parseInt(groups.day); - if (days > 29) throw new SyntaxError(`Invalid date string "${match}"`); - const year = parseInt(groups.year); - if (days > 28 && !isLeap(year)) throw new SyntaxError(`Invalid date string "${match}"`); - } - const date = new Date(string.trim()); - if (isNaN(date.getTime())) throw new SyntaxError(`Invalid date string "${match}"`); - return success(date); -} -const LOCAL_TIME_REGEXP = /(\d{2}):(\d{2}):(\d{2})(?:\.[0-9]+)?\b/y; -function localTime(scanner) { - var _scanner$match7; - scanner.skipWhitespaces(); - const match = (_scanner$match7 = scanner.match(LOCAL_TIME_REGEXP)) === null || _scanner$match7 === void 0 ? void 0 : _scanner$match7[0]; - if (!match) return failure(); - scanner.next(match.length); - return success(match); -} -function arrayValue(scanner) { - scanner.skipWhitespaces(); - if (scanner.char() !== "[") return failure(); - scanner.next(); - const array = []; - while (!scanner.eof()) { - scanner.nextUntilChar(); - const result = value(scanner); - if (!result.ok) break; - array.push(result.body); - scanner.skipWhitespaces(); - if (scanner.char() !== ",") break; - scanner.next(); - } - scanner.nextUntilChar(); - if (scanner.char() !== "]") throw new SyntaxError("Array is not closed"); - scanner.next(); - return success(array); -} -function inlineTable(scanner) { - scanner.nextUntilChar(); - if (scanner.char(1) === "}") { - scanner.next(2); - return success({ __proto__: null }); - } - const pairs = surround("{", join$1(pair, ","), "}")(scanner); - if (!pairs.ok) return failure(); - let table$1 = { __proto__: null }; - for (const pair$1 of pairs.body) table$1 = deepMerge(table$1, pair$1); - return success(table$1); -} -const value = or([ - multilineBasicString, - multilineLiteralString, - basicString, - literalString, - boolean, - infinity, - nan, - dateTime, - localTime, - binary, - octal, - hex, - float, - integer, - arrayValue, - inlineTable -]); -const pair = kv(dottedKey, "=", value); -function block(scanner) { - scanner.nextUntilChar(); - const result = merge$1(repeat(pair))(scanner); - if (result.ok) return success({ - type: "Block", - value: result.body - }); - return failure(); -} -const tableHeader = surround("[", dottedKey, "]"); -function table(scanner) { - scanner.nextUntilChar(); - const header = tableHeader(scanner); - if (!header.ok) return failure(); - scanner.nextUntilChar(); - const b = block(scanner); - return success({ - type: "Table", - keys: header.body, - value: b.ok ? b.body.value : { __proto__: null } - }); -} -const tableArrayHeader = surround("[[", dottedKey, "]]"); -function tableArray(scanner) { - scanner.nextUntilChar(); - const header = tableArrayHeader(scanner); - if (!header.ok) return failure(); - scanner.nextUntilChar(); - const b = block(scanner); - return success({ - type: "TableArray", - keys: header.body, - value: b.ok ? b.body.value : { __proto__: null } - }); -} -function toml(scanner) { - const blocks = repeat(or([ - block, - tableArray, - table - ]))(scanner); - if (!blocks.ok) return success({ __proto__: null }); - return success(blocks.body.reduce(deepAssign, { __proto__: null })); -} -function createParseErrorMessage(scanner, message) { - var _lines$at; - const lines = scanner.source.slice(0, scanner.position).split("\n"); - return `Parse error on line ${lines.length}, column ${((_lines$at = lines.at(-1)) === null || _lines$at === void 0 ? void 0 : _lines$at.length) ?? 0}: ${message}`; -} -function parserFactory(parser) { - return (tomlString) => { - const scanner = new Scanner(tomlString); - try { - const result = parser(scanner); - if (result.ok && scanner.eof()) return result.body; - const message = `Unexpected character: "${scanner.char()}"`; - throw new SyntaxError(createParseErrorMessage(scanner, message)); - } catch (error) { - if (error instanceof Error) throw new SyntaxError(createParseErrorMessage(scanner, error.message)); - throw new SyntaxError(createParseErrorMessage(scanner, "Invalid error type caught")); - } - }; -} - -//#endregion -//#region ../node_modules/@std/toml/parse.js -/** -* Parses a {@link https://toml.io | TOML} string into an object. -* -* @example Usage -* ```ts -* import { parse } from "@std/toml/parse"; -* import { assertEquals } from "@std/assert"; -* -* const tomlString = `title = "TOML Example" -* [owner] -* name = "Alice" -* bio = "Alice is a programmer."`; -* -* const obj = parse(tomlString); -* assertEquals(obj, { title: "TOML Example", owner: { name: "Alice", bio: "Alice is a programmer." } }); -* ``` -* @param tomlString TOML string to be parsed. -* @returns The parsed JS object. -*/ function parse$2(tomlString) { - return parserFactory(toml)(tomlString); -} - -//#endregion -//#region ../node_modules/empathic/resolve.mjs -/** -* Resolve an absolute path from {@link root}, but only -* if {@link input} isn't already absolute. -* -* @param input The path to resolve. -* @param root The base path; default = process.cwd() -* @returns The resolved absolute path. -*/ -function absolute(input$1, root) { - return isAbsolute(input$1) ? input$1 : resolve(root || ".", input$1); -} - -//#endregion -//#region ../node_modules/empathic/walk.mjs -/** -* Get all parent directories of {@link base}. -* Stops after {@link Options['last']} is processed. -* -* @returns An array of absolute paths of all parent directories. -*/ -function up(base, options) { - let { last, cwd } = options || {}; - let tmp = absolute(base, cwd); - let root = absolute(last || "/", cwd); - let prev, arr = []; - while (prev !== root) { - arr.push(tmp); - tmp = dirname(prev = tmp); - if (tmp === prev) break; - } - return arr; -} - -//#endregion -//#region ../node_modules/empathic/find.mjs -/** -* Find a directory by name, walking parent directories until found. -* -* > [NOTE] -* > This function only returns a value for directory matches. -* > A file match with the same name will be ignored. -* -* @param name The directory name to find. -* @returns The absolute path to the file, if found. -*/ -function dir(name, options) { - let dir$1, tmp; - let start = options && options.cwd || ""; - for (dir$1 of up(start, options)) try { - tmp = join(dir$1, name); - if (statSync(tmp).isDirectory()) return tmp; - } catch {} -} - -//#endregion -//#region src/def/rename.ts -var BaseRenameCommand = class extends Command { - static paths = [["rename"]]; - static usage = Command.Usage({ description: "Rename the NAPI-RS project" }); - cwd = Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - npmDir = Option.String("--npm-dir", "npm", { description: "Path to the folder where the npm packages put" }); - $$name = Option.String("--name,-n", { description: "The new name of the project" }); - binaryName = Option.String("--binary-name,-b", { description: "The new binary name *.node files" }); - packageName = Option.String("--package-name", { description: "The new package name of the project" }); - manifestPath = Option.String("--manifest-path", "Cargo.toml", { description: "Path to `Cargo.toml`" }); - repository = Option.String("--repository", { description: "The new repository of the project" }); - description = Option.String("--description", { description: "The new description of the project" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir, - name: this.$$name, - binaryName: this.binaryName, - packageName: this.packageName, - manifestPath: this.manifestPath, - repository: this.repository, - description: this.description - }; - } -}; -function applyDefaultRenameOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - npmDir: "npm", - manifestPath: "Cargo.toml", - ...options - }; -} - -//#endregion -//#region src/api/rename.ts -async function renameProject(userOptions) { - const options = applyDefaultRenameOptions(userOptions); - const oldName = (await readConfig(options)).binaryName; - const packageJsonPath = resolve(options.cwd, options.packageJsonPath); - const cargoTomlPath = resolve(options.cwd, options.manifestPath); - const packageJsonContent = await readFileAsync(packageJsonPath, "utf8"); - const packageJsonData = JSON.parse(packageJsonContent); - merge(merge(packageJsonData, omitBy(pick(options, [ - "name", - "description", - "author", - "license" - ]), isNil)), { napi: omitBy({ - binaryName: options.binaryName, - packageName: options.packageName - }, isNil) }); - if (options.configPath) { - const configPath = resolve(options.cwd, options.configPath); - const configContent = await readFileAsync(configPath, "utf8"); - const configData = JSON.parse(configContent); - configData.binaryName = options.binaryName; - configData.packageName = options.packageName; - await writeFileAsync(configPath, JSON.stringify(configData, null, 2)); - } - await writeFileAsync(packageJsonPath, JSON.stringify(packageJsonData, null, 2)); - const cargoToml = parse$2(await readFileAsync(cargoTomlPath, "utf8")); - if (cargoToml.package && options.binaryName) { - const sanitizedName = options.binaryName.replace("@", "").replace("/", "_").replace(/-/g, "_").toLowerCase(); - cargoToml.package.name = sanitizedName; - } - await writeFileAsync(cargoTomlPath, stringify(cargoToml)); - if (oldName !== options.binaryName) { - const githubActionsPath = dir(".github", { cwd: options.cwd }); - if (githubActionsPath) { - const githubActionsCIYmlPath = join(githubActionsPath, "workflows", "CI.yml"); - if (existsSync(githubActionsCIYmlPath)) { - var _githubActionsData$en; - const githubActionsData = load(await readFileAsync(githubActionsCIYmlPath, "utf8")); - if ((_githubActionsData$en = githubActionsData.env) === null || _githubActionsData$en === void 0 ? void 0 : _githubActionsData$en.APP_NAME) { - githubActionsData.env.APP_NAME = options.binaryName; - await writeFileAsync(githubActionsCIYmlPath, dump(githubActionsData, { - lineWidth: -1, - noRefs: true, - sortKeys: false - })); - } - } - } - const oldWasiBrowserBindingPath = join(options.cwd, `${oldName}.wasi-browser.js`); - if (existsSync(oldWasiBrowserBindingPath)) await rename(oldWasiBrowserBindingPath, join(options.cwd, `${options.binaryName}.wasi-browser.js`)); - const oldWasiBindingPath = join(options.cwd, `${oldName}.wasi.cjs`); - if (existsSync(oldWasiBindingPath)) await rename(oldWasiBindingPath, join(options.cwd, `${options.binaryName}.wasi.cjs`)); - const gitAttributesPath = join(options.cwd, ".gitattributes"); - if (existsSync(gitAttributesPath)) await writeFileAsync(gitAttributesPath, (await readFileAsync(gitAttributesPath, "utf8")).split("\n").map((line) => { - return line.replace(`${oldName}.wasi-browser.js`, `${options.binaryName}.wasi-browser.js`).replace(`${oldName}.wasi.cjs`, `${options.binaryName}.wasi.cjs`); - }).join("\n")); - } -} - -//#endregion -//#region src/api/new.ts -const debug$5 = debugFactory("new"); -const TEMPLATE_REPOS = { - yarn: "https://github.com/napi-rs/package-template", - pnpm: "https://github.com/napi-rs/package-template-pnpm" -}; -async function checkGitCommand() { - try { - await new Promise((resolve$1) => { - const cp = exec("git --version"); - cp.on("error", () => { - resolve$1(false); - }); - cp.on("exit", (code) => { - if (code === 0) resolve$1(true); - else resolve$1(false); - }); - }); - return true; - } catch { - return false; - } -} -async function ensureCacheDir(packageManager) { - const cacheDir = path.join(homedir(), ".napi-rs", "template", packageManager); - await mkdirAsync(cacheDir, { recursive: true }); - return cacheDir; -} -async function downloadTemplate(packageManager, cacheDir) { - const repoUrl = TEMPLATE_REPOS[packageManager]; - const templatePath = path.join(cacheDir, "repo"); - if (existsSync(templatePath)) { - debug$5(`Template cache found at ${templatePath}, updating...`); - try { - await new Promise((resolve$1, reject) => { - const cp = exec("git fetch origin", { cwd: templatePath }); - cp.on("error", reject); - cp.on("exit", (code) => { - if (code === 0) resolve$1(); - else reject(/* @__PURE__ */ new Error(`Failed to fetch latest changes, git process exited with code ${code}`)); - }); - }); - execSync("git reset --hard origin/main", { - cwd: templatePath, - stdio: "ignore" - }); - debug$5("Template updated successfully"); - } catch (error) { - debug$5(`Failed to update template: ${error}`); - throw new Error(`Failed to update template from ${repoUrl}: ${error}`); - } - } else { - debug$5(`Cloning template from ${repoUrl}...`); - try { - execSync(`git clone ${repoUrl} repo`, { - cwd: cacheDir, - stdio: "inherit" - }); - debug$5("Template cloned successfully"); - } catch (error) { - throw new Error(`Failed to clone template from ${repoUrl}: ${error}`); - } - } -} -async function copyDirectory(src, dest, includeWasiBindings) { - await mkdirAsync(dest, { recursive: true }); - const entries = await promises.readdir(src, { withFileTypes: true }); - for (const entry of entries) { - const srcPath = path.join(src, entry.name); - const destPath = path.join(dest, entry.name); - if (entry.name === ".git") continue; - if (entry.isDirectory()) await copyDirectory(srcPath, destPath, includeWasiBindings); - else { - if (!includeWasiBindings && (entry.name.endsWith(".wasi-browser.js") || entry.name.endsWith(".wasi.cjs") || entry.name.endsWith("wasi-worker.browser.mjs ") || entry.name.endsWith("wasi-worker.mjs") || entry.name.endsWith("browser.js"))) continue; - await promises.copyFile(srcPath, destPath); - } - } -} -async function filterTargetsInPackageJson(filePath, enabledTargets) { - var _packageJson$napi; - const content = await promises.readFile(filePath, "utf-8"); - const packageJson = JSON.parse(content); - if ((_packageJson$napi = packageJson.napi) === null || _packageJson$napi === void 0 ? void 0 : _packageJson$napi.targets) packageJson.napi.targets = packageJson.napi.targets.filter((target) => enabledTargets.includes(target)); - await promises.writeFile(filePath, JSON.stringify(packageJson, null, 2) + "\n"); -} -async function filterTargetsInGithubActions(filePath, enabledTargets) { - var _yaml$jobs, _yaml$jobs5; - const yaml = load(await promises.readFile(filePath, "utf-8")); - const macOSAndWindowsTargets = new Set([ - "x86_64-pc-windows-msvc", - "x86_64-pc-windows-gnu", - "aarch64-pc-windows-msvc", - "x86_64-apple-darwin" - ]); - const linuxTargets = new Set([ - "x86_64-unknown-linux-gnu", - "x86_64-unknown-linux-musl", - "aarch64-unknown-linux-gnu", - "aarch64-unknown-linux-musl", - "armv7-unknown-linux-gnueabihf", - "armv7-unknown-linux-musleabihf", - "loongarch64-unknown-linux-gnu", - "riscv64gc-unknown-linux-gnu", - "powerpc64le-unknown-linux-gnu", - "s390x-unknown-linux-gnu", - "aarch64-linux-android", - "armv7-linux-androideabi" - ]); - const hasLinuxTargets = enabledTargets.some((target) => linuxTargets.has(target)); - if (yaml === null || yaml === void 0 || (_yaml$jobs = yaml.jobs) === null || _yaml$jobs === void 0 || (_yaml$jobs = _yaml$jobs.build) === null || _yaml$jobs === void 0 || (_yaml$jobs = _yaml$jobs.strategy) === null || _yaml$jobs === void 0 || (_yaml$jobs = _yaml$jobs.matrix) === null || _yaml$jobs === void 0 ? void 0 : _yaml$jobs.settings) yaml.jobs.build.strategy.matrix.settings = yaml.jobs.build.strategy.matrix.settings.filter((setting) => { - if (setting.target) return enabledTargets.includes(setting.target); - return true; - }); - const jobsToRemove = []; - if (enabledTargets.every((target) => !macOSAndWindowsTargets.has(target))) jobsToRemove.push("test-macOS-windows-binding"); - else { - var _yaml$jobs2; - if (yaml === null || yaml === void 0 || (_yaml$jobs2 = yaml.jobs) === null || _yaml$jobs2 === void 0 || (_yaml$jobs2 = _yaml$jobs2["test-macOS-windows-binding"]) === null || _yaml$jobs2 === void 0 || (_yaml$jobs2 = _yaml$jobs2.strategy) === null || _yaml$jobs2 === void 0 || (_yaml$jobs2 = _yaml$jobs2.matrix) === null || _yaml$jobs2 === void 0 ? void 0 : _yaml$jobs2.settings) yaml.jobs["test-macOS-windows-binding"].strategy.matrix.settings = yaml.jobs["test-macOS-windows-binding"].strategy.matrix.settings.filter((setting) => { - if (setting.target) return enabledTargets.includes(setting.target); - return true; - }); - } - if (!hasLinuxTargets) { - var _yaml$jobs3; - if (yaml === null || yaml === void 0 || (_yaml$jobs3 = yaml.jobs) === null || _yaml$jobs3 === void 0 ? void 0 : _yaml$jobs3["test-linux-binding"]) jobsToRemove.push("test-linux-binding"); - } else { - var _yaml$jobs4; - if (yaml === null || yaml === void 0 || (_yaml$jobs4 = yaml.jobs) === null || _yaml$jobs4 === void 0 || (_yaml$jobs4 = _yaml$jobs4["test-linux-binding"]) === null || _yaml$jobs4 === void 0 || (_yaml$jobs4 = _yaml$jobs4.strategy) === null || _yaml$jobs4 === void 0 || (_yaml$jobs4 = _yaml$jobs4.matrix) === null || _yaml$jobs4 === void 0 ? void 0 : _yaml$jobs4.target) yaml.jobs["test-linux-binding"].strategy.matrix.target = yaml.jobs["test-linux-binding"].strategy.matrix.target.filter((target) => { - if (target) return enabledTargets.includes(target); - return true; - }); - } - if (!enabledTargets.includes("wasm32-wasip1-threads")) jobsToRemove.push("test-wasi"); - if (!enabledTargets.includes("x86_64-unknown-freebsd")) jobsToRemove.push("build-freebsd"); - for (const [jobName, jobConfig] of Object.entries(yaml.jobs || {})) if (jobName.startsWith("test-") && jobName !== "test-macOS-windows-binding" && jobName !== "test-linux-x64-gnu-binding") { - var _job$strategy; - const job = jobConfig; - if ((_job$strategy = job.strategy) === null || _job$strategy === void 0 || (_job$strategy = _job$strategy.matrix) === null || _job$strategy === void 0 || (_job$strategy = _job$strategy.settings) === null || _job$strategy === void 0 || (_job$strategy = _job$strategy[0]) === null || _job$strategy === void 0 ? void 0 : _job$strategy.target) { - const target = job.strategy.matrix.settings[0].target; - if (!enabledTargets.includes(target)) jobsToRemove.push(jobName); - } - } - for (const jobName of jobsToRemove) delete yaml.jobs[jobName]; - if (Array.isArray((_yaml$jobs5 = yaml.jobs) === null || _yaml$jobs5 === void 0 || (_yaml$jobs5 = _yaml$jobs5.publish) === null || _yaml$jobs5 === void 0 ? void 0 : _yaml$jobs5.needs)) yaml.jobs.publish.needs = yaml.jobs.publish.needs.filter((need) => !jobsToRemove.includes(need)); - const updatedYaml = dump(yaml, { - lineWidth: -1, - noRefs: true, - sortKeys: false - }); - await promises.writeFile(filePath, updatedYaml); -} -function processOptions(options) { - var _options$targets; - debug$5("Processing options..."); - if (!options.path) throw new Error("Please provide the path as the argument"); - options.path = path.resolve(process.cwd(), options.path); - debug$5(`Resolved target path to: ${options.path}`); - if (!options.name) { - options.name = path.parse(options.path).base; - debug$5(`No project name provided, fix it to dir name: ${options.name}`); - } - if (!((_options$targets = options.targets) === null || _options$targets === void 0 ? void 0 : _options$targets.length)) if (options.enableAllTargets) { - options.targets = AVAILABLE_TARGETS.concat(); - debug$5("Enable all targets"); - } else if (options.enableDefaultTargets) { - options.targets = DEFAULT_TARGETS.concat(); - debug$5("Enable default targets"); - } else throw new Error("At least one target must be enabled"); - if (options.targets.some((target) => target === "wasm32-wasi-preview1-threads")) { - if (execSync(`rustup target list`, { encoding: "utf8" }).includes("wasm32-wasip1-threads")) options.targets = options.targets.map((target) => target === "wasm32-wasi-preview1-threads" ? "wasm32-wasip1-threads" : target); - } - return applyDefaultNewOptions(options); -} -async function newProject(userOptions) { - debug$5("Will create napi-rs project with given options:"); - debug$5(userOptions); - const options = processOptions(userOptions); - debug$5("Targets to be enabled:"); - debug$5(options.targets); - if (!await checkGitCommand()) throw new Error("Git is not installed or not available in PATH. Please install Git to continue."); - const packageManager = options.packageManager; - await ensurePath(options.path, options.dryRun); - if (!options.dryRun) try { - const cacheDir = await ensureCacheDir(packageManager); - await downloadTemplate(packageManager, cacheDir); - await copyDirectory(path.join(cacheDir, "repo"), options.path, options.targets.includes("wasm32-wasip1-threads")); - await renameProject({ - cwd: options.path, - name: options.name, - binaryName: getBinaryName(options.name) - }); - const packageJsonPath = path.join(options.path, "package.json"); - if (existsSync(packageJsonPath)) await filterTargetsInPackageJson(packageJsonPath, options.targets); - const ciPath = path.join(options.path, ".github", "workflows", "CI.yml"); - if (existsSync(ciPath) && options.enableGithubActions) await filterTargetsInGithubActions(ciPath, options.targets); - else if (!options.enableGithubActions && existsSync(path.join(options.path, ".github"))) await promises.rm(path.join(options.path, ".github"), { - recursive: true, - force: true - }); - const pkgJsonContent = await promises.readFile(packageJsonPath, "utf-8"); - const pkgJson = JSON.parse(pkgJsonContent); - if (!pkgJson.engines) pkgJson.engines = {}; - pkgJson.engines.node = napiEngineRequirement(options.minNodeApiVersion); - if (options.license && pkgJson.license !== options.license) pkgJson.license = options.license; - if (options.testFramework !== "ava") debug$5(`Test framework ${options.testFramework} requested but not yet implemented`); - await promises.writeFile(packageJsonPath, JSON.stringify(pkgJson, null, 2) + "\n"); - } catch (error) { - throw new Error(`Failed to create project: ${error}`); - } - debug$5(`Project created at: ${options.path}`); -} -async function ensurePath(path$1, dryRun = false) { - const stat$1 = await statAsync(path$1, {}).catch(() => void 0); - if (stat$1) { - if (stat$1.isFile()) throw new Error(`Path ${path$1} for creating new napi-rs project already exists and it's not a directory.`); - else if (stat$1.isDirectory()) { - if ((await readdirAsync(path$1)).length) throw new Error(`Path ${path$1} for creating new napi-rs project already exists and it's not empty.`); - } - } - if (!dryRun) try { - debug$5(`Try to create target directory: ${path$1}`); - if (!dryRun) await mkdirAsync(path$1, { recursive: true }); - } catch (e) { - throw new Error(`Failed to create target directory: ${path$1}`, { cause: e }); - } -} -function getBinaryName(name) { - return name.split("/").pop(); -} - -//#endregion -//#region src/def/pre-publish.ts -var BasePrePublishCommand = class extends Command { - static paths = [["pre-publish"], ["prepublish"]]; - static usage = Command.Usage({ description: "Update package.json and copy addons into per platform packages" }); - cwd = Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - npmDir = Option.String("--npm-dir,-p", "npm", { description: "Path to the folder where the npm packages put" }); - tagStyle = Option.String("--tag-style,--tagstyle,-t", "lerna", { description: "git tag style, `npm` or `lerna`" }); - ghRelease = Option.Boolean("--gh-release", true, { description: "Whether create GitHub release" }); - ghReleaseName = Option.String("--gh-release-name", { description: "GitHub release name" }); - ghReleaseId = Option.String("--gh-release-id", { description: "Existing GitHub release id" }); - skipOptionalPublish = Option.Boolean("--skip-optional-publish", false, { description: "Whether skip optionalDependencies packages publish" }); - dryRun = Option.Boolean("--dry-run", false, { description: "Dry run without touching file system" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir, - tagStyle: this.tagStyle, - ghRelease: this.ghRelease, - ghReleaseName: this.ghReleaseName, - ghReleaseId: this.ghReleaseId, - skipOptionalPublish: this.skipOptionalPublish, - dryRun: this.dryRun - }; - } -}; -function applyDefaultPrePublishOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - npmDir: "npm", - tagStyle: "lerna", - ghRelease: true, - skipOptionalPublish: false, - dryRun: false, - ...options - }; -} - -//#endregion -//#region src/def/version.ts -var BaseVersionCommand = class extends Command { - static paths = [["version"]]; - static usage = Command.Usage({ description: "Update version in created npm packages" }); - cwd = Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - npmDir = Option.String("--npm-dir", "npm", { description: "Path to the folder where the npm packages put" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir - }; - } -}; -function applyDefaultVersionOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - npmDir: "npm", - ...options - }; -} - -//#endregion -//#region src/api/version.ts -const debug$4 = debugFactory("version"); -async function version(userOptions) { - const options = applyDefaultVersionOptions(userOptions); - const config = await readNapiConfig(resolve(options.cwd, options.packageJsonPath), options.configPath ? resolve(options.cwd, options.configPath) : void 0); - for (const target of config.targets) { - const pkgDir = resolve(options.cwd, options.npmDir, target.platformArchABI); - debug$4(`Update version to %i in [%i]`, config.packageJson.version, pkgDir); - await updatePackageJson(join(pkgDir, "package.json"), { version: config.packageJson.version }); - } -} - -//#endregion -//#region src/api/pre-publish.ts -const debug$3 = debugFactory("pre-publish"); -async function prePublish(userOptions) { - debug$3("Receive pre-publish options:"); - debug$3(" %O", userOptions); - const options = applyDefaultPrePublishOptions(userOptions); - const packageJsonPath = resolve(options.cwd, options.packageJsonPath); - const { packageJson, targets, packageName, binaryName, npmClient } = await readNapiConfig(packageJsonPath, options.configPath ? resolve(options.cwd, options.configPath) : void 0); - async function createGhRelease(packageName$1, version$2) { - if (!options.ghRelease) return { - owner: null, - repo: null, - pkgInfo: { - name: null, - version: null, - tag: null - } - }; - const { repo: repo$1, owner: owner$1, pkgInfo: pkgInfo$1, octokit: octokit$1 } = getRepoInfo(packageName$1, version$2); - if (!repo$1 || !owner$1) return { - owner: null, - repo: null, - pkgInfo: { - name: null, - version: null, - tag: null - } - }; - if (!options.dryRun) try { - await octokit$1.repos.createRelease({ - owner: owner$1, - repo: repo$1, - tag_name: pkgInfo$1.tag, - name: options.ghReleaseName, - prerelease: version$2.includes("alpha") || version$2.includes("beta") || version$2.includes("rc") - }); - } catch (e) { - debug$3(`Params: ${JSON.stringify({ - owner: owner$1, - repo: repo$1, - tag_name: pkgInfo$1.tag - }, null, 2)}`); - console.error(e); - } - return { - owner: owner$1, - repo: repo$1, - pkgInfo: pkgInfo$1, - octokit: octokit$1 - }; - } - function getRepoInfo(packageName$1, version$2) { - const headCommit = execSync("git log -1 --pretty=%B", { encoding: "utf-8" }).trim(); - const { GITHUB_REPOSITORY } = process.env; - if (!GITHUB_REPOSITORY) return { - owner: null, - repo: null, - pkgInfo: { - name: null, - version: null, - tag: null - } - }; - debug$3(`Github repository: ${GITHUB_REPOSITORY}`); - const [owner$1, repo$1] = GITHUB_REPOSITORY.split("/"); - const octokit$1 = new Octokit({ auth: process.env.GITHUB_TOKEN }); - let pkgInfo$1; - if (options.tagStyle === "lerna") { - pkgInfo$1 = headCommit.split("\n").map((line) => line.trim()).filter((line, index) => line.length && index).map((line) => line.substring(2)).map(parseTag).find((pkgInfo$2) => pkgInfo$2.name === packageName$1); - if (!pkgInfo$1) throw new TypeError(`No release commit found with ${packageName$1}, original commit info: ${headCommit}`); - } else pkgInfo$1 = { - tag: `v${version$2}`, - version: version$2, - name: packageName$1 - }; - return { - owner: owner$1, - repo: repo$1, - pkgInfo: pkgInfo$1, - octokit: octokit$1 - }; - } - if (!options.dryRun) { - await version(userOptions); - await updatePackageJson(packageJsonPath, { optionalDependencies: targets.reduce((deps, target) => { - deps[`${packageName}-${target.platformArchABI}`] = packageJson.version; - return deps; - }, {}) }); - } - const { owner, repo, pkgInfo, octokit } = options.ghReleaseId ? getRepoInfo(packageName, packageJson.version) : await createGhRelease(packageName, packageJson.version); - for (const target of targets) { - const pkgDir = resolve(options.cwd, options.npmDir, `${target.platformArchABI}`); - const ext = target.platform === "wasi" || target.platform === "wasm" ? "wasm" : "node"; - const filename = `${binaryName}.${target.platformArchABI}.${ext}`; - const dstPath = join(pkgDir, filename); - if (!options.dryRun) { - if (!existsSync(dstPath)) { - debug$3.warn(`%s doesn't exist`, dstPath); - continue; - } - if (!options.skipOptionalPublish) try { - const output = execSync(`${npmClient} publish`, { - cwd: pkgDir, - env: process.env, - stdio: "pipe" - }); - process.stdout.write(output); - } catch (e) { - if (e instanceof Error && e.message.includes("You cannot publish over the previously published versions")) { - console.info(e.message); - debug$3.warn(`${pkgDir} has been published, skipping`); - } else throw e; - } - if (options.ghRelease && repo && owner) { - debug$3.info(`Creating GitHub release ${pkgInfo.tag}`); - try { - const releaseId = options.ghReleaseId ? Number(options.ghReleaseId) : (await octokit.repos.getReleaseByTag({ - repo, - owner, - tag: pkgInfo.tag - })).data.id; - const dstFileStats = statSync(dstPath); - const assetInfo = await octokit.repos.uploadReleaseAsset({ - owner, - repo, - name: filename, - release_id: releaseId, - mediaType: { format: "raw" }, - headers: { - "content-length": dstFileStats.size, - "content-type": "application/octet-stream" - }, - data: await readFileAsync(dstPath) - }); - debug$3.info(`GitHub release created`); - debug$3.info(`Download URL: %s`, assetInfo.data.browser_download_url); - } catch (e) { - debug$3.error(`Param: ${JSON.stringify({ - owner, - repo, - tag: pkgInfo.tag, - filename: dstPath - }, null, 2)}`); - debug$3.error(e); - } - } - } - } -} -function parseTag(tag) { - const segments = tag.split("@"); - const version$2 = segments.pop(); - return { - name: segments.join("@"), - version: version$2, - tag - }; -} - -//#endregion -//#region src/def/universalize.ts -var BaseUniversalizeCommand = class extends Command { - static paths = [["universalize"]]; - static usage = Command.Usage({ description: "Combile built binaries into one universal binary" }); - cwd = Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - outputDir = Option.String("--output-dir,-o", "./", { description: "Path to the folder where all built `.node` files put, same as `--output-dir` of build command" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - outputDir: this.outputDir - }; - } -}; -function applyDefaultUniversalizeOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - outputDir: "./", - ...options - }; -} - -//#endregion -//#region src/api/universalize.ts -const debug$2 = debugFactory("universalize"); -const universalizers = { darwin: (inputs, output) => { - spawnSync("lipo", [ - "-create", - "-output", - output, - ...inputs - ], { stdio: "inherit" }); -} }; -async function universalizeBinaries(userOptions) { - var _UniArchsByPlatform$p, _universalizers$proce; - const options = applyDefaultUniversalizeOptions(userOptions); - const config = await readNapiConfig(join(options.cwd, options.packageJsonPath), options.configPath ? resolve(options.cwd, options.configPath) : void 0); - if (!config.targets.find((t) => t.platform === process.platform && t.arch === "universal")) throw new Error(`'universal' arch for platform '${process.platform}' not found in config!`); - const srcFiles = (_UniArchsByPlatform$p = UniArchsByPlatform[process.platform]) === null || _UniArchsByPlatform$p === void 0 ? void 0 : _UniArchsByPlatform$p.map((arch) => resolve(options.cwd, options.outputDir, `${config.binaryName}.${process.platform}-${arch}.node`)); - if (!srcFiles || !universalizers[process.platform]) throw new Error(`'universal' arch for platform '${process.platform}' not supported.`); - debug$2(`Looking up source binaries to combine: `); - debug$2(" %O", srcFiles); - const srcFileLookup = await Promise.all(srcFiles.map((f) => fileExists(f))); - const notFoundFiles = srcFiles.filter((_, i) => !srcFileLookup[i]); - if (notFoundFiles.length) throw new Error(`Some binary files were not found: ${JSON.stringify(notFoundFiles)}`); - const output = resolve(options.cwd, options.outputDir, `${config.binaryName}.${process.platform}-universal.node`); - (_universalizers$proce = universalizers[process.platform]) === null || _universalizers$proce === void 0 || _universalizers$proce.call(universalizers, srcFiles, output); - debug$2(`Produced universal binary: ${output}`); -} - -//#endregion -//#region src/commands/artifacts.ts -var ArtifactsCommand = class extends BaseArtifactsCommand { - static usage = Command.Usage({ - description: "Copy artifacts from Github Actions into specified dir", - examples: [["$0 artifacts --output-dir ./artifacts --dist ./npm", `Copy [binaryName].[platform].node under current dir(.) into packages under npm dir. -e.g: index.linux-x64-gnu.node --> ./npm/linux-x64-gnu/index.linux-x64-gnu.node`]] - }); - static paths = [["artifacts"]]; - async execute() { - await collectArtifacts(this.getOptions()); - } -}; - -//#endregion -//#region src/def/build.ts -var BaseBuildCommand = class extends Command { - static paths = [["build"]]; - static usage = Command.Usage({ description: "Build the NAPI-RS project" }); - target = Option.String("--target,-t", { description: "Build for the target triple, bypassed to `cargo build --target`" }); - cwd = Option.String("--cwd", { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - manifestPath = Option.String("--manifest-path", { description: "Path to `Cargo.toml`" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", { description: "Path to `package.json`" }); - targetDir = Option.String("--target-dir", { description: "Directory for all crate generated artifacts, see `cargo build --target-dir`" }); - outputDir = Option.String("--output-dir,-o", { description: "Path to where all the built files would be put. Default to the crate folder" }); - platform = Option.Boolean("--platform", { description: "Add platform triple to the generated nodejs binding file, eg: `[name].linux-x64-gnu.node`" }); - jsPackageName = Option.String("--js-package-name", { description: "Package name in generated js binding file. Only works with `--platform` flag" }); - constEnum = Option.Boolean("--const-enum", { description: "Whether generate const enum for typescript bindings" }); - jsBinding = Option.String("--js", { description: "Path and filename of generated JS binding file. Only works with `--platform` flag. Relative to `--output-dir`." }); - noJsBinding = Option.Boolean("--no-js", { description: "Whether to disable the generation JS binding file. Only works with `--platform` flag." }); - dts = Option.String("--dts", { description: "Path and filename of generated type def file. Relative to `--output-dir`" }); - dtsHeader = Option.String("--dts-header", { description: "Custom file header for generated type def file. Only works when `typedef` feature enabled." }); - noDtsHeader = Option.Boolean("--no-dts-header", { description: "Whether to disable the default file header for generated type def file. Only works when `typedef` feature enabled." }); - dtsCache = Option.Boolean("--dts-cache", true, { description: "Whether to enable the dts cache, default to true" }); - esm = Option.Boolean("--esm", { description: "Whether to emit an ESM JS binding file instead of CJS format. Only works with `--platform` flag." }); - strip = Option.Boolean("--strip,-s", { description: "Whether strip the library to achieve the minimum file size" }); - release = Option.Boolean("--release,-r", { description: "Build in release mode" }); - verbose = Option.Boolean("--verbose,-v", { description: "Verbosely log build command trace" }); - bin = Option.String("--bin", { description: "Build only the specified binary" }); - package = Option.String("--package,-p", { description: "Build the specified library or the one at cwd" }); - profile = Option.String("--profile", { description: "Build artifacts with the specified profile" }); - crossCompile = Option.Boolean("--cross-compile,-x", { description: "[experimental] cross-compile for the specified target with `cargo-xwin` on windows and `cargo-zigbuild` on other platform" }); - useCross = Option.Boolean("--use-cross", { description: "[experimental] use [cross](https://github.com/cross-rs/cross) instead of `cargo`" }); - useNapiCross = Option.Boolean("--use-napi-cross", { description: "[experimental] use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets." }); - watch = Option.Boolean("--watch,-w", { description: "watch the crate changes and build continuously with `cargo-watch` crates" }); - features = Option.Array("--features,-F", { description: "Space-separated list of features to activate" }); - allFeatures = Option.Boolean("--all-features", { description: "Activate all available features" }); - noDefaultFeatures = Option.Boolean("--no-default-features", { description: "Do not activate the `default` feature" }); - getOptions() { - return { - target: this.target, - cwd: this.cwd, - manifestPath: this.manifestPath, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - targetDir: this.targetDir, - outputDir: this.outputDir, - platform: this.platform, - jsPackageName: this.jsPackageName, - constEnum: this.constEnum, - jsBinding: this.jsBinding, - noJsBinding: this.noJsBinding, - dts: this.dts, - dtsHeader: this.dtsHeader, - noDtsHeader: this.noDtsHeader, - dtsCache: this.dtsCache, - esm: this.esm, - strip: this.strip, - release: this.release, - verbose: this.verbose, - bin: this.bin, - package: this.package, - profile: this.profile, - crossCompile: this.crossCompile, - useCross: this.useCross, - useNapiCross: this.useNapiCross, - watch: this.watch, - features: this.features, - allFeatures: this.allFeatures, - noDefaultFeatures: this.noDefaultFeatures - }; - } -}; - -//#endregion -//#region src/commands/build.ts -const debug$1 = debugFactory("build"); -var BuildCommand = class extends BaseBuildCommand { - pipe = Option.String("--pipe", { description: "Pipe all outputs file to given command. e.g. `napi build --pipe \"npx prettier --write\"`" }); - cargoOptions = Option.Rest(); - async execute() { - const { task } = await buildProject({ - ...this.getOptions(), - cargoOptions: this.cargoOptions - }); - const outputs = await task; - if (this.pipe) for (const output of outputs) { - debug$1("Piping output file to command: %s", this.pipe); - try { - execSync(`${this.pipe} ${output.path}`, { - stdio: "inherit", - cwd: this.cwd - }); - } catch (e) { - debug$1.error(`Failed to pipe output file ${output.path} to command`); - debug$1.error(e); - } - } - } -}; - -//#endregion -//#region src/commands/create-npm-dirs.ts -var CreateNpmDirsCommand = class extends BaseCreateNpmDirsCommand { - async execute() { - await createNpmDirs(this.getOptions()); - } -}; - -//#endregion -//#region src/commands/help.ts -/** -* A command that prints the usage of all commands. -* -* Paths: `-h`, `--help` -*/ -var HelpCommand = class extends Command { - static paths = [[`-h`], [`--help`]]; - async execute() { - await this.context.stdout.write(this.cli.usage()); - } -}; - -//#endregion -//#region src/commands/new.ts -const debug = debugFactory("new"); -var NewCommand = class extends BaseNewCommand { - interactive = Option.Boolean("--interactive,-i", true, { description: "Ask project basic information interactively without just using the default." }); - async execute() { - try { - await newProject(await this.fetchOptions()); - return 0; - } catch (e) { - debug("Failed to create new project"); - debug.error(e); - return 1; - } - } - async fetchOptions() { - const cmdOptions = super.getOptions(); - if (this.interactive) { - const targetPath = cmdOptions.path ? cmdOptions.path : await inquirerProjectPath(); - cmdOptions.path = targetPath; - return { - ...cmdOptions, - name: await this.fetchName(path.parse(targetPath).base), - minNodeApiVersion: await this.fetchNapiVersion(), - targets: await this.fetchTargets(), - license: await this.fetchLicense(), - enableTypeDef: await this.fetchTypeDef(), - enableGithubActions: await this.fetchGithubActions() - }; - } - return cmdOptions; - } - async fetchName(defaultName) { - return this.$$name ?? input({ - message: "Package name (the name field in your package.json file)", - default: defaultName - }); - } - async fetchLicense() { - return input({ - message: "License for open-sourced project", - default: this.license - }); - } - async fetchNapiVersion() { - return select({ - message: "Minimum node-api version (with node version requirement)", - loop: false, - pageSize: 10, - choices: Array.from({ length: 8 }, (_, i) => ({ - name: `napi${i + 1} (${napiEngineRequirement(i + 1)})`, - value: i + 1 - })), - default: this.minNodeApiVersion - 1 - }); - } - async fetchTargets() { - if (this.enableAllTargets) return AVAILABLE_TARGETS.concat(); - return await checkbox({ - loop: false, - message: "Choose target(s) your crate will be compiled to", - choices: AVAILABLE_TARGETS.map((target) => ({ - name: target, - value: target, - checked: DEFAULT_TARGETS.includes(target) - })) - }); - } - async fetchTypeDef() { - return await confirm({ - message: "Enable type definition auto-generation", - default: this.enableTypeDef - }); - } - async fetchGithubActions() { - return await confirm({ - message: "Enable Github Actions CI", - default: this.enableGithubActions - }); - } -}; -async function inquirerProjectPath() { - return input({ message: "Target path to create the project, relative to cwd." }).then((path$1) => { - if (!path$1) return inquirerProjectPath(); - return path$1; - }); -} - -//#endregion -//#region src/commands/pre-publish.ts -var PrePublishCommand = class extends BasePrePublishCommand { - async execute() { - await prePublish(this.getOptions()); - } -}; - -//#endregion -//#region src/commands/rename.ts -var RenameCommand = class extends BaseRenameCommand { - async execute() { - const options = this.getOptions(); - if (!options.name) options.name = await input({ - message: `Enter the new package name in the package.json`, - required: true - }); - if (!options.binaryName) options.binaryName = await input({ - message: `Enter the new binary name`, - required: true - }); - await renameProject(options); - } -}; - -//#endregion -//#region src/commands/universalize.ts -var UniversalizeCommand = class extends BaseUniversalizeCommand { - async execute() { - await universalizeBinaries(this.getOptions()); - } -}; - -//#endregion -//#region src/commands/version.ts -var VersionCommand = class extends BaseVersionCommand { - async execute() { - await version(this.getOptions()); - } -}; - -//#endregion -//#region src/index.ts -const cli = new Cli({ - binaryName: "napi", - binaryVersion: CLI_VERSION -}); -cli.register(NewCommand); -cli.register(BuildCommand); -cli.register(CreateNpmDirsCommand); -cli.register(ArtifactsCommand); -cli.register(UniversalizeCommand); -cli.register(RenameCommand); -cli.register(PrePublishCommand); -cli.register(VersionCommand); -cli.register(HelpCommand); - -//#endregion -//#region src/cli.ts -cli.runExit(process.argv.slice(2)); - -//#endregion -export { }; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwibmFtZXMiOlsiZGVidWciLCJwYXRoIiwicGljayIsInBrZ0pzb24udmVyc2lvbiIsIlRBUkdFVF9MSU5LRVI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJDcHVUb05vZGVBcmNoOiBSZWNvcmQ8c3RyaW5nLCBOb2RlSlNBcmNoPiIsIlN5c1RvTm9kZVBsYXRmb3JtOiBSZWNvcmQ8c3RyaW5nLCBQbGF0Zm9ybT4iLCJVbmlBcmNoc0J5UGxhdGZvcm06IFBhcnRpYWw8UmVjb3JkPFBsYXRmb3JtLCBOb2RlSlNBcmNoW10+PiIsImNwdTogc3RyaW5nIiwic3lzOiBzdHJpbmciLCJhYmk6IHN0cmluZyB8IG51bGwiLCJyZXF1aXJlbWVudHM6IHN0cmluZ1tdIiwicGF0aCIsInNlcGFyYXRlZENvbmZpZzogVXNlck5hcGlDb25maWcgfCB1bmRlZmluZWQiLCJuYXBpQ29uZmlnOiBOYXBpQ29uZmlnIiwidGFyZ2V0czogc3RyaW5nW10iLCJleHBvcnRzOiBzdHJpbmdbXSIsImRlYnVnIiwiZGlyIiwiZnMiLCJmcyIsImRlYnVnIiwib3B0aW9uczogUGFyc2VkQnVpbGRPcHRpb25zIiwibWV0YWRhdGE6IENhcmdvV29ya3NwYWNlTWV0YWRhdGEiLCJjcmF0ZTogQ3JhdGUiLCJjb25maWc6IE5hcGlDb25maWciLCJhbGlhczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiIsInZlcnNpb24iLCJkZXN0IiwiZGlyIiwidmFsdWUiLCJleHBvcnRzOiBzdHJpbmdbXSIsImRlYnVnIiwibWtkaXJBc3luYyIsImRpciIsInJhd01rZGlyQXN5bmMiLCJ3cml0ZUZpbGVBc3luYyIsInJhd1dyaXRlRmlsZUFzeW5jIiwic2NvcGVkUGFja2FnZUpzb246IENvbW1vblBhY2thZ2VKc29uRmllbGRzIiwicGljayIsInBhcnNlIiwiI3ByaW50T2JqZWN0IiwiI2Zvcm1hdCIsIiNpc1NpbXBseVNlcmlhbGl6YWJsZSIsInZhbHVlIiwiI2RhdGVEZWNsYXJhdGlvbiIsIiNzdHJEZWNsYXJhdGlvbiIsIiNudW1iZXJEZWNsYXJhdGlvbiIsIiNib29sRGVjbGFyYXRpb24iLCIjZ2V0VHlwZU9mQXJyYXkiLCIjYXJyYXlEZWNsYXJhdGlvbiIsIiNoZWFkZXJHcm91cCIsIiNwcmludEFzSW5saW5lVmFsdWUiLCIjZGVjbGFyYXRpb24iLCIjaGVhZGVyIiwiI2FycmF5VHlwZUNhY2hlIiwiI2RvR2V0VHlwZU9mQXJyYXkiLCIjaXNQcmltaXRpdmUiLCIjcHJpbnREYXRlIiwidmFsdWUiLCIjc291cmNlIiwiI3Bvc2l0aW9uIiwiI3doaXRlc3BhY2UiLCJ2YWx1ZSIsInRhYmxlIiwicGFyc2UiLCJqb2luIiwibWVyZ2UiLCJmbG9hdCIsInBhaXIiLCJwYXJzZSIsImlucHV0IiwiZGlyIiwid2Fsay51cCIsInBhcnNlVG9tbCIsInN0cmluZ2lmeVRvbWwiLCJmaW5kLmRpciIsInlhbWxQYXJzZSIsInlhbWxTdHJpbmdpZnkiLCJkZWJ1ZyIsImZzIiwieWFtbExvYWQiLCJqb2JzVG9SZW1vdmU6IHN0cmluZ1tdIiwieWFtbER1bXAiLCJzdGF0IiwicGF0aCIsImRlYnVnIiwiZGVidWciLCJwYWNrYWdlTmFtZSIsInZlcnNpb24iLCJyZXBvIiwib3duZXIiLCJvY3Rva2l0IiwicGtnSW5mbyIsInBrZ0luZm86IFBhY2thZ2VJbmZvIHwgdW5kZWZpbmVkIiwiZGVidWciLCJ1bml2ZXJzYWxpemVyczogUGFydGlhbDxcbiAgUmVjb3JkPE5vZGVKUy5QbGF0Zm9ybSwgKGlucHV0czogc3RyaW5nW10sIG91dHB1dDogc3RyaW5nKSA9PiB2b2lkPlxuPiIsImRlYnVnIiwidGFyZ2V0UGF0aDogc3RyaW5nIiwicGF0aCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWYvYXJ0aWZhY3RzLnRzIiwiLi4vc3JjL3V0aWxzL2xvZy50cyIsIi4uL3BhY2thZ2UuanNvbiIsIi4uL3NyYy91dGlscy9taXNjLnRzIiwiLi4vc3JjL3V0aWxzL3RhcmdldC50cyIsIi4uL3NyYy91dGlscy92ZXJzaW9uLnRzIiwiLi4vc3JjL3V0aWxzL21ldGFkYXRhLnRzIiwiLi4vc3JjL3V0aWxzL2NvbmZpZy50cyIsIi4uL3NyYy91dGlscy9jYXJnby50cyIsIi4uL3NyYy91dGlscy90eXBlZ2VuLnRzIiwiLi4vc3JjL3V0aWxzL3JlYWQtY29uZmlnLnRzIiwiLi4vc3JjL2FwaS9hcnRpZmFjdHMudHMiLCIuLi9zcmMvYXBpL3RlbXBsYXRlcy9qcy1iaW5kaW5nLnRzIiwiLi4vc3JjL2FwaS90ZW1wbGF0ZXMvbG9hZC13YXNpLXRlbXBsYXRlLnRzIiwiLi4vc3JjL2FwaS90ZW1wbGF0ZXMvd2FzaS13b3JrZXItdGVtcGxhdGUudHMiLCIuLi9zcmMvYXBpL2J1aWxkLnRzIiwiLi4vc3JjL2RlZi9jcmVhdGUtbnBtLWRpcnMudHMiLCIuLi9zcmMvYXBpL2NyZWF0ZS1ucG0tZGlycy50cyIsIi4uL3NyYy9kZWYvbmV3LnRzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BzdGQvdG9tbC9zdHJpbmdpZnkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzci9zdGRfX2NvbGxlY3Rpb25zL191dGlscy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNyL3N0ZF9fY29sbGVjdGlvbnMvZGVlcF9tZXJnZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9Ac3RkL3RvbWwvX3BhcnNlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9Ac3RkL3RvbWwvcGFyc2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZW1wYXRoaWMvcmVzb2x2ZS5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZW1wYXRoaWMvd2Fsay5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZW1wYXRoaWMvZmluZC5tanMiLCIuLi9zcmMvZGVmL3JlbmFtZS50cyIsIi4uL3NyYy9hcGkvcmVuYW1lLnRzIiwiLi4vc3JjL2FwaS9uZXcudHMiLCIuLi9zcmMvZGVmL3ByZS1wdWJsaXNoLnRzIiwiLi4vc3JjL2RlZi92ZXJzaW9uLnRzIiwiLi4vc3JjL2FwaS92ZXJzaW9uLnRzIiwiLi4vc3JjL2FwaS9wcmUtcHVibGlzaC50cyIsIi4uL3NyYy9kZWYvdW5pdmVyc2FsaXplLnRzIiwiLi4vc3JjL2FwaS91bml2ZXJzYWxpemUudHMiLCIuLi9zcmMvY29tbWFuZHMvYXJ0aWZhY3RzLnRzIiwiLi4vc3JjL2RlZi9idWlsZC50cyIsIi4uL3NyYy9jb21tYW5kcy9idWlsZC50cyIsIi4uL3NyYy9jb21tYW5kcy9jcmVhdGUtbnBtLWRpcnMudHMiLCIuLi9zcmMvY29tbWFuZHMvaGVscC50cyIsIi4uL3NyYy9jb21tYW5kcy9uZXcudHMiLCIuLi9zcmMvY29tbWFuZHMvcHJlLXB1Ymxpc2gudHMiLCIuLi9zcmMvY29tbWFuZHMvcmVuYW1lLnRzIiwiLi4vc3JjL2NvbW1hbmRzL3VuaXZlcnNhbGl6ZS50cyIsIi4uL3NyYy9jb21tYW5kcy92ZXJzaW9uLnRzIiwiLi4vc3JjL2luZGV4LnRzIiwiLi4vc3JjL2NsaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGNvZGVnZW4vaW5kZXgudHNcbi8vIERvIG5vdCBlZGl0IHRoaXMgZmlsZSBtYW51YWxseVxuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUFydGlmYWN0c0NvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW1snYXJ0aWZhY3RzJ11dXG5cbiAgc3RhdGljIHVzYWdlID0gQ29tbWFuZC5Vc2FnZSh7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnQ29weSBhcnRpZmFjdHMgZnJvbSBHaXRodWIgQWN0aW9ucyBpbnRvIG5wbSBwYWNrYWdlcyBhbmQgcmVhZHkgdG8gcHVibGlzaCcsXG4gIH0pXG5cbiAgY3dkID0gT3B0aW9uLlN0cmluZygnLS1jd2QnLCBwcm9jZXNzLmN3ZCgpLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoJyxcbiAgfSlcblxuICBjb25maWdQYXRoPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1jb25maWctcGF0aCwtYycsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGUnLFxuICB9KVxuXG4gIHBhY2thZ2VKc29uUGF0aCA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZS1qc29uLXBhdGgnLCAncGFja2FnZS5qc29uJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgcGFja2FnZS5qc29uYCcsXG4gIH0pXG5cbiAgb3V0cHV0RGlyID0gT3B0aW9uLlN0cmluZygnLS1vdXRwdXQtZGlyLC1vLC1kJywgJy4vYXJ0aWZhY3RzJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1BhdGggdG8gdGhlIGZvbGRlciB3aGVyZSBhbGwgYnVpbHQgYC5ub2RlYCBmaWxlcyBwdXQsIHNhbWUgYXMgYC0tb3V0cHV0LWRpcmAgb2YgYnVpbGQgY29tbWFuZCcsXG4gIH0pXG5cbiAgbnBtRGlyID0gT3B0aW9uLlN0cmluZygnLS1ucG0tZGlyJywgJ25wbScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dCcsXG4gIH0pXG5cbiAgYnVpbGRPdXRwdXREaXI/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWJ1aWxkLW91dHB1dC1kaXInLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnUGF0aCB0byB0aGUgYnVpbGQgb3V0cHV0IGRpciwgb25seSBuZWVkZWQgd2hlbiB0YXJnZXRzIGNvbnRhaW5zIGB3YXNtMzItd2FzaS0qYCcsXG4gIH0pXG5cbiAgZ2V0T3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3dkOiB0aGlzLmN3ZCxcbiAgICAgIGNvbmZpZ1BhdGg6IHRoaXMuY29uZmlnUGF0aCxcbiAgICAgIHBhY2thZ2VKc29uUGF0aDogdGhpcy5wYWNrYWdlSnNvblBhdGgsXG4gICAgICBvdXRwdXREaXI6IHRoaXMub3V0cHV0RGlyLFxuICAgICAgbnBtRGlyOiB0aGlzLm5wbURpcixcbiAgICAgIGJ1aWxkT3V0cHV0RGlyOiB0aGlzLmJ1aWxkT3V0cHV0RGlyLFxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENvcHkgYXJ0aWZhY3RzIGZyb20gR2l0aHViIEFjdGlvbnMgaW50byBucG0gcGFja2FnZXMgYW5kIHJlYWR5IHRvIHB1Ymxpc2hcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcnRpZmFjdHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICBjd2Q/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICpcbiAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICovXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIGFsbCBidWlsdCBgLm5vZGVgIGZpbGVzIHB1dCwgc2FtZSBhcyBgLS1vdXRwdXQtZGlyYCBvZiBidWlsZCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0ICcuL2FydGlmYWN0cydcbiAgICovXG4gIG91dHB1dERpcj86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBucG0gcGFja2FnZXMgcHV0XG4gICAqXG4gICAqIEBkZWZhdWx0ICducG0nXG4gICAqL1xuICBucG1EaXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGJ1aWxkIG91dHB1dCBkaXIsIG9ubHkgbmVlZGVkIHdoZW4gdGFyZ2V0cyBjb250YWlucyBgd2FzbTMyLXdhc2ktKmBcbiAgICovXG4gIGJ1aWxkT3V0cHV0RGlyPzogc3RyaW5nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHRBcnRpZmFjdHNPcHRpb25zKG9wdGlvbnM6IEFydGlmYWN0c09wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgcGFja2FnZUpzb25QYXRoOiAncGFja2FnZS5qc29uJyxcbiAgICBvdXRwdXREaXI6ICcuL2FydGlmYWN0cycsXG4gICAgbnBtRGlyOiAnbnBtJyxcbiAgICAuLi5vcHRpb25zLFxuICB9XG59XG4iLCJpbXBvcnQgKiBhcyBjb2xvcnMgZnJvbSAnY29sb3JldHRlJ1xuaW1wb3J0IHsgY3JlYXRlRGVidWcgfSBmcm9tICdvYnVnJ1xuXG5kZWNsYXJlIG1vZHVsZSAnb2J1Zycge1xuICBpbnRlcmZhY2UgRGVidWdnZXIge1xuICAgIGluZm86IHR5cGVvZiBjb25zb2xlLmVycm9yXG4gICAgd2FybjogdHlwZW9mIGNvbnNvbGUuZXJyb3JcbiAgICBlcnJvcjogdHlwZW9mIGNvbnNvbGUuZXJyb3JcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZGVidWdGYWN0b3J5ID0gKG5hbWVzcGFjZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGRlYnVnID0gY3JlYXRlRGVidWcoYG5hcGk6JHtuYW1lc3BhY2V9YCwge1xuICAgIGZvcm1hdHRlcnM6IHtcbiAgICAgIC8vIGRlYnVnKCclaScsICdUaGlzIGlzIGFuIGluZm8nKVxuICAgICAgaSh2KSB7XG4gICAgICAgIHJldHVybiBjb2xvcnMuZ3JlZW4odilcbiAgICAgIH0sXG4gICAgfSxcbiAgfSlcblxuICBkZWJ1Zy5pbmZvID0gKC4uLmFyZ3M6IGFueVtdKSA9PlxuICAgIGNvbnNvbGUuZXJyb3IoY29sb3JzLmJsYWNrKGNvbG9ycy5iZ0dyZWVuKCcgSU5GTyAnKSksIC4uLmFyZ3MpXG4gIGRlYnVnLndhcm4gPSAoLi4uYXJnczogYW55W10pID0+XG4gICAgY29uc29sZS5lcnJvcihjb2xvcnMuYmxhY2soY29sb3JzLmJnWWVsbG93KCcgV0FSTklORyAnKSksIC4uLmFyZ3MpXG4gIGRlYnVnLmVycm9yID0gKC4uLmFyZ3M6IGFueVtdKSA9PlxuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBjb2xvcnMud2hpdGUoY29sb3JzLmJnUmVkKCcgRVJST1IgJykpLFxuICAgICAgLi4uYXJncy5tYXAoKGFyZykgPT5cbiAgICAgICAgYXJnIGluc3RhbmNlb2YgRXJyb3IgPyAoYXJnLnN0YWNrID8/IGFyZy5tZXNzYWdlKSA6IGFyZyxcbiAgICAgICksXG4gICAgKVxuXG4gIHJldHVybiBkZWJ1Z1xufVxuZXhwb3J0IGNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCd1dGlscycpXG4iLCJ7XG4gIFwibmFtZVwiOiBcIkBuYXBpLXJzL2NsaVwiLFxuICBcInZlcnNpb25cIjogXCIzLjUuMVwiLFxuICBcImRlc2NyaXB0aW9uXCI6IFwiQ2xpIHRvb2xzIGZvciBuYXBpLXJzXCIsXG4gIFwiYXV0aG9yXCI6IFwiTG9uZ1lpbmFuIDxseW53ZWtsbUBnbWFpbC5jb20+XCIsXG4gIFwiaG9tZXBhZ2VcIjogXCJodHRwczovL25hcGkucnMvXCIsXG4gIFwibGljZW5zZVwiOiBcIk1JVFwiLFxuICBcInR5cGVcIjogXCJtb2R1bGVcIixcbiAgXCJlbmdpbmVzXCI6IHtcbiAgICBcIm5vZGVcIjogXCI+PSAxNlwiXG4gIH0sXG4gIFwiYmluXCI6IHtcbiAgICBcIm5hcGlcIjogXCIuL2Rpc3QvY2xpLmpzXCIsXG4gICAgXCJuYXBpLXJhd1wiOiBcIi4vY2xpLm1qc1wiXG4gIH0sXG4gIFwibWFpblwiOiBcIi4vZGlzdC9pbmRleC5janNcIixcbiAgXCJtb2R1bGVcIjogXCIuL2Rpc3QvaW5kZXguanNcIixcbiAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLnRzXCIsXG4gIFwiZXhwb3J0c1wiOiB7XG4gICAgXCIuXCI6IHtcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvaW5kZXguY2pzXCJcbiAgICB9LFxuICAgIFwiLi9wYWNrYWdlLmpzb25cIjogXCIuL3BhY2thZ2UuanNvblwiXG4gIH0sXG4gIFwiZmlsZXNcIjogW1xuICAgIFwiZGlzdFwiLFxuICAgIFwic3JjXCIsXG4gICAgXCIhX190ZXN0c19fXCJcbiAgXSxcbiAgXCJrZXl3b3Jkc1wiOiBbXG4gICAgXCJjbGlcIixcbiAgICBcInJ1c3RcIixcbiAgICBcIm5hcGlcIixcbiAgICBcIm4tYXBpXCIsXG4gICAgXCJub2RlLWFwaVwiLFxuICAgIFwibm9kZS1hZGRvblwiLFxuICAgIFwibmVvblwiXG4gIF0sXG4gIFwibWFpbnRhaW5lcnNcIjogW1xuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkxvbmdZaW5hblwiLFxuICAgICAgXCJlbWFpbFwiOiBcImx5bndla2xtQGdtYWlsLmNvbVwiLFxuICAgICAgXCJob21lcGFnZVwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9Ccm9vb29vb2tseW5cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiZm9yZWhhbG9cIixcbiAgICAgIFwiaG9tZXBhZ2VcIjogXCJodHRwczovL2dpdGh1Yi5jb20vZm9yZWhhbG9cIlxuICAgIH1cbiAgXSxcbiAgXCJyZXBvc2l0b3J5XCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRcIixcbiAgICBcInVybFwiOiBcImdpdCtodHRwczovL2dpdGh1Yi5jb20vbmFwaS1ycy9uYXBpLXJzLmdpdFwiXG4gIH0sXG4gIFwicHVibGlzaENvbmZpZ1wiOiB7XG4gICAgXCJyZWdpc3RyeVwiOiBcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL1wiLFxuICAgIFwiYWNjZXNzXCI6IFwicHVibGljXCJcbiAgfSxcbiAgXCJidWdzXCI6IHtcbiAgICBcInVybFwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9uYXBpLXJzL25hcGktcnMvaXNzdWVzXCJcbiAgfSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGlucXVpcmVyL3Byb21wdHNcIjogXCJeOC4wLjBcIixcbiAgICBcIkBuYXBpLXJzL2Nyb3NzLXRvb2xjaGFpblwiOiBcIl4xLjAuM1wiLFxuICAgIFwiQG5hcGktcnMvd2FzbS10b29sc1wiOiBcIl4xLjAuMVwiLFxuICAgIFwiQG9jdG9raXQvcmVzdFwiOiBcIl4yMi4wLjFcIixcbiAgICBcImNsaXBhbmlvblwiOiBcIl40LjAuMC1yYy40XCIsXG4gICAgXCJjb2xvcmV0dGVcIjogXCJeMi4wLjIwXCIsXG4gICAgXCJlbW5hcGlcIjogXCJeMS43LjFcIixcbiAgICBcImVzLXRvb2xraXRcIjogXCJeMS40MS4wXCIsXG4gICAgXCJqcy15YW1sXCI6IFwiXjQuMS4wXCIsXG4gICAgXCJvYnVnXCI6IFwiXjIuMC4wXCIsXG4gICAgXCJzZW12ZXJcIjogXCJeNy43LjNcIixcbiAgICBcInR5cGFuaW9uXCI6IFwiXjMuMTQuMFwiXG4gIH0sXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBlbW5hcGkvcnVudGltZVwiOiBcIl4xLjcuMVwiLFxuICAgIFwiQG94Yy1ub2RlL2NvcmVcIjogXCJeMC4wLjM1XCIsXG4gICAgXCJAc3RkL3RvbWxcIjogXCJucG06QGpzci9zdGRfX3RvbWxAXjEuMC4xMVwiLFxuICAgIFwiQHR5cGVzL2lucXVpcmVyXCI6IFwiXjkuMC45XCIsXG4gICAgXCJAdHlwZXMvanMteWFtbFwiOiBcIl40LjAuOVwiLFxuICAgIFwiQHR5cGVzL25vZGVcIjogXCJeMjQuMTAuMFwiLFxuICAgIFwiQHR5cGVzL3NlbXZlclwiOiBcIl43LjcuMVwiLFxuICAgIFwiYXZhXCI6IFwiXjYuNC4xXCIsXG4gICAgXCJlbXBhdGhpY1wiOiBcIl4yLjAuMFwiLFxuICAgIFwiZW52LXBhdGhzXCI6IFwiXjMuMC4wXCIsXG4gICAgXCJwcmV0dGllclwiOiBcIl4zLjYuMlwiLFxuICAgIFwidHNkb3duXCI6IFwiXjAuMTguMFwiLFxuICAgIFwidHNsaWJcIjogXCJeMi44LjFcIixcbiAgICBcInR5cGVzY3JpcHRcIjogXCJeNS45LjNcIlxuICB9LFxuICBcInBlZXJEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGVtbmFwaS9ydW50aW1lXCI6IFwiXjEuNy4xXCJcbiAgfSxcbiAgXCJwZWVyRGVwZW5kZW5jaWVzTWV0YVwiOiB7XG4gICAgXCJAZW1uYXBpL3J1bnRpbWVcIjoge1xuICAgICAgXCJvcHRpb25hbFwiOiB0cnVlXG4gICAgfVxuICB9LFxuICBcImZ1bmRpbmdcIjoge1xuICAgIFwidHlwZVwiOiBcImdpdGh1YlwiLFxuICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL0Jyb29vb29va2x5blwiXG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJjb2RlZ2VuXCI6IFwibm9kZSAtLWltcG9ydCBAb3hjLW5vZGUvY29yZS9yZWdpc3RlciAuL2NvZGVnZW4vaW5kZXgudHNcIixcbiAgICBcImJ1aWxkXCI6IFwidHNkb3duXCIsXG4gICAgXCJ0ZXN0XCI6IFwibm9kZSAtLWltcG9ydCBAb3hjLW5vZGUvY29yZS9yZWdpc3RlciAuLi9ub2RlX21vZHVsZXMvYXZhL2VudHJ5cG9pbnRzL2NsaS5tanNcIlxuICB9LFxuICBcImF2YVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IHtcbiAgICAgIFwidHNcIjogXCJtb2R1bGVcIlxuICAgIH0sXG4gICAgXCJ0aW1lb3V0XCI6IFwiMm1cIixcbiAgICBcIndvcmtlclRocmVhZHNcIjogZmFsc2UsXG4gICAgXCJmaWxlc1wiOiBbXG4gICAgICBcIioqL19fdGVzdHNfXy8qKi8qLnNwZWMudHNcIixcbiAgICAgIFwiZTJlLyoqLyouc3BlYy50c1wiXG4gICAgXVxuICB9XG59XG4iLCJpbXBvcnQge1xuICByZWFkRmlsZSxcbiAgd3JpdGVGaWxlLFxuICB1bmxpbmssXG4gIGNvcHlGaWxlLFxuICBta2RpcixcbiAgc3RhdCxcbiAgcmVhZGRpcixcbiAgYWNjZXNzLFxufSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuXG5pbXBvcnQgcGtnSnNvbiBmcm9tICcuLi8uLi9wYWNrYWdlLmpzb24nIHdpdGggeyB0eXBlOiAnanNvbicgfVxuaW1wb3J0IHsgZGVidWcgfSBmcm9tICcuL2xvZy5qcydcblxuZXhwb3J0IGNvbnN0IHJlYWRGaWxlQXN5bmMgPSByZWFkRmlsZVxuZXhwb3J0IGNvbnN0IHdyaXRlRmlsZUFzeW5jID0gd3JpdGVGaWxlXG5leHBvcnQgY29uc3QgdW5saW5rQXN5bmMgPSB1bmxpbmtcbmV4cG9ydCBjb25zdCBjb3B5RmlsZUFzeW5jID0gY29weUZpbGVcbmV4cG9ydCBjb25zdCBta2RpckFzeW5jID0gbWtkaXJcbmV4cG9ydCBjb25zdCBzdGF0QXN5bmMgPSBzdGF0XG5leHBvcnQgY29uc3QgcmVhZGRpckFzeW5jID0gcmVhZGRpclxuXG5leHBvcnQgZnVuY3Rpb24gZmlsZUV4aXN0cyhwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGFjY2VzcyhwYXRoKS50aGVuKFxuICAgICgpID0+IHRydWUsXG4gICAgKCkgPT4gZmFsc2UsXG4gIClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRpckV4aXN0c0FzeW5jKHBhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgc3RhdEFzeW5jKHBhdGgpXG4gICAgcmV0dXJuIHN0YXRzLmlzRGlyZWN0b3J5KClcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpY2s8TywgSyBleHRlbmRzIGtleW9mIE8+KG86IE8sIC4uLmtleXM6IEtbXSk6IFBpY2s8TywgSz4ge1xuICByZXR1cm4ga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgYWNjW2tleV0gPSBvW2tleV1cbiAgICByZXR1cm4gYWNjXG4gIH0sIHt9IGFzIE8pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVQYWNrYWdlSnNvbihcbiAgcGF0aDogc3RyaW5nLFxuICBwYXJ0aWFsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSB7XG4gIGNvbnN0IGV4aXN0cyA9IGF3YWl0IGZpbGVFeGlzdHMocGF0aClcbiAgaWYgKCFleGlzdHMpIHtcbiAgICBkZWJ1ZyhgRmlsZSBub3QgZXhpc3RzICR7cGF0aH1gKVxuICAgIHJldHVyblxuICB9XG4gIGNvbnN0IG9sZCA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGVBc3luYyhwYXRoLCAndXRmOCcpKVxuICBhd2FpdCB3cml0ZUZpbGVBc3luYyhwYXRoLCBKU09OLnN0cmluZ2lmeSh7IC4uLm9sZCwgLi4ucGFydGlhbCB9LCBudWxsLCAyKSlcbn1cblxuZXhwb3J0IGNvbnN0IENMSV9WRVJTSU9OID0gcGtnSnNvbi52ZXJzaW9uXG4iLCJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcblxuZXhwb3J0IHR5cGUgUGxhdGZvcm0gPSBOb2RlSlMuUGxhdGZvcm0gfCAnd2FzbScgfCAnd2FzaScgfCAnb3Blbmhhcm1vbnknXG5cbmV4cG9ydCBjb25zdCBVTklWRVJTQUxfVEFSR0VUUyA9IHtcbiAgJ3VuaXZlcnNhbC1hcHBsZS1kYXJ3aW4nOiBbJ2FhcmNoNjQtYXBwbGUtZGFyd2luJywgJ3g4Nl82NC1hcHBsZS1kYXJ3aW4nXSxcbn0gYXMgY29uc3RcblxuY29uc3QgU1VCX1NZU1RFTVMgPSBuZXcgU2V0KFsnYW5kcm9pZCcsICdvaG9zJ10pXG5cbmV4cG9ydCBjb25zdCBBVkFJTEFCTEVfVEFSR0VUUyA9IFtcbiAgJ2FhcmNoNjQtYXBwbGUtZGFyd2luJyxcbiAgJ2FhcmNoNjQtbGludXgtYW5kcm9pZCcsXG4gICdhYXJjaDY0LXVua25vd24tbGludXgtZ251JyxcbiAgJ2FhcmNoNjQtdW5rbm93bi1saW51eC1tdXNsJyxcbiAgJ2FhcmNoNjQtdW5rbm93bi1saW51eC1vaG9zJyxcbiAgJ2FhcmNoNjQtcGMtd2luZG93cy1tc3ZjJyxcbiAgJ3g4Nl82NC1hcHBsZS1kYXJ3aW4nLFxuICAneDg2XzY0LXBjLXdpbmRvd3MtbXN2YycsXG4gICd4ODZfNjQtcGMtd2luZG93cy1nbnUnLFxuICAneDg2XzY0LXVua25vd24tbGludXgtZ251JyxcbiAgJ3g4Nl82NC11bmtub3duLWxpbnV4LW11c2wnLFxuICAneDg2XzY0LXVua25vd24tbGludXgtb2hvcycsXG4gICd4ODZfNjQtdW5rbm93bi1mcmVlYnNkJyxcbiAgJ2k2ODYtcGMtd2luZG93cy1tc3ZjJyxcbiAgJ2FybXY3LXVua25vd24tbGludXgtZ251ZWFiaWhmJyxcbiAgJ2FybXY3LXVua25vd24tbGludXgtbXVzbGVhYmloZicsXG4gICdhcm12Ny1saW51eC1hbmRyb2lkZWFiaScsXG4gICd1bml2ZXJzYWwtYXBwbGUtZGFyd2luJyxcbiAgJ2xvb25nYXJjaDY0LXVua25vd24tbGludXgtZ251JyxcbiAgJ3Jpc2N2NjRnYy11bmtub3duLWxpbnV4LWdudScsXG4gICdwb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudScsXG4gICdzMzkweC11bmtub3duLWxpbnV4LWdudScsXG4gICd3YXNtMzItd2FzaS1wcmV2aWV3MS10aHJlYWRzJyxcbiAgJ3dhc20zMi13YXNpcDEtdGhyZWFkcycsXG5dIGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIFRhcmdldFRyaXBsZSA9ICh0eXBlb2YgQVZBSUxBQkxFX1RBUkdFVFMpW251bWJlcl1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVEFSR0VUUyA9IFtcbiAgJ3g4Nl82NC1hcHBsZS1kYXJ3aW4nLFxuICAnYWFyY2g2NC1hcHBsZS1kYXJ3aW4nLFxuICAneDg2XzY0LXBjLXdpbmRvd3MtbXN2YycsXG4gICd4ODZfNjQtdW5rbm93bi1saW51eC1nbnUnLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgVEFSR0VUX0xJTktFUjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ2FhcmNoNjQtdW5rbm93bi1saW51eC1tdXNsJzogJ2FhcmNoNjQtbGludXgtbXVzbC1nY2MnLFxuICAvLyBUT0RPOiBTd2l0Y2ggdG8gbG9vbmdhcmNoNjQtbGludXgtZ251LWdjYyB3aGVuIGF2YWlsYWJsZVxuICAnbG9vbmdhcmNoNjQtdW5rbm93bi1saW51eC1nbnUnOiAnbG9vbmdhcmNoNjQtbGludXgtZ251LWdjYy0xMycsXG4gICdyaXNjdjY0Z2MtdW5rbm93bi1saW51eC1nbnUnOiAncmlzY3Y2NC1saW51eC1nbnUtZ2NjJyxcbiAgJ3Bvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251JzogJ3Bvd2VycGM2NGxlLWxpbnV4LWdudS1nY2MnLFxuICAnczM5MHgtdW5rbm93bi1saW51eC1nbnUnOiAnczM5MHgtbGludXgtZ251LWdjYycsXG59XG5cbi8vIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvcHJvY2Vzcy5odG1sI3Byb2Nlc3NfcHJvY2Vzc19hcmNoXG50eXBlIE5vZGVKU0FyY2ggPVxuICB8ICdhcm0nXG4gIHwgJ2FybTY0J1xuICB8ICdpYTMyJ1xuICB8ICdsb29uZzY0J1xuICB8ICdtaXBzJ1xuICB8ICdtaXBzZWwnXG4gIHwgJ3BwYydcbiAgfCAncHBjNjQnXG4gIHwgJ3Jpc2N2NjQnXG4gIHwgJ3MzOTAnXG4gIHwgJ3MzOTB4J1xuICB8ICd4MzInXG4gIHwgJ3g2NCdcbiAgfCAndW5pdmVyc2FsJ1xuICB8ICd3YXNtMzInXG5cbmNvbnN0IENwdVRvTm9kZUFyY2g6IFJlY29yZDxzdHJpbmcsIE5vZGVKU0FyY2g+ID0ge1xuICB4ODZfNjQ6ICd4NjQnLFxuICBhYXJjaDY0OiAnYXJtNjQnLFxuICBpNjg2OiAnaWEzMicsXG4gIGFybXY3OiAnYXJtJyxcbiAgbG9vbmdhcmNoNjQ6ICdsb29uZzY0JyxcbiAgcmlzY3Y2NGdjOiAncmlzY3Y2NCcsXG4gIHBvd2VycGM2NGxlOiAncHBjNjQnLFxufVxuXG5leHBvcnQgY29uc3QgTm9kZUFyY2hUb0NwdTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgeDY0OiAneDg2XzY0JyxcbiAgYXJtNjQ6ICdhYXJjaDY0JyxcbiAgaWEzMjogJ2k2ODYnLFxuICBhcm06ICdhcm12NycsXG4gIGxvb25nNjQ6ICdsb29uZ2FyY2g2NCcsXG4gIHJpc2N2NjQ6ICdyaXNjdjY0Z2MnLFxuICBwcGM2NDogJ3Bvd2VycGM2NGxlJyxcbn1cblxuY29uc3QgU3lzVG9Ob2RlUGxhdGZvcm06IFJlY29yZDxzdHJpbmcsIFBsYXRmb3JtPiA9IHtcbiAgbGludXg6ICdsaW51eCcsXG4gIGZyZWVic2Q6ICdmcmVlYnNkJyxcbiAgZGFyd2luOiAnZGFyd2luJyxcbiAgd2luZG93czogJ3dpbjMyJyxcbiAgb2hvczogJ29wZW5oYXJtb255Jyxcbn1cblxuZXhwb3J0IGNvbnN0IFVuaUFyY2hzQnlQbGF0Zm9ybTogUGFydGlhbDxSZWNvcmQ8UGxhdGZvcm0sIE5vZGVKU0FyY2hbXT4+ID0ge1xuICBkYXJ3aW46IFsneDY0JywgJ2FybTY0J10sXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0IHtcbiAgdHJpcGxlOiBzdHJpbmdcbiAgcGxhdGZvcm1BcmNoQUJJOiBzdHJpbmdcbiAgcGxhdGZvcm06IFBsYXRmb3JtXG4gIGFyY2g6IE5vZGVKU0FyY2hcbiAgYWJpOiBzdHJpbmcgfCBudWxsXG59XG5cbi8qKlxuICogQSB0cmlwbGUgaXMgYSBzcGVjaWZpYyBmb3JtYXQgZm9yIHNwZWNpZnlpbmcgYSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuICogVHJpcGxlcyBtYXkgYmUgcmVmZXJyZWQgdG8gYXMgYSB0YXJnZXQgdHJpcGxlIHdoaWNoIGlzIHRoZSBhcmNoaXRlY3R1cmUgZm9yIHRoZSBhcnRpZmFjdCBwcm9kdWNlZCwgYW5kIHRoZSBob3N0IHRyaXBsZSB3aGljaCBpcyB0aGUgYXJjaGl0ZWN0dXJlIHRoYXQgdGhlIGNvbXBpbGVyIGlzIHJ1bm5pbmcgb24uXG4gKiBUaGUgZ2VuZXJhbCBmb3JtYXQgb2YgdGhlIHRyaXBsZSBpcyBgPGFyY2g+PHN1Yj4tPHZlbmRvcj4tPHN5cz4tPGFiaT5gIHdoZXJlOlxuICogICAtIGBhcmNoYCA9IFRoZSBiYXNlIENQVSBhcmNoaXRlY3R1cmUsIGZvciBleGFtcGxlIGB4ODZfNjRgLCBgaTY4NmAsIGBhcm1gLCBgdGh1bWJgLCBgbWlwc2AsIGV0Yy5cbiAqICAgLSBgc3ViYCA9IFRoZSBDUFUgc3ViLWFyY2hpdGVjdHVyZSwgZm9yIGV4YW1wbGUgYGFybWAgaGFzIGB2N2AsIGB2N3NgLCBgdjV0ZWAsIGV0Yy5cbiAqICAgLSBgdmVuZG9yYCA9IFRoZSB2ZW5kb3IsIGZvciBleGFtcGxlIGB1bmtub3duYCwgYGFwcGxlYCwgYHBjYCwgYG52aWRpYWAsIGV0Yy5cbiAqICAgLSBgc3lzYCA9IFRoZSBzeXN0ZW0gbmFtZSwgZm9yIGV4YW1wbGUgYGxpbnV4YCwgYHdpbmRvd3NgLCBgZGFyd2luYCwgZXRjLiBub25lIGlzIHR5cGljYWxseSB1c2VkIGZvciBiYXJlLW1ldGFsIHdpdGhvdXQgYW4gT1MuXG4gKiAgIC0gYGFiaWAgPSBUaGUgQUJJLCBmb3IgZXhhbXBsZSBgZ251YCwgYGFuZHJvaWRgLCBgZWFiaWAsIGV0Yy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVHJpcGxlKHJhd1RyaXBsZTogc3RyaW5nKTogVGFyZ2V0IHtcbiAgaWYgKFxuICAgIHJhd1RyaXBsZSA9PT0gJ3dhc20zMi13YXNpJyB8fFxuICAgIHJhd1RyaXBsZSA9PT0gJ3dhc20zMi13YXNpLXByZXZpZXcxLXRocmVhZHMnIHx8XG4gICAgcmF3VHJpcGxlLnN0YXJ0c1dpdGgoJ3dhc20zMi13YXNpcCcpXG4gICkge1xuICAgIHJldHVybiB7XG4gICAgICB0cmlwbGU6IHJhd1RyaXBsZSxcbiAgICAgIHBsYXRmb3JtQXJjaEFCSTogJ3dhc20zMi13YXNpJyxcbiAgICAgIHBsYXRmb3JtOiAnd2FzaScsXG4gICAgICBhcmNoOiAnd2FzbTMyJyxcbiAgICAgIGFiaTogJ3dhc2knLFxuICAgIH1cbiAgfVxuICBjb25zdCB0cmlwbGUgPSByYXdUcmlwbGUuZW5kc1dpdGgoJ2VhYmknKVxuICAgID8gYCR7cmF3VHJpcGxlLnNsaWNlKDAsIC00KX0tZWFiaWBcbiAgICA6IHJhd1RyaXBsZVxuICBjb25zdCB0cmlwbGVzID0gdHJpcGxlLnNwbGl0KCctJylcbiAgbGV0IGNwdTogc3RyaW5nXG4gIGxldCBzeXM6IHN0cmluZ1xuICBsZXQgYWJpOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICBpZiAodHJpcGxlcy5sZW5ndGggPT09IDIpIHtcbiAgICAvLyBhYXJjaDY0LWZ1Y2hzaWFcbiAgICAvLyBeIGNwdSAgIF4gc3lzXG4gICAgO1tjcHUsIHN5c10gPSB0cmlwbGVzXG4gIH0gZWxzZSB7XG4gICAgLy8gYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2xcbiAgICAvLyBeIGNwdSAgIF52ZW5kb3IgXiBzeXMgXiBhYmlcbiAgICAvLyBhYXJjaDY0LWFwcGxlLWRhcndpblxuICAgIC8vIF4gY3B1ICAgICAgICAgXiBzeXMgIChhYmkgaXMgTm9uZSlcbiAgICA7W2NwdSwgLCBzeXMsIGFiaSA9IG51bGxdID0gdHJpcGxlc1xuICB9XG5cbiAgaWYgKGFiaSAmJiBTVUJfU1lTVEVNUy5oYXMoYWJpKSkge1xuICAgIHN5cyA9IGFiaVxuICAgIGFiaSA9IG51bGxcbiAgfVxuICBjb25zdCBwbGF0Zm9ybSA9IFN5c1RvTm9kZVBsYXRmb3JtW3N5c10gPz8gKHN5cyBhcyBQbGF0Zm9ybSlcbiAgY29uc3QgYXJjaCA9IENwdVRvTm9kZUFyY2hbY3B1XSA/PyAoY3B1IGFzIE5vZGVKU0FyY2gpXG5cbiAgcmV0dXJuIHtcbiAgICB0cmlwbGU6IHJhd1RyaXBsZSxcbiAgICBwbGF0Zm9ybUFyY2hBQkk6IGFiaSA/IGAke3BsYXRmb3JtfS0ke2FyY2h9LSR7YWJpfWAgOiBgJHtwbGF0Zm9ybX0tJHthcmNofWAsXG4gICAgcGxhdGZvcm0sXG4gICAgYXJjaCxcbiAgICBhYmksXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN5c3RlbURlZmF1bHRUYXJnZXQoKTogVGFyZ2V0IHtcbiAgY29uc3QgaG9zdCA9IGV4ZWNTeW5jKGBydXN0YyAtdlZgLCB7XG4gICAgZW52OiBwcm9jZXNzLmVudixcbiAgfSlcbiAgICAudG9TdHJpbmcoJ3V0ZjgnKVxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAuZmluZCgobGluZSkgPT4gbGluZS5zdGFydHNXaXRoKCdob3N0OiAnKSlcbiAgY29uc3QgdHJpcGxlID0gaG9zdD8uc2xpY2UoJ2hvc3Q6ICcubGVuZ3RoKVxuICBpZiAoIXRyaXBsZSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYENhbiBub3QgcGFyc2UgdGFyZ2V0IHRyaXBsZSBmcm9tIGhvc3RgKVxuICB9XG4gIHJldHVybiBwYXJzZVRyaXBsZSh0cmlwbGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYXJnZXRMaW5rZXIodGFyZ2V0OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gVEFSR0VUX0xJTktFUlt0YXJnZXRdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YXJnZXRUb0VudlZhcih0YXJnZXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0YXJnZXQucmVwbGFjZSgvLS9nLCAnXycpLnRvVXBwZXJDYXNlKClcbn1cbiIsImV4cG9ydCBlbnVtIE5hcGlWZXJzaW9uIHtcbiAgTmFwaTEgPSAxLFxuICBOYXBpMixcbiAgTmFwaTMsXG4gIE5hcGk0LFxuICBOYXBpNSxcbiAgTmFwaTYsXG4gIE5hcGk3LFxuICBOYXBpOCxcbiAgTmFwaTksXG59XG5cbi8vLyBiZWNhdXNlIG5vZGUgc3VwcG9ydCBuZXcgbmFwaSB2ZXJzaW9uIGluIHNvbWUgbWlub3IgdmVyc2lvbiB1cGRhdGVzLCBzbyB3ZSBtaWdodCBtZWV0IHN1Y2ggc2l0dWF0aW9uOlxuLy8vIGBub2RlIHYxMC4yMC4wYCBzdXBwb3J0cyBgbmFwaTVgIGFuZCBgbmFwaTZgLCBidXQgYG5vZGUgdjEyLjAuMGAgb25seSBzdXBwb3J0IGBuYXBpNGAsXG4vLy8gYnkgd2hpY2gsIHdlIGNhbiBub3QgdGVsbCBkaXJlY3RseSBuYXBpIHZlcnNpb24gc3VwcG9ydGxlc3MgZnJvbSBub2RlIHZlcnNpb24gZGlyZWN0bHkuXG5jb25zdCBOQVBJX1ZFUlNJT05fTUFUUklYID0gbmV3IE1hcDxOYXBpVmVyc2lvbiwgc3RyaW5nPihbXG4gIFtOYXBpVmVyc2lvbi5OYXBpMSwgJzguNi4wIHwgOS4wLjAgfCAxMC4wLjAnXSxcbiAgW05hcGlWZXJzaW9uLk5hcGkyLCAnOC4xMC4wIHwgOS4zLjAgfCAxMC4wLjAnXSxcbiAgW05hcGlWZXJzaW9uLk5hcGkzLCAnNi4xNC4yIHwgOC4xMS4yIHwgOS4xMS4wIHwgMTAuMC4wJ10sXG4gIFtOYXBpVmVyc2lvbi5OYXBpNCwgJzEwLjE2LjAgfCAxMS44LjAgfCAxMi4wLjAnXSxcbiAgW05hcGlWZXJzaW9uLk5hcGk1LCAnMTAuMTcuMCB8IDEyLjExLjAgfCAxMy4wLjAnXSxcbiAgW05hcGlWZXJzaW9uLk5hcGk2LCAnMTAuMjAuMCB8IDEyLjE3LjAgfCAxNC4wLjAnXSxcbiAgW05hcGlWZXJzaW9uLk5hcGk3LCAnMTAuMjMuMCB8IDEyLjE5LjAgfCAxNC4xMi4wIHwgMTUuMC4wJ10sXG4gIFtOYXBpVmVyc2lvbi5OYXBpOCwgJzEyLjIyLjAgfCAxNC4xNy4wIHwgMTUuMTIuMCB8IDE2LjAuMCddLFxuICBbTmFwaVZlcnNpb24uTmFwaTksICcxOC4xNy4wIHwgMjAuMy4wIHwgMjEuMS4wJ10sXG5dKVxuXG5pbnRlcmZhY2UgTm9kZVZlcnNpb24ge1xuICBtYWpvcjogbnVtYmVyXG4gIG1pbm9yOiBudW1iZXJcbiAgcGF0Y2g6IG51bWJlclxufVxuXG5mdW5jdGlvbiBwYXJzZU5vZGVWZXJzaW9uKHY6IHN0cmluZyk6IE5vZGVWZXJzaW9uIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHYubWF0Y2goL3Y/KFswLTldKylcXC4oWzAtOV0rKVxcLihbMC05XSspL2kpXG5cbiAgaWYgKCFtYXRjaGVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG5vZGUgdmVyc2lvbiBudW1iZXI6ICcgKyB2KVxuICB9XG5cbiAgY29uc3QgWywgbWFqb3IsIG1pbm9yLCBwYXRjaF0gPSBtYXRjaGVzXG5cbiAgcmV0dXJuIHtcbiAgICBtYWpvcjogcGFyc2VJbnQobWFqb3IpLFxuICAgIG1pbm9yOiBwYXJzZUludChtaW5vciksXG4gICAgcGF0Y2g6IHBhcnNlSW50KHBhdGNoKSxcbiAgfVxufVxuXG5mdW5jdGlvbiByZXF1aXJlZE5vZGVWZXJzaW9ucyhuYXBpVmVyc2lvbjogTmFwaVZlcnNpb24pOiBOb2RlVmVyc2lvbltdIHtcbiAgY29uc3QgcmVxdWlyZW1lbnQgPSBOQVBJX1ZFUlNJT05fTUFUUklYLmdldChuYXBpVmVyc2lvbilcblxuICBpZiAoIXJlcXVpcmVtZW50KSB7XG4gICAgcmV0dXJuIFtwYXJzZU5vZGVWZXJzaW9uKCcxMC4wLjAnKV1cbiAgfVxuXG4gIHJldHVybiByZXF1aXJlbWVudC5zcGxpdCgnfCcpLm1hcChwYXJzZU5vZGVWZXJzaW9uKVxufVxuXG5mdW5jdGlvbiB0b0VuZ2luZVJlcXVpcmVtZW50KHZlcnNpb25zOiBOb2RlVmVyc2lvbltdKTogc3RyaW5nIHtcbiAgY29uc3QgcmVxdWlyZW1lbnRzOiBzdHJpbmdbXSA9IFtdXG4gIHZlcnNpb25zLmZvckVhY2goKHYsIGkpID0+IHtcbiAgICBsZXQgcmVxID0gJydcbiAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgY29uc3QgbGFzdFZlcnNpb24gPSB2ZXJzaW9uc1tpIC0gMV1cbiAgICAgIHJlcSArPSBgPCAke2xhc3RWZXJzaW9uLm1ham9yICsgMX1gXG4gICAgfVxuXG4gICAgcmVxICs9IGAke2kgPT09IDAgPyAnJyA6ICcgfHwgJ30+PSAke3YubWFqb3J9LiR7di5taW5vcn0uJHt2LnBhdGNofWBcbiAgICByZXF1aXJlbWVudHMucHVzaChyZXEpXG4gIH0pXG5cbiAgcmV0dXJuIHJlcXVpcmVtZW50cy5qb2luKCcgJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hcGlFbmdpbmVSZXF1aXJlbWVudChuYXBpVmVyc2lvbjogTmFwaVZlcnNpb24pOiBzdHJpbmcge1xuICByZXR1cm4gdG9FbmdpbmVSZXF1aXJlbWVudChyZXF1aXJlZE5vZGVWZXJzaW9ucyhuYXBpVmVyc2lvbikpXG59XG4iLCJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCBmcyBmcm9tICdub2RlOmZzJ1xuXG5leHBvcnQgdHlwZSBDcmF0ZVRhcmdldEtpbmQgPVxuICB8ICdiaW4nXG4gIHwgJ2V4YW1wbGUnXG4gIHwgJ3Rlc3QnXG4gIHwgJ2JlbmNoJ1xuICB8ICdsaWInXG4gIHwgJ3JsaWInXG4gIHwgJ2NkeWxpYidcbiAgfCAnY3VzdG9tLWJ1aWxkJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENyYXRlVGFyZ2V0IHtcbiAgbmFtZTogc3RyaW5nXG4gIGtpbmQ6IENyYXRlVGFyZ2V0S2luZFtdXG4gIGNyYXRlX3R5cGVzOiBDcmF0ZVRhcmdldEtpbmRbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyYXRlIHtcbiAgaWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgc3JjX3BhdGg6IHN0cmluZ1xuICB2ZXJzaW9uOiBzdHJpbmdcbiAgZWRpdGlvbjogc3RyaW5nXG4gIHRhcmdldHM6IENyYXRlVGFyZ2V0W11cbiAgZmVhdHVyZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPlxuICBtYW5pZmVzdF9wYXRoOiBzdHJpbmdcbiAgZGVwZW5kZW5jaWVzOiBBcnJheTx7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgc291cmNlOiBzdHJpbmdcbiAgICByZXE6IHN0cmluZ1xuICAgIGtpbmQ6IHN0cmluZyB8IG51bGxcbiAgICByZW5hbWU6IHN0cmluZyB8IG51bGxcbiAgICBvcHRpb25hbDogYm9vbGVhblxuICAgIHVzZXNfZGVmYXVsdF9mZWF0dXJlczogYm9vbGVhblxuICAgIGZlYXR1cmVzOiBzdHJpbmdbXVxuICAgIHRhcmdldDogc3RyaW5nIHwgbnVsbFxuICAgIHJlZ2lzdHJ5OiBzdHJpbmcgfCBudWxsXG4gIH0+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZ29Xb3Jrc3BhY2VNZXRhZGF0YSB7XG4gIHZlcnNpb246IG51bWJlclxuICBwYWNrYWdlczogQ3JhdGVbXVxuICB3b3Jrc3BhY2VfbWVtYmVyczogc3RyaW5nW11cbiAgdGFyZ2V0X2RpcmVjdG9yeTogc3RyaW5nXG4gIHdvcmtzcGFjZV9yb290OiBzdHJpbmdcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlTWV0YWRhdGEobWFuaWZlc3RQYXRoOiBzdHJpbmcpIHtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKG1hbmlmZXN0UGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGNyYXRlIGZvdW5kIGluIG1hbmlmZXN0OiAke21hbmlmZXN0UGF0aH1gKVxuICB9XG5cbiAgY29uc3QgY2hpbGRQcm9jZXNzID0gc3Bhd24oXG4gICAgJ2NhcmdvJyxcbiAgICBbJ21ldGFkYXRhJywgJy0tbWFuaWZlc3QtcGF0aCcsIG1hbmlmZXN0UGF0aCwgJy0tZm9ybWF0LXZlcnNpb24nLCAnMSddLFxuICAgIHsgc3RkaW86ICdwaXBlJyB9LFxuICApXG5cbiAgbGV0IHN0ZG91dCA9ICcnXG4gIGxldCBzdGRlcnIgPSAnJ1xuICBsZXQgc3RhdHVzID0gMFxuICBsZXQgZXJyb3IgPSBudWxsXG5cbiAgY2hpbGRQcm9jZXNzLnN0ZG91dC5vbignZGF0YScsIChkYXRhKSA9PiB7XG4gICAgc3Rkb3V0ICs9IGRhdGFcbiAgfSlcblxuICBjaGlsZFByb2Nlc3Muc3RkZXJyLm9uKCdkYXRhJywgKGRhdGEpID0+IHtcbiAgICBzdGRlcnIgKz0gZGF0YVxuICB9KVxuXG4gIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgY2hpbGRQcm9jZXNzLm9uKCdjbG9zZScsIChjb2RlKSA9PiB7XG4gICAgICBzdGF0dXMgPSBjb2RlID8/IDBcbiAgICAgIHJlc29sdmUoKVxuICAgIH0pXG4gIH0pXG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjYXJnbyBtZXRhZGF0YSBmYWlsZWQgdG8gcnVuJywgeyBjYXVzZTogZXJyb3IgfSlcbiAgfVxuICBpZiAoc3RhdHVzICE9PSAwKSB7XG4gICAgY29uc3Qgc2ltcGxlTWVzc2FnZSA9IGBjYXJnbyBtZXRhZGF0YSBleGl0ZWQgd2l0aCBjb2RlICR7c3RhdHVzfWBcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7c2ltcGxlTWVzc2FnZX0gYW5kIGVycm9yIG1lc3NhZ2U6XFxuXFxuJHtzdGRlcnJ9YCwge1xuICAgICAgY2F1c2U6IG5ldyBFcnJvcihzaW1wbGVNZXNzYWdlKSxcbiAgICB9KVxuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzdGRvdXQpIGFzIENhcmdvV29ya3NwYWNlTWV0YWRhdGFcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHBhcnNlIGNhcmdvIG1ldGFkYXRhIEpTT04nLCB7IGNhdXNlOiBlIH0pXG4gIH1cbn1cbiIsImltcG9ydCB7IHVuZGVybGluZSwgeWVsbG93IH0gZnJvbSAnY29sb3JldHRlJ1xuaW1wb3J0IHsgbWVyZ2UsIG9taXQgfSBmcm9tICdlcy10b29sa2l0J1xuXG5pbXBvcnQgeyBmaWxlRXhpc3RzLCByZWFkRmlsZUFzeW5jIH0gZnJvbSAnLi9taXNjLmpzJ1xuaW1wb3J0IHsgREVGQVVMVF9UQVJHRVRTLCBwYXJzZVRyaXBsZSwgdHlwZSBUYXJnZXQgfSBmcm9tICcuL3RhcmdldC5qcydcblxuZXhwb3J0IHR5cGUgVmFsdWVPZkNvbnN0QXJyYXk8VD4gPSBUW0V4Y2x1ZGU8a2V5b2YgVCwga2V5b2YgQXJyYXk8YW55Pj5dXG5cbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRQYWNrYWdlTWFuYWdlcnMgPSBbJ3lhcm4nLCAncG5wbSddIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkVGVzdEZyYW1ld29ya3MgPSBbJ2F2YSddIGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRlZFBhY2thZ2VNYW5hZ2VyID0gVmFsdWVPZkNvbnN0QXJyYXk8XG4gIHR5cGVvZiBTdXBwb3J0ZWRQYWNrYWdlTWFuYWdlcnNcbj5cbmV4cG9ydCB0eXBlIFN1cHBvcnRlZFRlc3RGcmFtZXdvcmsgPSBWYWx1ZU9mQ29uc3RBcnJheTxcbiAgdHlwZW9mIFN1cHBvcnRlZFRlc3RGcmFtZXdvcmtzXG4+XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlck5hcGlDb25maWcge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgYmluYXJ5IHRvIGJlIGdlbmVyYXRlZCwgZGVmYXVsdCB0byBgaW5kZXhgXG4gICAqL1xuICBiaW5hcnlOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBucG0gcGFja2FnZSwgZGVmYXVsdCB0byB0aGUgbmFtZSBvZiByb290IHBhY2thZ2UuanNvbiBuYW1lXG4gICAqXG4gICAqIEFsd2F5cyBnaXZlbiBgQHNjb3BlL3BrZ2AgYW5kIGFyY2ggc3VmZml4IHdpbGwgYmUgYXBwZW5kZWQgbGlrZSBgQHNjb3BlL3BrZy1saW51eC1nbnUteDY0YFxuICAgKi9cbiAgcGFja2FnZU5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEFsbCB0YXJnZXRzIHRoZSBjcmF0ZSB3aWxsIGJlIGNvbXBpbGVkIGZvclxuICAgKi9cbiAgdGFyZ2V0cz86IHN0cmluZ1tdXG5cbiAgLyoqXG4gICAqIFRoZSBucG0gY2xpZW50IHByb2plY3QgdXNlcy5cbiAgICovXG4gIG5wbUNsaWVudD86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGdlbmVyYXRlIGNvbnN0IGVudW0gZm9yIHR5cGVzY3JpcHQgYmluZGluZ3NcbiAgICovXG4gIGNvbnN0RW51bT86IGJvb2xlYW5cblxuICAvKipcbiAgICogZHRzIGhlYWRlciBwcmVwZW5kIHRvIHRoZSBnZW5lcmF0ZWQgZHRzIGZpbGVcbiAgICovXG4gIGR0c0hlYWRlcj86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBkdHMgaGVhZGVyIGZpbGUgcGF0aCB0byBiZSBwcmVwZW5kZWQgdG8gdGhlIGdlbmVyYXRlZCBkdHMgZmlsZVxuICAgKiBpZiBib3RoIGR0c0hlYWRlciBhbmQgZHRzSGVhZGVyRmlsZSBhcmUgcHJvdmlkZWQsIGR0c0hlYWRlckZpbGUgd2lsbCBiZSB1c2VkXG4gICAqL1xuICBkdHNIZWFkZXJGaWxlPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIHdhc20gY29tcGlsYXRpb24gb3B0aW9uc1xuICAgKi9cbiAgd2FzbT86IHtcbiAgICAvKipcbiAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYkFzc2VtYmx5L0phdmFTY3JpcHRfaW50ZXJmYWNlL01lbW9yeVxuICAgICAqIEBkZWZhdWx0IDQwMDAgcGFnZXMgKDI1Nk1pQilcbiAgICAgKi9cbiAgICBpbml0aWFsTWVtb3J5PzogbnVtYmVyXG4gICAgLyoqXG4gICAgICogQGRlZmF1bHQgNjU1MzYgcGFnZXMgKDRHaUIpXG4gICAgICovXG4gICAgbWF4aW11bU1lbW9yeT86IG51bWJlclxuXG4gICAgLyoqXG4gICAgICogQnJvd3NlciB3YXNtIGJpbmRpbmcgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgIGJyb3dzZXI6IHtcbiAgICAgIC8qKlxuICAgICAgICogV2hldGhlciB0byB1c2UgZnMgbW9kdWxlIGluIGJyb3dzZXJcbiAgICAgICAqL1xuICAgICAgZnM/OiBib29sZWFuXG4gICAgICAvKipcbiAgICAgICAqIFdoZXRoZXIgdG8gaW5pdGlhbGl6ZSB3YXNtIGFzeW5jaHJvbm91c2x5XG4gICAgICAgKi9cbiAgICAgIGFzeW5jSW5pdD86IGJvb2xlYW5cbiAgICAgIC8qKlxuICAgICAgICogV2hldGhlciB0byBpbmplY3QgYGJ1ZmZlcmAgdG8gZW1uYXBpIGNvbnRleHRcbiAgICAgICAqL1xuICAgICAgYnVmZmVyPzogYm9vbGVhblxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBiaW5hcnlOYW1lIGluc3RlYWRcbiAgICovXG4gIG5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBwYWNrYWdlTmFtZSBpbnN0ZWFkXG4gICAqL1xuICBwYWNrYWdlPzoge1xuICAgIG5hbWU/OiBzdHJpbmdcbiAgfVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHRhcmdldHMgaW5zdGVhZFxuICAgKi9cbiAgdHJpcGxlcz86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGVuYWJsZSBkZWZhdWx0IHRhcmdldHNcbiAgICAgKi9cbiAgICBkZWZhdWx0czogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIEFkZGl0aW9uYWwgdGFyZ2V0cyB0byBiZSBjb21waWxlZCBmb3JcbiAgICAgKi9cbiAgICBhZGRpdGlvbmFsPzogc3RyaW5nW11cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vblBhY2thZ2VKc29uRmllbGRzIHtcbiAgbmFtZTogc3RyaW5nXG4gIHZlcnNpb246IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICBrZXl3b3Jkcz86IHN0cmluZ1tdXG4gIGF1dGhvcj86IHN0cmluZ1xuICBhdXRob3JzPzogc3RyaW5nW11cbiAgbGljZW5zZT86IHN0cmluZ1xuICBjcHU/OiBzdHJpbmdbXVxuICBvcz86IHN0cmluZ1tdXG4gIGxpYmM/OiBzdHJpbmdbXVxuICBmaWxlcz86IHN0cmluZ1tdXG4gIHJlcG9zaXRvcnk/OiBhbnlcbiAgaG9tZXBhZ2U/OiBhbnlcbiAgZW5naW5lcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgcHVibGlzaENvbmZpZz86IGFueVxuICBidWdzPzogYW55XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBuYXBpPzogVXNlck5hcGlDb25maWdcbiAgdHlwZT86ICdtb2R1bGUnIHwgJ2NvbW1vbmpzJ1xuICBzY3JpcHRzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuXG4gIC8vIG1vZHVsZXNcbiAgbWFpbj86IHN0cmluZ1xuICBtb2R1bGU/OiBzdHJpbmdcbiAgdHlwZXM/OiBzdHJpbmdcbiAgYnJvd3Nlcj86IHN0cmluZ1xuICBleHBvcnRzPzogYW55XG5cbiAgZGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICBkZXZEZXBlbmRlbmNpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG5cbiAgYXZhPzoge1xuICAgIHRpbWVvdXQ/OiBzdHJpbmdcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBOYXBpQ29uZmlnID0gUmVxdWlyZWQ8XG4gIFBpY2s8VXNlck5hcGlDb25maWcsICdiaW5hcnlOYW1lJyB8ICdwYWNrYWdlTmFtZScgfCAnbnBtQ2xpZW50Jz5cbj4gJlxuICBQaWNrPFVzZXJOYXBpQ29uZmlnLCAnd2FzbScgfCAnZHRzSGVhZGVyJyB8ICdkdHNIZWFkZXJGaWxlJyB8ICdjb25zdEVudW0nPiAmIHtcbiAgICB0YXJnZXRzOiBUYXJnZXRbXVxuICAgIHBhY2thZ2VKc29uOiBDb21tb25QYWNrYWdlSnNvbkZpZWxkc1xuICB9XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkTmFwaUNvbmZpZyhcbiAgcGF0aDogc3RyaW5nLFxuICBjb25maWdQYXRoPzogc3RyaW5nLFxuKTogUHJvbWlzZTxOYXBpQ29uZmlnPiB7XG4gIGlmIChjb25maWdQYXRoICYmICEoYXdhaXQgZmlsZUV4aXN0cyhjb25maWdQYXRoKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5BUEktUlMgY29uZmlnIG5vdCBmb3VuZCBhdCAke2NvbmZpZ1BhdGh9YClcbiAgfVxuICBpZiAoIShhd2FpdCBmaWxlRXhpc3RzKHBhdGgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgcGFja2FnZS5qc29uIG5vdCBmb3VuZCBhdCAke3BhdGh9YClcbiAgfVxuICAvLyBNYXkgc3VwcG9ydCBtdWx0aXBsZSBjb25maWcgc291cmNlcyBsYXRlciBvbi5cbiAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlQXN5bmMocGF0aCwgJ3V0ZjgnKVxuICBsZXQgcGtnSnNvblxuICB0cnkge1xuICAgIHBrZ0pzb24gPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIENvbW1vblBhY2thZ2VKc29uRmllbGRzXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBwYWNrYWdlLmpzb24gYXQgJHtwYXRofWAsIHtcbiAgICAgIGNhdXNlOiBlLFxuICAgIH0pXG4gIH1cblxuICBsZXQgc2VwYXJhdGVkQ29uZmlnOiBVc2VyTmFwaUNvbmZpZyB8IHVuZGVmaW5lZFxuICBpZiAoY29uZmlnUGF0aCkge1xuICAgIGNvbnN0IGNvbmZpZ0NvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKGNvbmZpZ1BhdGgsICd1dGY4JylcbiAgICB0cnkge1xuICAgICAgc2VwYXJhdGVkQ29uZmlnID0gSlNPTi5wYXJzZShjb25maWdDb250ZW50KSBhcyBVc2VyTmFwaUNvbmZpZ1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIE5BUEktUlMgY29uZmlnIGF0ICR7Y29uZmlnUGF0aH1gLCB7XG4gICAgICAgIGNhdXNlOiBlLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCB1c2VyTmFwaUNvbmZpZyA9IHBrZ0pzb24ubmFwaSA/PyB7fVxuICBpZiAocGtnSnNvbi5uYXBpICYmIHNlcGFyYXRlZENvbmZpZykge1xuICAgIGNvbnN0IHBrZ0pzb25QYXRoID0gdW5kZXJsaW5lKHBhdGgpXG4gICAgY29uc3QgY29uZmlnUGF0aFVuZGVybGluZSA9IHVuZGVybGluZShjb25maWdQYXRoISlcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICB5ZWxsb3coXG4gICAgICAgIGBCb3RoIG5hcGkgZmllbGQgaW4gJHtwa2dKc29uUGF0aH0gYW5kIFtOQVBJLVJTIGNvbmZpZ10oJHtjb25maWdQYXRoVW5kZXJsaW5lfSkgZmlsZSBhcmUgZm91bmQsIHRoZSBOQVBJLVJTIGNvbmZpZyBmaWxlIHdpbGwgYmUgdXNlZC5gLFxuICAgICAgKSxcbiAgICApXG4gIH1cbiAgaWYgKHNlcGFyYXRlZENvbmZpZykge1xuICAgIE9iamVjdC5hc3NpZ24odXNlck5hcGlDb25maWcsIHNlcGFyYXRlZENvbmZpZylcbiAgfVxuICBjb25zdCBuYXBpQ29uZmlnOiBOYXBpQ29uZmlnID0gbWVyZ2UoXG4gICAge1xuICAgICAgYmluYXJ5TmFtZTogJ2luZGV4JyxcbiAgICAgIHBhY2thZ2VOYW1lOiBwa2dKc29uLm5hbWUsXG4gICAgICB0YXJnZXRzOiBbXSxcbiAgICAgIHBhY2thZ2VKc29uOiBwa2dKc29uLFxuICAgICAgbnBtQ2xpZW50OiAnbnBtJyxcbiAgICB9LFxuICAgIG9taXQodXNlck5hcGlDb25maWcsIFsndGFyZ2V0cyddKSxcbiAgKVxuXG4gIGxldCB0YXJnZXRzOiBzdHJpbmdbXSA9IHVzZXJOYXBpQ29uZmlnLnRhcmdldHMgPz8gW11cblxuICAvLyBjb21wYXRpYmxlIHdpdGggb2xkIGNvbmZpZ1xuICBpZiAodXNlck5hcGlDb25maWc/Lm5hbWUpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICB5ZWxsb3coXG4gICAgICAgIGBbREVQUkVDQVRFRF0gbmFwaS5uYW1lIGlzIGRlcHJlY2F0ZWQsIHVzZSBuYXBpLmJpbmFyeU5hbWUgaW5zdGVhZC5gLFxuICAgICAgKSxcbiAgICApXG4gICAgbmFwaUNvbmZpZy5iaW5hcnlOYW1lID0gdXNlck5hcGlDb25maWcubmFtZVxuICB9XG5cbiAgaWYgKCF0YXJnZXRzLmxlbmd0aCkge1xuICAgIGxldCBkZXByZWNhdGVkV2FybmVkID0gZmFsc2VcbiAgICBjb25zdCB3YXJuaW5nID0geWVsbG93KFxuICAgICAgYFtERVBSRUNBVEVEXSBuYXBpLnRyaXBsZXMgaXMgZGVwcmVjYXRlZCwgdXNlIG5hcGkudGFyZ2V0cyBpbnN0ZWFkLmAsXG4gICAgKVxuICAgIGlmICh1c2VyTmFwaUNvbmZpZy50cmlwbGVzPy5kZWZhdWx0cykge1xuICAgICAgZGVwcmVjYXRlZFdhcm5lZCA9IHRydWVcbiAgICAgIGNvbnNvbGUud2Fybih3YXJuaW5nKVxuICAgICAgdGFyZ2V0cyA9IHRhcmdldHMuY29uY2F0KERFRkFVTFRfVEFSR0VUUylcbiAgICB9XG5cbiAgICBpZiAodXNlck5hcGlDb25maWcudHJpcGxlcz8uYWRkaXRpb25hbD8ubGVuZ3RoKSB7XG4gICAgICB0YXJnZXRzID0gdGFyZ2V0cy5jb25jYXQodXNlck5hcGlDb25maWcudHJpcGxlcy5hZGRpdGlvbmFsKVxuICAgICAgaWYgKCFkZXByZWNhdGVkV2FybmVkKSB7XG4gICAgICAgIGNvbnNvbGUud2Fybih3YXJuaW5nKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGZpbmQgZHVwbGljYXRlIHRhcmdldHNcbiAgY29uc3QgdW5pcXVlVGFyZ2V0cyA9IG5ldyBTZXQodGFyZ2V0cylcbiAgaWYgKHVuaXF1ZVRhcmdldHMuc2l6ZSAhPT0gdGFyZ2V0cy5sZW5ndGgpIHtcbiAgICBjb25zdCBkdXBsaWNhdGVUYXJnZXQgPSB0YXJnZXRzLmZpbmQoXG4gICAgICAodGFyZ2V0LCBpbmRleCkgPT4gdGFyZ2V0cy5pbmRleE9mKHRhcmdldCkgIT09IGluZGV4LFxuICAgIClcbiAgICB0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSB0YXJnZXRzIGFyZSBub3QgYWxsb3dlZDogJHtkdXBsaWNhdGVUYXJnZXR9YClcbiAgfVxuXG4gIG5hcGlDb25maWcudGFyZ2V0cyA9IHRhcmdldHMubWFwKHBhcnNlVHJpcGxlKVxuXG4gIHJldHVybiBuYXBpQ29uZmlnXG59XG4iLCJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcblxuaW1wb3J0IHsgZGVidWcgfSBmcm9tICcuL2xvZy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHRyeUluc3RhbGxDYXJnb0JpbmFyeShuYW1lOiBzdHJpbmcsIGJpbjogc3RyaW5nKSB7XG4gIGlmIChkZXRlY3RDYXJnb0JpbmFyeShiaW4pKSB7XG4gICAgZGVidWcoJ0NhcmdvIGJpbmFyeSBhbHJlYWR5IGluc3RhbGxlZDogJXMnLCBuYW1lKVxuICAgIHJldHVyblxuICB9XG5cbiAgdHJ5IHtcbiAgICBkZWJ1ZygnSW5zdGFsbGluZyBjYXJnbyBiaW5hcnk6ICVzJywgbmFtZSlcbiAgICBleGVjU3luYyhgY2FyZ28gaW5zdGFsbCAke25hbWV9YCwge1xuICAgICAgc3RkaW86ICdpbmhlcml0JyxcbiAgICB9KVxuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gaW5zdGFsbCBjYXJnbyBiaW5hcnk6ICR7bmFtZX1gLCB7XG4gICAgICBjYXVzZTogZSxcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGRldGVjdENhcmdvQmluYXJ5KGJpbjogc3RyaW5nKSB7XG4gIGRlYnVnKCdEZXRlY3RpbmcgY2FyZ28gYmluYXJ5OiAlcycsIGJpbilcbiAgdHJ5IHtcbiAgICBleGVjU3luYyhgY2FyZ28gaGVscCAke2Jpbn1gLCB7XG4gICAgICBzdGRpbzogJ2lnbm9yZScsXG4gICAgfSlcbiAgICBkZWJ1ZygnQ2FyZ28gYmluYXJ5IGRldGVjdGVkOiAlcycsIGJpbilcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIHtcbiAgICBkZWJ1ZygnQ2FyZ28gYmluYXJ5IG5vdCBkZXRlY3RlZDogJXMnLCBiaW4pXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cbiIsImltcG9ydCB7IHNvcnRCeSB9IGZyb20gJ2VzLXRvb2xraXQnXG5cbmltcG9ydCB7IHJlYWRGaWxlQXN5bmMgfSBmcm9tICcuL21pc2MuanMnXG5cbmNvbnN0IFRPUF9MRVZFTF9OQU1FU1BBQ0UgPSAnX19UT1BfTEVWRUxfTU9EVUxFX18nXG5leHBvcnQgY29uc3QgREVGQVVMVF9UWVBFX0RFRl9IRUFERVIgPSBgLyogYXV0by1nZW5lcmF0ZWQgYnkgTkFQSS1SUyAqL1xuLyogZXNsaW50LWRpc2FibGUgKi9cbmBcblxuZW51bSBUeXBlRGVmS2luZCB7XG4gIENvbnN0ID0gJ2NvbnN0JyxcbiAgRW51bSA9ICdlbnVtJyxcbiAgU3RyaW5nRW51bSA9ICdzdHJpbmdfZW51bScsXG4gIEludGVyZmFjZSA9ICdpbnRlcmZhY2UnLFxuICBUeXBlID0gJ3R5cGUnLFxuICBGbiA9ICdmbicsXG4gIFN0cnVjdCA9ICdzdHJ1Y3QnLFxuICBFeHRlbmRzID0gJ2V4dGVuZHMnLFxuICBJbXBsID0gJ2ltcGwnLFxufVxuXG5pbnRlcmZhY2UgVHlwZURlZkxpbmUge1xuICBraW5kOiBUeXBlRGVmS2luZFxuICBuYW1lOiBzdHJpbmdcbiAgb3JpZ2luYWxfbmFtZT86IHN0cmluZ1xuICBkZWY6IHN0cmluZ1xuICBleHRlbmRzPzogc3RyaW5nXG4gIGpzX2RvYz86IHN0cmluZ1xuICBqc19tb2Q/OiBzdHJpbmdcbn1cblxuZnVuY3Rpb24gcHJldHR5UHJpbnQoXG4gIGxpbmU6IFR5cGVEZWZMaW5lLFxuICBjb25zdEVudW06IGJvb2xlYW4sXG4gIGlkZW50OiBudW1iZXIsXG4gIGFtYmllbnQgPSBmYWxzZSxcbik6IHN0cmluZyB7XG4gIGxldCBzID0gbGluZS5qc19kb2MgPz8gJydcbiAgc3dpdGNoIChsaW5lLmtpbmQpIHtcbiAgICBjYXNlIFR5cGVEZWZLaW5kLkludGVyZmFjZTpcbiAgICAgIHMgKz0gYGV4cG9ydCBpbnRlcmZhY2UgJHtsaW5lLm5hbWV9IHtcXG4ke2xpbmUuZGVmfVxcbn1gXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUeXBlRGVmS2luZC5UeXBlOlxuICAgICAgcyArPSBgZXhwb3J0IHR5cGUgJHtsaW5lLm5hbWV9ID0gXFxuJHtsaW5lLmRlZn1gXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUeXBlRGVmS2luZC5FbnVtOlxuICAgICAgY29uc3QgZW51bU5hbWUgPSBjb25zdEVudW0gPyAnY29uc3QgZW51bScgOiAnZW51bSdcbiAgICAgIHMgKz0gYCR7ZXhwb3J0RGVjbGFyZShhbWJpZW50KX0gJHtlbnVtTmFtZX0gJHtsaW5lLm5hbWV9IHtcXG4ke2xpbmUuZGVmfVxcbn1gXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUeXBlRGVmS2luZC5TdHJpbmdFbnVtOlxuICAgICAgaWYgKGNvbnN0RW51bSkge1xuICAgICAgICBzICs9IGAke2V4cG9ydERlY2xhcmUoYW1iaWVudCl9IGNvbnN0IGVudW0gJHtsaW5lLm5hbWV9IHtcXG4ke2xpbmUuZGVmfVxcbn1gXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzICs9IGBleHBvcnQgdHlwZSAke2xpbmUubmFtZX0gPSAke2xpbmUuZGVmLnJlcGxhY2VBbGwoLy4qPS9nLCAnJykucmVwbGFjZUFsbCgnLCcsICd8Jyl9O2BcbiAgICAgIH1cbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIFR5cGVEZWZLaW5kLlN0cnVjdDpcbiAgICAgIGNvbnN0IGV4dGVuZHNEZWYgPSBsaW5lLmV4dGVuZHMgPyBgIGV4dGVuZHMgJHtsaW5lLmV4dGVuZHN9YCA6ICcnXG4gICAgICBpZiAobGluZS5leHRlbmRzKSB7XG4gICAgICAgIC8vIEV4dHJhY3QgZ2VuZXJpYyBwYXJhbXMgZnJvbSBleHRlbmRzIHR5cGUgbGlrZSBJdGVyYXRvcjxULCBUUmVzdWx0LCBUTmV4dD5cbiAgICAgICAgY29uc3QgZ2VuZXJpY01hdGNoID0gbGluZS5leHRlbmRzLm1hdGNoKC9JdGVyYXRvcjwoLispPiQvKVxuICAgICAgICBpZiAoZ2VuZXJpY01hdGNoKSB7XG4gICAgICAgICAgY29uc3QgW1QsIFRSZXN1bHQsIFROZXh0XSA9IGdlbmVyaWNNYXRjaFsxXVxuICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoKHApID0+IHAudHJpbSgpKVxuICAgICAgICAgIGxpbmUuZGVmID1cbiAgICAgICAgICAgIGxpbmUuZGVmICtcbiAgICAgICAgICAgIGBcXG5uZXh0KHZhbHVlPzogJHtUTmV4dH0pOiBJdGVyYXRvclJlc3VsdDwke1R9LCAke1RSZXN1bHR9PmBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcyArPSBgJHtleHBvcnREZWNsYXJlKGFtYmllbnQpfSBjbGFzcyAke2xpbmUubmFtZX0ke2V4dGVuZHNEZWZ9IHtcXG4ke2xpbmUuZGVmfVxcbn1gXG4gICAgICBpZiAobGluZS5vcmlnaW5hbF9uYW1lICYmIGxpbmUub3JpZ2luYWxfbmFtZSAhPT0gbGluZS5uYW1lKSB7XG4gICAgICAgIHMgKz0gYFxcbmV4cG9ydCB0eXBlICR7bGluZS5vcmlnaW5hbF9uYW1lfSA9ICR7bGluZS5uYW1lfWBcbiAgICAgIH1cbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIFR5cGVEZWZLaW5kLkZuOlxuICAgICAgcyArPSBgJHtleHBvcnREZWNsYXJlKGFtYmllbnQpfSAke2xpbmUuZGVmfWBcbiAgICAgIGJyZWFrXG5cbiAgICBkZWZhdWx0OlxuICAgICAgcyArPSBsaW5lLmRlZlxuICB9XG5cbiAgcmV0dXJuIGNvcnJlY3RTdHJpbmdJZGVudChzLCBpZGVudClcbn1cblxuZnVuY3Rpb24gZXhwb3J0RGVjbGFyZShhbWJpZW50OiBib29sZWFuKTogc3RyaW5nIHtcbiAgaWYgKGFtYmllbnQpIHtcbiAgICByZXR1cm4gJ2V4cG9ydCdcbiAgfVxuXG4gIHJldHVybiAnZXhwb3J0IGRlY2xhcmUnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzVHlwZURlZihcbiAgaW50ZXJtZWRpYXRlVHlwZUZpbGU6IHN0cmluZyxcbiAgY29uc3RFbnVtOiBib29sZWFuLFxuKSB7XG4gIGNvbnN0IGV4cG9ydHM6IHN0cmluZ1tdID0gW11cbiAgY29uc3QgZGVmcyA9IGF3YWl0IHJlYWRJbnRlcm1lZGlhdGVUeXBlRmlsZShpbnRlcm1lZGlhdGVUeXBlRmlsZSlcbiAgY29uc3QgZ3JvdXBlZERlZnMgPSBwcmVwcm9jZXNzVHlwZURlZihkZWZzKVxuXG4gIGNvbnN0IGR0cyA9XG4gICAgc29ydEJ5KEFycmF5LmZyb20oZ3JvdXBlZERlZnMpLCBbKFtuYW1lc3BhY2VdKSA9PiBuYW1lc3BhY2VdKVxuICAgICAgLm1hcCgoW25hbWVzcGFjZSwgZGVmc10pID0+IHtcbiAgICAgICAgaWYgKG5hbWVzcGFjZSA9PT0gVE9QX0xFVkVMX05BTUVTUEFDRSkge1xuICAgICAgICAgIHJldHVybiBkZWZzXG4gICAgICAgICAgICAubWFwKChkZWYpID0+IHtcbiAgICAgICAgICAgICAgc3dpdGNoIChkZWYua2luZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgVHlwZURlZktpbmQuQ29uc3Q6XG4gICAgICAgICAgICAgICAgY2FzZSBUeXBlRGVmS2luZC5FbnVtOlxuICAgICAgICAgICAgICAgIGNhc2UgVHlwZURlZktpbmQuU3RyaW5nRW51bTpcbiAgICAgICAgICAgICAgICBjYXNlIFR5cGVEZWZLaW5kLkZuOlxuICAgICAgICAgICAgICAgIGNhc2UgVHlwZURlZktpbmQuU3RydWN0OiB7XG4gICAgICAgICAgICAgICAgICBleHBvcnRzLnB1c2goZGVmLm5hbWUpXG4gICAgICAgICAgICAgICAgICBpZiAoZGVmLm9yaWdpbmFsX25hbWUgJiYgZGVmLm9yaWdpbmFsX25hbWUgIT09IGRlZi5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydHMucHVzaChkZWYub3JpZ2luYWxfbmFtZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBwcmV0dHlQcmludChkZWYsIGNvbnN0RW51bSwgMClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignXFxuXFxuJylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBleHBvcnRzLnB1c2gobmFtZXNwYWNlKVxuICAgICAgICAgIGxldCBkZWNsYXJhdGlvbiA9ICcnXG4gICAgICAgICAgZGVjbGFyYXRpb24gKz0gYGV4cG9ydCBkZWNsYXJlIG5hbWVzcGFjZSAke25hbWVzcGFjZX0ge1xcbmBcbiAgICAgICAgICBmb3IgKGNvbnN0IGRlZiBvZiBkZWZzKSB7XG4gICAgICAgICAgICBkZWNsYXJhdGlvbiArPSBwcmV0dHlQcmludChkZWYsIGNvbnN0RW51bSwgMiwgdHJ1ZSkgKyAnXFxuJ1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWNsYXJhdGlvbiArPSAnfSdcbiAgICAgICAgICByZXR1cm4gZGVjbGFyYXRpb25cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5qb2luKCdcXG5cXG4nKSArICdcXG4nXG5cbiAgcmV0dXJuIHtcbiAgICBkdHMsXG4gICAgZXhwb3J0cyxcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkSW50ZXJtZWRpYXRlVHlwZUZpbGUoZmlsZTogc3RyaW5nKSB7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKGZpbGUsICd1dGY4JylcblxuICBjb25zdCBkZWZzID0gY29udGVudFxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgbGluZSA9IGxpbmUudHJpbSgpXG4gICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGxpbmUpIGFzIFR5cGVEZWZMaW5lXG4gICAgICAvLyBDb252ZXJ0IGVzY2FwZWQgbmV3bGluZXMgYmFjayB0byBhY3R1YWwgbmV3bGluZXMgaW4ganNfZG9jIGZpZWxkc1xuICAgICAgaWYgKHBhcnNlZC5qc19kb2MpIHtcbiAgICAgICAgcGFyc2VkLmpzX2RvYyA9IHBhcnNlZC5qc19kb2MucmVwbGFjZSgvXFxcXG4vZywgJ1xcbicpXG4gICAgICB9XG4gICAgICAvLyBDb252ZXJ0IGVzY2FwZWQgbmV3bGluZXMgdG8gYWN0dWFsIG5ld2xpbmVzIGluIGRlZiBmaWVsZHMgZm9yIHN0cnVjdC9jbGFzcy9pbnRlcmZhY2UvdHlwZSB0eXBlc1xuICAgICAgLy8gd2hlcmUgXFxuIHJlcHJlc2VudHMgbWV0aG9kL2ZpZWxkIHNlcGFyYXRvcnMgdGhhdCBzaG91bGQgYmUgYWN0dWFsIG5ld2xpbmVzXG4gICAgICBpZiAocGFyc2VkLmRlZikge1xuICAgICAgICBwYXJzZWQuZGVmID0gcGFyc2VkLmRlZi5yZXBsYWNlKC9cXFxcbi9nLCAnXFxuJylcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJzZWRcbiAgICB9KVxuXG4gIC8vIG1vdmUgYWxsIGBzdHJ1Y3RgIGRlZiB0byB0aGUgdmVyeSB0b3BcbiAgLy8gYW5kIG9yZGVyIHRoZSByZXN0IGFscGhhYmV0aWNhbGx5LlxuICByZXR1cm4gZGVmcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgaWYgKGEua2luZCA9PT0gVHlwZURlZktpbmQuU3RydWN0KSB7XG4gICAgICBpZiAoYi5raW5kID09PSBUeXBlRGVmS2luZC5TdHJ1Y3QpIHtcbiAgICAgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSlcbiAgICAgIH1cbiAgICAgIHJldHVybiAtMVxuICAgIH0gZWxzZSBpZiAoYi5raW5kID09PSBUeXBlRGVmS2luZC5TdHJ1Y3QpIHtcbiAgICAgIHJldHVybiAxXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBwcmVwcm9jZXNzVHlwZURlZihkZWZzOiBUeXBlRGVmTGluZVtdKTogTWFwPHN0cmluZywgVHlwZURlZkxpbmVbXT4ge1xuICBjb25zdCBuYW1lc3BhY2VHcm91cGVkID0gbmV3IE1hcDxzdHJpbmcsIFR5cGVEZWZMaW5lW10+KClcbiAgY29uc3QgY2xhc3NEZWZzID0gbmV3IE1hcDxzdHJpbmcsIFR5cGVEZWZMaW5lPigpXG5cbiAgZm9yIChjb25zdCBkZWYgb2YgZGVmcykge1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IGRlZi5qc19tb2QgPz8gVE9QX0xFVkVMX05BTUVTUEFDRVxuICAgIGlmICghbmFtZXNwYWNlR3JvdXBlZC5oYXMobmFtZXNwYWNlKSkge1xuICAgICAgbmFtZXNwYWNlR3JvdXBlZC5zZXQobmFtZXNwYWNlLCBbXSlcbiAgICB9XG5cbiAgICBjb25zdCBncm91cCA9IG5hbWVzcGFjZUdyb3VwZWQuZ2V0KG5hbWVzcGFjZSkhXG5cbiAgICBpZiAoZGVmLmtpbmQgPT09IFR5cGVEZWZLaW5kLlN0cnVjdCkge1xuICAgICAgZ3JvdXAucHVzaChkZWYpXG4gICAgICBjbGFzc0RlZnMuc2V0KGRlZi5uYW1lLCBkZWYpXG4gICAgfSBlbHNlIGlmIChkZWYua2luZCA9PT0gVHlwZURlZktpbmQuRXh0ZW5kcykge1xuICAgICAgY29uc3QgY2xhc3NEZWYgPSBjbGFzc0RlZnMuZ2V0KGRlZi5uYW1lKVxuICAgICAgaWYgKGNsYXNzRGVmKSB7XG4gICAgICAgIGNsYXNzRGVmLmV4dGVuZHMgPSBkZWYuZGVmXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkZWYua2luZCA9PT0gVHlwZURlZktpbmQuSW1wbCkge1xuICAgICAgLy8gbWVyZ2UgYGltcGxgIGludG8gY2xhc3MgZGVmaW5pdGlvblxuICAgICAgY29uc3QgY2xhc3NEZWYgPSBjbGFzc0RlZnMuZ2V0KGRlZi5uYW1lKVxuICAgICAgaWYgKGNsYXNzRGVmKSB7XG4gICAgICAgIGlmIChjbGFzc0RlZi5kZWYpIHtcbiAgICAgICAgICBjbGFzc0RlZi5kZWYgKz0gJ1xcbidcbiAgICAgICAgfVxuXG4gICAgICAgIGNsYXNzRGVmLmRlZiArPSBkZWYuZGVmXG4gICAgICAgIC8vIENvbnZlcnQgYW55IHJlbWFpbmluZyBcXG4gc2VxdWVuY2VzIGluIHRoZSBtZXJnZWQgZGVmIHRvIGFjdHVhbCBuZXdsaW5lc1xuICAgICAgICBpZiAoY2xhc3NEZWYuZGVmKSB7XG4gICAgICAgICAgY2xhc3NEZWYuZGVmID0gY2xhc3NEZWYuZGVmLnJlcGxhY2UoL1xcXFxuL2csICdcXG4nKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3VwLnB1c2goZGVmKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lc3BhY2VHcm91cGVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3JyZWN0U3RyaW5nSWRlbnQoc3JjOiBzdHJpbmcsIGlkZW50OiBudW1iZXIpOiBzdHJpbmcge1xuICBsZXQgYnJhY2tldERlcHRoID0gMFxuICBjb25zdCByZXN1bHQgPSBzcmNcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgbGluZSA9IGxpbmUudHJpbSgpXG4gICAgICBpZiAobGluZSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuICcnXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzSW5NdWx0aWxpbmVDb21tZW50ID0gbGluZS5zdGFydHNXaXRoKCcqJylcbiAgICAgIGNvbnN0IGlzQ2xvc2luZ0JyYWNrZXQgPSBsaW5lLmVuZHNXaXRoKCd9JylcbiAgICAgIGNvbnN0IGlzT3BlbmluZ0JyYWNrZXQgPSBsaW5lLmVuZHNXaXRoKCd7JylcbiAgICAgIGNvbnN0IGlzVHlwZURlY2xhcmF0aW9uID0gbGluZS5lbmRzV2l0aCgnPScpXG4gICAgICBjb25zdCBpc1R5cGVWYXJpYW50ID0gbGluZS5zdGFydHNXaXRoKCd8JylcblxuICAgICAgbGV0IHJpZ2h0SW5kZW50ID0gaWRlbnRcbiAgICAgIGlmICgoaXNPcGVuaW5nQnJhY2tldCB8fCBpc1R5cGVEZWNsYXJhdGlvbikgJiYgIWlzSW5NdWx0aWxpbmVDb21tZW50KSB7XG4gICAgICAgIGJyYWNrZXREZXB0aCArPSAxXG4gICAgICAgIHJpZ2h0SW5kZW50ICs9IChicmFja2V0RGVwdGggLSAxKSAqIDJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBpc0Nsb3NpbmdCcmFja2V0ICYmXG4gICAgICAgICAgYnJhY2tldERlcHRoID4gMCAmJlxuICAgICAgICAgICFpc0luTXVsdGlsaW5lQ29tbWVudCAmJlxuICAgICAgICAgICFpc1R5cGVWYXJpYW50XG4gICAgICAgICkge1xuICAgICAgICAgIGJyYWNrZXREZXB0aCAtPSAxXG4gICAgICAgIH1cbiAgICAgICAgcmlnaHRJbmRlbnQgKz0gYnJhY2tldERlcHRoICogMlxuICAgICAgfVxuXG4gICAgICBpZiAoaXNJbk11bHRpbGluZUNvbW1lbnQpIHtcbiAgICAgICAgcmlnaHRJbmRlbnQgKz0gMVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzID0gYCR7JyAnLnJlcGVhdChyaWdodEluZGVudCl9JHtsaW5lfWBcblxuICAgICAgcmV0dXJuIHNcbiAgICB9KVxuICAgIC5qb2luKCdcXG4nKVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiIsImltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmltcG9ydCB7IHJlYWROYXBpQ29uZmlnIH0gZnJvbSAnLi9jb25maWcuanMnXG5cbmludGVyZmFjZSBNaW5pbWFsTmFwaU9wdGlvbnMge1xuICBjd2Q6IHN0cmluZ1xuICBjb25maWdQYXRoPzogc3RyaW5nXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZENvbmZpZyhvcHRpb25zOiBNaW5pbWFsTmFwaU9wdGlvbnMpIHtcbiAgY29uc3QgcmVzb2x2ZVBhdGggPSAoLi4ucGF0aHM6IHN0cmluZ1tdKSA9PiByZXNvbHZlKG9wdGlvbnMuY3dkLCAuLi5wYXRocylcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZE5hcGlDb25maWcoXG4gICAgcmVzb2x2ZVBhdGgob3B0aW9ucy5wYWNrYWdlSnNvblBhdGggPz8gJ3BhY2thZ2UuanNvbicpLFxuICAgIG9wdGlvbnMuY29uZmlnUGF0aCA/IHJlc29sdmVQYXRoKG9wdGlvbnMuY29uZmlnUGF0aCkgOiB1bmRlZmluZWQsXG4gIClcbiAgcmV0dXJuIGNvbmZpZ1xufVxuIiwiaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSwgcGFyc2UgfSBmcm9tICdub2RlOnBhdGgnXG5cbmltcG9ydCAqIGFzIGNvbG9ycyBmcm9tICdjb2xvcmV0dGUnXG5cbmltcG9ydCB7XG4gIGFwcGx5RGVmYXVsdEFydGlmYWN0c09wdGlvbnMsXG4gIHR5cGUgQXJ0aWZhY3RzT3B0aW9ucyxcbn0gZnJvbSAnLi4vZGVmL2FydGlmYWN0cy5qcydcbmltcG9ydCB7XG4gIHJlYWROYXBpQ29uZmlnLFxuICBkZWJ1Z0ZhY3RvcnksXG4gIHJlYWRGaWxlQXN5bmMsXG4gIHdyaXRlRmlsZUFzeW5jLFxuICBVbmlBcmNoc0J5UGxhdGZvcm0sXG4gIHJlYWRkaXJBc3luYyxcbn0gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnXG5cbmNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCdhcnRpZmFjdHMnKVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29sbGVjdEFydGlmYWN0cyh1c2VyT3B0aW9uczogQXJ0aWZhY3RzT3B0aW9ucykge1xuICBjb25zdCBvcHRpb25zID0gYXBwbHlEZWZhdWx0QXJ0aWZhY3RzT3B0aW9ucyh1c2VyT3B0aW9ucylcblxuICBjb25zdCByZXNvbHZlUGF0aCA9ICguLi5wYXRoczogc3RyaW5nW10pID0+IHJlc29sdmUob3B0aW9ucy5jd2QsIC4uLnBhdGhzKVxuICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSByZXNvbHZlUGF0aChvcHRpb25zLnBhY2thZ2VKc29uUGF0aClcbiAgY29uc3QgeyB0YXJnZXRzLCBiaW5hcnlOYW1lLCBwYWNrYWdlTmFtZSB9ID0gYXdhaXQgcmVhZE5hcGlDb25maWcoXG4gICAgcGFja2FnZUpzb25QYXRoLFxuICAgIG9wdGlvbnMuY29uZmlnUGF0aCA/IHJlc29sdmVQYXRoKG9wdGlvbnMuY29uZmlnUGF0aCkgOiB1bmRlZmluZWQsXG4gIClcblxuICBjb25zdCBkaXN0RGlycyA9IHRhcmdldHMubWFwKChwbGF0Zm9ybSkgPT5cbiAgICBqb2luKG9wdGlvbnMuY3dkLCBvcHRpb25zLm5wbURpciwgcGxhdGZvcm0ucGxhdGZvcm1BcmNoQUJJKSxcbiAgKVxuXG4gIGNvbnN0IHVuaXZlcnNhbFNvdXJjZUJpbnMgPSBuZXcgU2V0KFxuICAgIHRhcmdldHNcbiAgICAgIC5maWx0ZXIoKHBsYXRmb3JtKSA9PiBwbGF0Zm9ybS5hcmNoID09PSAndW5pdmVyc2FsJylcbiAgICAgIC5mbGF0TWFwKChwKSA9PlxuICAgICAgICBVbmlBcmNoc0J5UGxhdGZvcm1bcC5wbGF0Zm9ybV0/Lm1hcCgoYSkgPT4gYCR7cC5wbGF0Zm9ybX0tJHthfWApLFxuICAgICAgKVxuICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBzdHJpbmdbXSxcbiAgKVxuXG4gIGF3YWl0IGNvbGxlY3ROb2RlQmluYXJpZXMoam9pbihvcHRpb25zLmN3ZCwgb3B0aW9ucy5vdXRwdXREaXIpKS50aGVuKFxuICAgIChvdXRwdXQpID0+XG4gICAgICBQcm9taXNlLmFsbChcbiAgICAgICAgb3V0cHV0Lm1hcChhc3luYyAoZmlsZVBhdGgpID0+IHtcbiAgICAgICAgICBkZWJ1Zy5pbmZvKGBSZWFkIFske2NvbG9ycy55ZWxsb3dCcmlnaHQoZmlsZVBhdGgpfV1gKVxuICAgICAgICAgIGNvbnN0IHNvdXJjZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKGZpbGVQYXRoKVxuICAgICAgICAgIGNvbnN0IHBhcnNlZE5hbWUgPSBwYXJzZShmaWxlUGF0aClcbiAgICAgICAgICBjb25zdCB0ZXJtcyA9IHBhcnNlZE5hbWUubmFtZS5zcGxpdCgnLicpXG4gICAgICAgICAgY29uc3QgcGxhdGZvcm1BcmNoQUJJID0gdGVybXMucG9wKCkhXG4gICAgICAgICAgY29uc3QgX2JpbmFyeU5hbWUgPSB0ZXJtcy5qb2luKCcuJylcblxuICAgICAgICAgIGlmIChfYmluYXJ5TmFtZSAhPT0gYmluYXJ5TmFtZSkge1xuICAgICAgICAgICAgZGVidWcud2FybihcbiAgICAgICAgICAgICAgYFske19iaW5hcnlOYW1lfV0gaXMgbm90IG1hdGNoZWQgd2l0aCBbJHtiaW5hcnlOYW1lfV0sIHNraXBgLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGRpciA9IGRpc3REaXJzLmZpbmQoKGRpcikgPT4gZGlyLmluY2x1ZGVzKHBsYXRmb3JtQXJjaEFCSSkpXG4gICAgICAgICAgaWYgKCFkaXIgJiYgdW5pdmVyc2FsU291cmNlQmlucy5oYXMocGxhdGZvcm1BcmNoQUJJKSkge1xuICAgICAgICAgICAgZGVidWcud2FybihcbiAgICAgICAgICAgICAgYFske3BsYXRmb3JtQXJjaEFCSX1dIGhhcyBubyBkaXN0IGRpciBidXQgaXQgaXMgc291cmNlIGJpbiBmb3IgdW5pdmVyc2FsIGFyY2gsIHNraXBgLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZGlyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGRpc3QgZGlyIGZvdW5kIGZvciAke2ZpbGVQYXRofWApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGlzdEZpbGVQYXRoID0gam9pbihkaXIsIHBhcnNlZE5hbWUuYmFzZSlcbiAgICAgICAgICBkZWJ1Zy5pbmZvKFxuICAgICAgICAgICAgYFdyaXRlIGZpbGUgY29udGVudCB0byBbJHtjb2xvcnMueWVsbG93QnJpZ2h0KGRpc3RGaWxlUGF0aCl9XWAsXG4gICAgICAgICAgKVxuICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKGRpc3RGaWxlUGF0aCwgc291cmNlQ29udGVudClcbiAgICAgICAgICBjb25zdCBkaXN0RmlsZVBhdGhMb2NhbCA9IGpvaW4oXG4gICAgICAgICAgICBwYXJzZShwYWNrYWdlSnNvblBhdGgpLmRpcixcbiAgICAgICAgICAgIHBhcnNlZE5hbWUuYmFzZSxcbiAgICAgICAgICApXG4gICAgICAgICAgZGVidWcuaW5mbyhcbiAgICAgICAgICAgIGBXcml0ZSBmaWxlIGNvbnRlbnQgdG8gWyR7Y29sb3JzLnllbGxvd0JyaWdodChkaXN0RmlsZVBhdGhMb2NhbCl9XWAsXG4gICAgICAgICAgKVxuICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKGRpc3RGaWxlUGF0aExvY2FsLCBzb3VyY2VDb250ZW50KVxuICAgICAgICB9KSxcbiAgICAgICksXG4gIClcblxuICBjb25zdCB3YXNpVGFyZ2V0ID0gdGFyZ2V0cy5maW5kKCh0KSA9PiB0LnBsYXRmb3JtID09PSAnd2FzaScpXG4gIGlmICh3YXNpVGFyZ2V0KSB7XG4gICAgY29uc3Qgd2FzaURpciA9IGpvaW4oXG4gICAgICBvcHRpb25zLmN3ZCxcbiAgICAgIG9wdGlvbnMubnBtRGlyLFxuICAgICAgd2FzaVRhcmdldC5wbGF0Zm9ybUFyY2hBQkksXG4gICAgKVxuICAgIGNvbnN0IGNqc0ZpbGUgPSBqb2luKFxuICAgICAgb3B0aW9ucy5idWlsZE91dHB1dERpciA/PyBvcHRpb25zLmN3ZCxcbiAgICAgIGAke2JpbmFyeU5hbWV9Lndhc2kuY2pzYCxcbiAgICApXG4gICAgY29uc3Qgd29ya2VyRmlsZSA9IGpvaW4oXG4gICAgICBvcHRpb25zLmJ1aWxkT3V0cHV0RGlyID8/IG9wdGlvbnMuY3dkLFxuICAgICAgYHdhc2ktd29ya2VyLm1qc2AsXG4gICAgKVxuICAgIGNvbnN0IGJyb3dzZXJFbnRyeSA9IGpvaW4oXG4gICAgICBvcHRpb25zLmJ1aWxkT3V0cHV0RGlyID8/IG9wdGlvbnMuY3dkLFxuICAgICAgYCR7YmluYXJ5TmFtZX0ud2FzaS1icm93c2VyLmpzYCxcbiAgICApXG4gICAgY29uc3QgYnJvd3NlcldvcmtlckZpbGUgPSBqb2luKFxuICAgICAgb3B0aW9ucy5idWlsZE91dHB1dERpciA/PyBvcHRpb25zLmN3ZCxcbiAgICAgIGB3YXNpLXdvcmtlci1icm93c2VyLm1qc2AsXG4gICAgKVxuICAgIGRlYnVnLmluZm8oXG4gICAgICBgTW92ZSB3YXNpIGJpbmRpbmcgZmlsZSBbJHtjb2xvcnMueWVsbG93QnJpZ2h0KFxuICAgICAgICBjanNGaWxlLFxuICAgICAgKX1dIHRvIFske2NvbG9ycy55ZWxsb3dCcmlnaHQod2FzaURpcil9XWAsXG4gICAgKVxuICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKFxuICAgICAgam9pbih3YXNpRGlyLCBgJHtiaW5hcnlOYW1lfS53YXNpLmNqc2ApLFxuICAgICAgYXdhaXQgcmVhZEZpbGVBc3luYyhjanNGaWxlKSxcbiAgICApXG4gICAgZGVidWcuaW5mbyhcbiAgICAgIGBNb3ZlIHdhc2kgd29ya2VyIGZpbGUgWyR7Y29sb3JzLnllbGxvd0JyaWdodChcbiAgICAgICAgd29ya2VyRmlsZSxcbiAgICAgICl9XSB0byBbJHtjb2xvcnMueWVsbG93QnJpZ2h0KHdhc2lEaXIpfV1gLFxuICAgIClcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgIGpvaW4od2FzaURpciwgYHdhc2ktd29ya2VyLm1qc2ApLFxuICAgICAgYXdhaXQgcmVhZEZpbGVBc3luYyh3b3JrZXJGaWxlKSxcbiAgICApXG4gICAgZGVidWcuaW5mbyhcbiAgICAgIGBNb3ZlIHdhc2kgYnJvd3NlciBlbnRyeSBmaWxlIFske2NvbG9ycy55ZWxsb3dCcmlnaHQoXG4gICAgICAgIGJyb3dzZXJFbnRyeSxcbiAgICAgICl9XSB0byBbJHtjb2xvcnMueWVsbG93QnJpZ2h0KHdhc2lEaXIpfV1gLFxuICAgIClcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgIGpvaW4od2FzaURpciwgYCR7YmluYXJ5TmFtZX0ud2FzaS1icm93c2VyLmpzYCksXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdml0ZWpzL3ZpdGUvaXNzdWVzLzg0MjdcbiAgICAgIChhd2FpdCByZWFkRmlsZUFzeW5jKGJyb3dzZXJFbnRyeSwgJ3V0ZjgnKSkucmVwbGFjZShcbiAgICAgICAgYG5ldyBVUkwoJy4vd2FzaS13b3JrZXItYnJvd3Nlci5tanMnLCBpbXBvcnQubWV0YS51cmwpYCxcbiAgICAgICAgYG5ldyBVUkwoJyR7cGFja2FnZU5hbWV9LXdhc20zMi13YXNpL3dhc2ktd29ya2VyLWJyb3dzZXIubWpzJywgaW1wb3J0Lm1ldGEudXJsKWAsXG4gICAgICApLFxuICAgIClcbiAgICBkZWJ1Zy5pbmZvKFxuICAgICAgYE1vdmUgd2FzaSBicm93c2VyIHdvcmtlciBmaWxlIFske2NvbG9ycy55ZWxsb3dCcmlnaHQoXG4gICAgICAgIGJyb3dzZXJXb3JrZXJGaWxlLFxuICAgICAgKX1dIHRvIFske2NvbG9ycy55ZWxsb3dCcmlnaHQod2FzaURpcil9XWAsXG4gICAgKVxuICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKFxuICAgICAgam9pbih3YXNpRGlyLCBgd2FzaS13b3JrZXItYnJvd3Nlci5tanNgKSxcbiAgICAgIGF3YWl0IHJlYWRGaWxlQXN5bmMoYnJvd3NlcldvcmtlckZpbGUpLFxuICAgIClcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjb2xsZWN0Tm9kZUJpbmFyaWVzKHJvb3Q6IHN0cmluZykge1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IHJlYWRkaXJBc3luYyhyb290LCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSlcbiAgY29uc3Qgbm9kZUJpbmFyaWVzID0gZmlsZXNcbiAgICAuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+XG4gICAgICAgIGZpbGUuaXNGaWxlKCkgJiZcbiAgICAgICAgKGZpbGUubmFtZS5lbmRzV2l0aCgnLm5vZGUnKSB8fCBmaWxlLm5hbWUuZW5kc1dpdGgoJy53YXNtJykpLFxuICAgIClcbiAgICAubWFwKChmaWxlKSA9PiBqb2luKHJvb3QsIGZpbGUubmFtZSkpXG5cbiAgY29uc3QgZGlycyA9IGZpbGVzLmZpbHRlcigoZmlsZSkgPT4gZmlsZS5pc0RpcmVjdG9yeSgpKVxuICBmb3IgKGNvbnN0IGRpciBvZiBkaXJzKSB7XG4gICAgaWYgKGRpci5uYW1lICE9PSAnbm9kZV9tb2R1bGVzJykge1xuICAgICAgbm9kZUJpbmFyaWVzLnB1c2goLi4uKGF3YWl0IGNvbGxlY3ROb2RlQmluYXJpZXMoam9pbihyb290LCBkaXIubmFtZSkpKSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5vZGVCaW5hcmllc1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNqc0JpbmRpbmcoXG4gIGxvY2FsTmFtZTogc3RyaW5nLFxuICBwa2dOYW1lOiBzdHJpbmcsXG4gIGlkZW50czogc3RyaW5nW10sXG4gIHBhY2thZ2VWZXJzaW9uPzogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke2JpbmRpbmdIZWFkZXJ9XG4ke2NyZWF0ZUNvbW1vbkJpbmRpbmcobG9jYWxOYW1lLCBwa2dOYW1lLCBwYWNrYWdlVmVyc2lvbil9XG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUJpbmRpbmdcbiR7aWRlbnRzXG4gIC5tYXAoKGlkZW50KSA9PiBgbW9kdWxlLmV4cG9ydHMuJHtpZGVudH0gPSBuYXRpdmVCaW5kaW5nLiR7aWRlbnR9YClcbiAgLmpvaW4oJ1xcbicpfVxuYFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRXNtQmluZGluZyhcbiAgbG9jYWxOYW1lOiBzdHJpbmcsXG4gIHBrZ05hbWU6IHN0cmluZyxcbiAgaWRlbnRzOiBzdHJpbmdbXSxcbiAgcGFja2FnZVZlcnNpb24/OiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gYCR7YmluZGluZ0hlYWRlcn1cbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tICdub2RlOm1vZHVsZSdcbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybClcbmNvbnN0IF9fZGlybmFtZSA9IG5ldyBVUkwoJy4nLCBpbXBvcnQubWV0YS51cmwpLnBhdGhuYW1lXG5cbiR7Y3JlYXRlQ29tbW9uQmluZGluZyhsb2NhbE5hbWUsIHBrZ05hbWUsIHBhY2thZ2VWZXJzaW9uKX1cbmNvbnN0IHsgJHtpZGVudHMuam9pbignLCAnKX0gfSA9IG5hdGl2ZUJpbmRpbmdcbiR7aWRlbnRzLm1hcCgoaWRlbnQpID0+IGBleHBvcnQgeyAke2lkZW50fSB9YCkuam9pbignXFxuJyl9XG5gXG59XG5cbmNvbnN0IGJpbmRpbmdIZWFkZXIgPSBgLy8gcHJldHRpZXItaWdub3JlXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gQHRzLW5vY2hlY2tcbi8qIGF1dG8tZ2VuZXJhdGVkIGJ5IE5BUEktUlMgKi9cbmBcblxuZnVuY3Rpb24gY3JlYXRlQ29tbW9uQmluZGluZyhcbiAgbG9jYWxOYW1lOiBzdHJpbmcsXG4gIHBrZ05hbWU6IHN0cmluZyxcbiAgcGFja2FnZVZlcnNpb24/OiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBmdW5jdGlvbiByZXF1aXJlVHVwbGUodHVwbGU6IHN0cmluZywgaWRlbnRTaXplID0gOCkge1xuICAgIGNvbnN0IGlkZW50TG93ID0gJyAnLnJlcGVhdChpZGVudFNpemUgLSAyKVxuICAgIGNvbnN0IGlkZW50ID0gJyAnLnJlcGVhdChpZGVudFNpemUpXG4gICAgY29uc3QgdmVyc2lvbkNoZWNrID0gcGFja2FnZVZlcnNpb25cbiAgICAgID8gYFxuJHtpZGVudExvd310cnkge1xuJHtpZGVudH1jb25zdCBiaW5kaW5nID0gcmVxdWlyZSgnJHtwa2dOYW1lfS0ke3R1cGxlfScpXG4ke2lkZW50fWNvbnN0IGJpbmRpbmdQYWNrYWdlVmVyc2lvbiA9IHJlcXVpcmUoJyR7cGtnTmFtZX0tJHt0dXBsZX0vcGFja2FnZS5qc29uJykudmVyc2lvblxuJHtpZGVudH1pZiAoYmluZGluZ1BhY2thZ2VWZXJzaW9uICE9PSAnJHtwYWNrYWdlVmVyc2lvbn0nICYmIHByb2Nlc3MuZW52Lk5BUElfUlNfRU5GT1JDRV9WRVJTSU9OX0NIRUNLICYmIHByb2Nlc3MuZW52Lk5BUElfUlNfRU5GT1JDRV9WRVJTSU9OX0NIRUNLICE9PSAnMCcpIHtcbiR7aWRlbnR9ICB0aHJvdyBuZXcgRXJyb3IoXFxgTmF0aXZlIGJpbmRpbmcgcGFja2FnZSB2ZXJzaW9uIG1pc21hdGNoLCBleHBlY3RlZCAke3BhY2thZ2VWZXJzaW9ufSBidXQgZ290IFxcJHtiaW5kaW5nUGFja2FnZVZlcnNpb259LiBZb3UgY2FuIHJlaW5zdGFsbCBkZXBlbmRlbmNpZXMgdG8gZml4IHRoaXMgaXNzdWUuXFxgKVxuJHtpZGVudH19XG4ke2lkZW50fXJldHVybiBiaW5kaW5nXG4ke2lkZW50TG93fX0gY2F0Y2ggKGUpIHtcbiR7aWRlbnR9bG9hZEVycm9ycy5wdXNoKGUpXG4ke2lkZW50TG93fX1gXG4gICAgICA6IGBcbiR7aWRlbnRMb3d9dHJ5IHtcbiR7aWRlbnR9cmV0dXJuIHJlcXVpcmUoJyR7cGtnTmFtZX0tJHt0dXBsZX0nKVxuJHtpZGVudExvd319IGNhdGNoIChlKSB7XG4ke2lkZW50fWxvYWRFcnJvcnMucHVzaChlKVxuJHtpZGVudExvd319YFxuICAgIHJldHVybiBgdHJ5IHtcbiR7aWRlbnR9cmV0dXJuIHJlcXVpcmUoJy4vJHtsb2NhbE5hbWV9LiR7dHVwbGV9Lm5vZGUnKVxuJHtpZGVudExvd319IGNhdGNoIChlKSB7XG4ke2lkZW50fWxvYWRFcnJvcnMucHVzaChlKVxuJHtpZGVudExvd319JHt2ZXJzaW9uQ2hlY2t9YFxuICB9XG5cbiAgcmV0dXJuIGBjb25zdCB7IHJlYWRGaWxlU3luYyB9ID0gcmVxdWlyZSgnbm9kZTpmcycpXG5sZXQgbmF0aXZlQmluZGluZyA9IG51bGxcbmNvbnN0IGxvYWRFcnJvcnMgPSBbXVxuXG5jb25zdCBpc011c2wgPSAoKSA9PiB7XG4gIGxldCBtdXNsID0gZmFsc2VcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdsaW51eCcpIHtcbiAgICBtdXNsID0gaXNNdXNsRnJvbUZpbGVzeXN0ZW0oKVxuICAgIGlmIChtdXNsID09PSBudWxsKSB7XG4gICAgICBtdXNsID0gaXNNdXNsRnJvbVJlcG9ydCgpXG4gICAgfVxuICAgIGlmIChtdXNsID09PSBudWxsKSB7XG4gICAgICBtdXNsID0gaXNNdXNsRnJvbUNoaWxkUHJvY2VzcygpXG4gICAgfVxuICB9XG4gIHJldHVybiBtdXNsXG59XG5cbmNvbnN0IGlzRmlsZU11c2wgPSAoZikgPT4gZi5pbmNsdWRlcygnbGliYy5tdXNsLScpIHx8IGYuaW5jbHVkZXMoJ2xkLW11c2wtJylcblxuY29uc3QgaXNNdXNsRnJvbUZpbGVzeXN0ZW0gPSAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHJlYWRGaWxlU3luYygnL3Vzci9iaW4vbGRkJywgJ3V0Zi04JykuaW5jbHVkZXMoJ211c2wnKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmNvbnN0IGlzTXVzbEZyb21SZXBvcnQgPSAoKSA9PiB7XG4gIGxldCByZXBvcnQgPSBudWxsXG4gIGlmICh0eXBlb2YgcHJvY2Vzcy5yZXBvcnQ/LmdldFJlcG9ydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHByb2Nlc3MucmVwb3J0LmV4Y2x1ZGVOZXR3b3JrID0gdHJ1ZVxuICAgIHJlcG9ydCA9IHByb2Nlc3MucmVwb3J0LmdldFJlcG9ydCgpXG4gIH1cbiAgaWYgKCFyZXBvcnQpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGlmIChyZXBvcnQuaGVhZGVyICYmIHJlcG9ydC5oZWFkZXIuZ2xpYmNWZXJzaW9uUnVudGltZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHJlcG9ydC5zaGFyZWRPYmplY3RzKSkge1xuICAgIGlmIChyZXBvcnQuc2hhcmVkT2JqZWN0cy5zb21lKGlzRmlsZU11c2wpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuY29uc3QgaXNNdXNsRnJvbUNoaWxkUHJvY2VzcyA9ICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNTeW5jKCdsZGQgLS12ZXJzaW9uJywgeyBlbmNvZGluZzogJ3V0ZjgnIH0pLmluY2x1ZGVzKCdtdXNsJylcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIElmIHdlIHJlYWNoIHRoaXMgY2FzZSwgd2UgZG9uJ3Qga25vdyBpZiB0aGUgc3lzdGVtIGlzIG11c2wgb3Igbm90LCBzbyBpcyBiZXR0ZXIgdG8ganVzdCBmYWxsYmFjayB0byBmYWxzZVxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlcXVpcmVOYXRpdmUoKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OQVBJX1JTX05BVElWRV9MSUJSQVJZX1BBVEgpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHJlcXVpcmUocHJvY2Vzcy5lbnYuTkFQSV9SU19OQVRJVkVfTElCUkFSWV9QQVRIKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvYWRFcnJvcnMucHVzaChlcnIpXG4gICAgfVxuICB9IGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdhbmRyb2lkJykge1xuICAgIGlmIChwcm9jZXNzLmFyY2ggPT09ICdhcm02NCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdhbmRyb2lkLWFybTY0Jyl9XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmFyY2ggPT09ICdhcm0nKSB7XG4gICAgICAke3JlcXVpcmVUdXBsZSgnYW5kcm9pZC1hcm0tZWFiaScpfVxuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkRXJyb3JzLnB1c2gobmV3IEVycm9yKFxcYFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSBvbiBBbmRyb2lkIFxcJHtwcm9jZXNzLmFyY2h9XFxgKSlcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgIGlmIChwcm9jZXNzLmFyY2ggPT09ICd4NjQnKSB7XG4gICAgICBpZiAocHJvY2Vzcy5jb25maWc/LnZhcmlhYmxlcz8uc2hsaWJfc3VmZml4ID09PSAnZGxsLmEnIHx8IHByb2Nlc3MuY29uZmlnPy52YXJpYWJsZXM/Lm5vZGVfdGFyZ2V0X3R5cGUgPT09ICdzaGFyZWRfbGlicmFyeScpIHtcbiAgICAgICAgJHtyZXF1aXJlVHVwbGUoJ3dpbjMyLXg2NC1nbnUnKX1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCd3aW4zMi14NjQtbXN2YycpfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnaWEzMicpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCd3aW4zMi1pYTMyLW1zdmMnKX1cbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ2FybTY0Jykge1xuICAgICAgJHtyZXF1aXJlVHVwbGUoJ3dpbjMyLWFybTY0LW1zdmMnKX1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZEVycm9ycy5wdXNoKG5ldyBFcnJvcihcXGBVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUgb24gV2luZG93czogXFwke3Byb2Nlc3MuYXJjaH1cXGApKVxuICAgIH1cbiAgfSBlbHNlIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnZGFyd2luJykge1xuICAgICR7cmVxdWlyZVR1cGxlKCdkYXJ3aW4tdW5pdmVyc2FsJywgNil9XG4gICAgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ3g2NCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdkYXJ3aW4teDY0Jyl9XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmFyY2ggPT09ICdhcm02NCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdkYXJ3aW4tYXJtNjQnKX1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZEVycm9ycy5wdXNoKG5ldyBFcnJvcihcXGBVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUgb24gbWFjT1M6IFxcJHtwcm9jZXNzLmFyY2h9XFxgKSlcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2ZyZWVic2QnKSB7XG4gICAgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ3g2NCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdmcmVlYnNkLXg2NCcpfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnYXJtNjQnKSB7XG4gICAgICAke3JlcXVpcmVUdXBsZSgnZnJlZWJzZC1hcm02NCcpfVxuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkRXJyb3JzLnB1c2gobmV3IEVycm9yKFxcYFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSBvbiBGcmVlQlNEOiBcXCR7cHJvY2Vzcy5hcmNofVxcYCkpXG4gICAgfVxuICB9IGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdsaW51eCcpIHtcbiAgICBpZiAocHJvY2Vzcy5hcmNoID09PSAneDY0Jykge1xuICAgICAgaWYgKGlzTXVzbCgpKSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCdsaW51eC14NjQtbXVzbCcsIDEwKX1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCdsaW51eC14NjQtZ251JywgMTApfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnYXJtNjQnKSB7XG4gICAgICBpZiAoaXNNdXNsKCkpIHtcbiAgICAgICAgJHtyZXF1aXJlVHVwbGUoJ2xpbnV4LWFybTY0LW11c2wnLCAxMCl9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAke3JlcXVpcmVUdXBsZSgnbGludXgtYXJtNjQtZ251JywgMTApfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnYXJtJykge1xuICAgICAgaWYgKGlzTXVzbCgpKSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCdsaW51eC1hcm0tbXVzbGVhYmloZicsIDEwKX1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCdsaW51eC1hcm0tZ251ZWFiaWhmJywgMTApfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnbG9vbmc2NCcpIHtcbiAgICAgIGlmIChpc011c2woKSkge1xuICAgICAgICAke3JlcXVpcmVUdXBsZSgnbGludXgtbG9vbmc2NC1tdXNsJywgMTApfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJHtyZXF1aXJlVHVwbGUoJ2xpbnV4LWxvb25nNjQtZ251JywgMTApfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAncmlzY3Y2NCcpIHtcbiAgICAgIGlmIChpc011c2woKSkge1xuICAgICAgICAke3JlcXVpcmVUdXBsZSgnbGludXgtcmlzY3Y2NC1tdXNsJywgMTApfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJHtyZXF1aXJlVHVwbGUoJ2xpbnV4LXJpc2N2NjQtZ251JywgMTApfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAncHBjNjQnKSB7XG4gICAgICAke3JlcXVpcmVUdXBsZSgnbGludXgtcHBjNjQtZ251Jyl9XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmFyY2ggPT09ICdzMzkweCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdsaW51eC1zMzkweC1nbnUnKX1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZEVycm9ycy5wdXNoKG5ldyBFcnJvcihcXGBVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUgb24gTGludXg6IFxcJHtwcm9jZXNzLmFyY2h9XFxgKSlcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ29wZW5oYXJtb255Jykge1xuICAgIGlmIChwcm9jZXNzLmFyY2ggPT09ICdhcm02NCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdvcGVuaGFybW9ueS1hcm02NCcpfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAneDY0Jykge1xuICAgICAgJHtyZXF1aXJlVHVwbGUoJ29wZW5oYXJtb255LXg2NCcpfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnYXJtJykge1xuICAgICAgJHtyZXF1aXJlVHVwbGUoJ29wZW5oYXJtb255LWFybScpfVxuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkRXJyb3JzLnB1c2gobmV3IEVycm9yKFxcYFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSBvbiBPcGVuSGFybW9ueTogXFwke3Byb2Nlc3MuYXJjaH1cXGApKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsb2FkRXJyb3JzLnB1c2gobmV3IEVycm9yKFxcYFVuc3VwcG9ydGVkIE9TOiBcXCR7cHJvY2Vzcy5wbGF0Zm9ybX0sIGFyY2hpdGVjdHVyZTogXFwke3Byb2Nlc3MuYXJjaH1cXGApKVxuICB9XG59XG5cbm5hdGl2ZUJpbmRpbmcgPSByZXF1aXJlTmF0aXZlKClcblxuaWYgKCFuYXRpdmVCaW5kaW5nIHx8IHByb2Nlc3MuZW52Lk5BUElfUlNfRk9SQ0VfV0FTSSkge1xuICBsZXQgd2FzaUJpbmRpbmcgPSBudWxsXG4gIGxldCB3YXNpQmluZGluZ0Vycm9yID0gbnVsbFxuICB0cnkge1xuICAgIHdhc2lCaW5kaW5nID0gcmVxdWlyZSgnLi8ke2xvY2FsTmFtZX0ud2FzaS5janMnKVxuICAgIG5hdGl2ZUJpbmRpbmcgPSB3YXNpQmluZGluZ1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTkFQSV9SU19GT1JDRV9XQVNJKSB7XG4gICAgICB3YXNpQmluZGluZ0Vycm9yID0gZXJyXG4gICAgfVxuICB9XG4gIGlmICghbmF0aXZlQmluZGluZyB8fCBwcm9jZXNzLmVudi5OQVBJX1JTX0ZPUkNFX1dBU0kpIHtcbiAgICB0cnkge1xuICAgICAgd2FzaUJpbmRpbmcgPSByZXF1aXJlKCcke3BrZ05hbWV9LXdhc20zMi13YXNpJylcbiAgICAgIG5hdGl2ZUJpbmRpbmcgPSB3YXNpQmluZGluZ1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5BUElfUlNfRk9SQ0VfV0FTSSkge1xuICAgICAgICBpZiAoIXdhc2lCaW5kaW5nRXJyb3IpIHtcbiAgICAgICAgICB3YXNpQmluZGluZ0Vycm9yID0gZXJyXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2FzaUJpbmRpbmdFcnJvci5jYXVzZSA9IGVyclxuICAgICAgICB9XG4gICAgICAgIGxvYWRFcnJvcnMucHVzaChlcnIpXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OQVBJX1JTX0ZPUkNFX1dBU0kgPT09ICdlcnJvcicgJiYgIXdhc2lCaW5kaW5nKSB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ1dBU0kgYmluZGluZyBub3QgZm91bmQgYW5kIE5BUElfUlNfRk9SQ0VfV0FTSSBpcyBzZXQgdG8gZXJyb3InKVxuICAgIGVycm9yLmNhdXNlID0gd2FzaUJpbmRpbmdFcnJvclxuICAgIHRocm93IGVycm9yXG4gIH1cbn1cblxuaWYgKCFuYXRpdmVCaW5kaW5nKSB7XG4gIGlmIChsb2FkRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcXGBDYW5ub3QgZmluZCBuYXRpdmUgYmluZGluZy4gXFxgICtcbiAgICAgICAgXFxgbnBtIGhhcyBhIGJ1ZyByZWxhdGVkIHRvIG9wdGlvbmFsIGRlcGVuZGVuY2llcyAoaHR0cHM6Ly9naXRodWIuY29tL25wbS9jbGkvaXNzdWVzLzQ4MjgpLiBcXGAgK1xuICAgICAgICAnUGxlYXNlIHRyeSBcXGBucG0gaVxcYCBhZ2FpbiBhZnRlciByZW1vdmluZyBib3RoIHBhY2thZ2UtbG9jay5qc29uIGFuZCBub2RlX21vZHVsZXMgZGlyZWN0b3J5LicsXG4gICAgICB7XG4gICAgICAgIGNhdXNlOiBsb2FkRXJyb3JzLnJlZHVjZSgoZXJyLCBjdXIpID0+IHtcbiAgICAgICAgICBjdXIuY2F1c2UgPSBlcnJcbiAgICAgICAgICByZXR1cm4gY3VyXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApXG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxcYEZhaWxlZCB0byBsb2FkIG5hdGl2ZSBiaW5kaW5nXFxgKVxufVxuYFxufVxuIiwiZXhwb3J0IGNvbnN0IGNyZWF0ZVdhc2lCcm93c2VyQmluZGluZyA9IChcbiAgd2FzaUZpbGVuYW1lOiBzdHJpbmcsXG4gIGluaXRpYWxNZW1vcnkgPSA0MDAwLFxuICBtYXhpbXVtTWVtb3J5ID0gNjU1MzYsXG4gIGZzID0gZmFsc2UsXG4gIGFzeW5jSW5pdCA9IGZhbHNlLFxuICBidWZmZXIgPSBmYWxzZSxcbikgPT4ge1xuICBjb25zdCBmc0ltcG9ydCA9IGZzXG4gICAgPyBidWZmZXJcbiAgICAgID8gYGltcG9ydCB7IG1lbWZzLCBCdWZmZXIgfSBmcm9tICdAbmFwaS1ycy93YXNtLXJ1bnRpbWUvZnMnYFxuICAgICAgOiBgaW1wb3J0IHsgbWVtZnMgfSBmcm9tICdAbmFwaS1ycy93YXNtLXJ1bnRpbWUvZnMnYFxuICAgIDogJydcbiAgY29uc3QgYnVmZmVySW1wb3J0ID0gYnVmZmVyICYmICFmcyA/IGBpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInYCA6ICcnXG4gIGNvbnN0IHdhc2lDcmVhdGlvbiA9IGZzXG4gICAgPyBgXG5leHBvcnQgY29uc3QgeyBmczogX19mcywgdm9sOiBfX3ZvbHVtZSB9ID0gbWVtZnMoKVxuXG5jb25zdCBfX3dhc2kgPSBuZXcgX19XQVNJKHtcbiAgdmVyc2lvbjogJ3ByZXZpZXcxJyxcbiAgZnM6IF9fZnMsXG4gIHByZW9wZW5zOiB7XG4gICAgJy8nOiAnLycsXG4gIH0sXG59KWBcbiAgICA6IGBcbmNvbnN0IF9fd2FzaSA9IG5ldyBfX1dBU0koe1xuICB2ZXJzaW9uOiAncHJldmlldzEnLFxufSlgXG5cbiAgY29uc3Qgd29ya2VyRnNIYW5kbGVyID0gZnNcbiAgICA/IGAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBfX3dhc21DcmVhdGVPbk1lc3NhZ2VGb3JGc1Byb3h5KF9fZnMpKVxcbmBcbiAgICA6ICcnXG5cbiAgY29uc3QgZW1uYXBpSW5qZWN0QnVmZmVyID0gYnVmZmVyXG4gICAgPyAnX19lbW5hcGlDb250ZXh0LmZlYXR1cmUuQnVmZmVyID0gQnVmZmVyJ1xuICAgIDogJydcbiAgY29uc3QgZW1uYXBpSW5zdGFudGlhdGVJbXBvcnQgPSBhc3luY0luaXRcbiAgICA/IGBpbnN0YW50aWF0ZU5hcGlNb2R1bGUgYXMgX19lbW5hcGlJbnN0YW50aWF0ZU5hcGlNb2R1bGVgXG4gICAgOiBgaW5zdGFudGlhdGVOYXBpTW9kdWxlU3luYyBhcyBfX2VtbmFwaUluc3RhbnRpYXRlTmFwaU1vZHVsZVN5bmNgXG4gIGNvbnN0IGVtbmFwaUluc3RhbnRpYXRlQ2FsbCA9IGFzeW5jSW5pdFxuICAgID8gYGF3YWl0IF9fZW1uYXBpSW5zdGFudGlhdGVOYXBpTW9kdWxlYFxuICAgIDogYF9fZW1uYXBpSW5zdGFudGlhdGVOYXBpTW9kdWxlU3luY2BcblxuICByZXR1cm4gYGltcG9ydCB7XG4gIGNyZWF0ZU9uTWVzc2FnZSBhcyBfX3dhc21DcmVhdGVPbk1lc3NhZ2VGb3JGc1Byb3h5LFxuICBnZXREZWZhdWx0Q29udGV4dCBhcyBfX2VtbmFwaUdldERlZmF1bHRDb250ZXh0LFxuICAke2VtbmFwaUluc3RhbnRpYXRlSW1wb3J0fSxcbiAgV0FTSSBhcyBfX1dBU0ksXG59IGZyb20gJ0BuYXBpLXJzL3dhc20tcnVudGltZSdcbiR7ZnNJbXBvcnR9XG4ke2J1ZmZlckltcG9ydH1cbiR7d2FzaUNyZWF0aW9ufVxuXG5jb25zdCBfX3dhc21VcmwgPSBuZXcgVVJMKCcuLyR7d2FzaUZpbGVuYW1lfS53YXNtJywgaW1wb3J0Lm1ldGEudXJsKS5ocmVmXG5jb25zdCBfX2VtbmFwaUNvbnRleHQgPSBfX2VtbmFwaUdldERlZmF1bHRDb250ZXh0KClcbiR7ZW1uYXBpSW5qZWN0QnVmZmVyfVxuXG5jb25zdCBfX3NoYXJlZE1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe1xuICBpbml0aWFsOiAke2luaXRpYWxNZW1vcnl9LFxuICBtYXhpbXVtOiAke21heGltdW1NZW1vcnl9LFxuICBzaGFyZWQ6IHRydWUsXG59KVxuXG5jb25zdCBfX3dhc21GaWxlID0gYXdhaXQgZmV0Y2goX193YXNtVXJsKS50aGVuKChyZXMpID0+IHJlcy5hcnJheUJ1ZmZlcigpKVxuXG5jb25zdCB7XG4gIGluc3RhbmNlOiBfX25hcGlJbnN0YW5jZSxcbiAgbW9kdWxlOiBfX3dhc2lNb2R1bGUsXG4gIG5hcGlNb2R1bGU6IF9fbmFwaU1vZHVsZSxcbn0gPSAke2VtbmFwaUluc3RhbnRpYXRlQ2FsbH0oX193YXNtRmlsZSwge1xuICBjb250ZXh0OiBfX2VtbmFwaUNvbnRleHQsXG4gIGFzeW5jV29ya1Bvb2xTaXplOiA0LFxuICB3YXNpOiBfX3dhc2ksXG4gIG9uQ3JlYXRlV29ya2VyKCkge1xuICAgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIobmV3IFVSTCgnLi93YXNpLXdvcmtlci1icm93c2VyLm1qcycsIGltcG9ydC5tZXRhLnVybCksIHtcbiAgICAgIHR5cGU6ICdtb2R1bGUnLFxuICAgIH0pXG4ke3dvcmtlckZzSGFuZGxlcn1cbiAgICByZXR1cm4gd29ya2VyXG4gIH0sXG4gIG92ZXJ3cml0ZUltcG9ydHMoaW1wb3J0T2JqZWN0KSB7XG4gICAgaW1wb3J0T2JqZWN0LmVudiA9IHtcbiAgICAgIC4uLmltcG9ydE9iamVjdC5lbnYsXG4gICAgICAuLi5pbXBvcnRPYmplY3QubmFwaSxcbiAgICAgIC4uLmltcG9ydE9iamVjdC5lbW5hcGksXG4gICAgICBtZW1vcnk6IF9fc2hhcmVkTWVtb3J5LFxuICAgIH1cbiAgICByZXR1cm4gaW1wb3J0T2JqZWN0XG4gIH0sXG4gIGJlZm9yZUluaXQoeyBpbnN0YW5jZSB9KSB7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGluc3RhbmNlLmV4cG9ydHMpKSB7XG4gICAgICBpZiAobmFtZS5zdGFydHNXaXRoKCdfX25hcGlfcmVnaXN0ZXJfXycpKSB7XG4gICAgICAgIGluc3RhbmNlLmV4cG9ydHNbbmFtZV0oKVxuICAgICAgfVxuICAgIH1cbiAgfSxcbn0pXG5gXG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVXYXNpQmluZGluZyA9IChcbiAgd2FzbUZpbGVOYW1lOiBzdHJpbmcsXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gIGluaXRpYWxNZW1vcnkgPSA0MDAwLFxuICBtYXhpbXVtTWVtb3J5ID0gNjU1MzYsXG4pID0+IGAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLyogcHJldHRpZXItaWdub3JlICovXG5cbi8qIGF1dG8tZ2VuZXJhdGVkIGJ5IE5BUEktUlMgKi9cblxuY29uc3QgX19ub2RlRnMgPSByZXF1aXJlKCdub2RlOmZzJylcbmNvbnN0IF9fbm9kZVBhdGggPSByZXF1aXJlKCdub2RlOnBhdGgnKVxuY29uc3QgeyBXQVNJOiBfX25vZGVXQVNJIH0gPSByZXF1aXJlKCdub2RlOndhc2knKVxuY29uc3QgeyBXb3JrZXIgfSA9IHJlcXVpcmUoJ25vZGU6d29ya2VyX3RocmVhZHMnKVxuXG5jb25zdCB7XG4gIGNyZWF0ZU9uTWVzc2FnZTogX193YXNtQ3JlYXRlT25NZXNzYWdlRm9yRnNQcm94eSxcbiAgZ2V0RGVmYXVsdENvbnRleHQ6IF9fZW1uYXBpR2V0RGVmYXVsdENvbnRleHQsXG4gIGluc3RhbnRpYXRlTmFwaU1vZHVsZVN5bmM6IF9fZW1uYXBpSW5zdGFudGlhdGVOYXBpTW9kdWxlU3luYyxcbn0gPSByZXF1aXJlKCdAbmFwaS1ycy93YXNtLXJ1bnRpbWUnKVxuXG5jb25zdCBfX3Jvb3REaXIgPSBfX25vZGVQYXRoLnBhcnNlKHByb2Nlc3MuY3dkKCkpLnJvb3RcblxuY29uc3QgX193YXNpID0gbmV3IF9fbm9kZVdBU0koe1xuICB2ZXJzaW9uOiAncHJldmlldzEnLFxuICBlbnY6IHByb2Nlc3MuZW52LFxuICBwcmVvcGVuczoge1xuICAgIFtfX3Jvb3REaXJdOiBfX3Jvb3REaXIsXG4gIH1cbn0pXG5cbmNvbnN0IF9fZW1uYXBpQ29udGV4dCA9IF9fZW1uYXBpR2V0RGVmYXVsdENvbnRleHQoKVxuXG5jb25zdCBfX3NoYXJlZE1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe1xuICBpbml0aWFsOiAke2luaXRpYWxNZW1vcnl9LFxuICBtYXhpbXVtOiAke21heGltdW1NZW1vcnl9LFxuICBzaGFyZWQ6IHRydWUsXG59KVxuXG5sZXQgX193YXNtRmlsZVBhdGggPSBfX25vZGVQYXRoLmpvaW4oX19kaXJuYW1lLCAnJHt3YXNtRmlsZU5hbWV9Lndhc20nKVxuY29uc3QgX193YXNtRGVidWdGaWxlUGF0aCA9IF9fbm9kZVBhdGguam9pbihfX2Rpcm5hbWUsICcke3dhc21GaWxlTmFtZX0uZGVidWcud2FzbScpXG5cbmlmIChfX25vZGVGcy5leGlzdHNTeW5jKF9fd2FzbURlYnVnRmlsZVBhdGgpKSB7XG4gIF9fd2FzbUZpbGVQYXRoID0gX193YXNtRGVidWdGaWxlUGF0aFxufSBlbHNlIGlmICghX19ub2RlRnMuZXhpc3RzU3luYyhfX3dhc21GaWxlUGF0aCkpIHtcbiAgdHJ5IHtcbiAgICBfX3dhc21GaWxlUGF0aCA9IHJlcXVpcmUucmVzb2x2ZSgnJHtwYWNrYWdlTmFtZX0td2FzbTMyLXdhc2kvJHt3YXNtRmlsZU5hbWV9Lndhc20nKVxuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kICR7d2FzbUZpbGVOYW1lfS53YXNtIGZpbGUsIGFuZCAke3BhY2thZ2VOYW1lfS13YXNtMzItd2FzaSBwYWNrYWdlIGlzIG5vdCBpbnN0YWxsZWQuJylcbiAgfVxufVxuXG5jb25zdCB7IGluc3RhbmNlOiBfX25hcGlJbnN0YW5jZSwgbW9kdWxlOiBfX3dhc2lNb2R1bGUsIG5hcGlNb2R1bGU6IF9fbmFwaU1vZHVsZSB9ID0gX19lbW5hcGlJbnN0YW50aWF0ZU5hcGlNb2R1bGVTeW5jKF9fbm9kZUZzLnJlYWRGaWxlU3luYyhfX3dhc21GaWxlUGF0aCksIHtcbiAgY29udGV4dDogX19lbW5hcGlDb250ZXh0LFxuICBhc3luY1dvcmtQb29sU2l6ZTogKGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IHRocmVhZHNTaXplRnJvbUVudiA9IE51bWJlcihwcm9jZXNzLmVudi5OQVBJX1JTX0FTWU5DX1dPUktfUE9PTF9TSVpFID8/IHByb2Nlc3MuZW52LlVWX1RIUkVBRFBPT0xfU0laRSlcbiAgICAvLyBOYU4gPiAwIGlzIGZhbHNlXG4gICAgaWYgKHRocmVhZHNTaXplRnJvbUVudiA+IDApIHtcbiAgICAgIHJldHVybiB0aHJlYWRzU2l6ZUZyb21FbnZcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDRcbiAgICB9XG4gIH0pKCksXG4gIHJldXNlV29ya2VyOiB0cnVlLFxuICB3YXNpOiBfX3dhc2ksXG4gIG9uQ3JlYXRlV29ya2VyKCkge1xuICAgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIoX19ub2RlUGF0aC5qb2luKF9fZGlybmFtZSwgJ3dhc2ktd29ya2VyLm1qcycpLCB7XG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgIH0pXG4gICAgd29ya2VyLm9ubWVzc2FnZSA9ICh7IGRhdGEgfSkgPT4ge1xuICAgICAgX193YXNtQ3JlYXRlT25NZXNzYWdlRm9yRnNQcm94eShfX25vZGVGcykoZGF0YSlcbiAgICB9XG5cbiAgICAvLyBUaGUgbWFpbiB0aHJlYWQgb2YgTm9kZS5qcyB3YWl0cyBmb3IgYWxsIHRoZSBhY3RpdmUgaGFuZGxlcyBiZWZvcmUgZXhpdGluZy5cbiAgICAvLyBCdXQgUnVzdCB0aHJlYWRzIGFyZSBuZXZlciB3YWl0ZWQgd2l0aG91dCBcXGB0aHJlYWQ6OmpvaW5cXGAuXG4gICAgLy8gU28gaGVyZSB3ZSBoYWNrIHRoZSBjb2RlIG9mIE5vZGUuanMgdG8gcHJldmVudCB0aGUgd29ya2VycyBmcm9tIGJlaW5nIHJlZmVyZW5jZWQgKGFjdGl2ZSkuXG4gICAgLy8gQWNjb3JkaW5nIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iLzE5ZTBkNDcyNzI4Yzc5ZDQxOGI3NGJkZGZmNTg4YmVhNzBhNDAzZDAvbGliL2ludGVybmFsL3dvcmtlci5qcyNMNDE1LFxuICAgIC8vIGEgd29ya2VyIGlzIGNvbnNpc3Qgb2YgdHdvIGhhbmRsZXM6IGtQdWJsaWNQb3J0IGFuZCBrSGFuZGxlLlxuICAgIHtcbiAgICAgIGNvbnN0IGtQdWJsaWNQb3J0ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh3b3JrZXIpLmZpbmQocyA9PlxuICAgICAgICBzLnRvU3RyaW5nKCkuaW5jbHVkZXMoXCJrUHVibGljUG9ydFwiKVxuICAgICAgKTtcbiAgICAgIGlmIChrUHVibGljUG9ydCkge1xuICAgICAgICB3b3JrZXJba1B1YmxpY1BvcnRdLnJlZiA9ICgpID0+IHt9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBrSGFuZGxlID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh3b3JrZXIpLmZpbmQocyA9PlxuICAgICAgICBzLnRvU3RyaW5nKCkuaW5jbHVkZXMoXCJrSGFuZGxlXCIpXG4gICAgICApO1xuICAgICAgaWYgKGtIYW5kbGUpIHtcbiAgICAgICAgd29ya2VyW2tIYW5kbGVdLnJlZiA9ICgpID0+IHt9O1xuICAgICAgfVxuXG4gICAgICB3b3JrZXIudW5yZWYoKTtcbiAgICB9XG4gICAgcmV0dXJuIHdvcmtlclxuICB9LFxuICBvdmVyd3JpdGVJbXBvcnRzKGltcG9ydE9iamVjdCkge1xuICAgIGltcG9ydE9iamVjdC5lbnYgPSB7XG4gICAgICAuLi5pbXBvcnRPYmplY3QuZW52LFxuICAgICAgLi4uaW1wb3J0T2JqZWN0Lm5hcGksXG4gICAgICAuLi5pbXBvcnRPYmplY3QuZW1uYXBpLFxuICAgICAgbWVtb3J5OiBfX3NoYXJlZE1lbW9yeSxcbiAgICB9XG4gICAgcmV0dXJuIGltcG9ydE9iamVjdFxuICB9LFxuICBiZWZvcmVJbml0KHsgaW5zdGFuY2UgfSkge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhpbnN0YW5jZS5leHBvcnRzKSkge1xuICAgICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnX19uYXBpX3JlZ2lzdGVyX18nKSkge1xuICAgICAgICBpbnN0YW5jZS5leHBvcnRzW25hbWVdKClcbiAgICAgIH1cbiAgICB9XG4gIH0sXG59KVxuYFxuIiwiZXhwb3J0IGNvbnN0IFdBU0lfV09SS0VSX1RFTVBMQVRFID0gYGltcG9ydCBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBXQVNJIH0gZnJvbSBcIm5vZGU6d2FzaVwiO1xuaW1wb3J0IHsgcGFyZW50UG9ydCwgV29ya2VyIH0gZnJvbSBcIm5vZGU6d29ya2VyX3RocmVhZHNcIjtcblxuY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcblxuY29uc3QgeyBpbnN0YW50aWF0ZU5hcGlNb2R1bGVTeW5jLCBNZXNzYWdlSGFuZGxlciwgZ2V0RGVmYXVsdENvbnRleHQgfSA9IHJlcXVpcmUoXCJAbmFwaS1ycy93YXNtLXJ1bnRpbWVcIik7XG5cbmlmIChwYXJlbnRQb3J0KSB7XG4gIHBhcmVudFBvcnQub24oXCJtZXNzYWdlXCIsIChkYXRhKSA9PiB7XG4gICAgZ2xvYmFsVGhpcy5vbm1lc3NhZ2UoeyBkYXRhIH0pO1xuICB9KTtcbn1cblxuT2JqZWN0LmFzc2lnbihnbG9iYWxUaGlzLCB7XG4gIHNlbGY6IGdsb2JhbFRoaXMsXG4gIHJlcXVpcmUsXG4gIFdvcmtlcixcbiAgaW1wb3J0U2NyaXB0czogZnVuY3Rpb24gKGYpIHtcbiAgICA7KDAsIGV2YWwpKGZzLnJlYWRGaWxlU3luYyhmLCBcInV0ZjhcIikgKyBcIi8vIyBzb3VyY2VVUkw9XCIgKyBmKTtcbiAgfSxcbiAgcG9zdE1lc3NhZ2U6IGZ1bmN0aW9uIChtc2cpIHtcbiAgICBpZiAocGFyZW50UG9ydCkge1xuICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShtc2cpO1xuICAgIH1cbiAgfSxcbn0pO1xuXG5jb25zdCBlbW5hcGlDb250ZXh0ID0gZ2V0RGVmYXVsdENvbnRleHQoKTtcblxuY29uc3QgX19yb290RGlyID0gcGFyc2UocHJvY2Vzcy5jd2QoKSkucm9vdDtcblxuY29uc3QgaGFuZGxlciA9IG5ldyBNZXNzYWdlSGFuZGxlcih7XG4gIG9uTG9hZCh7IHdhc21Nb2R1bGUsIHdhc21NZW1vcnkgfSkge1xuICAgIGNvbnN0IHdhc2kgPSBuZXcgV0FTSSh7XG4gICAgICB2ZXJzaW9uOiAncHJldmlldzEnLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIHByZW9wZW5zOiB7XG4gICAgICAgIFtfX3Jvb3REaXJdOiBfX3Jvb3REaXIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGluc3RhbnRpYXRlTmFwaU1vZHVsZVN5bmMod2FzbU1vZHVsZSwge1xuICAgICAgY2hpbGRUaHJlYWQ6IHRydWUsXG4gICAgICB3YXNpLFxuICAgICAgY29udGV4dDogZW1uYXBpQ29udGV4dCxcbiAgICAgIG92ZXJ3cml0ZUltcG9ydHMoaW1wb3J0T2JqZWN0KSB7XG4gICAgICAgIGltcG9ydE9iamVjdC5lbnYgPSB7XG4gICAgICAgICAgLi4uaW1wb3J0T2JqZWN0LmVudixcbiAgICAgICAgICAuLi5pbXBvcnRPYmplY3QubmFwaSxcbiAgICAgICAgICAuLi5pbXBvcnRPYmplY3QuZW1uYXBpLFxuICAgICAgICAgIG1lbW9yeTogd2FzbU1lbW9yeVxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9KTtcbiAgfSxcbn0pO1xuXG5nbG9iYWxUaGlzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7XG4gIGhhbmRsZXIuaGFuZGxlKGUpO1xufTtcbmBcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVdhc2lCcm93c2VyV29ya2VyQmluZGluZyA9IChmczogYm9vbGVhbikgPT4ge1xuICBjb25zdCBmc0ltcG9ydCA9IGZzXG4gICAgPyBgaW1wb3J0IHsgaW5zdGFudGlhdGVOYXBpTW9kdWxlU3luYywgTWVzc2FnZUhhbmRsZXIsIFdBU0ksIGNyZWF0ZUZzUHJveHkgfSBmcm9tICdAbmFwaS1ycy93YXNtLXJ1bnRpbWUnXG5pbXBvcnQgeyBtZW1mc0V4cG9ydGVkIGFzIF9fbWVtZnNFeHBvcnRlZCB9IGZyb20gJ0BuYXBpLXJzL3dhc20tcnVudGltZS9mcydcblxuY29uc3QgZnMgPSBjcmVhdGVGc1Byb3h5KF9fbWVtZnNFeHBvcnRlZClgXG4gICAgOiBgaW1wb3J0IHsgaW5zdGFudGlhdGVOYXBpTW9kdWxlU3luYywgTWVzc2FnZUhhbmRsZXIsIFdBU0kgfSBmcm9tICdAbmFwaS1ycy93YXNtLXJ1bnRpbWUnYFxuICBjb25zdCB3YXNpQ3JlYXRpb24gPSBmc1xuICAgID8gYGNvbnN0IHdhc2kgPSBuZXcgV0FTSSh7XG4gICAgICBmcyxcbiAgICAgIHByZW9wZW5zOiB7XG4gICAgICAgICcvJzogJy8nLFxuICAgICAgfSxcbiAgICAgIHByaW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUubG9nLmFwcGx5KGNvbnNvbGUsIGFyZ3VtZW50cylcbiAgICAgIH0sXG4gICAgICBwcmludEVycjogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKVxuICAgICAgfSxcbiAgICB9KWBcbiAgICA6IGBjb25zdCB3YXNpID0gbmV3IFdBU0koe1xuICAgICAgcHJpbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKVxuICAgICAgfSxcbiAgICAgIHByaW50RXJyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvci5hcHBseShjb25zb2xlLCBhcmd1bWVudHMpXG4gICAgICB9LFxuICAgIH0pYFxuICByZXR1cm4gYCR7ZnNJbXBvcnR9XG5cbmNvbnN0IGhhbmRsZXIgPSBuZXcgTWVzc2FnZUhhbmRsZXIoe1xuICBvbkxvYWQoeyB3YXNtTW9kdWxlLCB3YXNtTWVtb3J5IH0pIHtcbiAgICAke3dhc2lDcmVhdGlvbn1cbiAgICByZXR1cm4gaW5zdGFudGlhdGVOYXBpTW9kdWxlU3luYyh3YXNtTW9kdWxlLCB7XG4gICAgICBjaGlsZFRocmVhZDogdHJ1ZSxcbiAgICAgIHdhc2ksXG4gICAgICBvdmVyd3JpdGVJbXBvcnRzKGltcG9ydE9iamVjdCkge1xuICAgICAgICBpbXBvcnRPYmplY3QuZW52ID0ge1xuICAgICAgICAgIC4uLmltcG9ydE9iamVjdC5lbnYsXG4gICAgICAgICAgLi4uaW1wb3J0T2JqZWN0Lm5hcGksXG4gICAgICAgICAgLi4uaW1wb3J0T2JqZWN0LmVtbmFwaSxcbiAgICAgICAgICBtZW1vcnk6IHdhc21NZW1vcnksXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSlcbiAgfSxcbn0pXG5cbmdsb2JhbFRoaXMub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHtcbiAgaGFuZGxlci5oYW5kbGUoZSlcbn1cbmBcbn1cbiIsImltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ25vZGU6Y3J5cHRvJ1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jLCBybVN5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gJ25vZGU6bW9kdWxlJ1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ25vZGU6b3MnXG5pbXBvcnQgeyBwYXJzZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcblxuaW1wb3J0ICogYXMgY29sb3JzIGZyb20gJ2NvbG9yZXR0ZSdcblxuaW1wb3J0IHR5cGUgeyBCdWlsZE9wdGlvbnMgYXMgUmF3QnVpbGRPcHRpb25zIH0gZnJvbSAnLi4vZGVmL2J1aWxkLmpzJ1xuaW1wb3J0IHtcbiAgQ0xJX1ZFUlNJT04sXG4gIGNvcHlGaWxlQXN5bmMsXG4gIHR5cGUgQ3JhdGUsXG4gIGRlYnVnRmFjdG9yeSxcbiAgREVGQVVMVF9UWVBFX0RFRl9IRUFERVIsXG4gIGZpbGVFeGlzdHMsXG4gIGdldFN5c3RlbURlZmF1bHRUYXJnZXQsXG4gIGdldFRhcmdldExpbmtlcixcbiAgbWtkaXJBc3luYyxcbiAgdHlwZSBOYXBpQ29uZmlnLFxuICBwYXJzZU1ldGFkYXRhLFxuICBwYXJzZVRyaXBsZSxcbiAgcHJvY2Vzc1R5cGVEZWYsXG4gIHJlYWRGaWxlQXN5bmMsXG4gIHJlYWROYXBpQ29uZmlnLFxuICB0eXBlIFRhcmdldCxcbiAgdGFyZ2V0VG9FbnZWYXIsXG4gIHRyeUluc3RhbGxDYXJnb0JpbmFyeSxcbiAgdW5saW5rQXN5bmMsXG4gIHdyaXRlRmlsZUFzeW5jLFxuICBkaXJFeGlzdHNBc3luYyxcbiAgcmVhZGRpckFzeW5jLFxuICB0eXBlIENhcmdvV29ya3NwYWNlTWV0YWRhdGEsXG59IGZyb20gJy4uL3V0aWxzL2luZGV4LmpzJ1xuXG5pbXBvcnQgeyBjcmVhdGVDanNCaW5kaW5nLCBjcmVhdGVFc21CaW5kaW5nIH0gZnJvbSAnLi90ZW1wbGF0ZXMvaW5kZXguanMnXG5pbXBvcnQge1xuICBjcmVhdGVXYXNpQmluZGluZyxcbiAgY3JlYXRlV2FzaUJyb3dzZXJCaW5kaW5nLFxufSBmcm9tICcuL3RlbXBsYXRlcy9sb2FkLXdhc2ktdGVtcGxhdGUuanMnXG5pbXBvcnQge1xuICBjcmVhdGVXYXNpQnJvd3NlcldvcmtlckJpbmRpbmcsXG4gIFdBU0lfV09SS0VSX1RFTVBMQVRFLFxufSBmcm9tICcuL3RlbXBsYXRlcy93YXNpLXdvcmtlci10ZW1wbGF0ZS5qcydcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0ZhY3RvcnkoJ2J1aWxkJylcbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybClcblxudHlwZSBPdXRwdXRLaW5kID0gJ2pzJyB8ICdkdHMnIHwgJ25vZGUnIHwgJ2V4ZScgfCAnd2FzbSdcbnR5cGUgT3V0cHV0ID0geyBraW5kOiBPdXRwdXRLaW5kOyBwYXRoOiBzdHJpbmcgfVxuXG50eXBlIEJ1aWxkT3B0aW9ucyA9IFJhd0J1aWxkT3B0aW9ucyAmIHsgY2FyZ29PcHRpb25zPzogc3RyaW5nW10gfVxudHlwZSBQYXJzZWRCdWlsZE9wdGlvbnMgPSBPbWl0PEJ1aWxkT3B0aW9ucywgJ2N3ZCc+ICYgeyBjd2Q6IHN0cmluZyB9XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFByb2plY3QocmF3T3B0aW9uczogQnVpbGRPcHRpb25zKSB7XG4gIGRlYnVnKCduYXBpIGJ1aWxkIGNvbW1hbmQgcmVjZWl2ZSBvcHRpb25zOiAlTycsIHJhd09wdGlvbnMpXG5cbiAgY29uc3Qgb3B0aW9uczogUGFyc2VkQnVpbGRPcHRpb25zID0ge1xuICAgIGR0c0NhY2hlOiB0cnVlLFxuICAgIC4uLnJhd09wdGlvbnMsXG4gICAgY3dkOiByYXdPcHRpb25zLmN3ZCA/PyBwcm9jZXNzLmN3ZCgpLFxuICB9XG5cbiAgY29uc3QgcmVzb2x2ZVBhdGggPSAoLi4ucGF0aHM6IHN0cmluZ1tdKSA9PiByZXNvbHZlKG9wdGlvbnMuY3dkLCAuLi5wYXRocylcblxuICBjb25zdCBtYW5pZmVzdFBhdGggPSByZXNvbHZlUGF0aChvcHRpb25zLm1hbmlmZXN0UGF0aCA/PyAnQ2FyZ28udG9tbCcpXG4gIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgcGFyc2VNZXRhZGF0YShtYW5pZmVzdFBhdGgpXG5cbiAgY29uc3QgY3JhdGUgPSBtZXRhZGF0YS5wYWNrYWdlcy5maW5kKChwKSA9PiB7XG4gICAgLy8gcGFja2FnZSB3aXRoIGdpdmVuIG5hbWVcbiAgICBpZiAob3B0aW9ucy5wYWNrYWdlKSB7XG4gICAgICByZXR1cm4gcC5uYW1lID09PSBvcHRpb25zLnBhY2thZ2VcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHAubWFuaWZlc3RfcGF0aCA9PT0gbWFuaWZlc3RQYXRoXG4gICAgfVxuICB9KVxuXG4gIGlmICghY3JhdGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnVW5hYmxlIHRvIGZpbmQgY3JhdGUgdG8gYnVpbGQuIEl0IHNlZW1zIHlvdSBhcmUgdHJ5aW5nIHRvIGJ1aWxkIGEgY3JhdGUgaW4gYSB3b3Jrc3BhY2UsIHRyeSB1c2luZyBgLS1wYWNrYWdlYCBvcHRpb24gdG8gc3BlY2lmeSB0aGUgcGFja2FnZSB0byBidWlsZC4nLFxuICAgIClcbiAgfVxuICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkTmFwaUNvbmZpZyhcbiAgICByZXNvbHZlUGF0aChvcHRpb25zLnBhY2thZ2VKc29uUGF0aCA/PyAncGFja2FnZS5qc29uJyksXG4gICAgb3B0aW9ucy5jb25maWdQYXRoID8gcmVzb2x2ZVBhdGgob3B0aW9ucy5jb25maWdQYXRoKSA6IHVuZGVmaW5lZCxcbiAgKVxuXG4gIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQnVpbGRlcihtZXRhZGF0YSwgY3JhdGUsIGNvbmZpZywgb3B0aW9ucylcblxuICByZXR1cm4gYnVpbGRlci5idWlsZCgpXG59XG5cbmNsYXNzIEJ1aWxkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGFyZ3M6IHN0cmluZ1tdID0gW11cbiAgcHJpdmF0ZSByZWFkb25seSBlbnZzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge31cbiAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXRzOiBPdXRwdXRbXSA9IFtdXG5cbiAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXQ6IFRhcmdldFxuICBwcml2YXRlIHJlYWRvbmx5IGNyYXRlRGlyOiBzdHJpbmdcbiAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXREaXI6IHN0cmluZ1xuICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldERpcjogc3RyaW5nXG4gIHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlVHlwZURlZjogYm9vbGVhbiA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXRhZGF0YTogQ2FyZ29Xb3Jrc3BhY2VNZXRhZGF0YSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyYXRlOiBDcmF0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogTmFwaUNvbmZpZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFBhcnNlZEJ1aWxkT3B0aW9ucyxcbiAgKSB7XG4gICAgdGhpcy50YXJnZXQgPSBvcHRpb25zLnRhcmdldFxuICAgICAgPyBwYXJzZVRyaXBsZShvcHRpb25zLnRhcmdldClcbiAgICAgIDogcHJvY2Vzcy5lbnYuQ0FSR09fQlVJTERfVEFSR0VUXG4gICAgICAgID8gcGFyc2VUcmlwbGUocHJvY2Vzcy5lbnYuQ0FSR09fQlVJTERfVEFSR0VUKVxuICAgICAgICA6IGdldFN5c3RlbURlZmF1bHRUYXJnZXQoKVxuICAgIHRoaXMuY3JhdGVEaXIgPSBwYXJzZShjcmF0ZS5tYW5pZmVzdF9wYXRoKS5kaXJcbiAgICB0aGlzLm91dHB1dERpciA9IHJlc29sdmUoXG4gICAgICB0aGlzLm9wdGlvbnMuY3dkLFxuICAgICAgb3B0aW9ucy5vdXRwdXREaXIgPz8gdGhpcy5jcmF0ZURpcixcbiAgICApXG4gICAgdGhpcy50YXJnZXREaXIgPVxuICAgICAgb3B0aW9ucy50YXJnZXREaXIgPz9cbiAgICAgIHByb2Nlc3MuZW52LkNBUkdPX0JVSUxEX1RBUkdFVF9ESVIgPz9cbiAgICAgIG1ldGFkYXRhLnRhcmdldF9kaXJlY3RvcnlcbiAgICB0aGlzLmVuYWJsZVR5cGVEZWYgPSB0aGlzLmNyYXRlLmRlcGVuZGVuY2llcy5zb21lKFxuICAgICAgKGRlcCkgPT5cbiAgICAgICAgZGVwLm5hbWUgPT09ICduYXBpLWRlcml2ZScgJiZcbiAgICAgICAgKGRlcC51c2VzX2RlZmF1bHRfZmVhdHVyZXMgfHwgZGVwLmZlYXR1cmVzLmluY2x1ZGVzKCd0eXBlLWRlZicpKSxcbiAgICApXG5cbiAgICBpZiAoIXRoaXMuZW5hYmxlVHlwZURlZikge1xuICAgICAgY29uc3QgcmVxdWlyZW1lbnRXYXJuaW5nID1cbiAgICAgICAgJ2BuYXBpLWRlcml2ZWAgY3JhdGUgaXMgbm90IHVzZWQgb3IgYHR5cGUtZGVmYCBmZWF0dXJlIGlzIG5vdCBlbmFibGVkIGZvciBgbmFwaS1kZXJpdmVgIGNyYXRlJ1xuICAgICAgZGVidWcud2FybihcbiAgICAgICAgYCR7cmVxdWlyZW1lbnRXYXJuaW5nfS4gV2lsbCBza2lwIGJpbmRpbmcgZ2VuZXJhdGlvbiBmb3IgXFxgLm5vZGVcXGAsIFxcYC53YXNpXFxgIGFuZCBcXGAuZC50c1xcYCBmaWxlcy5gLFxuICAgICAgKVxuXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMub3B0aW9ucy5kdHMgfHxcbiAgICAgICAgdGhpcy5vcHRpb25zLmR0c0hlYWRlciB8fFxuICAgICAgICB0aGlzLmNvbmZpZy5kdHNIZWFkZXIgfHxcbiAgICAgICAgdGhpcy5jb25maWcuZHRzSGVhZGVyRmlsZVxuICAgICAgKSB7XG4gICAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgICAgYCR7cmVxdWlyZW1lbnRXYXJuaW5nfS4gXFxgZHRzXFxgIHJlbGF0ZWQgb3B0aW9ucyBhcmUgZW5hYmxlZCBidXQgd2lsbCBiZSBpZ25vcmVkLmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgY2R5TGliTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jcmF0ZS50YXJnZXRzLmZpbmQoKHQpID0+IHQuY3JhdGVfdHlwZXMuaW5jbHVkZXMoJ2NkeWxpYicpKVxuICAgICAgPy5uYW1lXG4gIH1cblxuICBnZXQgYmluTmFtZSgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5vcHRpb25zLmJpbiA/P1xuICAgICAgLy8gb25seSBhdmFpbGFibGUgaWYgbm90IGNkeWxpYiBvciBiaW4gbmFtZSBzcGVjaWZpZWRcbiAgICAgICh0aGlzLmNkeUxpYk5hbWVcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogdGhpcy5jcmF0ZS50YXJnZXRzLmZpbmQoKHQpID0+IHQuY3JhdGVfdHlwZXMuaW5jbHVkZXMoJ2JpbicpKT8ubmFtZSlcbiAgICApXG4gIH1cblxuICBidWlsZCgpIHtcbiAgICBpZiAoIXRoaXMuY2R5TGliTmFtZSkge1xuICAgICAgY29uc3Qgd2FybmluZyA9XG4gICAgICAgICdNaXNzaW5nIGBjcmF0ZS10eXBlID0gW1wiY2R5bGliXCJdYCBpbiBbbGliXSBjb25maWcuIFRoZSBidWlsZCByZXN1bHQgd2lsbCBub3QgYmUgYXZhaWxhYmxlIGFzIG5vZGUgYWRkb24uJ1xuXG4gICAgICBpZiAodGhpcy5iaW5OYW1lKSB7XG4gICAgICAgIGRlYnVnLndhcm4od2FybmluZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcih3YXJuaW5nKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBpY2tCaW5hcnkoKVxuICAgICAgLnNldFBhY2thZ2UoKVxuICAgICAgLnNldEZlYXR1cmVzKClcbiAgICAgIC5zZXRUYXJnZXQoKVxuICAgICAgLnBpY2tDcm9zc1Rvb2xjaGFpbigpXG4gICAgICAuc2V0RW52cygpXG4gICAgICAuc2V0QnlwYXNzQXJncygpXG4gICAgICAuZXhlYygpXG4gIH1cblxuICBwcml2YXRlIHBpY2tDcm9zc1Rvb2xjaGFpbigpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy51c2VOYXBpQ3Jvc3MpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMudXNlQ3Jvc3MpIHtcbiAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgICdZb3UgYXJlIHRyeWluZyB0byB1c2UgYm90aCBgLS1jcm9zc2AgYW5kIGAtLXVzZS1uYXBpLWNyb3NzYCBvcHRpb25zLCBgLS11c2UtY3Jvc3NgIHdpbGwgYmUgaWdub3JlZC4nLFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3Jvc3NDb21waWxlKSB7XG4gICAgICBkZWJ1Zy53YXJuKFxuICAgICAgICAnWW91IGFyZSB0cnlpbmcgdG8gdXNlIGJvdGggYC0tY3Jvc3MtY29tcGlsZWAgYW5kIGAtLXVzZS1uYXBpLWNyb3NzYCBvcHRpb25zLCBgLS1jcm9zcy1jb21waWxlYCB3aWxsIGJlIGlnbm9yZWQuJyxcbiAgICAgIClcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgeyB2ZXJzaW9uLCBkb3dubG9hZCB9ID0gcmVxdWlyZSgnQG5hcGktcnMvY3Jvc3MtdG9vbGNoYWluJylcblxuICAgICAgY29uc3QgYWxpYXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICdzMzkweC11bmtub3duLWxpbnV4LWdudSc6ICdzMzkweC1pYm0tbGludXgtZ251JyxcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG9vbGNoYWluUGF0aCA9IGpvaW4oXG4gICAgICAgIGhvbWVkaXIoKSxcbiAgICAgICAgJy5uYXBpLXJzJyxcbiAgICAgICAgJ2Nyb3NzLXRvb2xjaGFpbicsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIHRoaXMudGFyZ2V0LnRyaXBsZSxcbiAgICAgIClcbiAgICAgIG1rZGlyU3luYyh0b29sY2hhaW5QYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgICAgaWYgKGV4aXN0c1N5bmMoam9pbih0b29sY2hhaW5QYXRoLCAncGFja2FnZS5qc29uJykpKSB7XG4gICAgICAgIGRlYnVnKGBUb29sY2hhaW4gJHt0b29sY2hhaW5QYXRofSBleGlzdHMsIHNraXAgZXh0cmFjdGluZ2ApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0YXJBcmNoaXZlID0gZG93bmxvYWQocHJvY2Vzcy5hcmNoLCB0aGlzLnRhcmdldC50cmlwbGUpXG4gICAgICAgIHRhckFyY2hpdmUudW5wYWNrKHRvb2xjaGFpblBhdGgpXG4gICAgICB9XG4gICAgICBjb25zdCB1cHBlckNhc2VUYXJnZXQgPSB0YXJnZXRUb0VudlZhcih0aGlzLnRhcmdldC50cmlwbGUpXG4gICAgICBjb25zdCBjcm9zc1RhcmdldE5hbWUgPSBhbGlhc1t0aGlzLnRhcmdldC50cmlwbGVdID8/IHRoaXMudGFyZ2V0LnRyaXBsZVxuICAgICAgY29uc3QgbGlua2VyRW52ID0gYENBUkdPX1RBUkdFVF8ke3VwcGVyQ2FzZVRhcmdldH1fTElOS0VSYFxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgbGlua2VyRW52LFxuICAgICAgICBqb2luKHRvb2xjaGFpblBhdGgsICdiaW4nLCBgJHtjcm9zc1RhcmdldE5hbWV9LWdjY2ApLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9TWVNST09UJyxcbiAgICAgICAgam9pbih0b29sY2hhaW5QYXRoLCBjcm9zc1RhcmdldE5hbWUsICdzeXNyb290JyksXG4gICAgICApXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKFxuICAgICAgICAnVEFSR0VUX0FSJyxcbiAgICAgICAgam9pbih0b29sY2hhaW5QYXRoLCAnYmluJywgYCR7Y3Jvc3NUYXJnZXROYW1lfS1hcmApLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9SQU5MSUInLFxuICAgICAgICBqb2luKHRvb2xjaGFpblBhdGgsICdiaW4nLCBgJHtjcm9zc1RhcmdldE5hbWV9LXJhbmxpYmApLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9SRUFERUxGJyxcbiAgICAgICAgam9pbih0b29sY2hhaW5QYXRoLCAnYmluJywgYCR7Y3Jvc3NUYXJnZXROYW1lfS1yZWFkZWxmYCksXG4gICAgICApXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKFxuICAgICAgICAnVEFSR0VUX0NfSU5DTFVERV9QQVRIJyxcbiAgICAgICAgam9pbih0b29sY2hhaW5QYXRoLCBjcm9zc1RhcmdldE5hbWUsICdzeXNyb290JywgJ3VzcicsICdpbmNsdWRlLycpLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9DQycsXG4gICAgICAgIGpvaW4odG9vbGNoYWluUGF0aCwgJ2JpbicsIGAke2Nyb3NzVGFyZ2V0TmFtZX0tZ2NjYCksXG4gICAgICApXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKFxuICAgICAgICAnVEFSR0VUX0NYWCcsXG4gICAgICAgIGpvaW4odG9vbGNoYWluUGF0aCwgJ2JpbicsIGAke2Nyb3NzVGFyZ2V0TmFtZX0tZysrYCksXG4gICAgICApXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKFxuICAgICAgICAnQklOREdFTl9FWFRSQV9DTEFOR19BUkdTJyxcbiAgICAgICAgYC0tc3lzcm9vdD0ke3RoaXMuZW52cy5UQVJHRVRfU1lTUk9PVH19YCxcbiAgICAgIClcblxuICAgICAgaWYgKFxuICAgICAgICBwcm9jZXNzLmVudi5UQVJHRVRfQ0M/LnN0YXJ0c1dpdGgoJ2NsYW5nJykgfHxcbiAgICAgICAgKHByb2Nlc3MuZW52LkNDPy5zdGFydHNXaXRoKCdjbGFuZycpICYmICFwcm9jZXNzLmVudi5UQVJHRVRfQ0MpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgVEFSR0VUX0NGTEFHUyA9IHByb2Nlc3MuZW52LlRBUkdFVF9DRkxBR1MgPz8gJydcbiAgICAgICAgdGhpcy5lbnZzLlRBUkdFVF9DRkxBR1MgPSBgLS1zeXNyb290PSR7dGhpcy5lbnZzLlRBUkdFVF9TWVNST09UfSAtLWdjYy10b29sY2hhaW49JHt0b29sY2hhaW5QYXRofSAke1RBUkdFVF9DRkxBR1N9YFxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAocHJvY2Vzcy5lbnYuQ1hYPy5zdGFydHNXaXRoKCdjbGFuZysrJykgJiYgIXByb2Nlc3MuZW52LlRBUkdFVF9DWFgpIHx8XG4gICAgICAgIHByb2Nlc3MuZW52LlRBUkdFVF9DWFg/LnN0YXJ0c1dpdGgoJ2NsYW5nKysnKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IFRBUkdFVF9DWFhGTEFHUyA9IHByb2Nlc3MuZW52LlRBUkdFVF9DWFhGTEFHUyA/PyAnJ1xuICAgICAgICB0aGlzLmVudnMuVEFSR0VUX0NYWEZMQUdTID0gYC0tc3lzcm9vdD0ke3RoaXMuZW52cy5UQVJHRVRfU1lTUk9PVH0gLS1nY2MtdG9vbGNoYWluPSR7dG9vbGNoYWluUGF0aH0gJHtUQVJHRVRfQ1hYRkxBR1N9YFxuICAgICAgfVxuICAgICAgdGhpcy5lbnZzLlBBVEggPSB0aGlzLmVudnMuUEFUSFxuICAgICAgICA/IGAke3Rvb2xjaGFpblBhdGh9L2Jpbjoke3RoaXMuZW52cy5QQVRIfToke3Byb2Nlc3MuZW52LlBBVEh9YFxuICAgICAgICA6IGAke3Rvb2xjaGFpblBhdGh9L2Jpbjoke3Byb2Nlc3MuZW52LlBBVEh9YFxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGRlYnVnLndhcm4oJ1BpY2sgY3Jvc3MgdG9vbGNoYWluIGZhaWxlZCcsIGUgYXMgRXJyb3IpXG4gICAgICAvLyBpZ25vcmUsIGRvIG5vdGhpbmdcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHByaXZhdGUgZXhlYygpIHtcbiAgICBkZWJ1ZyhgU3RhcnQgYnVpbGRpbmcgY3JhdGU6ICR7dGhpcy5jcmF0ZS5uYW1lfWApXG4gICAgZGVidWcoJyAgJWknLCBgY2FyZ28gJHt0aGlzLmFyZ3Muam9pbignICcpfWApXG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG5cbiAgICBjb25zdCB3YXRjaCA9IHRoaXMub3B0aW9ucy53YXRjaFxuICAgIGNvbnN0IGJ1aWxkVGFzayA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudXNlQ3Jvc3MgJiYgdGhpcy5vcHRpb25zLmNyb3NzQ29tcGlsZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2AtLXVzZS1jcm9zc2AgYW5kIGAtLWNyb3NzLWNvbXBpbGVgIGNhbiBub3QgYmUgdXNlZCB0b2dldGhlcicsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbW1hbmQgPVxuICAgICAgICBwcm9jZXNzLmVudi5DQVJHTyA/PyAodGhpcy5vcHRpb25zLnVzZUNyb3NzID8gJ2Nyb3NzJyA6ICdjYXJnbycpXG4gICAgICBjb25zdCBidWlsZFByb2Nlc3MgPSBzcGF3bihjb21tYW5kLCB0aGlzLmFyZ3MsIHtcbiAgICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52LCAuLi50aGlzLmVudnMgfSxcbiAgICAgICAgc3RkaW86IHdhdGNoID8gWydpbmhlcml0JywgJ2luaGVyaXQnLCAncGlwZSddIDogJ2luaGVyaXQnLFxuICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QsXG4gICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgICB9KVxuXG4gICAgICBidWlsZFByb2Nlc3Mub25jZSgnZXhpdCcsIChjb2RlKSA9PiB7XG4gICAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgICAgZGVidWcoJyVpJywgYEJ1aWxkIGNyYXRlICR7dGhpcy5jcmF0ZS5uYW1lfSBzdWNjZXNzZnVsbHkhYClcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBCdWlsZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJHtjb2RlfWApKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBidWlsZFByb2Nlc3Mub25jZSgnZXJyb3InLCAoZSkgPT4ge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBCdWlsZCBmYWlsZWQgd2l0aCBlcnJvcjogJHtlLm1lc3NhZ2V9YCwgeyBjYXVzZTogZSB9KSlcbiAgICAgIH0pXG5cbiAgICAgIC8vIHdhdGNoIG1vZGUgb25seSwgdGhleSBhcmUgcGlwZWQgdGhyb3VnaCBzdGRlcnJcbiAgICAgIGJ1aWxkUHJvY2Vzcy5zdGRlcnI/Lm9uKCdkYXRhJywgKGRhdGEpID0+IHtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZGF0YS50b1N0cmluZygpXG4gICAgICAgIGNvbnNvbGUuZXJyb3Iob3V0cHV0KVxuICAgICAgICBpZiAoL0ZpbmlzaGVkXFxzKGBkZXZgfGByZWxlYXNlYCkvLnRlc3Qob3V0cHV0KSkge1xuICAgICAgICAgIHRoaXMucG9zdEJ1aWxkKCkuY2F0Y2goKCkgPT4ge30pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcblxuICAgIHJldHVybiB7XG4gICAgICB0YXNrOiBidWlsZFRhc2sudGhlbigoKSA9PiB0aGlzLnBvc3RCdWlsZCgpKSxcbiAgICAgIGFib3J0OiAoKSA9PiBjb250cm9sbGVyLmFib3J0KCksXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwaWNrQmluYXJ5KCkge1xuICAgIGxldCBzZXQgPSBmYWxzZVxuICAgIGlmICh0aGlzLm9wdGlvbnMud2F0Y2gpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5DSSkge1xuICAgICAgICBkZWJ1Zy53YXJuKCdXYXRjaCBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gQ0kgZW52aXJvbm1lbnQnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVidWcoJ1VzZSAlaScsICdjYXJnby13YXRjaCcpXG4gICAgICAgIHRyeUluc3RhbGxDYXJnb0JpbmFyeSgnY2FyZ28td2F0Y2gnLCAnd2F0Y2gnKVxuICAgICAgICAvLyB5YXJuIG5hcGkgd2F0Y2ggLS10YXJnZXQgeDg2XzY0LXVua25vd24tbGludXgtZ251IFstLWNyb3NzLWNvbXBpbGVdXG4gICAgICAgIC8vID09PT5cbiAgICAgICAgLy8gY2FyZ28gd2F0Y2ggWy4uLl0gLS0gYnVpbGQgLS10YXJnZXQgeDg2XzY0LXVua25vd24tbGludXgtZ251XG4gICAgICAgIC8vIGNhcmdvIHdhdGNoIFsuLi5dIC0tIHppZ2J1aWxkIC0tdGFyZ2V0IHg4Nl82NC11bmtub3duLWxpbnV4LWdudVxuICAgICAgICB0aGlzLmFyZ3MucHVzaChcbiAgICAgICAgICAnd2F0Y2gnLFxuICAgICAgICAgICctLXdoeScsXG4gICAgICAgICAgJy1pJyxcbiAgICAgICAgICAnKi57anMsdHMsbm9kZX0nLFxuICAgICAgICAgICctdycsXG4gICAgICAgICAgdGhpcy5jcmF0ZURpcixcbiAgICAgICAgICAnLS0nLFxuICAgICAgICAgICdjYXJnbycsXG4gICAgICAgICAgJ2J1aWxkJyxcbiAgICAgICAgKVxuICAgICAgICBzZXQgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jcm9zc0NvbXBpbGUpIHtcbiAgICAgIGlmICh0aGlzLnRhcmdldC5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgICAgICAnWW91IGFyZSB0cnlpbmcgdG8gY3Jvc3MgY29tcGlsZSB0byB3aW4zMiBwbGF0Zm9ybSBvbiB3aW4zMiBwbGF0Zm9ybSB3aGljaCBpcyB1bm5lY2Vzc2FyeS4nLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB1c2UgY2FyZ28teHdpbiB0byBjcm9zcyBjb21waWxlIHRvIHdpbjMyIHBsYXRmb3JtXG4gICAgICAgICAgZGVidWcoJ1VzZSAlaScsICdjYXJnby14d2luJylcbiAgICAgICAgICB0cnlJbnN0YWxsQ2FyZ29CaW5hcnkoJ2NhcmdvLXh3aW4nLCAneHdpbicpXG4gICAgICAgICAgdGhpcy5hcmdzLnB1c2goJ3h3aW4nLCAnYnVpbGQnKVxuICAgICAgICAgIGlmICh0aGlzLnRhcmdldC5hcmNoID09PSAnaWEzMicpIHtcbiAgICAgICAgICAgIHRoaXMuZW52cy5YV0lOX0FSQ0ggPSAneDg2J1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXQgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnRhcmdldC5wbGF0Zm9ybSA9PT0gJ2xpbnV4JyAmJlxuICAgICAgICAgIHByb2Nlc3MucGxhdGZvcm0gPT09ICdsaW51eCcgJiZcbiAgICAgICAgICB0aGlzLnRhcmdldC5hcmNoID09PSBwcm9jZXNzLmFyY2ggJiZcbiAgICAgICAgICAoZnVuY3Rpb24gKGFiaTogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgZ2xpYmNWZXJzaW9uUnVudGltZSA9XG4gICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgICAgcHJvY2Vzcy5yZXBvcnQ/LmdldFJlcG9ydCgpPy5oZWFkZXI/LmdsaWJjVmVyc2lvblJ1bnRpbWVcbiAgICAgICAgICAgIGNvbnN0IGxpYmMgPSBnbGliY1ZlcnNpb25SdW50aW1lID8gJ2dudScgOiAnbXVzbCdcbiAgICAgICAgICAgIHJldHVybiBhYmkgPT09IGxpYmNcbiAgICAgICAgICB9KSh0aGlzLnRhcmdldC5hYmkpXG4gICAgICAgICkge1xuICAgICAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgICAgICAnWW91IGFyZSB0cnlpbmcgdG8gY3Jvc3MgY29tcGlsZSB0byBsaW51eCB0YXJnZXQgb24gbGludXggcGxhdGZvcm0gd2hpY2ggaXMgdW5uZWNlc3NhcnkuJyxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgdGhpcy50YXJnZXQucGxhdGZvcm0gPT09ICdkYXJ3aW4nICYmXG4gICAgICAgICAgcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgZGVidWcud2FybihcbiAgICAgICAgICAgICdZb3UgYXJlIHRyeWluZyB0byBjcm9zcyBjb21waWxlIHRvIGRhcndpbiB0YXJnZXQgb24gZGFyd2luIHBsYXRmb3JtIHdoaWNoIGlzIHVubmVjZXNzYXJ5LicsXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHVzZSBjYXJnby16aWdidWlsZCB0byBjcm9zcyBjb21waWxlIHRvIG90aGVyIHBsYXRmb3Jtc1xuICAgICAgICAgIGRlYnVnKCdVc2UgJWknLCAnY2FyZ28temlnYnVpbGQnKVxuICAgICAgICAgIHRyeUluc3RhbGxDYXJnb0JpbmFyeSgnY2FyZ28temlnYnVpbGQnLCAnemlnYnVpbGQnKVxuICAgICAgICAgIHRoaXMuYXJncy5wdXNoKCd6aWdidWlsZCcpXG4gICAgICAgICAgc2V0ID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFzZXQpIHtcbiAgICAgIHRoaXMuYXJncy5wdXNoKCdidWlsZCcpXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBwcml2YXRlIHNldFBhY2thZ2UoKSB7XG4gICAgY29uc3QgYXJncyA9IFtdXG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnBhY2thZ2UpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1wYWNrYWdlJywgdGhpcy5vcHRpb25zLnBhY2thZ2UpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYmluTmFtZSkge1xuICAgICAgYXJncy5wdXNoKCctLWJpbicsIHRoaXMuYmluTmFtZSlcbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGgpIHtcbiAgICAgIGRlYnVnKCdTZXQgcGFja2FnZSBmbGFnczogJylcbiAgICAgIGRlYnVnKCcgICVPJywgYXJncylcbiAgICAgIHRoaXMuYXJncy5wdXNoKC4uLmFyZ3MpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFyZ2V0KCkge1xuICAgIGRlYnVnKCdTZXQgY29tcGlsaW5nIHRhcmdldCB0bzogJylcbiAgICBkZWJ1ZygnICAlaScsIHRoaXMudGFyZ2V0LnRyaXBsZSlcblxuICAgIHRoaXMuYXJncy5wdXNoKCctLXRhcmdldCcsIHRoaXMudGFyZ2V0LnRyaXBsZSlcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBwcml2YXRlIHNldEVudnMoKSB7XG4gICAgLy8gVFlQRSBERUZcbiAgICBpZiAodGhpcy5lbmFibGVUeXBlRGVmKSB7XG4gICAgICB0aGlzLmVudnMuTkFQSV9UWVBFX0RFRl9UTVBfRk9MREVSID1cbiAgICAgICAgdGhpcy5nZW5lcmF0ZUludGVybWVkaWF0ZVR5cGVEZWZGb2xkZXIoKVxuICAgICAgdGhpcy5zZXRGb3JjZUJ1aWxkRW52cyh0aGlzLmVudnMuTkFQSV9UWVBFX0RFRl9UTVBfRk9MREVSKVxuICAgIH1cblxuICAgIC8vIFJVU1RGTEFHU1xuICAgIGxldCBydXN0ZmxhZ3MgPVxuICAgICAgcHJvY2Vzcy5lbnYuUlVTVEZMQUdTID8/IHByb2Nlc3MuZW52LkNBUkdPX0JVSUxEX1JVU1RGTEFHUyA/PyAnJ1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy50YXJnZXQuYWJpPy5pbmNsdWRlcygnbXVzbCcpICYmXG4gICAgICAhcnVzdGZsYWdzLmluY2x1ZGVzKCd0YXJnZXQtZmVhdHVyZT0tY3J0LXN0YXRpYycpXG4gICAgKSB7XG4gICAgICBydXN0ZmxhZ3MgKz0gJyAtQyB0YXJnZXQtZmVhdHVyZT0tY3J0LXN0YXRpYydcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnN0cmlwICYmICFydXN0ZmxhZ3MuaW5jbHVkZXMoJ2xpbmstYXJnPS1zJykpIHtcbiAgICAgIHJ1c3RmbGFncyArPSAnIC1DIGxpbmstYXJnPS1zJ1xuICAgIH1cblxuICAgIGlmIChydXN0ZmxhZ3MubGVuZ3RoKSB7XG4gICAgICB0aGlzLmVudnMuUlVTVEZMQUdTID0gcnVzdGZsYWdzXG4gICAgfVxuICAgIC8vIEVORCBSVVNURkxBR1NcblxuICAgIC8vIExJTktFUlxuICAgIGNvbnN0IGxpbmtlciA9IHRoaXMub3B0aW9ucy5jcm9zc0NvbXBpbGVcbiAgICAgID8gdm9pZCAwXG4gICAgICA6IGdldFRhcmdldExpbmtlcih0aGlzLnRhcmdldC50cmlwbGUpXG4gICAgLy8gVE9ETzpcbiAgICAvLyAgIGRpcmVjdGx5IHNldCBDQVJHT19UQVJHRVRfPHRhcmdldD5fTElOS0VSIHdpbGwgY292ZXIgLmNhcmdvL2NvbmZpZy50b21sXG4gICAgLy8gICB3aWxsIGRldGVjdCBieSBjYXJnbyBjb25maWcgd2hlbiBpdCBiZWNvbWVzIHN0YWJsZVxuICAgIC8vICAgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vcnVzdC1sYW5nL2NhcmdvL2lzc3Vlcy85MzAxXG4gICAgY29uc3QgbGlua2VyRW52ID0gYENBUkdPX1RBUkdFVF8ke3RhcmdldFRvRW52VmFyKFxuICAgICAgdGhpcy50YXJnZXQudHJpcGxlLFxuICAgICl9X0xJTktFUmBcbiAgICBpZiAobGlua2VyICYmICFwcm9jZXNzLmVudltsaW5rZXJFbnZdICYmICF0aGlzLmVudnNbbGlua2VyRW52XSkge1xuICAgICAgdGhpcy5lbnZzW2xpbmtlckVudl0gPSBsaW5rZXJcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YXJnZXQucGxhdGZvcm0gPT09ICdhbmRyb2lkJykge1xuICAgICAgdGhpcy5zZXRBbmRyb2lkRW52KClcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YXJnZXQucGxhdGZvcm0gPT09ICd3YXNpJykge1xuICAgICAgdGhpcy5zZXRXYXNpRW52KClcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YXJnZXQucGxhdGZvcm0gPT09ICdvcGVuaGFybW9ueScpIHtcbiAgICAgIHRoaXMuc2V0T3Blbkhhcm1vbnlFbnYoKVxuICAgIH1cblxuICAgIGRlYnVnKCdTZXQgZW52czogJylcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLmVudnMpLmZvckVhY2goKFtrLCB2XSkgPT4ge1xuICAgICAgZGVidWcoJyAgJWknLCBgJHtrfT0ke3Z9YClcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9yY2VCdWlsZEVudnModHlwZURlZlRtcEZvbGRlcjogc3RyaW5nKSB7XG4gICAgLy8gZHluYW1pY2FsbHkgY2hlY2sgYWxsIG5hcGktcnMgZGVwcyBhbmQgc2V0IGBOQVBJX0ZPUkNFX0JVSUxEX3t1cHBlcmNhc2Uoc25ha2VfY2FzZShuYW1lKSl9ID0gdGltZXN0YW1wYFxuICAgIHRoaXMubWV0YWRhdGEucGFja2FnZXMuZm9yRWFjaCgoY3JhdGUpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgY3JhdGUuZGVwZW5kZW5jaWVzLnNvbWUoKGQpID0+IGQubmFtZSA9PT0gJ25hcGktZGVyaXZlJykgJiZcbiAgICAgICAgIWV4aXN0c1N5bmMoam9pbih0eXBlRGVmVG1wRm9sZGVyLCBjcmF0ZS5uYW1lKSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLmVudnNbXG4gICAgICAgICAgYE5BUElfRk9SQ0VfQlVJTERfJHtjcmF0ZS5uYW1lLnJlcGxhY2UoLy0vZywgJ18nKS50b1VwcGVyQ2FzZSgpfWBcbiAgICAgICAgXSA9IERhdGUubm93KCkudG9TdHJpbmcoKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHNldEFuZHJvaWRFbnYoKSB7XG4gICAgY29uc3QgeyBBTkRST0lEX05ES19MQVRFU1RfSE9NRSB9ID0gcHJvY2Vzcy5lbnZcbiAgICBpZiAoIUFORFJPSURfTkRLX0xBVEVTVF9IT01FKSB7XG4gICAgICBkZWJ1Zy53YXJuKFxuICAgICAgICBgJHtjb2xvcnMucmVkKFxuICAgICAgICAgICdBTkRST0lEX05ES19MQVRFU1RfSE9NRScsXG4gICAgICAgICl9IGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG1pc3NpbmdgLFxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIHNraXAgY3Jvc3MgY29tcGlsZSBzZXR1cCBpZiBob3N0IGlzIGFuZHJvaWRcbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2FuZHJvaWQnKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRBcmNoID0gdGhpcy50YXJnZXQuYXJjaCA9PT0gJ2FybScgPyAnYXJtdjdhJyA6ICdhYXJjaDY0J1xuICAgIGNvbnN0IHRhcmdldFBsYXRmb3JtID1cbiAgICAgIHRoaXMudGFyZ2V0LmFyY2ggPT09ICdhcm0nID8gJ2FuZHJvaWRlYWJpMjQnIDogJ2FuZHJvaWQyNCdcbiAgICBjb25zdCBob3N0UGxhdGZvcm0gPVxuICAgICAgcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbidcbiAgICAgICAgPyAnZGFyd2luJ1xuICAgICAgICA6IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMidcbiAgICAgICAgICA/ICd3aW5kb3dzJ1xuICAgICAgICAgIDogJ2xpbnV4J1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5lbnZzLCB7XG4gICAgICBDQVJHT19UQVJHRVRfQUFSQ0g2NF9MSU5VWF9BTkRST0lEX0xJTktFUjogYCR7QU5EUk9JRF9OREtfTEFURVNUX0hPTUV9L3Rvb2xjaGFpbnMvbGx2bS9wcmVidWlsdC8ke2hvc3RQbGF0Zm9ybX0teDg2XzY0L2Jpbi8ke3RhcmdldEFyY2h9LWxpbnV4LWFuZHJvaWQyNC1jbGFuZ2AsXG4gICAgICBDQVJHT19UQVJHRVRfQVJNVjdfTElOVVhfQU5EUk9JREVBQklfTElOS0VSOiBgJHtBTkRST0lEX05ES19MQVRFU1RfSE9NRX0vdG9vbGNoYWlucy9sbHZtL3ByZWJ1aWx0LyR7aG9zdFBsYXRmb3JtfS14ODZfNjQvYmluLyR7dGFyZ2V0QXJjaH0tbGludXgtYW5kcm9pZGVhYmkyNC1jbGFuZ2AsXG4gICAgICBUQVJHRVRfQ0M6IGAke0FORFJPSURfTkRLX0xBVEVTVF9IT01FfS90b29sY2hhaW5zL2xsdm0vcHJlYnVpbHQvJHtob3N0UGxhdGZvcm19LXg4Nl82NC9iaW4vJHt0YXJnZXRBcmNofS1saW51eC0ke3RhcmdldFBsYXRmb3JtfS1jbGFuZ2AsXG4gICAgICBUQVJHRVRfQ1hYOiBgJHtBTkRST0lEX05ES19MQVRFU1RfSE9NRX0vdG9vbGNoYWlucy9sbHZtL3ByZWJ1aWx0LyR7aG9zdFBsYXRmb3JtfS14ODZfNjQvYmluLyR7dGFyZ2V0QXJjaH0tbGludXgtJHt0YXJnZXRQbGF0Zm9ybX0tY2xhbmcrK2AsXG4gICAgICBUQVJHRVRfQVI6IGAke0FORFJPSURfTkRLX0xBVEVTVF9IT01FfS90b29sY2hhaW5zL2xsdm0vcHJlYnVpbHQvJHtob3N0UGxhdGZvcm19LXg4Nl82NC9iaW4vbGx2bS1hcmAsXG4gICAgICBUQVJHRVRfUkFOTElCOiBgJHtBTkRST0lEX05ES19MQVRFU1RfSE9NRX0vdG9vbGNoYWlucy9sbHZtL3ByZWJ1aWx0LyR7aG9zdFBsYXRmb3JtfS14ODZfNjQvYmluL2xsdm0tcmFubGliYCxcbiAgICAgIEFORFJPSURfTkRLOiBBTkRST0lEX05ES19MQVRFU1RfSE9NRSxcbiAgICAgIFBBVEg6IGAke0FORFJPSURfTkRLX0xBVEVTVF9IT01FfS90b29sY2hhaW5zL2xsdm0vcHJlYnVpbHQvJHtob3N0UGxhdGZvcm19LXg4Nl82NC9iaW4ke3Byb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyAnOycgOiAnOid9JHtwcm9jZXNzLmVudi5QQVRIfWAsXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgc2V0V2FzaUVudigpIHtcbiAgICBjb25zdCBlbW5hcGkgPSBqb2luKFxuICAgICAgcmVxdWlyZS5yZXNvbHZlKCdlbW5hcGknKSxcbiAgICAgICcuLicsXG4gICAgICAnbGliJyxcbiAgICAgICd3YXNtMzItd2FzaS10aHJlYWRzJyxcbiAgICApXG4gICAgdGhpcy5lbnZzLkVNTkFQSV9MSU5LX0RJUiA9IGVtbmFwaVxuICAgIGNvbnN0IHsgV0FTSV9TREtfUEFUSCB9ID0gcHJvY2Vzcy5lbnZcblxuICAgIGlmIChXQVNJX1NES19QQVRIICYmIGV4aXN0c1N5bmMoV0FTSV9TREtfUEFUSCkpIHtcbiAgICAgIHRoaXMuZW52cy5DQVJHT19UQVJHRVRfV0FTTTMyX1dBU0lfUFJFVklFVzFfVEhSRUFEU19MSU5LRVIgPSBqb2luKFxuICAgICAgICBXQVNJX1NES19QQVRILFxuICAgICAgICAnYmluJyxcbiAgICAgICAgJ3dhc20tbGQnLFxuICAgICAgKVxuICAgICAgdGhpcy5lbnZzLkNBUkdPX1RBUkdFVF9XQVNNMzJfV0FTSVAxX0xJTktFUiA9IGpvaW4oXG4gICAgICAgIFdBU0lfU0RLX1BBVEgsXG4gICAgICAgICdiaW4nLFxuICAgICAgICAnd2FzbS1sZCcsXG4gICAgICApXG4gICAgICB0aGlzLmVudnMuQ0FSR09fVEFSR0VUX1dBU00zMl9XQVNJUDFfVEhSRUFEU19MSU5LRVIgPSBqb2luKFxuICAgICAgICBXQVNJX1NES19QQVRILFxuICAgICAgICAnYmluJyxcbiAgICAgICAgJ3dhc20tbGQnLFxuICAgICAgKVxuICAgICAgdGhpcy5lbnZzLkNBUkdPX1RBUkdFVF9XQVNNMzJfV0FTSVAyX0xJTktFUiA9IGpvaW4oXG4gICAgICAgIFdBU0lfU0RLX1BBVEgsXG4gICAgICAgICdiaW4nLFxuICAgICAgICAnd2FzbS1sZCcsXG4gICAgICApXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKCdUQVJHRVRfQ0MnLCBqb2luKFdBU0lfU0RLX1BBVEgsICdiaW4nLCAnY2xhbmcnKSlcbiAgICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoXG4gICAgICAgICdUQVJHRVRfQ1hYJyxcbiAgICAgICAgam9pbihXQVNJX1NES19QQVRILCAnYmluJywgJ2NsYW5nKysnKSxcbiAgICAgIClcbiAgICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ1RBUkdFVF9BUicsIGpvaW4oV0FTSV9TREtfUEFUSCwgJ2JpbicsICdhcicpKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9SQU5MSUInLFxuICAgICAgICBqb2luKFdBU0lfU0RLX1BBVEgsICdiaW4nLCAncmFubGliJyksXG4gICAgICApXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKFxuICAgICAgICAnVEFSR0VUX0NGTEFHUycsXG4gICAgICAgIGAtLXRhcmdldD13YXNtMzItd2FzaS10aHJlYWRzIC0tc3lzcm9vdD0ke1dBU0lfU0RLX1BBVEh9L3NoYXJlL3dhc2ktc3lzcm9vdCAtcHRocmVhZCAtbWxsdm0gLXdhc20tZW5hYmxlLXNqbGpgLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9DWFhGTEFHUycsXG4gICAgICAgIGAtLXRhcmdldD13YXNtMzItd2FzaS10aHJlYWRzIC0tc3lzcm9vdD0ke1dBU0lfU0RLX1BBVEh9L3NoYXJlL3dhc2ktc3lzcm9vdCAtcHRocmVhZCAtbWxsdm0gLXdhc20tZW5hYmxlLXNqbGpgLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgYFRBUkdFVF9MREZMQUdTYCxcbiAgICAgICAgYC1mdXNlLWxkPSR7V0FTSV9TREtfUEFUSH0vYmluL3dhc20tbGQgLS10YXJnZXQ9d2FzbTMyLXdhc2ktdGhyZWFkc2AsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRPcGVuSGFybW9ueUVudigpIHtcbiAgICBjb25zdCB7IE9IT1NfU0RLX1BBVEgsIE9IT1NfU0RLX05BVElWRSB9ID0gcHJvY2Vzcy5lbnZcbiAgICBjb25zdCBuZGtQYXRoID0gT0hPU19TREtfUEFUSCA/IGAke09IT1NfU0RLX1BBVEh9L25hdGl2ZWAgOiBPSE9TX1NES19OQVRJVkVcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgaWYgKCFuZGtQYXRoICYmIHByb2Nlc3MucGxhdGZvcm0gIT09ICdvcGVuaGFybW9ueScpIHtcbiAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgIGAke2NvbG9ycy5yZWQoJ09IT1NfU0RLX1BBVEgnKX0gb3IgJHtjb2xvcnMucmVkKCdPSE9TX1NES19OQVRJVkUnKX0gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbWlzc2luZ2AsXG4gICAgICApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgbGlua2VyTmFtZSA9IGBDQVJHT19UQVJHRVRfJHt0aGlzLnRhcmdldC50cmlwbGUudG9VcHBlckNhc2UoKS5yZXBsYWNlKC8tL2csICdfJyl9X0xJTktFUmBcbiAgICBjb25zdCByYW5QYXRoID0gYCR7bmRrUGF0aH0vbGx2bS9iaW4vbGx2bS1yYW5saWJgXG4gICAgY29uc3QgYXJQYXRoID0gYCR7bmRrUGF0aH0vbGx2bS9iaW4vbGx2bS1hcmBcbiAgICBjb25zdCBjY1BhdGggPSBgJHtuZGtQYXRofS9sbHZtL2Jpbi8ke3RoaXMudGFyZ2V0LnRyaXBsZX0tY2xhbmdgXG4gICAgY29uc3QgY3h4UGF0aCA9IGAke25ka1BhdGh9L2xsdm0vYmluLyR7dGhpcy50YXJnZXQudHJpcGxlfS1jbGFuZysrYFxuICAgIGNvbnN0IGFzUGF0aCA9IGAke25ka1BhdGh9L2xsdm0vYmluL2xsdm0tYXNgXG4gICAgY29uc3QgbGRQYXRoID0gYCR7bmRrUGF0aH0vbGx2bS9iaW4vbGQubGxkYFxuICAgIGNvbnN0IHN0cmlwUGF0aCA9IGAke25ka1BhdGh9L2xsdm0vYmluL2xsdm0tc3RyaXBgXG4gICAgY29uc3Qgb2JqRHVtcFBhdGggPSBgJHtuZGtQYXRofS9sbHZtL2Jpbi9sbHZtLW9iamR1bXBgXG4gICAgY29uc3Qgb2JqQ29weVBhdGggPSBgJHtuZGtQYXRofS9sbHZtL2Jpbi9sbHZtLW9iamNvcHlgXG4gICAgY29uc3Qgbm1QYXRoID0gYCR7bmRrUGF0aH0vbGx2bS9iaW4vbGx2bS1ubWBcbiAgICBjb25zdCBiaW5QYXRoID0gYCR7bmRrUGF0aH0vbGx2bS9iaW5gXG4gICAgY29uc3QgbGliUGF0aCA9IGAke25ka1BhdGh9L2xsdm0vbGliYFxuXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnTElCQ0xBTkdfUEFUSCcsIGxpYlBhdGgpXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnREVQX0FUT01JQycsICdjbGFuZ19ydC5idWlsdGlucycpXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhsaW5rZXJOYW1lLCBjY1BhdGgpXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnVEFSR0VUX0NDJywgY2NQYXRoKVxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ1RBUkdFVF9DWFgnLCBjeHhQYXRoKVxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ1RBUkdFVF9BUicsIGFyUGF0aClcbiAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKCdUQVJHRVRfUkFOTElCJywgcmFuUGF0aClcbiAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKCdUQVJHRVRfQVMnLCBhc1BhdGgpXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnVEFSR0VUX0xEJywgbGRQYXRoKVxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ1RBUkdFVF9TVFJJUCcsIHN0cmlwUGF0aClcbiAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKCdUQVJHRVRfT0JKRFVNUCcsIG9iakR1bXBQYXRoKVxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ1RBUkdFVF9PQkpDT1BZJywgb2JqQ29weVBhdGgpXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnVEFSR0VUX05NJywgbm1QYXRoKVxuICAgIHRoaXMuZW52cy5QQVRIID0gYCR7YmluUGF0aH0ke3Byb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyAnOycgOiAnOid9JHtwcm9jZXNzLmVudi5QQVRIfWBcbiAgfVxuXG4gIHByaXZhdGUgc2V0RmVhdHVyZXMoKSB7XG4gICAgY29uc3QgYXJncyA9IFtdXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxGZWF0dXJlcyAmJiB0aGlzLm9wdGlvbnMubm9EZWZhdWx0RmVhdHVyZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBzcGVjaWZ5IC0tYWxsLWZlYXR1cmVzIGFuZCAtLW5vLWRlZmF1bHQtZmVhdHVyZXMgdG9nZXRoZXInLFxuICAgICAgKVxuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLmFsbEZlYXR1cmVzKSB7XG4gICAgICBhcmdzLnB1c2goJy0tYWxsLWZlYXR1cmVzJylcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5ub0RlZmF1bHRGZWF0dXJlcykge1xuICAgICAgYXJncy5wdXNoKCctLW5vLWRlZmF1bHQtZmVhdHVyZXMnKVxuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLmZlYXR1cmVzKSB7XG4gICAgICBhcmdzLnB1c2goJy0tZmVhdHVyZXMnLCAuLi50aGlzLm9wdGlvbnMuZmVhdHVyZXMpXG4gICAgfVxuXG4gICAgZGVidWcoJ1NldCBmZWF0dXJlcyBmbGFnczogJylcbiAgICBkZWJ1ZygnICAlTycsIGFyZ3MpXG4gICAgdGhpcy5hcmdzLnB1c2goLi4uYXJncylcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBwcml2YXRlIHNldEJ5cGFzc0FyZ3MoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5yZWxlYXNlKSB7XG4gICAgICB0aGlzLmFyZ3MucHVzaCgnLS1yZWxlYXNlJylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgIHRoaXMuYXJncy5wdXNoKCctLXZlcmJvc2UnKVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMudGFyZ2V0RGlyKSB7XG4gICAgICB0aGlzLmFyZ3MucHVzaCgnLS10YXJnZXQtZGlyJywgdGhpcy5vcHRpb25zLnRhcmdldERpcilcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnByb2ZpbGUpIHtcbiAgICAgIHRoaXMuYXJncy5wdXNoKCctLXByb2ZpbGUnLCB0aGlzLm9wdGlvbnMucHJvZmlsZSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm1hbmlmZXN0UGF0aCkge1xuICAgICAgdGhpcy5hcmdzLnB1c2goJy0tbWFuaWZlc3QtcGF0aCcsIHRoaXMub3B0aW9ucy5tYW5pZmVzdFBhdGgpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jYXJnb09wdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5hcmdzLnB1c2goLi4udGhpcy5vcHRpb25zLmNhcmdvT3B0aW9ucylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUludGVybWVkaWF0ZVR5cGVEZWZGb2xkZXIoKSB7XG4gICAgbGV0IGZvbGRlciA9IGpvaW4oXG4gICAgICB0aGlzLnRhcmdldERpcixcbiAgICAgICduYXBpLXJzJyxcbiAgICAgIGAke3RoaXMuY3JhdGUubmFtZX0tJHtjcmVhdGVIYXNoKCdzaGEyNTYnKVxuICAgICAgICAudXBkYXRlKHRoaXMuY3JhdGUubWFuaWZlc3RfcGF0aClcbiAgICAgICAgLnVwZGF0ZShDTElfVkVSU0lPTilcbiAgICAgICAgLmRpZ2VzdCgnaGV4JylcbiAgICAgICAgLnN1YnN0cmluZygwLCA4KX1gLFxuICAgIClcblxuICAgIGlmICghdGhpcy5vcHRpb25zLmR0c0NhY2hlKSB7XG4gICAgICBybVN5bmMoZm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcbiAgICAgIGZvbGRlciArPSBgXyR7RGF0ZS5ub3coKX1gXG4gICAgfVxuXG4gICAgbWtkaXJBc3luYyhmb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG5cbiAgICByZXR1cm4gZm9sZGVyXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBvc3RCdWlsZCgpIHtcbiAgICB0cnkge1xuICAgICAgZGVidWcoYFRyeSB0byBjcmVhdGUgb3V0cHV0IGRpcmVjdG9yeTpgKVxuICAgICAgZGVidWcoJyAgJWknLCB0aGlzLm91dHB1dERpcilcbiAgICAgIGF3YWl0IG1rZGlyQXN5bmModGhpcy5vdXRwdXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBkZWJ1ZyhgT3V0cHV0IGRpcmVjdG9yeSBjcmVhdGVkYClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgb3V0cHV0IGRpcmVjdG9yeSAke3RoaXMub3V0cHV0RGlyfWAsIHtcbiAgICAgICAgY2F1c2U6IGUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IHdhc21CaW5hcnlOYW1lID0gYXdhaXQgdGhpcy5jb3B5QXJ0aWZhY3QoKVxuXG4gICAgLy8gb25seSBmb3IgY2R5bGliXG4gICAgaWYgKHRoaXMuY2R5TGliTmFtZSkge1xuICAgICAgY29uc3QgaWRlbnRzID0gYXdhaXQgdGhpcy5nZW5lcmF0ZVR5cGVEZWYoKVxuICAgICAgY29uc3QganNPdXRwdXQgPSBhd2FpdCB0aGlzLndyaXRlSnNCaW5kaW5nKGlkZW50cylcbiAgICAgIGNvbnN0IHdhc21CaW5kaW5nc091dHB1dCA9IGF3YWl0IHRoaXMud3JpdGVXYXNpQmluZGluZyhcbiAgICAgICAgd2FzbUJpbmFyeU5hbWUsXG4gICAgICAgIGlkZW50cyxcbiAgICAgIClcbiAgICAgIGlmIChqc091dHB1dCkge1xuICAgICAgICB0aGlzLm91dHB1dHMucHVzaChqc091dHB1dClcbiAgICAgIH1cbiAgICAgIGlmICh3YXNtQmluZGluZ3NPdXRwdXQpIHtcbiAgICAgICAgdGhpcy5vdXRwdXRzLnB1c2goLi4ud2FzbUJpbmRpbmdzT3V0cHV0KVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm91dHB1dHNcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29weUFydGlmYWN0KCkge1xuICAgIGNvbnN0IFtzcmNOYW1lLCBkZXN0TmFtZSwgd2FzbUJpbmFyeU5hbWVdID0gdGhpcy5nZXRBcnRpZmFjdE5hbWVzKClcbiAgICBpZiAoIXNyY05hbWUgfHwgIWRlc3ROYW1lKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBwcm9maWxlID1cbiAgICAgIHRoaXMub3B0aW9ucy5wcm9maWxlID8/ICh0aGlzLm9wdGlvbnMucmVsZWFzZSA/ICdyZWxlYXNlJyA6ICdkZWJ1ZycpXG4gICAgY29uc3Qgc3JjID0gam9pbih0aGlzLnRhcmdldERpciwgdGhpcy50YXJnZXQudHJpcGxlLCBwcm9maWxlLCBzcmNOYW1lKVxuICAgIGRlYnVnKGBDb3B5IGFydGlmYWN0IGZyb206IFske3NyY31dYClcbiAgICBjb25zdCBkZXN0ID0gam9pbih0aGlzLm91dHB1dERpciwgZGVzdE5hbWUpXG4gICAgY29uc3QgaXNXYXNtID0gZGVzdC5lbmRzV2l0aCgnLndhc20nKVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChhd2FpdCBmaWxlRXhpc3RzKGRlc3QpKSB7XG4gICAgICAgIGRlYnVnKCdPbGQgYXJ0aWZhY3QgZm91bmQsIHJlbW92ZSBpdCBmaXJzdCcpXG4gICAgICAgIGF3YWl0IHVubGlua0FzeW5jKGRlc3QpXG4gICAgICB9XG4gICAgICBkZWJ1ZygnQ29weSBhcnRpZmFjdCB0bzonKVxuICAgICAgZGVidWcoJyAgJWknLCBkZXN0KVxuICAgICAgaWYgKGlzV2FzbSkge1xuICAgICAgICBjb25zdCB7IE1vZHVsZUNvbmZpZyB9ID0gYXdhaXQgaW1wb3J0KCdAbmFwaS1ycy93YXNtLXRvb2xzJylcbiAgICAgICAgZGVidWcoJ0dlbmVyYXRlIGRlYnVnIHdhc20gbW9kdWxlJylcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkZWJ1Z1dhc21Nb2R1bGUgPSBuZXcgTW9kdWxlQ29uZmlnKClcbiAgICAgICAgICAgIC5nZW5lcmF0ZUR3YXJmKHRydWUpXG4gICAgICAgICAgICAuZ2VuZXJhdGVOYW1lU2VjdGlvbih0cnVlKVxuICAgICAgICAgICAgLmdlbmVyYXRlUHJvZHVjZXJzU2VjdGlvbih0cnVlKVxuICAgICAgICAgICAgLnByZXNlcnZlQ29kZVRyYW5zZm9ybSh0cnVlKVxuICAgICAgICAgICAgLnN0cmljdFZhbGlkYXRlKGZhbHNlKVxuICAgICAgICAgICAgLnBhcnNlKGF3YWl0IHJlYWRGaWxlQXN5bmMoc3JjKSlcbiAgICAgICAgICBjb25zdCBkZWJ1Z1dhc21CaW5hcnkgPSBkZWJ1Z1dhc21Nb2R1bGUuZW1pdFdhc20odHJ1ZSlcbiAgICAgICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgICAgICAgIGRlc3QucmVwbGFjZSgvXFwud2FzbSQvLCAnLmRlYnVnLndhc20nKSxcbiAgICAgICAgICAgIGRlYnVnV2FzbUJpbmFyeSxcbiAgICAgICAgICApXG4gICAgICAgICAgZGVidWcoJ0dlbmVyYXRlIHJlbGVhc2Ugd2FzbSBtb2R1bGUnKVxuICAgICAgICAgIGNvbnN0IHJlbGVhc2VXYXNtTW9kdWxlID0gbmV3IE1vZHVsZUNvbmZpZygpXG4gICAgICAgICAgICAuZ2VuZXJhdGVEd2FyZihmYWxzZSlcbiAgICAgICAgICAgIC5nZW5lcmF0ZU5hbWVTZWN0aW9uKGZhbHNlKVxuICAgICAgICAgICAgLmdlbmVyYXRlUHJvZHVjZXJzU2VjdGlvbihmYWxzZSlcbiAgICAgICAgICAgIC5wcmVzZXJ2ZUNvZGVUcmFuc2Zvcm0oZmFsc2UpXG4gICAgICAgICAgICAuc3RyaWN0VmFsaWRhdGUoZmFsc2UpXG4gICAgICAgICAgICAub25seVN0YWJsZUZlYXR1cmVzKGZhbHNlKVxuICAgICAgICAgICAgLnBhcnNlKGRlYnVnV2FzbUJpbmFyeSlcbiAgICAgICAgICBjb25zdCByZWxlYXNlV2FzbUJpbmFyeSA9IHJlbGVhc2VXYXNtTW9kdWxlLmVtaXRXYXNtKGZhbHNlKVxuICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKGRlc3QsIHJlbGVhc2VXYXNtQmluYXJ5KVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgZGVidWcud2FybihcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gZ2VuZXJhdGUgZGVidWcgd2FzbSBtb2R1bGU6ICR7KGUgYXMgYW55KS5tZXNzYWdlID8/IGV9YCxcbiAgICAgICAgICApXG4gICAgICAgICAgYXdhaXQgY29weUZpbGVBc3luYyhzcmMsIGRlc3QpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IGNvcHlGaWxlQXN5bmMoc3JjLCBkZXN0KVxuICAgICAgfVxuICAgICAgdGhpcy5vdXRwdXRzLnB1c2goe1xuICAgICAgICBraW5kOiBkZXN0LmVuZHNXaXRoKCcubm9kZScpID8gJ25vZGUnIDogaXNXYXNtID8gJ3dhc20nIDogJ2V4ZScsXG4gICAgICAgIHBhdGg6IGRlc3QsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHdhc21CaW5hcnlOYW1lID8gam9pbih0aGlzLm91dHB1dERpciwgd2FzbUJpbmFyeU5hbWUpIDogbnVsbFxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGNvcHkgYXJ0aWZhY3QnLCB7IGNhdXNlOiBlIH0pXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRBcnRpZmFjdE5hbWVzKCkge1xuICAgIGlmICh0aGlzLmNkeUxpYk5hbWUpIHtcbiAgICAgIGNvbnN0IGNkeUxpYiA9IHRoaXMuY2R5TGliTmFtZS5yZXBsYWNlKC8tL2csICdfJylcbiAgICAgIGNvbnN0IHdhc2lUYXJnZXQgPSB0aGlzLmNvbmZpZy50YXJnZXRzLmZpbmQoKHQpID0+IHQucGxhdGZvcm0gPT09ICd3YXNpJylcblxuICAgICAgY29uc3Qgc3JjTmFtZSA9XG4gICAgICAgIHRoaXMudGFyZ2V0LnBsYXRmb3JtID09PSAnZGFyd2luJ1xuICAgICAgICAgID8gYGxpYiR7Y2R5TGlifS5keWxpYmBcbiAgICAgICAgICA6IHRoaXMudGFyZ2V0LnBsYXRmb3JtID09PSAnd2luMzInXG4gICAgICAgICAgICA/IGAke2NkeUxpYn0uZGxsYFxuICAgICAgICAgICAgOiB0aGlzLnRhcmdldC5wbGF0Zm9ybSA9PT0gJ3dhc2knIHx8IHRoaXMudGFyZ2V0LnBsYXRmb3JtID09PSAnd2FzbSdcbiAgICAgICAgICAgICAgPyBgJHtjZHlMaWJ9Lndhc21gXG4gICAgICAgICAgICAgIDogYGxpYiR7Y2R5TGlifS5zb2BcblxuICAgICAgbGV0IGRlc3ROYW1lID0gdGhpcy5jb25maWcuYmluYXJ5TmFtZVxuICAgICAgLy8gYWRkIHBsYXRmb3JtIHN1ZmZpeCB0byBiaW5hcnkgbmFtZVxuICAgICAgLy8gaW5kZXhbLmxpbnV4LXg2NC1nbnVdLm5vZGVcbiAgICAgIC8vICAgICAgIF5eXl5eXl5eXl5eXl5eXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBsYXRmb3JtKSB7XG4gICAgICAgIGRlc3ROYW1lICs9IGAuJHt0aGlzLnRhcmdldC5wbGF0Zm9ybUFyY2hBQkl9YFxuICAgICAgfVxuICAgICAgaWYgKHNyY05hbWUuZW5kc1dpdGgoJy53YXNtJykpIHtcbiAgICAgICAgZGVzdE5hbWUgKz0gJy53YXNtJ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVzdE5hbWUgKz0gJy5ub2RlJ1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW1xuICAgICAgICBzcmNOYW1lLFxuICAgICAgICBkZXN0TmFtZSxcbiAgICAgICAgd2FzaVRhcmdldFxuICAgICAgICAgID8gYCR7dGhpcy5jb25maWcuYmluYXJ5TmFtZX0uJHt3YXNpVGFyZ2V0LnBsYXRmb3JtQXJjaEFCSX0ud2FzbWBcbiAgICAgICAgICA6IG51bGwsXG4gICAgICBdXG4gICAgfSBlbHNlIGlmICh0aGlzLmJpbk5hbWUpIHtcbiAgICAgIGNvbnN0IHNyY05hbWUgPVxuICAgICAgICB0aGlzLnRhcmdldC5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IGAke3RoaXMuYmluTmFtZX0uZXhlYCA6IHRoaXMuYmluTmFtZVxuXG4gICAgICByZXR1cm4gW3NyY05hbWUsIHNyY05hbWVdXG4gICAgfVxuXG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdlbmVyYXRlVHlwZURlZigpIHtcbiAgICBjb25zdCB0eXBlRGVmRGlyID0gdGhpcy5lbnZzLk5BUElfVFlQRV9ERUZfVE1QX0ZPTERFUlxuICAgIGlmICghdGhpcy5lbmFibGVUeXBlRGVmKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICBjb25zdCB7IGV4cG9ydHMsIGR0cyB9ID0gYXdhaXQgZ2VuZXJhdGVUeXBlRGVmKHtcbiAgICAgIHR5cGVEZWZEaXIsXG4gICAgICBub0R0c0hlYWRlcjogdGhpcy5vcHRpb25zLm5vRHRzSGVhZGVyLFxuICAgICAgZHRzSGVhZGVyOiB0aGlzLm9wdGlvbnMuZHRzSGVhZGVyLFxuICAgICAgY29uZmlnRHRzSGVhZGVyOiB0aGlzLmNvbmZpZy5kdHNIZWFkZXIsXG4gICAgICBjb25maWdEdHNIZWFkZXJGaWxlOiB0aGlzLmNvbmZpZy5kdHNIZWFkZXJGaWxlLFxuICAgICAgY29uc3RFbnVtOiB0aGlzLm9wdGlvbnMuY29uc3RFbnVtID8/IHRoaXMuY29uZmlnLmNvbnN0RW51bSxcbiAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZCxcbiAgICB9KVxuXG4gICAgY29uc3QgZGVzdCA9IGpvaW4odGhpcy5vdXRwdXREaXIsIHRoaXMub3B0aW9ucy5kdHMgPz8gJ2luZGV4LmQudHMnKVxuXG4gICAgdHJ5IHtcbiAgICAgIGRlYnVnKCdXcml0aW5nIHR5cGUgZGVmIHRvOicpXG4gICAgICBkZWJ1ZygnICAlaScsIGRlc3QpXG4gICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhkZXN0LCBkdHMsICd1dGYtOCcpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZGVidWcuZXJyb3IoJ0ZhaWxlZCB0byB3cml0ZSB0eXBlIGRlZiBmaWxlJylcbiAgICAgIGRlYnVnLmVycm9yKGUgYXMgRXJyb3IpXG4gICAgfVxuXG4gICAgaWYgKGV4cG9ydHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZGVzdCA9IGpvaW4odGhpcy5vdXRwdXREaXIsIHRoaXMub3B0aW9ucy5kdHMgPz8gJ2luZGV4LmQudHMnKVxuICAgICAgdGhpcy5vdXRwdXRzLnB1c2goeyBraW5kOiAnZHRzJywgcGF0aDogZGVzdCB9KVxuICAgIH1cblxuICAgIHJldHVybiBleHBvcnRzXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdyaXRlSnNCaW5kaW5nKGlkZW50czogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gd3JpdGVKc0JpbmRpbmcoe1xuICAgICAgcGxhdGZvcm06IHRoaXMub3B0aW9ucy5wbGF0Zm9ybSxcbiAgICAgIG5vSnNCaW5kaW5nOiB0aGlzLm9wdGlvbnMubm9Kc0JpbmRpbmcsXG4gICAgICBpZGVudHMsXG4gICAgICBqc0JpbmRpbmc6IHRoaXMub3B0aW9ucy5qc0JpbmRpbmcsXG4gICAgICBlc206IHRoaXMub3B0aW9ucy5lc20sXG4gICAgICBiaW5hcnlOYW1lOiB0aGlzLmNvbmZpZy5iaW5hcnlOYW1lLFxuICAgICAgcGFja2FnZU5hbWU6IHRoaXMub3B0aW9ucy5qc1BhY2thZ2VOYW1lID8/IHRoaXMuY29uZmlnLnBhY2thZ2VOYW1lLFxuICAgICAgdmVyc2lvbjogcHJvY2Vzcy5lbnYubnBtX25ld192ZXJzaW9uID8/IHRoaXMuY29uZmlnLnBhY2thZ2VKc29uLnZlcnNpb24sXG4gICAgICBvdXRwdXREaXI6IHRoaXMub3V0cHV0RGlyLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdyaXRlV2FzaUJpbmRpbmcoXG4gICAgZGlzdEZpbGVOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsLFxuICAgIGlkZW50czogc3RyaW5nW10sXG4gICkge1xuICAgIGlmIChkaXN0RmlsZU5hbWUpIHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgZGlyIH0gPSBwYXJzZShkaXN0RmlsZU5hbWUpXG4gICAgICBjb25zdCBiaW5kaW5nUGF0aCA9IGpvaW4oZGlyLCBgJHt0aGlzLmNvbmZpZy5iaW5hcnlOYW1lfS53YXNpLmNqc2ApXG4gICAgICBjb25zdCBicm93c2VyQmluZGluZ1BhdGggPSBqb2luKFxuICAgICAgICBkaXIsXG4gICAgICAgIGAke3RoaXMuY29uZmlnLmJpbmFyeU5hbWV9Lndhc2ktYnJvd3Nlci5qc2AsXG4gICAgICApXG4gICAgICBjb25zdCB3b3JrZXJQYXRoID0gam9pbihkaXIsICd3YXNpLXdvcmtlci5tanMnKVxuICAgICAgY29uc3QgYnJvd3NlcldvcmtlclBhdGggPSBqb2luKGRpciwgJ3dhc2ktd29ya2VyLWJyb3dzZXIubWpzJylcbiAgICAgIGNvbnN0IGJyb3dzZXJFbnRyeVBhdGggPSBqb2luKGRpciwgJ2Jyb3dzZXIuanMnKVxuICAgICAgY29uc3QgZXhwb3J0c0NvZGUgPVxuICAgICAgICBgbW9kdWxlLmV4cG9ydHMgPSBfX25hcGlNb2R1bGUuZXhwb3J0c1xcbmAgK1xuICAgICAgICBpZGVudHNcbiAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgKGlkZW50KSA9PlxuICAgICAgICAgICAgICBgbW9kdWxlLmV4cG9ydHMuJHtpZGVudH0gPSBfX25hcGlNb2R1bGUuZXhwb3J0cy4ke2lkZW50fWAsXG4gICAgICAgICAgKVxuICAgICAgICAgIC5qb2luKCdcXG4nKVxuICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoXG4gICAgICAgIGJpbmRpbmdQYXRoLFxuICAgICAgICBjcmVhdGVXYXNpQmluZGluZyhcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHRoaXMuY29uZmlnLnBhY2thZ2VOYW1lLFxuICAgICAgICAgIHRoaXMuY29uZmlnLndhc20/LmluaXRpYWxNZW1vcnksXG4gICAgICAgICAgdGhpcy5jb25maWcud2FzbT8ubWF4aW11bU1lbW9yeSxcbiAgICAgICAgKSArXG4gICAgICAgICAgZXhwb3J0c0NvZGUgK1xuICAgICAgICAgICdcXG4nLFxuICAgICAgICAndXRmOCcsXG4gICAgICApXG4gICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgICAgYnJvd3NlckJpbmRpbmdQYXRoLFxuICAgICAgICBjcmVhdGVXYXNpQnJvd3NlckJpbmRpbmcoXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICB0aGlzLmNvbmZpZy53YXNtPy5pbml0aWFsTWVtb3J5LFxuICAgICAgICAgIHRoaXMuY29uZmlnLndhc20/Lm1heGltdW1NZW1vcnksXG4gICAgICAgICAgdGhpcy5jb25maWcud2FzbT8uYnJvd3Nlcj8uZnMsXG4gICAgICAgICAgdGhpcy5jb25maWcud2FzbT8uYnJvd3Nlcj8uYXN5bmNJbml0LFxuICAgICAgICAgIHRoaXMuY29uZmlnLndhc20/LmJyb3dzZXI/LmJ1ZmZlcixcbiAgICAgICAgKSArXG4gICAgICAgICAgYGV4cG9ydCBkZWZhdWx0IF9fbmFwaU1vZHVsZS5leHBvcnRzXFxuYCArXG4gICAgICAgICAgaWRlbnRzXG4gICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAoaWRlbnQpID0+XG4gICAgICAgICAgICAgICAgYGV4cG9ydCBjb25zdCAke2lkZW50fSA9IF9fbmFwaU1vZHVsZS5leHBvcnRzLiR7aWRlbnR9YCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCdcXG4nKSArXG4gICAgICAgICAgJ1xcbicsXG4gICAgICAgICd1dGY4JyxcbiAgICAgIClcbiAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKHdvcmtlclBhdGgsIFdBU0lfV09SS0VSX1RFTVBMQVRFLCAndXRmOCcpXG4gICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgICAgYnJvd3NlcldvcmtlclBhdGgsXG4gICAgICAgIGNyZWF0ZVdhc2lCcm93c2VyV29ya2VyQmluZGluZyh0aGlzLmNvbmZpZy53YXNtPy5icm93c2VyPy5mcyA/PyBmYWxzZSksXG4gICAgICAgICd1dGY4JyxcbiAgICAgIClcbiAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKFxuICAgICAgICBicm93c2VyRW50cnlQYXRoLFxuICAgICAgICBgZXhwb3J0ICogZnJvbSAnJHt0aGlzLmNvbmZpZy5wYWNrYWdlTmFtZX0td2FzbTMyLXdhc2knXFxuYCxcbiAgICAgIClcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHsga2luZDogJ2pzJywgcGF0aDogYmluZGluZ1BhdGggfSxcbiAgICAgICAgeyBraW5kOiAnanMnLCBwYXRoOiBicm93c2VyQmluZGluZ1BhdGggfSxcbiAgICAgICAgeyBraW5kOiAnanMnLCBwYXRoOiB3b3JrZXJQYXRoIH0sXG4gICAgICAgIHsga2luZDogJ2pzJywgcGF0aDogYnJvd3NlcldvcmtlclBhdGggfSxcbiAgICAgICAgeyBraW5kOiAnanMnLCBwYXRoOiBicm93c2VyRW50cnlQYXRoIH0sXG4gICAgICBdIHNhdGlzZmllcyBPdXRwdXRbXVxuICAgIH1cbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIHByaXZhdGUgc2V0RW52SWZOb3RFeGlzdHMoZW52OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXByb2Nlc3MuZW52W2Vudl0pIHtcbiAgICAgIHRoaXMuZW52c1tlbnZdID0gdmFsdWVcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZUpzQmluZGluZ09wdGlvbnMge1xuICBwbGF0Zm9ybT86IGJvb2xlYW5cbiAgbm9Kc0JpbmRpbmc/OiBib29sZWFuXG4gIGlkZW50czogc3RyaW5nW11cbiAganNCaW5kaW5nPzogc3RyaW5nXG4gIGVzbT86IGJvb2xlYW5cbiAgYmluYXJ5TmFtZTogc3RyaW5nXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmdcbiAgdmVyc2lvbjogc3RyaW5nXG4gIG91dHB1dERpcjogc3RyaW5nXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUpzQmluZGluZyhcbiAgb3B0aW9uczogV3JpdGVKc0JpbmRpbmdPcHRpb25zLFxuKTogUHJvbWlzZTxPdXRwdXQgfCB1bmRlZmluZWQ+IHtcbiAgaWYgKFxuICAgICFvcHRpb25zLnBsYXRmb3JtIHx8XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItbnVsbGlzaC1jb2FsZXNjaW5nXG4gICAgb3B0aW9ucy5ub0pzQmluZGluZyB8fFxuICAgIG9wdGlvbnMuaWRlbnRzLmxlbmd0aCA9PT0gMFxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IG5hbWUgPSBvcHRpb25zLmpzQmluZGluZyA/PyAnaW5kZXguanMnXG5cbiAgY29uc3QgY3JlYXRlQmluZGluZyA9IG9wdGlvbnMuZXNtID8gY3JlYXRlRXNtQmluZGluZyA6IGNyZWF0ZUNqc0JpbmRpbmdcbiAgY29uc3QgYmluZGluZyA9IGNyZWF0ZUJpbmRpbmcoXG4gICAgb3B0aW9ucy5iaW5hcnlOYW1lLFxuICAgIG9wdGlvbnMucGFja2FnZU5hbWUsXG4gICAgb3B0aW9ucy5pZGVudHMsXG4gICAgLy8gaW4gbnBtIHByZXZlcnNpb24gaG9va1xuICAgIG9wdGlvbnMudmVyc2lvbixcbiAgKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZGVzdCA9IGpvaW4ob3B0aW9ucy5vdXRwdXREaXIsIG5hbWUpXG4gICAgZGVidWcoJ1dyaXRpbmcganMgYmluZGluZyB0bzonKVxuICAgIGRlYnVnKCcgICVpJywgZGVzdClcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhkZXN0LCBiaW5kaW5nLCAndXRmLTgnKVxuICAgIHJldHVybiB7IGtpbmQ6ICdqcycsIHBhdGg6IGRlc3QgfSBzYXRpc2ZpZXMgT3V0cHV0XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB3cml0ZSBqcyBiaW5kaW5nIGZpbGUnLCB7IGNhdXNlOiBlIH0pXG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZVR5cGVEZWZPcHRpb25zIHtcbiAgdHlwZURlZkRpcjogc3RyaW5nXG4gIG5vRHRzSGVhZGVyPzogYm9vbGVhblxuICBkdHNIZWFkZXI/OiBzdHJpbmdcbiAgZHRzSGVhZGVyRmlsZT86IHN0cmluZ1xuICBjb25maWdEdHNIZWFkZXI/OiBzdHJpbmdcbiAgY29uZmlnRHRzSGVhZGVyRmlsZT86IHN0cmluZ1xuICBjb25zdEVudW0/OiBib29sZWFuXG4gIGN3ZDogc3RyaW5nXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVR5cGVEZWYoXG4gIG9wdGlvbnM6IEdlbmVyYXRlVHlwZURlZk9wdGlvbnMsXG4pOiBQcm9taXNlPHsgZXhwb3J0czogc3RyaW5nW107IGR0czogc3RyaW5nIH0+IHtcbiAgaWYgKCEoYXdhaXQgZGlyRXhpc3RzQXN5bmMob3B0aW9ucy50eXBlRGVmRGlyKSkpIHtcbiAgICByZXR1cm4geyBleHBvcnRzOiBbXSwgZHRzOiAnJyB9XG4gIH1cblxuICBsZXQgaGVhZGVyID0gJydcbiAgbGV0IGR0cyA9ICcnXG4gIGxldCBleHBvcnRzOiBzdHJpbmdbXSA9IFtdXG5cbiAgaWYgKCFvcHRpb25zLm5vRHRzSGVhZGVyKSB7XG4gICAgY29uc3QgZHRzSGVhZGVyID0gb3B0aW9ucy5kdHNIZWFkZXIgPz8gb3B0aW9ucy5jb25maWdEdHNIZWFkZXJcbiAgICAvLyBgZHRzSGVhZGVyRmlsZWAgaW4gY29uZmlnID4gYGR0c0hlYWRlcmAgaW4gY2xpIGZsYWcgPiBgZHRzSGVhZGVyYCBpbiBjb25maWdcbiAgICBpZiAob3B0aW9ucy5jb25maWdEdHNIZWFkZXJGaWxlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBoZWFkZXIgPSBhd2FpdCByZWFkRmlsZUFzeW5jKFxuICAgICAgICAgIGpvaW4ob3B0aW9ucy5jd2QsIG9wdGlvbnMuY29uZmlnRHRzSGVhZGVyRmlsZSksXG4gICAgICAgICAgJ3V0Zi04JyxcbiAgICAgICAgKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBkZWJ1Zy53YXJuKFxuICAgICAgICAgIGBGYWlsZWQgdG8gcmVhZCBkdHMgaGVhZGVyIGZpbGUgJHtvcHRpb25zLmNvbmZpZ0R0c0hlYWRlckZpbGV9YCxcbiAgICAgICAgICBlLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkdHNIZWFkZXIpIHtcbiAgICAgIGhlYWRlciA9IGR0c0hlYWRlclxuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXIgPSBERUZBVUxUX1RZUEVfREVGX0hFQURFUlxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgcmVhZGRpckFzeW5jKG9wdGlvbnMudHlwZURlZkRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pXG5cbiAgaWYgKCFmaWxlcy5sZW5ndGgpIHtcbiAgICBkZWJ1ZygnTm8gdHlwZSBkZWYgZmlsZXMgZm91bmQuIFNraXAgZ2VuZXJhdGluZyBkdHMgZmlsZS4nKVxuICAgIHJldHVybiB7IGV4cG9ydHM6IFtdLCBkdHM6ICcnIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGlmICghZmlsZS5pc0ZpbGUoKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCB7IGR0czogZmlsZUR0cywgZXhwb3J0czogZmlsZUV4cG9ydHMgfSA9IGF3YWl0IHByb2Nlc3NUeXBlRGVmKFxuICAgICAgam9pbihvcHRpb25zLnR5cGVEZWZEaXIsIGZpbGUubmFtZSksXG4gICAgICBvcHRpb25zLmNvbnN0RW51bSA/PyB0cnVlLFxuICAgIClcblxuICAgIGR0cyArPSBmaWxlRHRzXG4gICAgZXhwb3J0cy5wdXNoKC4uLmZpbGVFeHBvcnRzKVxuICB9XG5cbiAgaWYgKGR0cy5pbmRleE9mKCdFeHRlcm5hbE9iamVjdDwnKSA+IC0xKSB7XG4gICAgaGVhZGVyICs9IGBcbmV4cG9ydCBkZWNsYXJlIGNsYXNzIEV4dGVybmFsT2JqZWN0PFQ+IHtcbiAgcmVhZG9ubHkgJyc6IHtcbiAgICByZWFkb25seSAnJzogdW5pcXVlIHN5bWJvbFxuICAgIFtLOiBzeW1ib2xdOiBUXG4gIH1cbn1cbmBcbiAgfVxuXG4gIGlmIChkdHMuaW5kZXhPZignVHlwZWRBcnJheScpID4gLTEpIHtcbiAgICBoZWFkZXIgKz0gYFxuZXhwb3J0IHR5cGUgVHlwZWRBcnJheSA9IEludDhBcnJheSB8IFVpbnQ4QXJyYXkgfCBVaW50OENsYW1wZWRBcnJheSB8IEludDE2QXJyYXkgfCBVaW50MTZBcnJheSB8IEludDMyQXJyYXkgfCBVaW50MzJBcnJheSB8IEZsb2F0MzJBcnJheSB8IEZsb2F0NjRBcnJheSB8IEJpZ0ludDY0QXJyYXkgfCBCaWdVaW50NjRBcnJheVxuYFxuICB9XG5cbiAgZHRzID0gaGVhZGVyICsgZHRzXG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzLFxuICAgIGR0cyxcbiAgfVxufVxuIiwiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBjb2RlZ2VuL2luZGV4LnRzXG4vLyBEbyBub3QgZWRpdCB0aGlzIGZpbGUgbWFudWFsbHlcbmltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NsaXBhbmlvbidcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDcmVhdGVOcG1EaXJzQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBzdGF0aWMgcGF0aHMgPSBbWydjcmVhdGUtbnBtLWRpcnMnXV1cblxuICBzdGF0aWMgdXNhZ2UgPSBDb21tYW5kLlVzYWdlKHtcbiAgICBkZXNjcmlwdGlvbjogJ0NyZWF0ZSBucG0gcGFja2FnZSBkaXJzIGZvciBkaWZmZXJlbnQgcGxhdGZvcm1zJyxcbiAgfSlcblxuICBjd2QgPSBPcHRpb24uU3RyaW5nKCctLWN3ZCcsIHByb2Nlc3MuY3dkKCksIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGgnLFxuICB9KVxuXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWNvbmZpZy1wYXRoLC1jJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgbmFwaWAgY29uZmlnIGpzb24gZmlsZScsXG4gIH0pXG5cbiAgcGFja2FnZUpzb25QYXRoID0gT3B0aW9uLlN0cmluZygnLS1wYWNrYWdlLWpzb24tcGF0aCcsICdwYWNrYWdlLmpzb24nLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBwYWNrYWdlLmpzb25gJyxcbiAgfSlcblxuICBucG1EaXIgPSBPcHRpb24uU3RyaW5nKCctLW5wbS1kaXInLCAnbnBtJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBucG0gcGFja2FnZXMgcHV0JyxcbiAgfSlcblxuICBkcnlSdW4gPSBPcHRpb24uQm9vbGVhbignLS1kcnktcnVuJywgZmFsc2UsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0RyeSBydW4gd2l0aG91dCB0b3VjaGluZyBmaWxlIHN5c3RlbScsXG4gIH0pXG5cbiAgZ2V0T3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3dkOiB0aGlzLmN3ZCxcbiAgICAgIGNvbmZpZ1BhdGg6IHRoaXMuY29uZmlnUGF0aCxcbiAgICAgIHBhY2thZ2VKc29uUGF0aDogdGhpcy5wYWNrYWdlSnNvblBhdGgsXG4gICAgICBucG1EaXI6IHRoaXMubnBtRGlyLFxuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgbnBtIHBhY2thZ2UgZGlycyBmb3IgZGlmZmVyZW50IHBsYXRmb3Jtc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU5wbURpcnNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICBjd2Q/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICpcbiAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICovXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBucG0gcGFja2FnZXMgcHV0XG4gICAqXG4gICAqIEBkZWZhdWx0ICducG0nXG4gICAqL1xuICBucG1EaXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIERyeSBydW4gd2l0aG91dCB0b3VjaGluZyBmaWxlIHN5c3RlbVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhblxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZWZhdWx0Q3JlYXRlTnBtRGlyc09wdGlvbnMoXG4gIG9wdGlvbnM6IENyZWF0ZU5wbURpcnNPcHRpb25zLFxuKSB7XG4gIHJldHVybiB7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIHBhY2thZ2VKc29uUGF0aDogJ3BhY2thZ2UuanNvbicsXG4gICAgbnBtRGlyOiAnbnBtJyxcbiAgICBkcnlSdW46IGZhbHNlLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cbn1cbiIsImltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnc2VtdmVyJ1xuXG5pbXBvcnQge1xuICBhcHBseURlZmF1bHRDcmVhdGVOcG1EaXJzT3B0aW9ucyxcbiAgdHlwZSBDcmVhdGVOcG1EaXJzT3B0aW9ucyxcbn0gZnJvbSAnLi4vZGVmL2NyZWF0ZS1ucG0tZGlycy5qcydcbmltcG9ydCB7XG4gIGRlYnVnRmFjdG9yeSxcbiAgcmVhZE5hcGlDb25maWcsXG4gIG1rZGlyQXN5bmMgYXMgcmF3TWtkaXJBc3luYyxcbiAgcGljayxcbiAgd3JpdGVGaWxlQXN5bmMgYXMgcmF3V3JpdGVGaWxlQXN5bmMsXG4gIHR5cGUgVGFyZ2V0LFxuICB0eXBlIENvbW1vblBhY2thZ2VKc29uRmllbGRzLFxufSBmcm9tICcuLi91dGlscy9pbmRleC5qcydcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0ZhY3RvcnkoJ2NyZWF0ZS1ucG0tZGlycycpXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZU1ldGEge1xuICAnZGlzdC10YWdzJzogeyBbaW5kZXg6IHN0cmluZ106IHN0cmluZyB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVOcG1EaXJzKHVzZXJPcHRpb25zOiBDcmVhdGVOcG1EaXJzT3B0aW9ucykge1xuICBjb25zdCBvcHRpb25zID0gYXBwbHlEZWZhdWx0Q3JlYXRlTnBtRGlyc09wdGlvbnModXNlck9wdGlvbnMpXG5cbiAgYXN5bmMgZnVuY3Rpb24gbWtkaXJBc3luYyhkaXI6IHN0cmluZykge1xuICAgIGRlYnVnKCdUcnkgdG8gY3JlYXRlIGRpcjogJWknLCBkaXIpXG4gICAgaWYgKG9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBhd2FpdCByYXdNa2RpckFzeW5jKGRpciwge1xuICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB3cml0ZUZpbGVBc3luYyhmaWxlOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZykge1xuICAgIGRlYnVnKCdXcml0aW5nIGZpbGUgJWknLCBmaWxlKVxuXG4gICAgaWYgKG9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgICBkZWJ1Zyhjb250ZW50KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYXdhaXQgcmF3V3JpdGVGaWxlQXN5bmMoZmlsZSwgY29udGVudClcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMucGFja2FnZUpzb25QYXRoKVxuICBjb25zdCBucG1QYXRoID0gcmVzb2x2ZShvcHRpb25zLmN3ZCwgb3B0aW9ucy5ucG1EaXIpXG5cbiAgZGVidWcoYFJlYWQgY29udGVudCBmcm9tIFske29wdGlvbnMuY29uZmlnUGF0aCA/PyBwYWNrYWdlSnNvblBhdGh9XWApXG5cbiAgY29uc3QgeyB0YXJnZXRzLCBiaW5hcnlOYW1lLCBwYWNrYWdlTmFtZSwgcGFja2FnZUpzb24gfSA9XG4gICAgYXdhaXQgcmVhZE5hcGlDb25maWcoXG4gICAgICBwYWNrYWdlSnNvblBhdGgsXG4gICAgICBvcHRpb25zLmNvbmZpZ1BhdGggPyByZXNvbHZlKG9wdGlvbnMuY3dkLCBvcHRpb25zLmNvbmZpZ1BhdGgpIDogdW5kZWZpbmVkLFxuICAgIClcblxuICBmb3IgKGNvbnN0IHRhcmdldCBvZiB0YXJnZXRzKSB7XG4gICAgY29uc3QgdGFyZ2V0RGlyID0gam9pbihucG1QYXRoLCBgJHt0YXJnZXQucGxhdGZvcm1BcmNoQUJJfWApXG4gICAgYXdhaXQgbWtkaXJBc3luYyh0YXJnZXREaXIpXG5cbiAgICBjb25zdCBiaW5hcnlGaWxlTmFtZSA9XG4gICAgICB0YXJnZXQuYXJjaCA9PT0gJ3dhc20zMidcbiAgICAgICAgPyBgJHtiaW5hcnlOYW1lfS4ke3RhcmdldC5wbGF0Zm9ybUFyY2hBQkl9Lndhc21gXG4gICAgICAgIDogYCR7YmluYXJ5TmFtZX0uJHt0YXJnZXQucGxhdGZvcm1BcmNoQUJJfS5ub2RlYFxuICAgIGNvbnN0IHNjb3BlZFBhY2thZ2VKc29uOiBDb21tb25QYWNrYWdlSnNvbkZpZWxkcyA9IHtcbiAgICAgIG5hbWU6IGAke3BhY2thZ2VOYW1lfS0ke3RhcmdldC5wbGF0Zm9ybUFyY2hBQkl9YCxcbiAgICAgIHZlcnNpb246IHBhY2thZ2VKc29uLnZlcnNpb24sXG4gICAgICBjcHU6IHRhcmdldC5hcmNoICE9PSAndW5pdmVyc2FsJyA/IFt0YXJnZXQuYXJjaF0gOiB1bmRlZmluZWQsXG4gICAgICBtYWluOiBiaW5hcnlGaWxlTmFtZSxcbiAgICAgIGZpbGVzOiBbYmluYXJ5RmlsZU5hbWVdLFxuICAgICAgLi4ucGljayhcbiAgICAgICAgcGFja2FnZUpzb24sXG4gICAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAgICdrZXl3b3JkcycsXG4gICAgICAgICdhdXRob3InLFxuICAgICAgICAnYXV0aG9ycycsXG4gICAgICAgICdob21lcGFnZScsXG4gICAgICAgICdsaWNlbnNlJyxcbiAgICAgICAgJ2VuZ2luZXMnLFxuICAgICAgICAncmVwb3NpdG9yeScsXG4gICAgICAgICdidWdzJyxcbiAgICAgICksXG4gICAgfVxuICAgIGlmIChwYWNrYWdlSnNvbi5wdWJsaXNoQ29uZmlnKSB7XG4gICAgICBzY29wZWRQYWNrYWdlSnNvbi5wdWJsaXNoQ29uZmlnID0gcGljayhcbiAgICAgICAgcGFja2FnZUpzb24ucHVibGlzaENvbmZpZyxcbiAgICAgICAgJ3JlZ2lzdHJ5JyxcbiAgICAgICAgJ2FjY2VzcycsXG4gICAgICApXG4gICAgfVxuICAgIGlmICh0YXJnZXQuYXJjaCAhPT0gJ3dhc20zMicpIHtcbiAgICAgIHNjb3BlZFBhY2thZ2VKc29uLm9zID0gW3RhcmdldC5wbGF0Zm9ybV1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZW50cnkgPSBgJHtiaW5hcnlOYW1lfS53YXNpLmNqc2BcbiAgICAgIHNjb3BlZFBhY2thZ2VKc29uLm1haW4gPSBlbnRyeVxuICAgICAgc2NvcGVkUGFja2FnZUpzb24uYnJvd3NlciA9IGAke2JpbmFyeU5hbWV9Lndhc2ktYnJvd3Nlci5qc2BcbiAgICAgIHNjb3BlZFBhY2thZ2VKc29uLmZpbGVzPy5wdXNoKFxuICAgICAgICBlbnRyeSxcbiAgICAgICAgc2NvcGVkUGFja2FnZUpzb24uYnJvd3NlcixcbiAgICAgICAgYHdhc2ktd29ya2VyLm1qc2AsXG4gICAgICAgIGB3YXNpLXdvcmtlci1icm93c2VyLm1qc2AsXG4gICAgICApXG4gICAgICBsZXQgbmVlZFJlc3RyaWN0Tm9kZVZlcnNpb24gPSB0cnVlXG4gICAgICBpZiAoc2NvcGVkUGFja2FnZUpzb24uZW5naW5lcz8ubm9kZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHsgbWFqb3IgfSA9IHBhcnNlKHNjb3BlZFBhY2thZ2VKc29uLmVuZ2luZXMubm9kZSkgPz8ge1xuICAgICAgICAgICAgbWFqb3I6IDAsXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtYWpvciA+PSAxNCkge1xuICAgICAgICAgICAgbmVlZFJlc3RyaWN0Tm9kZVZlcnNpb24gPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChuZWVkUmVzdHJpY3ROb2RlVmVyc2lvbikge1xuICAgICAgICBzY29wZWRQYWNrYWdlSnNvbi5lbmdpbmVzID0ge1xuICAgICAgICAgIG5vZGU6ICc+PTE0LjAuMCcsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHdhc21SdW50aW1lID0gYXdhaXQgZmV0Y2goXG4gICAgICAgIGBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9AbmFwaS1ycy93YXNtLXJ1bnRpbWVgLFxuICAgICAgKS50aGVuKChyZXMpID0+IHJlcy5qc29uKCkgYXMgUHJvbWlzZTxQYWNrYWdlTWV0YT4pXG4gICAgICBzY29wZWRQYWNrYWdlSnNvbi5kZXBlbmRlbmNpZXMgPSB7XG4gICAgICAgICdAbmFwaS1ycy93YXNtLXJ1bnRpbWUnOiBgXiR7d2FzbVJ1bnRpbWVbJ2Rpc3QtdGFncyddLmxhdGVzdH1gLFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0YXJnZXQuYWJpID09PSAnZ251Jykge1xuICAgICAgc2NvcGVkUGFja2FnZUpzb24ubGliYyA9IFsnZ2xpYmMnXVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0LmFiaSA9PT0gJ211c2wnKSB7XG4gICAgICBzY29wZWRQYWNrYWdlSnNvbi5saWJjID0gWydtdXNsJ11cbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRQYWNrYWdlSnNvbiA9IGpvaW4odGFyZ2V0RGlyLCAncGFja2FnZS5qc29uJylcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgIHRhcmdldFBhY2thZ2VKc29uLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoc2NvcGVkUGFja2FnZUpzb24sIG51bGwsIDIpICsgJ1xcbicsXG4gICAgKVxuICAgIGNvbnN0IHRhcmdldFJlYWRtZSA9IGpvaW4odGFyZ2V0RGlyLCAnUkVBRE1FLm1kJylcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyh0YXJnZXRSZWFkbWUsIHJlYWRtZShwYWNrYWdlTmFtZSwgdGFyZ2V0KSlcblxuICAgIGRlYnVnLmluZm8oYCR7cGFja2FnZU5hbWV9IC0ke3RhcmdldC5wbGF0Zm9ybUFyY2hBQkl9IGNyZWF0ZWRgKVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRtZShwYWNrYWdlTmFtZTogc3RyaW5nLCB0YXJnZXQ6IFRhcmdldCkge1xuICByZXR1cm4gYCMgXFxgJHtwYWNrYWdlTmFtZX0tJHt0YXJnZXQucGxhdGZvcm1BcmNoQUJJfVxcYFxuXG5UaGlzIGlzIHRoZSAqKiR7dGFyZ2V0LnRyaXBsZX0qKiBiaW5hcnkgZm9yIFxcYCR7cGFja2FnZU5hbWV9XFxgXG5gXG59XG4iLCIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGNvZGVnZW4vaW5kZXgudHNcbi8vIERvIG5vdCBlZGl0IHRoaXMgZmlsZSBtYW51YWxseVxuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJ1xuaW1wb3J0ICogYXMgdHlwYW5pb24gZnJvbSAndHlwYW5pb24nXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTmV3Q29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBzdGF0aWMgcGF0aHMgPSBbWyduZXcnXV1cblxuICBzdGF0aWMgdXNhZ2UgPSBDb21tYW5kLlVzYWdlKHtcbiAgICBkZXNjcmlwdGlvbjogJ0NyZWF0ZSBhIG5ldyBwcm9qZWN0IHdpdGggcHJlLWNvbmZpZ3VyZWQgYm9pbGVycGxhdGUnLFxuICB9KVxuXG4gICQkcGF0aCA9IE9wdGlvbi5TdHJpbmcoeyByZXF1aXJlZDogZmFsc2UgfSlcblxuICAkJG5hbWU/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLW5hbWUsLW4nLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIG5hbWUgb2YgdGhlIHByb2plY3QsIGRlZmF1bHQgdG8gdGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSBpZiBub3QgcHJvdmlkZWQnLFxuICB9KVxuXG4gIG1pbk5vZGVBcGlWZXJzaW9uID0gT3B0aW9uLlN0cmluZygnLS1taW4tbm9kZS1hcGksLXYnLCAnNCcsIHtcbiAgICB2YWxpZGF0b3I6IHR5cGFuaW9uLmlzTnVtYmVyKCksXG4gICAgZGVzY3JpcHRpb246ICdUaGUgbWluaW11bSBOb2RlLUFQSSB2ZXJzaW9uIHRvIHN1cHBvcnQnLFxuICB9KVxuXG4gIHBhY2thZ2VNYW5hZ2VyID0gT3B0aW9uLlN0cmluZygnLS1wYWNrYWdlLW1hbmFnZXInLCAneWFybicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlLiBPbmx5IHN1cHBvcnQgeWFybiA0LnggZm9yIG5vdy4nLFxuICB9KVxuXG4gIGxpY2Vuc2UgPSBPcHRpb24uU3RyaW5nKCctLWxpY2Vuc2UsLWwnLCAnTUlUJywge1xuICAgIGRlc2NyaXB0aW9uOiAnTGljZW5zZSBmb3Igb3Blbi1zb3VyY2VkIHByb2plY3QnLFxuICB9KVxuXG4gIHRhcmdldHMgPSBPcHRpb24uQXJyYXkoJy0tdGFyZ2V0cywtdCcsIFtdLCB7XG4gICAgZGVzY3JpcHRpb246ICdBbGwgdGFyZ2V0cyB0aGUgY3JhdGUgd2lsbCBiZSBjb21waWxlZCBmb3IuJyxcbiAgfSlcblxuICBlbmFibGVEZWZhdWx0VGFyZ2V0cyA9IE9wdGlvbi5Cb29sZWFuKCctLWVuYWJsZS1kZWZhdWx0LXRhcmdldHMnLCB0cnVlLCB7XG4gICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIGVuYWJsZSBkZWZhdWx0IHRhcmdldHMnLFxuICB9KVxuXG4gIGVuYWJsZUFsbFRhcmdldHMgPSBPcHRpb24uQm9vbGVhbignLS1lbmFibGUtYWxsLXRhcmdldHMnLCBmYWxzZSwge1xuICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciBlbmFibGUgYWxsIHRhcmdldHMnLFxuICB9KVxuXG4gIGVuYWJsZVR5cGVEZWYgPSBPcHRpb24uQm9vbGVhbignLS1lbmFibGUtdHlwZS1kZWYnLCB0cnVlLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnV2hldGhlciBlbmFibGUgdGhlIGB0eXBlLWRlZmAgZmVhdHVyZSBmb3IgdHlwZXNjcmlwdCBkZWZpbml0aW9ucyBhdXRvLWdlbmVyYXRpb24nLFxuICB9KVxuXG4gIGVuYWJsZUdpdGh1YkFjdGlvbnMgPSBPcHRpb24uQm9vbGVhbignLS1lbmFibGUtZ2l0aHViLWFjdGlvbnMnLCB0cnVlLCB7XG4gICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIGdlbmVyYXRlIHByZWNvbmZpZ3VyZWQgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3cnLFxuICB9KVxuXG4gIHRlc3RGcmFtZXdvcmsgPSBPcHRpb24uU3RyaW5nKCctLXRlc3QtZnJhbWV3b3JrJywgJ2F2YScsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgSmF2YVNjcmlwdCB0ZXN0IGZyYW1ld29yayB0byB1c2UsIG9ubHkgc3VwcG9ydCBgYXZhYCBmb3Igbm93JyxcbiAgfSlcblxuICBkcnlSdW4gPSBPcHRpb24uQm9vbGVhbignLS1kcnktcnVuJywgZmFsc2UsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdG8gcnVuIHRoZSBjb21tYW5kIGluIGRyeS1ydW4gbW9kZScsXG4gIH0pXG5cbiAgZ2V0T3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGF0aDogdGhpcy4kJHBhdGgsXG4gICAgICBuYW1lOiB0aGlzLiQkbmFtZSxcbiAgICAgIG1pbk5vZGVBcGlWZXJzaW9uOiB0aGlzLm1pbk5vZGVBcGlWZXJzaW9uLFxuICAgICAgcGFja2FnZU1hbmFnZXI6IHRoaXMucGFja2FnZU1hbmFnZXIsXG4gICAgICBsaWNlbnNlOiB0aGlzLmxpY2Vuc2UsXG4gICAgICB0YXJnZXRzOiB0aGlzLnRhcmdldHMsXG4gICAgICBlbmFibGVEZWZhdWx0VGFyZ2V0czogdGhpcy5lbmFibGVEZWZhdWx0VGFyZ2V0cyxcbiAgICAgIGVuYWJsZUFsbFRhcmdldHM6IHRoaXMuZW5hYmxlQWxsVGFyZ2V0cyxcbiAgICAgIGVuYWJsZVR5cGVEZWY6IHRoaXMuZW5hYmxlVHlwZURlZixcbiAgICAgIGVuYWJsZUdpdGh1YkFjdGlvbnM6IHRoaXMuZW5hYmxlR2l0aHViQWN0aW9ucyxcbiAgICAgIHRlc3RGcmFtZXdvcms6IHRoaXMudGVzdEZyYW1ld29yayxcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHByb2plY3Qgd2l0aCBwcmUtY29uZmlndXJlZCBib2lsZXJwbGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ld09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHBhdGggd2hlcmUgdGhlIE5BUEktUlMgcHJvamVjdCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICBwYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJvamVjdCwgZGVmYXVsdCB0byB0aGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IGlmIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgbmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gTm9kZS1BUEkgdmVyc2lvbiB0byBzdXBwb3J0XG4gICAqXG4gICAqIEBkZWZhdWx0IDRcbiAgICovXG4gIG1pbk5vZGVBcGlWZXJzaW9uPzogbnVtYmVyXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSBtYW5hZ2VyIHRvIHVzZS4gT25seSBzdXBwb3J0IHlhcm4gNC54IGZvciBub3cuXG4gICAqXG4gICAqIEBkZWZhdWx0ICd5YXJuJ1xuICAgKi9cbiAgcGFja2FnZU1hbmFnZXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIExpY2Vuc2UgZm9yIG9wZW4tc291cmNlZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0ICdNSVQnXG4gICAqL1xuICBsaWNlbnNlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBBbGwgdGFyZ2V0cyB0aGUgY3JhdGUgd2lsbCBiZSBjb21waWxlZCBmb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICB0YXJnZXRzPzogc3RyaW5nW11cbiAgLyoqXG4gICAqIFdoZXRoZXIgZW5hYmxlIGRlZmF1bHQgdGFyZ2V0c1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBlbmFibGVEZWZhdWx0VGFyZ2V0cz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZW5hYmxlIGFsbCB0YXJnZXRzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBlbmFibGVBbGxUYXJnZXRzPzogYm9vbGVhblxuICAvKipcbiAgICogV2hldGhlciBlbmFibGUgdGhlIGB0eXBlLWRlZmAgZmVhdHVyZSBmb3IgdHlwZXNjcmlwdCBkZWZpbml0aW9ucyBhdXRvLWdlbmVyYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZW5hYmxlVHlwZURlZj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZ2VuZXJhdGUgcHJlY29uZmlndXJlZCBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvd1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBlbmFibGVHaXRodWJBY3Rpb25zPzogYm9vbGVhblxuICAvKipcbiAgICogVGhlIEphdmFTY3JpcHQgdGVzdCBmcmFtZXdvcmsgdG8gdXNlLCBvbmx5IHN1cHBvcnQgYGF2YWAgZm9yIG5vd1xuICAgKlxuICAgKiBAZGVmYXVsdCAnYXZhJ1xuICAgKi9cbiAgdGVzdEZyYW1ld29yaz86IHN0cmluZ1xuICAvKipcbiAgICogV2hldGhlciB0byBydW4gdGhlIGNvbW1hbmQgaW4gZHJ5LXJ1biBtb2RlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHROZXdPcHRpb25zKG9wdGlvbnM6IE5ld09wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBtaW5Ob2RlQXBpVmVyc2lvbjogNCxcbiAgICBwYWNrYWdlTWFuYWdlcjogJ3lhcm4nLFxuICAgIGxpY2Vuc2U6ICdNSVQnLFxuICAgIHRhcmdldHM6IFtdLFxuICAgIGVuYWJsZURlZmF1bHRUYXJnZXRzOiB0cnVlLFxuICAgIGVuYWJsZUFsbFRhcmdldHM6IGZhbHNlLFxuICAgIGVuYWJsZVR5cGVEZWY6IHRydWUsXG4gICAgZW5hYmxlR2l0aHViQWN0aW9uczogdHJ1ZSxcbiAgICB0ZXN0RnJhbWV3b3JrOiAnYXZhJyxcbiAgICBkcnlSdW46IGZhbHNlLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cbn1cbiIsIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG4vLyBCYXJlIGtleXMgbWF5IG9ubHkgY29udGFpbiBBU0NJSSBsZXR0ZXJzLFxuLy8gQVNDSUkgZGlnaXRzLCB1bmRlcnNjb3JlcywgYW5kIGRhc2hlcyAoQS1aYS16MC05Xy0pLlxuZnVuY3Rpb24gam9pbktleXMoa2V5cykge1xuICAvLyBEb3R0ZWQga2V5cyBhcmUgYSBzZXF1ZW5jZSBvZiBiYXJlIG9yIHF1b3RlZCBrZXlzIGpvaW5lZCB3aXRoIGEgZG90LlxuICAvLyBUaGlzIGFsbG93cyBmb3IgZ3JvdXBpbmcgc2ltaWxhciBwcm9wZXJ0aWVzIHRvZ2V0aGVyOlxuICByZXR1cm4ga2V5cy5tYXAoKHN0cik9PntcbiAgICByZXR1cm4gc3RyLmxlbmd0aCA9PT0gMCB8fCBzdHIubWF0Y2goL1teQS1aYS16MC05Xy1dLykgPyBKU09OLnN0cmluZ2lmeShzdHIpIDogc3RyO1xuICB9KS5qb2luKFwiLlwiKTtcbn1cbmNsYXNzIER1bXBlciB7XG4gIG1heFBhZCA9IDA7XG4gIHNyY09iamVjdDtcbiAgb3V0cHV0ID0gW107XG4gICNhcnJheVR5cGVDYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3RydWN0b3Ioc3JjT2JqYyl7XG4gICAgdGhpcy5zcmNPYmplY3QgPSBzcmNPYmpjO1xuICB9XG4gIGR1bXAoZm10T3B0aW9ucyA9IHt9KSB7XG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICB0aGlzLm91dHB1dCA9IHRoaXMuI3ByaW50T2JqZWN0KHRoaXMuc3JjT2JqZWN0KTtcbiAgICB0aGlzLm91dHB1dCA9IHRoaXMuI2Zvcm1hdChmbXRPcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5vdXRwdXQ7XG4gIH1cbiAgI3ByaW50T2JqZWN0KG9iaiwga2V5cyA9IFtdKSB7XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgY29uc3QgcHJvcHMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIGNvbnN0IGlubGluZVByb3BzID0gW107XG4gICAgY29uc3QgbXVsdGlsaW5lUHJvcHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcHMpe1xuICAgICAgaWYgKHRoaXMuI2lzU2ltcGx5U2VyaWFsaXphYmxlKG9ialtwcm9wXSkpIHtcbiAgICAgICAgaW5saW5lUHJvcHMucHVzaChwcm9wKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG11bHRpbGluZVByb3BzLnB1c2gocHJvcCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHNvcnRlZFByb3BzID0gaW5saW5lUHJvcHMuY29uY2F0KG11bHRpbGluZVByb3BzKTtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2Ygc29ydGVkUHJvcHMpe1xuICAgICAgY29uc3QgdmFsdWUgPSBvYmpbcHJvcF07XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIG91dC5wdXNoKHRoaXMuI2RhdGVEZWNsYXJhdGlvbihbXG4gICAgICAgICAgcHJvcFxuICAgICAgICBdLCB2YWx1ZSkpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgb3V0LnB1c2godGhpcy4jc3RyRGVjbGFyYXRpb24oW1xuICAgICAgICAgIHByb3BcbiAgICAgICAgXSwgdmFsdWUudG9TdHJpbmcoKSkpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgb3V0LnB1c2godGhpcy4jbnVtYmVyRGVjbGFyYXRpb24oW1xuICAgICAgICAgIHByb3BcbiAgICAgICAgXSwgdmFsdWUpKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICBvdXQucHVzaCh0aGlzLiNib29sRGVjbGFyYXRpb24oW1xuICAgICAgICAgIHByb3BcbiAgICAgICAgXSwgdmFsdWUpKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBjb25zdCBhcnJheVR5cGUgPSB0aGlzLiNnZXRUeXBlT2ZBcnJheSh2YWx1ZSk7XG4gICAgICAgIGlmIChhcnJheVR5cGUgPT09IFwiT05MWV9QUklNSVRJVkVcIikge1xuICAgICAgICAgIG91dC5wdXNoKHRoaXMuI2FycmF5RGVjbGFyYXRpb24oW1xuICAgICAgICAgICAgcHJvcFxuICAgICAgICAgIF0sIHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXJyYXlUeXBlID09PSBcIk9OTFlfT0JKRUNUX0VYQ0xVRElOR19BUlJBWVwiKSB7XG4gICAgICAgICAgLy8gYXJyYXkgb2Ygb2JqZWN0c1xuICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBvdXQucHVzaChcIlwiKTtcbiAgICAgICAgICAgIG91dC5wdXNoKHRoaXMuI2hlYWRlckdyb3VwKFtcbiAgICAgICAgICAgICAgLi4ua2V5cyxcbiAgICAgICAgICAgICAgcHJvcFxuICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgb3V0LnB1c2goLi4udGhpcy4jcHJpbnRPYmplY3QodmFsdWVbaV0sIFtcbiAgICAgICAgICAgICAgLi4ua2V5cyxcbiAgICAgICAgICAgICAgcHJvcFxuICAgICAgICAgICAgXSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGlzIGlzIGEgY29tcGxleCBhcnJheSwgdXNlIHRoZSBpbmxpbmUgZm9ybWF0LlxuICAgICAgICAgIGNvbnN0IHN0ciA9IHZhbHVlLm1hcCgoeCk9PnRoaXMuI3ByaW50QXNJbmxpbmVWYWx1ZSh4KSkuam9pbihcIixcIik7XG4gICAgICAgICAgb3V0LnB1c2goYCR7dGhpcy4jZGVjbGFyYXRpb24oW1xuICAgICAgICAgICAgcHJvcFxuICAgICAgICAgIF0pfVske3N0cn1dYCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIG91dC5wdXNoKFwiXCIpO1xuICAgICAgICBvdXQucHVzaCh0aGlzLiNoZWFkZXIoW1xuICAgICAgICAgIC4uLmtleXMsXG4gICAgICAgICAgcHJvcFxuICAgICAgICBdKSk7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IHRvUGFyc2UgPSB2YWx1ZTtcbiAgICAgICAgICBvdXQucHVzaCguLi50aGlzLiNwcmludE9iamVjdCh0b1BhcnNlLCBbXG4gICAgICAgICAgICAuLi5rZXlzLFxuICAgICAgICAgICAgcHJvcFxuICAgICAgICAgIF0pKTtcbiAgICAgICAgfVxuICAgICAgLy8gb3V0LnB1c2goLi4udGhpcy5fcGFyc2UodmFsdWUsIGAke3BhdGh9JHtwcm9wfS5gKSk7XG4gICAgICB9XG4gICAgfVxuICAgIG91dC5wdXNoKFwiXCIpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgI2lzUHJpbWl0aXZlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCB8fCBbXG4gICAgICBcInN0cmluZ1wiLFxuICAgICAgXCJudW1iZXJcIixcbiAgICAgIFwiYm9vbGVhblwiXG4gICAgXS5pbmNsdWRlcyh0eXBlb2YgdmFsdWUpO1xuICB9XG4gICNnZXRUeXBlT2ZBcnJheShhcnIpIHtcbiAgICBpZiAodGhpcy4jYXJyYXlUeXBlQ2FjaGUuaGFzKGFycikpIHtcbiAgICAgIHJldHVybiB0aGlzLiNhcnJheVR5cGVDYWNoZS5nZXQoYXJyKTtcbiAgICB9XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuI2RvR2V0VHlwZU9mQXJyYXkoYXJyKTtcbiAgICB0aGlzLiNhcnJheVR5cGVDYWNoZS5zZXQoYXJyLCB0eXBlKTtcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuICAjZG9HZXRUeXBlT2ZBcnJheShhcnIpIHtcbiAgICBpZiAoIWFyci5sZW5ndGgpIHtcbiAgICAgIC8vIGFueSB0eXBlIHNob3VsZCBiZSBmaW5lXG4gICAgICByZXR1cm4gXCJPTkxZX1BSSU1JVElWRVwiO1xuICAgIH1cbiAgICBjb25zdCBvbmx5UHJpbWl0aXZlID0gdGhpcy4jaXNQcmltaXRpdmUoYXJyWzBdKTtcbiAgICBpZiAoYXJyWzBdIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHJldHVybiBcIk1JWEVEXCI7XG4gICAgfVxuICAgIGZvcihsZXQgaSA9IDE7IGkgPCBhcnIubGVuZ3RoOyBpKyspe1xuICAgICAgaWYgKG9ubHlQcmltaXRpdmUgIT09IHRoaXMuI2lzUHJpbWl0aXZlKGFycltpXSkgfHwgYXJyW2ldIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIFwiTUlYRURcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9ubHlQcmltaXRpdmUgPyBcIk9OTFlfUFJJTUlUSVZFXCIgOiBcIk9OTFlfT0JKRUNUX0VYQ0xVRElOR19BUlJBWVwiO1xuICB9XG4gICNwcmludEFzSW5saW5lVmFsdWUodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gYFwiJHt0aGlzLiNwcmludERhdGUodmFsdWUpfVwiYDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNvbnN0IHN0ciA9IHZhbHVlLm1hcCgoeCk9PnRoaXMuI3ByaW50QXNJbmxpbmVWYWx1ZSh4KSkuam9pbihcIixcIik7XG4gICAgICByZXR1cm4gYFske3N0cn1dYDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGQgbmV2ZXIgcmVhY2hcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBzdHIgPSBPYmplY3Qua2V5cyh2YWx1ZSkubWFwKChrZXkpPT57XG4gICAgICAgIHJldHVybiBgJHtqb2luS2V5cyhbXG4gICAgICAgICAga2V5XG4gICAgICAgIF0pfSA9ICR7Ly8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICAgICAgdGhpcy4jcHJpbnRBc0lubGluZVZhbHVlKHZhbHVlW2tleV0pfWA7XG4gICAgICB9KS5qb2luKFwiLFwiKTtcbiAgICAgIHJldHVybiBgeyR7c3RyfX1gO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGQgbmV2ZXIgcmVhY2hcIik7XG4gIH1cbiAgI2lzU2ltcGx5U2VyaWFsaXphYmxlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIiB8fCB2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCB8fCB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheSAmJiB0aGlzLiNnZXRUeXBlT2ZBcnJheSh2YWx1ZSkgIT09IFwiT05MWV9PQkpFQ1RfRVhDTFVESU5HX0FSUkFZXCI7XG4gIH1cbiAgI2hlYWRlcihrZXlzKSB7XG4gICAgcmV0dXJuIGBbJHtqb2luS2V5cyhrZXlzKX1dYDtcbiAgfVxuICAjaGVhZGVyR3JvdXAoa2V5cykge1xuICAgIHJldHVybiBgW1ske2pvaW5LZXlzKGtleXMpfV1dYDtcbiAgfVxuICAjZGVjbGFyYXRpb24oa2V5cykge1xuICAgIGNvbnN0IHRpdGxlID0gam9pbktleXMoa2V5cyk7XG4gICAgaWYgKHRpdGxlLmxlbmd0aCA+IHRoaXMubWF4UGFkKSB7XG4gICAgICB0aGlzLm1heFBhZCA9IHRpdGxlLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RpdGxlfSA9IGA7XG4gIH1cbiAgI2FycmF5RGVjbGFyYXRpb24oa2V5cywgdmFsdWUpIHtcbiAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9JHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YDtcbiAgfVxuICAjc3RyRGVjbGFyYXRpb24oa2V5cywgdmFsdWUpIHtcbiAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9JHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YDtcbiAgfVxuICAjbnVtYmVyRGVjbGFyYXRpb24oa2V5cywgdmFsdWUpIHtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfW5hbmA7XG4gICAgfVxuICAgIHN3aXRjaCh2YWx1ZSl7XG4gICAgICBjYXNlIEluZmluaXR5OlxuICAgICAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9aW5mYDtcbiAgICAgIGNhc2UgLUluZmluaXR5OlxuICAgICAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9LWluZmA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9JHt2YWx1ZX1gO1xuICAgIH1cbiAgfVxuICAjYm9vbERlY2xhcmF0aW9uKGtleXMsIHZhbHVlKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfSR7dmFsdWV9YDtcbiAgfVxuICAjcHJpbnREYXRlKHZhbHVlKSB7XG4gICAgZnVuY3Rpb24gZHRQYWQodiwgbFBhZCA9IDIpIHtcbiAgICAgIHJldHVybiB2LnBhZFN0YXJ0KGxQYWQsIFwiMFwiKTtcbiAgICB9XG4gICAgY29uc3QgbSA9IGR0UGFkKCh2YWx1ZS5nZXRVVENNb250aCgpICsgMSkudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgZCA9IGR0UGFkKHZhbHVlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpKTtcbiAgICBjb25zdCBoID0gZHRQYWQodmFsdWUuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpKTtcbiAgICBjb25zdCBtaW4gPSBkdFBhZCh2YWx1ZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgcyA9IGR0UGFkKHZhbHVlLmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpKTtcbiAgICBjb25zdCBtcyA9IGR0UGFkKHZhbHVlLmdldFVUQ01pbGxpc2Vjb25kcygpLnRvU3RyaW5nKCksIDMpO1xuICAgIC8vIGZvcm1hdHRlZCBkYXRlXG4gICAgY29uc3QgZkRhdGEgPSBgJHt2YWx1ZS5nZXRVVENGdWxsWWVhcigpfS0ke219LSR7ZH1UJHtofToke21pbn06JHtzfS4ke21zfWA7XG4gICAgcmV0dXJuIGZEYXRhO1xuICB9XG4gICNkYXRlRGVjbGFyYXRpb24oa2V5cywgdmFsdWUpIHtcbiAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9JHt0aGlzLiNwcmludERhdGUodmFsdWUpfWA7XG4gIH1cbiAgI2Zvcm1hdChvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7IGtleUFsaWdubWVudCA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHJEZWNsYXJhdGlvbiA9IC9eKFxcXCIuKlxcXCJ8W149XSopXFxzPS87XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMub3V0cHV0Lmxlbmd0aDsgaSsrKXtcbiAgICAgIGNvbnN0IGwgPSB0aGlzLm91dHB1dFtpXTtcbiAgICAgIC8vIHdlIGtlZXAgZW1wdHkgZW50cnkgZm9yIGFycmF5IG9mIG9iamVjdHNcbiAgICAgIGlmIChsWzBdID09PSBcIltcIiAmJiBsWzFdICE9PSBcIltcIikge1xuICAgICAgICAvLyBub24tZW1wdHkgb2JqZWN0IHdpdGggb25seSBzdWJvYmplY3RzIGFzIHByb3BlcnRpZXNcbiAgICAgICAgaWYgKHRoaXMub3V0cHV0W2kgKyAxXSA9PT0gXCJcIiAmJiB0aGlzLm91dHB1dFtpICsgMl0/LnNsaWNlKDAsIGwubGVuZ3RoKSA9PT0gbC5zbGljZSgwLCAtMSkgKyBcIi5cIikge1xuICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBvdXQucHVzaChsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChrZXlBbGlnbm1lbnQpIHtcbiAgICAgICAgICBjb25zdCBtID0gckRlY2xhcmF0aW9uLmV4ZWMobCk7XG4gICAgICAgICAgaWYgKG0gJiYgbVsxXSkge1xuICAgICAgICAgICAgb3V0LnB1c2gobC5yZXBsYWNlKG1bMV0sIG1bMV0ucGFkRW5kKHRoaXMubWF4UGFkKSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQucHVzaChsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0LnB1c2gobCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQ2xlYW5pbmcgbXVsdGlwbGUgc3BhY2VzXG4gICAgY29uc3QgY2xlYW5lZE91dHB1dCA9IFtdO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBvdXQubGVuZ3RoOyBpKyspe1xuICAgICAgY29uc3QgbCA9IG91dFtpXTtcbiAgICAgIGlmICghKGwgPT09IFwiXCIgJiYgb3V0W2kgKyAxXSA9PT0gXCJcIikpIHtcbiAgICAgICAgY2xlYW5lZE91dHB1dC5wdXNoKGwpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2xlYW5lZE91dHB1dDtcbiAgfVxufVxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3QgdG8gYSB7QGxpbmsgaHR0cHM6Ly90b21sLmlvIHwgVE9NTH0gc3RyaW5nLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgc3RyaW5naWZ5IH0gZnJvbSBcIkBzdGQvdG9tbC9zdHJpbmdpZnlcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IG9iaiA9IHtcbiAqICAgdGl0bGU6IFwiVE9NTCBFeGFtcGxlXCIsXG4gKiAgIG93bmVyOiB7XG4gKiAgICAgbmFtZTogXCJCb2JcIixcbiAqICAgICBiaW86IFwiQm9iIGlzIGEgY29vbCBndXlcIixcbiAqICB9XG4gKiB9O1xuICogY29uc3QgdG9tbFN0cmluZyA9IHN0cmluZ2lmeShvYmopO1xuICogYXNzZXJ0RXF1YWxzKHRvbWxTdHJpbmcsIGB0aXRsZSA9IFwiVE9NTCBFeGFtcGxlXCJcXG5cXG5bb3duZXJdXFxubmFtZSA9IFwiQm9iXCJcXG5iaW8gPSBcIkJvYiBpcyBhIGNvb2wgZ3V5XCJcXG5gKTtcbiAqIGBgYFxuICogQHBhcmFtIG9iaiBTb3VyY2Ugb2JqZWN0XG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBzdHJpbmdpZnlpbmcuXG4gKiBAcmV0dXJucyBUT01MIHN0cmluZ1xuICovIGV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkob2JqLCBvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgRHVtcGVyKG9iaikuZHVtcChvcHRpb25zKS5qb2luKFwiXFxuXCIpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RyaW5naWZ5LmpzLm1hcCIsIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG4vKipcbiAqIEZpbHRlcnMgdGhlIGdpdmVuIGFycmF5LCByZW1vdmluZyBhbGwgZWxlbWVudHMgdGhhdCBkbyBub3QgbWF0Y2ggdGhlIGdpdmVuIHByZWRpY2F0ZVxuICogKippbiBwbGFjZS4gVGhpcyBtZWFucyBgYXJyYXlgIHdpbGwgYmUgbW9kaWZpZWQhKiouXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckluUGxhY2UoYXJyYXksIHByZWRpY2F0ZSkge1xuICBsZXQgb3V0cHV0SW5kZXggPSAwO1xuICBmb3IgKGNvbnN0IGN1ciBvZiBhcnJheSl7XG4gICAgaWYgKCFwcmVkaWNhdGUoY3VyKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGFycmF5W291dHB1dEluZGV4XSA9IGN1cjtcbiAgICBvdXRwdXRJbmRleCArPSAxO1xuICB9XG4gIGFycmF5LnNwbGljZShvdXRwdXRJbmRleCk7XG4gIHJldHVybiBhcnJheTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPV91dGlscy5qcy5tYXAiLCIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuaW1wb3J0IHsgZmlsdGVySW5QbGFjZSB9IGZyb20gXCIuL191dGlscy5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBNZXJnZShyZWNvcmQsIG90aGVyLCBvcHRpb25zKSB7XG4gIHJldHVybiBkZWVwTWVyZ2VJbnRlcm5hbChyZWNvcmQsIG90aGVyLCBuZXcgU2V0KCksIG9wdGlvbnMpO1xufVxuZnVuY3Rpb24gZGVlcE1lcmdlSW50ZXJuYWwocmVjb3JkLCBvdGhlciwgc2Vlbiwgb3B0aW9ucykge1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgY29uc3Qga2V5cyA9IG5ldyBTZXQoW1xuICAgIC4uLmdldEtleXMocmVjb3JkKSxcbiAgICAuLi5nZXRLZXlzKG90aGVyKVxuICBdKTtcbiAgLy8gSXRlcmF0ZSB0aHJvdWdoIGVhY2gga2V5IG9mIG90aGVyIG9iamVjdCBhbmQgdXNlIGNvcnJlY3QgbWVyZ2luZyBzdHJhdGVneVxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKXtcbiAgICAvLyBTa2lwIHRvIHByZXZlbnQgT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gYWNjZXNzb3IgcHJvcGVydHkgY2FsbHMgb24gbm9uLURlbm8gcGxhdGZvcm1zXG4gICAgaWYgKGtleSA9PT0gXCJfX3Byb3RvX19cIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGEgPSByZWNvcmRba2V5XTtcbiAgICBpZiAoIU9iamVjdC5oYXNPd24ob3RoZXIsIGtleSkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gYTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBiID0gb3RoZXJba2V5XTtcbiAgICBpZiAoaXNOb25OdWxsT2JqZWN0KGEpICYmIGlzTm9uTnVsbE9iamVjdChiKSAmJiAhc2Vlbi5oYXMoYSkgJiYgIXNlZW4uaGFzKGIpKSB7XG4gICAgICBzZWVuLmFkZChhKTtcbiAgICAgIHNlZW4uYWRkKGIpO1xuICAgICAgcmVzdWx0W2tleV0gPSBtZXJnZU9iamVjdHMoYSwgYiwgc2Vlbiwgb3B0aW9ucyk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgLy8gT3ZlcnJpZGUgdmFsdWVcbiAgICByZXN1bHRba2V5XSA9IGI7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1lcmdlT2JqZWN0cyhsZWZ0LCByaWdodCwgc2Vlbiwgb3B0aW9ucyA9IHtcbiAgYXJyYXlzOiBcIm1lcmdlXCIsXG4gIHNldHM6IFwibWVyZ2VcIixcbiAgbWFwczogXCJtZXJnZVwiXG59KSB7XG4gIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG1lcmdlYWJsZSBvYmplY3RzXG4gIGlmIChpc01lcmdlYWJsZShsZWZ0KSAmJiBpc01lcmdlYWJsZShyaWdodCkpIHtcbiAgICByZXR1cm4gZGVlcE1lcmdlSW50ZXJuYWwobGVmdCwgcmlnaHQsIHNlZW4sIG9wdGlvbnMpO1xuICB9XG4gIGlmIChpc0l0ZXJhYmxlKGxlZnQpICYmIGlzSXRlcmFibGUocmlnaHQpKSB7XG4gICAgLy8gSGFuZGxlIGFycmF5c1xuICAgIGlmIChBcnJheS5pc0FycmF5KGxlZnQpICYmIEFycmF5LmlzQXJyYXkocmlnaHQpKSB7XG4gICAgICBpZiAob3B0aW9ucy5hcnJheXMgPT09IFwibWVyZ2VcIikge1xuICAgICAgICByZXR1cm4gbGVmdC5jb25jYXQocmlnaHQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJpZ2h0O1xuICAgIH1cbiAgICAvLyBIYW5kbGUgbWFwc1xuICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgTWFwICYmIHJpZ2h0IGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICBpZiAob3B0aW9ucy5tYXBzID09PSBcIm1lcmdlXCIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXAoW1xuICAgICAgICAgIC4uLmxlZnQsXG4gICAgICAgICAgLi4ucmlnaHRcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmlnaHQ7XG4gICAgfVxuICAgIC8vIEhhbmRsZSBzZXRzXG4gICAgaWYgKGxlZnQgaW5zdGFuY2VvZiBTZXQgJiYgcmlnaHQgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgIGlmIChvcHRpb25zLnNldHMgPT09IFwibWVyZ2VcIikge1xuICAgICAgICByZXR1cm4gbmV3IFNldChbXG4gICAgICAgICAgLi4ubGVmdCxcbiAgICAgICAgICAuLi5yaWdodFxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByaWdodDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJpZ2h0O1xufVxuLyoqXG4gKiBUZXN0IHdoZXRoZXIgYSB2YWx1ZSBpcyBtZXJnZWFibGUgb3Igbm90XG4gKiBCdWlsdGlucyB0aGF0IGxvb2sgbGlrZSBvYmplY3RzLCBudWxsIGFuZCB1c2VyIGRlZmluZWQgY2xhc3Nlc1xuICogYXJlIG5vdCBjb25zaWRlcmVkIG1lcmdlYWJsZSAoaXQgbWVhbnMgdGhhdCByZWZlcmVuY2Ugd2lsbCBiZSBjb3BpZWQpXG4gKi8gZnVuY3Rpb24gaXNNZXJnZWFibGUodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgPT09IE9iamVjdC5wcm90b3R5cGU7XG59XG5mdW5jdGlvbiBpc0l0ZXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWVbU3ltYm9sLml0ZXJhdG9yXSA9PT0gXCJmdW5jdGlvblwiO1xufVxuZnVuY3Rpb24gaXNOb25OdWxsT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBnZXRLZXlzKHJlY29yZCkge1xuICBjb25zdCByZXN1bHQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHJlY29yZCk7XG4gIGZpbHRlckluUGxhY2UocmVzdWx0LCAoa2V5KT0+T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHJlY29yZCwga2V5KSk7XG4gIHJlc3VsdC5wdXNoKC4uLk9iamVjdC5rZXlzKHJlY29yZCkpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVlcF9tZXJnZS5qcy5tYXAiLCIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIkBqc3Ivc3RkX19jb2xsZWN0aW9ucy9kZWVwLW1lcmdlXCI7XG4vKipcbiAqIENvcHkgb2YgYGltcG9ydCB7IGlzTGVhcCB9IGZyb20gXCJAc3RkL2RhdGV0aW1lXCI7YCBiZWNhdXNlIGl0IGNhbm5vdCBiZSBpbXBvdGVkIGFzIGxvbmcgYXMgaXQgaXMgdW5zdGFibGUuXG4gKi8gZnVuY3Rpb24gaXNMZWFwKHllYXJOdW1iZXIpIHtcbiAgcmV0dXJuIHllYXJOdW1iZXIgJSA0ID09PSAwICYmIHllYXJOdW1iZXIgJSAxMDAgIT09IDAgfHwgeWVhck51bWJlciAlIDQwMCA9PT0gMDtcbn1cbmV4cG9ydCBjbGFzcyBTY2FubmVyIHtcbiAgI3doaXRlc3BhY2UgPSAvWyBcXHRdLztcbiAgI3Bvc2l0aW9uID0gMDtcbiAgI3NvdXJjZTtcbiAgY29uc3RydWN0b3Ioc291cmNlKXtcbiAgICB0aGlzLiNzb3VyY2UgPSBzb3VyY2U7XG4gIH1cbiAgZ2V0IHBvc2l0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLiNwb3NpdGlvbjtcbiAgfVxuICBnZXQgc291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLiNzb3VyY2U7XG4gIH1cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IGNoYXJhY3RlclxuICAgKiBAcGFyYW0gaW5kZXggLSByZWxhdGl2ZSBpbmRleCBmcm9tIGN1cnJlbnQgcG9zaXRpb25cbiAgICovIGNoYXIoaW5kZXggPSAwKSB7XG4gICAgcmV0dXJuIHRoaXMuI3NvdXJjZVt0aGlzLiNwb3NpdGlvbiArIGluZGV4XSA/PyBcIlwiO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgc2xpY2VkIHN0cmluZ1xuICAgKiBAcGFyYW0gc3RhcnQgLSBzdGFydCBwb3NpdGlvbiByZWxhdGl2ZSBmcm9tIGN1cnJlbnQgcG9zaXRpb25cbiAgICogQHBhcmFtIGVuZCAtIGVuZCBwb3NpdGlvbiByZWxhdGl2ZSBmcm9tIGN1cnJlbnQgcG9zaXRpb25cbiAgICovIHNsaWNlKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gdGhpcy4jc291cmNlLnNsaWNlKHRoaXMuI3Bvc2l0aW9uICsgc3RhcnQsIHRoaXMuI3Bvc2l0aW9uICsgZW5kKTtcbiAgfVxuICAvKipcbiAgICogTW92ZSBwb3NpdGlvbiB0byBuZXh0XG4gICAqLyBuZXh0KGNvdW50ID0gMSkge1xuICAgIHRoaXMuI3Bvc2l0aW9uICs9IGNvdW50O1xuICB9XG4gIHNraXBXaGl0ZXNwYWNlcygpIHtcbiAgICB3aGlsZSh0aGlzLiN3aGl0ZXNwYWNlLnRlc3QodGhpcy5jaGFyKCkpICYmICF0aGlzLmVvZigpKXtcbiAgICAgIHRoaXMubmV4dCgpO1xuICAgIH1cbiAgICAvLyBJbnZhbGlkIGlmIGN1cnJlbnQgY2hhciBpcyBvdGhlciBraW5kcyBvZiB3aGl0ZXNwYWNlXG4gICAgaWYgKCF0aGlzLmlzQ3VycmVudENoYXJFT0woKSAmJiAvXFxzLy50ZXN0KHRoaXMuY2hhcigpKSkge1xuICAgICAgY29uc3QgZXNjYXBlZCA9IFwiXFxcXHVcIiArIHRoaXMuY2hhcigpLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpO1xuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLiNwb3NpdGlvbjtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgQ2Fubm90IHBhcnNlIHRoZSBUT01MOiBJdCBjb250YWlucyBpbnZhbGlkIHdoaXRlc3BhY2UgYXQgcG9zaXRpb24gJyR7cG9zaXRpb259JzogXFxgJHtlc2NhcGVkfVxcYGApO1xuICAgIH1cbiAgfVxuICBuZXh0VW50aWxDaGFyKG9wdGlvbnMgPSB7XG4gICAgc2tpcENvbW1lbnRzOiB0cnVlXG4gIH0pIHtcbiAgICB3aGlsZSghdGhpcy5lb2YoKSl7XG4gICAgICBjb25zdCBjaGFyID0gdGhpcy5jaGFyKCk7XG4gICAgICBpZiAodGhpcy4jd2hpdGVzcGFjZS50ZXN0KGNoYXIpIHx8IHRoaXMuaXNDdXJyZW50Q2hhckVPTCgpKSB7XG4gICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnNraXBDb21tZW50cyAmJiB0aGlzLmNoYXIoKSA9PT0gXCIjXCIpIHtcbiAgICAgICAgLy8gZW50ZXJpbmcgY29tbWVudFxuICAgICAgICB3aGlsZSghdGhpcy5pc0N1cnJlbnRDaGFyRU9MKCkgJiYgIXRoaXMuZW9mKCkpe1xuICAgICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFBvc2l0aW9uIHJlYWNoZWQgRU9GIG9yIG5vdFxuICAgKi8gZW9mKCkge1xuICAgIHJldHVybiB0aGlzLiNwb3NpdGlvbiA+PSB0aGlzLiNzb3VyY2UubGVuZ3RoO1xuICB9XG4gIGlzQ3VycmVudENoYXJFT0woKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hhcigpID09PSBcIlxcblwiIHx8IHRoaXMuc3RhcnRzV2l0aChcIlxcclxcblwiKTtcbiAgfVxuICBzdGFydHNXaXRoKHNlYXJjaFN0cmluZykge1xuICAgIHJldHVybiB0aGlzLiNzb3VyY2Uuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcsIHRoaXMuI3Bvc2l0aW9uKTtcbiAgfVxuICBtYXRjaChyZWdFeHApIHtcbiAgICBpZiAoIXJlZ0V4cC5zdGlja3kpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUmVnRXhwICR7cmVnRXhwfSBkb2VzIG5vdCBoYXZlIGEgc3RpY2t5ICd5JyBmbGFnYCk7XG4gICAgfVxuICAgIHJlZ0V4cC5sYXN0SW5kZXggPSB0aGlzLiNwb3NpdGlvbjtcbiAgICByZXR1cm4gdGhpcy4jc291cmNlLm1hdGNoKHJlZ0V4cCk7XG4gIH1cbn1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVdGlsaXRpZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdWNjZXNzKGJvZHkpIHtcbiAgcmV0dXJuIHtcbiAgICBvazogdHJ1ZSxcbiAgICBib2R5XG4gIH07XG59XG5mdW5jdGlvbiBmYWlsdXJlKCkge1xuICByZXR1cm4ge1xuICAgIG9rOiBmYWxzZVxuICB9O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmVzdGVkIG9iamVjdCBmcm9tIHRoZSBrZXlzIGFuZCB2YWx1ZXMuXG4gKlxuICogZS5nLiBgdW5mbGF0KFtcImFcIiwgXCJiXCIsIFwiY1wiXSwgMSlgIHJldHVybnMgYHsgYTogeyBiOiB7IGM6IDEgfSB9IH1gXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHVuZmxhdChrZXlzLCB2YWx1ZXMgPSB7XG4gIF9fcHJvdG9fXzogbnVsbFxufSkge1xuICByZXR1cm4ga2V5cy5yZWR1Y2VSaWdodCgoYWNjLCBrZXkpPT4oe1xuICAgICAgW2tleV06IGFjY1xuICAgIH0pLCB2YWx1ZXMpO1xufVxuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbDtcbn1cbmZ1bmN0aW9uIGdldFRhcmdldFZhbHVlKHRhcmdldCwga2V5cykge1xuICBjb25zdCBrZXkgPSBrZXlzWzBdO1xuICBpZiAoIWtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBwYXJzZSB0aGUgVE9NTDoga2V5IGxlbmd0aCBpcyBub3QgYSBwb3NpdGl2ZSBudW1iZXJcIik7XG4gIH1cbiAgcmV0dXJuIHRhcmdldFtrZXldO1xufVxuZnVuY3Rpb24gZGVlcEFzc2lnblRhYmxlKHRhcmdldCwgdGFibGUpIHtcbiAgY29uc3QgeyBrZXlzLCB0eXBlLCB2YWx1ZSB9ID0gdGFibGU7XG4gIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGdldFRhcmdldFZhbHVlKHRhcmdldCwga2V5cyk7XG4gIGlmIChjdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHRhcmdldCwgdW5mbGF0KGtleXMsIHZhbHVlKSk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFZhbHVlKSkge1xuICAgIGNvbnN0IGxhc3QgPSBjdXJyZW50VmFsdWUuYXQoLTEpO1xuICAgIGRlZXBBc3NpZ24obGFzdCwge1xuICAgICAgdHlwZSxcbiAgICAgIGtleXM6IGtleXMuc2xpY2UoMSksXG4gICAgICB2YWx1ZVxuICAgIH0pO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbiAgaWYgKGlzT2JqZWN0KGN1cnJlbnRWYWx1ZSkpIHtcbiAgICBkZWVwQXNzaWduKGN1cnJlbnRWYWx1ZSwge1xuICAgICAgdHlwZSxcbiAgICAgIGtleXM6IGtleXMuc2xpY2UoMSksXG4gICAgICB2YWx1ZVxuICAgIH0pO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBhc3NpZ25cIik7XG59XG5mdW5jdGlvbiBkZWVwQXNzaWduVGFibGVBcnJheSh0YXJnZXQsIHRhYmxlKSB7XG4gIGNvbnN0IHsgdHlwZSwga2V5cywgdmFsdWUgfSA9IHRhYmxlO1xuICBjb25zdCBjdXJyZW50VmFsdWUgPSBnZXRUYXJnZXRWYWx1ZSh0YXJnZXQsIGtleXMpO1xuICBpZiAoY3VycmVudFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0YXJnZXQsIHVuZmxhdChrZXlzLCBbXG4gICAgICB2YWx1ZVxuICAgIF0pKTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpKSB7XG4gICAgaWYgKHRhYmxlLmtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjdXJyZW50VmFsdWUucHVzaCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxhc3QgPSBjdXJyZW50VmFsdWUuYXQoLTEpO1xuICAgICAgZGVlcEFzc2lnbihsYXN0LCB7XG4gICAgICAgIHR5cGU6IHRhYmxlLnR5cGUsXG4gICAgICAgIGtleXM6IHRhYmxlLmtleXMuc2xpY2UoMSksXG4gICAgICAgIHZhbHVlOiB0YWJsZS52YWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbiAgaWYgKGlzT2JqZWN0KGN1cnJlbnRWYWx1ZSkpIHtcbiAgICBkZWVwQXNzaWduKGN1cnJlbnRWYWx1ZSwge1xuICAgICAgdHlwZSxcbiAgICAgIGtleXM6IGtleXMuc2xpY2UoMSksXG4gICAgICB2YWx1ZVxuICAgIH0pO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBhc3NpZ25cIik7XG59XG5leHBvcnQgZnVuY3Rpb24gZGVlcEFzc2lnbih0YXJnZXQsIGJvZHkpIHtcbiAgc3dpdGNoKGJvZHkudHlwZSl7XG4gICAgY2FzZSBcIkJsb2NrXCI6XG4gICAgICByZXR1cm4gZGVlcE1lcmdlKHRhcmdldCwgYm9keS52YWx1ZSk7XG4gICAgY2FzZSBcIlRhYmxlXCI6XG4gICAgICByZXR1cm4gZGVlcEFzc2lnblRhYmxlKHRhcmdldCwgYm9keSk7XG4gICAgY2FzZSBcIlRhYmxlQXJyYXlcIjpcbiAgICAgIHJldHVybiBkZWVwQXNzaWduVGFibGVBcnJheSh0YXJnZXQsIGJvZHkpO1xuICB9XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlciBjb21iaW5hdG9ycyBhbmQgZ2VuZXJhdG9yc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gb3IocGFyc2Vycykge1xuICByZXR1cm4gKHNjYW5uZXIpPT57XG4gICAgZm9yIChjb25zdCBwYXJzZSBvZiBwYXJzZXJzKXtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlKHNjYW5uZXIpO1xuICAgICAgaWYgKHJlc3VsdC5vaykgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIGZhaWx1cmUoKTtcbiAgfTtcbn1cbi8qKiBKb2luIHRoZSBwYXJzZSByZXN1bHRzIG9mIHRoZSBnaXZlbiBwYXJzZXIgaW50byBhbiBhcnJheS5cbiAqXG4gKiBJZiB0aGUgcGFyc2VyIGZhaWxzIGF0IHRoZSBmaXJzdCBhdHRlbXB0LCBpdCB3aWxsIHJldHVybiBhbiBlbXB0eSBhcnJheS5cbiAqLyBmdW5jdGlvbiBqb2luKHBhcnNlciwgc2VwYXJhdG9yKSB7XG4gIGNvbnN0IFNlcGFyYXRvciA9IGNoYXJhY3RlcihzZXBhcmF0b3IpO1xuICByZXR1cm4gKHNjYW5uZXIpPT57XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgY29uc3QgZmlyc3QgPSBwYXJzZXIoc2Nhbm5lcik7XG4gICAgaWYgKCFmaXJzdC5vaykgcmV0dXJuIHN1Y2Nlc3Mob3V0KTtcbiAgICBvdXQucHVzaChmaXJzdC5ib2R5KTtcbiAgICB3aGlsZSghc2Nhbm5lci5lb2YoKSl7XG4gICAgICBpZiAoIVNlcGFyYXRvcihzY2FubmVyKS5vaykgYnJlYWs7XG4gICAgICBjb25zdCByZXN1bHQgPSBwYXJzZXIoc2Nhbm5lcik7XG4gICAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYEludmFsaWQgdG9rZW4gYWZ0ZXIgXCIke3NlcGFyYXRvcn1cImApO1xuICAgICAgfVxuICAgICAgb3V0LnB1c2gocmVzdWx0LmJvZHkpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VzcyhvdXQpO1xuICB9O1xufVxuLyoqIEpvaW4gdGhlIHBhcnNlIHJlc3VsdHMgb2YgdGhlIGdpdmVuIHBhcnNlciBpbnRvIGFuIGFycmF5LlxuICpcbiAqIFRoaXMgcmVxdWlyZXMgdGhlIHBhcnNlciB0byBzdWNjZWVkIGF0IGxlYXN0IG9uY2UuXG4gKi8gZnVuY3Rpb24gam9pbjEocGFyc2VyLCBzZXBhcmF0b3IpIHtcbiAgY29uc3QgU2VwYXJhdG9yID0gY2hhcmFjdGVyKHNlcGFyYXRvcik7XG4gIHJldHVybiAoc2Nhbm5lcik9PntcbiAgICBjb25zdCBmaXJzdCA9IHBhcnNlcihzY2FubmVyKTtcbiAgICBpZiAoIWZpcnN0Lm9rKSByZXR1cm4gZmFpbHVyZSgpO1xuICAgIGNvbnN0IG91dCA9IFtcbiAgICAgIGZpcnN0LmJvZHlcbiAgICBdO1xuICAgIHdoaWxlKCFzY2FubmVyLmVvZigpKXtcbiAgICAgIGlmICghU2VwYXJhdG9yKHNjYW5uZXIpLm9rKSBicmVhaztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlcihzY2FubmVyKTtcbiAgICAgIGlmICghcmVzdWx0Lm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgSW52YWxpZCB0b2tlbiBhZnRlciBcIiR7c2VwYXJhdG9yfVwiYCk7XG4gICAgICB9XG4gICAgICBvdXQucHVzaChyZXN1bHQuYm9keSk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzKG91dCk7XG4gIH07XG59XG5mdW5jdGlvbiBrdihrZXlQYXJzZXIsIHNlcGFyYXRvciwgdmFsdWVQYXJzZXIpIHtcbiAgY29uc3QgU2VwYXJhdG9yID0gY2hhcmFjdGVyKHNlcGFyYXRvcik7XG4gIHJldHVybiAoc2Nhbm5lcik9PntcbiAgICBjb25zdCBwb3NpdGlvbiA9IHNjYW5uZXIucG9zaXRpb247XG4gICAgY29uc3Qga2V5ID0ga2V5UGFyc2VyKHNjYW5uZXIpO1xuICAgIGlmICgha2V5Lm9rKSByZXR1cm4gZmFpbHVyZSgpO1xuICAgIGNvbnN0IHNlcCA9IFNlcGFyYXRvcihzY2FubmVyKTtcbiAgICBpZiAoIXNlcC5vaykge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBrZXkvdmFsdWUgcGFpciBkb2Vzbid0IGhhdmUgXCIke3NlcGFyYXRvcn1cImApO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IHZhbHVlUGFyc2VyKHNjYW5uZXIpO1xuICAgIGlmICghdmFsdWUub2spIHtcbiAgICAgIGNvbnN0IGxpbmVFbmRJbmRleCA9IHNjYW5uZXIuc291cmNlLmluZGV4T2YoXCJcXG5cIiwgc2Nhbm5lci5wb3NpdGlvbik7XG4gICAgICBjb25zdCBlbmRQb3NpdGlvbiA9IGxpbmVFbmRJbmRleCA+IDAgPyBsaW5lRW5kSW5kZXggOiBzY2FubmVyLnNvdXJjZS5sZW5ndGg7XG4gICAgICBjb25zdCBsaW5lID0gc2Nhbm5lci5zb3VyY2Uuc2xpY2UocG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgQ2Fubm90IHBhcnNlIHZhbHVlIG9uIGxpbmUgJyR7bGluZX0nYCk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzKHVuZmxhdChrZXkuYm9keSwgdmFsdWUuYm9keSkpO1xuICB9O1xufVxuZnVuY3Rpb24gbWVyZ2UocGFyc2VyKSB7XG4gIHJldHVybiAoc2Nhbm5lcik9PntcbiAgICBjb25zdCByZXN1bHQgPSBwYXJzZXIoc2Nhbm5lcik7XG4gICAgaWYgKCFyZXN1bHQub2spIHJldHVybiBmYWlsdXJlKCk7XG4gICAgbGV0IGJvZHkgPSB7XG4gICAgICBfX3Byb3RvX186IG51bGxcbiAgICB9O1xuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlc3VsdC5ib2R5KXtcbiAgICAgIGlmICh0eXBlb2YgcmVjb3JkID09PSBcIm9iamVjdFwiICYmIHJlY29yZCAhPT0gbnVsbCkge1xuICAgICAgICBib2R5ID0gZGVlcE1lcmdlKGJvZHksIHJlY29yZCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzKGJvZHkpO1xuICB9O1xufVxuZnVuY3Rpb24gcmVwZWF0KHBhcnNlcikge1xuICByZXR1cm4gKHNjYW5uZXIpPT57XG4gICAgY29uc3QgYm9keSA9IFtdO1xuICAgIHdoaWxlKCFzY2FubmVyLmVvZigpKXtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlcihzY2FubmVyKTtcbiAgICAgIGlmICghcmVzdWx0Lm9rKSBicmVhaztcbiAgICAgIGJvZHkucHVzaChyZXN1bHQuYm9keSk7XG4gICAgICBzY2FubmVyLm5leHRVbnRpbENoYXIoKTtcbiAgICB9XG4gICAgaWYgKGJvZHkubGVuZ3RoID09PSAwKSByZXR1cm4gZmFpbHVyZSgpO1xuICAgIHJldHVybiBzdWNjZXNzKGJvZHkpO1xuICB9O1xufVxuZnVuY3Rpb24gc3Vycm91bmQobGVmdCwgcGFyc2VyLCByaWdodCkge1xuICBjb25zdCBMZWZ0ID0gY2hhcmFjdGVyKGxlZnQpO1xuICBjb25zdCBSaWdodCA9IGNoYXJhY3RlcihyaWdodCk7XG4gIHJldHVybiAoc2Nhbm5lcik9PntcbiAgICBpZiAoIUxlZnQoc2Nhbm5lcikub2spIHtcbiAgICAgIHJldHVybiBmYWlsdXJlKCk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlcihzY2FubmVyKTtcbiAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnZhbGlkIHRva2VuIGFmdGVyIFwiJHtsZWZ0fVwiYCk7XG4gICAgfVxuICAgIGlmICghUmlnaHQoc2Nhbm5lcikub2spIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgTm90IGNsb3NlZCBieSBcIiR7cmlnaHR9XCIgYWZ0ZXIgc3RhcnRlZCB3aXRoIFwiJHtsZWZ0fVwiYCk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzKHJlc3VsdC5ib2R5KTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGNoYXJhY3RlcihzdHIpIHtcbiAgcmV0dXJuIChzY2FubmVyKT0+e1xuICAgIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gICAgaWYgKCFzY2FubmVyLnN0YXJ0c1dpdGgoc3RyKSkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgICBzY2FubmVyLm5leHQoc3RyLmxlbmd0aCk7XG4gICAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgICByZXR1cm4gc3VjY2Vzcyh1bmRlZmluZWQpO1xuICB9O1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlciBjb21wb25lbnRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuY29uc3QgQkFSRV9LRVlfUkVHRVhQID0gL1tBLVphLXowLTlfLV0rL3k7XG5leHBvcnQgZnVuY3Rpb24gYmFyZUtleShzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IGtleSA9IHNjYW5uZXIubWF0Y2goQkFSRV9LRVlfUkVHRVhQKT8uWzBdO1xuICBpZiAoIWtleSkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KGtleS5sZW5ndGgpO1xuICByZXR1cm4gc3VjY2VzcyhrZXkpO1xufVxuZnVuY3Rpb24gZXNjYXBlU2VxdWVuY2Uoc2Nhbm5lcikge1xuICBpZiAoc2Nhbm5lci5jaGFyKCkgIT09IFwiXFxcXFwiKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQoKTtcbiAgLy8gU2VlIGh0dHBzOi8vdG9tbC5pby9lbi92MS4wLjAtcmMuMyNzdHJpbmdcbiAgc3dpdGNoKHNjYW5uZXIuY2hhcigpKXtcbiAgICBjYXNlIFwiYlwiOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcyhcIlxcYlwiKTtcbiAgICBjYXNlIFwidFwiOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcyhcIlxcdFwiKTtcbiAgICBjYXNlIFwiblwiOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcyhcIlxcblwiKTtcbiAgICBjYXNlIFwiZlwiOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcyhcIlxcZlwiKTtcbiAgICBjYXNlIFwiclwiOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcyhcIlxcclwiKTtcbiAgICBjYXNlIFwidVwiOlxuICAgIGNhc2UgXCJVXCI6XG4gICAgICB7XG4gICAgICAgIC8vIFVuaWNvZGUgY2hhcmFjdGVyXG4gICAgICAgIGNvbnN0IGNvZGVQb2ludExlbiA9IHNjYW5uZXIuY2hhcigpID09PSBcInVcIiA/IDQgOiA2O1xuICAgICAgICBjb25zdCBjb2RlUG9pbnQgPSBwYXJzZUludChcIjB4XCIgKyBzY2FubmVyLnNsaWNlKDEsIDEgKyBjb2RlUG9pbnRMZW4pLCAxNik7XG4gICAgICAgIGNvbnN0IHN0ciA9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNvZGVQb2ludCk7XG4gICAgICAgIHNjYW5uZXIubmV4dChjb2RlUG9pbnRMZW4gKyAxKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3Moc3RyKTtcbiAgICAgIH1cbiAgICBjYXNlICdcIic6XG4gICAgICBzY2FubmVyLm5leHQoKTtcbiAgICAgIHJldHVybiBzdWNjZXNzKCdcIicpO1xuICAgIGNhc2UgXCJcXFxcXCI6XG4gICAgICBzY2FubmVyLm5leHQoKTtcbiAgICAgIHJldHVybiBzdWNjZXNzKFwiXFxcXFwiKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZTogXFxcXCR7c2Nhbm5lci5jaGFyKCl9YCk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBiYXNpY1N0cmluZyhzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGlmIChzY2FubmVyLmNoYXIoKSAhPT0gJ1wiJykgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KCk7XG4gIGNvbnN0IGFjYyA9IFtdO1xuICB3aGlsZShzY2FubmVyLmNoYXIoKSAhPT0gJ1wiJyAmJiAhc2Nhbm5lci5lb2YoKSl7XG4gICAgaWYgKHNjYW5uZXIuY2hhcigpID09PSBcIlxcblwiKSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXCJTaW5nbGUtbGluZSBzdHJpbmcgY2Fubm90IGNvbnRhaW4gRU9MXCIpO1xuICAgIH1cbiAgICBjb25zdCBlc2NhcGVkQ2hhciA9IGVzY2FwZVNlcXVlbmNlKHNjYW5uZXIpO1xuICAgIGlmIChlc2NhcGVkQ2hhci5vaykge1xuICAgICAgYWNjLnB1c2goZXNjYXBlZENoYXIuYm9keSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjYy5wdXNoKHNjYW5uZXIuY2hhcigpKTtcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgIH1cbiAgfVxuICBpZiAoc2Nhbm5lci5lb2YoKSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgU2luZ2xlLWxpbmUgc3RyaW5nIGlzIG5vdCBjbG9zZWQ6XFxuJHthY2Muam9pbihcIlwiKX1gKTtcbiAgfVxuICBzY2FubmVyLm5leHQoKTsgLy8gc2tpcCBsYXN0ICdcIlwiXG4gIHJldHVybiBzdWNjZXNzKGFjYy5qb2luKFwiXCIpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsaXRlcmFsU3RyaW5nKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgaWYgKHNjYW5uZXIuY2hhcigpICE9PSBcIidcIikgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KCk7XG4gIGNvbnN0IGFjYyA9IFtdO1xuICB3aGlsZShzY2FubmVyLmNoYXIoKSAhPT0gXCInXCIgJiYgIXNjYW5uZXIuZW9mKCkpe1xuICAgIGlmIChzY2FubmVyLmNoYXIoKSA9PT0gXCJcXG5cIikge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFwiU2luZ2xlLWxpbmUgc3RyaW5nIGNhbm5vdCBjb250YWluIEVPTFwiKTtcbiAgICB9XG4gICAgYWNjLnB1c2goc2Nhbm5lci5jaGFyKCkpO1xuICAgIHNjYW5uZXIubmV4dCgpO1xuICB9XG4gIGlmIChzY2FubmVyLmVvZigpKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBTaW5nbGUtbGluZSBzdHJpbmcgaXMgbm90IGNsb3NlZDpcXG4ke2FjYy5qb2luKFwiXCIpfWApO1xuICB9XG4gIHNjYW5uZXIubmV4dCgpOyAvLyBza2lwIGxhc3QgXCInXCJcbiAgcmV0dXJuIHN1Y2Nlc3MoYWNjLmpvaW4oXCJcIikpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpbGluZUJhc2ljU3RyaW5nKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgaWYgKCFzY2FubmVyLnN0YXJ0c1dpdGgoJ1wiXCJcIicpKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQoMyk7XG4gIGlmIChzY2FubmVyLmNoYXIoKSA9PT0gXCJcXG5cIikge1xuICAgIC8vIFRoZSBmaXJzdCBuZXdsaW5lIChMRikgaXMgdHJpbW1lZFxuICAgIHNjYW5uZXIubmV4dCgpO1xuICB9IGVsc2UgaWYgKHNjYW5uZXIuc3RhcnRzV2l0aChcIlxcclxcblwiKSkge1xuICAgIC8vIFRoZSBmaXJzdCBuZXdsaW5lIChDUkxGKSBpcyB0cmltbWVkXG4gICAgc2Nhbm5lci5uZXh0KDIpO1xuICB9XG4gIGNvbnN0IGFjYyA9IFtdO1xuICB3aGlsZSghc2Nhbm5lci5zdGFydHNXaXRoKCdcIlwiXCInKSAmJiAhc2Nhbm5lci5lb2YoKSl7XG4gICAgLy8gbGluZSBlbmRpbmcgYmFja3NsYXNoXG4gICAgaWYgKHNjYW5uZXIuc3RhcnRzV2l0aChcIlxcXFxcXG5cIikpIHtcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKHtcbiAgICAgICAgc2tpcENvbW1lbnRzOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9IGVsc2UgaWYgKHNjYW5uZXIuc3RhcnRzV2l0aChcIlxcXFxcXHJcXG5cIikpIHtcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKHtcbiAgICAgICAgc2tpcENvbW1lbnRzOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgZXNjYXBlZENoYXIgPSBlc2NhcGVTZXF1ZW5jZShzY2FubmVyKTtcbiAgICBpZiAoZXNjYXBlZENoYXIub2spIHtcbiAgICAgIGFjYy5wdXNoKGVzY2FwZWRDaGFyLmJvZHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY2MucHVzaChzY2FubmVyLmNoYXIoKSk7XG4gICAgICBzY2FubmVyLm5leHQoKTtcbiAgICB9XG4gIH1cbiAgaWYgKHNjYW5uZXIuZW9mKCkpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYE11bHRpLWxpbmUgc3RyaW5nIGlzIG5vdCBjbG9zZWQ6XFxuJHthY2Muam9pbihcIlwiKX1gKTtcbiAgfVxuICAvLyBpZiBlbmRzIHdpdGggNCBgXCJgLCBwdXNoIHRoZSBmaXN0IGBcImAgdG8gc3RyaW5nXG4gIGlmIChzY2FubmVyLmNoYXIoMykgPT09ICdcIicpIHtcbiAgICBhY2MucHVzaCgnXCInKTtcbiAgICBzY2FubmVyLm5leHQoKTtcbiAgfVxuICBzY2FubmVyLm5leHQoMyk7IC8vIHNraXAgbGFzdCAnXCJcIlwiXCJcbiAgcmV0dXJuIHN1Y2Nlc3MoYWNjLmpvaW4oXCJcIikpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpbGluZUxpdGVyYWxTdHJpbmcoc2Nhbm5lcikge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBpZiAoIXNjYW5uZXIuc3RhcnRzV2l0aChcIicnJ1wiKSkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KDMpO1xuICBpZiAoc2Nhbm5lci5jaGFyKCkgPT09IFwiXFxuXCIpIHtcbiAgICAvLyBUaGUgZmlyc3QgbmV3bGluZSAoTEYpIGlzIHRyaW1tZWRcbiAgICBzY2FubmVyLm5leHQoKTtcbiAgfSBlbHNlIGlmIChzY2FubmVyLnN0YXJ0c1dpdGgoXCJcXHJcXG5cIikpIHtcbiAgICAvLyBUaGUgZmlyc3QgbmV3bGluZSAoQ1JMRikgaXMgdHJpbW1lZFxuICAgIHNjYW5uZXIubmV4dCgyKTtcbiAgfVxuICBjb25zdCBhY2MgPSBbXTtcbiAgd2hpbGUoIXNjYW5uZXIuc3RhcnRzV2l0aChcIicnJ1wiKSAmJiAhc2Nhbm5lci5lb2YoKSl7XG4gICAgYWNjLnB1c2goc2Nhbm5lci5jaGFyKCkpO1xuICAgIHNjYW5uZXIubmV4dCgpO1xuICB9XG4gIGlmIChzY2FubmVyLmVvZigpKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBNdWx0aS1saW5lIHN0cmluZyBpcyBub3QgY2xvc2VkOlxcbiR7YWNjLmpvaW4oXCJcIil9YCk7XG4gIH1cbiAgLy8gaWYgZW5kcyB3aXRoIDQgYCdgLCBwdXNoIHRoZSBmaXN0IGAnYCB0byBzdHJpbmdcbiAgaWYgKHNjYW5uZXIuY2hhcigzKSA9PT0gXCInXCIpIHtcbiAgICBhY2MucHVzaChcIidcIik7XG4gICAgc2Nhbm5lci5uZXh0KCk7XG4gIH1cbiAgc2Nhbm5lci5uZXh0KDMpOyAvLyBza2lwIGxhc3QgXCInJydcIlxuICByZXR1cm4gc3VjY2VzcyhhY2Muam9pbihcIlwiKSk7XG59XG5jb25zdCBCT09MRUFOX1JFR0VYUCA9IC8oPzp0cnVlfGZhbHNlKVxcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIGJvb2xlYW4oc2Nhbm5lcikge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBjb25zdCBtYXRjaCA9IHNjYW5uZXIubWF0Y2goQk9PTEVBTl9SRUdFWFApO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBjb25zdCBzdHJpbmcgPSBtYXRjaFswXTtcbiAgc2Nhbm5lci5uZXh0KHN0cmluZy5sZW5ndGgpO1xuICBjb25zdCB2YWx1ZSA9IHN0cmluZyA9PT0gXCJ0cnVlXCI7XG4gIHJldHVybiBzdWNjZXNzKHZhbHVlKTtcbn1cbmNvbnN0IElORklOSVRZX01BUCA9IG5ldyBNYXAoW1xuICBbXG4gICAgXCJpbmZcIixcbiAgICBJbmZpbml0eVxuICBdLFxuICBbXG4gICAgXCIraW5mXCIsXG4gICAgSW5maW5pdHlcbiAgXSxcbiAgW1xuICAgIFwiLWluZlwiLFxuICAgIC1JbmZpbml0eVxuICBdXG5dKTtcbmNvbnN0IElORklOSVRZX1JFR0VYUCA9IC9bKy1dP2luZlxcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIGluZmluaXR5KHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKElORklOSVRZX1JFR0VYUCk7XG4gIGlmICghbWF0Y2gpIHJldHVybiBmYWlsdXJlKCk7XG4gIGNvbnN0IHN0cmluZyA9IG1hdGNoWzBdO1xuICBzY2FubmVyLm5leHQoc3RyaW5nLmxlbmd0aCk7XG4gIGNvbnN0IHZhbHVlID0gSU5GSU5JVFlfTUFQLmdldChzdHJpbmcpO1xuICByZXR1cm4gc3VjY2Vzcyh2YWx1ZSk7XG59XG5jb25zdCBOQU5fUkVHRVhQID0gL1srLV0/bmFuXFxiL3k7XG5leHBvcnQgZnVuY3Rpb24gbmFuKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKE5BTl9SRUdFWFApO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBjb25zdCBzdHJpbmcgPSBtYXRjaFswXTtcbiAgc2Nhbm5lci5uZXh0KHN0cmluZy5sZW5ndGgpO1xuICBjb25zdCB2YWx1ZSA9IE5hTjtcbiAgcmV0dXJuIHN1Y2Nlc3ModmFsdWUpO1xufVxuZXhwb3J0IGNvbnN0IGRvdHRlZEtleSA9IGpvaW4xKG9yKFtcbiAgYmFyZUtleSxcbiAgYmFzaWNTdHJpbmcsXG4gIGxpdGVyYWxTdHJpbmdcbl0pLCBcIi5cIik7XG5jb25zdCBCSU5BUllfUkVHRVhQID0gLzBiWzAxXSsoPzpfWzAxXSspKlxcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIGJpbmFyeShzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChCSU5BUllfUkVHRVhQKT8uWzBdO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQobWF0Y2gubGVuZ3RoKTtcbiAgY29uc3QgdmFsdWUgPSBtYXRjaC5zbGljZSgyKS5yZXBsYWNlQWxsKFwiX1wiLCBcIlwiKTtcbiAgY29uc3QgbnVtYmVyID0gcGFyc2VJbnQodmFsdWUsIDIpO1xuICByZXR1cm4gaXNOYU4obnVtYmVyKSA/IGZhaWx1cmUoKSA6IHN1Y2Nlc3MobnVtYmVyKTtcbn1cbmNvbnN0IE9DVEFMX1JFR0VYUCA9IC8wb1swLTddKyg/Ol9bMC03XSspKlxcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIG9jdGFsKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKE9DVEFMX1JFR0VYUCk/LlswXTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KG1hdGNoLmxlbmd0aCk7XG4gIGNvbnN0IHZhbHVlID0gbWF0Y2guc2xpY2UoMikucmVwbGFjZUFsbChcIl9cIiwgXCJcIik7XG4gIGNvbnN0IG51bWJlciA9IHBhcnNlSW50KHZhbHVlLCA4KTtcbiAgcmV0dXJuIGlzTmFOKG51bWJlcikgPyBmYWlsdXJlKCkgOiBzdWNjZXNzKG51bWJlcik7XG59XG5jb25zdCBIRVhfUkVHRVhQID0gLzB4WzAtOWEtZl0rKD86X1swLTlhLWZdKykqXFxiL3lpO1xuZXhwb3J0IGZ1bmN0aW9uIGhleChzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChIRVhfUkVHRVhQKT8uWzBdO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQobWF0Y2gubGVuZ3RoKTtcbiAgY29uc3QgdmFsdWUgPSBtYXRjaC5zbGljZSgyKS5yZXBsYWNlQWxsKFwiX1wiLCBcIlwiKTtcbiAgY29uc3QgbnVtYmVyID0gcGFyc2VJbnQodmFsdWUsIDE2KTtcbiAgcmV0dXJuIGlzTmFOKG51bWJlcikgPyBmYWlsdXJlKCkgOiBzdWNjZXNzKG51bWJlcik7XG59XG5jb25zdCBJTlRFR0VSX1JFR0VYUCA9IC9bKy1dPyg/OjB8WzEtOV1bMC05XSooPzpfWzAtOV0rKSopXFxiL3k7XG5leHBvcnQgZnVuY3Rpb24gaW50ZWdlcihzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChJTlRFR0VSX1JFR0VYUCk/LlswXTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KG1hdGNoLmxlbmd0aCk7XG4gIGNvbnN0IHZhbHVlID0gbWF0Y2gucmVwbGFjZUFsbChcIl9cIiwgXCJcIik7XG4gIGNvbnN0IGludCA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gIHJldHVybiBzdWNjZXNzKGludCk7XG59XG5jb25zdCBGTE9BVF9SRUdFWFAgPSAvWystXT8oPzowfFsxLTldWzAtOV0qKD86X1swLTldKykqKSg/OlxcLlswLTldKyg/Ol9bMC05XSspKik/KD86ZVsrLV0/WzAtOV0rKD86X1swLTldKykqKT9cXGIveWk7XG5leHBvcnQgZnVuY3Rpb24gZmxvYXQoc2Nhbm5lcikge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBjb25zdCBtYXRjaCA9IHNjYW5uZXIubWF0Y2goRkxPQVRfUkVHRVhQKT8uWzBdO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQobWF0Y2gubGVuZ3RoKTtcbiAgY29uc3QgdmFsdWUgPSBtYXRjaC5yZXBsYWNlQWxsKFwiX1wiLCBcIlwiKTtcbiAgY29uc3QgZmxvYXQgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgaWYgKGlzTmFOKGZsb2F0KSkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgcmV0dXJuIHN1Y2Nlc3MoZmxvYXQpO1xufVxuY29uc3QgREFURV9USU1FX1JFR0VYUCA9IC8oPzx5ZWFyPlxcZHs0fSktKD88bW9udGg+XFxkezJ9KS0oPzxkYXk+XFxkezJ9KSg/OlsgMC05VFouOistXSspP1xcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGVUaW1lKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKERBVEVfVElNRV9SRUdFWFApO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBjb25zdCBzdHJpbmcgPSBtYXRjaFswXTtcbiAgc2Nhbm5lci5uZXh0KHN0cmluZy5sZW5ndGgpO1xuICBjb25zdCBncm91cHMgPSBtYXRjaC5ncm91cHM7XG4gIC8vIHNwZWNpYWwgY2FzZSBpZiBtb250aCBpcyBGZWJydWFyeVxuICBpZiAoZ3JvdXBzLm1vbnRoID09IFwiMDJcIikge1xuICAgIGNvbnN0IGRheXMgPSBwYXJzZUludChncm91cHMuZGF5KTtcbiAgICBpZiAoZGF5cyA+IDI5KSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYEludmFsaWQgZGF0ZSBzdHJpbmcgXCIke21hdGNofVwiYCk7XG4gICAgfVxuICAgIGNvbnN0IHllYXIgPSBwYXJzZUludChncm91cHMueWVhcik7XG4gICAgaWYgKGRheXMgPiAyOCAmJiAhaXNMZWFwKHllYXIpKSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYEludmFsaWQgZGF0ZSBzdHJpbmcgXCIke21hdGNofVwiYCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShzdHJpbmcudHJpbSgpKTtcbiAgLy8gaW52YWxpZCBkYXRlXG4gIGlmIChpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYEludmFsaWQgZGF0ZSBzdHJpbmcgXCIke21hdGNofVwiYCk7XG4gIH1cbiAgcmV0dXJuIHN1Y2Nlc3MoZGF0ZSk7XG59XG5jb25zdCBMT0NBTF9USU1FX1JFR0VYUCA9IC8oXFxkezJ9KTooXFxkezJ9KTooXFxkezJ9KSg/OlxcLlswLTldKyk/XFxiL3k7XG5leHBvcnQgZnVuY3Rpb24gbG9jYWxUaW1lKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKExPQ0FMX1RJTUVfUkVHRVhQKT8uWzBdO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQobWF0Y2gubGVuZ3RoKTtcbiAgcmV0dXJuIHN1Y2Nlc3MobWF0Y2gpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5VmFsdWUoc2Nhbm5lcikge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBpZiAoc2Nhbm5lci5jaGFyKCkgIT09IFwiW1wiKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQoKTtcbiAgY29uc3QgYXJyYXkgPSBbXTtcbiAgd2hpbGUoIXNjYW5uZXIuZW9mKCkpe1xuICAgIHNjYW5uZXIubmV4dFVudGlsQ2hhcigpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHZhbHVlKHNjYW5uZXIpO1xuICAgIGlmICghcmVzdWx0Lm9rKSBicmVhaztcbiAgICBhcnJheS5wdXNoKHJlc3VsdC5ib2R5KTtcbiAgICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICAgIC8vIG1heSBoYXZlIGEgbmV4dCBpdGVtLCBidXQgdHJhaWxpbmcgY29tbWEgaXMgYWxsb3dlZCBhdCBhcnJheVxuICAgIGlmIChzY2FubmVyLmNoYXIoKSAhPT0gXCIsXCIpIGJyZWFrO1xuICAgIHNjYW5uZXIubmV4dCgpO1xuICB9XG4gIHNjYW5uZXIubmV4dFVudGlsQ2hhcigpO1xuICBpZiAoc2Nhbm5lci5jaGFyKCkgIT09IFwiXVwiKSB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXCJBcnJheSBpcyBub3QgY2xvc2VkXCIpO1xuICBzY2FubmVyLm5leHQoKTtcbiAgcmV0dXJuIHN1Y2Nlc3MoYXJyYXkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlubGluZVRhYmxlKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKCk7XG4gIGlmIChzY2FubmVyLmNoYXIoMSkgPT09IFwifVwiKSB7XG4gICAgc2Nhbm5lci5uZXh0KDIpO1xuICAgIHJldHVybiBzdWNjZXNzKHtcbiAgICAgIF9fcHJvdG9fXzogbnVsbFxuICAgIH0pO1xuICB9XG4gIGNvbnN0IHBhaXJzID0gc3Vycm91bmQoXCJ7XCIsIGpvaW4ocGFpciwgXCIsXCIpLCBcIn1cIikoc2Nhbm5lcik7XG4gIGlmICghcGFpcnMub2spIHJldHVybiBmYWlsdXJlKCk7XG4gIGxldCB0YWJsZSA9IHtcbiAgICBfX3Byb3RvX186IG51bGxcbiAgfTtcbiAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzLmJvZHkpe1xuICAgIHRhYmxlID0gZGVlcE1lcmdlKHRhYmxlLCBwYWlyKTtcbiAgfVxuICByZXR1cm4gc3VjY2Vzcyh0YWJsZSk7XG59XG5leHBvcnQgY29uc3QgdmFsdWUgPSBvcihbXG4gIG11bHRpbGluZUJhc2ljU3RyaW5nLFxuICBtdWx0aWxpbmVMaXRlcmFsU3RyaW5nLFxuICBiYXNpY1N0cmluZyxcbiAgbGl0ZXJhbFN0cmluZyxcbiAgYm9vbGVhbixcbiAgaW5maW5pdHksXG4gIG5hbixcbiAgZGF0ZVRpbWUsXG4gIGxvY2FsVGltZSxcbiAgYmluYXJ5LFxuICBvY3RhbCxcbiAgaGV4LFxuICBmbG9hdCxcbiAgaW50ZWdlcixcbiAgYXJyYXlWYWx1ZSxcbiAgaW5saW5lVGFibGVcbl0pO1xuZXhwb3J0IGNvbnN0IHBhaXIgPSBrdihkb3R0ZWRLZXksIFwiPVwiLCB2YWx1ZSk7XG5leHBvcnQgZnVuY3Rpb24gYmxvY2soc2Nhbm5lcikge1xuICBzY2FubmVyLm5leHRVbnRpbENoYXIoKTtcbiAgY29uc3QgcmVzdWx0ID0gbWVyZ2UocmVwZWF0KHBhaXIpKShzY2FubmVyKTtcbiAgaWYgKHJlc3VsdC5vaykgcmV0dXJuIHN1Y2Nlc3Moe1xuICAgIHR5cGU6IFwiQmxvY2tcIixcbiAgICB2YWx1ZTogcmVzdWx0LmJvZHlcbiAgfSk7XG4gIHJldHVybiBmYWlsdXJlKCk7XG59XG5leHBvcnQgY29uc3QgdGFibGVIZWFkZXIgPSBzdXJyb3VuZChcIltcIiwgZG90dGVkS2V5LCBcIl1cIik7XG5leHBvcnQgZnVuY3Rpb24gdGFibGUoc2Nhbm5lcikge1xuICBzY2FubmVyLm5leHRVbnRpbENoYXIoKTtcbiAgY29uc3QgaGVhZGVyID0gdGFibGVIZWFkZXIoc2Nhbm5lcik7XG4gIGlmICghaGVhZGVyLm9rKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHRVbnRpbENoYXIoKTtcbiAgY29uc3QgYiA9IGJsb2NrKHNjYW5uZXIpO1xuICByZXR1cm4gc3VjY2Vzcyh7XG4gICAgdHlwZTogXCJUYWJsZVwiLFxuICAgIGtleXM6IGhlYWRlci5ib2R5LFxuICAgIHZhbHVlOiBiLm9rID8gYi5ib2R5LnZhbHVlIDoge1xuICAgICAgX19wcm90b19fOiBudWxsXG4gICAgfVxuICB9KTtcbn1cbmV4cG9ydCBjb25zdCB0YWJsZUFycmF5SGVhZGVyID0gc3Vycm91bmQoXCJbW1wiLCBkb3R0ZWRLZXksIFwiXV1cIik7XG5leHBvcnQgZnVuY3Rpb24gdGFibGVBcnJheShzY2FubmVyKSB7XG4gIHNjYW5uZXIubmV4dFVudGlsQ2hhcigpO1xuICBjb25zdCBoZWFkZXIgPSB0YWJsZUFycmF5SGVhZGVyKHNjYW5uZXIpO1xuICBpZiAoIWhlYWRlci5vaykgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKCk7XG4gIGNvbnN0IGIgPSBibG9jayhzY2FubmVyKTtcbiAgcmV0dXJuIHN1Y2Nlc3Moe1xuICAgIHR5cGU6IFwiVGFibGVBcnJheVwiLFxuICAgIGtleXM6IGhlYWRlci5ib2R5LFxuICAgIHZhbHVlOiBiLm9rID8gYi5ib2R5LnZhbHVlIDoge1xuICAgICAgX19wcm90b19fOiBudWxsXG4gICAgfVxuICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0b21sKHNjYW5uZXIpIHtcbiAgY29uc3QgYmxvY2tzID0gcmVwZWF0KG9yKFtcbiAgICBibG9jayxcbiAgICB0YWJsZUFycmF5LFxuICAgIHRhYmxlXG4gIF0pKShzY2FubmVyKTtcbiAgaWYgKCFibG9ja3Mub2spIHJldHVybiBzdWNjZXNzKHtcbiAgICBfX3Byb3RvX186IG51bGxcbiAgfSk7XG4gIGNvbnN0IGJvZHkgPSBibG9ja3MuYm9keS5yZWR1Y2UoZGVlcEFzc2lnbiwge1xuICAgIF9fcHJvdG9fXzogbnVsbFxuICB9KTtcbiAgcmV0dXJuIHN1Y2Nlc3MoYm9keSk7XG59XG5mdW5jdGlvbiBjcmVhdGVQYXJzZUVycm9yTWVzc2FnZShzY2FubmVyLCBtZXNzYWdlKSB7XG4gIGNvbnN0IHN0cmluZyA9IHNjYW5uZXIuc291cmNlLnNsaWNlKDAsIHNjYW5uZXIucG9zaXRpb24pO1xuICBjb25zdCBsaW5lcyA9IHN0cmluZy5zcGxpdChcIlxcblwiKTtcbiAgY29uc3Qgcm93ID0gbGluZXMubGVuZ3RoO1xuICBjb25zdCBjb2x1bW4gPSBsaW5lcy5hdCgtMSk/Lmxlbmd0aCA/PyAwO1xuICByZXR1cm4gYFBhcnNlIGVycm9yIG9uIGxpbmUgJHtyb3d9LCBjb2x1bW4gJHtjb2x1bW59OiAke21lc3NhZ2V9YDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZXJGYWN0b3J5KHBhcnNlcikge1xuICByZXR1cm4gKHRvbWxTdHJpbmcpPT57XG4gICAgY29uc3Qgc2Nhbm5lciA9IG5ldyBTY2FubmVyKHRvbWxTdHJpbmcpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBwYXJzZXIoc2Nhbm5lcik7XG4gICAgICBpZiAocmVzdWx0Lm9rICYmIHNjYW5uZXIuZW9mKCkpIHJldHVybiByZXN1bHQuYm9keTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVW5leHBlY3RlZCBjaGFyYWN0ZXI6IFwiJHtzY2FubmVyLmNoYXIoKX1cImA7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoY3JlYXRlUGFyc2VFcnJvck1lc3NhZ2Uoc2Nhbm5lciwgbWVzc2FnZSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoY3JlYXRlUGFyc2VFcnJvck1lc3NhZ2Uoc2Nhbm5lciwgZXJyb3IubWVzc2FnZSkpO1xuICAgICAgfVxuICAgICAgY29uc3QgbWVzc2FnZSA9IFwiSW52YWxpZCBlcnJvciB0eXBlIGNhdWdodFwiO1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGNyZWF0ZVBhcnNlRXJyb3JNZXNzYWdlKHNjYW5uZXIsIG1lc3NhZ2UpKTtcbiAgICB9XG4gIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1fcGFyc2VyLmpzLm1hcCIsIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5pbXBvcnQgeyBwYXJzZXJGYWN0b3J5LCB0b21sIH0gZnJvbSBcIi4vX3BhcnNlci5qc1wiO1xuLyoqXG4gKiBQYXJzZXMgYSB7QGxpbmsgaHR0cHM6Ly90b21sLmlvIHwgVE9NTH0gc3RyaW5nIGludG8gYW4gb2JqZWN0LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiQHN0ZC90b21sL3BhcnNlXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCB0b21sU3RyaW5nID0gYHRpdGxlID0gXCJUT01MIEV4YW1wbGVcIlxuICogW293bmVyXVxuICogbmFtZSA9IFwiQWxpY2VcIlxuICogYmlvID0gXCJBbGljZSBpcyBhIHByb2dyYW1tZXIuXCJgO1xuICpcbiAqIGNvbnN0IG9iaiA9IHBhcnNlKHRvbWxTdHJpbmcpO1xuICogYXNzZXJ0RXF1YWxzKG9iaiwgeyB0aXRsZTogXCJUT01MIEV4YW1wbGVcIiwgb3duZXI6IHsgbmFtZTogXCJBbGljZVwiLCBiaW86IFwiQWxpY2UgaXMgYSBwcm9ncmFtbWVyLlwiIH0gfSk7XG4gKiBgYGBcbiAqIEBwYXJhbSB0b21sU3RyaW5nIFRPTUwgc3RyaW5nIHRvIGJlIHBhcnNlZC5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgSlMgb2JqZWN0LlxuICovIGV4cG9ydCBmdW5jdGlvbiBwYXJzZSh0b21sU3RyaW5nKSB7XG4gIHJldHVybiBwYXJzZXJGYWN0b3J5KHRvbWwpKHRvbWxTdHJpbmcpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2UuanMubWFwIiwiaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgaXNBYnNvbHV0ZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tIFwibm9kZTp1cmxcIjtcbi8qKlxuKiBSZXNvbHZlIGFuIGFic29sdXRlIHBhdGggZnJvbSB7QGxpbmsgcm9vdH0sIGJ1dCBvbmx5XG4qIGlmIHtAbGluayBpbnB1dH0gaXNuJ3QgYWxyZWFkeSBhYnNvbHV0ZS5cbipcbiogQHBhcmFtIGlucHV0IFRoZSBwYXRoIHRvIHJlc29sdmUuXG4qIEBwYXJhbSByb290IFRoZSBiYXNlIHBhdGg7IGRlZmF1bHQgPSBwcm9jZXNzLmN3ZCgpXG4qIEByZXR1cm5zIFRoZSByZXNvbHZlZCBhYnNvbHV0ZSBwYXRoLlxuKi9cbmV4cG9ydCBmdW5jdGlvbiBhYnNvbHV0ZShpbnB1dCwgcm9vdCkge1xuXHRyZXR1cm4gaXNBYnNvbHV0ZShpbnB1dCkgPyBpbnB1dCA6IHJlc29sdmUocm9vdCB8fCBcIi5cIiwgaW5wdXQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZyb20ocm9vdCwgaWRlbnQsIHNpbGVudCkge1xuXHR0cnkge1xuXHRcdC8vIE5PVEU6IGRpcnMgbmVlZCBhIHRyYWlsaW5nIFwiL1wiIE9SIGZpbGVuYW1lLiBXaXRoIFwiL1wiIHJvdXRlLFxuXHRcdC8vIE5vZGUgYWRkcyBcIm5vb3AuanNcIiBhcyBtYWluIGZpbGUsIHNvIGp1c3QgZG8gXCJub29wLmpzXCIgYW55d2F5LlxuXHRcdGxldCByID0gcm9vdCBpbnN0YW5jZW9mIFVSTCB8fCByb290LnN0YXJ0c1dpdGgoXCJmaWxlOi8vXCIpID8gam9pbihmaWxlVVJMVG9QYXRoKHJvb3QpLCBcIm5vb3AuanNcIikgOiBqb2luKGFic29sdXRlKHJvb3QpLCBcIm5vb3AuanNcIik7XG5cdFx0cmV0dXJuIGNyZWF0ZVJlcXVpcmUocikucmVzb2x2ZShpZGVudCk7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdGlmICghc2lsZW50KSB0aHJvdyBlcnI7XG5cdH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBjd2QoaWRlbnQsIHNpbGVudCkge1xuXHRyZXR1cm4gZnJvbShyZXNvbHZlKCksIGlkZW50LCBzaWxlbnQpO1xufVxuIiwiaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGFic29sdXRlIH0gZnJvbSBcImVtcGF0aGljL3Jlc29sdmVcIjtcbi8qKlxuKiBHZXQgYWxsIHBhcmVudCBkaXJlY3RvcmllcyBvZiB7QGxpbmsgYmFzZX0uXG4qIFN0b3BzIGFmdGVyIHtAbGluayBPcHRpb25zWydsYXN0J119IGlzIHByb2Nlc3NlZC5cbipcbiogQHJldHVybnMgQW4gYXJyYXkgb2YgYWJzb2x1dGUgcGF0aHMgb2YgYWxsIHBhcmVudCBkaXJlY3Rvcmllcy5cbiovXG5leHBvcnQgZnVuY3Rpb24gdXAoYmFzZSwgb3B0aW9ucykge1xuXHRsZXQgeyBsYXN0LCBjd2QgfSA9IG9wdGlvbnMgfHwge307XG5cdGxldCB0bXAgPSBhYnNvbHV0ZShiYXNlLCBjd2QpO1xuXHRsZXQgcm9vdCA9IGFic29sdXRlKGxhc3QgfHwgXCIvXCIsIGN3ZCk7XG5cdGxldCBwcmV2LCBhcnIgPSBbXTtcblx0d2hpbGUgKHByZXYgIT09IHJvb3QpIHtcblx0XHRhcnIucHVzaCh0bXApO1xuXHRcdHRtcCA9IGRpcm5hbWUocHJldiA9IHRtcCk7XG5cdFx0aWYgKHRtcCA9PT0gcHJldikgYnJlYWs7XG5cdH1cblx0cmV0dXJuIGFycjtcbn1cbiIsImltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCBzdGF0U3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyB3YWxrIGZyb20gXCJlbXBhdGhpYy93YWxrXCI7XG4vKipcbiogRmluZCBhbiBpdGVtIGJ5IG5hbWUsIHdhbGtpbmcgcGFyZW50IGRpcmVjdG9yaWVzIHVudGlsIGZvdW5kLlxuKlxuKiBAcGFyYW0gbmFtZSBUaGUgaXRlbSBuYW1lIHRvIGZpbmQuXG4qIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBpdGVtLCBpZiBmb3VuZC5cbiovXG5leHBvcnQgZnVuY3Rpb24gdXAobmFtZSwgb3B0aW9ucykge1xuXHRsZXQgZGlyLCB0bXA7XG5cdGxldCBzdGFydCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5jd2QgfHwgXCJcIjtcblx0Zm9yIChkaXIgb2Ygd2Fsay51cChzdGFydCwgb3B0aW9ucykpIHtcblx0XHR0bXAgPSBqb2luKGRpciwgbmFtZSk7XG5cdFx0aWYgKGV4aXN0c1N5bmModG1wKSkgcmV0dXJuIHRtcDtcblx0fVxufVxuLyoqXG4qIEdldCB0aGUgZmlyc3QgcGF0aCB0aGF0IG1hdGNoZXMgYW55IG9mIHRoZSBuYW1lcyBwcm92aWRlZC5cbipcbiogPiBbTk9URV1cbiogPiBUaGUgb3JkZXIgb2Yge0BsaW5rIG5hbWVzfSBpcyByZXNwZWN0ZWQuXG4qXG4qIEBwYXJhbSBuYW1lcyBUaGUgaXRlbSBuYW1lcyB0byBmaW5kLlxuKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZmlyc3QgaXRlbSBmb3VuZCwgaWYgYW55LlxuKi9cbmV4cG9ydCBmdW5jdGlvbiBhbnkobmFtZXMsIG9wdGlvbnMpIHtcblx0bGV0IGRpciwgc3RhcnQgPSBvcHRpb25zICYmIG9wdGlvbnMuY3dkIHx8IFwiXCI7XG5cdGxldCBqID0gMCwgbGVuID0gbmFtZXMubGVuZ3RoLCB0bXA7XG5cdGZvciAoZGlyIG9mIHdhbGsudXAoc3RhcnQsIG9wdGlvbnMpKSB7XG5cdFx0Zm9yIChqID0gMDsgaiA8IGxlbjsgaisrKSB7XG5cdFx0XHR0bXAgPSBqb2luKGRpciwgbmFtZXNbal0pO1xuXHRcdFx0aWYgKGV4aXN0c1N5bmModG1wKSkgcmV0dXJuIHRtcDtcblx0XHR9XG5cdH1cbn1cbi8qKlxuKiBGaW5kIGEgZmlsZSBieSBuYW1lLCB3YWxraW5nIHBhcmVudCBkaXJlY3RvcmllcyB1bnRpbCBmb3VuZC5cbipcbiogPiBbTk9URV1cbiogPiBUaGlzIGZ1bmN0aW9uIG9ubHkgcmV0dXJucyBhIHZhbHVlIGZvciBmaWxlIG1hdGNoZXMuXG4qID4gQSBkaXJlY3RvcnkgbWF0Y2ggd2l0aCB0aGUgc2FtZSBuYW1lIHdpbGwgYmUgaWdub3JlZC5cbipcbiogQHBhcmFtIG5hbWUgVGhlIGZpbGUgbmFtZSB0byBmaW5kLlxuKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgZmlsZSwgaWYgZm91bmQuXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGUobmFtZSwgb3B0aW9ucykge1xuXHRsZXQgZGlyLCB0bXA7XG5cdGxldCBzdGFydCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5jd2QgfHwgXCJcIjtcblx0Zm9yIChkaXIgb2Ygd2Fsay51cChzdGFydCwgb3B0aW9ucykpIHtcblx0XHR0cnkge1xuXHRcdFx0dG1wID0gam9pbihkaXIsIG5hbWUpO1xuXHRcdFx0aWYgKHN0YXRTeW5jKHRtcCkuaXNGaWxlKCkpIHJldHVybiB0bXA7XG5cdFx0fSBjYXRjaCB7fVxuXHR9XG59XG4vKipcbiogRmluZCBhIGRpcmVjdG9yeSBieSBuYW1lLCB3YWxraW5nIHBhcmVudCBkaXJlY3RvcmllcyB1bnRpbCBmb3VuZC5cbipcbiogPiBbTk9URV1cbiogPiBUaGlzIGZ1bmN0aW9uIG9ubHkgcmV0dXJucyBhIHZhbHVlIGZvciBkaXJlY3RvcnkgbWF0Y2hlcy5cbiogPiBBIGZpbGUgbWF0Y2ggd2l0aCB0aGUgc2FtZSBuYW1lIHdpbGwgYmUgaWdub3JlZC5cbipcbiogQHBhcmFtIG5hbWUgVGhlIGRpcmVjdG9yeSBuYW1lIHRvIGZpbmQuXG4qIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBmaWxlLCBpZiBmb3VuZC5cbiovXG5leHBvcnQgZnVuY3Rpb24gZGlyKG5hbWUsIG9wdGlvbnMpIHtcblx0bGV0IGRpciwgdG1wO1xuXHRsZXQgc3RhcnQgPSBvcHRpb25zICYmIG9wdGlvbnMuY3dkIHx8IFwiXCI7XG5cdGZvciAoZGlyIG9mIHdhbGsudXAoc3RhcnQsIG9wdGlvbnMpKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHRtcCA9IGpvaW4oZGlyLCBuYW1lKTtcblx0XHRcdGlmIChzdGF0U3luYyh0bXApLmlzRGlyZWN0b3J5KCkpIHJldHVybiB0bXA7XG5cdFx0fSBjYXRjaCB7fVxuXHR9XG59XG4iLCIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGNvZGVnZW4vaW5kZXgudHNcbi8vIERvIG5vdCBlZGl0IHRoaXMgZmlsZSBtYW51YWxseVxuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVJlbmFtZUNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW1sncmVuYW1lJ11dXG5cbiAgc3RhdGljIHVzYWdlID0gQ29tbWFuZC5Vc2FnZSh7XG4gICAgZGVzY3JpcHRpb246ICdSZW5hbWUgdGhlIE5BUEktUlMgcHJvamVjdCcsXG4gIH0pXG5cbiAgY3dkID0gT3B0aW9uLlN0cmluZygnLS1jd2QnLCBwcm9jZXNzLmN3ZCgpLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoJyxcbiAgfSlcblxuICBjb25maWdQYXRoPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1jb25maWctcGF0aCwtYycsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGUnLFxuICB9KVxuXG4gIHBhY2thZ2VKc29uUGF0aCA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZS1qc29uLXBhdGgnLCAncGFja2FnZS5qc29uJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgcGFja2FnZS5qc29uYCcsXG4gIH0pXG5cbiAgbnBtRGlyID0gT3B0aW9uLlN0cmluZygnLS1ucG0tZGlyJywgJ25wbScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dCcsXG4gIH0pXG5cbiAgJCRuYW1lPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1uYW1lLC1uJywge1xuICAgIGRlc2NyaXB0aW9uOiAnVGhlIG5ldyBuYW1lIG9mIHRoZSBwcm9qZWN0JyxcbiAgfSlcblxuICBiaW5hcnlOYW1lPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1iaW5hcnktbmFtZSwtYicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBuZXcgYmluYXJ5IG5hbWUgKi5ub2RlIGZpbGVzJyxcbiAgfSlcblxuICBwYWNrYWdlTmFtZT86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZS1uYW1lJywge1xuICAgIGRlc2NyaXB0aW9uOiAnVGhlIG5ldyBwYWNrYWdlIG5hbWUgb2YgdGhlIHByb2plY3QnLFxuICB9KVxuXG4gIG1hbmlmZXN0UGF0aCA9IE9wdGlvbi5TdHJpbmcoJy0tbWFuaWZlc3QtcGF0aCcsICdDYXJnby50b21sJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgQ2FyZ28udG9tbGAnLFxuICB9KVxuXG4gIHJlcG9zaXRvcnk/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLXJlcG9zaXRvcnknLCB7XG4gICAgZGVzY3JpcHRpb246ICdUaGUgbmV3IHJlcG9zaXRvcnkgb2YgdGhlIHByb2plY3QnLFxuICB9KVxuXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1kZXNjcmlwdGlvbicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBuZXcgZGVzY3JpcHRpb24gb2YgdGhlIHByb2plY3QnLFxuICB9KVxuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN3ZDogdGhpcy5jd2QsXG4gICAgICBjb25maWdQYXRoOiB0aGlzLmNvbmZpZ1BhdGgsXG4gICAgICBwYWNrYWdlSnNvblBhdGg6IHRoaXMucGFja2FnZUpzb25QYXRoLFxuICAgICAgbnBtRGlyOiB0aGlzLm5wbURpcixcbiAgICAgIG5hbWU6IHRoaXMuJCRuYW1lLFxuICAgICAgYmluYXJ5TmFtZTogdGhpcy5iaW5hcnlOYW1lLFxuICAgICAgcGFja2FnZU5hbWU6IHRoaXMucGFja2FnZU5hbWUsXG4gICAgICBtYW5pZmVzdFBhdGg6IHRoaXMubWFuaWZlc3RQYXRoLFxuICAgICAgcmVwb3NpdG9yeTogdGhpcy5yZXBvc2l0b3J5LFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVuYW1lIHRoZSBOQVBJLVJTIHByb2plY3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5hbWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICBjd2Q/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICpcbiAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICovXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBucG0gcGFja2FnZXMgcHV0XG4gICAqXG4gICAqIEBkZWZhdWx0ICducG0nXG4gICAqL1xuICBucG1EaXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuZXcgbmFtZSBvZiB0aGUgcHJvamVjdFxuICAgKi9cbiAgbmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIG5ldyBiaW5hcnkgbmFtZSAqLm5vZGUgZmlsZXNcbiAgICovXG4gIGJpbmFyeU5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuZXcgcGFja2FnZSBuYW1lIG9mIHRoZSBwcm9qZWN0XG4gICAqL1xuICBwYWNrYWdlTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byBgQ2FyZ28udG9tbGBcbiAgICpcbiAgICogQGRlZmF1bHQgJ0NhcmdvLnRvbWwnXG4gICAqL1xuICBtYW5pZmVzdFBhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuZXcgcmVwb3NpdG9yeSBvZiB0aGUgcHJvamVjdFxuICAgKi9cbiAgcmVwb3NpdG9yeT86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIG5ldyBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvamVjdFxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGVmYXVsdFJlbmFtZU9wdGlvbnMob3B0aW9uczogUmVuYW1lT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBwYWNrYWdlSnNvblBhdGg6ICdwYWNrYWdlLmpzb24nLFxuICAgIG5wbURpcjogJ25wbScsXG4gICAgbWFuaWZlc3RQYXRoOiAnQ2FyZ28udG9tbCcsXG4gICAgLi4ub3B0aW9ucyxcbiAgfVxufVxuIiwiaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyByZW5hbWUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgcmVzb2x2ZSwgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcblxuaW1wb3J0IHsgcGFyc2UgYXMgcGFyc2VUb21sLCBzdHJpbmdpZnkgYXMgc3RyaW5naWZ5VG9tbCB9IGZyb20gJ0BzdGQvdG9tbCdcbmltcG9ydCB7IGxvYWQgYXMgeWFtbFBhcnNlLCBkdW1wIGFzIHlhbWxTdHJpbmdpZnkgfSBmcm9tICdqcy15YW1sJ1xuaW1wb3J0IHsgaXNOaWwsIG1lcmdlLCBvbWl0QnksIHBpY2sgfSBmcm9tICdlcy10b29sa2l0J1xuaW1wb3J0ICogYXMgZmluZCBmcm9tICdlbXBhdGhpYy9maW5kJ1xuXG5pbXBvcnQgeyBhcHBseURlZmF1bHRSZW5hbWVPcHRpb25zLCB0eXBlIFJlbmFtZU9wdGlvbnMgfSBmcm9tICcuLi9kZWYvcmVuYW1lLmpzJ1xuaW1wb3J0IHsgcmVhZENvbmZpZywgcmVhZEZpbGVBc3luYywgd3JpdGVGaWxlQXN5bmMgfSBmcm9tICcuLi91dGlscy9pbmRleC5qcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmFtZVByb2plY3QodXNlck9wdGlvbnM6IFJlbmFtZU9wdGlvbnMpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGFwcGx5RGVmYXVsdFJlbmFtZU9wdGlvbnModXNlck9wdGlvbnMpXG4gIGNvbnN0IG5hcGlDb25maWcgPSBhd2FpdCByZWFkQ29uZmlnKG9wdGlvbnMpXG4gIGNvbnN0IG9sZE5hbWUgPSBuYXBpQ29uZmlnLmJpbmFyeU5hbWVcblxuICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSByZXNvbHZlKG9wdGlvbnMuY3dkLCBvcHRpb25zLnBhY2thZ2VKc29uUGF0aClcbiAgY29uc3QgY2FyZ29Ub21sUGF0aCA9IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMubWFuaWZlc3RQYXRoKVxuXG4gIGNvbnN0IHBhY2thZ2VKc29uQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlQXN5bmMocGFja2FnZUpzb25QYXRoLCAndXRmOCcpXG4gIGNvbnN0IHBhY2thZ2VKc29uRGF0YSA9IEpTT04ucGFyc2UocGFja2FnZUpzb25Db250ZW50KVxuXG4gIG1lcmdlKFxuICAgIG1lcmdlKFxuICAgICAgcGFja2FnZUpzb25EYXRhLFxuICAgICAgb21pdEJ5KFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgZmllbGRzOiBhdXRob3IgYW5kIGxpY2Vuc2VcbiAgICAgICAgcGljayhvcHRpb25zLCBbJ25hbWUnLCAnZGVzY3JpcHRpb24nLCAnYXV0aG9yJywgJ2xpY2Vuc2UnXSksXG4gICAgICAgIGlzTmlsLFxuICAgICAgKSxcbiAgICApLFxuICAgIHtcbiAgICAgIG5hcGk6IG9taXRCeShcbiAgICAgICAge1xuICAgICAgICAgIGJpbmFyeU5hbWU6IG9wdGlvbnMuYmluYXJ5TmFtZSxcbiAgICAgICAgICBwYWNrYWdlTmFtZTogb3B0aW9ucy5wYWNrYWdlTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgaXNOaWwsXG4gICAgICApLFxuICAgIH0sXG4gIClcblxuICBpZiAob3B0aW9ucy5jb25maWdQYXRoKSB7XG4gICAgY29uc3QgY29uZmlnUGF0aCA9IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMuY29uZmlnUGF0aClcbiAgICBjb25zdCBjb25maWdDb250ZW50ID0gYXdhaXQgcmVhZEZpbGVBc3luYyhjb25maWdQYXRoLCAndXRmOCcpXG4gICAgY29uc3QgY29uZmlnRGF0YSA9IEpTT04ucGFyc2UoY29uZmlnQ29udGVudClcbiAgICBjb25maWdEYXRhLmJpbmFyeU5hbWUgPSBvcHRpb25zLmJpbmFyeU5hbWVcbiAgICBjb25maWdEYXRhLnBhY2thZ2VOYW1lID0gb3B0aW9ucy5wYWNrYWdlTmFtZVxuICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKGNvbmZpZ1BhdGgsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0RhdGEsIG51bGwsIDIpKVxuICB9XG5cbiAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoXG4gICAgcGFja2FnZUpzb25QYXRoLFxuICAgIEpTT04uc3RyaW5naWZ5KHBhY2thZ2VKc29uRGF0YSwgbnVsbCwgMiksXG4gIClcblxuICBjb25zdCB0b21sQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlQXN5bmMoY2FyZ29Ub21sUGF0aCwgJ3V0ZjgnKVxuICBjb25zdCBjYXJnb1RvbWwgPSBwYXJzZVRvbWwodG9tbENvbnRlbnQpIGFzIGFueVxuXG4gIC8vIFVwZGF0ZSB0aGUgcGFja2FnZSBuYW1lXG4gIGlmIChjYXJnb1RvbWwucGFja2FnZSAmJiBvcHRpb25zLmJpbmFyeU5hbWUpIHtcbiAgICAvLyBTYW5pdGl6ZSB0aGUgYmluYXJ5IG5hbWUgZm9yIFJ1c3QgcGFja2FnZSBuYW1pbmcgY29udmVudGlvbnNcbiAgICBjb25zdCBzYW5pdGl6ZWROYW1lID0gb3B0aW9ucy5iaW5hcnlOYW1lXG4gICAgICAucmVwbGFjZSgnQCcsICcnKVxuICAgICAgLnJlcGxhY2UoJy8nLCAnXycpXG4gICAgICAucmVwbGFjZSgvLS9nLCAnXycpXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgIGNhcmdvVG9tbC5wYWNrYWdlLm5hbWUgPSBzYW5pdGl6ZWROYW1lXG4gIH1cblxuICAvLyBTdHJpbmdpZnkgdGhlIHVwZGF0ZWQgVE9NTFxuICBjb25zdCB1cGRhdGVkVG9tbENvbnRlbnQgPSBzdHJpbmdpZnlUb21sKGNhcmdvVG9tbClcblxuICBhd2FpdCB3cml0ZUZpbGVBc3luYyhjYXJnb1RvbWxQYXRoLCB1cGRhdGVkVG9tbENvbnRlbnQpXG4gIGlmIChvbGROYW1lICE9PSBvcHRpb25zLmJpbmFyeU5hbWUpIHtcbiAgICBjb25zdCBnaXRodWJBY3Rpb25zUGF0aCA9IGZpbmQuZGlyKCcuZ2l0aHViJywge1xuICAgICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICB9KVxuICAgIGlmIChnaXRodWJBY3Rpb25zUGF0aCkge1xuICAgICAgY29uc3QgZ2l0aHViQWN0aW9uc0NJWW1sUGF0aCA9IGpvaW4oXG4gICAgICAgIGdpdGh1YkFjdGlvbnNQYXRoLFxuICAgICAgICAnd29ya2Zsb3dzJyxcbiAgICAgICAgJ0NJLnltbCcsXG4gICAgICApXG4gICAgICBpZiAoZXhpc3RzU3luYyhnaXRodWJBY3Rpb25zQ0lZbWxQYXRoKSkge1xuICAgICAgICBjb25zdCBnaXRodWJBY3Rpb25zQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlQXN5bmMoXG4gICAgICAgICAgZ2l0aHViQWN0aW9uc0NJWW1sUGF0aCxcbiAgICAgICAgICAndXRmOCcsXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgZ2l0aHViQWN0aW9uc0RhdGEgPSB5YW1sUGFyc2UoZ2l0aHViQWN0aW9uc0NvbnRlbnQpIGFzIGFueVxuICAgICAgICBpZiAoZ2l0aHViQWN0aW9uc0RhdGEuZW52Py5BUFBfTkFNRSkge1xuICAgICAgICAgIGdpdGh1YkFjdGlvbnNEYXRhLmVudi5BUFBfTkFNRSA9IG9wdGlvbnMuYmluYXJ5TmFtZVxuICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKFxuICAgICAgICAgICAgZ2l0aHViQWN0aW9uc0NJWW1sUGF0aCxcbiAgICAgICAgICAgIHlhbWxTdHJpbmdpZnkoZ2l0aHViQWN0aW9uc0RhdGEsIHtcbiAgICAgICAgICAgICAgbGluZVdpZHRoOiAtMSxcbiAgICAgICAgICAgICAgbm9SZWZzOiB0cnVlLFxuICAgICAgICAgICAgICBzb3J0S2V5czogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgb2xkV2FzaUJyb3dzZXJCaW5kaW5nUGF0aCA9IGpvaW4oXG4gICAgICBvcHRpb25zLmN3ZCxcbiAgICAgIGAke29sZE5hbWV9Lndhc2ktYnJvd3Nlci5qc2AsXG4gICAgKVxuICAgIGlmIChleGlzdHNTeW5jKG9sZFdhc2lCcm93c2VyQmluZGluZ1BhdGgpKSB7XG4gICAgICBhd2FpdCByZW5hbWUoXG4gICAgICAgIG9sZFdhc2lCcm93c2VyQmluZGluZ1BhdGgsXG4gICAgICAgIGpvaW4ob3B0aW9ucy5jd2QsIGAke29wdGlvbnMuYmluYXJ5TmFtZX0ud2FzaS1icm93c2VyLmpzYCksXG4gICAgICApXG4gICAgfVxuICAgIGNvbnN0IG9sZFdhc2lCaW5kaW5nUGF0aCA9IGpvaW4ob3B0aW9ucy5jd2QsIGAke29sZE5hbWV9Lndhc2kuY2pzYClcbiAgICBpZiAoZXhpc3RzU3luYyhvbGRXYXNpQmluZGluZ1BhdGgpKSB7XG4gICAgICBhd2FpdCByZW5hbWUoXG4gICAgICAgIG9sZFdhc2lCaW5kaW5nUGF0aCxcbiAgICAgICAgam9pbihvcHRpb25zLmN3ZCwgYCR7b3B0aW9ucy5iaW5hcnlOYW1lfS53YXNpLmNqc2ApLFxuICAgICAgKVxuICAgIH1cbiAgICBjb25zdCBnaXRBdHRyaWJ1dGVzUGF0aCA9IGpvaW4ob3B0aW9ucy5jd2QsICcuZ2l0YXR0cmlidXRlcycpXG4gICAgaWYgKGV4aXN0c1N5bmMoZ2l0QXR0cmlidXRlc1BhdGgpKSB7XG4gICAgICBjb25zdCBnaXRBdHRyaWJ1dGVzQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlQXN5bmMoXG4gICAgICAgIGdpdEF0dHJpYnV0ZXNQYXRoLFxuICAgICAgICAndXRmOCcsXG4gICAgICApXG4gICAgICBjb25zdCBnaXRBdHRyaWJ1dGVzRGF0YSA9IGdpdEF0dHJpYnV0ZXNDb250ZW50XG4gICAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgICAgIHJldHVybiBsaW5lXG4gICAgICAgICAgICAucmVwbGFjZShcbiAgICAgICAgICAgICAgYCR7b2xkTmFtZX0ud2FzaS1icm93c2VyLmpzYCxcbiAgICAgICAgICAgICAgYCR7b3B0aW9ucy5iaW5hcnlOYW1lfS53YXNpLWJyb3dzZXIuanNgLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlcGxhY2UoYCR7b2xkTmFtZX0ud2FzaS5janNgLCBgJHtvcHRpb25zLmJpbmFyeU5hbWV9Lndhc2kuY2pzYClcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJ1xcbicpXG4gICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhnaXRBdHRyaWJ1dGVzUGF0aCwgZ2l0QXR0cmlidXRlc0RhdGEpXG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBleGVjLCBleGVjU3luYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ25vZGU6b3MnXG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ25vZGU6ZnMnXG5cbmltcG9ydCB7IGxvYWQgYXMgeWFtbExvYWQsIGR1bXAgYXMgeWFtbER1bXAgfSBmcm9tICdqcy15YW1sJ1xuXG5pbXBvcnQge1xuICBhcHBseURlZmF1bHROZXdPcHRpb25zLFxuICB0eXBlIE5ld09wdGlvbnMgYXMgUmF3TmV3T3B0aW9ucyxcbn0gZnJvbSAnLi4vZGVmL25ldy5qcydcbmltcG9ydCB7XG4gIEFWQUlMQUJMRV9UQVJHRVRTLFxuICBkZWJ1Z0ZhY3RvcnksXG4gIERFRkFVTFRfVEFSR0VUUyxcbiAgbWtkaXJBc3luYyxcbiAgcmVhZGRpckFzeW5jLFxuICBzdGF0QXN5bmMsXG4gIHR5cGUgU3VwcG9ydGVkUGFja2FnZU1hbmFnZXIsXG59IGZyb20gJy4uL3V0aWxzL2luZGV4LmpzJ1xuaW1wb3J0IHsgbmFwaUVuZ2luZVJlcXVpcmVtZW50IH0gZnJvbSAnLi4vdXRpbHMvdmVyc2lvbi5qcydcbmltcG9ydCB7IHJlbmFtZVByb2plY3QgfSBmcm9tICcuL3JlbmFtZS5qcydcblxuLy8gVGVtcGxhdGUgaW1wb3J0cyByZW1vdmVkIGFzIHdlJ3JlIG5vdyB1c2luZyBleHRlcm5hbCB0ZW1wbGF0ZXNcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0ZhY3RvcnkoJ25ldycpXG5cbnR5cGUgTmV3T3B0aW9ucyA9IFJlcXVpcmVkPFJhd05ld09wdGlvbnM+XG5cbmNvbnN0IFRFTVBMQVRFX1JFUE9TID0ge1xuICB5YXJuOiAnaHR0cHM6Ly9naXRodWIuY29tL25hcGktcnMvcGFja2FnZS10ZW1wbGF0ZScsXG4gIHBucG06ICdodHRwczovL2dpdGh1Yi5jb20vbmFwaS1ycy9wYWNrYWdlLXRlbXBsYXRlLXBucG0nLFxufSBhcyBjb25zdFxuXG5hc3luYyBmdW5jdGlvbiBjaGVja0dpdENvbW1hbmQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IGNwID0gZXhlYygnZ2l0IC0tdmVyc2lvbicpXG4gICAgICBjcC5vbignZXJyb3InLCAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoZmFsc2UpXG4gICAgICB9KVxuICAgICAgY3Aub24oJ2V4aXQnLCAoY29kZSkgPT4ge1xuICAgICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKGZhbHNlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gICAgcmV0dXJuIHRydWVcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZW5zdXJlQ2FjaGVEaXIoXG4gIHBhY2thZ2VNYW5hZ2VyOiBTdXBwb3J0ZWRQYWNrYWdlTWFuYWdlcixcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNhY2hlRGlyID0gcGF0aC5qb2luKGhvbWVkaXIoKSwgJy5uYXBpLXJzJywgJ3RlbXBsYXRlJywgcGFja2FnZU1hbmFnZXIpXG4gIGF3YWl0IG1rZGlyQXN5bmMoY2FjaGVEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIHJldHVybiBjYWNoZURpclxufVxuXG5hc3luYyBmdW5jdGlvbiBkb3dubG9hZFRlbXBsYXRlKFxuICBwYWNrYWdlTWFuYWdlcjogU3VwcG9ydGVkUGFja2FnZU1hbmFnZXIsXG4gIGNhY2hlRGlyOiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmVwb1VybCA9IFRFTVBMQVRFX1JFUE9TW3BhY2thZ2VNYW5hZ2VyXVxuICBjb25zdCB0ZW1wbGF0ZVBhdGggPSBwYXRoLmpvaW4oY2FjaGVEaXIsICdyZXBvJylcblxuICBpZiAoZXhpc3RzU3luYyh0ZW1wbGF0ZVBhdGgpKSB7XG4gICAgZGVidWcoYFRlbXBsYXRlIGNhY2hlIGZvdW5kIGF0ICR7dGVtcGxhdGVQYXRofSwgdXBkYXRpbmcuLi5gKVxuICAgIHRyeSB7XG4gICAgICAvLyBGZXRjaCBsYXRlc3QgY2hhbmdlcyBhbmQgcmVzZXQgdG8gcmVtb3RlXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNwID0gZXhlYygnZ2l0IGZldGNoIG9yaWdpbicsIHsgY3dkOiB0ZW1wbGF0ZVBhdGggfSlcbiAgICAgICAgY3Aub24oJ2Vycm9yJywgcmVqZWN0KVxuICAgICAgICBjcC5vbignZXhpdCcsIChjb2RlKSA9PiB7XG4gICAgICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIGZldGNoIGxhdGVzdCBjaGFuZ2VzLCBnaXQgcHJvY2VzcyBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICBleGVjU3luYygnZ2l0IHJlc2V0IC0taGFyZCBvcmlnaW4vbWFpbicsIHtcbiAgICAgICAgY3dkOiB0ZW1wbGF0ZVBhdGgsXG4gICAgICAgIHN0ZGlvOiAnaWdub3JlJyxcbiAgICAgIH0pXG4gICAgICBkZWJ1ZygnVGVtcGxhdGUgdXBkYXRlZCBzdWNjZXNzZnVsbHknKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkZWJ1ZyhgRmFpbGVkIHRvIHVwZGF0ZSB0ZW1wbGF0ZTogJHtlcnJvcn1gKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gdXBkYXRlIHRlbXBsYXRlIGZyb20gJHtyZXBvVXJsfTogJHtlcnJvcn1gKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBkZWJ1ZyhgQ2xvbmluZyB0ZW1wbGF0ZSBmcm9tICR7cmVwb1VybH0uLi5gKVxuICAgIHRyeSB7XG4gICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7cmVwb1VybH0gcmVwb2AsIHsgY3dkOiBjYWNoZURpciwgc3RkaW86ICdpbmhlcml0JyB9KVxuICAgICAgZGVidWcoJ1RlbXBsYXRlIGNsb25lZCBzdWNjZXNzZnVsbHknKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjbG9uZSB0ZW1wbGF0ZSBmcm9tICR7cmVwb1VybH06ICR7ZXJyb3J9YClcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY29weURpcmVjdG9yeShcbiAgc3JjOiBzdHJpbmcsXG4gIGRlc3Q6IHN0cmluZyxcbiAgaW5jbHVkZVdhc2lCaW5kaW5nczogYm9vbGVhbixcbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBta2RpckFzeW5jKGRlc3QsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBmcy5yZWFkZGlyKHNyYywgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pXG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgY29uc3Qgc3JjUGF0aCA9IHBhdGguam9pbihzcmMsIGVudHJ5Lm5hbWUpXG4gICAgY29uc3QgZGVzdFBhdGggPSBwYXRoLmpvaW4oZGVzdCwgZW50cnkubmFtZSlcblxuICAgIC8vIFNraXAgLmdpdCBkaXJlY3RvcnlcbiAgICBpZiAoZW50cnkubmFtZSA9PT0gJy5naXQnKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChlbnRyeS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBhd2FpdCBjb3B5RGlyZWN0b3J5KHNyY1BhdGgsIGRlc3RQYXRoLCBpbmNsdWRlV2FzaUJpbmRpbmdzKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXG4gICAgICAgICFpbmNsdWRlV2FzaUJpbmRpbmdzICYmXG4gICAgICAgIChlbnRyeS5uYW1lLmVuZHNXaXRoKCcud2FzaS1icm93c2VyLmpzJykgfHxcbiAgICAgICAgICBlbnRyeS5uYW1lLmVuZHNXaXRoKCcud2FzaS5janMnKSB8fFxuICAgICAgICAgIGVudHJ5Lm5hbWUuZW5kc1dpdGgoJ3dhc2ktd29ya2VyLmJyb3dzZXIubWpzICcpIHx8XG4gICAgICAgICAgZW50cnkubmFtZS5lbmRzV2l0aCgnd2FzaS13b3JrZXIubWpzJykgfHxcbiAgICAgICAgICBlbnRyeS5uYW1lLmVuZHNXaXRoKCdicm93c2VyLmpzJykpXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGF3YWl0IGZzLmNvcHlGaWxlKHNyY1BhdGgsIGRlc3RQYXRoKVxuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBmaWx0ZXJUYXJnZXRzSW5QYWNrYWdlSnNvbihcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgZW5hYmxlZFRhcmdldHM6IHN0cmluZ1tdLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlUGF0aCwgJ3V0Zi04JylcbiAgY29uc3QgcGFja2FnZUpzb24gPSBKU09OLnBhcnNlKGNvbnRlbnQpXG5cbiAgLy8gRmlsdGVyIG5hcGkudGFyZ2V0c1xuICBpZiAocGFja2FnZUpzb24ubmFwaT8udGFyZ2V0cykge1xuICAgIHBhY2thZ2VKc29uLm5hcGkudGFyZ2V0cyA9IHBhY2thZ2VKc29uLm5hcGkudGFyZ2V0cy5maWx0ZXIoXG4gICAgICAodGFyZ2V0OiBzdHJpbmcpID0+IGVuYWJsZWRUYXJnZXRzLmluY2x1ZGVzKHRhcmdldCksXG4gICAgKVxuICB9XG5cbiAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShwYWNrYWdlSnNvbiwgbnVsbCwgMikgKyAnXFxuJylcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmlsdGVyVGFyZ2V0c0luR2l0aHViQWN0aW9ucyhcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgZW5hYmxlZFRhcmdldHM6IHN0cmluZ1tdLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlUGF0aCwgJ3V0Zi04JylcbiAgY29uc3QgeWFtbCA9IHlhbWxMb2FkKGNvbnRlbnQpIGFzIGFueVxuXG4gIGNvbnN0IG1hY09TQW5kV2luZG93c1RhcmdldHMgPSBuZXcgU2V0KFtcbiAgICAneDg2XzY0LXBjLXdpbmRvd3MtbXN2YycsXG4gICAgJ3g4Nl82NC1wYy13aW5kb3dzLWdudScsXG4gICAgJ2FhcmNoNjQtcGMtd2luZG93cy1tc3ZjJyxcbiAgICAneDg2XzY0LWFwcGxlLWRhcndpbicsXG4gIF0pXG5cbiAgY29uc3QgbGludXhUYXJnZXRzID0gbmV3IFNldChbXG4gICAgJ3g4Nl82NC11bmtub3duLWxpbnV4LWdudScsXG4gICAgJ3g4Nl82NC11bmtub3duLWxpbnV4LW11c2wnLFxuICAgICdhYXJjaDY0LXVua25vd24tbGludXgtZ251JyxcbiAgICAnYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2wnLFxuICAgICdhcm12Ny11bmtub3duLWxpbnV4LWdudWVhYmloZicsXG4gICAgJ2FybXY3LXVua25vd24tbGludXgtbXVzbGVhYmloZicsXG4gICAgJ2xvb25nYXJjaDY0LXVua25vd24tbGludXgtZ251JyxcbiAgICAncmlzY3Y2NGdjLXVua25vd24tbGludXgtZ251JyxcbiAgICAncG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUnLFxuICAgICdzMzkweC11bmtub3duLWxpbnV4LWdudScsXG4gICAgJ2FhcmNoNjQtbGludXgtYW5kcm9pZCcsXG4gICAgJ2FybXY3LWxpbnV4LWFuZHJvaWRlYWJpJyxcbiAgXSlcblxuICAvLyBDaGVjayBpZiBhbnkgTGludXggdGFyZ2V0cyBhcmUgZW5hYmxlZFxuICBjb25zdCBoYXNMaW51eFRhcmdldHMgPSBlbmFibGVkVGFyZ2V0cy5zb21lKCh0YXJnZXQpID0+XG4gICAgbGludXhUYXJnZXRzLmhhcyh0YXJnZXQpLFxuICApXG5cbiAgLy8gRmlsdGVyIHRoZSBtYXRyaXggY29uZmlndXJhdGlvbnMgaW4gdGhlIGJ1aWxkIGpvYlxuICBpZiAoeWFtbD8uam9icz8uYnVpbGQ/LnN0cmF0ZWd5Py5tYXRyaXg/LnNldHRpbmdzKSB7XG4gICAgeWFtbC5qb2JzLmJ1aWxkLnN0cmF0ZWd5Lm1hdHJpeC5zZXR0aW5ncyA9XG4gICAgICB5YW1sLmpvYnMuYnVpbGQuc3RyYXRlZ3kubWF0cml4LnNldHRpbmdzLmZpbHRlcigoc2V0dGluZzogYW55KSA9PiB7XG4gICAgICAgIGlmIChzZXR0aW5nLnRhcmdldCkge1xuICAgICAgICAgIHJldHVybiBlbmFibGVkVGFyZ2V0cy5pbmNsdWRlcyhzZXR0aW5nLnRhcmdldClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSlcbiAgfVxuXG4gIGNvbnN0IGpvYnNUb1JlbW92ZTogc3RyaW5nW10gPSBbXVxuXG4gIGlmIChlbmFibGVkVGFyZ2V0cy5ldmVyeSgodGFyZ2V0KSA9PiAhbWFjT1NBbmRXaW5kb3dzVGFyZ2V0cy5oYXModGFyZ2V0KSkpIHtcbiAgICBqb2JzVG9SZW1vdmUucHVzaCgndGVzdC1tYWNPUy13aW5kb3dzLWJpbmRpbmcnKVxuICB9IGVsc2Uge1xuICAgIC8vIEZpbHRlciB0aGUgbWF0cml4IGNvbmZpZ3VyYXRpb25zIGluIHRoZSB0ZXN0LW1hY09TLXdpbmRvd3MtYmluZGluZyBqb2JcbiAgICBpZiAoXG4gICAgICB5YW1sPy5qb2JzPy5bJ3Rlc3QtbWFjT1Mtd2luZG93cy1iaW5kaW5nJ10/LnN0cmF0ZWd5Py5tYXRyaXg/LnNldHRpbmdzXG4gICAgKSB7XG4gICAgICB5YW1sLmpvYnNbJ3Rlc3QtbWFjT1Mtd2luZG93cy1iaW5kaW5nJ10uc3RyYXRlZ3kubWF0cml4LnNldHRpbmdzID1cbiAgICAgICAgeWFtbC5qb2JzWyd0ZXN0LW1hY09TLXdpbmRvd3MtYmluZGluZyddLnN0cmF0ZWd5Lm1hdHJpeC5zZXR0aW5ncy5maWx0ZXIoXG4gICAgICAgICAgKHNldHRpbmc6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHNldHRpbmcudGFyZ2V0KSB7XG4gICAgICAgICAgICAgIHJldHVybiBlbmFibGVkVGFyZ2V0cy5pbmNsdWRlcyhzZXR0aW5nLnRhcmdldClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIG5vIExpbnV4IHRhcmdldHMgYXJlIGVuYWJsZWQsIHJlbW92ZSBMaW51eC1zcGVjaWZpYyBqb2JzXG4gIGlmICghaGFzTGludXhUYXJnZXRzKSB7XG4gICAgLy8gUmVtb3ZlIHRlc3QtbGludXgtYmluZGluZyBqb2JcbiAgICBpZiAoeWFtbD8uam9icz8uWyd0ZXN0LWxpbnV4LWJpbmRpbmcnXSkge1xuICAgICAgam9ic1RvUmVtb3ZlLnB1c2goJ3Rlc3QtbGludXgtYmluZGluZycpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEZpbHRlciB0aGUgbWF0cml4IGNvbmZpZ3VyYXRpb25zIGluIHRoZSB0ZXN0LWxpbnV4LXg2NC1nbnUtYmluZGluZyBqb2JcbiAgICBpZiAoeWFtbD8uam9icz8uWyd0ZXN0LWxpbnV4LWJpbmRpbmcnXT8uc3RyYXRlZ3k/Lm1hdHJpeD8udGFyZ2V0KSB7XG4gICAgICB5YW1sLmpvYnNbJ3Rlc3QtbGludXgtYmluZGluZyddLnN0cmF0ZWd5Lm1hdHJpeC50YXJnZXQgPSB5YW1sLmpvYnNbXG4gICAgICAgICd0ZXN0LWxpbnV4LWJpbmRpbmcnXG4gICAgICBdLnN0cmF0ZWd5Lm1hdHJpeC50YXJnZXQuZmlsdGVyKCh0YXJnZXQ6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgcmV0dXJuIGVuYWJsZWRUYXJnZXRzLmluY2x1ZGVzKHRhcmdldClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWVuYWJsZWRUYXJnZXRzLmluY2x1ZGVzKCd3YXNtMzItd2FzaXAxLXRocmVhZHMnKSkge1xuICAgIGpvYnNUb1JlbW92ZS5wdXNoKCd0ZXN0LXdhc2knKVxuICB9XG5cbiAgaWYgKCFlbmFibGVkVGFyZ2V0cy5pbmNsdWRlcygneDg2XzY0LXVua25vd24tZnJlZWJzZCcpKSB7XG4gICAgam9ic1RvUmVtb3ZlLnB1c2goJ2J1aWxkLWZyZWVic2QnKVxuICB9XG5cbiAgLy8gRmlsdGVyIG90aGVyIHRlc3Qgam9icyBiYXNlZCBvbiB0YXJnZXRcbiAgZm9yIChjb25zdCBbam9iTmFtZSwgam9iQ29uZmlnXSBvZiBPYmplY3QuZW50cmllcyh5YW1sLmpvYnMgfHwge30pKSB7XG4gICAgaWYgKFxuICAgICAgam9iTmFtZS5zdGFydHNXaXRoKCd0ZXN0LScpICYmXG4gICAgICBqb2JOYW1lICE9PSAndGVzdC1tYWNPUy13aW5kb3dzLWJpbmRpbmcnICYmXG4gICAgICBqb2JOYW1lICE9PSAndGVzdC1saW51eC14NjQtZ251LWJpbmRpbmcnXG4gICAgKSB7XG4gICAgICAvLyBFeHRyYWN0IHRhcmdldCBmcm9tIGpvYiBuYW1lIG9yIGNvbmZpZ1xuICAgICAgY29uc3Qgam9iID0gam9iQ29uZmlnIGFzIGFueVxuICAgICAgaWYgKGpvYi5zdHJhdGVneT8ubWF0cml4Py5zZXR0aW5ncz8uWzBdPy50YXJnZXQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gam9iLnN0cmF0ZWd5Lm1hdHJpeC5zZXR0aW5nc1swXS50YXJnZXRcbiAgICAgICAgaWYgKCFlbmFibGVkVGFyZ2V0cy5pbmNsdWRlcyh0YXJnZXQpKSB7XG4gICAgICAgICAgam9ic1RvUmVtb3ZlLnB1c2goam9iTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBqb2JzIGZvciBkaXNhYmxlZCB0YXJnZXRzXG4gIGZvciAoY29uc3Qgam9iTmFtZSBvZiBqb2JzVG9SZW1vdmUpIHtcbiAgICBkZWxldGUgeWFtbC5qb2JzW2pvYk5hbWVdXG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh5YW1sLmpvYnM/LnB1Ymxpc2g/Lm5lZWRzKSkge1xuICAgIHlhbWwuam9icy5wdWJsaXNoLm5lZWRzID0geWFtbC5qb2JzLnB1Ymxpc2gubmVlZHMuZmlsdGVyKFxuICAgICAgKG5lZWQ6IHN0cmluZykgPT4gIWpvYnNUb1JlbW92ZS5pbmNsdWRlcyhuZWVkKSxcbiAgICApXG4gIH1cblxuICAvLyBXcml0ZSBiYWNrIHRoZSBmaWx0ZXJlZCBZQU1MXG4gIGNvbnN0IHVwZGF0ZWRZYW1sID0geWFtbER1bXAoeWFtbCwge1xuICAgIGxpbmVXaWR0aDogLTEsXG4gICAgbm9SZWZzOiB0cnVlLFxuICAgIHNvcnRLZXlzOiBmYWxzZSxcbiAgfSlcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGVQYXRoLCB1cGRhdGVkWWFtbClcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc09wdGlvbnMob3B0aW9uczogUmF3TmV3T3B0aW9ucykge1xuICBkZWJ1ZygnUHJvY2Vzc2luZyBvcHRpb25zLi4uJylcbiAgaWYgKCFvcHRpb25zLnBhdGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBwcm92aWRlIHRoZSBwYXRoIGFzIHRoZSBhcmd1bWVudCcpXG4gIH1cbiAgb3B0aW9ucy5wYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIG9wdGlvbnMucGF0aClcbiAgZGVidWcoYFJlc29sdmVkIHRhcmdldCBwYXRoIHRvOiAke29wdGlvbnMucGF0aH1gKVxuXG4gIGlmICghb3B0aW9ucy5uYW1lKSB7XG4gICAgb3B0aW9ucy5uYW1lID0gcGF0aC5wYXJzZShvcHRpb25zLnBhdGgpLmJhc2VcbiAgICBkZWJ1ZyhgTm8gcHJvamVjdCBuYW1lIHByb3ZpZGVkLCBmaXggaXQgdG8gZGlyIG5hbWU6ICR7b3B0aW9ucy5uYW1lfWApXG4gIH1cblxuICBpZiAoIW9wdGlvbnMudGFyZ2V0cz8ubGVuZ3RoKSB7XG4gICAgaWYgKG9wdGlvbnMuZW5hYmxlQWxsVGFyZ2V0cykge1xuICAgICAgb3B0aW9ucy50YXJnZXRzID0gQVZBSUxBQkxFX1RBUkdFVFMuY29uY2F0KClcbiAgICAgIGRlYnVnKCdFbmFibGUgYWxsIHRhcmdldHMnKVxuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5lbmFibGVEZWZhdWx0VGFyZ2V0cykge1xuICAgICAgb3B0aW9ucy50YXJnZXRzID0gREVGQVVMVF9UQVJHRVRTLmNvbmNhdCgpXG4gICAgICBkZWJ1ZygnRW5hYmxlIGRlZmF1bHQgdGFyZ2V0cycpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXQgbGVhc3Qgb25lIHRhcmdldCBtdXN0IGJlIGVuYWJsZWQnKVxuICAgIH1cbiAgfVxuICBpZiAoXG4gICAgb3B0aW9ucy50YXJnZXRzLnNvbWUoKHRhcmdldCkgPT4gdGFyZ2V0ID09PSAnd2FzbTMyLXdhc2ktcHJldmlldzEtdGhyZWFkcycpXG4gICkge1xuICAgIGNvbnN0IG91dCA9IGV4ZWNTeW5jKGBydXN0dXAgdGFyZ2V0IGxpc3RgLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgIH0pXG4gICAgaWYgKG91dC5pbmNsdWRlcygnd2FzbTMyLXdhc2lwMS10aHJlYWRzJykpIHtcbiAgICAgIG9wdGlvbnMudGFyZ2V0cyA9IG9wdGlvbnMudGFyZ2V0cy5tYXAoKHRhcmdldCkgPT5cbiAgICAgICAgdGFyZ2V0ID09PSAnd2FzbTMyLXdhc2ktcHJldmlldzEtdGhyZWFkcydcbiAgICAgICAgICA/ICd3YXNtMzItd2FzaXAxLXRocmVhZHMnXG4gICAgICAgICAgOiB0YXJnZXQsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFwcGx5RGVmYXVsdE5ld09wdGlvbnMob3B0aW9ucykgYXMgTmV3T3B0aW9uc1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbmV3UHJvamVjdCh1c2VyT3B0aW9uczogUmF3TmV3T3B0aW9ucykge1xuICBkZWJ1ZygnV2lsbCBjcmVhdGUgbmFwaS1ycyBwcm9qZWN0IHdpdGggZ2l2ZW4gb3B0aW9uczonKVxuICBkZWJ1Zyh1c2VyT3B0aW9ucylcblxuICBjb25zdCBvcHRpb25zID0gcHJvY2Vzc09wdGlvbnModXNlck9wdGlvbnMpXG5cbiAgZGVidWcoJ1RhcmdldHMgdG8gYmUgZW5hYmxlZDonKVxuICBkZWJ1ZyhvcHRpb25zLnRhcmdldHMpXG5cbiAgLy8gQ2hlY2sgaWYgZ2l0IGlzIGF2YWlsYWJsZVxuICBpZiAoIShhd2FpdCBjaGVja0dpdENvbW1hbmQoKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnR2l0IGlzIG5vdCBpbnN0YWxsZWQgb3Igbm90IGF2YWlsYWJsZSBpbiBQQVRILiBQbGVhc2UgaW5zdGFsbCBHaXQgdG8gY29udGludWUuJyxcbiAgICApXG4gIH1cblxuICBjb25zdCBwYWNrYWdlTWFuYWdlciA9IG9wdGlvbnMucGFja2FnZU1hbmFnZXIgYXMgU3VwcG9ydGVkUGFja2FnZU1hbmFnZXJcblxuICAvLyBFbnN1cmUgdGFyZ2V0IGRpcmVjdG9yeSBleGlzdHMgYW5kIGlzIGVtcHR5XG4gIGF3YWl0IGVuc3VyZVBhdGgob3B0aW9ucy5wYXRoLCBvcHRpb25zLmRyeVJ1bilcblxuICBpZiAoIW9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIERvd25sb2FkIG9yIHVwZGF0ZSB0ZW1wbGF0ZVxuICAgICAgY29uc3QgY2FjaGVEaXIgPSBhd2FpdCBlbnN1cmVDYWNoZURpcihwYWNrYWdlTWFuYWdlcilcbiAgICAgIGF3YWl0IGRvd25sb2FkVGVtcGxhdGUocGFja2FnZU1hbmFnZXIsIGNhY2hlRGlyKVxuXG4gICAgICAvLyBDb3B5IHRlbXBsYXRlIGZpbGVzIHRvIHRhcmdldCBkaXJlY3RvcnlcbiAgICAgIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHBhdGguam9pbihjYWNoZURpciwgJ3JlcG8nKVxuICAgICAgYXdhaXQgY29weURpcmVjdG9yeShcbiAgICAgICAgdGVtcGxhdGVQYXRoLFxuICAgICAgICBvcHRpb25zLnBhdGgsXG4gICAgICAgIG9wdGlvbnMudGFyZ2V0cy5pbmNsdWRlcygnd2FzbTMyLXdhc2lwMS10aHJlYWRzJyksXG4gICAgICApXG5cbiAgICAgIC8vIFJlbmFtZSBwcm9qZWN0IHVzaW5nIHRoZSByZW5hbWUgQVBJXG4gICAgICBhd2FpdCByZW5hbWVQcm9qZWN0KHtcbiAgICAgICAgY3dkOiBvcHRpb25zLnBhdGgsXG4gICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgICAgYmluYXJ5TmFtZTogZ2V0QmluYXJ5TmFtZShvcHRpb25zLm5hbWUpLFxuICAgICAgfSlcblxuICAgICAgLy8gRmlsdGVyIHRhcmdldHMgaW4gcGFja2FnZS5qc29uXG4gICAgICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBwYXRoLmpvaW4ob3B0aW9ucy5wYXRoLCAncGFja2FnZS5qc29uJylcbiAgICAgIGlmIChleGlzdHNTeW5jKHBhY2thZ2VKc29uUGF0aCkpIHtcbiAgICAgICAgYXdhaXQgZmlsdGVyVGFyZ2V0c0luUGFja2FnZUpzb24ocGFja2FnZUpzb25QYXRoLCBvcHRpb25zLnRhcmdldHMpXG4gICAgICB9XG5cbiAgICAgIC8vIEZpbHRlciB0YXJnZXRzIGluIEdpdEh1YiBBY3Rpb25zIENJXG4gICAgICBjb25zdCBjaVBhdGggPSBwYXRoLmpvaW4ob3B0aW9ucy5wYXRoLCAnLmdpdGh1YicsICd3b3JrZmxvd3MnLCAnQ0kueW1sJylcbiAgICAgIGlmIChleGlzdHNTeW5jKGNpUGF0aCkgJiYgb3B0aW9ucy5lbmFibGVHaXRodWJBY3Rpb25zKSB7XG4gICAgICAgIGF3YWl0IGZpbHRlclRhcmdldHNJbkdpdGh1YkFjdGlvbnMoY2lQYXRoLCBvcHRpb25zLnRhcmdldHMpXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAhb3B0aW9ucy5lbmFibGVHaXRodWJBY3Rpb25zICYmXG4gICAgICAgIGV4aXN0c1N5bmMocGF0aC5qb2luKG9wdGlvbnMucGF0aCwgJy5naXRodWInKSlcbiAgICAgICkge1xuICAgICAgICAvLyBSZW1vdmUgLmdpdGh1YiBkaXJlY3RvcnkgaWYgR2l0SHViIEFjdGlvbnMgaXMgbm90IGVuYWJsZWRcbiAgICAgICAgYXdhaXQgZnMucm0ocGF0aC5qb2luKG9wdGlvbnMucGF0aCwgJy5naXRodWInKSwge1xuICAgICAgICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgICAgICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgLy8gVXBkYXRlIHBhY2thZ2UuanNvbiB3aXRoIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnNcbiAgICAgIGNvbnN0IHBrZ0pzb25Db250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUocGFja2FnZUpzb25QYXRoLCAndXRmLTgnKVxuICAgICAgY29uc3QgcGtnSnNvbiA9IEpTT04ucGFyc2UocGtnSnNvbkNvbnRlbnQpXG5cbiAgICAgIC8vIFVwZGF0ZSBlbmdpbmUgcmVxdWlyZW1lbnRcbiAgICAgIGlmICghcGtnSnNvbi5lbmdpbmVzKSB7XG4gICAgICAgIHBrZ0pzb24uZW5naW5lcyA9IHt9XG4gICAgICB9XG4gICAgICBwa2dKc29uLmVuZ2luZXMubm9kZSA9IG5hcGlFbmdpbmVSZXF1aXJlbWVudChvcHRpb25zLm1pbk5vZGVBcGlWZXJzaW9uKVxuXG4gICAgICAvLyBVcGRhdGUgbGljZW5zZSBpZiBkaWZmZXJlbnQgZnJvbSB0ZW1wbGF0ZVxuICAgICAgaWYgKG9wdGlvbnMubGljZW5zZSAmJiBwa2dKc29uLmxpY2Vuc2UgIT09IG9wdGlvbnMubGljZW5zZSkge1xuICAgICAgICBwa2dKc29uLmxpY2Vuc2UgPSBvcHRpb25zLmxpY2Vuc2VcbiAgICAgIH1cblxuICAgICAgLy8gVXBkYXRlIHRlc3QgZnJhbWV3b3JrIGlmIG5lZWRlZFxuICAgICAgaWYgKG9wdGlvbnMudGVzdEZyYW1ld29yayAhPT0gJ2F2YScpIHtcbiAgICAgICAgLy8gVGhpcyB3b3VsZCByZXF1aXJlIG1vcmUgY29tcGxleCBsb2dpYyB0byB1cGRhdGUgdGVzdCBzY3JpcHRzIGFuZCBkZXBlbmRlbmNpZXNcbiAgICAgICAgZGVidWcoXG4gICAgICAgICAgYFRlc3QgZnJhbWV3b3JrICR7b3B0aW9ucy50ZXN0RnJhbWV3b3JrfSByZXF1ZXN0ZWQgYnV0IG5vdCB5ZXQgaW1wbGVtZW50ZWRgLFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShcbiAgICAgICAgcGFja2FnZUpzb25QYXRoLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShwa2dKc29uLCBudWxsLCAyKSArICdcXG4nLFxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgcHJvamVjdDogJHtlcnJvcn1gKVxuICAgIH1cbiAgfVxuXG4gIGRlYnVnKGBQcm9qZWN0IGNyZWF0ZWQgYXQ6ICR7b3B0aW9ucy5wYXRofWApXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZVBhdGgocGF0aDogc3RyaW5nLCBkcnlSdW4gPSBmYWxzZSkge1xuICBjb25zdCBzdGF0ID0gYXdhaXQgc3RhdEFzeW5jKHBhdGgsIHt9KS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpXG5cbiAgLy8gZmlsZSBkZXNjcmlwdG9yIGV4aXN0c1xuICBpZiAoc3RhdCkge1xuICAgIGlmIChzdGF0LmlzRmlsZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBQYXRoICR7cGF0aH0gZm9yIGNyZWF0aW5nIG5ldyBuYXBpLXJzIHByb2plY3QgYWxyZWFkeSBleGlzdHMgYW5kIGl0J3Mgbm90IGEgZGlyZWN0b3J5LmAsXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChzdGF0LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgcmVhZGRpckFzeW5jKHBhdGgpXG4gICAgICBpZiAoZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgUGF0aCAke3BhdGh9IGZvciBjcmVhdGluZyBuZXcgbmFwaS1ycyBwcm9qZWN0IGFscmVhZHkgZXhpc3RzIGFuZCBpdCdzIG5vdCBlbXB0eS5gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFkcnlSdW4pIHtcbiAgICB0cnkge1xuICAgICAgZGVidWcoYFRyeSB0byBjcmVhdGUgdGFyZ2V0IGRpcmVjdG9yeTogJHtwYXRofWApXG4gICAgICBpZiAoIWRyeVJ1bikge1xuICAgICAgICBhd2FpdCBta2RpckFzeW5jKHBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIHRhcmdldCBkaXJlY3Rvcnk6ICR7cGF0aH1gLCB7XG4gICAgICAgIGNhdXNlOiBlLFxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QmluYXJ5TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbmFtZS5zcGxpdCgnLycpLnBvcCgpIVxufVxuXG5leHBvcnQgdHlwZSB7IE5ld09wdGlvbnMgfVxuIiwiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBjb2RlZ2VuL2luZGV4LnRzXG4vLyBEbyBub3QgZWRpdCB0aGlzIGZpbGUgbWFudWFsbHlcbmltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NsaXBhbmlvbidcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VQcmVQdWJsaXNoQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBzdGF0aWMgcGF0aHMgPSBbWydwcmUtcHVibGlzaCddLCBbJ3ByZXB1Ymxpc2gnXV1cblxuICBzdGF0aWMgdXNhZ2UgPSBDb21tYW5kLlVzYWdlKHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdVcGRhdGUgcGFja2FnZS5qc29uIGFuZCBjb3B5IGFkZG9ucyBpbnRvIHBlciBwbGF0Zm9ybSBwYWNrYWdlcycsXG4gIH0pXG5cbiAgY3dkID0gT3B0aW9uLlN0cmluZygnLS1jd2QnLCBwcm9jZXNzLmN3ZCgpLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoJyxcbiAgfSlcblxuICBjb25maWdQYXRoPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1jb25maWctcGF0aCwtYycsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGUnLFxuICB9KVxuXG4gIHBhY2thZ2VKc29uUGF0aCA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZS1qc29uLXBhdGgnLCAncGFja2FnZS5qc29uJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgcGFja2FnZS5qc29uYCcsXG4gIH0pXG5cbiAgbnBtRGlyID0gT3B0aW9uLlN0cmluZygnLS1ucG0tZGlyLC1wJywgJ25wbScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dCcsXG4gIH0pXG5cbiAgdGFnU3R5bGUgPSBPcHRpb24uU3RyaW5nKCctLXRhZy1zdHlsZSwtLXRhZ3N0eWxlLC10JywgJ2xlcm5hJywge1xuICAgIGRlc2NyaXB0aW9uOiAnZ2l0IHRhZyBzdHlsZSwgYG5wbWAgb3IgYGxlcm5hYCcsXG4gIH0pXG5cbiAgZ2hSZWxlYXNlID0gT3B0aW9uLkJvb2xlYW4oJy0tZ2gtcmVsZWFzZScsIHRydWUsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgY3JlYXRlIEdpdEh1YiByZWxlYXNlJyxcbiAgfSlcblxuICBnaFJlbGVhc2VOYW1lPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1naC1yZWxlYXNlLW5hbWUnLCB7XG4gICAgZGVzY3JpcHRpb246ICdHaXRIdWIgcmVsZWFzZSBuYW1lJyxcbiAgfSlcblxuICBnaFJlbGVhc2VJZD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tZ2gtcmVsZWFzZS1pZCcsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0V4aXN0aW5nIEdpdEh1YiByZWxlYXNlIGlkJyxcbiAgfSlcblxuICBza2lwT3B0aW9uYWxQdWJsaXNoID0gT3B0aW9uLkJvb2xlYW4oJy0tc2tpcC1vcHRpb25hbC1wdWJsaXNoJywgZmFsc2UsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgc2tpcCBvcHRpb25hbERlcGVuZGVuY2llcyBwYWNrYWdlcyBwdWJsaXNoJyxcbiAgfSlcblxuICBkcnlSdW4gPSBPcHRpb24uQm9vbGVhbignLS1kcnktcnVuJywgZmFsc2UsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0RyeSBydW4gd2l0aG91dCB0b3VjaGluZyBmaWxlIHN5c3RlbScsXG4gIH0pXG5cbiAgZ2V0T3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3dkOiB0aGlzLmN3ZCxcbiAgICAgIGNvbmZpZ1BhdGg6IHRoaXMuY29uZmlnUGF0aCxcbiAgICAgIHBhY2thZ2VKc29uUGF0aDogdGhpcy5wYWNrYWdlSnNvblBhdGgsXG4gICAgICBucG1EaXI6IHRoaXMubnBtRGlyLFxuICAgICAgdGFnU3R5bGU6IHRoaXMudGFnU3R5bGUsXG4gICAgICBnaFJlbGVhc2U6IHRoaXMuZ2hSZWxlYXNlLFxuICAgICAgZ2hSZWxlYXNlTmFtZTogdGhpcy5naFJlbGVhc2VOYW1lLFxuICAgICAgZ2hSZWxlYXNlSWQ6IHRoaXMuZ2hSZWxlYXNlSWQsXG4gICAgICBza2lwT3B0aW9uYWxQdWJsaXNoOiB0aGlzLnNraXBPcHRpb25hbFB1Ymxpc2gsXG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFVwZGF0ZSBwYWNrYWdlLmpzb24gYW5kIGNvcHkgYWRkb25zIGludG8gcGVyIHBsYXRmb3JtIHBhY2thZ2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlUHVibGlzaE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoXG4gICAqXG4gICAqIEBkZWZhdWx0IHByb2Nlc3MuY3dkKClcbiAgICovXG4gIGN3ZD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byBgbmFwaWAgY29uZmlnIGpzb24gZmlsZVxuICAgKi9cbiAgY29uZmlnUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byBgcGFja2FnZS5qc29uYFxuICAgKlxuICAgKiBAZGVmYXVsdCAncGFja2FnZS5qc29uJ1xuICAgKi9cbiAgcGFja2FnZUpzb25QYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIG5wbSBwYWNrYWdlcyBwdXRcbiAgICpcbiAgICogQGRlZmF1bHQgJ25wbSdcbiAgICovXG4gIG5wbURpcj86IHN0cmluZ1xuICAvKipcbiAgICogZ2l0IHRhZyBzdHlsZSwgYG5wbWAgb3IgYGxlcm5hYFxuICAgKlxuICAgKiBAZGVmYXVsdCAnbGVybmEnXG4gICAqL1xuICB0YWdTdHlsZT86ICducG0nIHwgJ2xlcm5hJ1xuICAvKipcbiAgICogV2hldGhlciBjcmVhdGUgR2l0SHViIHJlbGVhc2VcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZ2hSZWxlYXNlPzogYm9vbGVhblxuICAvKipcbiAgICogR2l0SHViIHJlbGVhc2UgbmFtZVxuICAgKi9cbiAgZ2hSZWxlYXNlTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogRXhpc3RpbmcgR2l0SHViIHJlbGVhc2UgaWRcbiAgICovXG4gIGdoUmVsZWFzZUlkPzogc3RyaW5nXG4gIC8qKlxuICAgKiBXaGV0aGVyIHNraXAgb3B0aW9uYWxEZXBlbmRlbmNpZXMgcGFja2FnZXMgcHVibGlzaFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2tpcE9wdGlvbmFsUHVibGlzaD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIERyeSBydW4gd2l0aG91dCB0b3VjaGluZyBmaWxlIHN5c3RlbVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhblxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZWZhdWx0UHJlUHVibGlzaE9wdGlvbnMob3B0aW9uczogUHJlUHVibGlzaE9wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgcGFja2FnZUpzb25QYXRoOiAncGFja2FnZS5qc29uJyxcbiAgICBucG1EaXI6ICducG0nLFxuICAgIHRhZ1N0eWxlOiAnbGVybmEnLFxuICAgIGdoUmVsZWFzZTogdHJ1ZSxcbiAgICBza2lwT3B0aW9uYWxQdWJsaXNoOiBmYWxzZSxcbiAgICBkcnlSdW46IGZhbHNlLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cbn1cbiIsIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgY29kZWdlbi9pbmRleC50c1xuLy8gRG8gbm90IGVkaXQgdGhpcyBmaWxlIG1hbnVhbGx5XG5pbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tICdjbGlwYW5pb24nXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlVmVyc2lvbkNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW1sndmVyc2lvbiddXVxuXG4gIHN0YXRpYyB1c2FnZSA9IENvbW1hbmQuVXNhZ2Uoe1xuICAgIGRlc2NyaXB0aW9uOiAnVXBkYXRlIHZlcnNpb24gaW4gY3JlYXRlZCBucG0gcGFja2FnZXMnLFxuICB9KVxuXG4gIGN3ZCA9IE9wdGlvbi5TdHJpbmcoJy0tY3dkJywgcHJvY2Vzcy5jd2QoKSwge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aCcsXG4gIH0pXG5cbiAgY29uZmlnUGF0aD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tY29uZmlnLXBhdGgsLWMnLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlJyxcbiAgfSlcblxuICBwYWNrYWdlSnNvblBhdGggPSBPcHRpb24uU3RyaW5nKCctLXBhY2thZ2UtanNvbi1wYXRoJywgJ3BhY2thZ2UuanNvbicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYHBhY2thZ2UuanNvbmAnLFxuICB9KVxuXG4gIG5wbURpciA9IE9wdGlvbi5TdHJpbmcoJy0tbnBtLWRpcicsICducG0nLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIG5wbSBwYWNrYWdlcyBwdXQnLFxuICB9KVxuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN3ZDogdGhpcy5jd2QsXG4gICAgICBjb25maWdQYXRoOiB0aGlzLmNvbmZpZ1BhdGgsXG4gICAgICBwYWNrYWdlSnNvblBhdGg6IHRoaXMucGFja2FnZUpzb25QYXRoLFxuICAgICAgbnBtRGlyOiB0aGlzLm5wbURpcixcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBVcGRhdGUgdmVyc2lvbiBpbiBjcmVhdGVkIG5wbSBwYWNrYWdlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICBjd2Q/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICpcbiAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICovXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBucG0gcGFja2FnZXMgcHV0XG4gICAqXG4gICAqIEBkZWZhdWx0ICducG0nXG4gICAqL1xuICBucG1EaXI/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGVmYXVsdFZlcnNpb25PcHRpb25zKG9wdGlvbnM6IFZlcnNpb25PcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIHBhY2thZ2VKc29uUGF0aDogJ3BhY2thZ2UuanNvbicsXG4gICAgbnBtRGlyOiAnbnBtJyxcbiAgICAuLi5vcHRpb25zLFxuICB9XG59XG4iLCJpbXBvcnQgeyBqb2luLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5pbXBvcnQge1xuICBhcHBseURlZmF1bHRWZXJzaW9uT3B0aW9ucyxcbiAgdHlwZSBWZXJzaW9uT3B0aW9ucyxcbn0gZnJvbSAnLi4vZGVmL3ZlcnNpb24uanMnXG5pbXBvcnQge1xuICByZWFkTmFwaUNvbmZpZyxcbiAgZGVidWdGYWN0b3J5LFxuICB1cGRhdGVQYWNrYWdlSnNvbixcbn0gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnXG5cbmNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCd2ZXJzaW9uJylcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcnNpb24odXNlck9wdGlvbnM6IFZlcnNpb25PcHRpb25zKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBhcHBseURlZmF1bHRWZXJzaW9uT3B0aW9ucyh1c2VyT3B0aW9ucylcbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcmVzb2x2ZShvcHRpb25zLmN3ZCwgb3B0aW9ucy5wYWNrYWdlSnNvblBhdGgpXG5cbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZE5hcGlDb25maWcoXG4gICAgcGFja2FnZUpzb25QYXRoLFxuICAgIG9wdGlvbnMuY29uZmlnUGF0aCA/IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMuY29uZmlnUGF0aCkgOiB1bmRlZmluZWQsXG4gIClcblxuICBmb3IgKGNvbnN0IHRhcmdldCBvZiBjb25maWcudGFyZ2V0cykge1xuICAgIGNvbnN0IHBrZ0RpciA9IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMubnBtRGlyLCB0YXJnZXQucGxhdGZvcm1BcmNoQUJJKVxuXG4gICAgZGVidWcoYFVwZGF0ZSB2ZXJzaW9uIHRvICVpIGluIFslaV1gLCBjb25maWcucGFja2FnZUpzb24udmVyc2lvbiwgcGtnRGlyKVxuICAgIGF3YWl0IHVwZGF0ZVBhY2thZ2VKc29uKGpvaW4ocGtnRGlyLCAncGFja2FnZS5qc29uJyksIHtcbiAgICAgIHZlcnNpb246IGNvbmZpZy5wYWNrYWdlSnNvbi52ZXJzaW9uLFxuICAgIH0pXG4gIH1cbn1cbiIsImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgZXhpc3RzU3luYywgc3RhdFN5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcblxuaW1wb3J0IHsgT2N0b2tpdCB9IGZyb20gJ0BvY3Rva2l0L3Jlc3QnXG5cbmltcG9ydCB7XG4gIGFwcGx5RGVmYXVsdFByZVB1Ymxpc2hPcHRpb25zLFxuICB0eXBlIFByZVB1Ymxpc2hPcHRpb25zLFxufSBmcm9tICcuLi9kZWYvcHJlLXB1Ymxpc2guanMnXG5pbXBvcnQge1xuICByZWFkRmlsZUFzeW5jLFxuICByZWFkTmFwaUNvbmZpZyxcbiAgZGVidWdGYWN0b3J5LFxuICB1cGRhdGVQYWNrYWdlSnNvbixcbn0gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnXG5cbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuL3ZlcnNpb24uanMnXG5cbmNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCdwcmUtcHVibGlzaCcpXG5cbmludGVyZmFjZSBQYWNrYWdlSW5mbyB7XG4gIG5hbWU6IHN0cmluZ1xuICB2ZXJzaW9uOiBzdHJpbmdcbiAgdGFnOiBzdHJpbmdcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZVB1Ymxpc2godXNlck9wdGlvbnM6IFByZVB1Ymxpc2hPcHRpb25zKSB7XG4gIGRlYnVnKCdSZWNlaXZlIHByZS1wdWJsaXNoIG9wdGlvbnM6JylcbiAgZGVidWcoJyAgJU8nLCB1c2VyT3B0aW9ucylcblxuICBjb25zdCBvcHRpb25zID0gYXBwbHlEZWZhdWx0UHJlUHVibGlzaE9wdGlvbnModXNlck9wdGlvbnMpXG5cbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcmVzb2x2ZShvcHRpb25zLmN3ZCwgb3B0aW9ucy5wYWNrYWdlSnNvblBhdGgpXG5cbiAgY29uc3QgeyBwYWNrYWdlSnNvbiwgdGFyZ2V0cywgcGFja2FnZU5hbWUsIGJpbmFyeU5hbWUsIG5wbUNsaWVudCB9ID1cbiAgICBhd2FpdCByZWFkTmFwaUNvbmZpZyhcbiAgICAgIHBhY2thZ2VKc29uUGF0aCxcbiAgICAgIG9wdGlvbnMuY29uZmlnUGF0aCA/IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMuY29uZmlnUGF0aCkgOiB1bmRlZmluZWQsXG4gICAgKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUdoUmVsZWFzZShwYWNrYWdlTmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIW9wdGlvbnMuZ2hSZWxlYXNlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvd25lcjogbnVsbCxcbiAgICAgICAgcmVwbzogbnVsbCxcbiAgICAgICAgcGtnSW5mbzogeyBuYW1lOiBudWxsLCB2ZXJzaW9uOiBudWxsLCB0YWc6IG51bGwgfSxcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgeyByZXBvLCBvd25lciwgcGtnSW5mbywgb2N0b2tpdCB9ID0gZ2V0UmVwb0luZm8ocGFja2FnZU5hbWUsIHZlcnNpb24pXG5cbiAgICBpZiAoIXJlcG8gfHwgIW93bmVyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvd25lcjogbnVsbCxcbiAgICAgICAgcmVwbzogbnVsbCxcbiAgICAgICAgcGtnSW5mbzogeyBuYW1lOiBudWxsLCB2ZXJzaW9uOiBudWxsLCB0YWc6IG51bGwgfSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBvY3Rva2l0LnJlcG9zLmNyZWF0ZVJlbGVhc2Uoe1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIHJlcG8sXG4gICAgICAgICAgdGFnX25hbWU6IHBrZ0luZm8udGFnLFxuICAgICAgICAgIG5hbWU6IG9wdGlvbnMuZ2hSZWxlYXNlTmFtZSxcbiAgICAgICAgICBwcmVyZWxlYXNlOlxuICAgICAgICAgICAgdmVyc2lvbi5pbmNsdWRlcygnYWxwaGEnKSB8fFxuICAgICAgICAgICAgdmVyc2lvbi5pbmNsdWRlcygnYmV0YScpIHx8XG4gICAgICAgICAgICB2ZXJzaW9uLmluY2x1ZGVzKCdyYycpLFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBkZWJ1ZyhcbiAgICAgICAgICBgUGFyYW1zOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgeyBvd25lciwgcmVwbywgdGFnX25hbWU6IHBrZ0luZm8udGFnIH0sXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgMixcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgICAgY29uc29sZS5lcnJvcihlKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBvd25lciwgcmVwbywgcGtnSW5mbywgb2N0b2tpdCB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXRSZXBvSW5mbyhwYWNrYWdlTmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoZWFkQ29tbWl0ID0gZXhlY1N5bmMoJ2dpdCBsb2cgLTEgLS1wcmV0dHk9JUInLCB7XG4gICAgICBlbmNvZGluZzogJ3V0Zi04JyxcbiAgICB9KS50cmltKClcblxuICAgIGNvbnN0IHsgR0lUSFVCX1JFUE9TSVRPUlkgfSA9IHByb2Nlc3MuZW52XG4gICAgaWYgKCFHSVRIVUJfUkVQT1NJVE9SWSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3duZXI6IG51bGwsXG4gICAgICAgIHJlcG86IG51bGwsXG4gICAgICAgIHBrZ0luZm86IHsgbmFtZTogbnVsbCwgdmVyc2lvbjogbnVsbCwgdGFnOiBudWxsIH0sXG4gICAgICB9XG4gICAgfVxuICAgIGRlYnVnKGBHaXRodWIgcmVwb3NpdG9yeTogJHtHSVRIVUJfUkVQT1NJVE9SWX1gKVxuICAgIGNvbnN0IFtvd25lciwgcmVwb10gPSBHSVRIVUJfUkVQT1NJVE9SWS5zcGxpdCgnLycpXG4gICAgY29uc3Qgb2N0b2tpdCA9IG5ldyBPY3Rva2l0KHtcbiAgICAgIGF1dGg6IHByb2Nlc3MuZW52LkdJVEhVQl9UT0tFTixcbiAgICB9KVxuICAgIGxldCBwa2dJbmZvOiBQYWNrYWdlSW5mbyB8IHVuZGVmaW5lZFxuICAgIGlmIChvcHRpb25zLnRhZ1N0eWxlID09PSAnbGVybmEnKSB7XG4gICAgICBjb25zdCBwYWNrYWdlc1RvUHVibGlzaCA9IGhlYWRDb21taXRcbiAgICAgICAgLnNwbGl0KCdcXG4nKVxuICAgICAgICAubWFwKChsaW5lKSA9PiBsaW5lLnRyaW0oKSlcbiAgICAgICAgLmZpbHRlcigobGluZSwgaW5kZXgpID0+IGxpbmUubGVuZ3RoICYmIGluZGV4KVxuICAgICAgICAubWFwKChsaW5lKSA9PiBsaW5lLnN1YnN0cmluZygyKSlcbiAgICAgICAgLm1hcChwYXJzZVRhZylcblxuICAgICAgcGtnSW5mbyA9IHBhY2thZ2VzVG9QdWJsaXNoLmZpbmQoXG4gICAgICAgIChwa2dJbmZvKSA9PiBwa2dJbmZvLm5hbWUgPT09IHBhY2thZ2VOYW1lLFxuICAgICAgKVxuXG4gICAgICBpZiAoIXBrZ0luZm8pIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBgTm8gcmVsZWFzZSBjb21taXQgZm91bmQgd2l0aCAke3BhY2thZ2VOYW1lfSwgb3JpZ2luYWwgY29tbWl0IGluZm86ICR7aGVhZENvbW1pdH1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBrZ0luZm8gPSB7XG4gICAgICAgIHRhZzogYHYke3ZlcnNpb259YCxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgbmFtZTogcGFja2FnZU5hbWUsXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IG93bmVyLCByZXBvLCBwa2dJbmZvLCBvY3Rva2l0IH1cbiAgfVxuXG4gIGlmICghb3B0aW9ucy5kcnlSdW4pIHtcbiAgICBhd2FpdCB2ZXJzaW9uKHVzZXJPcHRpb25zKVxuICAgIGF3YWl0IHVwZGF0ZVBhY2thZ2VKc29uKHBhY2thZ2VKc29uUGF0aCwge1xuICAgICAgb3B0aW9uYWxEZXBlbmRlbmNpZXM6IHRhcmdldHMucmVkdWNlKFxuICAgICAgICAoZGVwcywgdGFyZ2V0KSA9PiB7XG4gICAgICAgICAgZGVwc1tgJHtwYWNrYWdlTmFtZX0tJHt0YXJnZXQucGxhdGZvcm1BcmNoQUJJfWBdID0gcGFja2FnZUpzb24udmVyc2lvblxuXG4gICAgICAgICAgcmV0dXJuIGRlcHNcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICAgICksXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHsgb3duZXIsIHJlcG8sIHBrZ0luZm8sIG9jdG9raXQgfSA9IG9wdGlvbnMuZ2hSZWxlYXNlSWRcbiAgICA/IGdldFJlcG9JbmZvKHBhY2thZ2VOYW1lLCBwYWNrYWdlSnNvbi52ZXJzaW9uKVxuICAgIDogYXdhaXQgY3JlYXRlR2hSZWxlYXNlKHBhY2thZ2VOYW1lLCBwYWNrYWdlSnNvbi52ZXJzaW9uKVxuXG4gIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRhcmdldHMpIHtcbiAgICBjb25zdCBwa2dEaXIgPSByZXNvbHZlKFxuICAgICAgb3B0aW9ucy5jd2QsXG4gICAgICBvcHRpb25zLm5wbURpcixcbiAgICAgIGAke3RhcmdldC5wbGF0Zm9ybUFyY2hBQkl9YCxcbiAgICApXG4gICAgY29uc3QgZXh0ID1cbiAgICAgIHRhcmdldC5wbGF0Zm9ybSA9PT0gJ3dhc2knIHx8IHRhcmdldC5wbGF0Zm9ybSA9PT0gJ3dhc20nID8gJ3dhc20nIDogJ25vZGUnXG4gICAgY29uc3QgZmlsZW5hbWUgPSBgJHtiaW5hcnlOYW1lfS4ke3RhcmdldC5wbGF0Zm9ybUFyY2hBQkl9LiR7ZXh0fWBcbiAgICBjb25zdCBkc3RQYXRoID0gam9pbihwa2dEaXIsIGZpbGVuYW1lKVxuXG4gICAgaWYgKCFvcHRpb25zLmRyeVJ1bikge1xuICAgICAgaWYgKCFleGlzdHNTeW5jKGRzdFBhdGgpKSB7XG4gICAgICAgIGRlYnVnLndhcm4oYCVzIGRvZXNuJ3QgZXhpc3RgLCBkc3RQYXRoKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoIW9wdGlvbnMuc2tpcE9wdGlvbmFsUHVibGlzaCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG91dHB1dCA9IGV4ZWNTeW5jKGAke25wbUNsaWVudH0gcHVibGlzaGAsIHtcbiAgICAgICAgICAgIGN3ZDogcGtnRGlyLFxuICAgICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICAgIHN0ZGlvOiAncGlwZScsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShvdXRwdXQpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBlIGluc3RhbmNlb2YgRXJyb3IgJiZcbiAgICAgICAgICAgIGUubWVzc2FnZS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgJ1lvdSBjYW5ub3QgcHVibGlzaCBvdmVyIHRoZSBwcmV2aW91c2x5IHB1Ymxpc2hlZCB2ZXJzaW9ucycsXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zb2xlLmluZm8oZS5tZXNzYWdlKVxuICAgICAgICAgICAgZGVidWcud2FybihgJHtwa2dEaXJ9IGhhcyBiZWVuIHB1Ymxpc2hlZCwgc2tpcHBpbmdgKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmdoUmVsZWFzZSAmJiByZXBvICYmIG93bmVyKSB7XG4gICAgICAgIGRlYnVnLmluZm8oYENyZWF0aW5nIEdpdEh1YiByZWxlYXNlICR7cGtnSW5mby50YWd9YClcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZWxlYXNlSWQgPSBvcHRpb25zLmdoUmVsZWFzZUlkXG4gICAgICAgICAgICA/IE51bWJlcihvcHRpb25zLmdoUmVsZWFzZUlkKVxuICAgICAgICAgICAgOiAoXG4gICAgICAgICAgICAgICAgYXdhaXQgb2N0b2tpdCEucmVwb3MuZ2V0UmVsZWFzZUJ5VGFnKHtcbiAgICAgICAgICAgICAgICAgIHJlcG86IHJlcG8sXG4gICAgICAgICAgICAgICAgICBvd25lcjogb3duZXIsXG4gICAgICAgICAgICAgICAgICB0YWc6IHBrZ0luZm8udGFnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICkuZGF0YS5pZFxuICAgICAgICAgIGNvbnN0IGRzdEZpbGVTdGF0cyA9IHN0YXRTeW5jKGRzdFBhdGgpXG4gICAgICAgICAgY29uc3QgYXNzZXRJbmZvID0gYXdhaXQgb2N0b2tpdCEucmVwb3MudXBsb2FkUmVsZWFzZUFzc2V0KHtcbiAgICAgICAgICAgIG93bmVyOiBvd25lcixcbiAgICAgICAgICAgIHJlcG86IHJlcG8sXG4gICAgICAgICAgICBuYW1lOiBmaWxlbmFtZSxcbiAgICAgICAgICAgIHJlbGVhc2VfaWQ6IHJlbGVhc2VJZCxcbiAgICAgICAgICAgIG1lZGlhVHlwZTogeyBmb3JtYXQ6ICdyYXcnIH0sXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdjb250ZW50LWxlbmd0aCc6IGRzdEZpbGVTdGF0cy5zaXplLFxuICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBvY3Rva2l0IHR5cGVzIGFyZSB3cm9uZ1xuICAgICAgICAgICAgZGF0YTogYXdhaXQgcmVhZEZpbGVBc3luYyhkc3RQYXRoKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlYnVnLmluZm8oYEdpdEh1YiByZWxlYXNlIGNyZWF0ZWRgKVxuICAgICAgICAgIGRlYnVnLmluZm8oYERvd25sb2FkIFVSTDogJXNgLCBhc3NldEluZm8uZGF0YS5icm93c2VyX2Rvd25sb2FkX3VybClcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGRlYnVnLmVycm9yKFxuICAgICAgICAgICAgYFBhcmFtOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICB7IG93bmVyLCByZXBvLCB0YWc6IHBrZ0luZm8udGFnLCBmaWxlbmFtZTogZHN0UGF0aCB9LFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAyLFxuICAgICAgICAgICAgKX1gLFxuICAgICAgICAgIClcbiAgICAgICAgICBkZWJ1Zy5lcnJvcihlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlVGFnKHRhZzogc3RyaW5nKSB7XG4gIGNvbnN0IHNlZ21lbnRzID0gdGFnLnNwbGl0KCdAJylcbiAgY29uc3QgdmVyc2lvbiA9IHNlZ21lbnRzLnBvcCgpIVxuICBjb25zdCBuYW1lID0gc2VnbWVudHMuam9pbignQCcpXG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lLFxuICAgIHZlcnNpb24sXG4gICAgdGFnLFxuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGNvZGVnZW4vaW5kZXgudHNcbi8vIERvIG5vdCBlZGl0IHRoaXMgZmlsZSBtYW51YWxseVxuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVVuaXZlcnNhbGl6ZUNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW1sndW5pdmVyc2FsaXplJ11dXG5cbiAgc3RhdGljIHVzYWdlID0gQ29tbWFuZC5Vc2FnZSh7XG4gICAgZGVzY3JpcHRpb246ICdDb21iaWxlIGJ1aWx0IGJpbmFyaWVzIGludG8gb25lIHVuaXZlcnNhbCBiaW5hcnknLFxuICB9KVxuXG4gIGN3ZCA9IE9wdGlvbi5TdHJpbmcoJy0tY3dkJywgcHJvY2Vzcy5jd2QoKSwge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aCcsXG4gIH0pXG5cbiAgY29uZmlnUGF0aD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tY29uZmlnLXBhdGgsLWMnLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlJyxcbiAgfSlcblxuICBwYWNrYWdlSnNvblBhdGggPSBPcHRpb24uU3RyaW5nKCctLXBhY2thZ2UtanNvbi1wYXRoJywgJ3BhY2thZ2UuanNvbicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYHBhY2thZ2UuanNvbmAnLFxuICB9KVxuXG4gIG91dHB1dERpciA9IE9wdGlvbi5TdHJpbmcoJy0tb3V0cHV0LWRpciwtbycsICcuLycsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgYWxsIGJ1aWx0IGAubm9kZWAgZmlsZXMgcHV0LCBzYW1lIGFzIGAtLW91dHB1dC1kaXJgIG9mIGJ1aWxkIGNvbW1hbmQnLFxuICB9KVxuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN3ZDogdGhpcy5jd2QsXG4gICAgICBjb25maWdQYXRoOiB0aGlzLmNvbmZpZ1BhdGgsXG4gICAgICBwYWNrYWdlSnNvblBhdGg6IHRoaXMucGFja2FnZUpzb25QYXRoLFxuICAgICAgb3V0cHV0RGlyOiB0aGlzLm91dHB1dERpcixcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDb21iaWxlIGJ1aWx0IGJpbmFyaWVzIGludG8gb25lIHVuaXZlcnNhbCBiaW5hcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbml2ZXJzYWxpemVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICBjd2Q/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICpcbiAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICovXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIGFsbCBidWlsdCBgLm5vZGVgIGZpbGVzIHB1dCwgc2FtZSBhcyBgLS1vdXRwdXQtZGlyYCBvZiBidWlsZCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0ICcuLydcbiAgICovXG4gIG91dHB1dERpcj86IHN0cmluZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZWZhdWx0VW5pdmVyc2FsaXplT3B0aW9ucyhvcHRpb25zOiBVbml2ZXJzYWxpemVPcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIHBhY2thZ2VKc29uUGF0aDogJ3BhY2thZ2UuanNvbicsXG4gICAgb3V0cHV0RGlyOiAnLi8nLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cbn1cbiIsImltcG9ydCB7IHNwYXduU3luYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmltcG9ydCB7XG4gIGFwcGx5RGVmYXVsdFVuaXZlcnNhbGl6ZU9wdGlvbnMsXG4gIHR5cGUgVW5pdmVyc2FsaXplT3B0aW9ucyxcbn0gZnJvbSAnLi4vZGVmL3VuaXZlcnNhbGl6ZS5qcydcbmltcG9ydCB7IHJlYWROYXBpQ29uZmlnIH0gZnJvbSAnLi4vdXRpbHMvY29uZmlnLmpzJ1xuaW1wb3J0IHsgZGVidWdGYWN0b3J5IH0gZnJvbSAnLi4vdXRpbHMvbG9nLmpzJ1xuaW1wb3J0IHsgZmlsZUV4aXN0cyB9IGZyb20gJy4uL3V0aWxzL21pc2MuanMnXG5pbXBvcnQgeyBVbmlBcmNoc0J5UGxhdGZvcm0gfSBmcm9tICcuLi91dGlscy90YXJnZXQuanMnXG5cbmNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCd1bml2ZXJzYWxpemUnKVxuXG5jb25zdCB1bml2ZXJzYWxpemVyczogUGFydGlhbDxcbiAgUmVjb3JkPE5vZGVKUy5QbGF0Zm9ybSwgKGlucHV0czogc3RyaW5nW10sIG91dHB1dDogc3RyaW5nKSA9PiB2b2lkPlxuPiA9IHtcbiAgZGFyd2luOiAoaW5wdXRzLCBvdXRwdXQpID0+IHtcbiAgICBzcGF3blN5bmMoJ2xpcG8nLCBbJy1jcmVhdGUnLCAnLW91dHB1dCcsIG91dHB1dCwgLi4uaW5wdXRzXSwge1xuICAgICAgc3RkaW86ICdpbmhlcml0JyxcbiAgICB9KVxuICB9LFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdW5pdmVyc2FsaXplQmluYXJpZXModXNlck9wdGlvbnM6IFVuaXZlcnNhbGl6ZU9wdGlvbnMpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGFwcGx5RGVmYXVsdFVuaXZlcnNhbGl6ZU9wdGlvbnModXNlck9wdGlvbnMpXG5cbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gam9pbihvcHRpb25zLmN3ZCwgb3B0aW9ucy5wYWNrYWdlSnNvblBhdGgpXG5cbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZE5hcGlDb25maWcoXG4gICAgcGFja2FnZUpzb25QYXRoLFxuICAgIG9wdGlvbnMuY29uZmlnUGF0aCA/IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMuY29uZmlnUGF0aCkgOiB1bmRlZmluZWQsXG4gIClcblxuICBjb25zdCB0YXJnZXQgPSBjb25maWcudGFyZ2V0cy5maW5kKFxuICAgICh0KSA9PiB0LnBsYXRmb3JtID09PSBwcm9jZXNzLnBsYXRmb3JtICYmIHQuYXJjaCA9PT0gJ3VuaXZlcnNhbCcsXG4gIClcblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAndW5pdmVyc2FsJyBhcmNoIGZvciBwbGF0Zm9ybSAnJHtwcm9jZXNzLnBsYXRmb3JtfScgbm90IGZvdW5kIGluIGNvbmZpZyFgLFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHNyY0ZpbGVzID0gVW5pQXJjaHNCeVBsYXRmb3JtW3Byb2Nlc3MucGxhdGZvcm1dPy5tYXAoKGFyY2gpID0+XG4gICAgcmVzb2x2ZShcbiAgICAgIG9wdGlvbnMuY3dkLFxuICAgICAgb3B0aW9ucy5vdXRwdXREaXIsXG4gICAgICBgJHtjb25maWcuYmluYXJ5TmFtZX0uJHtwcm9jZXNzLnBsYXRmb3JtfS0ke2FyY2h9Lm5vZGVgLFxuICAgICksXG4gIClcblxuICBpZiAoIXNyY0ZpbGVzIHx8ICF1bml2ZXJzYWxpemVyc1twcm9jZXNzLnBsYXRmb3JtXSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAndW5pdmVyc2FsJyBhcmNoIGZvciBwbGF0Zm9ybSAnJHtwcm9jZXNzLnBsYXRmb3JtfScgbm90IHN1cHBvcnRlZC5gLFxuICAgIClcbiAgfVxuXG4gIGRlYnVnKGBMb29raW5nIHVwIHNvdXJjZSBiaW5hcmllcyB0byBjb21iaW5lOiBgKVxuICBkZWJ1ZygnICAlTycsIHNyY0ZpbGVzKVxuXG4gIGNvbnN0IHNyY0ZpbGVMb29rdXAgPSBhd2FpdCBQcm9taXNlLmFsbChzcmNGaWxlcy5tYXAoKGYpID0+IGZpbGVFeGlzdHMoZikpKVxuXG4gIGNvbnN0IG5vdEZvdW5kRmlsZXMgPSBzcmNGaWxlcy5maWx0ZXIoKF8sIGkpID0+ICFzcmNGaWxlTG9va3VwW2ldKVxuXG4gIGlmIChub3RGb3VuZEZpbGVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBTb21lIGJpbmFyeSBmaWxlcyB3ZXJlIG5vdCBmb3VuZDogJHtKU09OLnN0cmluZ2lmeShub3RGb3VuZEZpbGVzKX1gLFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IG91dHB1dCA9IHJlc29sdmUoXG4gICAgb3B0aW9ucy5jd2QsXG4gICAgb3B0aW9ucy5vdXRwdXREaXIsXG4gICAgYCR7Y29uZmlnLmJpbmFyeU5hbWV9LiR7cHJvY2Vzcy5wbGF0Zm9ybX0tdW5pdmVyc2FsLm5vZGVgLFxuICApXG5cbiAgdW5pdmVyc2FsaXplcnNbcHJvY2Vzcy5wbGF0Zm9ybV0/LihzcmNGaWxlcywgb3V0cHV0KVxuXG4gIGRlYnVnKGBQcm9kdWNlZCB1bml2ZXJzYWwgYmluYXJ5OiAke291dHB1dH1gKVxufVxuIiwiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NsaXBhbmlvbidcblxuaW1wb3J0IHsgY29sbGVjdEFydGlmYWN0cyB9IGZyb20gJy4uL2FwaS9hcnRpZmFjdHMuanMnXG5pbXBvcnQgeyBCYXNlQXJ0aWZhY3RzQ29tbWFuZCB9IGZyb20gJy4uL2RlZi9hcnRpZmFjdHMuanMnXG5cbmV4cG9ydCBjbGFzcyBBcnRpZmFjdHNDb21tYW5kIGV4dGVuZHMgQmFzZUFydGlmYWN0c0NvbW1hbmQge1xuICBzdGF0aWMgdXNhZ2UgPSBDb21tYW5kLlVzYWdlKHtcbiAgICBkZXNjcmlwdGlvbjogJ0NvcHkgYXJ0aWZhY3RzIGZyb20gR2l0aHViIEFjdGlvbnMgaW50byBzcGVjaWZpZWQgZGlyJyxcbiAgICBleGFtcGxlczogW1xuICAgICAgW1xuICAgICAgICAnJDAgYXJ0aWZhY3RzIC0tb3V0cHV0LWRpciAuL2FydGlmYWN0cyAtLWRpc3QgLi9ucG0nLFxuICAgICAgICBgQ29weSBbYmluYXJ5TmFtZV0uW3BsYXRmb3JtXS5ub2RlIHVuZGVyIGN1cnJlbnQgZGlyKC4pIGludG8gcGFja2FnZXMgdW5kZXIgbnBtIGRpci5cbmUuZzogaW5kZXgubGludXgteDY0LWdudS5ub2RlIC0tPiAuL25wbS9saW51eC14NjQtZ251L2luZGV4LmxpbnV4LXg2NC1nbnUubm9kZWAsXG4gICAgICBdLFxuICAgIF0sXG4gIH0pXG5cbiAgc3RhdGljIHBhdGhzID0gW1snYXJ0aWZhY3RzJ11dXG5cbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICBhd2FpdCBjb2xsZWN0QXJ0aWZhY3RzKHRoaXMuZ2V0T3B0aW9ucygpKVxuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGNvZGVnZW4vaW5kZXgudHNcbi8vIERvIG5vdCBlZGl0IHRoaXMgZmlsZSBtYW51YWxseVxuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUJ1aWxkQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBzdGF0aWMgcGF0aHMgPSBbWydidWlsZCddXVxuXG4gIHN0YXRpYyB1c2FnZSA9IENvbW1hbmQuVXNhZ2Uoe1xuICAgIGRlc2NyaXB0aW9uOiAnQnVpbGQgdGhlIE5BUEktUlMgcHJvamVjdCcsXG4gIH0pXG5cbiAgdGFyZ2V0Pzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS10YXJnZXQsLXQnLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnQnVpbGQgZm9yIHRoZSB0YXJnZXQgdHJpcGxlLCBieXBhc3NlZCB0byBgY2FyZ28gYnVpbGQgLS10YXJnZXRgJyxcbiAgfSlcblxuICBjd2Q/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWN3ZCcsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGgnLFxuICB9KVxuXG4gIG1hbmlmZXN0UGF0aD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tbWFuaWZlc3QtcGF0aCcsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYENhcmdvLnRvbWxgJyxcbiAgfSlcblxuICBjb25maWdQYXRoPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1jb25maWctcGF0aCwtYycsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGUnLFxuICB9KVxuXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZS1qc29uLXBhdGgnLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBwYWNrYWdlLmpzb25gJyxcbiAgfSlcblxuICB0YXJnZXREaXI/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLXRhcmdldC1kaXInLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnRGlyZWN0b3J5IGZvciBhbGwgY3JhdGUgZ2VuZXJhdGVkIGFydGlmYWN0cywgc2VlIGBjYXJnbyBidWlsZCAtLXRhcmdldC1kaXJgJyxcbiAgfSlcblxuICBvdXRwdXREaXI/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLW91dHB1dC1kaXIsLW8nLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnUGF0aCB0byB3aGVyZSBhbGwgdGhlIGJ1aWx0IGZpbGVzIHdvdWxkIGJlIHB1dC4gRGVmYXVsdCB0byB0aGUgY3JhdGUgZm9sZGVyJyxcbiAgfSlcblxuICBwbGF0Zm9ybT86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS1wbGF0Zm9ybScsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdBZGQgcGxhdGZvcm0gdHJpcGxlIHRvIHRoZSBnZW5lcmF0ZWQgbm9kZWpzIGJpbmRpbmcgZmlsZSwgZWc6IGBbbmFtZV0ubGludXgteDY0LWdudS5ub2RlYCcsXG4gIH0pXG5cbiAganNQYWNrYWdlTmFtZT86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tanMtcGFja2FnZS1uYW1lJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1BhY2thZ2UgbmFtZSBpbiBnZW5lcmF0ZWQganMgYmluZGluZyBmaWxlLiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcnLFxuICB9KVxuXG4gIGNvbnN0RW51bT86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS1jb25zdC1lbnVtJywge1xuICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciBnZW5lcmF0ZSBjb25zdCBlbnVtIGZvciB0eXBlc2NyaXB0IGJpbmRpbmdzJyxcbiAgfSlcblxuICBqc0JpbmRpbmc/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWpzJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1BhdGggYW5kIGZpbGVuYW1lIG9mIGdlbmVyYXRlZCBKUyBiaW5kaW5nIGZpbGUuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZy4gUmVsYXRpdmUgdG8gYC0tb3V0cHV0LWRpcmAuJyxcbiAgfSlcblxuICBub0pzQmluZGluZz86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS1uby1qcycsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGdlbmVyYXRpb24gSlMgYmluZGluZyBmaWxlLiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcuJyxcbiAgfSlcblxuICBkdHM/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWR0cycsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdQYXRoIGFuZCBmaWxlbmFtZSBvZiBnZW5lcmF0ZWQgdHlwZSBkZWYgZmlsZS4gUmVsYXRpdmUgdG8gYC0tb3V0cHV0LWRpcmAnLFxuICB9KVxuXG4gIGR0c0hlYWRlcj86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tZHRzLWhlYWRlcicsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdDdXN0b20gZmlsZSBoZWFkZXIgZm9yIGdlbmVyYXRlZCB0eXBlIGRlZiBmaWxlLiBPbmx5IHdvcmtzIHdoZW4gYHR5cGVkZWZgIGZlYXR1cmUgZW5hYmxlZC4nLFxuICB9KVxuXG4gIG5vRHRzSGVhZGVyPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLW5vLWR0cy1oZWFkZXInLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnV2hldGhlciB0byBkaXNhYmxlIHRoZSBkZWZhdWx0IGZpbGUgaGVhZGVyIGZvciBnZW5lcmF0ZWQgdHlwZSBkZWYgZmlsZS4gT25seSB3b3JrcyB3aGVuIGB0eXBlZGVmYCBmZWF0dXJlIGVuYWJsZWQuJyxcbiAgfSlcblxuICBkdHNDYWNoZSA9IE9wdGlvbi5Cb29sZWFuKCctLWR0cy1jYWNoZScsIHRydWUsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdG8gZW5hYmxlIHRoZSBkdHMgY2FjaGUsIGRlZmF1bHQgdG8gdHJ1ZScsXG4gIH0pXG5cbiAgZXNtPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLWVzbScsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdXaGV0aGVyIHRvIGVtaXQgYW4gRVNNIEpTIGJpbmRpbmcgZmlsZSBpbnN0ZWFkIG9mIENKUyBmb3JtYXQuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZy4nLFxuICB9KVxuXG4gIHN0cmlwPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLXN0cmlwLC1zJywge1xuICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciBzdHJpcCB0aGUgbGlicmFyeSB0byBhY2hpZXZlIHRoZSBtaW5pbXVtIGZpbGUgc2l6ZScsXG4gIH0pXG5cbiAgcmVsZWFzZT86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS1yZWxlYXNlLC1yJywge1xuICAgIGRlc2NyaXB0aW9uOiAnQnVpbGQgaW4gcmVsZWFzZSBtb2RlJyxcbiAgfSlcblxuICB2ZXJib3NlPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLXZlcmJvc2UsLXYnLCB7XG4gICAgZGVzY3JpcHRpb246ICdWZXJib3NlbHkgbG9nIGJ1aWxkIGNvbW1hbmQgdHJhY2UnLFxuICB9KVxuXG4gIGJpbj86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tYmluJywge1xuICAgIGRlc2NyaXB0aW9uOiAnQnVpbGQgb25seSB0aGUgc3BlY2lmaWVkIGJpbmFyeScsXG4gIH0pXG5cbiAgcGFja2FnZT86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZSwtcCcsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIHRoZSBzcGVjaWZpZWQgbGlicmFyeSBvciB0aGUgb25lIGF0IGN3ZCcsXG4gIH0pXG5cbiAgcHJvZmlsZT86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tcHJvZmlsZScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIGFydGlmYWN0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJvZmlsZScsXG4gIH0pXG5cbiAgY3Jvc3NDb21waWxlPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLWNyb3NzLWNvbXBpbGUsLXgnLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnW2V4cGVyaW1lbnRhbF0gY3Jvc3MtY29tcGlsZSBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQgd2l0aCBgY2FyZ28teHdpbmAgb24gd2luZG93cyBhbmQgYGNhcmdvLXppZ2J1aWxkYCBvbiBvdGhlciBwbGF0Zm9ybScsXG4gIH0pXG5cbiAgdXNlQ3Jvc3M/OiBib29sZWFuID0gT3B0aW9uLkJvb2xlYW4oJy0tdXNlLWNyb3NzJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1tleHBlcmltZW50YWxdIHVzZSBbY3Jvc3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9jcm9zcy1ycy9jcm9zcykgaW5zdGVhZCBvZiBgY2FyZ29gJyxcbiAgfSlcblxuICB1c2VOYXBpQ3Jvc3M/OiBib29sZWFuID0gT3B0aW9uLkJvb2xlYW4oJy0tdXNlLW5hcGktY3Jvc3MnLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnW2V4cGVyaW1lbnRhbF0gdXNlIEBuYXBpLXJzL2Nyb3NzLXRvb2xjaGFpbiB0byBjcm9zcy1jb21waWxlIExpbnV4IGFybS9hcm02NC94NjQgZ251IHRhcmdldHMuJyxcbiAgfSlcblxuICB3YXRjaD86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS13YXRjaCwtdycsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICd3YXRjaCB0aGUgY3JhdGUgY2hhbmdlcyBhbmQgYnVpbGQgY29udGludW91c2x5IHdpdGggYGNhcmdvLXdhdGNoYCBjcmF0ZXMnLFxuICB9KVxuXG4gIGZlYXR1cmVzPzogc3RyaW5nW10gPSBPcHRpb24uQXJyYXkoJy0tZmVhdHVyZXMsLUYnLCB7XG4gICAgZGVzY3JpcHRpb246ICdTcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBmZWF0dXJlcyB0byBhY3RpdmF0ZScsXG4gIH0pXG5cbiAgYWxsRmVhdHVyZXM/OiBib29sZWFuID0gT3B0aW9uLkJvb2xlYW4oJy0tYWxsLWZlYXR1cmVzJywge1xuICAgIGRlc2NyaXB0aW9uOiAnQWN0aXZhdGUgYWxsIGF2YWlsYWJsZSBmZWF0dXJlcycsXG4gIH0pXG5cbiAgbm9EZWZhdWx0RmVhdHVyZXM/OiBib29sZWFuID0gT3B0aW9uLkJvb2xlYW4oJy0tbm8tZGVmYXVsdC1mZWF0dXJlcycsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0RvIG5vdCBhY3RpdmF0ZSB0aGUgYGRlZmF1bHRgIGZlYXR1cmUnLFxuICB9KVxuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogdGhpcy50YXJnZXQsXG4gICAgICBjd2Q6IHRoaXMuY3dkLFxuICAgICAgbWFuaWZlc3RQYXRoOiB0aGlzLm1hbmlmZXN0UGF0aCxcbiAgICAgIGNvbmZpZ1BhdGg6IHRoaXMuY29uZmlnUGF0aCxcbiAgICAgIHBhY2thZ2VKc29uUGF0aDogdGhpcy5wYWNrYWdlSnNvblBhdGgsXG4gICAgICB0YXJnZXREaXI6IHRoaXMudGFyZ2V0RGlyLFxuICAgICAgb3V0cHV0RGlyOiB0aGlzLm91dHB1dERpcixcbiAgICAgIHBsYXRmb3JtOiB0aGlzLnBsYXRmb3JtLFxuICAgICAganNQYWNrYWdlTmFtZTogdGhpcy5qc1BhY2thZ2VOYW1lLFxuICAgICAgY29uc3RFbnVtOiB0aGlzLmNvbnN0RW51bSxcbiAgICAgIGpzQmluZGluZzogdGhpcy5qc0JpbmRpbmcsXG4gICAgICBub0pzQmluZGluZzogdGhpcy5ub0pzQmluZGluZyxcbiAgICAgIGR0czogdGhpcy5kdHMsXG4gICAgICBkdHNIZWFkZXI6IHRoaXMuZHRzSGVhZGVyLFxuICAgICAgbm9EdHNIZWFkZXI6IHRoaXMubm9EdHNIZWFkZXIsXG4gICAgICBkdHNDYWNoZTogdGhpcy5kdHNDYWNoZSxcbiAgICAgIGVzbTogdGhpcy5lc20sXG4gICAgICBzdHJpcDogdGhpcy5zdHJpcCxcbiAgICAgIHJlbGVhc2U6IHRoaXMucmVsZWFzZSxcbiAgICAgIHZlcmJvc2U6IHRoaXMudmVyYm9zZSxcbiAgICAgIGJpbjogdGhpcy5iaW4sXG4gICAgICBwYWNrYWdlOiB0aGlzLnBhY2thZ2UsXG4gICAgICBwcm9maWxlOiB0aGlzLnByb2ZpbGUsXG4gICAgICBjcm9zc0NvbXBpbGU6IHRoaXMuY3Jvc3NDb21waWxlLFxuICAgICAgdXNlQ3Jvc3M6IHRoaXMudXNlQ3Jvc3MsXG4gICAgICB1c2VOYXBpQ3Jvc3M6IHRoaXMudXNlTmFwaUNyb3NzLFxuICAgICAgd2F0Y2g6IHRoaXMud2F0Y2gsXG4gICAgICBmZWF0dXJlczogdGhpcy5mZWF0dXJlcyxcbiAgICAgIGFsbEZlYXR1cmVzOiB0aGlzLmFsbEZlYXR1cmVzLFxuICAgICAgbm9EZWZhdWx0RmVhdHVyZXM6IHRoaXMubm9EZWZhdWx0RmVhdHVyZXMsXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIE5BUEktUlMgcHJvamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBCdWlsZCBmb3IgdGhlIHRhcmdldCB0cmlwbGUsIGJ5cGFzc2VkIHRvIGBjYXJnbyBidWlsZCAtLXRhcmdldGBcbiAgICovXG4gIHRhcmdldD86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoXG4gICAqL1xuICBjd2Q/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYENhcmdvLnRvbWxgXG4gICAqL1xuICBtYW5pZmVzdFBhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICovXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogRGlyZWN0b3J5IGZvciBhbGwgY3JhdGUgZ2VuZXJhdGVkIGFydGlmYWN0cywgc2VlIGBjYXJnbyBidWlsZCAtLXRhcmdldC1kaXJgXG4gICAqL1xuICB0YXJnZXREaXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gd2hlcmUgYWxsIHRoZSBidWlsdCBmaWxlcyB3b3VsZCBiZSBwdXQuIERlZmF1bHQgdG8gdGhlIGNyYXRlIGZvbGRlclxuICAgKi9cbiAgb3V0cHV0RGlyPzogc3RyaW5nXG4gIC8qKlxuICAgKiBBZGQgcGxhdGZvcm0gdHJpcGxlIHRvIHRoZSBnZW5lcmF0ZWQgbm9kZWpzIGJpbmRpbmcgZmlsZSwgZWc6IGBbbmFtZV0ubGludXgteDY0LWdudS5ub2RlYFxuICAgKi9cbiAgcGxhdGZvcm0/OiBib29sZWFuXG4gIC8qKlxuICAgKiBQYWNrYWdlIG5hbWUgaW4gZ2VuZXJhdGVkIGpzIGJpbmRpbmcgZmlsZS4gT25seSB3b3JrcyB3aXRoIGAtLXBsYXRmb3JtYCBmbGFnXG4gICAqL1xuICBqc1BhY2thZ2VOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBXaGV0aGVyIGdlbmVyYXRlIGNvbnN0IGVudW0gZm9yIHR5cGVzY3JpcHQgYmluZGluZ3NcbiAgICovXG4gIGNvbnN0RW51bT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFBhdGggYW5kIGZpbGVuYW1lIG9mIGdlbmVyYXRlZCBKUyBiaW5kaW5nIGZpbGUuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZy4gUmVsYXRpdmUgdG8gYC0tb3V0cHV0LWRpcmAuXG4gICAqL1xuICBqc0JpbmRpbmc/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBKUyBiaW5kaW5nIGZpbGUuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZy5cbiAgICovXG4gIG5vSnNCaW5kaW5nPzogYm9vbGVhblxuICAvKipcbiAgICogUGF0aCBhbmQgZmlsZW5hbWUgb2YgZ2VuZXJhdGVkIHR5cGUgZGVmIGZpbGUuIFJlbGF0aXZlIHRvIGAtLW91dHB1dC1kaXJgXG4gICAqL1xuICBkdHM/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEN1c3RvbSBmaWxlIGhlYWRlciBmb3IgZ2VuZXJhdGVkIHR5cGUgZGVmIGZpbGUuIE9ubHkgd29ya3Mgd2hlbiBgdHlwZWRlZmAgZmVhdHVyZSBlbmFibGVkLlxuICAgKi9cbiAgZHRzSGVhZGVyPzogc3RyaW5nXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGRlZmF1bHQgZmlsZSBoZWFkZXIgZm9yIGdlbmVyYXRlZCB0eXBlIGRlZiBmaWxlLiBPbmx5IHdvcmtzIHdoZW4gYHR5cGVkZWZgIGZlYXR1cmUgZW5hYmxlZC5cbiAgICovXG4gIG5vRHRzSGVhZGVyPzogYm9vbGVhblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgdGhlIGR0cyBjYWNoZSwgZGVmYXVsdCB0byB0cnVlXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGR0c0NhY2hlPzogYm9vbGVhblxuICAvKipcbiAgICogV2hldGhlciB0byBlbWl0IGFuIEVTTSBKUyBiaW5kaW5nIGZpbGUgaW5zdGVhZCBvZiBDSlMgZm9ybWF0LiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcuXG4gICAqL1xuICBlc20/OiBib29sZWFuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHN0cmlwIHRoZSBsaWJyYXJ5IHRvIGFjaGlldmUgdGhlIG1pbmltdW0gZmlsZSBzaXplXG4gICAqL1xuICBzdHJpcD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEJ1aWxkIGluIHJlbGVhc2UgbW9kZVxuICAgKi9cbiAgcmVsZWFzZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFZlcmJvc2VseSBsb2cgYnVpbGQgY29tbWFuZCB0cmFjZVxuICAgKi9cbiAgdmVyYm9zZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEJ1aWxkIG9ubHkgdGhlIHNwZWNpZmllZCBiaW5hcnlcbiAgICovXG4gIGJpbj86IHN0cmluZ1xuICAvKipcbiAgICogQnVpbGQgdGhlIHNwZWNpZmllZCBsaWJyYXJ5IG9yIHRoZSBvbmUgYXQgY3dkXG4gICAqL1xuICBwYWNrYWdlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBCdWlsZCBhcnRpZmFjdHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByb2ZpbGVcbiAgICovXG4gIHByb2ZpbGU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFtleHBlcmltZW50YWxdIGNyb3NzLWNvbXBpbGUgZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IHdpdGggYGNhcmdvLXh3aW5gIG9uIHdpbmRvd3MgYW5kIGBjYXJnby16aWdidWlsZGAgb24gb3RoZXIgcGxhdGZvcm1cbiAgICovXG4gIGNyb3NzQ29tcGlsZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFtleHBlcmltZW50YWxdIHVzZSBbY3Jvc3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9jcm9zcy1ycy9jcm9zcykgaW5zdGVhZCBvZiBgY2FyZ29gXG4gICAqL1xuICB1c2VDcm9zcz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFtleHBlcmltZW50YWxdIHVzZSBAbmFwaS1ycy9jcm9zcy10b29sY2hhaW4gdG8gY3Jvc3MtY29tcGlsZSBMaW51eCBhcm0vYXJtNjQveDY0IGdudSB0YXJnZXRzLlxuICAgKi9cbiAgdXNlTmFwaUNyb3NzPzogYm9vbGVhblxuICAvKipcbiAgICogd2F0Y2ggdGhlIGNyYXRlIGNoYW5nZXMgYW5kIGJ1aWxkIGNvbnRpbnVvdXNseSB3aXRoIGBjYXJnby13YXRjaGAgY3JhdGVzXG4gICAqL1xuICB3YXRjaD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGZlYXR1cmVzIHRvIGFjdGl2YXRlXG4gICAqL1xuICBmZWF0dXJlcz86IHN0cmluZ1tdXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBhbGwgYXZhaWxhYmxlIGZlYXR1cmVzXG4gICAqL1xuICBhbGxGZWF0dXJlcz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIERvIG5vdCBhY3RpdmF0ZSB0aGUgYGRlZmF1bHRgIGZlYXR1cmVcbiAgICovXG4gIG5vRGVmYXVsdEZlYXR1cmVzPzogYm9vbGVhblxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZWZhdWx0QnVpbGRPcHRpb25zKG9wdGlvbnM6IEJ1aWxkT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIGR0c0NhY2hlOiB0cnVlLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cbn1cbiIsImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuXG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdjbGlwYW5pb24nXG5cbmltcG9ydCB7IGJ1aWxkUHJvamVjdCB9IGZyb20gJy4uL2FwaS9idWlsZC5qcydcbmltcG9ydCB7IEJhc2VCdWlsZENvbW1hbmQgfSBmcm9tICcuLi9kZWYvYnVpbGQuanMnXG5pbXBvcnQgeyBkZWJ1Z0ZhY3RvcnkgfSBmcm9tICcuLi91dGlscy9pbmRleC5qcydcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0ZhY3RvcnkoJ2J1aWxkJylcblxuZXhwb3J0IGNsYXNzIEJ1aWxkQ29tbWFuZCBleHRlbmRzIEJhc2VCdWlsZENvbW1hbmQge1xuICBwaXBlID0gT3B0aW9uLlN0cmluZygnLS1waXBlJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1BpcGUgYWxsIG91dHB1dHMgZmlsZSB0byBnaXZlbiBjb21tYW5kLiBlLmcuIGBuYXBpIGJ1aWxkIC0tcGlwZSBcIm5weCBwcmV0dGllciAtLXdyaXRlXCJgJyxcbiAgfSlcblxuICBjYXJnb09wdGlvbnMgPSBPcHRpb24uUmVzdCgpXG5cbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGJ1aWxkUHJvamVjdCh7XG4gICAgICAuLi50aGlzLmdldE9wdGlvbnMoKSxcbiAgICAgIGNhcmdvT3B0aW9uczogdGhpcy5jYXJnb09wdGlvbnMsXG4gICAgfSlcblxuICAgIGNvbnN0IG91dHB1dHMgPSBhd2FpdCB0YXNrXG5cbiAgICBpZiAodGhpcy5waXBlKSB7XG4gICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBvdXRwdXRzKSB7XG4gICAgICAgIGRlYnVnKCdQaXBpbmcgb3V0cHV0IGZpbGUgdG8gY29tbWFuZDogJXMnLCB0aGlzLnBpcGUpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZXhlY1N5bmMoYCR7dGhpcy5waXBlfSAke291dHB1dC5wYXRofWAsIHtcbiAgICAgICAgICAgIHN0ZGlvOiAnaW5oZXJpdCcsXG4gICAgICAgICAgICBjd2Q6IHRoaXMuY3dkLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBkZWJ1Zy5lcnJvcihgRmFpbGVkIHRvIHBpcGUgb3V0cHV0IGZpbGUgJHtvdXRwdXQucGF0aH0gdG8gY29tbWFuZGApXG4gICAgICAgICAgZGVidWcuZXJyb3IoZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgY3JlYXRlTnBtRGlycyB9IGZyb20gJy4uL2FwaS9jcmVhdGUtbnBtLWRpcnMuanMnXG5pbXBvcnQgeyBCYXNlQ3JlYXRlTnBtRGlyc0NvbW1hbmQgfSBmcm9tICcuLi9kZWYvY3JlYXRlLW5wbS1kaXJzLmpzJ1xuXG5leHBvcnQgY2xhc3MgQ3JlYXRlTnBtRGlyc0NvbW1hbmQgZXh0ZW5kcyBCYXNlQ3JlYXRlTnBtRGlyc0NvbW1hbmQge1xuICBhc3luYyBleGVjdXRlKCkge1xuICAgIGF3YWl0IGNyZWF0ZU5wbURpcnModGhpcy5nZXRPcHRpb25zKCkpXG4gIH1cbn1cbiIsImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjbGlwYW5pb24nXG5cbi8qKlxuICogQSBjb21tYW5kIHRoYXQgcHJpbnRzIHRoZSB1c2FnZSBvZiBhbGwgY29tbWFuZHMuXG4gKlxuICogUGF0aHM6IGAtaGAsIGAtLWhlbHBgXG4gKi9cbmV4cG9ydCBjbGFzcyBIZWxwQ29tbWFuZCBleHRlbmRzIENvbW1hbmQ8YW55PiB7XG4gIHN0YXRpYyBwYXRocyA9IFtbYC1oYF0sIFtgLS1oZWxwYF1dXG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgYXdhaXQgdGhpcy5jb250ZXh0LnN0ZG91dC53cml0ZSh0aGlzLmNsaS51c2FnZSgpKVxuICB9XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnXG5cbmltcG9ydCB7IGlucHV0LCBzZWxlY3QsIGNoZWNrYm94LCBjb25maXJtIH0gZnJvbSAnQGlucXVpcmVyL3Byb21wdHMnXG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdjbGlwYW5pb24nXG5cbmltcG9ydCB7IG5ld1Byb2plY3QgfSBmcm9tICcuLi9hcGkvbmV3LmpzJ1xuaW1wb3J0IHsgQmFzZU5ld0NvbW1hbmQgfSBmcm9tICcuLi9kZWYvbmV3LmpzJ1xuaW1wb3J0IHtcbiAgQVZBSUxBQkxFX1RBUkdFVFMsXG4gIGRlYnVnRmFjdG9yeSxcbiAgREVGQVVMVF9UQVJHRVRTLFxuICB0eXBlIFRhcmdldFRyaXBsZSxcbn0gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnXG5pbXBvcnQgeyBuYXBpRW5naW5lUmVxdWlyZW1lbnQgfSBmcm9tICcuLi91dGlscy92ZXJzaW9uLmpzJ1xuXG5jb25zdCBkZWJ1ZyA9IGRlYnVnRmFjdG9yeSgnbmV3JylcblxuZXhwb3J0IGNsYXNzIE5ld0NvbW1hbmQgZXh0ZW5kcyBCYXNlTmV3Q29tbWFuZCB7XG4gIGludGVyYWN0aXZlID0gT3B0aW9uLkJvb2xlYW4oJy0taW50ZXJhY3RpdmUsLWknLCB0cnVlLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnQXNrIHByb2plY3QgYmFzaWMgaW5mb3JtYXRpb24gaW50ZXJhY3RpdmVseSB3aXRob3V0IGp1c3QgdXNpbmcgdGhlIGRlZmF1bHQuJyxcbiAgfSlcblxuICBhc3luYyBleGVjdXRlKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gYXdhaXQgdGhpcy5mZXRjaE9wdGlvbnMoKVxuICAgICAgYXdhaXQgbmV3UHJvamVjdChvcHRpb25zKVxuICAgICAgcmV0dXJuIDBcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkZWJ1ZygnRmFpbGVkIHRvIGNyZWF0ZSBuZXcgcHJvamVjdCcpXG4gICAgICBkZWJ1Zy5lcnJvcihlKVxuICAgICAgcmV0dXJuIDFcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoT3B0aW9ucygpIHtcbiAgICBjb25zdCBjbWRPcHRpb25zID0gc3VwZXIuZ2V0T3B0aW9ucygpXG5cbiAgICBpZiAodGhpcy5pbnRlcmFjdGl2ZSkge1xuICAgICAgY29uc3QgdGFyZ2V0UGF0aDogc3RyaW5nID0gY21kT3B0aW9ucy5wYXRoXG4gICAgICAgID8gY21kT3B0aW9ucy5wYXRoXG4gICAgICAgIDogYXdhaXQgaW5xdWlyZXJQcm9qZWN0UGF0aCgpXG4gICAgICBjbWRPcHRpb25zLnBhdGggPSB0YXJnZXRQYXRoXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jbWRPcHRpb25zLFxuICAgICAgICBuYW1lOiBhd2FpdCB0aGlzLmZldGNoTmFtZShwYXRoLnBhcnNlKHRhcmdldFBhdGgpLmJhc2UpLFxuICAgICAgICBtaW5Ob2RlQXBpVmVyc2lvbjogYXdhaXQgdGhpcy5mZXRjaE5hcGlWZXJzaW9uKCksXG4gICAgICAgIHRhcmdldHM6IGF3YWl0IHRoaXMuZmV0Y2hUYXJnZXRzKCksXG4gICAgICAgIGxpY2Vuc2U6IGF3YWl0IHRoaXMuZmV0Y2hMaWNlbnNlKCksXG4gICAgICAgIGVuYWJsZVR5cGVEZWY6IGF3YWl0IHRoaXMuZmV0Y2hUeXBlRGVmKCksXG4gICAgICAgIGVuYWJsZUdpdGh1YkFjdGlvbnM6IGF3YWl0IHRoaXMuZmV0Y2hHaXRodWJBY3Rpb25zKCksXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNtZE9wdGlvbnNcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hOYW1lKGRlZmF1bHROYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLiQkbmFtZSA/P1xuICAgICAgaW5wdXQoe1xuICAgICAgICBtZXNzYWdlOiAnUGFja2FnZSBuYW1lICh0aGUgbmFtZSBmaWVsZCBpbiB5b3VyIHBhY2thZ2UuanNvbiBmaWxlKScsXG4gICAgICAgIGRlZmF1bHQ6IGRlZmF1bHROYW1lLFxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoTGljZW5zZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBpbnB1dCh7XG4gICAgICBtZXNzYWdlOiAnTGljZW5zZSBmb3Igb3Blbi1zb3VyY2VkIHByb2plY3QnLFxuICAgICAgZGVmYXVsdDogdGhpcy5saWNlbnNlLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoTmFwaVZlcnNpb24oKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gc2VsZWN0KHtcbiAgICAgIG1lc3NhZ2U6ICdNaW5pbXVtIG5vZGUtYXBpIHZlcnNpb24gKHdpdGggbm9kZSB2ZXJzaW9uIHJlcXVpcmVtZW50KScsXG4gICAgICBsb29wOiBmYWxzZSxcbiAgICAgIHBhZ2VTaXplOiAxMCxcbiAgICAgIGNob2ljZXM6IEFycmF5LmZyb20oeyBsZW5ndGg6IDggfSwgKF8sIGkpID0+ICh7XG4gICAgICAgIG5hbWU6IGBuYXBpJHtpICsgMX0gKCR7bmFwaUVuZ2luZVJlcXVpcmVtZW50KGkgKyAxKX0pYCxcbiAgICAgICAgdmFsdWU6IGkgKyAxLFxuICAgICAgfSkpLFxuICAgICAgLy8gY2hvaWNlIGluZGV4XG4gICAgICBkZWZhdWx0OiB0aGlzLm1pbk5vZGVBcGlWZXJzaW9uIC0gMSxcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFRhcmdldHMoKTogUHJvbWlzZTxUYXJnZXRUcmlwbGVbXT4ge1xuICAgIGlmICh0aGlzLmVuYWJsZUFsbFRhcmdldHMpIHtcbiAgICAgIHJldHVybiBBVkFJTEFCTEVfVEFSR0VUUy5jb25jYXQoKVxuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldHMgPSBhd2FpdCBjaGVja2JveCh7XG4gICAgICBsb29wOiBmYWxzZSxcbiAgICAgIG1lc3NhZ2U6ICdDaG9vc2UgdGFyZ2V0KHMpIHlvdXIgY3JhdGUgd2lsbCBiZSBjb21waWxlZCB0bycsXG4gICAgICBjaG9pY2VzOiBBVkFJTEFCTEVfVEFSR0VUUy5tYXAoKHRhcmdldCkgPT4gKHtcbiAgICAgICAgbmFtZTogdGFyZ2V0LFxuICAgICAgICB2YWx1ZTogdGFyZ2V0LFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIGNoZWNrZWQ6IERFRkFVTFRfVEFSR0VUUy5pbmNsdWRlcyh0YXJnZXQpLFxuICAgICAgfSkpLFxuICAgIH0pXG5cbiAgICByZXR1cm4gdGFyZ2V0c1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFR5cGVEZWYoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgZW5hYmxlVHlwZURlZiA9IGF3YWl0IGNvbmZpcm0oe1xuICAgICAgbWVzc2FnZTogJ0VuYWJsZSB0eXBlIGRlZmluaXRpb24gYXV0by1nZW5lcmF0aW9uJyxcbiAgICAgIGRlZmF1bHQ6IHRoaXMuZW5hYmxlVHlwZURlZixcbiAgICB9KVxuXG4gICAgcmV0dXJuIGVuYWJsZVR5cGVEZWZcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hHaXRodWJBY3Rpb25zKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGVuYWJsZUdpdGh1YkFjdGlvbnMgPSBhd2FpdCBjb25maXJtKHtcbiAgICAgIG1lc3NhZ2U6ICdFbmFibGUgR2l0aHViIEFjdGlvbnMgQ0knLFxuICAgICAgZGVmYXVsdDogdGhpcy5lbmFibGVHaXRodWJBY3Rpb25zLFxuICAgIH0pXG5cbiAgICByZXR1cm4gZW5hYmxlR2l0aHViQWN0aW9uc1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlucXVpcmVyUHJvamVjdFBhdGgoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGlucHV0KHtcbiAgICBtZXNzYWdlOiAnVGFyZ2V0IHBhdGggdG8gY3JlYXRlIHRoZSBwcm9qZWN0LCByZWxhdGl2ZSB0byBjd2QuJyxcbiAgfSkudGhlbigocGF0aCkgPT4ge1xuICAgIGlmICghcGF0aCkge1xuICAgICAgcmV0dXJuIGlucXVpcmVyUHJvamVjdFBhdGgoKVxuICAgIH1cbiAgICByZXR1cm4gcGF0aFxuICB9KVxufVxuIiwiaW1wb3J0IHsgcHJlUHVibGlzaCB9IGZyb20gJy4uL2FwaS9wcmUtcHVibGlzaC5qcydcbmltcG9ydCB7IEJhc2VQcmVQdWJsaXNoQ29tbWFuZCB9IGZyb20gJy4uL2RlZi9wcmUtcHVibGlzaC5qcydcblxuZXhwb3J0IGNsYXNzIFByZVB1Ymxpc2hDb21tYW5kIGV4dGVuZHMgQmFzZVByZVB1Ymxpc2hDb21tYW5kIHtcbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGNvbnN0ICducG0nIHwgJ2xlcm5hJyB0byBzdHJpbmdcbiAgICBhd2FpdCBwcmVQdWJsaXNoKHRoaXMuZ2V0T3B0aW9ucygpKVxuICB9XG59XG4iLCJpbXBvcnQgeyBpbnB1dCB9IGZyb20gJ0BpbnF1aXJlci9wcm9tcHRzJ1xuXG5pbXBvcnQgeyByZW5hbWVQcm9qZWN0IH0gZnJvbSAnLi4vYXBpL3JlbmFtZS5qcydcbmltcG9ydCB7IEJhc2VSZW5hbWVDb21tYW5kIH0gZnJvbSAnLi4vZGVmL3JlbmFtZS5qcydcblxuZXhwb3J0IGNsYXNzIFJlbmFtZUNvbW1hbmQgZXh0ZW5kcyBCYXNlUmVuYW1lQ29tbWFuZCB7XG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpXG4gICAgaWYgKCFvcHRpb25zLm5hbWUpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBhd2FpdCBpbnB1dCh7XG4gICAgICAgIG1lc3NhZ2U6IGBFbnRlciB0aGUgbmV3IHBhY2thZ2UgbmFtZSBpbiB0aGUgcGFja2FnZS5qc29uYCxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgb3B0aW9ucy5uYW1lID0gbmFtZVxuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMuYmluYXJ5TmFtZSkge1xuICAgICAgY29uc3QgYmluYXJ5TmFtZSA9IGF3YWl0IGlucHV0KHtcbiAgICAgICAgbWVzc2FnZTogYEVudGVyIHRoZSBuZXcgYmluYXJ5IG5hbWVgLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICBvcHRpb25zLmJpbmFyeU5hbWUgPSBiaW5hcnlOYW1lXG4gICAgfVxuICAgIGF3YWl0IHJlbmFtZVByb2plY3Qob3B0aW9ucylcbiAgfVxufVxuIiwiaW1wb3J0IHsgdW5pdmVyc2FsaXplQmluYXJpZXMgfSBmcm9tICcuLi9hcGkvdW5pdmVyc2FsaXplLmpzJ1xuaW1wb3J0IHsgQmFzZVVuaXZlcnNhbGl6ZUNvbW1hbmQgfSBmcm9tICcuLi9kZWYvdW5pdmVyc2FsaXplLmpzJ1xuXG5leHBvcnQgY2xhc3MgVW5pdmVyc2FsaXplQ29tbWFuZCBleHRlbmRzIEJhc2VVbml2ZXJzYWxpemVDb21tYW5kIHtcbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICBhd2FpdCB1bml2ZXJzYWxpemVCaW5hcmllcyh0aGlzLmdldE9wdGlvbnMoKSlcbiAgfVxufVxuIiwiaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4uL2FwaS92ZXJzaW9uLmpzJ1xuaW1wb3J0IHsgQmFzZVZlcnNpb25Db21tYW5kIH0gZnJvbSAnLi4vZGVmL3ZlcnNpb24uanMnXG5cbmV4cG9ydCBjbGFzcyBWZXJzaW9uQ29tbWFuZCBleHRlbmRzIEJhc2VWZXJzaW9uQ29tbWFuZCB7XG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgYXdhaXQgdmVyc2lvbih0aGlzLmdldE9wdGlvbnMoKSlcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ2xpIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG5pbXBvcnQgeyBjb2xsZWN0QXJ0aWZhY3RzIH0gZnJvbSAnLi9hcGkvYXJ0aWZhY3RzLmpzJ1xuaW1wb3J0IHsgYnVpbGRQcm9qZWN0IH0gZnJvbSAnLi9hcGkvYnVpbGQuanMnXG5pbXBvcnQgeyBjcmVhdGVOcG1EaXJzIH0gZnJvbSAnLi9hcGkvY3JlYXRlLW5wbS1kaXJzLmpzJ1xuaW1wb3J0IHsgbmV3UHJvamVjdCB9IGZyb20gJy4vYXBpL25ldy5qcydcbmltcG9ydCB7IHByZVB1Ymxpc2ggfSBmcm9tICcuL2FwaS9wcmUtcHVibGlzaC5qcydcbmltcG9ydCB7IHJlbmFtZVByb2plY3QgfSBmcm9tICcuL2FwaS9yZW5hbWUuanMnXG5pbXBvcnQgeyB1bml2ZXJzYWxpemVCaW5hcmllcyB9IGZyb20gJy4vYXBpL3VuaXZlcnNhbGl6ZS5qcydcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuL2FwaS92ZXJzaW9uLmpzJ1xuaW1wb3J0IHsgQXJ0aWZhY3RzQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvYXJ0aWZhY3RzLmpzJ1xuaW1wb3J0IHsgQnVpbGRDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9idWlsZC5qcydcbmltcG9ydCB7IENyZWF0ZU5wbURpcnNDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9jcmVhdGUtbnBtLWRpcnMuanMnXG5pbXBvcnQgeyBIZWxwQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvaGVscC5qcydcbmltcG9ydCB7IE5ld0NvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL25ldy5qcydcbmltcG9ydCB7IFByZVB1Ymxpc2hDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9wcmUtcHVibGlzaC5qcydcbmltcG9ydCB7IFJlbmFtZUNvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL3JlbmFtZS5qcydcbmltcG9ydCB7IFVuaXZlcnNhbGl6ZUNvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL3VuaXZlcnNhbGl6ZS5qcydcbmltcG9ydCB7IFZlcnNpb25Db21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy92ZXJzaW9uLmpzJ1xuaW1wb3J0IHsgQ0xJX1ZFUlNJT04gfSBmcm9tICcuL3V0aWxzL21pc2MuanMnXG5cbmV4cG9ydCBjb25zdCBjbGkgPSBuZXcgQ2xpKHtcbiAgYmluYXJ5TmFtZTogJ25hcGknLFxuICBiaW5hcnlWZXJzaW9uOiBDTElfVkVSU0lPTixcbn0pXG5cbmNsaS5yZWdpc3RlcihOZXdDb21tYW5kKVxuY2xpLnJlZ2lzdGVyKEJ1aWxkQ29tbWFuZClcbmNsaS5yZWdpc3RlcihDcmVhdGVOcG1EaXJzQ29tbWFuZClcbmNsaS5yZWdpc3RlcihBcnRpZmFjdHNDb21tYW5kKVxuY2xpLnJlZ2lzdGVyKFVuaXZlcnNhbGl6ZUNvbW1hbmQpXG5jbGkucmVnaXN0ZXIoUmVuYW1lQ29tbWFuZClcbmNsaS5yZWdpc3RlcihQcmVQdWJsaXNoQ29tbWFuZClcbmNsaS5yZWdpc3RlcihWZXJzaW9uQ29tbWFuZClcbmNsaS5yZWdpc3RlcihIZWxwQ29tbWFuZClcblxuLyoqXG4gKlxuICogQHVzYWdlXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IGNsaSA9IG5ldyBOYXBpQ2xpKClcbiAqXG4gKiBjbGkuYnVpbGQoe1xuICogICBjd2Q6ICcvcGF0aC90by95b3VyL3Byb2plY3QnLFxuICogfSlcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgTmFwaUNsaSB7XG4gIGFydGlmYWN0cyA9IGNvbGxlY3RBcnRpZmFjdHNcbiAgbmV3ID0gbmV3UHJvamVjdFxuICBidWlsZCA9IGJ1aWxkUHJvamVjdFxuICBjcmVhdGVOcG1EaXJzID0gY3JlYXRlTnBtRGlyc1xuICBwcmVQdWJsaXNoID0gcHJlUHVibGlzaFxuICByZW5hbWUgPSByZW5hbWVQcm9qZWN0XG4gIHVuaXZlcnNhbGl6ZSA9IHVuaXZlcnNhbGl6ZUJpbmFyaWVzXG4gIHZlcnNpb24gPSB2ZXJzaW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCdWlsZENvbW1hbmQoYXJnczogc3RyaW5nW10pOiBCdWlsZENvbW1hbmQge1xuICByZXR1cm4gY2xpLnByb2Nlc3MoWydidWlsZCcsIC4uLmFyZ3NdKSBhcyBCdWlsZENvbW1hbmRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFydGlmYWN0c0NvbW1hbmQoYXJnczogc3RyaW5nW10pOiBBcnRpZmFjdHNDb21tYW5kIHtcbiAgcmV0dXJuIGNsaS5wcm9jZXNzKFsnYXJ0aWZhY3RzJywgLi4uYXJnc10pIGFzIEFydGlmYWN0c0NvbW1hbmRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNyZWF0ZU5wbURpcnNDb21tYW5kKFxuICBhcmdzOiBzdHJpbmdbXSxcbik6IENyZWF0ZU5wbURpcnNDb21tYW5kIHtcbiAgcmV0dXJuIGNsaS5wcm9jZXNzKFsnY3JlYXRlLW5wbS1kaXJzJywgLi4uYXJnc10pIGFzIENyZWF0ZU5wbURpcnNDb21tYW5kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcmVQdWJsaXNoQ29tbWFuZChhcmdzOiBzdHJpbmdbXSk6IFByZVB1Ymxpc2hDb21tYW5kIHtcbiAgcmV0dXJuIGNsaS5wcm9jZXNzKFsncHJlLXB1Ymxpc2gnLCAuLi5hcmdzXSkgYXMgUHJlUHVibGlzaENvbW1hbmRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlbmFtZUNvbW1hbmQoYXJnczogc3RyaW5nW10pOiBSZW5hbWVDb21tYW5kIHtcbiAgcmV0dXJuIGNsaS5wcm9jZXNzKFsncmVuYW1lJywgLi4uYXJnc10pIGFzIFJlbmFtZUNvbW1hbmRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVuaXZlcnNhbGl6ZUNvbW1hbmQoYXJnczogc3RyaW5nW10pOiBVbml2ZXJzYWxpemVDb21tYW5kIHtcbiAgcmV0dXJuIGNsaS5wcm9jZXNzKFsndW5pdmVyc2FsaXplJywgLi4uYXJnc10pIGFzIFVuaXZlcnNhbGl6ZUNvbW1hbmRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVZlcnNpb25Db21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogVmVyc2lvbkNvbW1hbmQge1xuICByZXR1cm4gY2xpLnByb2Nlc3MoWyd2ZXJzaW9uJywgLi4uYXJnc10pIGFzIFZlcnNpb25Db21tYW5kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdDb21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogTmV3Q29tbWFuZCB7XG4gIHJldHVybiBjbGkucHJvY2VzcyhbJ25ldycsIC4uLmFyZ3NdKSBhcyBOZXdDb21tYW5kXG59XG5cbmV4cG9ydCB7IHBhcnNlVHJpcGxlIH0gZnJvbSAnLi91dGlscy90YXJnZXQuanMnXG5leHBvcnQge1xuICB0eXBlIEdlbmVyYXRlVHlwZURlZk9wdGlvbnMsXG4gIHR5cGUgV3JpdGVKc0JpbmRpbmdPcHRpb25zLFxuICB3cml0ZUpzQmluZGluZyxcbiAgZ2VuZXJhdGVUeXBlRGVmLFxufSBmcm9tICcuL2FwaS9idWlsZC5qcydcbmV4cG9ydCB7IHJlYWROYXBpQ29uZmlnIH0gZnJvbSAnLi91dGlscy9jb25maWcuanMnXG4iLCIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCB7IGNsaSB9IGZyb20gJy4vaW5kZXguanMnXG5cbnZvaWQgY2xpLnJ1bkV4aXQocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKVxuIl0sInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlsxOSwyMCwyMSwyMiwyMywyNCwyNSwyNl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBLElBQXNCLHVCQUF0QixjQUFtRCxRQUFRO0NBQ3pELE9BQU8sUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDO0NBRTlCLE9BQU8sUUFBUSxRQUFRLE1BQU0sRUFDM0IsYUFDRSw2RUFDSCxDQUFDO0NBRUYsTUFBTSxPQUFPLE9BQU8sU0FBUyxRQUFRLEtBQUssRUFBRSxFQUMxQyxhQUNFLHNIQUNILENBQUM7Q0FFRixhQUFzQixPQUFPLE9BQU8sb0JBQW9CLEVBQ3RELGFBQWEsbUNBQ2QsQ0FBQztDQUVGLGtCQUFrQixPQUFPLE9BQU8sdUJBQXVCLGdCQUFnQixFQUNyRSxhQUFhLDBCQUNkLENBQUM7Q0FFRixZQUFZLE9BQU8sT0FBTyxzQkFBc0IsZUFBZSxFQUM3RCxhQUNFLGlHQUNILENBQUM7Q0FFRixTQUFTLE9BQU8sT0FBTyxhQUFhLE9BQU8sRUFDekMsYUFBYSxpREFDZCxDQUFDO0NBRUYsaUJBQTBCLE9BQU8sT0FBTyxzQkFBc0IsRUFDNUQsYUFDRSxtRkFDSCxDQUFDO0NBRUYsYUFBYTtBQUNYLFNBQU87R0FDTCxLQUFLLEtBQUs7R0FDVixZQUFZLEtBQUs7R0FDakIsaUJBQWlCLEtBQUs7R0FDdEIsV0FBVyxLQUFLO0dBQ2hCLFFBQVEsS0FBSztHQUNiLGdCQUFnQixLQUFLO0dBQ3RCOzs7QUEwQ0wsU0FBZ0IsNkJBQTZCLFNBQTJCO0FBQ3RFLFFBQU87RUFDTCxLQUFLLFFBQVEsS0FBSztFQUNsQixpQkFBaUI7RUFDakIsV0FBVztFQUNYLFFBQVE7RUFDUixHQUFHO0VBQ0o7Ozs7O0FDckZILE1BQWEsZ0JBQWdCLGNBQXNCO0NBQ2pELE1BQU1BLFdBQVEsWUFBWSxRQUFRLGFBQWEsRUFDN0MsWUFBWSxFQUVWLEVBQUUsR0FBRztBQUNILFNBQU8sT0FBTyxNQUFNLEVBQUU7SUFFekIsRUFDRixDQUFDO0FBRUYsVUFBTSxRQUFRLEdBQUcsU0FDZixRQUFRLE1BQU0sT0FBTyxNQUFNLE9BQU8sUUFBUSxTQUFTLENBQUMsRUFBRSxHQUFHLEtBQUs7QUFDaEUsVUFBTSxRQUFRLEdBQUcsU0FDZixRQUFRLE1BQU0sT0FBTyxNQUFNLE9BQU8sU0FBUyxZQUFZLENBQUMsRUFBRSxHQUFHLEtBQUs7QUFDcEUsVUFBTSxTQUFTLEdBQUcsU0FDaEIsUUFBUSxNQUNOLE9BQU8sTUFBTSxPQUFPLE1BQU0sVUFBVSxDQUFDLEVBQ3JDLEdBQUcsS0FBSyxLQUFLLFFBQ1gsZUFBZSxRQUFTLElBQUksU0FBUyxJQUFJLFVBQVcsSUFDckQsQ0FDRjtBQUVILFFBQU9BOztBQUVULE1BQWFBLFVBQVEsYUFBYSxRQUFROzs7O2dCQ2pDN0I7Ozs7QUNZYixNQUFhLGdCQUFnQjtBQUM3QixNQUFhLGlCQUFpQjtBQUM5QixNQUFhLGNBQWM7QUFDM0IsTUFBYSxnQkFBZ0I7QUFDN0IsTUFBYSxhQUFhO0FBQzFCLE1BQWEsWUFBWTtBQUN6QixNQUFhLGVBQWU7QUFFNUIsU0FBZ0IsV0FBVyxRQUFnQztBQUN6RCxRQUFPLE9BQU9DLE9BQUssQ0FBQyxXQUNaLFlBQ0EsTUFDUDs7QUFHSCxlQUFzQixlQUFlLFFBQWM7QUFDakQsS0FBSTtBQUVGLFVBRGMsTUFBTSxVQUFVQSxPQUFLLEVBQ3RCLGFBQWE7U0FDcEI7QUFDTixTQUFPOzs7QUFJWCxTQUFnQkMsT0FBMkIsR0FBTSxHQUFHLE1BQXVCO0FBQ3pFLFFBQU8sS0FBSyxRQUFRLEtBQUssUUFBUTtBQUMvQixNQUFJLE9BQU8sRUFBRTtBQUNiLFNBQU87SUFDTixFQUFFLENBQU07O0FBR2IsZUFBc0Isa0JBQ3BCLFFBQ0EsU0FDQTtBQUVBLEtBQUksQ0FEVyxNQUFNLFdBQVdELE9BQUssRUFDeEI7QUFDWCxVQUFNLG1CQUFtQkEsU0FBTztBQUNoQzs7Q0FFRixNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sY0FBY0EsUUFBTSxPQUFPLENBQUM7QUFDekQsT0FBTSxlQUFlQSxRQUFNLEtBQUssVUFBVTtFQUFFLEdBQUc7RUFBSyxHQUFHO0VBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQzs7QUFHN0UsTUFBYSxjQUFjRTs7OztBQ2xEM0IsTUFBTSxjQUFjLElBQUksSUFBSSxDQUFDLFdBQVcsT0FBTyxDQUFDO0FBRWhELE1BQWEsb0JBQW9CO0NBQy9CO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNEO0FBSUQsTUFBYSxrQkFBa0I7Q0FDN0I7Q0FDQTtDQUNBO0NBQ0E7Q0FDRDtBQUVELE1BQWFDLGdCQUF3QztDQUNuRCw4QkFBOEI7Q0FFOUIsaUNBQWlDO0NBQ2pDLCtCQUErQjtDQUMvQixpQ0FBaUM7Q0FDakMsMkJBQTJCO0NBQzVCO0FBb0JELE1BQU1DLGdCQUE0QztDQUNoRCxRQUFRO0NBQ1IsU0FBUztDQUNULE1BQU07Q0FDTixPQUFPO0NBQ1AsYUFBYTtDQUNiLFdBQVc7Q0FDWCxhQUFhO0NBQ2Q7QUFZRCxNQUFNQyxvQkFBOEM7Q0FDbEQsT0FBTztDQUNQLFNBQVM7Q0FDVCxRQUFRO0NBQ1IsU0FBUztDQUNULE1BQU07Q0FDUDtBQUVELE1BQWFDLHFCQUE4RCxFQUN6RSxRQUFRLENBQUMsT0FBTyxRQUFRLEVBQ3pCOzs7Ozs7Ozs7OztBQW9CRCxTQUFnQixZQUFZLFdBQTJCO0FBQ3JELEtBQ0UsY0FBYyxpQkFDZCxjQUFjLGtDQUNkLFVBQVUsV0FBVyxlQUFlLENBRXBDLFFBQU87RUFDTCxRQUFRO0VBQ1IsaUJBQWlCO0VBQ2pCLFVBQVU7RUFDVixNQUFNO0VBQ04sS0FBSztFQUNOO0NBS0gsTUFBTSxXQUhTLFVBQVUsU0FBUyxPQUFPLEdBQ3JDLEdBQUcsVUFBVSxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQzFCLFdBQ21CLE1BQU0sSUFBSTtDQUNqQyxJQUFJQztDQUNKLElBQUlDO0NBQ0osSUFBSUMsTUFBcUI7QUFDekIsS0FBSSxRQUFRLFdBQVcsRUFHcEIsRUFBQyxLQUFLLE9BQU87S0FNYixFQUFDLE9BQU8sS0FBSyxNQUFNLFFBQVE7QUFHOUIsS0FBSSxPQUFPLFlBQVksSUFBSSxJQUFJLEVBQUU7QUFDL0IsUUFBTTtBQUNOLFFBQU07O0NBRVIsTUFBTSxXQUFXLGtCQUFrQixRQUFTO0NBQzVDLE1BQU0sT0FBTyxjQUFjLFFBQVM7QUFFcEMsUUFBTztFQUNMLFFBQVE7RUFDUixpQkFBaUIsTUFBTSxHQUFHLFNBQVMsR0FBRyxLQUFLLEdBQUcsUUFBUSxHQUFHLFNBQVMsR0FBRztFQUNyRTtFQUNBO0VBQ0E7RUFDRDs7QUFHSCxTQUFnQix5QkFBaUM7Q0FDL0MsTUFBTSxPQUFPLFNBQVMsYUFBYSxFQUNqQyxLQUFLLFFBQVEsS0FDZCxDQUFDLENBQ0MsU0FBUyxPQUFPLENBQ2hCLE1BQU0sS0FBSyxDQUNYLE1BQU0sU0FBUyxLQUFLLFdBQVcsU0FBUyxDQUFDO0NBQzVDLE1BQU0scURBQVMsS0FBTSxNQUFNLEVBQWdCO0FBQzNDLEtBQUksQ0FBQyxPQUNILE9BQU0sSUFBSSxVQUFVLHdDQUF3QztBQUU5RCxRQUFPLFlBQVksT0FBTzs7QUFHNUIsU0FBZ0IsZ0JBQWdCLFFBQW9DO0FBQ2xFLFFBQU8sY0FBYzs7QUFHdkIsU0FBZ0IsZUFBZSxRQUF3QjtBQUNyRCxRQUFPLE9BQU8sUUFBUSxNQUFNLElBQUksQ0FBQyxhQUFhOzs7OztBQy9MaEQsSUFBWSxzREFBTDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBTUYsTUFBTSxzQkFBc0IsSUFBSSxJQUF5QjtDQUN2RCxDQUFDLFlBQVksT0FBTyx5QkFBeUI7Q0FDN0MsQ0FBQyxZQUFZLE9BQU8sMEJBQTBCO0NBQzlDLENBQUMsWUFBWSxPQUFPLG9DQUFvQztDQUN4RCxDQUFDLFlBQVksT0FBTyw0QkFBNEI7Q0FDaEQsQ0FBQyxZQUFZLE9BQU8sNkJBQTZCO0NBQ2pELENBQUMsWUFBWSxPQUFPLDZCQUE2QjtDQUNqRCxDQUFDLFlBQVksT0FBTyx1Q0FBdUM7Q0FDM0QsQ0FBQyxZQUFZLE9BQU8sdUNBQXVDO0NBQzNELENBQUMsWUFBWSxPQUFPLDRCQUE0QjtDQUNqRCxDQUFDO0FBUUYsU0FBUyxpQkFBaUIsR0FBd0I7Q0FDaEQsTUFBTSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0M7QUFFMUQsS0FBSSxDQUFDLFFBQ0gsT0FBTSxJQUFJLE1BQU0sa0NBQWtDLEVBQUU7Q0FHdEQsTUFBTSxHQUFHLE9BQU8sT0FBTyxTQUFTO0FBRWhDLFFBQU87RUFDTCxPQUFPLFNBQVMsTUFBTTtFQUN0QixPQUFPLFNBQVMsTUFBTTtFQUN0QixPQUFPLFNBQVMsTUFBTTtFQUN2Qjs7QUFHSCxTQUFTLHFCQUFxQixhQUF5QztDQUNyRSxNQUFNLGNBQWMsb0JBQW9CLElBQUksWUFBWTtBQUV4RCxLQUFJLENBQUMsWUFDSCxRQUFPLENBQUMsaUJBQWlCLFNBQVMsQ0FBQztBQUdyQyxRQUFPLFlBQVksTUFBTSxJQUFJLENBQUMsSUFBSSxpQkFBaUI7O0FBR3JELFNBQVMsb0JBQW9CLFVBQWlDO0NBQzVELE1BQU1DLGVBQXlCLEVBQUU7QUFDakMsVUFBUyxTQUFTLEdBQUcsTUFBTTtFQUN6QixJQUFJLE1BQU07QUFDVixNQUFJLE1BQU0sR0FBRztHQUNYLE1BQU0sY0FBYyxTQUFTLElBQUk7QUFDakMsVUFBTyxLQUFLLFlBQVksUUFBUTs7QUFHbEMsU0FBTyxHQUFHLE1BQU0sSUFBSSxLQUFLLE9BQU8sS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFO0FBQzdELGVBQWEsS0FBSyxJQUFJO0dBQ3RCO0FBRUYsUUFBTyxhQUFhLEtBQUssSUFBSTs7QUFHL0IsU0FBZ0Isc0JBQXNCLGFBQWtDO0FBQ3RFLFFBQU8sb0JBQW9CLHFCQUFxQixZQUFZLENBQUM7Ozs7O0FDMUIvRCxlQUFzQixjQUFjLGNBQXNCO0FBQ3hELEtBQUksQ0FBQyxHQUFHLFdBQVcsYUFBYSxDQUM5QixPQUFNLElBQUksTUFBTSwrQkFBK0IsZUFBZTtDQUdoRSxNQUFNLGVBQWUsTUFDbkIsU0FDQTtFQUFDO0VBQVk7RUFBbUI7RUFBYztFQUFvQjtFQUFJLEVBQ3RFLEVBQUUsT0FBTyxRQUFRLENBQ2xCO0NBRUQsSUFBSSxTQUFTO0NBQ2IsSUFBSSxTQUFTO0NBQ2IsSUFBSSxTQUFTO0FBR2IsY0FBYSxPQUFPLEdBQUcsU0FBUyxTQUFTO0FBQ3ZDLFlBQVU7R0FDVjtBQUVGLGNBQWEsT0FBTyxHQUFHLFNBQVMsU0FBUztBQUN2QyxZQUFVO0dBQ1Y7QUFFRixPQUFNLElBQUksU0FBZSxjQUFZO0FBQ25DLGVBQWEsR0FBRyxVQUFVLFNBQVM7QUFDakMsWUFBUyxRQUFRO0FBQ2pCLGNBQVM7SUFDVDtHQUNGO0FBS0YsS0FBSSxXQUFXLEdBQUc7RUFDaEIsTUFBTSxnQkFBZ0IsbUNBQW1DO0FBQ3pELFFBQU0sSUFBSSxNQUFNLEdBQUcsY0FBYyx5QkFBeUIsVUFBVSxFQUNsRSxPQUFPLElBQUksTUFBTSxjQUFjLEVBQ2hDLENBQUM7O0FBR0osS0FBSTtBQUNGLFNBQU8sS0FBSyxNQUFNLE9BQU87VUFDbEIsR0FBRztBQUNWLFFBQU0sSUFBSSxNQUFNLHVDQUF1QyxFQUFFLE9BQU8sR0FBRyxDQUFDOzs7Ozs7QUNnRXhFLGVBQXNCLGVBQ3BCLFFBQ0EsWUFDcUI7QUFDckIsS0FBSSxjQUFjLENBQUUsTUFBTSxXQUFXLFdBQVcsQ0FDOUMsT0FBTSxJQUFJLE1BQU0sK0JBQStCLGFBQWE7QUFFOUQsS0FBSSxDQUFFLE1BQU0sV0FBV0MsT0FBSyxDQUMxQixPQUFNLElBQUksTUFBTSw2QkFBNkJBLFNBQU87Q0FHdEQsTUFBTSxVQUFVLE1BQU0sY0FBY0EsUUFBTSxPQUFPO0NBQ2pELElBQUk7QUFDSixLQUFJO0FBQ0YsWUFBVSxLQUFLLE1BQU0sUUFBUTtVQUN0QixHQUFHO0FBQ1YsUUFBTSxJQUFJLE1BQU0sbUNBQW1DQSxVQUFRLEVBQ3pELE9BQU8sR0FDUixDQUFDOztDQUdKLElBQUlDO0FBQ0osS0FBSSxZQUFZO0VBQ2QsTUFBTSxnQkFBZ0IsTUFBTSxjQUFjLFlBQVksT0FBTztBQUM3RCxNQUFJO0FBQ0YscUJBQWtCLEtBQUssTUFBTSxjQUFjO1dBQ3BDLEdBQUc7QUFDVixTQUFNLElBQUksTUFBTSxxQ0FBcUMsY0FBYyxFQUNqRSxPQUFPLEdBQ1IsQ0FBQzs7O0NBSU4sTUFBTSxpQkFBaUIsUUFBUSxRQUFRLEVBQUU7QUFDekMsS0FBSSxRQUFRLFFBQVEsaUJBQWlCO0VBQ25DLE1BQU0sY0FBYyxVQUFVRCxPQUFLO0VBQ25DLE1BQU0sc0JBQXNCLFVBQVUsV0FBWTtBQUNsRCxVQUFRLEtBQ04sT0FDRSxzQkFBc0IsWUFBWSx3QkFBd0Isb0JBQW9CLHlEQUMvRSxDQUNGOztBQUVILEtBQUksZ0JBQ0YsUUFBTyxPQUFPLGdCQUFnQixnQkFBZ0I7Q0FFaEQsTUFBTUUsYUFBeUIsTUFDN0I7RUFDRSxZQUFZO0VBQ1osYUFBYSxRQUFRO0VBQ3JCLFNBQVMsRUFBRTtFQUNYLGFBQWE7RUFDYixXQUFXO0VBQ1osRUFDRCxLQUFLLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUNsQztDQUVELElBQUlDLFVBQW9CLGVBQWUsV0FBVyxFQUFFO0FBR3BELHFFQUFJLGVBQWdCLE1BQU07QUFDeEIsVUFBUSxLQUNOLE9BQ0UscUVBQ0QsQ0FDRjtBQUNELGFBQVcsYUFBYSxlQUFlOztBQUd6QyxLQUFJLENBQUMsUUFBUSxRQUFROztFQUNuQixJQUFJLG1CQUFtQjtFQUN2QixNQUFNLFVBQVUsT0FDZCxxRUFDRDtBQUNELCtCQUFJLGVBQWUsdUZBQVMsVUFBVTtBQUNwQyxzQkFBbUI7QUFDbkIsV0FBUSxLQUFLLFFBQVE7QUFDckIsYUFBVSxRQUFRLE9BQU8sZ0JBQWdCOztBQUczQyxnQ0FBSSxlQUFlLDJHQUFTLDRGQUFZLFFBQVE7QUFDOUMsYUFBVSxRQUFRLE9BQU8sZUFBZSxRQUFRLFdBQVc7QUFDM0QsT0FBSSxDQUFDLGlCQUNILFNBQVEsS0FBSyxRQUFROzs7QUFPM0IsS0FEc0IsSUFBSSxJQUFJLFFBQVEsQ0FDcEIsU0FBUyxRQUFRLFFBQVE7RUFDekMsTUFBTSxrQkFBa0IsUUFBUSxNQUM3QixRQUFRLFVBQVUsUUFBUSxRQUFRLE9BQU8sS0FBSyxNQUNoRDtBQUNELFFBQU0sSUFBSSxNQUFNLHNDQUFzQyxrQkFBa0I7O0FBRzFFLFlBQVcsVUFBVSxRQUFRLElBQUksWUFBWTtBQUU3QyxRQUFPOzs7OztBQzdQVCxTQUFnQixzQkFBc0IsTUFBYyxLQUFhO0FBQy9ELEtBQUksa0JBQWtCLElBQUksRUFBRTtBQUMxQixVQUFNLHNDQUFzQyxLQUFLO0FBQ2pEOztBQUdGLEtBQUk7QUFDRixVQUFNLCtCQUErQixLQUFLO0FBQzFDLFdBQVMsaUJBQWlCLFFBQVEsRUFDaEMsT0FBTyxXQUNSLENBQUM7VUFDSyxHQUFHO0FBQ1YsUUFBTSxJQUFJLE1BQU0sbUNBQW1DLFFBQVEsRUFDekQsT0FBTyxHQUNSLENBQUM7OztBQUlOLFNBQVMsa0JBQWtCLEtBQWE7QUFDdEMsU0FBTSw4QkFBOEIsSUFBSTtBQUN4QyxLQUFJO0FBQ0YsV0FBUyxjQUFjLE9BQU8sRUFDNUIsT0FBTyxVQUNSLENBQUM7QUFDRixVQUFNLDZCQUE2QixJQUFJO0FBQ3ZDLFNBQU87U0FDRDtBQUNOLFVBQU0saUNBQWlDLElBQUk7QUFDM0MsU0FBTzs7Ozs7O0FDNUJYLE1BQU0sc0JBQXNCO0FBQzVCLE1BQWEsMEJBQTBCOzs7QUFJdkMsSUFBSyxzREFBTDtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7RUFURztBQXNCTCxTQUFTLFlBQ1AsTUFDQSxXQUNBLE9BQ0EsVUFBVSxPQUNGO0NBQ1IsSUFBSSxJQUFJLEtBQUssVUFBVTtBQUN2QixTQUFRLEtBQUssTUFBYjtFQUNFLEtBQUssWUFBWTtBQUNmLFFBQUssb0JBQW9CLEtBQUssS0FBSyxNQUFNLEtBQUssSUFBSTtBQUNsRDtFQUVGLEtBQUssWUFBWTtBQUNmLFFBQUssZUFBZSxLQUFLLEtBQUssT0FBTyxLQUFLO0FBQzFDO0VBRUYsS0FBSyxZQUFZO0dBQ2YsTUFBTSxXQUFXLFlBQVksZUFBZTtBQUM1QyxRQUFLLEdBQUcsY0FBYyxRQUFRLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxLQUFLLE1BQU0sS0FBSyxJQUFJO0FBQ3ZFO0VBRUYsS0FBSyxZQUFZO0FBQ2YsT0FBSSxVQUNGLE1BQUssR0FBRyxjQUFjLFFBQVEsQ0FBQyxjQUFjLEtBQUssS0FBSyxNQUFNLEtBQUssSUFBSTtPQUV0RSxNQUFLLGVBQWUsS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLFdBQVcsUUFBUSxHQUFHLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQztBQUUxRjtFQUVGLEtBQUssWUFBWTtHQUNmLE1BQU0sYUFBYSxLQUFLLFVBQVUsWUFBWSxLQUFLLFlBQVk7QUFDL0QsT0FBSSxLQUFLLFNBQVM7SUFFaEIsTUFBTSxlQUFlLEtBQUssUUFBUSxNQUFNLGtCQUFrQjtBQUMxRCxRQUFJLGNBQWM7S0FDaEIsTUFBTSxDQUFDLEdBQUcsU0FBUyxTQUFTLGFBQWEsR0FDdEMsTUFBTSxJQUFJLENBQ1YsS0FBSyxNQUFNLEVBQUUsTUFBTSxDQUFDO0FBQ3ZCLFVBQUssTUFDSCxLQUFLLE1BQ0wsa0JBQWtCLE1BQU0sb0JBQW9CLEVBQUUsSUFBSSxRQUFROzs7QUFHaEUsUUFBSyxHQUFHLGNBQWMsUUFBUSxDQUFDLFNBQVMsS0FBSyxPQUFPLFdBQVcsTUFBTSxLQUFLLElBQUk7QUFDOUUsT0FBSSxLQUFLLGlCQUFpQixLQUFLLGtCQUFrQixLQUFLLEtBQ3BELE1BQUssaUJBQWlCLEtBQUssY0FBYyxLQUFLLEtBQUs7QUFFckQ7RUFFRixLQUFLLFlBQVk7QUFDZixRQUFLLEdBQUcsY0FBYyxRQUFRLENBQUMsR0FBRyxLQUFLO0FBQ3ZDO0VBRUYsUUFDRSxNQUFLLEtBQUs7O0FBR2QsUUFBTyxtQkFBbUIsR0FBRyxNQUFNOztBQUdyQyxTQUFTLGNBQWMsU0FBMEI7QUFDL0MsS0FBSSxRQUNGLFFBQU87QUFHVCxRQUFPOztBQUdULGVBQXNCLGVBQ3BCLHNCQUNBLFdBQ0E7Q0FDQSxNQUFNQyxVQUFvQixFQUFFO0NBRTVCLE1BQU0sY0FBYyxrQkFEUCxNQUFNLHlCQUF5QixxQkFBcUIsQ0FDdEI7QUF1QzNDLFFBQU87RUFDTCxLQXJDQSxPQUFPLE1BQU0sS0FBSyxZQUFZLEVBQUUsRUFBRSxDQUFDLGVBQWUsVUFBVSxDQUFDLENBQzFELEtBQUssQ0FBQyxXQUFXLFVBQVU7QUFDMUIsT0FBSSxjQUFjLG9CQUNoQixRQUFPLEtBQ0osS0FBSyxRQUFRO0FBQ1osWUFBUSxJQUFJLE1BQVo7S0FDRSxLQUFLLFlBQVk7S0FDakIsS0FBSyxZQUFZO0tBQ2pCLEtBQUssWUFBWTtLQUNqQixLQUFLLFlBQVk7S0FDakIsS0FBSyxZQUFZO0FBQ2YsY0FBUSxLQUFLLElBQUksS0FBSztBQUN0QixVQUFJLElBQUksaUJBQWlCLElBQUksa0JBQWtCLElBQUksS0FDakQsU0FBUSxLQUFLLElBQUksY0FBYztBQUVqQztLQUVGLFFBQ0U7O0FBRUosV0FBTyxZQUFZLEtBQUssV0FBVyxFQUFFO0tBQ3JDLENBQ0QsS0FBSyxPQUFPO1FBQ1Y7QUFDTCxZQUFRLEtBQUssVUFBVTtJQUN2QixJQUFJLGNBQWM7QUFDbEIsbUJBQWUsNEJBQTRCLFVBQVU7QUFDckQsU0FBSyxNQUFNLE9BQU8sS0FDaEIsZ0JBQWUsWUFBWSxLQUFLLFdBQVcsR0FBRyxLQUFLLEdBQUc7QUFFeEQsbUJBQWU7QUFDZixXQUFPOztJQUVULENBQ0QsS0FBSyxPQUFPLEdBQUc7RUFJbEI7RUFDRDs7QUFHSCxlQUFlLHlCQUF5QixNQUFjO0FBdUJwRCxTQXRCZ0IsTUFBTSxjQUFjLE1BQU0sT0FBTyxFQUc5QyxNQUFNLEtBQUssQ0FDWCxPQUFPLFFBQVEsQ0FDZixLQUFLLFNBQVM7QUFDYixTQUFPLEtBQUssTUFBTTtFQUNsQixNQUFNLFNBQVMsS0FBSyxNQUFNLEtBQUs7QUFFL0IsTUFBSSxPQUFPLE9BQ1QsUUFBTyxTQUFTLE9BQU8sT0FBTyxRQUFRLFFBQVEsS0FBSztBQUlyRCxNQUFJLE9BQU8sSUFDVCxRQUFPLE1BQU0sT0FBTyxJQUFJLFFBQVEsUUFBUSxLQUFLO0FBRS9DLFNBQU87R0FDUCxDQUlRLE1BQU0sR0FBRyxNQUFNO0FBQ3pCLE1BQUksRUFBRSxTQUFTLFlBQVksUUFBUTtBQUNqQyxPQUFJLEVBQUUsU0FBUyxZQUFZLE9BQ3pCLFFBQU8sRUFBRSxLQUFLLGNBQWMsRUFBRSxLQUFLO0FBRXJDLFVBQU87YUFDRSxFQUFFLFNBQVMsWUFBWSxPQUNoQyxRQUFPO01BRVAsUUFBTyxFQUFFLEtBQUssY0FBYyxFQUFFLEtBQUs7R0FFckM7O0FBR0osU0FBUyxrQkFBa0IsTUFBaUQ7Q0FDMUUsTUFBTSxtQ0FBbUIsSUFBSSxLQUE0QjtDQUN6RCxNQUFNLDRCQUFZLElBQUksS0FBMEI7QUFFaEQsTUFBSyxNQUFNLE9BQU8sTUFBTTtFQUN0QixNQUFNLFlBQVksSUFBSSxVQUFVO0FBQ2hDLE1BQUksQ0FBQyxpQkFBaUIsSUFBSSxVQUFVLENBQ2xDLGtCQUFpQixJQUFJLFdBQVcsRUFBRSxDQUFDO0VBR3JDLE1BQU0sUUFBUSxpQkFBaUIsSUFBSSxVQUFVO0FBRTdDLE1BQUksSUFBSSxTQUFTLFlBQVksUUFBUTtBQUNuQyxTQUFNLEtBQUssSUFBSTtBQUNmLGFBQVUsSUFBSSxJQUFJLE1BQU0sSUFBSTthQUNuQixJQUFJLFNBQVMsWUFBWSxTQUFTO0dBQzNDLE1BQU0sV0FBVyxVQUFVLElBQUksSUFBSSxLQUFLO0FBQ3hDLE9BQUksU0FDRixVQUFTLFVBQVUsSUFBSTthQUVoQixJQUFJLFNBQVMsWUFBWSxNQUFNO0dBRXhDLE1BQU0sV0FBVyxVQUFVLElBQUksSUFBSSxLQUFLO0FBQ3hDLE9BQUksVUFBVTtBQUNaLFFBQUksU0FBUyxJQUNYLFVBQVMsT0FBTztBQUdsQixhQUFTLE9BQU8sSUFBSTtBQUVwQixRQUFJLFNBQVMsSUFDWCxVQUFTLE1BQU0sU0FBUyxJQUFJLFFBQVEsUUFBUSxLQUFLOztRQUlyRCxPQUFNLEtBQUssSUFBSTs7QUFJbkIsUUFBTzs7QUFHVCxTQUFnQixtQkFBbUIsS0FBYSxPQUF1QjtDQUNyRSxJQUFJLGVBQWU7QUF5Q25CLFFBeENlLElBQ1osTUFBTSxLQUFLLENBQ1gsS0FBSyxTQUFTO0FBQ2IsU0FBTyxLQUFLLE1BQU07QUFDbEIsTUFBSSxTQUFTLEdBQ1gsUUFBTztFQUdULE1BQU0sdUJBQXVCLEtBQUssV0FBVyxJQUFJO0VBQ2pELE1BQU0sbUJBQW1CLEtBQUssU0FBUyxJQUFJO0VBQzNDLE1BQU0sbUJBQW1CLEtBQUssU0FBUyxJQUFJO0VBQzNDLE1BQU0sb0JBQW9CLEtBQUssU0FBUyxJQUFJO0VBQzVDLE1BQU0sZ0JBQWdCLEtBQUssV0FBVyxJQUFJO0VBRTFDLElBQUksY0FBYztBQUNsQixPQUFLLG9CQUFvQixzQkFBc0IsQ0FBQyxzQkFBc0I7QUFDcEUsbUJBQWdCO0FBQ2hCLG1CQUFnQixlQUFlLEtBQUs7U0FDL0I7QUFDTCxPQUNFLG9CQUNBLGVBQWUsS0FDZixDQUFDLHdCQUNELENBQUMsY0FFRCxpQkFBZ0I7QUFFbEIsa0JBQWUsZUFBZTs7QUFHaEMsTUFBSSxxQkFDRixnQkFBZTtBQUtqQixTQUZVLEdBQUcsSUFBSSxPQUFPLFlBQVksR0FBRztHQUd2QyxDQUNELEtBQUssS0FBSzs7Ozs7QUNuUWYsZUFBc0IsV0FBVyxTQUE2QjtDQUM1RCxNQUFNLGVBQWUsR0FBRyxVQUFvQixRQUFRLFFBQVEsS0FBSyxHQUFHLE1BQU07QUFLMUUsUUFKZSxNQUFNLGVBQ25CLFlBQVksUUFBUSxtQkFBbUIsZUFBZSxFQUN0RCxRQUFRLGFBQWEsWUFBWSxRQUFRLFdBQVcsR0FBRyxPQUN4RDs7Ozs7QUNFSCxNQUFNQyxVQUFRLGFBQWEsWUFBWTtBQUV2QyxlQUFzQixpQkFBaUIsYUFBK0I7Q0FDcEUsTUFBTSxVQUFVLDZCQUE2QixZQUFZO0NBRXpELE1BQU0sZUFBZSxHQUFHLFVBQW9CLFFBQVEsUUFBUSxLQUFLLEdBQUcsTUFBTTtDQUMxRSxNQUFNLGtCQUFrQixZQUFZLFFBQVEsZ0JBQWdCO0NBQzVELE1BQU0sRUFBRSxTQUFTLFlBQVksZ0JBQWdCLE1BQU0sZUFDakQsaUJBQ0EsUUFBUSxhQUFhLFlBQVksUUFBUSxXQUFXLEdBQUcsT0FDeEQ7Q0FFRCxNQUFNLFdBQVcsUUFBUSxLQUFLLGFBQzVCLEtBQUssUUFBUSxLQUFLLFFBQVEsUUFBUSxTQUFTLGdCQUFnQixDQUM1RDtDQUVELE1BQU0sc0JBQXNCLElBQUksSUFDOUIsUUFDRyxRQUFRLGFBQWEsU0FBUyxTQUFTLFlBQVksQ0FDbkQsU0FBUyxNQUNSOztxREFBbUIsRUFBRSx5RkFBVyxLQUFLLE1BQU0sR0FBRyxFQUFFLFNBQVMsR0FBRyxJQUFJO0dBQ2pFLENBQ0EsT0FBTyxRQUFRLENBQ25CO0FBRUQsT0FBTSxvQkFBb0IsS0FBSyxRQUFRLEtBQUssUUFBUSxVQUFVLENBQUMsQ0FBQyxNQUM3RCxXQUNDLFFBQVEsSUFDTixPQUFPLElBQUksT0FBTyxhQUFhO0FBQzdCLFVBQU0sS0FBSyxTQUFTLE9BQU8sYUFBYSxTQUFTLENBQUMsR0FBRztFQUNyRCxNQUFNLGdCQUFnQixNQUFNLGNBQWMsU0FBUztFQUNuRCxNQUFNLGFBQWEsTUFBTSxTQUFTO0VBQ2xDLE1BQU0sUUFBUSxXQUFXLEtBQUssTUFBTSxJQUFJO0VBQ3hDLE1BQU0sa0JBQWtCLE1BQU0sS0FBSztFQUNuQyxNQUFNLGNBQWMsTUFBTSxLQUFLLElBQUk7QUFFbkMsTUFBSSxnQkFBZ0IsWUFBWTtBQUM5QixXQUFNLEtBQ0osSUFBSSxZQUFZLHlCQUF5QixXQUFXLFNBQ3JEO0FBQ0Q7O0VBRUYsTUFBTUMsUUFBTSxTQUFTLE1BQU0sVUFBUUEsTUFBSSxTQUFTLGdCQUFnQixDQUFDO0FBQ2pFLE1BQUksQ0FBQ0EsU0FBTyxvQkFBb0IsSUFBSSxnQkFBZ0IsRUFBRTtBQUNwRCxXQUFNLEtBQ0osSUFBSSxnQkFBZ0IsaUVBQ3JCO0FBQ0Q7O0FBRUYsTUFBSSxDQUFDQSxNQUNILE9BQU0sSUFBSSxNQUFNLHlCQUF5QixXQUFXO0VBR3RELE1BQU0sZUFBZSxLQUFLQSxPQUFLLFdBQVcsS0FBSztBQUMvQyxVQUFNLEtBQ0osMEJBQTBCLE9BQU8sYUFBYSxhQUFhLENBQUMsR0FDN0Q7QUFDRCxRQUFNLGVBQWUsY0FBYyxjQUFjO0VBQ2pELE1BQU0sb0JBQW9CLEtBQ3hCLE1BQU0sZ0JBQWdCLENBQUMsS0FDdkIsV0FBVyxLQUNaO0FBQ0QsVUFBTSxLQUNKLDBCQUEwQixPQUFPLGFBQWEsa0JBQWtCLENBQUMsR0FDbEU7QUFDRCxRQUFNLGVBQWUsbUJBQW1CLGNBQWM7R0FDdEQsQ0FDSCxDQUNKO0NBRUQsTUFBTSxhQUFhLFFBQVEsTUFBTSxNQUFNLEVBQUUsYUFBYSxPQUFPO0FBQzdELEtBQUksWUFBWTtFQUNkLE1BQU0sVUFBVSxLQUNkLFFBQVEsS0FDUixRQUFRLFFBQ1IsV0FBVyxnQkFDWjtFQUNELE1BQU0sVUFBVSxLQUNkLFFBQVEsa0JBQWtCLFFBQVEsS0FDbEMsR0FBRyxXQUFXLFdBQ2Y7RUFDRCxNQUFNLGFBQWEsS0FDakIsUUFBUSxrQkFBa0IsUUFBUSxLQUNsQyxrQkFDRDtFQUNELE1BQU0sZUFBZSxLQUNuQixRQUFRLGtCQUFrQixRQUFRLEtBQ2xDLEdBQUcsV0FBVyxrQkFDZjtFQUNELE1BQU0sb0JBQW9CLEtBQ3hCLFFBQVEsa0JBQWtCLFFBQVEsS0FDbEMsMEJBQ0Q7QUFDRCxVQUFNLEtBQ0osMkJBQTJCLE9BQU8sYUFDaEMsUUFDRCxDQUFDLFFBQVEsT0FBTyxhQUFhLFFBQVEsQ0FBQyxHQUN4QztBQUNELFFBQU0sZUFDSixLQUFLLFNBQVMsR0FBRyxXQUFXLFdBQVcsRUFDdkMsTUFBTSxjQUFjLFFBQVEsQ0FDN0I7QUFDRCxVQUFNLEtBQ0osMEJBQTBCLE9BQU8sYUFDL0IsV0FDRCxDQUFDLFFBQVEsT0FBTyxhQUFhLFFBQVEsQ0FBQyxHQUN4QztBQUNELFFBQU0sZUFDSixLQUFLLFNBQVMsa0JBQWtCLEVBQ2hDLE1BQU0sY0FBYyxXQUFXLENBQ2hDO0FBQ0QsVUFBTSxLQUNKLGlDQUFpQyxPQUFPLGFBQ3RDLGFBQ0QsQ0FBQyxRQUFRLE9BQU8sYUFBYSxRQUFRLENBQUMsR0FDeEM7QUFDRCxRQUFNLGVBQ0osS0FBSyxTQUFTLEdBQUcsV0FBVyxrQkFBa0IsR0FFN0MsTUFBTSxjQUFjLGNBQWMsT0FBTyxFQUFFLFFBQzFDLHlEQUNBLFlBQVksWUFBWSx5REFDekIsQ0FDRjtBQUNELFVBQU0sS0FDSixrQ0FBa0MsT0FBTyxhQUN2QyxrQkFDRCxDQUFDLFFBQVEsT0FBTyxhQUFhLFFBQVEsQ0FBQyxHQUN4QztBQUNELFFBQU0sZUFDSixLQUFLLFNBQVMsMEJBQTBCLEVBQ3hDLE1BQU0sY0FBYyxrQkFBa0IsQ0FDdkM7OztBQUlMLGVBQWUsb0JBQW9CLE1BQWM7Q0FDL0MsTUFBTSxRQUFRLE1BQU0sYUFBYSxNQUFNLEVBQUUsZUFBZSxNQUFNLENBQUM7Q0FDL0QsTUFBTSxlQUFlLE1BQ2xCLFFBQ0UsU0FDQyxLQUFLLFFBQVEsS0FDWixLQUFLLEtBQUssU0FBUyxRQUFRLElBQUksS0FBSyxLQUFLLFNBQVMsUUFBUSxFQUM5RCxDQUNBLEtBQUssU0FBUyxLQUFLLE1BQU0sS0FBSyxLQUFLLENBQUM7Q0FFdkMsTUFBTSxPQUFPLE1BQU0sUUFBUSxTQUFTLEtBQUssYUFBYSxDQUFDO0FBQ3ZELE1BQUssTUFBTUEsU0FBTyxLQUNoQixLQUFJQSxNQUFJLFNBQVMsZUFDZixjQUFhLEtBQUssR0FBSSxNQUFNLG9CQUFvQixLQUFLLE1BQU1BLE1BQUksS0FBSyxDQUFDLENBQUU7QUFHM0UsUUFBTzs7Ozs7QUN6S1QsU0FBZ0IsaUJBQ2QsV0FDQSxTQUNBLFFBQ0EsZ0JBQ1E7QUFDUixRQUFPLEdBQUcsY0FBYztFQUN4QixvQkFBb0IsV0FBVyxTQUFTLGVBQWUsQ0FBQzs7RUFFeEQsT0FDQyxLQUFLLFVBQVUsa0JBQWtCLE1BQU0sbUJBQW1CLFFBQVEsQ0FDbEUsS0FBSyxLQUFLLENBQUM7OztBQUlkLFNBQWdCLGlCQUNkLFdBQ0EsU0FDQSxRQUNBLGdCQUNRO0FBQ1IsUUFBTyxHQUFHLGNBQWM7Ozs7O0VBS3hCLG9CQUFvQixXQUFXLFNBQVMsZUFBZSxDQUFDO1VBQ2hELE9BQU8sS0FBSyxLQUFLLENBQUM7RUFDMUIsT0FBTyxLQUFLLFVBQVUsWUFBWSxNQUFNLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQzs7O0FBSTFELE1BQU0sZ0JBQWdCOzs7OztBQU10QixTQUFTLG9CQUNQLFdBQ0EsU0FDQSxnQkFDUTtDQUNSLFNBQVMsYUFBYSxPQUFlLFlBQVksR0FBRztFQUNsRCxNQUFNLFdBQVcsSUFBSSxPQUFPLFlBQVksRUFBRTtFQUMxQyxNQUFNLFFBQVEsSUFBSSxPQUFPLFVBQVU7QUFtQm5DLFNBQU87RUFDVCxNQUFNLG9CQUFvQixVQUFVLEdBQUcsTUFBTTtFQUM3QyxTQUFTO0VBQ1QsTUFBTTtFQUNOLFNBQVMsR0F0QmMsaUJBQ2pCO0VBQ04sU0FBUztFQUNULE1BQU0sMkJBQTJCLFFBQVEsR0FBRyxNQUFNO0VBQ2xELE1BQU0seUNBQXlDLFFBQVEsR0FBRyxNQUFNO0VBQ2hFLE1BQU0saUNBQWlDLGVBQWU7RUFDdEQsTUFBTSx3RUFBd0UsZUFBZTtFQUM3RixNQUFNO0VBQ04sTUFBTTtFQUNOLFNBQVM7RUFDVCxNQUFNO0VBQ04sU0FBUyxLQUNIO0VBQ04sU0FBUztFQUNULE1BQU0sa0JBQWtCLFFBQVEsR0FBRyxNQUFNO0VBQ3pDLFNBQVM7RUFDVCxNQUFNO0VBQ04sU0FBUzs7QUFRVCxRQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFrRUQsYUFBYSxnQkFBZ0IsQ0FBQzs7UUFFOUIsYUFBYSxtQkFBbUIsQ0FBQzs7Ozs7OztVQU8vQixhQUFhLGdCQUFnQixDQUFDOztVQUU5QixhQUFhLGlCQUFpQixDQUFDOzs7UUFHakMsYUFBYSxrQkFBa0IsQ0FBQzs7UUFFaEMsYUFBYSxtQkFBbUIsQ0FBQzs7Ozs7TUFLbkMsYUFBYSxvQkFBb0IsRUFBRSxDQUFDOztRQUVsQyxhQUFhLGFBQWEsQ0FBQzs7UUFFM0IsYUFBYSxlQUFlLENBQUM7Ozs7OztRQU03QixhQUFhLGNBQWMsQ0FBQzs7UUFFNUIsYUFBYSxnQkFBZ0IsQ0FBQzs7Ozs7OztVQU81QixhQUFhLGtCQUFrQixHQUFHLENBQUM7O1VBRW5DLGFBQWEsaUJBQWlCLEdBQUcsQ0FBQzs7OztVQUlsQyxhQUFhLG9CQUFvQixHQUFHLENBQUM7O1VBRXJDLGFBQWEsbUJBQW1CLEdBQUcsQ0FBQzs7OztVQUlwQyxhQUFhLHdCQUF3QixHQUFHLENBQUM7O1VBRXpDLGFBQWEsdUJBQXVCLEdBQUcsQ0FBQzs7OztVQUl4QyxhQUFhLHNCQUFzQixHQUFHLENBQUM7O1VBRXZDLGFBQWEscUJBQXFCLEdBQUcsQ0FBQzs7OztVQUl0QyxhQUFhLHNCQUFzQixHQUFHLENBQUM7O1VBRXZDLGFBQWEscUJBQXFCLEdBQUcsQ0FBQzs7O1FBR3hDLGFBQWEsa0JBQWtCLENBQUM7O1FBRWhDLGFBQWEsa0JBQWtCLENBQUM7Ozs7OztRQU1oQyxhQUFhLG9CQUFvQixDQUFDOztRQUVsQyxhQUFhLGtCQUFrQixDQUFDOztRQUVoQyxhQUFhLGtCQUFrQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7K0JBZVQsVUFBVTs7Ozs7Ozs7OytCQVNWLFFBQVE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbFB2QyxNQUFhLDRCQUNYLGNBQ0EsZ0JBQWdCLEtBQ2hCLGdCQUFnQixPQUNoQixPQUFLLE9BQ0wsWUFBWSxPQUNaLFNBQVMsVUFDTjtBQXFDSCxRQUFPOzs7SUFQeUIsWUFDNUIsMkRBQ0EsaUVBUXNCOzs7RUF2Q1RDLE9BQ2IsU0FDRSw2REFDQSxxREFDRixHQXNDSztFQXJDWSxVQUFVLENBQUNBLE9BQUssb0NBQW9DLEdBc0M1RDtFQXJDUUEsT0FDakI7Ozs7Ozs7OztNQVVBOzs7SUEyQlM7OytCQUVnQixhQUFhOztFQXBCZixTQUN2Qiw0Q0FDQSxHQW9CZTs7O2FBR1IsY0FBYzthQUNkLGNBQWM7Ozs7Ozs7Ozs7TUFwQkssWUFDMUIsd0NBQ0Esb0NBNEJzQjs7Ozs7Ozs7RUF4Q0ZBLE9BQ3BCLG9GQUNBLEdBOENZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJsQixNQUFhLHFCQUNYLGNBQ0EsYUFDQSxnQkFBZ0IsS0FDaEIsZ0JBQWdCLFVBQ2I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FBNkJRLGNBQWM7YUFDZCxjQUFjOzs7O21EQUl3QixhQUFhOzBEQUNOLGFBQWE7Ozs7Ozt3Q0FNL0IsWUFBWSxlQUFlLGFBQWE7O21DQUU3QyxhQUFhLGtCQUFrQixZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcko5RSxNQUFhLHVCQUF1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlFcEMsTUFBYSxrQ0FBa0MsU0FBZ0I7QUFnQzdELFFBQU8sR0EvQlVDLE9BQ2I7Ozs2Q0FJQSwwRkEwQmU7Ozs7TUF6QkVBLE9BQ2pCOzs7Ozs7Ozs7Ozs7O1VBY0E7Ozs7Ozs7OztRQWNhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2RG5CLE1BQU1DLFVBQVEsYUFBYSxRQUFRO0FBQ25DLE1BQU0sVUFBVSxjQUFjLE9BQU8sS0FBSyxJQUFJO0FBUTlDLGVBQXNCLGFBQWEsWUFBMEI7QUFDM0QsU0FBTSwwQ0FBMEMsV0FBVztDQUUzRCxNQUFNQyxVQUE4QjtFQUNsQyxVQUFVO0VBQ1YsR0FBRztFQUNILEtBQUssV0FBVyxPQUFPLFFBQVEsS0FBSztFQUNyQztDQUVELE1BQU0sZUFBZSxHQUFHLFVBQW9CLFFBQVEsUUFBUSxLQUFLLEdBQUcsTUFBTTtDQUUxRSxNQUFNLGVBQWUsWUFBWSxRQUFRLGdCQUFnQixhQUFhO0NBQ3RFLE1BQU0sV0FBVyxNQUFNLGNBQWMsYUFBYTtDQUVsRCxNQUFNLFFBQVEsU0FBUyxTQUFTLE1BQU0sTUFBTTtBQUUxQyxNQUFJLFFBQVEsUUFDVixRQUFPLEVBQUUsU0FBUyxRQUFRO01BRTFCLFFBQU8sRUFBRSxrQkFBa0I7R0FFN0I7QUFFRixLQUFJLENBQUMsTUFDSCxPQUFNLElBQUksTUFDUix3SkFDRDtBQVNILFFBRmdCLElBQUksUUFBUSxVQUFVLE9BTHZCLE1BQU0sZUFDbkIsWUFBWSxRQUFRLG1CQUFtQixlQUFlLEVBQ3RELFFBQVEsYUFBYSxZQUFZLFFBQVEsV0FBVyxHQUFHLE9BQ3hELEVBRW9ELFFBQVEsQ0FFOUMsT0FBTzs7QUFHeEIsSUFBTSxVQUFOLE1BQWM7Q0FDWixBQUFpQixPQUFpQixFQUFFO0NBQ3BDLEFBQWlCLE9BQStCLEVBQUU7Q0FDbEQsQUFBaUIsVUFBb0IsRUFBRTtDQUV2QyxBQUFpQjtDQUNqQixBQUFpQjtDQUNqQixBQUFpQjtDQUNqQixBQUFpQjtDQUNqQixBQUFpQixnQkFBeUI7Q0FFMUMsWUFDRSxBQUFpQkMsVUFDakIsQUFBaUJDLE9BQ2pCLEFBQWlCQyxRQUNqQixBQUFpQkgsU0FDakI7RUFKaUI7RUFDQTtFQUNBO0VBQ0E7QUFFakIsT0FBSyxTQUFTLFFBQVEsU0FDbEIsWUFBWSxRQUFRLE9BQU8sR0FDM0IsUUFBUSxJQUFJLHFCQUNWLFlBQVksUUFBUSxJQUFJLG1CQUFtQixHQUMzQyx3QkFBd0I7QUFDOUIsT0FBSyxXQUFXLE1BQU0sTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBSyxZQUFZLFFBQ2YsS0FBSyxRQUFRLEtBQ2IsUUFBUSxhQUFhLEtBQUssU0FDM0I7QUFDRCxPQUFLLFlBQ0gsUUFBUSxhQUNSLFFBQVEsSUFBSSwwQkFDWixTQUFTO0FBQ1gsT0FBSyxnQkFBZ0IsS0FBSyxNQUFNLGFBQWEsTUFDMUMsUUFDQyxJQUFJLFNBQVMsa0JBQ1osSUFBSSx5QkFBeUIsSUFBSSxTQUFTLFNBQVMsV0FBVyxFQUNsRTtBQUVELE1BQUksQ0FBQyxLQUFLLGVBQWU7R0FDdkIsTUFBTSxxQkFDSjtBQUNGLFdBQU0sS0FDSixHQUFHLG1CQUFtQiw4RUFDdkI7QUFFRCxPQUNFLEtBQUssUUFBUSxPQUNiLEtBQUssUUFBUSxhQUNiLEtBQUssT0FBTyxhQUNaLEtBQUssT0FBTyxjQUVaLFNBQU0sS0FDSixHQUFHLG1CQUFtQiw0REFDdkI7OztDQUtQLElBQUksYUFBYTs7QUFDZixrQ0FBTyxLQUFLLE1BQU0sUUFBUSxNQUFNLE1BQU0sRUFBRSxZQUFZLFNBQVMsU0FBUyxDQUFDLGdGQUNuRTs7Q0FHTixJQUFJLFVBQVU7O0FBQ1osU0FDRSxLQUFLLFFBQVEsUUFFWixLQUFLLGFBQ0YsaUNBQ0EsS0FBSyxNQUFNLFFBQVEsTUFBTSxNQUFNLEVBQUUsWUFBWSxTQUFTLE1BQU0sQ0FBQyxrRkFBRTs7Q0FJdkUsUUFBUTtBQUNOLE1BQUksQ0FBQyxLQUFLLFlBQVk7R0FDcEIsTUFBTSxVQUNKO0FBRUYsT0FBSSxLQUFLLFFBQ1AsU0FBTSxLQUFLLFFBQVE7T0FFbkIsT0FBTSxJQUFJLE1BQU0sUUFBUTs7QUFJNUIsU0FBTyxLQUFLLFlBQVksQ0FDckIsWUFBWSxDQUNaLGFBQWEsQ0FDYixXQUFXLENBQ1gsb0JBQW9CLENBQ3BCLFNBQVMsQ0FDVCxlQUFlLENBQ2YsTUFBTTs7Q0FHWCxBQUFRLHFCQUFxQjtBQUMzQixNQUFJLENBQUMsS0FBSyxRQUFRLGFBQ2hCLFFBQU87QUFFVCxNQUFJLEtBQUssUUFBUSxTQUNmLFNBQU0sS0FDSixzR0FDRDtBQUdILE1BQUksS0FBSyxRQUFRLGFBQ2YsU0FBTSxLQUNKLGtIQUNEO0FBR0gsTUFBSTs7R0FDRixNQUFNLEVBQUUsb0JBQVMsYUFBYSxRQUFRLDJCQUEyQjtHQUVqRSxNQUFNSSxRQUFnQyxFQUNwQywyQkFBMkIsdUJBQzVCO0dBRUQsTUFBTSxnQkFBZ0IsS0FDcEIsU0FBUyxFQUNULFlBQ0EsbUJBQ0FDLFdBQ0EsS0FBSyxPQUFPLE9BQ2I7QUFDRCxhQUFVLGVBQWUsRUFBRSxXQUFXLE1BQU0sQ0FBQztBQUM3QyxPQUFJLFdBQVcsS0FBSyxlQUFlLGVBQWUsQ0FBQyxDQUNqRCxTQUFNLGFBQWEsY0FBYywwQkFBMEI7T0FHM0QsQ0FEbUIsU0FBUyxRQUFRLE1BQU0sS0FBSyxPQUFPLE9BQU8sQ0FDbEQsT0FBTyxjQUFjO0dBRWxDLE1BQU0sa0JBQWtCLGVBQWUsS0FBSyxPQUFPLE9BQU87R0FDMUQsTUFBTSxrQkFBa0IsTUFBTSxLQUFLLE9BQU8sV0FBVyxLQUFLLE9BQU87R0FDakUsTUFBTSxZQUFZLGdCQUFnQixnQkFBZ0I7QUFDbEQsUUFBSyxrQkFDSCxXQUNBLEtBQUssZUFBZSxPQUFPLEdBQUcsZ0JBQWdCLE1BQU0sQ0FDckQ7QUFDRCxRQUFLLGtCQUNILGtCQUNBLEtBQUssZUFBZSxpQkFBaUIsVUFBVSxDQUNoRDtBQUNELFFBQUssa0JBQ0gsYUFDQSxLQUFLLGVBQWUsT0FBTyxHQUFHLGdCQUFnQixLQUFLLENBQ3BEO0FBQ0QsUUFBSyxrQkFDSCxpQkFDQSxLQUFLLGVBQWUsT0FBTyxHQUFHLGdCQUFnQixTQUFTLENBQ3hEO0FBQ0QsUUFBSyxrQkFDSCxrQkFDQSxLQUFLLGVBQWUsT0FBTyxHQUFHLGdCQUFnQixVQUFVLENBQ3pEO0FBQ0QsUUFBSyxrQkFDSCx5QkFDQSxLQUFLLGVBQWUsaUJBQWlCLFdBQVcsT0FBTyxXQUFXLENBQ25FO0FBQ0QsUUFBSyxrQkFDSCxhQUNBLEtBQUssZUFBZSxPQUFPLEdBQUcsZ0JBQWdCLE1BQU0sQ0FDckQ7QUFDRCxRQUFLLGtCQUNILGNBQ0EsS0FBSyxlQUFlLE9BQU8sR0FBRyxnQkFBZ0IsTUFBTSxDQUNyRDtBQUNELFFBQUssa0JBQ0gsNEJBQ0EsYUFBYSxLQUFLLEtBQUssZUFBZSxHQUN2QztBQUVELGlDQUNFLFFBQVEsSUFBSSx5RkFBVyxXQUFXLFFBQVEseUJBQ3pDLFFBQVEsSUFBSSxzRUFBSSxXQUFXLFFBQVEsS0FBSSxDQUFDLFFBQVEsSUFBSSxXQUNyRDtJQUNBLE1BQU0sZ0JBQWdCLFFBQVEsSUFBSSxpQkFBaUI7QUFDbkQsU0FBSyxLQUFLLGdCQUFnQixhQUFhLEtBQUssS0FBSyxlQUFlLG1CQUFtQixjQUFjLEdBQUc7O0FBRXRHLDRCQUNHLFFBQVEsSUFBSSx5RUFBSyxXQUFXLFVBQVUsS0FBSSxDQUFDLFFBQVEsSUFBSSx5Q0FDeEQsUUFBUSxJQUFJLDRGQUFZLFdBQVcsVUFBVSxHQUM3QztJQUNBLE1BQU0sa0JBQWtCLFFBQVEsSUFBSSxtQkFBbUI7QUFDdkQsU0FBSyxLQUFLLGtCQUFrQixhQUFhLEtBQUssS0FBSyxlQUFlLG1CQUFtQixjQUFjLEdBQUc7O0FBRXhHLFFBQUssS0FBSyxPQUFPLEtBQUssS0FBSyxPQUN2QixHQUFHLGNBQWMsT0FBTyxLQUFLLEtBQUssS0FBSyxHQUFHLFFBQVEsSUFBSSxTQUN0RCxHQUFHLGNBQWMsT0FBTyxRQUFRLElBQUk7V0FDakMsR0FBRztBQUNWLFdBQU0sS0FBSywrQkFBK0IsRUFBVzs7QUFHdkQsU0FBTzs7Q0FHVCxBQUFRLE9BQU87QUFDYixVQUFNLHlCQUF5QixLQUFLLE1BQU0sT0FBTztBQUNqRCxVQUFNLFFBQVEsU0FBUyxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUc7RUFFN0MsTUFBTSxhQUFhLElBQUksaUJBQWlCO0VBRXhDLE1BQU0sUUFBUSxLQUFLLFFBQVE7QUF1QzNCLFNBQU87R0FDTCxNQXZDZ0IsSUFBSSxTQUFlLFdBQVMsV0FBVzs7QUFDdkQsUUFBSSxLQUFLLFFBQVEsWUFBWSxLQUFLLFFBQVEsYUFDeEMsT0FBTSxJQUFJLE1BQ1IsK0RBQ0Q7SUFJSCxNQUFNLGVBQWUsTUFEbkIsUUFBUSxJQUFJLFVBQVUsS0FBSyxRQUFRLFdBQVcsVUFBVSxVQUN0QixLQUFLLE1BQU07S0FDN0MsS0FBSztNQUFFLEdBQUcsUUFBUTtNQUFLLEdBQUcsS0FBSztNQUFNO0tBQ3JDLE9BQU8sUUFBUTtNQUFDO01BQVc7TUFBVztNQUFPLEdBQUc7S0FDaEQsS0FBSyxLQUFLLFFBQVE7S0FDbEIsUUFBUSxXQUFXO0tBQ3BCLENBQUM7QUFFRixpQkFBYSxLQUFLLFNBQVMsU0FBUztBQUNsQyxTQUFJLFNBQVMsR0FBRztBQUNkLGNBQU0sTUFBTSxlQUFlLEtBQUssTUFBTSxLQUFLLGdCQUFnQjtBQUMzRCxpQkFBUztXQUVULHdCQUFPLElBQUksTUFBTSwrQkFBK0IsT0FBTyxDQUFDO01BRTFEO0FBRUYsaUJBQWEsS0FBSyxVQUFVLE1BQU07QUFDaEMsWUFBTyxJQUFJLE1BQU0sNEJBQTRCLEVBQUUsV0FBVyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUM7TUFDeEU7QUFHRix5Q0FBYSw0RUFBUSxHQUFHLFNBQVMsU0FBUztLQUN4QyxNQUFNLFNBQVMsS0FBSyxVQUFVO0FBQzlCLGFBQVEsTUFBTSxPQUFPO0FBQ3JCLFNBQUksOEJBQThCLEtBQUssT0FBTyxDQUM1QyxNQUFLLFdBQVcsQ0FBQyxZQUFZLEdBQUc7TUFFbEM7S0FDRixDQUdnQixXQUFXLEtBQUssV0FBVyxDQUFDO0dBQzVDLGFBQWEsV0FBVyxPQUFPO0dBQ2hDOztDQUdILEFBQVEsYUFBYTtFQUNuQixJQUFJLE1BQU07QUFDVixNQUFJLEtBQUssUUFBUSxNQUNmLEtBQUksUUFBUSxJQUFJLEdBQ2QsU0FBTSxLQUFLLGdEQUFnRDtPQUN0RDtBQUNMLFdBQU0sVUFBVSxjQUFjO0FBQzlCLHlCQUFzQixlQUFlLFFBQVE7QUFLN0MsUUFBSyxLQUFLLEtBQ1IsU0FDQSxTQUNBLE1BQ0Esa0JBQ0EsTUFDQSxLQUFLLFVBQ0wsTUFDQSxTQUNBLFFBQ0Q7QUFDRCxTQUFNOztBQUlWLE1BQUksS0FBSyxRQUFRLGFBQ2YsS0FBSSxLQUFLLE9BQU8sYUFBYSxRQUMzQixLQUFJLFFBQVEsYUFBYSxRQUN2QixTQUFNLEtBQ0osNEZBQ0Q7T0FDSTtBQUVMLFdBQU0sVUFBVSxhQUFhO0FBQzdCLHlCQUFzQixjQUFjLE9BQU87QUFDM0MsUUFBSyxLQUFLLEtBQUssUUFBUSxRQUFRO0FBQy9CLE9BQUksS0FBSyxPQUFPLFNBQVMsT0FDdkIsTUFBSyxLQUFLLFlBQVk7QUFFeEIsU0FBTTs7V0FJTixLQUFLLE9BQU8sYUFBYSxXQUN6QixRQUFRLGFBQWEsV0FDckIsS0FBSyxPQUFPLFNBQVMsUUFBUSxTQUM1QixTQUFVLEtBQW9COztBQUs3QixVQUFPLDZCQUZMLFFBQVEscUZBQVEsV0FBVywrRUFBRSwwRUFBUSx1QkFDSixRQUFRO0tBRTFDLEtBQUssT0FBTyxJQUFJLENBRW5CLFNBQU0sS0FDSiwwRkFDRDtXQUVELEtBQUssT0FBTyxhQUFhLFlBQ3pCLFFBQVEsYUFBYSxTQUVyQixTQUFNLEtBQ0osNEZBQ0Q7T0FDSTtBQUVMLFdBQU0sVUFBVSxpQkFBaUI7QUFDakMseUJBQXNCLGtCQUFrQixXQUFXO0FBQ25ELFFBQUssS0FBSyxLQUFLLFdBQVc7QUFDMUIsU0FBTTs7QUFLWixNQUFJLENBQUMsSUFDSCxNQUFLLEtBQUssS0FBSyxRQUFRO0FBRXpCLFNBQU87O0NBR1QsQUFBUSxhQUFhO0VBQ25CLE1BQU0sT0FBTyxFQUFFO0FBRWYsTUFBSSxLQUFLLFFBQVEsUUFDZixNQUFLLEtBQUssYUFBYSxLQUFLLFFBQVEsUUFBUTtBQUc5QyxNQUFJLEtBQUssUUFDUCxNQUFLLEtBQUssU0FBUyxLQUFLLFFBQVE7QUFHbEMsTUFBSSxLQUFLLFFBQVE7QUFDZixXQUFNLHNCQUFzQjtBQUM1QixXQUFNLFFBQVEsS0FBSztBQUNuQixRQUFLLEtBQUssS0FBSyxHQUFHLEtBQUs7O0FBR3pCLFNBQU87O0NBR1QsQUFBUSxZQUFZO0FBQ2xCLFVBQU0sNEJBQTRCO0FBQ2xDLFVBQU0sUUFBUSxLQUFLLE9BQU8sT0FBTztBQUVqQyxPQUFLLEtBQUssS0FBSyxZQUFZLEtBQUssT0FBTyxPQUFPO0FBRTlDLFNBQU87O0NBR1QsQUFBUSxVQUFVOztBQUVoQixNQUFJLEtBQUssZUFBZTtBQUN0QixRQUFLLEtBQUssMkJBQ1IsS0FBSyxtQ0FBbUM7QUFDMUMsUUFBSyxrQkFBa0IsS0FBSyxLQUFLLHlCQUF5Qjs7RUFJNUQsSUFBSSxZQUNGLFFBQVEsSUFBSSxhQUFhLFFBQVEsSUFBSSx5QkFBeUI7QUFFaEUsMkJBQ0UsS0FBSyxPQUFPLHlFQUFLLFNBQVMsT0FBTyxLQUNqQyxDQUFDLFVBQVUsU0FBUyw2QkFBNkIsQ0FFakQsY0FBYTtBQUdmLE1BQUksS0FBSyxRQUFRLFNBQVMsQ0FBQyxVQUFVLFNBQVMsY0FBYyxDQUMxRCxjQUFhO0FBR2YsTUFBSSxVQUFVLE9BQ1osTUFBSyxLQUFLLFlBQVk7RUFLeEIsTUFBTSxTQUFTLEtBQUssUUFBUSxlQUN4QixLQUFLLElBQ0wsZ0JBQWdCLEtBQUssT0FBTyxPQUFPO0VBS3ZDLE1BQU0sWUFBWSxnQkFBZ0IsZUFDaEMsS0FBSyxPQUFPLE9BQ2IsQ0FBQztBQUNGLE1BQUksVUFBVSxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsS0FBSyxLQUFLLFdBQ2xELE1BQUssS0FBSyxhQUFhO0FBR3pCLE1BQUksS0FBSyxPQUFPLGFBQWEsVUFDM0IsTUFBSyxlQUFlO0FBR3RCLE1BQUksS0FBSyxPQUFPLGFBQWEsT0FDM0IsTUFBSyxZQUFZO0FBR25CLE1BQUksS0FBSyxPQUFPLGFBQWEsY0FDM0IsTUFBSyxtQkFBbUI7QUFHMUIsVUFBTSxhQUFhO0FBQ25CLFNBQU8sUUFBUSxLQUFLLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxPQUFPO0FBQzVDLFdBQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxJQUFJO0lBQzFCO0FBRUYsU0FBTzs7Q0FHVCxBQUFRLGtCQUFrQixrQkFBMEI7QUFFbEQsT0FBSyxTQUFTLFNBQVMsU0FBUyxVQUFVO0FBQ3hDLE9BQ0UsTUFBTSxhQUFhLE1BQU0sTUFBTSxFQUFFLFNBQVMsY0FBYyxJQUN4RCxDQUFDLFdBQVcsS0FBSyxrQkFBa0IsTUFBTSxLQUFLLENBQUMsQ0FFL0MsTUFBSyxLQUNILG9CQUFvQixNQUFNLEtBQUssUUFBUSxNQUFNLElBQUksQ0FBQyxhQUFhLE1BQzdELEtBQUssS0FBSyxDQUFDLFVBQVU7SUFFM0I7O0NBR0osQUFBUSxnQkFBZ0I7RUFDdEIsTUFBTSxFQUFFLDRCQUE0QixRQUFRO0FBQzVDLE1BQUksQ0FBQyx3QkFDSCxTQUFNLEtBQ0osR0FBRyxPQUFPLElBQ1IsMEJBQ0QsQ0FBQyxrQ0FDSDtBQUlILE1BQUksUUFBUSxhQUFhLFVBQ3ZCO0VBR0YsTUFBTSxhQUFhLEtBQUssT0FBTyxTQUFTLFFBQVEsV0FBVztFQUMzRCxNQUFNLGlCQUNKLEtBQUssT0FBTyxTQUFTLFFBQVEsa0JBQWtCO0VBQ2pELE1BQU0sZUFDSixRQUFRLGFBQWEsV0FDakIsV0FDQSxRQUFRLGFBQWEsVUFDbkIsWUFDQTtBQUNSLFNBQU8sT0FBTyxLQUFLLE1BQU07R0FDdkIsMkNBQTJDLEdBQUcsd0JBQXdCLDRCQUE0QixhQUFhLGNBQWMsV0FBVztHQUN4SSw2Q0FBNkMsR0FBRyx3QkFBd0IsNEJBQTRCLGFBQWEsY0FBYyxXQUFXO0dBQzFJLFdBQVcsR0FBRyx3QkFBd0IsNEJBQTRCLGFBQWEsY0FBYyxXQUFXLFNBQVMsZUFBZTtHQUNoSSxZQUFZLEdBQUcsd0JBQXdCLDRCQUE0QixhQUFhLGNBQWMsV0FBVyxTQUFTLGVBQWU7R0FDakksV0FBVyxHQUFHLHdCQUF3Qiw0QkFBNEIsYUFBYTtHQUMvRSxlQUFlLEdBQUcsd0JBQXdCLDRCQUE0QixhQUFhO0dBQ25GLGFBQWE7R0FDYixNQUFNLEdBQUcsd0JBQXdCLDRCQUE0QixhQUFhLGFBQWEsUUFBUSxhQUFhLFVBQVUsTUFBTSxNQUFNLFFBQVEsSUFBSTtHQUMvSSxDQUFDOztDQUdKLEFBQVEsYUFBYTtFQUNuQixNQUFNLFNBQVMsS0FDYixRQUFRLFFBQVEsU0FBUyxFQUN6QixNQUNBLE9BQ0Esc0JBQ0Q7QUFDRCxPQUFLLEtBQUssa0JBQWtCO0VBQzVCLE1BQU0sRUFBRSxrQkFBa0IsUUFBUTtBQUVsQyxNQUFJLGlCQUFpQixXQUFXLGNBQWMsRUFBRTtBQUM5QyxRQUFLLEtBQUssbURBQW1ELEtBQzNELGVBQ0EsT0FDQSxVQUNEO0FBQ0QsUUFBSyxLQUFLLG9DQUFvQyxLQUM1QyxlQUNBLE9BQ0EsVUFDRDtBQUNELFFBQUssS0FBSyw0Q0FBNEMsS0FDcEQsZUFDQSxPQUNBLFVBQ0Q7QUFDRCxRQUFLLEtBQUssb0NBQW9DLEtBQzVDLGVBQ0EsT0FDQSxVQUNEO0FBQ0QsUUFBSyxrQkFBa0IsYUFBYSxLQUFLLGVBQWUsT0FBTyxRQUFRLENBQUM7QUFDeEUsUUFBSyxrQkFDSCxjQUNBLEtBQUssZUFBZSxPQUFPLFVBQVUsQ0FDdEM7QUFDRCxRQUFLLGtCQUFrQixhQUFhLEtBQUssZUFBZSxPQUFPLEtBQUssQ0FBQztBQUNyRSxRQUFLLGtCQUNILGlCQUNBLEtBQUssZUFBZSxPQUFPLFNBQVMsQ0FDckM7QUFDRCxRQUFLLGtCQUNILGlCQUNBLDBDQUEwQyxjQUFjLHVEQUN6RDtBQUNELFFBQUssa0JBQ0gsbUJBQ0EsMENBQTBDLGNBQWMsdURBQ3pEO0FBQ0QsUUFBSyxrQkFDSCxrQkFDQSxZQUFZLGNBQWMsMkNBQzNCOzs7Q0FJTCxBQUFRLG9CQUFvQjtFQUMxQixNQUFNLEVBQUUsZUFBZSxvQkFBb0IsUUFBUTtFQUNuRCxNQUFNLFVBQVUsZ0JBQWdCLEdBQUcsY0FBYyxXQUFXO0FBRTVELE1BQUksQ0FBQyxXQUFXLFFBQVEsYUFBYSxlQUFlO0FBQ2xELFdBQU0sS0FDSixHQUFHLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxrQ0FDcEU7QUFDRDs7RUFFRixNQUFNLGFBQWEsZ0JBQWdCLEtBQUssT0FBTyxPQUFPLGFBQWEsQ0FBQyxRQUFRLE1BQU0sSUFBSSxDQUFDO0VBQ3ZGLE1BQU0sVUFBVSxHQUFHLFFBQVE7RUFDM0IsTUFBTSxTQUFTLEdBQUcsUUFBUTtFQUMxQixNQUFNLFNBQVMsR0FBRyxRQUFRLFlBQVksS0FBSyxPQUFPLE9BQU87RUFDekQsTUFBTSxVQUFVLEdBQUcsUUFBUSxZQUFZLEtBQUssT0FBTyxPQUFPO0VBQzFELE1BQU0sU0FBUyxHQUFHLFFBQVE7RUFDMUIsTUFBTSxTQUFTLEdBQUcsUUFBUTtFQUMxQixNQUFNLFlBQVksR0FBRyxRQUFRO0VBQzdCLE1BQU0sY0FBYyxHQUFHLFFBQVE7RUFDL0IsTUFBTSxjQUFjLEdBQUcsUUFBUTtFQUMvQixNQUFNLFNBQVMsR0FBRyxRQUFRO0VBQzFCLE1BQU0sVUFBVSxHQUFHLFFBQVE7RUFDM0IsTUFBTSxVQUFVLEdBQUcsUUFBUTtBQUUzQixPQUFLLGtCQUFrQixpQkFBaUIsUUFBUTtBQUNoRCxPQUFLLGtCQUFrQixjQUFjLG9CQUFvQjtBQUN6RCxPQUFLLGtCQUFrQixZQUFZLE9BQU87QUFDMUMsT0FBSyxrQkFBa0IsYUFBYSxPQUFPO0FBQzNDLE9BQUssa0JBQWtCLGNBQWMsUUFBUTtBQUM3QyxPQUFLLGtCQUFrQixhQUFhLE9BQU87QUFDM0MsT0FBSyxrQkFBa0IsaUJBQWlCLFFBQVE7QUFDaEQsT0FBSyxrQkFBa0IsYUFBYSxPQUFPO0FBQzNDLE9BQUssa0JBQWtCLGFBQWEsT0FBTztBQUMzQyxPQUFLLGtCQUFrQixnQkFBZ0IsVUFBVTtBQUNqRCxPQUFLLGtCQUFrQixrQkFBa0IsWUFBWTtBQUNyRCxPQUFLLGtCQUFrQixrQkFBa0IsWUFBWTtBQUNyRCxPQUFLLGtCQUFrQixhQUFhLE9BQU87QUFDM0MsT0FBSyxLQUFLLE9BQU8sR0FBRyxVQUFVLFFBQVEsYUFBYSxVQUFVLE1BQU0sTUFBTSxRQUFRLElBQUk7O0NBR3ZGLEFBQVEsY0FBYztFQUNwQixNQUFNLE9BQU8sRUFBRTtBQUNmLE1BQUksS0FBSyxRQUFRLGVBQWUsS0FBSyxRQUFRLGtCQUMzQyxPQUFNLElBQUksTUFDUixtRUFDRDtBQUVILE1BQUksS0FBSyxRQUFRLFlBQ2YsTUFBSyxLQUFLLGlCQUFpQjtXQUNsQixLQUFLLFFBQVEsa0JBQ3RCLE1BQUssS0FBSyx3QkFBd0I7QUFFcEMsTUFBSSxLQUFLLFFBQVEsU0FDZixNQUFLLEtBQUssY0FBYyxHQUFHLEtBQUssUUFBUSxTQUFTO0FBR25ELFVBQU0sdUJBQXVCO0FBQzdCLFVBQU0sUUFBUSxLQUFLO0FBQ25CLE9BQUssS0FBSyxLQUFLLEdBQUcsS0FBSztBQUV2QixTQUFPOztDQUdULEFBQVEsZ0JBQWdCOztBQUN0QixNQUFJLEtBQUssUUFBUSxRQUNmLE1BQUssS0FBSyxLQUFLLFlBQVk7QUFHN0IsTUFBSSxLQUFLLFFBQVEsUUFDZixNQUFLLEtBQUssS0FBSyxZQUFZO0FBRzdCLE1BQUksS0FBSyxRQUFRLFVBQ2YsTUFBSyxLQUFLLEtBQUssZ0JBQWdCLEtBQUssUUFBUSxVQUFVO0FBR3hELE1BQUksS0FBSyxRQUFRLFFBQ2YsTUFBSyxLQUFLLEtBQUssYUFBYSxLQUFLLFFBQVEsUUFBUTtBQUduRCxNQUFJLEtBQUssUUFBUSxhQUNmLE1BQUssS0FBSyxLQUFLLG1CQUFtQixLQUFLLFFBQVEsYUFBYTtBQUc5RCwrQkFBSSxLQUFLLFFBQVEsNEZBQWMsT0FDN0IsTUFBSyxLQUFLLEtBQUssR0FBRyxLQUFLLFFBQVEsYUFBYTtBQUc5QyxTQUFPOztDQUdULEFBQVEsb0NBQW9DO0VBQzFDLElBQUksU0FBUyxLQUNYLEtBQUssV0FDTCxXQUNBLEdBQUcsS0FBSyxNQUFNLEtBQUssR0FBRyxXQUFXLFNBQVMsQ0FDdkMsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUNoQyxPQUFPLFlBQVksQ0FDbkIsT0FBTyxNQUFNLENBQ2IsVUFBVSxHQUFHLEVBQUUsR0FDbkI7QUFFRCxNQUFJLENBQUMsS0FBSyxRQUFRLFVBQVU7QUFDMUIsVUFBTyxRQUFRO0lBQUUsV0FBVztJQUFNLE9BQU87SUFBTSxDQUFDO0FBQ2hELGFBQVUsSUFBSSxLQUFLLEtBQUs7O0FBRzFCLGFBQVcsUUFBUSxFQUFFLFdBQVcsTUFBTSxDQUFDO0FBRXZDLFNBQU87O0NBR1QsTUFBYyxZQUFZO0FBQ3hCLE1BQUk7QUFDRixXQUFNLGtDQUFrQztBQUN4QyxXQUFNLFFBQVEsS0FBSyxVQUFVO0FBQzdCLFNBQU0sV0FBVyxLQUFLLFdBQVcsRUFBRSxXQUFXLE1BQU0sQ0FBQztBQUNyRCxXQUFNLDJCQUEyQjtXQUMxQixHQUFHO0FBQ1YsU0FBTSxJQUFJLE1BQU0scUNBQXFDLEtBQUssYUFBYSxFQUNyRSxPQUFPLEdBQ1IsQ0FBQzs7RUFHSixNQUFNLGlCQUFpQixNQUFNLEtBQUssY0FBYztBQUdoRCxNQUFJLEtBQUssWUFBWTtHQUNuQixNQUFNLFNBQVMsTUFBTSxLQUFLLGlCQUFpQjtHQUMzQyxNQUFNLFdBQVcsTUFBTSxLQUFLLGVBQWUsT0FBTztHQUNsRCxNQUFNLHFCQUFxQixNQUFNLEtBQUssaUJBQ3BDLGdCQUNBLE9BQ0Q7QUFDRCxPQUFJLFNBQ0YsTUFBSyxRQUFRLEtBQUssU0FBUztBQUU3QixPQUFJLG1CQUNGLE1BQUssUUFBUSxLQUFLLEdBQUcsbUJBQW1COztBQUk1QyxTQUFPLEtBQUs7O0NBR2QsTUFBYyxlQUFlO0VBQzNCLE1BQU0sQ0FBQyxTQUFTLFVBQVUsa0JBQWtCLEtBQUssa0JBQWtCO0FBQ25FLE1BQUksQ0FBQyxXQUFXLENBQUMsU0FDZjtFQUdGLE1BQU0sVUFDSixLQUFLLFFBQVEsWUFBWSxLQUFLLFFBQVEsVUFBVSxZQUFZO0VBQzlELE1BQU0sTUFBTSxLQUFLLEtBQUssV0FBVyxLQUFLLE9BQU8sUUFBUSxTQUFTLFFBQVE7QUFDdEUsVUFBTSx3QkFBd0IsSUFBSSxHQUFHO0VBQ3JDLE1BQU0sT0FBTyxLQUFLLEtBQUssV0FBVyxTQUFTO0VBQzNDLE1BQU0sU0FBUyxLQUFLLFNBQVMsUUFBUTtBQUVyQyxNQUFJO0FBQ0YsT0FBSSxNQUFNLFdBQVcsS0FBSyxFQUFFO0FBQzFCLFlBQU0sc0NBQXNDO0FBQzVDLFVBQU0sWUFBWSxLQUFLOztBQUV6QixXQUFNLG9CQUFvQjtBQUMxQixXQUFNLFFBQVEsS0FBSztBQUNuQixPQUFJLFFBQVE7SUFDVixNQUFNLEVBQUUsaUJBQWlCLE1BQU0sT0FBTztBQUN0QyxZQUFNLDZCQUE2QjtBQUNuQyxRQUFJO0tBUUYsTUFBTSxrQkFQa0IsSUFBSSxjQUFjLENBQ3ZDLGNBQWMsS0FBSyxDQUNuQixvQkFBb0IsS0FBSyxDQUN6Qix5QkFBeUIsS0FBSyxDQUM5QixzQkFBc0IsS0FBSyxDQUMzQixlQUFlLE1BQU0sQ0FDckIsTUFBTSxNQUFNLGNBQWMsSUFBSSxDQUFDLENBQ00sU0FBUyxLQUFLO0FBQ3RELFdBQU0sZUFDSixLQUFLLFFBQVEsV0FBVyxjQUFjLEVBQ3RDLGdCQUNEO0FBQ0QsYUFBTSwrQkFBK0I7QUFVckMsV0FBTSxlQUFlLE1BVEssSUFBSSxjQUFjLENBQ3pDLGNBQWMsTUFBTSxDQUNwQixvQkFBb0IsTUFBTSxDQUMxQix5QkFBeUIsTUFBTSxDQUMvQixzQkFBc0IsTUFBTSxDQUM1QixlQUFlLE1BQU0sQ0FDckIsbUJBQW1CLE1BQU0sQ0FDekIsTUFBTSxnQkFBZ0IsQ0FDbUIsU0FBUyxNQUFNLENBQ2Q7YUFDdEMsR0FBRztBQUNWLGFBQU0sS0FDSix5Q0FBMEMsRUFBVSxXQUFXLElBQ2hFO0FBQ0QsV0FBTSxjQUFjLEtBQUssS0FBSzs7U0FHaEMsT0FBTSxjQUFjLEtBQUssS0FBSztBQUVoQyxRQUFLLFFBQVEsS0FBSztJQUNoQixNQUFNLEtBQUssU0FBUyxRQUFRLEdBQUcsU0FBUyxTQUFTLFNBQVM7SUFDMUQsTUFBTTtJQUNQLENBQUM7QUFDRixVQUFPLGlCQUFpQixLQUFLLEtBQUssV0FBVyxlQUFlLEdBQUc7V0FDeEQsR0FBRztBQUNWLFNBQU0sSUFBSSxNQUFNLDJCQUEyQixFQUFFLE9BQU8sR0FBRyxDQUFDOzs7Q0FJNUQsQUFBUSxtQkFBbUI7QUFDekIsTUFBSSxLQUFLLFlBQVk7R0FDbkIsTUFBTSxTQUFTLEtBQUssV0FBVyxRQUFRLE1BQU0sSUFBSTtHQUNqRCxNQUFNLGFBQWEsS0FBSyxPQUFPLFFBQVEsTUFBTSxNQUFNLEVBQUUsYUFBYSxPQUFPO0dBRXpFLE1BQU0sVUFDSixLQUFLLE9BQU8sYUFBYSxXQUNyQixNQUFNLE9BQU8sVUFDYixLQUFLLE9BQU8sYUFBYSxVQUN2QixHQUFHLE9BQU8sUUFDVixLQUFLLE9BQU8sYUFBYSxVQUFVLEtBQUssT0FBTyxhQUFhLFNBQzFELEdBQUcsT0FBTyxTQUNWLE1BQU0sT0FBTztHQUV2QixJQUFJLFdBQVcsS0FBSyxPQUFPO0FBSTNCLE9BQUksS0FBSyxRQUFRLFNBQ2YsYUFBWSxJQUFJLEtBQUssT0FBTztBQUU5QixPQUFJLFFBQVEsU0FBUyxRQUFRLENBQzNCLGFBQVk7T0FFWixhQUFZO0FBR2QsVUFBTztJQUNMO0lBQ0E7SUFDQSxhQUNJLEdBQUcsS0FBSyxPQUFPLFdBQVcsR0FBRyxXQUFXLGdCQUFnQixTQUN4RDtJQUNMO2FBQ1EsS0FBSyxTQUFTO0dBQ3ZCLE1BQU0sVUFDSixLQUFLLE9BQU8sYUFBYSxVQUFVLEdBQUcsS0FBSyxRQUFRLFFBQVEsS0FBSztBQUVsRSxVQUFPLENBQUMsU0FBUyxRQUFROztBQUczQixTQUFPLEVBQUU7O0NBR1gsTUFBYyxrQkFBa0I7RUFDOUIsTUFBTSxhQUFhLEtBQUssS0FBSztBQUM3QixNQUFJLENBQUMsS0FBSyxjQUNSLFFBQU8sRUFBRTtFQUdYLE1BQU0sRUFBRSxTQUFTLFFBQVEsTUFBTSxnQkFBZ0I7R0FDN0M7R0FDQSxhQUFhLEtBQUssUUFBUTtHQUMxQixXQUFXLEtBQUssUUFBUTtHQUN4QixpQkFBaUIsS0FBSyxPQUFPO0dBQzdCLHFCQUFxQixLQUFLLE9BQU87R0FDakMsV0FBVyxLQUFLLFFBQVEsYUFBYSxLQUFLLE9BQU87R0FDakQsS0FBSyxLQUFLLFFBQVE7R0FDbkIsQ0FBQztFQUVGLE1BQU0sT0FBTyxLQUFLLEtBQUssV0FBVyxLQUFLLFFBQVEsT0FBTyxhQUFhO0FBRW5FLE1BQUk7QUFDRixXQUFNLHVCQUF1QjtBQUM3QixXQUFNLFFBQVEsS0FBSztBQUNuQixTQUFNLGVBQWUsTUFBTSxLQUFLLFFBQVE7V0FDakMsR0FBRztBQUNWLFdBQU0sTUFBTSxnQ0FBZ0M7QUFDNUMsV0FBTSxNQUFNLEVBQVc7O0FBR3pCLE1BQUksUUFBUSxTQUFTLEdBQUc7R0FDdEIsTUFBTUMsU0FBTyxLQUFLLEtBQUssV0FBVyxLQUFLLFFBQVEsT0FBTyxhQUFhO0FBQ25FLFFBQUssUUFBUSxLQUFLO0lBQUUsTUFBTTtJQUFPLE1BQU1BO0lBQU0sQ0FBQzs7QUFHaEQsU0FBTzs7Q0FHVCxNQUFjLGVBQWUsUUFBa0I7QUFDN0MsU0FBTyxlQUFlO0dBQ3BCLFVBQVUsS0FBSyxRQUFRO0dBQ3ZCLGFBQWEsS0FBSyxRQUFRO0dBQzFCO0dBQ0EsV0FBVyxLQUFLLFFBQVE7R0FDeEIsS0FBSyxLQUFLLFFBQVE7R0FDbEIsWUFBWSxLQUFLLE9BQU87R0FDeEIsYUFBYSxLQUFLLFFBQVEsaUJBQWlCLEtBQUssT0FBTztHQUN2RCxTQUFTLFFBQVEsSUFBSSxtQkFBbUIsS0FBSyxPQUFPLFlBQVk7R0FDaEUsV0FBVyxLQUFLO0dBQ2pCLENBQUM7O0NBR0osTUFBYyxpQkFDWixjQUNBLFFBQ0E7QUFDQSxNQUFJLGNBQWM7O0dBQ2hCLE1BQU0sRUFBRSxNQUFNLGVBQVEsTUFBTSxhQUFhO0dBQ3pDLE1BQU0sY0FBYyxLQUFLQyxPQUFLLEdBQUcsS0FBSyxPQUFPLFdBQVcsV0FBVztHQUNuRSxNQUFNLHFCQUFxQixLQUN6QkEsT0FDQSxHQUFHLEtBQUssT0FBTyxXQUFXLGtCQUMzQjtHQUNELE1BQU0sYUFBYSxLQUFLQSxPQUFLLGtCQUFrQjtHQUMvQyxNQUFNLG9CQUFvQixLQUFLQSxPQUFLLDBCQUEwQjtHQUM5RCxNQUFNLG1CQUFtQixLQUFLQSxPQUFLLGFBQWE7R0FDaEQsTUFBTSxjQUNKLDRDQUNBLE9BQ0csS0FDRSxVQUNDLGtCQUFrQixNQUFNLDBCQUEwQixRQUNyRCxDQUNBLEtBQUssS0FBSztBQUNmLFNBQU0sZUFDSixhQUNBLGtCQUNFLE1BQ0EsS0FBSyxPQUFPLGtDQUNaLEtBQUssT0FBTyw0RUFBTSxxQ0FDbEIsS0FBSyxPQUFPLDhFQUFNLGNBQ25CLEdBQ0MsY0FDQSxNQUNGLE9BQ0Q7QUFDRCxTQUFNLGVBQ0osb0JBQ0EseUJBQ0UsNEJBQ0EsS0FBSyxPQUFPLDhFQUFNLHFDQUNsQixLQUFLLE9BQU8sOEVBQU0scUNBQ2xCLEtBQUssT0FBTyw0RkFBTSxpRkFBUywwQkFDM0IsS0FBSyxPQUFPLDRGQUFNLGlGQUFTLGlDQUMzQixLQUFLLE9BQU8sNEZBQU0saUZBQVMsT0FDNUIsR0FDQywwQ0FDQSxPQUNHLEtBQ0UsVUFDQyxnQkFBZ0IsTUFBTSwwQkFBMEIsUUFDbkQsQ0FDQSxLQUFLLEtBQUssR0FDYixNQUNGLE9BQ0Q7QUFDRCxTQUFNLGVBQWUsWUFBWSxzQkFBc0IsT0FBTztBQUM5RCxTQUFNLGVBQ0osbUJBQ0Esc0RBQStCLEtBQUssT0FBTyw0RkFBTSxpRkFBUyxPQUFNLE1BQU0sRUFDdEUsT0FDRDtBQUNELFNBQU0sZUFDSixrQkFDQSxrQkFBa0IsS0FBSyxPQUFPLFlBQVksaUJBQzNDO0FBQ0QsVUFBTztJQUNMO0tBQUUsTUFBTTtLQUFNLE1BQU07S0FBYTtJQUNqQztLQUFFLE1BQU07S0FBTSxNQUFNO0tBQW9CO0lBQ3hDO0tBQUUsTUFBTTtLQUFNLE1BQU07S0FBWTtJQUNoQztLQUFFLE1BQU07S0FBTSxNQUFNO0tBQW1CO0lBQ3ZDO0tBQUUsTUFBTTtLQUFNLE1BQU07S0FBa0I7SUFDdkM7O0FBRUgsU0FBTyxFQUFFOztDQUdYLEFBQVEsa0JBQWtCLEtBQWEsU0FBZTtBQUNwRCxNQUFJLENBQUMsUUFBUSxJQUFJLEtBQ2YsTUFBSyxLQUFLLE9BQU9DOzs7QUFpQnZCLGVBQXNCLGVBQ3BCLFNBQzZCO0FBQzdCLEtBQ0UsQ0FBQyxRQUFRLFlBRVQsUUFBUSxlQUNSLFFBQVEsT0FBTyxXQUFXLEVBRTFCO0NBR0YsTUFBTSxPQUFPLFFBQVEsYUFBYTtDQUdsQyxNQUFNLFdBRGdCLFFBQVEsTUFBTSxtQkFBbUIsa0JBRXJELFFBQVEsWUFDUixRQUFRLGFBQ1IsUUFBUSxRQUVSLFFBQVEsUUFDVDtBQUVELEtBQUk7RUFDRixNQUFNLE9BQU8sS0FBSyxRQUFRLFdBQVcsS0FBSztBQUMxQyxVQUFNLHlCQUF5QjtBQUMvQixVQUFNLFFBQVEsS0FBSztBQUNuQixRQUFNLGVBQWUsTUFBTSxTQUFTLFFBQVE7QUFDNUMsU0FBTztHQUFFLE1BQU07R0FBTSxNQUFNO0dBQU07VUFDMUIsR0FBRztBQUNWLFFBQU0sSUFBSSxNQUFNLG1DQUFtQyxFQUFFLE9BQU8sR0FBRyxDQUFDOzs7QUFlcEUsZUFBc0IsZ0JBQ3BCLFNBQzZDO0FBQzdDLEtBQUksQ0FBRSxNQUFNLGVBQWUsUUFBUSxXQUFXLENBQzVDLFFBQU87RUFBRSxTQUFTLEVBQUU7RUFBRSxLQUFLO0VBQUk7Q0FHakMsSUFBSSxTQUFTO0NBQ2IsSUFBSSxNQUFNO0NBQ1YsSUFBSUMsVUFBb0IsRUFBRTtBQUUxQixLQUFJLENBQUMsUUFBUSxhQUFhO0VBQ3hCLE1BQU0sWUFBWSxRQUFRLGFBQWEsUUFBUTtBQUUvQyxNQUFJLFFBQVEsb0JBQ1YsS0FBSTtBQUNGLFlBQVMsTUFBTSxjQUNiLEtBQUssUUFBUSxLQUFLLFFBQVEsb0JBQW9CLEVBQzlDLFFBQ0Q7V0FDTSxHQUFHO0FBQ1YsV0FBTSxLQUNKLGtDQUFrQyxRQUFRLHVCQUMxQyxFQUNEOztXQUVNLFVBQ1QsVUFBUztNQUVULFVBQVM7O0NBSWIsTUFBTSxRQUFRLE1BQU0sYUFBYSxRQUFRLFlBQVksRUFBRSxlQUFlLE1BQU0sQ0FBQztBQUU3RSxLQUFJLENBQUMsTUFBTSxRQUFRO0FBQ2pCLFVBQU0scURBQXFEO0FBQzNELFNBQU87R0FBRSxTQUFTLEVBQUU7R0FBRSxLQUFLO0dBQUk7O0FBR2pDLE1BQUssTUFBTSxRQUFRLE9BQU87QUFDeEIsTUFBSSxDQUFDLEtBQUssUUFBUSxDQUNoQjtFQUdGLE1BQU0sRUFBRSxLQUFLLFNBQVMsU0FBUyxnQkFBZ0IsTUFBTSxlQUNuRCxLQUFLLFFBQVEsWUFBWSxLQUFLLEtBQUssRUFDbkMsUUFBUSxhQUFhLEtBQ3RCO0FBRUQsU0FBTztBQUNQLFVBQVEsS0FBSyxHQUFHLFlBQVk7O0FBRzlCLEtBQUksSUFBSSxRQUFRLGtCQUFrQixHQUFHLEdBQ25DLFdBQVU7Ozs7Ozs7O0FBVVosS0FBSSxJQUFJLFFBQVEsYUFBYSxHQUFHLEdBQzlCLFdBQVU7OztBQUtaLE9BQU0sU0FBUztBQUVmLFFBQU87RUFDTDtFQUNBO0VBQ0Q7Ozs7O0FDOW1DSCxJQUFzQiwyQkFBdEIsY0FBdUQsUUFBUTtDQUM3RCxPQUFPLFFBQVEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO0NBRXBDLE9BQU8sUUFBUSxRQUFRLE1BQU0sRUFDM0IsYUFBYSxtREFDZCxDQUFDO0NBRUYsTUFBTSxPQUFPLE9BQU8sU0FBUyxRQUFRLEtBQUssRUFBRSxFQUMxQyxhQUNFLHNIQUNILENBQUM7Q0FFRixhQUFzQixPQUFPLE9BQU8sb0JBQW9CLEVBQ3RELGFBQWEsbUNBQ2QsQ0FBQztDQUVGLGtCQUFrQixPQUFPLE9BQU8sdUJBQXVCLGdCQUFnQixFQUNyRSxhQUFhLDBCQUNkLENBQUM7Q0FFRixTQUFTLE9BQU8sT0FBTyxhQUFhLE9BQU8sRUFDekMsYUFBYSxpREFDZCxDQUFDO0NBRUYsU0FBUyxPQUFPLFFBQVEsYUFBYSxPQUFPLEVBQzFDLGFBQWEsd0NBQ2QsQ0FBQztDQUVGLGFBQWE7QUFDWCxTQUFPO0dBQ0wsS0FBSyxLQUFLO0dBQ1YsWUFBWSxLQUFLO0dBQ2pCLGlCQUFpQixLQUFLO0dBQ3RCLFFBQVEsS0FBSztHQUNiLFFBQVEsS0FBSztHQUNkOzs7QUFzQ0wsU0FBZ0IsaUNBQ2QsU0FDQTtBQUNBLFFBQU87RUFDTCxLQUFLLFFBQVEsS0FBSztFQUNsQixpQkFBaUI7RUFDakIsUUFBUTtFQUNSLFFBQVE7RUFDUixHQUFHO0VBQ0o7Ozs7O0FDcEVILE1BQU1DLFVBQVEsYUFBYSxrQkFBa0I7QUFNN0MsZUFBc0IsY0FBYyxhQUFtQztDQUNyRSxNQUFNLFVBQVUsaUNBQWlDLFlBQVk7Q0FFN0QsZUFBZUMsYUFBVyxPQUFhO0FBQ3JDLFVBQU0seUJBQXlCQyxNQUFJO0FBQ25DLE1BQUksUUFBUSxPQUNWO0FBR0YsUUFBTUMsV0FBY0QsT0FBSyxFQUN2QixXQUFXLE1BQ1osQ0FBQzs7Q0FHSixlQUFlRSxpQkFBZSxNQUFjLFNBQWlCO0FBQzNELFVBQU0sbUJBQW1CLEtBQUs7QUFFOUIsTUFBSSxRQUFRLFFBQVE7QUFDbEIsV0FBTSxRQUFRO0FBQ2Q7O0FBR0YsUUFBTUMsZUFBa0IsTUFBTSxRQUFROztDQUd4QyxNQUFNLGtCQUFrQixRQUFRLFFBQVEsS0FBSyxRQUFRLGdCQUFnQjtDQUNyRSxNQUFNLFVBQVUsUUFBUSxRQUFRLEtBQUssUUFBUSxPQUFPO0FBRXBELFNBQU0sc0JBQXNCLFFBQVEsY0FBYyxnQkFBZ0IsR0FBRztDQUVyRSxNQUFNLEVBQUUsU0FBUyxZQUFZLGFBQWEsZ0JBQ3hDLE1BQU0sZUFDSixpQkFDQSxRQUFRLGFBQWEsUUFBUSxRQUFRLEtBQUssUUFBUSxXQUFXLEdBQUcsT0FDakU7QUFFSCxNQUFLLE1BQU0sVUFBVSxTQUFTO0VBQzVCLE1BQU0sWUFBWSxLQUFLLFNBQVMsR0FBRyxPQUFPLGtCQUFrQjtBQUM1RCxRQUFNSixhQUFXLFVBQVU7RUFFM0IsTUFBTSxpQkFDSixPQUFPLFNBQVMsV0FDWixHQUFHLFdBQVcsR0FBRyxPQUFPLGdCQUFnQixTQUN4QyxHQUFHLFdBQVcsR0FBRyxPQUFPLGdCQUFnQjtFQUM5QyxNQUFNSyxvQkFBNkM7R0FDakQsTUFBTSxHQUFHLFlBQVksR0FBRyxPQUFPO0dBQy9CLFNBQVMsWUFBWTtHQUNyQixLQUFLLE9BQU8sU0FBUyxjQUFjLENBQUMsT0FBTyxLQUFLLEdBQUc7R0FDbkQsTUFBTTtHQUNOLE9BQU8sQ0FBQyxlQUFlO0dBQ3ZCLEdBQUdDLE9BQ0QsYUFDQSxlQUNBLFlBQ0EsVUFDQSxXQUNBLFlBQ0EsV0FDQSxXQUNBLGNBQ0EsT0FDRDtHQUNGO0FBQ0QsTUFBSSxZQUFZLGNBQ2QsbUJBQWtCLGdCQUFnQkEsT0FDaEMsWUFBWSxlQUNaLFlBQ0EsU0FDRDtBQUVILE1BQUksT0FBTyxTQUFTLFNBQ2xCLG1CQUFrQixLQUFLLENBQUMsT0FBTyxTQUFTO09BQ25DOztHQUNMLE1BQU0sUUFBUSxHQUFHLFdBQVc7QUFDNUIscUJBQWtCLE9BQU87QUFDekIscUJBQWtCLFVBQVUsR0FBRyxXQUFXO0FBQzFDLDhDQUFrQiw2RUFBTyxLQUN2QixPQUNBLGtCQUFrQixTQUNsQixtQkFDQSwwQkFDRDtHQUNELElBQUksMEJBQTBCO0FBQzlCLGdDQUFJLGtCQUFrQix1RkFBUyxLQUM3QixLQUFJO0lBQ0YsTUFBTSxFQUFFLFVBQVVDLFFBQU0sa0JBQWtCLFFBQVEsS0FBSyxJQUFJLEVBQ3pELE9BQU8sR0FDUjtBQUNELFFBQUksU0FBUyxHQUNYLDJCQUEwQjtXQUV0QjtBQUlWLE9BQUksd0JBQ0YsbUJBQWtCLFVBQVUsRUFDMUIsTUFBTSxZQUNQO0dBRUgsTUFBTSxjQUFjLE1BQU0sTUFDeEIsbURBQ0QsQ0FBQyxNQUFNLFFBQVEsSUFBSSxNQUFNLENBQXlCO0FBQ25ELHFCQUFrQixlQUFlLEVBQy9CLHlCQUF5QixJQUFJLFlBQVksYUFBYSxVQUN2RDs7QUFHSCxNQUFJLE9BQU8sUUFBUSxNQUNqQixtQkFBa0IsT0FBTyxDQUFDLFFBQVE7V0FDekIsT0FBTyxRQUFRLE9BQ3hCLG1CQUFrQixPQUFPLENBQUMsT0FBTztBQUluQyxRQUFNSixpQkFEb0IsS0FBSyxXQUFXLGVBQWUsRUFHdkQsS0FBSyxVQUFVLG1CQUFtQixNQUFNLEVBQUUsR0FBRyxLQUM5QztBQUVELFFBQU1BLGlCQURlLEtBQUssV0FBVyxZQUFZLEVBQ2QsT0FBTyxhQUFhLE9BQU8sQ0FBQztBQUUvRCxVQUFNLEtBQUssR0FBRyxZQUFZLElBQUksT0FBTyxnQkFBZ0IsVUFBVTs7O0FBSW5FLFNBQVMsT0FBTyxhQUFxQixRQUFnQjtBQUNuRCxRQUFPLE9BQU8sWUFBWSxHQUFHLE9BQU8sZ0JBQWdCOztnQkFFdEMsT0FBTyxPQUFPLGtCQUFrQixZQUFZOzs7Ozs7QUNwSjVELElBQXNCLGlCQUF0QixjQUE2QyxRQUFRO0NBQ25ELE9BQU8sUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDO0NBRXhCLE9BQU8sUUFBUSxRQUFRLE1BQU0sRUFDM0IsYUFBYSx3REFDZCxDQUFDO0NBRUYsU0FBUyxPQUFPLE9BQU8sRUFBRSxVQUFVLE9BQU8sQ0FBQztDQUUzQyxTQUFrQixPQUFPLE9BQU8sYUFBYSxFQUMzQyxhQUNFLGlGQUNILENBQUM7Q0FFRixvQkFBb0IsT0FBTyxPQUFPLHFCQUFxQixLQUFLO0VBQzFELFdBQVcsU0FBUyxVQUFVO0VBQzlCLGFBQWE7RUFDZCxDQUFDO0NBRUYsaUJBQWlCLE9BQU8sT0FBTyxxQkFBcUIsUUFBUSxFQUMxRCxhQUFhLDhEQUNkLENBQUM7Q0FFRixVQUFVLE9BQU8sT0FBTyxnQkFBZ0IsT0FBTyxFQUM3QyxhQUFhLG9DQUNkLENBQUM7Q0FFRixVQUFVLE9BQU8sTUFBTSxnQkFBZ0IsRUFBRSxFQUFFLEVBQ3pDLGFBQWEsK0NBQ2QsQ0FBQztDQUVGLHVCQUF1QixPQUFPLFFBQVEsNEJBQTRCLE1BQU0sRUFDdEUsYUFBYSxrQ0FDZCxDQUFDO0NBRUYsbUJBQW1CLE9BQU8sUUFBUSx3QkFBd0IsT0FBTyxFQUMvRCxhQUFhLDhCQUNkLENBQUM7Q0FFRixnQkFBZ0IsT0FBTyxRQUFRLHFCQUFxQixNQUFNLEVBQ3hELGFBQ0Usb0ZBQ0gsQ0FBQztDQUVGLHNCQUFzQixPQUFPLFFBQVEsMkJBQTJCLE1BQU0sRUFDcEUsYUFBYSwwREFDZCxDQUFDO0NBRUYsZ0JBQWdCLE9BQU8sT0FBTyxvQkFBb0IsT0FBTyxFQUN2RCxhQUNFLG9FQUNILENBQUM7Q0FFRixTQUFTLE9BQU8sUUFBUSxhQUFhLE9BQU8sRUFDMUMsYUFBYSw4Q0FDZCxDQUFDO0NBRUYsYUFBYTtBQUNYLFNBQU87R0FDTCxNQUFNLEtBQUs7R0FDWCxNQUFNLEtBQUs7R0FDWCxtQkFBbUIsS0FBSztHQUN4QixnQkFBZ0IsS0FBSztHQUNyQixTQUFTLEtBQUs7R0FDZCxTQUFTLEtBQUs7R0FDZCxzQkFBc0IsS0FBSztHQUMzQixrQkFBa0IsS0FBSztHQUN2QixlQUFlLEtBQUs7R0FDcEIscUJBQXFCLEtBQUs7R0FDMUIsZUFBZSxLQUFLO0dBQ3BCLFFBQVEsS0FBSztHQUNkOzs7QUE4RUwsU0FBZ0IsdUJBQXVCLFNBQXFCO0FBQzFELFFBQU87RUFDTCxtQkFBbUI7RUFDbkIsZ0JBQWdCO0VBQ2hCLFNBQVM7RUFDVCxTQUFTLEVBQUU7RUFDWCxzQkFBc0I7RUFDdEIsa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixxQkFBcUI7RUFDckIsZUFBZTtFQUNmLFFBQVE7RUFDUixHQUFHO0VBQ0o7Ozs7O0FDbktILFNBQVMsU0FBUyxNQUFNO0FBR3RCLFFBQU8sS0FBSyxLQUFLLFFBQU07QUFDckIsU0FBTyxJQUFJLFdBQVcsS0FBSyxJQUFJLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxVQUFVLElBQUksR0FBRztHQUMvRSxDQUFDLEtBQUssSUFBSTs7QUFFZCxJQUFNLFNBQU4sTUFBYTtDQUNYLFNBQVM7Q0FDVDtDQUNBLFNBQVMsRUFBRTtDQUNYLGtDQUFrQixJQUFJLEtBQUs7Q0FDM0IsWUFBWSxTQUFRO0FBQ2xCLE9BQUssWUFBWTs7Q0FFbkIsS0FBSyxhQUFhLEVBQUUsRUFBRTtBQUVwQixPQUFLLFNBQVMsTUFBS0ssWUFBYSxLQUFLLFVBQVU7QUFDL0MsT0FBSyxTQUFTLE1BQUtDLE9BQVEsV0FBVztBQUN0QyxTQUFPLEtBQUs7O0NBRWQsYUFBYSxLQUFLLE9BQU8sRUFBRSxFQUFFO0VBQzNCLE1BQU0sTUFBTSxFQUFFO0VBQ2QsTUFBTSxRQUFRLE9BQU8sS0FBSyxJQUFJO0VBQzlCLE1BQU0sY0FBYyxFQUFFO0VBQ3RCLE1BQU0saUJBQWlCLEVBQUU7QUFDekIsT0FBSyxNQUFNLFFBQVEsTUFDakIsS0FBSSxNQUFLQyxxQkFBc0IsSUFBSSxNQUFNLENBQ3ZDLGFBQVksS0FBSyxLQUFLO01BRXRCLGdCQUFlLEtBQUssS0FBSztFQUc3QixNQUFNLGNBQWMsWUFBWSxPQUFPLGVBQWU7QUFDdEQsT0FBSyxNQUFNLFFBQVEsYUFBWTtHQUM3QixNQUFNQyxVQUFRLElBQUk7QUFDbEIsT0FBSUEsbUJBQWlCLEtBQ25CLEtBQUksS0FBSyxNQUFLQyxnQkFBaUIsQ0FDN0IsS0FDRCxFQUFFRCxRQUFNLENBQUM7WUFDRCxPQUFPQSxZQUFVLFlBQVlBLG1CQUFpQixPQUN2RCxLQUFJLEtBQUssTUFBS0UsZUFBZ0IsQ0FDNUIsS0FDRCxFQUFFRixRQUFNLFVBQVUsQ0FBQyxDQUFDO1lBQ1osT0FBT0EsWUFBVSxTQUMxQixLQUFJLEtBQUssTUFBS0csa0JBQW1CLENBQy9CLEtBQ0QsRUFBRUgsUUFBTSxDQUFDO1lBQ0QsT0FBT0EsWUFBVSxVQUMxQixLQUFJLEtBQUssTUFBS0ksZ0JBQWlCLENBQzdCLEtBQ0QsRUFBRUosUUFBTSxDQUFDO1lBQ0RBLG1CQUFpQixPQUFPO0lBQ2pDLE1BQU0sWUFBWSxNQUFLSyxlQUFnQkwsUUFBTTtBQUM3QyxRQUFJLGNBQWMsaUJBQ2hCLEtBQUksS0FBSyxNQUFLTSxpQkFBa0IsQ0FDOUIsS0FDRCxFQUFFTixRQUFNLENBQUM7YUFDRCxjQUFjLDhCQUV2QixNQUFJLElBQUksSUFBSSxHQUFHLElBQUlBLFFBQU0sUUFBUSxLQUFJO0FBQ25DLFNBQUksS0FBSyxHQUFHO0FBQ1osU0FBSSxLQUFLLE1BQUtPLFlBQWEsQ0FDekIsR0FBRyxNQUNILEtBQ0QsQ0FBQyxDQUFDO0FBQ0gsU0FBSSxLQUFLLEdBQUcsTUFBS1YsWUFBYUcsUUFBTSxJQUFJLENBQ3RDLEdBQUcsTUFDSCxLQUNELENBQUMsQ0FBQzs7U0FFQTtLQUVMLE1BQU0sTUFBTUEsUUFBTSxLQUFLLE1BQUksTUFBS1EsbUJBQW9CLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSTtBQUNqRSxTQUFJLEtBQUssR0FBRyxNQUFLQyxZQUFhLENBQzVCLEtBQ0QsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHOztjQUVOLE9BQU9ULFlBQVUsVUFBVTtBQUNwQyxRQUFJLEtBQUssR0FBRztBQUNaLFFBQUksS0FBSyxNQUFLVSxPQUFRLENBQ3BCLEdBQUcsTUFDSCxLQUNELENBQUMsQ0FBQztBQUNILFFBQUlWLFNBQU87S0FDVCxNQUFNLFVBQVVBO0FBQ2hCLFNBQUksS0FBSyxHQUFHLE1BQUtILFlBQWEsU0FBUyxDQUNyQyxHQUFHLE1BQ0gsS0FDRCxDQUFDLENBQUM7Ozs7QUFLVCxNQUFJLEtBQUssR0FBRztBQUNaLFNBQU87O0NBRVQsYUFBYSxTQUFPO0FBQ2xCLFNBQU9HLG1CQUFpQixRQUFRQSxtQkFBaUIsVUFBVTtHQUN6RDtHQUNBO0dBQ0E7R0FDRCxDQUFDLFNBQVMsT0FBT0EsUUFBTTs7Q0FFMUIsZ0JBQWdCLEtBQUs7QUFDbkIsTUFBSSxNQUFLVyxlQUFnQixJQUFJLElBQUksQ0FDL0IsUUFBTyxNQUFLQSxlQUFnQixJQUFJLElBQUk7RUFFdEMsTUFBTSxPQUFPLE1BQUtDLGlCQUFrQixJQUFJO0FBQ3hDLFFBQUtELGVBQWdCLElBQUksS0FBSyxLQUFLO0FBQ25DLFNBQU87O0NBRVQsa0JBQWtCLEtBQUs7QUFDckIsTUFBSSxDQUFDLElBQUksT0FFUCxRQUFPO0VBRVQsTUFBTSxnQkFBZ0IsTUFBS0UsWUFBYSxJQUFJLEdBQUc7QUFDL0MsTUFBSSxJQUFJLGNBQWMsTUFDcEIsUUFBTztBQUVULE9BQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLFFBQVEsSUFDN0IsS0FBSSxrQkFBa0IsTUFBS0EsWUFBYSxJQUFJLEdBQUcsSUFBSSxJQUFJLGNBQWMsTUFDbkUsUUFBTztBQUdYLFNBQU8sZ0JBQWdCLG1CQUFtQjs7Q0FFNUMsb0JBQW9CLFNBQU87QUFDekIsTUFBSWIsbUJBQWlCLEtBQ25CLFFBQU8sSUFBSSxNQUFLYyxVQUFXZCxRQUFNLENBQUM7V0FDekIsT0FBT0EsWUFBVSxZQUFZQSxtQkFBaUIsT0FDdkQsUUFBTyxLQUFLLFVBQVVBLFFBQU0sVUFBVSxDQUFDO1dBQzlCLE9BQU9BLFlBQVUsU0FDMUIsUUFBT0E7V0FDRSxPQUFPQSxZQUFVLFVBQzFCLFFBQU9BLFFBQU0sVUFBVTtXQUNkQSxtQkFBaUIsTUFFMUIsUUFBTyxJQURLQSxRQUFNLEtBQUssTUFBSSxNQUFLUSxtQkFBb0IsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQ2xEO1dBQ04sT0FBT1IsWUFBVSxVQUFVO0FBQ3BDLE9BQUksQ0FBQ0EsUUFDSCxPQUFNLElBQUksTUFBTSxxQkFBcUI7QUFRdkMsVUFBTyxJQU5LLE9BQU8sS0FBS0EsUUFBTSxDQUFDLEtBQUssUUFBTTtBQUN4QyxXQUFPLEdBQUcsU0FBUyxDQUNqQixJQUNELENBQUMsQ0FBQyxLQUNILE1BQUtRLG1CQUFvQlIsUUFBTSxLQUFLO0tBQ3BDLENBQUMsS0FBSyxJQUFJLENBQ0c7O0FBRWpCLFFBQU0sSUFBSSxNQUFNLHFCQUFxQjs7Q0FFdkMsc0JBQXNCLFNBQU87QUFDM0IsU0FBTyxPQUFPQSxZQUFVLFlBQVksT0FBT0EsWUFBVSxZQUFZLE9BQU9BLFlBQVUsYUFBYUEsbUJBQWlCLFVBQVVBLG1CQUFpQixRQUFRQSxtQkFBaUIsU0FBUyxNQUFLSyxlQUFnQkwsUUFBTSxLQUFLOztDQUUvTSxRQUFRLE1BQU07QUFDWixTQUFPLElBQUksU0FBUyxLQUFLLENBQUM7O0NBRTVCLGFBQWEsTUFBTTtBQUNqQixTQUFPLEtBQUssU0FBUyxLQUFLLENBQUM7O0NBRTdCLGFBQWEsTUFBTTtFQUNqQixNQUFNLFFBQVEsU0FBUyxLQUFLO0FBQzVCLE1BQUksTUFBTSxTQUFTLEtBQUssT0FDdEIsTUFBSyxTQUFTLE1BQU07QUFFdEIsU0FBTyxHQUFHLE1BQU07O0NBRWxCLGtCQUFrQixNQUFNLFNBQU87QUFDN0IsU0FBTyxHQUFHLE1BQUtTLFlBQWEsS0FBSyxHQUFHLEtBQUssVUFBVVQsUUFBTTs7Q0FFM0QsZ0JBQWdCLE1BQU0sU0FBTztBQUMzQixTQUFPLEdBQUcsTUFBS1MsWUFBYSxLQUFLLEdBQUcsS0FBSyxVQUFVVCxRQUFNOztDQUUzRCxtQkFBbUIsTUFBTSxTQUFPO0FBQzlCLE1BQUksT0FBTyxNQUFNQSxRQUFNLENBQ3JCLFFBQU8sR0FBRyxNQUFLUyxZQUFhLEtBQUssQ0FBQztBQUVwQyxVQUFPVCxTQUFQO0dBQ0UsS0FBSyxTQUNILFFBQU8sR0FBRyxNQUFLUyxZQUFhLEtBQUssQ0FBQztHQUNwQyxLQUFLLFVBQ0gsUUFBTyxHQUFHLE1BQUtBLFlBQWEsS0FBSyxDQUFDO0dBQ3BDLFFBQ0UsUUFBTyxHQUFHLE1BQUtBLFlBQWEsS0FBSyxHQUFHVDs7O0NBRzFDLGlCQUFpQixNQUFNLFNBQU87QUFDNUIsU0FBTyxHQUFHLE1BQUtTLFlBQWEsS0FBSyxHQUFHVDs7Q0FFdEMsV0FBVyxTQUFPO0VBQ2hCLFNBQVMsTUFBTSxHQUFHLE9BQU8sR0FBRztBQUMxQixVQUFPLEVBQUUsU0FBUyxNQUFNLElBQUk7O0VBRTlCLE1BQU0sSUFBSSxPQUFPQSxRQUFNLGFBQWEsR0FBRyxHQUFHLFVBQVUsQ0FBQztFQUNyRCxNQUFNLElBQUksTUFBTUEsUUFBTSxZQUFZLENBQUMsVUFBVSxDQUFDO0VBQzlDLE1BQU0sSUFBSSxNQUFNQSxRQUFNLGFBQWEsQ0FBQyxVQUFVLENBQUM7RUFDL0MsTUFBTSxNQUFNLE1BQU1BLFFBQU0sZUFBZSxDQUFDLFVBQVUsQ0FBQztFQUNuRCxNQUFNLElBQUksTUFBTUEsUUFBTSxlQUFlLENBQUMsVUFBVSxDQUFDO0VBQ2pELE1BQU0sS0FBSyxNQUFNQSxRQUFNLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxFQUFFO0FBRzFELFNBRGMsR0FBR0EsUUFBTSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUc7O0NBR3hFLGlCQUFpQixNQUFNLFNBQU87QUFDNUIsU0FBTyxHQUFHLE1BQUtTLFlBQWEsS0FBSyxHQUFHLE1BQUtLLFVBQVdkLFFBQU07O0NBRTVELFFBQVEsVUFBVSxFQUFFLEVBQUU7RUFDcEIsTUFBTSxFQUFFLGVBQWUsVUFBVTtFQUNqQyxNQUFNLGVBQWU7RUFDckIsTUFBTSxNQUFNLEVBQUU7QUFDZCxPQUFJLElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxPQUFPLFFBQVEsS0FBSTtHQUN6QyxNQUFNLElBQUksS0FBSyxPQUFPO0FBRXRCLE9BQUksRUFBRSxPQUFPLE9BQU8sRUFBRSxPQUFPLEtBQUs7O0FBRWhDLFFBQUksS0FBSyxPQUFPLElBQUksT0FBTyx1QkFBTSxLQUFLLE9BQU8sSUFBSSxnRUFBSSxNQUFNLEdBQUcsRUFBRSxPQUFPLE1BQUssRUFBRSxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUs7QUFDaEcsVUFBSztBQUNMOztBQUVGLFFBQUksS0FBSyxFQUFFO2NBRVAsY0FBYztJQUNoQixNQUFNLElBQUksYUFBYSxLQUFLLEVBQUU7QUFDOUIsUUFBSSxLQUFLLEVBQUUsR0FDVCxLQUFJLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBRW5ELEtBQUksS0FBSyxFQUFFO1NBR2IsS0FBSSxLQUFLLEVBQUU7O0VBS2pCLE1BQU0sZ0JBQWdCLEVBQUU7QUFDeEIsT0FBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksUUFBUSxLQUFJO0dBQ2pDLE1BQU0sSUFBSSxJQUFJO0FBQ2QsT0FBSSxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksT0FBTyxJQUMvQixlQUFjLEtBQUssRUFBRTs7QUFHekIsU0FBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JQLFNBQWdCLFVBQVUsS0FBSyxTQUFTO0FBQzFDLFFBQU8sSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLFFBQVEsQ0FBQyxLQUFLLEtBQUs7Ozs7Ozs7O0dDNVE3QyxTQUFnQixjQUFjLE9BQU8sV0FBVztDQUNsRCxJQUFJLGNBQWM7QUFDbEIsTUFBSyxNQUFNLE9BQU8sT0FBTTtBQUN0QixNQUFJLENBQUMsVUFBVSxJQUFJLENBQ2pCO0FBRUYsUUFBTSxlQUFlO0FBQ3JCLGlCQUFlOztBQUVqQixPQUFNLE9BQU8sWUFBWTtBQUN6QixRQUFPOzs7OztBQ1pULFNBQWdCLFVBQVUsUUFBUSxPQUFPLFNBQVM7QUFDaEQsUUFBTyxrQkFBa0IsUUFBUSx1QkFBTyxJQUFJLEtBQUssRUFBRSxRQUFROztBQUU3RCxTQUFTLGtCQUFrQixRQUFRLE9BQU8sTUFBTSxTQUFTO0NBQ3ZELE1BQU0sU0FBUyxFQUFFO0NBQ2pCLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FDbkIsR0FBRyxRQUFRLE9BQU8sRUFDbEIsR0FBRyxRQUFRLE1BQU0sQ0FDbEIsQ0FBQztBQUVGLE1BQUssTUFBTSxPQUFPLE1BQUs7QUFFckIsTUFBSSxRQUFRLFlBQ1Y7RUFFRixNQUFNLElBQUksT0FBTztBQUNqQixNQUFJLENBQUMsT0FBTyxPQUFPLE9BQU8sSUFBSSxFQUFFO0FBQzlCLFVBQU8sT0FBTztBQUNkOztFQUVGLE1BQU0sSUFBSSxNQUFNO0FBQ2hCLE1BQUksZ0JBQWdCLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUU7QUFDNUUsUUFBSyxJQUFJLEVBQUU7QUFDWCxRQUFLLElBQUksRUFBRTtBQUNYLFVBQU8sT0FBTyxhQUFhLEdBQUcsR0FBRyxNQUFNLFFBQVE7QUFDL0M7O0FBR0YsU0FBTyxPQUFPOztBQUVoQixRQUFPOztBQUVULFNBQVMsYUFBYSxNQUFNLE9BQU8sTUFBTSxVQUFVO0NBQ2pELFFBQVE7Q0FDUixNQUFNO0NBQ04sTUFBTTtDQUNQLEVBQUU7QUFFRCxLQUFJLFlBQVksS0FBSyxJQUFJLFlBQVksTUFBTSxDQUN6QyxRQUFPLGtCQUFrQixNQUFNLE9BQU8sTUFBTSxRQUFRO0FBRXRELEtBQUksV0FBVyxLQUFLLElBQUksV0FBVyxNQUFNLEVBQUU7QUFFekMsTUFBSSxNQUFNLFFBQVEsS0FBSyxJQUFJLE1BQU0sUUFBUSxNQUFNLEVBQUU7QUFDL0MsT0FBSSxRQUFRLFdBQVcsUUFDckIsUUFBTyxLQUFLLE9BQU8sTUFBTTtBQUUzQixVQUFPOztBQUdULE1BQUksZ0JBQWdCLE9BQU8saUJBQWlCLEtBQUs7QUFDL0MsT0FBSSxRQUFRLFNBQVMsUUFDbkIsUUFBTyxJQUFJLElBQUksQ0FDYixHQUFHLE1BQ0gsR0FBRyxNQUNKLENBQUM7QUFFSixVQUFPOztBQUdULE1BQUksZ0JBQWdCLE9BQU8saUJBQWlCLEtBQUs7QUFDL0MsT0FBSSxRQUFRLFNBQVMsUUFDbkIsUUFBTyxJQUFJLElBQUksQ0FDYixHQUFHLE1BQ0gsR0FBRyxNQUNKLENBQUM7QUFFSixVQUFPOzs7QUFHWCxRQUFPOzs7Ozs7R0FNTCxTQUFTLFlBQVksU0FBTztBQUM5QixRQUFPLE9BQU8sZUFBZWUsUUFBTSxLQUFLLE9BQU87O0FBRWpELFNBQVMsV0FBVyxTQUFPO0FBQ3pCLFFBQU8sT0FBT0EsUUFBTSxPQUFPLGNBQWM7O0FBRTNDLFNBQVMsZ0JBQWdCLFNBQU87QUFDOUIsUUFBT0EsWUFBVSxRQUFRLE9BQU9BLFlBQVU7O0FBRTVDLFNBQVMsUUFBUSxRQUFRO0NBQ3ZCLE1BQU0sU0FBUyxPQUFPLHNCQUFzQixPQUFPO0FBQ25ELGVBQWMsU0FBUyxRQUFNLE9BQU8sVUFBVSxxQkFBcUIsS0FBSyxRQUFRLElBQUksQ0FBQztBQUNyRixRQUFPLEtBQUssR0FBRyxPQUFPLEtBQUssT0FBTyxDQUFDO0FBQ25DLFFBQU87Ozs7Ozs7R0N2RkwsU0FBUyxPQUFPLFlBQVk7QUFDOUIsUUFBTyxhQUFhLE1BQU0sS0FBSyxhQUFhLFFBQVEsS0FBSyxhQUFhLFFBQVE7O0FBRWhGLElBQWEsVUFBYixNQUFxQjtDQUNuQixjQUFjO0NBQ2QsWUFBWTtDQUNaO0NBQ0EsWUFBWSxRQUFPO0FBQ2pCLFFBQUtDLFNBQVU7O0NBRWpCLElBQUksV0FBVztBQUNiLFNBQU8sTUFBS0M7O0NBRWQsSUFBSSxTQUFTO0FBQ1gsU0FBTyxNQUFLRDs7Ozs7SUFLVixLQUFLLFFBQVEsR0FBRztBQUNsQixTQUFPLE1BQUtBLE9BQVEsTUFBS0MsV0FBWSxVQUFVOzs7Ozs7SUFNN0MsTUFBTSxPQUFPLEtBQUs7QUFDcEIsU0FBTyxNQUFLRCxPQUFRLE1BQU0sTUFBS0MsV0FBWSxPQUFPLE1BQUtBLFdBQVksSUFBSTs7OztJQUlyRSxLQUFLLFFBQVEsR0FBRztBQUNsQixRQUFLQSxZQUFhOztDQUVwQixrQkFBa0I7QUFDaEIsU0FBTSxNQUFLQyxXQUFZLEtBQUssS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUNyRCxNQUFLLE1BQU07QUFHYixNQUFJLENBQUMsS0FBSyxrQkFBa0IsSUFBSSxLQUFLLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRTtHQUN0RCxNQUFNLFVBQVUsUUFBUSxLQUFLLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLEdBQUc7R0FDOUQsTUFBTSxXQUFXLE1BQUtEO0FBQ3RCLFNBQU0sSUFBSSxZQUFZLHNFQUFzRSxTQUFTLE9BQU8sUUFBUSxJQUFJOzs7Q0FHNUgsY0FBYyxVQUFVLEVBQ3RCLGNBQWMsTUFDZixFQUFFO0FBQ0QsU0FBTSxDQUFDLEtBQUssS0FBSyxFQUFDO0dBQ2hCLE1BQU0sT0FBTyxLQUFLLE1BQU07QUFDeEIsT0FBSSxNQUFLQyxXQUFZLEtBQUssS0FBSyxJQUFJLEtBQUssa0JBQWtCLENBQ3hELE1BQUssTUFBTTtZQUNGLFFBQVEsZ0JBQWdCLEtBQUssTUFBTSxLQUFLLElBRWpELFFBQU0sQ0FBQyxLQUFLLGtCQUFrQixJQUFJLENBQUMsS0FBSyxLQUFLLENBQzNDLE1BQUssTUFBTTtPQUdiOzs7OztJQU1GLE1BQU07QUFDUixTQUFPLE1BQUtELFlBQWEsTUFBS0QsT0FBUTs7Q0FFeEMsbUJBQW1CO0FBQ2pCLFNBQU8sS0FBSyxNQUFNLEtBQUssUUFBUSxLQUFLLFdBQVcsT0FBTzs7Q0FFeEQsV0FBVyxjQUFjO0FBQ3ZCLFNBQU8sTUFBS0EsT0FBUSxXQUFXLGNBQWMsTUFBS0MsU0FBVTs7Q0FFOUQsTUFBTSxRQUFRO0FBQ1osTUFBSSxDQUFDLE9BQU8sT0FDVixPQUFNLElBQUksTUFBTSxVQUFVLE9BQU8sa0NBQWtDO0FBRXJFLFNBQU8sWUFBWSxNQUFLQTtBQUN4QixTQUFPLE1BQUtELE9BQVEsTUFBTSxPQUFPOzs7QUFNckMsU0FBUyxRQUFRLE1BQU07QUFDckIsUUFBTztFQUNMLElBQUk7RUFDSjtFQUNEOztBQUVILFNBQVMsVUFBVTtBQUNqQixRQUFPLEVBQ0wsSUFBSSxPQUNMOzs7Ozs7R0FNQyxTQUFnQixPQUFPLE1BQU0sU0FBUyxFQUN4QyxXQUFXLE1BQ1osRUFBRTtBQUNELFFBQU8sS0FBSyxhQUFhLEtBQUssU0FBTyxHQUNoQyxNQUFNLEtBQ1IsR0FBRyxPQUFPOztBQUVmLFNBQVMsU0FBUyxTQUFPO0FBQ3ZCLFFBQU8sT0FBT0csWUFBVSxZQUFZQSxZQUFVOztBQUVoRCxTQUFTLGVBQWUsUUFBUSxNQUFNO0NBQ3BDLE1BQU0sTUFBTSxLQUFLO0FBQ2pCLEtBQUksQ0FBQyxJQUNILE9BQU0sSUFBSSxNQUFNLDZEQUE2RDtBQUUvRSxRQUFPLE9BQU87O0FBRWhCLFNBQVMsZ0JBQWdCLFFBQVEsU0FBTztDQUN0QyxNQUFNLEVBQUUsTUFBTSxNQUFNLG1CQUFVQztDQUM5QixNQUFNLGVBQWUsZUFBZSxRQUFRLEtBQUs7QUFDakQsS0FBSSxpQkFBaUIsT0FDbkIsUUFBTyxPQUFPLE9BQU8sUUFBUSxPQUFPLE1BQU1ELFFBQU0sQ0FBQztBQUVuRCxLQUFJLE1BQU0sUUFBUSxhQUFhLEVBQUU7QUFFL0IsYUFEYSxhQUFhLEdBQUcsR0FBRyxFQUNmO0dBQ2Y7R0FDQSxNQUFNLEtBQUssTUFBTSxFQUFFO0dBQ25CO0dBQ0QsQ0FBQztBQUNGLFNBQU87O0FBRVQsS0FBSSxTQUFTLGFBQWEsRUFBRTtBQUMxQixhQUFXLGNBQWM7R0FDdkI7R0FDQSxNQUFNLEtBQUssTUFBTSxFQUFFO0dBQ25CO0dBQ0QsQ0FBQztBQUNGLFNBQU87O0FBRVQsT0FBTSxJQUFJLE1BQU0sb0JBQW9COztBQUV0QyxTQUFTLHFCQUFxQixRQUFRLFNBQU87Q0FDM0MsTUFBTSxFQUFFLE1BQU0sTUFBTSxtQkFBVUM7Q0FDOUIsTUFBTSxlQUFlLGVBQWUsUUFBUSxLQUFLO0FBQ2pELEtBQUksaUJBQWlCLE9BQ25CLFFBQU8sT0FBTyxPQUFPLFFBQVEsT0FBTyxNQUFNLENBQ3hDRCxRQUNELENBQUMsQ0FBQztBQUVMLEtBQUksTUFBTSxRQUFRLGFBQWEsRUFBRTtBQUMvQixNQUFJQyxRQUFNLEtBQUssV0FBVyxFQUN4QixjQUFhLEtBQUtELFFBQU07TUFHeEIsWUFEYSxhQUFhLEdBQUcsR0FBRyxFQUNmO0dBQ2YsTUFBTUMsUUFBTTtHQUNaLE1BQU1BLFFBQU0sS0FBSyxNQUFNLEVBQUU7R0FDekIsT0FBT0EsUUFBTTtHQUNkLENBQUM7QUFFSixTQUFPOztBQUVULEtBQUksU0FBUyxhQUFhLEVBQUU7QUFDMUIsYUFBVyxjQUFjO0dBQ3ZCO0dBQ0EsTUFBTSxLQUFLLE1BQU0sRUFBRTtHQUNuQjtHQUNELENBQUM7QUFDRixTQUFPOztBQUVULE9BQU0sSUFBSSxNQUFNLG9CQUFvQjs7QUFFdEMsU0FBZ0IsV0FBVyxRQUFRLE1BQU07QUFDdkMsU0FBTyxLQUFLLE1BQVo7RUFDRSxLQUFLLFFBQ0gsUUFBTyxVQUFVLFFBQVEsS0FBSyxNQUFNO0VBQ3RDLEtBQUssUUFDSCxRQUFPLGdCQUFnQixRQUFRLEtBQUs7RUFDdEMsS0FBSyxhQUNILFFBQU8scUJBQXFCLFFBQVEsS0FBSzs7O0FBTy9DLFNBQVMsR0FBRyxTQUFTO0FBQ25CLFNBQVEsWUFBVTtBQUNoQixPQUFLLE1BQU1DLFdBQVMsU0FBUTtHQUMxQixNQUFNLFNBQVNBLFFBQU0sUUFBUTtBQUM3QixPQUFJLE9BQU8sR0FBSSxRQUFPOztBQUV4QixTQUFPLFNBQVM7Ozs7OztHQU1oQixTQUFTQyxPQUFLLFFBQVEsV0FBVztDQUNuQyxNQUFNLFlBQVksVUFBVSxVQUFVO0FBQ3RDLFNBQVEsWUFBVTtFQUNoQixNQUFNLE1BQU0sRUFBRTtFQUNkLE1BQU0sUUFBUSxPQUFPLFFBQVE7QUFDN0IsTUFBSSxDQUFDLE1BQU0sR0FBSSxRQUFPLFFBQVEsSUFBSTtBQUNsQyxNQUFJLEtBQUssTUFBTSxLQUFLO0FBQ3BCLFNBQU0sQ0FBQyxRQUFRLEtBQUssRUFBQztBQUNuQixPQUFJLENBQUMsVUFBVSxRQUFRLENBQUMsR0FBSTtHQUM1QixNQUFNLFNBQVMsT0FBTyxRQUFRO0FBQzlCLE9BQUksQ0FBQyxPQUFPLEdBQ1YsT0FBTSxJQUFJLFlBQVksd0JBQXdCLFVBQVUsR0FBRztBQUU3RCxPQUFJLEtBQUssT0FBTyxLQUFLOztBQUV2QixTQUFPLFFBQVEsSUFBSTs7Ozs7O0dBTW5CLFNBQVMsTUFBTSxRQUFRLFdBQVc7Q0FDcEMsTUFBTSxZQUFZLFVBQVUsVUFBVTtBQUN0QyxTQUFRLFlBQVU7RUFDaEIsTUFBTSxRQUFRLE9BQU8sUUFBUTtBQUM3QixNQUFJLENBQUMsTUFBTSxHQUFJLFFBQU8sU0FBUztFQUMvQixNQUFNLE1BQU0sQ0FDVixNQUFNLEtBQ1A7QUFDRCxTQUFNLENBQUMsUUFBUSxLQUFLLEVBQUM7QUFDbkIsT0FBSSxDQUFDLFVBQVUsUUFBUSxDQUFDLEdBQUk7R0FDNUIsTUFBTSxTQUFTLE9BQU8sUUFBUTtBQUM5QixPQUFJLENBQUMsT0FBTyxHQUNWLE9BQU0sSUFBSSxZQUFZLHdCQUF3QixVQUFVLEdBQUc7QUFFN0QsT0FBSSxLQUFLLE9BQU8sS0FBSzs7QUFFdkIsU0FBTyxRQUFRLElBQUk7OztBQUd2QixTQUFTLEdBQUcsV0FBVyxXQUFXLGFBQWE7Q0FDN0MsTUFBTSxZQUFZLFVBQVUsVUFBVTtBQUN0QyxTQUFRLFlBQVU7RUFDaEIsTUFBTSxXQUFXLFFBQVE7RUFDekIsTUFBTSxNQUFNLFVBQVUsUUFBUTtBQUM5QixNQUFJLENBQUMsSUFBSSxHQUFJLFFBQU8sU0FBUztBQUU3QixNQUFJLENBRFEsVUFBVSxRQUFRLENBQ3JCLEdBQ1AsT0FBTSxJQUFJLFlBQVksZ0NBQWdDLFVBQVUsR0FBRztFQUVyRSxNQUFNSCxVQUFRLFlBQVksUUFBUTtBQUNsQyxNQUFJLENBQUNBLFFBQU0sSUFBSTtHQUNiLE1BQU0sZUFBZSxRQUFRLE9BQU8sUUFBUSxNQUFNLFFBQVEsU0FBUztHQUNuRSxNQUFNLGNBQWMsZUFBZSxJQUFJLGVBQWUsUUFBUSxPQUFPO0dBQ3JFLE1BQU0sT0FBTyxRQUFRLE9BQU8sTUFBTSxVQUFVLFlBQVk7QUFDeEQsU0FBTSxJQUFJLFlBQVksK0JBQStCLEtBQUssR0FBRzs7QUFFL0QsU0FBTyxRQUFRLE9BQU8sSUFBSSxNQUFNQSxRQUFNLEtBQUssQ0FBQzs7O0FBR2hELFNBQVNJLFFBQU0sUUFBUTtBQUNyQixTQUFRLFlBQVU7RUFDaEIsTUFBTSxTQUFTLE9BQU8sUUFBUTtBQUM5QixNQUFJLENBQUMsT0FBTyxHQUFJLFFBQU8sU0FBUztFQUNoQyxJQUFJLE9BQU8sRUFDVCxXQUFXLE1BQ1o7QUFDRCxPQUFLLE1BQU0sVUFBVSxPQUFPLEtBQzFCLEtBQUksT0FBTyxXQUFXLFlBQVksV0FBVyxLQUMzQyxRQUFPLFVBQVUsTUFBTSxPQUFPO0FBR2xDLFNBQU8sUUFBUSxLQUFLOzs7QUFHeEIsU0FBUyxPQUFPLFFBQVE7QUFDdEIsU0FBUSxZQUFVO0VBQ2hCLE1BQU0sT0FBTyxFQUFFO0FBQ2YsU0FBTSxDQUFDLFFBQVEsS0FBSyxFQUFDO0dBQ25CLE1BQU0sU0FBUyxPQUFPLFFBQVE7QUFDOUIsT0FBSSxDQUFDLE9BQU8sR0FBSTtBQUNoQixRQUFLLEtBQUssT0FBTyxLQUFLO0FBQ3RCLFdBQVEsZUFBZTs7QUFFekIsTUFBSSxLQUFLLFdBQVcsRUFBRyxRQUFPLFNBQVM7QUFDdkMsU0FBTyxRQUFRLEtBQUs7OztBQUd4QixTQUFTLFNBQVMsTUFBTSxRQUFRLE9BQU87Q0FDckMsTUFBTSxPQUFPLFVBQVUsS0FBSztDQUM1QixNQUFNLFFBQVEsVUFBVSxNQUFNO0FBQzlCLFNBQVEsWUFBVTtBQUNoQixNQUFJLENBQUMsS0FBSyxRQUFRLENBQUMsR0FDakIsUUFBTyxTQUFTO0VBRWxCLE1BQU0sU0FBUyxPQUFPLFFBQVE7QUFDOUIsTUFBSSxDQUFDLE9BQU8sR0FDVixPQUFNLElBQUksWUFBWSx3QkFBd0IsS0FBSyxHQUFHO0FBRXhELE1BQUksQ0FBQyxNQUFNLFFBQVEsQ0FBQyxHQUNsQixPQUFNLElBQUksWUFBWSxrQkFBa0IsTUFBTSx3QkFBd0IsS0FBSyxHQUFHO0FBRWhGLFNBQU8sUUFBUSxPQUFPLEtBQUs7OztBQUcvQixTQUFTLFVBQVUsS0FBSztBQUN0QixTQUFRLFlBQVU7QUFDaEIsVUFBUSxpQkFBaUI7QUFDekIsTUFBSSxDQUFDLFFBQVEsV0FBVyxJQUFJLENBQUUsUUFBTyxTQUFTO0FBQzlDLFVBQVEsS0FBSyxJQUFJLE9BQU87QUFDeEIsVUFBUSxpQkFBaUI7QUFDekIsU0FBTyxRQUFRLE9BQVU7OztBQU03QixNQUFNLGtCQUFrQjtBQUN4QixTQUFnQixRQUFRLFNBQVM7O0FBQy9CLFNBQVEsaUJBQWlCO0NBQ3pCLE1BQU0sd0JBQU0sUUFBUSxNQUFNLGdCQUFnQixrRUFBRztBQUM3QyxLQUFJLENBQUMsSUFBSyxRQUFPLFNBQVM7QUFDMUIsU0FBUSxLQUFLLElBQUksT0FBTztBQUN4QixRQUFPLFFBQVEsSUFBSTs7QUFFckIsU0FBUyxlQUFlLFNBQVM7QUFDL0IsS0FBSSxRQUFRLE1BQU0sS0FBSyxLQUFNLFFBQU8sU0FBUztBQUM3QyxTQUFRLE1BQU07QUFFZCxTQUFPLFFBQVEsTUFBTSxFQUFyQjtFQUNFLEtBQUs7QUFDSCxXQUFRLE1BQU07QUFDZCxVQUFPLFFBQVEsS0FBSztFQUN0QixLQUFLO0FBQ0gsV0FBUSxNQUFNO0FBQ2QsVUFBTyxRQUFRLElBQUs7RUFDdEIsS0FBSztBQUNILFdBQVEsTUFBTTtBQUNkLFVBQU8sUUFBUSxLQUFLO0VBQ3RCLEtBQUs7QUFDSCxXQUFRLE1BQU07QUFDZCxVQUFPLFFBQVEsS0FBSztFQUN0QixLQUFLO0FBQ0gsV0FBUSxNQUFNO0FBQ2QsVUFBTyxRQUFRLEtBQUs7RUFDdEIsS0FBSztFQUNMLEtBQUssS0FDSDtHQUVFLE1BQU0sZUFBZSxRQUFRLE1BQU0sS0FBSyxNQUFNLElBQUk7R0FDbEQsTUFBTSxZQUFZLFNBQVMsT0FBTyxRQUFRLE1BQU0sR0FBRyxJQUFJLGFBQWEsRUFBRSxHQUFHO0dBQ3pFLE1BQU0sTUFBTSxPQUFPLGNBQWMsVUFBVTtBQUMzQyxXQUFRLEtBQUssZUFBZSxFQUFFO0FBQzlCLFVBQU8sUUFBUSxJQUFJOztFQUV2QixLQUFLO0FBQ0gsV0FBUSxNQUFNO0FBQ2QsVUFBTyxRQUFRLEtBQUk7RUFDckIsS0FBSztBQUNILFdBQVEsTUFBTTtBQUNkLFVBQU8sUUFBUSxLQUFLO0VBQ3RCLFFBQ0UsT0FBTSxJQUFJLFlBQVksOEJBQThCLFFBQVEsTUFBTSxHQUFHOzs7QUFHM0UsU0FBZ0IsWUFBWSxTQUFTO0FBQ25DLFNBQVEsaUJBQWlCO0FBQ3pCLEtBQUksUUFBUSxNQUFNLEtBQUssS0FBSyxRQUFPLFNBQVM7QUFDNUMsU0FBUSxNQUFNO0NBQ2QsTUFBTSxNQUFNLEVBQUU7QUFDZCxRQUFNLFFBQVEsTUFBTSxLQUFLLFFBQU8sQ0FBQyxRQUFRLEtBQUssRUFBQztBQUM3QyxNQUFJLFFBQVEsTUFBTSxLQUFLLEtBQ3JCLE9BQU0sSUFBSSxZQUFZLHdDQUF3QztFQUVoRSxNQUFNLGNBQWMsZUFBZSxRQUFRO0FBQzNDLE1BQUksWUFBWSxHQUNkLEtBQUksS0FBSyxZQUFZLEtBQUs7T0FDckI7QUFDTCxPQUFJLEtBQUssUUFBUSxNQUFNLENBQUM7QUFDeEIsV0FBUSxNQUFNOzs7QUFHbEIsS0FBSSxRQUFRLEtBQUssQ0FDZixPQUFNLElBQUksWUFBWSxzQ0FBc0MsSUFBSSxLQUFLLEdBQUcsR0FBRztBQUU3RSxTQUFRLE1BQU07QUFDZCxRQUFPLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQzs7QUFFOUIsU0FBZ0IsY0FBYyxTQUFTO0FBQ3JDLFNBQVEsaUJBQWlCO0FBQ3pCLEtBQUksUUFBUSxNQUFNLEtBQUssSUFBSyxRQUFPLFNBQVM7QUFDNUMsU0FBUSxNQUFNO0NBQ2QsTUFBTSxNQUFNLEVBQUU7QUFDZCxRQUFNLFFBQVEsTUFBTSxLQUFLLE9BQU8sQ0FBQyxRQUFRLEtBQUssRUFBQztBQUM3QyxNQUFJLFFBQVEsTUFBTSxLQUFLLEtBQ3JCLE9BQU0sSUFBSSxZQUFZLHdDQUF3QztBQUVoRSxNQUFJLEtBQUssUUFBUSxNQUFNLENBQUM7QUFDeEIsVUFBUSxNQUFNOztBQUVoQixLQUFJLFFBQVEsS0FBSyxDQUNmLE9BQU0sSUFBSSxZQUFZLHNDQUFzQyxJQUFJLEtBQUssR0FBRyxHQUFHO0FBRTdFLFNBQVEsTUFBTTtBQUNkLFFBQU8sUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDOztBQUU5QixTQUFnQixxQkFBcUIsU0FBUztBQUM1QyxTQUFRLGlCQUFpQjtBQUN6QixLQUFJLENBQUMsUUFBUSxXQUFXLFNBQU0sQ0FBRSxRQUFPLFNBQVM7QUFDaEQsU0FBUSxLQUFLLEVBQUU7QUFDZixLQUFJLFFBQVEsTUFBTSxLQUFLLEtBRXJCLFNBQVEsTUFBTTtVQUNMLFFBQVEsV0FBVyxPQUFPLENBRW5DLFNBQVEsS0FBSyxFQUFFO0NBRWpCLE1BQU0sTUFBTSxFQUFFO0FBQ2QsUUFBTSxDQUFDLFFBQVEsV0FBVyxTQUFNLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBQztBQUVqRCxNQUFJLFFBQVEsV0FBVyxPQUFPLEVBQUU7QUFDOUIsV0FBUSxNQUFNO0FBQ2QsV0FBUSxjQUFjLEVBQ3BCLGNBQWMsT0FDZixDQUFDO0FBQ0Y7YUFDUyxRQUFRLFdBQVcsU0FBUyxFQUFFO0FBQ3ZDLFdBQVEsTUFBTTtBQUNkLFdBQVEsY0FBYyxFQUNwQixjQUFjLE9BQ2YsQ0FBQztBQUNGOztFQUVGLE1BQU0sY0FBYyxlQUFlLFFBQVE7QUFDM0MsTUFBSSxZQUFZLEdBQ2QsS0FBSSxLQUFLLFlBQVksS0FBSztPQUNyQjtBQUNMLE9BQUksS0FBSyxRQUFRLE1BQU0sQ0FBQztBQUN4QixXQUFRLE1BQU07OztBQUdsQixLQUFJLFFBQVEsS0FBSyxDQUNmLE9BQU0sSUFBSSxZQUFZLHFDQUFxQyxJQUFJLEtBQUssR0FBRyxHQUFHO0FBRzVFLEtBQUksUUFBUSxLQUFLLEVBQUUsS0FBSyxNQUFLO0FBQzNCLE1BQUksS0FBSyxLQUFJO0FBQ2IsVUFBUSxNQUFNOztBQUVoQixTQUFRLEtBQUssRUFBRTtBQUNmLFFBQU8sUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDOztBQUU5QixTQUFnQix1QkFBdUIsU0FBUztBQUM5QyxTQUFRLGlCQUFpQjtBQUN6QixLQUFJLENBQUMsUUFBUSxXQUFXLE1BQU0sQ0FBRSxRQUFPLFNBQVM7QUFDaEQsU0FBUSxLQUFLLEVBQUU7QUFDZixLQUFJLFFBQVEsTUFBTSxLQUFLLEtBRXJCLFNBQVEsTUFBTTtVQUNMLFFBQVEsV0FBVyxPQUFPLENBRW5DLFNBQVEsS0FBSyxFQUFFO0NBRWpCLE1BQU0sTUFBTSxFQUFFO0FBQ2QsUUFBTSxDQUFDLFFBQVEsV0FBVyxNQUFNLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBQztBQUNqRCxNQUFJLEtBQUssUUFBUSxNQUFNLENBQUM7QUFDeEIsVUFBUSxNQUFNOztBQUVoQixLQUFJLFFBQVEsS0FBSyxDQUNmLE9BQU0sSUFBSSxZQUFZLHFDQUFxQyxJQUFJLEtBQUssR0FBRyxHQUFHO0FBRzVFLEtBQUksUUFBUSxLQUFLLEVBQUUsS0FBSyxLQUFLO0FBQzNCLE1BQUksS0FBSyxJQUFJO0FBQ2IsVUFBUSxNQUFNOztBQUVoQixTQUFRLEtBQUssRUFBRTtBQUNmLFFBQU8sUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDOztBQUU5QixNQUFNLGlCQUFpQjtBQUN2QixTQUFnQixRQUFRLFNBQVM7QUFDL0IsU0FBUSxpQkFBaUI7Q0FDekIsTUFBTSxRQUFRLFFBQVEsTUFBTSxlQUFlO0FBQzNDLEtBQUksQ0FBQyxNQUFPLFFBQU8sU0FBUztDQUM1QixNQUFNLFNBQVMsTUFBTTtBQUNyQixTQUFRLEtBQUssT0FBTyxPQUFPO0FBRTNCLFFBQU8sUUFETyxXQUFXLE9BQ0o7O0FBRXZCLE1BQU0sZUFBZSxJQUFJLElBQUk7Q0FDM0IsQ0FDRSxPQUNBLFNBQ0Q7Q0FDRCxDQUNFLFFBQ0EsU0FDRDtDQUNELENBQ0UsUUFDQSxVQUNEO0NBQ0YsQ0FBQztBQUNGLE1BQU0sa0JBQWtCO0FBQ3hCLFNBQWdCLFNBQVMsU0FBUztBQUNoQyxTQUFRLGlCQUFpQjtDQUN6QixNQUFNLFFBQVEsUUFBUSxNQUFNLGdCQUFnQjtBQUM1QyxLQUFJLENBQUMsTUFBTyxRQUFPLFNBQVM7Q0FDNUIsTUFBTSxTQUFTLE1BQU07QUFDckIsU0FBUSxLQUFLLE9BQU8sT0FBTztBQUUzQixRQUFPLFFBRE8sYUFBYSxJQUFJLE9BQU8sQ0FDakI7O0FBRXZCLE1BQU0sYUFBYTtBQUNuQixTQUFnQixJQUFJLFNBQVM7QUFDM0IsU0FBUSxpQkFBaUI7Q0FDekIsTUFBTSxRQUFRLFFBQVEsTUFBTSxXQUFXO0FBQ3ZDLEtBQUksQ0FBQyxNQUFPLFFBQU8sU0FBUztDQUM1QixNQUFNLFNBQVMsTUFBTTtBQUNyQixTQUFRLEtBQUssT0FBTyxPQUFPO0FBRTNCLFFBQU8sUUFETyxJQUNPOztBQUV2QixNQUFhLFlBQVksTUFBTSxHQUFHO0NBQ2hDO0NBQ0E7Q0FDQTtDQUNELENBQUMsRUFBRSxJQUFJO0FBQ1IsTUFBTSxnQkFBZ0I7QUFDdEIsU0FBZ0IsT0FBTyxTQUFTOztBQUM5QixTQUFRLGlCQUFpQjtDQUN6QixNQUFNLDJCQUFRLFFBQVEsTUFBTSxjQUFjLG9FQUFHO0FBQzdDLEtBQUksQ0FBQyxNQUFPLFFBQU8sU0FBUztBQUM1QixTQUFRLEtBQUssTUFBTSxPQUFPO0NBQzFCLE1BQU1KLFVBQVEsTUFBTSxNQUFNLEVBQUUsQ0FBQyxXQUFXLEtBQUssR0FBRztDQUNoRCxNQUFNLFNBQVMsU0FBU0EsU0FBTyxFQUFFO0FBQ2pDLFFBQU8sTUFBTSxPQUFPLEdBQUcsU0FBUyxHQUFHLFFBQVEsT0FBTzs7QUFFcEQsTUFBTSxlQUFlO0FBQ3JCLFNBQWdCLE1BQU0sU0FBUzs7QUFDN0IsU0FBUSxpQkFBaUI7Q0FDekIsTUFBTSwyQkFBUSxRQUFRLE1BQU0sYUFBYSxvRUFBRztBQUM1QyxLQUFJLENBQUMsTUFBTyxRQUFPLFNBQVM7QUFDNUIsU0FBUSxLQUFLLE1BQU0sT0FBTztDQUMxQixNQUFNQSxVQUFRLE1BQU0sTUFBTSxFQUFFLENBQUMsV0FBVyxLQUFLLEdBQUc7Q0FDaEQsTUFBTSxTQUFTLFNBQVNBLFNBQU8sRUFBRTtBQUNqQyxRQUFPLE1BQU0sT0FBTyxHQUFHLFNBQVMsR0FBRyxRQUFRLE9BQU87O0FBRXBELE1BQU0sYUFBYTtBQUNuQixTQUFnQixJQUFJLFNBQVM7O0FBQzNCLFNBQVEsaUJBQWlCO0NBQ3pCLE1BQU0sMkJBQVEsUUFBUSxNQUFNLFdBQVcsb0VBQUc7QUFDMUMsS0FBSSxDQUFDLE1BQU8sUUFBTyxTQUFTO0FBQzVCLFNBQVEsS0FBSyxNQUFNLE9BQU87Q0FDMUIsTUFBTUEsVUFBUSxNQUFNLE1BQU0sRUFBRSxDQUFDLFdBQVcsS0FBSyxHQUFHO0NBQ2hELE1BQU0sU0FBUyxTQUFTQSxTQUFPLEdBQUc7QUFDbEMsUUFBTyxNQUFNLE9BQU8sR0FBRyxTQUFTLEdBQUcsUUFBUSxPQUFPOztBQUVwRCxNQUFNLGlCQUFpQjtBQUN2QixTQUFnQixRQUFRLFNBQVM7O0FBQy9CLFNBQVEsaUJBQWlCO0NBQ3pCLE1BQU0sMkJBQVEsUUFBUSxNQUFNLGVBQWUsb0VBQUc7QUFDOUMsS0FBSSxDQUFDLE1BQU8sUUFBTyxTQUFTO0FBQzVCLFNBQVEsS0FBSyxNQUFNLE9BQU87Q0FDMUIsTUFBTUEsVUFBUSxNQUFNLFdBQVcsS0FBSyxHQUFHO0FBRXZDLFFBQU8sUUFESyxTQUFTQSxTQUFPLEdBQUcsQ0FDWjs7QUFFckIsTUFBTSxlQUFlO0FBQ3JCLFNBQWdCLE1BQU0sU0FBUzs7QUFDN0IsU0FBUSxpQkFBaUI7Q0FDekIsTUFBTSwyQkFBUSxRQUFRLE1BQU0sYUFBYSxvRUFBRztBQUM1QyxLQUFJLENBQUMsTUFBTyxRQUFPLFNBQVM7QUFDNUIsU0FBUSxLQUFLLE1BQU0sT0FBTztDQUMxQixNQUFNQSxVQUFRLE1BQU0sV0FBVyxLQUFLLEdBQUc7Q0FDdkMsTUFBTUssVUFBUSxXQUFXTCxRQUFNO0FBQy9CLEtBQUksTUFBTUssUUFBTSxDQUFFLFFBQU8sU0FBUztBQUNsQyxRQUFPLFFBQVFBLFFBQU07O0FBRXZCLE1BQU0sbUJBQW1CO0FBQ3pCLFNBQWdCLFNBQVMsU0FBUztBQUNoQyxTQUFRLGlCQUFpQjtDQUN6QixNQUFNLFFBQVEsUUFBUSxNQUFNLGlCQUFpQjtBQUM3QyxLQUFJLENBQUMsTUFBTyxRQUFPLFNBQVM7Q0FDNUIsTUFBTSxTQUFTLE1BQU07QUFDckIsU0FBUSxLQUFLLE9BQU8sT0FBTztDQUMzQixNQUFNLFNBQVMsTUFBTTtBQUVyQixLQUFJLE9BQU8sU0FBUyxNQUFNO0VBQ3hCLE1BQU0sT0FBTyxTQUFTLE9BQU8sSUFBSTtBQUNqQyxNQUFJLE9BQU8sR0FDVCxPQUFNLElBQUksWUFBWSx3QkFBd0IsTUFBTSxHQUFHO0VBRXpELE1BQU0sT0FBTyxTQUFTLE9BQU8sS0FBSztBQUNsQyxNQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxDQUM1QixPQUFNLElBQUksWUFBWSx3QkFBd0IsTUFBTSxHQUFHOztDQUczRCxNQUFNLE9BQU8sSUFBSSxLQUFLLE9BQU8sTUFBTSxDQUFDO0FBRXBDLEtBQUksTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUN2QixPQUFNLElBQUksWUFBWSx3QkFBd0IsTUFBTSxHQUFHO0FBRXpELFFBQU8sUUFBUSxLQUFLOztBQUV0QixNQUFNLG9CQUFvQjtBQUMxQixTQUFnQixVQUFVLFNBQVM7O0FBQ2pDLFNBQVEsaUJBQWlCO0NBQ3pCLE1BQU0sMkJBQVEsUUFBUSxNQUFNLGtCQUFrQixvRUFBRztBQUNqRCxLQUFJLENBQUMsTUFBTyxRQUFPLFNBQVM7QUFDNUIsU0FBUSxLQUFLLE1BQU0sT0FBTztBQUMxQixRQUFPLFFBQVEsTUFBTTs7QUFFdkIsU0FBZ0IsV0FBVyxTQUFTO0FBQ2xDLFNBQVEsaUJBQWlCO0FBQ3pCLEtBQUksUUFBUSxNQUFNLEtBQUssSUFBSyxRQUFPLFNBQVM7QUFDNUMsU0FBUSxNQUFNO0NBQ2QsTUFBTSxRQUFRLEVBQUU7QUFDaEIsUUFBTSxDQUFDLFFBQVEsS0FBSyxFQUFDO0FBQ25CLFVBQVEsZUFBZTtFQUN2QixNQUFNLFNBQVMsTUFBTSxRQUFRO0FBQzdCLE1BQUksQ0FBQyxPQUFPLEdBQUk7QUFDaEIsUUFBTSxLQUFLLE9BQU8sS0FBSztBQUN2QixVQUFRLGlCQUFpQjtBQUV6QixNQUFJLFFBQVEsTUFBTSxLQUFLLElBQUs7QUFDNUIsVUFBUSxNQUFNOztBQUVoQixTQUFRLGVBQWU7QUFDdkIsS0FBSSxRQUFRLE1BQU0sS0FBSyxJQUFLLE9BQU0sSUFBSSxZQUFZLHNCQUFzQjtBQUN4RSxTQUFRLE1BQU07QUFDZCxRQUFPLFFBQVEsTUFBTTs7QUFFdkIsU0FBZ0IsWUFBWSxTQUFTO0FBQ25DLFNBQVEsZUFBZTtBQUN2QixLQUFJLFFBQVEsS0FBSyxFQUFFLEtBQUssS0FBSztBQUMzQixVQUFRLEtBQUssRUFBRTtBQUNmLFNBQU8sUUFBUSxFQUNiLFdBQVcsTUFDWixDQUFDOztDQUVKLE1BQU0sUUFBUSxTQUFTLEtBQUtGLE9BQUssTUFBTSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVE7QUFDMUQsS0FBSSxDQUFDLE1BQU0sR0FBSSxRQUFPLFNBQVM7Q0FDL0IsSUFBSUYsVUFBUSxFQUNWLFdBQVcsTUFDWjtBQUNELE1BQUssTUFBTUssVUFBUSxNQUFNLEtBQ3ZCLFdBQVEsVUFBVUwsU0FBT0ssT0FBSztBQUVoQyxRQUFPLFFBQVFMLFFBQU07O0FBRXZCLE1BQWEsUUFBUSxHQUFHO0NBQ3RCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0QsQ0FBQztBQUNGLE1BQWEsT0FBTyxHQUFHLFdBQVcsS0FBSyxNQUFNO0FBQzdDLFNBQWdCLE1BQU0sU0FBUztBQUM3QixTQUFRLGVBQWU7Q0FDdkIsTUFBTSxTQUFTRyxRQUFNLE9BQU8sS0FBSyxDQUFDLENBQUMsUUFBUTtBQUMzQyxLQUFJLE9BQU8sR0FBSSxRQUFPLFFBQVE7RUFDNUIsTUFBTTtFQUNOLE9BQU8sT0FBTztFQUNmLENBQUM7QUFDRixRQUFPLFNBQVM7O0FBRWxCLE1BQWEsY0FBYyxTQUFTLEtBQUssV0FBVyxJQUFJO0FBQ3hELFNBQWdCLE1BQU0sU0FBUztBQUM3QixTQUFRLGVBQWU7Q0FDdkIsTUFBTSxTQUFTLFlBQVksUUFBUTtBQUNuQyxLQUFJLENBQUMsT0FBTyxHQUFJLFFBQU8sU0FBUztBQUNoQyxTQUFRLGVBQWU7Q0FDdkIsTUFBTSxJQUFJLE1BQU0sUUFBUTtBQUN4QixRQUFPLFFBQVE7RUFDYixNQUFNO0VBQ04sTUFBTSxPQUFPO0VBQ2IsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLFFBQVEsRUFDM0IsV0FBVyxNQUNaO0VBQ0YsQ0FBQzs7QUFFSixNQUFhLG1CQUFtQixTQUFTLE1BQU0sV0FBVyxLQUFLO0FBQy9ELFNBQWdCLFdBQVcsU0FBUztBQUNsQyxTQUFRLGVBQWU7Q0FDdkIsTUFBTSxTQUFTLGlCQUFpQixRQUFRO0FBQ3hDLEtBQUksQ0FBQyxPQUFPLEdBQUksUUFBTyxTQUFTO0FBQ2hDLFNBQVEsZUFBZTtDQUN2QixNQUFNLElBQUksTUFBTSxRQUFRO0FBQ3hCLFFBQU8sUUFBUTtFQUNiLE1BQU07RUFDTixNQUFNLE9BQU87RUFDYixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssUUFBUSxFQUMzQixXQUFXLE1BQ1o7RUFDRixDQUFDOztBQUVKLFNBQWdCLEtBQUssU0FBUztDQUM1QixNQUFNLFNBQVMsT0FBTyxHQUFHO0VBQ3ZCO0VBQ0E7RUFDQTtFQUNELENBQUMsQ0FBQyxDQUFDLFFBQVE7QUFDWixLQUFJLENBQUMsT0FBTyxHQUFJLFFBQU8sUUFBUSxFQUM3QixXQUFXLE1BQ1osQ0FBQztBQUlGLFFBQU8sUUFITSxPQUFPLEtBQUssT0FBTyxZQUFZLEVBQzFDLFdBQVcsTUFDWixDQUFDLENBQ2tCOztBQUV0QixTQUFTLHdCQUF3QixTQUFTLFNBQVM7O0NBRWpELE1BQU0sUUFEUyxRQUFRLE9BQU8sTUFBTSxHQUFHLFFBQVEsU0FBUyxDQUNuQyxNQUFNLEtBQUs7QUFHaEMsUUFBTyx1QkFGSyxNQUFNLE9BRWdCLHlCQURuQixNQUFNLEdBQUcsR0FBRyx3REFBRSxXQUFVLEVBQ2EsSUFBSTs7QUFFMUQsU0FBZ0IsY0FBYyxRQUFRO0FBQ3BDLFNBQVEsZUFBYTtFQUNuQixNQUFNLFVBQVUsSUFBSSxRQUFRLFdBQVc7QUFDdkMsTUFBSTtHQUNGLE1BQU0sU0FBUyxPQUFPLFFBQVE7QUFDOUIsT0FBSSxPQUFPLE1BQU0sUUFBUSxLQUFLLENBQUUsUUFBTyxPQUFPO0dBQzlDLE1BQU0sVUFBVSwwQkFBMEIsUUFBUSxNQUFNLENBQUM7QUFDekQsU0FBTSxJQUFJLFlBQVksd0JBQXdCLFNBQVMsUUFBUSxDQUFDO1dBQ3pELE9BQU87QUFDZCxPQUFJLGlCQUFpQixNQUNuQixPQUFNLElBQUksWUFBWSx3QkFBd0IsU0FBUyxNQUFNLFFBQVEsQ0FBQztBQUd4RSxTQUFNLElBQUksWUFBWSx3QkFBd0IsU0FEOUIsNEJBQytDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0NydEJsRSxTQUFnQkcsUUFBTSxZQUFZO0FBQ3BDLFFBQU8sY0FBYyxLQUFLLENBQUMsV0FBVzs7Ozs7Ozs7Ozs7OztBQ1h4QyxTQUFnQixTQUFTLFNBQU8sTUFBTTtBQUNyQyxRQUFPLFdBQVdDLFFBQU0sR0FBR0EsVUFBUSxRQUFRLFFBQVEsS0FBS0EsUUFBTTs7Ozs7Ozs7Ozs7QUNKL0QsU0FBZ0IsR0FBRyxNQUFNLFNBQVM7Q0FDakMsSUFBSSxFQUFFLE1BQU0sUUFBUSxXQUFXLEVBQUU7Q0FDakMsSUFBSSxNQUFNLFNBQVMsTUFBTSxJQUFJO0NBQzdCLElBQUksT0FBTyxTQUFTLFFBQVEsS0FBSyxJQUFJO0NBQ3JDLElBQUksTUFBTSxNQUFNLEVBQUU7QUFDbEIsUUFBTyxTQUFTLE1BQU07QUFDckIsTUFBSSxLQUFLLElBQUk7QUFDYixRQUFNLFFBQVEsT0FBTyxJQUFJO0FBQ3pCLE1BQUksUUFBUSxLQUFNOztBQUVuQixRQUFPOzs7Ozs7Ozs7Ozs7Ozs7QUNnRFIsU0FBZ0IsSUFBSSxNQUFNLFNBQVM7Q0FDbEMsSUFBSUMsT0FBSztDQUNULElBQUksUUFBUSxXQUFXLFFBQVEsT0FBTztBQUN0QyxNQUFLQSxTQUFPQyxHQUFRLE9BQU8sUUFBUSxDQUNsQyxLQUFJO0FBQ0gsUUFBTSxLQUFLRCxPQUFLLEtBQUs7QUFDckIsTUFBSSxTQUFTLElBQUksQ0FBQyxhQUFhLENBQUUsUUFBTztTQUNqQzs7Ozs7QUNyRVYsSUFBc0Isb0JBQXRCLGNBQWdELFFBQVE7Q0FDdEQsT0FBTyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUM7Q0FFM0IsT0FBTyxRQUFRLFFBQVEsTUFBTSxFQUMzQixhQUFhLDhCQUNkLENBQUM7Q0FFRixNQUFNLE9BQU8sT0FBTyxTQUFTLFFBQVEsS0FBSyxFQUFFLEVBQzFDLGFBQ0Usc0hBQ0gsQ0FBQztDQUVGLGFBQXNCLE9BQU8sT0FBTyxvQkFBb0IsRUFDdEQsYUFBYSxtQ0FDZCxDQUFDO0NBRUYsa0JBQWtCLE9BQU8sT0FBTyx1QkFBdUIsZ0JBQWdCLEVBQ3JFLGFBQWEsMEJBQ2QsQ0FBQztDQUVGLFNBQVMsT0FBTyxPQUFPLGFBQWEsT0FBTyxFQUN6QyxhQUFhLGlEQUNkLENBQUM7Q0FFRixTQUFrQixPQUFPLE9BQU8sYUFBYSxFQUMzQyxhQUFhLCtCQUNkLENBQUM7Q0FFRixhQUFzQixPQUFPLE9BQU8sb0JBQW9CLEVBQ3RELGFBQWEsb0NBQ2QsQ0FBQztDQUVGLGNBQXVCLE9BQU8sT0FBTyxrQkFBa0IsRUFDckQsYUFBYSx1Q0FDZCxDQUFDO0NBRUYsZUFBZSxPQUFPLE9BQU8sbUJBQW1CLGNBQWMsRUFDNUQsYUFBYSx3QkFDZCxDQUFDO0NBRUYsYUFBc0IsT0FBTyxPQUFPLGdCQUFnQixFQUNsRCxhQUFhLHFDQUNkLENBQUM7Q0FFRixjQUF1QixPQUFPLE9BQU8saUJBQWlCLEVBQ3BELGFBQWEsc0NBQ2QsQ0FBQztDQUVGLGFBQWE7QUFDWCxTQUFPO0dBQ0wsS0FBSyxLQUFLO0dBQ1YsWUFBWSxLQUFLO0dBQ2pCLGlCQUFpQixLQUFLO0dBQ3RCLFFBQVEsS0FBSztHQUNiLE1BQU0sS0FBSztHQUNYLFlBQVksS0FBSztHQUNqQixhQUFhLEtBQUs7R0FDbEIsY0FBYyxLQUFLO0dBQ25CLFlBQVksS0FBSztHQUNqQixhQUFhLEtBQUs7R0FDbkI7OztBQTBETCxTQUFnQiwwQkFBMEIsU0FBd0I7QUFDaEUsUUFBTztFQUNMLEtBQUssUUFBUSxLQUFLO0VBQ2xCLGlCQUFpQjtFQUNqQixRQUFRO0VBQ1IsY0FBYztFQUNkLEdBQUc7RUFDSjs7Ozs7QUNySEgsZUFBc0IsY0FBYyxhQUE0QjtDQUM5RCxNQUFNLFVBQVUsMEJBQTBCLFlBQVk7Q0FFdEQsTUFBTSxXQURhLE1BQU0sV0FBVyxRQUFRLEVBQ2pCO0NBRTNCLE1BQU0sa0JBQWtCLFFBQVEsUUFBUSxLQUFLLFFBQVEsZ0JBQWdCO0NBQ3JFLE1BQU0sZ0JBQWdCLFFBQVEsUUFBUSxLQUFLLFFBQVEsYUFBYTtDQUVoRSxNQUFNLHFCQUFxQixNQUFNLGNBQWMsaUJBQWlCLE9BQU87Q0FDdkUsTUFBTSxrQkFBa0IsS0FBSyxNQUFNLG1CQUFtQjtBQUV0RCxPQUNFLE1BQ0UsaUJBQ0EsT0FFRSxLQUFLLFNBQVM7RUFBQztFQUFRO0VBQWU7RUFBVTtFQUFVLENBQUMsRUFDM0QsTUFDRCxDQUNGLEVBQ0QsRUFDRSxNQUFNLE9BQ0o7RUFDRSxZQUFZLFFBQVE7RUFDcEIsYUFBYSxRQUFRO0VBQ3RCLEVBQ0QsTUFDRCxFQUNGLENBQ0Y7QUFFRCxLQUFJLFFBQVEsWUFBWTtFQUN0QixNQUFNLGFBQWEsUUFBUSxRQUFRLEtBQUssUUFBUSxXQUFXO0VBQzNELE1BQU0sZ0JBQWdCLE1BQU0sY0FBYyxZQUFZLE9BQU87RUFDN0QsTUFBTSxhQUFhLEtBQUssTUFBTSxjQUFjO0FBQzVDLGFBQVcsYUFBYSxRQUFRO0FBQ2hDLGFBQVcsY0FBYyxRQUFRO0FBQ2pDLFFBQU0sZUFBZSxZQUFZLEtBQUssVUFBVSxZQUFZLE1BQU0sRUFBRSxDQUFDOztBQUd2RSxPQUFNLGVBQ0osaUJBQ0EsS0FBSyxVQUFVLGlCQUFpQixNQUFNLEVBQUUsQ0FDekM7Q0FHRCxNQUFNLFlBQVlFLFFBREUsTUFBTSxjQUFjLGVBQWUsT0FBTyxDQUN0QjtBQUd4QyxLQUFJLFVBQVUsV0FBVyxRQUFRLFlBQVk7RUFFM0MsTUFBTSxnQkFBZ0IsUUFBUSxXQUMzQixRQUFRLEtBQUssR0FBRyxDQUNoQixRQUFRLEtBQUssSUFBSSxDQUNqQixRQUFRLE1BQU0sSUFBSSxDQUNsQixhQUFhO0FBQ2hCLFlBQVUsUUFBUSxPQUFPOztBQU0zQixPQUFNLGVBQWUsZUFGTUMsVUFBYyxVQUFVLENBRUk7QUFDdkQsS0FBSSxZQUFZLFFBQVEsWUFBWTtFQUNsQyxNQUFNLG9CQUFvQkMsSUFBUyxXQUFXLEVBQzVDLEtBQUssUUFBUSxLQUNkLENBQUM7QUFDRixNQUFJLG1CQUFtQjtHQUNyQixNQUFNLHlCQUF5QixLQUM3QixtQkFDQSxhQUNBLFNBQ0Q7QUFDRCxPQUFJLFdBQVcsdUJBQXVCLEVBQUU7O0lBS3RDLE1BQU0sb0JBQW9CQyxLQUpHLE1BQU0sY0FDakMsd0JBQ0EsT0FDRCxDQUN3RDtBQUN6RCxpQ0FBSSxrQkFBa0IsbUZBQUssVUFBVTtBQUNuQyx1QkFBa0IsSUFBSSxXQUFXLFFBQVE7QUFDekMsV0FBTSxlQUNKLHdCQUNBQyxLQUFjLG1CQUFtQjtNQUMvQixXQUFXO01BQ1gsUUFBUTtNQUNSLFVBQVU7TUFDWCxDQUFDLENBQ0g7Ozs7RUFJUCxNQUFNLDRCQUE0QixLQUNoQyxRQUFRLEtBQ1IsR0FBRyxRQUFRLGtCQUNaO0FBQ0QsTUFBSSxXQUFXLDBCQUEwQixDQUN2QyxPQUFNLE9BQ0osMkJBQ0EsS0FBSyxRQUFRLEtBQUssR0FBRyxRQUFRLFdBQVcsa0JBQWtCLENBQzNEO0VBRUgsTUFBTSxxQkFBcUIsS0FBSyxRQUFRLEtBQUssR0FBRyxRQUFRLFdBQVc7QUFDbkUsTUFBSSxXQUFXLG1CQUFtQixDQUNoQyxPQUFNLE9BQ0osb0JBQ0EsS0FBSyxRQUFRLEtBQUssR0FBRyxRQUFRLFdBQVcsV0FBVyxDQUNwRDtFQUVILE1BQU0sb0JBQW9CLEtBQUssUUFBUSxLQUFLLGlCQUFpQjtBQUM3RCxNQUFJLFdBQVcsa0JBQWtCLENBZ0IvQixPQUFNLGVBQWUsb0JBZlEsTUFBTSxjQUNqQyxtQkFDQSxPQUNELEVBRUUsTUFBTSxLQUFLLENBQ1gsS0FBSyxTQUFTO0FBQ2IsVUFBTyxLQUNKLFFBQ0MsR0FBRyxRQUFRLG1CQUNYLEdBQUcsUUFBUSxXQUFXLGtCQUN2QixDQUNBLFFBQVEsR0FBRyxRQUFRLFlBQVksR0FBRyxRQUFRLFdBQVcsV0FBVztJQUNuRSxDQUNELEtBQUssS0FBSyxDQUM2Qzs7Ozs7O0FDaEhoRSxNQUFNQyxVQUFRLGFBQWEsTUFBTTtBQUlqQyxNQUFNLGlCQUFpQjtDQUNyQixNQUFNO0NBQ04sTUFBTTtDQUNQO0FBRUQsZUFBZSxrQkFBb0M7QUFDakQsS0FBSTtBQUNGLFFBQU0sSUFBSSxTQUFTLGNBQVk7R0FDN0IsTUFBTSxLQUFLLEtBQUssZ0JBQWdCO0FBQ2hDLE1BQUcsR0FBRyxlQUFlO0FBQ25CLGNBQVEsTUFBTTtLQUNkO0FBQ0YsTUFBRyxHQUFHLFNBQVMsU0FBUztBQUN0QixRQUFJLFNBQVMsRUFDWCxXQUFRLEtBQUs7UUFFYixXQUFRLE1BQU07S0FFaEI7SUFDRjtBQUNGLFNBQU87U0FDRDtBQUNOLFNBQU87OztBQUlYLGVBQWUsZUFDYixnQkFDaUI7Q0FDakIsTUFBTSxXQUFXLEtBQUssS0FBSyxTQUFTLEVBQUUsWUFBWSxZQUFZLGVBQWU7QUFDN0UsT0FBTSxXQUFXLFVBQVUsRUFBRSxXQUFXLE1BQU0sQ0FBQztBQUMvQyxRQUFPOztBQUdULGVBQWUsaUJBQ2IsZ0JBQ0EsVUFDZTtDQUNmLE1BQU0sVUFBVSxlQUFlO0NBQy9CLE1BQU0sZUFBZSxLQUFLLEtBQUssVUFBVSxPQUFPO0FBRWhELEtBQUksV0FBVyxhQUFhLEVBQUU7QUFDNUIsVUFBTSwyQkFBMkIsYUFBYSxlQUFlO0FBQzdELE1BQUk7QUFFRixTQUFNLElBQUksU0FBZSxXQUFTLFdBQVc7SUFDM0MsTUFBTSxLQUFLLEtBQUssb0JBQW9CLEVBQUUsS0FBSyxjQUFjLENBQUM7QUFDMUQsT0FBRyxHQUFHLFNBQVMsT0FBTztBQUN0QixPQUFHLEdBQUcsU0FBUyxTQUFTO0FBQ3RCLFNBQUksU0FBUyxFQUNYLFlBQVM7U0FFVCx3QkFDRSxJQUFJLE1BQ0YsZ0VBQWdFLE9BQ2pFLENBQ0Y7TUFFSDtLQUNGO0FBQ0YsWUFBUyxnQ0FBZ0M7SUFDdkMsS0FBSztJQUNMLE9BQU87SUFDUixDQUFDO0FBQ0YsV0FBTSxnQ0FBZ0M7V0FDL0IsT0FBTztBQUNkLFdBQU0sOEJBQThCLFFBQVE7QUFDNUMsU0FBTSxJQUFJLE1BQU0sa0NBQWtDLFFBQVEsSUFBSSxRQUFROztRQUVuRTtBQUNMLFVBQU0seUJBQXlCLFFBQVEsS0FBSztBQUM1QyxNQUFJO0FBQ0YsWUFBUyxhQUFhLFFBQVEsUUFBUTtJQUFFLEtBQUs7SUFBVSxPQUFPO0lBQVcsQ0FBQztBQUMxRSxXQUFNLCtCQUErQjtXQUM5QixPQUFPO0FBQ2QsU0FBTSxJQUFJLE1BQU0saUNBQWlDLFFBQVEsSUFBSSxRQUFROzs7O0FBSzNFLGVBQWUsY0FDYixLQUNBLE1BQ0EscUJBQ2U7QUFDZixPQUFNLFdBQVcsTUFBTSxFQUFFLFdBQVcsTUFBTSxDQUFDO0NBQzNDLE1BQU0sVUFBVSxNQUFNQyxTQUFHLFFBQVEsS0FBSyxFQUFFLGVBQWUsTUFBTSxDQUFDO0FBRTlELE1BQUssTUFBTSxTQUFTLFNBQVM7RUFDM0IsTUFBTSxVQUFVLEtBQUssS0FBSyxLQUFLLE1BQU0sS0FBSztFQUMxQyxNQUFNLFdBQVcsS0FBSyxLQUFLLE1BQU0sTUFBTSxLQUFLO0FBRzVDLE1BQUksTUFBTSxTQUFTLE9BQ2pCO0FBR0YsTUFBSSxNQUFNLGFBQWEsQ0FDckIsT0FBTSxjQUFjLFNBQVMsVUFBVSxvQkFBb0I7T0FDdEQ7QUFDTCxPQUNFLENBQUMsd0JBQ0EsTUFBTSxLQUFLLFNBQVMsbUJBQW1CLElBQ3RDLE1BQU0sS0FBSyxTQUFTLFlBQVksSUFDaEMsTUFBTSxLQUFLLFNBQVMsMkJBQTJCLElBQy9DLE1BQU0sS0FBSyxTQUFTLGtCQUFrQixJQUN0QyxNQUFNLEtBQUssU0FBUyxhQUFhLEVBRW5DO0FBRUYsU0FBTUEsU0FBRyxTQUFTLFNBQVMsU0FBUzs7OztBQUsxQyxlQUFlLDJCQUNiLFVBQ0EsZ0JBQ2U7O0NBQ2YsTUFBTSxVQUFVLE1BQU1BLFNBQUcsU0FBUyxVQUFVLFFBQVE7Q0FDcEQsTUFBTSxjQUFjLEtBQUssTUFBTSxRQUFRO0FBR3ZDLDBCQUFJLFlBQVksNEVBQU0sUUFDcEIsYUFBWSxLQUFLLFVBQVUsWUFBWSxLQUFLLFFBQVEsUUFDakQsV0FBbUIsZUFBZSxTQUFTLE9BQU8sQ0FDcEQ7QUFHSCxPQUFNQSxTQUFHLFVBQVUsVUFBVSxLQUFLLFVBQVUsYUFBYSxNQUFNLEVBQUUsR0FBRyxLQUFLOztBQUczRSxlQUFlLDZCQUNiLFVBQ0EsZ0JBQ2U7O0NBRWYsTUFBTSxPQUFPQyxLQURHLE1BQU1ELFNBQUcsU0FBUyxVQUFVLFFBQVEsQ0FDdEI7Q0FFOUIsTUFBTSx5QkFBeUIsSUFBSSxJQUFJO0VBQ3JDO0VBQ0E7RUFDQTtFQUNBO0VBQ0QsQ0FBQztDQUVGLE1BQU0sZUFBZSxJQUFJLElBQUk7RUFDM0I7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0QsQ0FBQztDQUdGLE1BQU0sa0JBQWtCLGVBQWUsTUFBTSxXQUMzQyxhQUFhLElBQUksT0FBTyxDQUN6QjtBQUdELHVEQUFJLEtBQU0sb0VBQU0scUVBQU8sd0VBQVUsZ0VBQVEsU0FDdkMsTUFBSyxLQUFLLE1BQU0sU0FBUyxPQUFPLFdBQzlCLEtBQUssS0FBSyxNQUFNLFNBQVMsT0FBTyxTQUFTLFFBQVEsWUFBaUI7QUFDaEUsTUFBSSxRQUFRLE9BQ1YsUUFBTyxlQUFlLFNBQVMsUUFBUSxPQUFPO0FBRWhELFNBQU87R0FDUDtDQUdOLE1BQU1FLGVBQXlCLEVBQUU7QUFFakMsS0FBSSxlQUFlLE9BQU8sV0FBVyxDQUFDLHVCQUF1QixJQUFJLE9BQU8sQ0FBQyxDQUN2RSxjQUFhLEtBQUssNkJBQTZCO01BQzFDOztBQUVMLHlEQUNFLEtBQU0sdUVBQU8sZ0dBQStCLDJFQUFVLGtFQUFRLFNBRTlELE1BQUssS0FBSyw4QkFBOEIsU0FBUyxPQUFPLFdBQ3RELEtBQUssS0FBSyw4QkFBOEIsU0FBUyxPQUFPLFNBQVMsUUFDOUQsWUFBaUI7QUFDaEIsT0FBSSxRQUFRLE9BQ1YsUUFBTyxlQUFlLFNBQVMsUUFBUSxPQUFPO0FBRWhELFVBQU87SUFFVjs7QUFLUCxLQUFJLENBQUMsaUJBQWlCOztBQUVwQix5REFBSSxLQUFNLGdFQUFPLHNCQUNmLGNBQWEsS0FBSyxxQkFBcUI7UUFFcEM7O0FBRUwseURBQUksS0FBTSx1RUFBTyx3RkFBdUIsMkVBQVUsa0VBQVEsT0FDeEQsTUFBSyxLQUFLLHNCQUFzQixTQUFTLE9BQU8sU0FBUyxLQUFLLEtBQzVELHNCQUNBLFNBQVMsT0FBTyxPQUFPLFFBQVEsV0FBbUI7QUFDbEQsT0FBSSxPQUNGLFFBQU8sZUFBZSxTQUFTLE9BQU87QUFFeEMsVUFBTztJQUNQOztBQUlOLEtBQUksQ0FBQyxlQUFlLFNBQVMsd0JBQXdCLENBQ25ELGNBQWEsS0FBSyxZQUFZO0FBR2hDLEtBQUksQ0FBQyxlQUFlLFNBQVMseUJBQXlCLENBQ3BELGNBQWEsS0FBSyxnQkFBZ0I7QUFJcEMsTUFBSyxNQUFNLENBQUMsU0FBUyxjQUFjLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDLENBQ2hFLEtBQ0UsUUFBUSxXQUFXLFFBQVEsSUFDM0IsWUFBWSxnQ0FDWixZQUFZLDhCQUNaOztFQUVBLE1BQU0sTUFBTTtBQUNaLHVCQUFJLElBQUksaUZBQVUsK0VBQVEsaUZBQVcsa0VBQUksUUFBUTtHQUMvQyxNQUFNLFNBQVMsSUFBSSxTQUFTLE9BQU8sU0FBUyxHQUFHO0FBQy9DLE9BQUksQ0FBQyxlQUFlLFNBQVMsT0FBTyxDQUNsQyxjQUFhLEtBQUssUUFBUTs7O0FBT2xDLE1BQUssTUFBTSxXQUFXLGFBQ3BCLFFBQU8sS0FBSyxLQUFLO0FBR25CLEtBQUksTUFBTSx1QkFBUSxLQUFLLHVFQUFNLG1FQUFTLE1BQU0sQ0FDMUMsTUFBSyxLQUFLLFFBQVEsUUFBUSxLQUFLLEtBQUssUUFBUSxNQUFNLFFBQy9DLFNBQWlCLENBQUMsYUFBYSxTQUFTLEtBQUssQ0FDL0M7Q0FJSCxNQUFNLGNBQWNDLEtBQVMsTUFBTTtFQUNqQyxXQUFXO0VBQ1gsUUFBUTtFQUNSLFVBQVU7RUFDWCxDQUFDO0FBQ0YsT0FBTUgsU0FBRyxVQUFVLFVBQVUsWUFBWTs7QUFHM0MsU0FBUyxlQUFlLFNBQXdCOztBQUM5QyxTQUFNLHdCQUF3QjtBQUM5QixLQUFJLENBQUMsUUFBUSxLQUNYLE9BQU0sSUFBSSxNQUFNLDBDQUEwQztBQUU1RCxTQUFRLE9BQU8sS0FBSyxRQUFRLFFBQVEsS0FBSyxFQUFFLFFBQVEsS0FBSztBQUN4RCxTQUFNLDRCQUE0QixRQUFRLE9BQU87QUFFakQsS0FBSSxDQUFDLFFBQVEsTUFBTTtBQUNqQixVQUFRLE9BQU8sS0FBSyxNQUFNLFFBQVEsS0FBSyxDQUFDO0FBQ3hDLFVBQU0saURBQWlELFFBQVEsT0FBTzs7QUFHeEUsS0FBSSxzQkFBQyxRQUFRLDZFQUFTLFFBQ3BCLEtBQUksUUFBUSxrQkFBa0I7QUFDNUIsVUFBUSxVQUFVLGtCQUFrQixRQUFRO0FBQzVDLFVBQU0scUJBQXFCO1lBQ2xCLFFBQVEsc0JBQXNCO0FBQ3ZDLFVBQVEsVUFBVSxnQkFBZ0IsUUFBUTtBQUMxQyxVQUFNLHlCQUF5QjtPQUUvQixPQUFNLElBQUksTUFBTSxzQ0FBc0M7QUFHMUQsS0FDRSxRQUFRLFFBQVEsTUFBTSxXQUFXLFdBQVcsK0JBQStCLEVBSzNFO01BSFksU0FBUyxzQkFBc0IsRUFDekMsVUFBVSxRQUNYLENBQUMsQ0FDTSxTQUFTLHdCQUF3QixDQUN2QyxTQUFRLFVBQVUsUUFBUSxRQUFRLEtBQUssV0FDckMsV0FBVyxpQ0FDUCwwQkFDQSxPQUNMOztBQUlMLFFBQU8sdUJBQXVCLFFBQVE7O0FBR3hDLGVBQXNCLFdBQVcsYUFBNEI7QUFDM0QsU0FBTSxrREFBa0Q7QUFDeEQsU0FBTSxZQUFZO0NBRWxCLE1BQU0sVUFBVSxlQUFlLFlBQVk7QUFFM0MsU0FBTSx5QkFBeUI7QUFDL0IsU0FBTSxRQUFRLFFBQVE7QUFHdEIsS0FBSSxDQUFFLE1BQU0saUJBQWlCLENBQzNCLE9BQU0sSUFBSSxNQUNSLGlGQUNEO0NBR0gsTUFBTSxpQkFBaUIsUUFBUTtBQUcvQixPQUFNLFdBQVcsUUFBUSxNQUFNLFFBQVEsT0FBTztBQUU5QyxLQUFJLENBQUMsUUFBUSxPQUNYLEtBQUk7RUFFRixNQUFNLFdBQVcsTUFBTSxlQUFlLGVBQWU7QUFDckQsUUFBTSxpQkFBaUIsZ0JBQWdCLFNBQVM7QUFJaEQsUUFBTSxjQURlLEtBQUssS0FBSyxVQUFVLE9BQU8sRUFHOUMsUUFBUSxNQUNSLFFBQVEsUUFBUSxTQUFTLHdCQUF3QixDQUNsRDtBQUdELFFBQU0sY0FBYztHQUNsQixLQUFLLFFBQVE7R0FDYixNQUFNLFFBQVE7R0FDZCxZQUFZLGNBQWMsUUFBUSxLQUFLO0dBQ3hDLENBQUM7RUFHRixNQUFNLGtCQUFrQixLQUFLLEtBQUssUUFBUSxNQUFNLGVBQWU7QUFDL0QsTUFBSSxXQUFXLGdCQUFnQixDQUM3QixPQUFNLDJCQUEyQixpQkFBaUIsUUFBUSxRQUFRO0VBSXBFLE1BQU0sU0FBUyxLQUFLLEtBQUssUUFBUSxNQUFNLFdBQVcsYUFBYSxTQUFTO0FBQ3hFLE1BQUksV0FBVyxPQUFPLElBQUksUUFBUSxvQkFDaEMsT0FBTSw2QkFBNkIsUUFBUSxRQUFRLFFBQVE7V0FFM0QsQ0FBQyxRQUFRLHVCQUNULFdBQVcsS0FBSyxLQUFLLFFBQVEsTUFBTSxVQUFVLENBQUMsQ0FHOUMsT0FBTUEsU0FBRyxHQUFHLEtBQUssS0FBSyxRQUFRLE1BQU0sVUFBVSxFQUFFO0dBQzlDLFdBQVc7R0FDWCxPQUFPO0dBQ1IsQ0FBQztFQUlKLE1BQU0saUJBQWlCLE1BQU1BLFNBQUcsU0FBUyxpQkFBaUIsUUFBUTtFQUNsRSxNQUFNLFVBQVUsS0FBSyxNQUFNLGVBQWU7QUFHMUMsTUFBSSxDQUFDLFFBQVEsUUFDWCxTQUFRLFVBQVUsRUFBRTtBQUV0QixVQUFRLFFBQVEsT0FBTyxzQkFBc0IsUUFBUSxrQkFBa0I7QUFHdkUsTUFBSSxRQUFRLFdBQVcsUUFBUSxZQUFZLFFBQVEsUUFDakQsU0FBUSxVQUFVLFFBQVE7QUFJNUIsTUFBSSxRQUFRLGtCQUFrQixNQUU1QixTQUNFLGtCQUFrQixRQUFRLGNBQWMsb0NBQ3pDO0FBR0gsUUFBTUEsU0FBRyxVQUNQLGlCQUNBLEtBQUssVUFBVSxTQUFTLE1BQU0sRUFBRSxHQUFHLEtBQ3BDO1VBQ00sT0FBTztBQUNkLFFBQU0sSUFBSSxNQUFNLDZCQUE2QixRQUFROztBQUl6RCxTQUFNLHVCQUF1QixRQUFRLE9BQU87O0FBRzlDLGVBQWUsV0FBVyxRQUFjLFNBQVMsT0FBTztDQUN0RCxNQUFNSSxTQUFPLE1BQU0sVUFBVUMsUUFBTSxFQUFFLENBQUMsQ0FBQyxZQUFZLE9BQVU7QUFHN0QsS0FBSUQsUUFDRjtNQUFJQSxPQUFLLFFBQVEsQ0FDZixPQUFNLElBQUksTUFDUixRQUFRQyxPQUFLLDRFQUNkO1dBQ1FELE9BQUssYUFBYSxFQUUzQjtRQURjLE1BQU0sYUFBYUMsT0FBSyxFQUM1QixPQUNSLE9BQU0sSUFBSSxNQUNSLFFBQVFBLE9BQUssc0VBQ2Q7OztBQUtQLEtBQUksQ0FBQyxPQUNILEtBQUk7QUFDRixVQUFNLG1DQUFtQ0EsU0FBTztBQUNoRCxNQUFJLENBQUMsT0FDSCxPQUFNLFdBQVdBLFFBQU0sRUFBRSxXQUFXLE1BQU0sQ0FBQztVQUV0QyxHQUFHO0FBQ1YsUUFBTSxJQUFJLE1BQU0sc0NBQXNDQSxVQUFRLEVBQzVELE9BQU8sR0FDUixDQUFDOzs7QUFLUixTQUFTLGNBQWMsTUFBc0I7QUFDM0MsUUFBTyxLQUFLLE1BQU0sSUFBSSxDQUFDLEtBQUs7Ozs7O0FDaGQ5QixJQUFzQix3QkFBdEIsY0FBb0QsUUFBUTtDQUMxRCxPQUFPLFFBQVEsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQztDQUVoRCxPQUFPLFFBQVEsUUFBUSxNQUFNLEVBQzNCLGFBQ0Usa0VBQ0gsQ0FBQztDQUVGLE1BQU0sT0FBTyxPQUFPLFNBQVMsUUFBUSxLQUFLLEVBQUUsRUFDMUMsYUFDRSxzSEFDSCxDQUFDO0NBRUYsYUFBc0IsT0FBTyxPQUFPLG9CQUFvQixFQUN0RCxhQUFhLG1DQUNkLENBQUM7Q0FFRixrQkFBa0IsT0FBTyxPQUFPLHVCQUF1QixnQkFBZ0IsRUFDckUsYUFBYSwwQkFDZCxDQUFDO0NBRUYsU0FBUyxPQUFPLE9BQU8sZ0JBQWdCLE9BQU8sRUFDNUMsYUFBYSxpREFDZCxDQUFDO0NBRUYsV0FBVyxPQUFPLE9BQU8sNkJBQTZCLFNBQVMsRUFDN0QsYUFBYSxtQ0FDZCxDQUFDO0NBRUYsWUFBWSxPQUFPLFFBQVEsZ0JBQWdCLE1BQU0sRUFDL0MsYUFBYSxpQ0FDZCxDQUFDO0NBRUYsZ0JBQXlCLE9BQU8sT0FBTyxxQkFBcUIsRUFDMUQsYUFBYSx1QkFDZCxDQUFDO0NBRUYsY0FBdUIsT0FBTyxPQUFPLG1CQUFtQixFQUN0RCxhQUFhLDhCQUNkLENBQUM7Q0FFRixzQkFBc0IsT0FBTyxRQUFRLDJCQUEyQixPQUFPLEVBQ3JFLGFBQWEsc0RBQ2QsQ0FBQztDQUVGLFNBQVMsT0FBTyxRQUFRLGFBQWEsT0FBTyxFQUMxQyxhQUFhLHdDQUNkLENBQUM7Q0FFRixhQUFhO0FBQ1gsU0FBTztHQUNMLEtBQUssS0FBSztHQUNWLFlBQVksS0FBSztHQUNqQixpQkFBaUIsS0FBSztHQUN0QixRQUFRLEtBQUs7R0FDYixVQUFVLEtBQUs7R0FDZixXQUFXLEtBQUs7R0FDaEIsZUFBZSxLQUFLO0dBQ3BCLGFBQWEsS0FBSztHQUNsQixxQkFBcUIsS0FBSztHQUMxQixRQUFRLEtBQUs7R0FDZDs7O0FBZ0VMLFNBQWdCLDhCQUE4QixTQUE0QjtBQUN4RSxRQUFPO0VBQ0wsS0FBSyxRQUFRLEtBQUs7RUFDbEIsaUJBQWlCO0VBQ2pCLFFBQVE7RUFDUixVQUFVO0VBQ1YsV0FBVztFQUNYLHFCQUFxQjtFQUNyQixRQUFRO0VBQ1IsR0FBRztFQUNKOzs7OztBQ3ZJSCxJQUFzQixxQkFBdEIsY0FBaUQsUUFBUTtDQUN2RCxPQUFPLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQztDQUU1QixPQUFPLFFBQVEsUUFBUSxNQUFNLEVBQzNCLGFBQWEsMENBQ2QsQ0FBQztDQUVGLE1BQU0sT0FBTyxPQUFPLFNBQVMsUUFBUSxLQUFLLEVBQUUsRUFDMUMsYUFDRSxzSEFDSCxDQUFDO0NBRUYsYUFBc0IsT0FBTyxPQUFPLG9CQUFvQixFQUN0RCxhQUFhLG1DQUNkLENBQUM7Q0FFRixrQkFBa0IsT0FBTyxPQUFPLHVCQUF1QixnQkFBZ0IsRUFDckUsYUFBYSwwQkFDZCxDQUFDO0NBRUYsU0FBUyxPQUFPLE9BQU8sYUFBYSxPQUFPLEVBQ3pDLGFBQWEsaURBQ2QsQ0FBQztDQUVGLGFBQWE7QUFDWCxTQUFPO0dBQ0wsS0FBSyxLQUFLO0dBQ1YsWUFBWSxLQUFLO0dBQ2pCLGlCQUFpQixLQUFLO0dBQ3RCLFFBQVEsS0FBSztHQUNkOzs7QUFnQ0wsU0FBZ0IsMkJBQTJCLFNBQXlCO0FBQ2xFLFFBQU87RUFDTCxLQUFLLFFBQVEsS0FBSztFQUNsQixpQkFBaUI7RUFDakIsUUFBUTtFQUNSLEdBQUc7RUFDSjs7Ozs7QUM1REgsTUFBTUMsVUFBUSxhQUFhLFVBQVU7QUFFckMsZUFBc0IsUUFBUSxhQUE2QjtDQUN6RCxNQUFNLFVBQVUsMkJBQTJCLFlBQVk7Q0FHdkQsTUFBTSxTQUFTLE1BQU0sZUFGRyxRQUFRLFFBQVEsS0FBSyxRQUFRLGdCQUFnQixFQUluRSxRQUFRLGFBQWEsUUFBUSxRQUFRLEtBQUssUUFBUSxXQUFXLEdBQUcsT0FDakU7QUFFRCxNQUFLLE1BQU0sVUFBVSxPQUFPLFNBQVM7RUFDbkMsTUFBTSxTQUFTLFFBQVEsUUFBUSxLQUFLLFFBQVEsUUFBUSxPQUFPLGdCQUFnQjtBQUUzRSxVQUFNLGdDQUFnQyxPQUFPLFlBQVksU0FBUyxPQUFPO0FBQ3pFLFFBQU0sa0JBQWtCLEtBQUssUUFBUSxlQUFlLEVBQUUsRUFDcEQsU0FBUyxPQUFPLFlBQVksU0FDN0IsQ0FBQzs7Ozs7O0FDVk4sTUFBTUMsVUFBUSxhQUFhLGNBQWM7QUFRekMsZUFBc0IsV0FBVyxhQUFnQztBQUMvRCxTQUFNLCtCQUErQjtBQUNyQyxTQUFNLFFBQVEsWUFBWTtDQUUxQixNQUFNLFVBQVUsOEJBQThCLFlBQVk7Q0FFMUQsTUFBTSxrQkFBa0IsUUFBUSxRQUFRLEtBQUssUUFBUSxnQkFBZ0I7Q0FFckUsTUFBTSxFQUFFLGFBQWEsU0FBUyxhQUFhLFlBQVksY0FDckQsTUFBTSxlQUNKLGlCQUNBLFFBQVEsYUFBYSxRQUFRLFFBQVEsS0FBSyxRQUFRLFdBQVcsR0FBRyxPQUNqRTtDQUVILGVBQWUsZ0JBQWdCLGVBQXFCLFdBQWlCO0FBQ25FLE1BQUksQ0FBQyxRQUFRLFVBQ1gsUUFBTztHQUNMLE9BQU87R0FDUCxNQUFNO0dBQ04sU0FBUztJQUFFLE1BQU07SUFBTSxTQUFTO0lBQU0sS0FBSztJQUFNO0dBQ2xEO0VBRUgsTUFBTSxFQUFFLGNBQU0sZ0JBQU8sb0JBQVMsdUJBQVksWUFBWUMsZUFBYUMsVUFBUTtBQUUzRSxNQUFJLENBQUNDLFVBQVEsQ0FBQ0MsUUFDWixRQUFPO0dBQ0wsT0FBTztHQUNQLE1BQU07R0FDTixTQUFTO0lBQUUsTUFBTTtJQUFNLFNBQVM7SUFBTSxLQUFLO0lBQU07R0FDbEQ7QUFHSCxNQUFJLENBQUMsUUFBUSxPQUNYLEtBQUk7QUFDRixTQUFNQyxVQUFRLE1BQU0sY0FBYztJQUNoQztJQUNBO0lBQ0EsVUFBVUMsVUFBUTtJQUNsQixNQUFNLFFBQVE7SUFDZCxZQUNFSixVQUFRLFNBQVMsUUFBUSxJQUN6QkEsVUFBUSxTQUFTLE9BQU8sSUFDeEJBLFVBQVEsU0FBUyxLQUFLO0lBQ3pCLENBQUM7V0FDSyxHQUFHO0FBQ1YsV0FDRSxXQUFXLEtBQUssVUFDZDtJQUFFO0lBQU87SUFBTSxVQUFVSSxVQUFRO0lBQUssRUFDdEMsTUFDQSxFQUNELEdBQ0Y7QUFDRCxXQUFRLE1BQU0sRUFBRTs7QUFHcEIsU0FBTztHQUFFO0dBQU87R0FBTTtHQUFTO0dBQVM7O0NBRzFDLFNBQVMsWUFBWSxlQUFxQixXQUFpQjtFQUN6RCxNQUFNLGFBQWEsU0FBUywwQkFBMEIsRUFDcEQsVUFBVSxTQUNYLENBQUMsQ0FBQyxNQUFNO0VBRVQsTUFBTSxFQUFFLHNCQUFzQixRQUFRO0FBQ3RDLE1BQUksQ0FBQyxrQkFDSCxRQUFPO0dBQ0wsT0FBTztHQUNQLE1BQU07R0FDTixTQUFTO0lBQUUsTUFBTTtJQUFNLFNBQVM7SUFBTSxLQUFLO0lBQU07R0FDbEQ7QUFFSCxVQUFNLHNCQUFzQixvQkFBb0I7RUFDaEQsTUFBTSxDQUFDRixTQUFPRCxVQUFRLGtCQUFrQixNQUFNLElBQUk7RUFDbEQsTUFBTUUsWUFBVSxJQUFJLFFBQVEsRUFDMUIsTUFBTSxRQUFRLElBQUksY0FDbkIsQ0FBQztFQUNGLElBQUlFO0FBQ0osTUFBSSxRQUFRLGFBQWEsU0FBUztBQVFoQyxlQVAwQixXQUN2QixNQUFNLEtBQUssQ0FDWCxLQUFLLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FDMUIsUUFBUSxNQUFNLFVBQVUsS0FBSyxVQUFVLE1BQU0sQ0FDN0MsS0FBSyxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUMsQ0FDaEMsSUFBSSxTQUFTLENBRVksTUFDekIsY0FBWUQsVUFBUSxTQUFTTCxjQUMvQjtBQUVELE9BQUksQ0FBQ0ssVUFDSCxPQUFNLElBQUksVUFDUixnQ0FBZ0NMLGNBQVksMEJBQTBCLGFBQ3ZFO1FBR0gsYUFBVTtHQUNSLEtBQUssSUFBSUM7R0FDVDtHQUNBLE1BQU1EO0dBQ1A7QUFFSCxTQUFPO0dBQUU7R0FBTztHQUFNO0dBQVM7R0FBUzs7QUFHMUMsS0FBSSxDQUFDLFFBQVEsUUFBUTtBQUNuQixRQUFNLFFBQVEsWUFBWTtBQUMxQixRQUFNLGtCQUFrQixpQkFBaUIsRUFDdkMsc0JBQXNCLFFBQVEsUUFDM0IsTUFBTSxXQUFXO0FBQ2hCLFFBQUssR0FBRyxZQUFZLEdBQUcsT0FBTyxxQkFBcUIsWUFBWTtBQUUvRCxVQUFPO0tBRVQsRUFBRSxDQUNILEVBQ0YsQ0FBQzs7Q0FHSixNQUFNLEVBQUUsT0FBTyxNQUFNLFNBQVMsWUFBWSxRQUFRLGNBQzlDLFlBQVksYUFBYSxZQUFZLFFBQVEsR0FDN0MsTUFBTSxnQkFBZ0IsYUFBYSxZQUFZLFFBQVE7QUFFM0QsTUFBSyxNQUFNLFVBQVUsU0FBUztFQUM1QixNQUFNLFNBQVMsUUFDYixRQUFRLEtBQ1IsUUFBUSxRQUNSLEdBQUcsT0FBTyxrQkFDWDtFQUNELE1BQU0sTUFDSixPQUFPLGFBQWEsVUFBVSxPQUFPLGFBQWEsU0FBUyxTQUFTO0VBQ3RFLE1BQU0sV0FBVyxHQUFHLFdBQVcsR0FBRyxPQUFPLGdCQUFnQixHQUFHO0VBQzVELE1BQU0sVUFBVSxLQUFLLFFBQVEsU0FBUztBQUV0QyxNQUFJLENBQUMsUUFBUSxRQUFRO0FBQ25CLE9BQUksQ0FBQyxXQUFXLFFBQVEsRUFBRTtBQUN4QixZQUFNLEtBQUssb0JBQW9CLFFBQVE7QUFDdkM7O0FBR0YsT0FBSSxDQUFDLFFBQVEsb0JBQ1gsS0FBSTtJQUNGLE1BQU0sU0FBUyxTQUFTLEdBQUcsVUFBVSxXQUFXO0tBQzlDLEtBQUs7S0FDTCxLQUFLLFFBQVE7S0FDYixPQUFPO0tBQ1IsQ0FBQztBQUNGLFlBQVEsT0FBTyxNQUFNLE9BQU87WUFDckIsR0FBRztBQUNWLFFBQ0UsYUFBYSxTQUNiLEVBQUUsUUFBUSxTQUNSLDREQUNELEVBQ0Q7QUFDQSxhQUFRLEtBQUssRUFBRSxRQUFRO0FBQ3ZCLGFBQU0sS0FBSyxHQUFHLE9BQU8sK0JBQStCO1VBRXBELE9BQU07O0FBS1osT0FBSSxRQUFRLGFBQWEsUUFBUSxPQUFPO0FBQ3RDLFlBQU0sS0FBSywyQkFBMkIsUUFBUSxNQUFNO0FBQ3BELFFBQUk7S0FDRixNQUFNLFlBQVksUUFBUSxjQUN0QixPQUFPLFFBQVEsWUFBWSxJQUV6QixNQUFNLFFBQVMsTUFBTSxnQkFBZ0I7TUFDN0I7TUFDQztNQUNQLEtBQUssUUFBUTtNQUNkLENBQUMsRUFDRixLQUFLO0tBQ1gsTUFBTSxlQUFlLFNBQVMsUUFBUTtLQUN0QyxNQUFNLFlBQVksTUFBTSxRQUFTLE1BQU0sbUJBQW1CO01BQ2pEO01BQ0Q7TUFDTixNQUFNO01BQ04sWUFBWTtNQUNaLFdBQVcsRUFBRSxRQUFRLE9BQU87TUFDNUIsU0FBUztPQUNQLGtCQUFrQixhQUFhO09BQy9CLGdCQUFnQjtPQUNqQjtNQUVELE1BQU0sTUFBTSxjQUFjLFFBQVE7TUFDbkMsQ0FBQztBQUNGLGFBQU0sS0FBSyx5QkFBeUI7QUFDcEMsYUFBTSxLQUFLLG9CQUFvQixVQUFVLEtBQUsscUJBQXFCO2FBQzVELEdBQUc7QUFDVixhQUFNLE1BQ0osVUFBVSxLQUFLLFVBQ2I7TUFBRTtNQUFPO01BQU0sS0FBSyxRQUFRO01BQUssVUFBVTtNQUFTLEVBQ3BELE1BQ0EsRUFDRCxHQUNGO0FBQ0QsYUFBTSxNQUFNLEVBQUU7Ozs7OztBQU94QixTQUFTLFNBQVMsS0FBYTtDQUM3QixNQUFNLFdBQVcsSUFBSSxNQUFNLElBQUk7Q0FDL0IsTUFBTUMsWUFBVSxTQUFTLEtBQUs7QUFHOUIsUUFBTztFQUNMLE1BSFcsU0FBUyxLQUFLLElBQUk7RUFJN0I7RUFDQTtFQUNEOzs7OztBQzdPSCxJQUFzQiwwQkFBdEIsY0FBc0QsUUFBUTtDQUM1RCxPQUFPLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FBQztDQUVqQyxPQUFPLFFBQVEsUUFBUSxNQUFNLEVBQzNCLGFBQWEsb0RBQ2QsQ0FBQztDQUVGLE1BQU0sT0FBTyxPQUFPLFNBQVMsUUFBUSxLQUFLLEVBQUUsRUFDMUMsYUFDRSxzSEFDSCxDQUFDO0NBRUYsYUFBc0IsT0FBTyxPQUFPLG9CQUFvQixFQUN0RCxhQUFhLG1DQUNkLENBQUM7Q0FFRixrQkFBa0IsT0FBTyxPQUFPLHVCQUF1QixnQkFBZ0IsRUFDckUsYUFBYSwwQkFDZCxDQUFDO0NBRUYsWUFBWSxPQUFPLE9BQU8sbUJBQW1CLE1BQU0sRUFDakQsYUFDRSxpR0FDSCxDQUFDO0NBRUYsYUFBYTtBQUNYLFNBQU87R0FDTCxLQUFLLEtBQUs7R0FDVixZQUFZLEtBQUs7R0FDakIsaUJBQWlCLEtBQUs7R0FDdEIsV0FBVyxLQUFLO0dBQ2pCOzs7QUFnQ0wsU0FBZ0IsZ0NBQWdDLFNBQThCO0FBQzVFLFFBQU87RUFDTCxLQUFLLFFBQVEsS0FBSztFQUNsQixpQkFBaUI7RUFDakIsV0FBVztFQUNYLEdBQUc7RUFDSjs7Ozs7QUM3REgsTUFBTU0sVUFBUSxhQUFhLGVBQWU7QUFFMUMsTUFBTUMsaUJBRUYsRUFDRixTQUFTLFFBQVEsV0FBVztBQUMxQixXQUFVLFFBQVE7RUFBQztFQUFXO0VBQVc7RUFBUSxHQUFHO0VBQU8sRUFBRSxFQUMzRCxPQUFPLFdBQ1IsQ0FBQztHQUVMO0FBRUQsZUFBc0IscUJBQXFCLGFBQWtDOztDQUMzRSxNQUFNLFVBQVUsZ0NBQWdDLFlBQVk7Q0FJNUQsTUFBTSxTQUFTLE1BQU0sZUFGRyxLQUFLLFFBQVEsS0FBSyxRQUFRLGdCQUFnQixFQUloRSxRQUFRLGFBQWEsUUFBUSxRQUFRLEtBQUssUUFBUSxXQUFXLEdBQUcsT0FDakU7QUFNRCxLQUFJLENBSlcsT0FBTyxRQUFRLE1BQzNCLE1BQU0sRUFBRSxhQUFhLFFBQVEsWUFBWSxFQUFFLFNBQVMsWUFDdEQsQ0FHQyxPQUFNLElBQUksTUFDUixrQ0FBa0MsUUFBUSxTQUFTLHdCQUNwRDtDQUdILE1BQU0sb0NBQVcsbUJBQW1CLFFBQVEseUZBQVcsS0FBSyxTQUMxRCxRQUNFLFFBQVEsS0FDUixRQUFRLFdBQ1IsR0FBRyxPQUFPLFdBQVcsR0FBRyxRQUFRLFNBQVMsR0FBRyxLQUFLLE9BQ2xELENBQ0Y7QUFFRCxLQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsUUFBUSxVQUN2QyxPQUFNLElBQUksTUFDUixrQ0FBa0MsUUFBUSxTQUFTLGtCQUNwRDtBQUdILFNBQU0sMENBQTBDO0FBQ2hELFNBQU0sUUFBUSxTQUFTO0NBRXZCLE1BQU0sZ0JBQWdCLE1BQU0sUUFBUSxJQUFJLFNBQVMsS0FBSyxNQUFNLFdBQVcsRUFBRSxDQUFDLENBQUM7Q0FFM0UsTUFBTSxnQkFBZ0IsU0FBUyxRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsR0FBRztBQUVsRSxLQUFJLGNBQWMsT0FDaEIsT0FBTSxJQUFJLE1BQ1IscUNBQXFDLEtBQUssVUFBVSxjQUFjLEdBQ25FO0NBR0gsTUFBTSxTQUFTLFFBQ2IsUUFBUSxLQUNSLFFBQVEsV0FDUixHQUFHLE9BQU8sV0FBVyxHQUFHLFFBQVEsU0FBUyxpQkFDMUM7QUFFRCx5Q0FBZSxRQUFRLHNHQUFZLFVBQVUsT0FBTztBQUVwRCxTQUFNLDhCQUE4QixTQUFTOzs7OztBQzFFL0MsSUFBYSxtQkFBYixjQUFzQyxxQkFBcUI7Q0FDekQsT0FBTyxRQUFRLFFBQVEsTUFBTTtFQUMzQixhQUFhO0VBQ2IsVUFBVSxDQUNSLENBQ0Usc0RBQ0E7Z0ZBRUQsQ0FDRjtFQUNGLENBQUM7Q0FFRixPQUFPLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQztDQUU5QixNQUFNLFVBQVU7QUFDZCxRQUFNLGlCQUFpQixLQUFLLFlBQVksQ0FBQzs7Ozs7O0FDaEI3QyxJQUFzQixtQkFBdEIsY0FBK0MsUUFBUTtDQUNyRCxPQUFPLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztDQUUxQixPQUFPLFFBQVEsUUFBUSxNQUFNLEVBQzNCLGFBQWEsNkJBQ2QsQ0FBQztDQUVGLFNBQWtCLE9BQU8sT0FBTyxlQUFlLEVBQzdDLGFBQ0UsbUVBQ0gsQ0FBQztDQUVGLE1BQWUsT0FBTyxPQUFPLFNBQVMsRUFDcEMsYUFDRSxzSEFDSCxDQUFDO0NBRUYsZUFBd0IsT0FBTyxPQUFPLG1CQUFtQixFQUN2RCxhQUFhLHdCQUNkLENBQUM7Q0FFRixhQUFzQixPQUFPLE9BQU8sb0JBQW9CLEVBQ3RELGFBQWEsbUNBQ2QsQ0FBQztDQUVGLGtCQUEyQixPQUFPLE9BQU8sdUJBQXVCLEVBQzlELGFBQWEsMEJBQ2QsQ0FBQztDQUVGLFlBQXFCLE9BQU8sT0FBTyxnQkFBZ0IsRUFDakQsYUFDRSwrRUFDSCxDQUFDO0NBRUYsWUFBcUIsT0FBTyxPQUFPLG1CQUFtQixFQUNwRCxhQUNFLCtFQUNILENBQUM7Q0FFRixXQUFxQixPQUFPLFFBQVEsY0FBYyxFQUNoRCxhQUNFLDZGQUNILENBQUM7Q0FFRixnQkFBeUIsT0FBTyxPQUFPLHFCQUFxQixFQUMxRCxhQUNFLGdGQUNILENBQUM7Q0FFRixZQUFzQixPQUFPLFFBQVEsZ0JBQWdCLEVBQ25ELGFBQWEsdURBQ2QsQ0FBQztDQUVGLFlBQXFCLE9BQU8sT0FBTyxRQUFRLEVBQ3pDLGFBQ0Usa0hBQ0gsQ0FBQztDQUVGLGNBQXdCLE9BQU8sUUFBUSxXQUFXLEVBQ2hELGFBQ0UseUZBQ0gsQ0FBQztDQUVGLE1BQWUsT0FBTyxPQUFPLFNBQVMsRUFDcEMsYUFDRSw0RUFDSCxDQUFDO0NBRUYsWUFBcUIsT0FBTyxPQUFPLGdCQUFnQixFQUNqRCxhQUNFLDhGQUNILENBQUM7Q0FFRixjQUF3QixPQUFPLFFBQVEsbUJBQW1CLEVBQ3hELGFBQ0Usc0hBQ0gsQ0FBQztDQUVGLFdBQVcsT0FBTyxRQUFRLGVBQWUsTUFBTSxFQUM3QyxhQUFhLG9EQUNkLENBQUM7Q0FFRixNQUFnQixPQUFPLFFBQVEsU0FBUyxFQUN0QyxhQUNFLG9HQUNILENBQUM7Q0FFRixRQUFrQixPQUFPLFFBQVEsY0FBYyxFQUM3QyxhQUFhLDhEQUNkLENBQUM7Q0FFRixVQUFvQixPQUFPLFFBQVEsZ0JBQWdCLEVBQ2pELGFBQWEseUJBQ2QsQ0FBQztDQUVGLFVBQW9CLE9BQU8sUUFBUSxnQkFBZ0IsRUFDakQsYUFBYSxxQ0FDZCxDQUFDO0NBRUYsTUFBZSxPQUFPLE9BQU8sU0FBUyxFQUNwQyxhQUFhLG1DQUNkLENBQUM7Q0FFRixVQUFtQixPQUFPLE9BQU8sZ0JBQWdCLEVBQy9DLGFBQWEsaURBQ2QsQ0FBQztDQUVGLFVBQW1CLE9BQU8sT0FBTyxhQUFhLEVBQzVDLGFBQWEsOENBQ2QsQ0FBQztDQUVGLGVBQXlCLE9BQU8sUUFBUSxzQkFBc0IsRUFDNUQsYUFDRSw2SEFDSCxDQUFDO0NBRUYsV0FBcUIsT0FBTyxRQUFRLGVBQWUsRUFDakQsYUFDRSxvRkFDSCxDQUFDO0NBRUYsZUFBeUIsT0FBTyxRQUFRLG9CQUFvQixFQUMxRCxhQUNFLGlHQUNILENBQUM7Q0FFRixRQUFrQixPQUFPLFFBQVEsY0FBYyxFQUM3QyxhQUNFLDRFQUNILENBQUM7Q0FFRixXQUFzQixPQUFPLE1BQU0saUJBQWlCLEVBQ2xELGFBQWEsZ0RBQ2QsQ0FBQztDQUVGLGNBQXdCLE9BQU8sUUFBUSxrQkFBa0IsRUFDdkQsYUFBYSxtQ0FDZCxDQUFDO0NBRUYsb0JBQThCLE9BQU8sUUFBUSx5QkFBeUIsRUFDcEUsYUFBYSx5Q0FDZCxDQUFDO0NBRUYsYUFBYTtBQUNYLFNBQU87R0FDTCxRQUFRLEtBQUs7R0FDYixLQUFLLEtBQUs7R0FDVixjQUFjLEtBQUs7R0FDbkIsWUFBWSxLQUFLO0dBQ2pCLGlCQUFpQixLQUFLO0dBQ3RCLFdBQVcsS0FBSztHQUNoQixXQUFXLEtBQUs7R0FDaEIsVUFBVSxLQUFLO0dBQ2YsZUFBZSxLQUFLO0dBQ3BCLFdBQVcsS0FBSztHQUNoQixXQUFXLEtBQUs7R0FDaEIsYUFBYSxLQUFLO0dBQ2xCLEtBQUssS0FBSztHQUNWLFdBQVcsS0FBSztHQUNoQixhQUFhLEtBQUs7R0FDbEIsVUFBVSxLQUFLO0dBQ2YsS0FBSyxLQUFLO0dBQ1YsT0FBTyxLQUFLO0dBQ1osU0FBUyxLQUFLO0dBQ2QsU0FBUyxLQUFLO0dBQ2QsS0FBSyxLQUFLO0dBQ1YsU0FBUyxLQUFLO0dBQ2QsU0FBUyxLQUFLO0dBQ2QsY0FBYyxLQUFLO0dBQ25CLFVBQVUsS0FBSztHQUNmLGNBQWMsS0FBSztHQUNuQixPQUFPLEtBQUs7R0FDWixVQUFVLEtBQUs7R0FDZixhQUFhLEtBQUs7R0FDbEIsbUJBQW1CLEtBQUs7R0FDekI7Ozs7OztBQzNLTCxNQUFNQyxVQUFRLGFBQWEsUUFBUTtBQUVuQyxJQUFhLGVBQWIsY0FBa0MsaUJBQWlCO0NBQ2pELE9BQU8sT0FBTyxPQUFPLFVBQVUsRUFDN0IsYUFDRSw2RkFDSCxDQUFDO0NBRUYsZUFBZSxPQUFPLE1BQU07Q0FFNUIsTUFBTSxVQUFVO0VBQ2QsTUFBTSxFQUFFLFNBQVMsTUFBTSxhQUFhO0dBQ2xDLEdBQUcsS0FBSyxZQUFZO0dBQ3BCLGNBQWMsS0FBSztHQUNwQixDQUFDO0VBRUYsTUFBTSxVQUFVLE1BQU07QUFFdEIsTUFBSSxLQUFLLEtBQ1AsTUFBSyxNQUFNLFVBQVUsU0FBUztBQUM1QixXQUFNLHFDQUFxQyxLQUFLLEtBQUs7QUFDckQsT0FBSTtBQUNGLGFBQVMsR0FBRyxLQUFLLEtBQUssR0FBRyxPQUFPLFFBQVE7S0FDdEMsT0FBTztLQUNQLEtBQUssS0FBSztLQUNYLENBQUM7WUFDSyxHQUFHO0FBQ1YsWUFBTSxNQUFNLDhCQUE4QixPQUFPLEtBQUssYUFBYTtBQUNuRSxZQUFNLE1BQU0sRUFBRTs7Ozs7Ozs7QUNqQ3hCLElBQWEsdUJBQWIsY0FBMEMseUJBQXlCO0NBQ2pFLE1BQU0sVUFBVTtBQUNkLFFBQU0sY0FBYyxLQUFLLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7QUNFMUMsSUFBYSxjQUFiLGNBQWlDLFFBQWE7Q0FDNUMsT0FBTyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUM7Q0FDbkMsTUFBTSxVQUFVO0FBQ2QsUUFBTSxLQUFLLFFBQVEsT0FBTyxNQUFNLEtBQUssSUFBSSxPQUFPLENBQUM7Ozs7OztBQ0tyRCxNQUFNLFFBQVEsYUFBYSxNQUFNO0FBRWpDLElBQWEsYUFBYixjQUFnQyxlQUFlO0NBQzdDLGNBQWMsT0FBTyxRQUFRLG9CQUFvQixNQUFNLEVBQ3JELGFBQ0UsK0VBQ0gsQ0FBQztDQUVGLE1BQU0sVUFBVTtBQUNkLE1BQUk7QUFFRixTQUFNLFdBRFUsTUFBTSxLQUFLLGNBQWMsQ0FDaEI7QUFDekIsVUFBTztXQUNBLEdBQUc7QUFDVixTQUFNLCtCQUErQjtBQUNyQyxTQUFNLE1BQU0sRUFBRTtBQUNkLFVBQU87OztDQUlYLE1BQWMsZUFBZTtFQUMzQixNQUFNLGFBQWEsTUFBTSxZQUFZO0FBRXJDLE1BQUksS0FBSyxhQUFhO0dBQ3BCLE1BQU1DLGFBQXFCLFdBQVcsT0FDbEMsV0FBVyxPQUNYLE1BQU0scUJBQXFCO0FBQy9CLGNBQVcsT0FBTztBQUNsQixVQUFPO0lBQ0wsR0FBRztJQUNILE1BQU0sTUFBTSxLQUFLLFVBQVUsS0FBSyxNQUFNLFdBQVcsQ0FBQyxLQUFLO0lBQ3ZELG1CQUFtQixNQUFNLEtBQUssa0JBQWtCO0lBQ2hELFNBQVMsTUFBTSxLQUFLLGNBQWM7SUFDbEMsU0FBUyxNQUFNLEtBQUssY0FBYztJQUNsQyxlQUFlLE1BQU0sS0FBSyxjQUFjO0lBQ3hDLHFCQUFxQixNQUFNLEtBQUssb0JBQW9CO0lBQ3JEOztBQUdILFNBQU87O0NBR1QsTUFBYyxVQUFVLGFBQXNDO0FBQzVELFNBQ0UsS0FBSyxVQUNMLE1BQU07R0FDSixTQUFTO0dBQ1QsU0FBUztHQUNWLENBQUM7O0NBSU4sTUFBYyxlQUFnQztBQUM1QyxTQUFPLE1BQU07R0FDWCxTQUFTO0dBQ1QsU0FBUyxLQUFLO0dBQ2YsQ0FBQzs7Q0FHSixNQUFjLG1CQUFvQztBQUNoRCxTQUFPLE9BQU87R0FDWixTQUFTO0dBQ1QsTUFBTTtHQUNOLFVBQVU7R0FDVixTQUFTLE1BQU0sS0FBSyxFQUFFLFFBQVEsR0FBRyxHQUFHLEdBQUcsT0FBTztJQUM1QyxNQUFNLE9BQU8sSUFBSSxFQUFFLElBQUksc0JBQXNCLElBQUksRUFBRSxDQUFDO0lBQ3BELE9BQU8sSUFBSTtJQUNaLEVBQUU7R0FFSCxTQUFTLEtBQUssb0JBQW9CO0dBQ25DLENBQUM7O0NBR0osTUFBYyxlQUF3QztBQUNwRCxNQUFJLEtBQUssaUJBQ1AsUUFBTyxrQkFBa0IsUUFBUTtBQWNuQyxTQVhnQixNQUFNLFNBQVM7R0FDN0IsTUFBTTtHQUNOLFNBQVM7R0FDVCxTQUFTLGtCQUFrQixLQUFLLFlBQVk7SUFDMUMsTUFBTTtJQUNOLE9BQU87SUFFUCxTQUFTLGdCQUFnQixTQUFTLE9BQU87SUFDMUMsRUFBRTtHQUNKLENBQUM7O0NBS0osTUFBYyxlQUFpQztBQU03QyxTQUxzQixNQUFNLFFBQVE7R0FDbEMsU0FBUztHQUNULFNBQVMsS0FBSztHQUNmLENBQUM7O0NBS0osTUFBYyxxQkFBdUM7QUFNbkQsU0FMNEIsTUFBTSxRQUFRO0dBQ3hDLFNBQVM7R0FDVCxTQUFTLEtBQUs7R0FDZixDQUFDOzs7QUFNTixlQUFlLHNCQUF1QztBQUNwRCxRQUFPLE1BQU0sRUFDWCxTQUFTLHVEQUNWLENBQUMsQ0FBQyxNQUFNLFdBQVM7QUFDaEIsTUFBSSxDQUFDQyxPQUNILFFBQU8scUJBQXFCO0FBRTlCLFNBQU9BO0dBQ1A7Ozs7O0FDbklKLElBQWEsb0JBQWIsY0FBdUMsc0JBQXNCO0NBQzNELE1BQU0sVUFBVTtBQUVkLFFBQU0sV0FBVyxLQUFLLFlBQVksQ0FBQzs7Ozs7O0FDRHZDLElBQWEsZ0JBQWIsY0FBbUMsa0JBQWtCO0NBQ25ELE1BQU0sVUFBVTtFQUNkLE1BQU0sVUFBVSxLQUFLLFlBQVk7QUFDakMsTUFBSSxDQUFDLFFBQVEsS0FLWCxTQUFRLE9BSkssTUFBTSxNQUFNO0dBQ3ZCLFNBQVM7R0FDVCxVQUFVO0dBQ1gsQ0FBQztBQUdKLE1BQUksQ0FBQyxRQUFRLFdBS1gsU0FBUSxhQUpXLE1BQU0sTUFBTTtHQUM3QixTQUFTO0dBQ1QsVUFBVTtHQUNYLENBQUM7QUFHSixRQUFNLGNBQWMsUUFBUTs7Ozs7O0FDbkJoQyxJQUFhLHNCQUFiLGNBQXlDLHdCQUF3QjtDQUMvRCxNQUFNLFVBQVU7QUFDZCxRQUFNLHFCQUFxQixLQUFLLFlBQVksQ0FBQzs7Ozs7O0FDRmpELElBQWEsaUJBQWIsY0FBb0MsbUJBQW1CO0NBQ3JELE1BQU0sVUFBVTtBQUNkLFFBQU0sUUFBUSxLQUFLLFlBQVksQ0FBQzs7Ozs7O0FDZ0JwQyxNQUFhLE1BQU0sSUFBSSxJQUFJO0NBQ3pCLFlBQVk7Q0FDWixlQUFlO0NBQ2hCLENBQUM7QUFFRixJQUFJLFNBQVMsV0FBVztBQUN4QixJQUFJLFNBQVMsYUFBYTtBQUMxQixJQUFJLFNBQVMscUJBQXFCO0FBQ2xDLElBQUksU0FBUyxpQkFBaUI7QUFDOUIsSUFBSSxTQUFTLG9CQUFvQjtBQUNqQyxJQUFJLFNBQVMsY0FBYztBQUMzQixJQUFJLFNBQVMsa0JBQWtCO0FBQy9CLElBQUksU0FBUyxlQUFlO0FBQzVCLElBQUksU0FBUyxZQUFZOzs7O0FDOUJwQixJQUFJLFFBQVEsUUFBUSxLQUFLLE1BQU0sRUFBRSxDQUFDIn0= \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/dist/index.cjs b/sdks/nodejs/node_modules/@napi-rs/cli/dist/index.cjs deleted file mode 100644 index 9765651..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/dist/index.cjs +++ /dev/null @@ -1,3841 +0,0 @@ -//#region rolldown:runtime -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { - key = keys[i]; - if (!__hasOwnProp.call(to, key) && key !== except) { - __defProp(to, key, { - get: ((k) => from[k]).bind(null, key), - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable - }); - } - } - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { - value: mod, - enumerable: true -}) : target, mod)); - -//#endregion -let clipanion = require("clipanion"); -let node_path = require("node:path"); -node_path = __toESM(node_path); -let colorette = require("colorette"); -colorette = __toESM(colorette); -let obug = require("obug"); -let node_fs_promises = require("node:fs/promises"); -let node_child_process = require("node:child_process"); -let node_fs = require("node:fs"); -node_fs = __toESM(node_fs); -let es_toolkit = require("es-toolkit"); -let node_crypto = require("node:crypto"); -let node_module = require("node:module"); -let node_os = require("node:os"); -let semver = require("semver"); -let js_yaml = require("js-yaml"); -let typanion = require("typanion"); -typanion = __toESM(typanion); -let __octokit_rest = require("@octokit/rest"); -let __inquirer_prompts = require("@inquirer/prompts"); - -//#region src/def/artifacts.ts -var BaseArtifactsCommand = class extends clipanion.Command { - static paths = [["artifacts"]]; - static usage = clipanion.Command.Usage({ description: "Copy artifacts from Github Actions into npm packages and ready to publish" }); - cwd = clipanion.Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = clipanion.Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = clipanion.Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - outputDir = clipanion.Option.String("--output-dir,-o,-d", "./artifacts", { description: "Path to the folder where all built `.node` files put, same as `--output-dir` of build command" }); - npmDir = clipanion.Option.String("--npm-dir", "npm", { description: "Path to the folder where the npm packages put" }); - buildOutputDir = clipanion.Option.String("--build-output-dir", { description: "Path to the build output dir, only needed when targets contains `wasm32-wasi-*`" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - outputDir: this.outputDir, - npmDir: this.npmDir, - buildOutputDir: this.buildOutputDir - }; - } -}; -function applyDefaultArtifactsOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - outputDir: "./artifacts", - npmDir: "npm", - ...options - }; -} - -//#endregion -//#region src/utils/log.ts -const debugFactory = (namespace) => { - const debug$10 = (0, obug.createDebug)(`napi:${namespace}`, { formatters: { i(v) { - return colorette.green(v); - } } }); - debug$10.info = (...args) => console.error(colorette.black(colorette.bgGreen(" INFO ")), ...args); - debug$10.warn = (...args) => console.error(colorette.black(colorette.bgYellow(" WARNING ")), ...args); - debug$10.error = (...args) => console.error(colorette.white(colorette.bgRed(" ERROR ")), ...args.map((arg) => arg instanceof Error ? arg.stack ?? arg.message : arg)); - return debug$10; -}; -const debug$9 = debugFactory("utils"); - -//#endregion -//#region package.json -var version$1 = "3.5.1"; - -//#endregion -//#region src/utils/misc.ts -const readFileAsync = node_fs_promises.readFile; -const writeFileAsync = node_fs_promises.writeFile; -const unlinkAsync = node_fs_promises.unlink; -const copyFileAsync = node_fs_promises.copyFile; -const mkdirAsync = node_fs_promises.mkdir; -const statAsync = node_fs_promises.stat; -const readdirAsync = node_fs_promises.readdir; -function fileExists(path$2) { - return (0, node_fs_promises.access)(path$2).then(() => true, () => false); -} -async function dirExistsAsync(path$2) { - try { - return (await statAsync(path$2)).isDirectory(); - } catch { - return false; - } -} -function pick$1(o, ...keys) { - return keys.reduce((acc, key) => { - acc[key] = o[key]; - return acc; - }, {}); -} -async function updatePackageJson(path$2, partial) { - if (!await fileExists(path$2)) { - debug$9(`File not exists ${path$2}`); - return; - } - const old = JSON.parse(await readFileAsync(path$2, "utf8")); - await writeFileAsync(path$2, JSON.stringify({ - ...old, - ...partial - }, null, 2)); -} -const CLI_VERSION = version$1; - -//#endregion -//#region src/utils/target.ts -const SUB_SYSTEMS = new Set(["android", "ohos"]); -const AVAILABLE_TARGETS = [ - "aarch64-apple-darwin", - "aarch64-linux-android", - "aarch64-unknown-linux-gnu", - "aarch64-unknown-linux-musl", - "aarch64-unknown-linux-ohos", - "aarch64-pc-windows-msvc", - "x86_64-apple-darwin", - "x86_64-pc-windows-msvc", - "x86_64-pc-windows-gnu", - "x86_64-unknown-linux-gnu", - "x86_64-unknown-linux-musl", - "x86_64-unknown-linux-ohos", - "x86_64-unknown-freebsd", - "i686-pc-windows-msvc", - "armv7-unknown-linux-gnueabihf", - "armv7-unknown-linux-musleabihf", - "armv7-linux-androideabi", - "universal-apple-darwin", - "loongarch64-unknown-linux-gnu", - "riscv64gc-unknown-linux-gnu", - "powerpc64le-unknown-linux-gnu", - "s390x-unknown-linux-gnu", - "wasm32-wasi-preview1-threads", - "wasm32-wasip1-threads" -]; -const DEFAULT_TARGETS = [ - "x86_64-apple-darwin", - "aarch64-apple-darwin", - "x86_64-pc-windows-msvc", - "x86_64-unknown-linux-gnu" -]; -const TARGET_LINKER = { - "aarch64-unknown-linux-musl": "aarch64-linux-musl-gcc", - "loongarch64-unknown-linux-gnu": "loongarch64-linux-gnu-gcc-13", - "riscv64gc-unknown-linux-gnu": "riscv64-linux-gnu-gcc", - "powerpc64le-unknown-linux-gnu": "powerpc64le-linux-gnu-gcc", - "s390x-unknown-linux-gnu": "s390x-linux-gnu-gcc" -}; -const CpuToNodeArch = { - x86_64: "x64", - aarch64: "arm64", - i686: "ia32", - armv7: "arm", - loongarch64: "loong64", - riscv64gc: "riscv64", - powerpc64le: "ppc64" -}; -const SysToNodePlatform = { - linux: "linux", - freebsd: "freebsd", - darwin: "darwin", - windows: "win32", - ohos: "openharmony" -}; -const UniArchsByPlatform = { darwin: ["x64", "arm64"] }; -/** -* A triple is a specific format for specifying a target architecture. -* Triples may be referred to as a target triple which is the architecture for the artifact produced, and the host triple which is the architecture that the compiler is running on. -* The general format of the triple is `---` where: -* - `arch` = The base CPU architecture, for example `x86_64`, `i686`, `arm`, `thumb`, `mips`, etc. -* - `sub` = The CPU sub-architecture, for example `arm` has `v7`, `v7s`, `v5te`, etc. -* - `vendor` = The vendor, for example `unknown`, `apple`, `pc`, `nvidia`, etc. -* - `sys` = The system name, for example `linux`, `windows`, `darwin`, etc. none is typically used for bare-metal without an OS. -* - `abi` = The ABI, for example `gnu`, `android`, `eabi`, etc. -*/ -function parseTriple(rawTriple) { - if (rawTriple === "wasm32-wasi" || rawTriple === "wasm32-wasi-preview1-threads" || rawTriple.startsWith("wasm32-wasip")) return { - triple: rawTriple, - platformArchABI: "wasm32-wasi", - platform: "wasi", - arch: "wasm32", - abi: "wasi" - }; - const triples = (rawTriple.endsWith("eabi") ? `${rawTriple.slice(0, -4)}-eabi` : rawTriple).split("-"); - let cpu; - let sys; - let abi = null; - if (triples.length === 2) [cpu, sys] = triples; - else [cpu, , sys, abi = null] = triples; - if (abi && SUB_SYSTEMS.has(abi)) { - sys = abi; - abi = null; - } - const platform = SysToNodePlatform[sys] ?? sys; - const arch = CpuToNodeArch[cpu] ?? cpu; - return { - triple: rawTriple, - platformArchABI: abi ? `${platform}-${arch}-${abi}` : `${platform}-${arch}`, - platform, - arch, - abi - }; -} -function getSystemDefaultTarget() { - const host = (0, node_child_process.execSync)(`rustc -vV`, { env: process.env }).toString("utf8").split("\n").find((line) => line.startsWith("host: ")); - const triple = host === null || host === void 0 ? void 0 : host.slice(6); - if (!triple) throw new TypeError(`Can not parse target triple from host`); - return parseTriple(triple); -} -function getTargetLinker(target) { - return TARGET_LINKER[target]; -} -function targetToEnvVar(target) { - return target.replace(/-/g, "_").toUpperCase(); -} - -//#endregion -//#region src/utils/version.ts -let NapiVersion = /* @__PURE__ */ function(NapiVersion$1) { - NapiVersion$1[NapiVersion$1["Napi1"] = 1] = "Napi1"; - NapiVersion$1[NapiVersion$1["Napi2"] = 2] = "Napi2"; - NapiVersion$1[NapiVersion$1["Napi3"] = 3] = "Napi3"; - NapiVersion$1[NapiVersion$1["Napi4"] = 4] = "Napi4"; - NapiVersion$1[NapiVersion$1["Napi5"] = 5] = "Napi5"; - NapiVersion$1[NapiVersion$1["Napi6"] = 6] = "Napi6"; - NapiVersion$1[NapiVersion$1["Napi7"] = 7] = "Napi7"; - NapiVersion$1[NapiVersion$1["Napi8"] = 8] = "Napi8"; - NapiVersion$1[NapiVersion$1["Napi9"] = 9] = "Napi9"; - return NapiVersion$1; -}({}); -const NAPI_VERSION_MATRIX = new Map([ - [NapiVersion.Napi1, "8.6.0 | 9.0.0 | 10.0.0"], - [NapiVersion.Napi2, "8.10.0 | 9.3.0 | 10.0.0"], - [NapiVersion.Napi3, "6.14.2 | 8.11.2 | 9.11.0 | 10.0.0"], - [NapiVersion.Napi4, "10.16.0 | 11.8.0 | 12.0.0"], - [NapiVersion.Napi5, "10.17.0 | 12.11.0 | 13.0.0"], - [NapiVersion.Napi6, "10.20.0 | 12.17.0 | 14.0.0"], - [NapiVersion.Napi7, "10.23.0 | 12.19.0 | 14.12.0 | 15.0.0"], - [NapiVersion.Napi8, "12.22.0 | 14.17.0 | 15.12.0 | 16.0.0"], - [NapiVersion.Napi9, "18.17.0 | 20.3.0 | 21.1.0"] -]); -function parseNodeVersion(v) { - const matches = v.match(/v?([0-9]+)\.([0-9]+)\.([0-9]+)/i); - if (!matches) throw new Error("Unknown node version number: " + v); - const [, major, minor, patch] = matches; - return { - major: parseInt(major), - minor: parseInt(minor), - patch: parseInt(patch) - }; -} -function requiredNodeVersions(napiVersion) { - const requirement = NAPI_VERSION_MATRIX.get(napiVersion); - if (!requirement) return [parseNodeVersion("10.0.0")]; - return requirement.split("|").map(parseNodeVersion); -} -function toEngineRequirement(versions) { - const requirements = []; - versions.forEach((v, i) => { - let req = ""; - if (i !== 0) { - const lastVersion = versions[i - 1]; - req += `< ${lastVersion.major + 1}`; - } - req += `${i === 0 ? "" : " || "}>= ${v.major}.${v.minor}.${v.patch}`; - requirements.push(req); - }); - return requirements.join(" "); -} -function napiEngineRequirement(napiVersion) { - return toEngineRequirement(requiredNodeVersions(napiVersion)); -} - -//#endregion -//#region src/utils/metadata.ts -async function parseMetadata(manifestPath) { - if (!node_fs.default.existsSync(manifestPath)) throw new Error(`No crate found in manifest: ${manifestPath}`); - const childProcess = (0, node_child_process.spawn)("cargo", [ - "metadata", - "--manifest-path", - manifestPath, - "--format-version", - "1" - ], { stdio: "pipe" }); - let stdout = ""; - let stderr = ""; - let status = 0; - childProcess.stdout.on("data", (data) => { - stdout += data; - }); - childProcess.stderr.on("data", (data) => { - stderr += data; - }); - await new Promise((resolve$9) => { - childProcess.on("close", (code) => { - status = code ?? 0; - resolve$9(); - }); - }); - if (status !== 0) { - const simpleMessage = `cargo metadata exited with code ${status}`; - throw new Error(`${simpleMessage} and error message:\n\n${stderr}`, { cause: new Error(simpleMessage) }); - } - try { - return JSON.parse(stdout); - } catch (e) { - throw new Error("Failed to parse cargo metadata JSON", { cause: e }); - } -} - -//#endregion -//#region src/utils/config.ts -async function readNapiConfig(path$2, configPath) { - if (configPath && !await fileExists(configPath)) throw new Error(`NAPI-RS config not found at ${configPath}`); - if (!await fileExists(path$2)) throw new Error(`package.json not found at ${path$2}`); - const content = await readFileAsync(path$2, "utf8"); - let pkgJson; - try { - pkgJson = JSON.parse(content); - } catch (e) { - throw new Error(`Failed to parse package.json at ${path$2}`, { cause: e }); - } - let separatedConfig; - if (configPath) { - const configContent = await readFileAsync(configPath, "utf8"); - try { - separatedConfig = JSON.parse(configContent); - } catch (e) { - throw new Error(`Failed to parse NAPI-RS config at ${configPath}`, { cause: e }); - } - } - const userNapiConfig = pkgJson.napi ?? {}; - if (pkgJson.napi && separatedConfig) { - const pkgJsonPath = (0, colorette.underline)(path$2); - const configPathUnderline = (0, colorette.underline)(configPath); - console.warn((0, colorette.yellow)(`Both napi field in ${pkgJsonPath} and [NAPI-RS config](${configPathUnderline}) file are found, the NAPI-RS config file will be used.`)); - } - if (separatedConfig) Object.assign(userNapiConfig, separatedConfig); - const napiConfig = (0, es_toolkit.merge)({ - binaryName: "index", - packageName: pkgJson.name, - targets: [], - packageJson: pkgJson, - npmClient: "npm" - }, (0, es_toolkit.omit)(userNapiConfig, ["targets"])); - let targets = userNapiConfig.targets ?? []; - if (userNapiConfig === null || userNapiConfig === void 0 ? void 0 : userNapiConfig.name) { - console.warn((0, colorette.yellow)(`[DEPRECATED] napi.name is deprecated, use napi.binaryName instead.`)); - napiConfig.binaryName = userNapiConfig.name; - } - if (!targets.length) { - var _userNapiConfig$tripl, _userNapiConfig$tripl2; - let deprecatedWarned = false; - const warning = (0, colorette.yellow)(`[DEPRECATED] napi.triples is deprecated, use napi.targets instead.`); - if ((_userNapiConfig$tripl = userNapiConfig.triples) === null || _userNapiConfig$tripl === void 0 ? void 0 : _userNapiConfig$tripl.defaults) { - deprecatedWarned = true; - console.warn(warning); - targets = targets.concat(DEFAULT_TARGETS); - } - if ((_userNapiConfig$tripl2 = userNapiConfig.triples) === null || _userNapiConfig$tripl2 === void 0 || (_userNapiConfig$tripl2 = _userNapiConfig$tripl2.additional) === null || _userNapiConfig$tripl2 === void 0 ? void 0 : _userNapiConfig$tripl2.length) { - targets = targets.concat(userNapiConfig.triples.additional); - if (!deprecatedWarned) console.warn(warning); - } - } - if (new Set(targets).size !== targets.length) { - const duplicateTarget = targets.find((target, index) => targets.indexOf(target) !== index); - throw new Error(`Duplicate targets are not allowed: ${duplicateTarget}`); - } - napiConfig.targets = targets.map(parseTriple); - return napiConfig; -} - -//#endregion -//#region src/utils/cargo.ts -function tryInstallCargoBinary(name, bin) { - if (detectCargoBinary(bin)) { - debug$9("Cargo binary already installed: %s", name); - return; - } - try { - debug$9("Installing cargo binary: %s", name); - (0, node_child_process.execSync)(`cargo install ${name}`, { stdio: "inherit" }); - } catch (e) { - throw new Error(`Failed to install cargo binary: ${name}`, { cause: e }); - } -} -function detectCargoBinary(bin) { - debug$9("Detecting cargo binary: %s", bin); - try { - (0, node_child_process.execSync)(`cargo help ${bin}`, { stdio: "ignore" }); - debug$9("Cargo binary detected: %s", bin); - return true; - } catch { - debug$9("Cargo binary not detected: %s", bin); - return false; - } -} - -//#endregion -//#region src/utils/typegen.ts -const TOP_LEVEL_NAMESPACE = "__TOP_LEVEL_MODULE__"; -const DEFAULT_TYPE_DEF_HEADER = `/* auto-generated by NAPI-RS */ -/* eslint-disable */ -`; -var TypeDefKind = /* @__PURE__ */ function(TypeDefKind$1) { - TypeDefKind$1["Const"] = "const"; - TypeDefKind$1["Enum"] = "enum"; - TypeDefKind$1["StringEnum"] = "string_enum"; - TypeDefKind$1["Interface"] = "interface"; - TypeDefKind$1["Type"] = "type"; - TypeDefKind$1["Fn"] = "fn"; - TypeDefKind$1["Struct"] = "struct"; - TypeDefKind$1["Extends"] = "extends"; - TypeDefKind$1["Impl"] = "impl"; - return TypeDefKind$1; -}(TypeDefKind || {}); -function prettyPrint(line, constEnum, ident, ambient = false) { - let s = line.js_doc ?? ""; - switch (line.kind) { - case TypeDefKind.Interface: - s += `export interface ${line.name} {\n${line.def}\n}`; - break; - case TypeDefKind.Type: - s += `export type ${line.name} = \n${line.def}`; - break; - case TypeDefKind.Enum: - const enumName = constEnum ? "const enum" : "enum"; - s += `${exportDeclare(ambient)} ${enumName} ${line.name} {\n${line.def}\n}`; - break; - case TypeDefKind.StringEnum: - if (constEnum) s += `${exportDeclare(ambient)} const enum ${line.name} {\n${line.def}\n}`; - else s += `export type ${line.name} = ${line.def.replaceAll(/.*=/g, "").replaceAll(",", "|")};`; - break; - case TypeDefKind.Struct: - const extendsDef = line.extends ? ` extends ${line.extends}` : ""; - if (line.extends) { - const genericMatch = line.extends.match(/Iterator<(.+)>$/); - if (genericMatch) { - const [T, TResult, TNext] = genericMatch[1].split(",").map((p) => p.trim()); - line.def = line.def + `\nnext(value?: ${TNext}): IteratorResult<${T}, ${TResult}>`; - } - } - s += `${exportDeclare(ambient)} class ${line.name}${extendsDef} {\n${line.def}\n}`; - if (line.original_name && line.original_name !== line.name) s += `\nexport type ${line.original_name} = ${line.name}`; - break; - case TypeDefKind.Fn: - s += `${exportDeclare(ambient)} ${line.def}`; - break; - default: s += line.def; - } - return correctStringIdent(s, ident); -} -function exportDeclare(ambient) { - if (ambient) return "export"; - return "export declare"; -} -async function processTypeDef(intermediateTypeFile, constEnum) { - const exports$1 = []; - const groupedDefs = preprocessTypeDef(await readIntermediateTypeFile(intermediateTypeFile)); - return { - dts: (0, es_toolkit.sortBy)(Array.from(groupedDefs), [([namespace]) => namespace]).map(([namespace, defs]) => { - if (namespace === TOP_LEVEL_NAMESPACE) return defs.map((def) => { - switch (def.kind) { - case TypeDefKind.Const: - case TypeDefKind.Enum: - case TypeDefKind.StringEnum: - case TypeDefKind.Fn: - case TypeDefKind.Struct: - exports$1.push(def.name); - if (def.original_name && def.original_name !== def.name) exports$1.push(def.original_name); - break; - default: break; - } - return prettyPrint(def, constEnum, 0); - }).join("\n\n"); - else { - exports$1.push(namespace); - let declaration = ""; - declaration += `export declare namespace ${namespace} {\n`; - for (const def of defs) declaration += prettyPrint(def, constEnum, 2, true) + "\n"; - declaration += "}"; - return declaration; - } - }).join("\n\n") + "\n", - exports: exports$1 - }; -} -async function readIntermediateTypeFile(file) { - return (await readFileAsync(file, "utf8")).split("\n").filter(Boolean).map((line) => { - line = line.trim(); - const parsed = JSON.parse(line); - if (parsed.js_doc) parsed.js_doc = parsed.js_doc.replace(/\\n/g, "\n"); - if (parsed.def) parsed.def = parsed.def.replace(/\\n/g, "\n"); - return parsed; - }).sort((a, b) => { - if (a.kind === TypeDefKind.Struct) { - if (b.kind === TypeDefKind.Struct) return a.name.localeCompare(b.name); - return -1; - } else if (b.kind === TypeDefKind.Struct) return 1; - else return a.name.localeCompare(b.name); - }); -} -function preprocessTypeDef(defs) { - const namespaceGrouped = /* @__PURE__ */ new Map(); - const classDefs = /* @__PURE__ */ new Map(); - for (const def of defs) { - const namespace = def.js_mod ?? TOP_LEVEL_NAMESPACE; - if (!namespaceGrouped.has(namespace)) namespaceGrouped.set(namespace, []); - const group = namespaceGrouped.get(namespace); - if (def.kind === TypeDefKind.Struct) { - group.push(def); - classDefs.set(def.name, def); - } else if (def.kind === TypeDefKind.Extends) { - const classDef = classDefs.get(def.name); - if (classDef) classDef.extends = def.def; - } else if (def.kind === TypeDefKind.Impl) { - const classDef = classDefs.get(def.name); - if (classDef) { - if (classDef.def) classDef.def += "\n"; - classDef.def += def.def; - if (classDef.def) classDef.def = classDef.def.replace(/\\n/g, "\n"); - } - } else group.push(def); - } - return namespaceGrouped; -} -function correctStringIdent(src, ident) { - let bracketDepth = 0; - return src.split("\n").map((line) => { - line = line.trim(); - if (line === "") return ""; - const isInMultilineComment = line.startsWith("*"); - const isClosingBracket = line.endsWith("}"); - const isOpeningBracket = line.endsWith("{"); - const isTypeDeclaration = line.endsWith("="); - const isTypeVariant = line.startsWith("|"); - let rightIndent = ident; - if ((isOpeningBracket || isTypeDeclaration) && !isInMultilineComment) { - bracketDepth += 1; - rightIndent += (bracketDepth - 1) * 2; - } else { - if (isClosingBracket && bracketDepth > 0 && !isInMultilineComment && !isTypeVariant) bracketDepth -= 1; - rightIndent += bracketDepth * 2; - } - if (isInMultilineComment) rightIndent += 1; - return `${" ".repeat(rightIndent)}${line}`; - }).join("\n"); -} - -//#endregion -//#region src/utils/read-config.ts -async function readConfig(options) { - const resolvePath = (...paths) => (0, node_path.resolve)(options.cwd, ...paths); - return await readNapiConfig(resolvePath(options.packageJsonPath ?? "package.json"), options.configPath ? resolvePath(options.configPath) : void 0); -} - -//#endregion -//#region src/api/artifacts.ts -const debug$8 = debugFactory("artifacts"); -async function collectArtifacts(userOptions) { - const options = applyDefaultArtifactsOptions(userOptions); - const resolvePath = (...paths) => (0, node_path.resolve)(options.cwd, ...paths); - const packageJsonPath = resolvePath(options.packageJsonPath); - const { targets, binaryName, packageName } = await readNapiConfig(packageJsonPath, options.configPath ? resolvePath(options.configPath) : void 0); - const distDirs = targets.map((platform) => (0, node_path.join)(options.cwd, options.npmDir, platform.platformArchABI)); - const universalSourceBins = new Set(targets.filter((platform) => platform.arch === "universal").flatMap((p) => { - var _UniArchsByPlatform$p; - return (_UniArchsByPlatform$p = UniArchsByPlatform[p.platform]) === null || _UniArchsByPlatform$p === void 0 ? void 0 : _UniArchsByPlatform$p.map((a) => `${p.platform}-${a}`); - }).filter(Boolean)); - await collectNodeBinaries((0, node_path.join)(options.cwd, options.outputDir)).then((output) => Promise.all(output.map(async (filePath) => { - debug$8.info(`Read [${colorette.yellowBright(filePath)}]`); - const sourceContent = await readFileAsync(filePath); - const parsedName = (0, node_path.parse)(filePath); - const terms = parsedName.name.split("."); - const platformArchABI = terms.pop(); - const _binaryName = terms.join("."); - if (_binaryName !== binaryName) { - debug$8.warn(`[${_binaryName}] is not matched with [${binaryName}], skip`); - return; - } - const dir$1 = distDirs.find((dir$2) => dir$2.includes(platformArchABI)); - if (!dir$1 && universalSourceBins.has(platformArchABI)) { - debug$8.warn(`[${platformArchABI}] has no dist dir but it is source bin for universal arch, skip`); - return; - } - if (!dir$1) throw new Error(`No dist dir found for ${filePath}`); - const distFilePath = (0, node_path.join)(dir$1, parsedName.base); - debug$8.info(`Write file content to [${colorette.yellowBright(distFilePath)}]`); - await writeFileAsync(distFilePath, sourceContent); - const distFilePathLocal = (0, node_path.join)((0, node_path.parse)(packageJsonPath).dir, parsedName.base); - debug$8.info(`Write file content to [${colorette.yellowBright(distFilePathLocal)}]`); - await writeFileAsync(distFilePathLocal, sourceContent); - }))); - const wasiTarget = targets.find((t) => t.platform === "wasi"); - if (wasiTarget) { - const wasiDir = (0, node_path.join)(options.cwd, options.npmDir, wasiTarget.platformArchABI); - const cjsFile = (0, node_path.join)(options.buildOutputDir ?? options.cwd, `${binaryName}.wasi.cjs`); - const workerFile = (0, node_path.join)(options.buildOutputDir ?? options.cwd, `wasi-worker.mjs`); - const browserEntry = (0, node_path.join)(options.buildOutputDir ?? options.cwd, `${binaryName}.wasi-browser.js`); - const browserWorkerFile = (0, node_path.join)(options.buildOutputDir ?? options.cwd, `wasi-worker-browser.mjs`); - debug$8.info(`Move wasi binding file [${colorette.yellowBright(cjsFile)}] to [${colorette.yellowBright(wasiDir)}]`); - await writeFileAsync((0, node_path.join)(wasiDir, `${binaryName}.wasi.cjs`), await readFileAsync(cjsFile)); - debug$8.info(`Move wasi worker file [${colorette.yellowBright(workerFile)}] to [${colorette.yellowBright(wasiDir)}]`); - await writeFileAsync((0, node_path.join)(wasiDir, `wasi-worker.mjs`), await readFileAsync(workerFile)); - debug$8.info(`Move wasi browser entry file [${colorette.yellowBright(browserEntry)}] to [${colorette.yellowBright(wasiDir)}]`); - await writeFileAsync((0, node_path.join)(wasiDir, `${binaryName}.wasi-browser.js`), (await readFileAsync(browserEntry, "utf8")).replace(`new URL('./wasi-worker-browser.mjs', import.meta.url)`, `new URL('${packageName}-wasm32-wasi/wasi-worker-browser.mjs', import.meta.url)`)); - debug$8.info(`Move wasi browser worker file [${colorette.yellowBright(browserWorkerFile)}] to [${colorette.yellowBright(wasiDir)}]`); - await writeFileAsync((0, node_path.join)(wasiDir, `wasi-worker-browser.mjs`), await readFileAsync(browserWorkerFile)); - } -} -async function collectNodeBinaries(root) { - const files = await readdirAsync(root, { withFileTypes: true }); - const nodeBinaries = files.filter((file) => file.isFile() && (file.name.endsWith(".node") || file.name.endsWith(".wasm"))).map((file) => (0, node_path.join)(root, file.name)); - const dirs = files.filter((file) => file.isDirectory()); - for (const dir$1 of dirs) if (dir$1.name !== "node_modules") nodeBinaries.push(...await collectNodeBinaries((0, node_path.join)(root, dir$1.name))); - return nodeBinaries; -} - -//#endregion -//#region src/api/templates/js-binding.ts -function createCjsBinding(localName, pkgName, idents, packageVersion) { - return `${bindingHeader} -${createCommonBinding(localName, pkgName, packageVersion)} -module.exports = nativeBinding -${idents.map((ident) => `module.exports.${ident} = nativeBinding.${ident}`).join("\n")} -`; -} -function createEsmBinding(localName, pkgName, idents, packageVersion) { - return `${bindingHeader} -import { createRequire } from 'node:module' -const require = createRequire(import.meta.url) -const __dirname = new URL('.', import.meta.url).pathname - -${createCommonBinding(localName, pkgName, packageVersion)} -const { ${idents.join(", ")} } = nativeBinding -${idents.map((ident) => `export { ${ident} }`).join("\n")} -`; -} -const bindingHeader = `// prettier-ignore -/* eslint-disable */ -// @ts-nocheck -/* auto-generated by NAPI-RS */ -`; -function createCommonBinding(localName, pkgName, packageVersion) { - function requireTuple(tuple, identSize = 8) { - const identLow = " ".repeat(identSize - 2); - const ident = " ".repeat(identSize); - return `try { -${ident}return require('./${localName}.${tuple}.node') -${identLow}} catch (e) { -${ident}loadErrors.push(e) -${identLow}}${packageVersion ? ` -${identLow}try { -${ident}const binding = require('${pkgName}-${tuple}') -${ident}const bindingPackageVersion = require('${pkgName}-${tuple}/package.json').version -${ident}if (bindingPackageVersion !== '${packageVersion}' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { -${ident} throw new Error(\`Native binding package version mismatch, expected ${packageVersion} but got \${bindingPackageVersion}. You can reinstall dependencies to fix this issue.\`) -${ident}} -${ident}return binding -${identLow}} catch (e) { -${ident}loadErrors.push(e) -${identLow}}` : ` -${identLow}try { -${ident}return require('${pkgName}-${tuple}') -${identLow}} catch (e) { -${ident}loadErrors.push(e) -${identLow}}`}`; - } - return `const { readFileSync } = require('node:fs') -let nativeBinding = null -const loadErrors = [] - -const isMusl = () => { - let musl = false - if (process.platform === 'linux') { - musl = isMuslFromFilesystem() - if (musl === null) { - musl = isMuslFromReport() - } - if (musl === null) { - musl = isMuslFromChildProcess() - } - } - return musl -} - -const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-') - -const isMuslFromFilesystem = () => { - try { - return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl') - } catch { - return null - } -} - -const isMuslFromReport = () => { - let report = null - if (typeof process.report?.getReport === 'function') { - process.report.excludeNetwork = true - report = process.report.getReport() - } - if (!report) { - return null - } - if (report.header && report.header.glibcVersionRuntime) { - return false - } - if (Array.isArray(report.sharedObjects)) { - if (report.sharedObjects.some(isFileMusl)) { - return true - } - } - return false -} - -const isMuslFromChildProcess = () => { - try { - return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl') - } catch (e) { - // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false - return false - } -} - -function requireNative() { - if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) { - try { - return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH); - } catch (err) { - loadErrors.push(err) - } - } else if (process.platform === 'android') { - if (process.arch === 'arm64') { - ${requireTuple("android-arm64")} - } else if (process.arch === 'arm') { - ${requireTuple("android-arm-eabi")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on Android \${process.arch}\`)) - } - } else if (process.platform === 'win32') { - if (process.arch === 'x64') { - if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') { - ${requireTuple("win32-x64-gnu")} - } else { - ${requireTuple("win32-x64-msvc")} - } - } else if (process.arch === 'ia32') { - ${requireTuple("win32-ia32-msvc")} - } else if (process.arch === 'arm64') { - ${requireTuple("win32-arm64-msvc")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on Windows: \${process.arch}\`)) - } - } else if (process.platform === 'darwin') { - ${requireTuple("darwin-universal", 6)} - if (process.arch === 'x64') { - ${requireTuple("darwin-x64")} - } else if (process.arch === 'arm64') { - ${requireTuple("darwin-arm64")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on macOS: \${process.arch}\`)) - } - } else if (process.platform === 'freebsd') { - if (process.arch === 'x64') { - ${requireTuple("freebsd-x64")} - } else if (process.arch === 'arm64') { - ${requireTuple("freebsd-arm64")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on FreeBSD: \${process.arch}\`)) - } - } else if (process.platform === 'linux') { - if (process.arch === 'x64') { - if (isMusl()) { - ${requireTuple("linux-x64-musl", 10)} - } else { - ${requireTuple("linux-x64-gnu", 10)} - } - } else if (process.arch === 'arm64') { - if (isMusl()) { - ${requireTuple("linux-arm64-musl", 10)} - } else { - ${requireTuple("linux-arm64-gnu", 10)} - } - } else if (process.arch === 'arm') { - if (isMusl()) { - ${requireTuple("linux-arm-musleabihf", 10)} - } else { - ${requireTuple("linux-arm-gnueabihf", 10)} - } - } else if (process.arch === 'loong64') { - if (isMusl()) { - ${requireTuple("linux-loong64-musl", 10)} - } else { - ${requireTuple("linux-loong64-gnu", 10)} - } - } else if (process.arch === 'riscv64') { - if (isMusl()) { - ${requireTuple("linux-riscv64-musl", 10)} - } else { - ${requireTuple("linux-riscv64-gnu", 10)} - } - } else if (process.arch === 'ppc64') { - ${requireTuple("linux-ppc64-gnu")} - } else if (process.arch === 's390x') { - ${requireTuple("linux-s390x-gnu")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on Linux: \${process.arch}\`)) - } - } else if (process.platform === 'openharmony') { - if (process.arch === 'arm64') { - ${requireTuple("openharmony-arm64")} - } else if (process.arch === 'x64') { - ${requireTuple("openharmony-x64")} - } else if (process.arch === 'arm') { - ${requireTuple("openharmony-arm")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on OpenHarmony: \${process.arch}\`)) - } - } else { - loadErrors.push(new Error(\`Unsupported OS: \${process.platform}, architecture: \${process.arch}\`)) - } -} - -nativeBinding = requireNative() - -if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) { - let wasiBinding = null - let wasiBindingError = null - try { - wasiBinding = require('./${localName}.wasi.cjs') - nativeBinding = wasiBinding - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - wasiBindingError = err - } - } - if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) { - try { - wasiBinding = require('${pkgName}-wasm32-wasi') - nativeBinding = wasiBinding - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - if (!wasiBindingError) { - wasiBindingError = err - } else { - wasiBindingError.cause = err - } - loadErrors.push(err) - } - } - } - if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) { - const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error') - error.cause = wasiBindingError - throw error - } -} - -if (!nativeBinding) { - if (loadErrors.length > 0) { - throw new Error( - \`Cannot find native binding. \` + - \`npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). \` + - 'Please try \`npm i\` again after removing both package-lock.json and node_modules directory.', - { - cause: loadErrors.reduce((err, cur) => { - cur.cause = err - return cur - }), - }, - ) - } - throw new Error(\`Failed to load native binding\`) -} -`; -} - -//#endregion -//#region src/api/templates/load-wasi-template.ts -const createWasiBrowserBinding = (wasiFilename, initialMemory = 4e3, maximumMemory = 65536, fs$2 = false, asyncInit = false, buffer = false) => { - return `import { - createOnMessage as __wasmCreateOnMessageForFsProxy, - getDefaultContext as __emnapiGetDefaultContext, - ${asyncInit ? `instantiateNapiModule as __emnapiInstantiateNapiModule` : `instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync`}, - WASI as __WASI, -} from '@napi-rs/wasm-runtime' -${fs$2 ? buffer ? `import { memfs, Buffer } from '@napi-rs/wasm-runtime/fs'` : `import { memfs } from '@napi-rs/wasm-runtime/fs'` : ""} -${buffer && !fs$2 ? `import { Buffer } from 'buffer'` : ""} -${fs$2 ? ` -export const { fs: __fs, vol: __volume } = memfs() - -const __wasi = new __WASI({ - version: 'preview1', - fs: __fs, - preopens: { - '/': '/', - }, -})` : ` -const __wasi = new __WASI({ - version: 'preview1', -})`} - -const __wasmUrl = new URL('./${wasiFilename}.wasm', import.meta.url).href -const __emnapiContext = __emnapiGetDefaultContext() -${buffer ? "__emnapiContext.feature.Buffer = Buffer" : ""} - -const __sharedMemory = new WebAssembly.Memory({ - initial: ${initialMemory}, - maximum: ${maximumMemory}, - shared: true, -}) - -const __wasmFile = await fetch(__wasmUrl).then((res) => res.arrayBuffer()) - -const { - instance: __napiInstance, - module: __wasiModule, - napiModule: __napiModule, -} = ${asyncInit ? `await __emnapiInstantiateNapiModule` : `__emnapiInstantiateNapiModuleSync`}(__wasmFile, { - context: __emnapiContext, - asyncWorkPoolSize: 4, - wasi: __wasi, - onCreateWorker() { - const worker = new Worker(new URL('./wasi-worker-browser.mjs', import.meta.url), { - type: 'module', - }) -${fs$2 ? ` worker.addEventListener('message', __wasmCreateOnMessageForFsProxy(__fs))\n` : ""} - return worker - }, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: __sharedMemory, - } - return importObject - }, - beforeInit({ instance }) { - for (const name of Object.keys(instance.exports)) { - if (name.startsWith('__napi_register__')) { - instance.exports[name]() - } - } - }, -}) -`; -}; -const createWasiBinding = (wasmFileName, packageName, initialMemory = 4e3, maximumMemory = 65536) => `/* eslint-disable */ -/* prettier-ignore */ - -/* auto-generated by NAPI-RS */ - -const __nodeFs = require('node:fs') -const __nodePath = require('node:path') -const { WASI: __nodeWASI } = require('node:wasi') -const { Worker } = require('node:worker_threads') - -const { - createOnMessage: __wasmCreateOnMessageForFsProxy, - getDefaultContext: __emnapiGetDefaultContext, - instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync, -} = require('@napi-rs/wasm-runtime') - -const __rootDir = __nodePath.parse(process.cwd()).root - -const __wasi = new __nodeWASI({ - version: 'preview1', - env: process.env, - preopens: { - [__rootDir]: __rootDir, - } -}) - -const __emnapiContext = __emnapiGetDefaultContext() - -const __sharedMemory = new WebAssembly.Memory({ - initial: ${initialMemory}, - maximum: ${maximumMemory}, - shared: true, -}) - -let __wasmFilePath = __nodePath.join(__dirname, '${wasmFileName}.wasm') -const __wasmDebugFilePath = __nodePath.join(__dirname, '${wasmFileName}.debug.wasm') - -if (__nodeFs.existsSync(__wasmDebugFilePath)) { - __wasmFilePath = __wasmDebugFilePath -} else if (!__nodeFs.existsSync(__wasmFilePath)) { - try { - __wasmFilePath = require.resolve('${packageName}-wasm32-wasi/${wasmFileName}.wasm') - } catch { - throw new Error('Cannot find ${wasmFileName}.wasm file, and ${packageName}-wasm32-wasi package is not installed.') - } -} - -const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { - context: __emnapiContext, - asyncWorkPoolSize: (function() { - const threadsSizeFromEnv = Number(process.env.NAPI_RS_ASYNC_WORK_POOL_SIZE ?? process.env.UV_THREADPOOL_SIZE) - // NaN > 0 is false - if (threadsSizeFromEnv > 0) { - return threadsSizeFromEnv - } else { - return 4 - } - })(), - reuseWorker: true, - wasi: __wasi, - onCreateWorker() { - const worker = new Worker(__nodePath.join(__dirname, 'wasi-worker.mjs'), { - env: process.env, - }) - worker.onmessage = ({ data }) => { - __wasmCreateOnMessageForFsProxy(__nodeFs)(data) - } - - // The main thread of Node.js waits for all the active handles before exiting. - // But Rust threads are never waited without \`thread::join\`. - // So here we hack the code of Node.js to prevent the workers from being referenced (active). - // According to https://github.com/nodejs/node/blob/19e0d472728c79d418b74bddff588bea70a403d0/lib/internal/worker.js#L415, - // a worker is consist of two handles: kPublicPort and kHandle. - { - const kPublicPort = Object.getOwnPropertySymbols(worker).find(s => - s.toString().includes("kPublicPort") - ); - if (kPublicPort) { - worker[kPublicPort].ref = () => {}; - } - - const kHandle = Object.getOwnPropertySymbols(worker).find(s => - s.toString().includes("kHandle") - ); - if (kHandle) { - worker[kHandle].ref = () => {}; - } - - worker.unref(); - } - return worker - }, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: __sharedMemory, - } - return importObject - }, - beforeInit({ instance }) { - for (const name of Object.keys(instance.exports)) { - if (name.startsWith('__napi_register__')) { - instance.exports[name]() - } - } - }, -}) -`; - -//#endregion -//#region src/api/templates/wasi-worker-template.ts -const WASI_WORKER_TEMPLATE = `import fs from "node:fs"; -import { createRequire } from "node:module"; -import { parse } from "node:path"; -import { WASI } from "node:wasi"; -import { parentPort, Worker } from "node:worker_threads"; - -const require = createRequire(import.meta.url); - -const { instantiateNapiModuleSync, MessageHandler, getDefaultContext } = require("@napi-rs/wasm-runtime"); - -if (parentPort) { - parentPort.on("message", (data) => { - globalThis.onmessage({ data }); - }); -} - -Object.assign(globalThis, { - self: globalThis, - require, - Worker, - importScripts: function (f) { - ;(0, eval)(fs.readFileSync(f, "utf8") + "//# sourceURL=" + f); - }, - postMessage: function (msg) { - if (parentPort) { - parentPort.postMessage(msg); - } - }, -}); - -const emnapiContext = getDefaultContext(); - -const __rootDir = parse(process.cwd()).root; - -const handler = new MessageHandler({ - onLoad({ wasmModule, wasmMemory }) { - const wasi = new WASI({ - version: 'preview1', - env: process.env, - preopens: { - [__rootDir]: __rootDir, - }, - }); - - return instantiateNapiModuleSync(wasmModule, { - childThread: true, - wasi, - context: emnapiContext, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: wasmMemory - }; - }, - }); - }, -}); - -globalThis.onmessage = function (e) { - handler.handle(e); -}; -`; -const createWasiBrowserWorkerBinding = (fs$2) => { - return `${fs$2 ? `import { instantiateNapiModuleSync, MessageHandler, WASI, createFsProxy } from '@napi-rs/wasm-runtime' -import { memfsExported as __memfsExported } from '@napi-rs/wasm-runtime/fs' - -const fs = createFsProxy(__memfsExported)` : `import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime'`} - -const handler = new MessageHandler({ - onLoad({ wasmModule, wasmMemory }) { - ${fs$2 ? `const wasi = new WASI({ - fs, - preopens: { - '/': '/', - }, - print: function () { - // eslint-disable-next-line no-console - console.log.apply(console, arguments) - }, - printErr: function() { - // eslint-disable-next-line no-console - console.error.apply(console, arguments) - }, - })` : `const wasi = new WASI({ - print: function () { - // eslint-disable-next-line no-console - console.log.apply(console, arguments) - }, - printErr: function() { - // eslint-disable-next-line no-console - console.error.apply(console, arguments) - }, - })`} - return instantiateNapiModuleSync(wasmModule, { - childThread: true, - wasi, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: wasmMemory, - } - }, - }) - }, -}) - -globalThis.onmessage = function (e) { - handler.handle(e) -} -`; -}; - -//#endregion -//#region src/api/build.ts -const debug$7 = debugFactory("build"); -const require$1 = (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href); -async function buildProject(rawOptions) { - debug$7("napi build command receive options: %O", rawOptions); - const options = { - dtsCache: true, - ...rawOptions, - cwd: rawOptions.cwd ?? process.cwd() - }; - const resolvePath = (...paths) => (0, node_path.resolve)(options.cwd, ...paths); - const manifestPath = resolvePath(options.manifestPath ?? "Cargo.toml"); - const metadata = await parseMetadata(manifestPath); - const crate = metadata.packages.find((p) => { - if (options.package) return p.name === options.package; - else return p.manifest_path === manifestPath; - }); - if (!crate) throw new Error("Unable to find crate to build. It seems you are trying to build a crate in a workspace, try using `--package` option to specify the package to build."); - return new Builder(metadata, crate, await readNapiConfig(resolvePath(options.packageJsonPath ?? "package.json"), options.configPath ? resolvePath(options.configPath) : void 0), options).build(); -} -var Builder = class { - args = []; - envs = {}; - outputs = []; - target; - crateDir; - outputDir; - targetDir; - enableTypeDef = false; - constructor(metadata, crate, config, options) { - this.metadata = metadata; - this.crate = crate; - this.config = config; - this.options = options; - this.target = options.target ? parseTriple(options.target) : process.env.CARGO_BUILD_TARGET ? parseTriple(process.env.CARGO_BUILD_TARGET) : getSystemDefaultTarget(); - this.crateDir = (0, node_path.parse)(crate.manifest_path).dir; - this.outputDir = (0, node_path.resolve)(this.options.cwd, options.outputDir ?? this.crateDir); - this.targetDir = options.targetDir ?? process.env.CARGO_BUILD_TARGET_DIR ?? metadata.target_directory; - this.enableTypeDef = this.crate.dependencies.some((dep) => dep.name === "napi-derive" && (dep.uses_default_features || dep.features.includes("type-def"))); - if (!this.enableTypeDef) { - const requirementWarning = "`napi-derive` crate is not used or `type-def` feature is not enabled for `napi-derive` crate"; - debug$7.warn(`${requirementWarning}. Will skip binding generation for \`.node\`, \`.wasi\` and \`.d.ts\` files.`); - if (this.options.dts || this.options.dtsHeader || this.config.dtsHeader || this.config.dtsHeaderFile) debug$7.warn(`${requirementWarning}. \`dts\` related options are enabled but will be ignored.`); - } - } - get cdyLibName() { - var _this$crate$targets$f; - return (_this$crate$targets$f = this.crate.targets.find((t) => t.crate_types.includes("cdylib"))) === null || _this$crate$targets$f === void 0 ? void 0 : _this$crate$targets$f.name; - } - get binName() { - var _this$crate$targets$f2; - return this.options.bin ?? (this.cdyLibName ? null : (_this$crate$targets$f2 = this.crate.targets.find((t) => t.crate_types.includes("bin"))) === null || _this$crate$targets$f2 === void 0 ? void 0 : _this$crate$targets$f2.name); - } - build() { - if (!this.cdyLibName) { - const warning = "Missing `crate-type = [\"cdylib\"]` in [lib] config. The build result will not be available as node addon."; - if (this.binName) debug$7.warn(warning); - else throw new Error(warning); - } - return this.pickBinary().setPackage().setFeatures().setTarget().pickCrossToolchain().setEnvs().setBypassArgs().exec(); - } - pickCrossToolchain() { - if (!this.options.useNapiCross) return this; - if (this.options.useCross) debug$7.warn("You are trying to use both `--cross` and `--use-napi-cross` options, `--use-cross` will be ignored."); - if (this.options.crossCompile) debug$7.warn("You are trying to use both `--cross-compile` and `--use-napi-cross` options, `--cross-compile` will be ignored."); - try { - var _process$env$TARGET_C, _process$env$CC, _process$env$CXX, _process$env$TARGET_C2; - const { version: version$2, download } = require$1("@napi-rs/cross-toolchain"); - const alias = { "s390x-unknown-linux-gnu": "s390x-ibm-linux-gnu" }; - const toolchainPath = (0, node_path.join)((0, node_os.homedir)(), ".napi-rs", "cross-toolchain", version$2, this.target.triple); - (0, node_fs.mkdirSync)(toolchainPath, { recursive: true }); - if ((0, node_fs.existsSync)((0, node_path.join)(toolchainPath, "package.json"))) debug$7(`Toolchain ${toolchainPath} exists, skip extracting`); - else download(process.arch, this.target.triple).unpack(toolchainPath); - const upperCaseTarget = targetToEnvVar(this.target.triple); - const crossTargetName = alias[this.target.triple] ?? this.target.triple; - const linkerEnv = `CARGO_TARGET_${upperCaseTarget}_LINKER`; - this.setEnvIfNotExists(linkerEnv, (0, node_path.join)(toolchainPath, "bin", `${crossTargetName}-gcc`)); - this.setEnvIfNotExists("TARGET_SYSROOT", (0, node_path.join)(toolchainPath, crossTargetName, "sysroot")); - this.setEnvIfNotExists("TARGET_AR", (0, node_path.join)(toolchainPath, "bin", `${crossTargetName}-ar`)); - this.setEnvIfNotExists("TARGET_RANLIB", (0, node_path.join)(toolchainPath, "bin", `${crossTargetName}-ranlib`)); - this.setEnvIfNotExists("TARGET_READELF", (0, node_path.join)(toolchainPath, "bin", `${crossTargetName}-readelf`)); - this.setEnvIfNotExists("TARGET_C_INCLUDE_PATH", (0, node_path.join)(toolchainPath, crossTargetName, "sysroot", "usr", "include/")); - this.setEnvIfNotExists("TARGET_CC", (0, node_path.join)(toolchainPath, "bin", `${crossTargetName}-gcc`)); - this.setEnvIfNotExists("TARGET_CXX", (0, node_path.join)(toolchainPath, "bin", `${crossTargetName}-g++`)); - this.setEnvIfNotExists("BINDGEN_EXTRA_CLANG_ARGS", `--sysroot=${this.envs.TARGET_SYSROOT}}`); - if (((_process$env$TARGET_C = process.env.TARGET_CC) === null || _process$env$TARGET_C === void 0 ? void 0 : _process$env$TARGET_C.startsWith("clang")) || ((_process$env$CC = process.env.CC) === null || _process$env$CC === void 0 ? void 0 : _process$env$CC.startsWith("clang")) && !process.env.TARGET_CC) { - const TARGET_CFLAGS = process.env.TARGET_CFLAGS ?? ""; - this.envs.TARGET_CFLAGS = `--sysroot=${this.envs.TARGET_SYSROOT} --gcc-toolchain=${toolchainPath} ${TARGET_CFLAGS}`; - } - if (((_process$env$CXX = process.env.CXX) === null || _process$env$CXX === void 0 ? void 0 : _process$env$CXX.startsWith("clang++")) && !process.env.TARGET_CXX || ((_process$env$TARGET_C2 = process.env.TARGET_CXX) === null || _process$env$TARGET_C2 === void 0 ? void 0 : _process$env$TARGET_C2.startsWith("clang++"))) { - const TARGET_CXXFLAGS = process.env.TARGET_CXXFLAGS ?? ""; - this.envs.TARGET_CXXFLAGS = `--sysroot=${this.envs.TARGET_SYSROOT} --gcc-toolchain=${toolchainPath} ${TARGET_CXXFLAGS}`; - } - this.envs.PATH = this.envs.PATH ? `${toolchainPath}/bin:${this.envs.PATH}:${process.env.PATH}` : `${toolchainPath}/bin:${process.env.PATH}`; - } catch (e) { - debug$7.warn("Pick cross toolchain failed", e); - } - return this; - } - exec() { - debug$7(`Start building crate: ${this.crate.name}`); - debug$7(" %i", `cargo ${this.args.join(" ")}`); - const controller = new AbortController(); - const watch = this.options.watch; - return { - task: new Promise((resolve$9, reject) => { - var _buildProcess$stderr; - if (this.options.useCross && this.options.crossCompile) throw new Error("`--use-cross` and `--cross-compile` can not be used together"); - const buildProcess = (0, node_child_process.spawn)(process.env.CARGO ?? (this.options.useCross ? "cross" : "cargo"), this.args, { - env: { - ...process.env, - ...this.envs - }, - stdio: watch ? [ - "inherit", - "inherit", - "pipe" - ] : "inherit", - cwd: this.options.cwd, - signal: controller.signal - }); - buildProcess.once("exit", (code) => { - if (code === 0) { - debug$7("%i", `Build crate ${this.crate.name} successfully!`); - resolve$9(); - } else reject(/* @__PURE__ */ new Error(`Build failed with exit code ${code}`)); - }); - buildProcess.once("error", (e) => { - reject(new Error(`Build failed with error: ${e.message}`, { cause: e })); - }); - (_buildProcess$stderr = buildProcess.stderr) === null || _buildProcess$stderr === void 0 || _buildProcess$stderr.on("data", (data) => { - const output = data.toString(); - console.error(output); - if (/Finished\s(`dev`|`release`)/.test(output)) this.postBuild().catch(() => {}); - }); - }).then(() => this.postBuild()), - abort: () => controller.abort() - }; - } - pickBinary() { - let set = false; - if (this.options.watch) if (process.env.CI) debug$7.warn("Watch mode is not supported in CI environment"); - else { - debug$7("Use %i", "cargo-watch"); - tryInstallCargoBinary("cargo-watch", "watch"); - this.args.push("watch", "--why", "-i", "*.{js,ts,node}", "-w", this.crateDir, "--", "cargo", "build"); - set = true; - } - if (this.options.crossCompile) if (this.target.platform === "win32") if (process.platform === "win32") debug$7.warn("You are trying to cross compile to win32 platform on win32 platform which is unnecessary."); - else { - debug$7("Use %i", "cargo-xwin"); - tryInstallCargoBinary("cargo-xwin", "xwin"); - this.args.push("xwin", "build"); - if (this.target.arch === "ia32") this.envs.XWIN_ARCH = "x86"; - set = true; - } - else if (this.target.platform === "linux" && process.platform === "linux" && this.target.arch === process.arch && (function(abi) { - var _process$report; - return abi === (((_process$report = process.report) === null || _process$report === void 0 || (_process$report = _process$report.getReport()) === null || _process$report === void 0 || (_process$report = _process$report.header) === null || _process$report === void 0 ? void 0 : _process$report.glibcVersionRuntime) ? "gnu" : "musl"); - })(this.target.abi)) debug$7.warn("You are trying to cross compile to linux target on linux platform which is unnecessary."); - else if (this.target.platform === "darwin" && process.platform === "darwin") debug$7.warn("You are trying to cross compile to darwin target on darwin platform which is unnecessary."); - else { - debug$7("Use %i", "cargo-zigbuild"); - tryInstallCargoBinary("cargo-zigbuild", "zigbuild"); - this.args.push("zigbuild"); - set = true; - } - if (!set) this.args.push("build"); - return this; - } - setPackage() { - const args = []; - if (this.options.package) args.push("--package", this.options.package); - if (this.binName) args.push("--bin", this.binName); - if (args.length) { - debug$7("Set package flags: "); - debug$7(" %O", args); - this.args.push(...args); - } - return this; - } - setTarget() { - debug$7("Set compiling target to: "); - debug$7(" %i", this.target.triple); - this.args.push("--target", this.target.triple); - return this; - } - setEnvs() { - var _this$target$abi; - if (this.enableTypeDef) { - this.envs.NAPI_TYPE_DEF_TMP_FOLDER = this.generateIntermediateTypeDefFolder(); - this.setForceBuildEnvs(this.envs.NAPI_TYPE_DEF_TMP_FOLDER); - } - let rustflags = process.env.RUSTFLAGS ?? process.env.CARGO_BUILD_RUSTFLAGS ?? ""; - if (((_this$target$abi = this.target.abi) === null || _this$target$abi === void 0 ? void 0 : _this$target$abi.includes("musl")) && !rustflags.includes("target-feature=-crt-static")) rustflags += " -C target-feature=-crt-static"; - if (this.options.strip && !rustflags.includes("link-arg=-s")) rustflags += " -C link-arg=-s"; - if (rustflags.length) this.envs.RUSTFLAGS = rustflags; - const linker = this.options.crossCompile ? void 0 : getTargetLinker(this.target.triple); - const linkerEnv = `CARGO_TARGET_${targetToEnvVar(this.target.triple)}_LINKER`; - if (linker && !process.env[linkerEnv] && !this.envs[linkerEnv]) this.envs[linkerEnv] = linker; - if (this.target.platform === "android") this.setAndroidEnv(); - if (this.target.platform === "wasi") this.setWasiEnv(); - if (this.target.platform === "openharmony") this.setOpenHarmonyEnv(); - debug$7("Set envs: "); - Object.entries(this.envs).forEach(([k, v]) => { - debug$7(" %i", `${k}=${v}`); - }); - return this; - } - setForceBuildEnvs(typeDefTmpFolder) { - this.metadata.packages.forEach((crate) => { - if (crate.dependencies.some((d) => d.name === "napi-derive") && !(0, node_fs.existsSync)((0, node_path.join)(typeDefTmpFolder, crate.name))) this.envs[`NAPI_FORCE_BUILD_${crate.name.replace(/-/g, "_").toUpperCase()}`] = Date.now().toString(); - }); - } - setAndroidEnv() { - const { ANDROID_NDK_LATEST_HOME } = process.env; - if (!ANDROID_NDK_LATEST_HOME) debug$7.warn(`${colorette.red("ANDROID_NDK_LATEST_HOME")} environment variable is missing`); - if (process.platform === "android") return; - const targetArch = this.target.arch === "arm" ? "armv7a" : "aarch64"; - const targetPlatform = this.target.arch === "arm" ? "androideabi24" : "android24"; - const hostPlatform = process.platform === "darwin" ? "darwin" : process.platform === "win32" ? "windows" : "linux"; - Object.assign(this.envs, { - CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-android24-clang`, - CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-androideabi24-clang`, - TARGET_CC: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang`, - TARGET_CXX: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang++`, - TARGET_AR: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/llvm-ar`, - TARGET_RANLIB: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/llvm-ranlib`, - ANDROID_NDK: ANDROID_NDK_LATEST_HOME, - PATH: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin${process.platform === "win32" ? ";" : ":"}${process.env.PATH}` - }); - } - setWasiEnv() { - const emnapi = (0, node_path.join)(require$1.resolve("emnapi"), "..", "lib", "wasm32-wasi-threads"); - this.envs.EMNAPI_LINK_DIR = emnapi; - const { WASI_SDK_PATH } = process.env; - if (WASI_SDK_PATH && (0, node_fs.existsSync)(WASI_SDK_PATH)) { - this.envs.CARGO_TARGET_WASM32_WASI_PREVIEW1_THREADS_LINKER = (0, node_path.join)(WASI_SDK_PATH, "bin", "wasm-ld"); - this.envs.CARGO_TARGET_WASM32_WASIP1_LINKER = (0, node_path.join)(WASI_SDK_PATH, "bin", "wasm-ld"); - this.envs.CARGO_TARGET_WASM32_WASIP1_THREADS_LINKER = (0, node_path.join)(WASI_SDK_PATH, "bin", "wasm-ld"); - this.envs.CARGO_TARGET_WASM32_WASIP2_LINKER = (0, node_path.join)(WASI_SDK_PATH, "bin", "wasm-ld"); - this.setEnvIfNotExists("TARGET_CC", (0, node_path.join)(WASI_SDK_PATH, "bin", "clang")); - this.setEnvIfNotExists("TARGET_CXX", (0, node_path.join)(WASI_SDK_PATH, "bin", "clang++")); - this.setEnvIfNotExists("TARGET_AR", (0, node_path.join)(WASI_SDK_PATH, "bin", "ar")); - this.setEnvIfNotExists("TARGET_RANLIB", (0, node_path.join)(WASI_SDK_PATH, "bin", "ranlib")); - this.setEnvIfNotExists("TARGET_CFLAGS", `--target=wasm32-wasi-threads --sysroot=${WASI_SDK_PATH}/share/wasi-sysroot -pthread -mllvm -wasm-enable-sjlj`); - this.setEnvIfNotExists("TARGET_CXXFLAGS", `--target=wasm32-wasi-threads --sysroot=${WASI_SDK_PATH}/share/wasi-sysroot -pthread -mllvm -wasm-enable-sjlj`); - this.setEnvIfNotExists(`TARGET_LDFLAGS`, `-fuse-ld=${WASI_SDK_PATH}/bin/wasm-ld --target=wasm32-wasi-threads`); - } - } - setOpenHarmonyEnv() { - const { OHOS_SDK_PATH, OHOS_SDK_NATIVE } = process.env; - const ndkPath = OHOS_SDK_PATH ? `${OHOS_SDK_PATH}/native` : OHOS_SDK_NATIVE; - if (!ndkPath && process.platform !== "openharmony") { - debug$7.warn(`${colorette.red("OHOS_SDK_PATH")} or ${colorette.red("OHOS_SDK_NATIVE")} environment variable is missing`); - return; - } - const linkerName = `CARGO_TARGET_${this.target.triple.toUpperCase().replace(/-/g, "_")}_LINKER`; - const ranPath = `${ndkPath}/llvm/bin/llvm-ranlib`; - const arPath = `${ndkPath}/llvm/bin/llvm-ar`; - const ccPath = `${ndkPath}/llvm/bin/${this.target.triple}-clang`; - const cxxPath = `${ndkPath}/llvm/bin/${this.target.triple}-clang++`; - const asPath = `${ndkPath}/llvm/bin/llvm-as`; - const ldPath = `${ndkPath}/llvm/bin/ld.lld`; - const stripPath = `${ndkPath}/llvm/bin/llvm-strip`; - const objDumpPath = `${ndkPath}/llvm/bin/llvm-objdump`; - const objCopyPath = `${ndkPath}/llvm/bin/llvm-objcopy`; - const nmPath = `${ndkPath}/llvm/bin/llvm-nm`; - const binPath = `${ndkPath}/llvm/bin`; - const libPath = `${ndkPath}/llvm/lib`; - this.setEnvIfNotExists("LIBCLANG_PATH", libPath); - this.setEnvIfNotExists("DEP_ATOMIC", "clang_rt.builtins"); - this.setEnvIfNotExists(linkerName, ccPath); - this.setEnvIfNotExists("TARGET_CC", ccPath); - this.setEnvIfNotExists("TARGET_CXX", cxxPath); - this.setEnvIfNotExists("TARGET_AR", arPath); - this.setEnvIfNotExists("TARGET_RANLIB", ranPath); - this.setEnvIfNotExists("TARGET_AS", asPath); - this.setEnvIfNotExists("TARGET_LD", ldPath); - this.setEnvIfNotExists("TARGET_STRIP", stripPath); - this.setEnvIfNotExists("TARGET_OBJDUMP", objDumpPath); - this.setEnvIfNotExists("TARGET_OBJCOPY", objCopyPath); - this.setEnvIfNotExists("TARGET_NM", nmPath); - this.envs.PATH = `${binPath}${process.platform === "win32" ? ";" : ":"}${process.env.PATH}`; - } - setFeatures() { - const args = []; - if (this.options.allFeatures && this.options.noDefaultFeatures) throw new Error("Cannot specify --all-features and --no-default-features together"); - if (this.options.allFeatures) args.push("--all-features"); - else if (this.options.noDefaultFeatures) args.push("--no-default-features"); - if (this.options.features) args.push("--features", ...this.options.features); - debug$7("Set features flags: "); - debug$7(" %O", args); - this.args.push(...args); - return this; - } - setBypassArgs() { - var _this$options$cargoOp; - if (this.options.release) this.args.push("--release"); - if (this.options.verbose) this.args.push("--verbose"); - if (this.options.targetDir) this.args.push("--target-dir", this.options.targetDir); - if (this.options.profile) this.args.push("--profile", this.options.profile); - if (this.options.manifestPath) this.args.push("--manifest-path", this.options.manifestPath); - if ((_this$options$cargoOp = this.options.cargoOptions) === null || _this$options$cargoOp === void 0 ? void 0 : _this$options$cargoOp.length) this.args.push(...this.options.cargoOptions); - return this; - } - generateIntermediateTypeDefFolder() { - let folder = (0, node_path.join)(this.targetDir, "napi-rs", `${this.crate.name}-${(0, node_crypto.createHash)("sha256").update(this.crate.manifest_path).update(CLI_VERSION).digest("hex").substring(0, 8)}`); - if (!this.options.dtsCache) { - (0, node_fs.rmSync)(folder, { - recursive: true, - force: true - }); - folder += `_${Date.now()}`; - } - mkdirAsync(folder, { recursive: true }); - return folder; - } - async postBuild() { - try { - debug$7(`Try to create output directory:`); - debug$7(" %i", this.outputDir); - await mkdirAsync(this.outputDir, { recursive: true }); - debug$7(`Output directory created`); - } catch (e) { - throw new Error(`Failed to create output directory ${this.outputDir}`, { cause: e }); - } - const wasmBinaryName = await this.copyArtifact(); - if (this.cdyLibName) { - const idents = await this.generateTypeDef(); - const jsOutput = await this.writeJsBinding(idents); - const wasmBindingsOutput = await this.writeWasiBinding(wasmBinaryName, idents); - if (jsOutput) this.outputs.push(jsOutput); - if (wasmBindingsOutput) this.outputs.push(...wasmBindingsOutput); - } - return this.outputs; - } - async copyArtifact() { - const [srcName, destName, wasmBinaryName] = this.getArtifactNames(); - if (!srcName || !destName) return; - const profile = this.options.profile ?? (this.options.release ? "release" : "debug"); - const src = (0, node_path.join)(this.targetDir, this.target.triple, profile, srcName); - debug$7(`Copy artifact from: [${src}]`); - const dest = (0, node_path.join)(this.outputDir, destName); - const isWasm = dest.endsWith(".wasm"); - try { - if (await fileExists(dest)) { - debug$7("Old artifact found, remove it first"); - await unlinkAsync(dest); - } - debug$7("Copy artifact to:"); - debug$7(" %i", dest); - if (isWasm) { - const { ModuleConfig } = await import("@napi-rs/wasm-tools"); - debug$7("Generate debug wasm module"); - try { - const debugWasmBinary = new ModuleConfig().generateDwarf(true).generateNameSection(true).generateProducersSection(true).preserveCodeTransform(true).strictValidate(false).parse(await readFileAsync(src)).emitWasm(true); - await writeFileAsync(dest.replace(/\.wasm$/, ".debug.wasm"), debugWasmBinary); - debug$7("Generate release wasm module"); - await writeFileAsync(dest, new ModuleConfig().generateDwarf(false).generateNameSection(false).generateProducersSection(false).preserveCodeTransform(false).strictValidate(false).onlyStableFeatures(false).parse(debugWasmBinary).emitWasm(false)); - } catch (e) { - debug$7.warn(`Failed to generate debug wasm module: ${e.message ?? e}`); - await copyFileAsync(src, dest); - } - } else await copyFileAsync(src, dest); - this.outputs.push({ - kind: dest.endsWith(".node") ? "node" : isWasm ? "wasm" : "exe", - path: dest - }); - return wasmBinaryName ? (0, node_path.join)(this.outputDir, wasmBinaryName) : null; - } catch (e) { - throw new Error("Failed to copy artifact", { cause: e }); - } - } - getArtifactNames() { - if (this.cdyLibName) { - const cdyLib = this.cdyLibName.replace(/-/g, "_"); - const wasiTarget = this.config.targets.find((t) => t.platform === "wasi"); - const srcName = this.target.platform === "darwin" ? `lib${cdyLib}.dylib` : this.target.platform === "win32" ? `${cdyLib}.dll` : this.target.platform === "wasi" || this.target.platform === "wasm" ? `${cdyLib}.wasm` : `lib${cdyLib}.so`; - let destName = this.config.binaryName; - if (this.options.platform) destName += `.${this.target.platformArchABI}`; - if (srcName.endsWith(".wasm")) destName += ".wasm"; - else destName += ".node"; - return [ - srcName, - destName, - wasiTarget ? `${this.config.binaryName}.${wasiTarget.platformArchABI}.wasm` : null - ]; - } else if (this.binName) { - const srcName = this.target.platform === "win32" ? `${this.binName}.exe` : this.binName; - return [srcName, srcName]; - } - return []; - } - async generateTypeDef() { - const typeDefDir = this.envs.NAPI_TYPE_DEF_TMP_FOLDER; - if (!this.enableTypeDef) return []; - const { exports: exports$1, dts } = await generateTypeDef({ - typeDefDir, - noDtsHeader: this.options.noDtsHeader, - dtsHeader: this.options.dtsHeader, - configDtsHeader: this.config.dtsHeader, - configDtsHeaderFile: this.config.dtsHeaderFile, - constEnum: this.options.constEnum ?? this.config.constEnum, - cwd: this.options.cwd - }); - const dest = (0, node_path.join)(this.outputDir, this.options.dts ?? "index.d.ts"); - try { - debug$7("Writing type def to:"); - debug$7(" %i", dest); - await writeFileAsync(dest, dts, "utf-8"); - } catch (e) { - debug$7.error("Failed to write type def file"); - debug$7.error(e); - } - if (exports$1.length > 0) { - const dest$1 = (0, node_path.join)(this.outputDir, this.options.dts ?? "index.d.ts"); - this.outputs.push({ - kind: "dts", - path: dest$1 - }); - } - return exports$1; - } - async writeJsBinding(idents) { - return writeJsBinding({ - platform: this.options.platform, - noJsBinding: this.options.noJsBinding, - idents, - jsBinding: this.options.jsBinding, - esm: this.options.esm, - binaryName: this.config.binaryName, - packageName: this.options.jsPackageName ?? this.config.packageName, - version: process.env.npm_new_version ?? this.config.packageJson.version, - outputDir: this.outputDir - }); - } - async writeWasiBinding(distFileName, idents) { - if (distFileName) { - var _this$config$wasm, _this$config$wasm2, _this$config$wasm3, _this$config$wasm4, _this$config$wasm5, _this$config$wasm6, _this$config$wasm7, _this$config$wasm8; - const { name, dir: dir$1 } = (0, node_path.parse)(distFileName); - const bindingPath = (0, node_path.join)(dir$1, `${this.config.binaryName}.wasi.cjs`); - const browserBindingPath = (0, node_path.join)(dir$1, `${this.config.binaryName}.wasi-browser.js`); - const workerPath = (0, node_path.join)(dir$1, "wasi-worker.mjs"); - const browserWorkerPath = (0, node_path.join)(dir$1, "wasi-worker-browser.mjs"); - const browserEntryPath = (0, node_path.join)(dir$1, "browser.js"); - const exportsCode = `module.exports = __napiModule.exports\n` + idents.map((ident) => `module.exports.${ident} = __napiModule.exports.${ident}`).join("\n"); - await writeFileAsync(bindingPath, createWasiBinding(name, this.config.packageName, (_this$config$wasm = this.config.wasm) === null || _this$config$wasm === void 0 ? void 0 : _this$config$wasm.initialMemory, (_this$config$wasm2 = this.config.wasm) === null || _this$config$wasm2 === void 0 ? void 0 : _this$config$wasm2.maximumMemory) + exportsCode + "\n", "utf8"); - await writeFileAsync(browserBindingPath, createWasiBrowserBinding(name, (_this$config$wasm3 = this.config.wasm) === null || _this$config$wasm3 === void 0 ? void 0 : _this$config$wasm3.initialMemory, (_this$config$wasm4 = this.config.wasm) === null || _this$config$wasm4 === void 0 ? void 0 : _this$config$wasm4.maximumMemory, (_this$config$wasm5 = this.config.wasm) === null || _this$config$wasm5 === void 0 || (_this$config$wasm5 = _this$config$wasm5.browser) === null || _this$config$wasm5 === void 0 ? void 0 : _this$config$wasm5.fs, (_this$config$wasm6 = this.config.wasm) === null || _this$config$wasm6 === void 0 || (_this$config$wasm6 = _this$config$wasm6.browser) === null || _this$config$wasm6 === void 0 ? void 0 : _this$config$wasm6.asyncInit, (_this$config$wasm7 = this.config.wasm) === null || _this$config$wasm7 === void 0 || (_this$config$wasm7 = _this$config$wasm7.browser) === null || _this$config$wasm7 === void 0 ? void 0 : _this$config$wasm7.buffer) + `export default __napiModule.exports\n` + idents.map((ident) => `export const ${ident} = __napiModule.exports.${ident}`).join("\n") + "\n", "utf8"); - await writeFileAsync(workerPath, WASI_WORKER_TEMPLATE, "utf8"); - await writeFileAsync(browserWorkerPath, createWasiBrowserWorkerBinding(((_this$config$wasm8 = this.config.wasm) === null || _this$config$wasm8 === void 0 || (_this$config$wasm8 = _this$config$wasm8.browser) === null || _this$config$wasm8 === void 0 ? void 0 : _this$config$wasm8.fs) ?? false), "utf8"); - await writeFileAsync(browserEntryPath, `export * from '${this.config.packageName}-wasm32-wasi'\n`); - return [ - { - kind: "js", - path: bindingPath - }, - { - kind: "js", - path: browserBindingPath - }, - { - kind: "js", - path: workerPath - }, - { - kind: "js", - path: browserWorkerPath - }, - { - kind: "js", - path: browserEntryPath - } - ]; - } - return []; - } - setEnvIfNotExists(env, value$1) { - if (!process.env[env]) this.envs[env] = value$1; - } -}; -async function writeJsBinding(options) { - if (!options.platform || options.noJsBinding || options.idents.length === 0) return; - const name = options.jsBinding ?? "index.js"; - const binding = (options.esm ? createEsmBinding : createCjsBinding)(options.binaryName, options.packageName, options.idents, options.version); - try { - const dest = (0, node_path.join)(options.outputDir, name); - debug$7("Writing js binding to:"); - debug$7(" %i", dest); - await writeFileAsync(dest, binding, "utf-8"); - return { - kind: "js", - path: dest - }; - } catch (e) { - throw new Error("Failed to write js binding file", { cause: e }); - } -} -async function generateTypeDef(options) { - if (!await dirExistsAsync(options.typeDefDir)) return { - exports: [], - dts: "" - }; - let header = ""; - let dts = ""; - let exports$1 = []; - if (!options.noDtsHeader) { - const dtsHeader = options.dtsHeader ?? options.configDtsHeader; - if (options.configDtsHeaderFile) try { - header = await readFileAsync((0, node_path.join)(options.cwd, options.configDtsHeaderFile), "utf-8"); - } catch (e) { - debug$7.warn(`Failed to read dts header file ${options.configDtsHeaderFile}`, e); - } - else if (dtsHeader) header = dtsHeader; - else header = DEFAULT_TYPE_DEF_HEADER; - } - const files = await readdirAsync(options.typeDefDir, { withFileTypes: true }); - if (!files.length) { - debug$7("No type def files found. Skip generating dts file."); - return { - exports: [], - dts: "" - }; - } - for (const file of files) { - if (!file.isFile()) continue; - const { dts: fileDts, exports: fileExports } = await processTypeDef((0, node_path.join)(options.typeDefDir, file.name), options.constEnum ?? true); - dts += fileDts; - exports$1.push(...fileExports); - } - if (dts.indexOf("ExternalObject<") > -1) header += ` -export declare class ExternalObject { - readonly '': { - readonly '': unique symbol - [K: symbol]: T - } -} -`; - if (dts.indexOf("TypedArray") > -1) header += ` -export type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array -`; - dts = header + dts; - return { - exports: exports$1, - dts - }; -} - -//#endregion -//#region src/def/create-npm-dirs.ts -var BaseCreateNpmDirsCommand = class extends clipanion.Command { - static paths = [["create-npm-dirs"]]; - static usage = clipanion.Command.Usage({ description: "Create npm package dirs for different platforms" }); - cwd = clipanion.Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = clipanion.Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = clipanion.Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - npmDir = clipanion.Option.String("--npm-dir", "npm", { description: "Path to the folder where the npm packages put" }); - dryRun = clipanion.Option.Boolean("--dry-run", false, { description: "Dry run without touching file system" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir, - dryRun: this.dryRun - }; - } -}; -function applyDefaultCreateNpmDirsOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - npmDir: "npm", - dryRun: false, - ...options - }; -} - -//#endregion -//#region src/api/create-npm-dirs.ts -const debug$6 = debugFactory("create-npm-dirs"); -async function createNpmDirs(userOptions) { - const options = applyDefaultCreateNpmDirsOptions(userOptions); - async function mkdirAsync$1(dir$1) { - debug$6("Try to create dir: %i", dir$1); - if (options.dryRun) return; - await mkdirAsync(dir$1, { recursive: true }); - } - async function writeFileAsync$1(file, content) { - debug$6("Writing file %i", file); - if (options.dryRun) { - debug$6(content); - return; - } - await writeFileAsync(file, content); - } - const packageJsonPath = (0, node_path.resolve)(options.cwd, options.packageJsonPath); - const npmPath = (0, node_path.resolve)(options.cwd, options.npmDir); - debug$6(`Read content from [${options.configPath ?? packageJsonPath}]`); - const { targets, binaryName, packageName, packageJson } = await readNapiConfig(packageJsonPath, options.configPath ? (0, node_path.resolve)(options.cwd, options.configPath) : void 0); - for (const target of targets) { - const targetDir = (0, node_path.join)(npmPath, `${target.platformArchABI}`); - await mkdirAsync$1(targetDir); - const binaryFileName = target.arch === "wasm32" ? `${binaryName}.${target.platformArchABI}.wasm` : `${binaryName}.${target.platformArchABI}.node`; - const scopedPackageJson = { - name: `${packageName}-${target.platformArchABI}`, - version: packageJson.version, - cpu: target.arch !== "universal" ? [target.arch] : void 0, - main: binaryFileName, - files: [binaryFileName], - ...pick$1(packageJson, "description", "keywords", "author", "authors", "homepage", "license", "engines", "repository", "bugs") - }; - if (packageJson.publishConfig) scopedPackageJson.publishConfig = pick$1(packageJson.publishConfig, "registry", "access"); - if (target.arch !== "wasm32") scopedPackageJson.os = [target.platform]; - else { - var _scopedPackageJson$fi, _scopedPackageJson$en; - const entry = `${binaryName}.wasi.cjs`; - scopedPackageJson.main = entry; - scopedPackageJson.browser = `${binaryName}.wasi-browser.js`; - (_scopedPackageJson$fi = scopedPackageJson.files) === null || _scopedPackageJson$fi === void 0 || _scopedPackageJson$fi.push(entry, scopedPackageJson.browser, `wasi-worker.mjs`, `wasi-worker-browser.mjs`); - let needRestrictNodeVersion = true; - if ((_scopedPackageJson$en = scopedPackageJson.engines) === null || _scopedPackageJson$en === void 0 ? void 0 : _scopedPackageJson$en.node) try { - const { major } = (0, semver.parse)(scopedPackageJson.engines.node) ?? { major: 0 }; - if (major >= 14) needRestrictNodeVersion = false; - } catch {} - if (needRestrictNodeVersion) scopedPackageJson.engines = { node: ">=14.0.0" }; - const wasmRuntime = await fetch(`https://registry.npmjs.org/@napi-rs/wasm-runtime`).then((res) => res.json()); - scopedPackageJson.dependencies = { "@napi-rs/wasm-runtime": `^${wasmRuntime["dist-tags"].latest}` }; - } - if (target.abi === "gnu") scopedPackageJson.libc = ["glibc"]; - else if (target.abi === "musl") scopedPackageJson.libc = ["musl"]; - await writeFileAsync$1((0, node_path.join)(targetDir, "package.json"), JSON.stringify(scopedPackageJson, null, 2) + "\n"); - await writeFileAsync$1((0, node_path.join)(targetDir, "README.md"), readme(packageName, target)); - debug$6.info(`${packageName} -${target.platformArchABI} created`); - } -} -function readme(packageName, target) { - return `# \`${packageName}-${target.platformArchABI}\` - -This is the **${target.triple}** binary for \`${packageName}\` -`; -} - -//#endregion -//#region src/def/new.ts -var BaseNewCommand = class extends clipanion.Command { - static paths = [["new"]]; - static usage = clipanion.Command.Usage({ description: "Create a new project with pre-configured boilerplate" }); - $$path = clipanion.Option.String({ required: false }); - $$name = clipanion.Option.String("--name,-n", { description: "The name of the project, default to the name of the directory if not provided" }); - minNodeApiVersion = clipanion.Option.String("--min-node-api,-v", "4", { - validator: typanion.isNumber(), - description: "The minimum Node-API version to support" - }); - packageManager = clipanion.Option.String("--package-manager", "yarn", { description: "The package manager to use. Only support yarn 4.x for now." }); - license = clipanion.Option.String("--license,-l", "MIT", { description: "License for open-sourced project" }); - targets = clipanion.Option.Array("--targets,-t", [], { description: "All targets the crate will be compiled for." }); - enableDefaultTargets = clipanion.Option.Boolean("--enable-default-targets", true, { description: "Whether enable default targets" }); - enableAllTargets = clipanion.Option.Boolean("--enable-all-targets", false, { description: "Whether enable all targets" }); - enableTypeDef = clipanion.Option.Boolean("--enable-type-def", true, { description: "Whether enable the `type-def` feature for typescript definitions auto-generation" }); - enableGithubActions = clipanion.Option.Boolean("--enable-github-actions", true, { description: "Whether generate preconfigured GitHub Actions workflow" }); - testFramework = clipanion.Option.String("--test-framework", "ava", { description: "The JavaScript test framework to use, only support `ava` for now" }); - dryRun = clipanion.Option.Boolean("--dry-run", false, { description: "Whether to run the command in dry-run mode" }); - getOptions() { - return { - path: this.$$path, - name: this.$$name, - minNodeApiVersion: this.minNodeApiVersion, - packageManager: this.packageManager, - license: this.license, - targets: this.targets, - enableDefaultTargets: this.enableDefaultTargets, - enableAllTargets: this.enableAllTargets, - enableTypeDef: this.enableTypeDef, - enableGithubActions: this.enableGithubActions, - testFramework: this.testFramework, - dryRun: this.dryRun - }; - } -}; -function applyDefaultNewOptions(options) { - return { - minNodeApiVersion: 4, - packageManager: "yarn", - license: "MIT", - targets: [], - enableDefaultTargets: true, - enableAllTargets: false, - enableTypeDef: true, - enableGithubActions: true, - testFramework: "ava", - dryRun: false, - ...options - }; -} - -//#endregion -//#region ../node_modules/@std/toml/stringify.js -function joinKeys(keys) { - return keys.map((str) => { - return str.length === 0 || str.match(/[^A-Za-z0-9_-]/) ? JSON.stringify(str) : str; - }).join("."); -} -var Dumper = class { - maxPad = 0; - srcObject; - output = []; - #arrayTypeCache = /* @__PURE__ */ new Map(); - constructor(srcObjc) { - this.srcObject = srcObjc; - } - dump(fmtOptions = {}) { - this.output = this.#printObject(this.srcObject); - this.output = this.#format(fmtOptions); - return this.output; - } - #printObject(obj, keys = []) { - const out = []; - const props = Object.keys(obj); - const inlineProps = []; - const multilineProps = []; - for (const prop of props) if (this.#isSimplySerializable(obj[prop])) inlineProps.push(prop); - else multilineProps.push(prop); - const sortedProps = inlineProps.concat(multilineProps); - for (const prop of sortedProps) { - const value$1 = obj[prop]; - if (value$1 instanceof Date) out.push(this.#dateDeclaration([prop], value$1)); - else if (typeof value$1 === "string" || value$1 instanceof RegExp) out.push(this.#strDeclaration([prop], value$1.toString())); - else if (typeof value$1 === "number") out.push(this.#numberDeclaration([prop], value$1)); - else if (typeof value$1 === "boolean") out.push(this.#boolDeclaration([prop], value$1)); - else if (value$1 instanceof Array) { - const arrayType = this.#getTypeOfArray(value$1); - if (arrayType === "ONLY_PRIMITIVE") out.push(this.#arrayDeclaration([prop], value$1)); - else if (arrayType === "ONLY_OBJECT_EXCLUDING_ARRAY") for (let i = 0; i < value$1.length; i++) { - out.push(""); - out.push(this.#headerGroup([...keys, prop])); - out.push(...this.#printObject(value$1[i], [...keys, prop])); - } - else { - const str = value$1.map((x) => this.#printAsInlineValue(x)).join(","); - out.push(`${this.#declaration([prop])}[${str}]`); - } - } else if (typeof value$1 === "object") { - out.push(""); - out.push(this.#header([...keys, prop])); - if (value$1) { - const toParse = value$1; - out.push(...this.#printObject(toParse, [...keys, prop])); - } - } - } - out.push(""); - return out; - } - #isPrimitive(value$1) { - return value$1 instanceof Date || value$1 instanceof RegExp || [ - "string", - "number", - "boolean" - ].includes(typeof value$1); - } - #getTypeOfArray(arr) { - if (this.#arrayTypeCache.has(arr)) return this.#arrayTypeCache.get(arr); - const type = this.#doGetTypeOfArray(arr); - this.#arrayTypeCache.set(arr, type); - return type; - } - #doGetTypeOfArray(arr) { - if (!arr.length) return "ONLY_PRIMITIVE"; - const onlyPrimitive = this.#isPrimitive(arr[0]); - if (arr[0] instanceof Array) return "MIXED"; - for (let i = 1; i < arr.length; i++) if (onlyPrimitive !== this.#isPrimitive(arr[i]) || arr[i] instanceof Array) return "MIXED"; - return onlyPrimitive ? "ONLY_PRIMITIVE" : "ONLY_OBJECT_EXCLUDING_ARRAY"; - } - #printAsInlineValue(value$1) { - if (value$1 instanceof Date) return `"${this.#printDate(value$1)}"`; - else if (typeof value$1 === "string" || value$1 instanceof RegExp) return JSON.stringify(value$1.toString()); - else if (typeof value$1 === "number") return value$1; - else if (typeof value$1 === "boolean") return value$1.toString(); - else if (value$1 instanceof Array) return `[${value$1.map((x) => this.#printAsInlineValue(x)).join(",")}]`; - else if (typeof value$1 === "object") { - if (!value$1) throw new Error("Should never reach"); - return `{${Object.keys(value$1).map((key) => { - return `${joinKeys([key])} = ${this.#printAsInlineValue(value$1[key])}`; - }).join(",")}}`; - } - throw new Error("Should never reach"); - } - #isSimplySerializable(value$1) { - return typeof value$1 === "string" || typeof value$1 === "number" || typeof value$1 === "boolean" || value$1 instanceof RegExp || value$1 instanceof Date || value$1 instanceof Array && this.#getTypeOfArray(value$1) !== "ONLY_OBJECT_EXCLUDING_ARRAY"; - } - #header(keys) { - return `[${joinKeys(keys)}]`; - } - #headerGroup(keys) { - return `[[${joinKeys(keys)}]]`; - } - #declaration(keys) { - const title = joinKeys(keys); - if (title.length > this.maxPad) this.maxPad = title.length; - return `${title} = `; - } - #arrayDeclaration(keys, value$1) { - return `${this.#declaration(keys)}${JSON.stringify(value$1)}`; - } - #strDeclaration(keys, value$1) { - return `${this.#declaration(keys)}${JSON.stringify(value$1)}`; - } - #numberDeclaration(keys, value$1) { - if (Number.isNaN(value$1)) return `${this.#declaration(keys)}nan`; - switch (value$1) { - case Infinity: return `${this.#declaration(keys)}inf`; - case -Infinity: return `${this.#declaration(keys)}-inf`; - default: return `${this.#declaration(keys)}${value$1}`; - } - } - #boolDeclaration(keys, value$1) { - return `${this.#declaration(keys)}${value$1}`; - } - #printDate(value$1) { - function dtPad(v, lPad = 2) { - return v.padStart(lPad, "0"); - } - const m = dtPad((value$1.getUTCMonth() + 1).toString()); - const d = dtPad(value$1.getUTCDate().toString()); - const h = dtPad(value$1.getUTCHours().toString()); - const min = dtPad(value$1.getUTCMinutes().toString()); - const s = dtPad(value$1.getUTCSeconds().toString()); - const ms = dtPad(value$1.getUTCMilliseconds().toString(), 3); - return `${value$1.getUTCFullYear()}-${m}-${d}T${h}:${min}:${s}.${ms}`; - } - #dateDeclaration(keys, value$1) { - return `${this.#declaration(keys)}${this.#printDate(value$1)}`; - } - #format(options = {}) { - const { keyAlignment = false } = options; - const rDeclaration = /^(\".*\"|[^=]*)\s=/; - const out = []; - for (let i = 0; i < this.output.length; i++) { - const l = this.output[i]; - if (l[0] === "[" && l[1] !== "[") { - var _this$output; - if (this.output[i + 1] === "" && ((_this$output = this.output[i + 2]) === null || _this$output === void 0 ? void 0 : _this$output.slice(0, l.length)) === l.slice(0, -1) + ".") { - i += 1; - continue; - } - out.push(l); - } else if (keyAlignment) { - const m = rDeclaration.exec(l); - if (m && m[1]) out.push(l.replace(m[1], m[1].padEnd(this.maxPad))); - else out.push(l); - } else out.push(l); - } - const cleanedOutput = []; - for (let i = 0; i < out.length; i++) { - const l = out[i]; - if (!(l === "" && out[i + 1] === "")) cleanedOutput.push(l); - } - return cleanedOutput; - } -}; -/** -* Converts an object to a {@link https://toml.io | TOML} string. -* -* @example Usage -* ```ts -* import { stringify } from "@std/toml/stringify"; -* import { assertEquals } from "@std/assert"; -* -* const obj = { -* title: "TOML Example", -* owner: { -* name: "Bob", -* bio: "Bob is a cool guy", -* } -* }; -* const tomlString = stringify(obj); -* assertEquals(tomlString, `title = "TOML Example"\n\n[owner]\nname = "Bob"\nbio = "Bob is a cool guy"\n`); -* ``` -* @param obj Source object -* @param options Options for stringifying. -* @returns TOML string -*/ function stringify(obj, options) { - return new Dumper(obj).dump(options).join("\n"); -} - -//#endregion -//#region ../node_modules/@jsr/std__collections/_utils.js -/** -* Filters the given array, removing all elements that do not match the given predicate -* **in place. This means `array` will be modified!**. -*/ function filterInPlace(array, predicate) { - let outputIndex = 0; - for (const cur of array) { - if (!predicate(cur)) continue; - array[outputIndex] = cur; - outputIndex += 1; - } - array.splice(outputIndex); - return array; -} - -//#endregion -//#region ../node_modules/@jsr/std__collections/deep_merge.js -function deepMerge(record, other, options) { - return deepMergeInternal(record, other, /* @__PURE__ */ new Set(), options); -} -function deepMergeInternal(record, other, seen, options) { - const result = {}; - const keys = new Set([...getKeys(record), ...getKeys(other)]); - for (const key of keys) { - if (key === "__proto__") continue; - const a = record[key]; - if (!Object.hasOwn(other, key)) { - result[key] = a; - continue; - } - const b = other[key]; - if (isNonNullObject(a) && isNonNullObject(b) && !seen.has(a) && !seen.has(b)) { - seen.add(a); - seen.add(b); - result[key] = mergeObjects(a, b, seen, options); - continue; - } - result[key] = b; - } - return result; -} -function mergeObjects(left, right, seen, options = { - arrays: "merge", - sets: "merge", - maps: "merge" -}) { - if (isMergeable(left) && isMergeable(right)) return deepMergeInternal(left, right, seen, options); - if (isIterable(left) && isIterable(right)) { - if (Array.isArray(left) && Array.isArray(right)) { - if (options.arrays === "merge") return left.concat(right); - return right; - } - if (left instanceof Map && right instanceof Map) { - if (options.maps === "merge") return new Map([...left, ...right]); - return right; - } - if (left instanceof Set && right instanceof Set) { - if (options.sets === "merge") return new Set([...left, ...right]); - return right; - } - } - return right; -} -/** -* Test whether a value is mergeable or not -* Builtins that look like objects, null and user defined classes -* are not considered mergeable (it means that reference will be copied) -*/ function isMergeable(value$1) { - return Object.getPrototypeOf(value$1) === Object.prototype; -} -function isIterable(value$1) { - return typeof value$1[Symbol.iterator] === "function"; -} -function isNonNullObject(value$1) { - return value$1 !== null && typeof value$1 === "object"; -} -function getKeys(record) { - const result = Object.getOwnPropertySymbols(record); - filterInPlace(result, (key) => Object.prototype.propertyIsEnumerable.call(record, key)); - result.push(...Object.keys(record)); - return result; -} - -//#endregion -//#region ../node_modules/@std/toml/_parser.js -/** -* Copy of `import { isLeap } from "@std/datetime";` because it cannot be impoted as long as it is unstable. -*/ function isLeap(yearNumber) { - return yearNumber % 4 === 0 && yearNumber % 100 !== 0 || yearNumber % 400 === 0; -} -var Scanner = class { - #whitespace = /[ \t]/; - #position = 0; - #source; - constructor(source) { - this.#source = source; - } - get position() { - return this.#position; - } - get source() { - return this.#source; - } - /** - * Get current character - * @param index - relative index from current position - */ char(index = 0) { - return this.#source[this.#position + index] ?? ""; - } - /** - * Get sliced string - * @param start - start position relative from current position - * @param end - end position relative from current position - */ slice(start, end) { - return this.#source.slice(this.#position + start, this.#position + end); - } - /** - * Move position to next - */ next(count = 1) { - this.#position += count; - } - skipWhitespaces() { - while (this.#whitespace.test(this.char()) && !this.eof()) this.next(); - if (!this.isCurrentCharEOL() && /\s/.test(this.char())) { - const escaped = "\\u" + this.char().charCodeAt(0).toString(16); - const position = this.#position; - throw new SyntaxError(`Cannot parse the TOML: It contains invalid whitespace at position '${position}': \`${escaped}\``); - } - } - nextUntilChar(options = { skipComments: true }) { - while (!this.eof()) { - const char = this.char(); - if (this.#whitespace.test(char) || this.isCurrentCharEOL()) this.next(); - else if (options.skipComments && this.char() === "#") while (!this.isCurrentCharEOL() && !this.eof()) this.next(); - else break; - } - } - /** - * Position reached EOF or not - */ eof() { - return this.#position >= this.#source.length; - } - isCurrentCharEOL() { - return this.char() === "\n" || this.startsWith("\r\n"); - } - startsWith(searchString) { - return this.#source.startsWith(searchString, this.#position); - } - match(regExp) { - if (!regExp.sticky) throw new Error(`RegExp ${regExp} does not have a sticky 'y' flag`); - regExp.lastIndex = this.#position; - return this.#source.match(regExp); - } -}; -function success(body) { - return { - ok: true, - body - }; -} -function failure() { - return { ok: false }; -} -/** -* Creates a nested object from the keys and values. -* -* e.g. `unflat(["a", "b", "c"], 1)` returns `{ a: { b: { c: 1 } } }` -*/ function unflat(keys, values = { __proto__: null }) { - return keys.reduceRight((acc, key) => ({ [key]: acc }), values); -} -function isObject(value$1) { - return typeof value$1 === "object" && value$1 !== null; -} -function getTargetValue(target, keys) { - const key = keys[0]; - if (!key) throw new Error("Cannot parse the TOML: key length is not a positive number"); - return target[key]; -} -function deepAssignTable(target, table$1) { - const { keys, type, value: value$1 } = table$1; - const currentValue = getTargetValue(target, keys); - if (currentValue === void 0) return Object.assign(target, unflat(keys, value$1)); - if (Array.isArray(currentValue)) { - deepAssign(currentValue.at(-1), { - type, - keys: keys.slice(1), - value: value$1 - }); - return target; - } - if (isObject(currentValue)) { - deepAssign(currentValue, { - type, - keys: keys.slice(1), - value: value$1 - }); - return target; - } - throw new Error("Unexpected assign"); -} -function deepAssignTableArray(target, table$1) { - const { type, keys, value: value$1 } = table$1; - const currentValue = getTargetValue(target, keys); - if (currentValue === void 0) return Object.assign(target, unflat(keys, [value$1])); - if (Array.isArray(currentValue)) { - if (table$1.keys.length === 1) currentValue.push(value$1); - else deepAssign(currentValue.at(-1), { - type: table$1.type, - keys: table$1.keys.slice(1), - value: table$1.value - }); - return target; - } - if (isObject(currentValue)) { - deepAssign(currentValue, { - type, - keys: keys.slice(1), - value: value$1 - }); - return target; - } - throw new Error("Unexpected assign"); -} -function deepAssign(target, body) { - switch (body.type) { - case "Block": return deepMerge(target, body.value); - case "Table": return deepAssignTable(target, body); - case "TableArray": return deepAssignTableArray(target, body); - } -} -function or(parsers) { - return (scanner) => { - for (const parse$4 of parsers) { - const result = parse$4(scanner); - if (result.ok) return result; - } - return failure(); - }; -} -/** Join the parse results of the given parser into an array. -* -* If the parser fails at the first attempt, it will return an empty array. -*/ function join$6(parser, separator) { - const Separator = character(separator); - return (scanner) => { - const out = []; - const first = parser(scanner); - if (!first.ok) return success(out); - out.push(first.body); - while (!scanner.eof()) { - if (!Separator(scanner).ok) break; - const result = parser(scanner); - if (!result.ok) throw new SyntaxError(`Invalid token after "${separator}"`); - out.push(result.body); - } - return success(out); - }; -} -/** Join the parse results of the given parser into an array. -* -* This requires the parser to succeed at least once. -*/ function join1(parser, separator) { - const Separator = character(separator); - return (scanner) => { - const first = parser(scanner); - if (!first.ok) return failure(); - const out = [first.body]; - while (!scanner.eof()) { - if (!Separator(scanner).ok) break; - const result = parser(scanner); - if (!result.ok) throw new SyntaxError(`Invalid token after "${separator}"`); - out.push(result.body); - } - return success(out); - }; -} -function kv(keyParser, separator, valueParser) { - const Separator = character(separator); - return (scanner) => { - const position = scanner.position; - const key = keyParser(scanner); - if (!key.ok) return failure(); - if (!Separator(scanner).ok) throw new SyntaxError(`key/value pair doesn't have "${separator}"`); - const value$1 = valueParser(scanner); - if (!value$1.ok) { - const lineEndIndex = scanner.source.indexOf("\n", scanner.position); - const endPosition = lineEndIndex > 0 ? lineEndIndex : scanner.source.length; - const line = scanner.source.slice(position, endPosition); - throw new SyntaxError(`Cannot parse value on line '${line}'`); - } - return success(unflat(key.body, value$1.body)); - }; -} -function merge$1(parser) { - return (scanner) => { - const result = parser(scanner); - if (!result.ok) return failure(); - let body = { __proto__: null }; - for (const record of result.body) if (typeof record === "object" && record !== null) body = deepMerge(body, record); - return success(body); - }; -} -function repeat(parser) { - return (scanner) => { - const body = []; - while (!scanner.eof()) { - const result = parser(scanner); - if (!result.ok) break; - body.push(result.body); - scanner.nextUntilChar(); - } - if (body.length === 0) return failure(); - return success(body); - }; -} -function surround(left, parser, right) { - const Left = character(left); - const Right = character(right); - return (scanner) => { - if (!Left(scanner).ok) return failure(); - const result = parser(scanner); - if (!result.ok) throw new SyntaxError(`Invalid token after "${left}"`); - if (!Right(scanner).ok) throw new SyntaxError(`Not closed by "${right}" after started with "${left}"`); - return success(result.body); - }; -} -function character(str) { - return (scanner) => { - scanner.skipWhitespaces(); - if (!scanner.startsWith(str)) return failure(); - scanner.next(str.length); - scanner.skipWhitespaces(); - return success(void 0); - }; -} -const BARE_KEY_REGEXP = /[A-Za-z0-9_-]+/y; -function bareKey(scanner) { - var _scanner$match; - scanner.skipWhitespaces(); - const key = (_scanner$match = scanner.match(BARE_KEY_REGEXP)) === null || _scanner$match === void 0 ? void 0 : _scanner$match[0]; - if (!key) return failure(); - scanner.next(key.length); - return success(key); -} -function escapeSequence(scanner) { - if (scanner.char() !== "\\") return failure(); - scanner.next(); - switch (scanner.char()) { - case "b": - scanner.next(); - return success("\b"); - case "t": - scanner.next(); - return success(" "); - case "n": - scanner.next(); - return success("\n"); - case "f": - scanner.next(); - return success("\f"); - case "r": - scanner.next(); - return success("\r"); - case "u": - case "U": { - const codePointLen = scanner.char() === "u" ? 4 : 6; - const codePoint = parseInt("0x" + scanner.slice(1, 1 + codePointLen), 16); - const str = String.fromCodePoint(codePoint); - scanner.next(codePointLen + 1); - return success(str); - } - case "\"": - scanner.next(); - return success("\""); - case "\\": - scanner.next(); - return success("\\"); - default: throw new SyntaxError(`Invalid escape sequence: \\${scanner.char()}`); - } -} -function basicString(scanner) { - scanner.skipWhitespaces(); - if (scanner.char() !== "\"") return failure(); - scanner.next(); - const acc = []; - while (scanner.char() !== "\"" && !scanner.eof()) { - if (scanner.char() === "\n") throw new SyntaxError("Single-line string cannot contain EOL"); - const escapedChar = escapeSequence(scanner); - if (escapedChar.ok) acc.push(escapedChar.body); - else { - acc.push(scanner.char()); - scanner.next(); - } - } - if (scanner.eof()) throw new SyntaxError(`Single-line string is not closed:\n${acc.join("")}`); - scanner.next(); - return success(acc.join("")); -} -function literalString(scanner) { - scanner.skipWhitespaces(); - if (scanner.char() !== "'") return failure(); - scanner.next(); - const acc = []; - while (scanner.char() !== "'" && !scanner.eof()) { - if (scanner.char() === "\n") throw new SyntaxError("Single-line string cannot contain EOL"); - acc.push(scanner.char()); - scanner.next(); - } - if (scanner.eof()) throw new SyntaxError(`Single-line string is not closed:\n${acc.join("")}`); - scanner.next(); - return success(acc.join("")); -} -function multilineBasicString(scanner) { - scanner.skipWhitespaces(); - if (!scanner.startsWith("\"\"\"")) return failure(); - scanner.next(3); - if (scanner.char() === "\n") scanner.next(); - else if (scanner.startsWith("\r\n")) scanner.next(2); - const acc = []; - while (!scanner.startsWith("\"\"\"") && !scanner.eof()) { - if (scanner.startsWith("\\\n")) { - scanner.next(); - scanner.nextUntilChar({ skipComments: false }); - continue; - } else if (scanner.startsWith("\\\r\n")) { - scanner.next(); - scanner.nextUntilChar({ skipComments: false }); - continue; - } - const escapedChar = escapeSequence(scanner); - if (escapedChar.ok) acc.push(escapedChar.body); - else { - acc.push(scanner.char()); - scanner.next(); - } - } - if (scanner.eof()) throw new SyntaxError(`Multi-line string is not closed:\n${acc.join("")}`); - if (scanner.char(3) === "\"") { - acc.push("\""); - scanner.next(); - } - scanner.next(3); - return success(acc.join("")); -} -function multilineLiteralString(scanner) { - scanner.skipWhitespaces(); - if (!scanner.startsWith("'''")) return failure(); - scanner.next(3); - if (scanner.char() === "\n") scanner.next(); - else if (scanner.startsWith("\r\n")) scanner.next(2); - const acc = []; - while (!scanner.startsWith("'''") && !scanner.eof()) { - acc.push(scanner.char()); - scanner.next(); - } - if (scanner.eof()) throw new SyntaxError(`Multi-line string is not closed:\n${acc.join("")}`); - if (scanner.char(3) === "'") { - acc.push("'"); - scanner.next(); - } - scanner.next(3); - return success(acc.join("")); -} -const BOOLEAN_REGEXP = /(?:true|false)\b/y; -function boolean(scanner) { - scanner.skipWhitespaces(); - const match = scanner.match(BOOLEAN_REGEXP); - if (!match) return failure(); - const string = match[0]; - scanner.next(string.length); - return success(string === "true"); -} -const INFINITY_MAP = new Map([ - ["inf", Infinity], - ["+inf", Infinity], - ["-inf", -Infinity] -]); -const INFINITY_REGEXP = /[+-]?inf\b/y; -function infinity(scanner) { - scanner.skipWhitespaces(); - const match = scanner.match(INFINITY_REGEXP); - if (!match) return failure(); - const string = match[0]; - scanner.next(string.length); - return success(INFINITY_MAP.get(string)); -} -const NAN_REGEXP = /[+-]?nan\b/y; -function nan(scanner) { - scanner.skipWhitespaces(); - const match = scanner.match(NAN_REGEXP); - if (!match) return failure(); - const string = match[0]; - scanner.next(string.length); - return success(NaN); -} -const dottedKey = join1(or([ - bareKey, - basicString, - literalString -]), "."); -const BINARY_REGEXP = /0b[01]+(?:_[01]+)*\b/y; -function binary(scanner) { - var _scanner$match2; - scanner.skipWhitespaces(); - const match = (_scanner$match2 = scanner.match(BINARY_REGEXP)) === null || _scanner$match2 === void 0 ? void 0 : _scanner$match2[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.slice(2).replaceAll("_", ""); - const number = parseInt(value$1, 2); - return isNaN(number) ? failure() : success(number); -} -const OCTAL_REGEXP = /0o[0-7]+(?:_[0-7]+)*\b/y; -function octal(scanner) { - var _scanner$match3; - scanner.skipWhitespaces(); - const match = (_scanner$match3 = scanner.match(OCTAL_REGEXP)) === null || _scanner$match3 === void 0 ? void 0 : _scanner$match3[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.slice(2).replaceAll("_", ""); - const number = parseInt(value$1, 8); - return isNaN(number) ? failure() : success(number); -} -const HEX_REGEXP = /0x[0-9a-f]+(?:_[0-9a-f]+)*\b/iy; -function hex(scanner) { - var _scanner$match4; - scanner.skipWhitespaces(); - const match = (_scanner$match4 = scanner.match(HEX_REGEXP)) === null || _scanner$match4 === void 0 ? void 0 : _scanner$match4[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.slice(2).replaceAll("_", ""); - const number = parseInt(value$1, 16); - return isNaN(number) ? failure() : success(number); -} -const INTEGER_REGEXP = /[+-]?(?:0|[1-9][0-9]*(?:_[0-9]+)*)\b/y; -function integer(scanner) { - var _scanner$match5; - scanner.skipWhitespaces(); - const match = (_scanner$match5 = scanner.match(INTEGER_REGEXP)) === null || _scanner$match5 === void 0 ? void 0 : _scanner$match5[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.replaceAll("_", ""); - return success(parseInt(value$1, 10)); -} -const FLOAT_REGEXP = /[+-]?(?:0|[1-9][0-9]*(?:_[0-9]+)*)(?:\.[0-9]+(?:_[0-9]+)*)?(?:e[+-]?[0-9]+(?:_[0-9]+)*)?\b/iy; -function float(scanner) { - var _scanner$match6; - scanner.skipWhitespaces(); - const match = (_scanner$match6 = scanner.match(FLOAT_REGEXP)) === null || _scanner$match6 === void 0 ? void 0 : _scanner$match6[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.replaceAll("_", ""); - const float$1 = parseFloat(value$1); - if (isNaN(float$1)) return failure(); - return success(float$1); -} -const DATE_TIME_REGEXP = /(?\d{4})-(?\d{2})-(?\d{2})(?:[ 0-9TZ.:+-]+)?\b/y; -function dateTime(scanner) { - scanner.skipWhitespaces(); - const match = scanner.match(DATE_TIME_REGEXP); - if (!match) return failure(); - const string = match[0]; - scanner.next(string.length); - const groups = match.groups; - if (groups.month == "02") { - const days = parseInt(groups.day); - if (days > 29) throw new SyntaxError(`Invalid date string "${match}"`); - const year = parseInt(groups.year); - if (days > 28 && !isLeap(year)) throw new SyntaxError(`Invalid date string "${match}"`); - } - const date = new Date(string.trim()); - if (isNaN(date.getTime())) throw new SyntaxError(`Invalid date string "${match}"`); - return success(date); -} -const LOCAL_TIME_REGEXP = /(\d{2}):(\d{2}):(\d{2})(?:\.[0-9]+)?\b/y; -function localTime(scanner) { - var _scanner$match7; - scanner.skipWhitespaces(); - const match = (_scanner$match7 = scanner.match(LOCAL_TIME_REGEXP)) === null || _scanner$match7 === void 0 ? void 0 : _scanner$match7[0]; - if (!match) return failure(); - scanner.next(match.length); - return success(match); -} -function arrayValue(scanner) { - scanner.skipWhitespaces(); - if (scanner.char() !== "[") return failure(); - scanner.next(); - const array = []; - while (!scanner.eof()) { - scanner.nextUntilChar(); - const result = value(scanner); - if (!result.ok) break; - array.push(result.body); - scanner.skipWhitespaces(); - if (scanner.char() !== ",") break; - scanner.next(); - } - scanner.nextUntilChar(); - if (scanner.char() !== "]") throw new SyntaxError("Array is not closed"); - scanner.next(); - return success(array); -} -function inlineTable(scanner) { - scanner.nextUntilChar(); - if (scanner.char(1) === "}") { - scanner.next(2); - return success({ __proto__: null }); - } - const pairs = surround("{", join$6(pair, ","), "}")(scanner); - if (!pairs.ok) return failure(); - let table$1 = { __proto__: null }; - for (const pair$1 of pairs.body) table$1 = deepMerge(table$1, pair$1); - return success(table$1); -} -const value = or([ - multilineBasicString, - multilineLiteralString, - basicString, - literalString, - boolean, - infinity, - nan, - dateTime, - localTime, - binary, - octal, - hex, - float, - integer, - arrayValue, - inlineTable -]); -const pair = kv(dottedKey, "=", value); -function block(scanner) { - scanner.nextUntilChar(); - const result = merge$1(repeat(pair))(scanner); - if (result.ok) return success({ - type: "Block", - value: result.body - }); - return failure(); -} -const tableHeader = surround("[", dottedKey, "]"); -function table(scanner) { - scanner.nextUntilChar(); - const header = tableHeader(scanner); - if (!header.ok) return failure(); - scanner.nextUntilChar(); - const b = block(scanner); - return success({ - type: "Table", - keys: header.body, - value: b.ok ? b.body.value : { __proto__: null } - }); -} -const tableArrayHeader = surround("[[", dottedKey, "]]"); -function tableArray(scanner) { - scanner.nextUntilChar(); - const header = tableArrayHeader(scanner); - if (!header.ok) return failure(); - scanner.nextUntilChar(); - const b = block(scanner); - return success({ - type: "TableArray", - keys: header.body, - value: b.ok ? b.body.value : { __proto__: null } - }); -} -function toml(scanner) { - const blocks = repeat(or([ - block, - tableArray, - table - ]))(scanner); - if (!blocks.ok) return success({ __proto__: null }); - return success(blocks.body.reduce(deepAssign, { __proto__: null })); -} -function createParseErrorMessage(scanner, message) { - var _lines$at; - const lines = scanner.source.slice(0, scanner.position).split("\n"); - return `Parse error on line ${lines.length}, column ${((_lines$at = lines.at(-1)) === null || _lines$at === void 0 ? void 0 : _lines$at.length) ?? 0}: ${message}`; -} -function parserFactory(parser) { - return (tomlString) => { - const scanner = new Scanner(tomlString); - try { - const result = parser(scanner); - if (result.ok && scanner.eof()) return result.body; - const message = `Unexpected character: "${scanner.char()}"`; - throw new SyntaxError(createParseErrorMessage(scanner, message)); - } catch (error) { - if (error instanceof Error) throw new SyntaxError(createParseErrorMessage(scanner, error.message)); - throw new SyntaxError(createParseErrorMessage(scanner, "Invalid error type caught")); - } - }; -} - -//#endregion -//#region ../node_modules/@std/toml/parse.js -/** -* Parses a {@link https://toml.io | TOML} string into an object. -* -* @example Usage -* ```ts -* import { parse } from "@std/toml/parse"; -* import { assertEquals } from "@std/assert"; -* -* const tomlString = `title = "TOML Example" -* [owner] -* name = "Alice" -* bio = "Alice is a programmer."`; -* -* const obj = parse(tomlString); -* assertEquals(obj, { title: "TOML Example", owner: { name: "Alice", bio: "Alice is a programmer." } }); -* ``` -* @param tomlString TOML string to be parsed. -* @returns The parsed JS object. -*/ function parse(tomlString) { - return parserFactory(toml)(tomlString); -} - -//#endregion -//#region ../node_modules/empathic/resolve.mjs -/** -* Resolve an absolute path from {@link root}, but only -* if {@link input} isn't already absolute. -* -* @param input The path to resolve. -* @param root The base path; default = process.cwd() -* @returns The resolved absolute path. -*/ -function absolute(input$2, root) { - return (0, node_path.isAbsolute)(input$2) ? input$2 : (0, node_path.resolve)(root || ".", input$2); -} - -//#endregion -//#region ../node_modules/empathic/walk.mjs -/** -* Get all parent directories of {@link base}. -* Stops after {@link Options['last']} is processed. -* -* @returns An array of absolute paths of all parent directories. -*/ -function up(base, options) { - let { last, cwd } = options || {}; - let tmp = absolute(base, cwd); - let root = absolute(last || "/", cwd); - let prev, arr = []; - while (prev !== root) { - arr.push(tmp); - tmp = (0, node_path.dirname)(prev = tmp); - if (tmp === prev) break; - } - return arr; -} - -//#endregion -//#region ../node_modules/empathic/find.mjs -/** -* Find a directory by name, walking parent directories until found. -* -* > [NOTE] -* > This function only returns a value for directory matches. -* > A file match with the same name will be ignored. -* -* @param name The directory name to find. -* @returns The absolute path to the file, if found. -*/ -function dir(name, options) { - let dir$1, tmp; - let start = options && options.cwd || ""; - for (dir$1 of up(start, options)) try { - tmp = (0, node_path.join)(dir$1, name); - if ((0, node_fs.statSync)(tmp).isDirectory()) return tmp; - } catch {} -} - -//#endregion -//#region src/def/rename.ts -var BaseRenameCommand = class extends clipanion.Command { - static paths = [["rename"]]; - static usage = clipanion.Command.Usage({ description: "Rename the NAPI-RS project" }); - cwd = clipanion.Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = clipanion.Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = clipanion.Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - npmDir = clipanion.Option.String("--npm-dir", "npm", { description: "Path to the folder where the npm packages put" }); - $$name = clipanion.Option.String("--name,-n", { description: "The new name of the project" }); - binaryName = clipanion.Option.String("--binary-name,-b", { description: "The new binary name *.node files" }); - packageName = clipanion.Option.String("--package-name", { description: "The new package name of the project" }); - manifestPath = clipanion.Option.String("--manifest-path", "Cargo.toml", { description: "Path to `Cargo.toml`" }); - repository = clipanion.Option.String("--repository", { description: "The new repository of the project" }); - description = clipanion.Option.String("--description", { description: "The new description of the project" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir, - name: this.$$name, - binaryName: this.binaryName, - packageName: this.packageName, - manifestPath: this.manifestPath, - repository: this.repository, - description: this.description - }; - } -}; -function applyDefaultRenameOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - npmDir: "npm", - manifestPath: "Cargo.toml", - ...options - }; -} - -//#endregion -//#region src/api/rename.ts -async function renameProject(userOptions) { - const options = applyDefaultRenameOptions(userOptions); - const oldName = (await readConfig(options)).binaryName; - const packageJsonPath = (0, node_path.resolve)(options.cwd, options.packageJsonPath); - const cargoTomlPath = (0, node_path.resolve)(options.cwd, options.manifestPath); - const packageJsonContent = await readFileAsync(packageJsonPath, "utf8"); - const packageJsonData = JSON.parse(packageJsonContent); - (0, es_toolkit.merge)((0, es_toolkit.merge)(packageJsonData, (0, es_toolkit.omitBy)((0, es_toolkit.pick)(options, [ - "name", - "description", - "author", - "license" - ]), es_toolkit.isNil)), { napi: (0, es_toolkit.omitBy)({ - binaryName: options.binaryName, - packageName: options.packageName - }, es_toolkit.isNil) }); - if (options.configPath) { - const configPath = (0, node_path.resolve)(options.cwd, options.configPath); - const configContent = await readFileAsync(configPath, "utf8"); - const configData = JSON.parse(configContent); - configData.binaryName = options.binaryName; - configData.packageName = options.packageName; - await writeFileAsync(configPath, JSON.stringify(configData, null, 2)); - } - await writeFileAsync(packageJsonPath, JSON.stringify(packageJsonData, null, 2)); - const cargoToml = parse(await readFileAsync(cargoTomlPath, "utf8")); - if (cargoToml.package && options.binaryName) { - const sanitizedName = options.binaryName.replace("@", "").replace("/", "_").replace(/-/g, "_").toLowerCase(); - cargoToml.package.name = sanitizedName; - } - await writeFileAsync(cargoTomlPath, stringify(cargoToml)); - if (oldName !== options.binaryName) { - const githubActionsPath = dir(".github", { cwd: options.cwd }); - if (githubActionsPath) { - const githubActionsCIYmlPath = (0, node_path.join)(githubActionsPath, "workflows", "CI.yml"); - if ((0, node_fs.existsSync)(githubActionsCIYmlPath)) { - var _githubActionsData$en; - const githubActionsData = (0, js_yaml.load)(await readFileAsync(githubActionsCIYmlPath, "utf8")); - if ((_githubActionsData$en = githubActionsData.env) === null || _githubActionsData$en === void 0 ? void 0 : _githubActionsData$en.APP_NAME) { - githubActionsData.env.APP_NAME = options.binaryName; - await writeFileAsync(githubActionsCIYmlPath, (0, js_yaml.dump)(githubActionsData, { - lineWidth: -1, - noRefs: true, - sortKeys: false - })); - } - } - } - const oldWasiBrowserBindingPath = (0, node_path.join)(options.cwd, `${oldName}.wasi-browser.js`); - if ((0, node_fs.existsSync)(oldWasiBrowserBindingPath)) await (0, node_fs_promises.rename)(oldWasiBrowserBindingPath, (0, node_path.join)(options.cwd, `${options.binaryName}.wasi-browser.js`)); - const oldWasiBindingPath = (0, node_path.join)(options.cwd, `${oldName}.wasi.cjs`); - if ((0, node_fs.existsSync)(oldWasiBindingPath)) await (0, node_fs_promises.rename)(oldWasiBindingPath, (0, node_path.join)(options.cwd, `${options.binaryName}.wasi.cjs`)); - const gitAttributesPath = (0, node_path.join)(options.cwd, ".gitattributes"); - if ((0, node_fs.existsSync)(gitAttributesPath)) await writeFileAsync(gitAttributesPath, (await readFileAsync(gitAttributesPath, "utf8")).split("\n").map((line) => { - return line.replace(`${oldName}.wasi-browser.js`, `${options.binaryName}.wasi-browser.js`).replace(`${oldName}.wasi.cjs`, `${options.binaryName}.wasi.cjs`); - }).join("\n")); - } -} - -//#endregion -//#region src/api/new.ts -const debug$5 = debugFactory("new"); -const TEMPLATE_REPOS = { - yarn: "https://github.com/napi-rs/package-template", - pnpm: "https://github.com/napi-rs/package-template-pnpm" -}; -async function checkGitCommand() { - try { - await new Promise((resolve$9) => { - const cp = (0, node_child_process.exec)("git --version"); - cp.on("error", () => { - resolve$9(false); - }); - cp.on("exit", (code) => { - if (code === 0) resolve$9(true); - else resolve$9(false); - }); - }); - return true; - } catch { - return false; - } -} -async function ensureCacheDir(packageManager) { - const cacheDir = node_path.default.join((0, node_os.homedir)(), ".napi-rs", "template", packageManager); - await mkdirAsync(cacheDir, { recursive: true }); - return cacheDir; -} -async function downloadTemplate(packageManager, cacheDir) { - const repoUrl = TEMPLATE_REPOS[packageManager]; - const templatePath = node_path.default.join(cacheDir, "repo"); - if ((0, node_fs.existsSync)(templatePath)) { - debug$5(`Template cache found at ${templatePath}, updating...`); - try { - await new Promise((resolve$9, reject) => { - const cp = (0, node_child_process.exec)("git fetch origin", { cwd: templatePath }); - cp.on("error", reject); - cp.on("exit", (code) => { - if (code === 0) resolve$9(); - else reject(/* @__PURE__ */ new Error(`Failed to fetch latest changes, git process exited with code ${code}`)); - }); - }); - (0, node_child_process.execSync)("git reset --hard origin/main", { - cwd: templatePath, - stdio: "ignore" - }); - debug$5("Template updated successfully"); - } catch (error) { - debug$5(`Failed to update template: ${error}`); - throw new Error(`Failed to update template from ${repoUrl}: ${error}`); - } - } else { - debug$5(`Cloning template from ${repoUrl}...`); - try { - (0, node_child_process.execSync)(`git clone ${repoUrl} repo`, { - cwd: cacheDir, - stdio: "inherit" - }); - debug$5("Template cloned successfully"); - } catch (error) { - throw new Error(`Failed to clone template from ${repoUrl}: ${error}`); - } - } -} -async function copyDirectory(src, dest, includeWasiBindings) { - await mkdirAsync(dest, { recursive: true }); - const entries = await node_fs.promises.readdir(src, { withFileTypes: true }); - for (const entry of entries) { - const srcPath = node_path.default.join(src, entry.name); - const destPath = node_path.default.join(dest, entry.name); - if (entry.name === ".git") continue; - if (entry.isDirectory()) await copyDirectory(srcPath, destPath, includeWasiBindings); - else { - if (!includeWasiBindings && (entry.name.endsWith(".wasi-browser.js") || entry.name.endsWith(".wasi.cjs") || entry.name.endsWith("wasi-worker.browser.mjs ") || entry.name.endsWith("wasi-worker.mjs") || entry.name.endsWith("browser.js"))) continue; - await node_fs.promises.copyFile(srcPath, destPath); - } - } -} -async function filterTargetsInPackageJson(filePath, enabledTargets) { - var _packageJson$napi; - const content = await node_fs.promises.readFile(filePath, "utf-8"); - const packageJson = JSON.parse(content); - if ((_packageJson$napi = packageJson.napi) === null || _packageJson$napi === void 0 ? void 0 : _packageJson$napi.targets) packageJson.napi.targets = packageJson.napi.targets.filter((target) => enabledTargets.includes(target)); - await node_fs.promises.writeFile(filePath, JSON.stringify(packageJson, null, 2) + "\n"); -} -async function filterTargetsInGithubActions(filePath, enabledTargets) { - var _yaml$jobs, _yaml$jobs5; - const yaml = (0, js_yaml.load)(await node_fs.promises.readFile(filePath, "utf-8")); - const macOSAndWindowsTargets = new Set([ - "x86_64-pc-windows-msvc", - "x86_64-pc-windows-gnu", - "aarch64-pc-windows-msvc", - "x86_64-apple-darwin" - ]); - const linuxTargets = new Set([ - "x86_64-unknown-linux-gnu", - "x86_64-unknown-linux-musl", - "aarch64-unknown-linux-gnu", - "aarch64-unknown-linux-musl", - "armv7-unknown-linux-gnueabihf", - "armv7-unknown-linux-musleabihf", - "loongarch64-unknown-linux-gnu", - "riscv64gc-unknown-linux-gnu", - "powerpc64le-unknown-linux-gnu", - "s390x-unknown-linux-gnu", - "aarch64-linux-android", - "armv7-linux-androideabi" - ]); - const hasLinuxTargets = enabledTargets.some((target) => linuxTargets.has(target)); - if (yaml === null || yaml === void 0 || (_yaml$jobs = yaml.jobs) === null || _yaml$jobs === void 0 || (_yaml$jobs = _yaml$jobs.build) === null || _yaml$jobs === void 0 || (_yaml$jobs = _yaml$jobs.strategy) === null || _yaml$jobs === void 0 || (_yaml$jobs = _yaml$jobs.matrix) === null || _yaml$jobs === void 0 ? void 0 : _yaml$jobs.settings) yaml.jobs.build.strategy.matrix.settings = yaml.jobs.build.strategy.matrix.settings.filter((setting) => { - if (setting.target) return enabledTargets.includes(setting.target); - return true; - }); - const jobsToRemove = []; - if (enabledTargets.every((target) => !macOSAndWindowsTargets.has(target))) jobsToRemove.push("test-macOS-windows-binding"); - else { - var _yaml$jobs2; - if (yaml === null || yaml === void 0 || (_yaml$jobs2 = yaml.jobs) === null || _yaml$jobs2 === void 0 || (_yaml$jobs2 = _yaml$jobs2["test-macOS-windows-binding"]) === null || _yaml$jobs2 === void 0 || (_yaml$jobs2 = _yaml$jobs2.strategy) === null || _yaml$jobs2 === void 0 || (_yaml$jobs2 = _yaml$jobs2.matrix) === null || _yaml$jobs2 === void 0 ? void 0 : _yaml$jobs2.settings) yaml.jobs["test-macOS-windows-binding"].strategy.matrix.settings = yaml.jobs["test-macOS-windows-binding"].strategy.matrix.settings.filter((setting) => { - if (setting.target) return enabledTargets.includes(setting.target); - return true; - }); - } - if (!hasLinuxTargets) { - var _yaml$jobs3; - if (yaml === null || yaml === void 0 || (_yaml$jobs3 = yaml.jobs) === null || _yaml$jobs3 === void 0 ? void 0 : _yaml$jobs3["test-linux-binding"]) jobsToRemove.push("test-linux-binding"); - } else { - var _yaml$jobs4; - if (yaml === null || yaml === void 0 || (_yaml$jobs4 = yaml.jobs) === null || _yaml$jobs4 === void 0 || (_yaml$jobs4 = _yaml$jobs4["test-linux-binding"]) === null || _yaml$jobs4 === void 0 || (_yaml$jobs4 = _yaml$jobs4.strategy) === null || _yaml$jobs4 === void 0 || (_yaml$jobs4 = _yaml$jobs4.matrix) === null || _yaml$jobs4 === void 0 ? void 0 : _yaml$jobs4.target) yaml.jobs["test-linux-binding"].strategy.matrix.target = yaml.jobs["test-linux-binding"].strategy.matrix.target.filter((target) => { - if (target) return enabledTargets.includes(target); - return true; - }); - } - if (!enabledTargets.includes("wasm32-wasip1-threads")) jobsToRemove.push("test-wasi"); - if (!enabledTargets.includes("x86_64-unknown-freebsd")) jobsToRemove.push("build-freebsd"); - for (const [jobName, jobConfig] of Object.entries(yaml.jobs || {})) if (jobName.startsWith("test-") && jobName !== "test-macOS-windows-binding" && jobName !== "test-linux-x64-gnu-binding") { - var _job$strategy; - const job = jobConfig; - if ((_job$strategy = job.strategy) === null || _job$strategy === void 0 || (_job$strategy = _job$strategy.matrix) === null || _job$strategy === void 0 || (_job$strategy = _job$strategy.settings) === null || _job$strategy === void 0 || (_job$strategy = _job$strategy[0]) === null || _job$strategy === void 0 ? void 0 : _job$strategy.target) { - const target = job.strategy.matrix.settings[0].target; - if (!enabledTargets.includes(target)) jobsToRemove.push(jobName); - } - } - for (const jobName of jobsToRemove) delete yaml.jobs[jobName]; - if (Array.isArray((_yaml$jobs5 = yaml.jobs) === null || _yaml$jobs5 === void 0 || (_yaml$jobs5 = _yaml$jobs5.publish) === null || _yaml$jobs5 === void 0 ? void 0 : _yaml$jobs5.needs)) yaml.jobs.publish.needs = yaml.jobs.publish.needs.filter((need) => !jobsToRemove.includes(need)); - const updatedYaml = (0, js_yaml.dump)(yaml, { - lineWidth: -1, - noRefs: true, - sortKeys: false - }); - await node_fs.promises.writeFile(filePath, updatedYaml); -} -function processOptions(options) { - var _options$targets; - debug$5("Processing options..."); - if (!options.path) throw new Error("Please provide the path as the argument"); - options.path = node_path.default.resolve(process.cwd(), options.path); - debug$5(`Resolved target path to: ${options.path}`); - if (!options.name) { - options.name = node_path.default.parse(options.path).base; - debug$5(`No project name provided, fix it to dir name: ${options.name}`); - } - if (!((_options$targets = options.targets) === null || _options$targets === void 0 ? void 0 : _options$targets.length)) if (options.enableAllTargets) { - options.targets = AVAILABLE_TARGETS.concat(); - debug$5("Enable all targets"); - } else if (options.enableDefaultTargets) { - options.targets = DEFAULT_TARGETS.concat(); - debug$5("Enable default targets"); - } else throw new Error("At least one target must be enabled"); - if (options.targets.some((target) => target === "wasm32-wasi-preview1-threads")) { - if ((0, node_child_process.execSync)(`rustup target list`, { encoding: "utf8" }).includes("wasm32-wasip1-threads")) options.targets = options.targets.map((target) => target === "wasm32-wasi-preview1-threads" ? "wasm32-wasip1-threads" : target); - } - return applyDefaultNewOptions(options); -} -async function newProject(userOptions) { - debug$5("Will create napi-rs project with given options:"); - debug$5(userOptions); - const options = processOptions(userOptions); - debug$5("Targets to be enabled:"); - debug$5(options.targets); - if (!await checkGitCommand()) throw new Error("Git is not installed or not available in PATH. Please install Git to continue."); - const packageManager = options.packageManager; - await ensurePath(options.path, options.dryRun); - if (!options.dryRun) try { - const cacheDir = await ensureCacheDir(packageManager); - await downloadTemplate(packageManager, cacheDir); - await copyDirectory(node_path.default.join(cacheDir, "repo"), options.path, options.targets.includes("wasm32-wasip1-threads")); - await renameProject({ - cwd: options.path, - name: options.name, - binaryName: getBinaryName(options.name) - }); - const packageJsonPath = node_path.default.join(options.path, "package.json"); - if ((0, node_fs.existsSync)(packageJsonPath)) await filterTargetsInPackageJson(packageJsonPath, options.targets); - const ciPath = node_path.default.join(options.path, ".github", "workflows", "CI.yml"); - if ((0, node_fs.existsSync)(ciPath) && options.enableGithubActions) await filterTargetsInGithubActions(ciPath, options.targets); - else if (!options.enableGithubActions && (0, node_fs.existsSync)(node_path.default.join(options.path, ".github"))) await node_fs.promises.rm(node_path.default.join(options.path, ".github"), { - recursive: true, - force: true - }); - const pkgJsonContent = await node_fs.promises.readFile(packageJsonPath, "utf-8"); - const pkgJson = JSON.parse(pkgJsonContent); - if (!pkgJson.engines) pkgJson.engines = {}; - pkgJson.engines.node = napiEngineRequirement(options.minNodeApiVersion); - if (options.license && pkgJson.license !== options.license) pkgJson.license = options.license; - if (options.testFramework !== "ava") debug$5(`Test framework ${options.testFramework} requested but not yet implemented`); - await node_fs.promises.writeFile(packageJsonPath, JSON.stringify(pkgJson, null, 2) + "\n"); - } catch (error) { - throw new Error(`Failed to create project: ${error}`); - } - debug$5(`Project created at: ${options.path}`); -} -async function ensurePath(path$2, dryRun = false) { - const stat$1 = await statAsync(path$2, {}).catch(() => void 0); - if (stat$1) { - if (stat$1.isFile()) throw new Error(`Path ${path$2} for creating new napi-rs project already exists and it's not a directory.`); - else if (stat$1.isDirectory()) { - if ((await readdirAsync(path$2)).length) throw new Error(`Path ${path$2} for creating new napi-rs project already exists and it's not empty.`); - } - } - if (!dryRun) try { - debug$5(`Try to create target directory: ${path$2}`); - if (!dryRun) await mkdirAsync(path$2, { recursive: true }); - } catch (e) { - throw new Error(`Failed to create target directory: ${path$2}`, { cause: e }); - } -} -function getBinaryName(name) { - return name.split("/").pop(); -} - -//#endregion -//#region src/def/pre-publish.ts -var BasePrePublishCommand = class extends clipanion.Command { - static paths = [["pre-publish"], ["prepublish"]]; - static usage = clipanion.Command.Usage({ description: "Update package.json and copy addons into per platform packages" }); - cwd = clipanion.Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = clipanion.Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = clipanion.Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - npmDir = clipanion.Option.String("--npm-dir,-p", "npm", { description: "Path to the folder where the npm packages put" }); - tagStyle = clipanion.Option.String("--tag-style,--tagstyle,-t", "lerna", { description: "git tag style, `npm` or `lerna`" }); - ghRelease = clipanion.Option.Boolean("--gh-release", true, { description: "Whether create GitHub release" }); - ghReleaseName = clipanion.Option.String("--gh-release-name", { description: "GitHub release name" }); - ghReleaseId = clipanion.Option.String("--gh-release-id", { description: "Existing GitHub release id" }); - skipOptionalPublish = clipanion.Option.Boolean("--skip-optional-publish", false, { description: "Whether skip optionalDependencies packages publish" }); - dryRun = clipanion.Option.Boolean("--dry-run", false, { description: "Dry run without touching file system" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir, - tagStyle: this.tagStyle, - ghRelease: this.ghRelease, - ghReleaseName: this.ghReleaseName, - ghReleaseId: this.ghReleaseId, - skipOptionalPublish: this.skipOptionalPublish, - dryRun: this.dryRun - }; - } -}; -function applyDefaultPrePublishOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - npmDir: "npm", - tagStyle: "lerna", - ghRelease: true, - skipOptionalPublish: false, - dryRun: false, - ...options - }; -} - -//#endregion -//#region src/def/version.ts -var BaseVersionCommand = class extends clipanion.Command { - static paths = [["version"]]; - static usage = clipanion.Command.Usage({ description: "Update version in created npm packages" }); - cwd = clipanion.Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = clipanion.Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = clipanion.Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - npmDir = clipanion.Option.String("--npm-dir", "npm", { description: "Path to the folder where the npm packages put" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir - }; - } -}; -function applyDefaultVersionOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - npmDir: "npm", - ...options - }; -} - -//#endregion -//#region src/api/version.ts -const debug$4 = debugFactory("version"); -async function version(userOptions) { - const options = applyDefaultVersionOptions(userOptions); - const config = await readNapiConfig((0, node_path.resolve)(options.cwd, options.packageJsonPath), options.configPath ? (0, node_path.resolve)(options.cwd, options.configPath) : void 0); - for (const target of config.targets) { - const pkgDir = (0, node_path.resolve)(options.cwd, options.npmDir, target.platformArchABI); - debug$4(`Update version to %i in [%i]`, config.packageJson.version, pkgDir); - await updatePackageJson((0, node_path.join)(pkgDir, "package.json"), { version: config.packageJson.version }); - } -} - -//#endregion -//#region src/api/pre-publish.ts -const debug$3 = debugFactory("pre-publish"); -async function prePublish(userOptions) { - debug$3("Receive pre-publish options:"); - debug$3(" %O", userOptions); - const options = applyDefaultPrePublishOptions(userOptions); - const packageJsonPath = (0, node_path.resolve)(options.cwd, options.packageJsonPath); - const { packageJson, targets, packageName, binaryName, npmClient } = await readNapiConfig(packageJsonPath, options.configPath ? (0, node_path.resolve)(options.cwd, options.configPath) : void 0); - async function createGhRelease(packageName$1, version$2) { - if (!options.ghRelease) return { - owner: null, - repo: null, - pkgInfo: { - name: null, - version: null, - tag: null - } - }; - const { repo: repo$1, owner: owner$1, pkgInfo: pkgInfo$1, octokit: octokit$1 } = getRepoInfo(packageName$1, version$2); - if (!repo$1 || !owner$1) return { - owner: null, - repo: null, - pkgInfo: { - name: null, - version: null, - tag: null - } - }; - if (!options.dryRun) try { - await octokit$1.repos.createRelease({ - owner: owner$1, - repo: repo$1, - tag_name: pkgInfo$1.tag, - name: options.ghReleaseName, - prerelease: version$2.includes("alpha") || version$2.includes("beta") || version$2.includes("rc") - }); - } catch (e) { - debug$3(`Params: ${JSON.stringify({ - owner: owner$1, - repo: repo$1, - tag_name: pkgInfo$1.tag - }, null, 2)}`); - console.error(e); - } - return { - owner: owner$1, - repo: repo$1, - pkgInfo: pkgInfo$1, - octokit: octokit$1 - }; - } - function getRepoInfo(packageName$1, version$2) { - const headCommit = (0, node_child_process.execSync)("git log -1 --pretty=%B", { encoding: "utf-8" }).trim(); - const { GITHUB_REPOSITORY } = process.env; - if (!GITHUB_REPOSITORY) return { - owner: null, - repo: null, - pkgInfo: { - name: null, - version: null, - tag: null - } - }; - debug$3(`Github repository: ${GITHUB_REPOSITORY}`); - const [owner$1, repo$1] = GITHUB_REPOSITORY.split("/"); - const octokit$1 = new __octokit_rest.Octokit({ auth: process.env.GITHUB_TOKEN }); - let pkgInfo$1; - if (options.tagStyle === "lerna") { - pkgInfo$1 = headCommit.split("\n").map((line) => line.trim()).filter((line, index) => line.length && index).map((line) => line.substring(2)).map(parseTag).find((pkgInfo$2) => pkgInfo$2.name === packageName$1); - if (!pkgInfo$1) throw new TypeError(`No release commit found with ${packageName$1}, original commit info: ${headCommit}`); - } else pkgInfo$1 = { - tag: `v${version$2}`, - version: version$2, - name: packageName$1 - }; - return { - owner: owner$1, - repo: repo$1, - pkgInfo: pkgInfo$1, - octokit: octokit$1 - }; - } - if (!options.dryRun) { - await version(userOptions); - await updatePackageJson(packageJsonPath, { optionalDependencies: targets.reduce((deps, target) => { - deps[`${packageName}-${target.platformArchABI}`] = packageJson.version; - return deps; - }, {}) }); - } - const { owner, repo, pkgInfo, octokit } = options.ghReleaseId ? getRepoInfo(packageName, packageJson.version) : await createGhRelease(packageName, packageJson.version); - for (const target of targets) { - const pkgDir = (0, node_path.resolve)(options.cwd, options.npmDir, `${target.platformArchABI}`); - const ext = target.platform === "wasi" || target.platform === "wasm" ? "wasm" : "node"; - const filename = `${binaryName}.${target.platformArchABI}.${ext}`; - const dstPath = (0, node_path.join)(pkgDir, filename); - if (!options.dryRun) { - if (!(0, node_fs.existsSync)(dstPath)) { - debug$3.warn(`%s doesn't exist`, dstPath); - continue; - } - if (!options.skipOptionalPublish) try { - const output = (0, node_child_process.execSync)(`${npmClient} publish`, { - cwd: pkgDir, - env: process.env, - stdio: "pipe" - }); - process.stdout.write(output); - } catch (e) { - if (e instanceof Error && e.message.includes("You cannot publish over the previously published versions")) { - console.info(e.message); - debug$3.warn(`${pkgDir} has been published, skipping`); - } else throw e; - } - if (options.ghRelease && repo && owner) { - debug$3.info(`Creating GitHub release ${pkgInfo.tag}`); - try { - const releaseId = options.ghReleaseId ? Number(options.ghReleaseId) : (await octokit.repos.getReleaseByTag({ - repo, - owner, - tag: pkgInfo.tag - })).data.id; - const dstFileStats = (0, node_fs.statSync)(dstPath); - const assetInfo = await octokit.repos.uploadReleaseAsset({ - owner, - repo, - name: filename, - release_id: releaseId, - mediaType: { format: "raw" }, - headers: { - "content-length": dstFileStats.size, - "content-type": "application/octet-stream" - }, - data: await readFileAsync(dstPath) - }); - debug$3.info(`GitHub release created`); - debug$3.info(`Download URL: %s`, assetInfo.data.browser_download_url); - } catch (e) { - debug$3.error(`Param: ${JSON.stringify({ - owner, - repo, - tag: pkgInfo.tag, - filename: dstPath - }, null, 2)}`); - debug$3.error(e); - } - } - } - } -} -function parseTag(tag) { - const segments = tag.split("@"); - const version$2 = segments.pop(); - return { - name: segments.join("@"), - version: version$2, - tag - }; -} - -//#endregion -//#region src/def/universalize.ts -var BaseUniversalizeCommand = class extends clipanion.Command { - static paths = [["universalize"]]; - static usage = clipanion.Command.Usage({ description: "Combile built binaries into one universal binary" }); - cwd = clipanion.Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = clipanion.Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = clipanion.Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - outputDir = clipanion.Option.String("--output-dir,-o", "./", { description: "Path to the folder where all built `.node` files put, same as `--output-dir` of build command" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - outputDir: this.outputDir - }; - } -}; -function applyDefaultUniversalizeOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - outputDir: "./", - ...options - }; -} - -//#endregion -//#region src/api/universalize.ts -const debug$2 = debugFactory("universalize"); -const universalizers = { darwin: (inputs, output) => { - (0, node_child_process.spawnSync)("lipo", [ - "-create", - "-output", - output, - ...inputs - ], { stdio: "inherit" }); -} }; -async function universalizeBinaries(userOptions) { - var _UniArchsByPlatform$p, _universalizers$proce; - const options = applyDefaultUniversalizeOptions(userOptions); - const config = await readNapiConfig((0, node_path.join)(options.cwd, options.packageJsonPath), options.configPath ? (0, node_path.resolve)(options.cwd, options.configPath) : void 0); - if (!config.targets.find((t) => t.platform === process.platform && t.arch === "universal")) throw new Error(`'universal' arch for platform '${process.platform}' not found in config!`); - const srcFiles = (_UniArchsByPlatform$p = UniArchsByPlatform[process.platform]) === null || _UniArchsByPlatform$p === void 0 ? void 0 : _UniArchsByPlatform$p.map((arch) => (0, node_path.resolve)(options.cwd, options.outputDir, `${config.binaryName}.${process.platform}-${arch}.node`)); - if (!srcFiles || !universalizers[process.platform]) throw new Error(`'universal' arch for platform '${process.platform}' not supported.`); - debug$2(`Looking up source binaries to combine: `); - debug$2(" %O", srcFiles); - const srcFileLookup = await Promise.all(srcFiles.map((f) => fileExists(f))); - const notFoundFiles = srcFiles.filter((_, i) => !srcFileLookup[i]); - if (notFoundFiles.length) throw new Error(`Some binary files were not found: ${JSON.stringify(notFoundFiles)}`); - const output = (0, node_path.resolve)(options.cwd, options.outputDir, `${config.binaryName}.${process.platform}-universal.node`); - (_universalizers$proce = universalizers[process.platform]) === null || _universalizers$proce === void 0 || _universalizers$proce.call(universalizers, srcFiles, output); - debug$2(`Produced universal binary: ${output}`); -} - -//#endregion -//#region src/commands/artifacts.ts -var ArtifactsCommand = class extends BaseArtifactsCommand { - static usage = clipanion.Command.Usage({ - description: "Copy artifacts from Github Actions into specified dir", - examples: [["$0 artifacts --output-dir ./artifacts --dist ./npm", `Copy [binaryName].[platform].node under current dir(.) into packages under npm dir. -e.g: index.linux-x64-gnu.node --> ./npm/linux-x64-gnu/index.linux-x64-gnu.node`]] - }); - static paths = [["artifacts"]]; - async execute() { - await collectArtifacts(this.getOptions()); - } -}; - -//#endregion -//#region src/def/build.ts -var BaseBuildCommand = class extends clipanion.Command { - static paths = [["build"]]; - static usage = clipanion.Command.Usage({ description: "Build the NAPI-RS project" }); - target = clipanion.Option.String("--target,-t", { description: "Build for the target triple, bypassed to `cargo build --target`" }); - cwd = clipanion.Option.String("--cwd", { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - manifestPath = clipanion.Option.String("--manifest-path", { description: "Path to `Cargo.toml`" }); - configPath = clipanion.Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = clipanion.Option.String("--package-json-path", { description: "Path to `package.json`" }); - targetDir = clipanion.Option.String("--target-dir", { description: "Directory for all crate generated artifacts, see `cargo build --target-dir`" }); - outputDir = clipanion.Option.String("--output-dir,-o", { description: "Path to where all the built files would be put. Default to the crate folder" }); - platform = clipanion.Option.Boolean("--platform", { description: "Add platform triple to the generated nodejs binding file, eg: `[name].linux-x64-gnu.node`" }); - jsPackageName = clipanion.Option.String("--js-package-name", { description: "Package name in generated js binding file. Only works with `--platform` flag" }); - constEnum = clipanion.Option.Boolean("--const-enum", { description: "Whether generate const enum for typescript bindings" }); - jsBinding = clipanion.Option.String("--js", { description: "Path and filename of generated JS binding file. Only works with `--platform` flag. Relative to `--output-dir`." }); - noJsBinding = clipanion.Option.Boolean("--no-js", { description: "Whether to disable the generation JS binding file. Only works with `--platform` flag." }); - dts = clipanion.Option.String("--dts", { description: "Path and filename of generated type def file. Relative to `--output-dir`" }); - dtsHeader = clipanion.Option.String("--dts-header", { description: "Custom file header for generated type def file. Only works when `typedef` feature enabled." }); - noDtsHeader = clipanion.Option.Boolean("--no-dts-header", { description: "Whether to disable the default file header for generated type def file. Only works when `typedef` feature enabled." }); - dtsCache = clipanion.Option.Boolean("--dts-cache", true, { description: "Whether to enable the dts cache, default to true" }); - esm = clipanion.Option.Boolean("--esm", { description: "Whether to emit an ESM JS binding file instead of CJS format. Only works with `--platform` flag." }); - strip = clipanion.Option.Boolean("--strip,-s", { description: "Whether strip the library to achieve the minimum file size" }); - release = clipanion.Option.Boolean("--release,-r", { description: "Build in release mode" }); - verbose = clipanion.Option.Boolean("--verbose,-v", { description: "Verbosely log build command trace" }); - bin = clipanion.Option.String("--bin", { description: "Build only the specified binary" }); - package = clipanion.Option.String("--package,-p", { description: "Build the specified library or the one at cwd" }); - profile = clipanion.Option.String("--profile", { description: "Build artifacts with the specified profile" }); - crossCompile = clipanion.Option.Boolean("--cross-compile,-x", { description: "[experimental] cross-compile for the specified target with `cargo-xwin` on windows and `cargo-zigbuild` on other platform" }); - useCross = clipanion.Option.Boolean("--use-cross", { description: "[experimental] use [cross](https://github.com/cross-rs/cross) instead of `cargo`" }); - useNapiCross = clipanion.Option.Boolean("--use-napi-cross", { description: "[experimental] use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets." }); - watch = clipanion.Option.Boolean("--watch,-w", { description: "watch the crate changes and build continuously with `cargo-watch` crates" }); - features = clipanion.Option.Array("--features,-F", { description: "Space-separated list of features to activate" }); - allFeatures = clipanion.Option.Boolean("--all-features", { description: "Activate all available features" }); - noDefaultFeatures = clipanion.Option.Boolean("--no-default-features", { description: "Do not activate the `default` feature" }); - getOptions() { - return { - target: this.target, - cwd: this.cwd, - manifestPath: this.manifestPath, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - targetDir: this.targetDir, - outputDir: this.outputDir, - platform: this.platform, - jsPackageName: this.jsPackageName, - constEnum: this.constEnum, - jsBinding: this.jsBinding, - noJsBinding: this.noJsBinding, - dts: this.dts, - dtsHeader: this.dtsHeader, - noDtsHeader: this.noDtsHeader, - dtsCache: this.dtsCache, - esm: this.esm, - strip: this.strip, - release: this.release, - verbose: this.verbose, - bin: this.bin, - package: this.package, - profile: this.profile, - crossCompile: this.crossCompile, - useCross: this.useCross, - useNapiCross: this.useNapiCross, - watch: this.watch, - features: this.features, - allFeatures: this.allFeatures, - noDefaultFeatures: this.noDefaultFeatures - }; - } -}; - -//#endregion -//#region src/commands/build.ts -const debug$1 = debugFactory("build"); -var BuildCommand = class extends BaseBuildCommand { - pipe = clipanion.Option.String("--pipe", { description: "Pipe all outputs file to given command. e.g. `napi build --pipe \"npx prettier --write\"`" }); - cargoOptions = clipanion.Option.Rest(); - async execute() { - const { task } = await buildProject({ - ...this.getOptions(), - cargoOptions: this.cargoOptions - }); - const outputs = await task; - if (this.pipe) for (const output of outputs) { - debug$1("Piping output file to command: %s", this.pipe); - try { - (0, node_child_process.execSync)(`${this.pipe} ${output.path}`, { - stdio: "inherit", - cwd: this.cwd - }); - } catch (e) { - debug$1.error(`Failed to pipe output file ${output.path} to command`); - debug$1.error(e); - } - } - } -}; - -//#endregion -//#region src/commands/create-npm-dirs.ts -var CreateNpmDirsCommand = class extends BaseCreateNpmDirsCommand { - async execute() { - await createNpmDirs(this.getOptions()); - } -}; - -//#endregion -//#region src/commands/help.ts -/** -* A command that prints the usage of all commands. -* -* Paths: `-h`, `--help` -*/ -var HelpCommand = class extends clipanion.Command { - static paths = [[`-h`], [`--help`]]; - async execute() { - await this.context.stdout.write(this.cli.usage()); - } -}; - -//#endregion -//#region src/commands/new.ts -const debug = debugFactory("new"); -var NewCommand = class extends BaseNewCommand { - interactive = clipanion.Option.Boolean("--interactive,-i", true, { description: "Ask project basic information interactively without just using the default." }); - async execute() { - try { - await newProject(await this.fetchOptions()); - return 0; - } catch (e) { - debug("Failed to create new project"); - debug.error(e); - return 1; - } - } - async fetchOptions() { - const cmdOptions = super.getOptions(); - if (this.interactive) { - const targetPath = cmdOptions.path ? cmdOptions.path : await inquirerProjectPath(); - cmdOptions.path = targetPath; - return { - ...cmdOptions, - name: await this.fetchName(node_path.default.parse(targetPath).base), - minNodeApiVersion: await this.fetchNapiVersion(), - targets: await this.fetchTargets(), - license: await this.fetchLicense(), - enableTypeDef: await this.fetchTypeDef(), - enableGithubActions: await this.fetchGithubActions() - }; - } - return cmdOptions; - } - async fetchName(defaultName) { - return this.$$name ?? (0, __inquirer_prompts.input)({ - message: "Package name (the name field in your package.json file)", - default: defaultName - }); - } - async fetchLicense() { - return (0, __inquirer_prompts.input)({ - message: "License for open-sourced project", - default: this.license - }); - } - async fetchNapiVersion() { - return (0, __inquirer_prompts.select)({ - message: "Minimum node-api version (with node version requirement)", - loop: false, - pageSize: 10, - choices: Array.from({ length: 8 }, (_, i) => ({ - name: `napi${i + 1} (${napiEngineRequirement(i + 1)})`, - value: i + 1 - })), - default: this.minNodeApiVersion - 1 - }); - } - async fetchTargets() { - if (this.enableAllTargets) return AVAILABLE_TARGETS.concat(); - return await (0, __inquirer_prompts.checkbox)({ - loop: false, - message: "Choose target(s) your crate will be compiled to", - choices: AVAILABLE_TARGETS.map((target) => ({ - name: target, - value: target, - checked: DEFAULT_TARGETS.includes(target) - })) - }); - } - async fetchTypeDef() { - return await (0, __inquirer_prompts.confirm)({ - message: "Enable type definition auto-generation", - default: this.enableTypeDef - }); - } - async fetchGithubActions() { - return await (0, __inquirer_prompts.confirm)({ - message: "Enable Github Actions CI", - default: this.enableGithubActions - }); - } -}; -async function inquirerProjectPath() { - return (0, __inquirer_prompts.input)({ message: "Target path to create the project, relative to cwd." }).then((path$2) => { - if (!path$2) return inquirerProjectPath(); - return path$2; - }); -} - -//#endregion -//#region src/commands/pre-publish.ts -var PrePublishCommand = class extends BasePrePublishCommand { - async execute() { - await prePublish(this.getOptions()); - } -}; - -//#endregion -//#region src/commands/rename.ts -var RenameCommand = class extends BaseRenameCommand { - async execute() { - const options = this.getOptions(); - if (!options.name) options.name = await (0, __inquirer_prompts.input)({ - message: `Enter the new package name in the package.json`, - required: true - }); - if (!options.binaryName) options.binaryName = await (0, __inquirer_prompts.input)({ - message: `Enter the new binary name`, - required: true - }); - await renameProject(options); - } -}; - -//#endregion -//#region src/commands/universalize.ts -var UniversalizeCommand = class extends BaseUniversalizeCommand { - async execute() { - await universalizeBinaries(this.getOptions()); - } -}; - -//#endregion -//#region src/commands/version.ts -var VersionCommand = class extends BaseVersionCommand { - async execute() { - await version(this.getOptions()); - } -}; - -//#endregion -//#region src/index.ts -const cli = new clipanion.Cli({ - binaryName: "napi", - binaryVersion: CLI_VERSION -}); -cli.register(NewCommand); -cli.register(BuildCommand); -cli.register(CreateNpmDirsCommand); -cli.register(ArtifactsCommand); -cli.register(UniversalizeCommand); -cli.register(RenameCommand); -cli.register(PrePublishCommand); -cli.register(VersionCommand); -cli.register(HelpCommand); -/** -* -* @usage -* -* ```ts -* const cli = new NapiCli() -* -* cli.build({ -* cwd: '/path/to/your/project', -* }) -* ``` -*/ -var NapiCli = class { - artifacts = collectArtifacts; - new = newProject; - build = buildProject; - createNpmDirs = createNpmDirs; - prePublish = prePublish; - rename = renameProject; - universalize = universalizeBinaries; - version = version; -}; -function createBuildCommand(args) { - return cli.process(["build", ...args]); -} -function createArtifactsCommand(args) { - return cli.process(["artifacts", ...args]); -} -function createCreateNpmDirsCommand(args) { - return cli.process(["create-npm-dirs", ...args]); -} -function createPrePublishCommand(args) { - return cli.process(["pre-publish", ...args]); -} -function createRenameCommand(args) { - return cli.process(["rename", ...args]); -} -function createUniversalizeCommand(args) { - return cli.process(["universalize", ...args]); -} -function createVersionCommand(args) { - return cli.process(["version", ...args]); -} -function createNewCommand(args) { - return cli.process(["new", ...args]); -} - -//#endregion -exports.NapiCli = NapiCli; -exports.cli = cli; -exports.createArtifactsCommand = createArtifactsCommand; -exports.createBuildCommand = createBuildCommand; -exports.createCreateNpmDirsCommand = createCreateNpmDirsCommand; -exports.createNewCommand = createNewCommand; -exports.createPrePublishCommand = createPrePublishCommand; -exports.createRenameCommand = createRenameCommand; -exports.createUniversalizeCommand = createUniversalizeCommand; -exports.createVersionCommand = createVersionCommand; -exports.generateTypeDef = generateTypeDef; -exports.parseTriple = parseTriple; -exports.readNapiConfig = readNapiConfig; -exports.writeJsBinding = writeJsBinding; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwibmFtZXMiOlsiQ29tbWFuZCIsIk9wdGlvbiIsImRlYnVnIiwiY29sb3JzIiwicmVhZEZpbGUiLCJ3cml0ZUZpbGUiLCJ1bmxpbmsiLCJjb3B5RmlsZSIsIm1rZGlyIiwic3RhdCIsInJlYWRkaXIiLCJwYXRoIiwicGljayIsInBrZ0pzb24udmVyc2lvbiIsIlRBUkdFVF9MSU5LRVI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJDcHVUb05vZGVBcmNoOiBSZWNvcmQ8c3RyaW5nLCBOb2RlSlNBcmNoPiIsIlN5c1RvTm9kZVBsYXRmb3JtOiBSZWNvcmQ8c3RyaW5nLCBQbGF0Zm9ybT4iLCJVbmlBcmNoc0J5UGxhdGZvcm06IFBhcnRpYWw8UmVjb3JkPFBsYXRmb3JtLCBOb2RlSlNBcmNoW10+PiIsImNwdTogc3RyaW5nIiwic3lzOiBzdHJpbmciLCJhYmk6IHN0cmluZyB8IG51bGwiLCJyZXF1aXJlbWVudHM6IHN0cmluZ1tdIiwiZnMiLCJwYXRoIiwic2VwYXJhdGVkQ29uZmlnOiBVc2VyTmFwaUNvbmZpZyB8IHVuZGVmaW5lZCIsIm5hcGlDb25maWc6IE5hcGlDb25maWciLCJ0YXJnZXRzOiBzdHJpbmdbXSIsImV4cG9ydHM6IHN0cmluZ1tdIiwiZGVidWciLCJjb2xvcnMiLCJkaXIiLCJmcyIsImZzIiwiZGVidWciLCJyZXF1aXJlIiwib3B0aW9uczogUGFyc2VkQnVpbGRPcHRpb25zIiwibWV0YWRhdGE6IENhcmdvV29ya3NwYWNlTWV0YWRhdGEiLCJjcmF0ZTogQ3JhdGUiLCJjb25maWc6IE5hcGlDb25maWciLCJhbGlhczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiIsInZlcnNpb24iLCJjb2xvcnMiLCJleHBvcnRzIiwiZGVzdCIsImRpciIsInZhbHVlIiwiZXhwb3J0czogc3RyaW5nW10iLCJDb21tYW5kIiwiT3B0aW9uIiwiZGVidWciLCJta2RpckFzeW5jIiwiZGlyIiwicmF3TWtkaXJBc3luYyIsIndyaXRlRmlsZUFzeW5jIiwicmF3V3JpdGVGaWxlQXN5bmMiLCJzY29wZWRQYWNrYWdlSnNvbjogQ29tbW9uUGFja2FnZUpzb25GaWVsZHMiLCJwaWNrIiwiQ29tbWFuZCIsIk9wdGlvbiIsIiNwcmludE9iamVjdCIsIiNmb3JtYXQiLCIjaXNTaW1wbHlTZXJpYWxpemFibGUiLCJ2YWx1ZSIsIiNkYXRlRGVjbGFyYXRpb24iLCIjc3RyRGVjbGFyYXRpb24iLCIjbnVtYmVyRGVjbGFyYXRpb24iLCIjYm9vbERlY2xhcmF0aW9uIiwiI2dldFR5cGVPZkFycmF5IiwiI2FycmF5RGVjbGFyYXRpb24iLCIjaGVhZGVyR3JvdXAiLCIjcHJpbnRBc0lubGluZVZhbHVlIiwiI2RlY2xhcmF0aW9uIiwiI2hlYWRlciIsIiNhcnJheVR5cGVDYWNoZSIsIiNkb0dldFR5cGVPZkFycmF5IiwiI2lzUHJpbWl0aXZlIiwiI3ByaW50RGF0ZSIsInZhbHVlIiwiI3NvdXJjZSIsIiNwb3NpdGlvbiIsIiN3aGl0ZXNwYWNlIiwidmFsdWUiLCJ0YWJsZSIsInBhcnNlIiwiam9pbiIsIm1lcmdlIiwiZmxvYXQiLCJwYWlyIiwiaW5wdXQiLCJkaXIiLCJ3YWxrLnVwIiwiQ29tbWFuZCIsIk9wdGlvbiIsImlzTmlsIiwicGFyc2VUb21sIiwic3RyaW5naWZ5VG9tbCIsImZpbmQuZGlyIiwiZGVidWciLCJwYXRoIiwiZnMiLCJqb2JzVG9SZW1vdmU6IHN0cmluZ1tdIiwic3RhdCIsIkNvbW1hbmQiLCJPcHRpb24iLCJDb21tYW5kIiwiT3B0aW9uIiwiZGVidWciLCJkZWJ1ZyIsInBhY2thZ2VOYW1lIiwidmVyc2lvbiIsInJlcG8iLCJvd25lciIsIm9jdG9raXQiLCJwa2dJbmZvIiwiT2N0b2tpdCIsInBrZ0luZm86IFBhY2thZ2VJbmZvIHwgdW5kZWZpbmVkIiwiQ29tbWFuZCIsIk9wdGlvbiIsImRlYnVnIiwidW5pdmVyc2FsaXplcnM6IFBhcnRpYWw8XG4gIFJlY29yZDxOb2RlSlMuUGxhdGZvcm0sIChpbnB1dHM6IHN0cmluZ1tdLCBvdXRwdXQ6IHN0cmluZykgPT4gdm9pZD5cbj4iLCJDb21tYW5kIiwiQ29tbWFuZCIsIk9wdGlvbiIsImRlYnVnIiwiT3B0aW9uIiwiQ29tbWFuZCIsIk9wdGlvbiIsInRhcmdldFBhdGg6IHN0cmluZyIsInBhdGgiLCJDbGkiXSwic291cmNlcyI6WyIuLi9zcmMvZGVmL2FydGlmYWN0cy50cyIsIi4uL3NyYy91dGlscy9sb2cudHMiLCIuLi9wYWNrYWdlLmpzb24iLCIuLi9zcmMvdXRpbHMvbWlzYy50cyIsIi4uL3NyYy91dGlscy90YXJnZXQudHMiLCIuLi9zcmMvdXRpbHMvdmVyc2lvbi50cyIsIi4uL3NyYy91dGlscy9tZXRhZGF0YS50cyIsIi4uL3NyYy91dGlscy9jb25maWcudHMiLCIuLi9zcmMvdXRpbHMvY2FyZ28udHMiLCIuLi9zcmMvdXRpbHMvdHlwZWdlbi50cyIsIi4uL3NyYy91dGlscy9yZWFkLWNvbmZpZy50cyIsIi4uL3NyYy9hcGkvYXJ0aWZhY3RzLnRzIiwiLi4vc3JjL2FwaS90ZW1wbGF0ZXMvanMtYmluZGluZy50cyIsIi4uL3NyYy9hcGkvdGVtcGxhdGVzL2xvYWQtd2FzaS10ZW1wbGF0ZS50cyIsIi4uL3NyYy9hcGkvdGVtcGxhdGVzL3dhc2ktd29ya2VyLXRlbXBsYXRlLnRzIiwiLi4vc3JjL2FwaS9idWlsZC50cyIsIi4uL3NyYy9kZWYvY3JlYXRlLW5wbS1kaXJzLnRzIiwiLi4vc3JjL2FwaS9jcmVhdGUtbnBtLWRpcnMudHMiLCIuLi9zcmMvZGVmL25ldy50cyIsIi4uLy4uL25vZGVfbW9kdWxlcy9Ac3RkL3RvbWwvc3RyaW5naWZ5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc3Ivc3RkX19jb2xsZWN0aW9ucy9fdXRpbHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzci9zdGRfX2NvbGxlY3Rpb25zL2RlZXBfbWVyZ2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHN0ZC90b21sL19wYXJzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHN0ZC90b21sL3BhcnNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2VtcGF0aGljL3Jlc29sdmUubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2VtcGF0aGljL3dhbGsubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2VtcGF0aGljL2ZpbmQubWpzIiwiLi4vc3JjL2RlZi9yZW5hbWUudHMiLCIuLi9zcmMvYXBpL3JlbmFtZS50cyIsIi4uL3NyYy9hcGkvbmV3LnRzIiwiLi4vc3JjL2RlZi9wcmUtcHVibGlzaC50cyIsIi4uL3NyYy9kZWYvdmVyc2lvbi50cyIsIi4uL3NyYy9hcGkvdmVyc2lvbi50cyIsIi4uL3NyYy9hcGkvcHJlLXB1Ymxpc2gudHMiLCIuLi9zcmMvZGVmL3VuaXZlcnNhbGl6ZS50cyIsIi4uL3NyYy9hcGkvdW5pdmVyc2FsaXplLnRzIiwiLi4vc3JjL2NvbW1hbmRzL2FydGlmYWN0cy50cyIsIi4uL3NyYy9kZWYvYnVpbGQudHMiLCIuLi9zcmMvY29tbWFuZHMvYnVpbGQudHMiLCIuLi9zcmMvY29tbWFuZHMvY3JlYXRlLW5wbS1kaXJzLnRzIiwiLi4vc3JjL2NvbW1hbmRzL2hlbHAudHMiLCIuLi9zcmMvY29tbWFuZHMvbmV3LnRzIiwiLi4vc3JjL2NvbW1hbmRzL3ByZS1wdWJsaXNoLnRzIiwiLi4vc3JjL2NvbW1hbmRzL3JlbmFtZS50cyIsIi4uL3NyYy9jb21tYW5kcy91bml2ZXJzYWxpemUudHMiLCIuLi9zcmMvY29tbWFuZHMvdmVyc2lvbi50cyIsIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGNvZGVnZW4vaW5kZXgudHNcbi8vIERvIG5vdCBlZGl0IHRoaXMgZmlsZSBtYW51YWxseVxuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUFydGlmYWN0c0NvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW1snYXJ0aWZhY3RzJ11dXG5cbiAgc3RhdGljIHVzYWdlID0gQ29tbWFuZC5Vc2FnZSh7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnQ29weSBhcnRpZmFjdHMgZnJvbSBHaXRodWIgQWN0aW9ucyBpbnRvIG5wbSBwYWNrYWdlcyBhbmQgcmVhZHkgdG8gcHVibGlzaCcsXG4gIH0pXG5cbiAgY3dkID0gT3B0aW9uLlN0cmluZygnLS1jd2QnLCBwcm9jZXNzLmN3ZCgpLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoJyxcbiAgfSlcblxuICBjb25maWdQYXRoPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1jb25maWctcGF0aCwtYycsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGUnLFxuICB9KVxuXG4gIHBhY2thZ2VKc29uUGF0aCA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZS1qc29uLXBhdGgnLCAncGFja2FnZS5qc29uJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgcGFja2FnZS5qc29uYCcsXG4gIH0pXG5cbiAgb3V0cHV0RGlyID0gT3B0aW9uLlN0cmluZygnLS1vdXRwdXQtZGlyLC1vLC1kJywgJy4vYXJ0aWZhY3RzJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1BhdGggdG8gdGhlIGZvbGRlciB3aGVyZSBhbGwgYnVpbHQgYC5ub2RlYCBmaWxlcyBwdXQsIHNhbWUgYXMgYC0tb3V0cHV0LWRpcmAgb2YgYnVpbGQgY29tbWFuZCcsXG4gIH0pXG5cbiAgbnBtRGlyID0gT3B0aW9uLlN0cmluZygnLS1ucG0tZGlyJywgJ25wbScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dCcsXG4gIH0pXG5cbiAgYnVpbGRPdXRwdXREaXI/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWJ1aWxkLW91dHB1dC1kaXInLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnUGF0aCB0byB0aGUgYnVpbGQgb3V0cHV0IGRpciwgb25seSBuZWVkZWQgd2hlbiB0YXJnZXRzIGNvbnRhaW5zIGB3YXNtMzItd2FzaS0qYCcsXG4gIH0pXG5cbiAgZ2V0T3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3dkOiB0aGlzLmN3ZCxcbiAgICAgIGNvbmZpZ1BhdGg6IHRoaXMuY29uZmlnUGF0aCxcbiAgICAgIHBhY2thZ2VKc29uUGF0aDogdGhpcy5wYWNrYWdlSnNvblBhdGgsXG4gICAgICBvdXRwdXREaXI6IHRoaXMub3V0cHV0RGlyLFxuICAgICAgbnBtRGlyOiB0aGlzLm5wbURpcixcbiAgICAgIGJ1aWxkT3V0cHV0RGlyOiB0aGlzLmJ1aWxkT3V0cHV0RGlyLFxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENvcHkgYXJ0aWZhY3RzIGZyb20gR2l0aHViIEFjdGlvbnMgaW50byBucG0gcGFja2FnZXMgYW5kIHJlYWR5IHRvIHB1Ymxpc2hcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcnRpZmFjdHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICBjd2Q/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICpcbiAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICovXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIGFsbCBidWlsdCBgLm5vZGVgIGZpbGVzIHB1dCwgc2FtZSBhcyBgLS1vdXRwdXQtZGlyYCBvZiBidWlsZCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0ICcuL2FydGlmYWN0cydcbiAgICovXG4gIG91dHB1dERpcj86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBucG0gcGFja2FnZXMgcHV0XG4gICAqXG4gICAqIEBkZWZhdWx0ICducG0nXG4gICAqL1xuICBucG1EaXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGJ1aWxkIG91dHB1dCBkaXIsIG9ubHkgbmVlZGVkIHdoZW4gdGFyZ2V0cyBjb250YWlucyBgd2FzbTMyLXdhc2ktKmBcbiAgICovXG4gIGJ1aWxkT3V0cHV0RGlyPzogc3RyaW5nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHRBcnRpZmFjdHNPcHRpb25zKG9wdGlvbnM6IEFydGlmYWN0c09wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgcGFja2FnZUpzb25QYXRoOiAncGFja2FnZS5qc29uJyxcbiAgICBvdXRwdXREaXI6ICcuL2FydGlmYWN0cycsXG4gICAgbnBtRGlyOiAnbnBtJyxcbiAgICAuLi5vcHRpb25zLFxuICB9XG59XG4iLCJpbXBvcnQgKiBhcyBjb2xvcnMgZnJvbSAnY29sb3JldHRlJ1xuaW1wb3J0IHsgY3JlYXRlRGVidWcgfSBmcm9tICdvYnVnJ1xuXG5kZWNsYXJlIG1vZHVsZSAnb2J1Zycge1xuICBpbnRlcmZhY2UgRGVidWdnZXIge1xuICAgIGluZm86IHR5cGVvZiBjb25zb2xlLmVycm9yXG4gICAgd2FybjogdHlwZW9mIGNvbnNvbGUuZXJyb3JcbiAgICBlcnJvcjogdHlwZW9mIGNvbnNvbGUuZXJyb3JcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZGVidWdGYWN0b3J5ID0gKG5hbWVzcGFjZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGRlYnVnID0gY3JlYXRlRGVidWcoYG5hcGk6JHtuYW1lc3BhY2V9YCwge1xuICAgIGZvcm1hdHRlcnM6IHtcbiAgICAgIC8vIGRlYnVnKCclaScsICdUaGlzIGlzIGFuIGluZm8nKVxuICAgICAgaSh2KSB7XG4gICAgICAgIHJldHVybiBjb2xvcnMuZ3JlZW4odilcbiAgICAgIH0sXG4gICAgfSxcbiAgfSlcblxuICBkZWJ1Zy5pbmZvID0gKC4uLmFyZ3M6IGFueVtdKSA9PlxuICAgIGNvbnNvbGUuZXJyb3IoY29sb3JzLmJsYWNrKGNvbG9ycy5iZ0dyZWVuKCcgSU5GTyAnKSksIC4uLmFyZ3MpXG4gIGRlYnVnLndhcm4gPSAoLi4uYXJnczogYW55W10pID0+XG4gICAgY29uc29sZS5lcnJvcihjb2xvcnMuYmxhY2soY29sb3JzLmJnWWVsbG93KCcgV0FSTklORyAnKSksIC4uLmFyZ3MpXG4gIGRlYnVnLmVycm9yID0gKC4uLmFyZ3M6IGFueVtdKSA9PlxuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBjb2xvcnMud2hpdGUoY29sb3JzLmJnUmVkKCcgRVJST1IgJykpLFxuICAgICAgLi4uYXJncy5tYXAoKGFyZykgPT5cbiAgICAgICAgYXJnIGluc3RhbmNlb2YgRXJyb3IgPyAoYXJnLnN0YWNrID8/IGFyZy5tZXNzYWdlKSA6IGFyZyxcbiAgICAgICksXG4gICAgKVxuXG4gIHJldHVybiBkZWJ1Z1xufVxuZXhwb3J0IGNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCd1dGlscycpXG4iLCJ7XG4gIFwibmFtZVwiOiBcIkBuYXBpLXJzL2NsaVwiLFxuICBcInZlcnNpb25cIjogXCIzLjUuMVwiLFxuICBcImRlc2NyaXB0aW9uXCI6IFwiQ2xpIHRvb2xzIGZvciBuYXBpLXJzXCIsXG4gIFwiYXV0aG9yXCI6IFwiTG9uZ1lpbmFuIDxseW53ZWtsbUBnbWFpbC5jb20+XCIsXG4gIFwiaG9tZXBhZ2VcIjogXCJodHRwczovL25hcGkucnMvXCIsXG4gIFwibGljZW5zZVwiOiBcIk1JVFwiLFxuICBcInR5cGVcIjogXCJtb2R1bGVcIixcbiAgXCJlbmdpbmVzXCI6IHtcbiAgICBcIm5vZGVcIjogXCI+PSAxNlwiXG4gIH0sXG4gIFwiYmluXCI6IHtcbiAgICBcIm5hcGlcIjogXCIuL2Rpc3QvY2xpLmpzXCIsXG4gICAgXCJuYXBpLXJhd1wiOiBcIi4vY2xpLm1qc1wiXG4gIH0sXG4gIFwibWFpblwiOiBcIi4vZGlzdC9pbmRleC5janNcIixcbiAgXCJtb2R1bGVcIjogXCIuL2Rpc3QvaW5kZXguanNcIixcbiAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLnRzXCIsXG4gIFwiZXhwb3J0c1wiOiB7XG4gICAgXCIuXCI6IHtcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvaW5kZXguY2pzXCJcbiAgICB9LFxuICAgIFwiLi9wYWNrYWdlLmpzb25cIjogXCIuL3BhY2thZ2UuanNvblwiXG4gIH0sXG4gIFwiZmlsZXNcIjogW1xuICAgIFwiZGlzdFwiLFxuICAgIFwic3JjXCIsXG4gICAgXCIhX190ZXN0c19fXCJcbiAgXSxcbiAgXCJrZXl3b3Jkc1wiOiBbXG4gICAgXCJjbGlcIixcbiAgICBcInJ1c3RcIixcbiAgICBcIm5hcGlcIixcbiAgICBcIm4tYXBpXCIsXG4gICAgXCJub2RlLWFwaVwiLFxuICAgIFwibm9kZS1hZGRvblwiLFxuICAgIFwibmVvblwiXG4gIF0sXG4gIFwibWFpbnRhaW5lcnNcIjogW1xuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkxvbmdZaW5hblwiLFxuICAgICAgXCJlbWFpbFwiOiBcImx5bndla2xtQGdtYWlsLmNvbVwiLFxuICAgICAgXCJob21lcGFnZVwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9Ccm9vb29vb2tseW5cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiZm9yZWhhbG9cIixcbiAgICAgIFwiaG9tZXBhZ2VcIjogXCJodHRwczovL2dpdGh1Yi5jb20vZm9yZWhhbG9cIlxuICAgIH1cbiAgXSxcbiAgXCJyZXBvc2l0b3J5XCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRcIixcbiAgICBcInVybFwiOiBcImdpdCtodHRwczovL2dpdGh1Yi5jb20vbmFwaS1ycy9uYXBpLXJzLmdpdFwiXG4gIH0sXG4gIFwicHVibGlzaENvbmZpZ1wiOiB7XG4gICAgXCJyZWdpc3RyeVwiOiBcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL1wiLFxuICAgIFwiYWNjZXNzXCI6IFwicHVibGljXCJcbiAgfSxcbiAgXCJidWdzXCI6IHtcbiAgICBcInVybFwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9uYXBpLXJzL25hcGktcnMvaXNzdWVzXCJcbiAgfSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGlucXVpcmVyL3Byb21wdHNcIjogXCJeOC4wLjBcIixcbiAgICBcIkBuYXBpLXJzL2Nyb3NzLXRvb2xjaGFpblwiOiBcIl4xLjAuM1wiLFxuICAgIFwiQG5hcGktcnMvd2FzbS10b29sc1wiOiBcIl4xLjAuMVwiLFxuICAgIFwiQG9jdG9raXQvcmVzdFwiOiBcIl4yMi4wLjFcIixcbiAgICBcImNsaXBhbmlvblwiOiBcIl40LjAuMC1yYy40XCIsXG4gICAgXCJjb2xvcmV0dGVcIjogXCJeMi4wLjIwXCIsXG4gICAgXCJlbW5hcGlcIjogXCJeMS43LjFcIixcbiAgICBcImVzLXRvb2xraXRcIjogXCJeMS40MS4wXCIsXG4gICAgXCJqcy15YW1sXCI6IFwiXjQuMS4wXCIsXG4gICAgXCJvYnVnXCI6IFwiXjIuMC4wXCIsXG4gICAgXCJzZW12ZXJcIjogXCJeNy43LjNcIixcbiAgICBcInR5cGFuaW9uXCI6IFwiXjMuMTQuMFwiXG4gIH0sXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBlbW5hcGkvcnVudGltZVwiOiBcIl4xLjcuMVwiLFxuICAgIFwiQG94Yy1ub2RlL2NvcmVcIjogXCJeMC4wLjM1XCIsXG4gICAgXCJAc3RkL3RvbWxcIjogXCJucG06QGpzci9zdGRfX3RvbWxAXjEuMC4xMVwiLFxuICAgIFwiQHR5cGVzL2lucXVpcmVyXCI6IFwiXjkuMC45XCIsXG4gICAgXCJAdHlwZXMvanMteWFtbFwiOiBcIl40LjAuOVwiLFxuICAgIFwiQHR5cGVzL25vZGVcIjogXCJeMjQuMTAuMFwiLFxuICAgIFwiQHR5cGVzL3NlbXZlclwiOiBcIl43LjcuMVwiLFxuICAgIFwiYXZhXCI6IFwiXjYuNC4xXCIsXG4gICAgXCJlbXBhdGhpY1wiOiBcIl4yLjAuMFwiLFxuICAgIFwiZW52LXBhdGhzXCI6IFwiXjMuMC4wXCIsXG4gICAgXCJwcmV0dGllclwiOiBcIl4zLjYuMlwiLFxuICAgIFwidHNkb3duXCI6IFwiXjAuMTguMFwiLFxuICAgIFwidHNsaWJcIjogXCJeMi44LjFcIixcbiAgICBcInR5cGVzY3JpcHRcIjogXCJeNS45LjNcIlxuICB9LFxuICBcInBlZXJEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGVtbmFwaS9ydW50aW1lXCI6IFwiXjEuNy4xXCJcbiAgfSxcbiAgXCJwZWVyRGVwZW5kZW5jaWVzTWV0YVwiOiB7XG4gICAgXCJAZW1uYXBpL3J1bnRpbWVcIjoge1xuICAgICAgXCJvcHRpb25hbFwiOiB0cnVlXG4gICAgfVxuICB9LFxuICBcImZ1bmRpbmdcIjoge1xuICAgIFwidHlwZVwiOiBcImdpdGh1YlwiLFxuICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL0Jyb29vb29va2x5blwiXG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJjb2RlZ2VuXCI6IFwibm9kZSAtLWltcG9ydCBAb3hjLW5vZGUvY29yZS9yZWdpc3RlciAuL2NvZGVnZW4vaW5kZXgudHNcIixcbiAgICBcImJ1aWxkXCI6IFwidHNkb3duXCIsXG4gICAgXCJ0ZXN0XCI6IFwibm9kZSAtLWltcG9ydCBAb3hjLW5vZGUvY29yZS9yZWdpc3RlciAuLi9ub2RlX21vZHVsZXMvYXZhL2VudHJ5cG9pbnRzL2NsaS5tanNcIlxuICB9LFxuICBcImF2YVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IHtcbiAgICAgIFwidHNcIjogXCJtb2R1bGVcIlxuICAgIH0sXG4gICAgXCJ0aW1lb3V0XCI6IFwiMm1cIixcbiAgICBcIndvcmtlclRocmVhZHNcIjogZmFsc2UsXG4gICAgXCJmaWxlc1wiOiBbXG4gICAgICBcIioqL19fdGVzdHNfXy8qKi8qLnNwZWMudHNcIixcbiAgICAgIFwiZTJlLyoqLyouc3BlYy50c1wiXG4gICAgXVxuICB9XG59XG4iLCJpbXBvcnQge1xuICByZWFkRmlsZSxcbiAgd3JpdGVGaWxlLFxuICB1bmxpbmssXG4gIGNvcHlGaWxlLFxuICBta2RpcixcbiAgc3RhdCxcbiAgcmVhZGRpcixcbiAgYWNjZXNzLFxufSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuXG5pbXBvcnQgcGtnSnNvbiBmcm9tICcuLi8uLi9wYWNrYWdlLmpzb24nIHdpdGggeyB0eXBlOiAnanNvbicgfVxuaW1wb3J0IHsgZGVidWcgfSBmcm9tICcuL2xvZy5qcydcblxuZXhwb3J0IGNvbnN0IHJlYWRGaWxlQXN5bmMgPSByZWFkRmlsZVxuZXhwb3J0IGNvbnN0IHdyaXRlRmlsZUFzeW5jID0gd3JpdGVGaWxlXG5leHBvcnQgY29uc3QgdW5saW5rQXN5bmMgPSB1bmxpbmtcbmV4cG9ydCBjb25zdCBjb3B5RmlsZUFzeW5jID0gY29weUZpbGVcbmV4cG9ydCBjb25zdCBta2RpckFzeW5jID0gbWtkaXJcbmV4cG9ydCBjb25zdCBzdGF0QXN5bmMgPSBzdGF0XG5leHBvcnQgY29uc3QgcmVhZGRpckFzeW5jID0gcmVhZGRpclxuXG5leHBvcnQgZnVuY3Rpb24gZmlsZUV4aXN0cyhwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGFjY2VzcyhwYXRoKS50aGVuKFxuICAgICgpID0+IHRydWUsXG4gICAgKCkgPT4gZmFsc2UsXG4gIClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRpckV4aXN0c0FzeW5jKHBhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgc3RhdEFzeW5jKHBhdGgpXG4gICAgcmV0dXJuIHN0YXRzLmlzRGlyZWN0b3J5KClcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpY2s8TywgSyBleHRlbmRzIGtleW9mIE8+KG86IE8sIC4uLmtleXM6IEtbXSk6IFBpY2s8TywgSz4ge1xuICByZXR1cm4ga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgYWNjW2tleV0gPSBvW2tleV1cbiAgICByZXR1cm4gYWNjXG4gIH0sIHt9IGFzIE8pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVQYWNrYWdlSnNvbihcbiAgcGF0aDogc3RyaW5nLFxuICBwYXJ0aWFsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSB7XG4gIGNvbnN0IGV4aXN0cyA9IGF3YWl0IGZpbGVFeGlzdHMocGF0aClcbiAgaWYgKCFleGlzdHMpIHtcbiAgICBkZWJ1ZyhgRmlsZSBub3QgZXhpc3RzICR7cGF0aH1gKVxuICAgIHJldHVyblxuICB9XG4gIGNvbnN0IG9sZCA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGVBc3luYyhwYXRoLCAndXRmOCcpKVxuICBhd2FpdCB3cml0ZUZpbGVBc3luYyhwYXRoLCBKU09OLnN0cmluZ2lmeSh7IC4uLm9sZCwgLi4ucGFydGlhbCB9LCBudWxsLCAyKSlcbn1cblxuZXhwb3J0IGNvbnN0IENMSV9WRVJTSU9OID0gcGtnSnNvbi52ZXJzaW9uXG4iLCJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcblxuZXhwb3J0IHR5cGUgUGxhdGZvcm0gPSBOb2RlSlMuUGxhdGZvcm0gfCAnd2FzbScgfCAnd2FzaScgfCAnb3Blbmhhcm1vbnknXG5cbmV4cG9ydCBjb25zdCBVTklWRVJTQUxfVEFSR0VUUyA9IHtcbiAgJ3VuaXZlcnNhbC1hcHBsZS1kYXJ3aW4nOiBbJ2FhcmNoNjQtYXBwbGUtZGFyd2luJywgJ3g4Nl82NC1hcHBsZS1kYXJ3aW4nXSxcbn0gYXMgY29uc3RcblxuY29uc3QgU1VCX1NZU1RFTVMgPSBuZXcgU2V0KFsnYW5kcm9pZCcsICdvaG9zJ10pXG5cbmV4cG9ydCBjb25zdCBBVkFJTEFCTEVfVEFSR0VUUyA9IFtcbiAgJ2FhcmNoNjQtYXBwbGUtZGFyd2luJyxcbiAgJ2FhcmNoNjQtbGludXgtYW5kcm9pZCcsXG4gICdhYXJjaDY0LXVua25vd24tbGludXgtZ251JyxcbiAgJ2FhcmNoNjQtdW5rbm93bi1saW51eC1tdXNsJyxcbiAgJ2FhcmNoNjQtdW5rbm93bi1saW51eC1vaG9zJyxcbiAgJ2FhcmNoNjQtcGMtd2luZG93cy1tc3ZjJyxcbiAgJ3g4Nl82NC1hcHBsZS1kYXJ3aW4nLFxuICAneDg2XzY0LXBjLXdpbmRvd3MtbXN2YycsXG4gICd4ODZfNjQtcGMtd2luZG93cy1nbnUnLFxuICAneDg2XzY0LXVua25vd24tbGludXgtZ251JyxcbiAgJ3g4Nl82NC11bmtub3duLWxpbnV4LW11c2wnLFxuICAneDg2XzY0LXVua25vd24tbGludXgtb2hvcycsXG4gICd4ODZfNjQtdW5rbm93bi1mcmVlYnNkJyxcbiAgJ2k2ODYtcGMtd2luZG93cy1tc3ZjJyxcbiAgJ2FybXY3LXVua25vd24tbGludXgtZ251ZWFiaWhmJyxcbiAgJ2FybXY3LXVua25vd24tbGludXgtbXVzbGVhYmloZicsXG4gICdhcm12Ny1saW51eC1hbmRyb2lkZWFiaScsXG4gICd1bml2ZXJzYWwtYXBwbGUtZGFyd2luJyxcbiAgJ2xvb25nYXJjaDY0LXVua25vd24tbGludXgtZ251JyxcbiAgJ3Jpc2N2NjRnYy11bmtub3duLWxpbnV4LWdudScsXG4gICdwb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudScsXG4gICdzMzkweC11bmtub3duLWxpbnV4LWdudScsXG4gICd3YXNtMzItd2FzaS1wcmV2aWV3MS10aHJlYWRzJyxcbiAgJ3dhc20zMi13YXNpcDEtdGhyZWFkcycsXG5dIGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIFRhcmdldFRyaXBsZSA9ICh0eXBlb2YgQVZBSUxBQkxFX1RBUkdFVFMpW251bWJlcl1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVEFSR0VUUyA9IFtcbiAgJ3g4Nl82NC1hcHBsZS1kYXJ3aW4nLFxuICAnYWFyY2g2NC1hcHBsZS1kYXJ3aW4nLFxuICAneDg2XzY0LXBjLXdpbmRvd3MtbXN2YycsXG4gICd4ODZfNjQtdW5rbm93bi1saW51eC1nbnUnLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgVEFSR0VUX0xJTktFUjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ2FhcmNoNjQtdW5rbm93bi1saW51eC1tdXNsJzogJ2FhcmNoNjQtbGludXgtbXVzbC1nY2MnLFxuICAvLyBUT0RPOiBTd2l0Y2ggdG8gbG9vbmdhcmNoNjQtbGludXgtZ251LWdjYyB3aGVuIGF2YWlsYWJsZVxuICAnbG9vbmdhcmNoNjQtdW5rbm93bi1saW51eC1nbnUnOiAnbG9vbmdhcmNoNjQtbGludXgtZ251LWdjYy0xMycsXG4gICdyaXNjdjY0Z2MtdW5rbm93bi1saW51eC1nbnUnOiAncmlzY3Y2NC1saW51eC1nbnUtZ2NjJyxcbiAgJ3Bvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251JzogJ3Bvd2VycGM2NGxlLWxpbnV4LWdudS1nY2MnLFxuICAnczM5MHgtdW5rbm93bi1saW51eC1nbnUnOiAnczM5MHgtbGludXgtZ251LWdjYycsXG59XG5cbi8vIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvcHJvY2Vzcy5odG1sI3Byb2Nlc3NfcHJvY2Vzc19hcmNoXG50eXBlIE5vZGVKU0FyY2ggPVxuICB8ICdhcm0nXG4gIHwgJ2FybTY0J1xuICB8ICdpYTMyJ1xuICB8ICdsb29uZzY0J1xuICB8ICdtaXBzJ1xuICB8ICdtaXBzZWwnXG4gIHwgJ3BwYydcbiAgfCAncHBjNjQnXG4gIHwgJ3Jpc2N2NjQnXG4gIHwgJ3MzOTAnXG4gIHwgJ3MzOTB4J1xuICB8ICd4MzInXG4gIHwgJ3g2NCdcbiAgfCAndW5pdmVyc2FsJ1xuICB8ICd3YXNtMzInXG5cbmNvbnN0IENwdVRvTm9kZUFyY2g6IFJlY29yZDxzdHJpbmcsIE5vZGVKU0FyY2g+ID0ge1xuICB4ODZfNjQ6ICd4NjQnLFxuICBhYXJjaDY0OiAnYXJtNjQnLFxuICBpNjg2OiAnaWEzMicsXG4gIGFybXY3OiAnYXJtJyxcbiAgbG9vbmdhcmNoNjQ6ICdsb29uZzY0JyxcbiAgcmlzY3Y2NGdjOiAncmlzY3Y2NCcsXG4gIHBvd2VycGM2NGxlOiAncHBjNjQnLFxufVxuXG5leHBvcnQgY29uc3QgTm9kZUFyY2hUb0NwdTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgeDY0OiAneDg2XzY0JyxcbiAgYXJtNjQ6ICdhYXJjaDY0JyxcbiAgaWEzMjogJ2k2ODYnLFxuICBhcm06ICdhcm12NycsXG4gIGxvb25nNjQ6ICdsb29uZ2FyY2g2NCcsXG4gIHJpc2N2NjQ6ICdyaXNjdjY0Z2MnLFxuICBwcGM2NDogJ3Bvd2VycGM2NGxlJyxcbn1cblxuY29uc3QgU3lzVG9Ob2RlUGxhdGZvcm06IFJlY29yZDxzdHJpbmcsIFBsYXRmb3JtPiA9IHtcbiAgbGludXg6ICdsaW51eCcsXG4gIGZyZWVic2Q6ICdmcmVlYnNkJyxcbiAgZGFyd2luOiAnZGFyd2luJyxcbiAgd2luZG93czogJ3dpbjMyJyxcbiAgb2hvczogJ29wZW5oYXJtb255Jyxcbn1cblxuZXhwb3J0IGNvbnN0IFVuaUFyY2hzQnlQbGF0Zm9ybTogUGFydGlhbDxSZWNvcmQ8UGxhdGZvcm0sIE5vZGVKU0FyY2hbXT4+ID0ge1xuICBkYXJ3aW46IFsneDY0JywgJ2FybTY0J10sXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0IHtcbiAgdHJpcGxlOiBzdHJpbmdcbiAgcGxhdGZvcm1BcmNoQUJJOiBzdHJpbmdcbiAgcGxhdGZvcm06IFBsYXRmb3JtXG4gIGFyY2g6IE5vZGVKU0FyY2hcbiAgYWJpOiBzdHJpbmcgfCBudWxsXG59XG5cbi8qKlxuICogQSB0cmlwbGUgaXMgYSBzcGVjaWZpYyBmb3JtYXQgZm9yIHNwZWNpZnlpbmcgYSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuICogVHJpcGxlcyBtYXkgYmUgcmVmZXJyZWQgdG8gYXMgYSB0YXJnZXQgdHJpcGxlIHdoaWNoIGlzIHRoZSBhcmNoaXRlY3R1cmUgZm9yIHRoZSBhcnRpZmFjdCBwcm9kdWNlZCwgYW5kIHRoZSBob3N0IHRyaXBsZSB3aGljaCBpcyB0aGUgYXJjaGl0ZWN0dXJlIHRoYXQgdGhlIGNvbXBpbGVyIGlzIHJ1bm5pbmcgb24uXG4gKiBUaGUgZ2VuZXJhbCBmb3JtYXQgb2YgdGhlIHRyaXBsZSBpcyBgPGFyY2g+PHN1Yj4tPHZlbmRvcj4tPHN5cz4tPGFiaT5gIHdoZXJlOlxuICogICAtIGBhcmNoYCA9IFRoZSBiYXNlIENQVSBhcmNoaXRlY3R1cmUsIGZvciBleGFtcGxlIGB4ODZfNjRgLCBgaTY4NmAsIGBhcm1gLCBgdGh1bWJgLCBgbWlwc2AsIGV0Yy5cbiAqICAgLSBgc3ViYCA9IFRoZSBDUFUgc3ViLWFyY2hpdGVjdHVyZSwgZm9yIGV4YW1wbGUgYGFybWAgaGFzIGB2N2AsIGB2N3NgLCBgdjV0ZWAsIGV0Yy5cbiAqICAgLSBgdmVuZG9yYCA9IFRoZSB2ZW5kb3IsIGZvciBleGFtcGxlIGB1bmtub3duYCwgYGFwcGxlYCwgYHBjYCwgYG52aWRpYWAsIGV0Yy5cbiAqICAgLSBgc3lzYCA9IFRoZSBzeXN0ZW0gbmFtZSwgZm9yIGV4YW1wbGUgYGxpbnV4YCwgYHdpbmRvd3NgLCBgZGFyd2luYCwgZXRjLiBub25lIGlzIHR5cGljYWxseSB1c2VkIGZvciBiYXJlLW1ldGFsIHdpdGhvdXQgYW4gT1MuXG4gKiAgIC0gYGFiaWAgPSBUaGUgQUJJLCBmb3IgZXhhbXBsZSBgZ251YCwgYGFuZHJvaWRgLCBgZWFiaWAsIGV0Yy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVHJpcGxlKHJhd1RyaXBsZTogc3RyaW5nKTogVGFyZ2V0IHtcbiAgaWYgKFxuICAgIHJhd1RyaXBsZSA9PT0gJ3dhc20zMi13YXNpJyB8fFxuICAgIHJhd1RyaXBsZSA9PT0gJ3dhc20zMi13YXNpLXByZXZpZXcxLXRocmVhZHMnIHx8XG4gICAgcmF3VHJpcGxlLnN0YXJ0c1dpdGgoJ3dhc20zMi13YXNpcCcpXG4gICkge1xuICAgIHJldHVybiB7XG4gICAgICB0cmlwbGU6IHJhd1RyaXBsZSxcbiAgICAgIHBsYXRmb3JtQXJjaEFCSTogJ3dhc20zMi13YXNpJyxcbiAgICAgIHBsYXRmb3JtOiAnd2FzaScsXG4gICAgICBhcmNoOiAnd2FzbTMyJyxcbiAgICAgIGFiaTogJ3dhc2knLFxuICAgIH1cbiAgfVxuICBjb25zdCB0cmlwbGUgPSByYXdUcmlwbGUuZW5kc1dpdGgoJ2VhYmknKVxuICAgID8gYCR7cmF3VHJpcGxlLnNsaWNlKDAsIC00KX0tZWFiaWBcbiAgICA6IHJhd1RyaXBsZVxuICBjb25zdCB0cmlwbGVzID0gdHJpcGxlLnNwbGl0KCctJylcbiAgbGV0IGNwdTogc3RyaW5nXG4gIGxldCBzeXM6IHN0cmluZ1xuICBsZXQgYWJpOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICBpZiAodHJpcGxlcy5sZW5ndGggPT09IDIpIHtcbiAgICAvLyBhYXJjaDY0LWZ1Y2hzaWFcbiAgICAvLyBeIGNwdSAgIF4gc3lzXG4gICAgO1tjcHUsIHN5c10gPSB0cmlwbGVzXG4gIH0gZWxzZSB7XG4gICAgLy8gYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2xcbiAgICAvLyBeIGNwdSAgIF52ZW5kb3IgXiBzeXMgXiBhYmlcbiAgICAvLyBhYXJjaDY0LWFwcGxlLWRhcndpblxuICAgIC8vIF4gY3B1ICAgICAgICAgXiBzeXMgIChhYmkgaXMgTm9uZSlcbiAgICA7W2NwdSwgLCBzeXMsIGFiaSA9IG51bGxdID0gdHJpcGxlc1xuICB9XG5cbiAgaWYgKGFiaSAmJiBTVUJfU1lTVEVNUy5oYXMoYWJpKSkge1xuICAgIHN5cyA9IGFiaVxuICAgIGFiaSA9IG51bGxcbiAgfVxuICBjb25zdCBwbGF0Zm9ybSA9IFN5c1RvTm9kZVBsYXRmb3JtW3N5c10gPz8gKHN5cyBhcyBQbGF0Zm9ybSlcbiAgY29uc3QgYXJjaCA9IENwdVRvTm9kZUFyY2hbY3B1XSA/PyAoY3B1IGFzIE5vZGVKU0FyY2gpXG5cbiAgcmV0dXJuIHtcbiAgICB0cmlwbGU6IHJhd1RyaXBsZSxcbiAgICBwbGF0Zm9ybUFyY2hBQkk6IGFiaSA/IGAke3BsYXRmb3JtfS0ke2FyY2h9LSR7YWJpfWAgOiBgJHtwbGF0Zm9ybX0tJHthcmNofWAsXG4gICAgcGxhdGZvcm0sXG4gICAgYXJjaCxcbiAgICBhYmksXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN5c3RlbURlZmF1bHRUYXJnZXQoKTogVGFyZ2V0IHtcbiAgY29uc3QgaG9zdCA9IGV4ZWNTeW5jKGBydXN0YyAtdlZgLCB7XG4gICAgZW52OiBwcm9jZXNzLmVudixcbiAgfSlcbiAgICAudG9TdHJpbmcoJ3V0ZjgnKVxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAuZmluZCgobGluZSkgPT4gbGluZS5zdGFydHNXaXRoKCdob3N0OiAnKSlcbiAgY29uc3QgdHJpcGxlID0gaG9zdD8uc2xpY2UoJ2hvc3Q6ICcubGVuZ3RoKVxuICBpZiAoIXRyaXBsZSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYENhbiBub3QgcGFyc2UgdGFyZ2V0IHRyaXBsZSBmcm9tIGhvc3RgKVxuICB9XG4gIHJldHVybiBwYXJzZVRyaXBsZSh0cmlwbGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYXJnZXRMaW5rZXIodGFyZ2V0OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gVEFSR0VUX0xJTktFUlt0YXJnZXRdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YXJnZXRUb0VudlZhcih0YXJnZXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0YXJnZXQucmVwbGFjZSgvLS9nLCAnXycpLnRvVXBwZXJDYXNlKClcbn1cbiIsImV4cG9ydCBlbnVtIE5hcGlWZXJzaW9uIHtcbiAgTmFwaTEgPSAxLFxuICBOYXBpMixcbiAgTmFwaTMsXG4gIE5hcGk0LFxuICBOYXBpNSxcbiAgTmFwaTYsXG4gIE5hcGk3LFxuICBOYXBpOCxcbiAgTmFwaTksXG59XG5cbi8vLyBiZWNhdXNlIG5vZGUgc3VwcG9ydCBuZXcgbmFwaSB2ZXJzaW9uIGluIHNvbWUgbWlub3IgdmVyc2lvbiB1cGRhdGVzLCBzbyB3ZSBtaWdodCBtZWV0IHN1Y2ggc2l0dWF0aW9uOlxuLy8vIGBub2RlIHYxMC4yMC4wYCBzdXBwb3J0cyBgbmFwaTVgIGFuZCBgbmFwaTZgLCBidXQgYG5vZGUgdjEyLjAuMGAgb25seSBzdXBwb3J0IGBuYXBpNGAsXG4vLy8gYnkgd2hpY2gsIHdlIGNhbiBub3QgdGVsbCBkaXJlY3RseSBuYXBpIHZlcnNpb24gc3VwcG9ydGxlc3MgZnJvbSBub2RlIHZlcnNpb24gZGlyZWN0bHkuXG5jb25zdCBOQVBJX1ZFUlNJT05fTUFUUklYID0gbmV3IE1hcDxOYXBpVmVyc2lvbiwgc3RyaW5nPihbXG4gIFtOYXBpVmVyc2lvbi5OYXBpMSwgJzguNi4wIHwgOS4wLjAgfCAxMC4wLjAnXSxcbiAgW05hcGlWZXJzaW9uLk5hcGkyLCAnOC4xMC4wIHwgOS4zLjAgfCAxMC4wLjAnXSxcbiAgW05hcGlWZXJzaW9uLk5hcGkzLCAnNi4xNC4yIHwgOC4xMS4yIHwgOS4xMS4wIHwgMTAuMC4wJ10sXG4gIFtOYXBpVmVyc2lvbi5OYXBpNCwgJzEwLjE2LjAgfCAxMS44LjAgfCAxMi4wLjAnXSxcbiAgW05hcGlWZXJzaW9uLk5hcGk1LCAnMTAuMTcuMCB8IDEyLjExLjAgfCAxMy4wLjAnXSxcbiAgW05hcGlWZXJzaW9uLk5hcGk2LCAnMTAuMjAuMCB8IDEyLjE3LjAgfCAxNC4wLjAnXSxcbiAgW05hcGlWZXJzaW9uLk5hcGk3LCAnMTAuMjMuMCB8IDEyLjE5LjAgfCAxNC4xMi4wIHwgMTUuMC4wJ10sXG4gIFtOYXBpVmVyc2lvbi5OYXBpOCwgJzEyLjIyLjAgfCAxNC4xNy4wIHwgMTUuMTIuMCB8IDE2LjAuMCddLFxuICBbTmFwaVZlcnNpb24uTmFwaTksICcxOC4xNy4wIHwgMjAuMy4wIHwgMjEuMS4wJ10sXG5dKVxuXG5pbnRlcmZhY2UgTm9kZVZlcnNpb24ge1xuICBtYWpvcjogbnVtYmVyXG4gIG1pbm9yOiBudW1iZXJcbiAgcGF0Y2g6IG51bWJlclxufVxuXG5mdW5jdGlvbiBwYXJzZU5vZGVWZXJzaW9uKHY6IHN0cmluZyk6IE5vZGVWZXJzaW9uIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHYubWF0Y2goL3Y/KFswLTldKylcXC4oWzAtOV0rKVxcLihbMC05XSspL2kpXG5cbiAgaWYgKCFtYXRjaGVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG5vZGUgdmVyc2lvbiBudW1iZXI6ICcgKyB2KVxuICB9XG5cbiAgY29uc3QgWywgbWFqb3IsIG1pbm9yLCBwYXRjaF0gPSBtYXRjaGVzXG5cbiAgcmV0dXJuIHtcbiAgICBtYWpvcjogcGFyc2VJbnQobWFqb3IpLFxuICAgIG1pbm9yOiBwYXJzZUludChtaW5vciksXG4gICAgcGF0Y2g6IHBhcnNlSW50KHBhdGNoKSxcbiAgfVxufVxuXG5mdW5jdGlvbiByZXF1aXJlZE5vZGVWZXJzaW9ucyhuYXBpVmVyc2lvbjogTmFwaVZlcnNpb24pOiBOb2RlVmVyc2lvbltdIHtcbiAgY29uc3QgcmVxdWlyZW1lbnQgPSBOQVBJX1ZFUlNJT05fTUFUUklYLmdldChuYXBpVmVyc2lvbilcblxuICBpZiAoIXJlcXVpcmVtZW50KSB7XG4gICAgcmV0dXJuIFtwYXJzZU5vZGVWZXJzaW9uKCcxMC4wLjAnKV1cbiAgfVxuXG4gIHJldHVybiByZXF1aXJlbWVudC5zcGxpdCgnfCcpLm1hcChwYXJzZU5vZGVWZXJzaW9uKVxufVxuXG5mdW5jdGlvbiB0b0VuZ2luZVJlcXVpcmVtZW50KHZlcnNpb25zOiBOb2RlVmVyc2lvbltdKTogc3RyaW5nIHtcbiAgY29uc3QgcmVxdWlyZW1lbnRzOiBzdHJpbmdbXSA9IFtdXG4gIHZlcnNpb25zLmZvckVhY2goKHYsIGkpID0+IHtcbiAgICBsZXQgcmVxID0gJydcbiAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgY29uc3QgbGFzdFZlcnNpb24gPSB2ZXJzaW9uc1tpIC0gMV1cbiAgICAgIHJlcSArPSBgPCAke2xhc3RWZXJzaW9uLm1ham9yICsgMX1gXG4gICAgfVxuXG4gICAgcmVxICs9IGAke2kgPT09IDAgPyAnJyA6ICcgfHwgJ30+PSAke3YubWFqb3J9LiR7di5taW5vcn0uJHt2LnBhdGNofWBcbiAgICByZXF1aXJlbWVudHMucHVzaChyZXEpXG4gIH0pXG5cbiAgcmV0dXJuIHJlcXVpcmVtZW50cy5qb2luKCcgJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hcGlFbmdpbmVSZXF1aXJlbWVudChuYXBpVmVyc2lvbjogTmFwaVZlcnNpb24pOiBzdHJpbmcge1xuICByZXR1cm4gdG9FbmdpbmVSZXF1aXJlbWVudChyZXF1aXJlZE5vZGVWZXJzaW9ucyhuYXBpVmVyc2lvbikpXG59XG4iLCJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCBmcyBmcm9tICdub2RlOmZzJ1xuXG5leHBvcnQgdHlwZSBDcmF0ZVRhcmdldEtpbmQgPVxuICB8ICdiaW4nXG4gIHwgJ2V4YW1wbGUnXG4gIHwgJ3Rlc3QnXG4gIHwgJ2JlbmNoJ1xuICB8ICdsaWInXG4gIHwgJ3JsaWInXG4gIHwgJ2NkeWxpYidcbiAgfCAnY3VzdG9tLWJ1aWxkJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENyYXRlVGFyZ2V0IHtcbiAgbmFtZTogc3RyaW5nXG4gIGtpbmQ6IENyYXRlVGFyZ2V0S2luZFtdXG4gIGNyYXRlX3R5cGVzOiBDcmF0ZVRhcmdldEtpbmRbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyYXRlIHtcbiAgaWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgc3JjX3BhdGg6IHN0cmluZ1xuICB2ZXJzaW9uOiBzdHJpbmdcbiAgZWRpdGlvbjogc3RyaW5nXG4gIHRhcmdldHM6IENyYXRlVGFyZ2V0W11cbiAgZmVhdHVyZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPlxuICBtYW5pZmVzdF9wYXRoOiBzdHJpbmdcbiAgZGVwZW5kZW5jaWVzOiBBcnJheTx7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgc291cmNlOiBzdHJpbmdcbiAgICByZXE6IHN0cmluZ1xuICAgIGtpbmQ6IHN0cmluZyB8IG51bGxcbiAgICByZW5hbWU6IHN0cmluZyB8IG51bGxcbiAgICBvcHRpb25hbDogYm9vbGVhblxuICAgIHVzZXNfZGVmYXVsdF9mZWF0dXJlczogYm9vbGVhblxuICAgIGZlYXR1cmVzOiBzdHJpbmdbXVxuICAgIHRhcmdldDogc3RyaW5nIHwgbnVsbFxuICAgIHJlZ2lzdHJ5OiBzdHJpbmcgfCBudWxsXG4gIH0+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZ29Xb3Jrc3BhY2VNZXRhZGF0YSB7XG4gIHZlcnNpb246IG51bWJlclxuICBwYWNrYWdlczogQ3JhdGVbXVxuICB3b3Jrc3BhY2VfbWVtYmVyczogc3RyaW5nW11cbiAgdGFyZ2V0X2RpcmVjdG9yeTogc3RyaW5nXG4gIHdvcmtzcGFjZV9yb290OiBzdHJpbmdcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlTWV0YWRhdGEobWFuaWZlc3RQYXRoOiBzdHJpbmcpIHtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKG1hbmlmZXN0UGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGNyYXRlIGZvdW5kIGluIG1hbmlmZXN0OiAke21hbmlmZXN0UGF0aH1gKVxuICB9XG5cbiAgY29uc3QgY2hpbGRQcm9jZXNzID0gc3Bhd24oXG4gICAgJ2NhcmdvJyxcbiAgICBbJ21ldGFkYXRhJywgJy0tbWFuaWZlc3QtcGF0aCcsIG1hbmlmZXN0UGF0aCwgJy0tZm9ybWF0LXZlcnNpb24nLCAnMSddLFxuICAgIHsgc3RkaW86ICdwaXBlJyB9LFxuICApXG5cbiAgbGV0IHN0ZG91dCA9ICcnXG4gIGxldCBzdGRlcnIgPSAnJ1xuICBsZXQgc3RhdHVzID0gMFxuICBsZXQgZXJyb3IgPSBudWxsXG5cbiAgY2hpbGRQcm9jZXNzLnN0ZG91dC5vbignZGF0YScsIChkYXRhKSA9PiB7XG4gICAgc3Rkb3V0ICs9IGRhdGFcbiAgfSlcblxuICBjaGlsZFByb2Nlc3Muc3RkZXJyLm9uKCdkYXRhJywgKGRhdGEpID0+IHtcbiAgICBzdGRlcnIgKz0gZGF0YVxuICB9KVxuXG4gIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgY2hpbGRQcm9jZXNzLm9uKCdjbG9zZScsIChjb2RlKSA9PiB7XG4gICAgICBzdGF0dXMgPSBjb2RlID8/IDBcbiAgICAgIHJlc29sdmUoKVxuICAgIH0pXG4gIH0pXG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjYXJnbyBtZXRhZGF0YSBmYWlsZWQgdG8gcnVuJywgeyBjYXVzZTogZXJyb3IgfSlcbiAgfVxuICBpZiAoc3RhdHVzICE9PSAwKSB7XG4gICAgY29uc3Qgc2ltcGxlTWVzc2FnZSA9IGBjYXJnbyBtZXRhZGF0YSBleGl0ZWQgd2l0aCBjb2RlICR7c3RhdHVzfWBcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7c2ltcGxlTWVzc2FnZX0gYW5kIGVycm9yIG1lc3NhZ2U6XFxuXFxuJHtzdGRlcnJ9YCwge1xuICAgICAgY2F1c2U6IG5ldyBFcnJvcihzaW1wbGVNZXNzYWdlKSxcbiAgICB9KVxuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzdGRvdXQpIGFzIENhcmdvV29ya3NwYWNlTWV0YWRhdGFcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHBhcnNlIGNhcmdvIG1ldGFkYXRhIEpTT04nLCB7IGNhdXNlOiBlIH0pXG4gIH1cbn1cbiIsImltcG9ydCB7IHVuZGVybGluZSwgeWVsbG93IH0gZnJvbSAnY29sb3JldHRlJ1xuaW1wb3J0IHsgbWVyZ2UsIG9taXQgfSBmcm9tICdlcy10b29sa2l0J1xuXG5pbXBvcnQgeyBmaWxlRXhpc3RzLCByZWFkRmlsZUFzeW5jIH0gZnJvbSAnLi9taXNjLmpzJ1xuaW1wb3J0IHsgREVGQVVMVF9UQVJHRVRTLCBwYXJzZVRyaXBsZSwgdHlwZSBUYXJnZXQgfSBmcm9tICcuL3RhcmdldC5qcydcblxuZXhwb3J0IHR5cGUgVmFsdWVPZkNvbnN0QXJyYXk8VD4gPSBUW0V4Y2x1ZGU8a2V5b2YgVCwga2V5b2YgQXJyYXk8YW55Pj5dXG5cbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRQYWNrYWdlTWFuYWdlcnMgPSBbJ3lhcm4nLCAncG5wbSddIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkVGVzdEZyYW1ld29ya3MgPSBbJ2F2YSddIGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRlZFBhY2thZ2VNYW5hZ2VyID0gVmFsdWVPZkNvbnN0QXJyYXk8XG4gIHR5cGVvZiBTdXBwb3J0ZWRQYWNrYWdlTWFuYWdlcnNcbj5cbmV4cG9ydCB0eXBlIFN1cHBvcnRlZFRlc3RGcmFtZXdvcmsgPSBWYWx1ZU9mQ29uc3RBcnJheTxcbiAgdHlwZW9mIFN1cHBvcnRlZFRlc3RGcmFtZXdvcmtzXG4+XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlck5hcGlDb25maWcge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgYmluYXJ5IHRvIGJlIGdlbmVyYXRlZCwgZGVmYXVsdCB0byBgaW5kZXhgXG4gICAqL1xuICBiaW5hcnlOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBucG0gcGFja2FnZSwgZGVmYXVsdCB0byB0aGUgbmFtZSBvZiByb290IHBhY2thZ2UuanNvbiBuYW1lXG4gICAqXG4gICAqIEFsd2F5cyBnaXZlbiBgQHNjb3BlL3BrZ2AgYW5kIGFyY2ggc3VmZml4IHdpbGwgYmUgYXBwZW5kZWQgbGlrZSBgQHNjb3BlL3BrZy1saW51eC1nbnUteDY0YFxuICAgKi9cbiAgcGFja2FnZU5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEFsbCB0YXJnZXRzIHRoZSBjcmF0ZSB3aWxsIGJlIGNvbXBpbGVkIGZvclxuICAgKi9cbiAgdGFyZ2V0cz86IHN0cmluZ1tdXG5cbiAgLyoqXG4gICAqIFRoZSBucG0gY2xpZW50IHByb2plY3QgdXNlcy5cbiAgICovXG4gIG5wbUNsaWVudD86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGdlbmVyYXRlIGNvbnN0IGVudW0gZm9yIHR5cGVzY3JpcHQgYmluZGluZ3NcbiAgICovXG4gIGNvbnN0RW51bT86IGJvb2xlYW5cblxuICAvKipcbiAgICogZHRzIGhlYWRlciBwcmVwZW5kIHRvIHRoZSBnZW5lcmF0ZWQgZHRzIGZpbGVcbiAgICovXG4gIGR0c0hlYWRlcj86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBkdHMgaGVhZGVyIGZpbGUgcGF0aCB0byBiZSBwcmVwZW5kZWQgdG8gdGhlIGdlbmVyYXRlZCBkdHMgZmlsZVxuICAgKiBpZiBib3RoIGR0c0hlYWRlciBhbmQgZHRzSGVhZGVyRmlsZSBhcmUgcHJvdmlkZWQsIGR0c0hlYWRlckZpbGUgd2lsbCBiZSB1c2VkXG4gICAqL1xuICBkdHNIZWFkZXJGaWxlPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIHdhc20gY29tcGlsYXRpb24gb3B0aW9uc1xuICAgKi9cbiAgd2FzbT86IHtcbiAgICAvKipcbiAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYkFzc2VtYmx5L0phdmFTY3JpcHRfaW50ZXJmYWNlL01lbW9yeVxuICAgICAqIEBkZWZhdWx0IDQwMDAgcGFnZXMgKDI1Nk1pQilcbiAgICAgKi9cbiAgICBpbml0aWFsTWVtb3J5PzogbnVtYmVyXG4gICAgLyoqXG4gICAgICogQGRlZmF1bHQgNjU1MzYgcGFnZXMgKDRHaUIpXG4gICAgICovXG4gICAgbWF4aW11bU1lbW9yeT86IG51bWJlclxuXG4gICAgLyoqXG4gICAgICogQnJvd3NlciB3YXNtIGJpbmRpbmcgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgIGJyb3dzZXI6IHtcbiAgICAgIC8qKlxuICAgICAgICogV2hldGhlciB0byB1c2UgZnMgbW9kdWxlIGluIGJyb3dzZXJcbiAgICAgICAqL1xuICAgICAgZnM/OiBib29sZWFuXG4gICAgICAvKipcbiAgICAgICAqIFdoZXRoZXIgdG8gaW5pdGlhbGl6ZSB3YXNtIGFzeW5jaHJvbm91c2x5XG4gICAgICAgKi9cbiAgICAgIGFzeW5jSW5pdD86IGJvb2xlYW5cbiAgICAgIC8qKlxuICAgICAgICogV2hldGhlciB0byBpbmplY3QgYGJ1ZmZlcmAgdG8gZW1uYXBpIGNvbnRleHRcbiAgICAgICAqL1xuICAgICAgYnVmZmVyPzogYm9vbGVhblxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBiaW5hcnlOYW1lIGluc3RlYWRcbiAgICovXG4gIG5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBwYWNrYWdlTmFtZSBpbnN0ZWFkXG4gICAqL1xuICBwYWNrYWdlPzoge1xuICAgIG5hbWU/OiBzdHJpbmdcbiAgfVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHRhcmdldHMgaW5zdGVhZFxuICAgKi9cbiAgdHJpcGxlcz86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGVuYWJsZSBkZWZhdWx0IHRhcmdldHNcbiAgICAgKi9cbiAgICBkZWZhdWx0czogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIEFkZGl0aW9uYWwgdGFyZ2V0cyB0byBiZSBjb21waWxlZCBmb3JcbiAgICAgKi9cbiAgICBhZGRpdGlvbmFsPzogc3RyaW5nW11cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vblBhY2thZ2VKc29uRmllbGRzIHtcbiAgbmFtZTogc3RyaW5nXG4gIHZlcnNpb246IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICBrZXl3b3Jkcz86IHN0cmluZ1tdXG4gIGF1dGhvcj86IHN0cmluZ1xuICBhdXRob3JzPzogc3RyaW5nW11cbiAgbGljZW5zZT86IHN0cmluZ1xuICBjcHU/OiBzdHJpbmdbXVxuICBvcz86IHN0cmluZ1tdXG4gIGxpYmM/OiBzdHJpbmdbXVxuICBmaWxlcz86IHN0cmluZ1tdXG4gIHJlcG9zaXRvcnk/OiBhbnlcbiAgaG9tZXBhZ2U/OiBhbnlcbiAgZW5naW5lcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgcHVibGlzaENvbmZpZz86IGFueVxuICBidWdzPzogYW55XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBuYXBpPzogVXNlck5hcGlDb25maWdcbiAgdHlwZT86ICdtb2R1bGUnIHwgJ2NvbW1vbmpzJ1xuICBzY3JpcHRzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuXG4gIC8vIG1vZHVsZXNcbiAgbWFpbj86IHN0cmluZ1xuICBtb2R1bGU/OiBzdHJpbmdcbiAgdHlwZXM/OiBzdHJpbmdcbiAgYnJvd3Nlcj86IHN0cmluZ1xuICBleHBvcnRzPzogYW55XG5cbiAgZGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICBkZXZEZXBlbmRlbmNpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG5cbiAgYXZhPzoge1xuICAgIHRpbWVvdXQ/OiBzdHJpbmdcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBOYXBpQ29uZmlnID0gUmVxdWlyZWQ8XG4gIFBpY2s8VXNlck5hcGlDb25maWcsICdiaW5hcnlOYW1lJyB8ICdwYWNrYWdlTmFtZScgfCAnbnBtQ2xpZW50Jz5cbj4gJlxuICBQaWNrPFVzZXJOYXBpQ29uZmlnLCAnd2FzbScgfCAnZHRzSGVhZGVyJyB8ICdkdHNIZWFkZXJGaWxlJyB8ICdjb25zdEVudW0nPiAmIHtcbiAgICB0YXJnZXRzOiBUYXJnZXRbXVxuICAgIHBhY2thZ2VKc29uOiBDb21tb25QYWNrYWdlSnNvbkZpZWxkc1xuICB9XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkTmFwaUNvbmZpZyhcbiAgcGF0aDogc3RyaW5nLFxuICBjb25maWdQYXRoPzogc3RyaW5nLFxuKTogUHJvbWlzZTxOYXBpQ29uZmlnPiB7XG4gIGlmIChjb25maWdQYXRoICYmICEoYXdhaXQgZmlsZUV4aXN0cyhjb25maWdQYXRoKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5BUEktUlMgY29uZmlnIG5vdCBmb3VuZCBhdCAke2NvbmZpZ1BhdGh9YClcbiAgfVxuICBpZiAoIShhd2FpdCBmaWxlRXhpc3RzKHBhdGgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgcGFja2FnZS5qc29uIG5vdCBmb3VuZCBhdCAke3BhdGh9YClcbiAgfVxuICAvLyBNYXkgc3VwcG9ydCBtdWx0aXBsZSBjb25maWcgc291cmNlcyBsYXRlciBvbi5cbiAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlQXN5bmMocGF0aCwgJ3V0ZjgnKVxuICBsZXQgcGtnSnNvblxuICB0cnkge1xuICAgIHBrZ0pzb24gPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIENvbW1vblBhY2thZ2VKc29uRmllbGRzXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBwYWNrYWdlLmpzb24gYXQgJHtwYXRofWAsIHtcbiAgICAgIGNhdXNlOiBlLFxuICAgIH0pXG4gIH1cblxuICBsZXQgc2VwYXJhdGVkQ29uZmlnOiBVc2VyTmFwaUNvbmZpZyB8IHVuZGVmaW5lZFxuICBpZiAoY29uZmlnUGF0aCkge1xuICAgIGNvbnN0IGNvbmZpZ0NvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKGNvbmZpZ1BhdGgsICd1dGY4JylcbiAgICB0cnkge1xuICAgICAgc2VwYXJhdGVkQ29uZmlnID0gSlNPTi5wYXJzZShjb25maWdDb250ZW50KSBhcyBVc2VyTmFwaUNvbmZpZ1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIE5BUEktUlMgY29uZmlnIGF0ICR7Y29uZmlnUGF0aH1gLCB7XG4gICAgICAgIGNhdXNlOiBlLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCB1c2VyTmFwaUNvbmZpZyA9IHBrZ0pzb24ubmFwaSA/PyB7fVxuICBpZiAocGtnSnNvbi5uYXBpICYmIHNlcGFyYXRlZENvbmZpZykge1xuICAgIGNvbnN0IHBrZ0pzb25QYXRoID0gdW5kZXJsaW5lKHBhdGgpXG4gICAgY29uc3QgY29uZmlnUGF0aFVuZGVybGluZSA9IHVuZGVybGluZShjb25maWdQYXRoISlcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICB5ZWxsb3coXG4gICAgICAgIGBCb3RoIG5hcGkgZmllbGQgaW4gJHtwa2dKc29uUGF0aH0gYW5kIFtOQVBJLVJTIGNvbmZpZ10oJHtjb25maWdQYXRoVW5kZXJsaW5lfSkgZmlsZSBhcmUgZm91bmQsIHRoZSBOQVBJLVJTIGNvbmZpZyBmaWxlIHdpbGwgYmUgdXNlZC5gLFxuICAgICAgKSxcbiAgICApXG4gIH1cbiAgaWYgKHNlcGFyYXRlZENvbmZpZykge1xuICAgIE9iamVjdC5hc3NpZ24odXNlck5hcGlDb25maWcsIHNlcGFyYXRlZENvbmZpZylcbiAgfVxuICBjb25zdCBuYXBpQ29uZmlnOiBOYXBpQ29uZmlnID0gbWVyZ2UoXG4gICAge1xuICAgICAgYmluYXJ5TmFtZTogJ2luZGV4JyxcbiAgICAgIHBhY2thZ2VOYW1lOiBwa2dKc29uLm5hbWUsXG4gICAgICB0YXJnZXRzOiBbXSxcbiAgICAgIHBhY2thZ2VKc29uOiBwa2dKc29uLFxuICAgICAgbnBtQ2xpZW50OiAnbnBtJyxcbiAgICB9LFxuICAgIG9taXQodXNlck5hcGlDb25maWcsIFsndGFyZ2V0cyddKSxcbiAgKVxuXG4gIGxldCB0YXJnZXRzOiBzdHJpbmdbXSA9IHVzZXJOYXBpQ29uZmlnLnRhcmdldHMgPz8gW11cblxuICAvLyBjb21wYXRpYmxlIHdpdGggb2xkIGNvbmZpZ1xuICBpZiAodXNlck5hcGlDb25maWc/Lm5hbWUpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICB5ZWxsb3coXG4gICAgICAgIGBbREVQUkVDQVRFRF0gbmFwaS5uYW1lIGlzIGRlcHJlY2F0ZWQsIHVzZSBuYXBpLmJpbmFyeU5hbWUgaW5zdGVhZC5gLFxuICAgICAgKSxcbiAgICApXG4gICAgbmFwaUNvbmZpZy5iaW5hcnlOYW1lID0gdXNlck5hcGlDb25maWcubmFtZVxuICB9XG5cbiAgaWYgKCF0YXJnZXRzLmxlbmd0aCkge1xuICAgIGxldCBkZXByZWNhdGVkV2FybmVkID0gZmFsc2VcbiAgICBjb25zdCB3YXJuaW5nID0geWVsbG93KFxuICAgICAgYFtERVBSRUNBVEVEXSBuYXBpLnRyaXBsZXMgaXMgZGVwcmVjYXRlZCwgdXNlIG5hcGkudGFyZ2V0cyBpbnN0ZWFkLmAsXG4gICAgKVxuICAgIGlmICh1c2VyTmFwaUNvbmZpZy50cmlwbGVzPy5kZWZhdWx0cykge1xuICAgICAgZGVwcmVjYXRlZFdhcm5lZCA9IHRydWVcbiAgICAgIGNvbnNvbGUud2Fybih3YXJuaW5nKVxuICAgICAgdGFyZ2V0cyA9IHRhcmdldHMuY29uY2F0KERFRkFVTFRfVEFSR0VUUylcbiAgICB9XG5cbiAgICBpZiAodXNlck5hcGlDb25maWcudHJpcGxlcz8uYWRkaXRpb25hbD8ubGVuZ3RoKSB7XG4gICAgICB0YXJnZXRzID0gdGFyZ2V0cy5jb25jYXQodXNlck5hcGlDb25maWcudHJpcGxlcy5hZGRpdGlvbmFsKVxuICAgICAgaWYgKCFkZXByZWNhdGVkV2FybmVkKSB7XG4gICAgICAgIGNvbnNvbGUud2Fybih3YXJuaW5nKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGZpbmQgZHVwbGljYXRlIHRhcmdldHNcbiAgY29uc3QgdW5pcXVlVGFyZ2V0cyA9IG5ldyBTZXQodGFyZ2V0cylcbiAgaWYgKHVuaXF1ZVRhcmdldHMuc2l6ZSAhPT0gdGFyZ2V0cy5sZW5ndGgpIHtcbiAgICBjb25zdCBkdXBsaWNhdGVUYXJnZXQgPSB0YXJnZXRzLmZpbmQoXG4gICAgICAodGFyZ2V0LCBpbmRleCkgPT4gdGFyZ2V0cy5pbmRleE9mKHRhcmdldCkgIT09IGluZGV4LFxuICAgIClcbiAgICB0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSB0YXJnZXRzIGFyZSBub3QgYWxsb3dlZDogJHtkdXBsaWNhdGVUYXJnZXR9YClcbiAgfVxuXG4gIG5hcGlDb25maWcudGFyZ2V0cyA9IHRhcmdldHMubWFwKHBhcnNlVHJpcGxlKVxuXG4gIHJldHVybiBuYXBpQ29uZmlnXG59XG4iLCJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcblxuaW1wb3J0IHsgZGVidWcgfSBmcm9tICcuL2xvZy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHRyeUluc3RhbGxDYXJnb0JpbmFyeShuYW1lOiBzdHJpbmcsIGJpbjogc3RyaW5nKSB7XG4gIGlmIChkZXRlY3RDYXJnb0JpbmFyeShiaW4pKSB7XG4gICAgZGVidWcoJ0NhcmdvIGJpbmFyeSBhbHJlYWR5IGluc3RhbGxlZDogJXMnLCBuYW1lKVxuICAgIHJldHVyblxuICB9XG5cbiAgdHJ5IHtcbiAgICBkZWJ1ZygnSW5zdGFsbGluZyBjYXJnbyBiaW5hcnk6ICVzJywgbmFtZSlcbiAgICBleGVjU3luYyhgY2FyZ28gaW5zdGFsbCAke25hbWV9YCwge1xuICAgICAgc3RkaW86ICdpbmhlcml0JyxcbiAgICB9KVxuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gaW5zdGFsbCBjYXJnbyBiaW5hcnk6ICR7bmFtZX1gLCB7XG4gICAgICBjYXVzZTogZSxcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGRldGVjdENhcmdvQmluYXJ5KGJpbjogc3RyaW5nKSB7XG4gIGRlYnVnKCdEZXRlY3RpbmcgY2FyZ28gYmluYXJ5OiAlcycsIGJpbilcbiAgdHJ5IHtcbiAgICBleGVjU3luYyhgY2FyZ28gaGVscCAke2Jpbn1gLCB7XG4gICAgICBzdGRpbzogJ2lnbm9yZScsXG4gICAgfSlcbiAgICBkZWJ1ZygnQ2FyZ28gYmluYXJ5IGRldGVjdGVkOiAlcycsIGJpbilcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIHtcbiAgICBkZWJ1ZygnQ2FyZ28gYmluYXJ5IG5vdCBkZXRlY3RlZDogJXMnLCBiaW4pXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cbiIsImltcG9ydCB7IHNvcnRCeSB9IGZyb20gJ2VzLXRvb2xraXQnXG5cbmltcG9ydCB7IHJlYWRGaWxlQXN5bmMgfSBmcm9tICcuL21pc2MuanMnXG5cbmNvbnN0IFRPUF9MRVZFTF9OQU1FU1BBQ0UgPSAnX19UT1BfTEVWRUxfTU9EVUxFX18nXG5leHBvcnQgY29uc3QgREVGQVVMVF9UWVBFX0RFRl9IRUFERVIgPSBgLyogYXV0by1nZW5lcmF0ZWQgYnkgTkFQSS1SUyAqL1xuLyogZXNsaW50LWRpc2FibGUgKi9cbmBcblxuZW51bSBUeXBlRGVmS2luZCB7XG4gIENvbnN0ID0gJ2NvbnN0JyxcbiAgRW51bSA9ICdlbnVtJyxcbiAgU3RyaW5nRW51bSA9ICdzdHJpbmdfZW51bScsXG4gIEludGVyZmFjZSA9ICdpbnRlcmZhY2UnLFxuICBUeXBlID0gJ3R5cGUnLFxuICBGbiA9ICdmbicsXG4gIFN0cnVjdCA9ICdzdHJ1Y3QnLFxuICBFeHRlbmRzID0gJ2V4dGVuZHMnLFxuICBJbXBsID0gJ2ltcGwnLFxufVxuXG5pbnRlcmZhY2UgVHlwZURlZkxpbmUge1xuICBraW5kOiBUeXBlRGVmS2luZFxuICBuYW1lOiBzdHJpbmdcbiAgb3JpZ2luYWxfbmFtZT86IHN0cmluZ1xuICBkZWY6IHN0cmluZ1xuICBleHRlbmRzPzogc3RyaW5nXG4gIGpzX2RvYz86IHN0cmluZ1xuICBqc19tb2Q/OiBzdHJpbmdcbn1cblxuZnVuY3Rpb24gcHJldHR5UHJpbnQoXG4gIGxpbmU6IFR5cGVEZWZMaW5lLFxuICBjb25zdEVudW06IGJvb2xlYW4sXG4gIGlkZW50OiBudW1iZXIsXG4gIGFtYmllbnQgPSBmYWxzZSxcbik6IHN0cmluZyB7XG4gIGxldCBzID0gbGluZS5qc19kb2MgPz8gJydcbiAgc3dpdGNoIChsaW5lLmtpbmQpIHtcbiAgICBjYXNlIFR5cGVEZWZLaW5kLkludGVyZmFjZTpcbiAgICAgIHMgKz0gYGV4cG9ydCBpbnRlcmZhY2UgJHtsaW5lLm5hbWV9IHtcXG4ke2xpbmUuZGVmfVxcbn1gXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUeXBlRGVmS2luZC5UeXBlOlxuICAgICAgcyArPSBgZXhwb3J0IHR5cGUgJHtsaW5lLm5hbWV9ID0gXFxuJHtsaW5lLmRlZn1gXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUeXBlRGVmS2luZC5FbnVtOlxuICAgICAgY29uc3QgZW51bU5hbWUgPSBjb25zdEVudW0gPyAnY29uc3QgZW51bScgOiAnZW51bSdcbiAgICAgIHMgKz0gYCR7ZXhwb3J0RGVjbGFyZShhbWJpZW50KX0gJHtlbnVtTmFtZX0gJHtsaW5lLm5hbWV9IHtcXG4ke2xpbmUuZGVmfVxcbn1gXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUeXBlRGVmS2luZC5TdHJpbmdFbnVtOlxuICAgICAgaWYgKGNvbnN0RW51bSkge1xuICAgICAgICBzICs9IGAke2V4cG9ydERlY2xhcmUoYW1iaWVudCl9IGNvbnN0IGVudW0gJHtsaW5lLm5hbWV9IHtcXG4ke2xpbmUuZGVmfVxcbn1gXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzICs9IGBleHBvcnQgdHlwZSAke2xpbmUubmFtZX0gPSAke2xpbmUuZGVmLnJlcGxhY2VBbGwoLy4qPS9nLCAnJykucmVwbGFjZUFsbCgnLCcsICd8Jyl9O2BcbiAgICAgIH1cbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIFR5cGVEZWZLaW5kLlN0cnVjdDpcbiAgICAgIGNvbnN0IGV4dGVuZHNEZWYgPSBsaW5lLmV4dGVuZHMgPyBgIGV4dGVuZHMgJHtsaW5lLmV4dGVuZHN9YCA6ICcnXG4gICAgICBpZiAobGluZS5leHRlbmRzKSB7XG4gICAgICAgIC8vIEV4dHJhY3QgZ2VuZXJpYyBwYXJhbXMgZnJvbSBleHRlbmRzIHR5cGUgbGlrZSBJdGVyYXRvcjxULCBUUmVzdWx0LCBUTmV4dD5cbiAgICAgICAgY29uc3QgZ2VuZXJpY01hdGNoID0gbGluZS5leHRlbmRzLm1hdGNoKC9JdGVyYXRvcjwoLispPiQvKVxuICAgICAgICBpZiAoZ2VuZXJpY01hdGNoKSB7XG4gICAgICAgICAgY29uc3QgW1QsIFRSZXN1bHQsIFROZXh0XSA9IGdlbmVyaWNNYXRjaFsxXVxuICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoKHApID0+IHAudHJpbSgpKVxuICAgICAgICAgIGxpbmUuZGVmID1cbiAgICAgICAgICAgIGxpbmUuZGVmICtcbiAgICAgICAgICAgIGBcXG5uZXh0KHZhbHVlPzogJHtUTmV4dH0pOiBJdGVyYXRvclJlc3VsdDwke1R9LCAke1RSZXN1bHR9PmBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcyArPSBgJHtleHBvcnREZWNsYXJlKGFtYmllbnQpfSBjbGFzcyAke2xpbmUubmFtZX0ke2V4dGVuZHNEZWZ9IHtcXG4ke2xpbmUuZGVmfVxcbn1gXG4gICAgICBpZiAobGluZS5vcmlnaW5hbF9uYW1lICYmIGxpbmUub3JpZ2luYWxfbmFtZSAhPT0gbGluZS5uYW1lKSB7XG4gICAgICAgIHMgKz0gYFxcbmV4cG9ydCB0eXBlICR7bGluZS5vcmlnaW5hbF9uYW1lfSA9ICR7bGluZS5uYW1lfWBcbiAgICAgIH1cbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIFR5cGVEZWZLaW5kLkZuOlxuICAgICAgcyArPSBgJHtleHBvcnREZWNsYXJlKGFtYmllbnQpfSAke2xpbmUuZGVmfWBcbiAgICAgIGJyZWFrXG5cbiAgICBkZWZhdWx0OlxuICAgICAgcyArPSBsaW5lLmRlZlxuICB9XG5cbiAgcmV0dXJuIGNvcnJlY3RTdHJpbmdJZGVudChzLCBpZGVudClcbn1cblxuZnVuY3Rpb24gZXhwb3J0RGVjbGFyZShhbWJpZW50OiBib29sZWFuKTogc3RyaW5nIHtcbiAgaWYgKGFtYmllbnQpIHtcbiAgICByZXR1cm4gJ2V4cG9ydCdcbiAgfVxuXG4gIHJldHVybiAnZXhwb3J0IGRlY2xhcmUnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzVHlwZURlZihcbiAgaW50ZXJtZWRpYXRlVHlwZUZpbGU6IHN0cmluZyxcbiAgY29uc3RFbnVtOiBib29sZWFuLFxuKSB7XG4gIGNvbnN0IGV4cG9ydHM6IHN0cmluZ1tdID0gW11cbiAgY29uc3QgZGVmcyA9IGF3YWl0IHJlYWRJbnRlcm1lZGlhdGVUeXBlRmlsZShpbnRlcm1lZGlhdGVUeXBlRmlsZSlcbiAgY29uc3QgZ3JvdXBlZERlZnMgPSBwcmVwcm9jZXNzVHlwZURlZihkZWZzKVxuXG4gIGNvbnN0IGR0cyA9XG4gICAgc29ydEJ5KEFycmF5LmZyb20oZ3JvdXBlZERlZnMpLCBbKFtuYW1lc3BhY2VdKSA9PiBuYW1lc3BhY2VdKVxuICAgICAgLm1hcCgoW25hbWVzcGFjZSwgZGVmc10pID0+IHtcbiAgICAgICAgaWYgKG5hbWVzcGFjZSA9PT0gVE9QX0xFVkVMX05BTUVTUEFDRSkge1xuICAgICAgICAgIHJldHVybiBkZWZzXG4gICAgICAgICAgICAubWFwKChkZWYpID0+IHtcbiAgICAgICAgICAgICAgc3dpdGNoIChkZWYua2luZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgVHlwZURlZktpbmQuQ29uc3Q6XG4gICAgICAgICAgICAgICAgY2FzZSBUeXBlRGVmS2luZC5FbnVtOlxuICAgICAgICAgICAgICAgIGNhc2UgVHlwZURlZktpbmQuU3RyaW5nRW51bTpcbiAgICAgICAgICAgICAgICBjYXNlIFR5cGVEZWZLaW5kLkZuOlxuICAgICAgICAgICAgICAgIGNhc2UgVHlwZURlZktpbmQuU3RydWN0OiB7XG4gICAgICAgICAgICAgICAgICBleHBvcnRzLnB1c2goZGVmLm5hbWUpXG4gICAgICAgICAgICAgICAgICBpZiAoZGVmLm9yaWdpbmFsX25hbWUgJiYgZGVmLm9yaWdpbmFsX25hbWUgIT09IGRlZi5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydHMucHVzaChkZWYub3JpZ2luYWxfbmFtZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBwcmV0dHlQcmludChkZWYsIGNvbnN0RW51bSwgMClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignXFxuXFxuJylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBleHBvcnRzLnB1c2gobmFtZXNwYWNlKVxuICAgICAgICAgIGxldCBkZWNsYXJhdGlvbiA9ICcnXG4gICAgICAgICAgZGVjbGFyYXRpb24gKz0gYGV4cG9ydCBkZWNsYXJlIG5hbWVzcGFjZSAke25hbWVzcGFjZX0ge1xcbmBcbiAgICAgICAgICBmb3IgKGNvbnN0IGRlZiBvZiBkZWZzKSB7XG4gICAgICAgICAgICBkZWNsYXJhdGlvbiArPSBwcmV0dHlQcmludChkZWYsIGNvbnN0RW51bSwgMiwgdHJ1ZSkgKyAnXFxuJ1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWNsYXJhdGlvbiArPSAnfSdcbiAgICAgICAgICByZXR1cm4gZGVjbGFyYXRpb25cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5qb2luKCdcXG5cXG4nKSArICdcXG4nXG5cbiAgcmV0dXJuIHtcbiAgICBkdHMsXG4gICAgZXhwb3J0cyxcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkSW50ZXJtZWRpYXRlVHlwZUZpbGUoZmlsZTogc3RyaW5nKSB7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKGZpbGUsICd1dGY4JylcblxuICBjb25zdCBkZWZzID0gY29udGVudFxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgbGluZSA9IGxpbmUudHJpbSgpXG4gICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGxpbmUpIGFzIFR5cGVEZWZMaW5lXG4gICAgICAvLyBDb252ZXJ0IGVzY2FwZWQgbmV3bGluZXMgYmFjayB0byBhY3R1YWwgbmV3bGluZXMgaW4ganNfZG9jIGZpZWxkc1xuICAgICAgaWYgKHBhcnNlZC5qc19kb2MpIHtcbiAgICAgICAgcGFyc2VkLmpzX2RvYyA9IHBhcnNlZC5qc19kb2MucmVwbGFjZSgvXFxcXG4vZywgJ1xcbicpXG4gICAgICB9XG4gICAgICAvLyBDb252ZXJ0IGVzY2FwZWQgbmV3bGluZXMgdG8gYWN0dWFsIG5ld2xpbmVzIGluIGRlZiBmaWVsZHMgZm9yIHN0cnVjdC9jbGFzcy9pbnRlcmZhY2UvdHlwZSB0eXBlc1xuICAgICAgLy8gd2hlcmUgXFxuIHJlcHJlc2VudHMgbWV0aG9kL2ZpZWxkIHNlcGFyYXRvcnMgdGhhdCBzaG91bGQgYmUgYWN0dWFsIG5ld2xpbmVzXG4gICAgICBpZiAocGFyc2VkLmRlZikge1xuICAgICAgICBwYXJzZWQuZGVmID0gcGFyc2VkLmRlZi5yZXBsYWNlKC9cXFxcbi9nLCAnXFxuJylcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJzZWRcbiAgICB9KVxuXG4gIC8vIG1vdmUgYWxsIGBzdHJ1Y3RgIGRlZiB0byB0aGUgdmVyeSB0b3BcbiAgLy8gYW5kIG9yZGVyIHRoZSByZXN0IGFscGhhYmV0aWNhbGx5LlxuICByZXR1cm4gZGVmcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgaWYgKGEua2luZCA9PT0gVHlwZURlZktpbmQuU3RydWN0KSB7XG4gICAgICBpZiAoYi5raW5kID09PSBUeXBlRGVmS2luZC5TdHJ1Y3QpIHtcbiAgICAgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSlcbiAgICAgIH1cbiAgICAgIHJldHVybiAtMVxuICAgIH0gZWxzZSBpZiAoYi5raW5kID09PSBUeXBlRGVmS2luZC5TdHJ1Y3QpIHtcbiAgICAgIHJldHVybiAxXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBwcmVwcm9jZXNzVHlwZURlZihkZWZzOiBUeXBlRGVmTGluZVtdKTogTWFwPHN0cmluZywgVHlwZURlZkxpbmVbXT4ge1xuICBjb25zdCBuYW1lc3BhY2VHcm91cGVkID0gbmV3IE1hcDxzdHJpbmcsIFR5cGVEZWZMaW5lW10+KClcbiAgY29uc3QgY2xhc3NEZWZzID0gbmV3IE1hcDxzdHJpbmcsIFR5cGVEZWZMaW5lPigpXG5cbiAgZm9yIChjb25zdCBkZWYgb2YgZGVmcykge1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IGRlZi5qc19tb2QgPz8gVE9QX0xFVkVMX05BTUVTUEFDRVxuICAgIGlmICghbmFtZXNwYWNlR3JvdXBlZC5oYXMobmFtZXNwYWNlKSkge1xuICAgICAgbmFtZXNwYWNlR3JvdXBlZC5zZXQobmFtZXNwYWNlLCBbXSlcbiAgICB9XG5cbiAgICBjb25zdCBncm91cCA9IG5hbWVzcGFjZUdyb3VwZWQuZ2V0KG5hbWVzcGFjZSkhXG5cbiAgICBpZiAoZGVmLmtpbmQgPT09IFR5cGVEZWZLaW5kLlN0cnVjdCkge1xuICAgICAgZ3JvdXAucHVzaChkZWYpXG4gICAgICBjbGFzc0RlZnMuc2V0KGRlZi5uYW1lLCBkZWYpXG4gICAgfSBlbHNlIGlmIChkZWYua2luZCA9PT0gVHlwZURlZktpbmQuRXh0ZW5kcykge1xuICAgICAgY29uc3QgY2xhc3NEZWYgPSBjbGFzc0RlZnMuZ2V0KGRlZi5uYW1lKVxuICAgICAgaWYgKGNsYXNzRGVmKSB7XG4gICAgICAgIGNsYXNzRGVmLmV4dGVuZHMgPSBkZWYuZGVmXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkZWYua2luZCA9PT0gVHlwZURlZktpbmQuSW1wbCkge1xuICAgICAgLy8gbWVyZ2UgYGltcGxgIGludG8gY2xhc3MgZGVmaW5pdGlvblxuICAgICAgY29uc3QgY2xhc3NEZWYgPSBjbGFzc0RlZnMuZ2V0KGRlZi5uYW1lKVxuICAgICAgaWYgKGNsYXNzRGVmKSB7XG4gICAgICAgIGlmIChjbGFzc0RlZi5kZWYpIHtcbiAgICAgICAgICBjbGFzc0RlZi5kZWYgKz0gJ1xcbidcbiAgICAgICAgfVxuXG4gICAgICAgIGNsYXNzRGVmLmRlZiArPSBkZWYuZGVmXG4gICAgICAgIC8vIENvbnZlcnQgYW55IHJlbWFpbmluZyBcXG4gc2VxdWVuY2VzIGluIHRoZSBtZXJnZWQgZGVmIHRvIGFjdHVhbCBuZXdsaW5lc1xuICAgICAgICBpZiAoY2xhc3NEZWYuZGVmKSB7XG4gICAgICAgICAgY2xhc3NEZWYuZGVmID0gY2xhc3NEZWYuZGVmLnJlcGxhY2UoL1xcXFxuL2csICdcXG4nKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3VwLnB1c2goZGVmKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lc3BhY2VHcm91cGVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3JyZWN0U3RyaW5nSWRlbnQoc3JjOiBzdHJpbmcsIGlkZW50OiBudW1iZXIpOiBzdHJpbmcge1xuICBsZXQgYnJhY2tldERlcHRoID0gMFxuICBjb25zdCByZXN1bHQgPSBzcmNcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgbGluZSA9IGxpbmUudHJpbSgpXG4gICAgICBpZiAobGluZSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuICcnXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzSW5NdWx0aWxpbmVDb21tZW50ID0gbGluZS5zdGFydHNXaXRoKCcqJylcbiAgICAgIGNvbnN0IGlzQ2xvc2luZ0JyYWNrZXQgPSBsaW5lLmVuZHNXaXRoKCd9JylcbiAgICAgIGNvbnN0IGlzT3BlbmluZ0JyYWNrZXQgPSBsaW5lLmVuZHNXaXRoKCd7JylcbiAgICAgIGNvbnN0IGlzVHlwZURlY2xhcmF0aW9uID0gbGluZS5lbmRzV2l0aCgnPScpXG4gICAgICBjb25zdCBpc1R5cGVWYXJpYW50ID0gbGluZS5zdGFydHNXaXRoKCd8JylcblxuICAgICAgbGV0IHJpZ2h0SW5kZW50ID0gaWRlbnRcbiAgICAgIGlmICgoaXNPcGVuaW5nQnJhY2tldCB8fCBpc1R5cGVEZWNsYXJhdGlvbikgJiYgIWlzSW5NdWx0aWxpbmVDb21tZW50KSB7XG4gICAgICAgIGJyYWNrZXREZXB0aCArPSAxXG4gICAgICAgIHJpZ2h0SW5kZW50ICs9IChicmFja2V0RGVwdGggLSAxKSAqIDJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBpc0Nsb3NpbmdCcmFja2V0ICYmXG4gICAgICAgICAgYnJhY2tldERlcHRoID4gMCAmJlxuICAgICAgICAgICFpc0luTXVsdGlsaW5lQ29tbWVudCAmJlxuICAgICAgICAgICFpc1R5cGVWYXJpYW50XG4gICAgICAgICkge1xuICAgICAgICAgIGJyYWNrZXREZXB0aCAtPSAxXG4gICAgICAgIH1cbiAgICAgICAgcmlnaHRJbmRlbnQgKz0gYnJhY2tldERlcHRoICogMlxuICAgICAgfVxuXG4gICAgICBpZiAoaXNJbk11bHRpbGluZUNvbW1lbnQpIHtcbiAgICAgICAgcmlnaHRJbmRlbnQgKz0gMVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzID0gYCR7JyAnLnJlcGVhdChyaWdodEluZGVudCl9JHtsaW5lfWBcblxuICAgICAgcmV0dXJuIHNcbiAgICB9KVxuICAgIC5qb2luKCdcXG4nKVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiIsImltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmltcG9ydCB7IHJlYWROYXBpQ29uZmlnIH0gZnJvbSAnLi9jb25maWcuanMnXG5cbmludGVyZmFjZSBNaW5pbWFsTmFwaU9wdGlvbnMge1xuICBjd2Q6IHN0cmluZ1xuICBjb25maWdQYXRoPzogc3RyaW5nXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZENvbmZpZyhvcHRpb25zOiBNaW5pbWFsTmFwaU9wdGlvbnMpIHtcbiAgY29uc3QgcmVzb2x2ZVBhdGggPSAoLi4ucGF0aHM6IHN0cmluZ1tdKSA9PiByZXNvbHZlKG9wdGlvbnMuY3dkLCAuLi5wYXRocylcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZE5hcGlDb25maWcoXG4gICAgcmVzb2x2ZVBhdGgob3B0aW9ucy5wYWNrYWdlSnNvblBhdGggPz8gJ3BhY2thZ2UuanNvbicpLFxuICAgIG9wdGlvbnMuY29uZmlnUGF0aCA/IHJlc29sdmVQYXRoKG9wdGlvbnMuY29uZmlnUGF0aCkgOiB1bmRlZmluZWQsXG4gIClcbiAgcmV0dXJuIGNvbmZpZ1xufVxuIiwiaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSwgcGFyc2UgfSBmcm9tICdub2RlOnBhdGgnXG5cbmltcG9ydCAqIGFzIGNvbG9ycyBmcm9tICdjb2xvcmV0dGUnXG5cbmltcG9ydCB7XG4gIGFwcGx5RGVmYXVsdEFydGlmYWN0c09wdGlvbnMsXG4gIHR5cGUgQXJ0aWZhY3RzT3B0aW9ucyxcbn0gZnJvbSAnLi4vZGVmL2FydGlmYWN0cy5qcydcbmltcG9ydCB7XG4gIHJlYWROYXBpQ29uZmlnLFxuICBkZWJ1Z0ZhY3RvcnksXG4gIHJlYWRGaWxlQXN5bmMsXG4gIHdyaXRlRmlsZUFzeW5jLFxuICBVbmlBcmNoc0J5UGxhdGZvcm0sXG4gIHJlYWRkaXJBc3luYyxcbn0gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnXG5cbmNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCdhcnRpZmFjdHMnKVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29sbGVjdEFydGlmYWN0cyh1c2VyT3B0aW9uczogQXJ0aWZhY3RzT3B0aW9ucykge1xuICBjb25zdCBvcHRpb25zID0gYXBwbHlEZWZhdWx0QXJ0aWZhY3RzT3B0aW9ucyh1c2VyT3B0aW9ucylcblxuICBjb25zdCByZXNvbHZlUGF0aCA9ICguLi5wYXRoczogc3RyaW5nW10pID0+IHJlc29sdmUob3B0aW9ucy5jd2QsIC4uLnBhdGhzKVxuICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSByZXNvbHZlUGF0aChvcHRpb25zLnBhY2thZ2VKc29uUGF0aClcbiAgY29uc3QgeyB0YXJnZXRzLCBiaW5hcnlOYW1lLCBwYWNrYWdlTmFtZSB9ID0gYXdhaXQgcmVhZE5hcGlDb25maWcoXG4gICAgcGFja2FnZUpzb25QYXRoLFxuICAgIG9wdGlvbnMuY29uZmlnUGF0aCA/IHJlc29sdmVQYXRoKG9wdGlvbnMuY29uZmlnUGF0aCkgOiB1bmRlZmluZWQsXG4gIClcblxuICBjb25zdCBkaXN0RGlycyA9IHRhcmdldHMubWFwKChwbGF0Zm9ybSkgPT5cbiAgICBqb2luKG9wdGlvbnMuY3dkLCBvcHRpb25zLm5wbURpciwgcGxhdGZvcm0ucGxhdGZvcm1BcmNoQUJJKSxcbiAgKVxuXG4gIGNvbnN0IHVuaXZlcnNhbFNvdXJjZUJpbnMgPSBuZXcgU2V0KFxuICAgIHRhcmdldHNcbiAgICAgIC5maWx0ZXIoKHBsYXRmb3JtKSA9PiBwbGF0Zm9ybS5hcmNoID09PSAndW5pdmVyc2FsJylcbiAgICAgIC5mbGF0TWFwKChwKSA9PlxuICAgICAgICBVbmlBcmNoc0J5UGxhdGZvcm1bcC5wbGF0Zm9ybV0/Lm1hcCgoYSkgPT4gYCR7cC5wbGF0Zm9ybX0tJHthfWApLFxuICAgICAgKVxuICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBzdHJpbmdbXSxcbiAgKVxuXG4gIGF3YWl0IGNvbGxlY3ROb2RlQmluYXJpZXMoam9pbihvcHRpb25zLmN3ZCwgb3B0aW9ucy5vdXRwdXREaXIpKS50aGVuKFxuICAgIChvdXRwdXQpID0+XG4gICAgICBQcm9taXNlLmFsbChcbiAgICAgICAgb3V0cHV0Lm1hcChhc3luYyAoZmlsZVBhdGgpID0+IHtcbiAgICAgICAgICBkZWJ1Zy5pbmZvKGBSZWFkIFske2NvbG9ycy55ZWxsb3dCcmlnaHQoZmlsZVBhdGgpfV1gKVxuICAgICAgICAgIGNvbnN0IHNvdXJjZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKGZpbGVQYXRoKVxuICAgICAgICAgIGNvbnN0IHBhcnNlZE5hbWUgPSBwYXJzZShmaWxlUGF0aClcbiAgICAgICAgICBjb25zdCB0ZXJtcyA9IHBhcnNlZE5hbWUubmFtZS5zcGxpdCgnLicpXG4gICAgICAgICAgY29uc3QgcGxhdGZvcm1BcmNoQUJJID0gdGVybXMucG9wKCkhXG4gICAgICAgICAgY29uc3QgX2JpbmFyeU5hbWUgPSB0ZXJtcy5qb2luKCcuJylcblxuICAgICAgICAgIGlmIChfYmluYXJ5TmFtZSAhPT0gYmluYXJ5TmFtZSkge1xuICAgICAgICAgICAgZGVidWcud2FybihcbiAgICAgICAgICAgICAgYFske19iaW5hcnlOYW1lfV0gaXMgbm90IG1hdGNoZWQgd2l0aCBbJHtiaW5hcnlOYW1lfV0sIHNraXBgLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGRpciA9IGRpc3REaXJzLmZpbmQoKGRpcikgPT4gZGlyLmluY2x1ZGVzKHBsYXRmb3JtQXJjaEFCSSkpXG4gICAgICAgICAgaWYgKCFkaXIgJiYgdW5pdmVyc2FsU291cmNlQmlucy5oYXMocGxhdGZvcm1BcmNoQUJJKSkge1xuICAgICAgICAgICAgZGVidWcud2FybihcbiAgICAgICAgICAgICAgYFske3BsYXRmb3JtQXJjaEFCSX1dIGhhcyBubyBkaXN0IGRpciBidXQgaXQgaXMgc291cmNlIGJpbiBmb3IgdW5pdmVyc2FsIGFyY2gsIHNraXBgLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZGlyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGRpc3QgZGlyIGZvdW5kIGZvciAke2ZpbGVQYXRofWApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGlzdEZpbGVQYXRoID0gam9pbihkaXIsIHBhcnNlZE5hbWUuYmFzZSlcbiAgICAgICAgICBkZWJ1Zy5pbmZvKFxuICAgICAgICAgICAgYFdyaXRlIGZpbGUgY29udGVudCB0byBbJHtjb2xvcnMueWVsbG93QnJpZ2h0KGRpc3RGaWxlUGF0aCl9XWAsXG4gICAgICAgICAgKVxuICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKGRpc3RGaWxlUGF0aCwgc291cmNlQ29udGVudClcbiAgICAgICAgICBjb25zdCBkaXN0RmlsZVBhdGhMb2NhbCA9IGpvaW4oXG4gICAgICAgICAgICBwYXJzZShwYWNrYWdlSnNvblBhdGgpLmRpcixcbiAgICAgICAgICAgIHBhcnNlZE5hbWUuYmFzZSxcbiAgICAgICAgICApXG4gICAgICAgICAgZGVidWcuaW5mbyhcbiAgICAgICAgICAgIGBXcml0ZSBmaWxlIGNvbnRlbnQgdG8gWyR7Y29sb3JzLnllbGxvd0JyaWdodChkaXN0RmlsZVBhdGhMb2NhbCl9XWAsXG4gICAgICAgICAgKVxuICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKGRpc3RGaWxlUGF0aExvY2FsLCBzb3VyY2VDb250ZW50KVxuICAgICAgICB9KSxcbiAgICAgICksXG4gIClcblxuICBjb25zdCB3YXNpVGFyZ2V0ID0gdGFyZ2V0cy5maW5kKCh0KSA9PiB0LnBsYXRmb3JtID09PSAnd2FzaScpXG4gIGlmICh3YXNpVGFyZ2V0KSB7XG4gICAgY29uc3Qgd2FzaURpciA9IGpvaW4oXG4gICAgICBvcHRpb25zLmN3ZCxcbiAgICAgIG9wdGlvbnMubnBtRGlyLFxuICAgICAgd2FzaVRhcmdldC5wbGF0Zm9ybUFyY2hBQkksXG4gICAgKVxuICAgIGNvbnN0IGNqc0ZpbGUgPSBqb2luKFxuICAgICAgb3B0aW9ucy5idWlsZE91dHB1dERpciA/PyBvcHRpb25zLmN3ZCxcbiAgICAgIGAke2JpbmFyeU5hbWV9Lndhc2kuY2pzYCxcbiAgICApXG4gICAgY29uc3Qgd29ya2VyRmlsZSA9IGpvaW4oXG4gICAgICBvcHRpb25zLmJ1aWxkT3V0cHV0RGlyID8/IG9wdGlvbnMuY3dkLFxuICAgICAgYHdhc2ktd29ya2VyLm1qc2AsXG4gICAgKVxuICAgIGNvbnN0IGJyb3dzZXJFbnRyeSA9IGpvaW4oXG4gICAgICBvcHRpb25zLmJ1aWxkT3V0cHV0RGlyID8/IG9wdGlvbnMuY3dkLFxuICAgICAgYCR7YmluYXJ5TmFtZX0ud2FzaS1icm93c2VyLmpzYCxcbiAgICApXG4gICAgY29uc3QgYnJvd3NlcldvcmtlckZpbGUgPSBqb2luKFxuICAgICAgb3B0aW9ucy5idWlsZE91dHB1dERpciA/PyBvcHRpb25zLmN3ZCxcbiAgICAgIGB3YXNpLXdvcmtlci1icm93c2VyLm1qc2AsXG4gICAgKVxuICAgIGRlYnVnLmluZm8oXG4gICAgICBgTW92ZSB3YXNpIGJpbmRpbmcgZmlsZSBbJHtjb2xvcnMueWVsbG93QnJpZ2h0KFxuICAgICAgICBjanNGaWxlLFxuICAgICAgKX1dIHRvIFske2NvbG9ycy55ZWxsb3dCcmlnaHQod2FzaURpcil9XWAsXG4gICAgKVxuICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKFxuICAgICAgam9pbih3YXNpRGlyLCBgJHtiaW5hcnlOYW1lfS53YXNpLmNqc2ApLFxuICAgICAgYXdhaXQgcmVhZEZpbGVBc3luYyhjanNGaWxlKSxcbiAgICApXG4gICAgZGVidWcuaW5mbyhcbiAgICAgIGBNb3ZlIHdhc2kgd29ya2VyIGZpbGUgWyR7Y29sb3JzLnllbGxvd0JyaWdodChcbiAgICAgICAgd29ya2VyRmlsZSxcbiAgICAgICl9XSB0byBbJHtjb2xvcnMueWVsbG93QnJpZ2h0KHdhc2lEaXIpfV1gLFxuICAgIClcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgIGpvaW4od2FzaURpciwgYHdhc2ktd29ya2VyLm1qc2ApLFxuICAgICAgYXdhaXQgcmVhZEZpbGVBc3luYyh3b3JrZXJGaWxlKSxcbiAgICApXG4gICAgZGVidWcuaW5mbyhcbiAgICAgIGBNb3ZlIHdhc2kgYnJvd3NlciBlbnRyeSBmaWxlIFske2NvbG9ycy55ZWxsb3dCcmlnaHQoXG4gICAgICAgIGJyb3dzZXJFbnRyeSxcbiAgICAgICl9XSB0byBbJHtjb2xvcnMueWVsbG93QnJpZ2h0KHdhc2lEaXIpfV1gLFxuICAgIClcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgIGpvaW4od2FzaURpciwgYCR7YmluYXJ5TmFtZX0ud2FzaS1icm93c2VyLmpzYCksXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdml0ZWpzL3ZpdGUvaXNzdWVzLzg0MjdcbiAgICAgIChhd2FpdCByZWFkRmlsZUFzeW5jKGJyb3dzZXJFbnRyeSwgJ3V0ZjgnKSkucmVwbGFjZShcbiAgICAgICAgYG5ldyBVUkwoJy4vd2FzaS13b3JrZXItYnJvd3Nlci5tanMnLCBpbXBvcnQubWV0YS51cmwpYCxcbiAgICAgICAgYG5ldyBVUkwoJyR7cGFja2FnZU5hbWV9LXdhc20zMi13YXNpL3dhc2ktd29ya2VyLWJyb3dzZXIubWpzJywgaW1wb3J0Lm1ldGEudXJsKWAsXG4gICAgICApLFxuICAgIClcbiAgICBkZWJ1Zy5pbmZvKFxuICAgICAgYE1vdmUgd2FzaSBicm93c2VyIHdvcmtlciBmaWxlIFske2NvbG9ycy55ZWxsb3dCcmlnaHQoXG4gICAgICAgIGJyb3dzZXJXb3JrZXJGaWxlLFxuICAgICAgKX1dIHRvIFske2NvbG9ycy55ZWxsb3dCcmlnaHQod2FzaURpcil9XWAsXG4gICAgKVxuICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKFxuICAgICAgam9pbih3YXNpRGlyLCBgd2FzaS13b3JrZXItYnJvd3Nlci5tanNgKSxcbiAgICAgIGF3YWl0IHJlYWRGaWxlQXN5bmMoYnJvd3NlcldvcmtlckZpbGUpLFxuICAgIClcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjb2xsZWN0Tm9kZUJpbmFyaWVzKHJvb3Q6IHN0cmluZykge1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IHJlYWRkaXJBc3luYyhyb290LCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSlcbiAgY29uc3Qgbm9kZUJpbmFyaWVzID0gZmlsZXNcbiAgICAuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+XG4gICAgICAgIGZpbGUuaXNGaWxlKCkgJiZcbiAgICAgICAgKGZpbGUubmFtZS5lbmRzV2l0aCgnLm5vZGUnKSB8fCBmaWxlLm5hbWUuZW5kc1dpdGgoJy53YXNtJykpLFxuICAgIClcbiAgICAubWFwKChmaWxlKSA9PiBqb2luKHJvb3QsIGZpbGUubmFtZSkpXG5cbiAgY29uc3QgZGlycyA9IGZpbGVzLmZpbHRlcigoZmlsZSkgPT4gZmlsZS5pc0RpcmVjdG9yeSgpKVxuICBmb3IgKGNvbnN0IGRpciBvZiBkaXJzKSB7XG4gICAgaWYgKGRpci5uYW1lICE9PSAnbm9kZV9tb2R1bGVzJykge1xuICAgICAgbm9kZUJpbmFyaWVzLnB1c2goLi4uKGF3YWl0IGNvbGxlY3ROb2RlQmluYXJpZXMoam9pbihyb290LCBkaXIubmFtZSkpKSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5vZGVCaW5hcmllc1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNqc0JpbmRpbmcoXG4gIGxvY2FsTmFtZTogc3RyaW5nLFxuICBwa2dOYW1lOiBzdHJpbmcsXG4gIGlkZW50czogc3RyaW5nW10sXG4gIHBhY2thZ2VWZXJzaW9uPzogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke2JpbmRpbmdIZWFkZXJ9XG4ke2NyZWF0ZUNvbW1vbkJpbmRpbmcobG9jYWxOYW1lLCBwa2dOYW1lLCBwYWNrYWdlVmVyc2lvbil9XG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUJpbmRpbmdcbiR7aWRlbnRzXG4gIC5tYXAoKGlkZW50KSA9PiBgbW9kdWxlLmV4cG9ydHMuJHtpZGVudH0gPSBuYXRpdmVCaW5kaW5nLiR7aWRlbnR9YClcbiAgLmpvaW4oJ1xcbicpfVxuYFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRXNtQmluZGluZyhcbiAgbG9jYWxOYW1lOiBzdHJpbmcsXG4gIHBrZ05hbWU6IHN0cmluZyxcbiAgaWRlbnRzOiBzdHJpbmdbXSxcbiAgcGFja2FnZVZlcnNpb24/OiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gYCR7YmluZGluZ0hlYWRlcn1cbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tICdub2RlOm1vZHVsZSdcbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybClcbmNvbnN0IF9fZGlybmFtZSA9IG5ldyBVUkwoJy4nLCBpbXBvcnQubWV0YS51cmwpLnBhdGhuYW1lXG5cbiR7Y3JlYXRlQ29tbW9uQmluZGluZyhsb2NhbE5hbWUsIHBrZ05hbWUsIHBhY2thZ2VWZXJzaW9uKX1cbmNvbnN0IHsgJHtpZGVudHMuam9pbignLCAnKX0gfSA9IG5hdGl2ZUJpbmRpbmdcbiR7aWRlbnRzLm1hcCgoaWRlbnQpID0+IGBleHBvcnQgeyAke2lkZW50fSB9YCkuam9pbignXFxuJyl9XG5gXG59XG5cbmNvbnN0IGJpbmRpbmdIZWFkZXIgPSBgLy8gcHJldHRpZXItaWdub3JlXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gQHRzLW5vY2hlY2tcbi8qIGF1dG8tZ2VuZXJhdGVkIGJ5IE5BUEktUlMgKi9cbmBcblxuZnVuY3Rpb24gY3JlYXRlQ29tbW9uQmluZGluZyhcbiAgbG9jYWxOYW1lOiBzdHJpbmcsXG4gIHBrZ05hbWU6IHN0cmluZyxcbiAgcGFja2FnZVZlcnNpb24/OiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBmdW5jdGlvbiByZXF1aXJlVHVwbGUodHVwbGU6IHN0cmluZywgaWRlbnRTaXplID0gOCkge1xuICAgIGNvbnN0IGlkZW50TG93ID0gJyAnLnJlcGVhdChpZGVudFNpemUgLSAyKVxuICAgIGNvbnN0IGlkZW50ID0gJyAnLnJlcGVhdChpZGVudFNpemUpXG4gICAgY29uc3QgdmVyc2lvbkNoZWNrID0gcGFja2FnZVZlcnNpb25cbiAgICAgID8gYFxuJHtpZGVudExvd310cnkge1xuJHtpZGVudH1jb25zdCBiaW5kaW5nID0gcmVxdWlyZSgnJHtwa2dOYW1lfS0ke3R1cGxlfScpXG4ke2lkZW50fWNvbnN0IGJpbmRpbmdQYWNrYWdlVmVyc2lvbiA9IHJlcXVpcmUoJyR7cGtnTmFtZX0tJHt0dXBsZX0vcGFja2FnZS5qc29uJykudmVyc2lvblxuJHtpZGVudH1pZiAoYmluZGluZ1BhY2thZ2VWZXJzaW9uICE9PSAnJHtwYWNrYWdlVmVyc2lvbn0nICYmIHByb2Nlc3MuZW52Lk5BUElfUlNfRU5GT1JDRV9WRVJTSU9OX0NIRUNLICYmIHByb2Nlc3MuZW52Lk5BUElfUlNfRU5GT1JDRV9WRVJTSU9OX0NIRUNLICE9PSAnMCcpIHtcbiR7aWRlbnR9ICB0aHJvdyBuZXcgRXJyb3IoXFxgTmF0aXZlIGJpbmRpbmcgcGFja2FnZSB2ZXJzaW9uIG1pc21hdGNoLCBleHBlY3RlZCAke3BhY2thZ2VWZXJzaW9ufSBidXQgZ290IFxcJHtiaW5kaW5nUGFja2FnZVZlcnNpb259LiBZb3UgY2FuIHJlaW5zdGFsbCBkZXBlbmRlbmNpZXMgdG8gZml4IHRoaXMgaXNzdWUuXFxgKVxuJHtpZGVudH19XG4ke2lkZW50fXJldHVybiBiaW5kaW5nXG4ke2lkZW50TG93fX0gY2F0Y2ggKGUpIHtcbiR7aWRlbnR9bG9hZEVycm9ycy5wdXNoKGUpXG4ke2lkZW50TG93fX1gXG4gICAgICA6IGBcbiR7aWRlbnRMb3d9dHJ5IHtcbiR7aWRlbnR9cmV0dXJuIHJlcXVpcmUoJyR7cGtnTmFtZX0tJHt0dXBsZX0nKVxuJHtpZGVudExvd319IGNhdGNoIChlKSB7XG4ke2lkZW50fWxvYWRFcnJvcnMucHVzaChlKVxuJHtpZGVudExvd319YFxuICAgIHJldHVybiBgdHJ5IHtcbiR7aWRlbnR9cmV0dXJuIHJlcXVpcmUoJy4vJHtsb2NhbE5hbWV9LiR7dHVwbGV9Lm5vZGUnKVxuJHtpZGVudExvd319IGNhdGNoIChlKSB7XG4ke2lkZW50fWxvYWRFcnJvcnMucHVzaChlKVxuJHtpZGVudExvd319JHt2ZXJzaW9uQ2hlY2t9YFxuICB9XG5cbiAgcmV0dXJuIGBjb25zdCB7IHJlYWRGaWxlU3luYyB9ID0gcmVxdWlyZSgnbm9kZTpmcycpXG5sZXQgbmF0aXZlQmluZGluZyA9IG51bGxcbmNvbnN0IGxvYWRFcnJvcnMgPSBbXVxuXG5jb25zdCBpc011c2wgPSAoKSA9PiB7XG4gIGxldCBtdXNsID0gZmFsc2VcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdsaW51eCcpIHtcbiAgICBtdXNsID0gaXNNdXNsRnJvbUZpbGVzeXN0ZW0oKVxuICAgIGlmIChtdXNsID09PSBudWxsKSB7XG4gICAgICBtdXNsID0gaXNNdXNsRnJvbVJlcG9ydCgpXG4gICAgfVxuICAgIGlmIChtdXNsID09PSBudWxsKSB7XG4gICAgICBtdXNsID0gaXNNdXNsRnJvbUNoaWxkUHJvY2VzcygpXG4gICAgfVxuICB9XG4gIHJldHVybiBtdXNsXG59XG5cbmNvbnN0IGlzRmlsZU11c2wgPSAoZikgPT4gZi5pbmNsdWRlcygnbGliYy5tdXNsLScpIHx8IGYuaW5jbHVkZXMoJ2xkLW11c2wtJylcblxuY29uc3QgaXNNdXNsRnJvbUZpbGVzeXN0ZW0gPSAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHJlYWRGaWxlU3luYygnL3Vzci9iaW4vbGRkJywgJ3V0Zi04JykuaW5jbHVkZXMoJ211c2wnKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmNvbnN0IGlzTXVzbEZyb21SZXBvcnQgPSAoKSA9PiB7XG4gIGxldCByZXBvcnQgPSBudWxsXG4gIGlmICh0eXBlb2YgcHJvY2Vzcy5yZXBvcnQ/LmdldFJlcG9ydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHByb2Nlc3MucmVwb3J0LmV4Y2x1ZGVOZXR3b3JrID0gdHJ1ZVxuICAgIHJlcG9ydCA9IHByb2Nlc3MucmVwb3J0LmdldFJlcG9ydCgpXG4gIH1cbiAgaWYgKCFyZXBvcnQpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGlmIChyZXBvcnQuaGVhZGVyICYmIHJlcG9ydC5oZWFkZXIuZ2xpYmNWZXJzaW9uUnVudGltZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHJlcG9ydC5zaGFyZWRPYmplY3RzKSkge1xuICAgIGlmIChyZXBvcnQuc2hhcmVkT2JqZWN0cy5zb21lKGlzRmlsZU11c2wpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuY29uc3QgaXNNdXNsRnJvbUNoaWxkUHJvY2VzcyA9ICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNTeW5jKCdsZGQgLS12ZXJzaW9uJywgeyBlbmNvZGluZzogJ3V0ZjgnIH0pLmluY2x1ZGVzKCdtdXNsJylcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIElmIHdlIHJlYWNoIHRoaXMgY2FzZSwgd2UgZG9uJ3Qga25vdyBpZiB0aGUgc3lzdGVtIGlzIG11c2wgb3Igbm90LCBzbyBpcyBiZXR0ZXIgdG8ganVzdCBmYWxsYmFjayB0byBmYWxzZVxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlcXVpcmVOYXRpdmUoKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OQVBJX1JTX05BVElWRV9MSUJSQVJZX1BBVEgpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHJlcXVpcmUocHJvY2Vzcy5lbnYuTkFQSV9SU19OQVRJVkVfTElCUkFSWV9QQVRIKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvYWRFcnJvcnMucHVzaChlcnIpXG4gICAgfVxuICB9IGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdhbmRyb2lkJykge1xuICAgIGlmIChwcm9jZXNzLmFyY2ggPT09ICdhcm02NCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdhbmRyb2lkLWFybTY0Jyl9XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmFyY2ggPT09ICdhcm0nKSB7XG4gICAgICAke3JlcXVpcmVUdXBsZSgnYW5kcm9pZC1hcm0tZWFiaScpfVxuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkRXJyb3JzLnB1c2gobmV3IEVycm9yKFxcYFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSBvbiBBbmRyb2lkIFxcJHtwcm9jZXNzLmFyY2h9XFxgKSlcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgIGlmIChwcm9jZXNzLmFyY2ggPT09ICd4NjQnKSB7XG4gICAgICBpZiAocHJvY2Vzcy5jb25maWc/LnZhcmlhYmxlcz8uc2hsaWJfc3VmZml4ID09PSAnZGxsLmEnIHx8IHByb2Nlc3MuY29uZmlnPy52YXJpYWJsZXM/Lm5vZGVfdGFyZ2V0X3R5cGUgPT09ICdzaGFyZWRfbGlicmFyeScpIHtcbiAgICAgICAgJHtyZXF1aXJlVHVwbGUoJ3dpbjMyLXg2NC1nbnUnKX1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCd3aW4zMi14NjQtbXN2YycpfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnaWEzMicpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCd3aW4zMi1pYTMyLW1zdmMnKX1cbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ2FybTY0Jykge1xuICAgICAgJHtyZXF1aXJlVHVwbGUoJ3dpbjMyLWFybTY0LW1zdmMnKX1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZEVycm9ycy5wdXNoKG5ldyBFcnJvcihcXGBVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUgb24gV2luZG93czogXFwke3Byb2Nlc3MuYXJjaH1cXGApKVxuICAgIH1cbiAgfSBlbHNlIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnZGFyd2luJykge1xuICAgICR7cmVxdWlyZVR1cGxlKCdkYXJ3aW4tdW5pdmVyc2FsJywgNil9XG4gICAgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ3g2NCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdkYXJ3aW4teDY0Jyl9XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmFyY2ggPT09ICdhcm02NCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdkYXJ3aW4tYXJtNjQnKX1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZEVycm9ycy5wdXNoKG5ldyBFcnJvcihcXGBVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUgb24gbWFjT1M6IFxcJHtwcm9jZXNzLmFyY2h9XFxgKSlcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2ZyZWVic2QnKSB7XG4gICAgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ3g2NCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdmcmVlYnNkLXg2NCcpfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnYXJtNjQnKSB7XG4gICAgICAke3JlcXVpcmVUdXBsZSgnZnJlZWJzZC1hcm02NCcpfVxuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkRXJyb3JzLnB1c2gobmV3IEVycm9yKFxcYFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSBvbiBGcmVlQlNEOiBcXCR7cHJvY2Vzcy5hcmNofVxcYCkpXG4gICAgfVxuICB9IGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdsaW51eCcpIHtcbiAgICBpZiAocHJvY2Vzcy5hcmNoID09PSAneDY0Jykge1xuICAgICAgaWYgKGlzTXVzbCgpKSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCdsaW51eC14NjQtbXVzbCcsIDEwKX1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCdsaW51eC14NjQtZ251JywgMTApfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnYXJtNjQnKSB7XG4gICAgICBpZiAoaXNNdXNsKCkpIHtcbiAgICAgICAgJHtyZXF1aXJlVHVwbGUoJ2xpbnV4LWFybTY0LW11c2wnLCAxMCl9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAke3JlcXVpcmVUdXBsZSgnbGludXgtYXJtNjQtZ251JywgMTApfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnYXJtJykge1xuICAgICAgaWYgKGlzTXVzbCgpKSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCdsaW51eC1hcm0tbXVzbGVhYmloZicsIDEwKX1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCdsaW51eC1hcm0tZ251ZWFiaWhmJywgMTApfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnbG9vbmc2NCcpIHtcbiAgICAgIGlmIChpc011c2woKSkge1xuICAgICAgICAke3JlcXVpcmVUdXBsZSgnbGludXgtbG9vbmc2NC1tdXNsJywgMTApfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJHtyZXF1aXJlVHVwbGUoJ2xpbnV4LWxvb25nNjQtZ251JywgMTApfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAncmlzY3Y2NCcpIHtcbiAgICAgIGlmIChpc011c2woKSkge1xuICAgICAgICAke3JlcXVpcmVUdXBsZSgnbGludXgtcmlzY3Y2NC1tdXNsJywgMTApfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJHtyZXF1aXJlVHVwbGUoJ2xpbnV4LXJpc2N2NjQtZ251JywgMTApfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAncHBjNjQnKSB7XG4gICAgICAke3JlcXVpcmVUdXBsZSgnbGludXgtcHBjNjQtZ251Jyl9XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmFyY2ggPT09ICdzMzkweCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdsaW51eC1zMzkweC1nbnUnKX1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZEVycm9ycy5wdXNoKG5ldyBFcnJvcihcXGBVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUgb24gTGludXg6IFxcJHtwcm9jZXNzLmFyY2h9XFxgKSlcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ29wZW5oYXJtb255Jykge1xuICAgIGlmIChwcm9jZXNzLmFyY2ggPT09ICdhcm02NCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdvcGVuaGFybW9ueS1hcm02NCcpfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAneDY0Jykge1xuICAgICAgJHtyZXF1aXJlVHVwbGUoJ29wZW5oYXJtb255LXg2NCcpfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnYXJtJykge1xuICAgICAgJHtyZXF1aXJlVHVwbGUoJ29wZW5oYXJtb255LWFybScpfVxuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkRXJyb3JzLnB1c2gobmV3IEVycm9yKFxcYFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSBvbiBPcGVuSGFybW9ueTogXFwke3Byb2Nlc3MuYXJjaH1cXGApKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsb2FkRXJyb3JzLnB1c2gobmV3IEVycm9yKFxcYFVuc3VwcG9ydGVkIE9TOiBcXCR7cHJvY2Vzcy5wbGF0Zm9ybX0sIGFyY2hpdGVjdHVyZTogXFwke3Byb2Nlc3MuYXJjaH1cXGApKVxuICB9XG59XG5cbm5hdGl2ZUJpbmRpbmcgPSByZXF1aXJlTmF0aXZlKClcblxuaWYgKCFuYXRpdmVCaW5kaW5nIHx8IHByb2Nlc3MuZW52Lk5BUElfUlNfRk9SQ0VfV0FTSSkge1xuICBsZXQgd2FzaUJpbmRpbmcgPSBudWxsXG4gIGxldCB3YXNpQmluZGluZ0Vycm9yID0gbnVsbFxuICB0cnkge1xuICAgIHdhc2lCaW5kaW5nID0gcmVxdWlyZSgnLi8ke2xvY2FsTmFtZX0ud2FzaS5janMnKVxuICAgIG5hdGl2ZUJpbmRpbmcgPSB3YXNpQmluZGluZ1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTkFQSV9SU19GT1JDRV9XQVNJKSB7XG4gICAgICB3YXNpQmluZGluZ0Vycm9yID0gZXJyXG4gICAgfVxuICB9XG4gIGlmICghbmF0aXZlQmluZGluZyB8fCBwcm9jZXNzLmVudi5OQVBJX1JTX0ZPUkNFX1dBU0kpIHtcbiAgICB0cnkge1xuICAgICAgd2FzaUJpbmRpbmcgPSByZXF1aXJlKCcke3BrZ05hbWV9LXdhc20zMi13YXNpJylcbiAgICAgIG5hdGl2ZUJpbmRpbmcgPSB3YXNpQmluZGluZ1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5BUElfUlNfRk9SQ0VfV0FTSSkge1xuICAgICAgICBpZiAoIXdhc2lCaW5kaW5nRXJyb3IpIHtcbiAgICAgICAgICB3YXNpQmluZGluZ0Vycm9yID0gZXJyXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2FzaUJpbmRpbmdFcnJvci5jYXVzZSA9IGVyclxuICAgICAgICB9XG4gICAgICAgIGxvYWRFcnJvcnMucHVzaChlcnIpXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OQVBJX1JTX0ZPUkNFX1dBU0kgPT09ICdlcnJvcicgJiYgIXdhc2lCaW5kaW5nKSB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ1dBU0kgYmluZGluZyBub3QgZm91bmQgYW5kIE5BUElfUlNfRk9SQ0VfV0FTSSBpcyBzZXQgdG8gZXJyb3InKVxuICAgIGVycm9yLmNhdXNlID0gd2FzaUJpbmRpbmdFcnJvclxuICAgIHRocm93IGVycm9yXG4gIH1cbn1cblxuaWYgKCFuYXRpdmVCaW5kaW5nKSB7XG4gIGlmIChsb2FkRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcXGBDYW5ub3QgZmluZCBuYXRpdmUgYmluZGluZy4gXFxgICtcbiAgICAgICAgXFxgbnBtIGhhcyBhIGJ1ZyByZWxhdGVkIHRvIG9wdGlvbmFsIGRlcGVuZGVuY2llcyAoaHR0cHM6Ly9naXRodWIuY29tL25wbS9jbGkvaXNzdWVzLzQ4MjgpLiBcXGAgK1xuICAgICAgICAnUGxlYXNlIHRyeSBcXGBucG0gaVxcYCBhZ2FpbiBhZnRlciByZW1vdmluZyBib3RoIHBhY2thZ2UtbG9jay5qc29uIGFuZCBub2RlX21vZHVsZXMgZGlyZWN0b3J5LicsXG4gICAgICB7XG4gICAgICAgIGNhdXNlOiBsb2FkRXJyb3JzLnJlZHVjZSgoZXJyLCBjdXIpID0+IHtcbiAgICAgICAgICBjdXIuY2F1c2UgPSBlcnJcbiAgICAgICAgICByZXR1cm4gY3VyXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApXG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxcYEZhaWxlZCB0byBsb2FkIG5hdGl2ZSBiaW5kaW5nXFxgKVxufVxuYFxufVxuIiwiZXhwb3J0IGNvbnN0IGNyZWF0ZVdhc2lCcm93c2VyQmluZGluZyA9IChcbiAgd2FzaUZpbGVuYW1lOiBzdHJpbmcsXG4gIGluaXRpYWxNZW1vcnkgPSA0MDAwLFxuICBtYXhpbXVtTWVtb3J5ID0gNjU1MzYsXG4gIGZzID0gZmFsc2UsXG4gIGFzeW5jSW5pdCA9IGZhbHNlLFxuICBidWZmZXIgPSBmYWxzZSxcbikgPT4ge1xuICBjb25zdCBmc0ltcG9ydCA9IGZzXG4gICAgPyBidWZmZXJcbiAgICAgID8gYGltcG9ydCB7IG1lbWZzLCBCdWZmZXIgfSBmcm9tICdAbmFwaS1ycy93YXNtLXJ1bnRpbWUvZnMnYFxuICAgICAgOiBgaW1wb3J0IHsgbWVtZnMgfSBmcm9tICdAbmFwaS1ycy93YXNtLXJ1bnRpbWUvZnMnYFxuICAgIDogJydcbiAgY29uc3QgYnVmZmVySW1wb3J0ID0gYnVmZmVyICYmICFmcyA/IGBpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInYCA6ICcnXG4gIGNvbnN0IHdhc2lDcmVhdGlvbiA9IGZzXG4gICAgPyBgXG5leHBvcnQgY29uc3QgeyBmczogX19mcywgdm9sOiBfX3ZvbHVtZSB9ID0gbWVtZnMoKVxuXG5jb25zdCBfX3dhc2kgPSBuZXcgX19XQVNJKHtcbiAgdmVyc2lvbjogJ3ByZXZpZXcxJyxcbiAgZnM6IF9fZnMsXG4gIHByZW9wZW5zOiB7XG4gICAgJy8nOiAnLycsXG4gIH0sXG59KWBcbiAgICA6IGBcbmNvbnN0IF9fd2FzaSA9IG5ldyBfX1dBU0koe1xuICB2ZXJzaW9uOiAncHJldmlldzEnLFxufSlgXG5cbiAgY29uc3Qgd29ya2VyRnNIYW5kbGVyID0gZnNcbiAgICA/IGAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBfX3dhc21DcmVhdGVPbk1lc3NhZ2VGb3JGc1Byb3h5KF9fZnMpKVxcbmBcbiAgICA6ICcnXG5cbiAgY29uc3QgZW1uYXBpSW5qZWN0QnVmZmVyID0gYnVmZmVyXG4gICAgPyAnX19lbW5hcGlDb250ZXh0LmZlYXR1cmUuQnVmZmVyID0gQnVmZmVyJ1xuICAgIDogJydcbiAgY29uc3QgZW1uYXBpSW5zdGFudGlhdGVJbXBvcnQgPSBhc3luY0luaXRcbiAgICA/IGBpbnN0YW50aWF0ZU5hcGlNb2R1bGUgYXMgX19lbW5hcGlJbnN0YW50aWF0ZU5hcGlNb2R1bGVgXG4gICAgOiBgaW5zdGFudGlhdGVOYXBpTW9kdWxlU3luYyBhcyBfX2VtbmFwaUluc3RhbnRpYXRlTmFwaU1vZHVsZVN5bmNgXG4gIGNvbnN0IGVtbmFwaUluc3RhbnRpYXRlQ2FsbCA9IGFzeW5jSW5pdFxuICAgID8gYGF3YWl0IF9fZW1uYXBpSW5zdGFudGlhdGVOYXBpTW9kdWxlYFxuICAgIDogYF9fZW1uYXBpSW5zdGFudGlhdGVOYXBpTW9kdWxlU3luY2BcblxuICByZXR1cm4gYGltcG9ydCB7XG4gIGNyZWF0ZU9uTWVzc2FnZSBhcyBfX3dhc21DcmVhdGVPbk1lc3NhZ2VGb3JGc1Byb3h5LFxuICBnZXREZWZhdWx0Q29udGV4dCBhcyBfX2VtbmFwaUdldERlZmF1bHRDb250ZXh0LFxuICAke2VtbmFwaUluc3RhbnRpYXRlSW1wb3J0fSxcbiAgV0FTSSBhcyBfX1dBU0ksXG59IGZyb20gJ0BuYXBpLXJzL3dhc20tcnVudGltZSdcbiR7ZnNJbXBvcnR9XG4ke2J1ZmZlckltcG9ydH1cbiR7d2FzaUNyZWF0aW9ufVxuXG5jb25zdCBfX3dhc21VcmwgPSBuZXcgVVJMKCcuLyR7d2FzaUZpbGVuYW1lfS53YXNtJywgaW1wb3J0Lm1ldGEudXJsKS5ocmVmXG5jb25zdCBfX2VtbmFwaUNvbnRleHQgPSBfX2VtbmFwaUdldERlZmF1bHRDb250ZXh0KClcbiR7ZW1uYXBpSW5qZWN0QnVmZmVyfVxuXG5jb25zdCBfX3NoYXJlZE1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe1xuICBpbml0aWFsOiAke2luaXRpYWxNZW1vcnl9LFxuICBtYXhpbXVtOiAke21heGltdW1NZW1vcnl9LFxuICBzaGFyZWQ6IHRydWUsXG59KVxuXG5jb25zdCBfX3dhc21GaWxlID0gYXdhaXQgZmV0Y2goX193YXNtVXJsKS50aGVuKChyZXMpID0+IHJlcy5hcnJheUJ1ZmZlcigpKVxuXG5jb25zdCB7XG4gIGluc3RhbmNlOiBfX25hcGlJbnN0YW5jZSxcbiAgbW9kdWxlOiBfX3dhc2lNb2R1bGUsXG4gIG5hcGlNb2R1bGU6IF9fbmFwaU1vZHVsZSxcbn0gPSAke2VtbmFwaUluc3RhbnRpYXRlQ2FsbH0oX193YXNtRmlsZSwge1xuICBjb250ZXh0OiBfX2VtbmFwaUNvbnRleHQsXG4gIGFzeW5jV29ya1Bvb2xTaXplOiA0LFxuICB3YXNpOiBfX3dhc2ksXG4gIG9uQ3JlYXRlV29ya2VyKCkge1xuICAgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIobmV3IFVSTCgnLi93YXNpLXdvcmtlci1icm93c2VyLm1qcycsIGltcG9ydC5tZXRhLnVybCksIHtcbiAgICAgIHR5cGU6ICdtb2R1bGUnLFxuICAgIH0pXG4ke3dvcmtlckZzSGFuZGxlcn1cbiAgICByZXR1cm4gd29ya2VyXG4gIH0sXG4gIG92ZXJ3cml0ZUltcG9ydHMoaW1wb3J0T2JqZWN0KSB7XG4gICAgaW1wb3J0T2JqZWN0LmVudiA9IHtcbiAgICAgIC4uLmltcG9ydE9iamVjdC5lbnYsXG4gICAgICAuLi5pbXBvcnRPYmplY3QubmFwaSxcbiAgICAgIC4uLmltcG9ydE9iamVjdC5lbW5hcGksXG4gICAgICBtZW1vcnk6IF9fc2hhcmVkTWVtb3J5LFxuICAgIH1cbiAgICByZXR1cm4gaW1wb3J0T2JqZWN0XG4gIH0sXG4gIGJlZm9yZUluaXQoeyBpbnN0YW5jZSB9KSB7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGluc3RhbmNlLmV4cG9ydHMpKSB7XG4gICAgICBpZiAobmFtZS5zdGFydHNXaXRoKCdfX25hcGlfcmVnaXN0ZXJfXycpKSB7XG4gICAgICAgIGluc3RhbmNlLmV4cG9ydHNbbmFtZV0oKVxuICAgICAgfVxuICAgIH1cbiAgfSxcbn0pXG5gXG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVXYXNpQmluZGluZyA9IChcbiAgd2FzbUZpbGVOYW1lOiBzdHJpbmcsXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gIGluaXRpYWxNZW1vcnkgPSA0MDAwLFxuICBtYXhpbXVtTWVtb3J5ID0gNjU1MzYsXG4pID0+IGAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLyogcHJldHRpZXItaWdub3JlICovXG5cbi8qIGF1dG8tZ2VuZXJhdGVkIGJ5IE5BUEktUlMgKi9cblxuY29uc3QgX19ub2RlRnMgPSByZXF1aXJlKCdub2RlOmZzJylcbmNvbnN0IF9fbm9kZVBhdGggPSByZXF1aXJlKCdub2RlOnBhdGgnKVxuY29uc3QgeyBXQVNJOiBfX25vZGVXQVNJIH0gPSByZXF1aXJlKCdub2RlOndhc2knKVxuY29uc3QgeyBXb3JrZXIgfSA9IHJlcXVpcmUoJ25vZGU6d29ya2VyX3RocmVhZHMnKVxuXG5jb25zdCB7XG4gIGNyZWF0ZU9uTWVzc2FnZTogX193YXNtQ3JlYXRlT25NZXNzYWdlRm9yRnNQcm94eSxcbiAgZ2V0RGVmYXVsdENvbnRleHQ6IF9fZW1uYXBpR2V0RGVmYXVsdENvbnRleHQsXG4gIGluc3RhbnRpYXRlTmFwaU1vZHVsZVN5bmM6IF9fZW1uYXBpSW5zdGFudGlhdGVOYXBpTW9kdWxlU3luYyxcbn0gPSByZXF1aXJlKCdAbmFwaS1ycy93YXNtLXJ1bnRpbWUnKVxuXG5jb25zdCBfX3Jvb3REaXIgPSBfX25vZGVQYXRoLnBhcnNlKHByb2Nlc3MuY3dkKCkpLnJvb3RcblxuY29uc3QgX193YXNpID0gbmV3IF9fbm9kZVdBU0koe1xuICB2ZXJzaW9uOiAncHJldmlldzEnLFxuICBlbnY6IHByb2Nlc3MuZW52LFxuICBwcmVvcGVuczoge1xuICAgIFtfX3Jvb3REaXJdOiBfX3Jvb3REaXIsXG4gIH1cbn0pXG5cbmNvbnN0IF9fZW1uYXBpQ29udGV4dCA9IF9fZW1uYXBpR2V0RGVmYXVsdENvbnRleHQoKVxuXG5jb25zdCBfX3NoYXJlZE1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe1xuICBpbml0aWFsOiAke2luaXRpYWxNZW1vcnl9LFxuICBtYXhpbXVtOiAke21heGltdW1NZW1vcnl9LFxuICBzaGFyZWQ6IHRydWUsXG59KVxuXG5sZXQgX193YXNtRmlsZVBhdGggPSBfX25vZGVQYXRoLmpvaW4oX19kaXJuYW1lLCAnJHt3YXNtRmlsZU5hbWV9Lndhc20nKVxuY29uc3QgX193YXNtRGVidWdGaWxlUGF0aCA9IF9fbm9kZVBhdGguam9pbihfX2Rpcm5hbWUsICcke3dhc21GaWxlTmFtZX0uZGVidWcud2FzbScpXG5cbmlmIChfX25vZGVGcy5leGlzdHNTeW5jKF9fd2FzbURlYnVnRmlsZVBhdGgpKSB7XG4gIF9fd2FzbUZpbGVQYXRoID0gX193YXNtRGVidWdGaWxlUGF0aFxufSBlbHNlIGlmICghX19ub2RlRnMuZXhpc3RzU3luYyhfX3dhc21GaWxlUGF0aCkpIHtcbiAgdHJ5IHtcbiAgICBfX3dhc21GaWxlUGF0aCA9IHJlcXVpcmUucmVzb2x2ZSgnJHtwYWNrYWdlTmFtZX0td2FzbTMyLXdhc2kvJHt3YXNtRmlsZU5hbWV9Lndhc20nKVxuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kICR7d2FzbUZpbGVOYW1lfS53YXNtIGZpbGUsIGFuZCAke3BhY2thZ2VOYW1lfS13YXNtMzItd2FzaSBwYWNrYWdlIGlzIG5vdCBpbnN0YWxsZWQuJylcbiAgfVxufVxuXG5jb25zdCB7IGluc3RhbmNlOiBfX25hcGlJbnN0YW5jZSwgbW9kdWxlOiBfX3dhc2lNb2R1bGUsIG5hcGlNb2R1bGU6IF9fbmFwaU1vZHVsZSB9ID0gX19lbW5hcGlJbnN0YW50aWF0ZU5hcGlNb2R1bGVTeW5jKF9fbm9kZUZzLnJlYWRGaWxlU3luYyhfX3dhc21GaWxlUGF0aCksIHtcbiAgY29udGV4dDogX19lbW5hcGlDb250ZXh0LFxuICBhc3luY1dvcmtQb29sU2l6ZTogKGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IHRocmVhZHNTaXplRnJvbUVudiA9IE51bWJlcihwcm9jZXNzLmVudi5OQVBJX1JTX0FTWU5DX1dPUktfUE9PTF9TSVpFID8/IHByb2Nlc3MuZW52LlVWX1RIUkVBRFBPT0xfU0laRSlcbiAgICAvLyBOYU4gPiAwIGlzIGZhbHNlXG4gICAgaWYgKHRocmVhZHNTaXplRnJvbUVudiA+IDApIHtcbiAgICAgIHJldHVybiB0aHJlYWRzU2l6ZUZyb21FbnZcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDRcbiAgICB9XG4gIH0pKCksXG4gIHJldXNlV29ya2VyOiB0cnVlLFxuICB3YXNpOiBfX3dhc2ksXG4gIG9uQ3JlYXRlV29ya2VyKCkge1xuICAgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIoX19ub2RlUGF0aC5qb2luKF9fZGlybmFtZSwgJ3dhc2ktd29ya2VyLm1qcycpLCB7XG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgIH0pXG4gICAgd29ya2VyLm9ubWVzc2FnZSA9ICh7IGRhdGEgfSkgPT4ge1xuICAgICAgX193YXNtQ3JlYXRlT25NZXNzYWdlRm9yRnNQcm94eShfX25vZGVGcykoZGF0YSlcbiAgICB9XG5cbiAgICAvLyBUaGUgbWFpbiB0aHJlYWQgb2YgTm9kZS5qcyB3YWl0cyBmb3IgYWxsIHRoZSBhY3RpdmUgaGFuZGxlcyBiZWZvcmUgZXhpdGluZy5cbiAgICAvLyBCdXQgUnVzdCB0aHJlYWRzIGFyZSBuZXZlciB3YWl0ZWQgd2l0aG91dCBcXGB0aHJlYWQ6OmpvaW5cXGAuXG4gICAgLy8gU28gaGVyZSB3ZSBoYWNrIHRoZSBjb2RlIG9mIE5vZGUuanMgdG8gcHJldmVudCB0aGUgd29ya2VycyBmcm9tIGJlaW5nIHJlZmVyZW5jZWQgKGFjdGl2ZSkuXG4gICAgLy8gQWNjb3JkaW5nIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iLzE5ZTBkNDcyNzI4Yzc5ZDQxOGI3NGJkZGZmNTg4YmVhNzBhNDAzZDAvbGliL2ludGVybmFsL3dvcmtlci5qcyNMNDE1LFxuICAgIC8vIGEgd29ya2VyIGlzIGNvbnNpc3Qgb2YgdHdvIGhhbmRsZXM6IGtQdWJsaWNQb3J0IGFuZCBrSGFuZGxlLlxuICAgIHtcbiAgICAgIGNvbnN0IGtQdWJsaWNQb3J0ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh3b3JrZXIpLmZpbmQocyA9PlxuICAgICAgICBzLnRvU3RyaW5nKCkuaW5jbHVkZXMoXCJrUHVibGljUG9ydFwiKVxuICAgICAgKTtcbiAgICAgIGlmIChrUHVibGljUG9ydCkge1xuICAgICAgICB3b3JrZXJba1B1YmxpY1BvcnRdLnJlZiA9ICgpID0+IHt9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBrSGFuZGxlID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh3b3JrZXIpLmZpbmQocyA9PlxuICAgICAgICBzLnRvU3RyaW5nKCkuaW5jbHVkZXMoXCJrSGFuZGxlXCIpXG4gICAgICApO1xuICAgICAgaWYgKGtIYW5kbGUpIHtcbiAgICAgICAgd29ya2VyW2tIYW5kbGVdLnJlZiA9ICgpID0+IHt9O1xuICAgICAgfVxuXG4gICAgICB3b3JrZXIudW5yZWYoKTtcbiAgICB9XG4gICAgcmV0dXJuIHdvcmtlclxuICB9LFxuICBvdmVyd3JpdGVJbXBvcnRzKGltcG9ydE9iamVjdCkge1xuICAgIGltcG9ydE9iamVjdC5lbnYgPSB7XG4gICAgICAuLi5pbXBvcnRPYmplY3QuZW52LFxuICAgICAgLi4uaW1wb3J0T2JqZWN0Lm5hcGksXG4gICAgICAuLi5pbXBvcnRPYmplY3QuZW1uYXBpLFxuICAgICAgbWVtb3J5OiBfX3NoYXJlZE1lbW9yeSxcbiAgICB9XG4gICAgcmV0dXJuIGltcG9ydE9iamVjdFxuICB9LFxuICBiZWZvcmVJbml0KHsgaW5zdGFuY2UgfSkge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhpbnN0YW5jZS5leHBvcnRzKSkge1xuICAgICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnX19uYXBpX3JlZ2lzdGVyX18nKSkge1xuICAgICAgICBpbnN0YW5jZS5leHBvcnRzW25hbWVdKClcbiAgICAgIH1cbiAgICB9XG4gIH0sXG59KVxuYFxuIiwiZXhwb3J0IGNvbnN0IFdBU0lfV09SS0VSX1RFTVBMQVRFID0gYGltcG9ydCBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBXQVNJIH0gZnJvbSBcIm5vZGU6d2FzaVwiO1xuaW1wb3J0IHsgcGFyZW50UG9ydCwgV29ya2VyIH0gZnJvbSBcIm5vZGU6d29ya2VyX3RocmVhZHNcIjtcblxuY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcblxuY29uc3QgeyBpbnN0YW50aWF0ZU5hcGlNb2R1bGVTeW5jLCBNZXNzYWdlSGFuZGxlciwgZ2V0RGVmYXVsdENvbnRleHQgfSA9IHJlcXVpcmUoXCJAbmFwaS1ycy93YXNtLXJ1bnRpbWVcIik7XG5cbmlmIChwYXJlbnRQb3J0KSB7XG4gIHBhcmVudFBvcnQub24oXCJtZXNzYWdlXCIsIChkYXRhKSA9PiB7XG4gICAgZ2xvYmFsVGhpcy5vbm1lc3NhZ2UoeyBkYXRhIH0pO1xuICB9KTtcbn1cblxuT2JqZWN0LmFzc2lnbihnbG9iYWxUaGlzLCB7XG4gIHNlbGY6IGdsb2JhbFRoaXMsXG4gIHJlcXVpcmUsXG4gIFdvcmtlcixcbiAgaW1wb3J0U2NyaXB0czogZnVuY3Rpb24gKGYpIHtcbiAgICA7KDAsIGV2YWwpKGZzLnJlYWRGaWxlU3luYyhmLCBcInV0ZjhcIikgKyBcIi8vIyBzb3VyY2VVUkw9XCIgKyBmKTtcbiAgfSxcbiAgcG9zdE1lc3NhZ2U6IGZ1bmN0aW9uIChtc2cpIHtcbiAgICBpZiAocGFyZW50UG9ydCkge1xuICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShtc2cpO1xuICAgIH1cbiAgfSxcbn0pO1xuXG5jb25zdCBlbW5hcGlDb250ZXh0ID0gZ2V0RGVmYXVsdENvbnRleHQoKTtcblxuY29uc3QgX19yb290RGlyID0gcGFyc2UocHJvY2Vzcy5jd2QoKSkucm9vdDtcblxuY29uc3QgaGFuZGxlciA9IG5ldyBNZXNzYWdlSGFuZGxlcih7XG4gIG9uTG9hZCh7IHdhc21Nb2R1bGUsIHdhc21NZW1vcnkgfSkge1xuICAgIGNvbnN0IHdhc2kgPSBuZXcgV0FTSSh7XG4gICAgICB2ZXJzaW9uOiAncHJldmlldzEnLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIHByZW9wZW5zOiB7XG4gICAgICAgIFtfX3Jvb3REaXJdOiBfX3Jvb3REaXIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGluc3RhbnRpYXRlTmFwaU1vZHVsZVN5bmMod2FzbU1vZHVsZSwge1xuICAgICAgY2hpbGRUaHJlYWQ6IHRydWUsXG4gICAgICB3YXNpLFxuICAgICAgY29udGV4dDogZW1uYXBpQ29udGV4dCxcbiAgICAgIG92ZXJ3cml0ZUltcG9ydHMoaW1wb3J0T2JqZWN0KSB7XG4gICAgICAgIGltcG9ydE9iamVjdC5lbnYgPSB7XG4gICAgICAgICAgLi4uaW1wb3J0T2JqZWN0LmVudixcbiAgICAgICAgICAuLi5pbXBvcnRPYmplY3QubmFwaSxcbiAgICAgICAgICAuLi5pbXBvcnRPYmplY3QuZW1uYXBpLFxuICAgICAgICAgIG1lbW9yeTogd2FzbU1lbW9yeVxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9KTtcbiAgfSxcbn0pO1xuXG5nbG9iYWxUaGlzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7XG4gIGhhbmRsZXIuaGFuZGxlKGUpO1xufTtcbmBcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVdhc2lCcm93c2VyV29ya2VyQmluZGluZyA9IChmczogYm9vbGVhbikgPT4ge1xuICBjb25zdCBmc0ltcG9ydCA9IGZzXG4gICAgPyBgaW1wb3J0IHsgaW5zdGFudGlhdGVOYXBpTW9kdWxlU3luYywgTWVzc2FnZUhhbmRsZXIsIFdBU0ksIGNyZWF0ZUZzUHJveHkgfSBmcm9tICdAbmFwaS1ycy93YXNtLXJ1bnRpbWUnXG5pbXBvcnQgeyBtZW1mc0V4cG9ydGVkIGFzIF9fbWVtZnNFeHBvcnRlZCB9IGZyb20gJ0BuYXBpLXJzL3dhc20tcnVudGltZS9mcydcblxuY29uc3QgZnMgPSBjcmVhdGVGc1Byb3h5KF9fbWVtZnNFeHBvcnRlZClgXG4gICAgOiBgaW1wb3J0IHsgaW5zdGFudGlhdGVOYXBpTW9kdWxlU3luYywgTWVzc2FnZUhhbmRsZXIsIFdBU0kgfSBmcm9tICdAbmFwaS1ycy93YXNtLXJ1bnRpbWUnYFxuICBjb25zdCB3YXNpQ3JlYXRpb24gPSBmc1xuICAgID8gYGNvbnN0IHdhc2kgPSBuZXcgV0FTSSh7XG4gICAgICBmcyxcbiAgICAgIHByZW9wZW5zOiB7XG4gICAgICAgICcvJzogJy8nLFxuICAgICAgfSxcbiAgICAgIHByaW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUubG9nLmFwcGx5KGNvbnNvbGUsIGFyZ3VtZW50cylcbiAgICAgIH0sXG4gICAgICBwcmludEVycjogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKVxuICAgICAgfSxcbiAgICB9KWBcbiAgICA6IGBjb25zdCB3YXNpID0gbmV3IFdBU0koe1xuICAgICAgcHJpbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKVxuICAgICAgfSxcbiAgICAgIHByaW50RXJyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvci5hcHBseShjb25zb2xlLCBhcmd1bWVudHMpXG4gICAgICB9LFxuICAgIH0pYFxuICByZXR1cm4gYCR7ZnNJbXBvcnR9XG5cbmNvbnN0IGhhbmRsZXIgPSBuZXcgTWVzc2FnZUhhbmRsZXIoe1xuICBvbkxvYWQoeyB3YXNtTW9kdWxlLCB3YXNtTWVtb3J5IH0pIHtcbiAgICAke3dhc2lDcmVhdGlvbn1cbiAgICByZXR1cm4gaW5zdGFudGlhdGVOYXBpTW9kdWxlU3luYyh3YXNtTW9kdWxlLCB7XG4gICAgICBjaGlsZFRocmVhZDogdHJ1ZSxcbiAgICAgIHdhc2ksXG4gICAgICBvdmVyd3JpdGVJbXBvcnRzKGltcG9ydE9iamVjdCkge1xuICAgICAgICBpbXBvcnRPYmplY3QuZW52ID0ge1xuICAgICAgICAgIC4uLmltcG9ydE9iamVjdC5lbnYsXG4gICAgICAgICAgLi4uaW1wb3J0T2JqZWN0Lm5hcGksXG4gICAgICAgICAgLi4uaW1wb3J0T2JqZWN0LmVtbmFwaSxcbiAgICAgICAgICBtZW1vcnk6IHdhc21NZW1vcnksXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSlcbiAgfSxcbn0pXG5cbmdsb2JhbFRoaXMub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHtcbiAgaGFuZGxlci5oYW5kbGUoZSlcbn1cbmBcbn1cbiIsImltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ25vZGU6Y3J5cHRvJ1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jLCBybVN5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gJ25vZGU6bW9kdWxlJ1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ25vZGU6b3MnXG5pbXBvcnQgeyBwYXJzZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcblxuaW1wb3J0ICogYXMgY29sb3JzIGZyb20gJ2NvbG9yZXR0ZSdcblxuaW1wb3J0IHR5cGUgeyBCdWlsZE9wdGlvbnMgYXMgUmF3QnVpbGRPcHRpb25zIH0gZnJvbSAnLi4vZGVmL2J1aWxkLmpzJ1xuaW1wb3J0IHtcbiAgQ0xJX1ZFUlNJT04sXG4gIGNvcHlGaWxlQXN5bmMsXG4gIHR5cGUgQ3JhdGUsXG4gIGRlYnVnRmFjdG9yeSxcbiAgREVGQVVMVF9UWVBFX0RFRl9IRUFERVIsXG4gIGZpbGVFeGlzdHMsXG4gIGdldFN5c3RlbURlZmF1bHRUYXJnZXQsXG4gIGdldFRhcmdldExpbmtlcixcbiAgbWtkaXJBc3luYyxcbiAgdHlwZSBOYXBpQ29uZmlnLFxuICBwYXJzZU1ldGFkYXRhLFxuICBwYXJzZVRyaXBsZSxcbiAgcHJvY2Vzc1R5cGVEZWYsXG4gIHJlYWRGaWxlQXN5bmMsXG4gIHJlYWROYXBpQ29uZmlnLFxuICB0eXBlIFRhcmdldCxcbiAgdGFyZ2V0VG9FbnZWYXIsXG4gIHRyeUluc3RhbGxDYXJnb0JpbmFyeSxcbiAgdW5saW5rQXN5bmMsXG4gIHdyaXRlRmlsZUFzeW5jLFxuICBkaXJFeGlzdHNBc3luYyxcbiAgcmVhZGRpckFzeW5jLFxuICB0eXBlIENhcmdvV29ya3NwYWNlTWV0YWRhdGEsXG59IGZyb20gJy4uL3V0aWxzL2luZGV4LmpzJ1xuXG5pbXBvcnQgeyBjcmVhdGVDanNCaW5kaW5nLCBjcmVhdGVFc21CaW5kaW5nIH0gZnJvbSAnLi90ZW1wbGF0ZXMvaW5kZXguanMnXG5pbXBvcnQge1xuICBjcmVhdGVXYXNpQmluZGluZyxcbiAgY3JlYXRlV2FzaUJyb3dzZXJCaW5kaW5nLFxufSBmcm9tICcuL3RlbXBsYXRlcy9sb2FkLXdhc2ktdGVtcGxhdGUuanMnXG5pbXBvcnQge1xuICBjcmVhdGVXYXNpQnJvd3NlcldvcmtlckJpbmRpbmcsXG4gIFdBU0lfV09SS0VSX1RFTVBMQVRFLFxufSBmcm9tICcuL3RlbXBsYXRlcy93YXNpLXdvcmtlci10ZW1wbGF0ZS5qcydcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0ZhY3RvcnkoJ2J1aWxkJylcbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybClcblxudHlwZSBPdXRwdXRLaW5kID0gJ2pzJyB8ICdkdHMnIHwgJ25vZGUnIHwgJ2V4ZScgfCAnd2FzbSdcbnR5cGUgT3V0cHV0ID0geyBraW5kOiBPdXRwdXRLaW5kOyBwYXRoOiBzdHJpbmcgfVxuXG50eXBlIEJ1aWxkT3B0aW9ucyA9IFJhd0J1aWxkT3B0aW9ucyAmIHsgY2FyZ29PcHRpb25zPzogc3RyaW5nW10gfVxudHlwZSBQYXJzZWRCdWlsZE9wdGlvbnMgPSBPbWl0PEJ1aWxkT3B0aW9ucywgJ2N3ZCc+ICYgeyBjd2Q6IHN0cmluZyB9XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFByb2plY3QocmF3T3B0aW9uczogQnVpbGRPcHRpb25zKSB7XG4gIGRlYnVnKCduYXBpIGJ1aWxkIGNvbW1hbmQgcmVjZWl2ZSBvcHRpb25zOiAlTycsIHJhd09wdGlvbnMpXG5cbiAgY29uc3Qgb3B0aW9uczogUGFyc2VkQnVpbGRPcHRpb25zID0ge1xuICAgIGR0c0NhY2hlOiB0cnVlLFxuICAgIC4uLnJhd09wdGlvbnMsXG4gICAgY3dkOiByYXdPcHRpb25zLmN3ZCA/PyBwcm9jZXNzLmN3ZCgpLFxuICB9XG5cbiAgY29uc3QgcmVzb2x2ZVBhdGggPSAoLi4ucGF0aHM6IHN0cmluZ1tdKSA9PiByZXNvbHZlKG9wdGlvbnMuY3dkLCAuLi5wYXRocylcblxuICBjb25zdCBtYW5pZmVzdFBhdGggPSByZXNvbHZlUGF0aChvcHRpb25zLm1hbmlmZXN0UGF0aCA/PyAnQ2FyZ28udG9tbCcpXG4gIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgcGFyc2VNZXRhZGF0YShtYW5pZmVzdFBhdGgpXG5cbiAgY29uc3QgY3JhdGUgPSBtZXRhZGF0YS5wYWNrYWdlcy5maW5kKChwKSA9PiB7XG4gICAgLy8gcGFja2FnZSB3aXRoIGdpdmVuIG5hbWVcbiAgICBpZiAob3B0aW9ucy5wYWNrYWdlKSB7XG4gICAgICByZXR1cm4gcC5uYW1lID09PSBvcHRpb25zLnBhY2thZ2VcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHAubWFuaWZlc3RfcGF0aCA9PT0gbWFuaWZlc3RQYXRoXG4gICAgfVxuICB9KVxuXG4gIGlmICghY3JhdGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnVW5hYmxlIHRvIGZpbmQgY3JhdGUgdG8gYnVpbGQuIEl0IHNlZW1zIHlvdSBhcmUgdHJ5aW5nIHRvIGJ1aWxkIGEgY3JhdGUgaW4gYSB3b3Jrc3BhY2UsIHRyeSB1c2luZyBgLS1wYWNrYWdlYCBvcHRpb24gdG8gc3BlY2lmeSB0aGUgcGFja2FnZSB0byBidWlsZC4nLFxuICAgIClcbiAgfVxuICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkTmFwaUNvbmZpZyhcbiAgICByZXNvbHZlUGF0aChvcHRpb25zLnBhY2thZ2VKc29uUGF0aCA/PyAncGFja2FnZS5qc29uJyksXG4gICAgb3B0aW9ucy5jb25maWdQYXRoID8gcmVzb2x2ZVBhdGgob3B0aW9ucy5jb25maWdQYXRoKSA6IHVuZGVmaW5lZCxcbiAgKVxuXG4gIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQnVpbGRlcihtZXRhZGF0YSwgY3JhdGUsIGNvbmZpZywgb3B0aW9ucylcblxuICByZXR1cm4gYnVpbGRlci5idWlsZCgpXG59XG5cbmNsYXNzIEJ1aWxkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGFyZ3M6IHN0cmluZ1tdID0gW11cbiAgcHJpdmF0ZSByZWFkb25seSBlbnZzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge31cbiAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXRzOiBPdXRwdXRbXSA9IFtdXG5cbiAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXQ6IFRhcmdldFxuICBwcml2YXRlIHJlYWRvbmx5IGNyYXRlRGlyOiBzdHJpbmdcbiAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXREaXI6IHN0cmluZ1xuICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldERpcjogc3RyaW5nXG4gIHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlVHlwZURlZjogYm9vbGVhbiA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXRhZGF0YTogQ2FyZ29Xb3Jrc3BhY2VNZXRhZGF0YSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyYXRlOiBDcmF0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogTmFwaUNvbmZpZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFBhcnNlZEJ1aWxkT3B0aW9ucyxcbiAgKSB7XG4gICAgdGhpcy50YXJnZXQgPSBvcHRpb25zLnRhcmdldFxuICAgICAgPyBwYXJzZVRyaXBsZShvcHRpb25zLnRhcmdldClcbiAgICAgIDogcHJvY2Vzcy5lbnYuQ0FSR09fQlVJTERfVEFSR0VUXG4gICAgICAgID8gcGFyc2VUcmlwbGUocHJvY2Vzcy5lbnYuQ0FSR09fQlVJTERfVEFSR0VUKVxuICAgICAgICA6IGdldFN5c3RlbURlZmF1bHRUYXJnZXQoKVxuICAgIHRoaXMuY3JhdGVEaXIgPSBwYXJzZShjcmF0ZS5tYW5pZmVzdF9wYXRoKS5kaXJcbiAgICB0aGlzLm91dHB1dERpciA9IHJlc29sdmUoXG4gICAgICB0aGlzLm9wdGlvbnMuY3dkLFxuICAgICAgb3B0aW9ucy5vdXRwdXREaXIgPz8gdGhpcy5jcmF0ZURpcixcbiAgICApXG4gICAgdGhpcy50YXJnZXREaXIgPVxuICAgICAgb3B0aW9ucy50YXJnZXREaXIgPz9cbiAgICAgIHByb2Nlc3MuZW52LkNBUkdPX0JVSUxEX1RBUkdFVF9ESVIgPz9cbiAgICAgIG1ldGFkYXRhLnRhcmdldF9kaXJlY3RvcnlcbiAgICB0aGlzLmVuYWJsZVR5cGVEZWYgPSB0aGlzLmNyYXRlLmRlcGVuZGVuY2llcy5zb21lKFxuICAgICAgKGRlcCkgPT5cbiAgICAgICAgZGVwLm5hbWUgPT09ICduYXBpLWRlcml2ZScgJiZcbiAgICAgICAgKGRlcC51c2VzX2RlZmF1bHRfZmVhdHVyZXMgfHwgZGVwLmZlYXR1cmVzLmluY2x1ZGVzKCd0eXBlLWRlZicpKSxcbiAgICApXG5cbiAgICBpZiAoIXRoaXMuZW5hYmxlVHlwZURlZikge1xuICAgICAgY29uc3QgcmVxdWlyZW1lbnRXYXJuaW5nID1cbiAgICAgICAgJ2BuYXBpLWRlcml2ZWAgY3JhdGUgaXMgbm90IHVzZWQgb3IgYHR5cGUtZGVmYCBmZWF0dXJlIGlzIG5vdCBlbmFibGVkIGZvciBgbmFwaS1kZXJpdmVgIGNyYXRlJ1xuICAgICAgZGVidWcud2FybihcbiAgICAgICAgYCR7cmVxdWlyZW1lbnRXYXJuaW5nfS4gV2lsbCBza2lwIGJpbmRpbmcgZ2VuZXJhdGlvbiBmb3IgXFxgLm5vZGVcXGAsIFxcYC53YXNpXFxgIGFuZCBcXGAuZC50c1xcYCBmaWxlcy5gLFxuICAgICAgKVxuXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMub3B0aW9ucy5kdHMgfHxcbiAgICAgICAgdGhpcy5vcHRpb25zLmR0c0hlYWRlciB8fFxuICAgICAgICB0aGlzLmNvbmZpZy5kdHNIZWFkZXIgfHxcbiAgICAgICAgdGhpcy5jb25maWcuZHRzSGVhZGVyRmlsZVxuICAgICAgKSB7XG4gICAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgICAgYCR7cmVxdWlyZW1lbnRXYXJuaW5nfS4gXFxgZHRzXFxgIHJlbGF0ZWQgb3B0aW9ucyBhcmUgZW5hYmxlZCBidXQgd2lsbCBiZSBpZ25vcmVkLmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgY2R5TGliTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jcmF0ZS50YXJnZXRzLmZpbmQoKHQpID0+IHQuY3JhdGVfdHlwZXMuaW5jbHVkZXMoJ2NkeWxpYicpKVxuICAgICAgPy5uYW1lXG4gIH1cblxuICBnZXQgYmluTmFtZSgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5vcHRpb25zLmJpbiA/P1xuICAgICAgLy8gb25seSBhdmFpbGFibGUgaWYgbm90IGNkeWxpYiBvciBiaW4gbmFtZSBzcGVjaWZpZWRcbiAgICAgICh0aGlzLmNkeUxpYk5hbWVcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogdGhpcy5jcmF0ZS50YXJnZXRzLmZpbmQoKHQpID0+IHQuY3JhdGVfdHlwZXMuaW5jbHVkZXMoJ2JpbicpKT8ubmFtZSlcbiAgICApXG4gIH1cblxuICBidWlsZCgpIHtcbiAgICBpZiAoIXRoaXMuY2R5TGliTmFtZSkge1xuICAgICAgY29uc3Qgd2FybmluZyA9XG4gICAgICAgICdNaXNzaW5nIGBjcmF0ZS10eXBlID0gW1wiY2R5bGliXCJdYCBpbiBbbGliXSBjb25maWcuIFRoZSBidWlsZCByZXN1bHQgd2lsbCBub3QgYmUgYXZhaWxhYmxlIGFzIG5vZGUgYWRkb24uJ1xuXG4gICAgICBpZiAodGhpcy5iaW5OYW1lKSB7XG4gICAgICAgIGRlYnVnLndhcm4od2FybmluZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcih3YXJuaW5nKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBpY2tCaW5hcnkoKVxuICAgICAgLnNldFBhY2thZ2UoKVxuICAgICAgLnNldEZlYXR1cmVzKClcbiAgICAgIC5zZXRUYXJnZXQoKVxuICAgICAgLnBpY2tDcm9zc1Rvb2xjaGFpbigpXG4gICAgICAuc2V0RW52cygpXG4gICAgICAuc2V0QnlwYXNzQXJncygpXG4gICAgICAuZXhlYygpXG4gIH1cblxuICBwcml2YXRlIHBpY2tDcm9zc1Rvb2xjaGFpbigpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy51c2VOYXBpQ3Jvc3MpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMudXNlQ3Jvc3MpIHtcbiAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgICdZb3UgYXJlIHRyeWluZyB0byB1c2UgYm90aCBgLS1jcm9zc2AgYW5kIGAtLXVzZS1uYXBpLWNyb3NzYCBvcHRpb25zLCBgLS11c2UtY3Jvc3NgIHdpbGwgYmUgaWdub3JlZC4nLFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3Jvc3NDb21waWxlKSB7XG4gICAgICBkZWJ1Zy53YXJuKFxuICAgICAgICAnWW91IGFyZSB0cnlpbmcgdG8gdXNlIGJvdGggYC0tY3Jvc3MtY29tcGlsZWAgYW5kIGAtLXVzZS1uYXBpLWNyb3NzYCBvcHRpb25zLCBgLS1jcm9zcy1jb21waWxlYCB3aWxsIGJlIGlnbm9yZWQuJyxcbiAgICAgIClcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgeyB2ZXJzaW9uLCBkb3dubG9hZCB9ID0gcmVxdWlyZSgnQG5hcGktcnMvY3Jvc3MtdG9vbGNoYWluJylcblxuICAgICAgY29uc3QgYWxpYXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICdzMzkweC11bmtub3duLWxpbnV4LWdudSc6ICdzMzkweC1pYm0tbGludXgtZ251JyxcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG9vbGNoYWluUGF0aCA9IGpvaW4oXG4gICAgICAgIGhvbWVkaXIoKSxcbiAgICAgICAgJy5uYXBpLXJzJyxcbiAgICAgICAgJ2Nyb3NzLXRvb2xjaGFpbicsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIHRoaXMudGFyZ2V0LnRyaXBsZSxcbiAgICAgIClcbiAgICAgIG1rZGlyU3luYyh0b29sY2hhaW5QYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgICAgaWYgKGV4aXN0c1N5bmMoam9pbih0b29sY2hhaW5QYXRoLCAncGFja2FnZS5qc29uJykpKSB7XG4gICAgICAgIGRlYnVnKGBUb29sY2hhaW4gJHt0b29sY2hhaW5QYXRofSBleGlzdHMsIHNraXAgZXh0cmFjdGluZ2ApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0YXJBcmNoaXZlID0gZG93bmxvYWQocHJvY2Vzcy5hcmNoLCB0aGlzLnRhcmdldC50cmlwbGUpXG4gICAgICAgIHRhckFyY2hpdmUudW5wYWNrKHRvb2xjaGFpblBhdGgpXG4gICAgICB9XG4gICAgICBjb25zdCB1cHBlckNhc2VUYXJnZXQgPSB0YXJnZXRUb0VudlZhcih0aGlzLnRhcmdldC50cmlwbGUpXG4gICAgICBjb25zdCBjcm9zc1RhcmdldE5hbWUgPSBhbGlhc1t0aGlzLnRhcmdldC50cmlwbGVdID8/IHRoaXMudGFyZ2V0LnRyaXBsZVxuICAgICAgY29uc3QgbGlua2VyRW52ID0gYENBUkdPX1RBUkdFVF8ke3VwcGVyQ2FzZVRhcmdldH1fTElOS0VSYFxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgbGlua2VyRW52LFxuICAgICAgICBqb2luKHRvb2xjaGFpblBhdGgsICdiaW4nLCBgJHtjcm9zc1RhcmdldE5hbWV9LWdjY2ApLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9TWVNST09UJyxcbiAgICAgICAgam9pbih0b29sY2hhaW5QYXRoLCBjcm9zc1RhcmdldE5hbWUsICdzeXNyb290JyksXG4gICAgICApXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKFxuICAgICAgICAnVEFSR0VUX0FSJyxcbiAgICAgICAgam9pbih0b29sY2hhaW5QYXRoLCAnYmluJywgYCR7Y3Jvc3NUYXJnZXROYW1lfS1hcmApLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9SQU5MSUInLFxuICAgICAgICBqb2luKHRvb2xjaGFpblBhdGgsICdiaW4nLCBgJHtjcm9zc1RhcmdldE5hbWV9LXJhbmxpYmApLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9SRUFERUxGJyxcbiAgICAgICAgam9pbih0b29sY2hhaW5QYXRoLCAnYmluJywgYCR7Y3Jvc3NUYXJnZXROYW1lfS1yZWFkZWxmYCksXG4gICAgICApXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKFxuICAgICAgICAnVEFSR0VUX0NfSU5DTFVERV9QQVRIJyxcbiAgICAgICAgam9pbih0b29sY2hhaW5QYXRoLCBjcm9zc1RhcmdldE5hbWUsICdzeXNyb290JywgJ3VzcicsICdpbmNsdWRlLycpLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9DQycsXG4gICAgICAgIGpvaW4odG9vbGNoYWluUGF0aCwgJ2JpbicsIGAke2Nyb3NzVGFyZ2V0TmFtZX0tZ2NjYCksXG4gICAgICApXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKFxuICAgICAgICAnVEFSR0VUX0NYWCcsXG4gICAgICAgIGpvaW4odG9vbGNoYWluUGF0aCwgJ2JpbicsIGAke2Nyb3NzVGFyZ2V0TmFtZX0tZysrYCksXG4gICAgICApXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKFxuICAgICAgICAnQklOREdFTl9FWFRSQV9DTEFOR19BUkdTJyxcbiAgICAgICAgYC0tc3lzcm9vdD0ke3RoaXMuZW52cy5UQVJHRVRfU1lTUk9PVH19YCxcbiAgICAgIClcblxuICAgICAgaWYgKFxuICAgICAgICBwcm9jZXNzLmVudi5UQVJHRVRfQ0M/LnN0YXJ0c1dpdGgoJ2NsYW5nJykgfHxcbiAgICAgICAgKHByb2Nlc3MuZW52LkNDPy5zdGFydHNXaXRoKCdjbGFuZycpICYmICFwcm9jZXNzLmVudi5UQVJHRVRfQ0MpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgVEFSR0VUX0NGTEFHUyA9IHByb2Nlc3MuZW52LlRBUkdFVF9DRkxBR1MgPz8gJydcbiAgICAgICAgdGhpcy5lbnZzLlRBUkdFVF9DRkxBR1MgPSBgLS1zeXNyb290PSR7dGhpcy5lbnZzLlRBUkdFVF9TWVNST09UfSAtLWdjYy10b29sY2hhaW49JHt0b29sY2hhaW5QYXRofSAke1RBUkdFVF9DRkxBR1N9YFxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAocHJvY2Vzcy5lbnYuQ1hYPy5zdGFydHNXaXRoKCdjbGFuZysrJykgJiYgIXByb2Nlc3MuZW52LlRBUkdFVF9DWFgpIHx8XG4gICAgICAgIHByb2Nlc3MuZW52LlRBUkdFVF9DWFg/LnN0YXJ0c1dpdGgoJ2NsYW5nKysnKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IFRBUkdFVF9DWFhGTEFHUyA9IHByb2Nlc3MuZW52LlRBUkdFVF9DWFhGTEFHUyA/PyAnJ1xuICAgICAgICB0aGlzLmVudnMuVEFSR0VUX0NYWEZMQUdTID0gYC0tc3lzcm9vdD0ke3RoaXMuZW52cy5UQVJHRVRfU1lTUk9PVH0gLS1nY2MtdG9vbGNoYWluPSR7dG9vbGNoYWluUGF0aH0gJHtUQVJHRVRfQ1hYRkxBR1N9YFxuICAgICAgfVxuICAgICAgdGhpcy5lbnZzLlBBVEggPSB0aGlzLmVudnMuUEFUSFxuICAgICAgICA/IGAke3Rvb2xjaGFpblBhdGh9L2Jpbjoke3RoaXMuZW52cy5QQVRIfToke3Byb2Nlc3MuZW52LlBBVEh9YFxuICAgICAgICA6IGAke3Rvb2xjaGFpblBhdGh9L2Jpbjoke3Byb2Nlc3MuZW52LlBBVEh9YFxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGRlYnVnLndhcm4oJ1BpY2sgY3Jvc3MgdG9vbGNoYWluIGZhaWxlZCcsIGUgYXMgRXJyb3IpXG4gICAgICAvLyBpZ25vcmUsIGRvIG5vdGhpbmdcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHByaXZhdGUgZXhlYygpIHtcbiAgICBkZWJ1ZyhgU3RhcnQgYnVpbGRpbmcgY3JhdGU6ICR7dGhpcy5jcmF0ZS5uYW1lfWApXG4gICAgZGVidWcoJyAgJWknLCBgY2FyZ28gJHt0aGlzLmFyZ3Muam9pbignICcpfWApXG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG5cbiAgICBjb25zdCB3YXRjaCA9IHRoaXMub3B0aW9ucy53YXRjaFxuICAgIGNvbnN0IGJ1aWxkVGFzayA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudXNlQ3Jvc3MgJiYgdGhpcy5vcHRpb25zLmNyb3NzQ29tcGlsZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2AtLXVzZS1jcm9zc2AgYW5kIGAtLWNyb3NzLWNvbXBpbGVgIGNhbiBub3QgYmUgdXNlZCB0b2dldGhlcicsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbW1hbmQgPVxuICAgICAgICBwcm9jZXNzLmVudi5DQVJHTyA/PyAodGhpcy5vcHRpb25zLnVzZUNyb3NzID8gJ2Nyb3NzJyA6ICdjYXJnbycpXG4gICAgICBjb25zdCBidWlsZFByb2Nlc3MgPSBzcGF3bihjb21tYW5kLCB0aGlzLmFyZ3MsIHtcbiAgICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52LCAuLi50aGlzLmVudnMgfSxcbiAgICAgICAgc3RkaW86IHdhdGNoID8gWydpbmhlcml0JywgJ2luaGVyaXQnLCAncGlwZSddIDogJ2luaGVyaXQnLFxuICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QsXG4gICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgICB9KVxuXG4gICAgICBidWlsZFByb2Nlc3Mub25jZSgnZXhpdCcsIChjb2RlKSA9PiB7XG4gICAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgICAgZGVidWcoJyVpJywgYEJ1aWxkIGNyYXRlICR7dGhpcy5jcmF0ZS5uYW1lfSBzdWNjZXNzZnVsbHkhYClcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBCdWlsZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJHtjb2RlfWApKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBidWlsZFByb2Nlc3Mub25jZSgnZXJyb3InLCAoZSkgPT4ge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBCdWlsZCBmYWlsZWQgd2l0aCBlcnJvcjogJHtlLm1lc3NhZ2V9YCwgeyBjYXVzZTogZSB9KSlcbiAgICAgIH0pXG5cbiAgICAgIC8vIHdhdGNoIG1vZGUgb25seSwgdGhleSBhcmUgcGlwZWQgdGhyb3VnaCBzdGRlcnJcbiAgICAgIGJ1aWxkUHJvY2Vzcy5zdGRlcnI/Lm9uKCdkYXRhJywgKGRhdGEpID0+IHtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZGF0YS50b1N0cmluZygpXG4gICAgICAgIGNvbnNvbGUuZXJyb3Iob3V0cHV0KVxuICAgICAgICBpZiAoL0ZpbmlzaGVkXFxzKGBkZXZgfGByZWxlYXNlYCkvLnRlc3Qob3V0cHV0KSkge1xuICAgICAgICAgIHRoaXMucG9zdEJ1aWxkKCkuY2F0Y2goKCkgPT4ge30pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcblxuICAgIHJldHVybiB7XG4gICAgICB0YXNrOiBidWlsZFRhc2sudGhlbigoKSA9PiB0aGlzLnBvc3RCdWlsZCgpKSxcbiAgICAgIGFib3J0OiAoKSA9PiBjb250cm9sbGVyLmFib3J0KCksXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwaWNrQmluYXJ5KCkge1xuICAgIGxldCBzZXQgPSBmYWxzZVxuICAgIGlmICh0aGlzLm9wdGlvbnMud2F0Y2gpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5DSSkge1xuICAgICAgICBkZWJ1Zy53YXJuKCdXYXRjaCBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gQ0kgZW52aXJvbm1lbnQnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVidWcoJ1VzZSAlaScsICdjYXJnby13YXRjaCcpXG4gICAgICAgIHRyeUluc3RhbGxDYXJnb0JpbmFyeSgnY2FyZ28td2F0Y2gnLCAnd2F0Y2gnKVxuICAgICAgICAvLyB5YXJuIG5hcGkgd2F0Y2ggLS10YXJnZXQgeDg2XzY0LXVua25vd24tbGludXgtZ251IFstLWNyb3NzLWNvbXBpbGVdXG4gICAgICAgIC8vID09PT5cbiAgICAgICAgLy8gY2FyZ28gd2F0Y2ggWy4uLl0gLS0gYnVpbGQgLS10YXJnZXQgeDg2XzY0LXVua25vd24tbGludXgtZ251XG4gICAgICAgIC8vIGNhcmdvIHdhdGNoIFsuLi5dIC0tIHppZ2J1aWxkIC0tdGFyZ2V0IHg4Nl82NC11bmtub3duLWxpbnV4LWdudVxuICAgICAgICB0aGlzLmFyZ3MucHVzaChcbiAgICAgICAgICAnd2F0Y2gnLFxuICAgICAgICAgICctLXdoeScsXG4gICAgICAgICAgJy1pJyxcbiAgICAgICAgICAnKi57anMsdHMsbm9kZX0nLFxuICAgICAgICAgICctdycsXG4gICAgICAgICAgdGhpcy5jcmF0ZURpcixcbiAgICAgICAgICAnLS0nLFxuICAgICAgICAgICdjYXJnbycsXG4gICAgICAgICAgJ2J1aWxkJyxcbiAgICAgICAgKVxuICAgICAgICBzZXQgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jcm9zc0NvbXBpbGUpIHtcbiAgICAgIGlmICh0aGlzLnRhcmdldC5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgICAgICAnWW91IGFyZSB0cnlpbmcgdG8gY3Jvc3MgY29tcGlsZSB0byB3aW4zMiBwbGF0Zm9ybSBvbiB3aW4zMiBwbGF0Zm9ybSB3aGljaCBpcyB1bm5lY2Vzc2FyeS4nLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB1c2UgY2FyZ28teHdpbiB0byBjcm9zcyBjb21waWxlIHRvIHdpbjMyIHBsYXRmb3JtXG4gICAgICAgICAgZGVidWcoJ1VzZSAlaScsICdjYXJnby14d2luJylcbiAgICAgICAgICB0cnlJbnN0YWxsQ2FyZ29CaW5hcnkoJ2NhcmdvLXh3aW4nLCAneHdpbicpXG4gICAgICAgICAgdGhpcy5hcmdzLnB1c2goJ3h3aW4nLCAnYnVpbGQnKVxuICAgICAgICAgIGlmICh0aGlzLnRhcmdldC5hcmNoID09PSAnaWEzMicpIHtcbiAgICAgICAgICAgIHRoaXMuZW52cy5YV0lOX0FSQ0ggPSAneDg2J1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXQgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnRhcmdldC5wbGF0Zm9ybSA9PT0gJ2xpbnV4JyAmJlxuICAgICAgICAgIHByb2Nlc3MucGxhdGZvcm0gPT09ICdsaW51eCcgJiZcbiAgICAgICAgICB0aGlzLnRhcmdldC5hcmNoID09PSBwcm9jZXNzLmFyY2ggJiZcbiAgICAgICAgICAoZnVuY3Rpb24gKGFiaTogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgZ2xpYmNWZXJzaW9uUnVudGltZSA9XG4gICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgICAgcHJvY2Vzcy5yZXBvcnQ/LmdldFJlcG9ydCgpPy5oZWFkZXI/LmdsaWJjVmVyc2lvblJ1bnRpbWVcbiAgICAgICAgICAgIGNvbnN0IGxpYmMgPSBnbGliY1ZlcnNpb25SdW50aW1lID8gJ2dudScgOiAnbXVzbCdcbiAgICAgICAgICAgIHJldHVybiBhYmkgPT09IGxpYmNcbiAgICAgICAgICB9KSh0aGlzLnRhcmdldC5hYmkpXG4gICAgICAgICkge1xuICAgICAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgICAgICAnWW91IGFyZSB0cnlpbmcgdG8gY3Jvc3MgY29tcGlsZSB0byBsaW51eCB0YXJnZXQgb24gbGludXggcGxhdGZvcm0gd2hpY2ggaXMgdW5uZWNlc3NhcnkuJyxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgdGhpcy50YXJnZXQucGxhdGZvcm0gPT09ICdkYXJ3aW4nICYmXG4gICAgICAgICAgcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgZGVidWcud2FybihcbiAgICAgICAgICAgICdZb3UgYXJlIHRyeWluZyB0byBjcm9zcyBjb21waWxlIHRvIGRhcndpbiB0YXJnZXQgb24gZGFyd2luIHBsYXRmb3JtIHdoaWNoIGlzIHVubmVjZXNzYXJ5LicsXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHVzZSBjYXJnby16aWdidWlsZCB0byBjcm9zcyBjb21waWxlIHRvIG90aGVyIHBsYXRmb3Jtc1xuICAgICAgICAgIGRlYnVnKCdVc2UgJWknLCAnY2FyZ28temlnYnVpbGQnKVxuICAgICAgICAgIHRyeUluc3RhbGxDYXJnb0JpbmFyeSgnY2FyZ28temlnYnVpbGQnLCAnemlnYnVpbGQnKVxuICAgICAgICAgIHRoaXMuYXJncy5wdXNoKCd6aWdidWlsZCcpXG4gICAgICAgICAgc2V0ID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFzZXQpIHtcbiAgICAgIHRoaXMuYXJncy5wdXNoKCdidWlsZCcpXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBwcml2YXRlIHNldFBhY2thZ2UoKSB7XG4gICAgY29uc3QgYXJncyA9IFtdXG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnBhY2thZ2UpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1wYWNrYWdlJywgdGhpcy5vcHRpb25zLnBhY2thZ2UpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYmluTmFtZSkge1xuICAgICAgYXJncy5wdXNoKCctLWJpbicsIHRoaXMuYmluTmFtZSlcbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGgpIHtcbiAgICAgIGRlYnVnKCdTZXQgcGFja2FnZSBmbGFnczogJylcbiAgICAgIGRlYnVnKCcgICVPJywgYXJncylcbiAgICAgIHRoaXMuYXJncy5wdXNoKC4uLmFyZ3MpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFyZ2V0KCkge1xuICAgIGRlYnVnKCdTZXQgY29tcGlsaW5nIHRhcmdldCB0bzogJylcbiAgICBkZWJ1ZygnICAlaScsIHRoaXMudGFyZ2V0LnRyaXBsZSlcblxuICAgIHRoaXMuYXJncy5wdXNoKCctLXRhcmdldCcsIHRoaXMudGFyZ2V0LnRyaXBsZSlcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBwcml2YXRlIHNldEVudnMoKSB7XG4gICAgLy8gVFlQRSBERUZcbiAgICBpZiAodGhpcy5lbmFibGVUeXBlRGVmKSB7XG4gICAgICB0aGlzLmVudnMuTkFQSV9UWVBFX0RFRl9UTVBfRk9MREVSID1cbiAgICAgICAgdGhpcy5nZW5lcmF0ZUludGVybWVkaWF0ZVR5cGVEZWZGb2xkZXIoKVxuICAgICAgdGhpcy5zZXRGb3JjZUJ1aWxkRW52cyh0aGlzLmVudnMuTkFQSV9UWVBFX0RFRl9UTVBfRk9MREVSKVxuICAgIH1cblxuICAgIC8vIFJVU1RGTEFHU1xuICAgIGxldCBydXN0ZmxhZ3MgPVxuICAgICAgcHJvY2Vzcy5lbnYuUlVTVEZMQUdTID8/IHByb2Nlc3MuZW52LkNBUkdPX0JVSUxEX1JVU1RGTEFHUyA/PyAnJ1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy50YXJnZXQuYWJpPy5pbmNsdWRlcygnbXVzbCcpICYmXG4gICAgICAhcnVzdGZsYWdzLmluY2x1ZGVzKCd0YXJnZXQtZmVhdHVyZT0tY3J0LXN0YXRpYycpXG4gICAgKSB7XG4gICAgICBydXN0ZmxhZ3MgKz0gJyAtQyB0YXJnZXQtZmVhdHVyZT0tY3J0LXN0YXRpYydcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnN0cmlwICYmICFydXN0ZmxhZ3MuaW5jbHVkZXMoJ2xpbmstYXJnPS1zJykpIHtcbiAgICAgIHJ1c3RmbGFncyArPSAnIC1DIGxpbmstYXJnPS1zJ1xuICAgIH1cblxuICAgIGlmIChydXN0ZmxhZ3MubGVuZ3RoKSB7XG4gICAgICB0aGlzLmVudnMuUlVTVEZMQUdTID0gcnVzdGZsYWdzXG4gICAgfVxuICAgIC8vIEVORCBSVVNURkxBR1NcblxuICAgIC8vIExJTktFUlxuICAgIGNvbnN0IGxpbmtlciA9IHRoaXMub3B0aW9ucy5jcm9zc0NvbXBpbGVcbiAgICAgID8gdm9pZCAwXG4gICAgICA6IGdldFRhcmdldExpbmtlcih0aGlzLnRhcmdldC50cmlwbGUpXG4gICAgLy8gVE9ETzpcbiAgICAvLyAgIGRpcmVjdGx5IHNldCBDQVJHT19UQVJHRVRfPHRhcmdldD5fTElOS0VSIHdpbGwgY292ZXIgLmNhcmdvL2NvbmZpZy50b21sXG4gICAgLy8gICB3aWxsIGRldGVjdCBieSBjYXJnbyBjb25maWcgd2hlbiBpdCBiZWNvbWVzIHN0YWJsZVxuICAgIC8vICAgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vcnVzdC1sYW5nL2NhcmdvL2lzc3Vlcy85MzAxXG4gICAgY29uc3QgbGlua2VyRW52ID0gYENBUkdPX1RBUkdFVF8ke3RhcmdldFRvRW52VmFyKFxuICAgICAgdGhpcy50YXJnZXQudHJpcGxlLFxuICAgICl9X0xJTktFUmBcbiAgICBpZiAobGlua2VyICYmICFwcm9jZXNzLmVudltsaW5rZXJFbnZdICYmICF0aGlzLmVudnNbbGlua2VyRW52XSkge1xuICAgICAgdGhpcy5lbnZzW2xpbmtlckVudl0gPSBsaW5rZXJcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YXJnZXQucGxhdGZvcm0gPT09ICdhbmRyb2lkJykge1xuICAgICAgdGhpcy5zZXRBbmRyb2lkRW52KClcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YXJnZXQucGxhdGZvcm0gPT09ICd3YXNpJykge1xuICAgICAgdGhpcy5zZXRXYXNpRW52KClcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YXJnZXQucGxhdGZvcm0gPT09ICdvcGVuaGFybW9ueScpIHtcbiAgICAgIHRoaXMuc2V0T3Blbkhhcm1vbnlFbnYoKVxuICAgIH1cblxuICAgIGRlYnVnKCdTZXQgZW52czogJylcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLmVudnMpLmZvckVhY2goKFtrLCB2XSkgPT4ge1xuICAgICAgZGVidWcoJyAgJWknLCBgJHtrfT0ke3Z9YClcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9yY2VCdWlsZEVudnModHlwZURlZlRtcEZvbGRlcjogc3RyaW5nKSB7XG4gICAgLy8gZHluYW1pY2FsbHkgY2hlY2sgYWxsIG5hcGktcnMgZGVwcyBhbmQgc2V0IGBOQVBJX0ZPUkNFX0JVSUxEX3t1cHBlcmNhc2Uoc25ha2VfY2FzZShuYW1lKSl9ID0gdGltZXN0YW1wYFxuICAgIHRoaXMubWV0YWRhdGEucGFja2FnZXMuZm9yRWFjaCgoY3JhdGUpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgY3JhdGUuZGVwZW5kZW5jaWVzLnNvbWUoKGQpID0+IGQubmFtZSA9PT0gJ25hcGktZGVyaXZlJykgJiZcbiAgICAgICAgIWV4aXN0c1N5bmMoam9pbih0eXBlRGVmVG1wRm9sZGVyLCBjcmF0ZS5uYW1lKSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLmVudnNbXG4gICAgICAgICAgYE5BUElfRk9SQ0VfQlVJTERfJHtjcmF0ZS5uYW1lLnJlcGxhY2UoLy0vZywgJ18nKS50b1VwcGVyQ2FzZSgpfWBcbiAgICAgICAgXSA9IERhdGUubm93KCkudG9TdHJpbmcoKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHNldEFuZHJvaWRFbnYoKSB7XG4gICAgY29uc3QgeyBBTkRST0lEX05ES19MQVRFU1RfSE9NRSB9ID0gcHJvY2Vzcy5lbnZcbiAgICBpZiAoIUFORFJPSURfTkRLX0xBVEVTVF9IT01FKSB7XG4gICAgICBkZWJ1Zy53YXJuKFxuICAgICAgICBgJHtjb2xvcnMucmVkKFxuICAgICAgICAgICdBTkRST0lEX05ES19MQVRFU1RfSE9NRScsXG4gICAgICAgICl9IGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG1pc3NpbmdgLFxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIHNraXAgY3Jvc3MgY29tcGlsZSBzZXR1cCBpZiBob3N0IGlzIGFuZHJvaWRcbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2FuZHJvaWQnKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRBcmNoID0gdGhpcy50YXJnZXQuYXJjaCA9PT0gJ2FybScgPyAnYXJtdjdhJyA6ICdhYXJjaDY0J1xuICAgIGNvbnN0IHRhcmdldFBsYXRmb3JtID1cbiAgICAgIHRoaXMudGFyZ2V0LmFyY2ggPT09ICdhcm0nID8gJ2FuZHJvaWRlYWJpMjQnIDogJ2FuZHJvaWQyNCdcbiAgICBjb25zdCBob3N0UGxhdGZvcm0gPVxuICAgICAgcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbidcbiAgICAgICAgPyAnZGFyd2luJ1xuICAgICAgICA6IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMidcbiAgICAgICAgICA/ICd3aW5kb3dzJ1xuICAgICAgICAgIDogJ2xpbnV4J1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5lbnZzLCB7XG4gICAgICBDQVJHT19UQVJHRVRfQUFSQ0g2NF9MSU5VWF9BTkRST0lEX0xJTktFUjogYCR7QU5EUk9JRF9OREtfTEFURVNUX0hPTUV9L3Rvb2xjaGFpbnMvbGx2bS9wcmVidWlsdC8ke2hvc3RQbGF0Zm9ybX0teDg2XzY0L2Jpbi8ke3RhcmdldEFyY2h9LWxpbnV4LWFuZHJvaWQyNC1jbGFuZ2AsXG4gICAgICBDQVJHT19UQVJHRVRfQVJNVjdfTElOVVhfQU5EUk9JREVBQklfTElOS0VSOiBgJHtBTkRST0lEX05ES19MQVRFU1RfSE9NRX0vdG9vbGNoYWlucy9sbHZtL3ByZWJ1aWx0LyR7aG9zdFBsYXRmb3JtfS14ODZfNjQvYmluLyR7dGFyZ2V0QXJjaH0tbGludXgtYW5kcm9pZGVhYmkyNC1jbGFuZ2AsXG4gICAgICBUQVJHRVRfQ0M6IGAke0FORFJPSURfTkRLX0xBVEVTVF9IT01FfS90b29sY2hhaW5zL2xsdm0vcHJlYnVpbHQvJHtob3N0UGxhdGZvcm19LXg4Nl82NC9iaW4vJHt0YXJnZXRBcmNofS1saW51eC0ke3RhcmdldFBsYXRmb3JtfS1jbGFuZ2AsXG4gICAgICBUQVJHRVRfQ1hYOiBgJHtBTkRST0lEX05ES19MQVRFU1RfSE9NRX0vdG9vbGNoYWlucy9sbHZtL3ByZWJ1aWx0LyR7aG9zdFBsYXRmb3JtfS14ODZfNjQvYmluLyR7dGFyZ2V0QXJjaH0tbGludXgtJHt0YXJnZXRQbGF0Zm9ybX0tY2xhbmcrK2AsXG4gICAgICBUQVJHRVRfQVI6IGAke0FORFJPSURfTkRLX0xBVEVTVF9IT01FfS90b29sY2hhaW5zL2xsdm0vcHJlYnVpbHQvJHtob3N0UGxhdGZvcm19LXg4Nl82NC9iaW4vbGx2bS1hcmAsXG4gICAgICBUQVJHRVRfUkFOTElCOiBgJHtBTkRST0lEX05ES19MQVRFU1RfSE9NRX0vdG9vbGNoYWlucy9sbHZtL3ByZWJ1aWx0LyR7aG9zdFBsYXRmb3JtfS14ODZfNjQvYmluL2xsdm0tcmFubGliYCxcbiAgICAgIEFORFJPSURfTkRLOiBBTkRST0lEX05ES19MQVRFU1RfSE9NRSxcbiAgICAgIFBBVEg6IGAke0FORFJPSURfTkRLX0xBVEVTVF9IT01FfS90b29sY2hhaW5zL2xsdm0vcHJlYnVpbHQvJHtob3N0UGxhdGZvcm19LXg4Nl82NC9iaW4ke3Byb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyAnOycgOiAnOid9JHtwcm9jZXNzLmVudi5QQVRIfWAsXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgc2V0V2FzaUVudigpIHtcbiAgICBjb25zdCBlbW5hcGkgPSBqb2luKFxuICAgICAgcmVxdWlyZS5yZXNvbHZlKCdlbW5hcGknKSxcbiAgICAgICcuLicsXG4gICAgICAnbGliJyxcbiAgICAgICd3YXNtMzItd2FzaS10aHJlYWRzJyxcbiAgICApXG4gICAgdGhpcy5lbnZzLkVNTkFQSV9MSU5LX0RJUiA9IGVtbmFwaVxuICAgIGNvbnN0IHsgV0FTSV9TREtfUEFUSCB9ID0gcHJvY2Vzcy5lbnZcblxuICAgIGlmIChXQVNJX1NES19QQVRIICYmIGV4aXN0c1N5bmMoV0FTSV9TREtfUEFUSCkpIHtcbiAgICAgIHRoaXMuZW52cy5DQVJHT19UQVJHRVRfV0FTTTMyX1dBU0lfUFJFVklFVzFfVEhSRUFEU19MSU5LRVIgPSBqb2luKFxuICAgICAgICBXQVNJX1NES19QQVRILFxuICAgICAgICAnYmluJyxcbiAgICAgICAgJ3dhc20tbGQnLFxuICAgICAgKVxuICAgICAgdGhpcy5lbnZzLkNBUkdPX1RBUkdFVF9XQVNNMzJfV0FTSVAxX0xJTktFUiA9IGpvaW4oXG4gICAgICAgIFdBU0lfU0RLX1BBVEgsXG4gICAgICAgICdiaW4nLFxuICAgICAgICAnd2FzbS1sZCcsXG4gICAgICApXG4gICAgICB0aGlzLmVudnMuQ0FSR09fVEFSR0VUX1dBU00zMl9XQVNJUDFfVEhSRUFEU19MSU5LRVIgPSBqb2luKFxuICAgICAgICBXQVNJX1NES19QQVRILFxuICAgICAgICAnYmluJyxcbiAgICAgICAgJ3dhc20tbGQnLFxuICAgICAgKVxuICAgICAgdGhpcy5lbnZzLkNBUkdPX1RBUkdFVF9XQVNNMzJfV0FTSVAyX0xJTktFUiA9IGpvaW4oXG4gICAgICAgIFdBU0lfU0RLX1BBVEgsXG4gICAgICAgICdiaW4nLFxuICAgICAgICAnd2FzbS1sZCcsXG4gICAgICApXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKCdUQVJHRVRfQ0MnLCBqb2luKFdBU0lfU0RLX1BBVEgsICdiaW4nLCAnY2xhbmcnKSlcbiAgICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoXG4gICAgICAgICdUQVJHRVRfQ1hYJyxcbiAgICAgICAgam9pbihXQVNJX1NES19QQVRILCAnYmluJywgJ2NsYW5nKysnKSxcbiAgICAgIClcbiAgICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ1RBUkdFVF9BUicsIGpvaW4oV0FTSV9TREtfUEFUSCwgJ2JpbicsICdhcicpKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9SQU5MSUInLFxuICAgICAgICBqb2luKFdBU0lfU0RLX1BBVEgsICdiaW4nLCAncmFubGliJyksXG4gICAgICApXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKFxuICAgICAgICAnVEFSR0VUX0NGTEFHUycsXG4gICAgICAgIGAtLXRhcmdldD13YXNtMzItd2FzaS10aHJlYWRzIC0tc3lzcm9vdD0ke1dBU0lfU0RLX1BBVEh9L3NoYXJlL3dhc2ktc3lzcm9vdCAtcHRocmVhZCAtbWxsdm0gLXdhc20tZW5hYmxlLXNqbGpgLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9DWFhGTEFHUycsXG4gICAgICAgIGAtLXRhcmdldD13YXNtMzItd2FzaS10aHJlYWRzIC0tc3lzcm9vdD0ke1dBU0lfU0RLX1BBVEh9L3NoYXJlL3dhc2ktc3lzcm9vdCAtcHRocmVhZCAtbWxsdm0gLXdhc20tZW5hYmxlLXNqbGpgLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgYFRBUkdFVF9MREZMQUdTYCxcbiAgICAgICAgYC1mdXNlLWxkPSR7V0FTSV9TREtfUEFUSH0vYmluL3dhc20tbGQgLS10YXJnZXQ9d2FzbTMyLXdhc2ktdGhyZWFkc2AsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRPcGVuSGFybW9ueUVudigpIHtcbiAgICBjb25zdCB7IE9IT1NfU0RLX1BBVEgsIE9IT1NfU0RLX05BVElWRSB9ID0gcHJvY2Vzcy5lbnZcbiAgICBjb25zdCBuZGtQYXRoID0gT0hPU19TREtfUEFUSCA/IGAke09IT1NfU0RLX1BBVEh9L25hdGl2ZWAgOiBPSE9TX1NES19OQVRJVkVcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgaWYgKCFuZGtQYXRoICYmIHByb2Nlc3MucGxhdGZvcm0gIT09ICdvcGVuaGFybW9ueScpIHtcbiAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgIGAke2NvbG9ycy5yZWQoJ09IT1NfU0RLX1BBVEgnKX0gb3IgJHtjb2xvcnMucmVkKCdPSE9TX1NES19OQVRJVkUnKX0gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbWlzc2luZ2AsXG4gICAgICApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgbGlua2VyTmFtZSA9IGBDQVJHT19UQVJHRVRfJHt0aGlzLnRhcmdldC50cmlwbGUudG9VcHBlckNhc2UoKS5yZXBsYWNlKC8tL2csICdfJyl9X0xJTktFUmBcbiAgICBjb25zdCByYW5QYXRoID0gYCR7bmRrUGF0aH0vbGx2bS9iaW4vbGx2bS1yYW5saWJgXG4gICAgY29uc3QgYXJQYXRoID0gYCR7bmRrUGF0aH0vbGx2bS9iaW4vbGx2bS1hcmBcbiAgICBjb25zdCBjY1BhdGggPSBgJHtuZGtQYXRofS9sbHZtL2Jpbi8ke3RoaXMudGFyZ2V0LnRyaXBsZX0tY2xhbmdgXG4gICAgY29uc3QgY3h4UGF0aCA9IGAke25ka1BhdGh9L2xsdm0vYmluLyR7dGhpcy50YXJnZXQudHJpcGxlfS1jbGFuZysrYFxuICAgIGNvbnN0IGFzUGF0aCA9IGAke25ka1BhdGh9L2xsdm0vYmluL2xsdm0tYXNgXG4gICAgY29uc3QgbGRQYXRoID0gYCR7bmRrUGF0aH0vbGx2bS9iaW4vbGQubGxkYFxuICAgIGNvbnN0IHN0cmlwUGF0aCA9IGAke25ka1BhdGh9L2xsdm0vYmluL2xsdm0tc3RyaXBgXG4gICAgY29uc3Qgb2JqRHVtcFBhdGggPSBgJHtuZGtQYXRofS9sbHZtL2Jpbi9sbHZtLW9iamR1bXBgXG4gICAgY29uc3Qgb2JqQ29weVBhdGggPSBgJHtuZGtQYXRofS9sbHZtL2Jpbi9sbHZtLW9iamNvcHlgXG4gICAgY29uc3Qgbm1QYXRoID0gYCR7bmRrUGF0aH0vbGx2bS9iaW4vbGx2bS1ubWBcbiAgICBjb25zdCBiaW5QYXRoID0gYCR7bmRrUGF0aH0vbGx2bS9iaW5gXG4gICAgY29uc3QgbGliUGF0aCA9IGAke25ka1BhdGh9L2xsdm0vbGliYFxuXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnTElCQ0xBTkdfUEFUSCcsIGxpYlBhdGgpXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnREVQX0FUT01JQycsICdjbGFuZ19ydC5idWlsdGlucycpXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhsaW5rZXJOYW1lLCBjY1BhdGgpXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnVEFSR0VUX0NDJywgY2NQYXRoKVxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ1RBUkdFVF9DWFgnLCBjeHhQYXRoKVxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ1RBUkdFVF9BUicsIGFyUGF0aClcbiAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKCdUQVJHRVRfUkFOTElCJywgcmFuUGF0aClcbiAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKCdUQVJHRVRfQVMnLCBhc1BhdGgpXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnVEFSR0VUX0xEJywgbGRQYXRoKVxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ1RBUkdFVF9TVFJJUCcsIHN0cmlwUGF0aClcbiAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKCdUQVJHRVRfT0JKRFVNUCcsIG9iakR1bXBQYXRoKVxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ1RBUkdFVF9PQkpDT1BZJywgb2JqQ29weVBhdGgpXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnVEFSR0VUX05NJywgbm1QYXRoKVxuICAgIHRoaXMuZW52cy5QQVRIID0gYCR7YmluUGF0aH0ke3Byb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyAnOycgOiAnOid9JHtwcm9jZXNzLmVudi5QQVRIfWBcbiAgfVxuXG4gIHByaXZhdGUgc2V0RmVhdHVyZXMoKSB7XG4gICAgY29uc3QgYXJncyA9IFtdXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxGZWF0dXJlcyAmJiB0aGlzLm9wdGlvbnMubm9EZWZhdWx0RmVhdHVyZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBzcGVjaWZ5IC0tYWxsLWZlYXR1cmVzIGFuZCAtLW5vLWRlZmF1bHQtZmVhdHVyZXMgdG9nZXRoZXInLFxuICAgICAgKVxuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLmFsbEZlYXR1cmVzKSB7XG4gICAgICBhcmdzLnB1c2goJy0tYWxsLWZlYXR1cmVzJylcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5ub0RlZmF1bHRGZWF0dXJlcykge1xuICAgICAgYXJncy5wdXNoKCctLW5vLWRlZmF1bHQtZmVhdHVyZXMnKVxuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLmZlYXR1cmVzKSB7XG4gICAgICBhcmdzLnB1c2goJy0tZmVhdHVyZXMnLCAuLi50aGlzLm9wdGlvbnMuZmVhdHVyZXMpXG4gICAgfVxuXG4gICAgZGVidWcoJ1NldCBmZWF0dXJlcyBmbGFnczogJylcbiAgICBkZWJ1ZygnICAlTycsIGFyZ3MpXG4gICAgdGhpcy5hcmdzLnB1c2goLi4uYXJncylcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBwcml2YXRlIHNldEJ5cGFzc0FyZ3MoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5yZWxlYXNlKSB7XG4gICAgICB0aGlzLmFyZ3MucHVzaCgnLS1yZWxlYXNlJylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgIHRoaXMuYXJncy5wdXNoKCctLXZlcmJvc2UnKVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMudGFyZ2V0RGlyKSB7XG4gICAgICB0aGlzLmFyZ3MucHVzaCgnLS10YXJnZXQtZGlyJywgdGhpcy5vcHRpb25zLnRhcmdldERpcilcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnByb2ZpbGUpIHtcbiAgICAgIHRoaXMuYXJncy5wdXNoKCctLXByb2ZpbGUnLCB0aGlzLm9wdGlvbnMucHJvZmlsZSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm1hbmlmZXN0UGF0aCkge1xuICAgICAgdGhpcy5hcmdzLnB1c2goJy0tbWFuaWZlc3QtcGF0aCcsIHRoaXMub3B0aW9ucy5tYW5pZmVzdFBhdGgpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jYXJnb09wdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5hcmdzLnB1c2goLi4udGhpcy5vcHRpb25zLmNhcmdvT3B0aW9ucylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUludGVybWVkaWF0ZVR5cGVEZWZGb2xkZXIoKSB7XG4gICAgbGV0IGZvbGRlciA9IGpvaW4oXG4gICAgICB0aGlzLnRhcmdldERpcixcbiAgICAgICduYXBpLXJzJyxcbiAgICAgIGAke3RoaXMuY3JhdGUubmFtZX0tJHtjcmVhdGVIYXNoKCdzaGEyNTYnKVxuICAgICAgICAudXBkYXRlKHRoaXMuY3JhdGUubWFuaWZlc3RfcGF0aClcbiAgICAgICAgLnVwZGF0ZShDTElfVkVSU0lPTilcbiAgICAgICAgLmRpZ2VzdCgnaGV4JylcbiAgICAgICAgLnN1YnN0cmluZygwLCA4KX1gLFxuICAgIClcblxuICAgIGlmICghdGhpcy5vcHRpb25zLmR0c0NhY2hlKSB7XG4gICAgICBybVN5bmMoZm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcbiAgICAgIGZvbGRlciArPSBgXyR7RGF0ZS5ub3coKX1gXG4gICAgfVxuXG4gICAgbWtkaXJBc3luYyhmb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG5cbiAgICByZXR1cm4gZm9sZGVyXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBvc3RCdWlsZCgpIHtcbiAgICB0cnkge1xuICAgICAgZGVidWcoYFRyeSB0byBjcmVhdGUgb3V0cHV0IGRpcmVjdG9yeTpgKVxuICAgICAgZGVidWcoJyAgJWknLCB0aGlzLm91dHB1dERpcilcbiAgICAgIGF3YWl0IG1rZGlyQXN5bmModGhpcy5vdXRwdXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBkZWJ1ZyhgT3V0cHV0IGRpcmVjdG9yeSBjcmVhdGVkYClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgb3V0cHV0IGRpcmVjdG9yeSAke3RoaXMub3V0cHV0RGlyfWAsIHtcbiAgICAgICAgY2F1c2U6IGUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IHdhc21CaW5hcnlOYW1lID0gYXdhaXQgdGhpcy5jb3B5QXJ0aWZhY3QoKVxuXG4gICAgLy8gb25seSBmb3IgY2R5bGliXG4gICAgaWYgKHRoaXMuY2R5TGliTmFtZSkge1xuICAgICAgY29uc3QgaWRlbnRzID0gYXdhaXQgdGhpcy5nZW5lcmF0ZVR5cGVEZWYoKVxuICAgICAgY29uc3QganNPdXRwdXQgPSBhd2FpdCB0aGlzLndyaXRlSnNCaW5kaW5nKGlkZW50cylcbiAgICAgIGNvbnN0IHdhc21CaW5kaW5nc091dHB1dCA9IGF3YWl0IHRoaXMud3JpdGVXYXNpQmluZGluZyhcbiAgICAgICAgd2FzbUJpbmFyeU5hbWUsXG4gICAgICAgIGlkZW50cyxcbiAgICAgIClcbiAgICAgIGlmIChqc091dHB1dCkge1xuICAgICAgICB0aGlzLm91dHB1dHMucHVzaChqc091dHB1dClcbiAgICAgIH1cbiAgICAgIGlmICh3YXNtQmluZGluZ3NPdXRwdXQpIHtcbiAgICAgICAgdGhpcy5vdXRwdXRzLnB1c2goLi4ud2FzbUJpbmRpbmdzT3V0cHV0KVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm91dHB1dHNcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29weUFydGlmYWN0KCkge1xuICAgIGNvbnN0IFtzcmNOYW1lLCBkZXN0TmFtZSwgd2FzbUJpbmFyeU5hbWVdID0gdGhpcy5nZXRBcnRpZmFjdE5hbWVzKClcbiAgICBpZiAoIXNyY05hbWUgfHwgIWRlc3ROYW1lKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBwcm9maWxlID1cbiAgICAgIHRoaXMub3B0aW9ucy5wcm9maWxlID8/ICh0aGlzLm9wdGlvbnMucmVsZWFzZSA/ICdyZWxlYXNlJyA6ICdkZWJ1ZycpXG4gICAgY29uc3Qgc3JjID0gam9pbih0aGlzLnRhcmdldERpciwgdGhpcy50YXJnZXQudHJpcGxlLCBwcm9maWxlLCBzcmNOYW1lKVxuICAgIGRlYnVnKGBDb3B5IGFydGlmYWN0IGZyb206IFske3NyY31dYClcbiAgICBjb25zdCBkZXN0ID0gam9pbih0aGlzLm91dHB1dERpciwgZGVzdE5hbWUpXG4gICAgY29uc3QgaXNXYXNtID0gZGVzdC5lbmRzV2l0aCgnLndhc20nKVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChhd2FpdCBmaWxlRXhpc3RzKGRlc3QpKSB7XG4gICAgICAgIGRlYnVnKCdPbGQgYXJ0aWZhY3QgZm91bmQsIHJlbW92ZSBpdCBmaXJzdCcpXG4gICAgICAgIGF3YWl0IHVubGlua0FzeW5jKGRlc3QpXG4gICAgICB9XG4gICAgICBkZWJ1ZygnQ29weSBhcnRpZmFjdCB0bzonKVxuICAgICAgZGVidWcoJyAgJWknLCBkZXN0KVxuICAgICAgaWYgKGlzV2FzbSkge1xuICAgICAgICBjb25zdCB7IE1vZHVsZUNvbmZpZyB9ID0gYXdhaXQgaW1wb3J0KCdAbmFwaS1ycy93YXNtLXRvb2xzJylcbiAgICAgICAgZGVidWcoJ0dlbmVyYXRlIGRlYnVnIHdhc20gbW9kdWxlJylcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkZWJ1Z1dhc21Nb2R1bGUgPSBuZXcgTW9kdWxlQ29uZmlnKClcbiAgICAgICAgICAgIC5nZW5lcmF0ZUR3YXJmKHRydWUpXG4gICAgICAgICAgICAuZ2VuZXJhdGVOYW1lU2VjdGlvbih0cnVlKVxuICAgICAgICAgICAgLmdlbmVyYXRlUHJvZHVjZXJzU2VjdGlvbih0cnVlKVxuICAgICAgICAgICAgLnByZXNlcnZlQ29kZVRyYW5zZm9ybSh0cnVlKVxuICAgICAgICAgICAgLnN0cmljdFZhbGlkYXRlKGZhbHNlKVxuICAgICAgICAgICAgLnBhcnNlKGF3YWl0IHJlYWRGaWxlQXN5bmMoc3JjKSlcbiAgICAgICAgICBjb25zdCBkZWJ1Z1dhc21CaW5hcnkgPSBkZWJ1Z1dhc21Nb2R1bGUuZW1pdFdhc20odHJ1ZSlcbiAgICAgICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgICAgICAgIGRlc3QucmVwbGFjZSgvXFwud2FzbSQvLCAnLmRlYnVnLndhc20nKSxcbiAgICAgICAgICAgIGRlYnVnV2FzbUJpbmFyeSxcbiAgICAgICAgICApXG4gICAgICAgICAgZGVidWcoJ0dlbmVyYXRlIHJlbGVhc2Ugd2FzbSBtb2R1bGUnKVxuICAgICAgICAgIGNvbnN0IHJlbGVhc2VXYXNtTW9kdWxlID0gbmV3IE1vZHVsZUNvbmZpZygpXG4gICAgICAgICAgICAuZ2VuZXJhdGVEd2FyZihmYWxzZSlcbiAgICAgICAgICAgIC5nZW5lcmF0ZU5hbWVTZWN0aW9uKGZhbHNlKVxuICAgICAgICAgICAgLmdlbmVyYXRlUHJvZHVjZXJzU2VjdGlvbihmYWxzZSlcbiAgICAgICAgICAgIC5wcmVzZXJ2ZUNvZGVUcmFuc2Zvcm0oZmFsc2UpXG4gICAgICAgICAgICAuc3RyaWN0VmFsaWRhdGUoZmFsc2UpXG4gICAgICAgICAgICAub25seVN0YWJsZUZlYXR1cmVzKGZhbHNlKVxuICAgICAgICAgICAgLnBhcnNlKGRlYnVnV2FzbUJpbmFyeSlcbiAgICAgICAgICBjb25zdCByZWxlYXNlV2FzbUJpbmFyeSA9IHJlbGVhc2VXYXNtTW9kdWxlLmVtaXRXYXNtKGZhbHNlKVxuICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKGRlc3QsIHJlbGVhc2VXYXNtQmluYXJ5KVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgZGVidWcud2FybihcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gZ2VuZXJhdGUgZGVidWcgd2FzbSBtb2R1bGU6ICR7KGUgYXMgYW55KS5tZXNzYWdlID8/IGV9YCxcbiAgICAgICAgICApXG4gICAgICAgICAgYXdhaXQgY29weUZpbGVBc3luYyhzcmMsIGRlc3QpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IGNvcHlGaWxlQXN5bmMoc3JjLCBkZXN0KVxuICAgICAgfVxuICAgICAgdGhpcy5vdXRwdXRzLnB1c2goe1xuICAgICAgICBraW5kOiBkZXN0LmVuZHNXaXRoKCcubm9kZScpID8gJ25vZGUnIDogaXNXYXNtID8gJ3dhc20nIDogJ2V4ZScsXG4gICAgICAgIHBhdGg6IGRlc3QsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHdhc21CaW5hcnlOYW1lID8gam9pbih0aGlzLm91dHB1dERpciwgd2FzbUJpbmFyeU5hbWUpIDogbnVsbFxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGNvcHkgYXJ0aWZhY3QnLCB7IGNhdXNlOiBlIH0pXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRBcnRpZmFjdE5hbWVzKCkge1xuICAgIGlmICh0aGlzLmNkeUxpYk5hbWUpIHtcbiAgICAgIGNvbnN0IGNkeUxpYiA9IHRoaXMuY2R5TGliTmFtZS5yZXBsYWNlKC8tL2csICdfJylcbiAgICAgIGNvbnN0IHdhc2lUYXJnZXQgPSB0aGlzLmNvbmZpZy50YXJnZXRzLmZpbmQoKHQpID0+IHQucGxhdGZvcm0gPT09ICd3YXNpJylcblxuICAgICAgY29uc3Qgc3JjTmFtZSA9XG4gICAgICAgIHRoaXMudGFyZ2V0LnBsYXRmb3JtID09PSAnZGFyd2luJ1xuICAgICAgICAgID8gYGxpYiR7Y2R5TGlifS5keWxpYmBcbiAgICAgICAgICA6IHRoaXMudGFyZ2V0LnBsYXRmb3JtID09PSAnd2luMzInXG4gICAgICAgICAgICA/IGAke2NkeUxpYn0uZGxsYFxuICAgICAgICAgICAgOiB0aGlzLnRhcmdldC5wbGF0Zm9ybSA9PT0gJ3dhc2knIHx8IHRoaXMudGFyZ2V0LnBsYXRmb3JtID09PSAnd2FzbSdcbiAgICAgICAgICAgICAgPyBgJHtjZHlMaWJ9Lndhc21gXG4gICAgICAgICAgICAgIDogYGxpYiR7Y2R5TGlifS5zb2BcblxuICAgICAgbGV0IGRlc3ROYW1lID0gdGhpcy5jb25maWcuYmluYXJ5TmFtZVxuICAgICAgLy8gYWRkIHBsYXRmb3JtIHN1ZmZpeCB0byBiaW5hcnkgbmFtZVxuICAgICAgLy8gaW5kZXhbLmxpbnV4LXg2NC1nbnVdLm5vZGVcbiAgICAgIC8vICAgICAgIF5eXl5eXl5eXl5eXl5eXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBsYXRmb3JtKSB7XG4gICAgICAgIGRlc3ROYW1lICs9IGAuJHt0aGlzLnRhcmdldC5wbGF0Zm9ybUFyY2hBQkl9YFxuICAgICAgfVxuICAgICAgaWYgKHNyY05hbWUuZW5kc1dpdGgoJy53YXNtJykpIHtcbiAgICAgICAgZGVzdE5hbWUgKz0gJy53YXNtJ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVzdE5hbWUgKz0gJy5ub2RlJ1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW1xuICAgICAgICBzcmNOYW1lLFxuICAgICAgICBkZXN0TmFtZSxcbiAgICAgICAgd2FzaVRhcmdldFxuICAgICAgICAgID8gYCR7dGhpcy5jb25maWcuYmluYXJ5TmFtZX0uJHt3YXNpVGFyZ2V0LnBsYXRmb3JtQXJjaEFCSX0ud2FzbWBcbiAgICAgICAgICA6IG51bGwsXG4gICAgICBdXG4gICAgfSBlbHNlIGlmICh0aGlzLmJpbk5hbWUpIHtcbiAgICAgIGNvbnN0IHNyY05hbWUgPVxuICAgICAgICB0aGlzLnRhcmdldC5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IGAke3RoaXMuYmluTmFtZX0uZXhlYCA6IHRoaXMuYmluTmFtZVxuXG4gICAgICByZXR1cm4gW3NyY05hbWUsIHNyY05hbWVdXG4gICAgfVxuXG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdlbmVyYXRlVHlwZURlZigpIHtcbiAgICBjb25zdCB0eXBlRGVmRGlyID0gdGhpcy5lbnZzLk5BUElfVFlQRV9ERUZfVE1QX0ZPTERFUlxuICAgIGlmICghdGhpcy5lbmFibGVUeXBlRGVmKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICBjb25zdCB7IGV4cG9ydHMsIGR0cyB9ID0gYXdhaXQgZ2VuZXJhdGVUeXBlRGVmKHtcbiAgICAgIHR5cGVEZWZEaXIsXG4gICAgICBub0R0c0hlYWRlcjogdGhpcy5vcHRpb25zLm5vRHRzSGVhZGVyLFxuICAgICAgZHRzSGVhZGVyOiB0aGlzLm9wdGlvbnMuZHRzSGVhZGVyLFxuICAgICAgY29uZmlnRHRzSGVhZGVyOiB0aGlzLmNvbmZpZy5kdHNIZWFkZXIsXG4gICAgICBjb25maWdEdHNIZWFkZXJGaWxlOiB0aGlzLmNvbmZpZy5kdHNIZWFkZXJGaWxlLFxuICAgICAgY29uc3RFbnVtOiB0aGlzLm9wdGlvbnMuY29uc3RFbnVtID8/IHRoaXMuY29uZmlnLmNvbnN0RW51bSxcbiAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZCxcbiAgICB9KVxuXG4gICAgY29uc3QgZGVzdCA9IGpvaW4odGhpcy5vdXRwdXREaXIsIHRoaXMub3B0aW9ucy5kdHMgPz8gJ2luZGV4LmQudHMnKVxuXG4gICAgdHJ5IHtcbiAgICAgIGRlYnVnKCdXcml0aW5nIHR5cGUgZGVmIHRvOicpXG4gICAgICBkZWJ1ZygnICAlaScsIGRlc3QpXG4gICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhkZXN0LCBkdHMsICd1dGYtOCcpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZGVidWcuZXJyb3IoJ0ZhaWxlZCB0byB3cml0ZSB0eXBlIGRlZiBmaWxlJylcbiAgICAgIGRlYnVnLmVycm9yKGUgYXMgRXJyb3IpXG4gICAgfVxuXG4gICAgaWYgKGV4cG9ydHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZGVzdCA9IGpvaW4odGhpcy5vdXRwdXREaXIsIHRoaXMub3B0aW9ucy5kdHMgPz8gJ2luZGV4LmQudHMnKVxuICAgICAgdGhpcy5vdXRwdXRzLnB1c2goeyBraW5kOiAnZHRzJywgcGF0aDogZGVzdCB9KVxuICAgIH1cblxuICAgIHJldHVybiBleHBvcnRzXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdyaXRlSnNCaW5kaW5nKGlkZW50czogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gd3JpdGVKc0JpbmRpbmcoe1xuICAgICAgcGxhdGZvcm06IHRoaXMub3B0aW9ucy5wbGF0Zm9ybSxcbiAgICAgIG5vSnNCaW5kaW5nOiB0aGlzLm9wdGlvbnMubm9Kc0JpbmRpbmcsXG4gICAgICBpZGVudHMsXG4gICAgICBqc0JpbmRpbmc6IHRoaXMub3B0aW9ucy5qc0JpbmRpbmcsXG4gICAgICBlc206IHRoaXMub3B0aW9ucy5lc20sXG4gICAgICBiaW5hcnlOYW1lOiB0aGlzLmNvbmZpZy5iaW5hcnlOYW1lLFxuICAgICAgcGFja2FnZU5hbWU6IHRoaXMub3B0aW9ucy5qc1BhY2thZ2VOYW1lID8/IHRoaXMuY29uZmlnLnBhY2thZ2VOYW1lLFxuICAgICAgdmVyc2lvbjogcHJvY2Vzcy5lbnYubnBtX25ld192ZXJzaW9uID8/IHRoaXMuY29uZmlnLnBhY2thZ2VKc29uLnZlcnNpb24sXG4gICAgICBvdXRwdXREaXI6IHRoaXMub3V0cHV0RGlyLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdyaXRlV2FzaUJpbmRpbmcoXG4gICAgZGlzdEZpbGVOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsLFxuICAgIGlkZW50czogc3RyaW5nW10sXG4gICkge1xuICAgIGlmIChkaXN0RmlsZU5hbWUpIHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgZGlyIH0gPSBwYXJzZShkaXN0RmlsZU5hbWUpXG4gICAgICBjb25zdCBiaW5kaW5nUGF0aCA9IGpvaW4oZGlyLCBgJHt0aGlzLmNvbmZpZy5iaW5hcnlOYW1lfS53YXNpLmNqc2ApXG4gICAgICBjb25zdCBicm93c2VyQmluZGluZ1BhdGggPSBqb2luKFxuICAgICAgICBkaXIsXG4gICAgICAgIGAke3RoaXMuY29uZmlnLmJpbmFyeU5hbWV9Lndhc2ktYnJvd3Nlci5qc2AsXG4gICAgICApXG4gICAgICBjb25zdCB3b3JrZXJQYXRoID0gam9pbihkaXIsICd3YXNpLXdvcmtlci5tanMnKVxuICAgICAgY29uc3QgYnJvd3NlcldvcmtlclBhdGggPSBqb2luKGRpciwgJ3dhc2ktd29ya2VyLWJyb3dzZXIubWpzJylcbiAgICAgIGNvbnN0IGJyb3dzZXJFbnRyeVBhdGggPSBqb2luKGRpciwgJ2Jyb3dzZXIuanMnKVxuICAgICAgY29uc3QgZXhwb3J0c0NvZGUgPVxuICAgICAgICBgbW9kdWxlLmV4cG9ydHMgPSBfX25hcGlNb2R1bGUuZXhwb3J0c1xcbmAgK1xuICAgICAgICBpZGVudHNcbiAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgKGlkZW50KSA9PlxuICAgICAgICAgICAgICBgbW9kdWxlLmV4cG9ydHMuJHtpZGVudH0gPSBfX25hcGlNb2R1bGUuZXhwb3J0cy4ke2lkZW50fWAsXG4gICAgICAgICAgKVxuICAgICAgICAgIC5qb2luKCdcXG4nKVxuICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoXG4gICAgICAgIGJpbmRpbmdQYXRoLFxuICAgICAgICBjcmVhdGVXYXNpQmluZGluZyhcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHRoaXMuY29uZmlnLnBhY2thZ2VOYW1lLFxuICAgICAgICAgIHRoaXMuY29uZmlnLndhc20/LmluaXRpYWxNZW1vcnksXG4gICAgICAgICAgdGhpcy5jb25maWcud2FzbT8ubWF4aW11bU1lbW9yeSxcbiAgICAgICAgKSArXG4gICAgICAgICAgZXhwb3J0c0NvZGUgK1xuICAgICAgICAgICdcXG4nLFxuICAgICAgICAndXRmOCcsXG4gICAgICApXG4gICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgICAgYnJvd3NlckJpbmRpbmdQYXRoLFxuICAgICAgICBjcmVhdGVXYXNpQnJvd3NlckJpbmRpbmcoXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICB0aGlzLmNvbmZpZy53YXNtPy5pbml0aWFsTWVtb3J5LFxuICAgICAgICAgIHRoaXMuY29uZmlnLndhc20/Lm1heGltdW1NZW1vcnksXG4gICAgICAgICAgdGhpcy5jb25maWcud2FzbT8uYnJvd3Nlcj8uZnMsXG4gICAgICAgICAgdGhpcy5jb25maWcud2FzbT8uYnJvd3Nlcj8uYXN5bmNJbml0LFxuICAgICAgICAgIHRoaXMuY29uZmlnLndhc20/LmJyb3dzZXI/LmJ1ZmZlcixcbiAgICAgICAgKSArXG4gICAgICAgICAgYGV4cG9ydCBkZWZhdWx0IF9fbmFwaU1vZHVsZS5leHBvcnRzXFxuYCArXG4gICAgICAgICAgaWRlbnRzXG4gICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAoaWRlbnQpID0+XG4gICAgICAgICAgICAgICAgYGV4cG9ydCBjb25zdCAke2lkZW50fSA9IF9fbmFwaU1vZHVsZS5leHBvcnRzLiR7aWRlbnR9YCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCdcXG4nKSArXG4gICAgICAgICAgJ1xcbicsXG4gICAgICAgICd1dGY4JyxcbiAgICAgIClcbiAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKHdvcmtlclBhdGgsIFdBU0lfV09SS0VSX1RFTVBMQVRFLCAndXRmOCcpXG4gICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgICAgYnJvd3NlcldvcmtlclBhdGgsXG4gICAgICAgIGNyZWF0ZVdhc2lCcm93c2VyV29ya2VyQmluZGluZyh0aGlzLmNvbmZpZy53YXNtPy5icm93c2VyPy5mcyA/PyBmYWxzZSksXG4gICAgICAgICd1dGY4JyxcbiAgICAgIClcbiAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKFxuICAgICAgICBicm93c2VyRW50cnlQYXRoLFxuICAgICAgICBgZXhwb3J0ICogZnJvbSAnJHt0aGlzLmNvbmZpZy5wYWNrYWdlTmFtZX0td2FzbTMyLXdhc2knXFxuYCxcbiAgICAgIClcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHsga2luZDogJ2pzJywgcGF0aDogYmluZGluZ1BhdGggfSxcbiAgICAgICAgeyBraW5kOiAnanMnLCBwYXRoOiBicm93c2VyQmluZGluZ1BhdGggfSxcbiAgICAgICAgeyBraW5kOiAnanMnLCBwYXRoOiB3b3JrZXJQYXRoIH0sXG4gICAgICAgIHsga2luZDogJ2pzJywgcGF0aDogYnJvd3NlcldvcmtlclBhdGggfSxcbiAgICAgICAgeyBraW5kOiAnanMnLCBwYXRoOiBicm93c2VyRW50cnlQYXRoIH0sXG4gICAgICBdIHNhdGlzZmllcyBPdXRwdXRbXVxuICAgIH1cbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIHByaXZhdGUgc2V0RW52SWZOb3RFeGlzdHMoZW52OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXByb2Nlc3MuZW52W2Vudl0pIHtcbiAgICAgIHRoaXMuZW52c1tlbnZdID0gdmFsdWVcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZUpzQmluZGluZ09wdGlvbnMge1xuICBwbGF0Zm9ybT86IGJvb2xlYW5cbiAgbm9Kc0JpbmRpbmc/OiBib29sZWFuXG4gIGlkZW50czogc3RyaW5nW11cbiAganNCaW5kaW5nPzogc3RyaW5nXG4gIGVzbT86IGJvb2xlYW5cbiAgYmluYXJ5TmFtZTogc3RyaW5nXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmdcbiAgdmVyc2lvbjogc3RyaW5nXG4gIG91dHB1dERpcjogc3RyaW5nXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUpzQmluZGluZyhcbiAgb3B0aW9uczogV3JpdGVKc0JpbmRpbmdPcHRpb25zLFxuKTogUHJvbWlzZTxPdXRwdXQgfCB1bmRlZmluZWQ+IHtcbiAgaWYgKFxuICAgICFvcHRpb25zLnBsYXRmb3JtIHx8XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItbnVsbGlzaC1jb2FsZXNjaW5nXG4gICAgb3B0aW9ucy5ub0pzQmluZGluZyB8fFxuICAgIG9wdGlvbnMuaWRlbnRzLmxlbmd0aCA9PT0gMFxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IG5hbWUgPSBvcHRpb25zLmpzQmluZGluZyA/PyAnaW5kZXguanMnXG5cbiAgY29uc3QgY3JlYXRlQmluZGluZyA9IG9wdGlvbnMuZXNtID8gY3JlYXRlRXNtQmluZGluZyA6IGNyZWF0ZUNqc0JpbmRpbmdcbiAgY29uc3QgYmluZGluZyA9IGNyZWF0ZUJpbmRpbmcoXG4gICAgb3B0aW9ucy5iaW5hcnlOYW1lLFxuICAgIG9wdGlvbnMucGFja2FnZU5hbWUsXG4gICAgb3B0aW9ucy5pZGVudHMsXG4gICAgLy8gaW4gbnBtIHByZXZlcnNpb24gaG9va1xuICAgIG9wdGlvbnMudmVyc2lvbixcbiAgKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZGVzdCA9IGpvaW4ob3B0aW9ucy5vdXRwdXREaXIsIG5hbWUpXG4gICAgZGVidWcoJ1dyaXRpbmcganMgYmluZGluZyB0bzonKVxuICAgIGRlYnVnKCcgICVpJywgZGVzdClcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhkZXN0LCBiaW5kaW5nLCAndXRmLTgnKVxuICAgIHJldHVybiB7IGtpbmQ6ICdqcycsIHBhdGg6IGRlc3QgfSBzYXRpc2ZpZXMgT3V0cHV0XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB3cml0ZSBqcyBiaW5kaW5nIGZpbGUnLCB7IGNhdXNlOiBlIH0pXG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZVR5cGVEZWZPcHRpb25zIHtcbiAgdHlwZURlZkRpcjogc3RyaW5nXG4gIG5vRHRzSGVhZGVyPzogYm9vbGVhblxuICBkdHNIZWFkZXI/OiBzdHJpbmdcbiAgZHRzSGVhZGVyRmlsZT86IHN0cmluZ1xuICBjb25maWdEdHNIZWFkZXI/OiBzdHJpbmdcbiAgY29uZmlnRHRzSGVhZGVyRmlsZT86IHN0cmluZ1xuICBjb25zdEVudW0/OiBib29sZWFuXG4gIGN3ZDogc3RyaW5nXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVR5cGVEZWYoXG4gIG9wdGlvbnM6IEdlbmVyYXRlVHlwZURlZk9wdGlvbnMsXG4pOiBQcm9taXNlPHsgZXhwb3J0czogc3RyaW5nW107IGR0czogc3RyaW5nIH0+IHtcbiAgaWYgKCEoYXdhaXQgZGlyRXhpc3RzQXN5bmMob3B0aW9ucy50eXBlRGVmRGlyKSkpIHtcbiAgICByZXR1cm4geyBleHBvcnRzOiBbXSwgZHRzOiAnJyB9XG4gIH1cblxuICBsZXQgaGVhZGVyID0gJydcbiAgbGV0IGR0cyA9ICcnXG4gIGxldCBleHBvcnRzOiBzdHJpbmdbXSA9IFtdXG5cbiAgaWYgKCFvcHRpb25zLm5vRHRzSGVhZGVyKSB7XG4gICAgY29uc3QgZHRzSGVhZGVyID0gb3B0aW9ucy5kdHNIZWFkZXIgPz8gb3B0aW9ucy5jb25maWdEdHNIZWFkZXJcbiAgICAvLyBgZHRzSGVhZGVyRmlsZWAgaW4gY29uZmlnID4gYGR0c0hlYWRlcmAgaW4gY2xpIGZsYWcgPiBgZHRzSGVhZGVyYCBpbiBjb25maWdcbiAgICBpZiAob3B0aW9ucy5jb25maWdEdHNIZWFkZXJGaWxlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBoZWFkZXIgPSBhd2FpdCByZWFkRmlsZUFzeW5jKFxuICAgICAgICAgIGpvaW4ob3B0aW9ucy5jd2QsIG9wdGlvbnMuY29uZmlnRHRzSGVhZGVyRmlsZSksXG4gICAgICAgICAgJ3V0Zi04JyxcbiAgICAgICAgKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBkZWJ1Zy53YXJuKFxuICAgICAgICAgIGBGYWlsZWQgdG8gcmVhZCBkdHMgaGVhZGVyIGZpbGUgJHtvcHRpb25zLmNvbmZpZ0R0c0hlYWRlckZpbGV9YCxcbiAgICAgICAgICBlLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkdHNIZWFkZXIpIHtcbiAgICAgIGhlYWRlciA9IGR0c0hlYWRlclxuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXIgPSBERUZBVUxUX1RZUEVfREVGX0hFQURFUlxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgcmVhZGRpckFzeW5jKG9wdGlvbnMudHlwZURlZkRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pXG5cbiAgaWYgKCFmaWxlcy5sZW5ndGgpIHtcbiAgICBkZWJ1ZygnTm8gdHlwZSBkZWYgZmlsZXMgZm91bmQuIFNraXAgZ2VuZXJhdGluZyBkdHMgZmlsZS4nKVxuICAgIHJldHVybiB7IGV4cG9ydHM6IFtdLCBkdHM6ICcnIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGlmICghZmlsZS5pc0ZpbGUoKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCB7IGR0czogZmlsZUR0cywgZXhwb3J0czogZmlsZUV4cG9ydHMgfSA9IGF3YWl0IHByb2Nlc3NUeXBlRGVmKFxuICAgICAgam9pbihvcHRpb25zLnR5cGVEZWZEaXIsIGZpbGUubmFtZSksXG4gICAgICBvcHRpb25zLmNvbnN0RW51bSA/PyB0cnVlLFxuICAgIClcblxuICAgIGR0cyArPSBmaWxlRHRzXG4gICAgZXhwb3J0cy5wdXNoKC4uLmZpbGVFeHBvcnRzKVxuICB9XG5cbiAgaWYgKGR0cy5pbmRleE9mKCdFeHRlcm5hbE9iamVjdDwnKSA+IC0xKSB7XG4gICAgaGVhZGVyICs9IGBcbmV4cG9ydCBkZWNsYXJlIGNsYXNzIEV4dGVybmFsT2JqZWN0PFQ+IHtcbiAgcmVhZG9ubHkgJyc6IHtcbiAgICByZWFkb25seSAnJzogdW5pcXVlIHN5bWJvbFxuICAgIFtLOiBzeW1ib2xdOiBUXG4gIH1cbn1cbmBcbiAgfVxuXG4gIGlmIChkdHMuaW5kZXhPZignVHlwZWRBcnJheScpID4gLTEpIHtcbiAgICBoZWFkZXIgKz0gYFxuZXhwb3J0IHR5cGUgVHlwZWRBcnJheSA9IEludDhBcnJheSB8IFVpbnQ4QXJyYXkgfCBVaW50OENsYW1wZWRBcnJheSB8IEludDE2QXJyYXkgfCBVaW50MTZBcnJheSB8IEludDMyQXJyYXkgfCBVaW50MzJBcnJheSB8IEZsb2F0MzJBcnJheSB8IEZsb2F0NjRBcnJheSB8IEJpZ0ludDY0QXJyYXkgfCBCaWdVaW50NjRBcnJheVxuYFxuICB9XG5cbiAgZHRzID0gaGVhZGVyICsgZHRzXG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzLFxuICAgIGR0cyxcbiAgfVxufVxuIiwiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBjb2RlZ2VuL2luZGV4LnRzXG4vLyBEbyBub3QgZWRpdCB0aGlzIGZpbGUgbWFudWFsbHlcbmltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NsaXBhbmlvbidcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDcmVhdGVOcG1EaXJzQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBzdGF0aWMgcGF0aHMgPSBbWydjcmVhdGUtbnBtLWRpcnMnXV1cblxuICBzdGF0aWMgdXNhZ2UgPSBDb21tYW5kLlVzYWdlKHtcbiAgICBkZXNjcmlwdGlvbjogJ0NyZWF0ZSBucG0gcGFja2FnZSBkaXJzIGZvciBkaWZmZXJlbnQgcGxhdGZvcm1zJyxcbiAgfSlcblxuICBjd2QgPSBPcHRpb24uU3RyaW5nKCctLWN3ZCcsIHByb2Nlc3MuY3dkKCksIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGgnLFxuICB9KVxuXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWNvbmZpZy1wYXRoLC1jJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgbmFwaWAgY29uZmlnIGpzb24gZmlsZScsXG4gIH0pXG5cbiAgcGFja2FnZUpzb25QYXRoID0gT3B0aW9uLlN0cmluZygnLS1wYWNrYWdlLWpzb24tcGF0aCcsICdwYWNrYWdlLmpzb24nLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBwYWNrYWdlLmpzb25gJyxcbiAgfSlcblxuICBucG1EaXIgPSBPcHRpb24uU3RyaW5nKCctLW5wbS1kaXInLCAnbnBtJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBucG0gcGFja2FnZXMgcHV0JyxcbiAgfSlcblxuICBkcnlSdW4gPSBPcHRpb24uQm9vbGVhbignLS1kcnktcnVuJywgZmFsc2UsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0RyeSBydW4gd2l0aG91dCB0b3VjaGluZyBmaWxlIHN5c3RlbScsXG4gIH0pXG5cbiAgZ2V0T3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3dkOiB0aGlzLmN3ZCxcbiAgICAgIGNvbmZpZ1BhdGg6IHRoaXMuY29uZmlnUGF0aCxcbiAgICAgIHBhY2thZ2VKc29uUGF0aDogdGhpcy5wYWNrYWdlSnNvblBhdGgsXG4gICAgICBucG1EaXI6IHRoaXMubnBtRGlyLFxuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgbnBtIHBhY2thZ2UgZGlycyBmb3IgZGlmZmVyZW50IHBsYXRmb3Jtc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU5wbURpcnNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICBjd2Q/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICpcbiAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICovXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBucG0gcGFja2FnZXMgcHV0XG4gICAqXG4gICAqIEBkZWZhdWx0ICducG0nXG4gICAqL1xuICBucG1EaXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIERyeSBydW4gd2l0aG91dCB0b3VjaGluZyBmaWxlIHN5c3RlbVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhblxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZWZhdWx0Q3JlYXRlTnBtRGlyc09wdGlvbnMoXG4gIG9wdGlvbnM6IENyZWF0ZU5wbURpcnNPcHRpb25zLFxuKSB7XG4gIHJldHVybiB7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIHBhY2thZ2VKc29uUGF0aDogJ3BhY2thZ2UuanNvbicsXG4gICAgbnBtRGlyOiAnbnBtJyxcbiAgICBkcnlSdW46IGZhbHNlLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cbn1cbiIsImltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnc2VtdmVyJ1xuXG5pbXBvcnQge1xuICBhcHBseURlZmF1bHRDcmVhdGVOcG1EaXJzT3B0aW9ucyxcbiAgdHlwZSBDcmVhdGVOcG1EaXJzT3B0aW9ucyxcbn0gZnJvbSAnLi4vZGVmL2NyZWF0ZS1ucG0tZGlycy5qcydcbmltcG9ydCB7XG4gIGRlYnVnRmFjdG9yeSxcbiAgcmVhZE5hcGlDb25maWcsXG4gIG1rZGlyQXN5bmMgYXMgcmF3TWtkaXJBc3luYyxcbiAgcGljayxcbiAgd3JpdGVGaWxlQXN5bmMgYXMgcmF3V3JpdGVGaWxlQXN5bmMsXG4gIHR5cGUgVGFyZ2V0LFxuICB0eXBlIENvbW1vblBhY2thZ2VKc29uRmllbGRzLFxufSBmcm9tICcuLi91dGlscy9pbmRleC5qcydcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0ZhY3RvcnkoJ2NyZWF0ZS1ucG0tZGlycycpXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZU1ldGEge1xuICAnZGlzdC10YWdzJzogeyBbaW5kZXg6IHN0cmluZ106IHN0cmluZyB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVOcG1EaXJzKHVzZXJPcHRpb25zOiBDcmVhdGVOcG1EaXJzT3B0aW9ucykge1xuICBjb25zdCBvcHRpb25zID0gYXBwbHlEZWZhdWx0Q3JlYXRlTnBtRGlyc09wdGlvbnModXNlck9wdGlvbnMpXG5cbiAgYXN5bmMgZnVuY3Rpb24gbWtkaXJBc3luYyhkaXI6IHN0cmluZykge1xuICAgIGRlYnVnKCdUcnkgdG8gY3JlYXRlIGRpcjogJWknLCBkaXIpXG4gICAgaWYgKG9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBhd2FpdCByYXdNa2RpckFzeW5jKGRpciwge1xuICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB3cml0ZUZpbGVBc3luYyhmaWxlOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZykge1xuICAgIGRlYnVnKCdXcml0aW5nIGZpbGUgJWknLCBmaWxlKVxuXG4gICAgaWYgKG9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgICBkZWJ1Zyhjb250ZW50KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYXdhaXQgcmF3V3JpdGVGaWxlQXN5bmMoZmlsZSwgY29udGVudClcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMucGFja2FnZUpzb25QYXRoKVxuICBjb25zdCBucG1QYXRoID0gcmVzb2x2ZShvcHRpb25zLmN3ZCwgb3B0aW9ucy5ucG1EaXIpXG5cbiAgZGVidWcoYFJlYWQgY29udGVudCBmcm9tIFske29wdGlvbnMuY29uZmlnUGF0aCA/PyBwYWNrYWdlSnNvblBhdGh9XWApXG5cbiAgY29uc3QgeyB0YXJnZXRzLCBiaW5hcnlOYW1lLCBwYWNrYWdlTmFtZSwgcGFja2FnZUpzb24gfSA9XG4gICAgYXdhaXQgcmVhZE5hcGlDb25maWcoXG4gICAgICBwYWNrYWdlSnNvblBhdGgsXG4gICAgICBvcHRpb25zLmNvbmZpZ1BhdGggPyByZXNvbHZlKG9wdGlvbnMuY3dkLCBvcHRpb25zLmNvbmZpZ1BhdGgpIDogdW5kZWZpbmVkLFxuICAgIClcblxuICBmb3IgKGNvbnN0IHRhcmdldCBvZiB0YXJnZXRzKSB7XG4gICAgY29uc3QgdGFyZ2V0RGlyID0gam9pbihucG1QYXRoLCBgJHt0YXJnZXQucGxhdGZvcm1BcmNoQUJJfWApXG4gICAgYXdhaXQgbWtkaXJBc3luYyh0YXJnZXREaXIpXG5cbiAgICBjb25zdCBiaW5hcnlGaWxlTmFtZSA9XG4gICAgICB0YXJnZXQuYXJjaCA9PT0gJ3dhc20zMidcbiAgICAgICAgPyBgJHtiaW5hcnlOYW1lfS4ke3RhcmdldC5wbGF0Zm9ybUFyY2hBQkl9Lndhc21gXG4gICAgICAgIDogYCR7YmluYXJ5TmFtZX0uJHt0YXJnZXQucGxhdGZvcm1BcmNoQUJJfS5ub2RlYFxuICAgIGNvbnN0IHNjb3BlZFBhY2thZ2VKc29uOiBDb21tb25QYWNrYWdlSnNvbkZpZWxkcyA9IHtcbiAgICAgIG5hbWU6IGAke3BhY2thZ2VOYW1lfS0ke3RhcmdldC5wbGF0Zm9ybUFyY2hBQkl9YCxcbiAgICAgIHZlcnNpb246IHBhY2thZ2VKc29uLnZlcnNpb24sXG4gICAgICBjcHU6IHRhcmdldC5hcmNoICE9PSAndW5pdmVyc2FsJyA/IFt0YXJnZXQuYXJjaF0gOiB1bmRlZmluZWQsXG4gICAgICBtYWluOiBiaW5hcnlGaWxlTmFtZSxcbiAgICAgIGZpbGVzOiBbYmluYXJ5RmlsZU5hbWVdLFxuICAgICAgLi4ucGljayhcbiAgICAgICAgcGFja2FnZUpzb24sXG4gICAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAgICdrZXl3b3JkcycsXG4gICAgICAgICdhdXRob3InLFxuICAgICAgICAnYXV0aG9ycycsXG4gICAgICAgICdob21lcGFnZScsXG4gICAgICAgICdsaWNlbnNlJyxcbiAgICAgICAgJ2VuZ2luZXMnLFxuICAgICAgICAncmVwb3NpdG9yeScsXG4gICAgICAgICdidWdzJyxcbiAgICAgICksXG4gICAgfVxuICAgIGlmIChwYWNrYWdlSnNvbi5wdWJsaXNoQ29uZmlnKSB7XG4gICAgICBzY29wZWRQYWNrYWdlSnNvbi5wdWJsaXNoQ29uZmlnID0gcGljayhcbiAgICAgICAgcGFja2FnZUpzb24ucHVibGlzaENvbmZpZyxcbiAgICAgICAgJ3JlZ2lzdHJ5JyxcbiAgICAgICAgJ2FjY2VzcycsXG4gICAgICApXG4gICAgfVxuICAgIGlmICh0YXJnZXQuYXJjaCAhPT0gJ3dhc20zMicpIHtcbiAgICAgIHNjb3BlZFBhY2thZ2VKc29uLm9zID0gW3RhcmdldC5wbGF0Zm9ybV1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZW50cnkgPSBgJHtiaW5hcnlOYW1lfS53YXNpLmNqc2BcbiAgICAgIHNjb3BlZFBhY2thZ2VKc29uLm1haW4gPSBlbnRyeVxuICAgICAgc2NvcGVkUGFja2FnZUpzb24uYnJvd3NlciA9IGAke2JpbmFyeU5hbWV9Lndhc2ktYnJvd3Nlci5qc2BcbiAgICAgIHNjb3BlZFBhY2thZ2VKc29uLmZpbGVzPy5wdXNoKFxuICAgICAgICBlbnRyeSxcbiAgICAgICAgc2NvcGVkUGFja2FnZUpzb24uYnJvd3NlcixcbiAgICAgICAgYHdhc2ktd29ya2VyLm1qc2AsXG4gICAgICAgIGB3YXNpLXdvcmtlci1icm93c2VyLm1qc2AsXG4gICAgICApXG4gICAgICBsZXQgbmVlZFJlc3RyaWN0Tm9kZVZlcnNpb24gPSB0cnVlXG4gICAgICBpZiAoc2NvcGVkUGFja2FnZUpzb24uZW5naW5lcz8ubm9kZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHsgbWFqb3IgfSA9IHBhcnNlKHNjb3BlZFBhY2thZ2VKc29uLmVuZ2luZXMubm9kZSkgPz8ge1xuICAgICAgICAgICAgbWFqb3I6IDAsXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtYWpvciA+PSAxNCkge1xuICAgICAgICAgICAgbmVlZFJlc3RyaWN0Tm9kZVZlcnNpb24gPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChuZWVkUmVzdHJpY3ROb2RlVmVyc2lvbikge1xuICAgICAgICBzY29wZWRQYWNrYWdlSnNvbi5lbmdpbmVzID0ge1xuICAgICAgICAgIG5vZGU6ICc+PTE0LjAuMCcsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHdhc21SdW50aW1lID0gYXdhaXQgZmV0Y2goXG4gICAgICAgIGBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9AbmFwaS1ycy93YXNtLXJ1bnRpbWVgLFxuICAgICAgKS50aGVuKChyZXMpID0+IHJlcy5qc29uKCkgYXMgUHJvbWlzZTxQYWNrYWdlTWV0YT4pXG4gICAgICBzY29wZWRQYWNrYWdlSnNvbi5kZXBlbmRlbmNpZXMgPSB7XG4gICAgICAgICdAbmFwaS1ycy93YXNtLXJ1bnRpbWUnOiBgXiR7d2FzbVJ1bnRpbWVbJ2Rpc3QtdGFncyddLmxhdGVzdH1gLFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0YXJnZXQuYWJpID09PSAnZ251Jykge1xuICAgICAgc2NvcGVkUGFja2FnZUpzb24ubGliYyA9IFsnZ2xpYmMnXVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0LmFiaSA9PT0gJ211c2wnKSB7XG4gICAgICBzY29wZWRQYWNrYWdlSnNvbi5saWJjID0gWydtdXNsJ11cbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRQYWNrYWdlSnNvbiA9IGpvaW4odGFyZ2V0RGlyLCAncGFja2FnZS5qc29uJylcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgIHRhcmdldFBhY2thZ2VKc29uLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoc2NvcGVkUGFja2FnZUpzb24sIG51bGwsIDIpICsgJ1xcbicsXG4gICAgKVxuICAgIGNvbnN0IHRhcmdldFJlYWRtZSA9IGpvaW4odGFyZ2V0RGlyLCAnUkVBRE1FLm1kJylcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyh0YXJnZXRSZWFkbWUsIHJlYWRtZShwYWNrYWdlTmFtZSwgdGFyZ2V0KSlcblxuICAgIGRlYnVnLmluZm8oYCR7cGFja2FnZU5hbWV9IC0ke3RhcmdldC5wbGF0Zm9ybUFyY2hBQkl9IGNyZWF0ZWRgKVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRtZShwYWNrYWdlTmFtZTogc3RyaW5nLCB0YXJnZXQ6IFRhcmdldCkge1xuICByZXR1cm4gYCMgXFxgJHtwYWNrYWdlTmFtZX0tJHt0YXJnZXQucGxhdGZvcm1BcmNoQUJJfVxcYFxuXG5UaGlzIGlzIHRoZSAqKiR7dGFyZ2V0LnRyaXBsZX0qKiBiaW5hcnkgZm9yIFxcYCR7cGFja2FnZU5hbWV9XFxgXG5gXG59XG4iLCIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGNvZGVnZW4vaW5kZXgudHNcbi8vIERvIG5vdCBlZGl0IHRoaXMgZmlsZSBtYW51YWxseVxuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJ1xuaW1wb3J0ICogYXMgdHlwYW5pb24gZnJvbSAndHlwYW5pb24nXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTmV3Q29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBzdGF0aWMgcGF0aHMgPSBbWyduZXcnXV1cblxuICBzdGF0aWMgdXNhZ2UgPSBDb21tYW5kLlVzYWdlKHtcbiAgICBkZXNjcmlwdGlvbjogJ0NyZWF0ZSBhIG5ldyBwcm9qZWN0IHdpdGggcHJlLWNvbmZpZ3VyZWQgYm9pbGVycGxhdGUnLFxuICB9KVxuXG4gICQkcGF0aCA9IE9wdGlvbi5TdHJpbmcoeyByZXF1aXJlZDogZmFsc2UgfSlcblxuICAkJG5hbWU/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLW5hbWUsLW4nLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIG5hbWUgb2YgdGhlIHByb2plY3QsIGRlZmF1bHQgdG8gdGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSBpZiBub3QgcHJvdmlkZWQnLFxuICB9KVxuXG4gIG1pbk5vZGVBcGlWZXJzaW9uID0gT3B0aW9uLlN0cmluZygnLS1taW4tbm9kZS1hcGksLXYnLCAnNCcsIHtcbiAgICB2YWxpZGF0b3I6IHR5cGFuaW9uLmlzTnVtYmVyKCksXG4gICAgZGVzY3JpcHRpb246ICdUaGUgbWluaW11bSBOb2RlLUFQSSB2ZXJzaW9uIHRvIHN1cHBvcnQnLFxuICB9KVxuXG4gIHBhY2thZ2VNYW5hZ2VyID0gT3B0aW9uLlN0cmluZygnLS1wYWNrYWdlLW1hbmFnZXInLCAneWFybicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlLiBPbmx5IHN1cHBvcnQgeWFybiA0LnggZm9yIG5vdy4nLFxuICB9KVxuXG4gIGxpY2Vuc2UgPSBPcHRpb24uU3RyaW5nKCctLWxpY2Vuc2UsLWwnLCAnTUlUJywge1xuICAgIGRlc2NyaXB0aW9uOiAnTGljZW5zZSBmb3Igb3Blbi1zb3VyY2VkIHByb2plY3QnLFxuICB9KVxuXG4gIHRhcmdldHMgPSBPcHRpb24uQXJyYXkoJy0tdGFyZ2V0cywtdCcsIFtdLCB7XG4gICAgZGVzY3JpcHRpb246ICdBbGwgdGFyZ2V0cyB0aGUgY3JhdGUgd2lsbCBiZSBjb21waWxlZCBmb3IuJyxcbiAgfSlcblxuICBlbmFibGVEZWZhdWx0VGFyZ2V0cyA9IE9wdGlvbi5Cb29sZWFuKCctLWVuYWJsZS1kZWZhdWx0LXRhcmdldHMnLCB0cnVlLCB7XG4gICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIGVuYWJsZSBkZWZhdWx0IHRhcmdldHMnLFxuICB9KVxuXG4gIGVuYWJsZUFsbFRhcmdldHMgPSBPcHRpb24uQm9vbGVhbignLS1lbmFibGUtYWxsLXRhcmdldHMnLCBmYWxzZSwge1xuICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciBlbmFibGUgYWxsIHRhcmdldHMnLFxuICB9KVxuXG4gIGVuYWJsZVR5cGVEZWYgPSBPcHRpb24uQm9vbGVhbignLS1lbmFibGUtdHlwZS1kZWYnLCB0cnVlLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnV2hldGhlciBlbmFibGUgdGhlIGB0eXBlLWRlZmAgZmVhdHVyZSBmb3IgdHlwZXNjcmlwdCBkZWZpbml0aW9ucyBhdXRvLWdlbmVyYXRpb24nLFxuICB9KVxuXG4gIGVuYWJsZUdpdGh1YkFjdGlvbnMgPSBPcHRpb24uQm9vbGVhbignLS1lbmFibGUtZ2l0aHViLWFjdGlvbnMnLCB0cnVlLCB7XG4gICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIGdlbmVyYXRlIHByZWNvbmZpZ3VyZWQgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3cnLFxuICB9KVxuXG4gIHRlc3RGcmFtZXdvcmsgPSBPcHRpb24uU3RyaW5nKCctLXRlc3QtZnJhbWV3b3JrJywgJ2F2YScsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgSmF2YVNjcmlwdCB0ZXN0IGZyYW1ld29yayB0byB1c2UsIG9ubHkgc3VwcG9ydCBgYXZhYCBmb3Igbm93JyxcbiAgfSlcblxuICBkcnlSdW4gPSBPcHRpb24uQm9vbGVhbignLS1kcnktcnVuJywgZmFsc2UsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdG8gcnVuIHRoZSBjb21tYW5kIGluIGRyeS1ydW4gbW9kZScsXG4gIH0pXG5cbiAgZ2V0T3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGF0aDogdGhpcy4kJHBhdGgsXG4gICAgICBuYW1lOiB0aGlzLiQkbmFtZSxcbiAgICAgIG1pbk5vZGVBcGlWZXJzaW9uOiB0aGlzLm1pbk5vZGVBcGlWZXJzaW9uLFxuICAgICAgcGFja2FnZU1hbmFnZXI6IHRoaXMucGFja2FnZU1hbmFnZXIsXG4gICAgICBsaWNlbnNlOiB0aGlzLmxpY2Vuc2UsXG4gICAgICB0YXJnZXRzOiB0aGlzLnRhcmdldHMsXG4gICAgICBlbmFibGVEZWZhdWx0VGFyZ2V0czogdGhpcy5lbmFibGVEZWZhdWx0VGFyZ2V0cyxcbiAgICAgIGVuYWJsZUFsbFRhcmdldHM6IHRoaXMuZW5hYmxlQWxsVGFyZ2V0cyxcbiAgICAgIGVuYWJsZVR5cGVEZWY6IHRoaXMuZW5hYmxlVHlwZURlZixcbiAgICAgIGVuYWJsZUdpdGh1YkFjdGlvbnM6IHRoaXMuZW5hYmxlR2l0aHViQWN0aW9ucyxcbiAgICAgIHRlc3RGcmFtZXdvcms6IHRoaXMudGVzdEZyYW1ld29yayxcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHByb2plY3Qgd2l0aCBwcmUtY29uZmlndXJlZCBib2lsZXJwbGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ld09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHBhdGggd2hlcmUgdGhlIE5BUEktUlMgcHJvamVjdCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICBwYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJvamVjdCwgZGVmYXVsdCB0byB0aGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IGlmIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgbmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gTm9kZS1BUEkgdmVyc2lvbiB0byBzdXBwb3J0XG4gICAqXG4gICAqIEBkZWZhdWx0IDRcbiAgICovXG4gIG1pbk5vZGVBcGlWZXJzaW9uPzogbnVtYmVyXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSBtYW5hZ2VyIHRvIHVzZS4gT25seSBzdXBwb3J0IHlhcm4gNC54IGZvciBub3cuXG4gICAqXG4gICAqIEBkZWZhdWx0ICd5YXJuJ1xuICAgKi9cbiAgcGFja2FnZU1hbmFnZXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIExpY2Vuc2UgZm9yIG9wZW4tc291cmNlZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0ICdNSVQnXG4gICAqL1xuICBsaWNlbnNlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBBbGwgdGFyZ2V0cyB0aGUgY3JhdGUgd2lsbCBiZSBjb21waWxlZCBmb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICB0YXJnZXRzPzogc3RyaW5nW11cbiAgLyoqXG4gICAqIFdoZXRoZXIgZW5hYmxlIGRlZmF1bHQgdGFyZ2V0c1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBlbmFibGVEZWZhdWx0VGFyZ2V0cz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZW5hYmxlIGFsbCB0YXJnZXRzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBlbmFibGVBbGxUYXJnZXRzPzogYm9vbGVhblxuICAvKipcbiAgICogV2hldGhlciBlbmFibGUgdGhlIGB0eXBlLWRlZmAgZmVhdHVyZSBmb3IgdHlwZXNjcmlwdCBkZWZpbml0aW9ucyBhdXRvLWdlbmVyYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZW5hYmxlVHlwZURlZj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZ2VuZXJhdGUgcHJlY29uZmlndXJlZCBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvd1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBlbmFibGVHaXRodWJBY3Rpb25zPzogYm9vbGVhblxuICAvKipcbiAgICogVGhlIEphdmFTY3JpcHQgdGVzdCBmcmFtZXdvcmsgdG8gdXNlLCBvbmx5IHN1cHBvcnQgYGF2YWAgZm9yIG5vd1xuICAgKlxuICAgKiBAZGVmYXVsdCAnYXZhJ1xuICAgKi9cbiAgdGVzdEZyYW1ld29yaz86IHN0cmluZ1xuICAvKipcbiAgICogV2hldGhlciB0byBydW4gdGhlIGNvbW1hbmQgaW4gZHJ5LXJ1biBtb2RlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHROZXdPcHRpb25zKG9wdGlvbnM6IE5ld09wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBtaW5Ob2RlQXBpVmVyc2lvbjogNCxcbiAgICBwYWNrYWdlTWFuYWdlcjogJ3lhcm4nLFxuICAgIGxpY2Vuc2U6ICdNSVQnLFxuICAgIHRhcmdldHM6IFtdLFxuICAgIGVuYWJsZURlZmF1bHRUYXJnZXRzOiB0cnVlLFxuICAgIGVuYWJsZUFsbFRhcmdldHM6IGZhbHNlLFxuICAgIGVuYWJsZVR5cGVEZWY6IHRydWUsXG4gICAgZW5hYmxlR2l0aHViQWN0aW9uczogdHJ1ZSxcbiAgICB0ZXN0RnJhbWV3b3JrOiAnYXZhJyxcbiAgICBkcnlSdW46IGZhbHNlLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cbn1cbiIsIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG4vLyBCYXJlIGtleXMgbWF5IG9ubHkgY29udGFpbiBBU0NJSSBsZXR0ZXJzLFxuLy8gQVNDSUkgZGlnaXRzLCB1bmRlcnNjb3JlcywgYW5kIGRhc2hlcyAoQS1aYS16MC05Xy0pLlxuZnVuY3Rpb24gam9pbktleXMoa2V5cykge1xuICAvLyBEb3R0ZWQga2V5cyBhcmUgYSBzZXF1ZW5jZSBvZiBiYXJlIG9yIHF1b3RlZCBrZXlzIGpvaW5lZCB3aXRoIGEgZG90LlxuICAvLyBUaGlzIGFsbG93cyBmb3IgZ3JvdXBpbmcgc2ltaWxhciBwcm9wZXJ0aWVzIHRvZ2V0aGVyOlxuICByZXR1cm4ga2V5cy5tYXAoKHN0cik9PntcbiAgICByZXR1cm4gc3RyLmxlbmd0aCA9PT0gMCB8fCBzdHIubWF0Y2goL1teQS1aYS16MC05Xy1dLykgPyBKU09OLnN0cmluZ2lmeShzdHIpIDogc3RyO1xuICB9KS5qb2luKFwiLlwiKTtcbn1cbmNsYXNzIER1bXBlciB7XG4gIG1heFBhZCA9IDA7XG4gIHNyY09iamVjdDtcbiAgb3V0cHV0ID0gW107XG4gICNhcnJheVR5cGVDYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3RydWN0b3Ioc3JjT2JqYyl7XG4gICAgdGhpcy5zcmNPYmplY3QgPSBzcmNPYmpjO1xuICB9XG4gIGR1bXAoZm10T3B0aW9ucyA9IHt9KSB7XG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICB0aGlzLm91dHB1dCA9IHRoaXMuI3ByaW50T2JqZWN0KHRoaXMuc3JjT2JqZWN0KTtcbiAgICB0aGlzLm91dHB1dCA9IHRoaXMuI2Zvcm1hdChmbXRPcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5vdXRwdXQ7XG4gIH1cbiAgI3ByaW50T2JqZWN0KG9iaiwga2V5cyA9IFtdKSB7XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgY29uc3QgcHJvcHMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIGNvbnN0IGlubGluZVByb3BzID0gW107XG4gICAgY29uc3QgbXVsdGlsaW5lUHJvcHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcHMpe1xuICAgICAgaWYgKHRoaXMuI2lzU2ltcGx5U2VyaWFsaXphYmxlKG9ialtwcm9wXSkpIHtcbiAgICAgICAgaW5saW5lUHJvcHMucHVzaChwcm9wKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG11bHRpbGluZVByb3BzLnB1c2gocHJvcCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHNvcnRlZFByb3BzID0gaW5saW5lUHJvcHMuY29uY2F0KG11bHRpbGluZVByb3BzKTtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2Ygc29ydGVkUHJvcHMpe1xuICAgICAgY29uc3QgdmFsdWUgPSBvYmpbcHJvcF07XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIG91dC5wdXNoKHRoaXMuI2RhdGVEZWNsYXJhdGlvbihbXG4gICAgICAgICAgcHJvcFxuICAgICAgICBdLCB2YWx1ZSkpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgb3V0LnB1c2godGhpcy4jc3RyRGVjbGFyYXRpb24oW1xuICAgICAgICAgIHByb3BcbiAgICAgICAgXSwgdmFsdWUudG9TdHJpbmcoKSkpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgb3V0LnB1c2godGhpcy4jbnVtYmVyRGVjbGFyYXRpb24oW1xuICAgICAgICAgIHByb3BcbiAgICAgICAgXSwgdmFsdWUpKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICBvdXQucHVzaCh0aGlzLiNib29sRGVjbGFyYXRpb24oW1xuICAgICAgICAgIHByb3BcbiAgICAgICAgXSwgdmFsdWUpKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBjb25zdCBhcnJheVR5cGUgPSB0aGlzLiNnZXRUeXBlT2ZBcnJheSh2YWx1ZSk7XG4gICAgICAgIGlmIChhcnJheVR5cGUgPT09IFwiT05MWV9QUklNSVRJVkVcIikge1xuICAgICAgICAgIG91dC5wdXNoKHRoaXMuI2FycmF5RGVjbGFyYXRpb24oW1xuICAgICAgICAgICAgcHJvcFxuICAgICAgICAgIF0sIHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXJyYXlUeXBlID09PSBcIk9OTFlfT0JKRUNUX0VYQ0xVRElOR19BUlJBWVwiKSB7XG4gICAgICAgICAgLy8gYXJyYXkgb2Ygb2JqZWN0c1xuICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBvdXQucHVzaChcIlwiKTtcbiAgICAgICAgICAgIG91dC5wdXNoKHRoaXMuI2hlYWRlckdyb3VwKFtcbiAgICAgICAgICAgICAgLi4ua2V5cyxcbiAgICAgICAgICAgICAgcHJvcFxuICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgb3V0LnB1c2goLi4udGhpcy4jcHJpbnRPYmplY3QodmFsdWVbaV0sIFtcbiAgICAgICAgICAgICAgLi4ua2V5cyxcbiAgICAgICAgICAgICAgcHJvcFxuICAgICAgICAgICAgXSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGlzIGlzIGEgY29tcGxleCBhcnJheSwgdXNlIHRoZSBpbmxpbmUgZm9ybWF0LlxuICAgICAgICAgIGNvbnN0IHN0ciA9IHZhbHVlLm1hcCgoeCk9PnRoaXMuI3ByaW50QXNJbmxpbmVWYWx1ZSh4KSkuam9pbihcIixcIik7XG4gICAgICAgICAgb3V0LnB1c2goYCR7dGhpcy4jZGVjbGFyYXRpb24oW1xuICAgICAgICAgICAgcHJvcFxuICAgICAgICAgIF0pfVske3N0cn1dYCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIG91dC5wdXNoKFwiXCIpO1xuICAgICAgICBvdXQucHVzaCh0aGlzLiNoZWFkZXIoW1xuICAgICAgICAgIC4uLmtleXMsXG4gICAgICAgICAgcHJvcFxuICAgICAgICBdKSk7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IHRvUGFyc2UgPSB2YWx1ZTtcbiAgICAgICAgICBvdXQucHVzaCguLi50aGlzLiNwcmludE9iamVjdCh0b1BhcnNlLCBbXG4gICAgICAgICAgICAuLi5rZXlzLFxuICAgICAgICAgICAgcHJvcFxuICAgICAgICAgIF0pKTtcbiAgICAgICAgfVxuICAgICAgLy8gb3V0LnB1c2goLi4udGhpcy5fcGFyc2UodmFsdWUsIGAke3BhdGh9JHtwcm9wfS5gKSk7XG4gICAgICB9XG4gICAgfVxuICAgIG91dC5wdXNoKFwiXCIpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgI2lzUHJpbWl0aXZlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCB8fCBbXG4gICAgICBcInN0cmluZ1wiLFxuICAgICAgXCJudW1iZXJcIixcbiAgICAgIFwiYm9vbGVhblwiXG4gICAgXS5pbmNsdWRlcyh0eXBlb2YgdmFsdWUpO1xuICB9XG4gICNnZXRUeXBlT2ZBcnJheShhcnIpIHtcbiAgICBpZiAodGhpcy4jYXJyYXlUeXBlQ2FjaGUuaGFzKGFycikpIHtcbiAgICAgIHJldHVybiB0aGlzLiNhcnJheVR5cGVDYWNoZS5nZXQoYXJyKTtcbiAgICB9XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuI2RvR2V0VHlwZU9mQXJyYXkoYXJyKTtcbiAgICB0aGlzLiNhcnJheVR5cGVDYWNoZS5zZXQoYXJyLCB0eXBlKTtcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuICAjZG9HZXRUeXBlT2ZBcnJheShhcnIpIHtcbiAgICBpZiAoIWFyci5sZW5ndGgpIHtcbiAgICAgIC8vIGFueSB0eXBlIHNob3VsZCBiZSBmaW5lXG4gICAgICByZXR1cm4gXCJPTkxZX1BSSU1JVElWRVwiO1xuICAgIH1cbiAgICBjb25zdCBvbmx5UHJpbWl0aXZlID0gdGhpcy4jaXNQcmltaXRpdmUoYXJyWzBdKTtcbiAgICBpZiAoYXJyWzBdIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHJldHVybiBcIk1JWEVEXCI7XG4gICAgfVxuICAgIGZvcihsZXQgaSA9IDE7IGkgPCBhcnIubGVuZ3RoOyBpKyspe1xuICAgICAgaWYgKG9ubHlQcmltaXRpdmUgIT09IHRoaXMuI2lzUHJpbWl0aXZlKGFycltpXSkgfHwgYXJyW2ldIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIFwiTUlYRURcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9ubHlQcmltaXRpdmUgPyBcIk9OTFlfUFJJTUlUSVZFXCIgOiBcIk9OTFlfT0JKRUNUX0VYQ0xVRElOR19BUlJBWVwiO1xuICB9XG4gICNwcmludEFzSW5saW5lVmFsdWUodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gYFwiJHt0aGlzLiNwcmludERhdGUodmFsdWUpfVwiYDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNvbnN0IHN0ciA9IHZhbHVlLm1hcCgoeCk9PnRoaXMuI3ByaW50QXNJbmxpbmVWYWx1ZSh4KSkuam9pbihcIixcIik7XG4gICAgICByZXR1cm4gYFske3N0cn1dYDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGQgbmV2ZXIgcmVhY2hcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBzdHIgPSBPYmplY3Qua2V5cyh2YWx1ZSkubWFwKChrZXkpPT57XG4gICAgICAgIHJldHVybiBgJHtqb2luS2V5cyhbXG4gICAgICAgICAga2V5XG4gICAgICAgIF0pfSA9ICR7Ly8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICAgICAgdGhpcy4jcHJpbnRBc0lubGluZVZhbHVlKHZhbHVlW2tleV0pfWA7XG4gICAgICB9KS5qb2luKFwiLFwiKTtcbiAgICAgIHJldHVybiBgeyR7c3RyfX1gO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGQgbmV2ZXIgcmVhY2hcIik7XG4gIH1cbiAgI2lzU2ltcGx5U2VyaWFsaXphYmxlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIiB8fCB2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCB8fCB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheSAmJiB0aGlzLiNnZXRUeXBlT2ZBcnJheSh2YWx1ZSkgIT09IFwiT05MWV9PQkpFQ1RfRVhDTFVESU5HX0FSUkFZXCI7XG4gIH1cbiAgI2hlYWRlcihrZXlzKSB7XG4gICAgcmV0dXJuIGBbJHtqb2luS2V5cyhrZXlzKX1dYDtcbiAgfVxuICAjaGVhZGVyR3JvdXAoa2V5cykge1xuICAgIHJldHVybiBgW1ske2pvaW5LZXlzKGtleXMpfV1dYDtcbiAgfVxuICAjZGVjbGFyYXRpb24oa2V5cykge1xuICAgIGNvbnN0IHRpdGxlID0gam9pbktleXMoa2V5cyk7XG4gICAgaWYgKHRpdGxlLmxlbmd0aCA+IHRoaXMubWF4UGFkKSB7XG4gICAgICB0aGlzLm1heFBhZCA9IHRpdGxlLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RpdGxlfSA9IGA7XG4gIH1cbiAgI2FycmF5RGVjbGFyYXRpb24oa2V5cywgdmFsdWUpIHtcbiAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9JHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YDtcbiAgfVxuICAjc3RyRGVjbGFyYXRpb24oa2V5cywgdmFsdWUpIHtcbiAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9JHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YDtcbiAgfVxuICAjbnVtYmVyRGVjbGFyYXRpb24oa2V5cywgdmFsdWUpIHtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfW5hbmA7XG4gICAgfVxuICAgIHN3aXRjaCh2YWx1ZSl7XG4gICAgICBjYXNlIEluZmluaXR5OlxuICAgICAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9aW5mYDtcbiAgICAgIGNhc2UgLUluZmluaXR5OlxuICAgICAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9LWluZmA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9JHt2YWx1ZX1gO1xuICAgIH1cbiAgfVxuICAjYm9vbERlY2xhcmF0aW9uKGtleXMsIHZhbHVlKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfSR7dmFsdWV9YDtcbiAgfVxuICAjcHJpbnREYXRlKHZhbHVlKSB7XG4gICAgZnVuY3Rpb24gZHRQYWQodiwgbFBhZCA9IDIpIHtcbiAgICAgIHJldHVybiB2LnBhZFN0YXJ0KGxQYWQsIFwiMFwiKTtcbiAgICB9XG4gICAgY29uc3QgbSA9IGR0UGFkKCh2YWx1ZS5nZXRVVENNb250aCgpICsgMSkudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgZCA9IGR0UGFkKHZhbHVlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpKTtcbiAgICBjb25zdCBoID0gZHRQYWQodmFsdWUuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpKTtcbiAgICBjb25zdCBtaW4gPSBkdFBhZCh2YWx1ZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgcyA9IGR0UGFkKHZhbHVlLmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpKTtcbiAgICBjb25zdCBtcyA9IGR0UGFkKHZhbHVlLmdldFVUQ01pbGxpc2Vjb25kcygpLnRvU3RyaW5nKCksIDMpO1xuICAgIC8vIGZvcm1hdHRlZCBkYXRlXG4gICAgY29uc3QgZkRhdGEgPSBgJHt2YWx1ZS5nZXRVVENGdWxsWWVhcigpfS0ke219LSR7ZH1UJHtofToke21pbn06JHtzfS4ke21zfWA7XG4gICAgcmV0dXJuIGZEYXRhO1xuICB9XG4gICNkYXRlRGVjbGFyYXRpb24oa2V5cywgdmFsdWUpIHtcbiAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9JHt0aGlzLiNwcmludERhdGUodmFsdWUpfWA7XG4gIH1cbiAgI2Zvcm1hdChvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7IGtleUFsaWdubWVudCA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHJEZWNsYXJhdGlvbiA9IC9eKFxcXCIuKlxcXCJ8W149XSopXFxzPS87XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMub3V0cHV0Lmxlbmd0aDsgaSsrKXtcbiAgICAgIGNvbnN0IGwgPSB0aGlzLm91dHB1dFtpXTtcbiAgICAgIC8vIHdlIGtlZXAgZW1wdHkgZW50cnkgZm9yIGFycmF5IG9mIG9iamVjdHNcbiAgICAgIGlmIChsWzBdID09PSBcIltcIiAmJiBsWzFdICE9PSBcIltcIikge1xuICAgICAgICAvLyBub24tZW1wdHkgb2JqZWN0IHdpdGggb25seSBzdWJvYmplY3RzIGFzIHByb3BlcnRpZXNcbiAgICAgICAgaWYgKHRoaXMub3V0cHV0W2kgKyAxXSA9PT0gXCJcIiAmJiB0aGlzLm91dHB1dFtpICsgMl0/LnNsaWNlKDAsIGwubGVuZ3RoKSA9PT0gbC5zbGljZSgwLCAtMSkgKyBcIi5cIikge1xuICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBvdXQucHVzaChsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChrZXlBbGlnbm1lbnQpIHtcbiAgICAgICAgICBjb25zdCBtID0gckRlY2xhcmF0aW9uLmV4ZWMobCk7XG4gICAgICAgICAgaWYgKG0gJiYgbVsxXSkge1xuICAgICAgICAgICAgb3V0LnB1c2gobC5yZXBsYWNlKG1bMV0sIG1bMV0ucGFkRW5kKHRoaXMubWF4UGFkKSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQucHVzaChsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0LnB1c2gobCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQ2xlYW5pbmcgbXVsdGlwbGUgc3BhY2VzXG4gICAgY29uc3QgY2xlYW5lZE91dHB1dCA9IFtdO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBvdXQubGVuZ3RoOyBpKyspe1xuICAgICAgY29uc3QgbCA9IG91dFtpXTtcbiAgICAgIGlmICghKGwgPT09IFwiXCIgJiYgb3V0W2kgKyAxXSA9PT0gXCJcIikpIHtcbiAgICAgICAgY2xlYW5lZE91dHB1dC5wdXNoKGwpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2xlYW5lZE91dHB1dDtcbiAgfVxufVxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3QgdG8gYSB7QGxpbmsgaHR0cHM6Ly90b21sLmlvIHwgVE9NTH0gc3RyaW5nLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgc3RyaW5naWZ5IH0gZnJvbSBcIkBzdGQvdG9tbC9zdHJpbmdpZnlcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IG9iaiA9IHtcbiAqICAgdGl0bGU6IFwiVE9NTCBFeGFtcGxlXCIsXG4gKiAgIG93bmVyOiB7XG4gKiAgICAgbmFtZTogXCJCb2JcIixcbiAqICAgICBiaW86IFwiQm9iIGlzIGEgY29vbCBndXlcIixcbiAqICB9XG4gKiB9O1xuICogY29uc3QgdG9tbFN0cmluZyA9IHN0cmluZ2lmeShvYmopO1xuICogYXNzZXJ0RXF1YWxzKHRvbWxTdHJpbmcsIGB0aXRsZSA9IFwiVE9NTCBFeGFtcGxlXCJcXG5cXG5bb3duZXJdXFxubmFtZSA9IFwiQm9iXCJcXG5iaW8gPSBcIkJvYiBpcyBhIGNvb2wgZ3V5XCJcXG5gKTtcbiAqIGBgYFxuICogQHBhcmFtIG9iaiBTb3VyY2Ugb2JqZWN0XG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBzdHJpbmdpZnlpbmcuXG4gKiBAcmV0dXJucyBUT01MIHN0cmluZ1xuICovIGV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkob2JqLCBvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgRHVtcGVyKG9iaikuZHVtcChvcHRpb25zKS5qb2luKFwiXFxuXCIpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RyaW5naWZ5LmpzLm1hcCIsIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG4vKipcbiAqIEZpbHRlcnMgdGhlIGdpdmVuIGFycmF5LCByZW1vdmluZyBhbGwgZWxlbWVudHMgdGhhdCBkbyBub3QgbWF0Y2ggdGhlIGdpdmVuIHByZWRpY2F0ZVxuICogKippbiBwbGFjZS4gVGhpcyBtZWFucyBgYXJyYXlgIHdpbGwgYmUgbW9kaWZpZWQhKiouXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckluUGxhY2UoYXJyYXksIHByZWRpY2F0ZSkge1xuICBsZXQgb3V0cHV0SW5kZXggPSAwO1xuICBmb3IgKGNvbnN0IGN1ciBvZiBhcnJheSl7XG4gICAgaWYgKCFwcmVkaWNhdGUoY3VyKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGFycmF5W291dHB1dEluZGV4XSA9IGN1cjtcbiAgICBvdXRwdXRJbmRleCArPSAxO1xuICB9XG4gIGFycmF5LnNwbGljZShvdXRwdXRJbmRleCk7XG4gIHJldHVybiBhcnJheTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPV91dGlscy5qcy5tYXAiLCIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuaW1wb3J0IHsgZmlsdGVySW5QbGFjZSB9IGZyb20gXCIuL191dGlscy5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBNZXJnZShyZWNvcmQsIG90aGVyLCBvcHRpb25zKSB7XG4gIHJldHVybiBkZWVwTWVyZ2VJbnRlcm5hbChyZWNvcmQsIG90aGVyLCBuZXcgU2V0KCksIG9wdGlvbnMpO1xufVxuZnVuY3Rpb24gZGVlcE1lcmdlSW50ZXJuYWwocmVjb3JkLCBvdGhlciwgc2Vlbiwgb3B0aW9ucykge1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgY29uc3Qga2V5cyA9IG5ldyBTZXQoW1xuICAgIC4uLmdldEtleXMocmVjb3JkKSxcbiAgICAuLi5nZXRLZXlzKG90aGVyKVxuICBdKTtcbiAgLy8gSXRlcmF0ZSB0aHJvdWdoIGVhY2gga2V5IG9mIG90aGVyIG9iamVjdCBhbmQgdXNlIGNvcnJlY3QgbWVyZ2luZyBzdHJhdGVneVxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKXtcbiAgICAvLyBTa2lwIHRvIHByZXZlbnQgT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gYWNjZXNzb3IgcHJvcGVydHkgY2FsbHMgb24gbm9uLURlbm8gcGxhdGZvcm1zXG4gICAgaWYgKGtleSA9PT0gXCJfX3Byb3RvX19cIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGEgPSByZWNvcmRba2V5XTtcbiAgICBpZiAoIU9iamVjdC5oYXNPd24ob3RoZXIsIGtleSkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gYTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBiID0gb3RoZXJba2V5XTtcbiAgICBpZiAoaXNOb25OdWxsT2JqZWN0KGEpICYmIGlzTm9uTnVsbE9iamVjdChiKSAmJiAhc2Vlbi5oYXMoYSkgJiYgIXNlZW4uaGFzKGIpKSB7XG4gICAgICBzZWVuLmFkZChhKTtcbiAgICAgIHNlZW4uYWRkKGIpO1xuICAgICAgcmVzdWx0W2tleV0gPSBtZXJnZU9iamVjdHMoYSwgYiwgc2Vlbiwgb3B0aW9ucyk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgLy8gT3ZlcnJpZGUgdmFsdWVcbiAgICByZXN1bHRba2V5XSA9IGI7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1lcmdlT2JqZWN0cyhsZWZ0LCByaWdodCwgc2Vlbiwgb3B0aW9ucyA9IHtcbiAgYXJyYXlzOiBcIm1lcmdlXCIsXG4gIHNldHM6IFwibWVyZ2VcIixcbiAgbWFwczogXCJtZXJnZVwiXG59KSB7XG4gIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG1lcmdlYWJsZSBvYmplY3RzXG4gIGlmIChpc01lcmdlYWJsZShsZWZ0KSAmJiBpc01lcmdlYWJsZShyaWdodCkpIHtcbiAgICByZXR1cm4gZGVlcE1lcmdlSW50ZXJuYWwobGVmdCwgcmlnaHQsIHNlZW4sIG9wdGlvbnMpO1xuICB9XG4gIGlmIChpc0l0ZXJhYmxlKGxlZnQpICYmIGlzSXRlcmFibGUocmlnaHQpKSB7XG4gICAgLy8gSGFuZGxlIGFycmF5c1xuICAgIGlmIChBcnJheS5pc0FycmF5KGxlZnQpICYmIEFycmF5LmlzQXJyYXkocmlnaHQpKSB7XG4gICAgICBpZiAob3B0aW9ucy5hcnJheXMgPT09IFwibWVyZ2VcIikge1xuICAgICAgICByZXR1cm4gbGVmdC5jb25jYXQocmlnaHQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJpZ2h0O1xuICAgIH1cbiAgICAvLyBIYW5kbGUgbWFwc1xuICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgTWFwICYmIHJpZ2h0IGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICBpZiAob3B0aW9ucy5tYXBzID09PSBcIm1lcmdlXCIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXAoW1xuICAgICAgICAgIC4uLmxlZnQsXG4gICAgICAgICAgLi4ucmlnaHRcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmlnaHQ7XG4gICAgfVxuICAgIC8vIEhhbmRsZSBzZXRzXG4gICAgaWYgKGxlZnQgaW5zdGFuY2VvZiBTZXQgJiYgcmlnaHQgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgIGlmIChvcHRpb25zLnNldHMgPT09IFwibWVyZ2VcIikge1xuICAgICAgICByZXR1cm4gbmV3IFNldChbXG4gICAgICAgICAgLi4ubGVmdCxcbiAgICAgICAgICAuLi5yaWdodFxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByaWdodDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJpZ2h0O1xufVxuLyoqXG4gKiBUZXN0IHdoZXRoZXIgYSB2YWx1ZSBpcyBtZXJnZWFibGUgb3Igbm90XG4gKiBCdWlsdGlucyB0aGF0IGxvb2sgbGlrZSBvYmplY3RzLCBudWxsIGFuZCB1c2VyIGRlZmluZWQgY2xhc3Nlc1xuICogYXJlIG5vdCBjb25zaWRlcmVkIG1lcmdlYWJsZSAoaXQgbWVhbnMgdGhhdCByZWZlcmVuY2Ugd2lsbCBiZSBjb3BpZWQpXG4gKi8gZnVuY3Rpb24gaXNNZXJnZWFibGUodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgPT09IE9iamVjdC5wcm90b3R5cGU7XG59XG5mdW5jdGlvbiBpc0l0ZXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWVbU3ltYm9sLml0ZXJhdG9yXSA9PT0gXCJmdW5jdGlvblwiO1xufVxuZnVuY3Rpb24gaXNOb25OdWxsT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBnZXRLZXlzKHJlY29yZCkge1xuICBjb25zdCByZXN1bHQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHJlY29yZCk7XG4gIGZpbHRlckluUGxhY2UocmVzdWx0LCAoa2V5KT0+T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHJlY29yZCwga2V5KSk7XG4gIHJlc3VsdC5wdXNoKC4uLk9iamVjdC5rZXlzKHJlY29yZCkpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVlcF9tZXJnZS5qcy5tYXAiLCIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIkBqc3Ivc3RkX19jb2xsZWN0aW9ucy9kZWVwLW1lcmdlXCI7XG4vKipcbiAqIENvcHkgb2YgYGltcG9ydCB7IGlzTGVhcCB9IGZyb20gXCJAc3RkL2RhdGV0aW1lXCI7YCBiZWNhdXNlIGl0IGNhbm5vdCBiZSBpbXBvdGVkIGFzIGxvbmcgYXMgaXQgaXMgdW5zdGFibGUuXG4gKi8gZnVuY3Rpb24gaXNMZWFwKHllYXJOdW1iZXIpIHtcbiAgcmV0dXJuIHllYXJOdW1iZXIgJSA0ID09PSAwICYmIHllYXJOdW1iZXIgJSAxMDAgIT09IDAgfHwgeWVhck51bWJlciAlIDQwMCA9PT0gMDtcbn1cbmV4cG9ydCBjbGFzcyBTY2FubmVyIHtcbiAgI3doaXRlc3BhY2UgPSAvWyBcXHRdLztcbiAgI3Bvc2l0aW9uID0gMDtcbiAgI3NvdXJjZTtcbiAgY29uc3RydWN0b3Ioc291cmNlKXtcbiAgICB0aGlzLiNzb3VyY2UgPSBzb3VyY2U7XG4gIH1cbiAgZ2V0IHBvc2l0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLiNwb3NpdGlvbjtcbiAgfVxuICBnZXQgc291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLiNzb3VyY2U7XG4gIH1cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IGNoYXJhY3RlclxuICAgKiBAcGFyYW0gaW5kZXggLSByZWxhdGl2ZSBpbmRleCBmcm9tIGN1cnJlbnQgcG9zaXRpb25cbiAgICovIGNoYXIoaW5kZXggPSAwKSB7XG4gICAgcmV0dXJuIHRoaXMuI3NvdXJjZVt0aGlzLiNwb3NpdGlvbiArIGluZGV4XSA/PyBcIlwiO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgc2xpY2VkIHN0cmluZ1xuICAgKiBAcGFyYW0gc3RhcnQgLSBzdGFydCBwb3NpdGlvbiByZWxhdGl2ZSBmcm9tIGN1cnJlbnQgcG9zaXRpb25cbiAgICogQHBhcmFtIGVuZCAtIGVuZCBwb3NpdGlvbiByZWxhdGl2ZSBmcm9tIGN1cnJlbnQgcG9zaXRpb25cbiAgICovIHNsaWNlKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gdGhpcy4jc291cmNlLnNsaWNlKHRoaXMuI3Bvc2l0aW9uICsgc3RhcnQsIHRoaXMuI3Bvc2l0aW9uICsgZW5kKTtcbiAgfVxuICAvKipcbiAgICogTW92ZSBwb3NpdGlvbiB0byBuZXh0XG4gICAqLyBuZXh0KGNvdW50ID0gMSkge1xuICAgIHRoaXMuI3Bvc2l0aW9uICs9IGNvdW50O1xuICB9XG4gIHNraXBXaGl0ZXNwYWNlcygpIHtcbiAgICB3aGlsZSh0aGlzLiN3aGl0ZXNwYWNlLnRlc3QodGhpcy5jaGFyKCkpICYmICF0aGlzLmVvZigpKXtcbiAgICAgIHRoaXMubmV4dCgpO1xuICAgIH1cbiAgICAvLyBJbnZhbGlkIGlmIGN1cnJlbnQgY2hhciBpcyBvdGhlciBraW5kcyBvZiB3aGl0ZXNwYWNlXG4gICAgaWYgKCF0aGlzLmlzQ3VycmVudENoYXJFT0woKSAmJiAvXFxzLy50ZXN0KHRoaXMuY2hhcigpKSkge1xuICAgICAgY29uc3QgZXNjYXBlZCA9IFwiXFxcXHVcIiArIHRoaXMuY2hhcigpLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpO1xuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLiNwb3NpdGlvbjtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgQ2Fubm90IHBhcnNlIHRoZSBUT01MOiBJdCBjb250YWlucyBpbnZhbGlkIHdoaXRlc3BhY2UgYXQgcG9zaXRpb24gJyR7cG9zaXRpb259JzogXFxgJHtlc2NhcGVkfVxcYGApO1xuICAgIH1cbiAgfVxuICBuZXh0VW50aWxDaGFyKG9wdGlvbnMgPSB7XG4gICAgc2tpcENvbW1lbnRzOiB0cnVlXG4gIH0pIHtcbiAgICB3aGlsZSghdGhpcy5lb2YoKSl7XG4gICAgICBjb25zdCBjaGFyID0gdGhpcy5jaGFyKCk7XG4gICAgICBpZiAodGhpcy4jd2hpdGVzcGFjZS50ZXN0KGNoYXIpIHx8IHRoaXMuaXNDdXJyZW50Q2hhckVPTCgpKSB7XG4gICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnNraXBDb21tZW50cyAmJiB0aGlzLmNoYXIoKSA9PT0gXCIjXCIpIHtcbiAgICAgICAgLy8gZW50ZXJpbmcgY29tbWVudFxuICAgICAgICB3aGlsZSghdGhpcy5pc0N1cnJlbnRDaGFyRU9MKCkgJiYgIXRoaXMuZW9mKCkpe1xuICAgICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFBvc2l0aW9uIHJlYWNoZWQgRU9GIG9yIG5vdFxuICAgKi8gZW9mKCkge1xuICAgIHJldHVybiB0aGlzLiNwb3NpdGlvbiA+PSB0aGlzLiNzb3VyY2UubGVuZ3RoO1xuICB9XG4gIGlzQ3VycmVudENoYXJFT0woKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hhcigpID09PSBcIlxcblwiIHx8IHRoaXMuc3RhcnRzV2l0aChcIlxcclxcblwiKTtcbiAgfVxuICBzdGFydHNXaXRoKHNlYXJjaFN0cmluZykge1xuICAgIHJldHVybiB0aGlzLiNzb3VyY2Uuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcsIHRoaXMuI3Bvc2l0aW9uKTtcbiAgfVxuICBtYXRjaChyZWdFeHApIHtcbiAgICBpZiAoIXJlZ0V4cC5zdGlja3kpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUmVnRXhwICR7cmVnRXhwfSBkb2VzIG5vdCBoYXZlIGEgc3RpY2t5ICd5JyBmbGFnYCk7XG4gICAgfVxuICAgIHJlZ0V4cC5sYXN0SW5kZXggPSB0aGlzLiNwb3NpdGlvbjtcbiAgICByZXR1cm4gdGhpcy4jc291cmNlLm1hdGNoKHJlZ0V4cCk7XG4gIH1cbn1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVdGlsaXRpZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdWNjZXNzKGJvZHkpIHtcbiAgcmV0dXJuIHtcbiAgICBvazogdHJ1ZSxcbiAgICBib2R5XG4gIH07XG59XG5mdW5jdGlvbiBmYWlsdXJlKCkge1xuICByZXR1cm4ge1xuICAgIG9rOiBmYWxzZVxuICB9O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmVzdGVkIG9iamVjdCBmcm9tIHRoZSBrZXlzIGFuZCB2YWx1ZXMuXG4gKlxuICogZS5nLiBgdW5mbGF0KFtcImFcIiwgXCJiXCIsIFwiY1wiXSwgMSlgIHJldHVybnMgYHsgYTogeyBiOiB7IGM6IDEgfSB9IH1gXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHVuZmxhdChrZXlzLCB2YWx1ZXMgPSB7XG4gIF9fcHJvdG9fXzogbnVsbFxufSkge1xuICByZXR1cm4ga2V5cy5yZWR1Y2VSaWdodCgoYWNjLCBrZXkpPT4oe1xuICAgICAgW2tleV06IGFjY1xuICAgIH0pLCB2YWx1ZXMpO1xufVxuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbDtcbn1cbmZ1bmN0aW9uIGdldFRhcmdldFZhbHVlKHRhcmdldCwga2V5cykge1xuICBjb25zdCBrZXkgPSBrZXlzWzBdO1xuICBpZiAoIWtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBwYXJzZSB0aGUgVE9NTDoga2V5IGxlbmd0aCBpcyBub3QgYSBwb3NpdGl2ZSBudW1iZXJcIik7XG4gIH1cbiAgcmV0dXJuIHRhcmdldFtrZXldO1xufVxuZnVuY3Rpb24gZGVlcEFzc2lnblRhYmxlKHRhcmdldCwgdGFibGUpIHtcbiAgY29uc3QgeyBrZXlzLCB0eXBlLCB2YWx1ZSB9ID0gdGFibGU7XG4gIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGdldFRhcmdldFZhbHVlKHRhcmdldCwga2V5cyk7XG4gIGlmIChjdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHRhcmdldCwgdW5mbGF0KGtleXMsIHZhbHVlKSk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFZhbHVlKSkge1xuICAgIGNvbnN0IGxhc3QgPSBjdXJyZW50VmFsdWUuYXQoLTEpO1xuICAgIGRlZXBBc3NpZ24obGFzdCwge1xuICAgICAgdHlwZSxcbiAgICAgIGtleXM6IGtleXMuc2xpY2UoMSksXG4gICAgICB2YWx1ZVxuICAgIH0pO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbiAgaWYgKGlzT2JqZWN0KGN1cnJlbnRWYWx1ZSkpIHtcbiAgICBkZWVwQXNzaWduKGN1cnJlbnRWYWx1ZSwge1xuICAgICAgdHlwZSxcbiAgICAgIGtleXM6IGtleXMuc2xpY2UoMSksXG4gICAgICB2YWx1ZVxuICAgIH0pO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBhc3NpZ25cIik7XG59XG5mdW5jdGlvbiBkZWVwQXNzaWduVGFibGVBcnJheSh0YXJnZXQsIHRhYmxlKSB7XG4gIGNvbnN0IHsgdHlwZSwga2V5cywgdmFsdWUgfSA9IHRhYmxlO1xuICBjb25zdCBjdXJyZW50VmFsdWUgPSBnZXRUYXJnZXRWYWx1ZSh0YXJnZXQsIGtleXMpO1xuICBpZiAoY3VycmVudFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0YXJnZXQsIHVuZmxhdChrZXlzLCBbXG4gICAgICB2YWx1ZVxuICAgIF0pKTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpKSB7XG4gICAgaWYgKHRhYmxlLmtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjdXJyZW50VmFsdWUucHVzaCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxhc3QgPSBjdXJyZW50VmFsdWUuYXQoLTEpO1xuICAgICAgZGVlcEFzc2lnbihsYXN0LCB7XG4gICAgICAgIHR5cGU6IHRhYmxlLnR5cGUsXG4gICAgICAgIGtleXM6IHRhYmxlLmtleXMuc2xpY2UoMSksXG4gICAgICAgIHZhbHVlOiB0YWJsZS52YWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbiAgaWYgKGlzT2JqZWN0KGN1cnJlbnRWYWx1ZSkpIHtcbiAgICBkZWVwQXNzaWduKGN1cnJlbnRWYWx1ZSwge1xuICAgICAgdHlwZSxcbiAgICAgIGtleXM6IGtleXMuc2xpY2UoMSksXG4gICAgICB2YWx1ZVxuICAgIH0pO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBhc3NpZ25cIik7XG59XG5leHBvcnQgZnVuY3Rpb24gZGVlcEFzc2lnbih0YXJnZXQsIGJvZHkpIHtcbiAgc3dpdGNoKGJvZHkudHlwZSl7XG4gICAgY2FzZSBcIkJsb2NrXCI6XG4gICAgICByZXR1cm4gZGVlcE1lcmdlKHRhcmdldCwgYm9keS52YWx1ZSk7XG4gICAgY2FzZSBcIlRhYmxlXCI6XG4gICAgICByZXR1cm4gZGVlcEFzc2lnblRhYmxlKHRhcmdldCwgYm9keSk7XG4gICAgY2FzZSBcIlRhYmxlQXJyYXlcIjpcbiAgICAgIHJldHVybiBkZWVwQXNzaWduVGFibGVBcnJheSh0YXJnZXQsIGJvZHkpO1xuICB9XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlciBjb21iaW5hdG9ycyBhbmQgZ2VuZXJhdG9yc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gb3IocGFyc2Vycykge1xuICByZXR1cm4gKHNjYW5uZXIpPT57XG4gICAgZm9yIChjb25zdCBwYXJzZSBvZiBwYXJzZXJzKXtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlKHNjYW5uZXIpO1xuICAgICAgaWYgKHJlc3VsdC5vaykgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIGZhaWx1cmUoKTtcbiAgfTtcbn1cbi8qKiBKb2luIHRoZSBwYXJzZSByZXN1bHRzIG9mIHRoZSBnaXZlbiBwYXJzZXIgaW50byBhbiBhcnJheS5cbiAqXG4gKiBJZiB0aGUgcGFyc2VyIGZhaWxzIGF0IHRoZSBmaXJzdCBhdHRlbXB0LCBpdCB3aWxsIHJldHVybiBhbiBlbXB0eSBhcnJheS5cbiAqLyBmdW5jdGlvbiBqb2luKHBhcnNlciwgc2VwYXJhdG9yKSB7XG4gIGNvbnN0IFNlcGFyYXRvciA9IGNoYXJhY3RlcihzZXBhcmF0b3IpO1xuICByZXR1cm4gKHNjYW5uZXIpPT57XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgY29uc3QgZmlyc3QgPSBwYXJzZXIoc2Nhbm5lcik7XG4gICAgaWYgKCFmaXJzdC5vaykgcmV0dXJuIHN1Y2Nlc3Mob3V0KTtcbiAgICBvdXQucHVzaChmaXJzdC5ib2R5KTtcbiAgICB3aGlsZSghc2Nhbm5lci5lb2YoKSl7XG4gICAgICBpZiAoIVNlcGFyYXRvcihzY2FubmVyKS5vaykgYnJlYWs7XG4gICAgICBjb25zdCByZXN1bHQgPSBwYXJzZXIoc2Nhbm5lcik7XG4gICAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYEludmFsaWQgdG9rZW4gYWZ0ZXIgXCIke3NlcGFyYXRvcn1cImApO1xuICAgICAgfVxuICAgICAgb3V0LnB1c2gocmVzdWx0LmJvZHkpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VzcyhvdXQpO1xuICB9O1xufVxuLyoqIEpvaW4gdGhlIHBhcnNlIHJlc3VsdHMgb2YgdGhlIGdpdmVuIHBhcnNlciBpbnRvIGFuIGFycmF5LlxuICpcbiAqIFRoaXMgcmVxdWlyZXMgdGhlIHBhcnNlciB0byBzdWNjZWVkIGF0IGxlYXN0IG9uY2UuXG4gKi8gZnVuY3Rpb24gam9pbjEocGFyc2VyLCBzZXBhcmF0b3IpIHtcbiAgY29uc3QgU2VwYXJhdG9yID0gY2hhcmFjdGVyKHNlcGFyYXRvcik7XG4gIHJldHVybiAoc2Nhbm5lcik9PntcbiAgICBjb25zdCBmaXJzdCA9IHBhcnNlcihzY2FubmVyKTtcbiAgICBpZiAoIWZpcnN0Lm9rKSByZXR1cm4gZmFpbHVyZSgpO1xuICAgIGNvbnN0IG91dCA9IFtcbiAgICAgIGZpcnN0LmJvZHlcbiAgICBdO1xuICAgIHdoaWxlKCFzY2FubmVyLmVvZigpKXtcbiAgICAgIGlmICghU2VwYXJhdG9yKHNjYW5uZXIpLm9rKSBicmVhaztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlcihzY2FubmVyKTtcbiAgICAgIGlmICghcmVzdWx0Lm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgSW52YWxpZCB0b2tlbiBhZnRlciBcIiR7c2VwYXJhdG9yfVwiYCk7XG4gICAgICB9XG4gICAgICBvdXQucHVzaChyZXN1bHQuYm9keSk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzKG91dCk7XG4gIH07XG59XG5mdW5jdGlvbiBrdihrZXlQYXJzZXIsIHNlcGFyYXRvciwgdmFsdWVQYXJzZXIpIHtcbiAgY29uc3QgU2VwYXJhdG9yID0gY2hhcmFjdGVyKHNlcGFyYXRvcik7XG4gIHJldHVybiAoc2Nhbm5lcik9PntcbiAgICBjb25zdCBwb3NpdGlvbiA9IHNjYW5uZXIucG9zaXRpb247XG4gICAgY29uc3Qga2V5ID0ga2V5UGFyc2VyKHNjYW5uZXIpO1xuICAgIGlmICgha2V5Lm9rKSByZXR1cm4gZmFpbHVyZSgpO1xuICAgIGNvbnN0IHNlcCA9IFNlcGFyYXRvcihzY2FubmVyKTtcbiAgICBpZiAoIXNlcC5vaykge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBrZXkvdmFsdWUgcGFpciBkb2Vzbid0IGhhdmUgXCIke3NlcGFyYXRvcn1cImApO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IHZhbHVlUGFyc2VyKHNjYW5uZXIpO1xuICAgIGlmICghdmFsdWUub2spIHtcbiAgICAgIGNvbnN0IGxpbmVFbmRJbmRleCA9IHNjYW5uZXIuc291cmNlLmluZGV4T2YoXCJcXG5cIiwgc2Nhbm5lci5wb3NpdGlvbik7XG4gICAgICBjb25zdCBlbmRQb3NpdGlvbiA9IGxpbmVFbmRJbmRleCA+IDAgPyBsaW5lRW5kSW5kZXggOiBzY2FubmVyLnNvdXJjZS5sZW5ndGg7XG4gICAgICBjb25zdCBsaW5lID0gc2Nhbm5lci5zb3VyY2Uuc2xpY2UocG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgQ2Fubm90IHBhcnNlIHZhbHVlIG9uIGxpbmUgJyR7bGluZX0nYCk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzKHVuZmxhdChrZXkuYm9keSwgdmFsdWUuYm9keSkpO1xuICB9O1xufVxuZnVuY3Rpb24gbWVyZ2UocGFyc2VyKSB7XG4gIHJldHVybiAoc2Nhbm5lcik9PntcbiAgICBjb25zdCByZXN1bHQgPSBwYXJzZXIoc2Nhbm5lcik7XG4gICAgaWYgKCFyZXN1bHQub2spIHJldHVybiBmYWlsdXJlKCk7XG4gICAgbGV0IGJvZHkgPSB7XG4gICAgICBfX3Byb3RvX186IG51bGxcbiAgICB9O1xuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlc3VsdC5ib2R5KXtcbiAgICAgIGlmICh0eXBlb2YgcmVjb3JkID09PSBcIm9iamVjdFwiICYmIHJlY29yZCAhPT0gbnVsbCkge1xuICAgICAgICBib2R5ID0gZGVlcE1lcmdlKGJvZHksIHJlY29yZCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzKGJvZHkpO1xuICB9O1xufVxuZnVuY3Rpb24gcmVwZWF0KHBhcnNlcikge1xuICByZXR1cm4gKHNjYW5uZXIpPT57XG4gICAgY29uc3QgYm9keSA9IFtdO1xuICAgIHdoaWxlKCFzY2FubmVyLmVvZigpKXtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlcihzY2FubmVyKTtcbiAgICAgIGlmICghcmVzdWx0Lm9rKSBicmVhaztcbiAgICAgIGJvZHkucHVzaChyZXN1bHQuYm9keSk7XG4gICAgICBzY2FubmVyLm5leHRVbnRpbENoYXIoKTtcbiAgICB9XG4gICAgaWYgKGJvZHkubGVuZ3RoID09PSAwKSByZXR1cm4gZmFpbHVyZSgpO1xuICAgIHJldHVybiBzdWNjZXNzKGJvZHkpO1xuICB9O1xufVxuZnVuY3Rpb24gc3Vycm91bmQobGVmdCwgcGFyc2VyLCByaWdodCkge1xuICBjb25zdCBMZWZ0ID0gY2hhcmFjdGVyKGxlZnQpO1xuICBjb25zdCBSaWdodCA9IGNoYXJhY3RlcihyaWdodCk7XG4gIHJldHVybiAoc2Nhbm5lcik9PntcbiAgICBpZiAoIUxlZnQoc2Nhbm5lcikub2spIHtcbiAgICAgIHJldHVybiBmYWlsdXJlKCk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlcihzY2FubmVyKTtcbiAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnZhbGlkIHRva2VuIGFmdGVyIFwiJHtsZWZ0fVwiYCk7XG4gICAgfVxuICAgIGlmICghUmlnaHQoc2Nhbm5lcikub2spIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgTm90IGNsb3NlZCBieSBcIiR7cmlnaHR9XCIgYWZ0ZXIgc3RhcnRlZCB3aXRoIFwiJHtsZWZ0fVwiYCk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzKHJlc3VsdC5ib2R5KTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGNoYXJhY3RlcihzdHIpIHtcbiAgcmV0dXJuIChzY2FubmVyKT0+e1xuICAgIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gICAgaWYgKCFzY2FubmVyLnN0YXJ0c1dpdGgoc3RyKSkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgICBzY2FubmVyLm5leHQoc3RyLmxlbmd0aCk7XG4gICAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgICByZXR1cm4gc3VjY2Vzcyh1bmRlZmluZWQpO1xuICB9O1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlciBjb21wb25lbnRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuY29uc3QgQkFSRV9LRVlfUkVHRVhQID0gL1tBLVphLXowLTlfLV0rL3k7XG5leHBvcnQgZnVuY3Rpb24gYmFyZUtleShzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IGtleSA9IHNjYW5uZXIubWF0Y2goQkFSRV9LRVlfUkVHRVhQKT8uWzBdO1xuICBpZiAoIWtleSkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KGtleS5sZW5ndGgpO1xuICByZXR1cm4gc3VjY2VzcyhrZXkpO1xufVxuZnVuY3Rpb24gZXNjYXBlU2VxdWVuY2Uoc2Nhbm5lcikge1xuICBpZiAoc2Nhbm5lci5jaGFyKCkgIT09IFwiXFxcXFwiKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQoKTtcbiAgLy8gU2VlIGh0dHBzOi8vdG9tbC5pby9lbi92MS4wLjAtcmMuMyNzdHJpbmdcbiAgc3dpdGNoKHNjYW5uZXIuY2hhcigpKXtcbiAgICBjYXNlIFwiYlwiOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcyhcIlxcYlwiKTtcbiAgICBjYXNlIFwidFwiOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcyhcIlxcdFwiKTtcbiAgICBjYXNlIFwiblwiOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcyhcIlxcblwiKTtcbiAgICBjYXNlIFwiZlwiOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcyhcIlxcZlwiKTtcbiAgICBjYXNlIFwiclwiOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcyhcIlxcclwiKTtcbiAgICBjYXNlIFwidVwiOlxuICAgIGNhc2UgXCJVXCI6XG4gICAgICB7XG4gICAgICAgIC8vIFVuaWNvZGUgY2hhcmFjdGVyXG4gICAgICAgIGNvbnN0IGNvZGVQb2ludExlbiA9IHNjYW5uZXIuY2hhcigpID09PSBcInVcIiA/IDQgOiA2O1xuICAgICAgICBjb25zdCBjb2RlUG9pbnQgPSBwYXJzZUludChcIjB4XCIgKyBzY2FubmVyLnNsaWNlKDEsIDEgKyBjb2RlUG9pbnRMZW4pLCAxNik7XG4gICAgICAgIGNvbnN0IHN0ciA9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNvZGVQb2ludCk7XG4gICAgICAgIHNjYW5uZXIubmV4dChjb2RlUG9pbnRMZW4gKyAxKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3Moc3RyKTtcbiAgICAgIH1cbiAgICBjYXNlICdcIic6XG4gICAgICBzY2FubmVyLm5leHQoKTtcbiAgICAgIHJldHVybiBzdWNjZXNzKCdcIicpO1xuICAgIGNhc2UgXCJcXFxcXCI6XG4gICAgICBzY2FubmVyLm5leHQoKTtcbiAgICAgIHJldHVybiBzdWNjZXNzKFwiXFxcXFwiKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZTogXFxcXCR7c2Nhbm5lci5jaGFyKCl9YCk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBiYXNpY1N0cmluZyhzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGlmIChzY2FubmVyLmNoYXIoKSAhPT0gJ1wiJykgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KCk7XG4gIGNvbnN0IGFjYyA9IFtdO1xuICB3aGlsZShzY2FubmVyLmNoYXIoKSAhPT0gJ1wiJyAmJiAhc2Nhbm5lci5lb2YoKSl7XG4gICAgaWYgKHNjYW5uZXIuY2hhcigpID09PSBcIlxcblwiKSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXCJTaW5nbGUtbGluZSBzdHJpbmcgY2Fubm90IGNvbnRhaW4gRU9MXCIpO1xuICAgIH1cbiAgICBjb25zdCBlc2NhcGVkQ2hhciA9IGVzY2FwZVNlcXVlbmNlKHNjYW5uZXIpO1xuICAgIGlmIChlc2NhcGVkQ2hhci5vaykge1xuICAgICAgYWNjLnB1c2goZXNjYXBlZENoYXIuYm9keSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjYy5wdXNoKHNjYW5uZXIuY2hhcigpKTtcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgIH1cbiAgfVxuICBpZiAoc2Nhbm5lci5lb2YoKSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgU2luZ2xlLWxpbmUgc3RyaW5nIGlzIG5vdCBjbG9zZWQ6XFxuJHthY2Muam9pbihcIlwiKX1gKTtcbiAgfVxuICBzY2FubmVyLm5leHQoKTsgLy8gc2tpcCBsYXN0ICdcIlwiXG4gIHJldHVybiBzdWNjZXNzKGFjYy5qb2luKFwiXCIpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsaXRlcmFsU3RyaW5nKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgaWYgKHNjYW5uZXIuY2hhcigpICE9PSBcIidcIikgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KCk7XG4gIGNvbnN0IGFjYyA9IFtdO1xuICB3aGlsZShzY2FubmVyLmNoYXIoKSAhPT0gXCInXCIgJiYgIXNjYW5uZXIuZW9mKCkpe1xuICAgIGlmIChzY2FubmVyLmNoYXIoKSA9PT0gXCJcXG5cIikge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFwiU2luZ2xlLWxpbmUgc3RyaW5nIGNhbm5vdCBjb250YWluIEVPTFwiKTtcbiAgICB9XG4gICAgYWNjLnB1c2goc2Nhbm5lci5jaGFyKCkpO1xuICAgIHNjYW5uZXIubmV4dCgpO1xuICB9XG4gIGlmIChzY2FubmVyLmVvZigpKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBTaW5nbGUtbGluZSBzdHJpbmcgaXMgbm90IGNsb3NlZDpcXG4ke2FjYy5qb2luKFwiXCIpfWApO1xuICB9XG4gIHNjYW5uZXIubmV4dCgpOyAvLyBza2lwIGxhc3QgXCInXCJcbiAgcmV0dXJuIHN1Y2Nlc3MoYWNjLmpvaW4oXCJcIikpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpbGluZUJhc2ljU3RyaW5nKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgaWYgKCFzY2FubmVyLnN0YXJ0c1dpdGgoJ1wiXCJcIicpKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQoMyk7XG4gIGlmIChzY2FubmVyLmNoYXIoKSA9PT0gXCJcXG5cIikge1xuICAgIC8vIFRoZSBmaXJzdCBuZXdsaW5lIChMRikgaXMgdHJpbW1lZFxuICAgIHNjYW5uZXIubmV4dCgpO1xuICB9IGVsc2UgaWYgKHNjYW5uZXIuc3RhcnRzV2l0aChcIlxcclxcblwiKSkge1xuICAgIC8vIFRoZSBmaXJzdCBuZXdsaW5lIChDUkxGKSBpcyB0cmltbWVkXG4gICAgc2Nhbm5lci5uZXh0KDIpO1xuICB9XG4gIGNvbnN0IGFjYyA9IFtdO1xuICB3aGlsZSghc2Nhbm5lci5zdGFydHNXaXRoKCdcIlwiXCInKSAmJiAhc2Nhbm5lci5lb2YoKSl7XG4gICAgLy8gbGluZSBlbmRpbmcgYmFja3NsYXNoXG4gICAgaWYgKHNjYW5uZXIuc3RhcnRzV2l0aChcIlxcXFxcXG5cIikpIHtcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKHtcbiAgICAgICAgc2tpcENvbW1lbnRzOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9IGVsc2UgaWYgKHNjYW5uZXIuc3RhcnRzV2l0aChcIlxcXFxcXHJcXG5cIikpIHtcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKHtcbiAgICAgICAgc2tpcENvbW1lbnRzOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgZXNjYXBlZENoYXIgPSBlc2NhcGVTZXF1ZW5jZShzY2FubmVyKTtcbiAgICBpZiAoZXNjYXBlZENoYXIub2spIHtcbiAgICAgIGFjYy5wdXNoKGVzY2FwZWRDaGFyLmJvZHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY2MucHVzaChzY2FubmVyLmNoYXIoKSk7XG4gICAgICBzY2FubmVyLm5leHQoKTtcbiAgICB9XG4gIH1cbiAgaWYgKHNjYW5uZXIuZW9mKCkpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYE11bHRpLWxpbmUgc3RyaW5nIGlzIG5vdCBjbG9zZWQ6XFxuJHthY2Muam9pbihcIlwiKX1gKTtcbiAgfVxuICAvLyBpZiBlbmRzIHdpdGggNCBgXCJgLCBwdXNoIHRoZSBmaXN0IGBcImAgdG8gc3RyaW5nXG4gIGlmIChzY2FubmVyLmNoYXIoMykgPT09ICdcIicpIHtcbiAgICBhY2MucHVzaCgnXCInKTtcbiAgICBzY2FubmVyLm5leHQoKTtcbiAgfVxuICBzY2FubmVyLm5leHQoMyk7IC8vIHNraXAgbGFzdCAnXCJcIlwiXCJcbiAgcmV0dXJuIHN1Y2Nlc3MoYWNjLmpvaW4oXCJcIikpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpbGluZUxpdGVyYWxTdHJpbmcoc2Nhbm5lcikge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBpZiAoIXNjYW5uZXIuc3RhcnRzV2l0aChcIicnJ1wiKSkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KDMpO1xuICBpZiAoc2Nhbm5lci5jaGFyKCkgPT09IFwiXFxuXCIpIHtcbiAgICAvLyBUaGUgZmlyc3QgbmV3bGluZSAoTEYpIGlzIHRyaW1tZWRcbiAgICBzY2FubmVyLm5leHQoKTtcbiAgfSBlbHNlIGlmIChzY2FubmVyLnN0YXJ0c1dpdGgoXCJcXHJcXG5cIikpIHtcbiAgICAvLyBUaGUgZmlyc3QgbmV3bGluZSAoQ1JMRikgaXMgdHJpbW1lZFxuICAgIHNjYW5uZXIubmV4dCgyKTtcbiAgfVxuICBjb25zdCBhY2MgPSBbXTtcbiAgd2hpbGUoIXNjYW5uZXIuc3RhcnRzV2l0aChcIicnJ1wiKSAmJiAhc2Nhbm5lci5lb2YoKSl7XG4gICAgYWNjLnB1c2goc2Nhbm5lci5jaGFyKCkpO1xuICAgIHNjYW5uZXIubmV4dCgpO1xuICB9XG4gIGlmIChzY2FubmVyLmVvZigpKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBNdWx0aS1saW5lIHN0cmluZyBpcyBub3QgY2xvc2VkOlxcbiR7YWNjLmpvaW4oXCJcIil9YCk7XG4gIH1cbiAgLy8gaWYgZW5kcyB3aXRoIDQgYCdgLCBwdXNoIHRoZSBmaXN0IGAnYCB0byBzdHJpbmdcbiAgaWYgKHNjYW5uZXIuY2hhcigzKSA9PT0gXCInXCIpIHtcbiAgICBhY2MucHVzaChcIidcIik7XG4gICAgc2Nhbm5lci5uZXh0KCk7XG4gIH1cbiAgc2Nhbm5lci5uZXh0KDMpOyAvLyBza2lwIGxhc3QgXCInJydcIlxuICByZXR1cm4gc3VjY2VzcyhhY2Muam9pbihcIlwiKSk7XG59XG5jb25zdCBCT09MRUFOX1JFR0VYUCA9IC8oPzp0cnVlfGZhbHNlKVxcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIGJvb2xlYW4oc2Nhbm5lcikge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBjb25zdCBtYXRjaCA9IHNjYW5uZXIubWF0Y2goQk9PTEVBTl9SRUdFWFApO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBjb25zdCBzdHJpbmcgPSBtYXRjaFswXTtcbiAgc2Nhbm5lci5uZXh0KHN0cmluZy5sZW5ndGgpO1xuICBjb25zdCB2YWx1ZSA9IHN0cmluZyA9PT0gXCJ0cnVlXCI7XG4gIHJldHVybiBzdWNjZXNzKHZhbHVlKTtcbn1cbmNvbnN0IElORklOSVRZX01BUCA9IG5ldyBNYXAoW1xuICBbXG4gICAgXCJpbmZcIixcbiAgICBJbmZpbml0eVxuICBdLFxuICBbXG4gICAgXCIraW5mXCIsXG4gICAgSW5maW5pdHlcbiAgXSxcbiAgW1xuICAgIFwiLWluZlwiLFxuICAgIC1JbmZpbml0eVxuICBdXG5dKTtcbmNvbnN0IElORklOSVRZX1JFR0VYUCA9IC9bKy1dP2luZlxcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIGluZmluaXR5KHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKElORklOSVRZX1JFR0VYUCk7XG4gIGlmICghbWF0Y2gpIHJldHVybiBmYWlsdXJlKCk7XG4gIGNvbnN0IHN0cmluZyA9IG1hdGNoWzBdO1xuICBzY2FubmVyLm5leHQoc3RyaW5nLmxlbmd0aCk7XG4gIGNvbnN0IHZhbHVlID0gSU5GSU5JVFlfTUFQLmdldChzdHJpbmcpO1xuICByZXR1cm4gc3VjY2Vzcyh2YWx1ZSk7XG59XG5jb25zdCBOQU5fUkVHRVhQID0gL1srLV0/bmFuXFxiL3k7XG5leHBvcnQgZnVuY3Rpb24gbmFuKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKE5BTl9SRUdFWFApO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBjb25zdCBzdHJpbmcgPSBtYXRjaFswXTtcbiAgc2Nhbm5lci5uZXh0KHN0cmluZy5sZW5ndGgpO1xuICBjb25zdCB2YWx1ZSA9IE5hTjtcbiAgcmV0dXJuIHN1Y2Nlc3ModmFsdWUpO1xufVxuZXhwb3J0IGNvbnN0IGRvdHRlZEtleSA9IGpvaW4xKG9yKFtcbiAgYmFyZUtleSxcbiAgYmFzaWNTdHJpbmcsXG4gIGxpdGVyYWxTdHJpbmdcbl0pLCBcIi5cIik7XG5jb25zdCBCSU5BUllfUkVHRVhQID0gLzBiWzAxXSsoPzpfWzAxXSspKlxcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIGJpbmFyeShzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChCSU5BUllfUkVHRVhQKT8uWzBdO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQobWF0Y2gubGVuZ3RoKTtcbiAgY29uc3QgdmFsdWUgPSBtYXRjaC5zbGljZSgyKS5yZXBsYWNlQWxsKFwiX1wiLCBcIlwiKTtcbiAgY29uc3QgbnVtYmVyID0gcGFyc2VJbnQodmFsdWUsIDIpO1xuICByZXR1cm4gaXNOYU4obnVtYmVyKSA/IGZhaWx1cmUoKSA6IHN1Y2Nlc3MobnVtYmVyKTtcbn1cbmNvbnN0IE9DVEFMX1JFR0VYUCA9IC8wb1swLTddKyg/Ol9bMC03XSspKlxcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIG9jdGFsKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKE9DVEFMX1JFR0VYUCk/LlswXTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KG1hdGNoLmxlbmd0aCk7XG4gIGNvbnN0IHZhbHVlID0gbWF0Y2guc2xpY2UoMikucmVwbGFjZUFsbChcIl9cIiwgXCJcIik7XG4gIGNvbnN0IG51bWJlciA9IHBhcnNlSW50KHZhbHVlLCA4KTtcbiAgcmV0dXJuIGlzTmFOKG51bWJlcikgPyBmYWlsdXJlKCkgOiBzdWNjZXNzKG51bWJlcik7XG59XG5jb25zdCBIRVhfUkVHRVhQID0gLzB4WzAtOWEtZl0rKD86X1swLTlhLWZdKykqXFxiL3lpO1xuZXhwb3J0IGZ1bmN0aW9uIGhleChzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChIRVhfUkVHRVhQKT8uWzBdO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQobWF0Y2gubGVuZ3RoKTtcbiAgY29uc3QgdmFsdWUgPSBtYXRjaC5zbGljZSgyKS5yZXBsYWNlQWxsKFwiX1wiLCBcIlwiKTtcbiAgY29uc3QgbnVtYmVyID0gcGFyc2VJbnQodmFsdWUsIDE2KTtcbiAgcmV0dXJuIGlzTmFOKG51bWJlcikgPyBmYWlsdXJlKCkgOiBzdWNjZXNzKG51bWJlcik7XG59XG5jb25zdCBJTlRFR0VSX1JFR0VYUCA9IC9bKy1dPyg/OjB8WzEtOV1bMC05XSooPzpfWzAtOV0rKSopXFxiL3k7XG5leHBvcnQgZnVuY3Rpb24gaW50ZWdlcihzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChJTlRFR0VSX1JFR0VYUCk/LlswXTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KG1hdGNoLmxlbmd0aCk7XG4gIGNvbnN0IHZhbHVlID0gbWF0Y2gucmVwbGFjZUFsbChcIl9cIiwgXCJcIik7XG4gIGNvbnN0IGludCA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gIHJldHVybiBzdWNjZXNzKGludCk7XG59XG5jb25zdCBGTE9BVF9SRUdFWFAgPSAvWystXT8oPzowfFsxLTldWzAtOV0qKD86X1swLTldKykqKSg/OlxcLlswLTldKyg/Ol9bMC05XSspKik/KD86ZVsrLV0/WzAtOV0rKD86X1swLTldKykqKT9cXGIveWk7XG5leHBvcnQgZnVuY3Rpb24gZmxvYXQoc2Nhbm5lcikge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBjb25zdCBtYXRjaCA9IHNjYW5uZXIubWF0Y2goRkxPQVRfUkVHRVhQKT8uWzBdO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQobWF0Y2gubGVuZ3RoKTtcbiAgY29uc3QgdmFsdWUgPSBtYXRjaC5yZXBsYWNlQWxsKFwiX1wiLCBcIlwiKTtcbiAgY29uc3QgZmxvYXQgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgaWYgKGlzTmFOKGZsb2F0KSkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgcmV0dXJuIHN1Y2Nlc3MoZmxvYXQpO1xufVxuY29uc3QgREFURV9USU1FX1JFR0VYUCA9IC8oPzx5ZWFyPlxcZHs0fSktKD88bW9udGg+XFxkezJ9KS0oPzxkYXk+XFxkezJ9KSg/OlsgMC05VFouOistXSspP1xcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGVUaW1lKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKERBVEVfVElNRV9SRUdFWFApO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBjb25zdCBzdHJpbmcgPSBtYXRjaFswXTtcbiAgc2Nhbm5lci5uZXh0KHN0cmluZy5sZW5ndGgpO1xuICBjb25zdCBncm91cHMgPSBtYXRjaC5ncm91cHM7XG4gIC8vIHNwZWNpYWwgY2FzZSBpZiBtb250aCBpcyBGZWJydWFyeVxuICBpZiAoZ3JvdXBzLm1vbnRoID09IFwiMDJcIikge1xuICAgIGNvbnN0IGRheXMgPSBwYXJzZUludChncm91cHMuZGF5KTtcbiAgICBpZiAoZGF5cyA+IDI5KSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYEludmFsaWQgZGF0ZSBzdHJpbmcgXCIke21hdGNofVwiYCk7XG4gICAgfVxuICAgIGNvbnN0IHllYXIgPSBwYXJzZUludChncm91cHMueWVhcik7XG4gICAgaWYgKGRheXMgPiAyOCAmJiAhaXNMZWFwKHllYXIpKSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYEludmFsaWQgZGF0ZSBzdHJpbmcgXCIke21hdGNofVwiYCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShzdHJpbmcudHJpbSgpKTtcbiAgLy8gaW52YWxpZCBkYXRlXG4gIGlmIChpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYEludmFsaWQgZGF0ZSBzdHJpbmcgXCIke21hdGNofVwiYCk7XG4gIH1cbiAgcmV0dXJuIHN1Y2Nlc3MoZGF0ZSk7XG59XG5jb25zdCBMT0NBTF9USU1FX1JFR0VYUCA9IC8oXFxkezJ9KTooXFxkezJ9KTooXFxkezJ9KSg/OlxcLlswLTldKyk/XFxiL3k7XG5leHBvcnQgZnVuY3Rpb24gbG9jYWxUaW1lKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKExPQ0FMX1RJTUVfUkVHRVhQKT8uWzBdO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQobWF0Y2gubGVuZ3RoKTtcbiAgcmV0dXJuIHN1Y2Nlc3MobWF0Y2gpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5VmFsdWUoc2Nhbm5lcikge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBpZiAoc2Nhbm5lci5jaGFyKCkgIT09IFwiW1wiKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQoKTtcbiAgY29uc3QgYXJyYXkgPSBbXTtcbiAgd2hpbGUoIXNjYW5uZXIuZW9mKCkpe1xuICAgIHNjYW5uZXIubmV4dFVudGlsQ2hhcigpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHZhbHVlKHNjYW5uZXIpO1xuICAgIGlmICghcmVzdWx0Lm9rKSBicmVhaztcbiAgICBhcnJheS5wdXNoKHJlc3VsdC5ib2R5KTtcbiAgICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICAgIC8vIG1heSBoYXZlIGEgbmV4dCBpdGVtLCBidXQgdHJhaWxpbmcgY29tbWEgaXMgYWxsb3dlZCBhdCBhcnJheVxuICAgIGlmIChzY2FubmVyLmNoYXIoKSAhPT0gXCIsXCIpIGJyZWFrO1xuICAgIHNjYW5uZXIubmV4dCgpO1xuICB9XG4gIHNjYW5uZXIubmV4dFVudGlsQ2hhcigpO1xuICBpZiAoc2Nhbm5lci5jaGFyKCkgIT09IFwiXVwiKSB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXCJBcnJheSBpcyBub3QgY2xvc2VkXCIpO1xuICBzY2FubmVyLm5leHQoKTtcbiAgcmV0dXJuIHN1Y2Nlc3MoYXJyYXkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlubGluZVRhYmxlKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKCk7XG4gIGlmIChzY2FubmVyLmNoYXIoMSkgPT09IFwifVwiKSB7XG4gICAgc2Nhbm5lci5uZXh0KDIpO1xuICAgIHJldHVybiBzdWNjZXNzKHtcbiAgICAgIF9fcHJvdG9fXzogbnVsbFxuICAgIH0pO1xuICB9XG4gIGNvbnN0IHBhaXJzID0gc3Vycm91bmQoXCJ7XCIsIGpvaW4ocGFpciwgXCIsXCIpLCBcIn1cIikoc2Nhbm5lcik7XG4gIGlmICghcGFpcnMub2spIHJldHVybiBmYWlsdXJlKCk7XG4gIGxldCB0YWJsZSA9IHtcbiAgICBfX3Byb3RvX186IG51bGxcbiAgfTtcbiAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzLmJvZHkpe1xuICAgIHRhYmxlID0gZGVlcE1lcmdlKHRhYmxlLCBwYWlyKTtcbiAgfVxuICByZXR1cm4gc3VjY2Vzcyh0YWJsZSk7XG59XG5leHBvcnQgY29uc3QgdmFsdWUgPSBvcihbXG4gIG11bHRpbGluZUJhc2ljU3RyaW5nLFxuICBtdWx0aWxpbmVMaXRlcmFsU3RyaW5nLFxuICBiYXNpY1N0cmluZyxcbiAgbGl0ZXJhbFN0cmluZyxcbiAgYm9vbGVhbixcbiAgaW5maW5pdHksXG4gIG5hbixcbiAgZGF0ZVRpbWUsXG4gIGxvY2FsVGltZSxcbiAgYmluYXJ5LFxuICBvY3RhbCxcbiAgaGV4LFxuICBmbG9hdCxcbiAgaW50ZWdlcixcbiAgYXJyYXlWYWx1ZSxcbiAgaW5saW5lVGFibGVcbl0pO1xuZXhwb3J0IGNvbnN0IHBhaXIgPSBrdihkb3R0ZWRLZXksIFwiPVwiLCB2YWx1ZSk7XG5leHBvcnQgZnVuY3Rpb24gYmxvY2soc2Nhbm5lcikge1xuICBzY2FubmVyLm5leHRVbnRpbENoYXIoKTtcbiAgY29uc3QgcmVzdWx0ID0gbWVyZ2UocmVwZWF0KHBhaXIpKShzY2FubmVyKTtcbiAgaWYgKHJlc3VsdC5vaykgcmV0dXJuIHN1Y2Nlc3Moe1xuICAgIHR5cGU6IFwiQmxvY2tcIixcbiAgICB2YWx1ZTogcmVzdWx0LmJvZHlcbiAgfSk7XG4gIHJldHVybiBmYWlsdXJlKCk7XG59XG5leHBvcnQgY29uc3QgdGFibGVIZWFkZXIgPSBzdXJyb3VuZChcIltcIiwgZG90dGVkS2V5LCBcIl1cIik7XG5leHBvcnQgZnVuY3Rpb24gdGFibGUoc2Nhbm5lcikge1xuICBzY2FubmVyLm5leHRVbnRpbENoYXIoKTtcbiAgY29uc3QgaGVhZGVyID0gdGFibGVIZWFkZXIoc2Nhbm5lcik7XG4gIGlmICghaGVhZGVyLm9rKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHRVbnRpbENoYXIoKTtcbiAgY29uc3QgYiA9IGJsb2NrKHNjYW5uZXIpO1xuICByZXR1cm4gc3VjY2Vzcyh7XG4gICAgdHlwZTogXCJUYWJsZVwiLFxuICAgIGtleXM6IGhlYWRlci5ib2R5LFxuICAgIHZhbHVlOiBiLm9rID8gYi5ib2R5LnZhbHVlIDoge1xuICAgICAgX19wcm90b19fOiBudWxsXG4gICAgfVxuICB9KTtcbn1cbmV4cG9ydCBjb25zdCB0YWJsZUFycmF5SGVhZGVyID0gc3Vycm91bmQoXCJbW1wiLCBkb3R0ZWRLZXksIFwiXV1cIik7XG5leHBvcnQgZnVuY3Rpb24gdGFibGVBcnJheShzY2FubmVyKSB7XG4gIHNjYW5uZXIubmV4dFVudGlsQ2hhcigpO1xuICBjb25zdCBoZWFkZXIgPSB0YWJsZUFycmF5SGVhZGVyKHNjYW5uZXIpO1xuICBpZiAoIWhlYWRlci5vaykgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKCk7XG4gIGNvbnN0IGIgPSBibG9jayhzY2FubmVyKTtcbiAgcmV0dXJuIHN1Y2Nlc3Moe1xuICAgIHR5cGU6IFwiVGFibGVBcnJheVwiLFxuICAgIGtleXM6IGhlYWRlci5ib2R5LFxuICAgIHZhbHVlOiBiLm9rID8gYi5ib2R5LnZhbHVlIDoge1xuICAgICAgX19wcm90b19fOiBudWxsXG4gICAgfVxuICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0b21sKHNjYW5uZXIpIHtcbiAgY29uc3QgYmxvY2tzID0gcmVwZWF0KG9yKFtcbiAgICBibG9jayxcbiAgICB0YWJsZUFycmF5LFxuICAgIHRhYmxlXG4gIF0pKShzY2FubmVyKTtcbiAgaWYgKCFibG9ja3Mub2spIHJldHVybiBzdWNjZXNzKHtcbiAgICBfX3Byb3RvX186IG51bGxcbiAgfSk7XG4gIGNvbnN0IGJvZHkgPSBibG9ja3MuYm9keS5yZWR1Y2UoZGVlcEFzc2lnbiwge1xuICAgIF9fcHJvdG9fXzogbnVsbFxuICB9KTtcbiAgcmV0dXJuIHN1Y2Nlc3MoYm9keSk7XG59XG5mdW5jdGlvbiBjcmVhdGVQYXJzZUVycm9yTWVzc2FnZShzY2FubmVyLCBtZXNzYWdlKSB7XG4gIGNvbnN0IHN0cmluZyA9IHNjYW5uZXIuc291cmNlLnNsaWNlKDAsIHNjYW5uZXIucG9zaXRpb24pO1xuICBjb25zdCBsaW5lcyA9IHN0cmluZy5zcGxpdChcIlxcblwiKTtcbiAgY29uc3Qgcm93ID0gbGluZXMubGVuZ3RoO1xuICBjb25zdCBjb2x1bW4gPSBsaW5lcy5hdCgtMSk/Lmxlbmd0aCA/PyAwO1xuICByZXR1cm4gYFBhcnNlIGVycm9yIG9uIGxpbmUgJHtyb3d9LCBjb2x1bW4gJHtjb2x1bW59OiAke21lc3NhZ2V9YDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZXJGYWN0b3J5KHBhcnNlcikge1xuICByZXR1cm4gKHRvbWxTdHJpbmcpPT57XG4gICAgY29uc3Qgc2Nhbm5lciA9IG5ldyBTY2FubmVyKHRvbWxTdHJpbmcpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBwYXJzZXIoc2Nhbm5lcik7XG4gICAgICBpZiAocmVzdWx0Lm9rICYmIHNjYW5uZXIuZW9mKCkpIHJldHVybiByZXN1bHQuYm9keTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVW5leHBlY3RlZCBjaGFyYWN0ZXI6IFwiJHtzY2FubmVyLmNoYXIoKX1cImA7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoY3JlYXRlUGFyc2VFcnJvck1lc3NhZ2Uoc2Nhbm5lciwgbWVzc2FnZSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoY3JlYXRlUGFyc2VFcnJvck1lc3NhZ2Uoc2Nhbm5lciwgZXJyb3IubWVzc2FnZSkpO1xuICAgICAgfVxuICAgICAgY29uc3QgbWVzc2FnZSA9IFwiSW52YWxpZCBlcnJvciB0eXBlIGNhdWdodFwiO1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGNyZWF0ZVBhcnNlRXJyb3JNZXNzYWdlKHNjYW5uZXIsIG1lc3NhZ2UpKTtcbiAgICB9XG4gIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1fcGFyc2VyLmpzLm1hcCIsIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5pbXBvcnQgeyBwYXJzZXJGYWN0b3J5LCB0b21sIH0gZnJvbSBcIi4vX3BhcnNlci5qc1wiO1xuLyoqXG4gKiBQYXJzZXMgYSB7QGxpbmsgaHR0cHM6Ly90b21sLmlvIHwgVE9NTH0gc3RyaW5nIGludG8gYW4gb2JqZWN0LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiQHN0ZC90b21sL3BhcnNlXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCB0b21sU3RyaW5nID0gYHRpdGxlID0gXCJUT01MIEV4YW1wbGVcIlxuICogW293bmVyXVxuICogbmFtZSA9IFwiQWxpY2VcIlxuICogYmlvID0gXCJBbGljZSBpcyBhIHByb2dyYW1tZXIuXCJgO1xuICpcbiAqIGNvbnN0IG9iaiA9IHBhcnNlKHRvbWxTdHJpbmcpO1xuICogYXNzZXJ0RXF1YWxzKG9iaiwgeyB0aXRsZTogXCJUT01MIEV4YW1wbGVcIiwgb3duZXI6IHsgbmFtZTogXCJBbGljZVwiLCBiaW86IFwiQWxpY2UgaXMgYSBwcm9ncmFtbWVyLlwiIH0gfSk7XG4gKiBgYGBcbiAqIEBwYXJhbSB0b21sU3RyaW5nIFRPTUwgc3RyaW5nIHRvIGJlIHBhcnNlZC5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgSlMgb2JqZWN0LlxuICovIGV4cG9ydCBmdW5jdGlvbiBwYXJzZSh0b21sU3RyaW5nKSB7XG4gIHJldHVybiBwYXJzZXJGYWN0b3J5KHRvbWwpKHRvbWxTdHJpbmcpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2UuanMubWFwIiwiaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgaXNBYnNvbHV0ZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tIFwibm9kZTp1cmxcIjtcbi8qKlxuKiBSZXNvbHZlIGFuIGFic29sdXRlIHBhdGggZnJvbSB7QGxpbmsgcm9vdH0sIGJ1dCBvbmx5XG4qIGlmIHtAbGluayBpbnB1dH0gaXNuJ3QgYWxyZWFkeSBhYnNvbHV0ZS5cbipcbiogQHBhcmFtIGlucHV0IFRoZSBwYXRoIHRvIHJlc29sdmUuXG4qIEBwYXJhbSByb290IFRoZSBiYXNlIHBhdGg7IGRlZmF1bHQgPSBwcm9jZXNzLmN3ZCgpXG4qIEByZXR1cm5zIFRoZSByZXNvbHZlZCBhYnNvbHV0ZSBwYXRoLlxuKi9cbmV4cG9ydCBmdW5jdGlvbiBhYnNvbHV0ZShpbnB1dCwgcm9vdCkge1xuXHRyZXR1cm4gaXNBYnNvbHV0ZShpbnB1dCkgPyBpbnB1dCA6IHJlc29sdmUocm9vdCB8fCBcIi5cIiwgaW5wdXQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZyb20ocm9vdCwgaWRlbnQsIHNpbGVudCkge1xuXHR0cnkge1xuXHRcdC8vIE5PVEU6IGRpcnMgbmVlZCBhIHRyYWlsaW5nIFwiL1wiIE9SIGZpbGVuYW1lLiBXaXRoIFwiL1wiIHJvdXRlLFxuXHRcdC8vIE5vZGUgYWRkcyBcIm5vb3AuanNcIiBhcyBtYWluIGZpbGUsIHNvIGp1c3QgZG8gXCJub29wLmpzXCIgYW55d2F5LlxuXHRcdGxldCByID0gcm9vdCBpbnN0YW5jZW9mIFVSTCB8fCByb290LnN0YXJ0c1dpdGgoXCJmaWxlOi8vXCIpID8gam9pbihmaWxlVVJMVG9QYXRoKHJvb3QpLCBcIm5vb3AuanNcIikgOiBqb2luKGFic29sdXRlKHJvb3QpLCBcIm5vb3AuanNcIik7XG5cdFx0cmV0dXJuIGNyZWF0ZVJlcXVpcmUocikucmVzb2x2ZShpZGVudCk7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdGlmICghc2lsZW50KSB0aHJvdyBlcnI7XG5cdH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBjd2QoaWRlbnQsIHNpbGVudCkge1xuXHRyZXR1cm4gZnJvbShyZXNvbHZlKCksIGlkZW50LCBzaWxlbnQpO1xufVxuIiwiaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGFic29sdXRlIH0gZnJvbSBcImVtcGF0aGljL3Jlc29sdmVcIjtcbi8qKlxuKiBHZXQgYWxsIHBhcmVudCBkaXJlY3RvcmllcyBvZiB7QGxpbmsgYmFzZX0uXG4qIFN0b3BzIGFmdGVyIHtAbGluayBPcHRpb25zWydsYXN0J119IGlzIHByb2Nlc3NlZC5cbipcbiogQHJldHVybnMgQW4gYXJyYXkgb2YgYWJzb2x1dGUgcGF0aHMgb2YgYWxsIHBhcmVudCBkaXJlY3Rvcmllcy5cbiovXG5leHBvcnQgZnVuY3Rpb24gdXAoYmFzZSwgb3B0aW9ucykge1xuXHRsZXQgeyBsYXN0LCBjd2QgfSA9IG9wdGlvbnMgfHwge307XG5cdGxldCB0bXAgPSBhYnNvbHV0ZShiYXNlLCBjd2QpO1xuXHRsZXQgcm9vdCA9IGFic29sdXRlKGxhc3QgfHwgXCIvXCIsIGN3ZCk7XG5cdGxldCBwcmV2LCBhcnIgPSBbXTtcblx0d2hpbGUgKHByZXYgIT09IHJvb3QpIHtcblx0XHRhcnIucHVzaCh0bXApO1xuXHRcdHRtcCA9IGRpcm5hbWUocHJldiA9IHRtcCk7XG5cdFx0aWYgKHRtcCA9PT0gcHJldikgYnJlYWs7XG5cdH1cblx0cmV0dXJuIGFycjtcbn1cbiIsImltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCBzdGF0U3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyB3YWxrIGZyb20gXCJlbXBhdGhpYy93YWxrXCI7XG4vKipcbiogRmluZCBhbiBpdGVtIGJ5IG5hbWUsIHdhbGtpbmcgcGFyZW50IGRpcmVjdG9yaWVzIHVudGlsIGZvdW5kLlxuKlxuKiBAcGFyYW0gbmFtZSBUaGUgaXRlbSBuYW1lIHRvIGZpbmQuXG4qIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBpdGVtLCBpZiBmb3VuZC5cbiovXG5leHBvcnQgZnVuY3Rpb24gdXAobmFtZSwgb3B0aW9ucykge1xuXHRsZXQgZGlyLCB0bXA7XG5cdGxldCBzdGFydCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5jd2QgfHwgXCJcIjtcblx0Zm9yIChkaXIgb2Ygd2Fsay51cChzdGFydCwgb3B0aW9ucykpIHtcblx0XHR0bXAgPSBqb2luKGRpciwgbmFtZSk7XG5cdFx0aWYgKGV4aXN0c1N5bmModG1wKSkgcmV0dXJuIHRtcDtcblx0fVxufVxuLyoqXG4qIEdldCB0aGUgZmlyc3QgcGF0aCB0aGF0IG1hdGNoZXMgYW55IG9mIHRoZSBuYW1lcyBwcm92aWRlZC5cbipcbiogPiBbTk9URV1cbiogPiBUaGUgb3JkZXIgb2Yge0BsaW5rIG5hbWVzfSBpcyByZXNwZWN0ZWQuXG4qXG4qIEBwYXJhbSBuYW1lcyBUaGUgaXRlbSBuYW1lcyB0byBmaW5kLlxuKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZmlyc3QgaXRlbSBmb3VuZCwgaWYgYW55LlxuKi9cbmV4cG9ydCBmdW5jdGlvbiBhbnkobmFtZXMsIG9wdGlvbnMpIHtcblx0bGV0IGRpciwgc3RhcnQgPSBvcHRpb25zICYmIG9wdGlvbnMuY3dkIHx8IFwiXCI7XG5cdGxldCBqID0gMCwgbGVuID0gbmFtZXMubGVuZ3RoLCB0bXA7XG5cdGZvciAoZGlyIG9mIHdhbGsudXAoc3RhcnQsIG9wdGlvbnMpKSB7XG5cdFx0Zm9yIChqID0gMDsgaiA8IGxlbjsgaisrKSB7XG5cdFx0XHR0bXAgPSBqb2luKGRpciwgbmFtZXNbal0pO1xuXHRcdFx0aWYgKGV4aXN0c1N5bmModG1wKSkgcmV0dXJuIHRtcDtcblx0XHR9XG5cdH1cbn1cbi8qKlxuKiBGaW5kIGEgZmlsZSBieSBuYW1lLCB3YWxraW5nIHBhcmVudCBkaXJlY3RvcmllcyB1bnRpbCBmb3VuZC5cbipcbiogPiBbTk9URV1cbiogPiBUaGlzIGZ1bmN0aW9uIG9ubHkgcmV0dXJucyBhIHZhbHVlIGZvciBmaWxlIG1hdGNoZXMuXG4qID4gQSBkaXJlY3RvcnkgbWF0Y2ggd2l0aCB0aGUgc2FtZSBuYW1lIHdpbGwgYmUgaWdub3JlZC5cbipcbiogQHBhcmFtIG5hbWUgVGhlIGZpbGUgbmFtZSB0byBmaW5kLlxuKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgZmlsZSwgaWYgZm91bmQuXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGUobmFtZSwgb3B0aW9ucykge1xuXHRsZXQgZGlyLCB0bXA7XG5cdGxldCBzdGFydCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5jd2QgfHwgXCJcIjtcblx0Zm9yIChkaXIgb2Ygd2Fsay51cChzdGFydCwgb3B0aW9ucykpIHtcblx0XHR0cnkge1xuXHRcdFx0dG1wID0gam9pbihkaXIsIG5hbWUpO1xuXHRcdFx0aWYgKHN0YXRTeW5jKHRtcCkuaXNGaWxlKCkpIHJldHVybiB0bXA7XG5cdFx0fSBjYXRjaCB7fVxuXHR9XG59XG4vKipcbiogRmluZCBhIGRpcmVjdG9yeSBieSBuYW1lLCB3YWxraW5nIHBhcmVudCBkaXJlY3RvcmllcyB1bnRpbCBmb3VuZC5cbipcbiogPiBbTk9URV1cbiogPiBUaGlzIGZ1bmN0aW9uIG9ubHkgcmV0dXJucyBhIHZhbHVlIGZvciBkaXJlY3RvcnkgbWF0Y2hlcy5cbiogPiBBIGZpbGUgbWF0Y2ggd2l0aCB0aGUgc2FtZSBuYW1lIHdpbGwgYmUgaWdub3JlZC5cbipcbiogQHBhcmFtIG5hbWUgVGhlIGRpcmVjdG9yeSBuYW1lIHRvIGZpbmQuXG4qIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBmaWxlLCBpZiBmb3VuZC5cbiovXG5leHBvcnQgZnVuY3Rpb24gZGlyKG5hbWUsIG9wdGlvbnMpIHtcblx0bGV0IGRpciwgdG1wO1xuXHRsZXQgc3RhcnQgPSBvcHRpb25zICYmIG9wdGlvbnMuY3dkIHx8IFwiXCI7XG5cdGZvciAoZGlyIG9mIHdhbGsudXAoc3RhcnQsIG9wdGlvbnMpKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHRtcCA9IGpvaW4oZGlyLCBuYW1lKTtcblx0XHRcdGlmIChzdGF0U3luYyh0bXApLmlzRGlyZWN0b3J5KCkpIHJldHVybiB0bXA7XG5cdFx0fSBjYXRjaCB7fVxuXHR9XG59XG4iLCIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGNvZGVnZW4vaW5kZXgudHNcbi8vIERvIG5vdCBlZGl0IHRoaXMgZmlsZSBtYW51YWxseVxuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVJlbmFtZUNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW1sncmVuYW1lJ11dXG5cbiAgc3RhdGljIHVzYWdlID0gQ29tbWFuZC5Vc2FnZSh7XG4gICAgZGVzY3JpcHRpb246ICdSZW5hbWUgdGhlIE5BUEktUlMgcHJvamVjdCcsXG4gIH0pXG5cbiAgY3dkID0gT3B0aW9uLlN0cmluZygnLS1jd2QnLCBwcm9jZXNzLmN3ZCgpLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoJyxcbiAgfSlcblxuICBjb25maWdQYXRoPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1jb25maWctcGF0aCwtYycsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGUnLFxuICB9KVxuXG4gIHBhY2thZ2VKc29uUGF0aCA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZS1qc29uLXBhdGgnLCAncGFja2FnZS5qc29uJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgcGFja2FnZS5qc29uYCcsXG4gIH0pXG5cbiAgbnBtRGlyID0gT3B0aW9uLlN0cmluZygnLS1ucG0tZGlyJywgJ25wbScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dCcsXG4gIH0pXG5cbiAgJCRuYW1lPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1uYW1lLC1uJywge1xuICAgIGRlc2NyaXB0aW9uOiAnVGhlIG5ldyBuYW1lIG9mIHRoZSBwcm9qZWN0JyxcbiAgfSlcblxuICBiaW5hcnlOYW1lPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1iaW5hcnktbmFtZSwtYicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBuZXcgYmluYXJ5IG5hbWUgKi5ub2RlIGZpbGVzJyxcbiAgfSlcblxuICBwYWNrYWdlTmFtZT86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZS1uYW1lJywge1xuICAgIGRlc2NyaXB0aW9uOiAnVGhlIG5ldyBwYWNrYWdlIG5hbWUgb2YgdGhlIHByb2plY3QnLFxuICB9KVxuXG4gIG1hbmlmZXN0UGF0aCA9IE9wdGlvbi5TdHJpbmcoJy0tbWFuaWZlc3QtcGF0aCcsICdDYXJnby50b21sJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgQ2FyZ28udG9tbGAnLFxuICB9KVxuXG4gIHJlcG9zaXRvcnk/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLXJlcG9zaXRvcnknLCB7XG4gICAgZGVzY3JpcHRpb246ICdUaGUgbmV3IHJlcG9zaXRvcnkgb2YgdGhlIHByb2plY3QnLFxuICB9KVxuXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1kZXNjcmlwdGlvbicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBuZXcgZGVzY3JpcHRpb24gb2YgdGhlIHByb2plY3QnLFxuICB9KVxuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN3ZDogdGhpcy5jd2QsXG4gICAgICBjb25maWdQYXRoOiB0aGlzLmNvbmZpZ1BhdGgsXG4gICAgICBwYWNrYWdlSnNvblBhdGg6IHRoaXMucGFja2FnZUpzb25QYXRoLFxuICAgICAgbnBtRGlyOiB0aGlzLm5wbURpcixcbiAgICAgIG5hbWU6IHRoaXMuJCRuYW1lLFxuICAgICAgYmluYXJ5TmFtZTogdGhpcy5iaW5hcnlOYW1lLFxuICAgICAgcGFja2FnZU5hbWU6IHRoaXMucGFja2FnZU5hbWUsXG4gICAgICBtYW5pZmVzdFBhdGg6IHRoaXMubWFuaWZlc3RQYXRoLFxuICAgICAgcmVwb3NpdG9yeTogdGhpcy5yZXBvc2l0b3J5LFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVuYW1lIHRoZSBOQVBJLVJTIHByb2plY3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5hbWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICBjd2Q/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICpcbiAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICovXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBucG0gcGFja2FnZXMgcHV0XG4gICAqXG4gICAqIEBkZWZhdWx0ICducG0nXG4gICAqL1xuICBucG1EaXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuZXcgbmFtZSBvZiB0aGUgcHJvamVjdFxuICAgKi9cbiAgbmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIG5ldyBiaW5hcnkgbmFtZSAqLm5vZGUgZmlsZXNcbiAgICovXG4gIGJpbmFyeU5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuZXcgcGFja2FnZSBuYW1lIG9mIHRoZSBwcm9qZWN0XG4gICAqL1xuICBwYWNrYWdlTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byBgQ2FyZ28udG9tbGBcbiAgICpcbiAgICogQGRlZmF1bHQgJ0NhcmdvLnRvbWwnXG4gICAqL1xuICBtYW5pZmVzdFBhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuZXcgcmVwb3NpdG9yeSBvZiB0aGUgcHJvamVjdFxuICAgKi9cbiAgcmVwb3NpdG9yeT86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIG5ldyBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvamVjdFxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGVmYXVsdFJlbmFtZU9wdGlvbnMob3B0aW9uczogUmVuYW1lT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBwYWNrYWdlSnNvblBhdGg6ICdwYWNrYWdlLmpzb24nLFxuICAgIG5wbURpcjogJ25wbScsXG4gICAgbWFuaWZlc3RQYXRoOiAnQ2FyZ28udG9tbCcsXG4gICAgLi4ub3B0aW9ucyxcbiAgfVxufVxuIiwiaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyByZW5hbWUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgcmVzb2x2ZSwgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcblxuaW1wb3J0IHsgcGFyc2UgYXMgcGFyc2VUb21sLCBzdHJpbmdpZnkgYXMgc3RyaW5naWZ5VG9tbCB9IGZyb20gJ0BzdGQvdG9tbCdcbmltcG9ydCB7IGxvYWQgYXMgeWFtbFBhcnNlLCBkdW1wIGFzIHlhbWxTdHJpbmdpZnkgfSBmcm9tICdqcy15YW1sJ1xuaW1wb3J0IHsgaXNOaWwsIG1lcmdlLCBvbWl0QnksIHBpY2sgfSBmcm9tICdlcy10b29sa2l0J1xuaW1wb3J0ICogYXMgZmluZCBmcm9tICdlbXBhdGhpYy9maW5kJ1xuXG5pbXBvcnQgeyBhcHBseURlZmF1bHRSZW5hbWVPcHRpb25zLCB0eXBlIFJlbmFtZU9wdGlvbnMgfSBmcm9tICcuLi9kZWYvcmVuYW1lLmpzJ1xuaW1wb3J0IHsgcmVhZENvbmZpZywgcmVhZEZpbGVBc3luYywgd3JpdGVGaWxlQXN5bmMgfSBmcm9tICcuLi91dGlscy9pbmRleC5qcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmFtZVByb2plY3QodXNlck9wdGlvbnM6IFJlbmFtZU9wdGlvbnMpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGFwcGx5RGVmYXVsdFJlbmFtZU9wdGlvbnModXNlck9wdGlvbnMpXG4gIGNvbnN0IG5hcGlDb25maWcgPSBhd2FpdCByZWFkQ29uZmlnKG9wdGlvbnMpXG4gIGNvbnN0IG9sZE5hbWUgPSBuYXBpQ29uZmlnLmJpbmFyeU5hbWVcblxuICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSByZXNvbHZlKG9wdGlvbnMuY3dkLCBvcHRpb25zLnBhY2thZ2VKc29uUGF0aClcbiAgY29uc3QgY2FyZ29Ub21sUGF0aCA9IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMubWFuaWZlc3RQYXRoKVxuXG4gIGNvbnN0IHBhY2thZ2VKc29uQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlQXN5bmMocGFja2FnZUpzb25QYXRoLCAndXRmOCcpXG4gIGNvbnN0IHBhY2thZ2VKc29uRGF0YSA9IEpTT04ucGFyc2UocGFja2FnZUpzb25Db250ZW50KVxuXG4gIG1lcmdlKFxuICAgIG1lcmdlKFxuICAgICAgcGFja2FnZUpzb25EYXRhLFxuICAgICAgb21pdEJ5KFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgZmllbGRzOiBhdXRob3IgYW5kIGxpY2Vuc2VcbiAgICAgICAgcGljayhvcHRpb25zLCBbJ25hbWUnLCAnZGVzY3JpcHRpb24nLCAnYXV0aG9yJywgJ2xpY2Vuc2UnXSksXG4gICAgICAgIGlzTmlsLFxuICAgICAgKSxcbiAgICApLFxuICAgIHtcbiAgICAgIG5hcGk6IG9taXRCeShcbiAgICAgICAge1xuICAgICAgICAgIGJpbmFyeU5hbWU6IG9wdGlvbnMuYmluYXJ5TmFtZSxcbiAgICAgICAgICBwYWNrYWdlTmFtZTogb3B0aW9ucy5wYWNrYWdlTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgaXNOaWwsXG4gICAgICApLFxuICAgIH0sXG4gIClcblxuICBpZiAob3B0aW9ucy5jb25maWdQYXRoKSB7XG4gICAgY29uc3QgY29uZmlnUGF0aCA9IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMuY29uZmlnUGF0aClcbiAgICBjb25zdCBjb25maWdDb250ZW50ID0gYXdhaXQgcmVhZEZpbGVBc3luYyhjb25maWdQYXRoLCAndXRmOCcpXG4gICAgY29uc3QgY29uZmlnRGF0YSA9IEpTT04ucGFyc2UoY29uZmlnQ29udGVudClcbiAgICBjb25maWdEYXRhLmJpbmFyeU5hbWUgPSBvcHRpb25zLmJpbmFyeU5hbWVcbiAgICBjb25maWdEYXRhLnBhY2thZ2VOYW1lID0gb3B0aW9ucy5wYWNrYWdlTmFtZVxuICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKGNvbmZpZ1BhdGgsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0RhdGEsIG51bGwsIDIpKVxuICB9XG5cbiAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoXG4gICAgcGFja2FnZUpzb25QYXRoLFxuICAgIEpTT04uc3RyaW5naWZ5KHBhY2thZ2VKc29uRGF0YSwgbnVsbCwgMiksXG4gIClcblxuICBjb25zdCB0b21sQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlQXN5bmMoY2FyZ29Ub21sUGF0aCwgJ3V0ZjgnKVxuICBjb25zdCBjYXJnb1RvbWwgPSBwYXJzZVRvbWwodG9tbENvbnRlbnQpIGFzIGFueVxuXG4gIC8vIFVwZGF0ZSB0aGUgcGFja2FnZSBuYW1lXG4gIGlmIChjYXJnb1RvbWwucGFja2FnZSAmJiBvcHRpb25zLmJpbmFyeU5hbWUpIHtcbiAgICAvLyBTYW5pdGl6ZSB0aGUgYmluYXJ5IG5hbWUgZm9yIFJ1c3QgcGFja2FnZSBuYW1pbmcgY29udmVudGlvbnNcbiAgICBjb25zdCBzYW5pdGl6ZWROYW1lID0gb3B0aW9ucy5iaW5hcnlOYW1lXG4gICAgICAucmVwbGFjZSgnQCcsICcnKVxuICAgICAgLnJlcGxhY2UoJy8nLCAnXycpXG4gICAgICAucmVwbGFjZSgvLS9nLCAnXycpXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgIGNhcmdvVG9tbC5wYWNrYWdlLm5hbWUgPSBzYW5pdGl6ZWROYW1lXG4gIH1cblxuICAvLyBTdHJpbmdpZnkgdGhlIHVwZGF0ZWQgVE9NTFxuICBjb25zdCB1cGRhdGVkVG9tbENvbnRlbnQgPSBzdHJpbmdpZnlUb21sKGNhcmdvVG9tbClcblxuICBhd2FpdCB3cml0ZUZpbGVBc3luYyhjYXJnb1RvbWxQYXRoLCB1cGRhdGVkVG9tbENvbnRlbnQpXG4gIGlmIChvbGROYW1lICE9PSBvcHRpb25zLmJpbmFyeU5hbWUpIHtcbiAgICBjb25zdCBnaXRodWJBY3Rpb25zUGF0aCA9IGZpbmQuZGlyKCcuZ2l0aHViJywge1xuICAgICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICB9KVxuICAgIGlmIChnaXRodWJBY3Rpb25zUGF0aCkge1xuICAgICAgY29uc3QgZ2l0aHViQWN0aW9uc0NJWW1sUGF0aCA9IGpvaW4oXG4gICAgICAgIGdpdGh1YkFjdGlvbnNQYXRoLFxuICAgICAgICAnd29ya2Zsb3dzJyxcbiAgICAgICAgJ0NJLnltbCcsXG4gICAgICApXG4gICAgICBpZiAoZXhpc3RzU3luYyhnaXRodWJBY3Rpb25zQ0lZbWxQYXRoKSkge1xuICAgICAgICBjb25zdCBnaXRodWJBY3Rpb25zQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlQXN5bmMoXG4gICAgICAgICAgZ2l0aHViQWN0aW9uc0NJWW1sUGF0aCxcbiAgICAgICAgICAndXRmOCcsXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgZ2l0aHViQWN0aW9uc0RhdGEgPSB5YW1sUGFyc2UoZ2l0aHViQWN0aW9uc0NvbnRlbnQpIGFzIGFueVxuICAgICAgICBpZiAoZ2l0aHViQWN0aW9uc0RhdGEuZW52Py5BUFBfTkFNRSkge1xuICAgICAgICAgIGdpdGh1YkFjdGlvbnNEYXRhLmVudi5BUFBfTkFNRSA9IG9wdGlvbnMuYmluYXJ5TmFtZVxuICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKFxuICAgICAgICAgICAgZ2l0aHViQWN0aW9uc0NJWW1sUGF0aCxcbiAgICAgICAgICAgIHlhbWxTdHJpbmdpZnkoZ2l0aHViQWN0aW9uc0RhdGEsIHtcbiAgICAgICAgICAgICAgbGluZVdpZHRoOiAtMSxcbiAgICAgICAgICAgICAgbm9SZWZzOiB0cnVlLFxuICAgICAgICAgICAgICBzb3J0S2V5czogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgb2xkV2FzaUJyb3dzZXJCaW5kaW5nUGF0aCA9IGpvaW4oXG4gICAgICBvcHRpb25zLmN3ZCxcbiAgICAgIGAke29sZE5hbWV9Lndhc2ktYnJvd3Nlci5qc2AsXG4gICAgKVxuICAgIGlmIChleGlzdHNTeW5jKG9sZFdhc2lCcm93c2VyQmluZGluZ1BhdGgpKSB7XG4gICAgICBhd2FpdCByZW5hbWUoXG4gICAgICAgIG9sZFdhc2lCcm93c2VyQmluZGluZ1BhdGgsXG4gICAgICAgIGpvaW4ob3B0aW9ucy5jd2QsIGAke29wdGlvbnMuYmluYXJ5TmFtZX0ud2FzaS1icm93c2VyLmpzYCksXG4gICAgICApXG4gICAgfVxuICAgIGNvbnN0IG9sZFdhc2lCaW5kaW5nUGF0aCA9IGpvaW4ob3B0aW9ucy5jd2QsIGAke29sZE5hbWV9Lndhc2kuY2pzYClcbiAgICBpZiAoZXhpc3RzU3luYyhvbGRXYXNpQmluZGluZ1BhdGgpKSB7XG4gICAgICBhd2FpdCByZW5hbWUoXG4gICAgICAgIG9sZFdhc2lCaW5kaW5nUGF0aCxcbiAgICAgICAgam9pbihvcHRpb25zLmN3ZCwgYCR7b3B0aW9ucy5iaW5hcnlOYW1lfS53YXNpLmNqc2ApLFxuICAgICAgKVxuICAgIH1cbiAgICBjb25zdCBnaXRBdHRyaWJ1dGVzUGF0aCA9IGpvaW4ob3B0aW9ucy5jd2QsICcuZ2l0YXR0cmlidXRlcycpXG4gICAgaWYgKGV4aXN0c1N5bmMoZ2l0QXR0cmlidXRlc1BhdGgpKSB7XG4gICAgICBjb25zdCBnaXRBdHRyaWJ1dGVzQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlQXN5bmMoXG4gICAgICAgIGdpdEF0dHJpYnV0ZXNQYXRoLFxuICAgICAgICAndXRmOCcsXG4gICAgICApXG4gICAgICBjb25zdCBnaXRBdHRyaWJ1dGVzRGF0YSA9IGdpdEF0dHJpYnV0ZXNDb250ZW50XG4gICAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgICAgIHJldHVybiBsaW5lXG4gICAgICAgICAgICAucmVwbGFjZShcbiAgICAgICAgICAgICAgYCR7b2xkTmFtZX0ud2FzaS1icm93c2VyLmpzYCxcbiAgICAgICAgICAgICAgYCR7b3B0aW9ucy5iaW5hcnlOYW1lfS53YXNpLWJyb3dzZXIuanNgLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlcGxhY2UoYCR7b2xkTmFtZX0ud2FzaS5janNgLCBgJHtvcHRpb25zLmJpbmFyeU5hbWV9Lndhc2kuY2pzYClcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJ1xcbicpXG4gICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhnaXRBdHRyaWJ1dGVzUGF0aCwgZ2l0QXR0cmlidXRlc0RhdGEpXG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBleGVjLCBleGVjU3luYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ25vZGU6b3MnXG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ25vZGU6ZnMnXG5cbmltcG9ydCB7IGxvYWQgYXMgeWFtbExvYWQsIGR1bXAgYXMgeWFtbER1bXAgfSBmcm9tICdqcy15YW1sJ1xuXG5pbXBvcnQge1xuICBhcHBseURlZmF1bHROZXdPcHRpb25zLFxuICB0eXBlIE5ld09wdGlvbnMgYXMgUmF3TmV3T3B0aW9ucyxcbn0gZnJvbSAnLi4vZGVmL25ldy5qcydcbmltcG9ydCB7XG4gIEFWQUlMQUJMRV9UQVJHRVRTLFxuICBkZWJ1Z0ZhY3RvcnksXG4gIERFRkFVTFRfVEFSR0VUUyxcbiAgbWtkaXJBc3luYyxcbiAgcmVhZGRpckFzeW5jLFxuICBzdGF0QXN5bmMsXG4gIHR5cGUgU3VwcG9ydGVkUGFja2FnZU1hbmFnZXIsXG59IGZyb20gJy4uL3V0aWxzL2luZGV4LmpzJ1xuaW1wb3J0IHsgbmFwaUVuZ2luZVJlcXVpcmVtZW50IH0gZnJvbSAnLi4vdXRpbHMvdmVyc2lvbi5qcydcbmltcG9ydCB7IHJlbmFtZVByb2plY3QgfSBmcm9tICcuL3JlbmFtZS5qcydcblxuLy8gVGVtcGxhdGUgaW1wb3J0cyByZW1vdmVkIGFzIHdlJ3JlIG5vdyB1c2luZyBleHRlcm5hbCB0ZW1wbGF0ZXNcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0ZhY3RvcnkoJ25ldycpXG5cbnR5cGUgTmV3T3B0aW9ucyA9IFJlcXVpcmVkPFJhd05ld09wdGlvbnM+XG5cbmNvbnN0IFRFTVBMQVRFX1JFUE9TID0ge1xuICB5YXJuOiAnaHR0cHM6Ly9naXRodWIuY29tL25hcGktcnMvcGFja2FnZS10ZW1wbGF0ZScsXG4gIHBucG06ICdodHRwczovL2dpdGh1Yi5jb20vbmFwaS1ycy9wYWNrYWdlLXRlbXBsYXRlLXBucG0nLFxufSBhcyBjb25zdFxuXG5hc3luYyBmdW5jdGlvbiBjaGVja0dpdENvbW1hbmQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IGNwID0gZXhlYygnZ2l0IC0tdmVyc2lvbicpXG4gICAgICBjcC5vbignZXJyb3InLCAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoZmFsc2UpXG4gICAgICB9KVxuICAgICAgY3Aub24oJ2V4aXQnLCAoY29kZSkgPT4ge1xuICAgICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKGZhbHNlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gICAgcmV0dXJuIHRydWVcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZW5zdXJlQ2FjaGVEaXIoXG4gIHBhY2thZ2VNYW5hZ2VyOiBTdXBwb3J0ZWRQYWNrYWdlTWFuYWdlcixcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNhY2hlRGlyID0gcGF0aC5qb2luKGhvbWVkaXIoKSwgJy5uYXBpLXJzJywgJ3RlbXBsYXRlJywgcGFja2FnZU1hbmFnZXIpXG4gIGF3YWl0IG1rZGlyQXN5bmMoY2FjaGVEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIHJldHVybiBjYWNoZURpclxufVxuXG5hc3luYyBmdW5jdGlvbiBkb3dubG9hZFRlbXBsYXRlKFxuICBwYWNrYWdlTWFuYWdlcjogU3VwcG9ydGVkUGFja2FnZU1hbmFnZXIsXG4gIGNhY2hlRGlyOiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmVwb1VybCA9IFRFTVBMQVRFX1JFUE9TW3BhY2thZ2VNYW5hZ2VyXVxuICBjb25zdCB0ZW1wbGF0ZVBhdGggPSBwYXRoLmpvaW4oY2FjaGVEaXIsICdyZXBvJylcblxuICBpZiAoZXhpc3RzU3luYyh0ZW1wbGF0ZVBhdGgpKSB7XG4gICAgZGVidWcoYFRlbXBsYXRlIGNhY2hlIGZvdW5kIGF0ICR7dGVtcGxhdGVQYXRofSwgdXBkYXRpbmcuLi5gKVxuICAgIHRyeSB7XG4gICAgICAvLyBGZXRjaCBsYXRlc3QgY2hhbmdlcyBhbmQgcmVzZXQgdG8gcmVtb3RlXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNwID0gZXhlYygnZ2l0IGZldGNoIG9yaWdpbicsIHsgY3dkOiB0ZW1wbGF0ZVBhdGggfSlcbiAgICAgICAgY3Aub24oJ2Vycm9yJywgcmVqZWN0KVxuICAgICAgICBjcC5vbignZXhpdCcsIChjb2RlKSA9PiB7XG4gICAgICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIGZldGNoIGxhdGVzdCBjaGFuZ2VzLCBnaXQgcHJvY2VzcyBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICBleGVjU3luYygnZ2l0IHJlc2V0IC0taGFyZCBvcmlnaW4vbWFpbicsIHtcbiAgICAgICAgY3dkOiB0ZW1wbGF0ZVBhdGgsXG4gICAgICAgIHN0ZGlvOiAnaWdub3JlJyxcbiAgICAgIH0pXG4gICAgICBkZWJ1ZygnVGVtcGxhdGUgdXBkYXRlZCBzdWNjZXNzZnVsbHknKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkZWJ1ZyhgRmFpbGVkIHRvIHVwZGF0ZSB0ZW1wbGF0ZTogJHtlcnJvcn1gKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gdXBkYXRlIHRlbXBsYXRlIGZyb20gJHtyZXBvVXJsfTogJHtlcnJvcn1gKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBkZWJ1ZyhgQ2xvbmluZyB0ZW1wbGF0ZSBmcm9tICR7cmVwb1VybH0uLi5gKVxuICAgIHRyeSB7XG4gICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7cmVwb1VybH0gcmVwb2AsIHsgY3dkOiBjYWNoZURpciwgc3RkaW86ICdpbmhlcml0JyB9KVxuICAgICAgZGVidWcoJ1RlbXBsYXRlIGNsb25lZCBzdWNjZXNzZnVsbHknKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjbG9uZSB0ZW1wbGF0ZSBmcm9tICR7cmVwb1VybH06ICR7ZXJyb3J9YClcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY29weURpcmVjdG9yeShcbiAgc3JjOiBzdHJpbmcsXG4gIGRlc3Q6IHN0cmluZyxcbiAgaW5jbHVkZVdhc2lCaW5kaW5nczogYm9vbGVhbixcbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBta2RpckFzeW5jKGRlc3QsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBmcy5yZWFkZGlyKHNyYywgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pXG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgY29uc3Qgc3JjUGF0aCA9IHBhdGguam9pbihzcmMsIGVudHJ5Lm5hbWUpXG4gICAgY29uc3QgZGVzdFBhdGggPSBwYXRoLmpvaW4oZGVzdCwgZW50cnkubmFtZSlcblxuICAgIC8vIFNraXAgLmdpdCBkaXJlY3RvcnlcbiAgICBpZiAoZW50cnkubmFtZSA9PT0gJy5naXQnKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChlbnRyeS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBhd2FpdCBjb3B5RGlyZWN0b3J5KHNyY1BhdGgsIGRlc3RQYXRoLCBpbmNsdWRlV2FzaUJpbmRpbmdzKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXG4gICAgICAgICFpbmNsdWRlV2FzaUJpbmRpbmdzICYmXG4gICAgICAgIChlbnRyeS5uYW1lLmVuZHNXaXRoKCcud2FzaS1icm93c2VyLmpzJykgfHxcbiAgICAgICAgICBlbnRyeS5uYW1lLmVuZHNXaXRoKCcud2FzaS5janMnKSB8fFxuICAgICAgICAgIGVudHJ5Lm5hbWUuZW5kc1dpdGgoJ3dhc2ktd29ya2VyLmJyb3dzZXIubWpzICcpIHx8XG4gICAgICAgICAgZW50cnkubmFtZS5lbmRzV2l0aCgnd2FzaS13b3JrZXIubWpzJykgfHxcbiAgICAgICAgICBlbnRyeS5uYW1lLmVuZHNXaXRoKCdicm93c2VyLmpzJykpXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGF3YWl0IGZzLmNvcHlGaWxlKHNyY1BhdGgsIGRlc3RQYXRoKVxuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBmaWx0ZXJUYXJnZXRzSW5QYWNrYWdlSnNvbihcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgZW5hYmxlZFRhcmdldHM6IHN0cmluZ1tdLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlUGF0aCwgJ3V0Zi04JylcbiAgY29uc3QgcGFja2FnZUpzb24gPSBKU09OLnBhcnNlKGNvbnRlbnQpXG5cbiAgLy8gRmlsdGVyIG5hcGkudGFyZ2V0c1xuICBpZiAocGFja2FnZUpzb24ubmFwaT8udGFyZ2V0cykge1xuICAgIHBhY2thZ2VKc29uLm5hcGkudGFyZ2V0cyA9IHBhY2thZ2VKc29uLm5hcGkudGFyZ2V0cy5maWx0ZXIoXG4gICAgICAodGFyZ2V0OiBzdHJpbmcpID0+IGVuYWJsZWRUYXJnZXRzLmluY2x1ZGVzKHRhcmdldCksXG4gICAgKVxuICB9XG5cbiAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShwYWNrYWdlSnNvbiwgbnVsbCwgMikgKyAnXFxuJylcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmlsdGVyVGFyZ2V0c0luR2l0aHViQWN0aW9ucyhcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgZW5hYmxlZFRhcmdldHM6IHN0cmluZ1tdLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlUGF0aCwgJ3V0Zi04JylcbiAgY29uc3QgeWFtbCA9IHlhbWxMb2FkKGNvbnRlbnQpIGFzIGFueVxuXG4gIGNvbnN0IG1hY09TQW5kV2luZG93c1RhcmdldHMgPSBuZXcgU2V0KFtcbiAgICAneDg2XzY0LXBjLXdpbmRvd3MtbXN2YycsXG4gICAgJ3g4Nl82NC1wYy13aW5kb3dzLWdudScsXG4gICAgJ2FhcmNoNjQtcGMtd2luZG93cy1tc3ZjJyxcbiAgICAneDg2XzY0LWFwcGxlLWRhcndpbicsXG4gIF0pXG5cbiAgY29uc3QgbGludXhUYXJnZXRzID0gbmV3IFNldChbXG4gICAgJ3g4Nl82NC11bmtub3duLWxpbnV4LWdudScsXG4gICAgJ3g4Nl82NC11bmtub3duLWxpbnV4LW11c2wnLFxuICAgICdhYXJjaDY0LXVua25vd24tbGludXgtZ251JyxcbiAgICAnYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2wnLFxuICAgICdhcm12Ny11bmtub3duLWxpbnV4LWdudWVhYmloZicsXG4gICAgJ2FybXY3LXVua25vd24tbGludXgtbXVzbGVhYmloZicsXG4gICAgJ2xvb25nYXJjaDY0LXVua25vd24tbGludXgtZ251JyxcbiAgICAncmlzY3Y2NGdjLXVua25vd24tbGludXgtZ251JyxcbiAgICAncG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUnLFxuICAgICdzMzkweC11bmtub3duLWxpbnV4LWdudScsXG4gICAgJ2FhcmNoNjQtbGludXgtYW5kcm9pZCcsXG4gICAgJ2FybXY3LWxpbnV4LWFuZHJvaWRlYWJpJyxcbiAgXSlcblxuICAvLyBDaGVjayBpZiBhbnkgTGludXggdGFyZ2V0cyBhcmUgZW5hYmxlZFxuICBjb25zdCBoYXNMaW51eFRhcmdldHMgPSBlbmFibGVkVGFyZ2V0cy5zb21lKCh0YXJnZXQpID0+XG4gICAgbGludXhUYXJnZXRzLmhhcyh0YXJnZXQpLFxuICApXG5cbiAgLy8gRmlsdGVyIHRoZSBtYXRyaXggY29uZmlndXJhdGlvbnMgaW4gdGhlIGJ1aWxkIGpvYlxuICBpZiAoeWFtbD8uam9icz8uYnVpbGQ/LnN0cmF0ZWd5Py5tYXRyaXg/LnNldHRpbmdzKSB7XG4gICAgeWFtbC5qb2JzLmJ1aWxkLnN0cmF0ZWd5Lm1hdHJpeC5zZXR0aW5ncyA9XG4gICAgICB5YW1sLmpvYnMuYnVpbGQuc3RyYXRlZ3kubWF0cml4LnNldHRpbmdzLmZpbHRlcigoc2V0dGluZzogYW55KSA9PiB7XG4gICAgICAgIGlmIChzZXR0aW5nLnRhcmdldCkge1xuICAgICAgICAgIHJldHVybiBlbmFibGVkVGFyZ2V0cy5pbmNsdWRlcyhzZXR0aW5nLnRhcmdldClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSlcbiAgfVxuXG4gIGNvbnN0IGpvYnNUb1JlbW92ZTogc3RyaW5nW10gPSBbXVxuXG4gIGlmIChlbmFibGVkVGFyZ2V0cy5ldmVyeSgodGFyZ2V0KSA9PiAhbWFjT1NBbmRXaW5kb3dzVGFyZ2V0cy5oYXModGFyZ2V0KSkpIHtcbiAgICBqb2JzVG9SZW1vdmUucHVzaCgndGVzdC1tYWNPUy13aW5kb3dzLWJpbmRpbmcnKVxuICB9IGVsc2Uge1xuICAgIC8vIEZpbHRlciB0aGUgbWF0cml4IGNvbmZpZ3VyYXRpb25zIGluIHRoZSB0ZXN0LW1hY09TLXdpbmRvd3MtYmluZGluZyBqb2JcbiAgICBpZiAoXG4gICAgICB5YW1sPy5qb2JzPy5bJ3Rlc3QtbWFjT1Mtd2luZG93cy1iaW5kaW5nJ10/LnN0cmF0ZWd5Py5tYXRyaXg/LnNldHRpbmdzXG4gICAgKSB7XG4gICAgICB5YW1sLmpvYnNbJ3Rlc3QtbWFjT1Mtd2luZG93cy1iaW5kaW5nJ10uc3RyYXRlZ3kubWF0cml4LnNldHRpbmdzID1cbiAgICAgICAgeWFtbC5qb2JzWyd0ZXN0LW1hY09TLXdpbmRvd3MtYmluZGluZyddLnN0cmF0ZWd5Lm1hdHJpeC5zZXR0aW5ncy5maWx0ZXIoXG4gICAgICAgICAgKHNldHRpbmc6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHNldHRpbmcudGFyZ2V0KSB7XG4gICAgICAgICAgICAgIHJldHVybiBlbmFibGVkVGFyZ2V0cy5pbmNsdWRlcyhzZXR0aW5nLnRhcmdldClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIG5vIExpbnV4IHRhcmdldHMgYXJlIGVuYWJsZWQsIHJlbW92ZSBMaW51eC1zcGVjaWZpYyBqb2JzXG4gIGlmICghaGFzTGludXhUYXJnZXRzKSB7XG4gICAgLy8gUmVtb3ZlIHRlc3QtbGludXgtYmluZGluZyBqb2JcbiAgICBpZiAoeWFtbD8uam9icz8uWyd0ZXN0LWxpbnV4LWJpbmRpbmcnXSkge1xuICAgICAgam9ic1RvUmVtb3ZlLnB1c2goJ3Rlc3QtbGludXgtYmluZGluZycpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEZpbHRlciB0aGUgbWF0cml4IGNvbmZpZ3VyYXRpb25zIGluIHRoZSB0ZXN0LWxpbnV4LXg2NC1nbnUtYmluZGluZyBqb2JcbiAgICBpZiAoeWFtbD8uam9icz8uWyd0ZXN0LWxpbnV4LWJpbmRpbmcnXT8uc3RyYXRlZ3k/Lm1hdHJpeD8udGFyZ2V0KSB7XG4gICAgICB5YW1sLmpvYnNbJ3Rlc3QtbGludXgtYmluZGluZyddLnN0cmF0ZWd5Lm1hdHJpeC50YXJnZXQgPSB5YW1sLmpvYnNbXG4gICAgICAgICd0ZXN0LWxpbnV4LWJpbmRpbmcnXG4gICAgICBdLnN0cmF0ZWd5Lm1hdHJpeC50YXJnZXQuZmlsdGVyKCh0YXJnZXQ6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgcmV0dXJuIGVuYWJsZWRUYXJnZXRzLmluY2x1ZGVzKHRhcmdldClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWVuYWJsZWRUYXJnZXRzLmluY2x1ZGVzKCd3YXNtMzItd2FzaXAxLXRocmVhZHMnKSkge1xuICAgIGpvYnNUb1JlbW92ZS5wdXNoKCd0ZXN0LXdhc2knKVxuICB9XG5cbiAgaWYgKCFlbmFibGVkVGFyZ2V0cy5pbmNsdWRlcygneDg2XzY0LXVua25vd24tZnJlZWJzZCcpKSB7XG4gICAgam9ic1RvUmVtb3ZlLnB1c2goJ2J1aWxkLWZyZWVic2QnKVxuICB9XG5cbiAgLy8gRmlsdGVyIG90aGVyIHRlc3Qgam9icyBiYXNlZCBvbiB0YXJnZXRcbiAgZm9yIChjb25zdCBbam9iTmFtZSwgam9iQ29uZmlnXSBvZiBPYmplY3QuZW50cmllcyh5YW1sLmpvYnMgfHwge30pKSB7XG4gICAgaWYgKFxuICAgICAgam9iTmFtZS5zdGFydHNXaXRoKCd0ZXN0LScpICYmXG4gICAgICBqb2JOYW1lICE9PSAndGVzdC1tYWNPUy13aW5kb3dzLWJpbmRpbmcnICYmXG4gICAgICBqb2JOYW1lICE9PSAndGVzdC1saW51eC14NjQtZ251LWJpbmRpbmcnXG4gICAgKSB7XG4gICAgICAvLyBFeHRyYWN0IHRhcmdldCBmcm9tIGpvYiBuYW1lIG9yIGNvbmZpZ1xuICAgICAgY29uc3Qgam9iID0gam9iQ29uZmlnIGFzIGFueVxuICAgICAgaWYgKGpvYi5zdHJhdGVneT8ubWF0cml4Py5zZXR0aW5ncz8uWzBdPy50YXJnZXQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gam9iLnN0cmF0ZWd5Lm1hdHJpeC5zZXR0aW5nc1swXS50YXJnZXRcbiAgICAgICAgaWYgKCFlbmFibGVkVGFyZ2V0cy5pbmNsdWRlcyh0YXJnZXQpKSB7XG4gICAgICAgICAgam9ic1RvUmVtb3ZlLnB1c2goam9iTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBqb2JzIGZvciBkaXNhYmxlZCB0YXJnZXRzXG4gIGZvciAoY29uc3Qgam9iTmFtZSBvZiBqb2JzVG9SZW1vdmUpIHtcbiAgICBkZWxldGUgeWFtbC5qb2JzW2pvYk5hbWVdXG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh5YW1sLmpvYnM/LnB1Ymxpc2g/Lm5lZWRzKSkge1xuICAgIHlhbWwuam9icy5wdWJsaXNoLm5lZWRzID0geWFtbC5qb2JzLnB1Ymxpc2gubmVlZHMuZmlsdGVyKFxuICAgICAgKG5lZWQ6IHN0cmluZykgPT4gIWpvYnNUb1JlbW92ZS5pbmNsdWRlcyhuZWVkKSxcbiAgICApXG4gIH1cblxuICAvLyBXcml0ZSBiYWNrIHRoZSBmaWx0ZXJlZCBZQU1MXG4gIGNvbnN0IHVwZGF0ZWRZYW1sID0geWFtbER1bXAoeWFtbCwge1xuICAgIGxpbmVXaWR0aDogLTEsXG4gICAgbm9SZWZzOiB0cnVlLFxuICAgIHNvcnRLZXlzOiBmYWxzZSxcbiAgfSlcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGVQYXRoLCB1cGRhdGVkWWFtbClcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc09wdGlvbnMob3B0aW9uczogUmF3TmV3T3B0aW9ucykge1xuICBkZWJ1ZygnUHJvY2Vzc2luZyBvcHRpb25zLi4uJylcbiAgaWYgKCFvcHRpb25zLnBhdGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBwcm92aWRlIHRoZSBwYXRoIGFzIHRoZSBhcmd1bWVudCcpXG4gIH1cbiAgb3B0aW9ucy5wYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIG9wdGlvbnMucGF0aClcbiAgZGVidWcoYFJlc29sdmVkIHRhcmdldCBwYXRoIHRvOiAke29wdGlvbnMucGF0aH1gKVxuXG4gIGlmICghb3B0aW9ucy5uYW1lKSB7XG4gICAgb3B0aW9ucy5uYW1lID0gcGF0aC5wYXJzZShvcHRpb25zLnBhdGgpLmJhc2VcbiAgICBkZWJ1ZyhgTm8gcHJvamVjdCBuYW1lIHByb3ZpZGVkLCBmaXggaXQgdG8gZGlyIG5hbWU6ICR7b3B0aW9ucy5uYW1lfWApXG4gIH1cblxuICBpZiAoIW9wdGlvbnMudGFyZ2V0cz8ubGVuZ3RoKSB7XG4gICAgaWYgKG9wdGlvbnMuZW5hYmxlQWxsVGFyZ2V0cykge1xuICAgICAgb3B0aW9ucy50YXJnZXRzID0gQVZBSUxBQkxFX1RBUkdFVFMuY29uY2F0KClcbiAgICAgIGRlYnVnKCdFbmFibGUgYWxsIHRhcmdldHMnKVxuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5lbmFibGVEZWZhdWx0VGFyZ2V0cykge1xuICAgICAgb3B0aW9ucy50YXJnZXRzID0gREVGQVVMVF9UQVJHRVRTLmNvbmNhdCgpXG4gICAgICBkZWJ1ZygnRW5hYmxlIGRlZmF1bHQgdGFyZ2V0cycpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXQgbGVhc3Qgb25lIHRhcmdldCBtdXN0IGJlIGVuYWJsZWQnKVxuICAgIH1cbiAgfVxuICBpZiAoXG4gICAgb3B0aW9ucy50YXJnZXRzLnNvbWUoKHRhcmdldCkgPT4gdGFyZ2V0ID09PSAnd2FzbTMyLXdhc2ktcHJldmlldzEtdGhyZWFkcycpXG4gICkge1xuICAgIGNvbnN0IG91dCA9IGV4ZWNTeW5jKGBydXN0dXAgdGFyZ2V0IGxpc3RgLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgIH0pXG4gICAgaWYgKG91dC5pbmNsdWRlcygnd2FzbTMyLXdhc2lwMS10aHJlYWRzJykpIHtcbiAgICAgIG9wdGlvbnMudGFyZ2V0cyA9IG9wdGlvbnMudGFyZ2V0cy5tYXAoKHRhcmdldCkgPT5cbiAgICAgICAgdGFyZ2V0ID09PSAnd2FzbTMyLXdhc2ktcHJldmlldzEtdGhyZWFkcydcbiAgICAgICAgICA/ICd3YXNtMzItd2FzaXAxLXRocmVhZHMnXG4gICAgICAgICAgOiB0YXJnZXQsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFwcGx5RGVmYXVsdE5ld09wdGlvbnMob3B0aW9ucykgYXMgTmV3T3B0aW9uc1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbmV3UHJvamVjdCh1c2VyT3B0aW9uczogUmF3TmV3T3B0aW9ucykge1xuICBkZWJ1ZygnV2lsbCBjcmVhdGUgbmFwaS1ycyBwcm9qZWN0IHdpdGggZ2l2ZW4gb3B0aW9uczonKVxuICBkZWJ1Zyh1c2VyT3B0aW9ucylcblxuICBjb25zdCBvcHRpb25zID0gcHJvY2Vzc09wdGlvbnModXNlck9wdGlvbnMpXG5cbiAgZGVidWcoJ1RhcmdldHMgdG8gYmUgZW5hYmxlZDonKVxuICBkZWJ1ZyhvcHRpb25zLnRhcmdldHMpXG5cbiAgLy8gQ2hlY2sgaWYgZ2l0IGlzIGF2YWlsYWJsZVxuICBpZiAoIShhd2FpdCBjaGVja0dpdENvbW1hbmQoKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnR2l0IGlzIG5vdCBpbnN0YWxsZWQgb3Igbm90IGF2YWlsYWJsZSBpbiBQQVRILiBQbGVhc2UgaW5zdGFsbCBHaXQgdG8gY29udGludWUuJyxcbiAgICApXG4gIH1cblxuICBjb25zdCBwYWNrYWdlTWFuYWdlciA9IG9wdGlvbnMucGFja2FnZU1hbmFnZXIgYXMgU3VwcG9ydGVkUGFja2FnZU1hbmFnZXJcblxuICAvLyBFbnN1cmUgdGFyZ2V0IGRpcmVjdG9yeSBleGlzdHMgYW5kIGlzIGVtcHR5XG4gIGF3YWl0IGVuc3VyZVBhdGgob3B0aW9ucy5wYXRoLCBvcHRpb25zLmRyeVJ1bilcblxuICBpZiAoIW9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIERvd25sb2FkIG9yIHVwZGF0ZSB0ZW1wbGF0ZVxuICAgICAgY29uc3QgY2FjaGVEaXIgPSBhd2FpdCBlbnN1cmVDYWNoZURpcihwYWNrYWdlTWFuYWdlcilcbiAgICAgIGF3YWl0IGRvd25sb2FkVGVtcGxhdGUocGFja2FnZU1hbmFnZXIsIGNhY2hlRGlyKVxuXG4gICAgICAvLyBDb3B5IHRlbXBsYXRlIGZpbGVzIHRvIHRhcmdldCBkaXJlY3RvcnlcbiAgICAgIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHBhdGguam9pbihjYWNoZURpciwgJ3JlcG8nKVxuICAgICAgYXdhaXQgY29weURpcmVjdG9yeShcbiAgICAgICAgdGVtcGxhdGVQYXRoLFxuICAgICAgICBvcHRpb25zLnBhdGgsXG4gICAgICAgIG9wdGlvbnMudGFyZ2V0cy5pbmNsdWRlcygnd2FzbTMyLXdhc2lwMS10aHJlYWRzJyksXG4gICAgICApXG5cbiAgICAgIC8vIFJlbmFtZSBwcm9qZWN0IHVzaW5nIHRoZSByZW5hbWUgQVBJXG4gICAgICBhd2FpdCByZW5hbWVQcm9qZWN0KHtcbiAgICAgICAgY3dkOiBvcHRpb25zLnBhdGgsXG4gICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgICAgYmluYXJ5TmFtZTogZ2V0QmluYXJ5TmFtZShvcHRpb25zLm5hbWUpLFxuICAgICAgfSlcblxuICAgICAgLy8gRmlsdGVyIHRhcmdldHMgaW4gcGFja2FnZS5qc29uXG4gICAgICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBwYXRoLmpvaW4ob3B0aW9ucy5wYXRoLCAncGFja2FnZS5qc29uJylcbiAgICAgIGlmIChleGlzdHNTeW5jKHBhY2thZ2VKc29uUGF0aCkpIHtcbiAgICAgICAgYXdhaXQgZmlsdGVyVGFyZ2V0c0luUGFja2FnZUpzb24ocGFja2FnZUpzb25QYXRoLCBvcHRpb25zLnRhcmdldHMpXG4gICAgICB9XG5cbiAgICAgIC8vIEZpbHRlciB0YXJnZXRzIGluIEdpdEh1YiBBY3Rpb25zIENJXG4gICAgICBjb25zdCBjaVBhdGggPSBwYXRoLmpvaW4ob3B0aW9ucy5wYXRoLCAnLmdpdGh1YicsICd3b3JrZmxvd3MnLCAnQ0kueW1sJylcbiAgICAgIGlmIChleGlzdHNTeW5jKGNpUGF0aCkgJiYgb3B0aW9ucy5lbmFibGVHaXRodWJBY3Rpb25zKSB7XG4gICAgICAgIGF3YWl0IGZpbHRlclRhcmdldHNJbkdpdGh1YkFjdGlvbnMoY2lQYXRoLCBvcHRpb25zLnRhcmdldHMpXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAhb3B0aW9ucy5lbmFibGVHaXRodWJBY3Rpb25zICYmXG4gICAgICAgIGV4aXN0c1N5bmMocGF0aC5qb2luKG9wdGlvbnMucGF0aCwgJy5naXRodWInKSlcbiAgICAgICkge1xuICAgICAgICAvLyBSZW1vdmUgLmdpdGh1YiBkaXJlY3RvcnkgaWYgR2l0SHViIEFjdGlvbnMgaXMgbm90IGVuYWJsZWRcbiAgICAgICAgYXdhaXQgZnMucm0ocGF0aC5qb2luKG9wdGlvbnMucGF0aCwgJy5naXRodWInKSwge1xuICAgICAgICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgICAgICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgLy8gVXBkYXRlIHBhY2thZ2UuanNvbiB3aXRoIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnNcbiAgICAgIGNvbnN0IHBrZ0pzb25Db250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUocGFja2FnZUpzb25QYXRoLCAndXRmLTgnKVxuICAgICAgY29uc3QgcGtnSnNvbiA9IEpTT04ucGFyc2UocGtnSnNvbkNvbnRlbnQpXG5cbiAgICAgIC8vIFVwZGF0ZSBlbmdpbmUgcmVxdWlyZW1lbnRcbiAgICAgIGlmICghcGtnSnNvbi5lbmdpbmVzKSB7XG4gICAgICAgIHBrZ0pzb24uZW5naW5lcyA9IHt9XG4gICAgICB9XG4gICAgICBwa2dKc29uLmVuZ2luZXMubm9kZSA9IG5hcGlFbmdpbmVSZXF1aXJlbWVudChvcHRpb25zLm1pbk5vZGVBcGlWZXJzaW9uKVxuXG4gICAgICAvLyBVcGRhdGUgbGljZW5zZSBpZiBkaWZmZXJlbnQgZnJvbSB0ZW1wbGF0ZVxuICAgICAgaWYgKG9wdGlvbnMubGljZW5zZSAmJiBwa2dKc29uLmxpY2Vuc2UgIT09IG9wdGlvbnMubGljZW5zZSkge1xuICAgICAgICBwa2dKc29uLmxpY2Vuc2UgPSBvcHRpb25zLmxpY2Vuc2VcbiAgICAgIH1cblxuICAgICAgLy8gVXBkYXRlIHRlc3QgZnJhbWV3b3JrIGlmIG5lZWRlZFxuICAgICAgaWYgKG9wdGlvbnMudGVzdEZyYW1ld29yayAhPT0gJ2F2YScpIHtcbiAgICAgICAgLy8gVGhpcyB3b3VsZCByZXF1aXJlIG1vcmUgY29tcGxleCBsb2dpYyB0byB1cGRhdGUgdGVzdCBzY3JpcHRzIGFuZCBkZXBlbmRlbmNpZXNcbiAgICAgICAgZGVidWcoXG4gICAgICAgICAgYFRlc3QgZnJhbWV3b3JrICR7b3B0aW9ucy50ZXN0RnJhbWV3b3JrfSByZXF1ZXN0ZWQgYnV0IG5vdCB5ZXQgaW1wbGVtZW50ZWRgLFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShcbiAgICAgICAgcGFja2FnZUpzb25QYXRoLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShwa2dKc29uLCBudWxsLCAyKSArICdcXG4nLFxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgcHJvamVjdDogJHtlcnJvcn1gKVxuICAgIH1cbiAgfVxuXG4gIGRlYnVnKGBQcm9qZWN0IGNyZWF0ZWQgYXQ6ICR7b3B0aW9ucy5wYXRofWApXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZVBhdGgocGF0aDogc3RyaW5nLCBkcnlSdW4gPSBmYWxzZSkge1xuICBjb25zdCBzdGF0ID0gYXdhaXQgc3RhdEFzeW5jKHBhdGgsIHt9KS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpXG5cbiAgLy8gZmlsZSBkZXNjcmlwdG9yIGV4aXN0c1xuICBpZiAoc3RhdCkge1xuICAgIGlmIChzdGF0LmlzRmlsZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBQYXRoICR7cGF0aH0gZm9yIGNyZWF0aW5nIG5ldyBuYXBpLXJzIHByb2plY3QgYWxyZWFkeSBleGlzdHMgYW5kIGl0J3Mgbm90IGEgZGlyZWN0b3J5LmAsXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChzdGF0LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgcmVhZGRpckFzeW5jKHBhdGgpXG4gICAgICBpZiAoZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgUGF0aCAke3BhdGh9IGZvciBjcmVhdGluZyBuZXcgbmFwaS1ycyBwcm9qZWN0IGFscmVhZHkgZXhpc3RzIGFuZCBpdCdzIG5vdCBlbXB0eS5gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFkcnlSdW4pIHtcbiAgICB0cnkge1xuICAgICAgZGVidWcoYFRyeSB0byBjcmVhdGUgdGFyZ2V0IGRpcmVjdG9yeTogJHtwYXRofWApXG4gICAgICBpZiAoIWRyeVJ1bikge1xuICAgICAgICBhd2FpdCBta2RpckFzeW5jKHBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIHRhcmdldCBkaXJlY3Rvcnk6ICR7cGF0aH1gLCB7XG4gICAgICAgIGNhdXNlOiBlLFxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QmluYXJ5TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbmFtZS5zcGxpdCgnLycpLnBvcCgpIVxufVxuXG5leHBvcnQgdHlwZSB7IE5ld09wdGlvbnMgfVxuIiwiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBjb2RlZ2VuL2luZGV4LnRzXG4vLyBEbyBub3QgZWRpdCB0aGlzIGZpbGUgbWFudWFsbHlcbmltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NsaXBhbmlvbidcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VQcmVQdWJsaXNoQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBzdGF0aWMgcGF0aHMgPSBbWydwcmUtcHVibGlzaCddLCBbJ3ByZXB1Ymxpc2gnXV1cblxuICBzdGF0aWMgdXNhZ2UgPSBDb21tYW5kLlVzYWdlKHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdVcGRhdGUgcGFja2FnZS5qc29uIGFuZCBjb3B5IGFkZG9ucyBpbnRvIHBlciBwbGF0Zm9ybSBwYWNrYWdlcycsXG4gIH0pXG5cbiAgY3dkID0gT3B0aW9uLlN0cmluZygnLS1jd2QnLCBwcm9jZXNzLmN3ZCgpLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoJyxcbiAgfSlcblxuICBjb25maWdQYXRoPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1jb25maWctcGF0aCwtYycsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGUnLFxuICB9KVxuXG4gIHBhY2thZ2VKc29uUGF0aCA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZS1qc29uLXBhdGgnLCAncGFja2FnZS5qc29uJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgcGFja2FnZS5qc29uYCcsXG4gIH0pXG5cbiAgbnBtRGlyID0gT3B0aW9uLlN0cmluZygnLS1ucG0tZGlyLC1wJywgJ25wbScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dCcsXG4gIH0pXG5cbiAgdGFnU3R5bGUgPSBPcHRpb24uU3RyaW5nKCctLXRhZy1zdHlsZSwtLXRhZ3N0eWxlLC10JywgJ2xlcm5hJywge1xuICAgIGRlc2NyaXB0aW9uOiAnZ2l0IHRhZyBzdHlsZSwgYG5wbWAgb3IgYGxlcm5hYCcsXG4gIH0pXG5cbiAgZ2hSZWxlYXNlID0gT3B0aW9uLkJvb2xlYW4oJy0tZ2gtcmVsZWFzZScsIHRydWUsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgY3JlYXRlIEdpdEh1YiByZWxlYXNlJyxcbiAgfSlcblxuICBnaFJlbGVhc2VOYW1lPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1naC1yZWxlYXNlLW5hbWUnLCB7XG4gICAgZGVzY3JpcHRpb246ICdHaXRIdWIgcmVsZWFzZSBuYW1lJyxcbiAgfSlcblxuICBnaFJlbGVhc2VJZD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tZ2gtcmVsZWFzZS1pZCcsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0V4aXN0aW5nIEdpdEh1YiByZWxlYXNlIGlkJyxcbiAgfSlcblxuICBza2lwT3B0aW9uYWxQdWJsaXNoID0gT3B0aW9uLkJvb2xlYW4oJy0tc2tpcC1vcHRpb25hbC1wdWJsaXNoJywgZmFsc2UsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgc2tpcCBvcHRpb25hbERlcGVuZGVuY2llcyBwYWNrYWdlcyBwdWJsaXNoJyxcbiAgfSlcblxuICBkcnlSdW4gPSBPcHRpb24uQm9vbGVhbignLS1kcnktcnVuJywgZmFsc2UsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0RyeSBydW4gd2l0aG91dCB0b3VjaGluZyBmaWxlIHN5c3RlbScsXG4gIH0pXG5cbiAgZ2V0T3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3dkOiB0aGlzLmN3ZCxcbiAgICAgIGNvbmZpZ1BhdGg6IHRoaXMuY29uZmlnUGF0aCxcbiAgICAgIHBhY2thZ2VKc29uUGF0aDogdGhpcy5wYWNrYWdlSnNvblBhdGgsXG4gICAgICBucG1EaXI6IHRoaXMubnBtRGlyLFxuICAgICAgdGFnU3R5bGU6IHRoaXMudGFnU3R5bGUsXG4gICAgICBnaFJlbGVhc2U6IHRoaXMuZ2hSZWxlYXNlLFxuICAgICAgZ2hSZWxlYXNlTmFtZTogdGhpcy5naFJlbGVhc2VOYW1lLFxuICAgICAgZ2hSZWxlYXNlSWQ6IHRoaXMuZ2hSZWxlYXNlSWQsXG4gICAgICBza2lwT3B0aW9uYWxQdWJsaXNoOiB0aGlzLnNraXBPcHRpb25hbFB1Ymxpc2gsXG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFVwZGF0ZSBwYWNrYWdlLmpzb24gYW5kIGNvcHkgYWRkb25zIGludG8gcGVyIHBsYXRmb3JtIHBhY2thZ2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlUHVibGlzaE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoXG4gICAqXG4gICAqIEBkZWZhdWx0IHByb2Nlc3MuY3dkKClcbiAgICovXG4gIGN3ZD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byBgbmFwaWAgY29uZmlnIGpzb24gZmlsZVxuICAgKi9cbiAgY29uZmlnUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byBgcGFja2FnZS5qc29uYFxuICAgKlxuICAgKiBAZGVmYXVsdCAncGFja2FnZS5qc29uJ1xuICAgKi9cbiAgcGFja2FnZUpzb25QYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIG5wbSBwYWNrYWdlcyBwdXRcbiAgICpcbiAgICogQGRlZmF1bHQgJ25wbSdcbiAgICovXG4gIG5wbURpcj86IHN0cmluZ1xuICAvKipcbiAgICogZ2l0IHRhZyBzdHlsZSwgYG5wbWAgb3IgYGxlcm5hYFxuICAgKlxuICAgKiBAZGVmYXVsdCAnbGVybmEnXG4gICAqL1xuICB0YWdTdHlsZT86ICducG0nIHwgJ2xlcm5hJ1xuICAvKipcbiAgICogV2hldGhlciBjcmVhdGUgR2l0SHViIHJlbGVhc2VcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZ2hSZWxlYXNlPzogYm9vbGVhblxuICAvKipcbiAgICogR2l0SHViIHJlbGVhc2UgbmFtZVxuICAgKi9cbiAgZ2hSZWxlYXNlTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogRXhpc3RpbmcgR2l0SHViIHJlbGVhc2UgaWRcbiAgICovXG4gIGdoUmVsZWFzZUlkPzogc3RyaW5nXG4gIC8qKlxuICAgKiBXaGV0aGVyIHNraXAgb3B0aW9uYWxEZXBlbmRlbmNpZXMgcGFja2FnZXMgcHVibGlzaFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2tpcE9wdGlvbmFsUHVibGlzaD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIERyeSBydW4gd2l0aG91dCB0b3VjaGluZyBmaWxlIHN5c3RlbVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhblxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZWZhdWx0UHJlUHVibGlzaE9wdGlvbnMob3B0aW9uczogUHJlUHVibGlzaE9wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgcGFja2FnZUpzb25QYXRoOiAncGFja2FnZS5qc29uJyxcbiAgICBucG1EaXI6ICducG0nLFxuICAgIHRhZ1N0eWxlOiAnbGVybmEnLFxuICAgIGdoUmVsZWFzZTogdHJ1ZSxcbiAgICBza2lwT3B0aW9uYWxQdWJsaXNoOiBmYWxzZSxcbiAgICBkcnlSdW46IGZhbHNlLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cbn1cbiIsIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgY29kZWdlbi9pbmRleC50c1xuLy8gRG8gbm90IGVkaXQgdGhpcyBmaWxlIG1hbnVhbGx5XG5pbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tICdjbGlwYW5pb24nXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlVmVyc2lvbkNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW1sndmVyc2lvbiddXVxuXG4gIHN0YXRpYyB1c2FnZSA9IENvbW1hbmQuVXNhZ2Uoe1xuICAgIGRlc2NyaXB0aW9uOiAnVXBkYXRlIHZlcnNpb24gaW4gY3JlYXRlZCBucG0gcGFja2FnZXMnLFxuICB9KVxuXG4gIGN3ZCA9IE9wdGlvbi5TdHJpbmcoJy0tY3dkJywgcHJvY2Vzcy5jd2QoKSwge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aCcsXG4gIH0pXG5cbiAgY29uZmlnUGF0aD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tY29uZmlnLXBhdGgsLWMnLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlJyxcbiAgfSlcblxuICBwYWNrYWdlSnNvblBhdGggPSBPcHRpb24uU3RyaW5nKCctLXBhY2thZ2UtanNvbi1wYXRoJywgJ3BhY2thZ2UuanNvbicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYHBhY2thZ2UuanNvbmAnLFxuICB9KVxuXG4gIG5wbURpciA9IE9wdGlvbi5TdHJpbmcoJy0tbnBtLWRpcicsICducG0nLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIG5wbSBwYWNrYWdlcyBwdXQnLFxuICB9KVxuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN3ZDogdGhpcy5jd2QsXG4gICAgICBjb25maWdQYXRoOiB0aGlzLmNvbmZpZ1BhdGgsXG4gICAgICBwYWNrYWdlSnNvblBhdGg6IHRoaXMucGFja2FnZUpzb25QYXRoLFxuICAgICAgbnBtRGlyOiB0aGlzLm5wbURpcixcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBVcGRhdGUgdmVyc2lvbiBpbiBjcmVhdGVkIG5wbSBwYWNrYWdlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICBjd2Q/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICpcbiAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICovXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBucG0gcGFja2FnZXMgcHV0XG4gICAqXG4gICAqIEBkZWZhdWx0ICducG0nXG4gICAqL1xuICBucG1EaXI/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGVmYXVsdFZlcnNpb25PcHRpb25zKG9wdGlvbnM6IFZlcnNpb25PcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIHBhY2thZ2VKc29uUGF0aDogJ3BhY2thZ2UuanNvbicsXG4gICAgbnBtRGlyOiAnbnBtJyxcbiAgICAuLi5vcHRpb25zLFxuICB9XG59XG4iLCJpbXBvcnQgeyBqb2luLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5pbXBvcnQge1xuICBhcHBseURlZmF1bHRWZXJzaW9uT3B0aW9ucyxcbiAgdHlwZSBWZXJzaW9uT3B0aW9ucyxcbn0gZnJvbSAnLi4vZGVmL3ZlcnNpb24uanMnXG5pbXBvcnQge1xuICByZWFkTmFwaUNvbmZpZyxcbiAgZGVidWdGYWN0b3J5LFxuICB1cGRhdGVQYWNrYWdlSnNvbixcbn0gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnXG5cbmNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCd2ZXJzaW9uJylcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcnNpb24odXNlck9wdGlvbnM6IFZlcnNpb25PcHRpb25zKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBhcHBseURlZmF1bHRWZXJzaW9uT3B0aW9ucyh1c2VyT3B0aW9ucylcbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcmVzb2x2ZShvcHRpb25zLmN3ZCwgb3B0aW9ucy5wYWNrYWdlSnNvblBhdGgpXG5cbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZE5hcGlDb25maWcoXG4gICAgcGFja2FnZUpzb25QYXRoLFxuICAgIG9wdGlvbnMuY29uZmlnUGF0aCA/IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMuY29uZmlnUGF0aCkgOiB1bmRlZmluZWQsXG4gIClcblxuICBmb3IgKGNvbnN0IHRhcmdldCBvZiBjb25maWcudGFyZ2V0cykge1xuICAgIGNvbnN0IHBrZ0RpciA9IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMubnBtRGlyLCB0YXJnZXQucGxhdGZvcm1BcmNoQUJJKVxuXG4gICAgZGVidWcoYFVwZGF0ZSB2ZXJzaW9uIHRvICVpIGluIFslaV1gLCBjb25maWcucGFja2FnZUpzb24udmVyc2lvbiwgcGtnRGlyKVxuICAgIGF3YWl0IHVwZGF0ZVBhY2thZ2VKc29uKGpvaW4ocGtnRGlyLCAncGFja2FnZS5qc29uJyksIHtcbiAgICAgIHZlcnNpb246IGNvbmZpZy5wYWNrYWdlSnNvbi52ZXJzaW9uLFxuICAgIH0pXG4gIH1cbn1cbiIsImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgZXhpc3RzU3luYywgc3RhdFN5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcblxuaW1wb3J0IHsgT2N0b2tpdCB9IGZyb20gJ0BvY3Rva2l0L3Jlc3QnXG5cbmltcG9ydCB7XG4gIGFwcGx5RGVmYXVsdFByZVB1Ymxpc2hPcHRpb25zLFxuICB0eXBlIFByZVB1Ymxpc2hPcHRpb25zLFxufSBmcm9tICcuLi9kZWYvcHJlLXB1Ymxpc2guanMnXG5pbXBvcnQge1xuICByZWFkRmlsZUFzeW5jLFxuICByZWFkTmFwaUNvbmZpZyxcbiAgZGVidWdGYWN0b3J5LFxuICB1cGRhdGVQYWNrYWdlSnNvbixcbn0gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnXG5cbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuL3ZlcnNpb24uanMnXG5cbmNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCdwcmUtcHVibGlzaCcpXG5cbmludGVyZmFjZSBQYWNrYWdlSW5mbyB7XG4gIG5hbWU6IHN0cmluZ1xuICB2ZXJzaW9uOiBzdHJpbmdcbiAgdGFnOiBzdHJpbmdcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZVB1Ymxpc2godXNlck9wdGlvbnM6IFByZVB1Ymxpc2hPcHRpb25zKSB7XG4gIGRlYnVnKCdSZWNlaXZlIHByZS1wdWJsaXNoIG9wdGlvbnM6JylcbiAgZGVidWcoJyAgJU8nLCB1c2VyT3B0aW9ucylcblxuICBjb25zdCBvcHRpb25zID0gYXBwbHlEZWZhdWx0UHJlUHVibGlzaE9wdGlvbnModXNlck9wdGlvbnMpXG5cbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcmVzb2x2ZShvcHRpb25zLmN3ZCwgb3B0aW9ucy5wYWNrYWdlSnNvblBhdGgpXG5cbiAgY29uc3QgeyBwYWNrYWdlSnNvbiwgdGFyZ2V0cywgcGFja2FnZU5hbWUsIGJpbmFyeU5hbWUsIG5wbUNsaWVudCB9ID1cbiAgICBhd2FpdCByZWFkTmFwaUNvbmZpZyhcbiAgICAgIHBhY2thZ2VKc29uUGF0aCxcbiAgICAgIG9wdGlvbnMuY29uZmlnUGF0aCA/IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMuY29uZmlnUGF0aCkgOiB1bmRlZmluZWQsXG4gICAgKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUdoUmVsZWFzZShwYWNrYWdlTmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIW9wdGlvbnMuZ2hSZWxlYXNlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvd25lcjogbnVsbCxcbiAgICAgICAgcmVwbzogbnVsbCxcbiAgICAgICAgcGtnSW5mbzogeyBuYW1lOiBudWxsLCB2ZXJzaW9uOiBudWxsLCB0YWc6IG51bGwgfSxcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgeyByZXBvLCBvd25lciwgcGtnSW5mbywgb2N0b2tpdCB9ID0gZ2V0UmVwb0luZm8ocGFja2FnZU5hbWUsIHZlcnNpb24pXG5cbiAgICBpZiAoIXJlcG8gfHwgIW93bmVyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvd25lcjogbnVsbCxcbiAgICAgICAgcmVwbzogbnVsbCxcbiAgICAgICAgcGtnSW5mbzogeyBuYW1lOiBudWxsLCB2ZXJzaW9uOiBudWxsLCB0YWc6IG51bGwgfSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBvY3Rva2l0LnJlcG9zLmNyZWF0ZVJlbGVhc2Uoe1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIHJlcG8sXG4gICAgICAgICAgdGFnX25hbWU6IHBrZ0luZm8udGFnLFxuICAgICAgICAgIG5hbWU6IG9wdGlvbnMuZ2hSZWxlYXNlTmFtZSxcbiAgICAgICAgICBwcmVyZWxlYXNlOlxuICAgICAgICAgICAgdmVyc2lvbi5pbmNsdWRlcygnYWxwaGEnKSB8fFxuICAgICAgICAgICAgdmVyc2lvbi5pbmNsdWRlcygnYmV0YScpIHx8XG4gICAgICAgICAgICB2ZXJzaW9uLmluY2x1ZGVzKCdyYycpLFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBkZWJ1ZyhcbiAgICAgICAgICBgUGFyYW1zOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgeyBvd25lciwgcmVwbywgdGFnX25hbWU6IHBrZ0luZm8udGFnIH0sXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgMixcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgICAgY29uc29sZS5lcnJvcihlKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBvd25lciwgcmVwbywgcGtnSW5mbywgb2N0b2tpdCB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXRSZXBvSW5mbyhwYWNrYWdlTmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoZWFkQ29tbWl0ID0gZXhlY1N5bmMoJ2dpdCBsb2cgLTEgLS1wcmV0dHk9JUInLCB7XG4gICAgICBlbmNvZGluZzogJ3V0Zi04JyxcbiAgICB9KS50cmltKClcblxuICAgIGNvbnN0IHsgR0lUSFVCX1JFUE9TSVRPUlkgfSA9IHByb2Nlc3MuZW52XG4gICAgaWYgKCFHSVRIVUJfUkVQT1NJVE9SWSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3duZXI6IG51bGwsXG4gICAgICAgIHJlcG86IG51bGwsXG4gICAgICAgIHBrZ0luZm86IHsgbmFtZTogbnVsbCwgdmVyc2lvbjogbnVsbCwgdGFnOiBudWxsIH0sXG4gICAgICB9XG4gICAgfVxuICAgIGRlYnVnKGBHaXRodWIgcmVwb3NpdG9yeTogJHtHSVRIVUJfUkVQT1NJVE9SWX1gKVxuICAgIGNvbnN0IFtvd25lciwgcmVwb10gPSBHSVRIVUJfUkVQT1NJVE9SWS5zcGxpdCgnLycpXG4gICAgY29uc3Qgb2N0b2tpdCA9IG5ldyBPY3Rva2l0KHtcbiAgICAgIGF1dGg6IHByb2Nlc3MuZW52LkdJVEhVQl9UT0tFTixcbiAgICB9KVxuICAgIGxldCBwa2dJbmZvOiBQYWNrYWdlSW5mbyB8IHVuZGVmaW5lZFxuICAgIGlmIChvcHRpb25zLnRhZ1N0eWxlID09PSAnbGVybmEnKSB7XG4gICAgICBjb25zdCBwYWNrYWdlc1RvUHVibGlzaCA9IGhlYWRDb21taXRcbiAgICAgICAgLnNwbGl0KCdcXG4nKVxuICAgICAgICAubWFwKChsaW5lKSA9PiBsaW5lLnRyaW0oKSlcbiAgICAgICAgLmZpbHRlcigobGluZSwgaW5kZXgpID0+IGxpbmUubGVuZ3RoICYmIGluZGV4KVxuICAgICAgICAubWFwKChsaW5lKSA9PiBsaW5lLnN1YnN0cmluZygyKSlcbiAgICAgICAgLm1hcChwYXJzZVRhZylcblxuICAgICAgcGtnSW5mbyA9IHBhY2thZ2VzVG9QdWJsaXNoLmZpbmQoXG4gICAgICAgIChwa2dJbmZvKSA9PiBwa2dJbmZvLm5hbWUgPT09IHBhY2thZ2VOYW1lLFxuICAgICAgKVxuXG4gICAgICBpZiAoIXBrZ0luZm8pIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBgTm8gcmVsZWFzZSBjb21taXQgZm91bmQgd2l0aCAke3BhY2thZ2VOYW1lfSwgb3JpZ2luYWwgY29tbWl0IGluZm86ICR7aGVhZENvbW1pdH1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBrZ0luZm8gPSB7XG4gICAgICAgIHRhZzogYHYke3ZlcnNpb259YCxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgbmFtZTogcGFja2FnZU5hbWUsXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IG93bmVyLCByZXBvLCBwa2dJbmZvLCBvY3Rva2l0IH1cbiAgfVxuXG4gIGlmICghb3B0aW9ucy5kcnlSdW4pIHtcbiAgICBhd2FpdCB2ZXJzaW9uKHVzZXJPcHRpb25zKVxuICAgIGF3YWl0IHVwZGF0ZVBhY2thZ2VKc29uKHBhY2thZ2VKc29uUGF0aCwge1xuICAgICAgb3B0aW9uYWxEZXBlbmRlbmNpZXM6IHRhcmdldHMucmVkdWNlKFxuICAgICAgICAoZGVwcywgdGFyZ2V0KSA9PiB7XG4gICAgICAgICAgZGVwc1tgJHtwYWNrYWdlTmFtZX0tJHt0YXJnZXQucGxhdGZvcm1BcmNoQUJJfWBdID0gcGFja2FnZUpzb24udmVyc2lvblxuXG4gICAgICAgICAgcmV0dXJuIGRlcHNcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICAgICksXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHsgb3duZXIsIHJlcG8sIHBrZ0luZm8sIG9jdG9raXQgfSA9IG9wdGlvbnMuZ2hSZWxlYXNlSWRcbiAgICA/IGdldFJlcG9JbmZvKHBhY2thZ2VOYW1lLCBwYWNrYWdlSnNvbi52ZXJzaW9uKVxuICAgIDogYXdhaXQgY3JlYXRlR2hSZWxlYXNlKHBhY2thZ2VOYW1lLCBwYWNrYWdlSnNvbi52ZXJzaW9uKVxuXG4gIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRhcmdldHMpIHtcbiAgICBjb25zdCBwa2dEaXIgPSByZXNvbHZlKFxuICAgICAgb3B0aW9ucy5jd2QsXG4gICAgICBvcHRpb25zLm5wbURpcixcbiAgICAgIGAke3RhcmdldC5wbGF0Zm9ybUFyY2hBQkl9YCxcbiAgICApXG4gICAgY29uc3QgZXh0ID1cbiAgICAgIHRhcmdldC5wbGF0Zm9ybSA9PT0gJ3dhc2knIHx8IHRhcmdldC5wbGF0Zm9ybSA9PT0gJ3dhc20nID8gJ3dhc20nIDogJ25vZGUnXG4gICAgY29uc3QgZmlsZW5hbWUgPSBgJHtiaW5hcnlOYW1lfS4ke3RhcmdldC5wbGF0Zm9ybUFyY2hBQkl9LiR7ZXh0fWBcbiAgICBjb25zdCBkc3RQYXRoID0gam9pbihwa2dEaXIsIGZpbGVuYW1lKVxuXG4gICAgaWYgKCFvcHRpb25zLmRyeVJ1bikge1xuICAgICAgaWYgKCFleGlzdHNTeW5jKGRzdFBhdGgpKSB7XG4gICAgICAgIGRlYnVnLndhcm4oYCVzIGRvZXNuJ3QgZXhpc3RgLCBkc3RQYXRoKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoIW9wdGlvbnMuc2tpcE9wdGlvbmFsUHVibGlzaCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG91dHB1dCA9IGV4ZWNTeW5jKGAke25wbUNsaWVudH0gcHVibGlzaGAsIHtcbiAgICAgICAgICAgIGN3ZDogcGtnRGlyLFxuICAgICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICAgIHN0ZGlvOiAncGlwZScsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShvdXRwdXQpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBlIGluc3RhbmNlb2YgRXJyb3IgJiZcbiAgICAgICAgICAgIGUubWVzc2FnZS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgJ1lvdSBjYW5ub3QgcHVibGlzaCBvdmVyIHRoZSBwcmV2aW91c2x5IHB1Ymxpc2hlZCB2ZXJzaW9ucycsXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zb2xlLmluZm8oZS5tZXNzYWdlKVxuICAgICAgICAgICAgZGVidWcud2FybihgJHtwa2dEaXJ9IGhhcyBiZWVuIHB1Ymxpc2hlZCwgc2tpcHBpbmdgKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmdoUmVsZWFzZSAmJiByZXBvICYmIG93bmVyKSB7XG4gICAgICAgIGRlYnVnLmluZm8oYENyZWF0aW5nIEdpdEh1YiByZWxlYXNlICR7cGtnSW5mby50YWd9YClcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZWxlYXNlSWQgPSBvcHRpb25zLmdoUmVsZWFzZUlkXG4gICAgICAgICAgICA/IE51bWJlcihvcHRpb25zLmdoUmVsZWFzZUlkKVxuICAgICAgICAgICAgOiAoXG4gICAgICAgICAgICAgICAgYXdhaXQgb2N0b2tpdCEucmVwb3MuZ2V0UmVsZWFzZUJ5VGFnKHtcbiAgICAgICAgICAgICAgICAgIHJlcG86IHJlcG8sXG4gICAgICAgICAgICAgICAgICBvd25lcjogb3duZXIsXG4gICAgICAgICAgICAgICAgICB0YWc6IHBrZ0luZm8udGFnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICkuZGF0YS5pZFxuICAgICAgICAgIGNvbnN0IGRzdEZpbGVTdGF0cyA9IHN0YXRTeW5jKGRzdFBhdGgpXG4gICAgICAgICAgY29uc3QgYXNzZXRJbmZvID0gYXdhaXQgb2N0b2tpdCEucmVwb3MudXBsb2FkUmVsZWFzZUFzc2V0KHtcbiAgICAgICAgICAgIG93bmVyOiBvd25lcixcbiAgICAgICAgICAgIHJlcG86IHJlcG8sXG4gICAgICAgICAgICBuYW1lOiBmaWxlbmFtZSxcbiAgICAgICAgICAgIHJlbGVhc2VfaWQ6IHJlbGVhc2VJZCxcbiAgICAgICAgICAgIG1lZGlhVHlwZTogeyBmb3JtYXQ6ICdyYXcnIH0sXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdjb250ZW50LWxlbmd0aCc6IGRzdEZpbGVTdGF0cy5zaXplLFxuICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBvY3Rva2l0IHR5cGVzIGFyZSB3cm9uZ1xuICAgICAgICAgICAgZGF0YTogYXdhaXQgcmVhZEZpbGVBc3luYyhkc3RQYXRoKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlYnVnLmluZm8oYEdpdEh1YiByZWxlYXNlIGNyZWF0ZWRgKVxuICAgICAgICAgIGRlYnVnLmluZm8oYERvd25sb2FkIFVSTDogJXNgLCBhc3NldEluZm8uZGF0YS5icm93c2VyX2Rvd25sb2FkX3VybClcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGRlYnVnLmVycm9yKFxuICAgICAgICAgICAgYFBhcmFtOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICB7IG93bmVyLCByZXBvLCB0YWc6IHBrZ0luZm8udGFnLCBmaWxlbmFtZTogZHN0UGF0aCB9LFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAyLFxuICAgICAgICAgICAgKX1gLFxuICAgICAgICAgIClcbiAgICAgICAgICBkZWJ1Zy5lcnJvcihlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlVGFnKHRhZzogc3RyaW5nKSB7XG4gIGNvbnN0IHNlZ21lbnRzID0gdGFnLnNwbGl0KCdAJylcbiAgY29uc3QgdmVyc2lvbiA9IHNlZ21lbnRzLnBvcCgpIVxuICBjb25zdCBuYW1lID0gc2VnbWVudHMuam9pbignQCcpXG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lLFxuICAgIHZlcnNpb24sXG4gICAgdGFnLFxuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGNvZGVnZW4vaW5kZXgudHNcbi8vIERvIG5vdCBlZGl0IHRoaXMgZmlsZSBtYW51YWxseVxuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVVuaXZlcnNhbGl6ZUNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW1sndW5pdmVyc2FsaXplJ11dXG5cbiAgc3RhdGljIHVzYWdlID0gQ29tbWFuZC5Vc2FnZSh7XG4gICAgZGVzY3JpcHRpb246ICdDb21iaWxlIGJ1aWx0IGJpbmFyaWVzIGludG8gb25lIHVuaXZlcnNhbCBiaW5hcnknLFxuICB9KVxuXG4gIGN3ZCA9IE9wdGlvbi5TdHJpbmcoJy0tY3dkJywgcHJvY2Vzcy5jd2QoKSwge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aCcsXG4gIH0pXG5cbiAgY29uZmlnUGF0aD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tY29uZmlnLXBhdGgsLWMnLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlJyxcbiAgfSlcblxuICBwYWNrYWdlSnNvblBhdGggPSBPcHRpb24uU3RyaW5nKCctLXBhY2thZ2UtanNvbi1wYXRoJywgJ3BhY2thZ2UuanNvbicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYHBhY2thZ2UuanNvbmAnLFxuICB9KVxuXG4gIG91dHB1dERpciA9IE9wdGlvbi5TdHJpbmcoJy0tb3V0cHV0LWRpciwtbycsICcuLycsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgYWxsIGJ1aWx0IGAubm9kZWAgZmlsZXMgcHV0LCBzYW1lIGFzIGAtLW91dHB1dC1kaXJgIG9mIGJ1aWxkIGNvbW1hbmQnLFxuICB9KVxuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN3ZDogdGhpcy5jd2QsXG4gICAgICBjb25maWdQYXRoOiB0aGlzLmNvbmZpZ1BhdGgsXG4gICAgICBwYWNrYWdlSnNvblBhdGg6IHRoaXMucGFja2FnZUpzb25QYXRoLFxuICAgICAgb3V0cHV0RGlyOiB0aGlzLm91dHB1dERpcixcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDb21iaWxlIGJ1aWx0IGJpbmFyaWVzIGludG8gb25lIHVuaXZlcnNhbCBiaW5hcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbml2ZXJzYWxpemVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICBjd2Q/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICpcbiAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICovXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIGFsbCBidWlsdCBgLm5vZGVgIGZpbGVzIHB1dCwgc2FtZSBhcyBgLS1vdXRwdXQtZGlyYCBvZiBidWlsZCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0ICcuLydcbiAgICovXG4gIG91dHB1dERpcj86IHN0cmluZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZWZhdWx0VW5pdmVyc2FsaXplT3B0aW9ucyhvcHRpb25zOiBVbml2ZXJzYWxpemVPcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIHBhY2thZ2VKc29uUGF0aDogJ3BhY2thZ2UuanNvbicsXG4gICAgb3V0cHV0RGlyOiAnLi8nLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cbn1cbiIsImltcG9ydCB7IHNwYXduU3luYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmltcG9ydCB7XG4gIGFwcGx5RGVmYXVsdFVuaXZlcnNhbGl6ZU9wdGlvbnMsXG4gIHR5cGUgVW5pdmVyc2FsaXplT3B0aW9ucyxcbn0gZnJvbSAnLi4vZGVmL3VuaXZlcnNhbGl6ZS5qcydcbmltcG9ydCB7IHJlYWROYXBpQ29uZmlnIH0gZnJvbSAnLi4vdXRpbHMvY29uZmlnLmpzJ1xuaW1wb3J0IHsgZGVidWdGYWN0b3J5IH0gZnJvbSAnLi4vdXRpbHMvbG9nLmpzJ1xuaW1wb3J0IHsgZmlsZUV4aXN0cyB9IGZyb20gJy4uL3V0aWxzL21pc2MuanMnXG5pbXBvcnQgeyBVbmlBcmNoc0J5UGxhdGZvcm0gfSBmcm9tICcuLi91dGlscy90YXJnZXQuanMnXG5cbmNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCd1bml2ZXJzYWxpemUnKVxuXG5jb25zdCB1bml2ZXJzYWxpemVyczogUGFydGlhbDxcbiAgUmVjb3JkPE5vZGVKUy5QbGF0Zm9ybSwgKGlucHV0czogc3RyaW5nW10sIG91dHB1dDogc3RyaW5nKSA9PiB2b2lkPlxuPiA9IHtcbiAgZGFyd2luOiAoaW5wdXRzLCBvdXRwdXQpID0+IHtcbiAgICBzcGF3blN5bmMoJ2xpcG8nLCBbJy1jcmVhdGUnLCAnLW91dHB1dCcsIG91dHB1dCwgLi4uaW5wdXRzXSwge1xuICAgICAgc3RkaW86ICdpbmhlcml0JyxcbiAgICB9KVxuICB9LFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdW5pdmVyc2FsaXplQmluYXJpZXModXNlck9wdGlvbnM6IFVuaXZlcnNhbGl6ZU9wdGlvbnMpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGFwcGx5RGVmYXVsdFVuaXZlcnNhbGl6ZU9wdGlvbnModXNlck9wdGlvbnMpXG5cbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gam9pbihvcHRpb25zLmN3ZCwgb3B0aW9ucy5wYWNrYWdlSnNvblBhdGgpXG5cbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZE5hcGlDb25maWcoXG4gICAgcGFja2FnZUpzb25QYXRoLFxuICAgIG9wdGlvbnMuY29uZmlnUGF0aCA/IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMuY29uZmlnUGF0aCkgOiB1bmRlZmluZWQsXG4gIClcblxuICBjb25zdCB0YXJnZXQgPSBjb25maWcudGFyZ2V0cy5maW5kKFxuICAgICh0KSA9PiB0LnBsYXRmb3JtID09PSBwcm9jZXNzLnBsYXRmb3JtICYmIHQuYXJjaCA9PT0gJ3VuaXZlcnNhbCcsXG4gIClcblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAndW5pdmVyc2FsJyBhcmNoIGZvciBwbGF0Zm9ybSAnJHtwcm9jZXNzLnBsYXRmb3JtfScgbm90IGZvdW5kIGluIGNvbmZpZyFgLFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHNyY0ZpbGVzID0gVW5pQXJjaHNCeVBsYXRmb3JtW3Byb2Nlc3MucGxhdGZvcm1dPy5tYXAoKGFyY2gpID0+XG4gICAgcmVzb2x2ZShcbiAgICAgIG9wdGlvbnMuY3dkLFxuICAgICAgb3B0aW9ucy5vdXRwdXREaXIsXG4gICAgICBgJHtjb25maWcuYmluYXJ5TmFtZX0uJHtwcm9jZXNzLnBsYXRmb3JtfS0ke2FyY2h9Lm5vZGVgLFxuICAgICksXG4gIClcblxuICBpZiAoIXNyY0ZpbGVzIHx8ICF1bml2ZXJzYWxpemVyc1twcm9jZXNzLnBsYXRmb3JtXSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAndW5pdmVyc2FsJyBhcmNoIGZvciBwbGF0Zm9ybSAnJHtwcm9jZXNzLnBsYXRmb3JtfScgbm90IHN1cHBvcnRlZC5gLFxuICAgIClcbiAgfVxuXG4gIGRlYnVnKGBMb29raW5nIHVwIHNvdXJjZSBiaW5hcmllcyB0byBjb21iaW5lOiBgKVxuICBkZWJ1ZygnICAlTycsIHNyY0ZpbGVzKVxuXG4gIGNvbnN0IHNyY0ZpbGVMb29rdXAgPSBhd2FpdCBQcm9taXNlLmFsbChzcmNGaWxlcy5tYXAoKGYpID0+IGZpbGVFeGlzdHMoZikpKVxuXG4gIGNvbnN0IG5vdEZvdW5kRmlsZXMgPSBzcmNGaWxlcy5maWx0ZXIoKF8sIGkpID0+ICFzcmNGaWxlTG9va3VwW2ldKVxuXG4gIGlmIChub3RGb3VuZEZpbGVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBTb21lIGJpbmFyeSBmaWxlcyB3ZXJlIG5vdCBmb3VuZDogJHtKU09OLnN0cmluZ2lmeShub3RGb3VuZEZpbGVzKX1gLFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IG91dHB1dCA9IHJlc29sdmUoXG4gICAgb3B0aW9ucy5jd2QsXG4gICAgb3B0aW9ucy5vdXRwdXREaXIsXG4gICAgYCR7Y29uZmlnLmJpbmFyeU5hbWV9LiR7cHJvY2Vzcy5wbGF0Zm9ybX0tdW5pdmVyc2FsLm5vZGVgLFxuICApXG5cbiAgdW5pdmVyc2FsaXplcnNbcHJvY2Vzcy5wbGF0Zm9ybV0/LihzcmNGaWxlcywgb3V0cHV0KVxuXG4gIGRlYnVnKGBQcm9kdWNlZCB1bml2ZXJzYWwgYmluYXJ5OiAke291dHB1dH1gKVxufVxuIiwiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NsaXBhbmlvbidcblxuaW1wb3J0IHsgY29sbGVjdEFydGlmYWN0cyB9IGZyb20gJy4uL2FwaS9hcnRpZmFjdHMuanMnXG5pbXBvcnQgeyBCYXNlQXJ0aWZhY3RzQ29tbWFuZCB9IGZyb20gJy4uL2RlZi9hcnRpZmFjdHMuanMnXG5cbmV4cG9ydCBjbGFzcyBBcnRpZmFjdHNDb21tYW5kIGV4dGVuZHMgQmFzZUFydGlmYWN0c0NvbW1hbmQge1xuICBzdGF0aWMgdXNhZ2UgPSBDb21tYW5kLlVzYWdlKHtcbiAgICBkZXNjcmlwdGlvbjogJ0NvcHkgYXJ0aWZhY3RzIGZyb20gR2l0aHViIEFjdGlvbnMgaW50byBzcGVjaWZpZWQgZGlyJyxcbiAgICBleGFtcGxlczogW1xuICAgICAgW1xuICAgICAgICAnJDAgYXJ0aWZhY3RzIC0tb3V0cHV0LWRpciAuL2FydGlmYWN0cyAtLWRpc3QgLi9ucG0nLFxuICAgICAgICBgQ29weSBbYmluYXJ5TmFtZV0uW3BsYXRmb3JtXS5ub2RlIHVuZGVyIGN1cnJlbnQgZGlyKC4pIGludG8gcGFja2FnZXMgdW5kZXIgbnBtIGRpci5cbmUuZzogaW5kZXgubGludXgteDY0LWdudS5ub2RlIC0tPiAuL25wbS9saW51eC14NjQtZ251L2luZGV4LmxpbnV4LXg2NC1nbnUubm9kZWAsXG4gICAgICBdLFxuICAgIF0sXG4gIH0pXG5cbiAgc3RhdGljIHBhdGhzID0gW1snYXJ0aWZhY3RzJ11dXG5cbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICBhd2FpdCBjb2xsZWN0QXJ0aWZhY3RzKHRoaXMuZ2V0T3B0aW9ucygpKVxuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGNvZGVnZW4vaW5kZXgudHNcbi8vIERvIG5vdCBlZGl0IHRoaXMgZmlsZSBtYW51YWxseVxuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUJ1aWxkQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBzdGF0aWMgcGF0aHMgPSBbWydidWlsZCddXVxuXG4gIHN0YXRpYyB1c2FnZSA9IENvbW1hbmQuVXNhZ2Uoe1xuICAgIGRlc2NyaXB0aW9uOiAnQnVpbGQgdGhlIE5BUEktUlMgcHJvamVjdCcsXG4gIH0pXG5cbiAgdGFyZ2V0Pzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS10YXJnZXQsLXQnLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnQnVpbGQgZm9yIHRoZSB0YXJnZXQgdHJpcGxlLCBieXBhc3NlZCB0byBgY2FyZ28gYnVpbGQgLS10YXJnZXRgJyxcbiAgfSlcblxuICBjd2Q/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWN3ZCcsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGgnLFxuICB9KVxuXG4gIG1hbmlmZXN0UGF0aD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tbWFuaWZlc3QtcGF0aCcsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYENhcmdvLnRvbWxgJyxcbiAgfSlcblxuICBjb25maWdQYXRoPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1jb25maWctcGF0aCwtYycsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGUnLFxuICB9KVxuXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZS1qc29uLXBhdGgnLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBwYWNrYWdlLmpzb25gJyxcbiAgfSlcblxuICB0YXJnZXREaXI/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLXRhcmdldC1kaXInLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnRGlyZWN0b3J5IGZvciBhbGwgY3JhdGUgZ2VuZXJhdGVkIGFydGlmYWN0cywgc2VlIGBjYXJnbyBidWlsZCAtLXRhcmdldC1kaXJgJyxcbiAgfSlcblxuICBvdXRwdXREaXI/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLW91dHB1dC1kaXIsLW8nLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnUGF0aCB0byB3aGVyZSBhbGwgdGhlIGJ1aWx0IGZpbGVzIHdvdWxkIGJlIHB1dC4gRGVmYXVsdCB0byB0aGUgY3JhdGUgZm9sZGVyJyxcbiAgfSlcblxuICBwbGF0Zm9ybT86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS1wbGF0Zm9ybScsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdBZGQgcGxhdGZvcm0gdHJpcGxlIHRvIHRoZSBnZW5lcmF0ZWQgbm9kZWpzIGJpbmRpbmcgZmlsZSwgZWc6IGBbbmFtZV0ubGludXgteDY0LWdudS5ub2RlYCcsXG4gIH0pXG5cbiAganNQYWNrYWdlTmFtZT86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tanMtcGFja2FnZS1uYW1lJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1BhY2thZ2UgbmFtZSBpbiBnZW5lcmF0ZWQganMgYmluZGluZyBmaWxlLiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcnLFxuICB9KVxuXG4gIGNvbnN0RW51bT86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS1jb25zdC1lbnVtJywge1xuICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciBnZW5lcmF0ZSBjb25zdCBlbnVtIGZvciB0eXBlc2NyaXB0IGJpbmRpbmdzJyxcbiAgfSlcblxuICBqc0JpbmRpbmc/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWpzJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1BhdGggYW5kIGZpbGVuYW1lIG9mIGdlbmVyYXRlZCBKUyBiaW5kaW5nIGZpbGUuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZy4gUmVsYXRpdmUgdG8gYC0tb3V0cHV0LWRpcmAuJyxcbiAgfSlcblxuICBub0pzQmluZGluZz86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS1uby1qcycsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGdlbmVyYXRpb24gSlMgYmluZGluZyBmaWxlLiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcuJyxcbiAgfSlcblxuICBkdHM/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWR0cycsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdQYXRoIGFuZCBmaWxlbmFtZSBvZiBnZW5lcmF0ZWQgdHlwZSBkZWYgZmlsZS4gUmVsYXRpdmUgdG8gYC0tb3V0cHV0LWRpcmAnLFxuICB9KVxuXG4gIGR0c0hlYWRlcj86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tZHRzLWhlYWRlcicsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdDdXN0b20gZmlsZSBoZWFkZXIgZm9yIGdlbmVyYXRlZCB0eXBlIGRlZiBmaWxlLiBPbmx5IHdvcmtzIHdoZW4gYHR5cGVkZWZgIGZlYXR1cmUgZW5hYmxlZC4nLFxuICB9KVxuXG4gIG5vRHRzSGVhZGVyPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLW5vLWR0cy1oZWFkZXInLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnV2hldGhlciB0byBkaXNhYmxlIHRoZSBkZWZhdWx0IGZpbGUgaGVhZGVyIGZvciBnZW5lcmF0ZWQgdHlwZSBkZWYgZmlsZS4gT25seSB3b3JrcyB3aGVuIGB0eXBlZGVmYCBmZWF0dXJlIGVuYWJsZWQuJyxcbiAgfSlcblxuICBkdHNDYWNoZSA9IE9wdGlvbi5Cb29sZWFuKCctLWR0cy1jYWNoZScsIHRydWUsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdG8gZW5hYmxlIHRoZSBkdHMgY2FjaGUsIGRlZmF1bHQgdG8gdHJ1ZScsXG4gIH0pXG5cbiAgZXNtPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLWVzbScsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdXaGV0aGVyIHRvIGVtaXQgYW4gRVNNIEpTIGJpbmRpbmcgZmlsZSBpbnN0ZWFkIG9mIENKUyBmb3JtYXQuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZy4nLFxuICB9KVxuXG4gIHN0cmlwPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLXN0cmlwLC1zJywge1xuICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciBzdHJpcCB0aGUgbGlicmFyeSB0byBhY2hpZXZlIHRoZSBtaW5pbXVtIGZpbGUgc2l6ZScsXG4gIH0pXG5cbiAgcmVsZWFzZT86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS1yZWxlYXNlLC1yJywge1xuICAgIGRlc2NyaXB0aW9uOiAnQnVpbGQgaW4gcmVsZWFzZSBtb2RlJyxcbiAgfSlcblxuICB2ZXJib3NlPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLXZlcmJvc2UsLXYnLCB7XG4gICAgZGVzY3JpcHRpb246ICdWZXJib3NlbHkgbG9nIGJ1aWxkIGNvbW1hbmQgdHJhY2UnLFxuICB9KVxuXG4gIGJpbj86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tYmluJywge1xuICAgIGRlc2NyaXB0aW9uOiAnQnVpbGQgb25seSB0aGUgc3BlY2lmaWVkIGJpbmFyeScsXG4gIH0pXG5cbiAgcGFja2FnZT86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZSwtcCcsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIHRoZSBzcGVjaWZpZWQgbGlicmFyeSBvciB0aGUgb25lIGF0IGN3ZCcsXG4gIH0pXG5cbiAgcHJvZmlsZT86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tcHJvZmlsZScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIGFydGlmYWN0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJvZmlsZScsXG4gIH0pXG5cbiAgY3Jvc3NDb21waWxlPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLWNyb3NzLWNvbXBpbGUsLXgnLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnW2V4cGVyaW1lbnRhbF0gY3Jvc3MtY29tcGlsZSBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQgd2l0aCBgY2FyZ28teHdpbmAgb24gd2luZG93cyBhbmQgYGNhcmdvLXppZ2J1aWxkYCBvbiBvdGhlciBwbGF0Zm9ybScsXG4gIH0pXG5cbiAgdXNlQ3Jvc3M/OiBib29sZWFuID0gT3B0aW9uLkJvb2xlYW4oJy0tdXNlLWNyb3NzJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1tleHBlcmltZW50YWxdIHVzZSBbY3Jvc3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9jcm9zcy1ycy9jcm9zcykgaW5zdGVhZCBvZiBgY2FyZ29gJyxcbiAgfSlcblxuICB1c2VOYXBpQ3Jvc3M/OiBib29sZWFuID0gT3B0aW9uLkJvb2xlYW4oJy0tdXNlLW5hcGktY3Jvc3MnLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnW2V4cGVyaW1lbnRhbF0gdXNlIEBuYXBpLXJzL2Nyb3NzLXRvb2xjaGFpbiB0byBjcm9zcy1jb21waWxlIExpbnV4IGFybS9hcm02NC94NjQgZ251IHRhcmdldHMuJyxcbiAgfSlcblxuICB3YXRjaD86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS13YXRjaCwtdycsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICd3YXRjaCB0aGUgY3JhdGUgY2hhbmdlcyBhbmQgYnVpbGQgY29udGludW91c2x5IHdpdGggYGNhcmdvLXdhdGNoYCBjcmF0ZXMnLFxuICB9KVxuXG4gIGZlYXR1cmVzPzogc3RyaW5nW10gPSBPcHRpb24uQXJyYXkoJy0tZmVhdHVyZXMsLUYnLCB7XG4gICAgZGVzY3JpcHRpb246ICdTcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBmZWF0dXJlcyB0byBhY3RpdmF0ZScsXG4gIH0pXG5cbiAgYWxsRmVhdHVyZXM/OiBib29sZWFuID0gT3B0aW9uLkJvb2xlYW4oJy0tYWxsLWZlYXR1cmVzJywge1xuICAgIGRlc2NyaXB0aW9uOiAnQWN0aXZhdGUgYWxsIGF2YWlsYWJsZSBmZWF0dXJlcycsXG4gIH0pXG5cbiAgbm9EZWZhdWx0RmVhdHVyZXM/OiBib29sZWFuID0gT3B0aW9uLkJvb2xlYW4oJy0tbm8tZGVmYXVsdC1mZWF0dXJlcycsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0RvIG5vdCBhY3RpdmF0ZSB0aGUgYGRlZmF1bHRgIGZlYXR1cmUnLFxuICB9KVxuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogdGhpcy50YXJnZXQsXG4gICAgICBjd2Q6IHRoaXMuY3dkLFxuICAgICAgbWFuaWZlc3RQYXRoOiB0aGlzLm1hbmlmZXN0UGF0aCxcbiAgICAgIGNvbmZpZ1BhdGg6IHRoaXMuY29uZmlnUGF0aCxcbiAgICAgIHBhY2thZ2VKc29uUGF0aDogdGhpcy5wYWNrYWdlSnNvblBhdGgsXG4gICAgICB0YXJnZXREaXI6IHRoaXMudGFyZ2V0RGlyLFxuICAgICAgb3V0cHV0RGlyOiB0aGlzLm91dHB1dERpcixcbiAgICAgIHBsYXRmb3JtOiB0aGlzLnBsYXRmb3JtLFxuICAgICAganNQYWNrYWdlTmFtZTogdGhpcy5qc1BhY2thZ2VOYW1lLFxuICAgICAgY29uc3RFbnVtOiB0aGlzLmNvbnN0RW51bSxcbiAgICAgIGpzQmluZGluZzogdGhpcy5qc0JpbmRpbmcsXG4gICAgICBub0pzQmluZGluZzogdGhpcy5ub0pzQmluZGluZyxcbiAgICAgIGR0czogdGhpcy5kdHMsXG4gICAgICBkdHNIZWFkZXI6IHRoaXMuZHRzSGVhZGVyLFxuICAgICAgbm9EdHNIZWFkZXI6IHRoaXMubm9EdHNIZWFkZXIsXG4gICAgICBkdHNDYWNoZTogdGhpcy5kdHNDYWNoZSxcbiAgICAgIGVzbTogdGhpcy5lc20sXG4gICAgICBzdHJpcDogdGhpcy5zdHJpcCxcbiAgICAgIHJlbGVhc2U6IHRoaXMucmVsZWFzZSxcbiAgICAgIHZlcmJvc2U6IHRoaXMudmVyYm9zZSxcbiAgICAgIGJpbjogdGhpcy5iaW4sXG4gICAgICBwYWNrYWdlOiB0aGlzLnBhY2thZ2UsXG4gICAgICBwcm9maWxlOiB0aGlzLnByb2ZpbGUsXG4gICAgICBjcm9zc0NvbXBpbGU6IHRoaXMuY3Jvc3NDb21waWxlLFxuICAgICAgdXNlQ3Jvc3M6IHRoaXMudXNlQ3Jvc3MsXG4gICAgICB1c2VOYXBpQ3Jvc3M6IHRoaXMudXNlTmFwaUNyb3NzLFxuICAgICAgd2F0Y2g6IHRoaXMud2F0Y2gsXG4gICAgICBmZWF0dXJlczogdGhpcy5mZWF0dXJlcyxcbiAgICAgIGFsbEZlYXR1cmVzOiB0aGlzLmFsbEZlYXR1cmVzLFxuICAgICAgbm9EZWZhdWx0RmVhdHVyZXM6IHRoaXMubm9EZWZhdWx0RmVhdHVyZXMsXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIE5BUEktUlMgcHJvamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBCdWlsZCBmb3IgdGhlIHRhcmdldCB0cmlwbGUsIGJ5cGFzc2VkIHRvIGBjYXJnbyBidWlsZCAtLXRhcmdldGBcbiAgICovXG4gIHRhcmdldD86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoXG4gICAqL1xuICBjd2Q/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYENhcmdvLnRvbWxgXG4gICAqL1xuICBtYW5pZmVzdFBhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICovXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogRGlyZWN0b3J5IGZvciBhbGwgY3JhdGUgZ2VuZXJhdGVkIGFydGlmYWN0cywgc2VlIGBjYXJnbyBidWlsZCAtLXRhcmdldC1kaXJgXG4gICAqL1xuICB0YXJnZXREaXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gd2hlcmUgYWxsIHRoZSBidWlsdCBmaWxlcyB3b3VsZCBiZSBwdXQuIERlZmF1bHQgdG8gdGhlIGNyYXRlIGZvbGRlclxuICAgKi9cbiAgb3V0cHV0RGlyPzogc3RyaW5nXG4gIC8qKlxuICAgKiBBZGQgcGxhdGZvcm0gdHJpcGxlIHRvIHRoZSBnZW5lcmF0ZWQgbm9kZWpzIGJpbmRpbmcgZmlsZSwgZWc6IGBbbmFtZV0ubGludXgteDY0LWdudS5ub2RlYFxuICAgKi9cbiAgcGxhdGZvcm0/OiBib29sZWFuXG4gIC8qKlxuICAgKiBQYWNrYWdlIG5hbWUgaW4gZ2VuZXJhdGVkIGpzIGJpbmRpbmcgZmlsZS4gT25seSB3b3JrcyB3aXRoIGAtLXBsYXRmb3JtYCBmbGFnXG4gICAqL1xuICBqc1BhY2thZ2VOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBXaGV0aGVyIGdlbmVyYXRlIGNvbnN0IGVudW0gZm9yIHR5cGVzY3JpcHQgYmluZGluZ3NcbiAgICovXG4gIGNvbnN0RW51bT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFBhdGggYW5kIGZpbGVuYW1lIG9mIGdlbmVyYXRlZCBKUyBiaW5kaW5nIGZpbGUuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZy4gUmVsYXRpdmUgdG8gYC0tb3V0cHV0LWRpcmAuXG4gICAqL1xuICBqc0JpbmRpbmc/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBKUyBiaW5kaW5nIGZpbGUuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZy5cbiAgICovXG4gIG5vSnNCaW5kaW5nPzogYm9vbGVhblxuICAvKipcbiAgICogUGF0aCBhbmQgZmlsZW5hbWUgb2YgZ2VuZXJhdGVkIHR5cGUgZGVmIGZpbGUuIFJlbGF0aXZlIHRvIGAtLW91dHB1dC1kaXJgXG4gICAqL1xuICBkdHM/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEN1c3RvbSBmaWxlIGhlYWRlciBmb3IgZ2VuZXJhdGVkIHR5cGUgZGVmIGZpbGUuIE9ubHkgd29ya3Mgd2hlbiBgdHlwZWRlZmAgZmVhdHVyZSBlbmFibGVkLlxuICAgKi9cbiAgZHRzSGVhZGVyPzogc3RyaW5nXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGRlZmF1bHQgZmlsZSBoZWFkZXIgZm9yIGdlbmVyYXRlZCB0eXBlIGRlZiBmaWxlLiBPbmx5IHdvcmtzIHdoZW4gYHR5cGVkZWZgIGZlYXR1cmUgZW5hYmxlZC5cbiAgICovXG4gIG5vRHRzSGVhZGVyPzogYm9vbGVhblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgdGhlIGR0cyBjYWNoZSwgZGVmYXVsdCB0byB0cnVlXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGR0c0NhY2hlPzogYm9vbGVhblxuICAvKipcbiAgICogV2hldGhlciB0byBlbWl0IGFuIEVTTSBKUyBiaW5kaW5nIGZpbGUgaW5zdGVhZCBvZiBDSlMgZm9ybWF0LiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcuXG4gICAqL1xuICBlc20/OiBib29sZWFuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHN0cmlwIHRoZSBsaWJyYXJ5IHRvIGFjaGlldmUgdGhlIG1pbmltdW0gZmlsZSBzaXplXG4gICAqL1xuICBzdHJpcD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEJ1aWxkIGluIHJlbGVhc2UgbW9kZVxuICAgKi9cbiAgcmVsZWFzZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFZlcmJvc2VseSBsb2cgYnVpbGQgY29tbWFuZCB0cmFjZVxuICAgKi9cbiAgdmVyYm9zZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEJ1aWxkIG9ubHkgdGhlIHNwZWNpZmllZCBiaW5hcnlcbiAgICovXG4gIGJpbj86IHN0cmluZ1xuICAvKipcbiAgICogQnVpbGQgdGhlIHNwZWNpZmllZCBsaWJyYXJ5IG9yIHRoZSBvbmUgYXQgY3dkXG4gICAqL1xuICBwYWNrYWdlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBCdWlsZCBhcnRpZmFjdHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByb2ZpbGVcbiAgICovXG4gIHByb2ZpbGU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFtleHBlcmltZW50YWxdIGNyb3NzLWNvbXBpbGUgZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IHdpdGggYGNhcmdvLXh3aW5gIG9uIHdpbmRvd3MgYW5kIGBjYXJnby16aWdidWlsZGAgb24gb3RoZXIgcGxhdGZvcm1cbiAgICovXG4gIGNyb3NzQ29tcGlsZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFtleHBlcmltZW50YWxdIHVzZSBbY3Jvc3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9jcm9zcy1ycy9jcm9zcykgaW5zdGVhZCBvZiBgY2FyZ29gXG4gICAqL1xuICB1c2VDcm9zcz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFtleHBlcmltZW50YWxdIHVzZSBAbmFwaS1ycy9jcm9zcy10b29sY2hhaW4gdG8gY3Jvc3MtY29tcGlsZSBMaW51eCBhcm0vYXJtNjQveDY0IGdudSB0YXJnZXRzLlxuICAgKi9cbiAgdXNlTmFwaUNyb3NzPzogYm9vbGVhblxuICAvKipcbiAgICogd2F0Y2ggdGhlIGNyYXRlIGNoYW5nZXMgYW5kIGJ1aWxkIGNvbnRpbnVvdXNseSB3aXRoIGBjYXJnby13YXRjaGAgY3JhdGVzXG4gICAqL1xuICB3YXRjaD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGZlYXR1cmVzIHRvIGFjdGl2YXRlXG4gICAqL1xuICBmZWF0dXJlcz86IHN0cmluZ1tdXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBhbGwgYXZhaWxhYmxlIGZlYXR1cmVzXG4gICAqL1xuICBhbGxGZWF0dXJlcz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIERvIG5vdCBhY3RpdmF0ZSB0aGUgYGRlZmF1bHRgIGZlYXR1cmVcbiAgICovXG4gIG5vRGVmYXVsdEZlYXR1cmVzPzogYm9vbGVhblxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZWZhdWx0QnVpbGRPcHRpb25zKG9wdGlvbnM6IEJ1aWxkT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIGR0c0NhY2hlOiB0cnVlLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cbn1cbiIsImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuXG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdjbGlwYW5pb24nXG5cbmltcG9ydCB7IGJ1aWxkUHJvamVjdCB9IGZyb20gJy4uL2FwaS9idWlsZC5qcydcbmltcG9ydCB7IEJhc2VCdWlsZENvbW1hbmQgfSBmcm9tICcuLi9kZWYvYnVpbGQuanMnXG5pbXBvcnQgeyBkZWJ1Z0ZhY3RvcnkgfSBmcm9tICcuLi91dGlscy9pbmRleC5qcydcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0ZhY3RvcnkoJ2J1aWxkJylcblxuZXhwb3J0IGNsYXNzIEJ1aWxkQ29tbWFuZCBleHRlbmRzIEJhc2VCdWlsZENvbW1hbmQge1xuICBwaXBlID0gT3B0aW9uLlN0cmluZygnLS1waXBlJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1BpcGUgYWxsIG91dHB1dHMgZmlsZSB0byBnaXZlbiBjb21tYW5kLiBlLmcuIGBuYXBpIGJ1aWxkIC0tcGlwZSBcIm5weCBwcmV0dGllciAtLXdyaXRlXCJgJyxcbiAgfSlcblxuICBjYXJnb09wdGlvbnMgPSBPcHRpb24uUmVzdCgpXG5cbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGJ1aWxkUHJvamVjdCh7XG4gICAgICAuLi50aGlzLmdldE9wdGlvbnMoKSxcbiAgICAgIGNhcmdvT3B0aW9uczogdGhpcy5jYXJnb09wdGlvbnMsXG4gICAgfSlcblxuICAgIGNvbnN0IG91dHB1dHMgPSBhd2FpdCB0YXNrXG5cbiAgICBpZiAodGhpcy5waXBlKSB7XG4gICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBvdXRwdXRzKSB7XG4gICAgICAgIGRlYnVnKCdQaXBpbmcgb3V0cHV0IGZpbGUgdG8gY29tbWFuZDogJXMnLCB0aGlzLnBpcGUpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZXhlY1N5bmMoYCR7dGhpcy5waXBlfSAke291dHB1dC5wYXRofWAsIHtcbiAgICAgICAgICAgIHN0ZGlvOiAnaW5oZXJpdCcsXG4gICAgICAgICAgICBjd2Q6IHRoaXMuY3dkLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBkZWJ1Zy5lcnJvcihgRmFpbGVkIHRvIHBpcGUgb3V0cHV0IGZpbGUgJHtvdXRwdXQucGF0aH0gdG8gY29tbWFuZGApXG4gICAgICAgICAgZGVidWcuZXJyb3IoZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgY3JlYXRlTnBtRGlycyB9IGZyb20gJy4uL2FwaS9jcmVhdGUtbnBtLWRpcnMuanMnXG5pbXBvcnQgeyBCYXNlQ3JlYXRlTnBtRGlyc0NvbW1hbmQgfSBmcm9tICcuLi9kZWYvY3JlYXRlLW5wbS1kaXJzLmpzJ1xuXG5leHBvcnQgY2xhc3MgQ3JlYXRlTnBtRGlyc0NvbW1hbmQgZXh0ZW5kcyBCYXNlQ3JlYXRlTnBtRGlyc0NvbW1hbmQge1xuICBhc3luYyBleGVjdXRlKCkge1xuICAgIGF3YWl0IGNyZWF0ZU5wbURpcnModGhpcy5nZXRPcHRpb25zKCkpXG4gIH1cbn1cbiIsImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjbGlwYW5pb24nXG5cbi8qKlxuICogQSBjb21tYW5kIHRoYXQgcHJpbnRzIHRoZSB1c2FnZSBvZiBhbGwgY29tbWFuZHMuXG4gKlxuICogUGF0aHM6IGAtaGAsIGAtLWhlbHBgXG4gKi9cbmV4cG9ydCBjbGFzcyBIZWxwQ29tbWFuZCBleHRlbmRzIENvbW1hbmQ8YW55PiB7XG4gIHN0YXRpYyBwYXRocyA9IFtbYC1oYF0sIFtgLS1oZWxwYF1dXG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgYXdhaXQgdGhpcy5jb250ZXh0LnN0ZG91dC53cml0ZSh0aGlzLmNsaS51c2FnZSgpKVxuICB9XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnXG5cbmltcG9ydCB7IGlucHV0LCBzZWxlY3QsIGNoZWNrYm94LCBjb25maXJtIH0gZnJvbSAnQGlucXVpcmVyL3Byb21wdHMnXG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdjbGlwYW5pb24nXG5cbmltcG9ydCB7IG5ld1Byb2plY3QgfSBmcm9tICcuLi9hcGkvbmV3LmpzJ1xuaW1wb3J0IHsgQmFzZU5ld0NvbW1hbmQgfSBmcm9tICcuLi9kZWYvbmV3LmpzJ1xuaW1wb3J0IHtcbiAgQVZBSUxBQkxFX1RBUkdFVFMsXG4gIGRlYnVnRmFjdG9yeSxcbiAgREVGQVVMVF9UQVJHRVRTLFxuICB0eXBlIFRhcmdldFRyaXBsZSxcbn0gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnXG5pbXBvcnQgeyBuYXBpRW5naW5lUmVxdWlyZW1lbnQgfSBmcm9tICcuLi91dGlscy92ZXJzaW9uLmpzJ1xuXG5jb25zdCBkZWJ1ZyA9IGRlYnVnRmFjdG9yeSgnbmV3JylcblxuZXhwb3J0IGNsYXNzIE5ld0NvbW1hbmQgZXh0ZW5kcyBCYXNlTmV3Q29tbWFuZCB7XG4gIGludGVyYWN0aXZlID0gT3B0aW9uLkJvb2xlYW4oJy0taW50ZXJhY3RpdmUsLWknLCB0cnVlLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnQXNrIHByb2plY3QgYmFzaWMgaW5mb3JtYXRpb24gaW50ZXJhY3RpdmVseSB3aXRob3V0IGp1c3QgdXNpbmcgdGhlIGRlZmF1bHQuJyxcbiAgfSlcblxuICBhc3luYyBleGVjdXRlKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gYXdhaXQgdGhpcy5mZXRjaE9wdGlvbnMoKVxuICAgICAgYXdhaXQgbmV3UHJvamVjdChvcHRpb25zKVxuICAgICAgcmV0dXJuIDBcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkZWJ1ZygnRmFpbGVkIHRvIGNyZWF0ZSBuZXcgcHJvamVjdCcpXG4gICAgICBkZWJ1Zy5lcnJvcihlKVxuICAgICAgcmV0dXJuIDFcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoT3B0aW9ucygpIHtcbiAgICBjb25zdCBjbWRPcHRpb25zID0gc3VwZXIuZ2V0T3B0aW9ucygpXG5cbiAgICBpZiAodGhpcy5pbnRlcmFjdGl2ZSkge1xuICAgICAgY29uc3QgdGFyZ2V0UGF0aDogc3RyaW5nID0gY21kT3B0aW9ucy5wYXRoXG4gICAgICAgID8gY21kT3B0aW9ucy5wYXRoXG4gICAgICAgIDogYXdhaXQgaW5xdWlyZXJQcm9qZWN0UGF0aCgpXG4gICAgICBjbWRPcHRpb25zLnBhdGggPSB0YXJnZXRQYXRoXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jbWRPcHRpb25zLFxuICAgICAgICBuYW1lOiBhd2FpdCB0aGlzLmZldGNoTmFtZShwYXRoLnBhcnNlKHRhcmdldFBhdGgpLmJhc2UpLFxuICAgICAgICBtaW5Ob2RlQXBpVmVyc2lvbjogYXdhaXQgdGhpcy5mZXRjaE5hcGlWZXJzaW9uKCksXG4gICAgICAgIHRhcmdldHM6IGF3YWl0IHRoaXMuZmV0Y2hUYXJnZXRzKCksXG4gICAgICAgIGxpY2Vuc2U6IGF3YWl0IHRoaXMuZmV0Y2hMaWNlbnNlKCksXG4gICAgICAgIGVuYWJsZVR5cGVEZWY6IGF3YWl0IHRoaXMuZmV0Y2hUeXBlRGVmKCksXG4gICAgICAgIGVuYWJsZUdpdGh1YkFjdGlvbnM6IGF3YWl0IHRoaXMuZmV0Y2hHaXRodWJBY3Rpb25zKCksXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNtZE9wdGlvbnNcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hOYW1lKGRlZmF1bHROYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLiQkbmFtZSA/P1xuICAgICAgaW5wdXQoe1xuICAgICAgICBtZXNzYWdlOiAnUGFja2FnZSBuYW1lICh0aGUgbmFtZSBmaWVsZCBpbiB5b3VyIHBhY2thZ2UuanNvbiBmaWxlKScsXG4gICAgICAgIGRlZmF1bHQ6IGRlZmF1bHROYW1lLFxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoTGljZW5zZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBpbnB1dCh7XG4gICAgICBtZXNzYWdlOiAnTGljZW5zZSBmb3Igb3Blbi1zb3VyY2VkIHByb2plY3QnLFxuICAgICAgZGVmYXVsdDogdGhpcy5saWNlbnNlLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoTmFwaVZlcnNpb24oKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gc2VsZWN0KHtcbiAgICAgIG1lc3NhZ2U6ICdNaW5pbXVtIG5vZGUtYXBpIHZlcnNpb24gKHdpdGggbm9kZSB2ZXJzaW9uIHJlcXVpcmVtZW50KScsXG4gICAgICBsb29wOiBmYWxzZSxcbiAgICAgIHBhZ2VTaXplOiAxMCxcbiAgICAgIGNob2ljZXM6IEFycmF5LmZyb20oeyBsZW5ndGg6IDggfSwgKF8sIGkpID0+ICh7XG4gICAgICAgIG5hbWU6IGBuYXBpJHtpICsgMX0gKCR7bmFwaUVuZ2luZVJlcXVpcmVtZW50KGkgKyAxKX0pYCxcbiAgICAgICAgdmFsdWU6IGkgKyAxLFxuICAgICAgfSkpLFxuICAgICAgLy8gY2hvaWNlIGluZGV4XG4gICAgICBkZWZhdWx0OiB0aGlzLm1pbk5vZGVBcGlWZXJzaW9uIC0gMSxcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFRhcmdldHMoKTogUHJvbWlzZTxUYXJnZXRUcmlwbGVbXT4ge1xuICAgIGlmICh0aGlzLmVuYWJsZUFsbFRhcmdldHMpIHtcbiAgICAgIHJldHVybiBBVkFJTEFCTEVfVEFSR0VUUy5jb25jYXQoKVxuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldHMgPSBhd2FpdCBjaGVja2JveCh7XG4gICAgICBsb29wOiBmYWxzZSxcbiAgICAgIG1lc3NhZ2U6ICdDaG9vc2UgdGFyZ2V0KHMpIHlvdXIgY3JhdGUgd2lsbCBiZSBjb21waWxlZCB0bycsXG4gICAgICBjaG9pY2VzOiBBVkFJTEFCTEVfVEFSR0VUUy5tYXAoKHRhcmdldCkgPT4gKHtcbiAgICAgICAgbmFtZTogdGFyZ2V0LFxuICAgICAgICB2YWx1ZTogdGFyZ2V0LFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIGNoZWNrZWQ6IERFRkFVTFRfVEFSR0VUUy5pbmNsdWRlcyh0YXJnZXQpLFxuICAgICAgfSkpLFxuICAgIH0pXG5cbiAgICByZXR1cm4gdGFyZ2V0c1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFR5cGVEZWYoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgZW5hYmxlVHlwZURlZiA9IGF3YWl0IGNvbmZpcm0oe1xuICAgICAgbWVzc2FnZTogJ0VuYWJsZSB0eXBlIGRlZmluaXRpb24gYXV0by1nZW5lcmF0aW9uJyxcbiAgICAgIGRlZmF1bHQ6IHRoaXMuZW5hYmxlVHlwZURlZixcbiAgICB9KVxuXG4gICAgcmV0dXJuIGVuYWJsZVR5cGVEZWZcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hHaXRodWJBY3Rpb25zKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGVuYWJsZUdpdGh1YkFjdGlvbnMgPSBhd2FpdCBjb25maXJtKHtcbiAgICAgIG1lc3NhZ2U6ICdFbmFibGUgR2l0aHViIEFjdGlvbnMgQ0knLFxuICAgICAgZGVmYXVsdDogdGhpcy5lbmFibGVHaXRodWJBY3Rpb25zLFxuICAgIH0pXG5cbiAgICByZXR1cm4gZW5hYmxlR2l0aHViQWN0aW9uc1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlucXVpcmVyUHJvamVjdFBhdGgoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGlucHV0KHtcbiAgICBtZXNzYWdlOiAnVGFyZ2V0IHBhdGggdG8gY3JlYXRlIHRoZSBwcm9qZWN0LCByZWxhdGl2ZSB0byBjd2QuJyxcbiAgfSkudGhlbigocGF0aCkgPT4ge1xuICAgIGlmICghcGF0aCkge1xuICAgICAgcmV0dXJuIGlucXVpcmVyUHJvamVjdFBhdGgoKVxuICAgIH1cbiAgICByZXR1cm4gcGF0aFxuICB9KVxufVxuIiwiaW1wb3J0IHsgcHJlUHVibGlzaCB9IGZyb20gJy4uL2FwaS9wcmUtcHVibGlzaC5qcydcbmltcG9ydCB7IEJhc2VQcmVQdWJsaXNoQ29tbWFuZCB9IGZyb20gJy4uL2RlZi9wcmUtcHVibGlzaC5qcydcblxuZXhwb3J0IGNsYXNzIFByZVB1Ymxpc2hDb21tYW5kIGV4dGVuZHMgQmFzZVByZVB1Ymxpc2hDb21tYW5kIHtcbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGNvbnN0ICducG0nIHwgJ2xlcm5hJyB0byBzdHJpbmdcbiAgICBhd2FpdCBwcmVQdWJsaXNoKHRoaXMuZ2V0T3B0aW9ucygpKVxuICB9XG59XG4iLCJpbXBvcnQgeyBpbnB1dCB9IGZyb20gJ0BpbnF1aXJlci9wcm9tcHRzJ1xuXG5pbXBvcnQgeyByZW5hbWVQcm9qZWN0IH0gZnJvbSAnLi4vYXBpL3JlbmFtZS5qcydcbmltcG9ydCB7IEJhc2VSZW5hbWVDb21tYW5kIH0gZnJvbSAnLi4vZGVmL3JlbmFtZS5qcydcblxuZXhwb3J0IGNsYXNzIFJlbmFtZUNvbW1hbmQgZXh0ZW5kcyBCYXNlUmVuYW1lQ29tbWFuZCB7XG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpXG4gICAgaWYgKCFvcHRpb25zLm5hbWUpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBhd2FpdCBpbnB1dCh7XG4gICAgICAgIG1lc3NhZ2U6IGBFbnRlciB0aGUgbmV3IHBhY2thZ2UgbmFtZSBpbiB0aGUgcGFja2FnZS5qc29uYCxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgb3B0aW9ucy5uYW1lID0gbmFtZVxuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMuYmluYXJ5TmFtZSkge1xuICAgICAgY29uc3QgYmluYXJ5TmFtZSA9IGF3YWl0IGlucHV0KHtcbiAgICAgICAgbWVzc2FnZTogYEVudGVyIHRoZSBuZXcgYmluYXJ5IG5hbWVgLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICBvcHRpb25zLmJpbmFyeU5hbWUgPSBiaW5hcnlOYW1lXG4gICAgfVxuICAgIGF3YWl0IHJlbmFtZVByb2plY3Qob3B0aW9ucylcbiAgfVxufVxuIiwiaW1wb3J0IHsgdW5pdmVyc2FsaXplQmluYXJpZXMgfSBmcm9tICcuLi9hcGkvdW5pdmVyc2FsaXplLmpzJ1xuaW1wb3J0IHsgQmFzZVVuaXZlcnNhbGl6ZUNvbW1hbmQgfSBmcm9tICcuLi9kZWYvdW5pdmVyc2FsaXplLmpzJ1xuXG5leHBvcnQgY2xhc3MgVW5pdmVyc2FsaXplQ29tbWFuZCBleHRlbmRzIEJhc2VVbml2ZXJzYWxpemVDb21tYW5kIHtcbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICBhd2FpdCB1bml2ZXJzYWxpemVCaW5hcmllcyh0aGlzLmdldE9wdGlvbnMoKSlcbiAgfVxufVxuIiwiaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4uL2FwaS92ZXJzaW9uLmpzJ1xuaW1wb3J0IHsgQmFzZVZlcnNpb25Db21tYW5kIH0gZnJvbSAnLi4vZGVmL3ZlcnNpb24uanMnXG5cbmV4cG9ydCBjbGFzcyBWZXJzaW9uQ29tbWFuZCBleHRlbmRzIEJhc2VWZXJzaW9uQ29tbWFuZCB7XG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgYXdhaXQgdmVyc2lvbih0aGlzLmdldE9wdGlvbnMoKSlcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ2xpIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG5pbXBvcnQgeyBjb2xsZWN0QXJ0aWZhY3RzIH0gZnJvbSAnLi9hcGkvYXJ0aWZhY3RzLmpzJ1xuaW1wb3J0IHsgYnVpbGRQcm9qZWN0IH0gZnJvbSAnLi9hcGkvYnVpbGQuanMnXG5pbXBvcnQgeyBjcmVhdGVOcG1EaXJzIH0gZnJvbSAnLi9hcGkvY3JlYXRlLW5wbS1kaXJzLmpzJ1xuaW1wb3J0IHsgbmV3UHJvamVjdCB9IGZyb20gJy4vYXBpL25ldy5qcydcbmltcG9ydCB7IHByZVB1Ymxpc2ggfSBmcm9tICcuL2FwaS9wcmUtcHVibGlzaC5qcydcbmltcG9ydCB7IHJlbmFtZVByb2plY3QgfSBmcm9tICcuL2FwaS9yZW5hbWUuanMnXG5pbXBvcnQgeyB1bml2ZXJzYWxpemVCaW5hcmllcyB9IGZyb20gJy4vYXBpL3VuaXZlcnNhbGl6ZS5qcydcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuL2FwaS92ZXJzaW9uLmpzJ1xuaW1wb3J0IHsgQXJ0aWZhY3RzQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvYXJ0aWZhY3RzLmpzJ1xuaW1wb3J0IHsgQnVpbGRDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9idWlsZC5qcydcbmltcG9ydCB7IENyZWF0ZU5wbURpcnNDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9jcmVhdGUtbnBtLWRpcnMuanMnXG5pbXBvcnQgeyBIZWxwQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvaGVscC5qcydcbmltcG9ydCB7IE5ld0NvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL25ldy5qcydcbmltcG9ydCB7IFByZVB1Ymxpc2hDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9wcmUtcHVibGlzaC5qcydcbmltcG9ydCB7IFJlbmFtZUNvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL3JlbmFtZS5qcydcbmltcG9ydCB7IFVuaXZlcnNhbGl6ZUNvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL3VuaXZlcnNhbGl6ZS5qcydcbmltcG9ydCB7IFZlcnNpb25Db21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy92ZXJzaW9uLmpzJ1xuaW1wb3J0IHsgQ0xJX1ZFUlNJT04gfSBmcm9tICcuL3V0aWxzL21pc2MuanMnXG5cbmV4cG9ydCBjb25zdCBjbGkgPSBuZXcgQ2xpKHtcbiAgYmluYXJ5TmFtZTogJ25hcGknLFxuICBiaW5hcnlWZXJzaW9uOiBDTElfVkVSU0lPTixcbn0pXG5cbmNsaS5yZWdpc3RlcihOZXdDb21tYW5kKVxuY2xpLnJlZ2lzdGVyKEJ1aWxkQ29tbWFuZClcbmNsaS5yZWdpc3RlcihDcmVhdGVOcG1EaXJzQ29tbWFuZClcbmNsaS5yZWdpc3RlcihBcnRpZmFjdHNDb21tYW5kKVxuY2xpLnJlZ2lzdGVyKFVuaXZlcnNhbGl6ZUNvbW1hbmQpXG5jbGkucmVnaXN0ZXIoUmVuYW1lQ29tbWFuZClcbmNsaS5yZWdpc3RlcihQcmVQdWJsaXNoQ29tbWFuZClcbmNsaS5yZWdpc3RlcihWZXJzaW9uQ29tbWFuZClcbmNsaS5yZWdpc3RlcihIZWxwQ29tbWFuZClcblxuLyoqXG4gKlxuICogQHVzYWdlXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IGNsaSA9IG5ldyBOYXBpQ2xpKClcbiAqXG4gKiBjbGkuYnVpbGQoe1xuICogICBjd2Q6ICcvcGF0aC90by95b3VyL3Byb2plY3QnLFxuICogfSlcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgTmFwaUNsaSB7XG4gIGFydGlmYWN0cyA9IGNvbGxlY3RBcnRpZmFjdHNcbiAgbmV3ID0gbmV3UHJvamVjdFxuICBidWlsZCA9IGJ1aWxkUHJvamVjdFxuICBjcmVhdGVOcG1EaXJzID0gY3JlYXRlTnBtRGlyc1xuICBwcmVQdWJsaXNoID0gcHJlUHVibGlzaFxuICByZW5hbWUgPSByZW5hbWVQcm9qZWN0XG4gIHVuaXZlcnNhbGl6ZSA9IHVuaXZlcnNhbGl6ZUJpbmFyaWVzXG4gIHZlcnNpb24gPSB2ZXJzaW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCdWlsZENvbW1hbmQoYXJnczogc3RyaW5nW10pOiBCdWlsZENvbW1hbmQge1xuICByZXR1cm4gY2xpLnByb2Nlc3MoWydidWlsZCcsIC4uLmFyZ3NdKSBhcyBCdWlsZENvbW1hbmRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFydGlmYWN0c0NvbW1hbmQoYXJnczogc3RyaW5nW10pOiBBcnRpZmFjdHNDb21tYW5kIHtcbiAgcmV0dXJuIGNsaS5wcm9jZXNzKFsnYXJ0aWZhY3RzJywgLi4uYXJnc10pIGFzIEFydGlmYWN0c0NvbW1hbmRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNyZWF0ZU5wbURpcnNDb21tYW5kKFxuICBhcmdzOiBzdHJpbmdbXSxcbik6IENyZWF0ZU5wbURpcnNDb21tYW5kIHtcbiAgcmV0dXJuIGNsaS5wcm9jZXNzKFsnY3JlYXRlLW5wbS1kaXJzJywgLi4uYXJnc10pIGFzIENyZWF0ZU5wbURpcnNDb21tYW5kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcmVQdWJsaXNoQ29tbWFuZChhcmdzOiBzdHJpbmdbXSk6IFByZVB1Ymxpc2hDb21tYW5kIHtcbiAgcmV0dXJuIGNsaS5wcm9jZXNzKFsncHJlLXB1Ymxpc2gnLCAuLi5hcmdzXSkgYXMgUHJlUHVibGlzaENvbW1hbmRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlbmFtZUNvbW1hbmQoYXJnczogc3RyaW5nW10pOiBSZW5hbWVDb21tYW5kIHtcbiAgcmV0dXJuIGNsaS5wcm9jZXNzKFsncmVuYW1lJywgLi4uYXJnc10pIGFzIFJlbmFtZUNvbW1hbmRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVuaXZlcnNhbGl6ZUNvbW1hbmQoYXJnczogc3RyaW5nW10pOiBVbml2ZXJzYWxpemVDb21tYW5kIHtcbiAgcmV0dXJuIGNsaS5wcm9jZXNzKFsndW5pdmVyc2FsaXplJywgLi4uYXJnc10pIGFzIFVuaXZlcnNhbGl6ZUNvbW1hbmRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVZlcnNpb25Db21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogVmVyc2lvbkNvbW1hbmQge1xuICByZXR1cm4gY2xpLnByb2Nlc3MoWyd2ZXJzaW9uJywgLi4uYXJnc10pIGFzIFZlcnNpb25Db21tYW5kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdDb21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogTmV3Q29tbWFuZCB7XG4gIHJldHVybiBjbGkucHJvY2VzcyhbJ25ldycsIC4uLmFyZ3NdKSBhcyBOZXdDb21tYW5kXG59XG5cbmV4cG9ydCB7IHBhcnNlVHJpcGxlIH0gZnJvbSAnLi91dGlscy90YXJnZXQuanMnXG5leHBvcnQge1xuICB0eXBlIEdlbmVyYXRlVHlwZURlZk9wdGlvbnMsXG4gIHR5cGUgV3JpdGVKc0JpbmRpbmdPcHRpb25zLFxuICB3cml0ZUpzQmluZGluZyxcbiAgZ2VuZXJhdGVUeXBlRGVmLFxufSBmcm9tICcuL2FwaS9idWlsZC5qcydcbmV4cG9ydCB7IHJlYWROYXBpQ29uZmlnIH0gZnJvbSAnLi91dGlscy9jb25maWcuanMnXG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2XSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFzQix1QkFBdEIsY0FBbURBLGtCQUFRO0NBQ3pELE9BQU8sUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDO0NBRTlCLE9BQU8sUUFBUUEsa0JBQVEsTUFBTSxFQUMzQixhQUNFLDZFQUNILENBQUM7Q0FFRixNQUFNQyxpQkFBTyxPQUFPLFNBQVMsUUFBUSxLQUFLLEVBQUUsRUFDMUMsYUFDRSxzSEFDSCxDQUFDO0NBRUYsYUFBc0JBLGlCQUFPLE9BQU8sb0JBQW9CLEVBQ3RELGFBQWEsbUNBQ2QsQ0FBQztDQUVGLGtCQUFrQkEsaUJBQU8sT0FBTyx1QkFBdUIsZ0JBQWdCLEVBQ3JFLGFBQWEsMEJBQ2QsQ0FBQztDQUVGLFlBQVlBLGlCQUFPLE9BQU8sc0JBQXNCLGVBQWUsRUFDN0QsYUFDRSxpR0FDSCxDQUFDO0NBRUYsU0FBU0EsaUJBQU8sT0FBTyxhQUFhLE9BQU8sRUFDekMsYUFBYSxpREFDZCxDQUFDO0NBRUYsaUJBQTBCQSxpQkFBTyxPQUFPLHNCQUFzQixFQUM1RCxhQUNFLG1GQUNILENBQUM7Q0FFRixhQUFhO0FBQ1gsU0FBTztHQUNMLEtBQUssS0FBSztHQUNWLFlBQVksS0FBSztHQUNqQixpQkFBaUIsS0FBSztHQUN0QixXQUFXLEtBQUs7R0FDaEIsUUFBUSxLQUFLO0dBQ2IsZ0JBQWdCLEtBQUs7R0FDdEI7OztBQTBDTCxTQUFnQiw2QkFBNkIsU0FBMkI7QUFDdEUsUUFBTztFQUNMLEtBQUssUUFBUSxLQUFLO0VBQ2xCLGlCQUFpQjtFQUNqQixXQUFXO0VBQ1gsUUFBUTtFQUNSLEdBQUc7RUFDSjs7Ozs7QUNyRkgsTUFBYSxnQkFBZ0IsY0FBc0I7Q0FDakQsTUFBTUMsaUNBQW9CLFFBQVEsYUFBYSxFQUM3QyxZQUFZLEVBRVYsRUFBRSxHQUFHO0FBQ0gsU0FBT0MsVUFBTyxNQUFNLEVBQUU7SUFFekIsRUFDRixDQUFDO0FBRUYsVUFBTSxRQUFRLEdBQUcsU0FDZixRQUFRLE1BQU1BLFVBQU8sTUFBTUEsVUFBTyxRQUFRLFNBQVMsQ0FBQyxFQUFFLEdBQUcsS0FBSztBQUNoRSxVQUFNLFFBQVEsR0FBRyxTQUNmLFFBQVEsTUFBTUEsVUFBTyxNQUFNQSxVQUFPLFNBQVMsWUFBWSxDQUFDLEVBQUUsR0FBRyxLQUFLO0FBQ3BFLFVBQU0sU0FBUyxHQUFHLFNBQ2hCLFFBQVEsTUFDTkEsVUFBTyxNQUFNQSxVQUFPLE1BQU0sVUFBVSxDQUFDLEVBQ3JDLEdBQUcsS0FBSyxLQUFLLFFBQ1gsZUFBZSxRQUFTLElBQUksU0FBUyxJQUFJLFVBQVcsSUFDckQsQ0FDRjtBQUVILFFBQU9EOztBQUVULE1BQWFBLFVBQVEsYUFBYSxRQUFROzs7O2dCQ2pDN0I7Ozs7QUNZYixNQUFhLGdCQUFnQkU7QUFDN0IsTUFBYSxpQkFBaUJDO0FBQzlCLE1BQWEsY0FBY0M7QUFDM0IsTUFBYSxnQkFBZ0JDO0FBQzdCLE1BQWEsYUFBYUM7QUFDMUIsTUFBYSxZQUFZQztBQUN6QixNQUFhLGVBQWVDO0FBRTVCLFNBQWdCLFdBQVcsUUFBZ0M7QUFDekQscUNBQWNDLE9BQUssQ0FBQyxXQUNaLFlBQ0EsTUFDUDs7QUFHSCxlQUFzQixlQUFlLFFBQWM7QUFDakQsS0FBSTtBQUVGLFVBRGMsTUFBTSxVQUFVQSxPQUFLLEVBQ3RCLGFBQWE7U0FDcEI7QUFDTixTQUFPOzs7QUFJWCxTQUFnQkMsT0FBMkIsR0FBTSxHQUFHLE1BQXVCO0FBQ3pFLFFBQU8sS0FBSyxRQUFRLEtBQUssUUFBUTtBQUMvQixNQUFJLE9BQU8sRUFBRTtBQUNiLFNBQU87SUFDTixFQUFFLENBQU07O0FBR2IsZUFBc0Isa0JBQ3BCLFFBQ0EsU0FDQTtBQUVBLEtBQUksQ0FEVyxNQUFNLFdBQVdELE9BQUssRUFDeEI7QUFDWCxVQUFNLG1CQUFtQkEsU0FBTztBQUNoQzs7Q0FFRixNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sY0FBY0EsUUFBTSxPQUFPLENBQUM7QUFDekQsT0FBTSxlQUFlQSxRQUFNLEtBQUssVUFBVTtFQUFFLEdBQUc7RUFBSyxHQUFHO0VBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQzs7QUFHN0UsTUFBYSxjQUFjRTs7OztBQ2xEM0IsTUFBTSxjQUFjLElBQUksSUFBSSxDQUFDLFdBQVcsT0FBTyxDQUFDO0FBRWhELE1BQWEsb0JBQW9CO0NBQy9CO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNEO0FBSUQsTUFBYSxrQkFBa0I7Q0FDN0I7Q0FDQTtDQUNBO0NBQ0E7Q0FDRDtBQUVELE1BQWFDLGdCQUF3QztDQUNuRCw4QkFBOEI7Q0FFOUIsaUNBQWlDO0NBQ2pDLCtCQUErQjtDQUMvQixpQ0FBaUM7Q0FDakMsMkJBQTJCO0NBQzVCO0FBb0JELE1BQU1DLGdCQUE0QztDQUNoRCxRQUFRO0NBQ1IsU0FBUztDQUNULE1BQU07Q0FDTixPQUFPO0NBQ1AsYUFBYTtDQUNiLFdBQVc7Q0FDWCxhQUFhO0NBQ2Q7QUFZRCxNQUFNQyxvQkFBOEM7Q0FDbEQsT0FBTztDQUNQLFNBQVM7Q0FDVCxRQUFRO0NBQ1IsU0FBUztDQUNULE1BQU07Q0FDUDtBQUVELE1BQWFDLHFCQUE4RCxFQUN6RSxRQUFRLENBQUMsT0FBTyxRQUFRLEVBQ3pCOzs7Ozs7Ozs7OztBQW9CRCxTQUFnQixZQUFZLFdBQTJCO0FBQ3JELEtBQ0UsY0FBYyxpQkFDZCxjQUFjLGtDQUNkLFVBQVUsV0FBVyxlQUFlLENBRXBDLFFBQU87RUFDTCxRQUFRO0VBQ1IsaUJBQWlCO0VBQ2pCLFVBQVU7RUFDVixNQUFNO0VBQ04sS0FBSztFQUNOO0NBS0gsTUFBTSxXQUhTLFVBQVUsU0FBUyxPQUFPLEdBQ3JDLEdBQUcsVUFBVSxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQzFCLFdBQ21CLE1BQU0sSUFBSTtDQUNqQyxJQUFJQztDQUNKLElBQUlDO0NBQ0osSUFBSUMsTUFBcUI7QUFDekIsS0FBSSxRQUFRLFdBQVcsRUFHcEIsRUFBQyxLQUFLLE9BQU87S0FNYixFQUFDLE9BQU8sS0FBSyxNQUFNLFFBQVE7QUFHOUIsS0FBSSxPQUFPLFlBQVksSUFBSSxJQUFJLEVBQUU7QUFDL0IsUUFBTTtBQUNOLFFBQU07O0NBRVIsTUFBTSxXQUFXLGtCQUFrQixRQUFTO0NBQzVDLE1BQU0sT0FBTyxjQUFjLFFBQVM7QUFFcEMsUUFBTztFQUNMLFFBQVE7RUFDUixpQkFBaUIsTUFBTSxHQUFHLFNBQVMsR0FBRyxLQUFLLEdBQUcsUUFBUSxHQUFHLFNBQVMsR0FBRztFQUNyRTtFQUNBO0VBQ0E7RUFDRDs7QUFHSCxTQUFnQix5QkFBaUM7Q0FDL0MsTUFBTSx3Q0FBZ0IsYUFBYSxFQUNqQyxLQUFLLFFBQVEsS0FDZCxDQUFDLENBQ0MsU0FBUyxPQUFPLENBQ2hCLE1BQU0sS0FBSyxDQUNYLE1BQU0sU0FBUyxLQUFLLFdBQVcsU0FBUyxDQUFDO0NBQzVDLE1BQU0scURBQVMsS0FBTSxNQUFNLEVBQWdCO0FBQzNDLEtBQUksQ0FBQyxPQUNILE9BQU0sSUFBSSxVQUFVLHdDQUF3QztBQUU5RCxRQUFPLFlBQVksT0FBTzs7QUFHNUIsU0FBZ0IsZ0JBQWdCLFFBQW9DO0FBQ2xFLFFBQU8sY0FBYzs7QUFHdkIsU0FBZ0IsZUFBZSxRQUF3QjtBQUNyRCxRQUFPLE9BQU8sUUFBUSxNQUFNLElBQUksQ0FBQyxhQUFhOzs7OztBQy9MaEQsSUFBWSxzREFBTDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBTUYsTUFBTSxzQkFBc0IsSUFBSSxJQUF5QjtDQUN2RCxDQUFDLFlBQVksT0FBTyx5QkFBeUI7Q0FDN0MsQ0FBQyxZQUFZLE9BQU8sMEJBQTBCO0NBQzlDLENBQUMsWUFBWSxPQUFPLG9DQUFvQztDQUN4RCxDQUFDLFlBQVksT0FBTyw0QkFBNEI7Q0FDaEQsQ0FBQyxZQUFZLE9BQU8sNkJBQTZCO0NBQ2pELENBQUMsWUFBWSxPQUFPLDZCQUE2QjtDQUNqRCxDQUFDLFlBQVksT0FBTyx1Q0FBdUM7Q0FDM0QsQ0FBQyxZQUFZLE9BQU8sdUNBQXVDO0NBQzNELENBQUMsWUFBWSxPQUFPLDRCQUE0QjtDQUNqRCxDQUFDO0FBUUYsU0FBUyxpQkFBaUIsR0FBd0I7Q0FDaEQsTUFBTSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0M7QUFFMUQsS0FBSSxDQUFDLFFBQ0gsT0FBTSxJQUFJLE1BQU0sa0NBQWtDLEVBQUU7Q0FHdEQsTUFBTSxHQUFHLE9BQU8sT0FBTyxTQUFTO0FBRWhDLFFBQU87RUFDTCxPQUFPLFNBQVMsTUFBTTtFQUN0QixPQUFPLFNBQVMsTUFBTTtFQUN0QixPQUFPLFNBQVMsTUFBTTtFQUN2Qjs7QUFHSCxTQUFTLHFCQUFxQixhQUF5QztDQUNyRSxNQUFNLGNBQWMsb0JBQW9CLElBQUksWUFBWTtBQUV4RCxLQUFJLENBQUMsWUFDSCxRQUFPLENBQUMsaUJBQWlCLFNBQVMsQ0FBQztBQUdyQyxRQUFPLFlBQVksTUFBTSxJQUFJLENBQUMsSUFBSSxpQkFBaUI7O0FBR3JELFNBQVMsb0JBQW9CLFVBQWlDO0NBQzVELE1BQU1DLGVBQXlCLEVBQUU7QUFDakMsVUFBUyxTQUFTLEdBQUcsTUFBTTtFQUN6QixJQUFJLE1BQU07QUFDVixNQUFJLE1BQU0sR0FBRztHQUNYLE1BQU0sY0FBYyxTQUFTLElBQUk7QUFDakMsVUFBTyxLQUFLLFlBQVksUUFBUTs7QUFHbEMsU0FBTyxHQUFHLE1BQU0sSUFBSSxLQUFLLE9BQU8sS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFO0FBQzdELGVBQWEsS0FBSyxJQUFJO0dBQ3RCO0FBRUYsUUFBTyxhQUFhLEtBQUssSUFBSTs7QUFHL0IsU0FBZ0Isc0JBQXNCLGFBQWtDO0FBQ3RFLFFBQU8sb0JBQW9CLHFCQUFxQixZQUFZLENBQUM7Ozs7O0FDMUIvRCxlQUFzQixjQUFjLGNBQXNCO0FBQ3hELEtBQUksQ0FBQ0MsZ0JBQUcsV0FBVyxhQUFhLENBQzlCLE9BQU0sSUFBSSxNQUFNLCtCQUErQixlQUFlO0NBR2hFLE1BQU0sNkNBQ0osU0FDQTtFQUFDO0VBQVk7RUFBbUI7RUFBYztFQUFvQjtFQUFJLEVBQ3RFLEVBQUUsT0FBTyxRQUFRLENBQ2xCO0NBRUQsSUFBSSxTQUFTO0NBQ2IsSUFBSSxTQUFTO0NBQ2IsSUFBSSxTQUFTO0FBR2IsY0FBYSxPQUFPLEdBQUcsU0FBUyxTQUFTO0FBQ3ZDLFlBQVU7R0FDVjtBQUVGLGNBQWEsT0FBTyxHQUFHLFNBQVMsU0FBUztBQUN2QyxZQUFVO0dBQ1Y7QUFFRixPQUFNLElBQUksU0FBZSxjQUFZO0FBQ25DLGVBQWEsR0FBRyxVQUFVLFNBQVM7QUFDakMsWUFBUyxRQUFRO0FBQ2pCLGNBQVM7SUFDVDtHQUNGO0FBS0YsS0FBSSxXQUFXLEdBQUc7RUFDaEIsTUFBTSxnQkFBZ0IsbUNBQW1DO0FBQ3pELFFBQU0sSUFBSSxNQUFNLEdBQUcsY0FBYyx5QkFBeUIsVUFBVSxFQUNsRSxPQUFPLElBQUksTUFBTSxjQUFjLEVBQ2hDLENBQUM7O0FBR0osS0FBSTtBQUNGLFNBQU8sS0FBSyxNQUFNLE9BQU87VUFDbEIsR0FBRztBQUNWLFFBQU0sSUFBSSxNQUFNLHVDQUF1QyxFQUFFLE9BQU8sR0FBRyxDQUFDOzs7Ozs7QUNnRXhFLGVBQXNCLGVBQ3BCLFFBQ0EsWUFDcUI7QUFDckIsS0FBSSxjQUFjLENBQUUsTUFBTSxXQUFXLFdBQVcsQ0FDOUMsT0FBTSxJQUFJLE1BQU0sK0JBQStCLGFBQWE7QUFFOUQsS0FBSSxDQUFFLE1BQU0sV0FBV0MsT0FBSyxDQUMxQixPQUFNLElBQUksTUFBTSw2QkFBNkJBLFNBQU87Q0FHdEQsTUFBTSxVQUFVLE1BQU0sY0FBY0EsUUFBTSxPQUFPO0NBQ2pELElBQUk7QUFDSixLQUFJO0FBQ0YsWUFBVSxLQUFLLE1BQU0sUUFBUTtVQUN0QixHQUFHO0FBQ1YsUUFBTSxJQUFJLE1BQU0sbUNBQW1DQSxVQUFRLEVBQ3pELE9BQU8sR0FDUixDQUFDOztDQUdKLElBQUlDO0FBQ0osS0FBSSxZQUFZO0VBQ2QsTUFBTSxnQkFBZ0IsTUFBTSxjQUFjLFlBQVksT0FBTztBQUM3RCxNQUFJO0FBQ0YscUJBQWtCLEtBQUssTUFBTSxjQUFjO1dBQ3BDLEdBQUc7QUFDVixTQUFNLElBQUksTUFBTSxxQ0FBcUMsY0FBYyxFQUNqRSxPQUFPLEdBQ1IsQ0FBQzs7O0NBSU4sTUFBTSxpQkFBaUIsUUFBUSxRQUFRLEVBQUU7QUFDekMsS0FBSSxRQUFRLFFBQVEsaUJBQWlCO0VBQ25DLE1BQU0sdUNBQXdCRCxPQUFLO0VBQ25DLE1BQU0sK0NBQWdDLFdBQVk7QUFDbEQsVUFBUSwyQkFFSixzQkFBc0IsWUFBWSx3QkFBd0Isb0JBQW9CLHlEQUMvRSxDQUNGOztBQUVILEtBQUksZ0JBQ0YsUUFBTyxPQUFPLGdCQUFnQixnQkFBZ0I7Q0FFaEQsTUFBTUUsbUNBQ0o7RUFDRSxZQUFZO0VBQ1osYUFBYSxRQUFRO0VBQ3JCLFNBQVMsRUFBRTtFQUNYLGFBQWE7RUFDYixXQUFXO0VBQ1osdUJBQ0ksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQ2xDO0NBRUQsSUFBSUMsVUFBb0IsZUFBZSxXQUFXLEVBQUU7QUFHcEQscUVBQUksZUFBZ0IsTUFBTTtBQUN4QixVQUFRLDJCQUVKLHFFQUNELENBQ0Y7QUFDRCxhQUFXLGFBQWEsZUFBZTs7QUFHekMsS0FBSSxDQUFDLFFBQVEsUUFBUTs7RUFDbkIsSUFBSSxtQkFBbUI7RUFDdkIsTUFBTSxnQ0FDSixxRUFDRDtBQUNELCtCQUFJLGVBQWUsdUZBQVMsVUFBVTtBQUNwQyxzQkFBbUI7QUFDbkIsV0FBUSxLQUFLLFFBQVE7QUFDckIsYUFBVSxRQUFRLE9BQU8sZ0JBQWdCOztBQUczQyxnQ0FBSSxlQUFlLDJHQUFTLDRGQUFZLFFBQVE7QUFDOUMsYUFBVSxRQUFRLE9BQU8sZUFBZSxRQUFRLFdBQVc7QUFDM0QsT0FBSSxDQUFDLGlCQUNILFNBQVEsS0FBSyxRQUFROzs7QUFPM0IsS0FEc0IsSUFBSSxJQUFJLFFBQVEsQ0FDcEIsU0FBUyxRQUFRLFFBQVE7RUFDekMsTUFBTSxrQkFBa0IsUUFBUSxNQUM3QixRQUFRLFVBQVUsUUFBUSxRQUFRLE9BQU8sS0FBSyxNQUNoRDtBQUNELFFBQU0sSUFBSSxNQUFNLHNDQUFzQyxrQkFBa0I7O0FBRzFFLFlBQVcsVUFBVSxRQUFRLElBQUksWUFBWTtBQUU3QyxRQUFPOzs7OztBQzdQVCxTQUFnQixzQkFBc0IsTUFBYyxLQUFhO0FBQy9ELEtBQUksa0JBQWtCLElBQUksRUFBRTtBQUMxQixVQUFNLHNDQUFzQyxLQUFLO0FBQ2pEOztBQUdGLEtBQUk7QUFDRixVQUFNLCtCQUErQixLQUFLO0FBQzFDLG1DQUFTLGlCQUFpQixRQUFRLEVBQ2hDLE9BQU8sV0FDUixDQUFDO1VBQ0ssR0FBRztBQUNWLFFBQU0sSUFBSSxNQUFNLG1DQUFtQyxRQUFRLEVBQ3pELE9BQU8sR0FDUixDQUFDOzs7QUFJTixTQUFTLGtCQUFrQixLQUFhO0FBQ3RDLFNBQU0sOEJBQThCLElBQUk7QUFDeEMsS0FBSTtBQUNGLG1DQUFTLGNBQWMsT0FBTyxFQUM1QixPQUFPLFVBQ1IsQ0FBQztBQUNGLFVBQU0sNkJBQTZCLElBQUk7QUFDdkMsU0FBTztTQUNEO0FBQ04sVUFBTSxpQ0FBaUMsSUFBSTtBQUMzQyxTQUFPOzs7Ozs7QUM1QlgsTUFBTSxzQkFBc0I7QUFDNUIsTUFBYSwwQkFBMEI7OztBQUl2QyxJQUFLLHNEQUFMO0FBQ0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQVRHO0FBc0JMLFNBQVMsWUFDUCxNQUNBLFdBQ0EsT0FDQSxVQUFVLE9BQ0Y7Q0FDUixJQUFJLElBQUksS0FBSyxVQUFVO0FBQ3ZCLFNBQVEsS0FBSyxNQUFiO0VBQ0UsS0FBSyxZQUFZO0FBQ2YsUUFBSyxvQkFBb0IsS0FBSyxLQUFLLE1BQU0sS0FBSyxJQUFJO0FBQ2xEO0VBRUYsS0FBSyxZQUFZO0FBQ2YsUUFBSyxlQUFlLEtBQUssS0FBSyxPQUFPLEtBQUs7QUFDMUM7RUFFRixLQUFLLFlBQVk7R0FDZixNQUFNLFdBQVcsWUFBWSxlQUFlO0FBQzVDLFFBQUssR0FBRyxjQUFjLFFBQVEsQ0FBQyxHQUFHLFNBQVMsR0FBRyxLQUFLLEtBQUssTUFBTSxLQUFLLElBQUk7QUFDdkU7RUFFRixLQUFLLFlBQVk7QUFDZixPQUFJLFVBQ0YsTUFBSyxHQUFHLGNBQWMsUUFBUSxDQUFDLGNBQWMsS0FBSyxLQUFLLE1BQU0sS0FBSyxJQUFJO09BRXRFLE1BQUssZUFBZSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksV0FBVyxRQUFRLEdBQUcsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDO0FBRTFGO0VBRUYsS0FBSyxZQUFZO0dBQ2YsTUFBTSxhQUFhLEtBQUssVUFBVSxZQUFZLEtBQUssWUFBWTtBQUMvRCxPQUFJLEtBQUssU0FBUztJQUVoQixNQUFNLGVBQWUsS0FBSyxRQUFRLE1BQU0sa0JBQWtCO0FBQzFELFFBQUksY0FBYztLQUNoQixNQUFNLENBQUMsR0FBRyxTQUFTLFNBQVMsYUFBYSxHQUN0QyxNQUFNLElBQUksQ0FDVixLQUFLLE1BQU0sRUFBRSxNQUFNLENBQUM7QUFDdkIsVUFBSyxNQUNILEtBQUssTUFDTCxrQkFBa0IsTUFBTSxvQkFBb0IsRUFBRSxJQUFJLFFBQVE7OztBQUdoRSxRQUFLLEdBQUcsY0FBYyxRQUFRLENBQUMsU0FBUyxLQUFLLE9BQU8sV0FBVyxNQUFNLEtBQUssSUFBSTtBQUM5RSxPQUFJLEtBQUssaUJBQWlCLEtBQUssa0JBQWtCLEtBQUssS0FDcEQsTUFBSyxpQkFBaUIsS0FBSyxjQUFjLEtBQUssS0FBSztBQUVyRDtFQUVGLEtBQUssWUFBWTtBQUNmLFFBQUssR0FBRyxjQUFjLFFBQVEsQ0FBQyxHQUFHLEtBQUs7QUFDdkM7RUFFRixRQUNFLE1BQUssS0FBSzs7QUFHZCxRQUFPLG1CQUFtQixHQUFHLE1BQU07O0FBR3JDLFNBQVMsY0FBYyxTQUEwQjtBQUMvQyxLQUFJLFFBQ0YsUUFBTztBQUdULFFBQU87O0FBR1QsZUFBc0IsZUFDcEIsc0JBQ0EsV0FDQTtDQUNBLE1BQU1DLFlBQW9CLEVBQUU7Q0FFNUIsTUFBTSxjQUFjLGtCQURQLE1BQU0seUJBQXlCLHFCQUFxQixDQUN0QjtBQXVDM0MsUUFBTztFQUNMLDRCQXJDTyxNQUFNLEtBQUssWUFBWSxFQUFFLEVBQUUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxDQUMxRCxLQUFLLENBQUMsV0FBVyxVQUFVO0FBQzFCLE9BQUksY0FBYyxvQkFDaEIsUUFBTyxLQUNKLEtBQUssUUFBUTtBQUNaLFlBQVEsSUFBSSxNQUFaO0tBQ0UsS0FBSyxZQUFZO0tBQ2pCLEtBQUssWUFBWTtLQUNqQixLQUFLLFlBQVk7S0FDakIsS0FBSyxZQUFZO0tBQ2pCLEtBQUssWUFBWTtBQUNmLGdCQUFRLEtBQUssSUFBSSxLQUFLO0FBQ3RCLFVBQUksSUFBSSxpQkFBaUIsSUFBSSxrQkFBa0IsSUFBSSxLQUNqRCxXQUFRLEtBQUssSUFBSSxjQUFjO0FBRWpDO0tBRUYsUUFDRTs7QUFFSixXQUFPLFlBQVksS0FBSyxXQUFXLEVBQUU7S0FDckMsQ0FDRCxLQUFLLE9BQU87UUFDVjtBQUNMLGNBQVEsS0FBSyxVQUFVO0lBQ3ZCLElBQUksY0FBYztBQUNsQixtQkFBZSw0QkFBNEIsVUFBVTtBQUNyRCxTQUFLLE1BQU0sT0FBTyxLQUNoQixnQkFBZSxZQUFZLEtBQUssV0FBVyxHQUFHLEtBQUssR0FBRztBQUV4RCxtQkFBZTtBQUNmLFdBQU87O0lBRVQsQ0FDRCxLQUFLLE9BQU8sR0FBRztFQUlsQjtFQUNEOztBQUdILGVBQWUseUJBQXlCLE1BQWM7QUF1QnBELFNBdEJnQixNQUFNLGNBQWMsTUFBTSxPQUFPLEVBRzlDLE1BQU0sS0FBSyxDQUNYLE9BQU8sUUFBUSxDQUNmLEtBQUssU0FBUztBQUNiLFNBQU8sS0FBSyxNQUFNO0VBQ2xCLE1BQU0sU0FBUyxLQUFLLE1BQU0sS0FBSztBQUUvQixNQUFJLE9BQU8sT0FDVCxRQUFPLFNBQVMsT0FBTyxPQUFPLFFBQVEsUUFBUSxLQUFLO0FBSXJELE1BQUksT0FBTyxJQUNULFFBQU8sTUFBTSxPQUFPLElBQUksUUFBUSxRQUFRLEtBQUs7QUFFL0MsU0FBTztHQUNQLENBSVEsTUFBTSxHQUFHLE1BQU07QUFDekIsTUFBSSxFQUFFLFNBQVMsWUFBWSxRQUFRO0FBQ2pDLE9BQUksRUFBRSxTQUFTLFlBQVksT0FDekIsUUFBTyxFQUFFLEtBQUssY0FBYyxFQUFFLEtBQUs7QUFFckMsVUFBTzthQUNFLEVBQUUsU0FBUyxZQUFZLE9BQ2hDLFFBQU87TUFFUCxRQUFPLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSztHQUVyQzs7QUFHSixTQUFTLGtCQUFrQixNQUFpRDtDQUMxRSxNQUFNLG1DQUFtQixJQUFJLEtBQTRCO0NBQ3pELE1BQU0sNEJBQVksSUFBSSxLQUEwQjtBQUVoRCxNQUFLLE1BQU0sT0FBTyxNQUFNO0VBQ3RCLE1BQU0sWUFBWSxJQUFJLFVBQVU7QUFDaEMsTUFBSSxDQUFDLGlCQUFpQixJQUFJLFVBQVUsQ0FDbEMsa0JBQWlCLElBQUksV0FBVyxFQUFFLENBQUM7RUFHckMsTUFBTSxRQUFRLGlCQUFpQixJQUFJLFVBQVU7QUFFN0MsTUFBSSxJQUFJLFNBQVMsWUFBWSxRQUFRO0FBQ25DLFNBQU0sS0FBSyxJQUFJO0FBQ2YsYUFBVSxJQUFJLElBQUksTUFBTSxJQUFJO2FBQ25CLElBQUksU0FBUyxZQUFZLFNBQVM7R0FDM0MsTUFBTSxXQUFXLFVBQVUsSUFBSSxJQUFJLEtBQUs7QUFDeEMsT0FBSSxTQUNGLFVBQVMsVUFBVSxJQUFJO2FBRWhCLElBQUksU0FBUyxZQUFZLE1BQU07R0FFeEMsTUFBTSxXQUFXLFVBQVUsSUFBSSxJQUFJLEtBQUs7QUFDeEMsT0FBSSxVQUFVO0FBQ1osUUFBSSxTQUFTLElBQ1gsVUFBUyxPQUFPO0FBR2xCLGFBQVMsT0FBTyxJQUFJO0FBRXBCLFFBQUksU0FBUyxJQUNYLFVBQVMsTUFBTSxTQUFTLElBQUksUUFBUSxRQUFRLEtBQUs7O1FBSXJELE9BQU0sS0FBSyxJQUFJOztBQUluQixRQUFPOztBQUdULFNBQWdCLG1CQUFtQixLQUFhLE9BQXVCO0NBQ3JFLElBQUksZUFBZTtBQXlDbkIsUUF4Q2UsSUFDWixNQUFNLEtBQUssQ0FDWCxLQUFLLFNBQVM7QUFDYixTQUFPLEtBQUssTUFBTTtBQUNsQixNQUFJLFNBQVMsR0FDWCxRQUFPO0VBR1QsTUFBTSx1QkFBdUIsS0FBSyxXQUFXLElBQUk7RUFDakQsTUFBTSxtQkFBbUIsS0FBSyxTQUFTLElBQUk7RUFDM0MsTUFBTSxtQkFBbUIsS0FBSyxTQUFTLElBQUk7RUFDM0MsTUFBTSxvQkFBb0IsS0FBSyxTQUFTLElBQUk7RUFDNUMsTUFBTSxnQkFBZ0IsS0FBSyxXQUFXLElBQUk7RUFFMUMsSUFBSSxjQUFjO0FBQ2xCLE9BQUssb0JBQW9CLHNCQUFzQixDQUFDLHNCQUFzQjtBQUNwRSxtQkFBZ0I7QUFDaEIsbUJBQWdCLGVBQWUsS0FBSztTQUMvQjtBQUNMLE9BQ0Usb0JBQ0EsZUFBZSxLQUNmLENBQUMsd0JBQ0QsQ0FBQyxjQUVELGlCQUFnQjtBQUVsQixrQkFBZSxlQUFlOztBQUdoQyxNQUFJLHFCQUNGLGdCQUFlO0FBS2pCLFNBRlUsR0FBRyxJQUFJLE9BQU8sWUFBWSxHQUFHO0dBR3ZDLENBQ0QsS0FBSyxLQUFLOzs7OztBQ25RZixlQUFzQixXQUFXLFNBQTZCO0NBQzVELE1BQU0sZUFBZSxHQUFHLGlDQUE0QixRQUFRLEtBQUssR0FBRyxNQUFNO0FBSzFFLFFBSmUsTUFBTSxlQUNuQixZQUFZLFFBQVEsbUJBQW1CLGVBQWUsRUFDdEQsUUFBUSxhQUFhLFlBQVksUUFBUSxXQUFXLEdBQUcsT0FDeEQ7Ozs7O0FDRUgsTUFBTUMsVUFBUSxhQUFhLFlBQVk7QUFFdkMsZUFBc0IsaUJBQWlCLGFBQStCO0NBQ3BFLE1BQU0sVUFBVSw2QkFBNkIsWUFBWTtDQUV6RCxNQUFNLGVBQWUsR0FBRyxpQ0FBNEIsUUFBUSxLQUFLLEdBQUcsTUFBTTtDQUMxRSxNQUFNLGtCQUFrQixZQUFZLFFBQVEsZ0JBQWdCO0NBQzVELE1BQU0sRUFBRSxTQUFTLFlBQVksZ0JBQWdCLE1BQU0sZUFDakQsaUJBQ0EsUUFBUSxhQUFhLFlBQVksUUFBUSxXQUFXLEdBQUcsT0FDeEQ7Q0FFRCxNQUFNLFdBQVcsUUFBUSxLQUFLLGlDQUN2QixRQUFRLEtBQUssUUFBUSxRQUFRLFNBQVMsZ0JBQWdCLENBQzVEO0NBRUQsTUFBTSxzQkFBc0IsSUFBSSxJQUM5QixRQUNHLFFBQVEsYUFBYSxTQUFTLFNBQVMsWUFBWSxDQUNuRCxTQUFTLE1BQ1I7O3FEQUFtQixFQUFFLHlGQUFXLEtBQUssTUFBTSxHQUFHLEVBQUUsU0FBUyxHQUFHLElBQUk7R0FDakUsQ0FDQSxPQUFPLFFBQVEsQ0FDbkI7QUFFRCxPQUFNLHdDQUF5QixRQUFRLEtBQUssUUFBUSxVQUFVLENBQUMsQ0FBQyxNQUM3RCxXQUNDLFFBQVEsSUFDTixPQUFPLElBQUksT0FBTyxhQUFhO0FBQzdCLFVBQU0sS0FBSyxTQUFTQyxVQUFPLGFBQWEsU0FBUyxDQUFDLEdBQUc7RUFDckQsTUFBTSxnQkFBZ0IsTUFBTSxjQUFjLFNBQVM7RUFDbkQsTUFBTSxrQ0FBbUIsU0FBUztFQUNsQyxNQUFNLFFBQVEsV0FBVyxLQUFLLE1BQU0sSUFBSTtFQUN4QyxNQUFNLGtCQUFrQixNQUFNLEtBQUs7RUFDbkMsTUFBTSxjQUFjLE1BQU0sS0FBSyxJQUFJO0FBRW5DLE1BQUksZ0JBQWdCLFlBQVk7QUFDOUIsV0FBTSxLQUNKLElBQUksWUFBWSx5QkFBeUIsV0FBVyxTQUNyRDtBQUNEOztFQUVGLE1BQU1DLFFBQU0sU0FBUyxNQUFNLFVBQVFBLE1BQUksU0FBUyxnQkFBZ0IsQ0FBQztBQUNqRSxNQUFJLENBQUNBLFNBQU8sb0JBQW9CLElBQUksZ0JBQWdCLEVBQUU7QUFDcEQsV0FBTSxLQUNKLElBQUksZ0JBQWdCLGlFQUNyQjtBQUNEOztBQUVGLE1BQUksQ0FBQ0EsTUFDSCxPQUFNLElBQUksTUFBTSx5QkFBeUIsV0FBVztFQUd0RCxNQUFNLG1DQUFvQkEsT0FBSyxXQUFXLEtBQUs7QUFDL0MsVUFBTSxLQUNKLDBCQUEwQkQsVUFBTyxhQUFhLGFBQWEsQ0FBQyxHQUM3RDtBQUNELFFBQU0sZUFBZSxjQUFjLGNBQWM7RUFDakQsTUFBTSw2REFDRSxnQkFBZ0IsQ0FBQyxLQUN2QixXQUFXLEtBQ1o7QUFDRCxVQUFNLEtBQ0osMEJBQTBCQSxVQUFPLGFBQWEsa0JBQWtCLENBQUMsR0FDbEU7QUFDRCxRQUFNLGVBQWUsbUJBQW1CLGNBQWM7R0FDdEQsQ0FDSCxDQUNKO0NBRUQsTUFBTSxhQUFhLFFBQVEsTUFBTSxNQUFNLEVBQUUsYUFBYSxPQUFPO0FBQzdELEtBQUksWUFBWTtFQUNkLE1BQU0sOEJBQ0osUUFBUSxLQUNSLFFBQVEsUUFDUixXQUFXLGdCQUNaO0VBQ0QsTUFBTSw4QkFDSixRQUFRLGtCQUFrQixRQUFRLEtBQ2xDLEdBQUcsV0FBVyxXQUNmO0VBQ0QsTUFBTSxpQ0FDSixRQUFRLGtCQUFrQixRQUFRLEtBQ2xDLGtCQUNEO0VBQ0QsTUFBTSxtQ0FDSixRQUFRLGtCQUFrQixRQUFRLEtBQ2xDLEdBQUcsV0FBVyxrQkFDZjtFQUNELE1BQU0sd0NBQ0osUUFBUSxrQkFBa0IsUUFBUSxLQUNsQywwQkFDRDtBQUNELFVBQU0sS0FDSiwyQkFBMkJBLFVBQU8sYUFDaEMsUUFDRCxDQUFDLFFBQVFBLFVBQU8sYUFBYSxRQUFRLENBQUMsR0FDeEM7QUFDRCxRQUFNLG1DQUNDLFNBQVMsR0FBRyxXQUFXLFdBQVcsRUFDdkMsTUFBTSxjQUFjLFFBQVEsQ0FDN0I7QUFDRCxVQUFNLEtBQ0osMEJBQTBCQSxVQUFPLGFBQy9CLFdBQ0QsQ0FBQyxRQUFRQSxVQUFPLGFBQWEsUUFBUSxDQUFDLEdBQ3hDO0FBQ0QsUUFBTSxtQ0FDQyxTQUFTLGtCQUFrQixFQUNoQyxNQUFNLGNBQWMsV0FBVyxDQUNoQztBQUNELFVBQU0sS0FDSixpQ0FBaUNBLFVBQU8sYUFDdEMsYUFDRCxDQUFDLFFBQVFBLFVBQU8sYUFBYSxRQUFRLENBQUMsR0FDeEM7QUFDRCxRQUFNLG1DQUNDLFNBQVMsR0FBRyxXQUFXLGtCQUFrQixHQUU3QyxNQUFNLGNBQWMsY0FBYyxPQUFPLEVBQUUsUUFDMUMseURBQ0EsWUFBWSxZQUFZLHlEQUN6QixDQUNGO0FBQ0QsVUFBTSxLQUNKLGtDQUFrQ0EsVUFBTyxhQUN2QyxrQkFDRCxDQUFDLFFBQVFBLFVBQU8sYUFBYSxRQUFRLENBQUMsR0FDeEM7QUFDRCxRQUFNLG1DQUNDLFNBQVMsMEJBQTBCLEVBQ3hDLE1BQU0sY0FBYyxrQkFBa0IsQ0FDdkM7OztBQUlMLGVBQWUsb0JBQW9CLE1BQWM7Q0FDL0MsTUFBTSxRQUFRLE1BQU0sYUFBYSxNQUFNLEVBQUUsZUFBZSxNQUFNLENBQUM7Q0FDL0QsTUFBTSxlQUFlLE1BQ2xCLFFBQ0UsU0FDQyxLQUFLLFFBQVEsS0FDWixLQUFLLEtBQUssU0FBUyxRQUFRLElBQUksS0FBSyxLQUFLLFNBQVMsUUFBUSxFQUM5RCxDQUNBLEtBQUssNkJBQWMsTUFBTSxLQUFLLEtBQUssQ0FBQztDQUV2QyxNQUFNLE9BQU8sTUFBTSxRQUFRLFNBQVMsS0FBSyxhQUFhLENBQUM7QUFDdkQsTUFBSyxNQUFNQyxTQUFPLEtBQ2hCLEtBQUlBLE1BQUksU0FBUyxlQUNmLGNBQWEsS0FBSyxHQUFJLE1BQU0sd0NBQXlCLE1BQU1BLE1BQUksS0FBSyxDQUFDLENBQUU7QUFHM0UsUUFBTzs7Ozs7QUN6S1QsU0FBZ0IsaUJBQ2QsV0FDQSxTQUNBLFFBQ0EsZ0JBQ1E7QUFDUixRQUFPLEdBQUcsY0FBYztFQUN4QixvQkFBb0IsV0FBVyxTQUFTLGVBQWUsQ0FBQzs7RUFFeEQsT0FDQyxLQUFLLFVBQVUsa0JBQWtCLE1BQU0sbUJBQW1CLFFBQVEsQ0FDbEUsS0FBSyxLQUFLLENBQUM7OztBQUlkLFNBQWdCLGlCQUNkLFdBQ0EsU0FDQSxRQUNBLGdCQUNRO0FBQ1IsUUFBTyxHQUFHLGNBQWM7Ozs7O0VBS3hCLG9CQUFvQixXQUFXLFNBQVMsZUFBZSxDQUFDO1VBQ2hELE9BQU8sS0FBSyxLQUFLLENBQUM7RUFDMUIsT0FBTyxLQUFLLFVBQVUsWUFBWSxNQUFNLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQzs7O0FBSTFELE1BQU0sZ0JBQWdCOzs7OztBQU10QixTQUFTLG9CQUNQLFdBQ0EsU0FDQSxnQkFDUTtDQUNSLFNBQVMsYUFBYSxPQUFlLFlBQVksR0FBRztFQUNsRCxNQUFNLFdBQVcsSUFBSSxPQUFPLFlBQVksRUFBRTtFQUMxQyxNQUFNLFFBQVEsSUFBSSxPQUFPLFVBQVU7QUFtQm5DLFNBQU87RUFDVCxNQUFNLG9CQUFvQixVQUFVLEdBQUcsTUFBTTtFQUM3QyxTQUFTO0VBQ1QsTUFBTTtFQUNOLFNBQVMsR0F0QmMsaUJBQ2pCO0VBQ04sU0FBUztFQUNULE1BQU0sMkJBQTJCLFFBQVEsR0FBRyxNQUFNO0VBQ2xELE1BQU0seUNBQXlDLFFBQVEsR0FBRyxNQUFNO0VBQ2hFLE1BQU0saUNBQWlDLGVBQWU7RUFDdEQsTUFBTSx3RUFBd0UsZUFBZTtFQUM3RixNQUFNO0VBQ04sTUFBTTtFQUNOLFNBQVM7RUFDVCxNQUFNO0VBQ04sU0FBUyxLQUNIO0VBQ04sU0FBUztFQUNULE1BQU0sa0JBQWtCLFFBQVEsR0FBRyxNQUFNO0VBQ3pDLFNBQVM7RUFDVCxNQUFNO0VBQ04sU0FBUzs7QUFRVCxRQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFrRUQsYUFBYSxnQkFBZ0IsQ0FBQzs7UUFFOUIsYUFBYSxtQkFBbUIsQ0FBQzs7Ozs7OztVQU8vQixhQUFhLGdCQUFnQixDQUFDOztVQUU5QixhQUFhLGlCQUFpQixDQUFDOzs7UUFHakMsYUFBYSxrQkFBa0IsQ0FBQzs7UUFFaEMsYUFBYSxtQkFBbUIsQ0FBQzs7Ozs7TUFLbkMsYUFBYSxvQkFBb0IsRUFBRSxDQUFDOztRQUVsQyxhQUFhLGFBQWEsQ0FBQzs7UUFFM0IsYUFBYSxlQUFlLENBQUM7Ozs7OztRQU03QixhQUFhLGNBQWMsQ0FBQzs7UUFFNUIsYUFBYSxnQkFBZ0IsQ0FBQzs7Ozs7OztVQU81QixhQUFhLGtCQUFrQixHQUFHLENBQUM7O1VBRW5DLGFBQWEsaUJBQWlCLEdBQUcsQ0FBQzs7OztVQUlsQyxhQUFhLG9CQUFvQixHQUFHLENBQUM7O1VBRXJDLGFBQWEsbUJBQW1CLEdBQUcsQ0FBQzs7OztVQUlwQyxhQUFhLHdCQUF3QixHQUFHLENBQUM7O1VBRXpDLGFBQWEsdUJBQXVCLEdBQUcsQ0FBQzs7OztVQUl4QyxhQUFhLHNCQUFzQixHQUFHLENBQUM7O1VBRXZDLGFBQWEscUJBQXFCLEdBQUcsQ0FBQzs7OztVQUl0QyxhQUFhLHNCQUFzQixHQUFHLENBQUM7O1VBRXZDLGFBQWEscUJBQXFCLEdBQUcsQ0FBQzs7O1FBR3hDLGFBQWEsa0JBQWtCLENBQUM7O1FBRWhDLGFBQWEsa0JBQWtCLENBQUM7Ozs7OztRQU1oQyxhQUFhLG9CQUFvQixDQUFDOztRQUVsQyxhQUFhLGtCQUFrQixDQUFDOztRQUVoQyxhQUFhLGtCQUFrQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7K0JBZVQsVUFBVTs7Ozs7Ozs7OytCQVNWLFFBQVE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbFB2QyxNQUFhLDRCQUNYLGNBQ0EsZ0JBQWdCLEtBQ2hCLGdCQUFnQixPQUNoQixPQUFLLE9BQ0wsWUFBWSxPQUNaLFNBQVMsVUFDTjtBQXFDSCxRQUFPOzs7SUFQeUIsWUFDNUIsMkRBQ0EsaUVBUXNCOzs7RUF2Q1RDLE9BQ2IsU0FDRSw2REFDQSxxREFDRixHQXNDSztFQXJDWSxVQUFVLENBQUNBLE9BQUssb0NBQW9DLEdBc0M1RDtFQXJDUUEsT0FDakI7Ozs7Ozs7OztNQVVBOzs7SUEyQlM7OytCQUVnQixhQUFhOztFQXBCZixTQUN2Qiw0Q0FDQSxHQW9CZTs7O2FBR1IsY0FBYzthQUNkLGNBQWM7Ozs7Ozs7Ozs7TUFwQkssWUFDMUIsd0NBQ0Esb0NBNEJzQjs7Ozs7Ozs7RUF4Q0ZBLE9BQ3BCLG9GQUNBLEdBOENZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJsQixNQUFhLHFCQUNYLGNBQ0EsYUFDQSxnQkFBZ0IsS0FDaEIsZ0JBQWdCLFVBQ2I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FBNkJRLGNBQWM7YUFDZCxjQUFjOzs7O21EQUl3QixhQUFhOzBEQUNOLGFBQWE7Ozs7Ozt3Q0FNL0IsWUFBWSxlQUFlLGFBQWE7O21DQUU3QyxhQUFhLGtCQUFrQixZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcko5RSxNQUFhLHVCQUF1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlFcEMsTUFBYSxrQ0FBa0MsU0FBZ0I7QUFnQzdELFFBQU8sR0EvQlVDLE9BQ2I7Ozs2Q0FJQSwwRkEwQmU7Ozs7TUF6QkVBLE9BQ2pCOzs7Ozs7Ozs7Ozs7O1VBY0E7Ozs7Ozs7OztRQWNhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2RG5CLE1BQU1DLFVBQVEsYUFBYSxRQUFRO0FBQ25DLE1BQU1DLHlGQUF3QztBQVE5QyxlQUFzQixhQUFhLFlBQTBCO0FBQzNELFNBQU0sMENBQTBDLFdBQVc7Q0FFM0QsTUFBTUMsVUFBOEI7RUFDbEMsVUFBVTtFQUNWLEdBQUc7RUFDSCxLQUFLLFdBQVcsT0FBTyxRQUFRLEtBQUs7RUFDckM7Q0FFRCxNQUFNLGVBQWUsR0FBRyxpQ0FBNEIsUUFBUSxLQUFLLEdBQUcsTUFBTTtDQUUxRSxNQUFNLGVBQWUsWUFBWSxRQUFRLGdCQUFnQixhQUFhO0NBQ3RFLE1BQU0sV0FBVyxNQUFNLGNBQWMsYUFBYTtDQUVsRCxNQUFNLFFBQVEsU0FBUyxTQUFTLE1BQU0sTUFBTTtBQUUxQyxNQUFJLFFBQVEsUUFDVixRQUFPLEVBQUUsU0FBUyxRQUFRO01BRTFCLFFBQU8sRUFBRSxrQkFBa0I7R0FFN0I7QUFFRixLQUFJLENBQUMsTUFDSCxPQUFNLElBQUksTUFDUix3SkFDRDtBQVNILFFBRmdCLElBQUksUUFBUSxVQUFVLE9BTHZCLE1BQU0sZUFDbkIsWUFBWSxRQUFRLG1CQUFtQixlQUFlLEVBQ3RELFFBQVEsYUFBYSxZQUFZLFFBQVEsV0FBVyxHQUFHLE9BQ3hELEVBRW9ELFFBQVEsQ0FFOUMsT0FBTzs7QUFHeEIsSUFBTSxVQUFOLE1BQWM7Q0FDWixBQUFpQixPQUFpQixFQUFFO0NBQ3BDLEFBQWlCLE9BQStCLEVBQUU7Q0FDbEQsQUFBaUIsVUFBb0IsRUFBRTtDQUV2QyxBQUFpQjtDQUNqQixBQUFpQjtDQUNqQixBQUFpQjtDQUNqQixBQUFpQjtDQUNqQixBQUFpQixnQkFBeUI7Q0FFMUMsWUFDRSxBQUFpQkMsVUFDakIsQUFBaUJDLE9BQ2pCLEFBQWlCQyxRQUNqQixBQUFpQkgsU0FDakI7RUFKaUI7RUFDQTtFQUNBO0VBQ0E7QUFFakIsT0FBSyxTQUFTLFFBQVEsU0FDbEIsWUFBWSxRQUFRLE9BQU8sR0FDM0IsUUFBUSxJQUFJLHFCQUNWLFlBQVksUUFBUSxJQUFJLG1CQUFtQixHQUMzQyx3QkFBd0I7QUFDOUIsT0FBSyxnQ0FBaUIsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBSyxtQ0FDSCxLQUFLLFFBQVEsS0FDYixRQUFRLGFBQWEsS0FBSyxTQUMzQjtBQUNELE9BQUssWUFDSCxRQUFRLGFBQ1IsUUFBUSxJQUFJLDBCQUNaLFNBQVM7QUFDWCxPQUFLLGdCQUFnQixLQUFLLE1BQU0sYUFBYSxNQUMxQyxRQUNDLElBQUksU0FBUyxrQkFDWixJQUFJLHlCQUF5QixJQUFJLFNBQVMsU0FBUyxXQUFXLEVBQ2xFO0FBRUQsTUFBSSxDQUFDLEtBQUssZUFBZTtHQUN2QixNQUFNLHFCQUNKO0FBQ0YsV0FBTSxLQUNKLEdBQUcsbUJBQW1CLDhFQUN2QjtBQUVELE9BQ0UsS0FBSyxRQUFRLE9BQ2IsS0FBSyxRQUFRLGFBQ2IsS0FBSyxPQUFPLGFBQ1osS0FBSyxPQUFPLGNBRVosU0FBTSxLQUNKLEdBQUcsbUJBQW1CLDREQUN2Qjs7O0NBS1AsSUFBSSxhQUFhOztBQUNmLGtDQUFPLEtBQUssTUFBTSxRQUFRLE1BQU0sTUFBTSxFQUFFLFlBQVksU0FBUyxTQUFTLENBQUMsZ0ZBQ25FOztDQUdOLElBQUksVUFBVTs7QUFDWixTQUNFLEtBQUssUUFBUSxRQUVaLEtBQUssYUFDRixpQ0FDQSxLQUFLLE1BQU0sUUFBUSxNQUFNLE1BQU0sRUFBRSxZQUFZLFNBQVMsTUFBTSxDQUFDLGtGQUFFOztDQUl2RSxRQUFRO0FBQ04sTUFBSSxDQUFDLEtBQUssWUFBWTtHQUNwQixNQUFNLFVBQ0o7QUFFRixPQUFJLEtBQUssUUFDUCxTQUFNLEtBQUssUUFBUTtPQUVuQixPQUFNLElBQUksTUFBTSxRQUFROztBQUk1QixTQUFPLEtBQUssWUFBWSxDQUNyQixZQUFZLENBQ1osYUFBYSxDQUNiLFdBQVcsQ0FDWCxvQkFBb0IsQ0FDcEIsU0FBUyxDQUNULGVBQWUsQ0FDZixNQUFNOztDQUdYLEFBQVEscUJBQXFCO0FBQzNCLE1BQUksQ0FBQyxLQUFLLFFBQVEsYUFDaEIsUUFBTztBQUVULE1BQUksS0FBSyxRQUFRLFNBQ2YsU0FBTSxLQUNKLHNHQUNEO0FBR0gsTUFBSSxLQUFLLFFBQVEsYUFDZixTQUFNLEtBQ0osa0hBQ0Q7QUFHSCxNQUFJOztHQUNGLE1BQU0sRUFBRSxvQkFBUyxhQUFhRCxVQUFRLDJCQUEyQjtHQUVqRSxNQUFNSyxRQUFnQyxFQUNwQywyQkFBMkIsdUJBQzVCO0dBRUQsTUFBTSwwREFDSyxFQUNULFlBQ0EsbUJBQ0FDLFdBQ0EsS0FBSyxPQUFPLE9BQ2I7QUFDRCwwQkFBVSxlQUFlLEVBQUUsV0FBVyxNQUFNLENBQUM7QUFDN0MsbURBQW9CLGVBQWUsZUFBZSxDQUFDLENBQ2pELFNBQU0sYUFBYSxjQUFjLDBCQUEwQjtPQUczRCxDQURtQixTQUFTLFFBQVEsTUFBTSxLQUFLLE9BQU8sT0FBTyxDQUNsRCxPQUFPLGNBQWM7R0FFbEMsTUFBTSxrQkFBa0IsZUFBZSxLQUFLLE9BQU8sT0FBTztHQUMxRCxNQUFNLGtCQUFrQixNQUFNLEtBQUssT0FBTyxXQUFXLEtBQUssT0FBTztHQUNqRSxNQUFNLFlBQVksZ0JBQWdCLGdCQUFnQjtBQUNsRCxRQUFLLGtCQUNILCtCQUNLLGVBQWUsT0FBTyxHQUFHLGdCQUFnQixNQUFNLENBQ3JEO0FBQ0QsUUFBSyxrQkFDSCxzQ0FDSyxlQUFlLGlCQUFpQixVQUFVLENBQ2hEO0FBQ0QsUUFBSyxrQkFDSCxpQ0FDSyxlQUFlLE9BQU8sR0FBRyxnQkFBZ0IsS0FBSyxDQUNwRDtBQUNELFFBQUssa0JBQ0gscUNBQ0ssZUFBZSxPQUFPLEdBQUcsZ0JBQWdCLFNBQVMsQ0FDeEQ7QUFDRCxRQUFLLGtCQUNILHNDQUNLLGVBQWUsT0FBTyxHQUFHLGdCQUFnQixVQUFVLENBQ3pEO0FBQ0QsUUFBSyxrQkFDSCw2Q0FDSyxlQUFlLGlCQUFpQixXQUFXLE9BQU8sV0FBVyxDQUNuRTtBQUNELFFBQUssa0JBQ0gsaUNBQ0ssZUFBZSxPQUFPLEdBQUcsZ0JBQWdCLE1BQU0sQ0FDckQ7QUFDRCxRQUFLLGtCQUNILGtDQUNLLGVBQWUsT0FBTyxHQUFHLGdCQUFnQixNQUFNLENBQ3JEO0FBQ0QsUUFBSyxrQkFDSCw0QkFDQSxhQUFhLEtBQUssS0FBSyxlQUFlLEdBQ3ZDO0FBRUQsaUNBQ0UsUUFBUSxJQUFJLHlGQUFXLFdBQVcsUUFBUSx5QkFDekMsUUFBUSxJQUFJLHNFQUFJLFdBQVcsUUFBUSxLQUFJLENBQUMsUUFBUSxJQUFJLFdBQ3JEO0lBQ0EsTUFBTSxnQkFBZ0IsUUFBUSxJQUFJLGlCQUFpQjtBQUNuRCxTQUFLLEtBQUssZ0JBQWdCLGFBQWEsS0FBSyxLQUFLLGVBQWUsbUJBQW1CLGNBQWMsR0FBRzs7QUFFdEcsNEJBQ0csUUFBUSxJQUFJLHlFQUFLLFdBQVcsVUFBVSxLQUFJLENBQUMsUUFBUSxJQUFJLHlDQUN4RCxRQUFRLElBQUksNEZBQVksV0FBVyxVQUFVLEdBQzdDO0lBQ0EsTUFBTSxrQkFBa0IsUUFBUSxJQUFJLG1CQUFtQjtBQUN2RCxTQUFLLEtBQUssa0JBQWtCLGFBQWEsS0FBSyxLQUFLLGVBQWUsbUJBQW1CLGNBQWMsR0FBRzs7QUFFeEcsUUFBSyxLQUFLLE9BQU8sS0FBSyxLQUFLLE9BQ3ZCLEdBQUcsY0FBYyxPQUFPLEtBQUssS0FBSyxLQUFLLEdBQUcsUUFBUSxJQUFJLFNBQ3RELEdBQUcsY0FBYyxPQUFPLFFBQVEsSUFBSTtXQUNqQyxHQUFHO0FBQ1YsV0FBTSxLQUFLLCtCQUErQixFQUFXOztBQUd2RCxTQUFPOztDQUdULEFBQVEsT0FBTztBQUNiLFVBQU0seUJBQXlCLEtBQUssTUFBTSxPQUFPO0FBQ2pELFVBQU0sUUFBUSxTQUFTLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRztFQUU3QyxNQUFNLGFBQWEsSUFBSSxpQkFBaUI7RUFFeEMsTUFBTSxRQUFRLEtBQUssUUFBUTtBQXVDM0IsU0FBTztHQUNMLE1BdkNnQixJQUFJLFNBQWUsV0FBUyxXQUFXOztBQUN2RCxRQUFJLEtBQUssUUFBUSxZQUFZLEtBQUssUUFBUSxhQUN4QyxPQUFNLElBQUksTUFDUiwrREFDRDtJQUlILE1BQU0sNkNBREosUUFBUSxJQUFJLFVBQVUsS0FBSyxRQUFRLFdBQVcsVUFBVSxVQUN0QixLQUFLLE1BQU07S0FDN0MsS0FBSztNQUFFLEdBQUcsUUFBUTtNQUFLLEdBQUcsS0FBSztNQUFNO0tBQ3JDLE9BQU8sUUFBUTtNQUFDO01BQVc7TUFBVztNQUFPLEdBQUc7S0FDaEQsS0FBSyxLQUFLLFFBQVE7S0FDbEIsUUFBUSxXQUFXO0tBQ3BCLENBQUM7QUFFRixpQkFBYSxLQUFLLFNBQVMsU0FBUztBQUNsQyxTQUFJLFNBQVMsR0FBRztBQUNkLGNBQU0sTUFBTSxlQUFlLEtBQUssTUFBTSxLQUFLLGdCQUFnQjtBQUMzRCxpQkFBUztXQUVULHdCQUFPLElBQUksTUFBTSwrQkFBK0IsT0FBTyxDQUFDO01BRTFEO0FBRUYsaUJBQWEsS0FBSyxVQUFVLE1BQU07QUFDaEMsWUFBTyxJQUFJLE1BQU0sNEJBQTRCLEVBQUUsV0FBVyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUM7TUFDeEU7QUFHRix5Q0FBYSw0RUFBUSxHQUFHLFNBQVMsU0FBUztLQUN4QyxNQUFNLFNBQVMsS0FBSyxVQUFVO0FBQzlCLGFBQVEsTUFBTSxPQUFPO0FBQ3JCLFNBQUksOEJBQThCLEtBQUssT0FBTyxDQUM1QyxNQUFLLFdBQVcsQ0FBQyxZQUFZLEdBQUc7TUFFbEM7S0FDRixDQUdnQixXQUFXLEtBQUssV0FBVyxDQUFDO0dBQzVDLGFBQWEsV0FBVyxPQUFPO0dBQ2hDOztDQUdILEFBQVEsYUFBYTtFQUNuQixJQUFJLE1BQU07QUFDVixNQUFJLEtBQUssUUFBUSxNQUNmLEtBQUksUUFBUSxJQUFJLEdBQ2QsU0FBTSxLQUFLLGdEQUFnRDtPQUN0RDtBQUNMLFdBQU0sVUFBVSxjQUFjO0FBQzlCLHlCQUFzQixlQUFlLFFBQVE7QUFLN0MsUUFBSyxLQUFLLEtBQ1IsU0FDQSxTQUNBLE1BQ0Esa0JBQ0EsTUFDQSxLQUFLLFVBQ0wsTUFDQSxTQUNBLFFBQ0Q7QUFDRCxTQUFNOztBQUlWLE1BQUksS0FBSyxRQUFRLGFBQ2YsS0FBSSxLQUFLLE9BQU8sYUFBYSxRQUMzQixLQUFJLFFBQVEsYUFBYSxRQUN2QixTQUFNLEtBQ0osNEZBQ0Q7T0FDSTtBQUVMLFdBQU0sVUFBVSxhQUFhO0FBQzdCLHlCQUFzQixjQUFjLE9BQU87QUFDM0MsUUFBSyxLQUFLLEtBQUssUUFBUSxRQUFRO0FBQy9CLE9BQUksS0FBSyxPQUFPLFNBQVMsT0FDdkIsTUFBSyxLQUFLLFlBQVk7QUFFeEIsU0FBTTs7V0FJTixLQUFLLE9BQU8sYUFBYSxXQUN6QixRQUFRLGFBQWEsV0FDckIsS0FBSyxPQUFPLFNBQVMsUUFBUSxTQUM1QixTQUFVLEtBQW9COztBQUs3QixVQUFPLDZCQUZMLFFBQVEscUZBQVEsV0FBVywrRUFBRSwwRUFBUSx1QkFDSixRQUFRO0tBRTFDLEtBQUssT0FBTyxJQUFJLENBRW5CLFNBQU0sS0FDSiwwRkFDRDtXQUVELEtBQUssT0FBTyxhQUFhLFlBQ3pCLFFBQVEsYUFBYSxTQUVyQixTQUFNLEtBQ0osNEZBQ0Q7T0FDSTtBQUVMLFdBQU0sVUFBVSxpQkFBaUI7QUFDakMseUJBQXNCLGtCQUFrQixXQUFXO0FBQ25ELFFBQUssS0FBSyxLQUFLLFdBQVc7QUFDMUIsU0FBTTs7QUFLWixNQUFJLENBQUMsSUFDSCxNQUFLLEtBQUssS0FBSyxRQUFRO0FBRXpCLFNBQU87O0NBR1QsQUFBUSxhQUFhO0VBQ25CLE1BQU0sT0FBTyxFQUFFO0FBRWYsTUFBSSxLQUFLLFFBQVEsUUFDZixNQUFLLEtBQUssYUFBYSxLQUFLLFFBQVEsUUFBUTtBQUc5QyxNQUFJLEtBQUssUUFDUCxNQUFLLEtBQUssU0FBUyxLQUFLLFFBQVE7QUFHbEMsTUFBSSxLQUFLLFFBQVE7QUFDZixXQUFNLHNCQUFzQjtBQUM1QixXQUFNLFFBQVEsS0FBSztBQUNuQixRQUFLLEtBQUssS0FBSyxHQUFHLEtBQUs7O0FBR3pCLFNBQU87O0NBR1QsQUFBUSxZQUFZO0FBQ2xCLFVBQU0sNEJBQTRCO0FBQ2xDLFVBQU0sUUFBUSxLQUFLLE9BQU8sT0FBTztBQUVqQyxPQUFLLEtBQUssS0FBSyxZQUFZLEtBQUssT0FBTyxPQUFPO0FBRTlDLFNBQU87O0NBR1QsQUFBUSxVQUFVOztBQUVoQixNQUFJLEtBQUssZUFBZTtBQUN0QixRQUFLLEtBQUssMkJBQ1IsS0FBSyxtQ0FBbUM7QUFDMUMsUUFBSyxrQkFBa0IsS0FBSyxLQUFLLHlCQUF5Qjs7RUFJNUQsSUFBSSxZQUNGLFFBQVEsSUFBSSxhQUFhLFFBQVEsSUFBSSx5QkFBeUI7QUFFaEUsMkJBQ0UsS0FBSyxPQUFPLHlFQUFLLFNBQVMsT0FBTyxLQUNqQyxDQUFDLFVBQVUsU0FBUyw2QkFBNkIsQ0FFakQsY0FBYTtBQUdmLE1BQUksS0FBSyxRQUFRLFNBQVMsQ0FBQyxVQUFVLFNBQVMsY0FBYyxDQUMxRCxjQUFhO0FBR2YsTUFBSSxVQUFVLE9BQ1osTUFBSyxLQUFLLFlBQVk7RUFLeEIsTUFBTSxTQUFTLEtBQUssUUFBUSxlQUN4QixLQUFLLElBQ0wsZ0JBQWdCLEtBQUssT0FBTyxPQUFPO0VBS3ZDLE1BQU0sWUFBWSxnQkFBZ0IsZUFDaEMsS0FBSyxPQUFPLE9BQ2IsQ0FBQztBQUNGLE1BQUksVUFBVSxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsS0FBSyxLQUFLLFdBQ2xELE1BQUssS0FBSyxhQUFhO0FBR3pCLE1BQUksS0FBSyxPQUFPLGFBQWEsVUFDM0IsTUFBSyxlQUFlO0FBR3RCLE1BQUksS0FBSyxPQUFPLGFBQWEsT0FDM0IsTUFBSyxZQUFZO0FBR25CLE1BQUksS0FBSyxPQUFPLGFBQWEsY0FDM0IsTUFBSyxtQkFBbUI7QUFHMUIsVUFBTSxhQUFhO0FBQ25CLFNBQU8sUUFBUSxLQUFLLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxPQUFPO0FBQzVDLFdBQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxJQUFJO0lBQzFCO0FBRUYsU0FBTzs7Q0FHVCxBQUFRLGtCQUFrQixrQkFBMEI7QUFFbEQsT0FBSyxTQUFTLFNBQVMsU0FBUyxVQUFVO0FBQ3hDLE9BQ0UsTUFBTSxhQUFhLE1BQU0sTUFBTSxFQUFFLFNBQVMsY0FBYyxJQUN4RCw2Q0FBaUIsa0JBQWtCLE1BQU0sS0FBSyxDQUFDLENBRS9DLE1BQUssS0FDSCxvQkFBb0IsTUFBTSxLQUFLLFFBQVEsTUFBTSxJQUFJLENBQUMsYUFBYSxNQUM3RCxLQUFLLEtBQUssQ0FBQyxVQUFVO0lBRTNCOztDQUdKLEFBQVEsZ0JBQWdCO0VBQ3RCLE1BQU0sRUFBRSw0QkFBNEIsUUFBUTtBQUM1QyxNQUFJLENBQUMsd0JBQ0gsU0FBTSxLQUNKLEdBQUdDLFVBQU8sSUFDUiwwQkFDRCxDQUFDLGtDQUNIO0FBSUgsTUFBSSxRQUFRLGFBQWEsVUFDdkI7RUFHRixNQUFNLGFBQWEsS0FBSyxPQUFPLFNBQVMsUUFBUSxXQUFXO0VBQzNELE1BQU0saUJBQ0osS0FBSyxPQUFPLFNBQVMsUUFBUSxrQkFBa0I7RUFDakQsTUFBTSxlQUNKLFFBQVEsYUFBYSxXQUNqQixXQUNBLFFBQVEsYUFBYSxVQUNuQixZQUNBO0FBQ1IsU0FBTyxPQUFPLEtBQUssTUFBTTtHQUN2QiwyQ0FBMkMsR0FBRyx3QkFBd0IsNEJBQTRCLGFBQWEsY0FBYyxXQUFXO0dBQ3hJLDZDQUE2QyxHQUFHLHdCQUF3Qiw0QkFBNEIsYUFBYSxjQUFjLFdBQVc7R0FDMUksV0FBVyxHQUFHLHdCQUF3Qiw0QkFBNEIsYUFBYSxjQUFjLFdBQVcsU0FBUyxlQUFlO0dBQ2hJLFlBQVksR0FBRyx3QkFBd0IsNEJBQTRCLGFBQWEsY0FBYyxXQUFXLFNBQVMsZUFBZTtHQUNqSSxXQUFXLEdBQUcsd0JBQXdCLDRCQUE0QixhQUFhO0dBQy9FLGVBQWUsR0FBRyx3QkFBd0IsNEJBQTRCLGFBQWE7R0FDbkYsYUFBYTtHQUNiLE1BQU0sR0FBRyx3QkFBd0IsNEJBQTRCLGFBQWEsYUFBYSxRQUFRLGFBQWEsVUFBVSxNQUFNLE1BQU0sUUFBUSxJQUFJO0dBQy9JLENBQUM7O0NBR0osQUFBUSxhQUFhO0VBQ25CLE1BQU0sNkJBQ0pQLFVBQVEsUUFBUSxTQUFTLEVBQ3pCLE1BQ0EsT0FDQSxzQkFDRDtBQUNELE9BQUssS0FBSyxrQkFBa0I7RUFDNUIsTUFBTSxFQUFFLGtCQUFrQixRQUFRO0FBRWxDLE1BQUkseUNBQTRCLGNBQWMsRUFBRTtBQUM5QyxRQUFLLEtBQUssdUVBQ1IsZUFDQSxPQUNBLFVBQ0Q7QUFDRCxRQUFLLEtBQUssd0RBQ1IsZUFDQSxPQUNBLFVBQ0Q7QUFDRCxRQUFLLEtBQUssZ0VBQ1IsZUFDQSxPQUNBLFVBQ0Q7QUFDRCxRQUFLLEtBQUssd0RBQ1IsZUFDQSxPQUNBLFVBQ0Q7QUFDRCxRQUFLLGtCQUFrQixpQ0FBa0IsZUFBZSxPQUFPLFFBQVEsQ0FBQztBQUN4RSxRQUFLLGtCQUNILGtDQUNLLGVBQWUsT0FBTyxVQUFVLENBQ3RDO0FBQ0QsUUFBSyxrQkFBa0IsaUNBQWtCLGVBQWUsT0FBTyxLQUFLLENBQUM7QUFDckUsUUFBSyxrQkFDSCxxQ0FDSyxlQUFlLE9BQU8sU0FBUyxDQUNyQztBQUNELFFBQUssa0JBQ0gsaUJBQ0EsMENBQTBDLGNBQWMsdURBQ3pEO0FBQ0QsUUFBSyxrQkFDSCxtQkFDQSwwQ0FBMEMsY0FBYyx1REFDekQ7QUFDRCxRQUFLLGtCQUNILGtCQUNBLFlBQVksY0FBYywyQ0FDM0I7OztDQUlMLEFBQVEsb0JBQW9CO0VBQzFCLE1BQU0sRUFBRSxlQUFlLG9CQUFvQixRQUFRO0VBQ25ELE1BQU0sVUFBVSxnQkFBZ0IsR0FBRyxjQUFjLFdBQVc7QUFFNUQsTUFBSSxDQUFDLFdBQVcsUUFBUSxhQUFhLGVBQWU7QUFDbEQsV0FBTSxLQUNKLEdBQUdPLFVBQU8sSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNQSxVQUFPLElBQUksa0JBQWtCLENBQUMsa0NBQ3BFO0FBQ0Q7O0VBRUYsTUFBTSxhQUFhLGdCQUFnQixLQUFLLE9BQU8sT0FBTyxhQUFhLENBQUMsUUFBUSxNQUFNLElBQUksQ0FBQztFQUN2RixNQUFNLFVBQVUsR0FBRyxRQUFRO0VBQzNCLE1BQU0sU0FBUyxHQUFHLFFBQVE7RUFDMUIsTUFBTSxTQUFTLEdBQUcsUUFBUSxZQUFZLEtBQUssT0FBTyxPQUFPO0VBQ3pELE1BQU0sVUFBVSxHQUFHLFFBQVEsWUFBWSxLQUFLLE9BQU8sT0FBTztFQUMxRCxNQUFNLFNBQVMsR0FBRyxRQUFRO0VBQzFCLE1BQU0sU0FBUyxHQUFHLFFBQVE7RUFDMUIsTUFBTSxZQUFZLEdBQUcsUUFBUTtFQUM3QixNQUFNLGNBQWMsR0FBRyxRQUFRO0VBQy9CLE1BQU0sY0FBYyxHQUFHLFFBQVE7RUFDL0IsTUFBTSxTQUFTLEdBQUcsUUFBUTtFQUMxQixNQUFNLFVBQVUsR0FBRyxRQUFRO0VBQzNCLE1BQU0sVUFBVSxHQUFHLFFBQVE7QUFFM0IsT0FBSyxrQkFBa0IsaUJBQWlCLFFBQVE7QUFDaEQsT0FBSyxrQkFBa0IsY0FBYyxvQkFBb0I7QUFDekQsT0FBSyxrQkFBa0IsWUFBWSxPQUFPO0FBQzFDLE9BQUssa0JBQWtCLGFBQWEsT0FBTztBQUMzQyxPQUFLLGtCQUFrQixjQUFjLFFBQVE7QUFDN0MsT0FBSyxrQkFBa0IsYUFBYSxPQUFPO0FBQzNDLE9BQUssa0JBQWtCLGlCQUFpQixRQUFRO0FBQ2hELE9BQUssa0JBQWtCLGFBQWEsT0FBTztBQUMzQyxPQUFLLGtCQUFrQixhQUFhLE9BQU87QUFDM0MsT0FBSyxrQkFBa0IsZ0JBQWdCLFVBQVU7QUFDakQsT0FBSyxrQkFBa0Isa0JBQWtCLFlBQVk7QUFDckQsT0FBSyxrQkFBa0Isa0JBQWtCLFlBQVk7QUFDckQsT0FBSyxrQkFBa0IsYUFBYSxPQUFPO0FBQzNDLE9BQUssS0FBSyxPQUFPLEdBQUcsVUFBVSxRQUFRLGFBQWEsVUFBVSxNQUFNLE1BQU0sUUFBUSxJQUFJOztDQUd2RixBQUFRLGNBQWM7RUFDcEIsTUFBTSxPQUFPLEVBQUU7QUFDZixNQUFJLEtBQUssUUFBUSxlQUFlLEtBQUssUUFBUSxrQkFDM0MsT0FBTSxJQUFJLE1BQ1IsbUVBQ0Q7QUFFSCxNQUFJLEtBQUssUUFBUSxZQUNmLE1BQUssS0FBSyxpQkFBaUI7V0FDbEIsS0FBSyxRQUFRLGtCQUN0QixNQUFLLEtBQUssd0JBQXdCO0FBRXBDLE1BQUksS0FBSyxRQUFRLFNBQ2YsTUFBSyxLQUFLLGNBQWMsR0FBRyxLQUFLLFFBQVEsU0FBUztBQUduRCxVQUFNLHVCQUF1QjtBQUM3QixVQUFNLFFBQVEsS0FBSztBQUNuQixPQUFLLEtBQUssS0FBSyxHQUFHLEtBQUs7QUFFdkIsU0FBTzs7Q0FHVCxBQUFRLGdCQUFnQjs7QUFDdEIsTUFBSSxLQUFLLFFBQVEsUUFDZixNQUFLLEtBQUssS0FBSyxZQUFZO0FBRzdCLE1BQUksS0FBSyxRQUFRLFFBQ2YsTUFBSyxLQUFLLEtBQUssWUFBWTtBQUc3QixNQUFJLEtBQUssUUFBUSxVQUNmLE1BQUssS0FBSyxLQUFLLGdCQUFnQixLQUFLLFFBQVEsVUFBVTtBQUd4RCxNQUFJLEtBQUssUUFBUSxRQUNmLE1BQUssS0FBSyxLQUFLLGFBQWEsS0FBSyxRQUFRLFFBQVE7QUFHbkQsTUFBSSxLQUFLLFFBQVEsYUFDZixNQUFLLEtBQUssS0FBSyxtQkFBbUIsS0FBSyxRQUFRLGFBQWE7QUFHOUQsK0JBQUksS0FBSyxRQUFRLDRGQUFjLE9BQzdCLE1BQUssS0FBSyxLQUFLLEdBQUcsS0FBSyxRQUFRLGFBQWE7QUFHOUMsU0FBTzs7Q0FHVCxBQUFRLG9DQUFvQztFQUMxQyxJQUFJLDZCQUNGLEtBQUssV0FDTCxXQUNBLEdBQUcsS0FBSyxNQUFNLEtBQUssK0JBQWMsU0FBUyxDQUN2QyxPQUFPLEtBQUssTUFBTSxjQUFjLENBQ2hDLE9BQU8sWUFBWSxDQUNuQixPQUFPLE1BQU0sQ0FDYixVQUFVLEdBQUcsRUFBRSxHQUNuQjtBQUVELE1BQUksQ0FBQyxLQUFLLFFBQVEsVUFBVTtBQUMxQix1QkFBTyxRQUFRO0lBQUUsV0FBVztJQUFNLE9BQU87SUFBTSxDQUFDO0FBQ2hELGFBQVUsSUFBSSxLQUFLLEtBQUs7O0FBRzFCLGFBQVcsUUFBUSxFQUFFLFdBQVcsTUFBTSxDQUFDO0FBRXZDLFNBQU87O0NBR1QsTUFBYyxZQUFZO0FBQ3hCLE1BQUk7QUFDRixXQUFNLGtDQUFrQztBQUN4QyxXQUFNLFFBQVEsS0FBSyxVQUFVO0FBQzdCLFNBQU0sV0FBVyxLQUFLLFdBQVcsRUFBRSxXQUFXLE1BQU0sQ0FBQztBQUNyRCxXQUFNLDJCQUEyQjtXQUMxQixHQUFHO0FBQ1YsU0FBTSxJQUFJLE1BQU0scUNBQXFDLEtBQUssYUFBYSxFQUNyRSxPQUFPLEdBQ1IsQ0FBQzs7RUFHSixNQUFNLGlCQUFpQixNQUFNLEtBQUssY0FBYztBQUdoRCxNQUFJLEtBQUssWUFBWTtHQUNuQixNQUFNLFNBQVMsTUFBTSxLQUFLLGlCQUFpQjtHQUMzQyxNQUFNLFdBQVcsTUFBTSxLQUFLLGVBQWUsT0FBTztHQUNsRCxNQUFNLHFCQUFxQixNQUFNLEtBQUssaUJBQ3BDLGdCQUNBLE9BQ0Q7QUFDRCxPQUFJLFNBQ0YsTUFBSyxRQUFRLEtBQUssU0FBUztBQUU3QixPQUFJLG1CQUNGLE1BQUssUUFBUSxLQUFLLEdBQUcsbUJBQW1COztBQUk1QyxTQUFPLEtBQUs7O0NBR2QsTUFBYyxlQUFlO0VBQzNCLE1BQU0sQ0FBQyxTQUFTLFVBQVUsa0JBQWtCLEtBQUssa0JBQWtCO0FBQ25FLE1BQUksQ0FBQyxXQUFXLENBQUMsU0FDZjtFQUdGLE1BQU0sVUFDSixLQUFLLFFBQVEsWUFBWSxLQUFLLFFBQVEsVUFBVSxZQUFZO0VBQzlELE1BQU0sMEJBQVcsS0FBSyxXQUFXLEtBQUssT0FBTyxRQUFRLFNBQVMsUUFBUTtBQUN0RSxVQUFNLHdCQUF3QixJQUFJLEdBQUc7RUFDckMsTUFBTSwyQkFBWSxLQUFLLFdBQVcsU0FBUztFQUMzQyxNQUFNLFNBQVMsS0FBSyxTQUFTLFFBQVE7QUFFckMsTUFBSTtBQUNGLE9BQUksTUFBTSxXQUFXLEtBQUssRUFBRTtBQUMxQixZQUFNLHNDQUFzQztBQUM1QyxVQUFNLFlBQVksS0FBSzs7QUFFekIsV0FBTSxvQkFBb0I7QUFDMUIsV0FBTSxRQUFRLEtBQUs7QUFDbkIsT0FBSSxRQUFRO0lBQ1YsTUFBTSxFQUFFLGlCQUFpQixNQUFNLE9BQU87QUFDdEMsWUFBTSw2QkFBNkI7QUFDbkMsUUFBSTtLQVFGLE1BQU0sa0JBUGtCLElBQUksY0FBYyxDQUN2QyxjQUFjLEtBQUssQ0FDbkIsb0JBQW9CLEtBQUssQ0FDekIseUJBQXlCLEtBQUssQ0FDOUIsc0JBQXNCLEtBQUssQ0FDM0IsZUFBZSxNQUFNLENBQ3JCLE1BQU0sTUFBTSxjQUFjLElBQUksQ0FBQyxDQUNNLFNBQVMsS0FBSztBQUN0RCxXQUFNLGVBQ0osS0FBSyxRQUFRLFdBQVcsY0FBYyxFQUN0QyxnQkFDRDtBQUNELGFBQU0sK0JBQStCO0FBVXJDLFdBQU0sZUFBZSxNQVRLLElBQUksY0FBYyxDQUN6QyxjQUFjLE1BQU0sQ0FDcEIsb0JBQW9CLE1BQU0sQ0FDMUIseUJBQXlCLE1BQU0sQ0FDL0Isc0JBQXNCLE1BQU0sQ0FDNUIsZUFBZSxNQUFNLENBQ3JCLG1CQUFtQixNQUFNLENBQ3pCLE1BQU0sZ0JBQWdCLENBQ21CLFNBQVMsTUFBTSxDQUNkO2FBQ3RDLEdBQUc7QUFDVixhQUFNLEtBQ0oseUNBQTBDLEVBQVUsV0FBVyxJQUNoRTtBQUNELFdBQU0sY0FBYyxLQUFLLEtBQUs7O1NBR2hDLE9BQU0sY0FBYyxLQUFLLEtBQUs7QUFFaEMsUUFBSyxRQUFRLEtBQUs7SUFDaEIsTUFBTSxLQUFLLFNBQVMsUUFBUSxHQUFHLFNBQVMsU0FBUyxTQUFTO0lBQzFELE1BQU07SUFDUCxDQUFDO0FBQ0YsVUFBTyxxQ0FBc0IsS0FBSyxXQUFXLGVBQWUsR0FBRztXQUN4RCxHQUFHO0FBQ1YsU0FBTSxJQUFJLE1BQU0sMkJBQTJCLEVBQUUsT0FBTyxHQUFHLENBQUM7OztDQUk1RCxBQUFRLG1CQUFtQjtBQUN6QixNQUFJLEtBQUssWUFBWTtHQUNuQixNQUFNLFNBQVMsS0FBSyxXQUFXLFFBQVEsTUFBTSxJQUFJO0dBQ2pELE1BQU0sYUFBYSxLQUFLLE9BQU8sUUFBUSxNQUFNLE1BQU0sRUFBRSxhQUFhLE9BQU87R0FFekUsTUFBTSxVQUNKLEtBQUssT0FBTyxhQUFhLFdBQ3JCLE1BQU0sT0FBTyxVQUNiLEtBQUssT0FBTyxhQUFhLFVBQ3ZCLEdBQUcsT0FBTyxRQUNWLEtBQUssT0FBTyxhQUFhLFVBQVUsS0FBSyxPQUFPLGFBQWEsU0FDMUQsR0FBRyxPQUFPLFNBQ1YsTUFBTSxPQUFPO0dBRXZCLElBQUksV0FBVyxLQUFLLE9BQU87QUFJM0IsT0FBSSxLQUFLLFFBQVEsU0FDZixhQUFZLElBQUksS0FBSyxPQUFPO0FBRTlCLE9BQUksUUFBUSxTQUFTLFFBQVEsQ0FDM0IsYUFBWTtPQUVaLGFBQVk7QUFHZCxVQUFPO0lBQ0w7SUFDQTtJQUNBLGFBQ0ksR0FBRyxLQUFLLE9BQU8sV0FBVyxHQUFHLFdBQVcsZ0JBQWdCLFNBQ3hEO0lBQ0w7YUFDUSxLQUFLLFNBQVM7R0FDdkIsTUFBTSxVQUNKLEtBQUssT0FBTyxhQUFhLFVBQVUsR0FBRyxLQUFLLFFBQVEsUUFBUSxLQUFLO0FBRWxFLFVBQU8sQ0FBQyxTQUFTLFFBQVE7O0FBRzNCLFNBQU8sRUFBRTs7Q0FHWCxNQUFjLGtCQUFrQjtFQUM5QixNQUFNLGFBQWEsS0FBSyxLQUFLO0FBQzdCLE1BQUksQ0FBQyxLQUFLLGNBQ1IsUUFBTyxFQUFFO0VBR1gsTUFBTSxFQUFFLG9CQUFTLFFBQVEsTUFBTSxnQkFBZ0I7R0FDN0M7R0FDQSxhQUFhLEtBQUssUUFBUTtHQUMxQixXQUFXLEtBQUssUUFBUTtHQUN4QixpQkFBaUIsS0FBSyxPQUFPO0dBQzdCLHFCQUFxQixLQUFLLE9BQU87R0FDakMsV0FBVyxLQUFLLFFBQVEsYUFBYSxLQUFLLE9BQU87R0FDakQsS0FBSyxLQUFLLFFBQVE7R0FDbkIsQ0FBQztFQUVGLE1BQU0sMkJBQVksS0FBSyxXQUFXLEtBQUssUUFBUSxPQUFPLGFBQWE7QUFFbkUsTUFBSTtBQUNGLFdBQU0sdUJBQXVCO0FBQzdCLFdBQU0sUUFBUSxLQUFLO0FBQ25CLFNBQU0sZUFBZSxNQUFNLEtBQUssUUFBUTtXQUNqQyxHQUFHO0FBQ1YsV0FBTSxNQUFNLGdDQUFnQztBQUM1QyxXQUFNLE1BQU0sRUFBVzs7QUFHekIsTUFBSUMsVUFBUSxTQUFTLEdBQUc7R0FDdEIsTUFBTUMsNkJBQVksS0FBSyxXQUFXLEtBQUssUUFBUSxPQUFPLGFBQWE7QUFDbkUsUUFBSyxRQUFRLEtBQUs7SUFBRSxNQUFNO0lBQU8sTUFBTUE7SUFBTSxDQUFDOztBQUdoRCxTQUFPRDs7Q0FHVCxNQUFjLGVBQWUsUUFBa0I7QUFDN0MsU0FBTyxlQUFlO0dBQ3BCLFVBQVUsS0FBSyxRQUFRO0dBQ3ZCLGFBQWEsS0FBSyxRQUFRO0dBQzFCO0dBQ0EsV0FBVyxLQUFLLFFBQVE7R0FDeEIsS0FBSyxLQUFLLFFBQVE7R0FDbEIsWUFBWSxLQUFLLE9BQU87R0FDeEIsYUFBYSxLQUFLLFFBQVEsaUJBQWlCLEtBQUssT0FBTztHQUN2RCxTQUFTLFFBQVEsSUFBSSxtQkFBbUIsS0FBSyxPQUFPLFlBQVk7R0FDaEUsV0FBVyxLQUFLO0dBQ2pCLENBQUM7O0NBR0osTUFBYyxpQkFDWixjQUNBLFFBQ0E7QUFDQSxNQUFJLGNBQWM7O0dBQ2hCLE1BQU0sRUFBRSxNQUFNLG9DQUFjLGFBQWE7R0FDekMsTUFBTSxrQ0FBbUJFLE9BQUssR0FBRyxLQUFLLE9BQU8sV0FBVyxXQUFXO0dBQ25FLE1BQU0seUNBQ0pBLE9BQ0EsR0FBRyxLQUFLLE9BQU8sV0FBVyxrQkFDM0I7R0FDRCxNQUFNLGlDQUFrQkEsT0FBSyxrQkFBa0I7R0FDL0MsTUFBTSx3Q0FBeUJBLE9BQUssMEJBQTBCO0dBQzlELE1BQU0sdUNBQXdCQSxPQUFLLGFBQWE7R0FDaEQsTUFBTSxjQUNKLDRDQUNBLE9BQ0csS0FDRSxVQUNDLGtCQUFrQixNQUFNLDBCQUEwQixRQUNyRCxDQUNBLEtBQUssS0FBSztBQUNmLFNBQU0sZUFDSixhQUNBLGtCQUNFLE1BQ0EsS0FBSyxPQUFPLGtDQUNaLEtBQUssT0FBTyw0RUFBTSxxQ0FDbEIsS0FBSyxPQUFPLDhFQUFNLGNBQ25CLEdBQ0MsY0FDQSxNQUNGLE9BQ0Q7QUFDRCxTQUFNLGVBQ0osb0JBQ0EseUJBQ0UsNEJBQ0EsS0FBSyxPQUFPLDhFQUFNLHFDQUNsQixLQUFLLE9BQU8sOEVBQU0scUNBQ2xCLEtBQUssT0FBTyw0RkFBTSxpRkFBUywwQkFDM0IsS0FBSyxPQUFPLDRGQUFNLGlGQUFTLGlDQUMzQixLQUFLLE9BQU8sNEZBQU0saUZBQVMsT0FDNUIsR0FDQywwQ0FDQSxPQUNHLEtBQ0UsVUFDQyxnQkFBZ0IsTUFBTSwwQkFBMEIsUUFDbkQsQ0FDQSxLQUFLLEtBQUssR0FDYixNQUNGLE9BQ0Q7QUFDRCxTQUFNLGVBQWUsWUFBWSxzQkFBc0IsT0FBTztBQUM5RCxTQUFNLGVBQ0osbUJBQ0Esc0RBQStCLEtBQUssT0FBTyw0RkFBTSxpRkFBUyxPQUFNLE1BQU0sRUFDdEUsT0FDRDtBQUNELFNBQU0sZUFDSixrQkFDQSxrQkFBa0IsS0FBSyxPQUFPLFlBQVksaUJBQzNDO0FBQ0QsVUFBTztJQUNMO0tBQUUsTUFBTTtLQUFNLE1BQU07S0FBYTtJQUNqQztLQUFFLE1BQU07S0FBTSxNQUFNO0tBQW9CO0lBQ3hDO0tBQUUsTUFBTTtLQUFNLE1BQU07S0FBWTtJQUNoQztLQUFFLE1BQU07S0FBTSxNQUFNO0tBQW1CO0lBQ3ZDO0tBQUUsTUFBTTtLQUFNLE1BQU07S0FBa0I7SUFDdkM7O0FBRUgsU0FBTyxFQUFFOztDQUdYLEFBQVEsa0JBQWtCLEtBQWEsU0FBZTtBQUNwRCxNQUFJLENBQUMsUUFBUSxJQUFJLEtBQ2YsTUFBSyxLQUFLLE9BQU9DOzs7QUFpQnZCLGVBQXNCLGVBQ3BCLFNBQzZCO0FBQzdCLEtBQ0UsQ0FBQyxRQUFRLFlBRVQsUUFBUSxlQUNSLFFBQVEsT0FBTyxXQUFXLEVBRTFCO0NBR0YsTUFBTSxPQUFPLFFBQVEsYUFBYTtDQUdsQyxNQUFNLFdBRGdCLFFBQVEsTUFBTSxtQkFBbUIsa0JBRXJELFFBQVEsWUFDUixRQUFRLGFBQ1IsUUFBUSxRQUVSLFFBQVEsUUFDVDtBQUVELEtBQUk7RUFDRixNQUFNLDJCQUFZLFFBQVEsV0FBVyxLQUFLO0FBQzFDLFVBQU0seUJBQXlCO0FBQy9CLFVBQU0sUUFBUSxLQUFLO0FBQ25CLFFBQU0sZUFBZSxNQUFNLFNBQVMsUUFBUTtBQUM1QyxTQUFPO0dBQUUsTUFBTTtHQUFNLE1BQU07R0FBTTtVQUMxQixHQUFHO0FBQ1YsUUFBTSxJQUFJLE1BQU0sbUNBQW1DLEVBQUUsT0FBTyxHQUFHLENBQUM7OztBQWVwRSxlQUFzQixnQkFDcEIsU0FDNkM7QUFDN0MsS0FBSSxDQUFFLE1BQU0sZUFBZSxRQUFRLFdBQVcsQ0FDNUMsUUFBTztFQUFFLFNBQVMsRUFBRTtFQUFFLEtBQUs7RUFBSTtDQUdqQyxJQUFJLFNBQVM7Q0FDYixJQUFJLE1BQU07Q0FDVixJQUFJQyxZQUFvQixFQUFFO0FBRTFCLEtBQUksQ0FBQyxRQUFRLGFBQWE7RUFDeEIsTUFBTSxZQUFZLFFBQVEsYUFBYSxRQUFRO0FBRS9DLE1BQUksUUFBUSxvQkFDVixLQUFJO0FBQ0YsWUFBUyxNQUFNLGtDQUNSLFFBQVEsS0FBSyxRQUFRLG9CQUFvQixFQUM5QyxRQUNEO1dBQ00sR0FBRztBQUNWLFdBQU0sS0FDSixrQ0FBa0MsUUFBUSx1QkFDMUMsRUFDRDs7V0FFTSxVQUNULFVBQVM7TUFFVCxVQUFTOztDQUliLE1BQU0sUUFBUSxNQUFNLGFBQWEsUUFBUSxZQUFZLEVBQUUsZUFBZSxNQUFNLENBQUM7QUFFN0UsS0FBSSxDQUFDLE1BQU0sUUFBUTtBQUNqQixVQUFNLHFEQUFxRDtBQUMzRCxTQUFPO0dBQUUsU0FBUyxFQUFFO0dBQUUsS0FBSztHQUFJOztBQUdqQyxNQUFLLE1BQU0sUUFBUSxPQUFPO0FBQ3hCLE1BQUksQ0FBQyxLQUFLLFFBQVEsQ0FDaEI7RUFHRixNQUFNLEVBQUUsS0FBSyxTQUFTLFNBQVMsZ0JBQWdCLE1BQU0sbUNBQzlDLFFBQVEsWUFBWSxLQUFLLEtBQUssRUFDbkMsUUFBUSxhQUFhLEtBQ3RCO0FBRUQsU0FBTztBQUNQLFlBQVEsS0FBSyxHQUFHLFlBQVk7O0FBRzlCLEtBQUksSUFBSSxRQUFRLGtCQUFrQixHQUFHLEdBQ25DLFdBQVU7Ozs7Ozs7O0FBVVosS0FBSSxJQUFJLFFBQVEsYUFBYSxHQUFHLEdBQzlCLFdBQVU7OztBQUtaLE9BQU0sU0FBUztBQUVmLFFBQU87RUFDTDtFQUNBO0VBQ0Q7Ozs7O0FDOW1DSCxJQUFzQiwyQkFBdEIsY0FBdURDLGtCQUFRO0NBQzdELE9BQU8sUUFBUSxDQUFDLENBQUMsa0JBQWtCLENBQUM7Q0FFcEMsT0FBTyxRQUFRQSxrQkFBUSxNQUFNLEVBQzNCLGFBQWEsbURBQ2QsQ0FBQztDQUVGLE1BQU1DLGlCQUFPLE9BQU8sU0FBUyxRQUFRLEtBQUssRUFBRSxFQUMxQyxhQUNFLHNIQUNILENBQUM7Q0FFRixhQUFzQkEsaUJBQU8sT0FBTyxvQkFBb0IsRUFDdEQsYUFBYSxtQ0FDZCxDQUFDO0NBRUYsa0JBQWtCQSxpQkFBTyxPQUFPLHVCQUF1QixnQkFBZ0IsRUFDckUsYUFBYSwwQkFDZCxDQUFDO0NBRUYsU0FBU0EsaUJBQU8sT0FBTyxhQUFhLE9BQU8sRUFDekMsYUFBYSxpREFDZCxDQUFDO0NBRUYsU0FBU0EsaUJBQU8sUUFBUSxhQUFhLE9BQU8sRUFDMUMsYUFBYSx3Q0FDZCxDQUFDO0NBRUYsYUFBYTtBQUNYLFNBQU87R0FDTCxLQUFLLEtBQUs7R0FDVixZQUFZLEtBQUs7R0FDakIsaUJBQWlCLEtBQUs7R0FDdEIsUUFBUSxLQUFLO0dBQ2IsUUFBUSxLQUFLO0dBQ2Q7OztBQXNDTCxTQUFnQixpQ0FDZCxTQUNBO0FBQ0EsUUFBTztFQUNMLEtBQUssUUFBUSxLQUFLO0VBQ2xCLGlCQUFpQjtFQUNqQixRQUFRO0VBQ1IsUUFBUTtFQUNSLEdBQUc7RUFDSjs7Ozs7QUNwRUgsTUFBTUMsVUFBUSxhQUFhLGtCQUFrQjtBQU03QyxlQUFzQixjQUFjLGFBQW1DO0NBQ3JFLE1BQU0sVUFBVSxpQ0FBaUMsWUFBWTtDQUU3RCxlQUFlQyxhQUFXLE9BQWE7QUFDckMsVUFBTSx5QkFBeUJDLE1BQUk7QUFDbkMsTUFBSSxRQUFRLE9BQ1Y7QUFHRixRQUFNQyxXQUFjRCxPQUFLLEVBQ3ZCLFdBQVcsTUFDWixDQUFDOztDQUdKLGVBQWVFLGlCQUFlLE1BQWMsU0FBaUI7QUFDM0QsVUFBTSxtQkFBbUIsS0FBSztBQUU5QixNQUFJLFFBQVEsUUFBUTtBQUNsQixXQUFNLFFBQVE7QUFDZDs7QUFHRixRQUFNQyxlQUFrQixNQUFNLFFBQVE7O0NBR3hDLE1BQU0seUNBQTBCLFFBQVEsS0FBSyxRQUFRLGdCQUFnQjtDQUNyRSxNQUFNLGlDQUFrQixRQUFRLEtBQUssUUFBUSxPQUFPO0FBRXBELFNBQU0sc0JBQXNCLFFBQVEsY0FBYyxnQkFBZ0IsR0FBRztDQUVyRSxNQUFNLEVBQUUsU0FBUyxZQUFZLGFBQWEsZ0JBQ3hDLE1BQU0sZUFDSixpQkFDQSxRQUFRLG9DQUFxQixRQUFRLEtBQUssUUFBUSxXQUFXLEdBQUcsT0FDakU7QUFFSCxNQUFLLE1BQU0sVUFBVSxTQUFTO0VBQzVCLE1BQU0sZ0NBQWlCLFNBQVMsR0FBRyxPQUFPLGtCQUFrQjtBQUM1RCxRQUFNSixhQUFXLFVBQVU7RUFFM0IsTUFBTSxpQkFDSixPQUFPLFNBQVMsV0FDWixHQUFHLFdBQVcsR0FBRyxPQUFPLGdCQUFnQixTQUN4QyxHQUFHLFdBQVcsR0FBRyxPQUFPLGdCQUFnQjtFQUM5QyxNQUFNSyxvQkFBNkM7R0FDakQsTUFBTSxHQUFHLFlBQVksR0FBRyxPQUFPO0dBQy9CLFNBQVMsWUFBWTtHQUNyQixLQUFLLE9BQU8sU0FBUyxjQUFjLENBQUMsT0FBTyxLQUFLLEdBQUc7R0FDbkQsTUFBTTtHQUNOLE9BQU8sQ0FBQyxlQUFlO0dBQ3ZCLEdBQUdDLE9BQ0QsYUFDQSxlQUNBLFlBQ0EsVUFDQSxXQUNBLFlBQ0EsV0FDQSxXQUNBLGNBQ0EsT0FDRDtHQUNGO0FBQ0QsTUFBSSxZQUFZLGNBQ2QsbUJBQWtCLGdCQUFnQkEsT0FDaEMsWUFBWSxlQUNaLFlBQ0EsU0FDRDtBQUVILE1BQUksT0FBTyxTQUFTLFNBQ2xCLG1CQUFrQixLQUFLLENBQUMsT0FBTyxTQUFTO09BQ25DOztHQUNMLE1BQU0sUUFBUSxHQUFHLFdBQVc7QUFDNUIscUJBQWtCLE9BQU87QUFDekIscUJBQWtCLFVBQVUsR0FBRyxXQUFXO0FBQzFDLDhDQUFrQiw2RUFBTyxLQUN2QixPQUNBLGtCQUFrQixTQUNsQixtQkFDQSwwQkFDRDtHQUNELElBQUksMEJBQTBCO0FBQzlCLGdDQUFJLGtCQUFrQix1RkFBUyxLQUM3QixLQUFJO0lBQ0YsTUFBTSxFQUFFLDRCQUFnQixrQkFBa0IsUUFBUSxLQUFLLElBQUksRUFDekQsT0FBTyxHQUNSO0FBQ0QsUUFBSSxTQUFTLEdBQ1gsMkJBQTBCO1dBRXRCO0FBSVYsT0FBSSx3QkFDRixtQkFBa0IsVUFBVSxFQUMxQixNQUFNLFlBQ1A7R0FFSCxNQUFNLGNBQWMsTUFBTSxNQUN4QixtREFDRCxDQUFDLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBeUI7QUFDbkQscUJBQWtCLGVBQWUsRUFDL0IseUJBQXlCLElBQUksWUFBWSxhQUFhLFVBQ3ZEOztBQUdILE1BQUksT0FBTyxRQUFRLE1BQ2pCLG1CQUFrQixPQUFPLENBQUMsUUFBUTtXQUN6QixPQUFPLFFBQVEsT0FDeEIsbUJBQWtCLE9BQU8sQ0FBQyxPQUFPO0FBSW5DLFFBQU1ILHFDQUR5QixXQUFXLGVBQWUsRUFHdkQsS0FBSyxVQUFVLG1CQUFtQixNQUFNLEVBQUUsR0FBRyxLQUM5QztBQUVELFFBQU1BLHFDQURvQixXQUFXLFlBQVksRUFDZCxPQUFPLGFBQWEsT0FBTyxDQUFDO0FBRS9ELFVBQU0sS0FBSyxHQUFHLFlBQVksSUFBSSxPQUFPLGdCQUFnQixVQUFVOzs7QUFJbkUsU0FBUyxPQUFPLGFBQXFCLFFBQWdCO0FBQ25ELFFBQU8sT0FBTyxZQUFZLEdBQUcsT0FBTyxnQkFBZ0I7O2dCQUV0QyxPQUFPLE9BQU8sa0JBQWtCLFlBQVk7Ozs7OztBQ3BKNUQsSUFBc0IsaUJBQXRCLGNBQTZDSSxrQkFBUTtDQUNuRCxPQUFPLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQztDQUV4QixPQUFPLFFBQVFBLGtCQUFRLE1BQU0sRUFDM0IsYUFBYSx3REFDZCxDQUFDO0NBRUYsU0FBU0MsaUJBQU8sT0FBTyxFQUFFLFVBQVUsT0FBTyxDQUFDO0NBRTNDLFNBQWtCQSxpQkFBTyxPQUFPLGFBQWEsRUFDM0MsYUFDRSxpRkFDSCxDQUFDO0NBRUYsb0JBQW9CQSxpQkFBTyxPQUFPLHFCQUFxQixLQUFLO0VBQzFELFdBQVcsU0FBUyxVQUFVO0VBQzlCLGFBQWE7RUFDZCxDQUFDO0NBRUYsaUJBQWlCQSxpQkFBTyxPQUFPLHFCQUFxQixRQUFRLEVBQzFELGFBQWEsOERBQ2QsQ0FBQztDQUVGLFVBQVVBLGlCQUFPLE9BQU8sZ0JBQWdCLE9BQU8sRUFDN0MsYUFBYSxvQ0FDZCxDQUFDO0NBRUYsVUFBVUEsaUJBQU8sTUFBTSxnQkFBZ0IsRUFBRSxFQUFFLEVBQ3pDLGFBQWEsK0NBQ2QsQ0FBQztDQUVGLHVCQUF1QkEsaUJBQU8sUUFBUSw0QkFBNEIsTUFBTSxFQUN0RSxhQUFhLGtDQUNkLENBQUM7Q0FFRixtQkFBbUJBLGlCQUFPLFFBQVEsd0JBQXdCLE9BQU8sRUFDL0QsYUFBYSw4QkFDZCxDQUFDO0NBRUYsZ0JBQWdCQSxpQkFBTyxRQUFRLHFCQUFxQixNQUFNLEVBQ3hELGFBQ0Usb0ZBQ0gsQ0FBQztDQUVGLHNCQUFzQkEsaUJBQU8sUUFBUSwyQkFBMkIsTUFBTSxFQUNwRSxhQUFhLDBEQUNkLENBQUM7Q0FFRixnQkFBZ0JBLGlCQUFPLE9BQU8sb0JBQW9CLE9BQU8sRUFDdkQsYUFDRSxvRUFDSCxDQUFDO0NBRUYsU0FBU0EsaUJBQU8sUUFBUSxhQUFhLE9BQU8sRUFDMUMsYUFBYSw4Q0FDZCxDQUFDO0NBRUYsYUFBYTtBQUNYLFNBQU87R0FDTCxNQUFNLEtBQUs7R0FDWCxNQUFNLEtBQUs7R0FDWCxtQkFBbUIsS0FBSztHQUN4QixnQkFBZ0IsS0FBSztHQUNyQixTQUFTLEtBQUs7R0FDZCxTQUFTLEtBQUs7R0FDZCxzQkFBc0IsS0FBSztHQUMzQixrQkFBa0IsS0FBSztHQUN2QixlQUFlLEtBQUs7R0FDcEIscUJBQXFCLEtBQUs7R0FDMUIsZUFBZSxLQUFLO0dBQ3BCLFFBQVEsS0FBSztHQUNkOzs7QUE4RUwsU0FBZ0IsdUJBQXVCLFNBQXFCO0FBQzFELFFBQU87RUFDTCxtQkFBbUI7RUFDbkIsZ0JBQWdCO0VBQ2hCLFNBQVM7RUFDVCxTQUFTLEVBQUU7RUFDWCxzQkFBc0I7RUFDdEIsa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixxQkFBcUI7RUFDckIsZUFBZTtFQUNmLFFBQVE7RUFDUixHQUFHO0VBQ0o7Ozs7O0FDbktILFNBQVMsU0FBUyxNQUFNO0FBR3RCLFFBQU8sS0FBSyxLQUFLLFFBQU07QUFDckIsU0FBTyxJQUFJLFdBQVcsS0FBSyxJQUFJLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxVQUFVLElBQUksR0FBRztHQUMvRSxDQUFDLEtBQUssSUFBSTs7QUFFZCxJQUFNLFNBQU4sTUFBYTtDQUNYLFNBQVM7Q0FDVDtDQUNBLFNBQVMsRUFBRTtDQUNYLGtDQUFrQixJQUFJLEtBQUs7Q0FDM0IsWUFBWSxTQUFRO0FBQ2xCLE9BQUssWUFBWTs7Q0FFbkIsS0FBSyxhQUFhLEVBQUUsRUFBRTtBQUVwQixPQUFLLFNBQVMsTUFBS0MsWUFBYSxLQUFLLFVBQVU7QUFDL0MsT0FBSyxTQUFTLE1BQUtDLE9BQVEsV0FBVztBQUN0QyxTQUFPLEtBQUs7O0NBRWQsYUFBYSxLQUFLLE9BQU8sRUFBRSxFQUFFO0VBQzNCLE1BQU0sTUFBTSxFQUFFO0VBQ2QsTUFBTSxRQUFRLE9BQU8sS0FBSyxJQUFJO0VBQzlCLE1BQU0sY0FBYyxFQUFFO0VBQ3RCLE1BQU0saUJBQWlCLEVBQUU7QUFDekIsT0FBSyxNQUFNLFFBQVEsTUFDakIsS0FBSSxNQUFLQyxxQkFBc0IsSUFBSSxNQUFNLENBQ3ZDLGFBQVksS0FBSyxLQUFLO01BRXRCLGdCQUFlLEtBQUssS0FBSztFQUc3QixNQUFNLGNBQWMsWUFBWSxPQUFPLGVBQWU7QUFDdEQsT0FBSyxNQUFNLFFBQVEsYUFBWTtHQUM3QixNQUFNQyxVQUFRLElBQUk7QUFDbEIsT0FBSUEsbUJBQWlCLEtBQ25CLEtBQUksS0FBSyxNQUFLQyxnQkFBaUIsQ0FDN0IsS0FDRCxFQUFFRCxRQUFNLENBQUM7WUFDRCxPQUFPQSxZQUFVLFlBQVlBLG1CQUFpQixPQUN2RCxLQUFJLEtBQUssTUFBS0UsZUFBZ0IsQ0FDNUIsS0FDRCxFQUFFRixRQUFNLFVBQVUsQ0FBQyxDQUFDO1lBQ1osT0FBT0EsWUFBVSxTQUMxQixLQUFJLEtBQUssTUFBS0csa0JBQW1CLENBQy9CLEtBQ0QsRUFBRUgsUUFBTSxDQUFDO1lBQ0QsT0FBT0EsWUFBVSxVQUMxQixLQUFJLEtBQUssTUFBS0ksZ0JBQWlCLENBQzdCLEtBQ0QsRUFBRUosUUFBTSxDQUFDO1lBQ0RBLG1CQUFpQixPQUFPO0lBQ2pDLE1BQU0sWUFBWSxNQUFLSyxlQUFnQkwsUUFBTTtBQUM3QyxRQUFJLGNBQWMsaUJBQ2hCLEtBQUksS0FBSyxNQUFLTSxpQkFBa0IsQ0FDOUIsS0FDRCxFQUFFTixRQUFNLENBQUM7YUFDRCxjQUFjLDhCQUV2QixNQUFJLElBQUksSUFBSSxHQUFHLElBQUlBLFFBQU0sUUFBUSxLQUFJO0FBQ25DLFNBQUksS0FBSyxHQUFHO0FBQ1osU0FBSSxLQUFLLE1BQUtPLFlBQWEsQ0FDekIsR0FBRyxNQUNILEtBQ0QsQ0FBQyxDQUFDO0FBQ0gsU0FBSSxLQUFLLEdBQUcsTUFBS1YsWUFBYUcsUUFBTSxJQUFJLENBQ3RDLEdBQUcsTUFDSCxLQUNELENBQUMsQ0FBQzs7U0FFQTtLQUVMLE1BQU0sTUFBTUEsUUFBTSxLQUFLLE1BQUksTUFBS1EsbUJBQW9CLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSTtBQUNqRSxTQUFJLEtBQUssR0FBRyxNQUFLQyxZQUFhLENBQzVCLEtBQ0QsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHOztjQUVOLE9BQU9ULFlBQVUsVUFBVTtBQUNwQyxRQUFJLEtBQUssR0FBRztBQUNaLFFBQUksS0FBSyxNQUFLVSxPQUFRLENBQ3BCLEdBQUcsTUFDSCxLQUNELENBQUMsQ0FBQztBQUNILFFBQUlWLFNBQU87S0FDVCxNQUFNLFVBQVVBO0FBQ2hCLFNBQUksS0FBSyxHQUFHLE1BQUtILFlBQWEsU0FBUyxDQUNyQyxHQUFHLE1BQ0gsS0FDRCxDQUFDLENBQUM7Ozs7QUFLVCxNQUFJLEtBQUssR0FBRztBQUNaLFNBQU87O0NBRVQsYUFBYSxTQUFPO0FBQ2xCLFNBQU9HLG1CQUFpQixRQUFRQSxtQkFBaUIsVUFBVTtHQUN6RDtHQUNBO0dBQ0E7R0FDRCxDQUFDLFNBQVMsT0FBT0EsUUFBTTs7Q0FFMUIsZ0JBQWdCLEtBQUs7QUFDbkIsTUFBSSxNQUFLVyxlQUFnQixJQUFJLElBQUksQ0FDL0IsUUFBTyxNQUFLQSxlQUFnQixJQUFJLElBQUk7RUFFdEMsTUFBTSxPQUFPLE1BQUtDLGlCQUFrQixJQUFJO0FBQ3hDLFFBQUtELGVBQWdCLElBQUksS0FBSyxLQUFLO0FBQ25DLFNBQU87O0NBRVQsa0JBQWtCLEtBQUs7QUFDckIsTUFBSSxDQUFDLElBQUksT0FFUCxRQUFPO0VBRVQsTUFBTSxnQkFBZ0IsTUFBS0UsWUFBYSxJQUFJLEdBQUc7QUFDL0MsTUFBSSxJQUFJLGNBQWMsTUFDcEIsUUFBTztBQUVULE9BQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLFFBQVEsSUFDN0IsS0FBSSxrQkFBa0IsTUFBS0EsWUFBYSxJQUFJLEdBQUcsSUFBSSxJQUFJLGNBQWMsTUFDbkUsUUFBTztBQUdYLFNBQU8sZ0JBQWdCLG1CQUFtQjs7Q0FFNUMsb0JBQW9CLFNBQU87QUFDekIsTUFBSWIsbUJBQWlCLEtBQ25CLFFBQU8sSUFBSSxNQUFLYyxVQUFXZCxRQUFNLENBQUM7V0FDekIsT0FBT0EsWUFBVSxZQUFZQSxtQkFBaUIsT0FDdkQsUUFBTyxLQUFLLFVBQVVBLFFBQU0sVUFBVSxDQUFDO1dBQzlCLE9BQU9BLFlBQVUsU0FDMUIsUUFBT0E7V0FDRSxPQUFPQSxZQUFVLFVBQzFCLFFBQU9BLFFBQU0sVUFBVTtXQUNkQSxtQkFBaUIsTUFFMUIsUUFBTyxJQURLQSxRQUFNLEtBQUssTUFBSSxNQUFLUSxtQkFBb0IsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQ2xEO1dBQ04sT0FBT1IsWUFBVSxVQUFVO0FBQ3BDLE9BQUksQ0FBQ0EsUUFDSCxPQUFNLElBQUksTUFBTSxxQkFBcUI7QUFRdkMsVUFBTyxJQU5LLE9BQU8sS0FBS0EsUUFBTSxDQUFDLEtBQUssUUFBTTtBQUN4QyxXQUFPLEdBQUcsU0FBUyxDQUNqQixJQUNELENBQUMsQ0FBQyxLQUNILE1BQUtRLG1CQUFvQlIsUUFBTSxLQUFLO0tBQ3BDLENBQUMsS0FBSyxJQUFJLENBQ0c7O0FBRWpCLFFBQU0sSUFBSSxNQUFNLHFCQUFxQjs7Q0FFdkMsc0JBQXNCLFNBQU87QUFDM0IsU0FBTyxPQUFPQSxZQUFVLFlBQVksT0FBT0EsWUFBVSxZQUFZLE9BQU9BLFlBQVUsYUFBYUEsbUJBQWlCLFVBQVVBLG1CQUFpQixRQUFRQSxtQkFBaUIsU0FBUyxNQUFLSyxlQUFnQkwsUUFBTSxLQUFLOztDQUUvTSxRQUFRLE1BQU07QUFDWixTQUFPLElBQUksU0FBUyxLQUFLLENBQUM7O0NBRTVCLGFBQWEsTUFBTTtBQUNqQixTQUFPLEtBQUssU0FBUyxLQUFLLENBQUM7O0NBRTdCLGFBQWEsTUFBTTtFQUNqQixNQUFNLFFBQVEsU0FBUyxLQUFLO0FBQzVCLE1BQUksTUFBTSxTQUFTLEtBQUssT0FDdEIsTUFBSyxTQUFTLE1BQU07QUFFdEIsU0FBTyxHQUFHLE1BQU07O0NBRWxCLGtCQUFrQixNQUFNLFNBQU87QUFDN0IsU0FBTyxHQUFHLE1BQUtTLFlBQWEsS0FBSyxHQUFHLEtBQUssVUFBVVQsUUFBTTs7Q0FFM0QsZ0JBQWdCLE1BQU0sU0FBTztBQUMzQixTQUFPLEdBQUcsTUFBS1MsWUFBYSxLQUFLLEdBQUcsS0FBSyxVQUFVVCxRQUFNOztDQUUzRCxtQkFBbUIsTUFBTSxTQUFPO0FBQzlCLE1BQUksT0FBTyxNQUFNQSxRQUFNLENBQ3JCLFFBQU8sR0FBRyxNQUFLUyxZQUFhLEtBQUssQ0FBQztBQUVwQyxVQUFPVCxTQUFQO0dBQ0UsS0FBSyxTQUNILFFBQU8sR0FBRyxNQUFLUyxZQUFhLEtBQUssQ0FBQztHQUNwQyxLQUFLLFVBQ0gsUUFBTyxHQUFHLE1BQUtBLFlBQWEsS0FBSyxDQUFDO0dBQ3BDLFFBQ0UsUUFBTyxHQUFHLE1BQUtBLFlBQWEsS0FBSyxHQUFHVDs7O0NBRzFDLGlCQUFpQixNQUFNLFNBQU87QUFDNUIsU0FBTyxHQUFHLE1BQUtTLFlBQWEsS0FBSyxHQUFHVDs7Q0FFdEMsV0FBVyxTQUFPO0VBQ2hCLFNBQVMsTUFBTSxHQUFHLE9BQU8sR0FBRztBQUMxQixVQUFPLEVBQUUsU0FBUyxNQUFNLElBQUk7O0VBRTlCLE1BQU0sSUFBSSxPQUFPQSxRQUFNLGFBQWEsR0FBRyxHQUFHLFVBQVUsQ0FBQztFQUNyRCxNQUFNLElBQUksTUFBTUEsUUFBTSxZQUFZLENBQUMsVUFBVSxDQUFDO0VBQzlDLE1BQU0sSUFBSSxNQUFNQSxRQUFNLGFBQWEsQ0FBQyxVQUFVLENBQUM7RUFDL0MsTUFBTSxNQUFNLE1BQU1BLFFBQU0sZUFBZSxDQUFDLFVBQVUsQ0FBQztFQUNuRCxNQUFNLElBQUksTUFBTUEsUUFBTSxlQUFlLENBQUMsVUFBVSxDQUFDO0VBQ2pELE1BQU0sS0FBSyxNQUFNQSxRQUFNLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxFQUFFO0FBRzFELFNBRGMsR0FBR0EsUUFBTSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUc7O0NBR3hFLGlCQUFpQixNQUFNLFNBQU87QUFDNUIsU0FBTyxHQUFHLE1BQUtTLFlBQWEsS0FBSyxHQUFHLE1BQUtLLFVBQVdkLFFBQU07O0NBRTVELFFBQVEsVUFBVSxFQUFFLEVBQUU7RUFDcEIsTUFBTSxFQUFFLGVBQWUsVUFBVTtFQUNqQyxNQUFNLGVBQWU7RUFDckIsTUFBTSxNQUFNLEVBQUU7QUFDZCxPQUFJLElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxPQUFPLFFBQVEsS0FBSTtHQUN6QyxNQUFNLElBQUksS0FBSyxPQUFPO0FBRXRCLE9BQUksRUFBRSxPQUFPLE9BQU8sRUFBRSxPQUFPLEtBQUs7O0FBRWhDLFFBQUksS0FBSyxPQUFPLElBQUksT0FBTyx1QkFBTSxLQUFLLE9BQU8sSUFBSSxnRUFBSSxNQUFNLEdBQUcsRUFBRSxPQUFPLE1BQUssRUFBRSxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUs7QUFDaEcsVUFBSztBQUNMOztBQUVGLFFBQUksS0FBSyxFQUFFO2NBRVAsY0FBYztJQUNoQixNQUFNLElBQUksYUFBYSxLQUFLLEVBQUU7QUFDOUIsUUFBSSxLQUFLLEVBQUUsR0FDVCxLQUFJLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBRW5ELEtBQUksS0FBSyxFQUFFO1NBR2IsS0FBSSxLQUFLLEVBQUU7O0VBS2pCLE1BQU0sZ0JBQWdCLEVBQUU7QUFDeEIsT0FBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksUUFBUSxLQUFJO0dBQ2pDLE1BQU0sSUFBSSxJQUFJO0FBQ2QsT0FBSSxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksT0FBTyxJQUMvQixlQUFjLEtBQUssRUFBRTs7QUFHekIsU0FBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JQLFNBQWdCLFVBQVUsS0FBSyxTQUFTO0FBQzFDLFFBQU8sSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLFFBQVEsQ0FBQyxLQUFLLEtBQUs7Ozs7Ozs7O0dDNVE3QyxTQUFnQixjQUFjLE9BQU8sV0FBVztDQUNsRCxJQUFJLGNBQWM7QUFDbEIsTUFBSyxNQUFNLE9BQU8sT0FBTTtBQUN0QixNQUFJLENBQUMsVUFBVSxJQUFJLENBQ2pCO0FBRUYsUUFBTSxlQUFlO0FBQ3JCLGlCQUFlOztBQUVqQixPQUFNLE9BQU8sWUFBWTtBQUN6QixRQUFPOzs7OztBQ1pULFNBQWdCLFVBQVUsUUFBUSxPQUFPLFNBQVM7QUFDaEQsUUFBTyxrQkFBa0IsUUFBUSx1QkFBTyxJQUFJLEtBQUssRUFBRSxRQUFROztBQUU3RCxTQUFTLGtCQUFrQixRQUFRLE9BQU8sTUFBTSxTQUFTO0NBQ3ZELE1BQU0sU0FBUyxFQUFFO0NBQ2pCLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FDbkIsR0FBRyxRQUFRLE9BQU8sRUFDbEIsR0FBRyxRQUFRLE1BQU0sQ0FDbEIsQ0FBQztBQUVGLE1BQUssTUFBTSxPQUFPLE1BQUs7QUFFckIsTUFBSSxRQUFRLFlBQ1Y7RUFFRixNQUFNLElBQUksT0FBTztBQUNqQixNQUFJLENBQUMsT0FBTyxPQUFPLE9BQU8sSUFBSSxFQUFFO0FBQzlCLFVBQU8sT0FBTztBQUNkOztFQUVGLE1BQU0sSUFBSSxNQUFNO0FBQ2hCLE1BQUksZ0JBQWdCLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUU7QUFDNUUsUUFBSyxJQUFJLEVBQUU7QUFDWCxRQUFLLElBQUksRUFBRTtBQUNYLFVBQU8sT0FBTyxhQUFhLEdBQUcsR0FBRyxNQUFNLFFBQVE7QUFDL0M7O0FBR0YsU0FBTyxPQUFPOztBQUVoQixRQUFPOztBQUVULFNBQVMsYUFBYSxNQUFNLE9BQU8sTUFBTSxVQUFVO0NBQ2pELFFBQVE7Q0FDUixNQUFNO0NBQ04sTUFBTTtDQUNQLEVBQUU7QUFFRCxLQUFJLFlBQVksS0FBSyxJQUFJLFlBQVksTUFBTSxDQUN6QyxRQUFPLGtCQUFrQixNQUFNLE9BQU8sTUFBTSxRQUFRO0FBRXRELEtBQUksV0FBVyxLQUFLLElBQUksV0FBVyxNQUFNLEVBQUU7QUFFekMsTUFBSSxNQUFNLFFBQVEsS0FBSyxJQUFJLE1BQU0sUUFBUSxNQUFNLEVBQUU7QUFDL0MsT0FBSSxRQUFRLFdBQVcsUUFDckIsUUFBTyxLQUFLLE9BQU8sTUFBTTtBQUUzQixVQUFPOztBQUdULE1BQUksZ0JBQWdCLE9BQU8saUJBQWlCLEtBQUs7QUFDL0MsT0FBSSxRQUFRLFNBQVMsUUFDbkIsUUFBTyxJQUFJLElBQUksQ0FDYixHQUFHLE1BQ0gsR0FBRyxNQUNKLENBQUM7QUFFSixVQUFPOztBQUdULE1BQUksZ0JBQWdCLE9BQU8saUJBQWlCLEtBQUs7QUFDL0MsT0FBSSxRQUFRLFNBQVMsUUFDbkIsUUFBTyxJQUFJLElBQUksQ0FDYixHQUFHLE1BQ0gsR0FBRyxNQUNKLENBQUM7QUFFSixVQUFPOzs7QUFHWCxRQUFPOzs7Ozs7R0FNTCxTQUFTLFlBQVksU0FBTztBQUM5QixRQUFPLE9BQU8sZUFBZWUsUUFBTSxLQUFLLE9BQU87O0FBRWpELFNBQVMsV0FBVyxTQUFPO0FBQ3pCLFFBQU8sT0FBT0EsUUFBTSxPQUFPLGNBQWM7O0FBRTNDLFNBQVMsZ0JBQWdCLFNBQU87QUFDOUIsUUFBT0EsWUFBVSxRQUFRLE9BQU9BLFlBQVU7O0FBRTVDLFNBQVMsUUFBUSxRQUFRO0NBQ3ZCLE1BQU0sU0FBUyxPQUFPLHNCQUFzQixPQUFPO0FBQ25ELGVBQWMsU0FBUyxRQUFNLE9BQU8sVUFBVSxxQkFBcUIsS0FBSyxRQUFRLElBQUksQ0FBQztBQUNyRixRQUFPLEtBQUssR0FBRyxPQUFPLEtBQUssT0FBTyxDQUFDO0FBQ25DLFFBQU87Ozs7Ozs7R0N2RkwsU0FBUyxPQUFPLFlBQVk7QUFDOUIsUUFBTyxhQUFhLE1BQU0sS0FBSyxhQUFhLFFBQVEsS0FBSyxhQUFhLFFBQVE7O0FBRWhGLElBQWEsVUFBYixNQUFxQjtDQUNuQixjQUFjO0NBQ2QsWUFBWTtDQUNaO0NBQ0EsWUFBWSxRQUFPO0FBQ2pCLFFBQUtDLFNBQVU7O0NBRWpCLElBQUksV0FBVztBQUNiLFNBQU8sTUFBS0M7O0NBRWQsSUFBSSxTQUFTO0FBQ1gsU0FBTyxNQUFLRDs7Ozs7SUFLVixLQUFLLFFBQVEsR0FBRztBQUNsQixTQUFPLE1BQUtBLE9BQVEsTUFBS0MsV0FBWSxVQUFVOzs7Ozs7SUFNN0MsTUFBTSxPQUFPLEtBQUs7QUFDcEIsU0FBTyxNQUFLRCxPQUFRLE1BQU0sTUFBS0MsV0FBWSxPQUFPLE1BQUtBLFdBQVksSUFBSTs7OztJQUlyRSxLQUFLLFFBQVEsR0FBRztBQUNsQixRQUFLQSxZQUFhOztDQUVwQixrQkFBa0I7QUFDaEIsU0FBTSxNQUFLQyxXQUFZLEtBQUssS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUNyRCxNQUFLLE1BQU07QUFHYixNQUFJLENBQUMsS0FBSyxrQkFBa0IsSUFBSSxLQUFLLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRTtHQUN0RCxNQUFNLFVBQVUsUUFBUSxLQUFLLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLEdBQUc7R0FDOUQsTUFBTSxXQUFXLE1BQUtEO0FBQ3RCLFNBQU0sSUFBSSxZQUFZLHNFQUFzRSxTQUFTLE9BQU8sUUFBUSxJQUFJOzs7Q0FHNUgsY0FBYyxVQUFVLEVBQ3RCLGNBQWMsTUFDZixFQUFFO0FBQ0QsU0FBTSxDQUFDLEtBQUssS0FBSyxFQUFDO0dBQ2hCLE1BQU0sT0FBTyxLQUFLLE1BQU07QUFDeEIsT0FBSSxNQUFLQyxXQUFZLEtBQUssS0FBSyxJQUFJLEtBQUssa0JBQWtCLENBQ3hELE1BQUssTUFBTTtZQUNGLFFBQVEsZ0JBQWdCLEtBQUssTUFBTSxLQUFLLElBRWpELFFBQU0sQ0FBQyxLQUFLLGtCQUFrQixJQUFJLENBQUMsS0FBSyxLQUFLLENBQzNDLE1BQUssTUFBTTtPQUdiOzs7OztJQU1GLE1BQU07QUFDUixTQUFPLE1BQUtELFlBQWEsTUFBS0QsT0FBUTs7Q0FFeEMsbUJBQW1CO0FBQ2pCLFNBQU8sS0FBSyxNQUFNLEtBQUssUUFBUSxLQUFLLFdBQVcsT0FBTzs7Q0FFeEQsV0FBVyxjQUFjO0FBQ3ZCLFNBQU8sTUFBS0EsT0FBUSxXQUFXLGNBQWMsTUFBS0MsU0FBVTs7Q0FFOUQsTUFBTSxRQUFRO0FBQ1osTUFBSSxDQUFDLE9BQU8sT0FDVixPQUFNLElBQUksTUFBTSxVQUFVLE9BQU8sa0NBQWtDO0FBRXJFLFNBQU8sWUFBWSxNQUFLQTtBQUN4QixTQUFPLE1BQUtELE9BQVEsTUFBTSxPQUFPOzs7QUFNckMsU0FBUyxRQUFRLE1BQU07QUFDckIsUUFBTztFQUNMLElBQUk7RUFDSjtFQUNEOztBQUVILFNBQVMsVUFBVTtBQUNqQixRQUFPLEVBQ0wsSUFBSSxPQUNMOzs7Ozs7R0FNQyxTQUFnQixPQUFPLE1BQU0sU0FBUyxFQUN4QyxXQUFXLE1BQ1osRUFBRTtBQUNELFFBQU8sS0FBSyxhQUFhLEtBQUssU0FBTyxHQUNoQyxNQUFNLEtBQ1IsR0FBRyxPQUFPOztBQUVmLFNBQVMsU0FBUyxTQUFPO0FBQ3ZCLFFBQU8sT0FBT0csWUFBVSxZQUFZQSxZQUFVOztBQUVoRCxTQUFTLGVBQWUsUUFBUSxNQUFNO0NBQ3BDLE1BQU0sTUFBTSxLQUFLO0FBQ2pCLEtBQUksQ0FBQyxJQUNILE9BQU0sSUFBSSxNQUFNLDZEQUE2RDtBQUUvRSxRQUFPLE9BQU87O0FBRWhCLFNBQVMsZ0JBQWdCLFFBQVEsU0FBTztDQUN0QyxNQUFNLEVBQUUsTUFBTSxNQUFNLG1CQUFVQztDQUM5QixNQUFNLGVBQWUsZUFBZSxRQUFRLEtBQUs7QUFDakQsS0FBSSxpQkFBaUIsT0FDbkIsUUFBTyxPQUFPLE9BQU8sUUFBUSxPQUFPLE1BQU1ELFFBQU0sQ0FBQztBQUVuRCxLQUFJLE1BQU0sUUFBUSxhQUFhLEVBQUU7QUFFL0IsYUFEYSxhQUFhLEdBQUcsR0FBRyxFQUNmO0dBQ2Y7R0FDQSxNQUFNLEtBQUssTUFBTSxFQUFFO0dBQ25CO0dBQ0QsQ0FBQztBQUNGLFNBQU87O0FBRVQsS0FBSSxTQUFTLGFBQWEsRUFBRTtBQUMxQixhQUFXLGNBQWM7R0FDdkI7R0FDQSxNQUFNLEtBQUssTUFBTSxFQUFFO0dBQ25CO0dBQ0QsQ0FBQztBQUNGLFNBQU87O0FBRVQsT0FBTSxJQUFJLE1BQU0sb0JBQW9COztBQUV0QyxTQUFTLHFCQUFxQixRQUFRLFNBQU87Q0FDM0MsTUFBTSxFQUFFLE1BQU0sTUFBTSxtQkFBVUM7Q0FDOUIsTUFBTSxlQUFlLGVBQWUsUUFBUSxLQUFLO0FBQ2pELEtBQUksaUJBQWlCLE9BQ25CLFFBQU8sT0FBTyxPQUFPLFFBQVEsT0FBTyxNQUFNLENBQ3hDRCxRQUNELENBQUMsQ0FBQztBQUVMLEtBQUksTUFBTSxRQUFRLGFBQWEsRUFBRTtBQUMvQixNQUFJQyxRQUFNLEtBQUssV0FBVyxFQUN4QixjQUFhLEtBQUtELFFBQU07TUFHeEIsWUFEYSxhQUFhLEdBQUcsR0FBRyxFQUNmO0dBQ2YsTUFBTUMsUUFBTTtHQUNaLE1BQU1BLFFBQU0sS0FBSyxNQUFNLEVBQUU7R0FDekIsT0FBT0EsUUFBTTtHQUNkLENBQUM7QUFFSixTQUFPOztBQUVULEtBQUksU0FBUyxhQUFhLEVBQUU7QUFDMUIsYUFBVyxjQUFjO0dBQ3ZCO0dBQ0EsTUFBTSxLQUFLLE1BQU0sRUFBRTtHQUNuQjtHQUNELENBQUM7QUFDRixTQUFPOztBQUVULE9BQU0sSUFBSSxNQUFNLG9CQUFvQjs7QUFFdEMsU0FBZ0IsV0FBVyxRQUFRLE1BQU07QUFDdkMsU0FBTyxLQUFLLE1BQVo7RUFDRSxLQUFLLFFBQ0gsUUFBTyxVQUFVLFFBQVEsS0FBSyxNQUFNO0VBQ3RDLEtBQUssUUFDSCxRQUFPLGdCQUFnQixRQUFRLEtBQUs7RUFDdEMsS0FBSyxhQUNILFFBQU8scUJBQXFCLFFBQVEsS0FBSzs7O0FBTy9DLFNBQVMsR0FBRyxTQUFTO0FBQ25CLFNBQVEsWUFBVTtBQUNoQixPQUFLLE1BQU1DLFdBQVMsU0FBUTtHQUMxQixNQUFNLFNBQVNBLFFBQU0sUUFBUTtBQUM3QixPQUFJLE9BQU8sR0FBSSxRQUFPOztBQUV4QixTQUFPLFNBQVM7Ozs7OztHQU1oQixTQUFTQyxPQUFLLFFBQVEsV0FBVztDQUNuQyxNQUFNLFlBQVksVUFBVSxVQUFVO0FBQ3RDLFNBQVEsWUFBVTtFQUNoQixNQUFNLE1BQU0sRUFBRTtFQUNkLE1BQU0sUUFBUSxPQUFPLFFBQVE7QUFDN0IsTUFBSSxDQUFDLE1BQU0sR0FBSSxRQUFPLFFBQVEsSUFBSTtBQUNsQyxNQUFJLEtBQUssTUFBTSxLQUFLO0FBQ3BCLFNBQU0sQ0FBQyxRQUFRLEtBQUssRUFBQztBQUNuQixPQUFJLENBQUMsVUFBVSxRQUFRLENBQUMsR0FBSTtHQUM1QixNQUFNLFNBQVMsT0FBTyxRQUFRO0FBQzlCLE9BQUksQ0FBQyxPQUFPLEdBQ1YsT0FBTSxJQUFJLFlBQVksd0JBQXdCLFVBQVUsR0FBRztBQUU3RCxPQUFJLEtBQUssT0FBTyxLQUFLOztBQUV2QixTQUFPLFFBQVEsSUFBSTs7Ozs7O0dBTW5CLFNBQVMsTUFBTSxRQUFRLFdBQVc7Q0FDcEMsTUFBTSxZQUFZLFVBQVUsVUFBVTtBQUN0QyxTQUFRLFlBQVU7RUFDaEIsTUFBTSxRQUFRLE9BQU8sUUFBUTtBQUM3QixNQUFJLENBQUMsTUFBTSxHQUFJLFFBQU8sU0FBUztFQUMvQixNQUFNLE1BQU0sQ0FDVixNQUFNLEtBQ1A7QUFDRCxTQUFNLENBQUMsUUFBUSxLQUFLLEVBQUM7QUFDbkIsT0FBSSxDQUFDLFVBQVUsUUFBUSxDQUFDLEdBQUk7R0FDNUIsTUFBTSxTQUFTLE9BQU8sUUFBUTtBQUM5QixPQUFJLENBQUMsT0FBTyxHQUNWLE9BQU0sSUFBSSxZQUFZLHdCQUF3QixVQUFVLEdBQUc7QUFFN0QsT0FBSSxLQUFLLE9BQU8sS0FBSzs7QUFFdkIsU0FBTyxRQUFRLElBQUk7OztBQUd2QixTQUFTLEdBQUcsV0FBVyxXQUFXLGFBQWE7Q0FDN0MsTUFBTSxZQUFZLFVBQVUsVUFBVTtBQUN0QyxTQUFRLFlBQVU7RUFDaEIsTUFBTSxXQUFXLFFBQVE7RUFDekIsTUFBTSxNQUFNLFVBQVUsUUFBUTtBQUM5QixNQUFJLENBQUMsSUFBSSxHQUFJLFFBQU8sU0FBUztBQUU3QixNQUFJLENBRFEsVUFBVSxRQUFRLENBQ3JCLEdBQ1AsT0FBTSxJQUFJLFlBQVksZ0NBQWdDLFVBQVUsR0FBRztFQUVyRSxNQUFNSCxVQUFRLFlBQVksUUFBUTtBQUNsQyxNQUFJLENBQUNBLFFBQU0sSUFBSTtHQUNiLE1BQU0sZUFBZSxRQUFRLE9BQU8sUUFBUSxNQUFNLFFBQVEsU0FBUztHQUNuRSxNQUFNLGNBQWMsZUFBZSxJQUFJLGVBQWUsUUFBUSxPQUFPO0dBQ3JFLE1BQU0sT0FBTyxRQUFRLE9BQU8sTUFBTSxVQUFVLFlBQVk7QUFDeEQsU0FBTSxJQUFJLFlBQVksK0JBQStCLEtBQUssR0FBRzs7QUFFL0QsU0FBTyxRQUFRLE9BQU8sSUFBSSxNQUFNQSxRQUFNLEtBQUssQ0FBQzs7O0FBR2hELFNBQVNJLFFBQU0sUUFBUTtBQUNyQixTQUFRLFlBQVU7RUFDaEIsTUFBTSxTQUFTLE9BQU8sUUFBUTtBQUM5QixNQUFJLENBQUMsT0FBTyxHQUFJLFFBQU8sU0FBUztFQUNoQyxJQUFJLE9BQU8sRUFDVCxXQUFXLE1BQ1o7QUFDRCxPQUFLLE1BQU0sVUFBVSxPQUFPLEtBQzFCLEtBQUksT0FBTyxXQUFXLFlBQVksV0FBVyxLQUMzQyxRQUFPLFVBQVUsTUFBTSxPQUFPO0FBR2xDLFNBQU8sUUFBUSxLQUFLOzs7QUFHeEIsU0FBUyxPQUFPLFFBQVE7QUFDdEIsU0FBUSxZQUFVO0VBQ2hCLE1BQU0sT0FBTyxFQUFFO0FBQ2YsU0FBTSxDQUFDLFFBQVEsS0FBSyxFQUFDO0dBQ25CLE1BQU0sU0FBUyxPQUFPLFFBQVE7QUFDOUIsT0FBSSxDQUFDLE9BQU8sR0FBSTtBQUNoQixRQUFLLEtBQUssT0FBTyxLQUFLO0FBQ3RCLFdBQVEsZUFBZTs7QUFFekIsTUFBSSxLQUFLLFdBQVcsRUFBRyxRQUFPLFNBQVM7QUFDdkMsU0FBTyxRQUFRLEtBQUs7OztBQUd4QixTQUFTLFNBQVMsTUFBTSxRQUFRLE9BQU87Q0FDckMsTUFBTSxPQUFPLFVBQVUsS0FBSztDQUM1QixNQUFNLFFBQVEsVUFBVSxNQUFNO0FBQzlCLFNBQVEsWUFBVTtBQUNoQixNQUFJLENBQUMsS0FBSyxRQUFRLENBQUMsR0FDakIsUUFBTyxTQUFTO0VBRWxCLE1BQU0sU0FBUyxPQUFPLFFBQVE7QUFDOUIsTUFBSSxDQUFDLE9BQU8sR0FDVixPQUFNLElBQUksWUFBWSx3QkFBd0IsS0FBSyxHQUFHO0FBRXhELE1BQUksQ0FBQyxNQUFNLFFBQVEsQ0FBQyxHQUNsQixPQUFNLElBQUksWUFBWSxrQkFBa0IsTUFBTSx3QkFBd0IsS0FBSyxHQUFHO0FBRWhGLFNBQU8sUUFBUSxPQUFPLEtBQUs7OztBQUcvQixTQUFTLFVBQVUsS0FBSztBQUN0QixTQUFRLFlBQVU7QUFDaEIsVUFBUSxpQkFBaUI7QUFDekIsTUFBSSxDQUFDLFFBQVEsV0FBVyxJQUFJLENBQUUsUUFBTyxTQUFTO0FBQzlDLFVBQVEsS0FBSyxJQUFJLE9BQU87QUFDeEIsVUFBUSxpQkFBaUI7QUFDekIsU0FBTyxRQUFRLE9BQVU7OztBQU03QixNQUFNLGtCQUFrQjtBQUN4QixTQUFnQixRQUFRLFNBQVM7O0FBQy9CLFNBQVEsaUJBQWlCO0NBQ3pCLE1BQU0sd0JBQU0sUUFBUSxNQUFNLGdCQUFnQixrRUFBRztBQUM3QyxLQUFJLENBQUMsSUFBSyxRQUFPLFNBQVM7QUFDMUIsU0FBUSxLQUFLLElBQUksT0FBTztBQUN4QixRQUFPLFFBQVEsSUFBSTs7QUFFckIsU0FBUyxlQUFlLFNBQVM7QUFDL0IsS0FBSSxRQUFRLE1BQU0sS0FBSyxLQUFNLFFBQU8sU0FBUztBQUM3QyxTQUFRLE1BQU07QUFFZCxTQUFPLFFBQVEsTUFBTSxFQUFyQjtFQUNFLEtBQUs7QUFDSCxXQUFRLE1BQU07QUFDZCxVQUFPLFFBQVEsS0FBSztFQUN0QixLQUFLO0FBQ0gsV0FBUSxNQUFNO0FBQ2QsVUFBTyxRQUFRLElBQUs7RUFDdEIsS0FBSztBQUNILFdBQVEsTUFBTTtBQUNkLFVBQU8sUUFBUSxLQUFLO0VBQ3RCLEtBQUs7QUFDSCxXQUFRLE1BQU07QUFDZCxVQUFPLFFBQVEsS0FBSztFQUN0QixLQUFLO0FBQ0gsV0FBUSxNQUFNO0FBQ2QsVUFBTyxRQUFRLEtBQUs7RUFDdEIsS0FBSztFQUNMLEtBQUssS0FDSDtHQUVFLE1BQU0sZUFBZSxRQUFRLE1BQU0sS0FBSyxNQUFNLElBQUk7R0FDbEQsTUFBTSxZQUFZLFNBQVMsT0FBTyxRQUFRLE1BQU0sR0FBRyxJQUFJLGFBQWEsRUFBRSxHQUFHO0dBQ3pFLE1BQU0sTUFBTSxPQUFPLGNBQWMsVUFBVTtBQUMzQyxXQUFRLEtBQUssZUFBZSxFQUFFO0FBQzlCLFVBQU8sUUFBUSxJQUFJOztFQUV2QixLQUFLO0FBQ0gsV0FBUSxNQUFNO0FBQ2QsVUFBTyxRQUFRLEtBQUk7RUFDckIsS0FBSztBQUNILFdBQVEsTUFBTTtBQUNkLFVBQU8sUUFBUSxLQUFLO0VBQ3RCLFFBQ0UsT0FBTSxJQUFJLFlBQVksOEJBQThCLFFBQVEsTUFBTSxHQUFHOzs7QUFHM0UsU0FBZ0IsWUFBWSxTQUFTO0FBQ25DLFNBQVEsaUJBQWlCO0FBQ3pCLEtBQUksUUFBUSxNQUFNLEtBQUssS0FBSyxRQUFPLFNBQVM7QUFDNUMsU0FBUSxNQUFNO0NBQ2QsTUFBTSxNQUFNLEVBQUU7QUFDZCxRQUFNLFFBQVEsTUFBTSxLQUFLLFFBQU8sQ0FBQyxRQUFRLEtBQUssRUFBQztBQUM3QyxNQUFJLFFBQVEsTUFBTSxLQUFLLEtBQ3JCLE9BQU0sSUFBSSxZQUFZLHdDQUF3QztFQUVoRSxNQUFNLGNBQWMsZUFBZSxRQUFRO0FBQzNDLE1BQUksWUFBWSxHQUNkLEtBQUksS0FBSyxZQUFZLEtBQUs7T0FDckI7QUFDTCxPQUFJLEtBQUssUUFBUSxNQUFNLENBQUM7QUFDeEIsV0FBUSxNQUFNOzs7QUFHbEIsS0FBSSxRQUFRLEtBQUssQ0FDZixPQUFNLElBQUksWUFBWSxzQ0FBc0MsSUFBSSxLQUFLLEdBQUcsR0FBRztBQUU3RSxTQUFRLE1BQU07QUFDZCxRQUFPLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQzs7QUFFOUIsU0FBZ0IsY0FBYyxTQUFTO0FBQ3JDLFNBQVEsaUJBQWlCO0FBQ3pCLEtBQUksUUFBUSxNQUFNLEtBQUssSUFBSyxRQUFPLFNBQVM7QUFDNUMsU0FBUSxNQUFNO0NBQ2QsTUFBTSxNQUFNLEVBQUU7QUFDZCxRQUFNLFFBQVEsTUFBTSxLQUFLLE9BQU8sQ0FBQyxRQUFRLEtBQUssRUFBQztBQUM3QyxNQUFJLFFBQVEsTUFBTSxLQUFLLEtBQ3JCLE9BQU0sSUFBSSxZQUFZLHdDQUF3QztBQUVoRSxNQUFJLEtBQUssUUFBUSxNQUFNLENBQUM7QUFDeEIsVUFBUSxNQUFNOztBQUVoQixLQUFJLFFBQVEsS0FBSyxDQUNmLE9BQU0sSUFBSSxZQUFZLHNDQUFzQyxJQUFJLEtBQUssR0FBRyxHQUFHO0FBRTdFLFNBQVEsTUFBTTtBQUNkLFFBQU8sUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDOztBQUU5QixTQUFnQixxQkFBcUIsU0FBUztBQUM1QyxTQUFRLGlCQUFpQjtBQUN6QixLQUFJLENBQUMsUUFBUSxXQUFXLFNBQU0sQ0FBRSxRQUFPLFNBQVM7QUFDaEQsU0FBUSxLQUFLLEVBQUU7QUFDZixLQUFJLFFBQVEsTUFBTSxLQUFLLEtBRXJCLFNBQVEsTUFBTTtVQUNMLFFBQVEsV0FBVyxPQUFPLENBRW5DLFNBQVEsS0FBSyxFQUFFO0NBRWpCLE1BQU0sTUFBTSxFQUFFO0FBQ2QsUUFBTSxDQUFDLFFBQVEsV0FBVyxTQUFNLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBQztBQUVqRCxNQUFJLFFBQVEsV0FBVyxPQUFPLEVBQUU7QUFDOUIsV0FBUSxNQUFNO0FBQ2QsV0FBUSxjQUFjLEVBQ3BCLGNBQWMsT0FDZixDQUFDO0FBQ0Y7YUFDUyxRQUFRLFdBQVcsU0FBUyxFQUFFO0FBQ3ZDLFdBQVEsTUFBTTtBQUNkLFdBQVEsY0FBYyxFQUNwQixjQUFjLE9BQ2YsQ0FBQztBQUNGOztFQUVGLE1BQU0sY0FBYyxlQUFlLFFBQVE7QUFDM0MsTUFBSSxZQUFZLEdBQ2QsS0FBSSxLQUFLLFlBQVksS0FBSztPQUNyQjtBQUNMLE9BQUksS0FBSyxRQUFRLE1BQU0sQ0FBQztBQUN4QixXQUFRLE1BQU07OztBQUdsQixLQUFJLFFBQVEsS0FBSyxDQUNmLE9BQU0sSUFBSSxZQUFZLHFDQUFxQyxJQUFJLEtBQUssR0FBRyxHQUFHO0FBRzVFLEtBQUksUUFBUSxLQUFLLEVBQUUsS0FBSyxNQUFLO0FBQzNCLE1BQUksS0FBSyxLQUFJO0FBQ2IsVUFBUSxNQUFNOztBQUVoQixTQUFRLEtBQUssRUFBRTtBQUNmLFFBQU8sUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDOztBQUU5QixTQUFnQix1QkFBdUIsU0FBUztBQUM5QyxTQUFRLGlCQUFpQjtBQUN6QixLQUFJLENBQUMsUUFBUSxXQUFXLE1BQU0sQ0FBRSxRQUFPLFNBQVM7QUFDaEQsU0FBUSxLQUFLLEVBQUU7QUFDZixLQUFJLFFBQVEsTUFBTSxLQUFLLEtBRXJCLFNBQVEsTUFBTTtVQUNMLFFBQVEsV0FBVyxPQUFPLENBRW5DLFNBQVEsS0FBSyxFQUFFO0NBRWpCLE1BQU0sTUFBTSxFQUFFO0FBQ2QsUUFBTSxDQUFDLFFBQVEsV0FBVyxNQUFNLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBQztBQUNqRCxNQUFJLEtBQUssUUFBUSxNQUFNLENBQUM7QUFDeEIsVUFBUSxNQUFNOztBQUVoQixLQUFJLFFBQVEsS0FBSyxDQUNmLE9BQU0sSUFBSSxZQUFZLHFDQUFxQyxJQUFJLEtBQUssR0FBRyxHQUFHO0FBRzVFLEtBQUksUUFBUSxLQUFLLEVBQUUsS0FBSyxLQUFLO0FBQzNCLE1BQUksS0FBSyxJQUFJO0FBQ2IsVUFBUSxNQUFNOztBQUVoQixTQUFRLEtBQUssRUFBRTtBQUNmLFFBQU8sUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDOztBQUU5QixNQUFNLGlCQUFpQjtBQUN2QixTQUFnQixRQUFRLFNBQVM7QUFDL0IsU0FBUSxpQkFBaUI7Q0FDekIsTUFBTSxRQUFRLFFBQVEsTUFBTSxlQUFlO0FBQzNDLEtBQUksQ0FBQyxNQUFPLFFBQU8sU0FBUztDQUM1QixNQUFNLFNBQVMsTUFBTTtBQUNyQixTQUFRLEtBQUssT0FBTyxPQUFPO0FBRTNCLFFBQU8sUUFETyxXQUFXLE9BQ0o7O0FBRXZCLE1BQU0sZUFBZSxJQUFJLElBQUk7Q0FDM0IsQ0FDRSxPQUNBLFNBQ0Q7Q0FDRCxDQUNFLFFBQ0EsU0FDRDtDQUNELENBQ0UsUUFDQSxVQUNEO0NBQ0YsQ0FBQztBQUNGLE1BQU0sa0JBQWtCO0FBQ3hCLFNBQWdCLFNBQVMsU0FBUztBQUNoQyxTQUFRLGlCQUFpQjtDQUN6QixNQUFNLFFBQVEsUUFBUSxNQUFNLGdCQUFnQjtBQUM1QyxLQUFJLENBQUMsTUFBTyxRQUFPLFNBQVM7Q0FDNUIsTUFBTSxTQUFTLE1BQU07QUFDckIsU0FBUSxLQUFLLE9BQU8sT0FBTztBQUUzQixRQUFPLFFBRE8sYUFBYSxJQUFJLE9BQU8sQ0FDakI7O0FBRXZCLE1BQU0sYUFBYTtBQUNuQixTQUFnQixJQUFJLFNBQVM7QUFDM0IsU0FBUSxpQkFBaUI7Q0FDekIsTUFBTSxRQUFRLFFBQVEsTUFBTSxXQUFXO0FBQ3ZDLEtBQUksQ0FBQyxNQUFPLFFBQU8sU0FBUztDQUM1QixNQUFNLFNBQVMsTUFBTTtBQUNyQixTQUFRLEtBQUssT0FBTyxPQUFPO0FBRTNCLFFBQU8sUUFETyxJQUNPOztBQUV2QixNQUFhLFlBQVksTUFBTSxHQUFHO0NBQ2hDO0NBQ0E7Q0FDQTtDQUNELENBQUMsRUFBRSxJQUFJO0FBQ1IsTUFBTSxnQkFBZ0I7QUFDdEIsU0FBZ0IsT0FBTyxTQUFTOztBQUM5QixTQUFRLGlCQUFpQjtDQUN6QixNQUFNLDJCQUFRLFFBQVEsTUFBTSxjQUFjLG9FQUFHO0FBQzdDLEtBQUksQ0FBQyxNQUFPLFFBQU8sU0FBUztBQUM1QixTQUFRLEtBQUssTUFBTSxPQUFPO0NBQzFCLE1BQU1KLFVBQVEsTUFBTSxNQUFNLEVBQUUsQ0FBQyxXQUFXLEtBQUssR0FBRztDQUNoRCxNQUFNLFNBQVMsU0FBU0EsU0FBTyxFQUFFO0FBQ2pDLFFBQU8sTUFBTSxPQUFPLEdBQUcsU0FBUyxHQUFHLFFBQVEsT0FBTzs7QUFFcEQsTUFBTSxlQUFlO0FBQ3JCLFNBQWdCLE1BQU0sU0FBUzs7QUFDN0IsU0FBUSxpQkFBaUI7Q0FDekIsTUFBTSwyQkFBUSxRQUFRLE1BQU0sYUFBYSxvRUFBRztBQUM1QyxLQUFJLENBQUMsTUFBTyxRQUFPLFNBQVM7QUFDNUIsU0FBUSxLQUFLLE1BQU0sT0FBTztDQUMxQixNQUFNQSxVQUFRLE1BQU0sTUFBTSxFQUFFLENBQUMsV0FBVyxLQUFLLEdBQUc7Q0FDaEQsTUFBTSxTQUFTLFNBQVNBLFNBQU8sRUFBRTtBQUNqQyxRQUFPLE1BQU0sT0FBTyxHQUFHLFNBQVMsR0FBRyxRQUFRLE9BQU87O0FBRXBELE1BQU0sYUFBYTtBQUNuQixTQUFnQixJQUFJLFNBQVM7O0FBQzNCLFNBQVEsaUJBQWlCO0NBQ3pCLE1BQU0sMkJBQVEsUUFBUSxNQUFNLFdBQVcsb0VBQUc7QUFDMUMsS0FBSSxDQUFDLE1BQU8sUUFBTyxTQUFTO0FBQzVCLFNBQVEsS0FBSyxNQUFNLE9BQU87Q0FDMUIsTUFBTUEsVUFBUSxNQUFNLE1BQU0sRUFBRSxDQUFDLFdBQVcsS0FBSyxHQUFHO0NBQ2hELE1BQU0sU0FBUyxTQUFTQSxTQUFPLEdBQUc7QUFDbEMsUUFBTyxNQUFNLE9BQU8sR0FBRyxTQUFTLEdBQUcsUUFBUSxPQUFPOztBQUVwRCxNQUFNLGlCQUFpQjtBQUN2QixTQUFnQixRQUFRLFNBQVM7O0FBQy9CLFNBQVEsaUJBQWlCO0NBQ3pCLE1BQU0sMkJBQVEsUUFBUSxNQUFNLGVBQWUsb0VBQUc7QUFDOUMsS0FBSSxDQUFDLE1BQU8sUUFBTyxTQUFTO0FBQzVCLFNBQVEsS0FBSyxNQUFNLE9BQU87Q0FDMUIsTUFBTUEsVUFBUSxNQUFNLFdBQVcsS0FBSyxHQUFHO0FBRXZDLFFBQU8sUUFESyxTQUFTQSxTQUFPLEdBQUcsQ0FDWjs7QUFFckIsTUFBTSxlQUFlO0FBQ3JCLFNBQWdCLE1BQU0sU0FBUzs7QUFDN0IsU0FBUSxpQkFBaUI7Q0FDekIsTUFBTSwyQkFBUSxRQUFRLE1BQU0sYUFBYSxvRUFBRztBQUM1QyxLQUFJLENBQUMsTUFBTyxRQUFPLFNBQVM7QUFDNUIsU0FBUSxLQUFLLE1BQU0sT0FBTztDQUMxQixNQUFNQSxVQUFRLE1BQU0sV0FBVyxLQUFLLEdBQUc7Q0FDdkMsTUFBTUssVUFBUSxXQUFXTCxRQUFNO0FBQy9CLEtBQUksTUFBTUssUUFBTSxDQUFFLFFBQU8sU0FBUztBQUNsQyxRQUFPLFFBQVFBLFFBQU07O0FBRXZCLE1BQU0sbUJBQW1CO0FBQ3pCLFNBQWdCLFNBQVMsU0FBUztBQUNoQyxTQUFRLGlCQUFpQjtDQUN6QixNQUFNLFFBQVEsUUFBUSxNQUFNLGlCQUFpQjtBQUM3QyxLQUFJLENBQUMsTUFBTyxRQUFPLFNBQVM7Q0FDNUIsTUFBTSxTQUFTLE1BQU07QUFDckIsU0FBUSxLQUFLLE9BQU8sT0FBTztDQUMzQixNQUFNLFNBQVMsTUFBTTtBQUVyQixLQUFJLE9BQU8sU0FBUyxNQUFNO0VBQ3hCLE1BQU0sT0FBTyxTQUFTLE9BQU8sSUFBSTtBQUNqQyxNQUFJLE9BQU8sR0FDVCxPQUFNLElBQUksWUFBWSx3QkFBd0IsTUFBTSxHQUFHO0VBRXpELE1BQU0sT0FBTyxTQUFTLE9BQU8sS0FBSztBQUNsQyxNQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxDQUM1QixPQUFNLElBQUksWUFBWSx3QkFBd0IsTUFBTSxHQUFHOztDQUczRCxNQUFNLE9BQU8sSUFBSSxLQUFLLE9BQU8sTUFBTSxDQUFDO0FBRXBDLEtBQUksTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUN2QixPQUFNLElBQUksWUFBWSx3QkFBd0IsTUFBTSxHQUFHO0FBRXpELFFBQU8sUUFBUSxLQUFLOztBQUV0QixNQUFNLG9CQUFvQjtBQUMxQixTQUFnQixVQUFVLFNBQVM7O0FBQ2pDLFNBQVEsaUJBQWlCO0NBQ3pCLE1BQU0sMkJBQVEsUUFBUSxNQUFNLGtCQUFrQixvRUFBRztBQUNqRCxLQUFJLENBQUMsTUFBTyxRQUFPLFNBQVM7QUFDNUIsU0FBUSxLQUFLLE1BQU0sT0FBTztBQUMxQixRQUFPLFFBQVEsTUFBTTs7QUFFdkIsU0FBZ0IsV0FBVyxTQUFTO0FBQ2xDLFNBQVEsaUJBQWlCO0FBQ3pCLEtBQUksUUFBUSxNQUFNLEtBQUssSUFBSyxRQUFPLFNBQVM7QUFDNUMsU0FBUSxNQUFNO0NBQ2QsTUFBTSxRQUFRLEVBQUU7QUFDaEIsUUFBTSxDQUFDLFFBQVEsS0FBSyxFQUFDO0FBQ25CLFVBQVEsZUFBZTtFQUN2QixNQUFNLFNBQVMsTUFBTSxRQUFRO0FBQzdCLE1BQUksQ0FBQyxPQUFPLEdBQUk7QUFDaEIsUUFBTSxLQUFLLE9BQU8sS0FBSztBQUN2QixVQUFRLGlCQUFpQjtBQUV6QixNQUFJLFFBQVEsTUFBTSxLQUFLLElBQUs7QUFDNUIsVUFBUSxNQUFNOztBQUVoQixTQUFRLGVBQWU7QUFDdkIsS0FBSSxRQUFRLE1BQU0sS0FBSyxJQUFLLE9BQU0sSUFBSSxZQUFZLHNCQUFzQjtBQUN4RSxTQUFRLE1BQU07QUFDZCxRQUFPLFFBQVEsTUFBTTs7QUFFdkIsU0FBZ0IsWUFBWSxTQUFTO0FBQ25DLFNBQVEsZUFBZTtBQUN2QixLQUFJLFFBQVEsS0FBSyxFQUFFLEtBQUssS0FBSztBQUMzQixVQUFRLEtBQUssRUFBRTtBQUNmLFNBQU8sUUFBUSxFQUNiLFdBQVcsTUFDWixDQUFDOztDQUVKLE1BQU0sUUFBUSxTQUFTLEtBQUtGLE9BQUssTUFBTSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVE7QUFDMUQsS0FBSSxDQUFDLE1BQU0sR0FBSSxRQUFPLFNBQVM7Q0FDL0IsSUFBSUYsVUFBUSxFQUNWLFdBQVcsTUFDWjtBQUNELE1BQUssTUFBTUssVUFBUSxNQUFNLEtBQ3ZCLFdBQVEsVUFBVUwsU0FBT0ssT0FBSztBQUVoQyxRQUFPLFFBQVFMLFFBQU07O0FBRXZCLE1BQWEsUUFBUSxHQUFHO0NBQ3RCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0QsQ0FBQztBQUNGLE1BQWEsT0FBTyxHQUFHLFdBQVcsS0FBSyxNQUFNO0FBQzdDLFNBQWdCLE1BQU0sU0FBUztBQUM3QixTQUFRLGVBQWU7Q0FDdkIsTUFBTSxTQUFTRyxRQUFNLE9BQU8sS0FBSyxDQUFDLENBQUMsUUFBUTtBQUMzQyxLQUFJLE9BQU8sR0FBSSxRQUFPLFFBQVE7RUFDNUIsTUFBTTtFQUNOLE9BQU8sT0FBTztFQUNmLENBQUM7QUFDRixRQUFPLFNBQVM7O0FBRWxCLE1BQWEsY0FBYyxTQUFTLEtBQUssV0FBVyxJQUFJO0FBQ3hELFNBQWdCLE1BQU0sU0FBUztBQUM3QixTQUFRLGVBQWU7Q0FDdkIsTUFBTSxTQUFTLFlBQVksUUFBUTtBQUNuQyxLQUFJLENBQUMsT0FBTyxHQUFJLFFBQU8sU0FBUztBQUNoQyxTQUFRLGVBQWU7Q0FDdkIsTUFBTSxJQUFJLE1BQU0sUUFBUTtBQUN4QixRQUFPLFFBQVE7RUFDYixNQUFNO0VBQ04sTUFBTSxPQUFPO0VBQ2IsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLFFBQVEsRUFDM0IsV0FBVyxNQUNaO0VBQ0YsQ0FBQzs7QUFFSixNQUFhLG1CQUFtQixTQUFTLE1BQU0sV0FBVyxLQUFLO0FBQy9ELFNBQWdCLFdBQVcsU0FBUztBQUNsQyxTQUFRLGVBQWU7Q0FDdkIsTUFBTSxTQUFTLGlCQUFpQixRQUFRO0FBQ3hDLEtBQUksQ0FBQyxPQUFPLEdBQUksUUFBTyxTQUFTO0FBQ2hDLFNBQVEsZUFBZTtDQUN2QixNQUFNLElBQUksTUFBTSxRQUFRO0FBQ3hCLFFBQU8sUUFBUTtFQUNiLE1BQU07RUFDTixNQUFNLE9BQU87RUFDYixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssUUFBUSxFQUMzQixXQUFXLE1BQ1o7RUFDRixDQUFDOztBQUVKLFNBQWdCLEtBQUssU0FBUztDQUM1QixNQUFNLFNBQVMsT0FBTyxHQUFHO0VBQ3ZCO0VBQ0E7RUFDQTtFQUNELENBQUMsQ0FBQyxDQUFDLFFBQVE7QUFDWixLQUFJLENBQUMsT0FBTyxHQUFJLFFBQU8sUUFBUSxFQUM3QixXQUFXLE1BQ1osQ0FBQztBQUlGLFFBQU8sUUFITSxPQUFPLEtBQUssT0FBTyxZQUFZLEVBQzFDLFdBQVcsTUFDWixDQUFDLENBQ2tCOztBQUV0QixTQUFTLHdCQUF3QixTQUFTLFNBQVM7O0NBRWpELE1BQU0sUUFEUyxRQUFRLE9BQU8sTUFBTSxHQUFHLFFBQVEsU0FBUyxDQUNuQyxNQUFNLEtBQUs7QUFHaEMsUUFBTyx1QkFGSyxNQUFNLE9BRWdCLHlCQURuQixNQUFNLEdBQUcsR0FBRyx3REFBRSxXQUFVLEVBQ2EsSUFBSTs7QUFFMUQsU0FBZ0IsY0FBYyxRQUFRO0FBQ3BDLFNBQVEsZUFBYTtFQUNuQixNQUFNLFVBQVUsSUFBSSxRQUFRLFdBQVc7QUFDdkMsTUFBSTtHQUNGLE1BQU0sU0FBUyxPQUFPLFFBQVE7QUFDOUIsT0FBSSxPQUFPLE1BQU0sUUFBUSxLQUFLLENBQUUsUUFBTyxPQUFPO0dBQzlDLE1BQU0sVUFBVSwwQkFBMEIsUUFBUSxNQUFNLENBQUM7QUFDekQsU0FBTSxJQUFJLFlBQVksd0JBQXdCLFNBQVMsUUFBUSxDQUFDO1dBQ3pELE9BQU87QUFDZCxPQUFJLGlCQUFpQixNQUNuQixPQUFNLElBQUksWUFBWSx3QkFBd0IsU0FBUyxNQUFNLFFBQVEsQ0FBQztBQUd4RSxTQUFNLElBQUksWUFBWSx3QkFBd0IsU0FEOUIsNEJBQytDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0NydEJsRSxTQUFnQixNQUFNLFlBQVk7QUFDcEMsUUFBTyxjQUFjLEtBQUssQ0FBQyxXQUFXOzs7Ozs7Ozs7Ozs7O0FDWHhDLFNBQWdCLFNBQVMsU0FBTyxNQUFNO0FBQ3JDLGtDQUFrQkcsUUFBTSxHQUFHQSxpQ0FBZ0IsUUFBUSxLQUFLQSxRQUFNOzs7Ozs7Ozs7OztBQ0ovRCxTQUFnQixHQUFHLE1BQU0sU0FBUztDQUNqQyxJQUFJLEVBQUUsTUFBTSxRQUFRLFdBQVcsRUFBRTtDQUNqQyxJQUFJLE1BQU0sU0FBUyxNQUFNLElBQUk7Q0FDN0IsSUFBSSxPQUFPLFNBQVMsUUFBUSxLQUFLLElBQUk7Q0FDckMsSUFBSSxNQUFNLE1BQU0sRUFBRTtBQUNsQixRQUFPLFNBQVMsTUFBTTtBQUNyQixNQUFJLEtBQUssSUFBSTtBQUNiLCtCQUFjLE9BQU8sSUFBSTtBQUN6QixNQUFJLFFBQVEsS0FBTTs7QUFFbkIsUUFBTzs7Ozs7Ozs7Ozs7Ozs7O0FDZ0RSLFNBQWdCLElBQUksTUFBTSxTQUFTO0NBQ2xDLElBQUlDLE9BQUs7Q0FDVCxJQUFJLFFBQVEsV0FBVyxRQUFRLE9BQU87QUFDdEMsTUFBS0EsU0FBT0MsR0FBUSxPQUFPLFFBQVEsQ0FDbEMsS0FBSTtBQUNILDRCQUFXRCxPQUFLLEtBQUs7QUFDckIsNEJBQWEsSUFBSSxDQUFDLGFBQWEsQ0FBRSxRQUFPO1NBQ2pDOzs7OztBQ3JFVixJQUFzQixvQkFBdEIsY0FBZ0RFLGtCQUFRO0NBQ3RELE9BQU8sUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDO0NBRTNCLE9BQU8sUUFBUUEsa0JBQVEsTUFBTSxFQUMzQixhQUFhLDhCQUNkLENBQUM7Q0FFRixNQUFNQyxpQkFBTyxPQUFPLFNBQVMsUUFBUSxLQUFLLEVBQUUsRUFDMUMsYUFDRSxzSEFDSCxDQUFDO0NBRUYsYUFBc0JBLGlCQUFPLE9BQU8sb0JBQW9CLEVBQ3RELGFBQWEsbUNBQ2QsQ0FBQztDQUVGLGtCQUFrQkEsaUJBQU8sT0FBTyx1QkFBdUIsZ0JBQWdCLEVBQ3JFLGFBQWEsMEJBQ2QsQ0FBQztDQUVGLFNBQVNBLGlCQUFPLE9BQU8sYUFBYSxPQUFPLEVBQ3pDLGFBQWEsaURBQ2QsQ0FBQztDQUVGLFNBQWtCQSxpQkFBTyxPQUFPLGFBQWEsRUFDM0MsYUFBYSwrQkFDZCxDQUFDO0NBRUYsYUFBc0JBLGlCQUFPLE9BQU8sb0JBQW9CLEVBQ3RELGFBQWEsb0NBQ2QsQ0FBQztDQUVGLGNBQXVCQSxpQkFBTyxPQUFPLGtCQUFrQixFQUNyRCxhQUFhLHVDQUNkLENBQUM7Q0FFRixlQUFlQSxpQkFBTyxPQUFPLG1CQUFtQixjQUFjLEVBQzVELGFBQWEsd0JBQ2QsQ0FBQztDQUVGLGFBQXNCQSxpQkFBTyxPQUFPLGdCQUFnQixFQUNsRCxhQUFhLHFDQUNkLENBQUM7Q0FFRixjQUF1QkEsaUJBQU8sT0FBTyxpQkFBaUIsRUFDcEQsYUFBYSxzQ0FDZCxDQUFDO0NBRUYsYUFBYTtBQUNYLFNBQU87R0FDTCxLQUFLLEtBQUs7R0FDVixZQUFZLEtBQUs7R0FDakIsaUJBQWlCLEtBQUs7R0FDdEIsUUFBUSxLQUFLO0dBQ2IsTUFBTSxLQUFLO0dBQ1gsWUFBWSxLQUFLO0dBQ2pCLGFBQWEsS0FBSztHQUNsQixjQUFjLEtBQUs7R0FDbkIsWUFBWSxLQUFLO0dBQ2pCLGFBQWEsS0FBSztHQUNuQjs7O0FBMERMLFNBQWdCLDBCQUEwQixTQUF3QjtBQUNoRSxRQUFPO0VBQ0wsS0FBSyxRQUFRLEtBQUs7RUFDbEIsaUJBQWlCO0VBQ2pCLFFBQVE7RUFDUixjQUFjO0VBQ2QsR0FBRztFQUNKOzs7OztBQ3JISCxlQUFzQixjQUFjLGFBQTRCO0NBQzlELE1BQU0sVUFBVSwwQkFBMEIsWUFBWTtDQUV0RCxNQUFNLFdBRGEsTUFBTSxXQUFXLFFBQVEsRUFDakI7Q0FFM0IsTUFBTSx5Q0FBMEIsUUFBUSxLQUFLLFFBQVEsZ0JBQWdCO0NBQ3JFLE1BQU0sdUNBQXdCLFFBQVEsS0FBSyxRQUFRLGFBQWE7Q0FFaEUsTUFBTSxxQkFBcUIsTUFBTSxjQUFjLGlCQUFpQixPQUFPO0NBQ3ZFLE1BQU0sa0JBQWtCLEtBQUssTUFBTSxtQkFBbUI7QUFFdEQsNkNBRUksNkRBR08sU0FBUztFQUFDO0VBQVE7RUFBZTtFQUFVO0VBQVUsQ0FBQyxFQUMzREMsaUJBQ0QsQ0FDRixFQUNELEVBQ0UsNkJBQ0U7RUFDRSxZQUFZLFFBQVE7RUFDcEIsYUFBYSxRQUFRO0VBQ3RCLEVBQ0RBLGlCQUNELEVBQ0YsQ0FDRjtBQUVELEtBQUksUUFBUSxZQUFZO0VBQ3RCLE1BQU0sb0NBQXFCLFFBQVEsS0FBSyxRQUFRLFdBQVc7RUFDM0QsTUFBTSxnQkFBZ0IsTUFBTSxjQUFjLFlBQVksT0FBTztFQUM3RCxNQUFNLGFBQWEsS0FBSyxNQUFNLGNBQWM7QUFDNUMsYUFBVyxhQUFhLFFBQVE7QUFDaEMsYUFBVyxjQUFjLFFBQVE7QUFDakMsUUFBTSxlQUFlLFlBQVksS0FBSyxVQUFVLFlBQVksTUFBTSxFQUFFLENBQUM7O0FBR3ZFLE9BQU0sZUFDSixpQkFDQSxLQUFLLFVBQVUsaUJBQWlCLE1BQU0sRUFBRSxDQUN6QztDQUdELE1BQU0sWUFBWUMsTUFERSxNQUFNLGNBQWMsZUFBZSxPQUFPLENBQ3RCO0FBR3hDLEtBQUksVUFBVSxXQUFXLFFBQVEsWUFBWTtFQUUzQyxNQUFNLGdCQUFnQixRQUFRLFdBQzNCLFFBQVEsS0FBSyxHQUFHLENBQ2hCLFFBQVEsS0FBSyxJQUFJLENBQ2pCLFFBQVEsTUFBTSxJQUFJLENBQ2xCLGFBQWE7QUFDaEIsWUFBVSxRQUFRLE9BQU87O0FBTTNCLE9BQU0sZUFBZSxlQUZNQyxVQUFjLFVBQVUsQ0FFSTtBQUN2RCxLQUFJLFlBQVksUUFBUSxZQUFZO0VBQ2xDLE1BQU0sb0JBQW9CQyxJQUFTLFdBQVcsRUFDNUMsS0FBSyxRQUFRLEtBQ2QsQ0FBQztBQUNGLE1BQUksbUJBQW1CO0dBQ3JCLE1BQU0sNkNBQ0osbUJBQ0EsYUFDQSxTQUNEO0FBQ0QsK0JBQWUsdUJBQXVCLEVBQUU7O0lBS3RDLE1BQU0sc0NBSnVCLE1BQU0sY0FDakMsd0JBQ0EsT0FDRCxDQUN3RDtBQUN6RCxpQ0FBSSxrQkFBa0IsbUZBQUssVUFBVTtBQUNuQyx1QkFBa0IsSUFBSSxXQUFXLFFBQVE7QUFDekMsV0FBTSxlQUNKLDBDQUNjLG1CQUFtQjtNQUMvQixXQUFXO01BQ1gsUUFBUTtNQUNSLFVBQVU7TUFDWCxDQUFDLENBQ0g7Ozs7RUFJUCxNQUFNLGdEQUNKLFFBQVEsS0FDUixHQUFHLFFBQVEsa0JBQ1o7QUFDRCw4QkFBZSwwQkFBMEIsQ0FDdkMsb0NBQ0UsK0NBQ0ssUUFBUSxLQUFLLEdBQUcsUUFBUSxXQUFXLGtCQUFrQixDQUMzRDtFQUVILE1BQU0seUNBQTBCLFFBQVEsS0FBSyxHQUFHLFFBQVEsV0FBVztBQUNuRSw4QkFBZSxtQkFBbUIsQ0FDaEMsb0NBQ0Usd0NBQ0ssUUFBUSxLQUFLLEdBQUcsUUFBUSxXQUFXLFdBQVcsQ0FDcEQ7RUFFSCxNQUFNLHdDQUF5QixRQUFRLEtBQUssaUJBQWlCO0FBQzdELDhCQUFlLGtCQUFrQixDQWdCL0IsT0FBTSxlQUFlLG9CQWZRLE1BQU0sY0FDakMsbUJBQ0EsT0FDRCxFQUVFLE1BQU0sS0FBSyxDQUNYLEtBQUssU0FBUztBQUNiLFVBQU8sS0FDSixRQUNDLEdBQUcsUUFBUSxtQkFDWCxHQUFHLFFBQVEsV0FBVyxrQkFDdkIsQ0FDQSxRQUFRLEdBQUcsUUFBUSxZQUFZLEdBQUcsUUFBUSxXQUFXLFdBQVc7SUFDbkUsQ0FDRCxLQUFLLEtBQUssQ0FDNkM7Ozs7OztBQ2hIaEUsTUFBTUMsVUFBUSxhQUFhLE1BQU07QUFJakMsTUFBTSxpQkFBaUI7Q0FDckIsTUFBTTtDQUNOLE1BQU07Q0FDUDtBQUVELGVBQWUsa0JBQW9DO0FBQ2pELEtBQUk7QUFDRixRQUFNLElBQUksU0FBUyxjQUFZO0dBQzdCLE1BQU0sa0NBQVUsZ0JBQWdCO0FBQ2hDLE1BQUcsR0FBRyxlQUFlO0FBQ25CLGNBQVEsTUFBTTtLQUNkO0FBQ0YsTUFBRyxHQUFHLFNBQVMsU0FBUztBQUN0QixRQUFJLFNBQVMsRUFDWCxXQUFRLEtBQUs7UUFFYixXQUFRLE1BQU07S0FFaEI7SUFDRjtBQUNGLFNBQU87U0FDRDtBQUNOLFNBQU87OztBQUlYLGVBQWUsZUFDYixnQkFDaUI7Q0FDakIsTUFBTSxXQUFXQyxrQkFBSywyQkFBYyxFQUFFLFlBQVksWUFBWSxlQUFlO0FBQzdFLE9BQU0sV0FBVyxVQUFVLEVBQUUsV0FBVyxNQUFNLENBQUM7QUFDL0MsUUFBTzs7QUFHVCxlQUFlLGlCQUNiLGdCQUNBLFVBQ2U7Q0FDZixNQUFNLFVBQVUsZUFBZTtDQUMvQixNQUFNLGVBQWVBLGtCQUFLLEtBQUssVUFBVSxPQUFPO0FBRWhELDZCQUFlLGFBQWEsRUFBRTtBQUM1QixVQUFNLDJCQUEyQixhQUFhLGVBQWU7QUFDN0QsTUFBSTtBQUVGLFNBQU0sSUFBSSxTQUFlLFdBQVMsV0FBVztJQUMzQyxNQUFNLGtDQUFVLG9CQUFvQixFQUFFLEtBQUssY0FBYyxDQUFDO0FBQzFELE9BQUcsR0FBRyxTQUFTLE9BQU87QUFDdEIsT0FBRyxHQUFHLFNBQVMsU0FBUztBQUN0QixTQUFJLFNBQVMsRUFDWCxZQUFTO1NBRVQsd0JBQ0UsSUFBSSxNQUNGLGdFQUFnRSxPQUNqRSxDQUNGO01BRUg7S0FDRjtBQUNGLG9DQUFTLGdDQUFnQztJQUN2QyxLQUFLO0lBQ0wsT0FBTztJQUNSLENBQUM7QUFDRixXQUFNLGdDQUFnQztXQUMvQixPQUFPO0FBQ2QsV0FBTSw4QkFBOEIsUUFBUTtBQUM1QyxTQUFNLElBQUksTUFBTSxrQ0FBa0MsUUFBUSxJQUFJLFFBQVE7O1FBRW5FO0FBQ0wsVUFBTSx5QkFBeUIsUUFBUSxLQUFLO0FBQzVDLE1BQUk7QUFDRixvQ0FBUyxhQUFhLFFBQVEsUUFBUTtJQUFFLEtBQUs7SUFBVSxPQUFPO0lBQVcsQ0FBQztBQUMxRSxXQUFNLCtCQUErQjtXQUM5QixPQUFPO0FBQ2QsU0FBTSxJQUFJLE1BQU0saUNBQWlDLFFBQVEsSUFBSSxRQUFROzs7O0FBSzNFLGVBQWUsY0FDYixLQUNBLE1BQ0EscUJBQ2U7QUFDZixPQUFNLFdBQVcsTUFBTSxFQUFFLFdBQVcsTUFBTSxDQUFDO0NBQzNDLE1BQU0sVUFBVSxNQUFNQyxpQkFBRyxRQUFRLEtBQUssRUFBRSxlQUFlLE1BQU0sQ0FBQztBQUU5RCxNQUFLLE1BQU0sU0FBUyxTQUFTO0VBQzNCLE1BQU0sVUFBVUQsa0JBQUssS0FBSyxLQUFLLE1BQU0sS0FBSztFQUMxQyxNQUFNLFdBQVdBLGtCQUFLLEtBQUssTUFBTSxNQUFNLEtBQUs7QUFHNUMsTUFBSSxNQUFNLFNBQVMsT0FDakI7QUFHRixNQUFJLE1BQU0sYUFBYSxDQUNyQixPQUFNLGNBQWMsU0FBUyxVQUFVLG9CQUFvQjtPQUN0RDtBQUNMLE9BQ0UsQ0FBQyx3QkFDQSxNQUFNLEtBQUssU0FBUyxtQkFBbUIsSUFDdEMsTUFBTSxLQUFLLFNBQVMsWUFBWSxJQUNoQyxNQUFNLEtBQUssU0FBUywyQkFBMkIsSUFDL0MsTUFBTSxLQUFLLFNBQVMsa0JBQWtCLElBQ3RDLE1BQU0sS0FBSyxTQUFTLGFBQWEsRUFFbkM7QUFFRixTQUFNQyxpQkFBRyxTQUFTLFNBQVMsU0FBUzs7OztBQUsxQyxlQUFlLDJCQUNiLFVBQ0EsZ0JBQ2U7O0NBQ2YsTUFBTSxVQUFVLE1BQU1BLGlCQUFHLFNBQVMsVUFBVSxRQUFRO0NBQ3BELE1BQU0sY0FBYyxLQUFLLE1BQU0sUUFBUTtBQUd2QywwQkFBSSxZQUFZLDRFQUFNLFFBQ3BCLGFBQVksS0FBSyxVQUFVLFlBQVksS0FBSyxRQUFRLFFBQ2pELFdBQW1CLGVBQWUsU0FBUyxPQUFPLENBQ3BEO0FBR0gsT0FBTUEsaUJBQUcsVUFBVSxVQUFVLEtBQUssVUFBVSxhQUFhLE1BQU0sRUFBRSxHQUFHLEtBQUs7O0FBRzNFLGVBQWUsNkJBQ2IsVUFDQSxnQkFDZTs7Q0FFZixNQUFNLHlCQURVLE1BQU1BLGlCQUFHLFNBQVMsVUFBVSxRQUFRLENBQ3RCO0NBRTlCLE1BQU0seUJBQXlCLElBQUksSUFBSTtFQUNyQztFQUNBO0VBQ0E7RUFDQTtFQUNELENBQUM7Q0FFRixNQUFNLGVBQWUsSUFBSSxJQUFJO0VBQzNCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNELENBQUM7Q0FHRixNQUFNLGtCQUFrQixlQUFlLE1BQU0sV0FDM0MsYUFBYSxJQUFJLE9BQU8sQ0FDekI7QUFHRCx1REFBSSxLQUFNLG9FQUFNLHFFQUFPLHdFQUFVLGdFQUFRLFNBQ3ZDLE1BQUssS0FBSyxNQUFNLFNBQVMsT0FBTyxXQUM5QixLQUFLLEtBQUssTUFBTSxTQUFTLE9BQU8sU0FBUyxRQUFRLFlBQWlCO0FBQ2hFLE1BQUksUUFBUSxPQUNWLFFBQU8sZUFBZSxTQUFTLFFBQVEsT0FBTztBQUVoRCxTQUFPO0dBQ1A7Q0FHTixNQUFNQyxlQUF5QixFQUFFO0FBRWpDLEtBQUksZUFBZSxPQUFPLFdBQVcsQ0FBQyx1QkFBdUIsSUFBSSxPQUFPLENBQUMsQ0FDdkUsY0FBYSxLQUFLLDZCQUE2QjtNQUMxQzs7QUFFTCx5REFDRSxLQUFNLHVFQUFPLGdHQUErQiwyRUFBVSxrRUFBUSxTQUU5RCxNQUFLLEtBQUssOEJBQThCLFNBQVMsT0FBTyxXQUN0RCxLQUFLLEtBQUssOEJBQThCLFNBQVMsT0FBTyxTQUFTLFFBQzlELFlBQWlCO0FBQ2hCLE9BQUksUUFBUSxPQUNWLFFBQU8sZUFBZSxTQUFTLFFBQVEsT0FBTztBQUVoRCxVQUFPO0lBRVY7O0FBS1AsS0FBSSxDQUFDLGlCQUFpQjs7QUFFcEIseURBQUksS0FBTSxnRUFBTyxzQkFDZixjQUFhLEtBQUsscUJBQXFCO1FBRXBDOztBQUVMLHlEQUFJLEtBQU0sdUVBQU8sd0ZBQXVCLDJFQUFVLGtFQUFRLE9BQ3hELE1BQUssS0FBSyxzQkFBc0IsU0FBUyxPQUFPLFNBQVMsS0FBSyxLQUM1RCxzQkFDQSxTQUFTLE9BQU8sT0FBTyxRQUFRLFdBQW1CO0FBQ2xELE9BQUksT0FDRixRQUFPLGVBQWUsU0FBUyxPQUFPO0FBRXhDLFVBQU87SUFDUDs7QUFJTixLQUFJLENBQUMsZUFBZSxTQUFTLHdCQUF3QixDQUNuRCxjQUFhLEtBQUssWUFBWTtBQUdoQyxLQUFJLENBQUMsZUFBZSxTQUFTLHlCQUF5QixDQUNwRCxjQUFhLEtBQUssZ0JBQWdCO0FBSXBDLE1BQUssTUFBTSxDQUFDLFNBQVMsY0FBYyxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQyxDQUNoRSxLQUNFLFFBQVEsV0FBVyxRQUFRLElBQzNCLFlBQVksZ0NBQ1osWUFBWSw4QkFDWjs7RUFFQSxNQUFNLE1BQU07QUFDWix1QkFBSSxJQUFJLGlGQUFVLCtFQUFRLGlGQUFXLGtFQUFJLFFBQVE7R0FDL0MsTUFBTSxTQUFTLElBQUksU0FBUyxPQUFPLFNBQVMsR0FBRztBQUMvQyxPQUFJLENBQUMsZUFBZSxTQUFTLE9BQU8sQ0FDbEMsY0FBYSxLQUFLLFFBQVE7OztBQU9sQyxNQUFLLE1BQU0sV0FBVyxhQUNwQixRQUFPLEtBQUssS0FBSztBQUduQixLQUFJLE1BQU0sdUJBQVEsS0FBSyx1RUFBTSxtRUFBUyxNQUFNLENBQzFDLE1BQUssS0FBSyxRQUFRLFFBQVEsS0FBSyxLQUFLLFFBQVEsTUFBTSxRQUMvQyxTQUFpQixDQUFDLGFBQWEsU0FBUyxLQUFLLENBQy9DO0NBSUgsTUFBTSxnQ0FBdUIsTUFBTTtFQUNqQyxXQUFXO0VBQ1gsUUFBUTtFQUNSLFVBQVU7RUFDWCxDQUFDO0FBQ0YsT0FBTUQsaUJBQUcsVUFBVSxVQUFVLFlBQVk7O0FBRzNDLFNBQVMsZUFBZSxTQUF3Qjs7QUFDOUMsU0FBTSx3QkFBd0I7QUFDOUIsS0FBSSxDQUFDLFFBQVEsS0FDWCxPQUFNLElBQUksTUFBTSwwQ0FBMEM7QUFFNUQsU0FBUSxPQUFPRCxrQkFBSyxRQUFRLFFBQVEsS0FBSyxFQUFFLFFBQVEsS0FBSztBQUN4RCxTQUFNLDRCQUE0QixRQUFRLE9BQU87QUFFakQsS0FBSSxDQUFDLFFBQVEsTUFBTTtBQUNqQixVQUFRLE9BQU9BLGtCQUFLLE1BQU0sUUFBUSxLQUFLLENBQUM7QUFDeEMsVUFBTSxpREFBaUQsUUFBUSxPQUFPOztBQUd4RSxLQUFJLHNCQUFDLFFBQVEsNkVBQVMsUUFDcEIsS0FBSSxRQUFRLGtCQUFrQjtBQUM1QixVQUFRLFVBQVUsa0JBQWtCLFFBQVE7QUFDNUMsVUFBTSxxQkFBcUI7WUFDbEIsUUFBUSxzQkFBc0I7QUFDdkMsVUFBUSxVQUFVLGdCQUFnQixRQUFRO0FBQzFDLFVBQU0seUJBQXlCO09BRS9CLE9BQU0sSUFBSSxNQUFNLHNDQUFzQztBQUcxRCxLQUNFLFFBQVEsUUFBUSxNQUFNLFdBQVcsV0FBVywrQkFBK0IsRUFLM0U7dUNBSHFCLHNCQUFzQixFQUN6QyxVQUFVLFFBQ1gsQ0FBQyxDQUNNLFNBQVMsd0JBQXdCLENBQ3ZDLFNBQVEsVUFBVSxRQUFRLFFBQVEsS0FBSyxXQUNyQyxXQUFXLGlDQUNQLDBCQUNBLE9BQ0w7O0FBSUwsUUFBTyx1QkFBdUIsUUFBUTs7QUFHeEMsZUFBc0IsV0FBVyxhQUE0QjtBQUMzRCxTQUFNLGtEQUFrRDtBQUN4RCxTQUFNLFlBQVk7Q0FFbEIsTUFBTSxVQUFVLGVBQWUsWUFBWTtBQUUzQyxTQUFNLHlCQUF5QjtBQUMvQixTQUFNLFFBQVEsUUFBUTtBQUd0QixLQUFJLENBQUUsTUFBTSxpQkFBaUIsQ0FDM0IsT0FBTSxJQUFJLE1BQ1IsaUZBQ0Q7Q0FHSCxNQUFNLGlCQUFpQixRQUFRO0FBRy9CLE9BQU0sV0FBVyxRQUFRLE1BQU0sUUFBUSxPQUFPO0FBRTlDLEtBQUksQ0FBQyxRQUFRLE9BQ1gsS0FBSTtFQUVGLE1BQU0sV0FBVyxNQUFNLGVBQWUsZUFBZTtBQUNyRCxRQUFNLGlCQUFpQixnQkFBZ0IsU0FBUztBQUloRCxRQUFNLGNBRGVBLGtCQUFLLEtBQUssVUFBVSxPQUFPLEVBRzlDLFFBQVEsTUFDUixRQUFRLFFBQVEsU0FBUyx3QkFBd0IsQ0FDbEQ7QUFHRCxRQUFNLGNBQWM7R0FDbEIsS0FBSyxRQUFRO0dBQ2IsTUFBTSxRQUFRO0dBQ2QsWUFBWSxjQUFjLFFBQVEsS0FBSztHQUN4QyxDQUFDO0VBR0YsTUFBTSxrQkFBa0JBLGtCQUFLLEtBQUssUUFBUSxNQUFNLGVBQWU7QUFDL0QsOEJBQWUsZ0JBQWdCLENBQzdCLE9BQU0sMkJBQTJCLGlCQUFpQixRQUFRLFFBQVE7RUFJcEUsTUFBTSxTQUFTQSxrQkFBSyxLQUFLLFFBQVEsTUFBTSxXQUFXLGFBQWEsU0FBUztBQUN4RSw4QkFBZSxPQUFPLElBQUksUUFBUSxvQkFDaEMsT0FBTSw2QkFBNkIsUUFBUSxRQUFRLFFBQVE7V0FFM0QsQ0FBQyxRQUFRLCtDQUNFQSxrQkFBSyxLQUFLLFFBQVEsTUFBTSxVQUFVLENBQUMsQ0FHOUMsT0FBTUMsaUJBQUcsR0FBR0Qsa0JBQUssS0FBSyxRQUFRLE1BQU0sVUFBVSxFQUFFO0dBQzlDLFdBQVc7R0FDWCxPQUFPO0dBQ1IsQ0FBQztFQUlKLE1BQU0saUJBQWlCLE1BQU1DLGlCQUFHLFNBQVMsaUJBQWlCLFFBQVE7RUFDbEUsTUFBTSxVQUFVLEtBQUssTUFBTSxlQUFlO0FBRzFDLE1BQUksQ0FBQyxRQUFRLFFBQ1gsU0FBUSxVQUFVLEVBQUU7QUFFdEIsVUFBUSxRQUFRLE9BQU8sc0JBQXNCLFFBQVEsa0JBQWtCO0FBR3ZFLE1BQUksUUFBUSxXQUFXLFFBQVEsWUFBWSxRQUFRLFFBQ2pELFNBQVEsVUFBVSxRQUFRO0FBSTVCLE1BQUksUUFBUSxrQkFBa0IsTUFFNUIsU0FDRSxrQkFBa0IsUUFBUSxjQUFjLG9DQUN6QztBQUdILFFBQU1BLGlCQUFHLFVBQ1AsaUJBQ0EsS0FBSyxVQUFVLFNBQVMsTUFBTSxFQUFFLEdBQUcsS0FDcEM7VUFDTSxPQUFPO0FBQ2QsUUFBTSxJQUFJLE1BQU0sNkJBQTZCLFFBQVE7O0FBSXpELFNBQU0sdUJBQXVCLFFBQVEsT0FBTzs7QUFHOUMsZUFBZSxXQUFXLFFBQWMsU0FBUyxPQUFPO0NBQ3RELE1BQU1FLFNBQU8sTUFBTSxVQUFVSCxRQUFNLEVBQUUsQ0FBQyxDQUFDLFlBQVksT0FBVTtBQUc3RCxLQUFJRyxRQUNGO01BQUlBLE9BQUssUUFBUSxDQUNmLE9BQU0sSUFBSSxNQUNSLFFBQVFILE9BQUssNEVBQ2Q7V0FDUUcsT0FBSyxhQUFhLEVBRTNCO1FBRGMsTUFBTSxhQUFhSCxPQUFLLEVBQzVCLE9BQ1IsT0FBTSxJQUFJLE1BQ1IsUUFBUUEsT0FBSyxzRUFDZDs7O0FBS1AsS0FBSSxDQUFDLE9BQ0gsS0FBSTtBQUNGLFVBQU0sbUNBQW1DQSxTQUFPO0FBQ2hELE1BQUksQ0FBQyxPQUNILE9BQU0sV0FBV0EsUUFBTSxFQUFFLFdBQVcsTUFBTSxDQUFDO1VBRXRDLEdBQUc7QUFDVixRQUFNLElBQUksTUFBTSxzQ0FBc0NBLFVBQVEsRUFDNUQsT0FBTyxHQUNSLENBQUM7OztBQUtSLFNBQVMsY0FBYyxNQUFzQjtBQUMzQyxRQUFPLEtBQUssTUFBTSxJQUFJLENBQUMsS0FBSzs7Ozs7QUNoZDlCLElBQXNCLHdCQUF0QixjQUFvREksa0JBQVE7Q0FDMUQsT0FBTyxRQUFRLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUM7Q0FFaEQsT0FBTyxRQUFRQSxrQkFBUSxNQUFNLEVBQzNCLGFBQ0Usa0VBQ0gsQ0FBQztDQUVGLE1BQU1DLGlCQUFPLE9BQU8sU0FBUyxRQUFRLEtBQUssRUFBRSxFQUMxQyxhQUNFLHNIQUNILENBQUM7Q0FFRixhQUFzQkEsaUJBQU8sT0FBTyxvQkFBb0IsRUFDdEQsYUFBYSxtQ0FDZCxDQUFDO0NBRUYsa0JBQWtCQSxpQkFBTyxPQUFPLHVCQUF1QixnQkFBZ0IsRUFDckUsYUFBYSwwQkFDZCxDQUFDO0NBRUYsU0FBU0EsaUJBQU8sT0FBTyxnQkFBZ0IsT0FBTyxFQUM1QyxhQUFhLGlEQUNkLENBQUM7Q0FFRixXQUFXQSxpQkFBTyxPQUFPLDZCQUE2QixTQUFTLEVBQzdELGFBQWEsbUNBQ2QsQ0FBQztDQUVGLFlBQVlBLGlCQUFPLFFBQVEsZ0JBQWdCLE1BQU0sRUFDL0MsYUFBYSxpQ0FDZCxDQUFDO0NBRUYsZ0JBQXlCQSxpQkFBTyxPQUFPLHFCQUFxQixFQUMxRCxhQUFhLHVCQUNkLENBQUM7Q0FFRixjQUF1QkEsaUJBQU8sT0FBTyxtQkFBbUIsRUFDdEQsYUFBYSw4QkFDZCxDQUFDO0NBRUYsc0JBQXNCQSxpQkFBTyxRQUFRLDJCQUEyQixPQUFPLEVBQ3JFLGFBQWEsc0RBQ2QsQ0FBQztDQUVGLFNBQVNBLGlCQUFPLFFBQVEsYUFBYSxPQUFPLEVBQzFDLGFBQWEsd0NBQ2QsQ0FBQztDQUVGLGFBQWE7QUFDWCxTQUFPO0dBQ0wsS0FBSyxLQUFLO0dBQ1YsWUFBWSxLQUFLO0dBQ2pCLGlCQUFpQixLQUFLO0dBQ3RCLFFBQVEsS0FBSztHQUNiLFVBQVUsS0FBSztHQUNmLFdBQVcsS0FBSztHQUNoQixlQUFlLEtBQUs7R0FDcEIsYUFBYSxLQUFLO0dBQ2xCLHFCQUFxQixLQUFLO0dBQzFCLFFBQVEsS0FBSztHQUNkOzs7QUFnRUwsU0FBZ0IsOEJBQThCLFNBQTRCO0FBQ3hFLFFBQU87RUFDTCxLQUFLLFFBQVEsS0FBSztFQUNsQixpQkFBaUI7RUFDakIsUUFBUTtFQUNSLFVBQVU7RUFDVixXQUFXO0VBQ1gscUJBQXFCO0VBQ3JCLFFBQVE7RUFDUixHQUFHO0VBQ0o7Ozs7O0FDdklILElBQXNCLHFCQUF0QixjQUFpREMsa0JBQVE7Q0FDdkQsT0FBTyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUM7Q0FFNUIsT0FBTyxRQUFRQSxrQkFBUSxNQUFNLEVBQzNCLGFBQWEsMENBQ2QsQ0FBQztDQUVGLE1BQU1DLGlCQUFPLE9BQU8sU0FBUyxRQUFRLEtBQUssRUFBRSxFQUMxQyxhQUNFLHNIQUNILENBQUM7Q0FFRixhQUFzQkEsaUJBQU8sT0FBTyxvQkFBb0IsRUFDdEQsYUFBYSxtQ0FDZCxDQUFDO0NBRUYsa0JBQWtCQSxpQkFBTyxPQUFPLHVCQUF1QixnQkFBZ0IsRUFDckUsYUFBYSwwQkFDZCxDQUFDO0NBRUYsU0FBU0EsaUJBQU8sT0FBTyxhQUFhLE9BQU8sRUFDekMsYUFBYSxpREFDZCxDQUFDO0NBRUYsYUFBYTtBQUNYLFNBQU87R0FDTCxLQUFLLEtBQUs7R0FDVixZQUFZLEtBQUs7R0FDakIsaUJBQWlCLEtBQUs7R0FDdEIsUUFBUSxLQUFLO0dBQ2Q7OztBQWdDTCxTQUFnQiwyQkFBMkIsU0FBeUI7QUFDbEUsUUFBTztFQUNMLEtBQUssUUFBUSxLQUFLO0VBQ2xCLGlCQUFpQjtFQUNqQixRQUFRO0VBQ1IsR0FBRztFQUNKOzs7OztBQzVESCxNQUFNQyxVQUFRLGFBQWEsVUFBVTtBQUVyQyxlQUFzQixRQUFRLGFBQTZCO0NBQ3pELE1BQU0sVUFBVSwyQkFBMkIsWUFBWTtDQUd2RCxNQUFNLFNBQVMsTUFBTSxzQ0FGVyxRQUFRLEtBQUssUUFBUSxnQkFBZ0IsRUFJbkUsUUFBUSxvQ0FBcUIsUUFBUSxLQUFLLFFBQVEsV0FBVyxHQUFHLE9BQ2pFO0FBRUQsTUFBSyxNQUFNLFVBQVUsT0FBTyxTQUFTO0VBQ25DLE1BQU0sZ0NBQWlCLFFBQVEsS0FBSyxRQUFRLFFBQVEsT0FBTyxnQkFBZ0I7QUFFM0UsVUFBTSxnQ0FBZ0MsT0FBTyxZQUFZLFNBQVMsT0FBTztBQUN6RSxRQUFNLHNDQUF1QixRQUFRLGVBQWUsRUFBRSxFQUNwRCxTQUFTLE9BQU8sWUFBWSxTQUM3QixDQUFDOzs7Ozs7QUNWTixNQUFNQyxVQUFRLGFBQWEsY0FBYztBQVF6QyxlQUFzQixXQUFXLGFBQWdDO0FBQy9ELFNBQU0sK0JBQStCO0FBQ3JDLFNBQU0sUUFBUSxZQUFZO0NBRTFCLE1BQU0sVUFBVSw4QkFBOEIsWUFBWTtDQUUxRCxNQUFNLHlDQUEwQixRQUFRLEtBQUssUUFBUSxnQkFBZ0I7Q0FFckUsTUFBTSxFQUFFLGFBQWEsU0FBUyxhQUFhLFlBQVksY0FDckQsTUFBTSxlQUNKLGlCQUNBLFFBQVEsb0NBQXFCLFFBQVEsS0FBSyxRQUFRLFdBQVcsR0FBRyxPQUNqRTtDQUVILGVBQWUsZ0JBQWdCLGVBQXFCLFdBQWlCO0FBQ25FLE1BQUksQ0FBQyxRQUFRLFVBQ1gsUUFBTztHQUNMLE9BQU87R0FDUCxNQUFNO0dBQ04sU0FBUztJQUFFLE1BQU07SUFBTSxTQUFTO0lBQU0sS0FBSztJQUFNO0dBQ2xEO0VBRUgsTUFBTSxFQUFFLGNBQU0sZ0JBQU8sb0JBQVMsdUJBQVksWUFBWUMsZUFBYUMsVUFBUTtBQUUzRSxNQUFJLENBQUNDLFVBQVEsQ0FBQ0MsUUFDWixRQUFPO0dBQ0wsT0FBTztHQUNQLE1BQU07R0FDTixTQUFTO0lBQUUsTUFBTTtJQUFNLFNBQVM7SUFBTSxLQUFLO0lBQU07R0FDbEQ7QUFHSCxNQUFJLENBQUMsUUFBUSxPQUNYLEtBQUk7QUFDRixTQUFNQyxVQUFRLE1BQU0sY0FBYztJQUNoQztJQUNBO0lBQ0EsVUFBVUMsVUFBUTtJQUNsQixNQUFNLFFBQVE7SUFDZCxZQUNFSixVQUFRLFNBQVMsUUFBUSxJQUN6QkEsVUFBUSxTQUFTLE9BQU8sSUFDeEJBLFVBQVEsU0FBUyxLQUFLO0lBQ3pCLENBQUM7V0FDSyxHQUFHO0FBQ1YsV0FDRSxXQUFXLEtBQUssVUFDZDtJQUFFO0lBQU87SUFBTSxVQUFVSSxVQUFRO0lBQUssRUFDdEMsTUFDQSxFQUNELEdBQ0Y7QUFDRCxXQUFRLE1BQU0sRUFBRTs7QUFHcEIsU0FBTztHQUFFO0dBQU87R0FBTTtHQUFTO0dBQVM7O0NBRzFDLFNBQVMsWUFBWSxlQUFxQixXQUFpQjtFQUN6RCxNQUFNLDhDQUFzQiwwQkFBMEIsRUFDcEQsVUFBVSxTQUNYLENBQUMsQ0FBQyxNQUFNO0VBRVQsTUFBTSxFQUFFLHNCQUFzQixRQUFRO0FBQ3RDLE1BQUksQ0FBQyxrQkFDSCxRQUFPO0dBQ0wsT0FBTztHQUNQLE1BQU07R0FDTixTQUFTO0lBQUUsTUFBTTtJQUFNLFNBQVM7SUFBTSxLQUFLO0lBQU07R0FDbEQ7QUFFSCxVQUFNLHNCQUFzQixvQkFBb0I7RUFDaEQsTUFBTSxDQUFDRixTQUFPRCxVQUFRLGtCQUFrQixNQUFNLElBQUk7RUFDbEQsTUFBTUUsWUFBVSxJQUFJRSx1QkFBUSxFQUMxQixNQUFNLFFBQVEsSUFBSSxjQUNuQixDQUFDO0VBQ0YsSUFBSUM7QUFDSixNQUFJLFFBQVEsYUFBYSxTQUFTO0FBUWhDLGVBUDBCLFdBQ3ZCLE1BQU0sS0FBSyxDQUNYLEtBQUssU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUMxQixRQUFRLE1BQU0sVUFBVSxLQUFLLFVBQVUsTUFBTSxDQUM3QyxLQUFLLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQyxDQUNoQyxJQUFJLFNBQVMsQ0FFWSxNQUN6QixjQUFZRixVQUFRLFNBQVNMLGNBQy9CO0FBRUQsT0FBSSxDQUFDSyxVQUNILE9BQU0sSUFBSSxVQUNSLGdDQUFnQ0wsY0FBWSwwQkFBMEIsYUFDdkU7UUFHSCxhQUFVO0dBQ1IsS0FBSyxJQUFJQztHQUNUO0dBQ0EsTUFBTUQ7R0FDUDtBQUVILFNBQU87R0FBRTtHQUFPO0dBQU07R0FBUztHQUFTOztBQUcxQyxLQUFJLENBQUMsUUFBUSxRQUFRO0FBQ25CLFFBQU0sUUFBUSxZQUFZO0FBQzFCLFFBQU0sa0JBQWtCLGlCQUFpQixFQUN2QyxzQkFBc0IsUUFBUSxRQUMzQixNQUFNLFdBQVc7QUFDaEIsUUFBSyxHQUFHLFlBQVksR0FBRyxPQUFPLHFCQUFxQixZQUFZO0FBRS9ELFVBQU87S0FFVCxFQUFFLENBQ0gsRUFDRixDQUFDOztDQUdKLE1BQU0sRUFBRSxPQUFPLE1BQU0sU0FBUyxZQUFZLFFBQVEsY0FDOUMsWUFBWSxhQUFhLFlBQVksUUFBUSxHQUM3QyxNQUFNLGdCQUFnQixhQUFhLFlBQVksUUFBUTtBQUUzRCxNQUFLLE1BQU0sVUFBVSxTQUFTO0VBQzVCLE1BQU0sZ0NBQ0osUUFBUSxLQUNSLFFBQVEsUUFDUixHQUFHLE9BQU8sa0JBQ1g7RUFDRCxNQUFNLE1BQ0osT0FBTyxhQUFhLFVBQVUsT0FBTyxhQUFhLFNBQVMsU0FBUztFQUN0RSxNQUFNLFdBQVcsR0FBRyxXQUFXLEdBQUcsT0FBTyxnQkFBZ0IsR0FBRztFQUM1RCxNQUFNLDhCQUFlLFFBQVEsU0FBUztBQUV0QyxNQUFJLENBQUMsUUFBUSxRQUFRO0FBQ25CLE9BQUkseUJBQVksUUFBUSxFQUFFO0FBQ3hCLFlBQU0sS0FBSyxvQkFBb0IsUUFBUTtBQUN2Qzs7QUFHRixPQUFJLENBQUMsUUFBUSxvQkFDWCxLQUFJO0lBQ0YsTUFBTSwwQ0FBa0IsR0FBRyxVQUFVLFdBQVc7S0FDOUMsS0FBSztLQUNMLEtBQUssUUFBUTtLQUNiLE9BQU87S0FDUixDQUFDO0FBQ0YsWUFBUSxPQUFPLE1BQU0sT0FBTztZQUNyQixHQUFHO0FBQ1YsUUFDRSxhQUFhLFNBQ2IsRUFBRSxRQUFRLFNBQ1IsNERBQ0QsRUFDRDtBQUNBLGFBQVEsS0FBSyxFQUFFLFFBQVE7QUFDdkIsYUFBTSxLQUFLLEdBQUcsT0FBTywrQkFBK0I7VUFFcEQsT0FBTTs7QUFLWixPQUFJLFFBQVEsYUFBYSxRQUFRLE9BQU87QUFDdEMsWUFBTSxLQUFLLDJCQUEyQixRQUFRLE1BQU07QUFDcEQsUUFBSTtLQUNGLE1BQU0sWUFBWSxRQUFRLGNBQ3RCLE9BQU8sUUFBUSxZQUFZLElBRXpCLE1BQU0sUUFBUyxNQUFNLGdCQUFnQjtNQUM3QjtNQUNDO01BQ1AsS0FBSyxRQUFRO01BQ2QsQ0FBQyxFQUNGLEtBQUs7S0FDWCxNQUFNLHFDQUF3QixRQUFRO0tBQ3RDLE1BQU0sWUFBWSxNQUFNLFFBQVMsTUFBTSxtQkFBbUI7TUFDakQ7TUFDRDtNQUNOLE1BQU07TUFDTixZQUFZO01BQ1osV0FBVyxFQUFFLFFBQVEsT0FBTztNQUM1QixTQUFTO09BQ1Asa0JBQWtCLGFBQWE7T0FDL0IsZ0JBQWdCO09BQ2pCO01BRUQsTUFBTSxNQUFNLGNBQWMsUUFBUTtNQUNuQyxDQUFDO0FBQ0YsYUFBTSxLQUFLLHlCQUF5QjtBQUNwQyxhQUFNLEtBQUssb0JBQW9CLFVBQVUsS0FBSyxxQkFBcUI7YUFDNUQsR0FBRztBQUNWLGFBQU0sTUFDSixVQUFVLEtBQUssVUFDYjtNQUFFO01BQU87TUFBTSxLQUFLLFFBQVE7TUFBSyxVQUFVO01BQVMsRUFDcEQsTUFDQSxFQUNELEdBQ0Y7QUFDRCxhQUFNLE1BQU0sRUFBRTs7Ozs7O0FBT3hCLFNBQVMsU0FBUyxLQUFhO0NBQzdCLE1BQU0sV0FBVyxJQUFJLE1BQU0sSUFBSTtDQUMvQixNQUFNQyxZQUFVLFNBQVMsS0FBSztBQUc5QixRQUFPO0VBQ0wsTUFIVyxTQUFTLEtBQUssSUFBSTtFQUk3QjtFQUNBO0VBQ0Q7Ozs7O0FDN09ILElBQXNCLDBCQUF0QixjQUFzRE8sa0JBQVE7Q0FDNUQsT0FBTyxRQUFRLENBQUMsQ0FBQyxlQUFlLENBQUM7Q0FFakMsT0FBTyxRQUFRQSxrQkFBUSxNQUFNLEVBQzNCLGFBQWEsb0RBQ2QsQ0FBQztDQUVGLE1BQU1DLGlCQUFPLE9BQU8sU0FBUyxRQUFRLEtBQUssRUFBRSxFQUMxQyxhQUNFLHNIQUNILENBQUM7Q0FFRixhQUFzQkEsaUJBQU8sT0FBTyxvQkFBb0IsRUFDdEQsYUFBYSxtQ0FDZCxDQUFDO0NBRUYsa0JBQWtCQSxpQkFBTyxPQUFPLHVCQUF1QixnQkFBZ0IsRUFDckUsYUFBYSwwQkFDZCxDQUFDO0NBRUYsWUFBWUEsaUJBQU8sT0FBTyxtQkFBbUIsTUFBTSxFQUNqRCxhQUNFLGlHQUNILENBQUM7Q0FFRixhQUFhO0FBQ1gsU0FBTztHQUNMLEtBQUssS0FBSztHQUNWLFlBQVksS0FBSztHQUNqQixpQkFBaUIsS0FBSztHQUN0QixXQUFXLEtBQUs7R0FDakI7OztBQWdDTCxTQUFnQixnQ0FBZ0MsU0FBOEI7QUFDNUUsUUFBTztFQUNMLEtBQUssUUFBUSxLQUFLO0VBQ2xCLGlCQUFpQjtFQUNqQixXQUFXO0VBQ1gsR0FBRztFQUNKOzs7OztBQzdESCxNQUFNQyxVQUFRLGFBQWEsZUFBZTtBQUUxQyxNQUFNQyxpQkFFRixFQUNGLFNBQVMsUUFBUSxXQUFXO0FBQzFCLG1DQUFVLFFBQVE7RUFBQztFQUFXO0VBQVc7RUFBUSxHQUFHO0VBQU8sRUFBRSxFQUMzRCxPQUFPLFdBQ1IsQ0FBQztHQUVMO0FBRUQsZUFBc0IscUJBQXFCLGFBQWtDOztDQUMzRSxNQUFNLFVBQVUsZ0NBQWdDLFlBQVk7Q0FJNUQsTUFBTSxTQUFTLE1BQU0sbUNBRlEsUUFBUSxLQUFLLFFBQVEsZ0JBQWdCLEVBSWhFLFFBQVEsb0NBQXFCLFFBQVEsS0FBSyxRQUFRLFdBQVcsR0FBRyxPQUNqRTtBQU1ELEtBQUksQ0FKVyxPQUFPLFFBQVEsTUFDM0IsTUFBTSxFQUFFLGFBQWEsUUFBUSxZQUFZLEVBQUUsU0FBUyxZQUN0RCxDQUdDLE9BQU0sSUFBSSxNQUNSLGtDQUFrQyxRQUFRLFNBQVMsd0JBQ3BEO0NBR0gsTUFBTSxvQ0FBVyxtQkFBbUIsUUFBUSx5RkFBVyxLQUFLLGdDQUV4RCxRQUFRLEtBQ1IsUUFBUSxXQUNSLEdBQUcsT0FBTyxXQUFXLEdBQUcsUUFBUSxTQUFTLEdBQUcsS0FBSyxPQUNsRCxDQUNGO0FBRUQsS0FBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLFFBQVEsVUFDdkMsT0FBTSxJQUFJLE1BQ1Isa0NBQWtDLFFBQVEsU0FBUyxrQkFDcEQ7QUFHSCxTQUFNLDBDQUEwQztBQUNoRCxTQUFNLFFBQVEsU0FBUztDQUV2QixNQUFNLGdCQUFnQixNQUFNLFFBQVEsSUFBSSxTQUFTLEtBQUssTUFBTSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0NBRTNFLE1BQU0sZ0JBQWdCLFNBQVMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLEdBQUc7QUFFbEUsS0FBSSxjQUFjLE9BQ2hCLE9BQU0sSUFBSSxNQUNSLHFDQUFxQyxLQUFLLFVBQVUsY0FBYyxHQUNuRTtDQUdILE1BQU0sZ0NBQ0osUUFBUSxLQUNSLFFBQVEsV0FDUixHQUFHLE9BQU8sV0FBVyxHQUFHLFFBQVEsU0FBUyxpQkFDMUM7QUFFRCx5Q0FBZSxRQUFRLHNHQUFZLFVBQVUsT0FBTztBQUVwRCxTQUFNLDhCQUE4QixTQUFTOzs7OztBQzFFL0MsSUFBYSxtQkFBYixjQUFzQyxxQkFBcUI7Q0FDekQsT0FBTyxRQUFRQyxrQkFBUSxNQUFNO0VBQzNCLGFBQWE7RUFDYixVQUFVLENBQ1IsQ0FDRSxzREFDQTtnRkFFRCxDQUNGO0VBQ0YsQ0FBQztDQUVGLE9BQU8sUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDO0NBRTlCLE1BQU0sVUFBVTtBQUNkLFFBQU0saUJBQWlCLEtBQUssWUFBWSxDQUFDOzs7Ozs7QUNoQjdDLElBQXNCLG1CQUF0QixjQUErQ0Msa0JBQVE7Q0FDckQsT0FBTyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUM7Q0FFMUIsT0FBTyxRQUFRQSxrQkFBUSxNQUFNLEVBQzNCLGFBQWEsNkJBQ2QsQ0FBQztDQUVGLFNBQWtCQyxpQkFBTyxPQUFPLGVBQWUsRUFDN0MsYUFDRSxtRUFDSCxDQUFDO0NBRUYsTUFBZUEsaUJBQU8sT0FBTyxTQUFTLEVBQ3BDLGFBQ0Usc0hBQ0gsQ0FBQztDQUVGLGVBQXdCQSxpQkFBTyxPQUFPLG1CQUFtQixFQUN2RCxhQUFhLHdCQUNkLENBQUM7Q0FFRixhQUFzQkEsaUJBQU8sT0FBTyxvQkFBb0IsRUFDdEQsYUFBYSxtQ0FDZCxDQUFDO0NBRUYsa0JBQTJCQSxpQkFBTyxPQUFPLHVCQUF1QixFQUM5RCxhQUFhLDBCQUNkLENBQUM7Q0FFRixZQUFxQkEsaUJBQU8sT0FBTyxnQkFBZ0IsRUFDakQsYUFDRSwrRUFDSCxDQUFDO0NBRUYsWUFBcUJBLGlCQUFPLE9BQU8sbUJBQW1CLEVBQ3BELGFBQ0UsK0VBQ0gsQ0FBQztDQUVGLFdBQXFCQSxpQkFBTyxRQUFRLGNBQWMsRUFDaEQsYUFDRSw2RkFDSCxDQUFDO0NBRUYsZ0JBQXlCQSxpQkFBTyxPQUFPLHFCQUFxQixFQUMxRCxhQUNFLGdGQUNILENBQUM7Q0FFRixZQUFzQkEsaUJBQU8sUUFBUSxnQkFBZ0IsRUFDbkQsYUFBYSx1REFDZCxDQUFDO0NBRUYsWUFBcUJBLGlCQUFPLE9BQU8sUUFBUSxFQUN6QyxhQUNFLGtIQUNILENBQUM7Q0FFRixjQUF3QkEsaUJBQU8sUUFBUSxXQUFXLEVBQ2hELGFBQ0UseUZBQ0gsQ0FBQztDQUVGLE1BQWVBLGlCQUFPLE9BQU8sU0FBUyxFQUNwQyxhQUNFLDRFQUNILENBQUM7Q0FFRixZQUFxQkEsaUJBQU8sT0FBTyxnQkFBZ0IsRUFDakQsYUFDRSw4RkFDSCxDQUFDO0NBRUYsY0FBd0JBLGlCQUFPLFFBQVEsbUJBQW1CLEVBQ3hELGFBQ0Usc0hBQ0gsQ0FBQztDQUVGLFdBQVdBLGlCQUFPLFFBQVEsZUFBZSxNQUFNLEVBQzdDLGFBQWEsb0RBQ2QsQ0FBQztDQUVGLE1BQWdCQSxpQkFBTyxRQUFRLFNBQVMsRUFDdEMsYUFDRSxvR0FDSCxDQUFDO0NBRUYsUUFBa0JBLGlCQUFPLFFBQVEsY0FBYyxFQUM3QyxhQUFhLDhEQUNkLENBQUM7Q0FFRixVQUFvQkEsaUJBQU8sUUFBUSxnQkFBZ0IsRUFDakQsYUFBYSx5QkFDZCxDQUFDO0NBRUYsVUFBb0JBLGlCQUFPLFFBQVEsZ0JBQWdCLEVBQ2pELGFBQWEscUNBQ2QsQ0FBQztDQUVGLE1BQWVBLGlCQUFPLE9BQU8sU0FBUyxFQUNwQyxhQUFhLG1DQUNkLENBQUM7Q0FFRixVQUFtQkEsaUJBQU8sT0FBTyxnQkFBZ0IsRUFDL0MsYUFBYSxpREFDZCxDQUFDO0NBRUYsVUFBbUJBLGlCQUFPLE9BQU8sYUFBYSxFQUM1QyxhQUFhLDhDQUNkLENBQUM7Q0FFRixlQUF5QkEsaUJBQU8sUUFBUSxzQkFBc0IsRUFDNUQsYUFDRSw2SEFDSCxDQUFDO0NBRUYsV0FBcUJBLGlCQUFPLFFBQVEsZUFBZSxFQUNqRCxhQUNFLG9GQUNILENBQUM7Q0FFRixlQUF5QkEsaUJBQU8sUUFBUSxvQkFBb0IsRUFDMUQsYUFDRSxpR0FDSCxDQUFDO0NBRUYsUUFBa0JBLGlCQUFPLFFBQVEsY0FBYyxFQUM3QyxhQUNFLDRFQUNILENBQUM7Q0FFRixXQUFzQkEsaUJBQU8sTUFBTSxpQkFBaUIsRUFDbEQsYUFBYSxnREFDZCxDQUFDO0NBRUYsY0FBd0JBLGlCQUFPLFFBQVEsa0JBQWtCLEVBQ3ZELGFBQWEsbUNBQ2QsQ0FBQztDQUVGLG9CQUE4QkEsaUJBQU8sUUFBUSx5QkFBeUIsRUFDcEUsYUFBYSx5Q0FDZCxDQUFDO0NBRUYsYUFBYTtBQUNYLFNBQU87R0FDTCxRQUFRLEtBQUs7R0FDYixLQUFLLEtBQUs7R0FDVixjQUFjLEtBQUs7R0FDbkIsWUFBWSxLQUFLO0dBQ2pCLGlCQUFpQixLQUFLO0dBQ3RCLFdBQVcsS0FBSztHQUNoQixXQUFXLEtBQUs7R0FDaEIsVUFBVSxLQUFLO0dBQ2YsZUFBZSxLQUFLO0dBQ3BCLFdBQVcsS0FBSztHQUNoQixXQUFXLEtBQUs7R0FDaEIsYUFBYSxLQUFLO0dBQ2xCLEtBQUssS0FBSztHQUNWLFdBQVcsS0FBSztHQUNoQixhQUFhLEtBQUs7R0FDbEIsVUFBVSxLQUFLO0dBQ2YsS0FBSyxLQUFLO0dBQ1YsT0FBTyxLQUFLO0dBQ1osU0FBUyxLQUFLO0dBQ2QsU0FBUyxLQUFLO0dBQ2QsS0FBSyxLQUFLO0dBQ1YsU0FBUyxLQUFLO0dBQ2QsU0FBUyxLQUFLO0dBQ2QsY0FBYyxLQUFLO0dBQ25CLFVBQVUsS0FBSztHQUNmLGNBQWMsS0FBSztHQUNuQixPQUFPLEtBQUs7R0FDWixVQUFVLEtBQUs7R0FDZixhQUFhLEtBQUs7R0FDbEIsbUJBQW1CLEtBQUs7R0FDekI7Ozs7OztBQzNLTCxNQUFNQyxVQUFRLGFBQWEsUUFBUTtBQUVuQyxJQUFhLGVBQWIsY0FBa0MsaUJBQWlCO0NBQ2pELE9BQU9DLGlCQUFPLE9BQU8sVUFBVSxFQUM3QixhQUNFLDZGQUNILENBQUM7Q0FFRixlQUFlQSxpQkFBTyxNQUFNO0NBRTVCLE1BQU0sVUFBVTtFQUNkLE1BQU0sRUFBRSxTQUFTLE1BQU0sYUFBYTtHQUNsQyxHQUFHLEtBQUssWUFBWTtHQUNwQixjQUFjLEtBQUs7R0FDcEIsQ0FBQztFQUVGLE1BQU0sVUFBVSxNQUFNO0FBRXRCLE1BQUksS0FBSyxLQUNQLE1BQUssTUFBTSxVQUFVLFNBQVM7QUFDNUIsV0FBTSxxQ0FBcUMsS0FBSyxLQUFLO0FBQ3JELE9BQUk7QUFDRixxQ0FBUyxHQUFHLEtBQUssS0FBSyxHQUFHLE9BQU8sUUFBUTtLQUN0QyxPQUFPO0tBQ1AsS0FBSyxLQUFLO0tBQ1gsQ0FBQztZQUNLLEdBQUc7QUFDVixZQUFNLE1BQU0sOEJBQThCLE9BQU8sS0FBSyxhQUFhO0FBQ25FLFlBQU0sTUFBTSxFQUFFOzs7Ozs7OztBQ2pDeEIsSUFBYSx1QkFBYixjQUEwQyx5QkFBeUI7Q0FDakUsTUFBTSxVQUFVO0FBQ2QsUUFBTSxjQUFjLEtBQUssWUFBWSxDQUFDOzs7Ozs7Ozs7OztBQ0UxQyxJQUFhLGNBQWIsY0FBaUNDLGtCQUFhO0NBQzVDLE9BQU8sUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDO0NBQ25DLE1BQU0sVUFBVTtBQUNkLFFBQU0sS0FBSyxRQUFRLE9BQU8sTUFBTSxLQUFLLElBQUksT0FBTyxDQUFDOzs7Ozs7QUNLckQsTUFBTSxRQUFRLGFBQWEsTUFBTTtBQUVqQyxJQUFhLGFBQWIsY0FBZ0MsZUFBZTtDQUM3QyxjQUFjQyxpQkFBTyxRQUFRLG9CQUFvQixNQUFNLEVBQ3JELGFBQ0UsK0VBQ0gsQ0FBQztDQUVGLE1BQU0sVUFBVTtBQUNkLE1BQUk7QUFFRixTQUFNLFdBRFUsTUFBTSxLQUFLLGNBQWMsQ0FDaEI7QUFDekIsVUFBTztXQUNBLEdBQUc7QUFDVixTQUFNLCtCQUErQjtBQUNyQyxTQUFNLE1BQU0sRUFBRTtBQUNkLFVBQU87OztDQUlYLE1BQWMsZUFBZTtFQUMzQixNQUFNLGFBQWEsTUFBTSxZQUFZO0FBRXJDLE1BQUksS0FBSyxhQUFhO0dBQ3BCLE1BQU1DLGFBQXFCLFdBQVcsT0FDbEMsV0FBVyxPQUNYLE1BQU0scUJBQXFCO0FBQy9CLGNBQVcsT0FBTztBQUNsQixVQUFPO0lBQ0wsR0FBRztJQUNILE1BQU0sTUFBTSxLQUFLLFVBQVVDLGtCQUFLLE1BQU0sV0FBVyxDQUFDLEtBQUs7SUFDdkQsbUJBQW1CLE1BQU0sS0FBSyxrQkFBa0I7SUFDaEQsU0FBUyxNQUFNLEtBQUssY0FBYztJQUNsQyxTQUFTLE1BQU0sS0FBSyxjQUFjO0lBQ2xDLGVBQWUsTUFBTSxLQUFLLGNBQWM7SUFDeEMscUJBQXFCLE1BQU0sS0FBSyxvQkFBb0I7SUFDckQ7O0FBR0gsU0FBTzs7Q0FHVCxNQUFjLFVBQVUsYUFBc0M7QUFDNUQsU0FDRSxLQUFLLHdDQUNDO0dBQ0osU0FBUztHQUNULFNBQVM7R0FDVixDQUFDOztDQUlOLE1BQWMsZUFBZ0M7QUFDNUMsdUNBQWE7R0FDWCxTQUFTO0dBQ1QsU0FBUyxLQUFLO0dBQ2YsQ0FBQzs7Q0FHSixNQUFjLG1CQUFvQztBQUNoRCx3Q0FBYztHQUNaLFNBQVM7R0FDVCxNQUFNO0dBQ04sVUFBVTtHQUNWLFNBQVMsTUFBTSxLQUFLLEVBQUUsUUFBUSxHQUFHLEdBQUcsR0FBRyxPQUFPO0lBQzVDLE1BQU0sT0FBTyxJQUFJLEVBQUUsSUFBSSxzQkFBc0IsSUFBSSxFQUFFLENBQUM7SUFDcEQsT0FBTyxJQUFJO0lBQ1osRUFBRTtHQUVILFNBQVMsS0FBSyxvQkFBb0I7R0FDbkMsQ0FBQzs7Q0FHSixNQUFjLGVBQXdDO0FBQ3BELE1BQUksS0FBSyxpQkFDUCxRQUFPLGtCQUFrQixRQUFRO0FBY25DLFNBWGdCLHVDQUFlO0dBQzdCLE1BQU07R0FDTixTQUFTO0dBQ1QsU0FBUyxrQkFBa0IsS0FBSyxZQUFZO0lBQzFDLE1BQU07SUFDTixPQUFPO0lBRVAsU0FBUyxnQkFBZ0IsU0FBUyxPQUFPO0lBQzFDLEVBQUU7R0FDSixDQUFDOztDQUtKLE1BQWMsZUFBaUM7QUFNN0MsU0FMc0Isc0NBQWM7R0FDbEMsU0FBUztHQUNULFNBQVMsS0FBSztHQUNmLENBQUM7O0NBS0osTUFBYyxxQkFBdUM7QUFNbkQsU0FMNEIsc0NBQWM7R0FDeEMsU0FBUztHQUNULFNBQVMsS0FBSztHQUNmLENBQUM7OztBQU1OLGVBQWUsc0JBQXVDO0FBQ3BELHNDQUFhLEVBQ1gsU0FBUyx1REFDVixDQUFDLENBQUMsTUFBTSxXQUFTO0FBQ2hCLE1BQUksQ0FBQ0EsT0FDSCxRQUFPLHFCQUFxQjtBQUU5QixTQUFPQTtHQUNQOzs7OztBQ25JSixJQUFhLG9CQUFiLGNBQXVDLHNCQUFzQjtDQUMzRCxNQUFNLFVBQVU7QUFFZCxRQUFNLFdBQVcsS0FBSyxZQUFZLENBQUM7Ozs7OztBQ0R2QyxJQUFhLGdCQUFiLGNBQW1DLGtCQUFrQjtDQUNuRCxNQUFNLFVBQVU7RUFDZCxNQUFNLFVBQVUsS0FBSyxZQUFZO0FBQ2pDLE1BQUksQ0FBQyxRQUFRLEtBS1gsU0FBUSxPQUpLLG9DQUFZO0dBQ3ZCLFNBQVM7R0FDVCxVQUFVO0dBQ1gsQ0FBQztBQUdKLE1BQUksQ0FBQyxRQUFRLFdBS1gsU0FBUSxhQUpXLG9DQUFZO0dBQzdCLFNBQVM7R0FDVCxVQUFVO0dBQ1gsQ0FBQztBQUdKLFFBQU0sY0FBYyxRQUFROzs7Ozs7QUNuQmhDLElBQWEsc0JBQWIsY0FBeUMsd0JBQXdCO0NBQy9ELE1BQU0sVUFBVTtBQUNkLFFBQU0scUJBQXFCLEtBQUssWUFBWSxDQUFDOzs7Ozs7QUNGakQsSUFBYSxpQkFBYixjQUFvQyxtQkFBbUI7Q0FDckQsTUFBTSxVQUFVO0FBQ2QsUUFBTSxRQUFRLEtBQUssWUFBWSxDQUFDOzs7Ozs7QUNnQnBDLE1BQWEsTUFBTSxJQUFJQyxjQUFJO0NBQ3pCLFlBQVk7Q0FDWixlQUFlO0NBQ2hCLENBQUM7QUFFRixJQUFJLFNBQVMsV0FBVztBQUN4QixJQUFJLFNBQVMsYUFBYTtBQUMxQixJQUFJLFNBQVMscUJBQXFCO0FBQ2xDLElBQUksU0FBUyxpQkFBaUI7QUFDOUIsSUFBSSxTQUFTLG9CQUFvQjtBQUNqQyxJQUFJLFNBQVMsY0FBYztBQUMzQixJQUFJLFNBQVMsa0JBQWtCO0FBQy9CLElBQUksU0FBUyxlQUFlO0FBQzVCLElBQUksU0FBUyxZQUFZOzs7Ozs7Ozs7Ozs7O0FBY3pCLElBQWEsVUFBYixNQUFxQjtDQUNuQixZQUFZO0NBQ1osTUFBTTtDQUNOLFFBQVE7Q0FDUixnQkFBZ0I7Q0FDaEIsYUFBYTtDQUNiLFNBQVM7Q0FDVCxlQUFlO0NBQ2YsVUFBVTs7QUFHWixTQUFnQixtQkFBbUIsTUFBOEI7QUFDL0QsUUFBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDOztBQUd4QyxTQUFnQix1QkFBdUIsTUFBa0M7QUFDdkUsUUFBTyxJQUFJLFFBQVEsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDOztBQUc1QyxTQUFnQiwyQkFDZCxNQUNzQjtBQUN0QixRQUFPLElBQUksUUFBUSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQzs7QUFHbEQsU0FBZ0Isd0JBQXdCLE1BQW1DO0FBQ3pFLFFBQU8sSUFBSSxRQUFRLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQzs7QUFHOUMsU0FBZ0Isb0JBQW9CLE1BQStCO0FBQ2pFLFFBQU8sSUFBSSxRQUFRLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzs7QUFHekMsU0FBZ0IsMEJBQTBCLE1BQXFDO0FBQzdFLFFBQU8sSUFBSSxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDOztBQUcvQyxTQUFnQixxQkFBcUIsTUFBZ0M7QUFDbkUsUUFBTyxJQUFJLFFBQVEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDOztBQUcxQyxTQUFnQixpQkFBaUIsTUFBNEI7QUFDM0QsUUFBTyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDIn0= \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/dist/index.d.cts b/sdks/nodejs/node_modules/@napi-rs/cli/dist/index.d.cts deleted file mode 100644 index 2297f6e..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/dist/index.d.cts +++ /dev/null @@ -1,960 +0,0 @@ -import * as clipanion1 from "clipanion"; -import { Cli, Command } from "clipanion"; - -//#region src/def/artifacts.d.ts -declare abstract class BaseArtifactsCommand extends Command { - static paths: string[][]; - static usage: clipanion1.Usage; - cwd: string; - configPath?: string; - packageJsonPath: string; - outputDir: string; - npmDir: string; - buildOutputDir?: string; - getOptions(): { - cwd: string; - configPath: string | undefined; - packageJsonPath: string; - outputDir: string; - npmDir: string; - buildOutputDir: string | undefined; - }; -} -/** - * Copy artifacts from Github Actions into npm packages and ready to publish - */ -interface ArtifactsOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string; - /** - * Path to the folder where all built `.node` files put, same as `--output-dir` of build command - * - * @default './artifacts' - */ - outputDir?: string; - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string; - /** - * Path to the build output dir, only needed when targets contains `wasm32-wasi-*` - */ - buildOutputDir?: string; -} -//#endregion -//#region src/api/artifacts.d.ts -declare function collectArtifacts(userOptions: ArtifactsOptions): Promise; -//#endregion -//#region src/def/build.d.ts -declare abstract class BaseBuildCommand extends Command { - static paths: string[][]; - static usage: clipanion1.Usage; - target?: string; - cwd?: string; - manifestPath?: string; - configPath?: string; - packageJsonPath?: string; - targetDir?: string; - outputDir?: string; - platform?: boolean; - jsPackageName?: string; - constEnum?: boolean; - jsBinding?: string; - noJsBinding?: boolean; - dts?: string; - dtsHeader?: string; - noDtsHeader?: boolean; - dtsCache: boolean; - esm?: boolean; - strip?: boolean; - release?: boolean; - verbose?: boolean; - bin?: string; - package?: string; - profile?: string; - crossCompile?: boolean; - useCross?: boolean; - useNapiCross?: boolean; - watch?: boolean; - features?: string[]; - allFeatures?: boolean; - noDefaultFeatures?: boolean; - getOptions(): { - target: string | undefined; - cwd: string | undefined; - manifestPath: string | undefined; - configPath: string | undefined; - packageJsonPath: string | undefined; - targetDir: string | undefined; - outputDir: string | undefined; - platform: boolean | undefined; - jsPackageName: string | undefined; - constEnum: boolean | undefined; - jsBinding: string | undefined; - noJsBinding: boolean | undefined; - dts: string | undefined; - dtsHeader: string | undefined; - noDtsHeader: boolean | undefined; - dtsCache: boolean; - esm: boolean | undefined; - strip: boolean | undefined; - release: boolean | undefined; - verbose: boolean | undefined; - bin: string | undefined; - package: string | undefined; - profile: string | undefined; - crossCompile: boolean | undefined; - useCross: boolean | undefined; - useNapiCross: boolean | undefined; - watch: boolean | undefined; - features: string[] | undefined; - allFeatures: boolean | undefined; - noDefaultFeatures: boolean | undefined; - }; -} -/** - * Build the NAPI-RS project - */ -interface BuildOptions { - /** - * Build for the target triple, bypassed to `cargo build --target` - */ - target?: string; - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - */ - cwd?: string; - /** - * Path to `Cargo.toml` - */ - manifestPath?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - */ - packageJsonPath?: string; - /** - * Directory for all crate generated artifacts, see `cargo build --target-dir` - */ - targetDir?: string; - /** - * Path to where all the built files would be put. Default to the crate folder - */ - outputDir?: string; - /** - * Add platform triple to the generated nodejs binding file, eg: `[name].linux-x64-gnu.node` - */ - platform?: boolean; - /** - * Package name in generated js binding file. Only works with `--platform` flag - */ - jsPackageName?: string; - /** - * Whether generate const enum for typescript bindings - */ - constEnum?: boolean; - /** - * Path and filename of generated JS binding file. Only works with `--platform` flag. Relative to `--output-dir`. - */ - jsBinding?: string; - /** - * Whether to disable the generation JS binding file. Only works with `--platform` flag. - */ - noJsBinding?: boolean; - /** - * Path and filename of generated type def file. Relative to `--output-dir` - */ - dts?: string; - /** - * Custom file header for generated type def file. Only works when `typedef` feature enabled. - */ - dtsHeader?: string; - /** - * Whether to disable the default file header for generated type def file. Only works when `typedef` feature enabled. - */ - noDtsHeader?: boolean; - /** - * Whether to enable the dts cache, default to true - * - * @default true - */ - dtsCache?: boolean; - /** - * Whether to emit an ESM JS binding file instead of CJS format. Only works with `--platform` flag. - */ - esm?: boolean; - /** - * Whether strip the library to achieve the minimum file size - */ - strip?: boolean; - /** - * Build in release mode - */ - release?: boolean; - /** - * Verbosely log build command trace - */ - verbose?: boolean; - /** - * Build only the specified binary - */ - bin?: string; - /** - * Build the specified library or the one at cwd - */ - package?: string; - /** - * Build artifacts with the specified profile - */ - profile?: string; - /** - * [experimental] cross-compile for the specified target with `cargo-xwin` on windows and `cargo-zigbuild` on other platform - */ - crossCompile?: boolean; - /** - * [experimental] use [cross](https://github.com/cross-rs/cross) instead of `cargo` - */ - useCross?: boolean; - /** - * [experimental] use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets. - */ - useNapiCross?: boolean; - /** - * watch the crate changes and build continuously with `cargo-watch` crates - */ - watch?: boolean; - /** - * Space-separated list of features to activate - */ - features?: string[]; - /** - * Activate all available features - */ - allFeatures?: boolean; - /** - * Do not activate the `default` feature - */ - noDefaultFeatures?: boolean; -} -//#endregion -//#region src/api/build.d.ts -type OutputKind = 'js' | 'dts' | 'node' | 'exe' | 'wasm'; -type Output = { - kind: OutputKind; - path: string; -}; -type BuildOptions$1 = BuildOptions & { - cargoOptions?: string[]; -}; -declare function buildProject(rawOptions: BuildOptions$1): Promise<{ - task: Promise; - abort: () => void; -}>; -interface WriteJsBindingOptions { - platform?: boolean; - noJsBinding?: boolean; - idents: string[]; - jsBinding?: string; - esm?: boolean; - binaryName: string; - packageName: string; - version: string; - outputDir: string; -} -declare function writeJsBinding(options: WriteJsBindingOptions): Promise; -interface GenerateTypeDefOptions { - typeDefDir: string; - noDtsHeader?: boolean; - dtsHeader?: string; - dtsHeaderFile?: string; - configDtsHeader?: string; - configDtsHeaderFile?: string; - constEnum?: boolean; - cwd: string; -} -declare function generateTypeDef(options: GenerateTypeDefOptions): Promise<{ - exports: string[]; - dts: string; -}>; -//#endregion -//#region src/def/create-npm-dirs.d.ts -declare abstract class BaseCreateNpmDirsCommand extends Command { - static paths: string[][]; - static usage: clipanion1.Usage; - cwd: string; - configPath?: string; - packageJsonPath: string; - npmDir: string; - dryRun: boolean; - getOptions(): { - cwd: string; - configPath: string | undefined; - packageJsonPath: string; - npmDir: string; - dryRun: boolean; - }; -} -/** - * Create npm package dirs for different platforms - */ -interface CreateNpmDirsOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string; - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string; - /** - * Dry run without touching file system - * - * @default false - */ - dryRun?: boolean; -} -//#endregion -//#region src/api/create-npm-dirs.d.ts -declare function createNpmDirs(userOptions: CreateNpmDirsOptions): Promise; -//#endregion -//#region src/def/new.d.ts -declare abstract class BaseNewCommand extends Command { - static paths: string[][]; - static usage: clipanion1.Usage; - $$path: string | undefined; - $$name?: string; - minNodeApiVersion: number; - packageManager: string; - license: string; - targets: string[]; - enableDefaultTargets: boolean; - enableAllTargets: boolean; - enableTypeDef: boolean; - enableGithubActions: boolean; - testFramework: string; - dryRun: boolean; - getOptions(): { - path: string | undefined; - name: string | undefined; - minNodeApiVersion: number; - packageManager: string; - license: string; - targets: string[]; - enableDefaultTargets: boolean; - enableAllTargets: boolean; - enableTypeDef: boolean; - enableGithubActions: boolean; - testFramework: string; - dryRun: boolean; - }; -} -/** - * Create a new project with pre-configured boilerplate - */ -interface NewOptions { - /** - * The path where the NAPI-RS project will be created. - */ - path?: string; - /** - * The name of the project, default to the name of the directory if not provided - */ - name?: string; - /** - * The minimum Node-API version to support - * - * @default 4 - */ - minNodeApiVersion?: number; - /** - * The package manager to use. Only support yarn 4.x for now. - * - * @default 'yarn' - */ - packageManager?: string; - /** - * License for open-sourced project - * - * @default 'MIT' - */ - license?: string; - /** - * All targets the crate will be compiled for. - * - * @default [] - */ - targets?: string[]; - /** - * Whether enable default targets - * - * @default true - */ - enableDefaultTargets?: boolean; - /** - * Whether enable all targets - * - * @default false - */ - enableAllTargets?: boolean; - /** - * Whether enable the `type-def` feature for typescript definitions auto-generation - * - * @default true - */ - enableTypeDef?: boolean; - /** - * Whether generate preconfigured GitHub Actions workflow - * - * @default true - */ - enableGithubActions?: boolean; - /** - * The JavaScript test framework to use, only support `ava` for now - * - * @default 'ava' - */ - testFramework?: string; - /** - * Whether to run the command in dry-run mode - * - * @default false - */ - dryRun?: boolean; -} -//#endregion -//#region src/api/new.d.ts -declare function newProject(userOptions: NewOptions): Promise; -//#endregion -//#region src/def/pre-publish.d.ts -declare abstract class BasePrePublishCommand extends Command { - static paths: string[][]; - static usage: clipanion1.Usage; - cwd: string; - configPath?: string; - packageJsonPath: string; - npmDir: string; - tagStyle: string; - ghRelease: boolean; - ghReleaseName?: string; - ghReleaseId?: string; - skipOptionalPublish: boolean; - dryRun: boolean; - getOptions(): { - cwd: string; - configPath: string | undefined; - packageJsonPath: string; - npmDir: string; - tagStyle: string; - ghRelease: boolean; - ghReleaseName: string | undefined; - ghReleaseId: string | undefined; - skipOptionalPublish: boolean; - dryRun: boolean; - }; -} -/** - * Update package.json and copy addons into per platform packages - */ -interface PrePublishOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string; - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string; - /** - * git tag style, `npm` or `lerna` - * - * @default 'lerna' - */ - tagStyle?: 'npm' | 'lerna'; - /** - * Whether create GitHub release - * - * @default true - */ - ghRelease?: boolean; - /** - * GitHub release name - */ - ghReleaseName?: string; - /** - * Existing GitHub release id - */ - ghReleaseId?: string; - /** - * Whether skip optionalDependencies packages publish - * - * @default false - */ - skipOptionalPublish?: boolean; - /** - * Dry run without touching file system - * - * @default false - */ - dryRun?: boolean; -} -//#endregion -//#region src/api/pre-publish.d.ts -declare function prePublish(userOptions: PrePublishOptions): Promise; -//#endregion -//#region src/def/rename.d.ts -declare abstract class BaseRenameCommand extends Command { - static paths: string[][]; - static usage: clipanion1.Usage; - cwd: string; - configPath?: string; - packageJsonPath: string; - npmDir: string; - $$name?: string; - binaryName?: string; - packageName?: string; - manifestPath: string; - repository?: string; - description?: string; - getOptions(): { - cwd: string; - configPath: string | undefined; - packageJsonPath: string; - npmDir: string; - name: string | undefined; - binaryName: string | undefined; - packageName: string | undefined; - manifestPath: string; - repository: string | undefined; - description: string | undefined; - }; -} -/** - * Rename the NAPI-RS project - */ -interface RenameOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string; - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string; - /** - * The new name of the project - */ - name?: string; - /** - * The new binary name *.node files - */ - binaryName?: string; - /** - * The new package name of the project - */ - packageName?: string; - /** - * Path to `Cargo.toml` - * - * @default 'Cargo.toml' - */ - manifestPath?: string; - /** - * The new repository of the project - */ - repository?: string; - /** - * The new description of the project - */ - description?: string; -} -//#endregion -//#region src/api/rename.d.ts -declare function renameProject(userOptions: RenameOptions): Promise; -//#endregion -//#region src/def/universalize.d.ts -declare abstract class BaseUniversalizeCommand extends Command { - static paths: string[][]; - static usage: clipanion1.Usage; - cwd: string; - configPath?: string; - packageJsonPath: string; - outputDir: string; - getOptions(): { - cwd: string; - configPath: string | undefined; - packageJsonPath: string; - outputDir: string; - }; -} -/** - * Combile built binaries into one universal binary - */ -interface UniversalizeOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string; - /** - * Path to the folder where all built `.node` files put, same as `--output-dir` of build command - * - * @default './' - */ - outputDir?: string; -} -//#endregion -//#region src/api/universalize.d.ts -declare function universalizeBinaries(userOptions: UniversalizeOptions): Promise; -//#endregion -//#region src/def/version.d.ts -declare abstract class BaseVersionCommand extends Command { - static paths: string[][]; - static usage: clipanion1.Usage; - cwd: string; - configPath?: string; - packageJsonPath: string; - npmDir: string; - getOptions(): { - cwd: string; - configPath: string | undefined; - packageJsonPath: string; - npmDir: string; - }; -} -/** - * Update version in created npm packages - */ -interface VersionOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string; - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string; -} -//#endregion -//#region src/api/version.d.ts -declare function version(userOptions: VersionOptions): Promise; -//#endregion -//#region src/commands/artifacts.d.ts -declare class ArtifactsCommand extends BaseArtifactsCommand { - static usage: clipanion1.Usage; - static paths: string[][]; - execute(): Promise; -} -//#endregion -//#region src/commands/build.d.ts -declare class BuildCommand extends BaseBuildCommand { - pipe: string | undefined; - cargoOptions: string[]; - execute(): Promise; -} -//#endregion -//#region src/commands/create-npm-dirs.d.ts -declare class CreateNpmDirsCommand extends BaseCreateNpmDirsCommand { - execute(): Promise; -} -//#endregion -//#region src/commands/new.d.ts -declare class NewCommand extends BaseNewCommand { - interactive: boolean; - execute(): Promise<0 | 1>; - private fetchOptions; - private fetchName; - private fetchLicense; - private fetchNapiVersion; - private fetchTargets; - private fetchTypeDef; - private fetchGithubActions; -} -//#endregion -//#region src/commands/pre-publish.d.ts -declare class PrePublishCommand extends BasePrePublishCommand { - execute(): Promise; -} -//#endregion -//#region src/commands/rename.d.ts -declare class RenameCommand extends BaseRenameCommand { - execute(): Promise; -} -//#endregion -//#region src/commands/universalize.d.ts -declare class UniversalizeCommand extends BaseUniversalizeCommand { - execute(): Promise; -} -//#endregion -//#region src/commands/version.d.ts -declare class VersionCommand extends BaseVersionCommand { - execute(): Promise; -} -//#endregion -//#region src/utils/target.d.ts -type Platform = NodeJS.Platform | 'wasm' | 'wasi' | 'openharmony'; -type NodeJSArch = 'arm' | 'arm64' | 'ia32' | 'loong64' | 'mips' | 'mipsel' | 'ppc' | 'ppc64' | 'riscv64' | 's390' | 's390x' | 'x32' | 'x64' | 'universal' | 'wasm32'; -interface Target { - triple: string; - platformArchABI: string; - platform: Platform; - arch: NodeJSArch; - abi: string | null; -} -/** - * A triple is a specific format for specifying a target architecture. - * Triples may be referred to as a target triple which is the architecture for the artifact produced, and the host triple which is the architecture that the compiler is running on. - * The general format of the triple is `---` where: - * - `arch` = The base CPU architecture, for example `x86_64`, `i686`, `arm`, `thumb`, `mips`, etc. - * - `sub` = The CPU sub-architecture, for example `arm` has `v7`, `v7s`, `v5te`, etc. - * - `vendor` = The vendor, for example `unknown`, `apple`, `pc`, `nvidia`, etc. - * - `sys` = The system name, for example `linux`, `windows`, `darwin`, etc. none is typically used for bare-metal without an OS. - * - `abi` = The ABI, for example `gnu`, `android`, `eabi`, etc. - */ -declare function parseTriple(rawTriple: string): Target; -//#endregion -//#region src/utils/config.d.ts -interface UserNapiConfig { - /** - * Name of the binary to be generated, default to `index` - */ - binaryName?: string; - /** - * Name of the npm package, default to the name of root package.json name - * - * Always given `@scope/pkg` and arch suffix will be appended like `@scope/pkg-linux-gnu-x64` - */ - packageName?: string; - /** - * All targets the crate will be compiled for - */ - targets?: string[]; - /** - * The npm client project uses. - */ - npmClient?: string; - /** - * Whether generate const enum for typescript bindings - */ - constEnum?: boolean; - /** - * dts header prepend to the generated dts file - */ - dtsHeader?: string; - /** - * dts header file path to be prepended to the generated dts file - * if both dtsHeader and dtsHeaderFile are provided, dtsHeaderFile will be used - */ - dtsHeaderFile?: string; - /** - * wasm compilation options - */ - wasm?: { - /** - * https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Memory - * @default 4000 pages (256MiB) - */ - initialMemory?: number; - /** - * @default 65536 pages (4GiB) - */ - maximumMemory?: number; - /** - * Browser wasm binding configuration - */ - browser: { - /** - * Whether to use fs module in browser - */ - fs?: boolean; - /** - * Whether to initialize wasm asynchronously - */ - asyncInit?: boolean; - /** - * Whether to inject `buffer` to emnapi context - */ - buffer?: boolean; - }; - }; - /** - * @deprecated binaryName instead - */ - name?: string; - /** - * @deprecated use packageName instead - */ - package?: { - name?: string; - }; - /** - * @deprecated use targets instead - */ - triples?: { - /** - * Whether enable default targets - */ - defaults: boolean; - /** - * Additional targets to be compiled for - */ - additional?: string[]; - }; -} -interface CommonPackageJsonFields { - name: string; - version: string; - description?: string; - keywords?: string[]; - author?: string; - authors?: string[]; - license?: string; - cpu?: string[]; - os?: string[]; - libc?: string[]; - files?: string[]; - repository?: any; - homepage?: any; - engines?: Record; - publishConfig?: any; - bugs?: any; - napi?: UserNapiConfig; - type?: 'module' | 'commonjs'; - scripts?: Record; - main?: string; - module?: string; - types?: string; - browser?: string; - exports?: any; - dependencies?: Record; - devDependencies?: Record; - ava?: { - timeout?: string; - }; -} -type NapiConfig = Required> & Pick & { - targets: Target[]; - packageJson: CommonPackageJsonFields; -}; -declare function readNapiConfig(path: string, configPath?: string): Promise; -//#endregion -//#region src/index.d.ts -declare const cli: Cli; -/** - * - * @usage - * - * ```ts - * const cli = new NapiCli() - * - * cli.build({ - * cwd: '/path/to/your/project', - * }) - * ``` - */ -declare class NapiCli { - artifacts: typeof collectArtifacts; - new: typeof newProject; - build: typeof buildProject; - createNpmDirs: typeof createNpmDirs; - prePublish: typeof prePublish; - rename: typeof renameProject; - universalize: typeof universalizeBinaries; - version: typeof version; -} -declare function createBuildCommand(args: string[]): BuildCommand; -declare function createArtifactsCommand(args: string[]): ArtifactsCommand; -declare function createCreateNpmDirsCommand(args: string[]): CreateNpmDirsCommand; -declare function createPrePublishCommand(args: string[]): PrePublishCommand; -declare function createRenameCommand(args: string[]): RenameCommand; -declare function createUniversalizeCommand(args: string[]): UniversalizeCommand; -declare function createVersionCommand(args: string[]): VersionCommand; -declare function createNewCommand(args: string[]): NewCommand; -//#endregion -export { type GenerateTypeDefOptions, NapiCli, type WriteJsBindingOptions, cli, createArtifactsCommand, createBuildCommand, createCreateNpmDirsCommand, createNewCommand, createPrePublishCommand, createRenameCommand, createUniversalizeCommand, createVersionCommand, generateTypeDef, parseTriple, readNapiConfig, writeJsBinding }; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2RlZi9hcnRpZmFjdHMuZC50cyIsIi4uL3NyYy9hcGkvYXJ0aWZhY3RzLmQudHMiLCIuLi9zcmMvZGVmL2J1aWxkLmQudHMiLCIuLi9zcmMvYXBpL2J1aWxkLmQudHMiLCIuLi9zcmMvZGVmL2NyZWF0ZS1ucG0tZGlycy5kLnRzIiwiLi4vc3JjL2FwaS9jcmVhdGUtbnBtLWRpcnMuZC50cyIsIi4uL3NyYy9kZWYvbmV3LmQudHMiLCIuLi9zcmMvYXBpL25ldy5kLnRzIiwiLi4vc3JjL2RlZi9wcmUtcHVibGlzaC5kLnRzIiwiLi4vc3JjL2FwaS9wcmUtcHVibGlzaC5kLnRzIiwiLi4vc3JjL2RlZi9yZW5hbWUuZC50cyIsIi4uL3NyYy9hcGkvcmVuYW1lLmQudHMiLCIuLi9zcmMvZGVmL3VuaXZlcnNhbGl6ZS5kLnRzIiwiLi4vc3JjL2FwaS91bml2ZXJzYWxpemUuZC50cyIsIi4uL3NyYy9kZWYvdmVyc2lvbi5kLnRzIiwiLi4vc3JjL2FwaS92ZXJzaW9uLmQudHMiLCIuLi9zcmMvY29tbWFuZHMvYXJ0aWZhY3RzLmQudHMiLCIuLi9zcmMvY29tbWFuZHMvYnVpbGQuZC50cyIsIi4uL3NyYy9jb21tYW5kcy9jcmVhdGUtbnBtLWRpcnMuZC50cyIsIi4uL3NyYy9jb21tYW5kcy9uZXcuZC50cyIsIi4uL3NyYy9jb21tYW5kcy9wcmUtcHVibGlzaC5kLnRzIiwiLi4vc3JjL2NvbW1hbmRzL3JlbmFtZS5kLnRzIiwiLi4vc3JjL2NvbW1hbmRzL3VuaXZlcnNhbGl6ZS5kLnRzIiwiLi4vc3JjL2NvbW1hbmRzL3ZlcnNpb24uZC50cyIsIi4uL3NyYy91dGlscy90YXJnZXQuZC50cyIsIi4uL3NyYy91dGlscy9jb25maWcuZC50cyIsIi4uL3NyYy9pbmRleC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjbGlwYW5pb24nO1xuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgQmFzZUFydGlmYWN0c0NvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgICBzdGF0aWMgcGF0aHM6IHN0cmluZ1tdW107XG4gICAgc3RhdGljIHVzYWdlOiBpbXBvcnQoXCJjbGlwYW5pb25cIikuVXNhZ2U7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICBvdXRwdXREaXI6IHN0cmluZztcbiAgICBucG1EaXI6IHN0cmluZztcbiAgICBidWlsZE91dHB1dERpcj86IHN0cmluZztcbiAgICBnZXRPcHRpb25zKCk6IHtcbiAgICAgICAgY3dkOiBzdHJpbmc7XG4gICAgICAgIGNvbmZpZ1BhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgcGFja2FnZUpzb25QYXRoOiBzdHJpbmc7XG4gICAgICAgIG91dHB1dERpcjogc3RyaW5nO1xuICAgICAgICBucG1EaXI6IHN0cmluZztcbiAgICAgICAgYnVpbGRPdXRwdXREaXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB9O1xufVxuLyoqXG4gKiBDb3B5IGFydGlmYWN0cyBmcm9tIEdpdGh1YiBBY3Rpb25zIGludG8gbnBtIHBhY2thZ2VzIGFuZCByZWFkeSB0byBwdWJsaXNoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RzT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAgICovXG4gICAgY3dkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICAgKi9cbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdwYWNrYWdlLmpzb24nXG4gICAgICovXG4gICAgcGFja2FnZUpzb25QYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gdGhlIGZvbGRlciB3aGVyZSBhbGwgYnVpbHQgYC5ub2RlYCBmaWxlcyBwdXQsIHNhbWUgYXMgYC0tb3V0cHV0LWRpcmAgb2YgYnVpbGQgY29tbWFuZFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJy4vYXJ0aWZhY3RzJ1xuICAgICAqL1xuICAgIG91dHB1dERpcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIG5wbSBwYWNrYWdlcyBwdXRcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICducG0nXG4gICAgICovXG4gICAgbnBtRGlyPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gdGhlIGJ1aWxkIG91dHB1dCBkaXIsIG9ubHkgbmVlZGVkIHdoZW4gdGFyZ2V0cyBjb250YWlucyBgd2FzbTMyLXdhc2ktKmBcbiAgICAgKi9cbiAgICBidWlsZE91dHB1dERpcj86IHN0cmluZztcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGFwcGx5RGVmYXVsdEFydGlmYWN0c09wdGlvbnMob3B0aW9uczogQXJ0aWZhY3RzT3B0aW9ucyk6IHtcbiAgICBjd2Q6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAgICovXG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICBvdXRwdXREaXI6IHN0cmluZztcbiAgICBucG1EaXI6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIHRoZSBidWlsZCBvdXRwdXQgZGlyLCBvbmx5IG5lZWRlZCB3aGVuIHRhcmdldHMgY29udGFpbnMgYHdhc20zMi13YXNpLSpgXG4gICAgICovXG4gICAgYnVpbGRPdXRwdXREaXI/OiBzdHJpbmc7XG59O1xuIiwiaW1wb3J0IHsgdHlwZSBBcnRpZmFjdHNPcHRpb25zIH0gZnJvbSAnLi4vZGVmL2FydGlmYWN0cy5qcyc7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjb2xsZWN0QXJ0aWZhY3RzKHVzZXJPcHRpb25zOiBBcnRpZmFjdHNPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiIsImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjbGlwYW5pb24nO1xuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgQmFzZUJ1aWxkQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAgIHN0YXRpYyBwYXRoczogc3RyaW5nW11bXTtcbiAgICBzdGF0aWMgdXNhZ2U6IGltcG9ydChcImNsaXBhbmlvblwiKS5Vc2FnZTtcbiAgICB0YXJnZXQ/OiBzdHJpbmc7XG4gICAgY3dkPzogc3RyaW5nO1xuICAgIG1hbmlmZXN0UGF0aD86IHN0cmluZztcbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZztcbiAgICB0YXJnZXREaXI/OiBzdHJpbmc7XG4gICAgb3V0cHV0RGlyPzogc3RyaW5nO1xuICAgIHBsYXRmb3JtPzogYm9vbGVhbjtcbiAgICBqc1BhY2thZ2VOYW1lPzogc3RyaW5nO1xuICAgIGNvbnN0RW51bT86IGJvb2xlYW47XG4gICAganNCaW5kaW5nPzogc3RyaW5nO1xuICAgIG5vSnNCaW5kaW5nPzogYm9vbGVhbjtcbiAgICBkdHM/OiBzdHJpbmc7XG4gICAgZHRzSGVhZGVyPzogc3RyaW5nO1xuICAgIG5vRHRzSGVhZGVyPzogYm9vbGVhbjtcbiAgICBkdHNDYWNoZTogYm9vbGVhbjtcbiAgICBlc20/OiBib29sZWFuO1xuICAgIHN0cmlwPzogYm9vbGVhbjtcbiAgICByZWxlYXNlPzogYm9vbGVhbjtcbiAgICB2ZXJib3NlPzogYm9vbGVhbjtcbiAgICBiaW4/OiBzdHJpbmc7XG4gICAgcGFja2FnZT86IHN0cmluZztcbiAgICBwcm9maWxlPzogc3RyaW5nO1xuICAgIGNyb3NzQ29tcGlsZT86IGJvb2xlYW47XG4gICAgdXNlQ3Jvc3M/OiBib29sZWFuO1xuICAgIHVzZU5hcGlDcm9zcz86IGJvb2xlYW47XG4gICAgd2F0Y2g/OiBib29sZWFuO1xuICAgIGZlYXR1cmVzPzogc3RyaW5nW107XG4gICAgYWxsRmVhdHVyZXM/OiBib29sZWFuO1xuICAgIG5vRGVmYXVsdEZlYXR1cmVzPzogYm9vbGVhbjtcbiAgICBnZXRPcHRpb25zKCk6IHtcbiAgICAgICAgdGFyZ2V0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGN3ZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBtYW5pZmVzdFBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uZmlnUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgdGFyZ2V0RGlyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIG91dHB1dERpcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBwbGF0Zm9ybTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAganNQYWNrYWdlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdEVudW06IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIGpzQmluZGluZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBub0pzQmluZGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgZHRzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGR0c0hlYWRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBub0R0c0hlYWRlcjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgZHRzQ2FjaGU6IGJvb2xlYW47XG4gICAgICAgIGVzbTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgc3RyaXA6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIHJlbGVhc2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIHZlcmJvc2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIGJpbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBwYWNrYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHByb2ZpbGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgY3Jvc3NDb21waWxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICB1c2VDcm9zczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgdXNlTmFwaUNyb3NzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICB3YXRjaDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgZmVhdHVyZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgICAgICBhbGxGZWF0dXJlczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgbm9EZWZhdWx0RmVhdHVyZXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgfTtcbn1cbi8qKlxuICogQnVpbGQgdGhlIE5BUEktUlMgcHJvamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogQnVpbGQgZm9yIHRoZSB0YXJnZXQgdHJpcGxlLCBieXBhc3NlZCB0byBgY2FyZ28gYnVpbGQgLS10YXJnZXRgXG4gICAgICovXG4gICAgdGFyZ2V0Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgICAqL1xuICAgIGN3ZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBDYXJnby50b21sYFxuICAgICAqL1xuICAgIG1hbmlmZXN0UGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAgICovXG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBwYWNrYWdlLmpzb25gXG4gICAgICovXG4gICAgcGFja2FnZUpzb25QYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIERpcmVjdG9yeSBmb3IgYWxsIGNyYXRlIGdlbmVyYXRlZCBhcnRpZmFjdHMsIHNlZSBgY2FyZ28gYnVpbGQgLS10YXJnZXQtZGlyYFxuICAgICAqL1xuICAgIHRhcmdldERpcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIHdoZXJlIGFsbCB0aGUgYnVpbHQgZmlsZXMgd291bGQgYmUgcHV0LiBEZWZhdWx0IHRvIHRoZSBjcmF0ZSBmb2xkZXJcbiAgICAgKi9cbiAgICBvdXRwdXREaXI/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQWRkIHBsYXRmb3JtIHRyaXBsZSB0byB0aGUgZ2VuZXJhdGVkIG5vZGVqcyBiaW5kaW5nIGZpbGUsIGVnOiBgW25hbWVdLmxpbnV4LXg2NC1nbnUubm9kZWBcbiAgICAgKi9cbiAgICBwbGF0Zm9ybT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUGFja2FnZSBuYW1lIGluIGdlbmVyYXRlZCBqcyBiaW5kaW5nIGZpbGUuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZ1xuICAgICAqL1xuICAgIGpzUGFja2FnZU5hbWU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBnZW5lcmF0ZSBjb25zdCBlbnVtIGZvciB0eXBlc2NyaXB0IGJpbmRpbmdzXG4gICAgICovXG4gICAgY29uc3RFbnVtPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBQYXRoIGFuZCBmaWxlbmFtZSBvZiBnZW5lcmF0ZWQgSlMgYmluZGluZyBmaWxlLiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcuIFJlbGF0aXZlIHRvIGAtLW91dHB1dC1kaXJgLlxuICAgICAqL1xuICAgIGpzQmluZGluZz86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGdlbmVyYXRpb24gSlMgYmluZGluZyBmaWxlLiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcuXG4gICAgICovXG4gICAgbm9Kc0JpbmRpbmc/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFBhdGggYW5kIGZpbGVuYW1lIG9mIGdlbmVyYXRlZCB0eXBlIGRlZiBmaWxlLiBSZWxhdGl2ZSB0byBgLS1vdXRwdXQtZGlyYFxuICAgICAqL1xuICAgIGR0cz86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBDdXN0b20gZmlsZSBoZWFkZXIgZm9yIGdlbmVyYXRlZCB0eXBlIGRlZiBmaWxlLiBPbmx5IHdvcmtzIHdoZW4gYHR5cGVkZWZgIGZlYXR1cmUgZW5hYmxlZC5cbiAgICAgKi9cbiAgICBkdHNIZWFkZXI/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBkZWZhdWx0IGZpbGUgaGVhZGVyIGZvciBnZW5lcmF0ZWQgdHlwZSBkZWYgZmlsZS4gT25seSB3b3JrcyB3aGVuIGB0eXBlZGVmYCBmZWF0dXJlIGVuYWJsZWQuXG4gICAgICovXG4gICAgbm9EdHNIZWFkZXI/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBkdHMgY2FjaGUsIGRlZmF1bHQgdG8gdHJ1ZVxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGR0c0NhY2hlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGVtaXQgYW4gRVNNIEpTIGJpbmRpbmcgZmlsZSBpbnN0ZWFkIG9mIENKUyBmb3JtYXQuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZy5cbiAgICAgKi9cbiAgICBlc20/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgc3RyaXAgdGhlIGxpYnJhcnkgdG8gYWNoaWV2ZSB0aGUgbWluaW11bSBmaWxlIHNpemVcbiAgICAgKi9cbiAgICBzdHJpcD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQnVpbGQgaW4gcmVsZWFzZSBtb2RlXG4gICAgICovXG4gICAgcmVsZWFzZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVmVyYm9zZWx5IGxvZyBidWlsZCBjb21tYW5kIHRyYWNlXG4gICAgICovXG4gICAgdmVyYm9zZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQnVpbGQgb25seSB0aGUgc3BlY2lmaWVkIGJpbmFyeVxuICAgICAqL1xuICAgIGJpbj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBCdWlsZCB0aGUgc3BlY2lmaWVkIGxpYnJhcnkgb3IgdGhlIG9uZSBhdCBjd2RcbiAgICAgKi9cbiAgICBwYWNrYWdlPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEJ1aWxkIGFydGlmYWN0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJvZmlsZVxuICAgICAqL1xuICAgIHByb2ZpbGU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogW2V4cGVyaW1lbnRhbF0gY3Jvc3MtY29tcGlsZSBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQgd2l0aCBgY2FyZ28teHdpbmAgb24gd2luZG93cyBhbmQgYGNhcmdvLXppZ2J1aWxkYCBvbiBvdGhlciBwbGF0Zm9ybVxuICAgICAqL1xuICAgIGNyb3NzQ29tcGlsZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogW2V4cGVyaW1lbnRhbF0gdXNlIFtjcm9zc10oaHR0cHM6Ly9naXRodWIuY29tL2Nyb3NzLXJzL2Nyb3NzKSBpbnN0ZWFkIG9mIGBjYXJnb2BcbiAgICAgKi9cbiAgICB1c2VDcm9zcz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogW2V4cGVyaW1lbnRhbF0gdXNlIEBuYXBpLXJzL2Nyb3NzLXRvb2xjaGFpbiB0byBjcm9zcy1jb21waWxlIExpbnV4IGFybS9hcm02NC94NjQgZ251IHRhcmdldHMuXG4gICAgICovXG4gICAgdXNlTmFwaUNyb3NzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiB3YXRjaCB0aGUgY3JhdGUgY2hhbmdlcyBhbmQgYnVpbGQgY29udGludW91c2x5IHdpdGggYGNhcmdvLXdhdGNoYCBjcmF0ZXNcbiAgICAgKi9cbiAgICB3YXRjaD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogU3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgZmVhdHVyZXMgdG8gYWN0aXZhdGVcbiAgICAgKi9cbiAgICBmZWF0dXJlcz86IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIEFjdGl2YXRlIGFsbCBhdmFpbGFibGUgZmVhdHVyZXNcbiAgICAgKi9cbiAgICBhbGxGZWF0dXJlcz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogRG8gbm90IGFjdGl2YXRlIHRoZSBgZGVmYXVsdGAgZmVhdHVyZVxuICAgICAqL1xuICAgIG5vRGVmYXVsdEZlYXR1cmVzPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGFwcGx5RGVmYXVsdEJ1aWxkT3B0aW9ucyhvcHRpb25zOiBCdWlsZE9wdGlvbnMpOiB7XG4gICAgLyoqXG4gICAgICogQnVpbGQgZm9yIHRoZSB0YXJnZXQgdHJpcGxlLCBieXBhc3NlZCB0byBgY2FyZ28gYnVpbGQgLS10YXJnZXRgXG4gICAgICovXG4gICAgdGFyZ2V0Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgICAqL1xuICAgIGN3ZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBDYXJnby50b21sYFxuICAgICAqL1xuICAgIG1hbmlmZXN0UGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAgICovXG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBwYWNrYWdlLmpzb25gXG4gICAgICovXG4gICAgcGFja2FnZUpzb25QYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIERpcmVjdG9yeSBmb3IgYWxsIGNyYXRlIGdlbmVyYXRlZCBhcnRpZmFjdHMsIHNlZSBgY2FyZ28gYnVpbGQgLS10YXJnZXQtZGlyYFxuICAgICAqL1xuICAgIHRhcmdldERpcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIHdoZXJlIGFsbCB0aGUgYnVpbHQgZmlsZXMgd291bGQgYmUgcHV0LiBEZWZhdWx0IHRvIHRoZSBjcmF0ZSBmb2xkZXJcbiAgICAgKi9cbiAgICBvdXRwdXREaXI/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQWRkIHBsYXRmb3JtIHRyaXBsZSB0byB0aGUgZ2VuZXJhdGVkIG5vZGVqcyBiaW5kaW5nIGZpbGUsIGVnOiBgW25hbWVdLmxpbnV4LXg2NC1nbnUubm9kZWBcbiAgICAgKi9cbiAgICBwbGF0Zm9ybT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUGFja2FnZSBuYW1lIGluIGdlbmVyYXRlZCBqcyBiaW5kaW5nIGZpbGUuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZ1xuICAgICAqL1xuICAgIGpzUGFja2FnZU5hbWU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBnZW5lcmF0ZSBjb25zdCBlbnVtIGZvciB0eXBlc2NyaXB0IGJpbmRpbmdzXG4gICAgICovXG4gICAgY29uc3RFbnVtPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBQYXRoIGFuZCBmaWxlbmFtZSBvZiBnZW5lcmF0ZWQgSlMgYmluZGluZyBmaWxlLiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcuIFJlbGF0aXZlIHRvIGAtLW91dHB1dC1kaXJgLlxuICAgICAqL1xuICAgIGpzQmluZGluZz86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGdlbmVyYXRpb24gSlMgYmluZGluZyBmaWxlLiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcuXG4gICAgICovXG4gICAgbm9Kc0JpbmRpbmc/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFBhdGggYW5kIGZpbGVuYW1lIG9mIGdlbmVyYXRlZCB0eXBlIGRlZiBmaWxlLiBSZWxhdGl2ZSB0byBgLS1vdXRwdXQtZGlyYFxuICAgICAqL1xuICAgIGR0cz86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBDdXN0b20gZmlsZSBoZWFkZXIgZm9yIGdlbmVyYXRlZCB0eXBlIGRlZiBmaWxlLiBPbmx5IHdvcmtzIHdoZW4gYHR5cGVkZWZgIGZlYXR1cmUgZW5hYmxlZC5cbiAgICAgKi9cbiAgICBkdHNIZWFkZXI/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBkZWZhdWx0IGZpbGUgaGVhZGVyIGZvciBnZW5lcmF0ZWQgdHlwZSBkZWYgZmlsZS4gT25seSB3b3JrcyB3aGVuIGB0eXBlZGVmYCBmZWF0dXJlIGVuYWJsZWQuXG4gICAgICovXG4gICAgbm9EdHNIZWFkZXI/OiBib29sZWFuO1xuICAgIGR0c0NhY2hlOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZW1pdCBhbiBFU00gSlMgYmluZGluZyBmaWxlIGluc3RlYWQgb2YgQ0pTIGZvcm1hdC4gT25seSB3b3JrcyB3aXRoIGAtLXBsYXRmb3JtYCBmbGFnLlxuICAgICAqL1xuICAgIGVzbT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogV2hldGhlciBzdHJpcCB0aGUgbGlicmFyeSB0byBhY2hpZXZlIHRoZSBtaW5pbXVtIGZpbGUgc2l6ZVxuICAgICAqL1xuICAgIHN0cmlwPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBCdWlsZCBpbiByZWxlYXNlIG1vZGVcbiAgICAgKi9cbiAgICByZWxlYXNlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBWZXJib3NlbHkgbG9nIGJ1aWxkIGNvbW1hbmQgdHJhY2VcbiAgICAgKi9cbiAgICB2ZXJib3NlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBCdWlsZCBvbmx5IHRoZSBzcGVjaWZpZWQgYmluYXJ5XG4gICAgICovXG4gICAgYmluPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEJ1aWxkIHRoZSBzcGVjaWZpZWQgbGlicmFyeSBvciB0aGUgb25lIGF0IGN3ZFxuICAgICAqL1xuICAgIHBhY2thZ2U/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQnVpbGQgYXJ0aWZhY3RzIHdpdGggdGhlIHNwZWNpZmllZCBwcm9maWxlXG4gICAgICovXG4gICAgcHJvZmlsZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBbZXhwZXJpbWVudGFsXSBjcm9zcy1jb21waWxlIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCB3aXRoIGBjYXJnby14d2luYCBvbiB3aW5kb3dzIGFuZCBgY2FyZ28temlnYnVpbGRgIG9uIG90aGVyIHBsYXRmb3JtXG4gICAgICovXG4gICAgY3Jvc3NDb21waWxlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBbZXhwZXJpbWVudGFsXSB1c2UgW2Nyb3NzXShodHRwczovL2dpdGh1Yi5jb20vY3Jvc3MtcnMvY3Jvc3MpIGluc3RlYWQgb2YgYGNhcmdvYFxuICAgICAqL1xuICAgIHVzZUNyb3NzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBbZXhwZXJpbWVudGFsXSB1c2UgQG5hcGktcnMvY3Jvc3MtdG9vbGNoYWluIHRvIGNyb3NzLWNvbXBpbGUgTGludXggYXJtL2FybTY0L3g2NCBnbnUgdGFyZ2V0cy5cbiAgICAgKi9cbiAgICB1c2VOYXBpQ3Jvc3M/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIHdhdGNoIHRoZSBjcmF0ZSBjaGFuZ2VzIGFuZCBidWlsZCBjb250aW51b3VzbHkgd2l0aCBgY2FyZ28td2F0Y2hgIGNyYXRlc1xuICAgICAqL1xuICAgIHdhdGNoPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBTcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBmZWF0dXJlcyB0byBhY3RpdmF0ZVxuICAgICAqL1xuICAgIGZlYXR1cmVzPzogc3RyaW5nW107XG4gICAgLyoqXG4gICAgICogQWN0aXZhdGUgYWxsIGF2YWlsYWJsZSBmZWF0dXJlc1xuICAgICAqL1xuICAgIGFsbEZlYXR1cmVzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBEbyBub3QgYWN0aXZhdGUgdGhlIGBkZWZhdWx0YCBmZWF0dXJlXG4gICAgICovXG4gICAgbm9EZWZhdWx0RmVhdHVyZXM/OiBib29sZWFuO1xufTtcbiIsImltcG9ydCB0eXBlIHsgQnVpbGRPcHRpb25zIGFzIFJhd0J1aWxkT3B0aW9ucyB9IGZyb20gJy4uL2RlZi9idWlsZC5qcyc7XG50eXBlIE91dHB1dEtpbmQgPSAnanMnIHwgJ2R0cycgfCAnbm9kZScgfCAnZXhlJyB8ICd3YXNtJztcbnR5cGUgT3V0cHV0ID0ge1xuICAgIGtpbmQ6IE91dHB1dEtpbmQ7XG4gICAgcGF0aDogc3RyaW5nO1xufTtcbnR5cGUgQnVpbGRPcHRpb25zID0gUmF3QnVpbGRPcHRpb25zICYge1xuICAgIGNhcmdvT3B0aW9ucz86IHN0cmluZ1tdO1xufTtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGJ1aWxkUHJvamVjdChyYXdPcHRpb25zOiBCdWlsZE9wdGlvbnMpOiBQcm9taXNlPHtcbiAgICB0YXNrOiBQcm9taXNlPE91dHB1dFtdPjtcbiAgICBhYm9ydDogKCkgPT4gdm9pZDtcbn0+O1xuZXhwb3J0IGludGVyZmFjZSBXcml0ZUpzQmluZGluZ09wdGlvbnMge1xuICAgIHBsYXRmb3JtPzogYm9vbGVhbjtcbiAgICBub0pzQmluZGluZz86IGJvb2xlYW47XG4gICAgaWRlbnRzOiBzdHJpbmdbXTtcbiAgICBqc0JpbmRpbmc/OiBzdHJpbmc7XG4gICAgZXNtPzogYm9vbGVhbjtcbiAgICBiaW5hcnlOYW1lOiBzdHJpbmc7XG4gICAgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgb3V0cHV0RGlyOiBzdHJpbmc7XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB3cml0ZUpzQmluZGluZyhvcHRpb25zOiBXcml0ZUpzQmluZGluZ09wdGlvbnMpOiBQcm9taXNlPE91dHB1dCB8IHVuZGVmaW5lZD47XG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlVHlwZURlZk9wdGlvbnMge1xuICAgIHR5cGVEZWZEaXI6IHN0cmluZztcbiAgICBub0R0c0hlYWRlcj86IGJvb2xlYW47XG4gICAgZHRzSGVhZGVyPzogc3RyaW5nO1xuICAgIGR0c0hlYWRlckZpbGU/OiBzdHJpbmc7XG4gICAgY29uZmlnRHRzSGVhZGVyPzogc3RyaW5nO1xuICAgIGNvbmZpZ0R0c0hlYWRlckZpbGU/OiBzdHJpbmc7XG4gICAgY29uc3RFbnVtPzogYm9vbGVhbjtcbiAgICBjd2Q6IHN0cmluZztcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGdlbmVyYXRlVHlwZURlZihvcHRpb25zOiBHZW5lcmF0ZVR5cGVEZWZPcHRpb25zKTogUHJvbWlzZTx7XG4gICAgZXhwb3J0czogc3RyaW5nW107XG4gICAgZHRzOiBzdHJpbmc7XG59PjtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjbGlwYW5pb24nO1xuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgQmFzZUNyZWF0ZU5wbURpcnNDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gICAgc3RhdGljIHBhdGhzOiBzdHJpbmdbXVtdO1xuICAgIHN0YXRpYyB1c2FnZTogaW1wb3J0KFwiY2xpcGFuaW9uXCIpLlVzYWdlO1xuICAgIGN3ZDogc3RyaW5nO1xuICAgIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gICAgcGFja2FnZUpzb25QYXRoOiBzdHJpbmc7XG4gICAgbnBtRGlyOiBzdHJpbmc7XG4gICAgZHJ5UnVuOiBib29sZWFuO1xuICAgIGdldE9wdGlvbnMoKToge1xuICAgICAgICBjd2Q6IHN0cmluZztcbiAgICAgICAgY29uZmlnUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICAgICAgbnBtRGlyOiBzdHJpbmc7XG4gICAgICAgIGRyeVJ1bjogYm9vbGVhbjtcbiAgICB9O1xufVxuLyoqXG4gKiBDcmVhdGUgbnBtIHBhY2thZ2UgZGlycyBmb3IgZGlmZmVyZW50IHBsYXRmb3Jtc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU5wbURpcnNPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGhcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IHByb2Nlc3MuY3dkKClcbiAgICAgKi9cbiAgICBjd2Q/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byBgbmFwaWAgY29uZmlnIGpzb24gZmlsZVxuICAgICAqL1xuICAgIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byBgcGFja2FnZS5qc29uYFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICAgKi9cbiAgICBwYWNrYWdlSnNvblBhdGg/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBucG0gcGFja2FnZXMgcHV0XG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnbnBtJ1xuICAgICAqL1xuICAgIG5wbURpcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBEcnkgcnVuIHdpdGhvdXQgdG91Y2hpbmcgZmlsZSBzeXN0ZW1cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgZHJ5UnVuPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGFwcGx5RGVmYXVsdENyZWF0ZU5wbURpcnNPcHRpb25zKG9wdGlvbnM6IENyZWF0ZU5wbURpcnNPcHRpb25zKToge1xuICAgIGN3ZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICAgKi9cbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIHBhY2thZ2VKc29uUGF0aDogc3RyaW5nO1xuICAgIG5wbURpcjogc3RyaW5nO1xuICAgIGRyeVJ1bjogYm9vbGVhbjtcbn07XG4iLCJpbXBvcnQgeyB0eXBlIENyZWF0ZU5wbURpcnNPcHRpb25zIH0gZnJvbSAnLi4vZGVmL2NyZWF0ZS1ucG0tZGlycy5qcyc7XG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VNZXRhIHtcbiAgICAnZGlzdC10YWdzJzoge1xuICAgICAgICBbaW5kZXg6IHN0cmluZ106IHN0cmluZztcbiAgICB9O1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlTnBtRGlycyh1c2VyT3B0aW9uczogQ3JlYXRlTnBtRGlyc09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuIiwiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NsaXBhbmlvbic7XG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBCYXNlTmV3Q29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAgIHN0YXRpYyBwYXRoczogc3RyaW5nW11bXTtcbiAgICBzdGF0aWMgdXNhZ2U6IGltcG9ydChcImNsaXBhbmlvblwiKS5Vc2FnZTtcbiAgICAkJHBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAkJG5hbWU/OiBzdHJpbmc7XG4gICAgbWluTm9kZUFwaVZlcnNpb246IG51bWJlcjtcbiAgICBwYWNrYWdlTWFuYWdlcjogc3RyaW5nO1xuICAgIGxpY2Vuc2U6IHN0cmluZztcbiAgICB0YXJnZXRzOiBzdHJpbmdbXTtcbiAgICBlbmFibGVEZWZhdWx0VGFyZ2V0czogYm9vbGVhbjtcbiAgICBlbmFibGVBbGxUYXJnZXRzOiBib29sZWFuO1xuICAgIGVuYWJsZVR5cGVEZWY6IGJvb2xlYW47XG4gICAgZW5hYmxlR2l0aHViQWN0aW9uczogYm9vbGVhbjtcbiAgICB0ZXN0RnJhbWV3b3JrOiBzdHJpbmc7XG4gICAgZHJ5UnVuOiBib29sZWFuO1xuICAgIGdldE9wdGlvbnMoKToge1xuICAgICAgICBwYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgbWluTm9kZUFwaVZlcnNpb246IG51bWJlcjtcbiAgICAgICAgcGFja2FnZU1hbmFnZXI6IHN0cmluZztcbiAgICAgICAgbGljZW5zZTogc3RyaW5nO1xuICAgICAgICB0YXJnZXRzOiBzdHJpbmdbXTtcbiAgICAgICAgZW5hYmxlRGVmYXVsdFRhcmdldHM6IGJvb2xlYW47XG4gICAgICAgIGVuYWJsZUFsbFRhcmdldHM6IGJvb2xlYW47XG4gICAgICAgIGVuYWJsZVR5cGVEZWY6IGJvb2xlYW47XG4gICAgICAgIGVuYWJsZUdpdGh1YkFjdGlvbnM6IGJvb2xlYW47XG4gICAgICAgIHRlc3RGcmFtZXdvcms6IHN0cmluZztcbiAgICAgICAgZHJ5UnVuOiBib29sZWFuO1xuICAgIH07XG59XG4vKipcbiAqIENyZWF0ZSBhIG5ldyBwcm9qZWN0IHdpdGggcHJlLWNvbmZpZ3VyZWQgYm9pbGVycGxhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXdPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBUaGUgcGF0aCB3aGVyZSB0aGUgTkFQSS1SUyBwcm9qZWN0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBwYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0LCBkZWZhdWx0IHRvIHRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgaWYgbm90IHByb3ZpZGVkXG4gICAgICovXG4gICAgbmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgbWluaW11bSBOb2RlLUFQSSB2ZXJzaW9uIHRvIHN1cHBvcnRcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IDRcbiAgICAgKi9cbiAgICBtaW5Ob2RlQXBpVmVyc2lvbj86IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBUaGUgcGFja2FnZSBtYW5hZ2VyIHRvIHVzZS4gT25seSBzdXBwb3J0IHlhcm4gNC54IGZvciBub3cuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAneWFybidcbiAgICAgKi9cbiAgICBwYWNrYWdlTWFuYWdlcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBMaWNlbnNlIGZvciBvcGVuLXNvdXJjZWQgcHJvamVjdFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ01JVCdcbiAgICAgKi9cbiAgICBsaWNlbnNlPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEFsbCB0YXJnZXRzIHRoZSBjcmF0ZSB3aWxsIGJlIGNvbXBpbGVkIGZvci5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFtdXG4gICAgICovXG4gICAgdGFyZ2V0cz86IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZW5hYmxlIGRlZmF1bHQgdGFyZ2V0c1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZURlZmF1bHRUYXJnZXRzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGVuYWJsZSBhbGwgdGFyZ2V0c1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBlbmFibGVBbGxUYXJnZXRzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGVuYWJsZSB0aGUgYHR5cGUtZGVmYCBmZWF0dXJlIGZvciB0eXBlc2NyaXB0IGRlZmluaXRpb25zIGF1dG8tZ2VuZXJhdGlvblxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZVR5cGVEZWY/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZ2VuZXJhdGUgcHJlY29uZmlndXJlZCBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvd1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZUdpdGh1YkFjdGlvbnM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoZSBKYXZhU2NyaXB0IHRlc3QgZnJhbWV3b3JrIHRvIHVzZSwgb25seSBzdXBwb3J0IGBhdmFgIGZvciBub3dcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdhdmEnXG4gICAgICovXG4gICAgdGVzdEZyYW1ld29yaz86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHJ1biB0aGUgY29tbWFuZCBpbiBkcnktcnVuIG1vZGVcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgZHJ5UnVuPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGFwcGx5RGVmYXVsdE5ld09wdGlvbnMob3B0aW9uczogTmV3T3B0aW9ucyk6IHtcbiAgICAvKipcbiAgICAgKiBUaGUgcGF0aCB3aGVyZSB0aGUgTkFQSS1SUyBwcm9qZWN0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBwYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0LCBkZWZhdWx0IHRvIHRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgaWYgbm90IHByb3ZpZGVkXG4gICAgICovXG4gICAgbmFtZT86IHN0cmluZztcbiAgICBtaW5Ob2RlQXBpVmVyc2lvbjogbnVtYmVyO1xuICAgIHBhY2thZ2VNYW5hZ2VyOiBzdHJpbmc7XG4gICAgbGljZW5zZTogc3RyaW5nO1xuICAgIHRhcmdldHM6IHN0cmluZ1tdO1xuICAgIGVuYWJsZURlZmF1bHRUYXJnZXRzOiBib29sZWFuO1xuICAgIGVuYWJsZUFsbFRhcmdldHM6IGJvb2xlYW47XG4gICAgZW5hYmxlVHlwZURlZjogYm9vbGVhbjtcbiAgICBlbmFibGVHaXRodWJBY3Rpb25zOiBib29sZWFuO1xuICAgIHRlc3RGcmFtZXdvcms6IHN0cmluZztcbiAgICBkcnlSdW46IGJvb2xlYW47XG59O1xuIiwiaW1wb3J0IHsgdHlwZSBOZXdPcHRpb25zIGFzIFJhd05ld09wdGlvbnMgfSBmcm9tICcuLi9kZWYvbmV3LmpzJztcbnR5cGUgTmV3T3B0aW9ucyA9IFJlcXVpcmVkPFJhd05ld09wdGlvbnM+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gbmV3UHJvamVjdCh1c2VyT3B0aW9uczogUmF3TmV3T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG5leHBvcnQgdHlwZSB7IE5ld09wdGlvbnMgfTtcbiIsImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjbGlwYW5pb24nO1xuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgQmFzZVByZVB1Ymxpc2hDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gICAgc3RhdGljIHBhdGhzOiBzdHJpbmdbXVtdO1xuICAgIHN0YXRpYyB1c2FnZTogaW1wb3J0KFwiY2xpcGFuaW9uXCIpLlVzYWdlO1xuICAgIGN3ZDogc3RyaW5nO1xuICAgIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gICAgcGFja2FnZUpzb25QYXRoOiBzdHJpbmc7XG4gICAgbnBtRGlyOiBzdHJpbmc7XG4gICAgdGFnU3R5bGU6IHN0cmluZztcbiAgICBnaFJlbGVhc2U6IGJvb2xlYW47XG4gICAgZ2hSZWxlYXNlTmFtZT86IHN0cmluZztcbiAgICBnaFJlbGVhc2VJZD86IHN0cmluZztcbiAgICBza2lwT3B0aW9uYWxQdWJsaXNoOiBib29sZWFuO1xuICAgIGRyeVJ1bjogYm9vbGVhbjtcbiAgICBnZXRPcHRpb25zKCk6IHtcbiAgICAgICAgY3dkOiBzdHJpbmc7XG4gICAgICAgIGNvbmZpZ1BhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgcGFja2FnZUpzb25QYXRoOiBzdHJpbmc7XG4gICAgICAgIG5wbURpcjogc3RyaW5nO1xuICAgICAgICB0YWdTdHlsZTogc3RyaW5nO1xuICAgICAgICBnaFJlbGVhc2U6IGJvb2xlYW47XG4gICAgICAgIGdoUmVsZWFzZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgZ2hSZWxlYXNlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgc2tpcE9wdGlvbmFsUHVibGlzaDogYm9vbGVhbjtcbiAgICAgICAgZHJ5UnVuOiBib29sZWFuO1xuICAgIH07XG59XG4vKipcbiAqIFVwZGF0ZSBwYWNrYWdlLmpzb24gYW5kIGNvcHkgYWRkb25zIGludG8gcGVyIHBsYXRmb3JtIHBhY2thZ2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlUHVibGlzaE9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgcHJvY2Vzcy5jd2QoKVxuICAgICAqL1xuICAgIGN3ZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAgICovXG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBwYWNrYWdlLmpzb25gXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAncGFja2FnZS5qc29uJ1xuICAgICAqL1xuICAgIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIG5wbSBwYWNrYWdlcyBwdXRcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICducG0nXG4gICAgICovXG4gICAgbnBtRGlyPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIGdpdCB0YWcgc3R5bGUsIGBucG1gIG9yIGBsZXJuYWBcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdsZXJuYSdcbiAgICAgKi9cbiAgICB0YWdTdHlsZT86ICducG0nIHwgJ2xlcm5hJztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGNyZWF0ZSBHaXRIdWIgcmVsZWFzZVxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGdoUmVsZWFzZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogR2l0SHViIHJlbGVhc2UgbmFtZVxuICAgICAqL1xuICAgIGdoUmVsZWFzZU5hbWU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogRXhpc3RpbmcgR2l0SHViIHJlbGVhc2UgaWRcbiAgICAgKi9cbiAgICBnaFJlbGVhc2VJZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHNraXAgb3B0aW9uYWxEZXBlbmRlbmNpZXMgcGFja2FnZXMgcHVibGlzaFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBza2lwT3B0aW9uYWxQdWJsaXNoPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBEcnkgcnVuIHdpdGhvdXQgdG91Y2hpbmcgZmlsZSBzeXN0ZW1cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgZHJ5UnVuPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGFwcGx5RGVmYXVsdFByZVB1Ymxpc2hPcHRpb25zKG9wdGlvbnM6IFByZVB1Ymxpc2hPcHRpb25zKToge1xuICAgIGN3ZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICAgKi9cbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIHBhY2thZ2VKc29uUGF0aDogc3RyaW5nO1xuICAgIG5wbURpcjogc3RyaW5nO1xuICAgIHRhZ1N0eWxlOiBzdHJpbmc7XG4gICAgZ2hSZWxlYXNlOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEdpdEh1YiByZWxlYXNlIG5hbWVcbiAgICAgKi9cbiAgICBnaFJlbGVhc2VOYW1lPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEV4aXN0aW5nIEdpdEh1YiByZWxlYXNlIGlkXG4gICAgICovXG4gICAgZ2hSZWxlYXNlSWQ/OiBzdHJpbmc7XG4gICAgc2tpcE9wdGlvbmFsUHVibGlzaDogYm9vbGVhbjtcbiAgICBkcnlSdW46IGJvb2xlYW47XG59O1xuIiwiaW1wb3J0IHsgdHlwZSBQcmVQdWJsaXNoT3B0aW9ucyB9IGZyb20gJy4uL2RlZi9wcmUtcHVibGlzaC5qcyc7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBwcmVQdWJsaXNoKHVzZXJPcHRpb25zOiBQcmVQdWJsaXNoT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4iLCJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY2xpcGFuaW9uJztcbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIEJhc2VSZW5hbWVDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gICAgc3RhdGljIHBhdGhzOiBzdHJpbmdbXVtdO1xuICAgIHN0YXRpYyB1c2FnZTogaW1wb3J0KFwiY2xpcGFuaW9uXCIpLlVzYWdlO1xuICAgIGN3ZDogc3RyaW5nO1xuICAgIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gICAgcGFja2FnZUpzb25QYXRoOiBzdHJpbmc7XG4gICAgbnBtRGlyOiBzdHJpbmc7XG4gICAgJCRuYW1lPzogc3RyaW5nO1xuICAgIGJpbmFyeU5hbWU/OiBzdHJpbmc7XG4gICAgcGFja2FnZU5hbWU/OiBzdHJpbmc7XG4gICAgbWFuaWZlc3RQYXRoOiBzdHJpbmc7XG4gICAgcmVwb3NpdG9yeT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBnZXRPcHRpb25zKCk6IHtcbiAgICAgICAgY3dkOiBzdHJpbmc7XG4gICAgICAgIGNvbmZpZ1BhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgcGFja2FnZUpzb25QYXRoOiBzdHJpbmc7XG4gICAgICAgIG5wbURpcjogc3RyaW5nO1xuICAgICAgICBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGJpbmFyeU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgcGFja2FnZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgbWFuaWZlc3RQYXRoOiBzdHJpbmc7XG4gICAgICAgIHJlcG9zaXRvcnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB9O1xufVxuLyoqXG4gKiBSZW5hbWUgdGhlIE5BUEktUlMgcHJvamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmFtZU9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgcHJvY2Vzcy5jd2QoKVxuICAgICAqL1xuICAgIGN3ZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAgICovXG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBwYWNrYWdlLmpzb25gXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAncGFja2FnZS5qc29uJ1xuICAgICAqL1xuICAgIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIG5wbSBwYWNrYWdlcyBwdXRcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICducG0nXG4gICAgICovXG4gICAgbnBtRGlyPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBuZXcgbmFtZSBvZiB0aGUgcHJvamVjdFxuICAgICAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIG5ldyBiaW5hcnkgbmFtZSAqLm5vZGUgZmlsZXNcbiAgICAgKi9cbiAgICBiaW5hcnlOYW1lPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBuZXcgcGFja2FnZSBuYW1lIG9mIHRoZSBwcm9qZWN0XG4gICAgICovXG4gICAgcGFja2FnZU5hbWU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byBgQ2FyZ28udG9tbGBcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdDYXJnby50b21sJ1xuICAgICAqL1xuICAgIG1hbmlmZXN0UGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgbmV3IHJlcG9zaXRvcnkgb2YgdGhlIHByb2plY3RcbiAgICAgKi9cbiAgICByZXBvc2l0b3J5Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBuZXcgZGVzY3JpcHRpb24gb2YgdGhlIHByb2plY3RcbiAgICAgKi9cbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGFwcGx5RGVmYXVsdFJlbmFtZU9wdGlvbnMob3B0aW9uczogUmVuYW1lT3B0aW9ucyk6IHtcbiAgICBjd2Q6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAgICovXG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICBucG1EaXI6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgbmV3IG5hbWUgb2YgdGhlIHByb2plY3RcbiAgICAgKi9cbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBuZXcgYmluYXJ5IG5hbWUgKi5ub2RlIGZpbGVzXG4gICAgICovXG4gICAgYmluYXJ5TmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgbmV3IHBhY2thZ2UgbmFtZSBvZiB0aGUgcHJvamVjdFxuICAgICAqL1xuICAgIHBhY2thZ2VOYW1lPzogc3RyaW5nO1xuICAgIG1hbmlmZXN0UGF0aDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBuZXcgcmVwb3NpdG9yeSBvZiB0aGUgcHJvamVjdFxuICAgICAqL1xuICAgIHJlcG9zaXRvcnk/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIG5ldyBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvamVjdFxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufTtcbiIsImltcG9ydCB7IHR5cGUgUmVuYW1lT3B0aW9ucyB9IGZyb20gJy4uL2RlZi9yZW5hbWUuanMnO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gcmVuYW1lUHJvamVjdCh1c2VyT3B0aW9uczogUmVuYW1lT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4iLCJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY2xpcGFuaW9uJztcbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIEJhc2VVbml2ZXJzYWxpemVDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gICAgc3RhdGljIHBhdGhzOiBzdHJpbmdbXVtdO1xuICAgIHN0YXRpYyB1c2FnZTogaW1wb3J0KFwiY2xpcGFuaW9uXCIpLlVzYWdlO1xuICAgIGN3ZDogc3RyaW5nO1xuICAgIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gICAgcGFja2FnZUpzb25QYXRoOiBzdHJpbmc7XG4gICAgb3V0cHV0RGlyOiBzdHJpbmc7XG4gICAgZ2V0T3B0aW9ucygpOiB7XG4gICAgICAgIGN3ZDogc3RyaW5nO1xuICAgICAgICBjb25maWdQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHBhY2thZ2VKc29uUGF0aDogc3RyaW5nO1xuICAgICAgICBvdXRwdXREaXI6IHN0cmluZztcbiAgICB9O1xufVxuLyoqXG4gKiBDb21iaWxlIGJ1aWx0IGJpbmFyaWVzIGludG8gb25lIHVuaXZlcnNhbCBiaW5hcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbml2ZXJzYWxpemVPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGhcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IHByb2Nlc3MuY3dkKClcbiAgICAgKi9cbiAgICBjd2Q/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byBgbmFwaWAgY29uZmlnIGpzb24gZmlsZVxuICAgICAqL1xuICAgIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byBgcGFja2FnZS5qc29uYFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICAgKi9cbiAgICBwYWNrYWdlSnNvblBhdGg/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIGFsbCBidWlsdCBgLm5vZGVgIGZpbGVzIHB1dCwgc2FtZSBhcyBgLS1vdXRwdXQtZGlyYCBvZiBidWlsZCBjb21tYW5kXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnLi8nXG4gICAgICovXG4gICAgb3V0cHV0RGlyPzogc3RyaW5nO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYXBwbHlEZWZhdWx0VW5pdmVyc2FsaXplT3B0aW9ucyhvcHRpb25zOiBVbml2ZXJzYWxpemVPcHRpb25zKToge1xuICAgIGN3ZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICAgKi9cbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIHBhY2thZ2VKc29uUGF0aDogc3RyaW5nO1xuICAgIG91dHB1dERpcjogc3RyaW5nO1xufTtcbiIsImltcG9ydCB7IHR5cGUgVW5pdmVyc2FsaXplT3B0aW9ucyB9IGZyb20gJy4uL2RlZi91bml2ZXJzYWxpemUuanMnO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdW5pdmVyc2FsaXplQmluYXJpZXModXNlck9wdGlvbnM6IFVuaXZlcnNhbGl6ZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuIiwiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NsaXBhbmlvbic7XG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBCYXNlVmVyc2lvbkNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgICBzdGF0aWMgcGF0aHM6IHN0cmluZ1tdW107XG4gICAgc3RhdGljIHVzYWdlOiBpbXBvcnQoXCJjbGlwYW5pb25cIikuVXNhZ2U7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICBucG1EaXI6IHN0cmluZztcbiAgICBnZXRPcHRpb25zKCk6IHtcbiAgICAgICAgY3dkOiBzdHJpbmc7XG4gICAgICAgIGNvbmZpZ1BhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgcGFja2FnZUpzb25QYXRoOiBzdHJpbmc7XG4gICAgICAgIG5wbURpcjogc3RyaW5nO1xuICAgIH07XG59XG4vKipcbiAqIFVwZGF0ZSB2ZXJzaW9uIGluIGNyZWF0ZWQgbnBtIHBhY2thZ2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbk9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgcHJvY2Vzcy5jd2QoKVxuICAgICAqL1xuICAgIGN3ZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAgICovXG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBwYWNrYWdlLmpzb25gXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAncGFja2FnZS5qc29uJ1xuICAgICAqL1xuICAgIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIG5wbSBwYWNrYWdlcyBwdXRcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICducG0nXG4gICAgICovXG4gICAgbnBtRGlyPzogc3RyaW5nO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYXBwbHlEZWZhdWx0VmVyc2lvbk9wdGlvbnMob3B0aW9uczogVmVyc2lvbk9wdGlvbnMpOiB7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byBgbmFwaWAgY29uZmlnIGpzb24gZmlsZVxuICAgICAqL1xuICAgIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gICAgcGFja2FnZUpzb25QYXRoOiBzdHJpbmc7XG4gICAgbnBtRGlyOiBzdHJpbmc7XG59O1xuIiwiaW1wb3J0IHsgdHlwZSBWZXJzaW9uT3B0aW9ucyB9IGZyb20gJy4uL2RlZi92ZXJzaW9uLmpzJztcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHZlcnNpb24odXNlck9wdGlvbnM6IFZlcnNpb25PcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiIsImltcG9ydCB7IEJhc2VBcnRpZmFjdHNDb21tYW5kIH0gZnJvbSAnLi4vZGVmL2FydGlmYWN0cy5qcyc7XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBBcnRpZmFjdHNDb21tYW5kIGV4dGVuZHMgQmFzZUFydGlmYWN0c0NvbW1hbmQge1xuICAgIHN0YXRpYyB1c2FnZTogaW1wb3J0KFwiY2xpcGFuaW9uXCIpLlVzYWdlO1xuICAgIHN0YXRpYyBwYXRoczogc3RyaW5nW11bXTtcbiAgICBleGVjdXRlKCk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgeyBCYXNlQnVpbGRDb21tYW5kIH0gZnJvbSAnLi4vZGVmL2J1aWxkLmpzJztcbmV4cG9ydCBkZWNsYXJlIGNsYXNzIEJ1aWxkQ29tbWFuZCBleHRlbmRzIEJhc2VCdWlsZENvbW1hbmQge1xuICAgIHBpcGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjYXJnb09wdGlvbnM6IHN0cmluZ1tdO1xuICAgIGV4ZWN1dGUoKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCB7IEJhc2VDcmVhdGVOcG1EaXJzQ29tbWFuZCB9IGZyb20gJy4uL2RlZi9jcmVhdGUtbnBtLWRpcnMuanMnO1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgQ3JlYXRlTnBtRGlyc0NvbW1hbmQgZXh0ZW5kcyBCYXNlQ3JlYXRlTnBtRGlyc0NvbW1hbmQge1xuICAgIGV4ZWN1dGUoKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCB7IEJhc2VOZXdDb21tYW5kIH0gZnJvbSAnLi4vZGVmL25ldy5qcyc7XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBOZXdDb21tYW5kIGV4dGVuZHMgQmFzZU5ld0NvbW1hbmQge1xuICAgIGludGVyYWN0aXZlOiBib29sZWFuO1xuICAgIGV4ZWN1dGUoKTogUHJvbWlzZTwwIHwgMT47XG4gICAgcHJpdmF0ZSBmZXRjaE9wdGlvbnM7XG4gICAgcHJpdmF0ZSBmZXRjaE5hbWU7XG4gICAgcHJpdmF0ZSBmZXRjaExpY2Vuc2U7XG4gICAgcHJpdmF0ZSBmZXRjaE5hcGlWZXJzaW9uO1xuICAgIHByaXZhdGUgZmV0Y2hUYXJnZXRzO1xuICAgIHByaXZhdGUgZmV0Y2hUeXBlRGVmO1xuICAgIHByaXZhdGUgZmV0Y2hHaXRodWJBY3Rpb25zO1xufVxuIiwiaW1wb3J0IHsgQmFzZVByZVB1Ymxpc2hDb21tYW5kIH0gZnJvbSAnLi4vZGVmL3ByZS1wdWJsaXNoLmpzJztcbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFByZVB1Ymxpc2hDb21tYW5kIGV4dGVuZHMgQmFzZVByZVB1Ymxpc2hDb21tYW5kIHtcbiAgICBleGVjdXRlKCk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgeyBCYXNlUmVuYW1lQ29tbWFuZCB9IGZyb20gJy4uL2RlZi9yZW5hbWUuanMnO1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgUmVuYW1lQ29tbWFuZCBleHRlbmRzIEJhc2VSZW5hbWVDb21tYW5kIHtcbiAgICBleGVjdXRlKCk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgeyBCYXNlVW5pdmVyc2FsaXplQ29tbWFuZCB9IGZyb20gJy4uL2RlZi91bml2ZXJzYWxpemUuanMnO1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgVW5pdmVyc2FsaXplQ29tbWFuZCBleHRlbmRzIEJhc2VVbml2ZXJzYWxpemVDb21tYW5kIHtcbiAgICBleGVjdXRlKCk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgeyBCYXNlVmVyc2lvbkNvbW1hbmQgfSBmcm9tICcuLi9kZWYvdmVyc2lvbi5qcyc7XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBWZXJzaW9uQ29tbWFuZCBleHRlbmRzIEJhc2VWZXJzaW9uQ29tbWFuZCB7XG4gICAgZXhlY3V0ZSgpOiBQcm9taXNlPHZvaWQ+O1xufVxuIiwiZXhwb3J0IHR5cGUgUGxhdGZvcm0gPSBOb2RlSlMuUGxhdGZvcm0gfCAnd2FzbScgfCAnd2FzaScgfCAnb3Blbmhhcm1vbnknO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgVU5JVkVSU0FMX1RBUkdFVFM6IHtcbiAgICByZWFkb25seSAndW5pdmVyc2FsLWFwcGxlLWRhcndpbic6IHJlYWRvbmx5IFtcImFhcmNoNjQtYXBwbGUtZGFyd2luXCIsIFwieDg2XzY0LWFwcGxlLWRhcndpblwiXTtcbn07XG5leHBvcnQgZGVjbGFyZSBjb25zdCBBVkFJTEFCTEVfVEFSR0VUUzogcmVhZG9ubHkgW1wiYWFyY2g2NC1hcHBsZS1kYXJ3aW5cIiwgXCJhYXJjaDY0LWxpbnV4LWFuZHJvaWRcIiwgXCJhYXJjaDY0LXVua25vd24tbGludXgtZ251XCIsIFwiYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2xcIiwgXCJhYXJjaDY0LXVua25vd24tbGludXgtb2hvc1wiLCBcImFhcmNoNjQtcGMtd2luZG93cy1tc3ZjXCIsIFwieDg2XzY0LWFwcGxlLWRhcndpblwiLCBcIng4Nl82NC1wYy13aW5kb3dzLW1zdmNcIiwgXCJ4ODZfNjQtcGMtd2luZG93cy1nbnVcIiwgXCJ4ODZfNjQtdW5rbm93bi1saW51eC1nbnVcIiwgXCJ4ODZfNjQtdW5rbm93bi1saW51eC1tdXNsXCIsIFwieDg2XzY0LXVua25vd24tbGludXgtb2hvc1wiLCBcIng4Nl82NC11bmtub3duLWZyZWVic2RcIiwgXCJpNjg2LXBjLXdpbmRvd3MtbXN2Y1wiLCBcImFybXY3LXVua25vd24tbGludXgtZ251ZWFiaWhmXCIsIFwiYXJtdjctdW5rbm93bi1saW51eC1tdXNsZWFiaWhmXCIsIFwiYXJtdjctbGludXgtYW5kcm9pZGVhYmlcIiwgXCJ1bml2ZXJzYWwtYXBwbGUtZGFyd2luXCIsIFwibG9vbmdhcmNoNjQtdW5rbm93bi1saW51eC1nbnVcIiwgXCJyaXNjdjY0Z2MtdW5rbm93bi1saW51eC1nbnVcIiwgXCJwb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudVwiLCBcInMzOTB4LXVua25vd24tbGludXgtZ251XCIsIFwid2FzbTMyLXdhc2ktcHJldmlldzEtdGhyZWFkc1wiLCBcIndhc20zMi13YXNpcDEtdGhyZWFkc1wiXTtcbmV4cG9ydCB0eXBlIFRhcmdldFRyaXBsZSA9ICh0eXBlb2YgQVZBSUxBQkxFX1RBUkdFVFMpW251bWJlcl07XG5leHBvcnQgZGVjbGFyZSBjb25zdCBERUZBVUxUX1RBUkdFVFM6IHJlYWRvbmx5IFtcIng4Nl82NC1hcHBsZS1kYXJ3aW5cIiwgXCJhYXJjaDY0LWFwcGxlLWRhcndpblwiLCBcIng4Nl82NC1wYy13aW5kb3dzLW1zdmNcIiwgXCJ4ODZfNjQtdW5rbm93bi1saW51eC1nbnVcIl07XG5leHBvcnQgZGVjbGFyZSBjb25zdCBUQVJHRVRfTElOS0VSOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xudHlwZSBOb2RlSlNBcmNoID0gJ2FybScgfCAnYXJtNjQnIHwgJ2lhMzInIHwgJ2xvb25nNjQnIHwgJ21pcHMnIHwgJ21pcHNlbCcgfCAncHBjJyB8ICdwcGM2NCcgfCAncmlzY3Y2NCcgfCAnczM5MCcgfCAnczM5MHgnIHwgJ3gzMicgfCAneDY0JyB8ICd1bml2ZXJzYWwnIHwgJ3dhc20zMic7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBOb2RlQXJjaFRvQ3B1OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgVW5pQXJjaHNCeVBsYXRmb3JtOiBQYXJ0aWFsPFJlY29yZDxQbGF0Zm9ybSwgTm9kZUpTQXJjaFtdPj47XG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldCB7XG4gICAgdHJpcGxlOiBzdHJpbmc7XG4gICAgcGxhdGZvcm1BcmNoQUJJOiBzdHJpbmc7XG4gICAgcGxhdGZvcm06IFBsYXRmb3JtO1xuICAgIGFyY2g6IE5vZGVKU0FyY2g7XG4gICAgYWJpOiBzdHJpbmcgfCBudWxsO1xufVxuLyoqXG4gKiBBIHRyaXBsZSBpcyBhIHNwZWNpZmljIGZvcm1hdCBmb3Igc3BlY2lmeWluZyBhIHRhcmdldCBhcmNoaXRlY3R1cmUuXG4gKiBUcmlwbGVzIG1heSBiZSByZWZlcnJlZCB0byBhcyBhIHRhcmdldCB0cmlwbGUgd2hpY2ggaXMgdGhlIGFyY2hpdGVjdHVyZSBmb3IgdGhlIGFydGlmYWN0IHByb2R1Y2VkLCBhbmQgdGhlIGhvc3QgdHJpcGxlIHdoaWNoIGlzIHRoZSBhcmNoaXRlY3R1cmUgdGhhdCB0aGUgY29tcGlsZXIgaXMgcnVubmluZyBvbi5cbiAqIFRoZSBnZW5lcmFsIGZvcm1hdCBvZiB0aGUgdHJpcGxlIGlzIGA8YXJjaD48c3ViPi08dmVuZG9yPi08c3lzPi08YWJpPmAgd2hlcmU6XG4gKiAgIC0gYGFyY2hgID0gVGhlIGJhc2UgQ1BVIGFyY2hpdGVjdHVyZSwgZm9yIGV4YW1wbGUgYHg4Nl82NGAsIGBpNjg2YCwgYGFybWAsIGB0aHVtYmAsIGBtaXBzYCwgZXRjLlxuICogICAtIGBzdWJgID0gVGhlIENQVSBzdWItYXJjaGl0ZWN0dXJlLCBmb3IgZXhhbXBsZSBgYXJtYCBoYXMgYHY3YCwgYHY3c2AsIGB2NXRlYCwgZXRjLlxuICogICAtIGB2ZW5kb3JgID0gVGhlIHZlbmRvciwgZm9yIGV4YW1wbGUgYHVua25vd25gLCBgYXBwbGVgLCBgcGNgLCBgbnZpZGlhYCwgZXRjLlxuICogICAtIGBzeXNgID0gVGhlIHN5c3RlbSBuYW1lLCBmb3IgZXhhbXBsZSBgbGludXhgLCBgd2luZG93c2AsIGBkYXJ3aW5gLCBldGMuIG5vbmUgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGJhcmUtbWV0YWwgd2l0aG91dCBhbiBPUy5cbiAqICAgLSBgYWJpYCA9IFRoZSBBQkksIGZvciBleGFtcGxlIGBnbnVgLCBgYW5kcm9pZGAsIGBlYWJpYCwgZXRjLlxuICovXG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBwYXJzZVRyaXBsZShyYXdUcmlwbGU6IHN0cmluZyk6IFRhcmdldDtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGdldFN5c3RlbURlZmF1bHRUYXJnZXQoKTogVGFyZ2V0O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gZ2V0VGFyZ2V0TGlua2VyKHRhcmdldDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdGFyZ2V0VG9FbnZWYXIodGFyZ2V0OiBzdHJpbmcpOiBzdHJpbmc7XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyB0eXBlIFRhcmdldCB9IGZyb20gJy4vdGFyZ2V0LmpzJztcbmV4cG9ydCB0eXBlIFZhbHVlT2ZDb25zdEFycmF5PFQ+ID0gVFtFeGNsdWRlPGtleW9mIFQsIGtleW9mIEFycmF5PGFueT4+XTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IFN1cHBvcnRlZFBhY2thZ2VNYW5hZ2VyczogcmVhZG9ubHkgW1wieWFyblwiLCBcInBucG1cIl07XG5leHBvcnQgZGVjbGFyZSBjb25zdCBTdXBwb3J0ZWRUZXN0RnJhbWV3b3JrczogcmVhZG9ubHkgW1wiYXZhXCJdO1xuZXhwb3J0IHR5cGUgU3VwcG9ydGVkUGFja2FnZU1hbmFnZXIgPSBWYWx1ZU9mQ29uc3RBcnJheTx0eXBlb2YgU3VwcG9ydGVkUGFja2FnZU1hbmFnZXJzPjtcbmV4cG9ydCB0eXBlIFN1cHBvcnRlZFRlc3RGcmFtZXdvcmsgPSBWYWx1ZU9mQ29uc3RBcnJheTx0eXBlb2YgU3VwcG9ydGVkVGVzdEZyYW1ld29ya3M+O1xuZXhwb3J0IGludGVyZmFjZSBVc2VyTmFwaUNvbmZpZyB7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgYmluYXJ5IHRvIGJlIGdlbmVyYXRlZCwgZGVmYXVsdCB0byBgaW5kZXhgXG4gICAgICovXG4gICAgYmluYXJ5TmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBucG0gcGFja2FnZSwgZGVmYXVsdCB0byB0aGUgbmFtZSBvZiByb290IHBhY2thZ2UuanNvbiBuYW1lXG4gICAgICpcbiAgICAgKiBBbHdheXMgZ2l2ZW4gYEBzY29wZS9wa2dgIGFuZCBhcmNoIHN1ZmZpeCB3aWxsIGJlIGFwcGVuZGVkIGxpa2UgYEBzY29wZS9wa2ctbGludXgtZ251LXg2NGBcbiAgICAgKi9cbiAgICBwYWNrYWdlTmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBbGwgdGFyZ2V0cyB0aGUgY3JhdGUgd2lsbCBiZSBjb21waWxlZCBmb3JcbiAgICAgKi9cbiAgICB0YXJnZXRzPzogc3RyaW5nW107XG4gICAgLyoqXG4gICAgICogVGhlIG5wbSBjbGllbnQgcHJvamVjdCB1c2VzLlxuICAgICAqL1xuICAgIG5wbUNsaWVudD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGdlbmVyYXRlIGNvbnN0IGVudW0gZm9yIHR5cGVzY3JpcHQgYmluZGluZ3NcbiAgICAgKi9cbiAgICBjb25zdEVudW0/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIGR0cyBoZWFkZXIgcHJlcGVuZCB0byB0aGUgZ2VuZXJhdGVkIGR0cyBmaWxlXG4gICAgICovXG4gICAgZHRzSGVhZGVyPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIGR0cyBoZWFkZXIgZmlsZSBwYXRoIHRvIGJlIHByZXBlbmRlZCB0byB0aGUgZ2VuZXJhdGVkIGR0cyBmaWxlXG4gICAgICogaWYgYm90aCBkdHNIZWFkZXIgYW5kIGR0c0hlYWRlckZpbGUgYXJlIHByb3ZpZGVkLCBkdHNIZWFkZXJGaWxlIHdpbGwgYmUgdXNlZFxuICAgICAqL1xuICAgIGR0c0hlYWRlckZpbGU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogd2FzbSBjb21waWxhdGlvbiBvcHRpb25zXG4gICAgICovXG4gICAgd2FzbT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViQXNzZW1ibHkvSmF2YVNjcmlwdF9pbnRlcmZhY2UvTWVtb3J5XG4gICAgICAgICAqIEBkZWZhdWx0IDQwMDAgcGFnZXMgKDI1Nk1pQilcbiAgICAgICAgICovXG4gICAgICAgIGluaXRpYWxNZW1vcnk/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVmYXVsdCA2NTUzNiBwYWdlcyAoNEdpQilcbiAgICAgICAgICovXG4gICAgICAgIG1heGltdW1NZW1vcnk/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcm93c2VyIHdhc20gYmluZGluZyBjb25maWd1cmF0aW9uXG4gICAgICAgICAqL1xuICAgICAgICBicm93c2VyOiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdoZXRoZXIgdG8gdXNlIGZzIG1vZHVsZSBpbiBicm93c2VyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZzPzogYm9vbGVhbjtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hldGhlciB0byBpbml0aWFsaXplIHdhc20gYXN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYXN5bmNJbml0PzogYm9vbGVhbjtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hldGhlciB0byBpbmplY3QgYGJ1ZmZlcmAgdG8gZW1uYXBpIGNvbnRleHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYnVmZmVyPzogYm9vbGVhbjtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIGJpbmFyeU5hbWUgaW5zdGVhZFxuICAgICAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIHBhY2thZ2VOYW1lIGluc3RlYWRcbiAgICAgKi9cbiAgICBwYWNrYWdlPzoge1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIHRhcmdldHMgaW5zdGVhZFxuICAgICAqL1xuICAgIHRyaXBsZXM/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaGV0aGVyIGVuYWJsZSBkZWZhdWx0IHRhcmdldHNcbiAgICAgICAgICovXG4gICAgICAgIGRlZmF1bHRzOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogQWRkaXRpb25hbCB0YXJnZXRzIHRvIGJlIGNvbXBpbGVkIGZvclxuICAgICAgICAgKi9cbiAgICAgICAgYWRkaXRpb25hbD86IHN0cmluZ1tdO1xuICAgIH07XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbW1vblBhY2thZ2VKc29uRmllbGRzIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGtleXdvcmRzPzogc3RyaW5nW107XG4gICAgYXV0aG9yPzogc3RyaW5nO1xuICAgIGF1dGhvcnM/OiBzdHJpbmdbXTtcbiAgICBsaWNlbnNlPzogc3RyaW5nO1xuICAgIGNwdT86IHN0cmluZ1tdO1xuICAgIG9zPzogc3RyaW5nW107XG4gICAgbGliYz86IHN0cmluZ1tdO1xuICAgIGZpbGVzPzogc3RyaW5nW107XG4gICAgcmVwb3NpdG9yeT86IGFueTtcbiAgICBob21lcGFnZT86IGFueTtcbiAgICBlbmdpbmVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBwdWJsaXNoQ29uZmlnPzogYW55O1xuICAgIGJ1Z3M/OiBhbnk7XG4gICAgbmFwaT86IFVzZXJOYXBpQ29uZmlnO1xuICAgIHR5cGU/OiAnbW9kdWxlJyB8ICdjb21tb25qcyc7XG4gICAgc2NyaXB0cz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgbWFpbj86IHN0cmluZztcbiAgICBtb2R1bGU/OiBzdHJpbmc7XG4gICAgdHlwZXM/OiBzdHJpbmc7XG4gICAgYnJvd3Nlcj86IHN0cmluZztcbiAgICBleHBvcnRzPzogYW55O1xuICAgIGRlcGVuZGVuY2llcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgZGV2RGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBhdmE/OiB7XG4gICAgICAgIHRpbWVvdXQ/OiBzdHJpbmc7XG4gICAgfTtcbn1cbmV4cG9ydCB0eXBlIE5hcGlDb25maWcgPSBSZXF1aXJlZDxQaWNrPFVzZXJOYXBpQ29uZmlnLCAnYmluYXJ5TmFtZScgfCAncGFja2FnZU5hbWUnIHwgJ25wbUNsaWVudCc+PiAmIFBpY2s8VXNlck5hcGlDb25maWcsICd3YXNtJyB8ICdkdHNIZWFkZXInIHwgJ2R0c0hlYWRlckZpbGUnIHwgJ2NvbnN0RW51bSc+ICYge1xuICAgIHRhcmdldHM6IFRhcmdldFtdO1xuICAgIHBhY2thZ2VKc29uOiBDb21tb25QYWNrYWdlSnNvbkZpZWxkcztcbn07XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiByZWFkTmFwaUNvbmZpZyhwYXRoOiBzdHJpbmcsIGNvbmZpZ1BhdGg/OiBzdHJpbmcpOiBQcm9taXNlPE5hcGlDb25maWc+O1xuIiwiaW1wb3J0IHsgQ2xpIH0gZnJvbSAnY2xpcGFuaW9uJztcbmltcG9ydCB7IGNvbGxlY3RBcnRpZmFjdHMgfSBmcm9tICcuL2FwaS9hcnRpZmFjdHMuanMnO1xuaW1wb3J0IHsgYnVpbGRQcm9qZWN0IH0gZnJvbSAnLi9hcGkvYnVpbGQuanMnO1xuaW1wb3J0IHsgY3JlYXRlTnBtRGlycyB9IGZyb20gJy4vYXBpL2NyZWF0ZS1ucG0tZGlycy5qcyc7XG5pbXBvcnQgeyBuZXdQcm9qZWN0IH0gZnJvbSAnLi9hcGkvbmV3LmpzJztcbmltcG9ydCB7IHByZVB1Ymxpc2ggfSBmcm9tICcuL2FwaS9wcmUtcHVibGlzaC5qcyc7XG5pbXBvcnQgeyByZW5hbWVQcm9qZWN0IH0gZnJvbSAnLi9hcGkvcmVuYW1lLmpzJztcbmltcG9ydCB7IHVuaXZlcnNhbGl6ZUJpbmFyaWVzIH0gZnJvbSAnLi9hcGkvdW5pdmVyc2FsaXplLmpzJztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuL2FwaS92ZXJzaW9uLmpzJztcbmltcG9ydCB7IEFydGlmYWN0c0NvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL2FydGlmYWN0cy5qcyc7XG5pbXBvcnQgeyBCdWlsZENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL2J1aWxkLmpzJztcbmltcG9ydCB7IENyZWF0ZU5wbURpcnNDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9jcmVhdGUtbnBtLWRpcnMuanMnO1xuaW1wb3J0IHsgTmV3Q29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvbmV3LmpzJztcbmltcG9ydCB7IFByZVB1Ymxpc2hDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9wcmUtcHVibGlzaC5qcyc7XG5pbXBvcnQgeyBSZW5hbWVDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9yZW5hbWUuanMnO1xuaW1wb3J0IHsgVW5pdmVyc2FsaXplQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvdW5pdmVyc2FsaXplLmpzJztcbmltcG9ydCB7IFZlcnNpb25Db21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy92ZXJzaW9uLmpzJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNsaTogQ2xpPGltcG9ydChcImNsaXBhbmlvblwiKS5CYXNlQ29udGV4dD47XG4vKipcbiAqXG4gKiBAdXNhZ2VcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgY2xpID0gbmV3IE5hcGlDbGkoKVxuICpcbiAqIGNsaS5idWlsZCh7XG4gKiAgIGN3ZDogJy9wYXRoL3RvL3lvdXIvcHJvamVjdCcsXG4gKiB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIE5hcGlDbGkge1xuICAgIGFydGlmYWN0czogdHlwZW9mIGNvbGxlY3RBcnRpZmFjdHM7XG4gICAgbmV3OiB0eXBlb2YgbmV3UHJvamVjdDtcbiAgICBidWlsZDogdHlwZW9mIGJ1aWxkUHJvamVjdDtcbiAgICBjcmVhdGVOcG1EaXJzOiB0eXBlb2YgY3JlYXRlTnBtRGlycztcbiAgICBwcmVQdWJsaXNoOiB0eXBlb2YgcHJlUHVibGlzaDtcbiAgICByZW5hbWU6IHR5cGVvZiByZW5hbWVQcm9qZWN0O1xuICAgIHVuaXZlcnNhbGl6ZTogdHlwZW9mIHVuaXZlcnNhbGl6ZUJpbmFyaWVzO1xuICAgIHZlcnNpb246IHR5cGVvZiB2ZXJzaW9uO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlQnVpbGRDb21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogQnVpbGRDb21tYW5kO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlQXJ0aWZhY3RzQ29tbWFuZChhcmdzOiBzdHJpbmdbXSk6IEFydGlmYWN0c0NvbW1hbmQ7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVDcmVhdGVOcG1EaXJzQ29tbWFuZChhcmdzOiBzdHJpbmdbXSk6IENyZWF0ZU5wbURpcnNDb21tYW5kO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlUHJlUHVibGlzaENvbW1hbmQoYXJnczogc3RyaW5nW10pOiBQcmVQdWJsaXNoQ29tbWFuZDtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZVJlbmFtZUNvbW1hbmQoYXJnczogc3RyaW5nW10pOiBSZW5hbWVDb21tYW5kO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlVW5pdmVyc2FsaXplQ29tbWFuZChhcmdzOiBzdHJpbmdbXSk6IFVuaXZlcnNhbGl6ZUNvbW1hbmQ7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVWZXJzaW9uQ29tbWFuZChhcmdzOiBzdHJpbmdbXSk6IFZlcnNpb25Db21tYW5kO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlTmV3Q29tbWFuZChhcmdzOiBzdHJpbmdbXSk6IE5ld0NvbW1hbmQ7XG5leHBvcnQgeyBwYXJzZVRyaXBsZSB9IGZyb20gJy4vdXRpbHMvdGFyZ2V0LmpzJztcbmV4cG9ydCB7IHR5cGUgR2VuZXJhdGVUeXBlRGVmT3B0aW9ucywgdHlwZSBXcml0ZUpzQmluZGluZ09wdGlvbnMsIHdyaXRlSnNCaW5kaW5nLCBnZW5lcmF0ZVR5cGVEZWYsIH0gZnJvbSAnLi9hcGkvYnVpbGQuanMnO1xuZXhwb3J0IHsgcmVhZE5hcGlDb25maWcgfSBmcm9tICcuL3V0aWxzL2NvbmZpZy5qcyc7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxJQUFXLHVCQUFpQixDQUFBLFVBQUEsQ0FBQSxXQUFBLE9BQUEsUUFBQSxDQUFBO0FBQzVCLElBQVcsbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUE7Ozs7QUNGM0MsSUFBVyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLFFBQVEsQ0FBQzs7OztBQ0NyRSxJQUFXLG1CQUFpQixDQUFBLFVBQUEsQ0FBQSxXQUFBLE9BQUEsUUFBQSxDQUFBO0FBQzVCLElBQVcsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDOzs7O0FDRnhDLElBQUksYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQy9CLElBQUksU0FBUyxDQUFDLFVBQUEsQ0FBQSxXQUFBLENBQUE7QUFDZCxJQUFJLGlCQUFlLENBQUMsVUFBQSxDQUFBLGFBQUEsQ0FBQTtBQUNwQixJQUFXLGVBQUssQ0FBQSxVQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQSxDQUFBO0FBQ2hCLElBQUMsd0JBQUEsQ0FBQSxVQUFBLEVBQUEsQ0FBQTtBQUNELElBQVcsaUJBQWlCLENBQUMsVUFBUztDQUFBO0NBQUE7Q0FBQTtDQUFBLENBQUE7QUFDdEMsSUFBVyx5QkFBZ0IsQ0FBQSxVQUFBLEVBQUEsQ0FBQTtBQUMzQixJQUFDLGtCQUFBLENBQUEsVUFBQSxDQUFBLHdCQUFBLFFBQUEsQ0FBQTs7OztBQ05ELElBQVcsMkJBQWlCLENBQUEsVUFBQSxDQUFBLFdBQUEsT0FBQSxRQUFBLENBQUE7QUFDNUIsSUFBVyx1QkFBdUIsQ0FBQyxVQUFRLEVBQUEsQ0FBQTs7OztBQ0QzQyxJQUFXLGdCQUFNLENBQUEsVUFBQSxDQUFBLHNCQUFBLFFBQUEsQ0FBQTs7OztBQ0FqQixJQUFXLGlCQUFpQixDQUFBLFVBQUEsQ0FBQSxXQUFBLE9BQUEsUUFBQSxDQUFBO0FBQzVCLElBQVcsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDOzs7O0FDRHRDLElBQVcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxZQUFlLFFBQVEsQ0FBQzs7OztBQ0E1RCxJQUFXLHdCQUFpQixDQUFBLFVBQUEsQ0FBQSxXQUFBLE9BQUEsUUFBQSxDQUFBO0FBQzVCLElBQVcsb0JBQW9CLENBQUMsVUFBVSxFQUFDLENBQUE7Ozs7QUNGM0MsSUFBVyxhQUFhLENBQUMsVUFBVSxDQUFDLG1CQUFtQixRQUFRLENBQUM7Ozs7QUNDaEUsSUFBVyxvQkFBaUIsQ0FBQSxVQUFBLENBQUEsV0FBQSxPQUFBLFFBQUEsQ0FBQTtBQUM1QixJQUFXLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDOzs7O0FDRnpDLElBQVcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLGVBQWUsUUFBUSxDQUFDOzs7O0FDQy9ELElBQVcsMEJBQWlCLENBQUEsVUFBQSxDQUFBLFdBQUEsT0FBQSxRQUFBLENBQUE7QUFDNUIsSUFBVyxzQkFBc0IsQ0FBQyxVQUFTLEVBQUEsQ0FBQTs7OztBQ0YzQyxJQUFXLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsUUFBUSxDQUFDOzs7O0FDQzVFLElBQVcscUJBQWlCLENBQUEsVUFBQSxDQUFBLFdBQUEsT0FBQSxRQUFBLENBQUE7QUFDNUIsSUFBVyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQzs7OztBQ0YxQyxJQUFXLFVBQVUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLFFBQVEsQ0FBQzs7OztBQ0MxRCxJQUFXLG1CQUFtQixDQUFDLFVBQVU7Q0FBQyxXQUFDO0NBQUE7Q0FBQTtDQUFBLENBQUE7Ozs7QUNEM0MsSUFBVyxlQUFlLENBQUMsVUFBVSxDQUFDLFNBQVMsaUJBQVksQ0FBQTs7OztBQ0EzRCxJQUFXLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxTQUFTLHlCQUFvQixDQUFBOzs7O0FDQTNFLElBQVcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxTQUFTLGVBQVUsQ0FBQTs7OztBQ0F2RCxJQUFXLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxTQUFTLHNCQUFpQixDQUFBOzs7O0FDQXJFLElBQVcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFNBQVMsa0JBQWEsQ0FBQTs7OztBQ0E3RCxJQUFXLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxTQUFTLHdCQUFtQixDQUFBOzs7O0FDQXpFLElBQVcsaUJBQWlCLENBQUMsVUFBVSxDQUFDLFNBQVMsbUJBQWMsQ0FBQTs7OztBQ0QvRCxJQUFXLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxTQUFTLENBQUM7QUFNbkQsSUFBSSxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7QUFHL0IsSUFBVyxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsV0FBVyxDQUFDO0FBQ3RELElBQVcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7Ozs7QUNKN0MsSUFBVyxpQkFBaUIsQ0FBQyxVQUFHLEVBQUEsQ0FBQTtBQUNoQyxJQUFNLDBCQUFBLENBQUEsVUFBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQSxDQUFBO0FBQ04sSUFBVyxhQUFhLENBQUMsVUFBVTtDQUFDO0NBQWdCO0NBQU07Q0FBRTtDQUFBO0NBQUE7Q0FBQTtDQUFBLENBQUE7QUFDNUQsSUFBTSxpQkFBQSxDQUFBLFVBQUEsQ0FBQSxZQUFBLFFBQUEsQ0FBQTs7OztBQ1NOLElBQUUsTUFBQSxDQUFBLFNBQUEsQ0FBQSxXQUFBLGFBQUEsSUFBQSxDQUFBO0FBQ0YsSUFBQyxVQUFBLENBQUEsU0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQSxDQUFBO0FBQ0QsSUFBUSxxQkFBQSxDQUFBLFNBQUEsQ0FBQSxhQUFBLENBQUE7QUFDUixJQUFDLHlCQUFBLENBQUEsU0FBQSxDQUFBLGlCQUFBLENBQUE7QUFDRCxJQUFPLDZCQUFBLENBQUEsU0FBQSxDQUFBLHFCQUFBLENBQUE7QUFDUCxJQUFXLDBCQUFnQixDQUFBLFNBQUEsQ0FBQSxrQkFBQSxDQUFBO0FBQzNCLElBQUMsc0JBQUEsQ0FBQSxTQUFBLENBQUEsY0FBQSxDQUFBO0FBQ0QsSUFBVyw0QkFBRSxDQUFBLFNBQUEsQ0FBQSxvQkFBQSxDQUFBO0FBQ2IsSUFBVyx1QkFBc0IsQ0FBQSxTQUFBLENBQUEsZUFBQSxDQUFBO0FBQ2pDLElBQUksbUJBQUEsQ0FBQSxTQUFBLENBQUEsV0FBQSxDQUFBIn0= \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/dist/index.d.ts b/sdks/nodejs/node_modules/@napi-rs/cli/dist/index.d.ts deleted file mode 100644 index cccfd4c..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/dist/index.d.ts +++ /dev/null @@ -1,960 +0,0 @@ -import * as clipanion2 from "clipanion"; -import { Cli, Command } from "clipanion"; - -//#region src/def/artifacts.d.ts -declare abstract class BaseArtifactsCommand extends Command { - static paths: string[][]; - static usage: clipanion2.Usage; - cwd: string; - configPath?: string; - packageJsonPath: string; - outputDir: string; - npmDir: string; - buildOutputDir?: string; - getOptions(): { - cwd: string; - configPath: string | undefined; - packageJsonPath: string; - outputDir: string; - npmDir: string; - buildOutputDir: string | undefined; - }; -} -/** - * Copy artifacts from Github Actions into npm packages and ready to publish - */ -interface ArtifactsOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string; - /** - * Path to the folder where all built `.node` files put, same as `--output-dir` of build command - * - * @default './artifacts' - */ - outputDir?: string; - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string; - /** - * Path to the build output dir, only needed when targets contains `wasm32-wasi-*` - */ - buildOutputDir?: string; -} -//#endregion -//#region src/api/artifacts.d.ts -declare function collectArtifacts(userOptions: ArtifactsOptions): Promise; -//#endregion -//#region src/def/build.d.ts -declare abstract class BaseBuildCommand extends Command { - static paths: string[][]; - static usage: clipanion2.Usage; - target?: string; - cwd?: string; - manifestPath?: string; - configPath?: string; - packageJsonPath?: string; - targetDir?: string; - outputDir?: string; - platform?: boolean; - jsPackageName?: string; - constEnum?: boolean; - jsBinding?: string; - noJsBinding?: boolean; - dts?: string; - dtsHeader?: string; - noDtsHeader?: boolean; - dtsCache: boolean; - esm?: boolean; - strip?: boolean; - release?: boolean; - verbose?: boolean; - bin?: string; - package?: string; - profile?: string; - crossCompile?: boolean; - useCross?: boolean; - useNapiCross?: boolean; - watch?: boolean; - features?: string[]; - allFeatures?: boolean; - noDefaultFeatures?: boolean; - getOptions(): { - target: string | undefined; - cwd: string | undefined; - manifestPath: string | undefined; - configPath: string | undefined; - packageJsonPath: string | undefined; - targetDir: string | undefined; - outputDir: string | undefined; - platform: boolean | undefined; - jsPackageName: string | undefined; - constEnum: boolean | undefined; - jsBinding: string | undefined; - noJsBinding: boolean | undefined; - dts: string | undefined; - dtsHeader: string | undefined; - noDtsHeader: boolean | undefined; - dtsCache: boolean; - esm: boolean | undefined; - strip: boolean | undefined; - release: boolean | undefined; - verbose: boolean | undefined; - bin: string | undefined; - package: string | undefined; - profile: string | undefined; - crossCompile: boolean | undefined; - useCross: boolean | undefined; - useNapiCross: boolean | undefined; - watch: boolean | undefined; - features: string[] | undefined; - allFeatures: boolean | undefined; - noDefaultFeatures: boolean | undefined; - }; -} -/** - * Build the NAPI-RS project - */ -interface BuildOptions { - /** - * Build for the target triple, bypassed to `cargo build --target` - */ - target?: string; - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - */ - cwd?: string; - /** - * Path to `Cargo.toml` - */ - manifestPath?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - */ - packageJsonPath?: string; - /** - * Directory for all crate generated artifacts, see `cargo build --target-dir` - */ - targetDir?: string; - /** - * Path to where all the built files would be put. Default to the crate folder - */ - outputDir?: string; - /** - * Add platform triple to the generated nodejs binding file, eg: `[name].linux-x64-gnu.node` - */ - platform?: boolean; - /** - * Package name in generated js binding file. Only works with `--platform` flag - */ - jsPackageName?: string; - /** - * Whether generate const enum for typescript bindings - */ - constEnum?: boolean; - /** - * Path and filename of generated JS binding file. Only works with `--platform` flag. Relative to `--output-dir`. - */ - jsBinding?: string; - /** - * Whether to disable the generation JS binding file. Only works with `--platform` flag. - */ - noJsBinding?: boolean; - /** - * Path and filename of generated type def file. Relative to `--output-dir` - */ - dts?: string; - /** - * Custom file header for generated type def file. Only works when `typedef` feature enabled. - */ - dtsHeader?: string; - /** - * Whether to disable the default file header for generated type def file. Only works when `typedef` feature enabled. - */ - noDtsHeader?: boolean; - /** - * Whether to enable the dts cache, default to true - * - * @default true - */ - dtsCache?: boolean; - /** - * Whether to emit an ESM JS binding file instead of CJS format. Only works with `--platform` flag. - */ - esm?: boolean; - /** - * Whether strip the library to achieve the minimum file size - */ - strip?: boolean; - /** - * Build in release mode - */ - release?: boolean; - /** - * Verbosely log build command trace - */ - verbose?: boolean; - /** - * Build only the specified binary - */ - bin?: string; - /** - * Build the specified library or the one at cwd - */ - package?: string; - /** - * Build artifacts with the specified profile - */ - profile?: string; - /** - * [experimental] cross-compile for the specified target with `cargo-xwin` on windows and `cargo-zigbuild` on other platform - */ - crossCompile?: boolean; - /** - * [experimental] use [cross](https://github.com/cross-rs/cross) instead of `cargo` - */ - useCross?: boolean; - /** - * [experimental] use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets. - */ - useNapiCross?: boolean; - /** - * watch the crate changes and build continuously with `cargo-watch` crates - */ - watch?: boolean; - /** - * Space-separated list of features to activate - */ - features?: string[]; - /** - * Activate all available features - */ - allFeatures?: boolean; - /** - * Do not activate the `default` feature - */ - noDefaultFeatures?: boolean; -} -//#endregion -//#region src/api/build.d.ts -type OutputKind = 'js' | 'dts' | 'node' | 'exe' | 'wasm'; -type Output = { - kind: OutputKind; - path: string; -}; -type BuildOptions$1 = BuildOptions & { - cargoOptions?: string[]; -}; -declare function buildProject(rawOptions: BuildOptions$1): Promise<{ - task: Promise; - abort: () => void; -}>; -interface WriteJsBindingOptions { - platform?: boolean; - noJsBinding?: boolean; - idents: string[]; - jsBinding?: string; - esm?: boolean; - binaryName: string; - packageName: string; - version: string; - outputDir: string; -} -declare function writeJsBinding(options: WriteJsBindingOptions): Promise; -interface GenerateTypeDefOptions { - typeDefDir: string; - noDtsHeader?: boolean; - dtsHeader?: string; - dtsHeaderFile?: string; - configDtsHeader?: string; - configDtsHeaderFile?: string; - constEnum?: boolean; - cwd: string; -} -declare function generateTypeDef(options: GenerateTypeDefOptions): Promise<{ - exports: string[]; - dts: string; -}>; -//#endregion -//#region src/def/create-npm-dirs.d.ts -declare abstract class BaseCreateNpmDirsCommand extends Command { - static paths: string[][]; - static usage: clipanion2.Usage; - cwd: string; - configPath?: string; - packageJsonPath: string; - npmDir: string; - dryRun: boolean; - getOptions(): { - cwd: string; - configPath: string | undefined; - packageJsonPath: string; - npmDir: string; - dryRun: boolean; - }; -} -/** - * Create npm package dirs for different platforms - */ -interface CreateNpmDirsOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string; - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string; - /** - * Dry run without touching file system - * - * @default false - */ - dryRun?: boolean; -} -//#endregion -//#region src/api/create-npm-dirs.d.ts -declare function createNpmDirs(userOptions: CreateNpmDirsOptions): Promise; -//#endregion -//#region src/def/new.d.ts -declare abstract class BaseNewCommand extends Command { - static paths: string[][]; - static usage: clipanion2.Usage; - $$path: string | undefined; - $$name?: string; - minNodeApiVersion: number; - packageManager: string; - license: string; - targets: string[]; - enableDefaultTargets: boolean; - enableAllTargets: boolean; - enableTypeDef: boolean; - enableGithubActions: boolean; - testFramework: string; - dryRun: boolean; - getOptions(): { - path: string | undefined; - name: string | undefined; - minNodeApiVersion: number; - packageManager: string; - license: string; - targets: string[]; - enableDefaultTargets: boolean; - enableAllTargets: boolean; - enableTypeDef: boolean; - enableGithubActions: boolean; - testFramework: string; - dryRun: boolean; - }; -} -/** - * Create a new project with pre-configured boilerplate - */ -interface NewOptions { - /** - * The path where the NAPI-RS project will be created. - */ - path?: string; - /** - * The name of the project, default to the name of the directory if not provided - */ - name?: string; - /** - * The minimum Node-API version to support - * - * @default 4 - */ - minNodeApiVersion?: number; - /** - * The package manager to use. Only support yarn 4.x for now. - * - * @default 'yarn' - */ - packageManager?: string; - /** - * License for open-sourced project - * - * @default 'MIT' - */ - license?: string; - /** - * All targets the crate will be compiled for. - * - * @default [] - */ - targets?: string[]; - /** - * Whether enable default targets - * - * @default true - */ - enableDefaultTargets?: boolean; - /** - * Whether enable all targets - * - * @default false - */ - enableAllTargets?: boolean; - /** - * Whether enable the `type-def` feature for typescript definitions auto-generation - * - * @default true - */ - enableTypeDef?: boolean; - /** - * Whether generate preconfigured GitHub Actions workflow - * - * @default true - */ - enableGithubActions?: boolean; - /** - * The JavaScript test framework to use, only support `ava` for now - * - * @default 'ava' - */ - testFramework?: string; - /** - * Whether to run the command in dry-run mode - * - * @default false - */ - dryRun?: boolean; -} -//#endregion -//#region src/api/new.d.ts -declare function newProject(userOptions: NewOptions): Promise; -//#endregion -//#region src/def/pre-publish.d.ts -declare abstract class BasePrePublishCommand extends Command { - static paths: string[][]; - static usage: clipanion2.Usage; - cwd: string; - configPath?: string; - packageJsonPath: string; - npmDir: string; - tagStyle: string; - ghRelease: boolean; - ghReleaseName?: string; - ghReleaseId?: string; - skipOptionalPublish: boolean; - dryRun: boolean; - getOptions(): { - cwd: string; - configPath: string | undefined; - packageJsonPath: string; - npmDir: string; - tagStyle: string; - ghRelease: boolean; - ghReleaseName: string | undefined; - ghReleaseId: string | undefined; - skipOptionalPublish: boolean; - dryRun: boolean; - }; -} -/** - * Update package.json and copy addons into per platform packages - */ -interface PrePublishOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string; - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string; - /** - * git tag style, `npm` or `lerna` - * - * @default 'lerna' - */ - tagStyle?: 'npm' | 'lerna'; - /** - * Whether create GitHub release - * - * @default true - */ - ghRelease?: boolean; - /** - * GitHub release name - */ - ghReleaseName?: string; - /** - * Existing GitHub release id - */ - ghReleaseId?: string; - /** - * Whether skip optionalDependencies packages publish - * - * @default false - */ - skipOptionalPublish?: boolean; - /** - * Dry run without touching file system - * - * @default false - */ - dryRun?: boolean; -} -//#endregion -//#region src/api/pre-publish.d.ts -declare function prePublish(userOptions: PrePublishOptions): Promise; -//#endregion -//#region src/def/rename.d.ts -declare abstract class BaseRenameCommand extends Command { - static paths: string[][]; - static usage: clipanion2.Usage; - cwd: string; - configPath?: string; - packageJsonPath: string; - npmDir: string; - $$name?: string; - binaryName?: string; - packageName?: string; - manifestPath: string; - repository?: string; - description?: string; - getOptions(): { - cwd: string; - configPath: string | undefined; - packageJsonPath: string; - npmDir: string; - name: string | undefined; - binaryName: string | undefined; - packageName: string | undefined; - manifestPath: string; - repository: string | undefined; - description: string | undefined; - }; -} -/** - * Rename the NAPI-RS project - */ -interface RenameOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string; - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string; - /** - * The new name of the project - */ - name?: string; - /** - * The new binary name *.node files - */ - binaryName?: string; - /** - * The new package name of the project - */ - packageName?: string; - /** - * Path to `Cargo.toml` - * - * @default 'Cargo.toml' - */ - manifestPath?: string; - /** - * The new repository of the project - */ - repository?: string; - /** - * The new description of the project - */ - description?: string; -} -//#endregion -//#region src/api/rename.d.ts -declare function renameProject(userOptions: RenameOptions): Promise; -//#endregion -//#region src/def/universalize.d.ts -declare abstract class BaseUniversalizeCommand extends Command { - static paths: string[][]; - static usage: clipanion2.Usage; - cwd: string; - configPath?: string; - packageJsonPath: string; - outputDir: string; - getOptions(): { - cwd: string; - configPath: string | undefined; - packageJsonPath: string; - outputDir: string; - }; -} -/** - * Combile built binaries into one universal binary - */ -interface UniversalizeOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string; - /** - * Path to the folder where all built `.node` files put, same as `--output-dir` of build command - * - * @default './' - */ - outputDir?: string; -} -//#endregion -//#region src/api/universalize.d.ts -declare function universalizeBinaries(userOptions: UniversalizeOptions): Promise; -//#endregion -//#region src/def/version.d.ts -declare abstract class BaseVersionCommand extends Command { - static paths: string[][]; - static usage: clipanion2.Usage; - cwd: string; - configPath?: string; - packageJsonPath: string; - npmDir: string; - getOptions(): { - cwd: string; - configPath: string | undefined; - packageJsonPath: string; - npmDir: string; - }; -} -/** - * Update version in created npm packages - */ -interface VersionOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string; - /** - * Path to `napi` config json file - */ - configPath?: string; - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string; - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string; -} -//#endregion -//#region src/api/version.d.ts -declare function version(userOptions: VersionOptions): Promise; -//#endregion -//#region src/commands/artifacts.d.ts -declare class ArtifactsCommand extends BaseArtifactsCommand { - static usage: clipanion2.Usage; - static paths: string[][]; - execute(): Promise; -} -//#endregion -//#region src/commands/build.d.ts -declare class BuildCommand extends BaseBuildCommand { - pipe: string | undefined; - cargoOptions: string[]; - execute(): Promise; -} -//#endregion -//#region src/commands/create-npm-dirs.d.ts -declare class CreateNpmDirsCommand extends BaseCreateNpmDirsCommand { - execute(): Promise; -} -//#endregion -//#region src/commands/new.d.ts -declare class NewCommand extends BaseNewCommand { - interactive: boolean; - execute(): Promise<0 | 1>; - private fetchOptions; - private fetchName; - private fetchLicense; - private fetchNapiVersion; - private fetchTargets; - private fetchTypeDef; - private fetchGithubActions; -} -//#endregion -//#region src/commands/pre-publish.d.ts -declare class PrePublishCommand extends BasePrePublishCommand { - execute(): Promise; -} -//#endregion -//#region src/commands/rename.d.ts -declare class RenameCommand extends BaseRenameCommand { - execute(): Promise; -} -//#endregion -//#region src/commands/universalize.d.ts -declare class UniversalizeCommand extends BaseUniversalizeCommand { - execute(): Promise; -} -//#endregion -//#region src/commands/version.d.ts -declare class VersionCommand extends BaseVersionCommand { - execute(): Promise; -} -//#endregion -//#region src/utils/target.d.ts -type Platform = NodeJS.Platform | 'wasm' | 'wasi' | 'openharmony'; -type NodeJSArch = 'arm' | 'arm64' | 'ia32' | 'loong64' | 'mips' | 'mipsel' | 'ppc' | 'ppc64' | 'riscv64' | 's390' | 's390x' | 'x32' | 'x64' | 'universal' | 'wasm32'; -interface Target { - triple: string; - platformArchABI: string; - platform: Platform; - arch: NodeJSArch; - abi: string | null; -} -/** - * A triple is a specific format for specifying a target architecture. - * Triples may be referred to as a target triple which is the architecture for the artifact produced, and the host triple which is the architecture that the compiler is running on. - * The general format of the triple is `---` where: - * - `arch` = The base CPU architecture, for example `x86_64`, `i686`, `arm`, `thumb`, `mips`, etc. - * - `sub` = The CPU sub-architecture, for example `arm` has `v7`, `v7s`, `v5te`, etc. - * - `vendor` = The vendor, for example `unknown`, `apple`, `pc`, `nvidia`, etc. - * - `sys` = The system name, for example `linux`, `windows`, `darwin`, etc. none is typically used for bare-metal without an OS. - * - `abi` = The ABI, for example `gnu`, `android`, `eabi`, etc. - */ -declare function parseTriple(rawTriple: string): Target; -//#endregion -//#region src/utils/config.d.ts -interface UserNapiConfig { - /** - * Name of the binary to be generated, default to `index` - */ - binaryName?: string; - /** - * Name of the npm package, default to the name of root package.json name - * - * Always given `@scope/pkg` and arch suffix will be appended like `@scope/pkg-linux-gnu-x64` - */ - packageName?: string; - /** - * All targets the crate will be compiled for - */ - targets?: string[]; - /** - * The npm client project uses. - */ - npmClient?: string; - /** - * Whether generate const enum for typescript bindings - */ - constEnum?: boolean; - /** - * dts header prepend to the generated dts file - */ - dtsHeader?: string; - /** - * dts header file path to be prepended to the generated dts file - * if both dtsHeader and dtsHeaderFile are provided, dtsHeaderFile will be used - */ - dtsHeaderFile?: string; - /** - * wasm compilation options - */ - wasm?: { - /** - * https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Memory - * @default 4000 pages (256MiB) - */ - initialMemory?: number; - /** - * @default 65536 pages (4GiB) - */ - maximumMemory?: number; - /** - * Browser wasm binding configuration - */ - browser: { - /** - * Whether to use fs module in browser - */ - fs?: boolean; - /** - * Whether to initialize wasm asynchronously - */ - asyncInit?: boolean; - /** - * Whether to inject `buffer` to emnapi context - */ - buffer?: boolean; - }; - }; - /** - * @deprecated binaryName instead - */ - name?: string; - /** - * @deprecated use packageName instead - */ - package?: { - name?: string; - }; - /** - * @deprecated use targets instead - */ - triples?: { - /** - * Whether enable default targets - */ - defaults: boolean; - /** - * Additional targets to be compiled for - */ - additional?: string[]; - }; -} -interface CommonPackageJsonFields { - name: string; - version: string; - description?: string; - keywords?: string[]; - author?: string; - authors?: string[]; - license?: string; - cpu?: string[]; - os?: string[]; - libc?: string[]; - files?: string[]; - repository?: any; - homepage?: any; - engines?: Record; - publishConfig?: any; - bugs?: any; - napi?: UserNapiConfig; - type?: 'module' | 'commonjs'; - scripts?: Record; - main?: string; - module?: string; - types?: string; - browser?: string; - exports?: any; - dependencies?: Record; - devDependencies?: Record; - ava?: { - timeout?: string; - }; -} -type NapiConfig = Required> & Pick & { - targets: Target[]; - packageJson: CommonPackageJsonFields; -}; -declare function readNapiConfig(path: string, configPath?: string): Promise; -//#endregion -//#region src/index.d.ts -declare const cli: Cli; -/** - * - * @usage - * - * ```ts - * const cli = new NapiCli() - * - * cli.build({ - * cwd: '/path/to/your/project', - * }) - * ``` - */ -declare class NapiCli { - artifacts: typeof collectArtifacts; - new: typeof newProject; - build: typeof buildProject; - createNpmDirs: typeof createNpmDirs; - prePublish: typeof prePublish; - rename: typeof renameProject; - universalize: typeof universalizeBinaries; - version: typeof version; -} -declare function createBuildCommand(args: string[]): BuildCommand; -declare function createArtifactsCommand(args: string[]): ArtifactsCommand; -declare function createCreateNpmDirsCommand(args: string[]): CreateNpmDirsCommand; -declare function createPrePublishCommand(args: string[]): PrePublishCommand; -declare function createRenameCommand(args: string[]): RenameCommand; -declare function createUniversalizeCommand(args: string[]): UniversalizeCommand; -declare function createVersionCommand(args: string[]): VersionCommand; -declare function createNewCommand(args: string[]): NewCommand; -//#endregion -export { type GenerateTypeDefOptions, NapiCli, type WriteJsBindingOptions, cli, createArtifactsCommand, createBuildCommand, createCreateNpmDirsCommand, createNewCommand, createPrePublishCommand, createRenameCommand, createUniversalizeCommand, createVersionCommand, generateTypeDef, parseTriple, readNapiConfig, writeJsBinding }; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvZGVmL2FydGlmYWN0cy5kLnRzIiwiLi4vc3JjL2FwaS9hcnRpZmFjdHMuZC50cyIsIi4uL3NyYy9kZWYvYnVpbGQuZC50cyIsIi4uL3NyYy9hcGkvYnVpbGQuZC50cyIsIi4uL3NyYy9kZWYvY3JlYXRlLW5wbS1kaXJzLmQudHMiLCIuLi9zcmMvYXBpL2NyZWF0ZS1ucG0tZGlycy5kLnRzIiwiLi4vc3JjL2RlZi9uZXcuZC50cyIsIi4uL3NyYy9hcGkvbmV3LmQudHMiLCIuLi9zcmMvZGVmL3ByZS1wdWJsaXNoLmQudHMiLCIuLi9zcmMvYXBpL3ByZS1wdWJsaXNoLmQudHMiLCIuLi9zcmMvZGVmL3JlbmFtZS5kLnRzIiwiLi4vc3JjL2FwaS9yZW5hbWUuZC50cyIsIi4uL3NyYy9kZWYvdW5pdmVyc2FsaXplLmQudHMiLCIuLi9zcmMvYXBpL3VuaXZlcnNhbGl6ZS5kLnRzIiwiLi4vc3JjL2RlZi92ZXJzaW9uLmQudHMiLCIuLi9zcmMvYXBpL3ZlcnNpb24uZC50cyIsIi4uL3NyYy9jb21tYW5kcy9hcnRpZmFjdHMuZC50cyIsIi4uL3NyYy9jb21tYW5kcy9idWlsZC5kLnRzIiwiLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS1ucG0tZGlycy5kLnRzIiwiLi4vc3JjL2NvbW1hbmRzL25ldy5kLnRzIiwiLi4vc3JjL2NvbW1hbmRzL3ByZS1wdWJsaXNoLmQudHMiLCIuLi9zcmMvY29tbWFuZHMvcmVuYW1lLmQudHMiLCIuLi9zcmMvY29tbWFuZHMvdW5pdmVyc2FsaXplLmQudHMiLCIuLi9zcmMvY29tbWFuZHMvdmVyc2lvbi5kLnRzIiwiLi4vc3JjL3V0aWxzL3RhcmdldC5kLnRzIiwiLi4vc3JjL3V0aWxzL2NvbmZpZy5kLnRzIiwiLi4vc3JjL2luZGV4LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NsaXBhbmlvbic7XG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBCYXNlQXJ0aWZhY3RzQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAgIHN0YXRpYyBwYXRoczogc3RyaW5nW11bXTtcbiAgICBzdGF0aWMgdXNhZ2U6IGltcG9ydChcImNsaXBhbmlvblwiKS5Vc2FnZTtcbiAgICBjd2Q6IHN0cmluZztcbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIHBhY2thZ2VKc29uUGF0aDogc3RyaW5nO1xuICAgIG91dHB1dERpcjogc3RyaW5nO1xuICAgIG5wbURpcjogc3RyaW5nO1xuICAgIGJ1aWxkT3V0cHV0RGlyPzogc3RyaW5nO1xuICAgIGdldE9wdGlvbnMoKToge1xuICAgICAgICBjd2Q6IHN0cmluZztcbiAgICAgICAgY29uZmlnUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICAgICAgb3V0cHV0RGlyOiBzdHJpbmc7XG4gICAgICAgIG5wbURpcjogc3RyaW5nO1xuICAgICAgICBidWlsZE91dHB1dERpcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIH07XG59XG4vKipcbiAqIENvcHkgYXJ0aWZhY3RzIGZyb20gR2l0aHViIEFjdGlvbnMgaW50byBucG0gcGFja2FnZXMgYW5kIHJlYWR5IHRvIHB1Ymxpc2hcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcnRpZmFjdHNPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGhcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IHByb2Nlc3MuY3dkKClcbiAgICAgKi9cbiAgICBjd2Q/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byBgbmFwaWAgY29uZmlnIGpzb24gZmlsZVxuICAgICAqL1xuICAgIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byBgcGFja2FnZS5qc29uYFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICAgKi9cbiAgICBwYWNrYWdlSnNvblBhdGg/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIGFsbCBidWlsdCBgLm5vZGVgIGZpbGVzIHB1dCwgc2FtZSBhcyBgLS1vdXRwdXQtZGlyYCBvZiBidWlsZCBjb21tYW5kXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnLi9hcnRpZmFjdHMnXG4gICAgICovXG4gICAgb3V0cHV0RGlyPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ25wbSdcbiAgICAgKi9cbiAgICBucG1EaXI/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byB0aGUgYnVpbGQgb3V0cHV0IGRpciwgb25seSBuZWVkZWQgd2hlbiB0YXJnZXRzIGNvbnRhaW5zIGB3YXNtMzItd2FzaS0qYFxuICAgICAqL1xuICAgIGJ1aWxkT3V0cHV0RGlyPzogc3RyaW5nO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYXBwbHlEZWZhdWx0QXJ0aWZhY3RzT3B0aW9ucyhvcHRpb25zOiBBcnRpZmFjdHNPcHRpb25zKToge1xuICAgIGN3ZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICAgKi9cbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIHBhY2thZ2VKc29uUGF0aDogc3RyaW5nO1xuICAgIG91dHB1dERpcjogc3RyaW5nO1xuICAgIG5wbURpcjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gdGhlIGJ1aWxkIG91dHB1dCBkaXIsIG9ubHkgbmVlZGVkIHdoZW4gdGFyZ2V0cyBjb250YWlucyBgd2FzbTMyLXdhc2ktKmBcbiAgICAgKi9cbiAgICBidWlsZE91dHB1dERpcj86IHN0cmluZztcbn07XG4iLCJpbXBvcnQgeyB0eXBlIEFydGlmYWN0c09wdGlvbnMgfSBmcm9tICcuLi9kZWYvYXJ0aWZhY3RzLmpzJztcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNvbGxlY3RBcnRpZmFjdHModXNlck9wdGlvbnM6IEFydGlmYWN0c09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuIiwiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NsaXBhbmlvbic7XG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBCYXNlQnVpbGRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gICAgc3RhdGljIHBhdGhzOiBzdHJpbmdbXVtdO1xuICAgIHN0YXRpYyB1c2FnZTogaW1wb3J0KFwiY2xpcGFuaW9uXCIpLlVzYWdlO1xuICAgIHRhcmdldD86IHN0cmluZztcbiAgICBjd2Q/OiBzdHJpbmc7XG4gICAgbWFuaWZlc3RQYXRoPzogc3RyaW5nO1xuICAgIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gICAgcGFja2FnZUpzb25QYXRoPzogc3RyaW5nO1xuICAgIHRhcmdldERpcj86IHN0cmluZztcbiAgICBvdXRwdXREaXI/OiBzdHJpbmc7XG4gICAgcGxhdGZvcm0/OiBib29sZWFuO1xuICAgIGpzUGFja2FnZU5hbWU/OiBzdHJpbmc7XG4gICAgY29uc3RFbnVtPzogYm9vbGVhbjtcbiAgICBqc0JpbmRpbmc/OiBzdHJpbmc7XG4gICAgbm9Kc0JpbmRpbmc/OiBib29sZWFuO1xuICAgIGR0cz86IHN0cmluZztcbiAgICBkdHNIZWFkZXI/OiBzdHJpbmc7XG4gICAgbm9EdHNIZWFkZXI/OiBib29sZWFuO1xuICAgIGR0c0NhY2hlOiBib29sZWFuO1xuICAgIGVzbT86IGJvb2xlYW47XG4gICAgc3RyaXA/OiBib29sZWFuO1xuICAgIHJlbGVhc2U/OiBib29sZWFuO1xuICAgIHZlcmJvc2U/OiBib29sZWFuO1xuICAgIGJpbj86IHN0cmluZztcbiAgICBwYWNrYWdlPzogc3RyaW5nO1xuICAgIHByb2ZpbGU/OiBzdHJpbmc7XG4gICAgY3Jvc3NDb21waWxlPzogYm9vbGVhbjtcbiAgICB1c2VDcm9zcz86IGJvb2xlYW47XG4gICAgdXNlTmFwaUNyb3NzPzogYm9vbGVhbjtcbiAgICB3YXRjaD86IGJvb2xlYW47XG4gICAgZmVhdHVyZXM/OiBzdHJpbmdbXTtcbiAgICBhbGxGZWF0dXJlcz86IGJvb2xlYW47XG4gICAgbm9EZWZhdWx0RmVhdHVyZXM/OiBib29sZWFuO1xuICAgIGdldE9wdGlvbnMoKToge1xuICAgICAgICB0YXJnZXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgY3dkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIG1hbmlmZXN0UGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25maWdQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHBhY2thZ2VKc29uUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB0YXJnZXREaXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgb3V0cHV0RGlyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHBsYXRmb3JtOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICBqc1BhY2thZ2VOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0RW51bTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAganNCaW5kaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIG5vSnNCaW5kaW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICBkdHM6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgZHRzSGVhZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIG5vRHRzSGVhZGVyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICBkdHNDYWNoZTogYm9vbGVhbjtcbiAgICAgICAgZXNtOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICBzdHJpcDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgcmVsZWFzZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgdmVyYm9zZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgYmluOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHBhY2thZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgcHJvZmlsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjcm9zc0NvbXBpbGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIHVzZUNyb3NzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICB1c2VOYXBpQ3Jvc3M6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIHdhdGNoOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICBmZWF0dXJlczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIGFsbEZlYXR1cmVzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICBub0RlZmF1bHRGZWF0dXJlczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICB9O1xufVxuLyoqXG4gKiBCdWlsZCB0aGUgTkFQSS1SUyBwcm9qZWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBCdWlsZCBmb3IgdGhlIHRhcmdldCB0cmlwbGUsIGJ5cGFzc2VkIHRvIGBjYXJnbyBidWlsZCAtLXRhcmdldGBcbiAgICAgKi9cbiAgICB0YXJnZXQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoXG4gICAgICovXG4gICAgY3dkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYENhcmdvLnRvbWxgXG4gICAgICovXG4gICAgbWFuaWZlc3RQYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICAgKi9cbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICAgKi9cbiAgICBwYWNrYWdlSnNvblBhdGg/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogRGlyZWN0b3J5IGZvciBhbGwgY3JhdGUgZ2VuZXJhdGVkIGFydGlmYWN0cywgc2VlIGBjYXJnbyBidWlsZCAtLXRhcmdldC1kaXJgXG4gICAgICovXG4gICAgdGFyZ2V0RGlyPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gd2hlcmUgYWxsIHRoZSBidWlsdCBmaWxlcyB3b3VsZCBiZSBwdXQuIERlZmF1bHQgdG8gdGhlIGNyYXRlIGZvbGRlclxuICAgICAqL1xuICAgIG91dHB1dERpcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBZGQgcGxhdGZvcm0gdHJpcGxlIHRvIHRoZSBnZW5lcmF0ZWQgbm9kZWpzIGJpbmRpbmcgZmlsZSwgZWc6IGBbbmFtZV0ubGludXgteDY0LWdudS5ub2RlYFxuICAgICAqL1xuICAgIHBsYXRmb3JtPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBQYWNrYWdlIG5hbWUgaW4gZ2VuZXJhdGVkIGpzIGJpbmRpbmcgZmlsZS4gT25seSB3b3JrcyB3aXRoIGAtLXBsYXRmb3JtYCBmbGFnXG4gICAgICovXG4gICAganNQYWNrYWdlTmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGdlbmVyYXRlIGNvbnN0IGVudW0gZm9yIHR5cGVzY3JpcHQgYmluZGluZ3NcbiAgICAgKi9cbiAgICBjb25zdEVudW0/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFBhdGggYW5kIGZpbGVuYW1lIG9mIGdlbmVyYXRlZCBKUyBiaW5kaW5nIGZpbGUuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZy4gUmVsYXRpdmUgdG8gYC0tb3V0cHV0LWRpcmAuXG4gICAgICovXG4gICAganNCaW5kaW5nPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBKUyBiaW5kaW5nIGZpbGUuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZy5cbiAgICAgKi9cbiAgICBub0pzQmluZGluZz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUGF0aCBhbmQgZmlsZW5hbWUgb2YgZ2VuZXJhdGVkIHR5cGUgZGVmIGZpbGUuIFJlbGF0aXZlIHRvIGAtLW91dHB1dC1kaXJgXG4gICAgICovXG4gICAgZHRzPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBmaWxlIGhlYWRlciBmb3IgZ2VuZXJhdGVkIHR5cGUgZGVmIGZpbGUuIE9ubHkgd29ya3Mgd2hlbiBgdHlwZWRlZmAgZmVhdHVyZSBlbmFibGVkLlxuICAgICAqL1xuICAgIGR0c0hlYWRlcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGRlZmF1bHQgZmlsZSBoZWFkZXIgZm9yIGdlbmVyYXRlZCB0eXBlIGRlZiBmaWxlLiBPbmx5IHdvcmtzIHdoZW4gYHR5cGVkZWZgIGZlYXR1cmUgZW5hYmxlZC5cbiAgICAgKi9cbiAgICBub0R0c0hlYWRlcj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBlbmFibGUgdGhlIGR0cyBjYWNoZSwgZGVmYXVsdCB0byB0cnVlXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZHRzQ2FjaGU/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZW1pdCBhbiBFU00gSlMgYmluZGluZyBmaWxlIGluc3RlYWQgb2YgQ0pTIGZvcm1hdC4gT25seSB3b3JrcyB3aXRoIGAtLXBsYXRmb3JtYCBmbGFnLlxuICAgICAqL1xuICAgIGVzbT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogV2hldGhlciBzdHJpcCB0aGUgbGlicmFyeSB0byBhY2hpZXZlIHRoZSBtaW5pbXVtIGZpbGUgc2l6ZVxuICAgICAqL1xuICAgIHN0cmlwPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBCdWlsZCBpbiByZWxlYXNlIG1vZGVcbiAgICAgKi9cbiAgICByZWxlYXNlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBWZXJib3NlbHkgbG9nIGJ1aWxkIGNvbW1hbmQgdHJhY2VcbiAgICAgKi9cbiAgICB2ZXJib3NlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBCdWlsZCBvbmx5IHRoZSBzcGVjaWZpZWQgYmluYXJ5XG4gICAgICovXG4gICAgYmluPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEJ1aWxkIHRoZSBzcGVjaWZpZWQgbGlicmFyeSBvciB0aGUgb25lIGF0IGN3ZFxuICAgICAqL1xuICAgIHBhY2thZ2U/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQnVpbGQgYXJ0aWZhY3RzIHdpdGggdGhlIHNwZWNpZmllZCBwcm9maWxlXG4gICAgICovXG4gICAgcHJvZmlsZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBbZXhwZXJpbWVudGFsXSBjcm9zcy1jb21waWxlIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCB3aXRoIGBjYXJnby14d2luYCBvbiB3aW5kb3dzIGFuZCBgY2FyZ28temlnYnVpbGRgIG9uIG90aGVyIHBsYXRmb3JtXG4gICAgICovXG4gICAgY3Jvc3NDb21waWxlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBbZXhwZXJpbWVudGFsXSB1c2UgW2Nyb3NzXShodHRwczovL2dpdGh1Yi5jb20vY3Jvc3MtcnMvY3Jvc3MpIGluc3RlYWQgb2YgYGNhcmdvYFxuICAgICAqL1xuICAgIHVzZUNyb3NzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBbZXhwZXJpbWVudGFsXSB1c2UgQG5hcGktcnMvY3Jvc3MtdG9vbGNoYWluIHRvIGNyb3NzLWNvbXBpbGUgTGludXggYXJtL2FybTY0L3g2NCBnbnUgdGFyZ2V0cy5cbiAgICAgKi9cbiAgICB1c2VOYXBpQ3Jvc3M/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIHdhdGNoIHRoZSBjcmF0ZSBjaGFuZ2VzIGFuZCBidWlsZCBjb250aW51b3VzbHkgd2l0aCBgY2FyZ28td2F0Y2hgIGNyYXRlc1xuICAgICAqL1xuICAgIHdhdGNoPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBTcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBmZWF0dXJlcyB0byBhY3RpdmF0ZVxuICAgICAqL1xuICAgIGZlYXR1cmVzPzogc3RyaW5nW107XG4gICAgLyoqXG4gICAgICogQWN0aXZhdGUgYWxsIGF2YWlsYWJsZSBmZWF0dXJlc1xuICAgICAqL1xuICAgIGFsbEZlYXR1cmVzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBEbyBub3QgYWN0aXZhdGUgdGhlIGBkZWZhdWx0YCBmZWF0dXJlXG4gICAgICovXG4gICAgbm9EZWZhdWx0RmVhdHVyZXM/OiBib29sZWFuO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYXBwbHlEZWZhdWx0QnVpbGRPcHRpb25zKG9wdGlvbnM6IEJ1aWxkT3B0aW9ucyk6IHtcbiAgICAvKipcbiAgICAgKiBCdWlsZCBmb3IgdGhlIHRhcmdldCB0cmlwbGUsIGJ5cGFzc2VkIHRvIGBjYXJnbyBidWlsZCAtLXRhcmdldGBcbiAgICAgKi9cbiAgICB0YXJnZXQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoXG4gICAgICovXG4gICAgY3dkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYENhcmdvLnRvbWxgXG4gICAgICovXG4gICAgbWFuaWZlc3RQYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICAgKi9cbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICAgKi9cbiAgICBwYWNrYWdlSnNvblBhdGg/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogRGlyZWN0b3J5IGZvciBhbGwgY3JhdGUgZ2VuZXJhdGVkIGFydGlmYWN0cywgc2VlIGBjYXJnbyBidWlsZCAtLXRhcmdldC1kaXJgXG4gICAgICovXG4gICAgdGFyZ2V0RGlyPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gd2hlcmUgYWxsIHRoZSBidWlsdCBmaWxlcyB3b3VsZCBiZSBwdXQuIERlZmF1bHQgdG8gdGhlIGNyYXRlIGZvbGRlclxuICAgICAqL1xuICAgIG91dHB1dERpcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBZGQgcGxhdGZvcm0gdHJpcGxlIHRvIHRoZSBnZW5lcmF0ZWQgbm9kZWpzIGJpbmRpbmcgZmlsZSwgZWc6IGBbbmFtZV0ubGludXgteDY0LWdudS5ub2RlYFxuICAgICAqL1xuICAgIHBsYXRmb3JtPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBQYWNrYWdlIG5hbWUgaW4gZ2VuZXJhdGVkIGpzIGJpbmRpbmcgZmlsZS4gT25seSB3b3JrcyB3aXRoIGAtLXBsYXRmb3JtYCBmbGFnXG4gICAgICovXG4gICAganNQYWNrYWdlTmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGdlbmVyYXRlIGNvbnN0IGVudW0gZm9yIHR5cGVzY3JpcHQgYmluZGluZ3NcbiAgICAgKi9cbiAgICBjb25zdEVudW0/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFBhdGggYW5kIGZpbGVuYW1lIG9mIGdlbmVyYXRlZCBKUyBiaW5kaW5nIGZpbGUuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZy4gUmVsYXRpdmUgdG8gYC0tb3V0cHV0LWRpcmAuXG4gICAgICovXG4gICAganNCaW5kaW5nPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBKUyBiaW5kaW5nIGZpbGUuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZy5cbiAgICAgKi9cbiAgICBub0pzQmluZGluZz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUGF0aCBhbmQgZmlsZW5hbWUgb2YgZ2VuZXJhdGVkIHR5cGUgZGVmIGZpbGUuIFJlbGF0aXZlIHRvIGAtLW91dHB1dC1kaXJgXG4gICAgICovXG4gICAgZHRzPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBmaWxlIGhlYWRlciBmb3IgZ2VuZXJhdGVkIHR5cGUgZGVmIGZpbGUuIE9ubHkgd29ya3Mgd2hlbiBgdHlwZWRlZmAgZmVhdHVyZSBlbmFibGVkLlxuICAgICAqL1xuICAgIGR0c0hlYWRlcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGRlZmF1bHQgZmlsZSBoZWFkZXIgZm9yIGdlbmVyYXRlZCB0eXBlIGRlZiBmaWxlLiBPbmx5IHdvcmtzIHdoZW4gYHR5cGVkZWZgIGZlYXR1cmUgZW5hYmxlZC5cbiAgICAgKi9cbiAgICBub0R0c0hlYWRlcj86IGJvb2xlYW47XG4gICAgZHRzQ2FjaGU6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBlbWl0IGFuIEVTTSBKUyBiaW5kaW5nIGZpbGUgaW5zdGVhZCBvZiBDSlMgZm9ybWF0LiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcuXG4gICAgICovXG4gICAgZXNtPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHN0cmlwIHRoZSBsaWJyYXJ5IHRvIGFjaGlldmUgdGhlIG1pbmltdW0gZmlsZSBzaXplXG4gICAgICovXG4gICAgc3RyaXA/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEJ1aWxkIGluIHJlbGVhc2UgbW9kZVxuICAgICAqL1xuICAgIHJlbGVhc2U/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFZlcmJvc2VseSBsb2cgYnVpbGQgY29tbWFuZCB0cmFjZVxuICAgICAqL1xuICAgIHZlcmJvc2U/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEJ1aWxkIG9ubHkgdGhlIHNwZWNpZmllZCBiaW5hcnlcbiAgICAgKi9cbiAgICBiaW4/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQnVpbGQgdGhlIHNwZWNpZmllZCBsaWJyYXJ5IG9yIHRoZSBvbmUgYXQgY3dkXG4gICAgICovXG4gICAgcGFja2FnZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBCdWlsZCBhcnRpZmFjdHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByb2ZpbGVcbiAgICAgKi9cbiAgICBwcm9maWxlPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFtleHBlcmltZW50YWxdIGNyb3NzLWNvbXBpbGUgZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IHdpdGggYGNhcmdvLXh3aW5gIG9uIHdpbmRvd3MgYW5kIGBjYXJnby16aWdidWlsZGAgb24gb3RoZXIgcGxhdGZvcm1cbiAgICAgKi9cbiAgICBjcm9zc0NvbXBpbGU/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFtleHBlcmltZW50YWxdIHVzZSBbY3Jvc3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9jcm9zcy1ycy9jcm9zcykgaW5zdGVhZCBvZiBgY2FyZ29gXG4gICAgICovXG4gICAgdXNlQ3Jvc3M/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFtleHBlcmltZW50YWxdIHVzZSBAbmFwaS1ycy9jcm9zcy10b29sY2hhaW4gdG8gY3Jvc3MtY29tcGlsZSBMaW51eCBhcm0vYXJtNjQveDY0IGdudSB0YXJnZXRzLlxuICAgICAqL1xuICAgIHVzZU5hcGlDcm9zcz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogd2F0Y2ggdGhlIGNyYXRlIGNoYW5nZXMgYW5kIGJ1aWxkIGNvbnRpbnVvdXNseSB3aXRoIGBjYXJnby13YXRjaGAgY3JhdGVzXG4gICAgICovXG4gICAgd2F0Y2g/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGZlYXR1cmVzIHRvIGFjdGl2YXRlXG4gICAgICovXG4gICAgZmVhdHVyZXM/OiBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBBY3RpdmF0ZSBhbGwgYXZhaWxhYmxlIGZlYXR1cmVzXG4gICAgICovXG4gICAgYWxsRmVhdHVyZXM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIERvIG5vdCBhY3RpdmF0ZSB0aGUgYGRlZmF1bHRgIGZlYXR1cmVcbiAgICAgKi9cbiAgICBub0RlZmF1bHRGZWF0dXJlcz86IGJvb2xlYW47XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBCdWlsZE9wdGlvbnMgYXMgUmF3QnVpbGRPcHRpb25zIH0gZnJvbSAnLi4vZGVmL2J1aWxkLmpzJztcbnR5cGUgT3V0cHV0S2luZCA9ICdqcycgfCAnZHRzJyB8ICdub2RlJyB8ICdleGUnIHwgJ3dhc20nO1xudHlwZSBPdXRwdXQgPSB7XG4gICAga2luZDogT3V0cHV0S2luZDtcbiAgICBwYXRoOiBzdHJpbmc7XG59O1xudHlwZSBCdWlsZE9wdGlvbnMgPSBSYXdCdWlsZE9wdGlvbnMgJiB7XG4gICAgY2FyZ29PcHRpb25zPzogc3RyaW5nW107XG59O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYnVpbGRQcm9qZWN0KHJhd09wdGlvbnM6IEJ1aWxkT3B0aW9ucyk6IFByb21pc2U8e1xuICAgIHRhc2s6IFByb21pc2U8T3V0cHV0W10+O1xuICAgIGFib3J0OiAoKSA9PiB2b2lkO1xufT47XG5leHBvcnQgaW50ZXJmYWNlIFdyaXRlSnNCaW5kaW5nT3B0aW9ucyB7XG4gICAgcGxhdGZvcm0/OiBib29sZWFuO1xuICAgIG5vSnNCaW5kaW5nPzogYm9vbGVhbjtcbiAgICBpZGVudHM6IHN0cmluZ1tdO1xuICAgIGpzQmluZGluZz86IHN0cmluZztcbiAgICBlc20/OiBib29sZWFuO1xuICAgIGJpbmFyeU5hbWU6IHN0cmluZztcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICBvdXRwdXREaXI6IHN0cmluZztcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHdyaXRlSnNCaW5kaW5nKG9wdGlvbnM6IFdyaXRlSnNCaW5kaW5nT3B0aW9ucyk6IFByb21pc2U8T3V0cHV0IHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVUeXBlRGVmT3B0aW9ucyB7XG4gICAgdHlwZURlZkRpcjogc3RyaW5nO1xuICAgIG5vRHRzSGVhZGVyPzogYm9vbGVhbjtcbiAgICBkdHNIZWFkZXI/OiBzdHJpbmc7XG4gICAgZHRzSGVhZGVyRmlsZT86IHN0cmluZztcbiAgICBjb25maWdEdHNIZWFkZXI/OiBzdHJpbmc7XG4gICAgY29uZmlnRHRzSGVhZGVyRmlsZT86IHN0cmluZztcbiAgICBjb25zdEVudW0/OiBib29sZWFuO1xuICAgIGN3ZDogc3RyaW5nO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gZ2VuZXJhdGVUeXBlRGVmKG9wdGlvbnM6IEdlbmVyYXRlVHlwZURlZk9wdGlvbnMpOiBQcm9taXNlPHtcbiAgICBleHBvcnRzOiBzdHJpbmdbXTtcbiAgICBkdHM6IHN0cmluZztcbn0+O1xuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NsaXBhbmlvbic7XG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBCYXNlQ3JlYXRlTnBtRGlyc0NvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgICBzdGF0aWMgcGF0aHM6IHN0cmluZ1tdW107XG4gICAgc3RhdGljIHVzYWdlOiBpbXBvcnQoXCJjbGlwYW5pb25cIikuVXNhZ2U7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICBucG1EaXI6IHN0cmluZztcbiAgICBkcnlSdW46IGJvb2xlYW47XG4gICAgZ2V0T3B0aW9ucygpOiB7XG4gICAgICAgIGN3ZDogc3RyaW5nO1xuICAgICAgICBjb25maWdQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHBhY2thZ2VKc29uUGF0aDogc3RyaW5nO1xuICAgICAgICBucG1EaXI6IHN0cmluZztcbiAgICAgICAgZHJ5UnVuOiBib29sZWFuO1xuICAgIH07XG59XG4vKipcbiAqIENyZWF0ZSBucG0gcGFja2FnZSBkaXJzIGZvciBkaWZmZXJlbnQgcGxhdGZvcm1zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlTnBtRGlyc09wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgcHJvY2Vzcy5jd2QoKVxuICAgICAqL1xuICAgIGN3ZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAgICovXG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBwYWNrYWdlLmpzb25gXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAncGFja2FnZS5qc29uJ1xuICAgICAqL1xuICAgIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIG5wbSBwYWNrYWdlcyBwdXRcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICducG0nXG4gICAgICovXG4gICAgbnBtRGlyPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIERyeSBydW4gd2l0aG91dCB0b3VjaGluZyBmaWxlIHN5c3RlbVxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBkcnlSdW4/OiBib29sZWFuO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYXBwbHlEZWZhdWx0Q3JlYXRlTnBtRGlyc09wdGlvbnMob3B0aW9uczogQ3JlYXRlTnBtRGlyc09wdGlvbnMpOiB7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byBgbmFwaWAgY29uZmlnIGpzb24gZmlsZVxuICAgICAqL1xuICAgIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gICAgcGFja2FnZUpzb25QYXRoOiBzdHJpbmc7XG4gICAgbnBtRGlyOiBzdHJpbmc7XG4gICAgZHJ5UnVuOiBib29sZWFuO1xufTtcbiIsImltcG9ydCB7IHR5cGUgQ3JlYXRlTnBtRGlyc09wdGlvbnMgfSBmcm9tICcuLi9kZWYvY3JlYXRlLW5wbS1kaXJzLmpzJztcbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZU1ldGEge1xuICAgICdkaXN0LXRhZ3MnOiB7XG4gICAgICAgIFtpbmRleDogc3RyaW5nXTogc3RyaW5nO1xuICAgIH07XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVOcG1EaXJzKHVzZXJPcHRpb25zOiBDcmVhdGVOcG1EaXJzT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4iLCJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY2xpcGFuaW9uJztcbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIEJhc2VOZXdDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gICAgc3RhdGljIHBhdGhzOiBzdHJpbmdbXVtdO1xuICAgIHN0YXRpYyB1c2FnZTogaW1wb3J0KFwiY2xpcGFuaW9uXCIpLlVzYWdlO1xuICAgICQkcGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICQkbmFtZT86IHN0cmluZztcbiAgICBtaW5Ob2RlQXBpVmVyc2lvbjogbnVtYmVyO1xuICAgIHBhY2thZ2VNYW5hZ2VyOiBzdHJpbmc7XG4gICAgbGljZW5zZTogc3RyaW5nO1xuICAgIHRhcmdldHM6IHN0cmluZ1tdO1xuICAgIGVuYWJsZURlZmF1bHRUYXJnZXRzOiBib29sZWFuO1xuICAgIGVuYWJsZUFsbFRhcmdldHM6IGJvb2xlYW47XG4gICAgZW5hYmxlVHlwZURlZjogYm9vbGVhbjtcbiAgICBlbmFibGVHaXRodWJBY3Rpb25zOiBib29sZWFuO1xuICAgIHRlc3RGcmFtZXdvcms6IHN0cmluZztcbiAgICBkcnlSdW46IGJvb2xlYW47XG4gICAgZ2V0T3B0aW9ucygpOiB7XG4gICAgICAgIHBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBtaW5Ob2RlQXBpVmVyc2lvbjogbnVtYmVyO1xuICAgICAgICBwYWNrYWdlTWFuYWdlcjogc3RyaW5nO1xuICAgICAgICBsaWNlbnNlOiBzdHJpbmc7XG4gICAgICAgIHRhcmdldHM6IHN0cmluZ1tdO1xuICAgICAgICBlbmFibGVEZWZhdWx0VGFyZ2V0czogYm9vbGVhbjtcbiAgICAgICAgZW5hYmxlQWxsVGFyZ2V0czogYm9vbGVhbjtcbiAgICAgICAgZW5hYmxlVHlwZURlZjogYm9vbGVhbjtcbiAgICAgICAgZW5hYmxlR2l0aHViQWN0aW9uczogYm9vbGVhbjtcbiAgICAgICAgdGVzdEZyYW1ld29yazogc3RyaW5nO1xuICAgICAgICBkcnlSdW46IGJvb2xlYW47XG4gICAgfTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHByb2plY3Qgd2l0aCBwcmUtY29uZmlndXJlZCBib2lsZXJwbGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ld09wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIFRoZSBwYXRoIHdoZXJlIHRoZSBOQVBJLVJTIHByb2plY3Qgd2lsbCBiZSBjcmVhdGVkLlxuICAgICAqL1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIHByb2plY3QsIGRlZmF1bHQgdG8gdGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSBpZiBub3QgcHJvdmlkZWRcbiAgICAgKi9cbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBtaW5pbXVtIE5vZGUtQVBJIHZlcnNpb24gdG8gc3VwcG9ydFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgNFxuICAgICAqL1xuICAgIG1pbk5vZGVBcGlWZXJzaW9uPzogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIFRoZSBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlLiBPbmx5IHN1cHBvcnQgeWFybiA0LnggZm9yIG5vdy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICd5YXJuJ1xuICAgICAqL1xuICAgIHBhY2thZ2VNYW5hZ2VyPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIExpY2Vuc2UgZm9yIG9wZW4tc291cmNlZCBwcm9qZWN0XG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnTUlUJ1xuICAgICAqL1xuICAgIGxpY2Vuc2U/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQWxsIHRhcmdldHMgdGhlIGNyYXRlIHdpbGwgYmUgY29tcGlsZWQgZm9yLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgW11cbiAgICAgKi9cbiAgICB0YXJnZXRzPzogc3RyaW5nW107XG4gICAgLyoqXG4gICAgICogV2hldGhlciBlbmFibGUgZGVmYXVsdCB0YXJnZXRzXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlRGVmYXVsdFRhcmdldHM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZW5hYmxlIGFsbCB0YXJnZXRzXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIGVuYWJsZUFsbFRhcmdldHM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZW5hYmxlIHRoZSBgdHlwZS1kZWZgIGZlYXR1cmUgZm9yIHR5cGVzY3JpcHQgZGVmaW5pdGlvbnMgYXV0by1nZW5lcmF0aW9uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlVHlwZURlZj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogV2hldGhlciBnZW5lcmF0ZSBwcmVjb25maWd1cmVkIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93XG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlR2l0aHViQWN0aW9ucz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVGhlIEphdmFTY3JpcHQgdGVzdCBmcmFtZXdvcmsgdG8gdXNlLCBvbmx5IHN1cHBvcnQgYGF2YWAgZm9yIG5vd1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ2F2YSdcbiAgICAgKi9cbiAgICB0ZXN0RnJhbWV3b3JrPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcnVuIHRoZSBjb21tYW5kIGluIGRyeS1ydW4gbW9kZVxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBkcnlSdW4/OiBib29sZWFuO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYXBwbHlEZWZhdWx0TmV3T3B0aW9ucyhvcHRpb25zOiBOZXdPcHRpb25zKToge1xuICAgIC8qKlxuICAgICAqIFRoZSBwYXRoIHdoZXJlIHRoZSBOQVBJLVJTIHByb2plY3Qgd2lsbCBiZSBjcmVhdGVkLlxuICAgICAqL1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIHByb2plY3QsIGRlZmF1bHQgdG8gdGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSBpZiBub3QgcHJvdmlkZWRcbiAgICAgKi9cbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG1pbk5vZGVBcGlWZXJzaW9uOiBudW1iZXI7XG4gICAgcGFja2FnZU1hbmFnZXI6IHN0cmluZztcbiAgICBsaWNlbnNlOiBzdHJpbmc7XG4gICAgdGFyZ2V0czogc3RyaW5nW107XG4gICAgZW5hYmxlRGVmYXVsdFRhcmdldHM6IGJvb2xlYW47XG4gICAgZW5hYmxlQWxsVGFyZ2V0czogYm9vbGVhbjtcbiAgICBlbmFibGVUeXBlRGVmOiBib29sZWFuO1xuICAgIGVuYWJsZUdpdGh1YkFjdGlvbnM6IGJvb2xlYW47XG4gICAgdGVzdEZyYW1ld29yazogc3RyaW5nO1xuICAgIGRyeVJ1bjogYm9vbGVhbjtcbn07XG4iLCJpbXBvcnQgeyB0eXBlIE5ld09wdGlvbnMgYXMgUmF3TmV3T3B0aW9ucyB9IGZyb20gJy4uL2RlZi9uZXcuanMnO1xudHlwZSBOZXdPcHRpb25zID0gUmVxdWlyZWQ8UmF3TmV3T3B0aW9ucz47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBuZXdQcm9qZWN0KHVzZXJPcHRpb25zOiBSYXdOZXdPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbmV4cG9ydCB0eXBlIHsgTmV3T3B0aW9ucyB9O1xuIiwiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NsaXBhbmlvbic7XG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBCYXNlUHJlUHVibGlzaENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgICBzdGF0aWMgcGF0aHM6IHN0cmluZ1tdW107XG4gICAgc3RhdGljIHVzYWdlOiBpbXBvcnQoXCJjbGlwYW5pb25cIikuVXNhZ2U7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICBucG1EaXI6IHN0cmluZztcbiAgICB0YWdTdHlsZTogc3RyaW5nO1xuICAgIGdoUmVsZWFzZTogYm9vbGVhbjtcbiAgICBnaFJlbGVhc2VOYW1lPzogc3RyaW5nO1xuICAgIGdoUmVsZWFzZUlkPzogc3RyaW5nO1xuICAgIHNraXBPcHRpb25hbFB1Ymxpc2g6IGJvb2xlYW47XG4gICAgZHJ5UnVuOiBib29sZWFuO1xuICAgIGdldE9wdGlvbnMoKToge1xuICAgICAgICBjd2Q6IHN0cmluZztcbiAgICAgICAgY29uZmlnUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICAgICAgbnBtRGlyOiBzdHJpbmc7XG4gICAgICAgIHRhZ1N0eWxlOiBzdHJpbmc7XG4gICAgICAgIGdoUmVsZWFzZTogYm9vbGVhbjtcbiAgICAgICAgZ2hSZWxlYXNlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBnaFJlbGVhc2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBza2lwT3B0aW9uYWxQdWJsaXNoOiBib29sZWFuO1xuICAgICAgICBkcnlSdW46IGJvb2xlYW47XG4gICAgfTtcbn1cbi8qKlxuICogVXBkYXRlIHBhY2thZ2UuanNvbiBhbmQgY29weSBhZGRvbnMgaW50byBwZXIgcGxhdGZvcm0gcGFja2FnZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVQdWJsaXNoT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAgICovXG4gICAgY3dkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICAgKi9cbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdwYWNrYWdlLmpzb24nXG4gICAgICovXG4gICAgcGFja2FnZUpzb25QYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ25wbSdcbiAgICAgKi9cbiAgICBucG1EaXI/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogZ2l0IHRhZyBzdHlsZSwgYG5wbWAgb3IgYGxlcm5hYFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ2xlcm5hJ1xuICAgICAqL1xuICAgIHRhZ1N0eWxlPzogJ25wbScgfCAnbGVybmEnO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgY3JlYXRlIEdpdEh1YiByZWxlYXNlXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZ2hSZWxlYXNlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBHaXRIdWIgcmVsZWFzZSBuYW1lXG4gICAgICovXG4gICAgZ2hSZWxlYXNlTmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBFeGlzdGluZyBHaXRIdWIgcmVsZWFzZSBpZFxuICAgICAqL1xuICAgIGdoUmVsZWFzZUlkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgc2tpcCBvcHRpb25hbERlcGVuZGVuY2llcyBwYWNrYWdlcyBwdWJsaXNoXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHNraXBPcHRpb25hbFB1Ymxpc2g/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIERyeSBydW4gd2l0aG91dCB0b3VjaGluZyBmaWxlIHN5c3RlbVxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBkcnlSdW4/OiBib29sZWFuO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYXBwbHlEZWZhdWx0UHJlUHVibGlzaE9wdGlvbnMob3B0aW9uczogUHJlUHVibGlzaE9wdGlvbnMpOiB7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byBgbmFwaWAgY29uZmlnIGpzb24gZmlsZVxuICAgICAqL1xuICAgIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gICAgcGFja2FnZUpzb25QYXRoOiBzdHJpbmc7XG4gICAgbnBtRGlyOiBzdHJpbmc7XG4gICAgdGFnU3R5bGU6IHN0cmluZztcbiAgICBnaFJlbGVhc2U6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogR2l0SHViIHJlbGVhc2UgbmFtZVxuICAgICAqL1xuICAgIGdoUmVsZWFzZU5hbWU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogRXhpc3RpbmcgR2l0SHViIHJlbGVhc2UgaWRcbiAgICAgKi9cbiAgICBnaFJlbGVhc2VJZD86IHN0cmluZztcbiAgICBza2lwT3B0aW9uYWxQdWJsaXNoOiBib29sZWFuO1xuICAgIGRyeVJ1bjogYm9vbGVhbjtcbn07XG4iLCJpbXBvcnQgeyB0eXBlIFByZVB1Ymxpc2hPcHRpb25zIH0gZnJvbSAnLi4vZGVmL3ByZS1wdWJsaXNoLmpzJztcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHByZVB1Ymxpc2godXNlck9wdGlvbnM6IFByZVB1Ymxpc2hPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiIsImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjbGlwYW5pb24nO1xuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgQmFzZVJlbmFtZUNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgICBzdGF0aWMgcGF0aHM6IHN0cmluZ1tdW107XG4gICAgc3RhdGljIHVzYWdlOiBpbXBvcnQoXCJjbGlwYW5pb25cIikuVXNhZ2U7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICBucG1EaXI6IHN0cmluZztcbiAgICAkJG5hbWU/OiBzdHJpbmc7XG4gICAgYmluYXJ5TmFtZT86IHN0cmluZztcbiAgICBwYWNrYWdlTmFtZT86IHN0cmluZztcbiAgICBtYW5pZmVzdFBhdGg6IHN0cmluZztcbiAgICByZXBvc2l0b3J5Pzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGdldE9wdGlvbnMoKToge1xuICAgICAgICBjd2Q6IHN0cmluZztcbiAgICAgICAgY29uZmlnUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICAgICAgbnBtRGlyOiBzdHJpbmc7XG4gICAgICAgIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgYmluYXJ5TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBwYWNrYWdlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBtYW5pZmVzdFBhdGg6IHN0cmluZztcbiAgICAgICAgcmVwb3NpdG9yeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIH07XG59XG4vKipcbiAqIFJlbmFtZSB0aGUgTkFQSS1SUyBwcm9qZWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuYW1lT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAgICovXG4gICAgY3dkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICAgKi9cbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdwYWNrYWdlLmpzb24nXG4gICAgICovXG4gICAgcGFja2FnZUpzb25QYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ25wbSdcbiAgICAgKi9cbiAgICBucG1EaXI/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIG5ldyBuYW1lIG9mIHRoZSBwcm9qZWN0XG4gICAgICovXG4gICAgbmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgbmV3IGJpbmFyeSBuYW1lICoubm9kZSBmaWxlc1xuICAgICAqL1xuICAgIGJpbmFyeU5hbWU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIG5ldyBwYWNrYWdlIG5hbWUgb2YgdGhlIHByb2plY3RcbiAgICAgKi9cbiAgICBwYWNrYWdlTmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBDYXJnby50b21sYFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ0NhcmdvLnRvbWwnXG4gICAgICovXG4gICAgbWFuaWZlc3RQYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBuZXcgcmVwb3NpdG9yeSBvZiB0aGUgcHJvamVjdFxuICAgICAqL1xuICAgIHJlcG9zaXRvcnk/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIG5ldyBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvamVjdFxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYXBwbHlEZWZhdWx0UmVuYW1lT3B0aW9ucyhvcHRpb25zOiBSZW5hbWVPcHRpb25zKToge1xuICAgIGN3ZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICAgKi9cbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIHBhY2thZ2VKc29uUGF0aDogc3RyaW5nO1xuICAgIG5wbURpcjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBuZXcgbmFtZSBvZiB0aGUgcHJvamVjdFxuICAgICAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIG5ldyBiaW5hcnkgbmFtZSAqLm5vZGUgZmlsZXNcbiAgICAgKi9cbiAgICBiaW5hcnlOYW1lPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBuZXcgcGFja2FnZSBuYW1lIG9mIHRoZSBwcm9qZWN0XG4gICAgICovXG4gICAgcGFja2FnZU5hbWU/OiBzdHJpbmc7XG4gICAgbWFuaWZlc3RQYXRoOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIG5ldyByZXBvc2l0b3J5IG9mIHRoZSBwcm9qZWN0XG4gICAgICovXG4gICAgcmVwb3NpdG9yeT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgbmV3IGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9qZWN0XG4gICAgICovXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59O1xuIiwiaW1wb3J0IHsgdHlwZSBSZW5hbWVPcHRpb25zIH0gZnJvbSAnLi4vZGVmL3JlbmFtZS5qcyc7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiByZW5hbWVQcm9qZWN0KHVzZXJPcHRpb25zOiBSZW5hbWVPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiIsImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjbGlwYW5pb24nO1xuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgQmFzZVVuaXZlcnNhbGl6ZUNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgICBzdGF0aWMgcGF0aHM6IHN0cmluZ1tdW107XG4gICAgc3RhdGljIHVzYWdlOiBpbXBvcnQoXCJjbGlwYW5pb25cIikuVXNhZ2U7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICBvdXRwdXREaXI6IHN0cmluZztcbiAgICBnZXRPcHRpb25zKCk6IHtcbiAgICAgICAgY3dkOiBzdHJpbmc7XG4gICAgICAgIGNvbmZpZ1BhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgcGFja2FnZUpzb25QYXRoOiBzdHJpbmc7XG4gICAgICAgIG91dHB1dERpcjogc3RyaW5nO1xuICAgIH07XG59XG4vKipcbiAqIENvbWJpbGUgYnVpbHQgYmluYXJpZXMgaW50byBvbmUgdW5pdmVyc2FsIGJpbmFyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVuaXZlcnNhbGl6ZU9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgcHJvY2Vzcy5jd2QoKVxuICAgICAqL1xuICAgIGN3ZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAgICovXG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBwYWNrYWdlLmpzb25gXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAncGFja2FnZS5qc29uJ1xuICAgICAqL1xuICAgIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgYWxsIGJ1aWx0IGAubm9kZWAgZmlsZXMgcHV0LCBzYW1lIGFzIGAtLW91dHB1dC1kaXJgIG9mIGJ1aWxkIGNvbW1hbmRcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICcuLydcbiAgICAgKi9cbiAgICBvdXRwdXREaXI/OiBzdHJpbmc7XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBhcHBseURlZmF1bHRVbml2ZXJzYWxpemVPcHRpb25zKG9wdGlvbnM6IFVuaXZlcnNhbGl6ZU9wdGlvbnMpOiB7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byBgbmFwaWAgY29uZmlnIGpzb24gZmlsZVxuICAgICAqL1xuICAgIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gICAgcGFja2FnZUpzb25QYXRoOiBzdHJpbmc7XG4gICAgb3V0cHV0RGlyOiBzdHJpbmc7XG59O1xuIiwiaW1wb3J0IHsgdHlwZSBVbml2ZXJzYWxpemVPcHRpb25zIH0gZnJvbSAnLi4vZGVmL3VuaXZlcnNhbGl6ZS5qcyc7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1bml2ZXJzYWxpemVCaW5hcmllcyh1c2VyT3B0aW9uczogVW5pdmVyc2FsaXplT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4iLCJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY2xpcGFuaW9uJztcbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIEJhc2VWZXJzaW9uQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAgIHN0YXRpYyBwYXRoczogc3RyaW5nW11bXTtcbiAgICBzdGF0aWMgdXNhZ2U6IGltcG9ydChcImNsaXBhbmlvblwiKS5Vc2FnZTtcbiAgICBjd2Q6IHN0cmluZztcbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIHBhY2thZ2VKc29uUGF0aDogc3RyaW5nO1xuICAgIG5wbURpcjogc3RyaW5nO1xuICAgIGdldE9wdGlvbnMoKToge1xuICAgICAgICBjd2Q6IHN0cmluZztcbiAgICAgICAgY29uZmlnUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICAgICAgbnBtRGlyOiBzdHJpbmc7XG4gICAgfTtcbn1cbi8qKlxuICogVXBkYXRlIHZlcnNpb24gaW4gY3JlYXRlZCBucG0gcGFja2FnZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAgICovXG4gICAgY3dkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICAgKi9cbiAgICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdwYWNrYWdlLmpzb24nXG4gICAgICovXG4gICAgcGFja2FnZUpzb25QYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ25wbSdcbiAgICAgKi9cbiAgICBucG1EaXI/OiBzdHJpbmc7XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBhcHBseURlZmF1bHRWZXJzaW9uT3B0aW9ucyhvcHRpb25zOiBWZXJzaW9uT3B0aW9ucyk6IHtcbiAgICBjd2Q6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAgICovXG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICBwYWNrYWdlSnNvblBhdGg6IHN0cmluZztcbiAgICBucG1EaXI6IHN0cmluZztcbn07XG4iLCJpbXBvcnQgeyB0eXBlIFZlcnNpb25PcHRpb25zIH0gZnJvbSAnLi4vZGVmL3ZlcnNpb24uanMnO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdmVyc2lvbih1c2VyT3B0aW9uczogVmVyc2lvbk9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuIiwiaW1wb3J0IHsgQmFzZUFydGlmYWN0c0NvbW1hbmQgfSBmcm9tICcuLi9kZWYvYXJ0aWZhY3RzLmpzJztcbmV4cG9ydCBkZWNsYXJlIGNsYXNzIEFydGlmYWN0c0NvbW1hbmQgZXh0ZW5kcyBCYXNlQXJ0aWZhY3RzQ29tbWFuZCB7XG4gICAgc3RhdGljIHVzYWdlOiBpbXBvcnQoXCJjbGlwYW5pb25cIikuVXNhZ2U7XG4gICAgc3RhdGljIHBhdGhzOiBzdHJpbmdbXVtdO1xuICAgIGV4ZWN1dGUoKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCB7IEJhc2VCdWlsZENvbW1hbmQgfSBmcm9tICcuLi9kZWYvYnVpbGQuanMnO1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgQnVpbGRDb21tYW5kIGV4dGVuZHMgQmFzZUJ1aWxkQ29tbWFuZCB7XG4gICAgcGlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNhcmdvT3B0aW9uczogc3RyaW5nW107XG4gICAgZXhlY3V0ZSgpOiBQcm9taXNlPHZvaWQ+O1xufVxuIiwiaW1wb3J0IHsgQmFzZUNyZWF0ZU5wbURpcnNDb21tYW5kIH0gZnJvbSAnLi4vZGVmL2NyZWF0ZS1ucG0tZGlycy5qcyc7XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBDcmVhdGVOcG1EaXJzQ29tbWFuZCBleHRlbmRzIEJhc2VDcmVhdGVOcG1EaXJzQ29tbWFuZCB7XG4gICAgZXhlY3V0ZSgpOiBQcm9taXNlPHZvaWQ+O1xufVxuIiwiaW1wb3J0IHsgQmFzZU5ld0NvbW1hbmQgfSBmcm9tICcuLi9kZWYvbmV3LmpzJztcbmV4cG9ydCBkZWNsYXJlIGNsYXNzIE5ld0NvbW1hbmQgZXh0ZW5kcyBCYXNlTmV3Q29tbWFuZCB7XG4gICAgaW50ZXJhY3RpdmU6IGJvb2xlYW47XG4gICAgZXhlY3V0ZSgpOiBQcm9taXNlPDAgfCAxPjtcbiAgICBwcml2YXRlIGZldGNoT3B0aW9ucztcbiAgICBwcml2YXRlIGZldGNoTmFtZTtcbiAgICBwcml2YXRlIGZldGNoTGljZW5zZTtcbiAgICBwcml2YXRlIGZldGNoTmFwaVZlcnNpb247XG4gICAgcHJpdmF0ZSBmZXRjaFRhcmdldHM7XG4gICAgcHJpdmF0ZSBmZXRjaFR5cGVEZWY7XG4gICAgcHJpdmF0ZSBmZXRjaEdpdGh1YkFjdGlvbnM7XG59XG4iLCJpbXBvcnQgeyBCYXNlUHJlUHVibGlzaENvbW1hbmQgfSBmcm9tICcuLi9kZWYvcHJlLXB1Ymxpc2guanMnO1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgUHJlUHVibGlzaENvbW1hbmQgZXh0ZW5kcyBCYXNlUHJlUHVibGlzaENvbW1hbmQge1xuICAgIGV4ZWN1dGUoKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCB7IEJhc2VSZW5hbWVDb21tYW5kIH0gZnJvbSAnLi4vZGVmL3JlbmFtZS5qcyc7XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBSZW5hbWVDb21tYW5kIGV4dGVuZHMgQmFzZVJlbmFtZUNvbW1hbmQge1xuICAgIGV4ZWN1dGUoKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCB7IEJhc2VVbml2ZXJzYWxpemVDb21tYW5kIH0gZnJvbSAnLi4vZGVmL3VuaXZlcnNhbGl6ZS5qcyc7XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBVbml2ZXJzYWxpemVDb21tYW5kIGV4dGVuZHMgQmFzZVVuaXZlcnNhbGl6ZUNvbW1hbmQge1xuICAgIGV4ZWN1dGUoKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCB7IEJhc2VWZXJzaW9uQ29tbWFuZCB9IGZyb20gJy4uL2RlZi92ZXJzaW9uLmpzJztcbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFZlcnNpb25Db21tYW5kIGV4dGVuZHMgQmFzZVZlcnNpb25Db21tYW5kIHtcbiAgICBleGVjdXRlKCk6IFByb21pc2U8dm9pZD47XG59XG4iLCJleHBvcnQgdHlwZSBQbGF0Zm9ybSA9IE5vZGVKUy5QbGF0Zm9ybSB8ICd3YXNtJyB8ICd3YXNpJyB8ICdvcGVuaGFybW9ueSc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBVTklWRVJTQUxfVEFSR0VUUzoge1xuICAgIHJlYWRvbmx5ICd1bml2ZXJzYWwtYXBwbGUtZGFyd2luJzogcmVhZG9ubHkgW1wiYWFyY2g2NC1hcHBsZS1kYXJ3aW5cIiwgXCJ4ODZfNjQtYXBwbGUtZGFyd2luXCJdO1xufTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IEFWQUlMQUJMRV9UQVJHRVRTOiByZWFkb25seSBbXCJhYXJjaDY0LWFwcGxlLWRhcndpblwiLCBcImFhcmNoNjQtbGludXgtYW5kcm9pZFwiLCBcImFhcmNoNjQtdW5rbm93bi1saW51eC1nbnVcIiwgXCJhYXJjaDY0LXVua25vd24tbGludXgtbXVzbFwiLCBcImFhcmNoNjQtdW5rbm93bi1saW51eC1vaG9zXCIsIFwiYWFyY2g2NC1wYy13aW5kb3dzLW1zdmNcIiwgXCJ4ODZfNjQtYXBwbGUtZGFyd2luXCIsIFwieDg2XzY0LXBjLXdpbmRvd3MtbXN2Y1wiLCBcIng4Nl82NC1wYy13aW5kb3dzLWdudVwiLCBcIng4Nl82NC11bmtub3duLWxpbnV4LWdudVwiLCBcIng4Nl82NC11bmtub3duLWxpbnV4LW11c2xcIiwgXCJ4ODZfNjQtdW5rbm93bi1saW51eC1vaG9zXCIsIFwieDg2XzY0LXVua25vd24tZnJlZWJzZFwiLCBcImk2ODYtcGMtd2luZG93cy1tc3ZjXCIsIFwiYXJtdjctdW5rbm93bi1saW51eC1nbnVlYWJpaGZcIiwgXCJhcm12Ny11bmtub3duLWxpbnV4LW11c2xlYWJpaGZcIiwgXCJhcm12Ny1saW51eC1hbmRyb2lkZWFiaVwiLCBcInVuaXZlcnNhbC1hcHBsZS1kYXJ3aW5cIiwgXCJsb29uZ2FyY2g2NC11bmtub3duLWxpbnV4LWdudVwiLCBcInJpc2N2NjRnYy11bmtub3duLWxpbnV4LWdudVwiLCBcInBvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251XCIsIFwiczM5MHgtdW5rbm93bi1saW51eC1nbnVcIiwgXCJ3YXNtMzItd2FzaS1wcmV2aWV3MS10aHJlYWRzXCIsIFwid2FzbTMyLXdhc2lwMS10aHJlYWRzXCJdO1xuZXhwb3J0IHR5cGUgVGFyZ2V0VHJpcGxlID0gKHR5cGVvZiBBVkFJTEFCTEVfVEFSR0VUUylbbnVtYmVyXTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IERFRkFVTFRfVEFSR0VUUzogcmVhZG9ubHkgW1wieDg2XzY0LWFwcGxlLWRhcndpblwiLCBcImFhcmNoNjQtYXBwbGUtZGFyd2luXCIsIFwieDg2XzY0LXBjLXdpbmRvd3MtbXN2Y1wiLCBcIng4Nl82NC11bmtub3duLWxpbnV4LWdudVwiXTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IFRBUkdFVF9MSU5LRVI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG50eXBlIE5vZGVKU0FyY2ggPSAnYXJtJyB8ICdhcm02NCcgfCAnaWEzMicgfCAnbG9vbmc2NCcgfCAnbWlwcycgfCAnbWlwc2VsJyB8ICdwcGMnIHwgJ3BwYzY0JyB8ICdyaXNjdjY0JyB8ICdzMzkwJyB8ICdzMzkweCcgfCAneDMyJyB8ICd4NjQnIHwgJ3VuaXZlcnNhbCcgfCAnd2FzbTMyJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IE5vZGVBcmNoVG9DcHU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBVbmlBcmNoc0J5UGxhdGZvcm06IFBhcnRpYWw8UmVjb3JkPFBsYXRmb3JtLCBOb2RlSlNBcmNoW10+PjtcbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0IHtcbiAgICB0cmlwbGU6IHN0cmluZztcbiAgICBwbGF0Zm9ybUFyY2hBQkk6IHN0cmluZztcbiAgICBwbGF0Zm9ybTogUGxhdGZvcm07XG4gICAgYXJjaDogTm9kZUpTQXJjaDtcbiAgICBhYmk6IHN0cmluZyB8IG51bGw7XG59XG4vKipcbiAqIEEgdHJpcGxlIGlzIGEgc3BlY2lmaWMgZm9ybWF0IGZvciBzcGVjaWZ5aW5nIGEgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cbiAqIFRyaXBsZXMgbWF5IGJlIHJlZmVycmVkIHRvIGFzIGEgdGFyZ2V0IHRyaXBsZSB3aGljaCBpcyB0aGUgYXJjaGl0ZWN0dXJlIGZvciB0aGUgYXJ0aWZhY3QgcHJvZHVjZWQsIGFuZCB0aGUgaG9zdCB0cmlwbGUgd2hpY2ggaXMgdGhlIGFyY2hpdGVjdHVyZSB0aGF0IHRoZSBjb21waWxlciBpcyBydW5uaW5nIG9uLlxuICogVGhlIGdlbmVyYWwgZm9ybWF0IG9mIHRoZSB0cmlwbGUgaXMgYDxhcmNoPjxzdWI+LTx2ZW5kb3I+LTxzeXM+LTxhYmk+YCB3aGVyZTpcbiAqICAgLSBgYXJjaGAgPSBUaGUgYmFzZSBDUFUgYXJjaGl0ZWN0dXJlLCBmb3IgZXhhbXBsZSBgeDg2XzY0YCwgYGk2ODZgLCBgYXJtYCwgYHRodW1iYCwgYG1pcHNgLCBldGMuXG4gKiAgIC0gYHN1YmAgPSBUaGUgQ1BVIHN1Yi1hcmNoaXRlY3R1cmUsIGZvciBleGFtcGxlIGBhcm1gIGhhcyBgdjdgLCBgdjdzYCwgYHY1dGVgLCBldGMuXG4gKiAgIC0gYHZlbmRvcmAgPSBUaGUgdmVuZG9yLCBmb3IgZXhhbXBsZSBgdW5rbm93bmAsIGBhcHBsZWAsIGBwY2AsIGBudmlkaWFgLCBldGMuXG4gKiAgIC0gYHN5c2AgPSBUaGUgc3lzdGVtIG5hbWUsIGZvciBleGFtcGxlIGBsaW51eGAsIGB3aW5kb3dzYCwgYGRhcndpbmAsIGV0Yy4gbm9uZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgYmFyZS1tZXRhbCB3aXRob3V0IGFuIE9TLlxuICogICAtIGBhYmlgID0gVGhlIEFCSSwgZm9yIGV4YW1wbGUgYGdudWAsIGBhbmRyb2lkYCwgYGVhYmlgLCBldGMuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHBhcnNlVHJpcGxlKHJhd1RyaXBsZTogc3RyaW5nKTogVGFyZ2V0O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gZ2V0U3lzdGVtRGVmYXVsdFRhcmdldCgpOiBUYXJnZXQ7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBnZXRUYXJnZXRMaW5rZXIodGFyZ2V0OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB0YXJnZXRUb0VudlZhcih0YXJnZXQ6IHN0cmluZyk6IHN0cmluZztcbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IHR5cGUgVGFyZ2V0IH0gZnJvbSAnLi90YXJnZXQuanMnO1xuZXhwb3J0IHR5cGUgVmFsdWVPZkNvbnN0QXJyYXk8VD4gPSBUW0V4Y2x1ZGU8a2V5b2YgVCwga2V5b2YgQXJyYXk8YW55Pj5dO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgU3VwcG9ydGVkUGFja2FnZU1hbmFnZXJzOiByZWFkb25seSBbXCJ5YXJuXCIsIFwicG5wbVwiXTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IFN1cHBvcnRlZFRlc3RGcmFtZXdvcmtzOiByZWFkb25seSBbXCJhdmFcIl07XG5leHBvcnQgdHlwZSBTdXBwb3J0ZWRQYWNrYWdlTWFuYWdlciA9IFZhbHVlT2ZDb25zdEFycmF5PHR5cGVvZiBTdXBwb3J0ZWRQYWNrYWdlTWFuYWdlcnM+O1xuZXhwb3J0IHR5cGUgU3VwcG9ydGVkVGVzdEZyYW1ld29yayA9IFZhbHVlT2ZDb25zdEFycmF5PHR5cGVvZiBTdXBwb3J0ZWRUZXN0RnJhbWV3b3Jrcz47XG5leHBvcnQgaW50ZXJmYWNlIFVzZXJOYXBpQ29uZmlnIHtcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBiaW5hcnkgdG8gYmUgZ2VuZXJhdGVkLCBkZWZhdWx0IHRvIGBpbmRleGBcbiAgICAgKi9cbiAgICBiaW5hcnlOYW1lPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIG5wbSBwYWNrYWdlLCBkZWZhdWx0IHRvIHRoZSBuYW1lIG9mIHJvb3QgcGFja2FnZS5qc29uIG5hbWVcbiAgICAgKlxuICAgICAqIEFsd2F5cyBnaXZlbiBgQHNjb3BlL3BrZ2AgYW5kIGFyY2ggc3VmZml4IHdpbGwgYmUgYXBwZW5kZWQgbGlrZSBgQHNjb3BlL3BrZy1saW51eC1nbnUteDY0YFxuICAgICAqL1xuICAgIHBhY2thZ2VOYW1lPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEFsbCB0YXJnZXRzIHRoZSBjcmF0ZSB3aWxsIGJlIGNvbXBpbGVkIGZvclxuICAgICAqL1xuICAgIHRhcmdldHM/OiBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBUaGUgbnBtIGNsaWVudCBwcm9qZWN0IHVzZXMuXG4gICAgICovXG4gICAgbnBtQ2xpZW50Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZ2VuZXJhdGUgY29uc3QgZW51bSBmb3IgdHlwZXNjcmlwdCBiaW5kaW5nc1xuICAgICAqL1xuICAgIGNvbnN0RW51bT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogZHRzIGhlYWRlciBwcmVwZW5kIHRvIHRoZSBnZW5lcmF0ZWQgZHRzIGZpbGVcbiAgICAgKi9cbiAgICBkdHNIZWFkZXI/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogZHRzIGhlYWRlciBmaWxlIHBhdGggdG8gYmUgcHJlcGVuZGVkIHRvIHRoZSBnZW5lcmF0ZWQgZHRzIGZpbGVcbiAgICAgKiBpZiBib3RoIGR0c0hlYWRlciBhbmQgZHRzSGVhZGVyRmlsZSBhcmUgcHJvdmlkZWQsIGR0c0hlYWRlckZpbGUgd2lsbCBiZSB1c2VkXG4gICAgICovXG4gICAgZHRzSGVhZGVyRmlsZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiB3YXNtIGNvbXBpbGF0aW9uIG9wdGlvbnNcbiAgICAgKi9cbiAgICB3YXNtPzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWJBc3NlbWJseS9KYXZhU2NyaXB0X2ludGVyZmFjZS9NZW1vcnlcbiAgICAgICAgICogQGRlZmF1bHQgNDAwMCBwYWdlcyAoMjU2TWlCKVxuICAgICAgICAgKi9cbiAgICAgICAgaW5pdGlhbE1lbW9yeT86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZWZhdWx0IDY1NTM2IHBhZ2VzICg0R2lCKVxuICAgICAgICAgKi9cbiAgICAgICAgbWF4aW11bU1lbW9yeT86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyb3dzZXIgd2FzbSBiaW5kaW5nIGNvbmZpZ3VyYXRpb25cbiAgICAgICAgICovXG4gICAgICAgIGJyb3dzZXI6IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hldGhlciB0byB1c2UgZnMgbW9kdWxlIGluIGJyb3dzZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZnM/OiBib29sZWFuO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaGV0aGVyIHRvIGluaXRpYWxpemUgd2FzbSBhc3luY2hyb25vdXNseVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhc3luY0luaXQ/OiBib29sZWFuO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaGV0aGVyIHRvIGluamVjdCBgYnVmZmVyYCB0byBlbW5hcGkgY29udGV4dFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBidWZmZXI/OiBib29sZWFuO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgYmluYXJ5TmFtZSBpbnN0ZWFkXG4gICAgICovXG4gICAgbmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgcGFja2FnZU5hbWUgaW5zdGVhZFxuICAgICAqL1xuICAgIHBhY2thZ2U/OiB7XG4gICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgdGFyZ2V0cyBpbnN0ZWFkXG4gICAgICovXG4gICAgdHJpcGxlcz86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdoZXRoZXIgZW5hYmxlIGRlZmF1bHQgdGFyZ2V0c1xuICAgICAgICAgKi9cbiAgICAgICAgZGVmYXVsdHM6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZGRpdGlvbmFsIHRhcmdldHMgdG8gYmUgY29tcGlsZWQgZm9yXG4gICAgICAgICAqL1xuICAgICAgICBhZGRpdGlvbmFsPzogc3RyaW5nW107XG4gICAgfTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uUGFja2FnZUpzb25GaWVsZHMge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAga2V5d29yZHM/OiBzdHJpbmdbXTtcbiAgICBhdXRob3I/OiBzdHJpbmc7XG4gICAgYXV0aG9ycz86IHN0cmluZ1tdO1xuICAgIGxpY2Vuc2U/OiBzdHJpbmc7XG4gICAgY3B1Pzogc3RyaW5nW107XG4gICAgb3M/OiBzdHJpbmdbXTtcbiAgICBsaWJjPzogc3RyaW5nW107XG4gICAgZmlsZXM/OiBzdHJpbmdbXTtcbiAgICByZXBvc2l0b3J5PzogYW55O1xuICAgIGhvbWVwYWdlPzogYW55O1xuICAgIGVuZ2luZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIHB1Ymxpc2hDb25maWc/OiBhbnk7XG4gICAgYnVncz86IGFueTtcbiAgICBuYXBpPzogVXNlck5hcGlDb25maWc7XG4gICAgdHlwZT86ICdtb2R1bGUnIHwgJ2NvbW1vbmpzJztcbiAgICBzY3JpcHRzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBtYWluPzogc3RyaW5nO1xuICAgIG1vZHVsZT86IHN0cmluZztcbiAgICB0eXBlcz86IHN0cmluZztcbiAgICBicm93c2VyPzogc3RyaW5nO1xuICAgIGV4cG9ydHM/OiBhbnk7XG4gICAgZGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBkZXZEZXBlbmRlbmNpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIGF2YT86IHtcbiAgICAgICAgdGltZW91dD86IHN0cmluZztcbiAgICB9O1xufVxuZXhwb3J0IHR5cGUgTmFwaUNvbmZpZyA9IFJlcXVpcmVkPFBpY2s8VXNlck5hcGlDb25maWcsICdiaW5hcnlOYW1lJyB8ICdwYWNrYWdlTmFtZScgfCAnbnBtQ2xpZW50Jz4+ICYgUGljazxVc2VyTmFwaUNvbmZpZywgJ3dhc20nIHwgJ2R0c0hlYWRlcicgfCAnZHRzSGVhZGVyRmlsZScgfCAnY29uc3RFbnVtJz4gJiB7XG4gICAgdGFyZ2V0czogVGFyZ2V0W107XG4gICAgcGFja2FnZUpzb246IENvbW1vblBhY2thZ2VKc29uRmllbGRzO1xufTtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHJlYWROYXBpQ29uZmlnKHBhdGg6IHN0cmluZywgY29uZmlnUGF0aD86IHN0cmluZyk6IFByb21pc2U8TmFwaUNvbmZpZz47XG4iLCJpbXBvcnQgeyBDbGkgfSBmcm9tICdjbGlwYW5pb24nO1xuaW1wb3J0IHsgY29sbGVjdEFydGlmYWN0cyB9IGZyb20gJy4vYXBpL2FydGlmYWN0cy5qcyc7XG5pbXBvcnQgeyBidWlsZFByb2plY3QgfSBmcm9tICcuL2FwaS9idWlsZC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVOcG1EaXJzIH0gZnJvbSAnLi9hcGkvY3JlYXRlLW5wbS1kaXJzLmpzJztcbmltcG9ydCB7IG5ld1Byb2plY3QgfSBmcm9tICcuL2FwaS9uZXcuanMnO1xuaW1wb3J0IHsgcHJlUHVibGlzaCB9IGZyb20gJy4vYXBpL3ByZS1wdWJsaXNoLmpzJztcbmltcG9ydCB7IHJlbmFtZVByb2plY3QgfSBmcm9tICcuL2FwaS9yZW5hbWUuanMnO1xuaW1wb3J0IHsgdW5pdmVyc2FsaXplQmluYXJpZXMgfSBmcm9tICcuL2FwaS91bml2ZXJzYWxpemUuanMnO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4vYXBpL3ZlcnNpb24uanMnO1xuaW1wb3J0IHsgQXJ0aWZhY3RzQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvYXJ0aWZhY3RzLmpzJztcbmltcG9ydCB7IEJ1aWxkQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvYnVpbGQuanMnO1xuaW1wb3J0IHsgQ3JlYXRlTnBtRGlyc0NvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL2NyZWF0ZS1ucG0tZGlycy5qcyc7XG5pbXBvcnQgeyBOZXdDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9uZXcuanMnO1xuaW1wb3J0IHsgUHJlUHVibGlzaENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL3ByZS1wdWJsaXNoLmpzJztcbmltcG9ydCB7IFJlbmFtZUNvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL3JlbmFtZS5qcyc7XG5pbXBvcnQgeyBVbml2ZXJzYWxpemVDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy91bml2ZXJzYWxpemUuanMnO1xuaW1wb3J0IHsgVmVyc2lvbkNvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL3ZlcnNpb24uanMnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgY2xpOiBDbGk8aW1wb3J0KFwiY2xpcGFuaW9uXCIpLkJhc2VDb250ZXh0Pjtcbi8qKlxuICpcbiAqIEB1c2FnZVxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBjbGkgPSBuZXcgTmFwaUNsaSgpXG4gKlxuICogY2xpLmJ1aWxkKHtcbiAqICAgY3dkOiAnL3BhdGgvdG8veW91ci9wcm9qZWN0JyxcbiAqIH0pXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgTmFwaUNsaSB7XG4gICAgYXJ0aWZhY3RzOiB0eXBlb2YgY29sbGVjdEFydGlmYWN0cztcbiAgICBuZXc6IHR5cGVvZiBuZXdQcm9qZWN0O1xuICAgIGJ1aWxkOiB0eXBlb2YgYnVpbGRQcm9qZWN0O1xuICAgIGNyZWF0ZU5wbURpcnM6IHR5cGVvZiBjcmVhdGVOcG1EaXJzO1xuICAgIHByZVB1Ymxpc2g6IHR5cGVvZiBwcmVQdWJsaXNoO1xuICAgIHJlbmFtZTogdHlwZW9mIHJlbmFtZVByb2plY3Q7XG4gICAgdW5pdmVyc2FsaXplOiB0eXBlb2YgdW5pdmVyc2FsaXplQmluYXJpZXM7XG4gICAgdmVyc2lvbjogdHlwZW9mIHZlcnNpb247XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVCdWlsZENvbW1hbmQoYXJnczogc3RyaW5nW10pOiBCdWlsZENvbW1hbmQ7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVBcnRpZmFjdHNDb21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogQXJ0aWZhY3RzQ29tbWFuZDtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZUNyZWF0ZU5wbURpcnNDb21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogQ3JlYXRlTnBtRGlyc0NvbW1hbmQ7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVQcmVQdWJsaXNoQ29tbWFuZChhcmdzOiBzdHJpbmdbXSk6IFByZVB1Ymxpc2hDb21tYW5kO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlUmVuYW1lQ29tbWFuZChhcmdzOiBzdHJpbmdbXSk6IFJlbmFtZUNvbW1hbmQ7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVVbml2ZXJzYWxpemVDb21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogVW5pdmVyc2FsaXplQ29tbWFuZDtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZVZlcnNpb25Db21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogVmVyc2lvbkNvbW1hbmQ7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVOZXdDb21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogTmV3Q29tbWFuZDtcbmV4cG9ydCB7IHBhcnNlVHJpcGxlIH0gZnJvbSAnLi91dGlscy90YXJnZXQuanMnO1xuZXhwb3J0IHsgdHlwZSBHZW5lcmF0ZVR5cGVEZWZPcHRpb25zLCB0eXBlIFdyaXRlSnNCaW5kaW5nT3B0aW9ucywgd3JpdGVKc0JpbmRpbmcsIGdlbmVyYXRlVHlwZURlZiwgfSBmcm9tICcuL2FwaS9idWlsZC5qcyc7XG5leHBvcnQgeyByZWFkTmFwaUNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnLmpzJztcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLElBQVcsdUJBQWlCLENBQUEsVUFBQSxDQUFBLFdBQUEsT0FBQSxRQUFBLENBQUE7QUFDNUIsSUFBVyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQTs7OztBQ0YzQyxJQUFXLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsUUFBUSxDQUFDOzs7O0FDQ3JFLElBQVcsbUJBQWlCLENBQUEsVUFBQSxDQUFBLFdBQUEsT0FBQSxRQUFBLENBQUE7QUFDNUIsSUFBVyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7Ozs7QUNGeEMsSUFBSSxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDL0IsSUFBSSxTQUFTLENBQUMsVUFBQSxDQUFBLFdBQUEsQ0FBQTtBQUNkLElBQUksaUJBQWUsQ0FBQyxVQUFBLENBQUEsYUFBQSxDQUFBO0FBQ3BCLElBQVcsZUFBSyxDQUFBLFVBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBLENBQUE7QUFDaEIsSUFBQyx3QkFBQSxDQUFBLFVBQUEsRUFBQSxDQUFBO0FBQ0QsSUFBVyxpQkFBaUIsQ0FBQyxVQUFTO0NBQUE7Q0FBQTtDQUFBO0NBQUEsQ0FBQTtBQUN0QyxJQUFXLHlCQUFnQixDQUFBLFVBQUEsRUFBQSxDQUFBO0FBQzNCLElBQUMsa0JBQUEsQ0FBQSxVQUFBLENBQUEsd0JBQUEsUUFBQSxDQUFBOzs7O0FDTkQsSUFBVywyQkFBaUIsQ0FBQSxVQUFBLENBQUEsV0FBQSxPQUFBLFFBQUEsQ0FBQTtBQUM1QixJQUFXLHVCQUF1QixDQUFDLFVBQVEsRUFBQSxDQUFBOzs7O0FDRDNDLElBQVcsZ0JBQU0sQ0FBQSxVQUFBLENBQUEsc0JBQUEsUUFBQSxDQUFBOzs7O0FDQWpCLElBQVcsaUJBQWlCLENBQUEsVUFBQSxDQUFBLFdBQUEsT0FBQSxRQUFBLENBQUE7QUFDNUIsSUFBVyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7Ozs7QUNEdEMsSUFBVyxhQUFhLENBQUMsVUFBVSxDQUFDLFlBQWUsUUFBUSxDQUFDOzs7O0FDQTVELElBQVcsd0JBQWlCLENBQUEsVUFBQSxDQUFBLFdBQUEsT0FBQSxRQUFBLENBQUE7QUFDNUIsSUFBVyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUMsQ0FBQTs7OztBQ0YzQyxJQUFXLGFBQWEsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLFFBQVEsQ0FBQzs7OztBQ0NoRSxJQUFXLG9CQUFpQixDQUFBLFVBQUEsQ0FBQSxXQUFBLE9BQUEsUUFBQSxDQUFBO0FBQzVCLElBQVcsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7Ozs7QUNGekMsSUFBVyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsZUFBZSxRQUFRLENBQUM7Ozs7QUNDL0QsSUFBVywwQkFBaUIsQ0FBQSxVQUFBLENBQUEsV0FBQSxPQUFBLFFBQUEsQ0FBQTtBQUM1QixJQUFXLHNCQUFzQixDQUFDLFVBQVMsRUFBQSxDQUFBOzs7O0FDRjNDLElBQVcsdUJBQXVCLENBQUMsVUFBVSxDQUFDLHFCQUFxQixRQUFRLENBQUM7Ozs7QUNDNUUsSUFBVyxxQkFBaUIsQ0FBQSxVQUFBLENBQUEsV0FBQSxPQUFBLFFBQUEsQ0FBQTtBQUM1QixJQUFXLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDOzs7O0FDRjFDLElBQVcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsUUFBUSxDQUFDOzs7O0FDQzFELElBQVcsbUJBQW1CLENBQUMsVUFBVTtDQUFDLFdBQUM7Q0FBQTtDQUFBO0NBQUEsQ0FBQTs7OztBQ0QzQyxJQUFXLGVBQWUsQ0FBQyxVQUFVLENBQUMsU0FBUyxpQkFBWSxDQUFBOzs7O0FDQTNELElBQVcsdUJBQXVCLENBQUMsVUFBVSxDQUFDLFNBQVMseUJBQW9CLENBQUE7Ozs7QUNBM0UsSUFBVyxhQUFhLENBQUMsVUFBVSxDQUFDLFNBQVMsZUFBVSxDQUFBOzs7O0FDQXZELElBQVcsb0JBQW9CLENBQUMsVUFBVSxDQUFDLFNBQVMsc0JBQWlCLENBQUE7Ozs7QUNBckUsSUFBVyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsU0FBUyxrQkFBYSxDQUFBOzs7O0FDQTdELElBQVcsc0JBQXNCLENBQUMsVUFBVSxDQUFDLFNBQVMsd0JBQW1CLENBQUE7Ozs7QUNBekUsSUFBVyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxtQkFBYyxDQUFBOzs7O0FDRC9ELElBQVcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLFNBQVMsQ0FBQztBQU1uRCxJQUFJLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUcvQixJQUFXLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxXQUFXLENBQUM7QUFDdEQsSUFBVyxjQUFjLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQzs7OztBQ0o3QyxJQUFXLGlCQUFpQixDQUFDLFVBQUcsRUFBQSxDQUFBO0FBQ2hDLElBQU0sMEJBQUEsQ0FBQSxVQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBLENBQUE7QUFDTixJQUFXLGFBQWEsQ0FBQyxVQUFVO0NBQUM7Q0FBZ0I7Q0FBTTtDQUFFO0NBQUE7Q0FBQTtDQUFBO0NBQUEsQ0FBQTtBQUM1RCxJQUFNLGlCQUFBLENBQUEsVUFBQSxDQUFBLFlBQUEsUUFBQSxDQUFBOzs7O0FDU04sSUFBRSxNQUFBLENBQUEsU0FBQSxDQUFBLFdBQUEsYUFBQSxJQUFBLENBQUE7QUFDRixJQUFDLFVBQUEsQ0FBQSxTQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBLENBQUE7QUFDRCxJQUFRLHFCQUFBLENBQUEsU0FBQSxDQUFBLGFBQUEsQ0FBQTtBQUNSLElBQUMseUJBQUEsQ0FBQSxTQUFBLENBQUEsaUJBQUEsQ0FBQTtBQUNELElBQU8sNkJBQUEsQ0FBQSxTQUFBLENBQUEscUJBQUEsQ0FBQTtBQUNQLElBQVcsMEJBQWdCLENBQUEsU0FBQSxDQUFBLGtCQUFBLENBQUE7QUFDM0IsSUFBQyxzQkFBQSxDQUFBLFNBQUEsQ0FBQSxjQUFBLENBQUE7QUFDRCxJQUFXLDRCQUFFLENBQUEsU0FBQSxDQUFBLG9CQUFBLENBQUE7QUFDYixJQUFXLHVCQUFzQixDQUFBLFNBQUEsQ0FBQSxlQUFBLENBQUE7QUFDakMsSUFBSSxtQkFBQSxDQUFBLFNBQUEsQ0FBQSxXQUFBLENBQUEifQ== \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/dist/index.js b/sdks/nodejs/node_modules/@napi-rs/cli/dist/index.js deleted file mode 100644 index 6676087..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/dist/index.js +++ /dev/null @@ -1,3798 +0,0 @@ -import { createRequire } from "node:module"; -import { Cli, Command, Option } from "clipanion"; -import path, { dirname, isAbsolute, join, parse, resolve } from "node:path"; -import * as colors from "colorette"; -import { underline, yellow } from "colorette"; -import { createDebug } from "obug"; -import { access, copyFile, mkdir, readFile, readdir, rename, stat, unlink, writeFile } from "node:fs/promises"; -import { exec, execSync, spawn, spawnSync } from "node:child_process"; -import fs, { existsSync, mkdirSync, promises, rmSync, statSync } from "node:fs"; -import { isNil, merge, omit, omitBy, pick, sortBy } from "es-toolkit"; -import { createHash } from "node:crypto"; -import { homedir } from "node:os"; -import { parse as parse$1 } from "semver"; -import { dump, load } from "js-yaml"; -import * as typanion from "typanion"; -import { Octokit } from "@octokit/rest"; -import { checkbox, confirm, input, select } from "@inquirer/prompts"; - -//#region src/def/artifacts.ts -var BaseArtifactsCommand = class extends Command { - static paths = [["artifacts"]]; - static usage = Command.Usage({ description: "Copy artifacts from Github Actions into npm packages and ready to publish" }); - cwd = Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - outputDir = Option.String("--output-dir,-o,-d", "./artifacts", { description: "Path to the folder where all built `.node` files put, same as `--output-dir` of build command" }); - npmDir = Option.String("--npm-dir", "npm", { description: "Path to the folder where the npm packages put" }); - buildOutputDir = Option.String("--build-output-dir", { description: "Path to the build output dir, only needed when targets contains `wasm32-wasi-*`" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - outputDir: this.outputDir, - npmDir: this.npmDir, - buildOutputDir: this.buildOutputDir - }; - } -}; -function applyDefaultArtifactsOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - outputDir: "./artifacts", - npmDir: "npm", - ...options - }; -} - -//#endregion -//#region src/utils/log.ts -const debugFactory = (namespace) => { - const debug$10 = createDebug(`napi:${namespace}`, { formatters: { i(v) { - return colors.green(v); - } } }); - debug$10.info = (...args) => console.error(colors.black(colors.bgGreen(" INFO ")), ...args); - debug$10.warn = (...args) => console.error(colors.black(colors.bgYellow(" WARNING ")), ...args); - debug$10.error = (...args) => console.error(colors.white(colors.bgRed(" ERROR ")), ...args.map((arg) => arg instanceof Error ? arg.stack ?? arg.message : arg)); - return debug$10; -}; -const debug$9 = debugFactory("utils"); - -//#endregion -//#region package.json -var version$1 = "3.5.1"; - -//#endregion -//#region src/utils/misc.ts -const readFileAsync = readFile; -const writeFileAsync = writeFile; -const unlinkAsync = unlink; -const copyFileAsync = copyFile; -const mkdirAsync = mkdir; -const statAsync = stat; -const readdirAsync = readdir; -function fileExists(path$1) { - return access(path$1).then(() => true, () => false); -} -async function dirExistsAsync(path$1) { - try { - return (await statAsync(path$1)).isDirectory(); - } catch { - return false; - } -} -function pick$1(o, ...keys) { - return keys.reduce((acc, key) => { - acc[key] = o[key]; - return acc; - }, {}); -} -async function updatePackageJson(path$1, partial) { - if (!await fileExists(path$1)) { - debug$9(`File not exists ${path$1}`); - return; - } - const old = JSON.parse(await readFileAsync(path$1, "utf8")); - await writeFileAsync(path$1, JSON.stringify({ - ...old, - ...partial - }, null, 2)); -} -const CLI_VERSION = version$1; - -//#endregion -//#region src/utils/target.ts -const SUB_SYSTEMS = new Set(["android", "ohos"]); -const AVAILABLE_TARGETS = [ - "aarch64-apple-darwin", - "aarch64-linux-android", - "aarch64-unknown-linux-gnu", - "aarch64-unknown-linux-musl", - "aarch64-unknown-linux-ohos", - "aarch64-pc-windows-msvc", - "x86_64-apple-darwin", - "x86_64-pc-windows-msvc", - "x86_64-pc-windows-gnu", - "x86_64-unknown-linux-gnu", - "x86_64-unknown-linux-musl", - "x86_64-unknown-linux-ohos", - "x86_64-unknown-freebsd", - "i686-pc-windows-msvc", - "armv7-unknown-linux-gnueabihf", - "armv7-unknown-linux-musleabihf", - "armv7-linux-androideabi", - "universal-apple-darwin", - "loongarch64-unknown-linux-gnu", - "riscv64gc-unknown-linux-gnu", - "powerpc64le-unknown-linux-gnu", - "s390x-unknown-linux-gnu", - "wasm32-wasi-preview1-threads", - "wasm32-wasip1-threads" -]; -const DEFAULT_TARGETS = [ - "x86_64-apple-darwin", - "aarch64-apple-darwin", - "x86_64-pc-windows-msvc", - "x86_64-unknown-linux-gnu" -]; -const TARGET_LINKER = { - "aarch64-unknown-linux-musl": "aarch64-linux-musl-gcc", - "loongarch64-unknown-linux-gnu": "loongarch64-linux-gnu-gcc-13", - "riscv64gc-unknown-linux-gnu": "riscv64-linux-gnu-gcc", - "powerpc64le-unknown-linux-gnu": "powerpc64le-linux-gnu-gcc", - "s390x-unknown-linux-gnu": "s390x-linux-gnu-gcc" -}; -const CpuToNodeArch = { - x86_64: "x64", - aarch64: "arm64", - i686: "ia32", - armv7: "arm", - loongarch64: "loong64", - riscv64gc: "riscv64", - powerpc64le: "ppc64" -}; -const SysToNodePlatform = { - linux: "linux", - freebsd: "freebsd", - darwin: "darwin", - windows: "win32", - ohos: "openharmony" -}; -const UniArchsByPlatform = { darwin: ["x64", "arm64"] }; -/** -* A triple is a specific format for specifying a target architecture. -* Triples may be referred to as a target triple which is the architecture for the artifact produced, and the host triple which is the architecture that the compiler is running on. -* The general format of the triple is `---` where: -* - `arch` = The base CPU architecture, for example `x86_64`, `i686`, `arm`, `thumb`, `mips`, etc. -* - `sub` = The CPU sub-architecture, for example `arm` has `v7`, `v7s`, `v5te`, etc. -* - `vendor` = The vendor, for example `unknown`, `apple`, `pc`, `nvidia`, etc. -* - `sys` = The system name, for example `linux`, `windows`, `darwin`, etc. none is typically used for bare-metal without an OS. -* - `abi` = The ABI, for example `gnu`, `android`, `eabi`, etc. -*/ -function parseTriple(rawTriple) { - if (rawTriple === "wasm32-wasi" || rawTriple === "wasm32-wasi-preview1-threads" || rawTriple.startsWith("wasm32-wasip")) return { - triple: rawTriple, - platformArchABI: "wasm32-wasi", - platform: "wasi", - arch: "wasm32", - abi: "wasi" - }; - const triples = (rawTriple.endsWith("eabi") ? `${rawTriple.slice(0, -4)}-eabi` : rawTriple).split("-"); - let cpu; - let sys; - let abi = null; - if (triples.length === 2) [cpu, sys] = triples; - else [cpu, , sys, abi = null] = triples; - if (abi && SUB_SYSTEMS.has(abi)) { - sys = abi; - abi = null; - } - const platform = SysToNodePlatform[sys] ?? sys; - const arch = CpuToNodeArch[cpu] ?? cpu; - return { - triple: rawTriple, - platformArchABI: abi ? `${platform}-${arch}-${abi}` : `${platform}-${arch}`, - platform, - arch, - abi - }; -} -function getSystemDefaultTarget() { - const host = execSync(`rustc -vV`, { env: process.env }).toString("utf8").split("\n").find((line) => line.startsWith("host: ")); - const triple = host === null || host === void 0 ? void 0 : host.slice(6); - if (!triple) throw new TypeError(`Can not parse target triple from host`); - return parseTriple(triple); -} -function getTargetLinker(target) { - return TARGET_LINKER[target]; -} -function targetToEnvVar(target) { - return target.replace(/-/g, "_").toUpperCase(); -} - -//#endregion -//#region src/utils/version.ts -let NapiVersion = /* @__PURE__ */ function(NapiVersion$1) { - NapiVersion$1[NapiVersion$1["Napi1"] = 1] = "Napi1"; - NapiVersion$1[NapiVersion$1["Napi2"] = 2] = "Napi2"; - NapiVersion$1[NapiVersion$1["Napi3"] = 3] = "Napi3"; - NapiVersion$1[NapiVersion$1["Napi4"] = 4] = "Napi4"; - NapiVersion$1[NapiVersion$1["Napi5"] = 5] = "Napi5"; - NapiVersion$1[NapiVersion$1["Napi6"] = 6] = "Napi6"; - NapiVersion$1[NapiVersion$1["Napi7"] = 7] = "Napi7"; - NapiVersion$1[NapiVersion$1["Napi8"] = 8] = "Napi8"; - NapiVersion$1[NapiVersion$1["Napi9"] = 9] = "Napi9"; - return NapiVersion$1; -}({}); -const NAPI_VERSION_MATRIX = new Map([ - [NapiVersion.Napi1, "8.6.0 | 9.0.0 | 10.0.0"], - [NapiVersion.Napi2, "8.10.0 | 9.3.0 | 10.0.0"], - [NapiVersion.Napi3, "6.14.2 | 8.11.2 | 9.11.0 | 10.0.0"], - [NapiVersion.Napi4, "10.16.0 | 11.8.0 | 12.0.0"], - [NapiVersion.Napi5, "10.17.0 | 12.11.0 | 13.0.0"], - [NapiVersion.Napi6, "10.20.0 | 12.17.0 | 14.0.0"], - [NapiVersion.Napi7, "10.23.0 | 12.19.0 | 14.12.0 | 15.0.0"], - [NapiVersion.Napi8, "12.22.0 | 14.17.0 | 15.12.0 | 16.0.0"], - [NapiVersion.Napi9, "18.17.0 | 20.3.0 | 21.1.0"] -]); -function parseNodeVersion(v) { - const matches = v.match(/v?([0-9]+)\.([0-9]+)\.([0-9]+)/i); - if (!matches) throw new Error("Unknown node version number: " + v); - const [, major, minor, patch] = matches; - return { - major: parseInt(major), - minor: parseInt(minor), - patch: parseInt(patch) - }; -} -function requiredNodeVersions(napiVersion) { - const requirement = NAPI_VERSION_MATRIX.get(napiVersion); - if (!requirement) return [parseNodeVersion("10.0.0")]; - return requirement.split("|").map(parseNodeVersion); -} -function toEngineRequirement(versions) { - const requirements = []; - versions.forEach((v, i) => { - let req = ""; - if (i !== 0) { - const lastVersion = versions[i - 1]; - req += `< ${lastVersion.major + 1}`; - } - req += `${i === 0 ? "" : " || "}>= ${v.major}.${v.minor}.${v.patch}`; - requirements.push(req); - }); - return requirements.join(" "); -} -function napiEngineRequirement(napiVersion) { - return toEngineRequirement(requiredNodeVersions(napiVersion)); -} - -//#endregion -//#region src/utils/metadata.ts -async function parseMetadata(manifestPath) { - if (!fs.existsSync(manifestPath)) throw new Error(`No crate found in manifest: ${manifestPath}`); - const childProcess = spawn("cargo", [ - "metadata", - "--manifest-path", - manifestPath, - "--format-version", - "1" - ], { stdio: "pipe" }); - let stdout = ""; - let stderr = ""; - let status = 0; - childProcess.stdout.on("data", (data) => { - stdout += data; - }); - childProcess.stderr.on("data", (data) => { - stderr += data; - }); - await new Promise((resolve$1) => { - childProcess.on("close", (code) => { - status = code ?? 0; - resolve$1(); - }); - }); - if (status !== 0) { - const simpleMessage = `cargo metadata exited with code ${status}`; - throw new Error(`${simpleMessage} and error message:\n\n${stderr}`, { cause: new Error(simpleMessage) }); - } - try { - return JSON.parse(stdout); - } catch (e) { - throw new Error("Failed to parse cargo metadata JSON", { cause: e }); - } -} - -//#endregion -//#region src/utils/config.ts -async function readNapiConfig(path$1, configPath) { - if (configPath && !await fileExists(configPath)) throw new Error(`NAPI-RS config not found at ${configPath}`); - if (!await fileExists(path$1)) throw new Error(`package.json not found at ${path$1}`); - const content = await readFileAsync(path$1, "utf8"); - let pkgJson; - try { - pkgJson = JSON.parse(content); - } catch (e) { - throw new Error(`Failed to parse package.json at ${path$1}`, { cause: e }); - } - let separatedConfig; - if (configPath) { - const configContent = await readFileAsync(configPath, "utf8"); - try { - separatedConfig = JSON.parse(configContent); - } catch (e) { - throw new Error(`Failed to parse NAPI-RS config at ${configPath}`, { cause: e }); - } - } - const userNapiConfig = pkgJson.napi ?? {}; - if (pkgJson.napi && separatedConfig) { - const pkgJsonPath = underline(path$1); - const configPathUnderline = underline(configPath); - console.warn(yellow(`Both napi field in ${pkgJsonPath} and [NAPI-RS config](${configPathUnderline}) file are found, the NAPI-RS config file will be used.`)); - } - if (separatedConfig) Object.assign(userNapiConfig, separatedConfig); - const napiConfig = merge({ - binaryName: "index", - packageName: pkgJson.name, - targets: [], - packageJson: pkgJson, - npmClient: "npm" - }, omit(userNapiConfig, ["targets"])); - let targets = userNapiConfig.targets ?? []; - if (userNapiConfig === null || userNapiConfig === void 0 ? void 0 : userNapiConfig.name) { - console.warn(yellow(`[DEPRECATED] napi.name is deprecated, use napi.binaryName instead.`)); - napiConfig.binaryName = userNapiConfig.name; - } - if (!targets.length) { - var _userNapiConfig$tripl, _userNapiConfig$tripl2; - let deprecatedWarned = false; - const warning = yellow(`[DEPRECATED] napi.triples is deprecated, use napi.targets instead.`); - if ((_userNapiConfig$tripl = userNapiConfig.triples) === null || _userNapiConfig$tripl === void 0 ? void 0 : _userNapiConfig$tripl.defaults) { - deprecatedWarned = true; - console.warn(warning); - targets = targets.concat(DEFAULT_TARGETS); - } - if ((_userNapiConfig$tripl2 = userNapiConfig.triples) === null || _userNapiConfig$tripl2 === void 0 || (_userNapiConfig$tripl2 = _userNapiConfig$tripl2.additional) === null || _userNapiConfig$tripl2 === void 0 ? void 0 : _userNapiConfig$tripl2.length) { - targets = targets.concat(userNapiConfig.triples.additional); - if (!deprecatedWarned) console.warn(warning); - } - } - if (new Set(targets).size !== targets.length) { - const duplicateTarget = targets.find((target, index) => targets.indexOf(target) !== index); - throw new Error(`Duplicate targets are not allowed: ${duplicateTarget}`); - } - napiConfig.targets = targets.map(parseTriple); - return napiConfig; -} - -//#endregion -//#region src/utils/cargo.ts -function tryInstallCargoBinary(name, bin) { - if (detectCargoBinary(bin)) { - debug$9("Cargo binary already installed: %s", name); - return; - } - try { - debug$9("Installing cargo binary: %s", name); - execSync(`cargo install ${name}`, { stdio: "inherit" }); - } catch (e) { - throw new Error(`Failed to install cargo binary: ${name}`, { cause: e }); - } -} -function detectCargoBinary(bin) { - debug$9("Detecting cargo binary: %s", bin); - try { - execSync(`cargo help ${bin}`, { stdio: "ignore" }); - debug$9("Cargo binary detected: %s", bin); - return true; - } catch { - debug$9("Cargo binary not detected: %s", bin); - return false; - } -} - -//#endregion -//#region src/utils/typegen.ts -const TOP_LEVEL_NAMESPACE = "__TOP_LEVEL_MODULE__"; -const DEFAULT_TYPE_DEF_HEADER = `/* auto-generated by NAPI-RS */ -/* eslint-disable */ -`; -var TypeDefKind = /* @__PURE__ */ function(TypeDefKind$1) { - TypeDefKind$1["Const"] = "const"; - TypeDefKind$1["Enum"] = "enum"; - TypeDefKind$1["StringEnum"] = "string_enum"; - TypeDefKind$1["Interface"] = "interface"; - TypeDefKind$1["Type"] = "type"; - TypeDefKind$1["Fn"] = "fn"; - TypeDefKind$1["Struct"] = "struct"; - TypeDefKind$1["Extends"] = "extends"; - TypeDefKind$1["Impl"] = "impl"; - return TypeDefKind$1; -}(TypeDefKind || {}); -function prettyPrint(line, constEnum, ident, ambient = false) { - let s = line.js_doc ?? ""; - switch (line.kind) { - case TypeDefKind.Interface: - s += `export interface ${line.name} {\n${line.def}\n}`; - break; - case TypeDefKind.Type: - s += `export type ${line.name} = \n${line.def}`; - break; - case TypeDefKind.Enum: - const enumName = constEnum ? "const enum" : "enum"; - s += `${exportDeclare(ambient)} ${enumName} ${line.name} {\n${line.def}\n}`; - break; - case TypeDefKind.StringEnum: - if (constEnum) s += `${exportDeclare(ambient)} const enum ${line.name} {\n${line.def}\n}`; - else s += `export type ${line.name} = ${line.def.replaceAll(/.*=/g, "").replaceAll(",", "|")};`; - break; - case TypeDefKind.Struct: - const extendsDef = line.extends ? ` extends ${line.extends}` : ""; - if (line.extends) { - const genericMatch = line.extends.match(/Iterator<(.+)>$/); - if (genericMatch) { - const [T, TResult, TNext] = genericMatch[1].split(",").map((p) => p.trim()); - line.def = line.def + `\nnext(value?: ${TNext}): IteratorResult<${T}, ${TResult}>`; - } - } - s += `${exportDeclare(ambient)} class ${line.name}${extendsDef} {\n${line.def}\n}`; - if (line.original_name && line.original_name !== line.name) s += `\nexport type ${line.original_name} = ${line.name}`; - break; - case TypeDefKind.Fn: - s += `${exportDeclare(ambient)} ${line.def}`; - break; - default: s += line.def; - } - return correctStringIdent(s, ident); -} -function exportDeclare(ambient) { - if (ambient) return "export"; - return "export declare"; -} -async function processTypeDef(intermediateTypeFile, constEnum) { - const exports = []; - const groupedDefs = preprocessTypeDef(await readIntermediateTypeFile(intermediateTypeFile)); - return { - dts: sortBy(Array.from(groupedDefs), [([namespace]) => namespace]).map(([namespace, defs]) => { - if (namespace === TOP_LEVEL_NAMESPACE) return defs.map((def) => { - switch (def.kind) { - case TypeDefKind.Const: - case TypeDefKind.Enum: - case TypeDefKind.StringEnum: - case TypeDefKind.Fn: - case TypeDefKind.Struct: - exports.push(def.name); - if (def.original_name && def.original_name !== def.name) exports.push(def.original_name); - break; - default: break; - } - return prettyPrint(def, constEnum, 0); - }).join("\n\n"); - else { - exports.push(namespace); - let declaration = ""; - declaration += `export declare namespace ${namespace} {\n`; - for (const def of defs) declaration += prettyPrint(def, constEnum, 2, true) + "\n"; - declaration += "}"; - return declaration; - } - }).join("\n\n") + "\n", - exports - }; -} -async function readIntermediateTypeFile(file) { - return (await readFileAsync(file, "utf8")).split("\n").filter(Boolean).map((line) => { - line = line.trim(); - const parsed = JSON.parse(line); - if (parsed.js_doc) parsed.js_doc = parsed.js_doc.replace(/\\n/g, "\n"); - if (parsed.def) parsed.def = parsed.def.replace(/\\n/g, "\n"); - return parsed; - }).sort((a, b) => { - if (a.kind === TypeDefKind.Struct) { - if (b.kind === TypeDefKind.Struct) return a.name.localeCompare(b.name); - return -1; - } else if (b.kind === TypeDefKind.Struct) return 1; - else return a.name.localeCompare(b.name); - }); -} -function preprocessTypeDef(defs) { - const namespaceGrouped = /* @__PURE__ */ new Map(); - const classDefs = /* @__PURE__ */ new Map(); - for (const def of defs) { - const namespace = def.js_mod ?? TOP_LEVEL_NAMESPACE; - if (!namespaceGrouped.has(namespace)) namespaceGrouped.set(namespace, []); - const group = namespaceGrouped.get(namespace); - if (def.kind === TypeDefKind.Struct) { - group.push(def); - classDefs.set(def.name, def); - } else if (def.kind === TypeDefKind.Extends) { - const classDef = classDefs.get(def.name); - if (classDef) classDef.extends = def.def; - } else if (def.kind === TypeDefKind.Impl) { - const classDef = classDefs.get(def.name); - if (classDef) { - if (classDef.def) classDef.def += "\n"; - classDef.def += def.def; - if (classDef.def) classDef.def = classDef.def.replace(/\\n/g, "\n"); - } - } else group.push(def); - } - return namespaceGrouped; -} -function correctStringIdent(src, ident) { - let bracketDepth = 0; - return src.split("\n").map((line) => { - line = line.trim(); - if (line === "") return ""; - const isInMultilineComment = line.startsWith("*"); - const isClosingBracket = line.endsWith("}"); - const isOpeningBracket = line.endsWith("{"); - const isTypeDeclaration = line.endsWith("="); - const isTypeVariant = line.startsWith("|"); - let rightIndent = ident; - if ((isOpeningBracket || isTypeDeclaration) && !isInMultilineComment) { - bracketDepth += 1; - rightIndent += (bracketDepth - 1) * 2; - } else { - if (isClosingBracket && bracketDepth > 0 && !isInMultilineComment && !isTypeVariant) bracketDepth -= 1; - rightIndent += bracketDepth * 2; - } - if (isInMultilineComment) rightIndent += 1; - return `${" ".repeat(rightIndent)}${line}`; - }).join("\n"); -} - -//#endregion -//#region src/utils/read-config.ts -async function readConfig(options) { - const resolvePath = (...paths) => resolve(options.cwd, ...paths); - return await readNapiConfig(resolvePath(options.packageJsonPath ?? "package.json"), options.configPath ? resolvePath(options.configPath) : void 0); -} - -//#endregion -//#region src/api/artifacts.ts -const debug$8 = debugFactory("artifacts"); -async function collectArtifacts(userOptions) { - const options = applyDefaultArtifactsOptions(userOptions); - const resolvePath = (...paths) => resolve(options.cwd, ...paths); - const packageJsonPath = resolvePath(options.packageJsonPath); - const { targets, binaryName, packageName } = await readNapiConfig(packageJsonPath, options.configPath ? resolvePath(options.configPath) : void 0); - const distDirs = targets.map((platform) => join(options.cwd, options.npmDir, platform.platformArchABI)); - const universalSourceBins = new Set(targets.filter((platform) => platform.arch === "universal").flatMap((p) => { - var _UniArchsByPlatform$p; - return (_UniArchsByPlatform$p = UniArchsByPlatform[p.platform]) === null || _UniArchsByPlatform$p === void 0 ? void 0 : _UniArchsByPlatform$p.map((a) => `${p.platform}-${a}`); - }).filter(Boolean)); - await collectNodeBinaries(join(options.cwd, options.outputDir)).then((output) => Promise.all(output.map(async (filePath) => { - debug$8.info(`Read [${colors.yellowBright(filePath)}]`); - const sourceContent = await readFileAsync(filePath); - const parsedName = parse(filePath); - const terms = parsedName.name.split("."); - const platformArchABI = terms.pop(); - const _binaryName = terms.join("."); - if (_binaryName !== binaryName) { - debug$8.warn(`[${_binaryName}] is not matched with [${binaryName}], skip`); - return; - } - const dir$1 = distDirs.find((dir$2) => dir$2.includes(platformArchABI)); - if (!dir$1 && universalSourceBins.has(platformArchABI)) { - debug$8.warn(`[${platformArchABI}] has no dist dir but it is source bin for universal arch, skip`); - return; - } - if (!dir$1) throw new Error(`No dist dir found for ${filePath}`); - const distFilePath = join(dir$1, parsedName.base); - debug$8.info(`Write file content to [${colors.yellowBright(distFilePath)}]`); - await writeFileAsync(distFilePath, sourceContent); - const distFilePathLocal = join(parse(packageJsonPath).dir, parsedName.base); - debug$8.info(`Write file content to [${colors.yellowBright(distFilePathLocal)}]`); - await writeFileAsync(distFilePathLocal, sourceContent); - }))); - const wasiTarget = targets.find((t) => t.platform === "wasi"); - if (wasiTarget) { - const wasiDir = join(options.cwd, options.npmDir, wasiTarget.platformArchABI); - const cjsFile = join(options.buildOutputDir ?? options.cwd, `${binaryName}.wasi.cjs`); - const workerFile = join(options.buildOutputDir ?? options.cwd, `wasi-worker.mjs`); - const browserEntry = join(options.buildOutputDir ?? options.cwd, `${binaryName}.wasi-browser.js`); - const browserWorkerFile = join(options.buildOutputDir ?? options.cwd, `wasi-worker-browser.mjs`); - debug$8.info(`Move wasi binding file [${colors.yellowBright(cjsFile)}] to [${colors.yellowBright(wasiDir)}]`); - await writeFileAsync(join(wasiDir, `${binaryName}.wasi.cjs`), await readFileAsync(cjsFile)); - debug$8.info(`Move wasi worker file [${colors.yellowBright(workerFile)}] to [${colors.yellowBright(wasiDir)}]`); - await writeFileAsync(join(wasiDir, `wasi-worker.mjs`), await readFileAsync(workerFile)); - debug$8.info(`Move wasi browser entry file [${colors.yellowBright(browserEntry)}] to [${colors.yellowBright(wasiDir)}]`); - await writeFileAsync(join(wasiDir, `${binaryName}.wasi-browser.js`), (await readFileAsync(browserEntry, "utf8")).replace(`new URL('./wasi-worker-browser.mjs', import.meta.url)`, `new URL('${packageName}-wasm32-wasi/wasi-worker-browser.mjs', import.meta.url)`)); - debug$8.info(`Move wasi browser worker file [${colors.yellowBright(browserWorkerFile)}] to [${colors.yellowBright(wasiDir)}]`); - await writeFileAsync(join(wasiDir, `wasi-worker-browser.mjs`), await readFileAsync(browserWorkerFile)); - } -} -async function collectNodeBinaries(root) { - const files = await readdirAsync(root, { withFileTypes: true }); - const nodeBinaries = files.filter((file) => file.isFile() && (file.name.endsWith(".node") || file.name.endsWith(".wasm"))).map((file) => join(root, file.name)); - const dirs = files.filter((file) => file.isDirectory()); - for (const dir$1 of dirs) if (dir$1.name !== "node_modules") nodeBinaries.push(...await collectNodeBinaries(join(root, dir$1.name))); - return nodeBinaries; -} - -//#endregion -//#region src/api/templates/js-binding.ts -function createCjsBinding(localName, pkgName, idents, packageVersion) { - return `${bindingHeader} -${createCommonBinding(localName, pkgName, packageVersion)} -module.exports = nativeBinding -${idents.map((ident) => `module.exports.${ident} = nativeBinding.${ident}`).join("\n")} -`; -} -function createEsmBinding(localName, pkgName, idents, packageVersion) { - return `${bindingHeader} -import { createRequire } from 'node:module' -const require = createRequire(import.meta.url) -const __dirname = new URL('.', import.meta.url).pathname - -${createCommonBinding(localName, pkgName, packageVersion)} -const { ${idents.join(", ")} } = nativeBinding -${idents.map((ident) => `export { ${ident} }`).join("\n")} -`; -} -const bindingHeader = `// prettier-ignore -/* eslint-disable */ -// @ts-nocheck -/* auto-generated by NAPI-RS */ -`; -function createCommonBinding(localName, pkgName, packageVersion) { - function requireTuple(tuple, identSize = 8) { - const identLow = " ".repeat(identSize - 2); - const ident = " ".repeat(identSize); - return `try { -${ident}return require('./${localName}.${tuple}.node') -${identLow}} catch (e) { -${ident}loadErrors.push(e) -${identLow}}${packageVersion ? ` -${identLow}try { -${ident}const binding = require('${pkgName}-${tuple}') -${ident}const bindingPackageVersion = require('${pkgName}-${tuple}/package.json').version -${ident}if (bindingPackageVersion !== '${packageVersion}' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { -${ident} throw new Error(\`Native binding package version mismatch, expected ${packageVersion} but got \${bindingPackageVersion}. You can reinstall dependencies to fix this issue.\`) -${ident}} -${ident}return binding -${identLow}} catch (e) { -${ident}loadErrors.push(e) -${identLow}}` : ` -${identLow}try { -${ident}return require('${pkgName}-${tuple}') -${identLow}} catch (e) { -${ident}loadErrors.push(e) -${identLow}}`}`; - } - return `const { readFileSync } = require('node:fs') -let nativeBinding = null -const loadErrors = [] - -const isMusl = () => { - let musl = false - if (process.platform === 'linux') { - musl = isMuslFromFilesystem() - if (musl === null) { - musl = isMuslFromReport() - } - if (musl === null) { - musl = isMuslFromChildProcess() - } - } - return musl -} - -const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-') - -const isMuslFromFilesystem = () => { - try { - return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl') - } catch { - return null - } -} - -const isMuslFromReport = () => { - let report = null - if (typeof process.report?.getReport === 'function') { - process.report.excludeNetwork = true - report = process.report.getReport() - } - if (!report) { - return null - } - if (report.header && report.header.glibcVersionRuntime) { - return false - } - if (Array.isArray(report.sharedObjects)) { - if (report.sharedObjects.some(isFileMusl)) { - return true - } - } - return false -} - -const isMuslFromChildProcess = () => { - try { - return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl') - } catch (e) { - // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false - return false - } -} - -function requireNative() { - if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) { - try { - return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH); - } catch (err) { - loadErrors.push(err) - } - } else if (process.platform === 'android') { - if (process.arch === 'arm64') { - ${requireTuple("android-arm64")} - } else if (process.arch === 'arm') { - ${requireTuple("android-arm-eabi")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on Android \${process.arch}\`)) - } - } else if (process.platform === 'win32') { - if (process.arch === 'x64') { - if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') { - ${requireTuple("win32-x64-gnu")} - } else { - ${requireTuple("win32-x64-msvc")} - } - } else if (process.arch === 'ia32') { - ${requireTuple("win32-ia32-msvc")} - } else if (process.arch === 'arm64') { - ${requireTuple("win32-arm64-msvc")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on Windows: \${process.arch}\`)) - } - } else if (process.platform === 'darwin') { - ${requireTuple("darwin-universal", 6)} - if (process.arch === 'x64') { - ${requireTuple("darwin-x64")} - } else if (process.arch === 'arm64') { - ${requireTuple("darwin-arm64")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on macOS: \${process.arch}\`)) - } - } else if (process.platform === 'freebsd') { - if (process.arch === 'x64') { - ${requireTuple("freebsd-x64")} - } else if (process.arch === 'arm64') { - ${requireTuple("freebsd-arm64")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on FreeBSD: \${process.arch}\`)) - } - } else if (process.platform === 'linux') { - if (process.arch === 'x64') { - if (isMusl()) { - ${requireTuple("linux-x64-musl", 10)} - } else { - ${requireTuple("linux-x64-gnu", 10)} - } - } else if (process.arch === 'arm64') { - if (isMusl()) { - ${requireTuple("linux-arm64-musl", 10)} - } else { - ${requireTuple("linux-arm64-gnu", 10)} - } - } else if (process.arch === 'arm') { - if (isMusl()) { - ${requireTuple("linux-arm-musleabihf", 10)} - } else { - ${requireTuple("linux-arm-gnueabihf", 10)} - } - } else if (process.arch === 'loong64') { - if (isMusl()) { - ${requireTuple("linux-loong64-musl", 10)} - } else { - ${requireTuple("linux-loong64-gnu", 10)} - } - } else if (process.arch === 'riscv64') { - if (isMusl()) { - ${requireTuple("linux-riscv64-musl", 10)} - } else { - ${requireTuple("linux-riscv64-gnu", 10)} - } - } else if (process.arch === 'ppc64') { - ${requireTuple("linux-ppc64-gnu")} - } else if (process.arch === 's390x') { - ${requireTuple("linux-s390x-gnu")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on Linux: \${process.arch}\`)) - } - } else if (process.platform === 'openharmony') { - if (process.arch === 'arm64') { - ${requireTuple("openharmony-arm64")} - } else if (process.arch === 'x64') { - ${requireTuple("openharmony-x64")} - } else if (process.arch === 'arm') { - ${requireTuple("openharmony-arm")} - } else { - loadErrors.push(new Error(\`Unsupported architecture on OpenHarmony: \${process.arch}\`)) - } - } else { - loadErrors.push(new Error(\`Unsupported OS: \${process.platform}, architecture: \${process.arch}\`)) - } -} - -nativeBinding = requireNative() - -if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) { - let wasiBinding = null - let wasiBindingError = null - try { - wasiBinding = require('./${localName}.wasi.cjs') - nativeBinding = wasiBinding - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - wasiBindingError = err - } - } - if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) { - try { - wasiBinding = require('${pkgName}-wasm32-wasi') - nativeBinding = wasiBinding - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - if (!wasiBindingError) { - wasiBindingError = err - } else { - wasiBindingError.cause = err - } - loadErrors.push(err) - } - } - } - if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) { - const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error') - error.cause = wasiBindingError - throw error - } -} - -if (!nativeBinding) { - if (loadErrors.length > 0) { - throw new Error( - \`Cannot find native binding. \` + - \`npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). \` + - 'Please try \`npm i\` again after removing both package-lock.json and node_modules directory.', - { - cause: loadErrors.reduce((err, cur) => { - cur.cause = err - return cur - }), - }, - ) - } - throw new Error(\`Failed to load native binding\`) -} -`; -} - -//#endregion -//#region src/api/templates/load-wasi-template.ts -const createWasiBrowserBinding = (wasiFilename, initialMemory = 4e3, maximumMemory = 65536, fs$1 = false, asyncInit = false, buffer = false) => { - return `import { - createOnMessage as __wasmCreateOnMessageForFsProxy, - getDefaultContext as __emnapiGetDefaultContext, - ${asyncInit ? `instantiateNapiModule as __emnapiInstantiateNapiModule` : `instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync`}, - WASI as __WASI, -} from '@napi-rs/wasm-runtime' -${fs$1 ? buffer ? `import { memfs, Buffer } from '@napi-rs/wasm-runtime/fs'` : `import { memfs } from '@napi-rs/wasm-runtime/fs'` : ""} -${buffer && !fs$1 ? `import { Buffer } from 'buffer'` : ""} -${fs$1 ? ` -export const { fs: __fs, vol: __volume } = memfs() - -const __wasi = new __WASI({ - version: 'preview1', - fs: __fs, - preopens: { - '/': '/', - }, -})` : ` -const __wasi = new __WASI({ - version: 'preview1', -})`} - -const __wasmUrl = new URL('./${wasiFilename}.wasm', import.meta.url).href -const __emnapiContext = __emnapiGetDefaultContext() -${buffer ? "__emnapiContext.feature.Buffer = Buffer" : ""} - -const __sharedMemory = new WebAssembly.Memory({ - initial: ${initialMemory}, - maximum: ${maximumMemory}, - shared: true, -}) - -const __wasmFile = await fetch(__wasmUrl).then((res) => res.arrayBuffer()) - -const { - instance: __napiInstance, - module: __wasiModule, - napiModule: __napiModule, -} = ${asyncInit ? `await __emnapiInstantiateNapiModule` : `__emnapiInstantiateNapiModuleSync`}(__wasmFile, { - context: __emnapiContext, - asyncWorkPoolSize: 4, - wasi: __wasi, - onCreateWorker() { - const worker = new Worker(new URL('./wasi-worker-browser.mjs', import.meta.url), { - type: 'module', - }) -${fs$1 ? ` worker.addEventListener('message', __wasmCreateOnMessageForFsProxy(__fs))\n` : ""} - return worker - }, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: __sharedMemory, - } - return importObject - }, - beforeInit({ instance }) { - for (const name of Object.keys(instance.exports)) { - if (name.startsWith('__napi_register__')) { - instance.exports[name]() - } - } - }, -}) -`; -}; -const createWasiBinding = (wasmFileName, packageName, initialMemory = 4e3, maximumMemory = 65536) => `/* eslint-disable */ -/* prettier-ignore */ - -/* auto-generated by NAPI-RS */ - -const __nodeFs = require('node:fs') -const __nodePath = require('node:path') -const { WASI: __nodeWASI } = require('node:wasi') -const { Worker } = require('node:worker_threads') - -const { - createOnMessage: __wasmCreateOnMessageForFsProxy, - getDefaultContext: __emnapiGetDefaultContext, - instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync, -} = require('@napi-rs/wasm-runtime') - -const __rootDir = __nodePath.parse(process.cwd()).root - -const __wasi = new __nodeWASI({ - version: 'preview1', - env: process.env, - preopens: { - [__rootDir]: __rootDir, - } -}) - -const __emnapiContext = __emnapiGetDefaultContext() - -const __sharedMemory = new WebAssembly.Memory({ - initial: ${initialMemory}, - maximum: ${maximumMemory}, - shared: true, -}) - -let __wasmFilePath = __nodePath.join(__dirname, '${wasmFileName}.wasm') -const __wasmDebugFilePath = __nodePath.join(__dirname, '${wasmFileName}.debug.wasm') - -if (__nodeFs.existsSync(__wasmDebugFilePath)) { - __wasmFilePath = __wasmDebugFilePath -} else if (!__nodeFs.existsSync(__wasmFilePath)) { - try { - __wasmFilePath = require.resolve('${packageName}-wasm32-wasi/${wasmFileName}.wasm') - } catch { - throw new Error('Cannot find ${wasmFileName}.wasm file, and ${packageName}-wasm32-wasi package is not installed.') - } -} - -const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { - context: __emnapiContext, - asyncWorkPoolSize: (function() { - const threadsSizeFromEnv = Number(process.env.NAPI_RS_ASYNC_WORK_POOL_SIZE ?? process.env.UV_THREADPOOL_SIZE) - // NaN > 0 is false - if (threadsSizeFromEnv > 0) { - return threadsSizeFromEnv - } else { - return 4 - } - })(), - reuseWorker: true, - wasi: __wasi, - onCreateWorker() { - const worker = new Worker(__nodePath.join(__dirname, 'wasi-worker.mjs'), { - env: process.env, - }) - worker.onmessage = ({ data }) => { - __wasmCreateOnMessageForFsProxy(__nodeFs)(data) - } - - // The main thread of Node.js waits for all the active handles before exiting. - // But Rust threads are never waited without \`thread::join\`. - // So here we hack the code of Node.js to prevent the workers from being referenced (active). - // According to https://github.com/nodejs/node/blob/19e0d472728c79d418b74bddff588bea70a403d0/lib/internal/worker.js#L415, - // a worker is consist of two handles: kPublicPort and kHandle. - { - const kPublicPort = Object.getOwnPropertySymbols(worker).find(s => - s.toString().includes("kPublicPort") - ); - if (kPublicPort) { - worker[kPublicPort].ref = () => {}; - } - - const kHandle = Object.getOwnPropertySymbols(worker).find(s => - s.toString().includes("kHandle") - ); - if (kHandle) { - worker[kHandle].ref = () => {}; - } - - worker.unref(); - } - return worker - }, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: __sharedMemory, - } - return importObject - }, - beforeInit({ instance }) { - for (const name of Object.keys(instance.exports)) { - if (name.startsWith('__napi_register__')) { - instance.exports[name]() - } - } - }, -}) -`; - -//#endregion -//#region src/api/templates/wasi-worker-template.ts -const WASI_WORKER_TEMPLATE = `import fs from "node:fs"; -import { createRequire } from "node:module"; -import { parse } from "node:path"; -import { WASI } from "node:wasi"; -import { parentPort, Worker } from "node:worker_threads"; - -const require = createRequire(import.meta.url); - -const { instantiateNapiModuleSync, MessageHandler, getDefaultContext } = require("@napi-rs/wasm-runtime"); - -if (parentPort) { - parentPort.on("message", (data) => { - globalThis.onmessage({ data }); - }); -} - -Object.assign(globalThis, { - self: globalThis, - require, - Worker, - importScripts: function (f) { - ;(0, eval)(fs.readFileSync(f, "utf8") + "//# sourceURL=" + f); - }, - postMessage: function (msg) { - if (parentPort) { - parentPort.postMessage(msg); - } - }, -}); - -const emnapiContext = getDefaultContext(); - -const __rootDir = parse(process.cwd()).root; - -const handler = new MessageHandler({ - onLoad({ wasmModule, wasmMemory }) { - const wasi = new WASI({ - version: 'preview1', - env: process.env, - preopens: { - [__rootDir]: __rootDir, - }, - }); - - return instantiateNapiModuleSync(wasmModule, { - childThread: true, - wasi, - context: emnapiContext, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: wasmMemory - }; - }, - }); - }, -}); - -globalThis.onmessage = function (e) { - handler.handle(e); -}; -`; -const createWasiBrowserWorkerBinding = (fs$1) => { - return `${fs$1 ? `import { instantiateNapiModuleSync, MessageHandler, WASI, createFsProxy } from '@napi-rs/wasm-runtime' -import { memfsExported as __memfsExported } from '@napi-rs/wasm-runtime/fs' - -const fs = createFsProxy(__memfsExported)` : `import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime'`} - -const handler = new MessageHandler({ - onLoad({ wasmModule, wasmMemory }) { - ${fs$1 ? `const wasi = new WASI({ - fs, - preopens: { - '/': '/', - }, - print: function () { - // eslint-disable-next-line no-console - console.log.apply(console, arguments) - }, - printErr: function() { - // eslint-disable-next-line no-console - console.error.apply(console, arguments) - }, - })` : `const wasi = new WASI({ - print: function () { - // eslint-disable-next-line no-console - console.log.apply(console, arguments) - }, - printErr: function() { - // eslint-disable-next-line no-console - console.error.apply(console, arguments) - }, - })`} - return instantiateNapiModuleSync(wasmModule, { - childThread: true, - wasi, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: wasmMemory, - } - }, - }) - }, -}) - -globalThis.onmessage = function (e) { - handler.handle(e) -} -`; -}; - -//#endregion -//#region src/api/build.ts -const debug$7 = debugFactory("build"); -const require = createRequire(import.meta.url); -async function buildProject(rawOptions) { - debug$7("napi build command receive options: %O", rawOptions); - const options = { - dtsCache: true, - ...rawOptions, - cwd: rawOptions.cwd ?? process.cwd() - }; - const resolvePath = (...paths) => resolve(options.cwd, ...paths); - const manifestPath = resolvePath(options.manifestPath ?? "Cargo.toml"); - const metadata = await parseMetadata(manifestPath); - const crate = metadata.packages.find((p) => { - if (options.package) return p.name === options.package; - else return p.manifest_path === manifestPath; - }); - if (!crate) throw new Error("Unable to find crate to build. It seems you are trying to build a crate in a workspace, try using `--package` option to specify the package to build."); - return new Builder(metadata, crate, await readNapiConfig(resolvePath(options.packageJsonPath ?? "package.json"), options.configPath ? resolvePath(options.configPath) : void 0), options).build(); -} -var Builder = class { - args = []; - envs = {}; - outputs = []; - target; - crateDir; - outputDir; - targetDir; - enableTypeDef = false; - constructor(metadata, crate, config, options) { - this.metadata = metadata; - this.crate = crate; - this.config = config; - this.options = options; - this.target = options.target ? parseTriple(options.target) : process.env.CARGO_BUILD_TARGET ? parseTriple(process.env.CARGO_BUILD_TARGET) : getSystemDefaultTarget(); - this.crateDir = parse(crate.manifest_path).dir; - this.outputDir = resolve(this.options.cwd, options.outputDir ?? this.crateDir); - this.targetDir = options.targetDir ?? process.env.CARGO_BUILD_TARGET_DIR ?? metadata.target_directory; - this.enableTypeDef = this.crate.dependencies.some((dep) => dep.name === "napi-derive" && (dep.uses_default_features || dep.features.includes("type-def"))); - if (!this.enableTypeDef) { - const requirementWarning = "`napi-derive` crate is not used or `type-def` feature is not enabled for `napi-derive` crate"; - debug$7.warn(`${requirementWarning}. Will skip binding generation for \`.node\`, \`.wasi\` and \`.d.ts\` files.`); - if (this.options.dts || this.options.dtsHeader || this.config.dtsHeader || this.config.dtsHeaderFile) debug$7.warn(`${requirementWarning}. \`dts\` related options are enabled but will be ignored.`); - } - } - get cdyLibName() { - var _this$crate$targets$f; - return (_this$crate$targets$f = this.crate.targets.find((t) => t.crate_types.includes("cdylib"))) === null || _this$crate$targets$f === void 0 ? void 0 : _this$crate$targets$f.name; - } - get binName() { - var _this$crate$targets$f2; - return this.options.bin ?? (this.cdyLibName ? null : (_this$crate$targets$f2 = this.crate.targets.find((t) => t.crate_types.includes("bin"))) === null || _this$crate$targets$f2 === void 0 ? void 0 : _this$crate$targets$f2.name); - } - build() { - if (!this.cdyLibName) { - const warning = "Missing `crate-type = [\"cdylib\"]` in [lib] config. The build result will not be available as node addon."; - if (this.binName) debug$7.warn(warning); - else throw new Error(warning); - } - return this.pickBinary().setPackage().setFeatures().setTarget().pickCrossToolchain().setEnvs().setBypassArgs().exec(); - } - pickCrossToolchain() { - if (!this.options.useNapiCross) return this; - if (this.options.useCross) debug$7.warn("You are trying to use both `--cross` and `--use-napi-cross` options, `--use-cross` will be ignored."); - if (this.options.crossCompile) debug$7.warn("You are trying to use both `--cross-compile` and `--use-napi-cross` options, `--cross-compile` will be ignored."); - try { - var _process$env$TARGET_C, _process$env$CC, _process$env$CXX, _process$env$TARGET_C2; - const { version: version$2, download } = require("@napi-rs/cross-toolchain"); - const alias = { "s390x-unknown-linux-gnu": "s390x-ibm-linux-gnu" }; - const toolchainPath = join(homedir(), ".napi-rs", "cross-toolchain", version$2, this.target.triple); - mkdirSync(toolchainPath, { recursive: true }); - if (existsSync(join(toolchainPath, "package.json"))) debug$7(`Toolchain ${toolchainPath} exists, skip extracting`); - else download(process.arch, this.target.triple).unpack(toolchainPath); - const upperCaseTarget = targetToEnvVar(this.target.triple); - const crossTargetName = alias[this.target.triple] ?? this.target.triple; - const linkerEnv = `CARGO_TARGET_${upperCaseTarget}_LINKER`; - this.setEnvIfNotExists(linkerEnv, join(toolchainPath, "bin", `${crossTargetName}-gcc`)); - this.setEnvIfNotExists("TARGET_SYSROOT", join(toolchainPath, crossTargetName, "sysroot")); - this.setEnvIfNotExists("TARGET_AR", join(toolchainPath, "bin", `${crossTargetName}-ar`)); - this.setEnvIfNotExists("TARGET_RANLIB", join(toolchainPath, "bin", `${crossTargetName}-ranlib`)); - this.setEnvIfNotExists("TARGET_READELF", join(toolchainPath, "bin", `${crossTargetName}-readelf`)); - this.setEnvIfNotExists("TARGET_C_INCLUDE_PATH", join(toolchainPath, crossTargetName, "sysroot", "usr", "include/")); - this.setEnvIfNotExists("TARGET_CC", join(toolchainPath, "bin", `${crossTargetName}-gcc`)); - this.setEnvIfNotExists("TARGET_CXX", join(toolchainPath, "bin", `${crossTargetName}-g++`)); - this.setEnvIfNotExists("BINDGEN_EXTRA_CLANG_ARGS", `--sysroot=${this.envs.TARGET_SYSROOT}}`); - if (((_process$env$TARGET_C = process.env.TARGET_CC) === null || _process$env$TARGET_C === void 0 ? void 0 : _process$env$TARGET_C.startsWith("clang")) || ((_process$env$CC = process.env.CC) === null || _process$env$CC === void 0 ? void 0 : _process$env$CC.startsWith("clang")) && !process.env.TARGET_CC) { - const TARGET_CFLAGS = process.env.TARGET_CFLAGS ?? ""; - this.envs.TARGET_CFLAGS = `--sysroot=${this.envs.TARGET_SYSROOT} --gcc-toolchain=${toolchainPath} ${TARGET_CFLAGS}`; - } - if (((_process$env$CXX = process.env.CXX) === null || _process$env$CXX === void 0 ? void 0 : _process$env$CXX.startsWith("clang++")) && !process.env.TARGET_CXX || ((_process$env$TARGET_C2 = process.env.TARGET_CXX) === null || _process$env$TARGET_C2 === void 0 ? void 0 : _process$env$TARGET_C2.startsWith("clang++"))) { - const TARGET_CXXFLAGS = process.env.TARGET_CXXFLAGS ?? ""; - this.envs.TARGET_CXXFLAGS = `--sysroot=${this.envs.TARGET_SYSROOT} --gcc-toolchain=${toolchainPath} ${TARGET_CXXFLAGS}`; - } - this.envs.PATH = this.envs.PATH ? `${toolchainPath}/bin:${this.envs.PATH}:${process.env.PATH}` : `${toolchainPath}/bin:${process.env.PATH}`; - } catch (e) { - debug$7.warn("Pick cross toolchain failed", e); - } - return this; - } - exec() { - debug$7(`Start building crate: ${this.crate.name}`); - debug$7(" %i", `cargo ${this.args.join(" ")}`); - const controller = new AbortController(); - const watch = this.options.watch; - return { - task: new Promise((resolve$1, reject) => { - var _buildProcess$stderr; - if (this.options.useCross && this.options.crossCompile) throw new Error("`--use-cross` and `--cross-compile` can not be used together"); - const buildProcess = spawn(process.env.CARGO ?? (this.options.useCross ? "cross" : "cargo"), this.args, { - env: { - ...process.env, - ...this.envs - }, - stdio: watch ? [ - "inherit", - "inherit", - "pipe" - ] : "inherit", - cwd: this.options.cwd, - signal: controller.signal - }); - buildProcess.once("exit", (code) => { - if (code === 0) { - debug$7("%i", `Build crate ${this.crate.name} successfully!`); - resolve$1(); - } else reject(/* @__PURE__ */ new Error(`Build failed with exit code ${code}`)); - }); - buildProcess.once("error", (e) => { - reject(new Error(`Build failed with error: ${e.message}`, { cause: e })); - }); - (_buildProcess$stderr = buildProcess.stderr) === null || _buildProcess$stderr === void 0 || _buildProcess$stderr.on("data", (data) => { - const output = data.toString(); - console.error(output); - if (/Finished\s(`dev`|`release`)/.test(output)) this.postBuild().catch(() => {}); - }); - }).then(() => this.postBuild()), - abort: () => controller.abort() - }; - } - pickBinary() { - let set = false; - if (this.options.watch) if (process.env.CI) debug$7.warn("Watch mode is not supported in CI environment"); - else { - debug$7("Use %i", "cargo-watch"); - tryInstallCargoBinary("cargo-watch", "watch"); - this.args.push("watch", "--why", "-i", "*.{js,ts,node}", "-w", this.crateDir, "--", "cargo", "build"); - set = true; - } - if (this.options.crossCompile) if (this.target.platform === "win32") if (process.platform === "win32") debug$7.warn("You are trying to cross compile to win32 platform on win32 platform which is unnecessary."); - else { - debug$7("Use %i", "cargo-xwin"); - tryInstallCargoBinary("cargo-xwin", "xwin"); - this.args.push("xwin", "build"); - if (this.target.arch === "ia32") this.envs.XWIN_ARCH = "x86"; - set = true; - } - else if (this.target.platform === "linux" && process.platform === "linux" && this.target.arch === process.arch && (function(abi) { - var _process$report; - return abi === (((_process$report = process.report) === null || _process$report === void 0 || (_process$report = _process$report.getReport()) === null || _process$report === void 0 || (_process$report = _process$report.header) === null || _process$report === void 0 ? void 0 : _process$report.glibcVersionRuntime) ? "gnu" : "musl"); - })(this.target.abi)) debug$7.warn("You are trying to cross compile to linux target on linux platform which is unnecessary."); - else if (this.target.platform === "darwin" && process.platform === "darwin") debug$7.warn("You are trying to cross compile to darwin target on darwin platform which is unnecessary."); - else { - debug$7("Use %i", "cargo-zigbuild"); - tryInstallCargoBinary("cargo-zigbuild", "zigbuild"); - this.args.push("zigbuild"); - set = true; - } - if (!set) this.args.push("build"); - return this; - } - setPackage() { - const args = []; - if (this.options.package) args.push("--package", this.options.package); - if (this.binName) args.push("--bin", this.binName); - if (args.length) { - debug$7("Set package flags: "); - debug$7(" %O", args); - this.args.push(...args); - } - return this; - } - setTarget() { - debug$7("Set compiling target to: "); - debug$7(" %i", this.target.triple); - this.args.push("--target", this.target.triple); - return this; - } - setEnvs() { - var _this$target$abi; - if (this.enableTypeDef) { - this.envs.NAPI_TYPE_DEF_TMP_FOLDER = this.generateIntermediateTypeDefFolder(); - this.setForceBuildEnvs(this.envs.NAPI_TYPE_DEF_TMP_FOLDER); - } - let rustflags = process.env.RUSTFLAGS ?? process.env.CARGO_BUILD_RUSTFLAGS ?? ""; - if (((_this$target$abi = this.target.abi) === null || _this$target$abi === void 0 ? void 0 : _this$target$abi.includes("musl")) && !rustflags.includes("target-feature=-crt-static")) rustflags += " -C target-feature=-crt-static"; - if (this.options.strip && !rustflags.includes("link-arg=-s")) rustflags += " -C link-arg=-s"; - if (rustflags.length) this.envs.RUSTFLAGS = rustflags; - const linker = this.options.crossCompile ? void 0 : getTargetLinker(this.target.triple); - const linkerEnv = `CARGO_TARGET_${targetToEnvVar(this.target.triple)}_LINKER`; - if (linker && !process.env[linkerEnv] && !this.envs[linkerEnv]) this.envs[linkerEnv] = linker; - if (this.target.platform === "android") this.setAndroidEnv(); - if (this.target.platform === "wasi") this.setWasiEnv(); - if (this.target.platform === "openharmony") this.setOpenHarmonyEnv(); - debug$7("Set envs: "); - Object.entries(this.envs).forEach(([k, v]) => { - debug$7(" %i", `${k}=${v}`); - }); - return this; - } - setForceBuildEnvs(typeDefTmpFolder) { - this.metadata.packages.forEach((crate) => { - if (crate.dependencies.some((d) => d.name === "napi-derive") && !existsSync(join(typeDefTmpFolder, crate.name))) this.envs[`NAPI_FORCE_BUILD_${crate.name.replace(/-/g, "_").toUpperCase()}`] = Date.now().toString(); - }); - } - setAndroidEnv() { - const { ANDROID_NDK_LATEST_HOME } = process.env; - if (!ANDROID_NDK_LATEST_HOME) debug$7.warn(`${colors.red("ANDROID_NDK_LATEST_HOME")} environment variable is missing`); - if (process.platform === "android") return; - const targetArch = this.target.arch === "arm" ? "armv7a" : "aarch64"; - const targetPlatform = this.target.arch === "arm" ? "androideabi24" : "android24"; - const hostPlatform = process.platform === "darwin" ? "darwin" : process.platform === "win32" ? "windows" : "linux"; - Object.assign(this.envs, { - CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-android24-clang`, - CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-androideabi24-clang`, - TARGET_CC: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang`, - TARGET_CXX: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang++`, - TARGET_AR: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/llvm-ar`, - TARGET_RANLIB: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/llvm-ranlib`, - ANDROID_NDK: ANDROID_NDK_LATEST_HOME, - PATH: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin${process.platform === "win32" ? ";" : ":"}${process.env.PATH}` - }); - } - setWasiEnv() { - const emnapi = join(require.resolve("emnapi"), "..", "lib", "wasm32-wasi-threads"); - this.envs.EMNAPI_LINK_DIR = emnapi; - const { WASI_SDK_PATH } = process.env; - if (WASI_SDK_PATH && existsSync(WASI_SDK_PATH)) { - this.envs.CARGO_TARGET_WASM32_WASI_PREVIEW1_THREADS_LINKER = join(WASI_SDK_PATH, "bin", "wasm-ld"); - this.envs.CARGO_TARGET_WASM32_WASIP1_LINKER = join(WASI_SDK_PATH, "bin", "wasm-ld"); - this.envs.CARGO_TARGET_WASM32_WASIP1_THREADS_LINKER = join(WASI_SDK_PATH, "bin", "wasm-ld"); - this.envs.CARGO_TARGET_WASM32_WASIP2_LINKER = join(WASI_SDK_PATH, "bin", "wasm-ld"); - this.setEnvIfNotExists("TARGET_CC", join(WASI_SDK_PATH, "bin", "clang")); - this.setEnvIfNotExists("TARGET_CXX", join(WASI_SDK_PATH, "bin", "clang++")); - this.setEnvIfNotExists("TARGET_AR", join(WASI_SDK_PATH, "bin", "ar")); - this.setEnvIfNotExists("TARGET_RANLIB", join(WASI_SDK_PATH, "bin", "ranlib")); - this.setEnvIfNotExists("TARGET_CFLAGS", `--target=wasm32-wasi-threads --sysroot=${WASI_SDK_PATH}/share/wasi-sysroot -pthread -mllvm -wasm-enable-sjlj`); - this.setEnvIfNotExists("TARGET_CXXFLAGS", `--target=wasm32-wasi-threads --sysroot=${WASI_SDK_PATH}/share/wasi-sysroot -pthread -mllvm -wasm-enable-sjlj`); - this.setEnvIfNotExists(`TARGET_LDFLAGS`, `-fuse-ld=${WASI_SDK_PATH}/bin/wasm-ld --target=wasm32-wasi-threads`); - } - } - setOpenHarmonyEnv() { - const { OHOS_SDK_PATH, OHOS_SDK_NATIVE } = process.env; - const ndkPath = OHOS_SDK_PATH ? `${OHOS_SDK_PATH}/native` : OHOS_SDK_NATIVE; - if (!ndkPath && process.platform !== "openharmony") { - debug$7.warn(`${colors.red("OHOS_SDK_PATH")} or ${colors.red("OHOS_SDK_NATIVE")} environment variable is missing`); - return; - } - const linkerName = `CARGO_TARGET_${this.target.triple.toUpperCase().replace(/-/g, "_")}_LINKER`; - const ranPath = `${ndkPath}/llvm/bin/llvm-ranlib`; - const arPath = `${ndkPath}/llvm/bin/llvm-ar`; - const ccPath = `${ndkPath}/llvm/bin/${this.target.triple}-clang`; - const cxxPath = `${ndkPath}/llvm/bin/${this.target.triple}-clang++`; - const asPath = `${ndkPath}/llvm/bin/llvm-as`; - const ldPath = `${ndkPath}/llvm/bin/ld.lld`; - const stripPath = `${ndkPath}/llvm/bin/llvm-strip`; - const objDumpPath = `${ndkPath}/llvm/bin/llvm-objdump`; - const objCopyPath = `${ndkPath}/llvm/bin/llvm-objcopy`; - const nmPath = `${ndkPath}/llvm/bin/llvm-nm`; - const binPath = `${ndkPath}/llvm/bin`; - const libPath = `${ndkPath}/llvm/lib`; - this.setEnvIfNotExists("LIBCLANG_PATH", libPath); - this.setEnvIfNotExists("DEP_ATOMIC", "clang_rt.builtins"); - this.setEnvIfNotExists(linkerName, ccPath); - this.setEnvIfNotExists("TARGET_CC", ccPath); - this.setEnvIfNotExists("TARGET_CXX", cxxPath); - this.setEnvIfNotExists("TARGET_AR", arPath); - this.setEnvIfNotExists("TARGET_RANLIB", ranPath); - this.setEnvIfNotExists("TARGET_AS", asPath); - this.setEnvIfNotExists("TARGET_LD", ldPath); - this.setEnvIfNotExists("TARGET_STRIP", stripPath); - this.setEnvIfNotExists("TARGET_OBJDUMP", objDumpPath); - this.setEnvIfNotExists("TARGET_OBJCOPY", objCopyPath); - this.setEnvIfNotExists("TARGET_NM", nmPath); - this.envs.PATH = `${binPath}${process.platform === "win32" ? ";" : ":"}${process.env.PATH}`; - } - setFeatures() { - const args = []; - if (this.options.allFeatures && this.options.noDefaultFeatures) throw new Error("Cannot specify --all-features and --no-default-features together"); - if (this.options.allFeatures) args.push("--all-features"); - else if (this.options.noDefaultFeatures) args.push("--no-default-features"); - if (this.options.features) args.push("--features", ...this.options.features); - debug$7("Set features flags: "); - debug$7(" %O", args); - this.args.push(...args); - return this; - } - setBypassArgs() { - var _this$options$cargoOp; - if (this.options.release) this.args.push("--release"); - if (this.options.verbose) this.args.push("--verbose"); - if (this.options.targetDir) this.args.push("--target-dir", this.options.targetDir); - if (this.options.profile) this.args.push("--profile", this.options.profile); - if (this.options.manifestPath) this.args.push("--manifest-path", this.options.manifestPath); - if ((_this$options$cargoOp = this.options.cargoOptions) === null || _this$options$cargoOp === void 0 ? void 0 : _this$options$cargoOp.length) this.args.push(...this.options.cargoOptions); - return this; - } - generateIntermediateTypeDefFolder() { - let folder = join(this.targetDir, "napi-rs", `${this.crate.name}-${createHash("sha256").update(this.crate.manifest_path).update(CLI_VERSION).digest("hex").substring(0, 8)}`); - if (!this.options.dtsCache) { - rmSync(folder, { - recursive: true, - force: true - }); - folder += `_${Date.now()}`; - } - mkdirAsync(folder, { recursive: true }); - return folder; - } - async postBuild() { - try { - debug$7(`Try to create output directory:`); - debug$7(" %i", this.outputDir); - await mkdirAsync(this.outputDir, { recursive: true }); - debug$7(`Output directory created`); - } catch (e) { - throw new Error(`Failed to create output directory ${this.outputDir}`, { cause: e }); - } - const wasmBinaryName = await this.copyArtifact(); - if (this.cdyLibName) { - const idents = await this.generateTypeDef(); - const jsOutput = await this.writeJsBinding(idents); - const wasmBindingsOutput = await this.writeWasiBinding(wasmBinaryName, idents); - if (jsOutput) this.outputs.push(jsOutput); - if (wasmBindingsOutput) this.outputs.push(...wasmBindingsOutput); - } - return this.outputs; - } - async copyArtifact() { - const [srcName, destName, wasmBinaryName] = this.getArtifactNames(); - if (!srcName || !destName) return; - const profile = this.options.profile ?? (this.options.release ? "release" : "debug"); - const src = join(this.targetDir, this.target.triple, profile, srcName); - debug$7(`Copy artifact from: [${src}]`); - const dest = join(this.outputDir, destName); - const isWasm = dest.endsWith(".wasm"); - try { - if (await fileExists(dest)) { - debug$7("Old artifact found, remove it first"); - await unlinkAsync(dest); - } - debug$7("Copy artifact to:"); - debug$7(" %i", dest); - if (isWasm) { - const { ModuleConfig } = await import("@napi-rs/wasm-tools"); - debug$7("Generate debug wasm module"); - try { - const debugWasmBinary = new ModuleConfig().generateDwarf(true).generateNameSection(true).generateProducersSection(true).preserveCodeTransform(true).strictValidate(false).parse(await readFileAsync(src)).emitWasm(true); - await writeFileAsync(dest.replace(/\.wasm$/, ".debug.wasm"), debugWasmBinary); - debug$7("Generate release wasm module"); - await writeFileAsync(dest, new ModuleConfig().generateDwarf(false).generateNameSection(false).generateProducersSection(false).preserveCodeTransform(false).strictValidate(false).onlyStableFeatures(false).parse(debugWasmBinary).emitWasm(false)); - } catch (e) { - debug$7.warn(`Failed to generate debug wasm module: ${e.message ?? e}`); - await copyFileAsync(src, dest); - } - } else await copyFileAsync(src, dest); - this.outputs.push({ - kind: dest.endsWith(".node") ? "node" : isWasm ? "wasm" : "exe", - path: dest - }); - return wasmBinaryName ? join(this.outputDir, wasmBinaryName) : null; - } catch (e) { - throw new Error("Failed to copy artifact", { cause: e }); - } - } - getArtifactNames() { - if (this.cdyLibName) { - const cdyLib = this.cdyLibName.replace(/-/g, "_"); - const wasiTarget = this.config.targets.find((t) => t.platform === "wasi"); - const srcName = this.target.platform === "darwin" ? `lib${cdyLib}.dylib` : this.target.platform === "win32" ? `${cdyLib}.dll` : this.target.platform === "wasi" || this.target.platform === "wasm" ? `${cdyLib}.wasm` : `lib${cdyLib}.so`; - let destName = this.config.binaryName; - if (this.options.platform) destName += `.${this.target.platformArchABI}`; - if (srcName.endsWith(".wasm")) destName += ".wasm"; - else destName += ".node"; - return [ - srcName, - destName, - wasiTarget ? `${this.config.binaryName}.${wasiTarget.platformArchABI}.wasm` : null - ]; - } else if (this.binName) { - const srcName = this.target.platform === "win32" ? `${this.binName}.exe` : this.binName; - return [srcName, srcName]; - } - return []; - } - async generateTypeDef() { - const typeDefDir = this.envs.NAPI_TYPE_DEF_TMP_FOLDER; - if (!this.enableTypeDef) return []; - const { exports, dts } = await generateTypeDef({ - typeDefDir, - noDtsHeader: this.options.noDtsHeader, - dtsHeader: this.options.dtsHeader, - configDtsHeader: this.config.dtsHeader, - configDtsHeaderFile: this.config.dtsHeaderFile, - constEnum: this.options.constEnum ?? this.config.constEnum, - cwd: this.options.cwd - }); - const dest = join(this.outputDir, this.options.dts ?? "index.d.ts"); - try { - debug$7("Writing type def to:"); - debug$7(" %i", dest); - await writeFileAsync(dest, dts, "utf-8"); - } catch (e) { - debug$7.error("Failed to write type def file"); - debug$7.error(e); - } - if (exports.length > 0) { - const dest$1 = join(this.outputDir, this.options.dts ?? "index.d.ts"); - this.outputs.push({ - kind: "dts", - path: dest$1 - }); - } - return exports; - } - async writeJsBinding(idents) { - return writeJsBinding({ - platform: this.options.platform, - noJsBinding: this.options.noJsBinding, - idents, - jsBinding: this.options.jsBinding, - esm: this.options.esm, - binaryName: this.config.binaryName, - packageName: this.options.jsPackageName ?? this.config.packageName, - version: process.env.npm_new_version ?? this.config.packageJson.version, - outputDir: this.outputDir - }); - } - async writeWasiBinding(distFileName, idents) { - if (distFileName) { - var _this$config$wasm, _this$config$wasm2, _this$config$wasm3, _this$config$wasm4, _this$config$wasm5, _this$config$wasm6, _this$config$wasm7, _this$config$wasm8; - const { name, dir: dir$1 } = parse(distFileName); - const bindingPath = join(dir$1, `${this.config.binaryName}.wasi.cjs`); - const browserBindingPath = join(dir$1, `${this.config.binaryName}.wasi-browser.js`); - const workerPath = join(dir$1, "wasi-worker.mjs"); - const browserWorkerPath = join(dir$1, "wasi-worker-browser.mjs"); - const browserEntryPath = join(dir$1, "browser.js"); - const exportsCode = `module.exports = __napiModule.exports\n` + idents.map((ident) => `module.exports.${ident} = __napiModule.exports.${ident}`).join("\n"); - await writeFileAsync(bindingPath, createWasiBinding(name, this.config.packageName, (_this$config$wasm = this.config.wasm) === null || _this$config$wasm === void 0 ? void 0 : _this$config$wasm.initialMemory, (_this$config$wasm2 = this.config.wasm) === null || _this$config$wasm2 === void 0 ? void 0 : _this$config$wasm2.maximumMemory) + exportsCode + "\n", "utf8"); - await writeFileAsync(browserBindingPath, createWasiBrowserBinding(name, (_this$config$wasm3 = this.config.wasm) === null || _this$config$wasm3 === void 0 ? void 0 : _this$config$wasm3.initialMemory, (_this$config$wasm4 = this.config.wasm) === null || _this$config$wasm4 === void 0 ? void 0 : _this$config$wasm4.maximumMemory, (_this$config$wasm5 = this.config.wasm) === null || _this$config$wasm5 === void 0 || (_this$config$wasm5 = _this$config$wasm5.browser) === null || _this$config$wasm5 === void 0 ? void 0 : _this$config$wasm5.fs, (_this$config$wasm6 = this.config.wasm) === null || _this$config$wasm6 === void 0 || (_this$config$wasm6 = _this$config$wasm6.browser) === null || _this$config$wasm6 === void 0 ? void 0 : _this$config$wasm6.asyncInit, (_this$config$wasm7 = this.config.wasm) === null || _this$config$wasm7 === void 0 || (_this$config$wasm7 = _this$config$wasm7.browser) === null || _this$config$wasm7 === void 0 ? void 0 : _this$config$wasm7.buffer) + `export default __napiModule.exports\n` + idents.map((ident) => `export const ${ident} = __napiModule.exports.${ident}`).join("\n") + "\n", "utf8"); - await writeFileAsync(workerPath, WASI_WORKER_TEMPLATE, "utf8"); - await writeFileAsync(browserWorkerPath, createWasiBrowserWorkerBinding(((_this$config$wasm8 = this.config.wasm) === null || _this$config$wasm8 === void 0 || (_this$config$wasm8 = _this$config$wasm8.browser) === null || _this$config$wasm8 === void 0 ? void 0 : _this$config$wasm8.fs) ?? false), "utf8"); - await writeFileAsync(browserEntryPath, `export * from '${this.config.packageName}-wasm32-wasi'\n`); - return [ - { - kind: "js", - path: bindingPath - }, - { - kind: "js", - path: browserBindingPath - }, - { - kind: "js", - path: workerPath - }, - { - kind: "js", - path: browserWorkerPath - }, - { - kind: "js", - path: browserEntryPath - } - ]; - } - return []; - } - setEnvIfNotExists(env, value$1) { - if (!process.env[env]) this.envs[env] = value$1; - } -}; -async function writeJsBinding(options) { - if (!options.platform || options.noJsBinding || options.idents.length === 0) return; - const name = options.jsBinding ?? "index.js"; - const binding = (options.esm ? createEsmBinding : createCjsBinding)(options.binaryName, options.packageName, options.idents, options.version); - try { - const dest = join(options.outputDir, name); - debug$7("Writing js binding to:"); - debug$7(" %i", dest); - await writeFileAsync(dest, binding, "utf-8"); - return { - kind: "js", - path: dest - }; - } catch (e) { - throw new Error("Failed to write js binding file", { cause: e }); - } -} -async function generateTypeDef(options) { - if (!await dirExistsAsync(options.typeDefDir)) return { - exports: [], - dts: "" - }; - let header = ""; - let dts = ""; - let exports = []; - if (!options.noDtsHeader) { - const dtsHeader = options.dtsHeader ?? options.configDtsHeader; - if (options.configDtsHeaderFile) try { - header = await readFileAsync(join(options.cwd, options.configDtsHeaderFile), "utf-8"); - } catch (e) { - debug$7.warn(`Failed to read dts header file ${options.configDtsHeaderFile}`, e); - } - else if (dtsHeader) header = dtsHeader; - else header = DEFAULT_TYPE_DEF_HEADER; - } - const files = await readdirAsync(options.typeDefDir, { withFileTypes: true }); - if (!files.length) { - debug$7("No type def files found. Skip generating dts file."); - return { - exports: [], - dts: "" - }; - } - for (const file of files) { - if (!file.isFile()) continue; - const { dts: fileDts, exports: fileExports } = await processTypeDef(join(options.typeDefDir, file.name), options.constEnum ?? true); - dts += fileDts; - exports.push(...fileExports); - } - if (dts.indexOf("ExternalObject<") > -1) header += ` -export declare class ExternalObject { - readonly '': { - readonly '': unique symbol - [K: symbol]: T - } -} -`; - if (dts.indexOf("TypedArray") > -1) header += ` -export type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array -`; - dts = header + dts; - return { - exports, - dts - }; -} - -//#endregion -//#region src/def/create-npm-dirs.ts -var BaseCreateNpmDirsCommand = class extends Command { - static paths = [["create-npm-dirs"]]; - static usage = Command.Usage({ description: "Create npm package dirs for different platforms" }); - cwd = Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - npmDir = Option.String("--npm-dir", "npm", { description: "Path to the folder where the npm packages put" }); - dryRun = Option.Boolean("--dry-run", false, { description: "Dry run without touching file system" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir, - dryRun: this.dryRun - }; - } -}; -function applyDefaultCreateNpmDirsOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - npmDir: "npm", - dryRun: false, - ...options - }; -} - -//#endregion -//#region src/api/create-npm-dirs.ts -const debug$6 = debugFactory("create-npm-dirs"); -async function createNpmDirs(userOptions) { - const options = applyDefaultCreateNpmDirsOptions(userOptions); - async function mkdirAsync$1(dir$1) { - debug$6("Try to create dir: %i", dir$1); - if (options.dryRun) return; - await mkdirAsync(dir$1, { recursive: true }); - } - async function writeFileAsync$1(file, content) { - debug$6("Writing file %i", file); - if (options.dryRun) { - debug$6(content); - return; - } - await writeFileAsync(file, content); - } - const packageJsonPath = resolve(options.cwd, options.packageJsonPath); - const npmPath = resolve(options.cwd, options.npmDir); - debug$6(`Read content from [${options.configPath ?? packageJsonPath}]`); - const { targets, binaryName, packageName, packageJson } = await readNapiConfig(packageJsonPath, options.configPath ? resolve(options.cwd, options.configPath) : void 0); - for (const target of targets) { - const targetDir = join(npmPath, `${target.platformArchABI}`); - await mkdirAsync$1(targetDir); - const binaryFileName = target.arch === "wasm32" ? `${binaryName}.${target.platformArchABI}.wasm` : `${binaryName}.${target.platformArchABI}.node`; - const scopedPackageJson = { - name: `${packageName}-${target.platformArchABI}`, - version: packageJson.version, - cpu: target.arch !== "universal" ? [target.arch] : void 0, - main: binaryFileName, - files: [binaryFileName], - ...pick$1(packageJson, "description", "keywords", "author", "authors", "homepage", "license", "engines", "repository", "bugs") - }; - if (packageJson.publishConfig) scopedPackageJson.publishConfig = pick$1(packageJson.publishConfig, "registry", "access"); - if (target.arch !== "wasm32") scopedPackageJson.os = [target.platform]; - else { - var _scopedPackageJson$fi, _scopedPackageJson$en; - const entry = `${binaryName}.wasi.cjs`; - scopedPackageJson.main = entry; - scopedPackageJson.browser = `${binaryName}.wasi-browser.js`; - (_scopedPackageJson$fi = scopedPackageJson.files) === null || _scopedPackageJson$fi === void 0 || _scopedPackageJson$fi.push(entry, scopedPackageJson.browser, `wasi-worker.mjs`, `wasi-worker-browser.mjs`); - let needRestrictNodeVersion = true; - if ((_scopedPackageJson$en = scopedPackageJson.engines) === null || _scopedPackageJson$en === void 0 ? void 0 : _scopedPackageJson$en.node) try { - const { major } = parse$1(scopedPackageJson.engines.node) ?? { major: 0 }; - if (major >= 14) needRestrictNodeVersion = false; - } catch {} - if (needRestrictNodeVersion) scopedPackageJson.engines = { node: ">=14.0.0" }; - const wasmRuntime = await fetch(`https://registry.npmjs.org/@napi-rs/wasm-runtime`).then((res) => res.json()); - scopedPackageJson.dependencies = { "@napi-rs/wasm-runtime": `^${wasmRuntime["dist-tags"].latest}` }; - } - if (target.abi === "gnu") scopedPackageJson.libc = ["glibc"]; - else if (target.abi === "musl") scopedPackageJson.libc = ["musl"]; - await writeFileAsync$1(join(targetDir, "package.json"), JSON.stringify(scopedPackageJson, null, 2) + "\n"); - await writeFileAsync$1(join(targetDir, "README.md"), readme(packageName, target)); - debug$6.info(`${packageName} -${target.platformArchABI} created`); - } -} -function readme(packageName, target) { - return `# \`${packageName}-${target.platformArchABI}\` - -This is the **${target.triple}** binary for \`${packageName}\` -`; -} - -//#endregion -//#region src/def/new.ts -var BaseNewCommand = class extends Command { - static paths = [["new"]]; - static usage = Command.Usage({ description: "Create a new project with pre-configured boilerplate" }); - $$path = Option.String({ required: false }); - $$name = Option.String("--name,-n", { description: "The name of the project, default to the name of the directory if not provided" }); - minNodeApiVersion = Option.String("--min-node-api,-v", "4", { - validator: typanion.isNumber(), - description: "The minimum Node-API version to support" - }); - packageManager = Option.String("--package-manager", "yarn", { description: "The package manager to use. Only support yarn 4.x for now." }); - license = Option.String("--license,-l", "MIT", { description: "License for open-sourced project" }); - targets = Option.Array("--targets,-t", [], { description: "All targets the crate will be compiled for." }); - enableDefaultTargets = Option.Boolean("--enable-default-targets", true, { description: "Whether enable default targets" }); - enableAllTargets = Option.Boolean("--enable-all-targets", false, { description: "Whether enable all targets" }); - enableTypeDef = Option.Boolean("--enable-type-def", true, { description: "Whether enable the `type-def` feature for typescript definitions auto-generation" }); - enableGithubActions = Option.Boolean("--enable-github-actions", true, { description: "Whether generate preconfigured GitHub Actions workflow" }); - testFramework = Option.String("--test-framework", "ava", { description: "The JavaScript test framework to use, only support `ava` for now" }); - dryRun = Option.Boolean("--dry-run", false, { description: "Whether to run the command in dry-run mode" }); - getOptions() { - return { - path: this.$$path, - name: this.$$name, - minNodeApiVersion: this.minNodeApiVersion, - packageManager: this.packageManager, - license: this.license, - targets: this.targets, - enableDefaultTargets: this.enableDefaultTargets, - enableAllTargets: this.enableAllTargets, - enableTypeDef: this.enableTypeDef, - enableGithubActions: this.enableGithubActions, - testFramework: this.testFramework, - dryRun: this.dryRun - }; - } -}; -function applyDefaultNewOptions(options) { - return { - minNodeApiVersion: 4, - packageManager: "yarn", - license: "MIT", - targets: [], - enableDefaultTargets: true, - enableAllTargets: false, - enableTypeDef: true, - enableGithubActions: true, - testFramework: "ava", - dryRun: false, - ...options - }; -} - -//#endregion -//#region ../node_modules/@std/toml/stringify.js -function joinKeys(keys) { - return keys.map((str) => { - return str.length === 0 || str.match(/[^A-Za-z0-9_-]/) ? JSON.stringify(str) : str; - }).join("."); -} -var Dumper = class { - maxPad = 0; - srcObject; - output = []; - #arrayTypeCache = /* @__PURE__ */ new Map(); - constructor(srcObjc) { - this.srcObject = srcObjc; - } - dump(fmtOptions = {}) { - this.output = this.#printObject(this.srcObject); - this.output = this.#format(fmtOptions); - return this.output; - } - #printObject(obj, keys = []) { - const out = []; - const props = Object.keys(obj); - const inlineProps = []; - const multilineProps = []; - for (const prop of props) if (this.#isSimplySerializable(obj[prop])) inlineProps.push(prop); - else multilineProps.push(prop); - const sortedProps = inlineProps.concat(multilineProps); - for (const prop of sortedProps) { - const value$1 = obj[prop]; - if (value$1 instanceof Date) out.push(this.#dateDeclaration([prop], value$1)); - else if (typeof value$1 === "string" || value$1 instanceof RegExp) out.push(this.#strDeclaration([prop], value$1.toString())); - else if (typeof value$1 === "number") out.push(this.#numberDeclaration([prop], value$1)); - else if (typeof value$1 === "boolean") out.push(this.#boolDeclaration([prop], value$1)); - else if (value$1 instanceof Array) { - const arrayType = this.#getTypeOfArray(value$1); - if (arrayType === "ONLY_PRIMITIVE") out.push(this.#arrayDeclaration([prop], value$1)); - else if (arrayType === "ONLY_OBJECT_EXCLUDING_ARRAY") for (let i = 0; i < value$1.length; i++) { - out.push(""); - out.push(this.#headerGroup([...keys, prop])); - out.push(...this.#printObject(value$1[i], [...keys, prop])); - } - else { - const str = value$1.map((x) => this.#printAsInlineValue(x)).join(","); - out.push(`${this.#declaration([prop])}[${str}]`); - } - } else if (typeof value$1 === "object") { - out.push(""); - out.push(this.#header([...keys, prop])); - if (value$1) { - const toParse = value$1; - out.push(...this.#printObject(toParse, [...keys, prop])); - } - } - } - out.push(""); - return out; - } - #isPrimitive(value$1) { - return value$1 instanceof Date || value$1 instanceof RegExp || [ - "string", - "number", - "boolean" - ].includes(typeof value$1); - } - #getTypeOfArray(arr) { - if (this.#arrayTypeCache.has(arr)) return this.#arrayTypeCache.get(arr); - const type = this.#doGetTypeOfArray(arr); - this.#arrayTypeCache.set(arr, type); - return type; - } - #doGetTypeOfArray(arr) { - if (!arr.length) return "ONLY_PRIMITIVE"; - const onlyPrimitive = this.#isPrimitive(arr[0]); - if (arr[0] instanceof Array) return "MIXED"; - for (let i = 1; i < arr.length; i++) if (onlyPrimitive !== this.#isPrimitive(arr[i]) || arr[i] instanceof Array) return "MIXED"; - return onlyPrimitive ? "ONLY_PRIMITIVE" : "ONLY_OBJECT_EXCLUDING_ARRAY"; - } - #printAsInlineValue(value$1) { - if (value$1 instanceof Date) return `"${this.#printDate(value$1)}"`; - else if (typeof value$1 === "string" || value$1 instanceof RegExp) return JSON.stringify(value$1.toString()); - else if (typeof value$1 === "number") return value$1; - else if (typeof value$1 === "boolean") return value$1.toString(); - else if (value$1 instanceof Array) return `[${value$1.map((x) => this.#printAsInlineValue(x)).join(",")}]`; - else if (typeof value$1 === "object") { - if (!value$1) throw new Error("Should never reach"); - return `{${Object.keys(value$1).map((key) => { - return `${joinKeys([key])} = ${this.#printAsInlineValue(value$1[key])}`; - }).join(",")}}`; - } - throw new Error("Should never reach"); - } - #isSimplySerializable(value$1) { - return typeof value$1 === "string" || typeof value$1 === "number" || typeof value$1 === "boolean" || value$1 instanceof RegExp || value$1 instanceof Date || value$1 instanceof Array && this.#getTypeOfArray(value$1) !== "ONLY_OBJECT_EXCLUDING_ARRAY"; - } - #header(keys) { - return `[${joinKeys(keys)}]`; - } - #headerGroup(keys) { - return `[[${joinKeys(keys)}]]`; - } - #declaration(keys) { - const title = joinKeys(keys); - if (title.length > this.maxPad) this.maxPad = title.length; - return `${title} = `; - } - #arrayDeclaration(keys, value$1) { - return `${this.#declaration(keys)}${JSON.stringify(value$1)}`; - } - #strDeclaration(keys, value$1) { - return `${this.#declaration(keys)}${JSON.stringify(value$1)}`; - } - #numberDeclaration(keys, value$1) { - if (Number.isNaN(value$1)) return `${this.#declaration(keys)}nan`; - switch (value$1) { - case Infinity: return `${this.#declaration(keys)}inf`; - case -Infinity: return `${this.#declaration(keys)}-inf`; - default: return `${this.#declaration(keys)}${value$1}`; - } - } - #boolDeclaration(keys, value$1) { - return `${this.#declaration(keys)}${value$1}`; - } - #printDate(value$1) { - function dtPad(v, lPad = 2) { - return v.padStart(lPad, "0"); - } - const m = dtPad((value$1.getUTCMonth() + 1).toString()); - const d = dtPad(value$1.getUTCDate().toString()); - const h = dtPad(value$1.getUTCHours().toString()); - const min = dtPad(value$1.getUTCMinutes().toString()); - const s = dtPad(value$1.getUTCSeconds().toString()); - const ms = dtPad(value$1.getUTCMilliseconds().toString(), 3); - return `${value$1.getUTCFullYear()}-${m}-${d}T${h}:${min}:${s}.${ms}`; - } - #dateDeclaration(keys, value$1) { - return `${this.#declaration(keys)}${this.#printDate(value$1)}`; - } - #format(options = {}) { - const { keyAlignment = false } = options; - const rDeclaration = /^(\".*\"|[^=]*)\s=/; - const out = []; - for (let i = 0; i < this.output.length; i++) { - const l = this.output[i]; - if (l[0] === "[" && l[1] !== "[") { - var _this$output; - if (this.output[i + 1] === "" && ((_this$output = this.output[i + 2]) === null || _this$output === void 0 ? void 0 : _this$output.slice(0, l.length)) === l.slice(0, -1) + ".") { - i += 1; - continue; - } - out.push(l); - } else if (keyAlignment) { - const m = rDeclaration.exec(l); - if (m && m[1]) out.push(l.replace(m[1], m[1].padEnd(this.maxPad))); - else out.push(l); - } else out.push(l); - } - const cleanedOutput = []; - for (let i = 0; i < out.length; i++) { - const l = out[i]; - if (!(l === "" && out[i + 1] === "")) cleanedOutput.push(l); - } - return cleanedOutput; - } -}; -/** -* Converts an object to a {@link https://toml.io | TOML} string. -* -* @example Usage -* ```ts -* import { stringify } from "@std/toml/stringify"; -* import { assertEquals } from "@std/assert"; -* -* const obj = { -* title: "TOML Example", -* owner: { -* name: "Bob", -* bio: "Bob is a cool guy", -* } -* }; -* const tomlString = stringify(obj); -* assertEquals(tomlString, `title = "TOML Example"\n\n[owner]\nname = "Bob"\nbio = "Bob is a cool guy"\n`); -* ``` -* @param obj Source object -* @param options Options for stringifying. -* @returns TOML string -*/ function stringify(obj, options) { - return new Dumper(obj).dump(options).join("\n"); -} - -//#endregion -//#region ../node_modules/@jsr/std__collections/_utils.js -/** -* Filters the given array, removing all elements that do not match the given predicate -* **in place. This means `array` will be modified!**. -*/ function filterInPlace(array, predicate) { - let outputIndex = 0; - for (const cur of array) { - if (!predicate(cur)) continue; - array[outputIndex] = cur; - outputIndex += 1; - } - array.splice(outputIndex); - return array; -} - -//#endregion -//#region ../node_modules/@jsr/std__collections/deep_merge.js -function deepMerge(record, other, options) { - return deepMergeInternal(record, other, /* @__PURE__ */ new Set(), options); -} -function deepMergeInternal(record, other, seen, options) { - const result = {}; - const keys = new Set([...getKeys(record), ...getKeys(other)]); - for (const key of keys) { - if (key === "__proto__") continue; - const a = record[key]; - if (!Object.hasOwn(other, key)) { - result[key] = a; - continue; - } - const b = other[key]; - if (isNonNullObject(a) && isNonNullObject(b) && !seen.has(a) && !seen.has(b)) { - seen.add(a); - seen.add(b); - result[key] = mergeObjects(a, b, seen, options); - continue; - } - result[key] = b; - } - return result; -} -function mergeObjects(left, right, seen, options = { - arrays: "merge", - sets: "merge", - maps: "merge" -}) { - if (isMergeable(left) && isMergeable(right)) return deepMergeInternal(left, right, seen, options); - if (isIterable(left) && isIterable(right)) { - if (Array.isArray(left) && Array.isArray(right)) { - if (options.arrays === "merge") return left.concat(right); - return right; - } - if (left instanceof Map && right instanceof Map) { - if (options.maps === "merge") return new Map([...left, ...right]); - return right; - } - if (left instanceof Set && right instanceof Set) { - if (options.sets === "merge") return new Set([...left, ...right]); - return right; - } - } - return right; -} -/** -* Test whether a value is mergeable or not -* Builtins that look like objects, null and user defined classes -* are not considered mergeable (it means that reference will be copied) -*/ function isMergeable(value$1) { - return Object.getPrototypeOf(value$1) === Object.prototype; -} -function isIterable(value$1) { - return typeof value$1[Symbol.iterator] === "function"; -} -function isNonNullObject(value$1) { - return value$1 !== null && typeof value$1 === "object"; -} -function getKeys(record) { - const result = Object.getOwnPropertySymbols(record); - filterInPlace(result, (key) => Object.prototype.propertyIsEnumerable.call(record, key)); - result.push(...Object.keys(record)); - return result; -} - -//#endregion -//#region ../node_modules/@std/toml/_parser.js -/** -* Copy of `import { isLeap } from "@std/datetime";` because it cannot be impoted as long as it is unstable. -*/ function isLeap(yearNumber) { - return yearNumber % 4 === 0 && yearNumber % 100 !== 0 || yearNumber % 400 === 0; -} -var Scanner = class { - #whitespace = /[ \t]/; - #position = 0; - #source; - constructor(source) { - this.#source = source; - } - get position() { - return this.#position; - } - get source() { - return this.#source; - } - /** - * Get current character - * @param index - relative index from current position - */ char(index = 0) { - return this.#source[this.#position + index] ?? ""; - } - /** - * Get sliced string - * @param start - start position relative from current position - * @param end - end position relative from current position - */ slice(start, end) { - return this.#source.slice(this.#position + start, this.#position + end); - } - /** - * Move position to next - */ next(count = 1) { - this.#position += count; - } - skipWhitespaces() { - while (this.#whitespace.test(this.char()) && !this.eof()) this.next(); - if (!this.isCurrentCharEOL() && /\s/.test(this.char())) { - const escaped = "\\u" + this.char().charCodeAt(0).toString(16); - const position = this.#position; - throw new SyntaxError(`Cannot parse the TOML: It contains invalid whitespace at position '${position}': \`${escaped}\``); - } - } - nextUntilChar(options = { skipComments: true }) { - while (!this.eof()) { - const char = this.char(); - if (this.#whitespace.test(char) || this.isCurrentCharEOL()) this.next(); - else if (options.skipComments && this.char() === "#") while (!this.isCurrentCharEOL() && !this.eof()) this.next(); - else break; - } - } - /** - * Position reached EOF or not - */ eof() { - return this.#position >= this.#source.length; - } - isCurrentCharEOL() { - return this.char() === "\n" || this.startsWith("\r\n"); - } - startsWith(searchString) { - return this.#source.startsWith(searchString, this.#position); - } - match(regExp) { - if (!regExp.sticky) throw new Error(`RegExp ${regExp} does not have a sticky 'y' flag`); - regExp.lastIndex = this.#position; - return this.#source.match(regExp); - } -}; -function success(body) { - return { - ok: true, - body - }; -} -function failure() { - return { ok: false }; -} -/** -* Creates a nested object from the keys and values. -* -* e.g. `unflat(["a", "b", "c"], 1)` returns `{ a: { b: { c: 1 } } }` -*/ function unflat(keys, values = { __proto__: null }) { - return keys.reduceRight((acc, key) => ({ [key]: acc }), values); -} -function isObject(value$1) { - return typeof value$1 === "object" && value$1 !== null; -} -function getTargetValue(target, keys) { - const key = keys[0]; - if (!key) throw new Error("Cannot parse the TOML: key length is not a positive number"); - return target[key]; -} -function deepAssignTable(target, table$1) { - const { keys, type, value: value$1 } = table$1; - const currentValue = getTargetValue(target, keys); - if (currentValue === void 0) return Object.assign(target, unflat(keys, value$1)); - if (Array.isArray(currentValue)) { - deepAssign(currentValue.at(-1), { - type, - keys: keys.slice(1), - value: value$1 - }); - return target; - } - if (isObject(currentValue)) { - deepAssign(currentValue, { - type, - keys: keys.slice(1), - value: value$1 - }); - return target; - } - throw new Error("Unexpected assign"); -} -function deepAssignTableArray(target, table$1) { - const { type, keys, value: value$1 } = table$1; - const currentValue = getTargetValue(target, keys); - if (currentValue === void 0) return Object.assign(target, unflat(keys, [value$1])); - if (Array.isArray(currentValue)) { - if (table$1.keys.length === 1) currentValue.push(value$1); - else deepAssign(currentValue.at(-1), { - type: table$1.type, - keys: table$1.keys.slice(1), - value: table$1.value - }); - return target; - } - if (isObject(currentValue)) { - deepAssign(currentValue, { - type, - keys: keys.slice(1), - value: value$1 - }); - return target; - } - throw new Error("Unexpected assign"); -} -function deepAssign(target, body) { - switch (body.type) { - case "Block": return deepMerge(target, body.value); - case "Table": return deepAssignTable(target, body); - case "TableArray": return deepAssignTableArray(target, body); - } -} -function or(parsers) { - return (scanner) => { - for (const parse$3 of parsers) { - const result = parse$3(scanner); - if (result.ok) return result; - } - return failure(); - }; -} -/** Join the parse results of the given parser into an array. -* -* If the parser fails at the first attempt, it will return an empty array. -*/ function join$1(parser, separator) { - const Separator = character(separator); - return (scanner) => { - const out = []; - const first = parser(scanner); - if (!first.ok) return success(out); - out.push(first.body); - while (!scanner.eof()) { - if (!Separator(scanner).ok) break; - const result = parser(scanner); - if (!result.ok) throw new SyntaxError(`Invalid token after "${separator}"`); - out.push(result.body); - } - return success(out); - }; -} -/** Join the parse results of the given parser into an array. -* -* This requires the parser to succeed at least once. -*/ function join1(parser, separator) { - const Separator = character(separator); - return (scanner) => { - const first = parser(scanner); - if (!first.ok) return failure(); - const out = [first.body]; - while (!scanner.eof()) { - if (!Separator(scanner).ok) break; - const result = parser(scanner); - if (!result.ok) throw new SyntaxError(`Invalid token after "${separator}"`); - out.push(result.body); - } - return success(out); - }; -} -function kv(keyParser, separator, valueParser) { - const Separator = character(separator); - return (scanner) => { - const position = scanner.position; - const key = keyParser(scanner); - if (!key.ok) return failure(); - if (!Separator(scanner).ok) throw new SyntaxError(`key/value pair doesn't have "${separator}"`); - const value$1 = valueParser(scanner); - if (!value$1.ok) { - const lineEndIndex = scanner.source.indexOf("\n", scanner.position); - const endPosition = lineEndIndex > 0 ? lineEndIndex : scanner.source.length; - const line = scanner.source.slice(position, endPosition); - throw new SyntaxError(`Cannot parse value on line '${line}'`); - } - return success(unflat(key.body, value$1.body)); - }; -} -function merge$1(parser) { - return (scanner) => { - const result = parser(scanner); - if (!result.ok) return failure(); - let body = { __proto__: null }; - for (const record of result.body) if (typeof record === "object" && record !== null) body = deepMerge(body, record); - return success(body); - }; -} -function repeat(parser) { - return (scanner) => { - const body = []; - while (!scanner.eof()) { - const result = parser(scanner); - if (!result.ok) break; - body.push(result.body); - scanner.nextUntilChar(); - } - if (body.length === 0) return failure(); - return success(body); - }; -} -function surround(left, parser, right) { - const Left = character(left); - const Right = character(right); - return (scanner) => { - if (!Left(scanner).ok) return failure(); - const result = parser(scanner); - if (!result.ok) throw new SyntaxError(`Invalid token after "${left}"`); - if (!Right(scanner).ok) throw new SyntaxError(`Not closed by "${right}" after started with "${left}"`); - return success(result.body); - }; -} -function character(str) { - return (scanner) => { - scanner.skipWhitespaces(); - if (!scanner.startsWith(str)) return failure(); - scanner.next(str.length); - scanner.skipWhitespaces(); - return success(void 0); - }; -} -const BARE_KEY_REGEXP = /[A-Za-z0-9_-]+/y; -function bareKey(scanner) { - var _scanner$match; - scanner.skipWhitespaces(); - const key = (_scanner$match = scanner.match(BARE_KEY_REGEXP)) === null || _scanner$match === void 0 ? void 0 : _scanner$match[0]; - if (!key) return failure(); - scanner.next(key.length); - return success(key); -} -function escapeSequence(scanner) { - if (scanner.char() !== "\\") return failure(); - scanner.next(); - switch (scanner.char()) { - case "b": - scanner.next(); - return success("\b"); - case "t": - scanner.next(); - return success(" "); - case "n": - scanner.next(); - return success("\n"); - case "f": - scanner.next(); - return success("\f"); - case "r": - scanner.next(); - return success("\r"); - case "u": - case "U": { - const codePointLen = scanner.char() === "u" ? 4 : 6; - const codePoint = parseInt("0x" + scanner.slice(1, 1 + codePointLen), 16); - const str = String.fromCodePoint(codePoint); - scanner.next(codePointLen + 1); - return success(str); - } - case "\"": - scanner.next(); - return success("\""); - case "\\": - scanner.next(); - return success("\\"); - default: throw new SyntaxError(`Invalid escape sequence: \\${scanner.char()}`); - } -} -function basicString(scanner) { - scanner.skipWhitespaces(); - if (scanner.char() !== "\"") return failure(); - scanner.next(); - const acc = []; - while (scanner.char() !== "\"" && !scanner.eof()) { - if (scanner.char() === "\n") throw new SyntaxError("Single-line string cannot contain EOL"); - const escapedChar = escapeSequence(scanner); - if (escapedChar.ok) acc.push(escapedChar.body); - else { - acc.push(scanner.char()); - scanner.next(); - } - } - if (scanner.eof()) throw new SyntaxError(`Single-line string is not closed:\n${acc.join("")}`); - scanner.next(); - return success(acc.join("")); -} -function literalString(scanner) { - scanner.skipWhitespaces(); - if (scanner.char() !== "'") return failure(); - scanner.next(); - const acc = []; - while (scanner.char() !== "'" && !scanner.eof()) { - if (scanner.char() === "\n") throw new SyntaxError("Single-line string cannot contain EOL"); - acc.push(scanner.char()); - scanner.next(); - } - if (scanner.eof()) throw new SyntaxError(`Single-line string is not closed:\n${acc.join("")}`); - scanner.next(); - return success(acc.join("")); -} -function multilineBasicString(scanner) { - scanner.skipWhitespaces(); - if (!scanner.startsWith("\"\"\"")) return failure(); - scanner.next(3); - if (scanner.char() === "\n") scanner.next(); - else if (scanner.startsWith("\r\n")) scanner.next(2); - const acc = []; - while (!scanner.startsWith("\"\"\"") && !scanner.eof()) { - if (scanner.startsWith("\\\n")) { - scanner.next(); - scanner.nextUntilChar({ skipComments: false }); - continue; - } else if (scanner.startsWith("\\\r\n")) { - scanner.next(); - scanner.nextUntilChar({ skipComments: false }); - continue; - } - const escapedChar = escapeSequence(scanner); - if (escapedChar.ok) acc.push(escapedChar.body); - else { - acc.push(scanner.char()); - scanner.next(); - } - } - if (scanner.eof()) throw new SyntaxError(`Multi-line string is not closed:\n${acc.join("")}`); - if (scanner.char(3) === "\"") { - acc.push("\""); - scanner.next(); - } - scanner.next(3); - return success(acc.join("")); -} -function multilineLiteralString(scanner) { - scanner.skipWhitespaces(); - if (!scanner.startsWith("'''")) return failure(); - scanner.next(3); - if (scanner.char() === "\n") scanner.next(); - else if (scanner.startsWith("\r\n")) scanner.next(2); - const acc = []; - while (!scanner.startsWith("'''") && !scanner.eof()) { - acc.push(scanner.char()); - scanner.next(); - } - if (scanner.eof()) throw new SyntaxError(`Multi-line string is not closed:\n${acc.join("")}`); - if (scanner.char(3) === "'") { - acc.push("'"); - scanner.next(); - } - scanner.next(3); - return success(acc.join("")); -} -const BOOLEAN_REGEXP = /(?:true|false)\b/y; -function boolean(scanner) { - scanner.skipWhitespaces(); - const match = scanner.match(BOOLEAN_REGEXP); - if (!match) return failure(); - const string = match[0]; - scanner.next(string.length); - return success(string === "true"); -} -const INFINITY_MAP = new Map([ - ["inf", Infinity], - ["+inf", Infinity], - ["-inf", -Infinity] -]); -const INFINITY_REGEXP = /[+-]?inf\b/y; -function infinity(scanner) { - scanner.skipWhitespaces(); - const match = scanner.match(INFINITY_REGEXP); - if (!match) return failure(); - const string = match[0]; - scanner.next(string.length); - return success(INFINITY_MAP.get(string)); -} -const NAN_REGEXP = /[+-]?nan\b/y; -function nan(scanner) { - scanner.skipWhitespaces(); - const match = scanner.match(NAN_REGEXP); - if (!match) return failure(); - const string = match[0]; - scanner.next(string.length); - return success(NaN); -} -const dottedKey = join1(or([ - bareKey, - basicString, - literalString -]), "."); -const BINARY_REGEXP = /0b[01]+(?:_[01]+)*\b/y; -function binary(scanner) { - var _scanner$match2; - scanner.skipWhitespaces(); - const match = (_scanner$match2 = scanner.match(BINARY_REGEXP)) === null || _scanner$match2 === void 0 ? void 0 : _scanner$match2[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.slice(2).replaceAll("_", ""); - const number = parseInt(value$1, 2); - return isNaN(number) ? failure() : success(number); -} -const OCTAL_REGEXP = /0o[0-7]+(?:_[0-7]+)*\b/y; -function octal(scanner) { - var _scanner$match3; - scanner.skipWhitespaces(); - const match = (_scanner$match3 = scanner.match(OCTAL_REGEXP)) === null || _scanner$match3 === void 0 ? void 0 : _scanner$match3[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.slice(2).replaceAll("_", ""); - const number = parseInt(value$1, 8); - return isNaN(number) ? failure() : success(number); -} -const HEX_REGEXP = /0x[0-9a-f]+(?:_[0-9a-f]+)*\b/iy; -function hex(scanner) { - var _scanner$match4; - scanner.skipWhitespaces(); - const match = (_scanner$match4 = scanner.match(HEX_REGEXP)) === null || _scanner$match4 === void 0 ? void 0 : _scanner$match4[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.slice(2).replaceAll("_", ""); - const number = parseInt(value$1, 16); - return isNaN(number) ? failure() : success(number); -} -const INTEGER_REGEXP = /[+-]?(?:0|[1-9][0-9]*(?:_[0-9]+)*)\b/y; -function integer(scanner) { - var _scanner$match5; - scanner.skipWhitespaces(); - const match = (_scanner$match5 = scanner.match(INTEGER_REGEXP)) === null || _scanner$match5 === void 0 ? void 0 : _scanner$match5[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.replaceAll("_", ""); - return success(parseInt(value$1, 10)); -} -const FLOAT_REGEXP = /[+-]?(?:0|[1-9][0-9]*(?:_[0-9]+)*)(?:\.[0-9]+(?:_[0-9]+)*)?(?:e[+-]?[0-9]+(?:_[0-9]+)*)?\b/iy; -function float(scanner) { - var _scanner$match6; - scanner.skipWhitespaces(); - const match = (_scanner$match6 = scanner.match(FLOAT_REGEXP)) === null || _scanner$match6 === void 0 ? void 0 : _scanner$match6[0]; - if (!match) return failure(); - scanner.next(match.length); - const value$1 = match.replaceAll("_", ""); - const float$1 = parseFloat(value$1); - if (isNaN(float$1)) return failure(); - return success(float$1); -} -const DATE_TIME_REGEXP = /(?\d{4})-(?\d{2})-(?\d{2})(?:[ 0-9TZ.:+-]+)?\b/y; -function dateTime(scanner) { - scanner.skipWhitespaces(); - const match = scanner.match(DATE_TIME_REGEXP); - if (!match) return failure(); - const string = match[0]; - scanner.next(string.length); - const groups = match.groups; - if (groups.month == "02") { - const days = parseInt(groups.day); - if (days > 29) throw new SyntaxError(`Invalid date string "${match}"`); - const year = parseInt(groups.year); - if (days > 28 && !isLeap(year)) throw new SyntaxError(`Invalid date string "${match}"`); - } - const date = new Date(string.trim()); - if (isNaN(date.getTime())) throw new SyntaxError(`Invalid date string "${match}"`); - return success(date); -} -const LOCAL_TIME_REGEXP = /(\d{2}):(\d{2}):(\d{2})(?:\.[0-9]+)?\b/y; -function localTime(scanner) { - var _scanner$match7; - scanner.skipWhitespaces(); - const match = (_scanner$match7 = scanner.match(LOCAL_TIME_REGEXP)) === null || _scanner$match7 === void 0 ? void 0 : _scanner$match7[0]; - if (!match) return failure(); - scanner.next(match.length); - return success(match); -} -function arrayValue(scanner) { - scanner.skipWhitespaces(); - if (scanner.char() !== "[") return failure(); - scanner.next(); - const array = []; - while (!scanner.eof()) { - scanner.nextUntilChar(); - const result = value(scanner); - if (!result.ok) break; - array.push(result.body); - scanner.skipWhitespaces(); - if (scanner.char() !== ",") break; - scanner.next(); - } - scanner.nextUntilChar(); - if (scanner.char() !== "]") throw new SyntaxError("Array is not closed"); - scanner.next(); - return success(array); -} -function inlineTable(scanner) { - scanner.nextUntilChar(); - if (scanner.char(1) === "}") { - scanner.next(2); - return success({ __proto__: null }); - } - const pairs = surround("{", join$1(pair, ","), "}")(scanner); - if (!pairs.ok) return failure(); - let table$1 = { __proto__: null }; - for (const pair$1 of pairs.body) table$1 = deepMerge(table$1, pair$1); - return success(table$1); -} -const value = or([ - multilineBasicString, - multilineLiteralString, - basicString, - literalString, - boolean, - infinity, - nan, - dateTime, - localTime, - binary, - octal, - hex, - float, - integer, - arrayValue, - inlineTable -]); -const pair = kv(dottedKey, "=", value); -function block(scanner) { - scanner.nextUntilChar(); - const result = merge$1(repeat(pair))(scanner); - if (result.ok) return success({ - type: "Block", - value: result.body - }); - return failure(); -} -const tableHeader = surround("[", dottedKey, "]"); -function table(scanner) { - scanner.nextUntilChar(); - const header = tableHeader(scanner); - if (!header.ok) return failure(); - scanner.nextUntilChar(); - const b = block(scanner); - return success({ - type: "Table", - keys: header.body, - value: b.ok ? b.body.value : { __proto__: null } - }); -} -const tableArrayHeader = surround("[[", dottedKey, "]]"); -function tableArray(scanner) { - scanner.nextUntilChar(); - const header = tableArrayHeader(scanner); - if (!header.ok) return failure(); - scanner.nextUntilChar(); - const b = block(scanner); - return success({ - type: "TableArray", - keys: header.body, - value: b.ok ? b.body.value : { __proto__: null } - }); -} -function toml(scanner) { - const blocks = repeat(or([ - block, - tableArray, - table - ]))(scanner); - if (!blocks.ok) return success({ __proto__: null }); - return success(blocks.body.reduce(deepAssign, { __proto__: null })); -} -function createParseErrorMessage(scanner, message) { - var _lines$at; - const lines = scanner.source.slice(0, scanner.position).split("\n"); - return `Parse error on line ${lines.length}, column ${((_lines$at = lines.at(-1)) === null || _lines$at === void 0 ? void 0 : _lines$at.length) ?? 0}: ${message}`; -} -function parserFactory(parser) { - return (tomlString) => { - const scanner = new Scanner(tomlString); - try { - const result = parser(scanner); - if (result.ok && scanner.eof()) return result.body; - const message = `Unexpected character: "${scanner.char()}"`; - throw new SyntaxError(createParseErrorMessage(scanner, message)); - } catch (error) { - if (error instanceof Error) throw new SyntaxError(createParseErrorMessage(scanner, error.message)); - throw new SyntaxError(createParseErrorMessage(scanner, "Invalid error type caught")); - } - }; -} - -//#endregion -//#region ../node_modules/@std/toml/parse.js -/** -* Parses a {@link https://toml.io | TOML} string into an object. -* -* @example Usage -* ```ts -* import { parse } from "@std/toml/parse"; -* import { assertEquals } from "@std/assert"; -* -* const tomlString = `title = "TOML Example" -* [owner] -* name = "Alice" -* bio = "Alice is a programmer."`; -* -* const obj = parse(tomlString); -* assertEquals(obj, { title: "TOML Example", owner: { name: "Alice", bio: "Alice is a programmer." } }); -* ``` -* @param tomlString TOML string to be parsed. -* @returns The parsed JS object. -*/ function parse$2(tomlString) { - return parserFactory(toml)(tomlString); -} - -//#endregion -//#region ../node_modules/empathic/resolve.mjs -/** -* Resolve an absolute path from {@link root}, but only -* if {@link input} isn't already absolute. -* -* @param input The path to resolve. -* @param root The base path; default = process.cwd() -* @returns The resolved absolute path. -*/ -function absolute(input$1, root) { - return isAbsolute(input$1) ? input$1 : resolve(root || ".", input$1); -} - -//#endregion -//#region ../node_modules/empathic/walk.mjs -/** -* Get all parent directories of {@link base}. -* Stops after {@link Options['last']} is processed. -* -* @returns An array of absolute paths of all parent directories. -*/ -function up(base, options) { - let { last, cwd } = options || {}; - let tmp = absolute(base, cwd); - let root = absolute(last || "/", cwd); - let prev, arr = []; - while (prev !== root) { - arr.push(tmp); - tmp = dirname(prev = tmp); - if (tmp === prev) break; - } - return arr; -} - -//#endregion -//#region ../node_modules/empathic/find.mjs -/** -* Find a directory by name, walking parent directories until found. -* -* > [NOTE] -* > This function only returns a value for directory matches. -* > A file match with the same name will be ignored. -* -* @param name The directory name to find. -* @returns The absolute path to the file, if found. -*/ -function dir(name, options) { - let dir$1, tmp; - let start = options && options.cwd || ""; - for (dir$1 of up(start, options)) try { - tmp = join(dir$1, name); - if (statSync(tmp).isDirectory()) return tmp; - } catch {} -} - -//#endregion -//#region src/def/rename.ts -var BaseRenameCommand = class extends Command { - static paths = [["rename"]]; - static usage = Command.Usage({ description: "Rename the NAPI-RS project" }); - cwd = Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - npmDir = Option.String("--npm-dir", "npm", { description: "Path to the folder where the npm packages put" }); - $$name = Option.String("--name,-n", { description: "The new name of the project" }); - binaryName = Option.String("--binary-name,-b", { description: "The new binary name *.node files" }); - packageName = Option.String("--package-name", { description: "The new package name of the project" }); - manifestPath = Option.String("--manifest-path", "Cargo.toml", { description: "Path to `Cargo.toml`" }); - repository = Option.String("--repository", { description: "The new repository of the project" }); - description = Option.String("--description", { description: "The new description of the project" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir, - name: this.$$name, - binaryName: this.binaryName, - packageName: this.packageName, - manifestPath: this.manifestPath, - repository: this.repository, - description: this.description - }; - } -}; -function applyDefaultRenameOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - npmDir: "npm", - manifestPath: "Cargo.toml", - ...options - }; -} - -//#endregion -//#region src/api/rename.ts -async function renameProject(userOptions) { - const options = applyDefaultRenameOptions(userOptions); - const oldName = (await readConfig(options)).binaryName; - const packageJsonPath = resolve(options.cwd, options.packageJsonPath); - const cargoTomlPath = resolve(options.cwd, options.manifestPath); - const packageJsonContent = await readFileAsync(packageJsonPath, "utf8"); - const packageJsonData = JSON.parse(packageJsonContent); - merge(merge(packageJsonData, omitBy(pick(options, [ - "name", - "description", - "author", - "license" - ]), isNil)), { napi: omitBy({ - binaryName: options.binaryName, - packageName: options.packageName - }, isNil) }); - if (options.configPath) { - const configPath = resolve(options.cwd, options.configPath); - const configContent = await readFileAsync(configPath, "utf8"); - const configData = JSON.parse(configContent); - configData.binaryName = options.binaryName; - configData.packageName = options.packageName; - await writeFileAsync(configPath, JSON.stringify(configData, null, 2)); - } - await writeFileAsync(packageJsonPath, JSON.stringify(packageJsonData, null, 2)); - const cargoToml = parse$2(await readFileAsync(cargoTomlPath, "utf8")); - if (cargoToml.package && options.binaryName) { - const sanitizedName = options.binaryName.replace("@", "").replace("/", "_").replace(/-/g, "_").toLowerCase(); - cargoToml.package.name = sanitizedName; - } - await writeFileAsync(cargoTomlPath, stringify(cargoToml)); - if (oldName !== options.binaryName) { - const githubActionsPath = dir(".github", { cwd: options.cwd }); - if (githubActionsPath) { - const githubActionsCIYmlPath = join(githubActionsPath, "workflows", "CI.yml"); - if (existsSync(githubActionsCIYmlPath)) { - var _githubActionsData$en; - const githubActionsData = load(await readFileAsync(githubActionsCIYmlPath, "utf8")); - if ((_githubActionsData$en = githubActionsData.env) === null || _githubActionsData$en === void 0 ? void 0 : _githubActionsData$en.APP_NAME) { - githubActionsData.env.APP_NAME = options.binaryName; - await writeFileAsync(githubActionsCIYmlPath, dump(githubActionsData, { - lineWidth: -1, - noRefs: true, - sortKeys: false - })); - } - } - } - const oldWasiBrowserBindingPath = join(options.cwd, `${oldName}.wasi-browser.js`); - if (existsSync(oldWasiBrowserBindingPath)) await rename(oldWasiBrowserBindingPath, join(options.cwd, `${options.binaryName}.wasi-browser.js`)); - const oldWasiBindingPath = join(options.cwd, `${oldName}.wasi.cjs`); - if (existsSync(oldWasiBindingPath)) await rename(oldWasiBindingPath, join(options.cwd, `${options.binaryName}.wasi.cjs`)); - const gitAttributesPath = join(options.cwd, ".gitattributes"); - if (existsSync(gitAttributesPath)) await writeFileAsync(gitAttributesPath, (await readFileAsync(gitAttributesPath, "utf8")).split("\n").map((line) => { - return line.replace(`${oldName}.wasi-browser.js`, `${options.binaryName}.wasi-browser.js`).replace(`${oldName}.wasi.cjs`, `${options.binaryName}.wasi.cjs`); - }).join("\n")); - } -} - -//#endregion -//#region src/api/new.ts -const debug$5 = debugFactory("new"); -const TEMPLATE_REPOS = { - yarn: "https://github.com/napi-rs/package-template", - pnpm: "https://github.com/napi-rs/package-template-pnpm" -}; -async function checkGitCommand() { - try { - await new Promise((resolve$1) => { - const cp = exec("git --version"); - cp.on("error", () => { - resolve$1(false); - }); - cp.on("exit", (code) => { - if (code === 0) resolve$1(true); - else resolve$1(false); - }); - }); - return true; - } catch { - return false; - } -} -async function ensureCacheDir(packageManager) { - const cacheDir = path.join(homedir(), ".napi-rs", "template", packageManager); - await mkdirAsync(cacheDir, { recursive: true }); - return cacheDir; -} -async function downloadTemplate(packageManager, cacheDir) { - const repoUrl = TEMPLATE_REPOS[packageManager]; - const templatePath = path.join(cacheDir, "repo"); - if (existsSync(templatePath)) { - debug$5(`Template cache found at ${templatePath}, updating...`); - try { - await new Promise((resolve$1, reject) => { - const cp = exec("git fetch origin", { cwd: templatePath }); - cp.on("error", reject); - cp.on("exit", (code) => { - if (code === 0) resolve$1(); - else reject(/* @__PURE__ */ new Error(`Failed to fetch latest changes, git process exited with code ${code}`)); - }); - }); - execSync("git reset --hard origin/main", { - cwd: templatePath, - stdio: "ignore" - }); - debug$5("Template updated successfully"); - } catch (error) { - debug$5(`Failed to update template: ${error}`); - throw new Error(`Failed to update template from ${repoUrl}: ${error}`); - } - } else { - debug$5(`Cloning template from ${repoUrl}...`); - try { - execSync(`git clone ${repoUrl} repo`, { - cwd: cacheDir, - stdio: "inherit" - }); - debug$5("Template cloned successfully"); - } catch (error) { - throw new Error(`Failed to clone template from ${repoUrl}: ${error}`); - } - } -} -async function copyDirectory(src, dest, includeWasiBindings) { - await mkdirAsync(dest, { recursive: true }); - const entries = await promises.readdir(src, { withFileTypes: true }); - for (const entry of entries) { - const srcPath = path.join(src, entry.name); - const destPath = path.join(dest, entry.name); - if (entry.name === ".git") continue; - if (entry.isDirectory()) await copyDirectory(srcPath, destPath, includeWasiBindings); - else { - if (!includeWasiBindings && (entry.name.endsWith(".wasi-browser.js") || entry.name.endsWith(".wasi.cjs") || entry.name.endsWith("wasi-worker.browser.mjs ") || entry.name.endsWith("wasi-worker.mjs") || entry.name.endsWith("browser.js"))) continue; - await promises.copyFile(srcPath, destPath); - } - } -} -async function filterTargetsInPackageJson(filePath, enabledTargets) { - var _packageJson$napi; - const content = await promises.readFile(filePath, "utf-8"); - const packageJson = JSON.parse(content); - if ((_packageJson$napi = packageJson.napi) === null || _packageJson$napi === void 0 ? void 0 : _packageJson$napi.targets) packageJson.napi.targets = packageJson.napi.targets.filter((target) => enabledTargets.includes(target)); - await promises.writeFile(filePath, JSON.stringify(packageJson, null, 2) + "\n"); -} -async function filterTargetsInGithubActions(filePath, enabledTargets) { - var _yaml$jobs, _yaml$jobs5; - const yaml = load(await promises.readFile(filePath, "utf-8")); - const macOSAndWindowsTargets = new Set([ - "x86_64-pc-windows-msvc", - "x86_64-pc-windows-gnu", - "aarch64-pc-windows-msvc", - "x86_64-apple-darwin" - ]); - const linuxTargets = new Set([ - "x86_64-unknown-linux-gnu", - "x86_64-unknown-linux-musl", - "aarch64-unknown-linux-gnu", - "aarch64-unknown-linux-musl", - "armv7-unknown-linux-gnueabihf", - "armv7-unknown-linux-musleabihf", - "loongarch64-unknown-linux-gnu", - "riscv64gc-unknown-linux-gnu", - "powerpc64le-unknown-linux-gnu", - "s390x-unknown-linux-gnu", - "aarch64-linux-android", - "armv7-linux-androideabi" - ]); - const hasLinuxTargets = enabledTargets.some((target) => linuxTargets.has(target)); - if (yaml === null || yaml === void 0 || (_yaml$jobs = yaml.jobs) === null || _yaml$jobs === void 0 || (_yaml$jobs = _yaml$jobs.build) === null || _yaml$jobs === void 0 || (_yaml$jobs = _yaml$jobs.strategy) === null || _yaml$jobs === void 0 || (_yaml$jobs = _yaml$jobs.matrix) === null || _yaml$jobs === void 0 ? void 0 : _yaml$jobs.settings) yaml.jobs.build.strategy.matrix.settings = yaml.jobs.build.strategy.matrix.settings.filter((setting) => { - if (setting.target) return enabledTargets.includes(setting.target); - return true; - }); - const jobsToRemove = []; - if (enabledTargets.every((target) => !macOSAndWindowsTargets.has(target))) jobsToRemove.push("test-macOS-windows-binding"); - else { - var _yaml$jobs2; - if (yaml === null || yaml === void 0 || (_yaml$jobs2 = yaml.jobs) === null || _yaml$jobs2 === void 0 || (_yaml$jobs2 = _yaml$jobs2["test-macOS-windows-binding"]) === null || _yaml$jobs2 === void 0 || (_yaml$jobs2 = _yaml$jobs2.strategy) === null || _yaml$jobs2 === void 0 || (_yaml$jobs2 = _yaml$jobs2.matrix) === null || _yaml$jobs2 === void 0 ? void 0 : _yaml$jobs2.settings) yaml.jobs["test-macOS-windows-binding"].strategy.matrix.settings = yaml.jobs["test-macOS-windows-binding"].strategy.matrix.settings.filter((setting) => { - if (setting.target) return enabledTargets.includes(setting.target); - return true; - }); - } - if (!hasLinuxTargets) { - var _yaml$jobs3; - if (yaml === null || yaml === void 0 || (_yaml$jobs3 = yaml.jobs) === null || _yaml$jobs3 === void 0 ? void 0 : _yaml$jobs3["test-linux-binding"]) jobsToRemove.push("test-linux-binding"); - } else { - var _yaml$jobs4; - if (yaml === null || yaml === void 0 || (_yaml$jobs4 = yaml.jobs) === null || _yaml$jobs4 === void 0 || (_yaml$jobs4 = _yaml$jobs4["test-linux-binding"]) === null || _yaml$jobs4 === void 0 || (_yaml$jobs4 = _yaml$jobs4.strategy) === null || _yaml$jobs4 === void 0 || (_yaml$jobs4 = _yaml$jobs4.matrix) === null || _yaml$jobs4 === void 0 ? void 0 : _yaml$jobs4.target) yaml.jobs["test-linux-binding"].strategy.matrix.target = yaml.jobs["test-linux-binding"].strategy.matrix.target.filter((target) => { - if (target) return enabledTargets.includes(target); - return true; - }); - } - if (!enabledTargets.includes("wasm32-wasip1-threads")) jobsToRemove.push("test-wasi"); - if (!enabledTargets.includes("x86_64-unknown-freebsd")) jobsToRemove.push("build-freebsd"); - for (const [jobName, jobConfig] of Object.entries(yaml.jobs || {})) if (jobName.startsWith("test-") && jobName !== "test-macOS-windows-binding" && jobName !== "test-linux-x64-gnu-binding") { - var _job$strategy; - const job = jobConfig; - if ((_job$strategy = job.strategy) === null || _job$strategy === void 0 || (_job$strategy = _job$strategy.matrix) === null || _job$strategy === void 0 || (_job$strategy = _job$strategy.settings) === null || _job$strategy === void 0 || (_job$strategy = _job$strategy[0]) === null || _job$strategy === void 0 ? void 0 : _job$strategy.target) { - const target = job.strategy.matrix.settings[0].target; - if (!enabledTargets.includes(target)) jobsToRemove.push(jobName); - } - } - for (const jobName of jobsToRemove) delete yaml.jobs[jobName]; - if (Array.isArray((_yaml$jobs5 = yaml.jobs) === null || _yaml$jobs5 === void 0 || (_yaml$jobs5 = _yaml$jobs5.publish) === null || _yaml$jobs5 === void 0 ? void 0 : _yaml$jobs5.needs)) yaml.jobs.publish.needs = yaml.jobs.publish.needs.filter((need) => !jobsToRemove.includes(need)); - const updatedYaml = dump(yaml, { - lineWidth: -1, - noRefs: true, - sortKeys: false - }); - await promises.writeFile(filePath, updatedYaml); -} -function processOptions(options) { - var _options$targets; - debug$5("Processing options..."); - if (!options.path) throw new Error("Please provide the path as the argument"); - options.path = path.resolve(process.cwd(), options.path); - debug$5(`Resolved target path to: ${options.path}`); - if (!options.name) { - options.name = path.parse(options.path).base; - debug$5(`No project name provided, fix it to dir name: ${options.name}`); - } - if (!((_options$targets = options.targets) === null || _options$targets === void 0 ? void 0 : _options$targets.length)) if (options.enableAllTargets) { - options.targets = AVAILABLE_TARGETS.concat(); - debug$5("Enable all targets"); - } else if (options.enableDefaultTargets) { - options.targets = DEFAULT_TARGETS.concat(); - debug$5("Enable default targets"); - } else throw new Error("At least one target must be enabled"); - if (options.targets.some((target) => target === "wasm32-wasi-preview1-threads")) { - if (execSync(`rustup target list`, { encoding: "utf8" }).includes("wasm32-wasip1-threads")) options.targets = options.targets.map((target) => target === "wasm32-wasi-preview1-threads" ? "wasm32-wasip1-threads" : target); - } - return applyDefaultNewOptions(options); -} -async function newProject(userOptions) { - debug$5("Will create napi-rs project with given options:"); - debug$5(userOptions); - const options = processOptions(userOptions); - debug$5("Targets to be enabled:"); - debug$5(options.targets); - if (!await checkGitCommand()) throw new Error("Git is not installed or not available in PATH. Please install Git to continue."); - const packageManager = options.packageManager; - await ensurePath(options.path, options.dryRun); - if (!options.dryRun) try { - const cacheDir = await ensureCacheDir(packageManager); - await downloadTemplate(packageManager, cacheDir); - await copyDirectory(path.join(cacheDir, "repo"), options.path, options.targets.includes("wasm32-wasip1-threads")); - await renameProject({ - cwd: options.path, - name: options.name, - binaryName: getBinaryName(options.name) - }); - const packageJsonPath = path.join(options.path, "package.json"); - if (existsSync(packageJsonPath)) await filterTargetsInPackageJson(packageJsonPath, options.targets); - const ciPath = path.join(options.path, ".github", "workflows", "CI.yml"); - if (existsSync(ciPath) && options.enableGithubActions) await filterTargetsInGithubActions(ciPath, options.targets); - else if (!options.enableGithubActions && existsSync(path.join(options.path, ".github"))) await promises.rm(path.join(options.path, ".github"), { - recursive: true, - force: true - }); - const pkgJsonContent = await promises.readFile(packageJsonPath, "utf-8"); - const pkgJson = JSON.parse(pkgJsonContent); - if (!pkgJson.engines) pkgJson.engines = {}; - pkgJson.engines.node = napiEngineRequirement(options.minNodeApiVersion); - if (options.license && pkgJson.license !== options.license) pkgJson.license = options.license; - if (options.testFramework !== "ava") debug$5(`Test framework ${options.testFramework} requested but not yet implemented`); - await promises.writeFile(packageJsonPath, JSON.stringify(pkgJson, null, 2) + "\n"); - } catch (error) { - throw new Error(`Failed to create project: ${error}`); - } - debug$5(`Project created at: ${options.path}`); -} -async function ensurePath(path$1, dryRun = false) { - const stat$1 = await statAsync(path$1, {}).catch(() => void 0); - if (stat$1) { - if (stat$1.isFile()) throw new Error(`Path ${path$1} for creating new napi-rs project already exists and it's not a directory.`); - else if (stat$1.isDirectory()) { - if ((await readdirAsync(path$1)).length) throw new Error(`Path ${path$1} for creating new napi-rs project already exists and it's not empty.`); - } - } - if (!dryRun) try { - debug$5(`Try to create target directory: ${path$1}`); - if (!dryRun) await mkdirAsync(path$1, { recursive: true }); - } catch (e) { - throw new Error(`Failed to create target directory: ${path$1}`, { cause: e }); - } -} -function getBinaryName(name) { - return name.split("/").pop(); -} - -//#endregion -//#region src/def/pre-publish.ts -var BasePrePublishCommand = class extends Command { - static paths = [["pre-publish"], ["prepublish"]]; - static usage = Command.Usage({ description: "Update package.json and copy addons into per platform packages" }); - cwd = Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - npmDir = Option.String("--npm-dir,-p", "npm", { description: "Path to the folder where the npm packages put" }); - tagStyle = Option.String("--tag-style,--tagstyle,-t", "lerna", { description: "git tag style, `npm` or `lerna`" }); - ghRelease = Option.Boolean("--gh-release", true, { description: "Whether create GitHub release" }); - ghReleaseName = Option.String("--gh-release-name", { description: "GitHub release name" }); - ghReleaseId = Option.String("--gh-release-id", { description: "Existing GitHub release id" }); - skipOptionalPublish = Option.Boolean("--skip-optional-publish", false, { description: "Whether skip optionalDependencies packages publish" }); - dryRun = Option.Boolean("--dry-run", false, { description: "Dry run without touching file system" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir, - tagStyle: this.tagStyle, - ghRelease: this.ghRelease, - ghReleaseName: this.ghReleaseName, - ghReleaseId: this.ghReleaseId, - skipOptionalPublish: this.skipOptionalPublish, - dryRun: this.dryRun - }; - } -}; -function applyDefaultPrePublishOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - npmDir: "npm", - tagStyle: "lerna", - ghRelease: true, - skipOptionalPublish: false, - dryRun: false, - ...options - }; -} - -//#endregion -//#region src/def/version.ts -var BaseVersionCommand = class extends Command { - static paths = [["version"]]; - static usage = Command.Usage({ description: "Update version in created npm packages" }); - cwd = Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - npmDir = Option.String("--npm-dir", "npm", { description: "Path to the folder where the npm packages put" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir - }; - } -}; -function applyDefaultVersionOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - npmDir: "npm", - ...options - }; -} - -//#endregion -//#region src/api/version.ts -const debug$4 = debugFactory("version"); -async function version(userOptions) { - const options = applyDefaultVersionOptions(userOptions); - const config = await readNapiConfig(resolve(options.cwd, options.packageJsonPath), options.configPath ? resolve(options.cwd, options.configPath) : void 0); - for (const target of config.targets) { - const pkgDir = resolve(options.cwd, options.npmDir, target.platformArchABI); - debug$4(`Update version to %i in [%i]`, config.packageJson.version, pkgDir); - await updatePackageJson(join(pkgDir, "package.json"), { version: config.packageJson.version }); - } -} - -//#endregion -//#region src/api/pre-publish.ts -const debug$3 = debugFactory("pre-publish"); -async function prePublish(userOptions) { - debug$3("Receive pre-publish options:"); - debug$3(" %O", userOptions); - const options = applyDefaultPrePublishOptions(userOptions); - const packageJsonPath = resolve(options.cwd, options.packageJsonPath); - const { packageJson, targets, packageName, binaryName, npmClient } = await readNapiConfig(packageJsonPath, options.configPath ? resolve(options.cwd, options.configPath) : void 0); - async function createGhRelease(packageName$1, version$2) { - if (!options.ghRelease) return { - owner: null, - repo: null, - pkgInfo: { - name: null, - version: null, - tag: null - } - }; - const { repo: repo$1, owner: owner$1, pkgInfo: pkgInfo$1, octokit: octokit$1 } = getRepoInfo(packageName$1, version$2); - if (!repo$1 || !owner$1) return { - owner: null, - repo: null, - pkgInfo: { - name: null, - version: null, - tag: null - } - }; - if (!options.dryRun) try { - await octokit$1.repos.createRelease({ - owner: owner$1, - repo: repo$1, - tag_name: pkgInfo$1.tag, - name: options.ghReleaseName, - prerelease: version$2.includes("alpha") || version$2.includes("beta") || version$2.includes("rc") - }); - } catch (e) { - debug$3(`Params: ${JSON.stringify({ - owner: owner$1, - repo: repo$1, - tag_name: pkgInfo$1.tag - }, null, 2)}`); - console.error(e); - } - return { - owner: owner$1, - repo: repo$1, - pkgInfo: pkgInfo$1, - octokit: octokit$1 - }; - } - function getRepoInfo(packageName$1, version$2) { - const headCommit = execSync("git log -1 --pretty=%B", { encoding: "utf-8" }).trim(); - const { GITHUB_REPOSITORY } = process.env; - if (!GITHUB_REPOSITORY) return { - owner: null, - repo: null, - pkgInfo: { - name: null, - version: null, - tag: null - } - }; - debug$3(`Github repository: ${GITHUB_REPOSITORY}`); - const [owner$1, repo$1] = GITHUB_REPOSITORY.split("/"); - const octokit$1 = new Octokit({ auth: process.env.GITHUB_TOKEN }); - let pkgInfo$1; - if (options.tagStyle === "lerna") { - pkgInfo$1 = headCommit.split("\n").map((line) => line.trim()).filter((line, index) => line.length && index).map((line) => line.substring(2)).map(parseTag).find((pkgInfo$2) => pkgInfo$2.name === packageName$1); - if (!pkgInfo$1) throw new TypeError(`No release commit found with ${packageName$1}, original commit info: ${headCommit}`); - } else pkgInfo$1 = { - tag: `v${version$2}`, - version: version$2, - name: packageName$1 - }; - return { - owner: owner$1, - repo: repo$1, - pkgInfo: pkgInfo$1, - octokit: octokit$1 - }; - } - if (!options.dryRun) { - await version(userOptions); - await updatePackageJson(packageJsonPath, { optionalDependencies: targets.reduce((deps, target) => { - deps[`${packageName}-${target.platformArchABI}`] = packageJson.version; - return deps; - }, {}) }); - } - const { owner, repo, pkgInfo, octokit } = options.ghReleaseId ? getRepoInfo(packageName, packageJson.version) : await createGhRelease(packageName, packageJson.version); - for (const target of targets) { - const pkgDir = resolve(options.cwd, options.npmDir, `${target.platformArchABI}`); - const ext = target.platform === "wasi" || target.platform === "wasm" ? "wasm" : "node"; - const filename = `${binaryName}.${target.platformArchABI}.${ext}`; - const dstPath = join(pkgDir, filename); - if (!options.dryRun) { - if (!existsSync(dstPath)) { - debug$3.warn(`%s doesn't exist`, dstPath); - continue; - } - if (!options.skipOptionalPublish) try { - const output = execSync(`${npmClient} publish`, { - cwd: pkgDir, - env: process.env, - stdio: "pipe" - }); - process.stdout.write(output); - } catch (e) { - if (e instanceof Error && e.message.includes("You cannot publish over the previously published versions")) { - console.info(e.message); - debug$3.warn(`${pkgDir} has been published, skipping`); - } else throw e; - } - if (options.ghRelease && repo && owner) { - debug$3.info(`Creating GitHub release ${pkgInfo.tag}`); - try { - const releaseId = options.ghReleaseId ? Number(options.ghReleaseId) : (await octokit.repos.getReleaseByTag({ - repo, - owner, - tag: pkgInfo.tag - })).data.id; - const dstFileStats = statSync(dstPath); - const assetInfo = await octokit.repos.uploadReleaseAsset({ - owner, - repo, - name: filename, - release_id: releaseId, - mediaType: { format: "raw" }, - headers: { - "content-length": dstFileStats.size, - "content-type": "application/octet-stream" - }, - data: await readFileAsync(dstPath) - }); - debug$3.info(`GitHub release created`); - debug$3.info(`Download URL: %s`, assetInfo.data.browser_download_url); - } catch (e) { - debug$3.error(`Param: ${JSON.stringify({ - owner, - repo, - tag: pkgInfo.tag, - filename: dstPath - }, null, 2)}`); - debug$3.error(e); - } - } - } - } -} -function parseTag(tag) { - const segments = tag.split("@"); - const version$2 = segments.pop(); - return { - name: segments.join("@"), - version: version$2, - tag - }; -} - -//#endregion -//#region src/def/universalize.ts -var BaseUniversalizeCommand = class extends Command { - static paths = [["universalize"]]; - static usage = Command.Usage({ description: "Combile built binaries into one universal binary" }); - cwd = Option.String("--cwd", process.cwd(), { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", "package.json", { description: "Path to `package.json`" }); - outputDir = Option.String("--output-dir,-o", "./", { description: "Path to the folder where all built `.node` files put, same as `--output-dir` of build command" }); - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - outputDir: this.outputDir - }; - } -}; -function applyDefaultUniversalizeOptions(options) { - return { - cwd: process.cwd(), - packageJsonPath: "package.json", - outputDir: "./", - ...options - }; -} - -//#endregion -//#region src/api/universalize.ts -const debug$2 = debugFactory("universalize"); -const universalizers = { darwin: (inputs, output) => { - spawnSync("lipo", [ - "-create", - "-output", - output, - ...inputs - ], { stdio: "inherit" }); -} }; -async function universalizeBinaries(userOptions) { - var _UniArchsByPlatform$p, _universalizers$proce; - const options = applyDefaultUniversalizeOptions(userOptions); - const config = await readNapiConfig(join(options.cwd, options.packageJsonPath), options.configPath ? resolve(options.cwd, options.configPath) : void 0); - if (!config.targets.find((t) => t.platform === process.platform && t.arch === "universal")) throw new Error(`'universal' arch for platform '${process.platform}' not found in config!`); - const srcFiles = (_UniArchsByPlatform$p = UniArchsByPlatform[process.platform]) === null || _UniArchsByPlatform$p === void 0 ? void 0 : _UniArchsByPlatform$p.map((arch) => resolve(options.cwd, options.outputDir, `${config.binaryName}.${process.platform}-${arch}.node`)); - if (!srcFiles || !universalizers[process.platform]) throw new Error(`'universal' arch for platform '${process.platform}' not supported.`); - debug$2(`Looking up source binaries to combine: `); - debug$2(" %O", srcFiles); - const srcFileLookup = await Promise.all(srcFiles.map((f) => fileExists(f))); - const notFoundFiles = srcFiles.filter((_, i) => !srcFileLookup[i]); - if (notFoundFiles.length) throw new Error(`Some binary files were not found: ${JSON.stringify(notFoundFiles)}`); - const output = resolve(options.cwd, options.outputDir, `${config.binaryName}.${process.platform}-universal.node`); - (_universalizers$proce = universalizers[process.platform]) === null || _universalizers$proce === void 0 || _universalizers$proce.call(universalizers, srcFiles, output); - debug$2(`Produced universal binary: ${output}`); -} - -//#endregion -//#region src/commands/artifacts.ts -var ArtifactsCommand = class extends BaseArtifactsCommand { - static usage = Command.Usage({ - description: "Copy artifacts from Github Actions into specified dir", - examples: [["$0 artifacts --output-dir ./artifacts --dist ./npm", `Copy [binaryName].[platform].node under current dir(.) into packages under npm dir. -e.g: index.linux-x64-gnu.node --> ./npm/linux-x64-gnu/index.linux-x64-gnu.node`]] - }); - static paths = [["artifacts"]]; - async execute() { - await collectArtifacts(this.getOptions()); - } -}; - -//#endregion -//#region src/def/build.ts -var BaseBuildCommand = class extends Command { - static paths = [["build"]]; - static usage = Command.Usage({ description: "Build the NAPI-RS project" }); - target = Option.String("--target,-t", { description: "Build for the target triple, bypassed to `cargo build --target`" }); - cwd = Option.String("--cwd", { description: "The working directory of where napi command will be executed in, all other paths options are relative to this path" }); - manifestPath = Option.String("--manifest-path", { description: "Path to `Cargo.toml`" }); - configPath = Option.String("--config-path,-c", { description: "Path to `napi` config json file" }); - packageJsonPath = Option.String("--package-json-path", { description: "Path to `package.json`" }); - targetDir = Option.String("--target-dir", { description: "Directory for all crate generated artifacts, see `cargo build --target-dir`" }); - outputDir = Option.String("--output-dir,-o", { description: "Path to where all the built files would be put. Default to the crate folder" }); - platform = Option.Boolean("--platform", { description: "Add platform triple to the generated nodejs binding file, eg: `[name].linux-x64-gnu.node`" }); - jsPackageName = Option.String("--js-package-name", { description: "Package name in generated js binding file. Only works with `--platform` flag" }); - constEnum = Option.Boolean("--const-enum", { description: "Whether generate const enum for typescript bindings" }); - jsBinding = Option.String("--js", { description: "Path and filename of generated JS binding file. Only works with `--platform` flag. Relative to `--output-dir`." }); - noJsBinding = Option.Boolean("--no-js", { description: "Whether to disable the generation JS binding file. Only works with `--platform` flag." }); - dts = Option.String("--dts", { description: "Path and filename of generated type def file. Relative to `--output-dir`" }); - dtsHeader = Option.String("--dts-header", { description: "Custom file header for generated type def file. Only works when `typedef` feature enabled." }); - noDtsHeader = Option.Boolean("--no-dts-header", { description: "Whether to disable the default file header for generated type def file. Only works when `typedef` feature enabled." }); - dtsCache = Option.Boolean("--dts-cache", true, { description: "Whether to enable the dts cache, default to true" }); - esm = Option.Boolean("--esm", { description: "Whether to emit an ESM JS binding file instead of CJS format. Only works with `--platform` flag." }); - strip = Option.Boolean("--strip,-s", { description: "Whether strip the library to achieve the minimum file size" }); - release = Option.Boolean("--release,-r", { description: "Build in release mode" }); - verbose = Option.Boolean("--verbose,-v", { description: "Verbosely log build command trace" }); - bin = Option.String("--bin", { description: "Build only the specified binary" }); - package = Option.String("--package,-p", { description: "Build the specified library or the one at cwd" }); - profile = Option.String("--profile", { description: "Build artifacts with the specified profile" }); - crossCompile = Option.Boolean("--cross-compile,-x", { description: "[experimental] cross-compile for the specified target with `cargo-xwin` on windows and `cargo-zigbuild` on other platform" }); - useCross = Option.Boolean("--use-cross", { description: "[experimental] use [cross](https://github.com/cross-rs/cross) instead of `cargo`" }); - useNapiCross = Option.Boolean("--use-napi-cross", { description: "[experimental] use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets." }); - watch = Option.Boolean("--watch,-w", { description: "watch the crate changes and build continuously with `cargo-watch` crates" }); - features = Option.Array("--features,-F", { description: "Space-separated list of features to activate" }); - allFeatures = Option.Boolean("--all-features", { description: "Activate all available features" }); - noDefaultFeatures = Option.Boolean("--no-default-features", { description: "Do not activate the `default` feature" }); - getOptions() { - return { - target: this.target, - cwd: this.cwd, - manifestPath: this.manifestPath, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - targetDir: this.targetDir, - outputDir: this.outputDir, - platform: this.platform, - jsPackageName: this.jsPackageName, - constEnum: this.constEnum, - jsBinding: this.jsBinding, - noJsBinding: this.noJsBinding, - dts: this.dts, - dtsHeader: this.dtsHeader, - noDtsHeader: this.noDtsHeader, - dtsCache: this.dtsCache, - esm: this.esm, - strip: this.strip, - release: this.release, - verbose: this.verbose, - bin: this.bin, - package: this.package, - profile: this.profile, - crossCompile: this.crossCompile, - useCross: this.useCross, - useNapiCross: this.useNapiCross, - watch: this.watch, - features: this.features, - allFeatures: this.allFeatures, - noDefaultFeatures: this.noDefaultFeatures - }; - } -}; - -//#endregion -//#region src/commands/build.ts -const debug$1 = debugFactory("build"); -var BuildCommand = class extends BaseBuildCommand { - pipe = Option.String("--pipe", { description: "Pipe all outputs file to given command. e.g. `napi build --pipe \"npx prettier --write\"`" }); - cargoOptions = Option.Rest(); - async execute() { - const { task } = await buildProject({ - ...this.getOptions(), - cargoOptions: this.cargoOptions - }); - const outputs = await task; - if (this.pipe) for (const output of outputs) { - debug$1("Piping output file to command: %s", this.pipe); - try { - execSync(`${this.pipe} ${output.path}`, { - stdio: "inherit", - cwd: this.cwd - }); - } catch (e) { - debug$1.error(`Failed to pipe output file ${output.path} to command`); - debug$1.error(e); - } - } - } -}; - -//#endregion -//#region src/commands/create-npm-dirs.ts -var CreateNpmDirsCommand = class extends BaseCreateNpmDirsCommand { - async execute() { - await createNpmDirs(this.getOptions()); - } -}; - -//#endregion -//#region src/commands/help.ts -/** -* A command that prints the usage of all commands. -* -* Paths: `-h`, `--help` -*/ -var HelpCommand = class extends Command { - static paths = [[`-h`], [`--help`]]; - async execute() { - await this.context.stdout.write(this.cli.usage()); - } -}; - -//#endregion -//#region src/commands/new.ts -const debug = debugFactory("new"); -var NewCommand = class extends BaseNewCommand { - interactive = Option.Boolean("--interactive,-i", true, { description: "Ask project basic information interactively without just using the default." }); - async execute() { - try { - await newProject(await this.fetchOptions()); - return 0; - } catch (e) { - debug("Failed to create new project"); - debug.error(e); - return 1; - } - } - async fetchOptions() { - const cmdOptions = super.getOptions(); - if (this.interactive) { - const targetPath = cmdOptions.path ? cmdOptions.path : await inquirerProjectPath(); - cmdOptions.path = targetPath; - return { - ...cmdOptions, - name: await this.fetchName(path.parse(targetPath).base), - minNodeApiVersion: await this.fetchNapiVersion(), - targets: await this.fetchTargets(), - license: await this.fetchLicense(), - enableTypeDef: await this.fetchTypeDef(), - enableGithubActions: await this.fetchGithubActions() - }; - } - return cmdOptions; - } - async fetchName(defaultName) { - return this.$$name ?? input({ - message: "Package name (the name field in your package.json file)", - default: defaultName - }); - } - async fetchLicense() { - return input({ - message: "License for open-sourced project", - default: this.license - }); - } - async fetchNapiVersion() { - return select({ - message: "Minimum node-api version (with node version requirement)", - loop: false, - pageSize: 10, - choices: Array.from({ length: 8 }, (_, i) => ({ - name: `napi${i + 1} (${napiEngineRequirement(i + 1)})`, - value: i + 1 - })), - default: this.minNodeApiVersion - 1 - }); - } - async fetchTargets() { - if (this.enableAllTargets) return AVAILABLE_TARGETS.concat(); - return await checkbox({ - loop: false, - message: "Choose target(s) your crate will be compiled to", - choices: AVAILABLE_TARGETS.map((target) => ({ - name: target, - value: target, - checked: DEFAULT_TARGETS.includes(target) - })) - }); - } - async fetchTypeDef() { - return await confirm({ - message: "Enable type definition auto-generation", - default: this.enableTypeDef - }); - } - async fetchGithubActions() { - return await confirm({ - message: "Enable Github Actions CI", - default: this.enableGithubActions - }); - } -}; -async function inquirerProjectPath() { - return input({ message: "Target path to create the project, relative to cwd." }).then((path$1) => { - if (!path$1) return inquirerProjectPath(); - return path$1; - }); -} - -//#endregion -//#region src/commands/pre-publish.ts -var PrePublishCommand = class extends BasePrePublishCommand { - async execute() { - await prePublish(this.getOptions()); - } -}; - -//#endregion -//#region src/commands/rename.ts -var RenameCommand = class extends BaseRenameCommand { - async execute() { - const options = this.getOptions(); - if (!options.name) options.name = await input({ - message: `Enter the new package name in the package.json`, - required: true - }); - if (!options.binaryName) options.binaryName = await input({ - message: `Enter the new binary name`, - required: true - }); - await renameProject(options); - } -}; - -//#endregion -//#region src/commands/universalize.ts -var UniversalizeCommand = class extends BaseUniversalizeCommand { - async execute() { - await universalizeBinaries(this.getOptions()); - } -}; - -//#endregion -//#region src/commands/version.ts -var VersionCommand = class extends BaseVersionCommand { - async execute() { - await version(this.getOptions()); - } -}; - -//#endregion -//#region src/index.ts -const cli = new Cli({ - binaryName: "napi", - binaryVersion: CLI_VERSION -}); -cli.register(NewCommand); -cli.register(BuildCommand); -cli.register(CreateNpmDirsCommand); -cli.register(ArtifactsCommand); -cli.register(UniversalizeCommand); -cli.register(RenameCommand); -cli.register(PrePublishCommand); -cli.register(VersionCommand); -cli.register(HelpCommand); -/** -* -* @usage -* -* ```ts -* const cli = new NapiCli() -* -* cli.build({ -* cwd: '/path/to/your/project', -* }) -* ``` -*/ -var NapiCli = class { - artifacts = collectArtifacts; - new = newProject; - build = buildProject; - createNpmDirs = createNpmDirs; - prePublish = prePublish; - rename = renameProject; - universalize = universalizeBinaries; - version = version; -}; -function createBuildCommand(args) { - return cli.process(["build", ...args]); -} -function createArtifactsCommand(args) { - return cli.process(["artifacts", ...args]); -} -function createCreateNpmDirsCommand(args) { - return cli.process(["create-npm-dirs", ...args]); -} -function createPrePublishCommand(args) { - return cli.process(["pre-publish", ...args]); -} -function createRenameCommand(args) { - return cli.process(["rename", ...args]); -} -function createUniversalizeCommand(args) { - return cli.process(["universalize", ...args]); -} -function createVersionCommand(args) { - return cli.process(["version", ...args]); -} -function createNewCommand(args) { - return cli.process(["new", ...args]); -} - -//#endregion -export { NapiCli, cli, createArtifactsCommand, createBuildCommand, createCreateNpmDirsCommand, createNewCommand, createPrePublishCommand, createRenameCommand, createUniversalizeCommand, createVersionCommand, generateTypeDef, parseTriple, readNapiConfig, writeJsBinding }; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6WyJkZWJ1ZyIsInBhdGgiLCJwaWNrIiwicGtnSnNvbi52ZXJzaW9uIiwiVEFSR0VUX0xJTktFUjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiIsIkNwdVRvTm9kZUFyY2g6IFJlY29yZDxzdHJpbmcsIE5vZGVKU0FyY2g+IiwiU3lzVG9Ob2RlUGxhdGZvcm06IFJlY29yZDxzdHJpbmcsIFBsYXRmb3JtPiIsIlVuaUFyY2hzQnlQbGF0Zm9ybTogUGFydGlhbDxSZWNvcmQ8UGxhdGZvcm0sIE5vZGVKU0FyY2hbXT4+IiwiY3B1OiBzdHJpbmciLCJzeXM6IHN0cmluZyIsImFiaTogc3RyaW5nIHwgbnVsbCIsInJlcXVpcmVtZW50czogc3RyaW5nW10iLCJwYXRoIiwic2VwYXJhdGVkQ29uZmlnOiBVc2VyTmFwaUNvbmZpZyB8IHVuZGVmaW5lZCIsIm5hcGlDb25maWc6IE5hcGlDb25maWciLCJ0YXJnZXRzOiBzdHJpbmdbXSIsImV4cG9ydHM6IHN0cmluZ1tdIiwiZGVidWciLCJkaXIiLCJmcyIsImZzIiwiZGVidWciLCJvcHRpb25zOiBQYXJzZWRCdWlsZE9wdGlvbnMiLCJtZXRhZGF0YTogQ2FyZ29Xb3Jrc3BhY2VNZXRhZGF0YSIsImNyYXRlOiBDcmF0ZSIsImNvbmZpZzogTmFwaUNvbmZpZyIsImFsaWFzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IiwidmVyc2lvbiIsImRlc3QiLCJkaXIiLCJ2YWx1ZSIsImV4cG9ydHM6IHN0cmluZ1tdIiwiZGVidWciLCJta2RpckFzeW5jIiwiZGlyIiwicmF3TWtkaXJBc3luYyIsIndyaXRlRmlsZUFzeW5jIiwicmF3V3JpdGVGaWxlQXN5bmMiLCJzY29wZWRQYWNrYWdlSnNvbjogQ29tbW9uUGFja2FnZUpzb25GaWVsZHMiLCJwaWNrIiwicGFyc2UiLCIjcHJpbnRPYmplY3QiLCIjZm9ybWF0IiwiI2lzU2ltcGx5U2VyaWFsaXphYmxlIiwidmFsdWUiLCIjZGF0ZURlY2xhcmF0aW9uIiwiI3N0ckRlY2xhcmF0aW9uIiwiI251bWJlckRlY2xhcmF0aW9uIiwiI2Jvb2xEZWNsYXJhdGlvbiIsIiNnZXRUeXBlT2ZBcnJheSIsIiNhcnJheURlY2xhcmF0aW9uIiwiI2hlYWRlckdyb3VwIiwiI3ByaW50QXNJbmxpbmVWYWx1ZSIsIiNkZWNsYXJhdGlvbiIsIiNoZWFkZXIiLCIjYXJyYXlUeXBlQ2FjaGUiLCIjZG9HZXRUeXBlT2ZBcnJheSIsIiNpc1ByaW1pdGl2ZSIsIiNwcmludERhdGUiLCJ2YWx1ZSIsIiNzb3VyY2UiLCIjcG9zaXRpb24iLCIjd2hpdGVzcGFjZSIsInZhbHVlIiwidGFibGUiLCJwYXJzZSIsImpvaW4iLCJtZXJnZSIsImZsb2F0IiwicGFpciIsInBhcnNlIiwiaW5wdXQiLCJkaXIiLCJ3YWxrLnVwIiwicGFyc2VUb21sIiwic3RyaW5naWZ5VG9tbCIsImZpbmQuZGlyIiwieWFtbFBhcnNlIiwieWFtbFN0cmluZ2lmeSIsImRlYnVnIiwiZnMiLCJ5YW1sTG9hZCIsImpvYnNUb1JlbW92ZTogc3RyaW5nW10iLCJ5YW1sRHVtcCIsInN0YXQiLCJwYXRoIiwiZGVidWciLCJkZWJ1ZyIsInBhY2thZ2VOYW1lIiwidmVyc2lvbiIsInJlcG8iLCJvd25lciIsIm9jdG9raXQiLCJwa2dJbmZvIiwicGtnSW5mbzogUGFja2FnZUluZm8gfCB1bmRlZmluZWQiLCJkZWJ1ZyIsInVuaXZlcnNhbGl6ZXJzOiBQYXJ0aWFsPFxuICBSZWNvcmQ8Tm9kZUpTLlBsYXRmb3JtLCAoaW5wdXRzOiBzdHJpbmdbXSwgb3V0cHV0OiBzdHJpbmcpID0+IHZvaWQ+XG4+IiwiZGVidWciLCJ0YXJnZXRQYXRoOiBzdHJpbmciLCJwYXRoIl0sInNvdXJjZXMiOlsiLi4vc3JjL2RlZi9hcnRpZmFjdHMudHMiLCIuLi9zcmMvdXRpbHMvbG9nLnRzIiwiLi4vcGFja2FnZS5qc29uIiwiLi4vc3JjL3V0aWxzL21pc2MudHMiLCIuLi9zcmMvdXRpbHMvdGFyZ2V0LnRzIiwiLi4vc3JjL3V0aWxzL3ZlcnNpb24udHMiLCIuLi9zcmMvdXRpbHMvbWV0YWRhdGEudHMiLCIuLi9zcmMvdXRpbHMvY29uZmlnLnRzIiwiLi4vc3JjL3V0aWxzL2NhcmdvLnRzIiwiLi4vc3JjL3V0aWxzL3R5cGVnZW4udHMiLCIuLi9zcmMvdXRpbHMvcmVhZC1jb25maWcudHMiLCIuLi9zcmMvYXBpL2FydGlmYWN0cy50cyIsIi4uL3NyYy9hcGkvdGVtcGxhdGVzL2pzLWJpbmRpbmcudHMiLCIuLi9zcmMvYXBpL3RlbXBsYXRlcy9sb2FkLXdhc2ktdGVtcGxhdGUudHMiLCIuLi9zcmMvYXBpL3RlbXBsYXRlcy93YXNpLXdvcmtlci10ZW1wbGF0ZS50cyIsIi4uL3NyYy9hcGkvYnVpbGQudHMiLCIuLi9zcmMvZGVmL2NyZWF0ZS1ucG0tZGlycy50cyIsIi4uL3NyYy9hcGkvY3JlYXRlLW5wbS1kaXJzLnRzIiwiLi4vc3JjL2RlZi9uZXcudHMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHN0ZC90b21sL3N0cmluZ2lmeS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNyL3N0ZF9fY29sbGVjdGlvbnMvX3V0aWxzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc3Ivc3RkX19jb2xsZWN0aW9ucy9kZWVwX21lcmdlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BzdGQvdG9tbC9fcGFyc2VyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BzdGQvdG9tbC9wYXJzZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9lbXBhdGhpYy9yZXNvbHZlLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9lbXBhdGhpYy93YWxrLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9lbXBhdGhpYy9maW5kLm1qcyIsIi4uL3NyYy9kZWYvcmVuYW1lLnRzIiwiLi4vc3JjL2FwaS9yZW5hbWUudHMiLCIuLi9zcmMvYXBpL25ldy50cyIsIi4uL3NyYy9kZWYvcHJlLXB1Ymxpc2gudHMiLCIuLi9zcmMvZGVmL3ZlcnNpb24udHMiLCIuLi9zcmMvYXBpL3ZlcnNpb24udHMiLCIuLi9zcmMvYXBpL3ByZS1wdWJsaXNoLnRzIiwiLi4vc3JjL2RlZi91bml2ZXJzYWxpemUudHMiLCIuLi9zcmMvYXBpL3VuaXZlcnNhbGl6ZS50cyIsIi4uL3NyYy9jb21tYW5kcy9hcnRpZmFjdHMudHMiLCIuLi9zcmMvZGVmL2J1aWxkLnRzIiwiLi4vc3JjL2NvbW1hbmRzL2J1aWxkLnRzIiwiLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS1ucG0tZGlycy50cyIsIi4uL3NyYy9jb21tYW5kcy9oZWxwLnRzIiwiLi4vc3JjL2NvbW1hbmRzL25ldy50cyIsIi4uL3NyYy9jb21tYW5kcy9wcmUtcHVibGlzaC50cyIsIi4uL3NyYy9jb21tYW5kcy9yZW5hbWUudHMiLCIuLi9zcmMvY29tbWFuZHMvdW5pdmVyc2FsaXplLnRzIiwiLi4vc3JjL2NvbW1hbmRzL3ZlcnNpb24udHMiLCIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBjb2RlZ2VuL2luZGV4LnRzXG4vLyBEbyBub3QgZWRpdCB0aGlzIGZpbGUgbWFudWFsbHlcbmltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NsaXBhbmlvbidcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VBcnRpZmFjdHNDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gIHN0YXRpYyBwYXRocyA9IFtbJ2FydGlmYWN0cyddXVxuXG4gIHN0YXRpYyB1c2FnZSA9IENvbW1hbmQuVXNhZ2Uoe1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0NvcHkgYXJ0aWZhY3RzIGZyb20gR2l0aHViIEFjdGlvbnMgaW50byBucG0gcGFja2FnZXMgYW5kIHJlYWR5IHRvIHB1Ymxpc2gnLFxuICB9KVxuXG4gIGN3ZCA9IE9wdGlvbi5TdHJpbmcoJy0tY3dkJywgcHJvY2Vzcy5jd2QoKSwge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aCcsXG4gIH0pXG5cbiAgY29uZmlnUGF0aD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tY29uZmlnLXBhdGgsLWMnLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlJyxcbiAgfSlcblxuICBwYWNrYWdlSnNvblBhdGggPSBPcHRpb24uU3RyaW5nKCctLXBhY2thZ2UtanNvbi1wYXRoJywgJ3BhY2thZ2UuanNvbicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYHBhY2thZ2UuanNvbmAnLFxuICB9KVxuXG4gIG91dHB1dERpciA9IE9wdGlvbi5TdHJpbmcoJy0tb3V0cHV0LWRpciwtbywtZCcsICcuL2FydGlmYWN0cycsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgYWxsIGJ1aWx0IGAubm9kZWAgZmlsZXMgcHV0LCBzYW1lIGFzIGAtLW91dHB1dC1kaXJgIG9mIGJ1aWxkIGNvbW1hbmQnLFxuICB9KVxuXG4gIG5wbURpciA9IE9wdGlvbi5TdHJpbmcoJy0tbnBtLWRpcicsICducG0nLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIG5wbSBwYWNrYWdlcyBwdXQnLFxuICB9KVxuXG4gIGJ1aWxkT3V0cHV0RGlyPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1idWlsZC1vdXRwdXQtZGlyJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1BhdGggdG8gdGhlIGJ1aWxkIG91dHB1dCBkaXIsIG9ubHkgbmVlZGVkIHdoZW4gdGFyZ2V0cyBjb250YWlucyBgd2FzbTMyLXdhc2ktKmAnLFxuICB9KVxuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN3ZDogdGhpcy5jd2QsXG4gICAgICBjb25maWdQYXRoOiB0aGlzLmNvbmZpZ1BhdGgsXG4gICAgICBwYWNrYWdlSnNvblBhdGg6IHRoaXMucGFja2FnZUpzb25QYXRoLFxuICAgICAgb3V0cHV0RGlyOiB0aGlzLm91dHB1dERpcixcbiAgICAgIG5wbURpcjogdGhpcy5ucG1EaXIsXG4gICAgICBidWlsZE91dHB1dERpcjogdGhpcy5idWlsZE91dHB1dERpcixcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDb3B5IGFydGlmYWN0cyBmcm9tIEdpdGh1YiBBY3Rpb25zIGludG8gbnBtIHBhY2thZ2VzIGFuZCByZWFkeSB0byBwdWJsaXNoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGhcbiAgICpcbiAgICogQGRlZmF1bHQgcHJvY2Vzcy5jd2QoKVxuICAgKi9cbiAgY3dkPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAqL1xuICBjb25maWdQYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBwYWNrYWdlLmpzb25gXG4gICAqXG4gICAqIEBkZWZhdWx0ICdwYWNrYWdlLmpzb24nXG4gICAqL1xuICBwYWNrYWdlSnNvblBhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGZvbGRlciB3aGVyZSBhbGwgYnVpbHQgYC5ub2RlYCBmaWxlcyBwdXQsIHNhbWUgYXMgYC0tb3V0cHV0LWRpcmAgb2YgYnVpbGQgY29tbWFuZFxuICAgKlxuICAgKiBAZGVmYXVsdCAnLi9hcnRpZmFjdHMnXG4gICAqL1xuICBvdXRwdXREaXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dFxuICAgKlxuICAgKiBAZGVmYXVsdCAnbnBtJ1xuICAgKi9cbiAgbnBtRGlyPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBidWlsZCBvdXRwdXQgZGlyLCBvbmx5IG5lZWRlZCB3aGVuIHRhcmdldHMgY29udGFpbnMgYHdhc20zMi13YXNpLSpgXG4gICAqL1xuICBidWlsZE91dHB1dERpcj86IHN0cmluZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZWZhdWx0QXJ0aWZhY3RzT3B0aW9ucyhvcHRpb25zOiBBcnRpZmFjdHNPcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIHBhY2thZ2VKc29uUGF0aDogJ3BhY2thZ2UuanNvbicsXG4gICAgb3V0cHV0RGlyOiAnLi9hcnRpZmFjdHMnLFxuICAgIG5wbURpcjogJ25wbScsXG4gICAgLi4ub3B0aW9ucyxcbiAgfVxufVxuIiwiaW1wb3J0ICogYXMgY29sb3JzIGZyb20gJ2NvbG9yZXR0ZSdcbmltcG9ydCB7IGNyZWF0ZURlYnVnIH0gZnJvbSAnb2J1ZydcblxuZGVjbGFyZSBtb2R1bGUgJ29idWcnIHtcbiAgaW50ZXJmYWNlIERlYnVnZ2VyIHtcbiAgICBpbmZvOiB0eXBlb2YgY29uc29sZS5lcnJvclxuICAgIHdhcm46IHR5cGVvZiBjb25zb2xlLmVycm9yXG4gICAgZXJyb3I6IHR5cGVvZiBjb25zb2xlLmVycm9yXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRlYnVnRmFjdG9yeSA9IChuYW1lc3BhY2U6IHN0cmluZykgPT4ge1xuICBjb25zdCBkZWJ1ZyA9IGNyZWF0ZURlYnVnKGBuYXBpOiR7bmFtZXNwYWNlfWAsIHtcbiAgICBmb3JtYXR0ZXJzOiB7XG4gICAgICAvLyBkZWJ1ZygnJWknLCAnVGhpcyBpcyBhbiBpbmZvJylcbiAgICAgIGkodikge1xuICAgICAgICByZXR1cm4gY29sb3JzLmdyZWVuKHYpXG4gICAgICB9LFxuICAgIH0sXG4gIH0pXG5cbiAgZGVidWcuaW5mbyA9ICguLi5hcmdzOiBhbnlbXSkgPT5cbiAgICBjb25zb2xlLmVycm9yKGNvbG9ycy5ibGFjayhjb2xvcnMuYmdHcmVlbignIElORk8gJykpLCAuLi5hcmdzKVxuICBkZWJ1Zy53YXJuID0gKC4uLmFyZ3M6IGFueVtdKSA9PlxuICAgIGNvbnNvbGUuZXJyb3IoY29sb3JzLmJsYWNrKGNvbG9ycy5iZ1llbGxvdygnIFdBUk5JTkcgJykpLCAuLi5hcmdzKVxuICBkZWJ1Zy5lcnJvciA9ICguLi5hcmdzOiBhbnlbXSkgPT5cbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgY29sb3JzLndoaXRlKGNvbG9ycy5iZ1JlZCgnIEVSUk9SICcpKSxcbiAgICAgIC4uLmFyZ3MubWFwKChhcmcpID0+XG4gICAgICAgIGFyZyBpbnN0YW5jZW9mIEVycm9yID8gKGFyZy5zdGFjayA/PyBhcmcubWVzc2FnZSkgOiBhcmcsXG4gICAgICApLFxuICAgIClcblxuICByZXR1cm4gZGVidWdcbn1cbmV4cG9ydCBjb25zdCBkZWJ1ZyA9IGRlYnVnRmFjdG9yeSgndXRpbHMnKVxuIiwie1xuICBcIm5hbWVcIjogXCJAbmFwaS1ycy9jbGlcIixcbiAgXCJ2ZXJzaW9uXCI6IFwiMy41LjFcIixcbiAgXCJkZXNjcmlwdGlvblwiOiBcIkNsaSB0b29scyBmb3IgbmFwaS1yc1wiLFxuICBcImF1dGhvclwiOiBcIkxvbmdZaW5hbiA8bHlud2VrbG1AZ21haWwuY29tPlwiLFxuICBcImhvbWVwYWdlXCI6IFwiaHR0cHM6Ly9uYXBpLnJzL1wiLFxuICBcImxpY2Vuc2VcIjogXCJNSVRcIixcbiAgXCJ0eXBlXCI6IFwibW9kdWxlXCIsXG4gIFwiZW5naW5lc1wiOiB7XG4gICAgXCJub2RlXCI6IFwiPj0gMTZcIlxuICB9LFxuICBcImJpblwiOiB7XG4gICAgXCJuYXBpXCI6IFwiLi9kaXN0L2NsaS5qc1wiLFxuICAgIFwibmFwaS1yYXdcIjogXCIuL2NsaS5tanNcIlxuICB9LFxuICBcIm1haW5cIjogXCIuL2Rpc3QvaW5kZXguY2pzXCIsXG4gIFwibW9kdWxlXCI6IFwiLi9kaXN0L2luZGV4LmpzXCIsXG4gIFwidHlwZXNcIjogXCIuL2Rpc3QvaW5kZXguZC50c1wiLFxuICBcImV4cG9ydHNcIjoge1xuICAgIFwiLlwiOiB7XG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9pbmRleC5qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L2luZGV4LmNqc1wiXG4gICAgfSxcbiAgICBcIi4vcGFja2FnZS5qc29uXCI6IFwiLi9wYWNrYWdlLmpzb25cIlxuICB9LFxuICBcImZpbGVzXCI6IFtcbiAgICBcImRpc3RcIixcbiAgICBcInNyY1wiLFxuICAgIFwiIV9fdGVzdHNfX1wiXG4gIF0sXG4gIFwia2V5d29yZHNcIjogW1xuICAgIFwiY2xpXCIsXG4gICAgXCJydXN0XCIsXG4gICAgXCJuYXBpXCIsXG4gICAgXCJuLWFwaVwiLFxuICAgIFwibm9kZS1hcGlcIixcbiAgICBcIm5vZGUtYWRkb25cIixcbiAgICBcIm5lb25cIlxuICBdLFxuICBcIm1haW50YWluZXJzXCI6IFtcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJMb25nWWluYW5cIixcbiAgICAgIFwiZW1haWxcIjogXCJseW53ZWtsbUBnbWFpbC5jb21cIixcbiAgICAgIFwiaG9tZXBhZ2VcIjogXCJodHRwczovL2dpdGh1Yi5jb20vQnJvb29vb29rbHluXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcImZvcmVoYWxvXCIsXG4gICAgICBcImhvbWVwYWdlXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2ZvcmVoYWxvXCJcbiAgICB9XG4gIF0sXG4gIFwicmVwb3NpdG9yeVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiZ2l0XCIsXG4gICAgXCJ1cmxcIjogXCJnaXQraHR0cHM6Ly9naXRodWIuY29tL25hcGktcnMvbmFwaS1ycy5naXRcIlxuICB9LFxuICBcInB1Ymxpc2hDb25maWdcIjoge1xuICAgIFwicmVnaXN0cnlcIjogXCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9cIixcbiAgICBcImFjY2Vzc1wiOiBcInB1YmxpY1wiXG4gIH0sXG4gIFwiYnVnc1wiOiB7XG4gICAgXCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vbmFwaS1ycy9uYXBpLXJzL2lzc3Vlc1wiXG4gIH0sXG4gIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBpbnF1aXJlci9wcm9tcHRzXCI6IFwiXjguMC4wXCIsXG4gICAgXCJAbmFwaS1ycy9jcm9zcy10b29sY2hhaW5cIjogXCJeMS4wLjNcIixcbiAgICBcIkBuYXBpLXJzL3dhc20tdG9vbHNcIjogXCJeMS4wLjFcIixcbiAgICBcIkBvY3Rva2l0L3Jlc3RcIjogXCJeMjIuMC4xXCIsXG4gICAgXCJjbGlwYW5pb25cIjogXCJeNC4wLjAtcmMuNFwiLFxuICAgIFwiY29sb3JldHRlXCI6IFwiXjIuMC4yMFwiLFxuICAgIFwiZW1uYXBpXCI6IFwiXjEuNy4xXCIsXG4gICAgXCJlcy10b29sa2l0XCI6IFwiXjEuNDEuMFwiLFxuICAgIFwianMteWFtbFwiOiBcIl40LjEuMFwiLFxuICAgIFwib2J1Z1wiOiBcIl4yLjAuMFwiLFxuICAgIFwic2VtdmVyXCI6IFwiXjcuNy4zXCIsXG4gICAgXCJ0eXBhbmlvblwiOiBcIl4zLjE0LjBcIlxuICB9LFxuICBcImRldkRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAZW1uYXBpL3J1bnRpbWVcIjogXCJeMS43LjFcIixcbiAgICBcIkBveGMtbm9kZS9jb3JlXCI6IFwiXjAuMC4zNVwiLFxuICAgIFwiQHN0ZC90b21sXCI6IFwibnBtOkBqc3Ivc3RkX190b21sQF4xLjAuMTFcIixcbiAgICBcIkB0eXBlcy9pbnF1aXJlclwiOiBcIl45LjAuOVwiLFxuICAgIFwiQHR5cGVzL2pzLXlhbWxcIjogXCJeNC4wLjlcIixcbiAgICBcIkB0eXBlcy9ub2RlXCI6IFwiXjI0LjEwLjBcIixcbiAgICBcIkB0eXBlcy9zZW12ZXJcIjogXCJeNy43LjFcIixcbiAgICBcImF2YVwiOiBcIl42LjQuMVwiLFxuICAgIFwiZW1wYXRoaWNcIjogXCJeMi4wLjBcIixcbiAgICBcImVudi1wYXRoc1wiOiBcIl4zLjAuMFwiLFxuICAgIFwicHJldHRpZXJcIjogXCJeMy42LjJcIixcbiAgICBcInRzZG93blwiOiBcIl4wLjE4LjBcIixcbiAgICBcInRzbGliXCI6IFwiXjIuOC4xXCIsXG4gICAgXCJ0eXBlc2NyaXB0XCI6IFwiXjUuOS4zXCJcbiAgfSxcbiAgXCJwZWVyRGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBlbW5hcGkvcnVudGltZVwiOiBcIl4xLjcuMVwiXG4gIH0sXG4gIFwicGVlckRlcGVuZGVuY2llc01ldGFcIjoge1xuICAgIFwiQGVtbmFwaS9ydW50aW1lXCI6IHtcbiAgICAgIFwib3B0aW9uYWxcIjogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgXCJmdW5kaW5nXCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRodWJcIixcbiAgICBcInVybFwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9Ccm9vb29vb2tseW5cIlxuICB9LFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwiY29kZWdlblwiOiBcIm5vZGUgLS1pbXBvcnQgQG94Yy1ub2RlL2NvcmUvcmVnaXN0ZXIgLi9jb2RlZ2VuL2luZGV4LnRzXCIsXG4gICAgXCJidWlsZFwiOiBcInRzZG93blwiLFxuICAgIFwidGVzdFwiOiBcIm5vZGUgLS1pbXBvcnQgQG94Yy1ub2RlL2NvcmUvcmVnaXN0ZXIgLi4vbm9kZV9tb2R1bGVzL2F2YS9lbnRyeXBvaW50cy9jbGkubWpzXCJcbiAgfSxcbiAgXCJhdmFcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiB7XG4gICAgICBcInRzXCI6IFwibW9kdWxlXCJcbiAgICB9LFxuICAgIFwidGltZW91dFwiOiBcIjJtXCIsXG4gICAgXCJ3b3JrZXJUaHJlYWRzXCI6IGZhbHNlLFxuICAgIFwiZmlsZXNcIjogW1xuICAgICAgXCIqKi9fX3Rlc3RzX18vKiovKi5zcGVjLnRzXCIsXG4gICAgICBcImUyZS8qKi8qLnNwZWMudHNcIlxuICAgIF1cbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgcmVhZEZpbGUsXG4gIHdyaXRlRmlsZSxcbiAgdW5saW5rLFxuICBjb3B5RmlsZSxcbiAgbWtkaXIsXG4gIHN0YXQsXG4gIHJlYWRkaXIsXG4gIGFjY2Vzcyxcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcblxuaW1wb3J0IHBrZ0pzb24gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJyB3aXRoIHsgdHlwZTogJ2pzb24nIH1cbmltcG9ydCB7IGRlYnVnIH0gZnJvbSAnLi9sb2cuanMnXG5cbmV4cG9ydCBjb25zdCByZWFkRmlsZUFzeW5jID0gcmVhZEZpbGVcbmV4cG9ydCBjb25zdCB3cml0ZUZpbGVBc3luYyA9IHdyaXRlRmlsZVxuZXhwb3J0IGNvbnN0IHVubGlua0FzeW5jID0gdW5saW5rXG5leHBvcnQgY29uc3QgY29weUZpbGVBc3luYyA9IGNvcHlGaWxlXG5leHBvcnQgY29uc3QgbWtkaXJBc3luYyA9IG1rZGlyXG5leHBvcnQgY29uc3Qgc3RhdEFzeW5jID0gc3RhdFxuZXhwb3J0IGNvbnN0IHJlYWRkaXJBc3luYyA9IHJlYWRkaXJcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGVFeGlzdHMocGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBhY2Nlc3MocGF0aCkudGhlbihcbiAgICAoKSA9PiB0cnVlLFxuICAgICgpID0+IGZhbHNlLFxuICApXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkaXJFeGlzdHNBc3luYyhwYXRoOiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0cyA9IGF3YWl0IHN0YXRBc3luYyhwYXRoKVxuICAgIHJldHVybiBzdGF0cy5pc0RpcmVjdG9yeSgpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrPE8sIEsgZXh0ZW5kcyBrZXlvZiBPPihvOiBPLCAuLi5rZXlzOiBLW10pOiBQaWNrPE8sIEs+IHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgIGFjY1trZXldID0gb1trZXldXG4gICAgcmV0dXJuIGFjY1xuICB9LCB7fSBhcyBPKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlUGFja2FnZUpzb24oXG4gIHBhdGg6IHN0cmluZyxcbiAgcGFydGlhbDogUmVjb3JkPHN0cmluZywgYW55Pixcbikge1xuICBjb25zdCBleGlzdHMgPSBhd2FpdCBmaWxlRXhpc3RzKHBhdGgpXG4gIGlmICghZXhpc3RzKSB7XG4gICAgZGVidWcoYEZpbGUgbm90IGV4aXN0cyAke3BhdGh9YClcbiAgICByZXR1cm5cbiAgfVxuICBjb25zdCBvbGQgPSBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlQXN5bmMocGF0aCwgJ3V0ZjgnKSlcbiAgYXdhaXQgd3JpdGVGaWxlQXN5bmMocGF0aCwgSlNPTi5zdHJpbmdpZnkoeyAuLi5vbGQsIC4uLnBhcnRpYWwgfSwgbnVsbCwgMikpXG59XG5cbmV4cG9ydCBjb25zdCBDTElfVkVSU0lPTiA9IHBrZ0pzb24udmVyc2lvblxuIiwiaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5cbmV4cG9ydCB0eXBlIFBsYXRmb3JtID0gTm9kZUpTLlBsYXRmb3JtIHwgJ3dhc20nIHwgJ3dhc2knIHwgJ29wZW5oYXJtb255J1xuXG5leHBvcnQgY29uc3QgVU5JVkVSU0FMX1RBUkdFVFMgPSB7XG4gICd1bml2ZXJzYWwtYXBwbGUtZGFyd2luJzogWydhYXJjaDY0LWFwcGxlLWRhcndpbicsICd4ODZfNjQtYXBwbGUtZGFyd2luJ10sXG59IGFzIGNvbnN0XG5cbmNvbnN0IFNVQl9TWVNURU1TID0gbmV3IFNldChbJ2FuZHJvaWQnLCAnb2hvcyddKVxuXG5leHBvcnQgY29uc3QgQVZBSUxBQkxFX1RBUkdFVFMgPSBbXG4gICdhYXJjaDY0LWFwcGxlLWRhcndpbicsXG4gICdhYXJjaDY0LWxpbnV4LWFuZHJvaWQnLFxuICAnYWFyY2g2NC11bmtub3duLWxpbnV4LWdudScsXG4gICdhYXJjaDY0LXVua25vd24tbGludXgtbXVzbCcsXG4gICdhYXJjaDY0LXVua25vd24tbGludXgtb2hvcycsXG4gICdhYXJjaDY0LXBjLXdpbmRvd3MtbXN2YycsXG4gICd4ODZfNjQtYXBwbGUtZGFyd2luJyxcbiAgJ3g4Nl82NC1wYy13aW5kb3dzLW1zdmMnLFxuICAneDg2XzY0LXBjLXdpbmRvd3MtZ251JyxcbiAgJ3g4Nl82NC11bmtub3duLWxpbnV4LWdudScsXG4gICd4ODZfNjQtdW5rbm93bi1saW51eC1tdXNsJyxcbiAgJ3g4Nl82NC11bmtub3duLWxpbnV4LW9ob3MnLFxuICAneDg2XzY0LXVua25vd24tZnJlZWJzZCcsXG4gICdpNjg2LXBjLXdpbmRvd3MtbXN2YycsXG4gICdhcm12Ny11bmtub3duLWxpbnV4LWdudWVhYmloZicsXG4gICdhcm12Ny11bmtub3duLWxpbnV4LW11c2xlYWJpaGYnLFxuICAnYXJtdjctbGludXgtYW5kcm9pZGVhYmknLFxuICAndW5pdmVyc2FsLWFwcGxlLWRhcndpbicsXG4gICdsb29uZ2FyY2g2NC11bmtub3duLWxpbnV4LWdudScsXG4gICdyaXNjdjY0Z2MtdW5rbm93bi1saW51eC1nbnUnLFxuICAncG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUnLFxuICAnczM5MHgtdW5rbm93bi1saW51eC1nbnUnLFxuICAnd2FzbTMyLXdhc2ktcHJldmlldzEtdGhyZWFkcycsXG4gICd3YXNtMzItd2FzaXAxLXRocmVhZHMnLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBUYXJnZXRUcmlwbGUgPSAodHlwZW9mIEFWQUlMQUJMRV9UQVJHRVRTKVtudW1iZXJdXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RBUkdFVFMgPSBbXG4gICd4ODZfNjQtYXBwbGUtZGFyd2luJyxcbiAgJ2FhcmNoNjQtYXBwbGUtZGFyd2luJyxcbiAgJ3g4Nl82NC1wYy13aW5kb3dzLW1zdmMnLFxuICAneDg2XzY0LXVua25vd24tbGludXgtZ251Jyxcbl0gYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IFRBUkdFVF9MSU5LRVI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdhYXJjaDY0LXVua25vd24tbGludXgtbXVzbCc6ICdhYXJjaDY0LWxpbnV4LW11c2wtZ2NjJyxcbiAgLy8gVE9ETzogU3dpdGNoIHRvIGxvb25nYXJjaDY0LWxpbnV4LWdudS1nY2Mgd2hlbiBhdmFpbGFibGVcbiAgJ2xvb25nYXJjaDY0LXVua25vd24tbGludXgtZ251JzogJ2xvb25nYXJjaDY0LWxpbnV4LWdudS1nY2MtMTMnLFxuICAncmlzY3Y2NGdjLXVua25vd24tbGludXgtZ251JzogJ3Jpc2N2NjQtbGludXgtZ251LWdjYycsXG4gICdwb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudSc6ICdwb3dlcnBjNjRsZS1saW51eC1nbnUtZ2NjJyxcbiAgJ3MzOTB4LXVua25vd24tbGludXgtZ251JzogJ3MzOTB4LWxpbnV4LWdudS1nY2MnLFxufVxuXG4vLyBodHRwczovL25vZGVqcy5vcmcvYXBpL3Byb2Nlc3MuaHRtbCNwcm9jZXNzX3Byb2Nlc3NfYXJjaFxudHlwZSBOb2RlSlNBcmNoID1cbiAgfCAnYXJtJ1xuICB8ICdhcm02NCdcbiAgfCAnaWEzMidcbiAgfCAnbG9vbmc2NCdcbiAgfCAnbWlwcydcbiAgfCAnbWlwc2VsJ1xuICB8ICdwcGMnXG4gIHwgJ3BwYzY0J1xuICB8ICdyaXNjdjY0J1xuICB8ICdzMzkwJ1xuICB8ICdzMzkweCdcbiAgfCAneDMyJ1xuICB8ICd4NjQnXG4gIHwgJ3VuaXZlcnNhbCdcbiAgfCAnd2FzbTMyJ1xuXG5jb25zdCBDcHVUb05vZGVBcmNoOiBSZWNvcmQ8c3RyaW5nLCBOb2RlSlNBcmNoPiA9IHtcbiAgeDg2XzY0OiAneDY0JyxcbiAgYWFyY2g2NDogJ2FybTY0JyxcbiAgaTY4NjogJ2lhMzInLFxuICBhcm12NzogJ2FybScsXG4gIGxvb25nYXJjaDY0OiAnbG9vbmc2NCcsXG4gIHJpc2N2NjRnYzogJ3Jpc2N2NjQnLFxuICBwb3dlcnBjNjRsZTogJ3BwYzY0Jyxcbn1cblxuZXhwb3J0IGNvbnN0IE5vZGVBcmNoVG9DcHU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIHg2NDogJ3g4Nl82NCcsXG4gIGFybTY0OiAnYWFyY2g2NCcsXG4gIGlhMzI6ICdpNjg2JyxcbiAgYXJtOiAnYXJtdjcnLFxuICBsb29uZzY0OiAnbG9vbmdhcmNoNjQnLFxuICByaXNjdjY0OiAncmlzY3Y2NGdjJyxcbiAgcHBjNjQ6ICdwb3dlcnBjNjRsZScsXG59XG5cbmNvbnN0IFN5c1RvTm9kZVBsYXRmb3JtOiBSZWNvcmQ8c3RyaW5nLCBQbGF0Zm9ybT4gPSB7XG4gIGxpbnV4OiAnbGludXgnLFxuICBmcmVlYnNkOiAnZnJlZWJzZCcsXG4gIGRhcndpbjogJ2RhcndpbicsXG4gIHdpbmRvd3M6ICd3aW4zMicsXG4gIG9ob3M6ICdvcGVuaGFybW9ueScsXG59XG5cbmV4cG9ydCBjb25zdCBVbmlBcmNoc0J5UGxhdGZvcm06IFBhcnRpYWw8UmVjb3JkPFBsYXRmb3JtLCBOb2RlSlNBcmNoW10+PiA9IHtcbiAgZGFyd2luOiBbJ3g2NCcsICdhcm02NCddLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldCB7XG4gIHRyaXBsZTogc3RyaW5nXG4gIHBsYXRmb3JtQXJjaEFCSTogc3RyaW5nXG4gIHBsYXRmb3JtOiBQbGF0Zm9ybVxuICBhcmNoOiBOb2RlSlNBcmNoXG4gIGFiaTogc3RyaW5nIHwgbnVsbFxufVxuXG4vKipcbiAqIEEgdHJpcGxlIGlzIGEgc3BlY2lmaWMgZm9ybWF0IGZvciBzcGVjaWZ5aW5nIGEgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cbiAqIFRyaXBsZXMgbWF5IGJlIHJlZmVycmVkIHRvIGFzIGEgdGFyZ2V0IHRyaXBsZSB3aGljaCBpcyB0aGUgYXJjaGl0ZWN0dXJlIGZvciB0aGUgYXJ0aWZhY3QgcHJvZHVjZWQsIGFuZCB0aGUgaG9zdCB0cmlwbGUgd2hpY2ggaXMgdGhlIGFyY2hpdGVjdHVyZSB0aGF0IHRoZSBjb21waWxlciBpcyBydW5uaW5nIG9uLlxuICogVGhlIGdlbmVyYWwgZm9ybWF0IG9mIHRoZSB0cmlwbGUgaXMgYDxhcmNoPjxzdWI+LTx2ZW5kb3I+LTxzeXM+LTxhYmk+YCB3aGVyZTpcbiAqICAgLSBgYXJjaGAgPSBUaGUgYmFzZSBDUFUgYXJjaGl0ZWN0dXJlLCBmb3IgZXhhbXBsZSBgeDg2XzY0YCwgYGk2ODZgLCBgYXJtYCwgYHRodW1iYCwgYG1pcHNgLCBldGMuXG4gKiAgIC0gYHN1YmAgPSBUaGUgQ1BVIHN1Yi1hcmNoaXRlY3R1cmUsIGZvciBleGFtcGxlIGBhcm1gIGhhcyBgdjdgLCBgdjdzYCwgYHY1dGVgLCBldGMuXG4gKiAgIC0gYHZlbmRvcmAgPSBUaGUgdmVuZG9yLCBmb3IgZXhhbXBsZSBgdW5rbm93bmAsIGBhcHBsZWAsIGBwY2AsIGBudmlkaWFgLCBldGMuXG4gKiAgIC0gYHN5c2AgPSBUaGUgc3lzdGVtIG5hbWUsIGZvciBleGFtcGxlIGBsaW51eGAsIGB3aW5kb3dzYCwgYGRhcndpbmAsIGV0Yy4gbm9uZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgYmFyZS1tZXRhbCB3aXRob3V0IGFuIE9TLlxuICogICAtIGBhYmlgID0gVGhlIEFCSSwgZm9yIGV4YW1wbGUgYGdudWAsIGBhbmRyb2lkYCwgYGVhYmlgLCBldGMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRyaXBsZShyYXdUcmlwbGU6IHN0cmluZyk6IFRhcmdldCB7XG4gIGlmIChcbiAgICByYXdUcmlwbGUgPT09ICd3YXNtMzItd2FzaScgfHxcbiAgICByYXdUcmlwbGUgPT09ICd3YXNtMzItd2FzaS1wcmV2aWV3MS10aHJlYWRzJyB8fFxuICAgIHJhd1RyaXBsZS5zdGFydHNXaXRoKCd3YXNtMzItd2FzaXAnKVxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHJpcGxlOiByYXdUcmlwbGUsXG4gICAgICBwbGF0Zm9ybUFyY2hBQkk6ICd3YXNtMzItd2FzaScsXG4gICAgICBwbGF0Zm9ybTogJ3dhc2knLFxuICAgICAgYXJjaDogJ3dhc20zMicsXG4gICAgICBhYmk6ICd3YXNpJyxcbiAgICB9XG4gIH1cbiAgY29uc3QgdHJpcGxlID0gcmF3VHJpcGxlLmVuZHNXaXRoKCdlYWJpJylcbiAgICA/IGAke3Jhd1RyaXBsZS5zbGljZSgwLCAtNCl9LWVhYmlgXG4gICAgOiByYXdUcmlwbGVcbiAgY29uc3QgdHJpcGxlcyA9IHRyaXBsZS5zcGxpdCgnLScpXG4gIGxldCBjcHU6IHN0cmluZ1xuICBsZXQgc3lzOiBzdHJpbmdcbiAgbGV0IGFiaTogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgaWYgKHRyaXBsZXMubGVuZ3RoID09PSAyKSB7XG4gICAgLy8gYWFyY2g2NC1mdWNoc2lhXG4gICAgLy8gXiBjcHUgICBeIHN5c1xuICAgIDtbY3B1LCBzeXNdID0gdHJpcGxlc1xuICB9IGVsc2Uge1xuICAgIC8vIGFhcmNoNjQtdW5rbm93bi1saW51eC1tdXNsXG4gICAgLy8gXiBjcHUgICBedmVuZG9yIF4gc3lzIF4gYWJpXG4gICAgLy8gYWFyY2g2NC1hcHBsZS1kYXJ3aW5cbiAgICAvLyBeIGNwdSAgICAgICAgIF4gc3lzICAoYWJpIGlzIE5vbmUpXG4gICAgO1tjcHUsICwgc3lzLCBhYmkgPSBudWxsXSA9IHRyaXBsZXNcbiAgfVxuXG4gIGlmIChhYmkgJiYgU1VCX1NZU1RFTVMuaGFzKGFiaSkpIHtcbiAgICBzeXMgPSBhYmlcbiAgICBhYmkgPSBudWxsXG4gIH1cbiAgY29uc3QgcGxhdGZvcm0gPSBTeXNUb05vZGVQbGF0Zm9ybVtzeXNdID8/IChzeXMgYXMgUGxhdGZvcm0pXG4gIGNvbnN0IGFyY2ggPSBDcHVUb05vZGVBcmNoW2NwdV0gPz8gKGNwdSBhcyBOb2RlSlNBcmNoKVxuXG4gIHJldHVybiB7XG4gICAgdHJpcGxlOiByYXdUcmlwbGUsXG4gICAgcGxhdGZvcm1BcmNoQUJJOiBhYmkgPyBgJHtwbGF0Zm9ybX0tJHthcmNofS0ke2FiaX1gIDogYCR7cGxhdGZvcm19LSR7YXJjaH1gLFxuICAgIHBsYXRmb3JtLFxuICAgIGFyY2gsXG4gICAgYWJpLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTeXN0ZW1EZWZhdWx0VGFyZ2V0KCk6IFRhcmdldCB7XG4gIGNvbnN0IGhvc3QgPSBleGVjU3luYyhgcnVzdGMgLXZWYCwge1xuICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gIH0pXG4gICAgLnRvU3RyaW5nKCd1dGY4JylcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLmZpbmQoKGxpbmUpID0+IGxpbmUuc3RhcnRzV2l0aCgnaG9zdDogJykpXG4gIGNvbnN0IHRyaXBsZSA9IGhvc3Q/LnNsaWNlKCdob3N0OiAnLmxlbmd0aClcbiAgaWYgKCF0cmlwbGUpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBDYW4gbm90IHBhcnNlIHRhcmdldCB0cmlwbGUgZnJvbSBob3N0YClcbiAgfVxuICByZXR1cm4gcGFyc2VUcmlwbGUodHJpcGxlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFyZ2V0TGlua2VyKHRhcmdldDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIFRBUkdFVF9MSU5LRVJbdGFyZ2V0XVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFyZ2V0VG9FbnZWYXIodGFyZ2V0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGFyZ2V0LnJlcGxhY2UoLy0vZywgJ18nKS50b1VwcGVyQ2FzZSgpXG59XG4iLCJleHBvcnQgZW51bSBOYXBpVmVyc2lvbiB7XG4gIE5hcGkxID0gMSxcbiAgTmFwaTIsXG4gIE5hcGkzLFxuICBOYXBpNCxcbiAgTmFwaTUsXG4gIE5hcGk2LFxuICBOYXBpNyxcbiAgTmFwaTgsXG4gIE5hcGk5LFxufVxuXG4vLy8gYmVjYXVzZSBub2RlIHN1cHBvcnQgbmV3IG5hcGkgdmVyc2lvbiBpbiBzb21lIG1pbm9yIHZlcnNpb24gdXBkYXRlcywgc28gd2UgbWlnaHQgbWVldCBzdWNoIHNpdHVhdGlvbjpcbi8vLyBgbm9kZSB2MTAuMjAuMGAgc3VwcG9ydHMgYG5hcGk1YCBhbmQgYG5hcGk2YCwgYnV0IGBub2RlIHYxMi4wLjBgIG9ubHkgc3VwcG9ydCBgbmFwaTRgLFxuLy8vIGJ5IHdoaWNoLCB3ZSBjYW4gbm90IHRlbGwgZGlyZWN0bHkgbmFwaSB2ZXJzaW9uIHN1cHBvcnRsZXNzIGZyb20gbm9kZSB2ZXJzaW9uIGRpcmVjdGx5LlxuY29uc3QgTkFQSV9WRVJTSU9OX01BVFJJWCA9IG5ldyBNYXA8TmFwaVZlcnNpb24sIHN0cmluZz4oW1xuICBbTmFwaVZlcnNpb24uTmFwaTEsICc4LjYuMCB8IDkuMC4wIHwgMTAuMC4wJ10sXG4gIFtOYXBpVmVyc2lvbi5OYXBpMiwgJzguMTAuMCB8IDkuMy4wIHwgMTAuMC4wJ10sXG4gIFtOYXBpVmVyc2lvbi5OYXBpMywgJzYuMTQuMiB8IDguMTEuMiB8IDkuMTEuMCB8IDEwLjAuMCddLFxuICBbTmFwaVZlcnNpb24uTmFwaTQsICcxMC4xNi4wIHwgMTEuOC4wIHwgMTIuMC4wJ10sXG4gIFtOYXBpVmVyc2lvbi5OYXBpNSwgJzEwLjE3LjAgfCAxMi4xMS4wIHwgMTMuMC4wJ10sXG4gIFtOYXBpVmVyc2lvbi5OYXBpNiwgJzEwLjIwLjAgfCAxMi4xNy4wIHwgMTQuMC4wJ10sXG4gIFtOYXBpVmVyc2lvbi5OYXBpNywgJzEwLjIzLjAgfCAxMi4xOS4wIHwgMTQuMTIuMCB8IDE1LjAuMCddLFxuICBbTmFwaVZlcnNpb24uTmFwaTgsICcxMi4yMi4wIHwgMTQuMTcuMCB8IDE1LjEyLjAgfCAxNi4wLjAnXSxcbiAgW05hcGlWZXJzaW9uLk5hcGk5LCAnMTguMTcuMCB8IDIwLjMuMCB8IDIxLjEuMCddLFxuXSlcblxuaW50ZXJmYWNlIE5vZGVWZXJzaW9uIHtcbiAgbWFqb3I6IG51bWJlclxuICBtaW5vcjogbnVtYmVyXG4gIHBhdGNoOiBudW1iZXJcbn1cblxuZnVuY3Rpb24gcGFyc2VOb2RlVmVyc2lvbih2OiBzdHJpbmcpOiBOb2RlVmVyc2lvbiB7XG4gIGNvbnN0IG1hdGNoZXMgPSB2Lm1hdGNoKC92PyhbMC05XSspXFwuKFswLTldKylcXC4oWzAtOV0rKS9pKVxuXG4gIGlmICghbWF0Y2hlcykge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBub2RlIHZlcnNpb24gbnVtYmVyOiAnICsgdilcbiAgfVxuXG4gIGNvbnN0IFssIG1ham9yLCBtaW5vciwgcGF0Y2hdID0gbWF0Y2hlc1xuXG4gIHJldHVybiB7XG4gICAgbWFqb3I6IHBhcnNlSW50KG1ham9yKSxcbiAgICBtaW5vcjogcGFyc2VJbnQobWlub3IpLFxuICAgIHBhdGNoOiBwYXJzZUludChwYXRjaCksXG4gIH1cbn1cblxuZnVuY3Rpb24gcmVxdWlyZWROb2RlVmVyc2lvbnMobmFwaVZlcnNpb246IE5hcGlWZXJzaW9uKTogTm9kZVZlcnNpb25bXSB7XG4gIGNvbnN0IHJlcXVpcmVtZW50ID0gTkFQSV9WRVJTSU9OX01BVFJJWC5nZXQobmFwaVZlcnNpb24pXG5cbiAgaWYgKCFyZXF1aXJlbWVudCkge1xuICAgIHJldHVybiBbcGFyc2VOb2RlVmVyc2lvbignMTAuMC4wJyldXG4gIH1cblxuICByZXR1cm4gcmVxdWlyZW1lbnQuc3BsaXQoJ3wnKS5tYXAocGFyc2VOb2RlVmVyc2lvbilcbn1cblxuZnVuY3Rpb24gdG9FbmdpbmVSZXF1aXJlbWVudCh2ZXJzaW9uczogTm9kZVZlcnNpb25bXSk6IHN0cmluZyB7XG4gIGNvbnN0IHJlcXVpcmVtZW50czogc3RyaW5nW10gPSBbXVxuICB2ZXJzaW9ucy5mb3JFYWNoKCh2LCBpKSA9PiB7XG4gICAgbGV0IHJlcSA9ICcnXG4gICAgaWYgKGkgIT09IDApIHtcbiAgICAgIGNvbnN0IGxhc3RWZXJzaW9uID0gdmVyc2lvbnNbaSAtIDFdXG4gICAgICByZXEgKz0gYDwgJHtsYXN0VmVyc2lvbi5tYWpvciArIDF9YFxuICAgIH1cblxuICAgIHJlcSArPSBgJHtpID09PSAwID8gJycgOiAnIHx8ICd9Pj0gJHt2Lm1ham9yfS4ke3YubWlub3J9LiR7di5wYXRjaH1gXG4gICAgcmVxdWlyZW1lbnRzLnB1c2gocmVxKVxuICB9KVxuXG4gIHJldHVybiByZXF1aXJlbWVudHMuam9pbignICcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYXBpRW5naW5lUmVxdWlyZW1lbnQobmFwaVZlcnNpb246IE5hcGlWZXJzaW9uKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRvRW5naW5lUmVxdWlyZW1lbnQocmVxdWlyZWROb2RlVmVyc2lvbnMobmFwaVZlcnNpb24pKVxufVxuIiwiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgZnMgZnJvbSAnbm9kZTpmcydcblxuZXhwb3J0IHR5cGUgQ3JhdGVUYXJnZXRLaW5kID1cbiAgfCAnYmluJ1xuICB8ICdleGFtcGxlJ1xuICB8ICd0ZXN0J1xuICB8ICdiZW5jaCdcbiAgfCAnbGliJ1xuICB8ICdybGliJ1xuICB8ICdjZHlsaWInXG4gIHwgJ2N1c3RvbS1idWlsZCdcblxuZXhwb3J0IGludGVyZmFjZSBDcmF0ZVRhcmdldCB7XG4gIG5hbWU6IHN0cmluZ1xuICBraW5kOiBDcmF0ZVRhcmdldEtpbmRbXVxuICBjcmF0ZV90eXBlczogQ3JhdGVUYXJnZXRLaW5kW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmF0ZSB7XG4gIGlkOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIHNyY19wYXRoOiBzdHJpbmdcbiAgdmVyc2lvbjogc3RyaW5nXG4gIGVkaXRpb246IHN0cmluZ1xuICB0YXJnZXRzOiBDcmF0ZVRhcmdldFtdXG4gIGZlYXR1cmVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT5cbiAgbWFuaWZlc3RfcGF0aDogc3RyaW5nXG4gIGRlcGVuZGVuY2llczogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIHNvdXJjZTogc3RyaW5nXG4gICAgcmVxOiBzdHJpbmdcbiAgICBraW5kOiBzdHJpbmcgfCBudWxsXG4gICAgcmVuYW1lOiBzdHJpbmcgfCBudWxsXG4gICAgb3B0aW9uYWw6IGJvb2xlYW5cbiAgICB1c2VzX2RlZmF1bHRfZmVhdHVyZXM6IGJvb2xlYW5cbiAgICBmZWF0dXJlczogc3RyaW5nW11cbiAgICB0YXJnZXQ6IHN0cmluZyB8IG51bGxcbiAgICByZWdpc3RyeTogc3RyaW5nIHwgbnVsbFxuICB9PlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhcmdvV29ya3NwYWNlTWV0YWRhdGEge1xuICB2ZXJzaW9uOiBudW1iZXJcbiAgcGFja2FnZXM6IENyYXRlW11cbiAgd29ya3NwYWNlX21lbWJlcnM6IHN0cmluZ1tdXG4gIHRhcmdldF9kaXJlY3Rvcnk6IHN0cmluZ1xuICB3b3Jrc3BhY2Vfcm9vdDogc3RyaW5nXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJzZU1ldGFkYXRhKG1hbmlmZXN0UGF0aDogc3RyaW5nKSB7XG4gIGlmICghZnMuZXhpc3RzU3luYyhtYW5pZmVzdFBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyBjcmF0ZSBmb3VuZCBpbiBtYW5pZmVzdDogJHttYW5pZmVzdFBhdGh9YClcbiAgfVxuXG4gIGNvbnN0IGNoaWxkUHJvY2VzcyA9IHNwYXduKFxuICAgICdjYXJnbycsXG4gICAgWydtZXRhZGF0YScsICctLW1hbmlmZXN0LXBhdGgnLCBtYW5pZmVzdFBhdGgsICctLWZvcm1hdC12ZXJzaW9uJywgJzEnXSxcbiAgICB7IHN0ZGlvOiAncGlwZScgfSxcbiAgKVxuXG4gIGxldCBzdGRvdXQgPSAnJ1xuICBsZXQgc3RkZXJyID0gJydcbiAgbGV0IHN0YXR1cyA9IDBcbiAgbGV0IGVycm9yID0gbnVsbFxuXG4gIGNoaWxkUHJvY2Vzcy5zdGRvdXQub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgIHN0ZG91dCArPSBkYXRhXG4gIH0pXG5cbiAgY2hpbGRQcm9jZXNzLnN0ZGVyci5vbignZGF0YScsIChkYXRhKSA9PiB7XG4gICAgc3RkZXJyICs9IGRhdGFcbiAgfSlcblxuICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgIGNoaWxkUHJvY2Vzcy5vbignY2xvc2UnLCAoY29kZSkgPT4ge1xuICAgICAgc3RhdHVzID0gY29kZSA/PyAwXG4gICAgICByZXNvbHZlKClcbiAgICB9KVxuICB9KVxuXG4gIGlmIChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcignY2FyZ28gbWV0YWRhdGEgZmFpbGVkIHRvIHJ1bicsIHsgY2F1c2U6IGVycm9yIH0pXG4gIH1cbiAgaWYgKHN0YXR1cyAhPT0gMCkge1xuICAgIGNvbnN0IHNpbXBsZU1lc3NhZ2UgPSBgY2FyZ28gbWV0YWRhdGEgZXhpdGVkIHdpdGggY29kZSAke3N0YXR1c31gXG4gICAgdGhyb3cgbmV3IEVycm9yKGAke3NpbXBsZU1lc3NhZ2V9IGFuZCBlcnJvciBtZXNzYWdlOlxcblxcbiR7c3RkZXJyfWAsIHtcbiAgICAgIGNhdXNlOiBuZXcgRXJyb3Ioc2ltcGxlTWVzc2FnZSksXG4gICAgfSlcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3Rkb3V0KSBhcyBDYXJnb1dvcmtzcGFjZU1ldGFkYXRhXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSBjYXJnbyBtZXRhZGF0YSBKU09OJywgeyBjYXVzZTogZSB9KVxuICB9XG59XG4iLCJpbXBvcnQgeyB1bmRlcmxpbmUsIHllbGxvdyB9IGZyb20gJ2NvbG9yZXR0ZSdcbmltcG9ydCB7IG1lcmdlLCBvbWl0IH0gZnJvbSAnZXMtdG9vbGtpdCdcblxuaW1wb3J0IHsgZmlsZUV4aXN0cywgcmVhZEZpbGVBc3luYyB9IGZyb20gJy4vbWlzYy5qcydcbmltcG9ydCB7IERFRkFVTFRfVEFSR0VUUywgcGFyc2VUcmlwbGUsIHR5cGUgVGFyZ2V0IH0gZnJvbSAnLi90YXJnZXQuanMnXG5cbmV4cG9ydCB0eXBlIFZhbHVlT2ZDb25zdEFycmF5PFQ+ID0gVFtFeGNsdWRlPGtleW9mIFQsIGtleW9mIEFycmF5PGFueT4+XVxuXG5leHBvcnQgY29uc3QgU3VwcG9ydGVkUGFja2FnZU1hbmFnZXJzID0gWyd5YXJuJywgJ3BucG0nXSBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZFRlc3RGcmFtZXdvcmtzID0gWydhdmEnXSBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBTdXBwb3J0ZWRQYWNrYWdlTWFuYWdlciA9IFZhbHVlT2ZDb25zdEFycmF5PFxuICB0eXBlb2YgU3VwcG9ydGVkUGFja2FnZU1hbmFnZXJzXG4+XG5leHBvcnQgdHlwZSBTdXBwb3J0ZWRUZXN0RnJhbWV3b3JrID0gVmFsdWVPZkNvbnN0QXJyYXk8XG4gIHR5cGVvZiBTdXBwb3J0ZWRUZXN0RnJhbWV3b3Jrc1xuPlxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJOYXBpQ29uZmlnIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGJpbmFyeSB0byBiZSBnZW5lcmF0ZWQsIGRlZmF1bHQgdG8gYGluZGV4YFxuICAgKi9cbiAgYmluYXJ5TmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgbnBtIHBhY2thZ2UsIGRlZmF1bHQgdG8gdGhlIG5hbWUgb2Ygcm9vdCBwYWNrYWdlLmpzb24gbmFtZVxuICAgKlxuICAgKiBBbHdheXMgZ2l2ZW4gYEBzY29wZS9wa2dgIGFuZCBhcmNoIHN1ZmZpeCB3aWxsIGJlIGFwcGVuZGVkIGxpa2UgYEBzY29wZS9wa2ctbGludXgtZ251LXg2NGBcbiAgICovXG4gIHBhY2thZ2VOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBBbGwgdGFyZ2V0cyB0aGUgY3JhdGUgd2lsbCBiZSBjb21waWxlZCBmb3JcbiAgICovXG4gIHRhcmdldHM/OiBzdHJpbmdbXVxuXG4gIC8qKlxuICAgKiBUaGUgbnBtIGNsaWVudCBwcm9qZWN0IHVzZXMuXG4gICAqL1xuICBucG1DbGllbnQ/OiBzdHJpbmdcblxuICAvKipcbiAgICogV2hldGhlciBnZW5lcmF0ZSBjb25zdCBlbnVtIGZvciB0eXBlc2NyaXB0IGJpbmRpbmdzXG4gICAqL1xuICBjb25zdEVudW0/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIGR0cyBoZWFkZXIgcHJlcGVuZCB0byB0aGUgZ2VuZXJhdGVkIGR0cyBmaWxlXG4gICAqL1xuICBkdHNIZWFkZXI/OiBzdHJpbmdcblxuICAvKipcbiAgICogZHRzIGhlYWRlciBmaWxlIHBhdGggdG8gYmUgcHJlcGVuZGVkIHRvIHRoZSBnZW5lcmF0ZWQgZHRzIGZpbGVcbiAgICogaWYgYm90aCBkdHNIZWFkZXIgYW5kIGR0c0hlYWRlckZpbGUgYXJlIHByb3ZpZGVkLCBkdHNIZWFkZXJGaWxlIHdpbGwgYmUgdXNlZFxuICAgKi9cbiAgZHRzSGVhZGVyRmlsZT86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiB3YXNtIGNvbXBpbGF0aW9uIG9wdGlvbnNcbiAgICovXG4gIHdhc20/OiB7XG4gICAgLyoqXG4gICAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWJBc3NlbWJseS9KYXZhU2NyaXB0X2ludGVyZmFjZS9NZW1vcnlcbiAgICAgKiBAZGVmYXVsdCA0MDAwIHBhZ2VzICgyNTZNaUIpXG4gICAgICovXG4gICAgaW5pdGlhbE1lbW9yeT86IG51bWJlclxuICAgIC8qKlxuICAgICAqIEBkZWZhdWx0IDY1NTM2IHBhZ2VzICg0R2lCKVxuICAgICAqL1xuICAgIG1heGltdW1NZW1vcnk/OiBudW1iZXJcblxuICAgIC8qKlxuICAgICAqIEJyb3dzZXIgd2FzbSBiaW5kaW5nIGNvbmZpZ3VyYXRpb25cbiAgICAgKi9cbiAgICBicm93c2VyOiB7XG4gICAgICAvKipcbiAgICAgICAqIFdoZXRoZXIgdG8gdXNlIGZzIG1vZHVsZSBpbiBicm93c2VyXG4gICAgICAgKi9cbiAgICAgIGZzPzogYm9vbGVhblxuICAgICAgLyoqXG4gICAgICAgKiBXaGV0aGVyIHRvIGluaXRpYWxpemUgd2FzbSBhc3luY2hyb25vdXNseVxuICAgICAgICovXG4gICAgICBhc3luY0luaXQ/OiBib29sZWFuXG4gICAgICAvKipcbiAgICAgICAqIFdoZXRoZXIgdG8gaW5qZWN0IGBidWZmZXJgIHRvIGVtbmFwaSBjb250ZXh0XG4gICAgICAgKi9cbiAgICAgIGJ1ZmZlcj86IGJvb2xlYW5cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgYmluYXJ5TmFtZSBpbnN0ZWFkXG4gICAqL1xuICBuYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgcGFja2FnZU5hbWUgaW5zdGVhZFxuICAgKi9cbiAgcGFja2FnZT86IHtcbiAgICBuYW1lPzogc3RyaW5nXG4gIH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSB0YXJnZXRzIGluc3RlYWRcbiAgICovXG4gIHRyaXBsZXM/OiB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBlbmFibGUgZGVmYXVsdCB0YXJnZXRzXG4gICAgICovXG4gICAgZGVmYXVsdHM6IGJvb2xlYW5cbiAgICAvKipcbiAgICAgKiBBZGRpdGlvbmFsIHRhcmdldHMgdG8gYmUgY29tcGlsZWQgZm9yXG4gICAgICovXG4gICAgYWRkaXRpb25hbD86IHN0cmluZ1tdXG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21tb25QYWNrYWdlSnNvbkZpZWxkcyB7XG4gIG5hbWU6IHN0cmluZ1xuICB2ZXJzaW9uOiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAga2V5d29yZHM/OiBzdHJpbmdbXVxuICBhdXRob3I/OiBzdHJpbmdcbiAgYXV0aG9ycz86IHN0cmluZ1tdXG4gIGxpY2Vuc2U/OiBzdHJpbmdcbiAgY3B1Pzogc3RyaW5nW11cbiAgb3M/OiBzdHJpbmdbXVxuICBsaWJjPzogc3RyaW5nW11cbiAgZmlsZXM/OiBzdHJpbmdbXVxuICByZXBvc2l0b3J5PzogYW55XG4gIGhvbWVwYWdlPzogYW55XG4gIGVuZ2luZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIHB1Ymxpc2hDb25maWc/OiBhbnlcbiAgYnVncz86IGFueVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgbmFwaT86IFVzZXJOYXBpQ29uZmlnXG4gIHR5cGU/OiAnbW9kdWxlJyB8ICdjb21tb25qcydcbiAgc2NyaXB0cz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cblxuICAvLyBtb2R1bGVzXG4gIG1haW4/OiBzdHJpbmdcbiAgbW9kdWxlPzogc3RyaW5nXG4gIHR5cGVzPzogc3RyaW5nXG4gIGJyb3dzZXI/OiBzdHJpbmdcbiAgZXhwb3J0cz86IGFueVxuXG4gIGRlcGVuZGVuY2llcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgZGV2RGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuXG4gIGF2YT86IHtcbiAgICB0aW1lb3V0Pzogc3RyaW5nXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgTmFwaUNvbmZpZyA9IFJlcXVpcmVkPFxuICBQaWNrPFVzZXJOYXBpQ29uZmlnLCAnYmluYXJ5TmFtZScgfCAncGFja2FnZU5hbWUnIHwgJ25wbUNsaWVudCc+XG4+ICZcbiAgUGljazxVc2VyTmFwaUNvbmZpZywgJ3dhc20nIHwgJ2R0c0hlYWRlcicgfCAnZHRzSGVhZGVyRmlsZScgfCAnY29uc3RFbnVtJz4gJiB7XG4gICAgdGFyZ2V0czogVGFyZ2V0W11cbiAgICBwYWNrYWdlSnNvbjogQ29tbW9uUGFja2FnZUpzb25GaWVsZHNcbiAgfVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZE5hcGlDb25maWcoXG4gIHBhdGg6IHN0cmluZyxcbiAgY29uZmlnUGF0aD86IHN0cmluZyxcbik6IFByb21pc2U8TmFwaUNvbmZpZz4ge1xuICBpZiAoY29uZmlnUGF0aCAmJiAhKGF3YWl0IGZpbGVFeGlzdHMoY29uZmlnUGF0aCkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBOQVBJLVJTIGNvbmZpZyBub3QgZm91bmQgYXQgJHtjb25maWdQYXRofWApXG4gIH1cbiAgaWYgKCEoYXdhaXQgZmlsZUV4aXN0cyhwYXRoKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHBhY2thZ2UuanNvbiBub3QgZm91bmQgYXQgJHtwYXRofWApXG4gIH1cbiAgLy8gTWF5IHN1cHBvcnQgbXVsdGlwbGUgY29uZmlnIHNvdXJjZXMgbGF0ZXIgb24uXG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKHBhdGgsICd1dGY4JylcbiAgbGV0IHBrZ0pzb25cbiAgdHJ5IHtcbiAgICBwa2dKc29uID0gSlNPTi5wYXJzZShjb250ZW50KSBhcyBDb21tb25QYWNrYWdlSnNvbkZpZWxkc1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2UgcGFja2FnZS5qc29uIGF0ICR7cGF0aH1gLCB7XG4gICAgICBjYXVzZTogZSxcbiAgICB9KVxuICB9XG5cbiAgbGV0IHNlcGFyYXRlZENvbmZpZzogVXNlck5hcGlDb25maWcgfCB1bmRlZmluZWRcbiAgaWYgKGNvbmZpZ1BhdGgpIHtcbiAgICBjb25zdCBjb25maWdDb250ZW50ID0gYXdhaXQgcmVhZEZpbGVBc3luYyhjb25maWdQYXRoLCAndXRmOCcpXG4gICAgdHJ5IHtcbiAgICAgIHNlcGFyYXRlZENvbmZpZyA9IEpTT04ucGFyc2UoY29uZmlnQ29udGVudCkgYXMgVXNlck5hcGlDb25maWdcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBOQVBJLVJTIGNvbmZpZyBhdCAke2NvbmZpZ1BhdGh9YCwge1xuICAgICAgICBjYXVzZTogZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgdXNlck5hcGlDb25maWcgPSBwa2dKc29uLm5hcGkgPz8ge31cbiAgaWYgKHBrZ0pzb24ubmFwaSAmJiBzZXBhcmF0ZWRDb25maWcpIHtcbiAgICBjb25zdCBwa2dKc29uUGF0aCA9IHVuZGVybGluZShwYXRoKVxuICAgIGNvbnN0IGNvbmZpZ1BhdGhVbmRlcmxpbmUgPSB1bmRlcmxpbmUoY29uZmlnUGF0aCEpXG4gICAgY29uc29sZS53YXJuKFxuICAgICAgeWVsbG93KFxuICAgICAgICBgQm90aCBuYXBpIGZpZWxkIGluICR7cGtnSnNvblBhdGh9IGFuZCBbTkFQSS1SUyBjb25maWddKCR7Y29uZmlnUGF0aFVuZGVybGluZX0pIGZpbGUgYXJlIGZvdW5kLCB0aGUgTkFQSS1SUyBjb25maWcgZmlsZSB3aWxsIGJlIHVzZWQuYCxcbiAgICAgICksXG4gICAgKVxuICB9XG4gIGlmIChzZXBhcmF0ZWRDb25maWcpIHtcbiAgICBPYmplY3QuYXNzaWduKHVzZXJOYXBpQ29uZmlnLCBzZXBhcmF0ZWRDb25maWcpXG4gIH1cbiAgY29uc3QgbmFwaUNvbmZpZzogTmFwaUNvbmZpZyA9IG1lcmdlKFxuICAgIHtcbiAgICAgIGJpbmFyeU5hbWU6ICdpbmRleCcsXG4gICAgICBwYWNrYWdlTmFtZTogcGtnSnNvbi5uYW1lLFxuICAgICAgdGFyZ2V0czogW10sXG4gICAgICBwYWNrYWdlSnNvbjogcGtnSnNvbixcbiAgICAgIG5wbUNsaWVudDogJ25wbScsXG4gICAgfSxcbiAgICBvbWl0KHVzZXJOYXBpQ29uZmlnLCBbJ3RhcmdldHMnXSksXG4gIClcblxuICBsZXQgdGFyZ2V0czogc3RyaW5nW10gPSB1c2VyTmFwaUNvbmZpZy50YXJnZXRzID8/IFtdXG5cbiAgLy8gY29tcGF0aWJsZSB3aXRoIG9sZCBjb25maWdcbiAgaWYgKHVzZXJOYXBpQ29uZmlnPy5uYW1lKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgeWVsbG93KFxuICAgICAgICBgW0RFUFJFQ0FURURdIG5hcGkubmFtZSBpcyBkZXByZWNhdGVkLCB1c2UgbmFwaS5iaW5hcnlOYW1lIGluc3RlYWQuYCxcbiAgICAgICksXG4gICAgKVxuICAgIG5hcGlDb25maWcuYmluYXJ5TmFtZSA9IHVzZXJOYXBpQ29uZmlnLm5hbWVcbiAgfVxuXG4gIGlmICghdGFyZ2V0cy5sZW5ndGgpIHtcbiAgICBsZXQgZGVwcmVjYXRlZFdhcm5lZCA9IGZhbHNlXG4gICAgY29uc3Qgd2FybmluZyA9IHllbGxvdyhcbiAgICAgIGBbREVQUkVDQVRFRF0gbmFwaS50cmlwbGVzIGlzIGRlcHJlY2F0ZWQsIHVzZSBuYXBpLnRhcmdldHMgaW5zdGVhZC5gLFxuICAgIClcbiAgICBpZiAodXNlck5hcGlDb25maWcudHJpcGxlcz8uZGVmYXVsdHMpIHtcbiAgICAgIGRlcHJlY2F0ZWRXYXJuZWQgPSB0cnVlXG4gICAgICBjb25zb2xlLndhcm4od2FybmluZylcbiAgICAgIHRhcmdldHMgPSB0YXJnZXRzLmNvbmNhdChERUZBVUxUX1RBUkdFVFMpXG4gICAgfVxuXG4gICAgaWYgKHVzZXJOYXBpQ29uZmlnLnRyaXBsZXM/LmFkZGl0aW9uYWw/Lmxlbmd0aCkge1xuICAgICAgdGFyZ2V0cyA9IHRhcmdldHMuY29uY2F0KHVzZXJOYXBpQ29uZmlnLnRyaXBsZXMuYWRkaXRpb25hbClcbiAgICAgIGlmICghZGVwcmVjYXRlZFdhcm5lZCkge1xuICAgICAgICBjb25zb2xlLndhcm4od2FybmluZylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBmaW5kIGR1cGxpY2F0ZSB0YXJnZXRzXG4gIGNvbnN0IHVuaXF1ZVRhcmdldHMgPSBuZXcgU2V0KHRhcmdldHMpXG4gIGlmICh1bmlxdWVUYXJnZXRzLnNpemUgIT09IHRhcmdldHMubGVuZ3RoKSB7XG4gICAgY29uc3QgZHVwbGljYXRlVGFyZ2V0ID0gdGFyZ2V0cy5maW5kKFxuICAgICAgKHRhcmdldCwgaW5kZXgpID0+IHRhcmdldHMuaW5kZXhPZih0YXJnZXQpICE9PSBpbmRleCxcbiAgICApXG4gICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgdGFyZ2V0cyBhcmUgbm90IGFsbG93ZWQ6ICR7ZHVwbGljYXRlVGFyZ2V0fWApXG4gIH1cblxuICBuYXBpQ29uZmlnLnRhcmdldHMgPSB0YXJnZXRzLm1hcChwYXJzZVRyaXBsZSlcblxuICByZXR1cm4gbmFwaUNvbmZpZ1xufVxuIiwiaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5cbmltcG9ydCB7IGRlYnVnIH0gZnJvbSAnLi9sb2cuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiB0cnlJbnN0YWxsQ2FyZ29CaW5hcnkobmFtZTogc3RyaW5nLCBiaW46IHN0cmluZykge1xuICBpZiAoZGV0ZWN0Q2FyZ29CaW5hcnkoYmluKSkge1xuICAgIGRlYnVnKCdDYXJnbyBiaW5hcnkgYWxyZWFkeSBpbnN0YWxsZWQ6ICVzJywgbmFtZSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIHRyeSB7XG4gICAgZGVidWcoJ0luc3RhbGxpbmcgY2FyZ28gYmluYXJ5OiAlcycsIG5hbWUpXG4gICAgZXhlY1N5bmMoYGNhcmdvIGluc3RhbGwgJHtuYW1lfWAsIHtcbiAgICAgIHN0ZGlvOiAnaW5oZXJpdCcsXG4gICAgfSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGluc3RhbGwgY2FyZ28gYmluYXJ5OiAke25hbWV9YCwge1xuICAgICAgY2F1c2U6IGUsXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBkZXRlY3RDYXJnb0JpbmFyeShiaW46IHN0cmluZykge1xuICBkZWJ1ZygnRGV0ZWN0aW5nIGNhcmdvIGJpbmFyeTogJXMnLCBiaW4pXG4gIHRyeSB7XG4gICAgZXhlY1N5bmMoYGNhcmdvIGhlbHAgJHtiaW59YCwge1xuICAgICAgc3RkaW86ICdpZ25vcmUnLFxuICAgIH0pXG4gICAgZGVidWcoJ0NhcmdvIGJpbmFyeSBkZXRlY3RlZDogJXMnLCBiaW4pXG4gICAgcmV0dXJuIHRydWVcbiAgfSBjYXRjaCB7XG4gICAgZGVidWcoJ0NhcmdvIGJpbmFyeSBub3QgZGV0ZWN0ZWQ6ICVzJywgYmluKVxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG4iLCJpbXBvcnQgeyBzb3J0QnkgfSBmcm9tICdlcy10b29sa2l0J1xuXG5pbXBvcnQgeyByZWFkRmlsZUFzeW5jIH0gZnJvbSAnLi9taXNjLmpzJ1xuXG5jb25zdCBUT1BfTEVWRUxfTkFNRVNQQUNFID0gJ19fVE9QX0xFVkVMX01PRFVMRV9fJ1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVFlQRV9ERUZfSEVBREVSID0gYC8qIGF1dG8tZ2VuZXJhdGVkIGJ5IE5BUEktUlMgKi9cbi8qIGVzbGludC1kaXNhYmxlICovXG5gXG5cbmVudW0gVHlwZURlZktpbmQge1xuICBDb25zdCA9ICdjb25zdCcsXG4gIEVudW0gPSAnZW51bScsXG4gIFN0cmluZ0VudW0gPSAnc3RyaW5nX2VudW0nLFxuICBJbnRlcmZhY2UgPSAnaW50ZXJmYWNlJyxcbiAgVHlwZSA9ICd0eXBlJyxcbiAgRm4gPSAnZm4nLFxuICBTdHJ1Y3QgPSAnc3RydWN0JyxcbiAgRXh0ZW5kcyA9ICdleHRlbmRzJyxcbiAgSW1wbCA9ICdpbXBsJyxcbn1cblxuaW50ZXJmYWNlIFR5cGVEZWZMaW5lIHtcbiAga2luZDogVHlwZURlZktpbmRcbiAgbmFtZTogc3RyaW5nXG4gIG9yaWdpbmFsX25hbWU/OiBzdHJpbmdcbiAgZGVmOiBzdHJpbmdcbiAgZXh0ZW5kcz86IHN0cmluZ1xuICBqc19kb2M/OiBzdHJpbmdcbiAganNfbW9kPzogc3RyaW5nXG59XG5cbmZ1bmN0aW9uIHByZXR0eVByaW50KFxuICBsaW5lOiBUeXBlRGVmTGluZSxcbiAgY29uc3RFbnVtOiBib29sZWFuLFxuICBpZGVudDogbnVtYmVyLFxuICBhbWJpZW50ID0gZmFsc2UsXG4pOiBzdHJpbmcge1xuICBsZXQgcyA9IGxpbmUuanNfZG9jID8/ICcnXG4gIHN3aXRjaCAobGluZS5raW5kKSB7XG4gICAgY2FzZSBUeXBlRGVmS2luZC5JbnRlcmZhY2U6XG4gICAgICBzICs9IGBleHBvcnQgaW50ZXJmYWNlICR7bGluZS5uYW1lfSB7XFxuJHtsaW5lLmRlZn1cXG59YFxuICAgICAgYnJlYWtcblxuICAgIGNhc2UgVHlwZURlZktpbmQuVHlwZTpcbiAgICAgIHMgKz0gYGV4cG9ydCB0eXBlICR7bGluZS5uYW1lfSA9IFxcbiR7bGluZS5kZWZ9YFxuICAgICAgYnJlYWtcblxuICAgIGNhc2UgVHlwZURlZktpbmQuRW51bTpcbiAgICAgIGNvbnN0IGVudW1OYW1lID0gY29uc3RFbnVtID8gJ2NvbnN0IGVudW0nIDogJ2VudW0nXG4gICAgICBzICs9IGAke2V4cG9ydERlY2xhcmUoYW1iaWVudCl9ICR7ZW51bU5hbWV9ICR7bGluZS5uYW1lfSB7XFxuJHtsaW5lLmRlZn1cXG59YFxuICAgICAgYnJlYWtcblxuICAgIGNhc2UgVHlwZURlZktpbmQuU3RyaW5nRW51bTpcbiAgICAgIGlmIChjb25zdEVudW0pIHtcbiAgICAgICAgcyArPSBgJHtleHBvcnREZWNsYXJlKGFtYmllbnQpfSBjb25zdCBlbnVtICR7bGluZS5uYW1lfSB7XFxuJHtsaW5lLmRlZn1cXG59YFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcyArPSBgZXhwb3J0IHR5cGUgJHtsaW5lLm5hbWV9ID0gJHtsaW5lLmRlZi5yZXBsYWNlQWxsKC8uKj0vZywgJycpLnJlcGxhY2VBbGwoJywnLCAnfCcpfTtgXG4gICAgICB9XG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUeXBlRGVmS2luZC5TdHJ1Y3Q6XG4gICAgICBjb25zdCBleHRlbmRzRGVmID0gbGluZS5leHRlbmRzID8gYCBleHRlbmRzICR7bGluZS5leHRlbmRzfWAgOiAnJ1xuICAgICAgaWYgKGxpbmUuZXh0ZW5kcykge1xuICAgICAgICAvLyBFeHRyYWN0IGdlbmVyaWMgcGFyYW1zIGZyb20gZXh0ZW5kcyB0eXBlIGxpa2UgSXRlcmF0b3I8VCwgVFJlc3VsdCwgVE5leHQ+XG4gICAgICAgIGNvbnN0IGdlbmVyaWNNYXRjaCA9IGxpbmUuZXh0ZW5kcy5tYXRjaCgvSXRlcmF0b3I8KC4rKT4kLylcbiAgICAgICAgaWYgKGdlbmVyaWNNYXRjaCkge1xuICAgICAgICAgIGNvbnN0IFtULCBUUmVzdWx0LCBUTmV4dF0gPSBnZW5lcmljTWF0Y2hbMV1cbiAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKChwKSA9PiBwLnRyaW0oKSlcbiAgICAgICAgICBsaW5lLmRlZiA9XG4gICAgICAgICAgICBsaW5lLmRlZiArXG4gICAgICAgICAgICBgXFxubmV4dCh2YWx1ZT86ICR7VE5leHR9KTogSXRlcmF0b3JSZXN1bHQ8JHtUfSwgJHtUUmVzdWx0fT5gXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHMgKz0gYCR7ZXhwb3J0RGVjbGFyZShhbWJpZW50KX0gY2xhc3MgJHtsaW5lLm5hbWV9JHtleHRlbmRzRGVmfSB7XFxuJHtsaW5lLmRlZn1cXG59YFxuICAgICAgaWYgKGxpbmUub3JpZ2luYWxfbmFtZSAmJiBsaW5lLm9yaWdpbmFsX25hbWUgIT09IGxpbmUubmFtZSkge1xuICAgICAgICBzICs9IGBcXG5leHBvcnQgdHlwZSAke2xpbmUub3JpZ2luYWxfbmFtZX0gPSAke2xpbmUubmFtZX1gXG4gICAgICB9XG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUeXBlRGVmS2luZC5GbjpcbiAgICAgIHMgKz0gYCR7ZXhwb3J0RGVjbGFyZShhbWJpZW50KX0gJHtsaW5lLmRlZn1gXG4gICAgICBicmVha1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHMgKz0gbGluZS5kZWZcbiAgfVxuXG4gIHJldHVybiBjb3JyZWN0U3RyaW5nSWRlbnQocywgaWRlbnQpXG59XG5cbmZ1bmN0aW9uIGV4cG9ydERlY2xhcmUoYW1iaWVudDogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChhbWJpZW50KSB7XG4gICAgcmV0dXJuICdleHBvcnQnXG4gIH1cblxuICByZXR1cm4gJ2V4cG9ydCBkZWNsYXJlJ1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1R5cGVEZWYoXG4gIGludGVybWVkaWF0ZVR5cGVGaWxlOiBzdHJpbmcsXG4gIGNvbnN0RW51bTogYm9vbGVhbixcbikge1xuICBjb25zdCBleHBvcnRzOiBzdHJpbmdbXSA9IFtdXG4gIGNvbnN0IGRlZnMgPSBhd2FpdCByZWFkSW50ZXJtZWRpYXRlVHlwZUZpbGUoaW50ZXJtZWRpYXRlVHlwZUZpbGUpXG4gIGNvbnN0IGdyb3VwZWREZWZzID0gcHJlcHJvY2Vzc1R5cGVEZWYoZGVmcylcblxuICBjb25zdCBkdHMgPVxuICAgIHNvcnRCeShBcnJheS5mcm9tKGdyb3VwZWREZWZzKSwgWyhbbmFtZXNwYWNlXSkgPT4gbmFtZXNwYWNlXSlcbiAgICAgIC5tYXAoKFtuYW1lc3BhY2UsIGRlZnNdKSA9PiB7XG4gICAgICAgIGlmIChuYW1lc3BhY2UgPT09IFRPUF9MRVZFTF9OQU1FU1BBQ0UpIHtcbiAgICAgICAgICByZXR1cm4gZGVmc1xuICAgICAgICAgICAgLm1hcCgoZGVmKSA9PiB7XG4gICAgICAgICAgICAgIHN3aXRjaCAoZGVmLmtpbmQpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFR5cGVEZWZLaW5kLkNvbnN0OlxuICAgICAgICAgICAgICAgIGNhc2UgVHlwZURlZktpbmQuRW51bTpcbiAgICAgICAgICAgICAgICBjYXNlIFR5cGVEZWZLaW5kLlN0cmluZ0VudW06XG4gICAgICAgICAgICAgICAgY2FzZSBUeXBlRGVmS2luZC5GbjpcbiAgICAgICAgICAgICAgICBjYXNlIFR5cGVEZWZLaW5kLlN0cnVjdDoge1xuICAgICAgICAgICAgICAgICAgZXhwb3J0cy5wdXNoKGRlZi5uYW1lKVxuICAgICAgICAgICAgICAgICAgaWYgKGRlZi5vcmlnaW5hbF9uYW1lICYmIGRlZi5vcmlnaW5hbF9uYW1lICE9PSBkZWYubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBleHBvcnRzLnB1c2goZGVmLm9yaWdpbmFsX25hbWUpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gcHJldHR5UHJpbnQoZGVmLCBjb25zdEVudW0sIDApXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oJ1xcblxcbicpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXhwb3J0cy5wdXNoKG5hbWVzcGFjZSlcbiAgICAgICAgICBsZXQgZGVjbGFyYXRpb24gPSAnJ1xuICAgICAgICAgIGRlY2xhcmF0aW9uICs9IGBleHBvcnQgZGVjbGFyZSBuYW1lc3BhY2UgJHtuYW1lc3BhY2V9IHtcXG5gXG4gICAgICAgICAgZm9yIChjb25zdCBkZWYgb2YgZGVmcykge1xuICAgICAgICAgICAgZGVjbGFyYXRpb24gKz0gcHJldHR5UHJpbnQoZGVmLCBjb25zdEVudW0sIDIsIHRydWUpICsgJ1xcbidcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVjbGFyYXRpb24gKz0gJ30nXG4gICAgICAgICAgcmV0dXJuIGRlY2xhcmF0aW9uXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuam9pbignXFxuXFxuJykgKyAnXFxuJ1xuXG4gIHJldHVybiB7XG4gICAgZHRzLFxuICAgIGV4cG9ydHMsXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEludGVybWVkaWF0ZVR5cGVGaWxlKGZpbGU6IHN0cmluZykge1xuICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGVBc3luYyhmaWxlLCAndXRmOCcpXG5cbiAgY29uc3QgZGVmcyA9IGNvbnRlbnRcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLmZpbHRlcihCb29sZWFuKVxuICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgIGxpbmUgPSBsaW5lLnRyaW0oKVxuICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShsaW5lKSBhcyBUeXBlRGVmTGluZVxuICAgICAgLy8gQ29udmVydCBlc2NhcGVkIG5ld2xpbmVzIGJhY2sgdG8gYWN0dWFsIG5ld2xpbmVzIGluIGpzX2RvYyBmaWVsZHNcbiAgICAgIGlmIChwYXJzZWQuanNfZG9jKSB7XG4gICAgICAgIHBhcnNlZC5qc19kb2MgPSBwYXJzZWQuanNfZG9jLnJlcGxhY2UoL1xcXFxuL2csICdcXG4nKVxuICAgICAgfVxuICAgICAgLy8gQ29udmVydCBlc2NhcGVkIG5ld2xpbmVzIHRvIGFjdHVhbCBuZXdsaW5lcyBpbiBkZWYgZmllbGRzIGZvciBzdHJ1Y3QvY2xhc3MvaW50ZXJmYWNlL3R5cGUgdHlwZXNcbiAgICAgIC8vIHdoZXJlIFxcbiByZXByZXNlbnRzIG1ldGhvZC9maWVsZCBzZXBhcmF0b3JzIHRoYXQgc2hvdWxkIGJlIGFjdHVhbCBuZXdsaW5lc1xuICAgICAgaWYgKHBhcnNlZC5kZWYpIHtcbiAgICAgICAgcGFyc2VkLmRlZiA9IHBhcnNlZC5kZWYucmVwbGFjZSgvXFxcXG4vZywgJ1xcbicpXG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyc2VkXG4gICAgfSlcblxuICAvLyBtb3ZlIGFsbCBgc3RydWN0YCBkZWYgdG8gdGhlIHZlcnkgdG9wXG4gIC8vIGFuZCBvcmRlciB0aGUgcmVzdCBhbHBoYWJldGljYWxseS5cbiAgcmV0dXJuIGRlZnMuc29ydCgoYSwgYikgPT4ge1xuICAgIGlmIChhLmtpbmQgPT09IFR5cGVEZWZLaW5kLlN0cnVjdCkge1xuICAgICAgaWYgKGIua2luZCA9PT0gVHlwZURlZktpbmQuU3RydWN0KSB7XG4gICAgICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpXG4gICAgICB9XG4gICAgICByZXR1cm4gLTFcbiAgICB9IGVsc2UgaWYgKGIua2luZCA9PT0gVHlwZURlZktpbmQuU3RydWN0KSB7XG4gICAgICByZXR1cm4gMVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gcHJlcHJvY2Vzc1R5cGVEZWYoZGVmczogVHlwZURlZkxpbmVbXSk6IE1hcDxzdHJpbmcsIFR5cGVEZWZMaW5lW10+IHtcbiAgY29uc3QgbmFtZXNwYWNlR3JvdXBlZCA9IG5ldyBNYXA8c3RyaW5nLCBUeXBlRGVmTGluZVtdPigpXG4gIGNvbnN0IGNsYXNzRGVmcyA9IG5ldyBNYXA8c3RyaW5nLCBUeXBlRGVmTGluZT4oKVxuXG4gIGZvciAoY29uc3QgZGVmIG9mIGRlZnMpIHtcbiAgICBjb25zdCBuYW1lc3BhY2UgPSBkZWYuanNfbW9kID8/IFRPUF9MRVZFTF9OQU1FU1BBQ0VcbiAgICBpZiAoIW5hbWVzcGFjZUdyb3VwZWQuaGFzKG5hbWVzcGFjZSkpIHtcbiAgICAgIG5hbWVzcGFjZUdyb3VwZWQuc2V0KG5hbWVzcGFjZSwgW10pXG4gICAgfVxuXG4gICAgY29uc3QgZ3JvdXAgPSBuYW1lc3BhY2VHcm91cGVkLmdldChuYW1lc3BhY2UpIVxuXG4gICAgaWYgKGRlZi5raW5kID09PSBUeXBlRGVmS2luZC5TdHJ1Y3QpIHtcbiAgICAgIGdyb3VwLnB1c2goZGVmKVxuICAgICAgY2xhc3NEZWZzLnNldChkZWYubmFtZSwgZGVmKVxuICAgIH0gZWxzZSBpZiAoZGVmLmtpbmQgPT09IFR5cGVEZWZLaW5kLkV4dGVuZHMpIHtcbiAgICAgIGNvbnN0IGNsYXNzRGVmID0gY2xhc3NEZWZzLmdldChkZWYubmFtZSlcbiAgICAgIGlmIChjbGFzc0RlZikge1xuICAgICAgICBjbGFzc0RlZi5leHRlbmRzID0gZGVmLmRlZlxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGVmLmtpbmQgPT09IFR5cGVEZWZLaW5kLkltcGwpIHtcbiAgICAgIC8vIG1lcmdlIGBpbXBsYCBpbnRvIGNsYXNzIGRlZmluaXRpb25cbiAgICAgIGNvbnN0IGNsYXNzRGVmID0gY2xhc3NEZWZzLmdldChkZWYubmFtZSlcbiAgICAgIGlmIChjbGFzc0RlZikge1xuICAgICAgICBpZiAoY2xhc3NEZWYuZGVmKSB7XG4gICAgICAgICAgY2xhc3NEZWYuZGVmICs9ICdcXG4nXG4gICAgICAgIH1cblxuICAgICAgICBjbGFzc0RlZi5kZWYgKz0gZGVmLmRlZlxuICAgICAgICAvLyBDb252ZXJ0IGFueSByZW1haW5pbmcgXFxuIHNlcXVlbmNlcyBpbiB0aGUgbWVyZ2VkIGRlZiB0byBhY3R1YWwgbmV3bGluZXNcbiAgICAgICAgaWYgKGNsYXNzRGVmLmRlZikge1xuICAgICAgICAgIGNsYXNzRGVmLmRlZiA9IGNsYXNzRGVmLmRlZi5yZXBsYWNlKC9cXFxcbi9nLCAnXFxuJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBncm91cC5wdXNoKGRlZilcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmFtZXNwYWNlR3JvdXBlZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29ycmVjdFN0cmluZ0lkZW50KHNyYzogc3RyaW5nLCBpZGVudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgbGV0IGJyYWNrZXREZXB0aCA9IDBcbiAgY29uc3QgcmVzdWx0ID0gc3JjXG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgIGxpbmUgPSBsaW5lLnRyaW0oKVxuICAgICAgaWYgKGxpbmUgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiAnJ1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpc0luTXVsdGlsaW5lQ29tbWVudCA9IGxpbmUuc3RhcnRzV2l0aCgnKicpXG4gICAgICBjb25zdCBpc0Nsb3NpbmdCcmFja2V0ID0gbGluZS5lbmRzV2l0aCgnfScpXG4gICAgICBjb25zdCBpc09wZW5pbmdCcmFja2V0ID0gbGluZS5lbmRzV2l0aCgneycpXG4gICAgICBjb25zdCBpc1R5cGVEZWNsYXJhdGlvbiA9IGxpbmUuZW5kc1dpdGgoJz0nKVxuICAgICAgY29uc3QgaXNUeXBlVmFyaWFudCA9IGxpbmUuc3RhcnRzV2l0aCgnfCcpXG5cbiAgICAgIGxldCByaWdodEluZGVudCA9IGlkZW50XG4gICAgICBpZiAoKGlzT3BlbmluZ0JyYWNrZXQgfHwgaXNUeXBlRGVjbGFyYXRpb24pICYmICFpc0luTXVsdGlsaW5lQ29tbWVudCkge1xuICAgICAgICBicmFja2V0RGVwdGggKz0gMVxuICAgICAgICByaWdodEluZGVudCArPSAoYnJhY2tldERlcHRoIC0gMSkgKiAyXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgaXNDbG9zaW5nQnJhY2tldCAmJlxuICAgICAgICAgIGJyYWNrZXREZXB0aCA+IDAgJiZcbiAgICAgICAgICAhaXNJbk11bHRpbGluZUNvbW1lbnQgJiZcbiAgICAgICAgICAhaXNUeXBlVmFyaWFudFxuICAgICAgICApIHtcbiAgICAgICAgICBicmFja2V0RGVwdGggLT0gMVxuICAgICAgICB9XG4gICAgICAgIHJpZ2h0SW5kZW50ICs9IGJyYWNrZXREZXB0aCAqIDJcbiAgICAgIH1cblxuICAgICAgaWYgKGlzSW5NdWx0aWxpbmVDb21tZW50KSB7XG4gICAgICAgIHJpZ2h0SW5kZW50ICs9IDFcbiAgICAgIH1cblxuICAgICAgY29uc3QgcyA9IGAkeycgJy5yZXBlYXQocmlnaHRJbmRlbnQpfSR7bGluZX1gXG5cbiAgICAgIHJldHVybiBzXG4gICAgfSlcbiAgICAuam9pbignXFxuJylcblxuICByZXR1cm4gcmVzdWx0XG59XG4iLCJpbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5pbXBvcnQgeyByZWFkTmFwaUNvbmZpZyB9IGZyb20gJy4vY29uZmlnLmpzJ1xuXG5pbnRlcmZhY2UgTWluaW1hbE5hcGlPcHRpb25zIHtcbiAgY3dkOiBzdHJpbmdcbiAgY29uZmlnUGF0aD86IHN0cmluZ1xuICBwYWNrYWdlSnNvblBhdGg/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDb25maWcob3B0aW9uczogTWluaW1hbE5hcGlPcHRpb25zKSB7XG4gIGNvbnN0IHJlc29sdmVQYXRoID0gKC4uLnBhdGhzOiBzdHJpbmdbXSkgPT4gcmVzb2x2ZShvcHRpb25zLmN3ZCwgLi4ucGF0aHMpXG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWROYXBpQ29uZmlnKFxuICAgIHJlc29sdmVQYXRoKG9wdGlvbnMucGFja2FnZUpzb25QYXRoID8/ICdwYWNrYWdlLmpzb24nKSxcbiAgICBvcHRpb25zLmNvbmZpZ1BhdGggPyByZXNvbHZlUGF0aChvcHRpb25zLmNvbmZpZ1BhdGgpIDogdW5kZWZpbmVkLFxuICApXG4gIHJldHVybiBjb25maWdcbn1cbiIsImltcG9ydCB7IGpvaW4sIHJlc29sdmUsIHBhcnNlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5pbXBvcnQgKiBhcyBjb2xvcnMgZnJvbSAnY29sb3JldHRlJ1xuXG5pbXBvcnQge1xuICBhcHBseURlZmF1bHRBcnRpZmFjdHNPcHRpb25zLFxuICB0eXBlIEFydGlmYWN0c09wdGlvbnMsXG59IGZyb20gJy4uL2RlZi9hcnRpZmFjdHMuanMnXG5pbXBvcnQge1xuICByZWFkTmFwaUNvbmZpZyxcbiAgZGVidWdGYWN0b3J5LFxuICByZWFkRmlsZUFzeW5jLFxuICB3cml0ZUZpbGVBc3luYyxcbiAgVW5pQXJjaHNCeVBsYXRmb3JtLFxuICByZWFkZGlyQXN5bmMsXG59IGZyb20gJy4uL3V0aWxzL2luZGV4LmpzJ1xuXG5jb25zdCBkZWJ1ZyA9IGRlYnVnRmFjdG9yeSgnYXJ0aWZhY3RzJylcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RBcnRpZmFjdHModXNlck9wdGlvbnM6IEFydGlmYWN0c09wdGlvbnMpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGFwcGx5RGVmYXVsdEFydGlmYWN0c09wdGlvbnModXNlck9wdGlvbnMpXG5cbiAgY29uc3QgcmVzb2x2ZVBhdGggPSAoLi4ucGF0aHM6IHN0cmluZ1tdKSA9PiByZXNvbHZlKG9wdGlvbnMuY3dkLCAuLi5wYXRocylcbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcmVzb2x2ZVBhdGgob3B0aW9ucy5wYWNrYWdlSnNvblBhdGgpXG4gIGNvbnN0IHsgdGFyZ2V0cywgYmluYXJ5TmFtZSwgcGFja2FnZU5hbWUgfSA9IGF3YWl0IHJlYWROYXBpQ29uZmlnKFxuICAgIHBhY2thZ2VKc29uUGF0aCxcbiAgICBvcHRpb25zLmNvbmZpZ1BhdGggPyByZXNvbHZlUGF0aChvcHRpb25zLmNvbmZpZ1BhdGgpIDogdW5kZWZpbmVkLFxuICApXG5cbiAgY29uc3QgZGlzdERpcnMgPSB0YXJnZXRzLm1hcCgocGxhdGZvcm0pID0+XG4gICAgam9pbihvcHRpb25zLmN3ZCwgb3B0aW9ucy5ucG1EaXIsIHBsYXRmb3JtLnBsYXRmb3JtQXJjaEFCSSksXG4gIClcblxuICBjb25zdCB1bml2ZXJzYWxTb3VyY2VCaW5zID0gbmV3IFNldChcbiAgICB0YXJnZXRzXG4gICAgICAuZmlsdGVyKChwbGF0Zm9ybSkgPT4gcGxhdGZvcm0uYXJjaCA9PT0gJ3VuaXZlcnNhbCcpXG4gICAgICAuZmxhdE1hcCgocCkgPT5cbiAgICAgICAgVW5pQXJjaHNCeVBsYXRmb3JtW3AucGxhdGZvcm1dPy5tYXAoKGEpID0+IGAke3AucGxhdGZvcm19LSR7YX1gKSxcbiAgICAgIClcbiAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgc3RyaW5nW10sXG4gIClcblxuICBhd2FpdCBjb2xsZWN0Tm9kZUJpbmFyaWVzKGpvaW4ob3B0aW9ucy5jd2QsIG9wdGlvbnMub3V0cHV0RGlyKSkudGhlbihcbiAgICAob3V0cHV0KSA9PlxuICAgICAgUHJvbWlzZS5hbGwoXG4gICAgICAgIG91dHB1dC5tYXAoYXN5bmMgKGZpbGVQYXRoKSA9PiB7XG4gICAgICAgICAgZGVidWcuaW5mbyhgUmVhZCBbJHtjb2xvcnMueWVsbG93QnJpZ2h0KGZpbGVQYXRoKX1dYClcbiAgICAgICAgICBjb25zdCBzb3VyY2VDb250ZW50ID0gYXdhaXQgcmVhZEZpbGVBc3luYyhmaWxlUGF0aClcbiAgICAgICAgICBjb25zdCBwYXJzZWROYW1lID0gcGFyc2UoZmlsZVBhdGgpXG4gICAgICAgICAgY29uc3QgdGVybXMgPSBwYXJzZWROYW1lLm5hbWUuc3BsaXQoJy4nKVxuICAgICAgICAgIGNvbnN0IHBsYXRmb3JtQXJjaEFCSSA9IHRlcm1zLnBvcCgpIVxuICAgICAgICAgIGNvbnN0IF9iaW5hcnlOYW1lID0gdGVybXMuam9pbignLicpXG5cbiAgICAgICAgICBpZiAoX2JpbmFyeU5hbWUgIT09IGJpbmFyeU5hbWUpIHtcbiAgICAgICAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgICAgICAgIGBbJHtfYmluYXJ5TmFtZX1dIGlzIG5vdCBtYXRjaGVkIHdpdGggWyR7YmluYXJ5TmFtZX1dLCBza2lwYCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBkaXIgPSBkaXN0RGlycy5maW5kKChkaXIpID0+IGRpci5pbmNsdWRlcyhwbGF0Zm9ybUFyY2hBQkkpKVxuICAgICAgICAgIGlmICghZGlyICYmIHVuaXZlcnNhbFNvdXJjZUJpbnMuaGFzKHBsYXRmb3JtQXJjaEFCSSkpIHtcbiAgICAgICAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgICAgICAgIGBbJHtwbGF0Zm9ybUFyY2hBQkl9XSBoYXMgbm8gZGlzdCBkaXIgYnV0IGl0IGlzIHNvdXJjZSBiaW4gZm9yIHVuaXZlcnNhbCBhcmNoLCBza2lwYCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWRpcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBkaXN0IGRpciBmb3VuZCBmb3IgJHtmaWxlUGF0aH1gKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGRpc3RGaWxlUGF0aCA9IGpvaW4oZGlyLCBwYXJzZWROYW1lLmJhc2UpXG4gICAgICAgICAgZGVidWcuaW5mbyhcbiAgICAgICAgICAgIGBXcml0ZSBmaWxlIGNvbnRlbnQgdG8gWyR7Y29sb3JzLnllbGxvd0JyaWdodChkaXN0RmlsZVBhdGgpfV1gLFxuICAgICAgICAgIClcbiAgICAgICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhkaXN0RmlsZVBhdGgsIHNvdXJjZUNvbnRlbnQpXG4gICAgICAgICAgY29uc3QgZGlzdEZpbGVQYXRoTG9jYWwgPSBqb2luKFxuICAgICAgICAgICAgcGFyc2UocGFja2FnZUpzb25QYXRoKS5kaXIsXG4gICAgICAgICAgICBwYXJzZWROYW1lLmJhc2UsXG4gICAgICAgICAgKVxuICAgICAgICAgIGRlYnVnLmluZm8oXG4gICAgICAgICAgICBgV3JpdGUgZmlsZSBjb250ZW50IHRvIFske2NvbG9ycy55ZWxsb3dCcmlnaHQoZGlzdEZpbGVQYXRoTG9jYWwpfV1gLFxuICAgICAgICAgIClcbiAgICAgICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhkaXN0RmlsZVBhdGhMb2NhbCwgc291cmNlQ29udGVudClcbiAgICAgICAgfSksXG4gICAgICApLFxuICApXG5cbiAgY29uc3Qgd2FzaVRhcmdldCA9IHRhcmdldHMuZmluZCgodCkgPT4gdC5wbGF0Zm9ybSA9PT0gJ3dhc2knKVxuICBpZiAod2FzaVRhcmdldCkge1xuICAgIGNvbnN0IHdhc2lEaXIgPSBqb2luKFxuICAgICAgb3B0aW9ucy5jd2QsXG4gICAgICBvcHRpb25zLm5wbURpcixcbiAgICAgIHdhc2lUYXJnZXQucGxhdGZvcm1BcmNoQUJJLFxuICAgIClcbiAgICBjb25zdCBjanNGaWxlID0gam9pbihcbiAgICAgIG9wdGlvbnMuYnVpbGRPdXRwdXREaXIgPz8gb3B0aW9ucy5jd2QsXG4gICAgICBgJHtiaW5hcnlOYW1lfS53YXNpLmNqc2AsXG4gICAgKVxuICAgIGNvbnN0IHdvcmtlckZpbGUgPSBqb2luKFxuICAgICAgb3B0aW9ucy5idWlsZE91dHB1dERpciA/PyBvcHRpb25zLmN3ZCxcbiAgICAgIGB3YXNpLXdvcmtlci5tanNgLFxuICAgIClcbiAgICBjb25zdCBicm93c2VyRW50cnkgPSBqb2luKFxuICAgICAgb3B0aW9ucy5idWlsZE91dHB1dERpciA/PyBvcHRpb25zLmN3ZCxcbiAgICAgIGAke2JpbmFyeU5hbWV9Lndhc2ktYnJvd3Nlci5qc2AsXG4gICAgKVxuICAgIGNvbnN0IGJyb3dzZXJXb3JrZXJGaWxlID0gam9pbihcbiAgICAgIG9wdGlvbnMuYnVpbGRPdXRwdXREaXIgPz8gb3B0aW9ucy5jd2QsXG4gICAgICBgd2FzaS13b3JrZXItYnJvd3Nlci5tanNgLFxuICAgIClcbiAgICBkZWJ1Zy5pbmZvKFxuICAgICAgYE1vdmUgd2FzaSBiaW5kaW5nIGZpbGUgWyR7Y29sb3JzLnllbGxvd0JyaWdodChcbiAgICAgICAgY2pzRmlsZSxcbiAgICAgICl9XSB0byBbJHtjb2xvcnMueWVsbG93QnJpZ2h0KHdhc2lEaXIpfV1gLFxuICAgIClcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgIGpvaW4od2FzaURpciwgYCR7YmluYXJ5TmFtZX0ud2FzaS5janNgKSxcbiAgICAgIGF3YWl0IHJlYWRGaWxlQXN5bmMoY2pzRmlsZSksXG4gICAgKVxuICAgIGRlYnVnLmluZm8oXG4gICAgICBgTW92ZSB3YXNpIHdvcmtlciBmaWxlIFske2NvbG9ycy55ZWxsb3dCcmlnaHQoXG4gICAgICAgIHdvcmtlckZpbGUsXG4gICAgICApfV0gdG8gWyR7Y29sb3JzLnllbGxvd0JyaWdodCh3YXNpRGlyKX1dYCxcbiAgICApXG4gICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoXG4gICAgICBqb2luKHdhc2lEaXIsIGB3YXNpLXdvcmtlci5tanNgKSxcbiAgICAgIGF3YWl0IHJlYWRGaWxlQXN5bmMod29ya2VyRmlsZSksXG4gICAgKVxuICAgIGRlYnVnLmluZm8oXG4gICAgICBgTW92ZSB3YXNpIGJyb3dzZXIgZW50cnkgZmlsZSBbJHtjb2xvcnMueWVsbG93QnJpZ2h0KFxuICAgICAgICBicm93c2VyRW50cnksXG4gICAgICApfV0gdG8gWyR7Y29sb3JzLnllbGxvd0JyaWdodCh3YXNpRGlyKX1dYCxcbiAgICApXG4gICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoXG4gICAgICBqb2luKHdhc2lEaXIsIGAke2JpbmFyeU5hbWV9Lndhc2ktYnJvd3Nlci5qc2ApLFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3ZpdGVqcy92aXRlL2lzc3Vlcy84NDI3XG4gICAgICAoYXdhaXQgcmVhZEZpbGVBc3luYyhicm93c2VyRW50cnksICd1dGY4JykpLnJlcGxhY2UoXG4gICAgICAgIGBuZXcgVVJMKCcuL3dhc2ktd29ya2VyLWJyb3dzZXIubWpzJywgaW1wb3J0Lm1ldGEudXJsKWAsXG4gICAgICAgIGBuZXcgVVJMKCcke3BhY2thZ2VOYW1lfS13YXNtMzItd2FzaS93YXNpLXdvcmtlci1icm93c2VyLm1qcycsIGltcG9ydC5tZXRhLnVybClgLFxuICAgICAgKSxcbiAgICApXG4gICAgZGVidWcuaW5mbyhcbiAgICAgIGBNb3ZlIHdhc2kgYnJvd3NlciB3b3JrZXIgZmlsZSBbJHtjb2xvcnMueWVsbG93QnJpZ2h0KFxuICAgICAgICBicm93c2VyV29ya2VyRmlsZSxcbiAgICAgICl9XSB0byBbJHtjb2xvcnMueWVsbG93QnJpZ2h0KHdhc2lEaXIpfV1gLFxuICAgIClcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgIGpvaW4od2FzaURpciwgYHdhc2ktd29ya2VyLWJyb3dzZXIubWpzYCksXG4gICAgICBhd2FpdCByZWFkRmlsZUFzeW5jKGJyb3dzZXJXb3JrZXJGaWxlKSxcbiAgICApXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY29sbGVjdE5vZGVCaW5hcmllcyhyb290OiBzdHJpbmcpIHtcbiAgY29uc3QgZmlsZXMgPSBhd2FpdCByZWFkZGlyQXN5bmMocm9vdCwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pXG4gIGNvbnN0IG5vZGVCaW5hcmllcyA9IGZpbGVzXG4gICAgLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PlxuICAgICAgICBmaWxlLmlzRmlsZSgpICYmXG4gICAgICAgIChmaWxlLm5hbWUuZW5kc1dpdGgoJy5ub2RlJykgfHwgZmlsZS5uYW1lLmVuZHNXaXRoKCcud2FzbScpKSxcbiAgICApXG4gICAgLm1hcCgoZmlsZSkgPT4gam9pbihyb290LCBmaWxlLm5hbWUpKVxuXG4gIGNvbnN0IGRpcnMgPSBmaWxlcy5maWx0ZXIoKGZpbGUpID0+IGZpbGUuaXNEaXJlY3RvcnkoKSlcbiAgZm9yIChjb25zdCBkaXIgb2YgZGlycykge1xuICAgIGlmIChkaXIubmFtZSAhPT0gJ25vZGVfbW9kdWxlcycpIHtcbiAgICAgIG5vZGVCaW5hcmllcy5wdXNoKC4uLihhd2FpdCBjb2xsZWN0Tm9kZUJpbmFyaWVzKGpvaW4ocm9vdCwgZGlyLm5hbWUpKSkpXG4gICAgfVxuICB9XG4gIHJldHVybiBub2RlQmluYXJpZXNcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDanNCaW5kaW5nKFxuICBsb2NhbE5hbWU6IHN0cmluZyxcbiAgcGtnTmFtZTogc3RyaW5nLFxuICBpZGVudHM6IHN0cmluZ1tdLFxuICBwYWNrYWdlVmVyc2lvbj86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIHJldHVybiBgJHtiaW5kaW5nSGVhZGVyfVxuJHtjcmVhdGVDb21tb25CaW5kaW5nKGxvY2FsTmFtZSwgcGtnTmFtZSwgcGFja2FnZVZlcnNpb24pfVxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVCaW5kaW5nXG4ke2lkZW50c1xuICAubWFwKChpZGVudCkgPT4gYG1vZHVsZS5leHBvcnRzLiR7aWRlbnR9ID0gbmF0aXZlQmluZGluZy4ke2lkZW50fWApXG4gIC5qb2luKCdcXG4nKX1cbmBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVzbUJpbmRpbmcoXG4gIGxvY2FsTmFtZTogc3RyaW5nLFxuICBwa2dOYW1lOiBzdHJpbmcsXG4gIGlkZW50czogc3RyaW5nW10sXG4gIHBhY2thZ2VWZXJzaW9uPzogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke2JpbmRpbmdIZWFkZXJ9XG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSAnbm9kZTptb2R1bGUnXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpXG5jb25zdCBfX2Rpcm5hbWUgPSBuZXcgVVJMKCcuJywgaW1wb3J0Lm1ldGEudXJsKS5wYXRobmFtZVxuXG4ke2NyZWF0ZUNvbW1vbkJpbmRpbmcobG9jYWxOYW1lLCBwa2dOYW1lLCBwYWNrYWdlVmVyc2lvbil9XG5jb25zdCB7ICR7aWRlbnRzLmpvaW4oJywgJyl9IH0gPSBuYXRpdmVCaW5kaW5nXG4ke2lkZW50cy5tYXAoKGlkZW50KSA9PiBgZXhwb3J0IHsgJHtpZGVudH0gfWApLmpvaW4oJ1xcbicpfVxuYFxufVxuXG5jb25zdCBiaW5kaW5nSGVhZGVyID0gYC8vIHByZXR0aWVyLWlnbm9yZVxuLyogZXNsaW50LWRpc2FibGUgKi9cbi8vIEB0cy1ub2NoZWNrXG4vKiBhdXRvLWdlbmVyYXRlZCBieSBOQVBJLVJTICovXG5gXG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbW1vbkJpbmRpbmcoXG4gIGxvY2FsTmFtZTogc3RyaW5nLFxuICBwa2dOYW1lOiBzdHJpbmcsXG4gIHBhY2thZ2VWZXJzaW9uPzogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgZnVuY3Rpb24gcmVxdWlyZVR1cGxlKHR1cGxlOiBzdHJpbmcsIGlkZW50U2l6ZSA9IDgpIHtcbiAgICBjb25zdCBpZGVudExvdyA9ICcgJy5yZXBlYXQoaWRlbnRTaXplIC0gMilcbiAgICBjb25zdCBpZGVudCA9ICcgJy5yZXBlYXQoaWRlbnRTaXplKVxuICAgIGNvbnN0IHZlcnNpb25DaGVjayA9IHBhY2thZ2VWZXJzaW9uXG4gICAgICA/IGBcbiR7aWRlbnRMb3d9dHJ5IHtcbiR7aWRlbnR9Y29uc3QgYmluZGluZyA9IHJlcXVpcmUoJyR7cGtnTmFtZX0tJHt0dXBsZX0nKVxuJHtpZGVudH1jb25zdCBiaW5kaW5nUGFja2FnZVZlcnNpb24gPSByZXF1aXJlKCcke3BrZ05hbWV9LSR7dHVwbGV9L3BhY2thZ2UuanNvbicpLnZlcnNpb25cbiR7aWRlbnR9aWYgKGJpbmRpbmdQYWNrYWdlVmVyc2lvbiAhPT0gJyR7cGFja2FnZVZlcnNpb259JyAmJiBwcm9jZXNzLmVudi5OQVBJX1JTX0VORk9SQ0VfVkVSU0lPTl9DSEVDSyAmJiBwcm9jZXNzLmVudi5OQVBJX1JTX0VORk9SQ0VfVkVSU0lPTl9DSEVDSyAhPT0gJzAnKSB7XG4ke2lkZW50fSAgdGhyb3cgbmV3IEVycm9yKFxcYE5hdGl2ZSBiaW5kaW5nIHBhY2thZ2UgdmVyc2lvbiBtaXNtYXRjaCwgZXhwZWN0ZWQgJHtwYWNrYWdlVmVyc2lvbn0gYnV0IGdvdCBcXCR7YmluZGluZ1BhY2thZ2VWZXJzaW9ufS4gWW91IGNhbiByZWluc3RhbGwgZGVwZW5kZW5jaWVzIHRvIGZpeCB0aGlzIGlzc3VlLlxcYClcbiR7aWRlbnR9fVxuJHtpZGVudH1yZXR1cm4gYmluZGluZ1xuJHtpZGVudExvd319IGNhdGNoIChlKSB7XG4ke2lkZW50fWxvYWRFcnJvcnMucHVzaChlKVxuJHtpZGVudExvd319YFxuICAgICAgOiBgXG4ke2lkZW50TG93fXRyeSB7XG4ke2lkZW50fXJldHVybiByZXF1aXJlKCcke3BrZ05hbWV9LSR7dHVwbGV9JylcbiR7aWRlbnRMb3d9fSBjYXRjaCAoZSkge1xuJHtpZGVudH1sb2FkRXJyb3JzLnB1c2goZSlcbiR7aWRlbnRMb3d9fWBcbiAgICByZXR1cm4gYHRyeSB7XG4ke2lkZW50fXJldHVybiByZXF1aXJlKCcuLyR7bG9jYWxOYW1lfS4ke3R1cGxlfS5ub2RlJylcbiR7aWRlbnRMb3d9fSBjYXRjaCAoZSkge1xuJHtpZGVudH1sb2FkRXJyb3JzLnB1c2goZSlcbiR7aWRlbnRMb3d9fSR7dmVyc2lvbkNoZWNrfWBcbiAgfVxuXG4gIHJldHVybiBgY29uc3QgeyByZWFkRmlsZVN5bmMgfSA9IHJlcXVpcmUoJ25vZGU6ZnMnKVxubGV0IG5hdGl2ZUJpbmRpbmcgPSBudWxsXG5jb25zdCBsb2FkRXJyb3JzID0gW11cblxuY29uc3QgaXNNdXNsID0gKCkgPT4ge1xuICBsZXQgbXVzbCA9IGZhbHNlXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgbXVzbCA9IGlzTXVzbEZyb21GaWxlc3lzdGVtKClcbiAgICBpZiAobXVzbCA9PT0gbnVsbCkge1xuICAgICAgbXVzbCA9IGlzTXVzbEZyb21SZXBvcnQoKVxuICAgIH1cbiAgICBpZiAobXVzbCA9PT0gbnVsbCkge1xuICAgICAgbXVzbCA9IGlzTXVzbEZyb21DaGlsZFByb2Nlc3MoKVxuICAgIH1cbiAgfVxuICByZXR1cm4gbXVzbFxufVxuXG5jb25zdCBpc0ZpbGVNdXNsID0gKGYpID0+IGYuaW5jbHVkZXMoJ2xpYmMubXVzbC0nKSB8fCBmLmluY2x1ZGVzKCdsZC1tdXNsLScpXG5cbmNvbnN0IGlzTXVzbEZyb21GaWxlc3lzdGVtID0gKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiByZWFkRmlsZVN5bmMoJy91c3IvYmluL2xkZCcsICd1dGYtOCcpLmluY2x1ZGVzKCdtdXNsJylcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5jb25zdCBpc011c2xGcm9tUmVwb3J0ID0gKCkgPT4ge1xuICBsZXQgcmVwb3J0ID0gbnVsbFxuICBpZiAodHlwZW9mIHByb2Nlc3MucmVwb3J0Py5nZXRSZXBvcnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBwcm9jZXNzLnJlcG9ydC5leGNsdWRlTmV0d29yayA9IHRydWVcbiAgICByZXBvcnQgPSBwcm9jZXNzLnJlcG9ydC5nZXRSZXBvcnQoKVxuICB9XG4gIGlmICghcmVwb3J0KSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBpZiAocmVwb3J0LmhlYWRlciAmJiByZXBvcnQuaGVhZGVyLmdsaWJjVmVyc2lvblJ1bnRpbWUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShyZXBvcnQuc2hhcmVkT2JqZWN0cykpIHtcbiAgICBpZiAocmVwb3J0LnNoYXJlZE9iamVjdHMuc29tZShpc0ZpbGVNdXNsKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmNvbnN0IGlzTXVzbEZyb21DaGlsZFByb2Nlc3MgPSAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5leGVjU3luYygnbGRkIC0tdmVyc2lvbicsIHsgZW5jb2Rpbmc6ICd1dGY4JyB9KS5pbmNsdWRlcygnbXVzbCcpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBJZiB3ZSByZWFjaCB0aGlzIGNhc2UsIHdlIGRvbid0IGtub3cgaWYgdGhlIHN5c3RlbSBpcyBtdXNsIG9yIG5vdCwgc28gaXMgYmV0dGVyIHRvIGp1c3QgZmFsbGJhY2sgdG8gZmFsc2VcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiByZXF1aXJlTmF0aXZlKCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTkFQSV9SU19OQVRJVkVfTElCUkFSWV9QQVRIKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiByZXF1aXJlKHByb2Nlc3MuZW52Lk5BUElfUlNfTkFUSVZFX0xJQlJBUllfUEFUSCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2FkRXJyb3JzLnB1c2goZXJyKVxuICAgIH1cbiAgfSBlbHNlIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnYW5kcm9pZCcpIHtcbiAgICBpZiAocHJvY2Vzcy5hcmNoID09PSAnYXJtNjQnKSB7XG4gICAgICAke3JlcXVpcmVUdXBsZSgnYW5kcm9pZC1hcm02NCcpfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnYXJtJykge1xuICAgICAgJHtyZXF1aXJlVHVwbGUoJ2FuZHJvaWQtYXJtLWVhYmknKX1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZEVycm9ycy5wdXNoKG5ldyBFcnJvcihcXGBVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUgb24gQW5kcm9pZCBcXCR7cHJvY2Vzcy5hcmNofVxcYCkpXG4gICAgfVxuICB9IGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICBpZiAocHJvY2Vzcy5hcmNoID09PSAneDY0Jykge1xuICAgICAgaWYgKHByb2Nlc3MuY29uZmlnPy52YXJpYWJsZXM/LnNobGliX3N1ZmZpeCA9PT0gJ2RsbC5hJyB8fCBwcm9jZXNzLmNvbmZpZz8udmFyaWFibGVzPy5ub2RlX3RhcmdldF90eXBlID09PSAnc2hhcmVkX2xpYnJhcnknKSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCd3aW4zMi14NjQtZ251Jyl9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAke3JlcXVpcmVUdXBsZSgnd2luMzIteDY0LW1zdmMnKX1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ2lhMzInKSB7XG4gICAgICAke3JlcXVpcmVUdXBsZSgnd2luMzItaWEzMi1tc3ZjJyl9XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmFyY2ggPT09ICdhcm02NCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCd3aW4zMi1hcm02NC1tc3ZjJyl9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvYWRFcnJvcnMucHVzaChuZXcgRXJyb3IoXFxgVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIG9uIFdpbmRvd3M6IFxcJHtwcm9jZXNzLmFyY2h9XFxgKSlcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAke3JlcXVpcmVUdXBsZSgnZGFyd2luLXVuaXZlcnNhbCcsIDYpfVxuICAgIGlmIChwcm9jZXNzLmFyY2ggPT09ICd4NjQnKSB7XG4gICAgICAke3JlcXVpcmVUdXBsZSgnZGFyd2luLXg2NCcpfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnYXJtNjQnKSB7XG4gICAgICAke3JlcXVpcmVUdXBsZSgnZGFyd2luLWFybTY0Jyl9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvYWRFcnJvcnMucHVzaChuZXcgRXJyb3IoXFxgVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIG9uIG1hY09TOiBcXCR7cHJvY2Vzcy5hcmNofVxcYCkpXG4gICAgfVxuICB9IGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdmcmVlYnNkJykge1xuICAgIGlmIChwcm9jZXNzLmFyY2ggPT09ICd4NjQnKSB7XG4gICAgICAke3JlcXVpcmVUdXBsZSgnZnJlZWJzZC14NjQnKX1cbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ2FybTY0Jykge1xuICAgICAgJHtyZXF1aXJlVHVwbGUoJ2ZyZWVic2QtYXJtNjQnKX1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZEVycm9ycy5wdXNoKG5ldyBFcnJvcihcXGBVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUgb24gRnJlZUJTRDogXFwke3Byb2Nlc3MuYXJjaH1cXGApKVxuICAgIH1cbiAgfSBlbHNlIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ3g2NCcpIHtcbiAgICAgIGlmIChpc011c2woKSkge1xuICAgICAgICAke3JlcXVpcmVUdXBsZSgnbGludXgteDY0LW11c2wnLCAxMCl9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAke3JlcXVpcmVUdXBsZSgnbGludXgteDY0LWdudScsIDEwKX1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ2FybTY0Jykge1xuICAgICAgaWYgKGlzTXVzbCgpKSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCdsaW51eC1hcm02NC1tdXNsJywgMTApfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJHtyZXF1aXJlVHVwbGUoJ2xpbnV4LWFybTY0LWdudScsIDEwKX1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ2FybScpIHtcbiAgICAgIGlmIChpc011c2woKSkge1xuICAgICAgICAke3JlcXVpcmVUdXBsZSgnbGludXgtYXJtLW11c2xlYWJpaGYnLCAxMCl9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAke3JlcXVpcmVUdXBsZSgnbGludXgtYXJtLWdudWVhYmloZicsIDEwKX1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ2xvb25nNjQnKSB7XG4gICAgICBpZiAoaXNNdXNsKCkpIHtcbiAgICAgICAgJHtyZXF1aXJlVHVwbGUoJ2xpbnV4LWxvb25nNjQtbXVzbCcsIDEwKX1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCdsaW51eC1sb29uZzY0LWdudScsIDEwKX1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ3Jpc2N2NjQnKSB7XG4gICAgICBpZiAoaXNNdXNsKCkpIHtcbiAgICAgICAgJHtyZXF1aXJlVHVwbGUoJ2xpbnV4LXJpc2N2NjQtbXVzbCcsIDEwKX1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICR7cmVxdWlyZVR1cGxlKCdsaW51eC1yaXNjdjY0LWdudScsIDEwKX1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ3BwYzY0Jykge1xuICAgICAgJHtyZXF1aXJlVHVwbGUoJ2xpbnV4LXBwYzY0LWdudScpfVxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSAnczM5MHgnKSB7XG4gICAgICAke3JlcXVpcmVUdXBsZSgnbGludXgtczM5MHgtZ251Jyl9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvYWRFcnJvcnMucHVzaChuZXcgRXJyb3IoXFxgVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIG9uIExpbnV4OiBcXCR7cHJvY2Vzcy5hcmNofVxcYCkpXG4gICAgfVxuICB9IGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdvcGVuaGFybW9ueScpIHtcbiAgICBpZiAocHJvY2Vzcy5hcmNoID09PSAnYXJtNjQnKSB7XG4gICAgICAke3JlcXVpcmVUdXBsZSgnb3Blbmhhcm1vbnktYXJtNjQnKX1cbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ3g2NCcpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdvcGVuaGFybW9ueS14NjQnKX1cbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuYXJjaCA9PT0gJ2FybScpIHtcbiAgICAgICR7cmVxdWlyZVR1cGxlKCdvcGVuaGFybW9ueS1hcm0nKX1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZEVycm9ycy5wdXNoKG5ldyBFcnJvcihcXGBVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUgb24gT3Blbkhhcm1vbnk6IFxcJHtwcm9jZXNzLmFyY2h9XFxgKSlcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbG9hZEVycm9ycy5wdXNoKG5ldyBFcnJvcihcXGBVbnN1cHBvcnRlZCBPUzogXFwke3Byb2Nlc3MucGxhdGZvcm19LCBhcmNoaXRlY3R1cmU6IFxcJHtwcm9jZXNzLmFyY2h9XFxgKSlcbiAgfVxufVxuXG5uYXRpdmVCaW5kaW5nID0gcmVxdWlyZU5hdGl2ZSgpXG5cbmlmICghbmF0aXZlQmluZGluZyB8fCBwcm9jZXNzLmVudi5OQVBJX1JTX0ZPUkNFX1dBU0kpIHtcbiAgbGV0IHdhc2lCaW5kaW5nID0gbnVsbFxuICBsZXQgd2FzaUJpbmRpbmdFcnJvciA9IG51bGxcbiAgdHJ5IHtcbiAgICB3YXNpQmluZGluZyA9IHJlcXVpcmUoJy4vJHtsb2NhbE5hbWV9Lndhc2kuY2pzJylcbiAgICBuYXRpdmVCaW5kaW5nID0gd2FzaUJpbmRpbmdcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5BUElfUlNfRk9SQ0VfV0FTSSkge1xuICAgICAgd2FzaUJpbmRpbmdFcnJvciA9IGVyclxuICAgIH1cbiAgfVxuICBpZiAoIW5hdGl2ZUJpbmRpbmcgfHwgcHJvY2Vzcy5lbnYuTkFQSV9SU19GT1JDRV9XQVNJKSB7XG4gICAgdHJ5IHtcbiAgICAgIHdhc2lCaW5kaW5nID0gcmVxdWlyZSgnJHtwa2dOYW1lfS13YXNtMzItd2FzaScpXG4gICAgICBuYXRpdmVCaW5kaW5nID0gd2FzaUJpbmRpbmdcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OQVBJX1JTX0ZPUkNFX1dBU0kpIHtcbiAgICAgICAgaWYgKCF3YXNpQmluZGluZ0Vycm9yKSB7XG4gICAgICAgICAgd2FzaUJpbmRpbmdFcnJvciA9IGVyclxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdhc2lCaW5kaW5nRXJyb3IuY2F1c2UgPSBlcnJcbiAgICAgICAgfVxuICAgICAgICBsb2FkRXJyb3JzLnB1c2goZXJyKVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTkFQSV9SU19GT1JDRV9XQVNJID09PSAnZXJyb3InICYmICF3YXNpQmluZGluZykge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdXQVNJIGJpbmRpbmcgbm90IGZvdW5kIGFuZCBOQVBJX1JTX0ZPUkNFX1dBU0kgaXMgc2V0IHRvIGVycm9yJylcbiAgICBlcnJvci5jYXVzZSA9IHdhc2lCaW5kaW5nRXJyb3JcbiAgICB0aHJvdyBlcnJvclxuICB9XG59XG5cbmlmICghbmF0aXZlQmluZGluZykge1xuICBpZiAobG9hZEVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXFxgQ2Fubm90IGZpbmQgbmF0aXZlIGJpbmRpbmcuIFxcYCArXG4gICAgICAgIFxcYG5wbSBoYXMgYSBidWcgcmVsYXRlZCB0byBvcHRpb25hbCBkZXBlbmRlbmNpZXMgKGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vY2xpL2lzc3Vlcy80ODI4KS4gXFxgICtcbiAgICAgICAgJ1BsZWFzZSB0cnkgXFxgbnBtIGlcXGAgYWdhaW4gYWZ0ZXIgcmVtb3ZpbmcgYm90aCBwYWNrYWdlLWxvY2suanNvbiBhbmQgbm9kZV9tb2R1bGVzIGRpcmVjdG9yeS4nLFxuICAgICAge1xuICAgICAgICBjYXVzZTogbG9hZEVycm9ycy5yZWR1Y2UoKGVyciwgY3VyKSA9PiB7XG4gICAgICAgICAgY3VyLmNhdXNlID0gZXJyXG4gICAgICAgICAgcmV0dXJuIGN1clxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgKVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihcXGBGYWlsZWQgdG8gbG9hZCBuYXRpdmUgYmluZGluZ1xcYClcbn1cbmBcbn1cbiIsImV4cG9ydCBjb25zdCBjcmVhdGVXYXNpQnJvd3NlckJpbmRpbmcgPSAoXG4gIHdhc2lGaWxlbmFtZTogc3RyaW5nLFxuICBpbml0aWFsTWVtb3J5ID0gNDAwMCxcbiAgbWF4aW11bU1lbW9yeSA9IDY1NTM2LFxuICBmcyA9IGZhbHNlLFxuICBhc3luY0luaXQgPSBmYWxzZSxcbiAgYnVmZmVyID0gZmFsc2UsXG4pID0+IHtcbiAgY29uc3QgZnNJbXBvcnQgPSBmc1xuICAgID8gYnVmZmVyXG4gICAgICA/IGBpbXBvcnQgeyBtZW1mcywgQnVmZmVyIH0gZnJvbSAnQG5hcGktcnMvd2FzbS1ydW50aW1lL2ZzJ2BcbiAgICAgIDogYGltcG9ydCB7IG1lbWZzIH0gZnJvbSAnQG5hcGktcnMvd2FzbS1ydW50aW1lL2ZzJ2BcbiAgICA6ICcnXG4gIGNvbnN0IGJ1ZmZlckltcG9ydCA9IGJ1ZmZlciAmJiAhZnMgPyBgaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJ2AgOiAnJ1xuICBjb25zdCB3YXNpQ3JlYXRpb24gPSBmc1xuICAgID8gYFxuZXhwb3J0IGNvbnN0IHsgZnM6IF9fZnMsIHZvbDogX192b2x1bWUgfSA9IG1lbWZzKClcblxuY29uc3QgX193YXNpID0gbmV3IF9fV0FTSSh7XG4gIHZlcnNpb246ICdwcmV2aWV3MScsXG4gIGZzOiBfX2ZzLFxuICBwcmVvcGVuczoge1xuICAgICcvJzogJy8nLFxuICB9LFxufSlgXG4gICAgOiBgXG5jb25zdCBfX3dhc2kgPSBuZXcgX19XQVNJKHtcbiAgdmVyc2lvbjogJ3ByZXZpZXcxJyxcbn0pYFxuXG4gIGNvbnN0IHdvcmtlckZzSGFuZGxlciA9IGZzXG4gICAgPyBgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgX193YXNtQ3JlYXRlT25NZXNzYWdlRm9yRnNQcm94eShfX2ZzKSlcXG5gXG4gICAgOiAnJ1xuXG4gIGNvbnN0IGVtbmFwaUluamVjdEJ1ZmZlciA9IGJ1ZmZlclxuICAgID8gJ19fZW1uYXBpQ29udGV4dC5mZWF0dXJlLkJ1ZmZlciA9IEJ1ZmZlcidcbiAgICA6ICcnXG4gIGNvbnN0IGVtbmFwaUluc3RhbnRpYXRlSW1wb3J0ID0gYXN5bmNJbml0XG4gICAgPyBgaW5zdGFudGlhdGVOYXBpTW9kdWxlIGFzIF9fZW1uYXBpSW5zdGFudGlhdGVOYXBpTW9kdWxlYFxuICAgIDogYGluc3RhbnRpYXRlTmFwaU1vZHVsZVN5bmMgYXMgX19lbW5hcGlJbnN0YW50aWF0ZU5hcGlNb2R1bGVTeW5jYFxuICBjb25zdCBlbW5hcGlJbnN0YW50aWF0ZUNhbGwgPSBhc3luY0luaXRcbiAgICA/IGBhd2FpdCBfX2VtbmFwaUluc3RhbnRpYXRlTmFwaU1vZHVsZWBcbiAgICA6IGBfX2VtbmFwaUluc3RhbnRpYXRlTmFwaU1vZHVsZVN5bmNgXG5cbiAgcmV0dXJuIGBpbXBvcnQge1xuICBjcmVhdGVPbk1lc3NhZ2UgYXMgX193YXNtQ3JlYXRlT25NZXNzYWdlRm9yRnNQcm94eSxcbiAgZ2V0RGVmYXVsdENvbnRleHQgYXMgX19lbW5hcGlHZXREZWZhdWx0Q29udGV4dCxcbiAgJHtlbW5hcGlJbnN0YW50aWF0ZUltcG9ydH0sXG4gIFdBU0kgYXMgX19XQVNJLFxufSBmcm9tICdAbmFwaS1ycy93YXNtLXJ1bnRpbWUnXG4ke2ZzSW1wb3J0fVxuJHtidWZmZXJJbXBvcnR9XG4ke3dhc2lDcmVhdGlvbn1cblxuY29uc3QgX193YXNtVXJsID0gbmV3IFVSTCgnLi8ke3dhc2lGaWxlbmFtZX0ud2FzbScsIGltcG9ydC5tZXRhLnVybCkuaHJlZlxuY29uc3QgX19lbW5hcGlDb250ZXh0ID0gX19lbW5hcGlHZXREZWZhdWx0Q29udGV4dCgpXG4ke2VtbmFwaUluamVjdEJ1ZmZlcn1cblxuY29uc3QgX19zaGFyZWRNZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtcbiAgaW5pdGlhbDogJHtpbml0aWFsTWVtb3J5fSxcbiAgbWF4aW11bTogJHttYXhpbXVtTWVtb3J5fSxcbiAgc2hhcmVkOiB0cnVlLFxufSlcblxuY29uc3QgX193YXNtRmlsZSA9IGF3YWl0IGZldGNoKF9fd2FzbVVybCkudGhlbigocmVzKSA9PiByZXMuYXJyYXlCdWZmZXIoKSlcblxuY29uc3Qge1xuICBpbnN0YW5jZTogX19uYXBpSW5zdGFuY2UsXG4gIG1vZHVsZTogX193YXNpTW9kdWxlLFxuICBuYXBpTW9kdWxlOiBfX25hcGlNb2R1bGUsXG59ID0gJHtlbW5hcGlJbnN0YW50aWF0ZUNhbGx9KF9fd2FzbUZpbGUsIHtcbiAgY29udGV4dDogX19lbW5hcGlDb250ZXh0LFxuICBhc3luY1dvcmtQb29sU2l6ZTogNCxcbiAgd2FzaTogX193YXNpLFxuICBvbkNyZWF0ZVdvcmtlcigpIHtcbiAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKG5ldyBVUkwoJy4vd2FzaS13b3JrZXItYnJvd3Nlci5tanMnLCBpbXBvcnQubWV0YS51cmwpLCB7XG4gICAgICB0eXBlOiAnbW9kdWxlJyxcbiAgICB9KVxuJHt3b3JrZXJGc0hhbmRsZXJ9XG4gICAgcmV0dXJuIHdvcmtlclxuICB9LFxuICBvdmVyd3JpdGVJbXBvcnRzKGltcG9ydE9iamVjdCkge1xuICAgIGltcG9ydE9iamVjdC5lbnYgPSB7XG4gICAgICAuLi5pbXBvcnRPYmplY3QuZW52LFxuICAgICAgLi4uaW1wb3J0T2JqZWN0Lm5hcGksXG4gICAgICAuLi5pbXBvcnRPYmplY3QuZW1uYXBpLFxuICAgICAgbWVtb3J5OiBfX3NoYXJlZE1lbW9yeSxcbiAgICB9XG4gICAgcmV0dXJuIGltcG9ydE9iamVjdFxuICB9LFxuICBiZWZvcmVJbml0KHsgaW5zdGFuY2UgfSkge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhpbnN0YW5jZS5leHBvcnRzKSkge1xuICAgICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnX19uYXBpX3JlZ2lzdGVyX18nKSkge1xuICAgICAgICBpbnN0YW5jZS5leHBvcnRzW25hbWVdKClcbiAgICAgIH1cbiAgICB9XG4gIH0sXG59KVxuYFxufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlV2FzaUJpbmRpbmcgPSAoXG4gIHdhc21GaWxlTmFtZTogc3RyaW5nLFxuICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICBpbml0aWFsTWVtb3J5ID0gNDAwMCxcbiAgbWF4aW11bU1lbW9yeSA9IDY1NTM2LFxuKSA9PiBgLyogZXNsaW50LWRpc2FibGUgKi9cbi8qIHByZXR0aWVyLWlnbm9yZSAqL1xuXG4vKiBhdXRvLWdlbmVyYXRlZCBieSBOQVBJLVJTICovXG5cbmNvbnN0IF9fbm9kZUZzID0gcmVxdWlyZSgnbm9kZTpmcycpXG5jb25zdCBfX25vZGVQYXRoID0gcmVxdWlyZSgnbm9kZTpwYXRoJylcbmNvbnN0IHsgV0FTSTogX19ub2RlV0FTSSB9ID0gcmVxdWlyZSgnbm9kZTp3YXNpJylcbmNvbnN0IHsgV29ya2VyIH0gPSByZXF1aXJlKCdub2RlOndvcmtlcl90aHJlYWRzJylcblxuY29uc3Qge1xuICBjcmVhdGVPbk1lc3NhZ2U6IF9fd2FzbUNyZWF0ZU9uTWVzc2FnZUZvckZzUHJveHksXG4gIGdldERlZmF1bHRDb250ZXh0OiBfX2VtbmFwaUdldERlZmF1bHRDb250ZXh0LFxuICBpbnN0YW50aWF0ZU5hcGlNb2R1bGVTeW5jOiBfX2VtbmFwaUluc3RhbnRpYXRlTmFwaU1vZHVsZVN5bmMsXG59ID0gcmVxdWlyZSgnQG5hcGktcnMvd2FzbS1ydW50aW1lJylcblxuY29uc3QgX19yb290RGlyID0gX19ub2RlUGF0aC5wYXJzZShwcm9jZXNzLmN3ZCgpKS5yb290XG5cbmNvbnN0IF9fd2FzaSA9IG5ldyBfX25vZGVXQVNJKHtcbiAgdmVyc2lvbjogJ3ByZXZpZXcxJyxcbiAgZW52OiBwcm9jZXNzLmVudixcbiAgcHJlb3BlbnM6IHtcbiAgICBbX19yb290RGlyXTogX19yb290RGlyLFxuICB9XG59KVxuXG5jb25zdCBfX2VtbmFwaUNvbnRleHQgPSBfX2VtbmFwaUdldERlZmF1bHRDb250ZXh0KClcblxuY29uc3QgX19zaGFyZWRNZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtcbiAgaW5pdGlhbDogJHtpbml0aWFsTWVtb3J5fSxcbiAgbWF4aW11bTogJHttYXhpbXVtTWVtb3J5fSxcbiAgc2hhcmVkOiB0cnVlLFxufSlcblxubGV0IF9fd2FzbUZpbGVQYXRoID0gX19ub2RlUGF0aC5qb2luKF9fZGlybmFtZSwgJyR7d2FzbUZpbGVOYW1lfS53YXNtJylcbmNvbnN0IF9fd2FzbURlYnVnRmlsZVBhdGggPSBfX25vZGVQYXRoLmpvaW4oX19kaXJuYW1lLCAnJHt3YXNtRmlsZU5hbWV9LmRlYnVnLndhc20nKVxuXG5pZiAoX19ub2RlRnMuZXhpc3RzU3luYyhfX3dhc21EZWJ1Z0ZpbGVQYXRoKSkge1xuICBfX3dhc21GaWxlUGF0aCA9IF9fd2FzbURlYnVnRmlsZVBhdGhcbn0gZWxzZSBpZiAoIV9fbm9kZUZzLmV4aXN0c1N5bmMoX193YXNtRmlsZVBhdGgpKSB7XG4gIHRyeSB7XG4gICAgX193YXNtRmlsZVBhdGggPSByZXF1aXJlLnJlc29sdmUoJyR7cGFja2FnZU5hbWV9LXdhc20zMi13YXNpLyR7d2FzbUZpbGVOYW1lfS53YXNtJylcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmluZCAke3dhc21GaWxlTmFtZX0ud2FzbSBmaWxlLCBhbmQgJHtwYWNrYWdlTmFtZX0td2FzbTMyLXdhc2kgcGFja2FnZSBpcyBub3QgaW5zdGFsbGVkLicpXG4gIH1cbn1cblxuY29uc3QgeyBpbnN0YW5jZTogX19uYXBpSW5zdGFuY2UsIG1vZHVsZTogX193YXNpTW9kdWxlLCBuYXBpTW9kdWxlOiBfX25hcGlNb2R1bGUgfSA9IF9fZW1uYXBpSW5zdGFudGlhdGVOYXBpTW9kdWxlU3luYyhfX25vZGVGcy5yZWFkRmlsZVN5bmMoX193YXNtRmlsZVBhdGgpLCB7XG4gIGNvbnRleHQ6IF9fZW1uYXBpQ29udGV4dCxcbiAgYXN5bmNXb3JrUG9vbFNpemU6IChmdW5jdGlvbigpIHtcbiAgICBjb25zdCB0aHJlYWRzU2l6ZUZyb21FbnYgPSBOdW1iZXIocHJvY2Vzcy5lbnYuTkFQSV9SU19BU1lOQ19XT1JLX1BPT0xfU0laRSA/PyBwcm9jZXNzLmVudi5VVl9USFJFQURQT09MX1NJWkUpXG4gICAgLy8gTmFOID4gMCBpcyBmYWxzZVxuICAgIGlmICh0aHJlYWRzU2l6ZUZyb21FbnYgPiAwKSB7XG4gICAgICByZXR1cm4gdGhyZWFkc1NpemVGcm9tRW52XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA0XG4gICAgfVxuICB9KSgpLFxuICByZXVzZVdvcmtlcjogdHJ1ZSxcbiAgd2FzaTogX193YXNpLFxuICBvbkNyZWF0ZVdvcmtlcigpIHtcbiAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKF9fbm9kZVBhdGguam9pbihfX2Rpcm5hbWUsICd3YXNpLXdvcmtlci5tanMnKSwge1xuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICB9KVxuICAgIHdvcmtlci5vbm1lc3NhZ2UgPSAoeyBkYXRhIH0pID0+IHtcbiAgICAgIF9fd2FzbUNyZWF0ZU9uTWVzc2FnZUZvckZzUHJveHkoX19ub2RlRnMpKGRhdGEpXG4gICAgfVxuXG4gICAgLy8gVGhlIG1haW4gdGhyZWFkIG9mIE5vZGUuanMgd2FpdHMgZm9yIGFsbCB0aGUgYWN0aXZlIGhhbmRsZXMgYmVmb3JlIGV4aXRpbmcuXG4gICAgLy8gQnV0IFJ1c3QgdGhyZWFkcyBhcmUgbmV2ZXIgd2FpdGVkIHdpdGhvdXQgXFxgdGhyZWFkOjpqb2luXFxgLlxuICAgIC8vIFNvIGhlcmUgd2UgaGFjayB0aGUgY29kZSBvZiBOb2RlLmpzIHRvIHByZXZlbnQgdGhlIHdvcmtlcnMgZnJvbSBiZWluZyByZWZlcmVuY2VkIChhY3RpdmUpLlxuICAgIC8vIEFjY29yZGluZyB0byBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi8xOWUwZDQ3MjcyOGM3OWQ0MThiNzRiZGRmZjU4OGJlYTcwYTQwM2QwL2xpYi9pbnRlcm5hbC93b3JrZXIuanMjTDQxNSxcbiAgICAvLyBhIHdvcmtlciBpcyBjb25zaXN0IG9mIHR3byBoYW5kbGVzOiBrUHVibGljUG9ydCBhbmQga0hhbmRsZS5cbiAgICB7XG4gICAgICBjb25zdCBrUHVibGljUG9ydCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMod29ya2VyKS5maW5kKHMgPT5cbiAgICAgICAgcy50b1N0cmluZygpLmluY2x1ZGVzKFwia1B1YmxpY1BvcnRcIilcbiAgICAgICk7XG4gICAgICBpZiAoa1B1YmxpY1BvcnQpIHtcbiAgICAgICAgd29ya2VyW2tQdWJsaWNQb3J0XS5yZWYgPSAoKSA9PiB7fTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qga0hhbmRsZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMod29ya2VyKS5maW5kKHMgPT5cbiAgICAgICAgcy50b1N0cmluZygpLmluY2x1ZGVzKFwia0hhbmRsZVwiKVxuICAgICAgKTtcbiAgICAgIGlmIChrSGFuZGxlKSB7XG4gICAgICAgIHdvcmtlcltrSGFuZGxlXS5yZWYgPSAoKSA9PiB7fTtcbiAgICAgIH1cblxuICAgICAgd29ya2VyLnVucmVmKCk7XG4gICAgfVxuICAgIHJldHVybiB3b3JrZXJcbiAgfSxcbiAgb3ZlcndyaXRlSW1wb3J0cyhpbXBvcnRPYmplY3QpIHtcbiAgICBpbXBvcnRPYmplY3QuZW52ID0ge1xuICAgICAgLi4uaW1wb3J0T2JqZWN0LmVudixcbiAgICAgIC4uLmltcG9ydE9iamVjdC5uYXBpLFxuICAgICAgLi4uaW1wb3J0T2JqZWN0LmVtbmFwaSxcbiAgICAgIG1lbW9yeTogX19zaGFyZWRNZW1vcnksXG4gICAgfVxuICAgIHJldHVybiBpbXBvcnRPYmplY3RcbiAgfSxcbiAgYmVmb3JlSW5pdCh7IGluc3RhbmNlIH0pIHtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoaW5zdGFuY2UuZXhwb3J0cykpIHtcbiAgICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoJ19fbmFwaV9yZWdpc3Rlcl9fJykpIHtcbiAgICAgICAgaW5zdGFuY2UuZXhwb3J0c1tuYW1lXSgpXG4gICAgICB9XG4gICAgfVxuICB9LFxufSlcbmBcbiIsImV4cG9ydCBjb25zdCBXQVNJX1dPUktFUl9URU1QTEFURSA9IGBpbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgV0FTSSB9IGZyb20gXCJub2RlOndhc2lcIjtcbmltcG9ydCB7IHBhcmVudFBvcnQsIFdvcmtlciB9IGZyb20gXCJub2RlOndvcmtlcl90aHJlYWRzXCI7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbmNvbnN0IHsgaW5zdGFudGlhdGVOYXBpTW9kdWxlU3luYywgTWVzc2FnZUhhbmRsZXIsIGdldERlZmF1bHRDb250ZXh0IH0gPSByZXF1aXJlKFwiQG5hcGktcnMvd2FzbS1ydW50aW1lXCIpO1xuXG5pZiAocGFyZW50UG9ydCkge1xuICBwYXJlbnRQb3J0Lm9uKFwibWVzc2FnZVwiLCAoZGF0YSkgPT4ge1xuICAgIGdsb2JhbFRoaXMub25tZXNzYWdlKHsgZGF0YSB9KTtcbiAgfSk7XG59XG5cbk9iamVjdC5hc3NpZ24oZ2xvYmFsVGhpcywge1xuICBzZWxmOiBnbG9iYWxUaGlzLFxuICByZXF1aXJlLFxuICBXb3JrZXIsXG4gIGltcG9ydFNjcmlwdHM6IGZ1bmN0aW9uIChmKSB7XG4gICAgOygwLCBldmFsKShmcy5yZWFkRmlsZVN5bmMoZiwgXCJ1dGY4XCIpICsgXCIvLyMgc291cmNlVVJMPVwiICsgZik7XG4gIH0sXG4gIHBvc3RNZXNzYWdlOiBmdW5jdGlvbiAobXNnKSB7XG4gICAgaWYgKHBhcmVudFBvcnQpIHtcbiAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UobXNnKTtcbiAgICB9XG4gIH0sXG59KTtcblxuY29uc3QgZW1uYXBpQ29udGV4dCA9IGdldERlZmF1bHRDb250ZXh0KCk7XG5cbmNvbnN0IF9fcm9vdERpciA9IHBhcnNlKHByb2Nlc3MuY3dkKCkpLnJvb3Q7XG5cbmNvbnN0IGhhbmRsZXIgPSBuZXcgTWVzc2FnZUhhbmRsZXIoe1xuICBvbkxvYWQoeyB3YXNtTW9kdWxlLCB3YXNtTWVtb3J5IH0pIHtcbiAgICBjb25zdCB3YXNpID0gbmV3IFdBU0koe1xuICAgICAgdmVyc2lvbjogJ3ByZXZpZXcxJyxcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBwcmVvcGVuczoge1xuICAgICAgICBbX19yb290RGlyXTogX19yb290RGlyLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBpbnN0YW50aWF0ZU5hcGlNb2R1bGVTeW5jKHdhc21Nb2R1bGUsIHtcbiAgICAgIGNoaWxkVGhyZWFkOiB0cnVlLFxuICAgICAgd2FzaSxcbiAgICAgIGNvbnRleHQ6IGVtbmFwaUNvbnRleHQsXG4gICAgICBvdmVyd3JpdGVJbXBvcnRzKGltcG9ydE9iamVjdCkge1xuICAgICAgICBpbXBvcnRPYmplY3QuZW52ID0ge1xuICAgICAgICAgIC4uLmltcG9ydE9iamVjdC5lbnYsXG4gICAgICAgICAgLi4uaW1wb3J0T2JqZWN0Lm5hcGksXG4gICAgICAgICAgLi4uaW1wb3J0T2JqZWN0LmVtbmFwaSxcbiAgICAgICAgICBtZW1vcnk6IHdhc21NZW1vcnlcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0sXG59KTtcblxuZ2xvYmFsVGhpcy5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkge1xuICBoYW5kbGVyLmhhbmRsZShlKTtcbn07XG5gXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVXYXNpQnJvd3NlcldvcmtlckJpbmRpbmcgPSAoZnM6IGJvb2xlYW4pID0+IHtcbiAgY29uc3QgZnNJbXBvcnQgPSBmc1xuICAgID8gYGltcG9ydCB7IGluc3RhbnRpYXRlTmFwaU1vZHVsZVN5bmMsIE1lc3NhZ2VIYW5kbGVyLCBXQVNJLCBjcmVhdGVGc1Byb3h5IH0gZnJvbSAnQG5hcGktcnMvd2FzbS1ydW50aW1lJ1xuaW1wb3J0IHsgbWVtZnNFeHBvcnRlZCBhcyBfX21lbWZzRXhwb3J0ZWQgfSBmcm9tICdAbmFwaS1ycy93YXNtLXJ1bnRpbWUvZnMnXG5cbmNvbnN0IGZzID0gY3JlYXRlRnNQcm94eShfX21lbWZzRXhwb3J0ZWQpYFxuICAgIDogYGltcG9ydCB7IGluc3RhbnRpYXRlTmFwaU1vZHVsZVN5bmMsIE1lc3NhZ2VIYW5kbGVyLCBXQVNJIH0gZnJvbSAnQG5hcGktcnMvd2FzbS1ydW50aW1lJ2BcbiAgY29uc3Qgd2FzaUNyZWF0aW9uID0gZnNcbiAgICA/IGBjb25zdCB3YXNpID0gbmV3IFdBU0koe1xuICAgICAgZnMsXG4gICAgICBwcmVvcGVuczoge1xuICAgICAgICAnLyc6ICcvJyxcbiAgICAgIH0sXG4gICAgICBwcmludDogZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmxvZy5hcHBseShjb25zb2xlLCBhcmd1bWVudHMpXG4gICAgICB9LFxuICAgICAgcHJpbnRFcnI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yLmFwcGx5KGNvbnNvbGUsIGFyZ3VtZW50cylcbiAgICAgIH0sXG4gICAgfSlgXG4gICAgOiBgY29uc3Qgd2FzaSA9IG5ldyBXQVNJKHtcbiAgICAgIHByaW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUubG9nLmFwcGx5KGNvbnNvbGUsIGFyZ3VtZW50cylcbiAgICAgIH0sXG4gICAgICBwcmludEVycjogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKVxuICAgICAgfSxcbiAgICB9KWBcbiAgcmV0dXJuIGAke2ZzSW1wb3J0fVxuXG5jb25zdCBoYW5kbGVyID0gbmV3IE1lc3NhZ2VIYW5kbGVyKHtcbiAgb25Mb2FkKHsgd2FzbU1vZHVsZSwgd2FzbU1lbW9yeSB9KSB7XG4gICAgJHt3YXNpQ3JlYXRpb259XG4gICAgcmV0dXJuIGluc3RhbnRpYXRlTmFwaU1vZHVsZVN5bmMod2FzbU1vZHVsZSwge1xuICAgICAgY2hpbGRUaHJlYWQ6IHRydWUsXG4gICAgICB3YXNpLFxuICAgICAgb3ZlcndyaXRlSW1wb3J0cyhpbXBvcnRPYmplY3QpIHtcbiAgICAgICAgaW1wb3J0T2JqZWN0LmVudiA9IHtcbiAgICAgICAgICAuLi5pbXBvcnRPYmplY3QuZW52LFxuICAgICAgICAgIC4uLmltcG9ydE9iamVjdC5uYXBpLFxuICAgICAgICAgIC4uLmltcG9ydE9iamVjdC5lbW5hcGksXG4gICAgICAgICAgbWVtb3J5OiB3YXNtTWVtb3J5LFxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pXG4gIH0sXG59KVxuXG5nbG9iYWxUaGlzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7XG4gIGhhbmRsZXIuaGFuZGxlKGUpXG59XG5gXG59XG4iLCJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdub2RlOmNyeXB0bydcbmltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYywgcm1TeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tICdub2RlOm1vZHVsZSdcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJ1xuaW1wb3J0IHsgcGFyc2UsIGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmltcG9ydCAqIGFzIGNvbG9ycyBmcm9tICdjb2xvcmV0dGUnXG5cbmltcG9ydCB0eXBlIHsgQnVpbGRPcHRpb25zIGFzIFJhd0J1aWxkT3B0aW9ucyB9IGZyb20gJy4uL2RlZi9idWlsZC5qcydcbmltcG9ydCB7XG4gIENMSV9WRVJTSU9OLFxuICBjb3B5RmlsZUFzeW5jLFxuICB0eXBlIENyYXRlLFxuICBkZWJ1Z0ZhY3RvcnksXG4gIERFRkFVTFRfVFlQRV9ERUZfSEVBREVSLFxuICBmaWxlRXhpc3RzLFxuICBnZXRTeXN0ZW1EZWZhdWx0VGFyZ2V0LFxuICBnZXRUYXJnZXRMaW5rZXIsXG4gIG1rZGlyQXN5bmMsXG4gIHR5cGUgTmFwaUNvbmZpZyxcbiAgcGFyc2VNZXRhZGF0YSxcbiAgcGFyc2VUcmlwbGUsXG4gIHByb2Nlc3NUeXBlRGVmLFxuICByZWFkRmlsZUFzeW5jLFxuICByZWFkTmFwaUNvbmZpZyxcbiAgdHlwZSBUYXJnZXQsXG4gIHRhcmdldFRvRW52VmFyLFxuICB0cnlJbnN0YWxsQ2FyZ29CaW5hcnksXG4gIHVubGlua0FzeW5jLFxuICB3cml0ZUZpbGVBc3luYyxcbiAgZGlyRXhpc3RzQXN5bmMsXG4gIHJlYWRkaXJBc3luYyxcbiAgdHlwZSBDYXJnb1dvcmtzcGFjZU1ldGFkYXRhLFxufSBmcm9tICcuLi91dGlscy9pbmRleC5qcydcblxuaW1wb3J0IHsgY3JlYXRlQ2pzQmluZGluZywgY3JlYXRlRXNtQmluZGluZyB9IGZyb20gJy4vdGVtcGxhdGVzL2luZGV4LmpzJ1xuaW1wb3J0IHtcbiAgY3JlYXRlV2FzaUJpbmRpbmcsXG4gIGNyZWF0ZVdhc2lCcm93c2VyQmluZGluZyxcbn0gZnJvbSAnLi90ZW1wbGF0ZXMvbG9hZC13YXNpLXRlbXBsYXRlLmpzJ1xuaW1wb3J0IHtcbiAgY3JlYXRlV2FzaUJyb3dzZXJXb3JrZXJCaW5kaW5nLFxuICBXQVNJX1dPUktFUl9URU1QTEFURSxcbn0gZnJvbSAnLi90ZW1wbGF0ZXMvd2FzaS13b3JrZXItdGVtcGxhdGUuanMnXG5cbmNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCdidWlsZCcpXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpXG5cbnR5cGUgT3V0cHV0S2luZCA9ICdqcycgfCAnZHRzJyB8ICdub2RlJyB8ICdleGUnIHwgJ3dhc20nXG50eXBlIE91dHB1dCA9IHsga2luZDogT3V0cHV0S2luZDsgcGF0aDogc3RyaW5nIH1cblxudHlwZSBCdWlsZE9wdGlvbnMgPSBSYXdCdWlsZE9wdGlvbnMgJiB7IGNhcmdvT3B0aW9ucz86IHN0cmluZ1tdIH1cbnR5cGUgUGFyc2VkQnVpbGRPcHRpb25zID0gT21pdDxCdWlsZE9wdGlvbnMsICdjd2QnPiAmIHsgY3dkOiBzdHJpbmcgfVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRQcm9qZWN0KHJhd09wdGlvbnM6IEJ1aWxkT3B0aW9ucykge1xuICBkZWJ1ZygnbmFwaSBidWlsZCBjb21tYW5kIHJlY2VpdmUgb3B0aW9uczogJU8nLCByYXdPcHRpb25zKVxuXG4gIGNvbnN0IG9wdGlvbnM6IFBhcnNlZEJ1aWxkT3B0aW9ucyA9IHtcbiAgICBkdHNDYWNoZTogdHJ1ZSxcbiAgICAuLi5yYXdPcHRpb25zLFxuICAgIGN3ZDogcmF3T3B0aW9ucy5jd2QgPz8gcHJvY2Vzcy5jd2QoKSxcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVQYXRoID0gKC4uLnBhdGhzOiBzdHJpbmdbXSkgPT4gcmVzb2x2ZShvcHRpb25zLmN3ZCwgLi4ucGF0aHMpXG5cbiAgY29uc3QgbWFuaWZlc3RQYXRoID0gcmVzb2x2ZVBhdGgob3B0aW9ucy5tYW5pZmVzdFBhdGggPz8gJ0NhcmdvLnRvbWwnKVxuICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IHBhcnNlTWV0YWRhdGEobWFuaWZlc3RQYXRoKVxuXG4gIGNvbnN0IGNyYXRlID0gbWV0YWRhdGEucGFja2FnZXMuZmluZCgocCkgPT4ge1xuICAgIC8vIHBhY2thZ2Ugd2l0aCBnaXZlbiBuYW1lXG4gICAgaWYgKG9wdGlvbnMucGFja2FnZSkge1xuICAgICAgcmV0dXJuIHAubmFtZSA9PT0gb3B0aW9ucy5wYWNrYWdlXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwLm1hbmlmZXN0X3BhdGggPT09IG1hbmlmZXN0UGF0aFxuICAgIH1cbiAgfSlcblxuICBpZiAoIWNyYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1VuYWJsZSB0byBmaW5kIGNyYXRlIHRvIGJ1aWxkLiBJdCBzZWVtcyB5b3UgYXJlIHRyeWluZyB0byBidWlsZCBhIGNyYXRlIGluIGEgd29ya3NwYWNlLCB0cnkgdXNpbmcgYC0tcGFja2FnZWAgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIHBhY2thZ2UgdG8gYnVpbGQuJyxcbiAgICApXG4gIH1cbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZE5hcGlDb25maWcoXG4gICAgcmVzb2x2ZVBhdGgob3B0aW9ucy5wYWNrYWdlSnNvblBhdGggPz8gJ3BhY2thZ2UuanNvbicpLFxuICAgIG9wdGlvbnMuY29uZmlnUGF0aCA/IHJlc29sdmVQYXRoKG9wdGlvbnMuY29uZmlnUGF0aCkgOiB1bmRlZmluZWQsXG4gIClcblxuICBjb25zdCBidWlsZGVyID0gbmV3IEJ1aWxkZXIobWV0YWRhdGEsIGNyYXRlLCBjb25maWcsIG9wdGlvbnMpXG5cbiAgcmV0dXJuIGJ1aWxkZXIuYnVpbGQoKVxufVxuXG5jbGFzcyBCdWlsZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcmdzOiBzdHJpbmdbXSA9IFtdXG4gIHByaXZhdGUgcmVhZG9ubHkgZW52czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9XG4gIHByaXZhdGUgcmVhZG9ubHkgb3V0cHV0czogT3V0cHV0W10gPSBbXVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgdGFyZ2V0OiBUYXJnZXRcbiAgcHJpdmF0ZSByZWFkb25seSBjcmF0ZURpcjogc3RyaW5nXG4gIHByaXZhdGUgcmVhZG9ubHkgb3V0cHV0RGlyOiBzdHJpbmdcbiAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXREaXI6IHN0cmluZ1xuICBwcml2YXRlIHJlYWRvbmx5IGVuYWJsZVR5cGVEZWY6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGE6IENhcmdvV29ya3NwYWNlTWV0YWRhdGEsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmF0ZTogQ3JhdGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IE5hcGlDb25maWcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBQYXJzZWRCdWlsZE9wdGlvbnMsXG4gICkge1xuICAgIHRoaXMudGFyZ2V0ID0gb3B0aW9ucy50YXJnZXRcbiAgICAgID8gcGFyc2VUcmlwbGUob3B0aW9ucy50YXJnZXQpXG4gICAgICA6IHByb2Nlc3MuZW52LkNBUkdPX0JVSUxEX1RBUkdFVFxuICAgICAgICA/IHBhcnNlVHJpcGxlKHByb2Nlc3MuZW52LkNBUkdPX0JVSUxEX1RBUkdFVClcbiAgICAgICAgOiBnZXRTeXN0ZW1EZWZhdWx0VGFyZ2V0KClcbiAgICB0aGlzLmNyYXRlRGlyID0gcGFyc2UoY3JhdGUubWFuaWZlc3RfcGF0aCkuZGlyXG4gICAgdGhpcy5vdXRwdXREaXIgPSByZXNvbHZlKFxuICAgICAgdGhpcy5vcHRpb25zLmN3ZCxcbiAgICAgIG9wdGlvbnMub3V0cHV0RGlyID8/IHRoaXMuY3JhdGVEaXIsXG4gICAgKVxuICAgIHRoaXMudGFyZ2V0RGlyID1cbiAgICAgIG9wdGlvbnMudGFyZ2V0RGlyID8/XG4gICAgICBwcm9jZXNzLmVudi5DQVJHT19CVUlMRF9UQVJHRVRfRElSID8/XG4gICAgICBtZXRhZGF0YS50YXJnZXRfZGlyZWN0b3J5XG4gICAgdGhpcy5lbmFibGVUeXBlRGVmID0gdGhpcy5jcmF0ZS5kZXBlbmRlbmNpZXMuc29tZShcbiAgICAgIChkZXApID0+XG4gICAgICAgIGRlcC5uYW1lID09PSAnbmFwaS1kZXJpdmUnICYmXG4gICAgICAgIChkZXAudXNlc19kZWZhdWx0X2ZlYXR1cmVzIHx8IGRlcC5mZWF0dXJlcy5pbmNsdWRlcygndHlwZS1kZWYnKSksXG4gICAgKVxuXG4gICAgaWYgKCF0aGlzLmVuYWJsZVR5cGVEZWYpIHtcbiAgICAgIGNvbnN0IHJlcXVpcmVtZW50V2FybmluZyA9XG4gICAgICAgICdgbmFwaS1kZXJpdmVgIGNyYXRlIGlzIG5vdCB1c2VkIG9yIGB0eXBlLWRlZmAgZmVhdHVyZSBpcyBub3QgZW5hYmxlZCBmb3IgYG5hcGktZGVyaXZlYCBjcmF0ZSdcbiAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgIGAke3JlcXVpcmVtZW50V2FybmluZ30uIFdpbGwgc2tpcCBiaW5kaW5nIGdlbmVyYXRpb24gZm9yIFxcYC5ub2RlXFxgLCBcXGAud2FzaVxcYCBhbmQgXFxgLmQudHNcXGAgZmlsZXMuYCxcbiAgICAgIClcblxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLm9wdGlvbnMuZHRzIHx8XG4gICAgICAgIHRoaXMub3B0aW9ucy5kdHNIZWFkZXIgfHxcbiAgICAgICAgdGhpcy5jb25maWcuZHRzSGVhZGVyIHx8XG4gICAgICAgIHRoaXMuY29uZmlnLmR0c0hlYWRlckZpbGVcbiAgICAgICkge1xuICAgICAgICBkZWJ1Zy53YXJuKFxuICAgICAgICAgIGAke3JlcXVpcmVtZW50V2FybmluZ30uIFxcYGR0c1xcYCByZWxhdGVkIG9wdGlvbnMgYXJlIGVuYWJsZWQgYnV0IHdpbGwgYmUgaWdub3JlZC5gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNkeUxpYk5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3JhdGUudGFyZ2V0cy5maW5kKCh0KSA9PiB0LmNyYXRlX3R5cGVzLmluY2x1ZGVzKCdjZHlsaWInKSlcbiAgICAgID8ubmFtZVxuICB9XG5cbiAgZ2V0IGJpbk5hbWUoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMub3B0aW9ucy5iaW4gPz9cbiAgICAgIC8vIG9ubHkgYXZhaWxhYmxlIGlmIG5vdCBjZHlsaWIgb3IgYmluIG5hbWUgc3BlY2lmaWVkXG4gICAgICAodGhpcy5jZHlMaWJOYW1lXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHRoaXMuY3JhdGUudGFyZ2V0cy5maW5kKCh0KSA9PiB0LmNyYXRlX3R5cGVzLmluY2x1ZGVzKCdiaW4nKSk/Lm5hbWUpXG4gICAgKVxuICB9XG5cbiAgYnVpbGQoKSB7XG4gICAgaWYgKCF0aGlzLmNkeUxpYk5hbWUpIHtcbiAgICAgIGNvbnN0IHdhcm5pbmcgPVxuICAgICAgICAnTWlzc2luZyBgY3JhdGUtdHlwZSA9IFtcImNkeWxpYlwiXWAgaW4gW2xpYl0gY29uZmlnLiBUaGUgYnVpbGQgcmVzdWx0IHdpbGwgbm90IGJlIGF2YWlsYWJsZSBhcyBub2RlIGFkZG9uLidcblxuICAgICAgaWYgKHRoaXMuYmluTmFtZSkge1xuICAgICAgICBkZWJ1Zy53YXJuKHdhcm5pbmcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3Iod2FybmluZylcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5waWNrQmluYXJ5KClcbiAgICAgIC5zZXRQYWNrYWdlKClcbiAgICAgIC5zZXRGZWF0dXJlcygpXG4gICAgICAuc2V0VGFyZ2V0KClcbiAgICAgIC5waWNrQ3Jvc3NUb29sY2hhaW4oKVxuICAgICAgLnNldEVudnMoKVxuICAgICAgLnNldEJ5cGFzc0FyZ3MoKVxuICAgICAgLmV4ZWMoKVxuICB9XG5cbiAgcHJpdmF0ZSBwaWNrQ3Jvc3NUb29sY2hhaW4oKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMudXNlTmFwaUNyb3NzKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLnVzZUNyb3NzKSB7XG4gICAgICBkZWJ1Zy53YXJuKFxuICAgICAgICAnWW91IGFyZSB0cnlpbmcgdG8gdXNlIGJvdGggYC0tY3Jvc3NgIGFuZCBgLS11c2UtbmFwaS1jcm9zc2Agb3B0aW9ucywgYC0tdXNlLWNyb3NzYCB3aWxsIGJlIGlnbm9yZWQuJyxcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmNyb3NzQ29tcGlsZSkge1xuICAgICAgZGVidWcud2FybihcbiAgICAgICAgJ1lvdSBhcmUgdHJ5aW5nIHRvIHVzZSBib3RoIGAtLWNyb3NzLWNvbXBpbGVgIGFuZCBgLS11c2UtbmFwaS1jcm9zc2Agb3B0aW9ucywgYC0tY3Jvc3MtY29tcGlsZWAgd2lsbCBiZSBpZ25vcmVkLicsXG4gICAgICApXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgdmVyc2lvbiwgZG93bmxvYWQgfSA9IHJlcXVpcmUoJ0BuYXBpLXJzL2Nyb3NzLXRvb2xjaGFpbicpXG5cbiAgICAgIGNvbnN0IGFsaWFzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAnczM5MHgtdW5rbm93bi1saW51eC1nbnUnOiAnczM5MHgtaWJtLWxpbnV4LWdudScsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRvb2xjaGFpblBhdGggPSBqb2luKFxuICAgICAgICBob21lZGlyKCksXG4gICAgICAgICcubmFwaS1ycycsXG4gICAgICAgICdjcm9zcy10b29sY2hhaW4nLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICB0aGlzLnRhcmdldC50cmlwbGUsXG4gICAgICApXG4gICAgICBta2RpclN5bmModG9vbGNoYWluUGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICAgIGlmIChleGlzdHNTeW5jKGpvaW4odG9vbGNoYWluUGF0aCwgJ3BhY2thZ2UuanNvbicpKSkge1xuICAgICAgICBkZWJ1ZyhgVG9vbGNoYWluICR7dG9vbGNoYWluUGF0aH0gZXhpc3RzLCBza2lwIGV4dHJhY3RpbmdgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdGFyQXJjaGl2ZSA9IGRvd25sb2FkKHByb2Nlc3MuYXJjaCwgdGhpcy50YXJnZXQudHJpcGxlKVxuICAgICAgICB0YXJBcmNoaXZlLnVucGFjayh0b29sY2hhaW5QYXRoKVxuICAgICAgfVxuICAgICAgY29uc3QgdXBwZXJDYXNlVGFyZ2V0ID0gdGFyZ2V0VG9FbnZWYXIodGhpcy50YXJnZXQudHJpcGxlKVxuICAgICAgY29uc3QgY3Jvc3NUYXJnZXROYW1lID0gYWxpYXNbdGhpcy50YXJnZXQudHJpcGxlXSA/PyB0aGlzLnRhcmdldC50cmlwbGVcbiAgICAgIGNvbnN0IGxpbmtlckVudiA9IGBDQVJHT19UQVJHRVRfJHt1cHBlckNhc2VUYXJnZXR9X0xJTktFUmBcbiAgICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoXG4gICAgICAgIGxpbmtlckVudixcbiAgICAgICAgam9pbih0b29sY2hhaW5QYXRoLCAnYmluJywgYCR7Y3Jvc3NUYXJnZXROYW1lfS1nY2NgKSxcbiAgICAgIClcbiAgICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoXG4gICAgICAgICdUQVJHRVRfU1lTUk9PVCcsXG4gICAgICAgIGpvaW4odG9vbGNoYWluUGF0aCwgY3Jvc3NUYXJnZXROYW1lLCAnc3lzcm9vdCcpLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9BUicsXG4gICAgICAgIGpvaW4odG9vbGNoYWluUGF0aCwgJ2JpbicsIGAke2Nyb3NzVGFyZ2V0TmFtZX0tYXJgKSxcbiAgICAgIClcbiAgICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoXG4gICAgICAgICdUQVJHRVRfUkFOTElCJyxcbiAgICAgICAgam9pbih0b29sY2hhaW5QYXRoLCAnYmluJywgYCR7Y3Jvc3NUYXJnZXROYW1lfS1yYW5saWJgKSxcbiAgICAgIClcbiAgICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoXG4gICAgICAgICdUQVJHRVRfUkVBREVMRicsXG4gICAgICAgIGpvaW4odG9vbGNoYWluUGF0aCwgJ2JpbicsIGAke2Nyb3NzVGFyZ2V0TmFtZX0tcmVhZGVsZmApLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9DX0lOQ0xVREVfUEFUSCcsXG4gICAgICAgIGpvaW4odG9vbGNoYWluUGF0aCwgY3Jvc3NUYXJnZXROYW1lLCAnc3lzcm9vdCcsICd1c3InLCAnaW5jbHVkZS8nKSxcbiAgICAgIClcbiAgICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoXG4gICAgICAgICdUQVJHRVRfQ0MnLFxuICAgICAgICBqb2luKHRvb2xjaGFpblBhdGgsICdiaW4nLCBgJHtjcm9zc1RhcmdldE5hbWV9LWdjY2ApLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9DWFgnLFxuICAgICAgICBqb2luKHRvb2xjaGFpblBhdGgsICdiaW4nLCBgJHtjcm9zc1RhcmdldE5hbWV9LWcrK2ApLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ0JJTkRHRU5fRVhUUkFfQ0xBTkdfQVJHUycsXG4gICAgICAgIGAtLXN5c3Jvb3Q9JHt0aGlzLmVudnMuVEFSR0VUX1NZU1JPT1R9fWAsXG4gICAgICApXG5cbiAgICAgIGlmIChcbiAgICAgICAgcHJvY2Vzcy5lbnYuVEFSR0VUX0NDPy5zdGFydHNXaXRoKCdjbGFuZycpIHx8XG4gICAgICAgIChwcm9jZXNzLmVudi5DQz8uc3RhcnRzV2l0aCgnY2xhbmcnKSAmJiAhcHJvY2Vzcy5lbnYuVEFSR0VUX0NDKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IFRBUkdFVF9DRkxBR1MgPSBwcm9jZXNzLmVudi5UQVJHRVRfQ0ZMQUdTID8/ICcnXG4gICAgICAgIHRoaXMuZW52cy5UQVJHRVRfQ0ZMQUdTID0gYC0tc3lzcm9vdD0ke3RoaXMuZW52cy5UQVJHRVRfU1lTUk9PVH0gLS1nY2MtdG9vbGNoYWluPSR7dG9vbGNoYWluUGF0aH0gJHtUQVJHRVRfQ0ZMQUdTfWBcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgKHByb2Nlc3MuZW52LkNYWD8uc3RhcnRzV2l0aCgnY2xhbmcrKycpICYmICFwcm9jZXNzLmVudi5UQVJHRVRfQ1hYKSB8fFxuICAgICAgICBwcm9jZXNzLmVudi5UQVJHRVRfQ1hYPy5zdGFydHNXaXRoKCdjbGFuZysrJylcbiAgICAgICkge1xuICAgICAgICBjb25zdCBUQVJHRVRfQ1hYRkxBR1MgPSBwcm9jZXNzLmVudi5UQVJHRVRfQ1hYRkxBR1MgPz8gJydcbiAgICAgICAgdGhpcy5lbnZzLlRBUkdFVF9DWFhGTEFHUyA9IGAtLXN5c3Jvb3Q9JHt0aGlzLmVudnMuVEFSR0VUX1NZU1JPT1R9IC0tZ2NjLXRvb2xjaGFpbj0ke3Rvb2xjaGFpblBhdGh9ICR7VEFSR0VUX0NYWEZMQUdTfWBcbiAgICAgIH1cbiAgICAgIHRoaXMuZW52cy5QQVRIID0gdGhpcy5lbnZzLlBBVEhcbiAgICAgICAgPyBgJHt0b29sY2hhaW5QYXRofS9iaW46JHt0aGlzLmVudnMuUEFUSH06JHtwcm9jZXNzLmVudi5QQVRIfWBcbiAgICAgICAgOiBgJHt0b29sY2hhaW5QYXRofS9iaW46JHtwcm9jZXNzLmVudi5QQVRIfWBcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkZWJ1Zy53YXJuKCdQaWNrIGNyb3NzIHRvb2xjaGFpbiBmYWlsZWQnLCBlIGFzIEVycm9yKVxuICAgICAgLy8gaWdub3JlLCBkbyBub3RoaW5nXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBwcml2YXRlIGV4ZWMoKSB7XG4gICAgZGVidWcoYFN0YXJ0IGJ1aWxkaW5nIGNyYXRlOiAke3RoaXMuY3JhdGUubmFtZX1gKVxuICAgIGRlYnVnKCcgICVpJywgYGNhcmdvICR7dGhpcy5hcmdzLmpvaW4oJyAnKX1gKVxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gICAgY29uc3Qgd2F0Y2ggPSB0aGlzLm9wdGlvbnMud2F0Y2hcbiAgICBjb25zdCBidWlsZFRhc2sgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnVzZUNyb3NzICYmIHRoaXMub3B0aW9ucy5jcm9zc0NvbXBpbGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdgLS11c2UtY3Jvc3NgIGFuZCBgLS1jcm9zcy1jb21waWxlYCBjYW4gbm90IGJlIHVzZWQgdG9nZXRoZXInLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBjb25zdCBjb21tYW5kID1cbiAgICAgICAgcHJvY2Vzcy5lbnYuQ0FSR08gPz8gKHRoaXMub3B0aW9ucy51c2VDcm9zcyA/ICdjcm9zcycgOiAnY2FyZ28nKVxuICAgICAgY29uc3QgYnVpbGRQcm9jZXNzID0gc3Bhd24oY29tbWFuZCwgdGhpcy5hcmdzLCB7XG4gICAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgLi4udGhpcy5lbnZzIH0sXG4gICAgICAgIHN0ZGlvOiB3YXRjaCA/IFsnaW5oZXJpdCcsICdpbmhlcml0JywgJ3BpcGUnXSA6ICdpbmhlcml0JyxcbiAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkLFxuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSlcblxuICAgICAgYnVpbGRQcm9jZXNzLm9uY2UoJ2V4aXQnLCAoY29kZSkgPT4ge1xuICAgICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICAgIGRlYnVnKCclaScsIGBCdWlsZCBjcmF0ZSAke3RoaXMuY3JhdGUubmFtZX0gc3VjY2Vzc2Z1bGx5IWApXG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQnVpbGQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICR7Y29kZX1gKSlcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgYnVpbGRQcm9jZXNzLm9uY2UoJ2Vycm9yJywgKGUpID0+IHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQnVpbGQgZmFpbGVkIHdpdGggZXJyb3I6ICR7ZS5tZXNzYWdlfWAsIHsgY2F1c2U6IGUgfSkpXG4gICAgICB9KVxuXG4gICAgICAvLyB3YXRjaCBtb2RlIG9ubHksIHRoZXkgYXJlIHBpcGVkIHRocm91Z2ggc3RkZXJyXG4gICAgICBidWlsZFByb2Nlc3Muc3RkZXJyPy5vbignZGF0YScsIChkYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKVxuICAgICAgICBjb25zb2xlLmVycm9yKG91dHB1dClcbiAgICAgICAgaWYgKC9GaW5pc2hlZFxccyhgZGV2YHxgcmVsZWFzZWApLy50ZXN0KG91dHB1dCkpIHtcbiAgICAgICAgICB0aGlzLnBvc3RCdWlsZCgpLmNhdGNoKCgpID0+IHt9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG5cbiAgICByZXR1cm4ge1xuICAgICAgdGFzazogYnVpbGRUYXNrLnRoZW4oKCkgPT4gdGhpcy5wb3N0QnVpbGQoKSksXG4gICAgICBhYm9ydDogKCkgPT4gY29udHJvbGxlci5hYm9ydCgpLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGlja0JpbmFyeSgpIHtcbiAgICBsZXQgc2V0ID0gZmFsc2VcbiAgICBpZiAodGhpcy5vcHRpb25zLndhdGNoKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuQ0kpIHtcbiAgICAgICAgZGVidWcud2FybignV2F0Y2ggbW9kZSBpcyBub3Qgc3VwcG9ydGVkIGluIENJIGVudmlyb25tZW50JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYnVnKCdVc2UgJWknLCAnY2FyZ28td2F0Y2gnKVxuICAgICAgICB0cnlJbnN0YWxsQ2FyZ29CaW5hcnkoJ2NhcmdvLXdhdGNoJywgJ3dhdGNoJylcbiAgICAgICAgLy8geWFybiBuYXBpIHdhdGNoIC0tdGFyZ2V0IHg4Nl82NC11bmtub3duLWxpbnV4LWdudSBbLS1jcm9zcy1jb21waWxlXVxuICAgICAgICAvLyA9PT0+XG4gICAgICAgIC8vIGNhcmdvIHdhdGNoIFsuLi5dIC0tIGJ1aWxkIC0tdGFyZ2V0IHg4Nl82NC11bmtub3duLWxpbnV4LWdudVxuICAgICAgICAvLyBjYXJnbyB3YXRjaCBbLi4uXSAtLSB6aWdidWlsZCAtLXRhcmdldCB4ODZfNjQtdW5rbm93bi1saW51eC1nbnVcbiAgICAgICAgdGhpcy5hcmdzLnB1c2goXG4gICAgICAgICAgJ3dhdGNoJyxcbiAgICAgICAgICAnLS13aHknLFxuICAgICAgICAgICctaScsXG4gICAgICAgICAgJyoue2pzLHRzLG5vZGV9JyxcbiAgICAgICAgICAnLXcnLFxuICAgICAgICAgIHRoaXMuY3JhdGVEaXIsXG4gICAgICAgICAgJy0tJyxcbiAgICAgICAgICAnY2FyZ28nLFxuICAgICAgICAgICdidWlsZCcsXG4gICAgICAgIClcbiAgICAgICAgc2V0ID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3Jvc3NDb21waWxlKSB7XG4gICAgICBpZiAodGhpcy50YXJnZXQucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICAgICAgICBkZWJ1Zy53YXJuKFxuICAgICAgICAgICAgJ1lvdSBhcmUgdHJ5aW5nIHRvIGNyb3NzIGNvbXBpbGUgdG8gd2luMzIgcGxhdGZvcm0gb24gd2luMzIgcGxhdGZvcm0gd2hpY2ggaXMgdW5uZWNlc3NhcnkuJyxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gdXNlIGNhcmdvLXh3aW4gdG8gY3Jvc3MgY29tcGlsZSB0byB3aW4zMiBwbGF0Zm9ybVxuICAgICAgICAgIGRlYnVnKCdVc2UgJWknLCAnY2FyZ28teHdpbicpXG4gICAgICAgICAgdHJ5SW5zdGFsbENhcmdvQmluYXJ5KCdjYXJnby14d2luJywgJ3h3aW4nKVxuICAgICAgICAgIHRoaXMuYXJncy5wdXNoKCd4d2luJywgJ2J1aWxkJylcbiAgICAgICAgICBpZiAodGhpcy50YXJnZXQuYXJjaCA9PT0gJ2lhMzInKSB7XG4gICAgICAgICAgICB0aGlzLmVudnMuWFdJTl9BUkNIID0gJ3g4NidcbiAgICAgICAgICB9XG4gICAgICAgICAgc2V0ID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy50YXJnZXQucGxhdGZvcm0gPT09ICdsaW51eCcgJiZcbiAgICAgICAgICBwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnICYmXG4gICAgICAgICAgdGhpcy50YXJnZXQuYXJjaCA9PT0gcHJvY2Vzcy5hcmNoICYmXG4gICAgICAgICAgKGZ1bmN0aW9uIChhYmk6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGdsaWJjVmVyc2lvblJ1bnRpbWUgPVxuICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICAgIHByb2Nlc3MucmVwb3J0Py5nZXRSZXBvcnQoKT8uaGVhZGVyPy5nbGliY1ZlcnNpb25SdW50aW1lXG4gICAgICAgICAgICBjb25zdCBsaWJjID0gZ2xpYmNWZXJzaW9uUnVudGltZSA/ICdnbnUnIDogJ211c2wnXG4gICAgICAgICAgICByZXR1cm4gYWJpID09PSBsaWJjXG4gICAgICAgICAgfSkodGhpcy50YXJnZXQuYWJpKVxuICAgICAgICApIHtcbiAgICAgICAgICBkZWJ1Zy53YXJuKFxuICAgICAgICAgICAgJ1lvdSBhcmUgdHJ5aW5nIHRvIGNyb3NzIGNvbXBpbGUgdG8gbGludXggdGFyZ2V0IG9uIGxpbnV4IHBsYXRmb3JtIHdoaWNoIGlzIHVubmVjZXNzYXJ5LicsXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIHRoaXMudGFyZ2V0LnBsYXRmb3JtID09PSAnZGFyd2luJyAmJlxuICAgICAgICAgIHByb2Nlc3MucGxhdGZvcm0gPT09ICdkYXJ3aW4nXG4gICAgICAgICkge1xuICAgICAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgICAgICAnWW91IGFyZSB0cnlpbmcgdG8gY3Jvc3MgY29tcGlsZSB0byBkYXJ3aW4gdGFyZ2V0IG9uIGRhcndpbiBwbGF0Zm9ybSB3aGljaCBpcyB1bm5lY2Vzc2FyeS4nLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB1c2UgY2FyZ28temlnYnVpbGQgdG8gY3Jvc3MgY29tcGlsZSB0byBvdGhlciBwbGF0Zm9ybXNcbiAgICAgICAgICBkZWJ1ZygnVXNlICVpJywgJ2NhcmdvLXppZ2J1aWxkJylcbiAgICAgICAgICB0cnlJbnN0YWxsQ2FyZ29CaW5hcnkoJ2NhcmdvLXppZ2J1aWxkJywgJ3ppZ2J1aWxkJylcbiAgICAgICAgICB0aGlzLmFyZ3MucHVzaCgnemlnYnVpbGQnKVxuICAgICAgICAgIHNldCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghc2V0KSB7XG4gICAgICB0aGlzLmFyZ3MucHVzaCgnYnVpbGQnKVxuICAgIH1cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQYWNrYWdlKCkge1xuICAgIGNvbnN0IGFyZ3MgPSBbXVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5wYWNrYWdlKSB7XG4gICAgICBhcmdzLnB1c2goJy0tcGFja2FnZScsIHRoaXMub3B0aW9ucy5wYWNrYWdlKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmJpbk5hbWUpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1iaW4nLCB0aGlzLmJpbk5hbWUpXG4gICAgfVxuXG4gICAgaWYgKGFyZ3MubGVuZ3RoKSB7XG4gICAgICBkZWJ1ZygnU2V0IHBhY2thZ2UgZmxhZ3M6ICcpXG4gICAgICBkZWJ1ZygnICAlTycsIGFyZ3MpXG4gICAgICB0aGlzLmFyZ3MucHVzaCguLi5hcmdzKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBwcml2YXRlIHNldFRhcmdldCgpIHtcbiAgICBkZWJ1ZygnU2V0IGNvbXBpbGluZyB0YXJnZXQgdG86ICcpXG4gICAgZGVidWcoJyAgJWknLCB0aGlzLnRhcmdldC50cmlwbGUpXG5cbiAgICB0aGlzLmFyZ3MucHVzaCgnLS10YXJnZXQnLCB0aGlzLnRhcmdldC50cmlwbGUpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRFbnZzKCkge1xuICAgIC8vIFRZUEUgREVGXG4gICAgaWYgKHRoaXMuZW5hYmxlVHlwZURlZikge1xuICAgICAgdGhpcy5lbnZzLk5BUElfVFlQRV9ERUZfVE1QX0ZPTERFUiA9XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm1lZGlhdGVUeXBlRGVmRm9sZGVyKClcbiAgICAgIHRoaXMuc2V0Rm9yY2VCdWlsZEVudnModGhpcy5lbnZzLk5BUElfVFlQRV9ERUZfVE1QX0ZPTERFUilcbiAgICB9XG5cbiAgICAvLyBSVVNURkxBR1NcbiAgICBsZXQgcnVzdGZsYWdzID1cbiAgICAgIHByb2Nlc3MuZW52LlJVU1RGTEFHUyA/PyBwcm9jZXNzLmVudi5DQVJHT19CVUlMRF9SVVNURkxBR1MgPz8gJydcblxuICAgIGlmIChcbiAgICAgIHRoaXMudGFyZ2V0LmFiaT8uaW5jbHVkZXMoJ211c2wnKSAmJlxuICAgICAgIXJ1c3RmbGFncy5pbmNsdWRlcygndGFyZ2V0LWZlYXR1cmU9LWNydC1zdGF0aWMnKVxuICAgICkge1xuICAgICAgcnVzdGZsYWdzICs9ICcgLUMgdGFyZ2V0LWZlYXR1cmU9LWNydC1zdGF0aWMnXG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zdHJpcCAmJiAhcnVzdGZsYWdzLmluY2x1ZGVzKCdsaW5rLWFyZz0tcycpKSB7XG4gICAgICBydXN0ZmxhZ3MgKz0gJyAtQyBsaW5rLWFyZz0tcydcbiAgICB9XG5cbiAgICBpZiAocnVzdGZsYWdzLmxlbmd0aCkge1xuICAgICAgdGhpcy5lbnZzLlJVU1RGTEFHUyA9IHJ1c3RmbGFnc1xuICAgIH1cbiAgICAvLyBFTkQgUlVTVEZMQUdTXG5cbiAgICAvLyBMSU5LRVJcbiAgICBjb25zdCBsaW5rZXIgPSB0aGlzLm9wdGlvbnMuY3Jvc3NDb21waWxlXG4gICAgICA/IHZvaWQgMFxuICAgICAgOiBnZXRUYXJnZXRMaW5rZXIodGhpcy50YXJnZXQudHJpcGxlKVxuICAgIC8vIFRPRE86XG4gICAgLy8gICBkaXJlY3RseSBzZXQgQ0FSR09fVEFSR0VUXzx0YXJnZXQ+X0xJTktFUiB3aWxsIGNvdmVyIC5jYXJnby9jb25maWcudG9tbFxuICAgIC8vICAgd2lsbCBkZXRlY3QgYnkgY2FyZ28gY29uZmlnIHdoZW4gaXQgYmVjb21lcyBzdGFibGVcbiAgICAvLyAgIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL3J1c3QtbGFuZy9jYXJnby9pc3N1ZXMvOTMwMVxuICAgIGNvbnN0IGxpbmtlckVudiA9IGBDQVJHT19UQVJHRVRfJHt0YXJnZXRUb0VudlZhcihcbiAgICAgIHRoaXMudGFyZ2V0LnRyaXBsZSxcbiAgICApfV9MSU5LRVJgXG4gICAgaWYgKGxpbmtlciAmJiAhcHJvY2Vzcy5lbnZbbGlua2VyRW52XSAmJiAhdGhpcy5lbnZzW2xpbmtlckVudl0pIHtcbiAgICAgIHRoaXMuZW52c1tsaW5rZXJFbnZdID0gbGlua2VyXG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFyZ2V0LnBsYXRmb3JtID09PSAnYW5kcm9pZCcpIHtcbiAgICAgIHRoaXMuc2V0QW5kcm9pZEVudigpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFyZ2V0LnBsYXRmb3JtID09PSAnd2FzaScpIHtcbiAgICAgIHRoaXMuc2V0V2FzaUVudigpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFyZ2V0LnBsYXRmb3JtID09PSAnb3Blbmhhcm1vbnknKSB7XG4gICAgICB0aGlzLnNldE9wZW5IYXJtb255RW52KClcbiAgICB9XG5cbiAgICBkZWJ1ZygnU2V0IGVudnM6ICcpXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5lbnZzKS5mb3JFYWNoKChbaywgdl0pID0+IHtcbiAgICAgIGRlYnVnKCcgICVpJywgYCR7a309JHt2fWApXG4gICAgfSlcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBwcml2YXRlIHNldEZvcmNlQnVpbGRFbnZzKHR5cGVEZWZUbXBGb2xkZXI6IHN0cmluZykge1xuICAgIC8vIGR5bmFtaWNhbGx5IGNoZWNrIGFsbCBuYXBpLXJzIGRlcHMgYW5kIHNldCBgTkFQSV9GT1JDRV9CVUlMRF97dXBwZXJjYXNlKHNuYWtlX2Nhc2UobmFtZSkpfSA9IHRpbWVzdGFtcGBcbiAgICB0aGlzLm1ldGFkYXRhLnBhY2thZ2VzLmZvckVhY2goKGNyYXRlKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGNyYXRlLmRlcGVuZGVuY2llcy5zb21lKChkKSA9PiBkLm5hbWUgPT09ICduYXBpLWRlcml2ZScpICYmXG4gICAgICAgICFleGlzdHNTeW5jKGpvaW4odHlwZURlZlRtcEZvbGRlciwgY3JhdGUubmFtZSkpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5lbnZzW1xuICAgICAgICAgIGBOQVBJX0ZPUkNFX0JVSUxEXyR7Y3JhdGUubmFtZS5yZXBsYWNlKC8tL2csICdfJykudG9VcHBlckNhc2UoKX1gXG4gICAgICAgIF0gPSBEYXRlLm5vdygpLnRvU3RyaW5nKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRBbmRyb2lkRW52KCkge1xuICAgIGNvbnN0IHsgQU5EUk9JRF9OREtfTEFURVNUX0hPTUUgfSA9IHByb2Nlc3MuZW52XG4gICAgaWYgKCFBTkRST0lEX05ES19MQVRFU1RfSE9NRSkge1xuICAgICAgZGVidWcud2FybihcbiAgICAgICAgYCR7Y29sb3JzLnJlZChcbiAgICAgICAgICAnQU5EUk9JRF9OREtfTEFURVNUX0hPTUUnLFxuICAgICAgICApfSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBtaXNzaW5nYCxcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBza2lwIGNyb3NzIGNvbXBpbGUgc2V0dXAgaWYgaG9zdCBpcyBhbmRyb2lkXG4gICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdhbmRyb2lkJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0QXJjaCA9IHRoaXMudGFyZ2V0LmFyY2ggPT09ICdhcm0nID8gJ2FybXY3YScgOiAnYWFyY2g2NCdcbiAgICBjb25zdCB0YXJnZXRQbGF0Zm9ybSA9XG4gICAgICB0aGlzLnRhcmdldC5hcmNoID09PSAnYXJtJyA/ICdhbmRyb2lkZWFiaTI0JyA6ICdhbmRyb2lkMjQnXG4gICAgY29uc3QgaG9zdFBsYXRmb3JtID1cbiAgICAgIHByb2Nlc3MucGxhdGZvcm0gPT09ICdkYXJ3aW4nXG4gICAgICAgID8gJ2RhcndpbidcbiAgICAgICAgOiBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInXG4gICAgICAgICAgPyAnd2luZG93cydcbiAgICAgICAgICA6ICdsaW51eCdcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuZW52cywge1xuICAgICAgQ0FSR09fVEFSR0VUX0FBUkNINjRfTElOVVhfQU5EUk9JRF9MSU5LRVI6IGAke0FORFJPSURfTkRLX0xBVEVTVF9IT01FfS90b29sY2hhaW5zL2xsdm0vcHJlYnVpbHQvJHtob3N0UGxhdGZvcm19LXg4Nl82NC9iaW4vJHt0YXJnZXRBcmNofS1saW51eC1hbmRyb2lkMjQtY2xhbmdgLFxuICAgICAgQ0FSR09fVEFSR0VUX0FSTVY3X0xJTlVYX0FORFJPSURFQUJJX0xJTktFUjogYCR7QU5EUk9JRF9OREtfTEFURVNUX0hPTUV9L3Rvb2xjaGFpbnMvbGx2bS9wcmVidWlsdC8ke2hvc3RQbGF0Zm9ybX0teDg2XzY0L2Jpbi8ke3RhcmdldEFyY2h9LWxpbnV4LWFuZHJvaWRlYWJpMjQtY2xhbmdgLFxuICAgICAgVEFSR0VUX0NDOiBgJHtBTkRST0lEX05ES19MQVRFU1RfSE9NRX0vdG9vbGNoYWlucy9sbHZtL3ByZWJ1aWx0LyR7aG9zdFBsYXRmb3JtfS14ODZfNjQvYmluLyR7dGFyZ2V0QXJjaH0tbGludXgtJHt0YXJnZXRQbGF0Zm9ybX0tY2xhbmdgLFxuICAgICAgVEFSR0VUX0NYWDogYCR7QU5EUk9JRF9OREtfTEFURVNUX0hPTUV9L3Rvb2xjaGFpbnMvbGx2bS9wcmVidWlsdC8ke2hvc3RQbGF0Zm9ybX0teDg2XzY0L2Jpbi8ke3RhcmdldEFyY2h9LWxpbnV4LSR7dGFyZ2V0UGxhdGZvcm19LWNsYW5nKytgLFxuICAgICAgVEFSR0VUX0FSOiBgJHtBTkRST0lEX05ES19MQVRFU1RfSE9NRX0vdG9vbGNoYWlucy9sbHZtL3ByZWJ1aWx0LyR7aG9zdFBsYXRmb3JtfS14ODZfNjQvYmluL2xsdm0tYXJgLFxuICAgICAgVEFSR0VUX1JBTkxJQjogYCR7QU5EUk9JRF9OREtfTEFURVNUX0hPTUV9L3Rvb2xjaGFpbnMvbGx2bS9wcmVidWlsdC8ke2hvc3RQbGF0Zm9ybX0teDg2XzY0L2Jpbi9sbHZtLXJhbmxpYmAsXG4gICAgICBBTkRST0lEX05ESzogQU5EUk9JRF9OREtfTEFURVNUX0hPTUUsXG4gICAgICBQQVRIOiBgJHtBTkRST0lEX05ES19MQVRFU1RfSE9NRX0vdG9vbGNoYWlucy9sbHZtL3ByZWJ1aWx0LyR7aG9zdFBsYXRmb3JtfS14ODZfNjQvYmluJHtwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gJzsnIDogJzonfSR7cHJvY2Vzcy5lbnYuUEFUSH1gLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHNldFdhc2lFbnYoKSB7XG4gICAgY29uc3QgZW1uYXBpID0gam9pbihcbiAgICAgIHJlcXVpcmUucmVzb2x2ZSgnZW1uYXBpJyksXG4gICAgICAnLi4nLFxuICAgICAgJ2xpYicsXG4gICAgICAnd2FzbTMyLXdhc2ktdGhyZWFkcycsXG4gICAgKVxuICAgIHRoaXMuZW52cy5FTU5BUElfTElOS19ESVIgPSBlbW5hcGlcbiAgICBjb25zdCB7IFdBU0lfU0RLX1BBVEggfSA9IHByb2Nlc3MuZW52XG5cbiAgICBpZiAoV0FTSV9TREtfUEFUSCAmJiBleGlzdHNTeW5jKFdBU0lfU0RLX1BBVEgpKSB7XG4gICAgICB0aGlzLmVudnMuQ0FSR09fVEFSR0VUX1dBU00zMl9XQVNJX1BSRVZJRVcxX1RIUkVBRFNfTElOS0VSID0gam9pbihcbiAgICAgICAgV0FTSV9TREtfUEFUSCxcbiAgICAgICAgJ2JpbicsXG4gICAgICAgICd3YXNtLWxkJyxcbiAgICAgIClcbiAgICAgIHRoaXMuZW52cy5DQVJHT19UQVJHRVRfV0FTTTMyX1dBU0lQMV9MSU5LRVIgPSBqb2luKFxuICAgICAgICBXQVNJX1NES19QQVRILFxuICAgICAgICAnYmluJyxcbiAgICAgICAgJ3dhc20tbGQnLFxuICAgICAgKVxuICAgICAgdGhpcy5lbnZzLkNBUkdPX1RBUkdFVF9XQVNNMzJfV0FTSVAxX1RIUkVBRFNfTElOS0VSID0gam9pbihcbiAgICAgICAgV0FTSV9TREtfUEFUSCxcbiAgICAgICAgJ2JpbicsXG4gICAgICAgICd3YXNtLWxkJyxcbiAgICAgIClcbiAgICAgIHRoaXMuZW52cy5DQVJHT19UQVJHRVRfV0FTTTMyX1dBU0lQMl9MSU5LRVIgPSBqb2luKFxuICAgICAgICBXQVNJX1NES19QQVRILFxuICAgICAgICAnYmluJyxcbiAgICAgICAgJ3dhc20tbGQnLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnVEFSR0VUX0NDJywgam9pbihXQVNJX1NES19QQVRILCAnYmluJywgJ2NsYW5nJykpXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKFxuICAgICAgICAnVEFSR0VUX0NYWCcsXG4gICAgICAgIGpvaW4oV0FTSV9TREtfUEFUSCwgJ2JpbicsICdjbGFuZysrJyksXG4gICAgICApXG4gICAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKCdUQVJHRVRfQVInLCBqb2luKFdBU0lfU0RLX1BBVEgsICdiaW4nLCAnYXInKSlcbiAgICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoXG4gICAgICAgICdUQVJHRVRfUkFOTElCJyxcbiAgICAgICAgam9pbihXQVNJX1NES19QQVRILCAnYmluJywgJ3JhbmxpYicpLFxuICAgICAgKVxuICAgICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cyhcbiAgICAgICAgJ1RBUkdFVF9DRkxBR1MnLFxuICAgICAgICBgLS10YXJnZXQ9d2FzbTMyLXdhc2ktdGhyZWFkcyAtLXN5c3Jvb3Q9JHtXQVNJX1NES19QQVRIfS9zaGFyZS93YXNpLXN5c3Jvb3QgLXB0aHJlYWQgLW1sbHZtIC13YXNtLWVuYWJsZS1zamxqYCxcbiAgICAgIClcbiAgICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoXG4gICAgICAgICdUQVJHRVRfQ1hYRkxBR1MnLFxuICAgICAgICBgLS10YXJnZXQ9d2FzbTMyLXdhc2ktdGhyZWFkcyAtLXN5c3Jvb3Q9JHtXQVNJX1NES19QQVRIfS9zaGFyZS93YXNpLXN5c3Jvb3QgLXB0aHJlYWQgLW1sbHZtIC13YXNtLWVuYWJsZS1zamxqYCxcbiAgICAgIClcbiAgICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoXG4gICAgICAgIGBUQVJHRVRfTERGTEFHU2AsXG4gICAgICAgIGAtZnVzZS1sZD0ke1dBU0lfU0RLX1BBVEh9L2Jpbi93YXNtLWxkIC0tdGFyZ2V0PXdhc20zMi13YXNpLXRocmVhZHNgLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0T3Blbkhhcm1vbnlFbnYoKSB7XG4gICAgY29uc3QgeyBPSE9TX1NES19QQVRILCBPSE9TX1NES19OQVRJVkUgfSA9IHByb2Nlc3MuZW52XG4gICAgY29uc3QgbmRrUGF0aCA9IE9IT1NfU0RLX1BBVEggPyBgJHtPSE9TX1NES19QQVRIfS9uYXRpdmVgIDogT0hPU19TREtfTkFUSVZFXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIGlmICghbmRrUGF0aCAmJiBwcm9jZXNzLnBsYXRmb3JtICE9PSAnb3Blbmhhcm1vbnknKSB7XG4gICAgICBkZWJ1Zy53YXJuKFxuICAgICAgICBgJHtjb2xvcnMucmVkKCdPSE9TX1NES19QQVRIJyl9IG9yICR7Y29sb3JzLnJlZCgnT0hPU19TREtfTkFUSVZFJyl9IGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG1pc3NpbmdgLFxuICAgICAgKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGxpbmtlck5hbWUgPSBgQ0FSR09fVEFSR0VUXyR7dGhpcy50YXJnZXQudHJpcGxlLnRvVXBwZXJDYXNlKCkucmVwbGFjZSgvLS9nLCAnXycpfV9MSU5LRVJgXG4gICAgY29uc3QgcmFuUGF0aCA9IGAke25ka1BhdGh9L2xsdm0vYmluL2xsdm0tcmFubGliYFxuICAgIGNvbnN0IGFyUGF0aCA9IGAke25ka1BhdGh9L2xsdm0vYmluL2xsdm0tYXJgXG4gICAgY29uc3QgY2NQYXRoID0gYCR7bmRrUGF0aH0vbGx2bS9iaW4vJHt0aGlzLnRhcmdldC50cmlwbGV9LWNsYW5nYFxuICAgIGNvbnN0IGN4eFBhdGggPSBgJHtuZGtQYXRofS9sbHZtL2Jpbi8ke3RoaXMudGFyZ2V0LnRyaXBsZX0tY2xhbmcrK2BcbiAgICBjb25zdCBhc1BhdGggPSBgJHtuZGtQYXRofS9sbHZtL2Jpbi9sbHZtLWFzYFxuICAgIGNvbnN0IGxkUGF0aCA9IGAke25ka1BhdGh9L2xsdm0vYmluL2xkLmxsZGBcbiAgICBjb25zdCBzdHJpcFBhdGggPSBgJHtuZGtQYXRofS9sbHZtL2Jpbi9sbHZtLXN0cmlwYFxuICAgIGNvbnN0IG9iakR1bXBQYXRoID0gYCR7bmRrUGF0aH0vbGx2bS9iaW4vbGx2bS1vYmpkdW1wYFxuICAgIGNvbnN0IG9iakNvcHlQYXRoID0gYCR7bmRrUGF0aH0vbGx2bS9iaW4vbGx2bS1vYmpjb3B5YFxuICAgIGNvbnN0IG5tUGF0aCA9IGAke25ka1BhdGh9L2xsdm0vYmluL2xsdm0tbm1gXG4gICAgY29uc3QgYmluUGF0aCA9IGAke25ka1BhdGh9L2xsdm0vYmluYFxuICAgIGNvbnN0IGxpYlBhdGggPSBgJHtuZGtQYXRofS9sbHZtL2xpYmBcblxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ0xJQkNMQU5HX1BBVEgnLCBsaWJQYXRoKVxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ0RFUF9BVE9NSUMnLCAnY2xhbmdfcnQuYnVpbHRpbnMnKVxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMobGlua2VyTmFtZSwgY2NQYXRoKVxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ1RBUkdFVF9DQycsIGNjUGF0aClcbiAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKCdUQVJHRVRfQ1hYJywgY3h4UGF0aClcbiAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKCdUQVJHRVRfQVInLCBhclBhdGgpXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnVEFSR0VUX1JBTkxJQicsIHJhblBhdGgpXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnVEFSR0VUX0FTJywgYXNQYXRoKVxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ1RBUkdFVF9MRCcsIGxkUGF0aClcbiAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKCdUQVJHRVRfU1RSSVAnLCBzdHJpcFBhdGgpXG4gICAgdGhpcy5zZXRFbnZJZk5vdEV4aXN0cygnVEFSR0VUX09CSkRVTVAnLCBvYmpEdW1wUGF0aClcbiAgICB0aGlzLnNldEVudklmTm90RXhpc3RzKCdUQVJHRVRfT0JKQ09QWScsIG9iakNvcHlQYXRoKVxuICAgIHRoaXMuc2V0RW52SWZOb3RFeGlzdHMoJ1RBUkdFVF9OTScsIG5tUGF0aClcbiAgICB0aGlzLmVudnMuUEFUSCA9IGAke2JpblBhdGh9JHtwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gJzsnIDogJzonfSR7cHJvY2Vzcy5lbnYuUEFUSH1gXG4gIH1cblxuICBwcml2YXRlIHNldEZlYXR1cmVzKCkge1xuICAgIGNvbnN0IGFyZ3MgPSBbXVxuICAgIGlmICh0aGlzLm9wdGlvbnMuYWxsRmVhdHVyZXMgJiYgdGhpcy5vcHRpb25zLm5vRGVmYXVsdEZlYXR1cmVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3Qgc3BlY2lmeSAtLWFsbC1mZWF0dXJlcyBhbmQgLS1uby1kZWZhdWx0LWZlYXR1cmVzIHRvZ2V0aGVyJyxcbiAgICAgIClcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxGZWF0dXJlcykge1xuICAgICAgYXJncy5wdXNoKCctLWFsbC1mZWF0dXJlcycpXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMubm9EZWZhdWx0RmVhdHVyZXMpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1uby1kZWZhdWx0LWZlYXR1cmVzJylcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5mZWF0dXJlcykge1xuICAgICAgYXJncy5wdXNoKCctLWZlYXR1cmVzJywgLi4udGhpcy5vcHRpb25zLmZlYXR1cmVzKVxuICAgIH1cblxuICAgIGRlYnVnKCdTZXQgZmVhdHVyZXMgZmxhZ3M6ICcpXG4gICAgZGVidWcoJyAgJU8nLCBhcmdzKVxuICAgIHRoaXMuYXJncy5wdXNoKC4uLmFyZ3MpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRCeXBhc3NBcmdzKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMucmVsZWFzZSkge1xuICAgICAgdGhpcy5hcmdzLnB1c2goJy0tcmVsZWFzZScpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICB0aGlzLmFyZ3MucHVzaCgnLS12ZXJib3NlJylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnRhcmdldERpcikge1xuICAgICAgdGhpcy5hcmdzLnB1c2goJy0tdGFyZ2V0LWRpcicsIHRoaXMub3B0aW9ucy50YXJnZXREaXIpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5wcm9maWxlKSB7XG4gICAgICB0aGlzLmFyZ3MucHVzaCgnLS1wcm9maWxlJywgdGhpcy5vcHRpb25zLnByb2ZpbGUpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYW5pZmVzdFBhdGgpIHtcbiAgICAgIHRoaXMuYXJncy5wdXNoKCctLW1hbmlmZXN0LXBhdGgnLCB0aGlzLm9wdGlvbnMubWFuaWZlc3RQYXRoKVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuY2FyZ29PcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYXJncy5wdXNoKC4uLnRoaXMub3B0aW9ucy5jYXJnb09wdGlvbnMpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVJbnRlcm1lZGlhdGVUeXBlRGVmRm9sZGVyKCkge1xuICAgIGxldCBmb2xkZXIgPSBqb2luKFxuICAgICAgdGhpcy50YXJnZXREaXIsXG4gICAgICAnbmFwaS1ycycsXG4gICAgICBgJHt0aGlzLmNyYXRlLm5hbWV9LSR7Y3JlYXRlSGFzaCgnc2hhMjU2JylcbiAgICAgICAgLnVwZGF0ZSh0aGlzLmNyYXRlLm1hbmlmZXN0X3BhdGgpXG4gICAgICAgIC51cGRhdGUoQ0xJX1ZFUlNJT04pXG4gICAgICAgIC5kaWdlc3QoJ2hleCcpXG4gICAgICAgIC5zdWJzdHJpbmcoMCwgOCl9YCxcbiAgICApXG5cbiAgICBpZiAoIXRoaXMub3B0aW9ucy5kdHNDYWNoZSkge1xuICAgICAgcm1TeW5jKGZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG4gICAgICBmb2xkZXIgKz0gYF8ke0RhdGUubm93KCl9YFxuICAgIH1cblxuICAgIG1rZGlyQXN5bmMoZm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuXG4gICAgcmV0dXJuIGZvbGRlclxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwb3N0QnVpbGQoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGRlYnVnKGBUcnkgdG8gY3JlYXRlIG91dHB1dCBkaXJlY3Rvcnk6YClcbiAgICAgIGRlYnVnKCcgICVpJywgdGhpcy5vdXRwdXREaXIpXG4gICAgICBhd2FpdCBta2RpckFzeW5jKHRoaXMub3V0cHV0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgICAgZGVidWcoYE91dHB1dCBkaXJlY3RvcnkgY3JlYXRlZGApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIG91dHB1dCBkaXJlY3RvcnkgJHt0aGlzLm91dHB1dERpcn1gLCB7XG4gICAgICAgIGNhdXNlOiBlLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCB3YXNtQmluYXJ5TmFtZSA9IGF3YWl0IHRoaXMuY29weUFydGlmYWN0KClcblxuICAgIC8vIG9ubHkgZm9yIGNkeWxpYlxuICAgIGlmICh0aGlzLmNkeUxpYk5hbWUpIHtcbiAgICAgIGNvbnN0IGlkZW50cyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVUeXBlRGVmKClcbiAgICAgIGNvbnN0IGpzT3V0cHV0ID0gYXdhaXQgdGhpcy53cml0ZUpzQmluZGluZyhpZGVudHMpXG4gICAgICBjb25zdCB3YXNtQmluZGluZ3NPdXRwdXQgPSBhd2FpdCB0aGlzLndyaXRlV2FzaUJpbmRpbmcoXG4gICAgICAgIHdhc21CaW5hcnlOYW1lLFxuICAgICAgICBpZGVudHMsXG4gICAgICApXG4gICAgICBpZiAoanNPdXRwdXQpIHtcbiAgICAgICAgdGhpcy5vdXRwdXRzLnB1c2goanNPdXRwdXQpXG4gICAgICB9XG4gICAgICBpZiAod2FzbUJpbmRpbmdzT3V0cHV0KSB7XG4gICAgICAgIHRoaXMub3V0cHV0cy5wdXNoKC4uLndhc21CaW5kaW5nc091dHB1dClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vdXRwdXRzXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvcHlBcnRpZmFjdCgpIHtcbiAgICBjb25zdCBbc3JjTmFtZSwgZGVzdE5hbWUsIHdhc21CaW5hcnlOYW1lXSA9IHRoaXMuZ2V0QXJ0aWZhY3ROYW1lcygpXG4gICAgaWYgKCFzcmNOYW1lIHx8ICFkZXN0TmFtZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgcHJvZmlsZSA9XG4gICAgICB0aGlzLm9wdGlvbnMucHJvZmlsZSA/PyAodGhpcy5vcHRpb25zLnJlbGVhc2UgPyAncmVsZWFzZScgOiAnZGVidWcnKVxuICAgIGNvbnN0IHNyYyA9IGpvaW4odGhpcy50YXJnZXREaXIsIHRoaXMudGFyZ2V0LnRyaXBsZSwgcHJvZmlsZSwgc3JjTmFtZSlcbiAgICBkZWJ1ZyhgQ29weSBhcnRpZmFjdCBmcm9tOiBbJHtzcmN9XWApXG4gICAgY29uc3QgZGVzdCA9IGpvaW4odGhpcy5vdXRwdXREaXIsIGRlc3ROYW1lKVxuICAgIGNvbnN0IGlzV2FzbSA9IGRlc3QuZW5kc1dpdGgoJy53YXNtJylcblxuICAgIHRyeSB7XG4gICAgICBpZiAoYXdhaXQgZmlsZUV4aXN0cyhkZXN0KSkge1xuICAgICAgICBkZWJ1ZygnT2xkIGFydGlmYWN0IGZvdW5kLCByZW1vdmUgaXQgZmlyc3QnKVxuICAgICAgICBhd2FpdCB1bmxpbmtBc3luYyhkZXN0KVxuICAgICAgfVxuICAgICAgZGVidWcoJ0NvcHkgYXJ0aWZhY3QgdG86JylcbiAgICAgIGRlYnVnKCcgICVpJywgZGVzdClcbiAgICAgIGlmIChpc1dhc20pIHtcbiAgICAgICAgY29uc3QgeyBNb2R1bGVDb25maWcgfSA9IGF3YWl0IGltcG9ydCgnQG5hcGktcnMvd2FzbS10b29scycpXG4gICAgICAgIGRlYnVnKCdHZW5lcmF0ZSBkZWJ1ZyB3YXNtIG1vZHVsZScpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGVidWdXYXNtTW9kdWxlID0gbmV3IE1vZHVsZUNvbmZpZygpXG4gICAgICAgICAgICAuZ2VuZXJhdGVEd2FyZih0cnVlKVxuICAgICAgICAgICAgLmdlbmVyYXRlTmFtZVNlY3Rpb24odHJ1ZSlcbiAgICAgICAgICAgIC5nZW5lcmF0ZVByb2R1Y2Vyc1NlY3Rpb24odHJ1ZSlcbiAgICAgICAgICAgIC5wcmVzZXJ2ZUNvZGVUcmFuc2Zvcm0odHJ1ZSlcbiAgICAgICAgICAgIC5zdHJpY3RWYWxpZGF0ZShmYWxzZSlcbiAgICAgICAgICAgIC5wYXJzZShhd2FpdCByZWFkRmlsZUFzeW5jKHNyYykpXG4gICAgICAgICAgY29uc3QgZGVidWdXYXNtQmluYXJ5ID0gZGVidWdXYXNtTW9kdWxlLmVtaXRXYXNtKHRydWUpXG4gICAgICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoXG4gICAgICAgICAgICBkZXN0LnJlcGxhY2UoL1xcLndhc20kLywgJy5kZWJ1Zy53YXNtJyksXG4gICAgICAgICAgICBkZWJ1Z1dhc21CaW5hcnksXG4gICAgICAgICAgKVxuICAgICAgICAgIGRlYnVnKCdHZW5lcmF0ZSByZWxlYXNlIHdhc20gbW9kdWxlJylcbiAgICAgICAgICBjb25zdCByZWxlYXNlV2FzbU1vZHVsZSA9IG5ldyBNb2R1bGVDb25maWcoKVxuICAgICAgICAgICAgLmdlbmVyYXRlRHdhcmYoZmFsc2UpXG4gICAgICAgICAgICAuZ2VuZXJhdGVOYW1lU2VjdGlvbihmYWxzZSlcbiAgICAgICAgICAgIC5nZW5lcmF0ZVByb2R1Y2Vyc1NlY3Rpb24oZmFsc2UpXG4gICAgICAgICAgICAucHJlc2VydmVDb2RlVHJhbnNmb3JtKGZhbHNlKVxuICAgICAgICAgICAgLnN0cmljdFZhbGlkYXRlKGZhbHNlKVxuICAgICAgICAgICAgLm9ubHlTdGFibGVGZWF0dXJlcyhmYWxzZSlcbiAgICAgICAgICAgIC5wYXJzZShkZWJ1Z1dhc21CaW5hcnkpXG4gICAgICAgICAgY29uc3QgcmVsZWFzZVdhc21CaW5hcnkgPSByZWxlYXNlV2FzbU1vZHVsZS5lbWl0V2FzbShmYWxzZSlcbiAgICAgICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhkZXN0LCByZWxlYXNlV2FzbUJpbmFyeSlcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGRlYnVnLndhcm4oXG4gICAgICAgICAgICBgRmFpbGVkIHRvIGdlbmVyYXRlIGRlYnVnIHdhc20gbW9kdWxlOiAkeyhlIGFzIGFueSkubWVzc2FnZSA/PyBlfWAsXG4gICAgICAgICAgKVxuICAgICAgICAgIGF3YWl0IGNvcHlGaWxlQXN5bmMoc3JjLCBkZXN0KVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBjb3B5RmlsZUFzeW5jKHNyYywgZGVzdClcbiAgICAgIH1cbiAgICAgIHRoaXMub3V0cHV0cy5wdXNoKHtcbiAgICAgICAga2luZDogZGVzdC5lbmRzV2l0aCgnLm5vZGUnKSA/ICdub2RlJyA6IGlzV2FzbSA/ICd3YXNtJyA6ICdleGUnLFxuICAgICAgICBwYXRoOiBkZXN0LFxuICAgICAgfSlcbiAgICAgIHJldHVybiB3YXNtQmluYXJ5TmFtZSA/IGpvaW4odGhpcy5vdXRwdXREaXIsIHdhc21CaW5hcnlOYW1lKSA6IG51bGxcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBjb3B5IGFydGlmYWN0JywgeyBjYXVzZTogZSB9KVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXJ0aWZhY3ROYW1lcygpIHtcbiAgICBpZiAodGhpcy5jZHlMaWJOYW1lKSB7XG4gICAgICBjb25zdCBjZHlMaWIgPSB0aGlzLmNkeUxpYk5hbWUucmVwbGFjZSgvLS9nLCAnXycpXG4gICAgICBjb25zdCB3YXNpVGFyZ2V0ID0gdGhpcy5jb25maWcudGFyZ2V0cy5maW5kKCh0KSA9PiB0LnBsYXRmb3JtID09PSAnd2FzaScpXG5cbiAgICAgIGNvbnN0IHNyY05hbWUgPVxuICAgICAgICB0aGlzLnRhcmdldC5wbGF0Zm9ybSA9PT0gJ2RhcndpbidcbiAgICAgICAgICA/IGBsaWIke2NkeUxpYn0uZHlsaWJgXG4gICAgICAgICAgOiB0aGlzLnRhcmdldC5wbGF0Zm9ybSA9PT0gJ3dpbjMyJ1xuICAgICAgICAgICAgPyBgJHtjZHlMaWJ9LmRsbGBcbiAgICAgICAgICAgIDogdGhpcy50YXJnZXQucGxhdGZvcm0gPT09ICd3YXNpJyB8fCB0aGlzLnRhcmdldC5wbGF0Zm9ybSA9PT0gJ3dhc20nXG4gICAgICAgICAgICAgID8gYCR7Y2R5TGlifS53YXNtYFxuICAgICAgICAgICAgICA6IGBsaWIke2NkeUxpYn0uc29gXG5cbiAgICAgIGxldCBkZXN0TmFtZSA9IHRoaXMuY29uZmlnLmJpbmFyeU5hbWVcbiAgICAgIC8vIGFkZCBwbGF0Zm9ybSBzdWZmaXggdG8gYmluYXJ5IG5hbWVcbiAgICAgIC8vIGluZGV4Wy5saW51eC14NjQtZ251XS5ub2RlXG4gICAgICAvLyAgICAgICBeXl5eXl5eXl5eXl5eXlxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wbGF0Zm9ybSkge1xuICAgICAgICBkZXN0TmFtZSArPSBgLiR7dGhpcy50YXJnZXQucGxhdGZvcm1BcmNoQUJJfWBcbiAgICAgIH1cbiAgICAgIGlmIChzcmNOYW1lLmVuZHNXaXRoKCcud2FzbScpKSB7XG4gICAgICAgIGRlc3ROYW1lICs9ICcud2FzbSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlc3ROYW1lICs9ICcubm9kZSdcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgc3JjTmFtZSxcbiAgICAgICAgZGVzdE5hbWUsXG4gICAgICAgIHdhc2lUYXJnZXRcbiAgICAgICAgICA/IGAke3RoaXMuY29uZmlnLmJpbmFyeU5hbWV9LiR7d2FzaVRhcmdldC5wbGF0Zm9ybUFyY2hBQkl9Lndhc21gXG4gICAgICAgICAgOiBudWxsLFxuICAgICAgXVxuICAgIH0gZWxzZSBpZiAodGhpcy5iaW5OYW1lKSB7XG4gICAgICBjb25zdCBzcmNOYW1lID1cbiAgICAgICAgdGhpcy50YXJnZXQucGxhdGZvcm0gPT09ICd3aW4zMicgPyBgJHt0aGlzLmJpbk5hbWV9LmV4ZWAgOiB0aGlzLmJpbk5hbWVcblxuICAgICAgcmV0dXJuIFtzcmNOYW1lLCBzcmNOYW1lXVxuICAgIH1cblxuICAgIHJldHVybiBbXVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZW5lcmF0ZVR5cGVEZWYoKSB7XG4gICAgY29uc3QgdHlwZURlZkRpciA9IHRoaXMuZW52cy5OQVBJX1RZUEVfREVGX1RNUF9GT0xERVJcbiAgICBpZiAoIXRoaXMuZW5hYmxlVHlwZURlZikge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgY29uc3QgeyBleHBvcnRzLCBkdHMgfSA9IGF3YWl0IGdlbmVyYXRlVHlwZURlZih7XG4gICAgICB0eXBlRGVmRGlyLFxuICAgICAgbm9EdHNIZWFkZXI6IHRoaXMub3B0aW9ucy5ub0R0c0hlYWRlcixcbiAgICAgIGR0c0hlYWRlcjogdGhpcy5vcHRpb25zLmR0c0hlYWRlcixcbiAgICAgIGNvbmZpZ0R0c0hlYWRlcjogdGhpcy5jb25maWcuZHRzSGVhZGVyLFxuICAgICAgY29uZmlnRHRzSGVhZGVyRmlsZTogdGhpcy5jb25maWcuZHRzSGVhZGVyRmlsZSxcbiAgICAgIGNvbnN0RW51bTogdGhpcy5vcHRpb25zLmNvbnN0RW51bSA/PyB0aGlzLmNvbmZpZy5jb25zdEVudW0sXG4gICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QsXG4gICAgfSlcblxuICAgIGNvbnN0IGRlc3QgPSBqb2luKHRoaXMub3V0cHV0RGlyLCB0aGlzLm9wdGlvbnMuZHRzID8/ICdpbmRleC5kLnRzJylcblxuICAgIHRyeSB7XG4gICAgICBkZWJ1ZygnV3JpdGluZyB0eXBlIGRlZiB0bzonKVxuICAgICAgZGVidWcoJyAgJWknLCBkZXN0KVxuICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoZGVzdCwgZHRzLCAndXRmLTgnKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGRlYnVnLmVycm9yKCdGYWlsZWQgdG8gd3JpdGUgdHlwZSBkZWYgZmlsZScpXG4gICAgICBkZWJ1Zy5lcnJvcihlIGFzIEVycm9yKVxuICAgIH1cblxuICAgIGlmIChleHBvcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGRlc3QgPSBqb2luKHRoaXMub3V0cHV0RGlyLCB0aGlzLm9wdGlvbnMuZHRzID8/ICdpbmRleC5kLnRzJylcbiAgICAgIHRoaXMub3V0cHV0cy5wdXNoKHsga2luZDogJ2R0cycsIHBhdGg6IGRlc3QgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gZXhwb3J0c1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB3cml0ZUpzQmluZGluZyhpZGVudHM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHdyaXRlSnNCaW5kaW5nKHtcbiAgICAgIHBsYXRmb3JtOiB0aGlzLm9wdGlvbnMucGxhdGZvcm0sXG4gICAgICBub0pzQmluZGluZzogdGhpcy5vcHRpb25zLm5vSnNCaW5kaW5nLFxuICAgICAgaWRlbnRzLFxuICAgICAganNCaW5kaW5nOiB0aGlzLm9wdGlvbnMuanNCaW5kaW5nLFxuICAgICAgZXNtOiB0aGlzLm9wdGlvbnMuZXNtLFxuICAgICAgYmluYXJ5TmFtZTogdGhpcy5jb25maWcuYmluYXJ5TmFtZSxcbiAgICAgIHBhY2thZ2VOYW1lOiB0aGlzLm9wdGlvbnMuanNQYWNrYWdlTmFtZSA/PyB0aGlzLmNvbmZpZy5wYWNrYWdlTmFtZSxcbiAgICAgIHZlcnNpb246IHByb2Nlc3MuZW52Lm5wbV9uZXdfdmVyc2lvbiA/PyB0aGlzLmNvbmZpZy5wYWNrYWdlSnNvbi52ZXJzaW9uLFxuICAgICAgb3V0cHV0RGlyOiB0aGlzLm91dHB1dERpcixcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB3cml0ZVdhc2lCaW5kaW5nKFxuICAgIGRpc3RGaWxlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCxcbiAgICBpZGVudHM6IHN0cmluZ1tdLFxuICApIHtcbiAgICBpZiAoZGlzdEZpbGVOYW1lKSB7XG4gICAgICBjb25zdCB7IG5hbWUsIGRpciB9ID0gcGFyc2UoZGlzdEZpbGVOYW1lKVxuICAgICAgY29uc3QgYmluZGluZ1BhdGggPSBqb2luKGRpciwgYCR7dGhpcy5jb25maWcuYmluYXJ5TmFtZX0ud2FzaS5janNgKVxuICAgICAgY29uc3QgYnJvd3NlckJpbmRpbmdQYXRoID0gam9pbihcbiAgICAgICAgZGlyLFxuICAgICAgICBgJHt0aGlzLmNvbmZpZy5iaW5hcnlOYW1lfS53YXNpLWJyb3dzZXIuanNgLFxuICAgICAgKVxuICAgICAgY29uc3Qgd29ya2VyUGF0aCA9IGpvaW4oZGlyLCAnd2FzaS13b3JrZXIubWpzJylcbiAgICAgIGNvbnN0IGJyb3dzZXJXb3JrZXJQYXRoID0gam9pbihkaXIsICd3YXNpLXdvcmtlci1icm93c2VyLm1qcycpXG4gICAgICBjb25zdCBicm93c2VyRW50cnlQYXRoID0gam9pbihkaXIsICdicm93c2VyLmpzJylcbiAgICAgIGNvbnN0IGV4cG9ydHNDb2RlID1cbiAgICAgICAgYG1vZHVsZS5leHBvcnRzID0gX19uYXBpTW9kdWxlLmV4cG9ydHNcXG5gICtcbiAgICAgICAgaWRlbnRzXG4gICAgICAgICAgLm1hcChcbiAgICAgICAgICAgIChpZGVudCkgPT5cbiAgICAgICAgICAgICAgYG1vZHVsZS5leHBvcnRzLiR7aWRlbnR9ID0gX19uYXBpTW9kdWxlLmV4cG9ydHMuJHtpZGVudH1gLFxuICAgICAgICAgIClcbiAgICAgICAgICAuam9pbignXFxuJylcbiAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKFxuICAgICAgICBiaW5kaW5nUGF0aCxcbiAgICAgICAgY3JlYXRlV2FzaUJpbmRpbmcoXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICB0aGlzLmNvbmZpZy5wYWNrYWdlTmFtZSxcbiAgICAgICAgICB0aGlzLmNvbmZpZy53YXNtPy5pbml0aWFsTWVtb3J5LFxuICAgICAgICAgIHRoaXMuY29uZmlnLndhc20/Lm1heGltdW1NZW1vcnksXG4gICAgICAgICkgK1xuICAgICAgICAgIGV4cG9ydHNDb2RlICtcbiAgICAgICAgICAnXFxuJyxcbiAgICAgICAgJ3V0ZjgnLFxuICAgICAgKVxuICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoXG4gICAgICAgIGJyb3dzZXJCaW5kaW5nUGF0aCxcbiAgICAgICAgY3JlYXRlV2FzaUJyb3dzZXJCaW5kaW5nKFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgdGhpcy5jb25maWcud2FzbT8uaW5pdGlhbE1lbW9yeSxcbiAgICAgICAgICB0aGlzLmNvbmZpZy53YXNtPy5tYXhpbXVtTWVtb3J5LFxuICAgICAgICAgIHRoaXMuY29uZmlnLndhc20/LmJyb3dzZXI/LmZzLFxuICAgICAgICAgIHRoaXMuY29uZmlnLndhc20/LmJyb3dzZXI/LmFzeW5jSW5pdCxcbiAgICAgICAgICB0aGlzLmNvbmZpZy53YXNtPy5icm93c2VyPy5idWZmZXIsXG4gICAgICAgICkgK1xuICAgICAgICAgIGBleHBvcnQgZGVmYXVsdCBfX25hcGlNb2R1bGUuZXhwb3J0c1xcbmAgK1xuICAgICAgICAgIGlkZW50c1xuICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgKGlkZW50KSA9PlxuICAgICAgICAgICAgICAgIGBleHBvcnQgY29uc3QgJHtpZGVudH0gPSBfX25hcGlNb2R1bGUuZXhwb3J0cy4ke2lkZW50fWAsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuam9pbignXFxuJykgK1xuICAgICAgICAgICdcXG4nLFxuICAgICAgICAndXRmOCcsXG4gICAgICApXG4gICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyh3b3JrZXJQYXRoLCBXQVNJX1dPUktFUl9URU1QTEFURSwgJ3V0ZjgnKVxuICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoXG4gICAgICAgIGJyb3dzZXJXb3JrZXJQYXRoLFxuICAgICAgICBjcmVhdGVXYXNpQnJvd3NlcldvcmtlckJpbmRpbmcodGhpcy5jb25maWcud2FzbT8uYnJvd3Nlcj8uZnMgPz8gZmFsc2UpLFxuICAgICAgICAndXRmOCcsXG4gICAgICApXG4gICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgICAgYnJvd3NlckVudHJ5UGF0aCxcbiAgICAgICAgYGV4cG9ydCAqIGZyb20gJyR7dGhpcy5jb25maWcucGFja2FnZU5hbWV9LXdhc20zMi13YXNpJ1xcbmAsXG4gICAgICApXG4gICAgICByZXR1cm4gW1xuICAgICAgICB7IGtpbmQ6ICdqcycsIHBhdGg6IGJpbmRpbmdQYXRoIH0sXG4gICAgICAgIHsga2luZDogJ2pzJywgcGF0aDogYnJvd3NlckJpbmRpbmdQYXRoIH0sXG4gICAgICAgIHsga2luZDogJ2pzJywgcGF0aDogd29ya2VyUGF0aCB9LFxuICAgICAgICB7IGtpbmQ6ICdqcycsIHBhdGg6IGJyb3dzZXJXb3JrZXJQYXRoIH0sXG4gICAgICAgIHsga2luZDogJ2pzJywgcGF0aDogYnJvd3NlckVudHJ5UGF0aCB9LFxuICAgICAgXSBzYXRpc2ZpZXMgT3V0cHV0W11cbiAgICB9XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICBwcml2YXRlIHNldEVudklmTm90RXhpc3RzKGVudjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCFwcm9jZXNzLmVudltlbnZdKSB7XG4gICAgICB0aGlzLmVudnNbZW52XSA9IHZhbHVlXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3JpdGVKc0JpbmRpbmdPcHRpb25zIHtcbiAgcGxhdGZvcm0/OiBib29sZWFuXG4gIG5vSnNCaW5kaW5nPzogYm9vbGVhblxuICBpZGVudHM6IHN0cmluZ1tdXG4gIGpzQmluZGluZz86IHN0cmluZ1xuICBlc20/OiBib29sZWFuXG4gIGJpbmFyeU5hbWU6IHN0cmluZ1xuICBwYWNrYWdlTmFtZTogc3RyaW5nXG4gIHZlcnNpb246IHN0cmluZ1xuICBvdXRwdXREaXI6IHN0cmluZ1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVKc0JpbmRpbmcoXG4gIG9wdGlvbnM6IFdyaXRlSnNCaW5kaW5nT3B0aW9ucyxcbik6IFByb21pc2U8T3V0cHV0IHwgdW5kZWZpbmVkPiB7XG4gIGlmIChcbiAgICAhb3B0aW9ucy5wbGF0Zm9ybSB8fFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLW51bGxpc2gtY29hbGVzY2luZ1xuICAgIG9wdGlvbnMubm9Kc0JpbmRpbmcgfHxcbiAgICBvcHRpb25zLmlkZW50cy5sZW5ndGggPT09IDBcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCBuYW1lID0gb3B0aW9ucy5qc0JpbmRpbmcgPz8gJ2luZGV4LmpzJ1xuXG4gIGNvbnN0IGNyZWF0ZUJpbmRpbmcgPSBvcHRpb25zLmVzbSA/IGNyZWF0ZUVzbUJpbmRpbmcgOiBjcmVhdGVDanNCaW5kaW5nXG4gIGNvbnN0IGJpbmRpbmcgPSBjcmVhdGVCaW5kaW5nKFxuICAgIG9wdGlvbnMuYmluYXJ5TmFtZSxcbiAgICBvcHRpb25zLnBhY2thZ2VOYW1lLFxuICAgIG9wdGlvbnMuaWRlbnRzLFxuICAgIC8vIGluIG5wbSBwcmV2ZXJzaW9uIGhvb2tcbiAgICBvcHRpb25zLnZlcnNpb24sXG4gIClcblxuICB0cnkge1xuICAgIGNvbnN0IGRlc3QgPSBqb2luKG9wdGlvbnMub3V0cHV0RGlyLCBuYW1lKVxuICAgIGRlYnVnKCdXcml0aW5nIGpzIGJpbmRpbmcgdG86JylcbiAgICBkZWJ1ZygnICAlaScsIGRlc3QpXG4gICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoZGVzdCwgYmluZGluZywgJ3V0Zi04JylcbiAgICByZXR1cm4geyBraW5kOiAnanMnLCBwYXRoOiBkZXN0IH0gc2F0aXNmaWVzIE91dHB1dFxuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gd3JpdGUganMgYmluZGluZyBmaWxlJywgeyBjYXVzZTogZSB9KVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVUeXBlRGVmT3B0aW9ucyB7XG4gIHR5cGVEZWZEaXI6IHN0cmluZ1xuICBub0R0c0hlYWRlcj86IGJvb2xlYW5cbiAgZHRzSGVhZGVyPzogc3RyaW5nXG4gIGR0c0hlYWRlckZpbGU/OiBzdHJpbmdcbiAgY29uZmlnRHRzSGVhZGVyPzogc3RyaW5nXG4gIGNvbmZpZ0R0c0hlYWRlckZpbGU/OiBzdHJpbmdcbiAgY29uc3RFbnVtPzogYm9vbGVhblxuICBjd2Q6IHN0cmluZ1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVUeXBlRGVmKFxuICBvcHRpb25zOiBHZW5lcmF0ZVR5cGVEZWZPcHRpb25zLFxuKTogUHJvbWlzZTx7IGV4cG9ydHM6IHN0cmluZ1tdOyBkdHM6IHN0cmluZyB9PiB7XG4gIGlmICghKGF3YWl0IGRpckV4aXN0c0FzeW5jKG9wdGlvbnMudHlwZURlZkRpcikpKSB7XG4gICAgcmV0dXJuIHsgZXhwb3J0czogW10sIGR0czogJycgfVxuICB9XG5cbiAgbGV0IGhlYWRlciA9ICcnXG4gIGxldCBkdHMgPSAnJ1xuICBsZXQgZXhwb3J0czogc3RyaW5nW10gPSBbXVxuXG4gIGlmICghb3B0aW9ucy5ub0R0c0hlYWRlcikge1xuICAgIGNvbnN0IGR0c0hlYWRlciA9IG9wdGlvbnMuZHRzSGVhZGVyID8/IG9wdGlvbnMuY29uZmlnRHRzSGVhZGVyXG4gICAgLy8gYGR0c0hlYWRlckZpbGVgIGluIGNvbmZpZyA+IGBkdHNIZWFkZXJgIGluIGNsaSBmbGFnID4gYGR0c0hlYWRlcmAgaW4gY29uZmlnXG4gICAgaWYgKG9wdGlvbnMuY29uZmlnRHRzSGVhZGVyRmlsZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaGVhZGVyID0gYXdhaXQgcmVhZEZpbGVBc3luYyhcbiAgICAgICAgICBqb2luKG9wdGlvbnMuY3dkLCBvcHRpb25zLmNvbmZpZ0R0c0hlYWRlckZpbGUpLFxuICAgICAgICAgICd1dGYtOCcsXG4gICAgICAgIClcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZGVidWcud2FybihcbiAgICAgICAgICBgRmFpbGVkIHRvIHJlYWQgZHRzIGhlYWRlciBmaWxlICR7b3B0aW9ucy5jb25maWdEdHNIZWFkZXJGaWxlfWAsXG4gICAgICAgICAgZSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZHRzSGVhZGVyKSB7XG4gICAgICBoZWFkZXIgPSBkdHNIZWFkZXJcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZGVyID0gREVGQVVMVF9UWVBFX0RFRl9IRUFERVJcbiAgICB9XG4gIH1cblxuICBjb25zdCBmaWxlcyA9IGF3YWl0IHJlYWRkaXJBc3luYyhvcHRpb25zLnR5cGVEZWZEaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KVxuXG4gIGlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgZGVidWcoJ05vIHR5cGUgZGVmIGZpbGVzIGZvdW5kLiBTa2lwIGdlbmVyYXRpbmcgZHRzIGZpbGUuJylcbiAgICByZXR1cm4geyBleHBvcnRzOiBbXSwgZHRzOiAnJyB9XG4gIH1cblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBpZiAoIWZpbGUuaXNGaWxlKCkpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgeyBkdHM6IGZpbGVEdHMsIGV4cG9ydHM6IGZpbGVFeHBvcnRzIH0gPSBhd2FpdCBwcm9jZXNzVHlwZURlZihcbiAgICAgIGpvaW4ob3B0aW9ucy50eXBlRGVmRGlyLCBmaWxlLm5hbWUpLFxuICAgICAgb3B0aW9ucy5jb25zdEVudW0gPz8gdHJ1ZSxcbiAgICApXG5cbiAgICBkdHMgKz0gZmlsZUR0c1xuICAgIGV4cG9ydHMucHVzaCguLi5maWxlRXhwb3J0cylcbiAgfVxuXG4gIGlmIChkdHMuaW5kZXhPZignRXh0ZXJuYWxPYmplY3Q8JykgPiAtMSkge1xuICAgIGhlYWRlciArPSBgXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBFeHRlcm5hbE9iamVjdDxUPiB7XG4gIHJlYWRvbmx5ICcnOiB7XG4gICAgcmVhZG9ubHkgJyc6IHVuaXF1ZSBzeW1ib2xcbiAgICBbSzogc3ltYm9sXTogVFxuICB9XG59XG5gXG4gIH1cblxuICBpZiAoZHRzLmluZGV4T2YoJ1R5cGVkQXJyYXknKSA+IC0xKSB7XG4gICAgaGVhZGVyICs9IGBcbmV4cG9ydCB0eXBlIFR5cGVkQXJyYXkgPSBJbnQ4QXJyYXkgfCBVaW50OEFycmF5IHwgVWludDhDbGFtcGVkQXJyYXkgfCBJbnQxNkFycmF5IHwgVWludDE2QXJyYXkgfCBJbnQzMkFycmF5IHwgVWludDMyQXJyYXkgfCBGbG9hdDMyQXJyYXkgfCBGbG9hdDY0QXJyYXkgfCBCaWdJbnQ2NEFycmF5IHwgQmlnVWludDY0QXJyYXlcbmBcbiAgfVxuXG4gIGR0cyA9IGhlYWRlciArIGR0c1xuXG4gIHJldHVybiB7XG4gICAgZXhwb3J0cyxcbiAgICBkdHMsXG4gIH1cbn1cbiIsIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgY29kZWdlbi9pbmRleC50c1xuLy8gRG8gbm90IGVkaXQgdGhpcyBmaWxlIG1hbnVhbGx5XG5pbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tICdjbGlwYW5pb24nXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ3JlYXRlTnBtRGlyc0NvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW1snY3JlYXRlLW5wbS1kaXJzJ11dXG5cbiAgc3RhdGljIHVzYWdlID0gQ29tbWFuZC5Vc2FnZSh7XG4gICAgZGVzY3JpcHRpb246ICdDcmVhdGUgbnBtIHBhY2thZ2UgZGlycyBmb3IgZGlmZmVyZW50IHBsYXRmb3JtcycsXG4gIH0pXG5cbiAgY3dkID0gT3B0aW9uLlN0cmluZygnLS1jd2QnLCBwcm9jZXNzLmN3ZCgpLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoJyxcbiAgfSlcblxuICBjb25maWdQYXRoPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1jb25maWctcGF0aCwtYycsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGUnLFxuICB9KVxuXG4gIHBhY2thZ2VKc29uUGF0aCA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZS1qc29uLXBhdGgnLCAncGFja2FnZS5qc29uJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgcGFja2FnZS5qc29uYCcsXG4gIH0pXG5cbiAgbnBtRGlyID0gT3B0aW9uLlN0cmluZygnLS1ucG0tZGlyJywgJ25wbScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dCcsXG4gIH0pXG5cbiAgZHJ5UnVuID0gT3B0aW9uLkJvb2xlYW4oJy0tZHJ5LXJ1bicsIGZhbHNlLCB7XG4gICAgZGVzY3JpcHRpb246ICdEcnkgcnVuIHdpdGhvdXQgdG91Y2hpbmcgZmlsZSBzeXN0ZW0nLFxuICB9KVxuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN3ZDogdGhpcy5jd2QsXG4gICAgICBjb25maWdQYXRoOiB0aGlzLmNvbmZpZ1BhdGgsXG4gICAgICBwYWNrYWdlSnNvblBhdGg6IHRoaXMucGFja2FnZUpzb25QYXRoLFxuICAgICAgbnBtRGlyOiB0aGlzLm5wbURpcixcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIG5wbSBwYWNrYWdlIGRpcnMgZm9yIGRpZmZlcmVudCBwbGF0Zm9ybXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVOcG1EaXJzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGhcbiAgICpcbiAgICogQGRlZmF1bHQgcHJvY2Vzcy5jd2QoKVxuICAgKi9cbiAgY3dkPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAqL1xuICBjb25maWdQYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBwYWNrYWdlLmpzb25gXG4gICAqXG4gICAqIEBkZWZhdWx0ICdwYWNrYWdlLmpzb24nXG4gICAqL1xuICBwYWNrYWdlSnNvblBhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dFxuICAgKlxuICAgKiBAZGVmYXVsdCAnbnBtJ1xuICAgKi9cbiAgbnBtRGlyPzogc3RyaW5nXG4gIC8qKlxuICAgKiBEcnkgcnVuIHdpdGhvdXQgdG91Y2hpbmcgZmlsZSBzeXN0ZW1cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGVmYXVsdENyZWF0ZU5wbURpcnNPcHRpb25zKFxuICBvcHRpb25zOiBDcmVhdGVOcG1EaXJzT3B0aW9ucyxcbikge1xuICByZXR1cm4ge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBwYWNrYWdlSnNvblBhdGg6ICdwYWNrYWdlLmpzb24nLFxuICAgIG5wbURpcjogJ25wbScsXG4gICAgZHJ5UnVuOiBmYWxzZSxcbiAgICAuLi5vcHRpb25zLFxuICB9XG59XG4iLCJpbXBvcnQgeyBqb2luLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ3NlbXZlcidcblxuaW1wb3J0IHtcbiAgYXBwbHlEZWZhdWx0Q3JlYXRlTnBtRGlyc09wdGlvbnMsXG4gIHR5cGUgQ3JlYXRlTnBtRGlyc09wdGlvbnMsXG59IGZyb20gJy4uL2RlZi9jcmVhdGUtbnBtLWRpcnMuanMnXG5pbXBvcnQge1xuICBkZWJ1Z0ZhY3RvcnksXG4gIHJlYWROYXBpQ29uZmlnLFxuICBta2RpckFzeW5jIGFzIHJhd01rZGlyQXN5bmMsXG4gIHBpY2ssXG4gIHdyaXRlRmlsZUFzeW5jIGFzIHJhd1dyaXRlRmlsZUFzeW5jLFxuICB0eXBlIFRhcmdldCxcbiAgdHlwZSBDb21tb25QYWNrYWdlSnNvbkZpZWxkcyxcbn0gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnXG5cbmNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCdjcmVhdGUtbnBtLWRpcnMnKVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VNZXRhIHtcbiAgJ2Rpc3QtdGFncyc6IHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlTnBtRGlycyh1c2VyT3B0aW9uczogQ3JlYXRlTnBtRGlyc09wdGlvbnMpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGFwcGx5RGVmYXVsdENyZWF0ZU5wbURpcnNPcHRpb25zKHVzZXJPcHRpb25zKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIG1rZGlyQXN5bmMoZGlyOiBzdHJpbmcpIHtcbiAgICBkZWJ1ZygnVHJ5IHRvIGNyZWF0ZSBkaXI6ICVpJywgZGlyKVxuICAgIGlmIChvcHRpb25zLmRyeVJ1bikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYXdhaXQgcmF3TWtkaXJBc3luYyhkaXIsIHtcbiAgICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gd3JpdGVGaWxlQXN5bmMoZmlsZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpIHtcbiAgICBkZWJ1ZygnV3JpdGluZyBmaWxlICVpJywgZmlsZSlcblxuICAgIGlmIChvcHRpb25zLmRyeVJ1bikge1xuICAgICAgZGVidWcoY29udGVudClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGF3YWl0IHJhd1dyaXRlRmlsZUFzeW5jKGZpbGUsIGNvbnRlbnQpXG4gIH1cblxuICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSByZXNvbHZlKG9wdGlvbnMuY3dkLCBvcHRpb25zLnBhY2thZ2VKc29uUGF0aClcbiAgY29uc3QgbnBtUGF0aCA9IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMubnBtRGlyKVxuXG4gIGRlYnVnKGBSZWFkIGNvbnRlbnQgZnJvbSBbJHtvcHRpb25zLmNvbmZpZ1BhdGggPz8gcGFja2FnZUpzb25QYXRofV1gKVxuXG4gIGNvbnN0IHsgdGFyZ2V0cywgYmluYXJ5TmFtZSwgcGFja2FnZU5hbWUsIHBhY2thZ2VKc29uIH0gPVxuICAgIGF3YWl0IHJlYWROYXBpQ29uZmlnKFxuICAgICAgcGFja2FnZUpzb25QYXRoLFxuICAgICAgb3B0aW9ucy5jb25maWdQYXRoID8gcmVzb2x2ZShvcHRpb25zLmN3ZCwgb3B0aW9ucy5jb25maWdQYXRoKSA6IHVuZGVmaW5lZCxcbiAgICApXG5cbiAgZm9yIChjb25zdCB0YXJnZXQgb2YgdGFyZ2V0cykge1xuICAgIGNvbnN0IHRhcmdldERpciA9IGpvaW4obnBtUGF0aCwgYCR7dGFyZ2V0LnBsYXRmb3JtQXJjaEFCSX1gKVxuICAgIGF3YWl0IG1rZGlyQXN5bmModGFyZ2V0RGlyKVxuXG4gICAgY29uc3QgYmluYXJ5RmlsZU5hbWUgPVxuICAgICAgdGFyZ2V0LmFyY2ggPT09ICd3YXNtMzInXG4gICAgICAgID8gYCR7YmluYXJ5TmFtZX0uJHt0YXJnZXQucGxhdGZvcm1BcmNoQUJJfS53YXNtYFxuICAgICAgICA6IGAke2JpbmFyeU5hbWV9LiR7dGFyZ2V0LnBsYXRmb3JtQXJjaEFCSX0ubm9kZWBcbiAgICBjb25zdCBzY29wZWRQYWNrYWdlSnNvbjogQ29tbW9uUGFja2FnZUpzb25GaWVsZHMgPSB7XG4gICAgICBuYW1lOiBgJHtwYWNrYWdlTmFtZX0tJHt0YXJnZXQucGxhdGZvcm1BcmNoQUJJfWAsXG4gICAgICB2ZXJzaW9uOiBwYWNrYWdlSnNvbi52ZXJzaW9uLFxuICAgICAgY3B1OiB0YXJnZXQuYXJjaCAhPT0gJ3VuaXZlcnNhbCcgPyBbdGFyZ2V0LmFyY2hdIDogdW5kZWZpbmVkLFxuICAgICAgbWFpbjogYmluYXJ5RmlsZU5hbWUsXG4gICAgICBmaWxlczogW2JpbmFyeUZpbGVOYW1lXSxcbiAgICAgIC4uLnBpY2soXG4gICAgICAgIHBhY2thZ2VKc29uLFxuICAgICAgICAnZGVzY3JpcHRpb24nLFxuICAgICAgICAna2V5d29yZHMnLFxuICAgICAgICAnYXV0aG9yJyxcbiAgICAgICAgJ2F1dGhvcnMnLFxuICAgICAgICAnaG9tZXBhZ2UnLFxuICAgICAgICAnbGljZW5zZScsXG4gICAgICAgICdlbmdpbmVzJyxcbiAgICAgICAgJ3JlcG9zaXRvcnknLFxuICAgICAgICAnYnVncycsXG4gICAgICApLFxuICAgIH1cbiAgICBpZiAocGFja2FnZUpzb24ucHVibGlzaENvbmZpZykge1xuICAgICAgc2NvcGVkUGFja2FnZUpzb24ucHVibGlzaENvbmZpZyA9IHBpY2soXG4gICAgICAgIHBhY2thZ2VKc29uLnB1Ymxpc2hDb25maWcsXG4gICAgICAgICdyZWdpc3RyeScsXG4gICAgICAgICdhY2Nlc3MnLFxuICAgICAgKVxuICAgIH1cbiAgICBpZiAodGFyZ2V0LmFyY2ggIT09ICd3YXNtMzInKSB7XG4gICAgICBzY29wZWRQYWNrYWdlSnNvbi5vcyA9IFt0YXJnZXQucGxhdGZvcm1dXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gYCR7YmluYXJ5TmFtZX0ud2FzaS5janNgXG4gICAgICBzY29wZWRQYWNrYWdlSnNvbi5tYWluID0gZW50cnlcbiAgICAgIHNjb3BlZFBhY2thZ2VKc29uLmJyb3dzZXIgPSBgJHtiaW5hcnlOYW1lfS53YXNpLWJyb3dzZXIuanNgXG4gICAgICBzY29wZWRQYWNrYWdlSnNvbi5maWxlcz8ucHVzaChcbiAgICAgICAgZW50cnksXG4gICAgICAgIHNjb3BlZFBhY2thZ2VKc29uLmJyb3dzZXIsXG4gICAgICAgIGB3YXNpLXdvcmtlci5tanNgLFxuICAgICAgICBgd2FzaS13b3JrZXItYnJvd3Nlci5tanNgLFxuICAgICAgKVxuICAgICAgbGV0IG5lZWRSZXN0cmljdE5vZGVWZXJzaW9uID0gdHJ1ZVxuICAgICAgaWYgKHNjb3BlZFBhY2thZ2VKc29uLmVuZ2luZXM/Lm5vZGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB7IG1ham9yIH0gPSBwYXJzZShzY29wZWRQYWNrYWdlSnNvbi5lbmdpbmVzLm5vZGUpID8/IHtcbiAgICAgICAgICAgIG1ham9yOiAwLFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobWFqb3IgPj0gMTQpIHtcbiAgICAgICAgICAgIG5lZWRSZXN0cmljdE5vZGVWZXJzaW9uID0gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobmVlZFJlc3RyaWN0Tm9kZVZlcnNpb24pIHtcbiAgICAgICAgc2NvcGVkUGFja2FnZUpzb24uZW5naW5lcyA9IHtcbiAgICAgICAgICBub2RlOiAnPj0xNC4wLjAnLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCB3YXNtUnVudGltZSA9IGF3YWl0IGZldGNoKFxuICAgICAgICBgaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvQG5hcGktcnMvd2FzbS1ydW50aW1lYCxcbiAgICAgICkudGhlbigocmVzKSA9PiByZXMuanNvbigpIGFzIFByb21pc2U8UGFja2FnZU1ldGE+KVxuICAgICAgc2NvcGVkUGFja2FnZUpzb24uZGVwZW5kZW5jaWVzID0ge1xuICAgICAgICAnQG5hcGktcnMvd2FzbS1ydW50aW1lJzogYF4ke3dhc21SdW50aW1lWydkaXN0LXRhZ3MnXS5sYXRlc3R9YCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0LmFiaSA9PT0gJ2dudScpIHtcbiAgICAgIHNjb3BlZFBhY2thZ2VKc29uLmxpYmMgPSBbJ2dsaWJjJ11cbiAgICB9IGVsc2UgaWYgKHRhcmdldC5hYmkgPT09ICdtdXNsJykge1xuICAgICAgc2NvcGVkUGFja2FnZUpzb24ubGliYyA9IFsnbXVzbCddXG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0UGFja2FnZUpzb24gPSBqb2luKHRhcmdldERpciwgJ3BhY2thZ2UuanNvbicpXG4gICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoXG4gICAgICB0YXJnZXRQYWNrYWdlSnNvbixcbiAgICAgIEpTT04uc3RyaW5naWZ5KHNjb3BlZFBhY2thZ2VKc29uLCBudWxsLCAyKSArICdcXG4nLFxuICAgIClcbiAgICBjb25zdCB0YXJnZXRSZWFkbWUgPSBqb2luKHRhcmdldERpciwgJ1JFQURNRS5tZCcpXG4gICAgYXdhaXQgd3JpdGVGaWxlQXN5bmModGFyZ2V0UmVhZG1lLCByZWFkbWUocGFja2FnZU5hbWUsIHRhcmdldCkpXG5cbiAgICBkZWJ1Zy5pbmZvKGAke3BhY2thZ2VOYW1lfSAtJHt0YXJnZXQucGxhdGZvcm1BcmNoQUJJfSBjcmVhdGVkYClcbiAgfVxufVxuXG5mdW5jdGlvbiByZWFkbWUocGFja2FnZU5hbWU6IHN0cmluZywgdGFyZ2V0OiBUYXJnZXQpIHtcbiAgcmV0dXJuIGAjIFxcYCR7cGFja2FnZU5hbWV9LSR7dGFyZ2V0LnBsYXRmb3JtQXJjaEFCSX1cXGBcblxuVGhpcyBpcyB0aGUgKioke3RhcmdldC50cmlwbGV9KiogYmluYXJ5IGZvciBcXGAke3BhY2thZ2VOYW1lfVxcYFxuYFxufVxuIiwiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBjb2RlZ2VuL2luZGV4LnRzXG4vLyBEbyBub3QgZWRpdCB0aGlzIGZpbGUgbWFudWFsbHlcbmltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NsaXBhbmlvbidcbmltcG9ydCAqIGFzIHR5cGFuaW9uIGZyb20gJ3R5cGFuaW9uJ1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZU5ld0NvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW1snbmV3J11dXG5cbiAgc3RhdGljIHVzYWdlID0gQ29tbWFuZC5Vc2FnZSh7XG4gICAgZGVzY3JpcHRpb246ICdDcmVhdGUgYSBuZXcgcHJvamVjdCB3aXRoIHByZS1jb25maWd1cmVkIGJvaWxlcnBsYXRlJyxcbiAgfSlcblxuICAkJHBhdGggPSBPcHRpb24uU3RyaW5nKHsgcmVxdWlyZWQ6IGZhbHNlIH0pXG5cbiAgJCRuYW1lPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1uYW1lLC1uJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBuYW1lIG9mIHRoZSBwcm9qZWN0LCBkZWZhdWx0IHRvIHRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgaWYgbm90IHByb3ZpZGVkJyxcbiAgfSlcblxuICBtaW5Ob2RlQXBpVmVyc2lvbiA9IE9wdGlvbi5TdHJpbmcoJy0tbWluLW5vZGUtYXBpLC12JywgJzQnLCB7XG4gICAgdmFsaWRhdG9yOiB0eXBhbmlvbi5pc051bWJlcigpLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhlIG1pbmltdW0gTm9kZS1BUEkgdmVyc2lvbiB0byBzdXBwb3J0JyxcbiAgfSlcblxuICBwYWNrYWdlTWFuYWdlciA9IE9wdGlvbi5TdHJpbmcoJy0tcGFja2FnZS1tYW5hZ2VyJywgJ3lhcm4nLCB7XG4gICAgZGVzY3JpcHRpb246ICdUaGUgcGFja2FnZSBtYW5hZ2VyIHRvIHVzZS4gT25seSBzdXBwb3J0IHlhcm4gNC54IGZvciBub3cuJyxcbiAgfSlcblxuICBsaWNlbnNlID0gT3B0aW9uLlN0cmluZygnLS1saWNlbnNlLC1sJywgJ01JVCcsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0xpY2Vuc2UgZm9yIG9wZW4tc291cmNlZCBwcm9qZWN0JyxcbiAgfSlcblxuICB0YXJnZXRzID0gT3B0aW9uLkFycmF5KCctLXRhcmdldHMsLXQnLCBbXSwge1xuICAgIGRlc2NyaXB0aW9uOiAnQWxsIHRhcmdldHMgdGhlIGNyYXRlIHdpbGwgYmUgY29tcGlsZWQgZm9yLicsXG4gIH0pXG5cbiAgZW5hYmxlRGVmYXVsdFRhcmdldHMgPSBPcHRpb24uQm9vbGVhbignLS1lbmFibGUtZGVmYXVsdC10YXJnZXRzJywgdHJ1ZSwge1xuICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciBlbmFibGUgZGVmYXVsdCB0YXJnZXRzJyxcbiAgfSlcblxuICBlbmFibGVBbGxUYXJnZXRzID0gT3B0aW9uLkJvb2xlYW4oJy0tZW5hYmxlLWFsbC10YXJnZXRzJywgZmFsc2UsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgZW5hYmxlIGFsbCB0YXJnZXRzJyxcbiAgfSlcblxuICBlbmFibGVUeXBlRGVmID0gT3B0aW9uLkJvb2xlYW4oJy0tZW5hYmxlLXR5cGUtZGVmJywgdHJ1ZSwge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1doZXRoZXIgZW5hYmxlIHRoZSBgdHlwZS1kZWZgIGZlYXR1cmUgZm9yIHR5cGVzY3JpcHQgZGVmaW5pdGlvbnMgYXV0by1nZW5lcmF0aW9uJyxcbiAgfSlcblxuICBlbmFibGVHaXRodWJBY3Rpb25zID0gT3B0aW9uLkJvb2xlYW4oJy0tZW5hYmxlLWdpdGh1Yi1hY3Rpb25zJywgdHJ1ZSwge1xuICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciBnZW5lcmF0ZSBwcmVjb25maWd1cmVkIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93JyxcbiAgfSlcblxuICB0ZXN0RnJhbWV3b3JrID0gT3B0aW9uLlN0cmluZygnLS10ZXN0LWZyYW1ld29yaycsICdhdmEnLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIEphdmFTY3JpcHQgdGVzdCBmcmFtZXdvcmsgdG8gdXNlLCBvbmx5IHN1cHBvcnQgYGF2YWAgZm9yIG5vdycsXG4gIH0pXG5cbiAgZHJ5UnVuID0gT3B0aW9uLkJvb2xlYW4oJy0tZHJ5LXJ1bicsIGZhbHNlLCB7XG4gICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRvIHJ1biB0aGUgY29tbWFuZCBpbiBkcnktcnVuIG1vZGUnLFxuICB9KVxuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhdGg6IHRoaXMuJCRwYXRoLFxuICAgICAgbmFtZTogdGhpcy4kJG5hbWUsXG4gICAgICBtaW5Ob2RlQXBpVmVyc2lvbjogdGhpcy5taW5Ob2RlQXBpVmVyc2lvbixcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiB0aGlzLnBhY2thZ2VNYW5hZ2VyLFxuICAgICAgbGljZW5zZTogdGhpcy5saWNlbnNlLFxuICAgICAgdGFyZ2V0czogdGhpcy50YXJnZXRzLFxuICAgICAgZW5hYmxlRGVmYXVsdFRhcmdldHM6IHRoaXMuZW5hYmxlRGVmYXVsdFRhcmdldHMsXG4gICAgICBlbmFibGVBbGxUYXJnZXRzOiB0aGlzLmVuYWJsZUFsbFRhcmdldHMsXG4gICAgICBlbmFibGVUeXBlRGVmOiB0aGlzLmVuYWJsZVR5cGVEZWYsXG4gICAgICBlbmFibGVHaXRodWJBY3Rpb25zOiB0aGlzLmVuYWJsZUdpdGh1YkFjdGlvbnMsXG4gICAgICB0ZXN0RnJhbWV3b3JrOiB0aGlzLnRlc3RGcmFtZXdvcmssXG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBwcm9qZWN0IHdpdGggcHJlLWNvbmZpZ3VyZWQgYm9pbGVycGxhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwYXRoIHdoZXJlIHRoZSBOQVBJLVJTIHByb2plY3Qgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHByb2plY3QsIGRlZmF1bHQgdG8gdGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSBpZiBub3QgcHJvdmlkZWRcbiAgICovXG4gIG5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIE5vZGUtQVBJIHZlcnNpb24gdG8gc3VwcG9ydFxuICAgKlxuICAgKiBAZGVmYXVsdCA0XG4gICAqL1xuICBtaW5Ob2RlQXBpVmVyc2lvbj86IG51bWJlclxuICAvKipcbiAgICogVGhlIHBhY2thZ2UgbWFuYWdlciB0byB1c2UuIE9ubHkgc3VwcG9ydCB5YXJuIDQueCBmb3Igbm93LlxuICAgKlxuICAgKiBAZGVmYXVsdCAneWFybidcbiAgICovXG4gIHBhY2thZ2VNYW5hZ2VyPzogc3RyaW5nXG4gIC8qKlxuICAgKiBMaWNlbnNlIGZvciBvcGVuLXNvdXJjZWQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAnTUlUJ1xuICAgKi9cbiAgbGljZW5zZT86IHN0cmluZ1xuICAvKipcbiAgICogQWxsIHRhcmdldHMgdGhlIGNyYXRlIHdpbGwgYmUgY29tcGlsZWQgZm9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgdGFyZ2V0cz86IHN0cmluZ1tdXG4gIC8qKlxuICAgKiBXaGV0aGVyIGVuYWJsZSBkZWZhdWx0IHRhcmdldHNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZW5hYmxlRGVmYXVsdFRhcmdldHM/OiBib29sZWFuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGVuYWJsZSBhbGwgdGFyZ2V0c1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZW5hYmxlQWxsVGFyZ2V0cz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZW5hYmxlIHRoZSBgdHlwZS1kZWZgIGZlYXR1cmUgZm9yIHR5cGVzY3JpcHQgZGVmaW5pdGlvbnMgYXV0by1nZW5lcmF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGVuYWJsZVR5cGVEZWY/OiBib29sZWFuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGdlbmVyYXRlIHByZWNvbmZpZ3VyZWQgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3dcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZW5hYmxlR2l0aHViQWN0aW9ucz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFRoZSBKYXZhU2NyaXB0IHRlc3QgZnJhbWV3b3JrIHRvIHVzZSwgb25seSBzdXBwb3J0IGBhdmFgIGZvciBub3dcbiAgICpcbiAgICogQGRlZmF1bHQgJ2F2YSdcbiAgICovXG4gIHRlc3RGcmFtZXdvcms/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcnVuIHRoZSBjb21tYW5kIGluIGRyeS1ydW4gbW9kZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhblxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZWZhdWx0TmV3T3B0aW9ucyhvcHRpb25zOiBOZXdPcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgbWluTm9kZUFwaVZlcnNpb246IDQsXG4gICAgcGFja2FnZU1hbmFnZXI6ICd5YXJuJyxcbiAgICBsaWNlbnNlOiAnTUlUJyxcbiAgICB0YXJnZXRzOiBbXSxcbiAgICBlbmFibGVEZWZhdWx0VGFyZ2V0czogdHJ1ZSxcbiAgICBlbmFibGVBbGxUYXJnZXRzOiBmYWxzZSxcbiAgICBlbmFibGVUeXBlRGVmOiB0cnVlLFxuICAgIGVuYWJsZUdpdGh1YkFjdGlvbnM6IHRydWUsXG4gICAgdGVzdEZyYW1ld29yazogJ2F2YScsXG4gICAgZHJ5UnVuOiBmYWxzZSxcbiAgICAuLi5vcHRpb25zLFxuICB9XG59XG4iLCIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuLy8gQmFyZSBrZXlzIG1heSBvbmx5IGNvbnRhaW4gQVNDSUkgbGV0dGVycyxcbi8vIEFTQ0lJIGRpZ2l0cywgdW5kZXJzY29yZXMsIGFuZCBkYXNoZXMgKEEtWmEtejAtOV8tKS5cbmZ1bmN0aW9uIGpvaW5LZXlzKGtleXMpIHtcbiAgLy8gRG90dGVkIGtleXMgYXJlIGEgc2VxdWVuY2Ugb2YgYmFyZSBvciBxdW90ZWQga2V5cyBqb2luZWQgd2l0aCBhIGRvdC5cbiAgLy8gVGhpcyBhbGxvd3MgZm9yIGdyb3VwaW5nIHNpbWlsYXIgcHJvcGVydGllcyB0b2dldGhlcjpcbiAgcmV0dXJuIGtleXMubWFwKChzdHIpPT57XG4gICAgcmV0dXJuIHN0ci5sZW5ndGggPT09IDAgfHwgc3RyLm1hdGNoKC9bXkEtWmEtejAtOV8tXS8pID8gSlNPTi5zdHJpbmdpZnkoc3RyKSA6IHN0cjtcbiAgfSkuam9pbihcIi5cIik7XG59XG5jbGFzcyBEdW1wZXIge1xuICBtYXhQYWQgPSAwO1xuICBzcmNPYmplY3Q7XG4gIG91dHB1dCA9IFtdO1xuICAjYXJyYXlUeXBlQ2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0cnVjdG9yKHNyY09iamMpe1xuICAgIHRoaXMuc3JjT2JqZWN0ID0gc3JjT2JqYztcbiAgfVxuICBkdW1wKGZtdE9wdGlvbnMgPSB7fSkge1xuICAgIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gICAgdGhpcy5vdXRwdXQgPSB0aGlzLiNwcmludE9iamVjdCh0aGlzLnNyY09iamVjdCk7XG4gICAgdGhpcy5vdXRwdXQgPSB0aGlzLiNmb3JtYXQoZm10T3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMub3V0cHV0O1xuICB9XG4gICNwcmludE9iamVjdChvYmosIGtleXMgPSBbXSkge1xuICAgIGNvbnN0IG91dCA9IFtdO1xuICAgIGNvbnN0IHByb3BzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICBjb25zdCBpbmxpbmVQcm9wcyA9IFtdO1xuICAgIGNvbnN0IG11bHRpbGluZVByb3BzID0gW107XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BzKXtcbiAgICAgIGlmICh0aGlzLiNpc1NpbXBseVNlcmlhbGl6YWJsZShvYmpbcHJvcF0pKSB7XG4gICAgICAgIGlubGluZVByb3BzLnB1c2gocHJvcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtdWx0aWxpbmVQcm9wcy5wdXNoKHByb3ApO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzb3J0ZWRQcm9wcyA9IGlubGluZVByb3BzLmNvbmNhdChtdWx0aWxpbmVQcm9wcyk7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHNvcnRlZFByb3BzKXtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqW3Byb3BdO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICBvdXQucHVzaCh0aGlzLiNkYXRlRGVjbGFyYXRpb24oW1xuICAgICAgICAgIHByb3BcbiAgICAgICAgXSwgdmFsdWUpKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIG91dC5wdXNoKHRoaXMuI3N0ckRlY2xhcmF0aW9uKFtcbiAgICAgICAgICBwcm9wXG4gICAgICAgIF0sIHZhbHVlLnRvU3RyaW5nKCkpKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIG91dC5wdXNoKHRoaXMuI251bWJlckRlY2xhcmF0aW9uKFtcbiAgICAgICAgICBwcm9wXG4gICAgICAgIF0sIHZhbHVlKSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgb3V0LnB1c2godGhpcy4jYm9vbERlY2xhcmF0aW9uKFtcbiAgICAgICAgICBwcm9wXG4gICAgICAgIF0sIHZhbHVlKSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgY29uc3QgYXJyYXlUeXBlID0gdGhpcy4jZ2V0VHlwZU9mQXJyYXkodmFsdWUpO1xuICAgICAgICBpZiAoYXJyYXlUeXBlID09PSBcIk9OTFlfUFJJTUlUSVZFXCIpIHtcbiAgICAgICAgICBvdXQucHVzaCh0aGlzLiNhcnJheURlY2xhcmF0aW9uKFtcbiAgICAgICAgICAgIHByb3BcbiAgICAgICAgICBdLCB2YWx1ZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGFycmF5VHlwZSA9PT0gXCJPTkxZX09CSkVDVF9FWENMVURJTkdfQVJSQVlcIikge1xuICAgICAgICAgIC8vIGFycmF5IG9mIG9iamVjdHNcbiAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgb3V0LnB1c2goXCJcIik7XG4gICAgICAgICAgICBvdXQucHVzaCh0aGlzLiNoZWFkZXJHcm91cChbXG4gICAgICAgICAgICAgIC4uLmtleXMsXG4gICAgICAgICAgICAgIHByb3BcbiAgICAgICAgICAgIF0pKTtcbiAgICAgICAgICAgIG91dC5wdXNoKC4uLnRoaXMuI3ByaW50T2JqZWN0KHZhbHVlW2ldLCBbXG4gICAgICAgICAgICAgIC4uLmtleXMsXG4gICAgICAgICAgICAgIHByb3BcbiAgICAgICAgICAgIF0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gdGhpcyBpcyBhIGNvbXBsZXggYXJyYXksIHVzZSB0aGUgaW5saW5lIGZvcm1hdC5cbiAgICAgICAgICBjb25zdCBzdHIgPSB2YWx1ZS5tYXAoKHgpPT50aGlzLiNwcmludEFzSW5saW5lVmFsdWUoeCkpLmpvaW4oXCIsXCIpO1xuICAgICAgICAgIG91dC5wdXNoKGAke3RoaXMuI2RlY2xhcmF0aW9uKFtcbiAgICAgICAgICAgIHByb3BcbiAgICAgICAgICBdKX1bJHtzdHJ9XWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBvdXQucHVzaChcIlwiKTtcbiAgICAgICAgb3V0LnB1c2godGhpcy4jaGVhZGVyKFtcbiAgICAgICAgICAuLi5rZXlzLFxuICAgICAgICAgIHByb3BcbiAgICAgICAgXSkpO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBjb25zdCB0b1BhcnNlID0gdmFsdWU7XG4gICAgICAgICAgb3V0LnB1c2goLi4udGhpcy4jcHJpbnRPYmplY3QodG9QYXJzZSwgW1xuICAgICAgICAgICAgLi4ua2V5cyxcbiAgICAgICAgICAgIHByb3BcbiAgICAgICAgICBdKSk7XG4gICAgICAgIH1cbiAgICAgIC8vIG91dC5wdXNoKC4uLnRoaXMuX3BhcnNlKHZhbHVlLCBgJHtwYXRofSR7cHJvcH0uYCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBvdXQucHVzaChcIlwiKTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG4gICNpc1ByaW1pdGl2ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgfHwgW1xuICAgICAgXCJzdHJpbmdcIixcbiAgICAgIFwibnVtYmVyXCIsXG4gICAgICBcImJvb2xlYW5cIlxuICAgIF0uaW5jbHVkZXModHlwZW9mIHZhbHVlKTtcbiAgfVxuICAjZ2V0VHlwZU9mQXJyYXkoYXJyKSB7XG4gICAgaWYgKHRoaXMuI2FycmF5VHlwZUNhY2hlLmhhcyhhcnIpKSB7XG4gICAgICByZXR1cm4gdGhpcy4jYXJyYXlUeXBlQ2FjaGUuZ2V0KGFycik7XG4gICAgfVxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLiNkb0dldFR5cGVPZkFycmF5KGFycik7XG4gICAgdGhpcy4jYXJyYXlUeXBlQ2FjaGUuc2V0KGFyciwgdHlwZSk7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbiAgI2RvR2V0VHlwZU9mQXJyYXkoYXJyKSB7XG4gICAgaWYgKCFhcnIubGVuZ3RoKSB7XG4gICAgICAvLyBhbnkgdHlwZSBzaG91bGQgYmUgZmluZVxuICAgICAgcmV0dXJuIFwiT05MWV9QUklNSVRJVkVcIjtcbiAgICB9XG4gICAgY29uc3Qgb25seVByaW1pdGl2ZSA9IHRoaXMuI2lzUHJpbWl0aXZlKGFyclswXSk7XG4gICAgaWYgKGFyclswXSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICByZXR1cm4gXCJNSVhFRFwiO1xuICAgIH1cbiAgICBmb3IobGV0IGkgPSAxOyBpIDwgYXJyLmxlbmd0aDsgaSsrKXtcbiAgICAgIGlmIChvbmx5UHJpbWl0aXZlICE9PSB0aGlzLiNpc1ByaW1pdGl2ZShhcnJbaV0pIHx8IGFycltpXSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiBcIk1JWEVEXCI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvbmx5UHJpbWl0aXZlID8gXCJPTkxZX1BSSU1JVElWRVwiIDogXCJPTkxZX09CSkVDVF9FWENMVURJTkdfQVJSQVlcIjtcbiAgfVxuICAjcHJpbnRBc0lubGluZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIGBcIiR7dGhpcy4jcHJpbnREYXRlKHZhbHVlKX1cImA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZS50b1N0cmluZygpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjb25zdCBzdHIgPSB2YWx1ZS5tYXAoKHgpPT50aGlzLiNwcmludEFzSW5saW5lVmFsdWUoeCkpLmpvaW4oXCIsXCIpO1xuICAgICAgcmV0dXJuIGBbJHtzdHJ9XWA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2hvdWxkIG5ldmVyIHJlYWNoXCIpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RyID0gT2JqZWN0LmtleXModmFsdWUpLm1hcCgoa2V5KT0+e1xuICAgICAgICByZXR1cm4gYCR7am9pbktleXMoW1xuICAgICAgICAgIGtleVxuICAgICAgICBdKX0gPSAkey8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHRoaXMuI3ByaW50QXNJbmxpbmVWYWx1ZSh2YWx1ZVtrZXldKX1gO1xuICAgICAgfSkuam9pbihcIixcIik7XG4gICAgICByZXR1cm4gYHske3N0cn19YDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU2hvdWxkIG5ldmVyIHJlYWNoXCIpO1xuICB9XG4gICNpc1NpbXBseVNlcmlhbGl6YWJsZSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgfHwgdmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8IHZhbHVlIGluc3RhbmNlb2YgQXJyYXkgJiYgdGhpcy4jZ2V0VHlwZU9mQXJyYXkodmFsdWUpICE9PSBcIk9OTFlfT0JKRUNUX0VYQ0xVRElOR19BUlJBWVwiO1xuICB9XG4gICNoZWFkZXIoa2V5cykge1xuICAgIHJldHVybiBgWyR7am9pbktleXMoa2V5cyl9XWA7XG4gIH1cbiAgI2hlYWRlckdyb3VwKGtleXMpIHtcbiAgICByZXR1cm4gYFtbJHtqb2luS2V5cyhrZXlzKX1dXWA7XG4gIH1cbiAgI2RlY2xhcmF0aW9uKGtleXMpIHtcbiAgICBjb25zdCB0aXRsZSA9IGpvaW5LZXlzKGtleXMpO1xuICAgIGlmICh0aXRsZS5sZW5ndGggPiB0aGlzLm1heFBhZCkge1xuICAgICAgdGhpcy5tYXhQYWQgPSB0aXRsZS5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aXRsZX0gPSBgO1xuICB9XG4gICNhcnJheURlY2xhcmF0aW9uKGtleXMsIHZhbHVlKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfSR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWA7XG4gIH1cbiAgI3N0ckRlY2xhcmF0aW9uKGtleXMsIHZhbHVlKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfSR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWA7XG4gIH1cbiAgI251bWJlckRlY2xhcmF0aW9uKGtleXMsIHZhbHVlKSB7XG4gICAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLiNkZWNsYXJhdGlvbihrZXlzKX1uYW5gO1xuICAgIH1cbiAgICBzd2l0Y2godmFsdWUpe1xuICAgICAgY2FzZSBJbmZpbml0eTpcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfWluZmA7XG4gICAgICBjYXNlIC1JbmZpbml0eTpcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfS1pbmZgO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfSR7dmFsdWV9YDtcbiAgICB9XG4gIH1cbiAgI2Jvb2xEZWNsYXJhdGlvbihrZXlzLCB2YWx1ZSkge1xuICAgIHJldHVybiBgJHt0aGlzLiNkZWNsYXJhdGlvbihrZXlzKX0ke3ZhbHVlfWA7XG4gIH1cbiAgI3ByaW50RGF0ZSh2YWx1ZSkge1xuICAgIGZ1bmN0aW9uIGR0UGFkKHYsIGxQYWQgPSAyKSB7XG4gICAgICByZXR1cm4gdi5wYWRTdGFydChsUGFkLCBcIjBcIik7XG4gICAgfVxuICAgIGNvbnN0IG0gPSBkdFBhZCgodmFsdWUuZ2V0VVRDTW9udGgoKSArIDEpLnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IGQgPSBkdFBhZCh2YWx1ZS5nZXRVVENEYXRlKCkudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgaCA9IGR0UGFkKHZhbHVlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgbWluID0gZHRQYWQodmFsdWUuZ2V0VVRDTWludXRlcygpLnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IHMgPSBkdFBhZCh2YWx1ZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgbXMgPSBkdFBhZCh2YWx1ZS5nZXRVVENNaWxsaXNlY29uZHMoKS50b1N0cmluZygpLCAzKTtcbiAgICAvLyBmb3JtYXR0ZWQgZGF0ZVxuICAgIGNvbnN0IGZEYXRhID0gYCR7dmFsdWUuZ2V0VVRDRnVsbFllYXIoKX0tJHttfS0ke2R9VCR7aH06JHttaW59OiR7c30uJHttc31gO1xuICAgIHJldHVybiBmRGF0YTtcbiAgfVxuICAjZGF0ZURlY2xhcmF0aW9uKGtleXMsIHZhbHVlKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfSR7dGhpcy4jcHJpbnREYXRlKHZhbHVlKX1gO1xuICB9XG4gICNmb3JtYXQob3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgeyBrZXlBbGlnbm1lbnQgPSBmYWxzZSB9ID0gb3B0aW9ucztcbiAgICBjb25zdCByRGVjbGFyYXRpb24gPSAvXihcXFwiLipcXFwifFtePV0qKVxccz0vO1xuICAgIGNvbnN0IG91dCA9IFtdO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLm91dHB1dC5sZW5ndGg7IGkrKyl7XG4gICAgICBjb25zdCBsID0gdGhpcy5vdXRwdXRbaV07XG4gICAgICAvLyB3ZSBrZWVwIGVtcHR5IGVudHJ5IGZvciBhcnJheSBvZiBvYmplY3RzXG4gICAgICBpZiAobFswXSA9PT0gXCJbXCIgJiYgbFsxXSAhPT0gXCJbXCIpIHtcbiAgICAgICAgLy8gbm9uLWVtcHR5IG9iamVjdCB3aXRoIG9ubHkgc3Vib2JqZWN0cyBhcyBwcm9wZXJ0aWVzXG4gICAgICAgIGlmICh0aGlzLm91dHB1dFtpICsgMV0gPT09IFwiXCIgJiYgdGhpcy5vdXRwdXRbaSArIDJdPy5zbGljZSgwLCBsLmxlbmd0aCkgPT09IGwuc2xpY2UoMCwgLTEpICsgXCIuXCIpIHtcbiAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgb3V0LnB1c2gobCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoa2V5QWxpZ25tZW50KSB7XG4gICAgICAgICAgY29uc3QgbSA9IHJEZWNsYXJhdGlvbi5leGVjKGwpO1xuICAgICAgICAgIGlmIChtICYmIG1bMV0pIHtcbiAgICAgICAgICAgIG91dC5wdXNoKGwucmVwbGFjZShtWzFdLCBtWzFdLnBhZEVuZCh0aGlzLm1heFBhZCkpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0LnB1c2gobCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dC5wdXNoKGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIENsZWFuaW5nIG11bHRpcGxlIHNwYWNlc1xuICAgIGNvbnN0IGNsZWFuZWRPdXRwdXQgPSBbXTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgb3V0Lmxlbmd0aDsgaSsrKXtcbiAgICAgIGNvbnN0IGwgPSBvdXRbaV07XG4gICAgICBpZiAoIShsID09PSBcIlwiICYmIG91dFtpICsgMV0gPT09IFwiXCIpKSB7XG4gICAgICAgIGNsZWFuZWRPdXRwdXQucHVzaChsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNsZWFuZWRPdXRwdXQ7XG4gIH1cbn1cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IHRvIGEge0BsaW5rIGh0dHBzOi8vdG9tbC5pbyB8IFRPTUx9IHN0cmluZy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHN0cmluZ2lmeSB9IGZyb20gXCJAc3RkL3RvbWwvc3RyaW5naWZ5XCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBvYmogPSB7XG4gKiAgIHRpdGxlOiBcIlRPTUwgRXhhbXBsZVwiLFxuICogICBvd25lcjoge1xuICogICAgIG5hbWU6IFwiQm9iXCIsXG4gKiAgICAgYmlvOiBcIkJvYiBpcyBhIGNvb2wgZ3V5XCIsXG4gKiAgfVxuICogfTtcbiAqIGNvbnN0IHRvbWxTdHJpbmcgPSBzdHJpbmdpZnkob2JqKTtcbiAqIGFzc2VydEVxdWFscyh0b21sU3RyaW5nLCBgdGl0bGUgPSBcIlRPTUwgRXhhbXBsZVwiXFxuXFxuW293bmVyXVxcbm5hbWUgPSBcIkJvYlwiXFxuYmlvID0gXCJCb2IgaXMgYSBjb29sIGd1eVwiXFxuYCk7XG4gKiBgYGBcbiAqIEBwYXJhbSBvYmogU291cmNlIG9iamVjdFxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3Igc3RyaW5naWZ5aW5nLlxuICogQHJldHVybnMgVE9NTCBzdHJpbmdcbiAqLyBleHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5KG9iaiwgb3B0aW9ucykge1xuICByZXR1cm4gbmV3IER1bXBlcihvYmopLmR1bXAob3B0aW9ucykuam9pbihcIlxcblwiKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0cmluZ2lmeS5qcy5tYXAiLCIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBnaXZlbiBhcnJheSwgcmVtb3ZpbmcgYWxsIGVsZW1lbnRzIHRoYXQgZG8gbm90IG1hdGNoIHRoZSBnaXZlbiBwcmVkaWNhdGVcbiAqICoqaW4gcGxhY2UuIFRoaXMgbWVhbnMgYGFycmF5YCB3aWxsIGJlIG1vZGlmaWVkISoqLlxuICovIGV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJJblBsYWNlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgbGV0IG91dHB1dEluZGV4ID0gMDtcbiAgZm9yIChjb25zdCBjdXIgb2YgYXJyYXkpe1xuICAgIGlmICghcHJlZGljYXRlKGN1cikpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBhcnJheVtvdXRwdXRJbmRleF0gPSBjdXI7XG4gICAgb3V0cHV0SW5kZXggKz0gMTtcbiAgfVxuICBhcnJheS5zcGxpY2Uob3V0cHV0SW5kZXgpO1xuICByZXR1cm4gYXJyYXk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1fdXRpbHMuanMubWFwIiwiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbmltcG9ydCB7IGZpbHRlckluUGxhY2UgfSBmcm9tIFwiLi9fdXRpbHMuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBkZWVwTWVyZ2UocmVjb3JkLCBvdGhlciwgb3B0aW9ucykge1xuICByZXR1cm4gZGVlcE1lcmdlSW50ZXJuYWwocmVjb3JkLCBvdGhlciwgbmV3IFNldCgpLCBvcHRpb25zKTtcbn1cbmZ1bmN0aW9uIGRlZXBNZXJnZUludGVybmFsKHJlY29yZCwgb3RoZXIsIHNlZW4sIG9wdGlvbnMpIHtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGNvbnN0IGtleXMgPSBuZXcgU2V0KFtcbiAgICAuLi5nZXRLZXlzKHJlY29yZCksXG4gICAgLi4uZ2V0S2V5cyhvdGhlcilcbiAgXSk7XG4gIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIGtleSBvZiBvdGhlciBvYmplY3QgYW5kIHVzZSBjb3JyZWN0IG1lcmdpbmcgc3RyYXRlZ3lcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cyl7XG4gICAgLy8gU2tpcCB0byBwcmV2ZW50IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGFjY2Vzc29yIHByb3BlcnR5IGNhbGxzIG9uIG5vbi1EZW5vIHBsYXRmb3Jtc1xuICAgIGlmIChrZXkgPT09IFwiX19wcm90b19fXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBhID0gcmVjb3JkW2tleV07XG4gICAgaWYgKCFPYmplY3QuaGFzT3duKG90aGVyLCBrZXkpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGE7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgYiA9IG90aGVyW2tleV07XG4gICAgaWYgKGlzTm9uTnVsbE9iamVjdChhKSAmJiBpc05vbk51bGxPYmplY3QoYikgJiYgIXNlZW4uaGFzKGEpICYmICFzZWVuLmhhcyhiKSkge1xuICAgICAgc2Vlbi5hZGQoYSk7XG4gICAgICBzZWVuLmFkZChiKTtcbiAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2VPYmplY3RzKGEsIGIsIHNlZW4sIG9wdGlvbnMpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIC8vIE92ZXJyaWRlIHZhbHVlXG4gICAgcmVzdWx0W2tleV0gPSBiO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBtZXJnZU9iamVjdHMobGVmdCwgcmlnaHQsIHNlZW4sIG9wdGlvbnMgPSB7XG4gIGFycmF5czogXCJtZXJnZVwiLFxuICBzZXRzOiBcIm1lcmdlXCIsXG4gIG1hcHM6IFwibWVyZ2VcIlxufSkge1xuICAvLyBSZWN1cnNpdmVseSBtZXJnZSBtZXJnZWFibGUgb2JqZWN0c1xuICBpZiAoaXNNZXJnZWFibGUobGVmdCkgJiYgaXNNZXJnZWFibGUocmlnaHQpKSB7XG4gICAgcmV0dXJuIGRlZXBNZXJnZUludGVybmFsKGxlZnQsIHJpZ2h0LCBzZWVuLCBvcHRpb25zKTtcbiAgfVxuICBpZiAoaXNJdGVyYWJsZShsZWZ0KSAmJiBpc0l0ZXJhYmxlKHJpZ2h0KSkge1xuICAgIC8vIEhhbmRsZSBhcnJheXNcbiAgICBpZiAoQXJyYXkuaXNBcnJheShsZWZ0KSAmJiBBcnJheS5pc0FycmF5KHJpZ2h0KSkge1xuICAgICAgaWYgKG9wdGlvbnMuYXJyYXlzID09PSBcIm1lcmdlXCIpIHtcbiAgICAgICAgcmV0dXJuIGxlZnQuY29uY2F0KHJpZ2h0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByaWdodDtcbiAgICB9XG4gICAgLy8gSGFuZGxlIG1hcHNcbiAgICBpZiAobGVmdCBpbnN0YW5jZW9mIE1hcCAmJiByaWdodCBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgaWYgKG9wdGlvbnMubWFwcyA9PT0gXCJtZXJnZVwiKSB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwKFtcbiAgICAgICAgICAuLi5sZWZ0LFxuICAgICAgICAgIC4uLnJpZ2h0XG4gICAgICAgIF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJpZ2h0O1xuICAgIH1cbiAgICAvLyBIYW5kbGUgc2V0c1xuICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgU2V0ICYmIHJpZ2h0IGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICBpZiAob3B0aW9ucy5zZXRzID09PSBcIm1lcmdlXCIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoW1xuICAgICAgICAgIC4uLmxlZnQsXG4gICAgICAgICAgLi4ucmlnaHRcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmlnaHQ7XG4gICAgfVxuICB9XG4gIHJldHVybiByaWdodDtcbn1cbi8qKlxuICogVGVzdCB3aGV0aGVyIGEgdmFsdWUgaXMgbWVyZ2VhYmxlIG9yIG5vdFxuICogQnVpbHRpbnMgdGhhdCBsb29rIGxpa2Ugb2JqZWN0cywgbnVsbCBhbmQgdXNlciBkZWZpbmVkIGNsYXNzZXNcbiAqIGFyZSBub3QgY29uc2lkZXJlZCBtZXJnZWFibGUgKGl0IG1lYW5zIHRoYXQgcmVmZXJlbmNlIHdpbGwgYmUgY29waWVkKVxuICovIGZ1bmN0aW9uIGlzTWVyZ2VhYmxlKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuZnVuY3Rpb24gaXNJdGVyYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlW1N5bWJvbC5pdGVyYXRvcl0gPT09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIGlzTm9uTnVsbE9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiO1xufVxuZnVuY3Rpb24gZ2V0S2V5cyhyZWNvcmQpIHtcbiAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhyZWNvcmQpO1xuICBmaWx0ZXJJblBsYWNlKHJlc3VsdCwgKGtleSk9Pk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChyZWNvcmQsIGtleSkpO1xuICByZXN1bHQucHVzaCguLi5PYmplY3Qua2V5cyhyZWNvcmQpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRlZXBfbWVyZ2UuanMubWFwIiwiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCJAanNyL3N0ZF9fY29sbGVjdGlvbnMvZGVlcC1tZXJnZVwiO1xuLyoqXG4gKiBDb3B5IG9mIGBpbXBvcnQgeyBpc0xlYXAgfSBmcm9tIFwiQHN0ZC9kYXRldGltZVwiO2AgYmVjYXVzZSBpdCBjYW5ub3QgYmUgaW1wb3RlZCBhcyBsb25nIGFzIGl0IGlzIHVuc3RhYmxlLlxuICovIGZ1bmN0aW9uIGlzTGVhcCh5ZWFyTnVtYmVyKSB7XG4gIHJldHVybiB5ZWFyTnVtYmVyICUgNCA9PT0gMCAmJiB5ZWFyTnVtYmVyICUgMTAwICE9PSAwIHx8IHllYXJOdW1iZXIgJSA0MDAgPT09IDA7XG59XG5leHBvcnQgY2xhc3MgU2Nhbm5lciB7XG4gICN3aGl0ZXNwYWNlID0gL1sgXFx0XS87XG4gICNwb3NpdGlvbiA9IDA7XG4gICNzb3VyY2U7XG4gIGNvbnN0cnVjdG9yKHNvdXJjZSl7XG4gICAgdGhpcy4jc291cmNlID0gc291cmNlO1xuICB9XG4gIGdldCBwb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy4jcG9zaXRpb247XG4gIH1cbiAgZ2V0IHNvdXJjZSgpIHtcbiAgICByZXR1cm4gdGhpcy4jc291cmNlO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIGluZGV4IC0gcmVsYXRpdmUgaW5kZXggZnJvbSBjdXJyZW50IHBvc2l0aW9uXG4gICAqLyBjaGFyKGluZGV4ID0gMCkge1xuICAgIHJldHVybiB0aGlzLiNzb3VyY2VbdGhpcy4jcG9zaXRpb24gKyBpbmRleF0gPz8gXCJcIjtcbiAgfVxuICAvKipcbiAgICogR2V0IHNsaWNlZCBzdHJpbmdcbiAgICogQHBhcmFtIHN0YXJ0IC0gc3RhcnQgcG9zaXRpb24gcmVsYXRpdmUgZnJvbSBjdXJyZW50IHBvc2l0aW9uXG4gICAqIEBwYXJhbSBlbmQgLSBlbmQgcG9zaXRpb24gcmVsYXRpdmUgZnJvbSBjdXJyZW50IHBvc2l0aW9uXG4gICAqLyBzbGljZShzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIHRoaXMuI3NvdXJjZS5zbGljZSh0aGlzLiNwb3NpdGlvbiArIHN0YXJ0LCB0aGlzLiNwb3NpdGlvbiArIGVuZCk7XG4gIH1cbiAgLyoqXG4gICAqIE1vdmUgcG9zaXRpb24gdG8gbmV4dFxuICAgKi8gbmV4dChjb3VudCA9IDEpIHtcbiAgICB0aGlzLiNwb3NpdGlvbiArPSBjb3VudDtcbiAgfVxuICBza2lwV2hpdGVzcGFjZXMoKSB7XG4gICAgd2hpbGUodGhpcy4jd2hpdGVzcGFjZS50ZXN0KHRoaXMuY2hhcigpKSAmJiAhdGhpcy5lb2YoKSl7XG4gICAgICB0aGlzLm5leHQoKTtcbiAgICB9XG4gICAgLy8gSW52YWxpZCBpZiBjdXJyZW50IGNoYXIgaXMgb3RoZXIga2luZHMgb2Ygd2hpdGVzcGFjZVxuICAgIGlmICghdGhpcy5pc0N1cnJlbnRDaGFyRU9MKCkgJiYgL1xccy8udGVzdCh0aGlzLmNoYXIoKSkpIHtcbiAgICAgIGNvbnN0IGVzY2FwZWQgPSBcIlxcXFx1XCIgKyB0aGlzLmNoYXIoKS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KTtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy4jcG9zaXRpb247XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYENhbm5vdCBwYXJzZSB0aGUgVE9NTDogSXQgY29udGFpbnMgaW52YWxpZCB3aGl0ZXNwYWNlIGF0IHBvc2l0aW9uICcke3Bvc2l0aW9ufSc6IFxcYCR7ZXNjYXBlZH1cXGBgKTtcbiAgICB9XG4gIH1cbiAgbmV4dFVudGlsQ2hhcihvcHRpb25zID0ge1xuICAgIHNraXBDb21tZW50czogdHJ1ZVxuICB9KSB7XG4gICAgd2hpbGUoIXRoaXMuZW9mKCkpe1xuICAgICAgY29uc3QgY2hhciA9IHRoaXMuY2hhcigpO1xuICAgICAgaWYgKHRoaXMuI3doaXRlc3BhY2UudGVzdChjaGFyKSB8fCB0aGlzLmlzQ3VycmVudENoYXJFT0woKSkge1xuICAgICAgICB0aGlzLm5leHQoKTtcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5za2lwQ29tbWVudHMgJiYgdGhpcy5jaGFyKCkgPT09IFwiI1wiKSB7XG4gICAgICAgIC8vIGVudGVyaW5nIGNvbW1lbnRcbiAgICAgICAgd2hpbGUoIXRoaXMuaXNDdXJyZW50Q2hhckVPTCgpICYmICF0aGlzLmVvZigpKXtcbiAgICAgICAgICB0aGlzLm5leHQoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBQb3NpdGlvbiByZWFjaGVkIEVPRiBvciBub3RcbiAgICovIGVvZigpIHtcbiAgICByZXR1cm4gdGhpcy4jcG9zaXRpb24gPj0gdGhpcy4jc291cmNlLmxlbmd0aDtcbiAgfVxuICBpc0N1cnJlbnRDaGFyRU9MKCkge1xuICAgIHJldHVybiB0aGlzLmNoYXIoKSA9PT0gXCJcXG5cIiB8fCB0aGlzLnN0YXJ0c1dpdGgoXCJcXHJcXG5cIik7XG4gIH1cbiAgc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy4jc291cmNlLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nLCB0aGlzLiNwb3NpdGlvbik7XG4gIH1cbiAgbWF0Y2gocmVnRXhwKSB7XG4gICAgaWYgKCFyZWdFeHAuc3RpY2t5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlZ0V4cCAke3JlZ0V4cH0gZG9lcyBub3QgaGF2ZSBhIHN0aWNreSAneScgZmxhZ2ApO1xuICAgIH1cbiAgICByZWdFeHAubGFzdEluZGV4ID0gdGhpcy4jcG9zaXRpb247XG4gICAgcmV0dXJuIHRoaXMuI3NvdXJjZS5tYXRjaChyZWdFeHApO1xuICB9XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVXRpbGl0aWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3VjY2Vzcyhib2R5KSB7XG4gIHJldHVybiB7XG4gICAgb2s6IHRydWUsXG4gICAgYm9keVxuICB9O1xufVxuZnVuY3Rpb24gZmFpbHVyZSgpIHtcbiAgcmV0dXJuIHtcbiAgICBvazogZmFsc2VcbiAgfTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5lc3RlZCBvYmplY3QgZnJvbSB0aGUga2V5cyBhbmQgdmFsdWVzLlxuICpcbiAqIGUuZy4gYHVuZmxhdChbXCJhXCIsIFwiYlwiLCBcImNcIl0sIDEpYCByZXR1cm5zIGB7IGE6IHsgYjogeyBjOiAxIH0gfSB9YFxuICovIGV4cG9ydCBmdW5jdGlvbiB1bmZsYXQoa2V5cywgdmFsdWVzID0ge1xuICBfX3Byb3RvX186IG51bGxcbn0pIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlUmlnaHQoKGFjYywga2V5KT0+KHtcbiAgICAgIFtrZXldOiBhY2NcbiAgICB9KSwgdmFsdWVzKTtcbn1cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGw7XG59XG5mdW5jdGlvbiBnZXRUYXJnZXRWYWx1ZSh0YXJnZXQsIGtleXMpIHtcbiAgY29uc3Qga2V5ID0ga2V5c1swXTtcbiAgaWYgKCFrZXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgcGFyc2UgdGhlIFRPTUw6IGtleSBsZW5ndGggaXMgbm90IGEgcG9zaXRpdmUgbnVtYmVyXCIpO1xuICB9XG4gIHJldHVybiB0YXJnZXRba2V5XTtcbn1cbmZ1bmN0aW9uIGRlZXBBc3NpZ25UYWJsZSh0YXJnZXQsIHRhYmxlKSB7XG4gIGNvbnN0IHsga2V5cywgdHlwZSwgdmFsdWUgfSA9IHRhYmxlO1xuICBjb25zdCBjdXJyZW50VmFsdWUgPSBnZXRUYXJnZXRWYWx1ZSh0YXJnZXQsIGtleXMpO1xuICBpZiAoY3VycmVudFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0YXJnZXQsIHVuZmxhdChrZXlzLCB2YWx1ZSkpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkpIHtcbiAgICBjb25zdCBsYXN0ID0gY3VycmVudFZhbHVlLmF0KC0xKTtcbiAgICBkZWVwQXNzaWduKGxhc3QsIHtcbiAgICAgIHR5cGUsXG4gICAgICBrZXlzOiBrZXlzLnNsaWNlKDEpLFxuICAgICAgdmFsdWVcbiAgICB9KTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG4gIGlmIChpc09iamVjdChjdXJyZW50VmFsdWUpKSB7XG4gICAgZGVlcEFzc2lnbihjdXJyZW50VmFsdWUsIHtcbiAgICAgIHR5cGUsXG4gICAgICBrZXlzOiBrZXlzLnNsaWNlKDEpLFxuICAgICAgdmFsdWVcbiAgICB9KTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgYXNzaWduXCIpO1xufVxuZnVuY3Rpb24gZGVlcEFzc2lnblRhYmxlQXJyYXkodGFyZ2V0LCB0YWJsZSkge1xuICBjb25zdCB7IHR5cGUsIGtleXMsIHZhbHVlIH0gPSB0YWJsZTtcbiAgY29uc3QgY3VycmVudFZhbHVlID0gZ2V0VGFyZ2V0VmFsdWUodGFyZ2V0LCBrZXlzKTtcbiAgaWYgKGN1cnJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24odGFyZ2V0LCB1bmZsYXQoa2V5cywgW1xuICAgICAgdmFsdWVcbiAgICBdKSk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFZhbHVlKSkge1xuICAgIGlmICh0YWJsZS5rZXlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY3VycmVudFZhbHVlLnB1c2godmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0ID0gY3VycmVudFZhbHVlLmF0KC0xKTtcbiAgICAgIGRlZXBBc3NpZ24obGFzdCwge1xuICAgICAgICB0eXBlOiB0YWJsZS50eXBlLFxuICAgICAgICBrZXlzOiB0YWJsZS5rZXlzLnNsaWNlKDEpLFxuICAgICAgICB2YWx1ZTogdGFibGUudmFsdWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG4gIGlmIChpc09iamVjdChjdXJyZW50VmFsdWUpKSB7XG4gICAgZGVlcEFzc2lnbihjdXJyZW50VmFsdWUsIHtcbiAgICAgIHR5cGUsXG4gICAgICBrZXlzOiBrZXlzLnNsaWNlKDEpLFxuICAgICAgdmFsdWVcbiAgICB9KTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgYXNzaWduXCIpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBBc3NpZ24odGFyZ2V0LCBib2R5KSB7XG4gIHN3aXRjaChib2R5LnR5cGUpe1xuICAgIGNhc2UgXCJCbG9ja1wiOlxuICAgICAgcmV0dXJuIGRlZXBNZXJnZSh0YXJnZXQsIGJvZHkudmFsdWUpO1xuICAgIGNhc2UgXCJUYWJsZVwiOlxuICAgICAgcmV0dXJuIGRlZXBBc3NpZ25UYWJsZSh0YXJnZXQsIGJvZHkpO1xuICAgIGNhc2UgXCJUYWJsZUFycmF5XCI6XG4gICAgICByZXR1cm4gZGVlcEFzc2lnblRhYmxlQXJyYXkodGFyZ2V0LCBib2R5KTtcbiAgfVxufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZXIgY29tYmluYXRvcnMgYW5kIGdlbmVyYXRvcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbmZ1bmN0aW9uIG9yKHBhcnNlcnMpIHtcbiAgcmV0dXJuIChzY2FubmVyKT0+e1xuICAgIGZvciAoY29uc3QgcGFyc2Ugb2YgcGFyc2Vycyl7XG4gICAgICBjb25zdCByZXN1bHQgPSBwYXJzZShzY2FubmVyKTtcbiAgICAgIGlmIChyZXN1bHQub2spIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiBmYWlsdXJlKCk7XG4gIH07XG59XG4vKiogSm9pbiB0aGUgcGFyc2UgcmVzdWx0cyBvZiB0aGUgZ2l2ZW4gcGFyc2VyIGludG8gYW4gYXJyYXkuXG4gKlxuICogSWYgdGhlIHBhcnNlciBmYWlscyBhdCB0aGUgZmlyc3QgYXR0ZW1wdCwgaXQgd2lsbCByZXR1cm4gYW4gZW1wdHkgYXJyYXkuXG4gKi8gZnVuY3Rpb24gam9pbihwYXJzZXIsIHNlcGFyYXRvcikge1xuICBjb25zdCBTZXBhcmF0b3IgPSBjaGFyYWN0ZXIoc2VwYXJhdG9yKTtcbiAgcmV0dXJuIChzY2FubmVyKT0+e1xuICAgIGNvbnN0IG91dCA9IFtdO1xuICAgIGNvbnN0IGZpcnN0ID0gcGFyc2VyKHNjYW5uZXIpO1xuICAgIGlmICghZmlyc3Qub2spIHJldHVybiBzdWNjZXNzKG91dCk7XG4gICAgb3V0LnB1c2goZmlyc3QuYm9keSk7XG4gICAgd2hpbGUoIXNjYW5uZXIuZW9mKCkpe1xuICAgICAgaWYgKCFTZXBhcmF0b3Ioc2Nhbm5lcikub2spIGJyZWFrO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFyc2VyKHNjYW5uZXIpO1xuICAgICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnZhbGlkIHRva2VuIGFmdGVyIFwiJHtzZXBhcmF0b3J9XCJgKTtcbiAgICAgIH1cbiAgICAgIG91dC5wdXNoKHJlc3VsdC5ib2R5KTtcbiAgICB9XG4gICAgcmV0dXJuIHN1Y2Nlc3Mob3V0KTtcbiAgfTtcbn1cbi8qKiBKb2luIHRoZSBwYXJzZSByZXN1bHRzIG9mIHRoZSBnaXZlbiBwYXJzZXIgaW50byBhbiBhcnJheS5cbiAqXG4gKiBUaGlzIHJlcXVpcmVzIHRoZSBwYXJzZXIgdG8gc3VjY2VlZCBhdCBsZWFzdCBvbmNlLlxuICovIGZ1bmN0aW9uIGpvaW4xKHBhcnNlciwgc2VwYXJhdG9yKSB7XG4gIGNvbnN0IFNlcGFyYXRvciA9IGNoYXJhY3RlcihzZXBhcmF0b3IpO1xuICByZXR1cm4gKHNjYW5uZXIpPT57XG4gICAgY29uc3QgZmlyc3QgPSBwYXJzZXIoc2Nhbm5lcik7XG4gICAgaWYgKCFmaXJzdC5vaykgcmV0dXJuIGZhaWx1cmUoKTtcbiAgICBjb25zdCBvdXQgPSBbXG4gICAgICBmaXJzdC5ib2R5XG4gICAgXTtcbiAgICB3aGlsZSghc2Nhbm5lci5lb2YoKSl7XG4gICAgICBpZiAoIVNlcGFyYXRvcihzY2FubmVyKS5vaykgYnJlYWs7XG4gICAgICBjb25zdCByZXN1bHQgPSBwYXJzZXIoc2Nhbm5lcik7XG4gICAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYEludmFsaWQgdG9rZW4gYWZ0ZXIgXCIke3NlcGFyYXRvcn1cImApO1xuICAgICAgfVxuICAgICAgb3V0LnB1c2gocmVzdWx0LmJvZHkpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VzcyhvdXQpO1xuICB9O1xufVxuZnVuY3Rpb24ga3Yoa2V5UGFyc2VyLCBzZXBhcmF0b3IsIHZhbHVlUGFyc2VyKSB7XG4gIGNvbnN0IFNlcGFyYXRvciA9IGNoYXJhY3RlcihzZXBhcmF0b3IpO1xuICByZXR1cm4gKHNjYW5uZXIpPT57XG4gICAgY29uc3QgcG9zaXRpb24gPSBzY2FubmVyLnBvc2l0aW9uO1xuICAgIGNvbnN0IGtleSA9IGtleVBhcnNlcihzY2FubmVyKTtcbiAgICBpZiAoIWtleS5vaykgcmV0dXJuIGZhaWx1cmUoKTtcbiAgICBjb25zdCBzZXAgPSBTZXBhcmF0b3Ioc2Nhbm5lcik7XG4gICAgaWYgKCFzZXAub2spIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihga2V5L3ZhbHVlIHBhaXIgZG9lc24ndCBoYXZlIFwiJHtzZXBhcmF0b3J9XCJgKTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSB2YWx1ZVBhcnNlcihzY2FubmVyKTtcbiAgICBpZiAoIXZhbHVlLm9rKSB7XG4gICAgICBjb25zdCBsaW5lRW5kSW5kZXggPSBzY2FubmVyLnNvdXJjZS5pbmRleE9mKFwiXFxuXCIsIHNjYW5uZXIucG9zaXRpb24pO1xuICAgICAgY29uc3QgZW5kUG9zaXRpb24gPSBsaW5lRW5kSW5kZXggPiAwID8gbGluZUVuZEluZGV4IDogc2Nhbm5lci5zb3VyY2UubGVuZ3RoO1xuICAgICAgY29uc3QgbGluZSA9IHNjYW5uZXIuc291cmNlLnNsaWNlKHBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYENhbm5vdCBwYXJzZSB2YWx1ZSBvbiBsaW5lICcke2xpbmV9J2ApO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2Vzcyh1bmZsYXQoa2V5LmJvZHksIHZhbHVlLmJvZHkpKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIG1lcmdlKHBhcnNlcikge1xuICByZXR1cm4gKHNjYW5uZXIpPT57XG4gICAgY29uc3QgcmVzdWx0ID0gcGFyc2VyKHNjYW5uZXIpO1xuICAgIGlmICghcmVzdWx0Lm9rKSByZXR1cm4gZmFpbHVyZSgpO1xuICAgIGxldCBib2R5ID0ge1xuICAgICAgX19wcm90b19fOiBudWxsXG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZXN1bHQuYm9keSl7XG4gICAgICBpZiAodHlwZW9mIHJlY29yZCA9PT0gXCJvYmplY3RcIiAmJiByZWNvcmQgIT09IG51bGwpIHtcbiAgICAgICAgYm9keSA9IGRlZXBNZXJnZShib2R5LCByZWNvcmQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3VjY2Vzcyhib2R5KTtcbiAgfTtcbn1cbmZ1bmN0aW9uIHJlcGVhdChwYXJzZXIpIHtcbiAgcmV0dXJuIChzY2FubmVyKT0+e1xuICAgIGNvbnN0IGJvZHkgPSBbXTtcbiAgICB3aGlsZSghc2Nhbm5lci5lb2YoKSl7XG4gICAgICBjb25zdCByZXN1bHQgPSBwYXJzZXIoc2Nhbm5lcik7XG4gICAgICBpZiAoIXJlc3VsdC5vaykgYnJlYWs7XG4gICAgICBib2R5LnB1c2gocmVzdWx0LmJvZHkpO1xuICAgICAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKCk7XG4gICAgfVxuICAgIGlmIChib2R5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgICByZXR1cm4gc3VjY2Vzcyhib2R5KTtcbiAgfTtcbn1cbmZ1bmN0aW9uIHN1cnJvdW5kKGxlZnQsIHBhcnNlciwgcmlnaHQpIHtcbiAgY29uc3QgTGVmdCA9IGNoYXJhY3RlcihsZWZ0KTtcbiAgY29uc3QgUmlnaHQgPSBjaGFyYWN0ZXIocmlnaHQpO1xuICByZXR1cm4gKHNjYW5uZXIpPT57XG4gICAgaWYgKCFMZWZ0KHNjYW5uZXIpLm9rKSB7XG4gICAgICByZXR1cm4gZmFpbHVyZSgpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBwYXJzZXIoc2Nhbm5lcik7XG4gICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgSW52YWxpZCB0b2tlbiBhZnRlciBcIiR7bGVmdH1cImApO1xuICAgIH1cbiAgICBpZiAoIVJpZ2h0KHNjYW5uZXIpLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYE5vdCBjbG9zZWQgYnkgXCIke3JpZ2h0fVwiIGFmdGVyIHN0YXJ0ZWQgd2l0aCBcIiR7bGVmdH1cImApO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VzcyhyZXN1bHQuYm9keSk7XG4gIH07XG59XG5mdW5jdGlvbiBjaGFyYWN0ZXIoc3RyKSB7XG4gIHJldHVybiAoc2Nhbm5lcik9PntcbiAgICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICAgIGlmICghc2Nhbm5lci5zdGFydHNXaXRoKHN0cikpIHJldHVybiBmYWlsdXJlKCk7XG4gICAgc2Nhbm5lci5uZXh0KHN0ci5sZW5ndGgpO1xuICAgIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gICAgcmV0dXJuIHN1Y2Nlc3ModW5kZWZpbmVkKTtcbiAgfTtcbn1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZXIgY29tcG9uZW50c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IEJBUkVfS0VZX1JFR0VYUCA9IC9bQS1aYS16MC05Xy1dKy95O1xuZXhwb3J0IGZ1bmN0aW9uIGJhcmVLZXkoc2Nhbm5lcikge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBjb25zdCBrZXkgPSBzY2FubmVyLm1hdGNoKEJBUkVfS0VZX1JFR0VYUCk/LlswXTtcbiAgaWYgKCFrZXkpIHJldHVybiBmYWlsdXJlKCk7XG4gIHNjYW5uZXIubmV4dChrZXkubGVuZ3RoKTtcbiAgcmV0dXJuIHN1Y2Nlc3Moa2V5KTtcbn1cbmZ1bmN0aW9uIGVzY2FwZVNlcXVlbmNlKHNjYW5uZXIpIHtcbiAgaWYgKHNjYW5uZXIuY2hhcigpICE9PSBcIlxcXFxcIikgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KCk7XG4gIC8vIFNlZSBodHRwczovL3RvbWwuaW8vZW4vdjEuMC4wLXJjLjMjc3RyaW5nXG4gIHN3aXRjaChzY2FubmVyLmNoYXIoKSl7XG4gICAgY2FzZSBcImJcIjpcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoXCJcXGJcIik7XG4gICAgY2FzZSBcInRcIjpcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoXCJcXHRcIik7XG4gICAgY2FzZSBcIm5cIjpcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoXCJcXG5cIik7XG4gICAgY2FzZSBcImZcIjpcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoXCJcXGZcIik7XG4gICAgY2FzZSBcInJcIjpcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoXCJcXHJcIik7XG4gICAgY2FzZSBcInVcIjpcbiAgICBjYXNlIFwiVVwiOlxuICAgICAge1xuICAgICAgICAvLyBVbmljb2RlIGNoYXJhY3RlclxuICAgICAgICBjb25zdCBjb2RlUG9pbnRMZW4gPSBzY2FubmVyLmNoYXIoKSA9PT0gXCJ1XCIgPyA0IDogNjtcbiAgICAgICAgY29uc3QgY29kZVBvaW50ID0gcGFyc2VJbnQoXCIweFwiICsgc2Nhbm5lci5zbGljZSgxLCAxICsgY29kZVBvaW50TGVuKSwgMTYpO1xuICAgICAgICBjb25zdCBzdHIgPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjb2RlUG9pbnQpO1xuICAgICAgICBzY2FubmVyLm5leHQoY29kZVBvaW50TGVuICsgMSk7XG4gICAgICAgIHJldHVybiBzdWNjZXNzKHN0cik7XG4gICAgICB9XG4gICAgY2FzZSAnXCInOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcygnXCInKTtcbiAgICBjYXNlIFwiXFxcXFwiOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcyhcIlxcXFxcIik7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgSW52YWxpZCBlc2NhcGUgc2VxdWVuY2U6IFxcXFwke3NjYW5uZXIuY2hhcigpfWApO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gYmFzaWNTdHJpbmcoc2Nhbm5lcikge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBpZiAoc2Nhbm5lci5jaGFyKCkgIT09ICdcIicpIHJldHVybiBmYWlsdXJlKCk7XG4gIHNjYW5uZXIubmV4dCgpO1xuICBjb25zdCBhY2MgPSBbXTtcbiAgd2hpbGUoc2Nhbm5lci5jaGFyKCkgIT09ICdcIicgJiYgIXNjYW5uZXIuZW9mKCkpe1xuICAgIGlmIChzY2FubmVyLmNoYXIoKSA9PT0gXCJcXG5cIikge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFwiU2luZ2xlLWxpbmUgc3RyaW5nIGNhbm5vdCBjb250YWluIEVPTFwiKTtcbiAgICB9XG4gICAgY29uc3QgZXNjYXBlZENoYXIgPSBlc2NhcGVTZXF1ZW5jZShzY2FubmVyKTtcbiAgICBpZiAoZXNjYXBlZENoYXIub2spIHtcbiAgICAgIGFjYy5wdXNoKGVzY2FwZWRDaGFyLmJvZHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY2MucHVzaChzY2FubmVyLmNoYXIoKSk7XG4gICAgICBzY2FubmVyLm5leHQoKTtcbiAgICB9XG4gIH1cbiAgaWYgKHNjYW5uZXIuZW9mKCkpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYFNpbmdsZS1saW5lIHN0cmluZyBpcyBub3QgY2xvc2VkOlxcbiR7YWNjLmpvaW4oXCJcIil9YCk7XG4gIH1cbiAgc2Nhbm5lci5uZXh0KCk7IC8vIHNraXAgbGFzdCAnXCJcIlxuICByZXR1cm4gc3VjY2VzcyhhY2Muam9pbihcIlwiKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gbGl0ZXJhbFN0cmluZyhzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGlmIChzY2FubmVyLmNoYXIoKSAhPT0gXCInXCIpIHJldHVybiBmYWlsdXJlKCk7XG4gIHNjYW5uZXIubmV4dCgpO1xuICBjb25zdCBhY2MgPSBbXTtcbiAgd2hpbGUoc2Nhbm5lci5jaGFyKCkgIT09IFwiJ1wiICYmICFzY2FubmVyLmVvZigpKXtcbiAgICBpZiAoc2Nhbm5lci5jaGFyKCkgPT09IFwiXFxuXCIpIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcIlNpbmdsZS1saW5lIHN0cmluZyBjYW5ub3QgY29udGFpbiBFT0xcIik7XG4gICAgfVxuICAgIGFjYy5wdXNoKHNjYW5uZXIuY2hhcigpKTtcbiAgICBzY2FubmVyLm5leHQoKTtcbiAgfVxuICBpZiAoc2Nhbm5lci5lb2YoKSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgU2luZ2xlLWxpbmUgc3RyaW5nIGlzIG5vdCBjbG9zZWQ6XFxuJHthY2Muam9pbihcIlwiKX1gKTtcbiAgfVxuICBzY2FubmVyLm5leHQoKTsgLy8gc2tpcCBsYXN0IFwiJ1wiXG4gIHJldHVybiBzdWNjZXNzKGFjYy5qb2luKFwiXCIpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aWxpbmVCYXNpY1N0cmluZyhzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGlmICghc2Nhbm5lci5zdGFydHNXaXRoKCdcIlwiXCInKSkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KDMpO1xuICBpZiAoc2Nhbm5lci5jaGFyKCkgPT09IFwiXFxuXCIpIHtcbiAgICAvLyBUaGUgZmlyc3QgbmV3bGluZSAoTEYpIGlzIHRyaW1tZWRcbiAgICBzY2FubmVyLm5leHQoKTtcbiAgfSBlbHNlIGlmIChzY2FubmVyLnN0YXJ0c1dpdGgoXCJcXHJcXG5cIikpIHtcbiAgICAvLyBUaGUgZmlyc3QgbmV3bGluZSAoQ1JMRikgaXMgdHJpbW1lZFxuICAgIHNjYW5uZXIubmV4dCgyKTtcbiAgfVxuICBjb25zdCBhY2MgPSBbXTtcbiAgd2hpbGUoIXNjYW5uZXIuc3RhcnRzV2l0aCgnXCJcIlwiJykgJiYgIXNjYW5uZXIuZW9mKCkpe1xuICAgIC8vIGxpbmUgZW5kaW5nIGJhY2tzbGFzaFxuICAgIGlmIChzY2FubmVyLnN0YXJ0c1dpdGgoXCJcXFxcXFxuXCIpKSB7XG4gICAgICBzY2FubmVyLm5leHQoKTtcbiAgICAgIHNjYW5uZXIubmV4dFVudGlsQ2hhcih7XG4gICAgICAgIHNraXBDb21tZW50czogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIGlmIChzY2FubmVyLnN0YXJ0c1dpdGgoXCJcXFxcXFxyXFxuXCIpKSB7XG4gICAgICBzY2FubmVyLm5leHQoKTtcbiAgICAgIHNjYW5uZXIubmV4dFVudGlsQ2hhcih7XG4gICAgICAgIHNraXBDb21tZW50czogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGVzY2FwZWRDaGFyID0gZXNjYXBlU2VxdWVuY2Uoc2Nhbm5lcik7XG4gICAgaWYgKGVzY2FwZWRDaGFyLm9rKSB7XG4gICAgICBhY2MucHVzaChlc2NhcGVkQ2hhci5ib2R5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjLnB1c2goc2Nhbm5lci5jaGFyKCkpO1xuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgfVxuICB9XG4gIGlmIChzY2FubmVyLmVvZigpKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBNdWx0aS1saW5lIHN0cmluZyBpcyBub3QgY2xvc2VkOlxcbiR7YWNjLmpvaW4oXCJcIil9YCk7XG4gIH1cbiAgLy8gaWYgZW5kcyB3aXRoIDQgYFwiYCwgcHVzaCB0aGUgZmlzdCBgXCJgIHRvIHN0cmluZ1xuICBpZiAoc2Nhbm5lci5jaGFyKDMpID09PSAnXCInKSB7XG4gICAgYWNjLnB1c2goJ1wiJyk7XG4gICAgc2Nhbm5lci5uZXh0KCk7XG4gIH1cbiAgc2Nhbm5lci5uZXh0KDMpOyAvLyBza2lwIGxhc3QgJ1wiXCJcIlwiXG4gIHJldHVybiBzdWNjZXNzKGFjYy5qb2luKFwiXCIpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aWxpbmVMaXRlcmFsU3RyaW5nKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgaWYgKCFzY2FubmVyLnN0YXJ0c1dpdGgoXCInJydcIikpIHJldHVybiBmYWlsdXJlKCk7XG4gIHNjYW5uZXIubmV4dCgzKTtcbiAgaWYgKHNjYW5uZXIuY2hhcigpID09PSBcIlxcblwiKSB7XG4gICAgLy8gVGhlIGZpcnN0IG5ld2xpbmUgKExGKSBpcyB0cmltbWVkXG4gICAgc2Nhbm5lci5uZXh0KCk7XG4gIH0gZWxzZSBpZiAoc2Nhbm5lci5zdGFydHNXaXRoKFwiXFxyXFxuXCIpKSB7XG4gICAgLy8gVGhlIGZpcnN0IG5ld2xpbmUgKENSTEYpIGlzIHRyaW1tZWRcbiAgICBzY2FubmVyLm5leHQoMik7XG4gIH1cbiAgY29uc3QgYWNjID0gW107XG4gIHdoaWxlKCFzY2FubmVyLnN0YXJ0c1dpdGgoXCInJydcIikgJiYgIXNjYW5uZXIuZW9mKCkpe1xuICAgIGFjYy5wdXNoKHNjYW5uZXIuY2hhcigpKTtcbiAgICBzY2FubmVyLm5leHQoKTtcbiAgfVxuICBpZiAoc2Nhbm5lci5lb2YoKSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgTXVsdGktbGluZSBzdHJpbmcgaXMgbm90IGNsb3NlZDpcXG4ke2FjYy5qb2luKFwiXCIpfWApO1xuICB9XG4gIC8vIGlmIGVuZHMgd2l0aCA0IGAnYCwgcHVzaCB0aGUgZmlzdCBgJ2AgdG8gc3RyaW5nXG4gIGlmIChzY2FubmVyLmNoYXIoMykgPT09IFwiJ1wiKSB7XG4gICAgYWNjLnB1c2goXCInXCIpO1xuICAgIHNjYW5uZXIubmV4dCgpO1xuICB9XG4gIHNjYW5uZXIubmV4dCgzKTsgLy8gc2tpcCBsYXN0IFwiJycnXCJcbiAgcmV0dXJuIHN1Y2Nlc3MoYWNjLmpvaW4oXCJcIikpO1xufVxuY29uc3QgQk9PTEVBTl9SRUdFWFAgPSAvKD86dHJ1ZXxmYWxzZSlcXGIveTtcbmV4cG9ydCBmdW5jdGlvbiBib29sZWFuKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKEJPT0xFQU5fUkVHRVhQKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgY29uc3Qgc3RyaW5nID0gbWF0Y2hbMF07XG4gIHNjYW5uZXIubmV4dChzdHJpbmcubGVuZ3RoKTtcbiAgY29uc3QgdmFsdWUgPSBzdHJpbmcgPT09IFwidHJ1ZVwiO1xuICByZXR1cm4gc3VjY2Vzcyh2YWx1ZSk7XG59XG5jb25zdCBJTkZJTklUWV9NQVAgPSBuZXcgTWFwKFtcbiAgW1xuICAgIFwiaW5mXCIsXG4gICAgSW5maW5pdHlcbiAgXSxcbiAgW1xuICAgIFwiK2luZlwiLFxuICAgIEluZmluaXR5XG4gIF0sXG4gIFtcbiAgICBcIi1pbmZcIixcbiAgICAtSW5maW5pdHlcbiAgXVxuXSk7XG5jb25zdCBJTkZJTklUWV9SRUdFWFAgPSAvWystXT9pbmZcXGIveTtcbmV4cG9ydCBmdW5jdGlvbiBpbmZpbml0eShzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChJTkZJTklUWV9SRUdFWFApO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBjb25zdCBzdHJpbmcgPSBtYXRjaFswXTtcbiAgc2Nhbm5lci5uZXh0KHN0cmluZy5sZW5ndGgpO1xuICBjb25zdCB2YWx1ZSA9IElORklOSVRZX01BUC5nZXQoc3RyaW5nKTtcbiAgcmV0dXJuIHN1Y2Nlc3ModmFsdWUpO1xufVxuY29uc3QgTkFOX1JFR0VYUCA9IC9bKy1dP25hblxcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIG5hbihzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChOQU5fUkVHRVhQKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgY29uc3Qgc3RyaW5nID0gbWF0Y2hbMF07XG4gIHNjYW5uZXIubmV4dChzdHJpbmcubGVuZ3RoKTtcbiAgY29uc3QgdmFsdWUgPSBOYU47XG4gIHJldHVybiBzdWNjZXNzKHZhbHVlKTtcbn1cbmV4cG9ydCBjb25zdCBkb3R0ZWRLZXkgPSBqb2luMShvcihbXG4gIGJhcmVLZXksXG4gIGJhc2ljU3RyaW5nLFxuICBsaXRlcmFsU3RyaW5nXG5dKSwgXCIuXCIpO1xuY29uc3QgQklOQVJZX1JFR0VYUCA9IC8wYlswMV0rKD86X1swMV0rKSpcXGIveTtcbmV4cG9ydCBmdW5jdGlvbiBiaW5hcnkoc2Nhbm5lcikge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBjb25zdCBtYXRjaCA9IHNjYW5uZXIubWF0Y2goQklOQVJZX1JFR0VYUCk/LlswXTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KG1hdGNoLmxlbmd0aCk7XG4gIGNvbnN0IHZhbHVlID0gbWF0Y2guc2xpY2UoMikucmVwbGFjZUFsbChcIl9cIiwgXCJcIik7XG4gIGNvbnN0IG51bWJlciA9IHBhcnNlSW50KHZhbHVlLCAyKTtcbiAgcmV0dXJuIGlzTmFOKG51bWJlcikgPyBmYWlsdXJlKCkgOiBzdWNjZXNzKG51bWJlcik7XG59XG5jb25zdCBPQ1RBTF9SRUdFWFAgPSAvMG9bMC03XSsoPzpfWzAtN10rKSpcXGIveTtcbmV4cG9ydCBmdW5jdGlvbiBvY3RhbChzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChPQ1RBTF9SRUdFWFApPy5bMF07XG4gIGlmICghbWF0Y2gpIHJldHVybiBmYWlsdXJlKCk7XG4gIHNjYW5uZXIubmV4dChtYXRjaC5sZW5ndGgpO1xuICBjb25zdCB2YWx1ZSA9IG1hdGNoLnNsaWNlKDIpLnJlcGxhY2VBbGwoXCJfXCIsIFwiXCIpO1xuICBjb25zdCBudW1iZXIgPSBwYXJzZUludCh2YWx1ZSwgOCk7XG4gIHJldHVybiBpc05hTihudW1iZXIpID8gZmFpbHVyZSgpIDogc3VjY2VzcyhudW1iZXIpO1xufVxuY29uc3QgSEVYX1JFR0VYUCA9IC8weFswLTlhLWZdKyg/Ol9bMC05YS1mXSspKlxcYi95aTtcbmV4cG9ydCBmdW5jdGlvbiBoZXgoc2Nhbm5lcikge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBjb25zdCBtYXRjaCA9IHNjYW5uZXIubWF0Y2goSEVYX1JFR0VYUCk/LlswXTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KG1hdGNoLmxlbmd0aCk7XG4gIGNvbnN0IHZhbHVlID0gbWF0Y2guc2xpY2UoMikucmVwbGFjZUFsbChcIl9cIiwgXCJcIik7XG4gIGNvbnN0IG51bWJlciA9IHBhcnNlSW50KHZhbHVlLCAxNik7XG4gIHJldHVybiBpc05hTihudW1iZXIpID8gZmFpbHVyZSgpIDogc3VjY2VzcyhudW1iZXIpO1xufVxuY29uc3QgSU5URUdFUl9SRUdFWFAgPSAvWystXT8oPzowfFsxLTldWzAtOV0qKD86X1swLTldKykqKVxcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIGludGVnZXIoc2Nhbm5lcikge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBjb25zdCBtYXRjaCA9IHNjYW5uZXIubWF0Y2goSU5URUdFUl9SRUdFWFApPy5bMF07XG4gIGlmICghbWF0Y2gpIHJldHVybiBmYWlsdXJlKCk7XG4gIHNjYW5uZXIubmV4dChtYXRjaC5sZW5ndGgpO1xuICBjb25zdCB2YWx1ZSA9IG1hdGNoLnJlcGxhY2VBbGwoXCJfXCIsIFwiXCIpO1xuICBjb25zdCBpbnQgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICByZXR1cm4gc3VjY2VzcyhpbnQpO1xufVxuY29uc3QgRkxPQVRfUkVHRVhQID0gL1srLV0/KD86MHxbMS05XVswLTldKig/Ol9bMC05XSspKikoPzpcXC5bMC05XSsoPzpfWzAtOV0rKSopPyg/OmVbKy1dP1swLTldKyg/Ol9bMC05XSspKik/XFxiL3lpO1xuZXhwb3J0IGZ1bmN0aW9uIGZsb2F0KHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKEZMT0FUX1JFR0VYUCk/LlswXTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KG1hdGNoLmxlbmd0aCk7XG4gIGNvbnN0IHZhbHVlID0gbWF0Y2gucmVwbGFjZUFsbChcIl9cIiwgXCJcIik7XG4gIGNvbnN0IGZsb2F0ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gIGlmIChpc05hTihmbG9hdCkpIHJldHVybiBmYWlsdXJlKCk7XG4gIHJldHVybiBzdWNjZXNzKGZsb2F0KTtcbn1cbmNvbnN0IERBVEVfVElNRV9SRUdFWFAgPSAvKD88eWVhcj5cXGR7NH0pLSg/PG1vbnRoPlxcZHsyfSktKD88ZGF5PlxcZHsyfSkoPzpbIDAtOVRaLjorLV0rKT9cXGIveTtcbmV4cG9ydCBmdW5jdGlvbiBkYXRlVGltZShzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChEQVRFX1RJTUVfUkVHRVhQKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgY29uc3Qgc3RyaW5nID0gbWF0Y2hbMF07XG4gIHNjYW5uZXIubmV4dChzdHJpbmcubGVuZ3RoKTtcbiAgY29uc3QgZ3JvdXBzID0gbWF0Y2guZ3JvdXBzO1xuICAvLyBzcGVjaWFsIGNhc2UgaWYgbW9udGggaXMgRmVicnVhcnlcbiAgaWYgKGdyb3Vwcy5tb250aCA9PSBcIjAyXCIpIHtcbiAgICBjb25zdCBkYXlzID0gcGFyc2VJbnQoZ3JvdXBzLmRheSk7XG4gICAgaWYgKGRheXMgPiAyOSkge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnZhbGlkIGRhdGUgc3RyaW5nIFwiJHttYXRjaH1cImApO1xuICAgIH1cbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQoZ3JvdXBzLnllYXIpO1xuICAgIGlmIChkYXlzID4gMjggJiYgIWlzTGVhcCh5ZWFyKSkge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnZhbGlkIGRhdGUgc3RyaW5nIFwiJHttYXRjaH1cImApO1xuICAgIH1cbiAgfVxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoc3RyaW5nLnRyaW0oKSk7XG4gIC8vIGludmFsaWQgZGF0ZVxuICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnZhbGlkIGRhdGUgc3RyaW5nIFwiJHttYXRjaH1cImApO1xuICB9XG4gIHJldHVybiBzdWNjZXNzKGRhdGUpO1xufVxuY29uc3QgTE9DQUxfVElNRV9SRUdFWFAgPSAvKFxcZHsyfSk6KFxcZHsyfSk6KFxcZHsyfSkoPzpcXC5bMC05XSspP1xcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsVGltZShzY2FubmVyKSB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChMT0NBTF9USU1FX1JFR0VYUCk/LlswXTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KG1hdGNoLmxlbmd0aCk7XG4gIHJldHVybiBzdWNjZXNzKG1hdGNoKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVZhbHVlKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgaWYgKHNjYW5uZXIuY2hhcigpICE9PSBcIltcIikgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KCk7XG4gIGNvbnN0IGFycmF5ID0gW107XG4gIHdoaWxlKCFzY2FubmVyLmVvZigpKXtcbiAgICBzY2FubmVyLm5leHRVbnRpbENoYXIoKTtcbiAgICBjb25zdCByZXN1bHQgPSB2YWx1ZShzY2FubmVyKTtcbiAgICBpZiAoIXJlc3VsdC5vaykgYnJlYWs7XG4gICAgYXJyYXkucHVzaChyZXN1bHQuYm9keSk7XG4gICAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgICAvLyBtYXkgaGF2ZSBhIG5leHQgaXRlbSwgYnV0IHRyYWlsaW5nIGNvbW1hIGlzIGFsbG93ZWQgYXQgYXJyYXlcbiAgICBpZiAoc2Nhbm5lci5jaGFyKCkgIT09IFwiLFwiKSBicmVhaztcbiAgICBzY2FubmVyLm5leHQoKTtcbiAgfVxuICBzY2FubmVyLm5leHRVbnRpbENoYXIoKTtcbiAgaWYgKHNjYW5uZXIuY2hhcigpICE9PSBcIl1cIikgdGhyb3cgbmV3IFN5bnRheEVycm9yKFwiQXJyYXkgaXMgbm90IGNsb3NlZFwiKTtcbiAgc2Nhbm5lci5uZXh0KCk7XG4gIHJldHVybiBzdWNjZXNzKGFycmF5KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpbmxpbmVUYWJsZShzY2FubmVyKSB7XG4gIHNjYW5uZXIubmV4dFVudGlsQ2hhcigpO1xuICBpZiAoc2Nhbm5lci5jaGFyKDEpID09PSBcIn1cIikge1xuICAgIHNjYW5uZXIubmV4dCgyKTtcbiAgICByZXR1cm4gc3VjY2Vzcyh7XG4gICAgICBfX3Byb3RvX186IG51bGxcbiAgICB9KTtcbiAgfVxuICBjb25zdCBwYWlycyA9IHN1cnJvdW5kKFwie1wiLCBqb2luKHBhaXIsIFwiLFwiKSwgXCJ9XCIpKHNjYW5uZXIpO1xuICBpZiAoIXBhaXJzLm9rKSByZXR1cm4gZmFpbHVyZSgpO1xuICBsZXQgdGFibGUgPSB7XG4gICAgX19wcm90b19fOiBudWxsXG4gIH07XG4gIGZvciAoY29uc3QgcGFpciBvZiBwYWlycy5ib2R5KXtcbiAgICB0YWJsZSA9IGRlZXBNZXJnZSh0YWJsZSwgcGFpcik7XG4gIH1cbiAgcmV0dXJuIHN1Y2Nlc3ModGFibGUpO1xufVxuZXhwb3J0IGNvbnN0IHZhbHVlID0gb3IoW1xuICBtdWx0aWxpbmVCYXNpY1N0cmluZyxcbiAgbXVsdGlsaW5lTGl0ZXJhbFN0cmluZyxcbiAgYmFzaWNTdHJpbmcsXG4gIGxpdGVyYWxTdHJpbmcsXG4gIGJvb2xlYW4sXG4gIGluZmluaXR5LFxuICBuYW4sXG4gIGRhdGVUaW1lLFxuICBsb2NhbFRpbWUsXG4gIGJpbmFyeSxcbiAgb2N0YWwsXG4gIGhleCxcbiAgZmxvYXQsXG4gIGludGVnZXIsXG4gIGFycmF5VmFsdWUsXG4gIGlubGluZVRhYmxlXG5dKTtcbmV4cG9ydCBjb25zdCBwYWlyID0ga3YoZG90dGVkS2V5LCBcIj1cIiwgdmFsdWUpO1xuZXhwb3J0IGZ1bmN0aW9uIGJsb2NrKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKCk7XG4gIGNvbnN0IHJlc3VsdCA9IG1lcmdlKHJlcGVhdChwYWlyKSkoc2Nhbm5lcik7XG4gIGlmIChyZXN1bHQub2spIHJldHVybiBzdWNjZXNzKHtcbiAgICB0eXBlOiBcIkJsb2NrXCIsXG4gICAgdmFsdWU6IHJlc3VsdC5ib2R5XG4gIH0pO1xuICByZXR1cm4gZmFpbHVyZSgpO1xufVxuZXhwb3J0IGNvbnN0IHRhYmxlSGVhZGVyID0gc3Vycm91bmQoXCJbXCIsIGRvdHRlZEtleSwgXCJdXCIpO1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxlKHNjYW5uZXIpIHtcbiAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKCk7XG4gIGNvbnN0IGhlYWRlciA9IHRhYmxlSGVhZGVyKHNjYW5uZXIpO1xuICBpZiAoIWhlYWRlci5vaykgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKCk7XG4gIGNvbnN0IGIgPSBibG9jayhzY2FubmVyKTtcbiAgcmV0dXJuIHN1Y2Nlc3Moe1xuICAgIHR5cGU6IFwiVGFibGVcIixcbiAgICBrZXlzOiBoZWFkZXIuYm9keSxcbiAgICB2YWx1ZTogYi5vayA/IGIuYm9keS52YWx1ZSA6IHtcbiAgICAgIF9fcHJvdG9fXzogbnVsbFxuICAgIH1cbiAgfSk7XG59XG5leHBvcnQgY29uc3QgdGFibGVBcnJheUhlYWRlciA9IHN1cnJvdW5kKFwiW1tcIiwgZG90dGVkS2V5LCBcIl1dXCIpO1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxlQXJyYXkoc2Nhbm5lcikge1xuICBzY2FubmVyLm5leHRVbnRpbENoYXIoKTtcbiAgY29uc3QgaGVhZGVyID0gdGFibGVBcnJheUhlYWRlcihzY2FubmVyKTtcbiAgaWYgKCFoZWFkZXIub2spIHJldHVybiBmYWlsdXJlKCk7XG4gIHNjYW5uZXIubmV4dFVudGlsQ2hhcigpO1xuICBjb25zdCBiID0gYmxvY2soc2Nhbm5lcik7XG4gIHJldHVybiBzdWNjZXNzKHtcbiAgICB0eXBlOiBcIlRhYmxlQXJyYXlcIixcbiAgICBrZXlzOiBoZWFkZXIuYm9keSxcbiAgICB2YWx1ZTogYi5vayA/IGIuYm9keS52YWx1ZSA6IHtcbiAgICAgIF9fcHJvdG9fXzogbnVsbFxuICAgIH1cbiAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdG9tbChzY2FubmVyKSB7XG4gIGNvbnN0IGJsb2NrcyA9IHJlcGVhdChvcihbXG4gICAgYmxvY2ssXG4gICAgdGFibGVBcnJheSxcbiAgICB0YWJsZVxuICBdKSkoc2Nhbm5lcik7XG4gIGlmICghYmxvY2tzLm9rKSByZXR1cm4gc3VjY2Vzcyh7XG4gICAgX19wcm90b19fOiBudWxsXG4gIH0pO1xuICBjb25zdCBib2R5ID0gYmxvY2tzLmJvZHkucmVkdWNlKGRlZXBBc3NpZ24sIHtcbiAgICBfX3Byb3RvX186IG51bGxcbiAgfSk7XG4gIHJldHVybiBzdWNjZXNzKGJvZHkpO1xufVxuZnVuY3Rpb24gY3JlYXRlUGFyc2VFcnJvck1lc3NhZ2Uoc2Nhbm5lciwgbWVzc2FnZSkge1xuICBjb25zdCBzdHJpbmcgPSBzY2FubmVyLnNvdXJjZS5zbGljZSgwLCBzY2FubmVyLnBvc2l0aW9uKTtcbiAgY29uc3QgbGluZXMgPSBzdHJpbmcuc3BsaXQoXCJcXG5cIik7XG4gIGNvbnN0IHJvdyA9IGxpbmVzLmxlbmd0aDtcbiAgY29uc3QgY29sdW1uID0gbGluZXMuYXQoLTEpPy5sZW5ndGggPz8gMDtcbiAgcmV0dXJuIGBQYXJzZSBlcnJvciBvbiBsaW5lICR7cm93fSwgY29sdW1uICR7Y29sdW1ufTogJHttZXNzYWdlfWA7XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VyRmFjdG9yeShwYXJzZXIpIHtcbiAgcmV0dXJuICh0b21sU3RyaW5nKT0+e1xuICAgIGNvbnN0IHNjYW5uZXIgPSBuZXcgU2Nhbm5lcih0b21sU3RyaW5nKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFyc2VyKHNjYW5uZXIpO1xuICAgICAgaWYgKHJlc3VsdC5vayAmJiBzY2FubmVyLmVvZigpKSByZXR1cm4gcmVzdWx0LmJvZHk7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFVuZXhwZWN0ZWQgY2hhcmFjdGVyOiBcIiR7c2Nhbm5lci5jaGFyKCl9XCJgO1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGNyZWF0ZVBhcnNlRXJyb3JNZXNzYWdlKHNjYW5uZXIsIG1lc3NhZ2UpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGNyZWF0ZVBhcnNlRXJyb3JNZXNzYWdlKHNjYW5uZXIsIGVycm9yLm1lc3NhZ2UpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBcIkludmFsaWQgZXJyb3IgdHlwZSBjYXVnaHRcIjtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihjcmVhdGVQYXJzZUVycm9yTWVzc2FnZShzY2FubmVyLCBtZXNzYWdlKSk7XG4gICAgfVxuICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9X3BhcnNlci5qcy5tYXAiLCIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuaW1wb3J0IHsgcGFyc2VyRmFjdG9yeSwgdG9tbCB9IGZyb20gXCIuL19wYXJzZXIuanNcIjtcbi8qKlxuICogUGFyc2VzIGEge0BsaW5rIGh0dHBzOi8vdG9tbC5pbyB8IFRPTUx9IHN0cmluZyBpbnRvIGFuIG9iamVjdC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHBhcnNlIH0gZnJvbSBcIkBzdGQvdG9tbC9wYXJzZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3QgdG9tbFN0cmluZyA9IGB0aXRsZSA9IFwiVE9NTCBFeGFtcGxlXCJcbiAqIFtvd25lcl1cbiAqIG5hbWUgPSBcIkFsaWNlXCJcbiAqIGJpbyA9IFwiQWxpY2UgaXMgYSBwcm9ncmFtbWVyLlwiYDtcbiAqXG4gKiBjb25zdCBvYmogPSBwYXJzZSh0b21sU3RyaW5nKTtcbiAqIGFzc2VydEVxdWFscyhvYmosIHsgdGl0bGU6IFwiVE9NTCBFeGFtcGxlXCIsIG93bmVyOiB7IG5hbWU6IFwiQWxpY2VcIiwgYmlvOiBcIkFsaWNlIGlzIGEgcHJvZ3JhbW1lci5cIiB9IH0pO1xuICogYGBgXG4gKiBAcGFyYW0gdG9tbFN0cmluZyBUT01MIHN0cmluZyB0byBiZSBwYXJzZWQuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIEpTIG9iamVjdC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gcGFyc2UodG9tbFN0cmluZykge1xuICByZXR1cm4gcGFyc2VyRmFjdG9yeSh0b21sKSh0b21sU3RyaW5nKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhcnNlLmpzLm1hcCIsImltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IGlzQWJzb2x1dGUsIGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG4vKipcbiogUmVzb2x2ZSBhbiBhYnNvbHV0ZSBwYXRoIGZyb20ge0BsaW5rIHJvb3R9LCBidXQgb25seVxuKiBpZiB7QGxpbmsgaW5wdXR9IGlzbid0IGFscmVhZHkgYWJzb2x1dGUuXG4qXG4qIEBwYXJhbSBpbnB1dCBUaGUgcGF0aCB0byByZXNvbHZlLlxuKiBAcGFyYW0gcm9vdCBUaGUgYmFzZSBwYXRoOyBkZWZhdWx0ID0gcHJvY2Vzcy5jd2QoKVxuKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgYWJzb2x1dGUgcGF0aC5cbiovXG5leHBvcnQgZnVuY3Rpb24gYWJzb2x1dGUoaW5wdXQsIHJvb3QpIHtcblx0cmV0dXJuIGlzQWJzb2x1dGUoaW5wdXQpID8gaW5wdXQgOiByZXNvbHZlKHJvb3QgfHwgXCIuXCIsIGlucHV0KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmcm9tKHJvb3QsIGlkZW50LCBzaWxlbnQpIHtcblx0dHJ5IHtcblx0XHQvLyBOT1RFOiBkaXJzIG5lZWQgYSB0cmFpbGluZyBcIi9cIiBPUiBmaWxlbmFtZS4gV2l0aCBcIi9cIiByb3V0ZSxcblx0XHQvLyBOb2RlIGFkZHMgXCJub29wLmpzXCIgYXMgbWFpbiBmaWxlLCBzbyBqdXN0IGRvIFwibm9vcC5qc1wiIGFueXdheS5cblx0XHRsZXQgciA9IHJvb3QgaW5zdGFuY2VvZiBVUkwgfHwgcm9vdC5zdGFydHNXaXRoKFwiZmlsZTovL1wiKSA/IGpvaW4oZmlsZVVSTFRvUGF0aChyb290KSwgXCJub29wLmpzXCIpIDogam9pbihhYnNvbHV0ZShyb290KSwgXCJub29wLmpzXCIpO1xuXHRcdHJldHVybiBjcmVhdGVSZXF1aXJlKHIpLnJlc29sdmUoaWRlbnQpO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRpZiAoIXNpbGVudCkgdGhyb3cgZXJyO1xuXHR9XG59XG5leHBvcnQgZnVuY3Rpb24gY3dkKGlkZW50LCBzaWxlbnQpIHtcblx0cmV0dXJuIGZyb20ocmVzb2x2ZSgpLCBpZGVudCwgc2lsZW50KTtcbn1cbiIsImltcG9ydCB7IGRpcm5hbWUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBhYnNvbHV0ZSB9IGZyb20gXCJlbXBhdGhpYy9yZXNvbHZlXCI7XG4vKipcbiogR2V0IGFsbCBwYXJlbnQgZGlyZWN0b3JpZXMgb2Yge0BsaW5rIGJhc2V9LlxuKiBTdG9wcyBhZnRlciB7QGxpbmsgT3B0aW9uc1snbGFzdCddfSBpcyBwcm9jZXNzZWQuXG4qXG4qIEByZXR1cm5zIEFuIGFycmF5IG9mIGFic29sdXRlIHBhdGhzIG9mIGFsbCBwYXJlbnQgZGlyZWN0b3JpZXMuXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIHVwKGJhc2UsIG9wdGlvbnMpIHtcblx0bGV0IHsgbGFzdCwgY3dkIH0gPSBvcHRpb25zIHx8IHt9O1xuXHRsZXQgdG1wID0gYWJzb2x1dGUoYmFzZSwgY3dkKTtcblx0bGV0IHJvb3QgPSBhYnNvbHV0ZShsYXN0IHx8IFwiL1wiLCBjd2QpO1xuXHRsZXQgcHJldiwgYXJyID0gW107XG5cdHdoaWxlIChwcmV2ICE9PSByb290KSB7XG5cdFx0YXJyLnB1c2godG1wKTtcblx0XHR0bXAgPSBkaXJuYW1lKHByZXYgPSB0bXApO1xuXHRcdGlmICh0bXAgPT09IHByZXYpIGJyZWFrO1xuXHR9XG5cdHJldHVybiBhcnI7XG59XG4iLCJpbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgc3RhdFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgd2FsayBmcm9tIFwiZW1wYXRoaWMvd2Fsa1wiO1xuLyoqXG4qIEZpbmQgYW4gaXRlbSBieSBuYW1lLCB3YWxraW5nIHBhcmVudCBkaXJlY3RvcmllcyB1bnRpbCBmb3VuZC5cbipcbiogQHBhcmFtIG5hbWUgVGhlIGl0ZW0gbmFtZSB0byBmaW5kLlxuKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgaXRlbSwgaWYgZm91bmQuXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIHVwKG5hbWUsIG9wdGlvbnMpIHtcblx0bGV0IGRpciwgdG1wO1xuXHRsZXQgc3RhcnQgPSBvcHRpb25zICYmIG9wdGlvbnMuY3dkIHx8IFwiXCI7XG5cdGZvciAoZGlyIG9mIHdhbGsudXAoc3RhcnQsIG9wdGlvbnMpKSB7XG5cdFx0dG1wID0gam9pbihkaXIsIG5hbWUpO1xuXHRcdGlmIChleGlzdHNTeW5jKHRtcCkpIHJldHVybiB0bXA7XG5cdH1cbn1cbi8qKlxuKiBHZXQgdGhlIGZpcnN0IHBhdGggdGhhdCBtYXRjaGVzIGFueSBvZiB0aGUgbmFtZXMgcHJvdmlkZWQuXG4qXG4qID4gW05PVEVdXG4qID4gVGhlIG9yZGVyIG9mIHtAbGluayBuYW1lc30gaXMgcmVzcGVjdGVkLlxuKlxuKiBAcGFyYW0gbmFtZXMgVGhlIGl0ZW0gbmFtZXMgdG8gZmluZC5cbiogQHJldHVybnMgVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGZpcnN0IGl0ZW0gZm91bmQsIGlmIGFueS5cbiovXG5leHBvcnQgZnVuY3Rpb24gYW55KG5hbWVzLCBvcHRpb25zKSB7XG5cdGxldCBkaXIsIHN0YXJ0ID0gb3B0aW9ucyAmJiBvcHRpb25zLmN3ZCB8fCBcIlwiO1xuXHRsZXQgaiA9IDAsIGxlbiA9IG5hbWVzLmxlbmd0aCwgdG1wO1xuXHRmb3IgKGRpciBvZiB3YWxrLnVwKHN0YXJ0LCBvcHRpb25zKSkge1xuXHRcdGZvciAoaiA9IDA7IGogPCBsZW47IGorKykge1xuXHRcdFx0dG1wID0gam9pbihkaXIsIG5hbWVzW2pdKTtcblx0XHRcdGlmIChleGlzdHNTeW5jKHRtcCkpIHJldHVybiB0bXA7XG5cdFx0fVxuXHR9XG59XG4vKipcbiogRmluZCBhIGZpbGUgYnkgbmFtZSwgd2Fsa2luZyBwYXJlbnQgZGlyZWN0b3JpZXMgdW50aWwgZm91bmQuXG4qXG4qID4gW05PVEVdXG4qID4gVGhpcyBmdW5jdGlvbiBvbmx5IHJldHVybnMgYSB2YWx1ZSBmb3IgZmlsZSBtYXRjaGVzLlxuKiA+IEEgZGlyZWN0b3J5IG1hdGNoIHdpdGggdGhlIHNhbWUgbmFtZSB3aWxsIGJlIGlnbm9yZWQuXG4qXG4qIEBwYXJhbSBuYW1lIFRoZSBmaWxlIG5hbWUgdG8gZmluZC5cbiogQHJldHVybnMgVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGZpbGUsIGlmIGZvdW5kLlxuKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWxlKG5hbWUsIG9wdGlvbnMpIHtcblx0bGV0IGRpciwgdG1wO1xuXHRsZXQgc3RhcnQgPSBvcHRpb25zICYmIG9wdGlvbnMuY3dkIHx8IFwiXCI7XG5cdGZvciAoZGlyIG9mIHdhbGsudXAoc3RhcnQsIG9wdGlvbnMpKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHRtcCA9IGpvaW4oZGlyLCBuYW1lKTtcblx0XHRcdGlmIChzdGF0U3luYyh0bXApLmlzRmlsZSgpKSByZXR1cm4gdG1wO1xuXHRcdH0gY2F0Y2gge31cblx0fVxufVxuLyoqXG4qIEZpbmQgYSBkaXJlY3RvcnkgYnkgbmFtZSwgd2Fsa2luZyBwYXJlbnQgZGlyZWN0b3JpZXMgdW50aWwgZm91bmQuXG4qXG4qID4gW05PVEVdXG4qID4gVGhpcyBmdW5jdGlvbiBvbmx5IHJldHVybnMgYSB2YWx1ZSBmb3IgZGlyZWN0b3J5IG1hdGNoZXMuXG4qID4gQSBmaWxlIG1hdGNoIHdpdGggdGhlIHNhbWUgbmFtZSB3aWxsIGJlIGlnbm9yZWQuXG4qXG4qIEBwYXJhbSBuYW1lIFRoZSBkaXJlY3RvcnkgbmFtZSB0byBmaW5kLlxuKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgZmlsZSwgaWYgZm91bmQuXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGRpcihuYW1lLCBvcHRpb25zKSB7XG5cdGxldCBkaXIsIHRtcDtcblx0bGV0IHN0YXJ0ID0gb3B0aW9ucyAmJiBvcHRpb25zLmN3ZCB8fCBcIlwiO1xuXHRmb3IgKGRpciBvZiB3YWxrLnVwKHN0YXJ0LCBvcHRpb25zKSkge1xuXHRcdHRyeSB7XG5cdFx0XHR0bXAgPSBqb2luKGRpciwgbmFtZSk7XG5cdFx0XHRpZiAoc3RhdFN5bmModG1wKS5pc0RpcmVjdG9yeSgpKSByZXR1cm4gdG1wO1xuXHRcdH0gY2F0Y2gge31cblx0fVxufVxuIiwiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBjb2RlZ2VuL2luZGV4LnRzXG4vLyBEbyBub3QgZWRpdCB0aGlzIGZpbGUgbWFudWFsbHlcbmltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NsaXBhbmlvbidcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VSZW5hbWVDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gIHN0YXRpYyBwYXRocyA9IFtbJ3JlbmFtZSddXVxuXG4gIHN0YXRpYyB1c2FnZSA9IENvbW1hbmQuVXNhZ2Uoe1xuICAgIGRlc2NyaXB0aW9uOiAnUmVuYW1lIHRoZSBOQVBJLVJTIHByb2plY3QnLFxuICB9KVxuXG4gIGN3ZCA9IE9wdGlvbi5TdHJpbmcoJy0tY3dkJywgcHJvY2Vzcy5jd2QoKSwge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aCcsXG4gIH0pXG5cbiAgY29uZmlnUGF0aD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tY29uZmlnLXBhdGgsLWMnLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlJyxcbiAgfSlcblxuICBwYWNrYWdlSnNvblBhdGggPSBPcHRpb24uU3RyaW5nKCctLXBhY2thZ2UtanNvbi1wYXRoJywgJ3BhY2thZ2UuanNvbicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYHBhY2thZ2UuanNvbmAnLFxuICB9KVxuXG4gIG5wbURpciA9IE9wdGlvbi5TdHJpbmcoJy0tbnBtLWRpcicsICducG0nLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIG5wbSBwYWNrYWdlcyBwdXQnLFxuICB9KVxuXG4gICQkbmFtZT86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tbmFtZSwtbicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBuZXcgbmFtZSBvZiB0aGUgcHJvamVjdCcsXG4gIH0pXG5cbiAgYmluYXJ5TmFtZT86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tYmluYXJ5LW5hbWUsLWInLCB7XG4gICAgZGVzY3JpcHRpb246ICdUaGUgbmV3IGJpbmFyeSBuYW1lICoubm9kZSBmaWxlcycsXG4gIH0pXG5cbiAgcGFja2FnZU5hbWU/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLXBhY2thZ2UtbmFtZScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBuZXcgcGFja2FnZSBuYW1lIG9mIHRoZSBwcm9qZWN0JyxcbiAgfSlcblxuICBtYW5pZmVzdFBhdGggPSBPcHRpb24uU3RyaW5nKCctLW1hbmlmZXN0LXBhdGgnLCAnQ2FyZ28udG9tbCcsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYENhcmdvLnRvbWxgJyxcbiAgfSlcblxuICByZXBvc2l0b3J5Pzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1yZXBvc2l0b3J5Jywge1xuICAgIGRlc2NyaXB0aW9uOiAnVGhlIG5ldyByZXBvc2l0b3J5IG9mIHRoZSBwcm9qZWN0JyxcbiAgfSlcblxuICBkZXNjcmlwdGlvbj86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tZGVzY3JpcHRpb24nLCB7XG4gICAgZGVzY3JpcHRpb246ICdUaGUgbmV3IGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9qZWN0JyxcbiAgfSlcblxuICBnZXRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjd2Q6IHRoaXMuY3dkLFxuICAgICAgY29uZmlnUGF0aDogdGhpcy5jb25maWdQYXRoLFxuICAgICAgcGFja2FnZUpzb25QYXRoOiB0aGlzLnBhY2thZ2VKc29uUGF0aCxcbiAgICAgIG5wbURpcjogdGhpcy5ucG1EaXIsXG4gICAgICBuYW1lOiB0aGlzLiQkbmFtZSxcbiAgICAgIGJpbmFyeU5hbWU6IHRoaXMuYmluYXJ5TmFtZSxcbiAgICAgIHBhY2thZ2VOYW1lOiB0aGlzLnBhY2thZ2VOYW1lLFxuICAgICAgbWFuaWZlc3RQYXRoOiB0aGlzLm1hbmlmZXN0UGF0aCxcbiAgICAgIHJlcG9zaXRvcnk6IHRoaXMucmVwb3NpdG9yeSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlbmFtZSB0aGUgTkFQSS1SUyBwcm9qZWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuYW1lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGhcbiAgICpcbiAgICogQGRlZmF1bHQgcHJvY2Vzcy5jd2QoKVxuICAgKi9cbiAgY3dkPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAqL1xuICBjb25maWdQYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBwYWNrYWdlLmpzb25gXG4gICAqXG4gICAqIEBkZWZhdWx0ICdwYWNrYWdlLmpzb24nXG4gICAqL1xuICBwYWNrYWdlSnNvblBhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dFxuICAgKlxuICAgKiBAZGVmYXVsdCAnbnBtJ1xuICAgKi9cbiAgbnBtRGlyPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgbmV3IG5hbWUgb2YgdGhlIHByb2plY3RcbiAgICovXG4gIG5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuZXcgYmluYXJ5IG5hbWUgKi5ub2RlIGZpbGVzXG4gICAqL1xuICBiaW5hcnlOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgbmV3IHBhY2thZ2UgbmFtZSBvZiB0aGUgcHJvamVjdFxuICAgKi9cbiAgcGFja2FnZU5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYENhcmdvLnRvbWxgXG4gICAqXG4gICAqIEBkZWZhdWx0ICdDYXJnby50b21sJ1xuICAgKi9cbiAgbWFuaWZlc3RQYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgbmV3IHJlcG9zaXRvcnkgb2YgdGhlIHByb2plY3RcbiAgICovXG4gIHJlcG9zaXRvcnk/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuZXcgZGVzY3JpcHRpb24gb2YgdGhlIHByb2plY3RcbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHRSZW5hbWVPcHRpb25zKG9wdGlvbnM6IFJlbmFtZU9wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgcGFja2FnZUpzb25QYXRoOiAncGFja2FnZS5qc29uJyxcbiAgICBucG1EaXI6ICducG0nLFxuICAgIG1hbmlmZXN0UGF0aDogJ0NhcmdvLnRvbWwnLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cbn1cbiIsImltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgcmVuYW1lIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IHJlc29sdmUsIGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5cbmltcG9ydCB7IHBhcnNlIGFzIHBhcnNlVG9tbCwgc3RyaW5naWZ5IGFzIHN0cmluZ2lmeVRvbWwgfSBmcm9tICdAc3RkL3RvbWwnXG5pbXBvcnQgeyBsb2FkIGFzIHlhbWxQYXJzZSwgZHVtcCBhcyB5YW1sU3RyaW5naWZ5IH0gZnJvbSAnanMteWFtbCdcbmltcG9ydCB7IGlzTmlsLCBtZXJnZSwgb21pdEJ5LCBwaWNrIH0gZnJvbSAnZXMtdG9vbGtpdCdcbmltcG9ydCAqIGFzIGZpbmQgZnJvbSAnZW1wYXRoaWMvZmluZCdcblxuaW1wb3J0IHsgYXBwbHlEZWZhdWx0UmVuYW1lT3B0aW9ucywgdHlwZSBSZW5hbWVPcHRpb25zIH0gZnJvbSAnLi4vZGVmL3JlbmFtZS5qcydcbmltcG9ydCB7IHJlYWRDb25maWcsIHJlYWRGaWxlQXN5bmMsIHdyaXRlRmlsZUFzeW5jIH0gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5hbWVQcm9qZWN0KHVzZXJPcHRpb25zOiBSZW5hbWVPcHRpb25zKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBhcHBseURlZmF1bHRSZW5hbWVPcHRpb25zKHVzZXJPcHRpb25zKVxuICBjb25zdCBuYXBpQ29uZmlnID0gYXdhaXQgcmVhZENvbmZpZyhvcHRpb25zKVxuICBjb25zdCBvbGROYW1lID0gbmFwaUNvbmZpZy5iaW5hcnlOYW1lXG5cbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcmVzb2x2ZShvcHRpb25zLmN3ZCwgb3B0aW9ucy5wYWNrYWdlSnNvblBhdGgpXG4gIGNvbnN0IGNhcmdvVG9tbFBhdGggPSByZXNvbHZlKG9wdGlvbnMuY3dkLCBvcHRpb25zLm1hbmlmZXN0UGF0aClcblxuICBjb25zdCBwYWNrYWdlSnNvbkNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKHBhY2thZ2VKc29uUGF0aCwgJ3V0ZjgnKVxuICBjb25zdCBwYWNrYWdlSnNvbkRhdGEgPSBKU09OLnBhcnNlKHBhY2thZ2VKc29uQ29udGVudClcblxuICBtZXJnZShcbiAgICBtZXJnZShcbiAgICAgIHBhY2thZ2VKc29uRGF0YSxcbiAgICAgIG9taXRCeShcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBtaXNzaW5nIGZpZWxkczogYXV0aG9yIGFuZCBsaWNlbnNlXG4gICAgICAgIHBpY2sob3B0aW9ucywgWyduYW1lJywgJ2Rlc2NyaXB0aW9uJywgJ2F1dGhvcicsICdsaWNlbnNlJ10pLFxuICAgICAgICBpc05pbCxcbiAgICAgICksXG4gICAgKSxcbiAgICB7XG4gICAgICBuYXBpOiBvbWl0QnkoXG4gICAgICAgIHtcbiAgICAgICAgICBiaW5hcnlOYW1lOiBvcHRpb25zLmJpbmFyeU5hbWUsXG4gICAgICAgICAgcGFja2FnZU5hbWU6IG9wdGlvbnMucGFja2FnZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGlzTmlsLFxuICAgICAgKSxcbiAgICB9LFxuICApXG5cbiAgaWYgKG9wdGlvbnMuY29uZmlnUGF0aCkge1xuICAgIGNvbnN0IGNvbmZpZ1BhdGggPSByZXNvbHZlKG9wdGlvbnMuY3dkLCBvcHRpb25zLmNvbmZpZ1BhdGgpXG4gICAgY29uc3QgY29uZmlnQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlQXN5bmMoY29uZmlnUGF0aCwgJ3V0ZjgnKVxuICAgIGNvbnN0IGNvbmZpZ0RhdGEgPSBKU09OLnBhcnNlKGNvbmZpZ0NvbnRlbnQpXG4gICAgY29uZmlnRGF0YS5iaW5hcnlOYW1lID0gb3B0aW9ucy5iaW5hcnlOYW1lXG4gICAgY29uZmlnRGF0YS5wYWNrYWdlTmFtZSA9IG9wdGlvbnMucGFja2FnZU5hbWVcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhjb25maWdQYXRoLCBKU09OLnN0cmluZ2lmeShjb25maWdEYXRhLCBudWxsLCAyKSlcbiAgfVxuXG4gIGF3YWl0IHdyaXRlRmlsZUFzeW5jKFxuICAgIHBhY2thZ2VKc29uUGF0aCxcbiAgICBKU09OLnN0cmluZ2lmeShwYWNrYWdlSnNvbkRhdGEsIG51bGwsIDIpLFxuICApXG5cbiAgY29uc3QgdG9tbENvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKGNhcmdvVG9tbFBhdGgsICd1dGY4JylcbiAgY29uc3QgY2FyZ29Ub21sID0gcGFyc2VUb21sKHRvbWxDb250ZW50KSBhcyBhbnlcblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UgbmFtZVxuICBpZiAoY2FyZ29Ub21sLnBhY2thZ2UgJiYgb3B0aW9ucy5iaW5hcnlOYW1lKSB7XG4gICAgLy8gU2FuaXRpemUgdGhlIGJpbmFyeSBuYW1lIGZvciBSdXN0IHBhY2thZ2UgbmFtaW5nIGNvbnZlbnRpb25zXG4gICAgY29uc3Qgc2FuaXRpemVkTmFtZSA9IG9wdGlvbnMuYmluYXJ5TmFtZVxuICAgICAgLnJlcGxhY2UoJ0AnLCAnJylcbiAgICAgIC5yZXBsYWNlKCcvJywgJ18nKVxuICAgICAgLnJlcGxhY2UoLy0vZywgJ18nKVxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICBjYXJnb1RvbWwucGFja2FnZS5uYW1lID0gc2FuaXRpemVkTmFtZVxuICB9XG5cbiAgLy8gU3RyaW5naWZ5IHRoZSB1cGRhdGVkIFRPTUxcbiAgY29uc3QgdXBkYXRlZFRvbWxDb250ZW50ID0gc3RyaW5naWZ5VG9tbChjYXJnb1RvbWwpXG5cbiAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoY2FyZ29Ub21sUGF0aCwgdXBkYXRlZFRvbWxDb250ZW50KVxuICBpZiAob2xkTmFtZSAhPT0gb3B0aW9ucy5iaW5hcnlOYW1lKSB7XG4gICAgY29uc3QgZ2l0aHViQWN0aW9uc1BhdGggPSBmaW5kLmRpcignLmdpdGh1YicsIHtcbiAgICAgIGN3ZDogb3B0aW9ucy5jd2QsXG4gICAgfSlcbiAgICBpZiAoZ2l0aHViQWN0aW9uc1BhdGgpIHtcbiAgICAgIGNvbnN0IGdpdGh1YkFjdGlvbnNDSVltbFBhdGggPSBqb2luKFxuICAgICAgICBnaXRodWJBY3Rpb25zUGF0aCxcbiAgICAgICAgJ3dvcmtmbG93cycsXG4gICAgICAgICdDSS55bWwnLFxuICAgICAgKVxuICAgICAgaWYgKGV4aXN0c1N5bmMoZ2l0aHViQWN0aW9uc0NJWW1sUGF0aCkpIHtcbiAgICAgICAgY29uc3QgZ2l0aHViQWN0aW9uc0NvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKFxuICAgICAgICAgIGdpdGh1YkFjdGlvbnNDSVltbFBhdGgsXG4gICAgICAgICAgJ3V0ZjgnLFxuICAgICAgICApXG4gICAgICAgIGNvbnN0IGdpdGh1YkFjdGlvbnNEYXRhID0geWFtbFBhcnNlKGdpdGh1YkFjdGlvbnNDb250ZW50KSBhcyBhbnlcbiAgICAgICAgaWYgKGdpdGh1YkFjdGlvbnNEYXRhLmVudj8uQVBQX05BTUUpIHtcbiAgICAgICAgICBnaXRodWJBY3Rpb25zRGF0YS5lbnYuQVBQX05BTUUgPSBvcHRpb25zLmJpbmFyeU5hbWVcbiAgICAgICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgICAgICAgIGdpdGh1YkFjdGlvbnNDSVltbFBhdGgsXG4gICAgICAgICAgICB5YW1sU3RyaW5naWZ5KGdpdGh1YkFjdGlvbnNEYXRhLCB7XG4gICAgICAgICAgICAgIGxpbmVXaWR0aDogLTEsXG4gICAgICAgICAgICAgIG5vUmVmczogdHJ1ZSxcbiAgICAgICAgICAgICAgc29ydEtleXM6IGZhbHNlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG9sZFdhc2lCcm93c2VyQmluZGluZ1BhdGggPSBqb2luKFxuICAgICAgb3B0aW9ucy5jd2QsXG4gICAgICBgJHtvbGROYW1lfS53YXNpLWJyb3dzZXIuanNgLFxuICAgIClcbiAgICBpZiAoZXhpc3RzU3luYyhvbGRXYXNpQnJvd3NlckJpbmRpbmdQYXRoKSkge1xuICAgICAgYXdhaXQgcmVuYW1lKFxuICAgICAgICBvbGRXYXNpQnJvd3NlckJpbmRpbmdQYXRoLFxuICAgICAgICBqb2luKG9wdGlvbnMuY3dkLCBgJHtvcHRpb25zLmJpbmFyeU5hbWV9Lndhc2ktYnJvd3Nlci5qc2ApLFxuICAgICAgKVxuICAgIH1cbiAgICBjb25zdCBvbGRXYXNpQmluZGluZ1BhdGggPSBqb2luKG9wdGlvbnMuY3dkLCBgJHtvbGROYW1lfS53YXNpLmNqc2ApXG4gICAgaWYgKGV4aXN0c1N5bmMob2xkV2FzaUJpbmRpbmdQYXRoKSkge1xuICAgICAgYXdhaXQgcmVuYW1lKFxuICAgICAgICBvbGRXYXNpQmluZGluZ1BhdGgsXG4gICAgICAgIGpvaW4ob3B0aW9ucy5jd2QsIGAke29wdGlvbnMuYmluYXJ5TmFtZX0ud2FzaS5janNgKSxcbiAgICAgIClcbiAgICB9XG4gICAgY29uc3QgZ2l0QXR0cmlidXRlc1BhdGggPSBqb2luKG9wdGlvbnMuY3dkLCAnLmdpdGF0dHJpYnV0ZXMnKVxuICAgIGlmIChleGlzdHNTeW5jKGdpdEF0dHJpYnV0ZXNQYXRoKSkge1xuICAgICAgY29uc3QgZ2l0QXR0cmlidXRlc0NvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKFxuICAgICAgICBnaXRBdHRyaWJ1dGVzUGF0aCxcbiAgICAgICAgJ3V0ZjgnLFxuICAgICAgKVxuICAgICAgY29uc3QgZ2l0QXR0cmlidXRlc0RhdGEgPSBnaXRBdHRyaWJ1dGVzQ29udGVudFxuICAgICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgICAgICByZXR1cm4gbGluZVxuICAgICAgICAgICAgLnJlcGxhY2UoXG4gICAgICAgICAgICAgIGAke29sZE5hbWV9Lndhc2ktYnJvd3Nlci5qc2AsXG4gICAgICAgICAgICAgIGAke29wdGlvbnMuYmluYXJ5TmFtZX0ud2FzaS1icm93c2VyLmpzYCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5yZXBsYWNlKGAke29sZE5hbWV9Lndhc2kuY2pzYCwgYCR7b3B0aW9ucy5iaW5hcnlOYW1lfS53YXNpLmNqc2ApXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCdcXG4nKVxuICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoZ2l0QXR0cmlidXRlc1BhdGgsIGdpdEF0dHJpYnV0ZXNEYXRhKVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgZXhlYywgZXhlY1N5bmMgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJ1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdub2RlOmZzJ1xuXG5pbXBvcnQgeyBsb2FkIGFzIHlhbWxMb2FkLCBkdW1wIGFzIHlhbWxEdW1wIH0gZnJvbSAnanMteWFtbCdcblxuaW1wb3J0IHtcbiAgYXBwbHlEZWZhdWx0TmV3T3B0aW9ucyxcbiAgdHlwZSBOZXdPcHRpb25zIGFzIFJhd05ld09wdGlvbnMsXG59IGZyb20gJy4uL2RlZi9uZXcuanMnXG5pbXBvcnQge1xuICBBVkFJTEFCTEVfVEFSR0VUUyxcbiAgZGVidWdGYWN0b3J5LFxuICBERUZBVUxUX1RBUkdFVFMsXG4gIG1rZGlyQXN5bmMsXG4gIHJlYWRkaXJBc3luYyxcbiAgc3RhdEFzeW5jLFxuICB0eXBlIFN1cHBvcnRlZFBhY2thZ2VNYW5hZ2VyLFxufSBmcm9tICcuLi91dGlscy9pbmRleC5qcydcbmltcG9ydCB7IG5hcGlFbmdpbmVSZXF1aXJlbWVudCB9IGZyb20gJy4uL3V0aWxzL3ZlcnNpb24uanMnXG5pbXBvcnQgeyByZW5hbWVQcm9qZWN0IH0gZnJvbSAnLi9yZW5hbWUuanMnXG5cbi8vIFRlbXBsYXRlIGltcG9ydHMgcmVtb3ZlZCBhcyB3ZSdyZSBub3cgdXNpbmcgZXh0ZXJuYWwgdGVtcGxhdGVzXG5cbmNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCduZXcnKVxuXG50eXBlIE5ld09wdGlvbnMgPSBSZXF1aXJlZDxSYXdOZXdPcHRpb25zPlxuXG5jb25zdCBURU1QTEFURV9SRVBPUyA9IHtcbiAgeWFybjogJ2h0dHBzOi8vZ2l0aHViLmNvbS9uYXBpLXJzL3BhY2thZ2UtdGVtcGxhdGUnLFxuICBwbnBtOiAnaHR0cHM6Ly9naXRodWIuY29tL25hcGktcnMvcGFja2FnZS10ZW1wbGF0ZS1wbnBtJyxcbn0gYXMgY29uc3RcblxuYXN5bmMgZnVuY3Rpb24gY2hlY2tHaXRDb21tYW5kKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICB0cnkge1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBjcCA9IGV4ZWMoJ2dpdCAtLXZlcnNpb24nKVxuICAgICAgY3Aub24oJ2Vycm9yJywgKCkgPT4ge1xuICAgICAgICByZXNvbHZlKGZhbHNlKVxuICAgICAgfSlcbiAgICAgIGNwLm9uKCdleGl0JywgKGNvZGUpID0+IHtcbiAgICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgICByZXNvbHZlKHRydWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZUNhY2hlRGlyKFxuICBwYWNrYWdlTWFuYWdlcjogU3VwcG9ydGVkUGFja2FnZU1hbmFnZXIsXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjYWNoZURpciA9IHBhdGguam9pbihob21lZGlyKCksICcubmFwaS1ycycsICd0ZW1wbGF0ZScsIHBhY2thZ2VNYW5hZ2VyKVxuICBhd2FpdCBta2RpckFzeW5jKGNhY2hlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICByZXR1cm4gY2FjaGVEaXJcbn1cblxuYXN5bmMgZnVuY3Rpb24gZG93bmxvYWRUZW1wbGF0ZShcbiAgcGFja2FnZU1hbmFnZXI6IFN1cHBvcnRlZFBhY2thZ2VNYW5hZ2VyLFxuICBjYWNoZURpcjogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlcG9VcmwgPSBURU1QTEFURV9SRVBPU1twYWNrYWdlTWFuYWdlcl1cbiAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aC5qb2luKGNhY2hlRGlyLCAncmVwbycpXG5cbiAgaWYgKGV4aXN0c1N5bmModGVtcGxhdGVQYXRoKSkge1xuICAgIGRlYnVnKGBUZW1wbGF0ZSBjYWNoZSBmb3VuZCBhdCAke3RlbXBsYXRlUGF0aH0sIHVwZGF0aW5nLi4uYClcbiAgICB0cnkge1xuICAgICAgLy8gRmV0Y2ggbGF0ZXN0IGNoYW5nZXMgYW5kIHJlc2V0IHRvIHJlbW90ZVxuICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBjcCA9IGV4ZWMoJ2dpdCBmZXRjaCBvcmlnaW4nLCB7IGN3ZDogdGVtcGxhdGVQYXRoIH0pXG4gICAgICAgIGNwLm9uKCdlcnJvcicsIHJlamVjdClcbiAgICAgICAgY3Aub24oJ2V4aXQnLCAoY29kZSkgPT4ge1xuICAgICAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYEZhaWxlZCB0byBmZXRjaCBsYXRlc3QgY2hhbmdlcywgZ2l0IHByb2Nlc3MgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgZXhlY1N5bmMoJ2dpdCByZXNldCAtLWhhcmQgb3JpZ2luL21haW4nLCB7XG4gICAgICAgIGN3ZDogdGVtcGxhdGVQYXRoLFxuICAgICAgICBzdGRpbzogJ2lnbm9yZScsXG4gICAgICB9KVxuICAgICAgZGVidWcoJ1RlbXBsYXRlIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5JylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZGVidWcoYEZhaWxlZCB0byB1cGRhdGUgdGVtcGxhdGU6ICR7ZXJyb3J9YClcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHVwZGF0ZSB0ZW1wbGF0ZSBmcm9tICR7cmVwb1VybH06ICR7ZXJyb3J9YClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZGVidWcoYENsb25pbmcgdGVtcGxhdGUgZnJvbSAke3JlcG9Vcmx9Li4uYClcbiAgICB0cnkge1xuICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke3JlcG9Vcmx9IHJlcG9gLCB7IGN3ZDogY2FjaGVEaXIsIHN0ZGlvOiAnaW5oZXJpdCcgfSlcbiAgICAgIGRlYnVnKCdUZW1wbGF0ZSBjbG9uZWQgc3VjY2Vzc2Z1bGx5JylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gY2xvbmUgdGVtcGxhdGUgZnJvbSAke3JlcG9Vcmx9OiAke2Vycm9yfWApXG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvcHlEaXJlY3RvcnkoXG4gIHNyYzogc3RyaW5nLFxuICBkZXN0OiBzdHJpbmcsXG4gIGluY2x1ZGVXYXNpQmluZGluZ3M6IGJvb2xlYW4sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbWtkaXJBc3luYyhkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICBjb25zdCBlbnRyaWVzID0gYXdhaXQgZnMucmVhZGRpcihzcmMsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KVxuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGNvbnN0IHNyY1BhdGggPSBwYXRoLmpvaW4oc3JjLCBlbnRyeS5uYW1lKVxuICAgIGNvbnN0IGRlc3RQYXRoID0gcGF0aC5qb2luKGRlc3QsIGVudHJ5Lm5hbWUpXG5cbiAgICAvLyBTa2lwIC5naXQgZGlyZWN0b3J5XG4gICAgaWYgKGVudHJ5Lm5hbWUgPT09ICcuZ2l0Jykge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBpZiAoZW50cnkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgYXdhaXQgY29weURpcmVjdG9yeShzcmNQYXRoLCBkZXN0UGF0aCwgaW5jbHVkZVdhc2lCaW5kaW5ncylcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKFxuICAgICAgICAhaW5jbHVkZVdhc2lCaW5kaW5ncyAmJlxuICAgICAgICAoZW50cnkubmFtZS5lbmRzV2l0aCgnLndhc2ktYnJvd3Nlci5qcycpIHx8XG4gICAgICAgICAgZW50cnkubmFtZS5lbmRzV2l0aCgnLndhc2kuY2pzJykgfHxcbiAgICAgICAgICBlbnRyeS5uYW1lLmVuZHNXaXRoKCd3YXNpLXdvcmtlci5icm93c2VyLm1qcyAnKSB8fFxuICAgICAgICAgIGVudHJ5Lm5hbWUuZW5kc1dpdGgoJ3dhc2ktd29ya2VyLm1qcycpIHx8XG4gICAgICAgICAgZW50cnkubmFtZS5lbmRzV2l0aCgnYnJvd3Nlci5qcycpKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBhd2FpdCBmcy5jb3B5RmlsZShzcmNQYXRoLCBkZXN0UGF0aClcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZmlsdGVyVGFyZ2V0c0luUGFja2FnZUpzb24oXG4gIGZpbGVQYXRoOiBzdHJpbmcsXG4gIGVuYWJsZWRUYXJnZXRzOiBzdHJpbmdbXSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZVBhdGgsICd1dGYtOCcpXG4gIGNvbnN0IHBhY2thZ2VKc29uID0gSlNPTi5wYXJzZShjb250ZW50KVxuXG4gIC8vIEZpbHRlciBuYXBpLnRhcmdldHNcbiAgaWYgKHBhY2thZ2VKc29uLm5hcGk/LnRhcmdldHMpIHtcbiAgICBwYWNrYWdlSnNvbi5uYXBpLnRhcmdldHMgPSBwYWNrYWdlSnNvbi5uYXBpLnRhcmdldHMuZmlsdGVyKFxuICAgICAgKHRhcmdldDogc3RyaW5nKSA9PiBlbmFibGVkVGFyZ2V0cy5pbmNsdWRlcyh0YXJnZXQpLFxuICAgIClcbiAgfVxuXG4gIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkocGFja2FnZUpzb24sIG51bGwsIDIpICsgJ1xcbicpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbHRlclRhcmdldHNJbkdpdGh1YkFjdGlvbnMoXG4gIGZpbGVQYXRoOiBzdHJpbmcsXG4gIGVuYWJsZWRUYXJnZXRzOiBzdHJpbmdbXSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZVBhdGgsICd1dGYtOCcpXG4gIGNvbnN0IHlhbWwgPSB5YW1sTG9hZChjb250ZW50KSBhcyBhbnlcblxuICBjb25zdCBtYWNPU0FuZFdpbmRvd3NUYXJnZXRzID0gbmV3IFNldChbXG4gICAgJ3g4Nl82NC1wYy13aW5kb3dzLW1zdmMnLFxuICAgICd4ODZfNjQtcGMtd2luZG93cy1nbnUnLFxuICAgICdhYXJjaDY0LXBjLXdpbmRvd3MtbXN2YycsXG4gICAgJ3g4Nl82NC1hcHBsZS1kYXJ3aW4nLFxuICBdKVxuXG4gIGNvbnN0IGxpbnV4VGFyZ2V0cyA9IG5ldyBTZXQoW1xuICAgICd4ODZfNjQtdW5rbm93bi1saW51eC1nbnUnLFxuICAgICd4ODZfNjQtdW5rbm93bi1saW51eC1tdXNsJyxcbiAgICAnYWFyY2g2NC11bmtub3duLWxpbnV4LWdudScsXG4gICAgJ2FhcmNoNjQtdW5rbm93bi1saW51eC1tdXNsJyxcbiAgICAnYXJtdjctdW5rbm93bi1saW51eC1nbnVlYWJpaGYnLFxuICAgICdhcm12Ny11bmtub3duLWxpbnV4LW11c2xlYWJpaGYnLFxuICAgICdsb29uZ2FyY2g2NC11bmtub3duLWxpbnV4LWdudScsXG4gICAgJ3Jpc2N2NjRnYy11bmtub3duLWxpbnV4LWdudScsXG4gICAgJ3Bvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251JyxcbiAgICAnczM5MHgtdW5rbm93bi1saW51eC1nbnUnLFxuICAgICdhYXJjaDY0LWxpbnV4LWFuZHJvaWQnLFxuICAgICdhcm12Ny1saW51eC1hbmRyb2lkZWFiaScsXG4gIF0pXG5cbiAgLy8gQ2hlY2sgaWYgYW55IExpbnV4IHRhcmdldHMgYXJlIGVuYWJsZWRcbiAgY29uc3QgaGFzTGludXhUYXJnZXRzID0gZW5hYmxlZFRhcmdldHMuc29tZSgodGFyZ2V0KSA9PlxuICAgIGxpbnV4VGFyZ2V0cy5oYXModGFyZ2V0KSxcbiAgKVxuXG4gIC8vIEZpbHRlciB0aGUgbWF0cml4IGNvbmZpZ3VyYXRpb25zIGluIHRoZSBidWlsZCBqb2JcbiAgaWYgKHlhbWw/LmpvYnM/LmJ1aWxkPy5zdHJhdGVneT8ubWF0cml4Py5zZXR0aW5ncykge1xuICAgIHlhbWwuam9icy5idWlsZC5zdHJhdGVneS5tYXRyaXguc2V0dGluZ3MgPVxuICAgICAgeWFtbC5qb2JzLmJ1aWxkLnN0cmF0ZWd5Lm1hdHJpeC5zZXR0aW5ncy5maWx0ZXIoKHNldHRpbmc6IGFueSkgPT4ge1xuICAgICAgICBpZiAoc2V0dGluZy50YXJnZXQpIHtcbiAgICAgICAgICByZXR1cm4gZW5hYmxlZFRhcmdldHMuaW5jbHVkZXMoc2V0dGluZy50YXJnZXQpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0pXG4gIH1cblxuICBjb25zdCBqb2JzVG9SZW1vdmU6IHN0cmluZ1tdID0gW11cblxuICBpZiAoZW5hYmxlZFRhcmdldHMuZXZlcnkoKHRhcmdldCkgPT4gIW1hY09TQW5kV2luZG93c1RhcmdldHMuaGFzKHRhcmdldCkpKSB7XG4gICAgam9ic1RvUmVtb3ZlLnB1c2goJ3Rlc3QtbWFjT1Mtd2luZG93cy1iaW5kaW5nJylcbiAgfSBlbHNlIHtcbiAgICAvLyBGaWx0ZXIgdGhlIG1hdHJpeCBjb25maWd1cmF0aW9ucyBpbiB0aGUgdGVzdC1tYWNPUy13aW5kb3dzLWJpbmRpbmcgam9iXG4gICAgaWYgKFxuICAgICAgeWFtbD8uam9icz8uWyd0ZXN0LW1hY09TLXdpbmRvd3MtYmluZGluZyddPy5zdHJhdGVneT8ubWF0cml4Py5zZXR0aW5nc1xuICAgICkge1xuICAgICAgeWFtbC5qb2JzWyd0ZXN0LW1hY09TLXdpbmRvd3MtYmluZGluZyddLnN0cmF0ZWd5Lm1hdHJpeC5zZXR0aW5ncyA9XG4gICAgICAgIHlhbWwuam9ic1sndGVzdC1tYWNPUy13aW5kb3dzLWJpbmRpbmcnXS5zdHJhdGVneS5tYXRyaXguc2V0dGluZ3MuZmlsdGVyKFxuICAgICAgICAgIChzZXR0aW5nOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChzZXR0aW5nLnRhcmdldCkge1xuICAgICAgICAgICAgICByZXR1cm4gZW5hYmxlZFRhcmdldHMuaW5jbHVkZXMoc2V0dGluZy50YXJnZXQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICB9XG4gIH1cblxuICAvLyBJZiBubyBMaW51eCB0YXJnZXRzIGFyZSBlbmFibGVkLCByZW1vdmUgTGludXgtc3BlY2lmaWMgam9ic1xuICBpZiAoIWhhc0xpbnV4VGFyZ2V0cykge1xuICAgIC8vIFJlbW92ZSB0ZXN0LWxpbnV4LWJpbmRpbmcgam9iXG4gICAgaWYgKHlhbWw/LmpvYnM/LlsndGVzdC1saW51eC1iaW5kaW5nJ10pIHtcbiAgICAgIGpvYnNUb1JlbW92ZS5wdXNoKCd0ZXN0LWxpbnV4LWJpbmRpbmcnKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBGaWx0ZXIgdGhlIG1hdHJpeCBjb25maWd1cmF0aW9ucyBpbiB0aGUgdGVzdC1saW51eC14NjQtZ251LWJpbmRpbmcgam9iXG4gICAgaWYgKHlhbWw/LmpvYnM/LlsndGVzdC1saW51eC1iaW5kaW5nJ10/LnN0cmF0ZWd5Py5tYXRyaXg/LnRhcmdldCkge1xuICAgICAgeWFtbC5qb2JzWyd0ZXN0LWxpbnV4LWJpbmRpbmcnXS5zdHJhdGVneS5tYXRyaXgudGFyZ2V0ID0geWFtbC5qb2JzW1xuICAgICAgICAndGVzdC1saW51eC1iaW5kaW5nJ1xuICAgICAgXS5zdHJhdGVneS5tYXRyaXgudGFyZ2V0LmZpbHRlcigodGFyZ2V0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgIHJldHVybiBlbmFibGVkVGFyZ2V0cy5pbmNsdWRlcyh0YXJnZXQpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKCFlbmFibGVkVGFyZ2V0cy5pbmNsdWRlcygnd2FzbTMyLXdhc2lwMS10aHJlYWRzJykpIHtcbiAgICBqb2JzVG9SZW1vdmUucHVzaCgndGVzdC13YXNpJylcbiAgfVxuXG4gIGlmICghZW5hYmxlZFRhcmdldHMuaW5jbHVkZXMoJ3g4Nl82NC11bmtub3duLWZyZWVic2QnKSkge1xuICAgIGpvYnNUb1JlbW92ZS5wdXNoKCdidWlsZC1mcmVlYnNkJylcbiAgfVxuXG4gIC8vIEZpbHRlciBvdGhlciB0ZXN0IGpvYnMgYmFzZWQgb24gdGFyZ2V0XG4gIGZvciAoY29uc3QgW2pvYk5hbWUsIGpvYkNvbmZpZ10gb2YgT2JqZWN0LmVudHJpZXMoeWFtbC5qb2JzIHx8IHt9KSkge1xuICAgIGlmIChcbiAgICAgIGpvYk5hbWUuc3RhcnRzV2l0aCgndGVzdC0nKSAmJlxuICAgICAgam9iTmFtZSAhPT0gJ3Rlc3QtbWFjT1Mtd2luZG93cy1iaW5kaW5nJyAmJlxuICAgICAgam9iTmFtZSAhPT0gJ3Rlc3QtbGludXgteDY0LWdudS1iaW5kaW5nJ1xuICAgICkge1xuICAgICAgLy8gRXh0cmFjdCB0YXJnZXQgZnJvbSBqb2IgbmFtZSBvciBjb25maWdcbiAgICAgIGNvbnN0IGpvYiA9IGpvYkNvbmZpZyBhcyBhbnlcbiAgICAgIGlmIChqb2Iuc3RyYXRlZ3k/Lm1hdHJpeD8uc2V0dGluZ3M/LlswXT8udGFyZ2V0KSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGpvYi5zdHJhdGVneS5tYXRyaXguc2V0dGluZ3NbMF0udGFyZ2V0XG4gICAgICAgIGlmICghZW5hYmxlZFRhcmdldHMuaW5jbHVkZXModGFyZ2V0KSkge1xuICAgICAgICAgIGpvYnNUb1JlbW92ZS5wdXNoKGpvYk5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZW1vdmUgam9icyBmb3IgZGlzYWJsZWQgdGFyZ2V0c1xuICBmb3IgKGNvbnN0IGpvYk5hbWUgb2Ygam9ic1RvUmVtb3ZlKSB7XG4gICAgZGVsZXRlIHlhbWwuam9ic1tqb2JOYW1lXVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoeWFtbC5qb2JzPy5wdWJsaXNoPy5uZWVkcykpIHtcbiAgICB5YW1sLmpvYnMucHVibGlzaC5uZWVkcyA9IHlhbWwuam9icy5wdWJsaXNoLm5lZWRzLmZpbHRlcihcbiAgICAgIChuZWVkOiBzdHJpbmcpID0+ICFqb2JzVG9SZW1vdmUuaW5jbHVkZXMobmVlZCksXG4gICAgKVxuICB9XG5cbiAgLy8gV3JpdGUgYmFjayB0aGUgZmlsdGVyZWQgWUFNTFxuICBjb25zdCB1cGRhdGVkWWFtbCA9IHlhbWxEdW1wKHlhbWwsIHtcbiAgICBsaW5lV2lkdGg6IC0xLFxuICAgIG5vUmVmczogdHJ1ZSxcbiAgICBzb3J0S2V5czogZmFsc2UsXG4gIH0pXG4gIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlUGF0aCwgdXBkYXRlZFlhbWwpXG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NPcHRpb25zKG9wdGlvbnM6IFJhd05ld09wdGlvbnMpIHtcbiAgZGVidWcoJ1Byb2Nlc3Npbmcgb3B0aW9ucy4uLicpXG4gIGlmICghb3B0aW9ucy5wYXRoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSB0aGUgcGF0aCBhcyB0aGUgYXJndW1lbnQnKVxuICB9XG4gIG9wdGlvbnMucGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBvcHRpb25zLnBhdGgpXG4gIGRlYnVnKGBSZXNvbHZlZCB0YXJnZXQgcGF0aCB0bzogJHtvcHRpb25zLnBhdGh9YClcblxuICBpZiAoIW9wdGlvbnMubmFtZSkge1xuICAgIG9wdGlvbnMubmFtZSA9IHBhdGgucGFyc2Uob3B0aW9ucy5wYXRoKS5iYXNlXG4gICAgZGVidWcoYE5vIHByb2plY3QgbmFtZSBwcm92aWRlZCwgZml4IGl0IHRvIGRpciBuYW1lOiAke29wdGlvbnMubmFtZX1gKVxuICB9XG5cbiAgaWYgKCFvcHRpb25zLnRhcmdldHM/Lmxlbmd0aCkge1xuICAgIGlmIChvcHRpb25zLmVuYWJsZUFsbFRhcmdldHMpIHtcbiAgICAgIG9wdGlvbnMudGFyZ2V0cyA9IEFWQUlMQUJMRV9UQVJHRVRTLmNvbmNhdCgpXG4gICAgICBkZWJ1ZygnRW5hYmxlIGFsbCB0YXJnZXRzJylcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZW5hYmxlRGVmYXVsdFRhcmdldHMpIHtcbiAgICAgIG9wdGlvbnMudGFyZ2V0cyA9IERFRkFVTFRfVEFSR0VUUy5jb25jYXQoKVxuICAgICAgZGVidWcoJ0VuYWJsZSBkZWZhdWx0IHRhcmdldHMnKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0IGxlYXN0IG9uZSB0YXJnZXQgbXVzdCBiZSBlbmFibGVkJylcbiAgICB9XG4gIH1cbiAgaWYgKFxuICAgIG9wdGlvbnMudGFyZ2V0cy5zb21lKCh0YXJnZXQpID0+IHRhcmdldCA9PT0gJ3dhc20zMi13YXNpLXByZXZpZXcxLXRocmVhZHMnKVxuICApIHtcbiAgICBjb25zdCBvdXQgPSBleGVjU3luYyhgcnVzdHVwIHRhcmdldCBsaXN0YCwge1xuICAgICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICB9KVxuICAgIGlmIChvdXQuaW5jbHVkZXMoJ3dhc20zMi13YXNpcDEtdGhyZWFkcycpKSB7XG4gICAgICBvcHRpb25zLnRhcmdldHMgPSBvcHRpb25zLnRhcmdldHMubWFwKCh0YXJnZXQpID0+XG4gICAgICAgIHRhcmdldCA9PT0gJ3dhc20zMi13YXNpLXByZXZpZXcxLXRocmVhZHMnXG4gICAgICAgICAgPyAnd2FzbTMyLXdhc2lwMS10aHJlYWRzJ1xuICAgICAgICAgIDogdGFyZ2V0LFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcHBseURlZmF1bHROZXdPcHRpb25zKG9wdGlvbnMpIGFzIE5ld09wdGlvbnNcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5ld1Byb2plY3QodXNlck9wdGlvbnM6IFJhd05ld09wdGlvbnMpIHtcbiAgZGVidWcoJ1dpbGwgY3JlYXRlIG5hcGktcnMgcHJvamVjdCB3aXRoIGdpdmVuIG9wdGlvbnM6JylcbiAgZGVidWcodXNlck9wdGlvbnMpXG5cbiAgY29uc3Qgb3B0aW9ucyA9IHByb2Nlc3NPcHRpb25zKHVzZXJPcHRpb25zKVxuXG4gIGRlYnVnKCdUYXJnZXRzIHRvIGJlIGVuYWJsZWQ6JylcbiAgZGVidWcob3B0aW9ucy50YXJnZXRzKVxuXG4gIC8vIENoZWNrIGlmIGdpdCBpcyBhdmFpbGFibGVcbiAgaWYgKCEoYXdhaXQgY2hlY2tHaXRDb21tYW5kKCkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0dpdCBpcyBub3QgaW5zdGFsbGVkIG9yIG5vdCBhdmFpbGFibGUgaW4gUEFUSC4gUGxlYXNlIGluc3RhbGwgR2l0IHRvIGNvbnRpbnVlLicsXG4gICAgKVxuICB9XG5cbiAgY29uc3QgcGFja2FnZU1hbmFnZXIgPSBvcHRpb25zLnBhY2thZ2VNYW5hZ2VyIGFzIFN1cHBvcnRlZFBhY2thZ2VNYW5hZ2VyXG5cbiAgLy8gRW5zdXJlIHRhcmdldCBkaXJlY3RvcnkgZXhpc3RzIGFuZCBpcyBlbXB0eVxuICBhd2FpdCBlbnN1cmVQYXRoKG9wdGlvbnMucGF0aCwgb3B0aW9ucy5kcnlSdW4pXG5cbiAgaWYgKCFvcHRpb25zLmRyeVJ1bikge1xuICAgIHRyeSB7XG4gICAgICAvLyBEb3dubG9hZCBvciB1cGRhdGUgdGVtcGxhdGVcbiAgICAgIGNvbnN0IGNhY2hlRGlyID0gYXdhaXQgZW5zdXJlQ2FjaGVEaXIocGFja2FnZU1hbmFnZXIpXG4gICAgICBhd2FpdCBkb3dubG9hZFRlbXBsYXRlKHBhY2thZ2VNYW5hZ2VyLCBjYWNoZURpcilcblxuICAgICAgLy8gQ29weSB0ZW1wbGF0ZSBmaWxlcyB0byB0YXJnZXQgZGlyZWN0b3J5XG4gICAgICBjb25zdCB0ZW1wbGF0ZVBhdGggPSBwYXRoLmpvaW4oY2FjaGVEaXIsICdyZXBvJylcbiAgICAgIGF3YWl0IGNvcHlEaXJlY3RvcnkoXG4gICAgICAgIHRlbXBsYXRlUGF0aCxcbiAgICAgICAgb3B0aW9ucy5wYXRoLFxuICAgICAgICBvcHRpb25zLnRhcmdldHMuaW5jbHVkZXMoJ3dhc20zMi13YXNpcDEtdGhyZWFkcycpLFxuICAgICAgKVxuXG4gICAgICAvLyBSZW5hbWUgcHJvamVjdCB1c2luZyB0aGUgcmVuYW1lIEFQSVxuICAgICAgYXdhaXQgcmVuYW1lUHJvamVjdCh7XG4gICAgICAgIGN3ZDogb3B0aW9ucy5wYXRoLFxuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgIGJpbmFyeU5hbWU6IGdldEJpbmFyeU5hbWUob3B0aW9ucy5uYW1lKSxcbiAgICAgIH0pXG5cbiAgICAgIC8vIEZpbHRlciB0YXJnZXRzIGluIHBhY2thZ2UuanNvblxuICAgICAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcGF0aC5qb2luKG9wdGlvbnMucGF0aCwgJ3BhY2thZ2UuanNvbicpXG4gICAgICBpZiAoZXhpc3RzU3luYyhwYWNrYWdlSnNvblBhdGgpKSB7XG4gICAgICAgIGF3YWl0IGZpbHRlclRhcmdldHNJblBhY2thZ2VKc29uKHBhY2thZ2VKc29uUGF0aCwgb3B0aW9ucy50YXJnZXRzKVxuICAgICAgfVxuXG4gICAgICAvLyBGaWx0ZXIgdGFyZ2V0cyBpbiBHaXRIdWIgQWN0aW9ucyBDSVxuICAgICAgY29uc3QgY2lQYXRoID0gcGF0aC5qb2luKG9wdGlvbnMucGF0aCwgJy5naXRodWInLCAnd29ya2Zsb3dzJywgJ0NJLnltbCcpXG4gICAgICBpZiAoZXhpc3RzU3luYyhjaVBhdGgpICYmIG9wdGlvbnMuZW5hYmxlR2l0aHViQWN0aW9ucykge1xuICAgICAgICBhd2FpdCBmaWx0ZXJUYXJnZXRzSW5HaXRodWJBY3Rpb25zKGNpUGF0aCwgb3B0aW9ucy50YXJnZXRzKVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgIW9wdGlvbnMuZW5hYmxlR2l0aHViQWN0aW9ucyAmJlxuICAgICAgICBleGlzdHNTeW5jKHBhdGguam9pbihvcHRpb25zLnBhdGgsICcuZ2l0aHViJykpXG4gICAgICApIHtcbiAgICAgICAgLy8gUmVtb3ZlIC5naXRodWIgZGlyZWN0b3J5IGlmIEdpdEh1YiBBY3Rpb25zIGlzIG5vdCBlbmFibGVkXG4gICAgICAgIGF3YWl0IGZzLnJtKHBhdGguam9pbihvcHRpb25zLnBhdGgsICcuZ2l0aHViJyksIHtcbiAgICAgICAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgICAgICAgZm9yY2U6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBwYWNrYWdlLmpzb24gd2l0aCBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zXG4gICAgICBjb25zdCBwa2dKc29uQ29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhY2thZ2VKc29uUGF0aCwgJ3V0Zi04JylcbiAgICAgIGNvbnN0IHBrZ0pzb24gPSBKU09OLnBhcnNlKHBrZ0pzb25Db250ZW50KVxuXG4gICAgICAvLyBVcGRhdGUgZW5naW5lIHJlcXVpcmVtZW50XG4gICAgICBpZiAoIXBrZ0pzb24uZW5naW5lcykge1xuICAgICAgICBwa2dKc29uLmVuZ2luZXMgPSB7fVxuICAgICAgfVxuICAgICAgcGtnSnNvbi5lbmdpbmVzLm5vZGUgPSBuYXBpRW5naW5lUmVxdWlyZW1lbnQob3B0aW9ucy5taW5Ob2RlQXBpVmVyc2lvbilcblxuICAgICAgLy8gVXBkYXRlIGxpY2Vuc2UgaWYgZGlmZmVyZW50IGZyb20gdGVtcGxhdGVcbiAgICAgIGlmIChvcHRpb25zLmxpY2Vuc2UgJiYgcGtnSnNvbi5saWNlbnNlICE9PSBvcHRpb25zLmxpY2Vuc2UpIHtcbiAgICAgICAgcGtnSnNvbi5saWNlbnNlID0gb3B0aW9ucy5saWNlbnNlXG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSB0ZXN0IGZyYW1ld29yayBpZiBuZWVkZWRcbiAgICAgIGlmIChvcHRpb25zLnRlc3RGcmFtZXdvcmsgIT09ICdhdmEnKSB7XG4gICAgICAgIC8vIFRoaXMgd291bGQgcmVxdWlyZSBtb3JlIGNvbXBsZXggbG9naWMgdG8gdXBkYXRlIHRlc3Qgc2NyaXB0cyBhbmQgZGVwZW5kZW5jaWVzXG4gICAgICAgIGRlYnVnKFxuICAgICAgICAgIGBUZXN0IGZyYW1ld29yayAke29wdGlvbnMudGVzdEZyYW1ld29ya30gcmVxdWVzdGVkIGJ1dCBub3QgeWV0IGltcGxlbWVudGVkYCxcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUoXG4gICAgICAgIHBhY2thZ2VKc29uUGF0aCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocGtnSnNvbiwgbnVsbCwgMikgKyAnXFxuJyxcbiAgICAgIClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIHByb2plY3Q6ICR7ZXJyb3J9YClcbiAgICB9XG4gIH1cblxuICBkZWJ1ZyhgUHJvamVjdCBjcmVhdGVkIGF0OiAke29wdGlvbnMucGF0aH1gKVxufVxuXG5hc3luYyBmdW5jdGlvbiBlbnN1cmVQYXRoKHBhdGg6IHN0cmluZywgZHJ5UnVuID0gZmFsc2UpIHtcbiAgY29uc3Qgc3RhdCA9IGF3YWl0IHN0YXRBc3luYyhwYXRoLCB7fSkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKVxuXG4gIC8vIGZpbGUgZGVzY3JpcHRvciBleGlzdHNcbiAgaWYgKHN0YXQpIHtcbiAgICBpZiAoc3RhdC5pc0ZpbGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgUGF0aCAke3BhdGh9IGZvciBjcmVhdGluZyBuZXcgbmFwaS1ycyBwcm9qZWN0IGFscmVhZHkgZXhpc3RzIGFuZCBpdCdzIG5vdCBhIGRpcmVjdG9yeS5gLFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IHJlYWRkaXJBc3luYyhwYXRoKVxuICAgICAgaWYgKGZpbGVzLmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFBhdGggJHtwYXRofSBmb3IgY3JlYXRpbmcgbmV3IG5hcGktcnMgcHJvamVjdCBhbHJlYWR5IGV4aXN0cyBhbmQgaXQncyBub3QgZW1wdHkuYCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghZHJ5UnVuKSB7XG4gICAgdHJ5IHtcbiAgICAgIGRlYnVnKGBUcnkgdG8gY3JlYXRlIHRhcmdldCBkaXJlY3Rvcnk6ICR7cGF0aH1gKVxuICAgICAgaWYgKCFkcnlSdW4pIHtcbiAgICAgICAgYXdhaXQgbWtkaXJBc3luYyhwYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGNyZWF0ZSB0YXJnZXQgZGlyZWN0b3J5OiAke3BhdGh9YCwge1xuICAgICAgICBjYXVzZTogZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJpbmFyeU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWUuc3BsaXQoJy8nKS5wb3AoKSFcbn1cblxuZXhwb3J0IHR5cGUgeyBOZXdPcHRpb25zIH1cbiIsIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgY29kZWdlbi9pbmRleC50c1xuLy8gRG8gbm90IGVkaXQgdGhpcyBmaWxlIG1hbnVhbGx5XG5pbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tICdjbGlwYW5pb24nXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUHJlUHVibGlzaENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW1sncHJlLXB1Ymxpc2gnXSwgWydwcmVwdWJsaXNoJ11dXG5cbiAgc3RhdGljIHVzYWdlID0gQ29tbWFuZC5Vc2FnZSh7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVXBkYXRlIHBhY2thZ2UuanNvbiBhbmQgY29weSBhZGRvbnMgaW50byBwZXIgcGxhdGZvcm0gcGFja2FnZXMnLFxuICB9KVxuXG4gIGN3ZCA9IE9wdGlvbi5TdHJpbmcoJy0tY3dkJywgcHJvY2Vzcy5jd2QoKSwge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aCcsXG4gIH0pXG5cbiAgY29uZmlnUGF0aD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tY29uZmlnLXBhdGgsLWMnLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlJyxcbiAgfSlcblxuICBwYWNrYWdlSnNvblBhdGggPSBPcHRpb24uU3RyaW5nKCctLXBhY2thZ2UtanNvbi1wYXRoJywgJ3BhY2thZ2UuanNvbicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYHBhY2thZ2UuanNvbmAnLFxuICB9KVxuXG4gIG5wbURpciA9IE9wdGlvbi5TdHJpbmcoJy0tbnBtLWRpciwtcCcsICducG0nLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIG5wbSBwYWNrYWdlcyBwdXQnLFxuICB9KVxuXG4gIHRhZ1N0eWxlID0gT3B0aW9uLlN0cmluZygnLS10YWctc3R5bGUsLS10YWdzdHlsZSwtdCcsICdsZXJuYScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ2dpdCB0YWcgc3R5bGUsIGBucG1gIG9yIGBsZXJuYWAnLFxuICB9KVxuXG4gIGdoUmVsZWFzZSA9IE9wdGlvbi5Cb29sZWFuKCctLWdoLXJlbGVhc2UnLCB0cnVlLCB7XG4gICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIGNyZWF0ZSBHaXRIdWIgcmVsZWFzZScsXG4gIH0pXG5cbiAgZ2hSZWxlYXNlTmFtZT86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tZ2gtcmVsZWFzZS1uYW1lJywge1xuICAgIGRlc2NyaXB0aW9uOiAnR2l0SHViIHJlbGVhc2UgbmFtZScsXG4gIH0pXG5cbiAgZ2hSZWxlYXNlSWQ/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWdoLXJlbGVhc2UtaWQnLCB7XG4gICAgZGVzY3JpcHRpb246ICdFeGlzdGluZyBHaXRIdWIgcmVsZWFzZSBpZCcsXG4gIH0pXG5cbiAgc2tpcE9wdGlvbmFsUHVibGlzaCA9IE9wdGlvbi5Cb29sZWFuKCctLXNraXAtb3B0aW9uYWwtcHVibGlzaCcsIGZhbHNlLCB7XG4gICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHNraXAgb3B0aW9uYWxEZXBlbmRlbmNpZXMgcGFja2FnZXMgcHVibGlzaCcsXG4gIH0pXG5cbiAgZHJ5UnVuID0gT3B0aW9uLkJvb2xlYW4oJy0tZHJ5LXJ1bicsIGZhbHNlLCB7XG4gICAgZGVzY3JpcHRpb246ICdEcnkgcnVuIHdpdGhvdXQgdG91Y2hpbmcgZmlsZSBzeXN0ZW0nLFxuICB9KVxuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN3ZDogdGhpcy5jd2QsXG4gICAgICBjb25maWdQYXRoOiB0aGlzLmNvbmZpZ1BhdGgsXG4gICAgICBwYWNrYWdlSnNvblBhdGg6IHRoaXMucGFja2FnZUpzb25QYXRoLFxuICAgICAgbnBtRGlyOiB0aGlzLm5wbURpcixcbiAgICAgIHRhZ1N0eWxlOiB0aGlzLnRhZ1N0eWxlLFxuICAgICAgZ2hSZWxlYXNlOiB0aGlzLmdoUmVsZWFzZSxcbiAgICAgIGdoUmVsZWFzZU5hbWU6IHRoaXMuZ2hSZWxlYXNlTmFtZSxcbiAgICAgIGdoUmVsZWFzZUlkOiB0aGlzLmdoUmVsZWFzZUlkLFxuICAgICAgc2tpcE9wdGlvbmFsUHVibGlzaDogdGhpcy5za2lwT3B0aW9uYWxQdWJsaXNoLFxuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBVcGRhdGUgcGFja2FnZS5qc29uIGFuZCBjb3B5IGFkZG9ucyBpbnRvIHBlciBwbGF0Zm9ybSBwYWNrYWdlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZVB1Ymxpc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICBjd2Q/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYG5hcGlgIGNvbmZpZyBqc29uIGZpbGVcbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gYHBhY2thZ2UuanNvbmBcbiAgICpcbiAgICogQGRlZmF1bHQgJ3BhY2thZ2UuanNvbidcbiAgICovXG4gIHBhY2thZ2VKc29uUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBucG0gcGFja2FnZXMgcHV0XG4gICAqXG4gICAqIEBkZWZhdWx0ICducG0nXG4gICAqL1xuICBucG1EaXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIGdpdCB0YWcgc3R5bGUsIGBucG1gIG9yIGBsZXJuYWBcbiAgICpcbiAgICogQGRlZmF1bHQgJ2xlcm5hJ1xuICAgKi9cbiAgdGFnU3R5bGU/OiAnbnBtJyB8ICdsZXJuYSdcbiAgLyoqXG4gICAqIFdoZXRoZXIgY3JlYXRlIEdpdEh1YiByZWxlYXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGdoUmVsZWFzZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEdpdEh1YiByZWxlYXNlIG5hbWVcbiAgICovXG4gIGdoUmVsZWFzZU5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEV4aXN0aW5nIEdpdEh1YiByZWxlYXNlIGlkXG4gICAqL1xuICBnaFJlbGVhc2VJZD86IHN0cmluZ1xuICAvKipcbiAgICogV2hldGhlciBza2lwIG9wdGlvbmFsRGVwZW5kZW5jaWVzIHBhY2thZ2VzIHB1Ymxpc2hcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHNraXBPcHRpb25hbFB1Ymxpc2g/OiBib29sZWFuXG4gIC8qKlxuICAgKiBEcnkgcnVuIHdpdGhvdXQgdG91Y2hpbmcgZmlsZSBzeXN0ZW1cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGVmYXVsdFByZVB1Ymxpc2hPcHRpb25zKG9wdGlvbnM6IFByZVB1Ymxpc2hPcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIHBhY2thZ2VKc29uUGF0aDogJ3BhY2thZ2UuanNvbicsXG4gICAgbnBtRGlyOiAnbnBtJyxcbiAgICB0YWdTdHlsZTogJ2xlcm5hJyxcbiAgICBnaFJlbGVhc2U6IHRydWUsXG4gICAgc2tpcE9wdGlvbmFsUHVibGlzaDogZmFsc2UsXG4gICAgZHJ5UnVuOiBmYWxzZSxcbiAgICAuLi5vcHRpb25zLFxuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGNvZGVnZW4vaW5kZXgudHNcbi8vIERvIG5vdCBlZGl0IHRoaXMgZmlsZSBtYW51YWxseVxuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVZlcnNpb25Db21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gIHN0YXRpYyBwYXRocyA9IFtbJ3ZlcnNpb24nXV1cblxuICBzdGF0aWMgdXNhZ2UgPSBDb21tYW5kLlVzYWdlKHtcbiAgICBkZXNjcmlwdGlvbjogJ1VwZGF0ZSB2ZXJzaW9uIGluIGNyZWF0ZWQgbnBtIHBhY2thZ2VzJyxcbiAgfSlcblxuICBjd2QgPSBPcHRpb24uU3RyaW5nKCctLWN3ZCcsIHByb2Nlc3MuY3dkKCksIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGgnLFxuICB9KVxuXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWNvbmZpZy1wYXRoLC1jJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgbmFwaWAgY29uZmlnIGpzb24gZmlsZScsXG4gIH0pXG5cbiAgcGFja2FnZUpzb25QYXRoID0gT3B0aW9uLlN0cmluZygnLS1wYWNrYWdlLWpzb24tcGF0aCcsICdwYWNrYWdlLmpzb24nLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBwYWNrYWdlLmpzb25gJyxcbiAgfSlcblxuICBucG1EaXIgPSBPcHRpb24uU3RyaW5nKCctLW5wbS1kaXInLCAnbnBtJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBucG0gcGFja2FnZXMgcHV0JyxcbiAgfSlcblxuICBnZXRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjd2Q6IHRoaXMuY3dkLFxuICAgICAgY29uZmlnUGF0aDogdGhpcy5jb25maWdQYXRoLFxuICAgICAgcGFja2FnZUpzb25QYXRoOiB0aGlzLnBhY2thZ2VKc29uUGF0aCxcbiAgICAgIG5wbURpcjogdGhpcy5ucG1EaXIsXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVXBkYXRlIHZlcnNpb24gaW4gY3JlYXRlZCBucG0gcGFja2FnZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGhcbiAgICpcbiAgICogQGRlZmF1bHQgcHJvY2Vzcy5jd2QoKVxuICAgKi9cbiAgY3dkPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAqL1xuICBjb25maWdQYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBwYWNrYWdlLmpzb25gXG4gICAqXG4gICAqIEBkZWZhdWx0ICdwYWNrYWdlLmpzb24nXG4gICAqL1xuICBwYWNrYWdlSnNvblBhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgbnBtIHBhY2thZ2VzIHB1dFxuICAgKlxuICAgKiBAZGVmYXVsdCAnbnBtJ1xuICAgKi9cbiAgbnBtRGlyPzogc3RyaW5nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHRWZXJzaW9uT3B0aW9ucyhvcHRpb25zOiBWZXJzaW9uT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBwYWNrYWdlSnNvblBhdGg6ICdwYWNrYWdlLmpzb24nLFxuICAgIG5wbURpcjogJ25wbScsXG4gICAgLi4ub3B0aW9ucyxcbiAgfVxufVxuIiwiaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcblxuaW1wb3J0IHtcbiAgYXBwbHlEZWZhdWx0VmVyc2lvbk9wdGlvbnMsXG4gIHR5cGUgVmVyc2lvbk9wdGlvbnMsXG59IGZyb20gJy4uL2RlZi92ZXJzaW9uLmpzJ1xuaW1wb3J0IHtcbiAgcmVhZE5hcGlDb25maWcsXG4gIGRlYnVnRmFjdG9yeSxcbiAgdXBkYXRlUGFja2FnZUpzb24sXG59IGZyb20gJy4uL3V0aWxzL2luZGV4LmpzJ1xuXG5jb25zdCBkZWJ1ZyA9IGRlYnVnRmFjdG9yeSgndmVyc2lvbicpXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJzaW9uKHVzZXJPcHRpb25zOiBWZXJzaW9uT3B0aW9ucykge1xuICBjb25zdCBvcHRpb25zID0gYXBwbHlEZWZhdWx0VmVyc2lvbk9wdGlvbnModXNlck9wdGlvbnMpXG4gIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMucGFja2FnZUpzb25QYXRoKVxuXG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWROYXBpQ29uZmlnKFxuICAgIHBhY2thZ2VKc29uUGF0aCxcbiAgICBvcHRpb25zLmNvbmZpZ1BhdGggPyByZXNvbHZlKG9wdGlvbnMuY3dkLCBvcHRpb25zLmNvbmZpZ1BhdGgpIDogdW5kZWZpbmVkLFxuICApXG5cbiAgZm9yIChjb25zdCB0YXJnZXQgb2YgY29uZmlnLnRhcmdldHMpIHtcbiAgICBjb25zdCBwa2dEaXIgPSByZXNvbHZlKG9wdGlvbnMuY3dkLCBvcHRpb25zLm5wbURpciwgdGFyZ2V0LnBsYXRmb3JtQXJjaEFCSSlcblxuICAgIGRlYnVnKGBVcGRhdGUgdmVyc2lvbiB0byAlaSBpbiBbJWldYCwgY29uZmlnLnBhY2thZ2VKc29uLnZlcnNpb24sIHBrZ0RpcilcbiAgICBhd2FpdCB1cGRhdGVQYWNrYWdlSnNvbihqb2luKHBrZ0RpciwgJ3BhY2thZ2UuanNvbicpLCB7XG4gICAgICB2ZXJzaW9uOiBjb25maWcucGFja2FnZUpzb24udmVyc2lvbixcbiAgICB9KVxuICB9XG59XG4iLCJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IGV4aXN0c1N5bmMsIHN0YXRTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmltcG9ydCB7IE9jdG9raXQgfSBmcm9tICdAb2N0b2tpdC9yZXN0J1xuXG5pbXBvcnQge1xuICBhcHBseURlZmF1bHRQcmVQdWJsaXNoT3B0aW9ucyxcbiAgdHlwZSBQcmVQdWJsaXNoT3B0aW9ucyxcbn0gZnJvbSAnLi4vZGVmL3ByZS1wdWJsaXNoLmpzJ1xuaW1wb3J0IHtcbiAgcmVhZEZpbGVBc3luYyxcbiAgcmVhZE5hcGlDb25maWcsXG4gIGRlYnVnRmFjdG9yeSxcbiAgdXBkYXRlUGFja2FnZUpzb24sXG59IGZyb20gJy4uL3V0aWxzL2luZGV4LmpzJ1xuXG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi92ZXJzaW9uLmpzJ1xuXG5jb25zdCBkZWJ1ZyA9IGRlYnVnRmFjdG9yeSgncHJlLXB1Ymxpc2gnKVxuXG5pbnRlcmZhY2UgUGFja2FnZUluZm8ge1xuICBuYW1lOiBzdHJpbmdcbiAgdmVyc2lvbjogc3RyaW5nXG4gIHRhZzogc3RyaW5nXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcmVQdWJsaXNoKHVzZXJPcHRpb25zOiBQcmVQdWJsaXNoT3B0aW9ucykge1xuICBkZWJ1ZygnUmVjZWl2ZSBwcmUtcHVibGlzaCBvcHRpb25zOicpXG4gIGRlYnVnKCcgICVPJywgdXNlck9wdGlvbnMpXG5cbiAgY29uc3Qgb3B0aW9ucyA9IGFwcGx5RGVmYXVsdFByZVB1Ymxpc2hPcHRpb25zKHVzZXJPcHRpb25zKVxuXG4gIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHJlc29sdmUob3B0aW9ucy5jd2QsIG9wdGlvbnMucGFja2FnZUpzb25QYXRoKVxuXG4gIGNvbnN0IHsgcGFja2FnZUpzb24sIHRhcmdldHMsIHBhY2thZ2VOYW1lLCBiaW5hcnlOYW1lLCBucG1DbGllbnQgfSA9XG4gICAgYXdhaXQgcmVhZE5hcGlDb25maWcoXG4gICAgICBwYWNrYWdlSnNvblBhdGgsXG4gICAgICBvcHRpb25zLmNvbmZpZ1BhdGggPyByZXNvbHZlKG9wdGlvbnMuY3dkLCBvcHRpb25zLmNvbmZpZ1BhdGgpIDogdW5kZWZpbmVkLFxuICAgIClcblxuICBhc3luYyBmdW5jdGlvbiBjcmVhdGVHaFJlbGVhc2UocGFja2FnZU5hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nKSB7XG4gICAgaWYgKCFvcHRpb25zLmdoUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3duZXI6IG51bGwsXG4gICAgICAgIHJlcG86IG51bGwsXG4gICAgICAgIHBrZ0luZm86IHsgbmFtZTogbnVsbCwgdmVyc2lvbjogbnVsbCwgdGFnOiBudWxsIH0sXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHsgcmVwbywgb3duZXIsIHBrZ0luZm8sIG9jdG9raXQgfSA9IGdldFJlcG9JbmZvKHBhY2thZ2VOYW1lLCB2ZXJzaW9uKVxuXG4gICAgaWYgKCFyZXBvIHx8ICFvd25lcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3duZXI6IG51bGwsXG4gICAgICAgIHJlcG86IG51bGwsXG4gICAgICAgIHBrZ0luZm86IHsgbmFtZTogbnVsbCwgdmVyc2lvbjogbnVsbCwgdGFnOiBudWxsIH0sXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLmRyeVJ1bikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgb2N0b2tpdC5yZXBvcy5jcmVhdGVSZWxlYXNlKHtcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICByZXBvLFxuICAgICAgICAgIHRhZ19uYW1lOiBwa2dJbmZvLnRhZyxcbiAgICAgICAgICBuYW1lOiBvcHRpb25zLmdoUmVsZWFzZU5hbWUsXG4gICAgICAgICAgcHJlcmVsZWFzZTpcbiAgICAgICAgICAgIHZlcnNpb24uaW5jbHVkZXMoJ2FscGhhJykgfHxcbiAgICAgICAgICAgIHZlcnNpb24uaW5jbHVkZXMoJ2JldGEnKSB8fFxuICAgICAgICAgICAgdmVyc2lvbi5pbmNsdWRlcygncmMnKSxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZGVidWcoXG4gICAgICAgICAgYFBhcmFtczogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHsgb3duZXIsIHJlcG8sIHRhZ19uYW1lOiBwa2dJbmZvLnRhZyB9LFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIDIsXG4gICAgICAgICAgKX1gLFxuICAgICAgICApXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgb3duZXIsIHJlcG8sIHBrZ0luZm8sIG9jdG9raXQgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0UmVwb0luZm8ocGFja2FnZU5hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nKSB7XG4gICAgY29uc3QgaGVhZENvbW1pdCA9IGV4ZWNTeW5jKCdnaXQgbG9nIC0xIC0tcHJldHR5PSVCJywge1xuICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgfSkudHJpbSgpXG5cbiAgICBjb25zdCB7IEdJVEhVQl9SRVBPU0lUT1JZIH0gPSBwcm9jZXNzLmVudlxuICAgIGlmICghR0lUSFVCX1JFUE9TSVRPUlkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG93bmVyOiBudWxsLFxuICAgICAgICByZXBvOiBudWxsLFxuICAgICAgICBwa2dJbmZvOiB7IG5hbWU6IG51bGwsIHZlcnNpb246IG51bGwsIHRhZzogbnVsbCB9LFxuICAgICAgfVxuICAgIH1cbiAgICBkZWJ1ZyhgR2l0aHViIHJlcG9zaXRvcnk6ICR7R0lUSFVCX1JFUE9TSVRPUll9YClcbiAgICBjb25zdCBbb3duZXIsIHJlcG9dID0gR0lUSFVCX1JFUE9TSVRPUlkuc3BsaXQoJy8nKVxuICAgIGNvbnN0IG9jdG9raXQgPSBuZXcgT2N0b2tpdCh7XG4gICAgICBhdXRoOiBwcm9jZXNzLmVudi5HSVRIVUJfVE9LRU4sXG4gICAgfSlcbiAgICBsZXQgcGtnSW5mbzogUGFja2FnZUluZm8gfCB1bmRlZmluZWRcbiAgICBpZiAob3B0aW9ucy50YWdTdHlsZSA9PT0gJ2xlcm5hJykge1xuICAgICAgY29uc3QgcGFja2FnZXNUb1B1Ymxpc2ggPSBoZWFkQ29tbWl0XG4gICAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgICAgLm1hcCgobGluZSkgPT4gbGluZS50cmltKCkpXG4gICAgICAgIC5maWx0ZXIoKGxpbmUsIGluZGV4KSA9PiBsaW5lLmxlbmd0aCAmJiBpbmRleClcbiAgICAgICAgLm1hcCgobGluZSkgPT4gbGluZS5zdWJzdHJpbmcoMikpXG4gICAgICAgIC5tYXAocGFyc2VUYWcpXG5cbiAgICAgIHBrZ0luZm8gPSBwYWNrYWdlc1RvUHVibGlzaC5maW5kKFxuICAgICAgICAocGtnSW5mbykgPT4gcGtnSW5mby5uYW1lID09PSBwYWNrYWdlTmFtZSxcbiAgICAgIClcblxuICAgICAgaWYgKCFwa2dJbmZvKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgYE5vIHJlbGVhc2UgY29tbWl0IGZvdW5kIHdpdGggJHtwYWNrYWdlTmFtZX0sIG9yaWdpbmFsIGNvbW1pdCBpbmZvOiAke2hlYWRDb21taXR9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwa2dJbmZvID0ge1xuICAgICAgICB0YWc6IGB2JHt2ZXJzaW9ufWAsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG5hbWU6IHBhY2thZ2VOYW1lLFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBvd25lciwgcmVwbywgcGtnSW5mbywgb2N0b2tpdCB9XG4gIH1cblxuICBpZiAoIW9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgYXdhaXQgdmVyc2lvbih1c2VyT3B0aW9ucylcbiAgICBhd2FpdCB1cGRhdGVQYWNrYWdlSnNvbihwYWNrYWdlSnNvblBhdGgsIHtcbiAgICAgIG9wdGlvbmFsRGVwZW5kZW5jaWVzOiB0YXJnZXRzLnJlZHVjZShcbiAgICAgICAgKGRlcHMsIHRhcmdldCkgPT4ge1xuICAgICAgICAgIGRlcHNbYCR7cGFja2FnZU5hbWV9LSR7dGFyZ2V0LnBsYXRmb3JtQXJjaEFCSX1gXSA9IHBhY2thZ2VKc29uLnZlcnNpb25cblxuICAgICAgICAgIHJldHVybiBkZXBzXG4gICAgICAgIH0sXG4gICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgICApLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB7IG93bmVyLCByZXBvLCBwa2dJbmZvLCBvY3Rva2l0IH0gPSBvcHRpb25zLmdoUmVsZWFzZUlkXG4gICAgPyBnZXRSZXBvSW5mbyhwYWNrYWdlTmFtZSwgcGFja2FnZUpzb24udmVyc2lvbilcbiAgICA6IGF3YWl0IGNyZWF0ZUdoUmVsZWFzZShwYWNrYWdlTmFtZSwgcGFja2FnZUpzb24udmVyc2lvbilcblxuICBmb3IgKGNvbnN0IHRhcmdldCBvZiB0YXJnZXRzKSB7XG4gICAgY29uc3QgcGtnRGlyID0gcmVzb2x2ZShcbiAgICAgIG9wdGlvbnMuY3dkLFxuICAgICAgb3B0aW9ucy5ucG1EaXIsXG4gICAgICBgJHt0YXJnZXQucGxhdGZvcm1BcmNoQUJJfWAsXG4gICAgKVxuICAgIGNvbnN0IGV4dCA9XG4gICAgICB0YXJnZXQucGxhdGZvcm0gPT09ICd3YXNpJyB8fCB0YXJnZXQucGxhdGZvcm0gPT09ICd3YXNtJyA/ICd3YXNtJyA6ICdub2RlJ1xuICAgIGNvbnN0IGZpbGVuYW1lID0gYCR7YmluYXJ5TmFtZX0uJHt0YXJnZXQucGxhdGZvcm1BcmNoQUJJfS4ke2V4dH1gXG4gICAgY29uc3QgZHN0UGF0aCA9IGpvaW4ocGtnRGlyLCBmaWxlbmFtZSlcblxuICAgIGlmICghb3B0aW9ucy5kcnlSdW4pIHtcbiAgICAgIGlmICghZXhpc3RzU3luYyhkc3RQYXRoKSkge1xuICAgICAgICBkZWJ1Zy53YXJuKGAlcyBkb2Vzbid0IGV4aXN0YCwgZHN0UGF0aClcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKCFvcHRpb25zLnNraXBPcHRpb25hbFB1Ymxpc2gpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBvdXRwdXQgPSBleGVjU3luYyhgJHtucG1DbGllbnR9IHB1Ymxpc2hgLCB7XG4gICAgICAgICAgICBjd2Q6IHBrZ0RpcixcbiAgICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgICBzdGRpbzogJ3BpcGUnLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUob3V0cHV0KVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZSBpbnN0YW5jZW9mIEVycm9yICYmXG4gICAgICAgICAgICBlLm1lc3NhZ2UuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICdZb3UgY2Fubm90IHB1Ymxpc2ggb3ZlciB0aGUgcHJldmlvdXNseSBwdWJsaXNoZWQgdmVyc2lvbnMnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc29sZS5pbmZvKGUubWVzc2FnZSlcbiAgICAgICAgICAgIGRlYnVnLndhcm4oYCR7cGtnRGlyfSBoYXMgYmVlbiBwdWJsaXNoZWQsIHNraXBwaW5nYClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5naFJlbGVhc2UgJiYgcmVwbyAmJiBvd25lcikge1xuICAgICAgICBkZWJ1Zy5pbmZvKGBDcmVhdGluZyBHaXRIdWIgcmVsZWFzZSAke3BrZ0luZm8udGFnfWApXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVsZWFzZUlkID0gb3B0aW9ucy5naFJlbGVhc2VJZFxuICAgICAgICAgICAgPyBOdW1iZXIob3B0aW9ucy5naFJlbGVhc2VJZClcbiAgICAgICAgICAgIDogKFxuICAgICAgICAgICAgICAgIGF3YWl0IG9jdG9raXQhLnJlcG9zLmdldFJlbGVhc2VCeVRhZyh7XG4gICAgICAgICAgICAgICAgICByZXBvOiByZXBvLFxuICAgICAgICAgICAgICAgICAgb3duZXI6IG93bmVyLFxuICAgICAgICAgICAgICAgICAgdGFnOiBwa2dJbmZvLnRhZyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLmRhdGEuaWRcbiAgICAgICAgICBjb25zdCBkc3RGaWxlU3RhdHMgPSBzdGF0U3luYyhkc3RQYXRoKVxuICAgICAgICAgIGNvbnN0IGFzc2V0SW5mbyA9IGF3YWl0IG9jdG9raXQhLnJlcG9zLnVwbG9hZFJlbGVhc2VBc3NldCh7XG4gICAgICAgICAgICBvd25lcjogb3duZXIsXG4gICAgICAgICAgICByZXBvOiByZXBvLFxuICAgICAgICAgICAgbmFtZTogZmlsZW5hbWUsXG4gICAgICAgICAgICByZWxlYXNlX2lkOiByZWxlYXNlSWQsXG4gICAgICAgICAgICBtZWRpYVR5cGU6IHsgZm9ybWF0OiAncmF3JyB9LFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnY29udGVudC1sZW5ndGgnOiBkc3RGaWxlU3RhdHMuc2l6ZSxcbiAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igb2N0b2tpdCB0eXBlcyBhcmUgd3JvbmdcbiAgICAgICAgICAgIGRhdGE6IGF3YWl0IHJlYWRGaWxlQXN5bmMoZHN0UGF0aCksXG4gICAgICAgICAgfSlcbiAgICAgICAgICBkZWJ1Zy5pbmZvKGBHaXRIdWIgcmVsZWFzZSBjcmVhdGVkYClcbiAgICAgICAgICBkZWJ1Zy5pbmZvKGBEb3dubG9hZCBVUkw6ICVzYCwgYXNzZXRJbmZvLmRhdGEuYnJvd3Nlcl9kb3dubG9hZF91cmwpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBkZWJ1Zy5lcnJvcihcbiAgICAgICAgICAgIGBQYXJhbTogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgeyBvd25lciwgcmVwbywgdGFnOiBwa2dJbmZvLnRhZywgZmlsZW5hbWU6IGRzdFBhdGggfSxcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICl9YCxcbiAgICAgICAgICApXG4gICAgICAgICAgZGVidWcuZXJyb3IoZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVRhZyh0YWc6IHN0cmluZykge1xuICBjb25zdCBzZWdtZW50cyA9IHRhZy5zcGxpdCgnQCcpXG4gIGNvbnN0IHZlcnNpb24gPSBzZWdtZW50cy5wb3AoKSFcbiAgY29uc3QgbmFtZSA9IHNlZ21lbnRzLmpvaW4oJ0AnKVxuXG4gIHJldHVybiB7XG4gICAgbmFtZSxcbiAgICB2ZXJzaW9uLFxuICAgIHRhZyxcbiAgfVxufVxuIiwiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBjb2RlZ2VuL2luZGV4LnRzXG4vLyBEbyBub3QgZWRpdCB0aGlzIGZpbGUgbWFudWFsbHlcbmltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NsaXBhbmlvbidcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VVbml2ZXJzYWxpemVDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gIHN0YXRpYyBwYXRocyA9IFtbJ3VuaXZlcnNhbGl6ZSddXVxuXG4gIHN0YXRpYyB1c2FnZSA9IENvbW1hbmQuVXNhZ2Uoe1xuICAgIGRlc2NyaXB0aW9uOiAnQ29tYmlsZSBidWlsdCBiaW5hcmllcyBpbnRvIG9uZSB1bml2ZXJzYWwgYmluYXJ5JyxcbiAgfSlcblxuICBjd2QgPSBPcHRpb24uU3RyaW5nKCctLWN3ZCcsIHByb2Nlc3MuY3dkKCksIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGgnLFxuICB9KVxuXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWNvbmZpZy1wYXRoLC1jJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgbmFwaWAgY29uZmlnIGpzb24gZmlsZScsXG4gIH0pXG5cbiAgcGFja2FnZUpzb25QYXRoID0gT3B0aW9uLlN0cmluZygnLS1wYWNrYWdlLWpzb24tcGF0aCcsICdwYWNrYWdlLmpzb24nLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBwYWNrYWdlLmpzb25gJyxcbiAgfSlcblxuICBvdXRwdXREaXIgPSBPcHRpb24uU3RyaW5nKCctLW91dHB1dC1kaXIsLW8nLCAnLi8nLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnUGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIGFsbCBidWlsdCBgLm5vZGVgIGZpbGVzIHB1dCwgc2FtZSBhcyBgLS1vdXRwdXQtZGlyYCBvZiBidWlsZCBjb21tYW5kJyxcbiAgfSlcblxuICBnZXRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjd2Q6IHRoaXMuY3dkLFxuICAgICAgY29uZmlnUGF0aDogdGhpcy5jb25maWdQYXRoLFxuICAgICAgcGFja2FnZUpzb25QYXRoOiB0aGlzLnBhY2thZ2VKc29uUGF0aCxcbiAgICAgIG91dHB1dERpcjogdGhpcy5vdXRwdXREaXIsXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ29tYmlsZSBidWlsdCBiaW5hcmllcyBpbnRvIG9uZSB1bml2ZXJzYWwgYmluYXJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5pdmVyc2FsaXplT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBkaXJlY3Rvcnkgb2Ygd2hlcmUgbmFwaSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW4sIGFsbCBvdGhlciBwYXRocyBvcHRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGlzIHBhdGhcbiAgICpcbiAgICogQGRlZmF1bHQgcHJvY2Vzcy5jd2QoKVxuICAgKi9cbiAgY3dkPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAqL1xuICBjb25maWdQYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBwYWNrYWdlLmpzb25gXG4gICAqXG4gICAqIEBkZWZhdWx0ICdwYWNrYWdlLmpzb24nXG4gICAqL1xuICBwYWNrYWdlSnNvblBhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGZvbGRlciB3aGVyZSBhbGwgYnVpbHQgYC5ub2RlYCBmaWxlcyBwdXQsIHNhbWUgYXMgYC0tb3V0cHV0LWRpcmAgb2YgYnVpbGQgY29tbWFuZFxuICAgKlxuICAgKiBAZGVmYXVsdCAnLi8nXG4gICAqL1xuICBvdXRwdXREaXI/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGVmYXVsdFVuaXZlcnNhbGl6ZU9wdGlvbnMob3B0aW9uczogVW5pdmVyc2FsaXplT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBwYWNrYWdlSnNvblBhdGg6ICdwYWNrYWdlLmpzb24nLFxuICAgIG91dHB1dERpcjogJy4vJyxcbiAgICAuLi5vcHRpb25zLFxuICB9XG59XG4iLCJpbXBvcnQgeyBzcGF3blN5bmMgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgeyBqb2luLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5pbXBvcnQge1xuICBhcHBseURlZmF1bHRVbml2ZXJzYWxpemVPcHRpb25zLFxuICB0eXBlIFVuaXZlcnNhbGl6ZU9wdGlvbnMsXG59IGZyb20gJy4uL2RlZi91bml2ZXJzYWxpemUuanMnXG5pbXBvcnQgeyByZWFkTmFwaUNvbmZpZyB9IGZyb20gJy4uL3V0aWxzL2NvbmZpZy5qcydcbmltcG9ydCB7IGRlYnVnRmFjdG9yeSB9IGZyb20gJy4uL3V0aWxzL2xvZy5qcydcbmltcG9ydCB7IGZpbGVFeGlzdHMgfSBmcm9tICcuLi91dGlscy9taXNjLmpzJ1xuaW1wb3J0IHsgVW5pQXJjaHNCeVBsYXRmb3JtIH0gZnJvbSAnLi4vdXRpbHMvdGFyZ2V0LmpzJ1xuXG5jb25zdCBkZWJ1ZyA9IGRlYnVnRmFjdG9yeSgndW5pdmVyc2FsaXplJylcblxuY29uc3QgdW5pdmVyc2FsaXplcnM6IFBhcnRpYWw8XG4gIFJlY29yZDxOb2RlSlMuUGxhdGZvcm0sIChpbnB1dHM6IHN0cmluZ1tdLCBvdXRwdXQ6IHN0cmluZykgPT4gdm9pZD5cbj4gPSB7XG4gIGRhcndpbjogKGlucHV0cywgb3V0cHV0KSA9PiB7XG4gICAgc3Bhd25TeW5jKCdsaXBvJywgWyctY3JlYXRlJywgJy1vdXRwdXQnLCBvdXRwdXQsIC4uLmlucHV0c10sIHtcbiAgICAgIHN0ZGlvOiAnaW5oZXJpdCcsXG4gICAgfSlcbiAgfSxcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVuaXZlcnNhbGl6ZUJpbmFyaWVzKHVzZXJPcHRpb25zOiBVbml2ZXJzYWxpemVPcHRpb25zKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBhcHBseURlZmF1bHRVbml2ZXJzYWxpemVPcHRpb25zKHVzZXJPcHRpb25zKVxuXG4gIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IGpvaW4ob3B0aW9ucy5jd2QsIG9wdGlvbnMucGFja2FnZUpzb25QYXRoKVxuXG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWROYXBpQ29uZmlnKFxuICAgIHBhY2thZ2VKc29uUGF0aCxcbiAgICBvcHRpb25zLmNvbmZpZ1BhdGggPyByZXNvbHZlKG9wdGlvbnMuY3dkLCBvcHRpb25zLmNvbmZpZ1BhdGgpIDogdW5kZWZpbmVkLFxuICApXG5cbiAgY29uc3QgdGFyZ2V0ID0gY29uZmlnLnRhcmdldHMuZmluZChcbiAgICAodCkgPT4gdC5wbGF0Zm9ybSA9PT0gcHJvY2Vzcy5wbGF0Zm9ybSAmJiB0LmFyY2ggPT09ICd1bml2ZXJzYWwnLFxuICApXG5cbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJ3VuaXZlcnNhbCcgYXJjaCBmb3IgcGxhdGZvcm0gJyR7cHJvY2Vzcy5wbGF0Zm9ybX0nIG5vdCBmb3VuZCBpbiBjb25maWchYCxcbiAgICApXG4gIH1cblxuICBjb25zdCBzcmNGaWxlcyA9IFVuaUFyY2hzQnlQbGF0Zm9ybVtwcm9jZXNzLnBsYXRmb3JtXT8ubWFwKChhcmNoKSA9PlxuICAgIHJlc29sdmUoXG4gICAgICBvcHRpb25zLmN3ZCxcbiAgICAgIG9wdGlvbnMub3V0cHV0RGlyLFxuICAgICAgYCR7Y29uZmlnLmJpbmFyeU5hbWV9LiR7cHJvY2Vzcy5wbGF0Zm9ybX0tJHthcmNofS5ub2RlYCxcbiAgICApLFxuICApXG5cbiAgaWYgKCFzcmNGaWxlcyB8fCAhdW5pdmVyc2FsaXplcnNbcHJvY2Vzcy5wbGF0Zm9ybV0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJ3VuaXZlcnNhbCcgYXJjaCBmb3IgcGxhdGZvcm0gJyR7cHJvY2Vzcy5wbGF0Zm9ybX0nIG5vdCBzdXBwb3J0ZWQuYCxcbiAgICApXG4gIH1cblxuICBkZWJ1ZyhgTG9va2luZyB1cCBzb3VyY2UgYmluYXJpZXMgdG8gY29tYmluZTogYClcbiAgZGVidWcoJyAgJU8nLCBzcmNGaWxlcylcblxuICBjb25zdCBzcmNGaWxlTG9va3VwID0gYXdhaXQgUHJvbWlzZS5hbGwoc3JjRmlsZXMubWFwKChmKSA9PiBmaWxlRXhpc3RzKGYpKSlcblxuICBjb25zdCBub3RGb3VuZEZpbGVzID0gc3JjRmlsZXMuZmlsdGVyKChfLCBpKSA9PiAhc3JjRmlsZUxvb2t1cFtpXSlcblxuICBpZiAobm90Rm91bmRGaWxlcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgU29tZSBiaW5hcnkgZmlsZXMgd2VyZSBub3QgZm91bmQ6ICR7SlNPTi5zdHJpbmdpZnkobm90Rm91bmRGaWxlcyl9YCxcbiAgICApXG4gIH1cblxuICBjb25zdCBvdXRwdXQgPSByZXNvbHZlKFxuICAgIG9wdGlvbnMuY3dkLFxuICAgIG9wdGlvbnMub3V0cHV0RGlyLFxuICAgIGAke2NvbmZpZy5iaW5hcnlOYW1lfS4ke3Byb2Nlc3MucGxhdGZvcm19LXVuaXZlcnNhbC5ub2RlYCxcbiAgKVxuXG4gIHVuaXZlcnNhbGl6ZXJzW3Byb2Nlc3MucGxhdGZvcm1dPy4oc3JjRmlsZXMsIG91dHB1dClcblxuICBkZWJ1ZyhgUHJvZHVjZWQgdW5pdmVyc2FsIGJpbmFyeTogJHtvdXRwdXR9YClcbn1cbiIsImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjbGlwYW5pb24nXG5cbmltcG9ydCB7IGNvbGxlY3RBcnRpZmFjdHMgfSBmcm9tICcuLi9hcGkvYXJ0aWZhY3RzLmpzJ1xuaW1wb3J0IHsgQmFzZUFydGlmYWN0c0NvbW1hbmQgfSBmcm9tICcuLi9kZWYvYXJ0aWZhY3RzLmpzJ1xuXG5leHBvcnQgY2xhc3MgQXJ0aWZhY3RzQ29tbWFuZCBleHRlbmRzIEJhc2VBcnRpZmFjdHNDb21tYW5kIHtcbiAgc3RhdGljIHVzYWdlID0gQ29tbWFuZC5Vc2FnZSh7XG4gICAgZGVzY3JpcHRpb246ICdDb3B5IGFydGlmYWN0cyBmcm9tIEdpdGh1YiBBY3Rpb25zIGludG8gc3BlY2lmaWVkIGRpcicsXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgIFtcbiAgICAgICAgJyQwIGFydGlmYWN0cyAtLW91dHB1dC1kaXIgLi9hcnRpZmFjdHMgLS1kaXN0IC4vbnBtJyxcbiAgICAgICAgYENvcHkgW2JpbmFyeU5hbWVdLltwbGF0Zm9ybV0ubm9kZSB1bmRlciBjdXJyZW50IGRpciguKSBpbnRvIHBhY2thZ2VzIHVuZGVyIG5wbSBkaXIuXG5lLmc6IGluZGV4LmxpbnV4LXg2NC1nbnUubm9kZSAtLT4gLi9ucG0vbGludXgteDY0LWdudS9pbmRleC5saW51eC14NjQtZ251Lm5vZGVgLFxuICAgICAgXSxcbiAgICBdLFxuICB9KVxuXG4gIHN0YXRpYyBwYXRocyA9IFtbJ2FydGlmYWN0cyddXVxuXG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgYXdhaXQgY29sbGVjdEFydGlmYWN0cyh0aGlzLmdldE9wdGlvbnMoKSlcbiAgfVxufVxuIiwiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBjb2RlZ2VuL2luZGV4LnRzXG4vLyBEbyBub3QgZWRpdCB0aGlzIGZpbGUgbWFudWFsbHlcbmltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NsaXBhbmlvbidcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VCdWlsZENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW1snYnVpbGQnXV1cblxuICBzdGF0aWMgdXNhZ2UgPSBDb21tYW5kLlVzYWdlKHtcbiAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIHRoZSBOQVBJLVJTIHByb2plY3QnLFxuICB9KVxuXG4gIHRhcmdldD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tdGFyZ2V0LC10Jywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0J1aWxkIGZvciB0aGUgdGFyZ2V0IHRyaXBsZSwgYnlwYXNzZWQgdG8gYGNhcmdvIGJ1aWxkIC0tdGFyZ2V0YCcsXG4gIH0pXG5cbiAgY3dkPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1jd2QnLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHdoZXJlIG5hcGkgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGluLCBhbGwgb3RoZXIgcGF0aHMgb3B0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBwYXRoJyxcbiAgfSlcblxuICBtYW5pZmVzdFBhdGg/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLW1hbmlmZXN0LXBhdGgnLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBDYXJnby50b21sYCcsXG4gIH0pXG5cbiAgY29uZmlnUGF0aD86IHN0cmluZyA9IE9wdGlvbi5TdHJpbmcoJy0tY29uZmlnLXBhdGgsLWMnLCB7XG4gICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlJyxcbiAgfSlcblxuICBwYWNrYWdlSnNvblBhdGg/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLXBhY2thZ2UtanNvbi1wYXRoJywge1xuICAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBgcGFja2FnZS5qc29uYCcsXG4gIH0pXG5cbiAgdGFyZ2V0RGlyPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS10YXJnZXQtZGlyJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0RpcmVjdG9yeSBmb3IgYWxsIGNyYXRlIGdlbmVyYXRlZCBhcnRpZmFjdHMsIHNlZSBgY2FyZ28gYnVpbGQgLS10YXJnZXQtZGlyYCcsXG4gIH0pXG5cbiAgb3V0cHV0RGlyPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1vdXRwdXQtZGlyLC1vJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1BhdGggdG8gd2hlcmUgYWxsIHRoZSBidWlsdCBmaWxlcyB3b3VsZCBiZSBwdXQuIERlZmF1bHQgdG8gdGhlIGNyYXRlIGZvbGRlcicsXG4gIH0pXG5cbiAgcGxhdGZvcm0/OiBib29sZWFuID0gT3B0aW9uLkJvb2xlYW4oJy0tcGxhdGZvcm0nLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnQWRkIHBsYXRmb3JtIHRyaXBsZSB0byB0aGUgZ2VuZXJhdGVkIG5vZGVqcyBiaW5kaW5nIGZpbGUsIGVnOiBgW25hbWVdLmxpbnV4LXg2NC1nbnUubm9kZWAnLFxuICB9KVxuXG4gIGpzUGFja2FnZU5hbWU/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWpzLXBhY2thZ2UtbmFtZScsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdQYWNrYWdlIG5hbWUgaW4gZ2VuZXJhdGVkIGpzIGJpbmRpbmcgZmlsZS4gT25seSB3b3JrcyB3aXRoIGAtLXBsYXRmb3JtYCBmbGFnJyxcbiAgfSlcblxuICBjb25zdEVudW0/OiBib29sZWFuID0gT3B0aW9uLkJvb2xlYW4oJy0tY29uc3QtZW51bScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgZ2VuZXJhdGUgY29uc3QgZW51bSBmb3IgdHlwZXNjcmlwdCBiaW5kaW5ncycsXG4gIH0pXG5cbiAganNCaW5kaW5nPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1qcycsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdQYXRoIGFuZCBmaWxlbmFtZSBvZiBnZW5lcmF0ZWQgSlMgYmluZGluZyBmaWxlLiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcuIFJlbGF0aXZlIHRvIGAtLW91dHB1dC1kaXJgLicsXG4gIH0pXG5cbiAgbm9Kc0JpbmRpbmc/OiBib29sZWFuID0gT3B0aW9uLkJvb2xlYW4oJy0tbm8tanMnLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnV2hldGhlciB0byBkaXNhYmxlIHRoZSBnZW5lcmF0aW9uIEpTIGJpbmRpbmcgZmlsZS4gT25seSB3b3JrcyB3aXRoIGAtLXBsYXRmb3JtYCBmbGFnLicsXG4gIH0pXG5cbiAgZHRzPzogc3RyaW5nID0gT3B0aW9uLlN0cmluZygnLS1kdHMnLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnUGF0aCBhbmQgZmlsZW5hbWUgb2YgZ2VuZXJhdGVkIHR5cGUgZGVmIGZpbGUuIFJlbGF0aXZlIHRvIGAtLW91dHB1dC1kaXJgJyxcbiAgfSlcblxuICBkdHNIZWFkZXI/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWR0cy1oZWFkZXInLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnQ3VzdG9tIGZpbGUgaGVhZGVyIGZvciBnZW5lcmF0ZWQgdHlwZSBkZWYgZmlsZS4gT25seSB3b3JrcyB3aGVuIGB0eXBlZGVmYCBmZWF0dXJlIGVuYWJsZWQuJyxcbiAgfSlcblxuICBub0R0c0hlYWRlcj86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS1uby1kdHMtaGVhZGVyJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1doZXRoZXIgdG8gZGlzYWJsZSB0aGUgZGVmYXVsdCBmaWxlIGhlYWRlciBmb3IgZ2VuZXJhdGVkIHR5cGUgZGVmIGZpbGUuIE9ubHkgd29ya3Mgd2hlbiBgdHlwZWRlZmAgZmVhdHVyZSBlbmFibGVkLicsXG4gIH0pXG5cbiAgZHRzQ2FjaGUgPSBPcHRpb24uQm9vbGVhbignLS1kdHMtY2FjaGUnLCB0cnVlLCB7XG4gICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRvIGVuYWJsZSB0aGUgZHRzIGNhY2hlLCBkZWZhdWx0IHRvIHRydWUnLFxuICB9KVxuXG4gIGVzbT86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS1lc20nLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnV2hldGhlciB0byBlbWl0IGFuIEVTTSBKUyBiaW5kaW5nIGZpbGUgaW5zdGVhZCBvZiBDSlMgZm9ybWF0LiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcuJyxcbiAgfSlcblxuICBzdHJpcD86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS1zdHJpcCwtcycsIHtcbiAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgc3RyaXAgdGhlIGxpYnJhcnkgdG8gYWNoaWV2ZSB0aGUgbWluaW11bSBmaWxlIHNpemUnLFxuICB9KVxuXG4gIHJlbGVhc2U/OiBib29sZWFuID0gT3B0aW9uLkJvb2xlYW4oJy0tcmVsZWFzZSwtcicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIGluIHJlbGVhc2UgbW9kZScsXG4gIH0pXG5cbiAgdmVyYm9zZT86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS12ZXJib3NlLC12Jywge1xuICAgIGRlc2NyaXB0aW9uOiAnVmVyYm9zZWx5IGxvZyBidWlsZCBjb21tYW5kIHRyYWNlJyxcbiAgfSlcblxuICBiaW4/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLWJpbicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIG9ubHkgdGhlIHNwZWNpZmllZCBiaW5hcnknLFxuICB9KVxuXG4gIHBhY2thZ2U/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLXBhY2thZ2UsLXAnLCB7XG4gICAgZGVzY3JpcHRpb246ICdCdWlsZCB0aGUgc3BlY2lmaWVkIGxpYnJhcnkgb3IgdGhlIG9uZSBhdCBjd2QnLFxuICB9KVxuXG4gIHByb2ZpbGU/OiBzdHJpbmcgPSBPcHRpb24uU3RyaW5nKCctLXByb2ZpbGUnLCB7XG4gICAgZGVzY3JpcHRpb246ICdCdWlsZCBhcnRpZmFjdHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByb2ZpbGUnLFxuICB9KVxuXG4gIGNyb3NzQ29tcGlsZT86IGJvb2xlYW4gPSBPcHRpb24uQm9vbGVhbignLS1jcm9zcy1jb21waWxlLC14Jywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1tleHBlcmltZW50YWxdIGNyb3NzLWNvbXBpbGUgZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IHdpdGggYGNhcmdvLXh3aW5gIG9uIHdpbmRvd3MgYW5kIGBjYXJnby16aWdidWlsZGAgb24gb3RoZXIgcGxhdGZvcm0nLFxuICB9KVxuXG4gIHVzZUNyb3NzPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLXVzZS1jcm9zcycsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdbZXhwZXJpbWVudGFsXSB1c2UgW2Nyb3NzXShodHRwczovL2dpdGh1Yi5jb20vY3Jvc3MtcnMvY3Jvc3MpIGluc3RlYWQgb2YgYGNhcmdvYCcsXG4gIH0pXG5cbiAgdXNlTmFwaUNyb3NzPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLXVzZS1uYXBpLWNyb3NzJywge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1tleHBlcmltZW50YWxdIHVzZSBAbmFwaS1ycy9jcm9zcy10b29sY2hhaW4gdG8gY3Jvc3MtY29tcGlsZSBMaW51eCBhcm0vYXJtNjQveDY0IGdudSB0YXJnZXRzLicsXG4gIH0pXG5cbiAgd2F0Y2g/OiBib29sZWFuID0gT3B0aW9uLkJvb2xlYW4oJy0td2F0Y2gsLXcnLCB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnd2F0Y2ggdGhlIGNyYXRlIGNoYW5nZXMgYW5kIGJ1aWxkIGNvbnRpbnVvdXNseSB3aXRoIGBjYXJnby13YXRjaGAgY3JhdGVzJyxcbiAgfSlcblxuICBmZWF0dXJlcz86IHN0cmluZ1tdID0gT3B0aW9uLkFycmF5KCctLWZlYXR1cmVzLC1GJywge1xuICAgIGRlc2NyaXB0aW9uOiAnU3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgZmVhdHVyZXMgdG8gYWN0aXZhdGUnLFxuICB9KVxuXG4gIGFsbEZlYXR1cmVzPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLWFsbC1mZWF0dXJlcycsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0FjdGl2YXRlIGFsbCBhdmFpbGFibGUgZmVhdHVyZXMnLFxuICB9KVxuXG4gIG5vRGVmYXVsdEZlYXR1cmVzPzogYm9vbGVhbiA9IE9wdGlvbi5Cb29sZWFuKCctLW5vLWRlZmF1bHQtZmVhdHVyZXMnLCB7XG4gICAgZGVzY3JpcHRpb246ICdEbyBub3QgYWN0aXZhdGUgdGhlIGBkZWZhdWx0YCBmZWF0dXJlJyxcbiAgfSlcblxuICBnZXRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IHRoaXMudGFyZ2V0LFxuICAgICAgY3dkOiB0aGlzLmN3ZCxcbiAgICAgIG1hbmlmZXN0UGF0aDogdGhpcy5tYW5pZmVzdFBhdGgsXG4gICAgICBjb25maWdQYXRoOiB0aGlzLmNvbmZpZ1BhdGgsXG4gICAgICBwYWNrYWdlSnNvblBhdGg6IHRoaXMucGFja2FnZUpzb25QYXRoLFxuICAgICAgdGFyZ2V0RGlyOiB0aGlzLnRhcmdldERpcixcbiAgICAgIG91dHB1dERpcjogdGhpcy5vdXRwdXREaXIsXG4gICAgICBwbGF0Zm9ybTogdGhpcy5wbGF0Zm9ybSxcbiAgICAgIGpzUGFja2FnZU5hbWU6IHRoaXMuanNQYWNrYWdlTmFtZSxcbiAgICAgIGNvbnN0RW51bTogdGhpcy5jb25zdEVudW0sXG4gICAgICBqc0JpbmRpbmc6IHRoaXMuanNCaW5kaW5nLFxuICAgICAgbm9Kc0JpbmRpbmc6IHRoaXMubm9Kc0JpbmRpbmcsXG4gICAgICBkdHM6IHRoaXMuZHRzLFxuICAgICAgZHRzSGVhZGVyOiB0aGlzLmR0c0hlYWRlcixcbiAgICAgIG5vRHRzSGVhZGVyOiB0aGlzLm5vRHRzSGVhZGVyLFxuICAgICAgZHRzQ2FjaGU6IHRoaXMuZHRzQ2FjaGUsXG4gICAgICBlc206IHRoaXMuZXNtLFxuICAgICAgc3RyaXA6IHRoaXMuc3RyaXAsXG4gICAgICByZWxlYXNlOiB0aGlzLnJlbGVhc2UsXG4gICAgICB2ZXJib3NlOiB0aGlzLnZlcmJvc2UsXG4gICAgICBiaW46IHRoaXMuYmluLFxuICAgICAgcGFja2FnZTogdGhpcy5wYWNrYWdlLFxuICAgICAgcHJvZmlsZTogdGhpcy5wcm9maWxlLFxuICAgICAgY3Jvc3NDb21waWxlOiB0aGlzLmNyb3NzQ29tcGlsZSxcbiAgICAgIHVzZUNyb3NzOiB0aGlzLnVzZUNyb3NzLFxuICAgICAgdXNlTmFwaUNyb3NzOiB0aGlzLnVzZU5hcGlDcm9zcyxcbiAgICAgIHdhdGNoOiB0aGlzLndhdGNoLFxuICAgICAgZmVhdHVyZXM6IHRoaXMuZmVhdHVyZXMsXG4gICAgICBhbGxGZWF0dXJlczogdGhpcy5hbGxGZWF0dXJlcyxcbiAgICAgIG5vRGVmYXVsdEZlYXR1cmVzOiB0aGlzLm5vRGVmYXVsdEZlYXR1cmVzLFxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBOQVBJLVJTIHByb2plY3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZE9wdGlvbnMge1xuICAvKipcbiAgICogQnVpbGQgZm9yIHRoZSB0YXJnZXQgdHJpcGxlLCBieXBhc3NlZCB0byBgY2FyZ28gYnVpbGQgLS10YXJnZXRgXG4gICAqL1xuICB0YXJnZXQ/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB3aGVyZSBuYXBpIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiwgYWxsIG90aGVyIHBhdGhzIG9wdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgcGF0aFxuICAgKi9cbiAgY3dkPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBDYXJnby50b21sYFxuICAgKi9cbiAgbWFuaWZlc3RQYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBuYXBpYCBjb25maWcganNvbiBmaWxlXG4gICAqL1xuICBjb25maWdQYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBwYWNrYWdlLmpzb25gXG4gICAqL1xuICBwYWNrYWdlSnNvblBhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIERpcmVjdG9yeSBmb3IgYWxsIGNyYXRlIGdlbmVyYXRlZCBhcnRpZmFjdHMsIHNlZSBgY2FyZ28gYnVpbGQgLS10YXJnZXQtZGlyYFxuICAgKi9cbiAgdGFyZ2V0RGlyPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQYXRoIHRvIHdoZXJlIGFsbCB0aGUgYnVpbHQgZmlsZXMgd291bGQgYmUgcHV0LiBEZWZhdWx0IHRvIHRoZSBjcmF0ZSBmb2xkZXJcbiAgICovXG4gIG91dHB1dERpcj86IHN0cmluZ1xuICAvKipcbiAgICogQWRkIHBsYXRmb3JtIHRyaXBsZSB0byB0aGUgZ2VuZXJhdGVkIG5vZGVqcyBiaW5kaW5nIGZpbGUsIGVnOiBgW25hbWVdLmxpbnV4LXg2NC1nbnUubm9kZWBcbiAgICovXG4gIHBsYXRmb3JtPzogYm9vbGVhblxuICAvKipcbiAgICogUGFja2FnZSBuYW1lIGluIGdlbmVyYXRlZCBqcyBiaW5kaW5nIGZpbGUuIE9ubHkgd29ya3Mgd2l0aCBgLS1wbGF0Zm9ybWAgZmxhZ1xuICAgKi9cbiAganNQYWNrYWdlTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogV2hldGhlciBnZW5lcmF0ZSBjb25zdCBlbnVtIGZvciB0eXBlc2NyaXB0IGJpbmRpbmdzXG4gICAqL1xuICBjb25zdEVudW0/OiBib29sZWFuXG4gIC8qKlxuICAgKiBQYXRoIGFuZCBmaWxlbmFtZSBvZiBnZW5lcmF0ZWQgSlMgYmluZGluZyBmaWxlLiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcuIFJlbGF0aXZlIHRvIGAtLW91dHB1dC1kaXJgLlxuICAgKi9cbiAganNCaW5kaW5nPzogc3RyaW5nXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGdlbmVyYXRpb24gSlMgYmluZGluZyBmaWxlLiBPbmx5IHdvcmtzIHdpdGggYC0tcGxhdGZvcm1gIGZsYWcuXG4gICAqL1xuICBub0pzQmluZGluZz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFBhdGggYW5kIGZpbGVuYW1lIG9mIGdlbmVyYXRlZCB0eXBlIGRlZiBmaWxlLiBSZWxhdGl2ZSB0byBgLS1vdXRwdXQtZGlyYFxuICAgKi9cbiAgZHRzPzogc3RyaW5nXG4gIC8qKlxuICAgKiBDdXN0b20gZmlsZSBoZWFkZXIgZm9yIGdlbmVyYXRlZCB0eXBlIGRlZiBmaWxlLiBPbmx5IHdvcmtzIHdoZW4gYHR5cGVkZWZgIGZlYXR1cmUgZW5hYmxlZC5cbiAgICovXG4gIGR0c0hlYWRlcj86IHN0cmluZ1xuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBkZWZhdWx0IGZpbGUgaGVhZGVyIGZvciBnZW5lcmF0ZWQgdHlwZSBkZWYgZmlsZS4gT25seSB3b3JrcyB3aGVuIGB0eXBlZGVmYCBmZWF0dXJlIGVuYWJsZWQuXG4gICAqL1xuICBub0R0c0hlYWRlcj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBkdHMgY2FjaGUsIGRlZmF1bHQgdG8gdHJ1ZVxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkdHNDYWNoZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW1pdCBhbiBFU00gSlMgYmluZGluZyBmaWxlIGluc3RlYWQgb2YgQ0pTIGZvcm1hdC4gT25seSB3b3JrcyB3aXRoIGAtLXBsYXRmb3JtYCBmbGFnLlxuICAgKi9cbiAgZXNtPzogYm9vbGVhblxuICAvKipcbiAgICogV2hldGhlciBzdHJpcCB0aGUgbGlicmFyeSB0byBhY2hpZXZlIHRoZSBtaW5pbXVtIGZpbGUgc2l6ZVxuICAgKi9cbiAgc3RyaXA/OiBib29sZWFuXG4gIC8qKlxuICAgKiBCdWlsZCBpbiByZWxlYXNlIG1vZGVcbiAgICovXG4gIHJlbGVhc2U/OiBib29sZWFuXG4gIC8qKlxuICAgKiBWZXJib3NlbHkgbG9nIGJ1aWxkIGNvbW1hbmQgdHJhY2VcbiAgICovXG4gIHZlcmJvc2U/OiBib29sZWFuXG4gIC8qKlxuICAgKiBCdWlsZCBvbmx5IHRoZSBzcGVjaWZpZWQgYmluYXJ5XG4gICAqL1xuICBiaW4/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBzcGVjaWZpZWQgbGlicmFyeSBvciB0aGUgb25lIGF0IGN3ZFxuICAgKi9cbiAgcGFja2FnZT86IHN0cmluZ1xuICAvKipcbiAgICogQnVpbGQgYXJ0aWZhY3RzIHdpdGggdGhlIHNwZWNpZmllZCBwcm9maWxlXG4gICAqL1xuICBwcm9maWxlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBbZXhwZXJpbWVudGFsXSBjcm9zcy1jb21waWxlIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCB3aXRoIGBjYXJnby14d2luYCBvbiB3aW5kb3dzIGFuZCBgY2FyZ28temlnYnVpbGRgIG9uIG90aGVyIHBsYXRmb3JtXG4gICAqL1xuICBjcm9zc0NvbXBpbGU/OiBib29sZWFuXG4gIC8qKlxuICAgKiBbZXhwZXJpbWVudGFsXSB1c2UgW2Nyb3NzXShodHRwczovL2dpdGh1Yi5jb20vY3Jvc3MtcnMvY3Jvc3MpIGluc3RlYWQgb2YgYGNhcmdvYFxuICAgKi9cbiAgdXNlQ3Jvc3M/OiBib29sZWFuXG4gIC8qKlxuICAgKiBbZXhwZXJpbWVudGFsXSB1c2UgQG5hcGktcnMvY3Jvc3MtdG9vbGNoYWluIHRvIGNyb3NzLWNvbXBpbGUgTGludXggYXJtL2FybTY0L3g2NCBnbnUgdGFyZ2V0cy5cbiAgICovXG4gIHVzZU5hcGlDcm9zcz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIHdhdGNoIHRoZSBjcmF0ZSBjaGFuZ2VzIGFuZCBidWlsZCBjb250aW51b3VzbHkgd2l0aCBgY2FyZ28td2F0Y2hgIGNyYXRlc1xuICAgKi9cbiAgd2F0Y2g/OiBib29sZWFuXG4gIC8qKlxuICAgKiBTcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBmZWF0dXJlcyB0byBhY3RpdmF0ZVxuICAgKi9cbiAgZmVhdHVyZXM/OiBzdHJpbmdbXVxuICAvKipcbiAgICogQWN0aXZhdGUgYWxsIGF2YWlsYWJsZSBmZWF0dXJlc1xuICAgKi9cbiAgYWxsRmVhdHVyZXM/OiBib29sZWFuXG4gIC8qKlxuICAgKiBEbyBub3QgYWN0aXZhdGUgdGhlIGBkZWZhdWx0YCBmZWF0dXJlXG4gICAqL1xuICBub0RlZmF1bHRGZWF0dXJlcz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGVmYXVsdEJ1aWxkT3B0aW9ucyhvcHRpb25zOiBCdWlsZE9wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBkdHNDYWNoZTogdHJ1ZSxcbiAgICAuLi5vcHRpb25zLFxuICB9XG59XG4iLCJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcblxuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG5pbXBvcnQgeyBidWlsZFByb2plY3QgfSBmcm9tICcuLi9hcGkvYnVpbGQuanMnXG5pbXBvcnQgeyBCYXNlQnVpbGRDb21tYW5kIH0gZnJvbSAnLi4vZGVmL2J1aWxkLmpzJ1xuaW1wb3J0IHsgZGVidWdGYWN0b3J5IH0gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnXG5cbmNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCdidWlsZCcpXG5cbmV4cG9ydCBjbGFzcyBCdWlsZENvbW1hbmQgZXh0ZW5kcyBCYXNlQnVpbGRDb21tYW5kIHtcbiAgcGlwZSA9IE9wdGlvbi5TdHJpbmcoJy0tcGlwZScsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdQaXBlIGFsbCBvdXRwdXRzIGZpbGUgdG8gZ2l2ZW4gY29tbWFuZC4gZS5nLiBgbmFwaSBidWlsZCAtLXBpcGUgXCJucHggcHJldHRpZXIgLS13cml0ZVwiYCcsXG4gIH0pXG5cbiAgY2FyZ29PcHRpb25zID0gT3B0aW9uLlJlc3QoKVxuXG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBidWlsZFByb2plY3Qoe1xuICAgICAgLi4udGhpcy5nZXRPcHRpb25zKCksXG4gICAgICBjYXJnb09wdGlvbnM6IHRoaXMuY2FyZ29PcHRpb25zLFxuICAgIH0pXG5cbiAgICBjb25zdCBvdXRwdXRzID0gYXdhaXQgdGFza1xuXG4gICAgaWYgKHRoaXMucGlwZSkge1xuICAgICAgZm9yIChjb25zdCBvdXRwdXQgb2Ygb3V0cHV0cykge1xuICAgICAgICBkZWJ1ZygnUGlwaW5nIG91dHB1dCBmaWxlIHRvIGNvbW1hbmQ6ICVzJywgdGhpcy5waXBlKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGV4ZWNTeW5jKGAke3RoaXMucGlwZX0gJHtvdXRwdXQucGF0aH1gLCB7XG4gICAgICAgICAgICBzdGRpbzogJ2luaGVyaXQnLFxuICAgICAgICAgICAgY3dkOiB0aGlzLmN3ZCxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgZGVidWcuZXJyb3IoYEZhaWxlZCB0byBwaXBlIG91dHB1dCBmaWxlICR7b3V0cHV0LnBhdGh9IHRvIGNvbW1hbmRgKVxuICAgICAgICAgIGRlYnVnLmVycm9yKGUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGNyZWF0ZU5wbURpcnMgfSBmcm9tICcuLi9hcGkvY3JlYXRlLW5wbS1kaXJzLmpzJ1xuaW1wb3J0IHsgQmFzZUNyZWF0ZU5wbURpcnNDb21tYW5kIH0gZnJvbSAnLi4vZGVmL2NyZWF0ZS1ucG0tZGlycy5qcydcblxuZXhwb3J0IGNsYXNzIENyZWF0ZU5wbURpcnNDb21tYW5kIGV4dGVuZHMgQmFzZUNyZWF0ZU5wbURpcnNDb21tYW5kIHtcbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICBhd2FpdCBjcmVhdGVOcG1EaXJzKHRoaXMuZ2V0T3B0aW9ucygpKVxuICB9XG59XG4iLCJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG4vKipcbiAqIEEgY29tbWFuZCB0aGF0IHByaW50cyB0aGUgdXNhZ2Ugb2YgYWxsIGNvbW1hbmRzLlxuICpcbiAqIFBhdGhzOiBgLWhgLCBgLS1oZWxwYFxuICovXG5leHBvcnQgY2xhc3MgSGVscENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kPGFueT4ge1xuICBzdGF0aWMgcGF0aHMgPSBbW2AtaGBdLCBbYC0taGVscGBdXVxuICBhc3luYyBleGVjdXRlKCkge1xuICAgIGF3YWl0IHRoaXMuY29udGV4dC5zdGRvdXQud3JpdGUodGhpcy5jbGkudXNhZ2UoKSlcbiAgfVxufVxuIiwiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJ1xuXG5pbXBvcnQgeyBpbnB1dCwgc2VsZWN0LCBjaGVja2JveCwgY29uZmlybSB9IGZyb20gJ0BpbnF1aXJlci9wcm9tcHRzJ1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJ1xuXG5pbXBvcnQgeyBuZXdQcm9qZWN0IH0gZnJvbSAnLi4vYXBpL25ldy5qcydcbmltcG9ydCB7IEJhc2VOZXdDb21tYW5kIH0gZnJvbSAnLi4vZGVmL25ldy5qcydcbmltcG9ydCB7XG4gIEFWQUlMQUJMRV9UQVJHRVRTLFxuICBkZWJ1Z0ZhY3RvcnksXG4gIERFRkFVTFRfVEFSR0VUUyxcbiAgdHlwZSBUYXJnZXRUcmlwbGUsXG59IGZyb20gJy4uL3V0aWxzL2luZGV4LmpzJ1xuaW1wb3J0IHsgbmFwaUVuZ2luZVJlcXVpcmVtZW50IH0gZnJvbSAnLi4vdXRpbHMvdmVyc2lvbi5qcydcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0ZhY3RvcnkoJ25ldycpXG5cbmV4cG9ydCBjbGFzcyBOZXdDb21tYW5kIGV4dGVuZHMgQmFzZU5ld0NvbW1hbmQge1xuICBpbnRlcmFjdGl2ZSA9IE9wdGlvbi5Cb29sZWFuKCctLWludGVyYWN0aXZlLC1pJywgdHJ1ZSwge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0FzayBwcm9qZWN0IGJhc2ljIGluZm9ybWF0aW9uIGludGVyYWN0aXZlbHkgd2l0aG91dCBqdXN0IHVzaW5nIHRoZSBkZWZhdWx0LicsXG4gIH0pXG5cbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IHRoaXMuZmV0Y2hPcHRpb25zKClcbiAgICAgIGF3YWl0IG5ld1Byb2plY3Qob3B0aW9ucylcbiAgICAgIHJldHVybiAwXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZGVidWcoJ0ZhaWxlZCB0byBjcmVhdGUgbmV3IHByb2plY3QnKVxuICAgICAgZGVidWcuZXJyb3IoZSlcbiAgICAgIHJldHVybiAxXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaE9wdGlvbnMoKSB7XG4gICAgY29uc3QgY21kT3B0aW9ucyA9IHN1cGVyLmdldE9wdGlvbnMoKVxuXG4gICAgaWYgKHRoaXMuaW50ZXJhY3RpdmUpIHtcbiAgICAgIGNvbnN0IHRhcmdldFBhdGg6IHN0cmluZyA9IGNtZE9wdGlvbnMucGF0aFxuICAgICAgICA/IGNtZE9wdGlvbnMucGF0aFxuICAgICAgICA6IGF3YWl0IGlucXVpcmVyUHJvamVjdFBhdGgoKVxuICAgICAgY21kT3B0aW9ucy5wYXRoID0gdGFyZ2V0UGF0aFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY21kT3B0aW9ucyxcbiAgICAgICAgbmFtZTogYXdhaXQgdGhpcy5mZXRjaE5hbWUocGF0aC5wYXJzZSh0YXJnZXRQYXRoKS5iYXNlKSxcbiAgICAgICAgbWluTm9kZUFwaVZlcnNpb246IGF3YWl0IHRoaXMuZmV0Y2hOYXBpVmVyc2lvbigpLFxuICAgICAgICB0YXJnZXRzOiBhd2FpdCB0aGlzLmZldGNoVGFyZ2V0cygpLFxuICAgICAgICBsaWNlbnNlOiBhd2FpdCB0aGlzLmZldGNoTGljZW5zZSgpLFxuICAgICAgICBlbmFibGVUeXBlRGVmOiBhd2FpdCB0aGlzLmZldGNoVHlwZURlZigpLFxuICAgICAgICBlbmFibGVHaXRodWJBY3Rpb25zOiBhd2FpdCB0aGlzLmZldGNoR2l0aHViQWN0aW9ucygpLFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbWRPcHRpb25zXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoTmFtZShkZWZhdWx0TmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy4kJG5hbWUgPz9cbiAgICAgIGlucHV0KHtcbiAgICAgICAgbWVzc2FnZTogJ1BhY2thZ2UgbmFtZSAodGhlIG5hbWUgZmllbGQgaW4geW91ciBwYWNrYWdlLmpzb24gZmlsZSknLFxuICAgICAgICBkZWZhdWx0OiBkZWZhdWx0TmFtZSxcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaExpY2Vuc2UoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gaW5wdXQoe1xuICAgICAgbWVzc2FnZTogJ0xpY2Vuc2UgZm9yIG9wZW4tc291cmNlZCBwcm9qZWN0JyxcbiAgICAgIGRlZmF1bHQ6IHRoaXMubGljZW5zZSxcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaE5hcGlWZXJzaW9uKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHNlbGVjdCh7XG4gICAgICBtZXNzYWdlOiAnTWluaW11bSBub2RlLWFwaSB2ZXJzaW9uICh3aXRoIG5vZGUgdmVyc2lvbiByZXF1aXJlbWVudCknLFxuICAgICAgbG9vcDogZmFsc2UsXG4gICAgICBwYWdlU2l6ZTogMTAsXG4gICAgICBjaG9pY2VzOiBBcnJheS5mcm9tKHsgbGVuZ3RoOiA4IH0sIChfLCBpKSA9PiAoe1xuICAgICAgICBuYW1lOiBgbmFwaSR7aSArIDF9ICgke25hcGlFbmdpbmVSZXF1aXJlbWVudChpICsgMSl9KWAsXG4gICAgICAgIHZhbHVlOiBpICsgMSxcbiAgICAgIH0pKSxcbiAgICAgIC8vIGNob2ljZSBpbmRleFxuICAgICAgZGVmYXVsdDogdGhpcy5taW5Ob2RlQXBpVmVyc2lvbiAtIDEsXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hUYXJnZXRzKCk6IFByb21pc2U8VGFyZ2V0VHJpcGxlW10+IHtcbiAgICBpZiAodGhpcy5lbmFibGVBbGxUYXJnZXRzKSB7XG4gICAgICByZXR1cm4gQVZBSUxBQkxFX1RBUkdFVFMuY29uY2F0KClcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRzID0gYXdhaXQgY2hlY2tib3goe1xuICAgICAgbG9vcDogZmFsc2UsXG4gICAgICBtZXNzYWdlOiAnQ2hvb3NlIHRhcmdldChzKSB5b3VyIGNyYXRlIHdpbGwgYmUgY29tcGlsZWQgdG8nLFxuICAgICAgY2hvaWNlczogQVZBSUxBQkxFX1RBUkdFVFMubWFwKCh0YXJnZXQpID0+ICh7XG4gICAgICAgIG5hbWU6IHRhcmdldCxcbiAgICAgICAgdmFsdWU6IHRhcmdldCxcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICBjaGVja2VkOiBERUZBVUxUX1RBUkdFVFMuaW5jbHVkZXModGFyZ2V0KSxcbiAgICAgIH0pKSxcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRhcmdldHNcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hUeXBlRGVmKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGVuYWJsZVR5cGVEZWYgPSBhd2FpdCBjb25maXJtKHtcbiAgICAgIG1lc3NhZ2U6ICdFbmFibGUgdHlwZSBkZWZpbml0aW9uIGF1dG8tZ2VuZXJhdGlvbicsXG4gICAgICBkZWZhdWx0OiB0aGlzLmVuYWJsZVR5cGVEZWYsXG4gICAgfSlcblxuICAgIHJldHVybiBlbmFibGVUeXBlRGVmXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoR2l0aHViQWN0aW9ucygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBlbmFibGVHaXRodWJBY3Rpb25zID0gYXdhaXQgY29uZmlybSh7XG4gICAgICBtZXNzYWdlOiAnRW5hYmxlIEdpdGh1YiBBY3Rpb25zIENJJyxcbiAgICAgIGRlZmF1bHQ6IHRoaXMuZW5hYmxlR2l0aHViQWN0aW9ucyxcbiAgICB9KVxuXG4gICAgcmV0dXJuIGVuYWJsZUdpdGh1YkFjdGlvbnNcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnF1aXJlclByb2plY3RQYXRoKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBpbnB1dCh7XG4gICAgbWVzc2FnZTogJ1RhcmdldCBwYXRoIHRvIGNyZWF0ZSB0aGUgcHJvamVjdCwgcmVsYXRpdmUgdG8gY3dkLicsXG4gIH0pLnRoZW4oKHBhdGgpID0+IHtcbiAgICBpZiAoIXBhdGgpIHtcbiAgICAgIHJldHVybiBpbnF1aXJlclByb2plY3RQYXRoKClcbiAgICB9XG4gICAgcmV0dXJuIHBhdGhcbiAgfSlcbn1cbiIsImltcG9ydCB7IHByZVB1Ymxpc2ggfSBmcm9tICcuLi9hcGkvcHJlLXB1Ymxpc2guanMnXG5pbXBvcnQgeyBCYXNlUHJlUHVibGlzaENvbW1hbmQgfSBmcm9tICcuLi9kZWYvcHJlLXB1Ymxpc2guanMnXG5cbmV4cG9ydCBjbGFzcyBQcmVQdWJsaXNoQ29tbWFuZCBleHRlbmRzIEJhc2VQcmVQdWJsaXNoQ29tbWFuZCB7XG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBjb25zdCAnbnBtJyB8ICdsZXJuYScgdG8gc3RyaW5nXG4gICAgYXdhaXQgcHJlUHVibGlzaCh0aGlzLmdldE9wdGlvbnMoKSlcbiAgfVxufVxuIiwiaW1wb3J0IHsgaW5wdXQgfSBmcm9tICdAaW5xdWlyZXIvcHJvbXB0cydcblxuaW1wb3J0IHsgcmVuYW1lUHJvamVjdCB9IGZyb20gJy4uL2FwaS9yZW5hbWUuanMnXG5pbXBvcnQgeyBCYXNlUmVuYW1lQ29tbWFuZCB9IGZyb20gJy4uL2RlZi9yZW5hbWUuanMnXG5cbmV4cG9ydCBjbGFzcyBSZW5hbWVDb21tYW5kIGV4dGVuZHMgQmFzZVJlbmFtZUNvbW1hbmQge1xuICBhc3luYyBleGVjdXRlKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmdldE9wdGlvbnMoKVxuICAgIGlmICghb3B0aW9ucy5uYW1lKSB7XG4gICAgICBjb25zdCBuYW1lID0gYXdhaXQgaW5wdXQoe1xuICAgICAgICBtZXNzYWdlOiBgRW50ZXIgdGhlIG5ldyBwYWNrYWdlIG5hbWUgaW4gdGhlIHBhY2thZ2UuanNvbmAsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIG9wdGlvbnMubmFtZSA9IG5hbWVcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zLmJpbmFyeU5hbWUpIHtcbiAgICAgIGNvbnN0IGJpbmFyeU5hbWUgPSBhd2FpdCBpbnB1dCh7XG4gICAgICAgIG1lc3NhZ2U6IGBFbnRlciB0aGUgbmV3IGJpbmFyeSBuYW1lYCxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgb3B0aW9ucy5iaW5hcnlOYW1lID0gYmluYXJ5TmFtZVxuICAgIH1cbiAgICBhd2FpdCByZW5hbWVQcm9qZWN0KG9wdGlvbnMpXG4gIH1cbn1cbiIsImltcG9ydCB7IHVuaXZlcnNhbGl6ZUJpbmFyaWVzIH0gZnJvbSAnLi4vYXBpL3VuaXZlcnNhbGl6ZS5qcydcbmltcG9ydCB7IEJhc2VVbml2ZXJzYWxpemVDb21tYW5kIH0gZnJvbSAnLi4vZGVmL3VuaXZlcnNhbGl6ZS5qcydcblxuZXhwb3J0IGNsYXNzIFVuaXZlcnNhbGl6ZUNvbW1hbmQgZXh0ZW5kcyBCYXNlVW5pdmVyc2FsaXplQ29tbWFuZCB7XG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgYXdhaXQgdW5pdmVyc2FsaXplQmluYXJpZXModGhpcy5nZXRPcHRpb25zKCkpXG4gIH1cbn1cbiIsImltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuLi9hcGkvdmVyc2lvbi5qcydcbmltcG9ydCB7IEJhc2VWZXJzaW9uQ29tbWFuZCB9IGZyb20gJy4uL2RlZi92ZXJzaW9uLmpzJ1xuXG5leHBvcnQgY2xhc3MgVmVyc2lvbkNvbW1hbmQgZXh0ZW5kcyBCYXNlVmVyc2lvbkNvbW1hbmQge1xuICBhc3luYyBleGVjdXRlKCkge1xuICAgIGF3YWl0IHZlcnNpb24odGhpcy5nZXRPcHRpb25zKCkpXG4gIH1cbn1cbiIsImltcG9ydCB7IENsaSB9IGZyb20gJ2NsaXBhbmlvbidcblxuaW1wb3J0IHsgY29sbGVjdEFydGlmYWN0cyB9IGZyb20gJy4vYXBpL2FydGlmYWN0cy5qcydcbmltcG9ydCB7IGJ1aWxkUHJvamVjdCB9IGZyb20gJy4vYXBpL2J1aWxkLmpzJ1xuaW1wb3J0IHsgY3JlYXRlTnBtRGlycyB9IGZyb20gJy4vYXBpL2NyZWF0ZS1ucG0tZGlycy5qcydcbmltcG9ydCB7IG5ld1Byb2plY3QgfSBmcm9tICcuL2FwaS9uZXcuanMnXG5pbXBvcnQgeyBwcmVQdWJsaXNoIH0gZnJvbSAnLi9hcGkvcHJlLXB1Ymxpc2guanMnXG5pbXBvcnQgeyByZW5hbWVQcm9qZWN0IH0gZnJvbSAnLi9hcGkvcmVuYW1lLmpzJ1xuaW1wb3J0IHsgdW5pdmVyc2FsaXplQmluYXJpZXMgfSBmcm9tICcuL2FwaS91bml2ZXJzYWxpemUuanMnXG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi9hcGkvdmVyc2lvbi5qcydcbmltcG9ydCB7IEFydGlmYWN0c0NvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL2FydGlmYWN0cy5qcydcbmltcG9ydCB7IEJ1aWxkQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvYnVpbGQuanMnXG5pbXBvcnQgeyBDcmVhdGVOcG1EaXJzQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvY3JlYXRlLW5wbS1kaXJzLmpzJ1xuaW1wb3J0IHsgSGVscENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL2hlbHAuanMnXG5pbXBvcnQgeyBOZXdDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9uZXcuanMnXG5pbXBvcnQgeyBQcmVQdWJsaXNoQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvcHJlLXB1Ymxpc2guanMnXG5pbXBvcnQgeyBSZW5hbWVDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9yZW5hbWUuanMnXG5pbXBvcnQgeyBVbml2ZXJzYWxpemVDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy91bml2ZXJzYWxpemUuanMnXG5pbXBvcnQgeyBWZXJzaW9uQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvdmVyc2lvbi5qcydcbmltcG9ydCB7IENMSV9WRVJTSU9OIH0gZnJvbSAnLi91dGlscy9taXNjLmpzJ1xuXG5leHBvcnQgY29uc3QgY2xpID0gbmV3IENsaSh7XG4gIGJpbmFyeU5hbWU6ICduYXBpJyxcbiAgYmluYXJ5VmVyc2lvbjogQ0xJX1ZFUlNJT04sXG59KVxuXG5jbGkucmVnaXN0ZXIoTmV3Q29tbWFuZClcbmNsaS5yZWdpc3RlcihCdWlsZENvbW1hbmQpXG5jbGkucmVnaXN0ZXIoQ3JlYXRlTnBtRGlyc0NvbW1hbmQpXG5jbGkucmVnaXN0ZXIoQXJ0aWZhY3RzQ29tbWFuZClcbmNsaS5yZWdpc3RlcihVbml2ZXJzYWxpemVDb21tYW5kKVxuY2xpLnJlZ2lzdGVyKFJlbmFtZUNvbW1hbmQpXG5jbGkucmVnaXN0ZXIoUHJlUHVibGlzaENvbW1hbmQpXG5jbGkucmVnaXN0ZXIoVmVyc2lvbkNvbW1hbmQpXG5jbGkucmVnaXN0ZXIoSGVscENvbW1hbmQpXG5cbi8qKlxuICpcbiAqIEB1c2FnZVxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBjbGkgPSBuZXcgTmFwaUNsaSgpXG4gKlxuICogY2xpLmJ1aWxkKHtcbiAqICAgY3dkOiAnL3BhdGgvdG8veW91ci9wcm9qZWN0JyxcbiAqIH0pXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIE5hcGlDbGkge1xuICBhcnRpZmFjdHMgPSBjb2xsZWN0QXJ0aWZhY3RzXG4gIG5ldyA9IG5ld1Byb2plY3RcbiAgYnVpbGQgPSBidWlsZFByb2plY3RcbiAgY3JlYXRlTnBtRGlycyA9IGNyZWF0ZU5wbURpcnNcbiAgcHJlUHVibGlzaCA9IHByZVB1Ymxpc2hcbiAgcmVuYW1lID0gcmVuYW1lUHJvamVjdFxuICB1bml2ZXJzYWxpemUgPSB1bml2ZXJzYWxpemVCaW5hcmllc1xuICB2ZXJzaW9uID0gdmVyc2lvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQnVpbGRDb21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogQnVpbGRDb21tYW5kIHtcbiAgcmV0dXJuIGNsaS5wcm9jZXNzKFsnYnVpbGQnLCAuLi5hcmdzXSkgYXMgQnVpbGRDb21tYW5kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBcnRpZmFjdHNDb21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogQXJ0aWZhY3RzQ29tbWFuZCB7XG4gIHJldHVybiBjbGkucHJvY2VzcyhbJ2FydGlmYWN0cycsIC4uLmFyZ3NdKSBhcyBBcnRpZmFjdHNDb21tYW5kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDcmVhdGVOcG1EaXJzQ29tbWFuZChcbiAgYXJnczogc3RyaW5nW10sXG4pOiBDcmVhdGVOcG1EaXJzQ29tbWFuZCB7XG4gIHJldHVybiBjbGkucHJvY2VzcyhbJ2NyZWF0ZS1ucG0tZGlycycsIC4uLmFyZ3NdKSBhcyBDcmVhdGVOcG1EaXJzQ29tbWFuZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJlUHVibGlzaENvbW1hbmQoYXJnczogc3RyaW5nW10pOiBQcmVQdWJsaXNoQ29tbWFuZCB7XG4gIHJldHVybiBjbGkucHJvY2VzcyhbJ3ByZS1wdWJsaXNoJywgLi4uYXJnc10pIGFzIFByZVB1Ymxpc2hDb21tYW5kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZW5hbWVDb21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogUmVuYW1lQ29tbWFuZCB7XG4gIHJldHVybiBjbGkucHJvY2VzcyhbJ3JlbmFtZScsIC4uLmFyZ3NdKSBhcyBSZW5hbWVDb21tYW5kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVbml2ZXJzYWxpemVDb21tYW5kKGFyZ3M6IHN0cmluZ1tdKTogVW5pdmVyc2FsaXplQ29tbWFuZCB7XG4gIHJldHVybiBjbGkucHJvY2VzcyhbJ3VuaXZlcnNhbGl6ZScsIC4uLmFyZ3NdKSBhcyBVbml2ZXJzYWxpemVDb21tYW5kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVWZXJzaW9uQ29tbWFuZChhcmdzOiBzdHJpbmdbXSk6IFZlcnNpb25Db21tYW5kIHtcbiAgcmV0dXJuIGNsaS5wcm9jZXNzKFsndmVyc2lvbicsIC4uLmFyZ3NdKSBhcyBWZXJzaW9uQ29tbWFuZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmV3Q29tbWFuZChhcmdzOiBzdHJpbmdbXSk6IE5ld0NvbW1hbmQge1xuICByZXR1cm4gY2xpLnByb2Nlc3MoWyduZXcnLCAuLi5hcmdzXSkgYXMgTmV3Q29tbWFuZFxufVxuXG5leHBvcnQgeyBwYXJzZVRyaXBsZSB9IGZyb20gJy4vdXRpbHMvdGFyZ2V0LmpzJ1xuZXhwb3J0IHtcbiAgdHlwZSBHZW5lcmF0ZVR5cGVEZWZPcHRpb25zLFxuICB0eXBlIFdyaXRlSnNCaW5kaW5nT3B0aW9ucyxcbiAgd3JpdGVKc0JpbmRpbmcsXG4gIGdlbmVyYXRlVHlwZURlZixcbn0gZnJvbSAnLi9hcGkvYnVpbGQuanMnXG5leHBvcnQgeyByZWFkTmFwaUNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnLmpzJ1xuIl0sInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlsxOSwyMCwyMSwyMiwyMywyNCwyNSwyNl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsSUFBc0IsdUJBQXRCLGNBQW1ELFFBQVE7Q0FDekQsT0FBTyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUM7Q0FFOUIsT0FBTyxRQUFRLFFBQVEsTUFBTSxFQUMzQixhQUNFLDZFQUNILENBQUM7Q0FFRixNQUFNLE9BQU8sT0FBTyxTQUFTLFFBQVEsS0FBSyxFQUFFLEVBQzFDLGFBQ0Usc0hBQ0gsQ0FBQztDQUVGLGFBQXNCLE9BQU8sT0FBTyxvQkFBb0IsRUFDdEQsYUFBYSxtQ0FDZCxDQUFDO0NBRUYsa0JBQWtCLE9BQU8sT0FBTyx1QkFBdUIsZ0JBQWdCLEVBQ3JFLGFBQWEsMEJBQ2QsQ0FBQztDQUVGLFlBQVksT0FBTyxPQUFPLHNCQUFzQixlQUFlLEVBQzdELGFBQ0UsaUdBQ0gsQ0FBQztDQUVGLFNBQVMsT0FBTyxPQUFPLGFBQWEsT0FBTyxFQUN6QyxhQUFhLGlEQUNkLENBQUM7Q0FFRixpQkFBMEIsT0FBTyxPQUFPLHNCQUFzQixFQUM1RCxhQUNFLG1GQUNILENBQUM7Q0FFRixhQUFhO0FBQ1gsU0FBTztHQUNMLEtBQUssS0FBSztHQUNWLFlBQVksS0FBSztHQUNqQixpQkFBaUIsS0FBSztHQUN0QixXQUFXLEtBQUs7R0FDaEIsUUFBUSxLQUFLO0dBQ2IsZ0JBQWdCLEtBQUs7R0FDdEI7OztBQTBDTCxTQUFnQiw2QkFBNkIsU0FBMkI7QUFDdEUsUUFBTztFQUNMLEtBQUssUUFBUSxLQUFLO0VBQ2xCLGlCQUFpQjtFQUNqQixXQUFXO0VBQ1gsUUFBUTtFQUNSLEdBQUc7RUFDSjs7Ozs7QUNyRkgsTUFBYSxnQkFBZ0IsY0FBc0I7Q0FDakQsTUFBTUEsV0FBUSxZQUFZLFFBQVEsYUFBYSxFQUM3QyxZQUFZLEVBRVYsRUFBRSxHQUFHO0FBQ0gsU0FBTyxPQUFPLE1BQU0sRUFBRTtJQUV6QixFQUNGLENBQUM7QUFFRixVQUFNLFFBQVEsR0FBRyxTQUNmLFFBQVEsTUFBTSxPQUFPLE1BQU0sT0FBTyxRQUFRLFNBQVMsQ0FBQyxFQUFFLEdBQUcsS0FBSztBQUNoRSxVQUFNLFFBQVEsR0FBRyxTQUNmLFFBQVEsTUFBTSxPQUFPLE1BQU0sT0FBTyxTQUFTLFlBQVksQ0FBQyxFQUFFLEdBQUcsS0FBSztBQUNwRSxVQUFNLFNBQVMsR0FBRyxTQUNoQixRQUFRLE1BQ04sT0FBTyxNQUFNLE9BQU8sTUFBTSxVQUFVLENBQUMsRUFDckMsR0FBRyxLQUFLLEtBQUssUUFDWCxlQUFlLFFBQVMsSUFBSSxTQUFTLElBQUksVUFBVyxJQUNyRCxDQUNGO0FBRUgsUUFBT0E7O0FBRVQsTUFBYUEsVUFBUSxhQUFhLFFBQVE7Ozs7Z0JDakM3Qjs7OztBQ1liLE1BQWEsZ0JBQWdCO0FBQzdCLE1BQWEsaUJBQWlCO0FBQzlCLE1BQWEsY0FBYztBQUMzQixNQUFhLGdCQUFnQjtBQUM3QixNQUFhLGFBQWE7QUFDMUIsTUFBYSxZQUFZO0FBQ3pCLE1BQWEsZUFBZTtBQUU1QixTQUFnQixXQUFXLFFBQWdDO0FBQ3pELFFBQU8sT0FBT0MsT0FBSyxDQUFDLFdBQ1osWUFDQSxNQUNQOztBQUdILGVBQXNCLGVBQWUsUUFBYztBQUNqRCxLQUFJO0FBRUYsVUFEYyxNQUFNLFVBQVVBLE9BQUssRUFDdEIsYUFBYTtTQUNwQjtBQUNOLFNBQU87OztBQUlYLFNBQWdCQyxPQUEyQixHQUFNLEdBQUcsTUFBdUI7QUFDekUsUUFBTyxLQUFLLFFBQVEsS0FBSyxRQUFRO0FBQy9CLE1BQUksT0FBTyxFQUFFO0FBQ2IsU0FBTztJQUNOLEVBQUUsQ0FBTTs7QUFHYixlQUFzQixrQkFDcEIsUUFDQSxTQUNBO0FBRUEsS0FBSSxDQURXLE1BQU0sV0FBV0QsT0FBSyxFQUN4QjtBQUNYLFVBQU0sbUJBQW1CQSxTQUFPO0FBQ2hDOztDQUVGLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxjQUFjQSxRQUFNLE9BQU8sQ0FBQztBQUN6RCxPQUFNLGVBQWVBLFFBQU0sS0FBSyxVQUFVO0VBQUUsR0FBRztFQUFLLEdBQUc7RUFBUyxFQUFFLE1BQU0sRUFBRSxDQUFDOztBQUc3RSxNQUFhLGNBQWNFOzs7O0FDbEQzQixNQUFNLGNBQWMsSUFBSSxJQUFJLENBQUMsV0FBVyxPQUFPLENBQUM7QUFFaEQsTUFBYSxvQkFBb0I7Q0FDL0I7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0Q7QUFJRCxNQUFhLGtCQUFrQjtDQUM3QjtDQUNBO0NBQ0E7Q0FDQTtDQUNEO0FBRUQsTUFBYUMsZ0JBQXdDO0NBQ25ELDhCQUE4QjtDQUU5QixpQ0FBaUM7Q0FDakMsK0JBQStCO0NBQy9CLGlDQUFpQztDQUNqQywyQkFBMkI7Q0FDNUI7QUFvQkQsTUFBTUMsZ0JBQTRDO0NBQ2hELFFBQVE7Q0FDUixTQUFTO0NBQ1QsTUFBTTtDQUNOLE9BQU87Q0FDUCxhQUFhO0NBQ2IsV0FBVztDQUNYLGFBQWE7Q0FDZDtBQVlELE1BQU1DLG9CQUE4QztDQUNsRCxPQUFPO0NBQ1AsU0FBUztDQUNULFFBQVE7Q0FDUixTQUFTO0NBQ1QsTUFBTTtDQUNQO0FBRUQsTUFBYUMscUJBQThELEVBQ3pFLFFBQVEsQ0FBQyxPQUFPLFFBQVEsRUFDekI7Ozs7Ozs7Ozs7O0FBb0JELFNBQWdCLFlBQVksV0FBMkI7QUFDckQsS0FDRSxjQUFjLGlCQUNkLGNBQWMsa0NBQ2QsVUFBVSxXQUFXLGVBQWUsQ0FFcEMsUUFBTztFQUNMLFFBQVE7RUFDUixpQkFBaUI7RUFDakIsVUFBVTtFQUNWLE1BQU07RUFDTixLQUFLO0VBQ047Q0FLSCxNQUFNLFdBSFMsVUFBVSxTQUFTLE9BQU8sR0FDckMsR0FBRyxVQUFVLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FDMUIsV0FDbUIsTUFBTSxJQUFJO0NBQ2pDLElBQUlDO0NBQ0osSUFBSUM7Q0FDSixJQUFJQyxNQUFxQjtBQUN6QixLQUFJLFFBQVEsV0FBVyxFQUdwQixFQUFDLEtBQUssT0FBTztLQU1iLEVBQUMsT0FBTyxLQUFLLE1BQU0sUUFBUTtBQUc5QixLQUFJLE9BQU8sWUFBWSxJQUFJLElBQUksRUFBRTtBQUMvQixRQUFNO0FBQ04sUUFBTTs7Q0FFUixNQUFNLFdBQVcsa0JBQWtCLFFBQVM7Q0FDNUMsTUFBTSxPQUFPLGNBQWMsUUFBUztBQUVwQyxRQUFPO0VBQ0wsUUFBUTtFQUNSLGlCQUFpQixNQUFNLEdBQUcsU0FBUyxHQUFHLEtBQUssR0FBRyxRQUFRLEdBQUcsU0FBUyxHQUFHO0VBQ3JFO0VBQ0E7RUFDQTtFQUNEOztBQUdILFNBQWdCLHlCQUFpQztDQUMvQyxNQUFNLE9BQU8sU0FBUyxhQUFhLEVBQ2pDLEtBQUssUUFBUSxLQUNkLENBQUMsQ0FDQyxTQUFTLE9BQU8sQ0FDaEIsTUFBTSxLQUFLLENBQ1gsTUFBTSxTQUFTLEtBQUssV0FBVyxTQUFTLENBQUM7Q0FDNUMsTUFBTSxxREFBUyxLQUFNLE1BQU0sRUFBZ0I7QUFDM0MsS0FBSSxDQUFDLE9BQ0gsT0FBTSxJQUFJLFVBQVUsd0NBQXdDO0FBRTlELFFBQU8sWUFBWSxPQUFPOztBQUc1QixTQUFnQixnQkFBZ0IsUUFBb0M7QUFDbEUsUUFBTyxjQUFjOztBQUd2QixTQUFnQixlQUFlLFFBQXdCO0FBQ3JELFFBQU8sT0FBTyxRQUFRLE1BQU0sSUFBSSxDQUFDLGFBQWE7Ozs7O0FDL0xoRCxJQUFZLHNEQUFMO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFNRixNQUFNLHNCQUFzQixJQUFJLElBQXlCO0NBQ3ZELENBQUMsWUFBWSxPQUFPLHlCQUF5QjtDQUM3QyxDQUFDLFlBQVksT0FBTywwQkFBMEI7Q0FDOUMsQ0FBQyxZQUFZLE9BQU8sb0NBQW9DO0NBQ3hELENBQUMsWUFBWSxPQUFPLDRCQUE0QjtDQUNoRCxDQUFDLFlBQVksT0FBTyw2QkFBNkI7Q0FDakQsQ0FBQyxZQUFZLE9BQU8sNkJBQTZCO0NBQ2pELENBQUMsWUFBWSxPQUFPLHVDQUF1QztDQUMzRCxDQUFDLFlBQVksT0FBTyx1Q0FBdUM7Q0FDM0QsQ0FBQyxZQUFZLE9BQU8sNEJBQTRCO0NBQ2pELENBQUM7QUFRRixTQUFTLGlCQUFpQixHQUF3QjtDQUNoRCxNQUFNLFVBQVUsRUFBRSxNQUFNLGtDQUFrQztBQUUxRCxLQUFJLENBQUMsUUFDSCxPQUFNLElBQUksTUFBTSxrQ0FBa0MsRUFBRTtDQUd0RCxNQUFNLEdBQUcsT0FBTyxPQUFPLFNBQVM7QUFFaEMsUUFBTztFQUNMLE9BQU8sU0FBUyxNQUFNO0VBQ3RCLE9BQU8sU0FBUyxNQUFNO0VBQ3RCLE9BQU8sU0FBUyxNQUFNO0VBQ3ZCOztBQUdILFNBQVMscUJBQXFCLGFBQXlDO0NBQ3JFLE1BQU0sY0FBYyxvQkFBb0IsSUFBSSxZQUFZO0FBRXhELEtBQUksQ0FBQyxZQUNILFFBQU8sQ0FBQyxpQkFBaUIsU0FBUyxDQUFDO0FBR3JDLFFBQU8sWUFBWSxNQUFNLElBQUksQ0FBQyxJQUFJLGlCQUFpQjs7QUFHckQsU0FBUyxvQkFBb0IsVUFBaUM7Q0FDNUQsTUFBTUMsZUFBeUIsRUFBRTtBQUNqQyxVQUFTLFNBQVMsR0FBRyxNQUFNO0VBQ3pCLElBQUksTUFBTTtBQUNWLE1BQUksTUFBTSxHQUFHO0dBQ1gsTUFBTSxjQUFjLFNBQVMsSUFBSTtBQUNqQyxVQUFPLEtBQUssWUFBWSxRQUFROztBQUdsQyxTQUFPLEdBQUcsTUFBTSxJQUFJLEtBQUssT0FBTyxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUU7QUFDN0QsZUFBYSxLQUFLLElBQUk7R0FDdEI7QUFFRixRQUFPLGFBQWEsS0FBSyxJQUFJOztBQUcvQixTQUFnQixzQkFBc0IsYUFBa0M7QUFDdEUsUUFBTyxvQkFBb0IscUJBQXFCLFlBQVksQ0FBQzs7Ozs7QUMxQi9ELGVBQXNCLGNBQWMsY0FBc0I7QUFDeEQsS0FBSSxDQUFDLEdBQUcsV0FBVyxhQUFhLENBQzlCLE9BQU0sSUFBSSxNQUFNLCtCQUErQixlQUFlO0NBR2hFLE1BQU0sZUFBZSxNQUNuQixTQUNBO0VBQUM7RUFBWTtFQUFtQjtFQUFjO0VBQW9CO0VBQUksRUFDdEUsRUFBRSxPQUFPLFFBQVEsQ0FDbEI7Q0FFRCxJQUFJLFNBQVM7Q0FDYixJQUFJLFNBQVM7Q0FDYixJQUFJLFNBQVM7QUFHYixjQUFhLE9BQU8sR0FBRyxTQUFTLFNBQVM7QUFDdkMsWUFBVTtHQUNWO0FBRUYsY0FBYSxPQUFPLEdBQUcsU0FBUyxTQUFTO0FBQ3ZDLFlBQVU7R0FDVjtBQUVGLE9BQU0sSUFBSSxTQUFlLGNBQVk7QUFDbkMsZUFBYSxHQUFHLFVBQVUsU0FBUztBQUNqQyxZQUFTLFFBQVE7QUFDakIsY0FBUztJQUNUO0dBQ0Y7QUFLRixLQUFJLFdBQVcsR0FBRztFQUNoQixNQUFNLGdCQUFnQixtQ0FBbUM7QUFDekQsUUFBTSxJQUFJLE1BQU0sR0FBRyxjQUFjLHlCQUF5QixVQUFVLEVBQ2xFLE9BQU8sSUFBSSxNQUFNLGNBQWMsRUFDaEMsQ0FBQzs7QUFHSixLQUFJO0FBQ0YsU0FBTyxLQUFLLE1BQU0sT0FBTztVQUNsQixHQUFHO0FBQ1YsUUFBTSxJQUFJLE1BQU0sdUNBQXVDLEVBQUUsT0FBTyxHQUFHLENBQUM7Ozs7OztBQ2dFeEUsZUFBc0IsZUFDcEIsUUFDQSxZQUNxQjtBQUNyQixLQUFJLGNBQWMsQ0FBRSxNQUFNLFdBQVcsV0FBVyxDQUM5QyxPQUFNLElBQUksTUFBTSwrQkFBK0IsYUFBYTtBQUU5RCxLQUFJLENBQUUsTUFBTSxXQUFXQyxPQUFLLENBQzFCLE9BQU0sSUFBSSxNQUFNLDZCQUE2QkEsU0FBTztDQUd0RCxNQUFNLFVBQVUsTUFBTSxjQUFjQSxRQUFNLE9BQU87Q0FDakQsSUFBSTtBQUNKLEtBQUk7QUFDRixZQUFVLEtBQUssTUFBTSxRQUFRO1VBQ3RCLEdBQUc7QUFDVixRQUFNLElBQUksTUFBTSxtQ0FBbUNBLFVBQVEsRUFDekQsT0FBTyxHQUNSLENBQUM7O0NBR0osSUFBSUM7QUFDSixLQUFJLFlBQVk7RUFDZCxNQUFNLGdCQUFnQixNQUFNLGNBQWMsWUFBWSxPQUFPO0FBQzdELE1BQUk7QUFDRixxQkFBa0IsS0FBSyxNQUFNLGNBQWM7V0FDcEMsR0FBRztBQUNWLFNBQU0sSUFBSSxNQUFNLHFDQUFxQyxjQUFjLEVBQ2pFLE9BQU8sR0FDUixDQUFDOzs7Q0FJTixNQUFNLGlCQUFpQixRQUFRLFFBQVEsRUFBRTtBQUN6QyxLQUFJLFFBQVEsUUFBUSxpQkFBaUI7RUFDbkMsTUFBTSxjQUFjLFVBQVVELE9BQUs7RUFDbkMsTUFBTSxzQkFBc0IsVUFBVSxXQUFZO0FBQ2xELFVBQVEsS0FDTixPQUNFLHNCQUFzQixZQUFZLHdCQUF3QixvQkFBb0IseURBQy9FLENBQ0Y7O0FBRUgsS0FBSSxnQkFDRixRQUFPLE9BQU8sZ0JBQWdCLGdCQUFnQjtDQUVoRCxNQUFNRSxhQUF5QixNQUM3QjtFQUNFLFlBQVk7RUFDWixhQUFhLFFBQVE7RUFDckIsU0FBUyxFQUFFO0VBQ1gsYUFBYTtFQUNiLFdBQVc7RUFDWixFQUNELEtBQUssZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQ2xDO0NBRUQsSUFBSUMsVUFBb0IsZUFBZSxXQUFXLEVBQUU7QUFHcEQscUVBQUksZUFBZ0IsTUFBTTtBQUN4QixVQUFRLEtBQ04sT0FDRSxxRUFDRCxDQUNGO0FBQ0QsYUFBVyxhQUFhLGVBQWU7O0FBR3pDLEtBQUksQ0FBQyxRQUFRLFFBQVE7O0VBQ25CLElBQUksbUJBQW1CO0VBQ3ZCLE1BQU0sVUFBVSxPQUNkLHFFQUNEO0FBQ0QsK0JBQUksZUFBZSx1RkFBUyxVQUFVO0FBQ3BDLHNCQUFtQjtBQUNuQixXQUFRLEtBQUssUUFBUTtBQUNyQixhQUFVLFFBQVEsT0FBTyxnQkFBZ0I7O0FBRzNDLGdDQUFJLGVBQWUsMkdBQVMsNEZBQVksUUFBUTtBQUM5QyxhQUFVLFFBQVEsT0FBTyxlQUFlLFFBQVEsV0FBVztBQUMzRCxPQUFJLENBQUMsaUJBQ0gsU0FBUSxLQUFLLFFBQVE7OztBQU8zQixLQURzQixJQUFJLElBQUksUUFBUSxDQUNwQixTQUFTLFFBQVEsUUFBUTtFQUN6QyxNQUFNLGtCQUFrQixRQUFRLE1BQzdCLFFBQVEsVUFBVSxRQUFRLFFBQVEsT0FBTyxLQUFLLE1BQ2hEO0FBQ0QsUUFBTSxJQUFJLE1BQU0sc0NBQXNDLGtCQUFrQjs7QUFHMUUsWUFBVyxVQUFVLFFBQVEsSUFBSSxZQUFZO0FBRTdDLFFBQU87Ozs7O0FDN1BULFNBQWdCLHNCQUFzQixNQUFjLEtBQWE7QUFDL0QsS0FBSSxrQkFBa0IsSUFBSSxFQUFFO0FBQzFCLFVBQU0sc0NBQXNDLEtBQUs7QUFDakQ7O0FBR0YsS0FBSTtBQUNGLFVBQU0sK0JBQStCLEtBQUs7QUFDMUMsV0FBUyxpQkFBaUIsUUFBUSxFQUNoQyxPQUFPLFdBQ1IsQ0FBQztVQUNLLEdBQUc7QUFDVixRQUFNLElBQUksTUFBTSxtQ0FBbUMsUUFBUSxFQUN6RCxPQUFPLEdBQ1IsQ0FBQzs7O0FBSU4sU0FBUyxrQkFBa0IsS0FBYTtBQUN0QyxTQUFNLDhCQUE4QixJQUFJO0FBQ3hDLEtBQUk7QUFDRixXQUFTLGNBQWMsT0FBTyxFQUM1QixPQUFPLFVBQ1IsQ0FBQztBQUNGLFVBQU0sNkJBQTZCLElBQUk7QUFDdkMsU0FBTztTQUNEO0FBQ04sVUFBTSxpQ0FBaUMsSUFBSTtBQUMzQyxTQUFPOzs7Ozs7QUM1QlgsTUFBTSxzQkFBc0I7QUFDNUIsTUFBYSwwQkFBMEI7OztBQUl2QyxJQUFLLHNEQUFMO0FBQ0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQVRHO0FBc0JMLFNBQVMsWUFDUCxNQUNBLFdBQ0EsT0FDQSxVQUFVLE9BQ0Y7Q0FDUixJQUFJLElBQUksS0FBSyxVQUFVO0FBQ3ZCLFNBQVEsS0FBSyxNQUFiO0VBQ0UsS0FBSyxZQUFZO0FBQ2YsUUFBSyxvQkFBb0IsS0FBSyxLQUFLLE1BQU0sS0FBSyxJQUFJO0FBQ2xEO0VBRUYsS0FBSyxZQUFZO0FBQ2YsUUFBSyxlQUFlLEtBQUssS0FBSyxPQUFPLEtBQUs7QUFDMUM7RUFFRixLQUFLLFlBQVk7R0FDZixNQUFNLFdBQVcsWUFBWSxlQUFlO0FBQzVDLFFBQUssR0FBRyxjQUFjLFFBQVEsQ0FBQyxHQUFHLFNBQVMsR0FBRyxLQUFLLEtBQUssTUFBTSxLQUFLLElBQUk7QUFDdkU7RUFFRixLQUFLLFlBQVk7QUFDZixPQUFJLFVBQ0YsTUFBSyxHQUFHLGNBQWMsUUFBUSxDQUFDLGNBQWMsS0FBSyxLQUFLLE1BQU0sS0FBSyxJQUFJO09BRXRFLE1BQUssZUFBZSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksV0FBVyxRQUFRLEdBQUcsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDO0FBRTFGO0VBRUYsS0FBSyxZQUFZO0dBQ2YsTUFBTSxhQUFhLEtBQUssVUFBVSxZQUFZLEtBQUssWUFBWTtBQUMvRCxPQUFJLEtBQUssU0FBUztJQUVoQixNQUFNLGVBQWUsS0FBSyxRQUFRLE1BQU0sa0JBQWtCO0FBQzFELFFBQUksY0FBYztLQUNoQixNQUFNLENBQUMsR0FBRyxTQUFTLFNBQVMsYUFBYSxHQUN0QyxNQUFNLElBQUksQ0FDVixLQUFLLE1BQU0sRUFBRSxNQUFNLENBQUM7QUFDdkIsVUFBSyxNQUNILEtBQUssTUFDTCxrQkFBa0IsTUFBTSxvQkFBb0IsRUFBRSxJQUFJLFFBQVE7OztBQUdoRSxRQUFLLEdBQUcsY0FBYyxRQUFRLENBQUMsU0FBUyxLQUFLLE9BQU8sV0FBVyxNQUFNLEtBQUssSUFBSTtBQUM5RSxPQUFJLEtBQUssaUJBQWlCLEtBQUssa0JBQWtCLEtBQUssS0FDcEQsTUFBSyxpQkFBaUIsS0FBSyxjQUFjLEtBQUssS0FBSztBQUVyRDtFQUVGLEtBQUssWUFBWTtBQUNmLFFBQUssR0FBRyxjQUFjLFFBQVEsQ0FBQyxHQUFHLEtBQUs7QUFDdkM7RUFFRixRQUNFLE1BQUssS0FBSzs7QUFHZCxRQUFPLG1CQUFtQixHQUFHLE1BQU07O0FBR3JDLFNBQVMsY0FBYyxTQUEwQjtBQUMvQyxLQUFJLFFBQ0YsUUFBTztBQUdULFFBQU87O0FBR1QsZUFBc0IsZUFDcEIsc0JBQ0EsV0FDQTtDQUNBLE1BQU1DLFVBQW9CLEVBQUU7Q0FFNUIsTUFBTSxjQUFjLGtCQURQLE1BQU0seUJBQXlCLHFCQUFxQixDQUN0QjtBQXVDM0MsUUFBTztFQUNMLEtBckNBLE9BQU8sTUFBTSxLQUFLLFlBQVksRUFBRSxFQUFFLENBQUMsZUFBZSxVQUFVLENBQUMsQ0FDMUQsS0FBSyxDQUFDLFdBQVcsVUFBVTtBQUMxQixPQUFJLGNBQWMsb0JBQ2hCLFFBQU8sS0FDSixLQUFLLFFBQVE7QUFDWixZQUFRLElBQUksTUFBWjtLQUNFLEtBQUssWUFBWTtLQUNqQixLQUFLLFlBQVk7S0FDakIsS0FBSyxZQUFZO0tBQ2pCLEtBQUssWUFBWTtLQUNqQixLQUFLLFlBQVk7QUFDZixjQUFRLEtBQUssSUFBSSxLQUFLO0FBQ3RCLFVBQUksSUFBSSxpQkFBaUIsSUFBSSxrQkFBa0IsSUFBSSxLQUNqRCxTQUFRLEtBQUssSUFBSSxjQUFjO0FBRWpDO0tBRUYsUUFDRTs7QUFFSixXQUFPLFlBQVksS0FBSyxXQUFXLEVBQUU7S0FDckMsQ0FDRCxLQUFLLE9BQU87UUFDVjtBQUNMLFlBQVEsS0FBSyxVQUFVO0lBQ3ZCLElBQUksY0FBYztBQUNsQixtQkFBZSw0QkFBNEIsVUFBVTtBQUNyRCxTQUFLLE1BQU0sT0FBTyxLQUNoQixnQkFBZSxZQUFZLEtBQUssV0FBVyxHQUFHLEtBQUssR0FBRztBQUV4RCxtQkFBZTtBQUNmLFdBQU87O0lBRVQsQ0FDRCxLQUFLLE9BQU8sR0FBRztFQUlsQjtFQUNEOztBQUdILGVBQWUseUJBQXlCLE1BQWM7QUF1QnBELFNBdEJnQixNQUFNLGNBQWMsTUFBTSxPQUFPLEVBRzlDLE1BQU0sS0FBSyxDQUNYLE9BQU8sUUFBUSxDQUNmLEtBQUssU0FBUztBQUNiLFNBQU8sS0FBSyxNQUFNO0VBQ2xCLE1BQU0sU0FBUyxLQUFLLE1BQU0sS0FBSztBQUUvQixNQUFJLE9BQU8sT0FDVCxRQUFPLFNBQVMsT0FBTyxPQUFPLFFBQVEsUUFBUSxLQUFLO0FBSXJELE1BQUksT0FBTyxJQUNULFFBQU8sTUFBTSxPQUFPLElBQUksUUFBUSxRQUFRLEtBQUs7QUFFL0MsU0FBTztHQUNQLENBSVEsTUFBTSxHQUFHLE1BQU07QUFDekIsTUFBSSxFQUFFLFNBQVMsWUFBWSxRQUFRO0FBQ2pDLE9BQUksRUFBRSxTQUFTLFlBQVksT0FDekIsUUFBTyxFQUFFLEtBQUssY0FBYyxFQUFFLEtBQUs7QUFFckMsVUFBTzthQUNFLEVBQUUsU0FBUyxZQUFZLE9BQ2hDLFFBQU87TUFFUCxRQUFPLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSztHQUVyQzs7QUFHSixTQUFTLGtCQUFrQixNQUFpRDtDQUMxRSxNQUFNLG1DQUFtQixJQUFJLEtBQTRCO0NBQ3pELE1BQU0sNEJBQVksSUFBSSxLQUEwQjtBQUVoRCxNQUFLLE1BQU0sT0FBTyxNQUFNO0VBQ3RCLE1BQU0sWUFBWSxJQUFJLFVBQVU7QUFDaEMsTUFBSSxDQUFDLGlCQUFpQixJQUFJLFVBQVUsQ0FDbEMsa0JBQWlCLElBQUksV0FBVyxFQUFFLENBQUM7RUFHckMsTUFBTSxRQUFRLGlCQUFpQixJQUFJLFVBQVU7QUFFN0MsTUFBSSxJQUFJLFNBQVMsWUFBWSxRQUFRO0FBQ25DLFNBQU0sS0FBSyxJQUFJO0FBQ2YsYUFBVSxJQUFJLElBQUksTUFBTSxJQUFJO2FBQ25CLElBQUksU0FBUyxZQUFZLFNBQVM7R0FDM0MsTUFBTSxXQUFXLFVBQVUsSUFBSSxJQUFJLEtBQUs7QUFDeEMsT0FBSSxTQUNGLFVBQVMsVUFBVSxJQUFJO2FBRWhCLElBQUksU0FBUyxZQUFZLE1BQU07R0FFeEMsTUFBTSxXQUFXLFVBQVUsSUFBSSxJQUFJLEtBQUs7QUFDeEMsT0FBSSxVQUFVO0FBQ1osUUFBSSxTQUFTLElBQ1gsVUFBUyxPQUFPO0FBR2xCLGFBQVMsT0FBTyxJQUFJO0FBRXBCLFFBQUksU0FBUyxJQUNYLFVBQVMsTUFBTSxTQUFTLElBQUksUUFBUSxRQUFRLEtBQUs7O1FBSXJELE9BQU0sS0FBSyxJQUFJOztBQUluQixRQUFPOztBQUdULFNBQWdCLG1CQUFtQixLQUFhLE9BQXVCO0NBQ3JFLElBQUksZUFBZTtBQXlDbkIsUUF4Q2UsSUFDWixNQUFNLEtBQUssQ0FDWCxLQUFLLFNBQVM7QUFDYixTQUFPLEtBQUssTUFBTTtBQUNsQixNQUFJLFNBQVMsR0FDWCxRQUFPO0VBR1QsTUFBTSx1QkFBdUIsS0FBSyxXQUFXLElBQUk7RUFDakQsTUFBTSxtQkFBbUIsS0FBSyxTQUFTLElBQUk7RUFDM0MsTUFBTSxtQkFBbUIsS0FBSyxTQUFTLElBQUk7RUFDM0MsTUFBTSxvQkFBb0IsS0FBSyxTQUFTLElBQUk7RUFDNUMsTUFBTSxnQkFBZ0IsS0FBSyxXQUFXLElBQUk7RUFFMUMsSUFBSSxjQUFjO0FBQ2xCLE9BQUssb0JBQW9CLHNCQUFzQixDQUFDLHNCQUFzQjtBQUNwRSxtQkFBZ0I7QUFDaEIsbUJBQWdCLGVBQWUsS0FBSztTQUMvQjtBQUNMLE9BQ0Usb0JBQ0EsZUFBZSxLQUNmLENBQUMsd0JBQ0QsQ0FBQyxjQUVELGlCQUFnQjtBQUVsQixrQkFBZSxlQUFlOztBQUdoQyxNQUFJLHFCQUNGLGdCQUFlO0FBS2pCLFNBRlUsR0FBRyxJQUFJLE9BQU8sWUFBWSxHQUFHO0dBR3ZDLENBQ0QsS0FBSyxLQUFLOzs7OztBQ25RZixlQUFzQixXQUFXLFNBQTZCO0NBQzVELE1BQU0sZUFBZSxHQUFHLFVBQW9CLFFBQVEsUUFBUSxLQUFLLEdBQUcsTUFBTTtBQUsxRSxRQUplLE1BQU0sZUFDbkIsWUFBWSxRQUFRLG1CQUFtQixlQUFlLEVBQ3RELFFBQVEsYUFBYSxZQUFZLFFBQVEsV0FBVyxHQUFHLE9BQ3hEOzs7OztBQ0VILE1BQU1DLFVBQVEsYUFBYSxZQUFZO0FBRXZDLGVBQXNCLGlCQUFpQixhQUErQjtDQUNwRSxNQUFNLFVBQVUsNkJBQTZCLFlBQVk7Q0FFekQsTUFBTSxlQUFlLEdBQUcsVUFBb0IsUUFBUSxRQUFRLEtBQUssR0FBRyxNQUFNO0NBQzFFLE1BQU0sa0JBQWtCLFlBQVksUUFBUSxnQkFBZ0I7Q0FDNUQsTUFBTSxFQUFFLFNBQVMsWUFBWSxnQkFBZ0IsTUFBTSxlQUNqRCxpQkFDQSxRQUFRLGFBQWEsWUFBWSxRQUFRLFdBQVcsR0FBRyxPQUN4RDtDQUVELE1BQU0sV0FBVyxRQUFRLEtBQUssYUFDNUIsS0FBSyxRQUFRLEtBQUssUUFBUSxRQUFRLFNBQVMsZ0JBQWdCLENBQzVEO0NBRUQsTUFBTSxzQkFBc0IsSUFBSSxJQUM5QixRQUNHLFFBQVEsYUFBYSxTQUFTLFNBQVMsWUFBWSxDQUNuRCxTQUFTLE1BQ1I7O3FEQUFtQixFQUFFLHlGQUFXLEtBQUssTUFBTSxHQUFHLEVBQUUsU0FBUyxHQUFHLElBQUk7R0FDakUsQ0FDQSxPQUFPLFFBQVEsQ0FDbkI7QUFFRCxPQUFNLG9CQUFvQixLQUFLLFFBQVEsS0FBSyxRQUFRLFVBQVUsQ0FBQyxDQUFDLE1BQzdELFdBQ0MsUUFBUSxJQUNOLE9BQU8sSUFBSSxPQUFPLGFBQWE7QUFDN0IsVUFBTSxLQUFLLFNBQVMsT0FBTyxhQUFhLFNBQVMsQ0FBQyxHQUFHO0VBQ3JELE1BQU0sZ0JBQWdCLE1BQU0sY0FBYyxTQUFTO0VBQ25ELE1BQU0sYUFBYSxNQUFNLFNBQVM7RUFDbEMsTUFBTSxRQUFRLFdBQVcsS0FBSyxNQUFNLElBQUk7RUFDeEMsTUFBTSxrQkFBa0IsTUFBTSxLQUFLO0VBQ25DLE1BQU0sY0FBYyxNQUFNLEtBQUssSUFBSTtBQUVuQyxNQUFJLGdCQUFnQixZQUFZO0FBQzlCLFdBQU0sS0FDSixJQUFJLFlBQVkseUJBQXlCLFdBQVcsU0FDckQ7QUFDRDs7RUFFRixNQUFNQyxRQUFNLFNBQVMsTUFBTSxVQUFRQSxNQUFJLFNBQVMsZ0JBQWdCLENBQUM7QUFDakUsTUFBSSxDQUFDQSxTQUFPLG9CQUFvQixJQUFJLGdCQUFnQixFQUFFO0FBQ3BELFdBQU0sS0FDSixJQUFJLGdCQUFnQixpRUFDckI7QUFDRDs7QUFFRixNQUFJLENBQUNBLE1BQ0gsT0FBTSxJQUFJLE1BQU0seUJBQXlCLFdBQVc7RUFHdEQsTUFBTSxlQUFlLEtBQUtBLE9BQUssV0FBVyxLQUFLO0FBQy9DLFVBQU0sS0FDSiwwQkFBMEIsT0FBTyxhQUFhLGFBQWEsQ0FBQyxHQUM3RDtBQUNELFFBQU0sZUFBZSxjQUFjLGNBQWM7RUFDakQsTUFBTSxvQkFBb0IsS0FDeEIsTUFBTSxnQkFBZ0IsQ0FBQyxLQUN2QixXQUFXLEtBQ1o7QUFDRCxVQUFNLEtBQ0osMEJBQTBCLE9BQU8sYUFBYSxrQkFBa0IsQ0FBQyxHQUNsRTtBQUNELFFBQU0sZUFBZSxtQkFBbUIsY0FBYztHQUN0RCxDQUNILENBQ0o7Q0FFRCxNQUFNLGFBQWEsUUFBUSxNQUFNLE1BQU0sRUFBRSxhQUFhLE9BQU87QUFDN0QsS0FBSSxZQUFZO0VBQ2QsTUFBTSxVQUFVLEtBQ2QsUUFBUSxLQUNSLFFBQVEsUUFDUixXQUFXLGdCQUNaO0VBQ0QsTUFBTSxVQUFVLEtBQ2QsUUFBUSxrQkFBa0IsUUFBUSxLQUNsQyxHQUFHLFdBQVcsV0FDZjtFQUNELE1BQU0sYUFBYSxLQUNqQixRQUFRLGtCQUFrQixRQUFRLEtBQ2xDLGtCQUNEO0VBQ0QsTUFBTSxlQUFlLEtBQ25CLFFBQVEsa0JBQWtCLFFBQVEsS0FDbEMsR0FBRyxXQUFXLGtCQUNmO0VBQ0QsTUFBTSxvQkFBb0IsS0FDeEIsUUFBUSxrQkFBa0IsUUFBUSxLQUNsQywwQkFDRDtBQUNELFVBQU0sS0FDSiwyQkFBMkIsT0FBTyxhQUNoQyxRQUNELENBQUMsUUFBUSxPQUFPLGFBQWEsUUFBUSxDQUFDLEdBQ3hDO0FBQ0QsUUFBTSxlQUNKLEtBQUssU0FBUyxHQUFHLFdBQVcsV0FBVyxFQUN2QyxNQUFNLGNBQWMsUUFBUSxDQUM3QjtBQUNELFVBQU0sS0FDSiwwQkFBMEIsT0FBTyxhQUMvQixXQUNELENBQUMsUUFBUSxPQUFPLGFBQWEsUUFBUSxDQUFDLEdBQ3hDO0FBQ0QsUUFBTSxlQUNKLEtBQUssU0FBUyxrQkFBa0IsRUFDaEMsTUFBTSxjQUFjLFdBQVcsQ0FDaEM7QUFDRCxVQUFNLEtBQ0osaUNBQWlDLE9BQU8sYUFDdEMsYUFDRCxDQUFDLFFBQVEsT0FBTyxhQUFhLFFBQVEsQ0FBQyxHQUN4QztBQUNELFFBQU0sZUFDSixLQUFLLFNBQVMsR0FBRyxXQUFXLGtCQUFrQixHQUU3QyxNQUFNLGNBQWMsY0FBYyxPQUFPLEVBQUUsUUFDMUMseURBQ0EsWUFBWSxZQUFZLHlEQUN6QixDQUNGO0FBQ0QsVUFBTSxLQUNKLGtDQUFrQyxPQUFPLGFBQ3ZDLGtCQUNELENBQUMsUUFBUSxPQUFPLGFBQWEsUUFBUSxDQUFDLEdBQ3hDO0FBQ0QsUUFBTSxlQUNKLEtBQUssU0FBUywwQkFBMEIsRUFDeEMsTUFBTSxjQUFjLGtCQUFrQixDQUN2Qzs7O0FBSUwsZUFBZSxvQkFBb0IsTUFBYztDQUMvQyxNQUFNLFFBQVEsTUFBTSxhQUFhLE1BQU0sRUFBRSxlQUFlLE1BQU0sQ0FBQztDQUMvRCxNQUFNLGVBQWUsTUFDbEIsUUFDRSxTQUNDLEtBQUssUUFBUSxLQUNaLEtBQUssS0FBSyxTQUFTLFFBQVEsSUFBSSxLQUFLLEtBQUssU0FBUyxRQUFRLEVBQzlELENBQ0EsS0FBSyxTQUFTLEtBQUssTUFBTSxLQUFLLEtBQUssQ0FBQztDQUV2QyxNQUFNLE9BQU8sTUFBTSxRQUFRLFNBQVMsS0FBSyxhQUFhLENBQUM7QUFDdkQsTUFBSyxNQUFNQSxTQUFPLEtBQ2hCLEtBQUlBLE1BQUksU0FBUyxlQUNmLGNBQWEsS0FBSyxHQUFJLE1BQU0sb0JBQW9CLEtBQUssTUFBTUEsTUFBSSxLQUFLLENBQUMsQ0FBRTtBQUczRSxRQUFPOzs7OztBQ3pLVCxTQUFnQixpQkFDZCxXQUNBLFNBQ0EsUUFDQSxnQkFDUTtBQUNSLFFBQU8sR0FBRyxjQUFjO0VBQ3hCLG9CQUFvQixXQUFXLFNBQVMsZUFBZSxDQUFDOztFQUV4RCxPQUNDLEtBQUssVUFBVSxrQkFBa0IsTUFBTSxtQkFBbUIsUUFBUSxDQUNsRSxLQUFLLEtBQUssQ0FBQzs7O0FBSWQsU0FBZ0IsaUJBQ2QsV0FDQSxTQUNBLFFBQ0EsZ0JBQ1E7QUFDUixRQUFPLEdBQUcsY0FBYzs7Ozs7RUFLeEIsb0JBQW9CLFdBQVcsU0FBUyxlQUFlLENBQUM7VUFDaEQsT0FBTyxLQUFLLEtBQUssQ0FBQztFQUMxQixPQUFPLEtBQUssVUFBVSxZQUFZLE1BQU0sSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDOzs7QUFJMUQsTUFBTSxnQkFBZ0I7Ozs7O0FBTXRCLFNBQVMsb0JBQ1AsV0FDQSxTQUNBLGdCQUNRO0NBQ1IsU0FBUyxhQUFhLE9BQWUsWUFBWSxHQUFHO0VBQ2xELE1BQU0sV0FBVyxJQUFJLE9BQU8sWUFBWSxFQUFFO0VBQzFDLE1BQU0sUUFBUSxJQUFJLE9BQU8sVUFBVTtBQW1CbkMsU0FBTztFQUNULE1BQU0sb0JBQW9CLFVBQVUsR0FBRyxNQUFNO0VBQzdDLFNBQVM7RUFDVCxNQUFNO0VBQ04sU0FBUyxHQXRCYyxpQkFDakI7RUFDTixTQUFTO0VBQ1QsTUFBTSwyQkFBMkIsUUFBUSxHQUFHLE1BQU07RUFDbEQsTUFBTSx5Q0FBeUMsUUFBUSxHQUFHLE1BQU07RUFDaEUsTUFBTSxpQ0FBaUMsZUFBZTtFQUN0RCxNQUFNLHdFQUF3RSxlQUFlO0VBQzdGLE1BQU07RUFDTixNQUFNO0VBQ04sU0FBUztFQUNULE1BQU07RUFDTixTQUFTLEtBQ0g7RUFDTixTQUFTO0VBQ1QsTUFBTSxrQkFBa0IsUUFBUSxHQUFHLE1BQU07RUFDekMsU0FBUztFQUNULE1BQU07RUFDTixTQUFTOztBQVFULFFBQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQWtFRCxhQUFhLGdCQUFnQixDQUFDOztRQUU5QixhQUFhLG1CQUFtQixDQUFDOzs7Ozs7O1VBTy9CLGFBQWEsZ0JBQWdCLENBQUM7O1VBRTlCLGFBQWEsaUJBQWlCLENBQUM7OztRQUdqQyxhQUFhLGtCQUFrQixDQUFDOztRQUVoQyxhQUFhLG1CQUFtQixDQUFDOzs7OztNQUtuQyxhQUFhLG9CQUFvQixFQUFFLENBQUM7O1FBRWxDLGFBQWEsYUFBYSxDQUFDOztRQUUzQixhQUFhLGVBQWUsQ0FBQzs7Ozs7O1FBTTdCLGFBQWEsY0FBYyxDQUFDOztRQUU1QixhQUFhLGdCQUFnQixDQUFDOzs7Ozs7O1VBTzVCLGFBQWEsa0JBQWtCLEdBQUcsQ0FBQzs7VUFFbkMsYUFBYSxpQkFBaUIsR0FBRyxDQUFDOzs7O1VBSWxDLGFBQWEsb0JBQW9CLEdBQUcsQ0FBQzs7VUFFckMsYUFBYSxtQkFBbUIsR0FBRyxDQUFDOzs7O1VBSXBDLGFBQWEsd0JBQXdCLEdBQUcsQ0FBQzs7VUFFekMsYUFBYSx1QkFBdUIsR0FBRyxDQUFDOzs7O1VBSXhDLGFBQWEsc0JBQXNCLEdBQUcsQ0FBQzs7VUFFdkMsYUFBYSxxQkFBcUIsR0FBRyxDQUFDOzs7O1VBSXRDLGFBQWEsc0JBQXNCLEdBQUcsQ0FBQzs7VUFFdkMsYUFBYSxxQkFBcUIsR0FBRyxDQUFDOzs7UUFHeEMsYUFBYSxrQkFBa0IsQ0FBQzs7UUFFaEMsYUFBYSxrQkFBa0IsQ0FBQzs7Ozs7O1FBTWhDLGFBQWEsb0JBQW9CLENBQUM7O1FBRWxDLGFBQWEsa0JBQWtCLENBQUM7O1FBRWhDLGFBQWEsa0JBQWtCLENBQUM7Ozs7Ozs7Ozs7Ozs7OzsrQkFlVCxVQUFVOzs7Ozs7Ozs7K0JBU1YsUUFBUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsUHZDLE1BQWEsNEJBQ1gsY0FDQSxnQkFBZ0IsS0FDaEIsZ0JBQWdCLE9BQ2hCLE9BQUssT0FDTCxZQUFZLE9BQ1osU0FBUyxVQUNOO0FBcUNILFFBQU87OztJQVB5QixZQUM1QiwyREFDQSxpRUFRc0I7OztFQXZDVEMsT0FDYixTQUNFLDZEQUNBLHFEQUNGLEdBc0NLO0VBckNZLFVBQVUsQ0FBQ0EsT0FBSyxvQ0FBb0MsR0FzQzVEO0VBckNRQSxPQUNqQjs7Ozs7Ozs7O01BVUE7OztJQTJCUzs7K0JBRWdCLGFBQWE7O0VBcEJmLFNBQ3ZCLDRDQUNBLEdBb0JlOzs7YUFHUixjQUFjO2FBQ2QsY0FBYzs7Ozs7Ozs7OztNQXBCSyxZQUMxQix3Q0FDQSxvQ0E0QnNCOzs7Ozs7OztFQXhDRkEsT0FDcEIsb0ZBQ0EsR0E4Q1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QmxCLE1BQWEscUJBQ1gsY0FDQSxhQUNBLGdCQUFnQixLQUNoQixnQkFBZ0IsVUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUE2QlEsY0FBYzthQUNkLGNBQWM7Ozs7bURBSXdCLGFBQWE7MERBQ04sYUFBYTs7Ozs7O3dDQU0vQixZQUFZLGVBQWUsYUFBYTs7bUNBRTdDLGFBQWEsa0JBQWtCLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNySjlFLE1BQWEsdUJBQXVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUVwQyxNQUFhLGtDQUFrQyxTQUFnQjtBQWdDN0QsUUFBTyxHQS9CVUMsT0FDYjs7OzZDQUlBLDBGQTBCZTs7OztNQXpCRUEsT0FDakI7Ozs7Ozs7Ozs7Ozs7VUFjQTs7Ozs7Ozs7O1FBY2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZEbkIsTUFBTUMsVUFBUSxhQUFhLFFBQVE7QUFDbkMsTUFBTSxVQUFVLGNBQWMsT0FBTyxLQUFLLElBQUk7QUFROUMsZUFBc0IsYUFBYSxZQUEwQjtBQUMzRCxTQUFNLDBDQUEwQyxXQUFXO0NBRTNELE1BQU1DLFVBQThCO0VBQ2xDLFVBQVU7RUFDVixHQUFHO0VBQ0gsS0FBSyxXQUFXLE9BQU8sUUFBUSxLQUFLO0VBQ3JDO0NBRUQsTUFBTSxlQUFlLEdBQUcsVUFBb0IsUUFBUSxRQUFRLEtBQUssR0FBRyxNQUFNO0NBRTFFLE1BQU0sZUFBZSxZQUFZLFFBQVEsZ0JBQWdCLGFBQWE7Q0FDdEUsTUFBTSxXQUFXLE1BQU0sY0FBYyxhQUFhO0NBRWxELE1BQU0sUUFBUSxTQUFTLFNBQVMsTUFBTSxNQUFNO0FBRTFDLE1BQUksUUFBUSxRQUNWLFFBQU8sRUFBRSxTQUFTLFFBQVE7TUFFMUIsUUFBTyxFQUFFLGtCQUFrQjtHQUU3QjtBQUVGLEtBQUksQ0FBQyxNQUNILE9BQU0sSUFBSSxNQUNSLHdKQUNEO0FBU0gsUUFGZ0IsSUFBSSxRQUFRLFVBQVUsT0FMdkIsTUFBTSxlQUNuQixZQUFZLFFBQVEsbUJBQW1CLGVBQWUsRUFDdEQsUUFBUSxhQUFhLFlBQVksUUFBUSxXQUFXLEdBQUcsT0FDeEQsRUFFb0QsUUFBUSxDQUU5QyxPQUFPOztBQUd4QixJQUFNLFVBQU4sTUFBYztDQUNaLEFBQWlCLE9BQWlCLEVBQUU7Q0FDcEMsQUFBaUIsT0FBK0IsRUFBRTtDQUNsRCxBQUFpQixVQUFvQixFQUFFO0NBRXZDLEFBQWlCO0NBQ2pCLEFBQWlCO0NBQ2pCLEFBQWlCO0NBQ2pCLEFBQWlCO0NBQ2pCLEFBQWlCLGdCQUF5QjtDQUUxQyxZQUNFLEFBQWlCQyxVQUNqQixBQUFpQkMsT0FDakIsQUFBaUJDLFFBQ2pCLEFBQWlCSCxTQUNqQjtFQUppQjtFQUNBO0VBQ0E7RUFDQTtBQUVqQixPQUFLLFNBQVMsUUFBUSxTQUNsQixZQUFZLFFBQVEsT0FBTyxHQUMzQixRQUFRLElBQUkscUJBQ1YsWUFBWSxRQUFRLElBQUksbUJBQW1CLEdBQzNDLHdCQUF3QjtBQUM5QixPQUFLLFdBQVcsTUFBTSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFLLFlBQVksUUFDZixLQUFLLFFBQVEsS0FDYixRQUFRLGFBQWEsS0FBSyxTQUMzQjtBQUNELE9BQUssWUFDSCxRQUFRLGFBQ1IsUUFBUSxJQUFJLDBCQUNaLFNBQVM7QUFDWCxPQUFLLGdCQUFnQixLQUFLLE1BQU0sYUFBYSxNQUMxQyxRQUNDLElBQUksU0FBUyxrQkFDWixJQUFJLHlCQUF5QixJQUFJLFNBQVMsU0FBUyxXQUFXLEVBQ2xFO0FBRUQsTUFBSSxDQUFDLEtBQUssZUFBZTtHQUN2QixNQUFNLHFCQUNKO0FBQ0YsV0FBTSxLQUNKLEdBQUcsbUJBQW1CLDhFQUN2QjtBQUVELE9BQ0UsS0FBSyxRQUFRLE9BQ2IsS0FBSyxRQUFRLGFBQ2IsS0FBSyxPQUFPLGFBQ1osS0FBSyxPQUFPLGNBRVosU0FBTSxLQUNKLEdBQUcsbUJBQW1CLDREQUN2Qjs7O0NBS1AsSUFBSSxhQUFhOztBQUNmLGtDQUFPLEtBQUssTUFBTSxRQUFRLE1BQU0sTUFBTSxFQUFFLFlBQVksU0FBUyxTQUFTLENBQUMsZ0ZBQ25FOztDQUdOLElBQUksVUFBVTs7QUFDWixTQUNFLEtBQUssUUFBUSxRQUVaLEtBQUssYUFDRixpQ0FDQSxLQUFLLE1BQU0sUUFBUSxNQUFNLE1BQU0sRUFBRSxZQUFZLFNBQVMsTUFBTSxDQUFDLGtGQUFFOztDQUl2RSxRQUFRO0FBQ04sTUFBSSxDQUFDLEtBQUssWUFBWTtHQUNwQixNQUFNLFVBQ0o7QUFFRixPQUFJLEtBQUssUUFDUCxTQUFNLEtBQUssUUFBUTtPQUVuQixPQUFNLElBQUksTUFBTSxRQUFROztBQUk1QixTQUFPLEtBQUssWUFBWSxDQUNyQixZQUFZLENBQ1osYUFBYSxDQUNiLFdBQVcsQ0FDWCxvQkFBb0IsQ0FDcEIsU0FBUyxDQUNULGVBQWUsQ0FDZixNQUFNOztDQUdYLEFBQVEscUJBQXFCO0FBQzNCLE1BQUksQ0FBQyxLQUFLLFFBQVEsYUFDaEIsUUFBTztBQUVULE1BQUksS0FBSyxRQUFRLFNBQ2YsU0FBTSxLQUNKLHNHQUNEO0FBR0gsTUFBSSxLQUFLLFFBQVEsYUFDZixTQUFNLEtBQ0osa0hBQ0Q7QUFHSCxNQUFJOztHQUNGLE1BQU0sRUFBRSxvQkFBUyxhQUFhLFFBQVEsMkJBQTJCO0dBRWpFLE1BQU1JLFFBQWdDLEVBQ3BDLDJCQUEyQix1QkFDNUI7R0FFRCxNQUFNLGdCQUFnQixLQUNwQixTQUFTLEVBQ1QsWUFDQSxtQkFDQUMsV0FDQSxLQUFLLE9BQU8sT0FDYjtBQUNELGFBQVUsZUFBZSxFQUFFLFdBQVcsTUFBTSxDQUFDO0FBQzdDLE9BQUksV0FBVyxLQUFLLGVBQWUsZUFBZSxDQUFDLENBQ2pELFNBQU0sYUFBYSxjQUFjLDBCQUEwQjtPQUczRCxDQURtQixTQUFTLFFBQVEsTUFBTSxLQUFLLE9BQU8sT0FBTyxDQUNsRCxPQUFPLGNBQWM7R0FFbEMsTUFBTSxrQkFBa0IsZUFBZSxLQUFLLE9BQU8sT0FBTztHQUMxRCxNQUFNLGtCQUFrQixNQUFNLEtBQUssT0FBTyxXQUFXLEtBQUssT0FBTztHQUNqRSxNQUFNLFlBQVksZ0JBQWdCLGdCQUFnQjtBQUNsRCxRQUFLLGtCQUNILFdBQ0EsS0FBSyxlQUFlLE9BQU8sR0FBRyxnQkFBZ0IsTUFBTSxDQUNyRDtBQUNELFFBQUssa0JBQ0gsa0JBQ0EsS0FBSyxlQUFlLGlCQUFpQixVQUFVLENBQ2hEO0FBQ0QsUUFBSyxrQkFDSCxhQUNBLEtBQUssZUFBZSxPQUFPLEdBQUcsZ0JBQWdCLEtBQUssQ0FDcEQ7QUFDRCxRQUFLLGtCQUNILGlCQUNBLEtBQUssZUFBZSxPQUFPLEdBQUcsZ0JBQWdCLFNBQVMsQ0FDeEQ7QUFDRCxRQUFLLGtCQUNILGtCQUNBLEtBQUssZUFBZSxPQUFPLEdBQUcsZ0JBQWdCLFVBQVUsQ0FDekQ7QUFDRCxRQUFLLGtCQUNILHlCQUNBLEtBQUssZUFBZSxpQkFBaUIsV0FBVyxPQUFPLFdBQVcsQ0FDbkU7QUFDRCxRQUFLLGtCQUNILGFBQ0EsS0FBSyxlQUFlLE9BQU8sR0FBRyxnQkFBZ0IsTUFBTSxDQUNyRDtBQUNELFFBQUssa0JBQ0gsY0FDQSxLQUFLLGVBQWUsT0FBTyxHQUFHLGdCQUFnQixNQUFNLENBQ3JEO0FBQ0QsUUFBSyxrQkFDSCw0QkFDQSxhQUFhLEtBQUssS0FBSyxlQUFlLEdBQ3ZDO0FBRUQsaUNBQ0UsUUFBUSxJQUFJLHlGQUFXLFdBQVcsUUFBUSx5QkFDekMsUUFBUSxJQUFJLHNFQUFJLFdBQVcsUUFBUSxLQUFJLENBQUMsUUFBUSxJQUFJLFdBQ3JEO0lBQ0EsTUFBTSxnQkFBZ0IsUUFBUSxJQUFJLGlCQUFpQjtBQUNuRCxTQUFLLEtBQUssZ0JBQWdCLGFBQWEsS0FBSyxLQUFLLGVBQWUsbUJBQW1CLGNBQWMsR0FBRzs7QUFFdEcsNEJBQ0csUUFBUSxJQUFJLHlFQUFLLFdBQVcsVUFBVSxLQUFJLENBQUMsUUFBUSxJQUFJLHlDQUN4RCxRQUFRLElBQUksNEZBQVksV0FBVyxVQUFVLEdBQzdDO0lBQ0EsTUFBTSxrQkFBa0IsUUFBUSxJQUFJLG1CQUFtQjtBQUN2RCxTQUFLLEtBQUssa0JBQWtCLGFBQWEsS0FBSyxLQUFLLGVBQWUsbUJBQW1CLGNBQWMsR0FBRzs7QUFFeEcsUUFBSyxLQUFLLE9BQU8sS0FBSyxLQUFLLE9BQ3ZCLEdBQUcsY0FBYyxPQUFPLEtBQUssS0FBSyxLQUFLLEdBQUcsUUFBUSxJQUFJLFNBQ3RELEdBQUcsY0FBYyxPQUFPLFFBQVEsSUFBSTtXQUNqQyxHQUFHO0FBQ1YsV0FBTSxLQUFLLCtCQUErQixFQUFXOztBQUd2RCxTQUFPOztDQUdULEFBQVEsT0FBTztBQUNiLFVBQU0seUJBQXlCLEtBQUssTUFBTSxPQUFPO0FBQ2pELFVBQU0sUUFBUSxTQUFTLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRztFQUU3QyxNQUFNLGFBQWEsSUFBSSxpQkFBaUI7RUFFeEMsTUFBTSxRQUFRLEtBQUssUUFBUTtBQXVDM0IsU0FBTztHQUNMLE1BdkNnQixJQUFJLFNBQWUsV0FBUyxXQUFXOztBQUN2RCxRQUFJLEtBQUssUUFBUSxZQUFZLEtBQUssUUFBUSxhQUN4QyxPQUFNLElBQUksTUFDUiwrREFDRDtJQUlILE1BQU0sZUFBZSxNQURuQixRQUFRLElBQUksVUFBVSxLQUFLLFFBQVEsV0FBVyxVQUFVLFVBQ3RCLEtBQUssTUFBTTtLQUM3QyxLQUFLO01BQUUsR0FBRyxRQUFRO01BQUssR0FBRyxLQUFLO01BQU07S0FDckMsT0FBTyxRQUFRO01BQUM7TUFBVztNQUFXO01BQU8sR0FBRztLQUNoRCxLQUFLLEtBQUssUUFBUTtLQUNsQixRQUFRLFdBQVc7S0FDcEIsQ0FBQztBQUVGLGlCQUFhLEtBQUssU0FBUyxTQUFTO0FBQ2xDLFNBQUksU0FBUyxHQUFHO0FBQ2QsY0FBTSxNQUFNLGVBQWUsS0FBSyxNQUFNLEtBQUssZ0JBQWdCO0FBQzNELGlCQUFTO1dBRVQsd0JBQU8sSUFBSSxNQUFNLCtCQUErQixPQUFPLENBQUM7TUFFMUQ7QUFFRixpQkFBYSxLQUFLLFVBQVUsTUFBTTtBQUNoQyxZQUFPLElBQUksTUFBTSw0QkFBNEIsRUFBRSxXQUFXLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQztNQUN4RTtBQUdGLHlDQUFhLDRFQUFRLEdBQUcsU0FBUyxTQUFTO0tBQ3hDLE1BQU0sU0FBUyxLQUFLLFVBQVU7QUFDOUIsYUFBUSxNQUFNLE9BQU87QUFDckIsU0FBSSw4QkFBOEIsS0FBSyxPQUFPLENBQzVDLE1BQUssV0FBVyxDQUFDLFlBQVksR0FBRztNQUVsQztLQUNGLENBR2dCLFdBQVcsS0FBSyxXQUFXLENBQUM7R0FDNUMsYUFBYSxXQUFXLE9BQU87R0FDaEM7O0NBR0gsQUFBUSxhQUFhO0VBQ25CLElBQUksTUFBTTtBQUNWLE1BQUksS0FBSyxRQUFRLE1BQ2YsS0FBSSxRQUFRLElBQUksR0FDZCxTQUFNLEtBQUssZ0RBQWdEO09BQ3REO0FBQ0wsV0FBTSxVQUFVLGNBQWM7QUFDOUIseUJBQXNCLGVBQWUsUUFBUTtBQUs3QyxRQUFLLEtBQUssS0FDUixTQUNBLFNBQ0EsTUFDQSxrQkFDQSxNQUNBLEtBQUssVUFDTCxNQUNBLFNBQ0EsUUFDRDtBQUNELFNBQU07O0FBSVYsTUFBSSxLQUFLLFFBQVEsYUFDZixLQUFJLEtBQUssT0FBTyxhQUFhLFFBQzNCLEtBQUksUUFBUSxhQUFhLFFBQ3ZCLFNBQU0sS0FDSiw0RkFDRDtPQUNJO0FBRUwsV0FBTSxVQUFVLGFBQWE7QUFDN0IseUJBQXNCLGNBQWMsT0FBTztBQUMzQyxRQUFLLEtBQUssS0FBSyxRQUFRLFFBQVE7QUFDL0IsT0FBSSxLQUFLLE9BQU8sU0FBUyxPQUN2QixNQUFLLEtBQUssWUFBWTtBQUV4QixTQUFNOztXQUlOLEtBQUssT0FBTyxhQUFhLFdBQ3pCLFFBQVEsYUFBYSxXQUNyQixLQUFLLE9BQU8sU0FBUyxRQUFRLFNBQzVCLFNBQVUsS0FBb0I7O0FBSzdCLFVBQU8sNkJBRkwsUUFBUSxxRkFBUSxXQUFXLCtFQUFFLDBFQUFRLHVCQUNKLFFBQVE7S0FFMUMsS0FBSyxPQUFPLElBQUksQ0FFbkIsU0FBTSxLQUNKLDBGQUNEO1dBRUQsS0FBSyxPQUFPLGFBQWEsWUFDekIsUUFBUSxhQUFhLFNBRXJCLFNBQU0sS0FDSiw0RkFDRDtPQUNJO0FBRUwsV0FBTSxVQUFVLGlCQUFpQjtBQUNqQyx5QkFBc0Isa0JBQWtCLFdBQVc7QUFDbkQsUUFBSyxLQUFLLEtBQUssV0FBVztBQUMxQixTQUFNOztBQUtaLE1BQUksQ0FBQyxJQUNILE1BQUssS0FBSyxLQUFLLFFBQVE7QUFFekIsU0FBTzs7Q0FHVCxBQUFRLGFBQWE7RUFDbkIsTUFBTSxPQUFPLEVBQUU7QUFFZixNQUFJLEtBQUssUUFBUSxRQUNmLE1BQUssS0FBSyxhQUFhLEtBQUssUUFBUSxRQUFRO0FBRzlDLE1BQUksS0FBSyxRQUNQLE1BQUssS0FBSyxTQUFTLEtBQUssUUFBUTtBQUdsQyxNQUFJLEtBQUssUUFBUTtBQUNmLFdBQU0sc0JBQXNCO0FBQzVCLFdBQU0sUUFBUSxLQUFLO0FBQ25CLFFBQUssS0FBSyxLQUFLLEdBQUcsS0FBSzs7QUFHekIsU0FBTzs7Q0FHVCxBQUFRLFlBQVk7QUFDbEIsVUFBTSw0QkFBNEI7QUFDbEMsVUFBTSxRQUFRLEtBQUssT0FBTyxPQUFPO0FBRWpDLE9BQUssS0FBSyxLQUFLLFlBQVksS0FBSyxPQUFPLE9BQU87QUFFOUMsU0FBTzs7Q0FHVCxBQUFRLFVBQVU7O0FBRWhCLE1BQUksS0FBSyxlQUFlO0FBQ3RCLFFBQUssS0FBSywyQkFDUixLQUFLLG1DQUFtQztBQUMxQyxRQUFLLGtCQUFrQixLQUFLLEtBQUsseUJBQXlCOztFQUk1RCxJQUFJLFlBQ0YsUUFBUSxJQUFJLGFBQWEsUUFBUSxJQUFJLHlCQUF5QjtBQUVoRSwyQkFDRSxLQUFLLE9BQU8seUVBQUssU0FBUyxPQUFPLEtBQ2pDLENBQUMsVUFBVSxTQUFTLDZCQUE2QixDQUVqRCxjQUFhO0FBR2YsTUFBSSxLQUFLLFFBQVEsU0FBUyxDQUFDLFVBQVUsU0FBUyxjQUFjLENBQzFELGNBQWE7QUFHZixNQUFJLFVBQVUsT0FDWixNQUFLLEtBQUssWUFBWTtFQUt4QixNQUFNLFNBQVMsS0FBSyxRQUFRLGVBQ3hCLEtBQUssSUFDTCxnQkFBZ0IsS0FBSyxPQUFPLE9BQU87RUFLdkMsTUFBTSxZQUFZLGdCQUFnQixlQUNoQyxLQUFLLE9BQU8sT0FDYixDQUFDO0FBQ0YsTUFBSSxVQUFVLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxLQUFLLEtBQUssV0FDbEQsTUFBSyxLQUFLLGFBQWE7QUFHekIsTUFBSSxLQUFLLE9BQU8sYUFBYSxVQUMzQixNQUFLLGVBQWU7QUFHdEIsTUFBSSxLQUFLLE9BQU8sYUFBYSxPQUMzQixNQUFLLFlBQVk7QUFHbkIsTUFBSSxLQUFLLE9BQU8sYUFBYSxjQUMzQixNQUFLLG1CQUFtQjtBQUcxQixVQUFNLGFBQWE7QUFDbkIsU0FBTyxRQUFRLEtBQUssS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE9BQU87QUFDNUMsV0FBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLElBQUk7SUFDMUI7QUFFRixTQUFPOztDQUdULEFBQVEsa0JBQWtCLGtCQUEwQjtBQUVsRCxPQUFLLFNBQVMsU0FBUyxTQUFTLFVBQVU7QUFDeEMsT0FDRSxNQUFNLGFBQWEsTUFBTSxNQUFNLEVBQUUsU0FBUyxjQUFjLElBQ3hELENBQUMsV0FBVyxLQUFLLGtCQUFrQixNQUFNLEtBQUssQ0FBQyxDQUUvQyxNQUFLLEtBQ0gsb0JBQW9CLE1BQU0sS0FBSyxRQUFRLE1BQU0sSUFBSSxDQUFDLGFBQWEsTUFDN0QsS0FBSyxLQUFLLENBQUMsVUFBVTtJQUUzQjs7Q0FHSixBQUFRLGdCQUFnQjtFQUN0QixNQUFNLEVBQUUsNEJBQTRCLFFBQVE7QUFDNUMsTUFBSSxDQUFDLHdCQUNILFNBQU0sS0FDSixHQUFHLE9BQU8sSUFDUiwwQkFDRCxDQUFDLGtDQUNIO0FBSUgsTUFBSSxRQUFRLGFBQWEsVUFDdkI7RUFHRixNQUFNLGFBQWEsS0FBSyxPQUFPLFNBQVMsUUFBUSxXQUFXO0VBQzNELE1BQU0saUJBQ0osS0FBSyxPQUFPLFNBQVMsUUFBUSxrQkFBa0I7RUFDakQsTUFBTSxlQUNKLFFBQVEsYUFBYSxXQUNqQixXQUNBLFFBQVEsYUFBYSxVQUNuQixZQUNBO0FBQ1IsU0FBTyxPQUFPLEtBQUssTUFBTTtHQUN2QiwyQ0FBMkMsR0FBRyx3QkFBd0IsNEJBQTRCLGFBQWEsY0FBYyxXQUFXO0dBQ3hJLDZDQUE2QyxHQUFHLHdCQUF3Qiw0QkFBNEIsYUFBYSxjQUFjLFdBQVc7R0FDMUksV0FBVyxHQUFHLHdCQUF3Qiw0QkFBNEIsYUFBYSxjQUFjLFdBQVcsU0FBUyxlQUFlO0dBQ2hJLFlBQVksR0FBRyx3QkFBd0IsNEJBQTRCLGFBQWEsY0FBYyxXQUFXLFNBQVMsZUFBZTtHQUNqSSxXQUFXLEdBQUcsd0JBQXdCLDRCQUE0QixhQUFhO0dBQy9FLGVBQWUsR0FBRyx3QkFBd0IsNEJBQTRCLGFBQWE7R0FDbkYsYUFBYTtHQUNiLE1BQU0sR0FBRyx3QkFBd0IsNEJBQTRCLGFBQWEsYUFBYSxRQUFRLGFBQWEsVUFBVSxNQUFNLE1BQU0sUUFBUSxJQUFJO0dBQy9JLENBQUM7O0NBR0osQUFBUSxhQUFhO0VBQ25CLE1BQU0sU0FBUyxLQUNiLFFBQVEsUUFBUSxTQUFTLEVBQ3pCLE1BQ0EsT0FDQSxzQkFDRDtBQUNELE9BQUssS0FBSyxrQkFBa0I7RUFDNUIsTUFBTSxFQUFFLGtCQUFrQixRQUFRO0FBRWxDLE1BQUksaUJBQWlCLFdBQVcsY0FBYyxFQUFFO0FBQzlDLFFBQUssS0FBSyxtREFBbUQsS0FDM0QsZUFDQSxPQUNBLFVBQ0Q7QUFDRCxRQUFLLEtBQUssb0NBQW9DLEtBQzVDLGVBQ0EsT0FDQSxVQUNEO0FBQ0QsUUFBSyxLQUFLLDRDQUE0QyxLQUNwRCxlQUNBLE9BQ0EsVUFDRDtBQUNELFFBQUssS0FBSyxvQ0FBb0MsS0FDNUMsZUFDQSxPQUNBLFVBQ0Q7QUFDRCxRQUFLLGtCQUFrQixhQUFhLEtBQUssZUFBZSxPQUFPLFFBQVEsQ0FBQztBQUN4RSxRQUFLLGtCQUNILGNBQ0EsS0FBSyxlQUFlLE9BQU8sVUFBVSxDQUN0QztBQUNELFFBQUssa0JBQWtCLGFBQWEsS0FBSyxlQUFlLE9BQU8sS0FBSyxDQUFDO0FBQ3JFLFFBQUssa0JBQ0gsaUJBQ0EsS0FBSyxlQUFlLE9BQU8sU0FBUyxDQUNyQztBQUNELFFBQUssa0JBQ0gsaUJBQ0EsMENBQTBDLGNBQWMsdURBQ3pEO0FBQ0QsUUFBSyxrQkFDSCxtQkFDQSwwQ0FBMEMsY0FBYyx1REFDekQ7QUFDRCxRQUFLLGtCQUNILGtCQUNBLFlBQVksY0FBYywyQ0FDM0I7OztDQUlMLEFBQVEsb0JBQW9CO0VBQzFCLE1BQU0sRUFBRSxlQUFlLG9CQUFvQixRQUFRO0VBQ25ELE1BQU0sVUFBVSxnQkFBZ0IsR0FBRyxjQUFjLFdBQVc7QUFFNUQsTUFBSSxDQUFDLFdBQVcsUUFBUSxhQUFhLGVBQWU7QUFDbEQsV0FBTSxLQUNKLEdBQUcsT0FBTyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sT0FBTyxJQUFJLGtCQUFrQixDQUFDLGtDQUNwRTtBQUNEOztFQUVGLE1BQU0sYUFBYSxnQkFBZ0IsS0FBSyxPQUFPLE9BQU8sYUFBYSxDQUFDLFFBQVEsTUFBTSxJQUFJLENBQUM7RUFDdkYsTUFBTSxVQUFVLEdBQUcsUUFBUTtFQUMzQixNQUFNLFNBQVMsR0FBRyxRQUFRO0VBQzFCLE1BQU0sU0FBUyxHQUFHLFFBQVEsWUFBWSxLQUFLLE9BQU8sT0FBTztFQUN6RCxNQUFNLFVBQVUsR0FBRyxRQUFRLFlBQVksS0FBSyxPQUFPLE9BQU87RUFDMUQsTUFBTSxTQUFTLEdBQUcsUUFBUTtFQUMxQixNQUFNLFNBQVMsR0FBRyxRQUFRO0VBQzFCLE1BQU0sWUFBWSxHQUFHLFFBQVE7RUFDN0IsTUFBTSxjQUFjLEdBQUcsUUFBUTtFQUMvQixNQUFNLGNBQWMsR0FBRyxRQUFRO0VBQy9CLE1BQU0sU0FBUyxHQUFHLFFBQVE7RUFDMUIsTUFBTSxVQUFVLEdBQUcsUUFBUTtFQUMzQixNQUFNLFVBQVUsR0FBRyxRQUFRO0FBRTNCLE9BQUssa0JBQWtCLGlCQUFpQixRQUFRO0FBQ2hELE9BQUssa0JBQWtCLGNBQWMsb0JBQW9CO0FBQ3pELE9BQUssa0JBQWtCLFlBQVksT0FBTztBQUMxQyxPQUFLLGtCQUFrQixhQUFhLE9BQU87QUFDM0MsT0FBSyxrQkFBa0IsY0FBYyxRQUFRO0FBQzdDLE9BQUssa0JBQWtCLGFBQWEsT0FBTztBQUMzQyxPQUFLLGtCQUFrQixpQkFBaUIsUUFBUTtBQUNoRCxPQUFLLGtCQUFrQixhQUFhLE9BQU87QUFDM0MsT0FBSyxrQkFBa0IsYUFBYSxPQUFPO0FBQzNDLE9BQUssa0JBQWtCLGdCQUFnQixVQUFVO0FBQ2pELE9BQUssa0JBQWtCLGtCQUFrQixZQUFZO0FBQ3JELE9BQUssa0JBQWtCLGtCQUFrQixZQUFZO0FBQ3JELE9BQUssa0JBQWtCLGFBQWEsT0FBTztBQUMzQyxPQUFLLEtBQUssT0FBTyxHQUFHLFVBQVUsUUFBUSxhQUFhLFVBQVUsTUFBTSxNQUFNLFFBQVEsSUFBSTs7Q0FHdkYsQUFBUSxjQUFjO0VBQ3BCLE1BQU0sT0FBTyxFQUFFO0FBQ2YsTUFBSSxLQUFLLFFBQVEsZUFBZSxLQUFLLFFBQVEsa0JBQzNDLE9BQU0sSUFBSSxNQUNSLG1FQUNEO0FBRUgsTUFBSSxLQUFLLFFBQVEsWUFDZixNQUFLLEtBQUssaUJBQWlCO1dBQ2xCLEtBQUssUUFBUSxrQkFDdEIsTUFBSyxLQUFLLHdCQUF3QjtBQUVwQyxNQUFJLEtBQUssUUFBUSxTQUNmLE1BQUssS0FBSyxjQUFjLEdBQUcsS0FBSyxRQUFRLFNBQVM7QUFHbkQsVUFBTSx1QkFBdUI7QUFDN0IsVUFBTSxRQUFRLEtBQUs7QUFDbkIsT0FBSyxLQUFLLEtBQUssR0FBRyxLQUFLO0FBRXZCLFNBQU87O0NBR1QsQUFBUSxnQkFBZ0I7O0FBQ3RCLE1BQUksS0FBSyxRQUFRLFFBQ2YsTUFBSyxLQUFLLEtBQUssWUFBWTtBQUc3QixNQUFJLEtBQUssUUFBUSxRQUNmLE1BQUssS0FBSyxLQUFLLFlBQVk7QUFHN0IsTUFBSSxLQUFLLFFBQVEsVUFDZixNQUFLLEtBQUssS0FBSyxnQkFBZ0IsS0FBSyxRQUFRLFVBQVU7QUFHeEQsTUFBSSxLQUFLLFFBQVEsUUFDZixNQUFLLEtBQUssS0FBSyxhQUFhLEtBQUssUUFBUSxRQUFRO0FBR25ELE1BQUksS0FBSyxRQUFRLGFBQ2YsTUFBSyxLQUFLLEtBQUssbUJBQW1CLEtBQUssUUFBUSxhQUFhO0FBRzlELCtCQUFJLEtBQUssUUFBUSw0RkFBYyxPQUM3QixNQUFLLEtBQUssS0FBSyxHQUFHLEtBQUssUUFBUSxhQUFhO0FBRzlDLFNBQU87O0NBR1QsQUFBUSxvQ0FBb0M7RUFDMUMsSUFBSSxTQUFTLEtBQ1gsS0FBSyxXQUNMLFdBQ0EsR0FBRyxLQUFLLE1BQU0sS0FBSyxHQUFHLFdBQVcsU0FBUyxDQUN2QyxPQUFPLEtBQUssTUFBTSxjQUFjLENBQ2hDLE9BQU8sWUFBWSxDQUNuQixPQUFPLE1BQU0sQ0FDYixVQUFVLEdBQUcsRUFBRSxHQUNuQjtBQUVELE1BQUksQ0FBQyxLQUFLLFFBQVEsVUFBVTtBQUMxQixVQUFPLFFBQVE7SUFBRSxXQUFXO0lBQU0sT0FBTztJQUFNLENBQUM7QUFDaEQsYUFBVSxJQUFJLEtBQUssS0FBSzs7QUFHMUIsYUFBVyxRQUFRLEVBQUUsV0FBVyxNQUFNLENBQUM7QUFFdkMsU0FBTzs7Q0FHVCxNQUFjLFlBQVk7QUFDeEIsTUFBSTtBQUNGLFdBQU0sa0NBQWtDO0FBQ3hDLFdBQU0sUUFBUSxLQUFLLFVBQVU7QUFDN0IsU0FBTSxXQUFXLEtBQUssV0FBVyxFQUFFLFdBQVcsTUFBTSxDQUFDO0FBQ3JELFdBQU0sMkJBQTJCO1dBQzFCLEdBQUc7QUFDVixTQUFNLElBQUksTUFBTSxxQ0FBcUMsS0FBSyxhQUFhLEVBQ3JFLE9BQU8sR0FDUixDQUFDOztFQUdKLE1BQU0saUJBQWlCLE1BQU0sS0FBSyxjQUFjO0FBR2hELE1BQUksS0FBSyxZQUFZO0dBQ25CLE1BQU0sU0FBUyxNQUFNLEtBQUssaUJBQWlCO0dBQzNDLE1BQU0sV0FBVyxNQUFNLEtBQUssZUFBZSxPQUFPO0dBQ2xELE1BQU0scUJBQXFCLE1BQU0sS0FBSyxpQkFDcEMsZ0JBQ0EsT0FDRDtBQUNELE9BQUksU0FDRixNQUFLLFFBQVEsS0FBSyxTQUFTO0FBRTdCLE9BQUksbUJBQ0YsTUFBSyxRQUFRLEtBQUssR0FBRyxtQkFBbUI7O0FBSTVDLFNBQU8sS0FBSzs7Q0FHZCxNQUFjLGVBQWU7RUFDM0IsTUFBTSxDQUFDLFNBQVMsVUFBVSxrQkFBa0IsS0FBSyxrQkFBa0I7QUFDbkUsTUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUNmO0VBR0YsTUFBTSxVQUNKLEtBQUssUUFBUSxZQUFZLEtBQUssUUFBUSxVQUFVLFlBQVk7RUFDOUQsTUFBTSxNQUFNLEtBQUssS0FBSyxXQUFXLEtBQUssT0FBTyxRQUFRLFNBQVMsUUFBUTtBQUN0RSxVQUFNLHdCQUF3QixJQUFJLEdBQUc7RUFDckMsTUFBTSxPQUFPLEtBQUssS0FBSyxXQUFXLFNBQVM7RUFDM0MsTUFBTSxTQUFTLEtBQUssU0FBUyxRQUFRO0FBRXJDLE1BQUk7QUFDRixPQUFJLE1BQU0sV0FBVyxLQUFLLEVBQUU7QUFDMUIsWUFBTSxzQ0FBc0M7QUFDNUMsVUFBTSxZQUFZLEtBQUs7O0FBRXpCLFdBQU0sb0JBQW9CO0FBQzFCLFdBQU0sUUFBUSxLQUFLO0FBQ25CLE9BQUksUUFBUTtJQUNWLE1BQU0sRUFBRSxpQkFBaUIsTUFBTSxPQUFPO0FBQ3RDLFlBQU0sNkJBQTZCO0FBQ25DLFFBQUk7S0FRRixNQUFNLGtCQVBrQixJQUFJLGNBQWMsQ0FDdkMsY0FBYyxLQUFLLENBQ25CLG9CQUFvQixLQUFLLENBQ3pCLHlCQUF5QixLQUFLLENBQzlCLHNCQUFzQixLQUFLLENBQzNCLGVBQWUsTUFBTSxDQUNyQixNQUFNLE1BQU0sY0FBYyxJQUFJLENBQUMsQ0FDTSxTQUFTLEtBQUs7QUFDdEQsV0FBTSxlQUNKLEtBQUssUUFBUSxXQUFXLGNBQWMsRUFDdEMsZ0JBQ0Q7QUFDRCxhQUFNLCtCQUErQjtBQVVyQyxXQUFNLGVBQWUsTUFUSyxJQUFJLGNBQWMsQ0FDekMsY0FBYyxNQUFNLENBQ3BCLG9CQUFvQixNQUFNLENBQzFCLHlCQUF5QixNQUFNLENBQy9CLHNCQUFzQixNQUFNLENBQzVCLGVBQWUsTUFBTSxDQUNyQixtQkFBbUIsTUFBTSxDQUN6QixNQUFNLGdCQUFnQixDQUNtQixTQUFTLE1BQU0sQ0FDZDthQUN0QyxHQUFHO0FBQ1YsYUFBTSxLQUNKLHlDQUEwQyxFQUFVLFdBQVcsSUFDaEU7QUFDRCxXQUFNLGNBQWMsS0FBSyxLQUFLOztTQUdoQyxPQUFNLGNBQWMsS0FBSyxLQUFLO0FBRWhDLFFBQUssUUFBUSxLQUFLO0lBQ2hCLE1BQU0sS0FBSyxTQUFTLFFBQVEsR0FBRyxTQUFTLFNBQVMsU0FBUztJQUMxRCxNQUFNO0lBQ1AsQ0FBQztBQUNGLFVBQU8saUJBQWlCLEtBQUssS0FBSyxXQUFXLGVBQWUsR0FBRztXQUN4RCxHQUFHO0FBQ1YsU0FBTSxJQUFJLE1BQU0sMkJBQTJCLEVBQUUsT0FBTyxHQUFHLENBQUM7OztDQUk1RCxBQUFRLG1CQUFtQjtBQUN6QixNQUFJLEtBQUssWUFBWTtHQUNuQixNQUFNLFNBQVMsS0FBSyxXQUFXLFFBQVEsTUFBTSxJQUFJO0dBQ2pELE1BQU0sYUFBYSxLQUFLLE9BQU8sUUFBUSxNQUFNLE1BQU0sRUFBRSxhQUFhLE9BQU87R0FFekUsTUFBTSxVQUNKLEtBQUssT0FBTyxhQUFhLFdBQ3JCLE1BQU0sT0FBTyxVQUNiLEtBQUssT0FBTyxhQUFhLFVBQ3ZCLEdBQUcsT0FBTyxRQUNWLEtBQUssT0FBTyxhQUFhLFVBQVUsS0FBSyxPQUFPLGFBQWEsU0FDMUQsR0FBRyxPQUFPLFNBQ1YsTUFBTSxPQUFPO0dBRXZCLElBQUksV0FBVyxLQUFLLE9BQU87QUFJM0IsT0FBSSxLQUFLLFFBQVEsU0FDZixhQUFZLElBQUksS0FBSyxPQUFPO0FBRTlCLE9BQUksUUFBUSxTQUFTLFFBQVEsQ0FDM0IsYUFBWTtPQUVaLGFBQVk7QUFHZCxVQUFPO0lBQ0w7SUFDQTtJQUNBLGFBQ0ksR0FBRyxLQUFLLE9BQU8sV0FBVyxHQUFHLFdBQVcsZ0JBQWdCLFNBQ3hEO0lBQ0w7YUFDUSxLQUFLLFNBQVM7R0FDdkIsTUFBTSxVQUNKLEtBQUssT0FBTyxhQUFhLFVBQVUsR0FBRyxLQUFLLFFBQVEsUUFBUSxLQUFLO0FBRWxFLFVBQU8sQ0FBQyxTQUFTLFFBQVE7O0FBRzNCLFNBQU8sRUFBRTs7Q0FHWCxNQUFjLGtCQUFrQjtFQUM5QixNQUFNLGFBQWEsS0FBSyxLQUFLO0FBQzdCLE1BQUksQ0FBQyxLQUFLLGNBQ1IsUUFBTyxFQUFFO0VBR1gsTUFBTSxFQUFFLFNBQVMsUUFBUSxNQUFNLGdCQUFnQjtHQUM3QztHQUNBLGFBQWEsS0FBSyxRQUFRO0dBQzFCLFdBQVcsS0FBSyxRQUFRO0dBQ3hCLGlCQUFpQixLQUFLLE9BQU87R0FDN0IscUJBQXFCLEtBQUssT0FBTztHQUNqQyxXQUFXLEtBQUssUUFBUSxhQUFhLEtBQUssT0FBTztHQUNqRCxLQUFLLEtBQUssUUFBUTtHQUNuQixDQUFDO0VBRUYsTUFBTSxPQUFPLEtBQUssS0FBSyxXQUFXLEtBQUssUUFBUSxPQUFPLGFBQWE7QUFFbkUsTUFBSTtBQUNGLFdBQU0sdUJBQXVCO0FBQzdCLFdBQU0sUUFBUSxLQUFLO0FBQ25CLFNBQU0sZUFBZSxNQUFNLEtBQUssUUFBUTtXQUNqQyxHQUFHO0FBQ1YsV0FBTSxNQUFNLGdDQUFnQztBQUM1QyxXQUFNLE1BQU0sRUFBVzs7QUFHekIsTUFBSSxRQUFRLFNBQVMsR0FBRztHQUN0QixNQUFNQyxTQUFPLEtBQUssS0FBSyxXQUFXLEtBQUssUUFBUSxPQUFPLGFBQWE7QUFDbkUsUUFBSyxRQUFRLEtBQUs7SUFBRSxNQUFNO0lBQU8sTUFBTUE7SUFBTSxDQUFDOztBQUdoRCxTQUFPOztDQUdULE1BQWMsZUFBZSxRQUFrQjtBQUM3QyxTQUFPLGVBQWU7R0FDcEIsVUFBVSxLQUFLLFFBQVE7R0FDdkIsYUFBYSxLQUFLLFFBQVE7R0FDMUI7R0FDQSxXQUFXLEtBQUssUUFBUTtHQUN4QixLQUFLLEtBQUssUUFBUTtHQUNsQixZQUFZLEtBQUssT0FBTztHQUN4QixhQUFhLEtBQUssUUFBUSxpQkFBaUIsS0FBSyxPQUFPO0dBQ3ZELFNBQVMsUUFBUSxJQUFJLG1CQUFtQixLQUFLLE9BQU8sWUFBWTtHQUNoRSxXQUFXLEtBQUs7R0FDakIsQ0FBQzs7Q0FHSixNQUFjLGlCQUNaLGNBQ0EsUUFDQTtBQUNBLE1BQUksY0FBYzs7R0FDaEIsTUFBTSxFQUFFLE1BQU0sZUFBUSxNQUFNLGFBQWE7R0FDekMsTUFBTSxjQUFjLEtBQUtDLE9BQUssR0FBRyxLQUFLLE9BQU8sV0FBVyxXQUFXO0dBQ25FLE1BQU0scUJBQXFCLEtBQ3pCQSxPQUNBLEdBQUcsS0FBSyxPQUFPLFdBQVcsa0JBQzNCO0dBQ0QsTUFBTSxhQUFhLEtBQUtBLE9BQUssa0JBQWtCO0dBQy9DLE1BQU0sb0JBQW9CLEtBQUtBLE9BQUssMEJBQTBCO0dBQzlELE1BQU0sbUJBQW1CLEtBQUtBLE9BQUssYUFBYTtHQUNoRCxNQUFNLGNBQ0osNENBQ0EsT0FDRyxLQUNFLFVBQ0Msa0JBQWtCLE1BQU0sMEJBQTBCLFFBQ3JELENBQ0EsS0FBSyxLQUFLO0FBQ2YsU0FBTSxlQUNKLGFBQ0Esa0JBQ0UsTUFDQSxLQUFLLE9BQU8sa0NBQ1osS0FBSyxPQUFPLDRFQUFNLHFDQUNsQixLQUFLLE9BQU8sOEVBQU0sY0FDbkIsR0FDQyxjQUNBLE1BQ0YsT0FDRDtBQUNELFNBQU0sZUFDSixvQkFDQSx5QkFDRSw0QkFDQSxLQUFLLE9BQU8sOEVBQU0scUNBQ2xCLEtBQUssT0FBTyw4RUFBTSxxQ0FDbEIsS0FBSyxPQUFPLDRGQUFNLGlGQUFTLDBCQUMzQixLQUFLLE9BQU8sNEZBQU0saUZBQVMsaUNBQzNCLEtBQUssT0FBTyw0RkFBTSxpRkFBUyxPQUM1QixHQUNDLDBDQUNBLE9BQ0csS0FDRSxVQUNDLGdCQUFnQixNQUFNLDBCQUEwQixRQUNuRCxDQUNBLEtBQUssS0FBSyxHQUNiLE1BQ0YsT0FDRDtBQUNELFNBQU0sZUFBZSxZQUFZLHNCQUFzQixPQUFPO0FBQzlELFNBQU0sZUFDSixtQkFDQSxzREFBK0IsS0FBSyxPQUFPLDRGQUFNLGlGQUFTLE9BQU0sTUFBTSxFQUN0RSxPQUNEO0FBQ0QsU0FBTSxlQUNKLGtCQUNBLGtCQUFrQixLQUFLLE9BQU8sWUFBWSxpQkFDM0M7QUFDRCxVQUFPO0lBQ0w7S0FBRSxNQUFNO0tBQU0sTUFBTTtLQUFhO0lBQ2pDO0tBQUUsTUFBTTtLQUFNLE1BQU07S0FBb0I7SUFDeEM7S0FBRSxNQUFNO0tBQU0sTUFBTTtLQUFZO0lBQ2hDO0tBQUUsTUFBTTtLQUFNLE1BQU07S0FBbUI7SUFDdkM7S0FBRSxNQUFNO0tBQU0sTUFBTTtLQUFrQjtJQUN2Qzs7QUFFSCxTQUFPLEVBQUU7O0NBR1gsQUFBUSxrQkFBa0IsS0FBYSxTQUFlO0FBQ3BELE1BQUksQ0FBQyxRQUFRLElBQUksS0FDZixNQUFLLEtBQUssT0FBT0M7OztBQWlCdkIsZUFBc0IsZUFDcEIsU0FDNkI7QUFDN0IsS0FDRSxDQUFDLFFBQVEsWUFFVCxRQUFRLGVBQ1IsUUFBUSxPQUFPLFdBQVcsRUFFMUI7Q0FHRixNQUFNLE9BQU8sUUFBUSxhQUFhO0NBR2xDLE1BQU0sV0FEZ0IsUUFBUSxNQUFNLG1CQUFtQixrQkFFckQsUUFBUSxZQUNSLFFBQVEsYUFDUixRQUFRLFFBRVIsUUFBUSxRQUNUO0FBRUQsS0FBSTtFQUNGLE1BQU0sT0FBTyxLQUFLLFFBQVEsV0FBVyxLQUFLO0FBQzFDLFVBQU0seUJBQXlCO0FBQy9CLFVBQU0sUUFBUSxLQUFLO0FBQ25CLFFBQU0sZUFBZSxNQUFNLFNBQVMsUUFBUTtBQUM1QyxTQUFPO0dBQUUsTUFBTTtHQUFNLE1BQU07R0FBTTtVQUMxQixHQUFHO0FBQ1YsUUFBTSxJQUFJLE1BQU0sbUNBQW1DLEVBQUUsT0FBTyxHQUFHLENBQUM7OztBQWVwRSxlQUFzQixnQkFDcEIsU0FDNkM7QUFDN0MsS0FBSSxDQUFFLE1BQU0sZUFBZSxRQUFRLFdBQVcsQ0FDNUMsUUFBTztFQUFFLFNBQVMsRUFBRTtFQUFFLEtBQUs7RUFBSTtDQUdqQyxJQUFJLFNBQVM7Q0FDYixJQUFJLE1BQU07Q0FDVixJQUFJQyxVQUFvQixFQUFFO0FBRTFCLEtBQUksQ0FBQyxRQUFRLGFBQWE7RUFDeEIsTUFBTSxZQUFZLFFBQVEsYUFBYSxRQUFRO0FBRS9DLE1BQUksUUFBUSxvQkFDVixLQUFJO0FBQ0YsWUFBUyxNQUFNLGNBQ2IsS0FBSyxRQUFRLEtBQUssUUFBUSxvQkFBb0IsRUFDOUMsUUFDRDtXQUNNLEdBQUc7QUFDVixXQUFNLEtBQ0osa0NBQWtDLFFBQVEsdUJBQzFDLEVBQ0Q7O1dBRU0sVUFDVCxVQUFTO01BRVQsVUFBUzs7Q0FJYixNQUFNLFFBQVEsTUFBTSxhQUFhLFFBQVEsWUFBWSxFQUFFLGVBQWUsTUFBTSxDQUFDO0FBRTdFLEtBQUksQ0FBQyxNQUFNLFFBQVE7QUFDakIsVUFBTSxxREFBcUQ7QUFDM0QsU0FBTztHQUFFLFNBQVMsRUFBRTtHQUFFLEtBQUs7R0FBSTs7QUFHakMsTUFBSyxNQUFNLFFBQVEsT0FBTztBQUN4QixNQUFJLENBQUMsS0FBSyxRQUFRLENBQ2hCO0VBR0YsTUFBTSxFQUFFLEtBQUssU0FBUyxTQUFTLGdCQUFnQixNQUFNLGVBQ25ELEtBQUssUUFBUSxZQUFZLEtBQUssS0FBSyxFQUNuQyxRQUFRLGFBQWEsS0FDdEI7QUFFRCxTQUFPO0FBQ1AsVUFBUSxLQUFLLEdBQUcsWUFBWTs7QUFHOUIsS0FBSSxJQUFJLFFBQVEsa0JBQWtCLEdBQUcsR0FDbkMsV0FBVTs7Ozs7Ozs7QUFVWixLQUFJLElBQUksUUFBUSxhQUFhLEdBQUcsR0FDOUIsV0FBVTs7O0FBS1osT0FBTSxTQUFTO0FBRWYsUUFBTztFQUNMO0VBQ0E7RUFDRDs7Ozs7QUM5bUNILElBQXNCLDJCQUF0QixjQUF1RCxRQUFRO0NBQzdELE9BQU8sUUFBUSxDQUFDLENBQUMsa0JBQWtCLENBQUM7Q0FFcEMsT0FBTyxRQUFRLFFBQVEsTUFBTSxFQUMzQixhQUFhLG1EQUNkLENBQUM7Q0FFRixNQUFNLE9BQU8sT0FBTyxTQUFTLFFBQVEsS0FBSyxFQUFFLEVBQzFDLGFBQ0Usc0hBQ0gsQ0FBQztDQUVGLGFBQXNCLE9BQU8sT0FBTyxvQkFBb0IsRUFDdEQsYUFBYSxtQ0FDZCxDQUFDO0NBRUYsa0JBQWtCLE9BQU8sT0FBTyx1QkFBdUIsZ0JBQWdCLEVBQ3JFLGFBQWEsMEJBQ2QsQ0FBQztDQUVGLFNBQVMsT0FBTyxPQUFPLGFBQWEsT0FBTyxFQUN6QyxhQUFhLGlEQUNkLENBQUM7Q0FFRixTQUFTLE9BQU8sUUFBUSxhQUFhLE9BQU8sRUFDMUMsYUFBYSx3Q0FDZCxDQUFDO0NBRUYsYUFBYTtBQUNYLFNBQU87R0FDTCxLQUFLLEtBQUs7R0FDVixZQUFZLEtBQUs7R0FDakIsaUJBQWlCLEtBQUs7R0FDdEIsUUFBUSxLQUFLO0dBQ2IsUUFBUSxLQUFLO0dBQ2Q7OztBQXNDTCxTQUFnQixpQ0FDZCxTQUNBO0FBQ0EsUUFBTztFQUNMLEtBQUssUUFBUSxLQUFLO0VBQ2xCLGlCQUFpQjtFQUNqQixRQUFRO0VBQ1IsUUFBUTtFQUNSLEdBQUc7RUFDSjs7Ozs7QUNwRUgsTUFBTUMsVUFBUSxhQUFhLGtCQUFrQjtBQU03QyxlQUFzQixjQUFjLGFBQW1DO0NBQ3JFLE1BQU0sVUFBVSxpQ0FBaUMsWUFBWTtDQUU3RCxlQUFlQyxhQUFXLE9BQWE7QUFDckMsVUFBTSx5QkFBeUJDLE1BQUk7QUFDbkMsTUFBSSxRQUFRLE9BQ1Y7QUFHRixRQUFNQyxXQUFjRCxPQUFLLEVBQ3ZCLFdBQVcsTUFDWixDQUFDOztDQUdKLGVBQWVFLGlCQUFlLE1BQWMsU0FBaUI7QUFDM0QsVUFBTSxtQkFBbUIsS0FBSztBQUU5QixNQUFJLFFBQVEsUUFBUTtBQUNsQixXQUFNLFFBQVE7QUFDZDs7QUFHRixRQUFNQyxlQUFrQixNQUFNLFFBQVE7O0NBR3hDLE1BQU0sa0JBQWtCLFFBQVEsUUFBUSxLQUFLLFFBQVEsZ0JBQWdCO0NBQ3JFLE1BQU0sVUFBVSxRQUFRLFFBQVEsS0FBSyxRQUFRLE9BQU87QUFFcEQsU0FBTSxzQkFBc0IsUUFBUSxjQUFjLGdCQUFnQixHQUFHO0NBRXJFLE1BQU0sRUFBRSxTQUFTLFlBQVksYUFBYSxnQkFDeEMsTUFBTSxlQUNKLGlCQUNBLFFBQVEsYUFBYSxRQUFRLFFBQVEsS0FBSyxRQUFRLFdBQVcsR0FBRyxPQUNqRTtBQUVILE1BQUssTUFBTSxVQUFVLFNBQVM7RUFDNUIsTUFBTSxZQUFZLEtBQUssU0FBUyxHQUFHLE9BQU8sa0JBQWtCO0FBQzVELFFBQU1KLGFBQVcsVUFBVTtFQUUzQixNQUFNLGlCQUNKLE9BQU8sU0FBUyxXQUNaLEdBQUcsV0FBVyxHQUFHLE9BQU8sZ0JBQWdCLFNBQ3hDLEdBQUcsV0FBVyxHQUFHLE9BQU8sZ0JBQWdCO0VBQzlDLE1BQU1LLG9CQUE2QztHQUNqRCxNQUFNLEdBQUcsWUFBWSxHQUFHLE9BQU87R0FDL0IsU0FBUyxZQUFZO0dBQ3JCLEtBQUssT0FBTyxTQUFTLGNBQWMsQ0FBQyxPQUFPLEtBQUssR0FBRztHQUNuRCxNQUFNO0dBQ04sT0FBTyxDQUFDLGVBQWU7R0FDdkIsR0FBR0MsT0FDRCxhQUNBLGVBQ0EsWUFDQSxVQUNBLFdBQ0EsWUFDQSxXQUNBLFdBQ0EsY0FDQSxPQUNEO0dBQ0Y7QUFDRCxNQUFJLFlBQVksY0FDZCxtQkFBa0IsZ0JBQWdCQSxPQUNoQyxZQUFZLGVBQ1osWUFDQSxTQUNEO0FBRUgsTUFBSSxPQUFPLFNBQVMsU0FDbEIsbUJBQWtCLEtBQUssQ0FBQyxPQUFPLFNBQVM7T0FDbkM7O0dBQ0wsTUFBTSxRQUFRLEdBQUcsV0FBVztBQUM1QixxQkFBa0IsT0FBTztBQUN6QixxQkFBa0IsVUFBVSxHQUFHLFdBQVc7QUFDMUMsOENBQWtCLDZFQUFPLEtBQ3ZCLE9BQ0Esa0JBQWtCLFNBQ2xCLG1CQUNBLDBCQUNEO0dBQ0QsSUFBSSwwQkFBMEI7QUFDOUIsZ0NBQUksa0JBQWtCLHVGQUFTLEtBQzdCLEtBQUk7SUFDRixNQUFNLEVBQUUsVUFBVUMsUUFBTSxrQkFBa0IsUUFBUSxLQUFLLElBQUksRUFDekQsT0FBTyxHQUNSO0FBQ0QsUUFBSSxTQUFTLEdBQ1gsMkJBQTBCO1dBRXRCO0FBSVYsT0FBSSx3QkFDRixtQkFBa0IsVUFBVSxFQUMxQixNQUFNLFlBQ1A7R0FFSCxNQUFNLGNBQWMsTUFBTSxNQUN4QixtREFDRCxDQUFDLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBeUI7QUFDbkQscUJBQWtCLGVBQWUsRUFDL0IseUJBQXlCLElBQUksWUFBWSxhQUFhLFVBQ3ZEOztBQUdILE1BQUksT0FBTyxRQUFRLE1BQ2pCLG1CQUFrQixPQUFPLENBQUMsUUFBUTtXQUN6QixPQUFPLFFBQVEsT0FDeEIsbUJBQWtCLE9BQU8sQ0FBQyxPQUFPO0FBSW5DLFFBQU1KLGlCQURvQixLQUFLLFdBQVcsZUFBZSxFQUd2RCxLQUFLLFVBQVUsbUJBQW1CLE1BQU0sRUFBRSxHQUFHLEtBQzlDO0FBRUQsUUFBTUEsaUJBRGUsS0FBSyxXQUFXLFlBQVksRUFDZCxPQUFPLGFBQWEsT0FBTyxDQUFDO0FBRS9ELFVBQU0sS0FBSyxHQUFHLFlBQVksSUFBSSxPQUFPLGdCQUFnQixVQUFVOzs7QUFJbkUsU0FBUyxPQUFPLGFBQXFCLFFBQWdCO0FBQ25ELFFBQU8sT0FBTyxZQUFZLEdBQUcsT0FBTyxnQkFBZ0I7O2dCQUV0QyxPQUFPLE9BQU8sa0JBQWtCLFlBQVk7Ozs7OztBQ3BKNUQsSUFBc0IsaUJBQXRCLGNBQTZDLFFBQVE7Q0FDbkQsT0FBTyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUM7Q0FFeEIsT0FBTyxRQUFRLFFBQVEsTUFBTSxFQUMzQixhQUFhLHdEQUNkLENBQUM7Q0FFRixTQUFTLE9BQU8sT0FBTyxFQUFFLFVBQVUsT0FBTyxDQUFDO0NBRTNDLFNBQWtCLE9BQU8sT0FBTyxhQUFhLEVBQzNDLGFBQ0UsaUZBQ0gsQ0FBQztDQUVGLG9CQUFvQixPQUFPLE9BQU8scUJBQXFCLEtBQUs7RUFDMUQsV0FBVyxTQUFTLFVBQVU7RUFDOUIsYUFBYTtFQUNkLENBQUM7Q0FFRixpQkFBaUIsT0FBTyxPQUFPLHFCQUFxQixRQUFRLEVBQzFELGFBQWEsOERBQ2QsQ0FBQztDQUVGLFVBQVUsT0FBTyxPQUFPLGdCQUFnQixPQUFPLEVBQzdDLGFBQWEsb0NBQ2QsQ0FBQztDQUVGLFVBQVUsT0FBTyxNQUFNLGdCQUFnQixFQUFFLEVBQUUsRUFDekMsYUFBYSwrQ0FDZCxDQUFDO0NBRUYsdUJBQXVCLE9BQU8sUUFBUSw0QkFBNEIsTUFBTSxFQUN0RSxhQUFhLGtDQUNkLENBQUM7Q0FFRixtQkFBbUIsT0FBTyxRQUFRLHdCQUF3QixPQUFPLEVBQy9ELGFBQWEsOEJBQ2QsQ0FBQztDQUVGLGdCQUFnQixPQUFPLFFBQVEscUJBQXFCLE1BQU0sRUFDeEQsYUFDRSxvRkFDSCxDQUFDO0NBRUYsc0JBQXNCLE9BQU8sUUFBUSwyQkFBMkIsTUFBTSxFQUNwRSxhQUFhLDBEQUNkLENBQUM7Q0FFRixnQkFBZ0IsT0FBTyxPQUFPLG9CQUFvQixPQUFPLEVBQ3ZELGFBQ0Usb0VBQ0gsQ0FBQztDQUVGLFNBQVMsT0FBTyxRQUFRLGFBQWEsT0FBTyxFQUMxQyxhQUFhLDhDQUNkLENBQUM7Q0FFRixhQUFhO0FBQ1gsU0FBTztHQUNMLE1BQU0sS0FBSztHQUNYLE1BQU0sS0FBSztHQUNYLG1CQUFtQixLQUFLO0dBQ3hCLGdCQUFnQixLQUFLO0dBQ3JCLFNBQVMsS0FBSztHQUNkLFNBQVMsS0FBSztHQUNkLHNCQUFzQixLQUFLO0dBQzNCLGtCQUFrQixLQUFLO0dBQ3ZCLGVBQWUsS0FBSztHQUNwQixxQkFBcUIsS0FBSztHQUMxQixlQUFlLEtBQUs7R0FDcEIsUUFBUSxLQUFLO0dBQ2Q7OztBQThFTCxTQUFnQix1QkFBdUIsU0FBcUI7QUFDMUQsUUFBTztFQUNMLG1CQUFtQjtFQUNuQixnQkFBZ0I7RUFDaEIsU0FBUztFQUNULFNBQVMsRUFBRTtFQUNYLHNCQUFzQjtFQUN0QixrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLHFCQUFxQjtFQUNyQixlQUFlO0VBQ2YsUUFBUTtFQUNSLEdBQUc7RUFDSjs7Ozs7QUNuS0gsU0FBUyxTQUFTLE1BQU07QUFHdEIsUUFBTyxLQUFLLEtBQUssUUFBTTtBQUNyQixTQUFPLElBQUksV0FBVyxLQUFLLElBQUksTUFBTSxpQkFBaUIsR0FBRyxLQUFLLFVBQVUsSUFBSSxHQUFHO0dBQy9FLENBQUMsS0FBSyxJQUFJOztBQUVkLElBQU0sU0FBTixNQUFhO0NBQ1gsU0FBUztDQUNUO0NBQ0EsU0FBUyxFQUFFO0NBQ1gsa0NBQWtCLElBQUksS0FBSztDQUMzQixZQUFZLFNBQVE7QUFDbEIsT0FBSyxZQUFZOztDQUVuQixLQUFLLGFBQWEsRUFBRSxFQUFFO0FBRXBCLE9BQUssU0FBUyxNQUFLSyxZQUFhLEtBQUssVUFBVTtBQUMvQyxPQUFLLFNBQVMsTUFBS0MsT0FBUSxXQUFXO0FBQ3RDLFNBQU8sS0FBSzs7Q0FFZCxhQUFhLEtBQUssT0FBTyxFQUFFLEVBQUU7RUFDM0IsTUFBTSxNQUFNLEVBQUU7RUFDZCxNQUFNLFFBQVEsT0FBTyxLQUFLLElBQUk7RUFDOUIsTUFBTSxjQUFjLEVBQUU7RUFDdEIsTUFBTSxpQkFBaUIsRUFBRTtBQUN6QixPQUFLLE1BQU0sUUFBUSxNQUNqQixLQUFJLE1BQUtDLHFCQUFzQixJQUFJLE1BQU0sQ0FDdkMsYUFBWSxLQUFLLEtBQUs7TUFFdEIsZ0JBQWUsS0FBSyxLQUFLO0VBRzdCLE1BQU0sY0FBYyxZQUFZLE9BQU8sZUFBZTtBQUN0RCxPQUFLLE1BQU0sUUFBUSxhQUFZO0dBQzdCLE1BQU1DLFVBQVEsSUFBSTtBQUNsQixPQUFJQSxtQkFBaUIsS0FDbkIsS0FBSSxLQUFLLE1BQUtDLGdCQUFpQixDQUM3QixLQUNELEVBQUVELFFBQU0sQ0FBQztZQUNELE9BQU9BLFlBQVUsWUFBWUEsbUJBQWlCLE9BQ3ZELEtBQUksS0FBSyxNQUFLRSxlQUFnQixDQUM1QixLQUNELEVBQUVGLFFBQU0sVUFBVSxDQUFDLENBQUM7WUFDWixPQUFPQSxZQUFVLFNBQzFCLEtBQUksS0FBSyxNQUFLRyxrQkFBbUIsQ0FDL0IsS0FDRCxFQUFFSCxRQUFNLENBQUM7WUFDRCxPQUFPQSxZQUFVLFVBQzFCLEtBQUksS0FBSyxNQUFLSSxnQkFBaUIsQ0FDN0IsS0FDRCxFQUFFSixRQUFNLENBQUM7WUFDREEsbUJBQWlCLE9BQU87SUFDakMsTUFBTSxZQUFZLE1BQUtLLGVBQWdCTCxRQUFNO0FBQzdDLFFBQUksY0FBYyxpQkFDaEIsS0FBSSxLQUFLLE1BQUtNLGlCQUFrQixDQUM5QixLQUNELEVBQUVOLFFBQU0sQ0FBQzthQUNELGNBQWMsOEJBRXZCLE1BQUksSUFBSSxJQUFJLEdBQUcsSUFBSUEsUUFBTSxRQUFRLEtBQUk7QUFDbkMsU0FBSSxLQUFLLEdBQUc7QUFDWixTQUFJLEtBQUssTUFBS08sWUFBYSxDQUN6QixHQUFHLE1BQ0gsS0FDRCxDQUFDLENBQUM7QUFDSCxTQUFJLEtBQUssR0FBRyxNQUFLVixZQUFhRyxRQUFNLElBQUksQ0FDdEMsR0FBRyxNQUNILEtBQ0QsQ0FBQyxDQUFDOztTQUVBO0tBRUwsTUFBTSxNQUFNQSxRQUFNLEtBQUssTUFBSSxNQUFLUSxtQkFBb0IsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJO0FBQ2pFLFNBQUksS0FBSyxHQUFHLE1BQUtDLFlBQWEsQ0FDNUIsS0FDRCxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUc7O2NBRU4sT0FBT1QsWUFBVSxVQUFVO0FBQ3BDLFFBQUksS0FBSyxHQUFHO0FBQ1osUUFBSSxLQUFLLE1BQUtVLE9BQVEsQ0FDcEIsR0FBRyxNQUNILEtBQ0QsQ0FBQyxDQUFDO0FBQ0gsUUFBSVYsU0FBTztLQUNULE1BQU0sVUFBVUE7QUFDaEIsU0FBSSxLQUFLLEdBQUcsTUFBS0gsWUFBYSxTQUFTLENBQ3JDLEdBQUcsTUFDSCxLQUNELENBQUMsQ0FBQzs7OztBQUtULE1BQUksS0FBSyxHQUFHO0FBQ1osU0FBTzs7Q0FFVCxhQUFhLFNBQU87QUFDbEIsU0FBT0csbUJBQWlCLFFBQVFBLG1CQUFpQixVQUFVO0dBQ3pEO0dBQ0E7R0FDQTtHQUNELENBQUMsU0FBUyxPQUFPQSxRQUFNOztDQUUxQixnQkFBZ0IsS0FBSztBQUNuQixNQUFJLE1BQUtXLGVBQWdCLElBQUksSUFBSSxDQUMvQixRQUFPLE1BQUtBLGVBQWdCLElBQUksSUFBSTtFQUV0QyxNQUFNLE9BQU8sTUFBS0MsaUJBQWtCLElBQUk7QUFDeEMsUUFBS0QsZUFBZ0IsSUFBSSxLQUFLLEtBQUs7QUFDbkMsU0FBTzs7Q0FFVCxrQkFBa0IsS0FBSztBQUNyQixNQUFJLENBQUMsSUFBSSxPQUVQLFFBQU87RUFFVCxNQUFNLGdCQUFnQixNQUFLRSxZQUFhLElBQUksR0FBRztBQUMvQyxNQUFJLElBQUksY0FBYyxNQUNwQixRQUFPO0FBRVQsT0FBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksUUFBUSxJQUM3QixLQUFJLGtCQUFrQixNQUFLQSxZQUFhLElBQUksR0FBRyxJQUFJLElBQUksY0FBYyxNQUNuRSxRQUFPO0FBR1gsU0FBTyxnQkFBZ0IsbUJBQW1COztDQUU1QyxvQkFBb0IsU0FBTztBQUN6QixNQUFJYixtQkFBaUIsS0FDbkIsUUFBTyxJQUFJLE1BQUtjLFVBQVdkLFFBQU0sQ0FBQztXQUN6QixPQUFPQSxZQUFVLFlBQVlBLG1CQUFpQixPQUN2RCxRQUFPLEtBQUssVUFBVUEsUUFBTSxVQUFVLENBQUM7V0FDOUIsT0FBT0EsWUFBVSxTQUMxQixRQUFPQTtXQUNFLE9BQU9BLFlBQVUsVUFDMUIsUUFBT0EsUUFBTSxVQUFVO1dBQ2RBLG1CQUFpQixNQUUxQixRQUFPLElBREtBLFFBQU0sS0FBSyxNQUFJLE1BQUtRLG1CQUFvQixFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FDbEQ7V0FDTixPQUFPUixZQUFVLFVBQVU7QUFDcEMsT0FBSSxDQUFDQSxRQUNILE9BQU0sSUFBSSxNQUFNLHFCQUFxQjtBQVF2QyxVQUFPLElBTkssT0FBTyxLQUFLQSxRQUFNLENBQUMsS0FBSyxRQUFNO0FBQ3hDLFdBQU8sR0FBRyxTQUFTLENBQ2pCLElBQ0QsQ0FBQyxDQUFDLEtBQ0gsTUFBS1EsbUJBQW9CUixRQUFNLEtBQUs7S0FDcEMsQ0FBQyxLQUFLLElBQUksQ0FDRzs7QUFFakIsUUFBTSxJQUFJLE1BQU0scUJBQXFCOztDQUV2QyxzQkFBc0IsU0FBTztBQUMzQixTQUFPLE9BQU9BLFlBQVUsWUFBWSxPQUFPQSxZQUFVLFlBQVksT0FBT0EsWUFBVSxhQUFhQSxtQkFBaUIsVUFBVUEsbUJBQWlCLFFBQVFBLG1CQUFpQixTQUFTLE1BQUtLLGVBQWdCTCxRQUFNLEtBQUs7O0NBRS9NLFFBQVEsTUFBTTtBQUNaLFNBQU8sSUFBSSxTQUFTLEtBQUssQ0FBQzs7Q0FFNUIsYUFBYSxNQUFNO0FBQ2pCLFNBQU8sS0FBSyxTQUFTLEtBQUssQ0FBQzs7Q0FFN0IsYUFBYSxNQUFNO0VBQ2pCLE1BQU0sUUFBUSxTQUFTLEtBQUs7QUFDNUIsTUFBSSxNQUFNLFNBQVMsS0FBSyxPQUN0QixNQUFLLFNBQVMsTUFBTTtBQUV0QixTQUFPLEdBQUcsTUFBTTs7Q0FFbEIsa0JBQWtCLE1BQU0sU0FBTztBQUM3QixTQUFPLEdBQUcsTUFBS1MsWUFBYSxLQUFLLEdBQUcsS0FBSyxVQUFVVCxRQUFNOztDQUUzRCxnQkFBZ0IsTUFBTSxTQUFPO0FBQzNCLFNBQU8sR0FBRyxNQUFLUyxZQUFhLEtBQUssR0FBRyxLQUFLLFVBQVVULFFBQU07O0NBRTNELG1CQUFtQixNQUFNLFNBQU87QUFDOUIsTUFBSSxPQUFPLE1BQU1BLFFBQU0sQ0FDckIsUUFBTyxHQUFHLE1BQUtTLFlBQWEsS0FBSyxDQUFDO0FBRXBDLFVBQU9ULFNBQVA7R0FDRSxLQUFLLFNBQ0gsUUFBTyxHQUFHLE1BQUtTLFlBQWEsS0FBSyxDQUFDO0dBQ3BDLEtBQUssVUFDSCxRQUFPLEdBQUcsTUFBS0EsWUFBYSxLQUFLLENBQUM7R0FDcEMsUUFDRSxRQUFPLEdBQUcsTUFBS0EsWUFBYSxLQUFLLEdBQUdUOzs7Q0FHMUMsaUJBQWlCLE1BQU0sU0FBTztBQUM1QixTQUFPLEdBQUcsTUFBS1MsWUFBYSxLQUFLLEdBQUdUOztDQUV0QyxXQUFXLFNBQU87RUFDaEIsU0FBUyxNQUFNLEdBQUcsT0FBTyxHQUFHO0FBQzFCLFVBQU8sRUFBRSxTQUFTLE1BQU0sSUFBSTs7RUFFOUIsTUFBTSxJQUFJLE9BQU9BLFFBQU0sYUFBYSxHQUFHLEdBQUcsVUFBVSxDQUFDO0VBQ3JELE1BQU0sSUFBSSxNQUFNQSxRQUFNLFlBQVksQ0FBQyxVQUFVLENBQUM7RUFDOUMsTUFBTSxJQUFJLE1BQU1BLFFBQU0sYUFBYSxDQUFDLFVBQVUsQ0FBQztFQUMvQyxNQUFNLE1BQU0sTUFBTUEsUUFBTSxlQUFlLENBQUMsVUFBVSxDQUFDO0VBQ25ELE1BQU0sSUFBSSxNQUFNQSxRQUFNLGVBQWUsQ0FBQyxVQUFVLENBQUM7RUFDakQsTUFBTSxLQUFLLE1BQU1BLFFBQU0sb0JBQW9CLENBQUMsVUFBVSxFQUFFLEVBQUU7QUFHMUQsU0FEYyxHQUFHQSxRQUFNLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRzs7Q0FHeEUsaUJBQWlCLE1BQU0sU0FBTztBQUM1QixTQUFPLEdBQUcsTUFBS1MsWUFBYSxLQUFLLEdBQUcsTUFBS0ssVUFBV2QsUUFBTTs7Q0FFNUQsUUFBUSxVQUFVLEVBQUUsRUFBRTtFQUNwQixNQUFNLEVBQUUsZUFBZSxVQUFVO0VBQ2pDLE1BQU0sZUFBZTtFQUNyQixNQUFNLE1BQU0sRUFBRTtBQUNkLE9BQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxLQUFLLE9BQU8sUUFBUSxLQUFJO0dBQ3pDLE1BQU0sSUFBSSxLQUFLLE9BQU87QUFFdEIsT0FBSSxFQUFFLE9BQU8sT0FBTyxFQUFFLE9BQU8sS0FBSzs7QUFFaEMsUUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPLHVCQUFNLEtBQUssT0FBTyxJQUFJLGdFQUFJLE1BQU0sR0FBRyxFQUFFLE9BQU8sTUFBSyxFQUFFLE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSztBQUNoRyxVQUFLO0FBQ0w7O0FBRUYsUUFBSSxLQUFLLEVBQUU7Y0FFUCxjQUFjO0lBQ2hCLE1BQU0sSUFBSSxhQUFhLEtBQUssRUFBRTtBQUM5QixRQUFJLEtBQUssRUFBRSxHQUNULEtBQUksS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUM7UUFFbkQsS0FBSSxLQUFLLEVBQUU7U0FHYixLQUFJLEtBQUssRUFBRTs7RUFLakIsTUFBTSxnQkFBZ0IsRUFBRTtBQUN4QixPQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxRQUFRLEtBQUk7R0FDakMsTUFBTSxJQUFJLElBQUk7QUFDZCxPQUFJLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxPQUFPLElBQy9CLGVBQWMsS0FBSyxFQUFFOztBQUd6QixTQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3QlAsU0FBZ0IsVUFBVSxLQUFLLFNBQVM7QUFDMUMsUUFBTyxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssUUFBUSxDQUFDLEtBQUssS0FBSzs7Ozs7Ozs7R0M1UTdDLFNBQWdCLGNBQWMsT0FBTyxXQUFXO0NBQ2xELElBQUksY0FBYztBQUNsQixNQUFLLE1BQU0sT0FBTyxPQUFNO0FBQ3RCLE1BQUksQ0FBQyxVQUFVLElBQUksQ0FDakI7QUFFRixRQUFNLGVBQWU7QUFDckIsaUJBQWU7O0FBRWpCLE9BQU0sT0FBTyxZQUFZO0FBQ3pCLFFBQU87Ozs7O0FDWlQsU0FBZ0IsVUFBVSxRQUFRLE9BQU8sU0FBUztBQUNoRCxRQUFPLGtCQUFrQixRQUFRLHVCQUFPLElBQUksS0FBSyxFQUFFLFFBQVE7O0FBRTdELFNBQVMsa0JBQWtCLFFBQVEsT0FBTyxNQUFNLFNBQVM7Q0FDdkQsTUFBTSxTQUFTLEVBQUU7Q0FDakIsTUFBTSxPQUFPLElBQUksSUFBSSxDQUNuQixHQUFHLFFBQVEsT0FBTyxFQUNsQixHQUFHLFFBQVEsTUFBTSxDQUNsQixDQUFDO0FBRUYsTUFBSyxNQUFNLE9BQU8sTUFBSztBQUVyQixNQUFJLFFBQVEsWUFDVjtFQUVGLE1BQU0sSUFBSSxPQUFPO0FBQ2pCLE1BQUksQ0FBQyxPQUFPLE9BQU8sT0FBTyxJQUFJLEVBQUU7QUFDOUIsVUFBTyxPQUFPO0FBQ2Q7O0VBRUYsTUFBTSxJQUFJLE1BQU07QUFDaEIsTUFBSSxnQkFBZ0IsRUFBRSxJQUFJLGdCQUFnQixFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRTtBQUM1RSxRQUFLLElBQUksRUFBRTtBQUNYLFFBQUssSUFBSSxFQUFFO0FBQ1gsVUFBTyxPQUFPLGFBQWEsR0FBRyxHQUFHLE1BQU0sUUFBUTtBQUMvQzs7QUFHRixTQUFPLE9BQU87O0FBRWhCLFFBQU87O0FBRVQsU0FBUyxhQUFhLE1BQU0sT0FBTyxNQUFNLFVBQVU7Q0FDakQsUUFBUTtDQUNSLE1BQU07Q0FDTixNQUFNO0NBQ1AsRUFBRTtBQUVELEtBQUksWUFBWSxLQUFLLElBQUksWUFBWSxNQUFNLENBQ3pDLFFBQU8sa0JBQWtCLE1BQU0sT0FBTyxNQUFNLFFBQVE7QUFFdEQsS0FBSSxXQUFXLEtBQUssSUFBSSxXQUFXLE1BQU0sRUFBRTtBQUV6QyxNQUFJLE1BQU0sUUFBUSxLQUFLLElBQUksTUFBTSxRQUFRLE1BQU0sRUFBRTtBQUMvQyxPQUFJLFFBQVEsV0FBVyxRQUNyQixRQUFPLEtBQUssT0FBTyxNQUFNO0FBRTNCLFVBQU87O0FBR1QsTUFBSSxnQkFBZ0IsT0FBTyxpQkFBaUIsS0FBSztBQUMvQyxPQUFJLFFBQVEsU0FBUyxRQUNuQixRQUFPLElBQUksSUFBSSxDQUNiLEdBQUcsTUFDSCxHQUFHLE1BQ0osQ0FBQztBQUVKLFVBQU87O0FBR1QsTUFBSSxnQkFBZ0IsT0FBTyxpQkFBaUIsS0FBSztBQUMvQyxPQUFJLFFBQVEsU0FBUyxRQUNuQixRQUFPLElBQUksSUFBSSxDQUNiLEdBQUcsTUFDSCxHQUFHLE1BQ0osQ0FBQztBQUVKLFVBQU87OztBQUdYLFFBQU87Ozs7OztHQU1MLFNBQVMsWUFBWSxTQUFPO0FBQzlCLFFBQU8sT0FBTyxlQUFlZSxRQUFNLEtBQUssT0FBTzs7QUFFakQsU0FBUyxXQUFXLFNBQU87QUFDekIsUUFBTyxPQUFPQSxRQUFNLE9BQU8sY0FBYzs7QUFFM0MsU0FBUyxnQkFBZ0IsU0FBTztBQUM5QixRQUFPQSxZQUFVLFFBQVEsT0FBT0EsWUFBVTs7QUFFNUMsU0FBUyxRQUFRLFFBQVE7Q0FDdkIsTUFBTSxTQUFTLE9BQU8sc0JBQXNCLE9BQU87QUFDbkQsZUFBYyxTQUFTLFFBQU0sT0FBTyxVQUFVLHFCQUFxQixLQUFLLFFBQVEsSUFBSSxDQUFDO0FBQ3JGLFFBQU8sS0FBSyxHQUFHLE9BQU8sS0FBSyxPQUFPLENBQUM7QUFDbkMsUUFBTzs7Ozs7OztHQ3ZGTCxTQUFTLE9BQU8sWUFBWTtBQUM5QixRQUFPLGFBQWEsTUFBTSxLQUFLLGFBQWEsUUFBUSxLQUFLLGFBQWEsUUFBUTs7QUFFaEYsSUFBYSxVQUFiLE1BQXFCO0NBQ25CLGNBQWM7Q0FDZCxZQUFZO0NBQ1o7Q0FDQSxZQUFZLFFBQU87QUFDakIsUUFBS0MsU0FBVTs7Q0FFakIsSUFBSSxXQUFXO0FBQ2IsU0FBTyxNQUFLQzs7Q0FFZCxJQUFJLFNBQVM7QUFDWCxTQUFPLE1BQUtEOzs7OztJQUtWLEtBQUssUUFBUSxHQUFHO0FBQ2xCLFNBQU8sTUFBS0EsT0FBUSxNQUFLQyxXQUFZLFVBQVU7Ozs7OztJQU03QyxNQUFNLE9BQU8sS0FBSztBQUNwQixTQUFPLE1BQUtELE9BQVEsTUFBTSxNQUFLQyxXQUFZLE9BQU8sTUFBS0EsV0FBWSxJQUFJOzs7O0lBSXJFLEtBQUssUUFBUSxHQUFHO0FBQ2xCLFFBQUtBLFlBQWE7O0NBRXBCLGtCQUFrQjtBQUNoQixTQUFNLE1BQUtDLFdBQVksS0FBSyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQ3JELE1BQUssTUFBTTtBQUdiLE1BQUksQ0FBQyxLQUFLLGtCQUFrQixJQUFJLEtBQUssS0FBSyxLQUFLLE1BQU0sQ0FBQyxFQUFFO0dBQ3RELE1BQU0sVUFBVSxRQUFRLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsR0FBRztHQUM5RCxNQUFNLFdBQVcsTUFBS0Q7QUFDdEIsU0FBTSxJQUFJLFlBQVksc0VBQXNFLFNBQVMsT0FBTyxRQUFRLElBQUk7OztDQUc1SCxjQUFjLFVBQVUsRUFDdEIsY0FBYyxNQUNmLEVBQUU7QUFDRCxTQUFNLENBQUMsS0FBSyxLQUFLLEVBQUM7R0FDaEIsTUFBTSxPQUFPLEtBQUssTUFBTTtBQUN4QixPQUFJLE1BQUtDLFdBQVksS0FBSyxLQUFLLElBQUksS0FBSyxrQkFBa0IsQ0FDeEQsTUFBSyxNQUFNO1lBQ0YsUUFBUSxnQkFBZ0IsS0FBSyxNQUFNLEtBQUssSUFFakQsUUFBTSxDQUFDLEtBQUssa0JBQWtCLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FDM0MsTUFBSyxNQUFNO09BR2I7Ozs7O0lBTUYsTUFBTTtBQUNSLFNBQU8sTUFBS0QsWUFBYSxNQUFLRCxPQUFROztDQUV4QyxtQkFBbUI7QUFDakIsU0FBTyxLQUFLLE1BQU0sS0FBSyxRQUFRLEtBQUssV0FBVyxPQUFPOztDQUV4RCxXQUFXLGNBQWM7QUFDdkIsU0FBTyxNQUFLQSxPQUFRLFdBQVcsY0FBYyxNQUFLQyxTQUFVOztDQUU5RCxNQUFNLFFBQVE7QUFDWixNQUFJLENBQUMsT0FBTyxPQUNWLE9BQU0sSUFBSSxNQUFNLFVBQVUsT0FBTyxrQ0FBa0M7QUFFckUsU0FBTyxZQUFZLE1BQUtBO0FBQ3hCLFNBQU8sTUFBS0QsT0FBUSxNQUFNLE9BQU87OztBQU1yQyxTQUFTLFFBQVEsTUFBTTtBQUNyQixRQUFPO0VBQ0wsSUFBSTtFQUNKO0VBQ0Q7O0FBRUgsU0FBUyxVQUFVO0FBQ2pCLFFBQU8sRUFDTCxJQUFJLE9BQ0w7Ozs7OztHQU1DLFNBQWdCLE9BQU8sTUFBTSxTQUFTLEVBQ3hDLFdBQVcsTUFDWixFQUFFO0FBQ0QsUUFBTyxLQUFLLGFBQWEsS0FBSyxTQUFPLEdBQ2hDLE1BQU0sS0FDUixHQUFHLE9BQU87O0FBRWYsU0FBUyxTQUFTLFNBQU87QUFDdkIsUUFBTyxPQUFPRyxZQUFVLFlBQVlBLFlBQVU7O0FBRWhELFNBQVMsZUFBZSxRQUFRLE1BQU07Q0FDcEMsTUFBTSxNQUFNLEtBQUs7QUFDakIsS0FBSSxDQUFDLElBQ0gsT0FBTSxJQUFJLE1BQU0sNkRBQTZEO0FBRS9FLFFBQU8sT0FBTzs7QUFFaEIsU0FBUyxnQkFBZ0IsUUFBUSxTQUFPO0NBQ3RDLE1BQU0sRUFBRSxNQUFNLE1BQU0sbUJBQVVDO0NBQzlCLE1BQU0sZUFBZSxlQUFlLFFBQVEsS0FBSztBQUNqRCxLQUFJLGlCQUFpQixPQUNuQixRQUFPLE9BQU8sT0FBTyxRQUFRLE9BQU8sTUFBTUQsUUFBTSxDQUFDO0FBRW5ELEtBQUksTUFBTSxRQUFRLGFBQWEsRUFBRTtBQUUvQixhQURhLGFBQWEsR0FBRyxHQUFHLEVBQ2Y7R0FDZjtHQUNBLE1BQU0sS0FBSyxNQUFNLEVBQUU7R0FDbkI7R0FDRCxDQUFDO0FBQ0YsU0FBTzs7QUFFVCxLQUFJLFNBQVMsYUFBYSxFQUFFO0FBQzFCLGFBQVcsY0FBYztHQUN2QjtHQUNBLE1BQU0sS0FBSyxNQUFNLEVBQUU7R0FDbkI7R0FDRCxDQUFDO0FBQ0YsU0FBTzs7QUFFVCxPQUFNLElBQUksTUFBTSxvQkFBb0I7O0FBRXRDLFNBQVMscUJBQXFCLFFBQVEsU0FBTztDQUMzQyxNQUFNLEVBQUUsTUFBTSxNQUFNLG1CQUFVQztDQUM5QixNQUFNLGVBQWUsZUFBZSxRQUFRLEtBQUs7QUFDakQsS0FBSSxpQkFBaUIsT0FDbkIsUUFBTyxPQUFPLE9BQU8sUUFBUSxPQUFPLE1BQU0sQ0FDeENELFFBQ0QsQ0FBQyxDQUFDO0FBRUwsS0FBSSxNQUFNLFFBQVEsYUFBYSxFQUFFO0FBQy9CLE1BQUlDLFFBQU0sS0FBSyxXQUFXLEVBQ3hCLGNBQWEsS0FBS0QsUUFBTTtNQUd4QixZQURhLGFBQWEsR0FBRyxHQUFHLEVBQ2Y7R0FDZixNQUFNQyxRQUFNO0dBQ1osTUFBTUEsUUFBTSxLQUFLLE1BQU0sRUFBRTtHQUN6QixPQUFPQSxRQUFNO0dBQ2QsQ0FBQztBQUVKLFNBQU87O0FBRVQsS0FBSSxTQUFTLGFBQWEsRUFBRTtBQUMxQixhQUFXLGNBQWM7R0FDdkI7R0FDQSxNQUFNLEtBQUssTUFBTSxFQUFFO0dBQ25CO0dBQ0QsQ0FBQztBQUNGLFNBQU87O0FBRVQsT0FBTSxJQUFJLE1BQU0sb0JBQW9COztBQUV0QyxTQUFnQixXQUFXLFFBQVEsTUFBTTtBQUN2QyxTQUFPLEtBQUssTUFBWjtFQUNFLEtBQUssUUFDSCxRQUFPLFVBQVUsUUFBUSxLQUFLLE1BQU07RUFDdEMsS0FBSyxRQUNILFFBQU8sZ0JBQWdCLFFBQVEsS0FBSztFQUN0QyxLQUFLLGFBQ0gsUUFBTyxxQkFBcUIsUUFBUSxLQUFLOzs7QUFPL0MsU0FBUyxHQUFHLFNBQVM7QUFDbkIsU0FBUSxZQUFVO0FBQ2hCLE9BQUssTUFBTUMsV0FBUyxTQUFRO0dBQzFCLE1BQU0sU0FBU0EsUUFBTSxRQUFRO0FBQzdCLE9BQUksT0FBTyxHQUFJLFFBQU87O0FBRXhCLFNBQU8sU0FBUzs7Ozs7O0dBTWhCLFNBQVNDLE9BQUssUUFBUSxXQUFXO0NBQ25DLE1BQU0sWUFBWSxVQUFVLFVBQVU7QUFDdEMsU0FBUSxZQUFVO0VBQ2hCLE1BQU0sTUFBTSxFQUFFO0VBQ2QsTUFBTSxRQUFRLE9BQU8sUUFBUTtBQUM3QixNQUFJLENBQUMsTUFBTSxHQUFJLFFBQU8sUUFBUSxJQUFJO0FBQ2xDLE1BQUksS0FBSyxNQUFNLEtBQUs7QUFDcEIsU0FBTSxDQUFDLFFBQVEsS0FBSyxFQUFDO0FBQ25CLE9BQUksQ0FBQyxVQUFVLFFBQVEsQ0FBQyxHQUFJO0dBQzVCLE1BQU0sU0FBUyxPQUFPLFFBQVE7QUFDOUIsT0FBSSxDQUFDLE9BQU8sR0FDVixPQUFNLElBQUksWUFBWSx3QkFBd0IsVUFBVSxHQUFHO0FBRTdELE9BQUksS0FBSyxPQUFPLEtBQUs7O0FBRXZCLFNBQU8sUUFBUSxJQUFJOzs7Ozs7R0FNbkIsU0FBUyxNQUFNLFFBQVEsV0FBVztDQUNwQyxNQUFNLFlBQVksVUFBVSxVQUFVO0FBQ3RDLFNBQVEsWUFBVTtFQUNoQixNQUFNLFFBQVEsT0FBTyxRQUFRO0FBQzdCLE1BQUksQ0FBQyxNQUFNLEdBQUksUUFBTyxTQUFTO0VBQy9CLE1BQU0sTUFBTSxDQUNWLE1BQU0sS0FDUDtBQUNELFNBQU0sQ0FBQyxRQUFRLEtBQUssRUFBQztBQUNuQixPQUFJLENBQUMsVUFBVSxRQUFRLENBQUMsR0FBSTtHQUM1QixNQUFNLFNBQVMsT0FBTyxRQUFRO0FBQzlCLE9BQUksQ0FBQyxPQUFPLEdBQ1YsT0FBTSxJQUFJLFlBQVksd0JBQXdCLFVBQVUsR0FBRztBQUU3RCxPQUFJLEtBQUssT0FBTyxLQUFLOztBQUV2QixTQUFPLFFBQVEsSUFBSTs7O0FBR3ZCLFNBQVMsR0FBRyxXQUFXLFdBQVcsYUFBYTtDQUM3QyxNQUFNLFlBQVksVUFBVSxVQUFVO0FBQ3RDLFNBQVEsWUFBVTtFQUNoQixNQUFNLFdBQVcsUUFBUTtFQUN6QixNQUFNLE1BQU0sVUFBVSxRQUFRO0FBQzlCLE1BQUksQ0FBQyxJQUFJLEdBQUksUUFBTyxTQUFTO0FBRTdCLE1BQUksQ0FEUSxVQUFVLFFBQVEsQ0FDckIsR0FDUCxPQUFNLElBQUksWUFBWSxnQ0FBZ0MsVUFBVSxHQUFHO0VBRXJFLE1BQU1ILFVBQVEsWUFBWSxRQUFRO0FBQ2xDLE1BQUksQ0FBQ0EsUUFBTSxJQUFJO0dBQ2IsTUFBTSxlQUFlLFFBQVEsT0FBTyxRQUFRLE1BQU0sUUFBUSxTQUFTO0dBQ25FLE1BQU0sY0FBYyxlQUFlLElBQUksZUFBZSxRQUFRLE9BQU87R0FDckUsTUFBTSxPQUFPLFFBQVEsT0FBTyxNQUFNLFVBQVUsWUFBWTtBQUN4RCxTQUFNLElBQUksWUFBWSwrQkFBK0IsS0FBSyxHQUFHOztBQUUvRCxTQUFPLFFBQVEsT0FBTyxJQUFJLE1BQU1BLFFBQU0sS0FBSyxDQUFDOzs7QUFHaEQsU0FBU0ksUUFBTSxRQUFRO0FBQ3JCLFNBQVEsWUFBVTtFQUNoQixNQUFNLFNBQVMsT0FBTyxRQUFRO0FBQzlCLE1BQUksQ0FBQyxPQUFPLEdBQUksUUFBTyxTQUFTO0VBQ2hDLElBQUksT0FBTyxFQUNULFdBQVcsTUFDWjtBQUNELE9BQUssTUFBTSxVQUFVLE9BQU8sS0FDMUIsS0FBSSxPQUFPLFdBQVcsWUFBWSxXQUFXLEtBQzNDLFFBQU8sVUFBVSxNQUFNLE9BQU87QUFHbEMsU0FBTyxRQUFRLEtBQUs7OztBQUd4QixTQUFTLE9BQU8sUUFBUTtBQUN0QixTQUFRLFlBQVU7RUFDaEIsTUFBTSxPQUFPLEVBQUU7QUFDZixTQUFNLENBQUMsUUFBUSxLQUFLLEVBQUM7R0FDbkIsTUFBTSxTQUFTLE9BQU8sUUFBUTtBQUM5QixPQUFJLENBQUMsT0FBTyxHQUFJO0FBQ2hCLFFBQUssS0FBSyxPQUFPLEtBQUs7QUFDdEIsV0FBUSxlQUFlOztBQUV6QixNQUFJLEtBQUssV0FBVyxFQUFHLFFBQU8sU0FBUztBQUN2QyxTQUFPLFFBQVEsS0FBSzs7O0FBR3hCLFNBQVMsU0FBUyxNQUFNLFFBQVEsT0FBTztDQUNyQyxNQUFNLE9BQU8sVUFBVSxLQUFLO0NBQzVCLE1BQU0sUUFBUSxVQUFVLE1BQU07QUFDOUIsU0FBUSxZQUFVO0FBQ2hCLE1BQUksQ0FBQyxLQUFLLFFBQVEsQ0FBQyxHQUNqQixRQUFPLFNBQVM7RUFFbEIsTUFBTSxTQUFTLE9BQU8sUUFBUTtBQUM5QixNQUFJLENBQUMsT0FBTyxHQUNWLE9BQU0sSUFBSSxZQUFZLHdCQUF3QixLQUFLLEdBQUc7QUFFeEQsTUFBSSxDQUFDLE1BQU0sUUFBUSxDQUFDLEdBQ2xCLE9BQU0sSUFBSSxZQUFZLGtCQUFrQixNQUFNLHdCQUF3QixLQUFLLEdBQUc7QUFFaEYsU0FBTyxRQUFRLE9BQU8sS0FBSzs7O0FBRy9CLFNBQVMsVUFBVSxLQUFLO0FBQ3RCLFNBQVEsWUFBVTtBQUNoQixVQUFRLGlCQUFpQjtBQUN6QixNQUFJLENBQUMsUUFBUSxXQUFXLElBQUksQ0FBRSxRQUFPLFNBQVM7QUFDOUMsVUFBUSxLQUFLLElBQUksT0FBTztBQUN4QixVQUFRLGlCQUFpQjtBQUN6QixTQUFPLFFBQVEsT0FBVTs7O0FBTTdCLE1BQU0sa0JBQWtCO0FBQ3hCLFNBQWdCLFFBQVEsU0FBUzs7QUFDL0IsU0FBUSxpQkFBaUI7Q0FDekIsTUFBTSx3QkFBTSxRQUFRLE1BQU0sZ0JBQWdCLGtFQUFHO0FBQzdDLEtBQUksQ0FBQyxJQUFLLFFBQU8sU0FBUztBQUMxQixTQUFRLEtBQUssSUFBSSxPQUFPO0FBQ3hCLFFBQU8sUUFBUSxJQUFJOztBQUVyQixTQUFTLGVBQWUsU0FBUztBQUMvQixLQUFJLFFBQVEsTUFBTSxLQUFLLEtBQU0sUUFBTyxTQUFTO0FBQzdDLFNBQVEsTUFBTTtBQUVkLFNBQU8sUUFBUSxNQUFNLEVBQXJCO0VBQ0UsS0FBSztBQUNILFdBQVEsTUFBTTtBQUNkLFVBQU8sUUFBUSxLQUFLO0VBQ3RCLEtBQUs7QUFDSCxXQUFRLE1BQU07QUFDZCxVQUFPLFFBQVEsSUFBSztFQUN0QixLQUFLO0FBQ0gsV0FBUSxNQUFNO0FBQ2QsVUFBTyxRQUFRLEtBQUs7RUFDdEIsS0FBSztBQUNILFdBQVEsTUFBTTtBQUNkLFVBQU8sUUFBUSxLQUFLO0VBQ3RCLEtBQUs7QUFDSCxXQUFRLE1BQU07QUFDZCxVQUFPLFFBQVEsS0FBSztFQUN0QixLQUFLO0VBQ0wsS0FBSyxLQUNIO0dBRUUsTUFBTSxlQUFlLFFBQVEsTUFBTSxLQUFLLE1BQU0sSUFBSTtHQUNsRCxNQUFNLFlBQVksU0FBUyxPQUFPLFFBQVEsTUFBTSxHQUFHLElBQUksYUFBYSxFQUFFLEdBQUc7R0FDekUsTUFBTSxNQUFNLE9BQU8sY0FBYyxVQUFVO0FBQzNDLFdBQVEsS0FBSyxlQUFlLEVBQUU7QUFDOUIsVUFBTyxRQUFRLElBQUk7O0VBRXZCLEtBQUs7QUFDSCxXQUFRLE1BQU07QUFDZCxVQUFPLFFBQVEsS0FBSTtFQUNyQixLQUFLO0FBQ0gsV0FBUSxNQUFNO0FBQ2QsVUFBTyxRQUFRLEtBQUs7RUFDdEIsUUFDRSxPQUFNLElBQUksWUFBWSw4QkFBOEIsUUFBUSxNQUFNLEdBQUc7OztBQUczRSxTQUFnQixZQUFZLFNBQVM7QUFDbkMsU0FBUSxpQkFBaUI7QUFDekIsS0FBSSxRQUFRLE1BQU0sS0FBSyxLQUFLLFFBQU8sU0FBUztBQUM1QyxTQUFRLE1BQU07Q0FDZCxNQUFNLE1BQU0sRUFBRTtBQUNkLFFBQU0sUUFBUSxNQUFNLEtBQUssUUFBTyxDQUFDLFFBQVEsS0FBSyxFQUFDO0FBQzdDLE1BQUksUUFBUSxNQUFNLEtBQUssS0FDckIsT0FBTSxJQUFJLFlBQVksd0NBQXdDO0VBRWhFLE1BQU0sY0FBYyxlQUFlLFFBQVE7QUFDM0MsTUFBSSxZQUFZLEdBQ2QsS0FBSSxLQUFLLFlBQVksS0FBSztPQUNyQjtBQUNMLE9BQUksS0FBSyxRQUFRLE1BQU0sQ0FBQztBQUN4QixXQUFRLE1BQU07OztBQUdsQixLQUFJLFFBQVEsS0FBSyxDQUNmLE9BQU0sSUFBSSxZQUFZLHNDQUFzQyxJQUFJLEtBQUssR0FBRyxHQUFHO0FBRTdFLFNBQVEsTUFBTTtBQUNkLFFBQU8sUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDOztBQUU5QixTQUFnQixjQUFjLFNBQVM7QUFDckMsU0FBUSxpQkFBaUI7QUFDekIsS0FBSSxRQUFRLE1BQU0sS0FBSyxJQUFLLFFBQU8sU0FBUztBQUM1QyxTQUFRLE1BQU07Q0FDZCxNQUFNLE1BQU0sRUFBRTtBQUNkLFFBQU0sUUFBUSxNQUFNLEtBQUssT0FBTyxDQUFDLFFBQVEsS0FBSyxFQUFDO0FBQzdDLE1BQUksUUFBUSxNQUFNLEtBQUssS0FDckIsT0FBTSxJQUFJLFlBQVksd0NBQXdDO0FBRWhFLE1BQUksS0FBSyxRQUFRLE1BQU0sQ0FBQztBQUN4QixVQUFRLE1BQU07O0FBRWhCLEtBQUksUUFBUSxLQUFLLENBQ2YsT0FBTSxJQUFJLFlBQVksc0NBQXNDLElBQUksS0FBSyxHQUFHLEdBQUc7QUFFN0UsU0FBUSxNQUFNO0FBQ2QsUUFBTyxRQUFRLElBQUksS0FBSyxHQUFHLENBQUM7O0FBRTlCLFNBQWdCLHFCQUFxQixTQUFTO0FBQzVDLFNBQVEsaUJBQWlCO0FBQ3pCLEtBQUksQ0FBQyxRQUFRLFdBQVcsU0FBTSxDQUFFLFFBQU8sU0FBUztBQUNoRCxTQUFRLEtBQUssRUFBRTtBQUNmLEtBQUksUUFBUSxNQUFNLEtBQUssS0FFckIsU0FBUSxNQUFNO1VBQ0wsUUFBUSxXQUFXLE9BQU8sQ0FFbkMsU0FBUSxLQUFLLEVBQUU7Q0FFakIsTUFBTSxNQUFNLEVBQUU7QUFDZCxRQUFNLENBQUMsUUFBUSxXQUFXLFNBQU0sSUFBSSxDQUFDLFFBQVEsS0FBSyxFQUFDO0FBRWpELE1BQUksUUFBUSxXQUFXLE9BQU8sRUFBRTtBQUM5QixXQUFRLE1BQU07QUFDZCxXQUFRLGNBQWMsRUFDcEIsY0FBYyxPQUNmLENBQUM7QUFDRjthQUNTLFFBQVEsV0FBVyxTQUFTLEVBQUU7QUFDdkMsV0FBUSxNQUFNO0FBQ2QsV0FBUSxjQUFjLEVBQ3BCLGNBQWMsT0FDZixDQUFDO0FBQ0Y7O0VBRUYsTUFBTSxjQUFjLGVBQWUsUUFBUTtBQUMzQyxNQUFJLFlBQVksR0FDZCxLQUFJLEtBQUssWUFBWSxLQUFLO09BQ3JCO0FBQ0wsT0FBSSxLQUFLLFFBQVEsTUFBTSxDQUFDO0FBQ3hCLFdBQVEsTUFBTTs7O0FBR2xCLEtBQUksUUFBUSxLQUFLLENBQ2YsT0FBTSxJQUFJLFlBQVkscUNBQXFDLElBQUksS0FBSyxHQUFHLEdBQUc7QUFHNUUsS0FBSSxRQUFRLEtBQUssRUFBRSxLQUFLLE1BQUs7QUFDM0IsTUFBSSxLQUFLLEtBQUk7QUFDYixVQUFRLE1BQU07O0FBRWhCLFNBQVEsS0FBSyxFQUFFO0FBQ2YsUUFBTyxRQUFRLElBQUksS0FBSyxHQUFHLENBQUM7O0FBRTlCLFNBQWdCLHVCQUF1QixTQUFTO0FBQzlDLFNBQVEsaUJBQWlCO0FBQ3pCLEtBQUksQ0FBQyxRQUFRLFdBQVcsTUFBTSxDQUFFLFFBQU8sU0FBUztBQUNoRCxTQUFRLEtBQUssRUFBRTtBQUNmLEtBQUksUUFBUSxNQUFNLEtBQUssS0FFckIsU0FBUSxNQUFNO1VBQ0wsUUFBUSxXQUFXLE9BQU8sQ0FFbkMsU0FBUSxLQUFLLEVBQUU7Q0FFakIsTUFBTSxNQUFNLEVBQUU7QUFDZCxRQUFNLENBQUMsUUFBUSxXQUFXLE1BQU0sSUFBSSxDQUFDLFFBQVEsS0FBSyxFQUFDO0FBQ2pELE1BQUksS0FBSyxRQUFRLE1BQU0sQ0FBQztBQUN4QixVQUFRLE1BQU07O0FBRWhCLEtBQUksUUFBUSxLQUFLLENBQ2YsT0FBTSxJQUFJLFlBQVkscUNBQXFDLElBQUksS0FBSyxHQUFHLEdBQUc7QUFHNUUsS0FBSSxRQUFRLEtBQUssRUFBRSxLQUFLLEtBQUs7QUFDM0IsTUFBSSxLQUFLLElBQUk7QUFDYixVQUFRLE1BQU07O0FBRWhCLFNBQVEsS0FBSyxFQUFFO0FBQ2YsUUFBTyxRQUFRLElBQUksS0FBSyxHQUFHLENBQUM7O0FBRTlCLE1BQU0saUJBQWlCO0FBQ3ZCLFNBQWdCLFFBQVEsU0FBUztBQUMvQixTQUFRLGlCQUFpQjtDQUN6QixNQUFNLFFBQVEsUUFBUSxNQUFNLGVBQWU7QUFDM0MsS0FBSSxDQUFDLE1BQU8sUUFBTyxTQUFTO0NBQzVCLE1BQU0sU0FBUyxNQUFNO0FBQ3JCLFNBQVEsS0FBSyxPQUFPLE9BQU87QUFFM0IsUUFBTyxRQURPLFdBQVcsT0FDSjs7QUFFdkIsTUFBTSxlQUFlLElBQUksSUFBSTtDQUMzQixDQUNFLE9BQ0EsU0FDRDtDQUNELENBQ0UsUUFDQSxTQUNEO0NBQ0QsQ0FDRSxRQUNBLFVBQ0Q7Q0FDRixDQUFDO0FBQ0YsTUFBTSxrQkFBa0I7QUFDeEIsU0FBZ0IsU0FBUyxTQUFTO0FBQ2hDLFNBQVEsaUJBQWlCO0NBQ3pCLE1BQU0sUUFBUSxRQUFRLE1BQU0sZ0JBQWdCO0FBQzVDLEtBQUksQ0FBQyxNQUFPLFFBQU8sU0FBUztDQUM1QixNQUFNLFNBQVMsTUFBTTtBQUNyQixTQUFRLEtBQUssT0FBTyxPQUFPO0FBRTNCLFFBQU8sUUFETyxhQUFhLElBQUksT0FBTyxDQUNqQjs7QUFFdkIsTUFBTSxhQUFhO0FBQ25CLFNBQWdCLElBQUksU0FBUztBQUMzQixTQUFRLGlCQUFpQjtDQUN6QixNQUFNLFFBQVEsUUFBUSxNQUFNLFdBQVc7QUFDdkMsS0FBSSxDQUFDLE1BQU8sUUFBTyxTQUFTO0NBQzVCLE1BQU0sU0FBUyxNQUFNO0FBQ3JCLFNBQVEsS0FBSyxPQUFPLE9BQU87QUFFM0IsUUFBTyxRQURPLElBQ087O0FBRXZCLE1BQWEsWUFBWSxNQUFNLEdBQUc7Q0FDaEM7Q0FDQTtDQUNBO0NBQ0QsQ0FBQyxFQUFFLElBQUk7QUFDUixNQUFNLGdCQUFnQjtBQUN0QixTQUFnQixPQUFPLFNBQVM7O0FBQzlCLFNBQVEsaUJBQWlCO0NBQ3pCLE1BQU0sMkJBQVEsUUFBUSxNQUFNLGNBQWMsb0VBQUc7QUFDN0MsS0FBSSxDQUFDLE1BQU8sUUFBTyxTQUFTO0FBQzVCLFNBQVEsS0FBSyxNQUFNLE9BQU87Q0FDMUIsTUFBTUosVUFBUSxNQUFNLE1BQU0sRUFBRSxDQUFDLFdBQVcsS0FBSyxHQUFHO0NBQ2hELE1BQU0sU0FBUyxTQUFTQSxTQUFPLEVBQUU7QUFDakMsUUFBTyxNQUFNLE9BQU8sR0FBRyxTQUFTLEdBQUcsUUFBUSxPQUFPOztBQUVwRCxNQUFNLGVBQWU7QUFDckIsU0FBZ0IsTUFBTSxTQUFTOztBQUM3QixTQUFRLGlCQUFpQjtDQUN6QixNQUFNLDJCQUFRLFFBQVEsTUFBTSxhQUFhLG9FQUFHO0FBQzVDLEtBQUksQ0FBQyxNQUFPLFFBQU8sU0FBUztBQUM1QixTQUFRLEtBQUssTUFBTSxPQUFPO0NBQzFCLE1BQU1BLFVBQVEsTUFBTSxNQUFNLEVBQUUsQ0FBQyxXQUFXLEtBQUssR0FBRztDQUNoRCxNQUFNLFNBQVMsU0FBU0EsU0FBTyxFQUFFO0FBQ2pDLFFBQU8sTUFBTSxPQUFPLEdBQUcsU0FBUyxHQUFHLFFBQVEsT0FBTzs7QUFFcEQsTUFBTSxhQUFhO0FBQ25CLFNBQWdCLElBQUksU0FBUzs7QUFDM0IsU0FBUSxpQkFBaUI7Q0FDekIsTUFBTSwyQkFBUSxRQUFRLE1BQU0sV0FBVyxvRUFBRztBQUMxQyxLQUFJLENBQUMsTUFBTyxRQUFPLFNBQVM7QUFDNUIsU0FBUSxLQUFLLE1BQU0sT0FBTztDQUMxQixNQUFNQSxVQUFRLE1BQU0sTUFBTSxFQUFFLENBQUMsV0FBVyxLQUFLLEdBQUc7Q0FDaEQsTUFBTSxTQUFTLFNBQVNBLFNBQU8sR0FBRztBQUNsQyxRQUFPLE1BQU0sT0FBTyxHQUFHLFNBQVMsR0FBRyxRQUFRLE9BQU87O0FBRXBELE1BQU0saUJBQWlCO0FBQ3ZCLFNBQWdCLFFBQVEsU0FBUzs7QUFDL0IsU0FBUSxpQkFBaUI7Q0FDekIsTUFBTSwyQkFBUSxRQUFRLE1BQU0sZUFBZSxvRUFBRztBQUM5QyxLQUFJLENBQUMsTUFBTyxRQUFPLFNBQVM7QUFDNUIsU0FBUSxLQUFLLE1BQU0sT0FBTztDQUMxQixNQUFNQSxVQUFRLE1BQU0sV0FBVyxLQUFLLEdBQUc7QUFFdkMsUUFBTyxRQURLLFNBQVNBLFNBQU8sR0FBRyxDQUNaOztBQUVyQixNQUFNLGVBQWU7QUFDckIsU0FBZ0IsTUFBTSxTQUFTOztBQUM3QixTQUFRLGlCQUFpQjtDQUN6QixNQUFNLDJCQUFRLFFBQVEsTUFBTSxhQUFhLG9FQUFHO0FBQzVDLEtBQUksQ0FBQyxNQUFPLFFBQU8sU0FBUztBQUM1QixTQUFRLEtBQUssTUFBTSxPQUFPO0NBQzFCLE1BQU1BLFVBQVEsTUFBTSxXQUFXLEtBQUssR0FBRztDQUN2QyxNQUFNSyxVQUFRLFdBQVdMLFFBQU07QUFDL0IsS0FBSSxNQUFNSyxRQUFNLENBQUUsUUFBTyxTQUFTO0FBQ2xDLFFBQU8sUUFBUUEsUUFBTTs7QUFFdkIsTUFBTSxtQkFBbUI7QUFDekIsU0FBZ0IsU0FBUyxTQUFTO0FBQ2hDLFNBQVEsaUJBQWlCO0NBQ3pCLE1BQU0sUUFBUSxRQUFRLE1BQU0saUJBQWlCO0FBQzdDLEtBQUksQ0FBQyxNQUFPLFFBQU8sU0FBUztDQUM1QixNQUFNLFNBQVMsTUFBTTtBQUNyQixTQUFRLEtBQUssT0FBTyxPQUFPO0NBQzNCLE1BQU0sU0FBUyxNQUFNO0FBRXJCLEtBQUksT0FBTyxTQUFTLE1BQU07RUFDeEIsTUFBTSxPQUFPLFNBQVMsT0FBTyxJQUFJO0FBQ2pDLE1BQUksT0FBTyxHQUNULE9BQU0sSUFBSSxZQUFZLHdCQUF3QixNQUFNLEdBQUc7RUFFekQsTUFBTSxPQUFPLFNBQVMsT0FBTyxLQUFLO0FBQ2xDLE1BQUksT0FBTyxNQUFNLENBQUMsT0FBTyxLQUFLLENBQzVCLE9BQU0sSUFBSSxZQUFZLHdCQUF3QixNQUFNLEdBQUc7O0NBRzNELE1BQU0sT0FBTyxJQUFJLEtBQUssT0FBTyxNQUFNLENBQUM7QUFFcEMsS0FBSSxNQUFNLEtBQUssU0FBUyxDQUFDLENBQ3ZCLE9BQU0sSUFBSSxZQUFZLHdCQUF3QixNQUFNLEdBQUc7QUFFekQsUUFBTyxRQUFRLEtBQUs7O0FBRXRCLE1BQU0sb0JBQW9CO0FBQzFCLFNBQWdCLFVBQVUsU0FBUzs7QUFDakMsU0FBUSxpQkFBaUI7Q0FDekIsTUFBTSwyQkFBUSxRQUFRLE1BQU0sa0JBQWtCLG9FQUFHO0FBQ2pELEtBQUksQ0FBQyxNQUFPLFFBQU8sU0FBUztBQUM1QixTQUFRLEtBQUssTUFBTSxPQUFPO0FBQzFCLFFBQU8sUUFBUSxNQUFNOztBQUV2QixTQUFnQixXQUFXLFNBQVM7QUFDbEMsU0FBUSxpQkFBaUI7QUFDekIsS0FBSSxRQUFRLE1BQU0sS0FBSyxJQUFLLFFBQU8sU0FBUztBQUM1QyxTQUFRLE1BQU07Q0FDZCxNQUFNLFFBQVEsRUFBRTtBQUNoQixRQUFNLENBQUMsUUFBUSxLQUFLLEVBQUM7QUFDbkIsVUFBUSxlQUFlO0VBQ3ZCLE1BQU0sU0FBUyxNQUFNLFFBQVE7QUFDN0IsTUFBSSxDQUFDLE9BQU8sR0FBSTtBQUNoQixRQUFNLEtBQUssT0FBTyxLQUFLO0FBQ3ZCLFVBQVEsaUJBQWlCO0FBRXpCLE1BQUksUUFBUSxNQUFNLEtBQUssSUFBSztBQUM1QixVQUFRLE1BQU07O0FBRWhCLFNBQVEsZUFBZTtBQUN2QixLQUFJLFFBQVEsTUFBTSxLQUFLLElBQUssT0FBTSxJQUFJLFlBQVksc0JBQXNCO0FBQ3hFLFNBQVEsTUFBTTtBQUNkLFFBQU8sUUFBUSxNQUFNOztBQUV2QixTQUFnQixZQUFZLFNBQVM7QUFDbkMsU0FBUSxlQUFlO0FBQ3ZCLEtBQUksUUFBUSxLQUFLLEVBQUUsS0FBSyxLQUFLO0FBQzNCLFVBQVEsS0FBSyxFQUFFO0FBQ2YsU0FBTyxRQUFRLEVBQ2IsV0FBVyxNQUNaLENBQUM7O0NBRUosTUFBTSxRQUFRLFNBQVMsS0FBS0YsT0FBSyxNQUFNLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtBQUMxRCxLQUFJLENBQUMsTUFBTSxHQUFJLFFBQU8sU0FBUztDQUMvQixJQUFJRixVQUFRLEVBQ1YsV0FBVyxNQUNaO0FBQ0QsTUFBSyxNQUFNSyxVQUFRLE1BQU0sS0FDdkIsV0FBUSxVQUFVTCxTQUFPSyxPQUFLO0FBRWhDLFFBQU8sUUFBUUwsUUFBTTs7QUFFdkIsTUFBYSxRQUFRLEdBQUc7Q0FDdEI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDRCxDQUFDO0FBQ0YsTUFBYSxPQUFPLEdBQUcsV0FBVyxLQUFLLE1BQU07QUFDN0MsU0FBZ0IsTUFBTSxTQUFTO0FBQzdCLFNBQVEsZUFBZTtDQUN2QixNQUFNLFNBQVNHLFFBQU0sT0FBTyxLQUFLLENBQUMsQ0FBQyxRQUFRO0FBQzNDLEtBQUksT0FBTyxHQUFJLFFBQU8sUUFBUTtFQUM1QixNQUFNO0VBQ04sT0FBTyxPQUFPO0VBQ2YsQ0FBQztBQUNGLFFBQU8sU0FBUzs7QUFFbEIsTUFBYSxjQUFjLFNBQVMsS0FBSyxXQUFXLElBQUk7QUFDeEQsU0FBZ0IsTUFBTSxTQUFTO0FBQzdCLFNBQVEsZUFBZTtDQUN2QixNQUFNLFNBQVMsWUFBWSxRQUFRO0FBQ25DLEtBQUksQ0FBQyxPQUFPLEdBQUksUUFBTyxTQUFTO0FBQ2hDLFNBQVEsZUFBZTtDQUN2QixNQUFNLElBQUksTUFBTSxRQUFRO0FBQ3hCLFFBQU8sUUFBUTtFQUNiLE1BQU07RUFDTixNQUFNLE9BQU87RUFDYixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssUUFBUSxFQUMzQixXQUFXLE1BQ1o7RUFDRixDQUFDOztBQUVKLE1BQWEsbUJBQW1CLFNBQVMsTUFBTSxXQUFXLEtBQUs7QUFDL0QsU0FBZ0IsV0FBVyxTQUFTO0FBQ2xDLFNBQVEsZUFBZTtDQUN2QixNQUFNLFNBQVMsaUJBQWlCLFFBQVE7QUFDeEMsS0FBSSxDQUFDLE9BQU8sR0FBSSxRQUFPLFNBQVM7QUFDaEMsU0FBUSxlQUFlO0NBQ3ZCLE1BQU0sSUFBSSxNQUFNLFFBQVE7QUFDeEIsUUFBTyxRQUFRO0VBQ2IsTUFBTTtFQUNOLE1BQU0sT0FBTztFQUNiLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxRQUFRLEVBQzNCLFdBQVcsTUFDWjtFQUNGLENBQUM7O0FBRUosU0FBZ0IsS0FBSyxTQUFTO0NBQzVCLE1BQU0sU0FBUyxPQUFPLEdBQUc7RUFDdkI7RUFDQTtFQUNBO0VBQ0QsQ0FBQyxDQUFDLENBQUMsUUFBUTtBQUNaLEtBQUksQ0FBQyxPQUFPLEdBQUksUUFBTyxRQUFRLEVBQzdCLFdBQVcsTUFDWixDQUFDO0FBSUYsUUFBTyxRQUhNLE9BQU8sS0FBSyxPQUFPLFlBQVksRUFDMUMsV0FBVyxNQUNaLENBQUMsQ0FDa0I7O0FBRXRCLFNBQVMsd0JBQXdCLFNBQVMsU0FBUzs7Q0FFakQsTUFBTSxRQURTLFFBQVEsT0FBTyxNQUFNLEdBQUcsUUFBUSxTQUFTLENBQ25DLE1BQU0sS0FBSztBQUdoQyxRQUFPLHVCQUZLLE1BQU0sT0FFZ0IseUJBRG5CLE1BQU0sR0FBRyxHQUFHLHdEQUFFLFdBQVUsRUFDYSxJQUFJOztBQUUxRCxTQUFnQixjQUFjLFFBQVE7QUFDcEMsU0FBUSxlQUFhO0VBQ25CLE1BQU0sVUFBVSxJQUFJLFFBQVEsV0FBVztBQUN2QyxNQUFJO0dBQ0YsTUFBTSxTQUFTLE9BQU8sUUFBUTtBQUM5QixPQUFJLE9BQU8sTUFBTSxRQUFRLEtBQUssQ0FBRSxRQUFPLE9BQU87R0FDOUMsTUFBTSxVQUFVLDBCQUEwQixRQUFRLE1BQU0sQ0FBQztBQUN6RCxTQUFNLElBQUksWUFBWSx3QkFBd0IsU0FBUyxRQUFRLENBQUM7V0FDekQsT0FBTztBQUNkLE9BQUksaUJBQWlCLE1BQ25CLE9BQU0sSUFBSSxZQUFZLHdCQUF3QixTQUFTLE1BQU0sUUFBUSxDQUFDO0FBR3hFLFNBQU0sSUFBSSxZQUFZLHdCQUF3QixTQUQ5Qiw0QkFDK0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQ3J0QmxFLFNBQWdCRyxRQUFNLFlBQVk7QUFDcEMsUUFBTyxjQUFjLEtBQUssQ0FBQyxXQUFXOzs7Ozs7Ozs7Ozs7O0FDWHhDLFNBQWdCLFNBQVMsU0FBTyxNQUFNO0FBQ3JDLFFBQU8sV0FBV0MsUUFBTSxHQUFHQSxVQUFRLFFBQVEsUUFBUSxLQUFLQSxRQUFNOzs7Ozs7Ozs7OztBQ0ovRCxTQUFnQixHQUFHLE1BQU0sU0FBUztDQUNqQyxJQUFJLEVBQUUsTUFBTSxRQUFRLFdBQVcsRUFBRTtDQUNqQyxJQUFJLE1BQU0sU0FBUyxNQUFNLElBQUk7Q0FDN0IsSUFBSSxPQUFPLFNBQVMsUUFBUSxLQUFLLElBQUk7Q0FDckMsSUFBSSxNQUFNLE1BQU0sRUFBRTtBQUNsQixRQUFPLFNBQVMsTUFBTTtBQUNyQixNQUFJLEtBQUssSUFBSTtBQUNiLFFBQU0sUUFBUSxPQUFPLElBQUk7QUFDekIsTUFBSSxRQUFRLEtBQU07O0FBRW5CLFFBQU87Ozs7Ozs7Ozs7Ozs7OztBQ2dEUixTQUFnQixJQUFJLE1BQU0sU0FBUztDQUNsQyxJQUFJQyxPQUFLO0NBQ1QsSUFBSSxRQUFRLFdBQVcsUUFBUSxPQUFPO0FBQ3RDLE1BQUtBLFNBQU9DLEdBQVEsT0FBTyxRQUFRLENBQ2xDLEtBQUk7QUFDSCxRQUFNLEtBQUtELE9BQUssS0FBSztBQUNyQixNQUFJLFNBQVMsSUFBSSxDQUFDLGFBQWEsQ0FBRSxRQUFPO1NBQ2pDOzs7OztBQ3JFVixJQUFzQixvQkFBdEIsY0FBZ0QsUUFBUTtDQUN0RCxPQUFPLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQztDQUUzQixPQUFPLFFBQVEsUUFBUSxNQUFNLEVBQzNCLGFBQWEsOEJBQ2QsQ0FBQztDQUVGLE1BQU0sT0FBTyxPQUFPLFNBQVMsUUFBUSxLQUFLLEVBQUUsRUFDMUMsYUFDRSxzSEFDSCxDQUFDO0NBRUYsYUFBc0IsT0FBTyxPQUFPLG9CQUFvQixFQUN0RCxhQUFhLG1DQUNkLENBQUM7Q0FFRixrQkFBa0IsT0FBTyxPQUFPLHVCQUF1QixnQkFBZ0IsRUFDckUsYUFBYSwwQkFDZCxDQUFDO0NBRUYsU0FBUyxPQUFPLE9BQU8sYUFBYSxPQUFPLEVBQ3pDLGFBQWEsaURBQ2QsQ0FBQztDQUVGLFNBQWtCLE9BQU8sT0FBTyxhQUFhLEVBQzNDLGFBQWEsK0JBQ2QsQ0FBQztDQUVGLGFBQXNCLE9BQU8sT0FBTyxvQkFBb0IsRUFDdEQsYUFBYSxvQ0FDZCxDQUFDO0NBRUYsY0FBdUIsT0FBTyxPQUFPLGtCQUFrQixFQUNyRCxhQUFhLHVDQUNkLENBQUM7Q0FFRixlQUFlLE9BQU8sT0FBTyxtQkFBbUIsY0FBYyxFQUM1RCxhQUFhLHdCQUNkLENBQUM7Q0FFRixhQUFzQixPQUFPLE9BQU8sZ0JBQWdCLEVBQ2xELGFBQWEscUNBQ2QsQ0FBQztDQUVGLGNBQXVCLE9BQU8sT0FBTyxpQkFBaUIsRUFDcEQsYUFBYSxzQ0FDZCxDQUFDO0NBRUYsYUFBYTtBQUNYLFNBQU87R0FDTCxLQUFLLEtBQUs7R0FDVixZQUFZLEtBQUs7R0FDakIsaUJBQWlCLEtBQUs7R0FDdEIsUUFBUSxLQUFLO0dBQ2IsTUFBTSxLQUFLO0dBQ1gsWUFBWSxLQUFLO0dBQ2pCLGFBQWEsS0FBSztHQUNsQixjQUFjLEtBQUs7R0FDbkIsWUFBWSxLQUFLO0dBQ2pCLGFBQWEsS0FBSztHQUNuQjs7O0FBMERMLFNBQWdCLDBCQUEwQixTQUF3QjtBQUNoRSxRQUFPO0VBQ0wsS0FBSyxRQUFRLEtBQUs7RUFDbEIsaUJBQWlCO0VBQ2pCLFFBQVE7RUFDUixjQUFjO0VBQ2QsR0FBRztFQUNKOzs7OztBQ3JISCxlQUFzQixjQUFjLGFBQTRCO0NBQzlELE1BQU0sVUFBVSwwQkFBMEIsWUFBWTtDQUV0RCxNQUFNLFdBRGEsTUFBTSxXQUFXLFFBQVEsRUFDakI7Q0FFM0IsTUFBTSxrQkFBa0IsUUFBUSxRQUFRLEtBQUssUUFBUSxnQkFBZ0I7Q0FDckUsTUFBTSxnQkFBZ0IsUUFBUSxRQUFRLEtBQUssUUFBUSxhQUFhO0NBRWhFLE1BQU0scUJBQXFCLE1BQU0sY0FBYyxpQkFBaUIsT0FBTztDQUN2RSxNQUFNLGtCQUFrQixLQUFLLE1BQU0sbUJBQW1CO0FBRXRELE9BQ0UsTUFDRSxpQkFDQSxPQUVFLEtBQUssU0FBUztFQUFDO0VBQVE7RUFBZTtFQUFVO0VBQVUsQ0FBQyxFQUMzRCxNQUNELENBQ0YsRUFDRCxFQUNFLE1BQU0sT0FDSjtFQUNFLFlBQVksUUFBUTtFQUNwQixhQUFhLFFBQVE7RUFDdEIsRUFDRCxNQUNELEVBQ0YsQ0FDRjtBQUVELEtBQUksUUFBUSxZQUFZO0VBQ3RCLE1BQU0sYUFBYSxRQUFRLFFBQVEsS0FBSyxRQUFRLFdBQVc7RUFDM0QsTUFBTSxnQkFBZ0IsTUFBTSxjQUFjLFlBQVksT0FBTztFQUM3RCxNQUFNLGFBQWEsS0FBSyxNQUFNLGNBQWM7QUFDNUMsYUFBVyxhQUFhLFFBQVE7QUFDaEMsYUFBVyxjQUFjLFFBQVE7QUFDakMsUUFBTSxlQUFlLFlBQVksS0FBSyxVQUFVLFlBQVksTUFBTSxFQUFFLENBQUM7O0FBR3ZFLE9BQU0sZUFDSixpQkFDQSxLQUFLLFVBQVUsaUJBQWlCLE1BQU0sRUFBRSxDQUN6QztDQUdELE1BQU0sWUFBWUUsUUFERSxNQUFNLGNBQWMsZUFBZSxPQUFPLENBQ3RCO0FBR3hDLEtBQUksVUFBVSxXQUFXLFFBQVEsWUFBWTtFQUUzQyxNQUFNLGdCQUFnQixRQUFRLFdBQzNCLFFBQVEsS0FBSyxHQUFHLENBQ2hCLFFBQVEsS0FBSyxJQUFJLENBQ2pCLFFBQVEsTUFBTSxJQUFJLENBQ2xCLGFBQWE7QUFDaEIsWUFBVSxRQUFRLE9BQU87O0FBTTNCLE9BQU0sZUFBZSxlQUZNQyxVQUFjLFVBQVUsQ0FFSTtBQUN2RCxLQUFJLFlBQVksUUFBUSxZQUFZO0VBQ2xDLE1BQU0sb0JBQW9CQyxJQUFTLFdBQVcsRUFDNUMsS0FBSyxRQUFRLEtBQ2QsQ0FBQztBQUNGLE1BQUksbUJBQW1CO0dBQ3JCLE1BQU0seUJBQXlCLEtBQzdCLG1CQUNBLGFBQ0EsU0FDRDtBQUNELE9BQUksV0FBVyx1QkFBdUIsRUFBRTs7SUFLdEMsTUFBTSxvQkFBb0JDLEtBSkcsTUFBTSxjQUNqQyx3QkFDQSxPQUNELENBQ3dEO0FBQ3pELGlDQUFJLGtCQUFrQixtRkFBSyxVQUFVO0FBQ25DLHVCQUFrQixJQUFJLFdBQVcsUUFBUTtBQUN6QyxXQUFNLGVBQ0osd0JBQ0FDLEtBQWMsbUJBQW1CO01BQy9CLFdBQVc7TUFDWCxRQUFRO01BQ1IsVUFBVTtNQUNYLENBQUMsQ0FDSDs7OztFQUlQLE1BQU0sNEJBQTRCLEtBQ2hDLFFBQVEsS0FDUixHQUFHLFFBQVEsa0JBQ1o7QUFDRCxNQUFJLFdBQVcsMEJBQTBCLENBQ3ZDLE9BQU0sT0FDSiwyQkFDQSxLQUFLLFFBQVEsS0FBSyxHQUFHLFFBQVEsV0FBVyxrQkFBa0IsQ0FDM0Q7RUFFSCxNQUFNLHFCQUFxQixLQUFLLFFBQVEsS0FBSyxHQUFHLFFBQVEsV0FBVztBQUNuRSxNQUFJLFdBQVcsbUJBQW1CLENBQ2hDLE9BQU0sT0FDSixvQkFDQSxLQUFLLFFBQVEsS0FBSyxHQUFHLFFBQVEsV0FBVyxXQUFXLENBQ3BEO0VBRUgsTUFBTSxvQkFBb0IsS0FBSyxRQUFRLEtBQUssaUJBQWlCO0FBQzdELE1BQUksV0FBVyxrQkFBa0IsQ0FnQi9CLE9BQU0sZUFBZSxvQkFmUSxNQUFNLGNBQ2pDLG1CQUNBLE9BQ0QsRUFFRSxNQUFNLEtBQUssQ0FDWCxLQUFLLFNBQVM7QUFDYixVQUFPLEtBQ0osUUFDQyxHQUFHLFFBQVEsbUJBQ1gsR0FBRyxRQUFRLFdBQVcsa0JBQ3ZCLENBQ0EsUUFBUSxHQUFHLFFBQVEsWUFBWSxHQUFHLFFBQVEsV0FBVyxXQUFXO0lBQ25FLENBQ0QsS0FBSyxLQUFLLENBQzZDOzs7Ozs7QUNoSGhFLE1BQU1DLFVBQVEsYUFBYSxNQUFNO0FBSWpDLE1BQU0saUJBQWlCO0NBQ3JCLE1BQU07Q0FDTixNQUFNO0NBQ1A7QUFFRCxlQUFlLGtCQUFvQztBQUNqRCxLQUFJO0FBQ0YsUUFBTSxJQUFJLFNBQVMsY0FBWTtHQUM3QixNQUFNLEtBQUssS0FBSyxnQkFBZ0I7QUFDaEMsTUFBRyxHQUFHLGVBQWU7QUFDbkIsY0FBUSxNQUFNO0tBQ2Q7QUFDRixNQUFHLEdBQUcsU0FBUyxTQUFTO0FBQ3RCLFFBQUksU0FBUyxFQUNYLFdBQVEsS0FBSztRQUViLFdBQVEsTUFBTTtLQUVoQjtJQUNGO0FBQ0YsU0FBTztTQUNEO0FBQ04sU0FBTzs7O0FBSVgsZUFBZSxlQUNiLGdCQUNpQjtDQUNqQixNQUFNLFdBQVcsS0FBSyxLQUFLLFNBQVMsRUFBRSxZQUFZLFlBQVksZUFBZTtBQUM3RSxPQUFNLFdBQVcsVUFBVSxFQUFFLFdBQVcsTUFBTSxDQUFDO0FBQy9DLFFBQU87O0FBR1QsZUFBZSxpQkFDYixnQkFDQSxVQUNlO0NBQ2YsTUFBTSxVQUFVLGVBQWU7Q0FDL0IsTUFBTSxlQUFlLEtBQUssS0FBSyxVQUFVLE9BQU87QUFFaEQsS0FBSSxXQUFXLGFBQWEsRUFBRTtBQUM1QixVQUFNLDJCQUEyQixhQUFhLGVBQWU7QUFDN0QsTUFBSTtBQUVGLFNBQU0sSUFBSSxTQUFlLFdBQVMsV0FBVztJQUMzQyxNQUFNLEtBQUssS0FBSyxvQkFBb0IsRUFBRSxLQUFLLGNBQWMsQ0FBQztBQUMxRCxPQUFHLEdBQUcsU0FBUyxPQUFPO0FBQ3RCLE9BQUcsR0FBRyxTQUFTLFNBQVM7QUFDdEIsU0FBSSxTQUFTLEVBQ1gsWUFBUztTQUVULHdCQUNFLElBQUksTUFDRixnRUFBZ0UsT0FDakUsQ0FDRjtNQUVIO0tBQ0Y7QUFDRixZQUFTLGdDQUFnQztJQUN2QyxLQUFLO0lBQ0wsT0FBTztJQUNSLENBQUM7QUFDRixXQUFNLGdDQUFnQztXQUMvQixPQUFPO0FBQ2QsV0FBTSw4QkFBOEIsUUFBUTtBQUM1QyxTQUFNLElBQUksTUFBTSxrQ0FBa0MsUUFBUSxJQUFJLFFBQVE7O1FBRW5FO0FBQ0wsVUFBTSx5QkFBeUIsUUFBUSxLQUFLO0FBQzVDLE1BQUk7QUFDRixZQUFTLGFBQWEsUUFBUSxRQUFRO0lBQUUsS0FBSztJQUFVLE9BQU87SUFBVyxDQUFDO0FBQzFFLFdBQU0sK0JBQStCO1dBQzlCLE9BQU87QUFDZCxTQUFNLElBQUksTUFBTSxpQ0FBaUMsUUFBUSxJQUFJLFFBQVE7Ozs7QUFLM0UsZUFBZSxjQUNiLEtBQ0EsTUFDQSxxQkFDZTtBQUNmLE9BQU0sV0FBVyxNQUFNLEVBQUUsV0FBVyxNQUFNLENBQUM7Q0FDM0MsTUFBTSxVQUFVLE1BQU1DLFNBQUcsUUFBUSxLQUFLLEVBQUUsZUFBZSxNQUFNLENBQUM7QUFFOUQsTUFBSyxNQUFNLFNBQVMsU0FBUztFQUMzQixNQUFNLFVBQVUsS0FBSyxLQUFLLEtBQUssTUFBTSxLQUFLO0VBQzFDLE1BQU0sV0FBVyxLQUFLLEtBQUssTUFBTSxNQUFNLEtBQUs7QUFHNUMsTUFBSSxNQUFNLFNBQVMsT0FDakI7QUFHRixNQUFJLE1BQU0sYUFBYSxDQUNyQixPQUFNLGNBQWMsU0FBUyxVQUFVLG9CQUFvQjtPQUN0RDtBQUNMLE9BQ0UsQ0FBQyx3QkFDQSxNQUFNLEtBQUssU0FBUyxtQkFBbUIsSUFDdEMsTUFBTSxLQUFLLFNBQVMsWUFBWSxJQUNoQyxNQUFNLEtBQUssU0FBUywyQkFBMkIsSUFDL0MsTUFBTSxLQUFLLFNBQVMsa0JBQWtCLElBQ3RDLE1BQU0sS0FBSyxTQUFTLGFBQWEsRUFFbkM7QUFFRixTQUFNQSxTQUFHLFNBQVMsU0FBUyxTQUFTOzs7O0FBSzFDLGVBQWUsMkJBQ2IsVUFDQSxnQkFDZTs7Q0FDZixNQUFNLFVBQVUsTUFBTUEsU0FBRyxTQUFTLFVBQVUsUUFBUTtDQUNwRCxNQUFNLGNBQWMsS0FBSyxNQUFNLFFBQVE7QUFHdkMsMEJBQUksWUFBWSw0RUFBTSxRQUNwQixhQUFZLEtBQUssVUFBVSxZQUFZLEtBQUssUUFBUSxRQUNqRCxXQUFtQixlQUFlLFNBQVMsT0FBTyxDQUNwRDtBQUdILE9BQU1BLFNBQUcsVUFBVSxVQUFVLEtBQUssVUFBVSxhQUFhLE1BQU0sRUFBRSxHQUFHLEtBQUs7O0FBRzNFLGVBQWUsNkJBQ2IsVUFDQSxnQkFDZTs7Q0FFZixNQUFNLE9BQU9DLEtBREcsTUFBTUQsU0FBRyxTQUFTLFVBQVUsUUFBUSxDQUN0QjtDQUU5QixNQUFNLHlCQUF5QixJQUFJLElBQUk7RUFDckM7RUFDQTtFQUNBO0VBQ0E7RUFDRCxDQUFDO0NBRUYsTUFBTSxlQUFlLElBQUksSUFBSTtFQUMzQjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRCxDQUFDO0NBR0YsTUFBTSxrQkFBa0IsZUFBZSxNQUFNLFdBQzNDLGFBQWEsSUFBSSxPQUFPLENBQ3pCO0FBR0QsdURBQUksS0FBTSxvRUFBTSxxRUFBTyx3RUFBVSxnRUFBUSxTQUN2QyxNQUFLLEtBQUssTUFBTSxTQUFTLE9BQU8sV0FDOUIsS0FBSyxLQUFLLE1BQU0sU0FBUyxPQUFPLFNBQVMsUUFBUSxZQUFpQjtBQUNoRSxNQUFJLFFBQVEsT0FDVixRQUFPLGVBQWUsU0FBUyxRQUFRLE9BQU87QUFFaEQsU0FBTztHQUNQO0NBR04sTUFBTUUsZUFBeUIsRUFBRTtBQUVqQyxLQUFJLGVBQWUsT0FBTyxXQUFXLENBQUMsdUJBQXVCLElBQUksT0FBTyxDQUFDLENBQ3ZFLGNBQWEsS0FBSyw2QkFBNkI7TUFDMUM7O0FBRUwseURBQ0UsS0FBTSx1RUFBTyxnR0FBK0IsMkVBQVUsa0VBQVEsU0FFOUQsTUFBSyxLQUFLLDhCQUE4QixTQUFTLE9BQU8sV0FDdEQsS0FBSyxLQUFLLDhCQUE4QixTQUFTLE9BQU8sU0FBUyxRQUM5RCxZQUFpQjtBQUNoQixPQUFJLFFBQVEsT0FDVixRQUFPLGVBQWUsU0FBUyxRQUFRLE9BQU87QUFFaEQsVUFBTztJQUVWOztBQUtQLEtBQUksQ0FBQyxpQkFBaUI7O0FBRXBCLHlEQUFJLEtBQU0sZ0VBQU8sc0JBQ2YsY0FBYSxLQUFLLHFCQUFxQjtRQUVwQzs7QUFFTCx5REFBSSxLQUFNLHVFQUFPLHdGQUF1QiwyRUFBVSxrRUFBUSxPQUN4RCxNQUFLLEtBQUssc0JBQXNCLFNBQVMsT0FBTyxTQUFTLEtBQUssS0FDNUQsc0JBQ0EsU0FBUyxPQUFPLE9BQU8sUUFBUSxXQUFtQjtBQUNsRCxPQUFJLE9BQ0YsUUFBTyxlQUFlLFNBQVMsT0FBTztBQUV4QyxVQUFPO0lBQ1A7O0FBSU4sS0FBSSxDQUFDLGVBQWUsU0FBUyx3QkFBd0IsQ0FDbkQsY0FBYSxLQUFLLFlBQVk7QUFHaEMsS0FBSSxDQUFDLGVBQWUsU0FBUyx5QkFBeUIsQ0FDcEQsY0FBYSxLQUFLLGdCQUFnQjtBQUlwQyxNQUFLLE1BQU0sQ0FBQyxTQUFTLGNBQWMsT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUMsQ0FDaEUsS0FDRSxRQUFRLFdBQVcsUUFBUSxJQUMzQixZQUFZLGdDQUNaLFlBQVksOEJBQ1o7O0VBRUEsTUFBTSxNQUFNO0FBQ1osdUJBQUksSUFBSSxpRkFBVSwrRUFBUSxpRkFBVyxrRUFBSSxRQUFRO0dBQy9DLE1BQU0sU0FBUyxJQUFJLFNBQVMsT0FBTyxTQUFTLEdBQUc7QUFDL0MsT0FBSSxDQUFDLGVBQWUsU0FBUyxPQUFPLENBQ2xDLGNBQWEsS0FBSyxRQUFROzs7QUFPbEMsTUFBSyxNQUFNLFdBQVcsYUFDcEIsUUFBTyxLQUFLLEtBQUs7QUFHbkIsS0FBSSxNQUFNLHVCQUFRLEtBQUssdUVBQU0sbUVBQVMsTUFBTSxDQUMxQyxNQUFLLEtBQUssUUFBUSxRQUFRLEtBQUssS0FBSyxRQUFRLE1BQU0sUUFDL0MsU0FBaUIsQ0FBQyxhQUFhLFNBQVMsS0FBSyxDQUMvQztDQUlILE1BQU0sY0FBY0MsS0FBUyxNQUFNO0VBQ2pDLFdBQVc7RUFDWCxRQUFRO0VBQ1IsVUFBVTtFQUNYLENBQUM7QUFDRixPQUFNSCxTQUFHLFVBQVUsVUFBVSxZQUFZOztBQUczQyxTQUFTLGVBQWUsU0FBd0I7O0FBQzlDLFNBQU0sd0JBQXdCO0FBQzlCLEtBQUksQ0FBQyxRQUFRLEtBQ1gsT0FBTSxJQUFJLE1BQU0sMENBQTBDO0FBRTVELFNBQVEsT0FBTyxLQUFLLFFBQVEsUUFBUSxLQUFLLEVBQUUsUUFBUSxLQUFLO0FBQ3hELFNBQU0sNEJBQTRCLFFBQVEsT0FBTztBQUVqRCxLQUFJLENBQUMsUUFBUSxNQUFNO0FBQ2pCLFVBQVEsT0FBTyxLQUFLLE1BQU0sUUFBUSxLQUFLLENBQUM7QUFDeEMsVUFBTSxpREFBaUQsUUFBUSxPQUFPOztBQUd4RSxLQUFJLHNCQUFDLFFBQVEsNkVBQVMsUUFDcEIsS0FBSSxRQUFRLGtCQUFrQjtBQUM1QixVQUFRLFVBQVUsa0JBQWtCLFFBQVE7QUFDNUMsVUFBTSxxQkFBcUI7WUFDbEIsUUFBUSxzQkFBc0I7QUFDdkMsVUFBUSxVQUFVLGdCQUFnQixRQUFRO0FBQzFDLFVBQU0seUJBQXlCO09BRS9CLE9BQU0sSUFBSSxNQUFNLHNDQUFzQztBQUcxRCxLQUNFLFFBQVEsUUFBUSxNQUFNLFdBQVcsV0FBVywrQkFBK0IsRUFLM0U7TUFIWSxTQUFTLHNCQUFzQixFQUN6QyxVQUFVLFFBQ1gsQ0FBQyxDQUNNLFNBQVMsd0JBQXdCLENBQ3ZDLFNBQVEsVUFBVSxRQUFRLFFBQVEsS0FBSyxXQUNyQyxXQUFXLGlDQUNQLDBCQUNBLE9BQ0w7O0FBSUwsUUFBTyx1QkFBdUIsUUFBUTs7QUFHeEMsZUFBc0IsV0FBVyxhQUE0QjtBQUMzRCxTQUFNLGtEQUFrRDtBQUN4RCxTQUFNLFlBQVk7Q0FFbEIsTUFBTSxVQUFVLGVBQWUsWUFBWTtBQUUzQyxTQUFNLHlCQUF5QjtBQUMvQixTQUFNLFFBQVEsUUFBUTtBQUd0QixLQUFJLENBQUUsTUFBTSxpQkFBaUIsQ0FDM0IsT0FBTSxJQUFJLE1BQ1IsaUZBQ0Q7Q0FHSCxNQUFNLGlCQUFpQixRQUFRO0FBRy9CLE9BQU0sV0FBVyxRQUFRLE1BQU0sUUFBUSxPQUFPO0FBRTlDLEtBQUksQ0FBQyxRQUFRLE9BQ1gsS0FBSTtFQUVGLE1BQU0sV0FBVyxNQUFNLGVBQWUsZUFBZTtBQUNyRCxRQUFNLGlCQUFpQixnQkFBZ0IsU0FBUztBQUloRCxRQUFNLGNBRGUsS0FBSyxLQUFLLFVBQVUsT0FBTyxFQUc5QyxRQUFRLE1BQ1IsUUFBUSxRQUFRLFNBQVMsd0JBQXdCLENBQ2xEO0FBR0QsUUFBTSxjQUFjO0dBQ2xCLEtBQUssUUFBUTtHQUNiLE1BQU0sUUFBUTtHQUNkLFlBQVksY0FBYyxRQUFRLEtBQUs7R0FDeEMsQ0FBQztFQUdGLE1BQU0sa0JBQWtCLEtBQUssS0FBSyxRQUFRLE1BQU0sZUFBZTtBQUMvRCxNQUFJLFdBQVcsZ0JBQWdCLENBQzdCLE9BQU0sMkJBQTJCLGlCQUFpQixRQUFRLFFBQVE7RUFJcEUsTUFBTSxTQUFTLEtBQUssS0FBSyxRQUFRLE1BQU0sV0FBVyxhQUFhLFNBQVM7QUFDeEUsTUFBSSxXQUFXLE9BQU8sSUFBSSxRQUFRLG9CQUNoQyxPQUFNLDZCQUE2QixRQUFRLFFBQVEsUUFBUTtXQUUzRCxDQUFDLFFBQVEsdUJBQ1QsV0FBVyxLQUFLLEtBQUssUUFBUSxNQUFNLFVBQVUsQ0FBQyxDQUc5QyxPQUFNQSxTQUFHLEdBQUcsS0FBSyxLQUFLLFFBQVEsTUFBTSxVQUFVLEVBQUU7R0FDOUMsV0FBVztHQUNYLE9BQU87R0FDUixDQUFDO0VBSUosTUFBTSxpQkFBaUIsTUFBTUEsU0FBRyxTQUFTLGlCQUFpQixRQUFRO0VBQ2xFLE1BQU0sVUFBVSxLQUFLLE1BQU0sZUFBZTtBQUcxQyxNQUFJLENBQUMsUUFBUSxRQUNYLFNBQVEsVUFBVSxFQUFFO0FBRXRCLFVBQVEsUUFBUSxPQUFPLHNCQUFzQixRQUFRLGtCQUFrQjtBQUd2RSxNQUFJLFFBQVEsV0FBVyxRQUFRLFlBQVksUUFBUSxRQUNqRCxTQUFRLFVBQVUsUUFBUTtBQUk1QixNQUFJLFFBQVEsa0JBQWtCLE1BRTVCLFNBQ0Usa0JBQWtCLFFBQVEsY0FBYyxvQ0FDekM7QUFHSCxRQUFNQSxTQUFHLFVBQ1AsaUJBQ0EsS0FBSyxVQUFVLFNBQVMsTUFBTSxFQUFFLEdBQUcsS0FDcEM7VUFDTSxPQUFPO0FBQ2QsUUFBTSxJQUFJLE1BQU0sNkJBQTZCLFFBQVE7O0FBSXpELFNBQU0sdUJBQXVCLFFBQVEsT0FBTzs7QUFHOUMsZUFBZSxXQUFXLFFBQWMsU0FBUyxPQUFPO0NBQ3RELE1BQU1JLFNBQU8sTUFBTSxVQUFVQyxRQUFNLEVBQUUsQ0FBQyxDQUFDLFlBQVksT0FBVTtBQUc3RCxLQUFJRCxRQUNGO01BQUlBLE9BQUssUUFBUSxDQUNmLE9BQU0sSUFBSSxNQUNSLFFBQVFDLE9BQUssNEVBQ2Q7V0FDUUQsT0FBSyxhQUFhLEVBRTNCO1FBRGMsTUFBTSxhQUFhQyxPQUFLLEVBQzVCLE9BQ1IsT0FBTSxJQUFJLE1BQ1IsUUFBUUEsT0FBSyxzRUFDZDs7O0FBS1AsS0FBSSxDQUFDLE9BQ0gsS0FBSTtBQUNGLFVBQU0sbUNBQW1DQSxTQUFPO0FBQ2hELE1BQUksQ0FBQyxPQUNILE9BQU0sV0FBV0EsUUFBTSxFQUFFLFdBQVcsTUFBTSxDQUFDO1VBRXRDLEdBQUc7QUFDVixRQUFNLElBQUksTUFBTSxzQ0FBc0NBLFVBQVEsRUFDNUQsT0FBTyxHQUNSLENBQUM7OztBQUtSLFNBQVMsY0FBYyxNQUFzQjtBQUMzQyxRQUFPLEtBQUssTUFBTSxJQUFJLENBQUMsS0FBSzs7Ozs7QUNoZDlCLElBQXNCLHdCQUF0QixjQUFvRCxRQUFRO0NBQzFELE9BQU8sUUFBUSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDO0NBRWhELE9BQU8sUUFBUSxRQUFRLE1BQU0sRUFDM0IsYUFDRSxrRUFDSCxDQUFDO0NBRUYsTUFBTSxPQUFPLE9BQU8sU0FBUyxRQUFRLEtBQUssRUFBRSxFQUMxQyxhQUNFLHNIQUNILENBQUM7Q0FFRixhQUFzQixPQUFPLE9BQU8sb0JBQW9CLEVBQ3RELGFBQWEsbUNBQ2QsQ0FBQztDQUVGLGtCQUFrQixPQUFPLE9BQU8sdUJBQXVCLGdCQUFnQixFQUNyRSxhQUFhLDBCQUNkLENBQUM7Q0FFRixTQUFTLE9BQU8sT0FBTyxnQkFBZ0IsT0FBTyxFQUM1QyxhQUFhLGlEQUNkLENBQUM7Q0FFRixXQUFXLE9BQU8sT0FBTyw2QkFBNkIsU0FBUyxFQUM3RCxhQUFhLG1DQUNkLENBQUM7Q0FFRixZQUFZLE9BQU8sUUFBUSxnQkFBZ0IsTUFBTSxFQUMvQyxhQUFhLGlDQUNkLENBQUM7Q0FFRixnQkFBeUIsT0FBTyxPQUFPLHFCQUFxQixFQUMxRCxhQUFhLHVCQUNkLENBQUM7Q0FFRixjQUF1QixPQUFPLE9BQU8sbUJBQW1CLEVBQ3RELGFBQWEsOEJBQ2QsQ0FBQztDQUVGLHNCQUFzQixPQUFPLFFBQVEsMkJBQTJCLE9BQU8sRUFDckUsYUFBYSxzREFDZCxDQUFDO0NBRUYsU0FBUyxPQUFPLFFBQVEsYUFBYSxPQUFPLEVBQzFDLGFBQWEsd0NBQ2QsQ0FBQztDQUVGLGFBQWE7QUFDWCxTQUFPO0dBQ0wsS0FBSyxLQUFLO0dBQ1YsWUFBWSxLQUFLO0dBQ2pCLGlCQUFpQixLQUFLO0dBQ3RCLFFBQVEsS0FBSztHQUNiLFVBQVUsS0FBSztHQUNmLFdBQVcsS0FBSztHQUNoQixlQUFlLEtBQUs7R0FDcEIsYUFBYSxLQUFLO0dBQ2xCLHFCQUFxQixLQUFLO0dBQzFCLFFBQVEsS0FBSztHQUNkOzs7QUFnRUwsU0FBZ0IsOEJBQThCLFNBQTRCO0FBQ3hFLFFBQU87RUFDTCxLQUFLLFFBQVEsS0FBSztFQUNsQixpQkFBaUI7RUFDakIsUUFBUTtFQUNSLFVBQVU7RUFDVixXQUFXO0VBQ1gscUJBQXFCO0VBQ3JCLFFBQVE7RUFDUixHQUFHO0VBQ0o7Ozs7O0FDdklILElBQXNCLHFCQUF0QixjQUFpRCxRQUFRO0NBQ3ZELE9BQU8sUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDO0NBRTVCLE9BQU8sUUFBUSxRQUFRLE1BQU0sRUFDM0IsYUFBYSwwQ0FDZCxDQUFDO0NBRUYsTUFBTSxPQUFPLE9BQU8sU0FBUyxRQUFRLEtBQUssRUFBRSxFQUMxQyxhQUNFLHNIQUNILENBQUM7Q0FFRixhQUFzQixPQUFPLE9BQU8sb0JBQW9CLEVBQ3RELGFBQWEsbUNBQ2QsQ0FBQztDQUVGLGtCQUFrQixPQUFPLE9BQU8sdUJBQXVCLGdCQUFnQixFQUNyRSxhQUFhLDBCQUNkLENBQUM7Q0FFRixTQUFTLE9BQU8sT0FBTyxhQUFhLE9BQU8sRUFDekMsYUFBYSxpREFDZCxDQUFDO0NBRUYsYUFBYTtBQUNYLFNBQU87R0FDTCxLQUFLLEtBQUs7R0FDVixZQUFZLEtBQUs7R0FDakIsaUJBQWlCLEtBQUs7R0FDdEIsUUFBUSxLQUFLO0dBQ2Q7OztBQWdDTCxTQUFnQiwyQkFBMkIsU0FBeUI7QUFDbEUsUUFBTztFQUNMLEtBQUssUUFBUSxLQUFLO0VBQ2xCLGlCQUFpQjtFQUNqQixRQUFRO0VBQ1IsR0FBRztFQUNKOzs7OztBQzVESCxNQUFNQyxVQUFRLGFBQWEsVUFBVTtBQUVyQyxlQUFzQixRQUFRLGFBQTZCO0NBQ3pELE1BQU0sVUFBVSwyQkFBMkIsWUFBWTtDQUd2RCxNQUFNLFNBQVMsTUFBTSxlQUZHLFFBQVEsUUFBUSxLQUFLLFFBQVEsZ0JBQWdCLEVBSW5FLFFBQVEsYUFBYSxRQUFRLFFBQVEsS0FBSyxRQUFRLFdBQVcsR0FBRyxPQUNqRTtBQUVELE1BQUssTUFBTSxVQUFVLE9BQU8sU0FBUztFQUNuQyxNQUFNLFNBQVMsUUFBUSxRQUFRLEtBQUssUUFBUSxRQUFRLE9BQU8sZ0JBQWdCO0FBRTNFLFVBQU0sZ0NBQWdDLE9BQU8sWUFBWSxTQUFTLE9BQU87QUFDekUsUUFBTSxrQkFBa0IsS0FBSyxRQUFRLGVBQWUsRUFBRSxFQUNwRCxTQUFTLE9BQU8sWUFBWSxTQUM3QixDQUFDOzs7Ozs7QUNWTixNQUFNQyxVQUFRLGFBQWEsY0FBYztBQVF6QyxlQUFzQixXQUFXLGFBQWdDO0FBQy9ELFNBQU0sK0JBQStCO0FBQ3JDLFNBQU0sUUFBUSxZQUFZO0NBRTFCLE1BQU0sVUFBVSw4QkFBOEIsWUFBWTtDQUUxRCxNQUFNLGtCQUFrQixRQUFRLFFBQVEsS0FBSyxRQUFRLGdCQUFnQjtDQUVyRSxNQUFNLEVBQUUsYUFBYSxTQUFTLGFBQWEsWUFBWSxjQUNyRCxNQUFNLGVBQ0osaUJBQ0EsUUFBUSxhQUFhLFFBQVEsUUFBUSxLQUFLLFFBQVEsV0FBVyxHQUFHLE9BQ2pFO0NBRUgsZUFBZSxnQkFBZ0IsZUFBcUIsV0FBaUI7QUFDbkUsTUFBSSxDQUFDLFFBQVEsVUFDWCxRQUFPO0dBQ0wsT0FBTztHQUNQLE1BQU07R0FDTixTQUFTO0lBQUUsTUFBTTtJQUFNLFNBQVM7SUFBTSxLQUFLO0lBQU07R0FDbEQ7RUFFSCxNQUFNLEVBQUUsY0FBTSxnQkFBTyxvQkFBUyx1QkFBWSxZQUFZQyxlQUFhQyxVQUFRO0FBRTNFLE1BQUksQ0FBQ0MsVUFBUSxDQUFDQyxRQUNaLFFBQU87R0FDTCxPQUFPO0dBQ1AsTUFBTTtHQUNOLFNBQVM7SUFBRSxNQUFNO0lBQU0sU0FBUztJQUFNLEtBQUs7SUFBTTtHQUNsRDtBQUdILE1BQUksQ0FBQyxRQUFRLE9BQ1gsS0FBSTtBQUNGLFNBQU1DLFVBQVEsTUFBTSxjQUFjO0lBQ2hDO0lBQ0E7SUFDQSxVQUFVQyxVQUFRO0lBQ2xCLE1BQU0sUUFBUTtJQUNkLFlBQ0VKLFVBQVEsU0FBUyxRQUFRLElBQ3pCQSxVQUFRLFNBQVMsT0FBTyxJQUN4QkEsVUFBUSxTQUFTLEtBQUs7SUFDekIsQ0FBQztXQUNLLEdBQUc7QUFDVixXQUNFLFdBQVcsS0FBSyxVQUNkO0lBQUU7SUFBTztJQUFNLFVBQVVJLFVBQVE7SUFBSyxFQUN0QyxNQUNBLEVBQ0QsR0FDRjtBQUNELFdBQVEsTUFBTSxFQUFFOztBQUdwQixTQUFPO0dBQUU7R0FBTztHQUFNO0dBQVM7R0FBUzs7Q0FHMUMsU0FBUyxZQUFZLGVBQXFCLFdBQWlCO0VBQ3pELE1BQU0sYUFBYSxTQUFTLDBCQUEwQixFQUNwRCxVQUFVLFNBQ1gsQ0FBQyxDQUFDLE1BQU07RUFFVCxNQUFNLEVBQUUsc0JBQXNCLFFBQVE7QUFDdEMsTUFBSSxDQUFDLGtCQUNILFFBQU87R0FDTCxPQUFPO0dBQ1AsTUFBTTtHQUNOLFNBQVM7SUFBRSxNQUFNO0lBQU0sU0FBUztJQUFNLEtBQUs7SUFBTTtHQUNsRDtBQUVILFVBQU0sc0JBQXNCLG9CQUFvQjtFQUNoRCxNQUFNLENBQUNGLFNBQU9ELFVBQVEsa0JBQWtCLE1BQU0sSUFBSTtFQUNsRCxNQUFNRSxZQUFVLElBQUksUUFBUSxFQUMxQixNQUFNLFFBQVEsSUFBSSxjQUNuQixDQUFDO0VBQ0YsSUFBSUU7QUFDSixNQUFJLFFBQVEsYUFBYSxTQUFTO0FBUWhDLGVBUDBCLFdBQ3ZCLE1BQU0sS0FBSyxDQUNYLEtBQUssU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUMxQixRQUFRLE1BQU0sVUFBVSxLQUFLLFVBQVUsTUFBTSxDQUM3QyxLQUFLLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQyxDQUNoQyxJQUFJLFNBQVMsQ0FFWSxNQUN6QixjQUFZRCxVQUFRLFNBQVNMLGNBQy9CO0FBRUQsT0FBSSxDQUFDSyxVQUNILE9BQU0sSUFBSSxVQUNSLGdDQUFnQ0wsY0FBWSwwQkFBMEIsYUFDdkU7UUFHSCxhQUFVO0dBQ1IsS0FBSyxJQUFJQztHQUNUO0dBQ0EsTUFBTUQ7R0FDUDtBQUVILFNBQU87R0FBRTtHQUFPO0dBQU07R0FBUztHQUFTOztBQUcxQyxLQUFJLENBQUMsUUFBUSxRQUFRO0FBQ25CLFFBQU0sUUFBUSxZQUFZO0FBQzFCLFFBQU0sa0JBQWtCLGlCQUFpQixFQUN2QyxzQkFBc0IsUUFBUSxRQUMzQixNQUFNLFdBQVc7QUFDaEIsUUFBSyxHQUFHLFlBQVksR0FBRyxPQUFPLHFCQUFxQixZQUFZO0FBRS9ELFVBQU87S0FFVCxFQUFFLENBQ0gsRUFDRixDQUFDOztDQUdKLE1BQU0sRUFBRSxPQUFPLE1BQU0sU0FBUyxZQUFZLFFBQVEsY0FDOUMsWUFBWSxhQUFhLFlBQVksUUFBUSxHQUM3QyxNQUFNLGdCQUFnQixhQUFhLFlBQVksUUFBUTtBQUUzRCxNQUFLLE1BQU0sVUFBVSxTQUFTO0VBQzVCLE1BQU0sU0FBUyxRQUNiLFFBQVEsS0FDUixRQUFRLFFBQ1IsR0FBRyxPQUFPLGtCQUNYO0VBQ0QsTUFBTSxNQUNKLE9BQU8sYUFBYSxVQUFVLE9BQU8sYUFBYSxTQUFTLFNBQVM7RUFDdEUsTUFBTSxXQUFXLEdBQUcsV0FBVyxHQUFHLE9BQU8sZ0JBQWdCLEdBQUc7RUFDNUQsTUFBTSxVQUFVLEtBQUssUUFBUSxTQUFTO0FBRXRDLE1BQUksQ0FBQyxRQUFRLFFBQVE7QUFDbkIsT0FBSSxDQUFDLFdBQVcsUUFBUSxFQUFFO0FBQ3hCLFlBQU0sS0FBSyxvQkFBb0IsUUFBUTtBQUN2Qzs7QUFHRixPQUFJLENBQUMsUUFBUSxvQkFDWCxLQUFJO0lBQ0YsTUFBTSxTQUFTLFNBQVMsR0FBRyxVQUFVLFdBQVc7S0FDOUMsS0FBSztLQUNMLEtBQUssUUFBUTtLQUNiLE9BQU87S0FDUixDQUFDO0FBQ0YsWUFBUSxPQUFPLE1BQU0sT0FBTztZQUNyQixHQUFHO0FBQ1YsUUFDRSxhQUFhLFNBQ2IsRUFBRSxRQUFRLFNBQ1IsNERBQ0QsRUFDRDtBQUNBLGFBQVEsS0FBSyxFQUFFLFFBQVE7QUFDdkIsYUFBTSxLQUFLLEdBQUcsT0FBTywrQkFBK0I7VUFFcEQsT0FBTTs7QUFLWixPQUFJLFFBQVEsYUFBYSxRQUFRLE9BQU87QUFDdEMsWUFBTSxLQUFLLDJCQUEyQixRQUFRLE1BQU07QUFDcEQsUUFBSTtLQUNGLE1BQU0sWUFBWSxRQUFRLGNBQ3RCLE9BQU8sUUFBUSxZQUFZLElBRXpCLE1BQU0sUUFBUyxNQUFNLGdCQUFnQjtNQUM3QjtNQUNDO01BQ1AsS0FBSyxRQUFRO01BQ2QsQ0FBQyxFQUNGLEtBQUs7S0FDWCxNQUFNLGVBQWUsU0FBUyxRQUFRO0tBQ3RDLE1BQU0sWUFBWSxNQUFNLFFBQVMsTUFBTSxtQkFBbUI7TUFDakQ7TUFDRDtNQUNOLE1BQU07TUFDTixZQUFZO01BQ1osV0FBVyxFQUFFLFFBQVEsT0FBTztNQUM1QixTQUFTO09BQ1Asa0JBQWtCLGFBQWE7T0FDL0IsZ0JBQWdCO09BQ2pCO01BRUQsTUFBTSxNQUFNLGNBQWMsUUFBUTtNQUNuQyxDQUFDO0FBQ0YsYUFBTSxLQUFLLHlCQUF5QjtBQUNwQyxhQUFNLEtBQUssb0JBQW9CLFVBQVUsS0FBSyxxQkFBcUI7YUFDNUQsR0FBRztBQUNWLGFBQU0sTUFDSixVQUFVLEtBQUssVUFDYjtNQUFFO01BQU87TUFBTSxLQUFLLFFBQVE7TUFBSyxVQUFVO01BQVMsRUFDcEQsTUFDQSxFQUNELEdBQ0Y7QUFDRCxhQUFNLE1BQU0sRUFBRTs7Ozs7O0FBT3hCLFNBQVMsU0FBUyxLQUFhO0NBQzdCLE1BQU0sV0FBVyxJQUFJLE1BQU0sSUFBSTtDQUMvQixNQUFNQyxZQUFVLFNBQVMsS0FBSztBQUc5QixRQUFPO0VBQ0wsTUFIVyxTQUFTLEtBQUssSUFBSTtFQUk3QjtFQUNBO0VBQ0Q7Ozs7O0FDN09ILElBQXNCLDBCQUF0QixjQUFzRCxRQUFRO0NBQzVELE9BQU8sUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDO0NBRWpDLE9BQU8sUUFBUSxRQUFRLE1BQU0sRUFDM0IsYUFBYSxvREFDZCxDQUFDO0NBRUYsTUFBTSxPQUFPLE9BQU8sU0FBUyxRQUFRLEtBQUssRUFBRSxFQUMxQyxhQUNFLHNIQUNILENBQUM7Q0FFRixhQUFzQixPQUFPLE9BQU8sb0JBQW9CLEVBQ3RELGFBQWEsbUNBQ2QsQ0FBQztDQUVGLGtCQUFrQixPQUFPLE9BQU8sdUJBQXVCLGdCQUFnQixFQUNyRSxhQUFhLDBCQUNkLENBQUM7Q0FFRixZQUFZLE9BQU8sT0FBTyxtQkFBbUIsTUFBTSxFQUNqRCxhQUNFLGlHQUNILENBQUM7Q0FFRixhQUFhO0FBQ1gsU0FBTztHQUNMLEtBQUssS0FBSztHQUNWLFlBQVksS0FBSztHQUNqQixpQkFBaUIsS0FBSztHQUN0QixXQUFXLEtBQUs7R0FDakI7OztBQWdDTCxTQUFnQixnQ0FBZ0MsU0FBOEI7QUFDNUUsUUFBTztFQUNMLEtBQUssUUFBUSxLQUFLO0VBQ2xCLGlCQUFpQjtFQUNqQixXQUFXO0VBQ1gsR0FBRztFQUNKOzs7OztBQzdESCxNQUFNTSxVQUFRLGFBQWEsZUFBZTtBQUUxQyxNQUFNQyxpQkFFRixFQUNGLFNBQVMsUUFBUSxXQUFXO0FBQzFCLFdBQVUsUUFBUTtFQUFDO0VBQVc7RUFBVztFQUFRLEdBQUc7RUFBTyxFQUFFLEVBQzNELE9BQU8sV0FDUixDQUFDO0dBRUw7QUFFRCxlQUFzQixxQkFBcUIsYUFBa0M7O0NBQzNFLE1BQU0sVUFBVSxnQ0FBZ0MsWUFBWTtDQUk1RCxNQUFNLFNBQVMsTUFBTSxlQUZHLEtBQUssUUFBUSxLQUFLLFFBQVEsZ0JBQWdCLEVBSWhFLFFBQVEsYUFBYSxRQUFRLFFBQVEsS0FBSyxRQUFRLFdBQVcsR0FBRyxPQUNqRTtBQU1ELEtBQUksQ0FKVyxPQUFPLFFBQVEsTUFDM0IsTUFBTSxFQUFFLGFBQWEsUUFBUSxZQUFZLEVBQUUsU0FBUyxZQUN0RCxDQUdDLE9BQU0sSUFBSSxNQUNSLGtDQUFrQyxRQUFRLFNBQVMsd0JBQ3BEO0NBR0gsTUFBTSxvQ0FBVyxtQkFBbUIsUUFBUSx5RkFBVyxLQUFLLFNBQzFELFFBQ0UsUUFBUSxLQUNSLFFBQVEsV0FDUixHQUFHLE9BQU8sV0FBVyxHQUFHLFFBQVEsU0FBUyxHQUFHLEtBQUssT0FDbEQsQ0FDRjtBQUVELEtBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxRQUFRLFVBQ3ZDLE9BQU0sSUFBSSxNQUNSLGtDQUFrQyxRQUFRLFNBQVMsa0JBQ3BEO0FBR0gsU0FBTSwwQ0FBMEM7QUFDaEQsU0FBTSxRQUFRLFNBQVM7Q0FFdkIsTUFBTSxnQkFBZ0IsTUFBTSxRQUFRLElBQUksU0FBUyxLQUFLLE1BQU0sV0FBVyxFQUFFLENBQUMsQ0FBQztDQUUzRSxNQUFNLGdCQUFnQixTQUFTLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxHQUFHO0FBRWxFLEtBQUksY0FBYyxPQUNoQixPQUFNLElBQUksTUFDUixxQ0FBcUMsS0FBSyxVQUFVLGNBQWMsR0FDbkU7Q0FHSCxNQUFNLFNBQVMsUUFDYixRQUFRLEtBQ1IsUUFBUSxXQUNSLEdBQUcsT0FBTyxXQUFXLEdBQUcsUUFBUSxTQUFTLGlCQUMxQztBQUVELHlDQUFlLFFBQVEsc0dBQVksVUFBVSxPQUFPO0FBRXBELFNBQU0sOEJBQThCLFNBQVM7Ozs7O0FDMUUvQyxJQUFhLG1CQUFiLGNBQXNDLHFCQUFxQjtDQUN6RCxPQUFPLFFBQVEsUUFBUSxNQUFNO0VBQzNCLGFBQWE7RUFDYixVQUFVLENBQ1IsQ0FDRSxzREFDQTtnRkFFRCxDQUNGO0VBQ0YsQ0FBQztDQUVGLE9BQU8sUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDO0NBRTlCLE1BQU0sVUFBVTtBQUNkLFFBQU0saUJBQWlCLEtBQUssWUFBWSxDQUFDOzs7Ozs7QUNoQjdDLElBQXNCLG1CQUF0QixjQUErQyxRQUFRO0NBQ3JELE9BQU8sUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDO0NBRTFCLE9BQU8sUUFBUSxRQUFRLE1BQU0sRUFDM0IsYUFBYSw2QkFDZCxDQUFDO0NBRUYsU0FBa0IsT0FBTyxPQUFPLGVBQWUsRUFDN0MsYUFDRSxtRUFDSCxDQUFDO0NBRUYsTUFBZSxPQUFPLE9BQU8sU0FBUyxFQUNwQyxhQUNFLHNIQUNILENBQUM7Q0FFRixlQUF3QixPQUFPLE9BQU8sbUJBQW1CLEVBQ3ZELGFBQWEsd0JBQ2QsQ0FBQztDQUVGLGFBQXNCLE9BQU8sT0FBTyxvQkFBb0IsRUFDdEQsYUFBYSxtQ0FDZCxDQUFDO0NBRUYsa0JBQTJCLE9BQU8sT0FBTyx1QkFBdUIsRUFDOUQsYUFBYSwwQkFDZCxDQUFDO0NBRUYsWUFBcUIsT0FBTyxPQUFPLGdCQUFnQixFQUNqRCxhQUNFLCtFQUNILENBQUM7Q0FFRixZQUFxQixPQUFPLE9BQU8sbUJBQW1CLEVBQ3BELGFBQ0UsK0VBQ0gsQ0FBQztDQUVGLFdBQXFCLE9BQU8sUUFBUSxjQUFjLEVBQ2hELGFBQ0UsNkZBQ0gsQ0FBQztDQUVGLGdCQUF5QixPQUFPLE9BQU8scUJBQXFCLEVBQzFELGFBQ0UsZ0ZBQ0gsQ0FBQztDQUVGLFlBQXNCLE9BQU8sUUFBUSxnQkFBZ0IsRUFDbkQsYUFBYSx1REFDZCxDQUFDO0NBRUYsWUFBcUIsT0FBTyxPQUFPLFFBQVEsRUFDekMsYUFDRSxrSEFDSCxDQUFDO0NBRUYsY0FBd0IsT0FBTyxRQUFRLFdBQVcsRUFDaEQsYUFDRSx5RkFDSCxDQUFDO0NBRUYsTUFBZSxPQUFPLE9BQU8sU0FBUyxFQUNwQyxhQUNFLDRFQUNILENBQUM7Q0FFRixZQUFxQixPQUFPLE9BQU8sZ0JBQWdCLEVBQ2pELGFBQ0UsOEZBQ0gsQ0FBQztDQUVGLGNBQXdCLE9BQU8sUUFBUSxtQkFBbUIsRUFDeEQsYUFDRSxzSEFDSCxDQUFDO0NBRUYsV0FBVyxPQUFPLFFBQVEsZUFBZSxNQUFNLEVBQzdDLGFBQWEsb0RBQ2QsQ0FBQztDQUVGLE1BQWdCLE9BQU8sUUFBUSxTQUFTLEVBQ3RDLGFBQ0Usb0dBQ0gsQ0FBQztDQUVGLFFBQWtCLE9BQU8sUUFBUSxjQUFjLEVBQzdDLGFBQWEsOERBQ2QsQ0FBQztDQUVGLFVBQW9CLE9BQU8sUUFBUSxnQkFBZ0IsRUFDakQsYUFBYSx5QkFDZCxDQUFDO0NBRUYsVUFBb0IsT0FBTyxRQUFRLGdCQUFnQixFQUNqRCxhQUFhLHFDQUNkLENBQUM7Q0FFRixNQUFlLE9BQU8sT0FBTyxTQUFTLEVBQ3BDLGFBQWEsbUNBQ2QsQ0FBQztDQUVGLFVBQW1CLE9BQU8sT0FBTyxnQkFBZ0IsRUFDL0MsYUFBYSxpREFDZCxDQUFDO0NBRUYsVUFBbUIsT0FBTyxPQUFPLGFBQWEsRUFDNUMsYUFBYSw4Q0FDZCxDQUFDO0NBRUYsZUFBeUIsT0FBTyxRQUFRLHNCQUFzQixFQUM1RCxhQUNFLDZIQUNILENBQUM7Q0FFRixXQUFxQixPQUFPLFFBQVEsZUFBZSxFQUNqRCxhQUNFLG9GQUNILENBQUM7Q0FFRixlQUF5QixPQUFPLFFBQVEsb0JBQW9CLEVBQzFELGFBQ0UsaUdBQ0gsQ0FBQztDQUVGLFFBQWtCLE9BQU8sUUFBUSxjQUFjLEVBQzdDLGFBQ0UsNEVBQ0gsQ0FBQztDQUVGLFdBQXNCLE9BQU8sTUFBTSxpQkFBaUIsRUFDbEQsYUFBYSxnREFDZCxDQUFDO0NBRUYsY0FBd0IsT0FBTyxRQUFRLGtCQUFrQixFQUN2RCxhQUFhLG1DQUNkLENBQUM7Q0FFRixvQkFBOEIsT0FBTyxRQUFRLHlCQUF5QixFQUNwRSxhQUFhLHlDQUNkLENBQUM7Q0FFRixhQUFhO0FBQ1gsU0FBTztHQUNMLFFBQVEsS0FBSztHQUNiLEtBQUssS0FBSztHQUNWLGNBQWMsS0FBSztHQUNuQixZQUFZLEtBQUs7R0FDakIsaUJBQWlCLEtBQUs7R0FDdEIsV0FBVyxLQUFLO0dBQ2hCLFdBQVcsS0FBSztHQUNoQixVQUFVLEtBQUs7R0FDZixlQUFlLEtBQUs7R0FDcEIsV0FBVyxLQUFLO0dBQ2hCLFdBQVcsS0FBSztHQUNoQixhQUFhLEtBQUs7R0FDbEIsS0FBSyxLQUFLO0dBQ1YsV0FBVyxLQUFLO0dBQ2hCLGFBQWEsS0FBSztHQUNsQixVQUFVLEtBQUs7R0FDZixLQUFLLEtBQUs7R0FDVixPQUFPLEtBQUs7R0FDWixTQUFTLEtBQUs7R0FDZCxTQUFTLEtBQUs7R0FDZCxLQUFLLEtBQUs7R0FDVixTQUFTLEtBQUs7R0FDZCxTQUFTLEtBQUs7R0FDZCxjQUFjLEtBQUs7R0FDbkIsVUFBVSxLQUFLO0dBQ2YsY0FBYyxLQUFLO0dBQ25CLE9BQU8sS0FBSztHQUNaLFVBQVUsS0FBSztHQUNmLGFBQWEsS0FBSztHQUNsQixtQkFBbUIsS0FBSztHQUN6Qjs7Ozs7O0FDM0tMLE1BQU1DLFVBQVEsYUFBYSxRQUFRO0FBRW5DLElBQWEsZUFBYixjQUFrQyxpQkFBaUI7Q0FDakQsT0FBTyxPQUFPLE9BQU8sVUFBVSxFQUM3QixhQUNFLDZGQUNILENBQUM7Q0FFRixlQUFlLE9BQU8sTUFBTTtDQUU1QixNQUFNLFVBQVU7RUFDZCxNQUFNLEVBQUUsU0FBUyxNQUFNLGFBQWE7R0FDbEMsR0FBRyxLQUFLLFlBQVk7R0FDcEIsY0FBYyxLQUFLO0dBQ3BCLENBQUM7RUFFRixNQUFNLFVBQVUsTUFBTTtBQUV0QixNQUFJLEtBQUssS0FDUCxNQUFLLE1BQU0sVUFBVSxTQUFTO0FBQzVCLFdBQU0scUNBQXFDLEtBQUssS0FBSztBQUNyRCxPQUFJO0FBQ0YsYUFBUyxHQUFHLEtBQUssS0FBSyxHQUFHLE9BQU8sUUFBUTtLQUN0QyxPQUFPO0tBQ1AsS0FBSyxLQUFLO0tBQ1gsQ0FBQztZQUNLLEdBQUc7QUFDVixZQUFNLE1BQU0sOEJBQThCLE9BQU8sS0FBSyxhQUFhO0FBQ25FLFlBQU0sTUFBTSxFQUFFOzs7Ozs7OztBQ2pDeEIsSUFBYSx1QkFBYixjQUEwQyx5QkFBeUI7Q0FDakUsTUFBTSxVQUFVO0FBQ2QsUUFBTSxjQUFjLEtBQUssWUFBWSxDQUFDOzs7Ozs7Ozs7OztBQ0UxQyxJQUFhLGNBQWIsY0FBaUMsUUFBYTtDQUM1QyxPQUFPLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQztDQUNuQyxNQUFNLFVBQVU7QUFDZCxRQUFNLEtBQUssUUFBUSxPQUFPLE1BQU0sS0FBSyxJQUFJLE9BQU8sQ0FBQzs7Ozs7O0FDS3JELE1BQU0sUUFBUSxhQUFhLE1BQU07QUFFakMsSUFBYSxhQUFiLGNBQWdDLGVBQWU7Q0FDN0MsY0FBYyxPQUFPLFFBQVEsb0JBQW9CLE1BQU0sRUFDckQsYUFDRSwrRUFDSCxDQUFDO0NBRUYsTUFBTSxVQUFVO0FBQ2QsTUFBSTtBQUVGLFNBQU0sV0FEVSxNQUFNLEtBQUssY0FBYyxDQUNoQjtBQUN6QixVQUFPO1dBQ0EsR0FBRztBQUNWLFNBQU0sK0JBQStCO0FBQ3JDLFNBQU0sTUFBTSxFQUFFO0FBQ2QsVUFBTzs7O0NBSVgsTUFBYyxlQUFlO0VBQzNCLE1BQU0sYUFBYSxNQUFNLFlBQVk7QUFFckMsTUFBSSxLQUFLLGFBQWE7R0FDcEIsTUFBTUMsYUFBcUIsV0FBVyxPQUNsQyxXQUFXLE9BQ1gsTUFBTSxxQkFBcUI7QUFDL0IsY0FBVyxPQUFPO0FBQ2xCLFVBQU87SUFDTCxHQUFHO0lBQ0gsTUFBTSxNQUFNLEtBQUssVUFBVSxLQUFLLE1BQU0sV0FBVyxDQUFDLEtBQUs7SUFDdkQsbUJBQW1CLE1BQU0sS0FBSyxrQkFBa0I7SUFDaEQsU0FBUyxNQUFNLEtBQUssY0FBYztJQUNsQyxTQUFTLE1BQU0sS0FBSyxjQUFjO0lBQ2xDLGVBQWUsTUFBTSxLQUFLLGNBQWM7SUFDeEMscUJBQXFCLE1BQU0sS0FBSyxvQkFBb0I7SUFDckQ7O0FBR0gsU0FBTzs7Q0FHVCxNQUFjLFVBQVUsYUFBc0M7QUFDNUQsU0FDRSxLQUFLLFVBQ0wsTUFBTTtHQUNKLFNBQVM7R0FDVCxTQUFTO0dBQ1YsQ0FBQzs7Q0FJTixNQUFjLGVBQWdDO0FBQzVDLFNBQU8sTUFBTTtHQUNYLFNBQVM7R0FDVCxTQUFTLEtBQUs7R0FDZixDQUFDOztDQUdKLE1BQWMsbUJBQW9DO0FBQ2hELFNBQU8sT0FBTztHQUNaLFNBQVM7R0FDVCxNQUFNO0dBQ04sVUFBVTtHQUNWLFNBQVMsTUFBTSxLQUFLLEVBQUUsUUFBUSxHQUFHLEdBQUcsR0FBRyxPQUFPO0lBQzVDLE1BQU0sT0FBTyxJQUFJLEVBQUUsSUFBSSxzQkFBc0IsSUFBSSxFQUFFLENBQUM7SUFDcEQsT0FBTyxJQUFJO0lBQ1osRUFBRTtHQUVILFNBQVMsS0FBSyxvQkFBb0I7R0FDbkMsQ0FBQzs7Q0FHSixNQUFjLGVBQXdDO0FBQ3BELE1BQUksS0FBSyxpQkFDUCxRQUFPLGtCQUFrQixRQUFRO0FBY25DLFNBWGdCLE1BQU0sU0FBUztHQUM3QixNQUFNO0dBQ04sU0FBUztHQUNULFNBQVMsa0JBQWtCLEtBQUssWUFBWTtJQUMxQyxNQUFNO0lBQ04sT0FBTztJQUVQLFNBQVMsZ0JBQWdCLFNBQVMsT0FBTztJQUMxQyxFQUFFO0dBQ0osQ0FBQzs7Q0FLSixNQUFjLGVBQWlDO0FBTTdDLFNBTHNCLE1BQU0sUUFBUTtHQUNsQyxTQUFTO0dBQ1QsU0FBUyxLQUFLO0dBQ2YsQ0FBQzs7Q0FLSixNQUFjLHFCQUF1QztBQU1uRCxTQUw0QixNQUFNLFFBQVE7R0FDeEMsU0FBUztHQUNULFNBQVMsS0FBSztHQUNmLENBQUM7OztBQU1OLGVBQWUsc0JBQXVDO0FBQ3BELFFBQU8sTUFBTSxFQUNYLFNBQVMsdURBQ1YsQ0FBQyxDQUFDLE1BQU0sV0FBUztBQUNoQixNQUFJLENBQUNDLE9BQ0gsUUFBTyxxQkFBcUI7QUFFOUIsU0FBT0E7R0FDUDs7Ozs7QUNuSUosSUFBYSxvQkFBYixjQUF1QyxzQkFBc0I7Q0FDM0QsTUFBTSxVQUFVO0FBRWQsUUFBTSxXQUFXLEtBQUssWUFBWSxDQUFDOzs7Ozs7QUNEdkMsSUFBYSxnQkFBYixjQUFtQyxrQkFBa0I7Q0FDbkQsTUFBTSxVQUFVO0VBQ2QsTUFBTSxVQUFVLEtBQUssWUFBWTtBQUNqQyxNQUFJLENBQUMsUUFBUSxLQUtYLFNBQVEsT0FKSyxNQUFNLE1BQU07R0FDdkIsU0FBUztHQUNULFVBQVU7R0FDWCxDQUFDO0FBR0osTUFBSSxDQUFDLFFBQVEsV0FLWCxTQUFRLGFBSlcsTUFBTSxNQUFNO0dBQzdCLFNBQVM7R0FDVCxVQUFVO0dBQ1gsQ0FBQztBQUdKLFFBQU0sY0FBYyxRQUFROzs7Ozs7QUNuQmhDLElBQWEsc0JBQWIsY0FBeUMsd0JBQXdCO0NBQy9ELE1BQU0sVUFBVTtBQUNkLFFBQU0scUJBQXFCLEtBQUssWUFBWSxDQUFDOzs7Ozs7QUNGakQsSUFBYSxpQkFBYixjQUFvQyxtQkFBbUI7Q0FDckQsTUFBTSxVQUFVO0FBQ2QsUUFBTSxRQUFRLEtBQUssWUFBWSxDQUFDOzs7Ozs7QUNnQnBDLE1BQWEsTUFBTSxJQUFJLElBQUk7Q0FDekIsWUFBWTtDQUNaLGVBQWU7Q0FDaEIsQ0FBQztBQUVGLElBQUksU0FBUyxXQUFXO0FBQ3hCLElBQUksU0FBUyxhQUFhO0FBQzFCLElBQUksU0FBUyxxQkFBcUI7QUFDbEMsSUFBSSxTQUFTLGlCQUFpQjtBQUM5QixJQUFJLFNBQVMsb0JBQW9CO0FBQ2pDLElBQUksU0FBUyxjQUFjO0FBQzNCLElBQUksU0FBUyxrQkFBa0I7QUFDL0IsSUFBSSxTQUFTLGVBQWU7QUFDNUIsSUFBSSxTQUFTLFlBQVk7Ozs7Ozs7Ozs7Ozs7QUFjekIsSUFBYSxVQUFiLE1BQXFCO0NBQ25CLFlBQVk7Q0FDWixNQUFNO0NBQ04sUUFBUTtDQUNSLGdCQUFnQjtDQUNoQixhQUFhO0NBQ2IsU0FBUztDQUNULGVBQWU7Q0FDZixVQUFVOztBQUdaLFNBQWdCLG1CQUFtQixNQUE4QjtBQUMvRCxRQUFPLElBQUksUUFBUSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7O0FBR3hDLFNBQWdCLHVCQUF1QixNQUFrQztBQUN2RSxRQUFPLElBQUksUUFBUSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7O0FBRzVDLFNBQWdCLDJCQUNkLE1BQ3NCO0FBQ3RCLFFBQU8sSUFBSSxRQUFRLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDOztBQUdsRCxTQUFnQix3QkFBd0IsTUFBbUM7QUFDekUsUUFBTyxJQUFJLFFBQVEsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDOztBQUc5QyxTQUFnQixvQkFBb0IsTUFBK0I7QUFDakUsUUFBTyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDOztBQUd6QyxTQUFnQiwwQkFBMEIsTUFBcUM7QUFDN0UsUUFBTyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7O0FBRy9DLFNBQWdCLHFCQUFxQixNQUFnQztBQUNuRSxRQUFPLElBQUksUUFBUSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7O0FBRzFDLFNBQWdCLGlCQUFpQixNQUE0QjtBQUMzRCxRQUFPLElBQUksUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMifQ== \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/package.json b/sdks/nodejs/node_modules/@napi-rs/cli/package.json deleted file mode 100644 index 43309e3..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/package.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "name": "@napi-rs/cli", - "version": "3.5.1", - "description": "Cli tools for napi-rs", - "author": "LongYinan ", - "homepage": "https://napi.rs/", - "license": "MIT", - "type": "module", - "engines": { - "node": ">= 16" - }, - "bin": { - "napi": "./dist/cli.js", - "napi-raw": "./cli.mjs" - }, - "main": "./dist/index.cjs", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/index.cjs" - }, - "./package.json": "./package.json" - }, - "files": [ - "dist", - "src", - "!__tests__" - ], - "keywords": [ - "cli", - "rust", - "napi", - "n-api", - "node-api", - "node-addon", - "neon" - ], - "maintainers": [ - { - "name": "LongYinan", - "email": "lynweklm@gmail.com", - "homepage": "https://github.com/Brooooooklyn" - }, - { - "name": "forehalo", - "homepage": "https://github.com/forehalo" - } - ], - "repository": { - "type": "git", - "url": "git+https://github.com/napi-rs/napi-rs.git" - }, - "publishConfig": { - "registry": "https://registry.npmjs.org/", - "access": "public" - }, - "bugs": { - "url": "https://github.com/napi-rs/napi-rs/issues" - }, - "dependencies": { - "@inquirer/prompts": "^8.0.0", - "@napi-rs/cross-toolchain": "^1.0.3", - "@napi-rs/wasm-tools": "^1.0.1", - "@octokit/rest": "^22.0.1", - "clipanion": "^4.0.0-rc.4", - "colorette": "^2.0.20", - "emnapi": "^1.7.1", - "es-toolkit": "^1.41.0", - "js-yaml": "^4.1.0", - "obug": "^2.0.0", - "semver": "^7.7.3", - "typanion": "^3.14.0" - }, - "devDependencies": { - "@emnapi/runtime": "^1.7.1", - "@oxc-node/core": "^0.0.35", - "@std/toml": "npm:@jsr/std__toml@^1.0.11", - "@types/inquirer": "^9.0.9", - "@types/js-yaml": "^4.0.9", - "@types/node": "^24.10.0", - "@types/semver": "^7.7.1", - "ava": "^6.4.1", - "empathic": "^2.0.0", - "env-paths": "^3.0.0", - "prettier": "^3.6.2", - "tsdown": "^0.18.0", - "tslib": "^2.8.1", - "typescript": "^5.9.3" - }, - "peerDependencies": { - "@emnapi/runtime": "^1.7.1" - }, - "peerDependenciesMeta": { - "@emnapi/runtime": { - "optional": true - } - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "scripts": { - "codegen": "node --import @oxc-node/core/register ./codegen/index.ts", - "build": "tsdown", - "test": "node --import @oxc-node/core/register ../node_modules/ava/entrypoints/cli.mjs" - }, - "ava": { - "extensions": { - "ts": "module" - }, - "timeout": "2m", - "workerThreads": false, - "files": [ - "**/__tests__/**/*.spec.ts", - "e2e/**/*.spec.ts" - ] - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/artifacts.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/api/artifacts.ts deleted file mode 100644 index 14e93da..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/artifacts.ts +++ /dev/null @@ -1,171 +0,0 @@ -import { join, resolve, parse } from 'node:path' - -import * as colors from 'colorette' - -import { - applyDefaultArtifactsOptions, - type ArtifactsOptions, -} from '../def/artifacts.js' -import { - readNapiConfig, - debugFactory, - readFileAsync, - writeFileAsync, - UniArchsByPlatform, - readdirAsync, -} from '../utils/index.js' - -const debug = debugFactory('artifacts') - -export async function collectArtifacts(userOptions: ArtifactsOptions) { - const options = applyDefaultArtifactsOptions(userOptions) - - const resolvePath = (...paths: string[]) => resolve(options.cwd, ...paths) - const packageJsonPath = resolvePath(options.packageJsonPath) - const { targets, binaryName, packageName } = await readNapiConfig( - packageJsonPath, - options.configPath ? resolvePath(options.configPath) : undefined, - ) - - const distDirs = targets.map((platform) => - join(options.cwd, options.npmDir, platform.platformArchABI), - ) - - const universalSourceBins = new Set( - targets - .filter((platform) => platform.arch === 'universal') - .flatMap((p) => - UniArchsByPlatform[p.platform]?.map((a) => `${p.platform}-${a}`), - ) - .filter(Boolean) as string[], - ) - - await collectNodeBinaries(join(options.cwd, options.outputDir)).then( - (output) => - Promise.all( - output.map(async (filePath) => { - debug.info(`Read [${colors.yellowBright(filePath)}]`) - const sourceContent = await readFileAsync(filePath) - const parsedName = parse(filePath) - const terms = parsedName.name.split('.') - const platformArchABI = terms.pop()! - const _binaryName = terms.join('.') - - if (_binaryName !== binaryName) { - debug.warn( - `[${_binaryName}] is not matched with [${binaryName}], skip`, - ) - return - } - const dir = distDirs.find((dir) => dir.includes(platformArchABI)) - if (!dir && universalSourceBins.has(platformArchABI)) { - debug.warn( - `[${platformArchABI}] has no dist dir but it is source bin for universal arch, skip`, - ) - return - } - if (!dir) { - throw new Error(`No dist dir found for ${filePath}`) - } - - const distFilePath = join(dir, parsedName.base) - debug.info( - `Write file content to [${colors.yellowBright(distFilePath)}]`, - ) - await writeFileAsync(distFilePath, sourceContent) - const distFilePathLocal = join( - parse(packageJsonPath).dir, - parsedName.base, - ) - debug.info( - `Write file content to [${colors.yellowBright(distFilePathLocal)}]`, - ) - await writeFileAsync(distFilePathLocal, sourceContent) - }), - ), - ) - - const wasiTarget = targets.find((t) => t.platform === 'wasi') - if (wasiTarget) { - const wasiDir = join( - options.cwd, - options.npmDir, - wasiTarget.platformArchABI, - ) - const cjsFile = join( - options.buildOutputDir ?? options.cwd, - `${binaryName}.wasi.cjs`, - ) - const workerFile = join( - options.buildOutputDir ?? options.cwd, - `wasi-worker.mjs`, - ) - const browserEntry = join( - options.buildOutputDir ?? options.cwd, - `${binaryName}.wasi-browser.js`, - ) - const browserWorkerFile = join( - options.buildOutputDir ?? options.cwd, - `wasi-worker-browser.mjs`, - ) - debug.info( - `Move wasi binding file [${colors.yellowBright( - cjsFile, - )}] to [${colors.yellowBright(wasiDir)}]`, - ) - await writeFileAsync( - join(wasiDir, `${binaryName}.wasi.cjs`), - await readFileAsync(cjsFile), - ) - debug.info( - `Move wasi worker file [${colors.yellowBright( - workerFile, - )}] to [${colors.yellowBright(wasiDir)}]`, - ) - await writeFileAsync( - join(wasiDir, `wasi-worker.mjs`), - await readFileAsync(workerFile), - ) - debug.info( - `Move wasi browser entry file [${colors.yellowBright( - browserEntry, - )}] to [${colors.yellowBright(wasiDir)}]`, - ) - await writeFileAsync( - join(wasiDir, `${binaryName}.wasi-browser.js`), - // https://github.com/vitejs/vite/issues/8427 - (await readFileAsync(browserEntry, 'utf8')).replace( - `new URL('./wasi-worker-browser.mjs', import.meta.url)`, - `new URL('${packageName}-wasm32-wasi/wasi-worker-browser.mjs', import.meta.url)`, - ), - ) - debug.info( - `Move wasi browser worker file [${colors.yellowBright( - browserWorkerFile, - )}] to [${colors.yellowBright(wasiDir)}]`, - ) - await writeFileAsync( - join(wasiDir, `wasi-worker-browser.mjs`), - await readFileAsync(browserWorkerFile), - ) - } -} - -async function collectNodeBinaries(root: string) { - const files = await readdirAsync(root, { withFileTypes: true }) - const nodeBinaries = files - .filter( - (file) => - file.isFile() && - (file.name.endsWith('.node') || file.name.endsWith('.wasm')), - ) - .map((file) => join(root, file.name)) - - const dirs = files.filter((file) => file.isDirectory()) - for (const dir of dirs) { - if (dir.name !== 'node_modules') { - nodeBinaries.push(...(await collectNodeBinaries(join(root, dir.name)))) - } - } - return nodeBinaries -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/build.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/api/build.ts deleted file mode 100644 index 4711820..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/build.ts +++ /dev/null @@ -1,1140 +0,0 @@ -import { spawn } from 'node:child_process' -import { createHash } from 'node:crypto' -import { existsSync, mkdirSync, rmSync } from 'node:fs' -import { createRequire } from 'node:module' -import { homedir } from 'node:os' -import { parse, join, resolve } from 'node:path' - -import * as colors from 'colorette' - -import type { BuildOptions as RawBuildOptions } from '../def/build.js' -import { - CLI_VERSION, - copyFileAsync, - type Crate, - debugFactory, - DEFAULT_TYPE_DEF_HEADER, - fileExists, - getSystemDefaultTarget, - getTargetLinker, - mkdirAsync, - type NapiConfig, - parseMetadata, - parseTriple, - processTypeDef, - readFileAsync, - readNapiConfig, - type Target, - targetToEnvVar, - tryInstallCargoBinary, - unlinkAsync, - writeFileAsync, - dirExistsAsync, - readdirAsync, - type CargoWorkspaceMetadata, -} from '../utils/index.js' - -import { createCjsBinding, createEsmBinding } from './templates/index.js' -import { - createWasiBinding, - createWasiBrowserBinding, -} from './templates/load-wasi-template.js' -import { - createWasiBrowserWorkerBinding, - WASI_WORKER_TEMPLATE, -} from './templates/wasi-worker-template.js' - -const debug = debugFactory('build') -const require = createRequire(import.meta.url) - -type OutputKind = 'js' | 'dts' | 'node' | 'exe' | 'wasm' -type Output = { kind: OutputKind; path: string } - -type BuildOptions = RawBuildOptions & { cargoOptions?: string[] } -type ParsedBuildOptions = Omit & { cwd: string } - -export async function buildProject(rawOptions: BuildOptions) { - debug('napi build command receive options: %O', rawOptions) - - const options: ParsedBuildOptions = { - dtsCache: true, - ...rawOptions, - cwd: rawOptions.cwd ?? process.cwd(), - } - - const resolvePath = (...paths: string[]) => resolve(options.cwd, ...paths) - - const manifestPath = resolvePath(options.manifestPath ?? 'Cargo.toml') - const metadata = await parseMetadata(manifestPath) - - const crate = metadata.packages.find((p) => { - // package with given name - if (options.package) { - return p.name === options.package - } else { - return p.manifest_path === manifestPath - } - }) - - if (!crate) { - throw new Error( - 'Unable to find crate to build. It seems you are trying to build a crate in a workspace, try using `--package` option to specify the package to build.', - ) - } - const config = await readNapiConfig( - resolvePath(options.packageJsonPath ?? 'package.json'), - options.configPath ? resolvePath(options.configPath) : undefined, - ) - - const builder = new Builder(metadata, crate, config, options) - - return builder.build() -} - -class Builder { - private readonly args: string[] = [] - private readonly envs: Record = {} - private readonly outputs: Output[] = [] - - private readonly target: Target - private readonly crateDir: string - private readonly outputDir: string - private readonly targetDir: string - private readonly enableTypeDef: boolean = false - - constructor( - private readonly metadata: CargoWorkspaceMetadata, - private readonly crate: Crate, - private readonly config: NapiConfig, - private readonly options: ParsedBuildOptions, - ) { - this.target = options.target - ? parseTriple(options.target) - : process.env.CARGO_BUILD_TARGET - ? parseTriple(process.env.CARGO_BUILD_TARGET) - : getSystemDefaultTarget() - this.crateDir = parse(crate.manifest_path).dir - this.outputDir = resolve( - this.options.cwd, - options.outputDir ?? this.crateDir, - ) - this.targetDir = - options.targetDir ?? - process.env.CARGO_BUILD_TARGET_DIR ?? - metadata.target_directory - this.enableTypeDef = this.crate.dependencies.some( - (dep) => - dep.name === 'napi-derive' && - (dep.uses_default_features || dep.features.includes('type-def')), - ) - - if (!this.enableTypeDef) { - const requirementWarning = - '`napi-derive` crate is not used or `type-def` feature is not enabled for `napi-derive` crate' - debug.warn( - `${requirementWarning}. Will skip binding generation for \`.node\`, \`.wasi\` and \`.d.ts\` files.`, - ) - - if ( - this.options.dts || - this.options.dtsHeader || - this.config.dtsHeader || - this.config.dtsHeaderFile - ) { - debug.warn( - `${requirementWarning}. \`dts\` related options are enabled but will be ignored.`, - ) - } - } - } - - get cdyLibName() { - return this.crate.targets.find((t) => t.crate_types.includes('cdylib')) - ?.name - } - - get binName() { - return ( - this.options.bin ?? - // only available if not cdylib or bin name specified - (this.cdyLibName - ? null - : this.crate.targets.find((t) => t.crate_types.includes('bin'))?.name) - ) - } - - build() { - if (!this.cdyLibName) { - const warning = - 'Missing `crate-type = ["cdylib"]` in [lib] config. The build result will not be available as node addon.' - - if (this.binName) { - debug.warn(warning) - } else { - throw new Error(warning) - } - } - - return this.pickBinary() - .setPackage() - .setFeatures() - .setTarget() - .pickCrossToolchain() - .setEnvs() - .setBypassArgs() - .exec() - } - - private pickCrossToolchain() { - if (!this.options.useNapiCross) { - return this - } - if (this.options.useCross) { - debug.warn( - 'You are trying to use both `--cross` and `--use-napi-cross` options, `--use-cross` will be ignored.', - ) - } - - if (this.options.crossCompile) { - debug.warn( - 'You are trying to use both `--cross-compile` and `--use-napi-cross` options, `--cross-compile` will be ignored.', - ) - } - - try { - const { version, download } = require('@napi-rs/cross-toolchain') - - const alias: Record = { - 's390x-unknown-linux-gnu': 's390x-ibm-linux-gnu', - } - - const toolchainPath = join( - homedir(), - '.napi-rs', - 'cross-toolchain', - version, - this.target.triple, - ) - mkdirSync(toolchainPath, { recursive: true }) - if (existsSync(join(toolchainPath, 'package.json'))) { - debug(`Toolchain ${toolchainPath} exists, skip extracting`) - } else { - const tarArchive = download(process.arch, this.target.triple) - tarArchive.unpack(toolchainPath) - } - const upperCaseTarget = targetToEnvVar(this.target.triple) - const crossTargetName = alias[this.target.triple] ?? this.target.triple - const linkerEnv = `CARGO_TARGET_${upperCaseTarget}_LINKER` - this.setEnvIfNotExists( - linkerEnv, - join(toolchainPath, 'bin', `${crossTargetName}-gcc`), - ) - this.setEnvIfNotExists( - 'TARGET_SYSROOT', - join(toolchainPath, crossTargetName, 'sysroot'), - ) - this.setEnvIfNotExists( - 'TARGET_AR', - join(toolchainPath, 'bin', `${crossTargetName}-ar`), - ) - this.setEnvIfNotExists( - 'TARGET_RANLIB', - join(toolchainPath, 'bin', `${crossTargetName}-ranlib`), - ) - this.setEnvIfNotExists( - 'TARGET_READELF', - join(toolchainPath, 'bin', `${crossTargetName}-readelf`), - ) - this.setEnvIfNotExists( - 'TARGET_C_INCLUDE_PATH', - join(toolchainPath, crossTargetName, 'sysroot', 'usr', 'include/'), - ) - this.setEnvIfNotExists( - 'TARGET_CC', - join(toolchainPath, 'bin', `${crossTargetName}-gcc`), - ) - this.setEnvIfNotExists( - 'TARGET_CXX', - join(toolchainPath, 'bin', `${crossTargetName}-g++`), - ) - this.setEnvIfNotExists( - 'BINDGEN_EXTRA_CLANG_ARGS', - `--sysroot=${this.envs.TARGET_SYSROOT}}`, - ) - - if ( - process.env.TARGET_CC?.startsWith('clang') || - (process.env.CC?.startsWith('clang') && !process.env.TARGET_CC) - ) { - const TARGET_CFLAGS = process.env.TARGET_CFLAGS ?? '' - this.envs.TARGET_CFLAGS = `--sysroot=${this.envs.TARGET_SYSROOT} --gcc-toolchain=${toolchainPath} ${TARGET_CFLAGS}` - } - if ( - (process.env.CXX?.startsWith('clang++') && !process.env.TARGET_CXX) || - process.env.TARGET_CXX?.startsWith('clang++') - ) { - const TARGET_CXXFLAGS = process.env.TARGET_CXXFLAGS ?? '' - this.envs.TARGET_CXXFLAGS = `--sysroot=${this.envs.TARGET_SYSROOT} --gcc-toolchain=${toolchainPath} ${TARGET_CXXFLAGS}` - } - this.envs.PATH = this.envs.PATH - ? `${toolchainPath}/bin:${this.envs.PATH}:${process.env.PATH}` - : `${toolchainPath}/bin:${process.env.PATH}` - } catch (e) { - debug.warn('Pick cross toolchain failed', e as Error) - // ignore, do nothing - } - return this - } - - private exec() { - debug(`Start building crate: ${this.crate.name}`) - debug(' %i', `cargo ${this.args.join(' ')}`) - - const controller = new AbortController() - - const watch = this.options.watch - const buildTask = new Promise((resolve, reject) => { - if (this.options.useCross && this.options.crossCompile) { - throw new Error( - '`--use-cross` and `--cross-compile` can not be used together', - ) - } - const command = - process.env.CARGO ?? (this.options.useCross ? 'cross' : 'cargo') - const buildProcess = spawn(command, this.args, { - env: { ...process.env, ...this.envs }, - stdio: watch ? ['inherit', 'inherit', 'pipe'] : 'inherit', - cwd: this.options.cwd, - signal: controller.signal, - }) - - buildProcess.once('exit', (code) => { - if (code === 0) { - debug('%i', `Build crate ${this.crate.name} successfully!`) - resolve() - } else { - reject(new Error(`Build failed with exit code ${code}`)) - } - }) - - buildProcess.once('error', (e) => { - reject(new Error(`Build failed with error: ${e.message}`, { cause: e })) - }) - - // watch mode only, they are piped through stderr - buildProcess.stderr?.on('data', (data) => { - const output = data.toString() - console.error(output) - if (/Finished\s(`dev`|`release`)/.test(output)) { - this.postBuild().catch(() => {}) - } - }) - }) - - return { - task: buildTask.then(() => this.postBuild()), - abort: () => controller.abort(), - } - } - - private pickBinary() { - let set = false - if (this.options.watch) { - if (process.env.CI) { - debug.warn('Watch mode is not supported in CI environment') - } else { - debug('Use %i', 'cargo-watch') - tryInstallCargoBinary('cargo-watch', 'watch') - // yarn napi watch --target x86_64-unknown-linux-gnu [--cross-compile] - // ===> - // cargo watch [...] -- build --target x86_64-unknown-linux-gnu - // cargo watch [...] -- zigbuild --target x86_64-unknown-linux-gnu - this.args.push( - 'watch', - '--why', - '-i', - '*.{js,ts,node}', - '-w', - this.crateDir, - '--', - 'cargo', - 'build', - ) - set = true - } - } - - if (this.options.crossCompile) { - if (this.target.platform === 'win32') { - if (process.platform === 'win32') { - debug.warn( - 'You are trying to cross compile to win32 platform on win32 platform which is unnecessary.', - ) - } else { - // use cargo-xwin to cross compile to win32 platform - debug('Use %i', 'cargo-xwin') - tryInstallCargoBinary('cargo-xwin', 'xwin') - this.args.push('xwin', 'build') - if (this.target.arch === 'ia32') { - this.envs.XWIN_ARCH = 'x86' - } - set = true - } - } else { - if ( - this.target.platform === 'linux' && - process.platform === 'linux' && - this.target.arch === process.arch && - (function (abi: string | null) { - const glibcVersionRuntime = - // @ts-expect-error - process.report?.getReport()?.header?.glibcVersionRuntime - const libc = glibcVersionRuntime ? 'gnu' : 'musl' - return abi === libc - })(this.target.abi) - ) { - debug.warn( - 'You are trying to cross compile to linux target on linux platform which is unnecessary.', - ) - } else if ( - this.target.platform === 'darwin' && - process.platform === 'darwin' - ) { - debug.warn( - 'You are trying to cross compile to darwin target on darwin platform which is unnecessary.', - ) - } else { - // use cargo-zigbuild to cross compile to other platforms - debug('Use %i', 'cargo-zigbuild') - tryInstallCargoBinary('cargo-zigbuild', 'zigbuild') - this.args.push('zigbuild') - set = true - } - } - } - - if (!set) { - this.args.push('build') - } - return this - } - - private setPackage() { - const args = [] - - if (this.options.package) { - args.push('--package', this.options.package) - } - - if (this.binName) { - args.push('--bin', this.binName) - } - - if (args.length) { - debug('Set package flags: ') - debug(' %O', args) - this.args.push(...args) - } - - return this - } - - private setTarget() { - debug('Set compiling target to: ') - debug(' %i', this.target.triple) - - this.args.push('--target', this.target.triple) - - return this - } - - private setEnvs() { - // TYPE DEF - if (this.enableTypeDef) { - this.envs.NAPI_TYPE_DEF_TMP_FOLDER = - this.generateIntermediateTypeDefFolder() - this.setForceBuildEnvs(this.envs.NAPI_TYPE_DEF_TMP_FOLDER) - } - - // RUSTFLAGS - let rustflags = - process.env.RUSTFLAGS ?? process.env.CARGO_BUILD_RUSTFLAGS ?? '' - - if ( - this.target.abi?.includes('musl') && - !rustflags.includes('target-feature=-crt-static') - ) { - rustflags += ' -C target-feature=-crt-static' - } - - if (this.options.strip && !rustflags.includes('link-arg=-s')) { - rustflags += ' -C link-arg=-s' - } - - if (rustflags.length) { - this.envs.RUSTFLAGS = rustflags - } - // END RUSTFLAGS - - // LINKER - const linker = this.options.crossCompile - ? void 0 - : getTargetLinker(this.target.triple) - // TODO: - // directly set CARGO_TARGET__LINKER will cover .cargo/config.toml - // will detect by cargo config when it becomes stable - // see: https://github.com/rust-lang/cargo/issues/9301 - const linkerEnv = `CARGO_TARGET_${targetToEnvVar( - this.target.triple, - )}_LINKER` - if (linker && !process.env[linkerEnv] && !this.envs[linkerEnv]) { - this.envs[linkerEnv] = linker - } - - if (this.target.platform === 'android') { - this.setAndroidEnv() - } - - if (this.target.platform === 'wasi') { - this.setWasiEnv() - } - - if (this.target.platform === 'openharmony') { - this.setOpenHarmonyEnv() - } - - debug('Set envs: ') - Object.entries(this.envs).forEach(([k, v]) => { - debug(' %i', `${k}=${v}`) - }) - - return this - } - - private setForceBuildEnvs(typeDefTmpFolder: string) { - // dynamically check all napi-rs deps and set `NAPI_FORCE_BUILD_{uppercase(snake_case(name))} = timestamp` - this.metadata.packages.forEach((crate) => { - if ( - crate.dependencies.some((d) => d.name === 'napi-derive') && - !existsSync(join(typeDefTmpFolder, crate.name)) - ) { - this.envs[ - `NAPI_FORCE_BUILD_${crate.name.replace(/-/g, '_').toUpperCase()}` - ] = Date.now().toString() - } - }) - } - - private setAndroidEnv() { - const { ANDROID_NDK_LATEST_HOME } = process.env - if (!ANDROID_NDK_LATEST_HOME) { - debug.warn( - `${colors.red( - 'ANDROID_NDK_LATEST_HOME', - )} environment variable is missing`, - ) - } - - // skip cross compile setup if host is android - if (process.platform === 'android') { - return - } - - const targetArch = this.target.arch === 'arm' ? 'armv7a' : 'aarch64' - const targetPlatform = - this.target.arch === 'arm' ? 'androideabi24' : 'android24' - const hostPlatform = - process.platform === 'darwin' - ? 'darwin' - : process.platform === 'win32' - ? 'windows' - : 'linux' - Object.assign(this.envs, { - CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-android24-clang`, - CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-androideabi24-clang`, - TARGET_CC: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang`, - TARGET_CXX: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang++`, - TARGET_AR: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/llvm-ar`, - TARGET_RANLIB: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/llvm-ranlib`, - ANDROID_NDK: ANDROID_NDK_LATEST_HOME, - PATH: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin${process.platform === 'win32' ? ';' : ':'}${process.env.PATH}`, - }) - } - - private setWasiEnv() { - const emnapi = join( - require.resolve('emnapi'), - '..', - 'lib', - 'wasm32-wasi-threads', - ) - this.envs.EMNAPI_LINK_DIR = emnapi - const { WASI_SDK_PATH } = process.env - - if (WASI_SDK_PATH && existsSync(WASI_SDK_PATH)) { - this.envs.CARGO_TARGET_WASM32_WASI_PREVIEW1_THREADS_LINKER = join( - WASI_SDK_PATH, - 'bin', - 'wasm-ld', - ) - this.envs.CARGO_TARGET_WASM32_WASIP1_LINKER = join( - WASI_SDK_PATH, - 'bin', - 'wasm-ld', - ) - this.envs.CARGO_TARGET_WASM32_WASIP1_THREADS_LINKER = join( - WASI_SDK_PATH, - 'bin', - 'wasm-ld', - ) - this.envs.CARGO_TARGET_WASM32_WASIP2_LINKER = join( - WASI_SDK_PATH, - 'bin', - 'wasm-ld', - ) - this.setEnvIfNotExists('TARGET_CC', join(WASI_SDK_PATH, 'bin', 'clang')) - this.setEnvIfNotExists( - 'TARGET_CXX', - join(WASI_SDK_PATH, 'bin', 'clang++'), - ) - this.setEnvIfNotExists('TARGET_AR', join(WASI_SDK_PATH, 'bin', 'ar')) - this.setEnvIfNotExists( - 'TARGET_RANLIB', - join(WASI_SDK_PATH, 'bin', 'ranlib'), - ) - this.setEnvIfNotExists( - 'TARGET_CFLAGS', - `--target=wasm32-wasi-threads --sysroot=${WASI_SDK_PATH}/share/wasi-sysroot -pthread -mllvm -wasm-enable-sjlj`, - ) - this.setEnvIfNotExists( - 'TARGET_CXXFLAGS', - `--target=wasm32-wasi-threads --sysroot=${WASI_SDK_PATH}/share/wasi-sysroot -pthread -mllvm -wasm-enable-sjlj`, - ) - this.setEnvIfNotExists( - `TARGET_LDFLAGS`, - `-fuse-ld=${WASI_SDK_PATH}/bin/wasm-ld --target=wasm32-wasi-threads`, - ) - } - } - - private setOpenHarmonyEnv() { - const { OHOS_SDK_PATH, OHOS_SDK_NATIVE } = process.env - const ndkPath = OHOS_SDK_PATH ? `${OHOS_SDK_PATH}/native` : OHOS_SDK_NATIVE - // @ts-expect-error - if (!ndkPath && process.platform !== 'openharmony') { - debug.warn( - `${colors.red('OHOS_SDK_PATH')} or ${colors.red('OHOS_SDK_NATIVE')} environment variable is missing`, - ) - return - } - const linkerName = `CARGO_TARGET_${this.target.triple.toUpperCase().replace(/-/g, '_')}_LINKER` - const ranPath = `${ndkPath}/llvm/bin/llvm-ranlib` - const arPath = `${ndkPath}/llvm/bin/llvm-ar` - const ccPath = `${ndkPath}/llvm/bin/${this.target.triple}-clang` - const cxxPath = `${ndkPath}/llvm/bin/${this.target.triple}-clang++` - const asPath = `${ndkPath}/llvm/bin/llvm-as` - const ldPath = `${ndkPath}/llvm/bin/ld.lld` - const stripPath = `${ndkPath}/llvm/bin/llvm-strip` - const objDumpPath = `${ndkPath}/llvm/bin/llvm-objdump` - const objCopyPath = `${ndkPath}/llvm/bin/llvm-objcopy` - const nmPath = `${ndkPath}/llvm/bin/llvm-nm` - const binPath = `${ndkPath}/llvm/bin` - const libPath = `${ndkPath}/llvm/lib` - - this.setEnvIfNotExists('LIBCLANG_PATH', libPath) - this.setEnvIfNotExists('DEP_ATOMIC', 'clang_rt.builtins') - this.setEnvIfNotExists(linkerName, ccPath) - this.setEnvIfNotExists('TARGET_CC', ccPath) - this.setEnvIfNotExists('TARGET_CXX', cxxPath) - this.setEnvIfNotExists('TARGET_AR', arPath) - this.setEnvIfNotExists('TARGET_RANLIB', ranPath) - this.setEnvIfNotExists('TARGET_AS', asPath) - this.setEnvIfNotExists('TARGET_LD', ldPath) - this.setEnvIfNotExists('TARGET_STRIP', stripPath) - this.setEnvIfNotExists('TARGET_OBJDUMP', objDumpPath) - this.setEnvIfNotExists('TARGET_OBJCOPY', objCopyPath) - this.setEnvIfNotExists('TARGET_NM', nmPath) - this.envs.PATH = `${binPath}${process.platform === 'win32' ? ';' : ':'}${process.env.PATH}` - } - - private setFeatures() { - const args = [] - if (this.options.allFeatures && this.options.noDefaultFeatures) { - throw new Error( - 'Cannot specify --all-features and --no-default-features together', - ) - } - if (this.options.allFeatures) { - args.push('--all-features') - } else if (this.options.noDefaultFeatures) { - args.push('--no-default-features') - } - if (this.options.features) { - args.push('--features', ...this.options.features) - } - - debug('Set features flags: ') - debug(' %O', args) - this.args.push(...args) - - return this - } - - private setBypassArgs() { - if (this.options.release) { - this.args.push('--release') - } - - if (this.options.verbose) { - this.args.push('--verbose') - } - - if (this.options.targetDir) { - this.args.push('--target-dir', this.options.targetDir) - } - - if (this.options.profile) { - this.args.push('--profile', this.options.profile) - } - - if (this.options.manifestPath) { - this.args.push('--manifest-path', this.options.manifestPath) - } - - if (this.options.cargoOptions?.length) { - this.args.push(...this.options.cargoOptions) - } - - return this - } - - private generateIntermediateTypeDefFolder() { - let folder = join( - this.targetDir, - 'napi-rs', - `${this.crate.name}-${createHash('sha256') - .update(this.crate.manifest_path) - .update(CLI_VERSION) - .digest('hex') - .substring(0, 8)}`, - ) - - if (!this.options.dtsCache) { - rmSync(folder, { recursive: true, force: true }) - folder += `_${Date.now()}` - } - - mkdirAsync(folder, { recursive: true }) - - return folder - } - - private async postBuild() { - try { - debug(`Try to create output directory:`) - debug(' %i', this.outputDir) - await mkdirAsync(this.outputDir, { recursive: true }) - debug(`Output directory created`) - } catch (e) { - throw new Error(`Failed to create output directory ${this.outputDir}`, { - cause: e, - }) - } - - const wasmBinaryName = await this.copyArtifact() - - // only for cdylib - if (this.cdyLibName) { - const idents = await this.generateTypeDef() - const jsOutput = await this.writeJsBinding(idents) - const wasmBindingsOutput = await this.writeWasiBinding( - wasmBinaryName, - idents, - ) - if (jsOutput) { - this.outputs.push(jsOutput) - } - if (wasmBindingsOutput) { - this.outputs.push(...wasmBindingsOutput) - } - } - - return this.outputs - } - - private async copyArtifact() { - const [srcName, destName, wasmBinaryName] = this.getArtifactNames() - if (!srcName || !destName) { - return - } - - const profile = - this.options.profile ?? (this.options.release ? 'release' : 'debug') - const src = join(this.targetDir, this.target.triple, profile, srcName) - debug(`Copy artifact from: [${src}]`) - const dest = join(this.outputDir, destName) - const isWasm = dest.endsWith('.wasm') - - try { - if (await fileExists(dest)) { - debug('Old artifact found, remove it first') - await unlinkAsync(dest) - } - debug('Copy artifact to:') - debug(' %i', dest) - if (isWasm) { - const { ModuleConfig } = await import('@napi-rs/wasm-tools') - debug('Generate debug wasm module') - try { - const debugWasmModule = new ModuleConfig() - .generateDwarf(true) - .generateNameSection(true) - .generateProducersSection(true) - .preserveCodeTransform(true) - .strictValidate(false) - .parse(await readFileAsync(src)) - const debugWasmBinary = debugWasmModule.emitWasm(true) - await writeFileAsync( - dest.replace(/\.wasm$/, '.debug.wasm'), - debugWasmBinary, - ) - debug('Generate release wasm module') - const releaseWasmModule = new ModuleConfig() - .generateDwarf(false) - .generateNameSection(false) - .generateProducersSection(false) - .preserveCodeTransform(false) - .strictValidate(false) - .onlyStableFeatures(false) - .parse(debugWasmBinary) - const releaseWasmBinary = releaseWasmModule.emitWasm(false) - await writeFileAsync(dest, releaseWasmBinary) - } catch (e) { - debug.warn( - `Failed to generate debug wasm module: ${(e as any).message ?? e}`, - ) - await copyFileAsync(src, dest) - } - } else { - await copyFileAsync(src, dest) - } - this.outputs.push({ - kind: dest.endsWith('.node') ? 'node' : isWasm ? 'wasm' : 'exe', - path: dest, - }) - return wasmBinaryName ? join(this.outputDir, wasmBinaryName) : null - } catch (e) { - throw new Error('Failed to copy artifact', { cause: e }) - } - } - - private getArtifactNames() { - if (this.cdyLibName) { - const cdyLib = this.cdyLibName.replace(/-/g, '_') - const wasiTarget = this.config.targets.find((t) => t.platform === 'wasi') - - const srcName = - this.target.platform === 'darwin' - ? `lib${cdyLib}.dylib` - : this.target.platform === 'win32' - ? `${cdyLib}.dll` - : this.target.platform === 'wasi' || this.target.platform === 'wasm' - ? `${cdyLib}.wasm` - : `lib${cdyLib}.so` - - let destName = this.config.binaryName - // add platform suffix to binary name - // index[.linux-x64-gnu].node - // ^^^^^^^^^^^^^^ - if (this.options.platform) { - destName += `.${this.target.platformArchABI}` - } - if (srcName.endsWith('.wasm')) { - destName += '.wasm' - } else { - destName += '.node' - } - - return [ - srcName, - destName, - wasiTarget - ? `${this.config.binaryName}.${wasiTarget.platformArchABI}.wasm` - : null, - ] - } else if (this.binName) { - const srcName = - this.target.platform === 'win32' ? `${this.binName}.exe` : this.binName - - return [srcName, srcName] - } - - return [] - } - - private async generateTypeDef() { - const typeDefDir = this.envs.NAPI_TYPE_DEF_TMP_FOLDER - if (!this.enableTypeDef) { - return [] - } - - const { exports, dts } = await generateTypeDef({ - typeDefDir, - noDtsHeader: this.options.noDtsHeader, - dtsHeader: this.options.dtsHeader, - configDtsHeader: this.config.dtsHeader, - configDtsHeaderFile: this.config.dtsHeaderFile, - constEnum: this.options.constEnum ?? this.config.constEnum, - cwd: this.options.cwd, - }) - - const dest = join(this.outputDir, this.options.dts ?? 'index.d.ts') - - try { - debug('Writing type def to:') - debug(' %i', dest) - await writeFileAsync(dest, dts, 'utf-8') - } catch (e) { - debug.error('Failed to write type def file') - debug.error(e as Error) - } - - if (exports.length > 0) { - const dest = join(this.outputDir, this.options.dts ?? 'index.d.ts') - this.outputs.push({ kind: 'dts', path: dest }) - } - - return exports - } - - private async writeJsBinding(idents: string[]) { - return writeJsBinding({ - platform: this.options.platform, - noJsBinding: this.options.noJsBinding, - idents, - jsBinding: this.options.jsBinding, - esm: this.options.esm, - binaryName: this.config.binaryName, - packageName: this.options.jsPackageName ?? this.config.packageName, - version: process.env.npm_new_version ?? this.config.packageJson.version, - outputDir: this.outputDir, - }) - } - - private async writeWasiBinding( - distFileName: string | undefined | null, - idents: string[], - ) { - if (distFileName) { - const { name, dir } = parse(distFileName) - const bindingPath = join(dir, `${this.config.binaryName}.wasi.cjs`) - const browserBindingPath = join( - dir, - `${this.config.binaryName}.wasi-browser.js`, - ) - const workerPath = join(dir, 'wasi-worker.mjs') - const browserWorkerPath = join(dir, 'wasi-worker-browser.mjs') - const browserEntryPath = join(dir, 'browser.js') - const exportsCode = - `module.exports = __napiModule.exports\n` + - idents - .map( - (ident) => - `module.exports.${ident} = __napiModule.exports.${ident}`, - ) - .join('\n') - await writeFileAsync( - bindingPath, - createWasiBinding( - name, - this.config.packageName, - this.config.wasm?.initialMemory, - this.config.wasm?.maximumMemory, - ) + - exportsCode + - '\n', - 'utf8', - ) - await writeFileAsync( - browserBindingPath, - createWasiBrowserBinding( - name, - this.config.wasm?.initialMemory, - this.config.wasm?.maximumMemory, - this.config.wasm?.browser?.fs, - this.config.wasm?.browser?.asyncInit, - this.config.wasm?.browser?.buffer, - ) + - `export default __napiModule.exports\n` + - idents - .map( - (ident) => - `export const ${ident} = __napiModule.exports.${ident}`, - ) - .join('\n') + - '\n', - 'utf8', - ) - await writeFileAsync(workerPath, WASI_WORKER_TEMPLATE, 'utf8') - await writeFileAsync( - browserWorkerPath, - createWasiBrowserWorkerBinding(this.config.wasm?.browser?.fs ?? false), - 'utf8', - ) - await writeFileAsync( - browserEntryPath, - `export * from '${this.config.packageName}-wasm32-wasi'\n`, - ) - return [ - { kind: 'js', path: bindingPath }, - { kind: 'js', path: browserBindingPath }, - { kind: 'js', path: workerPath }, - { kind: 'js', path: browserWorkerPath }, - { kind: 'js', path: browserEntryPath }, - ] satisfies Output[] - } - return [] - } - - private setEnvIfNotExists(env: string, value: string) { - if (!process.env[env]) { - this.envs[env] = value - } - } -} - -export interface WriteJsBindingOptions { - platform?: boolean - noJsBinding?: boolean - idents: string[] - jsBinding?: string - esm?: boolean - binaryName: string - packageName: string - version: string - outputDir: string -} - -export async function writeJsBinding( - options: WriteJsBindingOptions, -): Promise { - if ( - !options.platform || - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - options.noJsBinding || - options.idents.length === 0 - ) { - return - } - - const name = options.jsBinding ?? 'index.js' - - const createBinding = options.esm ? createEsmBinding : createCjsBinding - const binding = createBinding( - options.binaryName, - options.packageName, - options.idents, - // in npm preversion hook - options.version, - ) - - try { - const dest = join(options.outputDir, name) - debug('Writing js binding to:') - debug(' %i', dest) - await writeFileAsync(dest, binding, 'utf-8') - return { kind: 'js', path: dest } satisfies Output - } catch (e) { - throw new Error('Failed to write js binding file', { cause: e }) - } -} - -export interface GenerateTypeDefOptions { - typeDefDir: string - noDtsHeader?: boolean - dtsHeader?: string - dtsHeaderFile?: string - configDtsHeader?: string - configDtsHeaderFile?: string - constEnum?: boolean - cwd: string -} - -export async function generateTypeDef( - options: GenerateTypeDefOptions, -): Promise<{ exports: string[]; dts: string }> { - if (!(await dirExistsAsync(options.typeDefDir))) { - return { exports: [], dts: '' } - } - - let header = '' - let dts = '' - let exports: string[] = [] - - if (!options.noDtsHeader) { - const dtsHeader = options.dtsHeader ?? options.configDtsHeader - // `dtsHeaderFile` in config > `dtsHeader` in cli flag > `dtsHeader` in config - if (options.configDtsHeaderFile) { - try { - header = await readFileAsync( - join(options.cwd, options.configDtsHeaderFile), - 'utf-8', - ) - } catch (e) { - debug.warn( - `Failed to read dts header file ${options.configDtsHeaderFile}`, - e, - ) - } - } else if (dtsHeader) { - header = dtsHeader - } else { - header = DEFAULT_TYPE_DEF_HEADER - } - } - - const files = await readdirAsync(options.typeDefDir, { withFileTypes: true }) - - if (!files.length) { - debug('No type def files found. Skip generating dts file.') - return { exports: [], dts: '' } - } - - for (const file of files) { - if (!file.isFile()) { - continue - } - - const { dts: fileDts, exports: fileExports } = await processTypeDef( - join(options.typeDefDir, file.name), - options.constEnum ?? true, - ) - - dts += fileDts - exports.push(...fileExports) - } - - if (dts.indexOf('ExternalObject<') > -1) { - header += ` -export declare class ExternalObject { - readonly '': { - readonly '': unique symbol - [K: symbol]: T - } -} -` - } - - if (dts.indexOf('TypedArray') > -1) { - header += ` -export type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array -` - } - - dts = header + dts - - return { - exports, - dts, - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/create-npm-dirs.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/api/create-npm-dirs.ts deleted file mode 100644 index a2171c8..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/create-npm-dirs.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { join, resolve } from 'node:path' - -import { parse } from 'semver' - -import { - applyDefaultCreateNpmDirsOptions, - type CreateNpmDirsOptions, -} from '../def/create-npm-dirs.js' -import { - debugFactory, - readNapiConfig, - mkdirAsync as rawMkdirAsync, - pick, - writeFileAsync as rawWriteFileAsync, - type Target, - type CommonPackageJsonFields, -} from '../utils/index.js' - -const debug = debugFactory('create-npm-dirs') - -export interface PackageMeta { - 'dist-tags': { [index: string]: string } -} - -export async function createNpmDirs(userOptions: CreateNpmDirsOptions) { - const options = applyDefaultCreateNpmDirsOptions(userOptions) - - async function mkdirAsync(dir: string) { - debug('Try to create dir: %i', dir) - if (options.dryRun) { - return - } - - await rawMkdirAsync(dir, { - recursive: true, - }) - } - - async function writeFileAsync(file: string, content: string) { - debug('Writing file %i', file) - - if (options.dryRun) { - debug(content) - return - } - - await rawWriteFileAsync(file, content) - } - - const packageJsonPath = resolve(options.cwd, options.packageJsonPath) - const npmPath = resolve(options.cwd, options.npmDir) - - debug(`Read content from [${options.configPath ?? packageJsonPath}]`) - - const { targets, binaryName, packageName, packageJson } = - await readNapiConfig( - packageJsonPath, - options.configPath ? resolve(options.cwd, options.configPath) : undefined, - ) - - for (const target of targets) { - const targetDir = join(npmPath, `${target.platformArchABI}`) - await mkdirAsync(targetDir) - - const binaryFileName = - target.arch === 'wasm32' - ? `${binaryName}.${target.platformArchABI}.wasm` - : `${binaryName}.${target.platformArchABI}.node` - const scopedPackageJson: CommonPackageJsonFields = { - name: `${packageName}-${target.platformArchABI}`, - version: packageJson.version, - cpu: target.arch !== 'universal' ? [target.arch] : undefined, - main: binaryFileName, - files: [binaryFileName], - ...pick( - packageJson, - 'description', - 'keywords', - 'author', - 'authors', - 'homepage', - 'license', - 'engines', - 'repository', - 'bugs', - ), - } - if (packageJson.publishConfig) { - scopedPackageJson.publishConfig = pick( - packageJson.publishConfig, - 'registry', - 'access', - ) - } - if (target.arch !== 'wasm32') { - scopedPackageJson.os = [target.platform] - } else { - const entry = `${binaryName}.wasi.cjs` - scopedPackageJson.main = entry - scopedPackageJson.browser = `${binaryName}.wasi-browser.js` - scopedPackageJson.files?.push( - entry, - scopedPackageJson.browser, - `wasi-worker.mjs`, - `wasi-worker-browser.mjs`, - ) - let needRestrictNodeVersion = true - if (scopedPackageJson.engines?.node) { - try { - const { major } = parse(scopedPackageJson.engines.node) ?? { - major: 0, - } - if (major >= 14) { - needRestrictNodeVersion = false - } - } catch { - // ignore - } - } - if (needRestrictNodeVersion) { - scopedPackageJson.engines = { - node: '>=14.0.0', - } - } - const wasmRuntime = await fetch( - `https://registry.npmjs.org/@napi-rs/wasm-runtime`, - ).then((res) => res.json() as Promise) - scopedPackageJson.dependencies = { - '@napi-rs/wasm-runtime': `^${wasmRuntime['dist-tags'].latest}`, - } - } - - if (target.abi === 'gnu') { - scopedPackageJson.libc = ['glibc'] - } else if (target.abi === 'musl') { - scopedPackageJson.libc = ['musl'] - } - - const targetPackageJson = join(targetDir, 'package.json') - await writeFileAsync( - targetPackageJson, - JSON.stringify(scopedPackageJson, null, 2) + '\n', - ) - const targetReadme = join(targetDir, 'README.md') - await writeFileAsync(targetReadme, readme(packageName, target)) - - debug.info(`${packageName} -${target.platformArchABI} created`) - } -} - -function readme(packageName: string, target: Target) { - return `# \`${packageName}-${target.platformArchABI}\` - -This is the **${target.triple}** binary for \`${packageName}\` -` -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/new.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/api/new.ts deleted file mode 100644 index 4860742..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/new.ts +++ /dev/null @@ -1,472 +0,0 @@ -import { exec, execSync } from 'node:child_process' -import { existsSync } from 'node:fs' -import { homedir } from 'node:os' -import path from 'node:path' -import { promises as fs } from 'node:fs' - -import { load as yamlLoad, dump as yamlDump } from 'js-yaml' - -import { - applyDefaultNewOptions, - type NewOptions as RawNewOptions, -} from '../def/new.js' -import { - AVAILABLE_TARGETS, - debugFactory, - DEFAULT_TARGETS, - mkdirAsync, - readdirAsync, - statAsync, - type SupportedPackageManager, -} from '../utils/index.js' -import { napiEngineRequirement } from '../utils/version.js' -import { renameProject } from './rename.js' - -// Template imports removed as we're now using external templates - -const debug = debugFactory('new') - -type NewOptions = Required - -const TEMPLATE_REPOS = { - yarn: 'https://github.com/napi-rs/package-template', - pnpm: 'https://github.com/napi-rs/package-template-pnpm', -} as const - -async function checkGitCommand(): Promise { - try { - await new Promise((resolve) => { - const cp = exec('git --version') - cp.on('error', () => { - resolve(false) - }) - cp.on('exit', (code) => { - if (code === 0) { - resolve(true) - } else { - resolve(false) - } - }) - }) - return true - } catch { - return false - } -} - -async function ensureCacheDir( - packageManager: SupportedPackageManager, -): Promise { - const cacheDir = path.join(homedir(), '.napi-rs', 'template', packageManager) - await mkdirAsync(cacheDir, { recursive: true }) - return cacheDir -} - -async function downloadTemplate( - packageManager: SupportedPackageManager, - cacheDir: string, -): Promise { - const repoUrl = TEMPLATE_REPOS[packageManager] - const templatePath = path.join(cacheDir, 'repo') - - if (existsSync(templatePath)) { - debug(`Template cache found at ${templatePath}, updating...`) - try { - // Fetch latest changes and reset to remote - await new Promise((resolve, reject) => { - const cp = exec('git fetch origin', { cwd: templatePath }) - cp.on('error', reject) - cp.on('exit', (code) => { - if (code === 0) { - resolve() - } else { - reject( - new Error( - `Failed to fetch latest changes, git process exited with code ${code}`, - ), - ) - } - }) - }) - execSync('git reset --hard origin/main', { - cwd: templatePath, - stdio: 'ignore', - }) - debug('Template updated successfully') - } catch (error) { - debug(`Failed to update template: ${error}`) - throw new Error(`Failed to update template from ${repoUrl}: ${error}`) - } - } else { - debug(`Cloning template from ${repoUrl}...`) - try { - execSync(`git clone ${repoUrl} repo`, { cwd: cacheDir, stdio: 'inherit' }) - debug('Template cloned successfully') - } catch (error) { - throw new Error(`Failed to clone template from ${repoUrl}: ${error}`) - } - } -} - -async function copyDirectory( - src: string, - dest: string, - includeWasiBindings: boolean, -): Promise { - await mkdirAsync(dest, { recursive: true }) - const entries = await fs.readdir(src, { withFileTypes: true }) - - for (const entry of entries) { - const srcPath = path.join(src, entry.name) - const destPath = path.join(dest, entry.name) - - // Skip .git directory - if (entry.name === '.git') { - continue - } - - if (entry.isDirectory()) { - await copyDirectory(srcPath, destPath, includeWasiBindings) - } else { - if ( - !includeWasiBindings && - (entry.name.endsWith('.wasi-browser.js') || - entry.name.endsWith('.wasi.cjs') || - entry.name.endsWith('wasi-worker.browser.mjs ') || - entry.name.endsWith('wasi-worker.mjs') || - entry.name.endsWith('browser.js')) - ) { - continue - } - await fs.copyFile(srcPath, destPath) - } - } -} - -async function filterTargetsInPackageJson( - filePath: string, - enabledTargets: string[], -): Promise { - const content = await fs.readFile(filePath, 'utf-8') - const packageJson = JSON.parse(content) - - // Filter napi.targets - if (packageJson.napi?.targets) { - packageJson.napi.targets = packageJson.napi.targets.filter( - (target: string) => enabledTargets.includes(target), - ) - } - - await fs.writeFile(filePath, JSON.stringify(packageJson, null, 2) + '\n') -} - -async function filterTargetsInGithubActions( - filePath: string, - enabledTargets: string[], -): Promise { - const content = await fs.readFile(filePath, 'utf-8') - const yaml = yamlLoad(content) as any - - const macOSAndWindowsTargets = new Set([ - 'x86_64-pc-windows-msvc', - 'x86_64-pc-windows-gnu', - 'aarch64-pc-windows-msvc', - 'x86_64-apple-darwin', - ]) - - const linuxTargets = new Set([ - 'x86_64-unknown-linux-gnu', - 'x86_64-unknown-linux-musl', - 'aarch64-unknown-linux-gnu', - 'aarch64-unknown-linux-musl', - 'armv7-unknown-linux-gnueabihf', - 'armv7-unknown-linux-musleabihf', - 'loongarch64-unknown-linux-gnu', - 'riscv64gc-unknown-linux-gnu', - 'powerpc64le-unknown-linux-gnu', - 's390x-unknown-linux-gnu', - 'aarch64-linux-android', - 'armv7-linux-androideabi', - ]) - - // Check if any Linux targets are enabled - const hasLinuxTargets = enabledTargets.some((target) => - linuxTargets.has(target), - ) - - // Filter the matrix configurations in the build job - if (yaml?.jobs?.build?.strategy?.matrix?.settings) { - yaml.jobs.build.strategy.matrix.settings = - yaml.jobs.build.strategy.matrix.settings.filter((setting: any) => { - if (setting.target) { - return enabledTargets.includes(setting.target) - } - return true - }) - } - - const jobsToRemove: string[] = [] - - if (enabledTargets.every((target) => !macOSAndWindowsTargets.has(target))) { - jobsToRemove.push('test-macOS-windows-binding') - } else { - // Filter the matrix configurations in the test-macOS-windows-binding job - if ( - yaml?.jobs?.['test-macOS-windows-binding']?.strategy?.matrix?.settings - ) { - yaml.jobs['test-macOS-windows-binding'].strategy.matrix.settings = - yaml.jobs['test-macOS-windows-binding'].strategy.matrix.settings.filter( - (setting: any) => { - if (setting.target) { - return enabledTargets.includes(setting.target) - } - return true - }, - ) - } - } - - // If no Linux targets are enabled, remove Linux-specific jobs - if (!hasLinuxTargets) { - // Remove test-linux-binding job - if (yaml?.jobs?.['test-linux-binding']) { - jobsToRemove.push('test-linux-binding') - } - } else { - // Filter the matrix configurations in the test-linux-x64-gnu-binding job - if (yaml?.jobs?.['test-linux-binding']?.strategy?.matrix?.target) { - yaml.jobs['test-linux-binding'].strategy.matrix.target = yaml.jobs[ - 'test-linux-binding' - ].strategy.matrix.target.filter((target: string) => { - if (target) { - return enabledTargets.includes(target) - } - return true - }) - } - } - - if (!enabledTargets.includes('wasm32-wasip1-threads')) { - jobsToRemove.push('test-wasi') - } - - if (!enabledTargets.includes('x86_64-unknown-freebsd')) { - jobsToRemove.push('build-freebsd') - } - - // Filter other test jobs based on target - for (const [jobName, jobConfig] of Object.entries(yaml.jobs || {})) { - if ( - jobName.startsWith('test-') && - jobName !== 'test-macOS-windows-binding' && - jobName !== 'test-linux-x64-gnu-binding' - ) { - // Extract target from job name or config - const job = jobConfig as any - if (job.strategy?.matrix?.settings?.[0]?.target) { - const target = job.strategy.matrix.settings[0].target - if (!enabledTargets.includes(target)) { - jobsToRemove.push(jobName) - } - } - } - } - - // Remove jobs for disabled targets - for (const jobName of jobsToRemove) { - delete yaml.jobs[jobName] - } - - if (Array.isArray(yaml.jobs?.publish?.needs)) { - yaml.jobs.publish.needs = yaml.jobs.publish.needs.filter( - (need: string) => !jobsToRemove.includes(need), - ) - } - - // Write back the filtered YAML - const updatedYaml = yamlDump(yaml, { - lineWidth: -1, - noRefs: true, - sortKeys: false, - }) - await fs.writeFile(filePath, updatedYaml) -} - -function processOptions(options: RawNewOptions) { - debug('Processing options...') - if (!options.path) { - throw new Error('Please provide the path as the argument') - } - options.path = path.resolve(process.cwd(), options.path) - debug(`Resolved target path to: ${options.path}`) - - if (!options.name) { - options.name = path.parse(options.path).base - debug(`No project name provided, fix it to dir name: ${options.name}`) - } - - if (!options.targets?.length) { - if (options.enableAllTargets) { - options.targets = AVAILABLE_TARGETS.concat() - debug('Enable all targets') - } else if (options.enableDefaultTargets) { - options.targets = DEFAULT_TARGETS.concat() - debug('Enable default targets') - } else { - throw new Error('At least one target must be enabled') - } - } - if ( - options.targets.some((target) => target === 'wasm32-wasi-preview1-threads') - ) { - const out = execSync(`rustup target list`, { - encoding: 'utf8', - }) - if (out.includes('wasm32-wasip1-threads')) { - options.targets = options.targets.map((target) => - target === 'wasm32-wasi-preview1-threads' - ? 'wasm32-wasip1-threads' - : target, - ) - } - } - - return applyDefaultNewOptions(options) as NewOptions -} - -export async function newProject(userOptions: RawNewOptions) { - debug('Will create napi-rs project with given options:') - debug(userOptions) - - const options = processOptions(userOptions) - - debug('Targets to be enabled:') - debug(options.targets) - - // Check if git is available - if (!(await checkGitCommand())) { - throw new Error( - 'Git is not installed or not available in PATH. Please install Git to continue.', - ) - } - - const packageManager = options.packageManager as SupportedPackageManager - - // Ensure target directory exists and is empty - await ensurePath(options.path, options.dryRun) - - if (!options.dryRun) { - try { - // Download or update template - const cacheDir = await ensureCacheDir(packageManager) - await downloadTemplate(packageManager, cacheDir) - - // Copy template files to target directory - const templatePath = path.join(cacheDir, 'repo') - await copyDirectory( - templatePath, - options.path, - options.targets.includes('wasm32-wasip1-threads'), - ) - - // Rename project using the rename API - await renameProject({ - cwd: options.path, - name: options.name, - binaryName: getBinaryName(options.name), - }) - - // Filter targets in package.json - const packageJsonPath = path.join(options.path, 'package.json') - if (existsSync(packageJsonPath)) { - await filterTargetsInPackageJson(packageJsonPath, options.targets) - } - - // Filter targets in GitHub Actions CI - const ciPath = path.join(options.path, '.github', 'workflows', 'CI.yml') - if (existsSync(ciPath) && options.enableGithubActions) { - await filterTargetsInGithubActions(ciPath, options.targets) - } else if ( - !options.enableGithubActions && - existsSync(path.join(options.path, '.github')) - ) { - // Remove .github directory if GitHub Actions is not enabled - await fs.rm(path.join(options.path, '.github'), { - recursive: true, - force: true, - }) - } - - // Update package.json with additional configurations - const pkgJsonContent = await fs.readFile(packageJsonPath, 'utf-8') - const pkgJson = JSON.parse(pkgJsonContent) - - // Update engine requirement - if (!pkgJson.engines) { - pkgJson.engines = {} - } - pkgJson.engines.node = napiEngineRequirement(options.minNodeApiVersion) - - // Update license if different from template - if (options.license && pkgJson.license !== options.license) { - pkgJson.license = options.license - } - - // Update test framework if needed - if (options.testFramework !== 'ava') { - // This would require more complex logic to update test scripts and dependencies - debug( - `Test framework ${options.testFramework} requested but not yet implemented`, - ) - } - - await fs.writeFile( - packageJsonPath, - JSON.stringify(pkgJson, null, 2) + '\n', - ) - } catch (error) { - throw new Error(`Failed to create project: ${error}`) - } - } - - debug(`Project created at: ${options.path}`) -} - -async function ensurePath(path: string, dryRun = false) { - const stat = await statAsync(path, {}).catch(() => undefined) - - // file descriptor exists - if (stat) { - if (stat.isFile()) { - throw new Error( - `Path ${path} for creating new napi-rs project already exists and it's not a directory.`, - ) - } else if (stat.isDirectory()) { - const files = await readdirAsync(path) - if (files.length) { - throw new Error( - `Path ${path} for creating new napi-rs project already exists and it's not empty.`, - ) - } - } - } - - if (!dryRun) { - try { - debug(`Try to create target directory: ${path}`) - if (!dryRun) { - await mkdirAsync(path, { recursive: true }) - } - } catch (e) { - throw new Error(`Failed to create target directory: ${path}`, { - cause: e, - }) - } - } -} - -function getBinaryName(name: string): string { - return name.split('/').pop()! -} - -export type { NewOptions } diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/pre-publish.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/api/pre-publish.ts deleted file mode 100644 index 4012ca7..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/pre-publish.ts +++ /dev/null @@ -1,243 +0,0 @@ -import { execSync } from 'node:child_process' -import { existsSync, statSync } from 'node:fs' -import { join, resolve } from 'node:path' - -import { Octokit } from '@octokit/rest' - -import { - applyDefaultPrePublishOptions, - type PrePublishOptions, -} from '../def/pre-publish.js' -import { - readFileAsync, - readNapiConfig, - debugFactory, - updatePackageJson, -} from '../utils/index.js' - -import { version } from './version.js' - -const debug = debugFactory('pre-publish') - -interface PackageInfo { - name: string - version: string - tag: string -} - -export async function prePublish(userOptions: PrePublishOptions) { - debug('Receive pre-publish options:') - debug(' %O', userOptions) - - const options = applyDefaultPrePublishOptions(userOptions) - - const packageJsonPath = resolve(options.cwd, options.packageJsonPath) - - const { packageJson, targets, packageName, binaryName, npmClient } = - await readNapiConfig( - packageJsonPath, - options.configPath ? resolve(options.cwd, options.configPath) : undefined, - ) - - async function createGhRelease(packageName: string, version: string) { - if (!options.ghRelease) { - return { - owner: null, - repo: null, - pkgInfo: { name: null, version: null, tag: null }, - } - } - const { repo, owner, pkgInfo, octokit } = getRepoInfo(packageName, version) - - if (!repo || !owner) { - return { - owner: null, - repo: null, - pkgInfo: { name: null, version: null, tag: null }, - } - } - - if (!options.dryRun) { - try { - await octokit.repos.createRelease({ - owner, - repo, - tag_name: pkgInfo.tag, - name: options.ghReleaseName, - prerelease: - version.includes('alpha') || - version.includes('beta') || - version.includes('rc'), - }) - } catch (e) { - debug( - `Params: ${JSON.stringify( - { owner, repo, tag_name: pkgInfo.tag }, - null, - 2, - )}`, - ) - console.error(e) - } - } - return { owner, repo, pkgInfo, octokit } - } - - function getRepoInfo(packageName: string, version: string) { - const headCommit = execSync('git log -1 --pretty=%B', { - encoding: 'utf-8', - }).trim() - - const { GITHUB_REPOSITORY } = process.env - if (!GITHUB_REPOSITORY) { - return { - owner: null, - repo: null, - pkgInfo: { name: null, version: null, tag: null }, - } - } - debug(`Github repository: ${GITHUB_REPOSITORY}`) - const [owner, repo] = GITHUB_REPOSITORY.split('/') - const octokit = new Octokit({ - auth: process.env.GITHUB_TOKEN, - }) - let pkgInfo: PackageInfo | undefined - if (options.tagStyle === 'lerna') { - const packagesToPublish = headCommit - .split('\n') - .map((line) => line.trim()) - .filter((line, index) => line.length && index) - .map((line) => line.substring(2)) - .map(parseTag) - - pkgInfo = packagesToPublish.find( - (pkgInfo) => pkgInfo.name === packageName, - ) - - if (!pkgInfo) { - throw new TypeError( - `No release commit found with ${packageName}, original commit info: ${headCommit}`, - ) - } - } else { - pkgInfo = { - tag: `v${version}`, - version, - name: packageName, - } - } - return { owner, repo, pkgInfo, octokit } - } - - if (!options.dryRun) { - await version(userOptions) - await updatePackageJson(packageJsonPath, { - optionalDependencies: targets.reduce( - (deps, target) => { - deps[`${packageName}-${target.platformArchABI}`] = packageJson.version - - return deps - }, - {} as Record, - ), - }) - } - - const { owner, repo, pkgInfo, octokit } = options.ghReleaseId - ? getRepoInfo(packageName, packageJson.version) - : await createGhRelease(packageName, packageJson.version) - - for (const target of targets) { - const pkgDir = resolve( - options.cwd, - options.npmDir, - `${target.platformArchABI}`, - ) - const ext = - target.platform === 'wasi' || target.platform === 'wasm' ? 'wasm' : 'node' - const filename = `${binaryName}.${target.platformArchABI}.${ext}` - const dstPath = join(pkgDir, filename) - - if (!options.dryRun) { - if (!existsSync(dstPath)) { - debug.warn(`%s doesn't exist`, dstPath) - continue - } - - if (!options.skipOptionalPublish) { - try { - const output = execSync(`${npmClient} publish`, { - cwd: pkgDir, - env: process.env, - stdio: 'pipe', - }) - process.stdout.write(output) - } catch (e) { - if ( - e instanceof Error && - e.message.includes( - 'You cannot publish over the previously published versions', - ) - ) { - console.info(e.message) - debug.warn(`${pkgDir} has been published, skipping`) - } else { - throw e - } - } - } - - if (options.ghRelease && repo && owner) { - debug.info(`Creating GitHub release ${pkgInfo.tag}`) - try { - const releaseId = options.ghReleaseId - ? Number(options.ghReleaseId) - : ( - await octokit!.repos.getReleaseByTag({ - repo: repo, - owner: owner, - tag: pkgInfo.tag, - }) - ).data.id - const dstFileStats = statSync(dstPath) - const assetInfo = await octokit!.repos.uploadReleaseAsset({ - owner: owner, - repo: repo, - name: filename, - release_id: releaseId, - mediaType: { format: 'raw' }, - headers: { - 'content-length': dstFileStats.size, - 'content-type': 'application/octet-stream', - }, - // @ts-expect-error octokit types are wrong - data: await readFileAsync(dstPath), - }) - debug.info(`GitHub release created`) - debug.info(`Download URL: %s`, assetInfo.data.browser_download_url) - } catch (e) { - debug.error( - `Param: ${JSON.stringify( - { owner, repo, tag: pkgInfo.tag, filename: dstPath }, - null, - 2, - )}`, - ) - debug.error(e) - } - } - } - } -} - -function parseTag(tag: string) { - const segments = tag.split('@') - const version = segments.pop()! - const name = segments.join('@') - - return { - name, - version, - tag, - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/rename.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/api/rename.ts deleted file mode 100644 index c0988a6..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/rename.ts +++ /dev/null @@ -1,142 +0,0 @@ -import { existsSync } from 'node:fs' -import { rename } from 'node:fs/promises' -import { resolve, join } from 'node:path' - -import { parse as parseToml, stringify as stringifyToml } from '@std/toml' -import { load as yamlParse, dump as yamlStringify } from 'js-yaml' -import { isNil, merge, omitBy, pick } from 'es-toolkit' -import * as find from 'empathic/find' - -import { applyDefaultRenameOptions, type RenameOptions } from '../def/rename.js' -import { readConfig, readFileAsync, writeFileAsync } from '../utils/index.js' - -export async function renameProject(userOptions: RenameOptions) { - const options = applyDefaultRenameOptions(userOptions) - const napiConfig = await readConfig(options) - const oldName = napiConfig.binaryName - - const packageJsonPath = resolve(options.cwd, options.packageJsonPath) - const cargoTomlPath = resolve(options.cwd, options.manifestPath) - - const packageJsonContent = await readFileAsync(packageJsonPath, 'utf8') - const packageJsonData = JSON.parse(packageJsonContent) - - merge( - merge( - packageJsonData, - omitBy( - // @ts-expect-error missing fields: author and license - pick(options, ['name', 'description', 'author', 'license']), - isNil, - ), - ), - { - napi: omitBy( - { - binaryName: options.binaryName, - packageName: options.packageName, - }, - isNil, - ), - }, - ) - - if (options.configPath) { - const configPath = resolve(options.cwd, options.configPath) - const configContent = await readFileAsync(configPath, 'utf8') - const configData = JSON.parse(configContent) - configData.binaryName = options.binaryName - configData.packageName = options.packageName - await writeFileAsync(configPath, JSON.stringify(configData, null, 2)) - } - - await writeFileAsync( - packageJsonPath, - JSON.stringify(packageJsonData, null, 2), - ) - - const tomlContent = await readFileAsync(cargoTomlPath, 'utf8') - const cargoToml = parseToml(tomlContent) as any - - // Update the package name - if (cargoToml.package && options.binaryName) { - // Sanitize the binary name for Rust package naming conventions - const sanitizedName = options.binaryName - .replace('@', '') - .replace('/', '_') - .replace(/-/g, '_') - .toLowerCase() - cargoToml.package.name = sanitizedName - } - - // Stringify the updated TOML - const updatedTomlContent = stringifyToml(cargoToml) - - await writeFileAsync(cargoTomlPath, updatedTomlContent) - if (oldName !== options.binaryName) { - const githubActionsPath = find.dir('.github', { - cwd: options.cwd, - }) - if (githubActionsPath) { - const githubActionsCIYmlPath = join( - githubActionsPath, - 'workflows', - 'CI.yml', - ) - if (existsSync(githubActionsCIYmlPath)) { - const githubActionsContent = await readFileAsync( - githubActionsCIYmlPath, - 'utf8', - ) - const githubActionsData = yamlParse(githubActionsContent) as any - if (githubActionsData.env?.APP_NAME) { - githubActionsData.env.APP_NAME = options.binaryName - await writeFileAsync( - githubActionsCIYmlPath, - yamlStringify(githubActionsData, { - lineWidth: -1, - noRefs: true, - sortKeys: false, - }), - ) - } - } - } - const oldWasiBrowserBindingPath = join( - options.cwd, - `${oldName}.wasi-browser.js`, - ) - if (existsSync(oldWasiBrowserBindingPath)) { - await rename( - oldWasiBrowserBindingPath, - join(options.cwd, `${options.binaryName}.wasi-browser.js`), - ) - } - const oldWasiBindingPath = join(options.cwd, `${oldName}.wasi.cjs`) - if (existsSync(oldWasiBindingPath)) { - await rename( - oldWasiBindingPath, - join(options.cwd, `${options.binaryName}.wasi.cjs`), - ) - } - const gitAttributesPath = join(options.cwd, '.gitattributes') - if (existsSync(gitAttributesPath)) { - const gitAttributesContent = await readFileAsync( - gitAttributesPath, - 'utf8', - ) - const gitAttributesData = gitAttributesContent - .split('\n') - .map((line) => { - return line - .replace( - `${oldName}.wasi-browser.js`, - `${options.binaryName}.wasi-browser.js`, - ) - .replace(`${oldName}.wasi.cjs`, `${options.binaryName}.wasi.cjs`) - }) - .join('\n') - await writeFileAsync(gitAttributesPath, gitAttributesData) - } - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/templates/index.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/api/templates/index.ts deleted file mode 100644 index ebc997d..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/templates/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './js-binding.js' diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/templates/js-binding.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/api/templates/js-binding.ts deleted file mode 100644 index 4c894bd..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/templates/js-binding.ts +++ /dev/null @@ -1,280 +0,0 @@ -export function createCjsBinding( - localName: string, - pkgName: string, - idents: string[], - packageVersion?: string, -): string { - return `${bindingHeader} -${createCommonBinding(localName, pkgName, packageVersion)} -module.exports = nativeBinding -${idents - .map((ident) => `module.exports.${ident} = nativeBinding.${ident}`) - .join('\n')} -` -} - -export function createEsmBinding( - localName: string, - pkgName: string, - idents: string[], - packageVersion?: string, -): string { - return `${bindingHeader} -import { createRequire } from 'node:module' -const require = createRequire(import.meta.url) -const __dirname = new URL('.', import.meta.url).pathname - -${createCommonBinding(localName, pkgName, packageVersion)} -const { ${idents.join(', ')} } = nativeBinding -${idents.map((ident) => `export { ${ident} }`).join('\n')} -` -} - -const bindingHeader = `// prettier-ignore -/* eslint-disable */ -// @ts-nocheck -/* auto-generated by NAPI-RS */ -` - -function createCommonBinding( - localName: string, - pkgName: string, - packageVersion?: string, -): string { - function requireTuple(tuple: string, identSize = 8) { - const identLow = ' '.repeat(identSize - 2) - const ident = ' '.repeat(identSize) - const versionCheck = packageVersion - ? ` -${identLow}try { -${ident}const binding = require('${pkgName}-${tuple}') -${ident}const bindingPackageVersion = require('${pkgName}-${tuple}/package.json').version -${ident}if (bindingPackageVersion !== '${packageVersion}' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { -${ident} throw new Error(\`Native binding package version mismatch, expected ${packageVersion} but got \${bindingPackageVersion}. You can reinstall dependencies to fix this issue.\`) -${ident}} -${ident}return binding -${identLow}} catch (e) { -${ident}loadErrors.push(e) -${identLow}}` - : ` -${identLow}try { -${ident}return require('${pkgName}-${tuple}') -${identLow}} catch (e) { -${ident}loadErrors.push(e) -${identLow}}` - return `try { -${ident}return require('./${localName}.${tuple}.node') -${identLow}} catch (e) { -${ident}loadErrors.push(e) -${identLow}}${versionCheck}` - } - - return `const { readFileSync } = require('node:fs') -let nativeBinding = null -const loadErrors = [] - -const isMusl = () => { - let musl = false - if (process.platform === 'linux') { - musl = isMuslFromFilesystem() - if (musl === null) { - musl = isMuslFromReport() - } - if (musl === null) { - musl = isMuslFromChildProcess() - } - } - return musl -} - -const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-') - -const isMuslFromFilesystem = () => { - try { - return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl') - } catch { - return null - } -} - -const isMuslFromReport = () => { - let report = null - if (typeof process.report?.getReport === 'function') { - process.report.excludeNetwork = true - report = process.report.getReport() - } - if (!report) { - return null - } - if (report.header && report.header.glibcVersionRuntime) { - return false - } - if (Array.isArray(report.sharedObjects)) { - if (report.sharedObjects.some(isFileMusl)) { - return true - } - } - return false -} - -const isMuslFromChildProcess = () => { - try { - return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl') - } catch (e) { - // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false - return false - } -} - -function requireNative() { - if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) { - try { - return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH); - } catch (err) { - loadErrors.push(err) - } - } else if (process.platform === 'android') { - if (process.arch === 'arm64') { - ${requireTuple('android-arm64')} - } else if (process.arch === 'arm') { - ${requireTuple('android-arm-eabi')} - } else { - loadErrors.push(new Error(\`Unsupported architecture on Android \${process.arch}\`)) - } - } else if (process.platform === 'win32') { - if (process.arch === 'x64') { - if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') { - ${requireTuple('win32-x64-gnu')} - } else { - ${requireTuple('win32-x64-msvc')} - } - } else if (process.arch === 'ia32') { - ${requireTuple('win32-ia32-msvc')} - } else if (process.arch === 'arm64') { - ${requireTuple('win32-arm64-msvc')} - } else { - loadErrors.push(new Error(\`Unsupported architecture on Windows: \${process.arch}\`)) - } - } else if (process.platform === 'darwin') { - ${requireTuple('darwin-universal', 6)} - if (process.arch === 'x64') { - ${requireTuple('darwin-x64')} - } else if (process.arch === 'arm64') { - ${requireTuple('darwin-arm64')} - } else { - loadErrors.push(new Error(\`Unsupported architecture on macOS: \${process.arch}\`)) - } - } else if (process.platform === 'freebsd') { - if (process.arch === 'x64') { - ${requireTuple('freebsd-x64')} - } else if (process.arch === 'arm64') { - ${requireTuple('freebsd-arm64')} - } else { - loadErrors.push(new Error(\`Unsupported architecture on FreeBSD: \${process.arch}\`)) - } - } else if (process.platform === 'linux') { - if (process.arch === 'x64') { - if (isMusl()) { - ${requireTuple('linux-x64-musl', 10)} - } else { - ${requireTuple('linux-x64-gnu', 10)} - } - } else if (process.arch === 'arm64') { - if (isMusl()) { - ${requireTuple('linux-arm64-musl', 10)} - } else { - ${requireTuple('linux-arm64-gnu', 10)} - } - } else if (process.arch === 'arm') { - if (isMusl()) { - ${requireTuple('linux-arm-musleabihf', 10)} - } else { - ${requireTuple('linux-arm-gnueabihf', 10)} - } - } else if (process.arch === 'loong64') { - if (isMusl()) { - ${requireTuple('linux-loong64-musl', 10)} - } else { - ${requireTuple('linux-loong64-gnu', 10)} - } - } else if (process.arch === 'riscv64') { - if (isMusl()) { - ${requireTuple('linux-riscv64-musl', 10)} - } else { - ${requireTuple('linux-riscv64-gnu', 10)} - } - } else if (process.arch === 'ppc64') { - ${requireTuple('linux-ppc64-gnu')} - } else if (process.arch === 's390x') { - ${requireTuple('linux-s390x-gnu')} - } else { - loadErrors.push(new Error(\`Unsupported architecture on Linux: \${process.arch}\`)) - } - } else if (process.platform === 'openharmony') { - if (process.arch === 'arm64') { - ${requireTuple('openharmony-arm64')} - } else if (process.arch === 'x64') { - ${requireTuple('openharmony-x64')} - } else if (process.arch === 'arm') { - ${requireTuple('openharmony-arm')} - } else { - loadErrors.push(new Error(\`Unsupported architecture on OpenHarmony: \${process.arch}\`)) - } - } else { - loadErrors.push(new Error(\`Unsupported OS: \${process.platform}, architecture: \${process.arch}\`)) - } -} - -nativeBinding = requireNative() - -if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) { - let wasiBinding = null - let wasiBindingError = null - try { - wasiBinding = require('./${localName}.wasi.cjs') - nativeBinding = wasiBinding - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - wasiBindingError = err - } - } - if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) { - try { - wasiBinding = require('${pkgName}-wasm32-wasi') - nativeBinding = wasiBinding - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - if (!wasiBindingError) { - wasiBindingError = err - } else { - wasiBindingError.cause = err - } - loadErrors.push(err) - } - } - } - if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) { - const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error') - error.cause = wasiBindingError - throw error - } -} - -if (!nativeBinding) { - if (loadErrors.length > 0) { - throw new Error( - \`Cannot find native binding. \` + - \`npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). \` + - 'Please try \`npm i\` again after removing both package-lock.json and node_modules directory.', - { - cause: loadErrors.reduce((err, cur) => { - cur.cause = err - return cur - }), - }, - ) - } - throw new Error(\`Failed to load native binding\`) -} -` -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/templates/load-wasi-template.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/api/templates/load-wasi-template.ts deleted file mode 100644 index fcc0ee1..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/templates/load-wasi-template.ts +++ /dev/null @@ -1,216 +0,0 @@ -export const createWasiBrowserBinding = ( - wasiFilename: string, - initialMemory = 4000, - maximumMemory = 65536, - fs = false, - asyncInit = false, - buffer = false, -) => { - const fsImport = fs - ? buffer - ? `import { memfs, Buffer } from '@napi-rs/wasm-runtime/fs'` - : `import { memfs } from '@napi-rs/wasm-runtime/fs'` - : '' - const bufferImport = buffer && !fs ? `import { Buffer } from 'buffer'` : '' - const wasiCreation = fs - ? ` -export const { fs: __fs, vol: __volume } = memfs() - -const __wasi = new __WASI({ - version: 'preview1', - fs: __fs, - preopens: { - '/': '/', - }, -})` - : ` -const __wasi = new __WASI({ - version: 'preview1', -})` - - const workerFsHandler = fs - ? ` worker.addEventListener('message', __wasmCreateOnMessageForFsProxy(__fs))\n` - : '' - - const emnapiInjectBuffer = buffer - ? '__emnapiContext.feature.Buffer = Buffer' - : '' - const emnapiInstantiateImport = asyncInit - ? `instantiateNapiModule as __emnapiInstantiateNapiModule` - : `instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync` - const emnapiInstantiateCall = asyncInit - ? `await __emnapiInstantiateNapiModule` - : `__emnapiInstantiateNapiModuleSync` - - return `import { - createOnMessage as __wasmCreateOnMessageForFsProxy, - getDefaultContext as __emnapiGetDefaultContext, - ${emnapiInstantiateImport}, - WASI as __WASI, -} from '@napi-rs/wasm-runtime' -${fsImport} -${bufferImport} -${wasiCreation} - -const __wasmUrl = new URL('./${wasiFilename}.wasm', import.meta.url).href -const __emnapiContext = __emnapiGetDefaultContext() -${emnapiInjectBuffer} - -const __sharedMemory = new WebAssembly.Memory({ - initial: ${initialMemory}, - maximum: ${maximumMemory}, - shared: true, -}) - -const __wasmFile = await fetch(__wasmUrl).then((res) => res.arrayBuffer()) - -const { - instance: __napiInstance, - module: __wasiModule, - napiModule: __napiModule, -} = ${emnapiInstantiateCall}(__wasmFile, { - context: __emnapiContext, - asyncWorkPoolSize: 4, - wasi: __wasi, - onCreateWorker() { - const worker = new Worker(new URL('./wasi-worker-browser.mjs', import.meta.url), { - type: 'module', - }) -${workerFsHandler} - return worker - }, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: __sharedMemory, - } - return importObject - }, - beforeInit({ instance }) { - for (const name of Object.keys(instance.exports)) { - if (name.startsWith('__napi_register__')) { - instance.exports[name]() - } - } - }, -}) -` -} - -export const createWasiBinding = ( - wasmFileName: string, - packageName: string, - initialMemory = 4000, - maximumMemory = 65536, -) => `/* eslint-disable */ -/* prettier-ignore */ - -/* auto-generated by NAPI-RS */ - -const __nodeFs = require('node:fs') -const __nodePath = require('node:path') -const { WASI: __nodeWASI } = require('node:wasi') -const { Worker } = require('node:worker_threads') - -const { - createOnMessage: __wasmCreateOnMessageForFsProxy, - getDefaultContext: __emnapiGetDefaultContext, - instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync, -} = require('@napi-rs/wasm-runtime') - -const __rootDir = __nodePath.parse(process.cwd()).root - -const __wasi = new __nodeWASI({ - version: 'preview1', - env: process.env, - preopens: { - [__rootDir]: __rootDir, - } -}) - -const __emnapiContext = __emnapiGetDefaultContext() - -const __sharedMemory = new WebAssembly.Memory({ - initial: ${initialMemory}, - maximum: ${maximumMemory}, - shared: true, -}) - -let __wasmFilePath = __nodePath.join(__dirname, '${wasmFileName}.wasm') -const __wasmDebugFilePath = __nodePath.join(__dirname, '${wasmFileName}.debug.wasm') - -if (__nodeFs.existsSync(__wasmDebugFilePath)) { - __wasmFilePath = __wasmDebugFilePath -} else if (!__nodeFs.existsSync(__wasmFilePath)) { - try { - __wasmFilePath = require.resolve('${packageName}-wasm32-wasi/${wasmFileName}.wasm') - } catch { - throw new Error('Cannot find ${wasmFileName}.wasm file, and ${packageName}-wasm32-wasi package is not installed.') - } -} - -const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { - context: __emnapiContext, - asyncWorkPoolSize: (function() { - const threadsSizeFromEnv = Number(process.env.NAPI_RS_ASYNC_WORK_POOL_SIZE ?? process.env.UV_THREADPOOL_SIZE) - // NaN > 0 is false - if (threadsSizeFromEnv > 0) { - return threadsSizeFromEnv - } else { - return 4 - } - })(), - reuseWorker: true, - wasi: __wasi, - onCreateWorker() { - const worker = new Worker(__nodePath.join(__dirname, 'wasi-worker.mjs'), { - env: process.env, - }) - worker.onmessage = ({ data }) => { - __wasmCreateOnMessageForFsProxy(__nodeFs)(data) - } - - // The main thread of Node.js waits for all the active handles before exiting. - // But Rust threads are never waited without \`thread::join\`. - // So here we hack the code of Node.js to prevent the workers from being referenced (active). - // According to https://github.com/nodejs/node/blob/19e0d472728c79d418b74bddff588bea70a403d0/lib/internal/worker.js#L415, - // a worker is consist of two handles: kPublicPort and kHandle. - { - const kPublicPort = Object.getOwnPropertySymbols(worker).find(s => - s.toString().includes("kPublicPort") - ); - if (kPublicPort) { - worker[kPublicPort].ref = () => {}; - } - - const kHandle = Object.getOwnPropertySymbols(worker).find(s => - s.toString().includes("kHandle") - ); - if (kHandle) { - worker[kHandle].ref = () => {}; - } - - worker.unref(); - } - return worker - }, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: __sharedMemory, - } - return importObject - }, - beforeInit({ instance }) { - for (const name of Object.keys(instance.exports)) { - if (name.startsWith('__napi_register__')) { - instance.exports[name]() - } - } - }, -}) -` diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/templates/wasi-worker-template.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/api/templates/wasi-worker-template.ts deleted file mode 100644 index dbca29c..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/templates/wasi-worker-template.ts +++ /dev/null @@ -1,122 +0,0 @@ -export const WASI_WORKER_TEMPLATE = `import fs from "node:fs"; -import { createRequire } from "node:module"; -import { parse } from "node:path"; -import { WASI } from "node:wasi"; -import { parentPort, Worker } from "node:worker_threads"; - -const require = createRequire(import.meta.url); - -const { instantiateNapiModuleSync, MessageHandler, getDefaultContext } = require("@napi-rs/wasm-runtime"); - -if (parentPort) { - parentPort.on("message", (data) => { - globalThis.onmessage({ data }); - }); -} - -Object.assign(globalThis, { - self: globalThis, - require, - Worker, - importScripts: function (f) { - ;(0, eval)(fs.readFileSync(f, "utf8") + "//# sourceURL=" + f); - }, - postMessage: function (msg) { - if (parentPort) { - parentPort.postMessage(msg); - } - }, -}); - -const emnapiContext = getDefaultContext(); - -const __rootDir = parse(process.cwd()).root; - -const handler = new MessageHandler({ - onLoad({ wasmModule, wasmMemory }) { - const wasi = new WASI({ - version: 'preview1', - env: process.env, - preopens: { - [__rootDir]: __rootDir, - }, - }); - - return instantiateNapiModuleSync(wasmModule, { - childThread: true, - wasi, - context: emnapiContext, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: wasmMemory - }; - }, - }); - }, -}); - -globalThis.onmessage = function (e) { - handler.handle(e); -}; -` - -export const createWasiBrowserWorkerBinding = (fs: boolean) => { - const fsImport = fs - ? `import { instantiateNapiModuleSync, MessageHandler, WASI, createFsProxy } from '@napi-rs/wasm-runtime' -import { memfsExported as __memfsExported } from '@napi-rs/wasm-runtime/fs' - -const fs = createFsProxy(__memfsExported)` - : `import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime'` - const wasiCreation = fs - ? `const wasi = new WASI({ - fs, - preopens: { - '/': '/', - }, - print: function () { - // eslint-disable-next-line no-console - console.log.apply(console, arguments) - }, - printErr: function() { - // eslint-disable-next-line no-console - console.error.apply(console, arguments) - }, - })` - : `const wasi = new WASI({ - print: function () { - // eslint-disable-next-line no-console - console.log.apply(console, arguments) - }, - printErr: function() { - // eslint-disable-next-line no-console - console.error.apply(console, arguments) - }, - })` - return `${fsImport} - -const handler = new MessageHandler({ - onLoad({ wasmModule, wasmMemory }) { - ${wasiCreation} - return instantiateNapiModuleSync(wasmModule, { - childThread: true, - wasi, - overwriteImports(importObject) { - importObject.env = { - ...importObject.env, - ...importObject.napi, - ...importObject.emnapi, - memory: wasmMemory, - } - }, - }) - }, -}) - -globalThis.onmessage = function (e) { - handler.handle(e) -} -` -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/universalize.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/api/universalize.ts deleted file mode 100644 index 2a5dd9a..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/universalize.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { spawnSync } from 'node:child_process' -import { join, resolve } from 'node:path' - -import { - applyDefaultUniversalizeOptions, - type UniversalizeOptions, -} from '../def/universalize.js' -import { readNapiConfig } from '../utils/config.js' -import { debugFactory } from '../utils/log.js' -import { fileExists } from '../utils/misc.js' -import { UniArchsByPlatform } from '../utils/target.js' - -const debug = debugFactory('universalize') - -const universalizers: Partial< - Record void> -> = { - darwin: (inputs, output) => { - spawnSync('lipo', ['-create', '-output', output, ...inputs], { - stdio: 'inherit', - }) - }, -} - -export async function universalizeBinaries(userOptions: UniversalizeOptions) { - const options = applyDefaultUniversalizeOptions(userOptions) - - const packageJsonPath = join(options.cwd, options.packageJsonPath) - - const config = await readNapiConfig( - packageJsonPath, - options.configPath ? resolve(options.cwd, options.configPath) : undefined, - ) - - const target = config.targets.find( - (t) => t.platform === process.platform && t.arch === 'universal', - ) - - if (!target) { - throw new Error( - `'universal' arch for platform '${process.platform}' not found in config!`, - ) - } - - const srcFiles = UniArchsByPlatform[process.platform]?.map((arch) => - resolve( - options.cwd, - options.outputDir, - `${config.binaryName}.${process.platform}-${arch}.node`, - ), - ) - - if (!srcFiles || !universalizers[process.platform]) { - throw new Error( - `'universal' arch for platform '${process.platform}' not supported.`, - ) - } - - debug(`Looking up source binaries to combine: `) - debug(' %O', srcFiles) - - const srcFileLookup = await Promise.all(srcFiles.map((f) => fileExists(f))) - - const notFoundFiles = srcFiles.filter((_, i) => !srcFileLookup[i]) - - if (notFoundFiles.length) { - throw new Error( - `Some binary files were not found: ${JSON.stringify(notFoundFiles)}`, - ) - } - - const output = resolve( - options.cwd, - options.outputDir, - `${config.binaryName}.${process.platform}-universal.node`, - ) - - universalizers[process.platform]?.(srcFiles, output) - - debug(`Produced universal binary: ${output}`) -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/version.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/api/version.ts deleted file mode 100644 index ab6a68c..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/api/version.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { join, resolve } from 'node:path' - -import { - applyDefaultVersionOptions, - type VersionOptions, -} from '../def/version.js' -import { - readNapiConfig, - debugFactory, - updatePackageJson, -} from '../utils/index.js' - -const debug = debugFactory('version') - -export async function version(userOptions: VersionOptions) { - const options = applyDefaultVersionOptions(userOptions) - const packageJsonPath = resolve(options.cwd, options.packageJsonPath) - - const config = await readNapiConfig( - packageJsonPath, - options.configPath ? resolve(options.cwd, options.configPath) : undefined, - ) - - for (const target of config.targets) { - const pkgDir = resolve(options.cwd, options.npmDir, target.platformArchABI) - - debug(`Update version to %i in [%i]`, config.packageJson.version, pkgDir) - await updatePackageJson(join(pkgDir, 'package.json'), { - version: config.packageJson.version, - }) - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/cli.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/cli.ts deleted file mode 100644 index 2e851e0..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/cli.ts +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env node - -import { cli } from './index.js' - -void cli.runExit(process.argv.slice(2)) diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/artifacts.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/artifacts.ts deleted file mode 100644 index 77d02a1..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/artifacts.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Command } from 'clipanion' - -import { collectArtifacts } from '../api/artifacts.js' -import { BaseArtifactsCommand } from '../def/artifacts.js' - -export class ArtifactsCommand extends BaseArtifactsCommand { - static usage = Command.Usage({ - description: 'Copy artifacts from Github Actions into specified dir', - examples: [ - [ - '$0 artifacts --output-dir ./artifacts --dist ./npm', - `Copy [binaryName].[platform].node under current dir(.) into packages under npm dir. -e.g: index.linux-x64-gnu.node --> ./npm/linux-x64-gnu/index.linux-x64-gnu.node`, - ], - ], - }) - - static paths = [['artifacts']] - - async execute() { - await collectArtifacts(this.getOptions()) - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/build.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/build.ts deleted file mode 100644 index b8a9b29..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/build.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { execSync } from 'node:child_process' - -import { Option } from 'clipanion' - -import { buildProject } from '../api/build.js' -import { BaseBuildCommand } from '../def/build.js' -import { debugFactory } from '../utils/index.js' - -const debug = debugFactory('build') - -export class BuildCommand extends BaseBuildCommand { - pipe = Option.String('--pipe', { - description: - 'Pipe all outputs file to given command. e.g. `napi build --pipe "npx prettier --write"`', - }) - - cargoOptions = Option.Rest() - - async execute() { - const { task } = await buildProject({ - ...this.getOptions(), - cargoOptions: this.cargoOptions, - }) - - const outputs = await task - - if (this.pipe) { - for (const output of outputs) { - debug('Piping output file to command: %s', this.pipe) - try { - execSync(`${this.pipe} ${output.path}`, { - stdio: 'inherit', - cwd: this.cwd, - }) - } catch (e) { - debug.error(`Failed to pipe output file ${output.path} to command`) - debug.error(e) - } - } - } - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/create-npm-dirs.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/create-npm-dirs.ts deleted file mode 100644 index 5bed874..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/create-npm-dirs.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { createNpmDirs } from '../api/create-npm-dirs.js' -import { BaseCreateNpmDirsCommand } from '../def/create-npm-dirs.js' - -export class CreateNpmDirsCommand extends BaseCreateNpmDirsCommand { - async execute() { - await createNpmDirs(this.getOptions()) - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/help.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/help.ts deleted file mode 100644 index 18e5cd4..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/help.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Command } from 'clipanion' - -/** - * A command that prints the usage of all commands. - * - * Paths: `-h`, `--help` - */ -export class HelpCommand extends Command { - static paths = [[`-h`], [`--help`]] - async execute() { - await this.context.stdout.write(this.cli.usage()) - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/new.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/new.ts deleted file mode 100644 index 20da659..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/new.ts +++ /dev/null @@ -1,136 +0,0 @@ -import path from 'node:path' - -import { input, select, checkbox, confirm } from '@inquirer/prompts' -import { Option } from 'clipanion' - -import { newProject } from '../api/new.js' -import { BaseNewCommand } from '../def/new.js' -import { - AVAILABLE_TARGETS, - debugFactory, - DEFAULT_TARGETS, - type TargetTriple, -} from '../utils/index.js' -import { napiEngineRequirement } from '../utils/version.js' - -const debug = debugFactory('new') - -export class NewCommand extends BaseNewCommand { - interactive = Option.Boolean('--interactive,-i', true, { - description: - 'Ask project basic information interactively without just using the default.', - }) - - async execute() { - try { - const options = await this.fetchOptions() - await newProject(options) - return 0 - } catch (e) { - debug('Failed to create new project') - debug.error(e) - return 1 - } - } - - private async fetchOptions() { - const cmdOptions = super.getOptions() - - if (this.interactive) { - const targetPath: string = cmdOptions.path - ? cmdOptions.path - : await inquirerProjectPath() - cmdOptions.path = targetPath - return { - ...cmdOptions, - name: await this.fetchName(path.parse(targetPath).base), - minNodeApiVersion: await this.fetchNapiVersion(), - targets: await this.fetchTargets(), - license: await this.fetchLicense(), - enableTypeDef: await this.fetchTypeDef(), - enableGithubActions: await this.fetchGithubActions(), - } - } - - return cmdOptions - } - - private async fetchName(defaultName: string): Promise { - return ( - this.$$name ?? - input({ - message: 'Package name (the name field in your package.json file)', - default: defaultName, - }) - ) - } - - private async fetchLicense(): Promise { - return input({ - message: 'License for open-sourced project', - default: this.license, - }) - } - - private async fetchNapiVersion(): Promise { - return select({ - message: 'Minimum node-api version (with node version requirement)', - loop: false, - pageSize: 10, - choices: Array.from({ length: 8 }, (_, i) => ({ - name: `napi${i + 1} (${napiEngineRequirement(i + 1)})`, - value: i + 1, - })), - // choice index - default: this.minNodeApiVersion - 1, - }) - } - - private async fetchTargets(): Promise { - if (this.enableAllTargets) { - return AVAILABLE_TARGETS.concat() - } - - const targets = await checkbox({ - loop: false, - message: 'Choose target(s) your crate will be compiled to', - choices: AVAILABLE_TARGETS.map((target) => ({ - name: target, - value: target, - // @ts-expect-error - checked: DEFAULT_TARGETS.includes(target), - })), - }) - - return targets - } - - private async fetchTypeDef(): Promise { - const enableTypeDef = await confirm({ - message: 'Enable type definition auto-generation', - default: this.enableTypeDef, - }) - - return enableTypeDef - } - - private async fetchGithubActions(): Promise { - const enableGithubActions = await confirm({ - message: 'Enable Github Actions CI', - default: this.enableGithubActions, - }) - - return enableGithubActions - } -} - -async function inquirerProjectPath(): Promise { - return input({ - message: 'Target path to create the project, relative to cwd.', - }).then((path) => { - if (!path) { - return inquirerProjectPath() - } - return path - }) -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/pre-publish.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/pre-publish.ts deleted file mode 100644 index c860aa7..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/pre-publish.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { prePublish } from '../api/pre-publish.js' -import { BasePrePublishCommand } from '../def/pre-publish.js' - -export class PrePublishCommand extends BasePrePublishCommand { - async execute() { - // @ts-expect-error const 'npm' | 'lerna' to string - await prePublish(this.getOptions()) - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/rename.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/rename.ts deleted file mode 100644 index fee1120..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/rename.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { input } from '@inquirer/prompts' - -import { renameProject } from '../api/rename.js' -import { BaseRenameCommand } from '../def/rename.js' - -export class RenameCommand extends BaseRenameCommand { - async execute() { - const options = this.getOptions() - if (!options.name) { - const name = await input({ - message: `Enter the new package name in the package.json`, - required: true, - }) - options.name = name - } - if (!options.binaryName) { - const binaryName = await input({ - message: `Enter the new binary name`, - required: true, - }) - options.binaryName = binaryName - } - await renameProject(options) - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/universalize.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/universalize.ts deleted file mode 100644 index 3a6d13c..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/universalize.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { universalizeBinaries } from '../api/universalize.js' -import { BaseUniversalizeCommand } from '../def/universalize.js' - -export class UniversalizeCommand extends BaseUniversalizeCommand { - async execute() { - await universalizeBinaries(this.getOptions()) - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/version.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/version.ts deleted file mode 100644 index e90899b..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/commands/version.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { version } from '../api/version.js' -import { BaseVersionCommand } from '../def/version.js' - -export class VersionCommand extends BaseVersionCommand { - async execute() { - await version(this.getOptions()) - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/artifacts.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/def/artifacts.ts deleted file mode 100644 index 80d0daa..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/artifacts.ts +++ /dev/null @@ -1,98 +0,0 @@ -// This file is generated by codegen/index.ts -// Do not edit this file manually -import { Command, Option } from 'clipanion' - -export abstract class BaseArtifactsCommand extends Command { - static paths = [['artifacts']] - - static usage = Command.Usage({ - description: - 'Copy artifacts from Github Actions into npm packages and ready to publish', - }) - - cwd = Option.String('--cwd', process.cwd(), { - description: - 'The working directory of where napi command will be executed in, all other paths options are relative to this path', - }) - - configPath?: string = Option.String('--config-path,-c', { - description: 'Path to `napi` config json file', - }) - - packageJsonPath = Option.String('--package-json-path', 'package.json', { - description: 'Path to `package.json`', - }) - - outputDir = Option.String('--output-dir,-o,-d', './artifacts', { - description: - 'Path to the folder where all built `.node` files put, same as `--output-dir` of build command', - }) - - npmDir = Option.String('--npm-dir', 'npm', { - description: 'Path to the folder where the npm packages put', - }) - - buildOutputDir?: string = Option.String('--build-output-dir', { - description: - 'Path to the build output dir, only needed when targets contains `wasm32-wasi-*`', - }) - - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - outputDir: this.outputDir, - npmDir: this.npmDir, - buildOutputDir: this.buildOutputDir, - } - } -} - -/** - * Copy artifacts from Github Actions into npm packages and ready to publish - */ -export interface ArtifactsOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string - /** - * Path to `napi` config json file - */ - configPath?: string - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string - /** - * Path to the folder where all built `.node` files put, same as `--output-dir` of build command - * - * @default './artifacts' - */ - outputDir?: string - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string - /** - * Path to the build output dir, only needed when targets contains `wasm32-wasi-*` - */ - buildOutputDir?: string -} - -export function applyDefaultArtifactsOptions(options: ArtifactsOptions) { - return { - cwd: process.cwd(), - packageJsonPath: 'package.json', - outputDir: './artifacts', - npmDir: 'npm', - ...options, - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/build.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/def/build.ts deleted file mode 100644 index 8adac37..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/build.ts +++ /dev/null @@ -1,317 +0,0 @@ -// This file is generated by codegen/index.ts -// Do not edit this file manually -import { Command, Option } from 'clipanion' - -export abstract class BaseBuildCommand extends Command { - static paths = [['build']] - - static usage = Command.Usage({ - description: 'Build the NAPI-RS project', - }) - - target?: string = Option.String('--target,-t', { - description: - 'Build for the target triple, bypassed to `cargo build --target`', - }) - - cwd?: string = Option.String('--cwd', { - description: - 'The working directory of where napi command will be executed in, all other paths options are relative to this path', - }) - - manifestPath?: string = Option.String('--manifest-path', { - description: 'Path to `Cargo.toml`', - }) - - configPath?: string = Option.String('--config-path,-c', { - description: 'Path to `napi` config json file', - }) - - packageJsonPath?: string = Option.String('--package-json-path', { - description: 'Path to `package.json`', - }) - - targetDir?: string = Option.String('--target-dir', { - description: - 'Directory for all crate generated artifacts, see `cargo build --target-dir`', - }) - - outputDir?: string = Option.String('--output-dir,-o', { - description: - 'Path to where all the built files would be put. Default to the crate folder', - }) - - platform?: boolean = Option.Boolean('--platform', { - description: - 'Add platform triple to the generated nodejs binding file, eg: `[name].linux-x64-gnu.node`', - }) - - jsPackageName?: string = Option.String('--js-package-name', { - description: - 'Package name in generated js binding file. Only works with `--platform` flag', - }) - - constEnum?: boolean = Option.Boolean('--const-enum', { - description: 'Whether generate const enum for typescript bindings', - }) - - jsBinding?: string = Option.String('--js', { - description: - 'Path and filename of generated JS binding file. Only works with `--platform` flag. Relative to `--output-dir`.', - }) - - noJsBinding?: boolean = Option.Boolean('--no-js', { - description: - 'Whether to disable the generation JS binding file. Only works with `--platform` flag.', - }) - - dts?: string = Option.String('--dts', { - description: - 'Path and filename of generated type def file. Relative to `--output-dir`', - }) - - dtsHeader?: string = Option.String('--dts-header', { - description: - 'Custom file header for generated type def file. Only works when `typedef` feature enabled.', - }) - - noDtsHeader?: boolean = Option.Boolean('--no-dts-header', { - description: - 'Whether to disable the default file header for generated type def file. Only works when `typedef` feature enabled.', - }) - - dtsCache = Option.Boolean('--dts-cache', true, { - description: 'Whether to enable the dts cache, default to true', - }) - - esm?: boolean = Option.Boolean('--esm', { - description: - 'Whether to emit an ESM JS binding file instead of CJS format. Only works with `--platform` flag.', - }) - - strip?: boolean = Option.Boolean('--strip,-s', { - description: 'Whether strip the library to achieve the minimum file size', - }) - - release?: boolean = Option.Boolean('--release,-r', { - description: 'Build in release mode', - }) - - verbose?: boolean = Option.Boolean('--verbose,-v', { - description: 'Verbosely log build command trace', - }) - - bin?: string = Option.String('--bin', { - description: 'Build only the specified binary', - }) - - package?: string = Option.String('--package,-p', { - description: 'Build the specified library or the one at cwd', - }) - - profile?: string = Option.String('--profile', { - description: 'Build artifacts with the specified profile', - }) - - crossCompile?: boolean = Option.Boolean('--cross-compile,-x', { - description: - '[experimental] cross-compile for the specified target with `cargo-xwin` on windows and `cargo-zigbuild` on other platform', - }) - - useCross?: boolean = Option.Boolean('--use-cross', { - description: - '[experimental] use [cross](https://github.com/cross-rs/cross) instead of `cargo`', - }) - - useNapiCross?: boolean = Option.Boolean('--use-napi-cross', { - description: - '[experimental] use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets.', - }) - - watch?: boolean = Option.Boolean('--watch,-w', { - description: - 'watch the crate changes and build continuously with `cargo-watch` crates', - }) - - features?: string[] = Option.Array('--features,-F', { - description: 'Space-separated list of features to activate', - }) - - allFeatures?: boolean = Option.Boolean('--all-features', { - description: 'Activate all available features', - }) - - noDefaultFeatures?: boolean = Option.Boolean('--no-default-features', { - description: 'Do not activate the `default` feature', - }) - - getOptions() { - return { - target: this.target, - cwd: this.cwd, - manifestPath: this.manifestPath, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - targetDir: this.targetDir, - outputDir: this.outputDir, - platform: this.platform, - jsPackageName: this.jsPackageName, - constEnum: this.constEnum, - jsBinding: this.jsBinding, - noJsBinding: this.noJsBinding, - dts: this.dts, - dtsHeader: this.dtsHeader, - noDtsHeader: this.noDtsHeader, - dtsCache: this.dtsCache, - esm: this.esm, - strip: this.strip, - release: this.release, - verbose: this.verbose, - bin: this.bin, - package: this.package, - profile: this.profile, - crossCompile: this.crossCompile, - useCross: this.useCross, - useNapiCross: this.useNapiCross, - watch: this.watch, - features: this.features, - allFeatures: this.allFeatures, - noDefaultFeatures: this.noDefaultFeatures, - } - } -} - -/** - * Build the NAPI-RS project - */ -export interface BuildOptions { - /** - * Build for the target triple, bypassed to `cargo build --target` - */ - target?: string - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - */ - cwd?: string - /** - * Path to `Cargo.toml` - */ - manifestPath?: string - /** - * Path to `napi` config json file - */ - configPath?: string - /** - * Path to `package.json` - */ - packageJsonPath?: string - /** - * Directory for all crate generated artifacts, see `cargo build --target-dir` - */ - targetDir?: string - /** - * Path to where all the built files would be put. Default to the crate folder - */ - outputDir?: string - /** - * Add platform triple to the generated nodejs binding file, eg: `[name].linux-x64-gnu.node` - */ - platform?: boolean - /** - * Package name in generated js binding file. Only works with `--platform` flag - */ - jsPackageName?: string - /** - * Whether generate const enum for typescript bindings - */ - constEnum?: boolean - /** - * Path and filename of generated JS binding file. Only works with `--platform` flag. Relative to `--output-dir`. - */ - jsBinding?: string - /** - * Whether to disable the generation JS binding file. Only works with `--platform` flag. - */ - noJsBinding?: boolean - /** - * Path and filename of generated type def file. Relative to `--output-dir` - */ - dts?: string - /** - * Custom file header for generated type def file. Only works when `typedef` feature enabled. - */ - dtsHeader?: string - /** - * Whether to disable the default file header for generated type def file. Only works when `typedef` feature enabled. - */ - noDtsHeader?: boolean - /** - * Whether to enable the dts cache, default to true - * - * @default true - */ - dtsCache?: boolean - /** - * Whether to emit an ESM JS binding file instead of CJS format. Only works with `--platform` flag. - */ - esm?: boolean - /** - * Whether strip the library to achieve the minimum file size - */ - strip?: boolean - /** - * Build in release mode - */ - release?: boolean - /** - * Verbosely log build command trace - */ - verbose?: boolean - /** - * Build only the specified binary - */ - bin?: string - /** - * Build the specified library or the one at cwd - */ - package?: string - /** - * Build artifacts with the specified profile - */ - profile?: string - /** - * [experimental] cross-compile for the specified target with `cargo-xwin` on windows and `cargo-zigbuild` on other platform - */ - crossCompile?: boolean - /** - * [experimental] use [cross](https://github.com/cross-rs/cross) instead of `cargo` - */ - useCross?: boolean - /** - * [experimental] use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets. - */ - useNapiCross?: boolean - /** - * watch the crate changes and build continuously with `cargo-watch` crates - */ - watch?: boolean - /** - * Space-separated list of features to activate - */ - features?: string[] - /** - * Activate all available features - */ - allFeatures?: boolean - /** - * Do not activate the `default` feature - */ - noDefaultFeatures?: boolean -} - -export function applyDefaultBuildOptions(options: BuildOptions) { - return { - dtsCache: true, - ...options, - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/create-npm-dirs.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/def/create-npm-dirs.ts deleted file mode 100644 index 5921be9..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/create-npm-dirs.ts +++ /dev/null @@ -1,88 +0,0 @@ -// This file is generated by codegen/index.ts -// Do not edit this file manually -import { Command, Option } from 'clipanion' - -export abstract class BaseCreateNpmDirsCommand extends Command { - static paths = [['create-npm-dirs']] - - static usage = Command.Usage({ - description: 'Create npm package dirs for different platforms', - }) - - cwd = Option.String('--cwd', process.cwd(), { - description: - 'The working directory of where napi command will be executed in, all other paths options are relative to this path', - }) - - configPath?: string = Option.String('--config-path,-c', { - description: 'Path to `napi` config json file', - }) - - packageJsonPath = Option.String('--package-json-path', 'package.json', { - description: 'Path to `package.json`', - }) - - npmDir = Option.String('--npm-dir', 'npm', { - description: 'Path to the folder where the npm packages put', - }) - - dryRun = Option.Boolean('--dry-run', false, { - description: 'Dry run without touching file system', - }) - - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir, - dryRun: this.dryRun, - } - } -} - -/** - * Create npm package dirs for different platforms - */ -export interface CreateNpmDirsOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string - /** - * Path to `napi` config json file - */ - configPath?: string - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string - /** - * Dry run without touching file system - * - * @default false - */ - dryRun?: boolean -} - -export function applyDefaultCreateNpmDirsOptions( - options: CreateNpmDirsOptions, -) { - return { - cwd: process.cwd(), - packageJsonPath: 'package.json', - npmDir: 'npm', - dryRun: false, - ...options, - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/new.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/def/new.ts deleted file mode 100644 index 5c21eca..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/new.ts +++ /dev/null @@ -1,169 +0,0 @@ -// This file is generated by codegen/index.ts -// Do not edit this file manually -import { Command, Option } from 'clipanion' -import * as typanion from 'typanion' - -export abstract class BaseNewCommand extends Command { - static paths = [['new']] - - static usage = Command.Usage({ - description: 'Create a new project with pre-configured boilerplate', - }) - - $$path = Option.String({ required: false }) - - $$name?: string = Option.String('--name,-n', { - description: - 'The name of the project, default to the name of the directory if not provided', - }) - - minNodeApiVersion = Option.String('--min-node-api,-v', '4', { - validator: typanion.isNumber(), - description: 'The minimum Node-API version to support', - }) - - packageManager = Option.String('--package-manager', 'yarn', { - description: 'The package manager to use. Only support yarn 4.x for now.', - }) - - license = Option.String('--license,-l', 'MIT', { - description: 'License for open-sourced project', - }) - - targets = Option.Array('--targets,-t', [], { - description: 'All targets the crate will be compiled for.', - }) - - enableDefaultTargets = Option.Boolean('--enable-default-targets', true, { - description: 'Whether enable default targets', - }) - - enableAllTargets = Option.Boolean('--enable-all-targets', false, { - description: 'Whether enable all targets', - }) - - enableTypeDef = Option.Boolean('--enable-type-def', true, { - description: - 'Whether enable the `type-def` feature for typescript definitions auto-generation', - }) - - enableGithubActions = Option.Boolean('--enable-github-actions', true, { - description: 'Whether generate preconfigured GitHub Actions workflow', - }) - - testFramework = Option.String('--test-framework', 'ava', { - description: - 'The JavaScript test framework to use, only support `ava` for now', - }) - - dryRun = Option.Boolean('--dry-run', false, { - description: 'Whether to run the command in dry-run mode', - }) - - getOptions() { - return { - path: this.$$path, - name: this.$$name, - minNodeApiVersion: this.minNodeApiVersion, - packageManager: this.packageManager, - license: this.license, - targets: this.targets, - enableDefaultTargets: this.enableDefaultTargets, - enableAllTargets: this.enableAllTargets, - enableTypeDef: this.enableTypeDef, - enableGithubActions: this.enableGithubActions, - testFramework: this.testFramework, - dryRun: this.dryRun, - } - } -} - -/** - * Create a new project with pre-configured boilerplate - */ -export interface NewOptions { - /** - * The path where the NAPI-RS project will be created. - */ - path?: string - /** - * The name of the project, default to the name of the directory if not provided - */ - name?: string - /** - * The minimum Node-API version to support - * - * @default 4 - */ - minNodeApiVersion?: number - /** - * The package manager to use. Only support yarn 4.x for now. - * - * @default 'yarn' - */ - packageManager?: string - /** - * License for open-sourced project - * - * @default 'MIT' - */ - license?: string - /** - * All targets the crate will be compiled for. - * - * @default [] - */ - targets?: string[] - /** - * Whether enable default targets - * - * @default true - */ - enableDefaultTargets?: boolean - /** - * Whether enable all targets - * - * @default false - */ - enableAllTargets?: boolean - /** - * Whether enable the `type-def` feature for typescript definitions auto-generation - * - * @default true - */ - enableTypeDef?: boolean - /** - * Whether generate preconfigured GitHub Actions workflow - * - * @default true - */ - enableGithubActions?: boolean - /** - * The JavaScript test framework to use, only support `ava` for now - * - * @default 'ava' - */ - testFramework?: string - /** - * Whether to run the command in dry-run mode - * - * @default false - */ - dryRun?: boolean -} - -export function applyDefaultNewOptions(options: NewOptions) { - return { - minNodeApiVersion: 4, - packageManager: 'yarn', - license: 'MIT', - targets: [], - enableDefaultTargets: true, - enableAllTargets: false, - enableTypeDef: true, - enableGithubActions: true, - testFramework: 'ava', - dryRun: false, - ...options, - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/pre-publish.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/def/pre-publish.ts deleted file mode 100644 index bd8076c..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/pre-publish.ts +++ /dev/null @@ -1,141 +0,0 @@ -// This file is generated by codegen/index.ts -// Do not edit this file manually -import { Command, Option } from 'clipanion' - -export abstract class BasePrePublishCommand extends Command { - static paths = [['pre-publish'], ['prepublish']] - - static usage = Command.Usage({ - description: - 'Update package.json and copy addons into per platform packages', - }) - - cwd = Option.String('--cwd', process.cwd(), { - description: - 'The working directory of where napi command will be executed in, all other paths options are relative to this path', - }) - - configPath?: string = Option.String('--config-path,-c', { - description: 'Path to `napi` config json file', - }) - - packageJsonPath = Option.String('--package-json-path', 'package.json', { - description: 'Path to `package.json`', - }) - - npmDir = Option.String('--npm-dir,-p', 'npm', { - description: 'Path to the folder where the npm packages put', - }) - - tagStyle = Option.String('--tag-style,--tagstyle,-t', 'lerna', { - description: 'git tag style, `npm` or `lerna`', - }) - - ghRelease = Option.Boolean('--gh-release', true, { - description: 'Whether create GitHub release', - }) - - ghReleaseName?: string = Option.String('--gh-release-name', { - description: 'GitHub release name', - }) - - ghReleaseId?: string = Option.String('--gh-release-id', { - description: 'Existing GitHub release id', - }) - - skipOptionalPublish = Option.Boolean('--skip-optional-publish', false, { - description: 'Whether skip optionalDependencies packages publish', - }) - - dryRun = Option.Boolean('--dry-run', false, { - description: 'Dry run without touching file system', - }) - - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir, - tagStyle: this.tagStyle, - ghRelease: this.ghRelease, - ghReleaseName: this.ghReleaseName, - ghReleaseId: this.ghReleaseId, - skipOptionalPublish: this.skipOptionalPublish, - dryRun: this.dryRun, - } - } -} - -/** - * Update package.json and copy addons into per platform packages - */ -export interface PrePublishOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string - /** - * Path to `napi` config json file - */ - configPath?: string - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string - /** - * git tag style, `npm` or `lerna` - * - * @default 'lerna' - */ - tagStyle?: 'npm' | 'lerna' - /** - * Whether create GitHub release - * - * @default true - */ - ghRelease?: boolean - /** - * GitHub release name - */ - ghReleaseName?: string - /** - * Existing GitHub release id - */ - ghReleaseId?: string - /** - * Whether skip optionalDependencies packages publish - * - * @default false - */ - skipOptionalPublish?: boolean - /** - * Dry run without touching file system - * - * @default false - */ - dryRun?: boolean -} - -export function applyDefaultPrePublishOptions(options: PrePublishOptions) { - return { - cwd: process.cwd(), - packageJsonPath: 'package.json', - npmDir: 'npm', - tagStyle: 'lerna', - ghRelease: true, - skipOptionalPublish: false, - dryRun: false, - ...options, - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/rename.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/def/rename.ts deleted file mode 100644 index 3431039..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/rename.ts +++ /dev/null @@ -1,131 +0,0 @@ -// This file is generated by codegen/index.ts -// Do not edit this file manually -import { Command, Option } from 'clipanion' - -export abstract class BaseRenameCommand extends Command { - static paths = [['rename']] - - static usage = Command.Usage({ - description: 'Rename the NAPI-RS project', - }) - - cwd = Option.String('--cwd', process.cwd(), { - description: - 'The working directory of where napi command will be executed in, all other paths options are relative to this path', - }) - - configPath?: string = Option.String('--config-path,-c', { - description: 'Path to `napi` config json file', - }) - - packageJsonPath = Option.String('--package-json-path', 'package.json', { - description: 'Path to `package.json`', - }) - - npmDir = Option.String('--npm-dir', 'npm', { - description: 'Path to the folder where the npm packages put', - }) - - $$name?: string = Option.String('--name,-n', { - description: 'The new name of the project', - }) - - binaryName?: string = Option.String('--binary-name,-b', { - description: 'The new binary name *.node files', - }) - - packageName?: string = Option.String('--package-name', { - description: 'The new package name of the project', - }) - - manifestPath = Option.String('--manifest-path', 'Cargo.toml', { - description: 'Path to `Cargo.toml`', - }) - - repository?: string = Option.String('--repository', { - description: 'The new repository of the project', - }) - - description?: string = Option.String('--description', { - description: 'The new description of the project', - }) - - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir, - name: this.$$name, - binaryName: this.binaryName, - packageName: this.packageName, - manifestPath: this.manifestPath, - repository: this.repository, - description: this.description, - } - } -} - -/** - * Rename the NAPI-RS project - */ -export interface RenameOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string - /** - * Path to `napi` config json file - */ - configPath?: string - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string - /** - * The new name of the project - */ - name?: string - /** - * The new binary name *.node files - */ - binaryName?: string - /** - * The new package name of the project - */ - packageName?: string - /** - * Path to `Cargo.toml` - * - * @default 'Cargo.toml' - */ - manifestPath?: string - /** - * The new repository of the project - */ - repository?: string - /** - * The new description of the project - */ - description?: string -} - -export function applyDefaultRenameOptions(options: RenameOptions) { - return { - cwd: process.cwd(), - packageJsonPath: 'package.json', - npmDir: 'npm', - manifestPath: 'Cargo.toml', - ...options, - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/universalize.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/def/universalize.ts deleted file mode 100644 index 624cbf8..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/universalize.ts +++ /dev/null @@ -1,75 +0,0 @@ -// This file is generated by codegen/index.ts -// Do not edit this file manually -import { Command, Option } from 'clipanion' - -export abstract class BaseUniversalizeCommand extends Command { - static paths = [['universalize']] - - static usage = Command.Usage({ - description: 'Combile built binaries into one universal binary', - }) - - cwd = Option.String('--cwd', process.cwd(), { - description: - 'The working directory of where napi command will be executed in, all other paths options are relative to this path', - }) - - configPath?: string = Option.String('--config-path,-c', { - description: 'Path to `napi` config json file', - }) - - packageJsonPath = Option.String('--package-json-path', 'package.json', { - description: 'Path to `package.json`', - }) - - outputDir = Option.String('--output-dir,-o', './', { - description: - 'Path to the folder where all built `.node` files put, same as `--output-dir` of build command', - }) - - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - outputDir: this.outputDir, - } - } -} - -/** - * Combile built binaries into one universal binary - */ -export interface UniversalizeOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string - /** - * Path to `napi` config json file - */ - configPath?: string - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string - /** - * Path to the folder where all built `.node` files put, same as `--output-dir` of build command - * - * @default './' - */ - outputDir?: string -} - -export function applyDefaultUniversalizeOptions(options: UniversalizeOptions) { - return { - cwd: process.cwd(), - packageJsonPath: 'package.json', - outputDir: './', - ...options, - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/version.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/def/version.ts deleted file mode 100644 index b6e8d1b..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/def/version.ts +++ /dev/null @@ -1,74 +0,0 @@ -// This file is generated by codegen/index.ts -// Do not edit this file manually -import { Command, Option } from 'clipanion' - -export abstract class BaseVersionCommand extends Command { - static paths = [['version']] - - static usage = Command.Usage({ - description: 'Update version in created npm packages', - }) - - cwd = Option.String('--cwd', process.cwd(), { - description: - 'The working directory of where napi command will be executed in, all other paths options are relative to this path', - }) - - configPath?: string = Option.String('--config-path,-c', { - description: 'Path to `napi` config json file', - }) - - packageJsonPath = Option.String('--package-json-path', 'package.json', { - description: 'Path to `package.json`', - }) - - npmDir = Option.String('--npm-dir', 'npm', { - description: 'Path to the folder where the npm packages put', - }) - - getOptions() { - return { - cwd: this.cwd, - configPath: this.configPath, - packageJsonPath: this.packageJsonPath, - npmDir: this.npmDir, - } - } -} - -/** - * Update version in created npm packages - */ -export interface VersionOptions { - /** - * The working directory of where napi command will be executed in, all other paths options are relative to this path - * - * @default process.cwd() - */ - cwd?: string - /** - * Path to `napi` config json file - */ - configPath?: string - /** - * Path to `package.json` - * - * @default 'package.json' - */ - packageJsonPath?: string - /** - * Path to the folder where the npm packages put - * - * @default 'npm' - */ - npmDir?: string -} - -export function applyDefaultVersionOptions(options: VersionOptions) { - return { - cwd: process.cwd(), - packageJsonPath: 'package.json', - npmDir: 'npm', - ...options, - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/index.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/index.ts deleted file mode 100644 index a9579b3..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { Cli } from 'clipanion' - -import { collectArtifacts } from './api/artifacts.js' -import { buildProject } from './api/build.js' -import { createNpmDirs } from './api/create-npm-dirs.js' -import { newProject } from './api/new.js' -import { prePublish } from './api/pre-publish.js' -import { renameProject } from './api/rename.js' -import { universalizeBinaries } from './api/universalize.js' -import { version } from './api/version.js' -import { ArtifactsCommand } from './commands/artifacts.js' -import { BuildCommand } from './commands/build.js' -import { CreateNpmDirsCommand } from './commands/create-npm-dirs.js' -import { HelpCommand } from './commands/help.js' -import { NewCommand } from './commands/new.js' -import { PrePublishCommand } from './commands/pre-publish.js' -import { RenameCommand } from './commands/rename.js' -import { UniversalizeCommand } from './commands/universalize.js' -import { VersionCommand } from './commands/version.js' -import { CLI_VERSION } from './utils/misc.js' - -export const cli = new Cli({ - binaryName: 'napi', - binaryVersion: CLI_VERSION, -}) - -cli.register(NewCommand) -cli.register(BuildCommand) -cli.register(CreateNpmDirsCommand) -cli.register(ArtifactsCommand) -cli.register(UniversalizeCommand) -cli.register(RenameCommand) -cli.register(PrePublishCommand) -cli.register(VersionCommand) -cli.register(HelpCommand) - -/** - * - * @usage - * - * ```ts - * const cli = new NapiCli() - * - * cli.build({ - * cwd: '/path/to/your/project', - * }) - * ``` - */ -export class NapiCli { - artifacts = collectArtifacts - new = newProject - build = buildProject - createNpmDirs = createNpmDirs - prePublish = prePublish - rename = renameProject - universalize = universalizeBinaries - version = version -} - -export function createBuildCommand(args: string[]): BuildCommand { - return cli.process(['build', ...args]) as BuildCommand -} - -export function createArtifactsCommand(args: string[]): ArtifactsCommand { - return cli.process(['artifacts', ...args]) as ArtifactsCommand -} - -export function createCreateNpmDirsCommand( - args: string[], -): CreateNpmDirsCommand { - return cli.process(['create-npm-dirs', ...args]) as CreateNpmDirsCommand -} - -export function createPrePublishCommand(args: string[]): PrePublishCommand { - return cli.process(['pre-publish', ...args]) as PrePublishCommand -} - -export function createRenameCommand(args: string[]): RenameCommand { - return cli.process(['rename', ...args]) as RenameCommand -} - -export function createUniversalizeCommand(args: string[]): UniversalizeCommand { - return cli.process(['universalize', ...args]) as UniversalizeCommand -} - -export function createVersionCommand(args: string[]): VersionCommand { - return cli.process(['version', ...args]) as VersionCommand -} - -export function createNewCommand(args: string[]): NewCommand { - return cli.process(['new', ...args]) as NewCommand -} - -export { parseTriple } from './utils/target.js' -export { - type GenerateTypeDefOptions, - type WriteJsBindingOptions, - writeJsBinding, - generateTypeDef, -} from './api/build.js' -export { readNapiConfig } from './utils/config.js' diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/cargo.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/cargo.ts deleted file mode 100644 index edb48f9..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/cargo.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { execSync } from 'node:child_process' - -import { debug } from './log.js' - -export function tryInstallCargoBinary(name: string, bin: string) { - if (detectCargoBinary(bin)) { - debug('Cargo binary already installed: %s', name) - return - } - - try { - debug('Installing cargo binary: %s', name) - execSync(`cargo install ${name}`, { - stdio: 'inherit', - }) - } catch (e) { - throw new Error(`Failed to install cargo binary: ${name}`, { - cause: e, - }) - } -} - -function detectCargoBinary(bin: string) { - debug('Detecting cargo binary: %s', bin) - try { - execSync(`cargo help ${bin}`, { - stdio: 'ignore', - }) - debug('Cargo binary detected: %s', bin) - return true - } catch { - debug('Cargo binary not detected: %s', bin) - return false - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/config.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/config.ts deleted file mode 100644 index ae3d814..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/config.ts +++ /dev/null @@ -1,259 +0,0 @@ -import { underline, yellow } from 'colorette' -import { merge, omit } from 'es-toolkit' - -import { fileExists, readFileAsync } from './misc.js' -import { DEFAULT_TARGETS, parseTriple, type Target } from './target.js' - -export type ValueOfConstArray = T[Exclude>] - -export const SupportedPackageManagers = ['yarn', 'pnpm'] as const -export const SupportedTestFrameworks = ['ava'] as const - -export type SupportedPackageManager = ValueOfConstArray< - typeof SupportedPackageManagers -> -export type SupportedTestFramework = ValueOfConstArray< - typeof SupportedTestFrameworks -> - -export interface UserNapiConfig { - /** - * Name of the binary to be generated, default to `index` - */ - binaryName?: string - /** - * Name of the npm package, default to the name of root package.json name - * - * Always given `@scope/pkg` and arch suffix will be appended like `@scope/pkg-linux-gnu-x64` - */ - packageName?: string - /** - * All targets the crate will be compiled for - */ - targets?: string[] - - /** - * The npm client project uses. - */ - npmClient?: string - - /** - * Whether generate const enum for typescript bindings - */ - constEnum?: boolean - - /** - * dts header prepend to the generated dts file - */ - dtsHeader?: string - - /** - * dts header file path to be prepended to the generated dts file - * if both dtsHeader and dtsHeaderFile are provided, dtsHeaderFile will be used - */ - dtsHeaderFile?: string - - /** - * wasm compilation options - */ - wasm?: { - /** - * https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Memory - * @default 4000 pages (256MiB) - */ - initialMemory?: number - /** - * @default 65536 pages (4GiB) - */ - maximumMemory?: number - - /** - * Browser wasm binding configuration - */ - browser: { - /** - * Whether to use fs module in browser - */ - fs?: boolean - /** - * Whether to initialize wasm asynchronously - */ - asyncInit?: boolean - /** - * Whether to inject `buffer` to emnapi context - */ - buffer?: boolean - } - } - - /** - * @deprecated binaryName instead - */ - name?: string - /** - * @deprecated use packageName instead - */ - package?: { - name?: string - } - /** - * @deprecated use targets instead - */ - triples?: { - /** - * Whether enable default targets - */ - defaults: boolean - /** - * Additional targets to be compiled for - */ - additional?: string[] - } -} - -export interface CommonPackageJsonFields { - name: string - version: string - description?: string - keywords?: string[] - author?: string - authors?: string[] - license?: string - cpu?: string[] - os?: string[] - libc?: string[] - files?: string[] - repository?: any - homepage?: any - engines?: Record - publishConfig?: any - bugs?: any - // eslint-disable-next-line no-use-before-define - napi?: UserNapiConfig - type?: 'module' | 'commonjs' - scripts?: Record - - // modules - main?: string - module?: string - types?: string - browser?: string - exports?: any - - dependencies?: Record - devDependencies?: Record - - ava?: { - timeout?: string - } -} - -export type NapiConfig = Required< - Pick -> & - Pick & { - targets: Target[] - packageJson: CommonPackageJsonFields - } - -export async function readNapiConfig( - path: string, - configPath?: string, -): Promise { - if (configPath && !(await fileExists(configPath))) { - throw new Error(`NAPI-RS config not found at ${configPath}`) - } - if (!(await fileExists(path))) { - throw new Error(`package.json not found at ${path}`) - } - // May support multiple config sources later on. - const content = await readFileAsync(path, 'utf8') - let pkgJson - try { - pkgJson = JSON.parse(content) as CommonPackageJsonFields - } catch (e) { - throw new Error(`Failed to parse package.json at ${path}`, { - cause: e, - }) - } - - let separatedConfig: UserNapiConfig | undefined - if (configPath) { - const configContent = await readFileAsync(configPath, 'utf8') - try { - separatedConfig = JSON.parse(configContent) as UserNapiConfig - } catch (e) { - throw new Error(`Failed to parse NAPI-RS config at ${configPath}`, { - cause: e, - }) - } - } - - const userNapiConfig = pkgJson.napi ?? {} - if (pkgJson.napi && separatedConfig) { - const pkgJsonPath = underline(path) - const configPathUnderline = underline(configPath!) - console.warn( - yellow( - `Both napi field in ${pkgJsonPath} and [NAPI-RS config](${configPathUnderline}) file are found, the NAPI-RS config file will be used.`, - ), - ) - } - if (separatedConfig) { - Object.assign(userNapiConfig, separatedConfig) - } - const napiConfig: NapiConfig = merge( - { - binaryName: 'index', - packageName: pkgJson.name, - targets: [], - packageJson: pkgJson, - npmClient: 'npm', - }, - omit(userNapiConfig, ['targets']), - ) - - let targets: string[] = userNapiConfig.targets ?? [] - - // compatible with old config - if (userNapiConfig?.name) { - console.warn( - yellow( - `[DEPRECATED] napi.name is deprecated, use napi.binaryName instead.`, - ), - ) - napiConfig.binaryName = userNapiConfig.name - } - - if (!targets.length) { - let deprecatedWarned = false - const warning = yellow( - `[DEPRECATED] napi.triples is deprecated, use napi.targets instead.`, - ) - if (userNapiConfig.triples?.defaults) { - deprecatedWarned = true - console.warn(warning) - targets = targets.concat(DEFAULT_TARGETS) - } - - if (userNapiConfig.triples?.additional?.length) { - targets = targets.concat(userNapiConfig.triples.additional) - if (!deprecatedWarned) { - console.warn(warning) - } - } - } - - // find duplicate targets - const uniqueTargets = new Set(targets) - if (uniqueTargets.size !== targets.length) { - const duplicateTarget = targets.find( - (target, index) => targets.indexOf(target) !== index, - ) - throw new Error(`Duplicate targets are not allowed: ${duplicateTarget}`) - } - - napiConfig.targets = targets.map(parseTriple) - - return napiConfig -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/index.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/index.ts deleted file mode 100644 index a3a546d..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from './log.js' -export * from './misc.js' -export * from './target.js' -export * from './version.js' -export * from './metadata.js' -export * from './config.js' -export * from './cargo.js' -export * from './typegen.js' -export * from './read-config.js' diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/log.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/log.ts deleted file mode 100644 index 66b9aa9..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/log.ts +++ /dev/null @@ -1,36 +0,0 @@ -import * as colors from 'colorette' -import { createDebug } from 'obug' - -declare module 'obug' { - interface Debugger { - info: typeof console.error - warn: typeof console.error - error: typeof console.error - } -} - -export const debugFactory = (namespace: string) => { - const debug = createDebug(`napi:${namespace}`, { - formatters: { - // debug('%i', 'This is an info') - i(v) { - return colors.green(v) - }, - }, - }) - - debug.info = (...args: any[]) => - console.error(colors.black(colors.bgGreen(' INFO ')), ...args) - debug.warn = (...args: any[]) => - console.error(colors.black(colors.bgYellow(' WARNING ')), ...args) - debug.error = (...args: any[]) => - console.error( - colors.white(colors.bgRed(' ERROR ')), - ...args.map((arg) => - arg instanceof Error ? (arg.stack ?? arg.message) : arg, - ), - ) - - return debug -} -export const debug = debugFactory('utils') diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/metadata.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/metadata.ts deleted file mode 100644 index 84d8bfb..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/metadata.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { spawn } from 'node:child_process' -import fs from 'node:fs' - -export type CrateTargetKind = - | 'bin' - | 'example' - | 'test' - | 'bench' - | 'lib' - | 'rlib' - | 'cdylib' - | 'custom-build' - -export interface CrateTarget { - name: string - kind: CrateTargetKind[] - crate_types: CrateTargetKind[] -} - -export interface Crate { - id: string - name: string - src_path: string - version: string - edition: string - targets: CrateTarget[] - features: Record - manifest_path: string - dependencies: Array<{ - name: string - source: string - req: string - kind: string | null - rename: string | null - optional: boolean - uses_default_features: boolean - features: string[] - target: string | null - registry: string | null - }> -} - -export interface CargoWorkspaceMetadata { - version: number - packages: Crate[] - workspace_members: string[] - target_directory: string - workspace_root: string -} - -export async function parseMetadata(manifestPath: string) { - if (!fs.existsSync(manifestPath)) { - throw new Error(`No crate found in manifest: ${manifestPath}`) - } - - const childProcess = spawn( - 'cargo', - ['metadata', '--manifest-path', manifestPath, '--format-version', '1'], - { stdio: 'pipe' }, - ) - - let stdout = '' - let stderr = '' - let status = 0 - let error = null - - childProcess.stdout.on('data', (data) => { - stdout += data - }) - - childProcess.stderr.on('data', (data) => { - stderr += data - }) - - await new Promise((resolve) => { - childProcess.on('close', (code) => { - status = code ?? 0 - resolve() - }) - }) - - if (error) { - throw new Error('cargo metadata failed to run', { cause: error }) - } - if (status !== 0) { - const simpleMessage = `cargo metadata exited with code ${status}` - throw new Error(`${simpleMessage} and error message:\n\n${stderr}`, { - cause: new Error(simpleMessage), - }) - } - - try { - return JSON.parse(stdout) as CargoWorkspaceMetadata - } catch (e) { - throw new Error('Failed to parse cargo metadata JSON', { cause: e }) - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/misc.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/misc.ts deleted file mode 100644 index 1d846e5..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/misc.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { - readFile, - writeFile, - unlink, - copyFile, - mkdir, - stat, - readdir, - access, -} from 'node:fs/promises' - -import pkgJson from '../../package.json' with { type: 'json' } -import { debug } from './log.js' - -export const readFileAsync = readFile -export const writeFileAsync = writeFile -export const unlinkAsync = unlink -export const copyFileAsync = copyFile -export const mkdirAsync = mkdir -export const statAsync = stat -export const readdirAsync = readdir - -export function fileExists(path: string): Promise { - return access(path).then( - () => true, - () => false, - ) -} - -export async function dirExistsAsync(path: string) { - try { - const stats = await statAsync(path) - return stats.isDirectory() - } catch { - return false - } -} - -export function pick(o: O, ...keys: K[]): Pick { - return keys.reduce((acc, key) => { - acc[key] = o[key] - return acc - }, {} as O) -} - -export async function updatePackageJson( - path: string, - partial: Record, -) { - const exists = await fileExists(path) - if (!exists) { - debug(`File not exists ${path}`) - return - } - const old = JSON.parse(await readFileAsync(path, 'utf8')) - await writeFileAsync(path, JSON.stringify({ ...old, ...partial }, null, 2)) -} - -export const CLI_VERSION = pkgJson.version diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/read-config.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/read-config.ts deleted file mode 100644 index e718350..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/read-config.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { resolve } from 'node:path' - -import { readNapiConfig } from './config.js' - -interface MinimalNapiOptions { - cwd: string - configPath?: string - packageJsonPath?: string -} - -export async function readConfig(options: MinimalNapiOptions) { - const resolvePath = (...paths: string[]) => resolve(options.cwd, ...paths) - const config = await readNapiConfig( - resolvePath(options.packageJsonPath ?? 'package.json'), - options.configPath ? resolvePath(options.configPath) : undefined, - ) - return config -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/target.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/target.ts deleted file mode 100644 index e4ad35a..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/target.ts +++ /dev/null @@ -1,193 +0,0 @@ -import { execSync } from 'node:child_process' - -export type Platform = NodeJS.Platform | 'wasm' | 'wasi' | 'openharmony' - -export const UNIVERSAL_TARGETS = { - 'universal-apple-darwin': ['aarch64-apple-darwin', 'x86_64-apple-darwin'], -} as const - -const SUB_SYSTEMS = new Set(['android', 'ohos']) - -export const AVAILABLE_TARGETS = [ - 'aarch64-apple-darwin', - 'aarch64-linux-android', - 'aarch64-unknown-linux-gnu', - 'aarch64-unknown-linux-musl', - 'aarch64-unknown-linux-ohos', - 'aarch64-pc-windows-msvc', - 'x86_64-apple-darwin', - 'x86_64-pc-windows-msvc', - 'x86_64-pc-windows-gnu', - 'x86_64-unknown-linux-gnu', - 'x86_64-unknown-linux-musl', - 'x86_64-unknown-linux-ohos', - 'x86_64-unknown-freebsd', - 'i686-pc-windows-msvc', - 'armv7-unknown-linux-gnueabihf', - 'armv7-unknown-linux-musleabihf', - 'armv7-linux-androideabi', - 'universal-apple-darwin', - 'loongarch64-unknown-linux-gnu', - 'riscv64gc-unknown-linux-gnu', - 'powerpc64le-unknown-linux-gnu', - 's390x-unknown-linux-gnu', - 'wasm32-wasi-preview1-threads', - 'wasm32-wasip1-threads', -] as const - -export type TargetTriple = (typeof AVAILABLE_TARGETS)[number] - -export const DEFAULT_TARGETS = [ - 'x86_64-apple-darwin', - 'aarch64-apple-darwin', - 'x86_64-pc-windows-msvc', - 'x86_64-unknown-linux-gnu', -] as const - -export const TARGET_LINKER: Record = { - 'aarch64-unknown-linux-musl': 'aarch64-linux-musl-gcc', - // TODO: Switch to loongarch64-linux-gnu-gcc when available - 'loongarch64-unknown-linux-gnu': 'loongarch64-linux-gnu-gcc-13', - 'riscv64gc-unknown-linux-gnu': 'riscv64-linux-gnu-gcc', - 'powerpc64le-unknown-linux-gnu': 'powerpc64le-linux-gnu-gcc', - 's390x-unknown-linux-gnu': 's390x-linux-gnu-gcc', -} - -// https://nodejs.org/api/process.html#process_process_arch -type NodeJSArch = - | 'arm' - | 'arm64' - | 'ia32' - | 'loong64' - | 'mips' - | 'mipsel' - | 'ppc' - | 'ppc64' - | 'riscv64' - | 's390' - | 's390x' - | 'x32' - | 'x64' - | 'universal' - | 'wasm32' - -const CpuToNodeArch: Record = { - x86_64: 'x64', - aarch64: 'arm64', - i686: 'ia32', - armv7: 'arm', - loongarch64: 'loong64', - riscv64gc: 'riscv64', - powerpc64le: 'ppc64', -} - -export const NodeArchToCpu: Record = { - x64: 'x86_64', - arm64: 'aarch64', - ia32: 'i686', - arm: 'armv7', - loong64: 'loongarch64', - riscv64: 'riscv64gc', - ppc64: 'powerpc64le', -} - -const SysToNodePlatform: Record = { - linux: 'linux', - freebsd: 'freebsd', - darwin: 'darwin', - windows: 'win32', - ohos: 'openharmony', -} - -export const UniArchsByPlatform: Partial> = { - darwin: ['x64', 'arm64'], -} - -export interface Target { - triple: string - platformArchABI: string - platform: Platform - arch: NodeJSArch - abi: string | null -} - -/** - * A triple is a specific format for specifying a target architecture. - * Triples may be referred to as a target triple which is the architecture for the artifact produced, and the host triple which is the architecture that the compiler is running on. - * The general format of the triple is `---` where: - * - `arch` = The base CPU architecture, for example `x86_64`, `i686`, `arm`, `thumb`, `mips`, etc. - * - `sub` = The CPU sub-architecture, for example `arm` has `v7`, `v7s`, `v5te`, etc. - * - `vendor` = The vendor, for example `unknown`, `apple`, `pc`, `nvidia`, etc. - * - `sys` = The system name, for example `linux`, `windows`, `darwin`, etc. none is typically used for bare-metal without an OS. - * - `abi` = The ABI, for example `gnu`, `android`, `eabi`, etc. - */ -export function parseTriple(rawTriple: string): Target { - if ( - rawTriple === 'wasm32-wasi' || - rawTriple === 'wasm32-wasi-preview1-threads' || - rawTriple.startsWith('wasm32-wasip') - ) { - return { - triple: rawTriple, - platformArchABI: 'wasm32-wasi', - platform: 'wasi', - arch: 'wasm32', - abi: 'wasi', - } - } - const triple = rawTriple.endsWith('eabi') - ? `${rawTriple.slice(0, -4)}-eabi` - : rawTriple - const triples = triple.split('-') - let cpu: string - let sys: string - let abi: string | null = null - if (triples.length === 2) { - // aarch64-fuchsia - // ^ cpu ^ sys - ;[cpu, sys] = triples - } else { - // aarch64-unknown-linux-musl - // ^ cpu ^vendor ^ sys ^ abi - // aarch64-apple-darwin - // ^ cpu ^ sys (abi is None) - ;[cpu, , sys, abi = null] = triples - } - - if (abi && SUB_SYSTEMS.has(abi)) { - sys = abi - abi = null - } - const platform = SysToNodePlatform[sys] ?? (sys as Platform) - const arch = CpuToNodeArch[cpu] ?? (cpu as NodeJSArch) - - return { - triple: rawTriple, - platformArchABI: abi ? `${platform}-${arch}-${abi}` : `${platform}-${arch}`, - platform, - arch, - abi, - } -} - -export function getSystemDefaultTarget(): Target { - const host = execSync(`rustc -vV`, { - env: process.env, - }) - .toString('utf8') - .split('\n') - .find((line) => line.startsWith('host: ')) - const triple = host?.slice('host: '.length) - if (!triple) { - throw new TypeError(`Can not parse target triple from host`) - } - return parseTriple(triple) -} - -export function getTargetLinker(target: string): string | undefined { - return TARGET_LINKER[target] -} - -export function targetToEnvVar(target: string): string { - return target.replace(/-/g, '_').toUpperCase() -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/typegen.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/typegen.ts deleted file mode 100644 index b9766e5..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/typegen.ts +++ /dev/null @@ -1,273 +0,0 @@ -import { sortBy } from 'es-toolkit' - -import { readFileAsync } from './misc.js' - -const TOP_LEVEL_NAMESPACE = '__TOP_LEVEL_MODULE__' -export const DEFAULT_TYPE_DEF_HEADER = `/* auto-generated by NAPI-RS */ -/* eslint-disable */ -` - -enum TypeDefKind { - Const = 'const', - Enum = 'enum', - StringEnum = 'string_enum', - Interface = 'interface', - Type = 'type', - Fn = 'fn', - Struct = 'struct', - Extends = 'extends', - Impl = 'impl', -} - -interface TypeDefLine { - kind: TypeDefKind - name: string - original_name?: string - def: string - extends?: string - js_doc?: string - js_mod?: string -} - -function prettyPrint( - line: TypeDefLine, - constEnum: boolean, - ident: number, - ambient = false, -): string { - let s = line.js_doc ?? '' - switch (line.kind) { - case TypeDefKind.Interface: - s += `export interface ${line.name} {\n${line.def}\n}` - break - - case TypeDefKind.Type: - s += `export type ${line.name} = \n${line.def}` - break - - case TypeDefKind.Enum: - const enumName = constEnum ? 'const enum' : 'enum' - s += `${exportDeclare(ambient)} ${enumName} ${line.name} {\n${line.def}\n}` - break - - case TypeDefKind.StringEnum: - if (constEnum) { - s += `${exportDeclare(ambient)} const enum ${line.name} {\n${line.def}\n}` - } else { - s += `export type ${line.name} = ${line.def.replaceAll(/.*=/g, '').replaceAll(',', '|')};` - } - break - - case TypeDefKind.Struct: - const extendsDef = line.extends ? ` extends ${line.extends}` : '' - if (line.extends) { - // Extract generic params from extends type like Iterator - const genericMatch = line.extends.match(/Iterator<(.+)>$/) - if (genericMatch) { - const [T, TResult, TNext] = genericMatch[1] - .split(',') - .map((p) => p.trim()) - line.def = - line.def + - `\nnext(value?: ${TNext}): IteratorResult<${T}, ${TResult}>` - } - } - s += `${exportDeclare(ambient)} class ${line.name}${extendsDef} {\n${line.def}\n}` - if (line.original_name && line.original_name !== line.name) { - s += `\nexport type ${line.original_name} = ${line.name}` - } - break - - case TypeDefKind.Fn: - s += `${exportDeclare(ambient)} ${line.def}` - break - - default: - s += line.def - } - - return correctStringIdent(s, ident) -} - -function exportDeclare(ambient: boolean): string { - if (ambient) { - return 'export' - } - - return 'export declare' -} - -export async function processTypeDef( - intermediateTypeFile: string, - constEnum: boolean, -) { - const exports: string[] = [] - const defs = await readIntermediateTypeFile(intermediateTypeFile) - const groupedDefs = preprocessTypeDef(defs) - - const dts = - sortBy(Array.from(groupedDefs), [([namespace]) => namespace]) - .map(([namespace, defs]) => { - if (namespace === TOP_LEVEL_NAMESPACE) { - return defs - .map((def) => { - switch (def.kind) { - case TypeDefKind.Const: - case TypeDefKind.Enum: - case TypeDefKind.StringEnum: - case TypeDefKind.Fn: - case TypeDefKind.Struct: { - exports.push(def.name) - if (def.original_name && def.original_name !== def.name) { - exports.push(def.original_name) - } - break - } - default: - break - } - return prettyPrint(def, constEnum, 0) - }) - .join('\n\n') - } else { - exports.push(namespace) - let declaration = '' - declaration += `export declare namespace ${namespace} {\n` - for (const def of defs) { - declaration += prettyPrint(def, constEnum, 2, true) + '\n' - } - declaration += '}' - return declaration - } - }) - .join('\n\n') + '\n' - - return { - dts, - exports, - } -} - -async function readIntermediateTypeFile(file: string) { - const content = await readFileAsync(file, 'utf8') - - const defs = content - .split('\n') - .filter(Boolean) - .map((line) => { - line = line.trim() - const parsed = JSON.parse(line) as TypeDefLine - // Convert escaped newlines back to actual newlines in js_doc fields - if (parsed.js_doc) { - parsed.js_doc = parsed.js_doc.replace(/\\n/g, '\n') - } - // Convert escaped newlines to actual newlines in def fields for struct/class/interface/type types - // where \n represents method/field separators that should be actual newlines - if (parsed.def) { - parsed.def = parsed.def.replace(/\\n/g, '\n') - } - return parsed - }) - - // move all `struct` def to the very top - // and order the rest alphabetically. - return defs.sort((a, b) => { - if (a.kind === TypeDefKind.Struct) { - if (b.kind === TypeDefKind.Struct) { - return a.name.localeCompare(b.name) - } - return -1 - } else if (b.kind === TypeDefKind.Struct) { - return 1 - } else { - return a.name.localeCompare(b.name) - } - }) -} - -function preprocessTypeDef(defs: TypeDefLine[]): Map { - const namespaceGrouped = new Map() - const classDefs = new Map() - - for (const def of defs) { - const namespace = def.js_mod ?? TOP_LEVEL_NAMESPACE - if (!namespaceGrouped.has(namespace)) { - namespaceGrouped.set(namespace, []) - } - - const group = namespaceGrouped.get(namespace)! - - if (def.kind === TypeDefKind.Struct) { - group.push(def) - classDefs.set(def.name, def) - } else if (def.kind === TypeDefKind.Extends) { - const classDef = classDefs.get(def.name) - if (classDef) { - classDef.extends = def.def - } - } else if (def.kind === TypeDefKind.Impl) { - // merge `impl` into class definition - const classDef = classDefs.get(def.name) - if (classDef) { - if (classDef.def) { - classDef.def += '\n' - } - - classDef.def += def.def - // Convert any remaining \n sequences in the merged def to actual newlines - if (classDef.def) { - classDef.def = classDef.def.replace(/\\n/g, '\n') - } - } - } else { - group.push(def) - } - } - - return namespaceGrouped -} - -export function correctStringIdent(src: string, ident: number): string { - let bracketDepth = 0 - const result = src - .split('\n') - .map((line) => { - line = line.trim() - if (line === '') { - return '' - } - - const isInMultilineComment = line.startsWith('*') - const isClosingBracket = line.endsWith('}') - const isOpeningBracket = line.endsWith('{') - const isTypeDeclaration = line.endsWith('=') - const isTypeVariant = line.startsWith('|') - - let rightIndent = ident - if ((isOpeningBracket || isTypeDeclaration) && !isInMultilineComment) { - bracketDepth += 1 - rightIndent += (bracketDepth - 1) * 2 - } else { - if ( - isClosingBracket && - bracketDepth > 0 && - !isInMultilineComment && - !isTypeVariant - ) { - bracketDepth -= 1 - } - rightIndent += bracketDepth * 2 - } - - if (isInMultilineComment) { - rightIndent += 1 - } - - const s = `${' '.repeat(rightIndent)}${line}` - - return s - }) - .join('\n') - - return result -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/version.ts b/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/version.ts deleted file mode 100644 index 01d0cb2..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cli/src/utils/version.ts +++ /dev/null @@ -1,78 +0,0 @@ -export enum NapiVersion { - Napi1 = 1, - Napi2, - Napi3, - Napi4, - Napi5, - Napi6, - Napi7, - Napi8, - Napi9, -} - -/// because node support new napi version in some minor version updates, so we might meet such situation: -/// `node v10.20.0` supports `napi5` and `napi6`, but `node v12.0.0` only support `napi4`, -/// by which, we can not tell directly napi version supportless from node version directly. -const NAPI_VERSION_MATRIX = new Map([ - [NapiVersion.Napi1, '8.6.0 | 9.0.0 | 10.0.0'], - [NapiVersion.Napi2, '8.10.0 | 9.3.0 | 10.0.0'], - [NapiVersion.Napi3, '6.14.2 | 8.11.2 | 9.11.0 | 10.0.0'], - [NapiVersion.Napi4, '10.16.0 | 11.8.0 | 12.0.0'], - [NapiVersion.Napi5, '10.17.0 | 12.11.0 | 13.0.0'], - [NapiVersion.Napi6, '10.20.0 | 12.17.0 | 14.0.0'], - [NapiVersion.Napi7, '10.23.0 | 12.19.0 | 14.12.0 | 15.0.0'], - [NapiVersion.Napi8, '12.22.0 | 14.17.0 | 15.12.0 | 16.0.0'], - [NapiVersion.Napi9, '18.17.0 | 20.3.0 | 21.1.0'], -]) - -interface NodeVersion { - major: number - minor: number - patch: number -} - -function parseNodeVersion(v: string): NodeVersion { - const matches = v.match(/v?([0-9]+)\.([0-9]+)\.([0-9]+)/i) - - if (!matches) { - throw new Error('Unknown node version number: ' + v) - } - - const [, major, minor, patch] = matches - - return { - major: parseInt(major), - minor: parseInt(minor), - patch: parseInt(patch), - } -} - -function requiredNodeVersions(napiVersion: NapiVersion): NodeVersion[] { - const requirement = NAPI_VERSION_MATRIX.get(napiVersion) - - if (!requirement) { - return [parseNodeVersion('10.0.0')] - } - - return requirement.split('|').map(parseNodeVersion) -} - -function toEngineRequirement(versions: NodeVersion[]): string { - const requirements: string[] = [] - versions.forEach((v, i) => { - let req = '' - if (i !== 0) { - const lastVersion = versions[i - 1] - req += `< ${lastVersion.major + 1}` - } - - req += `${i === 0 ? '' : ' || '}>= ${v.major}.${v.minor}.${v.patch}` - requirements.push(req) - }) - - return requirements.join(' ') -} - -export function napiEngineRequirement(napiVersion: NapiVersion): string { - return toEngineRequirement(requiredNodeVersions(napiVersion)) -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/LICENSE b/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/LICENSE deleted file mode 100644 index 4ba6390..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020-present NAPI-RS - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/README.md b/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/README.md deleted file mode 100644 index 2c23c9d..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# `@napi-rs/cross-toolchain` - -Create cross-toolchain from https://github.com/rust-cross/manylinux-cross/tree/main - -With this package, you can download cross-toolchain from npm, and don't need to start a docker. diff --git a/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/index.d.ts b/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/index.d.ts deleted file mode 100644 index ab11e8e..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/index.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -export const arm64TargetX86_64: string | undefined -export const arm64TargetAarch64: string | undefined -export const arm64TargetArmv7: string | undefined -export const x64TargetX86_64: string | undefined -export const x64TargetAarch64: string | undefined -export const x64TargetArmv7: string | undefined -export type SupportedTargets = - | 'armv7-unknown-linux-gnueabihf' - | 'aarch64-unknown-linux-gnu' - | 'x86_64-unknown-linux-gnu' -export type PlatformToolchain = { - [key in SupportedTargets]: string | undefined -} -export const arm64: PlatformToolchain -export const x64: PlatformToolchain -export function download( - arch: 'x64' | 'arm64', - target: SupportedTargets -): import('@napi-rs/tar').Archive diff --git a/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/index.js b/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/index.js deleted file mode 100644 index 41d3ad0..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/index.js +++ /dev/null @@ -1,166 +0,0 @@ -const { mkdirSync, rmSync, readFileSync } = require('node:fs') -const { execSync } = require('node:child_process') -const { join } = require('node:path') -const { unzipSync } = require('node:zlib') - -const { version } = require('./package.json') - -let arm64TargetX86_64 -let arm64TargetAarch64 -let arm64TargetArmv7 -let arm64TargetS390x -let arm64TargetPowerpc64le -let x64TargetX86_64 -let x64TargetAarch64 -let x64TargetArmv7 -let x64TargetS390x -let x64TargetPowerpc64le -const alias = { - 's390x-unknown-linux-gnu': 's390x-ibm-linux-gnu', -} - -try { - arm64TargetX86_64 = - require('@napi-rs/cross-toolchain-arm64-target-x86_64').toolchainPath -} catch { - // ignore -} -try { - arm64TargetAarch64 = - require('@napi-rs/cross-toolchain-arm64-target-aarch64').toolchainPath -} catch { - // ignore -} -try { - arm64TargetArmv7 = - require('@napi-rs/cross-toolchain-arm64-target-armv7').toolchainPath -} catch { - // ignore -} -try { - x64TargetX86_64 = - require('@napi-rs/cross-toolchain-x64-target-x86_64').toolchainPath -} catch { - // ignore -} -try { - x64TargetAarch64 = - require('@napi-rs/cross-toolchain-x64-target-aarch64').toolchainPath -} catch { - // ignore -} -try { - x64TargetArmv7 = - require('@napi-rs/cross-toolchain-x64-target-armv7').toolchainPath -} catch { - // ignore -} -try { - x64TargetS390x = - require('@napi-rs/cross-toolchain-x64-target-s390x').toolchainPath -} catch { - // ignore -} -try { - arm64TargetS390x = - require('@napi-rs/cross-toolchain-arm64-target-s390x').toolchainPath -} catch { - // ignore -} -try { - x64TargetPowerpc64le = - require('@napi-rs/cross-toolchain-x64-target-powerpc64le').toolchainPath -} catch { - // ignore -} -try { - arm64TargetPowerpc64le = - require('@napi-rs/cross-toolchain-arm64-target-powerpc64le').toolchainPath -} catch { - // ignore -} - -module.exports.arm64TargetX86_64 = arm64TargetX86_64 -module.exports.arm64TargetAarch64 = arm64TargetAarch64 -module.exports.arm64TargetArmv7 = arm64TargetArmv7 -module.exports.x64TargetX86_64 = x64TargetX86_64 -module.exports.x64TargetAarch64 = x64TargetAarch64 -module.exports.x64TargetArmv7 = x64TargetArmv7 -module.exports.x64TargetS390x = x64TargetS390x -module.exports.arm64TargetS390x = arm64TargetS390x -module.exports.x64TargetPowerpc64le = x64TargetPowerpc64le -module.exports.arm64TargetPowerpc64le = arm64TargetPowerpc64le - -module.exports.arm64 = { - 'armv7-unknown-linux-gnueabihf': arm64TargetArmv7, - 'aarch64-unknown-linux-gnu': arm64TargetAarch64, - 'x86_64-unknown-linux-gnu': arm64TargetX86_64, - 's390x-unknown-linux-gnu': arm64TargetS390x, - 'powerpc64le-unknown-linux-gnu': arm64TargetPowerpc64le, -} - -module.exports.x64 = { - 'armv7-unknown-linux-gnueabihf': x64TargetArmv7, - 'aarch64-unknown-linux-gnu': x64TargetAarch64, - 'x86_64-unknown-linux-gnu': x64TargetX86_64, - 's390x-unknown-linux-gnu': x64TargetS390x, - 'powerpc64le-unknown-linux-gnu': x64TargetPowerpc64le, -} - -module.exports.version = version - -const packages = { - arm64: { - 'armv7-unknown-linux-gnueabihf': - '@napi-rs/cross-toolchain-arm64-target-armv7', - 'aarch64-unknown-linux-gnu': - '@napi-rs/cross-toolchain-arm64-target-aarch64', - 'x86_64-unknown-linux-gnu': '@napi-rs/cross-toolchain-arm64-target-x86_64', - 's390x-unknown-linux-gnu': '@napi-rs/cross-toolchain-arm64-target-s390x', - 'powerpc64le-unknown-linux-gnu': - '@napi-rs/cross-toolchain-arm64-target-ppc64le', - }, - x64: { - 'armv7-unknown-linux-gnueabihf': - '@napi-rs/cross-toolchain-x64-target-armv7', - 'aarch64-unknown-linux-gnu': '@napi-rs/cross-toolchain-x64-target-aarch64', - 'x86_64-unknown-linux-gnu': '@napi-rs/cross-toolchain-x64-target-x86_64', - 's390x-unknown-linux-gnu': '@napi-rs/cross-toolchain-x64-target-s390x', - 'powerpc64le-unknown-linux-gnu': - '@napi-rs/cross-toolchain-x64-target-ppc64le', - }, -} - -module.exports.download = function download(arch, triple) { - const { Archive } = require('@napi-rs/tar') - const { xz: { decompressSync } } = require('@napi-rs/lzma') - const debug = require('debug')('napi:cross-toolchain') - - const downloadPackage = packages[arch][triple] - if (!downloadPackage) { - throw new Error(`Unsupported arch: ${arch} triple: ${triple}`) - } - debug(`Downloading ${downloadPackage}@${version} via npm pack ...`) - execSync(`npm pack ${downloadPackage}@${version}`, { - stdio: 'inherit', - cwd: __dirname, - env: process.env, - }) - const tgzFile = `${downloadPackage.replace( - '@napi-rs/', - 'napi-rs-' - )}-${version}.tgz` - const tar = unzipSync(readFileSync(join(__dirname, tgzFile))) - const archive = new Archive(tar) - const dest = join(__dirname, 'toolchain', arch, triple) - mkdirSync(dest, { recursive: true }) - debug(`Unpacking ${tgzFile} ...`) - archive.unpack(dest) - rmSync(join(__dirname, tgzFile)) - const xzFile = join(dest, 'package', `${alias[triple] ?? triple}.tar.xz`) - debug(`Decompressing ${xzFile} ...`) - const decompressed = decompressSync(readFileSync(xzFile)) - debug(`Reading Archive ${xzFile} ...`) - const destArchive = new Archive(decompressed) - return destArchive -} diff --git a/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/package.json b/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/package.json deleted file mode 100644 index 088a76b..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/cross-toolchain/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "name": "@napi-rs/cross-toolchain", - "version": "1.0.3", - "license": "MIT", - "main": "index.js", - "types": "index.d.ts", - "workspaces": [ - ".", - "arm64/*", - "x64/*" - ], - "author": { - "name": "LongYinan", - "email": "github@lyn.one", - "url": "https://lyn.one" - }, - "repository": "https://github.com/napi-rs/cross-toolchain", - "publishConfig": { - "registry": "https://registry.npmjs.org/", - "access": "public" - }, - "packageManager": "yarn@4.9.2", - "files": [ - "index.js", - "index.d.ts", - "LICENSE" - ], - "scripts": { - "prepublishOnly": "node update-peer.mjs" - }, - "peerDependencies": { - "@napi-rs/cross-toolchain-arm64-target-aarch64": "^1.0.3", - "@napi-rs/cross-toolchain-arm64-target-armv7": "^1.0.3", - "@napi-rs/cross-toolchain-arm64-target-ppc64le": "^1.0.3", - "@napi-rs/cross-toolchain-arm64-target-s390x": "^1.0.3", - "@napi-rs/cross-toolchain-arm64-target-x86_64": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-aarch64": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-armv7": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-ppc64le": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-s390x": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-x86_64": "^1.0.3" - }, - "peerDependenciesMeta": { - "@napi-rs/cross-toolchain-arm64-target-aarch64": { - "optional": true - }, - "@napi-rs/cross-toolchain-arm64-target-armv7": { - "optional": true - }, - "@napi-rs/cross-toolchain-arm64-target-ppc64le": { - "optional": true - }, - "@napi-rs/cross-toolchain-arm64-target-s390x": { - "optional": true - }, - "@napi-rs/cross-toolchain-arm64-target-x86_64": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-aarch64": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-armv7": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-ppc64le": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-s390x": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-x86_64": { - "optional": true - } - }, - "devDependencies": { - "lerna": "^8.2.3", - "lodash-es": "^4.17.21" - }, - "dependencies": { - "@napi-rs/lzma": "^1.4.5", - "@napi-rs/tar": "^1.1.0", - "debug": "^4.4.1" - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma-darwin-x64/README.md b/sdks/nodejs/node_modules/@napi-rs/lzma-darwin-x64/README.md deleted file mode 100644 index 90f4275..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/lzma-darwin-x64/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@napi-rs/lzma-darwin-x64` - -This is the **x86_64-apple-darwin** binary for `@napi-rs/lzma` diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma-darwin-x64/lzma.darwin-x64.node b/sdks/nodejs/node_modules/@napi-rs/lzma-darwin-x64/lzma.darwin-x64.node deleted file mode 100644 index e28c247..0000000 Binary files a/sdks/nodejs/node_modules/@napi-rs/lzma-darwin-x64/lzma.darwin-x64.node and /dev/null differ diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma-darwin-x64/package.json b/sdks/nodejs/node_modules/@napi-rs/lzma-darwin-x64/package.json deleted file mode 100644 index 7749101..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/lzma-darwin-x64/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "@napi-rs/lzma-darwin-x64", - "version": "1.4.5", - "cpu": [ - "x64" - ], - "main": "lzma.darwin-x64.node", - "files": [ - "lzma.darwin-x64.node" - ], - "description": "https://docs.rs/lzma-rs binding to Node.js via https://napi.rs", - "keywords": [ - "Node-API", - "napi", - "lzma", - "compress", - "decompress", - "xz", - "napi-rs" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "repository": { - "url": "git+https://github.com/Brooooooklyn/lzma.git", - "type": "git" - }, - "publishConfig": { - "registry": "https://registry.npmjs.org/", - "access": "public" - }, - "os": [ - "darwin" - ] -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma/README.md b/sdks/nodejs/node_modules/@napi-rs/lzma/README.md deleted file mode 100644 index f704efe..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/lzma/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# `@napi-rs/lzma` - -![https://github.com/Brooooooklyn/lzma/actions](https://github.com/Brooooooklyn/lzma/workflows/CI/badge.svg) -![](https://img.shields.io/npm/dm/@napi-rs/lzma.svg?sanitize=true) -[![Install size](https://packagephobia.com/badge?p=@napi-rs/lzma)](https://packagephobia.com/result?p=@napi-rs/lzma) - -[lzma-rs](https://docs.rs/lzma-rs) binding to Node.js via [napi-rs](https://napi.rs). - -> 🚀 Help me to become a full-time open-source developer by [sponsoring me on Github](https://github.com/sponsors/Brooooooklyn) - -## Install - -``` -yarn add @napi-rs/lzma -``` - -## Support matrix - -| | node14 | node16 | node18 | node20 | -| --------------------- | ------ | ------ | ------ | ------ | -| Windows x64 | ✓ | ✓ | ✓ | ✓ | -| Windows x32 | ✓ | ✓ | ✓ | ✓ | -| Windows arm64 | ✓ | ✓ | ✓ | ✓ | -| macOS x64 | ✓ | ✓ | ✓ | ✓ | -| macOS arm64 (m chips) | ✓ | ✓ | ✓ | ✓ | -| Linux x64 gnu | ✓ | ✓ | ✓ | ✓ | -| Linux x64 musl | ✓ | ✓ | ✓ | ✓ | -| Linux arm gnu | ✓ | ✓ | ✓ | ✓ | -| Linux arm64 gnu | ✓ | ✓ | ✓ | ✓ | -| Linux arm64 musl | ✓ | ✓ | ✓ | ✓ | -| Android arm64 | ✓ | ✓ | ✓ | ✓ | -| Android armv7 | ✓ | ✓ | ✓ | ✓ | -| FreeBSD x64 | ✓ | ✓ | ✓ | ✓ | - -## API - -### xz - -```js -import { compress, decompress } from '@napi-rs/lzma/xz' - -const compressed = await compress('Hello napi-rs 🚀') - -const decompressed = await decompress(compressed) - -console.log(decompressed.toString('utf8')) // Hello napi-rs 🚀 -``` - -### lzma - -```js -import { compress, decompress } from '@napi-rs/lzma/lzma' - -const compressed = await compress('Hello napi-rs 🚀') - -const decompressed = await decompress(compressed) - -console.log(decompressed.toString('utf8')) // Hello napi-rs 🚀 -``` - -### lzma2 - -```js -import { compress, decompress } from '@napi-rs/lzma/lzma2' - -const compressed = await compress('Hello napi-rs 🚀') - -const decompressed = await decompress(compressed) - -console.log(decompressed.toString('utf8')) // Hello napi-rs 🚀 -``` diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma/browser.js b/sdks/nodejs/node_modules/@napi-rs/lzma/browser.js deleted file mode 100644 index c988cf1..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/lzma/browser.js +++ /dev/null @@ -1 +0,0 @@ -export * from '@napi-rs/lzma-wasm32-wasi' diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma/index.d.ts b/sdks/nodejs/node_modules/@napi-rs/lzma/index.d.ts deleted file mode 100644 index 5fda4f3..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/lzma/index.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* auto-generated by NAPI-RS */ -/* eslint-disable */ -export declare namespace lzma { - export function compress(input: string | Uint8Array, signal?: AbortSignal | undefined | null): Promise - export function compressSync(input: string | Uint8Array): Buffer - export function decompress(input: Uint8Array, signal?: AbortSignal | undefined | null): Promise - export function decompressSync(input: Uint8Array): Buffer -} - -export declare namespace lzma2 { - export function compress(input: string | Uint8Array, signal?: AbortSignal | undefined | null): Promise - export function compressSync(input: string | Uint8Array): Buffer - export function decompress(input: Uint8Array, signal?: AbortSignal | undefined | null): Promise - export function decompressSync(input: Uint8Array): Buffer -} - -export declare namespace xz { - export function compress(input: string | Uint8Array, signal?: AbortSignal | undefined | null): Promise - export function compressSync(input: string | Uint8Array): Buffer - export function decompress(input: Uint8Array, signal?: AbortSignal | undefined | null): Promise - export function decompressSync(input: Uint8Array): Buffer -} diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma/index.js b/sdks/nodejs/node_modules/@napi-rs/lzma/index.js deleted file mode 100644 index 9609042..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/lzma/index.js +++ /dev/null @@ -1,513 +0,0 @@ -// prettier-ignore -/* eslint-disable */ -// @ts-nocheck -/* auto-generated by NAPI-RS */ - -const { createRequire } = require('node:module') -require = createRequire(__filename) - -const { readFileSync } = require('node:fs') -let nativeBinding = null -const loadErrors = [] - -const isMusl = () => { - let musl = false - if (process.platform === 'linux') { - musl = isMuslFromFilesystem() - if (musl === null) { - musl = isMuslFromReport() - } - if (musl === null) { - musl = isMuslFromChildProcess() - } - } - return musl -} - -const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-') - -const isMuslFromFilesystem = () => { - try { - return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl') - } catch { - return null - } -} - -const isMuslFromReport = () => { - let report = null - if (typeof process.report?.getReport === 'function') { - process.report.excludeNetwork = true - report = process.report.getReport() - } - if (!report) { - return null - } - if (report.header && report.header.glibcVersionRuntime) { - return false - } - if (Array.isArray(report.sharedObjects)) { - if (report.sharedObjects.some(isFileMusl)) { - return true - } - } - return false -} - -const isMuslFromChildProcess = () => { - try { - return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl') - } catch (e) { - // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false - return false - } -} - -function requireNative() { - if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) { - try { - nativeBinding = require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH); - } catch (err) { - loadErrors.push(err) - } - } else if (process.platform === 'android') { - if (process.arch === 'arm64') { - try { - return require('./lzma.android-arm64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-android-arm64') - const bindingPackageVersion = require('@napi-rs/lzma-android-arm64/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm') { - try { - return require('./lzma.android-arm-eabi.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-android-arm-eabi') - const bindingPackageVersion = require('@napi-rs/lzma-android-arm-eabi/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`)) - } - } else if (process.platform === 'win32') { - if (process.arch === 'x64') { - try { - return require('./lzma.win32-x64-msvc.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-win32-x64-msvc') - const bindingPackageVersion = require('@napi-rs/lzma-win32-x64-msvc/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'ia32') { - try { - return require('./lzma.win32-ia32-msvc.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-win32-ia32-msvc') - const bindingPackageVersion = require('@napi-rs/lzma-win32-ia32-msvc/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm64') { - try { - return require('./lzma.win32-arm64-msvc.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-win32-arm64-msvc') - const bindingPackageVersion = require('@napi-rs/lzma-win32-arm64-msvc/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`)) - } - } else if (process.platform === 'darwin') { - try { - return require('./lzma.darwin-universal.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-darwin-universal') - const bindingPackageVersion = require('@napi-rs/lzma-darwin-universal/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - if (process.arch === 'x64') { - try { - return require('./lzma.darwin-x64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-darwin-x64') - const bindingPackageVersion = require('@napi-rs/lzma-darwin-x64/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm64') { - try { - return require('./lzma.darwin-arm64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-darwin-arm64') - const bindingPackageVersion = require('@napi-rs/lzma-darwin-arm64/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`)) - } - } else if (process.platform === 'freebsd') { - if (process.arch === 'x64') { - try { - return require('./lzma.freebsd-x64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-freebsd-x64') - const bindingPackageVersion = require('@napi-rs/lzma-freebsd-x64/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm64') { - try { - return require('./lzma.freebsd-arm64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-freebsd-arm64') - const bindingPackageVersion = require('@napi-rs/lzma-freebsd-arm64/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`)) - } - } else if (process.platform === 'linux') { - if (process.arch === 'x64') { - if (isMusl()) { - try { - return require('./lzma.linux-x64-musl.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-linux-x64-musl') - const bindingPackageVersion = require('@napi-rs/lzma-linux-x64-musl/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - try { - return require('./lzma.linux-x64-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-linux-x64-gnu') - const bindingPackageVersion = require('@napi-rs/lzma-linux-x64-gnu/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } - } else if (process.arch === 'arm64') { - if (isMusl()) { - try { - return require('./lzma.linux-arm64-musl.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-linux-arm64-musl') - const bindingPackageVersion = require('@napi-rs/lzma-linux-arm64-musl/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - try { - return require('./lzma.linux-arm64-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-linux-arm64-gnu') - const bindingPackageVersion = require('@napi-rs/lzma-linux-arm64-gnu/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } - } else if (process.arch === 'arm') { - if (isMusl()) { - try { - return require('./lzma.linux-arm-musleabihf.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-linux-arm-musleabihf') - const bindingPackageVersion = require('@napi-rs/lzma-linux-arm-musleabihf/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - try { - return require('./lzma.linux-arm-gnueabihf.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-linux-arm-gnueabihf') - const bindingPackageVersion = require('@napi-rs/lzma-linux-arm-gnueabihf/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } - } else if (process.arch === 'riscv64') { - if (isMusl()) { - try { - return require('./lzma.linux-riscv64-musl.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-linux-riscv64-musl') - const bindingPackageVersion = require('@napi-rs/lzma-linux-riscv64-musl/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - try { - return require('./lzma.linux-riscv64-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-linux-riscv64-gnu') - const bindingPackageVersion = require('@napi-rs/lzma-linux-riscv64-gnu/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } - } else if (process.arch === 'ppc64') { - try { - return require('./lzma.linux-ppc64-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-linux-ppc64-gnu') - const bindingPackageVersion = require('@napi-rs/lzma-linux-ppc64-gnu/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 's390x') { - try { - return require('./lzma.linux-s390x-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-linux-s390x-gnu') - const bindingPackageVersion = require('@napi-rs/lzma-linux-s390x-gnu/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`)) - } - } else if (process.platform === 'openharmony') { - if (process.arch === 'arm64') { - try { - return require('./lzma.openharmony-arm64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-openharmony-arm64') - const bindingPackageVersion = require('@napi-rs/lzma-openharmony-arm64/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'x64') { - try { - return require('./lzma.openharmony-x64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-openharmony-x64') - const bindingPackageVersion = require('@napi-rs/lzma-openharmony-x64/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm') { - try { - return require('./lzma.openharmony-arm.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/lzma-openharmony-arm') - const bindingPackageVersion = require('@napi-rs/lzma-openharmony-arm/package.json').version - if (bindingPackageVersion !== '1.4.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.4.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`)) - } - } else { - loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`)) - } -} - -nativeBinding = requireNative() - -if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) { - try { - nativeBinding = require('./lzma.wasi.cjs') - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - loadErrors.push(err) - } - } - if (!nativeBinding) { - try { - nativeBinding = require('@napi-rs/lzma-wasm32-wasi') - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - loadErrors.push(err) - } - } - } -} - -if (!nativeBinding) { - if (loadErrors.length > 0) { - throw new Error( - `Cannot find native binding. ` + - `npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` + - 'Please try `npm i` again after removing both package-lock.json and node_modules directory.', - { cause: loadErrors } - ) - } - throw new Error(`Failed to load native binding`) -} - -module.exports = nativeBinding -module.exports.lzma = nativeBinding.lzma -module.exports.lzma2 = nativeBinding.lzma2 -module.exports.xz = nativeBinding.xz diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma/lzma.d.ts b/sdks/nodejs/node_modules/@napi-rs/lzma/lzma.d.ts deleted file mode 100644 index 4f146a9..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/lzma/lzma.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { lzma } from './index' - -export const compress: typeof lzma.compress -export const compressSync: typeof lzma.compressSync -export const decompress: typeof lzma.decompress -export const decompressSync: typeof lzma.decompressSync diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma/lzma.js b/sdks/nodejs/node_modules/@napi-rs/lzma/lzma.js deleted file mode 100644 index 8d7e66c..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/lzma/lzma.js +++ /dev/null @@ -1,6 +0,0 @@ -const { lzma } = require('./index') - -module.exports.compress = lzma.compress -module.exports.compressSync = lzma.compressSync -module.exports.decompress = lzma.decompress -module.exports.decompressSync = lzma.decompressSync diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma/lzma2.d.ts b/sdks/nodejs/node_modules/@napi-rs/lzma/lzma2.d.ts deleted file mode 100644 index 5a97582..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/lzma/lzma2.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { lzma2 } from './index' - -export const compress: typeof lzma2.compress -export const compressSync: typeof lzma2.compressSync -export const decompress: typeof lzma2.decompress -export const decompressSync: typeof lzma2.decompressSync diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma/lzma2.js b/sdks/nodejs/node_modules/@napi-rs/lzma/lzma2.js deleted file mode 100644 index 7282e0e..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/lzma/lzma2.js +++ /dev/null @@ -1,6 +0,0 @@ -const { lzma2 } = require('./index') - -module.exports.compress = lzma2.compress -module.exports.compressSync = lzma2.compressSync -module.exports.decompress = lzma2.decompress -module.exports.decompressSync = lzma2.decompressSync diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma/package.json b/sdks/nodejs/node_modules/@napi-rs/lzma/package.json deleted file mode 100644 index 29f94e8..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/lzma/package.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "name": "@napi-rs/lzma", - "version": "1.4.5", - "description": "https://docs.rs/lzma-rs binding to Node.js via https://napi.rs", - "napi": { - "binaryName": "lzma", - "targets": [ - "x86_64-pc-windows-msvc", - "x86_64-unknown-linux-gnu", - "x86_64-apple-darwin", - "aarch64-apple-darwin", - "aarch64-linux-android", - "aarch64-unknown-linux-gnu", - "aarch64-unknown-linux-musl", - "aarch64-pc-windows-msvc", - "armv7-unknown-linux-gnueabihf", - "arm-linux-androideabi", - "x86_64-unknown-linux-musl", - "x86_64-unknown-freebsd", - "i686-pc-windows-msvc", - "wasm32-wasi-preview1-threads", - "powerpc64le-unknown-linux-gnu", - "s390x-unknown-linux-gnu", - "riscv64gc-unknown-linux-gnu" - ] - }, - "publishConfig": { - "registry": "https://registry.npmjs.org/", - "access": "public" - }, - "repository": { - "url": "git+https://github.com/Brooooooklyn/lzma.git", - "type": "git" - }, - "keywords": [ - "Node-API", - "napi", - "lzma", - "compress", - "decompress", - "xz", - "napi-rs" - ], - "license": "MIT", - "files": [ - "index.js", - "index.d.ts", - "xz.js", - "xz.d.ts", - "lzma.js", - "lzma.d.ts", - "lzma2.js", - "lzma2.d.ts", - "browser.js" - ], - "devDependencies": { - "@napi-rs/cli": "^3.1.3", - "@napi-rs/wasm-runtime": "^1.0.3", - "@oxc-node/core": "^0.0.32", - "@taplo/cli": "^0.7.0", - "@types/lzma-native": "^4.0.4", - "@types/node": "^24.2.1", - "ava": "^6.4.1", - "conventional-changelog-cli": "^5.0.0", - "lzma": "^2.3.2", - "lzma-native": "^8.0.6", - "npm-run-all2": "^8.0.4", - "oxlint": "^1.11.1", - "prettier": "^3.6.2", - "typescript": "^5.9.2" - }, - "engines": { - "node": ">= 10" - }, - "scripts": { - "artifacts": "napi artifacts", - "build": "napi build --platform --release", - "build:debug": "napi build --platform", - "lint": "oxlint .", - "format": "run-p format:source format:rs format:toml", - "format:rs": "cargo fmt", - "format:source": "prettier --config ./package.json --write .", - "format:toml": "taplo format", - "prepublishOnly": "napi prepublish -t npm", - "test": "ava", - "version": "napi version && conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md" - }, - "ava": { - "nodeArguments": [ - "--import", - "@oxc-node/core/register" - ], - "extensions": { - "ts": "module" - }, - "timeout": "2m", - "workerThreads": false, - "environmentVariables": { - "TS_NODE_PROJECT": "./tsconfig.json", - "NODE_ENV": "ava" - } - }, - "prettier": { - "printWidth": 120, - "semi": false, - "trailingComma": "all", - "singleQuote": true, - "arrowParens": "always" - }, - "browser": { - "index.js": "./browser.js" - }, - "exports": { - ".": { - "import": "./index.js", - "require": "./index.js", - "types": "./index.d.ts", - "browser": { - "import": "./browser.js" - } - }, - "./xz": { - "import": "./xz.js", - "require": "./xz.js" - }, - "./lzma": { - "import": "./lzma.js", - "require": "./lzma.js" - }, - "./lzma2": { - "import": "./lzma2.js", - "require": "./lzma2.js" - } - }, - "packageManager": "yarn@4.9.2", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "optionalDependencies": { - "@napi-rs/lzma-win32-x64-msvc": "1.4.5", - "@napi-rs/lzma-linux-x64-gnu": "1.4.5", - "@napi-rs/lzma-darwin-x64": "1.4.5", - "@napi-rs/lzma-darwin-arm64": "1.4.5", - "@napi-rs/lzma-android-arm64": "1.4.5", - "@napi-rs/lzma-linux-arm64-gnu": "1.4.5", - "@napi-rs/lzma-linux-arm64-musl": "1.4.5", - "@napi-rs/lzma-win32-arm64-msvc": "1.4.5", - "@napi-rs/lzma-linux-arm-gnueabihf": "1.4.5", - "@napi-rs/lzma-android-arm-eabi": "1.4.5", - "@napi-rs/lzma-linux-x64-musl": "1.4.5", - "@napi-rs/lzma-freebsd-x64": "1.4.5", - "@napi-rs/lzma-win32-ia32-msvc": "1.4.5", - "@napi-rs/lzma-wasm32-wasi": "1.4.5", - "@napi-rs/lzma-linux-ppc64-gnu": "1.4.5", - "@napi-rs/lzma-linux-s390x-gnu": "1.4.5", - "@napi-rs/lzma-linux-riscv64-gnu": "1.4.5" - } -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma/xz.d.ts b/sdks/nodejs/node_modules/@napi-rs/lzma/xz.d.ts deleted file mode 100644 index 80ce97e..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/lzma/xz.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { xz } from './index' - -export const compress: typeof xz.compress -export const compressSync: typeof xz.compressSync -export const decompress: typeof xz.decompress -export const decompressSync: typeof xz.decompressSync diff --git a/sdks/nodejs/node_modules/@napi-rs/lzma/xz.js b/sdks/nodejs/node_modules/@napi-rs/lzma/xz.js deleted file mode 100644 index 5ca3f59..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/lzma/xz.js +++ /dev/null @@ -1,6 +0,0 @@ -const { xz } = require('./index') - -module.exports.compress = xz.compress -module.exports.compressSync = xz.compressSync -module.exports.decompress = xz.decompress -module.exports.decompressSync = xz.decompressSync diff --git a/sdks/nodejs/node_modules/@napi-rs/tar-darwin-x64/README.md b/sdks/nodejs/node_modules/@napi-rs/tar-darwin-x64/README.md deleted file mode 100644 index fb719f8..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/tar-darwin-x64/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@napi-rs/tar-darwin-x64` - -This is the **x86_64-apple-darwin** binary for `@napi-rs/tar` diff --git a/sdks/nodejs/node_modules/@napi-rs/tar-darwin-x64/package.json b/sdks/nodejs/node_modules/@napi-rs/tar-darwin-x64/package.json deleted file mode 100644 index 6d09e00..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/tar-darwin-x64/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "@napi-rs/tar-darwin-x64", - "version": "1.1.0", - "cpu": [ - "x64" - ], - "main": "tar.darwin-x64.node", - "files": [ - "tar.darwin-x64.node" - ], - "description": "Node.js tar binding https://docs.rs/tar/latest/tar/", - "keywords": [ - "napi-rs", - "NAPI", - "N-API", - "Rust", - "node-addon", - "node-addon-api" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "repository": "git@github.com:napi-rs/tar.git", - "publishConfig": { - "registry": "https://registry.npmjs.org/", - "access": "public" - }, - "os": [ - "darwin" - ] -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@napi-rs/tar-darwin-x64/tar.darwin-x64.node b/sdks/nodejs/node_modules/@napi-rs/tar-darwin-x64/tar.darwin-x64.node deleted file mode 100644 index 914b281..0000000 Binary files a/sdks/nodejs/node_modules/@napi-rs/tar-darwin-x64/tar.darwin-x64.node and /dev/null differ diff --git a/sdks/nodejs/node_modules/@napi-rs/tar/LICENSE b/sdks/nodejs/node_modules/@napi-rs/tar/LICENSE deleted file mode 100644 index 4ba6390..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/tar/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020-present NAPI-RS - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/@napi-rs/tar/README.md b/sdks/nodejs/node_modules/@napi-rs/tar/README.md deleted file mode 100644 index 664798c..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/tar/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# `@napi-rs/tar` - -![https://github.com/napi-rs/tar/actions](https://github.com/napi-rs/tar/workflows/CI/badge.svg) -[![install size](https://packagephobia.com/badge?p=@napi-rs/tar)](https://packagephobia.com/result?p=@napi-rs/tar) -[![Downloads](https://img.shields.io/npm/dm/@napi-rs/tar.svg?sanitize=true)](https://npmcharts.com/compare/@napi-rs/tar?minimal=true) - -> Node.js tar binding https://docs.rs/tar/latest/tar/ - -## Usage - -### Reading Archives - -```ts -export class Entries { - [Symbol.iterator](): Iterator -} -export class Entry { - path(): string | null - asBytes(): Buffer -} -export class Archive { - /** Create a new archive with the underlying path. */ - constructor(path: string) - entries(): Entries - /** - * Unpacks the contents tarball into the specified `dst`. - * - * This function will iterate over the entire contents of this tarball, - * extracting each file in turn to the location specified by the entry's - * path name. - * - * This operation is relatively sensitive in that it will not write files - * outside of the path specified by `dst`. Files in the archive which have - * a '..' in their path are skipped during the unpacking process. - */ - unpack(to: string): void -} -``` - -### Creating Archives - -```ts -export class Builder { - /** Create a new builder which will write to the specified output. */ - constructor(output?: string) - /** Append a file from disk to this archive. */ - appendFile(name: string, src: string): void - /** Append a directory and all of its contents to this archive. */ - appendDirAll(name: string, src: string): void - /** Append raw data to this archive with the specified name. */ - appendData(name: string, data: Uint8Array): void - /** Finalize the archive and return the resulting data. */ - finish(): Array | null -} -``` - -### Creating Archives Example - -```ts -import { Builder } from '@napi-rs/tar' - -// Create archive in memory -const builder = new Builder() -builder.appendData('hello.txt', Buffer.from('Hello, world!')) -builder.appendFile('package.json', './package.json') -builder.appendDirAll('src', './src') - -const archiveData = builder.finish() // Returns Uint8Array -// archiveData can be written to disk or used directly - -// Create archive to file -const fileBuilder = new Builder('./output.tar') -fileBuilder.appendData('readme.txt', Buffer.from('Archive contents')) -fileBuilder.finish() // Returns null, data written to ./output.tar -``` - -## Extract Single File - -You can extract a specific file from a tar archive without extracting the entire archive. This is useful for inspecting Docker OCI images or extracting specific configuration files: - -```ts -import { Archive } from '@napi-rs/tar' - -// Extract a single file (similar to: tar -x -O -f archive.tar filename) -function extractFile(archivePath: string, targetPath: string): Buffer | null { - const archive = new Archive(archivePath) - for (const entry of archive.entries()) { - if (entry.path() === targetPath) { - return entry.asBytes() - } - } - return null -} - -// Usage example -const indexContent = extractFile('./docker-image.tar', 'index.json') -if (indexContent) { - const manifest = JSON.parse(indexContent.toString('utf-8')) - console.log(manifest) -} -``` - -## Install this test package - -``` -yarn add @napi-rs/tar -pnpm install @napi-rs/tar -npm install @napi-rs/tar -``` diff --git a/sdks/nodejs/node_modules/@napi-rs/tar/browser.js b/sdks/nodejs/node_modules/@napi-rs/tar/browser.js deleted file mode 100644 index 1fd9a84..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/tar/browser.js +++ /dev/null @@ -1 +0,0 @@ -export * from '@napi-rs/tar-wasm32-wasi' diff --git a/sdks/nodejs/node_modules/@napi-rs/tar/index.d.ts b/sdks/nodejs/node_modules/@napi-rs/tar/index.d.ts deleted file mode 100644 index ffd24db..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/tar/index.d.ts +++ /dev/null @@ -1,483 +0,0 @@ -/* auto-generated by NAPI-RS */ -/* eslint-disable */ -export declare class Archive { - /** Create a new archive with the underlying path. */ - constructor(input: string | Uint8Array) - entries(): Entries - /** - * Unpacks the contents tarball into the specified `dst`. - * - * This function will iterate over the entire contents of this tarball, - * extracting each file in turn to the location specified by the entry's - * path name. - * - * This operation is relatively sensitive in that it will not write files - * outside of the path specified by `dst`. Files in the archive which have - * a '..' in their path are skipped during the unpacking process. - */ - unpack(to: string): void - /** - * Set the mask of the permission bits when unpacking this entry. - * - * The mask will be inverted when applying against a mode, similar to how - * `umask` works on Unix. In logical notation it looks like: - * - * ```text - * new_mode = old_mode & (~mask) - * ``` - * - * The mask is 0 by default and is currently only implemented on Unix. - */ - setMask(mask: number): void - /** - * Indicate whether extended file attributes (xattrs on Unix) are preserved - * when unpacking this archive. - * - * This flag is disabled by default and is currently only implemented on - * Unix using xattr support. This may eventually be implemented for - * Windows, however, if other archive implementations are found which do - * this as well. - */ - setUnpackXattrs(unpackXattrs: boolean): void - /** - * Indicate whether extended permissions (like suid on Unix) are preserved - * when unpacking this entry. - * - * This flag is disabled by default and is currently only implemented on - * Unix. - */ - setPreservePermissions(preservePermissions: boolean): void - /** - * Indicate whether numeric ownership ids (like uid and gid on Unix) - * are preserved when unpacking this entry. - * - * This flag is disabled by default and is currently only implemented on - * Unix. - */ - setPreserveOwnerships(preserveOwnerships: boolean): void - /** Indicate whether files and symlinks should be overwritten on extraction. */ - setOverwrite(overwrite: boolean): void - /** - * Indicate whether access time information is preserved when unpacking - * this entry. - * - * This flag is enabled by default. - */ - setPreserveMtime(preserveMtime: boolean): void - /** - * Ignore zeroed headers, which would otherwise indicate to the archive that it has no more - * entries. - * - * This can be used in case multiple tar archives have been concatenated together. - */ - setIgnoreZeros(ignoreZeros: boolean): void -} - -export declare class Builder { - /** - * Create a new builder which will write to the specified output. - * The output can be a file path (string) or will create a buffer internally. - */ - constructor(output?: string | undefined | null) - /** - * Append a file from disk to this archive. - * - * This function will open the file specified by `src` and add it to the - * archive as `name`. The `name` specified is the name that will be used - * inside the archive. - */ - appendFile(name: string, src: string): void - /** - * Append a directory and all of its contents to this archive. - * - * This function will recursively add all files and directories in the - * specified `src` directory to the archive, preserving their relative - * paths under `name`. - */ - appendDirAll(name: string, src: string): void - /** - * Append raw data to this archive with the specified name. - * - * This function allows you to add arbitrary data to the archive with a - * specified filename. - */ - appendData(name: string, data: Uint8Array): void - /** - * Finalize the archive and return the resulting data. - * - * This function must be called to properly finish the archive. - * If a file path was provided during construction, this will flush - * and close the file. If no path was provided, this returns the - * archive data as a Buffer. - */ - finish(): Array | null -} - -/** - * This type extends JavaScript's `Iterator`, and so has the iterator helper - * methods. It may extend the upcoming TypeScript `Iterator` class in the future. - * - * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator#iterator_helper_methods - * @see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-6.html#iterator-helper-methods - */ -export declare class Entries extends Iterator { - - next(value?: void): IteratorResult -} - -export declare class Entry { - /** - * Returns the path name for this entry. - * - * This method may fail if the pathname is not valid Unicode and this is - * called on a Windows platform. - * - * Note that this function will convert any `\` characters to directory - * separators, and it will not always return the same value as - * `self.header().path()` as some archive formats have support for longer - * path names described in separate entries. - * - * It is recommended to use this method instead of inspecting the `header` - * directly to ensure that various archive formats are handled correctly. - */ - path(): string | null - header(): ReadonlyHeader - /** - * Read the entirety of this entry into a byte vector. - * - * This is equivalent to the functionality provided by `tar -x -O -f archive.tar filename` - * which extracts a single file and outputs its contents to stdout. - * - * This method will read the entire contents of this entry into memory. - * For large files, consider using streaming methods if memory usage is a concern. - */ - asBytes(): Buffer -} - -export declare class Header { - /** Returns a view into this header as a byte array. */ - asBytes(): Buffer - /** - * Returns the size of entry's data this header represents. - * - * This is different from `Header::size` for sparse files, which have - * some longer `size()` but shorter `entry_size()`. The `entry_size()` - * listed here should be the number of bytes in the archive this header - * describes. - * - * May return an error if the field is corrupted. - */ - entrySize(): bigint - /** - * Returns the file size this header represents. - * - * May return an error if the field is corrupted. - */ - size(): bigint - /** Encodes the `size` argument into the size field of this header. */ - setSize(size: number | bigint): void - /** - * Returns the raw path name stored in this header. - * - * This method may fail if the pathname is not valid Unicode and this is - * called on a Windows platform. - * - * Note that this function will convert any `\` characters to directory - * separators. - */ - path(): string - /** - * Sets the path name for this header. - * - * This function will set the pathname listed in this header, encoding it - * in the appropriate format. May fail if the path is too long or if the - * path specified is not Unicode and this is a Windows platform. Will - * strip out any "." path component, which signifies the current directory. - * - * Note: This function does not support names over 100 bytes, or paths - * over 255 bytes, even for formats that support longer names. Instead, - * use `Builder` methods to insert a long-name extension at the same time - * as the file content. - */ - setPath(path: string): void - /** - * Returns the link name stored in this header as a byte array, if any. - * - * This function is guaranteed to succeed, but you may wish to call the - * `link_name` method to convert to a `Path`. - * - * Note that this function will convert any `\` characters to directory - * separators. - */ - linkName(): string | null - /** - * Sets the link name for this header. - * - * This function will set the linkname listed in this header, encoding it - * in the appropriate format. May fail if the link name is too long or if - * the path specified is not Unicode and this is a Windows platform. Will - * strip out any "." path component, which signifies the current directory. - * - * To use GNU long link names, prefer instead [`crate::Builder::append_link`]. - */ - setLinkName(linkName: string): void - /** - * Sets the link name for this header without any transformation. - * - * This function is like [`Self::set_link_name`] but accepts an arbitrary byte array. - * Hence it will not perform any canonicalization, such as replacing duplicate `//` with `/`. - */ - setLinkNameLiteral(linkName: string): void - /** - * Returns the mode bits for this file - * - * May return an error if the field is corrupted. - */ - mode(): number - /** Encodes the `mode` provided into this header. */ - setMode(mode: number): void - /** - * Returns the value of the owner's user ID field - * - * May return an error if the field is corrupted. - */ - uid(): bigint - /** Encodes the `uid` provided into this header. */ - setUid(uid: bigint): void - /** Returns the value of the group's user ID field */ - gid(): bigint - /** Encodes the `gid` provided into this header. */ - setGid(gid: bigint): void - /** Returns the last modification time in Unix time format */ - mtime(): bigint - /** - * Encodes the `mtime` provided into this header. - * - * Note that this time is typically a number of seconds passed since - * January 1, 1970. - */ - setTime(mtime: bigint): void - /** - * Return the user name of the owner of this file. - * - * A return value of `Ok(Some(..))` indicates that the user name was - * present and was valid utf-8, `Ok(None)` indicates that the user name is - * not present in this archive format, and `Err` indicates that the user - * name was present but was not valid utf-8. - */ - username(): string | null - /** - * Sets the username inside this header. - * - * This function will return an error if this header format cannot encode a - * user name or the name is too long. - */ - setUsername(username: string): void - /** - * Return the group name of the owner of this file. - * - * A return value of `Ok(Some(..))` indicates that the group name was - * present and was valid utf-8, `Ok(None)` indicates that the group name is - * not present in this archive format, and `Err` indicates that the group - * name was present but was not valid utf-8. - */ - groupname(): string | null - /** - * Sets the group name inside this header. - * - * This function will return an error if this header format cannot encode a - * group name or the name is too long. - */ - setGroupname(groupname: string): void - /** - * Returns the device major number, if present. - * - * This field may not be present in all archives, and it may not be - * correctly formed in all archives. `Ok(Some(..))` means it was present - * and correctly decoded, `Ok(None)` indicates that this header format does - * not include the device major number, and `Err` indicates that it was - * present and failed to decode. - */ - deviceMajor(): number | null - /** - * Encodes the value `major` into the dev_major field of this header. - * - * This function will return an error if this header format cannot encode a - * major device number. - */ - setDeviceMajor(deviceMajor: number): void - /** - * Returns the device minor number, if present. - * - * This field may not be present in all archives, and it may not be - * correctly formed in all archives. `Ok(Some(..))` means it was present - * and correctly decoded, `Ok(None)` indicates that this header format does - * not include the device minor number, and `Err` indicates that it was - * present and failed to decode. - */ - deviceMinor(): number | null - /** - * Encodes the value `minor` into the dev_minor field of this header. - * - * This function will return an error if this header format cannot encode a - * minor device number. - */ - setDeviceMinor(deviceMinor: number): void - /** Returns the type of file described by this header. */ - entryType(): EntryType - /** Sets the type of file that will be described by this header. */ - setEntryType(entryType: EntryType): void - /** - * Returns the checksum field of this header. - * - * May return an error if the field is corrupted. - */ - cksum(): number - /** - * Sets the checksum field of this header based on the current fields in - * this header. - */ - setCksum(): void -} - -export declare class ReadonlyHeader { - /** Returns a view into this header as a byte array. */ - asBytes(): Buffer - /** - * Returns the size of entry's data this header represents. - * - * This is different from `Header::size` for sparse files, which have - * some longer `size()` but shorter `entry_size()`. The `entry_size()` - * listed here should be the number of bytes in the archive this header - * describes. - * - * May return an error if the field is corrupted. - */ - entrySize(): bigint - /** - * Returns the file size this header represents. - * - * May return an error if the field is corrupted. - */ - size(): bigint - /** - * Returns the raw path name stored in this header. - * - * This method may fail if the pathname is not valid Unicode and this is - * called on a Windows platform. - * - * Note that this function will convert any `\` characters to directory - * separators. - */ - path(): string - /** - * Returns the link name stored in this header as a byte array, if any. - * - * This function is guaranteed to succeed, but you may wish to call the - * `link_name` method to convert to a `Path`. - * - * Note that this function will convert any `\` characters to directory - * separators. - */ - linkName(): string | null - /** - * Returns the mode bits for this file - * - * May return an error if the field is corrupted. - */ - mode(): number - /** - * Returns the value of the owner's user ID field - * - * May return an error if the field is corrupted. - */ - uid(): bigint - /** Returns the value of the group's user ID field */ - gid(): bigint - /** Returns the last modification time in Unix time format */ - mtime(): bigint - /** - * Return the user name of the owner of this file. - * - * A return value of `Ok(Some(..))` indicates that the user name was - * present and was valid utf-8, `Ok(None)` indicates that the user name is - * not present in this archive format, and `Err` indicates that the user - * name was present but was not valid utf-8. - */ - username(): string | null - /** - * Return the group name of the owner of this file. - * - * A return value of `Ok(Some(..))` indicates that the group name was - * present and was valid utf-8, `Ok(None)` indicates that the group name is - * not present in this archive format, and `Err` indicates that the group - * name was present but was not valid utf-8. - */ - groupname(): string | null - /** - * Returns the device major number, if present. - * - * This field may not be present in all archives, and it may not be - * correctly formed in all archives. `Ok(Some(..))` means it was present - * and correctly decoded, `Ok(None)` indicates that this header format does - * not include the device major number, and `Err` indicates that it was - * present and failed to decode. - */ - deviceMajor(): number | null - /** - * Returns the device minor number, if present. - * - * This field may not be present in all archives, and it may not be - * correctly formed in all archives. `Ok(Some(..))` means it was present - * and correctly decoded, `Ok(None)` indicates that this header format does - * not include the device minor number, and `Err` indicates that it was - * present and failed to decode. - */ - deviceMinor(): number | null - /** Returns the type of file described by this header. */ - entryType(): EntryType - /** - * Returns the checksum field of this header. - * - * May return an error if the field is corrupted. - */ - cksum(): number -} - -/** - * See [https://en.wikipedia.org/wiki/Tar_%28computing%29#UStar_format](https://en.wikipedia.org/wiki/Tar_%28computing%29#UStar_format) - * Indicate for the type of file described by a header. - * - * Each `Header` has an `entry_type` method returning an instance of this type - * which can be used to inspect what the header is describing. - * - * A non-exhaustive enum representing the possible entry types - */ -export declare const enum EntryType { - /** Regular file */ - Regular = 0, - /** Hard link */ - Link = 1, - /** Symbolic link */ - Symlink = 2, - /** Character device */ - Char = 3, - /** Block device */ - Block = 4, - /** Directory */ - Directory = 5, - /** Named pipe (fifo) */ - Fifo = 6, - /** Implementation-defined 'high-performance' type, treated as regular file */ - Continuous = 7, - /** GNU extension - long file name */ - GNULongName = 8, - /** GNU extension - long link name (link target) */ - GNULongLink = 9, - /** GNU extension - sparse file */ - GNUSparse = 10, - /** Global extended header */ - XGlobalHeader = 11, - /** Extended Header */ - XHeader = 12 -} diff --git a/sdks/nodejs/node_modules/@napi-rs/tar/index.js b/sdks/nodejs/node_modules/@napi-rs/tar/index.js deleted file mode 100644 index 0d8bdcf..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/tar/index.js +++ /dev/null @@ -1,517 +0,0 @@ -// prettier-ignore -/* eslint-disable */ -// @ts-nocheck -/* auto-generated by NAPI-RS */ - -const { createRequire } = require('node:module') -require = createRequire(__filename) - -const { readFileSync } = require('node:fs') -let nativeBinding = null -const loadErrors = [] - -const isMusl = () => { - let musl = false - if (process.platform === 'linux') { - musl = isMuslFromFilesystem() - if (musl === null) { - musl = isMuslFromReport() - } - if (musl === null) { - musl = isMuslFromChildProcess() - } - } - return musl -} - -const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-') - -const isMuslFromFilesystem = () => { - try { - return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl') - } catch { - return null - } -} - -const isMuslFromReport = () => { - let report = null - if (typeof process.report?.getReport === 'function') { - process.report.excludeNetwork = true - report = process.report.getReport() - } - if (!report) { - return null - } - if (report.header && report.header.glibcVersionRuntime) { - return false - } - if (Array.isArray(report.sharedObjects)) { - if (report.sharedObjects.some(isFileMusl)) { - return true - } - } - return false -} - -const isMuslFromChildProcess = () => { - try { - return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl') - } catch (e) { - // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false - return false - } -} - -function requireNative() { - if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) { - try { - nativeBinding = require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH); - } catch (err) { - loadErrors.push(err) - } - } else if (process.platform === 'android') { - if (process.arch === 'arm64') { - try { - return require('./tar.android-arm64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-android-arm64') - const bindingPackageVersion = require('@napi-rs/tar-android-arm64/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm') { - try { - return require('./tar.android-arm-eabi.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-android-arm-eabi') - const bindingPackageVersion = require('@napi-rs/tar-android-arm-eabi/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`)) - } - } else if (process.platform === 'win32') { - if (process.arch === 'x64') { - try { - return require('./tar.win32-x64-msvc.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-win32-x64-msvc') - const bindingPackageVersion = require('@napi-rs/tar-win32-x64-msvc/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'ia32') { - try { - return require('./tar.win32-ia32-msvc.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-win32-ia32-msvc') - const bindingPackageVersion = require('@napi-rs/tar-win32-ia32-msvc/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm64') { - try { - return require('./tar.win32-arm64-msvc.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-win32-arm64-msvc') - const bindingPackageVersion = require('@napi-rs/tar-win32-arm64-msvc/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`)) - } - } else if (process.platform === 'darwin') { - try { - return require('./tar.darwin-universal.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-darwin-universal') - const bindingPackageVersion = require('@napi-rs/tar-darwin-universal/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - if (process.arch === 'x64') { - try { - return require('./tar.darwin-x64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-darwin-x64') - const bindingPackageVersion = require('@napi-rs/tar-darwin-x64/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm64') { - try { - return require('./tar.darwin-arm64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-darwin-arm64') - const bindingPackageVersion = require('@napi-rs/tar-darwin-arm64/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`)) - } - } else if (process.platform === 'freebsd') { - if (process.arch === 'x64') { - try { - return require('./tar.freebsd-x64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-freebsd-x64') - const bindingPackageVersion = require('@napi-rs/tar-freebsd-x64/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm64') { - try { - return require('./tar.freebsd-arm64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-freebsd-arm64') - const bindingPackageVersion = require('@napi-rs/tar-freebsd-arm64/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`)) - } - } else if (process.platform === 'linux') { - if (process.arch === 'x64') { - if (isMusl()) { - try { - return require('./tar.linux-x64-musl.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-linux-x64-musl') - const bindingPackageVersion = require('@napi-rs/tar-linux-x64-musl/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - try { - return require('./tar.linux-x64-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-linux-x64-gnu') - const bindingPackageVersion = require('@napi-rs/tar-linux-x64-gnu/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } - } else if (process.arch === 'arm64') { - if (isMusl()) { - try { - return require('./tar.linux-arm64-musl.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-linux-arm64-musl') - const bindingPackageVersion = require('@napi-rs/tar-linux-arm64-musl/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - try { - return require('./tar.linux-arm64-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-linux-arm64-gnu') - const bindingPackageVersion = require('@napi-rs/tar-linux-arm64-gnu/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } - } else if (process.arch === 'arm') { - if (isMusl()) { - try { - return require('./tar.linux-arm-musleabihf.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-linux-arm-musleabihf') - const bindingPackageVersion = require('@napi-rs/tar-linux-arm-musleabihf/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - try { - return require('./tar.linux-arm-gnueabihf.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-linux-arm-gnueabihf') - const bindingPackageVersion = require('@napi-rs/tar-linux-arm-gnueabihf/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } - } else if (process.arch === 'riscv64') { - if (isMusl()) { - try { - return require('./tar.linux-riscv64-musl.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-linux-riscv64-musl') - const bindingPackageVersion = require('@napi-rs/tar-linux-riscv64-musl/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - try { - return require('./tar.linux-riscv64-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-linux-riscv64-gnu') - const bindingPackageVersion = require('@napi-rs/tar-linux-riscv64-gnu/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } - } else if (process.arch === 'ppc64') { - try { - return require('./tar.linux-ppc64-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-linux-ppc64-gnu') - const bindingPackageVersion = require('@napi-rs/tar-linux-ppc64-gnu/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 's390x') { - try { - return require('./tar.linux-s390x-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-linux-s390x-gnu') - const bindingPackageVersion = require('@napi-rs/tar-linux-s390x-gnu/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`)) - } - } else if (process.platform === 'openharmony') { - if (process.arch === 'arm64') { - try { - return require('./tar.openharmony-arm64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-openharmony-arm64') - const bindingPackageVersion = require('@napi-rs/tar-openharmony-arm64/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'x64') { - try { - return require('./tar.openharmony-x64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-openharmony-x64') - const bindingPackageVersion = require('@napi-rs/tar-openharmony-x64/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm') { - try { - return require('./tar.openharmony-arm.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/tar-openharmony-arm') - const bindingPackageVersion = require('@napi-rs/tar-openharmony-arm/package.json').version - if (bindingPackageVersion !== '1.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`)) - } - } else { - loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`)) - } -} - -nativeBinding = requireNative() - -if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) { - try { - nativeBinding = require('./tar.wasi.cjs') - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - loadErrors.push(err) - } - } - if (!nativeBinding) { - try { - nativeBinding = require('@napi-rs/tar-wasm32-wasi') - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - loadErrors.push(err) - } - } - } -} - -if (!nativeBinding) { - if (loadErrors.length > 0) { - throw new Error( - `Cannot find native binding. ` + - `npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` + - 'Please try `npm i` again after removing both package-lock.json and node_modules directory.', - { cause: loadErrors } - ) - } - throw new Error(`Failed to load native binding`) -} - -module.exports = nativeBinding -module.exports.Archive = nativeBinding.Archive -module.exports.Builder = nativeBinding.Builder -module.exports.Entries = nativeBinding.Entries -module.exports.Entry = nativeBinding.Entry -module.exports.Header = nativeBinding.Header -module.exports.ReadonlyHeader = nativeBinding.ReadonlyHeader -module.exports.EntryType = nativeBinding.EntryType diff --git a/sdks/nodejs/node_modules/@napi-rs/tar/package.json b/sdks/nodejs/node_modules/@napi-rs/tar/package.json deleted file mode 100644 index 20639c2..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/tar/package.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "name": "@napi-rs/tar", - "version": "1.1.0", - "description": "Node.js tar binding https://docs.rs/tar/latest/tar/", - "main": "index.js", - "browser": "browser.js", - "repository": "git@github.com:napi-rs/tar.git", - "license": "MIT", - "keywords": [ - "napi-rs", - "NAPI", - "N-API", - "Rust", - "node-addon", - "node-addon-api" - ], - "files": [ - "index.d.ts", - "index.js", - "browser.js" - ], - "napi": { - "binaryName": "tar", - "targets": [ - "x86_64-pc-windows-msvc", - "x86_64-apple-darwin", - "x86_64-unknown-linux-gnu", - "x86_64-unknown-linux-musl", - "aarch64-unknown-linux-gnu", - "i686-pc-windows-msvc", - "armv7-unknown-linux-gnueabihf", - "aarch64-apple-darwin", - "aarch64-linux-android", - "x86_64-unknown-freebsd", - "aarch64-unknown-linux-musl", - "aarch64-pc-windows-msvc", - "armv7-linux-androideabi", - "powerpc64le-unknown-linux-gnu", - "s390x-unknown-linux-gnu", - "wasm32-wasip1-threads" - ] - }, - "engines": { - "node": ">= 10" - }, - "publishConfig": { - "registry": "https://registry.npmjs.org/", - "access": "public" - }, - "scripts": { - "artifacts": "napi artifacts", - "bench": "node --import @oxc-node/core/register benchmark/bench.ts", - "build": "napi build --platform --release", - "build:debug": "napi build --platform", - "format": "run-p format:prettier format:rs format:toml", - "format:prettier": "prettier . -w", - "format:toml": "taplo format", - "format:rs": "cargo fmt", - "lint": "oxlint .", - "prepublishOnly": "napi pre-publish -t npm", - "test": "ava", - "version": "napi version" - }, - "devDependencies": { - "@napi-rs/cli": "^3.1.3", - "@napi-rs/lzma": "^1.4.4", - "@napi-rs/wasm-runtime": "^1.0.3", - "@oxc-node/core": "^0.0.32", - "@taplo/cli": "^0.7.0", - "@types/node": "^24.2.1", - "@types/tar": "^6", - "ava": "^6.4.1", - "chalk": "^5.5.0", - "husky": "^9.1.7", - "lint-staged": "^16.1.5", - "npm-run-all2": "^8.0.4", - "oxlint": "^1.11.1", - "prettier": "^3.6.2", - "tar": "^7.4.3", - "tinybench": "^4.0.1", - "typescript": "^5.9.2" - }, - "lint-staged": { - "*.@(js|ts|tsx)": [ - "eslint -c .eslintrc.yml --fix" - ], - "*.@(js|ts|tsx|yml|yaml|md|json)": [ - "prettier --write" - ], - "*.toml": [ - "taplo format" - ] - }, - "ava": { - "extensions": { - "ts": "module" - }, - "timeout": "2m", - "workerThreads": false, - "nodeArguments": [ - "--import", - "@oxc-node/core/register" - ], - "environmentVariables": { - "TS_NODE_PROJECT": "./tsconfig.json" - } - }, - "prettier": { - "printWidth": 120, - "semi": false, - "trailingComma": "all", - "singleQuote": true, - "arrowParens": "always" - }, - "packageManager": "yarn@4.9.2", - "resolutions": { - "@napi-rs/tar": "workspace:*" - }, - "optionalDependencies": { - "@napi-rs/tar-win32-x64-msvc": "1.1.0", - "@napi-rs/tar-darwin-x64": "1.1.0", - "@napi-rs/tar-linux-x64-gnu": "1.1.0", - "@napi-rs/tar-linux-x64-musl": "1.1.0", - "@napi-rs/tar-linux-arm64-gnu": "1.1.0", - "@napi-rs/tar-win32-ia32-msvc": "1.1.0", - "@napi-rs/tar-linux-arm-gnueabihf": "1.1.0", - "@napi-rs/tar-darwin-arm64": "1.1.0", - "@napi-rs/tar-android-arm64": "1.1.0", - "@napi-rs/tar-freebsd-x64": "1.1.0", - "@napi-rs/tar-linux-arm64-musl": "1.1.0", - "@napi-rs/tar-win32-arm64-msvc": "1.1.0", - "@napi-rs/tar-android-arm-eabi": "1.1.0", - "@napi-rs/tar-linux-ppc64-gnu": "1.1.0", - "@napi-rs/tar-linux-s390x-gnu": "1.1.0", - "@napi-rs/tar-wasm32-wasi": "1.1.0" - } -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs b/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs deleted file mode 100644 index 209f06c..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +++ /dev/null @@ -1,264 +0,0 @@ -'use strict'; - -// @ts-check - -/** - * @param {unknown} value - */ -const getType = (value) => { - if (value === undefined) return 0 - if (value === null) return 1 - const t = typeof value; - if (t === 'boolean') return 2 - if (t === 'number') return 3 - if (t === 'string') return 4 - if (t === 'object') return 6 - if (t === 'bigint') return 9 - return -1 -}; - -/** - * @param {import('memfs').IFs} memfs - * @param {any} value - * @param {ReturnType} type - * @returns {Uint8Array} - */ -const encodeValue = (memfs, value, type) => { - switch (type) { - case 0: - case 1: - return new Uint8Array(0) - case 2: { - const view = new Int32Array(1); - view[0] = value ? 1 : 0; - return new Uint8Array(view.buffer) - } - case 3: { - const view = new Float64Array(1); - view[0] = value; - return new Uint8Array(view.buffer) - } - case 4: { - const view = new TextEncoder().encode(value); - return view - } - case 6: { - function storeConstructor(obj, memfs, processed = new WeakSet()) { - if (!obj || typeof obj !== 'object') { - return - } - - if (processed.has(obj)) { - return - } - - processed.add(obj); - - const [entry] = - Object.entries(memfs).filter(([_, v]) => v === obj.constructor)[0] ?? - []; - if (entry) { - Object.defineProperty(obj, '__constructor__', { - configurable: true, - writable: true, - enumerable: true, - value: entry, - }); - } - - for (const value of Object.values(obj)) { - storeConstructor(value, memfs, processed); - } - } - - storeConstructor(value, memfs); - - const json = JSON.stringify(value, (_, value) => { - if (typeof value === 'bigint') { - return `BigInt(${String(value)})` - } - if (value instanceof Error) { - return { - ...value, - message: value.message, - stack: value.stack, - __error__: value.constructor.name, - } - } - return value - }); - const view = new TextEncoder().encode(json); - return view - } - case 9: { - const view = new BigInt64Array(1); - view[0] = value; - return new Uint8Array(view.buffer) - } - case -1: - default: - throw new Error('unsupported data') - } -}; - -/** - * @param {typeof import('memfs')} memfs - * @param {Uint8Array} payload - * @param {number} type - * @returns {any} - */ -const decodeValue = (memfs, payload, type) => { - if (type === 0) return undefined - if (type === 1) return null - if (type === 2) - return Boolean(new Int32Array(payload.buffer, payload.byteOffset, 1)[0]) - if (type === 3) - return new Float64Array(payload.buffer, payload.byteOffset, 1)[0] - if (type === 4) return new TextDecoder().decode(payload.slice()) - if (type === 6) { - const obj = JSON.parse( - new TextDecoder().decode(payload.slice()), - (_key, value) => { - if (typeof value === 'string') { - const matched = value.match(/^BigInt\((-?\d+)\)$/); - if (matched && matched[1]) { - return BigInt(matched[1]) - } - } - return value - }, - ); - - function loadConstructor(obj, memfs, processed = new WeakSet()) { - if (!obj || typeof obj !== 'object') { - return - } - - if (processed.has(obj)) { - return - } - - processed.add(obj); - - if (obj.__constructor__) { - const ctor = obj.__constructor__; - delete obj.__constructor__; - Object.setPrototypeOf(obj, memfs[ctor].prototype); - } - - for (const value of Object.values(obj)) { - loadConstructor(value, memfs, processed); - } - } - - loadConstructor(obj, memfs); - - if (obj.__error__) { - const name = obj.__error__; - const ErrorConstructor = globalThis[name] || Error; - delete obj.__error__; - const err = new ErrorConstructor(obj.message); - Object.defineProperty(err, 'stack', { - configurable: true, - enumerable: false, - writable: true, - value: err.stack, - }); - Object.defineProperty(err, Symbol.toStringTag, { - configurable: true, - enumerable: false, - writable: true, - value: name, - }); - for (const [k, v] of Object.entries(obj)) { - if (k === 'message' || k === 'stack') continue - err[k] = v; - } - return err - } - return obj - } - if (type === 9) - return new BigInt64Array(payload.buffer, payload.byteOffset, 1)[0] - throw new Error('unsupported data') -}; - -/** - * @param {import('memfs').IFs} fs - * @returns {(e: { data: { __fs__: { sab: Int32Array, type: keyof import('memfs').IFs, payload: any[] } } }) => void} - */ -// oxlint-disable-next-line no-unused-vars -- fixed in an upcoming release -const createOnMessage = (fs) => - function onMessage(e) { - if (e.data.__fs__) { - /** - * 0..4 status(int32_t): 21(waiting) 0(success) 1(error) - * 5..8 type(napi_valuetype): 0(undefined) 1(null) 2(boolean) 3(number) 4(string) 6(jsonstring) 9(bigint) -1(unsupported) - * 9..16 payload_size(uint32_t) <= 1024 - * 16..16 + payload_size payload_content - */ - const { sab, type, payload } = e.data.__fs__; - const fn = fs[type]; - try { - const ret = fn.apply(fs, payload); - const t = getType(ret); - Atomics.store(sab, 1, t); - const v = encodeValue(fs, ret, t); - Atomics.store(sab, 2, v.length); - new Uint8Array(sab.buffer).set(v, 16); - Atomics.store(sab, 0, 0); // success - } catch (/** @type {any} */ err) { - const t = getType(err); - Atomics.store(sab, 1, t); - const v = encodeValue(fs, err, t); - Atomics.store(sab, 2, v.length); - new Uint8Array(sab.buffer).set(v, 16); - Atomics.store(sab, 0, 1); // error - } finally { - Atomics.notify(sab, 0); - } - } - }; - -/** - * @param {typeof import('memfs')} memfs - */ -const createFsProxy = (memfs) => - new Proxy( - {}, - { - get(_target, p, _receiver) { - /** - * @param {any[]} args - */ - return function (...args) { - const sab = new SharedArrayBuffer(16 + 10240); - const i32arr = new Int32Array(sab); - Atomics.store(i32arr, 0, 21); - - postMessage({ - __fs__: { - sab: i32arr, - type: p, - payload: args, - }, - }); - - Atomics.wait(i32arr, 0, 21); - - const status = Atomics.load(i32arr, 0); - const type = Atomics.load(i32arr, 1); - const size = Atomics.load(i32arr, 2); - const content = new Uint8Array(sab, 16, size); - const value = decodeValue(memfs, content, type); - if (status === 1) { - throw value - } - return value - } - }, - }, - ); - -exports.createFsProxy = createFsProxy; -exports.createOnMessage = createOnMessage; diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/dist/fs.js b/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/dist/fs.js deleted file mode 100644 index 432cdef..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/dist/fs.js +++ /dev/null @@ -1,20983 +0,0 @@ -function _mergeNamespaces(n, m) { - m.forEach(function (e) { - e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) { - if (k !== 'default' && !(k in n)) { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { return e[k]; } - }); - } - }); - }); - return Object.freeze(n); -} - -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof undefined !== 'undefined' ? undefined : typeof self !== 'undefined' ? self : {}; - -function getDefaultExportFromCjs (x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; -} - -function getAugmentedNamespace(n) { - if (Object.prototype.hasOwnProperty.call(n, '__esModule')) return n; - var f = n.default; - if (typeof f == "function") { - var a = function a () { - var isInstance = false; - try { - isInstance = this instanceof a; - } catch {} - if (isInstance) { - return Reflect.construct(f, arguments, this.constructor); - } - return f.apply(this, arguments); - }; - a.prototype = f.prototype; - } else a = {}; - Object.defineProperty(a, '__esModule', {value: true}); - Object.keys(n).forEach(function (k) { - var d = Object.getOwnPropertyDescriptor(n, k); - Object.defineProperty(a, k, d.get ? d : { - enumerable: true, - get: function () { - return n[k]; - } - }); - }); - return a; -} - -var lib$3 = {exports: {}}; - -var Stats = {}; - -var constants$1 = {}; - -var hasRequiredConstants$1; - -function requireConstants$1 () { - if (hasRequiredConstants$1) return constants$1; - hasRequiredConstants$1 = 1; - Object.defineProperty(constants$1, "__esModule", { value: true }); - constants$1.constants = constants$1.SEP = void 0; - constants$1.SEP = '/'; - constants$1.constants = { - O_RDONLY: 0, - O_WRONLY: 1, - O_RDWR: 2, - S_IFMT: 61440, - S_IFREG: 32768, - S_IFDIR: 16384, - S_IFCHR: 8192, - S_IFBLK: 24576, - S_IFIFO: 4096, - S_IFLNK: 40960, - S_IFSOCK: 49152, - O_CREAT: 64, - O_EXCL: 128, - O_NOCTTY: 256, - O_TRUNC: 512, - O_APPEND: 1024, - O_DIRECTORY: 65536, - O_NOATIME: 262144, - O_NOFOLLOW: 131072, - O_SYNC: 1052672, - O_SYMLINK: 2097152, - O_DIRECT: 16384, - O_NONBLOCK: 2048, - S_IRWXU: 448, - S_IRUSR: 256, - S_IWUSR: 128, - S_IXUSR: 64, - S_IRWXG: 56, - S_IRGRP: 32, - S_IWGRP: 16, - S_IXGRP: 8, - S_IRWXO: 7, - S_IROTH: 4, - S_IWOTH: 2, - S_IXOTH: 1, - F_OK: 0, - R_OK: 4, - W_OK: 2, - X_OK: 1, - UV_FS_SYMLINK_DIR: 1, - UV_FS_SYMLINK_JUNCTION: 2, - UV_FS_COPYFILE_EXCL: 1, - UV_FS_COPYFILE_FICLONE: 2, - UV_FS_COPYFILE_FICLONE_FORCE: 4, - COPYFILE_EXCL: 1, - COPYFILE_FICLONE: 2, - COPYFILE_FICLONE_FORCE: 4, - }; - - return constants$1; -} - -var hasRequiredStats; - -function requireStats () { - if (hasRequiredStats) return Stats; - hasRequiredStats = 1; - Object.defineProperty(Stats, "__esModule", { value: true }); - Stats.Stats = void 0; - const constants_1 = requireConstants$1(); - const { S_IFMT, S_IFDIR, S_IFREG, S_IFBLK, S_IFCHR, S_IFLNK, S_IFIFO, S_IFSOCK } = constants_1.constants; - /** - * Statistics about a file/directory, like `fs.Stats`. - */ - let Stats$1 = class Stats { - static build(node, bigint = false) { - const stats = new Stats(); - const { uid, gid, atime, mtime, ctime } = node; - const getStatNumber = !bigint ? number => number : number => BigInt(number); - // Copy all values on Stats from Node, so that if Node values - // change, values on Stats would still be the old ones, - // just like in Node fs. - stats.uid = getStatNumber(uid); - stats.gid = getStatNumber(gid); - stats.rdev = getStatNumber(node.rdev); - stats.blksize = getStatNumber(4096); - stats.ino = getStatNumber(node.ino); - stats.size = getStatNumber(node.getSize()); - stats.blocks = getStatNumber(1); - stats.atime = atime; - stats.mtime = mtime; - stats.ctime = ctime; - stats.birthtime = ctime; - stats.atimeMs = getStatNumber(atime.getTime()); - stats.mtimeMs = getStatNumber(mtime.getTime()); - const ctimeMs = getStatNumber(ctime.getTime()); - stats.ctimeMs = ctimeMs; - stats.birthtimeMs = ctimeMs; - if (bigint) { - stats.atimeNs = BigInt(atime.getTime()) * BigInt(1000000); - stats.mtimeNs = BigInt(mtime.getTime()) * BigInt(1000000); - const ctimeNs = BigInt(ctime.getTime()) * BigInt(1000000); - stats.ctimeNs = ctimeNs; - stats.birthtimeNs = ctimeNs; - } - stats.dev = getStatNumber(0); - stats.mode = getStatNumber(node.mode); - stats.nlink = getStatNumber(node.nlink); - return stats; - } - _checkModeProperty(property) { - return (Number(this.mode) & S_IFMT) === property; - } - isDirectory() { - return this._checkModeProperty(S_IFDIR); - } - isFile() { - return this._checkModeProperty(S_IFREG); - } - isBlockDevice() { - return this._checkModeProperty(S_IFBLK); - } - isCharacterDevice() { - return this._checkModeProperty(S_IFCHR); - } - isSymbolicLink() { - return this._checkModeProperty(S_IFLNK); - } - isFIFO() { - return this._checkModeProperty(S_IFIFO); - } - isSocket() { - return this._checkModeProperty(S_IFSOCK); - } - }; - Stats.Stats = Stats$1; - Stats.default = Stats$1; - - return Stats; -} - -var Dirent = {}; - -var encoding = {}; - -var buffer$2 = {}; - -var buffer$1 = {}; - -var base64Js = {}; - -var hasRequiredBase64Js; - -function requireBase64Js () { - if (hasRequiredBase64Js) return base64Js; - hasRequiredBase64Js = 1; - - base64Js.byteLength = byteLength; - base64Js.toByteArray = toByteArray; - base64Js.fromByteArray = fromByteArray; - - var lookup = []; - var revLookup = []; - var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; - - var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i]; - revLookup[code.charCodeAt(i)] = i; - } - - // Support decoding URL-safe base64 strings, as Node.js does. - // See: https://en.wikipedia.org/wiki/Base64#URL_applications - revLookup['-'.charCodeAt(0)] = 62; - revLookup['_'.charCodeAt(0)] = 63; - - function getLens (b64) { - var len = b64.length; - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - var validLen = b64.indexOf('='); - if (validLen === -1) validLen = len; - - var placeHoldersLen = validLen === len - ? 0 - : 4 - (validLen % 4); - - return [validLen, placeHoldersLen] - } - - // base64 is 4/3 + up to two characters of the original data - function byteLength (b64) { - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen - } - - function _byteLength (b64, validLen, placeHoldersLen) { - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen - } - - function toByteArray (b64) { - var tmp; - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); - - var curByte = 0; - - // if there are placeholders, only get up to the last complete 4 chars - var len = placeHoldersLen > 0 - ? validLen - 4 - : validLen; - - var i; - for (i = 0; i < len; i += 4) { - tmp = - (revLookup[b64.charCodeAt(i)] << 18) | - (revLookup[b64.charCodeAt(i + 1)] << 12) | - (revLookup[b64.charCodeAt(i + 2)] << 6) | - revLookup[b64.charCodeAt(i + 3)]; - arr[curByte++] = (tmp >> 16) & 0xFF; - arr[curByte++] = (tmp >> 8) & 0xFF; - arr[curByte++] = tmp & 0xFF; - } - - if (placeHoldersLen === 2) { - tmp = - (revLookup[b64.charCodeAt(i)] << 2) | - (revLookup[b64.charCodeAt(i + 1)] >> 4); - arr[curByte++] = tmp & 0xFF; - } - - if (placeHoldersLen === 1) { - tmp = - (revLookup[b64.charCodeAt(i)] << 10) | - (revLookup[b64.charCodeAt(i + 1)] << 4) | - (revLookup[b64.charCodeAt(i + 2)] >> 2); - arr[curByte++] = (tmp >> 8) & 0xFF; - arr[curByte++] = tmp & 0xFF; - } - - return arr - } - - function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + - lookup[num >> 12 & 0x3F] + - lookup[num >> 6 & 0x3F] + - lookup[num & 0x3F] - } - - function encodeChunk (uint8, start, end) { - var tmp; - var output = []; - for (var i = start; i < end; i += 3) { - tmp = - ((uint8[i] << 16) & 0xFF0000) + - ((uint8[i + 1] << 8) & 0xFF00) + - (uint8[i + 2] & 0xFF); - output.push(tripletToBase64(tmp)); - } - return output.join('') - } - - function fromByteArray (uint8) { - var tmp; - var len = uint8.length; - var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes - var parts = []; - var maxChunkLength = 16383; // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1]; - parts.push( - lookup[tmp >> 2] + - lookup[(tmp << 4) & 0x3F] + - '==' - ); - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1]; - parts.push( - lookup[tmp >> 10] + - lookup[(tmp >> 4) & 0x3F] + - lookup[(tmp << 2) & 0x3F] + - '=' - ); - } - - return parts.join('') - } - return base64Js; -} - -var base64JsExports = requireBase64Js(); - -var ieee754 = {}; - -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ - -var hasRequiredIeee754; - -function requireIeee754 () { - if (hasRequiredIeee754) return ieee754; - hasRequiredIeee754 = 1; - ieee754.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m; - var eLen = (nBytes * 8) - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var nBits = -7; - var i = isLE ? (nBytes - 1) : 0; - var d = isLE ? -1 : 1; - var s = buffer[offset + i]; - - i += d; - - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) - }; - - ieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c; - var eLen = (nBytes * 8) - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); - var i = isLE ? 0 : (nBytes - 1); - var d = isLE ? 1 : -1; - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = ((value * c) - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128; - }; - return ieee754; -} - -var ieee754Exports = requireIeee754(); - -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/* eslint-disable no-proto */ - -const customInspectSymbol = - (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation - ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation - : null; - -const INSPECT_MAX_BYTES = 50; - -const K_MAX_LENGTH = 0x7fffffff; -const kMaxLength = K_MAX_LENGTH; - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Print warning and recommend using `buffer` v4.x which has an Object - * implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * We report that the browser does not support typed arrays if the are not subclassable - * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` - * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support - * for __proto__ and has a buggy typed array implementation. - */ -Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport(); - -if (!Buffer.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 typedArraySupport () { - // Can typed array instances can be augmented? - try { - const arr = new Uint8Array(1); - const proto = { foo: function () { return 42 } }; - Object.setPrototypeOf(proto, Uint8Array.prototype); - Object.setPrototypeOf(arr, proto); - return arr.foo() === 42 - } catch (e) { - return false - } -} - -Object.defineProperty(Buffer.prototype, 'parent', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.buffer - } -}); - -Object.defineProperty(Buffer.prototype, 'offset', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.byteOffset - } -}); - -function createBuffer (length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"') - } - // Return an augmented `Uint8Array` instance - const buf = new Uint8Array(length); - Object.setPrototypeOf(buf, Buffer.prototype); - return buf -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new TypeError( - 'The "string" argument must be of type string. Received type number' - ) - } - return allocUnsafe(arg) - } - return from(arg, encodingOrOffset, length) -} - -Buffer.poolSize = 8192; // not used by this implementation - -function from (value, encodingOrOffset, length) { - if (typeof value === 'string') { - return fromString(value, encodingOrOffset) - } - - if (ArrayBuffer.isView(value)) { - return fromArrayView(value) - } - - if (value == null) { - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) - } - - if (isInstance(value, ArrayBuffer) || - (value && isInstance(value.buffer, ArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof SharedArrayBuffer !== 'undefined' && - (isInstance(value, SharedArrayBuffer) || - (value && isInstance(value.buffer, SharedArrayBuffer)))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof value === 'number') { - throw new TypeError( - 'The "value" argument must not be of type number. Received type number' - ) - } - - const valueOf = value.valueOf && value.valueOf(); - if (valueOf != null && valueOf !== value) { - return Buffer.from(valueOf, encodingOrOffset, length) - } - - const b = fromObject(value); - if (b) return b - - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && - typeof value[Symbol.toPrimitive] === 'function') { - return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length) - } - - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length) -}; - -// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: -// https://github.com/feross/buffer/pull/148 -Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype); -Object.setPrototypeOf(Buffer, Uint8Array); - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be of type number') - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } -} - -function alloc (size, fill, encoding) { - assertSize(size); - if (size <= 0) { - return createBuffer(size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpreted as a start offset. - return typeof encoding === 'string' - ? createBuffer(size).fill(fill, encoding) - : createBuffer(size).fill(fill) - } - return createBuffer(size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(size, fill, encoding) -}; - -function allocUnsafe (size) { - assertSize(size); - return createBuffer(size < 0 ? 0 : checked(size) | 0) -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(size) -}; -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(size) -}; - -function fromString (string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8'; - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - - const length = byteLength(string, encoding) | 0; - let buf = createBuffer(length); - - const actual = buf.write(string, encoding); - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - buf = buf.slice(0, actual); - } - - return buf -} - -function fromArrayLike (array) { - const length = array.length < 0 ? 0 : checked(array.length) | 0; - const buf = createBuffer(length); - for (let i = 0; i < length; i += 1) { - buf[i] = array[i] & 255; - } - return buf -} - -function fromArrayView (arrayView) { - if (isInstance(arrayView, Uint8Array)) { - const copy = new Uint8Array(arrayView); - return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength) - } - return fromArrayLike(arrayView) -} - -function fromArrayBuffer (array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds') - } - - let buf; - if (byteOffset === undefined && length === undefined) { - buf = new Uint8Array(array); - } else if (length === undefined) { - buf = new Uint8Array(array, byteOffset); - } else { - buf = new Uint8Array(array, byteOffset, length); - } - - // Return an augmented `Uint8Array` instance - Object.setPrototypeOf(buf, Buffer.prototype); - - return buf -} - -function fromObject (obj) { - if (Buffer.isBuffer(obj)) { - const len = checked(obj.length) | 0; - const buf = createBuffer(len); - - if (buf.length === 0) { - return buf - } - - obj.copy(buf, 0, 0, len); - return buf - } - - if (obj.length !== undefined) { - if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { - return createBuffer(0) - } - return fromArrayLike(obj) - } - - if (obj.type === 'Buffer' && Array.isArray(obj.data)) { - return fromArrayLike(obj.data) - } -} - -function checked (length) { - // Note: cannot use `length < K_MAX_LENGTH` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= K_MAX_LENGTH) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0; - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return b != null && b._isBuffer === true && - b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false -}; - -Buffer.compare = function compare (a, b) { - if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength); - if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength); - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError( - 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' - ) - } - - if (a === b) return 0 - - let x = a.length; - let y = b.length; - - for (let i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -}; - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -}; - -Buffer.concat = function concat (list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - let i; - if (length === undefined) { - length = 0; - for (i = 0; i < list.length; ++i) { - length += list[i].length; - } - } - - const buffer = Buffer.allocUnsafe(length); - let pos = 0; - for (i = 0; i < list.length; ++i) { - let buf = list[i]; - if (isInstance(buf, Uint8Array)) { - if (pos + buf.length > buffer.length) { - if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf); - buf.copy(buffer, pos); - } else { - Uint8Array.prototype.set.call( - buffer, - buf, - pos - ); - } - } else if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } else { - buf.copy(buffer, pos); - } - pos += buf.length; - } - return buffer -}; - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - throw new TypeError( - 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + - 'Received type ' + typeof string - ) - } - - const len = string.length; - const mustMatch = (arguments.length > 2 && arguments[2] === true); - if (!mustMatch && len === 0) return 0 - - // Use a for loop to avoid recursion - let loweredCase = false; - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 - } - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -} -Buffer.byteLength = byteLength; - -function slowToString (encoding, start, end) { - let loweredCase = false; - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0; - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length; - } - - if (end <= 0) { - return '' - } - - // Force coercion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0; - start >>>= 0; - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8'; - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase(); - loweredCase = true; - } - } -} - -// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) -// to detect a Buffer instance. It's not possible to use `instanceof Buffer` -// reliably in a browserify context because there could be multiple different -// copies of the 'buffer' package in use. This method works even for Buffer -// instances that were created from another copy of the `buffer` package. -// See: https://github.com/feross/buffer/issues/154 -Buffer.prototype._isBuffer = true; - -function swap (b, n, m) { - const i = b[n]; - b[n] = b[m]; - b[m] = i; -} - -Buffer.prototype.swap16 = function swap16 () { - const len = this.length; - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (let i = 0; i < len; i += 2) { - swap(this, i, i + 1); - } - return this -}; - -Buffer.prototype.swap32 = function swap32 () { - const len = this.length; - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (let i = 0; i < len; i += 4) { - swap(this, i, i + 3); - swap(this, i + 1, i + 2); - } - return this -}; - -Buffer.prototype.swap64 = function swap64 () { - const len = this.length; - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (let i = 0; i < len; i += 8) { - swap(this, i, i + 7); - swap(this, i + 1, i + 6); - swap(this, i + 2, i + 5); - swap(this, i + 3, i + 4); - } - return this -}; - -Buffer.prototype.toString = function toString () { - const length = this.length; - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -}; - -Buffer.prototype.toLocaleString = Buffer.prototype.toString; - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -}; - -Buffer.prototype.inspect = function inspect () { - let str = ''; - const max = INSPECT_MAX_BYTES; - str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim(); - if (this.length > max) str += ' ... '; - return '' -}; -if (customInspectSymbol) { - Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect; -} - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer.from(target, target.offset, target.byteLength); - } - if (!Buffer.isBuffer(target)) { - throw new TypeError( - 'The "target" argument must be one of type Buffer or Uint8Array. ' + - 'Received type ' + (typeof target) - ) - } - - if (start === undefined) { - start = 0; - } - if (end === undefined) { - end = target ? target.length : 0; - } - if (thisStart === undefined) { - thisStart = 0; - } - if (thisEnd === undefined) { - thisEnd = this.length; - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0; - end >>>= 0; - thisStart >>>= 0; - thisEnd >>>= 0; - - if (this === target) return 0 - - let x = thisEnd - thisStart; - let y = end - start; - const len = Math.min(x, y); - - const thisCopy = this.slice(thisStart, thisEnd); - const targetCopy = target.slice(start, end); - - for (let i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i]; - y = targetCopy[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -}; - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset; - byteOffset = 0; - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff; - } else if (byteOffset < -2147483648) { - byteOffset = -2147483648; - } - byteOffset = +byteOffset; // Coerce to Number. - if (numberIsNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1); - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset; - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1; - } else if (byteOffset < 0) { - if (dir) byteOffset = 0; - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding); - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF; // Search for a byte value [0-255] - if (typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [val], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - let indexSize = 1; - let arrLength = arr.length; - let valLength = val.length; - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase(); - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2; - arrLength /= 2; - valLength /= 2; - byteOffset /= 2; - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - let i; - if (dir) { - let foundIndex = -1; - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i; - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex; - foundIndex = -1; - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; - for (i = byteOffset; i >= 0; i--) { - let found = true; - for (let j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false; - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -}; - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -}; - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -}; - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0; - const remaining = buf.length - offset; - if (!length) { - length = remaining; - } else { - length = Number(length); - if (length > remaining) { - length = remaining; - } - } - - const strLen = string.length; - - if (length > strLen / 2) { - length = strLen / 2; - } - let i; - for (i = 0; i < length; ++i) { - const parsed = parseInt(string.substr(i * 2, 2), 16); - if (numberIsNaN(parsed)) return i - buf[offset + i] = parsed; - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8'; - length = this.length; - offset = 0; - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset; - length = this.length; - offset = 0; - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset >>> 0; - if (isFinite(length)) { - length = length >>> 0; - if (encoding === undefined) encoding = 'utf8'; - } else { - encoding = length; - length = undefined; - } - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - const remaining = this.length - offset; - if (length === undefined || length > remaining) length = remaining; - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8'; - - let loweredCase = false; - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - case 'latin1': - case 'binary': - return asciiWrite(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -}; - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -}; - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64JsExports.fromByteArray(buf) - } else { - return base64JsExports.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end); - const res = []; - - let i = start; - while (i < end) { - const firstByte = buf[i]; - let codePoint = null; - let bytesPerSequence = (firstByte > 0xEF) - ? 4 - : (firstByte > 0xDF) - ? 3 - : (firstByte > 0xBF) - ? 2 - : 1; - - if (i + bytesPerSequence <= end) { - let secondByte, thirdByte, fourthByte, tempCodePoint; - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte; - } - break - case 2: - secondByte = buf[i + 1]; - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint; - } - } - break - case 3: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint; - } - } - break - case 4: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - fourthByte = buf[i + 3]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint; - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD; - bytesPerSequence = 1; - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000; - res.push(codePoint >>> 10 & 0x3FF | 0xD800); - codePoint = 0xDC00 | codePoint & 0x3FF; - } - - res.push(codePoint); - i += bytesPerSequence; - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -const MAX_ARGUMENTS_LENGTH = 0x1000; - -function decodeCodePointsArray (codePoints) { - const len = codePoints.length; - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - let res = ''; - let i = 0; - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ); - } - return res -} - -function asciiSlice (buf, start, end) { - let ret = ''; - end = Math.min(buf.length, end); - - for (let i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F); - } - return ret -} - -function latin1Slice (buf, start, end) { - let ret = ''; - end = Math.min(buf.length, end); - - for (let i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]); - } - return ret -} - -function hexSlice (buf, start, end) { - const len = buf.length; - - if (!start || start < 0) start = 0; - if (!end || end < 0 || end > len) end = len; - - let out = ''; - for (let i = start; i < end; ++i) { - out += hexSliceLookupTable[buf[i]]; - } - return out -} - -function utf16leSlice (buf, start, end) { - const bytes = buf.slice(start, end); - let res = ''; - // If bytes.length is odd, the last 8 bits must be ignored (same as node.js) - for (let i = 0; i < bytes.length - 1; i += 2) { - res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)); - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - const len = this.length; - start = ~~start; - end = end === undefined ? len : ~~end; - - if (start < 0) { - start += len; - if (start < 0) start = 0; - } else if (start > len) { - start = len; - } - - if (end < 0) { - end += len; - if (end < 0) end = 0; - } else if (end > len) { - end = len; - } - - if (end < start) end = start; - - const newBuf = this.subarray(start, end); - // Return an augmented `Uint8Array` instance - Object.setPrototypeOf(newBuf, Buffer.prototype); - - return newBuf -}; - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUintLE = -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - let val = this[offset]; - let mul = 1; - let i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - - return val -}; - -Buffer.prototype.readUintBE = -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) { - checkOffset(offset, byteLength, this.length); - } - - let val = this[offset + --byteLength]; - let mul = 1; - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul; - } - - return val -}; - -Buffer.prototype.readUint8 = -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 1, this.length); - return this[offset] -}; - -Buffer.prototype.readUint16LE = -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - return this[offset] | (this[offset + 1] << 8) -}; - -Buffer.prototype.readUint16BE = -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - return (this[offset] << 8) | this[offset + 1] -}; - -Buffer.prototype.readUint32LE = -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -}; - -Buffer.prototype.readUint32BE = -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -}; - -Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) { - offset = offset >>> 0; - validateNumber(offset, 'offset'); - const first = this[offset]; - const last = this[offset + 7]; - if (first === undefined || last === undefined) { - boundsError(offset, this.length - 8); - } - - const lo = first + - this[++offset] * 2 ** 8 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 24; - - const hi = this[++offset] + - this[++offset] * 2 ** 8 + - this[++offset] * 2 ** 16 + - last * 2 ** 24; - - return BigInt(lo) + (BigInt(hi) << BigInt(32)) -}); - -Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) { - offset = offset >>> 0; - validateNumber(offset, 'offset'); - const first = this[offset]; - const last = this[offset + 7]; - if (first === undefined || last === undefined) { - boundsError(offset, this.length - 8); - } - - const hi = first * 2 ** 24 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 8 + - this[++offset]; - - const lo = this[++offset] * 2 ** 24 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 8 + - last; - - return (BigInt(hi) << BigInt(32)) + BigInt(lo) -}); - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - let val = this[offset]; - let mul = 1; - let i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val -}; - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - let i = byteLength; - let mul = 1; - let val = this[offset + --i]; - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val -}; - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 1, this.length); - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -}; - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - const val = this[offset] | (this[offset + 1] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val -}; - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - const val = this[offset + 1] | (this[offset] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val -}; - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -}; - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -}; - -Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) { - offset = offset >>> 0; - validateNumber(offset, 'offset'); - const first = this[offset]; - const last = this[offset + 7]; - if (first === undefined || last === undefined) { - boundsError(offset, this.length - 8); - } - - const val = this[offset + 4] + - this[offset + 5] * 2 ** 8 + - this[offset + 6] * 2 ** 16 + - (last << 24); // Overflow - - return (BigInt(val) << BigInt(32)) + - BigInt(first + - this[++offset] * 2 ** 8 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 24) -}); - -Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) { - offset = offset >>> 0; - validateNumber(offset, 'offset'); - const first = this[offset]; - const last = this[offset + 7]; - if (first === undefined || last === undefined) { - boundsError(offset, this.length - 8); - } - - const val = (first << 24) + // Overflow - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 8 + - this[++offset]; - - return (BigInt(val) << BigInt(32)) + - BigInt(this[++offset] * 2 ** 24 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 8 + - last) -}); - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return ieee754Exports.read(this, offset, true, 23, 4) -}; - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return ieee754Exports.read(this, offset, false, 23, 4) -}; - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754Exports.read(this, offset, true, 52, 8) -}; - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754Exports.read(this, offset, false, 52, 8) -}; - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUintLE = -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) { - const maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - let mul = 1; - let i = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeUintBE = -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) { - const maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - let i = byteLength - 1; - let mul = 1; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeUint8 = -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); - this[offset] = (value & 0xff); - return offset + 1 -}; - -Buffer.prototype.writeUint16LE = -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - return offset + 2 -}; - -Buffer.prototype.writeUint16BE = -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - return offset + 2 -}; - -Buffer.prototype.writeUint32LE = -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - this[offset + 3] = (value >>> 24); - this[offset + 2] = (value >>> 16); - this[offset + 1] = (value >>> 8); - this[offset] = (value & 0xff); - return offset + 4 -}; - -Buffer.prototype.writeUint32BE = -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - return offset + 4 -}; - -function wrtBigUInt64LE (buf, value, offset, min, max) { - checkIntBI(value, min, max, buf, offset, 7); - - let lo = Number(value & BigInt(0xffffffff)); - buf[offset++] = lo; - lo = lo >> 8; - buf[offset++] = lo; - lo = lo >> 8; - buf[offset++] = lo; - lo = lo >> 8; - buf[offset++] = lo; - let hi = Number(value >> BigInt(32) & BigInt(0xffffffff)); - buf[offset++] = hi; - hi = hi >> 8; - buf[offset++] = hi; - hi = hi >> 8; - buf[offset++] = hi; - hi = hi >> 8; - buf[offset++] = hi; - return offset -} - -function wrtBigUInt64BE (buf, value, offset, min, max) { - checkIntBI(value, min, max, buf, offset, 7); - - let lo = Number(value & BigInt(0xffffffff)); - buf[offset + 7] = lo; - lo = lo >> 8; - buf[offset + 6] = lo; - lo = lo >> 8; - buf[offset + 5] = lo; - lo = lo >> 8; - buf[offset + 4] = lo; - let hi = Number(value >> BigInt(32) & BigInt(0xffffffff)); - buf[offset + 3] = hi; - hi = hi >> 8; - buf[offset + 2] = hi; - hi = hi >> 8; - buf[offset + 1] = hi; - hi = hi >> 8; - buf[offset] = hi; - return offset + 8 -} - -Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) { - return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff')) -}); - -Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) { - return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff')) -}); - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - const limit = Math.pow(2, (8 * byteLength) - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - let i = 0; - let mul = 1; - let sub = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - const limit = Math.pow(2, (8 * byteLength) - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - let i = byteLength - 1; - let mul = 1; - let sub = 0; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -128); - if (value < 0) value = 0xff + value + 1; - this[offset] = (value & 0xff); - return offset + 1 -}; - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768); - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - return offset + 2 -}; - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768); - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - return offset + 2 -}; - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648); - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - this[offset + 2] = (value >>> 16); - this[offset + 3] = (value >>> 24); - return offset + 4 -}; - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648); - if (value < 0) value = 0xffffffff + value + 1; - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - return offset + 4 -}; - -Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) { - return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff')) -}); - -Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) { - return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff')) -}); - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - checkIEEE754(buf, value, offset, 4); - } - ieee754Exports.write(buf, value, offset, littleEndian, 23, 4); - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -}; - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -}; - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - checkIEEE754(buf, value, offset, 8); - } - ieee754Exports.write(buf, value, offset, littleEndian, 52, 8); - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -}; - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -}; - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') - if (!start) start = 0; - if (!end && end !== 0) end = this.length; - if (targetStart >= target.length) targetStart = target.length; - if (!targetStart) targetStart = 0; - if (end > 0 && end < start) end = start; - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('Index out of range') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length; - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start; - } - - const len = end - start; - - if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { - // Use built-in when available, missing from IE11 - this.copyWithin(targetStart, start, end); - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, end), - targetStart - ); - } - - return len -}; - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start; - start = 0; - end = this.length; - } else if (typeof end === 'string') { - encoding = end; - end = this.length; - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - if (val.length === 1) { - const code = val.charCodeAt(0); - if ((encoding === 'utf8' && code < 128) || - encoding === 'latin1') { - // Fast path: If `val` fits into a single byte, use that numeric value. - val = code; - } - } - } else if (typeof val === 'number') { - val = val & 255; - } else if (typeof val === 'boolean') { - val = Number(val); - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0; - end = end === undefined ? this.length : end >>> 0; - - if (!val) val = 0; - - let i; - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val; - } - } else { - const bytes = Buffer.isBuffer(val) - ? val - : Buffer.from(val, encoding); - const len = bytes.length; - if (len === 0) { - throw new TypeError('The value "' + val + - '" is invalid for argument "value"') - } - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len]; - } - } - - return this -}; - -// CUSTOM ERRORS -// ============= - -// Simplified versions from Node, changed for Buffer-only usage -const errors$2 = {}; -function E (sym, getMessage, Base) { - errors$2[sym] = class NodeError extends Base { - constructor () { - super(); - - Object.defineProperty(this, 'message', { - value: getMessage.apply(this, arguments), - writable: true, - configurable: true - }); - - // Add the error code to the name to include it in the stack trace. - this.name = `${this.name} [${sym}]`; - // Access the stack to generate the error message including the error code - // from the name. - this.stack; // eslint-disable-line no-unused-expressions - // Reset the name to the actual name. - delete this.name; - } - - get code () { - return sym - } - - set code (value) { - Object.defineProperty(this, 'code', { - configurable: true, - enumerable: true, - value, - writable: true - }); - } - - toString () { - return `${this.name} [${sym}]: ${this.message}` - } - }; -} - -E('ERR_BUFFER_OUT_OF_BOUNDS', - function (name) { - if (name) { - return `${name} is outside of buffer bounds` - } - - return 'Attempt to access memory outside buffer bounds' - }, RangeError); -E('ERR_INVALID_ARG_TYPE', - function (name, actual) { - return `The "${name}" argument must be of type number. Received type ${typeof actual}` - }, TypeError); -E('ERR_OUT_OF_RANGE', - function (str, range, input) { - let msg = `The value of "${str}" is out of range.`; - let received = input; - if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { - received = addNumericalSeparator(String(input)); - } else if (typeof input === 'bigint') { - received = String(input); - if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) { - received = addNumericalSeparator(received); - } - received += 'n'; - } - msg += ` It must be ${range}. Received ${received}`; - return msg - }, RangeError); - -function addNumericalSeparator (val) { - let res = ''; - let i = val.length; - const start = val[0] === '-' ? 1 : 0; - for (; i >= start + 4; i -= 3) { - res = `_${val.slice(i - 3, i)}${res}`; - } - return `${val.slice(0, i)}${res}` -} - -// CHECK FUNCTIONS -// =============== - -function checkBounds (buf, offset, byteLength) { - validateNumber(offset, 'offset'); - if (buf[offset] === undefined || buf[offset + byteLength] === undefined) { - boundsError(offset, buf.length - (byteLength + 1)); - } -} - -function checkIntBI (value, min, max, buf, offset, byteLength) { - if (value > max || value < min) { - const n = typeof min === 'bigint' ? 'n' : ''; - let range; - { - if (min === 0 || min === BigInt(0)) { - range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`; - } else { - range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + - `${(byteLength + 1) * 8 - 1}${n}`; - } - } - throw new errors$2.ERR_OUT_OF_RANGE('value', range, value) - } - checkBounds(buf, offset, byteLength); -} - -function validateNumber (value, name) { - if (typeof value !== 'number') { - throw new errors$2.ERR_INVALID_ARG_TYPE(name, 'number', value) - } -} - -function boundsError (value, length, type) { - if (Math.floor(value) !== value) { - validateNumber(value, type); - throw new errors$2.ERR_OUT_OF_RANGE('offset', 'an integer', value) - } - - if (length < 0) { - throw new errors$2.ERR_BUFFER_OUT_OF_BOUNDS() - } - - throw new errors$2.ERR_OUT_OF_RANGE('offset', - `>= ${0} and <= ${length}`, - value) -} - -// HELPER FUNCTIONS -// ================ - -const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; - -function base64clean (str) { - // Node takes equal signs as end of the Base64 encoding - str = str.split('=')[0]; - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = str.trim().replace(INVALID_BASE64_RE, ''); - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '='; - } - return str -} - -function utf8ToBytes (string, units) { - units = units || Infinity; - let codePoint; - const length = string.length; - let leadSurrogate = null; - const bytes = []; - - for (let i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i); - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } - - // valid lead - leadSurrogate = codePoint; - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - leadSurrogate = codePoint; - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - } - - leadSurrogate = null; - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint); - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - const byteArray = []; - for (let i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF); - } - return byteArray -} - -function utf16leToBytes (str, units) { - let c, hi, lo; - const byteArray = []; - for (let i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i); - hi = c >> 8; - lo = c % 256; - byteArray.push(lo); - byteArray.push(hi); - } - - return byteArray -} - -function base64ToBytes (str) { - return base64JsExports.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - let i; - for (i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i]; - } - return i -} - -// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass -// the `instanceof` check but they should be treated as of that type. -// See: https://github.com/feross/buffer/issues/166 -function isInstance (obj, type) { - return obj instanceof type || - (obj != null && obj.constructor != null && obj.constructor.name != null && - obj.constructor.name === type.name) -} -function numberIsNaN (obj) { - // For IE11 support - return obj !== obj // eslint-disable-line no-self-compare -} - -// Create lookup table for `toString('hex')` -// See: https://github.com/feross/buffer/issues/219 -const hexSliceLookupTable = (function () { - const alphabet = '0123456789abcdef'; - const table = new Array(256); - for (let i = 0; i < 16; ++i) { - const i16 = i * 16; - for (let j = 0; j < 16; ++j) { - table[i16 + j] = alphabet[i] + alphabet[j]; - } - } - return table -})(); - -// Return not function with Error if BigInt not supported -function defineBigIntMethod (fn) { - return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn -} - -function BufferBigIntNotDefined () { - throw new Error('BigInt not supported') -} - -var buffer = /*#__PURE__*/Object.freeze({ - __proto__: null, - Buffer: Buffer, - INSPECT_MAX_BYTES: INSPECT_MAX_BYTES, - SlowBuffer: SlowBuffer, - kMaxLength: kMaxLength -}); - -var require$$0$2 = /*@__PURE__*/getAugmentedNamespace(buffer); - -var hasRequiredBuffer$1; - -function requireBuffer$1 () { - if (hasRequiredBuffer$1) return buffer$1; - hasRequiredBuffer$1 = 1; - (function (exports$1) { - Object.defineProperty(exports$1, "__esModule", { value: true }); - exports$1.Buffer = void 0; - var node_buffer_1 = require$$0$2; - Object.defineProperty(exports$1, "Buffer", { enumerable: true, get: function () { return node_buffer_1.Buffer; } }); - - } (buffer$1)); - return buffer$1; -} - -var hasRequiredBuffer; - -function requireBuffer () { - if (hasRequiredBuffer) return buffer$2; - hasRequiredBuffer = 1; - (function (exports$1) { - Object.defineProperty(exports$1, "__esModule", { value: true }); - exports$1.bufferFrom = exports$1.bufferAllocUnsafe = exports$1.Buffer = void 0; - const buffer_1 = requireBuffer$1(); - Object.defineProperty(exports$1, "Buffer", { enumerable: true, get: function () { return buffer_1.Buffer; } }); - function bufferV0P12Ponyfill(arg0, ...args) { - return new buffer_1.Buffer(arg0, ...args); - } - const bufferAllocUnsafe = buffer_1.Buffer.allocUnsafe || bufferV0P12Ponyfill; - exports$1.bufferAllocUnsafe = bufferAllocUnsafe; - const bufferFrom = buffer_1.Buffer.from || bufferV0P12Ponyfill; - exports$1.bufferFrom = bufferFrom; - - } (buffer$2)); - return buffer$2; -} - -var errors$1 = {}; - -var util$4 = {}; - -var hasRequiredUtil$4; - -function requireUtil$4 () { - if (hasRequiredUtil$4) return util$4; - hasRequiredUtil$4 = 1; - Object.defineProperty(util$4, "__esModule", { value: true }); - util$4.inherits = inherits; - util$4.promisify = promisify; - util$4.inspect = inspect; - util$4.format = format; - /** - * Minimal implementation of Node.js util.inherits function. - * Sets up prototype inheritance between constructor functions. - */ - function inherits(ctor, superCtor) { - if (ctor === undefined || ctor === null) { - throw new TypeError('The constructor to inherit from is not defined'); - } - if (superCtor === undefined || superCtor === null) { - throw new TypeError('The super constructor to inherit from is not defined'); - } - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true, - }, - }); - } - /** - * Minimal implementation of Node.js util.promisify function. - * Converts callback-based functions to Promise-based functions. - */ - function promisify(fn) { - if (typeof fn !== 'function') { - throw new TypeError('The "original" argument must be of type function'); - } - return function (...args) { - return new Promise((resolve, reject) => { - fn.call(this, ...args, (err, result) => { - if (err) { - reject(err); - } - else { - resolve(result); - } - }); - }); - }; - } - /** - * Minimal implementation of Node.js util.inspect function. - * Converts a value to a string representation for debugging. - */ - function inspect(value) { - if (value === null) - return 'null'; - if (value === undefined) - return 'undefined'; - if (typeof value === 'string') - return `'${value}'`; - if (typeof value === 'number' || typeof value === 'boolean') - return String(value); - if (Array.isArray(value)) { - const items = value.map(item => inspect(item)).join(', '); - return `[ ${items} ]`; - } - if (typeof value === 'object') { - const entries = Object.entries(value) - .map(([key, val]) => `${key}: ${inspect(val)}`) - .join(', '); - return `{ ${entries} }`; - } - return String(value); - } - /** - * Minimal implementation of Node.js util.format function. - * Provides printf-style string formatting with basic placeholder support. - */ - function format(template, ...args) { - if (args.length === 0) - return template; - let result = template; - let argIndex = 0; - // Replace %s (string), %d (number), %j (JSON) placeholders - result = result.replace(/%[sdj%]/g, match => { - if (argIndex >= args.length) - return match; - const arg = args[argIndex++]; - switch (match) { - case '%s': - return String(arg); - case '%d': - return Number(arg).toString(); - case '%j': - try { - return JSON.stringify(arg); - } - catch { - return '[Circular]'; - } - case '%%': - return '%'; - default: - return match; - } - }); - // Append remaining arguments - while (argIndex < args.length) { - result += ' ' + String(args[argIndex++]); - } - return result; - } - - return util$4; -} - -var hasRequiredErrors$1; - -function requireErrors$1 () { - if (hasRequiredErrors$1) return errors$1; - hasRequiredErrors$1 = 1; - (function (exports$1) { - // Adapted from Node.js ../internal/errors.js, used for throwing similar errors to Node.js. - Object.defineProperty(exports$1, "__esModule", { value: true }); - exports$1.AssertionError = exports$1.RangeError = exports$1.TypeError = exports$1.Error = void 0; - exports$1.message = message; - exports$1.E = E; - const util_1 = requireUtil$4(); - const kCode = typeof Symbol === 'undefined' ? '_kCode' : Symbol('code'); - const messages = {}; - function makeNodeError(Base) { - return class NodeError extends Base { - constructor(key, ...args) { - super(message(key, args)); - this.code = key; - this[kCode] = key; - this.name = `${super.name} [${this[kCode]}]`; - } - }; - } - const g = typeof globalThis !== 'undefined' ? globalThis : commonjsGlobal; - class AssertionError extends g.Error { - constructor(options) { - if (typeof options !== 'object' || options === null) { - throw new exports$1.TypeError('ERR_INVALID_ARG_TYPE', 'options', 'object'); - } - if (options.message) { - super(options.message); - } - else { - super(`${(0, util_1.inspect)(options.actual).slice(0, 128)} ` + `${options.operator} ${(0, util_1.inspect)(options.expected).slice(0, 128)}`); - } - this.generatedMessage = !options.message; - this.name = 'AssertionError [ERR_ASSERTION]'; - this.code = 'ERR_ASSERTION'; - this.actual = options.actual; - this.expected = options.expected; - this.operator = options.operator; - exports$1.Error.captureStackTrace(this, options.stackStartFunction); - } - } - exports$1.AssertionError = AssertionError; - function message(key, args) { - if (typeof key !== 'string') - throw new exports$1.Error('Error message key must be a string'); - const msg = messages[key]; - if (!msg) - throw new exports$1.Error(`An invalid error message key was used: ${key}.`); - let fmt; - if (typeof msg === 'function') { - fmt = msg; - } - else { - fmt = util_1.format; - if (args === undefined || args.length === 0) - return msg; - args.unshift(msg); - } - return String(fmt.apply(null, args)); - } - // Utility function for registering the error codes. Only used here. Exported - // *only* to allow for testing. - function E(sym, val) { - messages[sym] = typeof val === 'function' ? val : String(val); - } - exports$1.Error = makeNodeError(g.Error); - exports$1.TypeError = makeNodeError(g.TypeError); - exports$1.RangeError = makeNodeError(g.RangeError); - E('ERR_DIR_CLOSED', 'Directory handle was closed'); - E('ERR_DIR_CONCURRENT_OPERATION', 'Cannot do synchronous work on directory handle with concurrent asynchronous operations'); - E('ERR_INVALID_FILE_URL_HOST', 'File URL host must be "localhost" or empty on %s'); - E('ERR_INVALID_FILE_URL_PATH', 'File URL path %s'); - E('ERR_INVALID_OPT_VALUE', (name, value) => { - return `The value "${String(value)}" is invalid for option "${name}"`; - }); - E('ERR_INVALID_OPT_VALUE_ENCODING', value => `The value "${String(value)}" is invalid for option "encoding"`); - E('ERR_INVALID_ARG_VALUE', 'Unable to open file as blob'); - - } (errors$1)); - return errors$1; -} - -var hasRequiredEncoding; - -function requireEncoding () { - if (hasRequiredEncoding) return encoding; - hasRequiredEncoding = 1; - (function (exports$1) { - Object.defineProperty(exports$1, "__esModule", { value: true }); - exports$1.ENCODING_UTF8 = void 0; - exports$1.assertEncoding = assertEncoding; - exports$1.strToEncoding = strToEncoding; - const buffer_1 = requireBuffer(); - const errors = requireErrors$1(); - exports$1.ENCODING_UTF8 = 'utf8'; - function assertEncoding(encoding) { - if (encoding && !buffer_1.Buffer.isEncoding(encoding)) - throw new errors.TypeError('ERR_INVALID_OPT_VALUE_ENCODING', encoding); - } - function strToEncoding(str, encoding) { - if (!encoding || encoding === exports$1.ENCODING_UTF8) - return str; // UTF-8 - if (encoding === 'buffer') - return new buffer_1.Buffer(str); // `buffer` encoding - return new buffer_1.Buffer(str).toString(encoding); // Custom encoding - } - - } (encoding)); - return encoding; -} - -var hasRequiredDirent; - -function requireDirent () { - if (hasRequiredDirent) return Dirent; - hasRequiredDirent = 1; - Object.defineProperty(Dirent, "__esModule", { value: true }); - Dirent.Dirent = void 0; - const constants_1 = requireConstants$1(); - const encoding_1 = requireEncoding(); - const { S_IFMT, S_IFDIR, S_IFREG, S_IFBLK, S_IFCHR, S_IFLNK, S_IFIFO, S_IFSOCK } = constants_1.constants; - /** - * A directory entry, like `fs.Dirent`. - */ - let Dirent$1 = class Dirent { - constructor() { - this.name = ''; - this.path = ''; - this.parentPath = ''; - this.mode = 0; - } - static build(link, encoding) { - const dirent = new Dirent(); - const { mode } = link.getNode(); - dirent.name = (0, encoding_1.strToEncoding)(link.getName(), encoding); - dirent.mode = mode; - dirent.path = link.getParentPath(); - dirent.parentPath = dirent.path; - return dirent; - } - _checkModeProperty(property) { - return (this.mode & S_IFMT) === property; - } - isDirectory() { - return this._checkModeProperty(S_IFDIR); - } - isFile() { - return this._checkModeProperty(S_IFREG); - } - isBlockDevice() { - return this._checkModeProperty(S_IFBLK); - } - isCharacterDevice() { - return this._checkModeProperty(S_IFCHR); - } - isSymbolicLink() { - return this._checkModeProperty(S_IFLNK); - } - isFIFO() { - return this._checkModeProperty(S_IFIFO); - } - isSocket() { - return this._checkModeProperty(S_IFSOCK); - } - }; - Dirent.Dirent = Dirent$1; - Dirent.default = Dirent$1; - - return Dirent; -} - -var volume = {}; - -var path = {}; - -var browser$2 = {exports: {}}; - -var hasRequiredBrowser$2; - -function requireBrowser$2 () { - if (hasRequiredBrowser$2) return browser$2.exports; - hasRequiredBrowser$2 = 1; - // shim for using process in browser - var process = browser$2.exports = {}; - - // cached from whatever undefined is present so that test runners that stub it - // don't break things. But we need to wrap it in a try catch in case it is - // wrapped in strict mode code which doesn't define any globals. It's inside a - // function because try/catches deoptimize in certain engines. - - var cachedSetTimeout; - var cachedClearTimeout; - - function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); - } - function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); - } - (function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } - } ()); - function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the undefined object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the undefined object for 'this', hopfully our context correct otherwise it will throw a undefined error - return cachedSetTimeout.call(this, fun, 0); - } - } - - - } - function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the undefined object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the undefined object for 'this', hopfully our context correct otherwise it will throw a undefined error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - - } - var queue = []; - var draining = false; - var currentQueue; - var queueIndex = -1; - - function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } - } - - function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); - } - - process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } - }; - - // v8 likes predictible objects - function Item(fun, array) { - this.fun = fun; - this.array = array; - } - Item.prototype.run = function () { - this.fun.apply(null, this.array); - }; - process.title = 'browser'; - process.browser = true; - process.env = {}; - process.argv = []; - process.version = ''; // empty string to avoid regexp issues - process.versions = {}; - - function noop() {} - - process.on = noop; - process.addListener = noop; - process.once = noop; - process.off = noop; - process.removeListener = noop; - process.removeAllListeners = noop; - process.emit = noop; - process.prependListener = noop; - process.prependOnceListener = noop; - - process.listeners = function (name) { return [] }; - - process.binding = function (name) { - throw new Error('process.binding is not supported'); - }; - - process.cwd = function () { return '/' }; - process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); - }; - process.umask = function() { return 0; }; - return browser$2.exports; -} - -var browserExports = requireBrowser$2(); -var process$1 = /*@__PURE__*/getDefaultExportFromCjs(browserExports); - -var pathBrowserify; -var hasRequiredPathBrowserify; - -function requirePathBrowserify () { - if (hasRequiredPathBrowserify) return pathBrowserify; - hasRequiredPathBrowserify = 1; - - function assertPath(path) { - if (typeof path !== 'string') { - throw new TypeError('Path must be a string. Received ' + JSON.stringify(path)); - } - } - - // Resolves . and .. elements in a path with directory names - function normalizeStringPosix(path, allowAboveRoot) { - var res = ''; - var lastSegmentLength = 0; - var lastSlash = -1; - var dots = 0; - var code; - for (var i = 0; i <= path.length; ++i) { - if (i < path.length) - code = path.charCodeAt(i); - else if (code === 47 /*/*/) - break; - else - code = 47 /*/*/; - if (code === 47 /*/*/) { - if (lastSlash === i - 1 || dots === 1) ; else if (lastSlash !== i - 1 && dots === 2) { - if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) { - if (res.length > 2) { - var lastSlashIndex = res.lastIndexOf('/'); - if (lastSlashIndex !== res.length - 1) { - if (lastSlashIndex === -1) { - res = ''; - lastSegmentLength = 0; - } else { - res = res.slice(0, lastSlashIndex); - lastSegmentLength = res.length - 1 - res.lastIndexOf('/'); - } - lastSlash = i; - dots = 0; - continue; - } - } else if (res.length === 2 || res.length === 1) { - res = ''; - lastSegmentLength = 0; - lastSlash = i; - dots = 0; - continue; - } - } - if (allowAboveRoot) { - if (res.length > 0) - res += '/..'; - else - res = '..'; - lastSegmentLength = 2; - } - } else { - if (res.length > 0) - res += '/' + path.slice(lastSlash + 1, i); - else - res = path.slice(lastSlash + 1, i); - lastSegmentLength = i - lastSlash - 1; - } - lastSlash = i; - dots = 0; - } else if (code === 46 /*.*/ && dots !== -1) { - ++dots; - } else { - dots = -1; - } - } - return res; - } - - function _format(sep, pathObject) { - var dir = pathObject.dir || pathObject.root; - var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || ''); - if (!dir) { - return base; - } - if (dir === pathObject.root) { - return dir + base; - } - return dir + sep + base; - } - - var posix = { - // path.resolve([from ...], to) - resolve: function resolve() { - var resolvedPath = ''; - var resolvedAbsolute = false; - var cwd; - - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path; - if (i >= 0) - path = arguments[i]; - else { - if (cwd === undefined) - cwd = process$1.cwd(); - path = cwd; - } - - assertPath(path); - - // Skip empty entries - if (path.length === 0) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/; - } - - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - - // Normalize the path - resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute); - - if (resolvedAbsolute) { - if (resolvedPath.length > 0) - return '/' + resolvedPath; - else - return '/'; - } else if (resolvedPath.length > 0) { - return resolvedPath; - } else { - return '.'; - } - }, - - normalize: function normalize(path) { - assertPath(path); - - if (path.length === 0) return '.'; - - var isAbsolute = path.charCodeAt(0) === 47 /*/*/; - var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/; - - // Normalize the path - path = normalizeStringPosix(path, !isAbsolute); - - if (path.length === 0 && !isAbsolute) path = '.'; - if (path.length > 0 && trailingSeparator) path += '/'; - - if (isAbsolute) return '/' + path; - return path; - }, - - isAbsolute: function isAbsolute(path) { - assertPath(path); - return path.length > 0 && path.charCodeAt(0) === 47 /*/*/; - }, - - join: function join() { - if (arguments.length === 0) - return '.'; - var joined; - for (var i = 0; i < arguments.length; ++i) { - var arg = arguments[i]; - assertPath(arg); - if (arg.length > 0) { - if (joined === undefined) - joined = arg; - else - joined += '/' + arg; - } - } - if (joined === undefined) - return '.'; - return posix.normalize(joined); - }, - - relative: function relative(from, to) { - assertPath(from); - assertPath(to); - - if (from === to) return ''; - - from = posix.resolve(from); - to = posix.resolve(to); - - if (from === to) return ''; - - // Trim any leading backslashes - var fromStart = 1; - for (; fromStart < from.length; ++fromStart) { - if (from.charCodeAt(fromStart) !== 47 /*/*/) - break; - } - var fromEnd = from.length; - var fromLen = fromEnd - fromStart; - - // Trim any leading backslashes - var toStart = 1; - for (; toStart < to.length; ++toStart) { - if (to.charCodeAt(toStart) !== 47 /*/*/) - break; - } - var toEnd = to.length; - var toLen = toEnd - toStart; - - // Compare paths to find the longest common path from root - var length = fromLen < toLen ? fromLen : toLen; - var lastCommonSep = -1; - var i = 0; - for (; i <= length; ++i) { - if (i === length) { - if (toLen > length) { - if (to.charCodeAt(toStart + i) === 47 /*/*/) { - // We get here if `from` is the exact base path for `to`. - // For example: from='/foo/bar'; to='/foo/bar/baz' - return to.slice(toStart + i + 1); - } else if (i === 0) { - // We get here if `from` is the root - // For example: from='/'; to='/foo' - return to.slice(toStart + i); - } - } else if (fromLen > length) { - if (from.charCodeAt(fromStart + i) === 47 /*/*/) { - // We get here if `to` is the exact base path for `from`. - // For example: from='/foo/bar/baz'; to='/foo/bar' - lastCommonSep = i; - } else if (i === 0) { - // We get here if `to` is the root. - // For example: from='/foo'; to='/' - lastCommonSep = 0; - } - } - break; - } - var fromCode = from.charCodeAt(fromStart + i); - var toCode = to.charCodeAt(toStart + i); - if (fromCode !== toCode) - break; - else if (fromCode === 47 /*/*/) - lastCommonSep = i; - } - - var out = ''; - // Generate the relative path based on the path difference between `to` - // and `from` - for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { - if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) { - if (out.length === 0) - out += '..'; - else - out += '/..'; - } - } - - // Lastly, append the rest of the destination (`to`) path that comes after - // the common path parts - if (out.length > 0) - return out + to.slice(toStart + lastCommonSep); - else { - toStart += lastCommonSep; - if (to.charCodeAt(toStart) === 47 /*/*/) - ++toStart; - return to.slice(toStart); - } - }, - - _makeLong: function _makeLong(path) { - return path; - }, - - dirname: function dirname(path) { - assertPath(path); - if (path.length === 0) return '.'; - var code = path.charCodeAt(0); - var hasRoot = code === 47 /*/*/; - var end = -1; - var matchedSlash = true; - for (var i = path.length - 1; i >= 1; --i) { - code = path.charCodeAt(i); - if (code === 47 /*/*/) { - if (!matchedSlash) { - end = i; - break; - } - } else { - // We saw the first non-path separator - matchedSlash = false; - } - } - - if (end === -1) return hasRoot ? '/' : '.'; - if (hasRoot && end === 1) return '//'; - return path.slice(0, end); - }, - - basename: function basename(path, ext) { - if (ext !== undefined && typeof ext !== 'string') throw new TypeError('"ext" argument must be a string'); - assertPath(path); - - var start = 0; - var end = -1; - var matchedSlash = true; - var i; - - if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { - if (ext.length === path.length && ext === path) return ''; - var extIdx = ext.length - 1; - var firstNonSlashEnd = -1; - for (i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } else { - if (firstNonSlashEnd === -1) { - // We saw the first non-path separator, remember this index in case - // we need it if the extension ends up not matching - matchedSlash = false; - firstNonSlashEnd = i + 1; - } - if (extIdx >= 0) { - // Try to match the explicit extension - if (code === ext.charCodeAt(extIdx)) { - if (--extIdx === -1) { - // We matched the extension, so mark this as the end of our path - // component - end = i; - } - } else { - // Extension does not match, so our result is the entire path - // component - extIdx = -1; - end = firstNonSlashEnd; - } - } - } - } - - if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length; - return path.slice(start, end); - } else { - for (i = path.length - 1; i >= 0; --i) { - if (path.charCodeAt(i) === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } else if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // path component - matchedSlash = false; - end = i + 1; - } - } - - if (end === -1) return ''; - return path.slice(start, end); - } - }, - - extname: function extname(path) { - assertPath(path); - var startDot = -1; - var startPart = 0; - var end = -1; - var matchedSlash = true; - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0; - for (var i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === 46 /*.*/) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) - startDot = i; - else if (preDotState !== 1) - preDotState = 1; - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - - if (startDot === -1 || end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { - return ''; - } - return path.slice(startDot, end); - }, - - format: function format(pathObject) { - if (pathObject === null || typeof pathObject !== 'object') { - throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject); - } - return _format('/', pathObject); - }, - - parse: function parse(path) { - assertPath(path); - - var ret = { root: '', dir: '', base: '', ext: '', name: '' }; - if (path.length === 0) return ret; - var code = path.charCodeAt(0); - var isAbsolute = code === 47 /*/*/; - var start; - if (isAbsolute) { - ret.root = '/'; - start = 1; - } else { - start = 0; - } - var startDot = -1; - var startPart = 0; - var end = -1; - var matchedSlash = true; - var i = path.length - 1; - - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0; - - // Get non-dir info - for (; i >= start; --i) { - code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === 46 /*.*/) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1; - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - - if (startDot === -1 || end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { - if (end !== -1) { - if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end); - } - } else { - if (startPart === 0 && isAbsolute) { - ret.name = path.slice(1, startDot); - ret.base = path.slice(1, end); - } else { - ret.name = path.slice(startPart, startDot); - ret.base = path.slice(startPart, end); - } - ret.ext = path.slice(startDot, end); - } - - if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/'; - - return ret; - }, - - sep: '/', - delimiter: ':', - win32: null, - posix: null - }; - - posix.posix = posix; - - pathBrowserify = posix; - return pathBrowserify; -} - -var hasRequiredPath; - -function requirePath () { - if (hasRequiredPath) return path; - hasRequiredPath = 1; - (function (exports$1) { - Object.defineProperty(exports$1, "__esModule", { value: true }); - exports$1.basename = exports$1.isAbsolute = exports$1.normalize = exports$1.dirname = exports$1.relative = exports$1.join = exports$1.posix = exports$1.sep = exports$1.resolve = void 0; - var node_path_1 = requirePathBrowserify(); - Object.defineProperty(exports$1, "resolve", { enumerable: true, get: function () { return node_path_1.resolve; } }); - Object.defineProperty(exports$1, "sep", { enumerable: true, get: function () { return node_path_1.sep; } }); - Object.defineProperty(exports$1, "posix", { enumerable: true, get: function () { return node_path_1.posix; } }); - Object.defineProperty(exports$1, "join", { enumerable: true, get: function () { return node_path_1.join; } }); - Object.defineProperty(exports$1, "relative", { enumerable: true, get: function () { return node_path_1.relative; } }); - Object.defineProperty(exports$1, "dirname", { enumerable: true, get: function () { return node_path_1.dirname; } }); - Object.defineProperty(exports$1, "normalize", { enumerable: true, get: function () { return node_path_1.normalize; } }); - Object.defineProperty(exports$1, "isAbsolute", { enumerable: true, get: function () { return node_path_1.isAbsolute; } }); - Object.defineProperty(exports$1, "basename", { enumerable: true, get: function () { return node_path_1.basename; } }); - - } (path)); - return path; -} - -var core = {}; - -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -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. -***************************************************************************** */ -/* undefined Reflect, Promise, SuppressedError, Symbol, Iterator */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { - function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } - var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; - var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; - var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); - var _, done = false; - for (var i = decorators.length - 1; i >= 0; i--) { - var context = {}; - for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; - for (var p in contextIn.access) context.access[p] = contextIn.access[p]; - context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; - var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); - if (kind === "accessor") { - if (result === void 0) continue; - if (result === null || typeof result !== "object") throw new TypeError("Object expected"); - if (_ = accept(result.get)) descriptor.get = _; - if (_ = accept(result.set)) descriptor.set = _; - if (_ = accept(result.init)) initializers.unshift(_); - } - else if (_ = accept(result)) { - if (kind === "field") initializers.unshift(_); - else descriptor[key] = _; - } - } - if (target) Object.defineProperty(target, contextIn.name, descriptor); - done = true; -} -function __runInitializers(thisArg, initializers, value) { - var useValue = arguments.length > 2; - for (var i = 0; i < initializers.length; i++) { - value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); - } - return useValue ? value : void 0; -} -function __propKey(x) { - return typeof x === "symbol" ? x : "".concat(x); -} -function __setFunctionName(f, name, prefix) { - if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; - return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); -} -function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); - return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -var __createBinding = Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -}); - -function __exportStar(m, o) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); -} - -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} - -function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -/** @deprecated */ -function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -/** @deprecated */ -function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -} - -function __spreadArray(to, from, pack) { - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); -} - -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; - function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } - function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } -} - -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -} -var __setModuleDefault = Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}; - -var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); -}; - -function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; -} - -function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - -function __classPrivateFieldGet(receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -} - -function __classPrivateFieldSet(receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; -} - -function __classPrivateFieldIn(state, receiver) { - if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); - return typeof state === "function" ? receiver === state : state.has(receiver); -} - -function __addDisposableResource(env, value, async) { - if (value !== null && value !== void 0) { - if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); - var dispose, inner; - if (async) { - if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); - dispose = value[Symbol.asyncDispose]; - } - if (dispose === void 0) { - if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); - dispose = value[Symbol.dispose]; - if (async) inner = dispose; - } - if (typeof dispose !== "function") throw new TypeError("Object not disposable."); - if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; - env.stack.push({ value: value, dispose: dispose, async: async }); - } - else if (async) { - env.stack.push({ async: true }); - } - return value; -} - -var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; -}; - -function __disposeResources(env) { - function fail(e) { - env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; - env.hasError = true; - } - var r, s = 0; - function next() { - while (r = env.stack.pop()) { - try { - if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); - if (r.dispose) { - var result = r.dispose.call(r.value); - if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); - } - else s |= 1; - } - catch (e) { - fail(e); - } - } - if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); - if (env.hasError) throw env.error; - } - return next(); -} - -function __rewriteRelativeImportExtension(path, preserveJsx) { - if (typeof path === "string" && /^\.\.?\//.test(path)) { - return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { - return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); - }); - } - return path; -} - -var tslib_es6 = { - __extends, - __assign, - __rest, - __decorate, - __param, - __esDecorate, - __runInitializers, - __propKey, - __setFunctionName, - __metadata, - __awaiter, - __generator, - __createBinding, - __exportStar, - __values, - __read, - __spread, - __spreadArrays, - __spreadArray, - __await, - __asyncGenerator, - __asyncDelegator, - __asyncValues, - __makeTemplateObject, - __importStar, - __importDefault, - __classPrivateFieldGet, - __classPrivateFieldSet, - __classPrivateFieldIn, - __addDisposableResource, - __disposeResources, - __rewriteRelativeImportExtension, -}; - -var tslib_es6$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - __addDisposableResource: __addDisposableResource, - get __assign () { return __assign; }, - __asyncDelegator: __asyncDelegator, - __asyncGenerator: __asyncGenerator, - __asyncValues: __asyncValues, - __await: __await, - __awaiter: __awaiter, - __classPrivateFieldGet: __classPrivateFieldGet, - __classPrivateFieldIn: __classPrivateFieldIn, - __classPrivateFieldSet: __classPrivateFieldSet, - __createBinding: __createBinding, - __decorate: __decorate, - __disposeResources: __disposeResources, - __esDecorate: __esDecorate, - __exportStar: __exportStar, - __extends: __extends, - __generator: __generator, - __importDefault: __importDefault, - __importStar: __importStar, - __makeTemplateObject: __makeTemplateObject, - __metadata: __metadata, - __param: __param, - __propKey: __propKey, - __read: __read, - __rest: __rest, - __rewriteRelativeImportExtension: __rewriteRelativeImportExtension, - __runInitializers: __runInitializers, - __setFunctionName: __setFunctionName, - __spread: __spread, - __spreadArray: __spreadArray, - __spreadArrays: __spreadArrays, - __values: __values, - default: tslib_es6 -}); - -var require$$0$1 = /*@__PURE__*/getAugmentedNamespace(tslib_es6$1); - -var types = {}; - -var hasRequiredTypes; - -function requireTypes () { - if (hasRequiredTypes) return types; - hasRequiredTypes = 1; - Object.defineProperty(types, "__esModule", { value: true }); - - return types; -} - -var json = {}; - -var hasRequiredJson; - -function requireJson () { - if (hasRequiredJson) return json; - hasRequiredJson = 1; - Object.defineProperty(json, "__esModule", { value: true }); - json.flattenJSON = void 0; - const buffer_1 = requireBuffer(); - const path_1 = requirePath(); - const pathJoin = path_1.posix ? path_1.posix.join : path_1.join; - const flattenJSON = (nestedJSON) => { - const flatJSON = {}; - function flatten(pathPrefix, node) { - for (const path in node) { - const contentOrNode = node[path]; - // TODO: Can we avoid using `join` here? Just concatenate? - const joinedPath = pathJoin(pathPrefix, path); - if (typeof contentOrNode === 'string' || contentOrNode instanceof buffer_1.Buffer) { - flatJSON[joinedPath] = contentOrNode; - } - else if (typeof contentOrNode === 'object' && - contentOrNode !== null && - !(contentOrNode instanceof buffer_1.Buffer) && - Object.keys(contentOrNode).length > 0) { - // empty directories need an explicit entry and therefore get handled in `else`, non-empty ones are implicitly considered - flatten(joinedPath, contentOrNode); - } - else { - // without this branch null, empty-object or non-object entries would not be handled in the same way - // by both fromJSON() and fromNestedJSON() - flatJSON[joinedPath] = null; - } - } - } - flatten('', nestedJSON); - return flatJSON; - }; - json.flattenJSON = flattenJSON; - - return json; -} - -var Node = {}; - -var fanout = {}; - -var hasRequiredFanout; - -function requireFanout () { - if (hasRequiredFanout) return fanout; - hasRequiredFanout = 1; - Object.defineProperty(fanout, "__esModule", { value: true }); - fanout.FanOut = void 0; - class FanOut { - constructor() { - this.listeners = new Set(); - } - emit(data) { - this.listeners.forEach((listener) => listener(data)); - } - listen(listener) { - const listeners = this.listeners; - listeners.add(listener); - return () => listeners.delete(listener); - } - } - fanout.FanOut = FanOut; - return fanout; -} - -var process = {}; - -var hasRequiredProcess; - -function requireProcess () { - if (hasRequiredProcess) return process; - hasRequiredProcess = 1; - // Here we mock the undefined `process` variable in case we are not in Node's environment. - Object.defineProperty(process, "__esModule", { value: true }); - process.createProcess = createProcess; - /** - * Looks to return a `process` object, if one is available. - * - * The undefined `process` is returned if defined; - * otherwise `require('process')` is attempted. - * - * If that fails, `undefined` is returned. - * - * @return {IProcess | undefined} - */ - const maybeReturnProcess = () => { - if (typeof process$1 !== 'undefined') { - return process$1; - } - try { - return requireBrowser$2(); - } - catch { - return undefined; - } - }; - function createProcess() { - const p = maybeReturnProcess() || {}; - if (!p.cwd) - p.cwd = () => '/'; - if (!p.emitWarning) - p.emitWarning = (message, type) => { - // tslint:disable-next-line:no-console - console.warn(`${type}${type ? ': ' : ''}${message}`); - }; - if (!p.env) - p.env = {}; - return p; - } - process.default = createProcess(); - - return process; -} - -var hasRequiredNode; - -function requireNode () { - if (hasRequiredNode) return Node; - hasRequiredNode = 1; - Object.defineProperty(Node, "__esModule", { value: true }); - Node.Node = void 0; - const fanout_1 = requireFanout(); - const process_1 = requireProcess(); - const buffer_1 = requireBuffer(); - const constants_1 = requireConstants$1(); - const { S_IFMT, S_IFDIR, S_IFREG, S_IFLNK, S_IFCHR } = constants_1.constants; - const getuid = () => process_1.default.getuid?.() ?? 0; - const getgid = () => process_1.default.getgid?.() ?? 0; - const EMPTY_BUFFER = (0, buffer_1.bufferAllocUnsafe)(0); - /** - * Node in a file system (like i-node, v-node). - */ - let Node$1 = class Node { - constructor(ino, mode = 0o666) { - this.changes = new fanout_1.FanOut(); - // User ID and group ID. - this._uid = getuid(); - this._gid = getgid(); - this._atime = new Date(); - this._mtime = new Date(); - this._ctime = new Date(); - this.buf = EMPTY_BUFFER; - /** Total allocated memory capacity for this node. */ - this.capacity = 0; - /** Actually used bytes to store content. */ - this.size = 0; - this.rdev = 0; - // Number of hard links pointing at this Node. - this._nlink = 1; - this.mode = mode; - this.ino = ino; - } - set ctime(ctime) { - this._ctime = ctime; - } - get ctime() { - return this._ctime; - } - set uid(uid) { - this._uid = uid; - this.ctime = new Date(); - } - get uid() { - return this._uid; - } - set gid(gid) { - this._gid = gid; - this.ctime = new Date(); - } - get gid() { - return this._gid; - } - set atime(atime) { - this._atime = atime; - } - get atime() { - return this._atime; - } - set mtime(mtime) { - this._mtime = mtime; - this.ctime = new Date(); - } - get mtime() { - return this._mtime; - } - get perm() { - return this.mode & ~S_IFMT; - } - set perm(perm) { - this.mode = (this.mode & S_IFMT) | (perm & ~S_IFMT); - this.ctime = new Date(); - } - set nlink(nlink) { - this._nlink = nlink; - this.ctime = new Date(); - } - get nlink() { - return this._nlink; - } - getString(encoding = 'utf8') { - this.atime = new Date(); - return this.getBuffer().toString(encoding); - } - setString(str) { - this._setBuf((0, buffer_1.bufferFrom)(str, 'utf8')); - } - getBuffer() { - this.atime = new Date(); - if (!this.buf) - this.buf = (0, buffer_1.bufferAllocUnsafe)(0); - return (0, buffer_1.bufferFrom)(this.buf.subarray(0, this.size)); // Return a copy of used portion. - } - setBuffer(buf) { - const copy = (0, buffer_1.bufferFrom)(buf); // Creates a copy of data. - this._setBuf(copy); - } - _setBuf(buf) { - const size = buf.length; - this.buf = buf; - this.capacity = size; - this.size = size; - this.touch(); - } - getSize() { - return this.size; - } - setModeProperty(property) { - this.mode = property; - } - isFile() { - return (this.mode & S_IFMT) === S_IFREG; - } - isDirectory() { - return (this.mode & S_IFMT) === S_IFDIR; - } - isSymlink() { - // return !!this.symlink; - return (this.mode & S_IFMT) === S_IFLNK; - } - isCharacterDevice() { - return (this.mode & S_IFMT) === S_IFCHR; - } - makeSymlink(symlink) { - this.mode = S_IFLNK | 0o666; - this.symlink = symlink; - } - write(buf, off = 0, len = buf.length, pos = 0) { - const bufLength = buf.length; - if (off + len > bufLength) - len = bufLength - off; - if (len <= 0) - return 0; - const requiredSize = pos + len; - if (requiredSize > this.capacity) { - let newCapacity = Math.max(this.capacity * 2, 64); - while (newCapacity < requiredSize) - newCapacity *= 2; - const newBuf = (0, buffer_1.bufferAllocUnsafe)(newCapacity); - if (this.size > 0) - this.buf.copy(newBuf, 0, 0, this.size); - this.buf = newBuf; - this.capacity = newCapacity; - } - if (pos > this.size) - this.buf.fill(0, this.size, pos); - buf.copy(this.buf, pos, off, off + len); - if (requiredSize > this.size) - this.size = requiredSize; - this.touch(); - return len; - } - /** - * Read data from the file. - * - * @param buf Buffer to read data into. - * @param off Offset int the `buf` where to start writing data. - * @param len How many bytes to read. Equals to `buf.byteLength` by default. - * @param pos Position offset in file where to start reading. Defaults to `0`. - * @returns Returns the number of bytes read. - */ - read(buf, off = 0, len = buf.byteLength, pos = 0) { - this.atime = new Date(); - if (pos >= this.size) - return 0; - let actualLen = len; - if (actualLen > buf.byteLength) - actualLen = buf.byteLength; - if (actualLen + pos > this.size) - actualLen = this.size - pos; - if (actualLen <= 0) - return 0; - const buf2 = buf instanceof buffer_1.Buffer ? buf : buffer_1.Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); - this.buf.copy(buf2, off, pos, pos + actualLen); - return actualLen; - } - truncate(len = 0) { - if (!len) { - this.buf = EMPTY_BUFFER; - this.capacity = 0; - this.size = 0; - this.touch(); - return; - } - if (len <= this.size) - this.size = len; - else { - if (len > this.capacity) { - let newCapacity = Math.max(this.capacity * 2, 64); - while (newCapacity < len) - newCapacity *= 2; - const buf = (0, buffer_1.bufferAllocUnsafe)(newCapacity); - if (this.size > 0) - this.buf.copy(buf, 0, 0, this.size); - buf.fill(0, this.size, len); - this.buf = buf; - this.capacity = newCapacity; - } - else - this.buf.fill(0, this.size, len); - this.size = len; - } - this.touch(); - } - chmod(perm) { - this.mode = (this.mode & S_IFMT) | (perm & ~S_IFMT); - this.touch(); - } - chown(uid, gid) { - this.uid = uid; - this.gid = gid; - this.touch(); - } - touch() { - this.mtime = new Date(); - this.changes.emit(['modify']); - } - canRead(uid = getuid(), gid = getgid()) { - if (this.perm & 4 /* S.IROTH */) { - return true; - } - if (gid === this.gid) { - if (this.perm & 32 /* S.IRGRP */) { - return true; - } - } - if (uid === this.uid) { - if (this.perm & 256 /* S.IRUSR */) { - return true; - } - } - return false; - } - canWrite(uid = getuid(), gid = getgid()) { - if (this.perm & 2 /* S.IWOTH */) { - return true; - } - if (gid === this.gid) { - if (this.perm & 16 /* S.IWGRP */) { - return true; - } - } - if (uid === this.uid) { - if (this.perm & 128 /* S.IWUSR */) { - return true; - } - } - return false; - } - canExecute(uid = getuid(), gid = getgid()) { - if (this.perm & 1 /* S.IXOTH */) { - return true; - } - if (gid === this.gid) { - if (this.perm & 8 /* S.IXGRP */) { - return true; - } - } - if (uid === this.uid) { - if (this.perm & 64 /* S.IXUSR */) { - return true; - } - } - return false; - } - del() { - this.changes.emit(['delete']); - } - toJSON() { - return { - ino: this.ino, - uid: this.uid, - gid: this.gid, - atime: this.atime.getTime(), - mtime: this.mtime.getTime(), - ctime: this.ctime.getTime(), - perm: this.perm, - mode: this.mode, - nlink: this.nlink, - symlink: this.symlink, - data: this.getString(), - }; - } - }; - Node.Node = Node$1; - - return Node; -} - -var Link = {}; - -var hasRequiredLink; - -function requireLink () { - if (hasRequiredLink) return Link; - hasRequiredLink = 1; - Object.defineProperty(Link, "__esModule", { value: true }); - Link.Link = void 0; - const constants_1 = requireConstants$1(); - const fanout_1 = requireFanout(); - const { S_IFREG } = constants_1.constants; - /** - * Represents a hard link that points to an i-node `node`. - */ - let Link$1 = class Link { - get steps() { - return this._steps; - } - // Recursively sync children steps, e.g. in case of dir rename - set steps(val) { - this._steps = val; - for (const [child, link] of this.children.entries()) { - if (child === '.' || child === '..') { - continue; - } - link?.syncSteps(); - } - } - constructor(vol, parent, name) { - this.changes = new fanout_1.FanOut(); - this.children = new Map(); - // Path to this node as Array: ['usr', 'bin', 'node']. - this._steps = []; - // "i-node" number of the node. - this.ino = 0; - // Number of children. - this.length = 0; - this.vol = vol; - this.parent = parent; - this.name = name; - this.syncSteps(); - } - setNode(node) { - this.node = node; - this.ino = node.ino; - } - getNode() { - return this.node; - } - createChild(name, node = this.vol.createNode(S_IFREG | 0o666)) { - const link = new Link(this.vol, this, name); - link.setNode(node); - if (node.isDirectory()) { - link.children.set('.', link); - link.getNode().nlink++; - } - this.setChild(name, link); - return link; - } - setChild(name, link = new Link(this.vol, this, name)) { - this.children.set(name, link); - link.parent = this; - this.length++; - const node = link.getNode(); - if (node.isDirectory()) { - link.children.set('..', this); - this.getNode().nlink++; - } - this.getNode().mtime = new Date(); - this.changes.emit(['child:add', link, this]); - return link; - } - deleteChild(link) { - const node = link.getNode(); - if (node.isDirectory()) { - link.children.delete('..'); - this.getNode().nlink--; - } - this.children.delete(link.getName()); - this.length--; - this.getNode().mtime = new Date(); - this.changes.emit(['child:del', link, this]); - } - getChild(name) { - this.getNode().atime = new Date(); - return this.children.get(name); - } - getPath() { - return this.steps.join("/" /* PATH.SEP */); - } - getParentPath() { - return this.steps.slice(0, -1).join("/" /* PATH.SEP */); - } - getName() { - return this.steps[this.steps.length - 1]; - } - toJSON() { - return { - steps: this.steps, - ino: this.ino, - children: Array.from(this.children.keys()), - }; - } - syncSteps() { - this.steps = this.parent ? this.parent.steps.concat([this.name]) : [this.name]; - } - }; - Link.Link = Link$1; - - return Link; -} - -var File = {}; - -var hasRequiredFile; - -function requireFile () { - if (hasRequiredFile) return File; - hasRequiredFile = 1; - Object.defineProperty(File, "__esModule", { value: true }); - File.File = void 0; - const constants_1 = requireConstants$1(); - const { O_APPEND } = constants_1.constants; - /** - * Represents an open file (file descriptor) that points to a `Link` (Hard-link) and a `Node`. - * - * @todo Rename to `OpenFile`. - */ - let File$1 = class File { - /** - * Open a Link-Node pair. `node` is provided separately as that might be a different node - * rather the one `link` points to, because it might be a symlink. - * @param link - * @param node - * @param flags - * @param fd - */ - constructor(link, node, flags, fd) { - this.link = link; - this.node = node; - this.flags = flags; - this.fd = fd; - this.position = 0; - if (this.flags & O_APPEND) - this.position = this.getSize(); - } - getString(encoding = 'utf8') { - return this.node.getString(); - } - setString(str) { - this.node.setString(str); - } - getBuffer() { - return this.node.getBuffer(); - } - setBuffer(buf) { - this.node.setBuffer(buf); - } - getSize() { - return this.node.getSize(); - } - truncate(len) { - this.node.truncate(len); - } - seekTo(position) { - this.position = position; - } - write(buf, offset = 0, length = buf.length, position) { - if (typeof position !== 'number') - position = this.position; - const bytes = this.node.write(buf, offset, length, position); - this.position = position + bytes; - return bytes; - } - read(buf, offset = 0, length = buf.byteLength, position) { - if (typeof position !== 'number') - position = this.position; - const bytes = this.node.read(buf, offset, length, position); - this.position = position + bytes; - return bytes; - } - chmod(perm) { - this.node.chmod(perm); - } - chown(uid, gid) { - this.node.chown(uid, gid); - } - }; - File.File = File$1; - - return File; -} - -var Superblock = {}; - -var constants = {}; - -var hasRequiredConstants; - -function requireConstants () { - if (hasRequiredConstants) return constants; - hasRequiredConstants = 1; - Object.defineProperty(constants, "__esModule", { value: true }); - constants.FLAGS = constants.ERRSTR = void 0; - const constants_1 = requireConstants$1(); - constants.ERRSTR = { - PATH_STR: 'path must be a string, Buffer, or Uint8Array', - // FD: 'file descriptor must be a unsigned 32-bit integer', - FD: 'fd must be a file descriptor', - MODE_INT: 'mode must be an int', - CB: 'callback must be a function', - UID: 'uid must be an unsigned int', - GID: 'gid must be an unsigned int', - LEN: 'len must be an integer', - ATIME: 'atime must be an integer', - MTIME: 'mtime must be an integer', - PREFIX: 'filename prefix is required', - BUFFER: 'buffer must be an instance of Buffer or StaticBuffer', - OFFSET: 'offset must be an integer', - LENGTH: 'length must be an integer', - POSITION: 'position must be an integer', - }; - const { O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL, O_TRUNC, O_APPEND, O_SYNC } = constants_1.constants; - // List of file `flags` as defined by Node. - var FLAGS; - (function (FLAGS) { - // Open file for reading. An exception occurs if the file does not exist. - FLAGS[FLAGS["r"] = O_RDONLY] = "r"; - // Open file for reading and writing. An exception occurs if the file does not exist. - FLAGS[FLAGS["r+"] = O_RDWR] = "r+"; - // Open file for reading in synchronous mode. Instructs the operating system to bypass the local file system cache. - FLAGS[FLAGS["rs"] = O_RDONLY | O_SYNC] = "rs"; - FLAGS[FLAGS["sr"] = FLAGS.rs] = "sr"; - // Open file for reading and writing, telling the OS to open it synchronously. See notes for 'rs' about using this with caution. - FLAGS[FLAGS["rs+"] = O_RDWR | O_SYNC] = "rs+"; - FLAGS[FLAGS["sr+"] = FLAGS['rs+']] = "sr+"; - // Open file for writing. The file is created (if it does not exist) or truncated (if it exists). - FLAGS[FLAGS["w"] = O_WRONLY | O_CREAT | O_TRUNC] = "w"; - // Like 'w' but fails if path exists. - FLAGS[FLAGS["wx"] = O_WRONLY | O_CREAT | O_TRUNC | O_EXCL] = "wx"; - FLAGS[FLAGS["xw"] = FLAGS.wx] = "xw"; - // Open file for reading and writing. The file is created (if it does not exist) or truncated (if it exists). - FLAGS[FLAGS["w+"] = O_RDWR | O_CREAT | O_TRUNC] = "w+"; - // Like 'w+' but fails if path exists. - FLAGS[FLAGS["wx+"] = O_RDWR | O_CREAT | O_TRUNC | O_EXCL] = "wx+"; - FLAGS[FLAGS["xw+"] = FLAGS['wx+']] = "xw+"; - // Open file for appending. The file is created if it does not exist. - FLAGS[FLAGS["a"] = O_WRONLY | O_APPEND | O_CREAT] = "a"; - // Like 'a' but fails if path exists. - FLAGS[FLAGS["ax"] = O_WRONLY | O_APPEND | O_CREAT | O_EXCL] = "ax"; - FLAGS[FLAGS["xa"] = FLAGS.ax] = "xa"; - // Open file for reading and appending. The file is created if it does not exist. - FLAGS[FLAGS["a+"] = O_RDWR | O_APPEND | O_CREAT] = "a+"; - // Like 'a+' but fails if path exists. - FLAGS[FLAGS["ax+"] = O_RDWR | O_APPEND | O_CREAT | O_EXCL] = "ax+"; - FLAGS[FLAGS["xa+"] = FLAGS['ax+']] = "xa+"; - })(FLAGS || (constants.FLAGS = FLAGS = {})); - - return constants; -} - -var util$3 = {}; - -var queueMicrotask$1 = {}; - -var hasRequiredQueueMicrotask; - -function requireQueueMicrotask () { - if (hasRequiredQueueMicrotask) return queueMicrotask$1; - hasRequiredQueueMicrotask = 1; - Object.defineProperty(queueMicrotask$1, "__esModule", { value: true }); - queueMicrotask$1.default = typeof queueMicrotask === 'function' ? queueMicrotask : (cb => Promise.resolve() - .then(() => cb()) - .catch(() => { })); - - return queueMicrotask$1; -} - -var util$2 = {}; - -var hasRequiredUtil$3; - -function requireUtil$3 () { - if (hasRequiredUtil$3) return util$2; - hasRequiredUtil$3 = 1; - (function (exports$1) { - Object.defineProperty(exports$1, "__esModule", { value: true }); - exports$1.filenameToSteps = exports$1.resolve = exports$1.unixify = exports$1.isWin = void 0; - exports$1.isFd = isFd; - exports$1.validateFd = validateFd; - exports$1.dataToBuffer = dataToBuffer; - const path_1 = requirePath(); - const buffer_1 = requireBuffer(); - const process_1 = requireProcess(); - const encoding_1 = requireEncoding(); - const constants_1 = requireConstants(); - exports$1.isWin = process_1.default.platform === 'win32'; - const resolveCrossPlatform = path_1.resolve; - const pathSep = path_1.posix ? path_1.posix.sep : path_1.sep; - const isSeparator = (str, i) => { - let char = str[i]; - return i > 0 && (char === '/' || (exports$1.isWin && char === '\\')); - }; - const removeTrailingSeparator = (str) => { - let i = str.length - 1; - if (i < 2) - return str; - while (isSeparator(str, i)) - i--; - return str.substr(0, i + 1); - }; - const normalizePath = (str, stripTrailing) => { - if (typeof str !== 'string') - throw new TypeError('expected a string'); - str = str.replace(/[\\\/]+/g, '/'); - if (stripTrailing !== false) - str = removeTrailingSeparator(str); - return str; - }; - const unixify = (filepath, stripTrailing = true) => { - if (exports$1.isWin) { - filepath = normalizePath(filepath, stripTrailing); - return filepath.replace(/^([a-zA-Z]+:|\.\/)/, ''); - } - return filepath; - }; - exports$1.unixify = unixify; - let resolve = (filename, base = process_1.default.cwd()) => resolveCrossPlatform(base, filename); - exports$1.resolve = resolve; - if (exports$1.isWin) { - const _resolve = resolve; - exports$1.resolve = resolve = (filename, base) => (0, exports$1.unixify)(_resolve(filename, base)); - } - const filenameToSteps = (filename, base) => { - const fullPath = resolve(filename, base); - const fullPathSansSlash = fullPath.substring(1); - if (!fullPathSansSlash) - return []; - return fullPathSansSlash.split(pathSep); - }; - exports$1.filenameToSteps = filenameToSteps; - function isFd(path) { - return path >>> 0 === path; - } - function validateFd(fd) { - if (!isFd(fd)) - throw TypeError(constants_1.ERRSTR.FD); - } - function dataToBuffer(data, encoding = encoding_1.ENCODING_UTF8) { - if (buffer_1.Buffer.isBuffer(data)) - return data; - else if (data instanceof Uint8Array) - return (0, buffer_1.bufferFrom)(data); - else if (encoding === 'buffer') - return (0, buffer_1.bufferFrom)(String(data), 'utf8'); - else - return (0, buffer_1.bufferFrom)(String(data), encoding); - } - - } (util$2)); - return util$2; -} - -var url = {}; - -var punycode$1 = {exports: {}}; - -/*! https://mths.be/punycode v1.4.1 by @mathias */ -var punycode = punycode$1.exports; - -var hasRequiredPunycode; - -function requirePunycode () { - if (hasRequiredPunycode) return punycode$1.exports; - hasRequiredPunycode = 1; - (function (module, exports$1) { -(function(root) { - - /** Detect free variables */ - var freeExports = exports$1 && - !exports$1.nodeType && exports$1; - var freeModule = module && - !module.nodeType && module; - var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal; - if ( - freeGlobal.undefined === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw new RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.4.1', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if (freeExports && freeModule) { - if (module.exports == freeExports) { - // in Node.js, io.js, or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { - // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { - // in Rhino or a web browser - root.punycode = punycode; - } - - }(punycode)); - } (punycode$1, punycode$1.exports)); - return punycode$1.exports; -} - -var type; -var hasRequiredType; - -function requireType () { - if (hasRequiredType) return type; - hasRequiredType = 1; - - /** @type {import('./type')} */ - type = TypeError; - return type; -} - -var _nodeResolve_empty = {}; - -var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - default: _nodeResolve_empty -}); - -var require$$0 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1); - -var objectInspect; -var hasRequiredObjectInspect; - -function requireObjectInspect () { - if (hasRequiredObjectInspect) return objectInspect; - hasRequiredObjectInspect = 1; - var hasMap = typeof Map === 'function' && Map.prototype; - var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null; - var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null; - var mapForEach = hasMap && Map.prototype.forEach; - var hasSet = typeof Set === 'function' && Set.prototype; - var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null; - var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null; - var setForEach = hasSet && Set.prototype.forEach; - var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype; - var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; - var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype; - var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; - var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype; - var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; - var booleanValueOf = Boolean.prototype.valueOf; - var objectToString = Object.prototype.toString; - var functionToString = Function.prototype.toString; - var $match = String.prototype.match; - var $slice = String.prototype.slice; - var $replace = String.prototype.replace; - var $toUpperCase = String.prototype.toUpperCase; - var $toLowerCase = String.prototype.toLowerCase; - var $test = RegExp.prototype.test; - var $concat = Array.prototype.concat; - var $join = Array.prototype.join; - var $arrSlice = Array.prototype.slice; - var $floor = Math.floor; - var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null; - var gOPS = Object.getOwnPropertySymbols; - var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null; - var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object'; - // ie, `has-tostringtag/shams - var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol') - ? Symbol.toStringTag - : null; - var isEnumerable = Object.prototype.propertyIsEnumerable; - - var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ( - [].__proto__ === Array.prototype // eslint-disable-line no-proto - ? function (O) { - return O.__proto__; // eslint-disable-line no-proto - } - : null - ); - - function addNumericSeparator(num, str) { - if ( - num === Infinity - || num === -Infinity - || num !== num - || (num && num > -1e3 && num < 1000) - || $test.call(/e/, str) - ) { - return str; - } - var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; - if (typeof num === 'number') { - var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num) - if (int !== num) { - var intStr = String(int); - var dec = $slice.call(str, intStr.length + 1); - return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, ''); - } - } - return $replace.call(str, sepRegex, '$&_'); - } - - var utilInspect = require$$0; - var inspectCustom = utilInspect.custom; - var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; - - var quotes = { - __proto__: null, - 'double': '"', - single: "'" - }; - var quoteREs = { - __proto__: null, - 'double': /(["\\])/g, - single: /(['\\])/g - }; - - objectInspect = function inspect_(obj, options, depth, seen) { - var opts = options || {}; - - if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) { - throw new TypeError('option "quoteStyle" must be "single" or "double"'); - } - if ( - has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number' - ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity - : opts.maxStringLength !== null - ) - ) { - throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); - } - var customInspect = has(opts, 'customInspect') ? opts.customInspect : true; - if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') { - throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`'); - } - - if ( - has(opts, 'indent') - && opts.indent !== null - && opts.indent !== '\t' - && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0) - ) { - throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); - } - if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') { - throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); - } - var numericSeparator = opts.numericSeparator; - - if (typeof obj === 'undefined') { - return 'undefined'; - } - if (obj === null) { - return 'null'; - } - if (typeof obj === 'boolean') { - return obj ? 'true' : 'false'; - } - - if (typeof obj === 'string') { - return inspectString(obj, opts); - } - if (typeof obj === 'number') { - if (obj === 0) { - return Infinity / obj > 0 ? '0' : '-0'; - } - var str = String(obj); - return numericSeparator ? addNumericSeparator(obj, str) : str; - } - if (typeof obj === 'bigint') { - var bigIntStr = String(obj) + 'n'; - return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; - } - - var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth; - if (typeof depth === 'undefined') { depth = 0; } - if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') { - return isArray(obj) ? '[Array]' : '[Object]'; - } - - var indent = getIndent(opts, depth); - - if (typeof seen === 'undefined') { - seen = []; - } else if (indexOf(seen, obj) >= 0) { - return '[Circular]'; - } - - function inspect(value, from, noIndent) { - if (from) { - seen = $arrSlice.call(seen); - seen.push(from); - } - if (noIndent) { - var newOpts = { - depth: opts.depth - }; - if (has(opts, 'quoteStyle')) { - newOpts.quoteStyle = opts.quoteStyle; - } - return inspect_(value, newOpts, depth + 1, seen); - } - return inspect_(value, opts, depth + 1, seen); - } - - if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable - var name = nameOf(obj); - var keys = arrObjKeys(obj, inspect); - return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : ''); - } - if (isSymbol(obj)) { - var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj); - return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString; - } - if (isElement(obj)) { - var s = '<' + $toLowerCase.call(String(obj.nodeName)); - var attrs = obj.attributes || []; - for (var i = 0; i < attrs.length; i++) { - s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts); - } - s += '>'; - if (obj.childNodes && obj.childNodes.length) { s += '...'; } - s += ''; - return s; - } - if (isArray(obj)) { - if (obj.length === 0) { return '[]'; } - var xs = arrObjKeys(obj, inspect); - if (indent && !singleLineValues(xs)) { - return '[' + indentedJoin(xs, indent) + ']'; - } - return '[ ' + $join.call(xs, ', ') + ' ]'; - } - if (isError(obj)) { - var parts = arrObjKeys(obj, inspect); - if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) { - return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }'; - } - if (parts.length === 0) { return '[' + String(obj) + ']'; } - return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }'; - } - if (typeof obj === 'object' && customInspect) { - if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) { - return utilInspect(obj, { depth: maxDepth - depth }); - } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') { - return obj.inspect(); - } - } - if (isMap(obj)) { - var mapParts = []; - if (mapForEach) { - mapForEach.call(obj, function (value, key) { - mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); - }); - } - return collectionOf('Map', mapSize.call(obj), mapParts, indent); - } - if (isSet(obj)) { - var setParts = []; - if (setForEach) { - setForEach.call(obj, function (value) { - setParts.push(inspect(value, obj)); - }); - } - return collectionOf('Set', setSize.call(obj), setParts, indent); - } - if (isWeakMap(obj)) { - return weakCollectionOf('WeakMap'); - } - if (isWeakSet(obj)) { - return weakCollectionOf('WeakSet'); - } - if (isWeakRef(obj)) { - return weakCollectionOf('WeakRef'); - } - if (isNumber(obj)) { - return markBoxed(inspect(Number(obj))); - } - if (isBigInt(obj)) { - return markBoxed(inspect(bigIntValueOf.call(obj))); - } - if (isBoolean(obj)) { - return markBoxed(booleanValueOf.call(obj)); - } - if (isString(obj)) { - return markBoxed(inspect(String(obj))); - } - // note: in IE 8, sometimes `undefined !== window` but both are the prototypes of each other - /* eslint-env browser */ - if (typeof window !== 'undefined' && obj === window) { - return '{ [object Window] }'; - } - if ( - (typeof globalThis !== 'undefined' && obj === globalThis) - || (typeof commonjsGlobal !== 'undefined' && obj === commonjsGlobal) - ) { - return '{ [object globalThis] }'; - } - if (!isDate(obj) && !isRegExp(obj)) { - var ys = arrObjKeys(obj, inspect); - var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; - var protoTag = obj instanceof Object ? '' : 'null prototype'; - var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : ''; - var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : ''; - var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : ''); - if (ys.length === 0) { return tag + '{}'; } - if (indent) { - return tag + '{' + indentedJoin(ys, indent) + '}'; - } - return tag + '{ ' + $join.call(ys, ', ') + ' }'; - } - return String(obj); - }; - - function wrapQuotes(s, defaultStyle, opts) { - var style = opts.quoteStyle || defaultStyle; - var quoteChar = quotes[style]; - return quoteChar + s + quoteChar; - } - - function quote(s) { - return $replace.call(String(s), /"/g, '"'); - } - - function canTrustToString(obj) { - return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined')); - } - function isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); } - function isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); } - function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); } - function isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); } - function isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); } - function isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); } - function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); } - - // Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives - function isSymbol(obj) { - if (hasShammedSymbols) { - return obj && typeof obj === 'object' && obj instanceof Symbol; - } - if (typeof obj === 'symbol') { - return true; - } - if (!obj || typeof obj !== 'object' || !symToString) { - return false; - } - try { - symToString.call(obj); - return true; - } catch (e) {} - return false; - } - - function isBigInt(obj) { - if (!obj || typeof obj !== 'object' || !bigIntValueOf) { - return false; - } - try { - bigIntValueOf.call(obj); - return true; - } catch (e) {} - return false; - } - - var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; }; - function has(obj, key) { - return hasOwn.call(obj, key); - } - - function toStr(obj) { - return objectToString.call(obj); - } - - function nameOf(f) { - if (f.name) { return f.name; } - var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); - if (m) { return m[1]; } - return null; - } - - function indexOf(xs, x) { - if (xs.indexOf) { return xs.indexOf(x); } - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) { return i; } - } - return -1; - } - - function isMap(x) { - if (!mapSize || !x || typeof x !== 'object') { - return false; - } - try { - mapSize.call(x); - try { - setSize.call(x); - } catch (s) { - return true; - } - return x instanceof Map; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; - } - - function isWeakMap(x) { - if (!weakMapHas || !x || typeof x !== 'object') { - return false; - } - try { - weakMapHas.call(x, weakMapHas); - try { - weakSetHas.call(x, weakSetHas); - } catch (s) { - return true; - } - return x instanceof WeakMap; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; - } - - function isWeakRef(x) { - if (!weakRefDeref || !x || typeof x !== 'object') { - return false; - } - try { - weakRefDeref.call(x); - return true; - } catch (e) {} - return false; - } - - function isSet(x) { - if (!setSize || !x || typeof x !== 'object') { - return false; - } - try { - setSize.call(x); - try { - mapSize.call(x); - } catch (m) { - return true; - } - return x instanceof Set; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; - } - - function isWeakSet(x) { - if (!weakSetHas || !x || typeof x !== 'object') { - return false; - } - try { - weakSetHas.call(x, weakSetHas); - try { - weakMapHas.call(x, weakMapHas); - } catch (s) { - return true; - } - return x instanceof WeakSet; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; - } - - function isElement(x) { - if (!x || typeof x !== 'object') { return false; } - if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) { - return true; - } - return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function'; - } - - function inspectString(str, opts) { - if (str.length > opts.maxStringLength) { - var remaining = str.length - opts.maxStringLength; - var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : ''); - return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; - } - var quoteRE = quoteREs[opts.quoteStyle || 'single']; - quoteRE.lastIndex = 0; - // eslint-disable-next-line no-control-regex - var s = $replace.call($replace.call(str, quoteRE, '\\$1'), /[\x00-\x1f]/g, lowbyte); - return wrapQuotes(s, 'single', opts); - } - - function lowbyte(c) { - var n = c.charCodeAt(0); - var x = { - 8: 'b', - 9: 't', - 10: 'n', - 12: 'f', - 13: 'r' - }[n]; - if (x) { return '\\' + x; } - return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16)); - } - - function markBoxed(str) { - return 'Object(' + str + ')'; - } - - function weakCollectionOf(type) { - return type + ' { ? }'; - } - - function collectionOf(type, size, entries, indent) { - var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', '); - return type + ' (' + size + ') {' + joinedEntries + '}'; - } - - function singleLineValues(xs) { - for (var i = 0; i < xs.length; i++) { - if (indexOf(xs[i], '\n') >= 0) { - return false; - } - } - return true; - } - - function getIndent(opts, depth) { - var baseIndent; - if (opts.indent === '\t') { - baseIndent = '\t'; - } else if (typeof opts.indent === 'number' && opts.indent > 0) { - baseIndent = $join.call(Array(opts.indent + 1), ' '); - } else { - return null; - } - return { - base: baseIndent, - prev: $join.call(Array(depth + 1), baseIndent) - }; - } - - function indentedJoin(xs, indent) { - if (xs.length === 0) { return ''; } - var lineJoiner = '\n' + indent.prev + indent.base; - return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev; - } - - function arrObjKeys(obj, inspect) { - var isArr = isArray(obj); - var xs = []; - if (isArr) { - xs.length = obj.length; - for (var i = 0; i < obj.length; i++) { - xs[i] = has(obj, i) ? inspect(obj[i], obj) : ''; - } - } - var syms = typeof gOPS === 'function' ? gOPS(obj) : []; - var symMap; - if (hasShammedSymbols) { - symMap = {}; - for (var k = 0; k < syms.length; k++) { - symMap['$' + syms[k]] = syms[k]; - } - } - - for (var key in obj) { // eslint-disable-line no-restricted-syntax - if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue - if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue - if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) { - // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section - continue; // eslint-disable-line no-restricted-syntax, no-continue - } else if ($test.call(/[^\w$]/, key)) { - xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); - } else { - xs.push(key + ': ' + inspect(obj[key], obj)); - } - } - if (typeof gOPS === 'function') { - for (var j = 0; j < syms.length; j++) { - if (isEnumerable.call(obj, syms[j])) { - xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj)); - } - } - } - return xs; - } - return objectInspect; -} - -var sideChannelList; -var hasRequiredSideChannelList; - -function requireSideChannelList () { - if (hasRequiredSideChannelList) return sideChannelList; - hasRequiredSideChannelList = 1; - - var inspect = /*@__PURE__*/ requireObjectInspect(); - - var $TypeError = /*@__PURE__*/ requireType(); - - /* - * This function traverses the list returning the node corresponding to the given key. - * - * That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. - * By doing so, all the recently used nodes can be accessed relatively quickly. - */ - /** @type {import('./list.d.ts').listGetNode} */ - // eslint-disable-next-line consistent-return - var listGetNode = function (list, key, isDelete) { - /** @type {typeof list | NonNullable<(typeof list)['next']>} */ - var prev = list; - /** @type {(typeof list)['next']} */ - var curr; - // eslint-disable-next-line eqeqeq - for (; (curr = prev.next) != null; prev = curr) { - if (curr.key === key) { - prev.next = curr.next; - if (!isDelete) { - // eslint-disable-next-line no-extra-parens - curr.next = /** @type {NonNullable} */ (list.next); - list.next = curr; // eslint-disable-line no-param-reassign - } - return curr; - } - } - }; - - /** @type {import('./list.d.ts').listGet} */ - var listGet = function (objects, key) { - if (!objects) { - return void undefined; - } - var node = listGetNode(objects, key); - return node && node.value; - }; - /** @type {import('./list.d.ts').listSet} */ - var listSet = function (objects, key, value) { - var node = listGetNode(objects, key); - if (node) { - node.value = value; - } else { - // Prepend the new node to the beginning of the list - objects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens - key: key, - next: objects.next, - value: value - }); - } - }; - /** @type {import('./list.d.ts').listHas} */ - var listHas = function (objects, key) { - if (!objects) { - return false; - } - return !!listGetNode(objects, key); - }; - /** @type {import('./list.d.ts').listDelete} */ - // eslint-disable-next-line consistent-return - var listDelete = function (objects, key) { - if (objects) { - return listGetNode(objects, key, true); - } - }; - - /** @type {import('.')} */ - sideChannelList = function getSideChannelList() { - /** @typedef {ReturnType} Channel */ - /** @typedef {Parameters[0]} K */ - /** @typedef {Parameters[1]} V */ - - /** @type {import('./list.d.ts').RootNode | undefined} */ var $o; - - /** @type {Channel} */ - var channel = { - assert: function (key) { - if (!channel.has(key)) { - throw new $TypeError('Side channel does not contain ' + inspect(key)); - } - }, - 'delete': function (key) { - var root = $o && $o.next; - var deletedNode = listDelete($o, key); - if (deletedNode && root && root === deletedNode) { - $o = void undefined; - } - return !!deletedNode; - }, - get: function (key) { - return listGet($o, key); - }, - has: function (key) { - return listHas($o, key); - }, - set: function (key, value) { - if (!$o) { - // Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head - $o = { - next: void undefined - }; - } - // eslint-disable-next-line no-extra-parens - listSet(/** @type {NonNullable} */ ($o), key, value); - } - }; - // @ts-expect-error TODO: figure out why this is erroring - return channel; - }; - return sideChannelList; -} - -var esObjectAtoms; -var hasRequiredEsObjectAtoms; - -function requireEsObjectAtoms () { - if (hasRequiredEsObjectAtoms) return esObjectAtoms; - hasRequiredEsObjectAtoms = 1; - - /** @type {import('.')} */ - esObjectAtoms = Object; - return esObjectAtoms; -} - -var esErrors; -var hasRequiredEsErrors; - -function requireEsErrors () { - if (hasRequiredEsErrors) return esErrors; - hasRequiredEsErrors = 1; - - /** @type {import('.')} */ - esErrors = Error; - return esErrors; -} - -var _eval; -var hasRequired_eval; - -function require_eval () { - if (hasRequired_eval) return _eval; - hasRequired_eval = 1; - - /** @type {import('./eval')} */ - _eval = EvalError; - return _eval; -} - -var range; -var hasRequiredRange; - -function requireRange () { - if (hasRequiredRange) return range; - hasRequiredRange = 1; - - /** @type {import('./range')} */ - range = RangeError; - return range; -} - -var ref; -var hasRequiredRef; - -function requireRef () { - if (hasRequiredRef) return ref; - hasRequiredRef = 1; - - /** @type {import('./ref')} */ - ref = ReferenceError; - return ref; -} - -var syntax; -var hasRequiredSyntax; - -function requireSyntax () { - if (hasRequiredSyntax) return syntax; - hasRequiredSyntax = 1; - - /** @type {import('./syntax')} */ - syntax = SyntaxError; - return syntax; -} - -var uri; -var hasRequiredUri; - -function requireUri () { - if (hasRequiredUri) return uri; - hasRequiredUri = 1; - - /** @type {import('./uri')} */ - uri = URIError; - return uri; -} - -var abs; -var hasRequiredAbs; - -function requireAbs () { - if (hasRequiredAbs) return abs; - hasRequiredAbs = 1; - - /** @type {import('./abs')} */ - abs = Math.abs; - return abs; -} - -var floor; -var hasRequiredFloor; - -function requireFloor () { - if (hasRequiredFloor) return floor; - hasRequiredFloor = 1; - - /** @type {import('./floor')} */ - floor = Math.floor; - return floor; -} - -var max; -var hasRequiredMax; - -function requireMax () { - if (hasRequiredMax) return max; - hasRequiredMax = 1; - - /** @type {import('./max')} */ - max = Math.max; - return max; -} - -var min; -var hasRequiredMin; - -function requireMin () { - if (hasRequiredMin) return min; - hasRequiredMin = 1; - - /** @type {import('./min')} */ - min = Math.min; - return min; -} - -var pow; -var hasRequiredPow; - -function requirePow () { - if (hasRequiredPow) return pow; - hasRequiredPow = 1; - - /** @type {import('./pow')} */ - pow = Math.pow; - return pow; -} - -var round; -var hasRequiredRound; - -function requireRound () { - if (hasRequiredRound) return round; - hasRequiredRound = 1; - - /** @type {import('./round')} */ - round = Math.round; - return round; -} - -var _isNaN; -var hasRequired_isNaN; - -function require_isNaN () { - if (hasRequired_isNaN) return _isNaN; - hasRequired_isNaN = 1; - - /** @type {import('./isNaN')} */ - _isNaN = Number.isNaN || function isNaN(a) { - return a !== a; - }; - return _isNaN; -} - -var sign; -var hasRequiredSign; - -function requireSign () { - if (hasRequiredSign) return sign; - hasRequiredSign = 1; - - var $isNaN = /*@__PURE__*/ require_isNaN(); - - /** @type {import('./sign')} */ - sign = function sign(number) { - if ($isNaN(number) || number === 0) { - return number; - } - return number < 0 ? -1 : 1; - }; - return sign; -} - -var gOPD; -var hasRequiredGOPD; - -function requireGOPD () { - if (hasRequiredGOPD) return gOPD; - hasRequiredGOPD = 1; - - /** @type {import('./gOPD')} */ - gOPD = Object.getOwnPropertyDescriptor; - return gOPD; -} - -var gopd; -var hasRequiredGopd; - -function requireGopd () { - if (hasRequiredGopd) return gopd; - hasRequiredGopd = 1; - - /** @type {import('.')} */ - var $gOPD = /*@__PURE__*/ requireGOPD(); - - if ($gOPD) { - try { - $gOPD([], 'length'); - } catch (e) { - // IE 8 has a broken gOPD - $gOPD = null; - } - } - - gopd = $gOPD; - return gopd; -} - -var esDefineProperty; -var hasRequiredEsDefineProperty; - -function requireEsDefineProperty () { - if (hasRequiredEsDefineProperty) return esDefineProperty; - hasRequiredEsDefineProperty = 1; - - /** @type {import('.')} */ - var $defineProperty = Object.defineProperty || false; - if ($defineProperty) { - try { - $defineProperty({}, 'a', { value: 1 }); - } catch (e) { - // IE 8 has a broken defineProperty - $defineProperty = false; - } - } - - esDefineProperty = $defineProperty; - return esDefineProperty; -} - -var shams; -var hasRequiredShams; - -function requireShams () { - if (hasRequiredShams) return shams; - hasRequiredShams = 1; - - /** @type {import('./shams')} */ - /* eslint complexity: [2, 18], max-statements: [2, 33] */ - shams = function hasSymbols() { - if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } - if (typeof Symbol.iterator === 'symbol') { return true; } - - /** @type {{ [k in symbol]?: unknown }} */ - var obj = {}; - var sym = Symbol('test'); - var symObj = Object(sym); - if (typeof sym === 'string') { return false; } - - if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } - if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } - - // temp disabled per https://github.com/ljharb/object.assign/issues/17 - // if (sym instanceof Symbol) { return false; } - // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 - // if (!(symObj instanceof Symbol)) { return false; } - - // if (typeof Symbol.prototype.toString !== 'function') { return false; } - // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } - - var symVal = 42; - obj[sym] = symVal; - for (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop - if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } - - if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } - - var syms = Object.getOwnPropertySymbols(obj); - if (syms.length !== 1 || syms[0] !== sym) { return false; } - - if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } - - if (typeof Object.getOwnPropertyDescriptor === 'function') { - // eslint-disable-next-line no-extra-parens - var descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym)); - if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } - } - - return true; - }; - return shams; -} - -var hasSymbols; -var hasRequiredHasSymbols; - -function requireHasSymbols () { - if (hasRequiredHasSymbols) return hasSymbols; - hasRequiredHasSymbols = 1; - - var origSymbol = typeof Symbol !== 'undefined' && Symbol; - var hasSymbolSham = requireShams(); - - /** @type {import('.')} */ - hasSymbols = function hasNativeSymbols() { - if (typeof origSymbol !== 'function') { return false; } - if (typeof Symbol !== 'function') { return false; } - if (typeof origSymbol('foo') !== 'symbol') { return false; } - if (typeof Symbol('bar') !== 'symbol') { return false; } - - return hasSymbolSham(); - }; - return hasSymbols; -} - -var Reflect_getPrototypeOf; -var hasRequiredReflect_getPrototypeOf; - -function requireReflect_getPrototypeOf () { - if (hasRequiredReflect_getPrototypeOf) return Reflect_getPrototypeOf; - hasRequiredReflect_getPrototypeOf = 1; - - /** @type {import('./Reflect.getPrototypeOf')} */ - Reflect_getPrototypeOf = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null; - return Reflect_getPrototypeOf; -} - -var Object_getPrototypeOf; -var hasRequiredObject_getPrototypeOf; - -function requireObject_getPrototypeOf () { - if (hasRequiredObject_getPrototypeOf) return Object_getPrototypeOf; - hasRequiredObject_getPrototypeOf = 1; - - var $Object = /*@__PURE__*/ requireEsObjectAtoms(); - - /** @type {import('./Object.getPrototypeOf')} */ - Object_getPrototypeOf = $Object.getPrototypeOf || null; - return Object_getPrototypeOf; -} - -var implementation; -var hasRequiredImplementation; - -function requireImplementation () { - if (hasRequiredImplementation) return implementation; - hasRequiredImplementation = 1; - - /* eslint no-invalid-this: 1 */ - - var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; - var toStr = Object.prototype.toString; - var max = Math.max; - var funcType = '[object Function]'; - - var concatty = function concatty(a, b) { - var arr = []; - - for (var i = 0; i < a.length; i += 1) { - arr[i] = a[i]; - } - for (var j = 0; j < b.length; j += 1) { - arr[j + a.length] = b[j]; - } - - return arr; - }; - - var slicy = function slicy(arrLike, offset) { - var arr = []; - for (var i = offset, j = 0; i < arrLike.length; i += 1, j += 1) { - arr[j] = arrLike[i]; - } - return arr; - }; - - var joiny = function (arr, joiner) { - var str = ''; - for (var i = 0; i < arr.length; i += 1) { - str += arr[i]; - if (i + 1 < arr.length) { - str += joiner; - } - } - return str; - }; - - implementation = function bind(that) { - var target = this; - if (typeof target !== 'function' || toStr.apply(target) !== funcType) { - throw new TypeError(ERROR_MESSAGE + target); - } - var args = slicy(arguments, 1); - - var bound; - var binder = function () { - if (this instanceof bound) { - var result = target.apply( - this, - concatty(args, arguments) - ); - if (Object(result) === result) { - return result; - } - return this; - } - return target.apply( - that, - concatty(args, arguments) - ); - - }; - - var boundLength = max(0, target.length - args.length); - var boundArgs = []; - for (var i = 0; i < boundLength; i++) { - boundArgs[i] = '$' + i; - } - - bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); - - if (target.prototype) { - var Empty = function Empty() {}; - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - - return bound; - }; - return implementation; -} - -var functionBind; -var hasRequiredFunctionBind; - -function requireFunctionBind () { - if (hasRequiredFunctionBind) return functionBind; - hasRequiredFunctionBind = 1; - - var implementation = requireImplementation(); - - functionBind = Function.prototype.bind || implementation; - return functionBind; -} - -var functionCall; -var hasRequiredFunctionCall; - -function requireFunctionCall () { - if (hasRequiredFunctionCall) return functionCall; - hasRequiredFunctionCall = 1; - - /** @type {import('./functionCall')} */ - functionCall = Function.prototype.call; - return functionCall; -} - -var functionApply; -var hasRequiredFunctionApply; - -function requireFunctionApply () { - if (hasRequiredFunctionApply) return functionApply; - hasRequiredFunctionApply = 1; - - /** @type {import('./functionApply')} */ - functionApply = Function.prototype.apply; - return functionApply; -} - -var reflectApply; -var hasRequiredReflectApply; - -function requireReflectApply () { - if (hasRequiredReflectApply) return reflectApply; - hasRequiredReflectApply = 1; - - /** @type {import('./reflectApply')} */ - reflectApply = typeof Reflect !== 'undefined' && Reflect && Reflect.apply; - return reflectApply; -} - -var actualApply; -var hasRequiredActualApply; - -function requireActualApply () { - if (hasRequiredActualApply) return actualApply; - hasRequiredActualApply = 1; - - var bind = requireFunctionBind(); - - var $apply = requireFunctionApply(); - var $call = requireFunctionCall(); - var $reflectApply = requireReflectApply(); - - /** @type {import('./actualApply')} */ - actualApply = $reflectApply || bind.call($call, $apply); - return actualApply; -} - -var callBindApplyHelpers; -var hasRequiredCallBindApplyHelpers; - -function requireCallBindApplyHelpers () { - if (hasRequiredCallBindApplyHelpers) return callBindApplyHelpers; - hasRequiredCallBindApplyHelpers = 1; - - var bind = requireFunctionBind(); - var $TypeError = /*@__PURE__*/ requireType(); - - var $call = requireFunctionCall(); - var $actualApply = requireActualApply(); - - /** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */ - callBindApplyHelpers = function callBindBasic(args) { - if (args.length < 1 || typeof args[0] !== 'function') { - throw new $TypeError('a function is required'); - } - return $actualApply(bind, $call, args); - }; - return callBindApplyHelpers; -} - -var get; -var hasRequiredGet; - -function requireGet () { - if (hasRequiredGet) return get; - hasRequiredGet = 1; - - var callBind = requireCallBindApplyHelpers(); - var gOPD = /*@__PURE__*/ requireGopd(); - - var hasProtoAccessor; - try { - // eslint-disable-next-line no-extra-parens, no-proto - hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype; - } catch (e) { - if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') { - throw e; - } - } - - // eslint-disable-next-line no-extra-parens - var desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__')); - - var $Object = Object; - var $getPrototypeOf = $Object.getPrototypeOf; - - /** @type {import('./get')} */ - get = desc && typeof desc.get === 'function' - ? callBind([desc.get]) - : typeof $getPrototypeOf === 'function' - ? /** @type {import('./get')} */ function getDunder(value) { - // eslint-disable-next-line eqeqeq - return $getPrototypeOf(value == null ? value : $Object(value)); - } - : false; - return get; -} - -var getProto; -var hasRequiredGetProto; - -function requireGetProto () { - if (hasRequiredGetProto) return getProto; - hasRequiredGetProto = 1; - - var reflectGetProto = requireReflect_getPrototypeOf(); - var originalGetProto = requireObject_getPrototypeOf(); - - var getDunderProto = /*@__PURE__*/ requireGet(); - - /** @type {import('.')} */ - getProto = reflectGetProto - ? function getProto(O) { - // @ts-expect-error TS can't narrow inside a closure, for some reason - return reflectGetProto(O); - } - : originalGetProto - ? function getProto(O) { - if (!O || (typeof O !== 'object' && typeof O !== 'function')) { - throw new TypeError('getProto: not an object'); - } - // @ts-expect-error TS can't narrow inside a closure, for some reason - return originalGetProto(O); - } - : getDunderProto - ? function getProto(O) { - // @ts-expect-error TS can't narrow inside a closure, for some reason - return getDunderProto(O); - } - : null; - return getProto; -} - -var asyncFunction; -var hasRequiredAsyncFunction; - -function requireAsyncFunction () { - if (hasRequiredAsyncFunction) return asyncFunction; - hasRequiredAsyncFunction = 1; - - // eslint-disable-next-line no-extra-parens, no-empty-function - const cached = /** @type {import('.').AsyncFunctionConstructor} */ (async function () {}.constructor); - - /** @type {import('.')} */ - asyncFunction = () => cached; - return asyncFunction; -} - -var generatorFunction; -var hasRequiredGeneratorFunction; - -function requireGeneratorFunction () { - if (hasRequiredGeneratorFunction) return generatorFunction; - hasRequiredGeneratorFunction = 1; - - // eslint-disable-next-line no-extra-parens, no-empty-function - const cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor); - - /** @type {import('.')} */ - generatorFunction = () => cached; - return generatorFunction; -} - -var asyncGeneratorFunction; -var hasRequiredAsyncGeneratorFunction; - -function requireAsyncGeneratorFunction () { - if (hasRequiredAsyncGeneratorFunction) return asyncGeneratorFunction; - hasRequiredAsyncGeneratorFunction = 1; - - // eslint-disable-next-line no-extra-parens, no-empty-function - const cached = /** @type {import('.').AsyncGeneratorFunctionConstructor} */ (async function* () {}.constructor); - - /** @type {import('.')} */ - asyncGeneratorFunction = () => cached; - return asyncGeneratorFunction; -} - -var hasown; -var hasRequiredHasown; - -function requireHasown () { - if (hasRequiredHasown) return hasown; - hasRequiredHasown = 1; - - var call = Function.prototype.call; - var $hasOwn = Object.prototype.hasOwnProperty; - var bind = requireFunctionBind(); - - /** @type {import('.')} */ - hasown = bind.call(call, $hasOwn); - return hasown; -} - -var getIntrinsic; -var hasRequiredGetIntrinsic; - -function requireGetIntrinsic () { - if (hasRequiredGetIntrinsic) return getIntrinsic; - hasRequiredGetIntrinsic = 1; - - var undefined$1; - - var $Object = /*@__PURE__*/ requireEsObjectAtoms(); - - var $Error = /*@__PURE__*/ requireEsErrors(); - var $EvalError = /*@__PURE__*/ require_eval(); - var $RangeError = /*@__PURE__*/ requireRange(); - var $ReferenceError = /*@__PURE__*/ requireRef(); - var $SyntaxError = /*@__PURE__*/ requireSyntax(); - var $TypeError = /*@__PURE__*/ requireType(); - var $URIError = /*@__PURE__*/ requireUri(); - - var abs = /*@__PURE__*/ requireAbs(); - var floor = /*@__PURE__*/ requireFloor(); - var max = /*@__PURE__*/ requireMax(); - var min = /*@__PURE__*/ requireMin(); - var pow = /*@__PURE__*/ requirePow(); - var round = /*@__PURE__*/ requireRound(); - var sign = /*@__PURE__*/ requireSign(); - - var $gOPD = /*@__PURE__*/ requireGopd(); - var $defineProperty = /*@__PURE__*/ requireEsDefineProperty(); - - var throwTypeError = function () { - throw new $TypeError(); - }; - var ThrowTypeError = $gOPD - ? (function () { - try { - // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties - arguments.callee; // IE 8 does not throw here - return throwTypeError; - } catch (calleeThrows) { - try { - // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') - return $gOPD(arguments, 'callee').get; - } catch (gOPDthrows) { - return throwTypeError; - } - } - }()) - : throwTypeError; - - var hasSymbols = requireHasSymbols()(); - - var getProto = requireGetProto(); - var $ObjectGPO = requireObject_getPrototypeOf(); - var $ReflectGPO = requireReflect_getPrototypeOf(); - - var $apply = requireFunctionApply(); - var $call = requireFunctionCall(); - - var needsEval = {}; - - var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined$1 : getProto(Uint8Array); - - var INTRINSICS = { - __proto__: null, - '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError, - '%Array%': Array, - '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer, - '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined$1, - '%AsyncFromSyncIteratorPrototype%': undefined$1, - '%AsyncFunction%': needsEval, - '%AsyncGenerator%': needsEval, - '%AsyncGeneratorFunction%': needsEval, - '%AsyncIteratorPrototype%': needsEval, - '%Atomics%': typeof Atomics === 'undefined' ? undefined$1 : Atomics, - '%BigInt%': typeof BigInt === 'undefined' ? undefined$1 : BigInt, - '%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined$1 : BigInt64Array, - '%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined$1 : BigUint64Array, - '%Boolean%': Boolean, - '%DataView%': typeof DataView === 'undefined' ? undefined$1 : DataView, - '%Date%': Date, - '%decodeURI%': decodeURI, - '%decodeURIComponent%': decodeURIComponent, - '%encodeURI%': encodeURI, - '%encodeURIComponent%': encodeURIComponent, - '%Error%': $Error, - '%eval%': eval, // eslint-disable-line no-eval - '%EvalError%': $EvalError, - '%Float16Array%': typeof Float16Array === 'undefined' ? undefined$1 : Float16Array, - '%Float32Array%': typeof Float32Array === 'undefined' ? undefined$1 : Float32Array, - '%Float64Array%': typeof Float64Array === 'undefined' ? undefined$1 : Float64Array, - '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined$1 : FinalizationRegistry, - '%Function%': Function, - '%GeneratorFunction%': needsEval, - '%Int8Array%': typeof Int8Array === 'undefined' ? undefined$1 : Int8Array, - '%Int16Array%': typeof Int16Array === 'undefined' ? undefined$1 : Int16Array, - '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array, - '%isFinite%': isFinite, - '%isNaN%': isNaN, - '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined$1, - '%JSON%': typeof JSON === 'object' ? JSON : undefined$1, - '%Map%': typeof Map === 'undefined' ? undefined$1 : Map, - '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined$1 : getProto(new Map()[Symbol.iterator]()), - '%Math%': Math, - '%Number%': Number, - '%Object%': $Object, - '%Object.getOwnPropertyDescriptor%': $gOPD, - '%parseFloat%': parseFloat, - '%parseInt%': parseInt, - '%Promise%': typeof Promise === 'undefined' ? undefined$1 : Promise, - '%Proxy%': typeof Proxy === 'undefined' ? undefined$1 : Proxy, - '%RangeError%': $RangeError, - '%ReferenceError%': $ReferenceError, - '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect, - '%RegExp%': RegExp, - '%Set%': typeof Set === 'undefined' ? undefined$1 : Set, - '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined$1 : getProto(new Set()[Symbol.iterator]()), - '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer, - '%String%': String, - '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined$1, - '%Symbol%': hasSymbols ? Symbol : undefined$1, - '%SyntaxError%': $SyntaxError, - '%ThrowTypeError%': ThrowTypeError, - '%TypedArray%': TypedArray, - '%TypeError%': $TypeError, - '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined$1 : Uint8Array, - '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined$1 : Uint8ClampedArray, - '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined$1 : Uint16Array, - '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined$1 : Uint32Array, - '%URIError%': $URIError, - '%WeakMap%': typeof WeakMap === 'undefined' ? undefined$1 : WeakMap, - '%WeakRef%': typeof WeakRef === 'undefined' ? undefined$1 : WeakRef, - '%WeakSet%': typeof WeakSet === 'undefined' ? undefined$1 : WeakSet, - - '%Function.prototype.call%': $call, - '%Function.prototype.apply%': $apply, - '%Object.defineProperty%': $defineProperty, - '%Object.getPrototypeOf%': $ObjectGPO, - '%Math.abs%': abs, - '%Math.floor%': floor, - '%Math.max%': max, - '%Math.min%': min, - '%Math.pow%': pow, - '%Math.round%': round, - '%Math.sign%': sign, - '%Reflect.getPrototypeOf%': $ReflectGPO - }; - - if (getProto) { - try { - null.error; // eslint-disable-line no-unused-expressions - } catch (e) { - // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 - var errorProto = getProto(getProto(e)); - INTRINSICS['%Error.prototype%'] = errorProto; - } - } - - var getAsyncFunction = requireAsyncFunction(); - var getGeneratorFunction = /*@__PURE__*/ requireGeneratorFunction(); - var getAsyncGeneratorFunction = requireAsyncGeneratorFunction(); - - var doEval = function doEval(name) { - var value; - if (name === '%AsyncFunction%') { - value = getAsyncFunction() || void undefined$1; - } else if (name === '%GeneratorFunction%') { - value = getGeneratorFunction() || void undefined$1; - } else if (name === '%AsyncGeneratorFunction%') { - value = getAsyncGeneratorFunction() || void undefined$1; - } else if (name === '%AsyncGenerator%') { - var fn = doEval('%AsyncGeneratorFunction%'); - if (fn) { - value = fn.prototype; - } - } else if (name === '%AsyncIteratorPrototype%') { - var gen = doEval('%AsyncGenerator%'); - if (gen && getProto) { - value = getProto(gen.prototype); - } - } - - INTRINSICS[name] = value; - - return value; - }; - - var LEGACY_ALIASES = { - __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'] - }; - - var bind = requireFunctionBind(); - var hasOwn = /*@__PURE__*/ requireHasown(); - var $concat = bind.call($call, Array.prototype.concat); - var $spliceApply = bind.call($apply, Array.prototype.splice); - var $replace = bind.call($call, String.prototype.replace); - var $strSlice = bind.call($call, String.prototype.slice); - var $exec = bind.call($call, RegExp.prototype.exec); - - /* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ - var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; - var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ - var stringToPath = function stringToPath(string) { - var first = $strSlice(string, 0, 1); - var last = $strSlice(string, -1); - if (first === '%' && last !== '%') { - throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); - } else if (last === '%' && first !== '%') { - throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); - } - var result = []; - $replace(string, rePropName, function (match, number, quote, subString) { - result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; - }); - return result; - }; - /* end adaptation */ - - var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { - var intrinsicName = name; - var alias; - if (hasOwn(LEGACY_ALIASES, intrinsicName)) { - alias = LEGACY_ALIASES[intrinsicName]; - intrinsicName = '%' + alias[0] + '%'; - } - - if (hasOwn(INTRINSICS, intrinsicName)) { - var value = INTRINSICS[intrinsicName]; - if (value === needsEval) { - value = doEval(intrinsicName); - } - if (typeof value === 'undefined' && !allowMissing) { - throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); - } - - return { - alias: alias, - name: intrinsicName, - value: value - }; - } - - throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); - }; - - getIntrinsic = function GetIntrinsic(name, allowMissing) { - if (typeof name !== 'string' || name.length === 0) { - throw new $TypeError('intrinsic name must be a non-empty string'); - } - if (arguments.length > 1 && typeof allowMissing !== 'boolean') { - throw new $TypeError('"allowMissing" argument must be a boolean'); - } - - if ($exec(/^%?[^%]*%?$/, name) === null) { - throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name'); - } - var parts = stringToPath(name); - var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; - - var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); - var intrinsicRealName = intrinsic.name; - var value = intrinsic.value; - var skipFurtherCaching = false; - - var alias = intrinsic.alias; - if (alias) { - intrinsicBaseName = alias[0]; - $spliceApply(parts, $concat([0, 1], alias)); - } - - for (var i = 1, isOwn = true; i < parts.length; i += 1) { - var part = parts[i]; - var first = $strSlice(part, 0, 1); - var last = $strSlice(part, -1); - if ( - ( - (first === '"' || first === "'" || first === '`') - || (last === '"' || last === "'" || last === '`') - ) - && first !== last - ) { - throw new $SyntaxError('property names with quotes must have matching quotes'); - } - if (part === 'constructor' || !isOwn) { - skipFurtherCaching = true; - } - - intrinsicBaseName += '.' + part; - intrinsicRealName = '%' + intrinsicBaseName + '%'; - - if (hasOwn(INTRINSICS, intrinsicRealName)) { - value = INTRINSICS[intrinsicRealName]; - } else if (value != null) { - if (!(part in value)) { - if (!allowMissing) { - throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); - } - return void undefined$1; - } - if ($gOPD && (i + 1) >= parts.length) { - var desc = $gOPD(value, part); - isOwn = !!desc; - - // By convention, when a data property is converted to an accessor - // property to emulate a data property that does not suffer from - // the override mistake, that accessor's getter is marked with - // an `originalValue` property. Here, when we detect this, we - // uphold the illusion by pretending to see that original data - // property, i.e., returning the value rather than the getter - // itself. - if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { - value = desc.get; - } else { - value = value[part]; - } - } else { - isOwn = hasOwn(value, part); - value = value[part]; - } - - if (isOwn && !skipFurtherCaching) { - INTRINSICS[intrinsicRealName] = value; - } - } - } - return value; - }; - return getIntrinsic; -} - -var callBound; -var hasRequiredCallBound; - -function requireCallBound () { - if (hasRequiredCallBound) return callBound; - hasRequiredCallBound = 1; - - var GetIntrinsic = /*@__PURE__*/ requireGetIntrinsic(); - - var callBindBasic = requireCallBindApplyHelpers(); - - /** @type {(thisArg: string, searchString: string, position?: number) => number} */ - var $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]); - - /** @type {import('.')} */ - callBound = function callBoundIntrinsic(name, allowMissing) { - /* eslint no-extra-parens: 0 */ - - var intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing)); - if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { - return callBindBasic(/** @type {const} */ ([intrinsic])); - } - return intrinsic; - }; - return callBound; -} - -var sideChannelMap; -var hasRequiredSideChannelMap; - -function requireSideChannelMap () { - if (hasRequiredSideChannelMap) return sideChannelMap; - hasRequiredSideChannelMap = 1; - - var GetIntrinsic = /*@__PURE__*/ requireGetIntrinsic(); - var callBound = /*@__PURE__*/ requireCallBound(); - var inspect = /*@__PURE__*/ requireObjectInspect(); - - var $TypeError = /*@__PURE__*/ requireType(); - var $Map = GetIntrinsic('%Map%', true); - - /** @type {(thisArg: Map, key: K) => V} */ - var $mapGet = callBound('Map.prototype.get', true); - /** @type {(thisArg: Map, key: K, value: V) => void} */ - var $mapSet = callBound('Map.prototype.set', true); - /** @type {(thisArg: Map, key: K) => boolean} */ - var $mapHas = callBound('Map.prototype.has', true); - /** @type {(thisArg: Map, key: K) => boolean} */ - var $mapDelete = callBound('Map.prototype.delete', true); - /** @type {(thisArg: Map) => number} */ - var $mapSize = callBound('Map.prototype.size', true); - - /** @type {import('.')} */ - sideChannelMap = !!$Map && /** @type {Exclude} */ function getSideChannelMap() { - /** @typedef {ReturnType} Channel */ - /** @typedef {Parameters[0]} K */ - /** @typedef {Parameters[1]} V */ - - /** @type {Map | undefined} */ var $m; - - /** @type {Channel} */ - var channel = { - assert: function (key) { - if (!channel.has(key)) { - throw new $TypeError('Side channel does not contain ' + inspect(key)); - } - }, - 'delete': function (key) { - if ($m) { - var result = $mapDelete($m, key); - if ($mapSize($m) === 0) { - $m = void undefined; - } - return result; - } - return false; - }, - get: function (key) { // eslint-disable-line consistent-return - if ($m) { - return $mapGet($m, key); - } - }, - has: function (key) { - if ($m) { - return $mapHas($m, key); - } - return false; - }, - set: function (key, value) { - if (!$m) { - // @ts-expect-error TS can't handle narrowing a variable inside a closure - $m = new $Map(); - } - $mapSet($m, key, value); - } - }; - - // @ts-expect-error TODO: figure out why TS is erroring here - return channel; - }; - return sideChannelMap; -} - -var sideChannelWeakmap; -var hasRequiredSideChannelWeakmap; - -function requireSideChannelWeakmap () { - if (hasRequiredSideChannelWeakmap) return sideChannelWeakmap; - hasRequiredSideChannelWeakmap = 1; - - var GetIntrinsic = /*@__PURE__*/ requireGetIntrinsic(); - var callBound = /*@__PURE__*/ requireCallBound(); - var inspect = /*@__PURE__*/ requireObjectInspect(); - var getSideChannelMap = requireSideChannelMap(); - - var $TypeError = /*@__PURE__*/ requireType(); - var $WeakMap = GetIntrinsic('%WeakMap%', true); - - /** @type {(thisArg: WeakMap, key: K) => V} */ - var $weakMapGet = callBound('WeakMap.prototype.get', true); - /** @type {(thisArg: WeakMap, key: K, value: V) => void} */ - var $weakMapSet = callBound('WeakMap.prototype.set', true); - /** @type {(thisArg: WeakMap, key: K) => boolean} */ - var $weakMapHas = callBound('WeakMap.prototype.has', true); - /** @type {(thisArg: WeakMap, key: K) => boolean} */ - var $weakMapDelete = callBound('WeakMap.prototype.delete', true); - - /** @type {import('.')} */ - sideChannelWeakmap = $WeakMap - ? /** @type {Exclude} */ function getSideChannelWeakMap() { - /** @typedef {ReturnType} Channel */ - /** @typedef {Parameters[0]} K */ - /** @typedef {Parameters[1]} V */ - - /** @type {WeakMap | undefined} */ var $wm; - /** @type {Channel | undefined} */ var $m; - - /** @type {Channel} */ - var channel = { - assert: function (key) { - if (!channel.has(key)) { - throw new $TypeError('Side channel does not contain ' + inspect(key)); - } - }, - 'delete': function (key) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapDelete($wm, key); - } - } else if (getSideChannelMap) { - if ($m) { - return $m['delete'](key); - } - } - return false; - }, - get: function (key) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapGet($wm, key); - } - } - return $m && $m.get(key); - }, - has: function (key) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapHas($wm, key); - } - } - return !!$m && $m.has(key); - }, - set: function (key, value) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if (!$wm) { - $wm = new $WeakMap(); - } - $weakMapSet($wm, key, value); - } else if (getSideChannelMap) { - if (!$m) { - $m = getSideChannelMap(); - } - // eslint-disable-next-line no-extra-parens - /** @type {NonNullable} */ ($m).set(key, value); - } - } - }; - - // @ts-expect-error TODO: figure out why this is erroring - return channel; - } - : getSideChannelMap; - return sideChannelWeakmap; -} - -var sideChannel; -var hasRequiredSideChannel; - -function requireSideChannel () { - if (hasRequiredSideChannel) return sideChannel; - hasRequiredSideChannel = 1; - - var $TypeError = /*@__PURE__*/ requireType(); - var inspect = /*@__PURE__*/ requireObjectInspect(); - var getSideChannelList = requireSideChannelList(); - var getSideChannelMap = requireSideChannelMap(); - var getSideChannelWeakMap = requireSideChannelWeakmap(); - - var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList; - - /** @type {import('.')} */ - sideChannel = function getSideChannel() { - /** @typedef {ReturnType} Channel */ - - /** @type {Channel | undefined} */ var $channelData; - - /** @type {Channel} */ - var channel = { - assert: function (key) { - if (!channel.has(key)) { - throw new $TypeError('Side channel does not contain ' + inspect(key)); - } - }, - 'delete': function (key) { - return !!$channelData && $channelData['delete'](key); - }, - get: function (key) { - return $channelData && $channelData.get(key); - }, - has: function (key) { - return !!$channelData && $channelData.has(key); - }, - set: function (key, value) { - if (!$channelData) { - $channelData = makeChannel(); - } - - $channelData.set(key, value); - } - }; - // @ts-expect-error TODO: figure out why this is erroring - return channel; - }; - return sideChannel; -} - -var formats; -var hasRequiredFormats; - -function requireFormats () { - if (hasRequiredFormats) return formats; - hasRequiredFormats = 1; - - var replace = String.prototype.replace; - var percentTwenties = /%20/g; - - var Format = { - RFC1738: 'RFC1738', - RFC3986: 'RFC3986' - }; - - formats = { - 'default': Format.RFC3986, - formatters: { - RFC1738: function (value) { - return replace.call(value, percentTwenties, '+'); - }, - RFC3986: function (value) { - return String(value); - } - }, - RFC1738: Format.RFC1738, - RFC3986: Format.RFC3986 - }; - return formats; -} - -var utils$1; -var hasRequiredUtils$1; - -function requireUtils$1 () { - if (hasRequiredUtils$1) return utils$1; - hasRequiredUtils$1 = 1; - - var formats = /*@__PURE__*/ requireFormats(); - - var has = Object.prototype.hasOwnProperty; - var isArray = Array.isArray; - - var hexTable = (function () { - var array = []; - for (var i = 0; i < 256; ++i) { - array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); - } - - return array; - }()); - - var compactQueue = function compactQueue(queue) { - while (queue.length > 1) { - var item = queue.pop(); - var obj = item.obj[item.prop]; - - if (isArray(obj)) { - var compacted = []; - - for (var j = 0; j < obj.length; ++j) { - if (typeof obj[j] !== 'undefined') { - compacted.push(obj[j]); - } - } - - item.obj[item.prop] = compacted; - } - } - }; - - var arrayToObject = function arrayToObject(source, options) { - var obj = options && options.plainObjects ? { __proto__: null } : {}; - for (var i = 0; i < source.length; ++i) { - if (typeof source[i] !== 'undefined') { - obj[i] = source[i]; - } - } - - return obj; - }; - - var merge = function merge(target, source, options) { - /* eslint no-param-reassign: 0 */ - if (!source) { - return target; - } - - if (typeof source !== 'object' && typeof source !== 'function') { - if (isArray(target)) { - target.push(source); - } else if (target && typeof target === 'object') { - if ( - (options && (options.plainObjects || options.allowPrototypes)) - || !has.call(Object.prototype, source) - ) { - target[source] = true; - } - } else { - return [target, source]; - } - - return target; - } - - if (!target || typeof target !== 'object') { - return [target].concat(source); - } - - var mergeTarget = target; - if (isArray(target) && !isArray(source)) { - mergeTarget = arrayToObject(target, options); - } - - if (isArray(target) && isArray(source)) { - source.forEach(function (item, i) { - if (has.call(target, i)) { - var targetItem = target[i]; - if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { - target[i] = merge(targetItem, item, options); - } else { - target.push(item); - } - } else { - target[i] = item; - } - }); - return target; - } - - return Object.keys(source).reduce(function (acc, key) { - var value = source[key]; - - if (has.call(acc, key)) { - acc[key] = merge(acc[key], value, options); - } else { - acc[key] = value; - } - return acc; - }, mergeTarget); - }; - - var assign = function assignSingleSource(target, source) { - return Object.keys(source).reduce(function (acc, key) { - acc[key] = source[key]; - return acc; - }, target); - }; - - var decode = function (str, defaultDecoder, charset) { - var strWithoutPlus = str.replace(/\+/g, ' '); - if (charset === 'iso-8859-1') { - // unescape never throws, no try...catch needed: - return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); - } - // utf-8 - try { - return decodeURIComponent(strWithoutPlus); - } catch (e) { - return strWithoutPlus; - } - }; - - var limit = 1024; - - /* eslint operator-linebreak: [2, "before"] */ - - var encode = function encode(str, defaultEncoder, charset, kind, format) { - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } - - var string = str; - if (typeof str === 'symbol') { - string = Symbol.prototype.toString.call(str); - } else if (typeof str !== 'string') { - string = String(str); - } - - if (charset === 'iso-8859-1') { - return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { - return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; - }); - } - - var out = ''; - for (var j = 0; j < string.length; j += limit) { - var segment = string.length >= limit ? string.slice(j, j + limit) : string; - var arr = []; - - for (var i = 0; i < segment.length; ++i) { - var c = segment.charCodeAt(i); - if ( - c === 0x2D // - - || c === 0x2E // . - || c === 0x5F // _ - || c === 0x7E // ~ - || (c >= 0x30 && c <= 0x39) // 0-9 - || (c >= 0x41 && c <= 0x5A) // a-z - || (c >= 0x61 && c <= 0x7A) // A-Z - || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) - ) { - arr[arr.length] = segment.charAt(i); - continue; - } - - if (c < 0x80) { - arr[arr.length] = hexTable[c]; - continue; - } - - if (c < 0x800) { - arr[arr.length] = hexTable[0xC0 | (c >> 6)] - + hexTable[0x80 | (c & 0x3F)]; - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - arr[arr.length] = hexTable[0xE0 | (c >> 12)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - continue; - } - - i += 1; - c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF)); - - arr[arr.length] = hexTable[0xF0 | (c >> 18)] - + hexTable[0x80 | ((c >> 12) & 0x3F)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - } - - out += arr.join(''); - } - - return out; - }; - - var compact = function compact(value) { - var queue = [{ obj: { o: value }, prop: 'o' }]; - var refs = []; - - for (var i = 0; i < queue.length; ++i) { - var item = queue[i]; - var obj = item.obj[item.prop]; - - var keys = Object.keys(obj); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - var val = obj[key]; - if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { - queue.push({ obj: obj, prop: key }); - refs.push(val); - } - } - } - - compactQueue(queue); - - return value; - }; - - var isRegExp = function isRegExp(obj) { - return Object.prototype.toString.call(obj) === '[object RegExp]'; - }; - - var isBuffer = function isBuffer(obj) { - if (!obj || typeof obj !== 'object') { - return false; - } - - return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); - }; - - var combine = function combine(a, b) { - return [].concat(a, b); - }; - - var maybeMap = function maybeMap(val, fn) { - if (isArray(val)) { - var mapped = []; - for (var i = 0; i < val.length; i += 1) { - mapped.push(fn(val[i])); - } - return mapped; - } - return fn(val); - }; - - utils$1 = { - arrayToObject: arrayToObject, - assign: assign, - combine: combine, - compact: compact, - decode: decode, - encode: encode, - isBuffer: isBuffer, - isRegExp: isRegExp, - maybeMap: maybeMap, - merge: merge - }; - return utils$1; -} - -var stringify_1; -var hasRequiredStringify; - -function requireStringify () { - if (hasRequiredStringify) return stringify_1; - hasRequiredStringify = 1; - - var getSideChannel = requireSideChannel(); - var utils = /*@__PURE__*/ requireUtils$1(); - var formats = /*@__PURE__*/ requireFormats(); - var has = Object.prototype.hasOwnProperty; - - var arrayPrefixGenerators = { - brackets: function brackets(prefix) { - return prefix + '[]'; - }, - comma: 'comma', - indices: function indices(prefix, key) { - return prefix + '[' + key + ']'; - }, - repeat: function repeat(prefix) { - return prefix; - } - }; - - var isArray = Array.isArray; - var push = Array.prototype.push; - var pushToArray = function (arr, valueOrArray) { - push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); - }; - - var toISO = Date.prototype.toISOString; - - var defaultFormat = formats['default']; - var defaults = { - addQueryPrefix: false, - allowDots: false, - allowEmptyArrays: false, - arrayFormat: 'indices', - charset: 'utf-8', - charsetSentinel: false, - commaRoundTrip: false, - delimiter: '&', - encode: true, - encodeDotInKeys: false, - encoder: utils.encode, - encodeValuesOnly: false, - filter: void undefined, - format: defaultFormat, - formatter: formats.formatters[defaultFormat], - // deprecated - indices: false, - serializeDate: function serializeDate(date) { - return toISO.call(date); - }, - skipNulls: false, - strictNullHandling: false - }; - - var isNonNullishPrimitive = function isNonNullishPrimitive(v) { - return typeof v === 'string' - || typeof v === 'number' - || typeof v === 'boolean' - || typeof v === 'symbol' - || typeof v === 'bigint'; - }; - - var sentinel = {}; - - var stringify = function stringify( - object, - prefix, - generateArrayPrefix, - commaRoundTrip, - allowEmptyArrays, - strictNullHandling, - skipNulls, - encodeDotInKeys, - encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - sideChannel - ) { - var obj = object; - - var tmpSc = sideChannel; - var step = 0; - var findFlag = false; - while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) { - // Where object last appeared in the ref tree - var pos = tmpSc.get(object); - step += 1; - if (typeof pos !== 'undefined') { - if (pos === step) { - throw new RangeError('Cyclic object value'); - } else { - findFlag = true; // Break while - } - } - if (typeof tmpSc.get(sentinel) === 'undefined') { - step = 0; - } - } - - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } else if (obj instanceof Date) { - obj = serializeDate(obj); - } else if (generateArrayPrefix === 'comma' && isArray(obj)) { - obj = utils.maybeMap(obj, function (value) { - if (value instanceof Date) { - return serializeDate(value); - } - return value; - }); - } - - if (obj === null) { - if (strictNullHandling) { - return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix; - } - - obj = ''; - } - - if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { - if (encoder) { - var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format); - return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; - } - return [formatter(prefix) + '=' + formatter(String(obj))]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys; - if (generateArrayPrefix === 'comma' && isArray(obj)) { - // we need to join elements in - if (encodeValuesOnly && encoder) { - obj = utils.maybeMap(obj, encoder); - } - objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }]; - } else if (isArray(filter)) { - objKeys = filter; - } else { - var keys = Object.keys(obj); - objKeys = sort ? keys.sort(sort) : keys; - } - - var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\./g, '%2E') : String(prefix); - - var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix; - - if (allowEmptyArrays && isArray(obj) && obj.length === 0) { - return adjustedPrefix + '[]'; - } - - for (var j = 0; j < objKeys.length; ++j) { - var key = objKeys[j]; - var value = typeof key === 'object' && key && typeof key.value !== 'undefined' - ? key.value - : obj[key]; - - if (skipNulls && value === null) { - continue; - } - - var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, '%2E') : String(key); - var keyPrefix = isArray(obj) - ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix - : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']'); - - sideChannel.set(object, step); - var valueSideChannel = getSideChannel(); - valueSideChannel.set(sentinel, sideChannel); - pushToArray(values, stringify( - value, - keyPrefix, - generateArrayPrefix, - commaRoundTrip, - allowEmptyArrays, - strictNullHandling, - skipNulls, - encodeDotInKeys, - generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - valueSideChannel - )); - } - - return values; - }; - - var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { - if (!opts) { - return defaults; - } - - if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { - throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); - } - - if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') { - throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided'); - } - - if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') { - throw new TypeError('Encoder has to be a function.'); - } - - var charset = opts.charset || defaults.charset; - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - - var format = formats['default']; - if (typeof opts.format !== 'undefined') { - if (!has.call(formats.formatters, opts.format)) { - throw new TypeError('Unknown format option provided.'); - } - format = opts.format; - } - var formatter = formats.formatters[format]; - - var filter = defaults.filter; - if (typeof opts.filter === 'function' || isArray(opts.filter)) { - filter = opts.filter; - } - - var arrayFormat; - if (opts.arrayFormat in arrayPrefixGenerators) { - arrayFormat = opts.arrayFormat; - } else if ('indices' in opts) { - arrayFormat = opts.indices ? 'indices' : 'repeat'; - } else { - arrayFormat = defaults.arrayFormat; - } - - if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') { - throw new TypeError('`commaRoundTrip` must be a boolean, or absent'); - } - - var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; - - return { - addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix, - allowDots: allowDots, - allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, - arrayFormat: arrayFormat, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - commaRoundTrip: !!opts.commaRoundTrip, - delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter, - encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode, - encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys, - encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder, - encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly, - filter: filter, - format: format, - formatter: formatter, - serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate, - skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls, - sort: typeof opts.sort === 'function' ? opts.sort : null, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling - }; - }; - - stringify_1 = function (object, opts) { - var obj = object; - var options = normalizeStringifyOptions(opts); - - var objKeys; - var filter; - - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } else if (isArray(options.filter)) { - filter = options.filter; - objKeys = filter; - } - - var keys = []; - - if (typeof obj !== 'object' || obj === null) { - return ''; - } - - var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat]; - var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip; - - if (!objKeys) { - objKeys = Object.keys(obj); - } - - if (options.sort) { - objKeys.sort(options.sort); - } - - var sideChannel = getSideChannel(); - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - var value = obj[key]; - - if (options.skipNulls && value === null) { - continue; - } - pushToArray(keys, stringify( - value, - key, - generateArrayPrefix, - commaRoundTrip, - options.allowEmptyArrays, - options.strictNullHandling, - options.skipNulls, - options.encodeDotInKeys, - options.encode ? options.encoder : null, - options.filter, - options.sort, - options.allowDots, - options.serializeDate, - options.format, - options.formatter, - options.encodeValuesOnly, - options.charset, - sideChannel - )); - } - - var joined = keys.join(options.delimiter); - var prefix = options.addQueryPrefix === true ? '?' : ''; - - if (options.charsetSentinel) { - if (options.charset === 'iso-8859-1') { - // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark - prefix += 'utf8=%26%2310003%3B&'; - } else { - // encodeURIComponent('✓') - prefix += 'utf8=%E2%9C%93&'; - } - } - - return joined.length > 0 ? prefix + joined : ''; - }; - return stringify_1; -} - -var parse; -var hasRequiredParse; - -function requireParse () { - if (hasRequiredParse) return parse; - hasRequiredParse = 1; - - var utils = /*@__PURE__*/ requireUtils$1(); - - var has = Object.prototype.hasOwnProperty; - var isArray = Array.isArray; - - var defaults = { - allowDots: false, - allowEmptyArrays: false, - allowPrototypes: false, - allowSparse: false, - arrayLimit: 20, - charset: 'utf-8', - charsetSentinel: false, - comma: false, - decodeDotInKeys: false, - decoder: utils.decode, - delimiter: '&', - depth: 5, - duplicates: 'combine', - ignoreQueryPrefix: false, - interpretNumericEntities: false, - parameterLimit: 1000, - parseArrays: true, - plainObjects: false, - strictDepth: false, - strictNullHandling: false, - throwOnLimitExceeded: false - }; - - var interpretNumericEntities = function (str) { - return str.replace(/&#(\d+);/g, function ($0, numberStr) { - return String.fromCharCode(parseInt(numberStr, 10)); - }); - }; - - var parseArrayValue = function (val, options, currentArrayLength) { - if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) { - return val.split(','); - } - - if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) { - throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); - } - - return val; - }; - - // This is what browsers will submit when the ✓ character occurs in an - // application/x-www-form-urlencoded body and the encoding of the page containing - // the form is iso-8859-1, or when the submitted form has an accept-charset - // attribute of iso-8859-1. Presumably also with other charsets that do not contain - // the ✓ character, such as us-ascii. - var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') - - // These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. - var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') - - var parseValues = function parseQueryStringValues(str, options) { - var obj = { __proto__: null }; - - var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; - cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']'); - - var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; - var parts = cleanStr.split( - options.delimiter, - options.throwOnLimitExceeded ? limit + 1 : limit - ); - - if (options.throwOnLimitExceeded && parts.length > limit) { - throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.'); - } - - var skipIndex = -1; // Keep track of where the utf8 sentinel was found - var i; - - var charset = options.charset; - if (options.charsetSentinel) { - for (i = 0; i < parts.length; ++i) { - if (parts[i].indexOf('utf8=') === 0) { - if (parts[i] === charsetSentinel) { - charset = 'utf-8'; - } else if (parts[i] === isoSentinel) { - charset = 'iso-8859-1'; - } - skipIndex = i; - i = parts.length; // The eslint settings do not allow break; - } - } - } - - for (i = 0; i < parts.length; ++i) { - if (i === skipIndex) { - continue; - } - var part = parts[i]; - - var bracketEqualsPos = part.indexOf(']='); - var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; - - var key; - var val; - if (pos === -1) { - key = options.decoder(part, defaults.decoder, charset, 'key'); - val = options.strictNullHandling ? null : ''; - } else { - key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); - - val = utils.maybeMap( - parseArrayValue( - part.slice(pos + 1), - options, - isArray(obj[key]) ? obj[key].length : 0 - ), - function (encodedVal) { - return options.decoder(encodedVal, defaults.decoder, charset, 'value'); - } - ); - } - - if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { - val = interpretNumericEntities(String(val)); - } - - if (part.indexOf('[]=') > -1) { - val = isArray(val) ? [val] : val; - } - - var existing = has.call(obj, key); - if (existing && options.duplicates === 'combine') { - obj[key] = utils.combine(obj[key], val); - } else if (!existing || options.duplicates === 'last') { - obj[key] = val; - } - } - - return obj; - }; - - var parseObject = function (chain, val, options, valuesParsed) { - var currentArrayLength = 0; - if (chain.length > 0 && chain[chain.length - 1] === '[]') { - var parentKey = chain.slice(0, -1).join(''); - currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0; - } - - var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength); - - for (var i = chain.length - 1; i >= 0; --i) { - var obj; - var root = chain[i]; - - if (root === '[]' && options.parseArrays) { - obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null)) - ? [] - : utils.combine([], leaf); - } else { - obj = options.plainObjects ? { __proto__: null } : {}; - var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; - var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot; - var index = parseInt(decodedRoot, 10); - if (!options.parseArrays && decodedRoot === '') { - obj = { 0: leaf }; - } else if ( - !isNaN(index) - && root !== decodedRoot - && String(index) === decodedRoot - && index >= 0 - && (options.parseArrays && index <= options.arrayLimit) - ) { - obj = []; - obj[index] = leaf; - } else if (decodedRoot !== '__proto__') { - obj[decodedRoot] = leaf; - } - } - - leaf = obj; - } - - return leaf; - }; - - var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { - if (!givenKey) { - return; - } - - // Transform dot notation to bracket notation - var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; - - // The regex chunks - - var brackets = /(\[[^[\]]*])/; - var child = /(\[[^[\]]*])/g; - - // Get the parent - - var segment = options.depth > 0 && brackets.exec(key); - var parent = segment ? key.slice(0, segment.index) : key; - - // Stash the parent if it exists - - var keys = []; - if (parent) { - // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties - if (!options.plainObjects && has.call(Object.prototype, parent)) { - if (!options.allowPrototypes) { - return; - } - } - - keys.push(parent); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { - i += 1; - if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { - if (!options.allowPrototypes) { - return; - } - } - keys.push(segment[1]); - } - - // If there's a remainder, check strictDepth option for throw, else just add whatever is left - - if (segment) { - if (options.strictDepth === true) { - throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true'); - } - keys.push('[' + key.slice(segment.index) + ']'); - } - - return parseObject(keys, val, options, valuesParsed); - }; - - var normalizeParseOptions = function normalizeParseOptions(opts) { - if (!opts) { - return defaults; - } - - if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { - throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); - } - - if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') { - throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided'); - } - - if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') { - throw new TypeError('Decoder has to be a function.'); - } - - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - - if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') { - throw new TypeError('`throwOnLimitExceeded` option must be a boolean'); - } - - var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; - - var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates; - - if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') { - throw new TypeError('The duplicates option must be either combine, first, or last'); - } - - var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; - - return { - allowDots: allowDots, - allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, - allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, - allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse, - arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, - decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys, - decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, - delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, - // eslint-disable-next-line no-implicit-coercion, no-extra-parens - depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, - duplicates: duplicates, - ignoreQueryPrefix: opts.ignoreQueryPrefix === true, - interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, - parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, - parseArrays: opts.parseArrays !== false, - plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, - strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling, - throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false - }; - }; - - parse = function (str, opts) { - var options = normalizeParseOptions(opts); - - if (str === '' || str === null || typeof str === 'undefined') { - return options.plainObjects ? { __proto__: null } : {}; - } - - var tempObj = typeof str === 'string' ? parseValues(str, options) : str; - var obj = options.plainObjects ? { __proto__: null } : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string'); - obj = utils.merge(obj, newObj, options); - } - - if (options.allowSparse === true) { - return obj; - } - - return utils.compact(obj); - }; - return parse; -} - -var lib$2; -var hasRequiredLib$3; - -function requireLib$3 () { - if (hasRequiredLib$3) return lib$2; - hasRequiredLib$3 = 1; - - var stringify = /*@__PURE__*/ requireStringify(); - var parse = /*@__PURE__*/ requireParse(); - var formats = /*@__PURE__*/ requireFormats(); - - lib$2 = { - formats: formats, - parse: parse, - stringify: stringify - }; - return lib$2; -} - -/* - * Copyright Joyent, Inc. and other Node contributors. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to permit - * persons to whom the Software is furnished to do so, subject to the - * following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -var hasRequiredUrl; - -function requireUrl () { - if (hasRequiredUrl) return url; - hasRequiredUrl = 1; - - var punycode = requirePunycode(); - - function Url() { - 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; - } - - // Reference: RFC 3986, RFC 1808, RFC 2396 - - /* - * define these here so at least they only have to be - * compiled once on the first module load. - */ - var protocolPattern = /^([a-z0-9.+-]+:)/i, - portPattern = /:[0-9]*$/, - - // Special case for a simple path URL - simplePathPattern = /^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/, - - /* - * RFC 2396: characters reserved for delimiting URLs. - * We actually just auto-escape these. - */ - delims = [ - '<', '>', '"', '`', ' ', '\r', '\n', '\t' - ], - - // RFC 2396: characters not allowed for various reasons. - unwise = [ - '{', '}', '|', '\\', '^', '`' - ].concat(delims), - - // Allowed by RFCs, but cause of XSS attacks. Always escape these. - autoEscape = ['\''].concat(unwise), - /* - * Characters that are never ever allowed in a hostname. - * Note that any invalid chars are also handled, but these - * are the ones that are *expected* to be seen, so we fast-path - * them. - */ - nonHostChars = [ - '%', '/', '?', ';', '#' - ].concat(autoEscape), - hostEndingChars = [ - '/', '?', '#' - ], - hostnameMaxLen = 255, - hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, - hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, - // protocols that can allow "unsafe" and "unwise" chars. - unsafeProtocol = { - javascript: true, - 'javascript:': true - }, - // protocols that never have a hostname. - hostlessProtocol = { - javascript: true, - 'javascript:': true - }, - // protocols that always contain a // bit. - slashedProtocol = { - http: true, - https: true, - ftp: true, - gopher: true, - file: true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - querystring = /*@__PURE__*/ requireLib$3(); - - function urlParse(url, parseQueryString, slashesDenoteHost) { - if (url && typeof url === 'object' && url instanceof Url) { return url; } - - var u = new Url(); - u.parse(url, parseQueryString, slashesDenoteHost); - return u; - } - - Url.prototype.parse = function (url, parseQueryString, slashesDenoteHost) { - if (typeof url !== 'string') { - throw new TypeError("Parameter 'url' must be a string, not " + typeof url); - } - - /* - * Copy chrome, IE, opera backslash-handling behavior. - * Back slashes before the query string get converted to forward slashes - * See: https://code.google.com/p/chromium/issues/detail?id=25916 - */ - var queryIndex = url.indexOf('?'), - splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#', - uSplit = url.split(splitter), - slashRegex = /\\/g; - uSplit[0] = uSplit[0].replace(slashRegex, '/'); - url = uSplit.join(splitter); - - var rest = url; - - /* - * trim before proceeding. - * This is to support parse stuff like " http://foo.com \n" - */ - rest = rest.trim(); - - if (!slashesDenoteHost && url.split('#').length === 1) { - // Try fast path regexp - var simplePath = simplePathPattern.exec(rest); - if (simplePath) { - this.path = rest; - this.href = rest; - this.pathname = simplePath[1]; - if (simplePath[2]) { - this.search = simplePath[2]; - if (parseQueryString) { - this.query = querystring.parse(this.search.substr(1)); - } else { - this.query = this.search.substr(1); - } - } else if (parseQueryString) { - this.search = ''; - this.query = {}; - } - return this; - } - } - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - var lowerProto = proto.toLowerCase(); - this.protocol = lowerProto; - rest = rest.substr(proto.length); - } - - /* - * figure out if it's got a host - * user@server is *always* interpreted as a hostname, and url - * resolution will treat //foo/bar as host=foo,path=bar because that's - * how the browser resolves relative URLs. - */ - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@/]+@[^@/]+/)) { - var slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - this.slashes = true; - } - } - - if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) { - - /* - * there's a hostname. - * the first instance of /, ?, ;, or # ends the host. - * - * If there is an @ in the hostname, then non-host chars *are* allowed - * to the left of the last @ sign, unless some host-ending character - * comes *before* the @-sign. - * URLs are obnoxious. - * - * ex: - * http://a@b@c/ => user:a@b host:c - * http://a@b?@c => user:a host:c path:/?@c - */ - - /* - * v0.12 TODO(isaacs): This is not quite how Chrome does things. - * Review our test case against browsers more comprehensively. - */ - - // find the first instance of any hostEndingChars - var hostEnd = -1; - for (var i = 0; i < hostEndingChars.length; i++) { - var hec = rest.indexOf(hostEndingChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; } - } - - /* - * at this point, either we have an explicit point where the - * auth portion cannot go past, or the last @ char is the decider. - */ - var auth, atSign; - if (hostEnd === -1) { - // atSign can be anywhere. - atSign = rest.lastIndexOf('@'); - } else { - /* - * atSign must be in auth portion. - * http://a@b/c@d => host:b auth:a path:/c@d - */ - atSign = rest.lastIndexOf('@', hostEnd); - } - - /* - * Now we have a portion which is definitely the auth. - * Pull that off. - */ - if (atSign !== -1) { - auth = rest.slice(0, atSign); - rest = rest.slice(atSign + 1); - this.auth = decodeURIComponent(auth); - } - - // the host is the remaining to the left of the first non-host char - hostEnd = -1; - for (var i = 0; i < nonHostChars.length; i++) { - var hec = rest.indexOf(nonHostChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; } - } - // if we still have not hit it, then the entire thing is a host. - if (hostEnd === -1) { hostEnd = rest.length; } - - this.host = rest.slice(0, hostEnd); - rest = rest.slice(hostEnd); - - // pull out port. - this.parseHost(); - - /* - * we've indicated that there is a hostname, - * so even if it's empty, it has to be present. - */ - this.hostname = this.hostname || ''; - - /* - * if hostname begins with [ and ends with ] - * assume that it's an IPv6 address. - */ - var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']'; - - // validate a little. - if (!ipv6Hostname) { - var hostparts = this.hostname.split(/\./); - for (var i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) { continue; } - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - /* - * we replace non-ASCII char with a temporary placeholder - * we need this to make sure size of hostname is not - * broken by replacing non-ASCII by nothing - */ - newpart += 'x'; - } else { - newpart += part[j]; - } - } - // we test again with ASCII char only - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = '/' + notHost.join('.') + rest; - } - this.hostname = validParts.join('.'); - break; - } - } - } - } - - if (this.hostname.length > hostnameMaxLen) { - this.hostname = ''; - } else { - // hostnames are always lower case. - this.hostname = this.hostname.toLowerCase(); - } - - if (!ipv6Hostname) { - /* - * IDNA Support: Returns a punycoded representation of "domain". - * It only converts parts of the domain name that - * have non-ASCII characters, i.e. it doesn't matter if - * you call it with a domain that already is ASCII-only. - */ - this.hostname = punycode.toASCII(this.hostname); - } - - var p = this.port ? ':' + this.port : ''; - var h = this.hostname || ''; - this.host = h + p; - this.href += this.host; - - /* - * strip [ and ] from the hostname - * the host field still retains them, though - */ - if (ipv6Hostname) { - this.hostname = this.hostname.substr(1, this.hostname.length - 2); - if (rest[0] !== '/') { - rest = '/' + rest; - } - } - } - - /* - * now rest is set to the post-host stuff. - * chop off any delim chars. - */ - if (!unsafeProtocol[lowerProto]) { - - /* - * First, make 100% sure that any "autoEscape" chars get - * escaped, even if encodeURIComponent doesn't think they - * need to be. - */ - for (var i = 0, l = autoEscape.length; i < l; i++) { - var ae = autoEscape[i]; - if (rest.indexOf(ae) === -1) { continue; } - var esc = encodeURIComponent(ae); - if (esc === ae) { - esc = escape(ae); - } - rest = rest.split(ae).join(esc); - } - } - - // chop off from the tail first. - var hash = rest.indexOf('#'); - if (hash !== -1) { - // got a fragment string. - this.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf('?'); - if (qm !== -1) { - this.search = rest.substr(qm); - this.query = rest.substr(qm + 1); - if (parseQueryString) { - this.query = querystring.parse(this.query); - } - rest = rest.slice(0, qm); - } else if (parseQueryString) { - // no query string, but parseQueryString still requested - this.search = ''; - this.query = {}; - } - if (rest) { this.pathname = rest; } - if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) { - this.pathname = '/'; - } - - // to support http.request - if (this.pathname || this.search) { - var p = this.pathname || ''; - var s = this.search || ''; - this.path = p + s; - } - - // finally, reconstruct the href based on what has been validated. - this.href = this.format(); - return this; - }; - - // format a parsed object into a url string - function urlFormat(obj) { - /* - * ensure it's an object, and not a string url. - * If it's an obj, this is a no-op. - * this way, you can call url_format() on strings - * to clean up potentially wonky urls. - */ - if (typeof obj === 'string') { obj = urlParse(obj); } - if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); } - return obj.format(); - } - - Url.prototype.format = function () { - var auth = this.auth || ''; - if (auth) { - auth = encodeURIComponent(auth); - auth = auth.replace(/%3A/i, ':'); - auth += '@'; - } - - var protocol = this.protocol || '', - pathname = this.pathname || '', - hash = this.hash || '', - host = false, - query = ''; - - if (this.host) { - host = auth + this.host; - } else if (this.hostname) { - host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']'); - if (this.port) { - host += ':' + this.port; - } - } - - if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) { - query = querystring.stringify(this.query, { - arrayFormat: 'repeat', - addQueryPrefix: false - }); - } - - var search = this.search || (query && ('?' + query)) || ''; - - if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; } - - /* - * only the slashedProtocols get the //. Not mailto:, xmpp:, etc. - * unless they had them to begin with. - */ - if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) { - host = '//' + (host || ''); - if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; } - } else if (!host) { - host = ''; - } - - if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; } - if (search && search.charAt(0) !== '?') { search = '?' + search; } - - pathname = pathname.replace(/[?#]/g, function (match) { - return encodeURIComponent(match); - }); - search = search.replace('#', '%23'); - - return protocol + host + pathname + search + hash; - }; - - function urlResolve(source, relative) { - return urlParse(source, false, true).resolve(relative); - } - - Url.prototype.resolve = function (relative) { - return this.resolveObject(urlParse(relative, false, true)).format(); - }; - - function urlResolveObject(source, relative) { - if (!source) { return relative; } - return urlParse(source, false, true).resolveObject(relative); - } - - Url.prototype.resolveObject = function (relative) { - if (typeof relative === 'string') { - var rel = new Url(); - rel.parse(relative, false, true); - relative = rel; - } - - var result = new Url(); - var tkeys = Object.keys(this); - for (var tk = 0; tk < tkeys.length; tk++) { - var tkey = tkeys[tk]; - result[tkey] = this[tkey]; - } - - /* - * hash is always overridden, no matter what. - * even href="" will remove it. - */ - result.hash = relative.hash; - - // if the relative url is empty, then there's nothing left to do here. - if (relative.href === '') { - result.href = result.format(); - return result; - } - - // hrefs like //foo/bar always cut to the protocol. - if (relative.slashes && !relative.protocol) { - // take everything except the protocol from relative - var rkeys = Object.keys(relative); - for (var rk = 0; rk < rkeys.length; rk++) { - var rkey = rkeys[rk]; - if (rkey !== 'protocol') { result[rkey] = relative[rkey]; } - } - - // urlParse appends trailing / to urls like http://www.example.com - if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) { - result.pathname = '/'; - result.path = result.pathname; - } - - result.href = result.format(); - return result; - } - - if (relative.protocol && relative.protocol !== result.protocol) { - /* - * if it's a known url protocol, then changing - * the protocol does weird things - * first, if it's not file:, then we MUST have a host, - * and if there was a path - * to begin with, then we MUST have a path. - * if it is file:, then the host is dropped, - * because that's known to be hostless. - * anything else is assumed to be absolute. - */ - if (!slashedProtocol[relative.protocol]) { - var keys = Object.keys(relative); - for (var v = 0; v < keys.length; v++) { - var k = keys[v]; - result[k] = relative[k]; - } - result.href = result.format(); - return result; - } - - result.protocol = relative.protocol; - if (!relative.host && !hostlessProtocol[relative.protocol]) { - var relPath = (relative.pathname || '').split('/'); - while (relPath.length && !(relative.host = relPath.shift())) { } - if (!relative.host) { relative.host = ''; } - if (!relative.hostname) { relative.hostname = ''; } - if (relPath[0] !== '') { relPath.unshift(''); } - if (relPath.length < 2) { relPath.unshift(''); } - result.pathname = relPath.join('/'); - } else { - result.pathname = relative.pathname; - } - result.search = relative.search; - result.query = relative.query; - result.host = relative.host || ''; - result.auth = relative.auth; - result.hostname = relative.hostname || relative.host; - result.port = relative.port; - // to support http.request - if (result.pathname || result.search) { - var p = result.pathname || ''; - var s = result.search || ''; - result.path = p + s; - } - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - } - - var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/', - isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/', - mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname), - removeAllDots = mustEndAbs, - srcPath = result.pathname && result.pathname.split('/') || [], - relPath = relative.pathname && relative.pathname.split('/') || [], - psychotic = result.protocol && !slashedProtocol[result.protocol]; - - /* - * if the url is a non-slashed url, then relative - * links like ../.. should be able - * to crawl up to the hostname, as well. This is strange. - * result.protocol has already been set by now. - * Later on, put the first path part into the host field. - */ - if (psychotic) { - result.hostname = ''; - result.port = null; - if (result.host) { - if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); } - } - result.host = ''; - if (relative.protocol) { - relative.hostname = null; - relative.port = null; - if (relative.host) { - if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); } - } - relative.host = null; - } - mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); - } - - if (isRelAbs) { - // it's absolute. - result.host = relative.host || relative.host === '' ? relative.host : result.host; - result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname; - result.search = relative.search; - result.query = relative.query; - srcPath = relPath; - // fall through to the dot-handling below. - } else if (relPath.length) { - /* - * it's relative - * throw away the existing file, and take the new path instead. - */ - if (!srcPath) { srcPath = []; } - srcPath.pop(); - srcPath = srcPath.concat(relPath); - result.search = relative.search; - result.query = relative.query; - } else if (relative.search != null) { - /* - * just pull out the search. - * like href='?foo'. - * Put this after the other two cases because it simplifies the booleans - */ - if (psychotic) { - result.host = srcPath.shift(); - result.hostname = result.host; - /* - * occationaly the auth can get stuck only in host - * this especially happens in cases like - * url.resolveObject('mailto:local1@domain1', 'local2@domain2') - */ - var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.hostname = authInHost.shift(); - result.host = result.hostname; - } - } - result.search = relative.search; - result.query = relative.query; - // to support http.request - if (result.pathname !== null || result.search !== null) { - result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : ''); - } - result.href = result.format(); - return result; - } - - if (!srcPath.length) { - /* - * no path at all. easy. - * we've already handled the other stuff above. - */ - result.pathname = null; - // to support http.request - if (result.search) { - result.path = '/' + result.search; - } else { - result.path = null; - } - result.href = result.format(); - return result; - } - - /* - * if a url ENDs in . or .., then it must get a trailing slash. - * however, if it ends in anything else non-slashy, - * then it must NOT get a trailing slash. - */ - var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === ''; - - /* - * strip single dots, resolve double dots to parent dir - * if the path tries to go above the root, `up` ends up > 0 - */ - var up = 0; - for (var i = srcPath.length; i >= 0; i--) { - last = srcPath[i]; - if (last === '.') { - srcPath.splice(i, 1); - } else if (last === '..') { - srcPath.splice(i, 1); - up++; - } else if (up) { - srcPath.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (!mustEndAbs && !removeAllDots) { - for (; up--; up) { - srcPath.unshift('..'); - } - } - - if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { - srcPath.unshift(''); - } - - if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { - srcPath.push(''); - } - - var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/'); - - // put the host back - if (psychotic) { - result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : ''; - result.host = result.hostname; - /* - * occationaly the auth can get stuck only in host - * this especially happens in cases like - * url.resolveObject('mailto:local1@domain1', 'local2@domain2') - */ - var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.hostname = authInHost.shift(); - result.host = result.hostname; - } - } - - mustEndAbs = mustEndAbs || (result.host && srcPath.length); - - if (mustEndAbs && !isAbsolute) { - srcPath.unshift(''); - } - - if (srcPath.length > 0) { - result.pathname = srcPath.join('/'); - } else { - result.pathname = null; - result.path = null; - } - - // to support request.http - if (result.pathname !== null || result.search !== null) { - result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : ''); - } - result.auth = relative.auth || result.auth; - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - }; - - Url.prototype.parseHost = function () { - var host = this.host; - var port = portPattern.exec(host); - if (port) { - port = port[0]; - if (port !== ':') { - this.port = port.substr(1); - } - host = host.substr(0, host.length - port.length); - } - if (host) { this.hostname = host; } - }; - - url.parse = urlParse; - url.resolve = urlResolve; - url.resolveObject = urlResolveObject; - url.format = urlFormat; - - url.Url = Url; - return url; -} - -var hasRequiredUtil$2; - -function requireUtil$2 () { - if (hasRequiredUtil$2) return util$3; - hasRequiredUtil$2 = 1; - Object.defineProperty(util$3, "__esModule", { value: true }); - util$3.getWriteSyncArgs = util$3.getWriteArgs = util$3.bufToUint8 = void 0; - util$3.promisify = promisify; - util$3.validateCallback = validateCallback; - util$3.modeToNumber = modeToNumber; - util$3.nullCheck = nullCheck; - util$3.pathToFilename = pathToFilename; - util$3.createError = createError; - util$3.genRndStr6 = genRndStr6; - util$3.flagsToNumber = flagsToNumber; - util$3.streamToBuffer = streamToBuffer; - util$3.bufferToEncoding = bufferToEncoding; - util$3.isReadableStream = isReadableStream; - const constants_1 = requireConstants(); - const errors = requireErrors$1(); - const buffer_1 = requireBuffer(); - const queueMicrotask_1 = requireQueueMicrotask(); - const util_1 = requireUtil$3(); - function promisify(fs, fn, getResult = input => input) { - return (...args) => new Promise((resolve, reject) => { - fs[fn].bind(fs)(...args, (error, result) => { - if (error) - return reject(error); - return resolve(getResult(result)); - }); - }); - } - function validateCallback(callback) { - if (typeof callback !== 'function') - throw TypeError(constants_1.ERRSTR.CB); - return callback; - } - function _modeToNumber(mode, def) { - if (typeof mode === 'number') - return mode; - if (typeof mode === 'string') - return parseInt(mode, 8); - if (def) - return modeToNumber(def); - return undefined; - } - function modeToNumber(mode, def) { - const result = _modeToNumber(mode, def); - if (typeof result !== 'number' || isNaN(result)) - throw new TypeError(constants_1.ERRSTR.MODE_INT); - return result; - } - function nullCheck(path, callback) { - if (('' + path).indexOf('\u0000') !== -1) { - const er = new Error('Path must be a string without null bytes'); - er.code = 'ENOENT'; - if (typeof callback !== 'function') - throw er; - (0, queueMicrotask_1.default)(() => { - callback(er); - }); - return false; - } - return true; - } - function getPathFromURLPosix(url) { - if (url.hostname !== '') { - throw new errors.TypeError('ERR_INVALID_FILE_URL_HOST', process$1.platform); - } - const pathname = url.pathname; - for (let n = 0; n < pathname.length; n++) { - if (pathname[n] === '%') { - const third = pathname.codePointAt(n + 2) | 0x20; - if (pathname[n + 1] === '2' && third === 102) { - throw new errors.TypeError('ERR_INVALID_FILE_URL_PATH', 'must not include encoded / characters'); - } - } - } - return decodeURIComponent(pathname); - } - function pathToFilename(path) { - if (path instanceof Uint8Array) { - path = (0, buffer_1.bufferFrom)(path); - } - if (typeof path !== 'string' && !buffer_1.Buffer.isBuffer(path)) { - try { - if (!(path instanceof requireUrl().URL)) - throw new TypeError(constants_1.ERRSTR.PATH_STR); - } - catch (err) { - throw new TypeError(constants_1.ERRSTR.PATH_STR); - } - path = getPathFromURLPosix(path); - } - const pathString = String(path); - nullCheck(pathString); - // return slash(pathString); - return pathString; - } - const ENOENT = 'ENOENT'; - const EBADF = 'EBADF'; - const EINVAL = 'EINVAL'; - const EPERM = 'EPERM'; - const EPROTO = 'EPROTO'; - const EEXIST = 'EEXIST'; - const ENOTDIR = 'ENOTDIR'; - const EMFILE = 'EMFILE'; - const EACCES = 'EACCES'; - const EISDIR = 'EISDIR'; - const ENOTEMPTY = 'ENOTEMPTY'; - const ENOSYS = 'ENOSYS'; - const ERR_FS_EISDIR = 'ERR_FS_EISDIR'; - const ERR_OUT_OF_RANGE = 'ERR_OUT_OF_RANGE'; - function formatError(errorCode, func = '', path = '', path2 = '') { - let pathFormatted = ''; - if (path) - pathFormatted = ` '${path}'`; - if (path2) - pathFormatted += ` -> '${path2}'`; - switch (errorCode) { - case ENOENT: - return `ENOENT: no such file or directory, ${func}${pathFormatted}`; - case EBADF: - return `EBADF: bad file descriptor, ${func}${pathFormatted}`; - case EINVAL: - return `EINVAL: invalid argument, ${func}${pathFormatted}`; - case EPERM: - return `EPERM: operation not permitted, ${func}${pathFormatted}`; - case EPROTO: - return `EPROTO: protocol error, ${func}${pathFormatted}`; - case EEXIST: - return `EEXIST: file already exists, ${func}${pathFormatted}`; - case ENOTDIR: - return `ENOTDIR: not a directory, ${func}${pathFormatted}`; - case EISDIR: - return `EISDIR: illegal operation on a directory, ${func}${pathFormatted}`; - case EACCES: - return `EACCES: permission denied, ${func}${pathFormatted}`; - case ENOTEMPTY: - return `ENOTEMPTY: directory not empty, ${func}${pathFormatted}`; - case EMFILE: - return `EMFILE: too many open files, ${func}${pathFormatted}`; - case ENOSYS: - return `ENOSYS: function not implemented, ${func}${pathFormatted}`; - case ERR_FS_EISDIR: - return `[ERR_FS_EISDIR]: Path is a directory: ${func} returned EISDIR (is a directory) ${path}`; - case ERR_OUT_OF_RANGE: - return `[ERR_OUT_OF_RANGE]: value out of range, ${func}${pathFormatted}`; - default: - return `${errorCode}: error occurred, ${func}${pathFormatted}`; - } - } - function createError(errorCode, func = '', path = '', path2 = '', Constructor = Error) { - const error = new Constructor(formatError(errorCode, func, path, path2)); - error.code = errorCode; - if (path) { - error.path = path; - } - return error; - } - function genRndStr6() { - return Math.random().toString(36).slice(2, 8).padEnd(6, '0'); - } - function flagsToNumber(flags) { - if (typeof flags === 'number') - return flags; - if (typeof flags === 'string') { - const flagsNum = constants_1.FLAGS[flags]; - if (typeof flagsNum !== 'undefined') - return flagsNum; - } - // throw new TypeError(formatError(ERRSTR_FLAG(flags))); - throw new errors.TypeError('ERR_INVALID_OPT_VALUE', 'flags', flags); - } - function streamToBuffer(stream) { - const chunks = []; - return new Promise((resolve, reject) => { - stream.on('data', chunk => chunks.push(chunk)); - stream.on('end', () => resolve(buffer_1.Buffer.concat(chunks))); - stream.on('error', reject); - }); - } - const bufToUint8 = (buf) => new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength); - util$3.bufToUint8 = bufToUint8; - const getWriteArgs = (fd, a, b, c, d, e) => { - (0, util_1.validateFd)(fd); - let offset = 0; - let length; - let position = null; - let encoding; - let callback; - const tipa = typeof a; - const tipb = typeof b; - const tipc = typeof c; - const tipd = typeof d; - if (tipa !== 'string') { - if (tipb === 'function') { - callback = b; - } - else if (tipc === 'function') { - offset = b | 0; - callback = c; - } - else if (tipd === 'function') { - offset = b | 0; - length = c; - callback = d; - } - else { - offset = b | 0; - length = c; - position = d; - callback = e; - } - } - else { - if (tipb === 'function') { - callback = b; - } - else if (tipc === 'function') { - position = b; - callback = c; - } - else if (tipd === 'function') { - position = b; - encoding = c; - callback = d; - } - } - const buf = (0, util_1.dataToBuffer)(a, encoding); - if (tipa !== 'string') { - if (typeof length === 'undefined') - length = buf.length; - } - else { - offset = 0; - length = buf.length; - } - const cb = validateCallback(callback); - return [fd, tipa === 'string', buf, offset, length, position, cb]; - }; - util$3.getWriteArgs = getWriteArgs; - const getWriteSyncArgs = (fd, a, b, c, d) => { - (0, util_1.validateFd)(fd); - let encoding; - let offset; - let length; - let position; - const isBuffer = typeof a !== 'string'; - if (isBuffer) { - offset = (b || 0) | 0; - length = c; - position = d; - } - else { - position = b; - encoding = c; - } - const buf = (0, util_1.dataToBuffer)(a, encoding); - if (isBuffer) { - if (typeof length === 'undefined') { - length = buf.length; - } - } - else { - offset = 0; - length = buf.length; - } - return [fd, buf, offset || 0, length, position]; - }; - util$3.getWriteSyncArgs = getWriteSyncArgs; - function bufferToEncoding(buffer, encoding) { - if (!encoding || encoding === 'buffer') - return buffer; - else - return buffer.toString(encoding); - } - function isReadableStream(stream) { - return (stream !== null && - typeof stream === 'object' && - typeof stream.pipe === 'function' && - typeof stream.on === 'function' && - stream.readable === true); - } - - return util$3; -} - -var hasRequiredSuperblock; - -function requireSuperblock () { - if (hasRequiredSuperblock) return Superblock; - hasRequiredSuperblock = 1; - Object.defineProperty(Superblock, "__esModule", { value: true }); - Superblock.Superblock = void 0; - const path_1 = requirePath(); - const Node_1 = requireNode(); - const Link_1 = requireLink(); - const File_1 = requireFile(); - const buffer_1 = requireBuffer(); - const process_1 = requireProcess(); - const constants_1 = requireConstants$1(); - const constants_2 = requireConstants(); - const util_1 = requireUtil$2(); - const util_2 = requireUtil$3(); - const json_1 = requireJson(); - const pathSep = path_1.posix ? path_1.posix.sep : path_1.sep; - const pathRelative = path_1.posix ? path_1.posix.relative : path_1.relative; - const pathJoin = path_1.posix ? path_1.posix.join : path_1.join; - const { O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL, O_TRUNC, O_APPEND, O_DIRECTORY } = constants_1.constants; - /** - * Represents a filesystem superblock, which is the root of a virtual - * filesystem in Linux. - * @see https://lxr.linux.no/linux+v3.11.2/include/linux/fs.h#L1242 - */ - let Superblock$1 = class Superblock { - static fromJSON(json, cwd) { - const vol = new Superblock(); - vol.fromJSON(json, cwd); - return vol; - } - static fromNestedJSON(json, cwd) { - const vol = new Superblock(); - vol.fromNestedJSON(json, cwd); - return vol; - } - constructor(props = {}) { - // I-node number counter. - this.ino = 0; - // A mapping for i-node numbers to i-nodes (`Node`); - this.inodes = {}; - // List of released i-node numbers, for reuse. - this.releasedInos = []; - // A mapping for file descriptors to `File`s. - this.fds = {}; - // A list of reusable (opened and closed) file descriptors, that should be - // used first before creating a new file descriptor. - this.releasedFds = []; - // Max number of open files. - this.maxFiles = 10000; - // Current number of open files. - this.openFiles = 0; - this.open = (filename, flagsNum, modeNum, resolveSymlinks = true) => { - const file = this.openFile(filename, flagsNum, modeNum, resolveSymlinks); - if (!file) - throw (0, util_1.createError)("ENOENT" /* ERROR_CODE.ENOENT */, 'open', filename); - return file.fd; - }; - this.writeFile = (id, buf, flagsNum, modeNum) => { - const isUserFd = typeof id === 'number'; - let fd; - if (isUserFd) - fd = id; - else - fd = this.open((0, util_1.pathToFilename)(id), flagsNum, modeNum); - let offset = 0; - let length = buf.length; - let position = flagsNum & O_APPEND ? undefined : 0; - try { - while (length > 0) { - const written = this.write(fd, buf, offset, length, position); - offset += written; - length -= written; - if (position !== undefined) - position += written; - } - } - finally { - if (!isUserFd) - this.close(fd); - } - }; - this.read = (fd, buffer, offset, length, position) => { - if (buffer.byteLength < length) { - throw (0, util_1.createError)("ERR_OUT_OF_RANGE" /* ERROR_CODE.ERR_OUT_OF_RANGE */, 'read', undefined, undefined, RangeError); - } - const file = this.getFileByFdOrThrow(fd); - if (file.node.isSymlink()) { - throw (0, util_1.createError)("EPERM" /* ERROR_CODE.EPERM */, 'read', file.link.getPath()); - } - return file.read(buffer, Number(offset), Number(length), position === -1 || typeof position !== 'number' ? undefined : position); - }; - this.readv = (fd, buffers, position) => { - const file = this.getFileByFdOrThrow(fd); - let p = position ?? undefined; - if (p === -1) - p = undefined; - let bytesRead = 0; - for (const buffer of buffers) { - const bytes = file.read(buffer, 0, buffer.byteLength, p); - p = undefined; - bytesRead += bytes; - if (bytes < buffer.byteLength) - break; - } - return bytesRead; - }; - this.link = (filename1, filename2) => { - let link1; - try { - link1 = this.getLinkOrThrow(filename1, 'link'); - } - catch (err) { - if (err.code) - err = (0, util_1.createError)(err.code, 'link', filename1, filename2); - throw err; - } - const dirname2 = (0, path_1.dirname)(filename2); - let dir2; - try { - dir2 = this.getLinkOrThrow(dirname2, 'link'); - } - catch (err) { - // Augment error with filename1 - if (err.code) - err = (0, util_1.createError)(err.code, 'link', filename1, filename2); - throw err; - } - const name = (0, path_1.basename)(filename2); - if (dir2.getChild(name)) - throw (0, util_1.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'link', filename1, filename2); - const node = link1.getNode(); - node.nlink++; - dir2.createChild(name, node); - }; - this.unlink = (filename) => { - const link = this.getLinkOrThrow(filename, 'unlink'); - // TODO: Check if it is file, dir, other... - if (link.length) - throw Error('Dir not empty...'); - this.deleteLink(link); - const node = link.getNode(); - node.nlink--; - // When all hard links to i-node are deleted, remove the i-node, too. - if (node.nlink <= 0) { - this.deleteNode(node); - } - }; - this.symlink = (targetFilename, pathFilename) => { - const pathSteps = (0, util_2.filenameToSteps)(pathFilename); - // Check if directory exists, where we about to create a symlink. - let dirLink; - try { - dirLink = this.getLinkParentAsDirOrThrow(pathSteps); - } - catch (err) { - // Catch error to populate with the correct fields - getLinkParentAsDirOrThrow won't be aware of the second path - if (err.code) - err = (0, util_1.createError)(err.code, 'symlink', targetFilename, pathFilename); - throw err; - } - const name = pathSteps[pathSteps.length - 1]; - // Check if new file already exists. - if (dirLink.getChild(name)) - throw (0, util_1.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'symlink', targetFilename, pathFilename); - // Check permissions on the path where we are creating the symlink. - // Note we're not checking permissions on the target path: It is not an error to create a symlink to a - // non-existent or inaccessible target - const node = dirLink.getNode(); - if (!node.canExecute() || !node.canWrite()) - throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'symlink', targetFilename, pathFilename); - // Create symlink. - const symlink = dirLink.createChild(name); - symlink.getNode().makeSymlink(targetFilename); - return symlink; - }; - this.rename = (oldPathFilename, newPathFilename) => { - let link; - try { - link = this.getResolvedLinkOrThrow(oldPathFilename); - } - catch (err) { - // Augment err with newPathFilename - if (err.code) - err = (0, util_1.createError)(err.code, 'rename', oldPathFilename, newPathFilename); - throw err; - } - // TODO: Check if it is directory, if non-empty, we cannot move it, right? - // Check directory exists for the new location. - let newPathDirLink; - try { - newPathDirLink = this.getLinkParentAsDirOrThrow(newPathFilename); - } - catch (err) { - // Augment error with oldPathFilename - if (err.code) - err = (0, util_1.createError)(err.code, 'rename', oldPathFilename, newPathFilename); - throw err; - } - // TODO: Also treat cases with directories and symbolic links. - // TODO: See: http://man7.org/linux/man-pages/man2/rename.2.html - // Remove hard link from old folder. - const oldLinkParent = link.parent; - if (!oldLinkParent) - throw (0, util_1.createError)("EINVAL" /* ERROR_CODE.EINVAL */, 'rename', oldPathFilename, newPathFilename); - // Check we have access and write permissions in both places - const oldParentNode = oldLinkParent.getNode(); - const newPathDirNode = newPathDirLink.getNode(); - if (!oldParentNode.canExecute() || - !oldParentNode.canWrite() || - !newPathDirNode.canExecute() || - !newPathDirNode.canWrite()) { - throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'rename', oldPathFilename, newPathFilename); - } - oldLinkParent.deleteChild(link); - // Rename should overwrite the new path, if that exists. - const name = (0, path_1.basename)(newPathFilename); - link.name = name; - link.steps = [...newPathDirLink.steps, name]; - newPathDirLink.setChild(link.getName(), link); - }; - this.mkdir = (filename, modeNum) => { - const steps = (0, util_2.filenameToSteps)(filename); - // This will throw if user tries to create root dir `fs.mkdirSync('/')`. - if (!steps.length) - throw (0, util_1.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'mkdir', filename); - const dir = this.getLinkParentAsDirOrThrow(filename, 'mkdir'); - // Check path already exists. - const name = steps[steps.length - 1]; - if (dir.getChild(name)) - throw (0, util_1.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'mkdir', filename); - const node = dir.getNode(); - if (!node.canWrite() || !node.canExecute()) - throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'mkdir', filename); - dir.createChild(name, this.createNode(constants_1.constants.S_IFDIR | modeNum)); - }; - /** - * Creates directory tree recursively. - */ - this.mkdirp = (filename, modeNum) => { - let created = false; - const steps = (0, util_2.filenameToSteps)(filename); - let curr = null; - let i = steps.length; - // Find the longest subpath of filename that still exists: - for (i = steps.length; i >= 0; i--) { - curr = this.getResolvedLink(steps.slice(0, i)); - if (curr) - break; - } - if (!curr) { - curr = this.root; - i = 0; - } - // curr is now the last directory that still exists. - // (If none of them existed, curr is the root.) - // Check access the lazy way: - curr = this.getResolvedLinkOrThrow(path_1.sep + steps.slice(0, i).join(path_1.sep), 'mkdir'); - // Start creating directories: - for (i; i < steps.length; i++) { - const node = curr.getNode(); - if (node.isDirectory()) { - // Check we have permissions - if (!node.canExecute() || !node.canWrite()) - throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'mkdir', filename); - } - else { - throw (0, util_1.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'mkdir', filename); - } - created = true; - curr = curr.createChild(steps[i], this.createNode(constants_1.constants.S_IFDIR | modeNum)); - } - return created ? filename : undefined; - }; - this.rmdir = (filename, recursive = false) => { - const link = this.getLinkAsDirOrThrow(filename, 'rmdir'); - if (link.length && !recursive) - throw (0, util_1.createError)("ENOTEMPTY" /* ERROR_CODE.ENOTEMPTY */, 'rmdir', filename); - this.deleteLink(link); - }; - this.rm = (filename, force = false, recursive = false) => { - // "stat" is used to match Node's native error message. - let link; - try { - link = this.getResolvedLinkOrThrow(filename, 'stat'); - } - catch (err) { - // Silently ignore missing paths if force option is true - if (err.code === "ENOENT" /* ERROR_CODE.ENOENT */ && force) - return; - else - throw err; - } - if (link.getNode().isDirectory() && !recursive) - throw (0, util_1.createError)("ERR_FS_EISDIR" /* ERROR_CODE.ERR_FS_EISDIR */, 'rm', filename); - if (!link.parent?.getNode().canWrite()) - throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'rm', filename); - this.deleteLink(link); - }; - this.close = (fd) => { - (0, util_2.validateFd)(fd); - const file = this.getFileByFdOrThrow(fd, 'close'); - this.closeFile(file); - }; - const root = this.createLink(); - root.setNode(this.createNode(constants_1.constants.S_IFDIR | 0o777)); - root.setChild('.', root); - root.getNode().nlink++; - root.setChild('..', root); - root.getNode().nlink++; - this.root = root; - } - createLink(parent, name, isDirectory = false, mode) { - if (!parent) { - return new Link_1.Link(this, void 0, ''); - } - if (!name) { - throw new Error('createLink: name cannot be empty'); - } - // If no explicit permission is provided, use defaults based on type - const finalPerm = mode ?? (isDirectory ? 0o777 : 0o666); - // To prevent making a breaking change, `mode` can also just be a permission number - // and the file type is set based on `isDirectory` - const hasFileType = mode && mode & constants_1.constants.S_IFMT; - const modeType = hasFileType ? mode & constants_1.constants.S_IFMT : isDirectory ? constants_1.constants.S_IFDIR : constants_1.constants.S_IFREG; - const finalMode = (finalPerm & ~constants_1.constants.S_IFMT) | modeType; - return parent.createChild(name, this.createNode(finalMode)); - } - deleteLink(link) { - const parent = link.parent; - if (parent) { - parent.deleteChild(link); - return true; - } - return false; - } - newInoNumber() { - const releasedFd = this.releasedInos.pop(); - if (releasedFd) - return releasedFd; - else { - this.ino = (this.ino + 1) % 0xffffffff; - return this.ino; - } - } - newFdNumber() { - const releasedFd = this.releasedFds.pop(); - return typeof releasedFd === 'number' ? releasedFd : Superblock.fd--; - } - createNode(mode) { - const node = new Node_1.Node(this.newInoNumber(), mode); - this.inodes[node.ino] = node; - return node; - } - deleteNode(node) { - node.del(); - delete this.inodes[node.ino]; - this.releasedInos.push(node.ino); - } - walk(stepsOrFilenameOrLink, resolveSymlinks = false, checkExistence = false, checkAccess = false, funcName) { - let steps; - let filename; - if (stepsOrFilenameOrLink instanceof Link_1.Link) { - steps = stepsOrFilenameOrLink.steps; - filename = pathSep + steps.join(pathSep); - } - else if (typeof stepsOrFilenameOrLink === 'string') { - steps = (0, util_2.filenameToSteps)(stepsOrFilenameOrLink); - filename = stepsOrFilenameOrLink; - } - else { - steps = stepsOrFilenameOrLink; - filename = pathSep + steps.join(pathSep); - } - let curr = this.root; - let i = 0; - while (i < steps.length) { - let node = curr.getNode(); - // Check access permissions if current link is a directory - if (node.isDirectory()) { - if (checkAccess && !node.canExecute()) { - throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, funcName, filename); - } - } - else { - if (i < steps.length - 1) - throw (0, util_1.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, funcName, filename); - } - curr = curr.getChild(steps[i]) ?? null; - // Check existence of current link - if (!curr) - if (checkExistence) - throw (0, util_1.createError)("ENOENT" /* ERROR_CODE.ENOENT */, funcName, filename); - else - return null; - node = curr?.getNode(); - // Resolve symlink if we're resolving all symlinks OR if this is an intermediate path component - // This allows lstat to traverse through symlinks in intermediate directories while not resolving the final component - if (node.isSymlink() && (resolveSymlinks || i < steps.length - 1)) { - const resolvedPath = (0, path_1.isAbsolute)(node.symlink) ? node.symlink : pathJoin((0, path_1.dirname)(curr.getPath()), node.symlink); // Relative to symlink's parent - steps = (0, util_2.filenameToSteps)(resolvedPath).concat(steps.slice(i + 1)); - curr = this.root; - i = 0; - continue; - } - // After resolving symlinks, check if it's not a directory and we still have more steps - // This handles the case where we try to traverse through a file - // Only do this check when we're doing filesystem operations (checkExistence = true) - if (checkExistence && !node.isDirectory() && i < steps.length - 1) { - // On Windows, use ENOENT for consistency with Node.js behavior - // On other platforms, use ENOTDIR which is more semantically correct - const errorCode = process_1.default.platform === 'win32' ? "ENOENT" /* ERROR_CODE.ENOENT */ : "ENOTDIR" /* ERROR_CODE.ENOTDIR */; - throw (0, util_1.createError)(errorCode, funcName, filename); - } - i++; - } - return curr; - } - // Returns a `Link` (hard link) referenced by path "split" into steps. - getLink(steps) { - return this.walk(steps, false, false, false); - } - // Just link `getLink`, but throws a correct user error, if link to found. - getLinkOrThrow(filename, funcName) { - return this.walk(filename, false, true, true, funcName); - } - // Just like `getLink`, but also dereference/resolves symbolic links. - getResolvedLink(filenameOrSteps) { - return this.walk(filenameOrSteps, true, false, false); - } - /** - * Just like `getLinkOrThrow`, but also dereference/resolves symbolic links. - */ - getResolvedLinkOrThrow(filename, funcName) { - return this.walk(filename, true, true, true, funcName); - } - resolveSymlinks(link) { - return this.getResolvedLink(link.steps.slice(1)); - } - /** - * Just like `getLinkOrThrow`, but also verifies that the link is a directory. - */ - getLinkAsDirOrThrow(filename, funcName) { - const link = this.getLinkOrThrow(filename, funcName); - if (!link.getNode().isDirectory()) - throw (0, util_1.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, funcName, filename); - return link; - } - // Get the immediate parent directory of the link. - getLinkParent(steps) { - return this.getLink(steps.slice(0, -1)); - } - getLinkParentAsDirOrThrow(filenameOrSteps, funcName) { - const steps = (filenameOrSteps instanceof Array ? filenameOrSteps : (0, util_2.filenameToSteps)(filenameOrSteps)).slice(0, -1); - const filename = pathSep + steps.join(pathSep); - const link = this.getLinkOrThrow(filename, funcName); - if (!link.getNode().isDirectory()) - throw (0, util_1.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, funcName, filename); - return link; - } - getFileByFd(fd) { - return this.fds[String(fd)]; - } - getFileByFdOrThrow(fd, funcName) { - if (!(0, util_2.isFd)(fd)) - throw TypeError(constants_2.ERRSTR.FD); - const file = this.getFileByFd(fd); - if (!file) - throw (0, util_1.createError)("EBADF" /* ERROR_CODE.EBADF */, funcName); - return file; - } - _toJSON(link = this.root, json = {}, path, asBuffer) { - let isEmpty = true; - let children = link.children; - if (link.getNode().isFile()) { - children = new Map([[link.getName(), link.parent.getChild(link.getName())]]); - link = link.parent; - } - for (const name of children.keys()) { - if (name === '.' || name === '..') { - continue; - } - isEmpty = false; - const child = link.getChild(name); - if (!child) { - throw new Error('_toJSON: unexpected undefined'); - } - const node = child.getNode(); - if (node.isFile()) { - let filename = child.getPath(); - if (path) - filename = pathRelative(path, filename); - json[filename] = asBuffer ? node.getBuffer() : node.getString(); - } - else if (node.isDirectory()) { - this._toJSON(child, json, path, asBuffer); - } - } - let dirPath = link.getPath(); - if (path) - dirPath = pathRelative(path, dirPath); - if (dirPath && isEmpty) { - json[dirPath] = null; - } - return json; - } - toJSON(paths, json = {}, isRelative = false, asBuffer = false) { - const links = []; - if (paths) { - if (!Array.isArray(paths)) - paths = [paths]; - for (const path of paths) { - const filename = (0, util_1.pathToFilename)(path); - const link = this.getResolvedLink(filename); - if (!link) - continue; - links.push(link); - } - } - else { - links.push(this.root); - } - if (!links.length) - return json; - for (const link of links) - this._toJSON(link, json, isRelative ? link.getPath() : '', asBuffer); - return json; - } - // TODO: `cwd` should probably not invoke `process.cwd()`. - fromJSON(json, cwd = process_1.default.cwd()) { - for (let filename in json) { - const data = json[filename]; - filename = (0, util_2.resolve)(filename, cwd); - if (typeof data === 'string' || data instanceof buffer_1.Buffer) { - const dir = (0, path_1.dirname)(filename); - this.mkdirp(dir, 511 /* MODE.DIR */); - const buffer = (0, util_2.dataToBuffer)(data); - this.writeFile(filename, buffer, constants_2.FLAGS.w, 438 /* MODE.DEFAULT */); - } - else { - this.mkdirp(filename, 511 /* MODE.DIR */); - } - } - } - fromNestedJSON(json, cwd) { - this.fromJSON((0, json_1.flattenJSON)(json), cwd); - } - reset() { - this.ino = 0; - this.inodes = {}; - this.releasedInos = []; - this.fds = {}; - this.releasedFds = []; - this.openFiles = 0; - this.root = this.createLink(); - this.root.setNode(this.createNode(constants_1.constants.S_IFDIR | 0o777)); - } - // Legacy interface - mountSync(mountpoint, json) { - this.fromJSON(json, mountpoint); - } - openLink(link, flagsNum, resolveSymlinks = true) { - if (this.openFiles >= this.maxFiles) { - // Too many open files. - throw (0, util_1.createError)("EMFILE" /* ERROR_CODE.EMFILE */, 'open', link.getPath()); - } - // Resolve symlinks. - // - // @TODO: This should be superfluous. This method is only ever called by openFile(), which does its own symlink resolution - // prior to calling. - let realLink = link; - if (resolveSymlinks) - realLink = this.getResolvedLinkOrThrow(link.getPath(), 'open'); - const node = realLink.getNode(); - // Check whether node is a directory - if (node.isDirectory()) { - if ((flagsNum & (O_RDONLY | O_RDWR | O_WRONLY)) !== O_RDONLY) - throw (0, util_1.createError)("EISDIR" /* ERROR_CODE.EISDIR */, 'open', link.getPath()); - } - else { - if (flagsNum & O_DIRECTORY) - throw (0, util_1.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'open', link.getPath()); - } - // Check node permissions - // For read access: check if flags are O_RDONLY or O_RDWR (i.e., not only O_WRONLY) - if ((flagsNum & (O_RDONLY | O_RDWR | O_WRONLY)) !== O_WRONLY) { - if (!node.canRead()) { - throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'open', link.getPath()); - } - } - // For write access: check if flags are O_WRONLY or O_RDWR - if (flagsNum & (O_WRONLY | O_RDWR)) { - if (!node.canWrite()) { - throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'open', link.getPath()); - } - } - const file = new File_1.File(link, node, flagsNum, this.newFdNumber()); - this.fds[file.fd] = file; - this.openFiles++; - if (flagsNum & O_TRUNC) - file.truncate(); - return file; - } - openFile(filename, flagsNum, modeNum, resolveSymlinks = true) { - const steps = (0, util_2.filenameToSteps)(filename); - let link; - try { - link = resolveSymlinks ? this.getResolvedLinkOrThrow(filename, 'open') : this.getLinkOrThrow(filename, 'open'); - // Check if file already existed when trying to create it exclusively (O_CREAT and O_EXCL flags are set). - // This is an error, see https://pubs.opengroup.org/onlinepubs/009695399/functions/open.html: - // "If O_CREAT and O_EXCL are set, open() shall fail if the file exists." - if (link && flagsNum & O_CREAT && flagsNum & O_EXCL) - throw (0, util_1.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'open', filename); - } - catch (err) { - // Try creating a new file, if it does not exist and O_CREAT flag is set. - // Note that this will still throw if the ENOENT came from one of the - // intermediate directories instead of the file itself. - if (err.code === "ENOENT" /* ERROR_CODE.ENOENT */ && flagsNum & O_CREAT) { - const dirName = (0, path_1.dirname)(filename); - const dirLink = this.getResolvedLinkOrThrow(dirName); - const dirNode = dirLink.getNode(); - // Check that the place we create the new file is actually a directory and that we are allowed to do so: - if (!dirNode.isDirectory()) - throw (0, util_1.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'open', filename); - if (!dirNode.canExecute() || !dirNode.canWrite()) - throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'open', filename); - // This is a difference to the original implementation, which would simply not create a file unless modeNum was specified. - // However, current Node versions will default to 0o666. - modeNum ?? (modeNum = 0o666); - link = this.createLink(dirLink, steps[steps.length - 1], false, modeNum); - } - else - throw err; - } - if (link) - return this.openLink(link, flagsNum, resolveSymlinks); - throw (0, util_1.createError)("ENOENT" /* ERROR_CODE.ENOENT */, 'open', filename); - } - closeFile(file) { - if (!this.fds[file.fd]) - return; - this.openFiles--; - delete this.fds[file.fd]; - this.releasedFds.push(file.fd); - } - write(fd, buf, offset, length, position) { - const file = this.getFileByFdOrThrow(fd, 'write'); - if (file.node.isSymlink()) { - throw (0, util_1.createError)("EBADF" /* ERROR_CODE.EBADF */, 'write', file.link.getPath()); - } - return file.write(buf, offset, length, position === -1 || typeof position !== 'number' ? undefined : position); - } - }; - Superblock.Superblock = Superblock$1; - /** - * Global file descriptor counter. UNIX file descriptors start from 0 and go sequentially - * up, so here, in order not to conflict with them, we choose some big number and descrease - * the file descriptor of every new opened file. - * @type {number} - * @todo This should not be static, right? - */ - Superblock$1.fd = 0x7fffffff; - - return Superblock; -} - -var hasRequiredCore; - -function requireCore () { - if (hasRequiredCore) return core; - hasRequiredCore = 1; - (function (exports$1) { - Object.defineProperty(exports$1, "__esModule", { value: true }); - exports$1.Superblock = exports$1.File = exports$1.Link = exports$1.Node = void 0; - const tslib_1 = require$$0$1; - tslib_1.__exportStar(requireTypes(), exports$1); - tslib_1.__exportStar(requireJson(), exports$1); - var Node_1 = requireNode(); - Object.defineProperty(exports$1, "Node", { enumerable: true, get: function () { return Node_1.Node; } }); - var Link_1 = requireLink(); - Object.defineProperty(exports$1, "Link", { enumerable: true, get: function () { return Link_1.Link; } }); - var File_1 = requireFile(); - Object.defineProperty(exports$1, "File", { enumerable: true, get: function () { return File_1.File; } }); - var Superblock_1 = requireSuperblock(); - Object.defineProperty(exports$1, "Superblock", { enumerable: true, get: function () { return Superblock_1.Superblock; } }); - - } (core)); - return core; -} - -var StatFs = {}; - -var hasRequiredStatFs; - -function requireStatFs () { - if (hasRequiredStatFs) return StatFs; - hasRequiredStatFs = 1; - Object.defineProperty(StatFs, "__esModule", { value: true }); - StatFs.StatFs = void 0; - /** - * Statistics about a file system, like `fs.StatFs`. - */ - let StatFs$1 = class StatFs { - static build(superblock, bigint = false) { - const statfs = new StatFs(); - const getStatNumber = !bigint ? number => number : number => BigInt(number); - // For in-memory filesystem, provide mock but reasonable values - // Magic number for in-memory filesystem type (similar to ramfs) - statfs.type = getStatNumber(0x858458f6); - // Optimal transfer block size - commonly 4096 bytes - statfs.bsize = getStatNumber(4096); - // Calculate filesystem stats based on current state - const totalInodes = Object.keys(superblock.inodes).length; - // Mock large filesystem capacity (appears as a large filesystem to applications) - const totalBlocks = 1000000; - const usedBlocks = Math.min(totalInodes * 2, totalBlocks); // Rough estimation - const freeBlocks = totalBlocks - usedBlocks; - statfs.blocks = getStatNumber(totalBlocks); // Total data blocks - statfs.bfree = getStatNumber(freeBlocks); // Free blocks in file system - statfs.bavail = getStatNumber(freeBlocks); // Free blocks available to unprivileged users - // File node statistics - const maxFiles = 1000000; // Mock large number of available inodes - statfs.files = getStatNumber(maxFiles); // Total file nodes in file system - statfs.ffree = getStatNumber(maxFiles - totalInodes); // Free file nodes - return statfs; - } - }; - StatFs.StatFs = StatFs$1; - StatFs.default = StatFs$1; - - return StatFs; -} - -var setTimeoutUnref = {}; - -var hasRequiredSetTimeoutUnref; - -function requireSetTimeoutUnref () { - if (hasRequiredSetTimeoutUnref) return setTimeoutUnref; - hasRequiredSetTimeoutUnref = 1; - Object.defineProperty(setTimeoutUnref, "__esModule", { value: true }); - /** - * `setTimeoutUnref` is just like `setTimeout`, - * only in Node's environment it will "unref" its macro task. - */ - function setTimeoutUnref$1(callback, time, args) { - const ref = setTimeout.apply(typeof globalThis !== 'undefined' ? globalThis : commonjsGlobal, arguments); - if (ref && typeof ref === 'object' && typeof ref.unref === 'function') - ref.unref(); - return ref; - } - setTimeoutUnref.default = setTimeoutUnref$1; - - return setTimeoutUnref; -} - -var stream$1 = {}; - -var browser$1 = {exports: {}}; - -var stream = {exports: {}}; - -var primordials; -var hasRequiredPrimordials; - -function requirePrimordials () { - if (hasRequiredPrimordials) return primordials; - hasRequiredPrimordials = 1; - - /* - This file is a reduced and adapted version of the main lib/internal/per_context/primordials.js file defined at - - https://github.com/nodejs/node/blob/main/lib/internal/per_context/primordials.js - - Don't try to replace with the original file and keep it up to date with the upstream file. - */ - - // This is a simplified version of AggregateError - class AggregateError extends Error { - constructor(errors) { - if (!Array.isArray(errors)) { - throw new TypeError(`Expected input to be an Array, got ${typeof errors}`) - } - let message = ''; - for (let i = 0; i < errors.length; i++) { - message += ` ${errors[i].stack}\n`; - } - super(message); - this.name = 'AggregateError'; - this.errors = errors; - } - } - primordials = { - AggregateError, - ArrayIsArray(self) { - return Array.isArray(self) - }, - ArrayPrototypeIncludes(self, el) { - return self.includes(el) - }, - ArrayPrototypeIndexOf(self, el) { - return self.indexOf(el) - }, - ArrayPrototypeJoin(self, sep) { - return self.join(sep) - }, - ArrayPrototypeMap(self, fn) { - return self.map(fn) - }, - ArrayPrototypePop(self, el) { - return self.pop(el) - }, - ArrayPrototypePush(self, el) { - return self.push(el) - }, - ArrayPrototypeSlice(self, start, end) { - return self.slice(start, end) - }, - Error, - FunctionPrototypeCall(fn, thisArgs, ...args) { - return fn.call(thisArgs, ...args) - }, - FunctionPrototypeSymbolHasInstance(self, instance) { - return Function.prototype[Symbol.hasInstance].call(self, instance) - }, - MathFloor: Math.floor, - Number, - NumberIsInteger: Number.isInteger, - NumberIsNaN: Number.isNaN, - NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER, - NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER, - NumberParseInt: Number.parseInt, - ObjectDefineProperties(self, props) { - return Object.defineProperties(self, props) - }, - ObjectDefineProperty(self, name, prop) { - return Object.defineProperty(self, name, prop) - }, - ObjectGetOwnPropertyDescriptor(self, name) { - return Object.getOwnPropertyDescriptor(self, name) - }, - ObjectKeys(obj) { - return Object.keys(obj) - }, - ObjectSetPrototypeOf(target, proto) { - return Object.setPrototypeOf(target, proto) - }, - Promise, - PromisePrototypeCatch(self, fn) { - return self.catch(fn) - }, - PromisePrototypeThen(self, thenFn, catchFn) { - return self.then(thenFn, catchFn) - }, - PromiseReject(err) { - return Promise.reject(err) - }, - PromiseResolve(val) { - return Promise.resolve(val) - }, - ReflectApply: Reflect.apply, - RegExpPrototypeTest(self, value) { - return self.test(value) - }, - SafeSet: Set, - String, - StringPrototypeSlice(self, start, end) { - return self.slice(start, end) - }, - StringPrototypeToLowerCase(self) { - return self.toLowerCase() - }, - StringPrototypeToUpperCase(self) { - return self.toUpperCase() - }, - StringPrototypeTrim(self) { - return self.trim() - }, - Symbol, - SymbolFor: Symbol.for, - SymbolAsyncIterator: Symbol.asyncIterator, - SymbolHasInstance: Symbol.hasInstance, - SymbolIterator: Symbol.iterator, - SymbolDispose: Symbol.dispose || Symbol('Symbol.dispose'), - SymbolAsyncDispose: Symbol.asyncDispose || Symbol('Symbol.asyncDispose'), - TypedArrayPrototypeSet(self, buf, len) { - return self.set(buf, len) - }, - Boolean, - Uint8Array - }; - return primordials; -} - -var util$1 = {exports: {}}; - -var inspect; -var hasRequiredInspect; - -function requireInspect () { - if (hasRequiredInspect) return inspect; - hasRequiredInspect = 1; - - /* - This file is a reduced and adapted version of the main lib/internal/util/inspect.js file defined at - - https://github.com/nodejs/node/blob/main/lib/internal/util/inspect.js - - Don't try to replace with the original file and keep it up to date with the upstream file. - */ - inspect = { - format(format, ...args) { - // Simplified version of https://nodejs.org/api/util.html#utilformatformat-args - return format.replace(/%([sdifj])/g, function (...[_unused, type]) { - const replacement = args.shift(); - if (type === 'f') { - return replacement.toFixed(6) - } else if (type === 'j') { - return JSON.stringify(replacement) - } else if (type === 's' && typeof replacement === 'object') { - const ctor = replacement.constructor !== Object ? replacement.constructor.name : ''; - return `${ctor} {}`.trim() - } else { - return replacement.toString() - } - }) - }, - inspect(value) { - // Vastly simplified version of https://nodejs.org/api/util.html#utilinspectobject-options - switch (typeof value) { - case 'string': - if (value.includes("'")) { - if (!value.includes('"')) { - return `"${value}"` - } else if (!value.includes('`') && !value.includes('${')) { - return `\`${value}\`` - } - } - return `'${value}'` - case 'number': - if (isNaN(value)) { - return 'NaN' - } else if (Object.is(value, -0)) { - return String(value) - } - return value - case 'bigint': - return `${String(value)}n` - case 'boolean': - case 'undefined': - return String(value) - case 'object': - return '{}' - } - } - }; - return inspect; -} - -var errors; -var hasRequiredErrors; - -function requireErrors () { - if (hasRequiredErrors) return errors; - hasRequiredErrors = 1; - - const { format, inspect } = requireInspect(); - const { AggregateError: CustomAggregateError } = requirePrimordials(); - - /* - This file is a reduced and adapted version of the main lib/internal/errors.js file defined at - - https://github.com/nodejs/node/blob/main/lib/internal/errors.js - - Don't try to replace with the original file and keep it up to date (starting from E(...) definitions) - with the upstream file. - */ - - const AggregateError = globalThis.AggregateError || CustomAggregateError; - const kIsNodeError = Symbol('kIsNodeError'); - const kTypes = [ - 'string', - 'function', - 'number', - 'object', - // Accept 'Function' and 'Object' as alternative to the lower cased version. - 'Function', - 'Object', - 'boolean', - 'bigint', - 'symbol' - ]; - const classRegExp = /^([A-Z][a-z0-9]*)+$/; - const nodeInternalPrefix = '__node_internal_'; - const codes = {}; - function assert(value, message) { - if (!value) { - throw new codes.ERR_INTERNAL_ASSERTION(message) - } - } - - // Only use this for integers! Decimal numbers do not work with this function. - function addNumericalSeparator(val) { - let res = ''; - let i = val.length; - const start = val[0] === '-' ? 1 : 0; - for (; i >= start + 4; i -= 3) { - res = `_${val.slice(i - 3, i)}${res}`; - } - return `${val.slice(0, i)}${res}` - } - function getMessage(key, msg, args) { - if (typeof msg === 'function') { - assert( - msg.length <= args.length, - // Default options do not count. - `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).` - ); - return msg(...args) - } - const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length; - assert( - expectedLength === args.length, - `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).` - ); - if (args.length === 0) { - return msg - } - return format(msg, ...args) - } - function E(code, message, Base) { - if (!Base) { - Base = Error; - } - class NodeError extends Base { - constructor(...args) { - super(getMessage(code, message, args)); - } - toString() { - return `${this.name} [${code}]: ${this.message}` - } - } - Object.defineProperties(NodeError.prototype, { - name: { - value: Base.name, - writable: true, - enumerable: false, - configurable: true - }, - toString: { - value() { - return `${this.name} [${code}]: ${this.message}` - }, - writable: true, - enumerable: false, - configurable: true - } - }); - NodeError.prototype.code = code; - NodeError.prototype[kIsNodeError] = true; - codes[code] = NodeError; - } - function hideStackFrames(fn) { - // We rename the functions that will be hidden to cut off the stacktrace - // at the outermost one - const hidden = nodeInternalPrefix + fn.name; - Object.defineProperty(fn, 'name', { - value: hidden - }); - return fn - } - function aggregateTwoErrors(innerError, outerError) { - if (innerError && outerError && innerError !== outerError) { - if (Array.isArray(outerError.errors)) { - // If `outerError` is already an `AggregateError`. - outerError.errors.push(innerError); - return outerError - } - const err = new AggregateError([outerError, innerError], outerError.message); - err.code = outerError.code; - return err - } - return innerError || outerError - } - class AbortError extends Error { - constructor(message = 'The operation was aborted', options = undefined) { - if (options !== undefined && typeof options !== 'object') { - throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options) - } - super(message, options); - this.code = 'ABORT_ERR'; - this.name = 'AbortError'; - } - } - E('ERR_ASSERTION', '%s', Error); - E( - 'ERR_INVALID_ARG_TYPE', - (name, expected, actual) => { - assert(typeof name === 'string', "'name' must be a string"); - if (!Array.isArray(expected)) { - expected = [expected]; - } - let msg = 'The '; - if (name.endsWith(' argument')) { - // For cases like 'first argument' - msg += `${name} `; - } else { - msg += `"${name}" ${name.includes('.') ? 'property' : 'argument'} `; - } - msg += 'must be '; - const types = []; - const instances = []; - const other = []; - for (const value of expected) { - assert(typeof value === 'string', 'All expected entries have to be of type string'); - if (kTypes.includes(value)) { - types.push(value.toLowerCase()); - } else if (classRegExp.test(value)) { - instances.push(value); - } else { - assert(value !== 'object', 'The value "object" should be written as "Object"'); - other.push(value); - } - } - - // Special handle `object` in case other instances are allowed to outline - // the differences between each other. - if (instances.length > 0) { - const pos = types.indexOf('object'); - if (pos !== -1) { - types.splice(types, pos, 1); - instances.push('Object'); - } - } - if (types.length > 0) { - switch (types.length) { - case 1: - msg += `of type ${types[0]}`; - break - case 2: - msg += `one of type ${types[0]} or ${types[1]}`; - break - default: { - const last = types.pop(); - msg += `one of type ${types.join(', ')}, or ${last}`; - } - } - if (instances.length > 0 || other.length > 0) { - msg += ' or '; - } - } - if (instances.length > 0) { - switch (instances.length) { - case 1: - msg += `an instance of ${instances[0]}`; - break - case 2: - msg += `an instance of ${instances[0]} or ${instances[1]}`; - break - default: { - const last = instances.pop(); - msg += `an instance of ${instances.join(', ')}, or ${last}`; - } - } - if (other.length > 0) { - msg += ' or '; - } - } - switch (other.length) { - case 0: - break - case 1: - if (other[0].toLowerCase() !== other[0]) { - msg += 'an '; - } - msg += `${other[0]}`; - break - case 2: - msg += `one of ${other[0]} or ${other[1]}`; - break - default: { - const last = other.pop(); - msg += `one of ${other.join(', ')}, or ${last}`; - } - } - if (actual == null) { - msg += `. Received ${actual}`; - } else if (typeof actual === 'function' && actual.name) { - msg += `. Received function ${actual.name}`; - } else if (typeof actual === 'object') { - var _actual$constructor; - if ( - (_actual$constructor = actual.constructor) !== null && - _actual$constructor !== undefined && - _actual$constructor.name - ) { - msg += `. Received an instance of ${actual.constructor.name}`; - } else { - const inspected = inspect(actual, { - depth: -1 - }); - msg += `. Received ${inspected}`; - } - } else { - let inspected = inspect(actual, { - colors: false - }); - if (inspected.length > 25) { - inspected = `${inspected.slice(0, 25)}...`; - } - msg += `. Received type ${typeof actual} (${inspected})`; - } - return msg - }, - TypeError - ); - E( - 'ERR_INVALID_ARG_VALUE', - (name, value, reason = 'is invalid') => { - let inspected = inspect(value); - if (inspected.length > 128) { - inspected = inspected.slice(0, 128) + '...'; - } - const type = name.includes('.') ? 'property' : 'argument'; - return `The ${type} '${name}' ${reason}. Received ${inspected}` - }, - TypeError - ); - E( - 'ERR_INVALID_RETURN_VALUE', - (input, name, value) => { - var _value$constructor; - const type = - value !== null && - value !== undefined && - (_value$constructor = value.constructor) !== null && - _value$constructor !== undefined && - _value$constructor.name - ? `instance of ${value.constructor.name}` - : `type ${typeof value}`; - return `Expected ${input} to be returned from the "${name}"` + ` function but got ${type}.` - }, - TypeError - ); - E( - 'ERR_MISSING_ARGS', - (...args) => { - assert(args.length > 0, 'At least one arg needs to be specified'); - let msg; - const len = args.length; - args = (Array.isArray(args) ? args : [args]).map((a) => `"${a}"`).join(' or '); - switch (len) { - case 1: - msg += `The ${args[0]} argument`; - break - case 2: - msg += `The ${args[0]} and ${args[1]} arguments`; - break - default: - { - const last = args.pop(); - msg += `The ${args.join(', ')}, and ${last} arguments`; - } - break - } - return `${msg} must be specified` - }, - TypeError - ); - E( - 'ERR_OUT_OF_RANGE', - (str, range, input) => { - assert(range, 'Missing "range" argument'); - let received; - if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { - received = addNumericalSeparator(String(input)); - } else if (typeof input === 'bigint') { - received = String(input); - const limit = BigInt(2) ** BigInt(32); - if (input > limit || input < -limit) { - received = addNumericalSeparator(received); - } - received += 'n'; - } else { - received = inspect(input); - } - return `The value of "${str}" is out of range. It must be ${range}. Received ${received}` - }, - RangeError - ); - E('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times', Error); - E('ERR_METHOD_NOT_IMPLEMENTED', 'The %s method is not implemented', Error); - E('ERR_STREAM_ALREADY_FINISHED', 'Cannot call %s after a stream was finished', Error); - E('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable', Error); - E('ERR_STREAM_DESTROYED', 'Cannot call %s after a stream was destroyed', Error); - E('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); - E('ERR_STREAM_PREMATURE_CLOSE', 'Premature close', Error); - E('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF', Error); - E('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event', Error); - E('ERR_STREAM_WRITE_AFTER_END', 'write after end', Error); - E('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError); - errors = { - AbortError, - aggregateTwoErrors: hideStackFrames(aggregateTwoErrors), - hideStackFrames, - codes - }; - return errors; -} - -var browser = {exports: {}}; - -/*globals self, window */ - -var hasRequiredBrowser$1; - -function requireBrowser$1 () { - if (hasRequiredBrowser$1) return browser.exports; - hasRequiredBrowser$1 = 1; - - /*eslint-disable @mysticatea/prettier */ - const { AbortController, AbortSignal } = - typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : - /* otherwise */ undefined; - /*eslint-enable @mysticatea/prettier */ - - browser.exports = AbortController; - browser.exports.AbortSignal = AbortSignal; - browser.exports.default = AbortController; - return browser.exports; -} - -var events$1 = {exports: {}}; - -var hasRequiredEvents$1; - -function requireEvents$1 () { - if (hasRequiredEvents$1) return events$1.exports; - hasRequiredEvents$1 = 1; - - var R = typeof Reflect === 'object' ? Reflect : null; - var ReflectApply = R && typeof R.apply === 'function' - ? R.apply - : function ReflectApply(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); - }; - - var ReflectOwnKeys; - if (R && typeof R.ownKeys === 'function') { - ReflectOwnKeys = R.ownKeys; - } else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys(target) { - return Object.getOwnPropertyNames(target) - .concat(Object.getOwnPropertySymbols(target)); - }; - } else { - ReflectOwnKeys = function ReflectOwnKeys(target) { - return Object.getOwnPropertyNames(target); - }; - } - - function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); - } - - var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { - return value !== value; - }; - - function EventEmitter() { - EventEmitter.init.call(this); - } - events$1.exports = EventEmitter; - events$1.exports.once = once; - - // Backwards-compat with node 0.10.x - EventEmitter.EventEmitter = EventEmitter; - - EventEmitter.prototype._events = undefined; - EventEmitter.prototype._eventsCount = 0; - EventEmitter.prototype._maxListeners = undefined; - - // By default EventEmitters will print a warning if more than 10 listeners are - // added to it. This is a useful default which helps finding memory leaks. - var defaultMaxListeners = 10; - - function checkListener(listener) { - if (typeof listener !== 'function') { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } - } - - Object.defineProperty(EventEmitter, 'defaultMaxListeners', { - enumerable: true, - get: function() { - return defaultMaxListeners; - }, - set: function(arg) { - if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); - } - defaultMaxListeners = arg; - } - }); - - EventEmitter.init = function() { - - if (this._events === undefined || - this._events === Object.getPrototypeOf(this)._events) { - this._events = Object.create(null); - this._eventsCount = 0; - } - - this._maxListeners = this._maxListeners || undefined; - }; - - // Obviously not all Emitters should be limited to 10. This function allows - // that to be increased. Set to zero for unlimited. - EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); - } - this._maxListeners = n; - return this; - }; - - function _getMaxListeners(that) { - if (that._maxListeners === undefined) - return EventEmitter.defaultMaxListeners; - return that._maxListeners; - } - - EventEmitter.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); - }; - - EventEmitter.prototype.emit = function emit(type) { - var args = []; - for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); - var doError = (type === 'error'); - - var events = this._events; - if (events !== undefined) - doError = (doError && events.error === undefined); - else if (!doError) - return false; - - // If there is no 'error' event listener then throw. - if (doError) { - var er; - if (args.length > 0) - er = args[0]; - if (er instanceof Error) { - // Note: The comments on the `throw` lines are intentional, they show - // up in Node's output if this results in an unhandled exception. - throw er; // Unhandled 'error' event - } - // At least give some kind of context to the user - var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); - err.context = er; - throw err; // Unhandled 'error' event - } - - var handler = events[type]; - - if (handler === undefined) - return false; - - if (typeof handler === 'function') { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - ReflectApply(listeners[i], this, args); - } - - return true; - }; - - function _addListener(target, type, listener, prepend) { - var m; - var events; - var existing; - - checkListener(listener); - - events = target._events; - if (events === undefined) { - events = target._events = Object.create(null); - target._eventsCount = 0; - } else { - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (events.newListener !== undefined) { - target.emit('newListener', type, - listener.listener ? listener.listener : listener); - - // Re-assign `events` because a newListener handler could have caused the - // this._events to be assigned to a new object - events = target._events; - } - existing = events[type]; - } - - if (existing === undefined) { - // Optimize the case of one listener. Don't need the extra array object. - existing = events[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === 'function') { - // Adding the second element, need to change to array. - existing = events[type] = - prepend ? [listener, existing] : [existing, listener]; - // If we've already got an array, just append. - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - - // Check for listener leak - m = _getMaxListeners(target); - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; - // No error code for this since it is a Warning - // eslint-disable-next-line no-restricted-syntax - var w = new Error('Possible EventEmitter memory leak detected. ' + - existing.length + ' ' + String(type) + ' listeners ' + - 'added. Use emitter.setMaxListeners() to ' + - 'increase limit'); - w.name = 'MaxListenersExceededWarning'; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - - return target; - } - - EventEmitter.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); - }; - - EventEmitter.prototype.on = EventEmitter.prototype.addListener; - - EventEmitter.prototype.prependListener = - function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - - function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (arguments.length === 0) - return this.listener.call(this.target); - return this.listener.apply(this.target, arguments); - } - } - - function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; - } - - EventEmitter.prototype.once = function once(type, listener) { - checkListener(listener); - this.on(type, _onceWrap(this, type, listener)); - return this; - }; - - EventEmitter.prototype.prependOnceListener = - function prependOnceListener(type, listener) { - checkListener(listener); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - - // Emits a 'removeListener' event if and only if the listener was removed. - EventEmitter.prototype.removeListener = - function removeListener(type, listener) { - var list, events, position, i, originalListener; - - checkListener(listener); - - events = this._events; - if (events === undefined) - return this; - - list = events[type]; - if (list === undefined) - return this; - - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) - this._events = Object.create(null); - else { - delete events[type]; - if (events.removeListener) - this.emit('removeListener', type, list.listener || listener); - } - } else if (typeof list !== 'function') { - position = -1; - - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - - if (position < 0) - return this; - - if (position === 0) - list.shift(); - else { - spliceOne(list, position); - } - - if (list.length === 1) - events[type] = list[0]; - - if (events.removeListener !== undefined) - this.emit('removeListener', type, originalListener || listener); - } - - return this; - }; - - EventEmitter.prototype.off = EventEmitter.prototype.removeListener; - - EventEmitter.prototype.removeAllListeners = - function removeAllListeners(type) { - var listeners, events, i; - - events = this._events; - if (events === undefined) - return this; - - // not listening for removeListener, no need to emit - if (events.removeListener === undefined) { - if (arguments.length === 0) { - this._events = Object.create(null); - this._eventsCount = 0; - } else if (events[type] !== undefined) { - if (--this._eventsCount === 0) - this._events = Object.create(null); - else - delete events[type]; - } - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - var keys = Object.keys(events); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = Object.create(null); - this._eventsCount = 0; - return this; - } - - listeners = events[type]; - - if (typeof listeners === 'function') { - this.removeListener(type, listeners); - } else if (listeners !== undefined) { - // LIFO order - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - - return this; - }; - - function _listeners(target, type, unwrap) { - var events = target._events; - - if (events === undefined) - return []; - - var evlistener = events[type]; - if (evlistener === undefined) - return []; - - if (typeof evlistener === 'function') - return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - - return unwrap ? - unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); - } - - EventEmitter.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); - }; - - EventEmitter.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); - }; - - EventEmitter.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === 'function') { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } - }; - - EventEmitter.prototype.listenerCount = listenerCount; - function listenerCount(type) { - var events = this._events; - - if (events !== undefined) { - var evlistener = events[type]; - - if (typeof evlistener === 'function') { - return 1; - } else if (evlistener !== undefined) { - return evlistener.length; - } - } - - return 0; - } - - EventEmitter.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; - }; - - function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) - copy[i] = arr[i]; - return copy; - } - - function spliceOne(list, index) { - for (; index + 1 < list.length; index++) - list[index] = list[index + 1]; - list.pop(); - } - - function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; - } - - function once(emitter, name) { - return new Promise(function (resolve, reject) { - function errorListener(err) { - emitter.removeListener(name, resolver); - reject(err); - } - - function resolver() { - if (typeof emitter.removeListener === 'function') { - emitter.removeListener('error', errorListener); - } - resolve([].slice.call(arguments)); - } - eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); - if (name !== 'error') { - addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); - } - }); - } - - function addErrorHandlerIfEventEmitter(emitter, handler, flags) { - if (typeof emitter.on === 'function') { - eventTargetAgnosticAddListener(emitter, 'error', handler, flags); - } - } - - function eventTargetAgnosticAddListener(emitter, name, listener, flags) { - if (typeof emitter.on === 'function') { - if (flags.once) { - emitter.once(name, listener); - } else { - emitter.on(name, listener); - } - } else if (typeof emitter.addEventListener === 'function') { - // EventTarget does not have `error` event semantics like Node - // EventEmitters, we do not listen for `error` events here. - emitter.addEventListener(name, function wrapListener(arg) { - // IE does not have builtin `{ once: true }` support so we - // have to do it manually. - if (flags.once) { - emitter.removeEventListener(name, wrapListener); - } - listener(arg); - }); - } else { - throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); - } - } - return events$1.exports; -} - -var hasRequiredUtil$1; - -function requireUtil$1 () { - if (hasRequiredUtil$1) return util$1.exports; - hasRequiredUtil$1 = 1; - (function (module) { - - const bufferModule = require$$0$2; - const { format, inspect } = requireInspect(); - const { - codes: { ERR_INVALID_ARG_TYPE } - } = requireErrors(); - const { kResistStopPropagation, AggregateError, SymbolDispose } = requirePrimordials(); - const AbortSignal = globalThis.AbortSignal || requireBrowser$1().AbortSignal; - const AbortController = globalThis.AbortController || requireBrowser$1().AbortController; - const AsyncFunction = Object.getPrototypeOf(async function () {}).constructor; - const Blob = globalThis.Blob || bufferModule.Blob; - /* eslint-disable indent */ - const isBlob = - typeof Blob !== 'undefined' - ? function isBlob(b) { - // eslint-disable-next-line indent - return b instanceof Blob - } - : function isBlob(b) { - return false - }; - /* eslint-enable indent */ - - const validateAbortSignal = (signal, name) => { - if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) { - throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal) - } - }; - const validateFunction = (value, name) => { - if (typeof value !== 'function') { - throw new ERR_INVALID_ARG_TYPE(name, 'Function', value) - } - }; - module.exports = { - AggregateError, - kEmptyObject: Object.freeze({}), - once(callback) { - let called = false; - return function (...args) { - if (called) { - return - } - called = true; - callback.apply(this, args); - } - }, - createDeferredPromise: function () { - let resolve; - let reject; - - // eslint-disable-next-line promise/param-names - const promise = new Promise((res, rej) => { - resolve = res; - reject = rej; - }); - return { - promise, - resolve, - reject - } - }, - promisify(fn) { - return new Promise((resolve, reject) => { - fn((err, ...args) => { - if (err) { - return reject(err) - } - return resolve(...args) - }); - }) - }, - debuglog() { - return function () {} - }, - format, - inspect, - types: { - isAsyncFunction(fn) { - return fn instanceof AsyncFunction - }, - isArrayBufferView(arr) { - return ArrayBuffer.isView(arr) - } - }, - isBlob, - deprecate(fn, message) { - return fn - }, - addAbortListener: - requireEvents$1().addAbortListener || - function addAbortListener(signal, listener) { - if (signal === undefined) { - throw new ERR_INVALID_ARG_TYPE('signal', 'AbortSignal', signal) - } - validateAbortSignal(signal, 'signal'); - validateFunction(listener, 'listener'); - let removeEventListener; - if (signal.aborted) { - queueMicrotask(() => listener()); - } else { - signal.addEventListener('abort', listener, { - __proto__: null, - once: true, - [kResistStopPropagation]: true - }); - removeEventListener = () => { - signal.removeEventListener('abort', listener); - }; - } - return { - __proto__: null, - [SymbolDispose]() { - var _removeEventListener - ;(_removeEventListener = removeEventListener) === null || _removeEventListener === undefined - ? undefined - : _removeEventListener(); - } - } - }, - AbortSignalAny: - AbortSignal.any || - function AbortSignalAny(signals) { - // Fast path if there is only one signal. - if (signals.length === 1) { - return signals[0] - } - const ac = new AbortController(); - const abort = () => ac.abort(); - signals.forEach((signal) => { - validateAbortSignal(signal, 'signals'); - signal.addEventListener('abort', abort, { - once: true - }); - }); - ac.signal.addEventListener( - 'abort', - () => { - signals.forEach((signal) => signal.removeEventListener('abort', abort)); - }, - { - once: true - } - ); - return ac.signal - } - }; - module.exports.promisify.custom = Symbol.for('nodejs.util.promisify.custom'); - } (util$1)); - return util$1.exports; -} - -var operators = {}; - -/* eslint jsdoc/require-jsdoc: "error" */ - -var validators; -var hasRequiredValidators; - -function requireValidators () { - if (hasRequiredValidators) return validators; - hasRequiredValidators = 1; - - const { - ArrayIsArray, - ArrayPrototypeIncludes, - ArrayPrototypeJoin, - ArrayPrototypeMap, - NumberIsInteger, - NumberIsNaN, - NumberMAX_SAFE_INTEGER, - NumberMIN_SAFE_INTEGER, - NumberParseInt, - ObjectPrototypeHasOwnProperty, - RegExpPrototypeExec, - String, - StringPrototypeToUpperCase, - StringPrototypeTrim - } = requirePrimordials(); - const { - hideStackFrames, - codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL } - } = requireErrors(); - const { normalizeEncoding } = requireUtil$1(); - const { isAsyncFunction, isArrayBufferView } = requireUtil$1().types; - const signals = {}; - - /** - * @param {*} value - * @returns {boolean} - */ - function isInt32(value) { - return value === (value | 0) - } - - /** - * @param {*} value - * @returns {boolean} - */ - function isUint32(value) { - return value === value >>> 0 - } - const octalReg = /^[0-7]+$/; - const modeDesc = 'must be a 32-bit unsigned integer or an octal string'; - - /** - * Parse and validate values that will be converted into mode_t (the S_* - * constants). Only valid numbers and octal strings are allowed. They could be - * converted to 32-bit unsigned integers or non-negative signed integers in the - * C++ land, but any value higher than 0o777 will result in platform-specific - * behaviors. - * @param {*} value Values to be validated - * @param {string} name Name of the argument - * @param {number} [def] If specified, will be returned for invalid values - * @returns {number} - */ - function parseFileMode(value, name, def) { - if (typeof value === 'undefined') { - value = def; - } - if (typeof value === 'string') { - if (RegExpPrototypeExec(octalReg, value) === null) { - throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc) - } - value = NumberParseInt(value, 8); - } - validateUint32(value, name); - return value - } - - /** - * @callback validateInteger - * @param {*} value - * @param {string} name - * @param {number} [min] - * @param {number} [max] - * @returns {asserts value is number} - */ - - /** @type {validateInteger} */ - const validateInteger = hideStackFrames((value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => { - if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value) - if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, 'an integer', value) - if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value) - }); - - /** - * @callback validateInt32 - * @param {*} value - * @param {string} name - * @param {number} [min] - * @param {number} [max] - * @returns {asserts value is number} - */ - - /** @type {validateInt32} */ - const validateInt32 = hideStackFrames((value, name, min = -2147483648, max = 2147483647) => { - // The defaults for min and max correspond to the limits of 32-bit integers. - if (typeof value !== 'number') { - throw new ERR_INVALID_ARG_TYPE(name, 'number', value) - } - if (!NumberIsInteger(value)) { - throw new ERR_OUT_OF_RANGE(name, 'an integer', value) - } - if (value < min || value > max) { - throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value) - } - }); - - /** - * @callback validateUint32 - * @param {*} value - * @param {string} name - * @param {number|boolean} [positive=false] - * @returns {asserts value is number} - */ - - /** @type {validateUint32} */ - const validateUint32 = hideStackFrames((value, name, positive = false) => { - if (typeof value !== 'number') { - throw new ERR_INVALID_ARG_TYPE(name, 'number', value) - } - if (!NumberIsInteger(value)) { - throw new ERR_OUT_OF_RANGE(name, 'an integer', value) - } - const min = positive ? 1 : 0; - // 2 ** 32 === 4294967296 - const max = 4294967295; - if (value < min || value > max) { - throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value) - } - }); - - /** - * @callback validateString - * @param {*} value - * @param {string} name - * @returns {asserts value is string} - */ - - /** @type {validateString} */ - function validateString(value, name) { - if (typeof value !== 'string') throw new ERR_INVALID_ARG_TYPE(name, 'string', value) - } - - /** - * @callback validateNumber - * @param {*} value - * @param {string} name - * @param {number} [min] - * @param {number} [max] - * @returns {asserts value is number} - */ - - /** @type {validateNumber} */ - function validateNumber(value, name, min = undefined, max) { - if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value) - if ( - (min != null && value < min) || - (max != null && value > max) || - ((min != null || max != null) && NumberIsNaN(value)) - ) { - throw new ERR_OUT_OF_RANGE( - name, - `${min != null ? `>= ${min}` : ''}${min != null && max != null ? ' && ' : ''}${max != null ? `<= ${max}` : ''}`, - value - ) - } - } - - /** - * @callback validateOneOf - * @template T - * @param {T} value - * @param {string} name - * @param {T[]} oneOf - */ - - /** @type {validateOneOf} */ - const validateOneOf = hideStackFrames((value, name, oneOf) => { - if (!ArrayPrototypeIncludes(oneOf, value)) { - const allowed = ArrayPrototypeJoin( - ArrayPrototypeMap(oneOf, (v) => (typeof v === 'string' ? `'${v}'` : String(v))), - ', ' - ); - const reason = 'must be one of: ' + allowed; - throw new ERR_INVALID_ARG_VALUE(name, value, reason) - } - }); - - /** - * @callback validateBoolean - * @param {*} value - * @param {string} name - * @returns {asserts value is boolean} - */ - - /** @type {validateBoolean} */ - function validateBoolean(value, name) { - if (typeof value !== 'boolean') throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value) - } - - /** - * @param {any} options - * @param {string} key - * @param {boolean} defaultValue - * @returns {boolean} - */ - function getOwnPropertyValueOrDefault(options, key, defaultValue) { - return options == null || !ObjectPrototypeHasOwnProperty(options, key) ? defaultValue : options[key] - } - - /** - * @callback validateObject - * @param {*} value - * @param {string} name - * @param {{ - * allowArray?: boolean, - * allowFunction?: boolean, - * nullable?: boolean - * }} [options] - */ - - /** @type {validateObject} */ - const validateObject = hideStackFrames((value, name, options = null) => { - const allowArray = getOwnPropertyValueOrDefault(options, 'allowArray', false); - const allowFunction = getOwnPropertyValueOrDefault(options, 'allowFunction', false); - const nullable = getOwnPropertyValueOrDefault(options, 'nullable', false); - if ( - (!nullable && value === null) || - (!allowArray && ArrayIsArray(value)) || - (typeof value !== 'object' && (!allowFunction || typeof value !== 'function')) - ) { - throw new ERR_INVALID_ARG_TYPE(name, 'Object', value) - } - }); - - /** - * @callback validateDictionary - We are using the Web IDL Standard definition - * of "dictionary" here, which means any value - * whose Type is either Undefined, Null, or - * Object (which includes functions). - * @param {*} value - * @param {string} name - * @see https://webidl.spec.whatwg.org/#es-dictionary - * @see https://tc39.es/ecma262/#table-typeof-operator-results - */ - - /** @type {validateDictionary} */ - const validateDictionary = hideStackFrames((value, name) => { - if (value != null && typeof value !== 'object' && typeof value !== 'function') { - throw new ERR_INVALID_ARG_TYPE(name, 'a dictionary', value) - } - }); - - /** - * @callback validateArray - * @param {*} value - * @param {string} name - * @param {number} [minLength] - * @returns {asserts value is any[]} - */ - - /** @type {validateArray} */ - const validateArray = hideStackFrames((value, name, minLength = 0) => { - if (!ArrayIsArray(value)) { - throw new ERR_INVALID_ARG_TYPE(name, 'Array', value) - } - if (value.length < minLength) { - const reason = `must be longer than ${minLength}`; - throw new ERR_INVALID_ARG_VALUE(name, value, reason) - } - }); - - /** - * @callback validateStringArray - * @param {*} value - * @param {string} name - * @returns {asserts value is string[]} - */ - - /** @type {validateStringArray} */ - function validateStringArray(value, name) { - validateArray(value, name); - for (let i = 0; i < value.length; i++) { - validateString(value[i], `${name}[${i}]`); - } - } - - /** - * @callback validateBooleanArray - * @param {*} value - * @param {string} name - * @returns {asserts value is boolean[]} - */ - - /** @type {validateBooleanArray} */ - function validateBooleanArray(value, name) { - validateArray(value, name); - for (let i = 0; i < value.length; i++) { - validateBoolean(value[i], `${name}[${i}]`); - } - } - - /** - * @callback validateAbortSignalArray - * @param {*} value - * @param {string} name - * @returns {asserts value is AbortSignal[]} - */ - - /** @type {validateAbortSignalArray} */ - function validateAbortSignalArray(value, name) { - validateArray(value, name); - for (let i = 0; i < value.length; i++) { - const signal = value[i]; - const indexedName = `${name}[${i}]`; - if (signal == null) { - throw new ERR_INVALID_ARG_TYPE(indexedName, 'AbortSignal', signal) - } - validateAbortSignal(signal, indexedName); - } - } - - /** - * @param {*} signal - * @param {string} [name='signal'] - * @returns {asserts signal is keyof signals} - */ - function validateSignalName(signal, name = 'signal') { - validateString(signal, name); - if (signals[signal] === undefined) { - if (signals[StringPrototypeToUpperCase(signal)] !== undefined) { - throw new ERR_UNKNOWN_SIGNAL(signal + ' (signals must use all capital letters)') - } - throw new ERR_UNKNOWN_SIGNAL(signal) - } - } - - /** - * @callback validateBuffer - * @param {*} buffer - * @param {string} [name='buffer'] - * @returns {asserts buffer is ArrayBufferView} - */ - - /** @type {validateBuffer} */ - const validateBuffer = hideStackFrames((buffer, name = 'buffer') => { - if (!isArrayBufferView(buffer)) { - throw new ERR_INVALID_ARG_TYPE(name, ['Buffer', 'TypedArray', 'DataView'], buffer) - } - }); - - /** - * @param {string} data - * @param {string} encoding - */ - function validateEncoding(data, encoding) { - const normalizedEncoding = normalizeEncoding(encoding); - const length = data.length; - if (normalizedEncoding === 'hex' && length % 2 !== 0) { - throw new ERR_INVALID_ARG_VALUE('encoding', encoding, `is invalid for data of length ${length}`) - } - } - - /** - * Check that the port number is not NaN when coerced to a number, - * is an integer and that it falls within the legal range of port numbers. - * @param {*} port - * @param {string} [name='Port'] - * @param {boolean} [allowZero=true] - * @returns {number} - */ - function validatePort(port, name = 'Port', allowZero = true) { - if ( - (typeof port !== 'number' && typeof port !== 'string') || - (typeof port === 'string' && StringPrototypeTrim(port).length === 0) || - +port !== +port >>> 0 || - port > 0xffff || - (port === 0 && !allowZero) - ) { - throw new ERR_SOCKET_BAD_PORT(name, port, allowZero) - } - return port | 0 - } - - /** - * @callback validateAbortSignal - * @param {*} signal - * @param {string} name - */ - - /** @type {validateAbortSignal} */ - const validateAbortSignal = hideStackFrames((signal, name) => { - if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) { - throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal) - } - }); - - /** - * @callback validateFunction - * @param {*} value - * @param {string} name - * @returns {asserts value is Function} - */ - - /** @type {validateFunction} */ - const validateFunction = hideStackFrames((value, name) => { - if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value) - }); - - /** - * @callback validatePlainFunction - * @param {*} value - * @param {string} name - * @returns {asserts value is Function} - */ - - /** @type {validatePlainFunction} */ - const validatePlainFunction = hideStackFrames((value, name) => { - if (typeof value !== 'function' || isAsyncFunction(value)) throw new ERR_INVALID_ARG_TYPE(name, 'Function', value) - }); - - /** - * @callback validateUndefined - * @param {*} value - * @param {string} name - * @returns {asserts value is undefined} - */ - - /** @type {validateUndefined} */ - const validateUndefined = hideStackFrames((value, name) => { - if (value !== undefined) throw new ERR_INVALID_ARG_TYPE(name, 'undefined', value) - }); - - /** - * @template T - * @param {T} value - * @param {string} name - * @param {T[]} union - */ - function validateUnion(value, name, union) { - if (!ArrayPrototypeIncludes(union, value)) { - throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value) - } - } - - /* - The rules for the Link header field are described here: - https://www.rfc-editor.org/rfc/rfc8288.html#section-3 - - This regex validates any string surrounded by angle brackets - (not necessarily a valid URI reference) followed by zero or more - link-params separated by semicolons. - */ - const linkValueRegExp = /^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/; - - /** - * @param {any} value - * @param {string} name - */ - function validateLinkHeaderFormat(value, name) { - if (typeof value === 'undefined' || !RegExpPrototypeExec(linkValueRegExp, value)) { - throw new ERR_INVALID_ARG_VALUE( - name, - value, - 'must be an array or string of format "; rel=preload; as=style"' - ) - } - } - - /** - * @param {any} hints - * @return {string} - */ - function validateLinkHeaderValue(hints) { - if (typeof hints === 'string') { - validateLinkHeaderFormat(hints, 'hints'); - return hints - } else if (ArrayIsArray(hints)) { - const hintsLength = hints.length; - let result = ''; - if (hintsLength === 0) { - return result - } - for (let i = 0; i < hintsLength; i++) { - const link = hints[i]; - validateLinkHeaderFormat(link, 'hints'); - result += link; - if (i !== hintsLength - 1) { - result += ', '; - } - } - return result - } - throw new ERR_INVALID_ARG_VALUE( - 'hints', - hints, - 'must be an array or string of format "; rel=preload; as=style"' - ) - } - validators = { - isInt32, - isUint32, - parseFileMode, - validateArray, - validateStringArray, - validateBooleanArray, - validateAbortSignalArray, - validateBoolean, - validateBuffer, - validateDictionary, - validateEncoding, - validateFunction, - validateInt32, - validateInteger, - validateNumber, - validateObject, - validateOneOf, - validatePlainFunction, - validatePort, - validateSignalName, - validateString, - validateUint32, - validateUndefined, - validateUnion, - validateAbortSignal, - validateLinkHeaderValue - }; - return validators; -} - -var endOfStream = {exports: {}}; - -var utils; -var hasRequiredUtils; - -function requireUtils () { - if (hasRequiredUtils) return utils; - hasRequiredUtils = 1; - - const { SymbolAsyncIterator, SymbolIterator, SymbolFor } = requirePrimordials(); - - // We need to use SymbolFor to make these globally available - // for interopt with readable-stream, i.e. readable-stream - // and node core needs to be able to read/write private state - // from each other for proper interoperability. - const kIsDestroyed = SymbolFor('nodejs.stream.destroyed'); - const kIsErrored = SymbolFor('nodejs.stream.errored'); - const kIsReadable = SymbolFor('nodejs.stream.readable'); - const kIsWritable = SymbolFor('nodejs.stream.writable'); - const kIsDisturbed = SymbolFor('nodejs.stream.disturbed'); - const kIsClosedPromise = SymbolFor('nodejs.webstream.isClosedPromise'); - const kControllerErrorFunction = SymbolFor('nodejs.webstream.controllerErrorFunction'); - function isReadableNodeStream(obj, strict = false) { - var _obj$_readableState; - return !!( - ( - obj && - typeof obj.pipe === 'function' && - typeof obj.on === 'function' && - (!strict || (typeof obj.pause === 'function' && typeof obj.resume === 'function')) && - (!obj._writableState || - ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === undefined - ? undefined - : _obj$_readableState.readable) !== false) && - // Duplex - (!obj._writableState || obj._readableState) - ) // Writable has .pipe. - ) - } - function isWritableNodeStream(obj) { - var _obj$_writableState; - return !!( - ( - obj && - typeof obj.write === 'function' && - typeof obj.on === 'function' && - (!obj._readableState || - ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === undefined - ? undefined - : _obj$_writableState.writable) !== false) - ) // Duplex - ) - } - function isDuplexNodeStream(obj) { - return !!( - obj && - typeof obj.pipe === 'function' && - obj._readableState && - typeof obj.on === 'function' && - typeof obj.write === 'function' - ) - } - function isNodeStream(obj) { - return ( - obj && - (obj._readableState || - obj._writableState || - (typeof obj.write === 'function' && typeof obj.on === 'function') || - (typeof obj.pipe === 'function' && typeof obj.on === 'function')) - ) - } - function isReadableStream(obj) { - return !!( - obj && - !isNodeStream(obj) && - typeof obj.pipeThrough === 'function' && - typeof obj.getReader === 'function' && - typeof obj.cancel === 'function' - ) - } - function isWritableStream(obj) { - return !!(obj && !isNodeStream(obj) && typeof obj.getWriter === 'function' && typeof obj.abort === 'function') - } - function isTransformStream(obj) { - return !!(obj && !isNodeStream(obj) && typeof obj.readable === 'object' && typeof obj.writable === 'object') - } - function isWebStream(obj) { - return isReadableStream(obj) || isWritableStream(obj) || isTransformStream(obj) - } - function isIterable(obj, isAsync) { - if (obj == null) return false - if (isAsync === true) return typeof obj[SymbolAsyncIterator] === 'function' - if (isAsync === false) return typeof obj[SymbolIterator] === 'function' - return typeof obj[SymbolAsyncIterator] === 'function' || typeof obj[SymbolIterator] === 'function' - } - function isDestroyed(stream) { - if (!isNodeStream(stream)) return null - const wState = stream._writableState; - const rState = stream._readableState; - const state = wState || rState; - return !!(stream.destroyed || stream[kIsDestroyed] || (state !== null && state !== undefined && state.destroyed)) - } - - // Have been end():d. - function isWritableEnded(stream) { - if (!isWritableNodeStream(stream)) return null - if (stream.writableEnded === true) return true - const wState = stream._writableState; - if (wState !== null && wState !== undefined && wState.errored) return false - if (typeof (wState === null || wState === undefined ? undefined : wState.ended) !== 'boolean') return null - return wState.ended - } - - // Have emitted 'finish'. - function isWritableFinished(stream, strict) { - if (!isWritableNodeStream(stream)) return null - if (stream.writableFinished === true) return true - const wState = stream._writableState; - if (wState !== null && wState !== undefined && wState.errored) return false - if (typeof (wState === null || wState === undefined ? undefined : wState.finished) !== 'boolean') return null - return !!(wState.finished || (strict === false && wState.ended === true && wState.length === 0)) - } - - // Have been push(null):d. - function isReadableEnded(stream) { - if (!isReadableNodeStream(stream)) return null - if (stream.readableEnded === true) return true - const rState = stream._readableState; - if (!rState || rState.errored) return false - if (typeof (rState === null || rState === undefined ? undefined : rState.ended) !== 'boolean') return null - return rState.ended - } - - // Have emitted 'end'. - function isReadableFinished(stream, strict) { - if (!isReadableNodeStream(stream)) return null - const rState = stream._readableState; - if (rState !== null && rState !== undefined && rState.errored) return false - if (typeof (rState === null || rState === undefined ? undefined : rState.endEmitted) !== 'boolean') return null - return !!(rState.endEmitted || (strict === false && rState.ended === true && rState.length === 0)) - } - function isReadable(stream) { - if (stream && stream[kIsReadable] != null) return stream[kIsReadable] - if (typeof (stream === null || stream === undefined ? undefined : stream.readable) !== 'boolean') return null - if (isDestroyed(stream)) return false - return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream) - } - function isWritable(stream) { - if (stream && stream[kIsWritable] != null) return stream[kIsWritable] - if (typeof (stream === null || stream === undefined ? undefined : stream.writable) !== 'boolean') return null - if (isDestroyed(stream)) return false - return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream) - } - function isFinished(stream, opts) { - if (!isNodeStream(stream)) { - return null - } - if (isDestroyed(stream)) { - return true - } - if ((opts === null || opts === undefined ? undefined : opts.readable) !== false && isReadable(stream)) { - return false - } - if ((opts === null || opts === undefined ? undefined : opts.writable) !== false && isWritable(stream)) { - return false - } - return true - } - function isWritableErrored(stream) { - var _stream$_writableStat, _stream$_writableStat2; - if (!isNodeStream(stream)) { - return null - } - if (stream.writableErrored) { - return stream.writableErrored - } - return (_stream$_writableStat = - (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === undefined - ? undefined - : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== undefined - ? _stream$_writableStat - : null - } - function isReadableErrored(stream) { - var _stream$_readableStat, _stream$_readableStat2; - if (!isNodeStream(stream)) { - return null - } - if (stream.readableErrored) { - return stream.readableErrored - } - return (_stream$_readableStat = - (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === undefined - ? undefined - : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== undefined - ? _stream$_readableStat - : null - } - function isClosed(stream) { - if (!isNodeStream(stream)) { - return null - } - if (typeof stream.closed === 'boolean') { - return stream.closed - } - const wState = stream._writableState; - const rState = stream._readableState; - if ( - typeof (wState === null || wState === undefined ? undefined : wState.closed) === 'boolean' || - typeof (rState === null || rState === undefined ? undefined : rState.closed) === 'boolean' - ) { - return ( - (wState === null || wState === undefined ? undefined : wState.closed) || - (rState === null || rState === undefined ? undefined : rState.closed) - ) - } - if (typeof stream._closed === 'boolean' && isOutgoingMessage(stream)) { - return stream._closed - } - return null - } - function isOutgoingMessage(stream) { - return ( - typeof stream._closed === 'boolean' && - typeof stream._defaultKeepAlive === 'boolean' && - typeof stream._removedConnection === 'boolean' && - typeof stream._removedContLen === 'boolean' - ) - } - function isServerResponse(stream) { - return typeof stream._sent100 === 'boolean' && isOutgoingMessage(stream) - } - function isServerRequest(stream) { - var _stream$req; - return ( - typeof stream._consuming === 'boolean' && - typeof stream._dumped === 'boolean' && - ((_stream$req = stream.req) === null || _stream$req === undefined ? undefined : _stream$req.upgradeOrConnect) === - undefined - ) - } - function willEmitClose(stream) { - if (!isNodeStream(stream)) return null - const wState = stream._writableState; - const rState = stream._readableState; - const state = wState || rState; - return ( - (!state && isServerResponse(stream)) || !!(state && state.autoDestroy && state.emitClose && state.closed === false) - ) - } - function isDisturbed(stream) { - var _stream$kIsDisturbed; - return !!( - stream && - ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== undefined - ? _stream$kIsDisturbed - : stream.readableDidRead || stream.readableAborted) - ) - } - function isErrored(stream) { - var _ref, - _ref2, - _ref3, - _ref4, - _ref5, - _stream$kIsErrored, - _stream$_readableStat3, - _stream$_writableStat3, - _stream$_readableStat4, - _stream$_writableStat4; - return !!( - stream && - ((_ref = - (_ref2 = - (_ref3 = - (_ref4 = - (_ref5 = - (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== undefined - ? _stream$kIsErrored - : stream.readableErrored) !== null && _ref5 !== undefined - ? _ref5 - : stream.writableErrored) !== null && _ref4 !== undefined - ? _ref4 - : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === undefined - ? undefined - : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== undefined - ? _ref3 - : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === undefined - ? undefined - : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== undefined - ? _ref2 - : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === undefined - ? undefined - : _stream$_readableStat4.errored) !== null && _ref !== undefined - ? _ref - : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === undefined - ? undefined - : _stream$_writableStat4.errored) - ) - } - utils = { - isDestroyed, - kIsDestroyed, - isDisturbed, - kIsDisturbed, - isErrored, - kIsErrored, - isReadable, - kIsReadable, - kIsClosedPromise, - kControllerErrorFunction, - kIsWritable, - isClosed, - isDuplexNodeStream, - isFinished, - isIterable, - isReadableNodeStream, - isReadableStream, - isReadableEnded, - isReadableFinished, - isReadableErrored, - isNodeStream, - isWebStream, - isWritable, - isWritableNodeStream, - isWritableStream, - isWritableEnded, - isWritableFinished, - isWritableErrored, - isServerRequest, - isServerResponse, - willEmitClose, - isTransformStream - }; - return utils; -} - -var hasRequiredEndOfStream; - -function requireEndOfStream () { - if (hasRequiredEndOfStream) return endOfStream.exports; - hasRequiredEndOfStream = 1; - - /* replacement start */ - - const process = requireBrowser$2(); - - /* replacement end */ - - const { AbortError, codes } = requireErrors(); - const { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes; - const { kEmptyObject, once } = requireUtil$1(); - const { validateAbortSignal, validateFunction, validateObject, validateBoolean } = requireValidators(); - const { Promise, PromisePrototypeThen, SymbolDispose } = requirePrimordials(); - const { - isClosed, - isReadable, - isReadableNodeStream, - isReadableStream, - isReadableFinished, - isReadableErrored, - isWritable, - isWritableNodeStream, - isWritableStream, - isWritableFinished, - isWritableErrored, - isNodeStream, - willEmitClose: _willEmitClose, - kIsClosedPromise - } = requireUtils(); - let addAbortListener; - function isRequest(stream) { - return stream.setHeader && typeof stream.abort === 'function' - } - const nop = () => {}; - function eos(stream, options, callback) { - var _options$readable, _options$writable; - if (arguments.length === 2) { - callback = options; - options = kEmptyObject; - } else if (options == null) { - options = kEmptyObject; - } else { - validateObject(options, 'options'); - } - validateFunction(callback, 'callback'); - validateAbortSignal(options.signal, 'options.signal'); - callback = once(callback); - if (isReadableStream(stream) || isWritableStream(stream)) { - return eosWeb(stream, options, callback) - } - if (!isNodeStream(stream)) { - throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream) - } - const readable = - (_options$readable = options.readable) !== null && _options$readable !== undefined - ? _options$readable - : isReadableNodeStream(stream); - const writable = - (_options$writable = options.writable) !== null && _options$writable !== undefined - ? _options$writable - : isWritableNodeStream(stream); - const wState = stream._writableState; - const rState = stream._readableState; - const onlegacyfinish = () => { - if (!stream.writable) { - onfinish(); - } - }; - - // TODO (ronag): Improve soft detection to include core modules and - // common ecosystem modules that do properly emit 'close' but fail - // this generic check. - let willEmitClose = - _willEmitClose(stream) && isReadableNodeStream(stream) === readable && isWritableNodeStream(stream) === writable; - let writableFinished = isWritableFinished(stream, false); - const onfinish = () => { - writableFinished = true; - // Stream should not be destroyed here. If it is that - // means that user space is doing something differently and - // we cannot trust willEmitClose. - if (stream.destroyed) { - willEmitClose = false; - } - if (willEmitClose && (!stream.readable || readable)) { - return - } - if (!readable || readableFinished) { - callback.call(stream); - } - }; - let readableFinished = isReadableFinished(stream, false); - const onend = () => { - readableFinished = true; - // Stream should not be destroyed here. If it is that - // means that user space is doing something differently and - // we cannot trust willEmitClose. - if (stream.destroyed) { - willEmitClose = false; - } - if (willEmitClose && (!stream.writable || writable)) { - return - } - if (!writable || writableFinished) { - callback.call(stream); - } - }; - const onerror = (err) => { - callback.call(stream, err); - }; - let closed = isClosed(stream); - const onclose = () => { - closed = true; - const errored = isWritableErrored(stream) || isReadableErrored(stream); - if (errored && typeof errored !== 'boolean') { - return callback.call(stream, errored) - } - if (readable && !readableFinished && isReadableNodeStream(stream, true)) { - if (!isReadableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE()) - } - if (writable && !writableFinished) { - if (!isWritableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE()) - } - callback.call(stream); - }; - const onclosed = () => { - closed = true; - const errored = isWritableErrored(stream) || isReadableErrored(stream); - if (errored && typeof errored !== 'boolean') { - return callback.call(stream, errored) - } - callback.call(stream); - }; - const onrequest = () => { - stream.req.on('finish', onfinish); - }; - if (isRequest(stream)) { - stream.on('complete', onfinish); - if (!willEmitClose) { - stream.on('abort', onclose); - } - if (stream.req) { - onrequest(); - } else { - stream.on('request', onrequest); - } - } else if (writable && !wState) { - // legacy streams - stream.on('end', onlegacyfinish); - stream.on('close', onlegacyfinish); - } - - // Not all streams will emit 'close' after 'aborted'. - if (!willEmitClose && typeof stream.aborted === 'boolean') { - stream.on('aborted', onclose); - } - stream.on('end', onend); - stream.on('finish', onfinish); - if (options.error !== false) { - stream.on('error', onerror); - } - stream.on('close', onclose); - if (closed) { - process.nextTick(onclose); - } else if ( - (wState !== null && wState !== undefined && wState.errorEmitted) || - (rState !== null && rState !== undefined && rState.errorEmitted) - ) { - if (!willEmitClose) { - process.nextTick(onclosed); - } - } else if ( - !readable && - (!willEmitClose || isReadable(stream)) && - (writableFinished || isWritable(stream) === false) - ) { - process.nextTick(onclosed); - } else if ( - !writable && - (!willEmitClose || isWritable(stream)) && - (readableFinished || isReadable(stream) === false) - ) { - process.nextTick(onclosed); - } else if (rState && stream.req && stream.aborted) { - process.nextTick(onclosed); - } - const cleanup = () => { - callback = nop; - stream.removeListener('aborted', onclose); - stream.removeListener('complete', onfinish); - stream.removeListener('abort', onclose); - stream.removeListener('request', onrequest); - if (stream.req) stream.req.removeListener('finish', onfinish); - stream.removeListener('end', onlegacyfinish); - stream.removeListener('close', onlegacyfinish); - stream.removeListener('finish', onfinish); - stream.removeListener('end', onend); - stream.removeListener('error', onerror); - stream.removeListener('close', onclose); - }; - if (options.signal && !closed) { - const abort = () => { - // Keep it because cleanup removes it. - const endCallback = callback; - cleanup(); - endCallback.call( - stream, - new AbortError(undefined, { - cause: options.signal.reason - }) - ); - }; - if (options.signal.aborted) { - process.nextTick(abort); - } else { - addAbortListener = addAbortListener || requireUtil$1().addAbortListener; - const disposable = addAbortListener(options.signal, abort); - const originalCallback = callback; - callback = once((...args) => { - disposable[SymbolDispose](); - originalCallback.apply(stream, args); - }); - } - } - return cleanup - } - function eosWeb(stream, options, callback) { - let isAborted = false; - let abort = nop; - if (options.signal) { - abort = () => { - isAborted = true; - callback.call( - stream, - new AbortError(undefined, { - cause: options.signal.reason - }) - ); - }; - if (options.signal.aborted) { - process.nextTick(abort); - } else { - addAbortListener = addAbortListener || requireUtil$1().addAbortListener; - const disposable = addAbortListener(options.signal, abort); - const originalCallback = callback; - callback = once((...args) => { - disposable[SymbolDispose](); - originalCallback.apply(stream, args); - }); - } - } - const resolverFn = (...args) => { - if (!isAborted) { - process.nextTick(() => callback.apply(stream, args)); - } - }; - PromisePrototypeThen(stream[kIsClosedPromise].promise, resolverFn, resolverFn); - return nop - } - function finished(stream, opts) { - var _opts; - let autoCleanup = false; - if (opts === null) { - opts = kEmptyObject; - } - if ((_opts = opts) !== null && _opts !== undefined && _opts.cleanup) { - validateBoolean(opts.cleanup, 'cleanup'); - autoCleanup = opts.cleanup; - } - return new Promise((resolve, reject) => { - const cleanup = eos(stream, opts, (err) => { - if (autoCleanup) { - cleanup(); - } - if (err) { - reject(err); - } else { - resolve(); - } - }); - }) - } - endOfStream.exports = eos; - endOfStream.exports.finished = finished; - return endOfStream.exports; -} - -var destroy_1; -var hasRequiredDestroy; - -function requireDestroy () { - if (hasRequiredDestroy) return destroy_1; - hasRequiredDestroy = 1; - - /* replacement start */ - - const process = requireBrowser$2(); - - /* replacement end */ - - const { - aggregateTwoErrors, - codes: { ERR_MULTIPLE_CALLBACK }, - AbortError - } = requireErrors(); - const { Symbol } = requirePrimordials(); - const { kIsDestroyed, isDestroyed, isFinished, isServerRequest } = requireUtils(); - const kDestroy = Symbol('kDestroy'); - const kConstruct = Symbol('kConstruct'); - function checkError(err, w, r) { - if (err) { - // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364 - err.stack; // eslint-disable-line no-unused-expressions - - if (w && !w.errored) { - w.errored = err; - } - if (r && !r.errored) { - r.errored = err; - } - } - } - - // Backwards compat. cb() is undocumented and unused in core but - // unfortunately might be used by modules. - function destroy(err, cb) { - const r = this._readableState; - const w = this._writableState; - // With duplex streams we use the writable side for state. - const s = w || r; - if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) { - if (typeof cb === 'function') { - cb(); - } - return this - } - - // We set destroyed to true before firing error callbacks in order - // to make it re-entrance safe in case destroy() is called within callbacks - checkError(err, w, r); - if (w) { - w.destroyed = true; - } - if (r) { - r.destroyed = true; - } - - // If still constructing then defer calling _destroy. - if (!s.constructed) { - this.once(kDestroy, function (er) { - _destroy(this, aggregateTwoErrors(er, err), cb); - }); - } else { - _destroy(this, err, cb); - } - return this - } - function _destroy(self, err, cb) { - let called = false; - function onDestroy(err) { - if (called) { - return - } - called = true; - const r = self._readableState; - const w = self._writableState; - checkError(err, w, r); - if (w) { - w.closed = true; - } - if (r) { - r.closed = true; - } - if (typeof cb === 'function') { - cb(err); - } - if (err) { - process.nextTick(emitErrorCloseNT, self, err); - } else { - process.nextTick(emitCloseNT, self); - } - } - try { - self._destroy(err || null, onDestroy); - } catch (err) { - onDestroy(err); - } - } - function emitErrorCloseNT(self, err) { - emitErrorNT(self, err); - emitCloseNT(self); - } - function emitCloseNT(self) { - const r = self._readableState; - const w = self._writableState; - if (w) { - w.closeEmitted = true; - } - if (r) { - r.closeEmitted = true; - } - if ((w !== null && w !== undefined && w.emitClose) || (r !== null && r !== undefined && r.emitClose)) { - self.emit('close'); - } - } - function emitErrorNT(self, err) { - const r = self._readableState; - const w = self._writableState; - if ((w !== null && w !== undefined && w.errorEmitted) || (r !== null && r !== undefined && r.errorEmitted)) { - return - } - if (w) { - w.errorEmitted = true; - } - if (r) { - r.errorEmitted = true; - } - self.emit('error', err); - } - function undestroy() { - const r = this._readableState; - const w = this._writableState; - if (r) { - r.constructed = true; - r.closed = false; - r.closeEmitted = false; - r.destroyed = false; - r.errored = null; - r.errorEmitted = false; - r.reading = false; - r.ended = r.readable === false; - r.endEmitted = r.readable === false; - } - if (w) { - w.constructed = true; - w.destroyed = false; - w.closed = false; - w.closeEmitted = false; - w.errored = null; - w.errorEmitted = false; - w.finalCalled = false; - w.prefinished = false; - w.ended = w.writable === false; - w.ending = w.writable === false; - w.finished = w.writable === false; - } - } - function errorOrDestroy(stream, err, sync) { - // We have tests that rely on errors being emitted - // in the same tick, so changing this is semver major. - // For now when you opt-in to autoDestroy we allow - // the error to be emitted nextTick. In a future - // semver major update we should change the default to this. - - const r = stream._readableState; - const w = stream._writableState; - if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) { - return this - } - if ((r !== null && r !== undefined && r.autoDestroy) || (w !== null && w !== undefined && w.autoDestroy)) - stream.destroy(err); - else if (err) { - // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364 - err.stack; // eslint-disable-line no-unused-expressions - - if (w && !w.errored) { - w.errored = err; - } - if (r && !r.errored) { - r.errored = err; - } - if (sync) { - process.nextTick(emitErrorNT, stream, err); - } else { - emitErrorNT(stream, err); - } - } - } - function construct(stream, cb) { - if (typeof stream._construct !== 'function') { - return - } - const r = stream._readableState; - const w = stream._writableState; - if (r) { - r.constructed = false; - } - if (w) { - w.constructed = false; - } - stream.once(kConstruct, cb); - if (stream.listenerCount(kConstruct) > 1) { - // Duplex - return - } - process.nextTick(constructNT, stream); - } - function constructNT(stream) { - let called = false; - function onConstruct(err) { - if (called) { - errorOrDestroy(stream, err !== null && err !== undefined ? err : new ERR_MULTIPLE_CALLBACK()); - return - } - called = true; - const r = stream._readableState; - const w = stream._writableState; - const s = w || r; - if (r) { - r.constructed = true; - } - if (w) { - w.constructed = true; - } - if (s.destroyed) { - stream.emit(kDestroy, err); - } else if (err) { - errorOrDestroy(stream, err, true); - } else { - process.nextTick(emitConstructNT, stream); - } - } - try { - stream._construct((err) => { - process.nextTick(onConstruct, err); - }); - } catch (err) { - process.nextTick(onConstruct, err); - } - } - function emitConstructNT(stream) { - stream.emit(kConstruct); - } - function isRequest(stream) { - return (stream === null || stream === undefined ? undefined : stream.setHeader) && typeof stream.abort === 'function' - } - function emitCloseLegacy(stream) { - stream.emit('close'); - } - function emitErrorCloseLegacy(stream, err) { - stream.emit('error', err); - process.nextTick(emitCloseLegacy, stream); - } - - // Normalize destroy for legacy. - function destroyer(stream, err) { - if (!stream || isDestroyed(stream)) { - return - } - if (!err && !isFinished(stream)) { - err = new AbortError(); - } - - // TODO: Remove isRequest branches. - if (isServerRequest(stream)) { - stream.socket = null; - stream.destroy(err); - } else if (isRequest(stream)) { - stream.abort(); - } else if (isRequest(stream.req)) { - stream.req.abort(); - } else if (typeof stream.destroy === 'function') { - stream.destroy(err); - } else if (typeof stream.close === 'function') { - // TODO: Don't lose err? - stream.close(); - } else if (err) { - process.nextTick(emitErrorCloseLegacy, stream, err); - } else { - process.nextTick(emitCloseLegacy, stream); - } - if (!stream.destroyed) { - stream[kIsDestroyed] = true; - } - } - destroy_1 = { - construct, - destroyer, - destroy, - undestroy, - errorOrDestroy - }; - return destroy_1; -} - -var legacy; -var hasRequiredLegacy; - -function requireLegacy () { - if (hasRequiredLegacy) return legacy; - hasRequiredLegacy = 1; - - const { ArrayIsArray, ObjectSetPrototypeOf } = requirePrimordials(); - const { EventEmitter: EE } = requireEvents$1(); - function Stream(opts) { - EE.call(this, opts); - } - ObjectSetPrototypeOf(Stream.prototype, EE.prototype); - ObjectSetPrototypeOf(Stream, EE); - Stream.prototype.pipe = function (dest, options) { - const source = this; - function ondata(chunk) { - if (dest.writable && dest.write(chunk) === false && source.pause) { - source.pause(); - } - } - source.on('data', ondata); - function ondrain() { - if (source.readable && source.resume) { - source.resume(); - } - } - dest.on('drain', ondrain); - - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend); - source.on('close', onclose); - } - let didOnEnd = false; - function onend() { - if (didOnEnd) return - didOnEnd = true; - dest.end(); - } - function onclose() { - if (didOnEnd) return - didOnEnd = true; - if (typeof dest.destroy === 'function') dest.destroy(); - } - - // Don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup(); - if (EE.listenerCount(this, 'error') === 0) { - this.emit('error', er); - } - } - prependListener(source, 'error', onerror); - prependListener(dest, 'error', onerror); - - // Remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); - source.removeListener('end', onend); - source.removeListener('close', onclose); - source.removeListener('error', onerror); - dest.removeListener('error', onerror); - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); - dest.removeListener('close', cleanup); - } - source.on('end', cleanup); - source.on('close', cleanup); - dest.on('close', cleanup); - dest.emit('pipe', source); - - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest - }; - function prependListener(emitter, event, fn) { - // Sadly this is not cacheable as some libraries bundle their own - // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn) - - // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn); - else if (ArrayIsArray(emitter._events[event])) emitter._events[event].unshift(fn); - else emitter._events[event] = [fn, emitter._events[event]]; - } - legacy = { - Stream, - prependListener - }; - return legacy; -} - -var addAbortSignal = {exports: {}}; - -var hasRequiredAddAbortSignal; - -function requireAddAbortSignal () { - if (hasRequiredAddAbortSignal) return addAbortSignal.exports; - hasRequiredAddAbortSignal = 1; - (function (module) { - - const { SymbolDispose } = requirePrimordials(); - const { AbortError, codes } = requireErrors(); - const { isNodeStream, isWebStream, kControllerErrorFunction } = requireUtils(); - const eos = requireEndOfStream(); - const { ERR_INVALID_ARG_TYPE } = codes; - let addAbortListener; - - // This method is inlined here for readable-stream - // It also does not allow for signal to not exist on the stream - // https://github.com/nodejs/node/pull/36061#discussion_r533718029 - const validateAbortSignal = (signal, name) => { - if (typeof signal !== 'object' || !('aborted' in signal)) { - throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal) - } - }; - module.exports.addAbortSignal = function addAbortSignal(signal, stream) { - validateAbortSignal(signal, 'signal'); - if (!isNodeStream(stream) && !isWebStream(stream)) { - throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream) - } - return module.exports.addAbortSignalNoValidate(signal, stream) - }; - module.exports.addAbortSignalNoValidate = function (signal, stream) { - if (typeof signal !== 'object' || !('aborted' in signal)) { - return stream - } - const onAbort = isNodeStream(stream) - ? () => { - stream.destroy( - new AbortError(undefined, { - cause: signal.reason - }) - ); - } - : () => { - stream[kControllerErrorFunction]( - new AbortError(undefined, { - cause: signal.reason - }) - ); - }; - if (signal.aborted) { - onAbort(); - } else { - addAbortListener = addAbortListener || requireUtil$1().addAbortListener; - const disposable = addAbortListener(signal, onAbort); - eos(stream, disposable[SymbolDispose]); - } - return stream - }; - } (addAbortSignal)); - return addAbortSignal.exports; -} - -var buffer_list; -var hasRequiredBuffer_list; - -function requireBuffer_list () { - if (hasRequiredBuffer_list) return buffer_list; - hasRequiredBuffer_list = 1; - - const { StringPrototypeSlice, SymbolIterator, TypedArrayPrototypeSet, Uint8Array } = requirePrimordials(); - const { Buffer } = require$$0$2; - const { inspect } = requireUtil$1(); - buffer_list = class BufferList { - constructor() { - this.head = null; - this.tail = null; - this.length = 0; - } - push(v) { - const entry = { - data: v, - next: null - }; - if (this.length > 0) this.tail.next = entry; - else this.head = entry; - this.tail = entry; - ++this.length; - } - unshift(v) { - const entry = { - data: v, - next: this.head - }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - } - shift() { - if (this.length === 0) return - const ret = this.head.data; - if (this.length === 1) this.head = this.tail = null; - else this.head = this.head.next; - --this.length; - return ret - } - clear() { - this.head = this.tail = null; - this.length = 0; - } - join(s) { - if (this.length === 0) return '' - let p = this.head; - let ret = '' + p.data; - while ((p = p.next) !== null) ret += s + p.data; - return ret - } - concat(n) { - if (this.length === 0) return Buffer.alloc(0) - const ret = Buffer.allocUnsafe(n >>> 0); - let p = this.head; - let i = 0; - while (p) { - TypedArrayPrototypeSet(ret, p.data, i); - i += p.data.length; - p = p.next; - } - return ret - } - - // Consumes a specified amount of bytes or characters from the buffered data. - consume(n, hasStrings) { - const data = this.head.data; - if (n < data.length) { - // `slice` is the same for buffers and strings. - const slice = data.slice(0, n); - this.head.data = data.slice(n); - return slice - } - if (n === data.length) { - // First chunk is a perfect match. - return this.shift() - } - // Result spans more than one buffer. - return hasStrings ? this._getString(n) : this._getBuffer(n) - } - first() { - return this.head.data - } - *[SymbolIterator]() { - for (let p = this.head; p; p = p.next) { - yield p.data; - } - } - - // Consumes a specified amount of characters from the buffered data. - _getString(n) { - let ret = ''; - let p = this.head; - let c = 0; - do { - const str = p.data; - if (n > str.length) { - ret += str; - n -= str.length; - } else { - if (n === str.length) { - ret += str; - ++c; - if (p.next) this.head = p.next; - else this.head = this.tail = null; - } else { - ret += StringPrototypeSlice(str, 0, n); - this.head = p; - p.data = StringPrototypeSlice(str, n); - } - break - } - ++c; - } while ((p = p.next) !== null) - this.length -= c; - return ret - } - - // Consumes a specified amount of bytes from the buffered data. - _getBuffer(n) { - const ret = Buffer.allocUnsafe(n); - const retLen = n; - let p = this.head; - let c = 0; - do { - const buf = p.data; - if (n > buf.length) { - TypedArrayPrototypeSet(ret, buf, retLen - n); - n -= buf.length; - } else { - if (n === buf.length) { - TypedArrayPrototypeSet(ret, buf, retLen - n); - ++c; - if (p.next) this.head = p.next; - else this.head = this.tail = null; - } else { - TypedArrayPrototypeSet(ret, new Uint8Array(buf.buffer, buf.byteOffset, n), retLen - n); - this.head = p; - p.data = buf.slice(n); - } - break - } - ++c; - } while ((p = p.next) !== null) - this.length -= c; - return ret - } - - // Make sure the linked list only shows the minimal necessary information. - [Symbol.for('nodejs.util.inspect.custom')](_, options) { - return inspect(this, { - ...options, - // Only inspect one level. - depth: 0, - // It should not recurse. - customInspect: false - }) - } - }; - return buffer_list; -} - -var state; -var hasRequiredState; - -function requireState () { - if (hasRequiredState) return state; - hasRequiredState = 1; - - const { MathFloor, NumberIsInteger } = requirePrimordials(); - const { validateInteger } = requireValidators(); - const { ERR_INVALID_ARG_VALUE } = requireErrors().codes; - let defaultHighWaterMarkBytes = 16 * 1024; - let defaultHighWaterMarkObjectMode = 16; - function highWaterMarkFrom(options, isDuplex, duplexKey) { - return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null - } - function getDefaultHighWaterMark(objectMode) { - return objectMode ? defaultHighWaterMarkObjectMode : defaultHighWaterMarkBytes - } - function setDefaultHighWaterMark(objectMode, value) { - validateInteger(value, 'value', 0); - if (objectMode) { - defaultHighWaterMarkObjectMode = value; - } else { - defaultHighWaterMarkBytes = value; - } - } - function getHighWaterMark(state, options, duplexKey, isDuplex) { - const hwm = highWaterMarkFrom(options, isDuplex, duplexKey); - if (hwm != null) { - if (!NumberIsInteger(hwm) || hwm < 0) { - const name = isDuplex ? `options.${duplexKey}` : 'options.highWaterMark'; - throw new ERR_INVALID_ARG_VALUE(name, hwm) - } - return MathFloor(hwm) - } - - // Default value - return getDefaultHighWaterMark(state.objectMode) - } - state = { - getHighWaterMark, - getDefaultHighWaterMark, - setDefaultHighWaterMark - }; - return state; -} - -var string_decoder = {}; - -var safeBuffer = {exports: {}}; - -/*! safe-buffer. MIT License. Feross Aboukhadijeh */ - -var hasRequiredSafeBuffer; - -function requireSafeBuffer () { - if (hasRequiredSafeBuffer) return safeBuffer.exports; - hasRequiredSafeBuffer = 1; - (function (module, exports$1) { - /* eslint-disable node/no-deprecated-api */ - var buffer = require$$0$2; - var Buffer = buffer.Buffer; - - // alternative to using Object.keys for old browsers - function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key]; - } - } - if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer; - } else { - // Copy properties from require('buffer') - copyProps(buffer, exports$1); - exports$1.Buffer = SafeBuffer; - } - - function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) - } - - SafeBuffer.prototype = Object.create(Buffer.prototype); - - // Copy static methods from Buffer - copyProps(Buffer, SafeBuffer); - - SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) - }; - - SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size); - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding); - } else { - buf.fill(fill); - } - } else { - buf.fill(0); - } - return buf - }; - - SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) - }; - - SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) - }; - } (safeBuffer, safeBuffer.exports)); - return safeBuffer.exports; -} - -var hasRequiredString_decoder; - -function requireString_decoder () { - if (hasRequiredString_decoder) return string_decoder; - hasRequiredString_decoder = 1; - - /**/ - - var Buffer = requireSafeBuffer().Buffer; - /**/ - - var isEncoding = Buffer.isEncoding || function (encoding) { - encoding = '' + encoding; - switch (encoding && encoding.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 true; - default: - return false; - } - }; - - function _normalizeEncoding(enc) { - if (!enc) return 'utf8'; - var retried; - while (true) { - switch (enc) { - 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 enc; - default: - if (retried) return; // undefined - enc = ('' + enc).toLowerCase(); - retried = true; - } - } - } - // Do not cache `Buffer.isEncoding` when checking encoding names as some - // modules monkey-patch it to support additional encodings - function normalizeEncoding(enc) { - var nenc = _normalizeEncoding(enc); - if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); - return nenc || enc; - } - - // StringDecoder provides an interface for efficiently splitting a series of - // buffers into a series of JS strings without breaking apart multi-byte - // characters. - string_decoder.StringDecoder = StringDecoder; - function StringDecoder(encoding) { - this.encoding = normalizeEncoding(encoding); - var nb; - switch (this.encoding) { - case 'utf16le': - this.text = utf16Text; - this.end = utf16End; - nb = 4; - break; - case 'utf8': - this.fillLast = utf8FillLast; - nb = 4; - break; - case 'base64': - this.text = base64Text; - this.end = base64End; - nb = 3; - break; - default: - this.write = simpleWrite; - this.end = simpleEnd; - return; - } - this.lastNeed = 0; - this.lastTotal = 0; - this.lastChar = Buffer.allocUnsafe(nb); - } - - StringDecoder.prototype.write = function (buf) { - if (buf.length === 0) return ''; - var r; - var i; - if (this.lastNeed) { - r = this.fillLast(buf); - if (r === undefined) return ''; - i = this.lastNeed; - this.lastNeed = 0; - } else { - i = 0; - } - if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); - return r || ''; - }; - - StringDecoder.prototype.end = utf8End; - - // Returns only complete characters in a Buffer - StringDecoder.prototype.text = utf8Text; - - // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer - StringDecoder.prototype.fillLast = function (buf) { - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); - this.lastNeed -= buf.length; - }; - - // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a - // continuation byte. If an invalid byte is detected, -2 is returned. - function utf8CheckByte(byte) { - if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; - return byte >> 6 === 0x02 ? -1 : -2; - } - - // Checks at most 3 bytes at the end of a Buffer in order to detect an - // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) - // needed to complete the UTF-8 character (if applicable) are returned. - function utf8CheckIncomplete(self, buf, i) { - var j = buf.length - 1; - if (j < i) return 0; - var nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 1; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 2; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) { - if (nb === 2) nb = 0;else self.lastNeed = nb - 3; - } - return nb; - } - return 0; - } - - // Validates as many continuation bytes for a multi-byte UTF-8 character as - // needed or are available. If we see a non-continuation byte where we expect - // one, we "replace" the validated continuation bytes we've seen so far with - // a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding - // behavior. The continuation byte check is included three times in the case - // where all of the continuation bytes for a character exist in the same buffer. - // It is also done this way as a slight performance increase instead of using a - // loop. - function utf8CheckExtraBytes(self, buf, p) { - if ((buf[0] & 0xC0) !== 0x80) { - self.lastNeed = 0; - return '\ufffd'; - } - if (self.lastNeed > 1 && buf.length > 1) { - if ((buf[1] & 0xC0) !== 0x80) { - self.lastNeed = 1; - return '\ufffd'; - } - if (self.lastNeed > 2 && buf.length > 2) { - if ((buf[2] & 0xC0) !== 0x80) { - self.lastNeed = 2; - return '\ufffd'; - } - } - } - } - - // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. - function utf8FillLast(buf) { - var p = this.lastTotal - this.lastNeed; - var r = utf8CheckExtraBytes(this, buf); - if (r !== undefined) return r; - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, p, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, p, 0, buf.length); - this.lastNeed -= buf.length; - } - - // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a - // partial character, the character's bytes are buffered until the required - // number of bytes are available. - function utf8Text(buf, i) { - var total = utf8CheckIncomplete(this, buf, i); - if (!this.lastNeed) return buf.toString('utf8', i); - this.lastTotal = total; - var end = buf.length - (total - this.lastNeed); - buf.copy(this.lastChar, 0, end); - return buf.toString('utf8', i, end); - } - - // For UTF-8, a replacement character is added when ending on a partial - // character. - function utf8End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + '\ufffd'; - return r; - } - - // UTF-16LE typically needs two bytes per character, but even if we have an even - // number of bytes available, we need to check if we end on a leading/high - // surrogate. In that case, we need to wait for the next two bytes in order to - // decode the last character properly. - function utf16Text(buf, i) { - if ((buf.length - i) % 2 === 0) { - var r = buf.toString('utf16le', i); - if (r) { - var c = r.charCodeAt(r.length - 1); - if (c >= 0xD800 && c <= 0xDBFF) { - this.lastNeed = 2; - this.lastTotal = 4; - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - return r.slice(0, -1); - } - } - return r; - } - this.lastNeed = 1; - this.lastTotal = 2; - this.lastChar[0] = buf[buf.length - 1]; - return buf.toString('utf16le', i, buf.length - 1); - } - - // For UTF-16LE we do not explicitly append special replacement characters if we - // end on a partial character, we simply let v8 handle that. - function utf16End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) { - var end = this.lastTotal - this.lastNeed; - return r + this.lastChar.toString('utf16le', 0, end); - } - return r; - } - - function base64Text(buf, i) { - var n = (buf.length - i) % 3; - if (n === 0) return buf.toString('base64', i); - this.lastNeed = 3 - n; - this.lastTotal = 3; - if (n === 1) { - this.lastChar[0] = buf[buf.length - 1]; - } else { - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - } - return buf.toString('base64', i, buf.length - n); - } - - function base64End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); - return r; - } - - // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) - function simpleWrite(buf) { - return buf.toString(this.encoding); - } - - function simpleEnd(buf) { - return buf && buf.length ? this.write(buf) : ''; - } - return string_decoder; -} - -var from_1; -var hasRequiredFrom; - -function requireFrom () { - if (hasRequiredFrom) return from_1; - hasRequiredFrom = 1; - - /* replacement start */ - - const process = requireBrowser$2(); - - /* replacement end */ - - const { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = requirePrimordials(); - const { Buffer } = require$$0$2; - const { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = requireErrors().codes; - function from(Readable, iterable, opts) { - let iterator; - if (typeof iterable === 'string' || iterable instanceof Buffer) { - return new Readable({ - objectMode: true, - ...opts, - read() { - this.push(iterable); - this.push(null); - } - }) - } - let isAsync; - if (iterable && iterable[SymbolAsyncIterator]) { - isAsync = true; - iterator = iterable[SymbolAsyncIterator](); - } else if (iterable && iterable[SymbolIterator]) { - isAsync = false; - iterator = iterable[SymbolIterator](); - } else { - throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable) - } - const readable = new Readable({ - objectMode: true, - highWaterMark: 1, - // TODO(ronag): What options should be allowed? - ...opts - }); - - // Flag to protect against _read - // being called before last iteration completion. - let reading = false; - readable._read = function () { - if (!reading) { - reading = true; - next(); - } - }; - readable._destroy = function (error, cb) { - PromisePrototypeThen( - close(error), - () => process.nextTick(cb, error), - // nextTick is here in case cb throws - (e) => process.nextTick(cb, e || error) - ); - }; - async function close(error) { - const hadError = error !== undefined && error !== null; - const hasThrow = typeof iterator.throw === 'function'; - if (hadError && hasThrow) { - const { value, done } = await iterator.throw(error); - await value; - if (done) { - return - } - } - if (typeof iterator.return === 'function') { - const { value } = await iterator.return(); - await value; - } - } - async function next() { - for (;;) { - try { - const { value, done } = isAsync ? await iterator.next() : iterator.next(); - if (done) { - readable.push(null); - } else { - const res = value && typeof value.then === 'function' ? await value : value; - if (res === null) { - reading = false; - throw new ERR_STREAM_NULL_VALUES() - } else if (readable.push(res)) { - continue - } else { - reading = false; - } - } - } catch (err) { - readable.destroy(err); - } - break - } - } - return readable - } - from_1 = from; - return from_1; -} - -var readable; -var hasRequiredReadable; - -function requireReadable () { - if (hasRequiredReadable) return readable; - hasRequiredReadable = 1; - - /* replacement start */ - - const process = requireBrowser$2(); - - /* replacement end */ - - const { - ArrayPrototypeIndexOf, - NumberIsInteger, - NumberIsNaN, - NumberParseInt, - ObjectDefineProperties, - ObjectKeys, - ObjectSetPrototypeOf, - Promise, - SafeSet, - SymbolAsyncDispose, - SymbolAsyncIterator, - Symbol - } = requirePrimordials(); - readable = Readable; - Readable.ReadableState = ReadableState; - const { EventEmitter: EE } = requireEvents$1(); - const { Stream, prependListener } = requireLegacy(); - const { Buffer } = require$$0$2; - const { addAbortSignal } = requireAddAbortSignal(); - const eos = requireEndOfStream(); - let debug = requireUtil$1().debuglog('stream', (fn) => { - debug = fn; - }); - const BufferList = requireBuffer_list(); - const destroyImpl = requireDestroy(); - const { getHighWaterMark, getDefaultHighWaterMark } = requireState(); - const { - aggregateTwoErrors, - codes: { - ERR_INVALID_ARG_TYPE, - ERR_METHOD_NOT_IMPLEMENTED, - ERR_OUT_OF_RANGE, - ERR_STREAM_PUSH_AFTER_EOF, - ERR_STREAM_UNSHIFT_AFTER_END_EVENT - }, - AbortError - } = requireErrors(); - const { validateObject } = requireValidators(); - const kPaused = Symbol('kPaused'); - const { StringDecoder } = requireString_decoder(); - const from = requireFrom(); - ObjectSetPrototypeOf(Readable.prototype, Stream.prototype); - ObjectSetPrototypeOf(Readable, Stream); - const nop = () => {}; - const { errorOrDestroy } = destroyImpl; - const kObjectMode = 1 << 0; - const kEnded = 1 << 1; - const kEndEmitted = 1 << 2; - const kReading = 1 << 3; - const kConstructed = 1 << 4; - const kSync = 1 << 5; - const kNeedReadable = 1 << 6; - const kEmittedReadable = 1 << 7; - const kReadableListening = 1 << 8; - const kResumeScheduled = 1 << 9; - const kErrorEmitted = 1 << 10; - const kEmitClose = 1 << 11; - const kAutoDestroy = 1 << 12; - const kDestroyed = 1 << 13; - const kClosed = 1 << 14; - const kCloseEmitted = 1 << 15; - const kMultiAwaitDrain = 1 << 16; - const kReadingMore = 1 << 17; - const kDataEmitted = 1 << 18; - - // TODO(benjamingr) it is likely slower to do it this way than with free functions - function makeBitMapDescriptor(bit) { - return { - enumerable: false, - get() { - return (this.state & bit) !== 0 - }, - set(value) { - if (value) this.state |= bit; - else this.state &= ~bit; - } - } - } - ObjectDefineProperties(ReadableState.prototype, { - objectMode: makeBitMapDescriptor(kObjectMode), - ended: makeBitMapDescriptor(kEnded), - endEmitted: makeBitMapDescriptor(kEndEmitted), - reading: makeBitMapDescriptor(kReading), - // Stream is still being constructed and cannot be - // destroyed until construction finished or failed. - // Async construction is opt in, therefore we start as - // constructed. - constructed: makeBitMapDescriptor(kConstructed), - // A flag to be able to tell if the event 'readable'/'data' is emitted - // immediately, or on a later tick. We set this to true at first, because - // any actions that shouldn't happen until "later" should generally also - // not happen before the first read call. - sync: makeBitMapDescriptor(kSync), - // Whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - needReadable: makeBitMapDescriptor(kNeedReadable), - emittedReadable: makeBitMapDescriptor(kEmittedReadable), - readableListening: makeBitMapDescriptor(kReadableListening), - resumeScheduled: makeBitMapDescriptor(kResumeScheduled), - // True if the error was already emitted and should not be thrown again. - errorEmitted: makeBitMapDescriptor(kErrorEmitted), - emitClose: makeBitMapDescriptor(kEmitClose), - autoDestroy: makeBitMapDescriptor(kAutoDestroy), - // Has it been destroyed. - destroyed: makeBitMapDescriptor(kDestroyed), - // Indicates whether the stream has finished destroying. - closed: makeBitMapDescriptor(kClosed), - // True if close has been emitted or would have been emitted - // depending on emitClose. - closeEmitted: makeBitMapDescriptor(kCloseEmitted), - multiAwaitDrain: makeBitMapDescriptor(kMultiAwaitDrain), - // If true, a maybeReadMore has been scheduled. - readingMore: makeBitMapDescriptor(kReadingMore), - dataEmitted: makeBitMapDescriptor(kDataEmitted) - }); - function ReadableState(options, stream, isDuplex) { - // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof requireDuplex(); - - // Bit map field to store ReadableState more effciently with 1 bit per field - // instead of a V8 slot per field. - this.state = kEmitClose | kAutoDestroy | kConstructed | kSync; - // Object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away. - if (options && options.objectMode) this.state |= kObjectMode; - if (isDuplex && options && options.readableObjectMode) this.state |= kObjectMode; - - // The point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - this.highWaterMark = options - ? getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex) - : getDefaultHighWaterMark(false); - - // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift(). - this.buffer = new BufferList(); - this.length = 0; - this.pipes = []; - this.flowing = null; - this[kPaused] = null; - - // Should close be emitted on destroy. Defaults to true. - if (options && options.emitClose === false) this.state &= ~kEmitClose; - - // Should .destroy() be called after 'end' (and potentially 'finish'). - if (options && options.autoDestroy === false) this.state &= ~kAutoDestroy; - - // Indicates whether the stream has errored. When true no further - // _read calls, 'data' or 'readable' events should occur. This is needed - // since when autoDestroy is disabled we need a way to tell whether the - // stream has failed. - this.errored = null; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'; - - // Ref the piped dest which we need a drain event on it - // type: null | Writable | Set. - this.awaitDrainWriters = null; - this.decoder = null; - this.encoding = null; - if (options && options.encoding) { - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } - } - function Readable(options) { - if (!(this instanceof Readable)) return new Readable(options) - - // Checking for a Stream.Duplex instance is faster here instead of inside - // the ReadableState constructor, at least with V8 6.5. - const isDuplex = this instanceof requireDuplex(); - this._readableState = new ReadableState(options, this, isDuplex); - if (options) { - if (typeof options.read === 'function') this._read = options.read; - if (typeof options.destroy === 'function') this._destroy = options.destroy; - if (typeof options.construct === 'function') this._construct = options.construct; - if (options.signal && !isDuplex) addAbortSignal(options.signal, this); - } - Stream.call(this, options); - destroyImpl.construct(this, () => { - if (this._readableState.needReadable) { - maybeReadMore(this, this._readableState); - } - }); - } - Readable.prototype.destroy = destroyImpl.destroy; - Readable.prototype._undestroy = destroyImpl.undestroy; - Readable.prototype._destroy = function (err, cb) { - cb(err); - }; - Readable.prototype[EE.captureRejectionSymbol] = function (err) { - this.destroy(err); - }; - Readable.prototype[SymbolAsyncDispose] = function () { - let error; - if (!this.destroyed) { - error = this.readableEnded ? null : new AbortError(); - this.destroy(error); - } - return new Promise((resolve, reject) => eos(this, (err) => (err && err !== error ? reject(err) : resolve(null)))) - }; - - // Manually shove something into the read() buffer. - // This returns true if the highWaterMark has not been hit yet, - // similar to how Writable.write() returns true if you should - // write() some more. - Readable.prototype.push = function (chunk, encoding) { - return readableAddChunk(this, chunk, encoding, false) - }; - - // Unshift should *always* be something directly out of read(). - Readable.prototype.unshift = function (chunk, encoding) { - return readableAddChunk(this, chunk, encoding, true) - }; - function readableAddChunk(stream, chunk, encoding, addToFront) { - debug('readableAddChunk', chunk); - const state = stream._readableState; - let err; - if ((state.state & kObjectMode) === 0) { - if (typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (state.encoding !== encoding) { - if (addToFront && state.encoding) { - // When unshifting, if state.encoding is set, we have to save - // the string in the BufferList with the state encoding. - chunk = Buffer.from(chunk, encoding).toString(state.encoding); - } else { - chunk = Buffer.from(chunk, encoding); - encoding = ''; - } - } - } else if (chunk instanceof Buffer) { - encoding = ''; - } else if (Stream._isUint8Array(chunk)) { - chunk = Stream._uint8ArrayToBuffer(chunk); - encoding = ''; - } else if (chunk != null) { - err = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); - } - } - if (err) { - errorOrDestroy(stream, err); - } else if (chunk === null) { - state.state &= ~kReading; - onEofChunk(stream, state); - } else if ((state.state & kObjectMode) !== 0 || (chunk && chunk.length > 0)) { - if (addToFront) { - if ((state.state & kEndEmitted) !== 0) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT()); - else if (state.destroyed || state.errored) return false - else addChunk(stream, state, chunk, true); - } else if (state.ended) { - errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); - } else if (state.destroyed || state.errored) { - return false - } else { - state.state &= ~kReading; - if (state.decoder && !encoding) { - chunk = state.decoder.write(chunk); - if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false); - else maybeReadMore(stream, state); - } else { - addChunk(stream, state, chunk, false); - } - } - } else if (!addToFront) { - state.state &= ~kReading; - maybeReadMore(stream, state); - } - - // We can push more data if we are below the highWaterMark. - // Also, if we have no data yet, we can stand some more bytes. - // This is to work around cases where hwm=0, such as the repl. - return !state.ended && (state.length < state.highWaterMark || state.length === 0) - } - function addChunk(stream, state, chunk, addToFront) { - if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount('data') > 0) { - // Use the guard to avoid creating `Set()` repeatedly - // when we have multiple pipes. - if ((state.state & kMultiAwaitDrain) !== 0) { - state.awaitDrainWriters.clear(); - } else { - state.awaitDrainWriters = null; - } - state.dataEmitted = true; - stream.emit('data', chunk); - } else { - // Update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk); - else state.buffer.push(chunk); - if ((state.state & kNeedReadable) !== 0) emitReadable(stream); - } - maybeReadMore(stream, state); - } - Readable.prototype.isPaused = function () { - const state = this._readableState; - return state[kPaused] === true || state.flowing === false - }; - - // Backwards compatibility. - Readable.prototype.setEncoding = function (enc) { - const decoder = new StringDecoder(enc); - this._readableState.decoder = decoder; - // If setEncoding(null), decoder.encoding equals utf8. - this._readableState.encoding = this._readableState.decoder.encoding; - const buffer = this._readableState.buffer; - // Iterate over current buffer to convert already stored Buffers: - let content = ''; - for (const data of buffer) { - content += decoder.write(data); - } - buffer.clear(); - if (content !== '') buffer.push(content); - this._readableState.length = content.length; - return this - }; - - // Don't raise the hwm > 1GB. - const MAX_HWM = 0x40000000; - function computeNewHighWaterMark(n) { - if (n > MAX_HWM) { - throw new ERR_OUT_OF_RANGE('size', '<= 1GiB', n) - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts. - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n - } - - // This function is designed to be inlinable, so please take care when making - // changes to the function body. - function howMuchToRead(n, state) { - if (n <= 0 || (state.length === 0 && state.ended)) return 0 - if ((state.state & kObjectMode) !== 0) return 1 - if (NumberIsNaN(n)) { - // Only flow one buffer at a time. - if (state.flowing && state.length) return state.buffer.first().length - return state.length - } - if (n <= state.length) return n - return state.ended ? state.length : 0 - } - - // You can override either this method, or the async _read(n) below. - Readable.prototype.read = function (n) { - debug('read', n); - // Same as parseInt(undefined, 10), however V8 7.3 performance regressed - // in this scenario, so we are doing it manually. - if (n === undefined) { - n = NaN; - } else if (!NumberIsInteger(n)) { - n = NumberParseInt(n, 10); - } - const state = this._readableState; - const nOrig = n; - - // If we're asking for more than the current hwm, then raise the hwm. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n !== 0) state.state &= ~kEmittedReadable; - - // If we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if ( - n === 0 && - state.needReadable && - ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended) - ) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this); - else emitReadable(this); - return null - } - n = howMuchToRead(n, state); - - // If we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - let doRead = (state.state & kNeedReadable) !== 0; - debug('need readable', doRead); - - // If we currently have less than the highWaterMark, then also read some. - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } - - // However, if we've ended, then there's no point, if we're already - // reading, then it's unnecessary, if we're constructing we have to wait, - // and if we're destroyed or errored, then it's not allowed, - if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) { - doRead = false; - debug('reading, ended or constructing', doRead); - } else if (doRead) { - debug('do read'); - state.state |= kReading | kSync; - // If the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.state |= kNeedReadable; - - // Call internal read method - try { - this._read(state.highWaterMark); - } catch (err) { - errorOrDestroy(this, err); - } - state.state &= ~kSync; - - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead(nOrig, state); - } - let ret; - if (n > 0) ret = fromList(n, state); - else ret = null; - if (ret === null) { - state.needReadable = state.length <= state.highWaterMark; - n = 0; - } else { - state.length -= n; - if (state.multiAwaitDrain) { - state.awaitDrainWriters.clear(); - } else { - state.awaitDrainWriters = null; - } - } - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended) endReadable(this); - } - if (ret !== null && !state.errorEmitted && !state.closeEmitted) { - state.dataEmitted = true; - this.emit('data', ret); - } - return ret - }; - function onEofChunk(stream, state) { - debug('onEofChunk'); - if (state.ended) return - if (state.decoder) { - const chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - if (state.sync) { - // If we are sync, wait until next tick to emit the data. - // Otherwise we risk emitting data in the flow() - // the readable code triggers during a read() call. - emitReadable(stream); - } else { - // Emit 'readable' now to make sure it gets picked up. - state.needReadable = false; - state.emittedReadable = true; - // We have to emit readable now that we are EOF. Modules - // in the ecosystem (e.g. dicer) rely on this event being sync. - emitReadable_(stream); - } - } - - // Don't emit readable right away in sync mode, because this can trigger - // another read() call => stack overflow. This way, it might trigger - // a nextTick recursion warning, but that's not so bad. - function emitReadable(stream) { - const state = stream._readableState; - debug('emitReadable', state.needReadable, state.emittedReadable); - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - process.nextTick(emitReadable_, stream); - } - } - function emitReadable_(stream) { - const state = stream._readableState; - debug('emitReadable_', state.destroyed, state.length, state.ended); - if (!state.destroyed && !state.errored && (state.length || state.ended)) { - stream.emit('readable'); - state.emittedReadable = false; - } - - // The stream needs another readable event if: - // 1. It is not flowing, as the flow mechanism will take - // care of it. - // 2. It is not ended. - // 3. It is below the highWaterMark, so we can schedule - // another readable later. - state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; - flow(stream); - } - - // At this point, the user has presumably seen the 'readable' event, - // and called read() to consume some data. that may have triggered - // in turn another _read(n) call, in which case reading = true if - // it's in progress. - // However, if we're not ended, or reading, and the length < hwm, - // then go ahead and try to read some more preemptively. - function maybeReadMore(stream, state) { - if (!state.readingMore && state.constructed) { - state.readingMore = true; - process.nextTick(maybeReadMore_, stream, state); - } - } - function maybeReadMore_(stream, state) { - // Attempt to read more data if we should. - // - // The conditions for reading more data are (one of): - // - Not enough data buffered (state.length < state.highWaterMark). The loop - // is responsible for filling the buffer with enough data if such data - // is available. If highWaterMark is 0 and we are not in the flowing mode - // we should _not_ attempt to buffer any extra data. We'll get more data - // when the stream consumer calls read() instead. - // - No data in the buffer, and the stream is in flowing mode. In this mode - // the loop below is responsible for ensuring read() is called. Failing to - // call read here would abort the flow and there's no other mechanism for - // continuing the flow if the stream consumer has just subscribed to the - // 'data' event. - // - // In addition to the above conditions to keep reading data, the following - // conditions prevent the data from being read: - // - The stream has ended (state.ended). - // - There is already a pending 'read' operation (state.reading). This is a - // case where the stream has called the implementation defined _read() - // method, but they are processing the call asynchronously and have _not_ - // called push() with new data. In this case we skip performing more - // read()s. The execution ends in this method again after the _read() ends - // up calling push() with more data. - while ( - !state.reading && - !state.ended && - (state.length < state.highWaterMark || (state.flowing && state.length === 0)) - ) { - const len = state.length; - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // Didn't get any data, stop spinning. - break - } - state.readingMore = false; - } - - // Abstract method. to be overridden in specific implementation classes. - // call cb(er, data) where data is <= n in length. - // for virtual (non-string, non-buffer) streams, "length" is somewhat - // arbitrary, and perhaps not very meaningful. - Readable.prototype._read = function (n) { - throw new ERR_METHOD_NOT_IMPLEMENTED('_read()') - }; - Readable.prototype.pipe = function (dest, pipeOpts) { - const src = this; - const state = this._readableState; - if (state.pipes.length === 1) { - if (!state.multiAwaitDrain) { - state.multiAwaitDrain = true; - state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : []); - } - } - state.pipes.push(dest); - debug('pipe count=%d opts=%j', state.pipes.length, pipeOpts); - const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - const endFn = doEnd ? onend : unpipe; - if (state.endEmitted) process.nextTick(endFn); - else src.once('end', endFn); - dest.on('unpipe', onunpipe); - function onunpipe(readable, unpipeInfo) { - debug('onunpipe'); - if (readable === src) { - if (unpipeInfo && unpipeInfo.hasUnpiped === false) { - unpipeInfo.hasUnpiped = true; - cleanup(); - } - } - } - function onend() { - debug('onend'); - dest.end(); - } - let ondrain; - let cleanedUp = false; - function cleanup() { - debug('cleanup'); - // Cleanup event handlers once the pipe is broken. - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - if (ondrain) { - dest.removeListener('drain', ondrain); - } - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', unpipe); - src.removeListener('data', ondata); - cleanedUp = true; - - // If the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } - function pause() { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if (!cleanedUp) { - if (state.pipes.length === 1 && state.pipes[0] === dest) { - debug('false write response, pause', 0); - state.awaitDrainWriters = dest; - state.multiAwaitDrain = false; - } else if (state.pipes.length > 1 && state.pipes.includes(dest)) { - debug('false write response, pause', state.awaitDrainWriters.size); - state.awaitDrainWriters.add(dest); - } - src.pause(); - } - if (!ondrain) { - // When the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - ondrain = pipeOnDrain(src, dest); - dest.on('drain', ondrain); - } - } - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - const ret = dest.write(chunk); - debug('dest.write', ret); - if (ret === false) { - pause(); - } - } - - // If the dest has an error, then stop piping into it. - // However, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (dest.listenerCount('error') === 0) { - const s = dest._writableState || dest._readableState; - if (s && !s.errorEmitted) { - // User incorrectly emitted 'error' directly on the stream. - errorOrDestroy(dest, er); - } else { - dest.emit('error', er); - } - } - } - - // Make sure our error handler is attached before userland ones. - prependListener(dest, 'error', onerror); - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } - - // Tell the dest that it's being piped to. - dest.emit('pipe', src); - - // Start the flow if it hasn't been started already. - - if (dest.writableNeedDrain === true) { - pause(); - } else if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - return dest - }; - function pipeOnDrain(src, dest) { - return function pipeOnDrainFunctionResult() { - const state = src._readableState; - - // `ondrain` will call directly, - // `this` maybe not a reference to dest, - // so we use the real dest here. - if (state.awaitDrainWriters === dest) { - debug('pipeOnDrain', 1); - state.awaitDrainWriters = null; - } else if (state.multiAwaitDrain) { - debug('pipeOnDrain', state.awaitDrainWriters.size); - state.awaitDrainWriters.delete(dest); - } - if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount('data')) { - src.resume(); - } - } - } - Readable.prototype.unpipe = function (dest) { - const state = this._readableState; - const unpipeInfo = { - hasUnpiped: false - }; - - // If we're not piping anywhere, then do nothing. - if (state.pipes.length === 0) return this - if (!dest) { - // remove all. - const dests = state.pipes; - state.pipes = []; - this.pause(); - for (let i = 0; i < dests.length; i++) - dests[i].emit('unpipe', this, { - hasUnpiped: false - }); - return this - } - - // Try to find the right one. - const index = ArrayPrototypeIndexOf(state.pipes, dest); - if (index === -1) return this - state.pipes.splice(index, 1); - if (state.pipes.length === 0) this.pause(); - dest.emit('unpipe', this, unpipeInfo); - return this - }; - - // Set up data events if they are asked for - // Ensure readable listeners eventually get something. - Readable.prototype.on = function (ev, fn) { - const res = Stream.prototype.on.call(this, ev, fn); - const state = this._readableState; - if (ev === 'data') { - // Update readableListening so that resume() may be a no-op - // a few lines down. This is needed to support once('readable'). - state.readableListening = this.listenerCount('readable') > 0; - - // Try start flowing on next tick if stream isn't explicitly paused. - if (state.flowing !== false) this.resume(); - } else if (ev === 'readable') { - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.flowing = false; - state.emittedReadable = false; - debug('on readable', state.length, state.reading); - if (state.length) { - emitReadable(this); - } else if (!state.reading) { - process.nextTick(nReadingNextTick, this); - } - } - } - return res - }; - Readable.prototype.addListener = Readable.prototype.on; - Readable.prototype.removeListener = function (ev, fn) { - const res = Stream.prototype.removeListener.call(this, ev, fn); - if (ev === 'readable') { - // We need to check if there is someone still listening to - // readable and reset the state. However this needs to happen - // after readable has been emitted but before I/O (nextTick) to - // support once('readable', fn) cycles. This means that calling - // resume within the same tick will have no - // effect. - process.nextTick(updateReadableListening, this); - } - return res - }; - Readable.prototype.off = Readable.prototype.removeListener; - Readable.prototype.removeAllListeners = function (ev) { - const res = Stream.prototype.removeAllListeners.apply(this, arguments); - if (ev === 'readable' || ev === undefined) { - // We need to check if there is someone still listening to - // readable and reset the state. However this needs to happen - // after readable has been emitted but before I/O (nextTick) to - // support once('readable', fn) cycles. This means that calling - // resume within the same tick will have no - // effect. - process.nextTick(updateReadableListening, this); - } - return res - }; - function updateReadableListening(self) { - const state = self._readableState; - state.readableListening = self.listenerCount('readable') > 0; - if (state.resumeScheduled && state[kPaused] === false) { - // Flowing needs to be set to true now, otherwise - // the upcoming resume will not flow. - state.flowing = true; - - // Crude way to check if we should resume. - } else if (self.listenerCount('data') > 0) { - self.resume(); - } else if (!state.readableListening) { - state.flowing = null; - } - } - function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); - } - - // pause() and resume() are remnants of the legacy readable stream API - // If the user uses them, then switch into old mode. - Readable.prototype.resume = function () { - const state = this._readableState; - if (!state.flowing) { - debug('resume'); - // We flow only if there is no one listening - // for readable, but we still have to call - // resume(). - state.flowing = !state.readableListening; - resume(this, state); - } - state[kPaused] = false; - return this - }; - function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - process.nextTick(resume_, stream, state); - } - } - function resume_(stream, state) { - debug('resume', state.reading); - if (!state.reading) { - stream.read(0); - } - state.resumeScheduled = false; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); - } - Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - if (this._readableState.flowing !== false) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - this._readableState[kPaused] = true; - return this - }; - function flow(stream) { - const state = stream._readableState; - debug('flow', state.flowing); - while (state.flowing && stream.read() !== null); - } - - // Wrap an old-style stream as the async data source. - // This is *not* part of the readable stream interface. - // It is an ugly unfortunate mess of history. - Readable.prototype.wrap = function (stream) { - let paused = false; - - // TODO (ronag): Should this.destroy(err) emit - // 'error' on the wrapped stream? Would require - // a static factory method, e.g. Readable.wrap(stream). - - stream.on('data', (chunk) => { - if (!this.push(chunk) && stream.pause) { - paused = true; - stream.pause(); - } - }); - stream.on('end', () => { - this.push(null); - }); - stream.on('error', (err) => { - errorOrDestroy(this, err); - }); - stream.on('close', () => { - this.destroy(); - }); - stream.on('destroy', () => { - this.destroy(); - }); - this._read = () => { - if (paused && stream.resume) { - paused = false; - stream.resume(); - } - }; - - // Proxy all the other methods. Important when wrapping filters and duplexes. - const streamKeys = ObjectKeys(stream); - for (let j = 1; j < streamKeys.length; j++) { - const i = streamKeys[j]; - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = stream[i].bind(stream); - } - } - return this - }; - Readable.prototype[SymbolAsyncIterator] = function () { - return streamToAsyncIterator(this) - }; - Readable.prototype.iterator = function (options) { - if (options !== undefined) { - validateObject(options, 'options'); - } - return streamToAsyncIterator(this, options) - }; - function streamToAsyncIterator(stream, options) { - if (typeof stream.read !== 'function') { - stream = Readable.wrap(stream, { - objectMode: true - }); - } - const iter = createAsyncIterator(stream, options); - iter.stream = stream; - return iter - } - async function* createAsyncIterator(stream, options) { - let callback = nop; - function next(resolve) { - if (this === stream) { - callback(); - callback = nop; - } else { - callback = resolve; - } - } - stream.on('readable', next); - let error; - const cleanup = eos( - stream, - { - writable: false - }, - (err) => { - error = err ? aggregateTwoErrors(error, err) : null; - callback(); - callback = nop; - } - ); - try { - while (true) { - const chunk = stream.destroyed ? null : stream.read(); - if (chunk !== null) { - yield chunk; - } else if (error) { - throw error - } else if (error === null) { - return - } else { - await new Promise(next); - } - } - } catch (err) { - error = aggregateTwoErrors(error, err); - throw error - } finally { - if ( - (error || (options === null || options === undefined ? undefined : options.destroyOnReturn) !== false) && - (error === undefined || stream._readableState.autoDestroy) - ) { - destroyImpl.destroyer(stream, null); - } else { - stream.off('readable', next); - cleanup(); - } - } - } - - // Making it explicit these properties are not enumerable - // because otherwise some prototype manipulation in - // userland will fail. - ObjectDefineProperties(Readable.prototype, { - readable: { - __proto__: null, - get() { - const r = this._readableState; - // r.readable === false means that this is part of a Duplex stream - // where the readable side was disabled upon construction. - // Compat. The user might manually disable readable side through - // deprecated setter. - return !!r && r.readable !== false && !r.destroyed && !r.errorEmitted && !r.endEmitted - }, - set(val) { - // Backwards compat. - if (this._readableState) { - this._readableState.readable = !!val; - } - } - }, - readableDidRead: { - __proto__: null, - enumerable: false, - get: function () { - return this._readableState.dataEmitted - } - }, - readableAborted: { - __proto__: null, - enumerable: false, - get: function () { - return !!( - this._readableState.readable !== false && - (this._readableState.destroyed || this._readableState.errored) && - !this._readableState.endEmitted - ) - } - }, - readableHighWaterMark: { - __proto__: null, - enumerable: false, - get: function () { - return this._readableState.highWaterMark - } - }, - readableBuffer: { - __proto__: null, - enumerable: false, - get: function () { - return this._readableState && this._readableState.buffer - } - }, - readableFlowing: { - __proto__: null, - enumerable: false, - get: function () { - return this._readableState.flowing - }, - set: function (state) { - if (this._readableState) { - this._readableState.flowing = state; - } - } - }, - readableLength: { - __proto__: null, - enumerable: false, - get() { - return this._readableState.length - } - }, - readableObjectMode: { - __proto__: null, - enumerable: false, - get() { - return this._readableState ? this._readableState.objectMode : false - } - }, - readableEncoding: { - __proto__: null, - enumerable: false, - get() { - return this._readableState ? this._readableState.encoding : null - } - }, - errored: { - __proto__: null, - enumerable: false, - get() { - return this._readableState ? this._readableState.errored : null - } - }, - closed: { - __proto__: null, - get() { - return this._readableState ? this._readableState.closed : false - } - }, - destroyed: { - __proto__: null, - enumerable: false, - get() { - return this._readableState ? this._readableState.destroyed : false - }, - set(value) { - // We ignore the value if the stream - // has not been initialized yet. - if (!this._readableState) { - return - } - - // Backward compatibility, the user is explicitly - // managing destroyed. - this._readableState.destroyed = value; - } - }, - readableEnded: { - __proto__: null, - enumerable: false, - get() { - return this._readableState ? this._readableState.endEmitted : false - } - } - }); - ObjectDefineProperties(ReadableState.prototype, { - // Legacy getter for `pipesCount`. - pipesCount: { - __proto__: null, - get() { - return this.pipes.length - } - }, - // Legacy property for `paused`. - paused: { - __proto__: null, - get() { - return this[kPaused] !== false - }, - set(value) { - this[kPaused] = !!value; - } - } - }); - - // Exposed for testing purposes only. - Readable._fromList = fromList; - - // Pluck off n bytes from an array of buffers. - // Length is the combined lengths of all the buffers in the list. - // This function is designed to be inlinable, so please take care when making - // changes to the function body. - function fromList(n, state) { - // nothing buffered. - if (state.length === 0) return null - let ret; - if (state.objectMode) ret = state.buffer.shift(); - else if (!n || n >= state.length) { - // Read it all, truncate the list. - if (state.decoder) ret = state.buffer.join(''); - else if (state.buffer.length === 1) ret = state.buffer.first(); - else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - // read part of list. - ret = state.buffer.consume(n, state.decoder); - } - return ret - } - function endReadable(stream) { - const state = stream._readableState; - debug('endReadable', state.endEmitted); - if (!state.endEmitted) { - state.ended = true; - process.nextTick(endReadableNT, state, stream); - } - } - function endReadableNT(state, stream) { - debug('endReadableNT', state.endEmitted, state.length); - - // Check that we didn't get one last unshift. - if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.emit('end'); - if (stream.writable && stream.allowHalfOpen === false) { - process.nextTick(endWritableNT, stream); - } else if (state.autoDestroy) { - // In case of duplex streams we need a way to detect - // if the writable side is ready for autoDestroy as well. - const wState = stream._writableState; - const autoDestroy = - !wState || - (wState.autoDestroy && - // We don't expect the writable to ever 'finish' - // if writable is explicitly set to false. - (wState.finished || wState.writable === false)); - if (autoDestroy) { - stream.destroy(); - } - } - } - } - function endWritableNT(stream) { - const writable = stream.writable && !stream.writableEnded && !stream.destroyed; - if (writable) { - stream.end(); - } - } - Readable.from = function (iterable, opts) { - return from(Readable, iterable, opts) - }; - let webStreamsAdapters; - - // Lazy to avoid circular references - function lazyWebStreams() { - if (webStreamsAdapters === undefined) webStreamsAdapters = {}; - return webStreamsAdapters - } - Readable.fromWeb = function (readableStream, options) { - return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options) - }; - Readable.toWeb = function (streamReadable, options) { - return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable, options) - }; - Readable.wrap = function (src, options) { - var _ref, _src$readableObjectMo; - return new Readable({ - objectMode: - (_ref = - (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== undefined - ? _src$readableObjectMo - : src.objectMode) !== null && _ref !== undefined - ? _ref - : true, - ...options, - destroy(err, callback) { - destroyImpl.destroyer(src, err); - callback(err); - } - }).wrap(src) - }; - return readable; -} - -var writable; -var hasRequiredWritable; - -function requireWritable () { - if (hasRequiredWritable) return writable; - hasRequiredWritable = 1; - - /* replacement start */ - - const process = requireBrowser$2(); - - /* replacement end */ - - const { - ArrayPrototypeSlice, - Error, - FunctionPrototypeSymbolHasInstance, - ObjectDefineProperty, - ObjectDefineProperties, - ObjectSetPrototypeOf, - StringPrototypeToLowerCase, - Symbol, - SymbolHasInstance - } = requirePrimordials(); - writable = Writable; - Writable.WritableState = WritableState; - const { EventEmitter: EE } = requireEvents$1(); - const Stream = requireLegacy().Stream; - const { Buffer } = require$$0$2; - const destroyImpl = requireDestroy(); - const { addAbortSignal } = requireAddAbortSignal(); - const { getHighWaterMark, getDefaultHighWaterMark } = requireState(); - const { - ERR_INVALID_ARG_TYPE, - ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK, - ERR_STREAM_CANNOT_PIPE, - ERR_STREAM_DESTROYED, - ERR_STREAM_ALREADY_FINISHED, - ERR_STREAM_NULL_VALUES, - ERR_STREAM_WRITE_AFTER_END, - ERR_UNKNOWN_ENCODING - } = requireErrors().codes; - const { errorOrDestroy } = destroyImpl; - ObjectSetPrototypeOf(Writable.prototype, Stream.prototype); - ObjectSetPrototypeOf(Writable, Stream); - function nop() {} - const kOnFinished = Symbol('kOnFinished'); - function WritableState(options, stream, isDuplex) { - // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream, - // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof requireDuplex(); - - // Object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!(options && options.objectMode); - if (isDuplex) this.objectMode = this.objectMode || !!(options && options.writableObjectMode); - - // The point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write(). - this.highWaterMark = options - ? getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex) - : getDefaultHighWaterMark(false); - - // if _final has been called. - this.finalCalled = false; - - // drain event flag. - this.needDrain = false; - // At the start of calling end() - this.ending = false; - // When end() has been called, and returned. - this.ended = false; - // When 'finish' is emitted. - this.finished = false; - - // Has it been destroyed - this.destroyed = false; - - // Should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - const noDecode = !!(options && options.decodeStrings === false); - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'; - - // Not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // A flag to see when we're in the middle of a write. - this.writing = false; - - // When true all writes will be buffered until .uncork() call. - this.corked = 0; - - // A flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // A flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // The callback that's passed to _write(chunk, cb). - this.onwrite = onwrite.bind(undefined, stream); - - // The callback that the user supplies to write(chunk, encoding, cb). - this.writecb = null; - - // The amount that is being written when _write is called. - this.writelen = 0; - - // Storage for data passed to the afterWrite() callback in case of - // synchronous _write() completion. - this.afterWriteTickInfo = null; - resetBuffer(this); - - // Number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted. - this.pendingcb = 0; - - // Stream is still being constructed and cannot be - // destroyed until construction finished or failed. - // Async construction is opt in, therefore we start as - // constructed. - this.constructed = true; - - // Emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams. - this.prefinished = false; - - // True if the error was already emitted and should not be thrown again. - this.errorEmitted = false; - - // Should close be emitted on destroy. Defaults to true. - this.emitClose = !options || options.emitClose !== false; - - // Should .destroy() be called after 'finish' (and potentially 'end'). - this.autoDestroy = !options || options.autoDestroy !== false; - - // Indicates whether the stream has errored. When true all write() calls - // should return false. This is needed since when autoDestroy - // is disabled we need a way to tell whether the stream has failed. - this.errored = null; - - // Indicates whether the stream has finished destroying. - this.closed = false; - - // True if close has been emitted or would have been emitted - // depending on emitClose. - this.closeEmitted = false; - this[kOnFinished] = []; - } - function resetBuffer(state) { - state.buffered = []; - state.bufferedIndex = 0; - state.allBuffers = true; - state.allNoop = true; - } - WritableState.prototype.getBuffer = function getBuffer() { - return ArrayPrototypeSlice(this.buffered, this.bufferedIndex) - }; - ObjectDefineProperty(WritableState.prototype, 'bufferedRequestCount', { - __proto__: null, - get() { - return this.buffered.length - this.bufferedIndex - } - }); - function Writable(options) { - // Writable ctor is applied to Duplexes, too. - // `realHasInstance` is necessary because using plain `instanceof` - // would return false, as no `_writableState` property is attached. - - // Trying to use the custom `instanceof` for Writable here will also break the - // Node.js LazyTransform implementation, which has a non-trivial getter for - // `_writableState` that would lead to infinite recursion. - - // Checking for a Stream.Duplex instance is faster here instead of inside - // the WritableState constructor, at least with V8 6.5. - const isDuplex = this instanceof requireDuplex(); - if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this)) return new Writable(options) - this._writableState = new WritableState(options, this, isDuplex); - if (options) { - if (typeof options.write === 'function') this._write = options.write; - if (typeof options.writev === 'function') this._writev = options.writev; - if (typeof options.destroy === 'function') this._destroy = options.destroy; - if (typeof options.final === 'function') this._final = options.final; - if (typeof options.construct === 'function') this._construct = options.construct; - if (options.signal) addAbortSignal(options.signal, this); - } - Stream.call(this, options); - destroyImpl.construct(this, () => { - const state = this._writableState; - if (!state.writing) { - clearBuffer(this, state); - } - finishMaybe(this, state); - }); - } - ObjectDefineProperty(Writable, SymbolHasInstance, { - __proto__: null, - value: function (object) { - if (FunctionPrototypeSymbolHasInstance(this, object)) return true - if (this !== Writable) return false - return object && object._writableState instanceof WritableState - } - }); - - // Otherwise people can pipe Writable streams, which is just wrong. - Writable.prototype.pipe = function () { - errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); - }; - function _write(stream, chunk, encoding, cb) { - const state = stream._writableState; - if (typeof encoding === 'function') { - cb = encoding; - encoding = state.defaultEncoding; - } else { - if (!encoding) encoding = state.defaultEncoding; - else if (encoding !== 'buffer' && !Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding) - if (typeof cb !== 'function') cb = nop; - } - if (chunk === null) { - throw new ERR_STREAM_NULL_VALUES() - } else if (!state.objectMode) { - if (typeof chunk === 'string') { - if (state.decodeStrings !== false) { - chunk = Buffer.from(chunk, encoding); - encoding = 'buffer'; - } - } else if (chunk instanceof Buffer) { - encoding = 'buffer'; - } else if (Stream._isUint8Array(chunk)) { - chunk = Stream._uint8ArrayToBuffer(chunk); - encoding = 'buffer'; - } else { - throw new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk) - } - } - let err; - if (state.ending) { - err = new ERR_STREAM_WRITE_AFTER_END(); - } else if (state.destroyed) { - err = new ERR_STREAM_DESTROYED('write'); - } - if (err) { - process.nextTick(cb, err); - errorOrDestroy(stream, err, true); - return err - } - state.pendingcb++; - return writeOrBuffer(stream, state, chunk, encoding, cb) - } - Writable.prototype.write = function (chunk, encoding, cb) { - return _write(this, chunk, encoding, cb) === true - }; - Writable.prototype.cork = function () { - this._writableState.corked++; - }; - Writable.prototype.uncork = function () { - const state = this._writableState; - if (state.corked) { - state.corked--; - if (!state.writing) clearBuffer(this, state); - } - }; - Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = StringPrototypeToLowerCase(encoding); - if (!Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding) - this._writableState.defaultEncoding = encoding; - return this - }; - - // If we're already writing something, then just put this - // in the queue, and wait our turn. Otherwise, call _write - // If we return false, then we need a drain event, so set that flag. - function writeOrBuffer(stream, state, chunk, encoding, callback) { - const len = state.objectMode ? 1 : chunk.length; - state.length += len; - - // stream._write resets state.length - const ret = state.length < state.highWaterMark; - // We must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; - if (state.writing || state.corked || state.errored || !state.constructed) { - state.buffered.push({ - chunk, - encoding, - callback - }); - if (state.allBuffers && encoding !== 'buffer') { - state.allBuffers = false; - } - if (state.allNoop && callback !== nop) { - state.allNoop = false; - } - } else { - state.writelen = len; - state.writecb = callback; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; - } - - // Return false if errored or destroyed in order to break - // any synchronous while(stream.write(data)) loops. - return ret && !state.errored && !state.destroyed - } - function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write')); - else if (writev) stream._writev(chunk, state.onwrite); - else stream._write(chunk, encoding, state.onwrite); - state.sync = false; - } - function onwriteError(stream, state, er, cb) { - --state.pendingcb; - cb(er); - // Ensure callbacks are invoked even when autoDestroy is - // not enabled. Passing `er` here doesn't make sense since - // it's related to one specific write, not to the buffered - // writes. - errorBuffer(state); - // This can emit error, but error must always follow cb. - errorOrDestroy(stream, er); - } - function onwrite(stream, er) { - const state = stream._writableState; - const sync = state.sync; - const cb = state.writecb; - if (typeof cb !== 'function') { - errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK()); - return - } - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; - if (er) { - // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364 - er.stack; // eslint-disable-line no-unused-expressions - - if (!state.errored) { - state.errored = er; - } - - // In case of duplex streams we need to notify the readable side of the - // error. - if (stream._readableState && !stream._readableState.errored) { - stream._readableState.errored = er; - } - if (sync) { - process.nextTick(onwriteError, stream, state, er, cb); - } else { - onwriteError(stream, state, er, cb); - } - } else { - if (state.buffered.length > state.bufferedIndex) { - clearBuffer(stream, state); - } - if (sync) { - // It is a common case that the callback passed to .write() is always - // the same. In that case, we do not schedule a new nextTick(), but - // rather just increase a counter, to improve performance and avoid - // memory allocations. - if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) { - state.afterWriteTickInfo.count++; - } else { - state.afterWriteTickInfo = { - count: 1, - cb, - stream, - state - }; - process.nextTick(afterWriteTick, state.afterWriteTickInfo); - } - } else { - afterWrite(stream, state, 1, cb); - } - } - } - function afterWriteTick({ stream, state, count, cb }) { - state.afterWriteTickInfo = null; - return afterWrite(stream, state, count, cb) - } - function afterWrite(stream, state, count, cb) { - const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain; - if (needDrain) { - state.needDrain = false; - stream.emit('drain'); - } - while (count-- > 0) { - state.pendingcb--; - cb(); - } - if (state.destroyed) { - errorBuffer(state); - } - finishMaybe(stream, state); - } - - // If there's something in the buffer waiting, then invoke callbacks. - function errorBuffer(state) { - if (state.writing) { - return - } - for (let n = state.bufferedIndex; n < state.buffered.length; ++n) { - var _state$errored; - const { chunk, callback } = state.buffered[n]; - const len = state.objectMode ? 1 : chunk.length; - state.length -= len; - callback( - (_state$errored = state.errored) !== null && _state$errored !== undefined - ? _state$errored - : new ERR_STREAM_DESTROYED('write') - ); - } - const onfinishCallbacks = state[kOnFinished].splice(0); - for (let i = 0; i < onfinishCallbacks.length; i++) { - var _state$errored2; - onfinishCallbacks[i]( - (_state$errored2 = state.errored) !== null && _state$errored2 !== undefined - ? _state$errored2 - : new ERR_STREAM_DESTROYED('end') - ); - } - resetBuffer(state); - } - - // If there's something in the buffer waiting, then process it. - function clearBuffer(stream, state) { - if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) { - return - } - const { buffered, bufferedIndex, objectMode } = state; - const bufferedLength = buffered.length - bufferedIndex; - if (!bufferedLength) { - return - } - let i = bufferedIndex; - state.bufferProcessing = true; - if (bufferedLength > 1 && stream._writev) { - state.pendingcb -= bufferedLength - 1; - const callback = state.allNoop - ? nop - : (err) => { - for (let n = i; n < buffered.length; ++n) { - buffered[n].callback(err); - } - }; - // Make a copy of `buffered` if it's going to be used by `callback` above, - // since `doWrite` will mutate the array. - const chunks = state.allNoop && i === 0 ? buffered : ArrayPrototypeSlice(buffered, i); - chunks.allBuffers = state.allBuffers; - doWrite(stream, state, true, state.length, chunks, '', callback); - resetBuffer(state); - } else { - do { - const { chunk, encoding, callback } = buffered[i]; - buffered[i++] = null; - const len = objectMode ? 1 : chunk.length; - doWrite(stream, state, false, len, chunk, encoding, callback); - } while (i < buffered.length && !state.writing) - if (i === buffered.length) { - resetBuffer(state); - } else if (i > 256) { - buffered.splice(0, i); - state.bufferedIndex = 0; - } else { - state.bufferedIndex = i; - } - } - state.bufferProcessing = false; - } - Writable.prototype._write = function (chunk, encoding, cb) { - if (this._writev) { - this._writev( - [ - { - chunk, - encoding - } - ], - cb - ); - } else { - throw new ERR_METHOD_NOT_IMPLEMENTED('_write()') - } - }; - Writable.prototype._writev = null; - Writable.prototype.end = function (chunk, encoding, cb) { - const state = this._writableState; - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - let err; - if (chunk !== null && chunk !== undefined) { - const ret = _write(this, chunk, encoding); - if (ret instanceof Error) { - err = ret; - } - } - - // .end() fully uncorks. - if (state.corked) { - state.corked = 1; - this.uncork(); - } - if (err) ; else if (!state.errored && !state.ending) { - // This is forgiving in terms of unnecessary calls to end() and can hide - // logic errors. However, usually such errors are harmless and causing a - // hard error can be disproportionately destructive. It is not always - // trivial for the user to determine whether end() needs to be called - // or not. - - state.ending = true; - finishMaybe(this, state, true); - state.ended = true; - } else if (state.finished) { - err = new ERR_STREAM_ALREADY_FINISHED('end'); - } else if (state.destroyed) { - err = new ERR_STREAM_DESTROYED('end'); - } - if (typeof cb === 'function') { - if (err || state.finished) { - process.nextTick(cb, err); - } else { - state[kOnFinished].push(cb); - } - } - return this - }; - function needFinish(state) { - return ( - state.ending && - !state.destroyed && - state.constructed && - state.length === 0 && - !state.errored && - state.buffered.length === 0 && - !state.finished && - !state.writing && - !state.errorEmitted && - !state.closeEmitted - ) - } - function callFinal(stream, state) { - let called = false; - function onFinish(err) { - if (called) { - errorOrDestroy(stream, err !== null && err !== undefined ? err : ERR_MULTIPLE_CALLBACK()); - return - } - called = true; - state.pendingcb--; - if (err) { - const onfinishCallbacks = state[kOnFinished].splice(0); - for (let i = 0; i < onfinishCallbacks.length; i++) { - onfinishCallbacks[i](err); - } - errorOrDestroy(stream, err, state.sync); - } else if (needFinish(state)) { - state.prefinished = true; - stream.emit('prefinish'); - // Backwards compat. Don't check state.sync here. - // Some streams assume 'finish' will be emitted - // asynchronously relative to _final callback. - state.pendingcb++; - process.nextTick(finish, stream, state); - } - } - state.sync = true; - state.pendingcb++; - try { - stream._final(onFinish); - } catch (err) { - onFinish(err); - } - state.sync = false; - } - function prefinish(stream, state) { - if (!state.prefinished && !state.finalCalled) { - if (typeof stream._final === 'function' && !state.destroyed) { - state.finalCalled = true; - callFinal(stream, state); - } else { - state.prefinished = true; - stream.emit('prefinish'); - } - } - } - function finishMaybe(stream, state, sync) { - if (needFinish(state)) { - prefinish(stream, state); - if (state.pendingcb === 0) { - if (sync) { - state.pendingcb++; - process.nextTick( - (stream, state) => { - if (needFinish(state)) { - finish(stream, state); - } else { - state.pendingcb--; - } - }, - stream, - state - ); - } else if (needFinish(state)) { - state.pendingcb++; - finish(stream, state); - } - } - } - } - function finish(stream, state) { - state.pendingcb--; - state.finished = true; - const onfinishCallbacks = state[kOnFinished].splice(0); - for (let i = 0; i < onfinishCallbacks.length; i++) { - onfinishCallbacks[i](); - } - stream.emit('finish'); - if (state.autoDestroy) { - // In case of duplex streams we need a way to detect - // if the readable side is ready for autoDestroy as well. - const rState = stream._readableState; - const autoDestroy = - !rState || - (rState.autoDestroy && - // We don't expect the readable to ever 'end' - // if readable is explicitly set to false. - (rState.endEmitted || rState.readable === false)); - if (autoDestroy) { - stream.destroy(); - } - } - } - ObjectDefineProperties(Writable.prototype, { - closed: { - __proto__: null, - get() { - return this._writableState ? this._writableState.closed : false - } - }, - destroyed: { - __proto__: null, - get() { - return this._writableState ? this._writableState.destroyed : false - }, - set(value) { - // Backward compatibility, the user is explicitly managing destroyed. - if (this._writableState) { - this._writableState.destroyed = value; - } - } - }, - writable: { - __proto__: null, - get() { - const w = this._writableState; - // w.writable === false means that this is part of a Duplex stream - // where the writable side was disabled upon construction. - // Compat. The user might manually disable writable side through - // deprecated setter. - return !!w && w.writable !== false && !w.destroyed && !w.errored && !w.ending && !w.ended - }, - set(val) { - // Backwards compatible. - if (this._writableState) { - this._writableState.writable = !!val; - } - } - }, - writableFinished: { - __proto__: null, - get() { - return this._writableState ? this._writableState.finished : false - } - }, - writableObjectMode: { - __proto__: null, - get() { - return this._writableState ? this._writableState.objectMode : false - } - }, - writableBuffer: { - __proto__: null, - get() { - return this._writableState && this._writableState.getBuffer() - } - }, - writableEnded: { - __proto__: null, - get() { - return this._writableState ? this._writableState.ending : false - } - }, - writableNeedDrain: { - __proto__: null, - get() { - const wState = this._writableState; - if (!wState) return false - return !wState.destroyed && !wState.ending && wState.needDrain - } - }, - writableHighWaterMark: { - __proto__: null, - get() { - return this._writableState && this._writableState.highWaterMark - } - }, - writableCorked: { - __proto__: null, - get() { - return this._writableState ? this._writableState.corked : 0 - } - }, - writableLength: { - __proto__: null, - get() { - return this._writableState && this._writableState.length - } - }, - errored: { - __proto__: null, - enumerable: false, - get() { - return this._writableState ? this._writableState.errored : null - } - }, - writableAborted: { - __proto__: null, - enumerable: false, - get: function () { - return !!( - this._writableState.writable !== false && - (this._writableState.destroyed || this._writableState.errored) && - !this._writableState.finished - ) - } - } - }); - const destroy = destroyImpl.destroy; - Writable.prototype.destroy = function (err, cb) { - const state = this._writableState; - - // Invoke pending callbacks. - if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) { - process.nextTick(errorBuffer, state); - } - destroy.call(this, err, cb); - return this - }; - Writable.prototype._undestroy = destroyImpl.undestroy; - Writable.prototype._destroy = function (err, cb) { - cb(err); - }; - Writable.prototype[EE.captureRejectionSymbol] = function (err) { - this.destroy(err); - }; - let webStreamsAdapters; - - // Lazy to avoid circular references - function lazyWebStreams() { - if (webStreamsAdapters === undefined) webStreamsAdapters = {}; - return webStreamsAdapters - } - Writable.fromWeb = function (writableStream, options) { - return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options) - }; - Writable.toWeb = function (streamWritable) { - return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable) - }; - return writable; -} - -/* replacement start */ - -var duplexify; -var hasRequiredDuplexify; - -function requireDuplexify () { - if (hasRequiredDuplexify) return duplexify; - hasRequiredDuplexify = 1; - const process = requireBrowser$2() - - /* replacement end */ - - ; const bufferModule = require$$0$2; - const { - isReadable, - isWritable, - isIterable, - isNodeStream, - isReadableNodeStream, - isWritableNodeStream, - isDuplexNodeStream, - isReadableStream, - isWritableStream - } = requireUtils(); - const eos = requireEndOfStream(); - const { - AbortError, - codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE } - } = requireErrors(); - const { destroyer } = requireDestroy(); - const Duplex = requireDuplex(); - const Readable = requireReadable(); - const Writable = requireWritable(); - const { createDeferredPromise } = requireUtil$1(); - const from = requireFrom(); - const Blob = globalThis.Blob || bufferModule.Blob; - const isBlob = - typeof Blob !== 'undefined' - ? function isBlob(b) { - return b instanceof Blob - } - : function isBlob(b) { - return false - }; - const AbortController = globalThis.AbortController || requireBrowser$1().AbortController; - const { FunctionPrototypeCall } = requirePrimordials(); - - // This is needed for pre node 17. - class Duplexify extends Duplex { - constructor(options) { - super(options); - - // https://github.com/nodejs/node/pull/34385 - - if ((options === null || options === undefined ? undefined : options.readable) === false) { - this._readableState.readable = false; - this._readableState.ended = true; - this._readableState.endEmitted = true; - } - if ((options === null || options === undefined ? undefined : options.writable) === false) { - this._writableState.writable = false; - this._writableState.ending = true; - this._writableState.ended = true; - this._writableState.finished = true; - } - } - } - duplexify = function duplexify(body, name) { - if (isDuplexNodeStream(body)) { - return body - } - if (isReadableNodeStream(body)) { - return _duplexify({ - readable: body - }) - } - if (isWritableNodeStream(body)) { - return _duplexify({ - writable: body - }) - } - if (isNodeStream(body)) { - return _duplexify({ - writable: false, - readable: false - }) - } - if (isReadableStream(body)) { - return _duplexify({ - readable: Readable.fromWeb(body) - }) - } - if (isWritableStream(body)) { - return _duplexify({ - writable: Writable.fromWeb(body) - }) - } - if (typeof body === 'function') { - const { value, write, final, destroy } = fromAsyncGen(body); - if (isIterable(value)) { - return from(Duplexify, value, { - // TODO (ronag): highWaterMark? - objectMode: true, - write, - final, - destroy - }) - } - const then = value === null || value === undefined ? undefined : value.then; - if (typeof then === 'function') { - let d; - const promise = FunctionPrototypeCall( - then, - value, - (val) => { - if (val != null) { - throw new ERR_INVALID_RETURN_VALUE('nully', 'body', val) - } - }, - (err) => { - destroyer(d, err); - } - ); - return (d = new Duplexify({ - // TODO (ronag): highWaterMark? - objectMode: true, - readable: false, - write, - final(cb) { - final(async () => { - try { - await promise; - process.nextTick(cb, null); - } catch (err) { - process.nextTick(cb, err); - } - }); - }, - destroy - })) - } - throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or AsyncFunction', name, value) - } - if (isBlob(body)) { - return duplexify(body.arrayBuffer()) - } - if (isIterable(body)) { - return from(Duplexify, body, { - // TODO (ronag): highWaterMark? - objectMode: true, - writable: false - }) - } - if ( - isReadableStream(body === null || body === undefined ? undefined : body.readable) && - isWritableStream(body === null || body === undefined ? undefined : body.writable) - ) { - return Duplexify.fromWeb(body) - } - if ( - typeof (body === null || body === undefined ? undefined : body.writable) === 'object' || - typeof (body === null || body === undefined ? undefined : body.readable) === 'object' - ) { - const readable = - body !== null && body !== undefined && body.readable - ? isReadableNodeStream(body === null || body === undefined ? undefined : body.readable) - ? body === null || body === undefined - ? undefined - : body.readable - : duplexify(body.readable) - : undefined; - const writable = - body !== null && body !== undefined && body.writable - ? isWritableNodeStream(body === null || body === undefined ? undefined : body.writable) - ? body === null || body === undefined - ? undefined - : body.writable - : duplexify(body.writable) - : undefined; - return _duplexify({ - readable, - writable - }) - } - const then = body === null || body === undefined ? undefined : body.then; - if (typeof then === 'function') { - let d; - FunctionPrototypeCall( - then, - body, - (val) => { - if (val != null) { - d.push(val); - } - d.push(null); - }, - (err) => { - destroyer(d, err); - } - ); - return (d = new Duplexify({ - objectMode: true, - writable: false, - read() {} - })) - } - throw new ERR_INVALID_ARG_TYPE( - name, - [ - 'Blob', - 'ReadableStream', - 'WritableStream', - 'Stream', - 'Iterable', - 'AsyncIterable', - 'Function', - '{ readable, writable } pair', - 'Promise' - ], - body - ) - }; - function fromAsyncGen(fn) { - let { promise, resolve } = createDeferredPromise(); - const ac = new AbortController(); - const signal = ac.signal; - const value = fn( - (async function* () { - while (true) { - const _promise = promise; - promise = null; - const { chunk, done, cb } = await _promise; - process.nextTick(cb); - if (done) return - if (signal.aborted) - throw new AbortError(undefined, { - cause: signal.reason - }) - ;({ promise, resolve } = createDeferredPromise()); - yield chunk; - } - })(), - { - signal - } - ); - return { - value, - write(chunk, encoding, cb) { - const _resolve = resolve; - resolve = null; - _resolve({ - chunk, - done: false, - cb - }); - }, - final(cb) { - const _resolve = resolve; - resolve = null; - _resolve({ - done: true, - cb - }); - }, - destroy(err, cb) { - ac.abort(); - cb(err); - } - } - } - function _duplexify(pair) { - const r = pair.readable && typeof pair.readable.read !== 'function' ? Readable.wrap(pair.readable) : pair.readable; - const w = pair.writable; - let readable = !!isReadable(r); - let writable = !!isWritable(w); - let ondrain; - let onfinish; - let onreadable; - let onclose; - let d; - function onfinished(err) { - const cb = onclose; - onclose = null; - if (cb) { - cb(err); - } else if (err) { - d.destroy(err); - } - } - - // TODO(ronag): Avoid double buffering. - // Implement Writable/Readable/Duplex traits. - // See, https://github.com/nodejs/node/pull/33515. - d = new Duplexify({ - // TODO (ronag): highWaterMark? - readableObjectMode: !!(r !== null && r !== undefined && r.readableObjectMode), - writableObjectMode: !!(w !== null && w !== undefined && w.writableObjectMode), - readable, - writable - }); - if (writable) { - eos(w, (err) => { - writable = false; - if (err) { - destroyer(r, err); - } - onfinished(err); - }); - d._write = function (chunk, encoding, callback) { - if (w.write(chunk, encoding)) { - callback(); - } else { - ondrain = callback; - } - }; - d._final = function (callback) { - w.end(); - onfinish = callback; - }; - w.on('drain', function () { - if (ondrain) { - const cb = ondrain; - ondrain = null; - cb(); - } - }); - w.on('finish', function () { - if (onfinish) { - const cb = onfinish; - onfinish = null; - cb(); - } - }); - } - if (readable) { - eos(r, (err) => { - readable = false; - if (err) { - destroyer(r, err); - } - onfinished(err); - }); - r.on('readable', function () { - if (onreadable) { - const cb = onreadable; - onreadable = null; - cb(); - } - }); - r.on('end', function () { - d.push(null); - }); - d._read = function () { - while (true) { - const buf = r.read(); - if (buf === null) { - onreadable = d._read; - return - } - if (!d.push(buf)) { - return - } - } - }; - } - d._destroy = function (err, callback) { - if (!err && onclose !== null) { - err = new AbortError(); - } - onreadable = null; - ondrain = null; - onfinish = null; - if (onclose === null) { - callback(err); - } else { - onclose = callback; - destroyer(w, err); - destroyer(r, err); - } - }; - return d - } - return duplexify; -} - -var duplex; -var hasRequiredDuplex; - -function requireDuplex () { - if (hasRequiredDuplex) return duplex; - hasRequiredDuplex = 1; - - const { - ObjectDefineProperties, - ObjectGetOwnPropertyDescriptor, - ObjectKeys, - ObjectSetPrototypeOf - } = requirePrimordials(); - duplex = Duplex; - const Readable = requireReadable(); - const Writable = requireWritable(); - ObjectSetPrototypeOf(Duplex.prototype, Readable.prototype); - ObjectSetPrototypeOf(Duplex, Readable); - { - const keys = ObjectKeys(Writable.prototype); - // Allow the keys array to be GC'ed. - for (let i = 0; i < keys.length; i++) { - const method = keys[i]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; - } - } - function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options) - Readable.call(this, options); - Writable.call(this, options); - if (options) { - this.allowHalfOpen = options.allowHalfOpen !== false; - if (options.readable === false) { - this._readableState.readable = false; - this._readableState.ended = true; - this._readableState.endEmitted = true; - } - if (options.writable === false) { - this._writableState.writable = false; - this._writableState.ending = true; - this._writableState.ended = true; - this._writableState.finished = true; - } - } else { - this.allowHalfOpen = true; - } - } - ObjectDefineProperties(Duplex.prototype, { - writable: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable') - }, - writableHighWaterMark: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark') - }, - writableObjectMode: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode') - }, - writableBuffer: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer') - }, - writableLength: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength') - }, - writableFinished: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished') - }, - writableCorked: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked') - }, - writableEnded: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded') - }, - writableNeedDrain: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain') - }, - destroyed: { - __proto__: null, - get() { - if (this._readableState === undefined || this._writableState === undefined) { - return false - } - return this._readableState.destroyed && this._writableState.destroyed - }, - set(value) { - // Backward compatibility, the user is explicitly - // managing destroyed. - if (this._readableState && this._writableState) { - this._readableState.destroyed = value; - this._writableState.destroyed = value; - } - } - } - }); - let webStreamsAdapters; - - // Lazy to avoid circular references - function lazyWebStreams() { - if (webStreamsAdapters === undefined) webStreamsAdapters = {}; - return webStreamsAdapters - } - Duplex.fromWeb = function (pair, options) { - return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options) - }; - Duplex.toWeb = function (duplex) { - return lazyWebStreams().newReadableWritablePairFromDuplex(duplex) - }; - let duplexify; - Duplex.from = function (body) { - if (!duplexify) { - duplexify = requireDuplexify(); - } - return duplexify(body, 'body') - }; - return duplex; -} - -var transform; -var hasRequiredTransform; - -function requireTransform () { - if (hasRequiredTransform) return transform; - hasRequiredTransform = 1; - - const { ObjectSetPrototypeOf, Symbol } = requirePrimordials(); - transform = Transform; - const { ERR_METHOD_NOT_IMPLEMENTED } = requireErrors().codes; - const Duplex = requireDuplex(); - const { getHighWaterMark } = requireState(); - ObjectSetPrototypeOf(Transform.prototype, Duplex.prototype); - ObjectSetPrototypeOf(Transform, Duplex); - const kCallback = Symbol('kCallback'); - function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options) - - // TODO (ronag): This should preferably always be - // applied but would be semver-major. Or even better; - // make Transform a Readable with the Writable interface. - const readableHighWaterMark = options ? getHighWaterMark(this, options, 'readableHighWaterMark', true) : null; - if (readableHighWaterMark === 0) { - // A Duplex will buffer both on the writable and readable side while - // a Transform just wants to buffer hwm number of elements. To avoid - // buffering twice we disable buffering on the writable side. - options = { - ...options, - highWaterMark: null, - readableHighWaterMark, - // TODO (ronag): 0 is not optimal since we have - // a "bug" where we check needDrain before calling _write and not after. - // Refs: https://github.com/nodejs/node/pull/32887 - // Refs: https://github.com/nodejs/node/pull/35941 - writableHighWaterMark: options.writableHighWaterMark || 0 - }; - } - Duplex.call(this, options); - - // We have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - this[kCallback] = null; - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - if (typeof options.flush === 'function') this._flush = options.flush; - } - - // When the writable side finishes, then flush out anything remaining. - // Backwards compat. Some Transform streams incorrectly implement _final - // instead of or in addition to _flush. By using 'prefinish' instead of - // implementing _final we continue supporting this unfortunate use case. - this.on('prefinish', prefinish); - } - function final(cb) { - if (typeof this._flush === 'function' && !this.destroyed) { - this._flush((er, data) => { - if (er) { - if (cb) { - cb(er); - } else { - this.destroy(er); - } - return - } - if (data != null) { - this.push(data); - } - this.push(null); - if (cb) { - cb(); - } - }); - } else { - this.push(null); - if (cb) { - cb(); - } - } - } - function prefinish() { - if (this._final !== final) { - final.call(this); - } - } - Transform.prototype._final = final; - Transform.prototype._transform = function (chunk, encoding, callback) { - throw new ERR_METHOD_NOT_IMPLEMENTED('_transform()') - }; - Transform.prototype._write = function (chunk, encoding, callback) { - const rState = this._readableState; - const wState = this._writableState; - const length = rState.length; - this._transform(chunk, encoding, (err, val) => { - if (err) { - callback(err); - return - } - if (val != null) { - this.push(val); - } - if ( - wState.ended || - // Backwards compat. - length === rState.length || - // Backwards compat. - rState.length < rState.highWaterMark - ) { - callback(); - } else { - this[kCallback] = callback; - } - }); - }; - Transform.prototype._read = function () { - if (this[kCallback]) { - const callback = this[kCallback]; - this[kCallback] = null; - callback(); - } - }; - return transform; -} - -var passthrough; -var hasRequiredPassthrough; - -function requirePassthrough () { - if (hasRequiredPassthrough) return passthrough; - hasRequiredPassthrough = 1; - - const { ObjectSetPrototypeOf } = requirePrimordials(); - passthrough = PassThrough; - const Transform = requireTransform(); - ObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype); - ObjectSetPrototypeOf(PassThrough, Transform); - function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options) - Transform.call(this, options); - } - PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); - }; - return passthrough; -} - -/* replacement start */ - -var pipeline_1; -var hasRequiredPipeline; - -function requirePipeline () { - if (hasRequiredPipeline) return pipeline_1; - hasRequiredPipeline = 1; - const process = requireBrowser$2() - - /* replacement end */ - // Ported from https://github.com/mafintosh/pump with - // permission from the author, Mathias Buus (@mafintosh). - - ; const { ArrayIsArray, Promise, SymbolAsyncIterator, SymbolDispose } = requirePrimordials(); - const eos = requireEndOfStream(); - const { once } = requireUtil$1(); - const destroyImpl = requireDestroy(); - const Duplex = requireDuplex(); - const { - aggregateTwoErrors, - codes: { - ERR_INVALID_ARG_TYPE, - ERR_INVALID_RETURN_VALUE, - ERR_MISSING_ARGS, - ERR_STREAM_DESTROYED, - ERR_STREAM_PREMATURE_CLOSE - }, - AbortError - } = requireErrors(); - const { validateFunction, validateAbortSignal } = requireValidators(); - const { - isIterable, - isReadable, - isReadableNodeStream, - isNodeStream, - isTransformStream, - isWebStream, - isReadableStream, - isReadableFinished - } = requireUtils(); - const AbortController = globalThis.AbortController || requireBrowser$1().AbortController; - let PassThrough; - let Readable; - let addAbortListener; - function destroyer(stream, reading, writing) { - let finished = false; - stream.on('close', () => { - finished = true; - }); - const cleanup = eos( - stream, - { - readable: reading, - writable: writing - }, - (err) => { - finished = !err; - } - ); - return { - destroy: (err) => { - if (finished) return - finished = true; - destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED('pipe')); - }, - cleanup - } - } - function popCallback(streams) { - // Streams should never be an empty array. It should always contain at least - // a single stream. Therefore optimize for the average case instead of - // checking for length === 0 as well. - validateFunction(streams[streams.length - 1], 'streams[stream.length - 1]'); - return streams.pop() - } - function makeAsyncIterable(val) { - if (isIterable(val)) { - return val - } else if (isReadableNodeStream(val)) { - // Legacy streams are not Iterable. - return fromReadable(val) - } - throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], val) - } - async function* fromReadable(val) { - if (!Readable) { - Readable = requireReadable(); - } - yield* Readable.prototype[SymbolAsyncIterator].call(val); - } - async function pumpToNode(iterable, writable, finish, { end }) { - let error; - let onresolve = null; - const resume = (err) => { - if (err) { - error = err; - } - if (onresolve) { - const callback = onresolve; - onresolve = null; - callback(); - } - }; - const wait = () => - new Promise((resolve, reject) => { - if (error) { - reject(error); - } else { - onresolve = () => { - if (error) { - reject(error); - } else { - resolve(); - } - }; - } - }); - writable.on('drain', resume); - const cleanup = eos( - writable, - { - readable: false - }, - resume - ); - try { - if (writable.writableNeedDrain) { - await wait(); - } - for await (const chunk of iterable) { - if (!writable.write(chunk)) { - await wait(); - } - } - if (end) { - writable.end(); - await wait(); - } - finish(); - } catch (err) { - finish(error !== err ? aggregateTwoErrors(error, err) : err); - } finally { - cleanup(); - writable.off('drain', resume); - } - } - async function pumpToWeb(readable, writable, finish, { end }) { - if (isTransformStream(writable)) { - writable = writable.writable; - } - // https://streams.spec.whatwg.org/#example-manual-write-with-backpressure - const writer = writable.getWriter(); - try { - for await (const chunk of readable) { - await writer.ready; - writer.write(chunk).catch(() => {}); - } - await writer.ready; - if (end) { - await writer.close(); - } - finish(); - } catch (err) { - try { - await writer.abort(err); - finish(err); - } catch (err) { - finish(err); - } - } - } - function pipeline(...streams) { - return pipelineImpl(streams, once(popCallback(streams))) - } - function pipelineImpl(streams, callback, opts) { - if (streams.length === 1 && ArrayIsArray(streams[0])) { - streams = streams[0]; - } - if (streams.length < 2) { - throw new ERR_MISSING_ARGS('streams') - } - const ac = new AbortController(); - const signal = ac.signal; - const outerSignal = opts === null || opts === undefined ? undefined : opts.signal; - - // Need to cleanup event listeners if last stream is readable - // https://github.com/nodejs/node/issues/35452 - const lastStreamCleanup = []; - validateAbortSignal(outerSignal, 'options.signal'); - function abort() { - finishImpl(new AbortError()); - } - addAbortListener = addAbortListener || requireUtil$1().addAbortListener; - let disposable; - if (outerSignal) { - disposable = addAbortListener(outerSignal, abort); - } - let error; - let value; - const destroys = []; - let finishCount = 0; - function finish(err) { - finishImpl(err, --finishCount === 0); - } - function finishImpl(err, final) { - var _disposable; - if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE')) { - error = err; - } - if (!error && !final) { - return - } - while (destroys.length) { - destroys.shift()(error); - } -(_disposable = disposable) === null || _disposable === undefined ? undefined : _disposable[SymbolDispose](); - ac.abort(); - if (final) { - if (!error) { - lastStreamCleanup.forEach((fn) => fn()); - } - process.nextTick(callback, error, value); - } - } - let ret; - for (let i = 0; i < streams.length; i++) { - const stream = streams[i]; - const reading = i < streams.length - 1; - const writing = i > 0; - const end = reading || (opts === null || opts === undefined ? undefined : opts.end) !== false; - const isLastStream = i === streams.length - 1; - if (isNodeStream(stream)) { - if (end) { - const { destroy, cleanup } = destroyer(stream, reading, writing); - destroys.push(destroy); - if (isReadable(stream) && isLastStream) { - lastStreamCleanup.push(cleanup); - } - } - - // Catch stream errors that occur after pipe/pump has completed. - function onError(err) { - if (err && err.name !== 'AbortError' && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { - finish(err); - } - } - stream.on('error', onError); - if (isReadable(stream) && isLastStream) { - lastStreamCleanup.push(() => { - stream.removeListener('error', onError); - }); - } - } - if (i === 0) { - if (typeof stream === 'function') { - ret = stream({ - signal - }); - if (!isIterable(ret)) { - throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or Stream', 'source', ret) - } - } else if (isIterable(stream) || isReadableNodeStream(stream) || isTransformStream(stream)) { - ret = stream; - } else { - ret = Duplex.from(stream); - } - } else if (typeof stream === 'function') { - if (isTransformStream(ret)) { - var _ret; - ret = makeAsyncIterable((_ret = ret) === null || _ret === undefined ? undefined : _ret.readable); - } else { - ret = makeAsyncIterable(ret); - } - ret = stream(ret, { - signal - }); - if (reading) { - if (!isIterable(ret, true)) { - throw new ERR_INVALID_RETURN_VALUE('AsyncIterable', `transform[${i - 1}]`, ret) - } - } else { - var _ret2; - if (!PassThrough) { - PassThrough = requirePassthrough(); - } - - // If the last argument to pipeline is not a stream - // we must create a proxy stream so that pipeline(...) - // always returns a stream which can be further - // composed through `.pipe(stream)`. - - const pt = new PassThrough({ - objectMode: true - }); - - // Handle Promises/A+ spec, `then` could be a getter that throws on - // second use. - const then = (_ret2 = ret) === null || _ret2 === undefined ? undefined : _ret2.then; - if (typeof then === 'function') { - finishCount++; - then.call( - ret, - (val) => { - value = val; - if (val != null) { - pt.write(val); - } - if (end) { - pt.end(); - } - process.nextTick(finish); - }, - (err) => { - pt.destroy(err); - process.nextTick(finish, err); - } - ); - } else if (isIterable(ret, true)) { - finishCount++; - pumpToNode(ret, pt, finish, { - end - }); - } else if (isReadableStream(ret) || isTransformStream(ret)) { - const toRead = ret.readable || ret; - finishCount++; - pumpToNode(toRead, pt, finish, { - end - }); - } else { - throw new ERR_INVALID_RETURN_VALUE('AsyncIterable or Promise', 'destination', ret) - } - ret = pt; - const { destroy, cleanup } = destroyer(ret, false, true); - destroys.push(destroy); - if (isLastStream) { - lastStreamCleanup.push(cleanup); - } - } - } else if (isNodeStream(stream)) { - if (isReadableNodeStream(ret)) { - finishCount += 2; - const cleanup = pipe(ret, stream, finish, { - end - }); - if (isReadable(stream) && isLastStream) { - lastStreamCleanup.push(cleanup); - } - } else if (isTransformStream(ret) || isReadableStream(ret)) { - const toRead = ret.readable || ret; - finishCount++; - pumpToNode(toRead, stream, finish, { - end - }); - } else if (isIterable(ret)) { - finishCount++; - pumpToNode(ret, stream, finish, { - end - }); - } else { - throw new ERR_INVALID_ARG_TYPE( - 'val', - ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'], - ret - ) - } - ret = stream; - } else if (isWebStream(stream)) { - if (isReadableNodeStream(ret)) { - finishCount++; - pumpToWeb(makeAsyncIterable(ret), stream, finish, { - end - }); - } else if (isReadableStream(ret) || isIterable(ret)) { - finishCount++; - pumpToWeb(ret, stream, finish, { - end - }); - } else if (isTransformStream(ret)) { - finishCount++; - pumpToWeb(ret.readable, stream, finish, { - end - }); - } else { - throw new ERR_INVALID_ARG_TYPE( - 'val', - ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'], - ret - ) - } - ret = stream; - } else { - ret = Duplex.from(stream); - } - } - if ( - (signal !== null && signal !== undefined && signal.aborted) || - (outerSignal !== null && outerSignal !== undefined && outerSignal.aborted) - ) { - process.nextTick(abort); - } - return ret - } - function pipe(src, dst, finish, { end }) { - let ended = false; - dst.on('close', () => { - if (!ended) { - // Finish if the destination closes before the source has completed. - finish(new ERR_STREAM_PREMATURE_CLOSE()); - } - }); - src.pipe(dst, { - end: false - }); // If end is true we already will have a listener to end dst. - - if (end) { - // Compat. Before node v10.12.0 stdio used to throw an error so - // pipe() did/does not end() stdio destinations. - // Now they allow it but "secretly" don't close the underlying fd. - - function endFn() { - ended = true; - dst.end(); - } - if (isReadableFinished(src)) { - // End the destination if the source has already ended. - process.nextTick(endFn); - } else { - src.once('end', endFn); - } - } else { - finish(); - } - eos( - src, - { - readable: true, - writable: false - }, - (err) => { - const rState = src._readableState; - if ( - err && - err.code === 'ERR_STREAM_PREMATURE_CLOSE' && - rState && - rState.ended && - !rState.errored && - !rState.errorEmitted - ) { - // Some readable streams will emit 'close' before 'end'. However, since - // this is on the readable side 'end' should still be emitted if the - // stream has been ended and no error emitted. This should be allowed in - // favor of backwards compatibility. Since the stream is piped to a - // destination this should not result in any observable difference. - // We don't need to check if this is a writable premature close since - // eos will only fail with premature close on the reading side for - // duplex streams. - src.once('end', finish).once('error', finish); - } else { - finish(err); - } - } - ); - return eos( - dst, - { - readable: false, - writable: true - }, - finish - ) - } - pipeline_1 = { - pipelineImpl, - pipeline - }; - return pipeline_1; -} - -var compose; -var hasRequiredCompose; - -function requireCompose () { - if (hasRequiredCompose) return compose; - hasRequiredCompose = 1; - - const { pipeline } = requirePipeline(); - const Duplex = requireDuplex(); - const { destroyer } = requireDestroy(); - const { - isNodeStream, - isReadable, - isWritable, - isWebStream, - isTransformStream, - isWritableStream, - isReadableStream - } = requireUtils(); - const { - AbortError, - codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS } - } = requireErrors(); - const eos = requireEndOfStream(); - compose = function compose(...streams) { - if (streams.length === 0) { - throw new ERR_MISSING_ARGS('streams') - } - if (streams.length === 1) { - return Duplex.from(streams[0]) - } - const orgStreams = [...streams]; - if (typeof streams[0] === 'function') { - streams[0] = Duplex.from(streams[0]); - } - if (typeof streams[streams.length - 1] === 'function') { - const idx = streams.length - 1; - streams[idx] = Duplex.from(streams[idx]); - } - for (let n = 0; n < streams.length; ++n) { - if (!isNodeStream(streams[n]) && !isWebStream(streams[n])) { - // TODO(ronag): Add checks for non streams. - continue - } - if ( - n < streams.length - 1 && - !(isReadable(streams[n]) || isReadableStream(streams[n]) || isTransformStream(streams[n])) - ) { - throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be readable') - } - if (n > 0 && !(isWritable(streams[n]) || isWritableStream(streams[n]) || isTransformStream(streams[n]))) { - throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be writable') - } - } - let ondrain; - let onfinish; - let onreadable; - let onclose; - let d; - function onfinished(err) { - const cb = onclose; - onclose = null; - if (cb) { - cb(err); - } else if (err) { - d.destroy(err); - } else if (!readable && !writable) { - d.destroy(); - } - } - const head = streams[0]; - const tail = pipeline(streams, onfinished); - const writable = !!(isWritable(head) || isWritableStream(head) || isTransformStream(head)); - const readable = !!(isReadable(tail) || isReadableStream(tail) || isTransformStream(tail)); - - // TODO(ronag): Avoid double buffering. - // Implement Writable/Readable/Duplex traits. - // See, https://github.com/nodejs/node/pull/33515. - d = new Duplex({ - // TODO (ronag): highWaterMark? - writableObjectMode: !!(head !== null && head !== undefined && head.writableObjectMode), - readableObjectMode: !!(tail !== null && tail !== undefined && tail.readableObjectMode), - writable, - readable - }); - if (writable) { - if (isNodeStream(head)) { - d._write = function (chunk, encoding, callback) { - if (head.write(chunk, encoding)) { - callback(); - } else { - ondrain = callback; - } - }; - d._final = function (callback) { - head.end(); - onfinish = callback; - }; - head.on('drain', function () { - if (ondrain) { - const cb = ondrain; - ondrain = null; - cb(); - } - }); - } else if (isWebStream(head)) { - const writable = isTransformStream(head) ? head.writable : head; - const writer = writable.getWriter(); - d._write = async function (chunk, encoding, callback) { - try { - await writer.ready; - writer.write(chunk).catch(() => {}); - callback(); - } catch (err) { - callback(err); - } - }; - d._final = async function (callback) { - try { - await writer.ready; - writer.close().catch(() => {}); - onfinish = callback; - } catch (err) { - callback(err); - } - }; - } - const toRead = isTransformStream(tail) ? tail.readable : tail; - eos(toRead, () => { - if (onfinish) { - const cb = onfinish; - onfinish = null; - cb(); - } - }); - } - if (readable) { - if (isNodeStream(tail)) { - tail.on('readable', function () { - if (onreadable) { - const cb = onreadable; - onreadable = null; - cb(); - } - }); - tail.on('end', function () { - d.push(null); - }); - d._read = function () { - while (true) { - const buf = tail.read(); - if (buf === null) { - onreadable = d._read; - return - } - if (!d.push(buf)) { - return - } - } - }; - } else if (isWebStream(tail)) { - const readable = isTransformStream(tail) ? tail.readable : tail; - const reader = readable.getReader(); - d._read = async function () { - while (true) { - try { - const { value, done } = await reader.read(); - if (!d.push(value)) { - return - } - if (done) { - d.push(null); - return - } - } catch { - return - } - } - }; - } - } - d._destroy = function (err, callback) { - if (!err && onclose !== null) { - err = new AbortError(); - } - onreadable = null; - ondrain = null; - onfinish = null; - if (onclose === null) { - callback(err); - } else { - onclose = callback; - if (isNodeStream(tail)) { - destroyer(tail, err); - } - } - }; - return d - }; - return compose; -} - -var hasRequiredOperators; - -function requireOperators () { - if (hasRequiredOperators) return operators; - hasRequiredOperators = 1; - - const AbortController = globalThis.AbortController || requireBrowser$1().AbortController; - const { - codes: { ERR_INVALID_ARG_VALUE, ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE }, - AbortError - } = requireErrors(); - const { validateAbortSignal, validateInteger, validateObject } = requireValidators(); - const kWeakHandler = requirePrimordials().Symbol('kWeak'); - const kResistStopPropagation = requirePrimordials().Symbol('kResistStopPropagation'); - const { finished } = requireEndOfStream(); - const staticCompose = requireCompose(); - const { addAbortSignalNoValidate } = requireAddAbortSignal(); - const { isWritable, isNodeStream } = requireUtils(); - const { deprecate } = requireUtil$1(); - const { - ArrayPrototypePush, - Boolean, - MathFloor, - Number, - NumberIsNaN, - Promise, - PromiseReject, - PromiseResolve, - PromisePrototypeThen, - Symbol - } = requirePrimordials(); - const kEmpty = Symbol('kEmpty'); - const kEof = Symbol('kEof'); - function compose(stream, options) { - if (options != null) { - validateObject(options, 'options'); - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal'); - } - if (isNodeStream(stream) && !isWritable(stream)) { - throw new ERR_INVALID_ARG_VALUE('stream', stream, 'must be writable') - } - const composedStream = staticCompose(this, stream); - if (options !== null && options !== undefined && options.signal) { - // Not validating as we already validated before - addAbortSignalNoValidate(options.signal, composedStream); - } - return composedStream - } - function map(fn, options) { - if (typeof fn !== 'function') { - throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn) - } - if (options != null) { - validateObject(options, 'options'); - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal'); - } - let concurrency = 1; - if ((options === null || options === undefined ? undefined : options.concurrency) != null) { - concurrency = MathFloor(options.concurrency); - } - let highWaterMark = concurrency - 1; - if ((options === null || options === undefined ? undefined : options.highWaterMark) != null) { - highWaterMark = MathFloor(options.highWaterMark); - } - validateInteger(concurrency, 'options.concurrency', 1); - validateInteger(highWaterMark, 'options.highWaterMark', 0); - highWaterMark += concurrency; - return async function* map() { - const signal = requireUtil$1().AbortSignalAny( - [options === null || options === undefined ? undefined : options.signal].filter(Boolean) - ); - const stream = this; - const queue = []; - const signalOpt = { - signal - }; - let next; - let resume; - let done = false; - let cnt = 0; - function onCatch() { - done = true; - afterItemProcessed(); - } - function afterItemProcessed() { - cnt -= 1; - maybeResume(); - } - function maybeResume() { - if (resume && !done && cnt < concurrency && queue.length < highWaterMark) { - resume(); - resume = null; - } - } - async function pump() { - try { - for await (let val of stream) { - if (done) { - return - } - if (signal.aborted) { - throw new AbortError() - } - try { - val = fn(val, signalOpt); - if (val === kEmpty) { - continue - } - val = PromiseResolve(val); - } catch (err) { - val = PromiseReject(err); - } - cnt += 1; - PromisePrototypeThen(val, afterItemProcessed, onCatch); - queue.push(val); - if (next) { - next(); - next = null; - } - if (!done && (queue.length >= highWaterMark || cnt >= concurrency)) { - await new Promise((resolve) => { - resume = resolve; - }); - } - } - queue.push(kEof); - } catch (err) { - const val = PromiseReject(err); - PromisePrototypeThen(val, afterItemProcessed, onCatch); - queue.push(val); - } finally { - done = true; - if (next) { - next(); - next = null; - } - } - } - pump(); - try { - while (true) { - while (queue.length > 0) { - const val = await queue[0]; - if (val === kEof) { - return - } - if (signal.aborted) { - throw new AbortError() - } - if (val !== kEmpty) { - yield val; - } - queue.shift(); - maybeResume(); - } - await new Promise((resolve) => { - next = resolve; - }); - } - } finally { - done = true; - if (resume) { - resume(); - resume = null; - } - } - }.call(this) - } - function asIndexedPairs(options = undefined) { - if (options != null) { - validateObject(options, 'options'); - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal'); - } - return async function* asIndexedPairs() { - let index = 0; - for await (const val of this) { - var _options$signal; - if ( - options !== null && - options !== undefined && - (_options$signal = options.signal) !== null && - _options$signal !== undefined && - _options$signal.aborted - ) { - throw new AbortError({ - cause: options.signal.reason - }) - } - yield [index++, val]; - } - }.call(this) - } - async function some(fn, options = undefined) { - for await (const unused of filter.call(this, fn, options)) { - return true - } - return false - } - async function every(fn, options = undefined) { - if (typeof fn !== 'function') { - throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn) - } - // https://en.wikipedia.org/wiki/De_Morgan%27s_laws - return !(await some.call( - this, - async (...args) => { - return !(await fn(...args)) - }, - options - )) - } - async function find(fn, options) { - for await (const result of filter.call(this, fn, options)) { - return result - } - return undefined - } - async function forEach(fn, options) { - if (typeof fn !== 'function') { - throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn) - } - async function forEachFn(value, options) { - await fn(value, options); - return kEmpty - } - // eslint-disable-next-line no-unused-vars - for await (const unused of map.call(this, forEachFn, options)); - } - function filter(fn, options) { - if (typeof fn !== 'function') { - throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn) - } - async function filterFn(value, options) { - if (await fn(value, options)) { - return value - } - return kEmpty - } - return map.call(this, filterFn, options) - } - - // Specific to provide better error to reduce since the argument is only - // missing if the stream has no items in it - but the code is still appropriate - class ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS { - constructor() { - super('reduce'); - this.message = 'Reduce of an empty stream requires an initial value'; - } - } - async function reduce(reducer, initialValue, options) { - var _options$signal2; - if (typeof reducer !== 'function') { - throw new ERR_INVALID_ARG_TYPE('reducer', ['Function', 'AsyncFunction'], reducer) - } - if (options != null) { - validateObject(options, 'options'); - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal'); - } - let hasInitialValue = arguments.length > 1; - if ( - options !== null && - options !== undefined && - (_options$signal2 = options.signal) !== null && - _options$signal2 !== undefined && - _options$signal2.aborted - ) { - const err = new AbortError(undefined, { - cause: options.signal.reason - }); - this.once('error', () => {}); // The error is already propagated - await finished(this.destroy(err)); - throw err - } - const ac = new AbortController(); - const signal = ac.signal; - if (options !== null && options !== undefined && options.signal) { - const opts = { - once: true, - [kWeakHandler]: this, - [kResistStopPropagation]: true - }; - options.signal.addEventListener('abort', () => ac.abort(), opts); - } - let gotAnyItemFromStream = false; - try { - for await (const value of this) { - var _options$signal3; - gotAnyItemFromStream = true; - if ( - options !== null && - options !== undefined && - (_options$signal3 = options.signal) !== null && - _options$signal3 !== undefined && - _options$signal3.aborted - ) { - throw new AbortError() - } - if (!hasInitialValue) { - initialValue = value; - hasInitialValue = true; - } else { - initialValue = await reducer(initialValue, value, { - signal - }); - } - } - if (!gotAnyItemFromStream && !hasInitialValue) { - throw new ReduceAwareErrMissingArgs() - } - } finally { - ac.abort(); - } - return initialValue - } - async function toArray(options) { - if (options != null) { - validateObject(options, 'options'); - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal'); - } - const result = []; - for await (const val of this) { - var _options$signal4; - if ( - options !== null && - options !== undefined && - (_options$signal4 = options.signal) !== null && - _options$signal4 !== undefined && - _options$signal4.aborted - ) { - throw new AbortError(undefined, { - cause: options.signal.reason - }) - } - ArrayPrototypePush(result, val); - } - return result - } - function flatMap(fn, options) { - const values = map.call(this, fn, options); - return async function* flatMap() { - for await (const val of values) { - yield* val; - } - }.call(this) - } - function toIntegerOrInfinity(number) { - // We coerce here to align with the spec - // https://github.com/tc39/proposal-iterator-helpers/issues/169 - number = Number(number); - if (NumberIsNaN(number)) { - return 0 - } - if (number < 0) { - throw new ERR_OUT_OF_RANGE('number', '>= 0', number) - } - return number - } - function drop(number, options = undefined) { - if (options != null) { - validateObject(options, 'options'); - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal'); - } - number = toIntegerOrInfinity(number); - return async function* drop() { - var _options$signal5; - if ( - options !== null && - options !== undefined && - (_options$signal5 = options.signal) !== null && - _options$signal5 !== undefined && - _options$signal5.aborted - ) { - throw new AbortError() - } - for await (const val of this) { - var _options$signal6; - if ( - options !== null && - options !== undefined && - (_options$signal6 = options.signal) !== null && - _options$signal6 !== undefined && - _options$signal6.aborted - ) { - throw new AbortError() - } - if (number-- <= 0) { - yield val; - } - } - }.call(this) - } - function take(number, options = undefined) { - if (options != null) { - validateObject(options, 'options'); - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal'); - } - number = toIntegerOrInfinity(number); - return async function* take() { - var _options$signal7; - if ( - options !== null && - options !== undefined && - (_options$signal7 = options.signal) !== null && - _options$signal7 !== undefined && - _options$signal7.aborted - ) { - throw new AbortError() - } - for await (const val of this) { - var _options$signal8; - if ( - options !== null && - options !== undefined && - (_options$signal8 = options.signal) !== null && - _options$signal8 !== undefined && - _options$signal8.aborted - ) { - throw new AbortError() - } - if (number-- > 0) { - yield val; - } - - // Don't get another item from iterator in case we reached the end - if (number <= 0) { - return - } - } - }.call(this) - } - operators.streamReturningOperators = { - asIndexedPairs: deprecate(asIndexedPairs, 'readable.asIndexedPairs will be removed in a future version.'), - drop, - filter, - flatMap, - map, - take, - compose - }; - operators.promiseReturningOperators = { - every, - forEach, - reduce, - toArray, - some, - find - }; - return operators; -} - -var promises; -var hasRequiredPromises; - -function requirePromises () { - if (hasRequiredPromises) return promises; - hasRequiredPromises = 1; - - const { ArrayPrototypePop, Promise } = requirePrimordials(); - const { isIterable, isNodeStream, isWebStream } = requireUtils(); - const { pipelineImpl: pl } = requirePipeline(); - const { finished } = requireEndOfStream(); - requireStream$1(); - function pipeline(...streams) { - return new Promise((resolve, reject) => { - let signal; - let end; - const lastArg = streams[streams.length - 1]; - if ( - lastArg && - typeof lastArg === 'object' && - !isNodeStream(lastArg) && - !isIterable(lastArg) && - !isWebStream(lastArg) - ) { - const options = ArrayPrototypePop(streams); - signal = options.signal; - end = options.end; - } - pl( - streams, - (err, value) => { - if (err) { - reject(err); - } else { - resolve(value); - } - }, - { - signal, - end - } - ); - }) - } - promises = { - finished, - pipeline - }; - return promises; -} - -var hasRequiredStream$1; - -function requireStream$1 () { - if (hasRequiredStream$1) return stream.exports; - hasRequiredStream$1 = 1; - - /* replacement start */ - - const { Buffer } = require$$0$2; - - /* replacement end */ - - const { ObjectDefineProperty, ObjectKeys, ReflectApply } = requirePrimordials(); - const { - promisify: { custom: customPromisify } - } = requireUtil$1(); - const { streamReturningOperators, promiseReturningOperators } = requireOperators(); - const { - codes: { ERR_ILLEGAL_CONSTRUCTOR } - } = requireErrors(); - const compose = requireCompose(); - const { setDefaultHighWaterMark, getDefaultHighWaterMark } = requireState(); - const { pipeline } = requirePipeline(); - const { destroyer } = requireDestroy(); - const eos = requireEndOfStream(); - const promises = requirePromises(); - const utils = requireUtils(); - const Stream = (stream.exports = requireLegacy().Stream); - Stream.isDestroyed = utils.isDestroyed; - Stream.isDisturbed = utils.isDisturbed; - Stream.isErrored = utils.isErrored; - Stream.isReadable = utils.isReadable; - Stream.isWritable = utils.isWritable; - Stream.Readable = requireReadable(); - for (const key of ObjectKeys(streamReturningOperators)) { - const op = streamReturningOperators[key]; - function fn(...args) { - if (new.target) { - throw ERR_ILLEGAL_CONSTRUCTOR() - } - return Stream.Readable.from(ReflectApply(op, this, args)) - } - ObjectDefineProperty(fn, 'name', { - __proto__: null, - value: op.name - }); - ObjectDefineProperty(fn, 'length', { - __proto__: null, - value: op.length - }); - ObjectDefineProperty(Stream.Readable.prototype, key, { - __proto__: null, - value: fn, - enumerable: false, - configurable: true, - writable: true - }); - } - for (const key of ObjectKeys(promiseReturningOperators)) { - const op = promiseReturningOperators[key]; - function fn(...args) { - if (new.target) { - throw ERR_ILLEGAL_CONSTRUCTOR() - } - return ReflectApply(op, this, args) - } - ObjectDefineProperty(fn, 'name', { - __proto__: null, - value: op.name - }); - ObjectDefineProperty(fn, 'length', { - __proto__: null, - value: op.length - }); - ObjectDefineProperty(Stream.Readable.prototype, key, { - __proto__: null, - value: fn, - enumerable: false, - configurable: true, - writable: true - }); - } - Stream.Writable = requireWritable(); - Stream.Duplex = requireDuplex(); - Stream.Transform = requireTransform(); - Stream.PassThrough = requirePassthrough(); - Stream.pipeline = pipeline; - const { addAbortSignal } = requireAddAbortSignal(); - Stream.addAbortSignal = addAbortSignal; - Stream.finished = eos; - Stream.destroy = destroyer; - Stream.compose = compose; - Stream.setDefaultHighWaterMark = setDefaultHighWaterMark; - Stream.getDefaultHighWaterMark = getDefaultHighWaterMark; - ObjectDefineProperty(Stream, 'promises', { - __proto__: null, - configurable: true, - enumerable: true, - get() { - return promises - } - }); - ObjectDefineProperty(pipeline, customPromisify, { - __proto__: null, - enumerable: true, - get() { - return promises.pipeline - } - }); - ObjectDefineProperty(eos, customPromisify, { - __proto__: null, - enumerable: true, - get() { - return promises.finished - } - }); - - // Backwards-compat with node 0.4.x - Stream.Stream = Stream; - Stream._isUint8Array = function isUint8Array(value) { - return value instanceof Uint8Array - }; - Stream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength) - }; - return stream.exports; -} - -var hasRequiredBrowser; - -function requireBrowser () { - if (hasRequiredBrowser) return browser$1.exports; - hasRequiredBrowser = 1; - (function (module) { - - const CustomStream = requireStream$1(); - const promises = requirePromises(); - const originalDestroy = CustomStream.Readable.destroy; - module.exports = CustomStream.Readable; - - // Explicit export naming is needed for ESM - module.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer; - module.exports._isUint8Array = CustomStream._isUint8Array; - module.exports.isDisturbed = CustomStream.isDisturbed; - module.exports.isErrored = CustomStream.isErrored; - module.exports.isReadable = CustomStream.isReadable; - module.exports.Readable = CustomStream.Readable; - module.exports.Writable = CustomStream.Writable; - module.exports.Duplex = CustomStream.Duplex; - module.exports.Transform = CustomStream.Transform; - module.exports.PassThrough = CustomStream.PassThrough; - module.exports.addAbortSignal = CustomStream.addAbortSignal; - module.exports.finished = CustomStream.finished; - module.exports.destroy = CustomStream.destroy; - module.exports.destroy = originalDestroy; - module.exports.pipeline = CustomStream.pipeline; - module.exports.compose = CustomStream.compose; - Object.defineProperty(CustomStream, 'promises', { - configurable: true, - enumerable: true, - get() { - return promises - } - }); - module.exports.Stream = CustomStream.Stream; - - // Allow default importing - module.exports.default = module.exports; - } (browser$1)); - return browser$1.exports; -} - -var hasRequiredStream; - -function requireStream () { - if (hasRequiredStream) return stream$1; - hasRequiredStream = 1; - (function (exports$1) { - Object.defineProperty(exports$1, "__esModule", { value: true }); - exports$1.Writable = exports$1.Readable = void 0; - var node_stream_1 = requireBrowser(); - Object.defineProperty(exports$1, "Readable", { enumerable: true, get: function () { return node_stream_1.Readable; } }); - Object.defineProperty(exports$1, "Writable", { enumerable: true, get: function () { return node_stream_1.Writable; } }); - - } (stream$1)); - return stream$1; -} - -var events = {}; - -var hasRequiredEvents; - -function requireEvents () { - if (hasRequiredEvents) return events; - hasRequiredEvents = 1; - (function (exports$1) { - Object.defineProperty(exports$1, "__esModule", { value: true }); - exports$1.EventEmitter = void 0; - var node_events_1 = requireEvents$1(); - Object.defineProperty(exports$1, "EventEmitter", { enumerable: true, get: function () { return node_events_1.EventEmitter; } }); - - } (events)); - return events; -} - -var FileHandle = {}; - -var hasRequiredFileHandle; - -function requireFileHandle () { - if (hasRequiredFileHandle) return FileHandle; - hasRequiredFileHandle = 1; - Object.defineProperty(FileHandle, "__esModule", { value: true }); - FileHandle.FileHandle = void 0; - const util_1 = requireUtil$2(); - const events_1 = requireEvents(); - let FileHandle$1 = class FileHandle extends events_1.EventEmitter { - constructor(fs, fd) { - super(); - this.refs = 1; - this.closePromise = null; - this.position = 0; - this.readableWebStreamLocked = false; - this.fs = fs; - this.fd = fd; - } - getAsyncId() { - // Return a unique async ID for this file handle - // In a real implementation, this would be provided by the underlying system - return this.fd; - } - appendFile(data, options) { - return (0, util_1.promisify)(this.fs, 'appendFile')(this.fd, data, options); - } - chmod(mode) { - return (0, util_1.promisify)(this.fs, 'fchmod')(this.fd, mode); - } - chown(uid, gid) { - return (0, util_1.promisify)(this.fs, 'fchown')(this.fd, uid, gid); - } - close() { - if (this.fd === -1) { - return Promise.resolve(); - } - if (this.closePromise) { - return this.closePromise; - } - this.refs--; - if (this.refs === 0) { - const currentFd = this.fd; - this.fd = -1; - this.closePromise = (0, util_1.promisify)(this.fs, 'close')(currentFd).finally(() => { - this.closePromise = null; - }); - } - else { - this.closePromise = new Promise((resolve, reject) => { - this.closeResolve = resolve; - this.closeReject = reject; - }).finally(() => { - this.closePromise = null; - this.closeReject = undefined; - this.closeResolve = undefined; - }); - } - this.emit('close'); - return this.closePromise; - } - datasync() { - return (0, util_1.promisify)(this.fs, 'fdatasync')(this.fd); - } - createReadStream(options) { - return this.fs.createReadStream('', { ...options, fd: this }); - } - createWriteStream(options) { - return this.fs.createWriteStream('', { ...options, fd: this }); - } - readableWebStream(options = {}) { - const { type = 'bytes', autoClose = false } = options; - let position = 0; - if (this.fd === -1) { - throw new Error('The FileHandle is closed'); - } - if (this.closePromise) { - throw new Error('The FileHandle is closing'); - } - if (this.readableWebStreamLocked) { - throw new Error('An error will be thrown if this method is called more than once or is called after the FileHandle is closed or closing.'); - } - this.readableWebStreamLocked = true; - this.ref(); - const unlockAndCleanup = () => { - this.readableWebStreamLocked = false; - this.unref(); - if (autoClose) { - this.close().catch(() => { - // Ignore close errors in cleanup - }); - } - }; - return new ReadableStream({ - type: type === 'bytes' ? 'bytes' : undefined, - autoAllocateChunkSize: 16384, - pull: async (controller) => { - try { - const view = controller.byobRequest?.view; - if (!view) { - // Fallback for when BYOB is not available - const buffer = new Uint8Array(16384); - const result = await this.read(buffer, 0, buffer.length, position); - if (result.bytesRead === 0) { - controller.close(); - unlockAndCleanup(); - return; - } - position += result.bytesRead; - controller.enqueue(buffer.slice(0, result.bytesRead)); - return; - } - const result = await this.read(view, view.byteOffset, view.byteLength, position); - if (result.bytesRead === 0) { - controller.close(); - unlockAndCleanup(); - return; - } - position += result.bytesRead; - controller.byobRequest.respond(result.bytesRead); - } - catch (error) { - controller.error(error); - unlockAndCleanup(); - } - }, - cancel: async () => { - unlockAndCleanup(); - }, - }); - } - async read(buffer, offset, length, position) { - const readPosition = position !== null && position !== undefined ? position : this.position; - const result = await (0, util_1.promisify)(this.fs, 'read', bytesRead => ({ bytesRead, buffer }))(this.fd, buffer, offset, length, readPosition); - // Update internal position only if position was null/undefined - if (position === null || position === undefined) { - this.position += result.bytesRead; - } - return result; - } - readv(buffers, position) { - return (0, util_1.promisify)(this.fs, 'readv', bytesRead => ({ bytesRead, buffers }))(this.fd, buffers, position); - } - readFile(options) { - return (0, util_1.promisify)(this.fs, 'readFile')(this.fd, options); - } - stat(options) { - return (0, util_1.promisify)(this.fs, 'fstat')(this.fd, options); - } - sync() { - return (0, util_1.promisify)(this.fs, 'fsync')(this.fd); - } - truncate(len) { - return (0, util_1.promisify)(this.fs, 'ftruncate')(this.fd, len); - } - utimes(atime, mtime) { - return (0, util_1.promisify)(this.fs, 'futimes')(this.fd, atime, mtime); - } - async write(buffer, offset, length, position) { - const useInternalPosition = typeof position !== 'number'; - const writePosition = useInternalPosition ? this.position : position; - const result = await (0, util_1.promisify)(this.fs, 'write', bytesWritten => ({ bytesWritten, buffer }))(this.fd, buffer, offset, length, writePosition); - // Update internal position only if position was null/undefined - if (useInternalPosition) { - this.position += result.bytesWritten; - } - return result; - } - writev(buffers, position) { - return (0, util_1.promisify)(this.fs, 'writev', bytesWritten => ({ bytesWritten, buffers }))(this.fd, buffers, position); - } - writeFile(data, options) { - return (0, util_1.promisify)(this.fs, 'writeFile')(this.fd, data, options); - } - // Implement Symbol.asyncDispose if available (ES2023+) - async [Symbol.asyncDispose]() { - await this.close(); - } - ref() { - this.refs++; - } - unref() { - this.refs--; - if (this.refs === 0) { - this.fd = -1; - if (this.closeResolve) { - (0, util_1.promisify)(this.fs, 'close')(this.fd).then(this.closeResolve, this.closeReject); - } - } - } - }; - FileHandle.FileHandle = FileHandle$1; - - return FileHandle; -} - -var FsPromises = {}; - -var hasRequiredFsPromises; - -function requireFsPromises () { - if (hasRequiredFsPromises) return FsPromises; - hasRequiredFsPromises = 1; - Object.defineProperty(FsPromises, "__esModule", { value: true }); - FsPromises.FsPromises = void 0; - const util_1 = requireUtil$2(); - const constants_1 = requireConstants$1(); - // AsyncIterator implementation for promises.watch - class FSWatchAsyncIterator { - constructor(fs, path, options = {}) { - this.fs = fs; - this.path = path; - this.options = options; - this.eventQueue = []; - this.resolveQueue = []; - this.finished = false; - this.maxQueue = options.maxQueue || 2048; - this.overflow = options.overflow || 'ignore'; - this.startWatching(); - // Handle AbortSignal - if (options.signal) { - if (options.signal.aborted) { - this.finish(); - return; - } - options.signal.addEventListener('abort', () => { - this.finish(); - }); - } - } - startWatching() { - try { - this.watcher = this.fs.watch(this.path, this.options, (eventType, filename) => { - this.enqueueEvent({ eventType, filename }); - }); - } - catch (error) { - // If we can't start watching, finish immediately - this.finish(); - throw error; - } - } - enqueueEvent(event) { - if (this.finished) - return; - // Handle queue overflow - if (this.eventQueue.length >= this.maxQueue) { - if (this.overflow === 'throw') { - const error = new Error(`Watch queue overflow: more than ${this.maxQueue} events queued`); - this.finish(error); - return; - } - else { - // 'ignore' - drop the oldest event - this.eventQueue.shift(); - console.warn(`Watch queue overflow: dropping event due to exceeding maxQueue of ${this.maxQueue}`); - } - } - this.eventQueue.push(event); - // If there's a waiting promise, resolve it - if (this.resolveQueue.length > 0) { - const { resolve } = this.resolveQueue.shift(); - const nextEvent = this.eventQueue.shift(); - resolve({ value: nextEvent, done: false }); - } - } - finish(error) { - if (this.finished) - return; - this.finished = true; - if (this.watcher) { - this.watcher.close(); - this.watcher = null; - } - // Resolve or reject all pending promises - while (this.resolveQueue.length > 0) { - const { resolve, reject } = this.resolveQueue.shift(); - if (error) { - reject(error); - } - else { - resolve({ value: undefined, done: true }); - } - } - } - async next() { - if (this.finished) { - return { value: undefined, done: true }; - } - // If we have queued events, return one - if (this.eventQueue.length > 0) { - const event = this.eventQueue.shift(); - return { value: event, done: false }; - } - // Otherwise, wait for the next event - return new Promise((resolve, reject) => { - this.resolveQueue.push({ resolve, reject }); - }); - } - async return() { - this.finish(); - return { value: undefined, done: true }; - } - async throw(error) { - this.finish(error); - throw error; - } - [Symbol.asyncIterator]() { - return this; - } - } - let FsPromises$1 = class FsPromises { - constructor(fs, FileHandle) { - this.fs = fs; - this.FileHandle = FileHandle; - this.constants = constants_1.constants; - this.cp = (0, util_1.promisify)(this.fs, 'cp'); - this.opendir = (0, util_1.promisify)(this.fs, 'opendir'); - this.statfs = (0, util_1.promisify)(this.fs, 'statfs'); - this.lutimes = (0, util_1.promisify)(this.fs, 'lutimes'); - this.glob = (0, util_1.promisify)(this.fs, 'glob'); - this.access = (0, util_1.promisify)(this.fs, 'access'); - this.chmod = (0, util_1.promisify)(this.fs, 'chmod'); - this.chown = (0, util_1.promisify)(this.fs, 'chown'); - this.copyFile = (0, util_1.promisify)(this.fs, 'copyFile'); - this.lchmod = (0, util_1.promisify)(this.fs, 'lchmod'); - this.lchown = (0, util_1.promisify)(this.fs, 'lchown'); - this.link = (0, util_1.promisify)(this.fs, 'link'); - this.lstat = (0, util_1.promisify)(this.fs, 'lstat'); - this.mkdir = (0, util_1.promisify)(this.fs, 'mkdir'); - this.mkdtemp = (0, util_1.promisify)(this.fs, 'mkdtemp'); - this.readdir = (0, util_1.promisify)(this.fs, 'readdir'); - this.readlink = (0, util_1.promisify)(this.fs, 'readlink'); - this.realpath = (0, util_1.promisify)(this.fs, 'realpath'); - this.rename = (0, util_1.promisify)(this.fs, 'rename'); - this.rmdir = (0, util_1.promisify)(this.fs, 'rmdir'); - this.rm = (0, util_1.promisify)(this.fs, 'rm'); - this.stat = (0, util_1.promisify)(this.fs, 'stat'); - this.symlink = (0, util_1.promisify)(this.fs, 'symlink'); - this.truncate = (0, util_1.promisify)(this.fs, 'truncate'); - this.unlink = (0, util_1.promisify)(this.fs, 'unlink'); - this.utimes = (0, util_1.promisify)(this.fs, 'utimes'); - this.readFile = (id, options) => { - return (0, util_1.promisify)(this.fs, 'readFile')(id instanceof this.FileHandle ? id.fd : id, options); - }; - this.appendFile = (path, data, options) => { - return (0, util_1.promisify)(this.fs, 'appendFile')(path instanceof this.FileHandle ? path.fd : path, data, options); - }; - this.open = (path, flags = 'r', mode) => { - return (0, util_1.promisify)(this.fs, 'open', fd => new this.FileHandle(this.fs, fd))(path, flags, mode); - }; - this.writeFile = (id, data, options) => { - const dataPromise = (0, util_1.isReadableStream)(data) ? (0, util_1.streamToBuffer)(data) : Promise.resolve(data); - return dataPromise.then(data => (0, util_1.promisify)(this.fs, 'writeFile')(id instanceof this.FileHandle ? id.fd : id, data, options)); - }; - this.watch = (filename, options) => { - const watchOptions = typeof options === 'string' ? { encoding: options } : options || {}; - return new FSWatchAsyncIterator(this.fs, filename, watchOptions); - }; - } - }; - FsPromises.FsPromises = FsPromises$1; - - return FsPromises; -} - -var print = {}; - -var lib$1 = {}; - -var printTree = {}; - -var hasRequiredPrintTree; - -function requirePrintTree () { - if (hasRequiredPrintTree) return printTree; - hasRequiredPrintTree = 1; - Object.defineProperty(printTree, "__esModule", { value: true }); - printTree.printTree = void 0; - const printTree$1 = (tab = '', children) => { - let str = ''; - let last = children.length - 1; - for (; last >= 0; last--) - if (children[last]) - break; - for (let i = 0; i <= last; i++) { - const fn = children[i]; - if (!fn) - continue; - const isLast = i === last; - const child = fn(tab + (isLast ? ' ' : '│') + ' '); - const branch = child ? (isLast ? '└─' : '├─') : '│'; - str += '\n' + tab + branch + (child ? ' ' + child : ''); - } - return str; - }; - printTree.printTree = printTree$1; - return printTree; -} - -var printBinary = {}; - -var hasRequiredPrintBinary; - -function requirePrintBinary () { - if (hasRequiredPrintBinary) return printBinary; - hasRequiredPrintBinary = 1; - Object.defineProperty(printBinary, "__esModule", { value: true }); - printBinary.printBinary = void 0; - const printBinary$1 = (tab = '', children) => { - const left = children[0], right = children[1]; - let str = ''; - if (left) - str += '\n' + tab + '← ' + left(tab + ' '); - if (right) - str += '\n' + tab + '→ ' + right(tab + ' '); - return str; - }; - printBinary.printBinary = printBinary$1; - return printBinary; -} - -var printJson = {}; - -var hasRequiredPrintJson; - -function requirePrintJson () { - if (hasRequiredPrintJson) return printJson; - hasRequiredPrintJson = 1; - Object.defineProperty(printJson, "__esModule", { value: true }); - printJson.printJson = void 0; - const printJson$1 = (tab = '', json, space = 2) => (JSON.stringify(json, null, space) || 'nil').split('\n').join('\n' + tab); - printJson.printJson = printJson$1; - return printJson; -} - -var hasRequiredLib$2; - -function requireLib$2 () { - if (hasRequiredLib$2) return lib$1; - hasRequiredLib$2 = 1; - (function (exports$1) { - Object.defineProperty(exports$1, "__esModule", { value: true }); - const tslib_1 = require$$0$1; - tslib_1.__exportStar(requirePrintTree(), exports$1); - tslib_1.__exportStar(requirePrintBinary(), exports$1); - tslib_1.__exportStar(requirePrintJson(), exports$1); - } (lib$1)); - return lib$1; -} - -var util = {}; - -var hasRequiredUtil; - -function requireUtil () { - if (hasRequiredUtil) return util; - hasRequiredUtil = 1; - Object.defineProperty(util, "__esModule", { value: true }); - util.newNotAllowedError = util.newTypeMismatchError = util.newNotFoundError = util.assertCanWrite = util.assertName = util.basename = util.ctx = void 0; - /** - * Creates a new {@link NodeFsaContext}. - */ - const ctx = (partial = {}) => { - return { - separator: '/', - syncHandleAllowed: false, - mode: 'read', - ...partial, - }; - }; - util.ctx = ctx; - const basename = (path, separator) => { - if (path[path.length - 1] === separator) - path = path.slice(0, -1); - const lastSlashIndex = path.lastIndexOf(separator); - return lastSlashIndex === -1 ? path : path.slice(lastSlashIndex + 1); - }; - util.basename = basename; - const nameRegex = /^(\.{1,2})$|^(.*([\/\\]).*)$/; - const assertName = (name, method, klass) => { - const isInvalid = !name || nameRegex.test(name); - if (isInvalid) - throw new TypeError(`Failed to execute '${method}' on '${klass}': Name is not allowed.`); - }; - util.assertName = assertName; - const assertCanWrite = (mode) => { - if (mode !== 'readwrite') - throw new DOMException('The request is not allowed by the user agent or the platform in the current context.', 'NotAllowedError'); - }; - util.assertCanWrite = assertCanWrite; - const newNotFoundError = () => new DOMException('A requested file or directory could not be found at the time an operation was processed.', 'NotFoundError'); - util.newNotFoundError = newNotFoundError; - const newTypeMismatchError = () => new DOMException('The path supplied exists, but was not an entry of requested type.', 'TypeMismatchError'); - util.newTypeMismatchError = newTypeMismatchError; - const newNotAllowedError = () => new DOMException('Permission not granted.', 'NotAllowedError'); - util.newNotAllowedError = newNotAllowedError; - - return util; -} - -var hasRequiredPrint; - -function requirePrint () { - if (hasRequiredPrint) return print; - hasRequiredPrint = 1; - (function (exports$1) { - Object.defineProperty(exports$1, "__esModule", { value: true }); - exports$1.toTreeSync = void 0; - const tree_dump_1 = requireLib$2(); - const util_1 = requireUtil(); - const toTreeSync = (fs, opts = {}) => { - const separator = opts.separator || '/'; - let dir = opts.dir || separator; - if (dir[dir.length - 1] !== separator) - dir += separator; - const tab = opts.tab || ''; - const depth = opts.depth ?? 10; - const sort = opts.sort ?? true; - let subtree = ' (...)'; - if (depth > 0) { - const list = fs.readdirSync(dir, { withFileTypes: true }); - if (sort) { - list.sort((a, b) => { - if (a.isDirectory() && b.isDirectory()) { - return a.name.toString().localeCompare(b.name.toString()); - } - else if (a.isDirectory()) { - return -1; - } - else if (b.isDirectory()) { - return 1; - } - else { - return a.name.toString().localeCompare(b.name.toString()); - } - }); - } - subtree = (0, tree_dump_1.printTree)(tab, list.map(entry => tab => { - if (entry.isDirectory()) { - return (0, exports$1.toTreeSync)(fs, { dir: dir + entry.name, depth: depth - 1, tab }); - } - else if (entry.isSymbolicLink()) { - return '' + entry.name + ' → ' + fs.readlinkSync(dir + entry.name); - } - else { - return '' + entry.name; - } - })); - } - const base = (0, util_1.basename)(dir, separator) + separator; - return base + subtree; - }; - exports$1.toTreeSync = toTreeSync; - - } (print)); - return print; -} - -var options = {}; - -var hasRequiredOptions; - -function requireOptions () { - if (hasRequiredOptions) return options; - hasRequiredOptions = 1; - (function (exports$1) { - Object.defineProperty(exports$1, "__esModule", { value: true }); - exports$1.getWriteFileOptions = exports$1.writeFileDefaults = exports$1.getRealpathOptsAndCb = exports$1.getRealpathOptions = exports$1.getStatfsOptsAndCb = exports$1.getStatfsOptions = exports$1.getStatOptsAndCb = exports$1.getStatOptions = exports$1.getAppendFileOptsAndCb = exports$1.getAppendFileOpts = exports$1.getOpendirOptsAndCb = exports$1.getOpendirOptions = exports$1.getReaddirOptsAndCb = exports$1.getReaddirOptions = exports$1.getReadFileOptions = exports$1.getRmOptsAndCb = exports$1.getRmdirOptions = exports$1.getDefaultOptsAndCb = exports$1.getDefaultOpts = exports$1.optsDefaults = exports$1.getMkdirOptions = void 0; - exports$1.getOptions = getOptions; - exports$1.optsGenerator = optsGenerator; - exports$1.optsAndCbGenerator = optsAndCbGenerator; - const constants_1 = requireConstants(); - const encoding_1 = requireEncoding(); - const util_1 = requireUtil$2(); - const mkdirDefaults = { - mode: 511 /* MODE.DIR */, - recursive: false, - }; - const getMkdirOptions = (options) => { - if (typeof options === 'number') - return Object.assign({}, mkdirDefaults, { mode: options }); - return Object.assign({}, mkdirDefaults, options); - }; - exports$1.getMkdirOptions = getMkdirOptions; - const ERRSTR_OPTS = tipeof => `Expected options to be either an object or a string, but got ${tipeof} instead`; - function getOptions(defaults, options) { - let opts; - if (!options) - return defaults; - else { - const tipeof = typeof options; - switch (tipeof) { - case 'string': - opts = Object.assign({}, defaults, { encoding: options }); - break; - case 'object': - opts = Object.assign({}, defaults, options); - break; - default: - throw TypeError(ERRSTR_OPTS(tipeof)); - } - } - if (opts.encoding !== 'buffer') - (0, encoding_1.assertEncoding)(opts.encoding); - return opts; - } - function optsGenerator(defaults) { - return options => getOptions(defaults, options); - } - function optsAndCbGenerator(getOpts) { - return (options, callback) => typeof options === 'function' ? [getOpts(), options] : [getOpts(options), (0, util_1.validateCallback)(callback)]; - } - exports$1.optsDefaults = { - encoding: 'utf8', - }; - exports$1.getDefaultOpts = optsGenerator(exports$1.optsDefaults); - exports$1.getDefaultOptsAndCb = optsAndCbGenerator(exports$1.getDefaultOpts); - const rmdirDefaults = { - recursive: false, - }; - const getRmdirOptions = (options) => { - return Object.assign({}, rmdirDefaults, options); - }; - exports$1.getRmdirOptions = getRmdirOptions; - const getRmOpts = optsGenerator(exports$1.optsDefaults); - exports$1.getRmOptsAndCb = optsAndCbGenerator(getRmOpts); - const readFileOptsDefaults = { - flag: 'r', - }; - exports$1.getReadFileOptions = optsGenerator(readFileOptsDefaults); - const readdirDefaults = { - encoding: 'utf8', - recursive: false, - withFileTypes: false, - }; - exports$1.getReaddirOptions = optsGenerator(readdirDefaults); - exports$1.getReaddirOptsAndCb = optsAndCbGenerator(exports$1.getReaddirOptions); - const opendirDefaults = { - encoding: 'utf8', - bufferSize: 32, - recursive: false, - }; - exports$1.getOpendirOptions = optsGenerator(opendirDefaults); - exports$1.getOpendirOptsAndCb = optsAndCbGenerator(exports$1.getOpendirOptions); - const appendFileDefaults = { - encoding: 'utf8', - mode: 438 /* MODE.DEFAULT */, - flag: constants_1.FLAGS[constants_1.FLAGS.a], - }; - exports$1.getAppendFileOpts = optsGenerator(appendFileDefaults); - exports$1.getAppendFileOptsAndCb = optsAndCbGenerator(exports$1.getAppendFileOpts); - const statDefaults = { - bigint: false, - }; - const getStatOptions = (options = {}) => Object.assign({}, statDefaults, options); - exports$1.getStatOptions = getStatOptions; - const getStatOptsAndCb = (options, callback) => typeof options === 'function' ? [(0, exports$1.getStatOptions)(), options] : [(0, exports$1.getStatOptions)(options), (0, util_1.validateCallback)(callback)]; - exports$1.getStatOptsAndCb = getStatOptsAndCb; - const statfsDefaults = { - bigint: false, - }; - const getStatfsOptions = (options = {}) => Object.assign({}, statfsDefaults, options); - exports$1.getStatfsOptions = getStatfsOptions; - const getStatfsOptsAndCb = (options, callback) => typeof options === 'function' - ? [(0, exports$1.getStatfsOptions)(), options] - : [(0, exports$1.getStatfsOptions)(options), (0, util_1.validateCallback)(callback)]; - exports$1.getStatfsOptsAndCb = getStatfsOptsAndCb; - const realpathDefaults = exports$1.optsDefaults; - exports$1.getRealpathOptions = optsGenerator(realpathDefaults); - exports$1.getRealpathOptsAndCb = optsAndCbGenerator(exports$1.getRealpathOptions); - exports$1.writeFileDefaults = { - encoding: 'utf8', - mode: 438 /* MODE.DEFAULT */, - flag: constants_1.FLAGS[constants_1.FLAGS.w], - }; - exports$1.getWriteFileOptions = optsGenerator(exports$1.writeFileDefaults); - - } (options)); - return options; -} - -var Dir = {}; - -var hasRequiredDir; - -function requireDir () { - if (hasRequiredDir) return Dir; - hasRequiredDir = 1; - Object.defineProperty(Dir, "__esModule", { value: true }); - Dir.Dir = void 0; - const util_1 = requireUtil$2(); - const Dirent_1 = requireDirent(); - const errors = requireErrors$1(); - /** - * A directory stream, like `fs.Dir`. - */ - let Dir$1 = class Dir { - constructor(link, options) { - this.link = link; - this.options = options; - this.iteratorInfo = []; - this.closed = false; - this.operationQueue = null; - this.path = link.getPath(); - this.iteratorInfo.push(link.children[Symbol.iterator]()); - } - closeBase() { - // In a real filesystem implementation, this would close file descriptors - // For memfs, we just need to mark as closed - } - readBase(iteratorInfo) { - let done; - let value; - let name; - let link; - do { - do { - ({ done, value } = iteratorInfo[iteratorInfo.length - 1].next()); - if (!done) { - [name, link] = value; - } - else { - break; - } - } while (name === '.' || name === '..'); - if (done) { - iteratorInfo.pop(); - if (iteratorInfo.length === 0) { - break; - } - else { - done = false; - } - } - else { - if (this.options.recursive && link.children.size) { - iteratorInfo.push(link.children[Symbol.iterator]()); - } - return Dirent_1.default.build(link, this.options.encoding); - } - } while (!done); - return null; - } - close(callback) { - // Promise-based close - if (callback === undefined) { - if (this.closed) { - return Promise.reject(new errors.Error('ERR_DIR_CLOSED')); - } - return new Promise((resolve, reject) => { - this.close(err => { - if (err) - reject(err); - else - resolve(); - }); - }); - } - // Callback-based close - (0, util_1.validateCallback)(callback); - if (this.closed) { - process$1.nextTick(callback, new errors.Error('ERR_DIR_CLOSED')); - return; - } - if (this.operationQueue !== null) { - this.operationQueue.push(() => { - this.close(callback); - }); - return; - } - this.closed = true; - try { - this.closeBase(); - process$1.nextTick(callback); - } - catch (err) { - process$1.nextTick(callback, err); - } - } - closeSync() { - if (this.closed) { - throw new errors.Error('ERR_DIR_CLOSED'); - } - if (this.operationQueue !== null) { - throw new errors.Error('ERR_DIR_CONCURRENT_OPERATION'); - } - this.closed = true; - this.closeBase(); - } - read(callback) { - // Promise-based read - if (callback === undefined) { - return new Promise((resolve, reject) => { - this.read((err, result) => { - if (err) - reject(err); - else - resolve(result ?? null); - }); - }); - } - // Callback-based read - (0, util_1.validateCallback)(callback); - if (this.closed) { - process$1.nextTick(callback, new errors.Error('ERR_DIR_CLOSED')); - return; - } - if (this.operationQueue !== null) { - this.operationQueue.push(() => { - this.read(callback); - }); - return; - } - this.operationQueue = []; - try { - const result = this.readBase(this.iteratorInfo); - process$1.nextTick(() => { - const queue = this.operationQueue; - this.operationQueue = null; - for (const op of queue) - op(); - callback(null, result); - }); - } - catch (err) { - process$1.nextTick(() => { - const queue = this.operationQueue; - this.operationQueue = null; - for (const op of queue) - op(); - callback(err); - }); - } - } - readSync() { - if (this.closed) { - throw new errors.Error('ERR_DIR_CLOSED'); - } - if (this.operationQueue !== null) { - throw new errors.Error('ERR_DIR_CONCURRENT_OPERATION'); - } - return this.readBase(this.iteratorInfo); - } - [Symbol.asyncIterator]() { - return { - next: async () => { - try { - const dirEnt = await this.read(); - if (dirEnt !== null) { - return { done: false, value: dirEnt }; - } - else { - return { done: true, value: undefined }; - } - } - catch (err) { - throw err; - } - }, - [Symbol.asyncIterator]() { - return this; - }, - }; - } - }; - Dir.Dir = Dir$1; - - return Dir; -} - -var glob = {}; - -var lib = {}; - -var hasRequiredLib$1; - -function requireLib$1 () { - if (hasRequiredLib$1) return lib; - hasRequiredLib$1 = 1; - (function (exports$1) { - Object.defineProperty(exports$1, "__esModule", { value: true }); - exports$1.toMatcher = exports$1.toRegex = void 0; - const escapeRe = (ch) => (/[.^$+{}()|\\]/.test(ch) ? `\\${ch}` : ch); - /** - * Parse an extended glob pattern like ?(a|b|c) - * Returns the regex string equivalent and the new index position - */ - const parseExtGlob = (pattern, startIdx, prefix, options) => { - let i = startIdx; // startIdx should be pointing at the character after '(' - const parts = []; - let cur = ''; - let depth = 1; // Track parenthesis depth for nested patterns - while (i < pattern.length && depth > 0) { - const ch = pattern[i]; - if (ch === '(') { - depth++; - cur += ch; - i++; - } - else if (ch === ')') { - depth--; - if (depth === 0) { - // Found the closing parenthesis - parts.push(cur); - i++; // consume ')' - break; - } - else { - cur += ch; - i++; - } - } - else if (ch === '|' && depth === 1) { - // Pipe separator at top level of this extglob - parts.push(cur); - cur = ''; - i++; - } - else { - cur += ch; - i++; - } - } - if (depth !== 0) - return; // Unclosed parenthesis - let alternatives = ''; - const length = parts.length; - for (let j = 0; j < length; j++) - alternatives += (alternatives ? '|' : '') + (0, exports$1.toRegex)(parts[j], options).source.replace(/^\^/, '').replace(/\$$/, ''); - switch (prefix) { - case '?': // zero or one - return [`(?:${alternatives})?`, i]; - case '*': // zero or more - return [`(?:${alternatives})*`, i]; - case '+': // one or more - return [`(?:${alternatives})+`, i]; - case '@': // exactly one - return [`(?:${alternatives})`, i]; - case '!': // none of (negative match) - // For negation, we need to match anything that doesn't match the pattern - // Use negative lookahead without consuming characters after - return [`(?!${alternatives})[^/]*`, i]; - } - return; - }; - /** - * Convert a glob pattern to a regular expression - * - * Supports: - * - `/` to separate path segments - * - `*` to match zero or more characters in a path segment - * - `?` to match one character in a path segment - * - `**` to match any number of path segments, including none - * - `{}` to group conditions (e.g. `{html,txt}`) - * - `[abc]`, `[a-z]`, `[!a-z]`, `[!abc]` character classes - * - Extended globbing (when `extglob: true` option is set): - * - `?(pattern-list)` zero or one occurrence - * - `*(pattern-list)` zero or more occurrences - * - `+(pattern-list)` one or more occurrences - * - `@(pattern-list)` exactly one of the patterns - * - `!(pattern-list)` anything except the patterns - */ - const toRegex = (pattern, options) => { - let regexStr = ''; - let i = 0; - // Helper to parse a brace group like {a,b,c}. No nesting support. - const parseBraceGroup = () => { - // Assume current char is '{' - i++; // skip '{' - const parts = []; - let cur = ''; - let closed = false; - while (i < pattern.length) { - const ch = pattern[i]; - if (ch === '}') { - parts.push(cur); - i++; // consume '}' - closed = true; - break; - } - if (ch === ',') { - parts.push(cur); - cur = ''; - i++; - continue; - } - cur += ch; - i++; - } - if (!closed) { - // treat as literal '{...' - return '\\{' + escapeRe(cur); - } - // Convert each part recursively to support globs inside braces - const alt = parts.map((p) => (0, exports$1.toRegex)(p, options).source.replace(/^\^/, '').replace(/\$$/, '')).join('|'); - return `(?:${alt})`; - }; - const extglob = !!options?.extglob; - while (i < pattern.length) { - const char = pattern[i]; - // Check for extended glob patterns when extglob is enabled - if (extglob && pattern[i + 1] === '(') { - if (char === '?' || char === '*' || char === '+' || char === '@' || char === '!') { - const result = parseExtGlob(pattern, i + 2, char, options); - if (result) { - regexStr += result[0]; - i = result[1]; - continue; - } - // If parse failed, fall through to normal handling - } - } - switch (char) { - case '*': { - // Check for double star ** - if (pattern[i + 1] === '*') { - // Collapse consecutive * beyond two (e.g., *** -> **) - let j = i + 2; - while (pattern[j] === '*') - j++; - // If followed by a slash, make it optional to allow zero segments - if (pattern[j] === '/') { - regexStr += '(?:.*/)?'; - i = j + 1; // consume **/ - } - else { - regexStr += '.*'; - i = j; // consume ** - } - } - else { - regexStr += '[^/]*'; - i++; - } - break; - } - case '?': - regexStr += '[^/]'; - i++; - break; - case '[': { - // Copy character class as-is with support for leading '!' - let cls = '['; - i++; - if (i < pattern.length && pattern[i] === '!') { - cls += '^'; - i++; - } - // if first after [ or [^ is ']' include it literally - if (i < pattern.length && pattern[i] === ']') { - cls += ']'; - i++; - } - while (i < pattern.length && pattern[i] !== ']') { - const ch = pattern[i]; - // Escape backslash inside class - cls += ch === '\\' ? '\\\\' : ch; - i++; - } - if (i < pattern.length && pattern[i] === ']') { - cls += ']'; - i++; - } - else { - // Unclosed class -> treat '[' literally - regexStr += '\\['; - continue; - } - regexStr += cls; - break; - } - case '{': { - regexStr += parseBraceGroup(); - break; - } - case '/': - regexStr += '/'; - i++; - break; - case '.': - case '^': - case '$': - case '+': - case '(': - case ')': - case '|': - case '\\': - regexStr += `\\${char}`; - i++; - break; - default: - regexStr += char; - i++; - break; - } - } - const flags = options?.nocase ? 'i' : ''; - return new RegExp('^' + regexStr + '$', flags); - }; - exports$1.toRegex = toRegex; - const isRegExp = /^\/(.{1,4096})\/([gimsuy]{0,6})$/; - const toMatcher = (pattern, options) => { - const regexes = []; - const patterns = Array.isArray(pattern) ? pattern : [pattern]; - for (const pat of patterns) { - if (typeof pat === 'string') { - const match = isRegExp.exec(pat); - if (match) { - const [, expr, flags] = match; - regexes.push(new RegExp(expr, flags)); - } - else { - regexes.push((0, exports$1.toRegex)(pat, options)); - } - } - else { - regexes.push(pat); - } - } - return regexes.length - ? new Function('p', 'return ' + regexes.map((r) => r + '.test(p)').join('||')) - : () => false; - }; - exports$1.toMatcher = toMatcher; - } (lib)); - return lib; -} - -var hasRequiredGlob; - -function requireGlob () { - if (hasRequiredGlob) return glob; - hasRequiredGlob = 1; - Object.defineProperty(glob, "__esModule", { value: true }); - glob.globSync = globSync; - const path_1 = requirePath(); - const glob_to_regex_js_1 = requireLib$1(); - const util_1 = requireUtil$2(); - const pathJoin = path_1.posix.join; - const pathRelative = path_1.posix.relative; - const pathResolve = path_1.posix.resolve; - /** - * Check if a path matches a glob pattern - */ - function matchesPattern(path, pattern) { - const regex = (0, glob_to_regex_js_1.toRegex)(pattern); - return regex.test(path); - } - /** - * Check if a path should be excluded based on exclude patterns - */ - function isExcluded(path, exclude) { - if (!exclude) - return false; - if (typeof exclude === 'function') { - return exclude(path); - } - const patterns = Array.isArray(exclude) ? exclude : [exclude]; - return patterns.some(pattern => matchesPattern(path, pattern)); - } - /** - * Walk directory tree and collect matching paths - */ - function walkDirectory(fs, dir, patterns, options, currentDepth = 0) { - const results = []; - const maxDepth = options.maxdepth ?? Infinity; - const baseCwd = options.cwd ? (0, util_1.pathToFilename)(options.cwd) : process$1.cwd(); - if (currentDepth > maxDepth) { - return results; - } - try { - const entries = fs.readdirSync(dir, { withFileTypes: true }); - for (const entry of entries) { - const fullPath = pathJoin(dir, entry.name.toString()); - const relativePath = pathRelative(baseCwd, fullPath); - // Skip if excluded - if (isExcluded(relativePath, options.exclude)) { - continue; - } - // Check if this path matches any pattern - const matches = patterns.some(pattern => matchesPattern(relativePath, pattern)); - if (matches) { - results.push(relativePath); - } - // Recurse into directories - if (entry.isDirectory() && currentDepth < maxDepth) { - const subResults = walkDirectory(fs, fullPath, patterns, options, currentDepth + 1); - results.push(...subResults); - } - } - } - catch (err) { - // Skip directories we can't read - } - return results; - } - /** - * Main glob implementation - */ - function globSync(fs, pattern, options = {}) { - const cwd = options.cwd ? (0, util_1.pathToFilename)(options.cwd) : process$1.cwd(); - const resolvedCwd = pathResolve(cwd); - const globOptions = { - cwd: resolvedCwd, - exclude: options.exclude, - maxdepth: options.maxdepth, - withFileTypes: options.withFileTypes || false, - }; - let results = []; - // Handle absolute patterns - if (path_1.posix.isAbsolute(pattern)) { - const dir = path_1.posix.dirname(pattern); - const patternBasename = path_1.posix.basename(pattern); - const dirResults = walkDirectory(fs, dir, [patternBasename], { ...globOptions, cwd: dir }); - results.push(...dirResults.map(r => path_1.posix.resolve(dir, r))); - } - else { - // Handle relative patterns - const dirResults = walkDirectory(fs, resolvedCwd, [pattern], globOptions); - results.push(...dirResults); - } - // Remove duplicates and sort - results = [...new Set(results)].sort(); - return results; - } - - return glob; -} - -var hasRequiredVolume; - -function requireVolume () { - if (hasRequiredVolume) return volume; - hasRequiredVolume = 1; - Object.defineProperty(volume, "__esModule", { value: true }); - volume.FSWatcher = volume.StatWatcher = volume.Volume = void 0; - volume.pathToSteps = pathToSteps; - volume.dataToStr = dataToStr; - volume.toUnixTimestamp = toUnixTimestamp; - const path_1 = requirePath(); - const core_1 = requireCore(); - const Stats_1 = requireStats(); - const Dirent_1 = requireDirent(); - const StatFs_1 = requireStatFs(); - const buffer_1 = requireBuffer(); - const queueMicrotask_1 = requireQueueMicrotask(); - const setTimeoutUnref_1 = requireSetTimeoutUnref(); - const stream_1 = requireStream(); - const constants_1 = requireConstants$1(); - const events_1 = requireEvents(); - const encoding_1 = requireEncoding(); - const FileHandle_1 = requireFileHandle(); - const util_1 = requireUtil$4(); - const FsPromises_1 = requireFsPromises(); - const print_1 = requirePrint(); - const constants_2 = requireConstants(); - const errors = requireErrors$1(); - const options_1 = requireOptions(); - const util_2 = requireUtil$2(); - const Dir_1 = requireDir(); - const util_3 = requireUtil$3(); - const resolveCrossPlatform = path_1.resolve; - const { O_SYMLINK, F_OK, R_OK, W_OK, X_OK, COPYFILE_EXCL, COPYFILE_FICLONE_FORCE } = constants_1.constants; - path_1.posix ? path_1.posix.sep : path_1.sep; - const pathRelative = path_1.posix ? path_1.posix.relative : path_1.relative; - const pathJoin = path_1.posix ? path_1.posix.join : path_1.join; - const pathDirname = path_1.posix ? path_1.posix.dirname : path_1.dirname; - const pathNormalize = path_1.posix ? path_1.posix.normalize : path_1.normalize; - // ---------------------------------------- Constants - const kMinPoolSpace = 128; - // ---------------------------------------- Utility functions - function pathToSteps(path) { - return (0, util_3.filenameToSteps)((0, util_2.pathToFilename)(path)); - } - function dataToStr(data, encoding = encoding_1.ENCODING_UTF8) { - if (buffer_1.Buffer.isBuffer(data)) - return data.toString(encoding); - else if (data instanceof Uint8Array) - return (0, buffer_1.bufferFrom)(data).toString(encoding); - else - return String(data); - } - // converts Date or number to a fractional UNIX timestamp - function toUnixTimestamp(time) { - // tslint:disable-next-line triple-equals - if (typeof time === 'string' && +time == time) { - return +time; - } - if (time instanceof Date) { - return time.getTime() / 1000; - } - if (isFinite(time)) { - if (time < 0) { - return Date.now() / 1000; - } - return time; - } - throw new Error('Cannot parse time: ' + time); - } - function validateUid(uid) { - if (typeof uid !== 'number') - throw TypeError(constants_2.ERRSTR.UID); - } - function validateGid(gid) { - if (typeof gid !== 'number') - throw TypeError(constants_2.ERRSTR.GID); - } - /** - * `Volume` represents a file system. - */ - class Volume { - get promises() { - if (this.promisesApi === null) - throw new Error('Promise is not supported in this environment.'); - return this.promisesApi; - } - constructor(_core = new core_1.Superblock()) { - this._core = _core; - this.promisesApi = new FsPromises_1.FsPromises(this, FileHandle_1.FileHandle); - this.openSync = (path, flags, mode = 438 /* MODE.DEFAULT */) => { - // Validate (1) mode; (2) path; (3) flags - in that order. - const modeNum = (0, util_2.modeToNumber)(mode); - const fileName = (0, util_2.pathToFilename)(path); - const flagsNum = (0, util_2.flagsToNumber)(flags); - return this._core.open(fileName, flagsNum, modeNum, !(flagsNum & O_SYMLINK)); - }; - this.open = (path, flags, a, b) => { - let mode = a; - let callback = b; - if (typeof a === 'function') { - mode = 438 /* MODE.DEFAULT */; - callback = a; - } - mode = mode || 438 /* MODE.DEFAULT */; - const modeNum = (0, util_2.modeToNumber)(mode); - const fileName = (0, util_2.pathToFilename)(path); - const flagsNum = (0, util_2.flagsToNumber)(flags); - this.wrapAsync(this._core.open, [fileName, flagsNum, modeNum, !(flagsNum & O_SYMLINK)], callback); - }; - this.closeSync = (fd) => { - this._core.close(fd); - }; - this.close = (fd, callback) => { - (0, util_3.validateFd)(fd); - const file = this._core.getFileByFdOrThrow(fd, 'close'); - this.wrapAsync(this._core.close, [file.fd], callback); - }; - this.readSync = (fd, buffer, offset, length, position) => { - (0, util_3.validateFd)(fd); - return this._core.read(fd, buffer, offset, length, position); - }; - this.read = (fd, buffer, offset, length, position, callback) => { - (0, util_2.validateCallback)(callback); - if (length === 0) { - // This `if` branch is from Node.js - return (0, queueMicrotask_1.default)(() => { - if (callback) - callback(null, 0, buffer); - }); - } - Promise.resolve().then(() => { - try { - const bytes = this._core.read(fd, buffer, offset, length, position); - callback(null, bytes, buffer); - } - catch (err) { - callback(err); - } - }); - }; - this.readv = (fd, buffers, a, b) => { - let position = a; - let callback = b; - if (typeof a === 'function') - [position, callback] = [null, a]; - (0, util_2.validateCallback)(callback); - Promise.resolve().then(() => { - try { - const bytes = this._core.readv(fd, buffers, position); - callback(null, bytes, buffers); - } - catch (err) { - callback(err); - } - }); - }; - this.readvSync = (fd, buffers, position) => { - (0, util_3.validateFd)(fd); - return this._core.readv(fd, buffers, position ?? null); - }; - this._readfile = (id, flagsNum, encoding) => { - let result; - const isUserFd = typeof id === 'number'; - const userOwnsFd = isUserFd && (0, util_3.isFd)(id); - let fd; - if (userOwnsFd) - fd = id; - else { - const filename = (0, util_2.pathToFilename)(id); - // Check if original path had trailing slash (indicates directory intent) - const originalPath = String(id); - const hasTrailingSlash = originalPath.length > 1 && originalPath.endsWith('/'); - const link = this._core.getResolvedLinkOrThrow(filename, 'open'); - const node = link.getNode(); - if (node.isDirectory()) - throw (0, util_2.createError)("EISDIR" /* ERROR_CODE.EISDIR */, 'open', link.getPath()); - // If path had trailing slash but resolved to a file, throw ENOTDIR - if (hasTrailingSlash && node.isFile()) { - throw (0, util_2.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'open', originalPath); - } - fd = this.openSync(id, flagsNum); - } - try { - result = (0, util_2.bufferToEncoding)(this._core.getFileByFdOrThrow(fd).getBuffer(), encoding); - } - finally { - if (!userOwnsFd) { - this.closeSync(fd); - } - } - return result; - }; - this.readFileSync = (file, options) => { - const opts = (0, options_1.getReadFileOptions)(options); - const flagsNum = (0, util_2.flagsToNumber)(opts.flag); - return this._readfile(file, flagsNum, opts.encoding); - }; - this.readFile = (id, a, b) => { - const [opts, callback] = (0, options_1.optsAndCbGenerator)(options_1.getReadFileOptions)(a, b); - const flagsNum = (0, util_2.flagsToNumber)(opts.flag); - this.wrapAsync(this._readfile, [id, flagsNum, opts.encoding], callback); - }; - this.writeSync = (fd, a, b, c, d) => { - const [, buf, offset, length, position] = (0, util_2.getWriteSyncArgs)(fd, a, b, c, d); - return this._write(fd, buf, offset, length, position); - }; - this.write = (fd, a, b, c, d, e) => { - const [, asStr, buf, offset, length, position, cb] = (0, util_2.getWriteArgs)(fd, a, b, c, d, e); - Promise.resolve().then(() => { - try { - const bytes = this._write(fd, buf, offset, length, position); - if (!asStr) { - cb(null, bytes, buf); - } - else { - cb(null, bytes, a); - } - } - catch (err) { - cb(err); - } - }); - }; - this.writev = (fd, buffers, a, b) => { - let position = a; - let callback = b; - if (typeof a === 'function') - [position, callback] = [null, a]; - (0, util_2.validateCallback)(callback); - Promise.resolve().then(() => { - try { - const bytes = this.writevBase(fd, buffers, position); - callback(null, bytes, buffers); - } - catch (err) { - callback(err); - } - }); - }; - this.writevSync = (fd, buffers, position) => { - (0, util_3.validateFd)(fd); - return this.writevBase(fd, buffers, position ?? null); - }; - this.writeFileSync = (id, data, options) => { - const opts = (0, options_1.getWriteFileOptions)(options); - const flagsNum = (0, util_2.flagsToNumber)(opts.flag); - const modeNum = (0, util_2.modeToNumber)(opts.mode); - const buf = (0, util_3.dataToBuffer)(data, opts.encoding); - this._core.writeFile(id, buf, flagsNum, modeNum); - }; - this.writeFile = (id, data, a, b) => { - let options = a; - let callback = b; - if (typeof a === 'function') - [options, callback] = [options_1.writeFileDefaults, a]; - const cb = (0, util_2.validateCallback)(callback); - const opts = (0, options_1.getWriteFileOptions)(options); - const flagsNum = (0, util_2.flagsToNumber)(opts.flag); - const modeNum = (0, util_2.modeToNumber)(opts.mode); - const buf = (0, util_3.dataToBuffer)(data, opts.encoding); - this.wrapAsync(this._core.writeFile, [id, buf, flagsNum, modeNum], cb); - }; - this.copyFileSync = (src, dest, flags) => { - const srcFilename = (0, util_2.pathToFilename)(src); - const destFilename = (0, util_2.pathToFilename)(dest); - return this._copyFile(srcFilename, destFilename, (flags || 0) | 0); - }; - this.copyFile = (src, dest, a, b) => { - const srcFilename = (0, util_2.pathToFilename)(src); - const destFilename = (0, util_2.pathToFilename)(dest); - let flags; - let callback; - if (typeof a === 'function') - [flags, callback] = [0, a]; - else - [flags, callback] = [a, b]; - (0, util_2.validateCallback)(callback); - this.wrapAsync(this._copyFile, [srcFilename, destFilename, flags], callback); - }; - this._cp = (src, dest, options) => { - if (options.filter && !options.filter(src, dest)) - return; - const srcStat = options.dereference ? this.statSync(src) : this.lstatSync(src); - let destStat = null; - try { - destStat = this.lstatSync(dest); - } - catch (err) { - if (err.code !== 'ENOENT') { - throw err; - } - } - // Check if src and dest are the same (both exist and have same inode) - if (destStat && srcStat.ino === destStat.ino && srcStat.dev === destStat.dev) - throw (0, util_2.createError)("EINVAL" /* ERROR_CODE.EINVAL */, 'cp', src, dest); - // Check type compatibility - if (destStat) { - if (srcStat.isDirectory() && !destStat.isDirectory()) - throw (0, util_2.createError)("EISDIR" /* ERROR_CODE.EISDIR */, 'cp', src, dest); - if (!srcStat.isDirectory() && destStat.isDirectory()) - throw (0, util_2.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'cp', src, dest); - } - // Check if trying to copy directory to subdirectory of itself - if (srcStat.isDirectory() && this.isSrcSubdir(src, dest)) - throw (0, util_2.createError)("EINVAL" /* ERROR_CODE.EINVAL */, 'cp', src, dest); - { - const parent = pathDirname(dest); - if (!this.existsSync(parent)) - this.mkdirSync(parent, { recursive: true }); - } - // Handle different file types - if (srcStat.isDirectory()) { - if (!options.recursive) - throw (0, util_2.createError)("EISDIR" /* ERROR_CODE.EISDIR */, 'cp', src); - this.cpDirSync(srcStat, destStat, src, dest, options); - } - else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) { - this.cpFileSync(srcStat, destStat, src, dest, options); - } - else if (srcStat.isSymbolicLink() && !options.dereference) { - // Only handle as symlink if not dereferencing - this.cpSymlinkSync(destStat, src, dest, options); - } - else { - throw (0, util_2.createError)("EINVAL" /* ERROR_CODE.EINVAL */, 'cp', src); - } - }; - this.linkSync = (existingPath, newPath) => { - const existingPathFilename = (0, util_2.pathToFilename)(existingPath); - const newPathFilename = (0, util_2.pathToFilename)(newPath); - this._core.link(existingPathFilename, newPathFilename); - }; - this.link = (existingPath, newPath, callback) => { - const existingPathFilename = (0, util_2.pathToFilename)(existingPath); - const newPathFilename = (0, util_2.pathToFilename)(newPath); - this.wrapAsync(this._core.link, [existingPathFilename, newPathFilename], callback); - }; - this.unlinkSync = (path) => { - const filename = (0, util_2.pathToFilename)(path); - this._core.unlink(filename); - }; - this.unlink = (path, callback) => { - const filename = (0, util_2.pathToFilename)(path); - this.wrapAsync(this._core.unlink, [filename], callback); - }; - /** - * `type` argument works only on Windows. - * @param target - * @param path - * @param type - */ - this.symlinkSync = (target, path, type) => { - const targetFilename = (0, util_2.pathToFilename)(target); - const pathFilename = (0, util_2.pathToFilename)(path); - this._core.symlink(targetFilename, pathFilename); - }; - this.symlink = (target, path, a, b) => { - const callback = (0, util_2.validateCallback)(typeof a === 'function' ? a : b); - const targetFilename = (0, util_2.pathToFilename)(target); - const pathFilename = (0, util_2.pathToFilename)(path); - this.wrapAsync(this._core.symlink, [targetFilename, pathFilename], callback); - }; - this._lstat = (filename, bigint = false, throwIfNoEntry = false) => { - let link; - try { - link = this._core.getLinkOrThrow(filename, 'lstat'); - } - catch (err) { - if (err.code === "ENOENT" /* ERROR_CODE.ENOENT */ && !throwIfNoEntry) - return undefined; - else - throw err; - } - return Stats_1.default.build(link.getNode(), bigint); - }; - this.lstatSync = (path, options) => { - const { throwIfNoEntry = true, bigint = false } = (0, options_1.getStatOptions)(options); - return this._lstat((0, util_2.pathToFilename)(path), bigint, throwIfNoEntry); - }; - this.renameSync = (oldPath, newPath) => { - const oldPathFilename = (0, util_2.pathToFilename)(oldPath); - const newPathFilename = (0, util_2.pathToFilename)(newPath); - this._core.rename(oldPathFilename, newPathFilename); - }; - this.rename = (oldPath, newPath, callback) => { - const oldPathFilename = (0, util_2.pathToFilename)(oldPath); - const newPathFilename = (0, util_2.pathToFilename)(newPath); - this.wrapAsync(this._core.rename, [oldPathFilename, newPathFilename], callback); - }; - this.existsSync = (path) => { - try { - return this._exists((0, util_2.pathToFilename)(path)); - } - catch (err) { - return false; - } - }; - this.exists = (path, callback) => { - const filename = (0, util_2.pathToFilename)(path); - if (typeof callback !== 'function') - throw Error(constants_2.ERRSTR.CB); - Promise.resolve().then(() => { - try { - callback(this._exists(filename)); - } - catch (err) { - callback(false); - } - }); - }; - this.accessSync = (path, mode = F_OK) => { - const filename = (0, util_2.pathToFilename)(path); - mode = mode | 0; - this._access(filename, mode); - }; - this.access = (path, a, b) => { - let mode = F_OK; - let callback; - if (typeof a !== 'function') - [mode, callback] = [a | 0, (0, util_2.validateCallback)(b)]; - else - callback = a; - const filename = (0, util_2.pathToFilename)(path); - this.wrapAsync(this._access, [filename, mode], callback); - }; - this.appendFileSync = (id, data, options) => { - const opts = (0, options_1.getAppendFileOpts)(options); - // Force append behavior when using a supplied file descriptor. - if (!opts.flag || (0, util_3.isFd)(id)) - opts.flag = 'a'; - this.writeFileSync(id, data, opts); - }; - this.appendFile = (id, data, a, b) => { - const [opts, callback] = (0, options_1.getAppendFileOptsAndCb)(a, b); - // Force append behavior when using a supplied file descriptor. - if (!opts.flag || (0, util_3.isFd)(id)) - opts.flag = 'a'; - this.writeFile(id, data, opts, callback); - }; - this._readdir = (filename, options) => { - (0, util_3.filenameToSteps)(filename); - const link = this._core.getResolvedLinkOrThrow(filename, 'scandir'); - const node = link.getNode(); - if (!node.isDirectory()) - throw (0, util_2.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'scandir', filename); - // Check we have permissions - if (!node.canRead()) - throw (0, util_2.createError)("EACCES" /* ERROR_CODE.EACCES */, 'scandir', filename); - const list = []; // output list - for (const name of link.children.keys()) { - const child = link.getChild(name); - if (!child || name === '.' || name === '..') - continue; - list.push(Dirent_1.default.build(child, options.encoding)); - // recursion - if (options.recursive && child.children.size) { - const recurseOptions = { ...options, recursive: true, withFileTypes: true }; - const childList = this._readdir(child.getPath(), recurseOptions); - list.push(...childList); - } - } - if (!util_3.isWin && options.encoding !== 'buffer') - list.sort((a, b) => { - if (a.name < b.name) - return -1; - if (a.name > b.name) - return 1; - return 0; - }); - if (options.withFileTypes) - return list; - let filename2 = filename; - if (util_3.isWin) - filename2 = filename2.replace(/\\/g, '/'); - return list.map(dirent => { - if (options.recursive) { - let fullPath = pathJoin(dirent.parentPath, dirent.name.toString()); - if (util_3.isWin) { - fullPath = fullPath.replace(/\\/g, '/'); - } - return fullPath.replace(filename2 + path_1.posix.sep, ''); - } - return dirent.name; - }); - }; - this.readdirSync = (path, options) => { - const opts = (0, options_1.getReaddirOptions)(options); - const filename = (0, util_2.pathToFilename)(path); - return this._readdir(filename, opts); - }; - this.readdir = (path, a, b) => { - const [options, callback] = (0, options_1.getReaddirOptsAndCb)(a, b); - const filename = (0, util_2.pathToFilename)(path); - this.wrapAsync(this._readdir, [filename, options], callback); - }; - this._readlink = (filename, encoding) => { - const link = this._core.getLinkOrThrow(filename, 'readlink'); - const node = link.getNode(); - if (!node.isSymlink()) - throw (0, util_2.createError)("EINVAL" /* ERROR_CODE.EINVAL */, 'readlink', filename); - return (0, encoding_1.strToEncoding)(node.symlink, encoding); - }; - this.readlinkSync = (path, options) => { - const opts = (0, options_1.getDefaultOpts)(options); - const filename = (0, util_2.pathToFilename)(path); - return this._readlink(filename, opts.encoding); - }; - this.readlink = (path, a, b) => { - const [opts, callback] = (0, options_1.getDefaultOptsAndCb)(a, b); - const filename = (0, util_2.pathToFilename)(path); - this.wrapAsync(this._readlink, [filename, opts.encoding], callback); - }; - this._fsync = (fd) => { - this._core.getFileByFdOrThrow(fd, 'fsync'); - }; - this.fsyncSync = (fd) => { - this._fsync(fd); - }; - this.fsync = (fd, callback) => { - this.wrapAsync(this._fsync, [fd], callback); - }; - this._fdatasync = (fd) => { - this._core.getFileByFdOrThrow(fd, 'fdatasync'); - }; - this.fdatasyncSync = (fd) => { - this._fdatasync(fd); - }; - this.fdatasync = (fd, callback) => { - this.wrapAsync(this._fdatasync, [fd], callback); - }; - this._ftruncate = (fd, len) => { - const file = this._core.getFileByFdOrThrow(fd, 'ftruncate'); - file.truncate(len); - }; - this.ftruncateSync = (fd, len) => { - this._ftruncate(fd, len); - }; - this.ftruncate = (fd, a, b) => { - const len = typeof a === 'number' ? a : 0; - const callback = (0, util_2.validateCallback)(typeof a === 'number' ? b : a); - this.wrapAsync(this._ftruncate, [fd, len], callback); - }; - this._truncate = (path, len) => { - const fd = this.openSync(path, 'r+'); - try { - this.ftruncateSync(fd, len); - } - finally { - this.closeSync(fd); - } - }; - /** - * `id` should be a file descriptor or a path. `id` as file descriptor will - * not be supported soon. - */ - this.truncateSync = (id, len) => { - if ((0, util_3.isFd)(id)) - return this.ftruncateSync(id, len); - this._truncate(id, len); - }; - this.truncate = (id, a, b) => { - const len = typeof a === 'number' ? a : 0; - const callback = (0, util_2.validateCallback)(typeof a === 'number' ? b : a); - if ((0, util_3.isFd)(id)) - return this.ftruncate(id, len, callback); - this.wrapAsync(this._truncate, [id, len], callback); - }; - this._futimes = (fd, atime, mtime) => { - const file = this._core.getFileByFdOrThrow(fd, 'futimes'); - const node = file.node; - node.atime = new Date(atime * 1000); - node.mtime = new Date(mtime * 1000); - }; - this.futimesSync = (fd, atime, mtime) => { - this._futimes(fd, toUnixTimestamp(atime), toUnixTimestamp(mtime)); - }; - this.futimes = (fd, atime, mtime, callback) => { - this.wrapAsync(this._futimes, [fd, toUnixTimestamp(atime), toUnixTimestamp(mtime)], callback); - }; - this._utimes = (filename, atime, mtime, followSymlinks = true) => { - const core = this._core; - const link = followSymlinks - ? core.getResolvedLinkOrThrow(filename, 'utimes') - : core.getLinkOrThrow(filename, 'lutimes'); - const node = link.getNode(); - node.atime = new Date(atime * 1000); - node.mtime = new Date(mtime * 1000); - }; - this.utimesSync = (path, atime, mtime) => { - this._utimes((0, util_2.pathToFilename)(path), toUnixTimestamp(atime), toUnixTimestamp(mtime), true); - }; - this.utimes = (path, atime, mtime, callback) => { - this.wrapAsync(this._utimes, [(0, util_2.pathToFilename)(path), toUnixTimestamp(atime), toUnixTimestamp(mtime), true], callback); - }; - this.lutimesSync = (path, atime, mtime) => { - this._utimes((0, util_2.pathToFilename)(path), toUnixTimestamp(atime), toUnixTimestamp(mtime), false); - }; - this.lutimes = (path, atime, mtime, callback) => { - this.wrapAsync(this._utimes, [(0, util_2.pathToFilename)(path), toUnixTimestamp(atime), toUnixTimestamp(mtime), false], callback); - }; - this.mkdirSync = (path, options) => { - const opts = (0, options_1.getMkdirOptions)(options); - const modeNum = (0, util_2.modeToNumber)(opts.mode, 0o777); - const filename = (0, util_2.pathToFilename)(path); - if (opts.recursive) - return this._core.mkdirp(filename, modeNum); - this._core.mkdir(filename, modeNum); - }; - this.mkdir = (path, a, b) => { - const opts = (0, options_1.getMkdirOptions)(a); - const callback = (0, util_2.validateCallback)(typeof a === 'function' ? a : b); - const modeNum = (0, util_2.modeToNumber)(opts.mode, 0o777); - const filename = (0, util_2.pathToFilename)(path); - if (opts.recursive) - this.wrapAsync(this._core.mkdirp, [filename, modeNum], callback); - else - this.wrapAsync(this._core.mkdir, [filename, modeNum], callback); - }; - this._mkdtemp = (prefix, encoding, retry = 5) => { - const filename = prefix + (0, util_2.genRndStr6)(); - try { - this._core.mkdir(filename, 511 /* MODE.DIR */); - return (0, encoding_1.strToEncoding)(filename, encoding); - } - catch (err) { - if (err.code === "EEXIST" /* ERROR_CODE.EEXIST */) { - if (retry > 1) - return this._mkdtemp(prefix, encoding, retry - 1); - else - throw Error('Could not create temp dir.'); - } - else - throw err; - } - }; - this.mkdtempSync = (prefix, options) => { - const { encoding } = (0, options_1.getDefaultOpts)(options); - if (!prefix || typeof prefix !== 'string') - throw new TypeError('filename prefix is required'); - (0, util_2.nullCheck)(prefix); - return this._mkdtemp(prefix, encoding); - }; - this.mkdtemp = (prefix, a, b) => { - const [{ encoding }, callback] = (0, options_1.getDefaultOptsAndCb)(a, b); - if (!prefix || typeof prefix !== 'string') - throw new TypeError('filename prefix is required'); - if (!(0, util_2.nullCheck)(prefix)) - return; - this.wrapAsync(this._mkdtemp, [prefix, encoding], callback); - }; - this.rmdirSync = (path, options) => { - const opts = (0, options_1.getRmdirOptions)(options); - this._core.rmdir((0, util_2.pathToFilename)(path), opts.recursive); - }; - this.rmdir = (path, a, b) => { - const opts = (0, options_1.getRmdirOptions)(a); - const callback = (0, util_2.validateCallback)(typeof a === 'function' ? a : b); - this.wrapAsync(this._core.rmdir, [(0, util_2.pathToFilename)(path), opts.recursive], callback); - }; - this.rmSync = (path, options) => { - this._core.rm((0, util_2.pathToFilename)(path), options?.force, options?.recursive); - }; - this.rm = (path, a, b) => { - const [opts, callback] = (0, options_1.getRmOptsAndCb)(a, b); - this.wrapAsync(this._core.rm, [(0, util_2.pathToFilename)(path), opts?.force, opts?.recursive], callback); - }; - this._fchmod = (fd, modeNum) => { - const file = this._core.getFileByFdOrThrow(fd, 'fchmod'); - file.chmod(modeNum); - }; - this.fchmodSync = (fd, mode) => { - this._fchmod(fd, (0, util_2.modeToNumber)(mode)); - }; - this.fchmod = (fd, mode, callback) => { - this.wrapAsync(this._fchmod, [fd, (0, util_2.modeToNumber)(mode)], callback); - }; - this._chmod = (filename, modeNum, followSymlinks = true) => { - const link = followSymlinks - ? this._core.getResolvedLinkOrThrow(filename, 'chmod') - : this._core.getLinkOrThrow(filename, 'chmod'); - const node = link.getNode(); - node.chmod(modeNum); - }; - this.chmodSync = (path, mode) => { - const modeNum = (0, util_2.modeToNumber)(mode); - const filename = (0, util_2.pathToFilename)(path); - this._chmod(filename, modeNum, true); - }; - this.chmod = (path, mode, callback) => { - const modeNum = (0, util_2.modeToNumber)(mode); - const filename = (0, util_2.pathToFilename)(path); - this.wrapAsync(this._chmod, [filename, modeNum], callback); - }; - this._lchmod = (filename, modeNum) => { - this._chmod(filename, modeNum, false); - }; - this.lchmodSync = (path, mode) => { - const modeNum = (0, util_2.modeToNumber)(mode); - const filename = (0, util_2.pathToFilename)(path); - this._lchmod(filename, modeNum); - }; - this.lchmod = (path, mode, callback) => { - const modeNum = (0, util_2.modeToNumber)(mode); - const filename = (0, util_2.pathToFilename)(path); - this.wrapAsync(this._lchmod, [filename, modeNum], callback); - }; - this._fchown = (fd, uid, gid) => { - this._core.getFileByFdOrThrow(fd, 'fchown').chown(uid, gid); - }; - this.fchownSync = (fd, uid, gid) => { - validateUid(uid); - validateGid(gid); - this._fchown(fd, uid, gid); - }; - this.fchown = (fd, uid, gid, callback) => { - validateUid(uid); - validateGid(gid); - this.wrapAsync(this._fchown, [fd, uid, gid], callback); - }; - this._chown = (filename, uid, gid) => { - const link = this._core.getResolvedLinkOrThrow(filename, 'chown'); - const node = link.getNode(); - node.chown(uid, gid); - }; - this.chownSync = (path, uid, gid) => { - validateUid(uid); - validateGid(gid); - this._chown((0, util_2.pathToFilename)(path), uid, gid); - }; - this.chown = (path, uid, gid, callback) => { - validateUid(uid); - validateGid(gid); - this.wrapAsync(this._chown, [(0, util_2.pathToFilename)(path), uid, gid], callback); - }; - this._lchown = (filename, uid, gid) => { - this._core.getLinkOrThrow(filename, 'lchown').getNode().chown(uid, gid); - }; - this.lchownSync = (path, uid, gid) => { - validateUid(uid); - validateGid(gid); - this._lchown((0, util_2.pathToFilename)(path), uid, gid); - }; - this.lchown = (path, uid, gid, callback) => { - validateUid(uid); - validateGid(gid); - this.wrapAsync(this._lchown, [(0, util_2.pathToFilename)(path), uid, gid], callback); - }; - this.statWatchers = {}; - this.cpSync = (src, dest, options) => { - const srcFilename = (0, util_2.pathToFilename)(src); - const destFilename = (0, util_2.pathToFilename)(dest); - const opts_ = { - dereference: options?.dereference ?? false, - errorOnExist: options?.errorOnExist ?? false, - filter: options?.filter, - force: options?.force ?? true, - mode: options?.mode ?? 0, - preserveTimestamps: options?.preserveTimestamps ?? false, - recursive: options?.recursive ?? false, - verbatimSymlinks: options?.verbatimSymlinks ?? false, - }; - return this._cp(srcFilename, destFilename, opts_); - }; - this.cp = (src, dest, a, b) => { - const srcFilename = (0, util_2.pathToFilename)(src); - const destFilename = (0, util_2.pathToFilename)(dest); - let options; - let callback; - if (typeof a === 'function') - [options, callback] = [{}, a]; - else - [options, callback] = [a || {}, b]; - (0, util_2.validateCallback)(callback); - const opts_ = { - dereference: options?.dereference ?? false, - errorOnExist: options?.errorOnExist ?? false, - filter: options?.filter, - force: options?.force ?? true, - mode: options?.mode ?? 0, - preserveTimestamps: options?.preserveTimestamps ?? false, - recursive: options?.recursive ?? false, - verbatimSymlinks: options?.verbatimSymlinks ?? false, - }; - this.wrapAsync(this._cp, [srcFilename, destFilename, opts_], callback); - }; - this.openAsBlob = async (path, options) => { - const filename = (0, util_2.pathToFilename)(path); - let link; - try { - link = this._core.getResolvedLinkOrThrow(filename, 'open'); - } - catch (error) { - // Convert ENOENT to Node.js-compatible error for openAsBlob - if (error && typeof error === 'object' && error.code === 'ENOENT') { - const nodeError = new errors.TypeError('ERR_INVALID_ARG_VALUE'); - throw nodeError; - } - throw error; - } - const node = link.getNode(); - // Note: Node.js allows opening directories as blobs, so we don't throw EISDIR - const buffer = node.getBuffer(); - const type = options?.type || ''; - return new Blob([buffer], { type }); - }; - this.glob = (pattern, ...args) => { - const [options, callback] = args.length === 1 ? [{}, args[0]] : [args[0], args[1]]; - this.wrapAsync(this._globSync, [pattern, options || {}], callback); - }; - this.globSync = (pattern, options = {}) => { - return this._globSync(pattern, options); - }; - this._globSync = (pattern, options = {}) => { - const { globSync } = requireGlob(); - return globSync(this, pattern, options); - }; - this._opendir = (filename, options) => { - const link = this._core.getResolvedLinkOrThrow(filename, 'scandir'); - const node = link.getNode(); - if (!node.isDirectory()) - throw (0, util_2.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'scandir', filename); - return new Dir_1.Dir(link, options); - }; - this.opendirSync = (path, options) => { - const opts = (0, options_1.getOpendirOptions)(options); - const filename = (0, util_2.pathToFilename)(path); - return this._opendir(filename, opts); - }; - this.opendir = (path, a, b) => { - const [options, callback] = (0, options_1.getOpendirOptsAndCb)(a, b); - const filename = (0, util_2.pathToFilename)(path); - this.wrapAsync(this._opendir, [filename, options], callback); - }; - const self = this; // tslint:disable-line no-this-assignment - this.StatWatcher = class extends StatWatcher { - constructor() { - super(self); - } - }; - const _ReadStream = FsReadStream; - this.ReadStream = class extends _ReadStream { - constructor(...args) { - super(self, ...args); - } - }; - const _WriteStream = FsWriteStream; - this.WriteStream = class extends _WriteStream { - constructor(...args) { - super(self, ...args); - } - }; - this.FSWatcher = class extends FSWatcher { - constructor() { - super(self); - } - }; - const _realpath = (filename, encoding) => { - const realLink = this._core.getResolvedLinkOrThrow(filename, 'realpath'); - return (0, encoding_1.strToEncoding)(realLink.getPath() || '/', encoding); - }; - const realpathImpl = (path, a, b) => { - const [opts, callback] = (0, options_1.getRealpathOptsAndCb)(a, b); - const pathFilename = (0, util_2.pathToFilename)(path); - self.wrapAsync(_realpath, [pathFilename, opts.encoding], callback); - }; - const realpathSyncImpl = (path, options) => _realpath((0, util_2.pathToFilename)(path), (0, options_1.getRealpathOptions)(options).encoding); - this.realpath = realpathImpl; - this.realpath.native = realpathImpl; - this.realpathSync = realpathSyncImpl; - this.realpathSync.native = realpathSyncImpl; - } - wrapAsync(method, args, callback) { - (0, util_2.validateCallback)(callback); - Promise.resolve().then(() => { - let result; - try { - result = method.apply(this, args); - } - catch (err) { - callback(err); - return; - } - callback(null, result); - }); - } - toTree(opts = { separator: path_1.sep }) { - return (0, print_1.toTreeSync)(this, opts); - } - reset() { - this._core.reset(); - } - toJSON(paths, json = {}, isRelative = false, asBuffer = false) { - return this._core.toJSON(paths, json, isRelative, asBuffer); - } - fromJSON(json, cwd) { - return this._core.fromJSON(json, cwd); - } - fromNestedJSON(json, cwd) { - return this._core.fromNestedJSON(json, cwd); - } - // Legacy interface - mountSync(mountpoint, json) { - this._core.fromJSON(json, mountpoint); - } - _write(fd, buf, offset, length, position) { - const file = this._core.getFileByFdOrThrow(fd, 'write'); - if (file.node.isSymlink()) { - throw (0, util_2.createError)("EBADF" /* ERROR_CODE.EBADF */, 'write', file.link.getPath()); - } - return file.write(buf, offset, length, position === -1 || typeof position !== 'number' ? undefined : position); - } - writevBase(fd, buffers, position) { - const file = this._core.getFileByFdOrThrow(fd); - let p = position ?? undefined; - if (p === -1) { - p = undefined; - } - let bytesWritten = 0; - for (const buffer of buffers) { - const nodeBuf = buffer_1.Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength); - const bytes = file.write(nodeBuf, 0, nodeBuf.byteLength, p); - p = undefined; - bytesWritten += bytes; - if (bytes < nodeBuf.byteLength) - break; - } - return bytesWritten; - } - _copyFile(src, dest, flags) { - const buf = this.readFileSync(src); - if (flags & COPYFILE_EXCL && this.existsSync(dest)) - throw (0, util_2.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'copyFile', src, dest); - if (flags & COPYFILE_FICLONE_FORCE) - throw (0, util_2.createError)("ENOSYS" /* ERROR_CODE.ENOSYS */, 'copyFile', src, dest); - this._core.writeFile(dest, buf, constants_2.FLAGS.w, 438 /* MODE.DEFAULT */); - } - isSrcSubdir(src, dest) { - try { - const normalizedSrc = pathNormalize(src.startsWith('/') ? src : '/' + src); - const normalizedDest = pathNormalize(dest.startsWith('/') ? dest : '/' + dest); - if (normalizedSrc === normalizedDest) - return true; - // Check if dest is under src by using relative path - // If dest is under src, the relative path from src to dest won't start with '..' - const relativePath = pathRelative(normalizedSrc, normalizedDest); - // If relative path is empty or doesn't start with '..', dest is under src - return relativePath === '' || (!relativePath.startsWith('..') && !(0, path_1.isAbsolute)(relativePath)); - } - catch (error) { - // If path operations fail, assume it's safe (don't block the copy) - return false; - } - } - cpFileSync(srcStat, destStat, src, dest, options) { - if (destStat) { - if (options.errorOnExist) - throw (0, util_2.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'cp', dest); - if (!options.force) - return; - this.unlinkSync(dest); - } - // Copy the file - this.copyFileSync(src, dest, options.mode); - // Preserve timestamps if requested - if (options.preserveTimestamps) - this.utimesSync(dest, srcStat.atime, srcStat.mtime); - // Set file mode - this.chmodSync(dest, Number(srcStat.mode)); - } - cpDirSync(srcStat, destStat, src, dest, options) { - if (!destStat) { - this.mkdirSync(dest); - } - // Read directory contents - const entries = this.readdirSync(src); - for (const entry of entries) { - const srcItem = pathJoin(src, String(entry)); - const destItem = pathJoin(dest, String(entry)); - // Apply filter to each item - if (options.filter && !options.filter(srcItem, destItem)) { - continue; - } - this._cp(srcItem, destItem, options); - } - // Set directory mode - this.chmodSync(dest, Number(srcStat.mode)); - } - cpSymlinkSync(destStat, src, dest, options) { - let linkTarget = String(this.readlinkSync(src)); - if (!options.verbatimSymlinks && !(0, path_1.isAbsolute)(linkTarget)) - linkTarget = resolveCrossPlatform(pathDirname(src), linkTarget); - if (destStat) - this.unlinkSync(dest); - this.symlinkSync(linkTarget, dest); - } - lstat(path, a, b) { - const [{ throwIfNoEntry = true, bigint = false }, callback] = (0, options_1.getStatOptsAndCb)(a, b); - this.wrapAsync(this._lstat, [(0, util_2.pathToFilename)(path), bigint, throwIfNoEntry], callback); - } - _stat(filename, bigint = false, throwIfNoEntry = true) { - let link; - try { - link = this._core.getResolvedLinkOrThrow(filename, 'stat'); - } - catch (err) { - if (err.code === "ENOENT" /* ERROR_CODE.ENOENT */ && !throwIfNoEntry) - return undefined; - else - throw err; - } - return Stats_1.default.build(link.getNode(), bigint); - } - statSync(path, options) { - const { bigint = true, throwIfNoEntry = true } = (0, options_1.getStatOptions)(options); - return this._stat((0, util_2.pathToFilename)(path), bigint, throwIfNoEntry); - } - stat(path, a, b) { - const [{ bigint = false, throwIfNoEntry = true }, callback] = (0, options_1.getStatOptsAndCb)(a, b); - this.wrapAsync(this._stat, [(0, util_2.pathToFilename)(path), bigint, throwIfNoEntry], callback); - } - fstatBase(fd, bigint = false) { - const file = this._core.getFileByFd(fd); - if (!file) - throw (0, util_2.createError)("EBADF" /* ERROR_CODE.EBADF */, 'fstat'); - return Stats_1.default.build(file.node, bigint); - } - fstatSync(fd, options) { - return this.fstatBase(fd, (0, options_1.getStatOptions)(options).bigint); - } - fstat(fd, a, b) { - const [opts, callback] = (0, options_1.getStatOptsAndCb)(a, b); - this.wrapAsync(this.fstatBase, [fd, opts.bigint], callback); - } - _exists(filename) { - return !!this._stat(filename); - } - _access(filename, mode) { - const link = this._core.getLinkOrThrow(filename, 'access'); - const node = link.getNode(); - // F_OK (0) just checks for existence, which we already confirmed above - if (mode === F_OK) { - return; - } - // Check read permission - if (mode & R_OK && !node.canRead()) { - throw (0, util_2.createError)("EACCES" /* ERROR_CODE.EACCES */, 'access', filename); - } - // Check write permission - if (mode & W_OK && !node.canWrite()) { - throw (0, util_2.createError)("EACCES" /* ERROR_CODE.EACCES */, 'access', filename); - } - // Check execute permission - if (mode & X_OK && !node.canExecute()) { - throw (0, util_2.createError)("EACCES" /* ERROR_CODE.EACCES */, 'access', filename); - } - } - watchFile(path, a, b) { - const filename = (0, util_2.pathToFilename)(path); - let options = a; - let listener = b; - if (typeof options === 'function') { - listener = a; - options = null; - } - if (typeof listener !== 'function') { - throw Error('"watchFile()" requires a listener function'); - } - let interval = 5007; - let persistent = true; - if (options && typeof options === 'object') { - if (typeof options.interval === 'number') - interval = options.interval; - if (typeof options.persistent === 'boolean') - persistent = options.persistent; - } - let watcher = this.statWatchers[filename]; - if (!watcher) { - watcher = new this.StatWatcher(); - watcher.start(filename, persistent, interval); - this.statWatchers[filename] = watcher; - } - watcher.addListener('change', listener); - return watcher; - } - unwatchFile(path, listener) { - const filename = (0, util_2.pathToFilename)(path); - const watcher = this.statWatchers[filename]; - if (!watcher) - return; - if (typeof listener === 'function') { - watcher.removeListener('change', listener); - } - else { - watcher.removeAllListeners('change'); - } - if (watcher.listenerCount('change') === 0) { - watcher.stop(); - delete this.statWatchers[filename]; - } - } - createReadStream(path, options) { - return new this.ReadStream(path, options); - } - createWriteStream(path, options) { - return new this.WriteStream(path, options); - } - // watch(path: PathLike): FSWatcher; - // watch(path: PathLike, options?: IWatchOptions | string): FSWatcher; - watch(path, options, listener) { - const filename = (0, util_2.pathToFilename)(path); - let givenOptions = options; - if (typeof options === 'function') { - listener = options; - givenOptions = null; - } - // tslint:disable-next-line prefer-const - let { persistent, recursive, encoding } = (0, options_1.getDefaultOpts)(givenOptions); - if (persistent === undefined) - persistent = true; - if (recursive === undefined) - recursive = false; - const watcher = new this.FSWatcher(); - watcher.start(filename, persistent, recursive, encoding); - if (listener) { - watcher.addListener('change', listener); - } - return watcher; - } - _statfs(filename, bigint = false) { - // Verify the path exists to match Node.js behavior - this._core.getResolvedLinkOrThrow(filename, 'statfs'); - return StatFs_1.default.build(this._core, bigint); - } - statfsSync(path, options) { - const { bigint = false } = (0, options_1.getStatfsOptions)(options); - return this._statfs((0, util_2.pathToFilename)(path), bigint); - } - statfs(path, a, b) { - const [{ bigint = false }, callback] = (0, options_1.getStatfsOptsAndCb)(a, b); - this.wrapAsync(this._statfs, [(0, util_2.pathToFilename)(path), bigint], callback); - } - } - volume.Volume = Volume; - Volume.fromJSON = (json, cwd) => new Volume(core_1.Superblock.fromJSON(json, cwd)); - Volume.fromNestedJSON = (json, cwd) => new Volume(core_1.Superblock.fromNestedJSON(json, cwd)); - function emitStop(self) { - self.emit('stop'); - } - class StatWatcher extends events_1.EventEmitter { - constructor(vol) { - super(); - this.onInterval = () => { - try { - const stats = this.vol.statSync(this.filename); - if (this.hasChanged(stats)) { - this.emit('change', stats, this.prev); - this.prev = stats; - } - } - finally { - this.loop(); - } - }; - this.vol = vol; - } - loop() { - this.timeoutRef = this.setTimeout(this.onInterval, this.interval); - } - hasChanged(stats) { - // if(!this.prev) return false; - if (stats.mtimeMs > this.prev.mtimeMs) - return true; - if (stats.nlink !== this.prev.nlink) - return true; - return false; - } - start(path, persistent = true, interval = 5007) { - this.filename = (0, util_2.pathToFilename)(path); - this.setTimeout = persistent - ? setTimeout.bind(typeof globalThis !== 'undefined' ? globalThis : commonjsGlobal) - : setTimeoutUnref_1.default; - this.interval = interval; - this.prev = this.vol.statSync(this.filename); - this.loop(); - } - stop() { - clearTimeout(this.timeoutRef); - (0, queueMicrotask_1.default)(() => { - emitStop.call(this, this); - }); - } - } - volume.StatWatcher = StatWatcher; - /* tslint:disable no-var-keyword prefer-const */ - // ---------------------------------------- ReadStream - var pool; - function allocNewPool(poolSize) { - pool = (0, buffer_1.bufferAllocUnsafe)(poolSize); - pool.used = 0; - } - (0, util_1.inherits)(FsReadStream, stream_1.Readable); - volume.ReadStream = FsReadStream; - function FsReadStream(vol, path, options) { - if (!(this instanceof FsReadStream)) - return new FsReadStream(vol, path, options); - this._vol = vol; - // a little bit bigger buffer and water marks by default - options = Object.assign({}, (0, options_1.getOptions)(options, {})); - if (options.highWaterMark === undefined) - options.highWaterMark = 64 * 1024; - stream_1.Readable.call(this, options); - this.path = (0, util_2.pathToFilename)(path); - this.fd = options.fd === undefined ? null : typeof options.fd !== 'number' ? options.fd.fd : options.fd; - this.flags = options.flags === undefined ? 'r' : options.flags; - this.mode = options.mode === undefined ? 0o666 : options.mode; - this.start = options.start; - this.end = options.end; - this.autoClose = options.autoClose === undefined ? true : options.autoClose; - this.pos = undefined; - this.bytesRead = 0; - if (this.start !== undefined) { - if (typeof this.start !== 'number') { - throw new TypeError('"start" option must be a Number'); - } - if (this.end === undefined) { - this.end = Infinity; - } - else if (typeof this.end !== 'number') { - throw new TypeError('"end" option must be a Number'); - } - if (this.start > this.end) { - throw new Error('"start" option must be <= "end" option'); - } - this.pos = this.start; - } - if (typeof this.fd !== 'number') - this.open(); - this.on('end', function () { - if (this.autoClose) { - if (this.destroy) - this.destroy(); - } - }); - } - FsReadStream.prototype.open = function () { - var self = this; // tslint:disable-line no-this-assignment - this._vol.open(this.path, this.flags, this.mode, (er, fd) => { - if (er) { - if (self.autoClose) { - if (self.destroy) - self.destroy(); - } - self.emit('error', er); - return; - } - self.fd = fd; - self.emit('open', fd); - // start the flow of data. - self.read(); - }); - }; - FsReadStream.prototype._read = function (n) { - if (typeof this.fd !== 'number') { - return this.once('open', function () { - this._read(n); - }); - } - if (this.destroyed) - return; - if (!pool || pool.length - pool.used < kMinPoolSpace) { - // discard the old pool. - allocNewPool(this._readableState.highWaterMark); - } - // Grab another reference to the pool in the case that while we're - // in the thread pool another read() finishes up the pool, and - // allocates a new one. - var thisPool = pool; - var toRead = Math.min(pool.length - pool.used, n); - var start = pool.used; - if (this.pos !== undefined) - toRead = Math.min(this.end - this.pos + 1, toRead); - // already read everything we were supposed to read! - // treat as EOF. - if (toRead <= 0) - return this.push(null); - // the actual read. - var self = this; // tslint:disable-line no-this-assignment - this._vol.read(this.fd, pool, pool.used, toRead, this.pos, onread); - // move the pool positions, and internal position for reading. - if (this.pos !== undefined) - this.pos += toRead; - pool.used += toRead; - function onread(er, bytesRead) { - if (er) { - if (self.autoClose && self.destroy) { - self.destroy(); - } - self.emit('error', er); - } - else { - var b = null; - if (bytesRead > 0) { - self.bytesRead += bytesRead; - b = thisPool.slice(start, start + bytesRead); - } - self.push(b); - } - } - }; - FsReadStream.prototype._destroy = function (err, cb) { - this.close(err2 => { - cb(err || err2); - }); - }; - FsReadStream.prototype.close = function (cb) { - if (cb) - this.once('close', cb); - if (this.closed || typeof this.fd !== 'number') { - if (typeof this.fd !== 'number') { - this.once('open', closeOnOpen); - return; - } - return (0, queueMicrotask_1.default)(() => this.emit('close')); - } - // Since Node 18, there is only a getter for '.closed'. - // The first branch mimics other setters from Readable. - // See https://github.com/nodejs/node/blob/v18.0.0/lib/internal/streams/readable.js#L1243 - if (typeof this._readableState?.closed === 'boolean') { - this._readableState.closed = true; - } - else { - this.closed = true; - } - this._vol.close(this.fd, er => { - if (er) - this.emit('error', er); - else - this.emit('close'); - }); - this.fd = null; - }; - // needed because as it will be called with arguments - // that does not match this.close() signature - function closeOnOpen(fd) { - this.close(); - } - (0, util_1.inherits)(FsWriteStream, stream_1.Writable); - volume.WriteStream = FsWriteStream; - function FsWriteStream(vol, path, options) { - if (!(this instanceof FsWriteStream)) - return new FsWriteStream(vol, path, options); - this._vol = vol; - options = Object.assign({}, (0, options_1.getOptions)(options, {})); - stream_1.Writable.call(this, options); - this.path = (0, util_2.pathToFilename)(path); - this.fd = options.fd === undefined ? null : typeof options.fd !== 'number' ? options.fd.fd : options.fd; - this.flags = options.flags === undefined ? 'w' : options.flags; - this.mode = options.mode === undefined ? 0o666 : options.mode; - this.start = options.start; - this.autoClose = options.autoClose === undefined ? true : !!options.autoClose; - this.pos = undefined; - this.bytesWritten = 0; - this.pending = true; - if (this.start !== undefined) { - if (typeof this.start !== 'number') { - throw new TypeError('"start" option must be a Number'); - } - if (this.start < 0) { - throw new Error('"start" must be >= zero'); - } - this.pos = this.start; - } - if (options.encoding) - this.setDefaultEncoding(options.encoding); - if (typeof this.fd !== 'number') - this.open(); - // dispose on finish. - this.once('finish', function () { - if (this.autoClose) { - this.close(); - } - }); - } - FsWriteStream.prototype.open = function () { - this._vol.open(this.path, this.flags, this.mode, function (er, fd) { - if (er) { - if (this.autoClose && this.destroy) { - this.destroy(); - } - this.emit('error', er); - return; - } - this.fd = fd; - this.pending = false; - this.emit('open', fd); - }.bind(this)); - }; - FsWriteStream.prototype._write = function (data, encoding, cb) { - if (!(data instanceof buffer_1.Buffer || data instanceof Uint8Array)) - return this.emit('error', new Error('Invalid data')); - if (typeof this.fd !== 'number') { - return this.once('open', function () { - this._write(data, encoding, cb); - }); - } - var self = this; // tslint:disable-line no-this-assignment - this._vol.write(this.fd, data, 0, data.length, this.pos, (er, bytes) => { - if (er) { - if (self.autoClose && self.destroy) { - self.destroy(); - } - return cb(er); - } - self.bytesWritten += bytes; - cb(); - }); - if (this.pos !== undefined) - this.pos += data.length; - }; - FsWriteStream.prototype._writev = function (data, cb) { - if (typeof this.fd !== 'number') { - return this.once('open', function () { - this._writev(data, cb); - }); - } - const self = this; // tslint:disable-line no-this-assignment - const len = data.length; - const chunks = new Array(len); - var size = 0; - for (var i = 0; i < len; i++) { - var chunk = data[i].chunk; - chunks[i] = chunk; - size += chunk.length; - } - const buf = buffer_1.Buffer.concat(chunks); - this._vol.write(this.fd, buf, 0, buf.length, this.pos, (er, bytes) => { - if (er) { - if (self.destroy) - self.destroy(); - return cb(er); - } - self.bytesWritten += bytes; - cb(); - }); - if (this.pos !== undefined) - this.pos += size; - }; - FsWriteStream.prototype.close = function (cb) { - if (cb) - this.once('close', cb); - if (this.closed || typeof this.fd !== 'number') { - if (typeof this.fd !== 'number') { - this.once('open', closeOnOpen); - return; - } - return (0, queueMicrotask_1.default)(() => this.emit('close')); - } - // Since Node 18, there is only a getter for '.closed'. - // The first branch mimics other setters from Writable. - // See https://github.com/nodejs/node/blob/v18.0.0/lib/internal/streams/writable.js#L766 - if (typeof this._writableState?.closed === 'boolean') { - this._writableState.closed = true; - } - else { - this.closed = true; - } - this._vol.close(this.fd, er => { - if (er) - this.emit('error', er); - else - this.emit('close'); - }); - this.fd = null; - }; - FsWriteStream.prototype._destroy = FsReadStream.prototype._destroy; - // There is no shutdown() for files. - FsWriteStream.prototype.destroySoon = FsWriteStream.prototype.end; - // ---------------------------------------- FSWatcher - class FSWatcher extends events_1.EventEmitter { - constructor(vol) { - super(); - this._filename = ''; - this._filenameEncoded = ''; - // _persistent: boolean = true; - this._recursive = false; - this._encoding = encoding_1.ENCODING_UTF8; - // inode -> removers - this._listenerRemovers = new Map(); - this._onParentChild = (link) => { - if (link.getName() === this._getName()) { - this._emit('rename'); - } - }; - this._emit = (type) => { - this.emit('change', type, this._filenameEncoded); - }; - this._persist = () => { - this._timer = setTimeout(this._persist, 1e6); - }; - this._vol = vol; - // TODO: Emit "error" messages when watching. - // this._handle.onchange = function(status, eventType, filename) { - // if (status < 0) { - // self._handle.close(); - // const error = !filename ? - // errnoException(status, 'Error watching file for changes:') : - // errnoException(status, `Error watching file ${filename} for changes:`); - // error.filename = filename; - // self.emit('error', error); - // } else { - // self.emit('change', eventType, filename); - // } - // }; - } - _getName() { - return this._steps[this._steps.length - 1]; - } - start(path, persistent = true, recursive = false, encoding = encoding_1.ENCODING_UTF8) { - this._filename = (0, util_2.pathToFilename)(path); - this._steps = (0, util_3.filenameToSteps)(this._filename); - this._filenameEncoded = (0, encoding_1.strToEncoding)(this._filename); - // this._persistent = persistent; - this._recursive = recursive; - this._encoding = encoding; - try { - this._link = this._vol._core.getLinkOrThrow(this._filename, 'FSWatcher'); - } - catch (err) { - const error = new Error(`watch ${this._filename} ${err.code}`); - error.code = err.code; - error.errno = err.code; - throw error; - } - const watchLinkNodeChanged = (link) => { - const filepath = link.getPath(); - const node = link.getNode(); - const onNodeChange = () => { - let filename = pathRelative(this._filename, filepath); - if (!filename) - filename = this._getName(); - return this.emit('change', 'change', filename); - }; - const unsub = node.changes.listen(([type]) => { - if (type === 'modify') - onNodeChange(); - }); - const removers = this._listenerRemovers.get(node.ino) ?? []; - removers.push(() => unsub()); - this._listenerRemovers.set(node.ino, removers); - }; - const watchLinkChildrenChanged = (link) => { - const node = link.getNode(); - // when a new link added - const onLinkChildAdd = (l) => { - this.emit('change', 'rename', pathRelative(this._filename, l.getPath())); - // 1. watch changes of the new link-node - watchLinkNodeChanged(l); - // 2. watch changes of the new link-node's children - watchLinkChildrenChanged(l); - }; - // when a new link deleted - const onLinkChildDelete = (l) => { - // remove the listeners of the children nodes - const removeLinkNodeListeners = (curLink) => { - const ino = curLink.getNode().ino; - const removers = this._listenerRemovers.get(ino); - if (removers) { - removers.forEach(r => r()); - this._listenerRemovers.delete(ino); - } - for (const [name, childLink] of curLink.children.entries()) { - if (childLink && name !== '.' && name !== '..') { - removeLinkNodeListeners(childLink); - } - } - }; - removeLinkNodeListeners(l); - this.emit('change', 'rename', pathRelative(this._filename, l.getPath())); - }; - // children nodes changed - for (const [name, childLink] of link.children.entries()) { - if (childLink && name !== '.' && name !== '..') { - watchLinkNodeChanged(childLink); - } - } - // link children add/remove - const unsubscribeLinkChanges = link.changes.listen(([type, link]) => { - if (type === 'child:add') - onLinkChildAdd(link); - else if (type === 'child:del') - onLinkChildDelete(link); - }); - const removers = this._listenerRemovers.get(node.ino) ?? []; - removers.push(() => { - unsubscribeLinkChanges(); - }); - if (recursive) { - for (const [name, childLink] of link.children.entries()) { - if (childLink && name !== '.' && name !== '..') { - watchLinkChildrenChanged(childLink); - } - } - } - }; - watchLinkNodeChanged(this._link); - watchLinkChildrenChanged(this._link); - const parent = this._link.parent; - if (parent) { - // parent.on('child:delete', this._onParentChild); - parent.changes.listen(([type, link]) => { - if (type === 'child:del') - this._onParentChild(link); - }); - } - if (persistent) - this._persist(); - } - close() { - clearTimeout(this._timer); - this._listenerRemovers.forEach(removers => { - removers.forEach(r => r()); - }); - this._listenerRemovers.clear(); - this._parentChangesUnsub?.(); - } - } - volume.FSWatcher = FSWatcher; - - return volume; -} - -var fsSynchronousApiList = {}; - -var hasRequiredFsSynchronousApiList; - -function requireFsSynchronousApiList () { - if (hasRequiredFsSynchronousApiList) return fsSynchronousApiList; - hasRequiredFsSynchronousApiList = 1; - Object.defineProperty(fsSynchronousApiList, "__esModule", { value: true }); - fsSynchronousApiList.fsSynchronousApiList = void 0; - fsSynchronousApiList.fsSynchronousApiList = [ - 'accessSync', - 'appendFileSync', - 'chmodSync', - 'chownSync', - 'closeSync', - 'copyFileSync', - 'existsSync', - 'fchmodSync', - 'fchownSync', - 'fdatasyncSync', - 'fstatSync', - 'fsyncSync', - 'ftruncateSync', - 'futimesSync', - 'globSync', - 'lchmodSync', - 'lchownSync', - 'linkSync', - 'lstatSync', - 'mkdirSync', - 'mkdtempSync', - 'openSync', - 'opendirSync', - 'readdirSync', - 'readFileSync', - 'readlinkSync', - 'readSync', - 'readvSync', - 'realpathSync', - 'renameSync', - 'rmdirSync', - 'rmSync', - 'statSync', - 'symlinkSync', - 'truncateSync', - 'unlinkSync', - 'utimesSync', - 'lutimesSync', - 'writeFileSync', - 'writeSync', - 'writevSync', - // 'cpSync', - // 'statfsSync', - ]; - - return fsSynchronousApiList; -} - -var fsCallbackApiList = {}; - -var hasRequiredFsCallbackApiList; - -function requireFsCallbackApiList () { - if (hasRequiredFsCallbackApiList) return fsCallbackApiList; - hasRequiredFsCallbackApiList = 1; - Object.defineProperty(fsCallbackApiList, "__esModule", { value: true }); - fsCallbackApiList.fsCallbackApiList = void 0; - fsCallbackApiList.fsCallbackApiList = [ - 'access', - 'appendFile', - 'chmod', - 'chown', - 'close', - 'copyFile', - 'cp', - 'createReadStream', - 'createWriteStream', - 'exists', - 'fchmod', - 'fchown', - 'fdatasync', - 'fstat', - 'fsync', - 'ftruncate', - 'futimes', - 'glob', - 'lchmod', - 'lchown', - 'link', - 'lstat', - 'mkdir', - 'mkdtemp', - 'open', - 'openAsBlob', - 'opendir', - 'read', - 'readv', - 'readdir', - 'readFile', - 'readlink', - 'realpath', - 'rename', - 'rm', - 'rmdir', - 'stat', - 'statfs', - 'symlink', - 'truncate', - 'unlink', - 'unwatchFile', - 'utimes', - 'lutimes', - 'watch', - 'watchFile', - 'write', - 'writev', - 'writeFile', - ]; - - return fsCallbackApiList; -} - -var hasRequiredLib; - -function requireLib () { - if (hasRequiredLib) return lib$3.exports; - hasRequiredLib = 1; - (function (module, exports$1) { - Object.defineProperty(exports$1, "__esModule", { value: true }); - exports$1.memfs = exports$1.fs = exports$1.vol = exports$1.Volume = void 0; - exports$1.createFsFromVolume = createFsFromVolume; - const Stats_1 = requireStats(); - const Dirent_1 = requireDirent(); - const volume_1 = requireVolume(); - Object.defineProperty(exports$1, "Volume", { enumerable: true, get: function () { return volume_1.Volume; } }); - const constants_1 = requireConstants$1(); - const fsSynchronousApiList_1 = requireFsSynchronousApiList(); - const fsCallbackApiList_1 = requireFsCallbackApiList(); - const { F_OK, R_OK, W_OK, X_OK } = constants_1.constants; - // Default volume. - exports$1.vol = new volume_1.Volume(); - function createFsFromVolume(vol) { - const fs = { F_OK, R_OK, W_OK, X_OK, constants: constants_1.constants, Stats: Stats_1.default, Dirent: Dirent_1.default }; - // Bind FS methods. - for (const method of fsSynchronousApiList_1.fsSynchronousApiList) - if (typeof vol[method] === 'function') - fs[method] = vol[method].bind(vol); - for (const method of fsCallbackApiList_1.fsCallbackApiList) - if (typeof vol[method] === 'function') - fs[method] = vol[method].bind(vol); - fs.StatWatcher = vol.StatWatcher; - fs.FSWatcher = vol.FSWatcher; - fs.WriteStream = vol.WriteStream; - fs.ReadStream = vol.ReadStream; - fs.promises = vol.promises; - // Handle realpath and realpathSync with their .native properties - if (typeof vol.realpath === 'function') { - fs.realpath = vol.realpath.bind(vol); - if (typeof vol.realpath.native === 'function') { - fs.realpath.native = vol.realpath.native.bind(vol); - } - } - if (typeof vol.realpathSync === 'function') { - fs.realpathSync = vol.realpathSync.bind(vol); - if (typeof vol.realpathSync.native === 'function') { - fs.realpathSync.native = vol.realpathSync.native.bind(vol); - } - } - fs._toUnixTimestamp = volume_1.toUnixTimestamp; - fs.__vol = vol; - return fs; - } - exports$1.fs = createFsFromVolume(exports$1.vol); - /** - * Creates a new file system instance. - * - * @param json File system structure expressed as a JSON object. - * Use `null` for empty directories and empty string for empty files. - * @param cwd Current working directory. The JSON structure will be created - * relative to this path. - * @returns A `memfs` file system instance, which is a drop-in replacement for - * the `fs` module. - */ - const memfs = (json = {}, cwd = '/') => { - const vol = volume_1.Volume.fromNestedJSON(json, cwd); - const fs = createFsFromVolume(vol); - return { fs, vol }; - }; - exports$1.memfs = memfs; - module.exports = { ...module.exports, ...exports$1.fs }; - module.exports.semantic = true; - - } (lib$3, lib$3.exports)); - return lib$3.exports; -} - -var libExports = requireLib(); -var index = /*@__PURE__*/getDefaultExportFromCjs(libExports); - -var memfsExported = /*#__PURE__*/_mergeNamespaces({ - __proto__: null, - default: index -}, [libExports]); - -const { createFsFromVolume, Volume, fs, memfs } = memfsExported; - -export { Buffer, Volume, createFsFromVolume, fs, memfs, memfsExported }; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvY29uc3RhbnRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21lbWZzL2xpYi9ub2RlL1N0YXRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jhc2U2NC1qcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pZWVlNzU0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2J1ZmZlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvdmVuZG9yL25vZGUvYnVmZmVyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21lbWZzL2xpYi92ZW5kb3Ivbm9kZS9pbnRlcm5hbC9idWZmZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL3ZlbmRvci9ub2RlL3V0aWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL3ZlbmRvci9ub2RlL2ludGVybmFsL2Vycm9ycy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvZW5jb2RpbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL25vZGUvRGlyZW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXRoLWJyb3dzZXJpZnkvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL3ZlbmRvci9ub2RlL3BhdGguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvY29yZS90eXBlcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvY29yZS9qc29uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3RoaW5naWVzL2xpYi9mYW5vdXQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL3Byb2Nlc3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL2NvcmUvTm9kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvY29yZS9MaW5rLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21lbWZzL2xpYi9jb3JlL0ZpbGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL25vZGUvY29uc3RhbnRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21lbWZzL2xpYi9xdWV1ZU1pY3JvdGFzay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvY29yZS91dGlsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3B1bnljb2RlL3B1bnljb2RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2VzLWVycm9ycy90eXBlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL29iamVjdC1pbnNwZWN0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3NpZGUtY2hhbm5lbC1saXN0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2VzLW9iamVjdC1hdG9tcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9lcy1lcnJvcnMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZXMtZXJyb3JzL2V2YWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZXMtZXJyb3JzL3JhbmdlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2VzLWVycm9ycy9yZWYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZXMtZXJyb3JzL3N5bnRheC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9lcy1lcnJvcnMvdXJpLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21hdGgtaW50cmluc2ljcy9hYnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWF0aC1pbnRyaW5zaWNzL2Zsb29yLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21hdGgtaW50cmluc2ljcy9tYXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWF0aC1pbnRyaW5zaWNzL21pbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tYXRoLWludHJpbnNpY3MvcG93LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21hdGgtaW50cmluc2ljcy9yb3VuZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tYXRoLWludHJpbnNpY3MvaXNOYU4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWF0aC1pbnRyaW5zaWNzL3NpZ24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZ29wZC9nT1BELmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2dvcGQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZXMtZGVmaW5lLXByb3BlcnR5L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhcy1zeW1ib2xzL3NoYW1zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhcy1zeW1ib2xzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2dldC1wcm90by9SZWZsZWN0LmdldFByb3RvdHlwZU9mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2dldC1wcm90by9PYmplY3QuZ2V0UHJvdG90eXBlT2YuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZnVuY3Rpb24tYmluZC9pbXBsZW1lbnRhdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mdW5jdGlvbi1iaW5kL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2NhbGwtYmluZC1hcHBseS1oZWxwZXJzL2Z1bmN0aW9uQ2FsbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9jYWxsLWJpbmQtYXBwbHktaGVscGVycy9mdW5jdGlvbkFwcGx5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2NhbGwtYmluZC1hcHBseS1oZWxwZXJzL3JlZmxlY3RBcHBseS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9jYWxsLWJpbmQtYXBwbHktaGVscGVycy9hY3R1YWxBcHBseS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9jYWxsLWJpbmQtYXBwbHktaGVscGVycy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kdW5kZXItcHJvdG8vZ2V0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2dldC1wcm90by9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9hc3luYy1mdW5jdGlvbi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9nZW5lcmF0b3ItZnVuY3Rpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYXN5bmMtZ2VuZXJhdG9yLWZ1bmN0aW9uL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc293bi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9nZXQtaW50cmluc2ljL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2NhbGwtYm91bmQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvc2lkZS1jaGFubmVsLW1hcC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zaWRlLWNoYW5uZWwtd2Vha21hcC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zaWRlLWNoYW5uZWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcXMvbGliL2Zvcm1hdHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcXMvbGliL3V0aWxzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi9zdHJpbmdpZnkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcXMvbGliL3BhcnNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91cmwvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21lbWZzL2xpYi9ub2RlL3V0aWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL2NvcmUvU3VwZXJibG9jay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvY29yZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvbm9kZS9TdGF0RnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL3NldFRpbWVvdXRVbnJlZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL291cnMvcHJpbW9yZGlhbHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9vdXJzL3V0aWwvaW5zcGVjdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL291cnMvZXJyb3JzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Fib3J0LWNvbnRyb2xsZXIvYnJvd3Nlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ldmVudHMvZXZlbnRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvb3Vycy91dGlsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvdmFsaWRhdG9ycy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvdXRpbHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2VuZC1vZi1zdHJlYW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3kuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2xlZ2FjeS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvYWRkLWFib3J0LXNpZ25hbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvYnVmZmVyX2xpc3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3N0YXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3NhZmUtYnVmZmVyL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N0cmluZ19kZWNvZGVyL2xpYi9zdHJpbmdfZGVjb2Rlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvZnJvbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvcmVhZGFibGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3dyaXRhYmxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9kdXBsZXhpZnkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2R1cGxleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvdHJhbnNmb3JtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9wYXNzdGhyb3VnaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvcGlwZWxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2NvbXBvc2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL29wZXJhdG9ycy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL3N0cmVhbS9wcm9taXNlcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL3N0cmVhbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL291cnMvYnJvd3Nlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvdmVuZG9yL25vZGUvc3RyZWFtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21lbWZzL2xpYi92ZW5kb3Ivbm9kZS9ldmVudHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL25vZGUvRmlsZUhhbmRsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvbm9kZS9Gc1Byb21pc2VzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3RyZWUtZHVtcC9saWIvcHJpbnRUcmVlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3RyZWUtZHVtcC9saWIvcHJpbnRCaW5hcnkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdHJlZS1kdW1wL2xpYi9wcmludEpzb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdHJlZS1kdW1wL2xpYi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvbm9kZS10by1mc2EvdXRpbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvcHJpbnQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL25vZGUvb3B0aW9ucy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvbm9kZS9EaXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZ2xvYi10by1yZWdleC5qcy9saWIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL25vZGUvZ2xvYi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZW1mcy9saWIvbm9kZS92b2x1bWUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL25vZGUvbGlzdHMvZnNTeW5jaHJvbm91c0FwaUxpc3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL25vZGUvbGlzdHMvZnNDYWxsYmFja0FwaUxpc3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL2luZGV4LmpzIiwiLi4vZnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNvbnN0YW50cyA9IGV4cG9ydHMuU0VQID0gdm9pZCAwO1xuZXhwb3J0cy5TRVAgPSAnLyc7XG5leHBvcnRzLmNvbnN0YW50cyA9IHtcbiAgICBPX1JET05MWTogMCxcbiAgICBPX1dST05MWTogMSxcbiAgICBPX1JEV1I6IDIsXG4gICAgU19JRk1UOiA2MTQ0MCxcbiAgICBTX0lGUkVHOiAzMjc2OCxcbiAgICBTX0lGRElSOiAxNjM4NCxcbiAgICBTX0lGQ0hSOiA4MTkyLFxuICAgIFNfSUZCTEs6IDI0NTc2LFxuICAgIFNfSUZJRk86IDQwOTYsXG4gICAgU19JRkxOSzogNDA5NjAsXG4gICAgU19JRlNPQ0s6IDQ5MTUyLFxuICAgIE9fQ1JFQVQ6IDY0LFxuICAgIE9fRVhDTDogMTI4LFxuICAgIE9fTk9DVFRZOiAyNTYsXG4gICAgT19UUlVOQzogNTEyLFxuICAgIE9fQVBQRU5EOiAxMDI0LFxuICAgIE9fRElSRUNUT1JZOiA2NTUzNixcbiAgICBPX05PQVRJTUU6IDI2MjE0NCxcbiAgICBPX05PRk9MTE9XOiAxMzEwNzIsXG4gICAgT19TWU5DOiAxMDUyNjcyLFxuICAgIE9fU1lNTElOSzogMjA5NzE1MixcbiAgICBPX0RJUkVDVDogMTYzODQsXG4gICAgT19OT05CTE9DSzogMjA0OCxcbiAgICBTX0lSV1hVOiA0NDgsXG4gICAgU19JUlVTUjogMjU2LFxuICAgIFNfSVdVU1I6IDEyOCxcbiAgICBTX0lYVVNSOiA2NCxcbiAgICBTX0lSV1hHOiA1NixcbiAgICBTX0lSR1JQOiAzMixcbiAgICBTX0lXR1JQOiAxNixcbiAgICBTX0lYR1JQOiA4LFxuICAgIFNfSVJXWE86IDcsXG4gICAgU19JUk9USDogNCxcbiAgICBTX0lXT1RIOiAyLFxuICAgIFNfSVhPVEg6IDEsXG4gICAgRl9PSzogMCxcbiAgICBSX09LOiA0LFxuICAgIFdfT0s6IDIsXG4gICAgWF9PSzogMSxcbiAgICBVVl9GU19TWU1MSU5LX0RJUjogMSxcbiAgICBVVl9GU19TWU1MSU5LX0pVTkNUSU9OOiAyLFxuICAgIFVWX0ZTX0NPUFlGSUxFX0VYQ0w6IDEsXG4gICAgVVZfRlNfQ09QWUZJTEVfRklDTE9ORTogMixcbiAgICBVVl9GU19DT1BZRklMRV9GSUNMT05FX0ZPUkNFOiA0LFxuICAgIENPUFlGSUxFX0VYQ0w6IDEsXG4gICAgQ09QWUZJTEVfRklDTE9ORTogMixcbiAgICBDT1BZRklMRV9GSUNMT05FX0ZPUkNFOiA0LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0YW50cy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU3RhdHMgPSB2b2lkIDA7XG5jb25zdCBjb25zdGFudHNfMSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHNcIik7XG5jb25zdCB7IFNfSUZNVCwgU19JRkRJUiwgU19JRlJFRywgU19JRkJMSywgU19JRkNIUiwgU19JRkxOSywgU19JRklGTywgU19JRlNPQ0sgfSA9IGNvbnN0YW50c18xLmNvbnN0YW50cztcbi8qKlxuICogU3RhdGlzdGljcyBhYm91dCBhIGZpbGUvZGlyZWN0b3J5LCBsaWtlIGBmcy5TdGF0c2AuXG4gKi9cbmNsYXNzIFN0YXRzIHtcbiAgICBzdGF0aWMgYnVpbGQobm9kZSwgYmlnaW50ID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qgc3RhdHMgPSBuZXcgU3RhdHMoKTtcbiAgICAgICAgY29uc3QgeyB1aWQsIGdpZCwgYXRpbWUsIG10aW1lLCBjdGltZSB9ID0gbm9kZTtcbiAgICAgICAgY29uc3QgZ2V0U3RhdE51bWJlciA9ICFiaWdpbnQgPyBudW1iZXIgPT4gbnVtYmVyIDogbnVtYmVyID0+IEJpZ0ludChudW1iZXIpO1xuICAgICAgICAvLyBDb3B5IGFsbCB2YWx1ZXMgb24gU3RhdHMgZnJvbSBOb2RlLCBzbyB0aGF0IGlmIE5vZGUgdmFsdWVzXG4gICAgICAgIC8vIGNoYW5nZSwgdmFsdWVzIG9uIFN0YXRzIHdvdWxkIHN0aWxsIGJlIHRoZSBvbGQgb25lcyxcbiAgICAgICAgLy8ganVzdCBsaWtlIGluIE5vZGUgZnMuXG4gICAgICAgIHN0YXRzLnVpZCA9IGdldFN0YXROdW1iZXIodWlkKTtcbiAgICAgICAgc3RhdHMuZ2lkID0gZ2V0U3RhdE51bWJlcihnaWQpO1xuICAgICAgICBzdGF0cy5yZGV2ID0gZ2V0U3RhdE51bWJlcihub2RlLnJkZXYpO1xuICAgICAgICBzdGF0cy5ibGtzaXplID0gZ2V0U3RhdE51bWJlcig0MDk2KTtcbiAgICAgICAgc3RhdHMuaW5vID0gZ2V0U3RhdE51bWJlcihub2RlLmlubyk7XG4gICAgICAgIHN0YXRzLnNpemUgPSBnZXRTdGF0TnVtYmVyKG5vZGUuZ2V0U2l6ZSgpKTtcbiAgICAgICAgc3RhdHMuYmxvY2tzID0gZ2V0U3RhdE51bWJlcigxKTtcbiAgICAgICAgc3RhdHMuYXRpbWUgPSBhdGltZTtcbiAgICAgICAgc3RhdHMubXRpbWUgPSBtdGltZTtcbiAgICAgICAgc3RhdHMuY3RpbWUgPSBjdGltZTtcbiAgICAgICAgc3RhdHMuYmlydGh0aW1lID0gY3RpbWU7XG4gICAgICAgIHN0YXRzLmF0aW1lTXMgPSBnZXRTdGF0TnVtYmVyKGF0aW1lLmdldFRpbWUoKSk7XG4gICAgICAgIHN0YXRzLm10aW1lTXMgPSBnZXRTdGF0TnVtYmVyKG10aW1lLmdldFRpbWUoKSk7XG4gICAgICAgIGNvbnN0IGN0aW1lTXMgPSBnZXRTdGF0TnVtYmVyKGN0aW1lLmdldFRpbWUoKSk7XG4gICAgICAgIHN0YXRzLmN0aW1lTXMgPSBjdGltZU1zO1xuICAgICAgICBzdGF0cy5iaXJ0aHRpbWVNcyA9IGN0aW1lTXM7XG4gICAgICAgIGlmIChiaWdpbnQpIHtcbiAgICAgICAgICAgIHN0YXRzLmF0aW1lTnMgPSBCaWdJbnQoYXRpbWUuZ2V0VGltZSgpKSAqIEJpZ0ludCgxMDAwMDAwKTtcbiAgICAgICAgICAgIHN0YXRzLm10aW1lTnMgPSBCaWdJbnQobXRpbWUuZ2V0VGltZSgpKSAqIEJpZ0ludCgxMDAwMDAwKTtcbiAgICAgICAgICAgIGNvbnN0IGN0aW1lTnMgPSBCaWdJbnQoY3RpbWUuZ2V0VGltZSgpKSAqIEJpZ0ludCgxMDAwMDAwKTtcbiAgICAgICAgICAgIHN0YXRzLmN0aW1lTnMgPSBjdGltZU5zO1xuICAgICAgICAgICAgc3RhdHMuYmlydGh0aW1lTnMgPSBjdGltZU5zO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRzLmRldiA9IGdldFN0YXROdW1iZXIoMCk7XG4gICAgICAgIHN0YXRzLm1vZGUgPSBnZXRTdGF0TnVtYmVyKG5vZGUubW9kZSk7XG4gICAgICAgIHN0YXRzLm5saW5rID0gZ2V0U3RhdE51bWJlcihub2RlLm5saW5rKTtcbiAgICAgICAgcmV0dXJuIHN0YXRzO1xuICAgIH1cbiAgICBfY2hlY2tNb2RlUHJvcGVydHkocHJvcGVydHkpIHtcbiAgICAgICAgcmV0dXJuIChOdW1iZXIodGhpcy5tb2RlKSAmIFNfSUZNVCkgPT09IHByb3BlcnR5O1xuICAgIH1cbiAgICBpc0RpcmVjdG9yeSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KFNfSUZESVIpO1xuICAgIH1cbiAgICBpc0ZpbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGVja01vZGVQcm9wZXJ0eShTX0lGUkVHKTtcbiAgICB9XG4gICAgaXNCbG9ja0RldmljZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KFNfSUZCTEspO1xuICAgIH1cbiAgICBpc0NoYXJhY3RlckRldmljZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KFNfSUZDSFIpO1xuICAgIH1cbiAgICBpc1N5bWJvbGljTGluaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KFNfSUZMTkspO1xuICAgIH1cbiAgICBpc0ZJRk8oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGVja01vZGVQcm9wZXJ0eShTX0lGSUZPKTtcbiAgICB9XG4gICAgaXNTb2NrZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGVja01vZGVQcm9wZXJ0eShTX0lGU09DSyk7XG4gICAgfVxufVxuZXhwb3J0cy5TdGF0cyA9IFN0YXRzO1xuZXhwb3J0cy5kZWZhdWx0ID0gU3RhdHM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TdGF0cy5qcy5tYXAiLCIndXNlIHN0cmljdCdcblxuZXhwb3J0cy5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuZXhwb3J0cy50b0J5dGVBcnJheSA9IHRvQnl0ZUFycmF5XG5leHBvcnRzLmZyb21CeXRlQXJyYXkgPSBmcm9tQnl0ZUFycmF5XG5cbnZhciBsb29rdXAgPSBbXVxudmFyIHJldkxvb2t1cCA9IFtdXG52YXIgQXJyID0gdHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnID8gVWludDhBcnJheSA6IEFycmF5XG5cbnZhciBjb2RlID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nXG5mb3IgKHZhciBpID0gMCwgbGVuID0gY29kZS5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICBsb29rdXBbaV0gPSBjb2RlW2ldXG4gIHJldkxvb2t1cFtjb2RlLmNoYXJDb2RlQXQoaSldID0gaVxufVxuXG4vLyBTdXBwb3J0IGRlY29kaW5nIFVSTC1zYWZlIGJhc2U2NCBzdHJpbmdzLCBhcyBOb2RlLmpzIGRvZXMuXG4vLyBTZWU6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jhc2U2NCNVUkxfYXBwbGljYXRpb25zXG5yZXZMb29rdXBbJy0nLmNoYXJDb2RlQXQoMCldID0gNjJcbnJldkxvb2t1cFsnXycuY2hhckNvZGVBdCgwKV0gPSA2M1xuXG5mdW5jdGlvbiBnZXRMZW5zIChiNjQpIHtcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcblxuICBpZiAobGVuICUgNCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKVxuICB9XG5cbiAgLy8gVHJpbSBvZmYgZXh0cmEgYnl0ZXMgYWZ0ZXIgcGxhY2Vob2xkZXIgYnl0ZXMgYXJlIGZvdW5kXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JlYXRnYW1taXQvYmFzZTY0LWpzL2lzc3Vlcy80MlxuICB2YXIgdmFsaWRMZW4gPSBiNjQuaW5kZXhPZignPScpXG4gIGlmICh2YWxpZExlbiA9PT0gLTEpIHZhbGlkTGVuID0gbGVuXG5cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IHZhbGlkTGVuID09PSBsZW5cbiAgICA/IDBcbiAgICA6IDQgLSAodmFsaWRMZW4gJSA0KVxuXG4gIHJldHVybiBbdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbl1cbn1cblxuLy8gYmFzZTY0IGlzIDQvMyArIHVwIHRvIHR3byBjaGFyYWN0ZXJzIG9mIHRoZSBvcmlnaW5hbCBkYXRhXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChiNjQpIHtcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuICByZXR1cm4gKCh2YWxpZExlbiArIHBsYWNlSG9sZGVyc0xlbikgKiAzIC8gNCkgLSBwbGFjZUhvbGRlcnNMZW5cbn1cblxuZnVuY3Rpb24gX2J5dGVMZW5ndGggKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikge1xuICByZXR1cm4gKCh2YWxpZExlbiArIHBsYWNlSG9sZGVyc0xlbikgKiAzIC8gNCkgLSBwbGFjZUhvbGRlcnNMZW5cbn1cblxuZnVuY3Rpb24gdG9CeXRlQXJyYXkgKGI2NCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW5zID0gZ2V0TGVucyhiNjQpXG4gIHZhciB2YWxpZExlbiA9IGxlbnNbMF1cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IGxlbnNbMV1cblxuICB2YXIgYXJyID0gbmV3IEFycihfYnl0ZUxlbmd0aChiNjQsIHZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW4pKVxuXG4gIHZhciBjdXJCeXRlID0gMFxuXG4gIC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDQgY2hhcnNcbiAgdmFyIGxlbiA9IHBsYWNlSG9sZGVyc0xlbiA+IDBcbiAgICA/IHZhbGlkTGVuIC0gNFxuICAgIDogdmFsaWRMZW5cblxuICB2YXIgaVxuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTgpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCAxMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHxcbiAgICAgIHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMyldXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDE2KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gOCkgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAyKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KVxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMSkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKVxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHtcbiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArXG4gICAgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDYgJiAweDNGXSArXG4gICAgbG9va3VwW251bSAmIDB4M0ZdXG59XG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkge1xuICB2YXIgdG1wXG4gIHZhciBvdXRwdXQgPSBbXVxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9XG4gICAgICAoKHVpbnQ4W2ldIDw8IDE2KSAmIDB4RkYwMDAwKSArXG4gICAgICAoKHVpbnQ4W2kgKyAxXSA8PCA4KSAmIDB4RkYwMCkgK1xuICAgICAgKHVpbnQ4W2kgKyAyXSAmIDB4RkYpXG4gICAgb3V0cHV0LnB1c2godHJpcGxldFRvQmFzZTY0KHRtcCkpXG4gIH1cbiAgcmV0dXJuIG91dHB1dC5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBmcm9tQnl0ZUFycmF5ICh1aW50OCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW4gPSB1aW50OC5sZW5ndGhcbiAgdmFyIGV4dHJhQnl0ZXMgPSBsZW4gJSAzIC8vIGlmIHdlIGhhdmUgMSBieXRlIGxlZnQsIHBhZCAyIGJ5dGVzXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsodWludDgsIGksIChpICsgbWF4Q2h1bmtMZW5ndGgpID4gbGVuMiA/IGxlbjIgOiAoaSArIG1heENodW5rTGVuZ3RoKSkpXG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAyXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdICtcbiAgICAgICc9PSdcbiAgICApXG4gIH0gZWxzZSBpZiAoZXh0cmFCeXRlcyA9PT0gMikge1xuICAgIHRtcCA9ICh1aW50OFtsZW4gLSAyXSA8PCA4KSArIHVpbnQ4W2xlbiAtIDFdXG4gICAgcGFydHMucHVzaChcbiAgICAgIGxvb2t1cFt0bXAgPj4gMTBdICtcbiAgICAgIGxvb2t1cFsodG1wID4+IDQpICYgMHgzRl0gK1xuICAgICAgbG9va3VwWyh0bXAgPDwgMikgJiAweDNGXSArXG4gICAgICAnPSdcbiAgICApXG4gIH1cblxuICByZXR1cm4gcGFydHMuam9pbignJylcbn1cbiIsIi8qISBpZWVlNzU0LiBCU0QtMy1DbGF1c2UgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovXG5leHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IChlICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IChtICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKCh2YWx1ZSAqIGMpIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iLCIvKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5cbid1c2Ugc3RyaWN0J1xuXG5pbXBvcnQgKiBhcyBiYXNlNjQgZnJvbSAnYmFzZTY0LWpzJ1xuaW1wb3J0ICogYXMgaWVlZTc1NCBmcm9tICdpZWVlNzU0J1xuY29uc3QgY3VzdG9tSW5zcGVjdFN5bWJvbCA9XG4gICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2xbJ2ZvciddID09PSAnZnVuY3Rpb24nKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGRvdC1ub3RhdGlvblxuICAgID8gU3ltYm9sWydmb3InXSgnbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGRvdC1ub3RhdGlvblxuICAgIDogbnVsbFxuXG5jb25zdCBJTlNQRUNUX01BWF9CWVRFUyA9IDUwXG5cbmNvbnN0IEtfTUFYX0xFTkdUSCA9IDB4N2ZmZmZmZmZcbmNvbnN0IGtNYXhMZW5ndGggPSBLX01BWF9MRU5HVEhcblxuLyoqXG4gKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOlxuICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdClcbiAqICAgPT09IGZhbHNlICAgUHJpbnQgd2FybmluZyBhbmQgcmVjb21tZW5kIHVzaW5nIGBidWZmZXJgIHY0Lnggd2hpY2ggaGFzIGFuIE9iamVjdFxuICogICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNilcbiAqXG4gKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssXG4gKiBPcGVyYSAxMS42KywgaU9TIDQuMisuXG4gKlxuICogV2UgcmVwb3J0IHRoYXQgdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgaWYgdGhlIGFyZSBub3Qgc3ViY2xhc3NhYmxlXG4gKiB1c2luZyBfX3Byb3RvX18uIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgXG4gKiAoU2VlOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU0MzgpLiBJRSAxMCBsYWNrcyBzdXBwb3J0XG4gKiBmb3IgX19wcm90b19fIGFuZCBoYXMgYSBidWdneSB0eXBlZCBhcnJheSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSB0eXBlZEFycmF5U3VwcG9ydCgpXG5cbmlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgY29uc29sZS5lcnJvcihcbiAgICAnVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5ICcgK1xuICAgICdgYnVmZmVyYCB2NS54LiBVc2UgYGJ1ZmZlcmAgdjQueCBpZiB5b3UgcmVxdWlyZSBvbGQgYnJvd3NlciBzdXBwb3J0LidcbiAgKVxufVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIC8vIENhbiB0eXBlZCBhcnJheSBpbnN0YW5jZXMgY2FuIGJlIGF1Z21lbnRlZD9cbiAgdHJ5IHtcbiAgICBjb25zdCBhcnIgPSBuZXcgVWludDhBcnJheSgxKVxuICAgIGNvbnN0IHByb3RvID0geyBmb286IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDQyIH0gfVxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihwcm90bywgVWludDhBcnJheS5wcm90b3R5cGUpXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGFyciwgcHJvdG8pXG4gICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDJcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIucHJvdG90eXBlLCAncGFyZW50Jywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0aGlzKSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzLmJ1ZmZlclxuICB9XG59KVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoQnVmZmVyLnByb3RvdHlwZSwgJ29mZnNldCcsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGhpcykpIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpcy5ieXRlT2Zmc2V0XG4gIH1cbn0pXG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlciAobGVuZ3RoKSB7XG4gIGlmIChsZW5ndGggPiBLX01BWF9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJyArIGxlbmd0aCArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKVxuICB9XG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIGNvbnN0IGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbmd0aClcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGJ1ZiwgQnVmZmVyLnByb3RvdHlwZSlcbiAgcmV0dXJuIGJ1ZlxufVxuXG4vKipcbiAqIFRoZSBCdWZmZXIgY29uc3RydWN0b3IgcmV0dXJucyBpbnN0YW5jZXMgb2YgYFVpbnQ4QXJyYXlgIHRoYXQgaGF2ZSB0aGVpclxuICogcHJvdG90eXBlIGNoYW5nZWQgdG8gYEJ1ZmZlci5wcm90b3R5cGVgLiBGdXJ0aGVybW9yZSwgYEJ1ZmZlcmAgaXMgYSBzdWJjbGFzcyBvZlxuICogYFVpbnQ4QXJyYXlgLCBzbyB0aGUgcmV0dXJuZWQgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhbGwgdGhlIG5vZGUgYEJ1ZmZlcmAgbWV0aG9kc1xuICogYW5kIHRoZSBgVWludDhBcnJheWAgbWV0aG9kcy4gU3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXRcbiAqIHJldHVybnMgYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogVGhlIGBVaW50OEFycmF5YCBwcm90b3R5cGUgcmVtYWlucyB1bm1vZGlmaWVkLlxuICovXG5cbmZ1bmN0aW9uIEJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmdPck9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLiBSZWNlaXZlZCB0eXBlIG51bWJlcidcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFsbG9jVW5zYWZlKGFyZylcbiAgfVxuICByZXR1cm4gZnJvbShhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uXG5cbmZ1bmN0aW9uIGZyb20gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZnJvbVN0cmluZyh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldClcbiAgfVxuXG4gIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheVZpZXcodmFsdWUpXG4gIH1cblxuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgJyArXG4gICAgICAnb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJyArICh0eXBlb2YgdmFsdWUpXG4gICAgKVxuICB9XG5cbiAgaWYgKGlzSW5zdGFuY2UodmFsdWUsIEFycmF5QnVmZmVyKSB8fFxuICAgICAgKHZhbHVlICYmIGlzSW5zdGFuY2UodmFsdWUuYnVmZmVyLCBBcnJheUJ1ZmZlcikpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIChpc0luc3RhbmNlKHZhbHVlLCBTaGFyZWRBcnJheUJ1ZmZlcikgfHxcbiAgICAgICh2YWx1ZSAmJiBpc0luc3RhbmNlKHZhbHVlLmJ1ZmZlciwgU2hhcmVkQXJyYXlCdWZmZXIpKSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIFwidmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInXG4gICAgKVxuICB9XG5cbiAgY29uc3QgdmFsdWVPZiA9IHZhbHVlLnZhbHVlT2YgJiYgdmFsdWUudmFsdWVPZigpXG4gIGlmICh2YWx1ZU9mICE9IG51bGwgJiYgdmFsdWVPZiAhPT0gdmFsdWUpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWVPZiwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgY29uc3QgYiA9IGZyb21PYmplY3QodmFsdWUpXG4gIGlmIChiKSByZXR1cm4gYlxuXG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9QcmltaXRpdmUgIT0gbnVsbCAmJlxuICAgICAgdHlwZW9mIHZhbHVlW1N5bWJvbC50b1ByaW1pdGl2ZV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWVbU3ltYm9sLnRvUHJpbWl0aXZlXSgnc3RyaW5nJyksIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgJ1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksICcgK1xuICAgICdvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgKHR5cGVvZiB2YWx1ZSlcbiAgKVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJ1ZmZlcihhcmcsIGVuY29kaW5nKSBidXQgdGhyb3dzIGEgVHlwZUVycm9yXG4gKiBpZiB2YWx1ZSBpcyBhIG51bWJlci5cbiAqIEJ1ZmZlci5mcm9tKHN0clssIGVuY29kaW5nXSlcbiAqIEJ1ZmZlci5mcm9tKGFycmF5KVxuICogQnVmZmVyLmZyb20oYnVmZmVyKVxuICogQnVmZmVyLmZyb20oYXJyYXlCdWZmZXJbLCBieXRlT2Zmc2V0WywgbGVuZ3RoXV0pXG4gKiovXG5CdWZmZXIuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBmcm9tKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbi8vIE5vdGU6IENoYW5nZSBwcm90b3R5cGUgKmFmdGVyKiBCdWZmZXIuZnJvbSBpcyBkZWZpbmVkIHRvIHdvcmthcm91bmQgQ2hyb21lIGJ1Zzpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvMTQ4XG5PYmplY3Quc2V0UHJvdG90eXBlT2YoQnVmZmVyLnByb3RvdHlwZSwgVWludDhBcnJheS5wcm90b3R5cGUpXG5PYmplY3Quc2V0UHJvdG90eXBlT2YoQnVmZmVyLCBVaW50OEFycmF5KVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInICsgc2l6ZSArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFsbG9jIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIGlmIChzaXplIDw9IDApIHtcbiAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHNpemUpXG4gIH1cbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9ubHkgcGF5IGF0dGVudGlvbiB0byBlbmNvZGluZyBpZiBpdCdzIGEgc3RyaW5nLiBUaGlzXG4gICAgLy8gcHJldmVudHMgYWNjaWRlbnRhbGx5IHNlbmRpbmcgaW4gYSBudW1iZXIgdGhhdCB3b3VsZFxuICAgIC8vIGJlIGludGVycHJldGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcihzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIoc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAoc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG59XG5cbi8qKlxuICogRXF1aXZhbGVudCB0byBCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqICovXG5CdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUoc2l6ZSlcbn1cbi8qKlxuICogRXF1aXZhbGVudCB0byBTbG93QnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUoc2l6ZSlcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gIH1cblxuICBjb25zdCBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZywgZW5jb2RpbmcpIHwgMFxuICBsZXQgYnVmID0gY3JlYXRlQnVmZmVyKGxlbmd0aClcblxuICBjb25zdCBhY3R1YWwgPSBidWYud3JpdGUoc3RyaW5nLCBlbmNvZGluZylcblxuICBpZiAoYWN0dWFsICE9PSBsZW5ndGgpIHtcbiAgICAvLyBXcml0aW5nIGEgaGV4IHN0cmluZywgZm9yIGV4YW1wbGUsIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpbGxcbiAgICAvLyBjYXVzZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCBpbnZhbGlkIGNoYXJhY3RlciB0byBiZSBpZ25vcmVkLiAoZS5nLlxuICAgIC8vICdhYnh4Y2QnIHdpbGwgYmUgdHJlYXRlZCBhcyAnYWInKVxuICAgIGJ1ZiA9IGJ1Zi5zbGljZSgwLCBhY3R1YWwpXG4gIH1cblxuICByZXR1cm4gYnVmXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUxpa2UgKGFycmF5KSB7XG4gIGNvbnN0IGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICBjb25zdCBidWYgPSBjcmVhdGVCdWZmZXIobGVuZ3RoKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgYnVmW2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gYnVmXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheVZpZXcgKGFycmF5Vmlldykge1xuICBpZiAoaXNJbnN0YW5jZShhcnJheVZpZXcsIFVpbnQ4QXJyYXkpKSB7XG4gICAgY29uc3QgY29weSA9IG5ldyBVaW50OEFycmF5KGFycmF5VmlldylcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKGNvcHkuYnVmZmVyLCBjb3B5LmJ5dGVPZmZzZXQsIGNvcHkuYnl0ZUxlbmd0aClcbiAgfVxuICByZXR1cm4gZnJvbUFycmF5TGlrZShhcnJheVZpZXcpXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAoYnl0ZU9mZnNldCA8IDAgfHwgYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJvZmZzZXRcIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0ICsgKGxlbmd0aCB8fCAwKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcImxlbmd0aFwiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBsZXQgYnVmXG4gIGlmIChieXRlT2Zmc2V0ID09PSB1bmRlZmluZWQgJiYgbGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBidWYgPSBuZXcgVWludDhBcnJheShhcnJheSlcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0KVxuICB9IGVsc2Uge1xuICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZVxuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoYnVmLCBCdWZmZXIucHJvdG90eXBlKVxuXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbU9iamVjdCAob2JqKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqKSkge1xuICAgIGNvbnN0IGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgY29uc3QgYnVmID0gY3JlYXRlQnVmZmVyKGxlbilcblxuICAgIGlmIChidWYubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gYnVmXG4gICAgfVxuXG4gICAgb2JqLmNvcHkoYnVmLCAwLCAwLCBsZW4pXG4gICAgcmV0dXJuIGJ1ZlxuICB9XG5cbiAgaWYgKG9iai5sZW5ndGggIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2Ygb2JqLmxlbmd0aCAhPT0gJ251bWJlcicgfHwgbnVtYmVySXNOYU4ob2JqLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIoMClcbiAgICB9XG4gICAgcmV0dXJuIGZyb21BcnJheUxpa2Uob2JqKVxuICB9XG5cbiAgaWYgKG9iai50eXBlID09PSAnQnVmZmVyJyAmJiBBcnJheS5pc0FycmF5KG9iai5kYXRhKSkge1xuICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKG9iai5kYXRhKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBLX01BWF9MRU5HVEhgIGhlcmUgYmVjYXVzZSB0aGF0IGZhaWxzIHdoZW5cbiAgLy8gbGVuZ3RoIGlzIE5hTiAod2hpY2ggaXMgb3RoZXJ3aXNlIGNvZXJjZWQgdG8gemVyby4pXG4gIGlmIChsZW5ndGggPj0gS19NQVhfTEVOR1RIKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemU6IDB4JyArIEtfTUFYX0xFTkdUSC50b1N0cmluZygxNikgKyAnIGJ5dGVzJylcbiAgfVxuICByZXR1cm4gbGVuZ3RoIHwgMFxufVxuXG5mdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKCtsZW5ndGggIT0gbGVuZ3RoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgbGVuZ3RoID0gMFxuICB9XG4gIHJldHVybiBCdWZmZXIuYWxsb2MoK2xlbmd0aClcbn1cblxuQnVmZmVyLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuIGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlciA9PT0gdHJ1ZSAmJlxuICAgIGIgIT09IEJ1ZmZlci5wcm90b3R5cGUgLy8gc28gQnVmZmVyLmlzQnVmZmVyKEJ1ZmZlci5wcm90b3R5cGUpIHdpbGwgYmUgZmFsc2Vcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmIChpc0luc3RhbmNlKGEsIFVpbnQ4QXJyYXkpKSBhID0gQnVmZmVyLmZyb20oYSwgYS5vZmZzZXQsIGEuYnl0ZUxlbmd0aClcbiAgaWYgKGlzSW5zdGFuY2UoYiwgVWludDhBcnJheSkpIGIgPSBCdWZmZXIuZnJvbShiLCBiLm9mZnNldCwgYi5ieXRlTGVuZ3RoKVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihhKSB8fCAhQnVmZmVyLmlzQnVmZmVyKGIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJidWYxXCIsIFwiYnVmMlwiIGFyZ3VtZW50cyBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5J1xuICAgIClcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIGxldCB4ID0gYS5sZW5ndGhcbiAgbGV0IHkgPSBiLmxlbmd0aFxuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIHggPSBhW2ldXG4gICAgICB5ID0gYltpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbkJ1ZmZlci5pc0VuY29kaW5nID0gZnVuY3Rpb24gaXNFbmNvZGluZyAoZW5jb2RpbmcpIHtcbiAgc3dpdGNoIChTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOlxuICAgIGNhc2UgJ3V0ZjgnOlxuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICBjYXNlICdhc2NpaSc6XG4gICAgY2FzZSAnbGF0aW4xJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndWNzLTInOlxuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgIHJldHVybiB0cnVlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbkJ1ZmZlci5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQgKGxpc3QsIGxlbmd0aCkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKVxuICB9XG5cbiAgbGV0IGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKVxuICBsZXQgcG9zID0gMFxuICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgIGxldCBidWYgPSBsaXN0W2ldXG4gICAgaWYgKGlzSW5zdGFuY2UoYnVmLCBVaW50OEFycmF5KSkge1xuICAgICAgaWYgKHBvcyArIGJ1Zi5sZW5ndGggPiBidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIGJ1ZiA9IEJ1ZmZlci5mcm9tKGJ1ZilcbiAgICAgICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChcbiAgICAgICAgICBidWZmZXIsXG4gICAgICAgICAgYnVmLFxuICAgICAgICAgIHBvc1xuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5jb3B5KGJ1ZmZlciwgcG9zKVxuICAgIH1cbiAgICBwb3MgKz0gYnVmLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLmxlbmd0aFxuICB9XG4gIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyaW5nKSB8fCBpc0luc3RhbmNlKHN0cmluZywgQXJyYXlCdWZmZXIpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5ieXRlTGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBvciBBcnJheUJ1ZmZlci4gJyArXG4gICAgICAnUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHN0cmluZ1xuICAgIClcbiAgfVxuXG4gIGNvbnN0IGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgY29uc3QgbXVzdE1hdGNoID0gKGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSA9PT0gdHJ1ZSlcbiAgaWYgKCFtdXN0TWF0Y2ggJiYgbGVuID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvblxuICBsZXQgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB7XG4gICAgICAgICAgcmV0dXJuIG11c3RNYXRjaCA/IC0xIDogdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgfVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuQnVmZmVyLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgbGV0IGxvd2VyZWRDYXNlID0gZmFsc2VcblxuICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0IFwidGhpcy5sZW5ndGggPD0gTUFYX1VJTlQzMlwiIHNpbmNlIGl0J3MgYSByZWFkLW9ubHlcbiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS5cblxuICAvLyBUaGlzIGJlaGF2ZXMgbmVpdGhlciBsaWtlIFN0cmluZyBub3IgVWludDhBcnJheSBpbiB0aGF0IHdlIHNldCBzdGFydC9lbmRcbiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLlxuICAvLyB1bmRlZmluZWQgaXMgaGFuZGxlZCBzcGVjaWFsbHkgYXMgcGVyIEVDTUEtMjYyIDZ0aCBFZGl0aW9uLFxuICAvLyBTZWN0aW9uIDEzLjMuMy43IFJ1bnRpbWUgU2VtYW50aWNzOiBLZXllZEJpbmRpbmdJbml0aWFsaXphdGlvbi5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzJcbiAgLy8gY29lcmNpb24gZmFpbCBiZWxvdy5cbiAgaWYgKHN0YXJ0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoZW5kIDw9IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIEZvcmNlIGNvZXJjaW9uIHRvIHVpbnQzMi4gVGhpcyB3aWxsIGFsc28gY29lcmNlIGZhbHNleS9OYU4gdmFsdWVzIHRvIDAuXG4gIGVuZCA+Pj49IDBcbiAgc3RhcnQgPj4+PSAwXG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbi8vIFRoaXMgcHJvcGVydHkgaXMgdXNlZCBieSBgQnVmZmVyLmlzQnVmZmVyYCAoYW5kIHRoZSBgaXMtYnVmZmVyYCBucG0gcGFja2FnZSlcbi8vIHRvIGRldGVjdCBhIEJ1ZmZlciBpbnN0YW5jZS4gSXQncyBub3QgcG9zc2libGUgdG8gdXNlIGBpbnN0YW5jZW9mIEJ1ZmZlcmBcbi8vIHJlbGlhYmx5IGluIGEgYnJvd3NlcmlmeSBjb250ZXh0IGJlY2F1c2UgdGhlcmUgY291bGQgYmUgbXVsdGlwbGUgZGlmZmVyZW50XG4vLyBjb3BpZXMgb2YgdGhlICdidWZmZXInIHBhY2thZ2UgaW4gdXNlLiBUaGlzIG1ldGhvZCB3b3JrcyBldmVuIGZvciBCdWZmZXJcbi8vIGluc3RhbmNlcyB0aGF0IHdlcmUgY3JlYXRlZCBmcm9tIGFub3RoZXIgY29weSBvZiB0aGUgYGJ1ZmZlcmAgcGFja2FnZS5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvaXNzdWVzLzE1NFxuQnVmZmVyLnByb3RvdHlwZS5faXNCdWZmZXIgPSB0cnVlXG5cbmZ1bmN0aW9uIHN3YXAgKGIsIG4sIG0pIHtcbiAgY29uc3QgaSA9IGJbbl1cbiAgYltuXSA9IGJbbV1cbiAgYlttXSA9IGlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMTYgPSBmdW5jdGlvbiBzd2FwMTYgKCkge1xuICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDEpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMzIgPSBmdW5jdGlvbiBzd2FwMzIgKCkge1xuICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgNCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDMpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDIpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkge1xuICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgOCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cycpXG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDcpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDYpXG4gICAgc3dhcCh0aGlzLCBpICsgMiwgaSArIDUpXG4gICAgc3dhcCh0aGlzLCBpICsgMywgaSArIDQpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nICgpIHtcbiAgY29uc3QgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgPSBCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nXG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgaWYgKHRoaXMgPT09IGIpIHJldHVybiB0cnVlXG4gIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKSA9PT0gMFxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgbGV0IHN0ciA9ICcnXG4gIGNvbnN0IG1heCA9IElOU1BFQ1RfTUFYX0JZVEVTXG4gIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkucmVwbGFjZSgvKC57Mn0pL2csICckMSAnKS50cmltKClcbiAgaWYgKHRoaXMubGVuZ3RoID4gbWF4KSBzdHIgKz0gJyAuLi4gJ1xuICByZXR1cm4gJzxCdWZmZXIgJyArIHN0ciArICc+J1xufVxuaWYgKGN1c3RvbUluc3BlY3RTeW1ib2wpIHtcbiAgQnVmZmVyLnByb3RvdHlwZVtjdXN0b21JbnNwZWN0U3ltYm9sXSA9IEJ1ZmZlci5wcm90b3R5cGUuaW5zcGVjdFxufVxuXG5CdWZmZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlICh0YXJnZXQsIHN0YXJ0LCBlbmQsIHRoaXNTdGFydCwgdGhpc0VuZCkge1xuICBpZiAoaXNJbnN0YW5jZSh0YXJnZXQsIFVpbnQ4QXJyYXkpKSB7XG4gICAgdGFyZ2V0ID0gQnVmZmVyLmZyb20odGFyZ2V0LCB0YXJnZXQub2Zmc2V0LCB0YXJnZXQuYnl0ZUxlbmd0aClcbiAgfVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJ0YXJnZXRcIiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5LiAnICtcbiAgICAgICdSZWNlaXZlZCB0eXBlICcgKyAodHlwZW9mIHRhcmdldClcbiAgICApXG4gIH1cblxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuZCA9IHRhcmdldCA/IHRhcmdldC5sZW5ndGggOiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc1N0YXJ0ID0gMFxuICB9XG4gIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzRW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChzdGFydCA8IDAgfHwgZW5kID4gdGFyZ2V0Lmxlbmd0aCB8fCB0aGlzU3RhcnQgPCAwIHx8IHRoaXNFbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kICYmIHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAxXG4gIH1cblxuICBzdGFydCA+Pj49IDBcbiAgZW5kID4+Pj0gMFxuICB0aGlzU3RhcnQgPj4+PSAwXG4gIHRoaXNFbmQgPj4+PSAwXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCkgcmV0dXJuIDBcblxuICBsZXQgeCA9IHRoaXNFbmQgLSB0aGlzU3RhcnRcbiAgbGV0IHkgPSBlbmQgLSBzdGFydFxuICBjb25zdCBsZW4gPSBNYXRoLm1pbih4LCB5KVxuXG4gIGNvbnN0IHRoaXNDb3B5ID0gdGhpcy5zbGljZSh0aGlzU3RhcnQsIHRoaXNFbmQpXG4gIGNvbnN0IHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZClcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7XG4gICAgICB4ID0gdGhpc0NvcHlbaV1cbiAgICAgIHkgPSB0YXJnZXRDb3B5W2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLFxuLy8gT1IgdGhlIGxhc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0IDw9IGBieXRlT2Zmc2V0YC5cbi8vXG4vLyBBcmd1bWVudHM6XG4vLyAtIGJ1ZmZlciAtIGEgQnVmZmVyIHRvIHNlYXJjaFxuLy8gLSB2YWwgLSBhIHN0cmluZywgQnVmZmVyLCBvciBudW1iZXJcbi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMlxuLy8gLSBlbmNvZGluZyAtIGFuIG9wdGlvbmFsIGVuY29kaW5nLCByZWxldmFudCBpcyB2YWwgaXMgYSBzdHJpbmdcbi8vIC0gZGlyIC0gdHJ1ZSBmb3IgaW5kZXhPZiwgZmFsc2UgZm9yIGxhc3RJbmRleE9mXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgLy8gRW1wdHkgYnVmZmVyIG1lYW5zIG5vIG1hdGNoXG4gIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldFxuICBpZiAodHlwZW9mIGJ5dGVPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0XG4gICAgYnl0ZU9mZnNldCA9IDBcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikge1xuICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSB7XG4gICAgYnl0ZU9mZnNldCA9IC0weDgwMDAwMDAwXG4gIH1cbiAgYnl0ZU9mZnNldCA9ICtieXRlT2Zmc2V0IC8vIENvZXJjZSB0byBOdW1iZXIuXG4gIGlmIChudW1iZXJJc05hTihieXRlT2Zmc2V0KSkge1xuICAgIC8vIGJ5dGVPZmZzZXQ6IGl0IGl0J3MgdW5kZWZpbmVkLCBudWxsLCBOYU4sIFwiZm9vXCIsIGV0Yywgc2VhcmNoIHdob2xlIGJ1ZmZlclxuICAgIGJ5dGVPZmZzZXQgPSBkaXIgPyAwIDogKGJ1ZmZlci5sZW5ndGggLSAxKVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXQ6IG5lZ2F0aXZlIG9mZnNldHMgc3RhcnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBidWZmZXJcbiAgaWYgKGJ5dGVPZmZzZXQgPCAwKSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCArIGJ5dGVPZmZzZXRcbiAgaWYgKGJ5dGVPZmZzZXQgPj0gYnVmZmVyLmxlbmd0aCkge1xuICAgIGlmIChkaXIpIHJldHVybiAtMVxuICAgIGVsc2UgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggLSAxXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IDApIHtcbiAgICBpZiAoZGlyKSBieXRlT2Zmc2V0ID0gMFxuICAgIGVsc2UgcmV0dXJuIC0xXG4gIH1cblxuICAvLyBOb3JtYWxpemUgdmFsXG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIHZhbCA9IEJ1ZmZlci5mcm9tKHZhbCwgZW5jb2RpbmcpXG4gIH1cblxuICAvLyBGaW5hbGx5LCBzZWFyY2ggZWl0aGVyIGluZGV4T2YgKGlmIGRpciBpcyB0cnVlKSBvciBsYXN0SW5kZXhPZlxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbCkpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2U6IGxvb2tpbmcgZm9yIGVtcHR5IHN0cmluZy9idWZmZXIgYWx3YXlzIGZhaWxzXG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMHhGRiAvLyBTZWFyY2ggZm9yIGEgYnl0ZSB2YWx1ZSBbMC0yNTVdXG4gICAgaWYgKHR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoZGlyKSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIFt2YWxdLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyJylcbn1cblxuZnVuY3Rpb24gYXJyYXlJbmRleE9mIChhcnIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICBsZXQgaW5kZXhTaXplID0gMVxuICBsZXQgYXJyTGVuZ3RoID0gYXJyLmxlbmd0aFxuICBsZXQgdmFsTGVuZ3RoID0gdmFsLmxlbmd0aFxuXG4gIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICBpZiAoZW5jb2RpbmcgPT09ICd1Y3MyJyB8fCBlbmNvZGluZyA9PT0gJ3Vjcy0yJyB8fFxuICAgICAgICBlbmNvZGluZyA9PT0gJ3V0ZjE2bGUnIHx8IGVuY29kaW5nID09PSAndXRmLTE2bGUnKSB7XG4gICAgICBpZiAoYXJyLmxlbmd0aCA8IDIgfHwgdmFsLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIC0xXG4gICAgICB9XG4gICAgICBpbmRleFNpemUgPSAyXG4gICAgICBhcnJMZW5ndGggLz0gMlxuICAgICAgdmFsTGVuZ3RoIC89IDJcbiAgICAgIGJ5dGVPZmZzZXQgLz0gMlxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWQgKGJ1ZiwgaSkge1xuICAgIGlmIChpbmRleFNpemUgPT09IDEpIHtcbiAgICAgIHJldHVybiBidWZbaV1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJ1Zi5yZWFkVUludDE2QkUoaSAqIGluZGV4U2l6ZSlcbiAgICB9XG4gIH1cblxuICBsZXQgaVxuICBpZiAoZGlyKSB7XG4gICAgbGV0IGZvdW5kSW5kZXggPSAtMVxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPCBhcnJMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHJlYWQoYXJyLCBpKSA9PT0gcmVhZCh2YWwsIGZvdW5kSW5kZXggPT09IC0xID8gMCA6IGkgLSBmb3VuZEluZGV4KSkge1xuICAgICAgICBpZiAoZm91bmRJbmRleCA9PT0gLTEpIGZvdW5kSW5kZXggPSBpXG4gICAgICAgIGlmIChpIC0gZm91bmRJbmRleCArIDEgPT09IHZhbExlbmd0aCkgcmV0dXJuIGZvdW5kSW5kZXggKiBpbmRleFNpemVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkgaSAtPSBpIC0gZm91bmRJbmRleFxuICAgICAgICBmb3VuZEluZGV4ID0gLTFcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJ5dGVPZmZzZXQgKyB2YWxMZW5ndGggPiBhcnJMZW5ndGgpIGJ5dGVPZmZzZXQgPSBhcnJMZW5ndGggLSB2YWxMZW5ndGhcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IGZvdW5kID0gdHJ1ZVxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB2YWxMZW5ndGg7IGorKykge1xuICAgICAgICBpZiAocmVhZChhcnIsIGkgKyBqKSAhPT0gcmVhZCh2YWwsIGopKSB7XG4gICAgICAgICAgZm91bmQgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmNsdWRlcyA9IGZ1bmN0aW9uIGluY2x1ZGVzICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiB0aGlzLmluZGV4T2YodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykgIT09IC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIGluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIHRydWUpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbiBsYXN0SW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZmFsc2UpXG59XG5cbmZ1bmN0aW9uIGhleFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgb2Zmc2V0ID0gTnVtYmVyKG9mZnNldCkgfHwgMFxuICBjb25zdCByZW1haW5pbmcgPSBidWYubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gIH0gZWxzZSB7XG4gICAgbGVuZ3RoID0gTnVtYmVyKGxlbmd0aClcbiAgICBpZiAobGVuZ3RoID4gcmVtYWluaW5nKSB7XG4gICAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG5cbiAgaWYgKGxlbmd0aCA+IHN0ckxlbiAvIDIpIHtcbiAgICBsZW5ndGggPSBzdHJMZW4gLyAyXG4gIH1cbiAgbGV0IGlcbiAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQoc3RyaW5nLnN1YnN0cihpICogMiwgMiksIDE2KVxuICAgIGlmIChudW1iZXJJc05hTihwYXJzZWQpKSByZXR1cm4gaVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZFxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIHV0ZjhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYmFzZTY0V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihiYXNlNjRUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIHVjczJXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjE2bGVUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiB3cml0ZSAoc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpIHtcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZylcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgZW5jb2RpbmcpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IG9mZnNldFxuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBvZmZzZXRbLCBsZW5ndGhdWywgZW5jb2RpbmddKVxuICB9IGVsc2UgaWYgKGlzRmluaXRlKG9mZnNldCkpIHtcbiAgICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgICBpZiAoaXNGaW5pdGUobGVuZ3RoKSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoID4+PiAwXG4gICAgICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCkgZW5jb2RpbmcgPSAndXRmOCdcbiAgICB9IGVsc2Uge1xuICAgICAgZW5jb2RpbmcgPSBsZW5ndGhcbiAgICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQnXG4gICAgKVxuICB9XG5cbiAgY29uc3QgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nXG5cbiAgaWYgKChzdHJpbmcubGVuZ3RoID4gMCAmJiAobGVuZ3RoIDwgMCB8fCBvZmZzZXQgPCAwKSkgfHwgb2Zmc2V0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICBsZXQgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gYXNjaWlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIGNvbnN0IHJlcyA9IFtdXG5cbiAgbGV0IGkgPSBzdGFydFxuICB3aGlsZSAoaSA8IGVuZCkge1xuICAgIGNvbnN0IGZpcnN0Qnl0ZSA9IGJ1ZltpXVxuICAgIGxldCBjb2RlUG9pbnQgPSBudWxsXG4gICAgbGV0IGJ5dGVzUGVyU2VxdWVuY2UgPSAoZmlyc3RCeXRlID4gMHhFRilcbiAgICAgID8gNFxuICAgICAgOiAoZmlyc3RCeXRlID4gMHhERilcbiAgICAgICAgICA/IDNcbiAgICAgICAgICA6IChmaXJzdEJ5dGUgPiAweEJGKVxuICAgICAgICAgICAgICA/IDJcbiAgICAgICAgICAgICAgOiAxXG5cbiAgICBpZiAoaSArIGJ5dGVzUGVyU2VxdWVuY2UgPD0gZW5kKSB7XG4gICAgICBsZXQgc2Vjb25kQnl0ZSwgdGhpcmRCeXRlLCBmb3VydGhCeXRlLCB0ZW1wQ29kZVBvaW50XG5cbiAgICAgIHN3aXRjaCAoYnl0ZXNQZXJTZXF1ZW5jZSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKGZpcnN0Qnl0ZSA8IDB4ODApIHtcbiAgICAgICAgICAgIGNvZGVQb2ludCA9IGZpcnN0Qnl0ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweDFGKSA8PCAweDYgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0YpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHhDIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAodGhpcmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3RkYgJiYgKHRlbXBDb2RlUG9pbnQgPCAweEQ4MDAgfHwgdGVtcENvZGVQb2ludCA+IDB4REZGRikpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgZm91cnRoQnl0ZSA9IGJ1ZltpICsgM11cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKGZvdXJ0aEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4MTIgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4QyB8ICh0aGlyZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAoZm91cnRoQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4RkZGRiAmJiB0ZW1wQ29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29kZVBvaW50ID09PSBudWxsKSB7XG4gICAgICAvLyB3ZSBkaWQgbm90IGdlbmVyYXRlIGEgdmFsaWQgY29kZVBvaW50IHNvIGluc2VydCBhXG4gICAgICAvLyByZXBsYWNlbWVudCBjaGFyIChVK0ZGRkQpIGFuZCBhZHZhbmNlIG9ubHkgMSBieXRlXG4gICAgICBjb2RlUG9pbnQgPSAweEZGRkRcbiAgICAgIGJ5dGVzUGVyU2VxdWVuY2UgPSAxXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPiAweEZGRkYpIHtcbiAgICAgIC8vIGVuY29kZSB0byB1dGYxNiAoc3Vycm9nYXRlIHBhaXIgZGFuY2UpXG4gICAgICBjb2RlUG9pbnQgLT0gMHgxMDAwMFxuICAgICAgcmVzLnB1c2goY29kZVBvaW50ID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKVxuICAgICAgY29kZVBvaW50ID0gMHhEQzAwIHwgY29kZVBvaW50ICYgMHgzRkZcbiAgICB9XG5cbiAgICByZXMucHVzaChjb2RlUG9pbnQpXG4gICAgaSArPSBieXRlc1BlclNlcXVlbmNlXG4gIH1cblxuICByZXR1cm4gZGVjb2RlQ29kZVBvaW50c0FycmF5KHJlcylcbn1cblxuLy8gQmFzZWQgb24gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjI3NDcyNzIvNjgwNzQyLCB0aGUgYnJvd3NlciB3aXRoXG4vLyB0aGUgbG93ZXN0IGxpbWl0IGlzIENocm9tZSwgd2l0aCAweDEwMDAwIGFyZ3MuXG4vLyBXZSBnbyAxIG1hZ25pdHVkZSBsZXNzLCBmb3Igc2FmZXR5XG5jb25zdCBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgY29uc3QgbGVuID0gY29kZVBvaW50cy5sZW5ndGhcbiAgaWYgKGxlbiA8PSBNQVhfQVJHVU1FTlRTX0xFTkdUSCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgY29kZVBvaW50cykgLy8gYXZvaWQgZXh0cmEgc2xpY2UoKVxuICB9XG5cbiAgLy8gRGVjb2RlIGluIGNodW5rcyB0byBhdm9pZCBcImNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZFwiLlxuICBsZXQgcmVzID0gJydcbiAgbGV0IGkgPSAwXG4gIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoXG4gICAgICBTdHJpbmcsXG4gICAgICBjb2RlUG9pbnRzLnNsaWNlKGksIGkgKz0gTUFYX0FSR1VNRU5UU19MRU5HVEgpXG4gICAgKVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGxldCByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0gJiAweDdGKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gbGF0aW4xU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBsZXQgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gaGV4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBjb25zdCBsZW4gPSBidWYubGVuZ3RoXG5cbiAgaWYgKCFzdGFydCB8fCBzdGFydCA8IDApIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCB8fCBlbmQgPCAwIHx8IGVuZCA+IGxlbikgZW5kID0gbGVuXG5cbiAgbGV0IG91dCA9ICcnXG4gIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgb3V0ICs9IGhleFNsaWNlTG9va3VwVGFibGVbYnVmW2ldXVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgY29uc3QgYnl0ZXMgPSBidWYuc2xpY2Uoc3RhcnQsIGVuZClcbiAgbGV0IHJlcyA9ICcnXG4gIC8vIElmIGJ5dGVzLmxlbmd0aCBpcyBvZGQsIHRoZSBsYXN0IDggYml0cyBtdXN0IGJlIGlnbm9yZWQgKHNhbWUgYXMgbm9kZS5qcylcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGggLSAxOyBpICs9IDIpIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSArIChieXRlc1tpICsgMV0gKiAyNTYpKVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uIHNsaWNlIChzdGFydCwgZW5kKSB7XG4gIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgY29uc3QgbmV3QnVmID0gdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKVxuICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZVxuICBPYmplY3Quc2V0UHJvdG90eXBlT2YobmV3QnVmLCBCdWZmZXIucHJvdG90eXBlKVxuXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVpbnRMRSA9XG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50TEUgPSBmdW5jdGlvbiByZWFkVUludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIGxldCB2YWwgPSB0aGlzW29mZnNldF1cbiAgbGV0IG11bCA9IDFcbiAgbGV0IGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludEJFID1cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuICB9XG5cbiAgbGV0IHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXVxuICBsZXQgbXVsID0gMVxuICB3aGlsZSAoYnl0ZUxlbmd0aCA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVpbnQ4ID1cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVpbnQxNkxFID1cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkxFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludDE2QkUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDgpIHwgdGhpc1tvZmZzZXQgKyAxXVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50MzJMRSA9XG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKCh0aGlzW29mZnNldF0pIHxcbiAgICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSkgK1xuICAgICAgKHRoaXNbb2Zmc2V0ICsgM10gKiAweDEwMDAwMDApXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVpbnQzMkJFID1cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkJFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEJpZ1VJbnQ2NExFID0gZGVmaW5lQmlnSW50TWV0aG9kKGZ1bmN0aW9uIHJlYWRCaWdVSW50NjRMRSAob2Zmc2V0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICB2YWxpZGF0ZU51bWJlcihvZmZzZXQsICdvZmZzZXQnKVxuICBjb25zdCBmaXJzdCA9IHRoaXNbb2Zmc2V0XVxuICBjb25zdCBsYXN0ID0gdGhpc1tvZmZzZXQgKyA3XVxuICBpZiAoZmlyc3QgPT09IHVuZGVmaW5lZCB8fCBsYXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICBib3VuZHNFcnJvcihvZmZzZXQsIHRoaXMubGVuZ3RoIC0gOClcbiAgfVxuXG4gIGNvbnN0IGxvID0gZmlyc3QgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiA4ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMTYgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAyNFxuXG4gIGNvbnN0IGhpID0gdGhpc1srK29mZnNldF0gK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiA4ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMTYgK1xuICAgIGxhc3QgKiAyICoqIDI0XG5cbiAgcmV0dXJuIEJpZ0ludChsbykgKyAoQmlnSW50KGhpKSA8PCBCaWdJbnQoMzIpKVxufSlcblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkQmlnVUludDY0QkUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gcmVhZEJpZ1VJbnQ2NEJFIChvZmZzZXQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIHZhbGlkYXRlTnVtYmVyKG9mZnNldCwgJ29mZnNldCcpXG4gIGNvbnN0IGZpcnN0ID0gdGhpc1tvZmZzZXRdXG4gIGNvbnN0IGxhc3QgPSB0aGlzW29mZnNldCArIDddXG4gIGlmIChmaXJzdCA9PT0gdW5kZWZpbmVkIHx8IGxhc3QgPT09IHVuZGVmaW5lZCkge1xuICAgIGJvdW5kc0Vycm9yKG9mZnNldCwgdGhpcy5sZW5ndGggLSA4KVxuICB9XG5cbiAgY29uc3QgaGkgPSBmaXJzdCAqIDIgKiogMjQgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIHRoaXNbKytvZmZzZXRdXG5cbiAgY29uc3QgbG8gPSB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMjQgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIGxhc3RcblxuICByZXR1cm4gKEJpZ0ludChoaSkgPDwgQmlnSW50KDMyKSkgKyBCaWdJbnQobG8pXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRMRSA9IGZ1bmN0aW9uIHJlYWRJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICBsZXQgdmFsID0gdGhpc1tvZmZzZXRdXG4gIGxldCBtdWwgPSAxXG4gIGxldCBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50QkUgPSBmdW5jdGlvbiByZWFkSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgbGV0IGkgPSBieXRlTGVuZ3RoXG4gIGxldCBtdWwgPSAxXG4gIGxldCB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgaWYgKCEodGhpc1tvZmZzZXRdICYgMHg4MCkpIHJldHVybiAodGhpc1tvZmZzZXRdKVxuICByZXR1cm4gKCgweGZmIC0gdGhpc1tvZmZzZXRdICsgMSkgKiAtMSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICBjb25zdCB2YWwgPSB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2QkUgPSBmdW5jdGlvbiByZWFkSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgY29uc3QgdmFsID0gdGhpc1tvZmZzZXQgKyAxXSB8ICh0aGlzW29mZnNldF0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkxFID0gZnVuY3Rpb24gcmVhZEludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0pIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSA8PCAyNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEJpZ0ludDY0TEUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gcmVhZEJpZ0ludDY0TEUgKG9mZnNldCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgdmFsaWRhdGVOdW1iZXIob2Zmc2V0LCAnb2Zmc2V0JylcbiAgY29uc3QgZmlyc3QgPSB0aGlzW29mZnNldF1cbiAgY29uc3QgbGFzdCA9IHRoaXNbb2Zmc2V0ICsgN11cbiAgaWYgKGZpcnN0ID09PSB1bmRlZmluZWQgfHwgbGFzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYm91bmRzRXJyb3Iob2Zmc2V0LCB0aGlzLmxlbmd0aCAtIDgpXG4gIH1cblxuICBjb25zdCB2YWwgPSB0aGlzW29mZnNldCArIDRdICtcbiAgICB0aGlzW29mZnNldCArIDVdICogMiAqKiA4ICtcbiAgICB0aGlzW29mZnNldCArIDZdICogMiAqKiAxNiArXG4gICAgKGxhc3QgPDwgMjQpIC8vIE92ZXJmbG93XG5cbiAgcmV0dXJuIChCaWdJbnQodmFsKSA8PCBCaWdJbnQoMzIpKSArXG4gICAgQmlnSW50KGZpcnN0ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMjQpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRCaWdJbnQ2NEJFID0gZGVmaW5lQmlnSW50TWV0aG9kKGZ1bmN0aW9uIHJlYWRCaWdJbnQ2NEJFIChvZmZzZXQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIHZhbGlkYXRlTnVtYmVyKG9mZnNldCwgJ29mZnNldCcpXG4gIGNvbnN0IGZpcnN0ID0gdGhpc1tvZmZzZXRdXG4gIGNvbnN0IGxhc3QgPSB0aGlzW29mZnNldCArIDddXG4gIGlmIChmaXJzdCA9PT0gdW5kZWZpbmVkIHx8IGxhc3QgPT09IHVuZGVmaW5lZCkge1xuICAgIGJvdW5kc0Vycm9yKG9mZnNldCwgdGhpcy5sZW5ndGggLSA4KVxuICB9XG5cbiAgY29uc3QgdmFsID0gKGZpcnN0IDw8IDI0KSArIC8vIE92ZXJmbG93XG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgdGhpc1srK29mZnNldF1cblxuICByZXR1cm4gKEJpZ0ludCh2YWwpIDw8IEJpZ0ludCgzMikpICtcbiAgICBCaWdJbnQodGhpc1srK29mZnNldF0gKiAyICoqIDI0ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMTYgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiA4ICtcbiAgICBsYXN0KVxufSlcblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRMRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdExFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlTEUgPSBmdW5jdGlvbiByZWFkRG91YmxlTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCA1MiwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlQkUgPSBmdW5jdGlvbiByZWFkRG91YmxlQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJidWZmZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJylcbiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVaW50TEUgPVxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlVUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNvbnN0IG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgbGV0IG11bCA9IDFcbiAgbGV0IGkgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnRCRSA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY29uc3QgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICBsZXQgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIGxldCBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludDggPVxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVVSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVaW50MTZMRSA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludDE2QkUgPVxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnQzMkxFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVaW50MzJCRSA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5mdW5jdGlvbiB3cnRCaWdVSW50NjRMRSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBtaW4sIG1heCkge1xuICBjaGVja0ludEJJKHZhbHVlLCBtaW4sIG1heCwgYnVmLCBvZmZzZXQsIDcpXG5cbiAgbGV0IGxvID0gTnVtYmVyKHZhbHVlICYgQmlnSW50KDB4ZmZmZmZmZmYpKVxuICBidWZbb2Zmc2V0KytdID0gbG9cbiAgbG8gPSBsbyA+PiA4XG4gIGJ1ZltvZmZzZXQrK10gPSBsb1xuICBsbyA9IGxvID4+IDhcbiAgYnVmW29mZnNldCsrXSA9IGxvXG4gIGxvID0gbG8gPj4gOFxuICBidWZbb2Zmc2V0KytdID0gbG9cbiAgbGV0IGhpID0gTnVtYmVyKHZhbHVlID4+IEJpZ0ludCgzMikgJiBCaWdJbnQoMHhmZmZmZmZmZikpXG4gIGJ1ZltvZmZzZXQrK10gPSBoaVxuICBoaSA9IGhpID4+IDhcbiAgYnVmW29mZnNldCsrXSA9IGhpXG4gIGhpID0gaGkgPj4gOFxuICBidWZbb2Zmc2V0KytdID0gaGlcbiAgaGkgPSBoaSA+PiA4XG4gIGJ1ZltvZmZzZXQrK10gPSBoaVxuICByZXR1cm4gb2Zmc2V0XG59XG5cbmZ1bmN0aW9uIHdydEJpZ1VJbnQ2NEJFIChidWYsIHZhbHVlLCBvZmZzZXQsIG1pbiwgbWF4KSB7XG4gIGNoZWNrSW50QkkodmFsdWUsIG1pbiwgbWF4LCBidWYsIG9mZnNldCwgNylcblxuICBsZXQgbG8gPSBOdW1iZXIodmFsdWUgJiBCaWdJbnQoMHhmZmZmZmZmZikpXG4gIGJ1ZltvZmZzZXQgKyA3XSA9IGxvXG4gIGxvID0gbG8gPj4gOFxuICBidWZbb2Zmc2V0ICsgNl0gPSBsb1xuICBsbyA9IGxvID4+IDhcbiAgYnVmW29mZnNldCArIDVdID0gbG9cbiAgbG8gPSBsbyA+PiA4XG4gIGJ1ZltvZmZzZXQgKyA0XSA9IGxvXG4gIGxldCBoaSA9IE51bWJlcih2YWx1ZSA+PiBCaWdJbnQoMzIpICYgQmlnSW50KDB4ZmZmZmZmZmYpKVxuICBidWZbb2Zmc2V0ICsgM10gPSBoaVxuICBoaSA9IGhpID4+IDhcbiAgYnVmW29mZnNldCArIDJdID0gaGlcbiAgaGkgPSBoaSA+PiA4XG4gIGJ1ZltvZmZzZXQgKyAxXSA9IGhpXG4gIGhpID0gaGkgPj4gOFxuICBidWZbb2Zmc2V0XSA9IGhpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVCaWdVSW50NjRMRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiB3cml0ZUJpZ1VJbnQ2NExFICh2YWx1ZSwgb2Zmc2V0ID0gMCkge1xuICByZXR1cm4gd3J0QmlnVUludDY0TEUodGhpcywgdmFsdWUsIG9mZnNldCwgQmlnSW50KDApLCBCaWdJbnQoJzB4ZmZmZmZmZmZmZmZmZmZmZicpKVxufSlcblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUJpZ1VJbnQ2NEJFID0gZGVmaW5lQmlnSW50TWV0aG9kKGZ1bmN0aW9uIHdyaXRlQmlnVUludDY0QkUgKHZhbHVlLCBvZmZzZXQgPSAwKSB7XG4gIHJldHVybiB3cnRCaWdVSW50NjRCRSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBCaWdJbnQoMCksIEJpZ0ludCgnMHhmZmZmZmZmZmZmZmZmZmZmJykpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50TEUgPSBmdW5jdGlvbiB3cml0ZUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNvbnN0IGxpbWl0ID0gTWF0aC5wb3coMiwgKDggKiBieXRlTGVuZ3RoKSAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIGxldCBpID0gMFxuICBsZXQgbXVsID0gMVxuICBsZXQgc3ViID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgLSAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50QkUgPSBmdW5jdGlvbiB3cml0ZUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNvbnN0IGxpbWl0ID0gTWF0aC5wb3coMiwgKDggKiBieXRlTGVuZ3RoKSAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIGxldCBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgbGV0IG11bCA9IDFcbiAgbGV0IHN1YiA9IDBcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgKyAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50OCA9IGZ1bmN0aW9uIHdyaXRlSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4N2YsIC0weDgwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVCaWdJbnQ2NExFID0gZGVmaW5lQmlnSW50TWV0aG9kKGZ1bmN0aW9uIHdyaXRlQmlnSW50NjRMRSAodmFsdWUsIG9mZnNldCA9IDApIHtcbiAgcmV0dXJuIHdydEJpZ1VJbnQ2NExFKHRoaXMsIHZhbHVlLCBvZmZzZXQsIC1CaWdJbnQoJzB4ODAwMDAwMDAwMDAwMDAwMCcpLCBCaWdJbnQoJzB4N2ZmZmZmZmZmZmZmZmZmZicpKVxufSlcblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUJpZ0ludDY0QkUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gd3JpdGVCaWdJbnQ2NEJFICh2YWx1ZSwgb2Zmc2V0ID0gMCkge1xuICByZXR1cm4gd3J0QmlnVUludDY0QkUodGhpcywgdmFsdWUsIG9mZnNldCwgLUJpZ0ludCgnMHg4MDAwMDAwMDAwMDAwMDAwJyksIEJpZ0ludCgnMHg3ZmZmZmZmZmZmZmZmZmZmJykpXG59KVxuXG5mdW5jdGlvbiBjaGVja0lFRUU3NTQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG4gIGlmIChvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG9hdCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgNCwgMy40MDI4MjM0NjYzODUyODg2ZSszOCwgLTMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgMjMsIDQpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdExFID0gZnVuY3Rpb24gd3JpdGVGbG9hdExFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0QkUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuZnVuY3Rpb24gd3JpdGVEb3VibGUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0YXJnZXQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBzaG91bGQgYmUgYSBCdWZmZXInKVxuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKGVuZCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcycpXG5cbiAgLy8gQXJlIHdlIG9vYj9cbiAgaWYgKGVuZCA+IHRoaXMubGVuZ3RoKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0IDwgZW5kIC0gc3RhcnQpIHtcbiAgICBlbmQgPSB0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgKyBzdGFydFxuICB9XG5cbiAgY29uc3QgbGVuID0gZW5kIC0gc3RhcnRcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0ICYmIHR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gVXNlIGJ1aWx0LWluIHdoZW4gYXZhaWxhYmxlLCBtaXNzaW5nIGZyb20gSUUxMVxuICAgIHRoaXMuY29weVdpdGhpbih0YXJnZXRTdGFydCwgc3RhcnQsIGVuZClcbiAgfSBlbHNlIHtcbiAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChcbiAgICAgIHRhcmdldCxcbiAgICAgIHRoaXMuc3ViYXJyYXkoc3RhcnQsIGVuZCksXG4gICAgICB0YXJnZXRTdGFydFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxuLy8gVXNhZ2U6XG4vLyAgICBidWZmZXIuZmlsbChudW1iZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKGJ1ZmZlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoc3RyaW5nWywgb2Zmc2V0WywgZW5kXV1bLCBlbmNvZGluZ10pXG5CdWZmZXIucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiBmaWxsICh2YWwsIHN0YXJ0LCBlbmQsIGVuY29kaW5nKSB7XG4gIC8vIEhhbmRsZSBzdHJpbmcgY2FzZXM6XG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IHN0YXJ0XG4gICAgICBzdGFydCA9IDBcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZW5kID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmRcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfVxuICAgIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3QgYmUgYSBzdHJpbmcnKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJyAmJiAhQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgfVxuICAgIGlmICh2YWwubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBjb2RlID0gdmFsLmNoYXJDb2RlQXQoMClcbiAgICAgIGlmICgoZW5jb2RpbmcgPT09ICd1dGY4JyAmJiBjb2RlIDwgMTI4KSB8fFxuICAgICAgICAgIGVuY29kaW5nID09PSAnbGF0aW4xJykge1xuICAgICAgICAvLyBGYXN0IHBhdGg6IElmIGB2YWxgIGZpdHMgaW50byBhIHNpbmdsZSBieXRlLCB1c2UgdGhhdCBudW1lcmljIHZhbHVlLlxuICAgICAgICB2YWwgPSBjb2RlXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMjU1XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgdmFsID0gTnVtYmVyKHZhbClcbiAgfVxuXG4gIC8vIEludmFsaWQgcmFuZ2VzIGFyZSBub3Qgc2V0IHRvIGEgZGVmYXVsdCwgc28gY2FuIHJhbmdlIGNoZWNrIGVhcmx5LlxuICBpZiAoc3RhcnQgPCAwIHx8IHRoaXMubGVuZ3RoIDwgc3RhcnQgfHwgdGhpcy5sZW5ndGggPCBlbmQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignT3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc3RhcnQgPSBzdGFydCA+Pj4gMFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IHRoaXMubGVuZ3RoIDogZW5kID4+PiAwXG5cbiAgaWYgKCF2YWwpIHZhbCA9IDBcblxuICBsZXQgaVxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICB0aGlzW2ldID0gdmFsXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGJ5dGVzID0gQnVmZmVyLmlzQnVmZmVyKHZhbClcbiAgICAgID8gdmFsXG4gICAgICA6IEJ1ZmZlci5mcm9tKHZhbCwgZW5jb2RpbmcpXG4gICAgY29uc3QgbGVuID0gYnl0ZXMubGVuZ3RoXG4gICAgaWYgKGxlbiA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlIFwiJyArIHZhbCArXG4gICAgICAgICdcIiBpcyBpbnZhbGlkIGZvciBhcmd1bWVudCBcInZhbHVlXCInKVxuICAgIH1cbiAgICBmb3IgKGkgPSAwOyBpIDwgZW5kIC0gc3RhcnQ7ICsraSkge1xuICAgICAgdGhpc1tpICsgc3RhcnRdID0gYnl0ZXNbaSAlIGxlbl1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBDVVNUT00gRVJST1JTXG4vLyA9PT09PT09PT09PT09XG5cbi8vIFNpbXBsaWZpZWQgdmVyc2lvbnMgZnJvbSBOb2RlLCBjaGFuZ2VkIGZvciBCdWZmZXItb25seSB1c2FnZVxuY29uc3QgZXJyb3JzID0ge31cbmZ1bmN0aW9uIEUgKHN5bSwgZ2V0TWVzc2FnZSwgQmFzZSkge1xuICBlcnJvcnNbc3ltXSA9IGNsYXNzIE5vZGVFcnJvciBleHRlbmRzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yICgpIHtcbiAgICAgIHN1cGVyKClcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdtZXNzYWdlJywge1xuICAgICAgICB2YWx1ZTogZ2V0TWVzc2FnZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9KVxuXG4gICAgICAvLyBBZGQgdGhlIGVycm9yIGNvZGUgdG8gdGhlIG5hbWUgdG8gaW5jbHVkZSBpdCBpbiB0aGUgc3RhY2sgdHJhY2UuXG4gICAgICB0aGlzLm5hbWUgPSBgJHt0aGlzLm5hbWV9IFske3N5bX1dYFxuICAgICAgLy8gQWNjZXNzIHRoZSBzdGFjayB0byBnZW5lcmF0ZSB0aGUgZXJyb3IgbWVzc2FnZSBpbmNsdWRpbmcgdGhlIGVycm9yIGNvZGVcbiAgICAgIC8vIGZyb20gdGhlIG5hbWUuXG4gICAgICB0aGlzLnN0YWNrIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gICAgICAvLyBSZXNldCB0aGUgbmFtZSB0byB0aGUgYWN0dWFsIG5hbWUuXG4gICAgICBkZWxldGUgdGhpcy5uYW1lXG4gICAgfVxuXG4gICAgZ2V0IGNvZGUgKCkge1xuICAgICAgcmV0dXJuIHN5bVxuICAgIH1cblxuICAgIHNldCBjb2RlICh2YWx1ZSkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2RlJywge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0b1N0cmluZyAoKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5uYW1lfSBbJHtzeW19XTogJHt0aGlzLm1lc3NhZ2V9YFxuICAgIH1cbiAgfVxufVxuXG5FKCdFUlJfQlVGRkVSX09VVF9PRl9CT1VORFMnLFxuICBmdW5jdGlvbiAobmFtZSkge1xuICAgIGlmIChuYW1lKSB7XG4gICAgICByZXR1cm4gYCR7bmFtZX0gaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzYFxuICAgIH1cblxuICAgIHJldHVybiAnQXR0ZW1wdCB0byBhY2Nlc3MgbWVtb3J5IG91dHNpZGUgYnVmZmVyIGJvdW5kcydcbiAgfSwgUmFuZ2VFcnJvcilcbkUoJ0VSUl9JTlZBTElEX0FSR19UWVBFJyxcbiAgZnVuY3Rpb24gKG5hbWUsIGFjdHVhbCkge1xuICAgIHJldHVybiBgVGhlIFwiJHtuYW1lfVwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2YgYWN0dWFsfWBcbiAgfSwgVHlwZUVycm9yKVxuRSgnRVJSX09VVF9PRl9SQU5HRScsXG4gIGZ1bmN0aW9uIChzdHIsIHJhbmdlLCBpbnB1dCkge1xuICAgIGxldCBtc2cgPSBgVGhlIHZhbHVlIG9mIFwiJHtzdHJ9XCIgaXMgb3V0IG9mIHJhbmdlLmBcbiAgICBsZXQgcmVjZWl2ZWQgPSBpbnB1dFxuICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKGlucHV0KSAmJiBNYXRoLmFicyhpbnB1dCkgPiAyICoqIDMyKSB7XG4gICAgICByZWNlaXZlZCA9IGFkZE51bWVyaWNhbFNlcGFyYXRvcihTdHJpbmcoaW5wdXQpKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnYmlnaW50Jykge1xuICAgICAgcmVjZWl2ZWQgPSBTdHJpbmcoaW5wdXQpXG4gICAgICBpZiAoaW5wdXQgPiBCaWdJbnQoMikgKiogQmlnSW50KDMyKSB8fCBpbnB1dCA8IC0oQmlnSW50KDIpICoqIEJpZ0ludCgzMikpKSB7XG4gICAgICAgIHJlY2VpdmVkID0gYWRkTnVtZXJpY2FsU2VwYXJhdG9yKHJlY2VpdmVkKVxuICAgICAgfVxuICAgICAgcmVjZWl2ZWQgKz0gJ24nXG4gICAgfVxuICAgIG1zZyArPSBgIEl0IG11c3QgYmUgJHtyYW5nZX0uIFJlY2VpdmVkICR7cmVjZWl2ZWR9YFxuICAgIHJldHVybiBtc2dcbiAgfSwgUmFuZ2VFcnJvcilcblxuZnVuY3Rpb24gYWRkTnVtZXJpY2FsU2VwYXJhdG9yICh2YWwpIHtcbiAgbGV0IHJlcyA9ICcnXG4gIGxldCBpID0gdmFsLmxlbmd0aFxuICBjb25zdCBzdGFydCA9IHZhbFswXSA9PT0gJy0nID8gMSA6IDBcbiAgZm9yICg7IGkgPj0gc3RhcnQgKyA0OyBpIC09IDMpIHtcbiAgICByZXMgPSBgXyR7dmFsLnNsaWNlKGkgLSAzLCBpKX0ke3Jlc31gXG4gIH1cbiAgcmV0dXJuIGAke3ZhbC5zbGljZSgwLCBpKX0ke3Jlc31gXG59XG5cbi8vIENIRUNLIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGNoZWNrQm91bmRzIChidWYsIG9mZnNldCwgYnl0ZUxlbmd0aCkge1xuICB2YWxpZGF0ZU51bWJlcihvZmZzZXQsICdvZmZzZXQnKVxuICBpZiAoYnVmW29mZnNldF0gPT09IHVuZGVmaW5lZCB8fCBidWZbb2Zmc2V0ICsgYnl0ZUxlbmd0aF0gPT09IHVuZGVmaW5lZCkge1xuICAgIGJvdW5kc0Vycm9yKG9mZnNldCwgYnVmLmxlbmd0aCAtIChieXRlTGVuZ3RoICsgMSkpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tJbnRCSSAodmFsdWUsIG1pbiwgbWF4LCBidWYsIG9mZnNldCwgYnl0ZUxlbmd0aCkge1xuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHtcbiAgICBjb25zdCBuID0gdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcgPyAnbicgOiAnJ1xuICAgIGxldCByYW5nZVxuICAgIGlmIChieXRlTGVuZ3RoID4gMykge1xuICAgICAgaWYgKG1pbiA9PT0gMCB8fCBtaW4gPT09IEJpZ0ludCgwKSkge1xuICAgICAgICByYW5nZSA9IGA+PSAwJHtufSBhbmQgPCAyJHtufSAqKiAkeyhieXRlTGVuZ3RoICsgMSkgKiA4fSR7bn1gXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByYW5nZSA9IGA+PSAtKDIke259ICoqICR7KGJ5dGVMZW5ndGggKyAxKSAqIDggLSAxfSR7bn0pIGFuZCA8IDIgKiogYCArXG4gICAgICAgICAgICAgICAgYCR7KGJ5dGVMZW5ndGggKyAxKSAqIDggLSAxfSR7bn1gXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhbmdlID0gYD49ICR7bWlufSR7bn0gYW5kIDw9ICR7bWF4fSR7bn1gXG4gICAgfVxuICAgIHRocm93IG5ldyBlcnJvcnMuRVJSX09VVF9PRl9SQU5HRSgndmFsdWUnLCByYW5nZSwgdmFsdWUpXG4gIH1cbiAgY2hlY2tCb3VuZHMoYnVmLCBvZmZzZXQsIGJ5dGVMZW5ndGgpXG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlTnVtYmVyICh2YWx1ZSwgbmFtZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBlcnJvcnMuRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ251bWJlcicsIHZhbHVlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJvdW5kc0Vycm9yICh2YWx1ZSwgbGVuZ3RoLCB0eXBlKSB7XG4gIGlmIChNYXRoLmZsb29yKHZhbHVlKSAhPT0gdmFsdWUpIHtcbiAgICB2YWxpZGF0ZU51bWJlcih2YWx1ZSwgdHlwZSlcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkVSUl9PVVRfT0ZfUkFOR0UodHlwZSB8fCAnb2Zmc2V0JywgJ2FuIGludGVnZXInLCB2YWx1ZSlcbiAgfVxuXG4gIGlmIChsZW5ndGggPCAwKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5FUlJfQlVGRkVSX09VVF9PRl9CT1VORFMoKVxuICB9XG5cbiAgdGhyb3cgbmV3IGVycm9ycy5FUlJfT1VUX09GX1JBTkdFKHR5cGUgfHwgJ29mZnNldCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgPj0gJHt0eXBlID8gMSA6IDB9IGFuZCA8PSAke2xlbmd0aH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpXG59XG5cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT1cblxuY29uc3QgSU5WQUxJRF9CQVNFNjRfUkUgPSAvW14rLzAtOUEtWmEtei1fXS9nXG5cbmZ1bmN0aW9uIGJhc2U2NGNsZWFuIChzdHIpIHtcbiAgLy8gTm9kZSB0YWtlcyBlcXVhbCBzaWducyBhcyBlbmQgb2YgdGhlIEJhc2U2NCBlbmNvZGluZ1xuICBzdHIgPSBzdHIuc3BsaXQoJz0nKVswXVxuICAvLyBOb2RlIHN0cmlwcyBvdXQgaW52YWxpZCBjaGFyYWN0ZXJzIGxpa2UgXFxuIGFuZCBcXHQgZnJvbSB0aGUgc3RyaW5nLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgc3RyID0gc3RyLnRyaW0oKS5yZXBsYWNlKElOVkFMSURfQkFTRTY0X1JFLCAnJylcbiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJ1xuICBpZiAoc3RyLmxlbmd0aCA8IDIpIHJldHVybiAnJ1xuICAvLyBOb2RlIGFsbG93cyBmb3Igbm9uLXBhZGRlZCBiYXNlNjQgc3RyaW5ncyAobWlzc2luZyB0cmFpbGluZyA9PT0pLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgc3RyID0gc3RyICsgJz0nXG4gIH1cbiAgcmV0dXJuIHN0clxufVxuXG5mdW5jdGlvbiB1dGY4VG9CeXRlcyAoc3RyaW5nLCB1bml0cykge1xuICB1bml0cyA9IHVuaXRzIHx8IEluZmluaXR5XG4gIGxldCBjb2RlUG9pbnRcbiAgY29uc3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aFxuICBsZXQgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcbiAgY29uc3QgYnl0ZXMgPSBbXVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBjb2RlUG9pbnQgPSBzdHJpbmcuY2hhckNvZGVBdChpKVxuXG4gICAgLy8gaXMgc3Vycm9nYXRlIGNvbXBvbmVudFxuICAgIGlmIChjb2RlUG9pbnQgPiAweEQ3RkYgJiYgY29kZVBvaW50IDwgMHhFMDAwKSB7XG4gICAgICAvLyBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCFsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAgIC8vIG5vIGxlYWQgeWV0XG4gICAgICAgIGlmIChjb2RlUG9pbnQgPiAweERCRkYpIHtcbiAgICAgICAgICAvLyB1bmV4cGVjdGVkIHRyYWlsXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmIChpICsgMSA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgLy8gdW5wYWlyZWQgbGVhZFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyB2YWxpZCBsZWFkXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyAyIGxlYWRzIGluIGEgcm93XG4gICAgICBpZiAoY29kZVBvaW50IDwgMHhEQzAwKSB7XG4gICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIHZhbGlkIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICBjb2RlUG9pbnQgPSAobGVhZFN1cnJvZ2F0ZSAtIDB4RDgwMCA8PCAxMCB8IGNvZGVQb2ludCAtIDB4REMwMCkgKyAweDEwMDAwXG4gICAgfSBlbHNlIGlmIChsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAvLyB2YWxpZCBibXAgY2hhciwgYnV0IGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICB9XG5cbiAgICBsZWFkU3Vycm9nYXRlID0gbnVsbFxuXG4gICAgLy8gZW5jb2RlIHV0ZjhcbiAgICBpZiAoY29kZVBvaW50IDwgMHg4MCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAxKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKGNvZGVQb2ludClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4ODAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgfCAweEMwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAzKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDIHwgMHhFMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gNCkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4MTIgfCAweEYwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvZGUgcG9pbnQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVRvQnl0ZXMgKHN0cikge1xuICBjb25zdCBieXRlQXJyYXkgPSBbXVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLlxuICAgIGJ5dGVBcnJheS5wdXNoKHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7XG4gIGxldCBjLCBoaSwgbG9cbiAgY29uc3QgYnl0ZUFycmF5ID0gW11cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcblxuICAgIGMgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgIGhpID0gYyA+PiA4XG4gICAgbG8gPSBjICUgMjU2XG4gICAgYnl0ZUFycmF5LnB1c2gobG8pXG4gICAgYnl0ZUFycmF5LnB1c2goaGkpXG4gIH1cblxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRvQnl0ZXMgKHN0cikge1xuICByZXR1cm4gYmFzZTY0LnRvQnl0ZUFycmF5KGJhc2U2NGNsZWFuKHN0cikpXG59XG5cbmZ1bmN0aW9uIGJsaXRCdWZmZXIgKHNyYywgZHN0LCBvZmZzZXQsIGxlbmd0aCkge1xuICBsZXQgaVxuICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKGkgKyBvZmZzZXQgPj0gZHN0Lmxlbmd0aCkgfHwgKGkgPj0gc3JjLmxlbmd0aCkpIGJyZWFrXG4gICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuLy8gQXJyYXlCdWZmZXIgb3IgVWludDhBcnJheSBvYmplY3RzIGZyb20gb3RoZXIgY29udGV4dHMgKGkuZS4gaWZyYW1lcykgZG8gbm90IHBhc3Ncbi8vIHRoZSBgaW5zdGFuY2VvZmAgY2hlY2sgYnV0IHRoZXkgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgb2YgdGhhdCB0eXBlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9pc3N1ZXMvMTY2XG5mdW5jdGlvbiBpc0luc3RhbmNlIChvYmosIHR5cGUpIHtcbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIHR5cGUgfHxcbiAgICAob2JqICE9IG51bGwgJiYgb2JqLmNvbnN0cnVjdG9yICE9IG51bGwgJiYgb2JqLmNvbnN0cnVjdG9yLm5hbWUgIT0gbnVsbCAmJlxuICAgICAgb2JqLmNvbnN0cnVjdG9yLm5hbWUgPT09IHR5cGUubmFtZSlcbn1cbmZ1bmN0aW9uIG51bWJlcklzTmFOIChvYmopIHtcbiAgLy8gRm9yIElFMTEgc3VwcG9ydFxuICByZXR1cm4gb2JqICE9PSBvYmogLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbn1cblxuLy8gQ3JlYXRlIGxvb2t1cCB0YWJsZSBmb3IgYHRvU3RyaW5nKCdoZXgnKWBcbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvaXNzdWVzLzIxOVxuY29uc3QgaGV4U2xpY2VMb29rdXBUYWJsZSA9IChmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGFscGhhYmV0ID0gJzAxMjM0NTY3ODlhYmNkZWYnXG4gIGNvbnN0IHRhYmxlID0gbmV3IEFycmF5KDI1NilcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgKytpKSB7XG4gICAgY29uc3QgaTE2ID0gaSAqIDE2XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCAxNjsgKytqKSB7XG4gICAgICB0YWJsZVtpMTYgKyBqXSA9IGFscGhhYmV0W2ldICsgYWxwaGFiZXRbal1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRhYmxlXG59KSgpXG5cbi8vIFJldHVybiBub3QgZnVuY3Rpb24gd2l0aCBFcnJvciBpZiBCaWdJbnQgbm90IHN1cHBvcnRlZFxuZnVuY3Rpb24gZGVmaW5lQmlnSW50TWV0aG9kIChmbikge1xuICByZXR1cm4gdHlwZW9mIEJpZ0ludCA9PT0gJ3VuZGVmaW5lZCcgPyBCdWZmZXJCaWdJbnROb3REZWZpbmVkIDogZm5cbn1cblxuZnVuY3Rpb24gQnVmZmVyQmlnSW50Tm90RGVmaW5lZCAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignQmlnSW50IG5vdCBzdXBwb3J0ZWQnKVxufVxuXG5leHBvcnQge1xuICBCdWZmZXIsXG4gIFNsb3dCdWZmZXIsXG4gIElOU1BFQ1RfTUFYX0JZVEVTLFxuICBrTWF4TGVuZ3RoLFxufSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5CdWZmZXIgPSB2b2lkIDA7XG52YXIgbm9kZV9idWZmZXJfMSA9IHJlcXVpcmUoXCJub2RlOmJ1ZmZlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkJ1ZmZlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbm9kZV9idWZmZXJfMS5CdWZmZXI7IH0gfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1idWZmZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmJ1ZmZlckZyb20gPSBleHBvcnRzLmJ1ZmZlckFsbG9jVW5zYWZlID0gZXhwb3J0cy5CdWZmZXIgPSB2b2lkIDA7XG5jb25zdCBidWZmZXJfMSA9IHJlcXVpcmUoXCIuLi9idWZmZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCdWZmZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGJ1ZmZlcl8xLkJ1ZmZlcjsgfSB9KTtcbmZ1bmN0aW9uIGJ1ZmZlclYwUDEyUG9ueWZpbGwoYXJnMCwgLi4uYXJncykge1xuICAgIHJldHVybiBuZXcgYnVmZmVyXzEuQnVmZmVyKGFyZzAsIC4uLmFyZ3MpO1xufVxuY29uc3QgYnVmZmVyQWxsb2NVbnNhZmUgPSBidWZmZXJfMS5CdWZmZXIuYWxsb2NVbnNhZmUgfHwgYnVmZmVyVjBQMTJQb255ZmlsbDtcbmV4cG9ydHMuYnVmZmVyQWxsb2NVbnNhZmUgPSBidWZmZXJBbGxvY1Vuc2FmZTtcbmNvbnN0IGJ1ZmZlckZyb20gPSBidWZmZXJfMS5CdWZmZXIuZnJvbSB8fCBidWZmZXJWMFAxMlBvbnlmaWxsO1xuZXhwb3J0cy5idWZmZXJGcm9tID0gYnVmZmVyRnJvbTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1ZmZlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaW5oZXJpdHMgPSBpbmhlcml0cztcbmV4cG9ydHMucHJvbWlzaWZ5ID0gcHJvbWlzaWZ5O1xuZXhwb3J0cy5pbnNwZWN0ID0gaW5zcGVjdDtcbmV4cG9ydHMuZm9ybWF0ID0gZm9ybWF0O1xuLyoqXG4gKiBNaW5pbWFsIGltcGxlbWVudGF0aW9uIG9mIE5vZGUuanMgdXRpbC5pbmhlcml0cyBmdW5jdGlvbi5cbiAqIFNldHMgdXAgcHJvdG90eXBlIGluaGVyaXRhbmNlIGJldHdlZW4gY29uc3RydWN0b3IgZnVuY3Rpb25zLlxuICovXG5mdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBpZiAoY3RvciA9PT0gdW5kZWZpbmVkIHx8IGN0b3IgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGNvbnN0cnVjdG9yIHRvIGluaGVyaXQgZnJvbSBpcyBub3QgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBpZiAoc3VwZXJDdG9yID09PSB1bmRlZmluZWQgfHwgc3VwZXJDdG9yID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBzdXBlciBjb25zdHJ1Y3RvciB0byBpbmhlcml0IGZyb20gaXMgbm90IGRlZmluZWQnKTtcbiAgICB9XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ3Rvci5wcm90b3R5cGUsIHtcbiAgICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgICAgIHZhbHVlOiBjdG9yLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogTWluaW1hbCBpbXBsZW1lbnRhdGlvbiBvZiBOb2RlLmpzIHV0aWwucHJvbWlzaWZ5IGZ1bmN0aW9uLlxuICogQ29udmVydHMgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb25zIHRvIFByb21pc2UtYmFzZWQgZnVuY3Rpb25zLlxuICovXG5mdW5jdGlvbiBwcm9taXNpZnkoZm4pIHtcbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9yaWdpbmFsXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIGZ1bmN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgZm4uY2FsbCh0aGlzLCAuLi5hcmdzLCAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuLyoqXG4gKiBNaW5pbWFsIGltcGxlbWVudGF0aW9uIG9mIE5vZGUuanMgdXRpbC5pbnNwZWN0IGZ1bmN0aW9uLlxuICogQ29udmVydHMgYSB2YWx1ZSB0byBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBmb3IgZGVidWdnaW5nLlxuICovXG5mdW5jdGlvbiBpbnNwZWN0KHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKVxuICAgICAgICByZXR1cm4gJ251bGwnO1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICAgIHJldHVybiBgJyR7dmFsdWV9J2A7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpXG4gICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHZhbHVlLm1hcChpdGVtID0+IGluc3BlY3QoaXRlbSkpLmpvaW4oJywgJyk7XG4gICAgICAgIHJldHVybiBgWyAke2l0ZW1zfSBdYDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHZhbHVlKVxuICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsXSkgPT4gYCR7a2V5fTogJHtpbnNwZWN0KHZhbCl9YClcbiAgICAgICAgICAgIC5qb2luKCcsICcpO1xuICAgICAgICByZXR1cm4gYHsgJHtlbnRyaWVzfSB9YDtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG4vKipcbiAqIE1pbmltYWwgaW1wbGVtZW50YXRpb24gb2YgTm9kZS5qcyB1dGlsLmZvcm1hdCBmdW5jdGlvbi5cbiAqIFByb3ZpZGVzIHByaW50Zi1zdHlsZSBzdHJpbmcgZm9ybWF0dGluZyB3aXRoIGJhc2ljIHBsYWNlaG9sZGVyIHN1cHBvcnQuXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdCh0ZW1wbGF0ZSwgLi4uYXJncykge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlO1xuICAgIGxldCByZXN1bHQgPSB0ZW1wbGF0ZTtcbiAgICBsZXQgYXJnSW5kZXggPSAwO1xuICAgIC8vIFJlcGxhY2UgJXMgKHN0cmluZyksICVkIChudW1iZXIpLCAlaiAoSlNPTikgcGxhY2Vob2xkZXJzXG4gICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoLyVbc2RqJV0vZywgbWF0Y2ggPT4ge1xuICAgICAgICBpZiAoYXJnSW5kZXggPj0gYXJncy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgIGNvbnN0IGFyZyA9IGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICAgIHN3aXRjaCAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNhc2UgJyVzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGFyZyk7XG4gICAgICAgICAgICBjYXNlICclZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcihhcmcpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBjYXNlICclaic6XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbQ2lyY3VsYXJdJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICclJSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICclJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gQXBwZW5kIHJlbWFpbmluZyBhcmd1bWVudHNcbiAgICB3aGlsZSAoYXJnSW5kZXggPCBhcmdzLmxlbmd0aCkge1xuICAgICAgICByZXN1bHQgKz0gJyAnICsgU3RyaW5nKGFyZ3NbYXJnSW5kZXgrK10pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8vIEFkYXB0ZWQgZnJvbSBOb2RlLmpzIC4uL2ludGVybmFsL2Vycm9ycy5qcywgdXNlZCBmb3IgdGhyb3dpbmcgc2ltaWxhciBlcnJvcnMgdG8gTm9kZS5qcy5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQXNzZXJ0aW9uRXJyb3IgPSBleHBvcnRzLlJhbmdlRXJyb3IgPSBleHBvcnRzLlR5cGVFcnJvciA9IGV4cG9ydHMuRXJyb3IgPSB2b2lkIDA7XG5leHBvcnRzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuZXhwb3J0cy5FID0gRTtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi91dGlsXCIpO1xuY29uc3Qga0NvZGUgPSB0eXBlb2YgU3ltYm9sID09PSAndW5kZWZpbmVkJyA/ICdfa0NvZGUnIDogU3ltYm9sKCdjb2RlJyk7XG5jb25zdCBtZXNzYWdlcyA9IHt9O1xuZnVuY3Rpb24gbWFrZU5vZGVFcnJvcihCYXNlKSB7XG4gICAgcmV0dXJuIGNsYXNzIE5vZGVFcnJvciBleHRlbmRzIEJhc2Uge1xuICAgICAgICBjb25zdHJ1Y3RvcihrZXksIC4uLmFyZ3MpIHtcbiAgICAgICAgICAgIHN1cGVyKG1lc3NhZ2Uoa2V5LCBhcmdzKSk7XG4gICAgICAgICAgICB0aGlzLmNvZGUgPSBrZXk7XG4gICAgICAgICAgICB0aGlzW2tDb2RlXSA9IGtleTtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9IGAke3N1cGVyLm5hbWV9IFske3RoaXNba0NvZGVdfV1gO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmNvbnN0IGcgPSB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIDogZ2xvYmFsO1xuY2xhc3MgQXNzZXJ0aW9uRXJyb3IgZXh0ZW5kcyBnLkVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcgfHwgb3B0aW9ucyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IGV4cG9ydHMuVHlwZUVycm9yKCdFUlJfSU5WQUxJRF9BUkdfVFlQRScsICdvcHRpb25zJywgJ29iamVjdCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHN1cGVyKG9wdGlvbnMubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzdXBlcihgJHsoMCwgdXRpbF8xLmluc3BlY3QpKG9wdGlvbnMuYWN0dWFsKS5zbGljZSgwLCAxMjgpfSBgICsgYCR7b3B0aW9ucy5vcGVyYXRvcn0gJHsoMCwgdXRpbF8xLmluc3BlY3QpKG9wdGlvbnMuZXhwZWN0ZWQpLnNsaWNlKDAsIDEyOCl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZW5lcmF0ZWRNZXNzYWdlID0gIW9wdGlvbnMubWVzc2FnZTtcbiAgICAgICAgdGhpcy5uYW1lID0gJ0Fzc2VydGlvbkVycm9yIFtFUlJfQVNTRVJUSU9OXSc7XG4gICAgICAgIHRoaXMuY29kZSA9ICdFUlJfQVNTRVJUSU9OJztcbiAgICAgICAgdGhpcy5hY3R1YWwgPSBvcHRpb25zLmFjdHVhbDtcbiAgICAgICAgdGhpcy5leHBlY3RlZCA9IG9wdGlvbnMuZXhwZWN0ZWQ7XG4gICAgICAgIHRoaXMub3BlcmF0b3IgPSBvcHRpb25zLm9wZXJhdG9yO1xuICAgICAgICBleHBvcnRzLkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIG9wdGlvbnMuc3RhY2tTdGFydEZ1bmN0aW9uKTtcbiAgICB9XG59XG5leHBvcnRzLkFzc2VydGlvbkVycm9yID0gQXNzZXJ0aW9uRXJyb3I7XG5mdW5jdGlvbiBtZXNzYWdlKGtleSwgYXJncykge1xuICAgIGlmICh0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJylcbiAgICAgICAgdGhyb3cgbmV3IGV4cG9ydHMuRXJyb3IoJ0Vycm9yIG1lc3NhZ2Uga2V5IG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgICBjb25zdCBtc2cgPSBtZXNzYWdlc1trZXldO1xuICAgIGlmICghbXNnKVxuICAgICAgICB0aHJvdyBuZXcgZXhwb3J0cy5FcnJvcihgQW4gaW52YWxpZCBlcnJvciBtZXNzYWdlIGtleSB3YXMgdXNlZDogJHtrZXl9LmApO1xuICAgIGxldCBmbXQ7XG4gICAgaWYgKHR5cGVvZiBtc2cgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZm10ID0gbXNnO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZm10ID0gdXRpbF8xLmZvcm1hdDtcbiAgICAgICAgaWYgKGFyZ3MgPT09IHVuZGVmaW5lZCB8fCBhcmdzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBtc2c7XG4gICAgICAgIGFyZ3MudW5zaGlmdChtc2cpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKGZtdC5hcHBseShudWxsLCBhcmdzKSk7XG59XG4vLyBVdGlsaXR5IGZ1bmN0aW9uIGZvciByZWdpc3RlcmluZyB0aGUgZXJyb3IgY29kZXMuIE9ubHkgdXNlZCBoZXJlLiBFeHBvcnRlZFxuLy8gKm9ubHkqIHRvIGFsbG93IGZvciB0ZXN0aW5nLlxuZnVuY3Rpb24gRShzeW0sIHZhbCkge1xuICAgIG1lc3NhZ2VzW3N5bV0gPSB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nID8gdmFsIDogU3RyaW5nKHZhbCk7XG59XG5leHBvcnRzLkVycm9yID0gbWFrZU5vZGVFcnJvcihnLkVycm9yKTtcbmV4cG9ydHMuVHlwZUVycm9yID0gbWFrZU5vZGVFcnJvcihnLlR5cGVFcnJvcik7XG5leHBvcnRzLlJhbmdlRXJyb3IgPSBtYWtlTm9kZUVycm9yKGcuUmFuZ2VFcnJvcik7XG5FKCdFUlJfRElSX0NMT1NFRCcsICdEaXJlY3RvcnkgaGFuZGxlIHdhcyBjbG9zZWQnKTtcbkUoJ0VSUl9ESVJfQ09OQ1VSUkVOVF9PUEVSQVRJT04nLCAnQ2Fubm90IGRvIHN5bmNocm9ub3VzIHdvcmsgb24gZGlyZWN0b3J5IGhhbmRsZSB3aXRoIGNvbmN1cnJlbnQgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMnKTtcbkUoJ0VSUl9JTlZBTElEX0ZJTEVfVVJMX0hPU1QnLCAnRmlsZSBVUkwgaG9zdCBtdXN0IGJlIFwibG9jYWxob3N0XCIgb3IgZW1wdHkgb24gJXMnKTtcbkUoJ0VSUl9JTlZBTElEX0ZJTEVfVVJMX1BBVEgnLCAnRmlsZSBVUkwgcGF0aCAlcycpO1xuRSgnRVJSX0lOVkFMSURfT1BUX1ZBTFVFJywgKG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgcmV0dXJuIGBUaGUgdmFsdWUgXCIke1N0cmluZyh2YWx1ZSl9XCIgaXMgaW52YWxpZCBmb3Igb3B0aW9uIFwiJHtuYW1lfVwiYDtcbn0pO1xuRSgnRVJSX0lOVkFMSURfT1BUX1ZBTFVFX0VOQ09ESU5HJywgdmFsdWUgPT4gYFRoZSB2YWx1ZSBcIiR7U3RyaW5nKHZhbHVlKX1cIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJlbmNvZGluZ1wiYCk7XG5FKCdFUlJfSU5WQUxJRF9BUkdfVkFMVUUnLCAnVW5hYmxlIHRvIG9wZW4gZmlsZSBhcyBibG9iJyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lcnJvcnMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkVOQ09ESU5HX1VURjggPSB2b2lkIDA7XG5leHBvcnRzLmFzc2VydEVuY29kaW5nID0gYXNzZXJ0RW5jb2Rpbmc7XG5leHBvcnRzLnN0clRvRW5jb2RpbmcgPSBzdHJUb0VuY29kaW5nO1xuY29uc3QgYnVmZmVyXzEgPSByZXF1aXJlKFwiLi92ZW5kb3Ivbm9kZS9pbnRlcm5hbC9idWZmZXJcIik7XG5jb25zdCBlcnJvcnMgPSByZXF1aXJlKFwiLi92ZW5kb3Ivbm9kZS9pbnRlcm5hbC9lcnJvcnNcIik7XG5leHBvcnRzLkVOQ09ESU5HX1VURjggPSAndXRmOCc7XG5mdW5jdGlvbiBhc3NlcnRFbmNvZGluZyhlbmNvZGluZykge1xuICAgIGlmIChlbmNvZGluZyAmJiAhYnVmZmVyXzEuQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKVxuICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLlR5cGVFcnJvcignRVJSX0lOVkFMSURfT1BUX1ZBTFVFX0VOQ09ESU5HJywgZW5jb2RpbmcpO1xufVxuZnVuY3Rpb24gc3RyVG9FbmNvZGluZyhzdHIsIGVuY29kaW5nKSB7XG4gICAgaWYgKCFlbmNvZGluZyB8fCBlbmNvZGluZyA9PT0gZXhwb3J0cy5FTkNPRElOR19VVEY4KVxuICAgICAgICByZXR1cm4gc3RyOyAvLyBVVEYtOFxuICAgIGlmIChlbmNvZGluZyA9PT0gJ2J1ZmZlcicpXG4gICAgICAgIHJldHVybiBuZXcgYnVmZmVyXzEuQnVmZmVyKHN0cik7IC8vIGBidWZmZXJgIGVuY29kaW5nXG4gICAgcmV0dXJuIG5ldyBidWZmZXJfMS5CdWZmZXIoc3RyKS50b1N0cmluZyhlbmNvZGluZyk7IC8vIEN1c3RvbSBlbmNvZGluZ1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZW5jb2RpbmcuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkRpcmVudCA9IHZvaWQgMDtcbmNvbnN0IGNvbnN0YW50c18xID0gcmVxdWlyZShcIi4uL2NvbnN0YW50c1wiKTtcbmNvbnN0IGVuY29kaW5nXzEgPSByZXF1aXJlKFwiLi4vZW5jb2RpbmdcIik7XG5jb25zdCB7IFNfSUZNVCwgU19JRkRJUiwgU19JRlJFRywgU19JRkJMSywgU19JRkNIUiwgU19JRkxOSywgU19JRklGTywgU19JRlNPQ0sgfSA9IGNvbnN0YW50c18xLmNvbnN0YW50cztcbi8qKlxuICogQSBkaXJlY3RvcnkgZW50cnksIGxpa2UgYGZzLkRpcmVudGAuXG4gKi9cbmNsYXNzIERpcmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubmFtZSA9ICcnO1xuICAgICAgICB0aGlzLnBhdGggPSAnJztcbiAgICAgICAgdGhpcy5wYXJlbnRQYXRoID0gJyc7XG4gICAgICAgIHRoaXMubW9kZSA9IDA7XG4gICAgfVxuICAgIHN0YXRpYyBidWlsZChsaW5rLCBlbmNvZGluZykge1xuICAgICAgICBjb25zdCBkaXJlbnQgPSBuZXcgRGlyZW50KCk7XG4gICAgICAgIGNvbnN0IHsgbW9kZSB9ID0gbGluay5nZXROb2RlKCk7XG4gICAgICAgIGRpcmVudC5uYW1lID0gKDAsIGVuY29kaW5nXzEuc3RyVG9FbmNvZGluZykobGluay5nZXROYW1lKCksIGVuY29kaW5nKTtcbiAgICAgICAgZGlyZW50Lm1vZGUgPSBtb2RlO1xuICAgICAgICBkaXJlbnQucGF0aCA9IGxpbmsuZ2V0UGFyZW50UGF0aCgpO1xuICAgICAgICBkaXJlbnQucGFyZW50UGF0aCA9IGRpcmVudC5wYXRoO1xuICAgICAgICByZXR1cm4gZGlyZW50O1xuICAgIH1cbiAgICBfY2hlY2tNb2RlUHJvcGVydHkocHJvcGVydHkpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1vZGUgJiBTX0lGTVQpID09PSBwcm9wZXJ0eTtcbiAgICB9XG4gICAgaXNEaXJlY3RvcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGVja01vZGVQcm9wZXJ0eShTX0lGRElSKTtcbiAgICB9XG4gICAgaXNGaWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoU19JRlJFRyk7XG4gICAgfVxuICAgIGlzQmxvY2tEZXZpY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGVja01vZGVQcm9wZXJ0eShTX0lGQkxLKTtcbiAgICB9XG4gICAgaXNDaGFyYWN0ZXJEZXZpY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGVja01vZGVQcm9wZXJ0eShTX0lGQ0hSKTtcbiAgICB9XG4gICAgaXNTeW1ib2xpY0xpbmsoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGVja01vZGVQcm9wZXJ0eShTX0lGTE5LKTtcbiAgICB9XG4gICAgaXNGSUZPKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoU19JRklGTyk7XG4gICAgfVxuICAgIGlzU29ja2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoU19JRlNPQ0spO1xuICAgIH1cbn1cbmV4cG9ydHMuRGlyZW50ID0gRGlyZW50O1xuZXhwb3J0cy5kZWZhdWx0ID0gRGlyZW50O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGlyZW50LmpzLm1hcCIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG4iLCIvLyAncGF0aCcgbW9kdWxlIGV4dHJhY3RlZCBmcm9tIE5vZGUuanMgdjguMTEuMSAob25seSB0aGUgcG9zaXggcGFydClcbi8vIHRyYW5zcGxpdGVkIHdpdGggQmFiZWxcblxuLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gYXNzZXJ0UGF0aChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICcgKyBKU09OLnN0cmluZ2lmeShwYXRoKSk7XG4gIH1cbn1cblxuLy8gUmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIHdpdGggZGlyZWN0b3J5IG5hbWVzXG5mdW5jdGlvbiBub3JtYWxpemVTdHJpbmdQb3NpeChwYXRoLCBhbGxvd0Fib3ZlUm9vdCkge1xuICB2YXIgcmVzID0gJyc7XG4gIHZhciBsYXN0U2VnbWVudExlbmd0aCA9IDA7XG4gIHZhciBsYXN0U2xhc2ggPSAtMTtcbiAgdmFyIGRvdHMgPSAwO1xuICB2YXIgY29kZTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gcGF0aC5sZW5ndGg7ICsraSkge1xuICAgIGlmIChpIDwgcGF0aC5sZW5ndGgpXG4gICAgICBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGVsc2UgaWYgKGNvZGUgPT09IDQ3IC8qLyovKVxuICAgICAgYnJlYWs7XG4gICAgZWxzZVxuICAgICAgY29kZSA9IDQ3IC8qLyovO1xuICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgaWYgKGxhc3RTbGFzaCA9PT0gaSAtIDEgfHwgZG90cyA9PT0gMSkge1xuICAgICAgICAvLyBOT09QXG4gICAgICB9IGVsc2UgaWYgKGxhc3RTbGFzaCAhPT0gaSAtIDEgJiYgZG90cyA9PT0gMikge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA8IDIgfHwgbGFzdFNlZ21lbnRMZW5ndGggIT09IDIgfHwgcmVzLmNoYXJDb2RlQXQocmVzLmxlbmd0aCAtIDEpICE9PSA0NiAvKi4qLyB8fCByZXMuY2hhckNvZGVBdChyZXMubGVuZ3RoIC0gMikgIT09IDQ2IC8qLiovKSB7XG4gICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICB2YXIgbGFzdFNsYXNoSW5kZXggPSByZXMubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgIGlmIChsYXN0U2xhc2hJbmRleCAhPT0gcmVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaWYgKGxhc3RTbGFzaEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHJlcyA9ICcnO1xuICAgICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMgPSByZXMuc2xpY2UoMCwgbGFzdFNsYXNoSW5kZXgpO1xuICAgICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gcmVzLmxlbmd0aCAtIDEgLSByZXMubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYXN0U2xhc2ggPSBpO1xuICAgICAgICAgICAgICBkb3RzID0gMDtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMubGVuZ3RoID09PSAyIHx8IHJlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJlcyA9ICcnO1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIGlmIChyZXMubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJlcyArPSAnLy4uJztcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXMgPSAnLi4nO1xuICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKVxuICAgICAgICAgIHJlcyArPSAnLycgKyBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmVzID0gcGF0aC5zbGljZShsYXN0U2xhc2ggKyAxLCBpKTtcbiAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSBpIC0gbGFzdFNsYXNoIC0gMTtcbiAgICAgIH1cbiAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICBkb3RzID0gMDtcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDQ2IC8qLiovICYmIGRvdHMgIT09IC0xKSB7XG4gICAgICArK2RvdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvdHMgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gX2Zvcm1hdChzZXAsIHBhdGhPYmplY3QpIHtcbiAgdmFyIGRpciA9IHBhdGhPYmplY3QuZGlyIHx8IHBhdGhPYmplY3Qucm9vdDtcbiAgdmFyIGJhc2UgPSBwYXRoT2JqZWN0LmJhc2UgfHwgKHBhdGhPYmplY3QubmFtZSB8fCAnJykgKyAocGF0aE9iamVjdC5leHQgfHwgJycpO1xuICBpZiAoIWRpcikge1xuICAgIHJldHVybiBiYXNlO1xuICB9XG4gIGlmIChkaXIgPT09IHBhdGhPYmplY3Qucm9vdCkge1xuICAgIHJldHVybiBkaXIgKyBiYXNlO1xuICB9XG4gIHJldHVybiBkaXIgKyBzZXAgKyBiYXNlO1xufVxuXG52YXIgcG9zaXggPSB7XG4gIC8vIHBhdGgucmVzb2x2ZShbZnJvbSAuLi5dLCB0bylcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSgpIHtcbiAgICB2YXIgcmVzb2x2ZWRQYXRoID0gJyc7XG4gICAgdmFyIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcbiAgICB2YXIgY3dkO1xuXG4gICAgZm9yICh2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpLS0pIHtcbiAgICAgIHZhciBwYXRoO1xuICAgICAgaWYgKGkgPj0gMClcbiAgICAgICAgcGF0aCA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoY3dkID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgY3dkID0gcHJvY2Vzcy5jd2QoKTtcbiAgICAgICAgcGF0aCA9IGN3ZDtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICAgICAgLy8gU2tpcCBlbXB0eSBlbnRyaWVzXG4gICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgICByZXNvbHZlZEFic29sdXRlID0gcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKi8qLztcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gICAgLy8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKCkgZmFpbHMpXG5cbiAgICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVTdHJpbmdQb3NpeChyZXNvbHZlZFBhdGgsICFyZXNvbHZlZEFic29sdXRlKTtcblxuICAgIGlmIChyZXNvbHZlZEFic29sdXRlKSB7XG4gICAgICBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDApXG4gICAgICAgIHJldHVybiAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiAnLyc7XG4gICAgfSBlbHNlIGlmIChyZXNvbHZlZFBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHJlc29sdmVkUGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcuJztcbiAgICB9XG4gIH0sXG5cbiAgbm9ybWFsaXplOiBmdW5jdGlvbiBub3JtYWxpemUocGF0aCkge1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiAnLic7XG5cbiAgICB2YXIgaXNBYnNvbHV0ZSA9IHBhdGguY2hhckNvZGVBdCgwKSA9PT0gNDcgLyovKi87XG4gICAgdmFyIHRyYWlsaW5nU2VwYXJhdG9yID0gcGF0aC5jaGFyQ29kZUF0KHBhdGgubGVuZ3RoIC0gMSkgPT09IDQ3IC8qLyovO1xuXG4gICAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gICAgcGF0aCA9IG5vcm1hbGl6ZVN0cmluZ1Bvc2l4KHBhdGgsICFpc0Fic29sdXRlKTtcblxuICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCAmJiAhaXNBYnNvbHV0ZSkgcGF0aCA9ICcuJztcbiAgICBpZiAocGF0aC5sZW5ndGggPiAwICYmIHRyYWlsaW5nU2VwYXJhdG9yKSBwYXRoICs9ICcvJztcblxuICAgIGlmIChpc0Fic29sdXRlKSByZXR1cm4gJy8nICsgcGF0aDtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICBpc0Fic29sdXRlOiBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIHJldHVybiBwYXRoLmxlbmd0aCA+IDAgJiYgcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKi8qLztcbiAgfSxcblxuICBqb2luOiBmdW5jdGlvbiBqb2luKCkge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuICcuJztcbiAgICB2YXIgam9pbmVkO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuICAgICAgYXNzZXJ0UGF0aChhcmcpO1xuICAgICAgaWYgKGFyZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChqb2luZWQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICBqb2luZWQgPSBhcmc7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBqb2luZWQgKz0gJy8nICsgYXJnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoam9pbmVkID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gJy4nO1xuICAgIHJldHVybiBwb3NpeC5ub3JtYWxpemUoam9pbmVkKTtcbiAgfSxcblxuICByZWxhdGl2ZTogZnVuY3Rpb24gcmVsYXRpdmUoZnJvbSwgdG8pIHtcbiAgICBhc3NlcnRQYXRoKGZyb20pO1xuICAgIGFzc2VydFBhdGgodG8pO1xuXG4gICAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gJyc7XG5cbiAgICBmcm9tID0gcG9zaXgucmVzb2x2ZShmcm9tKTtcbiAgICB0byA9IHBvc2l4LnJlc29sdmUodG8pO1xuXG4gICAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gJyc7XG5cbiAgICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gICAgdmFyIGZyb21TdGFydCA9IDE7XG4gICAgZm9yICg7IGZyb21TdGFydCA8IGZyb20ubGVuZ3RoOyArK2Zyb21TdGFydCkge1xuICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQpICE9PSA0NyAvKi8qLylcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmcm9tRW5kID0gZnJvbS5sZW5ndGg7XG4gICAgdmFyIGZyb21MZW4gPSBmcm9tRW5kIC0gZnJvbVN0YXJ0O1xuXG4gICAgLy8gVHJpbSBhbnkgbGVhZGluZyBiYWNrc2xhc2hlc1xuICAgIHZhciB0b1N0YXJ0ID0gMTtcbiAgICBmb3IgKDsgdG9TdGFydCA8IHRvLmxlbmd0aDsgKyt0b1N0YXJ0KSB7XG4gICAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSAhPT0gNDcgLyovKi8pXG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgdG9FbmQgPSB0by5sZW5ndGg7XG4gICAgdmFyIHRvTGVuID0gdG9FbmQgLSB0b1N0YXJ0O1xuXG4gICAgLy8gQ29tcGFyZSBwYXRocyB0byBmaW5kIHRoZSBsb25nZXN0IGNvbW1vbiBwYXRoIGZyb20gcm9vdFxuICAgIHZhciBsZW5ndGggPSBmcm9tTGVuIDwgdG9MZW4gPyBmcm9tTGVuIDogdG9MZW47XG4gICAgdmFyIGxhc3RDb21tb25TZXAgPSAtMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yICg7IGkgPD0gbGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmIChpID09PSBsZW5ndGgpIHtcbiAgICAgICAgaWYgKHRvTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYGZyb21gIGlzIHRoZSBleGFjdCBiYXNlIHBhdGggZm9yIGB0b2AuXG4gICAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXInOyB0bz0nL2Zvby9iYXIvYmF6J1xuICAgICAgICAgICAgcmV0dXJuIHRvLnNsaWNlKHRvU3RhcnQgKyBpICsgMSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIHJvb3RcbiAgICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvJzsgdG89Jy9mb28nXG4gICAgICAgICAgICByZXR1cm4gdG8uc2xpY2UodG9TdGFydCArIGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmcm9tTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYGZyb21gLlxuICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209Jy9mb28vYmFyL2Jheic7IHRvPScvZm9vL2JhcidcbiAgICAgICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYHRvYCBpcyB0aGUgcm9vdC5cbiAgICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvZm9vJzsgdG89Jy8nXG4gICAgICAgICAgICBsYXN0Q29tbW9uU2VwID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB2YXIgZnJvbUNvZGUgPSBmcm9tLmNoYXJDb2RlQXQoZnJvbVN0YXJ0ICsgaSk7XG4gICAgICB2YXIgdG9Db2RlID0gdG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSk7XG4gICAgICBpZiAoZnJvbUNvZGUgIT09IHRvQ29kZSlcbiAgICAgICAgYnJlYWs7XG4gICAgICBlbHNlIGlmIChmcm9tQ29kZSA9PT0gNDcgLyovKi8pXG4gICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgIH1cblxuICAgIHZhciBvdXQgPSAnJztcbiAgICAvLyBHZW5lcmF0ZSB0aGUgcmVsYXRpdmUgcGF0aCBiYXNlZCBvbiB0aGUgcGF0aCBkaWZmZXJlbmNlIGJldHdlZW4gYHRvYFxuICAgIC8vIGFuZCBgZnJvbWBcbiAgICBmb3IgKGkgPSBmcm9tU3RhcnQgKyBsYXN0Q29tbW9uU2VwICsgMTsgaSA8PSBmcm9tRW5kOyArK2kpIHtcbiAgICAgIGlmIChpID09PSBmcm9tRW5kIHx8IGZyb20uY2hhckNvZGVBdChpKSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgaWYgKG91dC5sZW5ndGggPT09IDApXG4gICAgICAgICAgb3V0ICs9ICcuLic7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBvdXQgKz0gJy8uLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGFzdGx5LCBhcHBlbmQgdGhlIHJlc3Qgb2YgdGhlIGRlc3RpbmF0aW9uIChgdG9gKSBwYXRoIHRoYXQgY29tZXMgYWZ0ZXJcbiAgICAvLyB0aGUgY29tbW9uIHBhdGggcGFydHNcbiAgICBpZiAob3V0Lmxlbmd0aCA+IDApXG4gICAgICByZXR1cm4gb3V0ICsgdG8uc2xpY2UodG9TdGFydCArIGxhc3RDb21tb25TZXApO1xuICAgIGVsc2Uge1xuICAgICAgdG9TdGFydCArPSBsYXN0Q29tbW9uU2VwO1xuICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCkgPT09IDQ3IC8qLyovKVxuICAgICAgICArK3RvU3RhcnQ7XG4gICAgICByZXR1cm4gdG8uc2xpY2UodG9TdGFydCk7XG4gICAgfVxuICB9LFxuXG4gIF9tYWtlTG9uZzogZnVuY3Rpb24gX21ha2VMb25nKHBhdGgpIHtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICBkaXJuYW1lOiBmdW5jdGlvbiBkaXJuYW1lKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcuJztcbiAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcbiAgICB2YXIgaGFzUm9vdCA9IGNvZGUgPT09IDQ3IC8qLyovO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICBmb3IgKHZhciBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDE7IC0taSkge1xuICAgICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvclxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5kID09PSAtMSkgcmV0dXJuIGhhc1Jvb3QgPyAnLycgOiAnLic7XG4gICAgaWYgKGhhc1Jvb3QgJiYgZW5kID09PSAxKSByZXR1cm4gJy8vJztcbiAgICByZXR1cm4gcGF0aC5zbGljZSgwLCBlbmQpO1xuICB9LFxuXG4gIGJhc2VuYW1lOiBmdW5jdGlvbiBiYXNlbmFtZShwYXRoLCBleHQpIHtcbiAgICBpZiAoZXh0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGV4dCAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZXh0XCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiBleHQubGVuZ3RoID4gMCAmJiBleHQubGVuZ3RoIDw9IHBhdGgubGVuZ3RoKSB7XG4gICAgICBpZiAoZXh0Lmxlbmd0aCA9PT0gcGF0aC5sZW5ndGggJiYgZXh0ID09PSBwYXRoKSByZXR1cm4gJyc7XG4gICAgICB2YXIgZXh0SWR4ID0gZXh0Lmxlbmd0aCAtIDE7XG4gICAgICB2YXIgZmlyc3ROb25TbGFzaEVuZCA9IC0xO1xuICAgICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGNvZGUgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChmaXJzdE5vblNsYXNoRW5kID09PSAtMSkge1xuICAgICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIHJlbWVtYmVyIHRoaXMgaW5kZXggaW4gY2FzZVxuICAgICAgICAgICAgLy8gd2UgbmVlZCBpdCBpZiB0aGUgZXh0ZW5zaW9uIGVuZHMgdXAgbm90IG1hdGNoaW5nXG4gICAgICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGZpcnN0Tm9uU2xhc2hFbmQgPSBpICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGV4dElkeCA+PSAwKSB7XG4gICAgICAgICAgICAvLyBUcnkgdG8gbWF0Y2ggdGhlIGV4cGxpY2l0IGV4dGVuc2lvblxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IGV4dC5jaGFyQ29kZUF0KGV4dElkeCkpIHtcbiAgICAgICAgICAgICAgaWYgKC0tZXh0SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgdGhlIGV4dGVuc2lvbiwgc28gbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyIHBhdGhcbiAgICAgICAgICAgICAgICAvLyBjb21wb25lbnRcbiAgICAgICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBFeHRlbnNpb24gZG9lcyBub3QgbWF0Y2gsIHNvIG91ciByZXN1bHQgaXMgdGhlIGVudGlyZSBwYXRoXG4gICAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgICBleHRJZHggPSAtMTtcbiAgICAgICAgICAgICAgZW5kID0gZmlyc3ROb25TbGFzaEVuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXJ0ID09PSBlbmQpIGVuZCA9IGZpcnN0Tm9uU2xhc2hFbmQ7ZWxzZSBpZiAoZW5kID09PSAtMSkgZW5kID0gcGF0aC5sZW5ndGg7XG4gICAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgICAgIC8vIHBhdGggY29tcG9uZW50XG4gICAgICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiAnJztcbiAgICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgfSxcblxuICBleHRuYW1lOiBmdW5jdGlvbiBleHRuYW1lKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIHZhciBzdGFydERvdCA9IC0xO1xuICAgIHZhciBzdGFydFBhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gICAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgICB2YXIgcHJlRG90U3RhdGUgPSAwO1xuICAgIGZvciAodmFyIGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICB9XG4gICAgICBpZiAoY29kZSA9PT0gNDYgLyouKi8pIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgICAgICBpZiAoc3RhcnREb3QgPT09IC0xKVxuICAgICAgICAgICAgc3RhcnREb3QgPSBpO1xuICAgICAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKVxuICAgICAgICAgICAgcHJlRG90U3RhdGUgPSAxO1xuICAgICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHxcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICAgICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAgICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgICAgICBwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbiAgfSxcblxuICBmb3JtYXQ6IGZ1bmN0aW9uIGZvcm1hdChwYXRoT2JqZWN0KSB7XG4gICAgaWYgKHBhdGhPYmplY3QgPT09IG51bGwgfHwgdHlwZW9mIHBhdGhPYmplY3QgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJwYXRoT2JqZWN0XCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHBhdGhPYmplY3QpO1xuICAgIH1cbiAgICByZXR1cm4gX2Zvcm1hdCgnLycsIHBhdGhPYmplY3QpO1xuICB9LFxuXG4gIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShwYXRoKSB7XG4gICAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICAgIHZhciByZXQgPSB7IHJvb3Q6ICcnLCBkaXI6ICcnLCBiYXNlOiAnJywgZXh0OiAnJywgbmFtZTogJycgfTtcbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiByZXQ7XG4gICAgdmFyIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG4gICAgdmFyIGlzQWJzb2x1dGUgPSBjb2RlID09PSA0NyAvKi8qLztcbiAgICB2YXIgc3RhcnQ7XG4gICAgaWYgKGlzQWJzb2x1dGUpIHtcbiAgICAgIHJldC5yb290ID0gJy8nO1xuICAgICAgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydCA9IDA7XG4gICAgfVxuICAgIHZhciBzdGFydERvdCA9IC0xO1xuICAgIHZhciBzdGFydFBhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICB2YXIgaSA9IHBhdGgubGVuZ3RoIC0gMTtcblxuICAgIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICAgIHZhciBwcmVEb3RTdGF0ZSA9IDA7XG5cbiAgICAvLyBHZXQgbm9uLWRpciBpbmZvXG4gICAgZm9yICg7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICB9XG4gICAgICBpZiAoY29kZSA9PT0gNDYgLyouKi8pIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7ZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpIHByZURvdFN0YXRlID0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKSB7XG4gICAgICBpZiAoZW5kICE9PSAtMSkge1xuICAgICAgICBpZiAoc3RhcnRQYXJ0ID09PSAwICYmIGlzQWJzb2x1dGUpIHJldC5iYXNlID0gcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKDEsIGVuZCk7ZWxzZSByZXQuYmFzZSA9IHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGFydFBhcnQgPT09IDAgJiYgaXNBYnNvbHV0ZSkge1xuICAgICAgICByZXQubmFtZSA9IHBhdGguc2xpY2UoMSwgc3RhcnREb3QpO1xuICAgICAgICByZXQuYmFzZSA9IHBhdGguc2xpY2UoMSwgZW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIHN0YXJ0RG90KTtcbiAgICAgICAgcmV0LmJhc2UgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICAgIHJldC5leHQgPSBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xuICAgIH1cblxuICAgIGlmIChzdGFydFBhcnQgPiAwKSByZXQuZGlyID0gcGF0aC5zbGljZSgwLCBzdGFydFBhcnQgLSAxKTtlbHNlIGlmIChpc0Fic29sdXRlKSByZXQuZGlyID0gJy8nO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBzZXA6ICcvJyxcbiAgZGVsaW1pdGVyOiAnOicsXG4gIHdpbjMyOiBudWxsLFxuICBwb3NpeDogbnVsbFxufTtcblxucG9zaXgucG9zaXggPSBwb3NpeDtcblxubW9kdWxlLmV4cG9ydHMgPSBwb3NpeDtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5iYXNlbmFtZSA9IGV4cG9ydHMuaXNBYnNvbHV0ZSA9IGV4cG9ydHMubm9ybWFsaXplID0gZXhwb3J0cy5kaXJuYW1lID0gZXhwb3J0cy5yZWxhdGl2ZSA9IGV4cG9ydHMuam9pbiA9IGV4cG9ydHMucG9zaXggPSBleHBvcnRzLnNlcCA9IGV4cG9ydHMucmVzb2x2ZSA9IHZvaWQgMDtcbnZhciBub2RlX3BhdGhfMSA9IHJlcXVpcmUoXCJub2RlOnBhdGhcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJyZXNvbHZlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBub2RlX3BhdGhfMS5yZXNvbHZlOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwic2VwXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBub2RlX3BhdGhfMS5zZXA7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJwb3NpeFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbm9kZV9wYXRoXzEucG9zaXg7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJqb2luXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBub2RlX3BhdGhfMS5qb2luOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicmVsYXRpdmVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5vZGVfcGF0aF8xLnJlbGF0aXZlOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGlybmFtZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbm9kZV9wYXRoXzEuZGlybmFtZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIm5vcm1hbGl6ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbm9kZV9wYXRoXzEubm9ybWFsaXplOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiaXNBYnNvbHV0ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbm9kZV9wYXRoXzEuaXNBYnNvbHV0ZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImJhc2VuYW1lXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBub2RlX3BhdGhfMS5iYXNlbmFtZTsgfSB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGguanMubWFwIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXG5cblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1Jcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sLCBJdGVyYXRvciAqL1xuXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcbiAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcbiAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbn1cblxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xuICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xuICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gIH1cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgIHRbcF0gPSBzW3BdO1xuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgIH1cbiAgcmV0dXJuIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xuICBmdW5jdGlvbiBhY2NlcHQoZikgeyBpZiAoZiAhPT0gdm9pZCAwICYmIHR5cGVvZiBmICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGdW5jdGlvbiBleHBlY3RlZFwiKTsgcmV0dXJuIGY7IH1cbiAgdmFyIGtpbmQgPSBjb250ZXh0SW4ua2luZCwga2V5ID0ga2luZCA9PT0gXCJnZXR0ZXJcIiA/IFwiZ2V0XCIgOiBraW5kID09PSBcInNldHRlclwiID8gXCJzZXRcIiA6IFwidmFsdWVcIjtcbiAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XG4gIHZhciBkZXNjcmlwdG9yID0gZGVzY3JpcHRvckluIHx8ICh0YXJnZXQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgY29udGV4dEluLm5hbWUpIDoge30pO1xuICB2YXIgXywgZG9uZSA9IGZhbHNlO1xuICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGNvbnRleHQgPSB7fTtcbiAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluKSBjb250ZXh0W3BdID0gcCA9PT0gXCJhY2Nlc3NcIiA/IHt9IDogY29udGV4dEluW3BdO1xuICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyID0gZnVuY3Rpb24gKGYpIHsgaWYgKGRvbmUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWRcIik7IGV4dHJhSW5pdGlhbGl6ZXJzLnB1c2goYWNjZXB0KGYgfHwgbnVsbCkpOyB9O1xuICAgICAgdmFyIHJlc3VsdCA9ICgwLCBkZWNvcmF0b3JzW2ldKShraW5kID09PSBcImFjY2Vzc29yXCIgPyB7IGdldDogZGVzY3JpcHRvci5nZXQsIHNldDogZGVzY3JpcHRvci5zZXQgfSA6IGRlc2NyaXB0b3Jba2V5XSwgY29udGV4dCk7XG4gICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdm9pZCAwKSBjb250aW51ZTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHR5cGVvZiByZXN1bHQgIT09IFwib2JqZWN0XCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWRcIik7XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuc2V0KSkgZGVzY3JpcHRvci5zZXQgPSBfO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5pbml0KSkgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChfID0gYWNjZXB0KHJlc3VsdCkpIHtcbiAgICAgICAgICBpZiAoa2luZCA9PT0gXCJmaWVsZFwiKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcbiAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XG4gICAgICB9XG4gIH1cbiAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xuICBkb25lID0gdHJ1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3J1bkluaXRpYWxpemVycyh0aGlzQXJnLCBpbml0aWFsaXplcnMsIHZhbHVlKSB7XG4gIHZhciB1c2VWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFsdWUgPSB1c2VWYWx1ZSA/IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcsIHZhbHVlKSA6IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcpO1xuICB9XG4gIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gXCJzeW1ib2xcIiA/IHggOiBcIlwiLmNvbmNhdCh4KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NldEZ1bmN0aW9uTmFtZShmLCBuYW1lLCBwcmVmaXgpIHtcbiAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN5bWJvbFwiKSBuYW1lID0gbmFtZS5kZXNjcmlwdGlvbiA/IFwiW1wiLmNvbmNhdChuYW1lLmRlc2NyaXB0aW9uLCBcIl1cIikgOiBcIlwiO1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XG4gIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGcgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgSXRlcmF0b3IgPT09IFwiZnVuY3Rpb25cIiA/IEl0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpO1xuICByZXR1cm4gZy5uZXh0ID0gdmVyYigwKSwgZ1tcInRocm93XCJdID0gdmVyYigxKSwgZ1tcInJldHVyblwiXSA9IHZlcmIoMiksIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufVxuXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgb1trMl0gPSBtW2tdO1xufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xuICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XG4gIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XG4gIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFtKSByZXR1cm4gbztcbiAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gIHRyeSB7XG4gICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgfVxuICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgfVxuICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gIH1cbiAgcmV0dXJuIGFyO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcbiAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XG4gIHJldHVybiBhcjtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XG4gIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXG4gICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcbiAgICAgICAgICByW2tdID0gYVtqXTtcbiAgcmV0dXJuIHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XG4gIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcbiAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xuICByZXR1cm4gaSA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBBc3luY0l0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBBc3luY0l0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpLCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIsIGF3YWl0UmV0dXJuKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiBhd2FpdFJldHVybihmKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZiwgcmVqZWN0KTsgfTsgfVxuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaWYgKGdbbl0pIHsgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgaWYgKGYpIGlbbl0gPSBmKGlbbl0pOyB9IH1cbiAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxuICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cbiAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxuICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xuICB2YXIgaSwgcDtcbiAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcbiAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogZmFsc2UgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xuICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cbiAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcbiAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgcmV0dXJuIGNvb2tlZDtcbn07XG5cbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xufSkgOiBmdW5jdGlvbihvLCB2KSB7XG4gIG9bXCJkZWZhdWx0XCJdID0gdjtcbn07XG5cbnZhciBvd25LZXlzID0gZnVuY3Rpb24obykge1xuICBvd25LZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gKG8pIHtcbiAgICB2YXIgYXIgPSBbXTtcbiAgICBmb3IgKHZhciBrIGluIG8pIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgaykpIGFyW2FyLmxlbmd0aF0gPSBrO1xuICAgIHJldHVybiBhcjtcbiAgfTtcbiAgcmV0dXJuIG93bktleXMobyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xuICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayA9IG93bktleXMobW9kKSwgaSA9IDA7IGkgPCBrLmxlbmd0aDsgaSsrKSBpZiAoa1tpXSAhPT0gXCJkZWZhdWx0XCIpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwga1tpXSk7XG4gIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XG4gIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcbiAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xuICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcbiAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XG4gIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZShlbnYsIHZhbHVlLCBhc3luYykge1xuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWQuXCIpO1xuICAgIHZhciBkaXNwb3NlLCBpbm5lcjtcbiAgICBpZiAoYXN5bmMpIHtcbiAgICAgIGlmICghU3ltYm9sLmFzeW5jRGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0Rpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5hc3luY0Rpc3Bvc2VdO1xuICAgIH1cbiAgICBpZiAoZGlzcG9zZSA9PT0gdm9pZCAwKSB7XG4gICAgICBpZiAoIVN5bWJvbC5kaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmRpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5kaXNwb3NlXTtcbiAgICAgIGlmIChhc3luYykgaW5uZXIgPSBkaXNwb3NlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRpc3Bvc2UgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBub3QgZGlzcG9zYWJsZS5cIik7XG4gICAgaWYgKGlubmVyKSBkaXNwb3NlID0gZnVuY3Rpb24oKSB7IHRyeSB7IGlubmVyLmNhbGwodGhpcyk7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpOyB9IH07XG4gICAgZW52LnN0YWNrLnB1c2goeyB2YWx1ZTogdmFsdWUsIGRpc3Bvc2U6IGRpc3Bvc2UsIGFzeW5jOiBhc3luYyB9KTtcbiAgfVxuICBlbHNlIGlmIChhc3luYykge1xuICAgIGVudi5zdGFjay5wdXNoKHsgYXN5bmM6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG52YXIgX1N1cHByZXNzZWRFcnJvciA9IHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xuICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2Rpc3Bvc2VSZXNvdXJjZXMoZW52KSB7XG4gIGZ1bmN0aW9uIGZhaWwoZSkge1xuICAgIGVudi5lcnJvciA9IGVudi5oYXNFcnJvciA/IG5ldyBfU3VwcHJlc3NlZEVycm9yKGUsIGVudi5lcnJvciwgXCJBbiBlcnJvciB3YXMgc3VwcHJlc3NlZCBkdXJpbmcgZGlzcG9zYWwuXCIpIDogZTtcbiAgICBlbnYuaGFzRXJyb3IgPSB0cnVlO1xuICB9XG4gIHZhciByLCBzID0gMDtcbiAgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICB3aGlsZSAociA9IGVudi5zdGFjay5wb3AoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFyLmFzeW5jICYmIHMgPT09IDEpIHJldHVybiBzID0gMCwgZW52LnN0YWNrLnB1c2gociksIFByb21pc2UucmVzb2x2ZSgpLnRoZW4obmV4dCk7XG4gICAgICAgIGlmIChyLmRpc3Bvc2UpIHtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gci5kaXNwb3NlLmNhbGwoci52YWx1ZSk7XG4gICAgICAgICAgaWYgKHIuYXN5bmMpIHJldHVybiBzIHw9IDIsIFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4obmV4dCwgZnVuY3Rpb24oZSkgeyBmYWlsKGUpOyByZXR1cm4gbmV4dCgpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHMgfD0gMTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGZhaWwoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzID09PSAxKSByZXR1cm4gZW52Lmhhc0Vycm9yID8gUHJvbWlzZS5yZWplY3QoZW52LmVycm9yKSA6IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGlmIChlbnYuaGFzRXJyb3IpIHRocm93IGVudi5lcnJvcjtcbiAgfVxuICByZXR1cm4gbmV4dCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb24ocGF0aCwgcHJlc2VydmVKc3gpIHtcbiAgaWYgKHR5cGVvZiBwYXRoID09PSBcInN0cmluZ1wiICYmIC9eXFwuXFwuP1xcLy8udGVzdChwYXRoKSkge1xuICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFwuKHRzeCkkfCgoPzpcXC5kKT8pKCg/OlxcLlteLi9dKz8pPylcXC4oW2NtXT8pdHMkL2ksIGZ1bmN0aW9uIChtLCB0c3gsIGQsIGV4dCwgY20pIHtcbiAgICAgICAgICByZXR1cm4gdHN4ID8gcHJlc2VydmVKc3ggPyBcIi5qc3hcIiA6IFwiLmpzXCIgOiBkICYmICghZXh0IHx8ICFjbSkgPyBtIDogKGQgKyBleHQgKyBcIi5cIiArIGNtLnRvTG93ZXJDYXNlKCkgKyBcImpzXCIpO1xuICAgICAgfSk7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgX19leHRlbmRzLFxuICBfX2Fzc2lnbixcbiAgX19yZXN0LFxuICBfX2RlY29yYXRlLFxuICBfX3BhcmFtLFxuICBfX2VzRGVjb3JhdGUsXG4gIF9fcnVuSW5pdGlhbGl6ZXJzLFxuICBfX3Byb3BLZXksXG4gIF9fc2V0RnVuY3Rpb25OYW1lLFxuICBfX21ldGFkYXRhLFxuICBfX2F3YWl0ZXIsXG4gIF9fZ2VuZXJhdG9yLFxuICBfX2NyZWF0ZUJpbmRpbmcsXG4gIF9fZXhwb3J0U3RhcixcbiAgX192YWx1ZXMsXG4gIF9fcmVhZCxcbiAgX19zcHJlYWQsXG4gIF9fc3ByZWFkQXJyYXlzLFxuICBfX3NwcmVhZEFycmF5LFxuICBfX2F3YWl0LFxuICBfX2FzeW5jR2VuZXJhdG9yLFxuICBfX2FzeW5jRGVsZWdhdG9yLFxuICBfX2FzeW5jVmFsdWVzLFxuICBfX21ha2VUZW1wbGF0ZU9iamVjdCxcbiAgX19pbXBvcnRTdGFyLFxuICBfX2ltcG9ydERlZmF1bHQsXG4gIF9fY2xhc3NQcml2YXRlRmllbGRHZXQsXG4gIF9fY2xhc3NQcml2YXRlRmllbGRTZXQsXG4gIF9fY2xhc3NQcml2YXRlRmllbGRJbixcbiAgX19hZGREaXNwb3NhYmxlUmVzb3VyY2UsXG4gIF9fZGlzcG9zZVJlc291cmNlcyxcbiAgX19yZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb24sXG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10eXBlcy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZmxhdHRlbkpTT04gPSB2b2lkIDA7XG5jb25zdCBidWZmZXJfMSA9IHJlcXVpcmUoXCIuLi92ZW5kb3Ivbm9kZS9pbnRlcm5hbC9idWZmZXJcIik7XG5jb25zdCBwYXRoXzEgPSByZXF1aXJlKFwiLi4vdmVuZG9yL25vZGUvcGF0aFwiKTtcbmNvbnN0IHBhdGhKb2luID0gcGF0aF8xLnBvc2l4ID8gcGF0aF8xLnBvc2l4LmpvaW4gOiBwYXRoXzEuam9pbjtcbmNvbnN0IGZsYXR0ZW5KU09OID0gKG5lc3RlZEpTT04pID0+IHtcbiAgICBjb25zdCBmbGF0SlNPTiA9IHt9O1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW4ocGF0aFByZWZpeCwgbm9kZSkge1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGggaW4gbm9kZSkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudE9yTm9kZSA9IG5vZGVbcGF0aF07XG4gICAgICAgICAgICAvLyBUT0RPOiBDYW4gd2UgYXZvaWQgdXNpbmcgYGpvaW5gIGhlcmU/IEp1c3QgY29uY2F0ZW5hdGU/XG4gICAgICAgICAgICBjb25zdCBqb2luZWRQYXRoID0gcGF0aEpvaW4ocGF0aFByZWZpeCwgcGF0aCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnRPck5vZGUgPT09ICdzdHJpbmcnIHx8IGNvbnRlbnRPck5vZGUgaW5zdGFuY2VvZiBidWZmZXJfMS5CdWZmZXIpIHtcbiAgICAgICAgICAgICAgICBmbGF0SlNPTltqb2luZWRQYXRoXSA9IGNvbnRlbnRPck5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgY29udGVudE9yTm9kZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICBjb250ZW50T3JOb2RlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgIShjb250ZW50T3JOb2RlIGluc3RhbmNlb2YgYnVmZmVyXzEuQnVmZmVyKSAmJlxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGNvbnRlbnRPck5vZGUpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBlbXB0eSBkaXJlY3RvcmllcyBuZWVkIGFuIGV4cGxpY2l0IGVudHJ5IGFuZCB0aGVyZWZvcmUgZ2V0IGhhbmRsZWQgaW4gYGVsc2VgLCBub24tZW1wdHkgb25lcyBhcmUgaW1wbGljaXRseSBjb25zaWRlcmVkXG4gICAgICAgICAgICAgICAgZmxhdHRlbihqb2luZWRQYXRoLCBjb250ZW50T3JOb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHdpdGhvdXQgdGhpcyBicmFuY2ggbnVsbCwgZW1wdHktb2JqZWN0IG9yIG5vbi1vYmplY3QgZW50cmllcyB3b3VsZCBub3QgYmUgaGFuZGxlZCBpbiB0aGUgc2FtZSB3YXlcbiAgICAgICAgICAgICAgICAvLyBieSBib3RoIGZyb21KU09OKCkgYW5kIGZyb21OZXN0ZWRKU09OKClcbiAgICAgICAgICAgICAgICBmbGF0SlNPTltqb2luZWRQYXRoXSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmxhdHRlbignJywgbmVzdGVkSlNPTik7XG4gICAgcmV0dXJuIGZsYXRKU09OO1xufTtcbmV4cG9ydHMuZmxhdHRlbkpTT04gPSBmbGF0dGVuSlNPTjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWpzb24uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkZhbk91dCA9IHZvaWQgMDtcbmNsYXNzIEZhbk91dCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGlzdGVuZXJzID0gbmV3IFNldCgpO1xuICAgIH1cbiAgICBlbWl0KGRhdGEpIHtcbiAgICAgICAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IGxpc3RlbmVyKGRhdGEpKTtcbiAgICB9XG4gICAgbGlzdGVuKGxpc3RlbmVyKSB7XG4gICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMubGlzdGVuZXJzO1xuICAgICAgICBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTtcbiAgICAgICAgcmV0dXJuICgpID0+IGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuICAgIH1cbn1cbmV4cG9ydHMuRmFuT3V0ID0gRmFuT3V0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBIZXJlIHdlIG1vY2sgdGhlIGdsb2JhbCBgcHJvY2Vzc2AgdmFyaWFibGUgaW4gY2FzZSB3ZSBhcmUgbm90IGluIE5vZGUncyBlbnZpcm9ubWVudC5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY3JlYXRlUHJvY2VzcyA9IGNyZWF0ZVByb2Nlc3M7XG4vKipcbiAqIExvb2tzIHRvIHJldHVybiBhIGBwcm9jZXNzYCBvYmplY3QsIGlmIG9uZSBpcyBhdmFpbGFibGUuXG4gKlxuICogVGhlIGdsb2JhbCBgcHJvY2Vzc2AgaXMgcmV0dXJuZWQgaWYgZGVmaW5lZDtcbiAqIG90aGVyd2lzZSBgcmVxdWlyZSgncHJvY2VzcycpYCBpcyBhdHRlbXB0ZWQuXG4gKlxuICogSWYgdGhhdCBmYWlscywgYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuXG4gKlxuICogQHJldHVybiB7SVByb2Nlc3MgfCB1bmRlZmluZWR9XG4gKi9cbmNvbnN0IG1heWJlUmV0dXJuUHJvY2VzcyA9ICgpID0+IHtcbiAgICBpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZSgncHJvY2VzcycpO1xuICAgIH1cbiAgICBjYXRjaCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufTtcbmZ1bmN0aW9uIGNyZWF0ZVByb2Nlc3MoKSB7XG4gICAgY29uc3QgcCA9IG1heWJlUmV0dXJuUHJvY2VzcygpIHx8IHt9O1xuICAgIGlmICghcC5jd2QpXG4gICAgICAgIHAuY3dkID0gKCkgPT4gJy8nO1xuICAgIGlmICghcC5lbWl0V2FybmluZylcbiAgICAgICAgcC5lbWl0V2FybmluZyA9IChtZXNzYWdlLCB0eXBlKSA9PiB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS53YXJuKGAke3R5cGV9JHt0eXBlID8gJzogJyA6ICcnfSR7bWVzc2FnZX1gKTtcbiAgICAgICAgfTtcbiAgICBpZiAoIXAuZW52KVxuICAgICAgICBwLmVudiA9IHt9O1xuICAgIHJldHVybiBwO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gY3JlYXRlUHJvY2VzcygpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJvY2Vzcy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTm9kZSA9IHZvaWQgMDtcbmNvbnN0IGZhbm91dF8xID0gcmVxdWlyZShcInRoaW5naWVzL2xpYi9mYW5vdXRcIik7XG5jb25zdCBwcm9jZXNzXzEgPSByZXF1aXJlKFwiLi4vcHJvY2Vzc1wiKTtcbmNvbnN0IGJ1ZmZlcl8xID0gcmVxdWlyZShcIi4uL3ZlbmRvci9ub2RlL2ludGVybmFsL2J1ZmZlclwiKTtcbmNvbnN0IGNvbnN0YW50c18xID0gcmVxdWlyZShcIi4uL2NvbnN0YW50c1wiKTtcbmNvbnN0IHsgU19JRk1ULCBTX0lGRElSLCBTX0lGUkVHLCBTX0lGTE5LLCBTX0lGQ0hSIH0gPSBjb25zdGFudHNfMS5jb25zdGFudHM7XG5jb25zdCBnZXR1aWQgPSAoKSA9PiBwcm9jZXNzXzEuZGVmYXVsdC5nZXR1aWQ/LigpID8/IDA7XG5jb25zdCBnZXRnaWQgPSAoKSA9PiBwcm9jZXNzXzEuZGVmYXVsdC5nZXRnaWQ/LigpID8/IDA7XG5jb25zdCBFTVBUWV9CVUZGRVIgPSAoMCwgYnVmZmVyXzEuYnVmZmVyQWxsb2NVbnNhZmUpKDApO1xuLyoqXG4gKiBOb2RlIGluIGEgZmlsZSBzeXN0ZW0gKGxpa2UgaS1ub2RlLCB2LW5vZGUpLlxuICovXG5jbGFzcyBOb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcihpbm8sIG1vZGUgPSAwbzY2Nikge1xuICAgICAgICB0aGlzLmNoYW5nZXMgPSBuZXcgZmFub3V0XzEuRmFuT3V0KCk7XG4gICAgICAgIC8vIFVzZXIgSUQgYW5kIGdyb3VwIElELlxuICAgICAgICB0aGlzLl91aWQgPSBnZXR1aWQoKTtcbiAgICAgICAgdGhpcy5fZ2lkID0gZ2V0Z2lkKCk7XG4gICAgICAgIHRoaXMuX2F0aW1lID0gbmV3IERhdGUoKTtcbiAgICAgICAgdGhpcy5fbXRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLl9jdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHRoaXMuYnVmID0gRU1QVFlfQlVGRkVSO1xuICAgICAgICAvKiogVG90YWwgYWxsb2NhdGVkIG1lbW9yeSBjYXBhY2l0eSBmb3IgdGhpcyBub2RlLiAqL1xuICAgICAgICB0aGlzLmNhcGFjaXR5ID0gMDtcbiAgICAgICAgLyoqIEFjdHVhbGx5IHVzZWQgYnl0ZXMgdG8gc3RvcmUgY29udGVudC4gKi9cbiAgICAgICAgdGhpcy5zaXplID0gMDtcbiAgICAgICAgdGhpcy5yZGV2ID0gMDtcbiAgICAgICAgLy8gTnVtYmVyIG9mIGhhcmQgbGlua3MgcG9pbnRpbmcgYXQgdGhpcyBOb2RlLlxuICAgICAgICB0aGlzLl9ubGluayA9IDE7XG4gICAgICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gICAgICAgIHRoaXMuaW5vID0gaW5vO1xuICAgIH1cbiAgICBzZXQgY3RpbWUoY3RpbWUpIHtcbiAgICAgICAgdGhpcy5fY3RpbWUgPSBjdGltZTtcbiAgICB9XG4gICAgZ2V0IGN0aW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3RpbWU7XG4gICAgfVxuICAgIHNldCB1aWQodWlkKSB7XG4gICAgICAgIHRoaXMuX3VpZCA9IHVpZDtcbiAgICAgICAgdGhpcy5jdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgfVxuICAgIGdldCB1aWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91aWQ7XG4gICAgfVxuICAgIHNldCBnaWQoZ2lkKSB7XG4gICAgICAgIHRoaXMuX2dpZCA9IGdpZDtcbiAgICAgICAgdGhpcy5jdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgfVxuICAgIGdldCBnaWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9naWQ7XG4gICAgfVxuICAgIHNldCBhdGltZShhdGltZSkge1xuICAgICAgICB0aGlzLl9hdGltZSA9IGF0aW1lO1xuICAgIH1cbiAgICBnZXQgYXRpbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdGltZTtcbiAgICB9XG4gICAgc2V0IG10aW1lKG10aW1lKSB7XG4gICAgICAgIHRoaXMuX210aW1lID0gbXRpbWU7XG4gICAgICAgIHRoaXMuY3RpbWUgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgICBnZXQgbXRpbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tdGltZTtcbiAgICB9XG4gICAgZ2V0IHBlcm0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGUgJiB+U19JRk1UO1xuICAgIH1cbiAgICBzZXQgcGVybShwZXJtKSB7XG4gICAgICAgIHRoaXMubW9kZSA9ICh0aGlzLm1vZGUgJiBTX0lGTVQpIHwgKHBlcm0gJiB+U19JRk1UKTtcbiAgICAgICAgdGhpcy5jdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgfVxuICAgIHNldCBubGluayhubGluaykge1xuICAgICAgICB0aGlzLl9ubGluayA9IG5saW5rO1xuICAgICAgICB0aGlzLmN0aW1lID0gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgZ2V0IG5saW5rKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmxpbms7XG4gICAgfVxuICAgIGdldFN0cmluZyhlbmNvZGluZyA9ICd1dGY4Jykge1xuICAgICAgICB0aGlzLmF0aW1lID0gbmV3IERhdGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnVmZmVyKCkudG9TdHJpbmcoZW5jb2RpbmcpO1xuICAgIH1cbiAgICBzZXRTdHJpbmcoc3RyKSB7XG4gICAgICAgIHRoaXMuX3NldEJ1ZigoMCwgYnVmZmVyXzEuYnVmZmVyRnJvbSkoc3RyLCAndXRmOCcpKTtcbiAgICB9XG4gICAgZ2V0QnVmZmVyKCkge1xuICAgICAgICB0aGlzLmF0aW1lID0gbmV3IERhdGUoKTtcbiAgICAgICAgaWYgKCF0aGlzLmJ1ZilcbiAgICAgICAgICAgIHRoaXMuYnVmID0gKDAsIGJ1ZmZlcl8xLmJ1ZmZlckFsbG9jVW5zYWZlKSgwKTtcbiAgICAgICAgcmV0dXJuICgwLCBidWZmZXJfMS5idWZmZXJGcm9tKSh0aGlzLmJ1Zi5zdWJhcnJheSgwLCB0aGlzLnNpemUpKTsgLy8gUmV0dXJuIGEgY29weSBvZiB1c2VkIHBvcnRpb24uXG4gICAgfVxuICAgIHNldEJ1ZmZlcihidWYpIHtcbiAgICAgICAgY29uc3QgY29weSA9ICgwLCBidWZmZXJfMS5idWZmZXJGcm9tKShidWYpOyAvLyBDcmVhdGVzIGEgY29weSBvZiBkYXRhLlxuICAgICAgICB0aGlzLl9zZXRCdWYoY29weSk7XG4gICAgfVxuICAgIF9zZXRCdWYoYnVmKSB7XG4gICAgICAgIGNvbnN0IHNpemUgPSBidWYubGVuZ3RoO1xuICAgICAgICB0aGlzLmJ1ZiA9IGJ1ZjtcbiAgICAgICAgdGhpcy5jYXBhY2l0eSA9IHNpemU7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gICAgICAgIHRoaXMudG91Y2goKTtcbiAgICB9XG4gICAgZ2V0U2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZTtcbiAgICB9XG4gICAgc2V0TW9kZVByb3BlcnR5KHByb3BlcnR5KSB7XG4gICAgICAgIHRoaXMubW9kZSA9IHByb3BlcnR5O1xuICAgIH1cbiAgICBpc0ZpbGUoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlICYgU19JRk1UKSA9PT0gU19JRlJFRztcbiAgICB9XG4gICAgaXNEaXJlY3RvcnkoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlICYgU19JRk1UKSA9PT0gU19JRkRJUjtcbiAgICB9XG4gICAgaXNTeW1saW5rKCkge1xuICAgICAgICAvLyByZXR1cm4gISF0aGlzLnN5bWxpbms7XG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlICYgU19JRk1UKSA9PT0gU19JRkxOSztcbiAgICB9XG4gICAgaXNDaGFyYWN0ZXJEZXZpY2UoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlICYgU19JRk1UKSA9PT0gU19JRkNIUjtcbiAgICB9XG4gICAgbWFrZVN5bWxpbmsoc3ltbGluaykge1xuICAgICAgICB0aGlzLm1vZGUgPSBTX0lGTE5LIHwgMG82NjY7XG4gICAgICAgIHRoaXMuc3ltbGluayA9IHN5bWxpbms7XG4gICAgfVxuICAgIHdyaXRlKGJ1Ziwgb2ZmID0gMCwgbGVuID0gYnVmLmxlbmd0aCwgcG9zID0gMCkge1xuICAgICAgICBjb25zdCBidWZMZW5ndGggPSBidWYubGVuZ3RoO1xuICAgICAgICBpZiAob2ZmICsgbGVuID4gYnVmTGVuZ3RoKVxuICAgICAgICAgICAgbGVuID0gYnVmTGVuZ3RoIC0gb2ZmO1xuICAgICAgICBpZiAobGVuIDw9IDApXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgY29uc3QgcmVxdWlyZWRTaXplID0gcG9zICsgbGVuO1xuICAgICAgICBpZiAocmVxdWlyZWRTaXplID4gdGhpcy5jYXBhY2l0eSkge1xuICAgICAgICAgICAgbGV0IG5ld0NhcGFjaXR5ID0gTWF0aC5tYXgodGhpcy5jYXBhY2l0eSAqIDIsIDY0KTtcbiAgICAgICAgICAgIHdoaWxlIChuZXdDYXBhY2l0eSA8IHJlcXVpcmVkU2l6ZSlcbiAgICAgICAgICAgICAgICBuZXdDYXBhY2l0eSAqPSAyO1xuICAgICAgICAgICAgY29uc3QgbmV3QnVmID0gKDAsIGJ1ZmZlcl8xLmJ1ZmZlckFsbG9jVW5zYWZlKShuZXdDYXBhY2l0eSk7XG4gICAgICAgICAgICBpZiAodGhpcy5zaXplID4gMClcbiAgICAgICAgICAgICAgICB0aGlzLmJ1Zi5jb3B5KG5ld0J1ZiwgMCwgMCwgdGhpcy5zaXplKTtcbiAgICAgICAgICAgIHRoaXMuYnVmID0gbmV3QnVmO1xuICAgICAgICAgICAgdGhpcy5jYXBhY2l0eSA9IG5ld0NhcGFjaXR5O1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3MgPiB0aGlzLnNpemUpXG4gICAgICAgICAgICB0aGlzLmJ1Zi5maWxsKDAsIHRoaXMuc2l6ZSwgcG9zKTtcbiAgICAgICAgYnVmLmNvcHkodGhpcy5idWYsIHBvcywgb2ZmLCBvZmYgKyBsZW4pO1xuICAgICAgICBpZiAocmVxdWlyZWRTaXplID4gdGhpcy5zaXplKVxuICAgICAgICAgICAgdGhpcy5zaXplID0gcmVxdWlyZWRTaXplO1xuICAgICAgICB0aGlzLnRvdWNoKCk7XG4gICAgICAgIHJldHVybiBsZW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlYWQgZGF0YSBmcm9tIHRoZSBmaWxlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGJ1ZiBCdWZmZXIgdG8gcmVhZCBkYXRhIGludG8uXG4gICAgICogQHBhcmFtIG9mZiBPZmZzZXQgaW50IHRoZSBgYnVmYCB3aGVyZSB0byBzdGFydCB3cml0aW5nIGRhdGEuXG4gICAgICogQHBhcmFtIGxlbiBIb3cgbWFueSBieXRlcyB0byByZWFkLiBFcXVhbHMgdG8gYGJ1Zi5ieXRlTGVuZ3RoYCBieSBkZWZhdWx0LlxuICAgICAqIEBwYXJhbSBwb3MgUG9zaXRpb24gb2Zmc2V0IGluIGZpbGUgd2hlcmUgdG8gc3RhcnQgcmVhZGluZy4gRGVmYXVsdHMgdG8gYDBgLlxuICAgICAqIEByZXR1cm5zIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkLlxuICAgICAqL1xuICAgIHJlYWQoYnVmLCBvZmYgPSAwLCBsZW4gPSBidWYuYnl0ZUxlbmd0aCwgcG9zID0gMCkge1xuICAgICAgICB0aGlzLmF0aW1lID0gbmV3IERhdGUoKTtcbiAgICAgICAgaWYgKHBvcyA+PSB0aGlzLnNpemUpXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgbGV0IGFjdHVhbExlbiA9IGxlbjtcbiAgICAgICAgaWYgKGFjdHVhbExlbiA+IGJ1Zi5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgYWN0dWFsTGVuID0gYnVmLmJ5dGVMZW5ndGg7XG4gICAgICAgIGlmIChhY3R1YWxMZW4gKyBwb3MgPiB0aGlzLnNpemUpXG4gICAgICAgICAgICBhY3R1YWxMZW4gPSB0aGlzLnNpemUgLSBwb3M7XG4gICAgICAgIGlmIChhY3R1YWxMZW4gPD0gMClcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICBjb25zdCBidWYyID0gYnVmIGluc3RhbmNlb2YgYnVmZmVyXzEuQnVmZmVyID8gYnVmIDogYnVmZmVyXzEuQnVmZmVyLmZyb20oYnVmLmJ1ZmZlciwgYnVmLmJ5dGVPZmZzZXQsIGJ1Zi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgdGhpcy5idWYuY29weShidWYyLCBvZmYsIHBvcywgcG9zICsgYWN0dWFsTGVuKTtcbiAgICAgICAgcmV0dXJuIGFjdHVhbExlbjtcbiAgICB9XG4gICAgdHJ1bmNhdGUobGVuID0gMCkge1xuICAgICAgICBpZiAoIWxlbikge1xuICAgICAgICAgICAgdGhpcy5idWYgPSBFTVBUWV9CVUZGRVI7XG4gICAgICAgICAgICB0aGlzLmNhcGFjaXR5ID0gMDtcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgICAgICAgICB0aGlzLnRvdWNoKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlbiA8PSB0aGlzLnNpemUpXG4gICAgICAgICAgICB0aGlzLnNpemUgPSBsZW47XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGxlbiA+IHRoaXMuY2FwYWNpdHkpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3Q2FwYWNpdHkgPSBNYXRoLm1heCh0aGlzLmNhcGFjaXR5ICogMiwgNjQpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChuZXdDYXBhY2l0eSA8IGxlbilcbiAgICAgICAgICAgICAgICAgICAgbmV3Q2FwYWNpdHkgKj0gMjtcbiAgICAgICAgICAgICAgICBjb25zdCBidWYgPSAoMCwgYnVmZmVyXzEuYnVmZmVyQWxsb2NVbnNhZmUpKG5ld0NhcGFjaXR5KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaXplID4gMClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5idWYuY29weShidWYsIDAsIDAsIHRoaXMuc2l6ZSk7XG4gICAgICAgICAgICAgICAgYnVmLmZpbGwoMCwgdGhpcy5zaXplLCBsZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVmID0gYnVmO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FwYWNpdHkgPSBuZXdDYXBhY2l0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLmJ1Zi5maWxsKDAsIHRoaXMuc2l6ZSwgbGVuKTtcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA9IGxlbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvdWNoKCk7XG4gICAgfVxuICAgIGNobW9kKHBlcm0pIHtcbiAgICAgICAgdGhpcy5tb2RlID0gKHRoaXMubW9kZSAmIFNfSUZNVCkgfCAocGVybSAmIH5TX0lGTVQpO1xuICAgICAgICB0aGlzLnRvdWNoKCk7XG4gICAgfVxuICAgIGNob3duKHVpZCwgZ2lkKSB7XG4gICAgICAgIHRoaXMudWlkID0gdWlkO1xuICAgICAgICB0aGlzLmdpZCA9IGdpZDtcbiAgICAgICAgdGhpcy50b3VjaCgpO1xuICAgIH1cbiAgICB0b3VjaCgpIHtcbiAgICAgICAgdGhpcy5tdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlcy5lbWl0KFsnbW9kaWZ5J10pO1xuICAgIH1cbiAgICBjYW5SZWFkKHVpZCA9IGdldHVpZCgpLCBnaWQgPSBnZXRnaWQoKSkge1xuICAgICAgICBpZiAodGhpcy5wZXJtICYgNCAvKiBTLklST1RIICovKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ2lkID09PSB0aGlzLmdpZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGVybSAmIDMyIC8qIFMuSVJHUlAgKi8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodWlkID09PSB0aGlzLnVpZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGVybSAmIDI1NiAvKiBTLklSVVNSICovKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjYW5Xcml0ZSh1aWQgPSBnZXR1aWQoKSwgZ2lkID0gZ2V0Z2lkKCkpIHtcbiAgICAgICAgaWYgKHRoaXMucGVybSAmIDIgLyogUy5JV09USCAqLykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdpZCA9PT0gdGhpcy5naWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBlcm0gJiAxNiAvKiBTLklXR1JQICovKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVpZCA9PT0gdGhpcy51aWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBlcm0gJiAxMjggLyogUy5JV1VTUiAqLykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY2FuRXhlY3V0ZSh1aWQgPSBnZXR1aWQoKSwgZ2lkID0gZ2V0Z2lkKCkpIHtcbiAgICAgICAgaWYgKHRoaXMucGVybSAmIDEgLyogUy5JWE9USCAqLykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdpZCA9PT0gdGhpcy5naWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBlcm0gJiA4IC8qIFMuSVhHUlAgKi8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodWlkID09PSB0aGlzLnVpZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGVybSAmIDY0IC8qIFMuSVhVU1IgKi8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGRlbCgpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VzLmVtaXQoWydkZWxldGUnXSk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlubzogdGhpcy5pbm8sXG4gICAgICAgICAgICB1aWQ6IHRoaXMudWlkLFxuICAgICAgICAgICAgZ2lkOiB0aGlzLmdpZCxcbiAgICAgICAgICAgIGF0aW1lOiB0aGlzLmF0aW1lLmdldFRpbWUoKSxcbiAgICAgICAgICAgIG10aW1lOiB0aGlzLm10aW1lLmdldFRpbWUoKSxcbiAgICAgICAgICAgIGN0aW1lOiB0aGlzLmN0aW1lLmdldFRpbWUoKSxcbiAgICAgICAgICAgIHBlcm06IHRoaXMucGVybSxcbiAgICAgICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgICAgIG5saW5rOiB0aGlzLm5saW5rLFxuICAgICAgICAgICAgc3ltbGluazogdGhpcy5zeW1saW5rLFxuICAgICAgICAgICAgZGF0YTogdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnRzLk5vZGUgPSBOb2RlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Tm9kZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTGluayA9IHZvaWQgMDtcbmNvbnN0IGNvbnN0YW50c18xID0gcmVxdWlyZShcIi4uL2NvbnN0YW50c1wiKTtcbmNvbnN0IGZhbm91dF8xID0gcmVxdWlyZShcInRoaW5naWVzL2xpYi9mYW5vdXRcIik7XG5jb25zdCB7IFNfSUZSRUcgfSA9IGNvbnN0YW50c18xLmNvbnN0YW50cztcbi8qKlxuICogUmVwcmVzZW50cyBhIGhhcmQgbGluayB0aGF0IHBvaW50cyB0byBhbiBpLW5vZGUgYG5vZGVgLlxuICovXG5jbGFzcyBMaW5rIHtcbiAgICBnZXQgc3RlcHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGVwcztcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgc3luYyBjaGlsZHJlbiBzdGVwcywgZS5nLiBpbiBjYXNlIG9mIGRpciByZW5hbWVcbiAgICBzZXQgc3RlcHModmFsKSB7XG4gICAgICAgIHRoaXMuX3N0ZXBzID0gdmFsO1xuICAgICAgICBmb3IgKGNvbnN0IFtjaGlsZCwgbGlua10gb2YgdGhpcy5jaGlsZHJlbi5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZCA9PT0gJy4nIHx8IGNoaWxkID09PSAnLi4nKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5rPy5zeW5jU3RlcHMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcih2b2wsIHBhcmVudCwgbmFtZSkge1xuICAgICAgICB0aGlzLmNoYW5nZXMgPSBuZXcgZmFub3V0XzEuRmFuT3V0KCk7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBuZXcgTWFwKCk7XG4gICAgICAgIC8vIFBhdGggdG8gdGhpcyBub2RlIGFzIEFycmF5OiBbJ3VzcicsICdiaW4nLCAnbm9kZSddLlxuICAgICAgICB0aGlzLl9zdGVwcyA9IFtdO1xuICAgICAgICAvLyBcImktbm9kZVwiIG51bWJlciBvZiB0aGUgbm9kZS5cbiAgICAgICAgdGhpcy5pbm8gPSAwO1xuICAgICAgICAvLyBOdW1iZXIgb2YgY2hpbGRyZW4uXG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy52b2wgPSB2b2w7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnN5bmNTdGVwcygpO1xuICAgIH1cbiAgICBzZXROb2RlKG5vZGUpIHtcbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICAgICAgdGhpcy5pbm8gPSBub2RlLmlubztcbiAgICB9XG4gICAgZ2V0Tm9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgICB9XG4gICAgY3JlYXRlQ2hpbGQobmFtZSwgbm9kZSA9IHRoaXMudm9sLmNyZWF0ZU5vZGUoU19JRlJFRyB8IDBvNjY2KSkge1xuICAgICAgICBjb25zdCBsaW5rID0gbmV3IExpbmsodGhpcy52b2wsIHRoaXMsIG5hbWUpO1xuICAgICAgICBsaW5rLnNldE5vZGUobm9kZSk7XG4gICAgICAgIGlmIChub2RlLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgIGxpbmsuY2hpbGRyZW4uc2V0KCcuJywgbGluayk7XG4gICAgICAgICAgICBsaW5rLmdldE5vZGUoKS5ubGluaysrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0Q2hpbGQobmFtZSwgbGluayk7XG4gICAgICAgIHJldHVybiBsaW5rO1xuICAgIH1cbiAgICBzZXRDaGlsZChuYW1lLCBsaW5rID0gbmV3IExpbmsodGhpcy52b2wsIHRoaXMsIG5hbWUpKSB7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4uc2V0KG5hbWUsIGxpbmspO1xuICAgICAgICBsaW5rLnBhcmVudCA9IHRoaXM7XG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBsaW5rLmdldE5vZGUoKTtcbiAgICAgICAgaWYgKG5vZGUuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgbGluay5jaGlsZHJlbi5zZXQoJy4uJywgdGhpcyk7XG4gICAgICAgICAgICB0aGlzLmdldE5vZGUoKS5ubGluaysrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2V0Tm9kZSgpLm10aW1lID0gbmV3IERhdGUoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VzLmVtaXQoWydjaGlsZDphZGQnLCBsaW5rLCB0aGlzXSk7XG4gICAgICAgIHJldHVybiBsaW5rO1xuICAgIH1cbiAgICBkZWxldGVDaGlsZChsaW5rKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBsaW5rLmdldE5vZGUoKTtcbiAgICAgICAgaWYgKG5vZGUuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgbGluay5jaGlsZHJlbi5kZWxldGUoJy4uJyk7XG4gICAgICAgICAgICB0aGlzLmdldE5vZGUoKS5ubGluay0tO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hpbGRyZW4uZGVsZXRlKGxpbmsuZ2V0TmFtZSgpKTtcbiAgICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICAgICAgdGhpcy5nZXROb2RlKCkubXRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmNoYW5nZXMuZW1pdChbJ2NoaWxkOmRlbCcsIGxpbmssIHRoaXNdKTtcbiAgICB9XG4gICAgZ2V0Q2hpbGQobmFtZSkge1xuICAgICAgICB0aGlzLmdldE5vZGUoKS5hdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLmdldChuYW1lKTtcbiAgICB9XG4gICAgZ2V0UGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMuam9pbihcIi9cIiAvKiBQQVRILlNFUCAqLyk7XG4gICAgfVxuICAgIGdldFBhcmVudFBhdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnNsaWNlKDAsIC0xKS5qb2luKFwiL1wiIC8qIFBBVEguU0VQICovKTtcbiAgICB9XG4gICAgZ2V0TmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHNbdGhpcy5zdGVwcy5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RlcHM6IHRoaXMuc3RlcHMsXG4gICAgICAgICAgICBpbm86IHRoaXMuaW5vLFxuICAgICAgICAgICAgY2hpbGRyZW46IEFycmF5LmZyb20odGhpcy5jaGlsZHJlbi5rZXlzKCkpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBzeW5jU3RlcHMoKSB7XG4gICAgICAgIHRoaXMuc3RlcHMgPSB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50LnN0ZXBzLmNvbmNhdChbdGhpcy5uYW1lXSkgOiBbdGhpcy5uYW1lXTtcbiAgICB9XG59XG5leHBvcnRzLkxpbmsgPSBMaW5rO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGluay5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRmlsZSA9IHZvaWQgMDtcbmNvbnN0IGNvbnN0YW50c18xID0gcmVxdWlyZShcIi4uL2NvbnN0YW50c1wiKTtcbmNvbnN0IHsgT19BUFBFTkQgfSA9IGNvbnN0YW50c18xLmNvbnN0YW50cztcbi8qKlxuICogUmVwcmVzZW50cyBhbiBvcGVuIGZpbGUgKGZpbGUgZGVzY3JpcHRvcikgdGhhdCBwb2ludHMgdG8gYSBgTGlua2AgKEhhcmQtbGluaykgYW5kIGEgYE5vZGVgLlxuICpcbiAqIEB0b2RvIFJlbmFtZSB0byBgT3BlbkZpbGVgLlxuICovXG5jbGFzcyBGaWxlIHtcbiAgICAvKipcbiAgICAgKiBPcGVuIGEgTGluay1Ob2RlIHBhaXIuIGBub2RlYCBpcyBwcm92aWRlZCBzZXBhcmF0ZWx5IGFzIHRoYXQgbWlnaHQgYmUgYSBkaWZmZXJlbnQgbm9kZVxuICAgICAqIHJhdGhlciB0aGUgb25lIGBsaW5rYCBwb2ludHMgdG8sIGJlY2F1c2UgaXQgbWlnaHQgYmUgYSBzeW1saW5rLlxuICAgICAqIEBwYXJhbSBsaW5rXG4gICAgICogQHBhcmFtIG5vZGVcbiAgICAgKiBAcGFyYW0gZmxhZ3NcbiAgICAgKiBAcGFyYW0gZmRcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihsaW5rLCBub2RlLCBmbGFncywgZmQpIHtcbiAgICAgICAgdGhpcy5saW5rID0gbGluaztcbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICAgICAgdGhpcy5mbGFncyA9IGZsYWdzO1xuICAgICAgICB0aGlzLmZkID0gZmQ7XG4gICAgICAgIHRoaXMucG9zaXRpb24gPSAwO1xuICAgICAgICBpZiAodGhpcy5mbGFncyAmIE9fQVBQRU5EKVxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHRoaXMuZ2V0U2l6ZSgpO1xuICAgIH1cbiAgICBnZXRTdHJpbmcoZW5jb2RpbmcgPSAndXRmOCcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5nZXRTdHJpbmcoKTtcbiAgICB9XG4gICAgc2V0U3RyaW5nKHN0cikge1xuICAgICAgICB0aGlzLm5vZGUuc2V0U3RyaW5nKHN0cik7XG4gICAgfVxuICAgIGdldEJ1ZmZlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5nZXRCdWZmZXIoKTtcbiAgICB9XG4gICAgc2V0QnVmZmVyKGJ1Zikge1xuICAgICAgICB0aGlzLm5vZGUuc2V0QnVmZmVyKGJ1Zik7XG4gICAgfVxuICAgIGdldFNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGUuZ2V0U2l6ZSgpO1xuICAgIH1cbiAgICB0cnVuY2F0ZShsZW4pIHtcbiAgICAgICAgdGhpcy5ub2RlLnRydW5jYXRlKGxlbik7XG4gICAgfVxuICAgIHNlZWtUbyhwb3NpdGlvbikge1xuICAgICAgICB0aGlzLnBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgfVxuICAgIHdyaXRlKGJ1Ziwgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gYnVmLmxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwb3NpdGlvbiAhPT0gJ251bWJlcicpXG4gICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb247XG4gICAgICAgIGNvbnN0IGJ5dGVzID0gdGhpcy5ub2RlLndyaXRlKGJ1Ziwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uICsgYnl0ZXM7XG4gICAgICAgIHJldHVybiBieXRlcztcbiAgICB9XG4gICAgcmVhZChidWYsIG9mZnNldCA9IDAsIGxlbmd0aCA9IGJ1Zi5ieXRlTGVuZ3RoLCBwb3NpdGlvbikge1xuICAgICAgICBpZiAodHlwZW9mIHBvc2l0aW9uICE9PSAnbnVtYmVyJylcbiAgICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbjtcbiAgICAgICAgY29uc3QgYnl0ZXMgPSB0aGlzLm5vZGUucmVhZChidWYsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG4gICAgICAgIHRoaXMucG9zaXRpb24gPSBwb3NpdGlvbiArIGJ5dGVzO1xuICAgICAgICByZXR1cm4gYnl0ZXM7XG4gICAgfVxuICAgIGNobW9kKHBlcm0pIHtcbiAgICAgICAgdGhpcy5ub2RlLmNobW9kKHBlcm0pO1xuICAgIH1cbiAgICBjaG93bih1aWQsIGdpZCkge1xuICAgICAgICB0aGlzLm5vZGUuY2hvd24odWlkLCBnaWQpO1xuICAgIH1cbn1cbmV4cG9ydHMuRmlsZSA9IEZpbGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaWxlLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5GTEFHUyA9IGV4cG9ydHMuRVJSU1RSID0gdm9pZCAwO1xuY29uc3QgY29uc3RhbnRzXzEgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzXCIpO1xuZXhwb3J0cy5FUlJTVFIgPSB7XG4gICAgUEFUSF9TVFI6ICdwYXRoIG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgb3IgVWludDhBcnJheScsXG4gICAgLy8gRkQ6ICAgICAgICAgICAgICdmaWxlIGRlc2NyaXB0b3IgbXVzdCBiZSBhIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyJyxcbiAgICBGRDogJ2ZkIG11c3QgYmUgYSBmaWxlIGRlc2NyaXB0b3InLFxuICAgIE1PREVfSU5UOiAnbW9kZSBtdXN0IGJlIGFuIGludCcsXG4gICAgQ0I6ICdjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24nLFxuICAgIFVJRDogJ3VpZCBtdXN0IGJlIGFuIHVuc2lnbmVkIGludCcsXG4gICAgR0lEOiAnZ2lkIG11c3QgYmUgYW4gdW5zaWduZWQgaW50JyxcbiAgICBMRU46ICdsZW4gbXVzdCBiZSBhbiBpbnRlZ2VyJyxcbiAgICBBVElNRTogJ2F0aW1lIG11c3QgYmUgYW4gaW50ZWdlcicsXG4gICAgTVRJTUU6ICdtdGltZSBtdXN0IGJlIGFuIGludGVnZXInLFxuICAgIFBSRUZJWDogJ2ZpbGVuYW1lIHByZWZpeCBpcyByZXF1aXJlZCcsXG4gICAgQlVGRkVSOiAnYnVmZmVyIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgQnVmZmVyIG9yIFN0YXRpY0J1ZmZlcicsXG4gICAgT0ZGU0VUOiAnb2Zmc2V0IG11c3QgYmUgYW4gaW50ZWdlcicsXG4gICAgTEVOR1RIOiAnbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlcicsXG4gICAgUE9TSVRJT046ICdwb3NpdGlvbiBtdXN0IGJlIGFuIGludGVnZXInLFxufTtcbmNvbnN0IHsgT19SRE9OTFksIE9fV1JPTkxZLCBPX1JEV1IsIE9fQ1JFQVQsIE9fRVhDTCwgT19UUlVOQywgT19BUFBFTkQsIE9fU1lOQyB9ID0gY29uc3RhbnRzXzEuY29uc3RhbnRzO1xuLy8gTGlzdCBvZiBmaWxlIGBmbGFnc2AgYXMgZGVmaW5lZCBieSBOb2RlLlxudmFyIEZMQUdTO1xuKGZ1bmN0aW9uIChGTEFHUykge1xuICAgIC8vIE9wZW4gZmlsZSBmb3IgcmVhZGluZy4gQW4gZXhjZXB0aW9uIG9jY3VycyBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdC5cbiAgICBGTEFHU1tGTEFHU1tcInJcIl0gPSBPX1JET05MWV0gPSBcInJcIjtcbiAgICAvLyBPcGVuIGZpbGUgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcuIEFuIGV4Y2VwdGlvbiBvY2N1cnMgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QuXG4gICAgRkxBR1NbRkxBR1NbXCJyK1wiXSA9IE9fUkRXUl0gPSBcInIrXCI7XG4gICAgLy8gT3BlbiBmaWxlIGZvciByZWFkaW5nIGluIHN5bmNocm9ub3VzIG1vZGUuIEluc3RydWN0cyB0aGUgb3BlcmF0aW5nIHN5c3RlbSB0byBieXBhc3MgdGhlIGxvY2FsIGZpbGUgc3lzdGVtIGNhY2hlLlxuICAgIEZMQUdTW0ZMQUdTW1wicnNcIl0gPSBPX1JET05MWSB8IE9fU1lOQ10gPSBcInJzXCI7XG4gICAgRkxBR1NbRkxBR1NbXCJzclwiXSA9IEZMQUdTLnJzXSA9IFwic3JcIjtcbiAgICAvLyBPcGVuIGZpbGUgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcsIHRlbGxpbmcgdGhlIE9TIHRvIG9wZW4gaXQgc3luY2hyb25vdXNseS4gU2VlIG5vdGVzIGZvciAncnMnIGFib3V0IHVzaW5nIHRoaXMgd2l0aCBjYXV0aW9uLlxuICAgIEZMQUdTW0ZMQUdTW1wicnMrXCJdID0gT19SRFdSIHwgT19TWU5DXSA9IFwicnMrXCI7XG4gICAgRkxBR1NbRkxBR1NbXCJzcitcIl0gPSBGTEFHU1sncnMrJ11dID0gXCJzcitcIjtcbiAgICAvLyBPcGVuIGZpbGUgZm9yIHdyaXRpbmcuIFRoZSBmaWxlIGlzIGNyZWF0ZWQgKGlmIGl0IGRvZXMgbm90IGV4aXN0KSBvciB0cnVuY2F0ZWQgKGlmIGl0IGV4aXN0cykuXG4gICAgRkxBR1NbRkxBR1NbXCJ3XCJdID0gT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQ10gPSBcIndcIjtcbiAgICAvLyBMaWtlICd3JyBidXQgZmFpbHMgaWYgcGF0aCBleGlzdHMuXG4gICAgRkxBR1NbRkxBR1NbXCJ3eFwiXSA9IE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMgfCBPX0VYQ0xdID0gXCJ3eFwiO1xuICAgIEZMQUdTW0ZMQUdTW1wieHdcIl0gPSBGTEFHUy53eF0gPSBcInh3XCI7XG4gICAgLy8gT3BlbiBmaWxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nLiBUaGUgZmlsZSBpcyBjcmVhdGVkIChpZiBpdCBkb2VzIG5vdCBleGlzdCkgb3IgdHJ1bmNhdGVkIChpZiBpdCBleGlzdHMpLlxuICAgIEZMQUdTW0ZMQUdTW1widytcIl0gPSBPX1JEV1IgfCBPX0NSRUFUIHwgT19UUlVOQ10gPSBcIncrXCI7XG4gICAgLy8gTGlrZSAndysnIGJ1dCBmYWlscyBpZiBwYXRoIGV4aXN0cy5cbiAgICBGTEFHU1tGTEFHU1tcInd4K1wiXSA9IE9fUkRXUiB8IE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19FWENMXSA9IFwid3grXCI7XG4gICAgRkxBR1NbRkxBR1NbXCJ4dytcIl0gPSBGTEFHU1snd3grJ11dID0gXCJ4dytcIjtcbiAgICAvLyBPcGVuIGZpbGUgZm9yIGFwcGVuZGluZy4gVGhlIGZpbGUgaXMgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAgICBGTEFHU1tGTEFHU1tcImFcIl0gPSBPX1dST05MWSB8IE9fQVBQRU5EIHwgT19DUkVBVF0gPSBcImFcIjtcbiAgICAvLyBMaWtlICdhJyBidXQgZmFpbHMgaWYgcGF0aCBleGlzdHMuXG4gICAgRkxBR1NbRkxBR1NbXCJheFwiXSA9IE9fV1JPTkxZIHwgT19BUFBFTkQgfCBPX0NSRUFUIHwgT19FWENMXSA9IFwiYXhcIjtcbiAgICBGTEFHU1tGTEFHU1tcInhhXCJdID0gRkxBR1MuYXhdID0gXCJ4YVwiO1xuICAgIC8vIE9wZW4gZmlsZSBmb3IgcmVhZGluZyBhbmQgYXBwZW5kaW5nLiBUaGUgZmlsZSBpcyBjcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICAgIEZMQUdTW0ZMQUdTW1wiYStcIl0gPSBPX1JEV1IgfCBPX0FQUEVORCB8IE9fQ1JFQVRdID0gXCJhK1wiO1xuICAgIC8vIExpa2UgJ2ErJyBidXQgZmFpbHMgaWYgcGF0aCBleGlzdHMuXG4gICAgRkxBR1NbRkxBR1NbXCJheCtcIl0gPSBPX1JEV1IgfCBPX0FQUEVORCB8IE9fQ1JFQVQgfCBPX0VYQ0xdID0gXCJheCtcIjtcbiAgICBGTEFHU1tGTEFHU1tcInhhK1wiXSA9IEZMQUdTWydheCsnXV0gPSBcInhhK1wiO1xufSkoRkxBR1MgfHwgKGV4cG9ydHMuRkxBR1MgPSBGTEFHUyA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb25zdGFudHMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRlZmF1bHQgPSB0eXBlb2YgcXVldWVNaWNyb3Rhc2sgPT09ICdmdW5jdGlvbicgPyBxdWV1ZU1pY3JvdGFzayA6IChjYiA9PiBQcm9taXNlLnJlc29sdmUoKVxuICAgIC50aGVuKCgpID0+IGNiKCkpXG4gICAgLmNhdGNoKCgpID0+IHsgfSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cXVldWVNaWNyb3Rhc2suanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmZpbGVuYW1lVG9TdGVwcyA9IGV4cG9ydHMucmVzb2x2ZSA9IGV4cG9ydHMudW5peGlmeSA9IGV4cG9ydHMuaXNXaW4gPSB2b2lkIDA7XG5leHBvcnRzLmlzRmQgPSBpc0ZkO1xuZXhwb3J0cy52YWxpZGF0ZUZkID0gdmFsaWRhdGVGZDtcbmV4cG9ydHMuZGF0YVRvQnVmZmVyID0gZGF0YVRvQnVmZmVyO1xuY29uc3QgcGF0aF8xID0gcmVxdWlyZShcIi4uL3ZlbmRvci9ub2RlL3BhdGhcIik7XG5jb25zdCBidWZmZXJfMSA9IHJlcXVpcmUoXCIuLi92ZW5kb3Ivbm9kZS9pbnRlcm5hbC9idWZmZXJcIik7XG5jb25zdCBwcm9jZXNzXzEgPSByZXF1aXJlKFwiLi4vcHJvY2Vzc1wiKTtcbmNvbnN0IGVuY29kaW5nXzEgPSByZXF1aXJlKFwiLi4vZW5jb2RpbmdcIik7XG5jb25zdCBjb25zdGFudHNfMSA9IHJlcXVpcmUoXCIuLi9ub2RlL2NvbnN0YW50c1wiKTtcbmV4cG9ydHMuaXNXaW4gPSBwcm9jZXNzXzEuZGVmYXVsdC5wbGF0Zm9ybSA9PT0gJ3dpbjMyJztcbmNvbnN0IHJlc29sdmVDcm9zc1BsYXRmb3JtID0gcGF0aF8xLnJlc29sdmU7XG5jb25zdCBwYXRoU2VwID0gcGF0aF8xLnBvc2l4ID8gcGF0aF8xLnBvc2l4LnNlcCA6IHBhdGhfMS5zZXA7XG5jb25zdCBpc1NlcGFyYXRvciA9IChzdHIsIGkpID0+IHtcbiAgICBsZXQgY2hhciA9IHN0cltpXTtcbiAgICByZXR1cm4gaSA+IDAgJiYgKGNoYXIgPT09ICcvJyB8fCAoZXhwb3J0cy5pc1dpbiAmJiBjaGFyID09PSAnXFxcXCcpKTtcbn07XG5jb25zdCByZW1vdmVUcmFpbGluZ1NlcGFyYXRvciA9IChzdHIpID0+IHtcbiAgICBsZXQgaSA9IHN0ci5sZW5ndGggLSAxO1xuICAgIGlmIChpIDwgMilcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB3aGlsZSAoaXNTZXBhcmF0b3Ioc3RyLCBpKSlcbiAgICAgICAgaS0tO1xuICAgIHJldHVybiBzdHIuc3Vic3RyKDAsIGkgKyAxKTtcbn07XG5jb25zdCBub3JtYWxpemVQYXRoID0gKHN0ciwgc3RyaXBUcmFpbGluZykgPT4ge1xuICAgIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJylcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhwZWN0ZWQgYSBzdHJpbmcnKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvW1xcXFxcXC9dKy9nLCAnLycpO1xuICAgIGlmIChzdHJpcFRyYWlsaW5nICE9PSBmYWxzZSlcbiAgICAgICAgc3RyID0gcmVtb3ZlVHJhaWxpbmdTZXBhcmF0b3Ioc3RyKTtcbiAgICByZXR1cm4gc3RyO1xufTtcbmNvbnN0IHVuaXhpZnkgPSAoZmlsZXBhdGgsIHN0cmlwVHJhaWxpbmcgPSB0cnVlKSA9PiB7XG4gICAgaWYgKGV4cG9ydHMuaXNXaW4pIHtcbiAgICAgICAgZmlsZXBhdGggPSBub3JtYWxpemVQYXRoKGZpbGVwYXRoLCBzdHJpcFRyYWlsaW5nKTtcbiAgICAgICAgcmV0dXJuIGZpbGVwYXRoLnJlcGxhY2UoL14oW2EtekEtWl0rOnxcXC5cXC8pLywgJycpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsZXBhdGg7XG59O1xuZXhwb3J0cy51bml4aWZ5ID0gdW5peGlmeTtcbmxldCByZXNvbHZlID0gKGZpbGVuYW1lLCBiYXNlID0gcHJvY2Vzc18xLmRlZmF1bHQuY3dkKCkpID0+IHJlc29sdmVDcm9zc1BsYXRmb3JtKGJhc2UsIGZpbGVuYW1lKTtcbmV4cG9ydHMucmVzb2x2ZSA9IHJlc29sdmU7XG5pZiAoZXhwb3J0cy5pc1dpbikge1xuICAgIGNvbnN0IF9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICBleHBvcnRzLnJlc29sdmUgPSByZXNvbHZlID0gKGZpbGVuYW1lLCBiYXNlKSA9PiAoMCwgZXhwb3J0cy51bml4aWZ5KShfcmVzb2x2ZShmaWxlbmFtZSwgYmFzZSkpO1xufVxuY29uc3QgZmlsZW5hbWVUb1N0ZXBzID0gKGZpbGVuYW1lLCBiYXNlKSA9PiB7XG4gICAgY29uc3QgZnVsbFBhdGggPSByZXNvbHZlKGZpbGVuYW1lLCBiYXNlKTtcbiAgICBjb25zdCBmdWxsUGF0aFNhbnNTbGFzaCA9IGZ1bGxQYXRoLnN1YnN0cmluZygxKTtcbiAgICBpZiAoIWZ1bGxQYXRoU2Fuc1NsYXNoKVxuICAgICAgICByZXR1cm4gW107XG4gICAgcmV0dXJuIGZ1bGxQYXRoU2Fuc1NsYXNoLnNwbGl0KHBhdGhTZXApO1xufTtcbmV4cG9ydHMuZmlsZW5hbWVUb1N0ZXBzID0gZmlsZW5hbWVUb1N0ZXBzO1xuZnVuY3Rpb24gaXNGZChwYXRoKSB7XG4gICAgcmV0dXJuIHBhdGggPj4+IDAgPT09IHBhdGg7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZUZkKGZkKSB7XG4gICAgaWYgKCFpc0ZkKGZkKSlcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKGNvbnN0YW50c18xLkVSUlNUUi5GRCk7XG59XG5mdW5jdGlvbiBkYXRhVG9CdWZmZXIoZGF0YSwgZW5jb2RpbmcgPSBlbmNvZGluZ18xLkVOQ09ESU5HX1VURjgpIHtcbiAgICBpZiAoYnVmZmVyXzEuQnVmZmVyLmlzQnVmZmVyKGRhdGEpKVxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSlcbiAgICAgICAgcmV0dXJuICgwLCBidWZmZXJfMS5idWZmZXJGcm9tKShkYXRhKTtcbiAgICBlbHNlIGlmIChlbmNvZGluZyA9PT0gJ2J1ZmZlcicpXG4gICAgICAgIHJldHVybiAoMCwgYnVmZmVyXzEuYnVmZmVyRnJvbSkoU3RyaW5nKGRhdGEpLCAndXRmOCcpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuICgwLCBidWZmZXJfMS5idWZmZXJGcm9tKShTdHJpbmcoZGF0YSksIGVuY29kaW5nKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWwuanMubWFwIiwiLyohIGh0dHBzOi8vbXRocy5iZS9wdW55Y29kZSB2MS40LjEgYnkgQG1hdGhpYXMgKi9cbjsoZnVuY3Rpb24ocm9vdCkge1xuXG5cdC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZXMgKi9cblx0dmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJlxuXHRcdCFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cdHZhciBmcmVlTW9kdWxlID0gdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiZcblx0XHQhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblx0dmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbDtcblx0aWYgKFxuXHRcdGZyZWVHbG9iYWwuZ2xvYmFsID09PSBmcmVlR2xvYmFsIHx8XG5cdFx0ZnJlZUdsb2JhbC53aW5kb3cgPT09IGZyZWVHbG9iYWwgfHxcblx0XHRmcmVlR2xvYmFsLnNlbGYgPT09IGZyZWVHbG9iYWxcblx0KSB7XG5cdFx0cm9vdCA9IGZyZWVHbG9iYWw7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGBwdW55Y29kZWAgb2JqZWN0LlxuXHQgKiBAbmFtZSBwdW55Y29kZVxuXHQgKiBAdHlwZSBPYmplY3Rcblx0ICovXG5cdHZhciBwdW55Y29kZSxcblxuXHQvKiogSGlnaGVzdCBwb3NpdGl2ZSBzaWduZWQgMzItYml0IGZsb2F0IHZhbHVlICovXG5cdG1heEludCA9IDIxNDc0ODM2NDcsIC8vIGFrYS4gMHg3RkZGRkZGRiBvciAyXjMxLTFcblxuXHQvKiogQm9vdHN0cmluZyBwYXJhbWV0ZXJzICovXG5cdGJhc2UgPSAzNixcblx0dE1pbiA9IDEsXG5cdHRNYXggPSAyNixcblx0c2tldyA9IDM4LFxuXHRkYW1wID0gNzAwLFxuXHRpbml0aWFsQmlhcyA9IDcyLFxuXHRpbml0aWFsTiA9IDEyOCwgLy8gMHg4MFxuXHRkZWxpbWl0ZXIgPSAnLScsIC8vICdcXHgyRCdcblxuXHQvKiogUmVndWxhciBleHByZXNzaW9ucyAqL1xuXHRyZWdleFB1bnljb2RlID0gL154bi0tLyxcblx0cmVnZXhOb25BU0NJSSA9IC9bXlxceDIwLVxceDdFXS8sIC8vIHVucHJpbnRhYmxlIEFTQ0lJIGNoYXJzICsgbm9uLUFTQ0lJIGNoYXJzXG5cdHJlZ2V4U2VwYXJhdG9ycyA9IC9bXFx4MkVcXHUzMDAyXFx1RkYwRVxcdUZGNjFdL2csIC8vIFJGQyAzNDkwIHNlcGFyYXRvcnNcblxuXHQvKiogRXJyb3IgbWVzc2FnZXMgKi9cblx0ZXJyb3JzID0ge1xuXHRcdCdvdmVyZmxvdyc6ICdPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcycsXG5cdFx0J25vdC1iYXNpYyc6ICdJbGxlZ2FsIGlucHV0ID49IDB4ODAgKG5vdCBhIGJhc2ljIGNvZGUgcG9pbnQpJyxcblx0XHQnaW52YWxpZC1pbnB1dCc6ICdJbnZhbGlkIGlucHV0J1xuXHR9LFxuXG5cdC8qKiBDb252ZW5pZW5jZSBzaG9ydGN1dHMgKi9cblx0YmFzZU1pbnVzVE1pbiA9IGJhc2UgLSB0TWluLFxuXHRmbG9vciA9IE1hdGguZmxvb3IsXG5cdHN0cmluZ0Zyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUsXG5cblx0LyoqIFRlbXBvcmFyeSB2YXJpYWJsZSAqL1xuXHRrZXk7XG5cblx0LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblx0LyoqXG5cdCAqIEEgZ2VuZXJpYyBlcnJvciB1dGlsaXR5IGZ1bmN0aW9uLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSBUaGUgZXJyb3IgdHlwZS5cblx0ICogQHJldHVybnMge0Vycm9yfSBUaHJvd3MgYSBgUmFuZ2VFcnJvcmAgd2l0aCB0aGUgYXBwbGljYWJsZSBlcnJvciBtZXNzYWdlLlxuXHQgKi9cblx0ZnVuY3Rpb24gZXJyb3IodHlwZSkge1xuXHRcdHRocm93IG5ldyBSYW5nZUVycm9yKGVycm9yc1t0eXBlXSk7XG5cdH1cblxuXHQvKipcblx0ICogQSBnZW5lcmljIGBBcnJheSNtYXBgIHV0aWxpdHkgZnVuY3Rpb24uXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeSBhcnJheVxuXHQgKiBpdGVtLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IEEgbmV3IGFycmF5IG9mIHZhbHVlcyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uXG5cdCAqL1xuXHRmdW5jdGlvbiBtYXAoYXJyYXksIGZuKSB7XG5cdFx0dmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblx0XHR2YXIgcmVzdWx0ID0gW107XG5cdFx0d2hpbGUgKGxlbmd0aC0tKSB7XG5cdFx0XHRyZXN1bHRbbGVuZ3RoXSA9IGZuKGFycmF5W2xlbmd0aF0pO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEEgc2ltcGxlIGBBcnJheSNtYXBgLWxpa2Ugd3JhcHBlciB0byB3b3JrIHdpdGggZG9tYWluIG5hbWUgc3RyaW5ncyBvciBlbWFpbFxuXHQgKiBhZGRyZXNzZXMuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBkb21haW4gVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeVxuXHQgKiBjaGFyYWN0ZXIuXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrXG5cdCAqIGZ1bmN0aW9uLlxuXHQgKi9cblx0ZnVuY3Rpb24gbWFwRG9tYWluKHN0cmluZywgZm4pIHtcblx0XHR2YXIgcGFydHMgPSBzdHJpbmcuc3BsaXQoJ0AnKTtcblx0XHR2YXIgcmVzdWx0ID0gJyc7XG5cdFx0aWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcblx0XHRcdC8vIEluIGVtYWlsIGFkZHJlc3Nlcywgb25seSB0aGUgZG9tYWluIG5hbWUgc2hvdWxkIGJlIHB1bnljb2RlZC4gTGVhdmVcblx0XHRcdC8vIHRoZSBsb2NhbCBwYXJ0IChpLmUuIGV2ZXJ5dGhpbmcgdXAgdG8gYEBgKSBpbnRhY3QuXG5cdFx0XHRyZXN1bHQgPSBwYXJ0c1swXSArICdAJztcblx0XHRcdHN0cmluZyA9IHBhcnRzWzFdO1xuXHRcdH1cblx0XHQvLyBBdm9pZCBgc3BsaXQocmVnZXgpYCBmb3IgSUU4IGNvbXBhdGliaWxpdHkuIFNlZSAjMTcuXG5cdFx0c3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocmVnZXhTZXBhcmF0b3JzLCAnXFx4MkUnKTtcblx0XHR2YXIgbGFiZWxzID0gc3RyaW5nLnNwbGl0KCcuJyk7XG5cdFx0dmFyIGVuY29kZWQgPSBtYXAobGFiZWxzLCBmbikuam9pbignLicpO1xuXHRcdHJldHVybiByZXN1bHQgKyBlbmNvZGVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtZXJpYyBjb2RlIHBvaW50cyBvZiBlYWNoIFVuaWNvZGVcblx0ICogY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuIFdoaWxlIEphdmFTY3JpcHQgdXNlcyBVQ1MtMiBpbnRlcm5hbGx5LFxuXHQgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHBhaXIgb2Ygc3Vycm9nYXRlIGhhbHZlcyAoZWFjaCBvZiB3aGljaFxuXHQgKiBVQ1MtMiBleHBvc2VzIGFzIHNlcGFyYXRlIGNoYXJhY3RlcnMpIGludG8gYSBzaW5nbGUgY29kZSBwb2ludCxcblx0ICogbWF0Y2hpbmcgVVRGLTE2LlxuXHQgKiBAc2VlIGBwdW55Y29kZS51Y3MyLmVuY29kZWBcblx0ICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG5cdCAqIEBuYW1lIGRlY29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nIFRoZSBVbmljb2RlIGlucHV0IHN0cmluZyAoVUNTLTIpLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IFRoZSBuZXcgYXJyYXkgb2YgY29kZSBwb2ludHMuXG5cdCAqL1xuXHRmdW5jdGlvbiB1Y3MyZGVjb2RlKHN0cmluZykge1xuXHRcdHZhciBvdXRwdXQgPSBbXSxcblx0XHQgICAgY291bnRlciA9IDAsXG5cdFx0ICAgIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgsXG5cdFx0ICAgIHZhbHVlLFxuXHRcdCAgICBleHRyYTtcblx0XHR3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuXHRcdFx0dmFsdWUgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdFx0aWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgY291bnRlciA8IGxlbmd0aCkge1xuXHRcdFx0XHQvLyBoaWdoIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIGEgbmV4dCBjaGFyYWN0ZXJcblx0XHRcdFx0ZXh0cmEgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdFx0XHRpZiAoKGV4dHJhICYgMHhGQzAwKSA9PSAweERDMDApIHsgLy8gbG93IHN1cnJvZ2F0ZVxuXHRcdFx0XHRcdG91dHB1dC5wdXNoKCgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gdW5tYXRjaGVkIHN1cnJvZ2F0ZTsgb25seSBhcHBlbmQgdGhpcyBjb2RlIHVuaXQsIGluIGNhc2UgdGhlIG5leHRcblx0XHRcdFx0XHQvLyBjb2RlIHVuaXQgaXMgdGhlIGhpZ2ggc3Vycm9nYXRlIG9mIGEgc3Vycm9nYXRlIHBhaXJcblx0XHRcdFx0XHRvdXRwdXQucHVzaCh2YWx1ZSk7XG5cdFx0XHRcdFx0Y291bnRlci0tO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvdXRwdXQucHVzaCh2YWx1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBvdXRwdXQ7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIHN0cmluZyBiYXNlZCBvbiBhbiBhcnJheSBvZiBudW1lcmljIGNvZGUgcG9pbnRzLlxuXHQgKiBAc2VlIGBwdW55Y29kZS51Y3MyLmRlY29kZWBcblx0ICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcblx0ICogQG5hbWUgZW5jb2RlXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGNvZGVQb2ludHMgVGhlIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBuZXcgVW5pY29kZSBzdHJpbmcgKFVDUy0yKS5cblx0ICovXG5cdGZ1bmN0aW9uIHVjczJlbmNvZGUoYXJyYXkpIHtcblx0XHRyZXR1cm4gbWFwKGFycmF5LCBmdW5jdGlvbih2YWx1ZSkge1xuXHRcdFx0dmFyIG91dHB1dCA9ICcnO1xuXHRcdFx0aWYgKHZhbHVlID4gMHhGRkZGKSB7XG5cdFx0XHRcdHZhbHVlIC09IDB4MTAwMDA7XG5cdFx0XHRcdG91dHB1dCArPSBzdHJpbmdGcm9tQ2hhckNvZGUodmFsdWUgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApO1xuXHRcdFx0XHR2YWx1ZSA9IDB4REMwMCB8IHZhbHVlICYgMHgzRkY7XG5cdFx0XHR9XG5cdFx0XHRvdXRwdXQgKz0gc3RyaW5nRnJvbUNoYXJDb2RlKHZhbHVlKTtcblx0XHRcdHJldHVybiBvdXRwdXQ7XG5cdFx0fSkuam9pbignJyk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBiYXNpYyBjb2RlIHBvaW50IGludG8gYSBkaWdpdC9pbnRlZ2VyLlxuXHQgKiBAc2VlIGBkaWdpdFRvQmFzaWMoKWBcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtOdW1iZXJ9IGNvZGVQb2ludCBUaGUgYmFzaWMgbnVtZXJpYyBjb2RlIHBvaW50IHZhbHVlLlxuXHQgKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQgKGZvciB1c2UgaW5cblx0ICogcmVwcmVzZW50aW5nIGludGVnZXJzKSBpbiB0aGUgcmFuZ2UgYDBgIHRvIGBiYXNlIC0gMWAsIG9yIGBiYXNlYCBpZlxuXHQgKiB0aGUgY29kZSBwb2ludCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWx1ZS5cblx0ICovXG5cdGZ1bmN0aW9uIGJhc2ljVG9EaWdpdChjb2RlUG9pbnQpIHtcblx0XHRpZiAoY29kZVBvaW50IC0gNDggPCAxMCkge1xuXHRcdFx0cmV0dXJuIGNvZGVQb2ludCAtIDIyO1xuXHRcdH1cblx0XHRpZiAoY29kZVBvaW50IC0gNjUgPCAyNikge1xuXHRcdFx0cmV0dXJuIGNvZGVQb2ludCAtIDY1O1xuXHRcdH1cblx0XHRpZiAoY29kZVBvaW50IC0gOTcgPCAyNikge1xuXHRcdFx0cmV0dXJuIGNvZGVQb2ludCAtIDk3O1xuXHRcdH1cblx0XHRyZXR1cm4gYmFzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG5cdCAqIEBzZWUgYGJhc2ljVG9EaWdpdCgpYFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge051bWJlcn0gZGlnaXQgVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50LlxuXHQgKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgYmFzaWMgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSAod2hlbiB1c2VkIGZvclxuXHQgKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGlzIGBkaWdpdGAsIHdoaWNoIG5lZWRzIHRvIGJlIGluIHRoZSByYW5nZVxuXHQgKiBgMGAgdG8gYGJhc2UgLSAxYC4gSWYgYGZsYWdgIGlzIG5vbi16ZXJvLCB0aGUgdXBwZXJjYXNlIGZvcm0gaXNcblx0ICogdXNlZDsgZWxzZSwgdGhlIGxvd2VyY2FzZSBmb3JtIGlzIHVzZWQuIFRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWRcblx0ICogaWYgYGZsYWdgIGlzIG5vbi16ZXJvIGFuZCBgZGlnaXRgIGhhcyBubyB1cHBlcmNhc2UgZm9ybS5cblx0ICovXG5cdGZ1bmN0aW9uIGRpZ2l0VG9CYXNpYyhkaWdpdCwgZmxhZykge1xuXHRcdC8vICAwLi4yNSBtYXAgdG8gQVNDSUkgYS4ueiBvciBBLi5aXG5cdFx0Ly8gMjYuLjM1IG1hcCB0byBBU0NJSSAwLi45XG5cdFx0cmV0dXJuIGRpZ2l0ICsgMjIgKyA3NSAqIChkaWdpdCA8IDI2KSAtICgoZmxhZyAhPSAwKSA8PCA1KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCaWFzIGFkYXB0YXRpb24gZnVuY3Rpb24gYXMgcGVyIHNlY3Rpb24gMy40IG9mIFJGQyAzNDkyLlxuXHQgKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzQ5MiNzZWN0aW9uLTMuNFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24gYWRhcHQoZGVsdGEsIG51bVBvaW50cywgZmlyc3RUaW1lKSB7XG5cdFx0dmFyIGsgPSAwO1xuXHRcdGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG5cdFx0ZGVsdGEgKz0gZmxvb3IoZGVsdGEgLyBudW1Qb2ludHMpO1xuXHRcdGZvciAoLyogbm8gaW5pdGlhbGl6YXRpb24gKi87IGRlbHRhID4gYmFzZU1pbnVzVE1pbiAqIHRNYXggPj4gMTsgayArPSBiYXNlKSB7XG5cdFx0XHRkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG5cdFx0fVxuXHRcdHJldHVybiBmbG9vcihrICsgKGJhc2VNaW51c1RNaW4gKyAxKSAqIGRlbHRhIC8gKGRlbHRhICsgc2tldykpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scyB0byBhIHN0cmluZyBvZiBVbmljb2RlXG5cdCAqIHN5bWJvbHMuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cblx0ICovXG5cdGZ1bmN0aW9uIGRlY29kZShpbnB1dCkge1xuXHRcdC8vIERvbid0IHVzZSBVQ1MtMlxuXHRcdHZhciBvdXRwdXQgPSBbXSxcblx0XHQgICAgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgsXG5cdFx0ICAgIG91dCxcblx0XHQgICAgaSA9IDAsXG5cdFx0ICAgIG4gPSBpbml0aWFsTixcblx0XHQgICAgYmlhcyA9IGluaXRpYWxCaWFzLFxuXHRcdCAgICBiYXNpYyxcblx0XHQgICAgaixcblx0XHQgICAgaW5kZXgsXG5cdFx0ICAgIG9sZGksXG5cdFx0ICAgIHcsXG5cdFx0ICAgIGssXG5cdFx0ICAgIGRpZ2l0LFxuXHRcdCAgICB0LFxuXHRcdCAgICAvKiogQ2FjaGVkIGNhbGN1bGF0aW9uIHJlc3VsdHMgKi9cblx0XHQgICAgYmFzZU1pbnVzVDtcblxuXHRcdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHM6IGxldCBgYmFzaWNgIGJlIHRoZSBudW1iZXIgb2YgaW5wdXQgY29kZVxuXHRcdC8vIHBvaW50cyBiZWZvcmUgdGhlIGxhc3QgZGVsaW1pdGVyLCBvciBgMGAgaWYgdGhlcmUgaXMgbm9uZSwgdGhlbiBjb3B5XG5cdFx0Ly8gdGhlIGZpcnN0IGJhc2ljIGNvZGUgcG9pbnRzIHRvIHRoZSBvdXRwdXQuXG5cblx0XHRiYXNpYyA9IGlucHV0Lmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG5cdFx0aWYgKGJhc2ljIDwgMCkge1xuXHRcdFx0YmFzaWMgPSAwO1xuXHRcdH1cblxuXHRcdGZvciAoaiA9IDA7IGogPCBiYXNpYzsgKytqKSB7XG5cdFx0XHQvLyBpZiBpdCdzIG5vdCBhIGJhc2ljIGNvZGUgcG9pbnRcblx0XHRcdGlmIChpbnB1dC5jaGFyQ29kZUF0KGopID49IDB4ODApIHtcblx0XHRcdFx0ZXJyb3IoJ25vdC1iYXNpYycpO1xuXHRcdFx0fVxuXHRcdFx0b3V0cHV0LnB1c2goaW5wdXQuY2hhckNvZGVBdChqKSk7XG5cdFx0fVxuXG5cdFx0Ly8gTWFpbiBkZWNvZGluZyBsb29wOiBzdGFydCBqdXN0IGFmdGVyIHRoZSBsYXN0IGRlbGltaXRlciBpZiBhbnkgYmFzaWMgY29kZVxuXHRcdC8vIHBvaW50cyB3ZXJlIGNvcGllZDsgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvdGhlcndpc2UuXG5cblx0XHRmb3IgKGluZGV4ID0gYmFzaWMgPiAwID8gYmFzaWMgKyAxIDogMDsgaW5kZXggPCBpbnB1dExlbmd0aDsgLyogbm8gZmluYWwgZXhwcmVzc2lvbiAqLykge1xuXG5cdFx0XHQvLyBgaW5kZXhgIGlzIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgY29uc3VtZWQuXG5cdFx0XHQvLyBEZWNvZGUgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciBpbnRvIGBkZWx0YWAsXG5cdFx0XHQvLyB3aGljaCBnZXRzIGFkZGVkIHRvIGBpYC4gVGhlIG92ZXJmbG93IGNoZWNraW5nIGlzIGVhc2llclxuXHRcdFx0Ly8gaWYgd2UgaW5jcmVhc2UgYGlgIGFzIHdlIGdvLCB0aGVuIHN1YnRyYWN0IG9mZiBpdHMgc3RhcnRpbmdcblx0XHRcdC8vIHZhbHVlIGF0IHRoZSBlbmQgdG8gb2J0YWluIGBkZWx0YWAuXG5cdFx0XHRmb3IgKG9sZGkgPSBpLCB3ID0gMSwgayA9IGJhc2U7IC8qIG5vIGNvbmRpdGlvbiAqLzsgayArPSBiYXNlKSB7XG5cblx0XHRcdFx0aWYgKGluZGV4ID49IGlucHV0TGVuZ3RoKSB7XG5cdFx0XHRcdFx0ZXJyb3IoJ2ludmFsaWQtaW5wdXQnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRpZ2l0ID0gYmFzaWNUb0RpZ2l0KGlucHV0LmNoYXJDb2RlQXQoaW5kZXgrKykpO1xuXG5cdFx0XHRcdGlmIChkaWdpdCA+PSBiYXNlIHx8IGRpZ2l0ID4gZmxvb3IoKG1heEludCAtIGkpIC8gdykpIHtcblx0XHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGkgKz0gZGlnaXQgKiB3O1xuXHRcdFx0XHR0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcblxuXHRcdFx0XHRpZiAoZGlnaXQgPCB0KSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRcdGlmICh3ID4gZmxvb3IobWF4SW50IC8gYmFzZU1pbnVzVCkpIHtcblx0XHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHcgKj0gYmFzZU1pbnVzVDtcblxuXHRcdFx0fVxuXG5cdFx0XHRvdXQgPSBvdXRwdXQubGVuZ3RoICsgMTtcblx0XHRcdGJpYXMgPSBhZGFwdChpIC0gb2xkaSwgb3V0LCBvbGRpID09IDApO1xuXG5cdFx0XHQvLyBgaWAgd2FzIHN1cHBvc2VkIHRvIHdyYXAgYXJvdW5kIGZyb20gYG91dGAgdG8gYDBgLFxuXHRcdFx0Ly8gaW5jcmVtZW50aW5nIGBuYCBlYWNoIHRpbWUsIHNvIHdlJ2xsIGZpeCB0aGF0IG5vdzpcblx0XHRcdGlmIChmbG9vcihpIC8gb3V0KSA+IG1heEludCAtIG4pIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdG4gKz0gZmxvb3IoaSAvIG91dCk7XG5cdFx0XHRpICU9IG91dDtcblxuXHRcdFx0Ly8gSW5zZXJ0IGBuYCBhdCBwb3NpdGlvbiBgaWAgb2YgdGhlIG91dHB1dFxuXHRcdFx0b3V0cHV0LnNwbGljZShpKyssIDAsIG4pO1xuXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVjczJlbmNvZGUob3V0cHV0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMgKGUuZy4gYSBkb21haW4gbmFtZSBsYWJlbCkgdG8gYVxuXHQgKiBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqL1xuXHRmdW5jdGlvbiBlbmNvZGUoaW5wdXQpIHtcblx0XHR2YXIgbixcblx0XHQgICAgZGVsdGEsXG5cdFx0ICAgIGhhbmRsZWRDUENvdW50LFxuXHRcdCAgICBiYXNpY0xlbmd0aCxcblx0XHQgICAgYmlhcyxcblx0XHQgICAgaixcblx0XHQgICAgbSxcblx0XHQgICAgcSxcblx0XHQgICAgayxcblx0XHQgICAgdCxcblx0XHQgICAgY3VycmVudFZhbHVlLFxuXHRcdCAgICBvdXRwdXQgPSBbXSxcblx0XHQgICAgLyoqIGBpbnB1dExlbmd0aGAgd2lsbCBob2xkIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgaW4gYGlucHV0YC4gKi9cblx0XHQgICAgaW5wdXRMZW5ndGgsXG5cdFx0ICAgIC8qKiBDYWNoZWQgY2FsY3VsYXRpb24gcmVzdWx0cyAqL1xuXHRcdCAgICBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsXG5cdFx0ICAgIGJhc2VNaW51c1QsXG5cdFx0ICAgIHFNaW51c1Q7XG5cblx0XHQvLyBDb252ZXJ0IHRoZSBpbnB1dCBpbiBVQ1MtMiB0byBVbmljb2RlXG5cdFx0aW5wdXQgPSB1Y3MyZGVjb2RlKGlucHV0KTtcblxuXHRcdC8vIENhY2hlIHRoZSBsZW5ndGhcblx0XHRpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblxuXHRcdC8vIEluaXRpYWxpemUgdGhlIHN0YXRlXG5cdFx0biA9IGluaXRpYWxOO1xuXHRcdGRlbHRhID0gMDtcblx0XHRiaWFzID0gaW5pdGlhbEJpYXM7XG5cblx0XHQvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzXG5cdFx0Zm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuXHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IDB4ODApIHtcblx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGN1cnJlbnRWYWx1ZSkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGhhbmRsZWRDUENvdW50ID0gYmFzaWNMZW5ndGggPSBvdXRwdXQubGVuZ3RoO1xuXG5cdFx0Ly8gYGhhbmRsZWRDUENvdW50YCBpcyB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIGhhbmRsZWQ7XG5cdFx0Ly8gYGJhc2ljTGVuZ3RoYCBpcyB0aGUgbnVtYmVyIG9mIGJhc2ljIGNvZGUgcG9pbnRzLlxuXG5cdFx0Ly8gRmluaXNoIHRoZSBiYXNpYyBzdHJpbmcgLSBpZiBpdCBpcyBub3QgZW1wdHkgLSB3aXRoIGEgZGVsaW1pdGVyXG5cdFx0aWYgKGJhc2ljTGVuZ3RoKSB7XG5cdFx0XHRvdXRwdXQucHVzaChkZWxpbWl0ZXIpO1xuXHRcdH1cblxuXHRcdC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcblx0XHR3aGlsZSAoaGFuZGxlZENQQ291bnQgPCBpbnB1dExlbmd0aCkge1xuXG5cdFx0XHQvLyBBbGwgbm9uLWJhc2ljIGNvZGUgcG9pbnRzIDwgbiBoYXZlIGJlZW4gaGFuZGxlZCBhbHJlYWR5LiBGaW5kIHRoZSBuZXh0XG5cdFx0XHQvLyBsYXJnZXIgb25lOlxuXHRcdFx0Zm9yIChtID0gbWF4SW50LCBqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgPj0gbiAmJiBjdXJyZW50VmFsdWUgPCBtKSB7XG5cdFx0XHRcdFx0bSA9IGN1cnJlbnRWYWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBJbmNyZWFzZSBgZGVsdGFgIGVub3VnaCB0byBhZHZhbmNlIHRoZSBkZWNvZGVyJ3MgPG4saT4gc3RhdGUgdG8gPG0sMD4sXG5cdFx0XHQvLyBidXQgZ3VhcmQgYWdhaW5zdCBvdmVyZmxvd1xuXHRcdFx0aGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuXHRcdFx0aWYgKG0gLSBuID4gZmxvb3IoKG1heEludCAtIGRlbHRhKSAvIGhhbmRsZWRDUENvdW50UGx1c09uZSkpIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGRlbHRhICs9IChtIC0gbikgKiBoYW5kbGVkQ1BDb3VudFBsdXNPbmU7XG5cdFx0XHRuID0gbTtcblxuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IG4gJiYgKytkZWx0YSA+IG1heEludCkge1xuXHRcdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA9PSBuKSB7XG5cdFx0XHRcdFx0Ly8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXJcblx0XHRcdFx0XHRmb3IgKHEgPSBkZWx0YSwgayA9IGJhc2U7IC8qIG5vIGNvbmRpdGlvbiAqLzsgayArPSBiYXNlKSB7XG5cdFx0XHRcdFx0XHR0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcblx0XHRcdFx0XHRcdGlmIChxIDwgdCkge1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHFNaW51c1QgPSBxIC0gdDtcblx0XHRcdFx0XHRcdGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKFxuXHRcdFx0XHRcdFx0XHRzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCwgMCkpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHEsIDApKSk7XG5cdFx0XHRcdFx0YmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcblx0XHRcdFx0XHRkZWx0YSA9IDA7XG5cdFx0XHRcdFx0KytoYW5kbGVkQ1BDb3VudDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQrK2RlbHRhO1xuXHRcdFx0KytuO1xuXG5cdFx0fVxuXHRcdHJldHVybiBvdXRwdXQuam9pbignJyk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzc1xuXHQgKiB0byBVbmljb2RlLiBPbmx5IHRoZSBQdW55Y29kZWQgcGFydHMgb2YgdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkLCBpLmUuXG5cdCAqIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IG9uIGEgc3RyaW5nIHRoYXQgaGFzIGFscmVhZHkgYmVlblxuXHQgKiBjb252ZXJ0ZWQgdG8gVW5pY29kZS5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGVkIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG9cblx0ICogY29udmVydCB0byBVbmljb2RlLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUHVueWNvZGVcblx0ICogc3RyaW5nLlxuXHQgKi9cblx0ZnVuY3Rpb24gdG9Vbmljb2RlKGlucHV0KSB7XG5cdFx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24oc3RyaW5nKSB7XG5cdFx0XHRyZXR1cm4gcmVnZXhQdW55Y29kZS50ZXN0KHN0cmluZylcblx0XHRcdFx0PyBkZWNvZGUoc3RyaW5nLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpXG5cdFx0XHRcdDogc3RyaW5nO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgVW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzcyB0b1xuXHQgKiBQdW55Y29kZS4gT25seSB0aGUgbm9uLUFTQ0lJIHBhcnRzIG9mIHRoZSBkb21haW4gbmFtZSB3aWxsIGJlIGNvbnZlcnRlZCxcblx0ICogaS5lLiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCB3aXRoIGEgZG9tYWluIHRoYXQncyBhbHJlYWR5IGluXG5cdCAqIEFTQ0lJLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvIGNvbnZlcnQsIGFzIGFcblx0ICogVW5pY29kZSBzdHJpbmcuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBQdW55Y29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZG9tYWluIG5hbWUgb3Jcblx0ICogZW1haWwgYWRkcmVzcy5cblx0ICovXG5cdGZ1bmN0aW9uIHRvQVNDSUkoaW5wdXQpIHtcblx0XHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRcdHJldHVybiByZWdleE5vbkFTQ0lJLnRlc3Qoc3RyaW5nKVxuXHRcdFx0XHQ/ICd4bi0tJyArIGVuY29kZShzdHJpbmcpXG5cdFx0XHRcdDogc3RyaW5nO1xuXHRcdH0pO1xuXHR9XG5cblx0LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblx0LyoqIERlZmluZSB0aGUgcHVibGljIEFQSSAqL1xuXHRwdW55Y29kZSA9IHtcblx0XHQvKipcblx0XHQgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgUHVueWNvZGUuanMgdmVyc2lvbiBudW1iZXIuXG5cdFx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdFx0ICogQHR5cGUgU3RyaW5nXG5cdFx0ICovXG5cdFx0J3ZlcnNpb24nOiAnMS40LjEnLFxuXHRcdC8qKlxuXHRcdCAqIEFuIG9iamVjdCBvZiBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBKYXZhU2NyaXB0J3MgaW50ZXJuYWwgY2hhcmFjdGVyXG5cdFx0ICogcmVwcmVzZW50YXRpb24gKFVDUy0yKSB0byBVbmljb2RlIGNvZGUgcG9pbnRzLCBhbmQgYmFjay5cblx0XHQgKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cblx0XHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0XHQgKiBAdHlwZSBPYmplY3Rcblx0XHQgKi9cblx0XHQndWNzMic6IHtcblx0XHRcdCdkZWNvZGUnOiB1Y3MyZGVjb2RlLFxuXHRcdFx0J2VuY29kZSc6IHVjczJlbmNvZGVcblx0XHR9LFxuXHRcdCdkZWNvZGUnOiBkZWNvZGUsXG5cdFx0J2VuY29kZSc6IGVuY29kZSxcblx0XHQndG9BU0NJSSc6IHRvQVNDSUksXG5cdFx0J3RvVW5pY29kZSc6IHRvVW5pY29kZVxuXHR9O1xuXG5cdC8qKiBFeHBvc2UgYHB1bnljb2RlYCAqL1xuXHQvLyBTb21lIEFNRCBidWlsZCBvcHRpbWl6ZXJzLCBsaWtlIHIuanMsIGNoZWNrIGZvciBzcGVjaWZpYyBjb25kaXRpb24gcGF0dGVybnNcblx0Ly8gbGlrZSB0aGUgZm9sbG93aW5nOlxuXHRpZiAoXG5cdFx0dHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmXG5cdFx0dHlwZW9mIGRlZmluZS5hbWQgPT0gJ29iamVjdCcgJiZcblx0XHRkZWZpbmUuYW1kXG5cdCkge1xuXHRcdGRlZmluZSgncHVueWNvZGUnLCBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBwdW55Y29kZTtcblx0XHR9KTtcblx0fSBlbHNlIGlmIChmcmVlRXhwb3J0cyAmJiBmcmVlTW9kdWxlKSB7XG5cdFx0aWYgKG1vZHVsZS5leHBvcnRzID09IGZyZWVFeHBvcnRzKSB7XG5cdFx0XHQvLyBpbiBOb2RlLmpzLCBpby5qcywgb3IgUmluZ29KUyB2MC44LjArXG5cdFx0XHRmcmVlTW9kdWxlLmV4cG9ydHMgPSBwdW55Y29kZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gaW4gTmFyd2hhbCBvciBSaW5nb0pTIHYwLjcuMC1cblx0XHRcdGZvciAoa2V5IGluIHB1bnljb2RlKSB7XG5cdFx0XHRcdHB1bnljb2RlLmhhc093blByb3BlcnR5KGtleSkgJiYgKGZyZWVFeHBvcnRzW2tleV0gPSBwdW55Y29kZVtrZXldKTtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gaW4gUmhpbm8gb3IgYSB3ZWIgYnJvd3NlclxuXHRcdHJvb3QucHVueWNvZGUgPSBwdW55Y29kZTtcblx0fVxuXG59KHRoaXMpKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vdHlwZScpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBUeXBlRXJyb3I7XG4iLCJ2YXIgaGFzTWFwID0gdHlwZW9mIE1hcCA9PT0gJ2Z1bmN0aW9uJyAmJiBNYXAucHJvdG90eXBlO1xudmFyIG1hcFNpemVEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiBoYXNNYXAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE1hcC5wcm90b3R5cGUsICdzaXplJykgOiBudWxsO1xudmFyIG1hcFNpemUgPSBoYXNNYXAgJiYgbWFwU2l6ZURlc2NyaXB0b3IgJiYgdHlwZW9mIG1hcFNpemVEZXNjcmlwdG9yLmdldCA9PT0gJ2Z1bmN0aW9uJyA/IG1hcFNpemVEZXNjcmlwdG9yLmdldCA6IG51bGw7XG52YXIgbWFwRm9yRWFjaCA9IGhhc01hcCAmJiBNYXAucHJvdG90eXBlLmZvckVhY2g7XG52YXIgaGFzU2V0ID0gdHlwZW9mIFNldCA9PT0gJ2Z1bmN0aW9uJyAmJiBTZXQucHJvdG90eXBlO1xudmFyIHNldFNpemVEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiBoYXNTZXQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNldC5wcm90b3R5cGUsICdzaXplJykgOiBudWxsO1xudmFyIHNldFNpemUgPSBoYXNTZXQgJiYgc2V0U2l6ZURlc2NyaXB0b3IgJiYgdHlwZW9mIHNldFNpemVEZXNjcmlwdG9yLmdldCA9PT0gJ2Z1bmN0aW9uJyA/IHNldFNpemVEZXNjcmlwdG9yLmdldCA6IG51bGw7XG52YXIgc2V0Rm9yRWFjaCA9IGhhc1NldCAmJiBTZXQucHJvdG90eXBlLmZvckVhY2g7XG52YXIgaGFzV2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nICYmIFdlYWtNYXAucHJvdG90eXBlO1xudmFyIHdlYWtNYXBIYXMgPSBoYXNXZWFrTWFwID8gV2Vha01hcC5wcm90b3R5cGUuaGFzIDogbnVsbDtcbnZhciBoYXNXZWFrU2V0ID0gdHlwZW9mIFdlYWtTZXQgPT09ICdmdW5jdGlvbicgJiYgV2Vha1NldC5wcm90b3R5cGU7XG52YXIgd2Vha1NldEhhcyA9IGhhc1dlYWtTZXQgPyBXZWFrU2V0LnByb3RvdHlwZS5oYXMgOiBudWxsO1xudmFyIGhhc1dlYWtSZWYgPSB0eXBlb2YgV2Vha1JlZiA9PT0gJ2Z1bmN0aW9uJyAmJiBXZWFrUmVmLnByb3RvdHlwZTtcbnZhciB3ZWFrUmVmRGVyZWYgPSBoYXNXZWFrUmVmID8gV2Vha1JlZi5wcm90b3R5cGUuZGVyZWYgOiBudWxsO1xudmFyIGJvb2xlYW5WYWx1ZU9mID0gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZjtcbnZhciBvYmplY3RUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcbnZhciAkbWF0Y2ggPSBTdHJpbmcucHJvdG90eXBlLm1hdGNoO1xudmFyICRzbGljZSA9IFN0cmluZy5wcm90b3R5cGUuc2xpY2U7XG52YXIgJHJlcGxhY2UgPSBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2U7XG52YXIgJHRvVXBwZXJDYXNlID0gU3RyaW5nLnByb3RvdHlwZS50b1VwcGVyQ2FzZTtcbnZhciAkdG9Mb3dlckNhc2UgPSBTdHJpbmcucHJvdG90eXBlLnRvTG93ZXJDYXNlO1xudmFyICR0ZXN0ID0gUmVnRXhwLnByb3RvdHlwZS50ZXN0O1xudmFyICRjb25jYXQgPSBBcnJheS5wcm90b3R5cGUuY29uY2F0O1xudmFyICRqb2luID0gQXJyYXkucHJvdG90eXBlLmpvaW47XG52YXIgJGFyclNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xudmFyICRmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgYmlnSW50VmFsdWVPZiA9IHR5cGVvZiBCaWdJbnQgPT09ICdmdW5jdGlvbicgPyBCaWdJbnQucHJvdG90eXBlLnZhbHVlT2YgOiBudWxsO1xudmFyIGdPUFMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIHN5bVRvU3RyaW5nID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSAnc3ltYm9sJyA/IFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcgOiBudWxsO1xudmFyIGhhc1NoYW1tZWRTeW1ib2xzID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSAnb2JqZWN0Jztcbi8vIGllLCBgaGFzLXRvc3RyaW5ndGFnL3NoYW1zXG52YXIgdG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC50b1N0cmluZ1RhZyAmJiAodHlwZW9mIFN5bWJvbC50b1N0cmluZ1RhZyA9PT0gaGFzU2hhbW1lZFN5bWJvbHMgPyAnb2JqZWN0JyA6ICdzeW1ib2wnKVxuICAgID8gU3ltYm9sLnRvU3RyaW5nVGFnXG4gICAgOiBudWxsO1xudmFyIGlzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbnZhciBnUE8gPSAodHlwZW9mIFJlZmxlY3QgPT09ICdmdW5jdGlvbicgPyBSZWZsZWN0LmdldFByb3RvdHlwZU9mIDogT2JqZWN0LmdldFByb3RvdHlwZU9mKSB8fCAoXG4gICAgW10uX19wcm90b19fID09PSBBcnJheS5wcm90b3R5cGUgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b1xuICAgICAgICA/IGZ1bmN0aW9uIChPKSB7XG4gICAgICAgICAgICByZXR1cm4gTy5fX3Byb3RvX187IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcHJvdG9cbiAgICAgICAgfVxuICAgICAgICA6IG51bGxcbik7XG5cbmZ1bmN0aW9uIGFkZE51bWVyaWNTZXBhcmF0b3IobnVtLCBzdHIpIHtcbiAgICBpZiAoXG4gICAgICAgIG51bSA9PT0gSW5maW5pdHlcbiAgICAgICAgfHwgbnVtID09PSAtSW5maW5pdHlcbiAgICAgICAgfHwgbnVtICE9PSBudW1cbiAgICAgICAgfHwgKG51bSAmJiBudW0gPiAtMTAwMCAmJiBudW0gPCAxMDAwKVxuICAgICAgICB8fCAkdGVzdC5jYWxsKC9lLywgc3RyKVxuICAgICkge1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICB2YXIgc2VwUmVnZXggPSAvWzAtOV0oPz0oPzpbMC05XXszfSkrKD8hWzAtOV0pKS9nO1xuICAgIGlmICh0eXBlb2YgbnVtID09PSAnbnVtYmVyJykge1xuICAgICAgICB2YXIgaW50ID0gbnVtIDwgMCA/IC0kZmxvb3IoLW51bSkgOiAkZmxvb3IobnVtKTsgLy8gdHJ1bmMobnVtKVxuICAgICAgICBpZiAoaW50ICE9PSBudW0pIHtcbiAgICAgICAgICAgIHZhciBpbnRTdHIgPSBTdHJpbmcoaW50KTtcbiAgICAgICAgICAgIHZhciBkZWMgPSAkc2xpY2UuY2FsbChzdHIsIGludFN0ci5sZW5ndGggKyAxKTtcbiAgICAgICAgICAgIHJldHVybiAkcmVwbGFjZS5jYWxsKGludFN0ciwgc2VwUmVnZXgsICckJl8nKSArICcuJyArICRyZXBsYWNlLmNhbGwoJHJlcGxhY2UuY2FsbChkZWMsIC8oWzAtOV17M30pL2csICckJl8nKSwgL18kLywgJycpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAkcmVwbGFjZS5jYWxsKHN0ciwgc2VwUmVnZXgsICckJl8nKTtcbn1cblxudmFyIHV0aWxJbnNwZWN0ID0gcmVxdWlyZSgnLi91dGlsLmluc3BlY3QnKTtcbnZhciBpbnNwZWN0Q3VzdG9tID0gdXRpbEluc3BlY3QuY3VzdG9tO1xudmFyIGluc3BlY3RTeW1ib2wgPSBpc1N5bWJvbChpbnNwZWN0Q3VzdG9tKSA/IGluc3BlY3RDdXN0b20gOiBudWxsO1xuXG52YXIgcXVvdGVzID0ge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAnZG91YmxlJzogJ1wiJyxcbiAgICBzaW5nbGU6IFwiJ1wiXG59O1xudmFyIHF1b3RlUkVzID0ge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAnZG91YmxlJzogLyhbXCJcXFxcXSkvZyxcbiAgICBzaW5nbGU6IC8oWydcXFxcXSkvZ1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbnNwZWN0XyhvYmosIG9wdGlvbnMsIGRlcHRoLCBzZWVuKSB7XG4gICAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgaWYgKGhhcyhvcHRzLCAncXVvdGVTdHlsZScpICYmICFoYXMocXVvdGVzLCBvcHRzLnF1b3RlU3R5bGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBcInF1b3RlU3R5bGVcIiBtdXN0IGJlIFwic2luZ2xlXCIgb3IgXCJkb3VibGVcIicpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAgIGhhcyhvcHRzLCAnbWF4U3RyaW5nTGVuZ3RoJykgJiYgKHR5cGVvZiBvcHRzLm1heFN0cmluZ0xlbmd0aCA9PT0gJ251bWJlcidcbiAgICAgICAgICAgID8gb3B0cy5tYXhTdHJpbmdMZW5ndGggPCAwICYmIG9wdHMubWF4U3RyaW5nTGVuZ3RoICE9PSBJbmZpbml0eVxuICAgICAgICAgICAgOiBvcHRzLm1heFN0cmluZ0xlbmd0aCAhPT0gbnVsbFxuICAgICAgICApXG4gICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBcIm1heFN0cmluZ0xlbmd0aFwiLCBpZiBwcm92aWRlZCwgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIEluZmluaXR5LCBvciBgbnVsbGAnKTtcbiAgICB9XG4gICAgdmFyIGN1c3RvbUluc3BlY3QgPSBoYXMob3B0cywgJ2N1c3RvbUluc3BlY3QnKSA/IG9wdHMuY3VzdG9tSW5zcGVjdCA6IHRydWU7XG4gICAgaWYgKHR5cGVvZiBjdXN0b21JbnNwZWN0ICE9PSAnYm9vbGVhbicgJiYgY3VzdG9tSW5zcGVjdCAhPT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIFwiY3VzdG9tSW5zcGVjdFwiLCBpZiBwcm92aWRlZCwgbXVzdCBiZSBgdHJ1ZWAsIGBmYWxzZWAsIG9yIGBcXCdzeW1ib2xcXCdgJyk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgICBoYXMob3B0cywgJ2luZGVudCcpXG4gICAgICAgICYmIG9wdHMuaW5kZW50ICE9PSBudWxsXG4gICAgICAgICYmIG9wdHMuaW5kZW50ICE9PSAnXFx0J1xuICAgICAgICAmJiAhKHBhcnNlSW50KG9wdHMuaW5kZW50LCAxMCkgPT09IG9wdHMuaW5kZW50ICYmIG9wdHMuaW5kZW50ID4gMClcbiAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIFwiaW5kZW50XCIgbXVzdCBiZSBcIlxcXFx0XCIsIGFuIGludGVnZXIgPiAwLCBvciBgbnVsbGAnKTtcbiAgICB9XG4gICAgaWYgKGhhcyhvcHRzLCAnbnVtZXJpY1NlcGFyYXRvcicpICYmIHR5cGVvZiBvcHRzLm51bWVyaWNTZXBhcmF0b3IgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gXCJudW1lcmljU2VwYXJhdG9yXCIsIGlmIHByb3ZpZGVkLCBtdXN0IGJlIGB0cnVlYCBvciBgZmFsc2VgJyk7XG4gICAgfVxuICAgIHZhciBudW1lcmljU2VwYXJhdG9yID0gb3B0cy5udW1lcmljU2VwYXJhdG9yO1xuXG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gJ251bGwnO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHJldHVybiBvYmogPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gaW5zcGVjdFN0cmluZyhvYmosIG9wdHMpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKG9iaiA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIEluZmluaXR5IC8gb2JqID4gMCA/ICcwJyA6ICctMCc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0ciA9IFN0cmluZyhvYmopO1xuICAgICAgICByZXR1cm4gbnVtZXJpY1NlcGFyYXRvciA/IGFkZE51bWVyaWNTZXBhcmF0b3Iob2JqLCBzdHIpIDogc3RyO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgdmFyIGJpZ0ludFN0ciA9IFN0cmluZyhvYmopICsgJ24nO1xuICAgICAgICByZXR1cm4gbnVtZXJpY1NlcGFyYXRvciA/IGFkZE51bWVyaWNTZXBhcmF0b3Iob2JqLCBiaWdJbnRTdHIpIDogYmlnSW50U3RyO1xuICAgIH1cblxuICAgIHZhciBtYXhEZXB0aCA9IHR5cGVvZiBvcHRzLmRlcHRoID09PSAndW5kZWZpbmVkJyA/IDUgOiBvcHRzLmRlcHRoO1xuICAgIGlmICh0eXBlb2YgZGVwdGggPT09ICd1bmRlZmluZWQnKSB7IGRlcHRoID0gMDsgfVxuICAgIGlmIChkZXB0aCA+PSBtYXhEZXB0aCAmJiBtYXhEZXB0aCA+IDAgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGlzQXJyYXkob2JqKSA/ICdbQXJyYXldJyA6ICdbT2JqZWN0XSc7XG4gICAgfVxuXG4gICAgdmFyIGluZGVudCA9IGdldEluZGVudChvcHRzLCBkZXB0aCk7XG5cbiAgICBpZiAodHlwZW9mIHNlZW4gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHNlZW4gPSBbXTtcbiAgICB9IGVsc2UgaWYgKGluZGV4T2Yoc2Vlbiwgb2JqKSA+PSAwKSB7XG4gICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zcGVjdCh2YWx1ZSwgZnJvbSwgbm9JbmRlbnQpIHtcbiAgICAgICAgaWYgKGZyb20pIHtcbiAgICAgICAgICAgIHNlZW4gPSAkYXJyU2xpY2UuY2FsbChzZWVuKTtcbiAgICAgICAgICAgIHNlZW4ucHVzaChmcm9tKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9JbmRlbnQpIHtcbiAgICAgICAgICAgIHZhciBuZXdPcHRzID0ge1xuICAgICAgICAgICAgICAgIGRlcHRoOiBvcHRzLmRlcHRoXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKGhhcyhvcHRzLCAncXVvdGVTdHlsZScpKSB7XG4gICAgICAgICAgICAgICAgbmV3T3B0cy5xdW90ZVN0eWxlID0gb3B0cy5xdW90ZVN0eWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RfKHZhbHVlLCBuZXdPcHRzLCBkZXB0aCArIDEsIHNlZW4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnNwZWN0Xyh2YWx1ZSwgb3B0cywgZGVwdGggKyAxLCBzZWVuKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJyAmJiAhaXNSZWdFeHAob2JqKSkgeyAvLyBpbiBvbGRlciBlbmdpbmVzLCByZWdleGVzIGFyZSBjYWxsYWJsZVxuICAgICAgICB2YXIgbmFtZSA9IG5hbWVPZihvYmopO1xuICAgICAgICB2YXIga2V5cyA9IGFyck9iaktleXMob2JqLCBpbnNwZWN0KTtcbiAgICAgICAgcmV0dXJuICdbRnVuY3Rpb24nICsgKG5hbWUgPyAnOiAnICsgbmFtZSA6ICcgKGFub255bW91cyknKSArICddJyArIChrZXlzLmxlbmd0aCA+IDAgPyAnIHsgJyArICRqb2luLmNhbGwoa2V5cywgJywgJykgKyAnIH0nIDogJycpO1xuICAgIH1cbiAgICBpZiAoaXNTeW1ib2wob2JqKSkge1xuICAgICAgICB2YXIgc3ltU3RyaW5nID0gaGFzU2hhbW1lZFN5bWJvbHMgPyAkcmVwbGFjZS5jYWxsKFN0cmluZyhvYmopLCAvXihTeW1ib2xcXCguKlxcKSlfW14pXSokLywgJyQxJykgOiBzeW1Ub1N0cmluZy5jYWxsKG9iaik7XG4gICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiAhaGFzU2hhbW1lZFN5bWJvbHMgPyBtYXJrQm94ZWQoc3ltU3RyaW5nKSA6IHN5bVN0cmluZztcbiAgICB9XG4gICAgaWYgKGlzRWxlbWVudChvYmopKSB7XG4gICAgICAgIHZhciBzID0gJzwnICsgJHRvTG93ZXJDYXNlLmNhbGwoU3RyaW5nKG9iai5ub2RlTmFtZSkpO1xuICAgICAgICB2YXIgYXR0cnMgPSBvYmouYXR0cmlidXRlcyB8fCBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcyArPSAnICcgKyBhdHRyc1tpXS5uYW1lICsgJz0nICsgd3JhcFF1b3RlcyhxdW90ZShhdHRyc1tpXS52YWx1ZSksICdkb3VibGUnLCBvcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBzICs9ICc+JztcbiAgICAgICAgaWYgKG9iai5jaGlsZE5vZGVzICYmIG9iai5jaGlsZE5vZGVzLmxlbmd0aCkgeyBzICs9ICcuLi4nOyB9XG4gICAgICAgIHMgKz0gJzwvJyArICR0b0xvd2VyQ2FzZS5jYWxsKFN0cmluZyhvYmoubm9kZU5hbWUpKSArICc+JztcbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICAgIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAgICAgaWYgKG9iai5sZW5ndGggPT09IDApIHsgcmV0dXJuICdbXSc7IH1cbiAgICAgICAgdmFyIHhzID0gYXJyT2JqS2V5cyhvYmosIGluc3BlY3QpO1xuICAgICAgICBpZiAoaW5kZW50ICYmICFzaW5nbGVMaW5lVmFsdWVzKHhzKSkge1xuICAgICAgICAgICAgcmV0dXJuICdbJyArIGluZGVudGVkSm9pbih4cywgaW5kZW50KSArICddJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1sgJyArICRqb2luLmNhbGwoeHMsICcsICcpICsgJyBdJztcbiAgICB9XG4gICAgaWYgKGlzRXJyb3Iob2JqKSkge1xuICAgICAgICB2YXIgcGFydHMgPSBhcnJPYmpLZXlzKG9iaiwgaW5zcGVjdCk7XG4gICAgICAgIGlmICghKCdjYXVzZScgaW4gRXJyb3IucHJvdG90eXBlKSAmJiAnY2F1c2UnIGluIG9iaiAmJiAhaXNFbnVtZXJhYmxlLmNhbGwob2JqLCAnY2F1c2UnKSkge1xuICAgICAgICAgICAgcmV0dXJuICd7IFsnICsgU3RyaW5nKG9iaikgKyAnXSAnICsgJGpvaW4uY2FsbCgkY29uY2F0LmNhbGwoJ1tjYXVzZV06ICcgKyBpbnNwZWN0KG9iai5jYXVzZSksIHBhcnRzKSwgJywgJykgKyAnIH0nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHsgcmV0dXJuICdbJyArIFN0cmluZyhvYmopICsgJ10nOyB9XG4gICAgICAgIHJldHVybiAneyBbJyArIFN0cmluZyhvYmopICsgJ10gJyArICRqb2luLmNhbGwocGFydHMsICcsICcpICsgJyB9JztcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIGN1c3RvbUluc3BlY3QpIHtcbiAgICAgICAgaWYgKGluc3BlY3RTeW1ib2wgJiYgdHlwZW9mIG9ialtpbnNwZWN0U3ltYm9sXSA9PT0gJ2Z1bmN0aW9uJyAmJiB1dGlsSW5zcGVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIHV0aWxJbnNwZWN0KG9iaiwgeyBkZXB0aDogbWF4RGVwdGggLSBkZXB0aCB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXN0b21JbnNwZWN0ICE9PSAnc3ltYm9sJyAmJiB0eXBlb2Ygb2JqLmluc3BlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmouaW5zcGVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChpc01hcChvYmopKSB7XG4gICAgICAgIHZhciBtYXBQYXJ0cyA9IFtdO1xuICAgICAgICBpZiAobWFwRm9yRWFjaCkge1xuICAgICAgICAgICAgbWFwRm9yRWFjaC5jYWxsKG9iaiwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICAgICAgICBtYXBQYXJ0cy5wdXNoKGluc3BlY3Qoa2V5LCBvYmosIHRydWUpICsgJyA9PiAnICsgaW5zcGVjdCh2YWx1ZSwgb2JqKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbk9mKCdNYXAnLCBtYXBTaXplLmNhbGwob2JqKSwgbWFwUGFydHMsIGluZGVudCk7XG4gICAgfVxuICAgIGlmIChpc1NldChvYmopKSB7XG4gICAgICAgIHZhciBzZXRQYXJ0cyA9IFtdO1xuICAgICAgICBpZiAoc2V0Rm9yRWFjaCkge1xuICAgICAgICAgICAgc2V0Rm9yRWFjaC5jYWxsKG9iaiwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2V0UGFydHMucHVzaChpbnNwZWN0KHZhbHVlLCBvYmopKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uT2YoJ1NldCcsIHNldFNpemUuY2FsbChvYmopLCBzZXRQYXJ0cywgaW5kZW50KTtcbiAgICB9XG4gICAgaWYgKGlzV2Vha01hcChvYmopKSB7XG4gICAgICAgIHJldHVybiB3ZWFrQ29sbGVjdGlvbk9mKCdXZWFrTWFwJyk7XG4gICAgfVxuICAgIGlmIChpc1dlYWtTZXQob2JqKSkge1xuICAgICAgICByZXR1cm4gd2Vha0NvbGxlY3Rpb25PZignV2Vha1NldCcpO1xuICAgIH1cbiAgICBpZiAoaXNXZWFrUmVmKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIHdlYWtDb2xsZWN0aW9uT2YoJ1dlYWtSZWYnKTtcbiAgICB9XG4gICAgaWYgKGlzTnVtYmVyKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIG1hcmtCb3hlZChpbnNwZWN0KE51bWJlcihvYmopKSk7XG4gICAgfVxuICAgIGlmIChpc0JpZ0ludChvYmopKSB7XG4gICAgICAgIHJldHVybiBtYXJrQm94ZWQoaW5zcGVjdChiaWdJbnRWYWx1ZU9mLmNhbGwob2JqKSkpO1xuICAgIH1cbiAgICBpZiAoaXNCb29sZWFuKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIG1hcmtCb3hlZChib29sZWFuVmFsdWVPZi5jYWxsKG9iaikpO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcob2JqKSkge1xuICAgICAgICByZXR1cm4gbWFya0JveGVkKGluc3BlY3QoU3RyaW5nKG9iaikpKTtcbiAgICB9XG4gICAgLy8gbm90ZTogaW4gSUUgOCwgc29tZXRpbWVzIGBnbG9iYWwgIT09IHdpbmRvd2AgYnV0IGJvdGggYXJlIHRoZSBwcm90b3R5cGVzIG9mIGVhY2ggb3RoZXJcbiAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgb2JqID09PSB3aW5kb3cpIHtcbiAgICAgICAgcmV0dXJuICd7IFtvYmplY3QgV2luZG93XSB9JztcbiAgICB9XG4gICAgaWYgKFxuICAgICAgICAodHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnICYmIG9iaiA9PT0gZ2xvYmFsVGhpcylcbiAgICAgICAgfHwgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIG9iaiA9PT0gZ2xvYmFsKVxuICAgICkge1xuICAgICAgICByZXR1cm4gJ3sgW29iamVjdCBnbG9iYWxUaGlzXSB9JztcbiAgICB9XG4gICAgaWYgKCFpc0RhdGUob2JqKSAmJiAhaXNSZWdFeHAob2JqKSkge1xuICAgICAgICB2YXIgeXMgPSBhcnJPYmpLZXlzKG9iaiwgaW5zcGVjdCk7XG4gICAgICAgIHZhciBpc1BsYWluT2JqZWN0ID0gZ1BPID8gZ1BPKG9iaikgPT09IE9iamVjdC5wcm90b3R5cGUgOiBvYmogaW5zdGFuY2VvZiBPYmplY3QgfHwgb2JqLmNvbnN0cnVjdG9yID09PSBPYmplY3Q7XG4gICAgICAgIHZhciBwcm90b1RhZyA9IG9iaiBpbnN0YW5jZW9mIE9iamVjdCA/ICcnIDogJ251bGwgcHJvdG90eXBlJztcbiAgICAgICAgdmFyIHN0cmluZ1RhZyA9ICFpc1BsYWluT2JqZWN0ICYmIHRvU3RyaW5nVGFnICYmIE9iamVjdChvYmopID09PSBvYmogJiYgdG9TdHJpbmdUYWcgaW4gb2JqID8gJHNsaWNlLmNhbGwodG9TdHIob2JqKSwgOCwgLTEpIDogcHJvdG9UYWcgPyAnT2JqZWN0JyA6ICcnO1xuICAgICAgICB2YXIgY29uc3RydWN0b3JUYWcgPSBpc1BsYWluT2JqZWN0IHx8IHR5cGVvZiBvYmouY29uc3RydWN0b3IgIT09ICdmdW5jdGlvbicgPyAnJyA6IG9iai5jb25zdHJ1Y3Rvci5uYW1lID8gb2JqLmNvbnN0cnVjdG9yLm5hbWUgKyAnICcgOiAnJztcbiAgICAgICAgdmFyIHRhZyA9IGNvbnN0cnVjdG9yVGFnICsgKHN0cmluZ1RhZyB8fCBwcm90b1RhZyA/ICdbJyArICRqb2luLmNhbGwoJGNvbmNhdC5jYWxsKFtdLCBzdHJpbmdUYWcgfHwgW10sIHByb3RvVGFnIHx8IFtdKSwgJzogJykgKyAnXSAnIDogJycpO1xuICAgICAgICBpZiAoeXMubGVuZ3RoID09PSAwKSB7IHJldHVybiB0YWcgKyAne30nOyB9XG4gICAgICAgIGlmIChpbmRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0YWcgKyAneycgKyBpbmRlbnRlZEpvaW4oeXMsIGluZGVudCkgKyAnfSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhZyArICd7ICcgKyAkam9pbi5jYWxsKHlzLCAnLCAnKSArICcgfSc7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcob2JqKTtcbn07XG5cbmZ1bmN0aW9uIHdyYXBRdW90ZXMocywgZGVmYXVsdFN0eWxlLCBvcHRzKSB7XG4gICAgdmFyIHN0eWxlID0gb3B0cy5xdW90ZVN0eWxlIHx8IGRlZmF1bHRTdHlsZTtcbiAgICB2YXIgcXVvdGVDaGFyID0gcXVvdGVzW3N0eWxlXTtcbiAgICByZXR1cm4gcXVvdGVDaGFyICsgcyArIHF1b3RlQ2hhcjtcbn1cblxuZnVuY3Rpb24gcXVvdGUocykge1xuICAgIHJldHVybiAkcmVwbGFjZS5jYWxsKFN0cmluZyhzKSwgL1wiL2csICcmcXVvdDsnKTtcbn1cblxuZnVuY3Rpb24gY2FuVHJ1c3RUb1N0cmluZyhvYmopIHtcbiAgICByZXR1cm4gIXRvU3RyaW5nVGFnIHx8ICEodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgKHRvU3RyaW5nVGFnIGluIG9iaiB8fCB0eXBlb2Ygb2JqW3RvU3RyaW5nVGFnXSAhPT0gJ3VuZGVmaW5lZCcpKTtcbn1cbmZ1bmN0aW9uIGlzQXJyYXkob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBBcnJheV0nICYmIGNhblRydXN0VG9TdHJpbmcob2JqKTsgfVxuZnVuY3Rpb24gaXNEYXRlKG9iaikgeyByZXR1cm4gdG9TdHIob2JqKSA9PT0gJ1tvYmplY3QgRGF0ZV0nICYmIGNhblRydXN0VG9TdHJpbmcob2JqKTsgfVxuZnVuY3Rpb24gaXNSZWdFeHAob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBSZWdFeHBdJyAmJiBjYW5UcnVzdFRvU3RyaW5nKG9iaik7IH1cbmZ1bmN0aW9uIGlzRXJyb3Iob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBFcnJvcl0nICYmIGNhblRydXN0VG9TdHJpbmcob2JqKTsgfVxuZnVuY3Rpb24gaXNTdHJpbmcob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBTdHJpbmddJyAmJiBjYW5UcnVzdFRvU3RyaW5nKG9iaik7IH1cbmZ1bmN0aW9uIGlzTnVtYmVyKG9iaikgeyByZXR1cm4gdG9TdHIob2JqKSA9PT0gJ1tvYmplY3QgTnVtYmVyXScgJiYgY2FuVHJ1c3RUb1N0cmluZyhvYmopOyB9XG5mdW5jdGlvbiBpc0Jvb2xlYW4ob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBCb29sZWFuXScgJiYgY2FuVHJ1c3RUb1N0cmluZyhvYmopOyB9XG5cbi8vIFN5bWJvbCBhbmQgQmlnSW50IGRvIGhhdmUgU3ltYm9sLnRvU3RyaW5nVGFnIGJ5IHNwZWMsIHNvIHRoYXQgY2FuJ3QgYmUgdXNlZCB0byBlbGltaW5hdGUgZmFsc2UgcG9zaXRpdmVzXG5mdW5jdGlvbiBpc1N5bWJvbChvYmopIHtcbiAgICBpZiAoaGFzU2hhbW1lZFN5bWJvbHMpIHtcbiAgICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogaW5zdGFuY2VvZiBTeW1ib2w7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3ltYm9sJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCFvYmogfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgIXN5bVRvU3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgc3ltVG9TdHJpbmcuY2FsbChvYmopO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNCaWdJbnQob2JqKSB7XG4gICAgaWYgKCFvYmogfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgIWJpZ0ludFZhbHVlT2YpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBiaWdJbnRWYWx1ZU9mLmNhbGwob2JqKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbnZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5IHx8IGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGtleSBpbiB0aGlzOyB9O1xuZnVuY3Rpb24gaGFzKG9iaiwga2V5KSB7XG4gICAgcmV0dXJuIGhhc093bi5jYWxsKG9iaiwga2V5KTtcbn1cblxuZnVuY3Rpb24gdG9TdHIob2JqKSB7XG4gICAgcmV0dXJuIG9iamVjdFRvU3RyaW5nLmNhbGwob2JqKTtcbn1cblxuZnVuY3Rpb24gbmFtZU9mKGYpIHtcbiAgICBpZiAoZi5uYW1lKSB7IHJldHVybiBmLm5hbWU7IH1cbiAgICB2YXIgbSA9ICRtYXRjaC5jYWxsKGZ1bmN0aW9uVG9TdHJpbmcuY2FsbChmKSwgL15mdW5jdGlvblxccyooW1xcdyRdKykvKTtcbiAgICBpZiAobSkgeyByZXR1cm4gbVsxXTsgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBpbmRleE9mKHhzLCB4KSB7XG4gICAgaWYgKHhzLmluZGV4T2YpIHsgcmV0dXJuIHhzLmluZGV4T2YoeCk7IH1cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAoeHNbaV0gPT09IHgpIHsgcmV0dXJuIGk7IH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xufVxuXG5mdW5jdGlvbiBpc01hcCh4KSB7XG4gICAgaWYgKCFtYXBTaXplIHx8ICF4IHx8IHR5cGVvZiB4ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIG1hcFNpemUuY2FsbCh4KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHNldFNpemUuY2FsbCh4KTtcbiAgICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHggaW5zdGFuY2VvZiBNYXA7IC8vIGNvcmUtanMgd29ya2Fyb3VuZCwgcHJlLXYyLjUuMFxuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1dlYWtNYXAoeCkge1xuICAgIGlmICghd2Vha01hcEhhcyB8fCAheCB8fCB0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICB3ZWFrTWFwSGFzLmNhbGwoeCwgd2Vha01hcEhhcyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB3ZWFrU2V0SGFzLmNhbGwoeCwgd2Vha1NldEhhcyk7XG4gICAgICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4IGluc3RhbmNlb2YgV2Vha01hcDsgLy8gY29yZS1qcyB3b3JrYXJvdW5kLCBwcmUtdjIuNS4wXG4gICAgfSBjYXRjaCAoZSkge31cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzV2Vha1JlZih4KSB7XG4gICAgaWYgKCF3ZWFrUmVmRGVyZWYgfHwgIXggfHwgdHlwZW9mIHggIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgd2Vha1JlZkRlcmVmLmNhbGwoeCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1NldCh4KSB7XG4gICAgaWYgKCFzZXRTaXplIHx8ICF4IHx8IHR5cGVvZiB4ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIHNldFNpemUuY2FsbCh4KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG1hcFNpemUuY2FsbCh4KTtcbiAgICAgICAgfSBjYXRjaCAobSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHggaW5zdGFuY2VvZiBTZXQ7IC8vIGNvcmUtanMgd29ya2Fyb3VuZCwgcHJlLXYyLjUuMFxuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1dlYWtTZXQoeCkge1xuICAgIGlmICghd2Vha1NldEhhcyB8fCAheCB8fCB0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICB3ZWFrU2V0SGFzLmNhbGwoeCwgd2Vha1NldEhhcyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB3ZWFrTWFwSGFzLmNhbGwoeCwgd2Vha01hcEhhcyk7XG4gICAgICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4IGluc3RhbmNlb2YgV2Vha1NldDsgLy8gY29yZS1qcyB3b3JrYXJvdW5kLCBwcmUtdjIuNS4wXG4gICAgfSBjYXRjaCAoZSkge31cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzRWxlbWVudCh4KSB7XG4gICAgaWYgKCF4IHx8IHR5cGVvZiB4ICE9PSAnb2JqZWN0JykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAodHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB4IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgeC5ub2RlTmFtZSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHguZ2V0QXR0cmlidXRlID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBpbnNwZWN0U3RyaW5nKHN0ciwgb3B0cykge1xuICAgIGlmIChzdHIubGVuZ3RoID4gb3B0cy5tYXhTdHJpbmdMZW5ndGgpIHtcbiAgICAgICAgdmFyIHJlbWFpbmluZyA9IHN0ci5sZW5ndGggLSBvcHRzLm1heFN0cmluZ0xlbmd0aDtcbiAgICAgICAgdmFyIHRyYWlsZXIgPSAnLi4uICcgKyByZW1haW5pbmcgKyAnIG1vcmUgY2hhcmFjdGVyJyArIChyZW1haW5pbmcgPiAxID8gJ3MnIDogJycpO1xuICAgICAgICByZXR1cm4gaW5zcGVjdFN0cmluZygkc2xpY2UuY2FsbChzdHIsIDAsIG9wdHMubWF4U3RyaW5nTGVuZ3RoKSwgb3B0cykgKyB0cmFpbGVyO1xuICAgIH1cbiAgICB2YXIgcXVvdGVSRSA9IHF1b3RlUkVzW29wdHMucXVvdGVTdHlsZSB8fCAnc2luZ2xlJ107XG4gICAgcXVvdGVSRS5sYXN0SW5kZXggPSAwO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4XG4gICAgdmFyIHMgPSAkcmVwbGFjZS5jYWxsKCRyZXBsYWNlLmNhbGwoc3RyLCBxdW90ZVJFLCAnXFxcXCQxJyksIC9bXFx4MDAtXFx4MWZdL2csIGxvd2J5dGUpO1xuICAgIHJldHVybiB3cmFwUXVvdGVzKHMsICdzaW5nbGUnLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gbG93Ynl0ZShjKSB7XG4gICAgdmFyIG4gPSBjLmNoYXJDb2RlQXQoMCk7XG4gICAgdmFyIHggPSB7XG4gICAgICAgIDg6ICdiJyxcbiAgICAgICAgOTogJ3QnLFxuICAgICAgICAxMDogJ24nLFxuICAgICAgICAxMjogJ2YnLFxuICAgICAgICAxMzogJ3InXG4gICAgfVtuXTtcbiAgICBpZiAoeCkgeyByZXR1cm4gJ1xcXFwnICsgeDsgfVxuICAgIHJldHVybiAnXFxcXHgnICsgKG4gPCAweDEwID8gJzAnIDogJycpICsgJHRvVXBwZXJDYXNlLmNhbGwobi50b1N0cmluZygxNikpO1xufVxuXG5mdW5jdGlvbiBtYXJrQm94ZWQoc3RyKSB7XG4gICAgcmV0dXJuICdPYmplY3QoJyArIHN0ciArICcpJztcbn1cblxuZnVuY3Rpb24gd2Vha0NvbGxlY3Rpb25PZih0eXBlKSB7XG4gICAgcmV0dXJuIHR5cGUgKyAnIHsgPyB9Jztcbn1cblxuZnVuY3Rpb24gY29sbGVjdGlvbk9mKHR5cGUsIHNpemUsIGVudHJpZXMsIGluZGVudCkge1xuICAgIHZhciBqb2luZWRFbnRyaWVzID0gaW5kZW50ID8gaW5kZW50ZWRKb2luKGVudHJpZXMsIGluZGVudCkgOiAkam9pbi5jYWxsKGVudHJpZXMsICcsICcpO1xuICAgIHJldHVybiB0eXBlICsgJyAoJyArIHNpemUgKyAnKSB7JyArIGpvaW5lZEVudHJpZXMgKyAnfSc7XG59XG5cbmZ1bmN0aW9uIHNpbmdsZUxpbmVWYWx1ZXMoeHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpbmRleE9mKHhzW2ldLCAnXFxuJykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBnZXRJbmRlbnQob3B0cywgZGVwdGgpIHtcbiAgICB2YXIgYmFzZUluZGVudDtcbiAgICBpZiAob3B0cy5pbmRlbnQgPT09ICdcXHQnKSB7XG4gICAgICAgIGJhc2VJbmRlbnQgPSAnXFx0JztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRzLmluZGVudCA9PT0gJ251bWJlcicgJiYgb3B0cy5pbmRlbnQgPiAwKSB7XG4gICAgICAgIGJhc2VJbmRlbnQgPSAkam9pbi5jYWxsKEFycmF5KG9wdHMuaW5kZW50ICsgMSksICcgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGJhc2U6IGJhc2VJbmRlbnQsXG4gICAgICAgIHByZXY6ICRqb2luLmNhbGwoQXJyYXkoZGVwdGggKyAxKSwgYmFzZUluZGVudClcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpbmRlbnRlZEpvaW4oeHMsIGluZGVudCkge1xuICAgIGlmICh4cy5sZW5ndGggPT09IDApIHsgcmV0dXJuICcnOyB9XG4gICAgdmFyIGxpbmVKb2luZXIgPSAnXFxuJyArIGluZGVudC5wcmV2ICsgaW5kZW50LmJhc2U7XG4gICAgcmV0dXJuIGxpbmVKb2luZXIgKyAkam9pbi5jYWxsKHhzLCAnLCcgKyBsaW5lSm9pbmVyKSArICdcXG4nICsgaW5kZW50LnByZXY7XG59XG5cbmZ1bmN0aW9uIGFyck9iaktleXMob2JqLCBpbnNwZWN0KSB7XG4gICAgdmFyIGlzQXJyID0gaXNBcnJheShvYmopO1xuICAgIHZhciB4cyA9IFtdO1xuICAgIGlmIChpc0Fycikge1xuICAgICAgICB4cy5sZW5ndGggPSBvYmoubGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgeHNbaV0gPSBoYXMob2JqLCBpKSA/IGluc3BlY3Qob2JqW2ldLCBvYmopIDogJyc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIHN5bXMgPSB0eXBlb2YgZ09QUyA9PT0gJ2Z1bmN0aW9uJyA/IGdPUFMob2JqKSA6IFtdO1xuICAgIHZhciBzeW1NYXA7XG4gICAgaWYgKGhhc1NoYW1tZWRTeW1ib2xzKSB7XG4gICAgICAgIHN5bU1hcCA9IHt9O1xuICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IHN5bXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICAgIHN5bU1hcFsnJCcgKyBzeW1zW2tdXSA9IHN5bXNba107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgaWYgKCFoYXMob2JqLCBrZXkpKSB7IGNvbnRpbnVlOyB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXgsIG5vLWNvbnRpbnVlXG4gICAgICAgIGlmIChpc0FyciAmJiBTdHJpbmcoTnVtYmVyKGtleSkpID09PSBrZXkgJiYga2V5IDwgb2JqLmxlbmd0aCkgeyBjb250aW51ZTsgfSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4LCBuby1jb250aW51ZVxuICAgICAgICBpZiAoaGFzU2hhbW1lZFN5bWJvbHMgJiYgc3ltTWFwWyckJyArIGtleV0gaW5zdGFuY2VvZiBTeW1ib2wpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgdG8gcHJldmVudCBzaGFtbWVkIFN5bWJvbHMsIHdoaWNoIGFyZSBzdG9yZWQgYXMgc3RyaW5ncywgZnJvbSBiZWluZyBpbmNsdWRlZCBpbiB0aGUgc3RyaW5nIGtleSBzZWN0aW9uXG4gICAgICAgICAgICBjb250aW51ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheCwgbm8tY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmICgkdGVzdC5jYWxsKC9bXlxcdyRdLywga2V5KSkge1xuICAgICAgICAgICAgeHMucHVzaChpbnNwZWN0KGtleSwgb2JqKSArICc6ICcgKyBpbnNwZWN0KG9ialtrZXldLCBvYmopKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHhzLnB1c2goa2V5ICsgJzogJyArIGluc3BlY3Qob2JqW2tleV0sIG9iaikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZ09QUyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN5bXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChpc0VudW1lcmFibGUuY2FsbChvYmosIHN5bXNbal0pKSB7XG4gICAgICAgICAgICAgICAgeHMucHVzaCgnWycgKyBpbnNwZWN0KHN5bXNbal0pICsgJ106ICcgKyBpbnNwZWN0KG9ialtzeW1zW2pdXSwgb2JqKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHhzO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW5zcGVjdCA9IHJlcXVpcmUoJ29iamVjdC1pbnNwZWN0Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gcmVxdWlyZSgnZXMtZXJyb3JzL3R5cGUnKTtcblxuLypcbiogVGhpcyBmdW5jdGlvbiB0cmF2ZXJzZXMgdGhlIGxpc3QgcmV0dXJuaW5nIHRoZSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGtleS5cbipcbiogVGhhdCBub2RlIGlzIGFsc28gbW92ZWQgdG8gdGhlIGhlYWQgb2YgdGhlIGxpc3QsIHNvIHRoYXQgaWYgaXQncyBhY2Nlc3NlZCBhZ2FpbiB3ZSBkb24ndCBuZWVkIHRvIHRyYXZlcnNlIHRoZSB3aG9sZSBsaXN0LlxuKiBCeSBkb2luZyBzbywgYWxsIHRoZSByZWNlbnRseSB1c2VkIG5vZGVzIGNhbiBiZSBhY2Nlc3NlZCByZWxhdGl2ZWx5IHF1aWNrbHkuXG4qL1xuLyoqIEB0eXBlIHtpbXBvcnQoJy4vbGlzdC5kLnRzJykubGlzdEdldE5vZGV9ICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbnZhciBsaXN0R2V0Tm9kZSA9IGZ1bmN0aW9uIChsaXN0LCBrZXksIGlzRGVsZXRlKSB7XG5cdC8qKiBAdHlwZSB7dHlwZW9mIGxpc3QgfCBOb25OdWxsYWJsZTwodHlwZW9mIGxpc3QpWyduZXh0J10+fSAqL1xuXHR2YXIgcHJldiA9IGxpc3Q7XG5cdC8qKiBAdHlwZSB7KHR5cGVvZiBsaXN0KVsnbmV4dCddfSAqL1xuXHR2YXIgY3Vycjtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXHRmb3IgKDsgKGN1cnIgPSBwcmV2Lm5leHQpICE9IG51bGw7IHByZXYgPSBjdXJyKSB7XG5cdFx0aWYgKGN1cnIua2V5ID09PSBrZXkpIHtcblx0XHRcdHByZXYubmV4dCA9IGN1cnIubmV4dDtcblx0XHRcdGlmICghaXNEZWxldGUpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV4dHJhLXBhcmVuc1xuXHRcdFx0XHRjdXJyLm5leHQgPSAvKiogQHR5cGUge05vbk51bGxhYmxlPHR5cGVvZiBsaXN0Lm5leHQ+fSAqLyAobGlzdC5uZXh0KTtcblx0XHRcdFx0bGlzdC5uZXh0ID0gY3VycjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGN1cnI7XG5cdFx0fVxuXHR9XG59O1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9saXN0LmQudHMnKS5saXN0R2V0fSAqL1xudmFyIGxpc3RHZXQgPSBmdW5jdGlvbiAob2JqZWN0cywga2V5KSB7XG5cdGlmICghb2JqZWN0cykge1xuXHRcdHJldHVybiB2b2lkIHVuZGVmaW5lZDtcblx0fVxuXHR2YXIgbm9kZSA9IGxpc3RHZXROb2RlKG9iamVjdHMsIGtleSk7XG5cdHJldHVybiBub2RlICYmIG5vZGUudmFsdWU7XG59O1xuLyoqIEB0eXBlIHtpbXBvcnQoJy4vbGlzdC5kLnRzJykubGlzdFNldH0gKi9cbnZhciBsaXN0U2V0ID0gZnVuY3Rpb24gKG9iamVjdHMsIGtleSwgdmFsdWUpIHtcblx0dmFyIG5vZGUgPSBsaXN0R2V0Tm9kZShvYmplY3RzLCBrZXkpO1xuXHRpZiAobm9kZSkge1xuXHRcdG5vZGUudmFsdWUgPSB2YWx1ZTtcblx0fSBlbHNlIHtcblx0XHQvLyBQcmVwZW5kIHRoZSBuZXcgbm9kZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaXN0XG5cdFx0b2JqZWN0cy5uZXh0ID0gLyoqIEB0eXBlIHtpbXBvcnQoJy4vbGlzdC5kLnRzJykuTGlzdE5vZGU8dHlwZW9mIHZhbHVlLCB0eXBlb2Yga2V5Pn0gKi8gKHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wYXJhbS1yZWFzc2lnbiwgbm8tZXh0cmEtcGFyZW5zXG5cdFx0XHRrZXk6IGtleSxcblx0XHRcdG5leHQ6IG9iamVjdHMubmV4dCxcblx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdH0pO1xuXHR9XG59O1xuLyoqIEB0eXBlIHtpbXBvcnQoJy4vbGlzdC5kLnRzJykubGlzdEhhc30gKi9cbnZhciBsaXN0SGFzID0gZnVuY3Rpb24gKG9iamVjdHMsIGtleSkge1xuXHRpZiAoIW9iamVjdHMpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuICEhbGlzdEdldE5vZGUob2JqZWN0cywga2V5KTtcbn07XG4vKiogQHR5cGUge2ltcG9ydCgnLi9saXN0LmQudHMnKS5saXN0RGVsZXRlfSAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG52YXIgbGlzdERlbGV0ZSA9IGZ1bmN0aW9uIChvYmplY3RzLCBrZXkpIHtcblx0aWYgKG9iamVjdHMpIHtcblx0XHRyZXR1cm4gbGlzdEdldE5vZGUob2JqZWN0cywga2V5LCB0cnVlKTtcblx0fVxufTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2V0U2lkZUNoYW5uZWxMaXN0KCkge1xuXHQvKiogQHR5cGVkZWYge1JldHVyblR5cGU8dHlwZW9mIGdldFNpZGVDaGFubmVsTGlzdD59IENoYW5uZWwgKi9cblx0LyoqIEB0eXBlZGVmIHtQYXJhbWV0ZXJzPENoYW5uZWxbJ2dldCddPlswXX0gSyAqL1xuXHQvKiogQHR5cGVkZWYge1BhcmFtZXRlcnM8Q2hhbm5lbFsnc2V0J10+WzFdfSBWICovXG5cblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vbGlzdC5kLnRzJykuUm9vdE5vZGU8ViwgSz4gfCB1bmRlZmluZWR9ICovIHZhciAkbztcblxuXHQvKiogQHR5cGUge0NoYW5uZWx9ICovXG5cdHZhciBjaGFubmVsID0ge1xuXHRcdGFzc2VydDogZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0aWYgKCFjaGFubmVsLmhhcyhrZXkpKSB7XG5cdFx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdTaWRlIGNoYW5uZWwgZG9lcyBub3QgY29udGFpbiAnICsgaW5zcGVjdChrZXkpKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdCdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHR2YXIgcm9vdCA9ICRvICYmICRvLm5leHQ7XG5cdFx0XHR2YXIgZGVsZXRlZE5vZGUgPSBsaXN0RGVsZXRlKCRvLCBrZXkpO1xuXHRcdFx0aWYgKGRlbGV0ZWROb2RlICYmIHJvb3QgJiYgcm9vdCA9PT0gZGVsZXRlZE5vZGUpIHtcblx0XHRcdFx0JG8gPSB2b2lkIHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdHJldHVybiAhIWRlbGV0ZWROb2RlO1xuXHRcdH0sXG5cdFx0Z2V0OiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRyZXR1cm4gbGlzdEdldCgkbywga2V5KTtcblx0XHR9LFxuXHRcdGhhczogZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0cmV0dXJuIGxpc3RIYXMoJG8sIGtleSk7XG5cdFx0fSxcblx0XHRzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG5cdFx0XHRpZiAoISRvKSB7XG5cdFx0XHRcdC8vIEluaXRpYWxpemUgdGhlIGxpbmtlZCBsaXN0IGFzIGFuIGVtcHR5IG5vZGUsIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBzcGVjaWFsLWNhc2UgaGFuZGxpbmcgb2YgdGhlIGZpcnN0IG5vZGU6IHdlIGNhbiBhbHdheXMgcmVmZXIgdG8gaXQgYXMgKHByZXZpb3VzIG5vZGUpLm5leHQsIGluc3RlYWQgb2Ygc29tZXRoaW5nIGxpa2UgKGxpc3QpLmhlYWRcblx0XHRcdFx0JG8gPSB7XG5cdFx0XHRcdFx0bmV4dDogdm9pZCB1bmRlZmluZWRcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRyYS1wYXJlbnNcblx0XHRcdGxpc3RTZXQoLyoqIEB0eXBlIHtOb25OdWxsYWJsZTx0eXBlb2YgJG8+fSAqLyAoJG8pLCBrZXksIHZhbHVlKTtcblx0XHR9XG5cdH07XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogZmlndXJlIG91dCB3aHkgdGhpcyBpcyBlcnJvcmluZ1xuXHRyZXR1cm4gY2hhbm5lbDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdDtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gRXJyb3I7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL2V2YWwnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gRXZhbEVycm9yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9yYW5nZScpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBSYW5nZUVycm9yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9yZWYnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gUmVmZXJlbmNlRXJyb3I7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL3N5bnRheCcpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBTeW50YXhFcnJvcjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vdXJpJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IFVSSUVycm9yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9hYnMnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gTWF0aC5hYnM7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL2Zsb29yJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguZmxvb3I7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL21heCcpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBNYXRoLm1heDtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vbWluJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGgubWluO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9wb3cnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gTWF0aC5wb3c7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL3JvdW5kJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGgucm91bmQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL2lzTmFOJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IE51bWJlci5pc05hTiB8fCBmdW5jdGlvbiBpc05hTihhKSB7XG5cdHJldHVybiBhICE9PSBhO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyICRpc05hTiA9IHJlcXVpcmUoJy4vaXNOYU4nKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vc2lnbicpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzaWduKG51bWJlcikge1xuXHRpZiAoJGlzTmFOKG51bWJlcikgfHwgbnVtYmVyID09PSAwKSB7XG5cdFx0cmV0dXJuIG51bWJlcjtcblx0fVxuXHRyZXR1cm4gbnVtYmVyIDwgMCA/IC0xIDogKzE7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9nT1BEJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuJyl9ICovXG52YXIgJGdPUEQgPSByZXF1aXJlKCcuL2dPUEQnKTtcblxuaWYgKCRnT1BEKSB7XG5cdHRyeSB7XG5cdFx0JGdPUEQoW10sICdsZW5ndGgnKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdC8vIElFIDggaGFzIGEgYnJva2VuIGdPUERcblx0XHQkZ09QRCA9IG51bGw7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSAkZ09QRDtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbnZhciAkZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgfHwgZmFsc2U7XG5pZiAoJGRlZmluZVByb3BlcnR5KSB7XG5cdHRyeSB7XG5cdFx0JGRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgdmFsdWU6IDEgfSk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHQvLyBJRSA4IGhhcyBhIGJyb2tlbiBkZWZpbmVQcm9wZXJ0eVxuXHRcdCRkZWZpbmVQcm9wZXJ0eSA9IGZhbHNlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gJGRlZmluZVByb3BlcnR5O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9zaGFtcycpfSAqL1xuLyogZXNsaW50IGNvbXBsZXhpdHk6IFsyLCAxOF0sIG1heC1zdGF0ZW1lbnRzOiBbMiwgMzNdICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGhhc1N5bWJvbHMoKSB7XG5cdGlmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICE9PSAnZnVuY3Rpb24nKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gJ3N5bWJvbCcpIHsgcmV0dXJuIHRydWU7IH1cblxuXHQvKiogQHR5cGUge3sgW2sgaW4gc3ltYm9sXT86IHVua25vd24gfX0gKi9cblx0dmFyIG9iaiA9IHt9O1xuXHR2YXIgc3ltID0gU3ltYm9sKCd0ZXN0Jyk7XG5cdHZhciBzeW1PYmogPSBPYmplY3Qoc3ltKTtcblx0aWYgKHR5cGVvZiBzeW0gPT09ICdzdHJpbmcnKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc3ltKSAhPT0gJ1tvYmplY3QgU3ltYm9sXScpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc3ltT2JqKSAhPT0gJ1tvYmplY3QgU3ltYm9sXScpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0Ly8gdGVtcCBkaXNhYmxlZCBwZXIgaHR0cHM6Ly9naXRodWIuY29tL2xqaGFyYi9vYmplY3QuYXNzaWduL2lzc3Vlcy8xN1xuXHQvLyBpZiAoc3ltIGluc3RhbmNlb2YgU3ltYm9sKSB7IHJldHVybiBmYWxzZTsgfVxuXHQvLyB0ZW1wIGRpc2FibGVkIHBlciBodHRwczovL2dpdGh1Yi5jb20vV2ViUmVmbGVjdGlvbi9nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMvaXNzdWVzLzRcblx0Ly8gaWYgKCEoc3ltT2JqIGluc3RhbmNlb2YgU3ltYm9sKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHQvLyBpZiAodHlwZW9mIFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdC8vIGlmIChTdHJpbmcoc3ltKSAhPT0gU3ltYm9sLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHN5bSkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0dmFyIHN5bVZhbCA9IDQyO1xuXHRvYmpbc3ltXSA9IHN5bVZhbDtcblx0Zm9yICh2YXIgXyBpbiBvYmopIHsgcmV0dXJuIGZhbHNlOyB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXgsIG5vLXVucmVhY2hhYmxlLWxvb3Bcblx0aWYgKHR5cGVvZiBPYmplY3Qua2V5cyA9PT0gJ2Z1bmN0aW9uJyAmJiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCAhPT0gMCkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzID09PSAnZnVuY3Rpb24nICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikubGVuZ3RoICE9PSAwKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdHZhciBzeW1zID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmopO1xuXHRpZiAoc3ltcy5sZW5ndGggIT09IDEgfHwgc3ltc1swXSAhPT0gc3ltKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iaiwgc3ltKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPT09ICdmdW5jdGlvbicpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0cmEtcGFyZW5zXG5cdFx0dmFyIGRlc2NyaXB0b3IgPSAvKiogQHR5cGUge1Byb3BlcnR5RGVzY3JpcHRvcn0gKi8gKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBzeW0pKTtcblx0XHRpZiAoZGVzY3JpcHRvci52YWx1ZSAhPT0gc3ltVmFsIHx8IGRlc2NyaXB0b3IuZW51bWVyYWJsZSAhPT0gdHJ1ZSkgeyByZXR1cm4gZmFsc2U7IH1cblx0fVxuXG5cdHJldHVybiB0cnVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIG9yaWdTeW1ib2wgPSB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2w7XG52YXIgaGFzU3ltYm9sU2hhbSA9IHJlcXVpcmUoJy4vc2hhbXMnKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaGFzTmF0aXZlU3ltYm9scygpIHtcblx0aWYgKHR5cGVvZiBvcmlnU3ltYm9sICE9PSAnZnVuY3Rpb24nKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKHR5cGVvZiBvcmlnU3ltYm9sKCdmb28nKSAhPT0gJ3N5bWJvbCcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICh0eXBlb2YgU3ltYm9sKCdiYXInKSAhPT0gJ3N5bWJvbCcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0cmV0dXJuIGhhc1N5bWJvbFNoYW0oKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL1JlZmxlY3QuZ2V0UHJvdG90eXBlT2YnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gKHR5cGVvZiBSZWZsZWN0ICE9PSAndW5kZWZpbmVkJyAmJiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKSB8fCBudWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJ2VzLW9iamVjdC1hdG9tcycpO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9PYmplY3QuZ2V0UHJvdG90eXBlT2YnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gJE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBudWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBlc2xpbnQgbm8taW52YWxpZC10aGlzOiAxICovXG5cbnZhciBFUlJPUl9NRVNTQUdFID0gJ0Z1bmN0aW9uLnByb3RvdHlwZS5iaW5kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgJztcbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgZnVuY1R5cGUgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xuXG52YXIgY29uY2F0dHkgPSBmdW5jdGlvbiBjb25jYXR0eShhLCBiKSB7XG4gICAgdmFyIGFyciA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGFycltpXSA9IGFbaV07XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgYi5sZW5ndGg7IGogKz0gMSkge1xuICAgICAgICBhcnJbaiArIGEubGVuZ3RoXSA9IGJbal07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycjtcbn07XG5cbnZhciBzbGljeSA9IGZ1bmN0aW9uIHNsaWN5KGFyckxpa2UsIG9mZnNldCkge1xuICAgIHZhciBhcnIgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gb2Zmc2V0IHx8IDAsIGogPSAwOyBpIDwgYXJyTGlrZS5sZW5ndGg7IGkgKz0gMSwgaiArPSAxKSB7XG4gICAgICAgIGFycltqXSA9IGFyckxpa2VbaV07XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG59O1xuXG52YXIgam9pbnkgPSBmdW5jdGlvbiAoYXJyLCBqb2luZXIpIHtcbiAgICB2YXIgc3RyID0gJyc7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgc3RyICs9IGFycltpXTtcbiAgICAgICAgaWYgKGkgKyAxIDwgYXJyLmxlbmd0aCkge1xuICAgICAgICAgICAgc3RyICs9IGpvaW5lcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiaW5kKHRoYXQpIHtcbiAgICB2YXIgdGFyZ2V0ID0gdGhpcztcbiAgICBpZiAodHlwZW9mIHRhcmdldCAhPT0gJ2Z1bmN0aW9uJyB8fCB0b1N0ci5hcHBseSh0YXJnZXQpICE9PSBmdW5jVHlwZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEVSUk9SX01FU1NBR0UgKyB0YXJnZXQpO1xuICAgIH1cbiAgICB2YXIgYXJncyA9IHNsaWN5KGFyZ3VtZW50cywgMSk7XG5cbiAgICB2YXIgYm91bmQ7XG4gICAgdmFyIGJpbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBib3VuZCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRhcmdldC5hcHBseShcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIGNvbmNhdHR5KGFyZ3MsIGFyZ3VtZW50cylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0KHJlc3VsdCkgPT09IHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0LmFwcGx5KFxuICAgICAgICAgICAgdGhhdCxcbiAgICAgICAgICAgIGNvbmNhdHR5KGFyZ3MsIGFyZ3VtZW50cylcbiAgICAgICAgKTtcblxuICAgIH07XG5cbiAgICB2YXIgYm91bmRMZW5ndGggPSBtYXgoMCwgdGFyZ2V0Lmxlbmd0aCAtIGFyZ3MubGVuZ3RoKTtcbiAgICB2YXIgYm91bmRBcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib3VuZExlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJvdW5kQXJnc1tpXSA9ICckJyArIGk7XG4gICAgfVxuXG4gICAgYm91bmQgPSBGdW5jdGlvbignYmluZGVyJywgJ3JldHVybiBmdW5jdGlvbiAoJyArIGpvaW55KGJvdW5kQXJncywgJywnKSArICcpeyByZXR1cm4gYmluZGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsgfScpKGJpbmRlcik7XG5cbiAgICBpZiAodGFyZ2V0LnByb3RvdHlwZSkge1xuICAgICAgICB2YXIgRW1wdHkgPSBmdW5jdGlvbiBFbXB0eSgpIHt9O1xuICAgICAgICBFbXB0eS5wcm90b3R5cGUgPSB0YXJnZXQucHJvdG90eXBlO1xuICAgICAgICBib3VuZC5wcm90b3R5cGUgPSBuZXcgRW1wdHkoKTtcbiAgICAgICAgRW1wdHkucHJvdG90eXBlID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gYm91bmQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgfHwgaW1wbGVtZW50YXRpb247XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL2Z1bmN0aW9uQ2FsbCcpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vZnVuY3Rpb25BcHBseScpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHk7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL3JlZmxlY3RBcHBseScpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgUmVmbGVjdCAhPT0gJ3VuZGVmaW5lZCcgJiYgUmVmbGVjdCAmJiBSZWZsZWN0LmFwcGx5O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJ2Z1bmN0aW9uLWJpbmQnKTtcblxudmFyICRhcHBseSA9IHJlcXVpcmUoJy4vZnVuY3Rpb25BcHBseScpO1xudmFyICRjYWxsID0gcmVxdWlyZSgnLi9mdW5jdGlvbkNhbGwnKTtcbnZhciAkcmVmbGVjdEFwcGx5ID0gcmVxdWlyZSgnLi9yZWZsZWN0QXBwbHknKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vYWN0dWFsQXBwbHknKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gJHJlZmxlY3RBcHBseSB8fCBiaW5kLmNhbGwoJGNhbGwsICRhcHBseSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnZnVuY3Rpb24tYmluZCcpO1xudmFyICRUeXBlRXJyb3IgPSByZXF1aXJlKCdlcy1lcnJvcnMvdHlwZScpO1xuXG52YXIgJGNhbGwgPSByZXF1aXJlKCcuL2Z1bmN0aW9uQ2FsbCcpO1xudmFyICRhY3R1YWxBcHBseSA9IHJlcXVpcmUoJy4vYWN0dWFsQXBwbHknKTtcblxuLyoqIEB0eXBlIHsoYXJnczogW0Z1bmN0aW9uLCB0aGlzQXJnPzogdW5rbm93biwgLi4uYXJnczogdW5rbm93bltdXSkgPT4gRnVuY3Rpb259IFRPRE8gRklYTUUsIGZpbmQgYSB3YXkgdG8gdXNlIGltcG9ydCgnLicpICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNhbGxCaW5kQmFzaWMoYXJncykge1xuXHRpZiAoYXJncy5sZW5ndGggPCAxIHx8IHR5cGVvZiBhcmdzWzBdICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2EgZnVuY3Rpb24gaXMgcmVxdWlyZWQnKTtcblx0fVxuXHRyZXR1cm4gJGFjdHVhbEFwcGx5KGJpbmQsICRjYWxsLCBhcmdzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjYWxsQmluZCA9IHJlcXVpcmUoJ2NhbGwtYmluZC1hcHBseS1oZWxwZXJzJyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJ2dvcGQnKTtcblxudmFyIGhhc1Byb3RvQWNjZXNzb3I7XG50cnkge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0cmEtcGFyZW5zLCBuby1wcm90b1xuXHRoYXNQcm90b0FjY2Vzc29yID0gLyoqIEB0eXBlIHt7IF9fcHJvdG9fXz86IHR5cGVvZiBBcnJheS5wcm90b3R5cGUgfX0gKi8gKFtdKS5fX3Byb3RvX18gPT09IEFycmF5LnByb3RvdHlwZTtcbn0gY2F0Y2ggKGUpIHtcblx0aWYgKCFlIHx8IHR5cGVvZiBlICE9PSAnb2JqZWN0JyB8fCAhKCdjb2RlJyBpbiBlKSB8fCBlLmNvZGUgIT09ICdFUlJfUFJPVE9fQUNDRVNTJykge1xuXHRcdHRocm93IGU7XG5cdH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV4dHJhLXBhcmVuc1xudmFyIGRlc2MgPSAhIWhhc1Byb3RvQWNjZXNzb3IgJiYgZ09QRCAmJiBnT1BEKE9iamVjdC5wcm90b3R5cGUsIC8qKiBAdHlwZSB7a2V5b2YgdHlwZW9mIE9iamVjdC5wcm90b3R5cGV9ICovICgnX19wcm90b19fJykpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcbnZhciAkZ2V0UHJvdG90eXBlT2YgPSAkT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9nZXQnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gZGVzYyAmJiB0eXBlb2YgZGVzYy5nZXQgPT09ICdmdW5jdGlvbidcblx0PyBjYWxsQmluZChbZGVzYy5nZXRdKVxuXHQ6IHR5cGVvZiAkZ2V0UHJvdG90eXBlT2YgPT09ICdmdW5jdGlvbidcblx0XHQ/IC8qKiBAdHlwZSB7aW1wb3J0KCcuL2dldCcpfSAqLyBmdW5jdGlvbiBnZXREdW5kZXIodmFsdWUpIHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0XHRcdHJldHVybiAkZ2V0UHJvdG90eXBlT2YodmFsdWUgPT0gbnVsbCA/IHZhbHVlIDogJE9iamVjdCh2YWx1ZSkpO1xuXHRcdH1cblx0XHQ6IGZhbHNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVmbGVjdEdldFByb3RvID0gcmVxdWlyZSgnLi9SZWZsZWN0LmdldFByb3RvdHlwZU9mJyk7XG52YXIgb3JpZ2luYWxHZXRQcm90byA9IHJlcXVpcmUoJy4vT2JqZWN0LmdldFByb3RvdHlwZU9mJyk7XG5cbnZhciBnZXREdW5kZXJQcm90byA9IHJlcXVpcmUoJ2R1bmRlci1wcm90by9nZXQnKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gcmVmbGVjdEdldFByb3RvXG5cdD8gZnVuY3Rpb24gZ2V0UHJvdG8oTykge1xuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgVFMgY2FuJ3QgbmFycm93IGluc2lkZSBhIGNsb3N1cmUsIGZvciBzb21lIHJlYXNvblxuXHRcdHJldHVybiByZWZsZWN0R2V0UHJvdG8oTyk7XG5cdH1cblx0OiBvcmlnaW5hbEdldFByb3RvXG5cdFx0PyBmdW5jdGlvbiBnZXRQcm90byhPKSB7XG5cdFx0XHRpZiAoIU8gfHwgKHR5cGVvZiBPICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgTyAhPT0gJ2Z1bmN0aW9uJykpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignZ2V0UHJvdG86IG5vdCBhbiBvYmplY3QnKTtcblx0XHRcdH1cblx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgVFMgY2FuJ3QgbmFycm93IGluc2lkZSBhIGNsb3N1cmUsIGZvciBzb21lIHJlYXNvblxuXHRcdFx0cmV0dXJuIG9yaWdpbmFsR2V0UHJvdG8oTyk7XG5cdFx0fVxuXHRcdDogZ2V0RHVuZGVyUHJvdG9cblx0XHRcdD8gZnVuY3Rpb24gZ2V0UHJvdG8oTykge1xuXHRcdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIFRTIGNhbid0IG5hcnJvdyBpbnNpZGUgYSBjbG9zdXJlLCBmb3Igc29tZSByZWFzb25cblx0XHRcdFx0cmV0dXJuIGdldER1bmRlclByb3RvKE8pO1xuXHRcdFx0fVxuXHRcdFx0OiBudWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0cmEtcGFyZW5zLCBuby1lbXB0eS1mdW5jdGlvblxuY29uc3QgY2FjaGVkID0gLyoqIEB0eXBlIHtpbXBvcnQoJy4nKS5Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3J9ICovIChhc3luYyBmdW5jdGlvbiAoKSB7fS5jb25zdHJ1Y3Rvcik7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9ICgpID0+IGNhY2hlZDtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0cmEtcGFyZW5zLCBuby1lbXB0eS1mdW5jdGlvblxuY29uc3QgY2FjaGVkID0gLyoqIEB0eXBlIHtHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yfSAqLyAoZnVuY3Rpb24qICgpIHt9LmNvbnN0cnVjdG9yKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gKCkgPT4gY2FjaGVkO1xuXG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRyYS1wYXJlbnMsIG5vLWVtcHR5LWZ1bmN0aW9uXG5jb25zdCBjYWNoZWQgPSAvKiogQHR5cGUge2ltcG9ydCgnLicpLkFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcn0gKi8gKGFzeW5jIGZ1bmN0aW9uKiAoKSB7fS5jb25zdHJ1Y3Rvcik7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9ICgpID0+IGNhY2hlZDtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1xudmFyICRoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IGJpbmQuY2FsbChjYWxsLCAkaGFzT3duKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHVuZGVmaW5lZDtcblxudmFyICRPYmplY3QgPSByZXF1aXJlKCdlcy1vYmplY3QtYXRvbXMnKTtcblxudmFyICRFcnJvciA9IHJlcXVpcmUoJ2VzLWVycm9ycycpO1xudmFyICRFdmFsRXJyb3IgPSByZXF1aXJlKCdlcy1lcnJvcnMvZXZhbCcpO1xudmFyICRSYW5nZUVycm9yID0gcmVxdWlyZSgnZXMtZXJyb3JzL3JhbmdlJyk7XG52YXIgJFJlZmVyZW5jZUVycm9yID0gcmVxdWlyZSgnZXMtZXJyb3JzL3JlZicpO1xudmFyICRTeW50YXhFcnJvciA9IHJlcXVpcmUoJ2VzLWVycm9ycy9zeW50YXgnKTtcbnZhciAkVHlwZUVycm9yID0gcmVxdWlyZSgnZXMtZXJyb3JzL3R5cGUnKTtcbnZhciAkVVJJRXJyb3IgPSByZXF1aXJlKCdlcy1lcnJvcnMvdXJpJyk7XG5cbnZhciBhYnMgPSByZXF1aXJlKCdtYXRoLWludHJpbnNpY3MvYWJzJyk7XG52YXIgZmxvb3IgPSByZXF1aXJlKCdtYXRoLWludHJpbnNpY3MvZmxvb3InKTtcbnZhciBtYXggPSByZXF1aXJlKCdtYXRoLWludHJpbnNpY3MvbWF4Jyk7XG52YXIgbWluID0gcmVxdWlyZSgnbWF0aC1pbnRyaW5zaWNzL21pbicpO1xudmFyIHBvdyA9IHJlcXVpcmUoJ21hdGgtaW50cmluc2ljcy9wb3cnKTtcbnZhciByb3VuZCA9IHJlcXVpcmUoJ21hdGgtaW50cmluc2ljcy9yb3VuZCcpO1xudmFyIHNpZ24gPSByZXF1aXJlKCdtYXRoLWludHJpbnNpY3Mvc2lnbicpO1xuXG52YXIgJGdPUEQgPSByZXF1aXJlKCdnb3BkJyk7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnZXMtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbnZhciB0aHJvd1R5cGVFcnJvciA9IGZ1bmN0aW9uICgpIHtcblx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoKTtcbn07XG52YXIgVGhyb3dUeXBlRXJyb3IgPSAkZ09QRFxuXHQ/IChmdW5jdGlvbiAoKSB7XG5cdFx0dHJ5IHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnMsIG5vLWNhbGxlciwgbm8tcmVzdHJpY3RlZC1wcm9wZXJ0aWVzXG5cdFx0XHRhcmd1bWVudHMuY2FsbGVlOyAvLyBJRSA4IGRvZXMgbm90IHRocm93IGhlcmVcblx0XHRcdHJldHVybiB0aHJvd1R5cGVFcnJvcjtcblx0XHR9IGNhdGNoIChjYWxsZWVUaHJvd3MpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdC8vIElFIDggdGhyb3dzIG9uIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnJylcblx0XHRcdFx0cmV0dXJuICRnT1BEKGFyZ3VtZW50cywgJ2NhbGxlZScpLmdldDtcblx0XHRcdH0gY2F0Y2ggKGdPUER0aHJvd3MpIHtcblx0XHRcdFx0cmV0dXJuIHRocm93VHlwZUVycm9yO1xuXHRcdFx0fVxuXHRcdH1cblx0fSgpKVxuXHQ6IHRocm93VHlwZUVycm9yO1xuXG52YXIgaGFzU3ltYm9scyA9IHJlcXVpcmUoJ2hhcy1zeW1ib2xzJykoKTtcblxudmFyIGdldFByb3RvID0gcmVxdWlyZSgnZ2V0LXByb3RvJyk7XG52YXIgJE9iamVjdEdQTyA9IHJlcXVpcmUoJ2dldC1wcm90by9PYmplY3QuZ2V0UHJvdG90eXBlT2YnKTtcbnZhciAkUmVmbGVjdEdQTyA9IHJlcXVpcmUoJ2dldC1wcm90by9SZWZsZWN0LmdldFByb3RvdHlwZU9mJyk7XG5cbnZhciAkYXBwbHkgPSByZXF1aXJlKCdjYWxsLWJpbmQtYXBwbHktaGVscGVycy9mdW5jdGlvbkFwcGx5Jyk7XG52YXIgJGNhbGwgPSByZXF1aXJlKCdjYWxsLWJpbmQtYXBwbHktaGVscGVycy9mdW5jdGlvbkNhbGwnKTtcblxudmFyIG5lZWRzRXZhbCA9IHt9O1xuXG52YXIgVHlwZWRBcnJheSA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAndW5kZWZpbmVkJyB8fCAhZ2V0UHJvdG8gPyB1bmRlZmluZWQgOiBnZXRQcm90byhVaW50OEFycmF5KTtcblxudmFyIElOVFJJTlNJQ1MgPSB7XG5cdF9fcHJvdG9fXzogbnVsbCxcblx0JyVBZ2dyZWdhdGVFcnJvciUnOiB0eXBlb2YgQWdncmVnYXRlRXJyb3IgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogQWdncmVnYXRlRXJyb3IsXG5cdCclQXJyYXklJzogQXJyYXksXG5cdCclQXJyYXlCdWZmZXIlJzogdHlwZW9mIEFycmF5QnVmZmVyID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEFycmF5QnVmZmVyLFxuXHQnJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlJzogaGFzU3ltYm9scyAmJiBnZXRQcm90byA/IGdldFByb3RvKFtdW1N5bWJvbC5pdGVyYXRvcl0oKSkgOiB1bmRlZmluZWQsXG5cdCclQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlJSc6IHVuZGVmaW5lZCxcblx0JyVBc3luY0Z1bmN0aW9uJSc6IG5lZWRzRXZhbCxcblx0JyVBc3luY0dlbmVyYXRvciUnOiBuZWVkc0V2YWwsXG5cdCclQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiUnOiBuZWVkc0V2YWwsXG5cdCclQXN5bmNJdGVyYXRvclByb3RvdHlwZSUnOiBuZWVkc0V2YWwsXG5cdCclQXRvbWljcyUnOiB0eXBlb2YgQXRvbWljcyA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBBdG9taWNzLFxuXHQnJUJpZ0ludCUnOiB0eXBlb2YgQmlnSW50ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEJpZ0ludCxcblx0JyVCaWdJbnQ2NEFycmF5JSc6IHR5cGVvZiBCaWdJbnQ2NEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEJpZ0ludDY0QXJyYXksXG5cdCclQmlnVWludDY0QXJyYXklJzogdHlwZW9mIEJpZ1VpbnQ2NEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEJpZ1VpbnQ2NEFycmF5LFxuXHQnJUJvb2xlYW4lJzogQm9vbGVhbixcblx0JyVEYXRhVmlldyUnOiB0eXBlb2YgRGF0YVZpZXcgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRGF0YVZpZXcsXG5cdCclRGF0ZSUnOiBEYXRlLFxuXHQnJWRlY29kZVVSSSUnOiBkZWNvZGVVUkksXG5cdCclZGVjb2RlVVJJQ29tcG9uZW50JSc6IGRlY29kZVVSSUNvbXBvbmVudCxcblx0JyVlbmNvZGVVUkklJzogZW5jb2RlVVJJLFxuXHQnJWVuY29kZVVSSUNvbXBvbmVudCUnOiBlbmNvZGVVUklDb21wb25lbnQsXG5cdCclRXJyb3IlJzogJEVycm9yLFxuXHQnJWV2YWwlJzogZXZhbCwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1ldmFsXG5cdCclRXZhbEVycm9yJSc6ICRFdmFsRXJyb3IsXG5cdCclRmxvYXQxNkFycmF5JSc6IHR5cGVvZiBGbG9hdDE2QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRmxvYXQxNkFycmF5LFxuXHQnJUZsb2F0MzJBcnJheSUnOiB0eXBlb2YgRmxvYXQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZsb2F0MzJBcnJheSxcblx0JyVGbG9hdDY0QXJyYXklJzogdHlwZW9mIEZsb2F0NjRBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBGbG9hdDY0QXJyYXksXG5cdCclRmluYWxpemF0aW9uUmVnaXN0cnklJzogdHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZpbmFsaXphdGlvblJlZ2lzdHJ5LFxuXHQnJUZ1bmN0aW9uJSc6IEZ1bmN0aW9uLFxuXHQnJUdlbmVyYXRvckZ1bmN0aW9uJSc6IG5lZWRzRXZhbCxcblx0JyVJbnQ4QXJyYXklJzogdHlwZW9mIEludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBJbnQ4QXJyYXksXG5cdCclSW50MTZBcnJheSUnOiB0eXBlb2YgSW50MTZBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBJbnQxNkFycmF5LFxuXHQnJUludDMyQXJyYXklJzogdHlwZW9mIEludDMyQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogSW50MzJBcnJheSxcblx0JyVpc0Zpbml0ZSUnOiBpc0Zpbml0ZSxcblx0JyVpc05hTiUnOiBpc05hTixcblx0JyVJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzICYmIGdldFByb3RvID8gZ2V0UHJvdG8oZ2V0UHJvdG8oW11bU3ltYm9sLml0ZXJhdG9yXSgpKSkgOiB1bmRlZmluZWQsXG5cdCclSlNPTiUnOiB0eXBlb2YgSlNPTiA9PT0gJ29iamVjdCcgPyBKU09OIDogdW5kZWZpbmVkLFxuXHQnJU1hcCUnOiB0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IE1hcCxcblx0JyVNYXBJdGVyYXRvclByb3RvdHlwZSUnOiB0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJyB8fCAhaGFzU3ltYm9scyB8fCAhZ2V0UHJvdG8gPyB1bmRlZmluZWQgOiBnZXRQcm90byhuZXcgTWFwKClbU3ltYm9sLml0ZXJhdG9yXSgpKSxcblx0JyVNYXRoJSc6IE1hdGgsXG5cdCclTnVtYmVyJSc6IE51bWJlcixcblx0JyVPYmplY3QlJzogJE9iamVjdCxcblx0JyVPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJSc6ICRnT1BELFxuXHQnJXBhcnNlRmxvYXQlJzogcGFyc2VGbG9hdCxcblx0JyVwYXJzZUludCUnOiBwYXJzZUludCxcblx0JyVQcm9taXNlJSc6IHR5cGVvZiBQcm9taXNlID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFByb21pc2UsXG5cdCclUHJveHklJzogdHlwZW9mIFByb3h5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFByb3h5LFxuXHQnJVJhbmdlRXJyb3IlJzogJFJhbmdlRXJyb3IsXG5cdCclUmVmZXJlbmNlRXJyb3IlJzogJFJlZmVyZW5jZUVycm9yLFxuXHQnJVJlZmxlY3QlJzogdHlwZW9mIFJlZmxlY3QgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUmVmbGVjdCxcblx0JyVSZWdFeHAlJzogUmVnRXhwLFxuXHQnJVNldCUnOiB0eXBlb2YgU2V0ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFNldCxcblx0JyVTZXRJdGVyYXRvclByb3RvdHlwZSUnOiB0eXBlb2YgU2V0ID09PSAndW5kZWZpbmVkJyB8fCAhaGFzU3ltYm9scyB8fCAhZ2V0UHJvdG8gPyB1bmRlZmluZWQgOiBnZXRQcm90byhuZXcgU2V0KClbU3ltYm9sLml0ZXJhdG9yXSgpKSxcblx0JyVTaGFyZWRBcnJheUJ1ZmZlciUnOiB0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogU2hhcmVkQXJyYXlCdWZmZXIsXG5cdCclU3RyaW5nJSc6IFN0cmluZyxcblx0JyVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzICYmIGdldFByb3RvID8gZ2V0UHJvdG8oJydbU3ltYm9sLml0ZXJhdG9yXSgpKSA6IHVuZGVmaW5lZCxcblx0JyVTeW1ib2wlJzogaGFzU3ltYm9scyA/IFN5bWJvbCA6IHVuZGVmaW5lZCxcblx0JyVTeW50YXhFcnJvciUnOiAkU3ludGF4RXJyb3IsXG5cdCclVGhyb3dUeXBlRXJyb3IlJzogVGhyb3dUeXBlRXJyb3IsXG5cdCclVHlwZWRBcnJheSUnOiBUeXBlZEFycmF5LFxuXHQnJVR5cGVFcnJvciUnOiAkVHlwZUVycm9yLFxuXHQnJVVpbnQ4QXJyYXklJzogdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDhBcnJheSxcblx0JyVVaW50OENsYW1wZWRBcnJheSUnOiB0eXBlb2YgVWludDhDbGFtcGVkQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDhDbGFtcGVkQXJyYXksXG5cdCclVWludDE2QXJyYXklJzogdHlwZW9mIFVpbnQxNkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQxNkFycmF5LFxuXHQnJVVpbnQzMkFycmF5JSc6IHR5cGVvZiBVaW50MzJBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50MzJBcnJheSxcblx0JyVVUklFcnJvciUnOiAkVVJJRXJyb3IsXG5cdCclV2Vha01hcCUnOiB0eXBlb2YgV2Vha01hcCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBXZWFrTWFwLFxuXHQnJVdlYWtSZWYlJzogdHlwZW9mIFdlYWtSZWYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogV2Vha1JlZixcblx0JyVXZWFrU2V0JSc6IHR5cGVvZiBXZWFrU2V0ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFdlYWtTZXQsXG5cblx0JyVGdW5jdGlvbi5wcm90b3R5cGUuY2FsbCUnOiAkY2FsbCxcblx0JyVGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHklJzogJGFwcGx5LFxuXHQnJU9iamVjdC5kZWZpbmVQcm9wZXJ0eSUnOiAkZGVmaW5lUHJvcGVydHksXG5cdCclT2JqZWN0LmdldFByb3RvdHlwZU9mJSc6ICRPYmplY3RHUE8sXG5cdCclTWF0aC5hYnMlJzogYWJzLFxuXHQnJU1hdGguZmxvb3IlJzogZmxvb3IsXG5cdCclTWF0aC5tYXglJzogbWF4LFxuXHQnJU1hdGgubWluJSc6IG1pbixcblx0JyVNYXRoLnBvdyUnOiBwb3csXG5cdCclTWF0aC5yb3VuZCUnOiByb3VuZCxcblx0JyVNYXRoLnNpZ24lJzogc2lnbixcblx0JyVSZWZsZWN0LmdldFByb3RvdHlwZU9mJSc6ICRSZWZsZWN0R1BPXG59O1xuXG5pZiAoZ2V0UHJvdG8pIHtcblx0dHJ5IHtcblx0XHRudWxsLmVycm9yOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2hhZG93cmVhbG0vcHVsbC8zODQjaXNzdWVjb21tZW50LTEzNjQyNjQyMjlcblx0XHR2YXIgZXJyb3JQcm90byA9IGdldFByb3RvKGdldFByb3RvKGUpKTtcblx0XHRJTlRSSU5TSUNTWyclRXJyb3IucHJvdG90eXBlJSddID0gZXJyb3JQcm90bztcblx0fVxufVxuXG52YXIgZ2V0QXN5bmNGdW5jdGlvbiA9IHJlcXVpcmUoJ2FzeW5jLWZ1bmN0aW9uJyk7XG52YXIgZ2V0R2VuZXJhdG9yRnVuY3Rpb24gPSByZXF1aXJlKCdnZW5lcmF0b3ItZnVuY3Rpb24nKTtcbnZhciBnZXRBc3luY0dlbmVyYXRvckZ1bmN0aW9uID0gcmVxdWlyZSgnYXN5bmMtZ2VuZXJhdG9yLWZ1bmN0aW9uJyk7XG5cbnZhciBkb0V2YWwgPSBmdW5jdGlvbiBkb0V2YWwobmFtZSkge1xuXHR2YXIgdmFsdWU7XG5cdGlmIChuYW1lID09PSAnJUFzeW5jRnVuY3Rpb24lJykge1xuXHRcdHZhbHVlID0gZ2V0QXN5bmNGdW5jdGlvbigpIHx8IHZvaWQgdW5kZWZpbmVkO1xuXHR9IGVsc2UgaWYgKG5hbWUgPT09ICclR2VuZXJhdG9yRnVuY3Rpb24lJykge1xuXHRcdHZhbHVlID0gZ2V0R2VuZXJhdG9yRnVuY3Rpb24oKSB8fCB2b2lkIHVuZGVmaW5lZDtcblx0fSBlbHNlIGlmIChuYW1lID09PSAnJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lJykge1xuXHRcdHZhbHVlID0gZ2V0QXN5bmNHZW5lcmF0b3JGdW5jdGlvbigpIHx8IHZvaWQgdW5kZWZpbmVkO1xuXHR9IGVsc2UgaWYgKG5hbWUgPT09ICclQXN5bmNHZW5lcmF0b3IlJykge1xuXHRcdHZhciBmbiA9IGRvRXZhbCgnJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lJyk7XG5cdFx0aWYgKGZuKSB7XG5cdFx0XHR2YWx1ZSA9IGZuLnByb3RvdHlwZTtcblx0XHR9XG5cdH0gZWxzZSBpZiAobmFtZSA9PT0gJyVBc3luY0l0ZXJhdG9yUHJvdG90eXBlJScpIHtcblx0XHR2YXIgZ2VuID0gZG9FdmFsKCclQXN5bmNHZW5lcmF0b3IlJyk7XG5cdFx0aWYgKGdlbiAmJiBnZXRQcm90bykge1xuXHRcdFx0dmFsdWUgPSBnZXRQcm90byhnZW4ucHJvdG90eXBlKTtcblx0XHR9XG5cdH1cblxuXHRJTlRSSU5TSUNTW25hbWVdID0gdmFsdWU7XG5cblx0cmV0dXJuIHZhbHVlO1xufTtcblxudmFyIExFR0FDWV9BTElBU0VTID0ge1xuXHRfX3Byb3RvX186IG51bGwsXG5cdCclQXJyYXlCdWZmZXJQcm90b3R5cGUlJzogWydBcnJheUJ1ZmZlcicsICdwcm90b3R5cGUnXSxcblx0JyVBcnJheVByb3RvdHlwZSUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUFycmF5UHJvdG9fZW50cmllcyUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZScsICdlbnRyaWVzJ10sXG5cdCclQXJyYXlQcm90b19mb3JFYWNoJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ2ZvckVhY2gnXSxcblx0JyVBcnJheVByb3RvX2tleXMlJzogWydBcnJheScsICdwcm90b3R5cGUnLCAna2V5cyddLFxuXHQnJUFycmF5UHJvdG9fdmFsdWVzJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ3ZhbHVlcyddLFxuXHQnJUFzeW5jRnVuY3Rpb25Qcm90b3R5cGUlJzogWydBc3luY0Z1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUFzeW5jR2VuZXJhdG9yJSc6IFsnQXN5bmNHZW5lcmF0b3JGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVBc3luY0dlbmVyYXRvclByb3RvdHlwZSUnOiBbJ0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24nLCAncHJvdG90eXBlJywgJ3Byb3RvdHlwZSddLFxuXHQnJUJvb2xlYW5Qcm90b3R5cGUlJzogWydCb29sZWFuJywgJ3Byb3RvdHlwZSddLFxuXHQnJURhdGFWaWV3UHJvdG90eXBlJSc6IFsnRGF0YVZpZXcnLCAncHJvdG90eXBlJ10sXG5cdCclRGF0ZVByb3RvdHlwZSUnOiBbJ0RhdGUnLCAncHJvdG90eXBlJ10sXG5cdCclRXJyb3JQcm90b3R5cGUlJzogWydFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVFdmFsRXJyb3JQcm90b3R5cGUlJzogWydFdmFsRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclRmxvYXQzMkFycmF5UHJvdG90eXBlJSc6IFsnRmxvYXQzMkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUZsb2F0NjRBcnJheVByb3RvdHlwZSUnOiBbJ0Zsb2F0NjRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVGdW5jdGlvblByb3RvdHlwZSUnOiBbJ0Z1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUdlbmVyYXRvciUnOiBbJ0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUdlbmVyYXRvclByb3RvdHlwZSUnOiBbJ0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZScsICdwcm90b3R5cGUnXSxcblx0JyVJbnQ4QXJyYXlQcm90b3R5cGUlJzogWydJbnQ4QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSW50MTZBcnJheVByb3RvdHlwZSUnOiBbJ0ludDE2QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSW50MzJBcnJheVByb3RvdHlwZSUnOiBbJ0ludDMyQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSlNPTlBhcnNlJSc6IFsnSlNPTicsICdwYXJzZSddLFxuXHQnJUpTT05TdHJpbmdpZnklJzogWydKU09OJywgJ3N0cmluZ2lmeSddLFxuXHQnJU1hcFByb3RvdHlwZSUnOiBbJ01hcCcsICdwcm90b3R5cGUnXSxcblx0JyVOdW1iZXJQcm90b3R5cGUlJzogWydOdW1iZXInLCAncHJvdG90eXBlJ10sXG5cdCclT2JqZWN0UHJvdG90eXBlJSc6IFsnT2JqZWN0JywgJ3Byb3RvdHlwZSddLFxuXHQnJU9ialByb3RvX3RvU3RyaW5nJSc6IFsnT2JqZWN0JywgJ3Byb3RvdHlwZScsICd0b1N0cmluZyddLFxuXHQnJU9ialByb3RvX3ZhbHVlT2YlJzogWydPYmplY3QnLCAncHJvdG90eXBlJywgJ3ZhbHVlT2YnXSxcblx0JyVQcm9taXNlUHJvdG90eXBlJSc6IFsnUHJvbWlzZScsICdwcm90b3R5cGUnXSxcblx0JyVQcm9taXNlUHJvdG9fdGhlbiUnOiBbJ1Byb21pc2UnLCAncHJvdG90eXBlJywgJ3RoZW4nXSxcblx0JyVQcm9taXNlX2FsbCUnOiBbJ1Byb21pc2UnLCAnYWxsJ10sXG5cdCclUHJvbWlzZV9yZWplY3QlJzogWydQcm9taXNlJywgJ3JlamVjdCddLFxuXHQnJVByb21pc2VfcmVzb2x2ZSUnOiBbJ1Byb21pc2UnLCAncmVzb2x2ZSddLFxuXHQnJVJhbmdlRXJyb3JQcm90b3R5cGUlJzogWydSYW5nZUVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVJlZmVyZW5jZUVycm9yUHJvdG90eXBlJSc6IFsnUmVmZXJlbmNlRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclUmVnRXhwUHJvdG90eXBlJSc6IFsnUmVnRXhwJywgJ3Byb3RvdHlwZSddLFxuXHQnJVNldFByb3RvdHlwZSUnOiBbJ1NldCcsICdwcm90b3R5cGUnXSxcblx0JyVTaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZSUnOiBbJ1NoYXJlZEFycmF5QnVmZmVyJywgJ3Byb3RvdHlwZSddLFxuXHQnJVN0cmluZ1Byb3RvdHlwZSUnOiBbJ1N0cmluZycsICdwcm90b3R5cGUnXSxcblx0JyVTeW1ib2xQcm90b3R5cGUlJzogWydTeW1ib2wnLCAncHJvdG90eXBlJ10sXG5cdCclU3ludGF4RXJyb3JQcm90b3R5cGUlJzogWydTeW50YXhFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVUeXBlZEFycmF5UHJvdG90eXBlJSc6IFsnVHlwZWRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVUeXBlRXJyb3JQcm90b3R5cGUlJzogWydUeXBlRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclVWludDhBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQ4QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVWludDhDbGFtcGVkQXJyYXlQcm90b3R5cGUlJzogWydVaW50OENsYW1wZWRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVVaW50MTZBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQxNkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVVpbnQzMkFycmF5UHJvdG90eXBlJSc6IFsnVWludDMyQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVVJJRXJyb3JQcm90b3R5cGUlJzogWydVUklFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVXZWFrTWFwUHJvdG90eXBlJSc6IFsnV2Vha01hcCcsICdwcm90b3R5cGUnXSxcblx0JyVXZWFrU2V0UHJvdG90eXBlJSc6IFsnV2Vha1NldCcsICdwcm90b3R5cGUnXVxufTtcblxudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnaGFzb3duJyk7XG52YXIgJGNvbmNhdCA9IGJpbmQuY2FsbCgkY2FsbCwgQXJyYXkucHJvdG90eXBlLmNvbmNhdCk7XG52YXIgJHNwbGljZUFwcGx5ID0gYmluZC5jYWxsKCRhcHBseSwgQXJyYXkucHJvdG90eXBlLnNwbGljZSk7XG52YXIgJHJlcGxhY2UgPSBiaW5kLmNhbGwoJGNhbGwsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSk7XG52YXIgJHN0clNsaWNlID0gYmluZC5jYWxsKCRjYWxsLCBTdHJpbmcucHJvdG90eXBlLnNsaWNlKTtcbnZhciAkZXhlYyA9IGJpbmQuY2FsbCgkY2FsbCwgUmVnRXhwLnByb3RvdHlwZS5leGVjKTtcblxuLyogYWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvNC4xNy4xNS9kaXN0L2xvZGFzaC5qcyNMNjczNS1MNjc0NCAqL1xudmFyIHJlUHJvcE5hbWUgPSAvW14lLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCUkKSkvZztcbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZzsgLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgc3RyaW5nVG9QYXRoID0gZnVuY3Rpb24gc3RyaW5nVG9QYXRoKHN0cmluZykge1xuXHR2YXIgZmlyc3QgPSAkc3RyU2xpY2Uoc3RyaW5nLCAwLCAxKTtcblx0dmFyIGxhc3QgPSAkc3RyU2xpY2Uoc3RyaW5nLCAtMSk7XG5cdGlmIChmaXJzdCA9PT0gJyUnICYmIGxhc3QgIT09ICclJykge1xuXHRcdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ2ludmFsaWQgaW50cmluc2ljIHN5bnRheCwgZXhwZWN0ZWQgY2xvc2luZyBgJWAnKTtcblx0fSBlbHNlIGlmIChsYXN0ID09PSAnJScgJiYgZmlyc3QgIT09ICclJykge1xuXHRcdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ2ludmFsaWQgaW50cmluc2ljIHN5bnRheCwgZXhwZWN0ZWQgb3BlbmluZyBgJWAnKTtcblx0fVxuXHR2YXIgcmVzdWx0ID0gW107XG5cdCRyZXBsYWNlKHN0cmluZywgcmVQcm9wTmFtZSwgZnVuY3Rpb24gKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcblx0XHRyZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSBxdW90ZSA/ICRyZXBsYWNlKHN1YlN0cmluZywgcmVFc2NhcGVDaGFyLCAnJDEnKSA6IG51bWJlciB8fCBtYXRjaDtcblx0fSk7XG5cdHJldHVybiByZXN1bHQ7XG59O1xuLyogZW5kIGFkYXB0YXRpb24gKi9cblxudmFyIGdldEJhc2VJbnRyaW5zaWMgPSBmdW5jdGlvbiBnZXRCYXNlSW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHR2YXIgaW50cmluc2ljTmFtZSA9IG5hbWU7XG5cdHZhciBhbGlhcztcblx0aWYgKGhhc093bihMRUdBQ1lfQUxJQVNFUywgaW50cmluc2ljTmFtZSkpIHtcblx0XHRhbGlhcyA9IExFR0FDWV9BTElBU0VTW2ludHJpbnNpY05hbWVdO1xuXHRcdGludHJpbnNpY05hbWUgPSAnJScgKyBhbGlhc1swXSArICclJztcblx0fVxuXG5cdGlmIChoYXNPd24oSU5UUklOU0lDUywgaW50cmluc2ljTmFtZSkpIHtcblx0XHR2YXIgdmFsdWUgPSBJTlRSSU5TSUNTW2ludHJpbnNpY05hbWVdO1xuXHRcdGlmICh2YWx1ZSA9PT0gbmVlZHNFdmFsKSB7XG5cdFx0XHR2YWx1ZSA9IGRvRXZhbChpbnRyaW5zaWNOYW1lKTtcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgJiYgIWFsbG93TWlzc2luZykge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2ludHJpbnNpYyAnICsgbmFtZSArICcgZXhpc3RzLCBidXQgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGZpbGUgYW4gaXNzdWUhJyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGFsaWFzOiBhbGlhcyxcblx0XHRcdG5hbWU6IGludHJpbnNpY05hbWUsXG5cdFx0XHR2YWx1ZTogdmFsdWVcblx0XHR9O1xuXHR9XG5cblx0dGhyb3cgbmV3ICRTeW50YXhFcnJvcignaW50cmluc2ljICcgKyBuYW1lICsgJyBkb2VzIG5vdCBleGlzdCEnKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gR2V0SW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHRpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnIHx8IG5hbWUubGVuZ3RoID09PSAwKSB7XG5cdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2ludHJpbnNpYyBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG5cdH1cblx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHR5cGVvZiBhbGxvd01pc3NpbmcgIT09ICdib29sZWFuJykge1xuXHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdcImFsbG93TWlzc2luZ1wiIGFyZ3VtZW50IG11c3QgYmUgYSBib29sZWFuJyk7XG5cdH1cblxuXHRpZiAoJGV4ZWMoL14lP1teJV0qJT8kLywgbmFtZSkgPT09IG51bGwpIHtcblx0XHR0aHJvdyBuZXcgJFN5bnRheEVycm9yKCdgJWAgbWF5IG5vdCBiZSBwcmVzZW50IGFueXdoZXJlIGJ1dCBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIGludHJpbnNpYyBuYW1lJyk7XG5cdH1cblx0dmFyIHBhcnRzID0gc3RyaW5nVG9QYXRoKG5hbWUpO1xuXHR2YXIgaW50cmluc2ljQmFzZU5hbWUgPSBwYXJ0cy5sZW5ndGggPiAwID8gcGFydHNbMF0gOiAnJztcblxuXHR2YXIgaW50cmluc2ljID0gZ2V0QmFzZUludHJpbnNpYygnJScgKyBpbnRyaW5zaWNCYXNlTmFtZSArICclJywgYWxsb3dNaXNzaW5nKTtcblx0dmFyIGludHJpbnNpY1JlYWxOYW1lID0gaW50cmluc2ljLm5hbWU7XG5cdHZhciB2YWx1ZSA9IGludHJpbnNpYy52YWx1ZTtcblx0dmFyIHNraXBGdXJ0aGVyQ2FjaGluZyA9IGZhbHNlO1xuXG5cdHZhciBhbGlhcyA9IGludHJpbnNpYy5hbGlhcztcblx0aWYgKGFsaWFzKSB7XG5cdFx0aW50cmluc2ljQmFzZU5hbWUgPSBhbGlhc1swXTtcblx0XHQkc3BsaWNlQXBwbHkocGFydHMsICRjb25jYXQoWzAsIDFdLCBhbGlhcykpO1xuXHR9XG5cblx0Zm9yICh2YXIgaSA9IDEsIGlzT3duID0gdHJ1ZTsgaSA8IHBhcnRzLmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0dmFyIHBhcnQgPSBwYXJ0c1tpXTtcblx0XHR2YXIgZmlyc3QgPSAkc3RyU2xpY2UocGFydCwgMCwgMSk7XG5cdFx0dmFyIGxhc3QgPSAkc3RyU2xpY2UocGFydCwgLTEpO1xuXHRcdGlmIChcblx0XHRcdChcblx0XHRcdFx0KGZpcnN0ID09PSAnXCInIHx8IGZpcnN0ID09PSBcIidcIiB8fCBmaXJzdCA9PT0gJ2AnKVxuXHRcdFx0XHR8fCAobGFzdCA9PT0gJ1wiJyB8fCBsYXN0ID09PSBcIidcIiB8fCBsYXN0ID09PSAnYCcpXG5cdFx0XHQpXG5cdFx0XHQmJiBmaXJzdCAhPT0gbGFzdFxuXHRcdCkge1xuXHRcdFx0dGhyb3cgbmV3ICRTeW50YXhFcnJvcigncHJvcGVydHkgbmFtZXMgd2l0aCBxdW90ZXMgbXVzdCBoYXZlIG1hdGNoaW5nIHF1b3RlcycpO1xuXHRcdH1cblx0XHRpZiAocGFydCA9PT0gJ2NvbnN0cnVjdG9yJyB8fCAhaXNPd24pIHtcblx0XHRcdHNraXBGdXJ0aGVyQ2FjaGluZyA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aW50cmluc2ljQmFzZU5hbWUgKz0gJy4nICsgcGFydDtcblx0XHRpbnRyaW5zaWNSZWFsTmFtZSA9ICclJyArIGludHJpbnNpY0Jhc2VOYW1lICsgJyUnO1xuXG5cdFx0aWYgKGhhc093bihJTlRSSU5TSUNTLCBpbnRyaW5zaWNSZWFsTmFtZSkpIHtcblx0XHRcdHZhbHVlID0gSU5UUklOU0lDU1tpbnRyaW5zaWNSZWFsTmFtZV07XG5cdFx0fSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG5cdFx0XHRpZiAoIShwYXJ0IGluIHZhbHVlKSkge1xuXHRcdFx0XHRpZiAoIWFsbG93TWlzc2luZykge1xuXHRcdFx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdiYXNlIGludHJpbnNpYyBmb3IgJyArIG5hbWUgKyAnIGV4aXN0cywgYnV0IHRoZSBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlLicpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2b2lkIHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdGlmICgkZ09QRCAmJiAoaSArIDEpID49IHBhcnRzLmxlbmd0aCkge1xuXHRcdFx0XHR2YXIgZGVzYyA9ICRnT1BEKHZhbHVlLCBwYXJ0KTtcblx0XHRcdFx0aXNPd24gPSAhIWRlc2M7XG5cblx0XHRcdFx0Ly8gQnkgY29udmVudGlvbiwgd2hlbiBhIGRhdGEgcHJvcGVydHkgaXMgY29udmVydGVkIHRvIGFuIGFjY2Vzc29yXG5cdFx0XHRcdC8vIHByb3BlcnR5IHRvIGVtdWxhdGUgYSBkYXRhIHByb3BlcnR5IHRoYXQgZG9lcyBub3Qgc3VmZmVyIGZyb21cblx0XHRcdFx0Ly8gdGhlIG92ZXJyaWRlIG1pc3Rha2UsIHRoYXQgYWNjZXNzb3IncyBnZXR0ZXIgaXMgbWFya2VkIHdpdGhcblx0XHRcdFx0Ly8gYW4gYG9yaWdpbmFsVmFsdWVgIHByb3BlcnR5LiBIZXJlLCB3aGVuIHdlIGRldGVjdCB0aGlzLCB3ZVxuXHRcdFx0XHQvLyB1cGhvbGQgdGhlIGlsbHVzaW9uIGJ5IHByZXRlbmRpbmcgdG8gc2VlIHRoYXQgb3JpZ2luYWwgZGF0YVxuXHRcdFx0XHQvLyBwcm9wZXJ0eSwgaS5lLiwgcmV0dXJuaW5nIHRoZSB2YWx1ZSByYXRoZXIgdGhhbiB0aGUgZ2V0dGVyXG5cdFx0XHRcdC8vIGl0c2VsZi5cblx0XHRcdFx0aWYgKGlzT3duICYmICdnZXQnIGluIGRlc2MgJiYgISgnb3JpZ2luYWxWYWx1ZScgaW4gZGVzYy5nZXQpKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBkZXNjLmdldDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR2YWx1ZSA9IHZhbHVlW3BhcnRdO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpc093biA9IGhhc093bih2YWx1ZSwgcGFydCk7XG5cdFx0XHRcdHZhbHVlID0gdmFsdWVbcGFydF07XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpc093biAmJiAhc2tpcEZ1cnRoZXJDYWNoaW5nKSB7XG5cdFx0XHRcdElOVFJJTlNJQ1NbaW50cmluc2ljUmVhbE5hbWVdID0gdmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBHZXRJbnRyaW5zaWMgPSByZXF1aXJlKCdnZXQtaW50cmluc2ljJyk7XG5cbnZhciBjYWxsQmluZEJhc2ljID0gcmVxdWlyZSgnY2FsbC1iaW5kLWFwcGx5LWhlbHBlcnMnKTtcblxuLyoqIEB0eXBlIHsodGhpc0FyZzogc3RyaW5nLCBzZWFyY2hTdHJpbmc6IHN0cmluZywgcG9zaXRpb24/OiBudW1iZXIpID0+IG51bWJlcn0gKi9cbnZhciAkaW5kZXhPZiA9IGNhbGxCaW5kQmFzaWMoW0dldEludHJpbnNpYygnJVN0cmluZy5wcm90b3R5cGUuaW5kZXhPZiUnKV0pO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLicpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjYWxsQm91bmRJbnRyaW5zaWMobmFtZSwgYWxsb3dNaXNzaW5nKSB7XG5cdC8qIGVzbGludCBuby1leHRyYS1wYXJlbnM6IDAgKi9cblxuXHR2YXIgaW50cmluc2ljID0gLyoqIEB0eXBlIHsodGhpczogdW5rbm93biwgLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3dufSAqLyAoR2V0SW50cmluc2ljKG5hbWUsICEhYWxsb3dNaXNzaW5nKSk7XG5cdGlmICh0eXBlb2YgaW50cmluc2ljID09PSAnZnVuY3Rpb24nICYmICRpbmRleE9mKG5hbWUsICcucHJvdG90eXBlLicpID4gLTEpIHtcblx0XHRyZXR1cm4gY2FsbEJpbmRCYXNpYygvKiogQHR5cGUge2NvbnN0fSAqLyAoW2ludHJpbnNpY10pKTtcblx0fVxuXHRyZXR1cm4gaW50cmluc2ljO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEdldEludHJpbnNpYyA9IHJlcXVpcmUoJ2dldC1pbnRyaW5zaWMnKTtcbnZhciBjYWxsQm91bmQgPSByZXF1aXJlKCdjYWxsLWJvdW5kJyk7XG52YXIgaW5zcGVjdCA9IHJlcXVpcmUoJ29iamVjdC1pbnNwZWN0Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gcmVxdWlyZSgnZXMtZXJyb3JzL3R5cGUnKTtcbnZhciAkTWFwID0gR2V0SW50cmluc2ljKCclTWFwJScsIHRydWUpO1xuXG4vKiogQHR5cGUgezxLLCBWPih0aGlzQXJnOiBNYXA8SywgVj4sIGtleTogSykgPT4gVn0gKi9cbnZhciAkbWFwR2V0ID0gY2FsbEJvdW5kKCdNYXAucHJvdG90eXBlLmdldCcsIHRydWUpO1xuLyoqIEB0eXBlIHs8SywgVj4odGhpc0FyZzogTWFwPEssIFY+LCBrZXk6IEssIHZhbHVlOiBWKSA9PiB2b2lkfSAqL1xudmFyICRtYXBTZXQgPSBjYWxsQm91bmQoJ01hcC5wcm90b3R5cGUuc2V0JywgdHJ1ZSk7XG4vKiogQHR5cGUgezxLLCBWPih0aGlzQXJnOiBNYXA8SywgVj4sIGtleTogSykgPT4gYm9vbGVhbn0gKi9cbnZhciAkbWFwSGFzID0gY2FsbEJvdW5kKCdNYXAucHJvdG90eXBlLmhhcycsIHRydWUpO1xuLyoqIEB0eXBlIHs8SywgVj4odGhpc0FyZzogTWFwPEssIFY+LCBrZXk6IEspID0+IGJvb2xlYW59ICovXG52YXIgJG1hcERlbGV0ZSA9IGNhbGxCb3VuZCgnTWFwLnByb3RvdHlwZS5kZWxldGUnLCB0cnVlKTtcbi8qKiBAdHlwZSB7PEssIFY+KHRoaXNBcmc6IE1hcDxLLCBWPikgPT4gbnVtYmVyfSAqL1xudmFyICRtYXBTaXplID0gY2FsbEJvdW5kKCdNYXAucHJvdG90eXBlLnNpemUnLCB0cnVlKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gISEkTWFwICYmIC8qKiBAdHlwZSB7RXhjbHVkZTxpbXBvcnQoJy4nKSwgZmFsc2U+fSAqLyBmdW5jdGlvbiBnZXRTaWRlQ2hhbm5lbE1hcCgpIHtcblx0LyoqIEB0eXBlZGVmIHtSZXR1cm5UeXBlPHR5cGVvZiBnZXRTaWRlQ2hhbm5lbE1hcD59IENoYW5uZWwgKi9cblx0LyoqIEB0eXBlZGVmIHtQYXJhbWV0ZXJzPENoYW5uZWxbJ2dldCddPlswXX0gSyAqL1xuXHQvKiogQHR5cGVkZWYge1BhcmFtZXRlcnM8Q2hhbm5lbFsnc2V0J10+WzFdfSBWICovXG5cblx0LyoqIEB0eXBlIHtNYXA8SywgVj4gfCB1bmRlZmluZWR9ICovIHZhciAkbTtcblxuXHQvKiogQHR5cGUge0NoYW5uZWx9ICovXG5cdHZhciBjaGFubmVsID0ge1xuXHRcdGFzc2VydDogZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0aWYgKCFjaGFubmVsLmhhcyhrZXkpKSB7XG5cdFx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdTaWRlIGNoYW5uZWwgZG9lcyBub3QgY29udGFpbiAnICsgaW5zcGVjdChrZXkpKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdCdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRpZiAoJG0pIHtcblx0XHRcdFx0dmFyIHJlc3VsdCA9ICRtYXBEZWxldGUoJG0sIGtleSk7XG5cdFx0XHRcdGlmICgkbWFwU2l6ZSgkbSkgPT09IDApIHtcblx0XHRcdFx0XHQkbSA9IHZvaWQgdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHRnZXQ6IGZ1bmN0aW9uIChrZXkpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjb25zaXN0ZW50LXJldHVyblxuXHRcdFx0aWYgKCRtKSB7XG5cdFx0XHRcdHJldHVybiAkbWFwR2V0KCRtLCBrZXkpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0aGFzOiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRpZiAoJG0pIHtcblx0XHRcdFx0cmV0dXJuICRtYXBIYXMoJG0sIGtleSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHRzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG5cdFx0XHRpZiAoISRtKSB7XG5cdFx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgVFMgY2FuJ3QgaGFuZGxlIG5hcnJvd2luZyBhIHZhcmlhYmxlIGluc2lkZSBhIGNsb3N1cmVcblx0XHRcdFx0JG0gPSBuZXcgJE1hcCgpO1xuXHRcdFx0fVxuXHRcdFx0JG1hcFNldCgkbSwga2V5LCB2YWx1ZSk7XG5cdFx0fVxuXHR9O1xuXG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogZmlndXJlIG91dCB3aHkgVFMgaXMgZXJyb3JpbmcgaGVyZVxuXHRyZXR1cm4gY2hhbm5lbDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBHZXRJbnRyaW5zaWMgPSByZXF1aXJlKCdnZXQtaW50cmluc2ljJyk7XG52YXIgY2FsbEJvdW5kID0gcmVxdWlyZSgnY2FsbC1ib3VuZCcpO1xudmFyIGluc3BlY3QgPSByZXF1aXJlKCdvYmplY3QtaW5zcGVjdCcpO1xudmFyIGdldFNpZGVDaGFubmVsTWFwID0gcmVxdWlyZSgnc2lkZS1jaGFubmVsLW1hcCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IHJlcXVpcmUoJ2VzLWVycm9ycy90eXBlJyk7XG52YXIgJFdlYWtNYXAgPSBHZXRJbnRyaW5zaWMoJyVXZWFrTWFwJScsIHRydWUpO1xuXG4vKiogQHR5cGUgezxLIGV4dGVuZHMgb2JqZWN0LCBWPih0aGlzQXJnOiBXZWFrTWFwPEssIFY+LCBrZXk6IEspID0+IFZ9ICovXG52YXIgJHdlYWtNYXBHZXQgPSBjYWxsQm91bmQoJ1dlYWtNYXAucHJvdG90eXBlLmdldCcsIHRydWUpO1xuLyoqIEB0eXBlIHs8SyBleHRlbmRzIG9iamVjdCwgVj4odGhpc0FyZzogV2Vha01hcDxLLCBWPiwga2V5OiBLLCB2YWx1ZTogVikgPT4gdm9pZH0gKi9cbnZhciAkd2Vha01hcFNldCA9IGNhbGxCb3VuZCgnV2Vha01hcC5wcm90b3R5cGUuc2V0JywgdHJ1ZSk7XG4vKiogQHR5cGUgezxLIGV4dGVuZHMgb2JqZWN0LCBWPih0aGlzQXJnOiBXZWFrTWFwPEssIFY+LCBrZXk6IEspID0+IGJvb2xlYW59ICovXG52YXIgJHdlYWtNYXBIYXMgPSBjYWxsQm91bmQoJ1dlYWtNYXAucHJvdG90eXBlLmhhcycsIHRydWUpO1xuLyoqIEB0eXBlIHs8SyBleHRlbmRzIG9iamVjdCwgVj4odGhpc0FyZzogV2Vha01hcDxLLCBWPiwga2V5OiBLKSA9PiBib29sZWFufSAqL1xudmFyICR3ZWFrTWFwRGVsZXRlID0gY2FsbEJvdW5kKCdXZWFrTWFwLnByb3RvdHlwZS5kZWxldGUnLCB0cnVlKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gJFdlYWtNYXBcblx0PyAvKiogQHR5cGUge0V4Y2x1ZGU8aW1wb3J0KCcuJyksIGZhbHNlPn0gKi8gZnVuY3Rpb24gZ2V0U2lkZUNoYW5uZWxXZWFrTWFwKCkge1xuXHRcdC8qKiBAdHlwZWRlZiB7UmV0dXJuVHlwZTx0eXBlb2YgZ2V0U2lkZUNoYW5uZWxXZWFrTWFwPn0gQ2hhbm5lbCAqL1xuXHRcdC8qKiBAdHlwZWRlZiB7UGFyYW1ldGVyczxDaGFubmVsWydnZXQnXT5bMF19IEsgKi9cblx0XHQvKiogQHR5cGVkZWYge1BhcmFtZXRlcnM8Q2hhbm5lbFsnc2V0J10+WzFdfSBWICovXG5cblx0XHQvKiogQHR5cGUge1dlYWtNYXA8SyAmIG9iamVjdCwgVj4gfCB1bmRlZmluZWR9ICovIHZhciAkd207XG5cdFx0LyoqIEB0eXBlIHtDaGFubmVsIHwgdW5kZWZpbmVkfSAqLyB2YXIgJG07XG5cblx0XHQvKiogQHR5cGUge0NoYW5uZWx9ICovXG5cdFx0dmFyIGNoYW5uZWwgPSB7XG5cdFx0XHRhc3NlcnQ6IGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdFx0aWYgKCFjaGFubmVsLmhhcyhrZXkpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ1NpZGUgY2hhbm5lbCBkb2VzIG5vdCBjb250YWluICcgKyBpbnNwZWN0KGtleSkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0J2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdFx0aWYgKCRXZWFrTWFwICYmIGtleSAmJiAodHlwZW9mIGtleSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGtleSA9PT0gJ2Z1bmN0aW9uJykpIHtcblx0XHRcdFx0XHRpZiAoJHdtKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJHdlYWtNYXBEZWxldGUoJHdtLCBrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChnZXRTaWRlQ2hhbm5lbE1hcCkge1xuXHRcdFx0XHRcdGlmICgkbSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICRtWydkZWxldGUnXShrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9LFxuXHRcdFx0Z2V0OiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRcdGlmICgkV2Vha01hcCAmJiBrZXkgJiYgKHR5cGVvZiBrZXkgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBrZXkgPT09ICdmdW5jdGlvbicpKSB7XG5cdFx0XHRcdFx0aWYgKCR3bSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICR3ZWFrTWFwR2V0KCR3bSwga2V5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuICRtICYmICRtLmdldChrZXkpO1xuXHRcdFx0fSxcblx0XHRcdGhhczogZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0XHRpZiAoJFdlYWtNYXAgJiYga2V5ICYmICh0eXBlb2Yga2V5ID09PSAnb2JqZWN0JyB8fCB0eXBlb2Yga2V5ID09PSAnZnVuY3Rpb24nKSkge1xuXHRcdFx0XHRcdGlmICgkd20pIHtcblx0XHRcdFx0XHRcdHJldHVybiAkd2Vha01hcEhhcygkd20sIGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAhISRtICYmICRtLmhhcyhrZXkpO1xuXHRcdFx0fSxcblx0XHRcdHNldDogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcblx0XHRcdFx0aWYgKCRXZWFrTWFwICYmIGtleSAmJiAodHlwZW9mIGtleSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGtleSA9PT0gJ2Z1bmN0aW9uJykpIHtcblx0XHRcdFx0XHRpZiAoISR3bSkge1xuXHRcdFx0XHRcdFx0JHdtID0gbmV3ICRXZWFrTWFwKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCR3ZWFrTWFwU2V0KCR3bSwga2V5LCB2YWx1ZSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoZ2V0U2lkZUNoYW5uZWxNYXApIHtcblx0XHRcdFx0XHRpZiAoISRtKSB7XG5cdFx0XHRcdFx0XHQkbSA9IGdldFNpZGVDaGFubmVsTWFwKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRyYS1wYXJlbnNcblx0XHRcdFx0XHQvKiogQHR5cGUge05vbk51bGxhYmxlPHR5cGVvZiAkbT59ICovICgkbSkuc2V0KGtleSwgdmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogZmlndXJlIG91dCB3aHkgdGhpcyBpcyBlcnJvcmluZ1xuXHRcdHJldHVybiBjaGFubmVsO1xuXHR9XG5cdDogZ2V0U2lkZUNoYW5uZWxNYXA7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciAkVHlwZUVycm9yID0gcmVxdWlyZSgnZXMtZXJyb3JzL3R5cGUnKTtcbnZhciBpbnNwZWN0ID0gcmVxdWlyZSgnb2JqZWN0LWluc3BlY3QnKTtcbnZhciBnZXRTaWRlQ2hhbm5lbExpc3QgPSByZXF1aXJlKCdzaWRlLWNoYW5uZWwtbGlzdCcpO1xudmFyIGdldFNpZGVDaGFubmVsTWFwID0gcmVxdWlyZSgnc2lkZS1jaGFubmVsLW1hcCcpO1xudmFyIGdldFNpZGVDaGFubmVsV2Vha01hcCA9IHJlcXVpcmUoJ3NpZGUtY2hhbm5lbC13ZWFrbWFwJyk7XG5cbnZhciBtYWtlQ2hhbm5lbCA9IGdldFNpZGVDaGFubmVsV2Vha01hcCB8fCBnZXRTaWRlQ2hhbm5lbE1hcCB8fCBnZXRTaWRlQ2hhbm5lbExpc3Q7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldFNpZGVDaGFubmVsKCkge1xuXHQvKiogQHR5cGVkZWYge1JldHVyblR5cGU8dHlwZW9mIGdldFNpZGVDaGFubmVsPn0gQ2hhbm5lbCAqL1xuXG5cdC8qKiBAdHlwZSB7Q2hhbm5lbCB8IHVuZGVmaW5lZH0gKi8gdmFyICRjaGFubmVsRGF0YTtcblxuXHQvKiogQHR5cGUge0NoYW5uZWx9ICovXG5cdHZhciBjaGFubmVsID0ge1xuXHRcdGFzc2VydDogZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0aWYgKCFjaGFubmVsLmhhcyhrZXkpKSB7XG5cdFx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdTaWRlIGNoYW5uZWwgZG9lcyBub3QgY29udGFpbiAnICsgaW5zcGVjdChrZXkpKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdCdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRyZXR1cm4gISEkY2hhbm5lbERhdGEgJiYgJGNoYW5uZWxEYXRhWydkZWxldGUnXShrZXkpO1xuXHRcdH0sXG5cdFx0Z2V0OiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRyZXR1cm4gJGNoYW5uZWxEYXRhICYmICRjaGFubmVsRGF0YS5nZXQoa2V5KTtcblx0XHR9LFxuXHRcdGhhczogZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0cmV0dXJuICEhJGNoYW5uZWxEYXRhICYmICRjaGFubmVsRGF0YS5oYXMoa2V5KTtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcblx0XHRcdGlmICghJGNoYW5uZWxEYXRhKSB7XG5cdFx0XHRcdCRjaGFubmVsRGF0YSA9IG1ha2VDaGFubmVsKCk7XG5cdFx0XHR9XG5cblx0XHRcdCRjaGFubmVsRGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG5cdFx0fVxuXHR9O1xuXHQvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IGZpZ3VyZSBvdXQgd2h5IHRoaXMgaXMgZXJyb3Jpbmdcblx0cmV0dXJuIGNoYW5uZWw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVwbGFjZSA9IFN0cmluZy5wcm90b3R5cGUucmVwbGFjZTtcbnZhciBwZXJjZW50VHdlbnRpZXMgPSAvJTIwL2c7XG5cbnZhciBGb3JtYXQgPSB7XG4gICAgUkZDMTczODogJ1JGQzE3MzgnLFxuICAgIFJGQzM5ODY6ICdSRkMzOTg2J1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgJ2RlZmF1bHQnOiBGb3JtYXQuUkZDMzk4NixcbiAgICBmb3JtYXR0ZXJzOiB7XG4gICAgICAgIFJGQzE3Mzg6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2UuY2FsbCh2YWx1ZSwgcGVyY2VudFR3ZW50aWVzLCAnKycpO1xuICAgICAgICB9LFxuICAgICAgICBSRkMzOTg2OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBSRkMxNzM4OiBGb3JtYXQuUkZDMTczOCxcbiAgICBSRkMzOTg2OiBGb3JtYXQuUkZDMzk4NlxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGZvcm1hdHMgPSByZXF1aXJlKCcuL2Zvcm1hdHMnKTtcblxudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbnZhciBoZXhUYWJsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFycmF5ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICAgICAgICBhcnJheS5wdXNoKCclJyArICgoaSA8IDE2ID8gJzAnIDogJycpICsgaS50b1N0cmluZygxNikpLnRvVXBwZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBhcnJheTtcbn0oKSk7XG5cbnZhciBjb21wYWN0UXVldWUgPSBmdW5jdGlvbiBjb21wYWN0UXVldWUocXVldWUpIHtcbiAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMSkge1xuICAgICAgICB2YXIgaXRlbSA9IHF1ZXVlLnBvcCgpO1xuICAgICAgICB2YXIgb2JqID0gaXRlbS5vYmpbaXRlbS5wcm9wXTtcblxuICAgICAgICBpZiAoaXNBcnJheShvYmopKSB7XG4gICAgICAgICAgICB2YXIgY29tcGFjdGVkID0gW107XG5cbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgb2JqLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpbal0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBhY3RlZC5wdXNoKG9ialtqXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpdGVtLm9ialtpdGVtLnByb3BdID0gY29tcGFjdGVkO1xuICAgICAgICB9XG4gICAgfVxufTtcblxudmFyIGFycmF5VG9PYmplY3QgPSBmdW5jdGlvbiBhcnJheVRvT2JqZWN0KHNvdXJjZSwgb3B0aW9ucykge1xuICAgIHZhciBvYmogPSBvcHRpb25zICYmIG9wdGlvbnMucGxhaW5PYmplY3RzID8geyBfX3Byb3RvX186IG51bGwgfSA6IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlW2ldICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgb2JqW2ldID0gc291cmNlW2ldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbnZhciBtZXJnZSA9IGZ1bmN0aW9uIG1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG4gICAgLyogZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOiAwICovXG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIHNvdXJjZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpZiAoaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgICAgICAgICB0YXJnZXQucHVzaChzb3VyY2UpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChvcHRpb25zICYmIChvcHRpb25zLnBsYWluT2JqZWN0cyB8fCBvcHRpb25zLmFsbG93UHJvdG90eXBlcykpXG4gICAgICAgICAgICAgICAgfHwgIWhhcy5jYWxsKE9iamVjdC5wcm90b3R5cGUsIHNvdXJjZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtzb3VyY2VdID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbdGFyZ2V0LCBzb3VyY2VdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldCB8fCB0eXBlb2YgdGFyZ2V0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gW3RhcmdldF0uY29uY2F0KHNvdXJjZSk7XG4gICAgfVxuXG4gICAgdmFyIG1lcmdlVGFyZ2V0ID0gdGFyZ2V0O1xuICAgIGlmIChpc0FycmF5KHRhcmdldCkgJiYgIWlzQXJyYXkoc291cmNlKSkge1xuICAgICAgICBtZXJnZVRhcmdldCA9IGFycmF5VG9PYmplY3QodGFyZ2V0LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJheSh0YXJnZXQpICYmIGlzQXJyYXkoc291cmNlKSkge1xuICAgICAgICBzb3VyY2UuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaSkge1xuICAgICAgICAgICAgaWYgKGhhcy5jYWxsKHRhcmdldCwgaSkpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0SXRlbSA9IHRhcmdldFtpXTtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0SXRlbSAmJiB0eXBlb2YgdGFyZ2V0SXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2ldID0gbWVyZ2UodGFyZ2V0SXRlbSwgaXRlbSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRbaV0gPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc291cmNlKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywga2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVtrZXldO1xuXG4gICAgICAgIGlmIChoYXMuY2FsbChhY2MsIGtleSkpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gbWVyZ2UoYWNjW2tleV0sIHZhbHVlLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBtZXJnZVRhcmdldCk7XG59O1xuXG52YXIgYXNzaWduID0gZnVuY3Rpb24gYXNzaWduU2luZ2xlU291cmNlKHRhcmdldCwgc291cmNlKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHNvdXJjZSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgICAgICBhY2Nba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHRhcmdldCk7XG59O1xuXG52YXIgZGVjb2RlID0gZnVuY3Rpb24gKHN0ciwgZGVmYXVsdERlY29kZXIsIGNoYXJzZXQpIHtcbiAgICB2YXIgc3RyV2l0aG91dFBsdXMgPSBzdHIucmVwbGFjZSgvXFwrL2csICcgJyk7XG4gICAgaWYgKGNoYXJzZXQgPT09ICdpc28tODg1OS0xJykge1xuICAgICAgICAvLyB1bmVzY2FwZSBuZXZlciB0aHJvd3MsIG5vIHRyeS4uLmNhdGNoIG5lZWRlZDpcbiAgICAgICAgcmV0dXJuIHN0cldpdGhvdXRQbHVzLnJlcGxhY2UoLyVbMC05YS1mXXsyfS9naSwgdW5lc2NhcGUpO1xuICAgIH1cbiAgICAvLyB1dGYtOFxuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoc3RyV2l0aG91dFBsdXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHN0cldpdGhvdXRQbHVzO1xuICAgIH1cbn07XG5cbnZhciBsaW1pdCA9IDEwMjQ7XG5cbi8qIGVzbGludCBvcGVyYXRvci1saW5lYnJlYWs6IFsyLCBcImJlZm9yZVwiXSAqL1xuXG52YXIgZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKHN0ciwgZGVmYXVsdEVuY29kZXIsIGNoYXJzZXQsIGtpbmQsIGZvcm1hdCkge1xuICAgIC8vIFRoaXMgY29kZSB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IEJyaWFuIFdoaXRlIChtc2NkZXgpIGZvciB0aGUgaW8uanMgY29yZSBxdWVyeXN0cmluZyBsaWJyYXJ5LlxuICAgIC8vIEl0IGhhcyBiZWVuIGFkYXB0ZWQgaGVyZSBmb3Igc3RyaWN0ZXIgYWRoZXJlbmNlIHRvIFJGQyAzOTg2XG4gICAgaWYgKHN0ci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICB2YXIgc3RyaW5nID0gc3RyO1xuICAgIGlmICh0eXBlb2Ygc3RyID09PSAnc3ltYm9sJykge1xuICAgICAgICBzdHJpbmcgPSBTeW1ib2wucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc3RyKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHN0cmluZyA9IFN0cmluZyhzdHIpO1xuICAgIH1cblxuICAgIGlmIChjaGFyc2V0ID09PSAnaXNvLTg4NTktMScpIHtcbiAgICAgICAgcmV0dXJuIGVzY2FwZShzdHJpbmcpLnJlcGxhY2UoLyV1WzAtOWEtZl17NH0vZ2ksIGZ1bmN0aW9uICgkMCkge1xuICAgICAgICAgICAgcmV0dXJuICclMjYlMjMnICsgcGFyc2VJbnQoJDAuc2xpY2UoMiksIDE2KSArICclM0InO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgb3V0ID0gJyc7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzdHJpbmcubGVuZ3RoOyBqICs9IGxpbWl0KSB7XG4gICAgICAgIHZhciBzZWdtZW50ID0gc3RyaW5nLmxlbmd0aCA+PSBsaW1pdCA/IHN0cmluZy5zbGljZShqLCBqICsgbGltaXQpIDogc3RyaW5nO1xuICAgICAgICB2YXIgYXJyID0gW107XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICB2YXIgYyA9IHNlZ21lbnQuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjID09PSAweDJEIC8vIC1cbiAgICAgICAgICAgICAgICB8fCBjID09PSAweDJFIC8vIC5cbiAgICAgICAgICAgICAgICB8fCBjID09PSAweDVGIC8vIF9cbiAgICAgICAgICAgICAgICB8fCBjID09PSAweDdFIC8vIH5cbiAgICAgICAgICAgICAgICB8fCAoYyA+PSAweDMwICYmIGMgPD0gMHgzOSkgLy8gMC05XG4gICAgICAgICAgICAgICAgfHwgKGMgPj0gMHg0MSAmJiBjIDw9IDB4NUEpIC8vIGEtelxuICAgICAgICAgICAgICAgIHx8IChjID49IDB4NjEgJiYgYyA8PSAweDdBKSAvLyBBLVpcbiAgICAgICAgICAgICAgICB8fCAoZm9ybWF0ID09PSBmb3JtYXRzLlJGQzE3MzggJiYgKGMgPT09IDB4MjggfHwgYyA9PT0gMHgyOSkpIC8vICggKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgYXJyW2Fyci5sZW5ndGhdID0gc2VnbWVudC5jaGFyQXQoaSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjIDwgMHg4MCkge1xuICAgICAgICAgICAgICAgIGFyclthcnIubGVuZ3RoXSA9IGhleFRhYmxlW2NdO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYyA8IDB4ODAwKSB7XG4gICAgICAgICAgICAgICAgYXJyW2Fyci5sZW5ndGhdID0gaGV4VGFibGVbMHhDMCB8IChjID4+IDYpXVxuICAgICAgICAgICAgICAgICAgICArIGhleFRhYmxlWzB4ODAgfCAoYyAmIDB4M0YpXTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGMgPCAweEQ4MDAgfHwgYyA+PSAweEUwMDApIHtcbiAgICAgICAgICAgICAgICBhcnJbYXJyLmxlbmd0aF0gPSBoZXhUYWJsZVsweEUwIHwgKGMgPj4gMTIpXVxuICAgICAgICAgICAgICAgICAgICArIGhleFRhYmxlWzB4ODAgfCAoKGMgPj4gNikgJiAweDNGKV1cbiAgICAgICAgICAgICAgICAgICAgKyBoZXhUYWJsZVsweDgwIHwgKGMgJiAweDNGKV07XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgIGMgPSAweDEwMDAwICsgKCgoYyAmIDB4M0ZGKSA8PCAxMCkgfCAoc2VnbWVudC5jaGFyQ29kZUF0KGkpICYgMHgzRkYpKTtcblxuICAgICAgICAgICAgYXJyW2Fyci5sZW5ndGhdID0gaGV4VGFibGVbMHhGMCB8IChjID4+IDE4KV1cbiAgICAgICAgICAgICAgICArIGhleFRhYmxlWzB4ODAgfCAoKGMgPj4gMTIpICYgMHgzRildXG4gICAgICAgICAgICAgICAgKyBoZXhUYWJsZVsweDgwIHwgKChjID4+IDYpICYgMHgzRildXG4gICAgICAgICAgICAgICAgKyBoZXhUYWJsZVsweDgwIHwgKGMgJiAweDNGKV07XG4gICAgICAgIH1cblxuICAgICAgICBvdXQgKz0gYXJyLmpvaW4oJycpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG59O1xuXG52YXIgY29tcGFjdCA9IGZ1bmN0aW9uIGNvbXBhY3QodmFsdWUpIHtcbiAgICB2YXIgcXVldWUgPSBbeyBvYmo6IHsgbzogdmFsdWUgfSwgcHJvcDogJ28nIH1dO1xuICAgIHZhciByZWZzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBpdGVtID0gcXVldWVbaV07XG4gICAgICAgIHZhciBvYmogPSBpdGVtLm9ialtpdGVtLnByb3BdO1xuXG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBrZXlzLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tqXTtcbiAgICAgICAgICAgIHZhciB2YWwgPSBvYmpba2V5XTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWwgIT09IG51bGwgJiYgcmVmcy5pbmRleE9mKHZhbCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcXVldWUucHVzaCh7IG9iajogb2JqLCBwcm9wOiBrZXkgfSk7XG4gICAgICAgICAgICAgICAgcmVmcy5wdXNoKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wYWN0UXVldWUocXVldWUpO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xufTtcblxudmFyIGlzUmVnRXhwID0gZnVuY3Rpb24gaXNSZWdFeHAob2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBSZWdFeHBdJztcbn07XG5cbnZhciBpc0J1ZmZlciA9IGZ1bmN0aW9uIGlzQnVmZmVyKG9iaikge1xuICAgIGlmICghb2JqIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gISEob2JqLmNvbnN0cnVjdG9yICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlciAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIob2JqKSk7XG59O1xuXG52YXIgY29tYmluZSA9IGZ1bmN0aW9uIGNvbWJpbmUoYSwgYikge1xuICAgIHJldHVybiBbXS5jb25jYXQoYSwgYik7XG59O1xuXG52YXIgbWF5YmVNYXAgPSBmdW5jdGlvbiBtYXliZU1hcCh2YWwsIGZuKSB7XG4gICAgaWYgKGlzQXJyYXkodmFsKSkge1xuICAgICAgICB2YXIgbWFwcGVkID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBtYXBwZWQucHVzaChmbih2YWxbaV0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFwcGVkO1xuICAgIH1cbiAgICByZXR1cm4gZm4odmFsKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGFycmF5VG9PYmplY3Q6IGFycmF5VG9PYmplY3QsXG4gICAgYXNzaWduOiBhc3NpZ24sXG4gICAgY29tYmluZTogY29tYmluZSxcbiAgICBjb21wYWN0OiBjb21wYWN0LFxuICAgIGRlY29kZTogZGVjb2RlLFxuICAgIGVuY29kZTogZW5jb2RlLFxuICAgIGlzQnVmZmVyOiBpc0J1ZmZlcixcbiAgICBpc1JlZ0V4cDogaXNSZWdFeHAsXG4gICAgbWF5YmVNYXA6IG1heWJlTWFwLFxuICAgIG1lcmdlOiBtZXJnZVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGdldFNpZGVDaGFubmVsID0gcmVxdWlyZSgnc2lkZS1jaGFubmVsJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgZm9ybWF0cyA9IHJlcXVpcmUoJy4vZm9ybWF0cycpO1xudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBhcnJheVByZWZpeEdlbmVyYXRvcnMgPSB7XG4gICAgYnJhY2tldHM6IGZ1bmN0aW9uIGJyYWNrZXRzKHByZWZpeCkge1xuICAgICAgICByZXR1cm4gcHJlZml4ICsgJ1tdJztcbiAgICB9LFxuICAgIGNvbW1hOiAnY29tbWEnLFxuICAgIGluZGljZXM6IGZ1bmN0aW9uIGluZGljZXMocHJlZml4LCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIHByZWZpeCArICdbJyArIGtleSArICddJztcbiAgICB9LFxuICAgIHJlcGVhdDogZnVuY3Rpb24gcmVwZWF0KHByZWZpeCkge1xuICAgICAgICByZXR1cm4gcHJlZml4O1xuICAgIH1cbn07XG5cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcbnZhciBwdXNoID0gQXJyYXkucHJvdG90eXBlLnB1c2g7XG52YXIgcHVzaFRvQXJyYXkgPSBmdW5jdGlvbiAoYXJyLCB2YWx1ZU9yQXJyYXkpIHtcbiAgICBwdXNoLmFwcGx5KGFyciwgaXNBcnJheSh2YWx1ZU9yQXJyYXkpID8gdmFsdWVPckFycmF5IDogW3ZhbHVlT3JBcnJheV0pO1xufTtcblxudmFyIHRvSVNPID0gRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc7XG5cbnZhciBkZWZhdWx0Rm9ybWF0ID0gZm9ybWF0c1snZGVmYXVsdCddO1xudmFyIGRlZmF1bHRzID0ge1xuICAgIGFkZFF1ZXJ5UHJlZml4OiBmYWxzZSxcbiAgICBhbGxvd0RvdHM6IGZhbHNlLFxuICAgIGFsbG93RW1wdHlBcnJheXM6IGZhbHNlLFxuICAgIGFycmF5Rm9ybWF0OiAnaW5kaWNlcycsXG4gICAgY2hhcnNldDogJ3V0Zi04JyxcbiAgICBjaGFyc2V0U2VudGluZWw6IGZhbHNlLFxuICAgIGNvbW1hUm91bmRUcmlwOiBmYWxzZSxcbiAgICBkZWxpbWl0ZXI6ICcmJyxcbiAgICBlbmNvZGU6IHRydWUsXG4gICAgZW5jb2RlRG90SW5LZXlzOiBmYWxzZSxcbiAgICBlbmNvZGVyOiB1dGlscy5lbmNvZGUsXG4gICAgZW5jb2RlVmFsdWVzT25seTogZmFsc2UsXG4gICAgZmlsdGVyOiB2b2lkIHVuZGVmaW5lZCxcbiAgICBmb3JtYXQ6IGRlZmF1bHRGb3JtYXQsXG4gICAgZm9ybWF0dGVyOiBmb3JtYXRzLmZvcm1hdHRlcnNbZGVmYXVsdEZvcm1hdF0sXG4gICAgLy8gZGVwcmVjYXRlZFxuICAgIGluZGljZXM6IGZhbHNlLFxuICAgIHNlcmlhbGl6ZURhdGU6IGZ1bmN0aW9uIHNlcmlhbGl6ZURhdGUoZGF0ZSkge1xuICAgICAgICByZXR1cm4gdG9JU08uY2FsbChkYXRlKTtcbiAgICB9LFxuICAgIHNraXBOdWxsczogZmFsc2UsXG4gICAgc3RyaWN0TnVsbEhhbmRsaW5nOiBmYWxzZVxufTtcblxudmFyIGlzTm9uTnVsbGlzaFByaW1pdGl2ZSA9IGZ1bmN0aW9uIGlzTm9uTnVsbGlzaFByaW1pdGl2ZSh2KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSAnc3RyaW5nJ1xuICAgICAgICB8fCB0eXBlb2YgdiA9PT0gJ251bWJlcidcbiAgICAgICAgfHwgdHlwZW9mIHYgPT09ICdib29sZWFuJ1xuICAgICAgICB8fCB0eXBlb2YgdiA9PT0gJ3N5bWJvbCdcbiAgICAgICAgfHwgdHlwZW9mIHYgPT09ICdiaWdpbnQnO1xufTtcblxudmFyIHNlbnRpbmVsID0ge307XG5cbnZhciBzdHJpbmdpZnkgPSBmdW5jdGlvbiBzdHJpbmdpZnkoXG4gICAgb2JqZWN0LFxuICAgIHByZWZpeCxcbiAgICBnZW5lcmF0ZUFycmF5UHJlZml4LFxuICAgIGNvbW1hUm91bmRUcmlwLFxuICAgIGFsbG93RW1wdHlBcnJheXMsXG4gICAgc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgIHNraXBOdWxscyxcbiAgICBlbmNvZGVEb3RJbktleXMsXG4gICAgZW5jb2RlcixcbiAgICBmaWx0ZXIsXG4gICAgc29ydCxcbiAgICBhbGxvd0RvdHMsXG4gICAgc2VyaWFsaXplRGF0ZSxcbiAgICBmb3JtYXQsXG4gICAgZm9ybWF0dGVyLFxuICAgIGVuY29kZVZhbHVlc09ubHksXG4gICAgY2hhcnNldCxcbiAgICBzaWRlQ2hhbm5lbFxuKSB7XG4gICAgdmFyIG9iaiA9IG9iamVjdDtcblxuICAgIHZhciB0bXBTYyA9IHNpZGVDaGFubmVsO1xuICAgIHZhciBzdGVwID0gMDtcbiAgICB2YXIgZmluZEZsYWcgPSBmYWxzZTtcbiAgICB3aGlsZSAoKHRtcFNjID0gdG1wU2MuZ2V0KHNlbnRpbmVsKSkgIT09IHZvaWQgdW5kZWZpbmVkICYmICFmaW5kRmxhZykge1xuICAgICAgICAvLyBXaGVyZSBvYmplY3QgbGFzdCBhcHBlYXJlZCBpbiB0aGUgcmVmIHRyZWVcbiAgICAgICAgdmFyIHBvcyA9IHRtcFNjLmdldChvYmplY3QpO1xuICAgICAgICBzdGVwICs9IDE7XG4gICAgICAgIGlmICh0eXBlb2YgcG9zICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gc3RlcCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdDeWNsaWMgb2JqZWN0IHZhbHVlJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZpbmRGbGFnID0gdHJ1ZTsgLy8gQnJlYWsgd2hpbGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRtcFNjLmdldChzZW50aW5lbCkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzdGVwID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZmlsdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG9iaiA9IGZpbHRlcihwcmVmaXgsIG9iaik7XG4gICAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIG9iaiA9IHNlcmlhbGl6ZURhdGUob2JqKTtcbiAgICB9IGVsc2UgaWYgKGdlbmVyYXRlQXJyYXlQcmVmaXggPT09ICdjb21tYScgJiYgaXNBcnJheShvYmopKSB7XG4gICAgICAgIG9iaiA9IHV0aWxzLm1heWJlTWFwKG9iaiwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZURhdGUodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob2JqID09PSBudWxsKSB7XG4gICAgICAgIGlmIChzdHJpY3ROdWxsSGFuZGxpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBlbmNvZGVyICYmICFlbmNvZGVWYWx1ZXNPbmx5ID8gZW5jb2RlcihwcmVmaXgsIGRlZmF1bHRzLmVuY29kZXIsIGNoYXJzZXQsICdrZXknLCBmb3JtYXQpIDogcHJlZml4O1xuICAgICAgICB9XG5cbiAgICAgICAgb2JqID0gJyc7XG4gICAgfVxuXG4gICAgaWYgKGlzTm9uTnVsbGlzaFByaW1pdGl2ZShvYmopIHx8IHV0aWxzLmlzQnVmZmVyKG9iaikpIHtcbiAgICAgICAgaWYgKGVuY29kZXIpIHtcbiAgICAgICAgICAgIHZhciBrZXlWYWx1ZSA9IGVuY29kZVZhbHVlc09ubHkgPyBwcmVmaXggOiBlbmNvZGVyKHByZWZpeCwgZGVmYXVsdHMuZW5jb2RlciwgY2hhcnNldCwgJ2tleScsIGZvcm1hdCk7XG4gICAgICAgICAgICByZXR1cm4gW2Zvcm1hdHRlcihrZXlWYWx1ZSkgKyAnPScgKyBmb3JtYXR0ZXIoZW5jb2RlcihvYmosIGRlZmF1bHRzLmVuY29kZXIsIGNoYXJzZXQsICd2YWx1ZScsIGZvcm1hdCkpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2Zvcm1hdHRlcihwcmVmaXgpICsgJz0nICsgZm9ybWF0dGVyKFN0cmluZyhvYmopKV07XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuXG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfVxuXG4gICAgdmFyIG9iaktleXM7XG4gICAgaWYgKGdlbmVyYXRlQXJyYXlQcmVmaXggPT09ICdjb21tYScgJiYgaXNBcnJheShvYmopKSB7XG4gICAgICAgIC8vIHdlIG5lZWQgdG8gam9pbiBlbGVtZW50cyBpblxuICAgICAgICBpZiAoZW5jb2RlVmFsdWVzT25seSAmJiBlbmNvZGVyKSB7XG4gICAgICAgICAgICBvYmogPSB1dGlscy5tYXliZU1hcChvYmosIGVuY29kZXIpO1xuICAgICAgICB9XG4gICAgICAgIG9iaktleXMgPSBbeyB2YWx1ZTogb2JqLmxlbmd0aCA+IDAgPyBvYmouam9pbignLCcpIHx8IG51bGwgOiB2b2lkIHVuZGVmaW5lZCB9XTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkoZmlsdGVyKSkge1xuICAgICAgICBvYmpLZXlzID0gZmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICAgICAgb2JqS2V5cyA9IHNvcnQgPyBrZXlzLnNvcnQoc29ydCkgOiBrZXlzO1xuICAgIH1cblxuICAgIHZhciBlbmNvZGVkUHJlZml4ID0gZW5jb2RlRG90SW5LZXlzID8gU3RyaW5nKHByZWZpeCkucmVwbGFjZSgvXFwuL2csICclMkUnKSA6IFN0cmluZyhwcmVmaXgpO1xuXG4gICAgdmFyIGFkanVzdGVkUHJlZml4ID0gY29tbWFSb3VuZFRyaXAgJiYgaXNBcnJheShvYmopICYmIG9iai5sZW5ndGggPT09IDEgPyBlbmNvZGVkUHJlZml4ICsgJ1tdJyA6IGVuY29kZWRQcmVmaXg7XG5cbiAgICBpZiAoYWxsb3dFbXB0eUFycmF5cyAmJiBpc0FycmF5KG9iaikgJiYgb2JqLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gYWRqdXN0ZWRQcmVmaXggKyAnW10nO1xuICAgIH1cblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgb2JqS2V5cy5sZW5ndGg7ICsraikge1xuICAgICAgICB2YXIga2V5ID0gb2JqS2V5c1tqXTtcbiAgICAgICAgdmFyIHZhbHVlID0gdHlwZW9mIGtleSA9PT0gJ29iamVjdCcgJiYga2V5ICYmIHR5cGVvZiBrZXkudmFsdWUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICA/IGtleS52YWx1ZVxuICAgICAgICAgICAgOiBvYmpba2V5XTtcblxuICAgICAgICBpZiAoc2tpcE51bGxzICYmIHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBlbmNvZGVkS2V5ID0gYWxsb3dEb3RzICYmIGVuY29kZURvdEluS2V5cyA/IFN0cmluZyhrZXkpLnJlcGxhY2UoL1xcLi9nLCAnJTJFJykgOiBTdHJpbmcoa2V5KTtcbiAgICAgICAgdmFyIGtleVByZWZpeCA9IGlzQXJyYXkob2JqKVxuICAgICAgICAgICAgPyB0eXBlb2YgZ2VuZXJhdGVBcnJheVByZWZpeCA9PT0gJ2Z1bmN0aW9uJyA/IGdlbmVyYXRlQXJyYXlQcmVmaXgoYWRqdXN0ZWRQcmVmaXgsIGVuY29kZWRLZXkpIDogYWRqdXN0ZWRQcmVmaXhcbiAgICAgICAgICAgIDogYWRqdXN0ZWRQcmVmaXggKyAoYWxsb3dEb3RzID8gJy4nICsgZW5jb2RlZEtleSA6ICdbJyArIGVuY29kZWRLZXkgKyAnXScpO1xuXG4gICAgICAgIHNpZGVDaGFubmVsLnNldChvYmplY3QsIHN0ZXApO1xuICAgICAgICB2YXIgdmFsdWVTaWRlQ2hhbm5lbCA9IGdldFNpZGVDaGFubmVsKCk7XG4gICAgICAgIHZhbHVlU2lkZUNoYW5uZWwuc2V0KHNlbnRpbmVsLCBzaWRlQ2hhbm5lbCk7XG4gICAgICAgIHB1c2hUb0FycmF5KHZhbHVlcywgc3RyaW5naWZ5KFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBrZXlQcmVmaXgsXG4gICAgICAgICAgICBnZW5lcmF0ZUFycmF5UHJlZml4LFxuICAgICAgICAgICAgY29tbWFSb3VuZFRyaXAsXG4gICAgICAgICAgICBhbGxvd0VtcHR5QXJyYXlzLFxuICAgICAgICAgICAgc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgICAgICAgICAgc2tpcE51bGxzLFxuICAgICAgICAgICAgZW5jb2RlRG90SW5LZXlzLFxuICAgICAgICAgICAgZ2VuZXJhdGVBcnJheVByZWZpeCA9PT0gJ2NvbW1hJyAmJiBlbmNvZGVWYWx1ZXNPbmx5ICYmIGlzQXJyYXkob2JqKSA/IG51bGwgOiBlbmNvZGVyLFxuICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgc29ydCxcbiAgICAgICAgICAgIGFsbG93RG90cyxcbiAgICAgICAgICAgIHNlcmlhbGl6ZURhdGUsXG4gICAgICAgICAgICBmb3JtYXQsXG4gICAgICAgICAgICBmb3JtYXR0ZXIsXG4gICAgICAgICAgICBlbmNvZGVWYWx1ZXNPbmx5LFxuICAgICAgICAgICAgY2hhcnNldCxcbiAgICAgICAgICAgIHZhbHVlU2lkZUNoYW5uZWxcbiAgICAgICAgKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlcztcbn07XG5cbnZhciBub3JtYWxpemVTdHJpbmdpZnlPcHRpb25zID0gZnVuY3Rpb24gbm9ybWFsaXplU3RyaW5naWZ5T3B0aW9ucyhvcHRzKSB7XG4gICAgaWYgKCFvcHRzKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0cztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdHMuYWxsb3dFbXB0eUFycmF5cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG9wdHMuYWxsb3dFbXB0eUFycmF5cyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2BhbGxvd0VtcHR5QXJyYXlzYCBvcHRpb24gY2FuIG9ubHkgYmUgYHRydWVgIG9yIGBmYWxzZWAsIHdoZW4gcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdHMuZW5jb2RlRG90SW5LZXlzICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygb3B0cy5lbmNvZGVEb3RJbktleXMgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgZW5jb2RlRG90SW5LZXlzYCBvcHRpb24gY2FuIG9ubHkgYmUgYHRydWVgIG9yIGBmYWxzZWAsIHdoZW4gcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5lbmNvZGVyICE9PSBudWxsICYmIHR5cGVvZiBvcHRzLmVuY29kZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBvcHRzLmVuY29kZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRW5jb2RlciBoYXMgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICB2YXIgY2hhcnNldCA9IG9wdHMuY2hhcnNldCB8fCBkZWZhdWx0cy5jaGFyc2V0O1xuICAgIGlmICh0eXBlb2Ygb3B0cy5jaGFyc2V0ICE9PSAndW5kZWZpbmVkJyAmJiBvcHRzLmNoYXJzZXQgIT09ICd1dGYtOCcgJiYgb3B0cy5jaGFyc2V0ICE9PSAnaXNvLTg4NTktMScpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGNoYXJzZXQgb3B0aW9uIG11c3QgYmUgZWl0aGVyIHV0Zi04LCBpc28tODg1OS0xLCBvciB1bmRlZmluZWQnKTtcbiAgICB9XG5cbiAgICB2YXIgZm9ybWF0ID0gZm9ybWF0c1snZGVmYXVsdCddO1xuICAgIGlmICh0eXBlb2Ygb3B0cy5mb3JtYXQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmICghaGFzLmNhbGwoZm9ybWF0cy5mb3JtYXR0ZXJzLCBvcHRzLmZvcm1hdCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZm9ybWF0IG9wdGlvbiBwcm92aWRlZC4nKTtcbiAgICAgICAgfVxuICAgICAgICBmb3JtYXQgPSBvcHRzLmZvcm1hdDtcbiAgICB9XG4gICAgdmFyIGZvcm1hdHRlciA9IGZvcm1hdHMuZm9ybWF0dGVyc1tmb3JtYXRdO1xuXG4gICAgdmFyIGZpbHRlciA9IGRlZmF1bHRzLmZpbHRlcjtcbiAgICBpZiAodHlwZW9mIG9wdHMuZmlsdGVyID09PSAnZnVuY3Rpb24nIHx8IGlzQXJyYXkob3B0cy5maWx0ZXIpKSB7XG4gICAgICAgIGZpbHRlciA9IG9wdHMuZmlsdGVyO1xuICAgIH1cblxuICAgIHZhciBhcnJheUZvcm1hdDtcbiAgICBpZiAob3B0cy5hcnJheUZvcm1hdCBpbiBhcnJheVByZWZpeEdlbmVyYXRvcnMpIHtcbiAgICAgICAgYXJyYXlGb3JtYXQgPSBvcHRzLmFycmF5Rm9ybWF0O1xuICAgIH0gZWxzZSBpZiAoJ2luZGljZXMnIGluIG9wdHMpIHtcbiAgICAgICAgYXJyYXlGb3JtYXQgPSBvcHRzLmluZGljZXMgPyAnaW5kaWNlcycgOiAncmVwZWF0JztcbiAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheUZvcm1hdCA9IGRlZmF1bHRzLmFycmF5Rm9ybWF0O1xuICAgIH1cblxuICAgIGlmICgnY29tbWFSb3VuZFRyaXAnIGluIG9wdHMgJiYgdHlwZW9mIG9wdHMuY29tbWFSb3VuZFRyaXAgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgY29tbWFSb3VuZFRyaXBgIG11c3QgYmUgYSBib29sZWFuLCBvciBhYnNlbnQnKTtcbiAgICB9XG5cbiAgICB2YXIgYWxsb3dEb3RzID0gdHlwZW9mIG9wdHMuYWxsb3dEb3RzID09PSAndW5kZWZpbmVkJyA/IG9wdHMuZW5jb2RlRG90SW5LZXlzID09PSB0cnVlID8gdHJ1ZSA6IGRlZmF1bHRzLmFsbG93RG90cyA6ICEhb3B0cy5hbGxvd0RvdHM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBhZGRRdWVyeVByZWZpeDogdHlwZW9mIG9wdHMuYWRkUXVlcnlQcmVmaXggPT09ICdib29sZWFuJyA/IG9wdHMuYWRkUXVlcnlQcmVmaXggOiBkZWZhdWx0cy5hZGRRdWVyeVByZWZpeCxcbiAgICAgICAgYWxsb3dEb3RzOiBhbGxvd0RvdHMsXG4gICAgICAgIGFsbG93RW1wdHlBcnJheXM6IHR5cGVvZiBvcHRzLmFsbG93RW1wdHlBcnJheXMgPT09ICdib29sZWFuJyA/ICEhb3B0cy5hbGxvd0VtcHR5QXJyYXlzIDogZGVmYXVsdHMuYWxsb3dFbXB0eUFycmF5cyxcbiAgICAgICAgYXJyYXlGb3JtYXQ6IGFycmF5Rm9ybWF0LFxuICAgICAgICBjaGFyc2V0OiBjaGFyc2V0LFxuICAgICAgICBjaGFyc2V0U2VudGluZWw6IHR5cGVvZiBvcHRzLmNoYXJzZXRTZW50aW5lbCA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5jaGFyc2V0U2VudGluZWwgOiBkZWZhdWx0cy5jaGFyc2V0U2VudGluZWwsXG4gICAgICAgIGNvbW1hUm91bmRUcmlwOiAhIW9wdHMuY29tbWFSb3VuZFRyaXAsXG4gICAgICAgIGRlbGltaXRlcjogdHlwZW9mIG9wdHMuZGVsaW1pdGVyID09PSAndW5kZWZpbmVkJyA/IGRlZmF1bHRzLmRlbGltaXRlciA6IG9wdHMuZGVsaW1pdGVyLFxuICAgICAgICBlbmNvZGU6IHR5cGVvZiBvcHRzLmVuY29kZSA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5lbmNvZGUgOiBkZWZhdWx0cy5lbmNvZGUsXG4gICAgICAgIGVuY29kZURvdEluS2V5czogdHlwZW9mIG9wdHMuZW5jb2RlRG90SW5LZXlzID09PSAnYm9vbGVhbicgPyBvcHRzLmVuY29kZURvdEluS2V5cyA6IGRlZmF1bHRzLmVuY29kZURvdEluS2V5cyxcbiAgICAgICAgZW5jb2RlcjogdHlwZW9mIG9wdHMuZW5jb2RlciA9PT0gJ2Z1bmN0aW9uJyA/IG9wdHMuZW5jb2RlciA6IGRlZmF1bHRzLmVuY29kZXIsXG4gICAgICAgIGVuY29kZVZhbHVlc09ubHk6IHR5cGVvZiBvcHRzLmVuY29kZVZhbHVlc09ubHkgPT09ICdib29sZWFuJyA/IG9wdHMuZW5jb2RlVmFsdWVzT25seSA6IGRlZmF1bHRzLmVuY29kZVZhbHVlc09ubHksXG4gICAgICAgIGZpbHRlcjogZmlsdGVyLFxuICAgICAgICBmb3JtYXQ6IGZvcm1hdCxcbiAgICAgICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIsXG4gICAgICAgIHNlcmlhbGl6ZURhdGU6IHR5cGVvZiBvcHRzLnNlcmlhbGl6ZURhdGUgPT09ICdmdW5jdGlvbicgPyBvcHRzLnNlcmlhbGl6ZURhdGUgOiBkZWZhdWx0cy5zZXJpYWxpemVEYXRlLFxuICAgICAgICBza2lwTnVsbHM6IHR5cGVvZiBvcHRzLnNraXBOdWxscyA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5za2lwTnVsbHMgOiBkZWZhdWx0cy5za2lwTnVsbHMsXG4gICAgICAgIHNvcnQ6IHR5cGVvZiBvcHRzLnNvcnQgPT09ICdmdW5jdGlvbicgPyBvcHRzLnNvcnQgOiBudWxsLFxuICAgICAgICBzdHJpY3ROdWxsSGFuZGxpbmc6IHR5cGVvZiBvcHRzLnN0cmljdE51bGxIYW5kbGluZyA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5zdHJpY3ROdWxsSGFuZGxpbmcgOiBkZWZhdWx0cy5zdHJpY3ROdWxsSGFuZGxpbmdcbiAgICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBvcHRzKSB7XG4gICAgdmFyIG9iaiA9IG9iamVjdDtcbiAgICB2YXIgb3B0aW9ucyA9IG5vcm1hbGl6ZVN0cmluZ2lmeU9wdGlvbnMob3B0cyk7XG5cbiAgICB2YXIgb2JqS2V5cztcbiAgICB2YXIgZmlsdGVyO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmaWx0ZXIgPSBvcHRpb25zLmZpbHRlcjtcbiAgICAgICAgb2JqID0gZmlsdGVyKCcnLCBvYmopO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShvcHRpb25zLmZpbHRlcikpIHtcbiAgICAgICAgZmlsdGVyID0gb3B0aW9ucy5maWx0ZXI7XG4gICAgICAgIG9iaktleXMgPSBmaWx0ZXI7XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBbXTtcblxuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHZhciBnZW5lcmF0ZUFycmF5UHJlZml4ID0gYXJyYXlQcmVmaXhHZW5lcmF0b3JzW29wdGlvbnMuYXJyYXlGb3JtYXRdO1xuICAgIHZhciBjb21tYVJvdW5kVHJpcCA9IGdlbmVyYXRlQXJyYXlQcmVmaXggPT09ICdjb21tYScgJiYgb3B0aW9ucy5jb21tYVJvdW5kVHJpcDtcblxuICAgIGlmICghb2JqS2V5cykge1xuICAgICAgICBvYmpLZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zb3J0KSB7XG4gICAgICAgIG9iaktleXMuc29ydChvcHRpb25zLnNvcnQpO1xuICAgIH1cblxuICAgIHZhciBzaWRlQ2hhbm5lbCA9IGdldFNpZGVDaGFubmVsKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmpLZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBrZXkgPSBvYmpLZXlzW2ldO1xuICAgICAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTtcblxuICAgICAgICBpZiAob3B0aW9ucy5za2lwTnVsbHMgJiYgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHB1c2hUb0FycmF5KGtleXMsIHN0cmluZ2lmeShcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgZ2VuZXJhdGVBcnJheVByZWZpeCxcbiAgICAgICAgICAgIGNvbW1hUm91bmRUcmlwLFxuICAgICAgICAgICAgb3B0aW9ucy5hbGxvd0VtcHR5QXJyYXlzLFxuICAgICAgICAgICAgb3B0aW9ucy5zdHJpY3ROdWxsSGFuZGxpbmcsXG4gICAgICAgICAgICBvcHRpb25zLnNraXBOdWxscyxcbiAgICAgICAgICAgIG9wdGlvbnMuZW5jb2RlRG90SW5LZXlzLFxuICAgICAgICAgICAgb3B0aW9ucy5lbmNvZGUgPyBvcHRpb25zLmVuY29kZXIgOiBudWxsLFxuICAgICAgICAgICAgb3B0aW9ucy5maWx0ZXIsXG4gICAgICAgICAgICBvcHRpb25zLnNvcnQsXG4gICAgICAgICAgICBvcHRpb25zLmFsbG93RG90cyxcbiAgICAgICAgICAgIG9wdGlvbnMuc2VyaWFsaXplRGF0ZSxcbiAgICAgICAgICAgIG9wdGlvbnMuZm9ybWF0LFxuICAgICAgICAgICAgb3B0aW9ucy5mb3JtYXR0ZXIsXG4gICAgICAgICAgICBvcHRpb25zLmVuY29kZVZhbHVlc09ubHksXG4gICAgICAgICAgICBvcHRpb25zLmNoYXJzZXQsXG4gICAgICAgICAgICBzaWRlQ2hhbm5lbFxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICB2YXIgam9pbmVkID0ga2V5cy5qb2luKG9wdGlvbnMuZGVsaW1pdGVyKTtcbiAgICB2YXIgcHJlZml4ID0gb3B0aW9ucy5hZGRRdWVyeVByZWZpeCA9PT0gdHJ1ZSA/ICc/JyA6ICcnO1xuXG4gICAgaWYgKG9wdGlvbnMuY2hhcnNldFNlbnRpbmVsKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNoYXJzZXQgPT09ICdpc28tODg1OS0xJykge1xuICAgICAgICAgICAgLy8gZW5jb2RlVVJJQ29tcG9uZW50KCcmIzEwMDAzOycpLCB0aGUgXCJudW1lcmljIGVudGl0eVwiIHJlcHJlc2VudGF0aW9uIG9mIGEgY2hlY2ttYXJrXG4gICAgICAgICAgICBwcmVmaXggKz0gJ3V0Zjg9JTI2JTIzMTAwMDMlM0ImJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGVuY29kZVVSSUNvbXBvbmVudCgn4pyTJylcbiAgICAgICAgICAgIHByZWZpeCArPSAndXRmOD0lRTIlOUMlOTMmJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBqb2luZWQubGVuZ3RoID4gMCA/IHByZWZpeCArIGpvaW5lZCA6ICcnO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG52YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxudmFyIGRlZmF1bHRzID0ge1xuICAgIGFsbG93RG90czogZmFsc2UsXG4gICAgYWxsb3dFbXB0eUFycmF5czogZmFsc2UsXG4gICAgYWxsb3dQcm90b3R5cGVzOiBmYWxzZSxcbiAgICBhbGxvd1NwYXJzZTogZmFsc2UsXG4gICAgYXJyYXlMaW1pdDogMjAsXG4gICAgY2hhcnNldDogJ3V0Zi04JyxcbiAgICBjaGFyc2V0U2VudGluZWw6IGZhbHNlLFxuICAgIGNvbW1hOiBmYWxzZSxcbiAgICBkZWNvZGVEb3RJbktleXM6IGZhbHNlLFxuICAgIGRlY29kZXI6IHV0aWxzLmRlY29kZSxcbiAgICBkZWxpbWl0ZXI6ICcmJyxcbiAgICBkZXB0aDogNSxcbiAgICBkdXBsaWNhdGVzOiAnY29tYmluZScsXG4gICAgaWdub3JlUXVlcnlQcmVmaXg6IGZhbHNlLFxuICAgIGludGVycHJldE51bWVyaWNFbnRpdGllczogZmFsc2UsXG4gICAgcGFyYW1ldGVyTGltaXQ6IDEwMDAsXG4gICAgcGFyc2VBcnJheXM6IHRydWUsXG4gICAgcGxhaW5PYmplY3RzOiBmYWxzZSxcbiAgICBzdHJpY3REZXB0aDogZmFsc2UsXG4gICAgc3RyaWN0TnVsbEhhbmRsaW5nOiBmYWxzZSxcbiAgICB0aHJvd09uTGltaXRFeGNlZWRlZDogZmFsc2Vcbn07XG5cbnZhciBpbnRlcnByZXROdW1lcmljRW50aXRpZXMgPSBmdW5jdGlvbiAoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8mIyhcXGQrKTsvZywgZnVuY3Rpb24gKCQwLCBudW1iZXJTdHIpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQobnVtYmVyU3RyLCAxMCkpO1xuICAgIH0pO1xufTtcblxudmFyIHBhcnNlQXJyYXlWYWx1ZSA9IGZ1bmN0aW9uICh2YWwsIG9wdGlvbnMsIGN1cnJlbnRBcnJheUxlbmd0aCkge1xuICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgJiYgb3B0aW9ucy5jb21tYSAmJiB2YWwuaW5kZXhPZignLCcpID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHZhbC5zcGxpdCgnLCcpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnRocm93T25MaW1pdEV4Y2VlZGVkICYmIGN1cnJlbnRBcnJheUxlbmd0aCA+PSBvcHRpb25zLmFycmF5TGltaXQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0FycmF5IGxpbWl0IGV4Y2VlZGVkLiBPbmx5ICcgKyBvcHRpb25zLmFycmF5TGltaXQgKyAnIGVsZW1lbnQnICsgKG9wdGlvbnMuYXJyYXlMaW1pdCA9PT0gMSA/ICcnIDogJ3MnKSArICcgYWxsb3dlZCBpbiBhbiBhcnJheS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsO1xufTtcblxuLy8gVGhpcyBpcyB3aGF0IGJyb3dzZXJzIHdpbGwgc3VibWl0IHdoZW4gdGhlIOKckyBjaGFyYWN0ZXIgb2NjdXJzIGluIGFuXG4vLyBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgYm9keSBhbmQgdGhlIGVuY29kaW5nIG9mIHRoZSBwYWdlIGNvbnRhaW5pbmdcbi8vIHRoZSBmb3JtIGlzIGlzby04ODU5LTEsIG9yIHdoZW4gdGhlIHN1Ym1pdHRlZCBmb3JtIGhhcyBhbiBhY2NlcHQtY2hhcnNldFxuLy8gYXR0cmlidXRlIG9mIGlzby04ODU5LTEuIFByZXN1bWFibHkgYWxzbyB3aXRoIG90aGVyIGNoYXJzZXRzIHRoYXQgZG8gbm90IGNvbnRhaW5cbi8vIHRoZSDinJMgY2hhcmFjdGVyLCBzdWNoIGFzIHVzLWFzY2lpLlxudmFyIGlzb1NlbnRpbmVsID0gJ3V0Zjg9JTI2JTIzMTAwMDMlM0InOyAvLyBlbmNvZGVVUklDb21wb25lbnQoJyYjMTAwMDM7JylcblxuLy8gVGhlc2UgYXJlIHRoZSBwZXJjZW50LWVuY29kZWQgdXRmLTggb2N0ZXRzIHJlcHJlc2VudGluZyBhIGNoZWNrbWFyaywgaW5kaWNhdGluZyB0aGF0IHRoZSByZXF1ZXN0IGFjdHVhbGx5IGlzIHV0Zi04IGVuY29kZWQuXG52YXIgY2hhcnNldFNlbnRpbmVsID0gJ3V0Zjg9JUUyJTlDJTkzJzsgLy8gZW5jb2RlVVJJQ29tcG9uZW50KCfinJMnKVxuXG52YXIgcGFyc2VWYWx1ZXMgPSBmdW5jdGlvbiBwYXJzZVF1ZXJ5U3RyaW5nVmFsdWVzKHN0ciwgb3B0aW9ucykge1xuICAgIHZhciBvYmogPSB7IF9fcHJvdG9fXzogbnVsbCB9O1xuXG4gICAgdmFyIGNsZWFuU3RyID0gb3B0aW9ucy5pZ25vcmVRdWVyeVByZWZpeCA/IHN0ci5yZXBsYWNlKC9eXFw/LywgJycpIDogc3RyO1xuICAgIGNsZWFuU3RyID0gY2xlYW5TdHIucmVwbGFjZSgvJTVCL2dpLCAnWycpLnJlcGxhY2UoLyU1RC9naSwgJ10nKTtcblxuICAgIHZhciBsaW1pdCA9IG9wdGlvbnMucGFyYW1ldGVyTGltaXQgPT09IEluZmluaXR5ID8gdW5kZWZpbmVkIDogb3B0aW9ucy5wYXJhbWV0ZXJMaW1pdDtcbiAgICB2YXIgcGFydHMgPSBjbGVhblN0ci5zcGxpdChcbiAgICAgICAgb3B0aW9ucy5kZWxpbWl0ZXIsXG4gICAgICAgIG9wdGlvbnMudGhyb3dPbkxpbWl0RXhjZWVkZWQgPyBsaW1pdCArIDEgOiBsaW1pdFxuICAgICk7XG5cbiAgICBpZiAob3B0aW9ucy50aHJvd09uTGltaXRFeGNlZWRlZCAmJiBwYXJ0cy5sZW5ndGggPiBsaW1pdCkge1xuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignUGFyYW1ldGVyIGxpbWl0IGV4Y2VlZGVkLiBPbmx5ICcgKyBsaW1pdCArICcgcGFyYW1ldGVyJyArIChsaW1pdCA9PT0gMSA/ICcnIDogJ3MnKSArICcgYWxsb3dlZC4nKTtcbiAgICB9XG5cbiAgICB2YXIgc2tpcEluZGV4ID0gLTE7IC8vIEtlZXAgdHJhY2sgb2Ygd2hlcmUgdGhlIHV0Zjggc2VudGluZWwgd2FzIGZvdW5kXG4gICAgdmFyIGk7XG5cbiAgICB2YXIgY2hhcnNldCA9IG9wdGlvbnMuY2hhcnNldDtcbiAgICBpZiAob3B0aW9ucy5jaGFyc2V0U2VudGluZWwpIHtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBpZiAocGFydHNbaV0uaW5kZXhPZigndXRmOD0nKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJ0c1tpXSA9PT0gY2hhcnNldFNlbnRpbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndXRmLTgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFydHNbaV0gPT09IGlzb1NlbnRpbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAnaXNvLTg4NTktMSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNraXBJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgaSA9IHBhcnRzLmxlbmd0aDsgLy8gVGhlIGVzbGludCBzZXR0aW5ncyBkbyBub3QgYWxsb3cgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKGkgPT09IHNraXBJbmRleCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTtcblxuICAgICAgICB2YXIgYnJhY2tldEVxdWFsc1BvcyA9IHBhcnQuaW5kZXhPZignXT0nKTtcbiAgICAgICAgdmFyIHBvcyA9IGJyYWNrZXRFcXVhbHNQb3MgPT09IC0xID8gcGFydC5pbmRleE9mKCc9JykgOiBicmFja2V0RXF1YWxzUG9zICsgMTtcblxuICAgICAgICB2YXIga2V5O1xuICAgICAgICB2YXIgdmFsO1xuICAgICAgICBpZiAocG9zID09PSAtMSkge1xuICAgICAgICAgICAga2V5ID0gb3B0aW9ucy5kZWNvZGVyKHBhcnQsIGRlZmF1bHRzLmRlY29kZXIsIGNoYXJzZXQsICdrZXknKTtcbiAgICAgICAgICAgIHZhbCA9IG9wdGlvbnMuc3RyaWN0TnVsbEhhbmRsaW5nID8gbnVsbCA6ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAga2V5ID0gb3B0aW9ucy5kZWNvZGVyKHBhcnQuc2xpY2UoMCwgcG9zKSwgZGVmYXVsdHMuZGVjb2RlciwgY2hhcnNldCwgJ2tleScpO1xuXG4gICAgICAgICAgICB2YWwgPSB1dGlscy5tYXliZU1hcChcbiAgICAgICAgICAgICAgICBwYXJzZUFycmF5VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgIHBhcnQuc2xpY2UocG9zICsgMSksXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGlzQXJyYXkob2JqW2tleV0pID8gb2JqW2tleV0ubGVuZ3RoIDogMFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKGVuY29kZWRWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZGVjb2RlcihlbmNvZGVkVmFsLCBkZWZhdWx0cy5kZWNvZGVyLCBjaGFyc2V0LCAndmFsdWUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbCAmJiBvcHRpb25zLmludGVycHJldE51bWVyaWNFbnRpdGllcyAmJiBjaGFyc2V0ID09PSAnaXNvLTg4NTktMScpIHtcbiAgICAgICAgICAgIHZhbCA9IGludGVycHJldE51bWVyaWNFbnRpdGllcyhTdHJpbmcodmFsKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFydC5pbmRleE9mKCdbXT0nKSA+IC0xKSB7XG4gICAgICAgICAgICB2YWwgPSBpc0FycmF5KHZhbCkgPyBbdmFsXSA6IHZhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBleGlzdGluZyA9IGhhcy5jYWxsKG9iaiwga2V5KTtcbiAgICAgICAgaWYgKGV4aXN0aW5nICYmIG9wdGlvbnMuZHVwbGljYXRlcyA9PT0gJ2NvbWJpbmUnKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHV0aWxzLmNvbWJpbmUob2JqW2tleV0sIHZhbCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWV4aXN0aW5nIHx8IG9wdGlvbnMuZHVwbGljYXRlcyA9PT0gJ2xhc3QnKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG59O1xuXG52YXIgcGFyc2VPYmplY3QgPSBmdW5jdGlvbiAoY2hhaW4sIHZhbCwgb3B0aW9ucywgdmFsdWVzUGFyc2VkKSB7XG4gICAgdmFyIGN1cnJlbnRBcnJheUxlbmd0aCA9IDA7XG4gICAgaWYgKGNoYWluLmxlbmd0aCA+IDAgJiYgY2hhaW5bY2hhaW4ubGVuZ3RoIC0gMV0gPT09ICdbXScpIHtcbiAgICAgICAgdmFyIHBhcmVudEtleSA9IGNoYWluLnNsaWNlKDAsIC0xKS5qb2luKCcnKTtcbiAgICAgICAgY3VycmVudEFycmF5TGVuZ3RoID0gQXJyYXkuaXNBcnJheSh2YWwpICYmIHZhbFtwYXJlbnRLZXldID8gdmFsW3BhcmVudEtleV0ubGVuZ3RoIDogMDtcbiAgICB9XG5cbiAgICB2YXIgbGVhZiA9IHZhbHVlc1BhcnNlZCA/IHZhbCA6IHBhcnNlQXJyYXlWYWx1ZSh2YWwsIG9wdGlvbnMsIGN1cnJlbnRBcnJheUxlbmd0aCk7XG5cbiAgICBmb3IgKHZhciBpID0gY2hhaW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIG9iajtcbiAgICAgICAgdmFyIHJvb3QgPSBjaGFpbltpXTtcblxuICAgICAgICBpZiAocm9vdCA9PT0gJ1tdJyAmJiBvcHRpb25zLnBhcnNlQXJyYXlzKSB7XG4gICAgICAgICAgICBvYmogPSBvcHRpb25zLmFsbG93RW1wdHlBcnJheXMgJiYgKGxlYWYgPT09ICcnIHx8IChvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyAmJiBsZWFmID09PSBudWxsKSlcbiAgICAgICAgICAgICAgICA/IFtdXG4gICAgICAgICAgICAgICAgOiB1dGlscy5jb21iaW5lKFtdLCBsZWFmKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9iaiA9IG9wdGlvbnMucGxhaW5PYmplY3RzID8geyBfX3Byb3RvX186IG51bGwgfSA6IHt9O1xuICAgICAgICAgICAgdmFyIGNsZWFuUm9vdCA9IHJvb3QuY2hhckF0KDApID09PSAnWycgJiYgcm9vdC5jaGFyQXQocm9vdC5sZW5ndGggLSAxKSA9PT0gJ10nID8gcm9vdC5zbGljZSgxLCAtMSkgOiByb290O1xuICAgICAgICAgICAgdmFyIGRlY29kZWRSb290ID0gb3B0aW9ucy5kZWNvZGVEb3RJbktleXMgPyBjbGVhblJvb3QucmVwbGFjZSgvJTJFL2csICcuJykgOiBjbGVhblJvb3Q7XG4gICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZUludChkZWNvZGVkUm9vdCwgMTApO1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnBhcnNlQXJyYXlzICYmIGRlY29kZWRSb290ID09PSAnJykge1xuICAgICAgICAgICAgICAgIG9iaiA9IHsgMDogbGVhZiB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAhaXNOYU4oaW5kZXgpXG4gICAgICAgICAgICAgICAgJiYgcm9vdCAhPT0gZGVjb2RlZFJvb3RcbiAgICAgICAgICAgICAgICAmJiBTdHJpbmcoaW5kZXgpID09PSBkZWNvZGVkUm9vdFxuICAgICAgICAgICAgICAgICYmIGluZGV4ID49IDBcbiAgICAgICAgICAgICAgICAmJiAob3B0aW9ucy5wYXJzZUFycmF5cyAmJiBpbmRleCA8PSBvcHRpb25zLmFycmF5TGltaXQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBvYmogPSBbXTtcbiAgICAgICAgICAgICAgICBvYmpbaW5kZXhdID0gbGVhZjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVjb2RlZFJvb3QgIT09ICdfX3Byb3RvX18nKSB7XG4gICAgICAgICAgICAgICAgb2JqW2RlY29kZWRSb290XSA9IGxlYWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZWFmID0gb2JqO1xuICAgIH1cblxuICAgIHJldHVybiBsZWFmO1xufTtcblxudmFyIHBhcnNlS2V5cyA9IGZ1bmN0aW9uIHBhcnNlUXVlcnlTdHJpbmdLZXlzKGdpdmVuS2V5LCB2YWwsIG9wdGlvbnMsIHZhbHVlc1BhcnNlZCkge1xuICAgIGlmICghZ2l2ZW5LZXkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRyYW5zZm9ybSBkb3Qgbm90YXRpb24gdG8gYnJhY2tldCBub3RhdGlvblxuICAgIHZhciBrZXkgPSBvcHRpb25zLmFsbG93RG90cyA/IGdpdmVuS2V5LnJlcGxhY2UoL1xcLihbXi5bXSspL2csICdbJDFdJykgOiBnaXZlbktleTtcblxuICAgIC8vIFRoZSByZWdleCBjaHVua3NcblxuICAgIHZhciBicmFja2V0cyA9IC8oXFxbW15bXFxdXSpdKS87XG4gICAgdmFyIGNoaWxkID0gLyhcXFtbXltcXF1dKl0pL2c7XG5cbiAgICAvLyBHZXQgdGhlIHBhcmVudFxuXG4gICAgdmFyIHNlZ21lbnQgPSBvcHRpb25zLmRlcHRoID4gMCAmJiBicmFja2V0cy5leGVjKGtleSk7XG4gICAgdmFyIHBhcmVudCA9IHNlZ21lbnQgPyBrZXkuc2xpY2UoMCwgc2VnbWVudC5pbmRleCkgOiBrZXk7XG5cbiAgICAvLyBTdGFzaCB0aGUgcGFyZW50IGlmIGl0IGV4aXN0c1xuXG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIC8vIElmIHdlIGFyZW4ndCB1c2luZyBwbGFpbiBvYmplY3RzLCBvcHRpb25hbGx5IHByZWZpeCBrZXlzIHRoYXQgd291bGQgb3ZlcndyaXRlIG9iamVjdCBwcm90b3R5cGUgcHJvcGVydGllc1xuICAgICAgICBpZiAoIW9wdGlvbnMucGxhaW5PYmplY3RzICYmIGhhcy5jYWxsKE9iamVjdC5wcm90b3R5cGUsIHBhcmVudCkpIHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBrZXlzLnB1c2gocGFyZW50KTtcbiAgICB9XG5cbiAgICAvLyBMb29wIHRocm91Z2ggY2hpbGRyZW4gYXBwZW5kaW5nIHRvIHRoZSBhcnJheSB1bnRpbCB3ZSBoaXQgZGVwdGhcblxuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAob3B0aW9ucy5kZXB0aCA+IDAgJiYgKHNlZ21lbnQgPSBjaGlsZC5leGVjKGtleSkpICE9PSBudWxsICYmIGkgPCBvcHRpb25zLmRlcHRoKSB7XG4gICAgICAgIGkgKz0gMTtcbiAgICAgICAgaWYgKCFvcHRpb25zLnBsYWluT2JqZWN0cyAmJiBoYXMuY2FsbChPYmplY3QucHJvdG90eXBlLCBzZWdtZW50WzFdLnNsaWNlKDEsIC0xKSkpIHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAga2V5cy5wdXNoKHNlZ21lbnRbMV0pO1xuICAgIH1cblxuICAgIC8vIElmIHRoZXJlJ3MgYSByZW1haW5kZXIsIGNoZWNrIHN0cmljdERlcHRoIG9wdGlvbiBmb3IgdGhyb3csIGVsc2UganVzdCBhZGQgd2hhdGV2ZXIgaXMgbGVmdFxuXG4gICAgaWYgKHNlZ21lbnQpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuc3RyaWN0RGVwdGggPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnB1dCBkZXB0aCBleGNlZWRlZCBkZXB0aCBvcHRpb24gb2YgJyArIG9wdGlvbnMuZGVwdGggKyAnIGFuZCBzdHJpY3REZXB0aCBpcyB0cnVlJyk7XG4gICAgICAgIH1cbiAgICAgICAga2V5cy5wdXNoKCdbJyArIGtleS5zbGljZShzZWdtZW50LmluZGV4KSArICddJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlT2JqZWN0KGtleXMsIHZhbCwgb3B0aW9ucywgdmFsdWVzUGFyc2VkKTtcbn07XG5cbnZhciBub3JtYWxpemVQYXJzZU9wdGlvbnMgPSBmdW5jdGlvbiBub3JtYWxpemVQYXJzZU9wdGlvbnMob3B0cykge1xuICAgIGlmICghb3B0cykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdHM7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRzLmFsbG93RW1wdHlBcnJheXMgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBvcHRzLmFsbG93RW1wdHlBcnJheXMgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgYWxsb3dFbXB0eUFycmF5c2Agb3B0aW9uIGNhbiBvbmx5IGJlIGB0cnVlYCBvciBgZmFsc2VgLCB3aGVuIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRzLmRlY29kZURvdEluS2V5cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG9wdHMuZGVjb2RlRG90SW5LZXlzICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYGRlY29kZURvdEluS2V5c2Agb3B0aW9uIGNhbiBvbmx5IGJlIGB0cnVlYCBvciBgZmFsc2VgLCB3aGVuIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdHMuZGVjb2RlciAhPT0gbnVsbCAmJiB0eXBlb2Ygb3B0cy5kZWNvZGVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygb3B0cy5kZWNvZGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0RlY29kZXIgaGFzIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRzLmNoYXJzZXQgIT09ICd1bmRlZmluZWQnICYmIG9wdHMuY2hhcnNldCAhPT0gJ3V0Zi04JyAmJiBvcHRzLmNoYXJzZXQgIT09ICdpc28tODg1OS0xJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgY2hhcnNldCBvcHRpb24gbXVzdCBiZSBlaXRoZXIgdXRmLTgsIGlzby04ODU5LTEsIG9yIHVuZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0cy50aHJvd09uTGltaXRFeGNlZWRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG9wdHMudGhyb3dPbkxpbWl0RXhjZWVkZWQgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgdGhyb3dPbkxpbWl0RXhjZWVkZWRgIG9wdGlvbiBtdXN0IGJlIGEgYm9vbGVhbicpO1xuICAgIH1cblxuICAgIHZhciBjaGFyc2V0ID0gdHlwZW9mIG9wdHMuY2hhcnNldCA9PT0gJ3VuZGVmaW5lZCcgPyBkZWZhdWx0cy5jaGFyc2V0IDogb3B0cy5jaGFyc2V0O1xuXG4gICAgdmFyIGR1cGxpY2F0ZXMgPSB0eXBlb2Ygb3B0cy5kdXBsaWNhdGVzID09PSAndW5kZWZpbmVkJyA/IGRlZmF1bHRzLmR1cGxpY2F0ZXMgOiBvcHRzLmR1cGxpY2F0ZXM7XG5cbiAgICBpZiAoZHVwbGljYXRlcyAhPT0gJ2NvbWJpbmUnICYmIGR1cGxpY2F0ZXMgIT09ICdmaXJzdCcgJiYgZHVwbGljYXRlcyAhPT0gJ2xhc3QnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBkdXBsaWNhdGVzIG9wdGlvbiBtdXN0IGJlIGVpdGhlciBjb21iaW5lLCBmaXJzdCwgb3IgbGFzdCcpO1xuICAgIH1cblxuICAgIHZhciBhbGxvd0RvdHMgPSB0eXBlb2Ygb3B0cy5hbGxvd0RvdHMgPT09ICd1bmRlZmluZWQnID8gb3B0cy5kZWNvZGVEb3RJbktleXMgPT09IHRydWUgPyB0cnVlIDogZGVmYXVsdHMuYWxsb3dEb3RzIDogISFvcHRzLmFsbG93RG90cztcblxuICAgIHJldHVybiB7XG4gICAgICAgIGFsbG93RG90czogYWxsb3dEb3RzLFxuICAgICAgICBhbGxvd0VtcHR5QXJyYXlzOiB0eXBlb2Ygb3B0cy5hbGxvd0VtcHR5QXJyYXlzID09PSAnYm9vbGVhbicgPyAhIW9wdHMuYWxsb3dFbXB0eUFycmF5cyA6IGRlZmF1bHRzLmFsbG93RW1wdHlBcnJheXMsXG4gICAgICAgIGFsbG93UHJvdG90eXBlczogdHlwZW9mIG9wdHMuYWxsb3dQcm90b3R5cGVzID09PSAnYm9vbGVhbicgPyBvcHRzLmFsbG93UHJvdG90eXBlcyA6IGRlZmF1bHRzLmFsbG93UHJvdG90eXBlcyxcbiAgICAgICAgYWxsb3dTcGFyc2U6IHR5cGVvZiBvcHRzLmFsbG93U3BhcnNlID09PSAnYm9vbGVhbicgPyBvcHRzLmFsbG93U3BhcnNlIDogZGVmYXVsdHMuYWxsb3dTcGFyc2UsXG4gICAgICAgIGFycmF5TGltaXQ6IHR5cGVvZiBvcHRzLmFycmF5TGltaXQgPT09ICdudW1iZXInID8gb3B0cy5hcnJheUxpbWl0IDogZGVmYXVsdHMuYXJyYXlMaW1pdCxcbiAgICAgICAgY2hhcnNldDogY2hhcnNldCxcbiAgICAgICAgY2hhcnNldFNlbnRpbmVsOiB0eXBlb2Ygb3B0cy5jaGFyc2V0U2VudGluZWwgPT09ICdib29sZWFuJyA/IG9wdHMuY2hhcnNldFNlbnRpbmVsIDogZGVmYXVsdHMuY2hhcnNldFNlbnRpbmVsLFxuICAgICAgICBjb21tYTogdHlwZW9mIG9wdHMuY29tbWEgPT09ICdib29sZWFuJyA/IG9wdHMuY29tbWEgOiBkZWZhdWx0cy5jb21tYSxcbiAgICAgICAgZGVjb2RlRG90SW5LZXlzOiB0eXBlb2Ygb3B0cy5kZWNvZGVEb3RJbktleXMgPT09ICdib29sZWFuJyA/IG9wdHMuZGVjb2RlRG90SW5LZXlzIDogZGVmYXVsdHMuZGVjb2RlRG90SW5LZXlzLFxuICAgICAgICBkZWNvZGVyOiB0eXBlb2Ygb3B0cy5kZWNvZGVyID09PSAnZnVuY3Rpb24nID8gb3B0cy5kZWNvZGVyIDogZGVmYXVsdHMuZGVjb2RlcixcbiAgICAgICAgZGVsaW1pdGVyOiB0eXBlb2Ygb3B0cy5kZWxpbWl0ZXIgPT09ICdzdHJpbmcnIHx8IHV0aWxzLmlzUmVnRXhwKG9wdHMuZGVsaW1pdGVyKSA/IG9wdHMuZGVsaW1pdGVyIDogZGVmYXVsdHMuZGVsaW1pdGVyLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8taW1wbGljaXQtY29lcmNpb24sIG5vLWV4dHJhLXBhcmVuc1xuICAgICAgICBkZXB0aDogKHR5cGVvZiBvcHRzLmRlcHRoID09PSAnbnVtYmVyJyB8fCBvcHRzLmRlcHRoID09PSBmYWxzZSkgPyArb3B0cy5kZXB0aCA6IGRlZmF1bHRzLmRlcHRoLFxuICAgICAgICBkdXBsaWNhdGVzOiBkdXBsaWNhdGVzLFxuICAgICAgICBpZ25vcmVRdWVyeVByZWZpeDogb3B0cy5pZ25vcmVRdWVyeVByZWZpeCA9PT0gdHJ1ZSxcbiAgICAgICAgaW50ZXJwcmV0TnVtZXJpY0VudGl0aWVzOiB0eXBlb2Ygb3B0cy5pbnRlcnByZXROdW1lcmljRW50aXRpZXMgPT09ICdib29sZWFuJyA/IG9wdHMuaW50ZXJwcmV0TnVtZXJpY0VudGl0aWVzIDogZGVmYXVsdHMuaW50ZXJwcmV0TnVtZXJpY0VudGl0aWVzLFxuICAgICAgICBwYXJhbWV0ZXJMaW1pdDogdHlwZW9mIG9wdHMucGFyYW1ldGVyTGltaXQgPT09ICdudW1iZXInID8gb3B0cy5wYXJhbWV0ZXJMaW1pdCA6IGRlZmF1bHRzLnBhcmFtZXRlckxpbWl0LFxuICAgICAgICBwYXJzZUFycmF5czogb3B0cy5wYXJzZUFycmF5cyAhPT0gZmFsc2UsXG4gICAgICAgIHBsYWluT2JqZWN0czogdHlwZW9mIG9wdHMucGxhaW5PYmplY3RzID09PSAnYm9vbGVhbicgPyBvcHRzLnBsYWluT2JqZWN0cyA6IGRlZmF1bHRzLnBsYWluT2JqZWN0cyxcbiAgICAgICAgc3RyaWN0RGVwdGg6IHR5cGVvZiBvcHRzLnN0cmljdERlcHRoID09PSAnYm9vbGVhbicgPyAhIW9wdHMuc3RyaWN0RGVwdGggOiBkZWZhdWx0cy5zdHJpY3REZXB0aCxcbiAgICAgICAgc3RyaWN0TnVsbEhhbmRsaW5nOiB0eXBlb2Ygb3B0cy5zdHJpY3ROdWxsSGFuZGxpbmcgPT09ICdib29sZWFuJyA/IG9wdHMuc3RyaWN0TnVsbEhhbmRsaW5nIDogZGVmYXVsdHMuc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgICAgICB0aHJvd09uTGltaXRFeGNlZWRlZDogdHlwZW9mIG9wdHMudGhyb3dPbkxpbWl0RXhjZWVkZWQgPT09ICdib29sZWFuJyA/IG9wdHMudGhyb3dPbkxpbWl0RXhjZWVkZWQgOiBmYWxzZVxuICAgIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzdHIsIG9wdHMpIHtcbiAgICB2YXIgb3B0aW9ucyA9IG5vcm1hbGl6ZVBhcnNlT3B0aW9ucyhvcHRzKTtcblxuICAgIGlmIChzdHIgPT09ICcnIHx8IHN0ciA9PT0gbnVsbCB8fCB0eXBlb2Ygc3RyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5wbGFpbk9iamVjdHMgPyB7IF9fcHJvdG9fXzogbnVsbCB9IDoge307XG4gICAgfVxuXG4gICAgdmFyIHRlbXBPYmogPSB0eXBlb2Ygc3RyID09PSAnc3RyaW5nJyA/IHBhcnNlVmFsdWVzKHN0ciwgb3B0aW9ucykgOiBzdHI7XG4gICAgdmFyIG9iaiA9IG9wdGlvbnMucGxhaW5PYmplY3RzID8geyBfX3Byb3RvX186IG51bGwgfSA6IHt9O1xuXG4gICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBrZXlzIGFuZCBzZXR1cCB0aGUgbmV3IG9iamVjdFxuXG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh0ZW1wT2JqKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAgIHZhciBuZXdPYmogPSBwYXJzZUtleXMoa2V5LCB0ZW1wT2JqW2tleV0sIG9wdGlvbnMsIHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnKTtcbiAgICAgICAgb2JqID0gdXRpbHMubWVyZ2Uob2JqLCBuZXdPYmosIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmFsbG93U3BhcnNlID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgcmV0dXJuIHV0aWxzLmNvbXBhY3Qob2JqKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL3N0cmluZ2lmeScpO1xudmFyIHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpO1xudmFyIGZvcm1hdHMgPSByZXF1aXJlKCcuL2Zvcm1hdHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZm9ybWF0czogZm9ybWF0cyxcbiAgICBwYXJzZTogcGFyc2UsXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlcbn07XG4iLCIvKlxuICogQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbiAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbiAqIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuICogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuICogcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4gKiBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuICogTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4gKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1JcbiAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbiAqIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgcHVueWNvZGUgPSByZXF1aXJlKCdwdW55Y29kZS8nKTtcblxuZnVuY3Rpb24gVXJsKCkge1xuICB0aGlzLnByb3RvY29sID0gbnVsbDtcbiAgdGhpcy5zbGFzaGVzID0gbnVsbDtcbiAgdGhpcy5hdXRoID0gbnVsbDtcbiAgdGhpcy5ob3N0ID0gbnVsbDtcbiAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgdGhpcy5ob3N0bmFtZSA9IG51bGw7XG4gIHRoaXMuaGFzaCA9IG51bGw7XG4gIHRoaXMuc2VhcmNoID0gbnVsbDtcbiAgdGhpcy5xdWVyeSA9IG51bGw7XG4gIHRoaXMucGF0aG5hbWUgPSBudWxsO1xuICB0aGlzLnBhdGggPSBudWxsO1xuICB0aGlzLmhyZWYgPSBudWxsO1xufVxuXG4vLyBSZWZlcmVuY2U6IFJGQyAzOTg2LCBSRkMgMTgwOCwgUkZDIDIzOTZcblxuLypcbiAqIGRlZmluZSB0aGVzZSBoZXJlIHNvIGF0IGxlYXN0IHRoZXkgb25seSBoYXZlIHRvIGJlXG4gKiBjb21waWxlZCBvbmNlIG9uIHRoZSBmaXJzdCBtb2R1bGUgbG9hZC5cbiAqL1xudmFyIHByb3RvY29sUGF0dGVybiA9IC9eKFthLXowLTkuKy1dKzopL2ksXG4gIHBvcnRQYXR0ZXJuID0gLzpbMC05XSokLyxcblxuICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgc2ltcGxlIHBhdGggVVJMXG4gIHNpbXBsZVBhdGhQYXR0ZXJuID0gL14oXFwvXFwvPyg/IVxcLylbXj9cXHNdKikoXFw/W15cXHNdKik/JC8sXG5cbiAgLypcbiAgICogUkZDIDIzOTY6IGNoYXJhY3RlcnMgcmVzZXJ2ZWQgZm9yIGRlbGltaXRpbmcgVVJMcy5cbiAgICogV2UgYWN0dWFsbHkganVzdCBhdXRvLWVzY2FwZSB0aGVzZS5cbiAgICovXG4gIGRlbGltcyA9IFtcbiAgICAnPCcsICc+JywgJ1wiJywgJ2AnLCAnICcsICdcXHInLCAnXFxuJywgJ1xcdCdcbiAgXSxcblxuICAvLyBSRkMgMjM5NjogY2hhcmFjdGVycyBub3QgYWxsb3dlZCBmb3IgdmFyaW91cyByZWFzb25zLlxuICB1bndpc2UgPSBbXG4gICAgJ3snLCAnfScsICd8JywgJ1xcXFwnLCAnXicsICdgJ1xuICBdLmNvbmNhdChkZWxpbXMpLFxuXG4gIC8vIEFsbG93ZWQgYnkgUkZDcywgYnV0IGNhdXNlIG9mIFhTUyBhdHRhY2tzLiAgQWx3YXlzIGVzY2FwZSB0aGVzZS5cbiAgYXV0b0VzY2FwZSA9IFsnXFwnJ10uY29uY2F0KHVud2lzZSksXG4gIC8qXG4gICAqIENoYXJhY3RlcnMgdGhhdCBhcmUgbmV2ZXIgZXZlciBhbGxvd2VkIGluIGEgaG9zdG5hbWUuXG4gICAqIE5vdGUgdGhhdCBhbnkgaW52YWxpZCBjaGFycyBhcmUgYWxzbyBoYW5kbGVkLCBidXQgdGhlc2VcbiAgICogYXJlIHRoZSBvbmVzIHRoYXQgYXJlICpleHBlY3RlZCogdG8gYmUgc2Vlbiwgc28gd2UgZmFzdC1wYXRoXG4gICAqIHRoZW0uXG4gICAqL1xuICBub25Ib3N0Q2hhcnMgPSBbXG4gICAgJyUnLCAnLycsICc/JywgJzsnLCAnIydcbiAgXS5jb25jYXQoYXV0b0VzY2FwZSksXG4gIGhvc3RFbmRpbmdDaGFycyA9IFtcbiAgICAnLycsICc/JywgJyMnXG4gIF0sXG4gIGhvc3RuYW1lTWF4TGVuID0gMjU1LFxuICBob3N0bmFtZVBhcnRQYXR0ZXJuID0gL15bK2EtejAtOUEtWl8tXXswLDYzfSQvLFxuICBob3N0bmFtZVBhcnRTdGFydCA9IC9eKFsrYS16MC05QS1aXy1dezAsNjN9KSguKikkLyxcbiAgLy8gcHJvdG9jb2xzIHRoYXQgY2FuIGFsbG93IFwidW5zYWZlXCIgYW5kIFwidW53aXNlXCIgY2hhcnMuXG4gIHVuc2FmZVByb3RvY29sID0ge1xuICAgIGphdmFzY3JpcHQ6IHRydWUsXG4gICAgJ2phdmFzY3JpcHQ6JzogdHJ1ZVxuICB9LFxuICAvLyBwcm90b2NvbHMgdGhhdCBuZXZlciBoYXZlIGEgaG9zdG5hbWUuXG4gIGhvc3RsZXNzUHJvdG9jb2wgPSB7XG4gICAgamF2YXNjcmlwdDogdHJ1ZSxcbiAgICAnamF2YXNjcmlwdDonOiB0cnVlXG4gIH0sXG4gIC8vIHByb3RvY29scyB0aGF0IGFsd2F5cyBjb250YWluIGEgLy8gYml0LlxuICBzbGFzaGVkUHJvdG9jb2wgPSB7XG4gICAgaHR0cDogdHJ1ZSxcbiAgICBodHRwczogdHJ1ZSxcbiAgICBmdHA6IHRydWUsXG4gICAgZ29waGVyOiB0cnVlLFxuICAgIGZpbGU6IHRydWUsXG4gICAgJ2h0dHA6JzogdHJ1ZSxcbiAgICAnaHR0cHM6JzogdHJ1ZSxcbiAgICAnZnRwOic6IHRydWUsXG4gICAgJ2dvcGhlcjonOiB0cnVlLFxuICAgICdmaWxlOic6IHRydWVcbiAgfSxcbiAgcXVlcnlzdHJpbmcgPSByZXF1aXJlKCdxcycpO1xuXG5mdW5jdGlvbiB1cmxQYXJzZSh1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGlmICh1cmwgJiYgdHlwZW9mIHVybCA9PT0gJ29iamVjdCcgJiYgdXJsIGluc3RhbmNlb2YgVXJsKSB7IHJldHVybiB1cmw7IH1cblxuICB2YXIgdSA9IG5ldyBVcmwoKTtcbiAgdS5wYXJzZSh1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KTtcbiAgcmV0dXJuIHU7XG59XG5cblVybC5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiAodXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCkge1xuICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUGFyYW1ldGVyICd1cmwnIG11c3QgYmUgYSBzdHJpbmcsIG5vdCBcIiArIHR5cGVvZiB1cmwpO1xuICB9XG5cbiAgLypcbiAgICogQ29weSBjaHJvbWUsIElFLCBvcGVyYSBiYWNrc2xhc2gtaGFuZGxpbmcgYmVoYXZpb3IuXG4gICAqIEJhY2sgc2xhc2hlcyBiZWZvcmUgdGhlIHF1ZXJ5IHN0cmluZyBnZXQgY29udmVydGVkIHRvIGZvcndhcmQgc2xhc2hlc1xuICAgKiBTZWU6IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0yNTkxNlxuICAgKi9cbiAgdmFyIHF1ZXJ5SW5kZXggPSB1cmwuaW5kZXhPZignPycpLFxuICAgIHNwbGl0dGVyID0gcXVlcnlJbmRleCAhPT0gLTEgJiYgcXVlcnlJbmRleCA8IHVybC5pbmRleE9mKCcjJykgPyAnPycgOiAnIycsXG4gICAgdVNwbGl0ID0gdXJsLnNwbGl0KHNwbGl0dGVyKSxcbiAgICBzbGFzaFJlZ2V4ID0gL1xcXFwvZztcbiAgdVNwbGl0WzBdID0gdVNwbGl0WzBdLnJlcGxhY2Uoc2xhc2hSZWdleCwgJy8nKTtcbiAgdXJsID0gdVNwbGl0LmpvaW4oc3BsaXR0ZXIpO1xuXG4gIHZhciByZXN0ID0gdXJsO1xuXG4gIC8qXG4gICAqIHRyaW0gYmVmb3JlIHByb2NlZWRpbmcuXG4gICAqIFRoaXMgaXMgdG8gc3VwcG9ydCBwYXJzZSBzdHVmZiBsaWtlIFwiICBodHRwOi8vZm9vLmNvbSAgXFxuXCJcbiAgICovXG4gIHJlc3QgPSByZXN0LnRyaW0oKTtcblxuICBpZiAoIXNsYXNoZXNEZW5vdGVIb3N0ICYmIHVybC5zcGxpdCgnIycpLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIFRyeSBmYXN0IHBhdGggcmVnZXhwXG4gICAgdmFyIHNpbXBsZVBhdGggPSBzaW1wbGVQYXRoUGF0dGVybi5leGVjKHJlc3QpO1xuICAgIGlmIChzaW1wbGVQYXRoKSB7XG4gICAgICB0aGlzLnBhdGggPSByZXN0O1xuICAgICAgdGhpcy5ocmVmID0gcmVzdDtcbiAgICAgIHRoaXMucGF0aG5hbWUgPSBzaW1wbGVQYXRoWzFdO1xuICAgICAgaWYgKHNpbXBsZVBhdGhbMl0pIHtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSBzaW1wbGVQYXRoWzJdO1xuICAgICAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgICAgIHRoaXMucXVlcnkgPSBxdWVyeXN0cmluZy5wYXJzZSh0aGlzLnNlYXJjaC5zdWJzdHIoMSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucXVlcnkgPSB0aGlzLnNlYXJjaC5zdWJzdHIoMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgICB0aGlzLnNlYXJjaCA9ICcnO1xuICAgICAgICB0aGlzLnF1ZXJ5ID0ge307XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cblxuICB2YXIgcHJvdG8gPSBwcm90b2NvbFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgaWYgKHByb3RvKSB7XG4gICAgcHJvdG8gPSBwcm90b1swXTtcbiAgICB2YXIgbG93ZXJQcm90byA9IHByb3RvLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5wcm90b2NvbCA9IGxvd2VyUHJvdG87XG4gICAgcmVzdCA9IHJlc3Quc3Vic3RyKHByb3RvLmxlbmd0aCk7XG4gIH1cblxuICAvKlxuICAgKiBmaWd1cmUgb3V0IGlmIGl0J3MgZ290IGEgaG9zdFxuICAgKiB1c2VyQHNlcnZlciBpcyAqYWx3YXlzKiBpbnRlcnByZXRlZCBhcyBhIGhvc3RuYW1lLCBhbmQgdXJsXG4gICAqIHJlc29sdXRpb24gd2lsbCB0cmVhdCAvL2Zvby9iYXIgYXMgaG9zdD1mb28scGF0aD1iYXIgYmVjYXVzZSB0aGF0J3NcbiAgICogaG93IHRoZSBicm93c2VyIHJlc29sdmVzIHJlbGF0aXZlIFVSTHMuXG4gICAqL1xuICBpZiAoc2xhc2hlc0Rlbm90ZUhvc3QgfHwgcHJvdG8gfHwgcmVzdC5tYXRjaCgvXlxcL1xcL1teQC9dK0BbXkAvXSsvKSkge1xuICAgIHZhciBzbGFzaGVzID0gcmVzdC5zdWJzdHIoMCwgMikgPT09ICcvLyc7XG4gICAgaWYgKHNsYXNoZXMgJiYgIShwcm90byAmJiBob3N0bGVzc1Byb3RvY29sW3Byb3RvXSkpIHtcbiAgICAgIHJlc3QgPSByZXN0LnN1YnN0cigyKTtcbiAgICAgIHRoaXMuc2xhc2hlcyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFob3N0bGVzc1Byb3RvY29sW3Byb3RvXSAmJiAoc2xhc2hlcyB8fCAocHJvdG8gJiYgIXNsYXNoZWRQcm90b2NvbFtwcm90b10pKSkge1xuXG4gICAgLypcbiAgICAgKiB0aGVyZSdzIGEgaG9zdG5hbWUuXG4gICAgICogdGhlIGZpcnN0IGluc3RhbmNlIG9mIC8sID8sIDssIG9yICMgZW5kcyB0aGUgaG9zdC5cbiAgICAgKlxuICAgICAqIElmIHRoZXJlIGlzIGFuIEAgaW4gdGhlIGhvc3RuYW1lLCB0aGVuIG5vbi1ob3N0IGNoYXJzICphcmUqIGFsbG93ZWRcbiAgICAgKiB0byB0aGUgbGVmdCBvZiB0aGUgbGFzdCBAIHNpZ24sIHVubGVzcyBzb21lIGhvc3QtZW5kaW5nIGNoYXJhY3RlclxuICAgICAqIGNvbWVzICpiZWZvcmUqIHRoZSBALXNpZ24uXG4gICAgICogVVJMcyBhcmUgb2Jub3hpb3VzLlxuICAgICAqXG4gICAgICogZXg6XG4gICAgICogaHR0cDovL2FAYkBjLyA9PiB1c2VyOmFAYiBob3N0OmNcbiAgICAgKiBodHRwOi8vYUBiP0BjID0+IHVzZXI6YSBob3N0OmMgcGF0aDovP0BjXG4gICAgICovXG5cbiAgICAvKlxuICAgICAqIHYwLjEyIFRPRE8oaXNhYWNzKTogVGhpcyBpcyBub3QgcXVpdGUgaG93IENocm9tZSBkb2VzIHRoaW5ncy5cbiAgICAgKiBSZXZpZXcgb3VyIHRlc3QgY2FzZSBhZ2FpbnN0IGJyb3dzZXJzIG1vcmUgY29tcHJlaGVuc2l2ZWx5LlxuICAgICAqL1xuXG4gICAgLy8gZmluZCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgYW55IGhvc3RFbmRpbmdDaGFyc1xuICAgIHZhciBob3N0RW5kID0gLTE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBob3N0RW5kaW5nQ2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoZWMgPSByZXN0LmluZGV4T2YoaG9zdEVuZGluZ0NoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSkgeyBob3N0RW5kID0gaGVjOyB9XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBhdCB0aGlzIHBvaW50LCBlaXRoZXIgd2UgaGF2ZSBhbiBleHBsaWNpdCBwb2ludCB3aGVyZSB0aGVcbiAgICAgKiBhdXRoIHBvcnRpb24gY2Fubm90IGdvIHBhc3QsIG9yIHRoZSBsYXN0IEAgY2hhciBpcyB0aGUgZGVjaWRlci5cbiAgICAgKi9cbiAgICB2YXIgYXV0aCwgYXRTaWduO1xuICAgIGlmIChob3N0RW5kID09PSAtMSkge1xuICAgICAgLy8gYXRTaWduIGNhbiBiZSBhbnl3aGVyZS5cbiAgICAgIGF0U2lnbiA9IHJlc3QubGFzdEluZGV4T2YoJ0AnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLypcbiAgICAgICAqIGF0U2lnbiBtdXN0IGJlIGluIGF1dGggcG9ydGlvbi5cbiAgICAgICAqIGh0dHA6Ly9hQGIvY0BkID0+IGhvc3Q6YiBhdXRoOmEgcGF0aDovY0BkXG4gICAgICAgKi9cbiAgICAgIGF0U2lnbiA9IHJlc3QubGFzdEluZGV4T2YoJ0AnLCBob3N0RW5kKTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIE5vdyB3ZSBoYXZlIGEgcG9ydGlvbiB3aGljaCBpcyBkZWZpbml0ZWx5IHRoZSBhdXRoLlxuICAgICAqIFB1bGwgdGhhdCBvZmYuXG4gICAgICovXG4gICAgaWYgKGF0U2lnbiAhPT0gLTEpIHtcbiAgICAgIGF1dGggPSByZXN0LnNsaWNlKDAsIGF0U2lnbik7XG4gICAgICByZXN0ID0gcmVzdC5zbGljZShhdFNpZ24gKyAxKTtcbiAgICAgIHRoaXMuYXV0aCA9IGRlY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICB9XG5cbiAgICAvLyB0aGUgaG9zdCBpcyB0aGUgcmVtYWluaW5nIHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBub24taG9zdCBjaGFyXG4gICAgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9uSG9zdENoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGVjID0gcmVzdC5pbmRleE9mKG5vbkhvc3RDaGFyc1tpXSk7XG4gICAgICBpZiAoaGVjICE9PSAtMSAmJiAoaG9zdEVuZCA9PT0gLTEgfHwgaGVjIDwgaG9zdEVuZCkpIHsgaG9zdEVuZCA9IGhlYzsgfVxuICAgIH1cbiAgICAvLyBpZiB3ZSBzdGlsbCBoYXZlIG5vdCBoaXQgaXQsIHRoZW4gdGhlIGVudGlyZSB0aGluZyBpcyBhIGhvc3QuXG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKSB7IGhvc3RFbmQgPSByZXN0Lmxlbmd0aDsgfVxuXG4gICAgdGhpcy5ob3N0ID0gcmVzdC5zbGljZSgwLCBob3N0RW5kKTtcbiAgICByZXN0ID0gcmVzdC5zbGljZShob3N0RW5kKTtcblxuICAgIC8vIHB1bGwgb3V0IHBvcnQuXG4gICAgdGhpcy5wYXJzZUhvc3QoKTtcblxuICAgIC8qXG4gICAgICogd2UndmUgaW5kaWNhdGVkIHRoYXQgdGhlcmUgaXMgYSBob3N0bmFtZSxcbiAgICAgKiBzbyBldmVuIGlmIGl0J3MgZW1wdHksIGl0IGhhcyB0byBiZSBwcmVzZW50LlxuICAgICAqL1xuICAgIHRoaXMuaG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lIHx8ICcnO1xuXG4gICAgLypcbiAgICAgKiBpZiBob3N0bmFtZSBiZWdpbnMgd2l0aCBbIGFuZCBlbmRzIHdpdGggXVxuICAgICAqIGFzc3VtZSB0aGF0IGl0J3MgYW4gSVB2NiBhZGRyZXNzLlxuICAgICAqL1xuICAgIHZhciBpcHY2SG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lWzBdID09PSAnWycgJiYgdGhpcy5ob3N0bmFtZVt0aGlzLmhvc3RuYW1lLmxlbmd0aCAtIDFdID09PSAnXSc7XG5cbiAgICAvLyB2YWxpZGF0ZSBhIGxpdHRsZS5cbiAgICBpZiAoIWlwdjZIb3N0bmFtZSkge1xuICAgICAgdmFyIGhvc3RwYXJ0cyA9IHRoaXMuaG9zdG5hbWUuc3BsaXQoL1xcLi8pO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBob3N0cGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJ0ID0gaG9zdHBhcnRzW2ldO1xuICAgICAgICBpZiAoIXBhcnQpIHsgY29udGludWU7IH1cbiAgICAgICAgaWYgKCFwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgdmFyIG5ld3BhcnQgPSAnJztcbiAgICAgICAgICBmb3IgKHZhciBqID0gMCwgayA9IHBhcnQubGVuZ3RoOyBqIDwgazsgaisrKSB7XG4gICAgICAgICAgICBpZiAocGFydC5jaGFyQ29kZUF0KGopID4gMTI3KSB7XG4gICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAqIHdlIHJlcGxhY2Ugbm9uLUFTQ0lJIGNoYXIgd2l0aCBhIHRlbXBvcmFyeSBwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgKiB3ZSBuZWVkIHRoaXMgdG8gbWFrZSBzdXJlIHNpemUgb2YgaG9zdG5hbWUgaXMgbm90XG4gICAgICAgICAgICAgICAqIGJyb2tlbiBieSByZXBsYWNpbmcgbm9uLUFTQ0lJIGJ5IG5vdGhpbmdcbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIG5ld3BhcnQgKz0gJ3gnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmV3cGFydCArPSBwYXJ0W2pdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB3ZSB0ZXN0IGFnYWluIHdpdGggQVNDSUkgY2hhciBvbmx5XG4gICAgICAgICAgaWYgKCFuZXdwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgICB2YXIgdmFsaWRQYXJ0cyA9IGhvc3RwYXJ0cy5zbGljZSgwLCBpKTtcbiAgICAgICAgICAgIHZhciBub3RIb3N0ID0gaG9zdHBhcnRzLnNsaWNlKGkgKyAxKTtcbiAgICAgICAgICAgIHZhciBiaXQgPSBwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFN0YXJ0KTtcbiAgICAgICAgICAgIGlmIChiaXQpIHtcbiAgICAgICAgICAgICAgdmFsaWRQYXJ0cy5wdXNoKGJpdFsxXSk7XG4gICAgICAgICAgICAgIG5vdEhvc3QudW5zaGlmdChiaXRbMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vdEhvc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJlc3QgPSAnLycgKyBub3RIb3N0LmpvaW4oJy4nKSArIHJlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmhvc3RuYW1lID0gdmFsaWRQYXJ0cy5qb2luKCcuJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5ob3N0bmFtZS5sZW5ndGggPiBob3N0bmFtZU1heExlbikge1xuICAgICAgdGhpcy5ob3N0bmFtZSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBob3N0bmFtZXMgYXJlIGFsd2F5cyBsb3dlciBjYXNlLlxuICAgICAgdGhpcy5ob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBpZiAoIWlwdjZIb3N0bmFtZSkge1xuICAgICAgLypcbiAgICAgICAqIElETkEgU3VwcG9ydDogUmV0dXJucyBhIHB1bnljb2RlZCByZXByZXNlbnRhdGlvbiBvZiBcImRvbWFpblwiLlxuICAgICAgICogSXQgb25seSBjb252ZXJ0cyBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgdGhhdFxuICAgICAgICogaGF2ZSBub24tQVNDSUkgY2hhcmFjdGVycywgaS5lLiBpdCBkb2Vzbid0IG1hdHRlciBpZlxuICAgICAgICogeW91IGNhbGwgaXQgd2l0aCBhIGRvbWFpbiB0aGF0IGFscmVhZHkgaXMgQVNDSUktb25seS5cbiAgICAgICAqL1xuICAgICAgdGhpcy5ob3N0bmFtZSA9IHB1bnljb2RlLnRvQVNDSUkodGhpcy5ob3N0bmFtZSk7XG4gICAgfVxuXG4gICAgdmFyIHAgPSB0aGlzLnBvcnQgPyAnOicgKyB0aGlzLnBvcnQgOiAnJztcbiAgICB2YXIgaCA9IHRoaXMuaG9zdG5hbWUgfHwgJyc7XG4gICAgdGhpcy5ob3N0ID0gaCArIHA7XG4gICAgdGhpcy5ocmVmICs9IHRoaXMuaG9zdDtcblxuICAgIC8qXG4gICAgICogc3RyaXAgWyBhbmQgXSBmcm9tIHRoZSBob3N0bmFtZVxuICAgICAqIHRoZSBob3N0IGZpZWxkIHN0aWxsIHJldGFpbnMgdGhlbSwgdGhvdWdoXG4gICAgICovXG4gICAgaWYgKGlwdjZIb3N0bmFtZSkge1xuICAgICAgdGhpcy5ob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWUuc3Vic3RyKDEsIHRoaXMuaG9zdG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICBpZiAocmVzdFswXSAhPT0gJy8nKSB7XG4gICAgICAgIHJlc3QgPSAnLycgKyByZXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIG5vdyByZXN0IGlzIHNldCB0byB0aGUgcG9zdC1ob3N0IHN0dWZmLlxuICAgKiBjaG9wIG9mZiBhbnkgZGVsaW0gY2hhcnMuXG4gICAqL1xuICBpZiAoIXVuc2FmZVByb3RvY29sW2xvd2VyUHJvdG9dKSB7XG5cbiAgICAvKlxuICAgICAqIEZpcnN0LCBtYWtlIDEwMCUgc3VyZSB0aGF0IGFueSBcImF1dG9Fc2NhcGVcIiBjaGFycyBnZXRcbiAgICAgKiBlc2NhcGVkLCBldmVuIGlmIGVuY29kZVVSSUNvbXBvbmVudCBkb2Vzbid0IHRoaW5rIHRoZXlcbiAgICAgKiBuZWVkIHRvIGJlLlxuICAgICAqL1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXV0b0VzY2FwZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBhZSA9IGF1dG9Fc2NhcGVbaV07XG4gICAgICBpZiAocmVzdC5pbmRleE9mKGFlKSA9PT0gLTEpIHsgY29udGludWU7IH1cbiAgICAgIHZhciBlc2MgPSBlbmNvZGVVUklDb21wb25lbnQoYWUpO1xuICAgICAgaWYgKGVzYyA9PT0gYWUpIHtcbiAgICAgICAgZXNjID0gZXNjYXBlKGFlKTtcbiAgICAgIH1cbiAgICAgIHJlc3QgPSByZXN0LnNwbGl0KGFlKS5qb2luKGVzYyk7XG4gICAgfVxuICB9XG5cbiAgLy8gY2hvcCBvZmYgZnJvbSB0aGUgdGFpbCBmaXJzdC5cbiAgdmFyIGhhc2ggPSByZXN0LmluZGV4T2YoJyMnKTtcbiAgaWYgKGhhc2ggIT09IC0xKSB7XG4gICAgLy8gZ290IGEgZnJhZ21lbnQgc3RyaW5nLlxuICAgIHRoaXMuaGFzaCA9IHJlc3Quc3Vic3RyKGhhc2gpO1xuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIGhhc2gpO1xuICB9XG4gIHZhciBxbSA9IHJlc3QuaW5kZXhPZignPycpO1xuICBpZiAocW0gIT09IC0xKSB7XG4gICAgdGhpcy5zZWFyY2ggPSByZXN0LnN1YnN0cihxbSk7XG4gICAgdGhpcy5xdWVyeSA9IHJlc3Quc3Vic3RyKHFtICsgMSk7XG4gICAgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgIHRoaXMucXVlcnkgPSBxdWVyeXN0cmluZy5wYXJzZSh0aGlzLnF1ZXJ5KTtcbiAgICB9XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgcW0pO1xuICB9IGVsc2UgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAvLyBubyBxdWVyeSBzdHJpbmcsIGJ1dCBwYXJzZVF1ZXJ5U3RyaW5nIHN0aWxsIHJlcXVlc3RlZFxuICAgIHRoaXMuc2VhcmNoID0gJyc7XG4gICAgdGhpcy5xdWVyeSA9IHt9O1xuICB9XG4gIGlmIChyZXN0KSB7IHRoaXMucGF0aG5hbWUgPSByZXN0OyB9XG4gIGlmIChzbGFzaGVkUHJvdG9jb2xbbG93ZXJQcm90b10gJiYgdGhpcy5ob3N0bmFtZSAmJiAhdGhpcy5wYXRobmFtZSkge1xuICAgIHRoaXMucGF0aG5hbWUgPSAnLyc7XG4gIH1cblxuICAvLyB0byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICBpZiAodGhpcy5wYXRobmFtZSB8fCB0aGlzLnNlYXJjaCkge1xuICAgIHZhciBwID0gdGhpcy5wYXRobmFtZSB8fCAnJztcbiAgICB2YXIgcyA9IHRoaXMuc2VhcmNoIHx8ICcnO1xuICAgIHRoaXMucGF0aCA9IHAgKyBzO1xuICB9XG5cbiAgLy8gZmluYWxseSwgcmVjb25zdHJ1Y3QgdGhlIGhyZWYgYmFzZWQgb24gd2hhdCBoYXMgYmVlbiB2YWxpZGF0ZWQuXG4gIHRoaXMuaHJlZiA9IHRoaXMuZm9ybWF0KCk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gZm9ybWF0IGEgcGFyc2VkIG9iamVjdCBpbnRvIGEgdXJsIHN0cmluZ1xuZnVuY3Rpb24gdXJsRm9ybWF0KG9iaikge1xuICAvKlxuICAgKiBlbnN1cmUgaXQncyBhbiBvYmplY3QsIGFuZCBub3QgYSBzdHJpbmcgdXJsLlxuICAgKiBJZiBpdCdzIGFuIG9iaiwgdGhpcyBpcyBhIG5vLW9wLlxuICAgKiB0aGlzIHdheSwgeW91IGNhbiBjYWxsIHVybF9mb3JtYXQoKSBvbiBzdHJpbmdzXG4gICAqIHRvIGNsZWFuIHVwIHBvdGVudGlhbGx5IHdvbmt5IHVybHMuXG4gICAqL1xuICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHsgb2JqID0gdXJsUGFyc2Uob2JqKTsgfVxuICBpZiAoIShvYmogaW5zdGFuY2VvZiBVcmwpKSB7IHJldHVybiBVcmwucHJvdG90eXBlLmZvcm1hdC5jYWxsKG9iaik7IH1cbiAgcmV0dXJuIG9iai5mb3JtYXQoKTtcbn1cblxuVXJsLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBhdXRoID0gdGhpcy5hdXRoIHx8ICcnO1xuICBpZiAoYXV0aCkge1xuICAgIGF1dGggPSBlbmNvZGVVUklDb21wb25lbnQoYXV0aCk7XG4gICAgYXV0aCA9IGF1dGgucmVwbGFjZSgvJTNBL2ksICc6Jyk7XG4gICAgYXV0aCArPSAnQCc7XG4gIH1cblxuICB2YXIgcHJvdG9jb2wgPSB0aGlzLnByb3RvY29sIHx8ICcnLFxuICAgIHBhdGhuYW1lID0gdGhpcy5wYXRobmFtZSB8fCAnJyxcbiAgICBoYXNoID0gdGhpcy5oYXNoIHx8ICcnLFxuICAgIGhvc3QgPSBmYWxzZSxcbiAgICBxdWVyeSA9ICcnO1xuXG4gIGlmICh0aGlzLmhvc3QpIHtcbiAgICBob3N0ID0gYXV0aCArIHRoaXMuaG9zdDtcbiAgfSBlbHNlIGlmICh0aGlzLmhvc3RuYW1lKSB7XG4gICAgaG9zdCA9IGF1dGggKyAodGhpcy5ob3N0bmFtZS5pbmRleE9mKCc6JykgPT09IC0xID8gdGhpcy5ob3N0bmFtZSA6ICdbJyArIHRoaXMuaG9zdG5hbWUgKyAnXScpO1xuICAgIGlmICh0aGlzLnBvcnQpIHtcbiAgICAgIGhvc3QgKz0gJzonICsgdGhpcy5wb3J0O1xuICAgIH1cbiAgfVxuXG4gIGlmICh0aGlzLnF1ZXJ5ICYmIHR5cGVvZiB0aGlzLnF1ZXJ5ID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyh0aGlzLnF1ZXJ5KS5sZW5ndGgpIHtcbiAgICBxdWVyeSA9IHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeSh0aGlzLnF1ZXJ5LCB7XG4gICAgICBhcnJheUZvcm1hdDogJ3JlcGVhdCcsXG4gICAgICBhZGRRdWVyeVByZWZpeDogZmFsc2VcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBzZWFyY2ggPSB0aGlzLnNlYXJjaCB8fCAocXVlcnkgJiYgKCc/JyArIHF1ZXJ5KSkgfHwgJyc7XG5cbiAgaWYgKHByb3RvY29sICYmIHByb3RvY29sLnN1YnN0cigtMSkgIT09ICc6JykgeyBwcm90b2NvbCArPSAnOic7IH1cblxuICAvKlxuICAgKiBvbmx5IHRoZSBzbGFzaGVkUHJvdG9jb2xzIGdldCB0aGUgLy8uICBOb3QgbWFpbHRvOiwgeG1wcDosIGV0Yy5cbiAgICogdW5sZXNzIHRoZXkgaGFkIHRoZW0gdG8gYmVnaW4gd2l0aC5cbiAgICovXG4gIGlmICh0aGlzLnNsYXNoZXMgfHwgKCFwcm90b2NvbCB8fCBzbGFzaGVkUHJvdG9jb2xbcHJvdG9jb2xdKSAmJiBob3N0ICE9PSBmYWxzZSkge1xuICAgIGhvc3QgPSAnLy8nICsgKGhvc3QgfHwgJycpO1xuICAgIGlmIChwYXRobmFtZSAmJiBwYXRobmFtZS5jaGFyQXQoMCkgIT09ICcvJykgeyBwYXRobmFtZSA9ICcvJyArIHBhdGhuYW1lOyB9XG4gIH0gZWxzZSBpZiAoIWhvc3QpIHtcbiAgICBob3N0ID0gJyc7XG4gIH1cblxuICBpZiAoaGFzaCAmJiBoYXNoLmNoYXJBdCgwKSAhPT0gJyMnKSB7IGhhc2ggPSAnIycgKyBoYXNoOyB9XG4gIGlmIChzZWFyY2ggJiYgc2VhcmNoLmNoYXJBdCgwKSAhPT0gJz8nKSB7IHNlYXJjaCA9ICc/JyArIHNlYXJjaDsgfVxuXG4gIHBhdGhuYW1lID0gcGF0aG5hbWUucmVwbGFjZSgvWz8jXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KG1hdGNoKTtcbiAgfSk7XG4gIHNlYXJjaCA9IHNlYXJjaC5yZXBsYWNlKCcjJywgJyUyMycpO1xuXG4gIHJldHVybiBwcm90b2NvbCArIGhvc3QgKyBwYXRobmFtZSArIHNlYXJjaCArIGhhc2g7XG59O1xuXG5mdW5jdGlvbiB1cmxSZXNvbHZlKHNvdXJjZSwgcmVsYXRpdmUpIHtcbiAgcmV0dXJuIHVybFBhcnNlKHNvdXJjZSwgZmFsc2UsIHRydWUpLnJlc29sdmUocmVsYXRpdmUpO1xufVxuXG5VcmwucHJvdG90eXBlLnJlc29sdmUgPSBmdW5jdGlvbiAocmVsYXRpdmUpIHtcbiAgcmV0dXJuIHRoaXMucmVzb2x2ZU9iamVjdCh1cmxQYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpKS5mb3JtYXQoKTtcbn07XG5cbmZ1bmN0aW9uIHVybFJlc29sdmVPYmplY3Qoc291cmNlLCByZWxhdGl2ZSkge1xuICBpZiAoIXNvdXJjZSkgeyByZXR1cm4gcmVsYXRpdmU7IH1cbiAgcmV0dXJuIHVybFBhcnNlKHNvdXJjZSwgZmFsc2UsIHRydWUpLnJlc29sdmVPYmplY3QocmVsYXRpdmUpO1xufVxuXG5VcmwucHJvdG90eXBlLnJlc29sdmVPYmplY3QgPSBmdW5jdGlvbiAocmVsYXRpdmUpIHtcbiAgaWYgKHR5cGVvZiByZWxhdGl2ZSA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgcmVsID0gbmV3IFVybCgpO1xuICAgIHJlbC5wYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpO1xuICAgIHJlbGF0aXZlID0gcmVsO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IG5ldyBVcmwoKTtcbiAgdmFyIHRrZXlzID0gT2JqZWN0LmtleXModGhpcyk7XG4gIGZvciAodmFyIHRrID0gMDsgdGsgPCB0a2V5cy5sZW5ndGg7IHRrKyspIHtcbiAgICB2YXIgdGtleSA9IHRrZXlzW3RrXTtcbiAgICByZXN1bHRbdGtleV0gPSB0aGlzW3RrZXldO1xuICB9XG5cbiAgLypcbiAgICogaGFzaCBpcyBhbHdheXMgb3ZlcnJpZGRlbiwgbm8gbWF0dGVyIHdoYXQuXG4gICAqIGV2ZW4gaHJlZj1cIlwiIHdpbGwgcmVtb3ZlIGl0LlxuICAgKi9cbiAgcmVzdWx0Lmhhc2ggPSByZWxhdGl2ZS5oYXNoO1xuXG4gIC8vIGlmIHRoZSByZWxhdGl2ZSB1cmwgaXMgZW1wdHksIHRoZW4gdGhlcmUncyBub3RoaW5nIGxlZnQgdG8gZG8gaGVyZS5cbiAgaWYgKHJlbGF0aXZlLmhyZWYgPT09ICcnKSB7XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGhyZWZzIGxpa2UgLy9mb28vYmFyIGFsd2F5cyBjdXQgdG8gdGhlIHByb3RvY29sLlxuICBpZiAocmVsYXRpdmUuc2xhc2hlcyAmJiAhcmVsYXRpdmUucHJvdG9jb2wpIHtcbiAgICAvLyB0YWtlIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBwcm90b2NvbCBmcm9tIHJlbGF0aXZlXG4gICAgdmFyIHJrZXlzID0gT2JqZWN0LmtleXMocmVsYXRpdmUpO1xuICAgIGZvciAodmFyIHJrID0gMDsgcmsgPCBya2V5cy5sZW5ndGg7IHJrKyspIHtcbiAgICAgIHZhciBya2V5ID0gcmtleXNbcmtdO1xuICAgICAgaWYgKHJrZXkgIT09ICdwcm90b2NvbCcpIHsgcmVzdWx0W3JrZXldID0gcmVsYXRpdmVbcmtleV07IH1cbiAgICB9XG5cbiAgICAvLyB1cmxQYXJzZSBhcHBlbmRzIHRyYWlsaW5nIC8gdG8gdXJscyBsaWtlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb21cbiAgICBpZiAoc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF0gJiYgcmVzdWx0Lmhvc3RuYW1lICYmICFyZXN1bHQucGF0aG5hbWUpIHtcbiAgICAgIHJlc3VsdC5wYXRobmFtZSA9ICcvJztcbiAgICAgIHJlc3VsdC5wYXRoID0gcmVzdWx0LnBhdGhuYW1lO1xuICAgIH1cblxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAocmVsYXRpdmUucHJvdG9jb2wgJiYgcmVsYXRpdmUucHJvdG9jb2wgIT09IHJlc3VsdC5wcm90b2NvbCkge1xuICAgIC8qXG4gICAgICogaWYgaXQncyBhIGtub3duIHVybCBwcm90b2NvbCwgdGhlbiBjaGFuZ2luZ1xuICAgICAqIHRoZSBwcm90b2NvbCBkb2VzIHdlaXJkIHRoaW5nc1xuICAgICAqIGZpcnN0LCBpZiBpdCdzIG5vdCBmaWxlOiwgdGhlbiB3ZSBNVVNUIGhhdmUgYSBob3N0LFxuICAgICAqIGFuZCBpZiB0aGVyZSB3YXMgYSBwYXRoXG4gICAgICogdG8gYmVnaW4gd2l0aCwgdGhlbiB3ZSBNVVNUIGhhdmUgYSBwYXRoLlxuICAgICAqIGlmIGl0IGlzIGZpbGU6LCB0aGVuIHRoZSBob3N0IGlzIGRyb3BwZWQsXG4gICAgICogYmVjYXVzZSB0aGF0J3Mga25vd24gdG8gYmUgaG9zdGxlc3MuXG4gICAgICogYW55dGhpbmcgZWxzZSBpcyBhc3N1bWVkIHRvIGJlIGFic29sdXRlLlxuICAgICAqL1xuICAgIGlmICghc2xhc2hlZFByb3RvY29sW3JlbGF0aXZlLnByb3RvY29sXSkge1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhyZWxhdGl2ZSk7XG4gICAgICBmb3IgKHZhciB2ID0gMDsgdiA8IGtleXMubGVuZ3RoOyB2KyspIHtcbiAgICAgICAgdmFyIGsgPSBrZXlzW3ZdO1xuICAgICAgICByZXN1bHRba10gPSByZWxhdGl2ZVtrXTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICByZXN1bHQucHJvdG9jb2wgPSByZWxhdGl2ZS5wcm90b2NvbDtcbiAgICBpZiAoIXJlbGF0aXZlLmhvc3QgJiYgIWhvc3RsZXNzUHJvdG9jb2xbcmVsYXRpdmUucHJvdG9jb2xdKSB7XG4gICAgICB2YXIgcmVsUGF0aCA9IChyZWxhdGl2ZS5wYXRobmFtZSB8fCAnJykuc3BsaXQoJy8nKTtcbiAgICAgIHdoaWxlIChyZWxQYXRoLmxlbmd0aCAmJiAhKHJlbGF0aXZlLmhvc3QgPSByZWxQYXRoLnNoaWZ0KCkpKSB7IH1cbiAgICAgIGlmICghcmVsYXRpdmUuaG9zdCkgeyByZWxhdGl2ZS5ob3N0ID0gJyc7IH1cbiAgICAgIGlmICghcmVsYXRpdmUuaG9zdG5hbWUpIHsgcmVsYXRpdmUuaG9zdG5hbWUgPSAnJzsgfVxuICAgICAgaWYgKHJlbFBhdGhbMF0gIT09ICcnKSB7IHJlbFBhdGgudW5zaGlmdCgnJyk7IH1cbiAgICAgIGlmIChyZWxQYXRoLmxlbmd0aCA8IDIpIHsgcmVsUGF0aC51bnNoaWZ0KCcnKTsgfVxuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gcmVsUGF0aC5qb2luKCcvJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wYXRobmFtZSA9IHJlbGF0aXZlLnBhdGhuYW1lO1xuICAgIH1cbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIHJlc3VsdC5ob3N0ID0gcmVsYXRpdmUuaG9zdCB8fCAnJztcbiAgICByZXN1bHQuYXV0aCA9IHJlbGF0aXZlLmF1dGg7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gcmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdDtcbiAgICByZXN1bHQucG9ydCA9IHJlbGF0aXZlLnBvcnQ7XG4gICAgLy8gdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAocmVzdWx0LnBhdGhuYW1lIHx8IHJlc3VsdC5zZWFyY2gpIHtcbiAgICAgIHZhciBwID0gcmVzdWx0LnBhdGhuYW1lIHx8ICcnO1xuICAgICAgdmFyIHMgPSByZXN1bHQuc2VhcmNoIHx8ICcnO1xuICAgICAgcmVzdWx0LnBhdGggPSBwICsgcztcbiAgICB9XG4gICAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB2YXIgaXNTb3VyY2VBYnMgPSByZXN1bHQucGF0aG5hbWUgJiYgcmVzdWx0LnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nLFxuICAgIGlzUmVsQWJzID0gcmVsYXRpdmUuaG9zdCB8fCByZWxhdGl2ZS5wYXRobmFtZSAmJiByZWxhdGl2ZS5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJyxcbiAgICBtdXN0RW5kQWJzID0gaXNSZWxBYnMgfHwgaXNTb3VyY2VBYnMgfHwgKHJlc3VsdC5ob3N0ICYmIHJlbGF0aXZlLnBhdGhuYW1lKSxcbiAgICByZW1vdmVBbGxEb3RzID0gbXVzdEVuZEFicyxcbiAgICBzcmNQYXRoID0gcmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdLFxuICAgIHJlbFBhdGggPSByZWxhdGl2ZS5wYXRobmFtZSAmJiByZWxhdGl2ZS5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdLFxuICAgIHBzeWNob3RpYyA9IHJlc3VsdC5wcm90b2NvbCAmJiAhc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF07XG5cbiAgLypcbiAgICogaWYgdGhlIHVybCBpcyBhIG5vbi1zbGFzaGVkIHVybCwgdGhlbiByZWxhdGl2ZVxuICAgKiBsaW5rcyBsaWtlIC4uLy4uIHNob3VsZCBiZSBhYmxlXG4gICAqIHRvIGNyYXdsIHVwIHRvIHRoZSBob3N0bmFtZSwgYXMgd2VsbC4gIFRoaXMgaXMgc3RyYW5nZS5cbiAgICogcmVzdWx0LnByb3RvY29sIGhhcyBhbHJlYWR5IGJlZW4gc2V0IGJ5IG5vdy5cbiAgICogTGF0ZXIgb24sIHB1dCB0aGUgZmlyc3QgcGF0aCBwYXJ0IGludG8gdGhlIGhvc3QgZmllbGQuXG4gICAqL1xuICBpZiAocHN5Y2hvdGljKSB7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gJyc7XG4gICAgcmVzdWx0LnBvcnQgPSBudWxsO1xuICAgIGlmIChyZXN1bHQuaG9zdCkge1xuICAgICAgaWYgKHNyY1BhdGhbMF0gPT09ICcnKSB7IHNyY1BhdGhbMF0gPSByZXN1bHQuaG9zdDsgfSBlbHNlIHsgc3JjUGF0aC51bnNoaWZ0KHJlc3VsdC5ob3N0KTsgfVxuICAgIH1cbiAgICByZXN1bHQuaG9zdCA9ICcnO1xuICAgIGlmIChyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgICAgcmVsYXRpdmUuaG9zdG5hbWUgPSBudWxsO1xuICAgICAgcmVsYXRpdmUucG9ydCA9IG51bGw7XG4gICAgICBpZiAocmVsYXRpdmUuaG9zdCkge1xuICAgICAgICBpZiAocmVsUGF0aFswXSA9PT0gJycpIHsgcmVsUGF0aFswXSA9IHJlbGF0aXZlLmhvc3Q7IH0gZWxzZSB7IHJlbFBhdGgudW5zaGlmdChyZWxhdGl2ZS5ob3N0KTsgfVxuICAgICAgfVxuICAgICAgcmVsYXRpdmUuaG9zdCA9IG51bGw7XG4gICAgfVxuICAgIG11c3RFbmRBYnMgPSBtdXN0RW5kQWJzICYmIChyZWxQYXRoWzBdID09PSAnJyB8fCBzcmNQYXRoWzBdID09PSAnJyk7XG4gIH1cblxuICBpZiAoaXNSZWxBYnMpIHtcbiAgICAvLyBpdCdzIGFic29sdXRlLlxuICAgIHJlc3VsdC5ob3N0ID0gcmVsYXRpdmUuaG9zdCB8fCByZWxhdGl2ZS5ob3N0ID09PSAnJyA/IHJlbGF0aXZlLmhvc3QgOiByZXN1bHQuaG9zdDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSByZWxhdGl2ZS5ob3N0bmFtZSB8fCByZWxhdGl2ZS5ob3N0bmFtZSA9PT0gJycgPyByZWxhdGl2ZS5ob3N0bmFtZSA6IHJlc3VsdC5ob3N0bmFtZTtcbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIHNyY1BhdGggPSByZWxQYXRoO1xuICAgIC8vIGZhbGwgdGhyb3VnaCB0byB0aGUgZG90LWhhbmRsaW5nIGJlbG93LlxuICB9IGVsc2UgaWYgKHJlbFBhdGgubGVuZ3RoKSB7XG4gICAgLypcbiAgICAgKiBpdCdzIHJlbGF0aXZlXG4gICAgICogdGhyb3cgYXdheSB0aGUgZXhpc3RpbmcgZmlsZSwgYW5kIHRha2UgdGhlIG5ldyBwYXRoIGluc3RlYWQuXG4gICAgICovXG4gICAgaWYgKCFzcmNQYXRoKSB7IHNyY1BhdGggPSBbXTsgfVxuICAgIHNyY1BhdGgucG9wKCk7XG4gICAgc3JjUGF0aCA9IHNyY1BhdGguY29uY2F0KHJlbFBhdGgpO1xuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gIH0gZWxzZSBpZiAocmVsYXRpdmUuc2VhcmNoICE9IG51bGwpIHtcbiAgICAvKlxuICAgICAqIGp1c3QgcHVsbCBvdXQgdGhlIHNlYXJjaC5cbiAgICAgKiBsaWtlIGhyZWY9Jz9mb28nLlxuICAgICAqIFB1dCB0aGlzIGFmdGVyIHRoZSBvdGhlciB0d28gY2FzZXMgYmVjYXVzZSBpdCBzaW1wbGlmaWVzIHRoZSBib29sZWFuc1xuICAgICAqL1xuICAgIGlmIChwc3ljaG90aWMpIHtcbiAgICAgIHJlc3VsdC5ob3N0ID0gc3JjUGF0aC5zaGlmdCgpO1xuICAgICAgcmVzdWx0Lmhvc3RuYW1lID0gcmVzdWx0Lmhvc3Q7XG4gICAgICAvKlxuICAgICAgICogb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAgICAqIHRoaXMgZXNwZWNpYWxseSBoYXBwZW5zIGluIGNhc2VzIGxpa2VcbiAgICAgICAqIHVybC5yZXNvbHZlT2JqZWN0KCdtYWlsdG86bG9jYWwxQGRvbWFpbjEnLCAnbG9jYWwyQGRvbWFpbjInKVxuICAgICAgICovXG4gICAgICB2YXIgYXV0aEluSG9zdCA9IHJlc3VsdC5ob3N0ICYmIHJlc3VsdC5ob3N0LmluZGV4T2YoJ0AnKSA+IDAgPyByZXN1bHQuaG9zdC5zcGxpdCgnQCcpIDogZmFsc2U7XG4gICAgICBpZiAoYXV0aEluSG9zdCkge1xuICAgICAgICByZXN1bHQuYXV0aCA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgICAgcmVzdWx0Lmhvc3RuYW1lID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgICByZXN1bHQuaG9zdCA9IHJlc3VsdC5ob3N0bmFtZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICAvLyB0byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmIChyZXN1bHQucGF0aG5hbWUgIT09IG51bGwgfHwgcmVzdWx0LnNlYXJjaCAhPT0gbnVsbCkge1xuICAgICAgcmVzdWx0LnBhdGggPSAocmVzdWx0LnBhdGhuYW1lID8gcmVzdWx0LnBhdGhuYW1lIDogJycpICsgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICAgIH1cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgaWYgKCFzcmNQYXRoLmxlbmd0aCkge1xuICAgIC8qXG4gICAgICogbm8gcGF0aCBhdCBhbGwuICBlYXN5LlxuICAgICAqIHdlJ3ZlIGFscmVhZHkgaGFuZGxlZCB0aGUgb3RoZXIgc3R1ZmYgYWJvdmUuXG4gICAgICovXG4gICAgcmVzdWx0LnBhdGhuYW1lID0gbnVsbDtcbiAgICAvLyB0byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmIChyZXN1bHQuc2VhcmNoKSB7XG4gICAgICByZXN1bHQucGF0aCA9ICcvJyArIHJlc3VsdC5zZWFyY2g7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gbnVsbDtcbiAgICB9XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qXG4gICAqIGlmIGEgdXJsIEVORHMgaW4gLiBvciAuLiwgdGhlbiBpdCBtdXN0IGdldCBhIHRyYWlsaW5nIHNsYXNoLlxuICAgKiBob3dldmVyLCBpZiBpdCBlbmRzIGluIGFueXRoaW5nIGVsc2Ugbm9uLXNsYXNoeSxcbiAgICogdGhlbiBpdCBtdXN0IE5PVCBnZXQgYSB0cmFpbGluZyBzbGFzaC5cbiAgICovXG4gIHZhciBsYXN0ID0gc3JjUGF0aC5zbGljZSgtMSlbMF07XG4gIHZhciBoYXNUcmFpbGluZ1NsYXNoID0gKHJlc3VsdC5ob3N0IHx8IHJlbGF0aXZlLmhvc3QgfHwgc3JjUGF0aC5sZW5ndGggPiAxKSAmJiAobGFzdCA9PT0gJy4nIHx8IGxhc3QgPT09ICcuLicpIHx8IGxhc3QgPT09ICcnO1xuXG4gIC8qXG4gICAqIHN0cmlwIHNpbmdsZSBkb3RzLCByZXNvbHZlIGRvdWJsZSBkb3RzIHRvIHBhcmVudCBkaXJcbiAgICogaWYgdGhlIHBhdGggdHJpZXMgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIGB1cGAgZW5kcyB1cCA+IDBcbiAgICovXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBzcmNQYXRoLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICBsYXN0ID0gc3JjUGF0aFtpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoIW11c3RFbmRBYnMgJiYgIXJlbW92ZUFsbERvdHMpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHNyY1BhdGgudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAobXVzdEVuZEFicyAmJiBzcmNQYXRoWzBdICE9PSAnJyAmJiAoIXNyY1BhdGhbMF0gfHwgc3JjUGF0aFswXS5jaGFyQXQoMCkgIT09ICcvJykpIHtcbiAgICBzcmNQYXRoLnVuc2hpZnQoJycpO1xuICB9XG5cbiAgaWYgKGhhc1RyYWlsaW5nU2xhc2ggJiYgKHNyY1BhdGguam9pbignLycpLnN1YnN0cigtMSkgIT09ICcvJykpIHtcbiAgICBzcmNQYXRoLnB1c2goJycpO1xuICB9XG5cbiAgdmFyIGlzQWJzb2x1dGUgPSBzcmNQYXRoWzBdID09PSAnJyB8fCAoc3JjUGF0aFswXSAmJiBzcmNQYXRoWzBdLmNoYXJBdCgwKSA9PT0gJy8nKTtcblxuICAvLyBwdXQgdGhlIGhvc3QgYmFja1xuICBpZiAocHN5Y2hvdGljKSB7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gaXNBYnNvbHV0ZSA/ICcnIDogc3JjUGF0aC5sZW5ndGggPyBzcmNQYXRoLnNoaWZ0KCkgOiAnJztcbiAgICByZXN1bHQuaG9zdCA9IHJlc3VsdC5ob3N0bmFtZTtcbiAgICAvKlxuICAgICAqIG9jY2F0aW9uYWx5IHRoZSBhdXRoIGNhbiBnZXQgc3R1Y2sgb25seSBpbiBob3N0XG4gICAgICogdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgICAqIHVybC5yZXNvbHZlT2JqZWN0KCdtYWlsdG86bG9jYWwxQGRvbWFpbjEnLCAnbG9jYWwyQGRvbWFpbjInKVxuICAgICAqL1xuICAgIHZhciBhdXRoSW5Ib3N0ID0gcmVzdWx0Lmhvc3QgJiYgcmVzdWx0Lmhvc3QuaW5kZXhPZignQCcpID4gMCA/IHJlc3VsdC5ob3N0LnNwbGl0KCdAJykgOiBmYWxzZTtcbiAgICBpZiAoYXV0aEluSG9zdCkge1xuICAgICAgcmVzdWx0LmF1dGggPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgICByZXN1bHQuaG9zdG5hbWUgPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgICByZXN1bHQuaG9zdCA9IHJlc3VsdC5ob3N0bmFtZTtcbiAgICB9XG4gIH1cblxuICBtdXN0RW5kQWJzID0gbXVzdEVuZEFicyB8fCAocmVzdWx0Lmhvc3QgJiYgc3JjUGF0aC5sZW5ndGgpO1xuXG4gIGlmIChtdXN0RW5kQWJzICYmICFpc0Fic29sdXRlKSB7XG4gICAgc3JjUGF0aC51bnNoaWZ0KCcnKTtcbiAgfVxuXG4gIGlmIChzcmNQYXRoLmxlbmd0aCA+IDApIHtcbiAgICByZXN1bHQucGF0aG5hbWUgPSBzcmNQYXRoLmpvaW4oJy8nKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQucGF0aG5hbWUgPSBudWxsO1xuICAgIHJlc3VsdC5wYXRoID0gbnVsbDtcbiAgfVxuXG4gIC8vIHRvIHN1cHBvcnQgcmVxdWVzdC5odHRwXG4gIGlmIChyZXN1bHQucGF0aG5hbWUgIT09IG51bGwgfHwgcmVzdWx0LnNlYXJjaCAhPT0gbnVsbCkge1xuICAgIHJlc3VsdC5wYXRoID0gKHJlc3VsdC5wYXRobmFtZSA/IHJlc3VsdC5wYXRobmFtZSA6ICcnKSArIChyZXN1bHQuc2VhcmNoID8gcmVzdWx0LnNlYXJjaCA6ICcnKTtcbiAgfVxuICByZXN1bHQuYXV0aCA9IHJlbGF0aXZlLmF1dGggfHwgcmVzdWx0LmF1dGg7XG4gIHJlc3VsdC5zbGFzaGVzID0gcmVzdWx0LnNsYXNoZXMgfHwgcmVsYXRpdmUuc2xhc2hlcztcbiAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5VcmwucHJvdG90eXBlLnBhcnNlSG9zdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvc3QgPSB0aGlzLmhvc3Q7XG4gIHZhciBwb3J0ID0gcG9ydFBhdHRlcm4uZXhlYyhob3N0KTtcbiAgaWYgKHBvcnQpIHtcbiAgICBwb3J0ID0gcG9ydFswXTtcbiAgICBpZiAocG9ydCAhPT0gJzonKSB7XG4gICAgICB0aGlzLnBvcnQgPSBwb3J0LnN1YnN0cigxKTtcbiAgICB9XG4gICAgaG9zdCA9IGhvc3Quc3Vic3RyKDAsIGhvc3QubGVuZ3RoIC0gcG9ydC5sZW5ndGgpO1xuICB9XG4gIGlmIChob3N0KSB7IHRoaXMuaG9zdG5hbWUgPSBob3N0OyB9XG59O1xuXG5leHBvcnRzLnBhcnNlID0gdXJsUGFyc2U7XG5leHBvcnRzLnJlc29sdmUgPSB1cmxSZXNvbHZlO1xuZXhwb3J0cy5yZXNvbHZlT2JqZWN0ID0gdXJsUmVzb2x2ZU9iamVjdDtcbmV4cG9ydHMuZm9ybWF0ID0gdXJsRm9ybWF0O1xuXG5leHBvcnRzLlVybCA9IFVybDtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5nZXRXcml0ZVN5bmNBcmdzID0gZXhwb3J0cy5nZXRXcml0ZUFyZ3MgPSBleHBvcnRzLmJ1ZlRvVWludDggPSB2b2lkIDA7XG5leHBvcnRzLnByb21pc2lmeSA9IHByb21pc2lmeTtcbmV4cG9ydHMudmFsaWRhdGVDYWxsYmFjayA9IHZhbGlkYXRlQ2FsbGJhY2s7XG5leHBvcnRzLm1vZGVUb051bWJlciA9IG1vZGVUb051bWJlcjtcbmV4cG9ydHMubnVsbENoZWNrID0gbnVsbENoZWNrO1xuZXhwb3J0cy5wYXRoVG9GaWxlbmFtZSA9IHBhdGhUb0ZpbGVuYW1lO1xuZXhwb3J0cy5jcmVhdGVFcnJvciA9IGNyZWF0ZUVycm9yO1xuZXhwb3J0cy5nZW5SbmRTdHI2ID0gZ2VuUm5kU3RyNjtcbmV4cG9ydHMuZmxhZ3NUb051bWJlciA9IGZsYWdzVG9OdW1iZXI7XG5leHBvcnRzLnN0cmVhbVRvQnVmZmVyID0gc3RyZWFtVG9CdWZmZXI7XG5leHBvcnRzLmJ1ZmZlclRvRW5jb2RpbmcgPSBidWZmZXJUb0VuY29kaW5nO1xuZXhwb3J0cy5pc1JlYWRhYmxlU3RyZWFtID0gaXNSZWFkYWJsZVN0cmVhbTtcbmNvbnN0IGNvbnN0YW50c18xID0gcmVxdWlyZShcIi4vY29uc3RhbnRzXCIpO1xuY29uc3QgZXJyb3JzID0gcmVxdWlyZShcIi4uL3ZlbmRvci9ub2RlL2ludGVybmFsL2Vycm9yc1wiKTtcbmNvbnN0IGJ1ZmZlcl8xID0gcmVxdWlyZShcIi4uL3ZlbmRvci9ub2RlL2ludGVybmFsL2J1ZmZlclwiKTtcbmNvbnN0IHF1ZXVlTWljcm90YXNrXzEgPSByZXF1aXJlKFwiLi4vcXVldWVNaWNyb3Rhc2tcIik7XG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwiLi4vY29yZS91dGlsXCIpO1xuZnVuY3Rpb24gcHJvbWlzaWZ5KGZzLCBmbiwgZ2V0UmVzdWx0ID0gaW5wdXQgPT4gaW5wdXQpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3MpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgZnNbZm5dLmJpbmQoZnMpKC4uLmFyZ3MsIChlcnJvciwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShnZXRSZXN1bHQocmVzdWx0KSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICAgIHRocm93IFR5cGVFcnJvcihjb25zdGFudHNfMS5FUlJTVFIuQ0IpO1xuICAgIHJldHVybiBjYWxsYmFjaztcbn1cbmZ1bmN0aW9uIF9tb2RlVG9OdW1iZXIobW9kZSwgZGVmKSB7XG4gICAgaWYgKHR5cGVvZiBtb2RlID09PSAnbnVtYmVyJylcbiAgICAgICAgcmV0dXJuIG1vZGU7XG4gICAgaWYgKHR5cGVvZiBtb2RlID09PSAnc3RyaW5nJylcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KG1vZGUsIDgpO1xuICAgIGlmIChkZWYpXG4gICAgICAgIHJldHVybiBtb2RlVG9OdW1iZXIoZGVmKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuZnVuY3Rpb24gbW9kZVRvTnVtYmVyKG1vZGUsIGRlZikge1xuICAgIGNvbnN0IHJlc3VsdCA9IF9tb2RlVG9OdW1iZXIobW9kZSwgZGVmKTtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ251bWJlcicgfHwgaXNOYU4ocmVzdWx0KSlcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihjb25zdGFudHNfMS5FUlJTVFIuTU9ERV9JTlQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBudWxsQ2hlY2socGF0aCwgY2FsbGJhY2spIHtcbiAgICBpZiAoKCcnICsgcGF0aCkuaW5kZXhPZignXFx1MDAwMCcpICE9PSAtMSkge1xuICAgICAgICBjb25zdCBlciA9IG5ldyBFcnJvcignUGF0aCBtdXN0IGJlIGEgc3RyaW5nIHdpdGhvdXQgbnVsbCBieXRlcycpO1xuICAgICAgICBlci5jb2RlID0gJ0VOT0VOVCc7XG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICB0aHJvdyBlcjtcbiAgICAgICAgKDAsIHF1ZXVlTWljcm90YXNrXzEuZGVmYXVsdCkoKCkgPT4ge1xuICAgICAgICAgICAgY2FsbGJhY2soZXIpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGdldFBhdGhGcm9tVVJMUG9zaXgodXJsKSB7XG4gICAgaWYgKHVybC5ob3N0bmFtZSAhPT0gJycpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5UeXBlRXJyb3IoJ0VSUl9JTlZBTElEX0ZJTEVfVVJMX0hPU1QnLCBwcm9jZXNzLnBsYXRmb3JtKTtcbiAgICB9XG4gICAgY29uc3QgcGF0aG5hbWUgPSB1cmwucGF0aG5hbWU7XG4gICAgZm9yIChsZXQgbiA9IDA7IG4gPCBwYXRobmFtZS5sZW5ndGg7IG4rKykge1xuICAgICAgICBpZiAocGF0aG5hbWVbbl0gPT09ICclJykge1xuICAgICAgICAgICAgY29uc3QgdGhpcmQgPSBwYXRobmFtZS5jb2RlUG9pbnRBdChuICsgMikgfCAweDIwO1xuICAgICAgICAgICAgaWYgKHBhdGhuYW1lW24gKyAxXSA9PT0gJzInICYmIHRoaXJkID09PSAxMDIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLlR5cGVFcnJvcignRVJSX0lOVkFMSURfRklMRV9VUkxfUEFUSCcsICdtdXN0IG5vdCBpbmNsdWRlIGVuY29kZWQgLyBjaGFyYWN0ZXJzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSk7XG59XG5mdW5jdGlvbiBwYXRoVG9GaWxlbmFtZShwYXRoKSB7XG4gICAgaWYgKHBhdGggaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIHBhdGggPSAoMCwgYnVmZmVyXzEuYnVmZmVyRnJvbSkocGF0aCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycgJiYgIWJ1ZmZlcl8xLkJ1ZmZlci5pc0J1ZmZlcihwYXRoKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCEocGF0aCBpbnN0YW5jZW9mIHJlcXVpcmUoJ3VybCcpLlVSTCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihjb25zdGFudHNfMS5FUlJTVFIuUEFUSF9TVFIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoY29uc3RhbnRzXzEuRVJSU1RSLlBBVEhfU1RSKTtcbiAgICAgICAgfVxuICAgICAgICBwYXRoID0gZ2V0UGF0aEZyb21VUkxQb3NpeChwYXRoKTtcbiAgICB9XG4gICAgY29uc3QgcGF0aFN0cmluZyA9IFN0cmluZyhwYXRoKTtcbiAgICBudWxsQ2hlY2socGF0aFN0cmluZyk7XG4gICAgLy8gcmV0dXJuIHNsYXNoKHBhdGhTdHJpbmcpO1xuICAgIHJldHVybiBwYXRoU3RyaW5nO1xufVxuY29uc3QgRU5PRU5UID0gJ0VOT0VOVCc7XG5jb25zdCBFQkFERiA9ICdFQkFERic7XG5jb25zdCBFSU5WQUwgPSAnRUlOVkFMJztcbmNvbnN0IEVQRVJNID0gJ0VQRVJNJztcbmNvbnN0IEVQUk9UTyA9ICdFUFJPVE8nO1xuY29uc3QgRUVYSVNUID0gJ0VFWElTVCc7XG5jb25zdCBFTk9URElSID0gJ0VOT1RESVInO1xuY29uc3QgRU1GSUxFID0gJ0VNRklMRSc7XG5jb25zdCBFQUNDRVMgPSAnRUFDQ0VTJztcbmNvbnN0IEVJU0RJUiA9ICdFSVNESVInO1xuY29uc3QgRU5PVEVNUFRZID0gJ0VOT1RFTVBUWSc7XG5jb25zdCBFTk9TWVMgPSAnRU5PU1lTJztcbmNvbnN0IEVSUl9GU19FSVNESVIgPSAnRVJSX0ZTX0VJU0RJUic7XG5jb25zdCBFUlJfT1VUX09GX1JBTkdFID0gJ0VSUl9PVVRfT0ZfUkFOR0UnO1xuZnVuY3Rpb24gZm9ybWF0RXJyb3IoZXJyb3JDb2RlLCBmdW5jID0gJycsIHBhdGggPSAnJywgcGF0aDIgPSAnJykge1xuICAgIGxldCBwYXRoRm9ybWF0dGVkID0gJyc7XG4gICAgaWYgKHBhdGgpXG4gICAgICAgIHBhdGhGb3JtYXR0ZWQgPSBgICcke3BhdGh9J2A7XG4gICAgaWYgKHBhdGgyKVxuICAgICAgICBwYXRoRm9ybWF0dGVkICs9IGAgLT4gJyR7cGF0aDJ9J2A7XG4gICAgc3dpdGNoIChlcnJvckNvZGUpIHtcbiAgICAgICAgY2FzZSBFTk9FTlQ6XG4gICAgICAgICAgICByZXR1cm4gYEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSwgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgICAgICBjYXNlIEVCQURGOlxuICAgICAgICAgICAgcmV0dXJuIGBFQkFERjogYmFkIGZpbGUgZGVzY3JpcHRvciwgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgICAgICBjYXNlIEVJTlZBTDpcbiAgICAgICAgICAgIHJldHVybiBgRUlOVkFMOiBpbnZhbGlkIGFyZ3VtZW50LCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRVBFUk06XG4gICAgICAgICAgICByZXR1cm4gYEVQRVJNOiBvcGVyYXRpb24gbm90IHBlcm1pdHRlZCwgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgICAgICBjYXNlIEVQUk9UTzpcbiAgICAgICAgICAgIHJldHVybiBgRVBST1RPOiBwcm90b2NvbCBlcnJvciwgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgICAgICBjYXNlIEVFWElTVDpcbiAgICAgICAgICAgIHJldHVybiBgRUVYSVNUOiBmaWxlIGFscmVhZHkgZXhpc3RzLCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRU5PVERJUjpcbiAgICAgICAgICAgIHJldHVybiBgRU5PVERJUjogbm90IGEgZGlyZWN0b3J5LCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRUlTRElSOlxuICAgICAgICAgICAgcmV0dXJuIGBFSVNESVI6IGlsbGVnYWwgb3BlcmF0aW9uIG9uIGEgZGlyZWN0b3J5LCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRUFDQ0VTOlxuICAgICAgICAgICAgcmV0dXJuIGBFQUNDRVM6IHBlcm1pc3Npb24gZGVuaWVkLCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRU5PVEVNUFRZOlxuICAgICAgICAgICAgcmV0dXJuIGBFTk9URU1QVFk6IGRpcmVjdG9yeSBub3QgZW1wdHksICR7ZnVuY30ke3BhdGhGb3JtYXR0ZWR9YDtcbiAgICAgICAgY2FzZSBFTUZJTEU6XG4gICAgICAgICAgICByZXR1cm4gYEVNRklMRTogdG9vIG1hbnkgb3BlbiBmaWxlcywgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgICAgICBjYXNlIEVOT1NZUzpcbiAgICAgICAgICAgIHJldHVybiBgRU5PU1lTOiBmdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQsICR7ZnVuY30ke3BhdGhGb3JtYXR0ZWR9YDtcbiAgICAgICAgY2FzZSBFUlJfRlNfRUlTRElSOlxuICAgICAgICAgICAgcmV0dXJuIGBbRVJSX0ZTX0VJU0RJUl06IFBhdGggaXMgYSBkaXJlY3Rvcnk6ICR7ZnVuY30gcmV0dXJuZWQgRUlTRElSIChpcyBhIGRpcmVjdG9yeSkgJHtwYXRofWA7XG4gICAgICAgIGNhc2UgRVJSX09VVF9PRl9SQU5HRTpcbiAgICAgICAgICAgIHJldHVybiBgW0VSUl9PVVRfT0ZfUkFOR0VdOiB2YWx1ZSBvdXQgb2YgcmFuZ2UsICR7ZnVuY30ke3BhdGhGb3JtYXR0ZWR9YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBgJHtlcnJvckNvZGV9OiBlcnJvciBvY2N1cnJlZCwgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZUVycm9yKGVycm9yQ29kZSwgZnVuYyA9ICcnLCBwYXRoID0gJycsIHBhdGgyID0gJycsIENvbnN0cnVjdG9yID0gRXJyb3IpIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBDb25zdHJ1Y3Rvcihmb3JtYXRFcnJvcihlcnJvckNvZGUsIGZ1bmMsIHBhdGgsIHBhdGgyKSk7XG4gICAgZXJyb3IuY29kZSA9IGVycm9yQ29kZTtcbiAgICBpZiAocGF0aCkge1xuICAgICAgICBlcnJvci5wYXRoID0gcGF0aDtcbiAgICB9XG4gICAgcmV0dXJuIGVycm9yO1xufVxuZnVuY3Rpb24gZ2VuUm5kU3RyNigpIHtcbiAgICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgOCkucGFkRW5kKDYsICcwJyk7XG59XG5mdW5jdGlvbiBmbGFnc1RvTnVtYmVyKGZsYWdzKSB7XG4gICAgaWYgKHR5cGVvZiBmbGFncyA9PT0gJ251bWJlcicpXG4gICAgICAgIHJldHVybiBmbGFncztcbiAgICBpZiAodHlwZW9mIGZsYWdzID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBmbGFnc051bSA9IGNvbnN0YW50c18xLkZMQUdTW2ZsYWdzXTtcbiAgICAgICAgaWYgKHR5cGVvZiBmbGFnc051bSAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICByZXR1cm4gZmxhZ3NOdW07XG4gICAgfVxuICAgIC8vIHRocm93IG5ldyBUeXBlRXJyb3IoZm9ybWF0RXJyb3IoRVJSU1RSX0ZMQUcoZmxhZ3MpKSk7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5UeXBlRXJyb3IoJ0VSUl9JTlZBTElEX09QVF9WQUxVRScsICdmbGFncycsIGZsYWdzKTtcbn1cbmZ1bmN0aW9uIHN0cmVhbVRvQnVmZmVyKHN0cmVhbSkge1xuICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHN0cmVhbS5vbignZGF0YScsIGNodW5rID0+IGNodW5rcy5wdXNoKGNodW5rKSk7XG4gICAgICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4gcmVzb2x2ZShidWZmZXJfMS5CdWZmZXIuY29uY2F0KGNodW5rcykpKTtcbiAgICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgfSk7XG59XG5jb25zdCBidWZUb1VpbnQ4ID0gKGJ1ZikgPT4gbmV3IFVpbnQ4QXJyYXkoYnVmLmJ1ZmZlciwgYnVmLmJ5dGVPZmZzZXQsIGJ1Zi5ieXRlTGVuZ3RoKTtcbmV4cG9ydHMuYnVmVG9VaW50OCA9IGJ1ZlRvVWludDg7XG5jb25zdCBnZXRXcml0ZUFyZ3MgPSAoZmQsIGEsIGIsIGMsIGQsIGUpID0+IHtcbiAgICAoMCwgdXRpbF8xLnZhbGlkYXRlRmQpKGZkKTtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBsZXQgbGVuZ3RoO1xuICAgIGxldCBwb3NpdGlvbiA9IG51bGw7XG4gICAgbGV0IGVuY29kaW5nO1xuICAgIGxldCBjYWxsYmFjaztcbiAgICBjb25zdCB0aXBhID0gdHlwZW9mIGE7XG4gICAgY29uc3QgdGlwYiA9IHR5cGVvZiBiO1xuICAgIGNvbnN0IHRpcGMgPSB0eXBlb2YgYztcbiAgICBjb25zdCB0aXBkID0gdHlwZW9mIGQ7XG4gICAgaWYgKHRpcGEgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0aXBiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWxsYmFjayA9IGI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGlwYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgb2Zmc2V0ID0gYiB8IDA7XG4gICAgICAgICAgICBjYWxsYmFjayA9IGM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGlwZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgb2Zmc2V0ID0gYiB8IDA7XG4gICAgICAgICAgICBsZW5ndGggPSBjO1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb2Zmc2V0ID0gYiB8IDA7XG4gICAgICAgICAgICBsZW5ndGggPSBjO1xuICAgICAgICAgICAgcG9zaXRpb24gPSBkO1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAodGlwYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRpcGMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gYjtcbiAgICAgICAgICAgIGNhbGxiYWNrID0gYztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aXBkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IGI7XG4gICAgICAgICAgICBlbmNvZGluZyA9IGM7XG4gICAgICAgICAgICBjYWxsYmFjayA9IGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgYnVmID0gKDAsIHV0aWxfMS5kYXRhVG9CdWZmZXIpKGEsIGVuY29kaW5nKTtcbiAgICBpZiAodGlwYSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBsZW5ndGggPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgbGVuZ3RoID0gYnVmLmxlbmd0aDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgIGxlbmd0aCA9IGJ1Zi5sZW5ndGg7XG4gICAgfVxuICAgIGNvbnN0IGNiID0gdmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjayk7XG4gICAgcmV0dXJuIFtmZCwgdGlwYSA9PT0gJ3N0cmluZycsIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uLCBjYl07XG59O1xuZXhwb3J0cy5nZXRXcml0ZUFyZ3MgPSBnZXRXcml0ZUFyZ3M7XG5jb25zdCBnZXRXcml0ZVN5bmNBcmdzID0gKGZkLCBhLCBiLCBjLCBkKSA9PiB7XG4gICAgKDAsIHV0aWxfMS52YWxpZGF0ZUZkKShmZCk7XG4gICAgbGV0IGVuY29kaW5nO1xuICAgIGxldCBvZmZzZXQ7XG4gICAgbGV0IGxlbmd0aDtcbiAgICBsZXQgcG9zaXRpb247XG4gICAgY29uc3QgaXNCdWZmZXIgPSB0eXBlb2YgYSAhPT0gJ3N0cmluZyc7XG4gICAgaWYgKGlzQnVmZmVyKSB7XG4gICAgICAgIG9mZnNldCA9IChiIHx8IDApIHwgMDtcbiAgICAgICAgbGVuZ3RoID0gYztcbiAgICAgICAgcG9zaXRpb24gPSBkO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcG9zaXRpb24gPSBiO1xuICAgICAgICBlbmNvZGluZyA9IGM7XG4gICAgfVxuICAgIGNvbnN0IGJ1ZiA9ICgwLCB1dGlsXzEuZGF0YVRvQnVmZmVyKShhLCBlbmNvZGluZyk7XG4gICAgaWYgKGlzQnVmZmVyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbGVuZ3RoID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgbGVuZ3RoID0gYnVmLmxlbmd0aDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgbGVuZ3RoID0gYnVmLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIFtmZCwgYnVmLCBvZmZzZXQgfHwgMCwgbGVuZ3RoLCBwb3NpdGlvbl07XG59O1xuZXhwb3J0cy5nZXRXcml0ZVN5bmNBcmdzID0gZ2V0V3JpdGVTeW5jQXJncztcbmZ1bmN0aW9uIGJ1ZmZlclRvRW5jb2RpbmcoYnVmZmVyLCBlbmNvZGluZykge1xuICAgIGlmICghZW5jb2RpbmcgfHwgZW5jb2RpbmcgPT09ICdidWZmZXInKVxuICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZyhlbmNvZGluZyk7XG59XG5mdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtKHN0cmVhbSkge1xuICAgIHJldHVybiAoc3RyZWFtICE9PSBudWxsICYmXG4gICAgICAgIHR5cGVvZiBzdHJlYW0gPT09ICdvYmplY3QnICYmXG4gICAgICAgIHR5cGVvZiBzdHJlYW0ucGlwZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICB0eXBlb2Ygc3RyZWFtLm9uID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgIHN0cmVhbS5yZWFkYWJsZSA9PT0gdHJ1ZSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlsLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5TdXBlcmJsb2NrID0gdm9pZCAwO1xuY29uc3QgcGF0aF8xID0gcmVxdWlyZShcIi4uL3ZlbmRvci9ub2RlL3BhdGhcIik7XG5jb25zdCBOb2RlXzEgPSByZXF1aXJlKFwiLi9Ob2RlXCIpO1xuY29uc3QgTGlua18xID0gcmVxdWlyZShcIi4vTGlua1wiKTtcbmNvbnN0IEZpbGVfMSA9IHJlcXVpcmUoXCIuL0ZpbGVcIik7XG5jb25zdCBidWZmZXJfMSA9IHJlcXVpcmUoXCIuLi92ZW5kb3Ivbm9kZS9pbnRlcm5hbC9idWZmZXJcIik7XG5jb25zdCBwcm9jZXNzXzEgPSByZXF1aXJlKFwiLi4vcHJvY2Vzc1wiKTtcbmNvbnN0IGNvbnN0YW50c18xID0gcmVxdWlyZShcIi4uL2NvbnN0YW50c1wiKTtcbmNvbnN0IGNvbnN0YW50c18yID0gcmVxdWlyZShcIi4uL25vZGUvY29uc3RhbnRzXCIpO1xuY29uc3QgdXRpbF8xID0gcmVxdWlyZShcIi4uL25vZGUvdXRpbFwiKTtcbmNvbnN0IHV0aWxfMiA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5jb25zdCBqc29uXzEgPSByZXF1aXJlKFwiLi9qc29uXCIpO1xuY29uc3QgcGF0aFNlcCA9IHBhdGhfMS5wb3NpeCA/IHBhdGhfMS5wb3NpeC5zZXAgOiBwYXRoXzEuc2VwO1xuY29uc3QgcGF0aFJlbGF0aXZlID0gcGF0aF8xLnBvc2l4ID8gcGF0aF8xLnBvc2l4LnJlbGF0aXZlIDogcGF0aF8xLnJlbGF0aXZlO1xuY29uc3QgcGF0aEpvaW4gPSBwYXRoXzEucG9zaXggPyBwYXRoXzEucG9zaXguam9pbiA6IHBhdGhfMS5qb2luO1xuY29uc3QgeyBPX1JET05MWSwgT19XUk9OTFksIE9fUkRXUiwgT19DUkVBVCwgT19FWENMLCBPX1RSVU5DLCBPX0FQUEVORCwgT19ESVJFQ1RPUlkgfSA9IGNvbnN0YW50c18xLmNvbnN0YW50cztcbi8qKlxuICogUmVwcmVzZW50cyBhIGZpbGVzeXN0ZW0gc3VwZXJibG9jaywgd2hpY2ggaXMgdGhlIHJvb3Qgb2YgYSB2aXJ0dWFsXG4gKiBmaWxlc3lzdGVtIGluIExpbnV4LlxuICogQHNlZSBodHRwczovL2x4ci5saW51eC5uby9saW51eCt2My4xMS4yL2luY2x1ZGUvbGludXgvZnMuaCNMMTI0MlxuICovXG5jbGFzcyBTdXBlcmJsb2NrIHtcbiAgICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY3dkKSB7XG4gICAgICAgIGNvbnN0IHZvbCA9IG5ldyBTdXBlcmJsb2NrKCk7XG4gICAgICAgIHZvbC5mcm9tSlNPTihqc29uLCBjd2QpO1xuICAgICAgICByZXR1cm4gdm9sO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbU5lc3RlZEpTT04oanNvbiwgY3dkKSB7XG4gICAgICAgIGNvbnN0IHZvbCA9IG5ldyBTdXBlcmJsb2NrKCk7XG4gICAgICAgIHZvbC5mcm9tTmVzdGVkSlNPTihqc29uLCBjd2QpO1xuICAgICAgICByZXR1cm4gdm9sO1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcyA9IHt9KSB7XG4gICAgICAgIC8vIEktbm9kZSBudW1iZXIgY291bnRlci5cbiAgICAgICAgdGhpcy5pbm8gPSAwO1xuICAgICAgICAvLyBBIG1hcHBpbmcgZm9yIGktbm9kZSBudW1iZXJzIHRvIGktbm9kZXMgKGBOb2RlYCk7XG4gICAgICAgIHRoaXMuaW5vZGVzID0ge307XG4gICAgICAgIC8vIExpc3Qgb2YgcmVsZWFzZWQgaS1ub2RlIG51bWJlcnMsIGZvciByZXVzZS5cbiAgICAgICAgdGhpcy5yZWxlYXNlZElub3MgPSBbXTtcbiAgICAgICAgLy8gQSBtYXBwaW5nIGZvciBmaWxlIGRlc2NyaXB0b3JzIHRvIGBGaWxlYHMuXG4gICAgICAgIHRoaXMuZmRzID0ge307XG4gICAgICAgIC8vIEEgbGlzdCBvZiByZXVzYWJsZSAob3BlbmVkIGFuZCBjbG9zZWQpIGZpbGUgZGVzY3JpcHRvcnMsIHRoYXQgc2hvdWxkIGJlXG4gICAgICAgIC8vIHVzZWQgZmlyc3QgYmVmb3JlIGNyZWF0aW5nIGEgbmV3IGZpbGUgZGVzY3JpcHRvci5cbiAgICAgICAgdGhpcy5yZWxlYXNlZEZkcyA9IFtdO1xuICAgICAgICAvLyBNYXggbnVtYmVyIG9mIG9wZW4gZmlsZXMuXG4gICAgICAgIHRoaXMubWF4RmlsZXMgPSAxMDAwMDtcbiAgICAgICAgLy8gQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBmaWxlcy5cbiAgICAgICAgdGhpcy5vcGVuRmlsZXMgPSAwO1xuICAgICAgICB0aGlzLm9wZW4gPSAoZmlsZW5hbWUsIGZsYWdzTnVtLCBtb2RlTnVtLCByZXNvbHZlU3ltbGlua3MgPSB0cnVlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5vcGVuRmlsZShmaWxlbmFtZSwgZmxhZ3NOdW0sIG1vZGVOdW0sIHJlc29sdmVTeW1saW5rcyk7XG4gICAgICAgICAgICBpZiAoIWZpbGUpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFTk9FTlRcIiAvKiBFUlJPUl9DT0RFLkVOT0VOVCAqLywgJ29wZW4nLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gZmlsZS5mZDtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy53cml0ZUZpbGUgPSAoaWQsIGJ1ZiwgZmxhZ3NOdW0sIG1vZGVOdW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzVXNlckZkID0gdHlwZW9mIGlkID09PSAnbnVtYmVyJztcbiAgICAgICAgICAgIGxldCBmZDtcbiAgICAgICAgICAgIGlmIChpc1VzZXJGZClcbiAgICAgICAgICAgICAgICBmZCA9IGlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZkID0gdGhpcy5vcGVuKCgwLCB1dGlsXzEucGF0aFRvRmlsZW5hbWUpKGlkKSwgZmxhZ3NOdW0sIG1vZGVOdW0pO1xuICAgICAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gYnVmLmxlbmd0aDtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IGZsYWdzTnVtICYgT19BUFBFTkQgPyB1bmRlZmluZWQgOiAwO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB3aGlsZSAobGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3cml0dGVuID0gdGhpcy53cml0ZShmZCwgYnVmLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gd3JpdHRlbjtcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoIC09IHdyaXR0ZW47XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbiAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gKz0gd3JpdHRlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVXNlckZkKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKGZkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZWFkID0gKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKGJ1ZmZlci5ieXRlTGVuZ3RoIDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFUlJfT1VUX09GX1JBTkdFXCIgLyogRVJST1JfQ09ERS5FUlJfT1VUX09GX1JBTkdFICovLCAncmVhZCcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBSYW5nZUVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmdldEZpbGVCeUZkT3JUaHJvdyhmZCk7XG4gICAgICAgICAgICBpZiAoZmlsZS5ub2RlLmlzU3ltbGluaygpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFUEVSTVwiIC8qIEVSUk9SX0NPREUuRVBFUk0gKi8sICdyZWFkJywgZmlsZS5saW5rLmdldFBhdGgoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKGJ1ZmZlciwgTnVtYmVyKG9mZnNldCksIE51bWJlcihsZW5ndGgpLCBwb3NpdGlvbiA9PT0gLTEgfHwgdHlwZW9mIHBvc2l0aW9uICE9PSAnbnVtYmVyJyA/IHVuZGVmaW5lZCA6IHBvc2l0aW9uKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZWFkdiA9IChmZCwgYnVmZmVycywgcG9zaXRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmdldEZpbGVCeUZkT3JUaHJvdyhmZCk7XG4gICAgICAgICAgICBsZXQgcCA9IHBvc2l0aW9uID8/IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChwID09PSAtMSlcbiAgICAgICAgICAgICAgICBwID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IGJ5dGVzUmVhZCA9IDA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnl0ZXMgPSBmaWxlLnJlYWQoYnVmZmVyLCAwLCBidWZmZXIuYnl0ZUxlbmd0aCwgcCk7XG4gICAgICAgICAgICAgICAgcCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBieXRlc1JlYWQgKz0gYnl0ZXM7XG4gICAgICAgICAgICAgICAgaWYgKGJ5dGVzIDwgYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGJ5dGVzUmVhZDtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5saW5rID0gKGZpbGVuYW1lMSwgZmlsZW5hbWUyKSA9PiB7XG4gICAgICAgICAgICBsZXQgbGluazE7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxpbmsxID0gdGhpcy5nZXRMaW5rT3JUaHJvdyhmaWxlbmFtZTEsICdsaW5rJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlKVxuICAgICAgICAgICAgICAgICAgICBlcnIgPSAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShlcnIuY29kZSwgJ2xpbmsnLCBmaWxlbmFtZTEsIGZpbGVuYW1lMik7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGlybmFtZTIgPSAoMCwgcGF0aF8xLmRpcm5hbWUpKGZpbGVuYW1lMik7XG4gICAgICAgICAgICBsZXQgZGlyMjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZGlyMiA9IHRoaXMuZ2V0TGlua09yVGhyb3coZGlybmFtZTIsICdsaW5rJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gQXVnbWVudCBlcnJvciB3aXRoIGZpbGVuYW1lMVxuICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSlcbiAgICAgICAgICAgICAgICAgICAgZXJyID0gKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoZXJyLmNvZGUsICdsaW5rJywgZmlsZW5hbWUxLCBmaWxlbmFtZTIpO1xuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSAoMCwgcGF0aF8xLmJhc2VuYW1lKShmaWxlbmFtZTIpO1xuICAgICAgICAgICAgaWYgKGRpcjIuZ2V0Q2hpbGQobmFtZSkpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFRVhJU1RcIiAvKiBFUlJPUl9DT0RFLkVFWElTVCAqLywgJ2xpbmsnLCBmaWxlbmFtZTEsIGZpbGVuYW1lMik7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbGluazEuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgbm9kZS5ubGluaysrO1xuICAgICAgICAgICAgZGlyMi5jcmVhdGVDaGlsZChuYW1lLCBub2RlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy51bmxpbmsgPSAoZmlsZW5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldExpbmtPclRocm93KGZpbGVuYW1lLCAndW5saW5rJyk7XG4gICAgICAgICAgICAvLyBUT0RPOiBDaGVjayBpZiBpdCBpcyBmaWxlLCBkaXIsIG90aGVyLi4uXG4gICAgICAgICAgICBpZiAobGluay5sZW5ndGgpXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0RpciBub3QgZW1wdHkuLi4nKTtcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlTGluayhsaW5rKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBsaW5rLmdldE5vZGUoKTtcbiAgICAgICAgICAgIG5vZGUubmxpbmstLTtcbiAgICAgICAgICAgIC8vIFdoZW4gYWxsIGhhcmQgbGlua3MgdG8gaS1ub2RlIGFyZSBkZWxldGVkLCByZW1vdmUgdGhlIGktbm9kZSwgdG9vLlxuICAgICAgICAgICAgaWYgKG5vZGUubmxpbmsgPD0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlTm9kZShub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zeW1saW5rID0gKHRhcmdldEZpbGVuYW1lLCBwYXRoRmlsZW5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGhTdGVwcyA9ICgwLCB1dGlsXzIuZmlsZW5hbWVUb1N0ZXBzKShwYXRoRmlsZW5hbWUpO1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGlyZWN0b3J5IGV4aXN0cywgd2hlcmUgd2UgYWJvdXQgdG8gY3JlYXRlIGEgc3ltbGluay5cbiAgICAgICAgICAgIGxldCBkaXJMaW5rO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBkaXJMaW5rID0gdGhpcy5nZXRMaW5rUGFyZW50QXNEaXJPclRocm93KHBhdGhTdGVwcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gQ2F0Y2ggZXJyb3IgdG8gcG9wdWxhdGUgd2l0aCB0aGUgY29ycmVjdCBmaWVsZHMgLSBnZXRMaW5rUGFyZW50QXNEaXJPclRocm93IHdvbid0IGJlIGF3YXJlIG9mIHRoZSBzZWNvbmQgcGF0aFxuICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSlcbiAgICAgICAgICAgICAgICAgICAgZXJyID0gKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoZXJyLmNvZGUsICdzeW1saW5rJywgdGFyZ2V0RmlsZW5hbWUsIHBhdGhGaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHBhdGhTdGVwc1twYXRoU3RlcHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAvLyBDaGVjayBpZiBuZXcgZmlsZSBhbHJlYWR5IGV4aXN0cy5cbiAgICAgICAgICAgIGlmIChkaXJMaW5rLmdldENoaWxkKG5hbWUpKVxuICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRUVYSVNUXCIgLyogRVJST1JfQ09ERS5FRVhJU1QgKi8sICdzeW1saW5rJywgdGFyZ2V0RmlsZW5hbWUsIHBhdGhGaWxlbmFtZSk7XG4gICAgICAgICAgICAvLyBDaGVjayBwZXJtaXNzaW9ucyBvbiB0aGUgcGF0aCB3aGVyZSB3ZSBhcmUgY3JlYXRpbmcgdGhlIHN5bWxpbmsuXG4gICAgICAgICAgICAvLyBOb3RlIHdlJ3JlIG5vdCBjaGVja2luZyBwZXJtaXNzaW9ucyBvbiB0aGUgdGFyZ2V0IHBhdGg6IEl0IGlzIG5vdCBhbiBlcnJvciB0byBjcmVhdGUgYSBzeW1saW5rIHRvIGFcbiAgICAgICAgICAgIC8vIG5vbi1leGlzdGVudCBvciBpbmFjY2Vzc2libGUgdGFyZ2V0XG4gICAgICAgICAgICBjb25zdCBub2RlID0gZGlyTGluay5nZXROb2RlKCk7XG4gICAgICAgICAgICBpZiAoIW5vZGUuY2FuRXhlY3V0ZSgpIHx8ICFub2RlLmNhbldyaXRlKCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ3N5bWxpbmsnLCB0YXJnZXRGaWxlbmFtZSwgcGF0aEZpbGVuYW1lKTtcbiAgICAgICAgICAgIC8vIENyZWF0ZSBzeW1saW5rLlxuICAgICAgICAgICAgY29uc3Qgc3ltbGluayA9IGRpckxpbmsuY3JlYXRlQ2hpbGQobmFtZSk7XG4gICAgICAgICAgICBzeW1saW5rLmdldE5vZGUoKS5tYWtlU3ltbGluayh0YXJnZXRGaWxlbmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gc3ltbGluaztcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZW5hbWUgPSAob2xkUGF0aEZpbGVuYW1lLCBuZXdQYXRoRmlsZW5hbWUpID0+IHtcbiAgICAgICAgICAgIGxldCBsaW5rO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsaW5rID0gdGhpcy5nZXRSZXNvbHZlZExpbmtPclRocm93KG9sZFBhdGhGaWxlbmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gQXVnbWVudCBlcnIgd2l0aCBuZXdQYXRoRmlsZW5hbWVcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUpXG4gICAgICAgICAgICAgICAgICAgIGVyciA9ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKGVyci5jb2RlLCAncmVuYW1lJywgb2xkUGF0aEZpbGVuYW1lLCBuZXdQYXRoRmlsZW5hbWUpO1xuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRPRE86IENoZWNrIGlmIGl0IGlzIGRpcmVjdG9yeSwgaWYgbm9uLWVtcHR5LCB3ZSBjYW5ub3QgbW92ZSBpdCwgcmlnaHQ/XG4gICAgICAgICAgICAvLyBDaGVjayBkaXJlY3RvcnkgZXhpc3RzIGZvciB0aGUgbmV3IGxvY2F0aW9uLlxuICAgICAgICAgICAgbGV0IG5ld1BhdGhEaXJMaW5rO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBuZXdQYXRoRGlyTGluayA9IHRoaXMuZ2V0TGlua1BhcmVudEFzRGlyT3JUaHJvdyhuZXdQYXRoRmlsZW5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIC8vIEF1Z21lbnQgZXJyb3Igd2l0aCBvbGRQYXRoRmlsZW5hbWVcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUpXG4gICAgICAgICAgICAgICAgICAgIGVyciA9ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKGVyci5jb2RlLCAncmVuYW1lJywgb2xkUGF0aEZpbGVuYW1lLCBuZXdQYXRoRmlsZW5hbWUpO1xuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRPRE86IEFsc28gdHJlYXQgY2FzZXMgd2l0aCBkaXJlY3RvcmllcyBhbmQgc3ltYm9saWMgbGlua3MuXG4gICAgICAgICAgICAvLyBUT0RPOiBTZWU6IGh0dHA6Ly9tYW43Lm9yZy9saW51eC9tYW4tcGFnZXMvbWFuMi9yZW5hbWUuMi5odG1sXG4gICAgICAgICAgICAvLyBSZW1vdmUgaGFyZCBsaW5rIGZyb20gb2xkIGZvbGRlci5cbiAgICAgICAgICAgIGNvbnN0IG9sZExpbmtQYXJlbnQgPSBsaW5rLnBhcmVudDtcbiAgICAgICAgICAgIGlmICghb2xkTGlua1BhcmVudClcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVJTlZBTFwiIC8qIEVSUk9SX0NPREUuRUlOVkFMICovLCAncmVuYW1lJywgb2xkUGF0aEZpbGVuYW1lLCBuZXdQYXRoRmlsZW5hbWUpO1xuICAgICAgICAgICAgLy8gQ2hlY2sgd2UgaGF2ZSBhY2Nlc3MgYW5kIHdyaXRlIHBlcm1pc3Npb25zIGluIGJvdGggcGxhY2VzXG4gICAgICAgICAgICBjb25zdCBvbGRQYXJlbnROb2RlID0gb2xkTGlua1BhcmVudC5nZXROb2RlKCk7XG4gICAgICAgICAgICBjb25zdCBuZXdQYXRoRGlyTm9kZSA9IG5ld1BhdGhEaXJMaW5rLmdldE5vZGUoKTtcbiAgICAgICAgICAgIGlmICghb2xkUGFyZW50Tm9kZS5jYW5FeGVjdXRlKCkgfHxcbiAgICAgICAgICAgICAgICAhb2xkUGFyZW50Tm9kZS5jYW5Xcml0ZSgpIHx8XG4gICAgICAgICAgICAgICAgIW5ld1BhdGhEaXJOb2RlLmNhbkV4ZWN1dGUoKSB8fFxuICAgICAgICAgICAgICAgICFuZXdQYXRoRGlyTm9kZS5jYW5Xcml0ZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ3JlbmFtZScsIG9sZFBhdGhGaWxlbmFtZSwgbmV3UGF0aEZpbGVuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9sZExpbmtQYXJlbnQuZGVsZXRlQ2hpbGQobGluayk7XG4gICAgICAgICAgICAvLyBSZW5hbWUgc2hvdWxkIG92ZXJ3cml0ZSB0aGUgbmV3IHBhdGgsIGlmIHRoYXQgZXhpc3RzLlxuICAgICAgICAgICAgY29uc3QgbmFtZSA9ICgwLCBwYXRoXzEuYmFzZW5hbWUpKG5ld1BhdGhGaWxlbmFtZSk7XG4gICAgICAgICAgICBsaW5rLm5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgbGluay5zdGVwcyA9IFsuLi5uZXdQYXRoRGlyTGluay5zdGVwcywgbmFtZV07XG4gICAgICAgICAgICBuZXdQYXRoRGlyTGluay5zZXRDaGlsZChsaW5rLmdldE5hbWUoKSwgbGluayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubWtkaXIgPSAoZmlsZW5hbWUsIG1vZGVOdW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0ZXBzID0gKDAsIHV0aWxfMi5maWxlbmFtZVRvU3RlcHMpKGZpbGVuYW1lKTtcbiAgICAgICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBpZiB1c2VyIHRyaWVzIHRvIGNyZWF0ZSByb290IGRpciBgZnMubWtkaXJTeW5jKCcvJylgLlxuICAgICAgICAgICAgaWYgKCFzdGVwcy5sZW5ndGgpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFRVhJU1RcIiAvKiBFUlJPUl9DT0RFLkVFWElTVCAqLywgJ21rZGlyJywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgY29uc3QgZGlyID0gdGhpcy5nZXRMaW5rUGFyZW50QXNEaXJPclRocm93KGZpbGVuYW1lLCAnbWtkaXInKTtcbiAgICAgICAgICAgIC8vIENoZWNrIHBhdGggYWxyZWFkeSBleGlzdHMuXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gc3RlcHNbc3RlcHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBpZiAoZGlyLmdldENoaWxkKG5hbWUpKVxuICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRUVYSVNUXCIgLyogRVJST1JfQ09ERS5FRVhJU1QgKi8sICdta2RpcicsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBkaXIuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgaWYgKCFub2RlLmNhbldyaXRlKCkgfHwgIW5vZGUuY2FuRXhlY3V0ZSgpKVxuICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRUFDQ0VTXCIgLyogRVJST1JfQ09ERS5FQUNDRVMgKi8sICdta2RpcicsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGRpci5jcmVhdGVDaGlsZChuYW1lLCB0aGlzLmNyZWF0ZU5vZGUoY29uc3RhbnRzXzEuY29uc3RhbnRzLlNfSUZESVIgfCBtb2RlTnVtKSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGRpcmVjdG9yeSB0cmVlIHJlY3Vyc2l2ZWx5LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5ta2RpcnAgPSAoZmlsZW5hbWUsIG1vZGVOdW0pID0+IHtcbiAgICAgICAgICAgIGxldCBjcmVhdGVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBzdGVwcyA9ICgwLCB1dGlsXzIuZmlsZW5hbWVUb1N0ZXBzKShmaWxlbmFtZSk7XG4gICAgICAgICAgICBsZXQgY3VyciA9IG51bGw7XG4gICAgICAgICAgICBsZXQgaSA9IHN0ZXBzLmxlbmd0aDtcbiAgICAgICAgICAgIC8vIEZpbmQgdGhlIGxvbmdlc3Qgc3VicGF0aCBvZiBmaWxlbmFtZSB0aGF0IHN0aWxsIGV4aXN0czpcbiAgICAgICAgICAgIGZvciAoaSA9IHN0ZXBzLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBjdXJyID0gdGhpcy5nZXRSZXNvbHZlZExpbmsoc3RlcHMuc2xpY2UoMCwgaSkpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY3Vycikge1xuICAgICAgICAgICAgICAgIGN1cnIgPSB0aGlzLnJvb3Q7XG4gICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBjdXJyIGlzIG5vdyB0aGUgbGFzdCBkaXJlY3RvcnkgdGhhdCBzdGlsbCBleGlzdHMuXG4gICAgICAgICAgICAvLyAoSWYgbm9uZSBvZiB0aGVtIGV4aXN0ZWQsIGN1cnIgaXMgdGhlIHJvb3QuKVxuICAgICAgICAgICAgLy8gQ2hlY2sgYWNjZXNzIHRoZSBsYXp5IHdheTpcbiAgICAgICAgICAgIGN1cnIgPSB0aGlzLmdldFJlc29sdmVkTGlua09yVGhyb3cocGF0aF8xLnNlcCArIHN0ZXBzLnNsaWNlKDAsIGkpLmpvaW4ocGF0aF8xLnNlcCksICdta2RpcicpO1xuICAgICAgICAgICAgLy8gU3RhcnQgY3JlYXRpbmcgZGlyZWN0b3JpZXM6XG4gICAgICAgICAgICBmb3IgKGk7IGkgPCBzdGVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBjdXJyLmdldE5vZGUoKTtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHdlIGhhdmUgcGVybWlzc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLmNhbkV4ZWN1dGUoKSB8fCAhbm9kZS5jYW5Xcml0ZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ21rZGlyJywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFTk9URElSXCIgLyogRVJST1JfQ09ERS5FTk9URElSICovLCAnbWtkaXInLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNyZWF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGN1cnIgPSBjdXJyLmNyZWF0ZUNoaWxkKHN0ZXBzW2ldLCB0aGlzLmNyZWF0ZU5vZGUoY29uc3RhbnRzXzEuY29uc3RhbnRzLlNfSUZESVIgfCBtb2RlTnVtKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlZCA/IGZpbGVuYW1lIDogdW5kZWZpbmVkO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJtZGlyID0gKGZpbGVuYW1lLCByZWN1cnNpdmUgPSBmYWxzZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluayA9IHRoaXMuZ2V0TGlua0FzRGlyT3JUaHJvdyhmaWxlbmFtZSwgJ3JtZGlyJyk7XG4gICAgICAgICAgICBpZiAobGluay5sZW5ndGggJiYgIXJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVOT1RFTVBUWVwiIC8qIEVSUk9SX0NPREUuRU5PVEVNUFRZICovLCAncm1kaXInLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUxpbmsobGluayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucm0gPSAoZmlsZW5hbWUsIGZvcmNlID0gZmFsc2UsIHJlY3Vyc2l2ZSA9IGZhbHNlKSA9PiB7XG4gICAgICAgICAgICAvLyBcInN0YXRcIiBpcyB1c2VkIHRvIG1hdGNoIE5vZGUncyBuYXRpdmUgZXJyb3IgbWVzc2FnZS5cbiAgICAgICAgICAgIGxldCBsaW5rO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsaW5rID0gdGhpcy5nZXRSZXNvbHZlZExpbmtPclRocm93KGZpbGVuYW1lLCAnc3RhdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIC8vIFNpbGVudGx5IGlnbm9yZSBtaXNzaW5nIHBhdGhzIGlmIGZvcmNlIG9wdGlvbiBpcyB0cnVlXG4gICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlID09PSBcIkVOT0VOVFwiIC8qIEVSUk9SX0NPREUuRU5PRU5UICovICYmIGZvcmNlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGluay5nZXROb2RlKCkuaXNEaXJlY3RvcnkoKSAmJiAhcmVjdXJzaXZlKVxuICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRVJSX0ZTX0VJU0RJUlwiIC8qIEVSUk9SX0NPREUuRVJSX0ZTX0VJU0RJUiAqLywgJ3JtJywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgaWYgKCFsaW5rLnBhcmVudD8uZ2V0Tm9kZSgpLmNhbldyaXRlKCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ3JtJywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgdGhpcy5kZWxldGVMaW5rKGxpbmspO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNsb3NlID0gKGZkKSA9PiB7XG4gICAgICAgICAgICAoMCwgdXRpbF8yLnZhbGlkYXRlRmQpKGZkKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmdldEZpbGVCeUZkT3JUaHJvdyhmZCwgJ2Nsb3NlJyk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlRmlsZShmaWxlKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuY3JlYXRlTGluaygpO1xuICAgICAgICByb290LnNldE5vZGUodGhpcy5jcmVhdGVOb2RlKGNvbnN0YW50c18xLmNvbnN0YW50cy5TX0lGRElSIHwgMG83NzcpKTtcbiAgICAgICAgcm9vdC5zZXRDaGlsZCgnLicsIHJvb3QpO1xuICAgICAgICByb290LmdldE5vZGUoKS5ubGluaysrO1xuICAgICAgICByb290LnNldENoaWxkKCcuLicsIHJvb3QpO1xuICAgICAgICByb290LmdldE5vZGUoKS5ubGluaysrO1xuICAgICAgICB0aGlzLnJvb3QgPSByb290O1xuICAgIH1cbiAgICBjcmVhdGVMaW5rKHBhcmVudCwgbmFtZSwgaXNEaXJlY3RvcnkgPSBmYWxzZSwgbW9kZSkge1xuICAgICAgICBpZiAoIXBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBMaW5rXzEuTGluayh0aGlzLCB2b2lkIDAsICcnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY3JlYXRlTGluazogbmFtZSBjYW5ub3QgYmUgZW1wdHknKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBubyBleHBsaWNpdCBwZXJtaXNzaW9uIGlzIHByb3ZpZGVkLCB1c2UgZGVmYXVsdHMgYmFzZWQgb24gdHlwZVxuICAgICAgICBjb25zdCBmaW5hbFBlcm0gPSBtb2RlID8/IChpc0RpcmVjdG9yeSA/IDBvNzc3IDogMG82NjYpO1xuICAgICAgICAvLyBUbyBwcmV2ZW50IG1ha2luZyBhIGJyZWFraW5nIGNoYW5nZSwgYG1vZGVgIGNhbiBhbHNvIGp1c3QgYmUgYSBwZXJtaXNzaW9uIG51bWJlclxuICAgICAgICAvLyBhbmQgdGhlIGZpbGUgdHlwZSBpcyBzZXQgYmFzZWQgb24gYGlzRGlyZWN0b3J5YFxuICAgICAgICBjb25zdCBoYXNGaWxlVHlwZSA9IG1vZGUgJiYgbW9kZSAmIGNvbnN0YW50c18xLmNvbnN0YW50cy5TX0lGTVQ7XG4gICAgICAgIGNvbnN0IG1vZGVUeXBlID0gaGFzRmlsZVR5cGUgPyBtb2RlICYgY29uc3RhbnRzXzEuY29uc3RhbnRzLlNfSUZNVCA6IGlzRGlyZWN0b3J5ID8gY29uc3RhbnRzXzEuY29uc3RhbnRzLlNfSUZESVIgOiBjb25zdGFudHNfMS5jb25zdGFudHMuU19JRlJFRztcbiAgICAgICAgY29uc3QgZmluYWxNb2RlID0gKGZpbmFsUGVybSAmIH5jb25zdGFudHNfMS5jb25zdGFudHMuU19JRk1UKSB8IG1vZGVUeXBlO1xuICAgICAgICByZXR1cm4gcGFyZW50LmNyZWF0ZUNoaWxkKG5hbWUsIHRoaXMuY3JlYXRlTm9kZShmaW5hbE1vZGUpKTtcbiAgICB9XG4gICAgZGVsZXRlTGluayhsaW5rKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGxpbmsucGFyZW50O1xuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICBwYXJlbnQuZGVsZXRlQ2hpbGQobGluayk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIG5ld0lub051bWJlcigpIHtcbiAgICAgICAgY29uc3QgcmVsZWFzZWRGZCA9IHRoaXMucmVsZWFzZWRJbm9zLnBvcCgpO1xuICAgICAgICBpZiAocmVsZWFzZWRGZClcbiAgICAgICAgICAgIHJldHVybiByZWxlYXNlZEZkO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5vID0gKHRoaXMuaW5vICsgMSkgJSAweGZmZmZmZmZmO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5vO1xuICAgICAgICB9XG4gICAgfVxuICAgIG5ld0ZkTnVtYmVyKCkge1xuICAgICAgICBjb25zdCByZWxlYXNlZEZkID0gdGhpcy5yZWxlYXNlZEZkcy5wb3AoKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiByZWxlYXNlZEZkID09PSAnbnVtYmVyJyA/IHJlbGVhc2VkRmQgOiBTdXBlcmJsb2NrLmZkLS07XG4gICAgfVxuICAgIGNyZWF0ZU5vZGUobW9kZSkge1xuICAgICAgICBjb25zdCBub2RlID0gbmV3IE5vZGVfMS5Ob2RlKHRoaXMubmV3SW5vTnVtYmVyKCksIG1vZGUpO1xuICAgICAgICB0aGlzLmlub2Rlc1tub2RlLmlub10gPSBub2RlO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgZGVsZXRlTm9kZShub2RlKSB7XG4gICAgICAgIG5vZGUuZGVsKCk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmlub2Rlc1tub2RlLmlub107XG4gICAgICAgIHRoaXMucmVsZWFzZWRJbm9zLnB1c2gobm9kZS5pbm8pO1xuICAgIH1cbiAgICB3YWxrKHN0ZXBzT3JGaWxlbmFtZU9yTGluaywgcmVzb2x2ZVN5bWxpbmtzID0gZmFsc2UsIGNoZWNrRXhpc3RlbmNlID0gZmFsc2UsIGNoZWNrQWNjZXNzID0gZmFsc2UsIGZ1bmNOYW1lKSB7XG4gICAgICAgIGxldCBzdGVwcztcbiAgICAgICAgbGV0IGZpbGVuYW1lO1xuICAgICAgICBpZiAoc3RlcHNPckZpbGVuYW1lT3JMaW5rIGluc3RhbmNlb2YgTGlua18xLkxpbmspIHtcbiAgICAgICAgICAgIHN0ZXBzID0gc3RlcHNPckZpbGVuYW1lT3JMaW5rLnN0ZXBzO1xuICAgICAgICAgICAgZmlsZW5hbWUgPSBwYXRoU2VwICsgc3RlcHMuam9pbihwYXRoU2VwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygc3RlcHNPckZpbGVuYW1lT3JMaW5rID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgc3RlcHMgPSAoMCwgdXRpbF8yLmZpbGVuYW1lVG9TdGVwcykoc3RlcHNPckZpbGVuYW1lT3JMaW5rKTtcbiAgICAgICAgICAgIGZpbGVuYW1lID0gc3RlcHNPckZpbGVuYW1lT3JMaW5rO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3RlcHMgPSBzdGVwc09yRmlsZW5hbWVPckxpbms7XG4gICAgICAgICAgICBmaWxlbmFtZSA9IHBhdGhTZXAgKyBzdGVwcy5qb2luKHBhdGhTZXApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjdXJyID0gdGhpcy5yb290O1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIHdoaWxlIChpIDwgc3RlcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgbm9kZSA9IGN1cnIuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgLy8gQ2hlY2sgYWNjZXNzIHBlcm1pc3Npb25zIGlmIGN1cnJlbnQgbGluayBpcyBhIGRpcmVjdG9yeVxuICAgICAgICAgICAgaWYgKG5vZGUuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgIGlmIChjaGVja0FjY2VzcyAmJiAhbm9kZS5jYW5FeGVjdXRlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgZnVuY05hbWUsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA8IHN0ZXBzLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRU5PVERJUlwiIC8qIEVSUk9SX0NPREUuRU5PVERJUiAqLywgZnVuY05hbWUsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnIgPSBjdXJyLmdldENoaWxkKHN0ZXBzW2ldKSA/PyBudWxsO1xuICAgICAgICAgICAgLy8gQ2hlY2sgZXhpc3RlbmNlIG9mIGN1cnJlbnQgbGlua1xuICAgICAgICAgICAgaWYgKCFjdXJyKVxuICAgICAgICAgICAgICAgIGlmIChjaGVja0V4aXN0ZW5jZSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFTk9FTlRcIiAvKiBFUlJPUl9DT0RFLkVOT0VOVCAqLywgZnVuY05hbWUsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbm9kZSA9IGN1cnI/LmdldE5vZGUoKTtcbiAgICAgICAgICAgIC8vIFJlc29sdmUgc3ltbGluayBpZiB3ZSdyZSByZXNvbHZpbmcgYWxsIHN5bWxpbmtzIE9SIGlmIHRoaXMgaXMgYW4gaW50ZXJtZWRpYXRlIHBhdGggY29tcG9uZW50XG4gICAgICAgICAgICAvLyBUaGlzIGFsbG93cyBsc3RhdCB0byB0cmF2ZXJzZSB0aHJvdWdoIHN5bWxpbmtzIGluIGludGVybWVkaWF0ZSBkaXJlY3RvcmllcyB3aGlsZSBub3QgcmVzb2x2aW5nIHRoZSBmaW5hbCBjb21wb25lbnRcbiAgICAgICAgICAgIGlmIChub2RlLmlzU3ltbGluaygpICYmIChyZXNvbHZlU3ltbGlua3MgfHwgaSA8IHN0ZXBzLmxlbmd0aCAtIDEpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gKDAsIHBhdGhfMS5pc0Fic29sdXRlKShub2RlLnN5bWxpbmspID8gbm9kZS5zeW1saW5rIDogcGF0aEpvaW4oKDAsIHBhdGhfMS5kaXJuYW1lKShjdXJyLmdldFBhdGgoKSksIG5vZGUuc3ltbGluayk7IC8vIFJlbGF0aXZlIHRvIHN5bWxpbmsncyBwYXJlbnRcbiAgICAgICAgICAgICAgICBzdGVwcyA9ICgwLCB1dGlsXzIuZmlsZW5hbWVUb1N0ZXBzKShyZXNvbHZlZFBhdGgpLmNvbmNhdChzdGVwcy5zbGljZShpICsgMSkpO1xuICAgICAgICAgICAgICAgIGN1cnIgPSB0aGlzLnJvb3Q7XG4gICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBZnRlciByZXNvbHZpbmcgc3ltbGlua3MsIGNoZWNrIGlmIGl0J3Mgbm90IGEgZGlyZWN0b3J5IGFuZCB3ZSBzdGlsbCBoYXZlIG1vcmUgc3RlcHNcbiAgICAgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB3ZSB0cnkgdG8gdHJhdmVyc2UgdGhyb3VnaCBhIGZpbGVcbiAgICAgICAgICAgIC8vIE9ubHkgZG8gdGhpcyBjaGVjayB3aGVuIHdlJ3JlIGRvaW5nIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyAoY2hlY2tFeGlzdGVuY2UgPSB0cnVlKVxuICAgICAgICAgICAgaWYgKGNoZWNrRXhpc3RlbmNlICYmICFub2RlLmlzRGlyZWN0b3J5KCkgJiYgaSA8IHN0ZXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAvLyBPbiBXaW5kb3dzLCB1c2UgRU5PRU5UIGZvciBjb25zaXN0ZW5jeSB3aXRoIE5vZGUuanMgYmVoYXZpb3JcbiAgICAgICAgICAgICAgICAvLyBPbiBvdGhlciBwbGF0Zm9ybXMsIHVzZSBFTk9URElSIHdoaWNoIGlzIG1vcmUgc2VtYW50aWNhbGx5IGNvcnJlY3RcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBwcm9jZXNzXzEuZGVmYXVsdC5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IFwiRU5PRU5UXCIgLyogRVJST1JfQ09ERS5FTk9FTlQgKi8gOiBcIkVOT1RESVJcIiAvKiBFUlJPUl9DT0RFLkVOT1RESVIgKi87XG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoZXJyb3JDb2RlLCBmdW5jTmFtZSwgZmlsZW5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyO1xuICAgIH1cbiAgICAvLyBSZXR1cm5zIGEgYExpbmtgIChoYXJkIGxpbmspIHJlZmVyZW5jZWQgYnkgcGF0aCBcInNwbGl0XCIgaW50byBzdGVwcy5cbiAgICBnZXRMaW5rKHN0ZXBzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndhbGsoc3RlcHMsIGZhbHNlLCBmYWxzZSwgZmFsc2UpO1xuICAgIH1cbiAgICAvLyBKdXN0IGxpbmsgYGdldExpbmtgLCBidXQgdGhyb3dzIGEgY29ycmVjdCB1c2VyIGVycm9yLCBpZiBsaW5rIHRvIGZvdW5kLlxuICAgIGdldExpbmtPclRocm93KGZpbGVuYW1lLCBmdW5jTmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy53YWxrKGZpbGVuYW1lLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZnVuY05hbWUpO1xuICAgIH1cbiAgICAvLyBKdXN0IGxpa2UgYGdldExpbmtgLCBidXQgYWxzbyBkZXJlZmVyZW5jZS9yZXNvbHZlcyBzeW1ib2xpYyBsaW5rcy5cbiAgICBnZXRSZXNvbHZlZExpbmsoZmlsZW5hbWVPclN0ZXBzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndhbGsoZmlsZW5hbWVPclN0ZXBzLCB0cnVlLCBmYWxzZSwgZmFsc2UpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBKdXN0IGxpa2UgYGdldExpbmtPclRocm93YCwgYnV0IGFsc28gZGVyZWZlcmVuY2UvcmVzb2x2ZXMgc3ltYm9saWMgbGlua3MuXG4gICAgICovXG4gICAgZ2V0UmVzb2x2ZWRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgZnVuY05hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2FsayhmaWxlbmFtZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZnVuY05hbWUpO1xuICAgIH1cbiAgICByZXNvbHZlU3ltbGlua3MobGluaykge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSZXNvbHZlZExpbmsobGluay5zdGVwcy5zbGljZSgxKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEp1c3QgbGlrZSBgZ2V0TGlua09yVGhyb3dgLCBidXQgYWxzbyB2ZXJpZmllcyB0aGF0IHRoZSBsaW5rIGlzIGEgZGlyZWN0b3J5LlxuICAgICAqL1xuICAgIGdldExpbmtBc0Rpck9yVGhyb3coZmlsZW5hbWUsIGZ1bmNOYW1lKSB7XG4gICAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldExpbmtPclRocm93KGZpbGVuYW1lLCBmdW5jTmFtZSk7XG4gICAgICAgIGlmICghbGluay5nZXROb2RlKCkuaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRU5PVERJUlwiIC8qIEVSUk9SX0NPREUuRU5PVERJUiAqLywgZnVuY05hbWUsIGZpbGVuYW1lKTtcbiAgICAgICAgcmV0dXJuIGxpbms7XG4gICAgfVxuICAgIC8vIEdldCB0aGUgaW1tZWRpYXRlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlIGxpbmsuXG4gICAgZ2V0TGlua1BhcmVudChzdGVwcykge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRMaW5rKHN0ZXBzLnNsaWNlKDAsIC0xKSk7XG4gICAgfVxuICAgIGdldExpbmtQYXJlbnRBc0Rpck9yVGhyb3coZmlsZW5hbWVPclN0ZXBzLCBmdW5jTmFtZSkge1xuICAgICAgICBjb25zdCBzdGVwcyA9IChmaWxlbmFtZU9yU3RlcHMgaW5zdGFuY2VvZiBBcnJheSA/IGZpbGVuYW1lT3JTdGVwcyA6ICgwLCB1dGlsXzIuZmlsZW5hbWVUb1N0ZXBzKShmaWxlbmFtZU9yU3RlcHMpKS5zbGljZSgwLCAtMSk7XG4gICAgICAgIGNvbnN0IGZpbGVuYW1lID0gcGF0aFNlcCArIHN0ZXBzLmpvaW4ocGF0aFNlcCk7XG4gICAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldExpbmtPclRocm93KGZpbGVuYW1lLCBmdW5jTmFtZSk7XG4gICAgICAgIGlmICghbGluay5nZXROb2RlKCkuaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRU5PVERJUlwiIC8qIEVSUk9SX0NPREUuRU5PVERJUiAqLywgZnVuY05hbWUsIGZpbGVuYW1lKTtcbiAgICAgICAgcmV0dXJuIGxpbms7XG4gICAgfVxuICAgIGdldEZpbGVCeUZkKGZkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZkc1tTdHJpbmcoZmQpXTtcbiAgICB9XG4gICAgZ2V0RmlsZUJ5RmRPclRocm93KGZkLCBmdW5jTmFtZSkge1xuICAgICAgICBpZiAoISgwLCB1dGlsXzIuaXNGZCkoZmQpKVxuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGNvbnN0YW50c18yLkVSUlNUUi5GRCk7XG4gICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmdldEZpbGVCeUZkKGZkKTtcbiAgICAgICAgaWYgKCFmaWxlKVxuICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFQkFERlwiIC8qIEVSUk9SX0NPREUuRUJBREYgKi8sIGZ1bmNOYW1lKTtcbiAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuICAgIF90b0pTT04obGluayA9IHRoaXMucm9vdCwganNvbiA9IHt9LCBwYXRoLCBhc0J1ZmZlcikge1xuICAgICAgICBsZXQgaXNFbXB0eSA9IHRydWU7XG4gICAgICAgIGxldCBjaGlsZHJlbiA9IGxpbmsuY2hpbGRyZW47XG4gICAgICAgIGlmIChsaW5rLmdldE5vZGUoKS5pc0ZpbGUoKSkge1xuICAgICAgICAgICAgY2hpbGRyZW4gPSBuZXcgTWFwKFtbbGluay5nZXROYW1lKCksIGxpbmsucGFyZW50LmdldENoaWxkKGxpbmsuZ2V0TmFtZSgpKV1dKTtcbiAgICAgICAgICAgIGxpbmsgPSBsaW5rLnBhcmVudDtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgY2hpbGRyZW4ua2V5cygpKSB7XG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJy4nIHx8IG5hbWUgPT09ICcuLicpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlzRW1wdHkgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbGluay5nZXRDaGlsZChuYW1lKTtcbiAgICAgICAgICAgIGlmICghY2hpbGQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ190b0pTT046IHVuZXhwZWN0ZWQgdW5kZWZpbmVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBub2RlID0gY2hpbGQuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgaWYgKG5vZGUuaXNGaWxlKCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBjaGlsZC5nZXRQYXRoKCk7XG4gICAgICAgICAgICAgICAgaWYgKHBhdGgpXG4gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gcGF0aFJlbGF0aXZlKHBhdGgsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgICAgICBqc29uW2ZpbGVuYW1lXSA9IGFzQnVmZmVyID8gbm9kZS5nZXRCdWZmZXIoKSA6IG5vZGUuZ2V0U3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChub2RlLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90b0pTT04oY2hpbGQsIGpzb24sIHBhdGgsIGFzQnVmZmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgZGlyUGF0aCA9IGxpbmsuZ2V0UGF0aCgpO1xuICAgICAgICBpZiAocGF0aClcbiAgICAgICAgICAgIGRpclBhdGggPSBwYXRoUmVsYXRpdmUocGF0aCwgZGlyUGF0aCk7XG4gICAgICAgIGlmIChkaXJQYXRoICYmIGlzRW1wdHkpIHtcbiAgICAgICAgICAgIGpzb25bZGlyUGF0aF0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBqc29uO1xuICAgIH1cbiAgICB0b0pTT04ocGF0aHMsIGpzb24gPSB7fSwgaXNSZWxhdGl2ZSA9IGZhbHNlLCBhc0J1ZmZlciA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGxpbmtzID0gW107XG4gICAgICAgIGlmIChwYXRocykge1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHBhdGhzKSlcbiAgICAgICAgICAgICAgICBwYXRocyA9IFtwYXRoc107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzEucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldFJlc29sdmVkTGluayhmaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFsaW5rKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBsaW5rcy5wdXNoKGxpbmspO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGlua3MucHVzaCh0aGlzLnJvb3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbGlua3MubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIGpzb247XG4gICAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcylcbiAgICAgICAgICAgIHRoaXMuX3RvSlNPTihsaW5rLCBqc29uLCBpc1JlbGF0aXZlID8gbGluay5nZXRQYXRoKCkgOiAnJywgYXNCdWZmZXIpO1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICB9XG4gICAgLy8gVE9ETzogYGN3ZGAgc2hvdWxkIHByb2JhYmx5IG5vdCBpbnZva2UgYHByb2Nlc3MuY3dkKClgLlxuICAgIGZyb21KU09OKGpzb24sIGN3ZCA9IHByb2Nlc3NfMS5kZWZhdWx0LmN3ZCgpKSB7XG4gICAgICAgIGZvciAobGV0IGZpbGVuYW1lIGluIGpzb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBqc29uW2ZpbGVuYW1lXTtcbiAgICAgICAgICAgIGZpbGVuYW1lID0gKDAsIHV0aWxfMi5yZXNvbHZlKShmaWxlbmFtZSwgY3dkKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgfHwgZGF0YSBpbnN0YW5jZW9mIGJ1ZmZlcl8xLkJ1ZmZlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpciA9ICgwLCBwYXRoXzEuZGlybmFtZSkoZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMubWtkaXJwKGRpciwgNTExIC8qIE1PREUuRElSICovKTtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmZXIgPSAoMCwgdXRpbF8yLmRhdGFUb0J1ZmZlcikoZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZUZpbGUoZmlsZW5hbWUsIGJ1ZmZlciwgY29uc3RhbnRzXzIuRkxBR1MudywgNDM4IC8qIE1PREUuREVGQVVMVCAqLyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1rZGlycChmaWxlbmFtZSwgNTExIC8qIE1PREUuRElSICovKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBmcm9tTmVzdGVkSlNPTihqc29uLCBjd2QpIHtcbiAgICAgICAgdGhpcy5mcm9tSlNPTigoMCwganNvbl8xLmZsYXR0ZW5KU09OKShqc29uKSwgY3dkKTtcbiAgICB9XG4gICAgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMuaW5vID0gMDtcbiAgICAgICAgdGhpcy5pbm9kZXMgPSB7fTtcbiAgICAgICAgdGhpcy5yZWxlYXNlZElub3MgPSBbXTtcbiAgICAgICAgdGhpcy5mZHMgPSB7fTtcbiAgICAgICAgdGhpcy5yZWxlYXNlZEZkcyA9IFtdO1xuICAgICAgICB0aGlzLm9wZW5GaWxlcyA9IDA7XG4gICAgICAgIHRoaXMucm9vdCA9IHRoaXMuY3JlYXRlTGluaygpO1xuICAgICAgICB0aGlzLnJvb3Quc2V0Tm9kZSh0aGlzLmNyZWF0ZU5vZGUoY29uc3RhbnRzXzEuY29uc3RhbnRzLlNfSUZESVIgfCAwbzc3NykpO1xuICAgIH1cbiAgICAvLyBMZWdhY3kgaW50ZXJmYWNlXG4gICAgbW91bnRTeW5jKG1vdW50cG9pbnQsIGpzb24pIHtcbiAgICAgICAgdGhpcy5mcm9tSlNPTihqc29uLCBtb3VudHBvaW50KTtcbiAgICB9XG4gICAgb3BlbkxpbmsobGluaywgZmxhZ3NOdW0sIHJlc29sdmVTeW1saW5rcyA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMub3BlbkZpbGVzID49IHRoaXMubWF4RmlsZXMpIHtcbiAgICAgICAgICAgIC8vIFRvbyBtYW55IG9wZW4gZmlsZXMuXG4gICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVNRklMRVwiIC8qIEVSUk9SX0NPREUuRU1GSUxFICovLCAnb3BlbicsIGxpbmsuZ2V0UGF0aCgpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXNvbHZlIHN5bWxpbmtzLlxuICAgICAgICAvL1xuICAgICAgICAvLyBAVE9ETzogVGhpcyBzaG91bGQgYmUgc3VwZXJmbHVvdXMuIFRoaXMgbWV0aG9kIGlzIG9ubHkgZXZlciBjYWxsZWQgYnkgb3BlbkZpbGUoKSwgd2hpY2ggZG9lcyBpdHMgb3duIHN5bWxpbmsgcmVzb2x1dGlvblxuICAgICAgICAvLyBwcmlvciB0byBjYWxsaW5nLlxuICAgICAgICBsZXQgcmVhbExpbmsgPSBsaW5rO1xuICAgICAgICBpZiAocmVzb2x2ZVN5bWxpbmtzKVxuICAgICAgICAgICAgcmVhbExpbmsgPSB0aGlzLmdldFJlc29sdmVkTGlua09yVGhyb3cobGluay5nZXRQYXRoKCksICdvcGVuJyk7XG4gICAgICAgIGNvbnN0IG5vZGUgPSByZWFsTGluay5nZXROb2RlKCk7XG4gICAgICAgIC8vIENoZWNrIHdoZXRoZXIgbm9kZSBpcyBhIGRpcmVjdG9yeVxuICAgICAgICBpZiAobm9kZS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICBpZiAoKGZsYWdzTnVtICYgKE9fUkRPTkxZIHwgT19SRFdSIHwgT19XUk9OTFkpKSAhPT0gT19SRE9OTFkpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFSVNESVJcIiAvKiBFUlJPUl9DT0RFLkVJU0RJUiAqLywgJ29wZW4nLCBsaW5rLmdldFBhdGgoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoZmxhZ3NOdW0gJiBPX0RJUkVDVE9SWSlcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVOT1RESVJcIiAvKiBFUlJPUl9DT0RFLkVOT1RESVIgKi8sICdvcGVuJywgbGluay5nZXRQYXRoKCkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIG5vZGUgcGVybWlzc2lvbnNcbiAgICAgICAgLy8gRm9yIHJlYWQgYWNjZXNzOiBjaGVjayBpZiBmbGFncyBhcmUgT19SRE9OTFkgb3IgT19SRFdSIChpLmUuLCBub3Qgb25seSBPX1dST05MWSlcbiAgICAgICAgaWYgKChmbGFnc051bSAmIChPX1JET05MWSB8IE9fUkRXUiB8IE9fV1JPTkxZKSkgIT09IE9fV1JPTkxZKSB7XG4gICAgICAgICAgICBpZiAoIW5vZGUuY2FuUmVhZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ29wZW4nLCBsaW5rLmdldFBhdGgoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9yIHdyaXRlIGFjY2VzczogY2hlY2sgaWYgZmxhZ3MgYXJlIE9fV1JPTkxZIG9yIE9fUkRXUlxuICAgICAgICBpZiAoZmxhZ3NOdW0gJiAoT19XUk9OTFkgfCBPX1JEV1IpKSB7XG4gICAgICAgICAgICBpZiAoIW5vZGUuY2FuV3JpdGUoKSkge1xuICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRUFDQ0VTXCIgLyogRVJST1JfQ09ERS5FQUNDRVMgKi8sICdvcGVuJywgbGluay5nZXRQYXRoKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZV8xLkZpbGUobGluaywgbm9kZSwgZmxhZ3NOdW0sIHRoaXMubmV3RmROdW1iZXIoKSk7XG4gICAgICAgIHRoaXMuZmRzW2ZpbGUuZmRdID0gZmlsZTtcbiAgICAgICAgdGhpcy5vcGVuRmlsZXMrKztcbiAgICAgICAgaWYgKGZsYWdzTnVtICYgT19UUlVOQylcbiAgICAgICAgICAgIGZpbGUudHJ1bmNhdGUoKTtcbiAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuICAgIG9wZW5GaWxlKGZpbGVuYW1lLCBmbGFnc051bSwgbW9kZU51bSwgcmVzb2x2ZVN5bWxpbmtzID0gdHJ1ZSkge1xuICAgICAgICBjb25zdCBzdGVwcyA9ICgwLCB1dGlsXzIuZmlsZW5hbWVUb1N0ZXBzKShmaWxlbmFtZSk7XG4gICAgICAgIGxldCBsaW5rO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGluayA9IHJlc29sdmVTeW1saW5rcyA/IHRoaXMuZ2V0UmVzb2x2ZWRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ29wZW4nKSA6IHRoaXMuZ2V0TGlua09yVGhyb3coZmlsZW5hbWUsICdvcGVuJyk7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiBmaWxlIGFscmVhZHkgZXhpc3RlZCB3aGVuIHRyeWluZyB0byBjcmVhdGUgaXQgZXhjbHVzaXZlbHkgKE9fQ1JFQVQgYW5kIE9fRVhDTCBmbGFncyBhcmUgc2V0KS5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gZXJyb3IsIHNlZSBodHRwczovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMvb3Blbi5odG1sOlxuICAgICAgICAgICAgLy8gXCJJZiBPX0NSRUFUIGFuZCBPX0VYQ0wgYXJlIHNldCwgb3BlbigpIHNoYWxsIGZhaWwgaWYgdGhlIGZpbGUgZXhpc3RzLlwiXG4gICAgICAgICAgICBpZiAobGluayAmJiBmbGFnc051bSAmIE9fQ1JFQVQgJiYgZmxhZ3NOdW0gJiBPX0VYQ0wpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFRVhJU1RcIiAvKiBFUlJPUl9DT0RFLkVFWElTVCAqLywgJ29wZW4nLCBmaWxlbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gVHJ5IGNyZWF0aW5nIGEgbmV3IGZpbGUsIGlmIGl0IGRvZXMgbm90IGV4aXN0IGFuZCBPX0NSRUFUIGZsYWcgaXMgc2V0LlxuICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgd2lsbCBzdGlsbCB0aHJvdyBpZiB0aGUgRU5PRU5UIGNhbWUgZnJvbSBvbmUgb2YgdGhlXG4gICAgICAgICAgICAvLyBpbnRlcm1lZGlhdGUgZGlyZWN0b3JpZXMgaW5zdGVhZCBvZiB0aGUgZmlsZSBpdHNlbGYuXG4gICAgICAgICAgICBpZiAoZXJyLmNvZGUgPT09IFwiRU5PRU5UXCIgLyogRVJST1JfQ09ERS5FTk9FTlQgKi8gJiYgZmxhZ3NOdW0gJiBPX0NSRUFUKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlyTmFtZSA9ICgwLCBwYXRoXzEuZGlybmFtZSkoZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpckxpbmsgPSB0aGlzLmdldFJlc29sdmVkTGlua09yVGhyb3coZGlyTmFtZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlyTm9kZSA9IGRpckxpbmsuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHBsYWNlIHdlIGNyZWF0ZSB0aGUgbmV3IGZpbGUgaXMgYWN0dWFsbHkgYSBkaXJlY3RvcnkgYW5kIHRoYXQgd2UgYXJlIGFsbG93ZWQgdG8gZG8gc286XG4gICAgICAgICAgICAgICAgaWYgKCFkaXJOb2RlLmlzRGlyZWN0b3J5KCkpXG4gICAgICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRU5PVERJUlwiIC8qIEVSUk9SX0NPREUuRU5PVERJUiAqLywgJ29wZW4nLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFkaXJOb2RlLmNhbkV4ZWN1dGUoKSB8fCAhZGlyTm9kZS5jYW5Xcml0ZSgpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVBQ0NFU1wiIC8qIEVSUk9SX0NPREUuRUFDQ0VTICovLCAnb3BlbicsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgZGlmZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24sIHdoaWNoIHdvdWxkIHNpbXBseSBub3QgY3JlYXRlIGEgZmlsZSB1bmxlc3MgbW9kZU51bSB3YXMgc3BlY2lmaWVkLlxuICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIsIGN1cnJlbnQgTm9kZSB2ZXJzaW9ucyB3aWxsIGRlZmF1bHQgdG8gMG82NjYuXG4gICAgICAgICAgICAgICAgbW9kZU51bSA/PyAobW9kZU51bSA9IDBvNjY2KTtcbiAgICAgICAgICAgICAgICBsaW5rID0gdGhpcy5jcmVhdGVMaW5rKGRpckxpbmssIHN0ZXBzW3N0ZXBzLmxlbmd0aCAtIDFdLCBmYWxzZSwgbW9kZU51bSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaW5rKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3BlbkxpbmsobGluaywgZmxhZ3NOdW0sIHJlc29sdmVTeW1saW5rcyk7XG4gICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRU5PRU5UXCIgLyogRVJST1JfQ09ERS5FTk9FTlQgKi8sICdvcGVuJywgZmlsZW5hbWUpO1xuICAgIH1cbiAgICBjbG9zZUZpbGUoZmlsZSkge1xuICAgICAgICBpZiAoIXRoaXMuZmRzW2ZpbGUuZmRdKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLm9wZW5GaWxlcy0tO1xuICAgICAgICBkZWxldGUgdGhpcy5mZHNbZmlsZS5mZF07XG4gICAgICAgIHRoaXMucmVsZWFzZWRGZHMucHVzaChmaWxlLmZkKTtcbiAgICB9XG4gICAgd3JpdGUoZmQsIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmdldEZpbGVCeUZkT3JUaHJvdyhmZCwgJ3dyaXRlJyk7XG4gICAgICAgIGlmIChmaWxlLm5vZGUuaXNTeW1saW5rKCkpIHtcbiAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRUJBREZcIiAvKiBFUlJPUl9DT0RFLkVCQURGICovLCAnd3JpdGUnLCBmaWxlLmxpbmsuZ2V0UGF0aCgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsZS53cml0ZShidWYsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiA9PT0gLTEgfHwgdHlwZW9mIHBvc2l0aW9uICE9PSAnbnVtYmVyJyA/IHVuZGVmaW5lZCA6IHBvc2l0aW9uKTtcbiAgICB9XG59XG5leHBvcnRzLlN1cGVyYmxvY2sgPSBTdXBlcmJsb2NrO1xuLyoqXG4gKiBHbG9iYWwgZmlsZSBkZXNjcmlwdG9yIGNvdW50ZXIuIFVOSVggZmlsZSBkZXNjcmlwdG9ycyBzdGFydCBmcm9tIDAgYW5kIGdvIHNlcXVlbnRpYWxseVxuICogdXAsIHNvIGhlcmUsIGluIG9yZGVyIG5vdCB0byBjb25mbGljdCB3aXRoIHRoZW0sIHdlIGNob29zZSBzb21lIGJpZyBudW1iZXIgYW5kIGRlc2NyZWFzZVxuICogdGhlIGZpbGUgZGVzY3JpcHRvciBvZiBldmVyeSBuZXcgb3BlbmVkIGZpbGUuXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQHRvZG8gVGhpcyBzaG91bGQgbm90IGJlIHN0YXRpYywgcmlnaHQ/XG4gKi9cblN1cGVyYmxvY2suZmQgPSAweDdmZmZmZmZmO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3VwZXJibG9jay5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU3VwZXJibG9jayA9IGV4cG9ydHMuRmlsZSA9IGV4cG9ydHMuTGluayA9IGV4cG9ydHMuTm9kZSA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG50c2xpYl8xLl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi90eXBlc1wiKSwgZXhwb3J0cyk7XG50c2xpYl8xLl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9qc29uXCIpLCBleHBvcnRzKTtcbnZhciBOb2RlXzEgPSByZXF1aXJlKFwiLi9Ob2RlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTm9kZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTm9kZV8xLk5vZGU7IH0gfSk7XG52YXIgTGlua18xID0gcmVxdWlyZShcIi4vTGlua1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkxpbmtcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIExpbmtfMS5MaW5rOyB9IH0pO1xudmFyIEZpbGVfMSA9IHJlcXVpcmUoXCIuL0ZpbGVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJGaWxlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBGaWxlXzEuRmlsZTsgfSB9KTtcbnZhciBTdXBlcmJsb2NrXzEgPSByZXF1aXJlKFwiLi9TdXBlcmJsb2NrXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiU3VwZXJibG9ja1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gU3VwZXJibG9ja18xLlN1cGVyYmxvY2s7IH0gfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU3RhdEZzID0gdm9pZCAwO1xuLyoqXG4gKiBTdGF0aXN0aWNzIGFib3V0IGEgZmlsZSBzeXN0ZW0sIGxpa2UgYGZzLlN0YXRGc2AuXG4gKi9cbmNsYXNzIFN0YXRGcyB7XG4gICAgc3RhdGljIGJ1aWxkKHN1cGVyYmxvY2ssIGJpZ2ludCA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHN0YXRmcyA9IG5ldyBTdGF0RnMoKTtcbiAgICAgICAgY29uc3QgZ2V0U3RhdE51bWJlciA9ICFiaWdpbnQgPyBudW1iZXIgPT4gbnVtYmVyIDogbnVtYmVyID0+IEJpZ0ludChudW1iZXIpO1xuICAgICAgICAvLyBGb3IgaW4tbWVtb3J5IGZpbGVzeXN0ZW0sIHByb3ZpZGUgbW9jayBidXQgcmVhc29uYWJsZSB2YWx1ZXNcbiAgICAgICAgLy8gTWFnaWMgbnVtYmVyIGZvciBpbi1tZW1vcnkgZmlsZXN5c3RlbSB0eXBlIChzaW1pbGFyIHRvIHJhbWZzKVxuICAgICAgICBzdGF0ZnMudHlwZSA9IGdldFN0YXROdW1iZXIoMHg4NTg0NThmNik7XG4gICAgICAgIC8vIE9wdGltYWwgdHJhbnNmZXIgYmxvY2sgc2l6ZSAtIGNvbW1vbmx5IDQwOTYgYnl0ZXNcbiAgICAgICAgc3RhdGZzLmJzaXplID0gZ2V0U3RhdE51bWJlcig0MDk2KTtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIGZpbGVzeXN0ZW0gc3RhdHMgYmFzZWQgb24gY3VycmVudCBzdGF0ZVxuICAgICAgICBjb25zdCB0b3RhbElub2RlcyA9IE9iamVjdC5rZXlzKHN1cGVyYmxvY2suaW5vZGVzKS5sZW5ndGg7XG4gICAgICAgIC8vIE1vY2sgbGFyZ2UgZmlsZXN5c3RlbSBjYXBhY2l0eSAoYXBwZWFycyBhcyBhIGxhcmdlIGZpbGVzeXN0ZW0gdG8gYXBwbGljYXRpb25zKVxuICAgICAgICBjb25zdCB0b3RhbEJsb2NrcyA9IDEwMDAwMDA7XG4gICAgICAgIGNvbnN0IHVzZWRCbG9ja3MgPSBNYXRoLm1pbih0b3RhbElub2RlcyAqIDIsIHRvdGFsQmxvY2tzKTsgLy8gUm91Z2ggZXN0aW1hdGlvblxuICAgICAgICBjb25zdCBmcmVlQmxvY2tzID0gdG90YWxCbG9ja3MgLSB1c2VkQmxvY2tzO1xuICAgICAgICBzdGF0ZnMuYmxvY2tzID0gZ2V0U3RhdE51bWJlcih0b3RhbEJsb2Nrcyk7IC8vIFRvdGFsIGRhdGEgYmxvY2tzXG4gICAgICAgIHN0YXRmcy5iZnJlZSA9IGdldFN0YXROdW1iZXIoZnJlZUJsb2Nrcyk7IC8vIEZyZWUgYmxvY2tzIGluIGZpbGUgc3lzdGVtXG4gICAgICAgIHN0YXRmcy5iYXZhaWwgPSBnZXRTdGF0TnVtYmVyKGZyZWVCbG9ja3MpOyAvLyBGcmVlIGJsb2NrcyBhdmFpbGFibGUgdG8gdW5wcml2aWxlZ2VkIHVzZXJzXG4gICAgICAgIC8vIEZpbGUgbm9kZSBzdGF0aXN0aWNzXG4gICAgICAgIGNvbnN0IG1heEZpbGVzID0gMTAwMDAwMDsgLy8gTW9jayBsYXJnZSBudW1iZXIgb2YgYXZhaWxhYmxlIGlub2Rlc1xuICAgICAgICBzdGF0ZnMuZmlsZXMgPSBnZXRTdGF0TnVtYmVyKG1heEZpbGVzKTsgLy8gVG90YWwgZmlsZSBub2RlcyBpbiBmaWxlIHN5c3RlbVxuICAgICAgICBzdGF0ZnMuZmZyZWUgPSBnZXRTdGF0TnVtYmVyKG1heEZpbGVzIC0gdG90YWxJbm9kZXMpOyAvLyBGcmVlIGZpbGUgbm9kZXNcbiAgICAgICAgcmV0dXJuIHN0YXRmcztcbiAgICB9XG59XG5leHBvcnRzLlN0YXRGcyA9IFN0YXRGcztcbmV4cG9ydHMuZGVmYXVsdCA9IFN0YXRGcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVN0YXRGcy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogYHNldFRpbWVvdXRVbnJlZmAgaXMganVzdCBsaWtlIGBzZXRUaW1lb3V0YCxcbiAqIG9ubHkgaW4gTm9kZSdzIGVudmlyb25tZW50IGl0IHdpbGwgXCJ1bnJlZlwiIGl0cyBtYWNybyB0YXNrLlxuICovXG5mdW5jdGlvbiBzZXRUaW1lb3V0VW5yZWYoY2FsbGJhY2ssIHRpbWUsIGFyZ3MpIHtcbiAgICBjb25zdCByZWYgPSBzZXRUaW1lb3V0LmFwcGx5KHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiBnbG9iYWwsIGFyZ3VtZW50cyk7XG4gICAgaWYgKHJlZiAmJiB0eXBlb2YgcmVmID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgcmVmLnVucmVmID09PSAnZnVuY3Rpb24nKVxuICAgICAgICByZWYudW5yZWYoKTtcbiAgICByZXR1cm4gcmVmO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gc2V0VGltZW91dFVucmVmO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2V0VGltZW91dFVucmVmLmpzLm1hcCIsIid1c2Ugc3RyaWN0J1xuXG4vKlxuICBUaGlzIGZpbGUgaXMgYSByZWR1Y2VkIGFuZCBhZGFwdGVkIHZlcnNpb24gb2YgdGhlIG1haW4gbGliL2ludGVybmFsL3Blcl9jb250ZXh0L3ByaW1vcmRpYWxzLmpzIGZpbGUgZGVmaW5lZCBhdFxuXG4gIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL21haW4vbGliL2ludGVybmFsL3Blcl9jb250ZXh0L3ByaW1vcmRpYWxzLmpzXG5cbiAgRG9uJ3QgdHJ5IHRvIHJlcGxhY2Ugd2l0aCB0aGUgb3JpZ2luYWwgZmlsZSBhbmQga2VlcCBpdCB1cCB0byBkYXRlIHdpdGggdGhlIHVwc3RyZWFtIGZpbGUuXG4qL1xuXG4vLyBUaGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIEFnZ3JlZ2F0ZUVycm9yXG5jbGFzcyBBZ2dyZWdhdGVFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoZXJyb3JzKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGVycm9ycykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIGlucHV0IHRvIGJlIGFuIEFycmF5LCBnb3QgJHt0eXBlb2YgZXJyb3JzfWApXG4gICAgfVxuICAgIGxldCBtZXNzYWdlID0gJydcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVycm9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgbWVzc2FnZSArPSBgICAgICR7ZXJyb3JzW2ldLnN0YWNrfVxcbmBcbiAgICB9XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICB0aGlzLm5hbWUgPSAnQWdncmVnYXRlRXJyb3InXG4gICAgdGhpcy5lcnJvcnMgPSBlcnJvcnNcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEFnZ3JlZ2F0ZUVycm9yLFxuICBBcnJheUlzQXJyYXkoc2VsZikge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHNlbGYpXG4gIH0sXG4gIEFycmF5UHJvdG90eXBlSW5jbHVkZXMoc2VsZiwgZWwpIHtcbiAgICByZXR1cm4gc2VsZi5pbmNsdWRlcyhlbClcbiAgfSxcbiAgQXJyYXlQcm90b3R5cGVJbmRleE9mKHNlbGYsIGVsKSB7XG4gICAgcmV0dXJuIHNlbGYuaW5kZXhPZihlbClcbiAgfSxcbiAgQXJyYXlQcm90b3R5cGVKb2luKHNlbGYsIHNlcCkge1xuICAgIHJldHVybiBzZWxmLmpvaW4oc2VwKVxuICB9LFxuICBBcnJheVByb3RvdHlwZU1hcChzZWxmLCBmbikge1xuICAgIHJldHVybiBzZWxmLm1hcChmbilcbiAgfSxcbiAgQXJyYXlQcm90b3R5cGVQb3Aoc2VsZiwgZWwpIHtcbiAgICByZXR1cm4gc2VsZi5wb3AoZWwpXG4gIH0sXG4gIEFycmF5UHJvdG90eXBlUHVzaChzZWxmLCBlbCkge1xuICAgIHJldHVybiBzZWxmLnB1c2goZWwpXG4gIH0sXG4gIEFycmF5UHJvdG90eXBlU2xpY2Uoc2VsZiwgc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiBzZWxmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIH0sXG4gIEVycm9yLFxuICBGdW5jdGlvblByb3RvdHlwZUNhbGwoZm4sIHRoaXNBcmdzLCAuLi5hcmdzKSB7XG4gICAgcmV0dXJuIGZuLmNhbGwodGhpc0FyZ3MsIC4uLmFyZ3MpXG4gIH0sXG4gIEZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFzSW5zdGFuY2Uoc2VsZiwgaW5zdGFuY2UpIHtcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0uY2FsbChzZWxmLCBpbnN0YW5jZSlcbiAgfSxcbiAgTWF0aEZsb29yOiBNYXRoLmZsb29yLFxuICBOdW1iZXIsXG4gIE51bWJlcklzSW50ZWdlcjogTnVtYmVyLmlzSW50ZWdlcixcbiAgTnVtYmVySXNOYU46IE51bWJlci5pc05hTixcbiAgTnVtYmVyTUFYX1NBRkVfSU5URUdFUjogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXG4gIE51bWJlck1JTl9TQUZFX0lOVEVHRVI6IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxuICBOdW1iZXJQYXJzZUludDogTnVtYmVyLnBhcnNlSW50LFxuICBPYmplY3REZWZpbmVQcm9wZXJ0aWVzKHNlbGYsIHByb3BzKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHNlbGYsIHByb3BzKVxuICB9LFxuICBPYmplY3REZWZpbmVQcm9wZXJ0eShzZWxmLCBuYW1lLCBwcm9wKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZWxmLCBuYW1lLCBwcm9wKVxuICB9LFxuICBPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZiwgbmFtZSkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGYsIG5hbWUpXG4gIH0sXG4gIE9iamVjdEtleXMob2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iailcbiAgfSxcbiAgT2JqZWN0U2V0UHJvdG90eXBlT2YodGFyZ2V0LCBwcm90bykge1xuICAgIHJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCBwcm90bylcbiAgfSxcbiAgUHJvbWlzZSxcbiAgUHJvbWlzZVByb3RvdHlwZUNhdGNoKHNlbGYsIGZuKSB7XG4gICAgcmV0dXJuIHNlbGYuY2F0Y2goZm4pXG4gIH0sXG4gIFByb21pc2VQcm90b3R5cGVUaGVuKHNlbGYsIHRoZW5GbiwgY2F0Y2hGbikge1xuICAgIHJldHVybiBzZWxmLnRoZW4odGhlbkZuLCBjYXRjaEZuKVxuICB9LFxuICBQcm9taXNlUmVqZWN0KGVycikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpXG4gIH0sXG4gIFByb21pc2VSZXNvbHZlKHZhbCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsKVxuICB9LFxuICBSZWZsZWN0QXBwbHk6IFJlZmxlY3QuYXBwbHksXG4gIFJlZ0V4cFByb3RvdHlwZVRlc3Qoc2VsZiwgdmFsdWUpIHtcbiAgICByZXR1cm4gc2VsZi50ZXN0KHZhbHVlKVxuICB9LFxuICBTYWZlU2V0OiBTZXQsXG4gIFN0cmluZyxcbiAgU3RyaW5nUHJvdG90eXBlU2xpY2Uoc2VsZiwgc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiBzZWxmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIH0sXG4gIFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlKHNlbGYpIHtcbiAgICByZXR1cm4gc2VsZi50b0xvd2VyQ2FzZSgpXG4gIH0sXG4gIFN0cmluZ1Byb3RvdHlwZVRvVXBwZXJDYXNlKHNlbGYpIHtcbiAgICByZXR1cm4gc2VsZi50b1VwcGVyQ2FzZSgpXG4gIH0sXG4gIFN0cmluZ1Byb3RvdHlwZVRyaW0oc2VsZikge1xuICAgIHJldHVybiBzZWxmLnRyaW0oKVxuICB9LFxuICBTeW1ib2wsXG4gIFN5bWJvbEZvcjogU3ltYm9sLmZvcixcbiAgU3ltYm9sQXN5bmNJdGVyYXRvcjogU3ltYm9sLmFzeW5jSXRlcmF0b3IsXG4gIFN5bWJvbEhhc0luc3RhbmNlOiBTeW1ib2wuaGFzSW5zdGFuY2UsXG4gIFN5bWJvbEl0ZXJhdG9yOiBTeW1ib2wuaXRlcmF0b3IsXG4gIFN5bWJvbERpc3Bvc2U6IFN5bWJvbC5kaXNwb3NlIHx8IFN5bWJvbCgnU3ltYm9sLmRpc3Bvc2UnKSxcbiAgU3ltYm9sQXN5bmNEaXNwb3NlOiBTeW1ib2wuYXN5bmNEaXNwb3NlIHx8IFN5bWJvbCgnU3ltYm9sLmFzeW5jRGlzcG9zZScpLFxuICBUeXBlZEFycmF5UHJvdG90eXBlU2V0KHNlbGYsIGJ1ZiwgbGVuKSB7XG4gICAgcmV0dXJuIHNlbGYuc2V0KGJ1ZiwgbGVuKVxuICB9LFxuICBCb29sZWFuLFxuICBVaW50OEFycmF5XG59XG4iLCIndXNlIHN0cmljdCdcblxuLypcbiAgVGhpcyBmaWxlIGlzIGEgcmVkdWNlZCBhbmQgYWRhcHRlZCB2ZXJzaW9uIG9mIHRoZSBtYWluIGxpYi9pbnRlcm5hbC91dGlsL2luc3BlY3QuanMgZmlsZSBkZWZpbmVkIGF0XG5cbiAgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvbWFpbi9saWIvaW50ZXJuYWwvdXRpbC9pbnNwZWN0LmpzXG5cbiAgRG9uJ3QgdHJ5IHRvIHJlcGxhY2Ugd2l0aCB0aGUgb3JpZ2luYWwgZmlsZSBhbmQga2VlcCBpdCB1cCB0byBkYXRlIHdpdGggdGhlIHVwc3RyZWFtIGZpbGUuXG4qL1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGZvcm1hdChmb3JtYXQsIC4uLmFyZ3MpIHtcbiAgICAvLyBTaW1wbGlmaWVkIHZlcnNpb24gb2YgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS91dGlsLmh0bWwjdXRpbGZvcm1hdGZvcm1hdC1hcmdzXG4gICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC8lKFtzZGlmal0pL2csIGZ1bmN0aW9uICguLi5bX3VudXNlZCwgdHlwZV0pIHtcbiAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gYXJncy5zaGlmdCgpXG4gICAgICBpZiAodHlwZSA9PT0gJ2YnKSB7XG4gICAgICAgIHJldHVybiByZXBsYWNlbWVudC50b0ZpeGVkKDYpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdqJykge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVwbGFjZW1lbnQpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzJyAmJiB0eXBlb2YgcmVwbGFjZW1lbnQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGN0b3IgPSByZXBsYWNlbWVudC5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0ID8gcmVwbGFjZW1lbnQuY29uc3RydWN0b3IubmFtZSA6ICcnXG4gICAgICAgIHJldHVybiBgJHtjdG9yfSB7fWAudHJpbSgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnQudG9TdHJpbmcoKVxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIGluc3BlY3QodmFsdWUpIHtcbiAgICAvLyBWYXN0bHkgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvdXRpbC5odG1sI3V0aWxpbnNwZWN0b2JqZWN0LW9wdGlvbnNcbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKFwiJ1wiKSkge1xuICAgICAgICAgIGlmICghdmFsdWUuaW5jbHVkZXMoJ1wiJykpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCIke3ZhbHVlfVwiYFxuICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlLmluY2x1ZGVzKCdgJykgJiYgIXZhbHVlLmluY2x1ZGVzKCckeycpKSB7XG4gICAgICAgICAgICByZXR1cm4gYFxcYCR7dmFsdWV9XFxgYFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCcke3ZhbHVlfSdgXG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuICdOYU4nXG4gICAgICAgIH0gZWxzZSBpZiAoT2JqZWN0LmlzKHZhbHVlLCAtMCkpIHtcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgY2FzZSAnYmlnaW50JzpcbiAgICAgICAgcmV0dXJuIGAke1N0cmluZyh2YWx1ZSl9bmBcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSlcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHJldHVybiAne30nXG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgeyBmb3JtYXQsIGluc3BlY3QgfSA9IHJlcXVpcmUoJy4vdXRpbC9pbnNwZWN0JylcbmNvbnN0IHsgQWdncmVnYXRlRXJyb3I6IEN1c3RvbUFnZ3JlZ2F0ZUVycm9yIH0gPSByZXF1aXJlKCcuL3ByaW1vcmRpYWxzJylcblxuLypcbiAgVGhpcyBmaWxlIGlzIGEgcmVkdWNlZCBhbmQgYWRhcHRlZCB2ZXJzaW9uIG9mIHRoZSBtYWluIGxpYi9pbnRlcm5hbC9lcnJvcnMuanMgZmlsZSBkZWZpbmVkIGF0XG5cbiAgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvbWFpbi9saWIvaW50ZXJuYWwvZXJyb3JzLmpzXG5cbiAgRG9uJ3QgdHJ5IHRvIHJlcGxhY2Ugd2l0aCB0aGUgb3JpZ2luYWwgZmlsZSBhbmQga2VlcCBpdCB1cCB0byBkYXRlIChzdGFydGluZyBmcm9tIEUoLi4uKSBkZWZpbml0aW9ucylcbiAgd2l0aCB0aGUgdXBzdHJlYW0gZmlsZS5cbiovXG5cbmNvbnN0IEFnZ3JlZ2F0ZUVycm9yID0gZ2xvYmFsVGhpcy5BZ2dyZWdhdGVFcnJvciB8fCBDdXN0b21BZ2dyZWdhdGVFcnJvclxuY29uc3Qga0lzTm9kZUVycm9yID0gU3ltYm9sKCdrSXNOb2RlRXJyb3InKVxuY29uc3Qga1R5cGVzID0gW1xuICAnc3RyaW5nJyxcbiAgJ2Z1bmN0aW9uJyxcbiAgJ251bWJlcicsXG4gICdvYmplY3QnLFxuICAvLyBBY2NlcHQgJ0Z1bmN0aW9uJyBhbmQgJ09iamVjdCcgYXMgYWx0ZXJuYXRpdmUgdG8gdGhlIGxvd2VyIGNhc2VkIHZlcnNpb24uXG4gICdGdW5jdGlvbicsXG4gICdPYmplY3QnLFxuICAnYm9vbGVhbicsXG4gICdiaWdpbnQnLFxuICAnc3ltYm9sJ1xuXVxuY29uc3QgY2xhc3NSZWdFeHAgPSAvXihbQS1aXVthLXowLTldKikrJC9cbmNvbnN0IG5vZGVJbnRlcm5hbFByZWZpeCA9ICdfX25vZGVfaW50ZXJuYWxfJ1xuY29uc3QgY29kZXMgPSB7fVxuZnVuY3Rpb24gYXNzZXJ0KHZhbHVlLCBtZXNzYWdlKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgY29kZXMuRVJSX0lOVEVSTkFMX0FTU0VSVElPTihtZXNzYWdlKVxuICB9XG59XG5cbi8vIE9ubHkgdXNlIHRoaXMgZm9yIGludGVnZXJzISBEZWNpbWFsIG51bWJlcnMgZG8gbm90IHdvcmsgd2l0aCB0aGlzIGZ1bmN0aW9uLlxuZnVuY3Rpb24gYWRkTnVtZXJpY2FsU2VwYXJhdG9yKHZhbCkge1xuICBsZXQgcmVzID0gJydcbiAgbGV0IGkgPSB2YWwubGVuZ3RoXG4gIGNvbnN0IHN0YXJ0ID0gdmFsWzBdID09PSAnLScgPyAxIDogMFxuICBmb3IgKDsgaSA+PSBzdGFydCArIDQ7IGkgLT0gMykge1xuICAgIHJlcyA9IGBfJHt2YWwuc2xpY2UoaSAtIDMsIGkpfSR7cmVzfWBcbiAgfVxuICByZXR1cm4gYCR7dmFsLnNsaWNlKDAsIGkpfSR7cmVzfWBcbn1cbmZ1bmN0aW9uIGdldE1lc3NhZ2Uoa2V5LCBtc2csIGFyZ3MpIHtcbiAgaWYgKHR5cGVvZiBtc2cgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhc3NlcnQoXG4gICAgICBtc2cubGVuZ3RoIDw9IGFyZ3MubGVuZ3RoLFxuICAgICAgLy8gRGVmYXVsdCBvcHRpb25zIGRvIG5vdCBjb3VudC5cbiAgICAgIGBDb2RlOiAke2tleX07IFRoZSBwcm92aWRlZCBhcmd1bWVudHMgbGVuZ3RoICgke2FyZ3MubGVuZ3RofSkgZG9lcyBub3QgbWF0Y2ggdGhlIHJlcXVpcmVkIG9uZXMgKCR7bXNnLmxlbmd0aH0pLmBcbiAgICApXG4gICAgcmV0dXJuIG1zZyguLi5hcmdzKVxuICB9XG4gIGNvbnN0IGV4cGVjdGVkTGVuZ3RoID0gKG1zZy5tYXRjaCgvJVtkZmlqb09zXS9nKSB8fCBbXSkubGVuZ3RoXG4gIGFzc2VydChcbiAgICBleHBlY3RlZExlbmd0aCA9PT0gYXJncy5sZW5ndGgsXG4gICAgYENvZGU6ICR7a2V5fTsgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cyBsZW5ndGggKCR7YXJncy5sZW5ndGh9KSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZWQgb25lcyAoJHtleHBlY3RlZExlbmd0aH0pLmBcbiAgKVxuICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbXNnXG4gIH1cbiAgcmV0dXJuIGZvcm1hdChtc2csIC4uLmFyZ3MpXG59XG5mdW5jdGlvbiBFKGNvZGUsIG1lc3NhZ2UsIEJhc2UpIHtcbiAgaWYgKCFCYXNlKSB7XG4gICAgQmFzZSA9IEVycm9yXG4gIH1cbiAgY2xhc3MgTm9kZUVycm9yIGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3IoLi4uYXJncykge1xuICAgICAgc3VwZXIoZ2V0TWVzc2FnZShjb2RlLCBtZXNzYWdlLCBhcmdzKSlcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5uYW1lfSBbJHtjb2RlfV06ICR7dGhpcy5tZXNzYWdlfWBcbiAgICB9XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTm9kZUVycm9yLnByb3RvdHlwZSwge1xuICAgIG5hbWU6IHtcbiAgICAgIHZhbHVlOiBCYXNlLm5hbWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSxcbiAgICB0b1N0cmluZzoge1xuICAgICAgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLm5hbWV9IFske2NvZGV9XTogJHt0aGlzLm1lc3NhZ2V9YFxuICAgICAgfSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pXG4gIE5vZGVFcnJvci5wcm90b3R5cGUuY29kZSA9IGNvZGVcbiAgTm9kZUVycm9yLnByb3RvdHlwZVtrSXNOb2RlRXJyb3JdID0gdHJ1ZVxuICBjb2Rlc1tjb2RlXSA9IE5vZGVFcnJvclxufVxuZnVuY3Rpb24gaGlkZVN0YWNrRnJhbWVzKGZuKSB7XG4gIC8vIFdlIHJlbmFtZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBoaWRkZW4gdG8gY3V0IG9mZiB0aGUgc3RhY2t0cmFjZVxuICAvLyBhdCB0aGUgb3V0ZXJtb3N0IG9uZVxuICBjb25zdCBoaWRkZW4gPSBub2RlSW50ZXJuYWxQcmVmaXggKyBmbi5uYW1lXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmbiwgJ25hbWUnLCB7XG4gICAgdmFsdWU6IGhpZGRlblxuICB9KVxuICByZXR1cm4gZm5cbn1cbmZ1bmN0aW9uIGFnZ3JlZ2F0ZVR3b0Vycm9ycyhpbm5lckVycm9yLCBvdXRlckVycm9yKSB7XG4gIGlmIChpbm5lckVycm9yICYmIG91dGVyRXJyb3IgJiYgaW5uZXJFcnJvciAhPT0gb3V0ZXJFcnJvcikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG91dGVyRXJyb3IuZXJyb3JzKSkge1xuICAgICAgLy8gSWYgYG91dGVyRXJyb3JgIGlzIGFscmVhZHkgYW4gYEFnZ3JlZ2F0ZUVycm9yYC5cbiAgICAgIG91dGVyRXJyb3IuZXJyb3JzLnB1c2goaW5uZXJFcnJvcilcbiAgICAgIHJldHVybiBvdXRlckVycm9yXG4gICAgfVxuICAgIGNvbnN0IGVyciA9IG5ldyBBZ2dyZWdhdGVFcnJvcihbb3V0ZXJFcnJvciwgaW5uZXJFcnJvcl0sIG91dGVyRXJyb3IubWVzc2FnZSlcbiAgICBlcnIuY29kZSA9IG91dGVyRXJyb3IuY29kZVxuICAgIHJldHVybiBlcnJcbiAgfVxuICByZXR1cm4gaW5uZXJFcnJvciB8fCBvdXRlckVycm9yXG59XG5jbGFzcyBBYm9ydEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlID0gJ1RoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQnLCBvcHRpb25zID0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBjb2Rlcy5FUlJfSU5WQUxJRF9BUkdfVFlQRSgnb3B0aW9ucycsICdPYmplY3QnLCBvcHRpb25zKVxuICAgIH1cbiAgICBzdXBlcihtZXNzYWdlLCBvcHRpb25zKVxuICAgIHRoaXMuY29kZSA9ICdBQk9SVF9FUlInXG4gICAgdGhpcy5uYW1lID0gJ0Fib3J0RXJyb3InXG4gIH1cbn1cbkUoJ0VSUl9BU1NFUlRJT04nLCAnJXMnLCBFcnJvcilcbkUoXG4gICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsXG4gIChuYW1lLCBleHBlY3RlZCwgYWN0dWFsKSA9PiB7XG4gICAgYXNzZXJ0KHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJywgXCInbmFtZScgbXVzdCBiZSBhIHN0cmluZ1wiKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHtcbiAgICAgIGV4cGVjdGVkID0gW2V4cGVjdGVkXVxuICAgIH1cbiAgICBsZXQgbXNnID0gJ1RoZSAnXG4gICAgaWYgKG5hbWUuZW5kc1dpdGgoJyBhcmd1bWVudCcpKSB7XG4gICAgICAvLyBGb3IgY2FzZXMgbGlrZSAnZmlyc3QgYXJndW1lbnQnXG4gICAgICBtc2cgKz0gYCR7bmFtZX0gYFxuICAgIH0gZWxzZSB7XG4gICAgICBtc2cgKz0gYFwiJHtuYW1lfVwiICR7bmFtZS5pbmNsdWRlcygnLicpID8gJ3Byb3BlcnR5JyA6ICdhcmd1bWVudCd9IGBcbiAgICB9XG4gICAgbXNnICs9ICdtdXN0IGJlICdcbiAgICBjb25zdCB0eXBlcyA9IFtdXG4gICAgY29uc3QgaW5zdGFuY2VzID0gW11cbiAgICBjb25zdCBvdGhlciA9IFtdXG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiBleHBlY3RlZCkge1xuICAgICAgYXNzZXJ0KHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycsICdBbGwgZXhwZWN0ZWQgZW50cmllcyBoYXZlIHRvIGJlIG9mIHR5cGUgc3RyaW5nJylcbiAgICAgIGlmIChrVHlwZXMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgIHR5cGVzLnB1c2godmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgICAgIH0gZWxzZSBpZiAoY2xhc3NSZWdFeHAudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgaW5zdGFuY2VzLnB1c2godmFsdWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQodmFsdWUgIT09ICdvYmplY3QnLCAnVGhlIHZhbHVlIFwib2JqZWN0XCIgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgXCJPYmplY3RcIicpXG4gICAgICAgIG90aGVyLnB1c2godmFsdWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3BlY2lhbCBoYW5kbGUgYG9iamVjdGAgaW4gY2FzZSBvdGhlciBpbnN0YW5jZXMgYXJlIGFsbG93ZWQgdG8gb3V0bGluZVxuICAgIC8vIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGVhY2ggb3RoZXIuXG4gICAgaWYgKGluc3RhbmNlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBwb3MgPSB0eXBlcy5pbmRleE9mKCdvYmplY3QnKVxuICAgICAgaWYgKHBvcyAhPT0gLTEpIHtcbiAgICAgICAgdHlwZXMuc3BsaWNlKHR5cGVzLCBwb3MsIDEpXG4gICAgICAgIGluc3RhbmNlcy5wdXNoKCdPYmplY3QnKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZXMubGVuZ3RoID4gMCkge1xuICAgICAgc3dpdGNoICh0eXBlcy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1zZyArPSBgb2YgdHlwZSAke3R5cGVzWzBdfWBcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgbXNnICs9IGBvbmUgb2YgdHlwZSAke3R5cGVzWzBdfSBvciAke3R5cGVzWzFdfWBcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgY29uc3QgbGFzdCA9IHR5cGVzLnBvcCgpXG4gICAgICAgICAgbXNnICs9IGBvbmUgb2YgdHlwZSAke3R5cGVzLmpvaW4oJywgJyl9LCBvciAke2xhc3R9YFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaW5zdGFuY2VzLmxlbmd0aCA+IDAgfHwgb3RoZXIubGVuZ3RoID4gMCkge1xuICAgICAgICBtc2cgKz0gJyBvciAnXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpbnN0YW5jZXMubGVuZ3RoID4gMCkge1xuICAgICAgc3dpdGNoIChpbnN0YW5jZXMubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtc2cgKz0gYGFuIGluc3RhbmNlIG9mICR7aW5zdGFuY2VzWzBdfWBcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgbXNnICs9IGBhbiBpbnN0YW5jZSBvZiAke2luc3RhbmNlc1swXX0gb3IgJHtpbnN0YW5jZXNbMV19YFxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBjb25zdCBsYXN0ID0gaW5zdGFuY2VzLnBvcCgpXG4gICAgICAgICAgbXNnICs9IGBhbiBpbnN0YW5jZSBvZiAke2luc3RhbmNlcy5qb2luKCcsICcpfSwgb3IgJHtsYXN0fWBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG90aGVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbXNnICs9ICcgb3IgJ1xuICAgICAgfVxuICAgIH1cbiAgICBzd2l0Y2ggKG90aGVyLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAxOlxuICAgICAgICBpZiAob3RoZXJbMF0udG9Mb3dlckNhc2UoKSAhPT0gb3RoZXJbMF0pIHtcbiAgICAgICAgICBtc2cgKz0gJ2FuICdcbiAgICAgICAgfVxuICAgICAgICBtc2cgKz0gYCR7b3RoZXJbMF19YFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyOlxuICAgICAgICBtc2cgKz0gYG9uZSBvZiAke290aGVyWzBdfSBvciAke290aGVyWzFdfWBcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgbGFzdCA9IG90aGVyLnBvcCgpXG4gICAgICAgIG1zZyArPSBgb25lIG9mICR7b3RoZXIuam9pbignLCAnKX0sIG9yICR7bGFzdH1gXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhY3R1YWwgPT0gbnVsbCkge1xuICAgICAgbXNnICs9IGAuIFJlY2VpdmVkICR7YWN0dWFsfWBcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY3R1YWwgPT09ICdmdW5jdGlvbicgJiYgYWN0dWFsLm5hbWUpIHtcbiAgICAgIG1zZyArPSBgLiBSZWNlaXZlZCBmdW5jdGlvbiAke2FjdHVhbC5uYW1lfWBcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY3R1YWwgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YXIgX2FjdHVhbCRjb25zdHJ1Y3RvclxuICAgICAgaWYgKFxuICAgICAgICAoX2FjdHVhbCRjb25zdHJ1Y3RvciA9IGFjdHVhbC5jb25zdHJ1Y3RvcikgIT09IG51bGwgJiZcbiAgICAgICAgX2FjdHVhbCRjb25zdHJ1Y3RvciAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIF9hY3R1YWwkY29uc3RydWN0b3IubmFtZVxuICAgICAgKSB7XG4gICAgICAgIG1zZyArPSBgLiBSZWNlaXZlZCBhbiBpbnN0YW5jZSBvZiAke2FjdHVhbC5jb25zdHJ1Y3Rvci5uYW1lfWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGluc3BlY3RlZCA9IGluc3BlY3QoYWN0dWFsLCB7XG4gICAgICAgICAgZGVwdGg6IC0xXG4gICAgICAgIH0pXG4gICAgICAgIG1zZyArPSBgLiBSZWNlaXZlZCAke2luc3BlY3RlZH1gXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpbnNwZWN0ZWQgPSBpbnNwZWN0KGFjdHVhbCwge1xuICAgICAgICBjb2xvcnM6IGZhbHNlXG4gICAgICB9KVxuICAgICAgaWYgKGluc3BlY3RlZC5sZW5ndGggPiAyNSkge1xuICAgICAgICBpbnNwZWN0ZWQgPSBgJHtpbnNwZWN0ZWQuc2xpY2UoMCwgMjUpfS4uLmBcbiAgICAgIH1cbiAgICAgIG1zZyArPSBgLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIGFjdHVhbH0gKCR7aW5zcGVjdGVkfSlgXG4gICAgfVxuICAgIHJldHVybiBtc2dcbiAgfSxcbiAgVHlwZUVycm9yXG4pXG5FKFxuICAnRVJSX0lOVkFMSURfQVJHX1ZBTFVFJyxcbiAgKG5hbWUsIHZhbHVlLCByZWFzb24gPSAnaXMgaW52YWxpZCcpID0+IHtcbiAgICBsZXQgaW5zcGVjdGVkID0gaW5zcGVjdCh2YWx1ZSlcbiAgICBpZiAoaW5zcGVjdGVkLmxlbmd0aCA+IDEyOCkge1xuICAgICAgaW5zcGVjdGVkID0gaW5zcGVjdGVkLnNsaWNlKDAsIDEyOCkgKyAnLi4uJ1xuICAgIH1cbiAgICBjb25zdCB0eXBlID0gbmFtZS5pbmNsdWRlcygnLicpID8gJ3Byb3BlcnR5JyA6ICdhcmd1bWVudCdcbiAgICByZXR1cm4gYFRoZSAke3R5cGV9ICcke25hbWV9JyAke3JlYXNvbn0uIFJlY2VpdmVkICR7aW5zcGVjdGVkfWBcbiAgfSxcbiAgVHlwZUVycm9yXG4pXG5FKFxuICAnRVJSX0lOVkFMSURfUkVUVVJOX1ZBTFVFJyxcbiAgKGlucHV0LCBuYW1lLCB2YWx1ZSkgPT4ge1xuICAgIHZhciBfdmFsdWUkY29uc3RydWN0b3JcbiAgICBjb25zdCB0eXBlID1cbiAgICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoX3ZhbHVlJGNvbnN0cnVjdG9yID0gdmFsdWUuY29uc3RydWN0b3IpICE9PSBudWxsICYmXG4gICAgICBfdmFsdWUkY29uc3RydWN0b3IgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgX3ZhbHVlJGNvbnN0cnVjdG9yLm5hbWVcbiAgICAgICAgPyBgaW5zdGFuY2Ugb2YgJHt2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lfWBcbiAgICAgICAgOiBgdHlwZSAke3R5cGVvZiB2YWx1ZX1gXG4gICAgcmV0dXJuIGBFeHBlY3RlZCAke2lucHV0fSB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSBcIiR7bmFtZX1cImAgKyBgIGZ1bmN0aW9uIGJ1dCBnb3QgJHt0eXBlfS5gXG4gIH0sXG4gIFR5cGVFcnJvclxuKVxuRShcbiAgJ0VSUl9NSVNTSU5HX0FSR1MnLFxuICAoLi4uYXJncykgPT4ge1xuICAgIGFzc2VydChhcmdzLmxlbmd0aCA+IDAsICdBdCBsZWFzdCBvbmUgYXJnIG5lZWRzIHRvIGJlIHNwZWNpZmllZCcpXG4gICAgbGV0IG1zZ1xuICAgIGNvbnN0IGxlbiA9IGFyZ3MubGVuZ3RoXG4gICAgYXJncyA9IChBcnJheS5pc0FycmF5KGFyZ3MpID8gYXJncyA6IFthcmdzXSkubWFwKChhKSA9PiBgXCIke2F9XCJgKS5qb2luKCcgb3IgJylcbiAgICBzd2l0Y2ggKGxlbikge1xuICAgICAgY2FzZSAxOlxuICAgICAgICBtc2cgKz0gYFRoZSAke2FyZ3NbMF19IGFyZ3VtZW50YFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyOlxuICAgICAgICBtc2cgKz0gYFRoZSAke2FyZ3NbMF19IGFuZCAke2FyZ3NbMV19IGFyZ3VtZW50c2BcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBsYXN0ID0gYXJncy5wb3AoKVxuICAgICAgICAgIG1zZyArPSBgVGhlICR7YXJncy5qb2luKCcsICcpfSwgYW5kICR7bGFzdH0gYXJndW1lbnRzYFxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICAgIHJldHVybiBgJHttc2d9IG11c3QgYmUgc3BlY2lmaWVkYFxuICB9LFxuICBUeXBlRXJyb3JcbilcbkUoXG4gICdFUlJfT1VUX09GX1JBTkdFJyxcbiAgKHN0ciwgcmFuZ2UsIGlucHV0KSA9PiB7XG4gICAgYXNzZXJ0KHJhbmdlLCAnTWlzc2luZyBcInJhbmdlXCIgYXJndW1lbnQnKVxuICAgIGxldCByZWNlaXZlZFxuICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKGlucHV0KSAmJiBNYXRoLmFicyhpbnB1dCkgPiAyICoqIDMyKSB7XG4gICAgICByZWNlaXZlZCA9IGFkZE51bWVyaWNhbFNlcGFyYXRvcihTdHJpbmcoaW5wdXQpKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnYmlnaW50Jykge1xuICAgICAgcmVjZWl2ZWQgPSBTdHJpbmcoaW5wdXQpXG4gICAgICBjb25zdCBsaW1pdCA9IEJpZ0ludCgyKSAqKiBCaWdJbnQoMzIpXG4gICAgICBpZiAoaW5wdXQgPiBsaW1pdCB8fCBpbnB1dCA8IC1saW1pdCkge1xuICAgICAgICByZWNlaXZlZCA9IGFkZE51bWVyaWNhbFNlcGFyYXRvcihyZWNlaXZlZClcbiAgICAgIH1cbiAgICAgIHJlY2VpdmVkICs9ICduJ1xuICAgIH0gZWxzZSB7XG4gICAgICByZWNlaXZlZCA9IGluc3BlY3QoaW5wdXQpXG4gICAgfVxuICAgIHJldHVybiBgVGhlIHZhbHVlIG9mIFwiJHtzdHJ9XCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlICR7cmFuZ2V9LiBSZWNlaXZlZCAke3JlY2VpdmVkfWBcbiAgfSxcbiAgUmFuZ2VFcnJvclxuKVxuRSgnRVJSX01VTFRJUExFX0NBTExCQUNLJywgJ0NhbGxiYWNrIGNhbGxlZCBtdWx0aXBsZSB0aW1lcycsIEVycm9yKVxuRSgnRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQnLCAnVGhlICVzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQnLCBFcnJvcilcbkUoJ0VSUl9TVFJFQU1fQUxSRUFEWV9GSU5JU0hFRCcsICdDYW5ub3QgY2FsbCAlcyBhZnRlciBhIHN0cmVhbSB3YXMgZmluaXNoZWQnLCBFcnJvcilcbkUoJ0VSUl9TVFJFQU1fQ0FOTk9UX1BJUEUnLCAnQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScsIEVycm9yKVxuRSgnRVJSX1NUUkVBTV9ERVNUUk9ZRUQnLCAnQ2Fubm90IGNhbGwgJXMgYWZ0ZXIgYSBzdHJlYW0gd2FzIGRlc3Ryb3llZCcsIEVycm9yKVxuRSgnRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUycsICdNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbScsIFR5cGVFcnJvcilcbkUoJ0VSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFJywgJ1ByZW1hdHVyZSBjbG9zZScsIEVycm9yKVxuRSgnRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRicsICdzdHJlYW0ucHVzaCgpIGFmdGVyIEVPRicsIEVycm9yKVxuRSgnRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCcsICdzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCcsIEVycm9yKVxuRSgnRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQnLCAnd3JpdGUgYWZ0ZXIgZW5kJywgRXJyb3IpXG5FKCdFUlJfVU5LTk9XTl9FTkNPRElORycsICdVbmtub3duIGVuY29kaW5nOiAlcycsIFR5cGVFcnJvcilcbm1vZHVsZS5leHBvcnRzID0ge1xuICBBYm9ydEVycm9yLFxuICBhZ2dyZWdhdGVUd29FcnJvcnM6IGhpZGVTdGFja0ZyYW1lcyhhZ2dyZWdhdGVUd29FcnJvcnMpLFxuICBoaWRlU3RhY2tGcmFtZXMsXG4gIGNvZGVzXG59XG4iLCIvKmdsb2JhbHMgc2VsZiwgd2luZG93ICovXG5cInVzZSBzdHJpY3RcIlxuXG4vKmVzbGludC1kaXNhYmxlIEBteXN0aWNhdGVhL3ByZXR0aWVyICovXG5jb25zdCB7IEFib3J0Q29udHJvbGxlciwgQWJvcnRTaWduYWwgfSA9XG4gICAgdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDpcbiAgICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDpcbiAgICAvKiBvdGhlcndpc2UgKi8gdW5kZWZpbmVkXG4vKmVzbGludC1lbmFibGUgQG15c3RpY2F0ZWEvcHJldHRpZXIgKi9cblxubW9kdWxlLmV4cG9ydHMgPSBBYm9ydENvbnRyb2xsZXJcbm1vZHVsZS5leHBvcnRzLkFib3J0U2lnbmFsID0gQWJvcnRTaWduYWxcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBBYm9ydENvbnRyb2xsZXJcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSID0gdHlwZW9mIFJlZmxlY3QgPT09ICdvYmplY3QnID8gUmVmbGVjdCA6IG51bGxcbnZhciBSZWZsZWN0QXBwbHkgPSBSICYmIHR5cGVvZiBSLmFwcGx5ID09PSAnZnVuY3Rpb24nXG4gID8gUi5hcHBseVxuICA6IGZ1bmN0aW9uIFJlZmxlY3RBcHBseSh0YXJnZXQsIHJlY2VpdmVyLCBhcmdzKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKHRhcmdldCwgcmVjZWl2ZXIsIGFyZ3MpO1xuICB9XG5cbnZhciBSZWZsZWN0T3duS2V5c1xuaWYgKFIgJiYgdHlwZW9mIFIub3duS2V5cyA9PT0gJ2Z1bmN0aW9uJykge1xuICBSZWZsZWN0T3duS2V5cyA9IFIub3duS2V5c1xufSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gIFJlZmxlY3RPd25LZXlzID0gZnVuY3Rpb24gUmVmbGVjdE93bktleXModGFyZ2V0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldClcbiAgICAgIC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpKTtcbiAgfTtcbn0gZWxzZSB7XG4gIFJlZmxlY3RPd25LZXlzID0gZnVuY3Rpb24gUmVmbGVjdE93bktleXModGFyZ2V0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIFByb2Nlc3NFbWl0V2FybmluZyh3YXJuaW5nKSB7XG4gIGlmIChjb25zb2xlICYmIGNvbnNvbGUud2FybikgY29uc29sZS53YXJuKHdhcm5pbmcpO1xufVxuXG52YXIgTnVtYmVySXNOYU4gPSBOdW1iZXIuaXNOYU4gfHwgZnVuY3Rpb24gTnVtYmVySXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkge1xuICBFdmVudEVtaXR0ZXIuaW5pdC5jYWxsKHRoaXMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XG5tb2R1bGUuZXhwb3J0cy5vbmNlID0gb25jZTtcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC4xMC54XG5FdmVudEVtaXR0ZXIuRXZlbnRFbWl0dGVyID0gRXZlbnRFbWl0dGVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHMgPSB1bmRlZmluZWQ7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHNDb3VudCA9IDA7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnMgPSB1bmRlZmluZWQ7XG5cbi8vIEJ5IGRlZmF1bHQgRXZlbnRFbWl0dGVycyB3aWxsIHByaW50IGEgd2FybmluZyBpZiBtb3JlIHRoYW4gMTAgbGlzdGVuZXJzIGFyZVxuLy8gYWRkZWQgdG8gaXQuIFRoaXMgaXMgYSB1c2VmdWwgZGVmYXVsdCB3aGljaCBoZWxwcyBmaW5kaW5nIG1lbW9yeSBsZWFrcy5cbnZhciBkZWZhdWx0TWF4TGlzdGVuZXJzID0gMTA7XG5cbmZ1bmN0aW9uIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpIHtcbiAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgbGlzdGVuZXIpO1xuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShFdmVudEVtaXR0ZXIsICdkZWZhdWx0TWF4TGlzdGVuZXJzJywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkZWZhdWx0TWF4TGlzdGVuZXJzO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uKGFyZykge1xuICAgIGlmICh0eXBlb2YgYXJnICE9PSAnbnVtYmVyJyB8fCBhcmcgPCAwIHx8IE51bWJlcklzTmFOKGFyZykpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyArIGFyZyArICcuJyk7XG4gICAgfVxuICAgIGRlZmF1bHRNYXhMaXN0ZW5lcnMgPSBhcmc7XG4gIH1cbn0pO1xuXG5FdmVudEVtaXR0ZXIuaW5pdCA9IGZ1bmN0aW9uKCkge1xuXG4gIGlmICh0aGlzLl9ldmVudHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy5fZXZlbnRzID09PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2V2ZW50cykge1xuICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICB9XG5cbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gdGhpcy5fbWF4TGlzdGVuZXJzIHx8IHVuZGVmaW5lZDtcbn07XG5cbi8vIE9idmlvdXNseSBub3QgYWxsIEVtaXR0ZXJzIHNob3VsZCBiZSBsaW1pdGVkIHRvIDEwLiBUaGlzIGZ1bmN0aW9uIGFsbG93c1xuLy8gdGhhdCB0byBiZSBpbmNyZWFzZWQuIFNldCB0byB6ZXJvIGZvciB1bmxpbWl0ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uIHNldE1heExpc3RlbmVycyhuKSB7XG4gIGlmICh0eXBlb2YgbiAhPT0gJ251bWJlcicgfHwgbiA8IDAgfHwgTnVtYmVySXNOYU4obikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiblwiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcgKyBuICsgJy4nKTtcbiAgfVxuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSBuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIF9nZXRNYXhMaXN0ZW5lcnModGhhdCkge1xuICBpZiAodGhhdC5fbWF4TGlzdGVuZXJzID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIEV2ZW50RW1pdHRlci5kZWZhdWx0TWF4TGlzdGVuZXJzO1xuICByZXR1cm4gdGhhdC5fbWF4TGlzdGVuZXJzO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmdldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uIGdldE1heExpc3RlbmVycygpIHtcbiAgcmV0dXJuIF9nZXRNYXhMaXN0ZW5lcnModGhpcyk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiBlbWl0KHR5cGUpIHtcbiAgdmFyIGFyZ3MgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICB2YXIgZG9FcnJvciA9ICh0eXBlID09PSAnZXJyb3InKTtcblxuICB2YXIgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICBpZiAoZXZlbnRzICE9PSB1bmRlZmluZWQpXG4gICAgZG9FcnJvciA9IChkb0Vycm9yICYmIGV2ZW50cy5lcnJvciA9PT0gdW5kZWZpbmVkKTtcbiAgZWxzZSBpZiAoIWRvRXJyb3IpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIElmIHRoZXJlIGlzIG5vICdlcnJvcicgZXZlbnQgbGlzdGVuZXIgdGhlbiB0aHJvdy5cbiAgaWYgKGRvRXJyb3IpIHtcbiAgICB2YXIgZXI7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMClcbiAgICAgIGVyID0gYXJnc1swXTtcbiAgICBpZiAoZXIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgLy8gTm90ZTogVGhlIGNvbW1lbnRzIG9uIHRoZSBgdGhyb3dgIGxpbmVzIGFyZSBpbnRlbnRpb25hbCwgdGhleSBzaG93XG4gICAgICAvLyB1cCBpbiBOb2RlJ3Mgb3V0cHV0IGlmIHRoaXMgcmVzdWx0cyBpbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLlxuICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gICAgfVxuICAgIC8vIEF0IGxlYXN0IGdpdmUgc29tZSBraW5kIG9mIGNvbnRleHQgdG8gdGhlIHVzZXJcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdVbmhhbmRsZWQgZXJyb3IuJyArIChlciA/ICcgKCcgKyBlci5tZXNzYWdlICsgJyknIDogJycpKTtcbiAgICBlcnIuY29udGV4dCA9IGVyO1xuICAgIHRocm93IGVycjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgfVxuXG4gIHZhciBoYW5kbGVyID0gZXZlbnRzW3R5cGVdO1xuXG4gIGlmIChoYW5kbGVyID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIFJlZmxlY3RBcHBseShoYW5kbGVyLCB0aGlzLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbGVuID0gaGFuZGxlci5sZW5ndGg7XG4gICAgdmFyIGxpc3RlbmVycyA9IGFycmF5Q2xvbmUoaGFuZGxlciwgbGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgICAgUmVmbGVjdEFwcGx5KGxpc3RlbmVyc1tpXSwgdGhpcywgYXJncyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmZ1bmN0aW9uIF9hZGRMaXN0ZW5lcih0YXJnZXQsIHR5cGUsIGxpc3RlbmVyLCBwcmVwZW5kKSB7XG4gIHZhciBtO1xuICB2YXIgZXZlbnRzO1xuICB2YXIgZXhpc3Rpbmc7XG5cbiAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG5cbiAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG4gIGlmIChldmVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB0YXJnZXQuX2V2ZW50c0NvdW50ID0gMDtcbiAgfSBlbHNlIHtcbiAgICAvLyBUbyBhdm9pZCByZWN1cnNpb24gaW4gdGhlIGNhc2UgdGhhdCB0eXBlID09PSBcIm5ld0xpc3RlbmVyXCIhIEJlZm9yZVxuICAgIC8vIGFkZGluZyBpdCB0byB0aGUgbGlzdGVuZXJzLCBmaXJzdCBlbWl0IFwibmV3TGlzdGVuZXJcIi5cbiAgICBpZiAoZXZlbnRzLm5ld0xpc3RlbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRhcmdldC5lbWl0KCduZXdMaXN0ZW5lcicsIHR5cGUsXG4gICAgICAgICAgICAgICAgICBsaXN0ZW5lci5saXN0ZW5lciA/IGxpc3RlbmVyLmxpc3RlbmVyIDogbGlzdGVuZXIpO1xuXG4gICAgICAvLyBSZS1hc3NpZ24gYGV2ZW50c2AgYmVjYXVzZSBhIG5ld0xpc3RlbmVyIGhhbmRsZXIgY291bGQgaGF2ZSBjYXVzZWQgdGhlXG4gICAgICAvLyB0aGlzLl9ldmVudHMgdG8gYmUgYXNzaWduZWQgdG8gYSBuZXcgb2JqZWN0XG4gICAgICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcbiAgICB9XG4gICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV07XG4gIH1cblxuICBpZiAoZXhpc3RpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9wdGltaXplIHRoZSBjYXNlIG9mIG9uZSBsaXN0ZW5lci4gRG9uJ3QgbmVlZCB0aGUgZXh0cmEgYXJyYXkgb2JqZWN0LlxuICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdID0gbGlzdGVuZXI7XG4gICAgKyt0YXJnZXQuX2V2ZW50c0NvdW50O1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgZXhpc3RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIEFkZGluZyB0aGUgc2Vjb25kIGVsZW1lbnQsIG5lZWQgdG8gY2hhbmdlIHRvIGFycmF5LlxuICAgICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV0gPVxuICAgICAgICBwcmVwZW5kID8gW2xpc3RlbmVyLCBleGlzdGluZ10gOiBbZXhpc3RpbmcsIGxpc3RlbmVyXTtcbiAgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGFuIGFycmF5LCBqdXN0IGFwcGVuZC5cbiAgICB9IGVsc2UgaWYgKHByZXBlbmQpIHtcbiAgICAgIGV4aXN0aW5nLnVuc2hpZnQobGlzdGVuZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBleGlzdGluZy5wdXNoKGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgbGlzdGVuZXIgbGVha1xuICAgIG0gPSBfZ2V0TWF4TGlzdGVuZXJzKHRhcmdldCk7XG4gICAgaWYgKG0gPiAwICYmIGV4aXN0aW5nLmxlbmd0aCA+IG0gJiYgIWV4aXN0aW5nLndhcm5lZCkge1xuICAgICAgZXhpc3Rpbmcud2FybmVkID0gdHJ1ZTtcbiAgICAgIC8vIE5vIGVycm9yIGNvZGUgZm9yIHRoaXMgc2luY2UgaXQgaXMgYSBXYXJuaW5nXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgIHZhciB3ID0gbmV3IEVycm9yKCdQb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZy5sZW5ndGggKyAnICcgKyBTdHJpbmcodHlwZSkgKyAnIGxpc3RlbmVycyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY3JlYXNlIGxpbWl0Jyk7XG4gICAgICB3Lm5hbWUgPSAnTWF4TGlzdGVuZXJzRXhjZWVkZWRXYXJuaW5nJztcbiAgICAgIHcuZW1pdHRlciA9IHRhcmdldDtcbiAgICAgIHcudHlwZSA9IHR5cGU7XG4gICAgICB3LmNvdW50ID0gZXhpc3RpbmcubGVuZ3RoO1xuICAgICAgUHJvY2Vzc0VtaXRXYXJuaW5nKHcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbiBhZGRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICByZXR1cm4gX2FkZExpc3RlbmVyKHRoaXMsIHR5cGUsIGxpc3RlbmVyLCBmYWxzZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5wcmVwZW5kTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgcmV0dXJuIF9hZGRMaXN0ZW5lcih0aGlzLCB0eXBlLCBsaXN0ZW5lciwgdHJ1ZSk7XG4gICAgfTtcblxuZnVuY3Rpb24gb25jZVdyYXBwZXIoKSB7XG4gIGlmICghdGhpcy5maXJlZCkge1xuICAgIHRoaXMudGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSwgdGhpcy53cmFwRm4pO1xuICAgIHRoaXMuZmlyZWQgPSB0cnVlO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk7XG4gICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuYXBwbHkodGhpcy50YXJnZXQsIGFyZ3VtZW50cyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX29uY2VXcmFwKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIpIHtcbiAgdmFyIHN0YXRlID0geyBmaXJlZDogZmFsc2UsIHdyYXBGbjogdW5kZWZpbmVkLCB0YXJnZXQ6IHRhcmdldCwgdHlwZTogdHlwZSwgbGlzdGVuZXI6IGxpc3RlbmVyIH07XG4gIHZhciB3cmFwcGVkID0gb25jZVdyYXBwZXIuYmluZChzdGF0ZSk7XG4gIHdyYXBwZWQubGlzdGVuZXIgPSBsaXN0ZW5lcjtcbiAgc3RhdGUud3JhcEZuID0gd3JhcHBlZDtcbiAgcmV0dXJuIHdyYXBwZWQ7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub25jZSA9IGZ1bmN0aW9uIG9uY2UodHlwZSwgbGlzdGVuZXIpIHtcbiAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG4gIHRoaXMub24odHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kT25jZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcbiAgICAgIHRoaXMucHJlcGVuZExpc3RlbmVyKHR5cGUsIF9vbmNlV3JhcCh0aGlzLCB0eXBlLCBsaXN0ZW5lcikpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuLy8gRW1pdHMgYSAncmVtb3ZlTGlzdGVuZXInIGV2ZW50IGlmIGFuZCBvbmx5IGlmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICB2YXIgbGlzdCwgZXZlbnRzLCBwb3NpdGlvbiwgaSwgb3JpZ2luYWxMaXN0ZW5lcjtcblxuICAgICAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG5cbiAgICAgIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgICAgIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIGxpc3QgPSBldmVudHNbdHlwZV07XG4gICAgICBpZiAobGlzdCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgaWYgKGxpc3QgPT09IGxpc3RlbmVyIHx8IGxpc3QubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgIGlmICgtLXRoaXMuX2V2ZW50c0NvdW50ID09PSAwKVxuICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07XG4gICAgICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgICAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0Lmxpc3RlbmVyIHx8IGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbGlzdCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBwb3NpdGlvbiA9IC0xO1xuXG4gICAgICAgIGZvciAoaSA9IGxpc3QubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICBpZiAobGlzdFtpXSA9PT0gbGlzdGVuZXIgfHwgbGlzdFtpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgICAgIG9yaWdpbmFsTGlzdGVuZXIgPSBsaXN0W2ldLmxpc3RlbmVyO1xuICAgICAgICAgICAgcG9zaXRpb24gPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMClcbiAgICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgICBpZiAocG9zaXRpb24gPT09IDApXG4gICAgICAgICAgbGlzdC5zaGlmdCgpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBzcGxpY2VPbmUobGlzdCwgcG9zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID09PSAxKVxuICAgICAgICAgIGV2ZW50c1t0eXBlXSA9IGxpc3RbMF07XG5cbiAgICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lciAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBvcmlnaW5hbExpc3RlbmVyIHx8IGxpc3RlbmVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vZmYgPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9XG4gICAgZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKHR5cGUpIHtcbiAgICAgIHZhciBsaXN0ZW5lcnMsIGV2ZW50cywgaTtcblxuICAgICAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgICAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgLy8gbm90IGxpc3RlbmluZyBmb3IgcmVtb3ZlTGlzdGVuZXIsIG5vIG5lZWQgdG8gZW1pdFxuICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnRzW3R5cGVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoLS10aGlzLl9ldmVudHNDb3VudCA9PT0gMClcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgLy8gZW1pdCByZW1vdmVMaXN0ZW5lciBmb3IgYWxsIGxpc3RlbmVycyBvbiBhbGwgZXZlbnRzXG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGV2ZW50cyk7XG4gICAgICAgIHZhciBrZXk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICBpZiAoa2V5ID09PSAncmVtb3ZlTGlzdGVuZXInKSBjb250aW51ZTtcbiAgICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCdyZW1vdmVMaXN0ZW5lcicpO1xuICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBsaXN0ZW5lcnMgPSBldmVudHNbdHlwZV07XG5cbiAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzKTtcbiAgICAgIH0gZWxzZSBpZiAobGlzdGVuZXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gTElGTyBvcmRlclxuICAgICAgICBmb3IgKGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuZnVuY3Rpb24gX2xpc3RlbmVycyh0YXJnZXQsIHR5cGUsIHVud3JhcCkge1xuICB2YXIgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG5cbiAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBbXTtcblxuICB2YXIgZXZsaXN0ZW5lciA9IGV2ZW50c1t0eXBlXTtcbiAgaWYgKGV2bGlzdGVuZXIgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gW107XG5cbiAgaWYgKHR5cGVvZiBldmxpc3RlbmVyID09PSAnZnVuY3Rpb24nKVxuICAgIHJldHVybiB1bndyYXAgPyBbZXZsaXN0ZW5lci5saXN0ZW5lciB8fCBldmxpc3RlbmVyXSA6IFtldmxpc3RlbmVyXTtcblxuICByZXR1cm4gdW53cmFwID9cbiAgICB1bndyYXBMaXN0ZW5lcnMoZXZsaXN0ZW5lcikgOiBhcnJheUNsb25lKGV2bGlzdGVuZXIsIGV2bGlzdGVuZXIubGVuZ3RoKTtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lcnMgPSBmdW5jdGlvbiBsaXN0ZW5lcnModHlwZSkge1xuICByZXR1cm4gX2xpc3RlbmVycyh0aGlzLCB0eXBlLCB0cnVlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmF3TGlzdGVuZXJzID0gZnVuY3Rpb24gcmF3TGlzdGVuZXJzKHR5cGUpIHtcbiAgcmV0dXJuIF9saXN0ZW5lcnModGhpcywgdHlwZSwgZmFsc2UpO1xufTtcblxuRXZlbnRFbWl0dGVyLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbihlbWl0dGVyLCB0eXBlKSB7XG4gIGlmICh0eXBlb2YgZW1pdHRlci5saXN0ZW5lckNvdW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGVtaXR0ZXIubGlzdGVuZXJDb3VudCh0eXBlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbGlzdGVuZXJDb3VudC5jYWxsKGVtaXR0ZXIsIHR5cGUpO1xuICB9XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVyQ291bnQgPSBsaXN0ZW5lckNvdW50O1xuZnVuY3Rpb24gbGlzdGVuZXJDb3VudCh0eXBlKSB7XG4gIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHM7XG5cbiAgaWYgKGV2ZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIGV2bGlzdGVuZXIgPSBldmVudHNbdHlwZV07XG5cbiAgICBpZiAodHlwZW9mIGV2bGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSBpZiAoZXZsaXN0ZW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZXZsaXN0ZW5lci5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIDA7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZXZlbnROYW1lcyA9IGZ1bmN0aW9uIGV2ZW50TmFtZXMoKSB7XG4gIHJldHVybiB0aGlzLl9ldmVudHNDb3VudCA+IDAgPyBSZWZsZWN0T3duS2V5cyh0aGlzLl9ldmVudHMpIDogW107XG59O1xuXG5mdW5jdGlvbiBhcnJheUNsb25lKGFyciwgbikge1xuICB2YXIgY29weSA9IG5ldyBBcnJheShuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpXG4gICAgY29weVtpXSA9IGFycltpXTtcbiAgcmV0dXJuIGNvcHk7XG59XG5cbmZ1bmN0aW9uIHNwbGljZU9uZShsaXN0LCBpbmRleCkge1xuICBmb3IgKDsgaW5kZXggKyAxIDwgbGlzdC5sZW5ndGg7IGluZGV4KyspXG4gICAgbGlzdFtpbmRleF0gPSBsaXN0W2luZGV4ICsgMV07XG4gIGxpc3QucG9wKCk7XG59XG5cbmZ1bmN0aW9uIHVud3JhcExpc3RlbmVycyhhcnIpIHtcbiAgdmFyIHJldCA9IG5ldyBBcnJheShhcnIubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXQubGVuZ3RoOyArK2kpIHtcbiAgICByZXRbaV0gPSBhcnJbaV0ubGlzdGVuZXIgfHwgYXJyW2ldO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG9uY2UoZW1pdHRlciwgbmFtZSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGVycm9yTGlzdGVuZXIoZXJyKSB7XG4gICAgICBlbWl0dGVyLnJlbW92ZUxpc3RlbmVyKG5hbWUsIHJlc29sdmVyKTtcbiAgICAgIHJlamVjdChlcnIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc29sdmVyKCkge1xuICAgICAgaWYgKHR5cGVvZiBlbWl0dGVyLnJlbW92ZUxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JMaXN0ZW5lcik7XG4gICAgICB9XG4gICAgICByZXNvbHZlKFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7XG4gICAgfTtcblxuICAgIGV2ZW50VGFyZ2V0QWdub3N0aWNBZGRMaXN0ZW5lcihlbWl0dGVyLCBuYW1lLCByZXNvbHZlciwgeyBvbmNlOiB0cnVlIH0pO1xuICAgIGlmIChuYW1lICE9PSAnZXJyb3InKSB7XG4gICAgICBhZGRFcnJvckhhbmRsZXJJZkV2ZW50RW1pdHRlcihlbWl0dGVyLCBlcnJvckxpc3RlbmVyLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkRXJyb3JIYW5kbGVySWZFdmVudEVtaXR0ZXIoZW1pdHRlciwgaGFuZGxlciwgZmxhZ3MpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLm9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyKGVtaXR0ZXIsICdlcnJvcicsIGhhbmRsZXIsIGZsYWdzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBldmVudFRhcmdldEFnbm9zdGljQWRkTGlzdGVuZXIoZW1pdHRlciwgbmFtZSwgbGlzdGVuZXIsIGZsYWdzKSB7XG4gIGlmICh0eXBlb2YgZW1pdHRlci5vbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChmbGFncy5vbmNlKSB7XG4gICAgICBlbWl0dGVyLm9uY2UobmFtZSwgbGlzdGVuZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbWl0dGVyLm9uKG5hbWUsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIEV2ZW50VGFyZ2V0IGRvZXMgbm90IGhhdmUgYGVycm9yYCBldmVudCBzZW1hbnRpY3MgbGlrZSBOb2RlXG4gICAgLy8gRXZlbnRFbWl0dGVycywgd2UgZG8gbm90IGxpc3RlbiBmb3IgYGVycm9yYCBldmVudHMgaGVyZS5cbiAgICBlbWl0dGVyLmFkZEV2ZW50TGlzdGVuZXIobmFtZSwgZnVuY3Rpb24gd3JhcExpc3RlbmVyKGFyZykge1xuICAgICAgLy8gSUUgZG9lcyBub3QgaGF2ZSBidWlsdGluIGB7IG9uY2U6IHRydWUgfWAgc3VwcG9ydCBzbyB3ZVxuICAgICAgLy8gaGF2ZSB0byBkbyBpdCBtYW51YWxseS5cbiAgICAgIGlmIChmbGFncy5vbmNlKSB7XG4gICAgICAgIGVtaXR0ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCB3cmFwTGlzdGVuZXIpO1xuICAgICAgfVxuICAgICAgbGlzdGVuZXIoYXJnKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJlbWl0dGVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEV2ZW50RW1pdHRlci4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGVtaXR0ZXIpO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgYnVmZmVyTW9kdWxlID0gcmVxdWlyZSgnYnVmZmVyJylcbmNvbnN0IHsgZm9ybWF0LCBpbnNwZWN0IH0gPSByZXF1aXJlKCcuL3V0aWwvaW5zcGVjdCcpXG5jb25zdCB7XG4gIGNvZGVzOiB7IEVSUl9JTlZBTElEX0FSR19UWVBFIH1cbn0gPSByZXF1aXJlKCcuL2Vycm9ycycpXG5jb25zdCB7IGtSZXNpc3RTdG9wUHJvcGFnYXRpb24sIEFnZ3JlZ2F0ZUVycm9yLCBTeW1ib2xEaXNwb3NlIH0gPSByZXF1aXJlKCcuL3ByaW1vcmRpYWxzJylcbmNvbnN0IEFib3J0U2lnbmFsID0gZ2xvYmFsVGhpcy5BYm9ydFNpZ25hbCB8fCByZXF1aXJlKCdhYm9ydC1jb250cm9sbGVyJykuQWJvcnRTaWduYWxcbmNvbnN0IEFib3J0Q29udHJvbGxlciA9IGdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyIHx8IHJlcXVpcmUoJ2Fib3J0LWNvbnRyb2xsZXInKS5BYm9ydENvbnRyb2xsZXJcbmNvbnN0IEFzeW5jRnVuY3Rpb24gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5bmMgZnVuY3Rpb24gKCkge30pLmNvbnN0cnVjdG9yXG5jb25zdCBCbG9iID0gZ2xvYmFsVGhpcy5CbG9iIHx8IGJ1ZmZlck1vZHVsZS5CbG9iXG4vKiBlc2xpbnQtZGlzYWJsZSBpbmRlbnQgKi9cbmNvbnN0IGlzQmxvYiA9XG4gIHR5cGVvZiBCbG9iICE9PSAndW5kZWZpbmVkJ1xuICAgID8gZnVuY3Rpb24gaXNCbG9iKGIpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGluZGVudFxuICAgICAgICByZXR1cm4gYiBpbnN0YW5jZW9mIEJsb2JcbiAgICAgIH1cbiAgICA6IGZ1bmN0aW9uIGlzQmxvYihiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuLyogZXNsaW50LWVuYWJsZSBpbmRlbnQgKi9cblxuY29uc3QgdmFsaWRhdGVBYm9ydFNpZ25hbCA9IChzaWduYWwsIG5hbWUpID0+IHtcbiAgaWYgKHNpZ25hbCAhPT0gdW5kZWZpbmVkICYmIChzaWduYWwgPT09IG51bGwgfHwgdHlwZW9mIHNpZ25hbCAhPT0gJ29iamVjdCcgfHwgISgnYWJvcnRlZCcgaW4gc2lnbmFsKSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ0Fib3J0U2lnbmFsJywgc2lnbmFsKVxuICB9XG59XG5jb25zdCB2YWxpZGF0ZUZ1bmN0aW9uID0gKHZhbHVlLCBuYW1lKSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ0Z1bmN0aW9uJywgdmFsdWUpXG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBBZ2dyZWdhdGVFcnJvcixcbiAga0VtcHR5T2JqZWN0OiBPYmplY3QuZnJlZXplKHt9KSxcbiAgb25jZShjYWxsYmFjaykge1xuICAgIGxldCBjYWxsZWQgPSBmYWxzZVxuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgaWYgKGNhbGxlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNhbGxlZCA9IHRydWVcbiAgICAgIGNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3MpXG4gICAgfVxuICB9LFxuICBjcmVhdGVEZWZlcnJlZFByb21pc2U6IGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgcmVzb2x2ZVxuICAgIGxldCByZWplY3RcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9taXNlL3BhcmFtLW5hbWVzXG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgICAgcmVzb2x2ZSA9IHJlc1xuICAgICAgcmVqZWN0ID0gcmVqXG4gICAgfSlcbiAgICByZXR1cm4ge1xuICAgICAgcHJvbWlzZSxcbiAgICAgIHJlc29sdmUsXG4gICAgICByZWplY3RcbiAgICB9XG4gIH0sXG4gIHByb21pc2lmeShmbikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBmbigoZXJyLCAuLi5hcmdzKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycilcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZSguLi5hcmdzKVxuICAgICAgfSlcbiAgICB9KVxuICB9LFxuICBkZWJ1Z2xvZygpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge31cbiAgfSxcbiAgZm9ybWF0LFxuICBpbnNwZWN0LFxuICB0eXBlczoge1xuICAgIGlzQXN5bmNGdW5jdGlvbihmbikge1xuICAgICAgcmV0dXJuIGZuIGluc3RhbmNlb2YgQXN5bmNGdW5jdGlvblxuICAgIH0sXG4gICAgaXNBcnJheUJ1ZmZlclZpZXcoYXJyKSB7XG4gICAgICByZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KGFycilcbiAgICB9XG4gIH0sXG4gIGlzQmxvYixcbiAgZGVwcmVjYXRlKGZuLCBtZXNzYWdlKSB7XG4gICAgcmV0dXJuIGZuXG4gIH0sXG4gIGFkZEFib3J0TGlzdGVuZXI6XG4gICAgcmVxdWlyZSgnZXZlbnRzJykuYWRkQWJvcnRMaXN0ZW5lciB8fFxuICAgIGZ1bmN0aW9uIGFkZEFib3J0TGlzdGVuZXIoc2lnbmFsLCBsaXN0ZW5lcikge1xuICAgICAgaWYgKHNpZ25hbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnc2lnbmFsJywgJ0Fib3J0U2lnbmFsJywgc2lnbmFsKVxuICAgICAgfVxuICAgICAgdmFsaWRhdGVBYm9ydFNpZ25hbChzaWduYWwsICdzaWduYWwnKVxuICAgICAgdmFsaWRhdGVGdW5jdGlvbihsaXN0ZW5lciwgJ2xpc3RlbmVyJylcbiAgICAgIGxldCByZW1vdmVFdmVudExpc3RlbmVyXG4gICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gbGlzdGVuZXIoKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGxpc3RlbmVyLCB7XG4gICAgICAgICAgX19wcm90b19fOiBudWxsLFxuICAgICAgICAgIG9uY2U6IHRydWUsXG4gICAgICAgICAgW2tSZXNpc3RTdG9wUHJvcGFnYXRpb25dOiB0cnVlXG4gICAgICAgIH0pXG4gICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgbGlzdGVuZXIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAgICAgW1N5bWJvbERpc3Bvc2VdKCkge1xuICAgICAgICAgIHZhciBfcmVtb3ZlRXZlbnRMaXN0ZW5lclxuICAgICAgICAgIDsoX3JlbW92ZUV2ZW50TGlzdGVuZXIgPSByZW1vdmVFdmVudExpc3RlbmVyKSA9PT0gbnVsbCB8fCBfcmVtb3ZlRXZlbnRMaXN0ZW5lciA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiBfcmVtb3ZlRXZlbnRMaXN0ZW5lcigpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICBBYm9ydFNpZ25hbEFueTpcbiAgICBBYm9ydFNpZ25hbC5hbnkgfHxcbiAgICBmdW5jdGlvbiBBYm9ydFNpZ25hbEFueShzaWduYWxzKSB7XG4gICAgICAvLyBGYXN0IHBhdGggaWYgdGhlcmUgaXMgb25seSBvbmUgc2lnbmFsLlxuICAgICAgaWYgKHNpZ25hbHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBzaWduYWxzWzBdXG4gICAgICB9XG4gICAgICBjb25zdCBhYyA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgICAgY29uc3QgYWJvcnQgPSAoKSA9PiBhYy5hYm9ydCgpXG4gICAgICBzaWduYWxzLmZvckVhY2goKHNpZ25hbCkgPT4ge1xuICAgICAgICB2YWxpZGF0ZUFib3J0U2lnbmFsKHNpZ25hbCwgJ3NpZ25hbHMnKVxuICAgICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydCwge1xuICAgICAgICAgIG9uY2U6IHRydWVcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICBhYy5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2Fib3J0JyxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHNpZ25hbHMuZm9yRWFjaCgoc2lnbmFsKSA9PiBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydCkpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIHJldHVybiBhYy5zaWduYWxcbiAgICB9XG59XG5tb2R1bGUuZXhwb3J0cy5wcm9taXNpZnkuY3VzdG9tID0gU3ltYm9sLmZvcignbm9kZWpzLnV0aWwucHJvbWlzaWZ5LmN1c3RvbScpXG4iLCIvKiBlc2xpbnQganNkb2MvcmVxdWlyZS1qc2RvYzogXCJlcnJvclwiICovXG5cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7XG4gIEFycmF5SXNBcnJheSxcbiAgQXJyYXlQcm90b3R5cGVJbmNsdWRlcyxcbiAgQXJyYXlQcm90b3R5cGVKb2luLFxuICBBcnJheVByb3RvdHlwZU1hcCxcbiAgTnVtYmVySXNJbnRlZ2VyLFxuICBOdW1iZXJJc05hTixcbiAgTnVtYmVyTUFYX1NBRkVfSU5URUdFUixcbiAgTnVtYmVyTUlOX1NBRkVfSU5URUdFUixcbiAgTnVtYmVyUGFyc2VJbnQsXG4gIE9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5LFxuICBSZWdFeHBQcm90b3R5cGVFeGVjLFxuICBTdHJpbmcsXG4gIFN0cmluZ1Byb3RvdHlwZVRvVXBwZXJDYXNlLFxuICBTdHJpbmdQcm90b3R5cGVUcmltXG59ID0gcmVxdWlyZSgnLi4vb3Vycy9wcmltb3JkaWFscycpXG5jb25zdCB7XG4gIGhpZGVTdGFja0ZyYW1lcyxcbiAgY29kZXM6IHsgRVJSX1NPQ0tFVF9CQURfUE9SVCwgRVJSX0lOVkFMSURfQVJHX1RZUEUsIEVSUl9JTlZBTElEX0FSR19WQUxVRSwgRVJSX09VVF9PRl9SQU5HRSwgRVJSX1VOS05PV05fU0lHTkFMIH1cbn0gPSByZXF1aXJlKCcuLi9vdXJzL2Vycm9ycycpXG5jb25zdCB7IG5vcm1hbGl6ZUVuY29kaW5nIH0gPSByZXF1aXJlKCcuLi9vdXJzL3V0aWwnKVxuY29uc3QgeyBpc0FzeW5jRnVuY3Rpb24sIGlzQXJyYXlCdWZmZXJWaWV3IH0gPSByZXF1aXJlKCcuLi9vdXJzL3V0aWwnKS50eXBlc1xuY29uc3Qgc2lnbmFscyA9IHt9XG5cbi8qKlxuICogQHBhcmFtIHsqfSB2YWx1ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzSW50MzIodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSAodmFsdWUgfCAwKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1VpbnQzMih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID4+PiAwXG59XG5jb25zdCBvY3RhbFJlZyA9IC9eWzAtN10rJC9cbmNvbnN0IG1vZGVEZXNjID0gJ211c3QgYmUgYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciBvciBhbiBvY3RhbCBzdHJpbmcnXG5cbi8qKlxuICogUGFyc2UgYW5kIHZhbGlkYXRlIHZhbHVlcyB0aGF0IHdpbGwgYmUgY29udmVydGVkIGludG8gbW9kZV90ICh0aGUgU18qXG4gKiBjb25zdGFudHMpLiBPbmx5IHZhbGlkIG51bWJlcnMgYW5kIG9jdGFsIHN0cmluZ3MgYXJlIGFsbG93ZWQuIFRoZXkgY291bGQgYmVcbiAqIGNvbnZlcnRlZCB0byAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcnMgb3Igbm9uLW5lZ2F0aXZlIHNpZ25lZCBpbnRlZ2VycyBpbiB0aGVcbiAqIEMrKyBsYW5kLCBidXQgYW55IHZhbHVlIGhpZ2hlciB0aGFuIDBvNzc3IHdpbGwgcmVzdWx0IGluIHBsYXRmb3JtLXNwZWNpZmljXG4gKiBiZWhhdmlvcnMuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlcyB0byBiZSB2YWxpZGF0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGFyZ3VtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gW2RlZl0gSWYgc3BlY2lmaWVkLCB3aWxsIGJlIHJldHVybmVkIGZvciBpbnZhbGlkIHZhbHVlc1xuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gcGFyc2VGaWxlTW9kZSh2YWx1ZSwgbmFtZSwgZGVmKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdmFsdWUgPSBkZWZcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGlmIChSZWdFeHBQcm90b3R5cGVFeGVjKG9jdGFsUmVnLCB2YWx1ZSkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVkFMVUUobmFtZSwgdmFsdWUsIG1vZGVEZXNjKVxuICAgIH1cbiAgICB2YWx1ZSA9IE51bWJlclBhcnNlSW50KHZhbHVlLCA4KVxuICB9XG4gIHZhbGlkYXRlVWludDMyKHZhbHVlLCBuYW1lKVxuICByZXR1cm4gdmFsdWVcbn1cblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVJbnRlZ2VyXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtudW1iZXJ9IFttaW5dXG4gKiBAcGFyYW0ge251bWJlcn0gW21heF1cbiAqIEByZXR1cm5zIHthc3NlcnRzIHZhbHVlIGlzIG51bWJlcn1cbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlSW50ZWdlcn0gKi9cbmNvbnN0IHZhbGlkYXRlSW50ZWdlciA9IGhpZGVTdGFja0ZyYW1lcygodmFsdWUsIG5hbWUsIG1pbiA9IE51bWJlck1JTl9TQUZFX0lOVEVHRVIsIG1heCA9IE51bWJlck1BWF9TQUZFX0lOVEVHRVIpID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRShuYW1lLCAnbnVtYmVyJywgdmFsdWUpXG4gIGlmICghTnVtYmVySXNJbnRlZ2VyKHZhbHVlKSkgdGhyb3cgbmV3IEVSUl9PVVRfT0ZfUkFOR0UobmFtZSwgJ2FuIGludGVnZXInLCB2YWx1ZSlcbiAgaWYgKHZhbHVlIDwgbWluIHx8IHZhbHVlID4gbWF4KSB0aHJvdyBuZXcgRVJSX09VVF9PRl9SQU5HRShuYW1lLCBgPj0gJHttaW59ICYmIDw9ICR7bWF4fWAsIHZhbHVlKVxufSlcblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVJbnQzMlxuICogQHBhcmFtIHsqfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBbbWluXVxuICogQHBhcmFtIHtudW1iZXJ9IFttYXhdXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyB2YWx1ZSBpcyBudW1iZXJ9XG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZUludDMyfSAqL1xuY29uc3QgdmFsaWRhdGVJbnQzMiA9IGhpZGVTdGFja0ZyYW1lcygodmFsdWUsIG5hbWUsIG1pbiA9IC0yMTQ3NDgzNjQ4LCBtYXggPSAyMTQ3NDgzNjQ3KSA9PiB7XG4gIC8vIFRoZSBkZWZhdWx0cyBmb3IgbWluIGFuZCBtYXggY29ycmVzcG9uZCB0byB0aGUgbGltaXRzIG9mIDMyLWJpdCBpbnRlZ2Vycy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ251bWJlcicsIHZhbHVlKVxuICB9XG4gIGlmICghTnVtYmVySXNJbnRlZ2VyKHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFUlJfT1VUX09GX1JBTkdFKG5hbWUsICdhbiBpbnRlZ2VyJywgdmFsdWUpXG4gIH1cbiAgaWYgKHZhbHVlIDwgbWluIHx8IHZhbHVlID4gbWF4KSB7XG4gICAgdGhyb3cgbmV3IEVSUl9PVVRfT0ZfUkFOR0UobmFtZSwgYD49ICR7bWlufSAmJiA8PSAke21heH1gLCB2YWx1ZSlcbiAgfVxufSlcblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVVaW50MzJcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge251bWJlcnxib29sZWFufSBbcG9zaXRpdmU9ZmFsc2VdXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyB2YWx1ZSBpcyBudW1iZXJ9XG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZVVpbnQzMn0gKi9cbmNvbnN0IHZhbGlkYXRlVWludDMyID0gaGlkZVN0YWNrRnJhbWVzKCh2YWx1ZSwgbmFtZSwgcG9zaXRpdmUgPSBmYWxzZSkgPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRShuYW1lLCAnbnVtYmVyJywgdmFsdWUpXG4gIH1cbiAgaWYgKCFOdW1iZXJJc0ludGVnZXIodmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9PVVRfT0ZfUkFOR0UobmFtZSwgJ2FuIGludGVnZXInLCB2YWx1ZSlcbiAgfVxuICBjb25zdCBtaW4gPSBwb3NpdGl2ZSA/IDEgOiAwXG4gIC8vIDIgKiogMzIgPT09IDQyOTQ5NjcyOTZcbiAgY29uc3QgbWF4ID0gNDI5NDk2NzI5NVxuICBpZiAodmFsdWUgPCBtaW4gfHwgdmFsdWUgPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgRVJSX09VVF9PRl9SQU5HRShuYW1lLCBgPj0gJHttaW59ICYmIDw9ICR7bWF4fWAsIHZhbHVlKVxuICB9XG59KVxuXG4vKipcbiAqIEBjYWxsYmFjayB2YWxpZGF0ZVN0cmluZ1xuICogQHBhcmFtIHsqfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEByZXR1cm5zIHthc3NlcnRzIHZhbHVlIGlzIHN0cmluZ31cbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlU3RyaW5nfSAqL1xuZnVuY3Rpb24gdmFsaWRhdGVTdHJpbmcodmFsdWUsIG5hbWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRShuYW1lLCAnc3RyaW5nJywgdmFsdWUpXG59XG5cbi8qKlxuICogQGNhbGxiYWNrIHZhbGlkYXRlTnVtYmVyXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtudW1iZXJ9IFttaW5dXG4gKiBAcGFyYW0ge251bWJlcn0gW21heF1cbiAqIEByZXR1cm5zIHthc3NlcnRzIHZhbHVlIGlzIG51bWJlcn1cbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlTnVtYmVyfSAqL1xuZnVuY3Rpb24gdmFsaWRhdGVOdW1iZXIodmFsdWUsIG5hbWUsIG1pbiA9IHVuZGVmaW5lZCwgbWF4KSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ251bWJlcicsIHZhbHVlKVxuICBpZiAoXG4gICAgKG1pbiAhPSBudWxsICYmIHZhbHVlIDwgbWluKSB8fFxuICAgIChtYXggIT0gbnVsbCAmJiB2YWx1ZSA+IG1heCkgfHxcbiAgICAoKG1pbiAhPSBudWxsIHx8IG1heCAhPSBudWxsKSAmJiBOdW1iZXJJc05hTih2YWx1ZSkpXG4gICkge1xuICAgIHRocm93IG5ldyBFUlJfT1VUX09GX1JBTkdFKFxuICAgICAgbmFtZSxcbiAgICAgIGAke21pbiAhPSBudWxsID8gYD49ICR7bWlufWAgOiAnJ30ke21pbiAhPSBudWxsICYmIG1heCAhPSBudWxsID8gJyAmJiAnIDogJyd9JHttYXggIT0gbnVsbCA/IGA8PSAke21heH1gIDogJyd9YCxcbiAgICAgIHZhbHVlXG4gICAgKVxuICB9XG59XG5cbi8qKlxuICogQGNhbGxiYWNrIHZhbGlkYXRlT25lT2ZcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge1R9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtUW119IG9uZU9mXG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZU9uZU9mfSAqL1xuY29uc3QgdmFsaWRhdGVPbmVPZiA9IGhpZGVTdGFja0ZyYW1lcygodmFsdWUsIG5hbWUsIG9uZU9mKSA9PiB7XG4gIGlmICghQXJyYXlQcm90b3R5cGVJbmNsdWRlcyhvbmVPZiwgdmFsdWUpKSB7XG4gICAgY29uc3QgYWxsb3dlZCA9IEFycmF5UHJvdG90eXBlSm9pbihcbiAgICAgIEFycmF5UHJvdG90eXBlTWFwKG9uZU9mLCAodikgPT4gKHR5cGVvZiB2ID09PSAnc3RyaW5nJyA/IGAnJHt2fSdgIDogU3RyaW5nKHYpKSksXG4gICAgICAnLCAnXG4gICAgKVxuICAgIGNvbnN0IHJlYXNvbiA9ICdtdXN0IGJlIG9uZSBvZjogJyArIGFsbG93ZWRcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1ZBTFVFKG5hbWUsIHZhbHVlLCByZWFzb24pXG4gIH1cbn0pXG5cbi8qKlxuICogQGNhbGxiYWNrIHZhbGlkYXRlQm9vbGVhblxuICogQHBhcmFtIHsqfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEByZXR1cm5zIHthc3NlcnRzIHZhbHVlIGlzIGJvb2xlYW59XG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZUJvb2xlYW59ICovXG5mdW5jdGlvbiB2YWxpZGF0ZUJvb2xlYW4odmFsdWUsIG5hbWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ2Jvb2xlYW4nLCB2YWx1ZSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gb3B0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICogQHBhcmFtIHtib29sZWFufSBkZWZhdWx0VmFsdWVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVZhbHVlT3JEZWZhdWx0KG9wdGlvbnMsIGtleSwgZGVmYXVsdFZhbHVlKSB7XG4gIHJldHVybiBvcHRpb25zID09IG51bGwgfHwgIU9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5KG9wdGlvbnMsIGtleSkgPyBkZWZhdWx0VmFsdWUgOiBvcHRpb25zW2tleV1cbn1cblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVPYmplY3RcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge3tcbiAqICAgYWxsb3dBcnJheT86IGJvb2xlYW4sXG4gKiAgIGFsbG93RnVuY3Rpb24/OiBib29sZWFuLFxuICogICBudWxsYWJsZT86IGJvb2xlYW5cbiAqIH19IFtvcHRpb25zXVxuICovXG5cbi8qKiBAdHlwZSB7dmFsaWRhdGVPYmplY3R9ICovXG5jb25zdCB2YWxpZGF0ZU9iamVjdCA9IGhpZGVTdGFja0ZyYW1lcygodmFsdWUsIG5hbWUsIG9wdGlvbnMgPSBudWxsKSA9PiB7XG4gIGNvbnN0IGFsbG93QXJyYXkgPSBnZXRPd25Qcm9wZXJ0eVZhbHVlT3JEZWZhdWx0KG9wdGlvbnMsICdhbGxvd0FycmF5JywgZmFsc2UpXG4gIGNvbnN0IGFsbG93RnVuY3Rpb24gPSBnZXRPd25Qcm9wZXJ0eVZhbHVlT3JEZWZhdWx0KG9wdGlvbnMsICdhbGxvd0Z1bmN0aW9uJywgZmFsc2UpXG4gIGNvbnN0IG51bGxhYmxlID0gZ2V0T3duUHJvcGVydHlWYWx1ZU9yRGVmYXVsdChvcHRpb25zLCAnbnVsbGFibGUnLCBmYWxzZSlcbiAgaWYgKFxuICAgICghbnVsbGFibGUgJiYgdmFsdWUgPT09IG51bGwpIHx8XG4gICAgKCFhbGxvd0FycmF5ICYmIEFycmF5SXNBcnJheSh2YWx1ZSkpIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgJiYgKCFhbGxvd0Z1bmN0aW9uIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykpXG4gICkge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRShuYW1lLCAnT2JqZWN0JywgdmFsdWUpXG4gIH1cbn0pXG5cbi8qKlxuICogQGNhbGxiYWNrIHZhbGlkYXRlRGljdGlvbmFyeSAtIFdlIGFyZSB1c2luZyB0aGUgV2ViIElETCBTdGFuZGFyZCBkZWZpbml0aW9uXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgXCJkaWN0aW9uYXJ5XCIgaGVyZSwgd2hpY2ggbWVhbnMgYW55IHZhbHVlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hvc2UgVHlwZSBpcyBlaXRoZXIgVW5kZWZpbmVkLCBOdWxsLCBvclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCAod2hpY2ggaW5jbHVkZXMgZnVuY3Rpb25zKS5cbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAc2VlIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jZXMtZGljdGlvbmFyeVxuICogQHNlZSBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jdGFibGUtdHlwZW9mLW9wZXJhdG9yLXJlc3VsdHNcbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlRGljdGlvbmFyeX0gKi9cbmNvbnN0IHZhbGlkYXRlRGljdGlvbmFyeSA9IGhpZGVTdGFja0ZyYW1lcygodmFsdWUsIG5hbWUpID0+IHtcbiAgaWYgKHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ2EgZGljdGlvbmFyeScsIHZhbHVlKVxuICB9XG59KVxuXG4vKipcbiAqIEBjYWxsYmFjayB2YWxpZGF0ZUFycmF5XG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtudW1iZXJ9IFttaW5MZW5ndGhdXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyB2YWx1ZSBpcyBhbnlbXX1cbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlQXJyYXl9ICovXG5jb25zdCB2YWxpZGF0ZUFycmF5ID0gaGlkZVN0YWNrRnJhbWVzKCh2YWx1ZSwgbmFtZSwgbWluTGVuZ3RoID0gMCkgPT4ge1xuICBpZiAoIUFycmF5SXNBcnJheSh2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ0FycmF5JywgdmFsdWUpXG4gIH1cbiAgaWYgKHZhbHVlLmxlbmd0aCA8IG1pbkxlbmd0aCkge1xuICAgIGNvbnN0IHJlYXNvbiA9IGBtdXN0IGJlIGxvbmdlciB0aGFuICR7bWluTGVuZ3RofWBcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1ZBTFVFKG5hbWUsIHZhbHVlLCByZWFzb24pXG4gIH1cbn0pXG5cbi8qKlxuICogQGNhbGxiYWNrIHZhbGlkYXRlU3RyaW5nQXJyYXlcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyB2YWx1ZSBpcyBzdHJpbmdbXX1cbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlU3RyaW5nQXJyYXl9ICovXG5mdW5jdGlvbiB2YWxpZGF0ZVN0cmluZ0FycmF5KHZhbHVlLCBuYW1lKSB7XG4gIHZhbGlkYXRlQXJyYXkodmFsdWUsIG5hbWUpXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICB2YWxpZGF0ZVN0cmluZyh2YWx1ZVtpXSwgYCR7bmFtZX1bJHtpfV1gKVxuICB9XG59XG5cbi8qKlxuICogQGNhbGxiYWNrIHZhbGlkYXRlQm9vbGVhbkFycmF5XG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMge2Fzc2VydHMgdmFsdWUgaXMgYm9vbGVhbltdfVxuICovXG5cbi8qKiBAdHlwZSB7dmFsaWRhdGVCb29sZWFuQXJyYXl9ICovXG5mdW5jdGlvbiB2YWxpZGF0ZUJvb2xlYW5BcnJheSh2YWx1ZSwgbmFtZSkge1xuICB2YWxpZGF0ZUFycmF5KHZhbHVlLCBuYW1lKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFsaWRhdGVCb29sZWFuKHZhbHVlW2ldLCBgJHtuYW1lfVske2l9XWApXG4gIH1cbn1cblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVBYm9ydFNpZ25hbEFycmF5XG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMge2Fzc2VydHMgdmFsdWUgaXMgQWJvcnRTaWduYWxbXX1cbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlQWJvcnRTaWduYWxBcnJheX0gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQWJvcnRTaWduYWxBcnJheSh2YWx1ZSwgbmFtZSkge1xuICB2YWxpZGF0ZUFycmF5KHZhbHVlLCBuYW1lKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qgc2lnbmFsID0gdmFsdWVbaV1cbiAgICBjb25zdCBpbmRleGVkTmFtZSA9IGAke25hbWV9WyR7aX1dYFxuICAgIGlmIChzaWduYWwgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKGluZGV4ZWROYW1lLCAnQWJvcnRTaWduYWwnLCBzaWduYWwpXG4gICAgfVxuICAgIHZhbGlkYXRlQWJvcnRTaWduYWwoc2lnbmFsLCBpbmRleGVkTmFtZSlcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Kn0gc2lnbmFsXG4gKiBAcGFyYW0ge3N0cmluZ30gW25hbWU9J3NpZ25hbCddXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyBzaWduYWwgaXMga2V5b2Ygc2lnbmFsc31cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVTaWduYWxOYW1lKHNpZ25hbCwgbmFtZSA9ICdzaWduYWwnKSB7XG4gIHZhbGlkYXRlU3RyaW5nKHNpZ25hbCwgbmFtZSlcbiAgaWYgKHNpZ25hbHNbc2lnbmFsXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHNpZ25hbHNbU3RyaW5nUHJvdG90eXBlVG9VcHBlckNhc2Uoc2lnbmFsKV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVSUl9VTktOT1dOX1NJR05BTChzaWduYWwgKyAnIChzaWduYWxzIG11c3QgdXNlIGFsbCBjYXBpdGFsIGxldHRlcnMpJylcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVSUl9VTktOT1dOX1NJR05BTChzaWduYWwpXG4gIH1cbn1cblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVCdWZmZXJcbiAqIEBwYXJhbSB7Kn0gYnVmZmVyXG4gKiBAcGFyYW0ge3N0cmluZ30gW25hbWU9J2J1ZmZlciddXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyBidWZmZXIgaXMgQXJyYXlCdWZmZXJWaWV3fVxuICovXG5cbi8qKiBAdHlwZSB7dmFsaWRhdGVCdWZmZXJ9ICovXG5jb25zdCB2YWxpZGF0ZUJ1ZmZlciA9IGhpZGVTdGFja0ZyYW1lcygoYnVmZmVyLCBuYW1lID0gJ2J1ZmZlcicpID0+IHtcbiAgaWYgKCFpc0FycmF5QnVmZmVyVmlldyhidWZmZXIpKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKG5hbWUsIFsnQnVmZmVyJywgJ1R5cGVkQXJyYXknLCAnRGF0YVZpZXcnXSwgYnVmZmVyKVxuICB9XG59KVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhXG4gKiBAcGFyYW0ge3N0cmluZ30gZW5jb2RpbmdcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVFbmNvZGluZyhkYXRhLCBlbmNvZGluZykge1xuICBjb25zdCBub3JtYWxpemVkRW5jb2RpbmcgPSBub3JtYWxpemVFbmNvZGluZyhlbmNvZGluZylcbiAgY29uc3QgbGVuZ3RoID0gZGF0YS5sZW5ndGhcbiAgaWYgKG5vcm1hbGl6ZWRFbmNvZGluZyA9PT0gJ2hleCcgJiYgbGVuZ3RoICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVkFMVUUoJ2VuY29kaW5nJywgZW5jb2RpbmcsIGBpcyBpbnZhbGlkIGZvciBkYXRhIG9mIGxlbmd0aCAke2xlbmd0aH1gKVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgdGhhdCB0aGUgcG9ydCBudW1iZXIgaXMgbm90IE5hTiB3aGVuIGNvZXJjZWQgdG8gYSBudW1iZXIsXG4gKiBpcyBhbiBpbnRlZ2VyIGFuZCB0aGF0IGl0IGZhbGxzIHdpdGhpbiB0aGUgbGVnYWwgcmFuZ2Ugb2YgcG9ydCBudW1iZXJzLlxuICogQHBhcmFtIHsqfSBwb3J0XG4gKiBAcGFyYW0ge3N0cmluZ30gW25hbWU9J1BvcnQnXVxuICogQHBhcmFtIHtib29sZWFufSBbYWxsb3daZXJvPXRydWVdXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVBvcnQocG9ydCwgbmFtZSA9ICdQb3J0JywgYWxsb3daZXJvID0gdHJ1ZSkge1xuICBpZiAoXG4gICAgKHR5cGVvZiBwb3J0ICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgcG9ydCAhPT0gJ3N0cmluZycpIHx8XG4gICAgKHR5cGVvZiBwb3J0ID09PSAnc3RyaW5nJyAmJiBTdHJpbmdQcm90b3R5cGVUcmltKHBvcnQpLmxlbmd0aCA9PT0gMCkgfHxcbiAgICArcG9ydCAhPT0gK3BvcnQgPj4+IDAgfHxcbiAgICBwb3J0ID4gMHhmZmZmIHx8XG4gICAgKHBvcnQgPT09IDAgJiYgIWFsbG93WmVybylcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9TT0NLRVRfQkFEX1BPUlQobmFtZSwgcG9ydCwgYWxsb3daZXJvKVxuICB9XG4gIHJldHVybiBwb3J0IHwgMFxufVxuXG4vKipcbiAqIEBjYWxsYmFjayB2YWxpZGF0ZUFib3J0U2lnbmFsXG4gKiBAcGFyYW0geyp9IHNpZ25hbFxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlQWJvcnRTaWduYWx9ICovXG5jb25zdCB2YWxpZGF0ZUFib3J0U2lnbmFsID0gaGlkZVN0YWNrRnJhbWVzKChzaWduYWwsIG5hbWUpID0+IHtcbiAgaWYgKHNpZ25hbCAhPT0gdW5kZWZpbmVkICYmIChzaWduYWwgPT09IG51bGwgfHwgdHlwZW9mIHNpZ25hbCAhPT0gJ29iamVjdCcgfHwgISgnYWJvcnRlZCcgaW4gc2lnbmFsKSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ0Fib3J0U2lnbmFsJywgc2lnbmFsKVxuICB9XG59KVxuXG4vKipcbiAqIEBjYWxsYmFjayB2YWxpZGF0ZUZ1bmN0aW9uXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMge2Fzc2VydHMgdmFsdWUgaXMgRnVuY3Rpb259XG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZUZ1bmN0aW9ufSAqL1xuY29uc3QgdmFsaWRhdGVGdW5jdGlvbiA9IGhpZGVTdGFja0ZyYW1lcygodmFsdWUsIG5hbWUpID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKG5hbWUsICdGdW5jdGlvbicsIHZhbHVlKVxufSlcblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVQbGFpbkZ1bmN0aW9uXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMge2Fzc2VydHMgdmFsdWUgaXMgRnVuY3Rpb259XG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZVBsYWluRnVuY3Rpb259ICovXG5jb25zdCB2YWxpZGF0ZVBsYWluRnVuY3Rpb24gPSBoaWRlU3RhY2tGcmFtZXMoKHZhbHVlLCBuYW1lKSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicgfHwgaXNBc3luY0Z1bmN0aW9uKHZhbHVlKSkgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKG5hbWUsICdGdW5jdGlvbicsIHZhbHVlKVxufSlcblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVVbmRlZmluZWRcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyB2YWx1ZSBpcyB1bmRlZmluZWR9XG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZVVuZGVmaW5lZH0gKi9cbmNvbnN0IHZhbGlkYXRlVW5kZWZpbmVkID0gaGlkZVN0YWNrRnJhbWVzKCh2YWx1ZSwgbmFtZSkgPT4ge1xuICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKG5hbWUsICd1bmRlZmluZWQnLCB2YWx1ZSlcbn0pXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7VH0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge1RbXX0gdW5pb25cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVVbmlvbih2YWx1ZSwgbmFtZSwgdW5pb24pIHtcbiAgaWYgKCFBcnJheVByb3RvdHlwZUluY2x1ZGVzKHVuaW9uLCB2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgYCgnJHtBcnJheVByb3RvdHlwZUpvaW4odW5pb24sICd8Jyl9JylgLCB2YWx1ZSlcbiAgfVxufVxuXG4vKlxuICBUaGUgcnVsZXMgZm9yIHRoZSBMaW5rIGhlYWRlciBmaWVsZCBhcmUgZGVzY3JpYmVkIGhlcmU6XG4gIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM4Mjg4Lmh0bWwjc2VjdGlvbi0zXG5cbiAgVGhpcyByZWdleCB2YWxpZGF0ZXMgYW55IHN0cmluZyBzdXJyb3VuZGVkIGJ5IGFuZ2xlIGJyYWNrZXRzXG4gIChub3QgbmVjZXNzYXJpbHkgYSB2YWxpZCBVUkkgcmVmZXJlbmNlKSBmb2xsb3dlZCBieSB6ZXJvIG9yIG1vcmVcbiAgbGluay1wYXJhbXMgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMuXG4qL1xuY29uc3QgbGlua1ZhbHVlUmVnRXhwID0gL14oPzo8W14+XSo+KSg/Olxccyo7XFxzKlteO1wiXFxzXSsoPzo9KFwiKT9bXjtcIlxcc10qXFwxKT8pKiQvXG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUxpbmtIZWFkZXJGb3JtYXQodmFsdWUsIG5hbWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgIVJlZ0V4cFByb3RvdHlwZUV4ZWMobGlua1ZhbHVlUmVnRXhwLCB2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1ZBTFVFKFxuICAgICAgbmFtZSxcbiAgICAgIHZhbHVlLFxuICAgICAgJ211c3QgYmUgYW4gYXJyYXkgb3Igc3RyaW5nIG9mIGZvcm1hdCBcIjwvc3R5bGVzLmNzcz47IHJlbD1wcmVsb2FkOyBhcz1zdHlsZVwiJ1xuICAgIClcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSBoaW50c1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUxpbmtIZWFkZXJWYWx1ZShoaW50cykge1xuICBpZiAodHlwZW9mIGhpbnRzID09PSAnc3RyaW5nJykge1xuICAgIHZhbGlkYXRlTGlua0hlYWRlckZvcm1hdChoaW50cywgJ2hpbnRzJylcbiAgICByZXR1cm4gaGludHNcbiAgfSBlbHNlIGlmIChBcnJheUlzQXJyYXkoaGludHMpKSB7XG4gICAgY29uc3QgaGludHNMZW5ndGggPSBoaW50cy5sZW5ndGhcbiAgICBsZXQgcmVzdWx0ID0gJydcbiAgICBpZiAoaGludHNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoaW50c0xlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBsaW5rID0gaGludHNbaV1cbiAgICAgIHZhbGlkYXRlTGlua0hlYWRlckZvcm1hdChsaW5rLCAnaGludHMnKVxuICAgICAgcmVzdWx0ICs9IGxpbmtcbiAgICAgIGlmIChpICE9PSBoaW50c0xlbmd0aCAtIDEpIHtcbiAgICAgICAgcmVzdWx0ICs9ICcsICdcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG4gIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVkFMVUUoXG4gICAgJ2hpbnRzJyxcbiAgICBoaW50cyxcbiAgICAnbXVzdCBiZSBhbiBhcnJheSBvciBzdHJpbmcgb2YgZm9ybWF0IFwiPC9zdHlsZXMuY3NzPjsgcmVsPXByZWxvYWQ7IGFzPXN0eWxlXCInXG4gIClcbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0ludDMyLFxuICBpc1VpbnQzMixcbiAgcGFyc2VGaWxlTW9kZSxcbiAgdmFsaWRhdGVBcnJheSxcbiAgdmFsaWRhdGVTdHJpbmdBcnJheSxcbiAgdmFsaWRhdGVCb29sZWFuQXJyYXksXG4gIHZhbGlkYXRlQWJvcnRTaWduYWxBcnJheSxcbiAgdmFsaWRhdGVCb29sZWFuLFxuICB2YWxpZGF0ZUJ1ZmZlcixcbiAgdmFsaWRhdGVEaWN0aW9uYXJ5LFxuICB2YWxpZGF0ZUVuY29kaW5nLFxuICB2YWxpZGF0ZUZ1bmN0aW9uLFxuICB2YWxpZGF0ZUludDMyLFxuICB2YWxpZGF0ZUludGVnZXIsXG4gIHZhbGlkYXRlTnVtYmVyLFxuICB2YWxpZGF0ZU9iamVjdCxcbiAgdmFsaWRhdGVPbmVPZixcbiAgdmFsaWRhdGVQbGFpbkZ1bmN0aW9uLFxuICB2YWxpZGF0ZVBvcnQsXG4gIHZhbGlkYXRlU2lnbmFsTmFtZSxcbiAgdmFsaWRhdGVTdHJpbmcsXG4gIHZhbGlkYXRlVWludDMyLFxuICB2YWxpZGF0ZVVuZGVmaW5lZCxcbiAgdmFsaWRhdGVVbmlvbixcbiAgdmFsaWRhdGVBYm9ydFNpZ25hbCxcbiAgdmFsaWRhdGVMaW5rSGVhZGVyVmFsdWVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IFN5bWJvbEFzeW5jSXRlcmF0b3IsIFN5bWJvbEl0ZXJhdG9yLCBTeW1ib2xGb3IgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvcHJpbW9yZGlhbHMnKVxuXG4vLyBXZSBuZWVkIHRvIHVzZSBTeW1ib2xGb3IgdG8gbWFrZSB0aGVzZSBnbG9iYWxseSBhdmFpbGFibGVcbi8vIGZvciBpbnRlcm9wdCB3aXRoIHJlYWRhYmxlLXN0cmVhbSwgaS5lLiByZWFkYWJsZS1zdHJlYW1cbi8vIGFuZCBub2RlIGNvcmUgbmVlZHMgdG8gYmUgYWJsZSB0byByZWFkL3dyaXRlIHByaXZhdGUgc3RhdGVcbi8vIGZyb20gZWFjaCBvdGhlciBmb3IgcHJvcGVyIGludGVyb3BlcmFiaWxpdHkuXG5jb25zdCBrSXNEZXN0cm95ZWQgPSBTeW1ib2xGb3IoJ25vZGVqcy5zdHJlYW0uZGVzdHJveWVkJylcbmNvbnN0IGtJc0Vycm9yZWQgPSBTeW1ib2xGb3IoJ25vZGVqcy5zdHJlYW0uZXJyb3JlZCcpXG5jb25zdCBrSXNSZWFkYWJsZSA9IFN5bWJvbEZvcignbm9kZWpzLnN0cmVhbS5yZWFkYWJsZScpXG5jb25zdCBrSXNXcml0YWJsZSA9IFN5bWJvbEZvcignbm9kZWpzLnN0cmVhbS53cml0YWJsZScpXG5jb25zdCBrSXNEaXN0dXJiZWQgPSBTeW1ib2xGb3IoJ25vZGVqcy5zdHJlYW0uZGlzdHVyYmVkJylcbmNvbnN0IGtJc0Nsb3NlZFByb21pc2UgPSBTeW1ib2xGb3IoJ25vZGVqcy53ZWJzdHJlYW0uaXNDbG9zZWRQcm9taXNlJylcbmNvbnN0IGtDb250cm9sbGVyRXJyb3JGdW5jdGlvbiA9IFN5bWJvbEZvcignbm9kZWpzLndlYnN0cmVhbS5jb250cm9sbGVyRXJyb3JGdW5jdGlvbicpXG5mdW5jdGlvbiBpc1JlYWRhYmxlTm9kZVN0cmVhbShvYmosIHN0cmljdCA9IGZhbHNlKSB7XG4gIHZhciBfb2JqJF9yZWFkYWJsZVN0YXRlXG4gIHJldHVybiAhIShcbiAgICAoXG4gICAgICBvYmogJiZcbiAgICAgIHR5cGVvZiBvYmoucGlwZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdHlwZW9mIG9iai5vbiA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgKCFzdHJpY3QgfHwgKHR5cGVvZiBvYmoucGF1c2UgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5yZXN1bWUgPT09ICdmdW5jdGlvbicpKSAmJlxuICAgICAgKCFvYmouX3dyaXRhYmxlU3RhdGUgfHxcbiAgICAgICAgKChfb2JqJF9yZWFkYWJsZVN0YXRlID0gb2JqLl9yZWFkYWJsZVN0YXRlKSA9PT0gbnVsbCB8fCBfb2JqJF9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgIDogX29iaiRfcmVhZGFibGVTdGF0ZS5yZWFkYWJsZSkgIT09IGZhbHNlKSAmJlxuICAgICAgLy8gRHVwbGV4XG4gICAgICAoIW9iai5fd3JpdGFibGVTdGF0ZSB8fCBvYmouX3JlYWRhYmxlU3RhdGUpXG4gICAgKSAvLyBXcml0YWJsZSBoYXMgLnBpcGUuXG4gIClcbn1cbmZ1bmN0aW9uIGlzV3JpdGFibGVOb2RlU3RyZWFtKG9iaikge1xuICB2YXIgX29iaiRfd3JpdGFibGVTdGF0ZVxuICByZXR1cm4gISEoXG4gICAgKFxuICAgICAgb2JqICYmXG4gICAgICB0eXBlb2Ygb2JqLndyaXRlID09PSAnZnVuY3Rpb24nICYmXG4gICAgICB0eXBlb2Ygb2JqLm9uID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAoIW9iai5fcmVhZGFibGVTdGF0ZSB8fFxuICAgICAgICAoKF9vYmokX3dyaXRhYmxlU3RhdGUgPSBvYmouX3dyaXRhYmxlU3RhdGUpID09PSBudWxsIHx8IF9vYmokX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgOiBfb2JqJF93cml0YWJsZVN0YXRlLndyaXRhYmxlKSAhPT0gZmFsc2UpXG4gICAgKSAvLyBEdXBsZXhcbiAgKVxufVxuZnVuY3Rpb24gaXNEdXBsZXhOb2RlU3RyZWFtKG9iaikge1xuICByZXR1cm4gISEoXG4gICAgb2JqICYmXG4gICAgdHlwZW9mIG9iai5waXBlID09PSAnZnVuY3Rpb24nICYmXG4gICAgb2JqLl9yZWFkYWJsZVN0YXRlICYmXG4gICAgdHlwZW9mIG9iai5vbiA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBvYmoud3JpdGUgPT09ICdmdW5jdGlvbidcbiAgKVxufVxuZnVuY3Rpb24gaXNOb2RlU3RyZWFtKG9iaikge1xuICByZXR1cm4gKFxuICAgIG9iaiAmJlxuICAgIChvYmouX3JlYWRhYmxlU3RhdGUgfHxcbiAgICAgIG9iai5fd3JpdGFibGVTdGF0ZSB8fFxuICAgICAgKHR5cGVvZiBvYmoud3JpdGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5vbiA9PT0gJ2Z1bmN0aW9uJykgfHxcbiAgICAgICh0eXBlb2Ygb2JqLnBpcGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5vbiA9PT0gJ2Z1bmN0aW9uJykpXG4gIClcbn1cbmZ1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW0ob2JqKSB7XG4gIHJldHVybiAhIShcbiAgICBvYmogJiZcbiAgICAhaXNOb2RlU3RyZWFtKG9iaikgJiZcbiAgICB0eXBlb2Ygb2JqLnBpcGVUaHJvdWdoID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIG9iai5nZXRSZWFkZXIgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2Ygb2JqLmNhbmNlbCA9PT0gJ2Z1bmN0aW9uJ1xuICApXG59XG5mdW5jdGlvbiBpc1dyaXRhYmxlU3RyZWFtKG9iaikge1xuICByZXR1cm4gISEob2JqICYmICFpc05vZGVTdHJlYW0ob2JqKSAmJiB0eXBlb2Ygb2JqLmdldFdyaXRlciA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqLmFib3J0ID09PSAnZnVuY3Rpb24nKVxufVxuZnVuY3Rpb24gaXNUcmFuc2Zvcm1TdHJlYW0ob2JqKSB7XG4gIHJldHVybiAhIShvYmogJiYgIWlzTm9kZVN0cmVhbShvYmopICYmIHR5cGVvZiBvYmoucmVhZGFibGUgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmoud3JpdGFibGUgPT09ICdvYmplY3QnKVxufVxuZnVuY3Rpb24gaXNXZWJTdHJlYW0ob2JqKSB7XG4gIHJldHVybiBpc1JlYWRhYmxlU3RyZWFtKG9iaikgfHwgaXNXcml0YWJsZVN0cmVhbShvYmopIHx8IGlzVHJhbnNmb3JtU3RyZWFtKG9iailcbn1cbmZ1bmN0aW9uIGlzSXRlcmFibGUob2JqLCBpc0FzeW5jKSB7XG4gIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIGZhbHNlXG4gIGlmIChpc0FzeW5jID09PSB0cnVlKSByZXR1cm4gdHlwZW9mIG9ialtTeW1ib2xBc3luY0l0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJ1xuICBpZiAoaXNBc3luYyA9PT0gZmFsc2UpIHJldHVybiB0eXBlb2Ygb2JqW1N5bWJvbEl0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJ1xuICByZXR1cm4gdHlwZW9mIG9ialtTeW1ib2xBc3luY0l0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb2JqW1N5bWJvbEl0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJ1xufVxuZnVuY3Rpb24gaXNEZXN0cm95ZWQoc3RyZWFtKSB7XG4gIGlmICghaXNOb2RlU3RyZWFtKHN0cmVhbSkpIHJldHVybiBudWxsXG4gIGNvbnN0IHdTdGF0ZSA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZVxuICBjb25zdCByU3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGVcbiAgY29uc3Qgc3RhdGUgPSB3U3RhdGUgfHwgclN0YXRlXG4gIHJldHVybiAhIShzdHJlYW0uZGVzdHJveWVkIHx8IHN0cmVhbVtrSXNEZXN0cm95ZWRdIHx8IChzdGF0ZSAhPT0gbnVsbCAmJiBzdGF0ZSAhPT0gdW5kZWZpbmVkICYmIHN0YXRlLmRlc3Ryb3llZCkpXG59XG5cbi8vIEhhdmUgYmVlbiBlbmQoKTpkLlxuZnVuY3Rpb24gaXNXcml0YWJsZUVuZGVkKHN0cmVhbSkge1xuICBpZiAoIWlzV3JpdGFibGVOb2RlU3RyZWFtKHN0cmVhbSkpIHJldHVybiBudWxsXG4gIGlmIChzdHJlYW0ud3JpdGFibGVFbmRlZCA9PT0gdHJ1ZSkgcmV0dXJuIHRydWVcbiAgY29uc3Qgd1N0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlXG4gIGlmICh3U3RhdGUgIT09IG51bGwgJiYgd1N0YXRlICE9PSB1bmRlZmluZWQgJiYgd1N0YXRlLmVycm9yZWQpIHJldHVybiBmYWxzZVxuICBpZiAodHlwZW9mICh3U3RhdGUgPT09IG51bGwgfHwgd1N0YXRlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB3U3RhdGUuZW5kZWQpICE9PSAnYm9vbGVhbicpIHJldHVybiBudWxsXG4gIHJldHVybiB3U3RhdGUuZW5kZWRcbn1cblxuLy8gSGF2ZSBlbWl0dGVkICdmaW5pc2gnLlxuZnVuY3Rpb24gaXNXcml0YWJsZUZpbmlzaGVkKHN0cmVhbSwgc3RyaWN0KSB7XG4gIGlmICghaXNXcml0YWJsZU5vZGVTdHJlYW0oc3RyZWFtKSkgcmV0dXJuIG51bGxcbiAgaWYgKHN0cmVhbS53cml0YWJsZUZpbmlzaGVkID09PSB0cnVlKSByZXR1cm4gdHJ1ZVxuICBjb25zdCB3U3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGVcbiAgaWYgKHdTdGF0ZSAhPT0gbnVsbCAmJiB3U3RhdGUgIT09IHVuZGVmaW5lZCAmJiB3U3RhdGUuZXJyb3JlZCkgcmV0dXJuIGZhbHNlXG4gIGlmICh0eXBlb2YgKHdTdGF0ZSA9PT0gbnVsbCB8fCB3U3RhdGUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHdTdGF0ZS5maW5pc2hlZCkgIT09ICdib29sZWFuJykgcmV0dXJuIG51bGxcbiAgcmV0dXJuICEhKHdTdGF0ZS5maW5pc2hlZCB8fCAoc3RyaWN0ID09PSBmYWxzZSAmJiB3U3RhdGUuZW5kZWQgPT09IHRydWUgJiYgd1N0YXRlLmxlbmd0aCA9PT0gMCkpXG59XG5cbi8vIEhhdmUgYmVlbiBwdXNoKG51bGwpOmQuXG5mdW5jdGlvbiBpc1JlYWRhYmxlRW5kZWQoc3RyZWFtKSB7XG4gIGlmICghaXNSZWFkYWJsZU5vZGVTdHJlYW0oc3RyZWFtKSkgcmV0dXJuIG51bGxcbiAgaWYgKHN0cmVhbS5yZWFkYWJsZUVuZGVkID09PSB0cnVlKSByZXR1cm4gdHJ1ZVxuICBjb25zdCByU3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGVcbiAgaWYgKCFyU3RhdGUgfHwgclN0YXRlLmVycm9yZWQpIHJldHVybiBmYWxzZVxuICBpZiAodHlwZW9mIChyU3RhdGUgPT09IG51bGwgfHwgclN0YXRlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByU3RhdGUuZW5kZWQpICE9PSAnYm9vbGVhbicpIHJldHVybiBudWxsXG4gIHJldHVybiByU3RhdGUuZW5kZWRcbn1cblxuLy8gSGF2ZSBlbWl0dGVkICdlbmQnLlxuZnVuY3Rpb24gaXNSZWFkYWJsZUZpbmlzaGVkKHN0cmVhbSwgc3RyaWN0KSB7XG4gIGlmICghaXNSZWFkYWJsZU5vZGVTdHJlYW0oc3RyZWFtKSkgcmV0dXJuIG51bGxcbiAgY29uc3QgclN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlXG4gIGlmIChyU3RhdGUgIT09IG51bGwgJiYgclN0YXRlICE9PSB1bmRlZmluZWQgJiYgclN0YXRlLmVycm9yZWQpIHJldHVybiBmYWxzZVxuICBpZiAodHlwZW9mIChyU3RhdGUgPT09IG51bGwgfHwgclN0YXRlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByU3RhdGUuZW5kRW1pdHRlZCkgIT09ICdib29sZWFuJykgcmV0dXJuIG51bGxcbiAgcmV0dXJuICEhKHJTdGF0ZS5lbmRFbWl0dGVkIHx8IChzdHJpY3QgPT09IGZhbHNlICYmIHJTdGF0ZS5lbmRlZCA9PT0gdHJ1ZSAmJiByU3RhdGUubGVuZ3RoID09PSAwKSlcbn1cbmZ1bmN0aW9uIGlzUmVhZGFibGUoc3RyZWFtKSB7XG4gIGlmIChzdHJlYW0gJiYgc3RyZWFtW2tJc1JlYWRhYmxlXSAhPSBudWxsKSByZXR1cm4gc3RyZWFtW2tJc1JlYWRhYmxlXVxuICBpZiAodHlwZW9mIChzdHJlYW0gPT09IG51bGwgfHwgc3RyZWFtID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzdHJlYW0ucmVhZGFibGUpICE9PSAnYm9vbGVhbicpIHJldHVybiBudWxsXG4gIGlmIChpc0Rlc3Ryb3llZChzdHJlYW0pKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIGlzUmVhZGFibGVOb2RlU3RyZWFtKHN0cmVhbSkgJiYgc3RyZWFtLnJlYWRhYmxlICYmICFpc1JlYWRhYmxlRmluaXNoZWQoc3RyZWFtKVxufVxuZnVuY3Rpb24gaXNXcml0YWJsZShzdHJlYW0pIHtcbiAgaWYgKHN0cmVhbSAmJiBzdHJlYW1ba0lzV3JpdGFibGVdICE9IG51bGwpIHJldHVybiBzdHJlYW1ba0lzV3JpdGFibGVdXG4gIGlmICh0eXBlb2YgKHN0cmVhbSA9PT0gbnVsbCB8fCBzdHJlYW0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHN0cmVhbS53cml0YWJsZSkgIT09ICdib29sZWFuJykgcmV0dXJuIG51bGxcbiAgaWYgKGlzRGVzdHJveWVkKHN0cmVhbSkpIHJldHVybiBmYWxzZVxuICByZXR1cm4gaXNXcml0YWJsZU5vZGVTdHJlYW0oc3RyZWFtKSAmJiBzdHJlYW0ud3JpdGFibGUgJiYgIWlzV3JpdGFibGVFbmRlZChzdHJlYW0pXG59XG5mdW5jdGlvbiBpc0ZpbmlzaGVkKHN0cmVhbSwgb3B0cykge1xuICBpZiAoIWlzTm9kZVN0cmVhbShzdHJlYW0pKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBpZiAoaXNEZXN0cm95ZWQoc3RyZWFtKSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYgKChvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdHMucmVhZGFibGUpICE9PSBmYWxzZSAmJiBpc1JlYWRhYmxlKHN0cmVhbSkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBpZiAoKG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogb3B0cy53cml0YWJsZSkgIT09IGZhbHNlICYmIGlzV3JpdGFibGUoc3RyZWFtKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5mdW5jdGlvbiBpc1dyaXRhYmxlRXJyb3JlZChzdHJlYW0pIHtcbiAgdmFyIF9zdHJlYW0kX3dyaXRhYmxlU3RhdCwgX3N0cmVhbSRfd3JpdGFibGVTdGF0MlxuICBpZiAoIWlzTm9kZVN0cmVhbShzdHJlYW0pKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBpZiAoc3RyZWFtLndyaXRhYmxlRXJyb3JlZCkge1xuICAgIHJldHVybiBzdHJlYW0ud3JpdGFibGVFcnJvcmVkXG4gIH1cbiAgcmV0dXJuIChfc3RyZWFtJF93cml0YWJsZVN0YXQgPVxuICAgIChfc3RyZWFtJF93cml0YWJsZVN0YXQyID0gc3RyZWFtLl93cml0YWJsZVN0YXRlKSA9PT0gbnVsbCB8fCBfc3RyZWFtJF93cml0YWJsZVN0YXQyID09PSB1bmRlZmluZWRcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IF9zdHJlYW0kX3dyaXRhYmxlU3RhdDIuZXJyb3JlZCkgIT09IG51bGwgJiYgX3N0cmVhbSRfd3JpdGFibGVTdGF0ICE9PSB1bmRlZmluZWRcbiAgICA/IF9zdHJlYW0kX3dyaXRhYmxlU3RhdFxuICAgIDogbnVsbFxufVxuZnVuY3Rpb24gaXNSZWFkYWJsZUVycm9yZWQoc3RyZWFtKSB7XG4gIHZhciBfc3RyZWFtJF9yZWFkYWJsZVN0YXQsIF9zdHJlYW0kX3JlYWRhYmxlU3RhdDJcbiAgaWYgKCFpc05vZGVTdHJlYW0oc3RyZWFtKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgaWYgKHN0cmVhbS5yZWFkYWJsZUVycm9yZWQpIHtcbiAgICByZXR1cm4gc3RyZWFtLnJlYWRhYmxlRXJyb3JlZFxuICB9XG4gIHJldHVybiAoX3N0cmVhbSRfcmVhZGFibGVTdGF0ID1cbiAgICAoX3N0cmVhbSRfcmVhZGFibGVTdGF0MiA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZSkgPT09IG51bGwgfHwgX3N0cmVhbSRfcmVhZGFibGVTdGF0MiA9PT0gdW5kZWZpbmVkXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiBfc3RyZWFtJF9yZWFkYWJsZVN0YXQyLmVycm9yZWQpICE9PSBudWxsICYmIF9zdHJlYW0kX3JlYWRhYmxlU3RhdCAhPT0gdW5kZWZpbmVkXG4gICAgPyBfc3RyZWFtJF9yZWFkYWJsZVN0YXRcbiAgICA6IG51bGxcbn1cbmZ1bmN0aW9uIGlzQ2xvc2VkKHN0cmVhbSkge1xuICBpZiAoIWlzTm9kZVN0cmVhbShzdHJlYW0pKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBpZiAodHlwZW9mIHN0cmVhbS5jbG9zZWQgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBzdHJlYW0uY2xvc2VkXG4gIH1cbiAgY29uc3Qgd1N0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlXG4gIGNvbnN0IHJTdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICBpZiAoXG4gICAgdHlwZW9mICh3U3RhdGUgPT09IG51bGwgfHwgd1N0YXRlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB3U3RhdGUuY2xvc2VkKSA9PT0gJ2Jvb2xlYW4nIHx8XG4gICAgdHlwZW9mIChyU3RhdGUgPT09IG51bGwgfHwgclN0YXRlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByU3RhdGUuY2xvc2VkKSA9PT0gJ2Jvb2xlYW4nXG4gICkge1xuICAgIHJldHVybiAoXG4gICAgICAod1N0YXRlID09PSBudWxsIHx8IHdTdGF0ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogd1N0YXRlLmNsb3NlZCkgfHxcbiAgICAgIChyU3RhdGUgPT09IG51bGwgfHwgclN0YXRlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByU3RhdGUuY2xvc2VkKVxuICAgIClcbiAgfVxuICBpZiAodHlwZW9mIHN0cmVhbS5fY2xvc2VkID09PSAnYm9vbGVhbicgJiYgaXNPdXRnb2luZ01lc3NhZ2Uoc3RyZWFtKSkge1xuICAgIHJldHVybiBzdHJlYW0uX2Nsb3NlZFxuICB9XG4gIHJldHVybiBudWxsXG59XG5mdW5jdGlvbiBpc091dGdvaW5nTWVzc2FnZShzdHJlYW0pIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2Ygc3RyZWFtLl9jbG9zZWQgPT09ICdib29sZWFuJyAmJlxuICAgIHR5cGVvZiBzdHJlYW0uX2RlZmF1bHRLZWVwQWxpdmUgPT09ICdib29sZWFuJyAmJlxuICAgIHR5cGVvZiBzdHJlYW0uX3JlbW92ZWRDb25uZWN0aW9uID09PSAnYm9vbGVhbicgJiZcbiAgICB0eXBlb2Ygc3RyZWFtLl9yZW1vdmVkQ29udExlbiA9PT0gJ2Jvb2xlYW4nXG4gIClcbn1cbmZ1bmN0aW9uIGlzU2VydmVyUmVzcG9uc2Uoc3RyZWFtKSB7XG4gIHJldHVybiB0eXBlb2Ygc3RyZWFtLl9zZW50MTAwID09PSAnYm9vbGVhbicgJiYgaXNPdXRnb2luZ01lc3NhZ2Uoc3RyZWFtKVxufVxuZnVuY3Rpb24gaXNTZXJ2ZXJSZXF1ZXN0KHN0cmVhbSkge1xuICB2YXIgX3N0cmVhbSRyZXFcbiAgcmV0dXJuIChcbiAgICB0eXBlb2Ygc3RyZWFtLl9jb25zdW1pbmcgPT09ICdib29sZWFuJyAmJlxuICAgIHR5cGVvZiBzdHJlYW0uX2R1bXBlZCA9PT0gJ2Jvb2xlYW4nICYmXG4gICAgKChfc3RyZWFtJHJlcSA9IHN0cmVhbS5yZXEpID09PSBudWxsIHx8IF9zdHJlYW0kcmVxID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBfc3RyZWFtJHJlcS51cGdyYWRlT3JDb25uZWN0KSA9PT1cbiAgICAgIHVuZGVmaW5lZFxuICApXG59XG5mdW5jdGlvbiB3aWxsRW1pdENsb3NlKHN0cmVhbSkge1xuICBpZiAoIWlzTm9kZVN0cmVhbShzdHJlYW0pKSByZXR1cm4gbnVsbFxuICBjb25zdCB3U3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGVcbiAgY29uc3QgclN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlXG4gIGNvbnN0IHN0YXRlID0gd1N0YXRlIHx8IHJTdGF0ZVxuICByZXR1cm4gKFxuICAgICghc3RhdGUgJiYgaXNTZXJ2ZXJSZXNwb25zZShzdHJlYW0pKSB8fCAhIShzdGF0ZSAmJiBzdGF0ZS5hdXRvRGVzdHJveSAmJiBzdGF0ZS5lbWl0Q2xvc2UgJiYgc3RhdGUuY2xvc2VkID09PSBmYWxzZSlcbiAgKVxufVxuZnVuY3Rpb24gaXNEaXN0dXJiZWQoc3RyZWFtKSB7XG4gIHZhciBfc3RyZWFtJGtJc0Rpc3R1cmJlZFxuICByZXR1cm4gISEoXG4gICAgc3RyZWFtICYmXG4gICAgKChfc3RyZWFtJGtJc0Rpc3R1cmJlZCA9IHN0cmVhbVtrSXNEaXN0dXJiZWRdKSAhPT0gbnVsbCAmJiBfc3RyZWFtJGtJc0Rpc3R1cmJlZCAhPT0gdW5kZWZpbmVkXG4gICAgICA/IF9zdHJlYW0ka0lzRGlzdHVyYmVkXG4gICAgICA6IHN0cmVhbS5yZWFkYWJsZURpZFJlYWQgfHwgc3RyZWFtLnJlYWRhYmxlQWJvcnRlZClcbiAgKVxufVxuZnVuY3Rpb24gaXNFcnJvcmVkKHN0cmVhbSkge1xuICB2YXIgX3JlZixcbiAgICBfcmVmMixcbiAgICBfcmVmMyxcbiAgICBfcmVmNCxcbiAgICBfcmVmNSxcbiAgICBfc3RyZWFtJGtJc0Vycm9yZWQsXG4gICAgX3N0cmVhbSRfcmVhZGFibGVTdGF0MyxcbiAgICBfc3RyZWFtJF93cml0YWJsZVN0YXQzLFxuICAgIF9zdHJlYW0kX3JlYWRhYmxlU3RhdDQsXG4gICAgX3N0cmVhbSRfd3JpdGFibGVTdGF0NFxuICByZXR1cm4gISEoXG4gICAgc3RyZWFtICYmXG4gICAgKChfcmVmID1cbiAgICAgIChfcmVmMiA9XG4gICAgICAgIChfcmVmMyA9XG4gICAgICAgICAgKF9yZWY0ID1cbiAgICAgICAgICAgIChfcmVmNSA9XG4gICAgICAgICAgICAgIChfc3RyZWFtJGtJc0Vycm9yZWQgPSBzdHJlYW1ba0lzRXJyb3JlZF0pICE9PSBudWxsICYmIF9zdHJlYW0ka0lzRXJyb3JlZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBfc3RyZWFtJGtJc0Vycm9yZWRcbiAgICAgICAgICAgICAgICA6IHN0cmVhbS5yZWFkYWJsZUVycm9yZWQpICE9PSBudWxsICYmIF9yZWY1ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyBfcmVmNVxuICAgICAgICAgICAgICA6IHN0cmVhbS53cml0YWJsZUVycm9yZWQpICE9PSBudWxsICYmIF9yZWY0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gX3JlZjRcbiAgICAgICAgICAgIDogKF9zdHJlYW0kX3JlYWRhYmxlU3RhdDMgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGUpID09PSBudWxsIHx8IF9zdHJlYW0kX3JlYWRhYmxlU3RhdDMgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogX3N0cmVhbSRfcmVhZGFibGVTdGF0My5lcnJvckVtaXR0ZWQpICE9PSBudWxsICYmIF9yZWYzICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IF9yZWYzXG4gICAgICAgICAgOiAoX3N0cmVhbSRfd3JpdGFibGVTdGF0MyA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZSkgPT09IG51bGwgfHwgX3N0cmVhbSRfd3JpdGFibGVTdGF0MyA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IF9zdHJlYW0kX3dyaXRhYmxlU3RhdDMuZXJyb3JFbWl0dGVkKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gX3JlZjJcbiAgICAgICAgOiAoX3N0cmVhbSRfcmVhZGFibGVTdGF0NCA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZSkgPT09IG51bGwgfHwgX3N0cmVhbSRfcmVhZGFibGVTdGF0NCA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogX3N0cmVhbSRfcmVhZGFibGVTdGF0NC5lcnJvcmVkKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB1bmRlZmluZWRcbiAgICAgID8gX3JlZlxuICAgICAgOiAoX3N0cmVhbSRfd3JpdGFibGVTdGF0NCA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZSkgPT09IG51bGwgfHwgX3N0cmVhbSRfd3JpdGFibGVTdGF0NCA9PT0gdW5kZWZpbmVkXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiBfc3RyZWFtJF93cml0YWJsZVN0YXQ0LmVycm9yZWQpXG4gIClcbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0Rlc3Ryb3llZCxcbiAga0lzRGVzdHJveWVkLFxuICBpc0Rpc3R1cmJlZCxcbiAga0lzRGlzdHVyYmVkLFxuICBpc0Vycm9yZWQsXG4gIGtJc0Vycm9yZWQsXG4gIGlzUmVhZGFibGUsXG4gIGtJc1JlYWRhYmxlLFxuICBrSXNDbG9zZWRQcm9taXNlLFxuICBrQ29udHJvbGxlckVycm9yRnVuY3Rpb24sXG4gIGtJc1dyaXRhYmxlLFxuICBpc0Nsb3NlZCxcbiAgaXNEdXBsZXhOb2RlU3RyZWFtLFxuICBpc0ZpbmlzaGVkLFxuICBpc0l0ZXJhYmxlLFxuICBpc1JlYWRhYmxlTm9kZVN0cmVhbSxcbiAgaXNSZWFkYWJsZVN0cmVhbSxcbiAgaXNSZWFkYWJsZUVuZGVkLFxuICBpc1JlYWRhYmxlRmluaXNoZWQsXG4gIGlzUmVhZGFibGVFcnJvcmVkLFxuICBpc05vZGVTdHJlYW0sXG4gIGlzV2ViU3RyZWFtLFxuICBpc1dyaXRhYmxlLFxuICBpc1dyaXRhYmxlTm9kZVN0cmVhbSxcbiAgaXNXcml0YWJsZVN0cmVhbSxcbiAgaXNXcml0YWJsZUVuZGVkLFxuICBpc1dyaXRhYmxlRmluaXNoZWQsXG4gIGlzV3JpdGFibGVFcnJvcmVkLFxuICBpc1NlcnZlclJlcXVlc3QsXG4gIGlzU2VydmVyUmVzcG9uc2UsXG4gIHdpbGxFbWl0Q2xvc2UsXG4gIGlzVHJhbnNmb3JtU3RyZWFtXG59XG4iLCIvLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL2VuZC1vZi1zdHJlYW0gd2l0aFxuLy8gcGVybWlzc2lvbiBmcm9tIHRoZSBhdXRob3IsIE1hdGhpYXMgQnV1cyAoQG1hZmludG9zaCkuXG5cbid1c2Ugc3RyaWN0J1xuXG4vKiByZXBsYWNlbWVudCBzdGFydCAqL1xuXG5jb25zdCBwcm9jZXNzID0gcmVxdWlyZSgncHJvY2Vzcy8nKVxuXG4vKiByZXBsYWNlbWVudCBlbmQgKi9cblxuY29uc3QgeyBBYm9ydEVycm9yLCBjb2RlcyB9ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9lcnJvcnMnKVxuY29uc3QgeyBFUlJfSU5WQUxJRF9BUkdfVFlQRSwgRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UgfSA9IGNvZGVzXG5jb25zdCB7IGtFbXB0eU9iamVjdCwgb25jZSB9ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy91dGlsJylcbmNvbnN0IHsgdmFsaWRhdGVBYm9ydFNpZ25hbCwgdmFsaWRhdGVGdW5jdGlvbiwgdmFsaWRhdGVPYmplY3QsIHZhbGlkYXRlQm9vbGVhbiB9ID0gcmVxdWlyZSgnLi4vdmFsaWRhdG9ycycpXG5jb25zdCB7IFByb21pc2UsIFByb21pc2VQcm90b3R5cGVUaGVuLCBTeW1ib2xEaXNwb3NlIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL3ByaW1vcmRpYWxzJylcbmNvbnN0IHtcbiAgaXNDbG9zZWQsXG4gIGlzUmVhZGFibGUsXG4gIGlzUmVhZGFibGVOb2RlU3RyZWFtLFxuICBpc1JlYWRhYmxlU3RyZWFtLFxuICBpc1JlYWRhYmxlRmluaXNoZWQsXG4gIGlzUmVhZGFibGVFcnJvcmVkLFxuICBpc1dyaXRhYmxlLFxuICBpc1dyaXRhYmxlTm9kZVN0cmVhbSxcbiAgaXNXcml0YWJsZVN0cmVhbSxcbiAgaXNXcml0YWJsZUZpbmlzaGVkLFxuICBpc1dyaXRhYmxlRXJyb3JlZCxcbiAgaXNOb2RlU3RyZWFtLFxuICB3aWxsRW1pdENsb3NlOiBfd2lsbEVtaXRDbG9zZSxcbiAga0lzQ2xvc2VkUHJvbWlzZVxufSA9IHJlcXVpcmUoJy4vdXRpbHMnKVxubGV0IGFkZEFib3J0TGlzdGVuZXJcbmZ1bmN0aW9uIGlzUmVxdWVzdChzdHJlYW0pIHtcbiAgcmV0dXJuIHN0cmVhbS5zZXRIZWFkZXIgJiYgdHlwZW9mIHN0cmVhbS5hYm9ydCA9PT0gJ2Z1bmN0aW9uJ1xufVxuY29uc3Qgbm9wID0gKCkgPT4ge31cbmZ1bmN0aW9uIGVvcyhzdHJlYW0sIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBfb3B0aW9ucyRyZWFkYWJsZSwgX29wdGlvbnMkd3JpdGFibGVcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICBjYWxsYmFjayA9IG9wdGlvbnNcbiAgICBvcHRpb25zID0ga0VtcHR5T2JqZWN0XG4gIH0gZWxzZSBpZiAob3B0aW9ucyA9PSBudWxsKSB7XG4gICAgb3B0aW9ucyA9IGtFbXB0eU9iamVjdFxuICB9IGVsc2Uge1xuICAgIHZhbGlkYXRlT2JqZWN0KG9wdGlvbnMsICdvcHRpb25zJylcbiAgfVxuICB2YWxpZGF0ZUZ1bmN0aW9uKGNhbGxiYWNrLCAnY2FsbGJhY2snKVxuICB2YWxpZGF0ZUFib3J0U2lnbmFsKG9wdGlvbnMuc2lnbmFsLCAnb3B0aW9ucy5zaWduYWwnKVxuICBjYWxsYmFjayA9IG9uY2UoY2FsbGJhY2spXG4gIGlmIChpc1JlYWRhYmxlU3RyZWFtKHN0cmVhbSkgfHwgaXNXcml0YWJsZVN0cmVhbShzdHJlYW0pKSB7XG4gICAgcmV0dXJuIGVvc1dlYihzdHJlYW0sIG9wdGlvbnMsIGNhbGxiYWNrKVxuICB9XG4gIGlmICghaXNOb2RlU3RyZWFtKHN0cmVhbSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ3N0cmVhbScsIFsnUmVhZGFibGVTdHJlYW0nLCAnV3JpdGFibGVTdHJlYW0nLCAnU3RyZWFtJ10sIHN0cmVhbSlcbiAgfVxuICBjb25zdCByZWFkYWJsZSA9XG4gICAgKF9vcHRpb25zJHJlYWRhYmxlID0gb3B0aW9ucy5yZWFkYWJsZSkgIT09IG51bGwgJiYgX29wdGlvbnMkcmVhZGFibGUgIT09IHVuZGVmaW5lZFxuICAgICAgPyBfb3B0aW9ucyRyZWFkYWJsZVxuICAgICAgOiBpc1JlYWRhYmxlTm9kZVN0cmVhbShzdHJlYW0pXG4gIGNvbnN0IHdyaXRhYmxlID1cbiAgICAoX29wdGlvbnMkd3JpdGFibGUgPSBvcHRpb25zLndyaXRhYmxlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3cml0YWJsZSAhPT0gdW5kZWZpbmVkXG4gICAgICA/IF9vcHRpb25zJHdyaXRhYmxlXG4gICAgICA6IGlzV3JpdGFibGVOb2RlU3RyZWFtKHN0cmVhbSlcbiAgY29uc3Qgd1N0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlXG4gIGNvbnN0IHJTdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICBjb25zdCBvbmxlZ2FjeWZpbmlzaCA9ICgpID0+IHtcbiAgICBpZiAoIXN0cmVhbS53cml0YWJsZSkge1xuICAgICAgb25maW5pc2goKVxuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE8gKHJvbmFnKTogSW1wcm92ZSBzb2Z0IGRldGVjdGlvbiB0byBpbmNsdWRlIGNvcmUgbW9kdWxlcyBhbmRcbiAgLy8gY29tbW9uIGVjb3N5c3RlbSBtb2R1bGVzIHRoYXQgZG8gcHJvcGVybHkgZW1pdCAnY2xvc2UnIGJ1dCBmYWlsXG4gIC8vIHRoaXMgZ2VuZXJpYyBjaGVjay5cbiAgbGV0IHdpbGxFbWl0Q2xvc2UgPVxuICAgIF93aWxsRW1pdENsb3NlKHN0cmVhbSkgJiYgaXNSZWFkYWJsZU5vZGVTdHJlYW0oc3RyZWFtKSA9PT0gcmVhZGFibGUgJiYgaXNXcml0YWJsZU5vZGVTdHJlYW0oc3RyZWFtKSA9PT0gd3JpdGFibGVcbiAgbGV0IHdyaXRhYmxlRmluaXNoZWQgPSBpc1dyaXRhYmxlRmluaXNoZWQoc3RyZWFtLCBmYWxzZSlcbiAgY29uc3Qgb25maW5pc2ggPSAoKSA9PiB7XG4gICAgd3JpdGFibGVGaW5pc2hlZCA9IHRydWVcbiAgICAvLyBTdHJlYW0gc2hvdWxkIG5vdCBiZSBkZXN0cm95ZWQgaGVyZS4gSWYgaXQgaXMgdGhhdFxuICAgIC8vIG1lYW5zIHRoYXQgdXNlciBzcGFjZSBpcyBkb2luZyBzb21ldGhpbmcgZGlmZmVyZW50bHkgYW5kXG4gICAgLy8gd2UgY2Fubm90IHRydXN0IHdpbGxFbWl0Q2xvc2UuXG4gICAgaWYgKHN0cmVhbS5kZXN0cm95ZWQpIHtcbiAgICAgIHdpbGxFbWl0Q2xvc2UgPSBmYWxzZVxuICAgIH1cbiAgICBpZiAod2lsbEVtaXRDbG9zZSAmJiAoIXN0cmVhbS5yZWFkYWJsZSB8fCByZWFkYWJsZSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIXJlYWRhYmxlIHx8IHJlYWRhYmxlRmluaXNoZWQpIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwoc3RyZWFtKVxuICAgIH1cbiAgfVxuICBsZXQgcmVhZGFibGVGaW5pc2hlZCA9IGlzUmVhZGFibGVGaW5pc2hlZChzdHJlYW0sIGZhbHNlKVxuICBjb25zdCBvbmVuZCA9ICgpID0+IHtcbiAgICByZWFkYWJsZUZpbmlzaGVkID0gdHJ1ZVxuICAgIC8vIFN0cmVhbSBzaG91bGQgbm90IGJlIGRlc3Ryb3llZCBoZXJlLiBJZiBpdCBpcyB0aGF0XG4gICAgLy8gbWVhbnMgdGhhdCB1c2VyIHNwYWNlIGlzIGRvaW5nIHNvbWV0aGluZyBkaWZmZXJlbnRseSBhbmRcbiAgICAvLyB3ZSBjYW5ub3QgdHJ1c3Qgd2lsbEVtaXRDbG9zZS5cbiAgICBpZiAoc3RyZWFtLmRlc3Ryb3llZCkge1xuICAgICAgd2lsbEVtaXRDbG9zZSA9IGZhbHNlXG4gICAgfVxuICAgIGlmICh3aWxsRW1pdENsb3NlICYmICghc3RyZWFtLndyaXRhYmxlIHx8IHdyaXRhYmxlKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICghd3JpdGFibGUgfHwgd3JpdGFibGVGaW5pc2hlZCkge1xuICAgICAgY2FsbGJhY2suY2FsbChzdHJlYW0pXG4gICAgfVxuICB9XG4gIGNvbnN0IG9uZXJyb3IgPSAoZXJyKSA9PiB7XG4gICAgY2FsbGJhY2suY2FsbChzdHJlYW0sIGVycilcbiAgfVxuICBsZXQgY2xvc2VkID0gaXNDbG9zZWQoc3RyZWFtKVxuICBjb25zdCBvbmNsb3NlID0gKCkgPT4ge1xuICAgIGNsb3NlZCA9IHRydWVcbiAgICBjb25zdCBlcnJvcmVkID0gaXNXcml0YWJsZUVycm9yZWQoc3RyZWFtKSB8fCBpc1JlYWRhYmxlRXJyb3JlZChzdHJlYW0pXG4gICAgaWYgKGVycm9yZWQgJiYgdHlwZW9mIGVycm9yZWQgIT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrLmNhbGwoc3RyZWFtLCBlcnJvcmVkKVxuICAgIH1cbiAgICBpZiAocmVhZGFibGUgJiYgIXJlYWRhYmxlRmluaXNoZWQgJiYgaXNSZWFkYWJsZU5vZGVTdHJlYW0oc3RyZWFtLCB0cnVlKSkge1xuICAgICAgaWYgKCFpc1JlYWRhYmxlRmluaXNoZWQoc3RyZWFtLCBmYWxzZSkpIHJldHVybiBjYWxsYmFjay5jYWxsKHN0cmVhbSwgbmV3IEVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFKCkpXG4gICAgfVxuICAgIGlmICh3cml0YWJsZSAmJiAhd3JpdGFibGVGaW5pc2hlZCkge1xuICAgICAgaWYgKCFpc1dyaXRhYmxlRmluaXNoZWQoc3RyZWFtLCBmYWxzZSkpIHJldHVybiBjYWxsYmFjay5jYWxsKHN0cmVhbSwgbmV3IEVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFKCkpXG4gICAgfVxuICAgIGNhbGxiYWNrLmNhbGwoc3RyZWFtKVxuICB9XG4gIGNvbnN0IG9uY2xvc2VkID0gKCkgPT4ge1xuICAgIGNsb3NlZCA9IHRydWVcbiAgICBjb25zdCBlcnJvcmVkID0gaXNXcml0YWJsZUVycm9yZWQoc3RyZWFtKSB8fCBpc1JlYWRhYmxlRXJyb3JlZChzdHJlYW0pXG4gICAgaWYgKGVycm9yZWQgJiYgdHlwZW9mIGVycm9yZWQgIT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrLmNhbGwoc3RyZWFtLCBlcnJvcmVkKVxuICAgIH1cbiAgICBjYWxsYmFjay5jYWxsKHN0cmVhbSlcbiAgfVxuICBjb25zdCBvbnJlcXVlc3QgPSAoKSA9PiB7XG4gICAgc3RyZWFtLnJlcS5vbignZmluaXNoJywgb25maW5pc2gpXG4gIH1cbiAgaWYgKGlzUmVxdWVzdChzdHJlYW0pKSB7XG4gICAgc3RyZWFtLm9uKCdjb21wbGV0ZScsIG9uZmluaXNoKVxuICAgIGlmICghd2lsbEVtaXRDbG9zZSkge1xuICAgICAgc3RyZWFtLm9uKCdhYm9ydCcsIG9uY2xvc2UpXG4gICAgfVxuICAgIGlmIChzdHJlYW0ucmVxKSB7XG4gICAgICBvbnJlcXVlc3QoKVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHJlYW0ub24oJ3JlcXVlc3QnLCBvbnJlcXVlc3QpXG4gICAgfVxuICB9IGVsc2UgaWYgKHdyaXRhYmxlICYmICF3U3RhdGUpIHtcbiAgICAvLyBsZWdhY3kgc3RyZWFtc1xuICAgIHN0cmVhbS5vbignZW5kJywgb25sZWdhY3lmaW5pc2gpXG4gICAgc3RyZWFtLm9uKCdjbG9zZScsIG9ubGVnYWN5ZmluaXNoKVxuICB9XG5cbiAgLy8gTm90IGFsbCBzdHJlYW1zIHdpbGwgZW1pdCAnY2xvc2UnIGFmdGVyICdhYm9ydGVkJy5cbiAgaWYgKCF3aWxsRW1pdENsb3NlICYmIHR5cGVvZiBzdHJlYW0uYWJvcnRlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgc3RyZWFtLm9uKCdhYm9ydGVkJywgb25jbG9zZSlcbiAgfVxuICBzdHJlYW0ub24oJ2VuZCcsIG9uZW5kKVxuICBzdHJlYW0ub24oJ2ZpbmlzaCcsIG9uZmluaXNoKVxuICBpZiAob3B0aW9ucy5lcnJvciAhPT0gZmFsc2UpIHtcbiAgICBzdHJlYW0ub24oJ2Vycm9yJywgb25lcnJvcilcbiAgfVxuICBzdHJlYW0ub24oJ2Nsb3NlJywgb25jbG9zZSlcbiAgaWYgKGNsb3NlZCkge1xuICAgIHByb2Nlc3MubmV4dFRpY2sob25jbG9zZSlcbiAgfSBlbHNlIGlmIChcbiAgICAod1N0YXRlICE9PSBudWxsICYmIHdTdGF0ZSAhPT0gdW5kZWZpbmVkICYmIHdTdGF0ZS5lcnJvckVtaXR0ZWQpIHx8XG4gICAgKHJTdGF0ZSAhPT0gbnVsbCAmJiByU3RhdGUgIT09IHVuZGVmaW5lZCAmJiByU3RhdGUuZXJyb3JFbWl0dGVkKVxuICApIHtcbiAgICBpZiAoIXdpbGxFbWl0Q2xvc2UpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2sob25jbG9zZWQpXG4gICAgfVxuICB9IGVsc2UgaWYgKFxuICAgICFyZWFkYWJsZSAmJlxuICAgICghd2lsbEVtaXRDbG9zZSB8fCBpc1JlYWRhYmxlKHN0cmVhbSkpICYmXG4gICAgKHdyaXRhYmxlRmluaXNoZWQgfHwgaXNXcml0YWJsZShzdHJlYW0pID09PSBmYWxzZSlcbiAgKSB7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhvbmNsb3NlZClcbiAgfSBlbHNlIGlmIChcbiAgICAhd3JpdGFibGUgJiZcbiAgICAoIXdpbGxFbWl0Q2xvc2UgfHwgaXNXcml0YWJsZShzdHJlYW0pKSAmJlxuICAgIChyZWFkYWJsZUZpbmlzaGVkIHx8IGlzUmVhZGFibGUoc3RyZWFtKSA9PT0gZmFsc2UpXG4gICkge1xuICAgIHByb2Nlc3MubmV4dFRpY2sob25jbG9zZWQpXG4gIH0gZWxzZSBpZiAoclN0YXRlICYmIHN0cmVhbS5yZXEgJiYgc3RyZWFtLmFib3J0ZWQpIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKG9uY2xvc2VkKVxuICB9XG4gIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgY2FsbGJhY2sgPSBub3BcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Fib3J0ZWQnLCBvbmNsb3NlKVxuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignY29tcGxldGUnLCBvbmZpbmlzaClcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Fib3J0Jywgb25jbG9zZSlcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ3JlcXVlc3QnLCBvbnJlcXVlc3QpXG4gICAgaWYgKHN0cmVhbS5yZXEpIHN0cmVhbS5yZXEucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKVxuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25sZWdhY3lmaW5pc2gpXG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9ubGVnYWN5ZmluaXNoKVxuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpXG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZClcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcilcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSlcbiAgfVxuICBpZiAob3B0aW9ucy5zaWduYWwgJiYgIWNsb3NlZCkge1xuICAgIGNvbnN0IGFib3J0ID0gKCkgPT4ge1xuICAgICAgLy8gS2VlcCBpdCBiZWNhdXNlIGNsZWFudXAgcmVtb3ZlcyBpdC5cbiAgICAgIGNvbnN0IGVuZENhbGxiYWNrID0gY2FsbGJhY2tcbiAgICAgIGNsZWFudXAoKVxuICAgICAgZW5kQ2FsbGJhY2suY2FsbChcbiAgICAgICAgc3RyZWFtLFxuICAgICAgICBuZXcgQWJvcnRFcnJvcih1bmRlZmluZWQsIHtcbiAgICAgICAgICBjYXVzZTogb3B0aW9ucy5zaWduYWwucmVhc29uXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICAgIGlmIChvcHRpb25zLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGFib3J0KVxuICAgIH0gZWxzZSB7XG4gICAgICBhZGRBYm9ydExpc3RlbmVyID0gYWRkQWJvcnRMaXN0ZW5lciB8fCByZXF1aXJlKCcuLi8uLi9vdXJzL3V0aWwnKS5hZGRBYm9ydExpc3RlbmVyXG4gICAgICBjb25zdCBkaXNwb3NhYmxlID0gYWRkQWJvcnRMaXN0ZW5lcihvcHRpb25zLnNpZ25hbCwgYWJvcnQpXG4gICAgICBjb25zdCBvcmlnaW5hbENhbGxiYWNrID0gY2FsbGJhY2tcbiAgICAgIGNhbGxiYWNrID0gb25jZSgoLi4uYXJncykgPT4ge1xuICAgICAgICBkaXNwb3NhYmxlW1N5bWJvbERpc3Bvc2VdKClcbiAgICAgICAgb3JpZ2luYWxDYWxsYmFjay5hcHBseShzdHJlYW0sIGFyZ3MpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2xlYW51cFxufVxuZnVuY3Rpb24gZW9zV2ViKHN0cmVhbSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgbGV0IGlzQWJvcnRlZCA9IGZhbHNlXG4gIGxldCBhYm9ydCA9IG5vcFxuICBpZiAob3B0aW9ucy5zaWduYWwpIHtcbiAgICBhYm9ydCA9ICgpID0+IHtcbiAgICAgIGlzQWJvcnRlZCA9IHRydWVcbiAgICAgIGNhbGxiYWNrLmNhbGwoXG4gICAgICAgIHN0cmVhbSxcbiAgICAgICAgbmV3IEFib3J0RXJyb3IodW5kZWZpbmVkLCB7XG4gICAgICAgICAgY2F1c2U6IG9wdGlvbnMuc2lnbmFsLnJlYXNvblxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhhYm9ydClcbiAgICB9IGVsc2Uge1xuICAgICAgYWRkQWJvcnRMaXN0ZW5lciA9IGFkZEFib3J0TGlzdGVuZXIgfHwgcmVxdWlyZSgnLi4vLi4vb3Vycy91dGlsJykuYWRkQWJvcnRMaXN0ZW5lclxuICAgICAgY29uc3QgZGlzcG9zYWJsZSA9IGFkZEFib3J0TGlzdGVuZXIob3B0aW9ucy5zaWduYWwsIGFib3J0KVxuICAgICAgY29uc3Qgb3JpZ2luYWxDYWxsYmFjayA9IGNhbGxiYWNrXG4gICAgICBjYWxsYmFjayA9IG9uY2UoKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgZGlzcG9zYWJsZVtTeW1ib2xEaXNwb3NlXSgpXG4gICAgICAgIG9yaWdpbmFsQ2FsbGJhY2suYXBwbHkoc3RyZWFtLCBhcmdzKVxuICAgICAgfSlcbiAgICB9XG4gIH1cbiAgY29uc3QgcmVzb2x2ZXJGbiA9ICguLi5hcmdzKSA9PiB7XG4gICAgaWYgKCFpc0Fib3J0ZWQpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2FsbGJhY2suYXBwbHkoc3RyZWFtLCBhcmdzKSlcbiAgICB9XG4gIH1cbiAgUHJvbWlzZVByb3RvdHlwZVRoZW4oc3RyZWFtW2tJc0Nsb3NlZFByb21pc2VdLnByb21pc2UsIHJlc29sdmVyRm4sIHJlc29sdmVyRm4pXG4gIHJldHVybiBub3Bcbn1cbmZ1bmN0aW9uIGZpbmlzaGVkKHN0cmVhbSwgb3B0cykge1xuICB2YXIgX29wdHNcbiAgbGV0IGF1dG9DbGVhbnVwID0gZmFsc2VcbiAgaWYgKG9wdHMgPT09IG51bGwpIHtcbiAgICBvcHRzID0ga0VtcHR5T2JqZWN0XG4gIH1cbiAgaWYgKChfb3B0cyA9IG9wdHMpICE9PSBudWxsICYmIF9vcHRzICE9PSB1bmRlZmluZWQgJiYgX29wdHMuY2xlYW51cCkge1xuICAgIHZhbGlkYXRlQm9vbGVhbihvcHRzLmNsZWFudXAsICdjbGVhbnVwJylcbiAgICBhdXRvQ2xlYW51cCA9IG9wdHMuY2xlYW51cFxuICB9XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2xlYW51cCA9IGVvcyhzdHJlYW0sIG9wdHMsIChlcnIpID0+IHtcbiAgICAgIGlmIChhdXRvQ2xlYW51cCkge1xuICAgICAgICBjbGVhbnVwKClcbiAgICAgIH1cbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVycilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG59XG5tb2R1bGUuZXhwb3J0cyA9IGVvc1xubW9kdWxlLmV4cG9ydHMuZmluaXNoZWQgPSBmaW5pc2hlZFxuIiwiJ3VzZSBzdHJpY3QnXG5cbi8qIHJlcGxhY2VtZW50IHN0YXJ0ICovXG5cbmNvbnN0IHByb2Nlc3MgPSByZXF1aXJlKCdwcm9jZXNzLycpXG5cbi8qIHJlcGxhY2VtZW50IGVuZCAqL1xuXG5jb25zdCB7XG4gIGFnZ3JlZ2F0ZVR3b0Vycm9ycyxcbiAgY29kZXM6IHsgRVJSX01VTFRJUExFX0NBTExCQUNLIH0sXG4gIEFib3J0RXJyb3Jcbn0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL2Vycm9ycycpXG5jb25zdCB7IFN5bWJvbCB9ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5jb25zdCB7IGtJc0Rlc3Ryb3llZCwgaXNEZXN0cm95ZWQsIGlzRmluaXNoZWQsIGlzU2VydmVyUmVxdWVzdCB9ID0gcmVxdWlyZSgnLi91dGlscycpXG5jb25zdCBrRGVzdHJveSA9IFN5bWJvbCgna0Rlc3Ryb3knKVxuY29uc3Qga0NvbnN0cnVjdCA9IFN5bWJvbCgna0NvbnN0cnVjdCcpXG5mdW5jdGlvbiBjaGVja0Vycm9yKGVyciwgdywgcikge1xuICBpZiAoZXJyKSB7XG4gICAgLy8gQXZvaWQgVjggbGVhaywgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL3B1bGwvMzQxMDMjaXNzdWVjb21tZW50LTY1MjAwMjM2NFxuICAgIGVyci5zdGFjayAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuXG4gICAgaWYgKHcgJiYgIXcuZXJyb3JlZCkge1xuICAgICAgdy5lcnJvcmVkID0gZXJyXG4gICAgfVxuICAgIGlmIChyICYmICFyLmVycm9yZWQpIHtcbiAgICAgIHIuZXJyb3JlZCA9IGVyclxuICAgIH1cbiAgfVxufVxuXG4vLyBCYWNrd2FyZHMgY29tcGF0LiBjYigpIGlzIHVuZG9jdW1lbnRlZCBhbmQgdW51c2VkIGluIGNvcmUgYnV0XG4vLyB1bmZvcnR1bmF0ZWx5IG1pZ2h0IGJlIHVzZWQgYnkgbW9kdWxlcy5cbmZ1bmN0aW9uIGRlc3Ryb3koZXJyLCBjYikge1xuICBjb25zdCByID0gdGhpcy5fcmVhZGFibGVTdGF0ZVxuICBjb25zdCB3ID0gdGhpcy5fd3JpdGFibGVTdGF0ZVxuICAvLyBXaXRoIGR1cGxleCBzdHJlYW1zIHdlIHVzZSB0aGUgd3JpdGFibGUgc2lkZSBmb3Igc3RhdGUuXG4gIGNvbnN0IHMgPSB3IHx8IHJcbiAgaWYgKCh3ICE9PSBudWxsICYmIHcgIT09IHVuZGVmaW5lZCAmJiB3LmRlc3Ryb3llZCkgfHwgKHIgIT09IG51bGwgJiYgciAhPT0gdW5kZWZpbmVkICYmIHIuZGVzdHJveWVkKSkge1xuICAgIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNiKClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vIFdlIHNldCBkZXN0cm95ZWQgdG8gdHJ1ZSBiZWZvcmUgZmlyaW5nIGVycm9yIGNhbGxiYWNrcyBpbiBvcmRlclxuICAvLyB0byBtYWtlIGl0IHJlLWVudHJhbmNlIHNhZmUgaW4gY2FzZSBkZXN0cm95KCkgaXMgY2FsbGVkIHdpdGhpbiBjYWxsYmFja3NcbiAgY2hlY2tFcnJvcihlcnIsIHcsIHIpXG4gIGlmICh3KSB7XG4gICAgdy5kZXN0cm95ZWQgPSB0cnVlXG4gIH1cbiAgaWYgKHIpIHtcbiAgICByLmRlc3Ryb3llZCA9IHRydWVcbiAgfVxuXG4gIC8vIElmIHN0aWxsIGNvbnN0cnVjdGluZyB0aGVuIGRlZmVyIGNhbGxpbmcgX2Rlc3Ryb3kuXG4gIGlmICghcy5jb25zdHJ1Y3RlZCkge1xuICAgIHRoaXMub25jZShrRGVzdHJveSwgZnVuY3Rpb24gKGVyKSB7XG4gICAgICBfZGVzdHJveSh0aGlzLCBhZ2dyZWdhdGVUd29FcnJvcnMoZXIsIGVyciksIGNiKVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgX2Rlc3Ryb3kodGhpcywgZXJyLCBjYilcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuZnVuY3Rpb24gX2Rlc3Ryb3koc2VsZiwgZXJyLCBjYikge1xuICBsZXQgY2FsbGVkID0gZmFsc2VcbiAgZnVuY3Rpb24gb25EZXN0cm95KGVycikge1xuICAgIGlmIChjYWxsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYWxsZWQgPSB0cnVlXG4gICAgY29uc3QgciA9IHNlbGYuX3JlYWRhYmxlU3RhdGVcbiAgICBjb25zdCB3ID0gc2VsZi5fd3JpdGFibGVTdGF0ZVxuICAgIGNoZWNrRXJyb3IoZXJyLCB3LCByKVxuICAgIGlmICh3KSB7XG4gICAgICB3LmNsb3NlZCA9IHRydWVcbiAgICB9XG4gICAgaWYgKHIpIHtcbiAgICAgIHIuY2xvc2VkID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYihlcnIpXG4gICAgfVxuICAgIGlmIChlcnIpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yQ2xvc2VOVCwgc2VsZiwgZXJyKVxuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRDbG9zZU5ULCBzZWxmKVxuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHNlbGYuX2Rlc3Ryb3koZXJyIHx8IG51bGwsIG9uRGVzdHJveSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgb25EZXN0cm95KGVycilcbiAgfVxufVxuZnVuY3Rpb24gZW1pdEVycm9yQ2xvc2VOVChzZWxmLCBlcnIpIHtcbiAgZW1pdEVycm9yTlQoc2VsZiwgZXJyKVxuICBlbWl0Q2xvc2VOVChzZWxmKVxufVxuZnVuY3Rpb24gZW1pdENsb3NlTlQoc2VsZikge1xuICBjb25zdCByID0gc2VsZi5fcmVhZGFibGVTdGF0ZVxuICBjb25zdCB3ID0gc2VsZi5fd3JpdGFibGVTdGF0ZVxuICBpZiAodykge1xuICAgIHcuY2xvc2VFbWl0dGVkID0gdHJ1ZVxuICB9XG4gIGlmIChyKSB7XG4gICAgci5jbG9zZUVtaXR0ZWQgPSB0cnVlXG4gIH1cbiAgaWYgKCh3ICE9PSBudWxsICYmIHcgIT09IHVuZGVmaW5lZCAmJiB3LmVtaXRDbG9zZSkgfHwgKHIgIT09IG51bGwgJiYgciAhPT0gdW5kZWZpbmVkICYmIHIuZW1pdENsb3NlKSkge1xuICAgIHNlbGYuZW1pdCgnY2xvc2UnKVxuICB9XG59XG5mdW5jdGlvbiBlbWl0RXJyb3JOVChzZWxmLCBlcnIpIHtcbiAgY29uc3QgciA9IHNlbGYuX3JlYWRhYmxlU3RhdGVcbiAgY29uc3QgdyA9IHNlbGYuX3dyaXRhYmxlU3RhdGVcbiAgaWYgKCh3ICE9PSBudWxsICYmIHcgIT09IHVuZGVmaW5lZCAmJiB3LmVycm9yRW1pdHRlZCkgfHwgKHIgIT09IG51bGwgJiYgciAhPT0gdW5kZWZpbmVkICYmIHIuZXJyb3JFbWl0dGVkKSkge1xuICAgIHJldHVyblxuICB9XG4gIGlmICh3KSB7XG4gICAgdy5lcnJvckVtaXR0ZWQgPSB0cnVlXG4gIH1cbiAgaWYgKHIpIHtcbiAgICByLmVycm9yRW1pdHRlZCA9IHRydWVcbiAgfVxuICBzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKVxufVxuZnVuY3Rpb24gdW5kZXN0cm95KCkge1xuICBjb25zdCByID0gdGhpcy5fcmVhZGFibGVTdGF0ZVxuICBjb25zdCB3ID0gdGhpcy5fd3JpdGFibGVTdGF0ZVxuICBpZiAocikge1xuICAgIHIuY29uc3RydWN0ZWQgPSB0cnVlXG4gICAgci5jbG9zZWQgPSBmYWxzZVxuICAgIHIuY2xvc2VFbWl0dGVkID0gZmFsc2VcbiAgICByLmRlc3Ryb3llZCA9IGZhbHNlXG4gICAgci5lcnJvcmVkID0gbnVsbFxuICAgIHIuZXJyb3JFbWl0dGVkID0gZmFsc2VcbiAgICByLnJlYWRpbmcgPSBmYWxzZVxuICAgIHIuZW5kZWQgPSByLnJlYWRhYmxlID09PSBmYWxzZVxuICAgIHIuZW5kRW1pdHRlZCA9IHIucmVhZGFibGUgPT09IGZhbHNlXG4gIH1cbiAgaWYgKHcpIHtcbiAgICB3LmNvbnN0cnVjdGVkID0gdHJ1ZVxuICAgIHcuZGVzdHJveWVkID0gZmFsc2VcbiAgICB3LmNsb3NlZCA9IGZhbHNlXG4gICAgdy5jbG9zZUVtaXR0ZWQgPSBmYWxzZVxuICAgIHcuZXJyb3JlZCA9IG51bGxcbiAgICB3LmVycm9yRW1pdHRlZCA9IGZhbHNlXG4gICAgdy5maW5hbENhbGxlZCA9IGZhbHNlXG4gICAgdy5wcmVmaW5pc2hlZCA9IGZhbHNlXG4gICAgdy5lbmRlZCA9IHcud3JpdGFibGUgPT09IGZhbHNlXG4gICAgdy5lbmRpbmcgPSB3LndyaXRhYmxlID09PSBmYWxzZVxuICAgIHcuZmluaXNoZWQgPSB3LndyaXRhYmxlID09PSBmYWxzZVxuICB9XG59XG5mdW5jdGlvbiBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVyciwgc3luYykge1xuICAvLyBXZSBoYXZlIHRlc3RzIHRoYXQgcmVseSBvbiBlcnJvcnMgYmVpbmcgZW1pdHRlZFxuICAvLyBpbiB0aGUgc2FtZSB0aWNrLCBzbyBjaGFuZ2luZyB0aGlzIGlzIHNlbXZlciBtYWpvci5cbiAgLy8gRm9yIG5vdyB3aGVuIHlvdSBvcHQtaW4gdG8gYXV0b0Rlc3Ryb3kgd2UgYWxsb3dcbiAgLy8gdGhlIGVycm9yIHRvIGJlIGVtaXR0ZWQgbmV4dFRpY2suIEluIGEgZnV0dXJlXG4gIC8vIHNlbXZlciBtYWpvciB1cGRhdGUgd2Ugc2hvdWxkIGNoYW5nZSB0aGUgZGVmYXVsdCB0byB0aGlzLlxuXG4gIGNvbnN0IHIgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGVcbiAgY29uc3QgdyA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZVxuICBpZiAoKHcgIT09IG51bGwgJiYgdyAhPT0gdW5kZWZpbmVkICYmIHcuZGVzdHJveWVkKSB8fCAociAhPT0gbnVsbCAmJiByICE9PSB1bmRlZmluZWQgJiYgci5kZXN0cm95ZWQpKSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuICBpZiAoKHIgIT09IG51bGwgJiYgciAhPT0gdW5kZWZpbmVkICYmIHIuYXV0b0Rlc3Ryb3kpIHx8ICh3ICE9PSBudWxsICYmIHcgIT09IHVuZGVmaW5lZCAmJiB3LmF1dG9EZXN0cm95KSlcbiAgICBzdHJlYW0uZGVzdHJveShlcnIpXG4gIGVsc2UgaWYgKGVycikge1xuICAgIC8vIEF2b2lkIFY4IGxlYWssIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9wdWxsLzM0MTAzI2lzc3VlY29tbWVudC02NTIwMDIzNjRcbiAgICBlcnIuc3RhY2sgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcblxuICAgIGlmICh3ICYmICF3LmVycm9yZWQpIHtcbiAgICAgIHcuZXJyb3JlZCA9IGVyclxuICAgIH1cbiAgICBpZiAociAmJiAhci5lcnJvcmVkKSB7XG4gICAgICByLmVycm9yZWQgPSBlcnJcbiAgICB9XG4gICAgaWYgKHN5bmMpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yTlQsIHN0cmVhbSwgZXJyKVxuICAgIH0gZWxzZSB7XG4gICAgICBlbWl0RXJyb3JOVChzdHJlYW0sIGVycilcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGNvbnN0cnVjdChzdHJlYW0sIGNiKSB7XG4gIGlmICh0eXBlb2Ygc3RyZWFtLl9jb25zdHJ1Y3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm5cbiAgfVxuICBjb25zdCByID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlXG4gIGNvbnN0IHcgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGVcbiAgaWYgKHIpIHtcbiAgICByLmNvbnN0cnVjdGVkID0gZmFsc2VcbiAgfVxuICBpZiAodykge1xuICAgIHcuY29uc3RydWN0ZWQgPSBmYWxzZVxuICB9XG4gIHN0cmVhbS5vbmNlKGtDb25zdHJ1Y3QsIGNiKVxuICBpZiAoc3RyZWFtLmxpc3RlbmVyQ291bnQoa0NvbnN0cnVjdCkgPiAxKSB7XG4gICAgLy8gRHVwbGV4XG4gICAgcmV0dXJuXG4gIH1cbiAgcHJvY2Vzcy5uZXh0VGljayhjb25zdHJ1Y3ROVCwgc3RyZWFtKVxufVxuZnVuY3Rpb24gY29uc3RydWN0TlQoc3RyZWFtKSB7XG4gIGxldCBjYWxsZWQgPSBmYWxzZVxuICBmdW5jdGlvbiBvbkNvbnN0cnVjdChlcnIpIHtcbiAgICBpZiAoY2FsbGVkKSB7XG4gICAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVyciAhPT0gbnVsbCAmJiBlcnIgIT09IHVuZGVmaW5lZCA/IGVyciA6IG5ldyBFUlJfTVVMVElQTEVfQ0FMTEJBQ0soKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYWxsZWQgPSB0cnVlXG4gICAgY29uc3QgciA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICAgIGNvbnN0IHcgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGVcbiAgICBjb25zdCBzID0gdyB8fCByXG4gICAgaWYgKHIpIHtcbiAgICAgIHIuY29uc3RydWN0ZWQgPSB0cnVlXG4gICAgfVxuICAgIGlmICh3KSB7XG4gICAgICB3LmNvbnN0cnVjdGVkID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAocy5kZXN0cm95ZWQpIHtcbiAgICAgIHN0cmVhbS5lbWl0KGtEZXN0cm95LCBlcnIpXG4gICAgfSBlbHNlIGlmIChlcnIpIHtcbiAgICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXJyLCB0cnVlKVxuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRDb25zdHJ1Y3ROVCwgc3RyZWFtKVxuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHN0cmVhbS5fY29uc3RydWN0KChlcnIpID0+IHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2sob25Db25zdHJ1Y3QsIGVycilcbiAgICB9KVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKG9uQ29uc3RydWN0LCBlcnIpXG4gIH1cbn1cbmZ1bmN0aW9uIGVtaXRDb25zdHJ1Y3ROVChzdHJlYW0pIHtcbiAgc3RyZWFtLmVtaXQoa0NvbnN0cnVjdClcbn1cbmZ1bmN0aW9uIGlzUmVxdWVzdChzdHJlYW0pIHtcbiAgcmV0dXJuIChzdHJlYW0gPT09IG51bGwgfHwgc3RyZWFtID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzdHJlYW0uc2V0SGVhZGVyKSAmJiB0eXBlb2Ygc3RyZWFtLmFib3J0ID09PSAnZnVuY3Rpb24nXG59XG5mdW5jdGlvbiBlbWl0Q2xvc2VMZWdhY3koc3RyZWFtKSB7XG4gIHN0cmVhbS5lbWl0KCdjbG9zZScpXG59XG5mdW5jdGlvbiBlbWl0RXJyb3JDbG9zZUxlZ2FjeShzdHJlYW0sIGVycikge1xuICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpXG4gIHByb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTGVnYWN5LCBzdHJlYW0pXG59XG5cbi8vIE5vcm1hbGl6ZSBkZXN0cm95IGZvciBsZWdhY3kuXG5mdW5jdGlvbiBkZXN0cm95ZXIoc3RyZWFtLCBlcnIpIHtcbiAgaWYgKCFzdHJlYW0gfHwgaXNEZXN0cm95ZWQoc3RyZWFtKSkge1xuICAgIHJldHVyblxuICB9XG4gIGlmICghZXJyICYmICFpc0ZpbmlzaGVkKHN0cmVhbSkpIHtcbiAgICBlcnIgPSBuZXcgQWJvcnRFcnJvcigpXG4gIH1cblxuICAvLyBUT0RPOiBSZW1vdmUgaXNSZXF1ZXN0IGJyYW5jaGVzLlxuICBpZiAoaXNTZXJ2ZXJSZXF1ZXN0KHN0cmVhbSkpIHtcbiAgICBzdHJlYW0uc29ja2V0ID0gbnVsbFxuICAgIHN0cmVhbS5kZXN0cm95KGVycilcbiAgfSBlbHNlIGlmIChpc1JlcXVlc3Qoc3RyZWFtKSkge1xuICAgIHN0cmVhbS5hYm9ydCgpXG4gIH0gZWxzZSBpZiAoaXNSZXF1ZXN0KHN0cmVhbS5yZXEpKSB7XG4gICAgc3RyZWFtLnJlcS5hYm9ydCgpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHN0cmVhbS5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgc3RyZWFtLmRlc3Ryb3koZXJyKVxuICB9IGVsc2UgaWYgKHR5cGVvZiBzdHJlYW0uY2xvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUT0RPOiBEb24ndCBsb3NlIGVycj9cbiAgICBzdHJlYW0uY2xvc2UoKVxuICB9IGVsc2UgaWYgKGVycikge1xuICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yQ2xvc2VMZWdhY3ksIHN0cmVhbSwgZXJyKVxuICB9IGVsc2Uge1xuICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTGVnYWN5LCBzdHJlYW0pXG4gIH1cbiAgaWYgKCFzdHJlYW0uZGVzdHJveWVkKSB7XG4gICAgc3RyZWFtW2tJc0Rlc3Ryb3llZF0gPSB0cnVlXG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjb25zdHJ1Y3QsXG4gIGRlc3Ryb3llcixcbiAgZGVzdHJveSxcbiAgdW5kZXN0cm95LFxuICBlcnJvck9yRGVzdHJveVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgQXJyYXlJc0FycmF5LCBPYmplY3RTZXRQcm90b3R5cGVPZiB9ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5jb25zdCB7IEV2ZW50RW1pdHRlcjogRUUgfSA9IHJlcXVpcmUoJ2V2ZW50cycpXG5mdW5jdGlvbiBTdHJlYW0ob3B0cykge1xuICBFRS5jYWxsKHRoaXMsIG9wdHMpXG59XG5PYmplY3RTZXRQcm90b3R5cGVPZihTdHJlYW0ucHJvdG90eXBlLCBFRS5wcm90b3R5cGUpXG5PYmplY3RTZXRQcm90b3R5cGVPZihTdHJlYW0sIEVFKVxuU3RyZWFtLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKGRlc3QsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc291cmNlID0gdGhpc1xuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBpZiAoZGVzdC53cml0YWJsZSAmJiBkZXN0LndyaXRlKGNodW5rKSA9PT0gZmFsc2UgJiYgc291cmNlLnBhdXNlKSB7XG4gICAgICBzb3VyY2UucGF1c2UoKVxuICAgIH1cbiAgfVxuICBzb3VyY2Uub24oJ2RhdGEnLCBvbmRhdGEpXG4gIGZ1bmN0aW9uIG9uZHJhaW4oKSB7XG4gICAgaWYgKHNvdXJjZS5yZWFkYWJsZSAmJiBzb3VyY2UucmVzdW1lKSB7XG4gICAgICBzb3VyY2UucmVzdW1lKClcbiAgICB9XG4gIH1cbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKVxuXG4gIC8vIElmIHRoZSAnZW5kJyBvcHRpb24gaXMgbm90IHN1cHBsaWVkLCBkZXN0LmVuZCgpIHdpbGwgYmUgY2FsbGVkIHdoZW5cbiAgLy8gc291cmNlIGdldHMgdGhlICdlbmQnIG9yICdjbG9zZScgZXZlbnRzLiAgT25seSBkZXN0LmVuZCgpIG9uY2UuXG4gIGlmICghZGVzdC5faXNTdGRpbyAmJiAoIW9wdGlvbnMgfHwgb3B0aW9ucy5lbmQgIT09IGZhbHNlKSkge1xuICAgIHNvdXJjZS5vbignZW5kJywgb25lbmQpXG4gICAgc291cmNlLm9uKCdjbG9zZScsIG9uY2xvc2UpXG4gIH1cbiAgbGV0IGRpZE9uRW5kID0gZmFsc2VcbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgaWYgKGRpZE9uRW5kKSByZXR1cm5cbiAgICBkaWRPbkVuZCA9IHRydWVcbiAgICBkZXN0LmVuZCgpXG4gIH1cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBpZiAoZGlkT25FbmQpIHJldHVyblxuICAgIGRpZE9uRW5kID0gdHJ1ZVxuICAgIGlmICh0eXBlb2YgZGVzdC5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSBkZXN0LmRlc3Ryb3koKVxuICB9XG5cbiAgLy8gRG9uJ3QgbGVhdmUgZGFuZ2xpbmcgcGlwZXMgd2hlbiB0aGVyZSBhcmUgZXJyb3JzLlxuICBmdW5jdGlvbiBvbmVycm9yKGVyKSB7XG4gICAgY2xlYW51cCgpXG4gICAgaWYgKEVFLmxpc3RlbmVyQ291bnQodGhpcywgJ2Vycm9yJykgPT09IDApIHtcbiAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcilcbiAgICB9XG4gIH1cbiAgcHJlcGVuZExpc3RlbmVyKHNvdXJjZSwgJ2Vycm9yJywgb25lcnJvcilcbiAgcHJlcGVuZExpc3RlbmVyKGRlc3QsICdlcnJvcicsIG9uZXJyb3IpXG5cbiAgLy8gUmVtb3ZlIGFsbCB0aGUgZXZlbnQgbGlzdGVuZXJzIHRoYXQgd2VyZSBhZGRlZC5cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKVxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKVxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgY2xlYW51cClcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgY2xlYW51cClcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIGNsZWFudXApXG4gIH1cbiAgc291cmNlLm9uKCdlbmQnLCBjbGVhbnVwKVxuICBzb3VyY2Uub24oJ2Nsb3NlJywgY2xlYW51cClcbiAgZGVzdC5vbignY2xvc2UnLCBjbGVhbnVwKVxuICBkZXN0LmVtaXQoJ3BpcGUnLCBzb3VyY2UpXG5cbiAgLy8gQWxsb3cgZm9yIHVuaXgtbGlrZSB1c2FnZTogQS5waXBlKEIpLnBpcGUoQylcbiAgcmV0dXJuIGRlc3Rcbn1cbmZ1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcihlbWl0dGVyLCBldmVudCwgZm4pIHtcbiAgLy8gU2FkbHkgdGhpcyBpcyBub3QgY2FjaGVhYmxlIGFzIHNvbWUgbGlicmFyaWVzIGJ1bmRsZSB0aGVpciBvd25cbiAgLy8gZXZlbnQgZW1pdHRlciBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZW0uXG4gIGlmICh0eXBlb2YgZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHJldHVybiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lcihldmVudCwgZm4pXG5cbiAgLy8gVGhpcyBpcyBhIGhhY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIGFueVxuICAvLyB1c2VybGFuZCBvbmVzLiAgTkVWRVIgRE8gVEhJUy4gVGhpcyBpcyBoZXJlIG9ubHkgYmVjYXVzZSB0aGlzIGNvZGUgbmVlZHNcbiAgLy8gdG8gY29udGludWUgdG8gd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIE5vZGUuanMgdGhhdCBkbyBub3QgaW5jbHVkZVxuICAvLyB0aGUgcHJlcGVuZExpc3RlbmVyKCkgbWV0aG9kLiBUaGUgZ29hbCBpcyB0byBldmVudHVhbGx5IHJlbW92ZSB0aGlzIGhhY2suXG4gIGlmICghZW1pdHRlci5fZXZlbnRzIHx8ICFlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSBlbWl0dGVyLm9uKGV2ZW50LCBmbilcbiAgZWxzZSBpZiAoQXJyYXlJc0FycmF5KGVtaXR0ZXIuX2V2ZW50c1tldmVudF0pKSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdLnVuc2hpZnQoZm4pXG4gIGVsc2UgZW1pdHRlci5fZXZlbnRzW2V2ZW50XSA9IFtmbiwgZW1pdHRlci5fZXZlbnRzW2V2ZW50XV1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBTdHJlYW0sXG4gIHByZXBlbmRMaXN0ZW5lclxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgU3ltYm9sRGlzcG9zZSB9ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5jb25zdCB7IEFib3J0RXJyb3IsIGNvZGVzIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL2Vycm9ycycpXG5jb25zdCB7IGlzTm9kZVN0cmVhbSwgaXNXZWJTdHJlYW0sIGtDb250cm9sbGVyRXJyb3JGdW5jdGlvbiB9ID0gcmVxdWlyZSgnLi91dGlscycpXG5jb25zdCBlb3MgPSByZXF1aXJlKCcuL2VuZC1vZi1zdHJlYW0nKVxuY29uc3QgeyBFUlJfSU5WQUxJRF9BUkdfVFlQRSB9ID0gY29kZXNcbmxldCBhZGRBYm9ydExpc3RlbmVyXG5cbi8vIFRoaXMgbWV0aG9kIGlzIGlubGluZWQgaGVyZSBmb3IgcmVhZGFibGUtc3RyZWFtXG4vLyBJdCBhbHNvIGRvZXMgbm90IGFsbG93IGZvciBzaWduYWwgdG8gbm90IGV4aXN0IG9uIHRoZSBzdHJlYW1cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9wdWxsLzM2MDYxI2Rpc2N1c3Npb25fcjUzMzcxODAyOVxuY29uc3QgdmFsaWRhdGVBYm9ydFNpZ25hbCA9IChzaWduYWwsIG5hbWUpID0+IHtcbiAgaWYgKHR5cGVvZiBzaWduYWwgIT09ICdvYmplY3QnIHx8ICEoJ2Fib3J0ZWQnIGluIHNpZ25hbCkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ0Fib3J0U2lnbmFsJywgc2lnbmFsKVxuICB9XG59XG5tb2R1bGUuZXhwb3J0cy5hZGRBYm9ydFNpZ25hbCA9IGZ1bmN0aW9uIGFkZEFib3J0U2lnbmFsKHNpZ25hbCwgc3RyZWFtKSB7XG4gIHZhbGlkYXRlQWJvcnRTaWduYWwoc2lnbmFsLCAnc2lnbmFsJylcbiAgaWYgKCFpc05vZGVTdHJlYW0oc3RyZWFtKSAmJiAhaXNXZWJTdHJlYW0oc3RyZWFtKSkge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnc3RyZWFtJywgWydSZWFkYWJsZVN0cmVhbScsICdXcml0YWJsZVN0cmVhbScsICdTdHJlYW0nXSwgc3RyZWFtKVxuICB9XG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cy5hZGRBYm9ydFNpZ25hbE5vVmFsaWRhdGUoc2lnbmFsLCBzdHJlYW0pXG59XG5tb2R1bGUuZXhwb3J0cy5hZGRBYm9ydFNpZ25hbE5vVmFsaWRhdGUgPSBmdW5jdGlvbiAoc2lnbmFsLCBzdHJlYW0pIHtcbiAgaWYgKHR5cGVvZiBzaWduYWwgIT09ICdvYmplY3QnIHx8ICEoJ2Fib3J0ZWQnIGluIHNpZ25hbCkpIHtcbiAgICByZXR1cm4gc3RyZWFtXG4gIH1cbiAgY29uc3Qgb25BYm9ydCA9IGlzTm9kZVN0cmVhbShzdHJlYW0pXG4gICAgPyAoKSA9PiB7XG4gICAgICAgIHN0cmVhbS5kZXN0cm95KFxuICAgICAgICAgIG5ldyBBYm9ydEVycm9yKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgY2F1c2U6IHNpZ25hbC5yZWFzb25cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9XG4gICAgOiAoKSA9PiB7XG4gICAgICAgIHN0cmVhbVtrQ29udHJvbGxlckVycm9yRnVuY3Rpb25dKFxuICAgICAgICAgIG5ldyBBYm9ydEVycm9yKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgY2F1c2U6IHNpZ25hbC5yZWFzb25cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9XG4gIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgIG9uQWJvcnQoKVxuICB9IGVsc2Uge1xuICAgIGFkZEFib3J0TGlzdGVuZXIgPSBhZGRBYm9ydExpc3RlbmVyIHx8IHJlcXVpcmUoJy4uLy4uL291cnMvdXRpbCcpLmFkZEFib3J0TGlzdGVuZXJcbiAgICBjb25zdCBkaXNwb3NhYmxlID0gYWRkQWJvcnRMaXN0ZW5lcihzaWduYWwsIG9uQWJvcnQpXG4gICAgZW9zKHN0cmVhbSwgZGlzcG9zYWJsZVtTeW1ib2xEaXNwb3NlXSlcbiAgfVxuICByZXR1cm4gc3RyZWFtXG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgeyBTdHJpbmdQcm90b3R5cGVTbGljZSwgU3ltYm9sSXRlcmF0b3IsIFR5cGVkQXJyYXlQcm90b3R5cGVTZXQsIFVpbnQ4QXJyYXkgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvcHJpbW9yZGlhbHMnKVxuY29uc3QgeyBCdWZmZXIgfSA9IHJlcXVpcmUoJ2J1ZmZlcicpXG5jb25zdCB7IGluc3BlY3QgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvdXRpbCcpXG5tb2R1bGUuZXhwb3J0cyA9IGNsYXNzIEJ1ZmZlckxpc3Qge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmhlYWQgPSBudWxsXG4gICAgdGhpcy50YWlsID0gbnVsbFxuICAgIHRoaXMubGVuZ3RoID0gMFxuICB9XG4gIHB1c2godikge1xuICAgIGNvbnN0IGVudHJ5ID0ge1xuICAgICAgZGF0YTogdixcbiAgICAgIG5leHQ6IG51bGxcbiAgICB9XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMCkgdGhpcy50YWlsLm5leHQgPSBlbnRyeVxuICAgIGVsc2UgdGhpcy5oZWFkID0gZW50cnlcbiAgICB0aGlzLnRhaWwgPSBlbnRyeVxuICAgICsrdGhpcy5sZW5ndGhcbiAgfVxuICB1bnNoaWZ0KHYpIHtcbiAgICBjb25zdCBlbnRyeSA9IHtcbiAgICAgIGRhdGE6IHYsXG4gICAgICBuZXh0OiB0aGlzLmhlYWRcbiAgICB9XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB0aGlzLnRhaWwgPSBlbnRyeVxuICAgIHRoaXMuaGVhZCA9IGVudHJ5XG4gICAgKyt0aGlzLmxlbmd0aFxuICB9XG4gIHNoaWZ0KCkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5oZWFkLmRhdGFcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEpIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGxcbiAgICBlbHNlIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0XG4gICAgLS10aGlzLmxlbmd0aFxuICAgIHJldHVybiByZXRcbiAgfVxuICBjbGVhcigpIHtcbiAgICB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsXG4gICAgdGhpcy5sZW5ndGggPSAwXG4gIH1cbiAgam9pbihzKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gJydcbiAgICBsZXQgcCA9IHRoaXMuaGVhZFxuICAgIGxldCByZXQgPSAnJyArIHAuZGF0YVxuICAgIHdoaWxlICgocCA9IHAubmV4dCkgIT09IG51bGwpIHJldCArPSBzICsgcC5kYXRhXG4gICAgcmV0dXJuIHJldFxuICB9XG4gIGNvbmNhdChuKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gQnVmZmVyLmFsbG9jKDApXG4gICAgY29uc3QgcmV0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4gPj4+IDApXG4gICAgbGV0IHAgPSB0aGlzLmhlYWRcbiAgICBsZXQgaSA9IDBcbiAgICB3aGlsZSAocCkge1xuICAgICAgVHlwZWRBcnJheVByb3RvdHlwZVNldChyZXQsIHAuZGF0YSwgaSlcbiAgICAgIGkgKz0gcC5kYXRhLmxlbmd0aFxuICAgICAgcCA9IHAubmV4dFxuICAgIH1cbiAgICByZXR1cm4gcmV0XG4gIH1cblxuICAvLyBDb25zdW1lcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgb3IgY2hhcmFjdGVycyBmcm9tIHRoZSBidWZmZXJlZCBkYXRhLlxuICBjb25zdW1lKG4sIGhhc1N0cmluZ3MpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5oZWFkLmRhdGFcbiAgICBpZiAobiA8IGRhdGEubGVuZ3RoKSB7XG4gICAgICAvLyBgc2xpY2VgIGlzIHRoZSBzYW1lIGZvciBidWZmZXJzIGFuZCBzdHJpbmdzLlxuICAgICAgY29uc3Qgc2xpY2UgPSBkYXRhLnNsaWNlKDAsIG4pXG4gICAgICB0aGlzLmhlYWQuZGF0YSA9IGRhdGEuc2xpY2UobilcbiAgICAgIHJldHVybiBzbGljZVxuICAgIH1cbiAgICBpZiAobiA9PT0gZGF0YS5sZW5ndGgpIHtcbiAgICAgIC8vIEZpcnN0IGNodW5rIGlzIGEgcGVyZmVjdCBtYXRjaC5cbiAgICAgIHJldHVybiB0aGlzLnNoaWZ0KClcbiAgICB9XG4gICAgLy8gUmVzdWx0IHNwYW5zIG1vcmUgdGhhbiBvbmUgYnVmZmVyLlxuICAgIHJldHVybiBoYXNTdHJpbmdzID8gdGhpcy5fZ2V0U3RyaW5nKG4pIDogdGhpcy5fZ2V0QnVmZmVyKG4pXG4gIH1cbiAgZmlyc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZC5kYXRhXG4gIH1cbiAgKltTeW1ib2xJdGVyYXRvcl0oKSB7XG4gICAgZm9yIChsZXQgcCA9IHRoaXMuaGVhZDsgcDsgcCA9IHAubmV4dCkge1xuICAgICAgeWllbGQgcC5kYXRhXG4gICAgfVxuICB9XG5cbiAgLy8gQ29uc3VtZXMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgYnVmZmVyZWQgZGF0YS5cbiAgX2dldFN0cmluZyhuKSB7XG4gICAgbGV0IHJldCA9ICcnXG4gICAgbGV0IHAgPSB0aGlzLmhlYWRcbiAgICBsZXQgYyA9IDBcbiAgICBkbyB7XG4gICAgICBjb25zdCBzdHIgPSBwLmRhdGFcbiAgICAgIGlmIChuID4gc3RyLmxlbmd0aCkge1xuICAgICAgICByZXQgKz0gc3RyXG4gICAgICAgIG4gLT0gc3RyLmxlbmd0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG4gPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgICByZXQgKz0gc3RyXG4gICAgICAgICAgKytjXG4gICAgICAgICAgaWYgKHAubmV4dCkgdGhpcy5oZWFkID0gcC5uZXh0XG4gICAgICAgICAgZWxzZSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0ICs9IFN0cmluZ1Byb3RvdHlwZVNsaWNlKHN0ciwgMCwgbilcbiAgICAgICAgICB0aGlzLmhlYWQgPSBwXG4gICAgICAgICAgcC5kYXRhID0gU3RyaW5nUHJvdG90eXBlU2xpY2Uoc3RyLCBuKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICArK2NcbiAgICB9IHdoaWxlICgocCA9IHAubmV4dCkgIT09IG51bGwpXG4gICAgdGhpcy5sZW5ndGggLT0gY1xuICAgIHJldHVybiByZXRcbiAgfVxuXG4gIC8vIENvbnN1bWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBmcm9tIHRoZSBidWZmZXJlZCBkYXRhLlxuICBfZ2V0QnVmZmVyKG4pIHtcbiAgICBjb25zdCByZXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobilcbiAgICBjb25zdCByZXRMZW4gPSBuXG4gICAgbGV0IHAgPSB0aGlzLmhlYWRcbiAgICBsZXQgYyA9IDBcbiAgICBkbyB7XG4gICAgICBjb25zdCBidWYgPSBwLmRhdGFcbiAgICAgIGlmIChuID4gYnVmLmxlbmd0aCkge1xuICAgICAgICBUeXBlZEFycmF5UHJvdG90eXBlU2V0KHJldCwgYnVmLCByZXRMZW4gLSBuKVxuICAgICAgICBuIC09IGJ1Zi5sZW5ndGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuID09PSBidWYubGVuZ3RoKSB7XG4gICAgICAgICAgVHlwZWRBcnJheVByb3RvdHlwZVNldChyZXQsIGJ1ZiwgcmV0TGVuIC0gbilcbiAgICAgICAgICArK2NcbiAgICAgICAgICBpZiAocC5uZXh0KSB0aGlzLmhlYWQgPSBwLm5leHRcbiAgICAgICAgICBlbHNlIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGxcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBUeXBlZEFycmF5UHJvdG90eXBlU2V0KHJldCwgbmV3IFVpbnQ4QXJyYXkoYnVmLmJ1ZmZlciwgYnVmLmJ5dGVPZmZzZXQsIG4pLCByZXRMZW4gLSBuKVxuICAgICAgICAgIHRoaXMuaGVhZCA9IHBcbiAgICAgICAgICBwLmRhdGEgPSBidWYuc2xpY2UobilcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgKytjXG4gICAgfSB3aGlsZSAoKHAgPSBwLm5leHQpICE9PSBudWxsKVxuICAgIHRoaXMubGVuZ3RoIC09IGNcbiAgICByZXR1cm4gcmV0XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgdGhlIGxpbmtlZCBsaXN0IG9ubHkgc2hvd3MgdGhlIG1pbmltYWwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLlxuICBbU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKV0oXywgb3B0aW9ucykge1xuICAgIHJldHVybiBpbnNwZWN0KHRoaXMsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAvLyBPbmx5IGluc3BlY3Qgb25lIGxldmVsLlxuICAgICAgZGVwdGg6IDAsXG4gICAgICAvLyBJdCBzaG91bGQgbm90IHJlY3Vyc2UuXG4gICAgICBjdXN0b21JbnNwZWN0OiBmYWxzZVxuICAgIH0pXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IE1hdGhGbG9vciwgTnVtYmVySXNJbnRlZ2VyIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL3ByaW1vcmRpYWxzJylcbmNvbnN0IHsgdmFsaWRhdGVJbnRlZ2VyIH0gPSByZXF1aXJlKCcuLi92YWxpZGF0b3JzJylcbmNvbnN0IHsgRVJSX0lOVkFMSURfQVJHX1ZBTFVFIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL2Vycm9ycycpLmNvZGVzXG5sZXQgZGVmYXVsdEhpZ2hXYXRlck1hcmtCeXRlcyA9IDE2ICogMTAyNFxubGV0IGRlZmF1bHRIaWdoV2F0ZXJNYXJrT2JqZWN0TW9kZSA9IDE2XG5mdW5jdGlvbiBoaWdoV2F0ZXJNYXJrRnJvbShvcHRpb25zLCBpc0R1cGxleCwgZHVwbGV4S2V5KSB7XG4gIHJldHVybiBvcHRpb25zLmhpZ2hXYXRlck1hcmsgIT0gbnVsbCA/IG9wdGlvbnMuaGlnaFdhdGVyTWFyayA6IGlzRHVwbGV4ID8gb3B0aW9uc1tkdXBsZXhLZXldIDogbnVsbFxufVxuZnVuY3Rpb24gZ2V0RGVmYXVsdEhpZ2hXYXRlck1hcmsob2JqZWN0TW9kZSkge1xuICByZXR1cm4gb2JqZWN0TW9kZSA/IGRlZmF1bHRIaWdoV2F0ZXJNYXJrT2JqZWN0TW9kZSA6IGRlZmF1bHRIaWdoV2F0ZXJNYXJrQnl0ZXNcbn1cbmZ1bmN0aW9uIHNldERlZmF1bHRIaWdoV2F0ZXJNYXJrKG9iamVjdE1vZGUsIHZhbHVlKSB7XG4gIHZhbGlkYXRlSW50ZWdlcih2YWx1ZSwgJ3ZhbHVlJywgMClcbiAgaWYgKG9iamVjdE1vZGUpIHtcbiAgICBkZWZhdWx0SGlnaFdhdGVyTWFya09iamVjdE1vZGUgPSB2YWx1ZVxuICB9IGVsc2Uge1xuICAgIGRlZmF1bHRIaWdoV2F0ZXJNYXJrQnl0ZXMgPSB2YWx1ZVxuICB9XG59XG5mdW5jdGlvbiBnZXRIaWdoV2F0ZXJNYXJrKHN0YXRlLCBvcHRpb25zLCBkdXBsZXhLZXksIGlzRHVwbGV4KSB7XG4gIGNvbnN0IGh3bSA9IGhpZ2hXYXRlck1hcmtGcm9tKG9wdGlvbnMsIGlzRHVwbGV4LCBkdXBsZXhLZXkpXG4gIGlmIChod20gIT0gbnVsbCkge1xuICAgIGlmICghTnVtYmVySXNJbnRlZ2VyKGh3bSkgfHwgaHdtIDwgMCkge1xuICAgICAgY29uc3QgbmFtZSA9IGlzRHVwbGV4ID8gYG9wdGlvbnMuJHtkdXBsZXhLZXl9YCA6ICdvcHRpb25zLmhpZ2hXYXRlck1hcmsnXG4gICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1ZBTFVFKG5hbWUsIGh3bSlcbiAgICB9XG4gICAgcmV0dXJuIE1hdGhGbG9vcihod20pXG4gIH1cblxuICAvLyBEZWZhdWx0IHZhbHVlXG4gIHJldHVybiBnZXREZWZhdWx0SGlnaFdhdGVyTWFyayhzdGF0ZS5vYmplY3RNb2RlKVxufVxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldEhpZ2hXYXRlck1hcmssXG4gIGdldERlZmF1bHRIaWdoV2F0ZXJNYXJrLFxuICBzZXREZWZhdWx0SGlnaFdhdGVyTWFya1xufVxuIiwiLyohIHNhZmUtYnVmZmVyLiBNSVQgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBub2RlL25vLWRlcHJlY2F0ZWQtYXBpICovXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJylcbnZhciBCdWZmZXIgPSBidWZmZXIuQnVmZmVyXG5cbi8vIGFsdGVybmF0aXZlIHRvIHVzaW5nIE9iamVjdC5rZXlzIGZvciBvbGQgYnJvd3NlcnNcbmZ1bmN0aW9uIGNvcHlQcm9wcyAoc3JjLCBkc3QpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGRzdFtrZXldID0gc3JjW2tleV1cbiAgfVxufVxuaWYgKEJ1ZmZlci5mcm9tICYmIEJ1ZmZlci5hbGxvYyAmJiBCdWZmZXIuYWxsb2NVbnNhZmUgJiYgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGJ1ZmZlclxufSBlbHNlIHtcbiAgLy8gQ29weSBwcm9wZXJ0aWVzIGZyb20gcmVxdWlyZSgnYnVmZmVyJylcbiAgY29weVByb3BzKGJ1ZmZlciwgZXhwb3J0cylcbiAgZXhwb3J0cy5CdWZmZXIgPSBTYWZlQnVmZmVyXG59XG5cbmZ1bmN0aW9uIFNhZmVCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cblNhZmVCdWZmZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCdWZmZXIucHJvdG90eXBlKVxuXG4vLyBDb3B5IHN0YXRpYyBtZXRob2RzIGZyb20gQnVmZmVyXG5jb3B5UHJvcHMoQnVmZmVyLCBTYWZlQnVmZmVyKVxuXG5TYWZlQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cblNhZmVCdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHZhciBidWYgPSBCdWZmZXIoc2l6ZSlcbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBidWYuZmlsbChmaWxsLCBlbmNvZGluZylcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmLmZpbGwoZmlsbClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYnVmLmZpbGwoMClcbiAgfVxuICByZXR1cm4gYnVmXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihzaXplKVxufVxuXG5TYWZlQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gYnVmZmVyLlNsb3dCdWZmZXIoc2l6ZSlcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgaXNFbmNvZGluZyA9IEJ1ZmZlci5pc0VuY29kaW5nIHx8IGZ1bmN0aW9uIChlbmNvZGluZykge1xuICBlbmNvZGluZyA9ICcnICsgZW5jb2Rpbmc7XG4gIHN3aXRjaCAoZW5jb2RpbmcgJiYgZW5jb2RpbmcudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6Y2FzZSAndXRmOCc6Y2FzZSAndXRmLTgnOmNhc2UgJ2FzY2lpJzpjYXNlICdiaW5hcnknOmNhc2UgJ2Jhc2U2NCc6Y2FzZSAndWNzMic6Y2FzZSAndWNzLTInOmNhc2UgJ3V0ZjE2bGUnOmNhc2UgJ3V0Zi0xNmxlJzpjYXNlICdyYXcnOlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuZnVuY3Rpb24gX25vcm1hbGl6ZUVuY29kaW5nKGVuYykge1xuICBpZiAoIWVuYykgcmV0dXJuICd1dGY4JztcbiAgdmFyIHJldHJpZWQ7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmMpIHtcbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gJ3V0ZjgnO1xuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuICd1dGYxNmxlJztcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gJ2xhdGluMSc7XG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGVuYztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChyZXRyaWVkKSByZXR1cm47IC8vIHVuZGVmaW5lZFxuICAgICAgICBlbmMgPSAoJycgKyBlbmMpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHJpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxufTtcblxuLy8gRG8gbm90IGNhY2hlIGBCdWZmZXIuaXNFbmNvZGluZ2Agd2hlbiBjaGVja2luZyBlbmNvZGluZyBuYW1lcyBhcyBzb21lXG4vLyBtb2R1bGVzIG1vbmtleS1wYXRjaCBpdCB0byBzdXBwb3J0IGFkZGl0aW9uYWwgZW5jb2RpbmdzXG5mdW5jdGlvbiBub3JtYWxpemVFbmNvZGluZyhlbmMpIHtcbiAgdmFyIG5lbmMgPSBfbm9ybWFsaXplRW5jb2RpbmcoZW5jKTtcbiAgaWYgKHR5cGVvZiBuZW5jICE9PSAnc3RyaW5nJyAmJiAoQnVmZmVyLmlzRW5jb2RpbmcgPT09IGlzRW5jb2RpbmcgfHwgIWlzRW5jb2RpbmcoZW5jKSkpIHRocm93IG5ldyBFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuYyk7XG4gIHJldHVybiBuZW5jIHx8IGVuYztcbn1cblxuLy8gU3RyaW5nRGVjb2RlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGVmZmljaWVudGx5IHNwbGl0dGluZyBhIHNlcmllcyBvZlxuLy8gYnVmZmVycyBpbnRvIGEgc2VyaWVzIG9mIEpTIHN0cmluZ3Mgd2l0aG91dCBicmVha2luZyBhcGFydCBtdWx0aS1ieXRlXG4vLyBjaGFyYWN0ZXJzLlxuZXhwb3J0cy5TdHJpbmdEZWNvZGVyID0gU3RyaW5nRGVjb2RlcjtcbmZ1bmN0aW9uIFN0cmluZ0RlY29kZXIoZW5jb2RpbmcpIHtcbiAgdGhpcy5lbmNvZGluZyA9IG5vcm1hbGl6ZUVuY29kaW5nKGVuY29kaW5nKTtcbiAgdmFyIG5iO1xuICBzd2l0Y2ggKHRoaXMuZW5jb2RpbmcpIHtcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIHRoaXMudGV4dCA9IHV0ZjE2VGV4dDtcbiAgICAgIHRoaXMuZW5kID0gdXRmMTZFbmQ7XG4gICAgICBuYiA9IDQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1dGY4JzpcbiAgICAgIHRoaXMuZmlsbExhc3QgPSB1dGY4RmlsbExhc3Q7XG4gICAgICBuYiA9IDQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgdGhpcy50ZXh0ID0gYmFzZTY0VGV4dDtcbiAgICAgIHRoaXMuZW5kID0gYmFzZTY0RW5kO1xuICAgICAgbmIgPSAzO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRoaXMud3JpdGUgPSBzaW1wbGVXcml0ZTtcbiAgICAgIHRoaXMuZW5kID0gc2ltcGxlRW5kO1xuICAgICAgcmV0dXJuO1xuICB9XG4gIHRoaXMubGFzdE5lZWQgPSAwO1xuICB0aGlzLmxhc3RUb3RhbCA9IDA7XG4gIHRoaXMubGFzdENoYXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobmIpO1xufVxuXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChidWYpIHtcbiAgaWYgKGJ1Zi5sZW5ndGggPT09IDApIHJldHVybiAnJztcbiAgdmFyIHI7XG4gIHZhciBpO1xuICBpZiAodGhpcy5sYXN0TmVlZCkge1xuICAgIHIgPSB0aGlzLmZpbGxMYXN0KGJ1Zik7XG4gICAgaWYgKHIgPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xuICAgIGkgPSB0aGlzLmxhc3ROZWVkO1xuICAgIHRoaXMubGFzdE5lZWQgPSAwO1xuICB9IGVsc2Uge1xuICAgIGkgPSAwO1xuICB9XG4gIGlmIChpIDwgYnVmLmxlbmd0aCkgcmV0dXJuIHIgPyByICsgdGhpcy50ZXh0KGJ1ZiwgaSkgOiB0aGlzLnRleHQoYnVmLCBpKTtcbiAgcmV0dXJuIHIgfHwgJyc7XG59O1xuXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSB1dGY4RW5kO1xuXG4vLyBSZXR1cm5zIG9ubHkgY29tcGxldGUgY2hhcmFjdGVycyBpbiBhIEJ1ZmZlclxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUudGV4dCA9IHV0ZjhUZXh0O1xuXG4vLyBBdHRlbXB0cyB0byBjb21wbGV0ZSBhIHBhcnRpYWwgbm9uLVVURi04IGNoYXJhY3RlciB1c2luZyBieXRlcyBmcm9tIGEgQnVmZmVyXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5maWxsTGFzdCA9IGZ1bmN0aW9uIChidWYpIHtcbiAgaWYgKHRoaXMubGFzdE5lZWQgPD0gYnVmLmxlbmd0aCkge1xuICAgIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZCwgMCwgdGhpcy5sYXN0TmVlZCk7XG4gICAgcmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgdGhpcy5sYXN0VG90YWwpO1xuICB9XG4gIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZCwgMCwgYnVmLmxlbmd0aCk7XG4gIHRoaXMubGFzdE5lZWQgLT0gYnVmLmxlbmd0aDtcbn07XG5cbi8vIENoZWNrcyB0aGUgdHlwZSBvZiBhIFVURi04IGJ5dGUsIHdoZXRoZXIgaXQncyBBU0NJSSwgYSBsZWFkaW5nIGJ5dGUsIG9yIGFcbi8vIGNvbnRpbnVhdGlvbiBieXRlLiBJZiBhbiBpbnZhbGlkIGJ5dGUgaXMgZGV0ZWN0ZWQsIC0yIGlzIHJldHVybmVkLlxuZnVuY3Rpb24gdXRmOENoZWNrQnl0ZShieXRlKSB7XG4gIGlmIChieXRlIDw9IDB4N0YpIHJldHVybiAwO2Vsc2UgaWYgKGJ5dGUgPj4gNSA9PT0gMHgwNikgcmV0dXJuIDI7ZWxzZSBpZiAoYnl0ZSA+PiA0ID09PSAweDBFKSByZXR1cm4gMztlbHNlIGlmIChieXRlID4+IDMgPT09IDB4MUUpIHJldHVybiA0O1xuICByZXR1cm4gYnl0ZSA+PiA2ID09PSAweDAyID8gLTEgOiAtMjtcbn1cblxuLy8gQ2hlY2tzIGF0IG1vc3QgMyBieXRlcyBhdCB0aGUgZW5kIG9mIGEgQnVmZmVyIGluIG9yZGVyIHRvIGRldGVjdCBhblxuLy8gaW5jb21wbGV0ZSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3Rlci4gVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyAoMiwgMywgb3IgNClcbi8vIG5lZWRlZCB0byBjb21wbGV0ZSB0aGUgVVRGLTggY2hhcmFjdGVyIChpZiBhcHBsaWNhYmxlKSBhcmUgcmV0dXJuZWQuXG5mdW5jdGlvbiB1dGY4Q2hlY2tJbmNvbXBsZXRlKHNlbGYsIGJ1ZiwgaSkge1xuICB2YXIgaiA9IGJ1Zi5sZW5ndGggLSAxO1xuICBpZiAoaiA8IGkpIHJldHVybiAwO1xuICB2YXIgbmIgPSB1dGY4Q2hlY2tCeXRlKGJ1ZltqXSk7XG4gIGlmIChuYiA+PSAwKSB7XG4gICAgaWYgKG5iID4gMCkgc2VsZi5sYXN0TmVlZCA9IG5iIC0gMTtcbiAgICByZXR1cm4gbmI7XG4gIH1cbiAgaWYgKC0taiA8IGkgfHwgbmIgPT09IC0yKSByZXR1cm4gMDtcbiAgbmIgPSB1dGY4Q2hlY2tCeXRlKGJ1ZltqXSk7XG4gIGlmIChuYiA+PSAwKSB7XG4gICAgaWYgKG5iID4gMCkgc2VsZi5sYXN0TmVlZCA9IG5iIC0gMjtcbiAgICByZXR1cm4gbmI7XG4gIH1cbiAgaWYgKC0taiA8IGkgfHwgbmIgPT09IC0yKSByZXR1cm4gMDtcbiAgbmIgPSB1dGY4Q2hlY2tCeXRlKGJ1ZltqXSk7XG4gIGlmIChuYiA+PSAwKSB7XG4gICAgaWYgKG5iID4gMCkge1xuICAgICAgaWYgKG5iID09PSAyKSBuYiA9IDA7ZWxzZSBzZWxmLmxhc3ROZWVkID0gbmIgLSAzO1xuICAgIH1cbiAgICByZXR1cm4gbmI7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vIFZhbGlkYXRlcyBhcyBtYW55IGNvbnRpbnVhdGlvbiBieXRlcyBmb3IgYSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3RlciBhc1xuLy8gbmVlZGVkIG9yIGFyZSBhdmFpbGFibGUuIElmIHdlIHNlZSBhIG5vbi1jb250aW51YXRpb24gYnl0ZSB3aGVyZSB3ZSBleHBlY3Rcbi8vIG9uZSwgd2UgXCJyZXBsYWNlXCIgdGhlIHZhbGlkYXRlZCBjb250aW51YXRpb24gYnl0ZXMgd2UndmUgc2VlbiBzbyBmYXIgd2l0aFxuLy8gYSBzaW5nbGUgVVRGLTggcmVwbGFjZW1lbnQgY2hhcmFjdGVyICgnXFx1ZmZmZCcpLCB0byBtYXRjaCB2OCdzIFVURi04IGRlY29kaW5nXG4vLyBiZWhhdmlvci4gVGhlIGNvbnRpbnVhdGlvbiBieXRlIGNoZWNrIGlzIGluY2x1ZGVkIHRocmVlIHRpbWVzIGluIHRoZSBjYXNlXG4vLyB3aGVyZSBhbGwgb2YgdGhlIGNvbnRpbnVhdGlvbiBieXRlcyBmb3IgYSBjaGFyYWN0ZXIgZXhpc3QgaW4gdGhlIHNhbWUgYnVmZmVyLlxuLy8gSXQgaXMgYWxzbyBkb25lIHRoaXMgd2F5IGFzIGEgc2xpZ2h0IHBlcmZvcm1hbmNlIGluY3JlYXNlIGluc3RlYWQgb2YgdXNpbmcgYVxuLy8gbG9vcC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0V4dHJhQnl0ZXMoc2VsZiwgYnVmLCBwKSB7XG4gIGlmICgoYnVmWzBdICYgMHhDMCkgIT09IDB4ODApIHtcbiAgICBzZWxmLmxhc3ROZWVkID0gMDtcbiAgICByZXR1cm4gJ1xcdWZmZmQnO1xuICB9XG4gIGlmIChzZWxmLmxhc3ROZWVkID4gMSAmJiBidWYubGVuZ3RoID4gMSkge1xuICAgIGlmICgoYnVmWzFdICYgMHhDMCkgIT09IDB4ODApIHtcbiAgICAgIHNlbGYubGFzdE5lZWQgPSAxO1xuICAgICAgcmV0dXJuICdcXHVmZmZkJztcbiAgICB9XG4gICAgaWYgKHNlbGYubGFzdE5lZWQgPiAyICYmIGJ1Zi5sZW5ndGggPiAyKSB7XG4gICAgICBpZiAoKGJ1ZlsyXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgICAgIHNlbGYubGFzdE5lZWQgPSAyO1xuICAgICAgICByZXR1cm4gJ1xcdWZmZmQnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBBdHRlbXB0cyB0byBjb21wbGV0ZSBhIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyIHVzaW5nIGJ5dGVzIGZyb20gYSBCdWZmZXIuXG5mdW5jdGlvbiB1dGY4RmlsbExhc3QoYnVmKSB7XG4gIHZhciBwID0gdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkO1xuICB2YXIgciA9IHV0ZjhDaGVja0V4dHJhQnl0ZXModGhpcywgYnVmLCBwKTtcbiAgaWYgKHIgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHI7XG4gIGlmICh0aGlzLmxhc3ROZWVkIDw9IGJ1Zi5sZW5ndGgpIHtcbiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCBwLCAwLCB0aGlzLmxhc3ROZWVkKTtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLCAwLCB0aGlzLmxhc3RUb3RhbCk7XG4gIH1cbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgcCwgMCwgYnVmLmxlbmd0aCk7XG4gIHRoaXMubGFzdE5lZWQgLT0gYnVmLmxlbmd0aDtcbn1cblxuLy8gUmV0dXJucyBhbGwgY29tcGxldGUgVVRGLTggY2hhcmFjdGVycyBpbiBhIEJ1ZmZlci4gSWYgdGhlIEJ1ZmZlciBlbmRlZCBvbiBhXG4vLyBwYXJ0aWFsIGNoYXJhY3RlciwgdGhlIGNoYXJhY3RlcidzIGJ5dGVzIGFyZSBidWZmZXJlZCB1bnRpbCB0aGUgcmVxdWlyZWRcbi8vIG51bWJlciBvZiBieXRlcyBhcmUgYXZhaWxhYmxlLlxuZnVuY3Rpb24gdXRmOFRleHQoYnVmLCBpKSB7XG4gIHZhciB0b3RhbCA9IHV0ZjhDaGVja0luY29tcGxldGUodGhpcywgYnVmLCBpKTtcbiAgaWYgKCF0aGlzLmxhc3ROZWVkKSByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGY4JywgaSk7XG4gIHRoaXMubGFzdFRvdGFsID0gdG90YWw7XG4gIHZhciBlbmQgPSBidWYubGVuZ3RoIC0gKHRvdGFsIC0gdGhpcy5sYXN0TmVlZCk7XG4gIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIDAsIGVuZCk7XG4gIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjgnLCBpLCBlbmQpO1xufVxuXG4vLyBGb3IgVVRGLTgsIGEgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIGlzIGFkZGVkIHdoZW4gZW5kaW5nIG9uIGEgcGFydGlhbFxuLy8gY2hhcmFjdGVyLlxuZnVuY3Rpb24gdXRmOEVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkgcmV0dXJuIHIgKyAnXFx1ZmZmZCc7XG4gIHJldHVybiByO1xufVxuXG4vLyBVVEYtMTZMRSB0eXBpY2FsbHkgbmVlZHMgdHdvIGJ5dGVzIHBlciBjaGFyYWN0ZXIsIGJ1dCBldmVuIGlmIHdlIGhhdmUgYW4gZXZlblxuLy8gbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSwgd2UgbmVlZCB0byBjaGVjayBpZiB3ZSBlbmQgb24gYSBsZWFkaW5nL2hpZ2hcbi8vIHN1cnJvZ2F0ZS4gSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0IHR3byBieXRlcyBpbiBvcmRlciB0b1xuLy8gZGVjb2RlIHRoZSBsYXN0IGNoYXJhY3RlciBwcm9wZXJseS5cbmZ1bmN0aW9uIHV0ZjE2VGV4dChidWYsIGkpIHtcbiAgaWYgKChidWYubGVuZ3RoIC0gaSkgJSAyID09PSAwKSB7XG4gICAgdmFyIHIgPSBidWYudG9TdHJpbmcoJ3V0ZjE2bGUnLCBpKTtcbiAgICBpZiAocikge1xuICAgICAgdmFyIGMgPSByLmNoYXJDb2RlQXQoci5sZW5ndGggLSAxKTtcbiAgICAgIGlmIChjID49IDB4RDgwMCAmJiBjIDw9IDB4REJGRikge1xuICAgICAgICB0aGlzLmxhc3ROZWVkID0gMjtcbiAgICAgICAgdGhpcy5sYXN0VG90YWwgPSA0O1xuICAgICAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAyXTtcbiAgICAgICAgdGhpcy5sYXN0Q2hhclsxXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gICAgICAgIHJldHVybiByLnNsaWNlKDAsIC0xKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdGhpcy5sYXN0TmVlZCA9IDE7XG4gIHRoaXMubGFzdFRvdGFsID0gMjtcbiAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjE2bGUnLCBpLCBidWYubGVuZ3RoIC0gMSk7XG59XG5cbi8vIEZvciBVVEYtMTZMRSB3ZSBkbyBub3QgZXhwbGljaXRseSBhcHBlbmQgc3BlY2lhbCByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGlmIHdlXG4vLyBlbmQgb24gYSBwYXJ0aWFsIGNoYXJhY3Rlciwgd2Ugc2ltcGx5IGxldCB2OCBoYW5kbGUgdGhhdC5cbmZ1bmN0aW9uIHV0ZjE2RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSB7XG4gICAgdmFyIGVuZCA9IHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZDtcbiAgICByZXR1cm4gciArIHRoaXMubGFzdENoYXIudG9TdHJpbmcoJ3V0ZjE2bGUnLCAwLCBlbmQpO1xuICB9XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRUZXh0KGJ1ZiwgaSkge1xuICB2YXIgbiA9IChidWYubGVuZ3RoIC0gaSkgJSAzO1xuICBpZiAobiA9PT0gMCkgcmV0dXJuIGJ1Zi50b1N0cmluZygnYmFzZTY0JywgaSk7XG4gIHRoaXMubGFzdE5lZWQgPSAzIC0gbjtcbiAgdGhpcy5sYXN0VG90YWwgPSAzO1xuICBpZiAobiA9PT0gMSkge1xuICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICB9IGVsc2Uge1xuICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdO1xuICAgIHRoaXMubGFzdENoYXJbMV0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICB9XG4gIHJldHVybiBidWYudG9TdHJpbmcoJ2Jhc2U2NCcsIGksIGJ1Zi5sZW5ndGggLSBuKTtcbn1cblxuZnVuY3Rpb24gYmFzZTY0RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSByZXR1cm4gciArIHRoaXMubGFzdENoYXIudG9TdHJpbmcoJ2Jhc2U2NCcsIDAsIDMgLSB0aGlzLmxhc3ROZWVkKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vIFBhc3MgYnl0ZXMgb24gdGhyb3VnaCBmb3Igc2luZ2xlLWJ5dGUgZW5jb2RpbmdzIChlLmcuIGFzY2lpLCBsYXRpbjEsIGhleClcbmZ1bmN0aW9uIHNpbXBsZVdyaXRlKGJ1Zikge1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVFbmQoYnVmKSB7XG4gIHJldHVybiBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xufSIsIid1c2Ugc3RyaWN0J1xuXG4vKiByZXBsYWNlbWVudCBzdGFydCAqL1xuXG5jb25zdCBwcm9jZXNzID0gcmVxdWlyZSgncHJvY2Vzcy8nKVxuXG4vKiByZXBsYWNlbWVudCBlbmQgKi9cblxuY29uc3QgeyBQcm9taXNlUHJvdG90eXBlVGhlbiwgU3ltYm9sQXN5bmNJdGVyYXRvciwgU3ltYm9sSXRlcmF0b3IgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvcHJpbW9yZGlhbHMnKVxuY29uc3QgeyBCdWZmZXIgfSA9IHJlcXVpcmUoJ2J1ZmZlcicpXG5jb25zdCB7IEVSUl9JTlZBTElEX0FSR19UWVBFLCBFUlJfU1RSRUFNX05VTExfVkFMVUVTIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL2Vycm9ycycpLmNvZGVzXG5mdW5jdGlvbiBmcm9tKFJlYWRhYmxlLCBpdGVyYWJsZSwgb3B0cykge1xuICBsZXQgaXRlcmF0b3JcbiAgaWYgKHR5cGVvZiBpdGVyYWJsZSA9PT0gJ3N0cmluZycgfHwgaXRlcmFibGUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICByZXR1cm4gbmV3IFJlYWRhYmxlKHtcbiAgICAgIG9iamVjdE1vZGU6IHRydWUsXG4gICAgICAuLi5vcHRzLFxuICAgICAgcmVhZCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKGl0ZXJhYmxlKVxuICAgICAgICB0aGlzLnB1c2gobnVsbClcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGxldCBpc0FzeW5jXG4gIGlmIChpdGVyYWJsZSAmJiBpdGVyYWJsZVtTeW1ib2xBc3luY0l0ZXJhdG9yXSkge1xuICAgIGlzQXN5bmMgPSB0cnVlXG4gICAgaXRlcmF0b3IgPSBpdGVyYWJsZVtTeW1ib2xBc3luY0l0ZXJhdG9yXSgpXG4gIH0gZWxzZSBpZiAoaXRlcmFibGUgJiYgaXRlcmFibGVbU3ltYm9sSXRlcmF0b3JdKSB7XG4gICAgaXNBc3luYyA9IGZhbHNlXG4gICAgaXRlcmF0b3IgPSBpdGVyYWJsZVtTeW1ib2xJdGVyYXRvcl0oKVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnaXRlcmFibGUnLCBbJ0l0ZXJhYmxlJ10sIGl0ZXJhYmxlKVxuICB9XG4gIGNvbnN0IHJlYWRhYmxlID0gbmV3IFJlYWRhYmxlKHtcbiAgICBvYmplY3RNb2RlOiB0cnVlLFxuICAgIGhpZ2hXYXRlck1hcms6IDEsXG4gICAgLy8gVE9ETyhyb25hZyk6IFdoYXQgb3B0aW9ucyBzaG91bGQgYmUgYWxsb3dlZD9cbiAgICAuLi5vcHRzXG4gIH0pXG5cbiAgLy8gRmxhZyB0byBwcm90ZWN0IGFnYWluc3QgX3JlYWRcbiAgLy8gYmVpbmcgY2FsbGVkIGJlZm9yZSBsYXN0IGl0ZXJhdGlvbiBjb21wbGV0aW9uLlxuICBsZXQgcmVhZGluZyA9IGZhbHNlXG4gIHJlYWRhYmxlLl9yZWFkID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVhZGluZykge1xuICAgICAgcmVhZGluZyA9IHRydWVcbiAgICAgIG5leHQoKVxuICAgIH1cbiAgfVxuICByZWFkYWJsZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnJvciwgY2IpIHtcbiAgICBQcm9taXNlUHJvdG90eXBlVGhlbihcbiAgICAgIGNsb3NlKGVycm9yKSxcbiAgICAgICgpID0+IHByb2Nlc3MubmV4dFRpY2soY2IsIGVycm9yKSxcbiAgICAgIC8vIG5leHRUaWNrIGlzIGhlcmUgaW4gY2FzZSBjYiB0aHJvd3NcbiAgICAgIChlKSA9PiBwcm9jZXNzLm5leHRUaWNrKGNiLCBlIHx8IGVycm9yKVxuICAgIClcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBjbG9zZShlcnJvcikge1xuICAgIGNvbnN0IGhhZEVycm9yID0gZXJyb3IgIT09IHVuZGVmaW5lZCAmJiBlcnJvciAhPT0gbnVsbFxuICAgIGNvbnN0IGhhc1Rocm93ID0gdHlwZW9mIGl0ZXJhdG9yLnRocm93ID09PSAnZnVuY3Rpb24nXG4gICAgaWYgKGhhZEVycm9yICYmIGhhc1Rocm93KSB7XG4gICAgICBjb25zdCB7IHZhbHVlLCBkb25lIH0gPSBhd2FpdCBpdGVyYXRvci50aHJvdyhlcnJvcilcbiAgICAgIGF3YWl0IHZhbHVlXG4gICAgICBpZiAoZG9uZSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBpdGVyYXRvci5yZXR1cm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IGF3YWl0IGl0ZXJhdG9yLnJldHVybigpXG4gICAgICBhd2FpdCB2YWx1ZVxuICAgIH1cbiAgfVxuICBhc3luYyBmdW5jdGlvbiBuZXh0KCkge1xuICAgIGZvciAoOzspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIGRvbmUgfSA9IGlzQXN5bmMgPyBhd2FpdCBpdGVyYXRvci5uZXh0KCkgOiBpdGVyYXRvci5uZXh0KClcbiAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICByZWFkYWJsZS5wdXNoKG51bGwpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcmVzID0gdmFsdWUgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicgPyBhd2FpdCB2YWx1ZSA6IHZhbHVlXG4gICAgICAgICAgaWYgKHJlcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmVhZGluZyA9IGZhbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUygpXG4gICAgICAgICAgfSBlbHNlIGlmIChyZWFkYWJsZS5wdXNoKHJlcykpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlYWRpbmcgPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJlYWRhYmxlLmRlc3Ryb3koZXJyKVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlYWRhYmxlXG59XG5tb2R1bGUuZXhwb3J0cyA9IGZyb21cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCdcblxuLyogcmVwbGFjZW1lbnQgc3RhcnQgKi9cblxuY29uc3QgcHJvY2VzcyA9IHJlcXVpcmUoJ3Byb2Nlc3MvJylcblxuLyogcmVwbGFjZW1lbnQgZW5kICovXG5cbmNvbnN0IHtcbiAgQXJyYXlQcm90b3R5cGVJbmRleE9mLFxuICBOdW1iZXJJc0ludGVnZXIsXG4gIE51bWJlcklzTmFOLFxuICBOdW1iZXJQYXJzZUludCxcbiAgT2JqZWN0RGVmaW5lUHJvcGVydGllcyxcbiAgT2JqZWN0S2V5cyxcbiAgT2JqZWN0U2V0UHJvdG90eXBlT2YsXG4gIFByb21pc2UsXG4gIFNhZmVTZXQsXG4gIFN5bWJvbEFzeW5jRGlzcG9zZSxcbiAgU3ltYm9sQXN5bmNJdGVyYXRvcixcbiAgU3ltYm9sXG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWRhYmxlXG5SZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZVxuY29uc3QgeyBFdmVudEVtaXR0ZXI6IEVFIH0gPSByZXF1aXJlKCdldmVudHMnKVxuY29uc3QgeyBTdHJlYW0sIHByZXBlbmRMaXN0ZW5lciB9ID0gcmVxdWlyZSgnLi9sZWdhY3knKVxuY29uc3QgeyBCdWZmZXIgfSA9IHJlcXVpcmUoJ2J1ZmZlcicpXG5jb25zdCB7IGFkZEFib3J0U2lnbmFsIH0gPSByZXF1aXJlKCcuL2FkZC1hYm9ydC1zaWduYWwnKVxuY29uc3QgZW9zID0gcmVxdWlyZSgnLi9lbmQtb2Ytc3RyZWFtJylcbmxldCBkZWJ1ZyA9IHJlcXVpcmUoJy4uLy4uL291cnMvdXRpbCcpLmRlYnVnbG9nKCdzdHJlYW0nLCAoZm4pID0+IHtcbiAgZGVidWcgPSBmblxufSlcbmNvbnN0IEJ1ZmZlckxpc3QgPSByZXF1aXJlKCcuL2J1ZmZlcl9saXN0JylcbmNvbnN0IGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9kZXN0cm95JylcbmNvbnN0IHsgZ2V0SGlnaFdhdGVyTWFyaywgZ2V0RGVmYXVsdEhpZ2hXYXRlck1hcmsgfSA9IHJlcXVpcmUoJy4vc3RhdGUnKVxuY29uc3Qge1xuICBhZ2dyZWdhdGVUd29FcnJvcnMsXG4gIGNvZGVzOiB7XG4gICAgRVJSX0lOVkFMSURfQVJHX1RZUEUsXG4gICAgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsXG4gICAgRVJSX09VVF9PRl9SQU5HRSxcbiAgICBFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GLFxuICAgIEVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlRcbiAgfSxcbiAgQWJvcnRFcnJvclxufSA9IHJlcXVpcmUoJy4uLy4uL291cnMvZXJyb3JzJylcbmNvbnN0IHsgdmFsaWRhdGVPYmplY3QgfSA9IHJlcXVpcmUoJy4uL3ZhbGlkYXRvcnMnKVxuY29uc3Qga1BhdXNlZCA9IFN5bWJvbCgna1BhdXNlZCcpXG5jb25zdCB7IFN0cmluZ0RlY29kZXIgfSA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpXG5jb25zdCBmcm9tID0gcmVxdWlyZSgnLi9mcm9tJylcbk9iamVjdFNldFByb3RvdHlwZU9mKFJlYWRhYmxlLnByb3RvdHlwZSwgU3RyZWFtLnByb3RvdHlwZSlcbk9iamVjdFNldFByb3RvdHlwZU9mKFJlYWRhYmxlLCBTdHJlYW0pXG5jb25zdCBub3AgPSAoKSA9PiB7fVxuY29uc3QgeyBlcnJvck9yRGVzdHJveSB9ID0gZGVzdHJveUltcGxcbmNvbnN0IGtPYmplY3RNb2RlID0gMSA8PCAwXG5jb25zdCBrRW5kZWQgPSAxIDw8IDFcbmNvbnN0IGtFbmRFbWl0dGVkID0gMSA8PCAyXG5jb25zdCBrUmVhZGluZyA9IDEgPDwgM1xuY29uc3Qga0NvbnN0cnVjdGVkID0gMSA8PCA0XG5jb25zdCBrU3luYyA9IDEgPDwgNVxuY29uc3Qga05lZWRSZWFkYWJsZSA9IDEgPDwgNlxuY29uc3Qga0VtaXR0ZWRSZWFkYWJsZSA9IDEgPDwgN1xuY29uc3Qga1JlYWRhYmxlTGlzdGVuaW5nID0gMSA8PCA4XG5jb25zdCBrUmVzdW1lU2NoZWR1bGVkID0gMSA8PCA5XG5jb25zdCBrRXJyb3JFbWl0dGVkID0gMSA8PCAxMFxuY29uc3Qga0VtaXRDbG9zZSA9IDEgPDwgMTFcbmNvbnN0IGtBdXRvRGVzdHJveSA9IDEgPDwgMTJcbmNvbnN0IGtEZXN0cm95ZWQgPSAxIDw8IDEzXG5jb25zdCBrQ2xvc2VkID0gMSA8PCAxNFxuY29uc3Qga0Nsb3NlRW1pdHRlZCA9IDEgPDwgMTVcbmNvbnN0IGtNdWx0aUF3YWl0RHJhaW4gPSAxIDw8IDE2XG5jb25zdCBrUmVhZGluZ01vcmUgPSAxIDw8IDE3XG5jb25zdCBrRGF0YUVtaXR0ZWQgPSAxIDw8IDE4XG5cbi8vIFRPRE8oYmVuamFtaW5ncikgaXQgaXMgbGlrZWx5IHNsb3dlciB0byBkbyBpdCB0aGlzIHdheSB0aGFuIHdpdGggZnJlZSBmdW5jdGlvbnNcbmZ1bmN0aW9uIG1ha2VCaXRNYXBEZXNjcmlwdG9yKGJpdCkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiAodGhpcy5zdGF0ZSAmIGJpdCkgIT09IDBcbiAgICB9LFxuICAgIHNldCh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlKSB0aGlzLnN0YXRlIHw9IGJpdFxuICAgICAgZWxzZSB0aGlzLnN0YXRlICY9IH5iaXRcbiAgICB9XG4gIH1cbn1cbk9iamVjdERlZmluZVByb3BlcnRpZXMoUmVhZGFibGVTdGF0ZS5wcm90b3R5cGUsIHtcbiAgb2JqZWN0TW9kZTogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa09iamVjdE1vZGUpLFxuICBlbmRlZDogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa0VuZGVkKSxcbiAgZW5kRW1pdHRlZDogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa0VuZEVtaXR0ZWQpLFxuICByZWFkaW5nOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrUmVhZGluZyksXG4gIC8vIFN0cmVhbSBpcyBzdGlsbCBiZWluZyBjb25zdHJ1Y3RlZCBhbmQgY2Fubm90IGJlXG4gIC8vIGRlc3Ryb3llZCB1bnRpbCBjb25zdHJ1Y3Rpb24gZmluaXNoZWQgb3IgZmFpbGVkLlxuICAvLyBBc3luYyBjb25zdHJ1Y3Rpb24gaXMgb3B0IGluLCB0aGVyZWZvcmUgd2Ugc3RhcnQgYXNcbiAgLy8gY29uc3RydWN0ZWQuXG4gIGNvbnN0cnVjdGVkOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrQ29uc3RydWN0ZWQpLFxuICAvLyBBIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBldmVudCAncmVhZGFibGUnLydkYXRhJyBpcyBlbWl0dGVkXG4gIC8vIGltbWVkaWF0ZWx5LCBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlXG4gIC8vIGFueSBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCByZWFkIGNhbGwuXG4gIHN5bmM6IG1ha2VCaXRNYXBEZXNjcmlwdG9yKGtTeW5jKSxcbiAgLy8gV2hlbmV2ZXIgd2UgcmV0dXJuIG51bGwsIHRoZW4gd2Ugc2V0IGEgZmxhZyB0byBzYXlcbiAgLy8gdGhhdCB3ZSdyZSBhd2FpdGluZyBhICdyZWFkYWJsZScgZXZlbnQgZW1pc3Npb24uXG4gIG5lZWRSZWFkYWJsZTogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa05lZWRSZWFkYWJsZSksXG4gIGVtaXR0ZWRSZWFkYWJsZTogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa0VtaXR0ZWRSZWFkYWJsZSksXG4gIHJlYWRhYmxlTGlzdGVuaW5nOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrUmVhZGFibGVMaXN0ZW5pbmcpLFxuICByZXN1bWVTY2hlZHVsZWQ6IG1ha2VCaXRNYXBEZXNjcmlwdG9yKGtSZXN1bWVTY2hlZHVsZWQpLFxuICAvLyBUcnVlIGlmIHRoZSBlcnJvciB3YXMgYWxyZWFkeSBlbWl0dGVkIGFuZCBzaG91bGQgbm90IGJlIHRocm93biBhZ2Fpbi5cbiAgZXJyb3JFbWl0dGVkOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrRXJyb3JFbWl0dGVkKSxcbiAgZW1pdENsb3NlOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrRW1pdENsb3NlKSxcbiAgYXV0b0Rlc3Ryb3k6IG1ha2VCaXRNYXBEZXNjcmlwdG9yKGtBdXRvRGVzdHJveSksXG4gIC8vIEhhcyBpdCBiZWVuIGRlc3Ryb3llZC5cbiAgZGVzdHJveWVkOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrRGVzdHJveWVkKSxcbiAgLy8gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHN0cmVhbSBoYXMgZmluaXNoZWQgZGVzdHJveWluZy5cbiAgY2xvc2VkOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrQ2xvc2VkKSxcbiAgLy8gVHJ1ZSBpZiBjbG9zZSBoYXMgYmVlbiBlbWl0dGVkIG9yIHdvdWxkIGhhdmUgYmVlbiBlbWl0dGVkXG4gIC8vIGRlcGVuZGluZyBvbiBlbWl0Q2xvc2UuXG4gIGNsb3NlRW1pdHRlZDogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa0Nsb3NlRW1pdHRlZCksXG4gIG11bHRpQXdhaXREcmFpbjogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa011bHRpQXdhaXREcmFpbiksXG4gIC8vIElmIHRydWUsIGEgbWF5YmVSZWFkTW9yZSBoYXMgYmVlbiBzY2hlZHVsZWQuXG4gIHJlYWRpbmdNb3JlOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrUmVhZGluZ01vcmUpLFxuICBkYXRhRW1pdHRlZDogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa0RhdGFFbWl0dGVkKVxufSlcbmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtLCBpc0R1cGxleCkge1xuICAvLyBEdXBsZXggc3RyZWFtcyBhcmUgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGJ1dCBzaGFyZVxuICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC5cbiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnRcbiAgLy8gdmFsdWVzIGZvciB0aGUgcmVhZGFibGUgYW5kIHRoZSB3cml0YWJsZSBzaWRlcyBvZiB0aGUgZHVwbGV4IHN0cmVhbS5cbiAgLy8gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgcHJvdmlkZWQgc2VwYXJhdGVseSBhcyByZWFkYWJsZVhYWCBhbmQgd3JpdGFibGVYWFguXG4gIGlmICh0eXBlb2YgaXNEdXBsZXggIT09ICdib29sZWFuJykgaXNEdXBsZXggPSBzdHJlYW0gaW5zdGFuY2VvZiByZXF1aXJlKCcuL2R1cGxleCcpXG5cbiAgLy8gQml0IG1hcCBmaWVsZCB0byBzdG9yZSBSZWFkYWJsZVN0YXRlIG1vcmUgZWZmY2llbnRseSB3aXRoIDEgYml0IHBlciBmaWVsZFxuICAvLyBpbnN0ZWFkIG9mIGEgVjggc2xvdCBwZXIgZmllbGQuXG4gIHRoaXMuc3RhdGUgPSBrRW1pdENsb3NlIHwga0F1dG9EZXN0cm95IHwga0NvbnN0cnVjdGVkIHwga1N5bmNcbiAgLy8gT2JqZWN0IHN0cmVhbSBmbGFnLiBVc2VkIHRvIG1ha2UgcmVhZChuKSBpZ25vcmUgbiBhbmQgdG9cbiAgLy8gbWFrZSBhbGwgdGhlIGJ1ZmZlciBtZXJnaW5nIGFuZCBsZW5ndGggY2hlY2tzIGdvIGF3YXkuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMub2JqZWN0TW9kZSkgdGhpcy5zdGF0ZSB8PSBrT2JqZWN0TW9kZVxuICBpZiAoaXNEdXBsZXggJiYgb3B0aW9ucyAmJiBvcHRpb25zLnJlYWRhYmxlT2JqZWN0TW9kZSkgdGhpcy5zdGF0ZSB8PSBrT2JqZWN0TW9kZVxuXG4gIC8vIFRoZSBwb2ludCBhdCB3aGljaCBpdCBzdG9wcyBjYWxsaW5nIF9yZWFkKCkgdG8gZmlsbCB0aGUgYnVmZmVyXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgXCJkb24ndCBjYWxsIF9yZWFkIHByZWVtcHRpdmVseSBldmVyXCJcbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gb3B0aW9uc1xuICAgID8gZ2V0SGlnaFdhdGVyTWFyayh0aGlzLCBvcHRpb25zLCAncmVhZGFibGVIaWdoV2F0ZXJNYXJrJywgaXNEdXBsZXgpXG4gICAgOiBnZXREZWZhdWx0SGlnaFdhdGVyTWFyayhmYWxzZSlcblxuICAvLyBBIGxpbmtlZCBsaXN0IGlzIHVzZWQgdG8gc3RvcmUgZGF0YSBjaHVua3MgaW5zdGVhZCBvZiBhbiBhcnJheSBiZWNhdXNlIHRoZVxuICAvLyBsaW5rZWQgbGlzdCBjYW4gcmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhlIGJlZ2lubmluZyBmYXN0ZXIgdGhhblxuICAvLyBhcnJheS5zaGlmdCgpLlxuICB0aGlzLmJ1ZmZlciA9IG5ldyBCdWZmZXJMaXN0KClcbiAgdGhpcy5sZW5ndGggPSAwXG4gIHRoaXMucGlwZXMgPSBbXVxuICB0aGlzLmZsb3dpbmcgPSBudWxsXG4gIHRoaXNba1BhdXNlZF0gPSBudWxsXG5cbiAgLy8gU2hvdWxkIGNsb3NlIGJlIGVtaXR0ZWQgb24gZGVzdHJveS4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5lbWl0Q2xvc2UgPT09IGZhbHNlKSB0aGlzLnN0YXRlICY9IH5rRW1pdENsb3NlXG5cbiAgLy8gU2hvdWxkIC5kZXN0cm95KCkgYmUgY2FsbGVkIGFmdGVyICdlbmQnIChhbmQgcG90ZW50aWFsbHkgJ2ZpbmlzaCcpLlxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmF1dG9EZXN0cm95ID09PSBmYWxzZSkgdGhpcy5zdGF0ZSAmPSB+a0F1dG9EZXN0cm95XG5cbiAgLy8gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHN0cmVhbSBoYXMgZXJyb3JlZC4gV2hlbiB0cnVlIG5vIGZ1cnRoZXJcbiAgLy8gX3JlYWQgY2FsbHMsICdkYXRhJyBvciAncmVhZGFibGUnIGV2ZW50cyBzaG91bGQgb2NjdXIuIFRoaXMgaXMgbmVlZGVkXG4gIC8vIHNpbmNlIHdoZW4gYXV0b0Rlc3Ryb3kgaXMgZGlzYWJsZWQgd2UgbmVlZCBhIHdheSB0byB0ZWxsIHdoZXRoZXIgdGhlXG4gIC8vIHN0cmVhbSBoYXMgZmFpbGVkLlxuICB0aGlzLmVycm9yZWQgPSBudWxsXG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSAob3B0aW9ucyAmJiBvcHRpb25zLmRlZmF1bHRFbmNvZGluZykgfHwgJ3V0ZjgnXG5cbiAgLy8gUmVmIHRoZSBwaXBlZCBkZXN0IHdoaWNoIHdlIG5lZWQgYSBkcmFpbiBldmVudCBvbiBpdFxuICAvLyB0eXBlOiBudWxsIHwgV3JpdGFibGUgfCBTZXQ8V3JpdGFibGU+LlxuICB0aGlzLmF3YWl0RHJhaW5Xcml0ZXJzID0gbnVsbFxuICB0aGlzLmRlY29kZXIgPSBudWxsXG4gIHRoaXMuZW5jb2RpbmcgPSBudWxsXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZW5jb2RpbmcpIHtcbiAgICB0aGlzLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihvcHRpb25zLmVuY29kaW5nKVxuICAgIHRoaXMuZW5jb2RpbmcgPSBvcHRpb25zLmVuY29kaW5nXG4gIH1cbn1cbmZ1bmN0aW9uIFJlYWRhYmxlKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlYWRhYmxlKSkgcmV0dXJuIG5ldyBSZWFkYWJsZShvcHRpb25zKVxuXG4gIC8vIENoZWNraW5nIGZvciBhIFN0cmVhbS5EdXBsZXggaW5zdGFuY2UgaXMgZmFzdGVyIGhlcmUgaW5zdGVhZCBvZiBpbnNpZGVcbiAgLy8gdGhlIFJlYWRhYmxlU3RhdGUgY29uc3RydWN0b3IsIGF0IGxlYXN0IHdpdGggVjggNi41LlxuICBjb25zdCBpc0R1cGxleCA9IHRoaXMgaW5zdGFuY2VvZiByZXF1aXJlKCcuL2R1cGxleCcpXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUgPSBuZXcgUmVhZGFibGVTdGF0ZShvcHRpb25zLCB0aGlzLCBpc0R1cGxleClcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMucmVhZCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fcmVhZCA9IG9wdGlvbnMucmVhZFxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmNvbnN0cnVjdCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fY29uc3RydWN0ID0gb3B0aW9ucy5jb25zdHJ1Y3RcbiAgICBpZiAob3B0aW9ucy5zaWduYWwgJiYgIWlzRHVwbGV4KSBhZGRBYm9ydFNpZ25hbChvcHRpb25zLnNpZ25hbCwgdGhpcylcbiAgfVxuICBTdHJlYW0uY2FsbCh0aGlzLCBvcHRpb25zKVxuICBkZXN0cm95SW1wbC5jb25zdHJ1Y3QodGhpcywgKCkgPT4ge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZSkge1xuICAgICAgbWF5YmVSZWFkTW9yZSh0aGlzLCB0aGlzLl9yZWFkYWJsZVN0YXRlKVxuICAgIH1cbiAgfSlcbn1cblJlYWRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveVxuUmVhZGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3lcblJlYWRhYmxlLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIGNiKGVycilcbn1cblJlYWRhYmxlLnByb3RvdHlwZVtFRS5jYXB0dXJlUmVqZWN0aW9uU3ltYm9sXSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgdGhpcy5kZXN0cm95KGVycilcbn1cblJlYWRhYmxlLnByb3RvdHlwZVtTeW1ib2xBc3luY0Rpc3Bvc2VdID0gZnVuY3Rpb24gKCkge1xuICBsZXQgZXJyb3JcbiAgaWYgKCF0aGlzLmRlc3Ryb3llZCkge1xuICAgIGVycm9yID0gdGhpcy5yZWFkYWJsZUVuZGVkID8gbnVsbCA6IG5ldyBBYm9ydEVycm9yKClcbiAgICB0aGlzLmRlc3Ryb3koZXJyb3IpXG4gIH1cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IGVvcyh0aGlzLCAoZXJyKSA9PiAoZXJyICYmIGVyciAhPT0gZXJyb3IgPyByZWplY3QoZXJyKSA6IHJlc29sdmUobnVsbCkpKSlcbn1cblxuLy8gTWFudWFsbHkgc2hvdmUgc29tZXRoaW5nIGludG8gdGhlIHJlYWQoKSBidWZmZXIuXG4vLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgaGlnaFdhdGVyTWFyayBoYXMgbm90IGJlZW4gaGl0IHlldCxcbi8vIHNpbWlsYXIgdG8gaG93IFdyaXRhYmxlLndyaXRlKCkgcmV0dXJucyB0cnVlIGlmIHlvdSBzaG91bGRcbi8vIHdyaXRlKCkgc29tZSBtb3JlLlxuUmVhZGFibGUucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBlbmNvZGluZywgZmFsc2UpXG59XG5cbi8vIFVuc2hpZnQgc2hvdWxkICphbHdheXMqIGJlIHNvbWV0aGluZyBkaXJlY3RseSBvdXQgb2YgcmVhZCgpLlxuUmVhZGFibGUucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBlbmNvZGluZywgdHJ1ZSlcbn1cbmZ1bmN0aW9uIHJlYWRhYmxlQWRkQ2h1bmsoc3RyZWFtLCBjaHVuaywgZW5jb2RpbmcsIGFkZFRvRnJvbnQpIHtcbiAgZGVidWcoJ3JlYWRhYmxlQWRkQ2h1bmsnLCBjaHVuaylcbiAgY29uc3Qgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGVcbiAgbGV0IGVyclxuICBpZiAoKHN0YXRlLnN0YXRlICYga09iamVjdE1vZGUpID09PSAwKSB7XG4gICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgc3RhdGUuZGVmYXVsdEVuY29kaW5nXG4gICAgICBpZiAoc3RhdGUuZW5jb2RpbmcgIT09IGVuY29kaW5nKSB7XG4gICAgICAgIGlmIChhZGRUb0Zyb250ICYmIHN0YXRlLmVuY29kaW5nKSB7XG4gICAgICAgICAgLy8gV2hlbiB1bnNoaWZ0aW5nLCBpZiBzdGF0ZS5lbmNvZGluZyBpcyBzZXQsIHdlIGhhdmUgdG8gc2F2ZVxuICAgICAgICAgIC8vIHRoZSBzdHJpbmcgaW4gdGhlIEJ1ZmZlckxpc3Qgd2l0aCB0aGUgc3RhdGUgZW5jb2RpbmcuXG4gICAgICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpLnRvU3RyaW5nKHN0YXRlLmVuY29kaW5nKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKVxuICAgICAgICAgIGVuY29kaW5nID0gJydcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2h1bmsgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgIGVuY29kaW5nID0gJydcbiAgICB9IGVsc2UgaWYgKFN0cmVhbS5faXNVaW50OEFycmF5KGNodW5rKSkge1xuICAgICAgY2h1bmsgPSBTdHJlYW0uX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuaylcbiAgICAgIGVuY29kaW5nID0gJydcbiAgICB9IGVsc2UgaWYgKGNodW5rICE9IG51bGwpIHtcbiAgICAgIGVyciA9IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnY2h1bmsnLCBbJ3N0cmluZycsICdCdWZmZXInLCAnVWludDhBcnJheSddLCBjaHVuaylcbiAgICB9XG4gIH1cbiAgaWYgKGVycikge1xuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXJyKVxuICB9IGVsc2UgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgc3RhdGUuc3RhdGUgJj0gfmtSZWFkaW5nXG4gICAgb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKVxuICB9IGVsc2UgaWYgKChzdGF0ZS5zdGF0ZSAmIGtPYmplY3RNb2RlKSAhPT0gMCB8fCAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoID4gMCkpIHtcbiAgICBpZiAoYWRkVG9Gcm9udCkge1xuICAgICAgaWYgKChzdGF0ZS5zdGF0ZSAmIGtFbmRFbWl0dGVkKSAhPT0gMCkgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBuZXcgRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCgpKVxuICAgICAgZWxzZSBpZiAoc3RhdGUuZGVzdHJveWVkIHx8IHN0YXRlLmVycm9yZWQpIHJldHVybiBmYWxzZVxuICAgICAgZWxzZSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgdHJ1ZSlcbiAgICB9IGVsc2UgaWYgKHN0YXRlLmVuZGVkKSB7XG4gICAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIG5ldyBFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GKCkpXG4gICAgfSBlbHNlIGlmIChzdGF0ZS5kZXN0cm95ZWQgfHwgc3RhdGUuZXJyb3JlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnN0YXRlICY9IH5rUmVhZGluZ1xuICAgICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIWVuY29kaW5nKSB7XG4gICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuaylcbiAgICAgICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsubGVuZ3RoICE9PSAwKSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpXG4gICAgICAgIGVsc2UgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkge1xuICAgIHN0YXRlLnN0YXRlICY9IH5rUmVhZGluZ1xuICAgIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSlcbiAgfVxuXG4gIC8vIFdlIGNhbiBwdXNoIG1vcmUgZGF0YSBpZiB3ZSBhcmUgYmVsb3cgdGhlIGhpZ2hXYXRlck1hcmsuXG4gIC8vIEFsc28sIGlmIHdlIGhhdmUgbm8gZGF0YSB5ZXQsIHdlIGNhbiBzdGFuZCBzb21lIG1vcmUgYnl0ZXMuXG4gIC8vIFRoaXMgaXMgdG8gd29yayBhcm91bmQgY2FzZXMgd2hlcmUgaHdtPTAsIHN1Y2ggYXMgdGhlIHJlcGwuXG4gIHJldHVybiAhc3RhdGUuZW5kZWQgJiYgKHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUubGVuZ3RoID09PSAwKVxufVxuZnVuY3Rpb24gYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGFkZFRvRnJvbnQpIHtcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmICFzdGF0ZS5zeW5jICYmIHN0cmVhbS5saXN0ZW5lckNvdW50KCdkYXRhJykgPiAwKSB7XG4gICAgLy8gVXNlIHRoZSBndWFyZCB0byBhdm9pZCBjcmVhdGluZyBgU2V0KClgIHJlcGVhdGVkbHlcbiAgICAvLyB3aGVuIHdlIGhhdmUgbXVsdGlwbGUgcGlwZXMuXG4gICAgaWYgKChzdGF0ZS5zdGF0ZSAmIGtNdWx0aUF3YWl0RHJhaW4pICE9PSAwKSB7XG4gICAgICBzdGF0ZS5hd2FpdERyYWluV3JpdGVycy5jbGVhcigpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmF3YWl0RHJhaW5Xcml0ZXJzID0gbnVsbFxuICAgIH1cbiAgICBzdGF0ZS5kYXRhRW1pdHRlZCA9IHRydWVcbiAgICBzdHJlYW0uZW1pdCgnZGF0YScsIGNodW5rKVxuICB9IGVsc2Uge1xuICAgIC8vIFVwZGF0ZSB0aGUgYnVmZmVyIGluZm8uXG4gICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoXG4gICAgaWYgKGFkZFRvRnJvbnQpIHN0YXRlLmJ1ZmZlci51bnNoaWZ0KGNodW5rKVxuICAgIGVsc2Ugc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspXG4gICAgaWYgKChzdGF0ZS5zdGF0ZSAmIGtOZWVkUmVhZGFibGUpICE9PSAwKSBlbWl0UmVhZGFibGUoc3RyZWFtKVxuICB9XG4gIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSlcbn1cblJlYWRhYmxlLnByb3RvdHlwZS5pc1BhdXNlZCA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlXG4gIHJldHVybiBzdGF0ZVtrUGF1c2VkXSA9PT0gdHJ1ZSB8fCBzdGF0ZS5mbG93aW5nID09PSBmYWxzZVxufVxuXG4vLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblJlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZyA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgY29uc3QgZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKGVuYylcbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyID0gZGVjb2RlclxuICAvLyBJZiBzZXRFbmNvZGluZyhudWxsKSwgZGVjb2Rlci5lbmNvZGluZyBlcXVhbHMgdXRmOC5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZyA9IHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlci5lbmNvZGluZ1xuICBjb25zdCBidWZmZXIgPSB0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlclxuICAvLyBJdGVyYXRlIG92ZXIgY3VycmVudCBidWZmZXIgdG8gY29udmVydCBhbHJlYWR5IHN0b3JlZCBCdWZmZXJzOlxuICBsZXQgY29udGVudCA9ICcnXG4gIGZvciAoY29uc3QgZGF0YSBvZiBidWZmZXIpIHtcbiAgICBjb250ZW50ICs9IGRlY29kZXIud3JpdGUoZGF0YSlcbiAgfVxuICBidWZmZXIuY2xlYXIoKVxuICBpZiAoY29udGVudCAhPT0gJycpIGJ1ZmZlci5wdXNoKGNvbnRlbnQpXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RoID0gY29udGVudC5sZW5ndGhcbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gRG9uJ3QgcmFpc2UgdGhlIGh3bSA+IDFHQi5cbmNvbnN0IE1BWF9IV00gPSAweDQwMDAwMDAwXG5mdW5jdGlvbiBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKSB7XG4gIGlmIChuID4gTUFYX0hXTSkge1xuICAgIHRocm93IG5ldyBFUlJfT1VUX09GX1JBTkdFKCdzaXplJywgJzw9IDFHaUInLCBuKVxuICB9IGVsc2Uge1xuICAgIC8vIEdldCB0aGUgbmV4dCBoaWdoZXN0IHBvd2VyIG9mIDIgdG8gcHJldmVudCBpbmNyZWFzaW5nIGh3bSBleGNlc3NpdmVseSBpblxuICAgIC8vIHRpbnkgYW1vdW50cy5cbiAgICBuLS1cbiAgICBuIHw9IG4gPj4+IDFcbiAgICBuIHw9IG4gPj4+IDJcbiAgICBuIHw9IG4gPj4+IDRcbiAgICBuIHw9IG4gPj4+IDhcbiAgICBuIHw9IG4gPj4+IDE2XG4gICAgbisrXG4gIH1cbiAgcmV0dXJuIG5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKSB7XG4gIGlmIChuIDw9IDAgfHwgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkpIHJldHVybiAwXG4gIGlmICgoc3RhdGUuc3RhdGUgJiBrT2JqZWN0TW9kZSkgIT09IDApIHJldHVybiAxXG4gIGlmIChOdW1iZXJJc05hTihuKSkge1xuICAgIC8vIE9ubHkgZmxvdyBvbmUgYnVmZmVyIGF0IGEgdGltZS5cbiAgICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGgpIHJldHVybiBzdGF0ZS5idWZmZXIuZmlyc3QoKS5sZW5ndGhcbiAgICByZXR1cm4gc3RhdGUubGVuZ3RoXG4gIH1cbiAgaWYgKG4gPD0gc3RhdGUubGVuZ3RoKSByZXR1cm4gblxuICByZXR1cm4gc3RhdGUuZW5kZWQgPyBzdGF0ZS5sZW5ndGggOiAwXG59XG5cbi8vIFlvdSBjYW4gb3ZlcnJpZGUgZWl0aGVyIHRoaXMgbWV0aG9kLCBvciB0aGUgYXN5bmMgX3JlYWQobikgYmVsb3cuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIGRlYnVnKCdyZWFkJywgbilcbiAgLy8gU2FtZSBhcyBwYXJzZUludCh1bmRlZmluZWQsIDEwKSwgaG93ZXZlciBWOCA3LjMgcGVyZm9ybWFuY2UgcmVncmVzc2VkXG4gIC8vIGluIHRoaXMgc2NlbmFyaW8sIHNvIHdlIGFyZSBkb2luZyBpdCBtYW51YWxseS5cbiAgaWYgKG4gPT09IHVuZGVmaW5lZCkge1xuICAgIG4gPSBOYU5cbiAgfSBlbHNlIGlmICghTnVtYmVySXNJbnRlZ2VyKG4pKSB7XG4gICAgbiA9IE51bWJlclBhcnNlSW50KG4sIDEwKVxuICB9XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZVxuICBjb25zdCBuT3JpZyA9IG5cblxuICAvLyBJZiB3ZSdyZSBhc2tpbmcgZm9yIG1vcmUgdGhhbiB0aGUgY3VycmVudCBod20sIHRoZW4gcmFpc2UgdGhlIGh3bS5cbiAgaWYgKG4gPiBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSBzdGF0ZS5oaWdoV2F0ZXJNYXJrID0gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobilcbiAgaWYgKG4gIT09IDApIHN0YXRlLnN0YXRlICY9IH5rRW1pdHRlZFJlYWRhYmxlXG5cbiAgLy8gSWYgd2UncmUgZG9pbmcgcmVhZCgwKSB0byB0cmlnZ2VyIGEgcmVhZGFibGUgZXZlbnQsIGJ1dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiBkYXRhIGluIHRoZSBidWZmZXIsIHRoZW4ganVzdCB0cmlnZ2VyXG4gIC8vIHRoZSAncmVhZGFibGUnIGV2ZW50IGFuZCBtb3ZlIG9uLlxuICBpZiAoXG4gICAgbiA9PT0gMCAmJlxuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSAmJlxuICAgICgoc3RhdGUuaGlnaFdhdGVyTWFyayAhPT0gMCA/IHN0YXRlLmxlbmd0aCA+PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrIDogc3RhdGUubGVuZ3RoID4gMCkgfHwgc3RhdGUuZW5kZWQpXG4gICkge1xuICAgIGRlYnVnKCdyZWFkOiBlbWl0UmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLmVuZGVkKVxuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpXG4gICAgZWxzZSBlbWl0UmVhZGFibGUodGhpcylcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIG4gPSBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKVxuXG4gIC8vIElmIHdlJ3ZlIGVuZGVkLCBhbmQgd2UncmUgbm93IGNsZWFyLCB0aGVuIGZpbmlzaCBpdCB1cC5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUuZW5kZWQpIHtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBlbmRSZWFkYWJsZSh0aGlzKVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvLyBBbGwgdGhlIGFjdHVhbCBjaHVuayBnZW5lcmF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlXG4gIC8vICpiZWxvdyogdGhlIGNhbGwgdG8gX3JlYWQuICBUaGUgcmVhc29uIGlzIHRoYXQgaW4gY2VydGFpblxuICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkXG4gIC8vIG1heSBiZSBhIGNvbXBsZXRlbHkgc3luY2hyb25vdXMgb3BlcmF0aW9uIHdoaWNoIG1heSBjaGFuZ2VcbiAgLy8gdGhlIHN0YXRlIG9mIHRoZSByZWFkIGJ1ZmZlciwgcHJvdmlkaW5nIGVub3VnaCBkYXRhIHdoZW5cbiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guXG4gIC8vXG4gIC8vIFNvLCB0aGUgc3RlcHMgYXJlOlxuICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvXG4gIC8vIGEgcmVhZCBmcm9tIHRoZSBidWZmZXIuXG4gIC8vXG4gIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuXG4gIC8vIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBhc3luY2hyb25vdXMsIG9yIHN5bmNocm9ub3VzLiAgWWVzLCBpdCBpc1xuICAvLyBkZWVwbHkgdWdseSB0byB3cml0ZSBBUElzIHRoaXMgd2F5LCBidXQgdGhhdCBzdGlsbCBkb2Vzbid0IG1lYW5cbiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZVxuICAvLyBkZXNpZ25lZCB0byBiZSBzeW5jL2FzeW5jIGFnbm9zdGljLlxuICAvLyBUYWtlIG5vdGUgaWYgdGhlIF9yZWFkIGNhbGwgaXMgc3luYyBvciBhc3luYyAoaWUsIGlmIHRoZSByZWFkIGNhbGxcbiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdFxuICAvLyAncmVhZGFibGUnIGV0Yy5cbiAgLy9cbiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLlxuXG4gIC8vIGlmIHdlIG5lZWQgYSByZWFkYWJsZSBldmVudCwgdGhlbiB3ZSBuZWVkIHRvIGRvIHNvbWUgcmVhZGluZy5cbiAgbGV0IGRvUmVhZCA9IChzdGF0ZS5zdGF0ZSAmIGtOZWVkUmVhZGFibGUpICE9PSAwXG4gIGRlYnVnKCduZWVkIHJlYWRhYmxlJywgZG9SZWFkKVxuXG4gIC8vIElmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZS5cbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCB8fCBzdGF0ZS5sZW5ndGggLSBuIDwgc3RhdGUuaGlnaFdhdGVyTWFyaykge1xuICAgIGRvUmVhZCA9IHRydWVcbiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpXG4gIH1cblxuICAvLyBIb3dldmVyLCBpZiB3ZSd2ZSBlbmRlZCwgdGhlbiB0aGVyZSdzIG5vIHBvaW50LCBpZiB3ZSdyZSBhbHJlYWR5XG4gIC8vIHJlYWRpbmcsIHRoZW4gaXQncyB1bm5lY2Vzc2FyeSwgaWYgd2UncmUgY29uc3RydWN0aW5nIHdlIGhhdmUgdG8gd2FpdCxcbiAgLy8gYW5kIGlmIHdlJ3JlIGRlc3Ryb3llZCBvciBlcnJvcmVkLCB0aGVuIGl0J3Mgbm90IGFsbG93ZWQsXG4gIGlmIChzdGF0ZS5lbmRlZCB8fCBzdGF0ZS5yZWFkaW5nIHx8IHN0YXRlLmRlc3Ryb3llZCB8fCBzdGF0ZS5lcnJvcmVkIHx8ICFzdGF0ZS5jb25zdHJ1Y3RlZCkge1xuICAgIGRvUmVhZCA9IGZhbHNlXG4gICAgZGVidWcoJ3JlYWRpbmcsIGVuZGVkIG9yIGNvbnN0cnVjdGluZycsIGRvUmVhZClcbiAgfSBlbHNlIGlmIChkb1JlYWQpIHtcbiAgICBkZWJ1ZygnZG8gcmVhZCcpXG4gICAgc3RhdGUuc3RhdGUgfD0ga1JlYWRpbmcgfCBrU3luY1xuICAgIC8vIElmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuXG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgc3RhdGUuc3RhdGUgfD0ga05lZWRSZWFkYWJsZVxuXG4gICAgLy8gQ2FsbCBpbnRlcm5hbCByZWFkIG1ldGhvZFxuICAgIHRyeSB7XG4gICAgICB0aGlzLl9yZWFkKHN0YXRlLmhpZ2hXYXRlck1hcmspXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlcnJvck9yRGVzdHJveSh0aGlzLCBlcnIpXG4gICAgfVxuICAgIHN0YXRlLnN0YXRlICY9IH5rU3luY1xuXG4gICAgLy8gSWYgX3JlYWQgcHVzaGVkIGRhdGEgc3luY2hyb25vdXNseSwgdGhlbiBgcmVhZGluZ2Agd2lsbCBiZSBmYWxzZSxcbiAgICAvLyBhbmQgd2UgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgbXVjaCBkYXRhIHdlIGNhbiByZXR1cm4gdG8gdGhlIHVzZXIuXG4gICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSBuID0gaG93TXVjaFRvUmVhZChuT3JpZywgc3RhdGUpXG4gIH1cbiAgbGV0IHJldFxuICBpZiAobiA+IDApIHJldCA9IGZyb21MaXN0KG4sIHN0YXRlKVxuICBlbHNlIHJldCA9IG51bGxcbiAgaWYgKHJldCA9PT0gbnVsbCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHN0YXRlLmxlbmd0aCA8PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrXG4gICAgbiA9IDBcbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS5sZW5ndGggLT0gblxuICAgIGlmIChzdGF0ZS5tdWx0aUF3YWl0RHJhaW4pIHtcbiAgICAgIHN0YXRlLmF3YWl0RHJhaW5Xcml0ZXJzLmNsZWFyKClcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuYXdhaXREcmFpbldyaXRlcnMgPSBudWxsXG4gICAgfVxuICB9XG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAvLyBJZiB3ZSBoYXZlIG5vdGhpbmcgaW4gdGhlIGJ1ZmZlciwgdGhlbiB3ZSB3YW50IHRvIGtub3dcbiAgICAvLyBhcyBzb29uIGFzIHdlICpkbyogZ2V0IHNvbWV0aGluZyBpbnRvIHRoZSBidWZmZXIuXG4gICAgaWYgKCFzdGF0ZS5lbmRlZCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZVxuXG4gICAgLy8gSWYgd2UgdHJpZWQgdG8gcmVhZCgpIHBhc3QgdGhlIEVPRiwgdGhlbiBlbWl0IGVuZCBvbiB0aGUgbmV4dCB0aWNrLlxuICAgIGlmIChuT3JpZyAhPT0gbiAmJiBzdGF0ZS5lbmRlZCkgZW5kUmVhZGFibGUodGhpcylcbiAgfVxuICBpZiAocmV0ICE9PSBudWxsICYmICFzdGF0ZS5lcnJvckVtaXR0ZWQgJiYgIXN0YXRlLmNsb3NlRW1pdHRlZCkge1xuICAgIHN0YXRlLmRhdGFFbWl0dGVkID0gdHJ1ZVxuICAgIHRoaXMuZW1pdCgnZGF0YScsIHJldClcbiAgfVxuICByZXR1cm4gcmV0XG59XG5mdW5jdGlvbiBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpIHtcbiAgZGVidWcoJ29uRW9mQ2h1bmsnKVxuICBpZiAoc3RhdGUuZW5kZWQpIHJldHVyblxuICBpZiAoc3RhdGUuZGVjb2Rlcikge1xuICAgIGNvbnN0IGNodW5rID0gc3RhdGUuZGVjb2Rlci5lbmQoKVxuICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIHtcbiAgICAgIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKVxuICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoXG4gICAgfVxuICB9XG4gIHN0YXRlLmVuZGVkID0gdHJ1ZVxuICBpZiAoc3RhdGUuc3luYykge1xuICAgIC8vIElmIHdlIGFyZSBzeW5jLCB3YWl0IHVudGlsIG5leHQgdGljayB0byBlbWl0IHRoZSBkYXRhLlxuICAgIC8vIE90aGVyd2lzZSB3ZSByaXNrIGVtaXR0aW5nIGRhdGEgaW4gdGhlIGZsb3coKVxuICAgIC8vIHRoZSByZWFkYWJsZSBjb2RlIHRyaWdnZXJzIGR1cmluZyBhIHJlYWQoKSBjYWxsLlxuICAgIGVtaXRSZWFkYWJsZShzdHJlYW0pXG4gIH0gZWxzZSB7XG4gICAgLy8gRW1pdCAncmVhZGFibGUnIG5vdyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBwaWNrZWQgdXAuXG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gZmFsc2VcbiAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSB0cnVlXG4gICAgLy8gV2UgaGF2ZSB0byBlbWl0IHJlYWRhYmxlIG5vdyB0aGF0IHdlIGFyZSBFT0YuIE1vZHVsZXNcbiAgICAvLyBpbiB0aGUgZWNvc3lzdGVtIChlLmcuIGRpY2VyKSByZWx5IG9uIHRoaXMgZXZlbnQgYmVpbmcgc3luYy5cbiAgICBlbWl0UmVhZGFibGVfKHN0cmVhbSlcbiAgfVxufVxuXG4vLyBEb24ndCBlbWl0IHJlYWRhYmxlIHJpZ2h0IGF3YXkgaW4gc3luYyBtb2RlLCBiZWNhdXNlIHRoaXMgY2FuIHRyaWdnZXJcbi8vIGFub3RoZXIgcmVhZCgpIGNhbGwgPT4gc3RhY2sgb3ZlcmZsb3cuICBUaGlzIHdheSwgaXQgbWlnaHQgdHJpZ2dlclxuLy8gYSBuZXh0VGljayByZWN1cnNpb24gd2FybmluZywgYnV0IHRoYXQncyBub3Qgc28gYmFkLlxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlKHN0cmVhbSkge1xuICBjb25zdCBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICBkZWJ1ZygnZW1pdFJlYWRhYmxlJywgc3RhdGUubmVlZFJlYWRhYmxlLCBzdGF0ZS5lbWl0dGVkUmVhZGFibGUpXG4gIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlXG4gIGlmICghc3RhdGUuZW1pdHRlZFJlYWRhYmxlKSB7XG4gICAgZGVidWcoJ2VtaXRSZWFkYWJsZScsIHN0YXRlLmZsb3dpbmcpXG4gICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gdHJ1ZVxuICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdFJlYWRhYmxlXywgc3RyZWFtKVxuICB9XG59XG5mdW5jdGlvbiBlbWl0UmVhZGFibGVfKHN0cmVhbSkge1xuICBjb25zdCBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICBkZWJ1ZygnZW1pdFJlYWRhYmxlXycsIHN0YXRlLmRlc3Ryb3llZCwgc3RhdGUubGVuZ3RoLCBzdGF0ZS5lbmRlZClcbiAgaWYgKCFzdGF0ZS5kZXN0cm95ZWQgJiYgIXN0YXRlLmVycm9yZWQgJiYgKHN0YXRlLmxlbmd0aCB8fCBzdGF0ZS5lbmRlZCkpIHtcbiAgICBzdHJlYW0uZW1pdCgncmVhZGFibGUnKVxuICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlXG4gIH1cblxuICAvLyBUaGUgc3RyZWFtIG5lZWRzIGFub3RoZXIgcmVhZGFibGUgZXZlbnQgaWY6XG4gIC8vIDEuIEl0IGlzIG5vdCBmbG93aW5nLCBhcyB0aGUgZmxvdyBtZWNoYW5pc20gd2lsbCB0YWtlXG4gIC8vICAgIGNhcmUgb2YgaXQuXG4gIC8vIDIuIEl0IGlzIG5vdCBlbmRlZC5cbiAgLy8gMy4gSXQgaXMgYmVsb3cgdGhlIGhpZ2hXYXRlck1hcmssIHNvIHdlIGNhbiBzY2hlZHVsZVxuICAvLyAgICBhbm90aGVyIHJlYWRhYmxlIGxhdGVyLlxuICBzdGF0ZS5uZWVkUmVhZGFibGUgPSAhc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUuZW5kZWQgJiYgc3RhdGUubGVuZ3RoIDw9IHN0YXRlLmhpZ2hXYXRlck1hcmtcbiAgZmxvdyhzdHJlYW0pXG59XG5cbi8vIEF0IHRoaXMgcG9pbnQsIHRoZSB1c2VyIGhhcyBwcmVzdW1hYmx5IHNlZW4gdGhlICdyZWFkYWJsZScgZXZlbnQsXG4vLyBhbmQgY2FsbGVkIHJlYWQoKSB0byBjb25zdW1lIHNvbWUgZGF0YS4gIHRoYXQgbWF5IGhhdmUgdHJpZ2dlcmVkXG4vLyBpbiB0dXJuIGFub3RoZXIgX3JlYWQobikgY2FsbCwgaW4gd2hpY2ggY2FzZSByZWFkaW5nID0gdHJ1ZSBpZlxuLy8gaXQncyBpbiBwcm9ncmVzcy5cbi8vIEhvd2V2ZXIsIGlmIHdlJ3JlIG5vdCBlbmRlZCwgb3IgcmVhZGluZywgYW5kIHRoZSBsZW5ndGggPCBod20sXG4vLyB0aGVuIGdvIGFoZWFkIGFuZCB0cnkgdG8gcmVhZCBzb21lIG1vcmUgcHJlZW1wdGl2ZWx5LlxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZ01vcmUgJiYgc3RhdGUuY29uc3RydWN0ZWQpIHtcbiAgICBzdGF0ZS5yZWFkaW5nTW9yZSA9IHRydWVcbiAgICBwcm9jZXNzLm5leHRUaWNrKG1heWJlUmVhZE1vcmVfLCBzdHJlYW0sIHN0YXRlKVxuICB9XG59XG5mdW5jdGlvbiBtYXliZVJlYWRNb3JlXyhzdHJlYW0sIHN0YXRlKSB7XG4gIC8vIEF0dGVtcHQgdG8gcmVhZCBtb3JlIGRhdGEgaWYgd2Ugc2hvdWxkLlxuICAvL1xuICAvLyBUaGUgY29uZGl0aW9ucyBmb3IgcmVhZGluZyBtb3JlIGRhdGEgYXJlIChvbmUgb2YpOlxuICAvLyAtIE5vdCBlbm91Z2ggZGF0YSBidWZmZXJlZCAoc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyaykuIFRoZSBsb29wXG4gIC8vICAgaXMgcmVzcG9uc2libGUgZm9yIGZpbGxpbmcgdGhlIGJ1ZmZlciB3aXRoIGVub3VnaCBkYXRhIGlmIHN1Y2ggZGF0YVxuICAvLyAgIGlzIGF2YWlsYWJsZS4gSWYgaGlnaFdhdGVyTWFyayBpcyAwIGFuZCB3ZSBhcmUgbm90IGluIHRoZSBmbG93aW5nIG1vZGVcbiAgLy8gICB3ZSBzaG91bGQgX25vdF8gYXR0ZW1wdCB0byBidWZmZXIgYW55IGV4dHJhIGRhdGEuIFdlJ2xsIGdldCBtb3JlIGRhdGFcbiAgLy8gICB3aGVuIHRoZSBzdHJlYW0gY29uc3VtZXIgY2FsbHMgcmVhZCgpIGluc3RlYWQuXG4gIC8vIC0gTm8gZGF0YSBpbiB0aGUgYnVmZmVyLCBhbmQgdGhlIHN0cmVhbSBpcyBpbiBmbG93aW5nIG1vZGUuIEluIHRoaXMgbW9kZVxuICAvLyAgIHRoZSBsb29wIGJlbG93IGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyByZWFkKCkgaXMgY2FsbGVkLiBGYWlsaW5nIHRvXG4gIC8vICAgY2FsbCByZWFkIGhlcmUgd291bGQgYWJvcnQgdGhlIGZsb3cgYW5kIHRoZXJlJ3Mgbm8gb3RoZXIgbWVjaGFuaXNtIGZvclxuICAvLyAgIGNvbnRpbnVpbmcgdGhlIGZsb3cgaWYgdGhlIHN0cmVhbSBjb25zdW1lciBoYXMganVzdCBzdWJzY3JpYmVkIHRvIHRoZVxuICAvLyAgICdkYXRhJyBldmVudC5cbiAgLy9cbiAgLy8gSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIGNvbmRpdGlvbnMgdG8ga2VlcCByZWFkaW5nIGRhdGEsIHRoZSBmb2xsb3dpbmdcbiAgLy8gY29uZGl0aW9ucyBwcmV2ZW50IHRoZSBkYXRhIGZyb20gYmVpbmcgcmVhZDpcbiAgLy8gLSBUaGUgc3RyZWFtIGhhcyBlbmRlZCAoc3RhdGUuZW5kZWQpLlxuICAvLyAtIFRoZXJlIGlzIGFscmVhZHkgYSBwZW5kaW5nICdyZWFkJyBvcGVyYXRpb24gKHN0YXRlLnJlYWRpbmcpLiBUaGlzIGlzIGFcbiAgLy8gICBjYXNlIHdoZXJlIHRoZSBzdHJlYW0gaGFzIGNhbGxlZCB0aGUgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBfcmVhZCgpXG4gIC8vICAgbWV0aG9kLCBidXQgdGhleSBhcmUgcHJvY2Vzc2luZyB0aGUgY2FsbCBhc3luY2hyb25vdXNseSBhbmQgaGF2ZSBfbm90X1xuICAvLyAgIGNhbGxlZCBwdXNoKCkgd2l0aCBuZXcgZGF0YS4gSW4gdGhpcyBjYXNlIHdlIHNraXAgcGVyZm9ybWluZyBtb3JlXG4gIC8vICAgcmVhZCgpcy4gVGhlIGV4ZWN1dGlvbiBlbmRzIGluIHRoaXMgbWV0aG9kIGFnYWluIGFmdGVyIHRoZSBfcmVhZCgpIGVuZHNcbiAgLy8gICB1cCBjYWxsaW5nIHB1c2goKSB3aXRoIG1vcmUgZGF0YS5cbiAgd2hpbGUgKFxuICAgICFzdGF0ZS5yZWFkaW5nICYmXG4gICAgIXN0YXRlLmVuZGVkICYmXG4gICAgKHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwKSlcbiAgKSB7XG4gICAgY29uc3QgbGVuID0gc3RhdGUubGVuZ3RoXG4gICAgZGVidWcoJ21heWJlUmVhZE1vcmUgcmVhZCAwJylcbiAgICBzdHJlYW0ucmVhZCgwKVxuICAgIGlmIChsZW4gPT09IHN0YXRlLmxlbmd0aClcbiAgICAgIC8vIERpZG4ndCBnZXQgYW55IGRhdGEsIHN0b3Agc3Bpbm5pbmcuXG4gICAgICBicmVha1xuICB9XG4gIHN0YXRlLnJlYWRpbmdNb3JlID0gZmFsc2Vcbn1cblxuLy8gQWJzdHJhY3QgbWV0aG9kLiAgdG8gYmUgb3ZlcnJpZGRlbiBpbiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gY2FsbCBjYihlciwgZGF0YSkgd2hlcmUgZGF0YSBpcyA8PSBuIGluIGxlbmd0aC5cbi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCBcImxlbmd0aFwiIGlzIHNvbWV3aGF0XG4vLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuXG5SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB0aHJvdyBuZXcgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQoJ19yZWFkKCknKVxufVxuUmVhZGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoZGVzdCwgcGlwZU9wdHMpIHtcbiAgY29uc3Qgc3JjID0gdGhpc1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGVcbiAgaWYgKHN0YXRlLnBpcGVzLmxlbmd0aCA9PT0gMSkge1xuICAgIGlmICghc3RhdGUubXVsdGlBd2FpdERyYWluKSB7XG4gICAgICBzdGF0ZS5tdWx0aUF3YWl0RHJhaW4gPSB0cnVlXG4gICAgICBzdGF0ZS5hd2FpdERyYWluV3JpdGVycyA9IG5ldyBTYWZlU2V0KHN0YXRlLmF3YWl0RHJhaW5Xcml0ZXJzID8gW3N0YXRlLmF3YWl0RHJhaW5Xcml0ZXJzXSA6IFtdKVxuICAgIH1cbiAgfVxuICBzdGF0ZS5waXBlcy5wdXNoKGRlc3QpXG4gIGRlYnVnKCdwaXBlIGNvdW50PSVkIG9wdHM9JWonLCBzdGF0ZS5waXBlcy5sZW5ndGgsIHBpcGVPcHRzKVxuICBjb25zdCBkb0VuZCA9ICghcGlwZU9wdHMgfHwgcGlwZU9wdHMuZW5kICE9PSBmYWxzZSkgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRvdXQgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRlcnJcbiAgY29uc3QgZW5kRm4gPSBkb0VuZCA/IG9uZW5kIDogdW5waXBlXG4gIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBwcm9jZXNzLm5leHRUaWNrKGVuZEZuKVxuICBlbHNlIHNyYy5vbmNlKCdlbmQnLCBlbmRGbilcbiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpXG4gIGZ1bmN0aW9uIG9udW5waXBlKHJlYWRhYmxlLCB1bnBpcGVJbmZvKSB7XG4gICAgZGVidWcoJ29udW5waXBlJylcbiAgICBpZiAocmVhZGFibGUgPT09IHNyYykge1xuICAgICAgaWYgKHVucGlwZUluZm8gJiYgdW5waXBlSW5mby5oYXNVbnBpcGVkID09PSBmYWxzZSkge1xuICAgICAgICB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPSB0cnVlXG4gICAgICAgIGNsZWFudXAoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBkZWJ1Zygnb25lbmQnKVxuICAgIGRlc3QuZW5kKClcbiAgfVxuICBsZXQgb25kcmFpblxuICBsZXQgY2xlYW5lZFVwID0gZmFsc2VcbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBkZWJ1ZygnY2xlYW51cCcpXG4gICAgLy8gQ2xlYW51cCBldmVudCBoYW5kbGVycyBvbmNlIHRoZSBwaXBlIGlzIGJyb2tlbi5cbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpXG4gICAgaWYgKG9uZHJhaW4pIHtcbiAgICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbilcbiAgICB9XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKVxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ3VucGlwZScsIG9udW5waXBlKVxuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpXG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCB1bnBpcGUpXG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKVxuICAgIGNsZWFuZWRVcCA9IHRydWVcblxuICAgIC8vIElmIHRoZSByZWFkZXIgaXMgd2FpdGluZyBmb3IgYSBkcmFpbiBldmVudCBmcm9tIHRoaXNcbiAgICAvLyBzcGVjaWZpYyB3cml0ZXIsIHRoZW4gaXQgd291bGQgY2F1c2UgaXQgdG8gbmV2ZXIgc3RhcnRcbiAgICAvLyBmbG93aW5nIGFnYWluLlxuICAgIC8vIFNvLCBpZiB0aGlzIGlzIGF3YWl0aW5nIGEgZHJhaW4sIHRoZW4gd2UganVzdCBjYWxsIGl0IG5vdy5cbiAgICAvLyBJZiB3ZSBkb24ndCBrbm93LCB0aGVuIGFzc3VtZSB0aGF0IHdlIGFyZSB3YWl0aW5nIGZvciBvbmUuXG4gICAgaWYgKG9uZHJhaW4gJiYgc3RhdGUuYXdhaXREcmFpbldyaXRlcnMgJiYgKCFkZXN0Ll93cml0YWJsZVN0YXRlIHx8IGRlc3QuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSkgb25kcmFpbigpXG4gIH1cbiAgZnVuY3Rpb24gcGF1c2UoKSB7XG4gICAgLy8gSWYgdGhlIHVzZXIgdW5waXBlZCBkdXJpbmcgYGRlc3Qud3JpdGUoKWAsIGl0IGlzIHBvc3NpYmxlXG4gICAgLy8gdG8gZ2V0IHN0dWNrIGluIGEgcGVybWFuZW50bHkgcGF1c2VkIHN0YXRlIGlmIHRoYXQgd3JpdGVcbiAgICAvLyBhbHNvIHJldHVybmVkIGZhbHNlLlxuICAgIC8vID0+IENoZWNrIHdoZXRoZXIgYGRlc3RgIGlzIHN0aWxsIGEgcGlwaW5nIGRlc3RpbmF0aW9uLlxuICAgIGlmICghY2xlYW5lZFVwKSB7XG4gICAgICBpZiAoc3RhdGUucGlwZXMubGVuZ3RoID09PSAxICYmIHN0YXRlLnBpcGVzWzBdID09PSBkZXN0KSB7XG4gICAgICAgIGRlYnVnKCdmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UnLCAwKVxuICAgICAgICBzdGF0ZS5hd2FpdERyYWluV3JpdGVycyA9IGRlc3RcbiAgICAgICAgc3RhdGUubXVsdGlBd2FpdERyYWluID0gZmFsc2VcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUucGlwZXMubGVuZ3RoID4gMSAmJiBzdGF0ZS5waXBlcy5pbmNsdWRlcyhkZXN0KSkge1xuICAgICAgICBkZWJ1ZygnZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlJywgc3RhdGUuYXdhaXREcmFpbldyaXRlcnMuc2l6ZSlcbiAgICAgICAgc3RhdGUuYXdhaXREcmFpbldyaXRlcnMuYWRkKGRlc3QpXG4gICAgICB9XG4gICAgICBzcmMucGF1c2UoKVxuICAgIH1cbiAgICBpZiAoIW9uZHJhaW4pIHtcbiAgICAgIC8vIFdoZW4gdGhlIGRlc3QgZHJhaW5zLCBpdCByZWR1Y2VzIHRoZSBhd2FpdERyYWluIGNvdW50ZXJcbiAgICAgIC8vIG9uIHRoZSBzb3VyY2UuICBUaGlzIHdvdWxkIGJlIG1vcmUgZWxlZ2FudCB3aXRoIGEgLm9uY2UoKVxuICAgICAgLy8gaGFuZGxlciBpbiBmbG93KCksIGJ1dCBhZGRpbmcgYW5kIHJlbW92aW5nIHJlcGVhdGVkbHkgaXNcbiAgICAgIC8vIHRvbyBzbG93LlxuICAgICAgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYywgZGVzdClcbiAgICAgIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbilcbiAgICB9XG4gIH1cbiAgc3JjLm9uKCdkYXRhJywgb25kYXRhKVxuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBkZWJ1Zygnb25kYXRhJylcbiAgICBjb25zdCByZXQgPSBkZXN0LndyaXRlKGNodW5rKVxuICAgIGRlYnVnKCdkZXN0LndyaXRlJywgcmV0KVxuICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICBwYXVzZSgpXG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIGRlc3QgaGFzIGFuIGVycm9yLCB0aGVuIHN0b3AgcGlwaW5nIGludG8gaXQuXG4gIC8vIEhvd2V2ZXIsIGRvbid0IHN1cHByZXNzIHRoZSB0aHJvd2luZyBiZWhhdmlvciBmb3IgdGhpcy5cbiAgZnVuY3Rpb24gb25lcnJvcihlcikge1xuICAgIGRlYnVnKCdvbmVycm9yJywgZXIpXG4gICAgdW5waXBlKClcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpXG4gICAgaWYgKGRlc3QubGlzdGVuZXJDb3VudCgnZXJyb3InKSA9PT0gMCkge1xuICAgICAgY29uc3QgcyA9IGRlc3QuX3dyaXRhYmxlU3RhdGUgfHwgZGVzdC5fcmVhZGFibGVTdGF0ZVxuICAgICAgaWYgKHMgJiYgIXMuZXJyb3JFbWl0dGVkKSB7XG4gICAgICAgIC8vIFVzZXIgaW5jb3JyZWN0bHkgZW1pdHRlZCAnZXJyb3InIGRpcmVjdGx5IG9uIHRoZSBzdHJlYW0uXG4gICAgICAgIGVycm9yT3JEZXN0cm95KGRlc3QsIGVyKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVzdC5lbWl0KCdlcnJvcicsIGVyKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgdXNlcmxhbmQgb25lcy5cbiAgcHJlcGVuZExpc3RlbmVyKGRlc3QsICdlcnJvcicsIG9uZXJyb3IpXG5cbiAgLy8gQm90aCBjbG9zZSBhbmQgZmluaXNoIHNob3VsZCB0cmlnZ2VyIHVucGlwZSwgYnV0IG9ubHkgb25jZS5cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaClcbiAgICB1bnBpcGUoKVxuICB9XG4gIGRlc3Qub25jZSgnY2xvc2UnLCBvbmNsb3NlKVxuICBmdW5jdGlvbiBvbmZpbmlzaCgpIHtcbiAgICBkZWJ1Zygnb25maW5pc2gnKVxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSlcbiAgICB1bnBpcGUoKVxuICB9XG4gIGRlc3Qub25jZSgnZmluaXNoJywgb25maW5pc2gpXG4gIGZ1bmN0aW9uIHVucGlwZSgpIHtcbiAgICBkZWJ1ZygndW5waXBlJylcbiAgICBzcmMudW5waXBlKGRlc3QpXG4gIH1cblxuICAvLyBUZWxsIHRoZSBkZXN0IHRoYXQgaXQncyBiZWluZyBwaXBlZCB0by5cbiAgZGVzdC5lbWl0KCdwaXBlJywgc3JjKVxuXG4gIC8vIFN0YXJ0IHRoZSBmbG93IGlmIGl0IGhhc24ndCBiZWVuIHN0YXJ0ZWQgYWxyZWFkeS5cblxuICBpZiAoZGVzdC53cml0YWJsZU5lZWREcmFpbiA9PT0gdHJ1ZSkge1xuICAgIHBhdXNlKClcbiAgfSBlbHNlIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwaXBlIHJlc3VtZScpXG4gICAgc3JjLnJlc3VtZSgpXG4gIH1cbiAgcmV0dXJuIGRlc3Rcbn1cbmZ1bmN0aW9uIHBpcGVPbkRyYWluKHNyYywgZGVzdCkge1xuICByZXR1cm4gZnVuY3Rpb24gcGlwZU9uRHJhaW5GdW5jdGlvblJlc3VsdCgpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHNyYy5fcmVhZGFibGVTdGF0ZVxuXG4gICAgLy8gYG9uZHJhaW5gIHdpbGwgY2FsbCBkaXJlY3RseSxcbiAgICAvLyBgdGhpc2AgbWF5YmUgbm90IGEgcmVmZXJlbmNlIHRvIGRlc3QsXG4gICAgLy8gc28gd2UgdXNlIHRoZSByZWFsIGRlc3QgaGVyZS5cbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbldyaXRlcnMgPT09IGRlc3QpIHtcbiAgICAgIGRlYnVnKCdwaXBlT25EcmFpbicsIDEpXG4gICAgICBzdGF0ZS5hd2FpdERyYWluV3JpdGVycyA9IG51bGxcbiAgICB9IGVsc2UgaWYgKHN0YXRlLm11bHRpQXdhaXREcmFpbikge1xuICAgICAgZGVidWcoJ3BpcGVPbkRyYWluJywgc3RhdGUuYXdhaXREcmFpbldyaXRlcnMuc2l6ZSlcbiAgICAgIHN0YXRlLmF3YWl0RHJhaW5Xcml0ZXJzLmRlbGV0ZShkZXN0KVxuICAgIH1cbiAgICBpZiAoKCFzdGF0ZS5hd2FpdERyYWluV3JpdGVycyB8fCBzdGF0ZS5hd2FpdERyYWluV3JpdGVycy5zaXplID09PSAwKSAmJiBzcmMubGlzdGVuZXJDb3VudCgnZGF0YScpKSB7XG4gICAgICBzcmMucmVzdW1lKClcbiAgICB9XG4gIH1cbn1cblJlYWRhYmxlLnByb3RvdHlwZS51bnBpcGUgPSBmdW5jdGlvbiAoZGVzdCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGVcbiAgY29uc3QgdW5waXBlSW5mbyA9IHtcbiAgICBoYXNVbnBpcGVkOiBmYWxzZVxuICB9XG5cbiAgLy8gSWYgd2UncmUgbm90IHBpcGluZyBhbnl3aGVyZSwgdGhlbiBkbyBub3RoaW5nLlxuICBpZiAoc3RhdGUucGlwZXMubGVuZ3RoID09PSAwKSByZXR1cm4gdGhpc1xuICBpZiAoIWRlc3QpIHtcbiAgICAvLyByZW1vdmUgYWxsLlxuICAgIGNvbnN0IGRlc3RzID0gc3RhdGUucGlwZXNcbiAgICBzdGF0ZS5waXBlcyA9IFtdXG4gICAgdGhpcy5wYXVzZSgpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXN0cy5sZW5ndGg7IGkrKylcbiAgICAgIGRlc3RzW2ldLmVtaXQoJ3VucGlwZScsIHRoaXMsIHtcbiAgICAgICAgaGFzVW5waXBlZDogZmFsc2VcbiAgICAgIH0pXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vIFRyeSB0byBmaW5kIHRoZSByaWdodCBvbmUuXG4gIGNvbnN0IGluZGV4ID0gQXJyYXlQcm90b3R5cGVJbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KVxuICBpZiAoaW5kZXggPT09IC0xKSByZXR1cm4gdGhpc1xuICBzdGF0ZS5waXBlcy5zcGxpY2UoaW5kZXgsIDEpXG4gIGlmIChzdGF0ZS5waXBlcy5sZW5ndGggPT09IDApIHRoaXMucGF1c2UoKVxuICBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIFNldCB1cCBkYXRhIGV2ZW50cyBpZiB0aGV5IGFyZSBhc2tlZCBmb3Jcbi8vIEVuc3VyZSByZWFkYWJsZSBsaXN0ZW5lcnMgZXZlbnR1YWxseSBnZXQgc29tZXRoaW5nLlxuUmVhZGFibGUucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2LCBmbikge1xuICBjb25zdCByZXMgPSBTdHJlYW0ucHJvdG90eXBlLm9uLmNhbGwodGhpcywgZXYsIGZuKVxuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGVcbiAgaWYgKGV2ID09PSAnZGF0YScpIHtcbiAgICAvLyBVcGRhdGUgcmVhZGFibGVMaXN0ZW5pbmcgc28gdGhhdCByZXN1bWUoKSBtYXkgYmUgYSBuby1vcFxuICAgIC8vIGEgZmV3IGxpbmVzIGRvd24uIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgb25jZSgncmVhZGFibGUnKS5cbiAgICBzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZyA9IHRoaXMubGlzdGVuZXJDb3VudCgncmVhZGFibGUnKSA+IDBcblxuICAgIC8vIFRyeSBzdGFydCBmbG93aW5nIG9uIG5leHQgdGljayBpZiBzdHJlYW0gaXNuJ3QgZXhwbGljaXRseSBwYXVzZWQuXG4gICAgaWYgKHN0YXRlLmZsb3dpbmcgIT09IGZhbHNlKSB0aGlzLnJlc3VtZSgpXG4gIH0gZWxzZSBpZiAoZXYgPT09ICdyZWFkYWJsZScpIHtcbiAgICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQgJiYgIXN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nKSB7XG4gICAgICBzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZyA9IHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWVcbiAgICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZVxuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2VcbiAgICAgIGRlYnVnKCdvbiByZWFkYWJsZScsIHN0YXRlLmxlbmd0aCwgc3RhdGUucmVhZGluZylcbiAgICAgIGlmIChzdGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgZW1pdFJlYWRhYmxlKHRoaXMpXG4gICAgICB9IGVsc2UgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soblJlYWRpbmdOZXh0VGljaywgdGhpcylcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuUmVhZGFibGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gUmVhZGFibGUucHJvdG90eXBlLm9uXG5SZWFkYWJsZS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPSBmdW5jdGlvbiAoZXYsIGZuKSB7XG4gIGNvbnN0IHJlcyA9IFN0cmVhbS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIuY2FsbCh0aGlzLCBldiwgZm4pXG4gIGlmIChldiA9PT0gJ3JlYWRhYmxlJykge1xuICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgc29tZW9uZSBzdGlsbCBsaXN0ZW5pbmcgdG9cbiAgICAvLyByZWFkYWJsZSBhbmQgcmVzZXQgdGhlIHN0YXRlLiBIb3dldmVyIHRoaXMgbmVlZHMgdG8gaGFwcGVuXG4gICAgLy8gYWZ0ZXIgcmVhZGFibGUgaGFzIGJlZW4gZW1pdHRlZCBidXQgYmVmb3JlIEkvTyAobmV4dFRpY2spIHRvXG4gICAgLy8gc3VwcG9ydCBvbmNlKCdyZWFkYWJsZScsIGZuKSBjeWNsZXMuIFRoaXMgbWVhbnMgdGhhdCBjYWxsaW5nXG4gICAgLy8gcmVzdW1lIHdpdGhpbiB0aGUgc2FtZSB0aWNrIHdpbGwgaGF2ZSBub1xuICAgIC8vIGVmZmVjdC5cbiAgICBwcm9jZXNzLm5leHRUaWNrKHVwZGF0ZVJlYWRhYmxlTGlzdGVuaW5nLCB0aGlzKVxuICB9XG4gIHJldHVybiByZXNcbn1cblJlYWRhYmxlLnByb3RvdHlwZS5vZmYgPSBSZWFkYWJsZS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXJcblJlYWRhYmxlLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBmdW5jdGlvbiAoZXYpIHtcbiAgY29uc3QgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICBpZiAoZXYgPT09ICdyZWFkYWJsZScgfHwgZXYgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgc29tZW9uZSBzdGlsbCBsaXN0ZW5pbmcgdG9cbiAgICAvLyByZWFkYWJsZSBhbmQgcmVzZXQgdGhlIHN0YXRlLiBIb3dldmVyIHRoaXMgbmVlZHMgdG8gaGFwcGVuXG4gICAgLy8gYWZ0ZXIgcmVhZGFibGUgaGFzIGJlZW4gZW1pdHRlZCBidXQgYmVmb3JlIEkvTyAobmV4dFRpY2spIHRvXG4gICAgLy8gc3VwcG9ydCBvbmNlKCdyZWFkYWJsZScsIGZuKSBjeWNsZXMuIFRoaXMgbWVhbnMgdGhhdCBjYWxsaW5nXG4gICAgLy8gcmVzdW1lIHdpdGhpbiB0aGUgc2FtZSB0aWNrIHdpbGwgaGF2ZSBub1xuICAgIC8vIGVmZmVjdC5cbiAgICBwcm9jZXNzLm5leHRUaWNrKHVwZGF0ZVJlYWRhYmxlTGlzdGVuaW5nLCB0aGlzKVxuICB9XG4gIHJldHVybiByZXNcbn1cbmZ1bmN0aW9uIHVwZGF0ZVJlYWRhYmxlTGlzdGVuaW5nKHNlbGYpIHtcbiAgY29uc3Qgc3RhdGUgPSBzZWxmLl9yZWFkYWJsZVN0YXRlXG4gIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gc2VsZi5saXN0ZW5lckNvdW50KCdyZWFkYWJsZScpID4gMFxuICBpZiAoc3RhdGUucmVzdW1lU2NoZWR1bGVkICYmIHN0YXRlW2tQYXVzZWRdID09PSBmYWxzZSkge1xuICAgIC8vIEZsb3dpbmcgbmVlZHMgdG8gYmUgc2V0IHRvIHRydWUgbm93LCBvdGhlcndpc2VcbiAgICAvLyB0aGUgdXBjb21pbmcgcmVzdW1lIHdpbGwgbm90IGZsb3cuXG4gICAgc3RhdGUuZmxvd2luZyA9IHRydWVcblxuICAgIC8vIENydWRlIHdheSB0byBjaGVjayBpZiB3ZSBzaG91bGQgcmVzdW1lLlxuICB9IGVsc2UgaWYgKHNlbGYubGlzdGVuZXJDb3VudCgnZGF0YScpID4gMCkge1xuICAgIHNlbGYucmVzdW1lKClcbiAgfSBlbHNlIGlmICghc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcpIHtcbiAgICBzdGF0ZS5mbG93aW5nID0gbnVsbFxuICB9XG59XG5mdW5jdGlvbiBuUmVhZGluZ05leHRUaWNrKHNlbGYpIHtcbiAgZGVidWcoJ3JlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCcpXG4gIHNlbGYucmVhZCgwKVxufVxuXG4vLyBwYXVzZSgpIGFuZCByZXN1bWUoKSBhcmUgcmVtbmFudHMgb2YgdGhlIGxlZ2FjeSByZWFkYWJsZSBzdHJlYW0gQVBJXG4vLyBJZiB0aGUgdXNlciB1c2VzIHRoZW0sIHRoZW4gc3dpdGNoIGludG8gb2xkIG1vZGUuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24gKCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGVcbiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZScpXG4gICAgLy8gV2UgZmxvdyBvbmx5IGlmIHRoZXJlIGlzIG5vIG9uZSBsaXN0ZW5pbmdcbiAgICAvLyBmb3IgcmVhZGFibGUsIGJ1dCB3ZSBzdGlsbCBoYXZlIHRvIGNhbGxcbiAgICAvLyByZXN1bWUoKS5cbiAgICBzdGF0ZS5mbG93aW5nID0gIXN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nXG4gICAgcmVzdW1lKHRoaXMsIHN0YXRlKVxuICB9XG4gIHN0YXRlW2tQYXVzZWRdID0gZmFsc2VcbiAgcmV0dXJuIHRoaXNcbn1cbmZ1bmN0aW9uIHJlc3VtZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVzdW1lU2NoZWR1bGVkKSB7XG4gICAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gdHJ1ZVxuICAgIHByb2Nlc3MubmV4dFRpY2socmVzdW1lXywgc3RyZWFtLCBzdGF0ZSlcbiAgfVxufVxuZnVuY3Rpb24gcmVzdW1lXyhzdHJlYW0sIHN0YXRlKSB7XG4gIGRlYnVnKCdyZXN1bWUnLCBzdGF0ZS5yZWFkaW5nKVxuICBpZiAoIXN0YXRlLnJlYWRpbmcpIHtcbiAgICBzdHJlYW0ucmVhZCgwKVxuICB9XG4gIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlXG4gIHN0cmVhbS5lbWl0KCdyZXN1bWUnKVxuICBmbG93KHN0cmVhbSlcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLnJlYWRpbmcpIHN0cmVhbS5yZWFkKDApXG59XG5SZWFkYWJsZS5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gIGRlYnVnKCdjYWxsIHBhdXNlIGZsb3dpbmc9JWonLCB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpXG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgIT09IGZhbHNlKSB7XG4gICAgZGVidWcoJ3BhdXNlJylcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPSBmYWxzZVxuICAgIHRoaXMuZW1pdCgncGF1c2UnKVxuICB9XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGVba1BhdXNlZF0gPSB0cnVlXG4gIHJldHVybiB0aGlzXG59XG5mdW5jdGlvbiBmbG93KHN0cmVhbSkge1xuICBjb25zdCBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICBkZWJ1ZygnZmxvdycsIHN0YXRlLmZsb3dpbmcpXG4gIHdoaWxlIChzdGF0ZS5mbG93aW5nICYmIHN0cmVhbS5yZWFkKCkgIT09IG51bGwpO1xufVxuXG4vLyBXcmFwIGFuIG9sZC1zdHlsZSBzdHJlYW0gYXMgdGhlIGFzeW5jIGRhdGEgc291cmNlLlxuLy8gVGhpcyBpcyAqbm90KiBwYXJ0IG9mIHRoZSByZWFkYWJsZSBzdHJlYW0gaW50ZXJmYWNlLlxuLy8gSXQgaXMgYW4gdWdseSB1bmZvcnR1bmF0ZSBtZXNzIG9mIGhpc3RvcnkuXG5SZWFkYWJsZS5wcm90b3R5cGUud3JhcCA9IGZ1bmN0aW9uIChzdHJlYW0pIHtcbiAgbGV0IHBhdXNlZCA9IGZhbHNlXG5cbiAgLy8gVE9ETyAocm9uYWcpOiBTaG91bGQgdGhpcy5kZXN0cm95KGVycikgZW1pdFxuICAvLyAnZXJyb3InIG9uIHRoZSB3cmFwcGVkIHN0cmVhbT8gV291bGQgcmVxdWlyZVxuICAvLyBhIHN0YXRpYyBmYWN0b3J5IG1ldGhvZCwgZS5nLiBSZWFkYWJsZS53cmFwKHN0cmVhbSkuXG5cbiAgc3RyZWFtLm9uKCdkYXRhJywgKGNodW5rKSA9PiB7XG4gICAgaWYgKCF0aGlzLnB1c2goY2h1bmspICYmIHN0cmVhbS5wYXVzZSkge1xuICAgICAgcGF1c2VkID0gdHJ1ZVxuICAgICAgc3RyZWFtLnBhdXNlKClcbiAgICB9XG4gIH0pXG4gIHN0cmVhbS5vbignZW5kJywgKCkgPT4ge1xuICAgIHRoaXMucHVzaChudWxsKVxuICB9KVxuICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgIGVycm9yT3JEZXN0cm95KHRoaXMsIGVycilcbiAgfSlcbiAgc3RyZWFtLm9uKCdjbG9zZScsICgpID0+IHtcbiAgICB0aGlzLmRlc3Ryb3koKVxuICB9KVxuICBzdHJlYW0ub24oJ2Rlc3Ryb3knLCAoKSA9PiB7XG4gICAgdGhpcy5kZXN0cm95KClcbiAgfSlcbiAgdGhpcy5fcmVhZCA9ICgpID0+IHtcbiAgICBpZiAocGF1c2VkICYmIHN0cmVhbS5yZXN1bWUpIHtcbiAgICAgIHBhdXNlZCA9IGZhbHNlXG4gICAgICBzdHJlYW0ucmVzdW1lKClcbiAgICB9XG4gIH1cblxuICAvLyBQcm94eSBhbGwgdGhlIG90aGVyIG1ldGhvZHMuIEltcG9ydGFudCB3aGVuIHdyYXBwaW5nIGZpbHRlcnMgYW5kIGR1cGxleGVzLlxuICBjb25zdCBzdHJlYW1LZXlzID0gT2JqZWN0S2V5cyhzdHJlYW0pXG4gIGZvciAobGV0IGogPSAxOyBqIDwgc3RyZWFtS2V5cy5sZW5ndGg7IGorKykge1xuICAgIGNvbnN0IGkgPSBzdHJlYW1LZXlzW2pdXG4gICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2ldID0gc3RyZWFtW2ldLmJpbmQoc3RyZWFtKVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpc1xufVxuUmVhZGFibGUucHJvdG90eXBlW1N5bWJvbEFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gc3RyZWFtVG9Bc3luY0l0ZXJhdG9yKHRoaXMpXG59XG5SZWFkYWJsZS5wcm90b3R5cGUuaXRlcmF0b3IgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFsaWRhdGVPYmplY3Qob3B0aW9ucywgJ29wdGlvbnMnKVxuICB9XG4gIHJldHVybiBzdHJlYW1Ub0FzeW5jSXRlcmF0b3IodGhpcywgb3B0aW9ucylcbn1cbmZ1bmN0aW9uIHN0cmVhbVRvQXN5bmNJdGVyYXRvcihzdHJlYW0sIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBzdHJlYW0ucmVhZCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHN0cmVhbSA9IFJlYWRhYmxlLndyYXAoc3RyZWFtLCB7XG4gICAgICBvYmplY3RNb2RlOiB0cnVlXG4gICAgfSlcbiAgfVxuICBjb25zdCBpdGVyID0gY3JlYXRlQXN5bmNJdGVyYXRvcihzdHJlYW0sIG9wdGlvbnMpXG4gIGl0ZXIuc3RyZWFtID0gc3RyZWFtXG4gIHJldHVybiBpdGVyXG59XG5hc3luYyBmdW5jdGlvbiogY3JlYXRlQXN5bmNJdGVyYXRvcihzdHJlYW0sIG9wdGlvbnMpIHtcbiAgbGV0IGNhbGxiYWNrID0gbm9wXG4gIGZ1bmN0aW9uIG5leHQocmVzb2x2ZSkge1xuICAgIGlmICh0aGlzID09PSBzdHJlYW0pIHtcbiAgICAgIGNhbGxiYWNrKClcbiAgICAgIGNhbGxiYWNrID0gbm9wXG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrID0gcmVzb2x2ZVxuICAgIH1cbiAgfVxuICBzdHJlYW0ub24oJ3JlYWRhYmxlJywgbmV4dClcbiAgbGV0IGVycm9yXG4gIGNvbnN0IGNsZWFudXAgPSBlb3MoXG4gICAgc3RyZWFtLFxuICAgIHtcbiAgICAgIHdyaXRhYmxlOiBmYWxzZVxuICAgIH0sXG4gICAgKGVycikgPT4ge1xuICAgICAgZXJyb3IgPSBlcnIgPyBhZ2dyZWdhdGVUd29FcnJvcnMoZXJyb3IsIGVycikgOiBudWxsXG4gICAgICBjYWxsYmFjaygpXG4gICAgICBjYWxsYmFjayA9IG5vcFxuICAgIH1cbiAgKVxuICB0cnkge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCBjaHVuayA9IHN0cmVhbS5kZXN0cm95ZWQgPyBudWxsIDogc3RyZWFtLnJlYWQoKVxuICAgICAgaWYgKGNodW5rICE9PSBudWxsKSB7XG4gICAgICAgIHlpZWxkIGNodW5rXG4gICAgICB9IGVsc2UgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9IGVsc2UgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UobmV4dClcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVycm9yID0gYWdncmVnYXRlVHdvRXJyb3JzKGVycm9yLCBlcnIpXG4gICAgdGhyb3cgZXJyb3JcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoXG4gICAgICAoZXJyb3IgfHwgKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogb3B0aW9ucy5kZXN0cm95T25SZXR1cm4pICE9PSBmYWxzZSkgJiZcbiAgICAgIChlcnJvciA9PT0gdW5kZWZpbmVkIHx8IHN0cmVhbS5fcmVhZGFibGVTdGF0ZS5hdXRvRGVzdHJveSlcbiAgICApIHtcbiAgICAgIGRlc3Ryb3lJbXBsLmRlc3Ryb3llcihzdHJlYW0sIG51bGwpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmVhbS5vZmYoJ3JlYWRhYmxlJywgbmV4dClcbiAgICAgIGNsZWFudXAoKVxuICAgIH1cbiAgfVxufVxuXG4vLyBNYWtpbmcgaXQgZXhwbGljaXQgdGhlc2UgcHJvcGVydGllcyBhcmUgbm90IGVudW1lcmFibGVcbi8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuLy8gdXNlcmxhbmQgd2lsbCBmYWlsLlxuT2JqZWN0RGVmaW5lUHJvcGVydGllcyhSZWFkYWJsZS5wcm90b3R5cGUsIHtcbiAgcmVhZGFibGU6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgY29uc3QgciA9IHRoaXMuX3JlYWRhYmxlU3RhdGVcbiAgICAgIC8vIHIucmVhZGFibGUgPT09IGZhbHNlIG1lYW5zIHRoYXQgdGhpcyBpcyBwYXJ0IG9mIGEgRHVwbGV4IHN0cmVhbVxuICAgICAgLy8gd2hlcmUgdGhlIHJlYWRhYmxlIHNpZGUgd2FzIGRpc2FibGVkIHVwb24gY29uc3RydWN0aW9uLlxuICAgICAgLy8gQ29tcGF0LiBUaGUgdXNlciBtaWdodCBtYW51YWxseSBkaXNhYmxlIHJlYWRhYmxlIHNpZGUgdGhyb3VnaFxuICAgICAgLy8gZGVwcmVjYXRlZCBzZXR0ZXIuXG4gICAgICByZXR1cm4gISFyICYmIHIucmVhZGFibGUgIT09IGZhbHNlICYmICFyLmRlc3Ryb3llZCAmJiAhci5lcnJvckVtaXR0ZWQgJiYgIXIuZW5kRW1pdHRlZFxuICAgIH0sXG4gICAgc2V0KHZhbCkge1xuICAgICAgLy8gQmFja3dhcmRzIGNvbXBhdC5cbiAgICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGFibGUgPSAhIXZhbFxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcmVhZGFibGVEaWRSZWFkOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGF0YUVtaXR0ZWRcbiAgICB9XG4gIH0sXG4gIHJlYWRhYmxlQWJvcnRlZDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAhIShcbiAgICAgICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkYWJsZSAhPT0gZmFsc2UgJiZcbiAgICAgICAgKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkIHx8IHRoaXMuX3JlYWRhYmxlU3RhdGUuZXJyb3JlZCkgJiZcbiAgICAgICAgIXRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZFxuICAgICAgKVxuICAgIH1cbiAgfSxcbiAgcmVhZGFibGVIaWdoV2F0ZXJNYXJrOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya1xuICAgIH1cbiAgfSxcbiAgcmVhZGFibGVCdWZmZXI6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSAmJiB0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlclxuICAgIH1cbiAgfSxcbiAgcmVhZGFibGVGbG93aW5nOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9IHN0YXRlXG4gICAgICB9XG4gICAgfVxuICB9LFxuICByZWFkYWJsZUxlbmd0aDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGhcbiAgICB9XG4gIH0sXG4gIHJlYWRhYmxlT2JqZWN0TW9kZToge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSA/IHRoaXMuX3JlYWRhYmxlU3RhdGUub2JqZWN0TW9kZSA6IGZhbHNlXG4gICAgfVxuICB9LFxuICByZWFkYWJsZUVuY29kaW5nOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlID8gdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZyA6IG51bGxcbiAgICB9XG4gIH0sXG4gIGVycm9yZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUgPyB0aGlzLl9yZWFkYWJsZVN0YXRlLmVycm9yZWQgOiBudWxsXG4gICAgfVxuICB9LFxuICBjbG9zZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUgPyB0aGlzLl9yZWFkYWJsZVN0YXRlLmNsb3NlZCA6IGZhbHNlXG4gICAgfVxuICB9LFxuICBkZXN0cm95ZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUgPyB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA6IGZhbHNlXG4gICAgfSxcbiAgICBzZXQodmFsdWUpIHtcbiAgICAgIC8vIFdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC5cbiAgICAgIGlmICghdGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkLlxuICAgICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZVxuICAgIH1cbiAgfSxcbiAgcmVhZGFibGVFbmRlZDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSA/IHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCA6IGZhbHNlXG4gICAgfVxuICB9XG59KVxuT2JqZWN0RGVmaW5lUHJvcGVydGllcyhSZWFkYWJsZVN0YXRlLnByb3RvdHlwZSwge1xuICAvLyBMZWdhY3kgZ2V0dGVyIGZvciBgcGlwZXNDb3VudGAuXG4gIHBpcGVzQ291bnQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMucGlwZXMubGVuZ3RoXG4gICAgfVxuICB9LFxuICAvLyBMZWdhY3kgcHJvcGVydHkgZm9yIGBwYXVzZWRgLlxuICBwYXVzZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXNba1BhdXNlZF0gIT09IGZhbHNlXG4gICAgfSxcbiAgICBzZXQodmFsdWUpIHtcbiAgICAgIHRoaXNba1BhdXNlZF0gPSAhIXZhbHVlXG4gICAgfVxuICB9XG59KVxuXG4vLyBFeHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuXG5SZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdFxuXG4vLyBQbHVjayBvZmYgbiBieXRlcyBmcm9tIGFuIGFycmF5IG9mIGJ1ZmZlcnMuXG4vLyBMZW5ndGggaXMgdGhlIGNvbWJpbmVkIGxlbmd0aHMgb2YgYWxsIHRoZSBidWZmZXJzIGluIHRoZSBsaXN0LlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdChuLCBzdGF0ZSkge1xuICAvLyBub3RoaW5nIGJ1ZmZlcmVkLlxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbFxuICBsZXQgcmV0XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXQgPSBzdGF0ZS5idWZmZXIuc2hpZnQoKVxuICBlbHNlIGlmICghbiB8fCBuID49IHN0YXRlLmxlbmd0aCkge1xuICAgIC8vIFJlYWQgaXQgYWxsLCB0cnVuY2F0ZSB0aGUgbGlzdC5cbiAgICBpZiAoc3RhdGUuZGVjb2RlcikgcmV0ID0gc3RhdGUuYnVmZmVyLmpvaW4oJycpXG4gICAgZWxzZSBpZiAoc3RhdGUuYnVmZmVyLmxlbmd0aCA9PT0gMSkgcmV0ID0gc3RhdGUuYnVmZmVyLmZpcnN0KClcbiAgICBlbHNlIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25jYXQoc3RhdGUubGVuZ3RoKVxuICAgIHN0YXRlLmJ1ZmZlci5jbGVhcigpXG4gIH0gZWxzZSB7XG4gICAgLy8gcmVhZCBwYXJ0IG9mIGxpc3QuXG4gICAgcmV0ID0gc3RhdGUuYnVmZmVyLmNvbnN1bWUobiwgc3RhdGUuZGVjb2RlcilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5mdW5jdGlvbiBlbmRSZWFkYWJsZShzdHJlYW0pIHtcbiAgY29uc3Qgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGVcbiAgZGVidWcoJ2VuZFJlYWRhYmxlJywgc3RhdGUuZW5kRW1pdHRlZClcbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkKSB7XG4gICAgc3RhdGUuZW5kZWQgPSB0cnVlXG4gICAgcHJvY2Vzcy5uZXh0VGljayhlbmRSZWFkYWJsZU5ULCBzdGF0ZSwgc3RyZWFtKVxuICB9XG59XG5mdW5jdGlvbiBlbmRSZWFkYWJsZU5UKHN0YXRlLCBzdHJlYW0pIHtcbiAgZGVidWcoJ2VuZFJlYWRhYmxlTlQnLCBzdGF0ZS5lbmRFbWl0dGVkLCBzdGF0ZS5sZW5ndGgpXG5cbiAgLy8gQ2hlY2sgdGhhdCB3ZSBkaWRuJ3QgZ2V0IG9uZSBsYXN0IHVuc2hpZnQuXG4gIGlmICghc3RhdGUuZXJyb3JlZCAmJiAhc3RhdGUuY2xvc2VFbWl0dGVkICYmICFzdGF0ZS5lbmRFbWl0dGVkICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlXG4gICAgc3RyZWFtLmVtaXQoJ2VuZCcpXG4gICAgaWYgKHN0cmVhbS53cml0YWJsZSAmJiBzdHJlYW0uYWxsb3dIYWxmT3BlbiA9PT0gZmFsc2UpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW5kV3JpdGFibGVOVCwgc3RyZWFtKVxuICAgIH0gZWxzZSBpZiAoc3RhdGUuYXV0b0Rlc3Ryb3kpIHtcbiAgICAgIC8vIEluIGNhc2Ugb2YgZHVwbGV4IHN0cmVhbXMgd2UgbmVlZCBhIHdheSB0byBkZXRlY3RcbiAgICAgIC8vIGlmIHRoZSB3cml0YWJsZSBzaWRlIGlzIHJlYWR5IGZvciBhdXRvRGVzdHJveSBhcyB3ZWxsLlxuICAgICAgY29uc3Qgd1N0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlXG4gICAgICBjb25zdCBhdXRvRGVzdHJveSA9XG4gICAgICAgICF3U3RhdGUgfHxcbiAgICAgICAgKHdTdGF0ZS5hdXRvRGVzdHJveSAmJlxuICAgICAgICAgIC8vIFdlIGRvbid0IGV4cGVjdCB0aGUgd3JpdGFibGUgdG8gZXZlciAnZmluaXNoJ1xuICAgICAgICAgIC8vIGlmIHdyaXRhYmxlIGlzIGV4cGxpY2l0bHkgc2V0IHRvIGZhbHNlLlxuICAgICAgICAgICh3U3RhdGUuZmluaXNoZWQgfHwgd1N0YXRlLndyaXRhYmxlID09PSBmYWxzZSkpXG4gICAgICBpZiAoYXV0b0Rlc3Ryb3kpIHtcbiAgICAgICAgc3RyZWFtLmRlc3Ryb3koKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gZW5kV3JpdGFibGVOVChzdHJlYW0pIHtcbiAgY29uc3Qgd3JpdGFibGUgPSBzdHJlYW0ud3JpdGFibGUgJiYgIXN0cmVhbS53cml0YWJsZUVuZGVkICYmICFzdHJlYW0uZGVzdHJveWVkXG4gIGlmICh3cml0YWJsZSkge1xuICAgIHN0cmVhbS5lbmQoKVxuICB9XG59XG5SZWFkYWJsZS5mcm9tID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCBvcHRzKSB7XG4gIHJldHVybiBmcm9tKFJlYWRhYmxlLCBpdGVyYWJsZSwgb3B0cylcbn1cbmxldCB3ZWJTdHJlYW1zQWRhcHRlcnNcblxuLy8gTGF6eSB0byBhdm9pZCBjaXJjdWxhciByZWZlcmVuY2VzXG5mdW5jdGlvbiBsYXp5V2ViU3RyZWFtcygpIHtcbiAgaWYgKHdlYlN0cmVhbXNBZGFwdGVycyA9PT0gdW5kZWZpbmVkKSB3ZWJTdHJlYW1zQWRhcHRlcnMgPSB7fVxuICByZXR1cm4gd2ViU3RyZWFtc0FkYXB0ZXJzXG59XG5SZWFkYWJsZS5mcm9tV2ViID0gZnVuY3Rpb24gKHJlYWRhYmxlU3RyZWFtLCBvcHRpb25zKSB7XG4gIHJldHVybiBsYXp5V2ViU3RyZWFtcygpLm5ld1N0cmVhbVJlYWRhYmxlRnJvbVJlYWRhYmxlU3RyZWFtKHJlYWRhYmxlU3RyZWFtLCBvcHRpb25zKVxufVxuUmVhZGFibGUudG9XZWIgPSBmdW5jdGlvbiAoc3RyZWFtUmVhZGFibGUsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGxhenlXZWJTdHJlYW1zKCkubmV3UmVhZGFibGVTdHJlYW1Gcm9tU3RyZWFtUmVhZGFibGUoc3RyZWFtUmVhZGFibGUsIG9wdGlvbnMpXG59XG5SZWFkYWJsZS53cmFwID0gZnVuY3Rpb24gKHNyYywgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3NyYyRyZWFkYWJsZU9iamVjdE1vXG4gIHJldHVybiBuZXcgUmVhZGFibGUoe1xuICAgIG9iamVjdE1vZGU6XG4gICAgICAoX3JlZiA9XG4gICAgICAgIChfc3JjJHJlYWRhYmxlT2JqZWN0TW8gPSBzcmMucmVhZGFibGVPYmplY3RNb2RlKSAhPT0gbnVsbCAmJiBfc3JjJHJlYWRhYmxlT2JqZWN0TW8gIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gX3NyYyRyZWFkYWJsZU9iamVjdE1vXG4gICAgICAgICAgOiBzcmMub2JqZWN0TW9kZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gX3JlZlxuICAgICAgICA6IHRydWUsXG4gICAgLi4ub3B0aW9ucyxcbiAgICBkZXN0cm95KGVyciwgY2FsbGJhY2spIHtcbiAgICAgIGRlc3Ryb3lJbXBsLmRlc3Ryb3llcihzcmMsIGVycilcbiAgICAgIGNhbGxiYWNrKGVycilcbiAgICB9XG4gIH0pLndyYXAoc3JjKVxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIEEgYml0IHNpbXBsZXIgdGhhbiByZWFkYWJsZSBzdHJlYW1zLlxuLy8gSW1wbGVtZW50IGFuIGFzeW5jIC5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYiksIGFuZCBpdCdsbCBoYW5kbGUgYWxsXG4vLyB0aGUgZHJhaW4gZXZlbnQgZW1pc3Npb24gYW5kIGJ1ZmZlcmluZy5cblxuJ3VzZSBzdHJpY3QnXG5cbi8qIHJlcGxhY2VtZW50IHN0YXJ0ICovXG5cbmNvbnN0IHByb2Nlc3MgPSByZXF1aXJlKCdwcm9jZXNzLycpXG5cbi8qIHJlcGxhY2VtZW50IGVuZCAqL1xuXG5jb25zdCB7XG4gIEFycmF5UHJvdG90eXBlU2xpY2UsXG4gIEVycm9yLFxuICBGdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0luc3RhbmNlLFxuICBPYmplY3REZWZpbmVQcm9wZXJ0eSxcbiAgT2JqZWN0RGVmaW5lUHJvcGVydGllcyxcbiAgT2JqZWN0U2V0UHJvdG90eXBlT2YsXG4gIFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlLFxuICBTeW1ib2wsXG4gIFN5bWJvbEhhc0luc3RhbmNlXG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRhYmxlXG5Xcml0YWJsZS5Xcml0YWJsZVN0YXRlID0gV3JpdGFibGVTdGF0ZVxuY29uc3QgeyBFdmVudEVtaXR0ZXI6IEVFIH0gPSByZXF1aXJlKCdldmVudHMnKVxuY29uc3QgU3RyZWFtID0gcmVxdWlyZSgnLi9sZWdhY3knKS5TdHJlYW1cbmNvbnN0IHsgQnVmZmVyIH0gPSByZXF1aXJlKCdidWZmZXInKVxuY29uc3QgZGVzdHJveUltcGwgPSByZXF1aXJlKCcuL2Rlc3Ryb3knKVxuY29uc3QgeyBhZGRBYm9ydFNpZ25hbCB9ID0gcmVxdWlyZSgnLi9hZGQtYWJvcnQtc2lnbmFsJylcbmNvbnN0IHsgZ2V0SGlnaFdhdGVyTWFyaywgZ2V0RGVmYXVsdEhpZ2hXYXRlck1hcmsgfSA9IHJlcXVpcmUoJy4vc3RhdGUnKVxuY29uc3Qge1xuICBFUlJfSU5WQUxJRF9BUkdfVFlQRSxcbiAgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsXG4gIEVSUl9NVUxUSVBMRV9DQUxMQkFDSyxcbiAgRVJSX1NUUkVBTV9DQU5OT1RfUElQRSxcbiAgRVJSX1NUUkVBTV9ERVNUUk9ZRUQsXG4gIEVSUl9TVFJFQU1fQUxSRUFEWV9GSU5JU0hFRCxcbiAgRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyxcbiAgRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQsXG4gIEVSUl9VTktOT1dOX0VOQ09ESU5HXG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9lcnJvcnMnKS5jb2Rlc1xuY29uc3QgeyBlcnJvck9yRGVzdHJveSB9ID0gZGVzdHJveUltcGxcbk9iamVjdFNldFByb3RvdHlwZU9mKFdyaXRhYmxlLnByb3RvdHlwZSwgU3RyZWFtLnByb3RvdHlwZSlcbk9iamVjdFNldFByb3RvdHlwZU9mKFdyaXRhYmxlLCBTdHJlYW0pXG5mdW5jdGlvbiBub3AoKSB7fVxuY29uc3Qga09uRmluaXNoZWQgPSBTeW1ib2woJ2tPbkZpbmlzaGVkJylcbmZ1bmN0aW9uIFdyaXRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtLCBpc0R1cGxleCkge1xuICAvLyBEdXBsZXggc3RyZWFtcyBhcmUgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGJ1dCBzaGFyZVxuICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC5cbiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnRcbiAgLy8gdmFsdWVzIGZvciB0aGUgcmVhZGFibGUgYW5kIHRoZSB3cml0YWJsZSBzaWRlcyBvZiB0aGUgZHVwbGV4IHN0cmVhbSxcbiAgLy8gZS5nLiBvcHRpb25zLnJlYWRhYmxlT2JqZWN0TW9kZSB2cy4gb3B0aW9ucy53cml0YWJsZU9iamVjdE1vZGUsIGV0Yy5cbiAgaWYgKHR5cGVvZiBpc0R1cGxleCAhPT0gJ2Jvb2xlYW4nKSBpc0R1cGxleCA9IHN0cmVhbSBpbnN0YW5jZW9mIHJlcXVpcmUoJy4vZHVwbGV4JylcblxuICAvLyBPYmplY3Qgc3RyZWFtIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhpcyBzdHJlYW1cbiAgLy8gY29udGFpbnMgYnVmZmVycyBvciBvYmplY3RzLlxuICB0aGlzLm9iamVjdE1vZGUgPSAhIShvcHRpb25zICYmIG9wdGlvbnMub2JqZWN0TW9kZSlcbiAgaWYgKGlzRHVwbGV4KSB0aGlzLm9iamVjdE1vZGUgPSB0aGlzLm9iamVjdE1vZGUgfHwgISEob3B0aW9ucyAmJiBvcHRpb25zLndyaXRhYmxlT2JqZWN0TW9kZSlcblxuICAvLyBUaGUgcG9pbnQgYXQgd2hpY2ggd3JpdGUoKSBzdGFydHMgcmV0dXJuaW5nIGZhbHNlXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgdGhhdCB3ZSBhbHdheXMgcmV0dXJuIGZhbHNlIGlmXG4gIC8vIHRoZSBlbnRpcmUgYnVmZmVyIGlzIG5vdCBmbHVzaGVkIGltbWVkaWF0ZWx5IG9uIHdyaXRlKCkuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IG9wdGlvbnNcbiAgICA/IGdldEhpZ2hXYXRlck1hcmsodGhpcywgb3B0aW9ucywgJ3dyaXRhYmxlSGlnaFdhdGVyTWFyaycsIGlzRHVwbGV4KVxuICAgIDogZ2V0RGVmYXVsdEhpZ2hXYXRlck1hcmsoZmFsc2UpXG5cbiAgLy8gaWYgX2ZpbmFsIGhhcyBiZWVuIGNhbGxlZC5cbiAgdGhpcy5maW5hbENhbGxlZCA9IGZhbHNlXG5cbiAgLy8gZHJhaW4gZXZlbnQgZmxhZy5cbiAgdGhpcy5uZWVkRHJhaW4gPSBmYWxzZVxuICAvLyBBdCB0aGUgc3RhcnQgb2YgY2FsbGluZyBlbmQoKVxuICB0aGlzLmVuZGluZyA9IGZhbHNlXG4gIC8vIFdoZW4gZW5kKCkgaGFzIGJlZW4gY2FsbGVkLCBhbmQgcmV0dXJuZWQuXG4gIHRoaXMuZW5kZWQgPSBmYWxzZVxuICAvLyBXaGVuICdmaW5pc2gnIGlzIGVtaXR0ZWQuXG4gIHRoaXMuZmluaXNoZWQgPSBmYWxzZVxuXG4gIC8vIEhhcyBpdCBiZWVuIGRlc3Ryb3llZFxuICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlXG5cbiAgLy8gU2hvdWxkIHdlIGRlY29kZSBzdHJpbmdzIGludG8gYnVmZmVycyBiZWZvcmUgcGFzc2luZyB0byBfd3JpdGU/XG4gIC8vIHRoaXMgaXMgaGVyZSBzbyB0aGF0IHNvbWUgbm9kZS1jb3JlIHN0cmVhbXMgY2FuIG9wdGltaXplIHN0cmluZ1xuICAvLyBoYW5kbGluZyBhdCBhIGxvd2VyIGxldmVsLlxuICBjb25zdCBub0RlY29kZSA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5kZWNvZGVTdHJpbmdzID09PSBmYWxzZSlcbiAgdGhpcy5kZWNvZGVTdHJpbmdzID0gIW5vRGVjb2RlXG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSAob3B0aW9ucyAmJiBvcHRpb25zLmRlZmF1bHRFbmNvZGluZykgfHwgJ3V0ZjgnXG5cbiAgLy8gTm90IGFuIGFjdHVhbCBidWZmZXIgd2Uga2VlcCB0cmFjayBvZiwgYnV0IGEgbWVhc3VyZW1lbnRcbiAgLy8gb2YgaG93IG11Y2ggd2UncmUgd2FpdGluZyB0byBnZXQgcHVzaGVkIHRvIHNvbWUgdW5kZXJseWluZ1xuICAvLyBzb2NrZXQgb3IgZmlsZS5cbiAgdGhpcy5sZW5ndGggPSAwXG5cbiAgLy8gQSBmbGFnIHRvIHNlZSB3aGVuIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYSB3cml0ZS5cbiAgdGhpcy53cml0aW5nID0gZmFsc2VcblxuICAvLyBXaGVuIHRydWUgYWxsIHdyaXRlcyB3aWxsIGJlIGJ1ZmZlcmVkIHVudGlsIC51bmNvcmsoKSBjYWxsLlxuICB0aGlzLmNvcmtlZCA9IDBcblxuICAvLyBBIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBvbndyaXRlIGNiIGlzIGNhbGxlZCBpbW1lZGlhdGVseSxcbiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnlcbiAgLy8gYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUgY2FsbC5cbiAgdGhpcy5zeW5jID0gdHJ1ZVxuXG4gIC8vIEEgZmxhZyB0byBrbm93IGlmIHdlJ3JlIHByb2Nlc3NpbmcgcHJldmlvdXNseSBidWZmZXJlZCBpdGVtcywgd2hpY2hcbiAgLy8gbWF5IGNhbGwgdGhlIF93cml0ZSgpIGNhbGxiYWNrIGluIHRoZSBzYW1lIHRpY2ssIHNvIHRoYXQgd2UgZG9uJ3RcbiAgLy8gZW5kIHVwIGluIGFuIG92ZXJsYXBwZWQgb253cml0ZSBzaXR1YXRpb24uXG4gIHRoaXMuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlXG5cbiAgLy8gVGhlIGNhbGxiYWNrIHRoYXQncyBwYXNzZWQgdG8gX3dyaXRlKGNodW5rLCBjYikuXG4gIHRoaXMub253cml0ZSA9IG9ud3JpdGUuYmluZCh1bmRlZmluZWQsIHN0cmVhbSlcblxuICAvLyBUaGUgY2FsbGJhY2sgdGhhdCB0aGUgdXNlciBzdXBwbGllcyB0byB3cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKS5cbiAgdGhpcy53cml0ZWNiID0gbnVsbFxuXG4gIC8vIFRoZSBhbW91bnQgdGhhdCBpcyBiZWluZyB3cml0dGVuIHdoZW4gX3dyaXRlIGlzIGNhbGxlZC5cbiAgdGhpcy53cml0ZWxlbiA9IDBcblxuICAvLyBTdG9yYWdlIGZvciBkYXRhIHBhc3NlZCB0byB0aGUgYWZ0ZXJXcml0ZSgpIGNhbGxiYWNrIGluIGNhc2Ugb2ZcbiAgLy8gc3luY2hyb25vdXMgX3dyaXRlKCkgY29tcGxldGlvbi5cbiAgdGhpcy5hZnRlcldyaXRlVGlja0luZm8gPSBudWxsXG4gIHJlc2V0QnVmZmVyKHRoaXMpXG5cbiAgLy8gTnVtYmVyIG9mIHBlbmRpbmcgdXNlci1zdXBwbGllZCB3cml0ZSBjYWxsYmFja3NcbiAgLy8gdGhpcyBtdXN0IGJlIDAgYmVmb3JlICdmaW5pc2gnIGNhbiBiZSBlbWl0dGVkLlxuICB0aGlzLnBlbmRpbmdjYiA9IDBcblxuICAvLyBTdHJlYW0gaXMgc3RpbGwgYmVpbmcgY29uc3RydWN0ZWQgYW5kIGNhbm5vdCBiZVxuICAvLyBkZXN0cm95ZWQgdW50aWwgY29uc3RydWN0aW9uIGZpbmlzaGVkIG9yIGZhaWxlZC5cbiAgLy8gQXN5bmMgY29uc3RydWN0aW9uIGlzIG9wdCBpbiwgdGhlcmVmb3JlIHdlIHN0YXJ0IGFzXG4gIC8vIGNvbnN0cnVjdGVkLlxuICB0aGlzLmNvbnN0cnVjdGVkID0gdHJ1ZVxuXG4gIC8vIEVtaXQgcHJlZmluaXNoIGlmIHRoZSBvbmx5IHRoaW5nIHdlJ3JlIHdhaXRpbmcgZm9yIGlzIF93cml0ZSBjYnNcbiAgLy8gVGhpcyBpcyByZWxldmFudCBmb3Igc3luY2hyb25vdXMgVHJhbnNmb3JtIHN0cmVhbXMuXG4gIHRoaXMucHJlZmluaXNoZWQgPSBmYWxzZVxuXG4gIC8vIFRydWUgaWYgdGhlIGVycm9yIHdhcyBhbHJlYWR5IGVtaXR0ZWQgYW5kIHNob3VsZCBub3QgYmUgdGhyb3duIGFnYWluLlxuICB0aGlzLmVycm9yRW1pdHRlZCA9IGZhbHNlXG5cbiAgLy8gU2hvdWxkIGNsb3NlIGJlIGVtaXR0ZWQgb24gZGVzdHJveS4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgdGhpcy5lbWl0Q2xvc2UgPSAhb3B0aW9ucyB8fCBvcHRpb25zLmVtaXRDbG9zZSAhPT0gZmFsc2VcblxuICAvLyBTaG91bGQgLmRlc3Ryb3koKSBiZSBjYWxsZWQgYWZ0ZXIgJ2ZpbmlzaCcgKGFuZCBwb3RlbnRpYWxseSAnZW5kJykuXG4gIHRoaXMuYXV0b0Rlc3Ryb3kgPSAhb3B0aW9ucyB8fCBvcHRpb25zLmF1dG9EZXN0cm95ICE9PSBmYWxzZVxuXG4gIC8vIEluZGljYXRlcyB3aGV0aGVyIHRoZSBzdHJlYW0gaGFzIGVycm9yZWQuIFdoZW4gdHJ1ZSBhbGwgd3JpdGUoKSBjYWxsc1xuICAvLyBzaG91bGQgcmV0dXJuIGZhbHNlLiBUaGlzIGlzIG5lZWRlZCBzaW5jZSB3aGVuIGF1dG9EZXN0cm95XG4gIC8vIGlzIGRpc2FibGVkIHdlIG5lZWQgYSB3YXkgdG8gdGVsbCB3aGV0aGVyIHRoZSBzdHJlYW0gaGFzIGZhaWxlZC5cbiAgdGhpcy5lcnJvcmVkID0gbnVsbFxuXG4gIC8vIEluZGljYXRlcyB3aGV0aGVyIHRoZSBzdHJlYW0gaGFzIGZpbmlzaGVkIGRlc3Ryb3lpbmcuXG4gIHRoaXMuY2xvc2VkID0gZmFsc2VcblxuICAvLyBUcnVlIGlmIGNsb3NlIGhhcyBiZWVuIGVtaXR0ZWQgb3Igd291bGQgaGF2ZSBiZWVuIGVtaXR0ZWRcbiAgLy8gZGVwZW5kaW5nIG9uIGVtaXRDbG9zZS5cbiAgdGhpcy5jbG9zZUVtaXR0ZWQgPSBmYWxzZVxuICB0aGlzW2tPbkZpbmlzaGVkXSA9IFtdXG59XG5mdW5jdGlvbiByZXNldEJ1ZmZlcihzdGF0ZSkge1xuICBzdGF0ZS5idWZmZXJlZCA9IFtdXG4gIHN0YXRlLmJ1ZmZlcmVkSW5kZXggPSAwXG4gIHN0YXRlLmFsbEJ1ZmZlcnMgPSB0cnVlXG4gIHN0YXRlLmFsbE5vb3AgPSB0cnVlXG59XG5Xcml0YWJsZVN0YXRlLnByb3RvdHlwZS5nZXRCdWZmZXIgPSBmdW5jdGlvbiBnZXRCdWZmZXIoKSB7XG4gIHJldHVybiBBcnJheVByb3RvdHlwZVNsaWNlKHRoaXMuYnVmZmVyZWQsIHRoaXMuYnVmZmVyZWRJbmRleClcbn1cbk9iamVjdERlZmluZVByb3BlcnR5KFdyaXRhYmxlU3RhdGUucHJvdG90eXBlLCAnYnVmZmVyZWRSZXF1ZXN0Q291bnQnLCB7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlcmVkLmxlbmd0aCAtIHRoaXMuYnVmZmVyZWRJbmRleFxuICB9XG59KVxuZnVuY3Rpb24gV3JpdGFibGUob3B0aW9ucykge1xuICAvLyBXcml0YWJsZSBjdG9yIGlzIGFwcGxpZWQgdG8gRHVwbGV4ZXMsIHRvby5cbiAgLy8gYHJlYWxIYXNJbnN0YW5jZWAgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdXNpbmcgcGxhaW4gYGluc3RhbmNlb2ZgXG4gIC8vIHdvdWxkIHJldHVybiBmYWxzZSwgYXMgbm8gYF93cml0YWJsZVN0YXRlYCBwcm9wZXJ0eSBpcyBhdHRhY2hlZC5cblxuICAvLyBUcnlpbmcgdG8gdXNlIHRoZSBjdXN0b20gYGluc3RhbmNlb2ZgIGZvciBXcml0YWJsZSBoZXJlIHdpbGwgYWxzbyBicmVhayB0aGVcbiAgLy8gTm9kZS5qcyBMYXp5VHJhbnNmb3JtIGltcGxlbWVudGF0aW9uLCB3aGljaCBoYXMgYSBub24tdHJpdmlhbCBnZXR0ZXIgZm9yXG4gIC8vIGBfd3JpdGFibGVTdGF0ZWAgdGhhdCB3b3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cblxuICAvLyBDaGVja2luZyBmb3IgYSBTdHJlYW0uRHVwbGV4IGluc3RhbmNlIGlzIGZhc3RlciBoZXJlIGluc3RlYWQgb2YgaW5zaWRlXG4gIC8vIHRoZSBXcml0YWJsZVN0YXRlIGNvbnN0cnVjdG9yLCBhdCBsZWFzdCB3aXRoIFY4IDYuNS5cbiAgY29uc3QgaXNEdXBsZXggPSB0aGlzIGluc3RhbmNlb2YgcmVxdWlyZSgnLi9kdXBsZXgnKVxuICBpZiAoIWlzRHVwbGV4ICYmICFGdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0luc3RhbmNlKFdyaXRhYmxlLCB0aGlzKSkgcmV0dXJuIG5ldyBXcml0YWJsZShvcHRpb25zKVxuICB0aGlzLl93cml0YWJsZVN0YXRlID0gbmV3IFdyaXRhYmxlU3RhdGUob3B0aW9ucywgdGhpcywgaXNEdXBsZXgpXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRlID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZSA9IG9wdGlvbnMud3JpdGVcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGV2ID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZXYgPSBvcHRpb25zLndyaXRldlxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZpbmFsID09PSAnZnVuY3Rpb24nKSB0aGlzLl9maW5hbCA9IG9wdGlvbnMuZmluYWxcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuY29uc3RydWN0ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9jb25zdHJ1Y3QgPSBvcHRpb25zLmNvbnN0cnVjdFxuICAgIGlmIChvcHRpb25zLnNpZ25hbCkgYWRkQWJvcnRTaWduYWwob3B0aW9ucy5zaWduYWwsIHRoaXMpXG4gIH1cbiAgU3RyZWFtLmNhbGwodGhpcywgb3B0aW9ucylcbiAgZGVzdHJveUltcGwuY29uc3RydWN0KHRoaXMsICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGVcbiAgICBpZiAoIXN0YXRlLndyaXRpbmcpIHtcbiAgICAgIGNsZWFyQnVmZmVyKHRoaXMsIHN0YXRlKVxuICAgIH1cbiAgICBmaW5pc2hNYXliZSh0aGlzLCBzdGF0ZSlcbiAgfSlcbn1cbk9iamVjdERlZmluZVByb3BlcnR5KFdyaXRhYmxlLCBTeW1ib2xIYXNJbnN0YW5jZSwge1xuICBfX3Byb3RvX186IG51bGwsXG4gIHZhbHVlOiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgaWYgKEZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFzSW5zdGFuY2UodGhpcywgb2JqZWN0KSkgcmV0dXJuIHRydWVcbiAgICBpZiAodGhpcyAhPT0gV3JpdGFibGUpIHJldHVybiBmYWxzZVxuICAgIHJldHVybiBvYmplY3QgJiYgb2JqZWN0Ll93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgV3JpdGFibGVTdGF0ZVxuICB9XG59KVxuXG4vLyBPdGhlcndpc2UgcGVvcGxlIGNhbiBwaXBlIFdyaXRhYmxlIHN0cmVhbXMsIHdoaWNoIGlzIGp1c3Qgd3JvbmcuXG5Xcml0YWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgZXJyb3JPckRlc3Ryb3kodGhpcywgbmV3IEVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUoKSlcbn1cbmZ1bmN0aW9uIF93cml0ZShzdHJlYW0sIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY29uc3Qgc3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGVcbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2RpbmdcbiAgICBlbmNvZGluZyA9IHN0YXRlLmRlZmF1bHRFbmNvZGluZ1xuICB9IGVsc2Uge1xuICAgIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gc3RhdGUuZGVmYXVsdEVuY29kaW5nXG4gICAgZWxzZSBpZiAoZW5jb2RpbmcgIT09ICdidWZmZXInICYmICFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHRocm93IG5ldyBFUlJfVU5LTk9XTl9FTkNPRElORyhlbmNvZGluZylcbiAgICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSBjYiA9IG5vcFxuICB9XG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFUlJfU1RSRUFNX05VTExfVkFMVUVTKClcbiAgfSBlbHNlIGlmICghc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoc3RhdGUuZGVjb2RlU3RyaW5ncyAhPT0gZmFsc2UpIHtcbiAgICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gJ2J1ZmZlcidcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNodW5rIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICBlbmNvZGluZyA9ICdidWZmZXInXG4gICAgfSBlbHNlIGlmIChTdHJlYW0uX2lzVWludDhBcnJheShjaHVuaykpIHtcbiAgICAgIGNodW5rID0gU3RyZWFtLl91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspXG4gICAgICBlbmNvZGluZyA9ICdidWZmZXInXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnY2h1bmsnLCBbJ3N0cmluZycsICdCdWZmZXInLCAnVWludDhBcnJheSddLCBjaHVuaylcbiAgICB9XG4gIH1cbiAgbGV0IGVyclxuICBpZiAoc3RhdGUuZW5kaW5nKSB7XG4gICAgZXJyID0gbmV3IEVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5EKClcbiAgfSBlbHNlIGlmIChzdGF0ZS5kZXN0cm95ZWQpIHtcbiAgICBlcnIgPSBuZXcgRVJSX1NUUkVBTV9ERVNUUk9ZRUQoJ3dyaXRlJylcbiAgfVxuICBpZiAoZXJyKSB7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhjYiwgZXJyKVxuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXJyLCB0cnVlKVxuICAgIHJldHVybiBlcnJcbiAgfVxuICBzdGF0ZS5wZW5kaW5nY2IrK1xuICByZXR1cm4gd3JpdGVPckJ1ZmZlcihzdHJlYW0sIHN0YXRlLCBjaHVuaywgZW5jb2RpbmcsIGNiKVxufVxuV3JpdGFibGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgcmV0dXJuIF93cml0ZSh0aGlzLCBjaHVuaywgZW5jb2RpbmcsIGNiKSA9PT0gdHJ1ZVxufVxuV3JpdGFibGUucHJvdG90eXBlLmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUuY29ya2VkKytcbn1cbldyaXRhYmxlLnByb3RvdHlwZS51bmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZVxuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkLS1cbiAgICBpZiAoIXN0YXRlLndyaXRpbmcpIGNsZWFyQnVmZmVyKHRoaXMsIHN0YXRlKVxuICB9XG59XG5Xcml0YWJsZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nID0gZnVuY3Rpb24gc2V0RGVmYXVsdEVuY29kaW5nKGVuY29kaW5nKSB7XG4gIC8vIG5vZGU6OlBhcnNlRW5jb2RpbmcoKSByZXF1aXJlcyBsb3dlciBjYXNlLlxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykgZW5jb2RpbmcgPSBTdHJpbmdQcm90b3R5cGVUb0xvd2VyQ2FzZShlbmNvZGluZylcbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHRocm93IG5ldyBFUlJfVU5LTk9XTl9FTkNPRElORyhlbmNvZGluZylcbiAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2RpbmcgPSBlbmNvZGluZ1xuICByZXR1cm4gdGhpc1xufVxuXG4vLyBJZiB3ZSdyZSBhbHJlYWR5IHdyaXRpbmcgc29tZXRoaW5nLCB0aGVuIGp1c3QgcHV0IHRoaXNcbi8vIGluIHRoZSBxdWV1ZSwgYW5kIHdhaXQgb3VyIHR1cm4uICBPdGhlcndpc2UsIGNhbGwgX3dyaXRlXG4vLyBJZiB3ZSByZXR1cm4gZmFsc2UsIHRoZW4gd2UgbmVlZCBhIGRyYWluIGV2ZW50LCBzbyBzZXQgdGhhdCBmbGFnLlxuZnVuY3Rpb24gd3JpdGVPckJ1ZmZlcihzdHJlYW0sIHN0YXRlLCBjaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoXG4gIHN0YXRlLmxlbmd0aCArPSBsZW5cblxuICAvLyBzdHJlYW0uX3dyaXRlIHJlc2V0cyBzdGF0ZS5sZW5ndGhcbiAgY29uc3QgcmV0ID0gc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFya1xuICAvLyBXZSBtdXN0IGVuc3VyZSB0aGF0IHByZXZpb3VzIG5lZWREcmFpbiB3aWxsIG5vdCBiZSByZXNldCB0byBmYWxzZS5cbiAgaWYgKCFyZXQpIHN0YXRlLm5lZWREcmFpbiA9IHRydWVcbiAgaWYgKHN0YXRlLndyaXRpbmcgfHwgc3RhdGUuY29ya2VkIHx8IHN0YXRlLmVycm9yZWQgfHwgIXN0YXRlLmNvbnN0cnVjdGVkKSB7XG4gICAgc3RhdGUuYnVmZmVyZWQucHVzaCh7XG4gICAgICBjaHVuayxcbiAgICAgIGVuY29kaW5nLFxuICAgICAgY2FsbGJhY2tcbiAgICB9KVxuICAgIGlmIChzdGF0ZS5hbGxCdWZmZXJzICYmIGVuY29kaW5nICE9PSAnYnVmZmVyJykge1xuICAgICAgc3RhdGUuYWxsQnVmZmVycyA9IGZhbHNlXG4gICAgfVxuICAgIGlmIChzdGF0ZS5hbGxOb29wICYmIGNhbGxiYWNrICE9PSBub3ApIHtcbiAgICAgIHN0YXRlLmFsbE5vb3AgPSBmYWxzZVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS53cml0ZWxlbiA9IGxlblxuICAgIHN0YXRlLndyaXRlY2IgPSBjYWxsYmFja1xuICAgIHN0YXRlLndyaXRpbmcgPSB0cnVlXG4gICAgc3RhdGUuc3luYyA9IHRydWVcbiAgICBzdHJlYW0uX3dyaXRlKGNodW5rLCBlbmNvZGluZywgc3RhdGUub253cml0ZSlcbiAgICBzdGF0ZS5zeW5jID0gZmFsc2VcbiAgfVxuXG4gIC8vIFJldHVybiBmYWxzZSBpZiBlcnJvcmVkIG9yIGRlc3Ryb3llZCBpbiBvcmRlciB0byBicmVha1xuICAvLyBhbnkgc3luY2hyb25vdXMgd2hpbGUoc3RyZWFtLndyaXRlKGRhdGEpKSBsb29wcy5cbiAgcmV0dXJuIHJldCAmJiAhc3RhdGUuZXJyb3JlZCAmJiAhc3RhdGUuZGVzdHJveWVkXG59XG5mdW5jdGlvbiBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHdyaXRldiwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHN0YXRlLndyaXRlbGVuID0gbGVuXG4gIHN0YXRlLndyaXRlY2IgPSBjYlxuICBzdGF0ZS53cml0aW5nID0gdHJ1ZVxuICBzdGF0ZS5zeW5jID0gdHJ1ZVxuICBpZiAoc3RhdGUuZGVzdHJveWVkKSBzdGF0ZS5vbndyaXRlKG5ldyBFUlJfU1RSRUFNX0RFU1RST1lFRCgnd3JpdGUnKSlcbiAgZWxzZSBpZiAod3JpdGV2KSBzdHJlYW0uX3dyaXRldihjaHVuaywgc3RhdGUub253cml0ZSlcbiAgZWxzZSBzdHJlYW0uX3dyaXRlKGNodW5rLCBlbmNvZGluZywgc3RhdGUub253cml0ZSlcbiAgc3RhdGUuc3luYyA9IGZhbHNlXG59XG5mdW5jdGlvbiBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgZXIsIGNiKSB7XG4gIC0tc3RhdGUucGVuZGluZ2NiXG4gIGNiKGVyKVxuICAvLyBFbnN1cmUgY2FsbGJhY2tzIGFyZSBpbnZva2VkIGV2ZW4gd2hlbiBhdXRvRGVzdHJveSBpc1xuICAvLyBub3QgZW5hYmxlZC4gUGFzc2luZyBgZXJgIGhlcmUgZG9lc24ndCBtYWtlIHNlbnNlIHNpbmNlXG4gIC8vIGl0J3MgcmVsYXRlZCB0byBvbmUgc3BlY2lmaWMgd3JpdGUsIG5vdCB0byB0aGUgYnVmZmVyZWRcbiAgLy8gd3JpdGVzLlxuICBlcnJvckJ1ZmZlcihzdGF0ZSlcbiAgLy8gVGhpcyBjYW4gZW1pdCBlcnJvciwgYnV0IGVycm9yIG11c3QgYWx3YXlzIGZvbGxvdyBjYi5cbiAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcilcbn1cbmZ1bmN0aW9uIG9ud3JpdGUoc3RyZWFtLCBlcikge1xuICBjb25zdCBzdGF0ZSA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZVxuICBjb25zdCBzeW5jID0gc3RhdGUuc3luY1xuICBjb25zdCBjYiA9IHN0YXRlLndyaXRlY2JcbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgbmV3IEVSUl9NVUxUSVBMRV9DQUxMQkFDSygpKVxuICAgIHJldHVyblxuICB9XG4gIHN0YXRlLndyaXRpbmcgPSBmYWxzZVxuICBzdGF0ZS53cml0ZWNiID0gbnVsbFxuICBzdGF0ZS5sZW5ndGggLT0gc3RhdGUud3JpdGVsZW5cbiAgc3RhdGUud3JpdGVsZW4gPSAwXG4gIGlmIChlcikge1xuICAgIC8vIEF2b2lkIFY4IGxlYWssIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9wdWxsLzM0MTAzI2lzc3VlY29tbWVudC02NTIwMDIzNjRcbiAgICBlci5zdGFjayAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuXG4gICAgaWYgKCFzdGF0ZS5lcnJvcmVkKSB7XG4gICAgICBzdGF0ZS5lcnJvcmVkID0gZXJcbiAgICB9XG5cbiAgICAvLyBJbiBjYXNlIG9mIGR1cGxleCBzdHJlYW1zIHdlIG5lZWQgdG8gbm90aWZ5IHRoZSByZWFkYWJsZSBzaWRlIG9mIHRoZVxuICAgIC8vIGVycm9yLlxuICAgIGlmIChzdHJlYW0uX3JlYWRhYmxlU3RhdGUgJiYgIXN0cmVhbS5fcmVhZGFibGVTdGF0ZS5lcnJvcmVkKSB7XG4gICAgICBzdHJlYW0uX3JlYWRhYmxlU3RhdGUuZXJyb3JlZCA9IGVyXG4gICAgfVxuICAgIGlmIChzeW5jKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKG9ud3JpdGVFcnJvciwgc3RyZWFtLCBzdGF0ZSwgZXIsIGNiKVxuICAgIH0gZWxzZSB7XG4gICAgICBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgZXIsIGNiKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RhdGUuYnVmZmVyZWQubGVuZ3RoID4gc3RhdGUuYnVmZmVyZWRJbmRleCkge1xuICAgICAgY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN5bmMpIHtcbiAgICAgIC8vIEl0IGlzIGEgY29tbW9uIGNhc2UgdGhhdCB0aGUgY2FsbGJhY2sgcGFzc2VkIHRvIC53cml0ZSgpIGlzIGFsd2F5c1xuICAgICAgLy8gdGhlIHNhbWUuIEluIHRoYXQgY2FzZSwgd2UgZG8gbm90IHNjaGVkdWxlIGEgbmV3IG5leHRUaWNrKCksIGJ1dFxuICAgICAgLy8gcmF0aGVyIGp1c3QgaW5jcmVhc2UgYSBjb3VudGVyLCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIGFuZCBhdm9pZFxuICAgICAgLy8gbWVtb3J5IGFsbG9jYXRpb25zLlxuICAgICAgaWYgKHN0YXRlLmFmdGVyV3JpdGVUaWNrSW5mbyAhPT0gbnVsbCAmJiBzdGF0ZS5hZnRlcldyaXRlVGlja0luZm8uY2IgPT09IGNiKSB7XG4gICAgICAgIHN0YXRlLmFmdGVyV3JpdGVUaWNrSW5mby5jb3VudCsrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5hZnRlcldyaXRlVGlja0luZm8gPSB7XG4gICAgICAgICAgY291bnQ6IDEsXG4gICAgICAgICAgY2IsXG4gICAgICAgICAgc3RyZWFtLFxuICAgICAgICAgIHN0YXRlXG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhhZnRlcldyaXRlVGljaywgc3RhdGUuYWZ0ZXJXcml0ZVRpY2tJbmZvKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIDEsIGNiKVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gYWZ0ZXJXcml0ZVRpY2soeyBzdHJlYW0sIHN0YXRlLCBjb3VudCwgY2IgfSkge1xuICBzdGF0ZS5hZnRlcldyaXRlVGlja0luZm8gPSBudWxsXG4gIHJldHVybiBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGNvdW50LCBjYilcbn1cbmZ1bmN0aW9uIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgY291bnQsIGNiKSB7XG4gIGNvbnN0IG5lZWREcmFpbiA9ICFzdGF0ZS5lbmRpbmcgJiYgIXN0cmVhbS5kZXN0cm95ZWQgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLm5lZWREcmFpblxuICBpZiAobmVlZERyYWluKSB7XG4gICAgc3RhdGUubmVlZERyYWluID0gZmFsc2VcbiAgICBzdHJlYW0uZW1pdCgnZHJhaW4nKVxuICB9XG4gIHdoaWxlIChjb3VudC0tID4gMCkge1xuICAgIHN0YXRlLnBlbmRpbmdjYi0tXG4gICAgY2IoKVxuICB9XG4gIGlmIChzdGF0ZS5kZXN0cm95ZWQpIHtcbiAgICBlcnJvckJ1ZmZlcihzdGF0ZSlcbiAgfVxuICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKVxufVxuXG4vLyBJZiB0aGVyZSdzIHNvbWV0aGluZyBpbiB0aGUgYnVmZmVyIHdhaXRpbmcsIHRoZW4gaW52b2tlIGNhbGxiYWNrcy5cbmZ1bmN0aW9uIGVycm9yQnVmZmVyKHN0YXRlKSB7XG4gIGlmIChzdGF0ZS53cml0aW5nKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgZm9yIChsZXQgbiA9IHN0YXRlLmJ1ZmZlcmVkSW5kZXg7IG4gPCBzdGF0ZS5idWZmZXJlZC5sZW5ndGg7ICsrbikge1xuICAgIHZhciBfc3RhdGUkZXJyb3JlZFxuICAgIGNvbnN0IHsgY2h1bmssIGNhbGxiYWNrIH0gPSBzdGF0ZS5idWZmZXJlZFtuXVxuICAgIGNvbnN0IGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoXG4gICAgc3RhdGUubGVuZ3RoIC09IGxlblxuICAgIGNhbGxiYWNrKFxuICAgICAgKF9zdGF0ZSRlcnJvcmVkID0gc3RhdGUuZXJyb3JlZCkgIT09IG51bGwgJiYgX3N0YXRlJGVycm9yZWQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IF9zdGF0ZSRlcnJvcmVkXG4gICAgICAgIDogbmV3IEVSUl9TVFJFQU1fREVTVFJPWUVEKCd3cml0ZScpXG4gICAgKVxuICB9XG4gIGNvbnN0IG9uZmluaXNoQ2FsbGJhY2tzID0gc3RhdGVba09uRmluaXNoZWRdLnNwbGljZSgwKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IG9uZmluaXNoQ2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIF9zdGF0ZSRlcnJvcmVkMlxuICAgIG9uZmluaXNoQ2FsbGJhY2tzW2ldKFxuICAgICAgKF9zdGF0ZSRlcnJvcmVkMiA9IHN0YXRlLmVycm9yZWQpICE9PSBudWxsICYmIF9zdGF0ZSRlcnJvcmVkMiAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gX3N0YXRlJGVycm9yZWQyXG4gICAgICAgIDogbmV3IEVSUl9TVFJFQU1fREVTVFJPWUVEKCdlbmQnKVxuICAgIClcbiAgfVxuICByZXNldEJ1ZmZlcihzdGF0ZSlcbn1cblxuLy8gSWYgdGhlcmUncyBzb21ldGhpbmcgaW4gdGhlIGJ1ZmZlciB3YWl0aW5nLCB0aGVuIHByb2Nlc3MgaXQuXG5mdW5jdGlvbiBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5jb3JrZWQgfHwgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyB8fCBzdGF0ZS5kZXN0cm95ZWQgfHwgIXN0YXRlLmNvbnN0cnVjdGVkKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgY29uc3QgeyBidWZmZXJlZCwgYnVmZmVyZWRJbmRleCwgb2JqZWN0TW9kZSB9ID0gc3RhdGVcbiAgY29uc3QgYnVmZmVyZWRMZW5ndGggPSBidWZmZXJlZC5sZW5ndGggLSBidWZmZXJlZEluZGV4XG4gIGlmICghYnVmZmVyZWRMZW5ndGgpIHtcbiAgICByZXR1cm5cbiAgfVxuICBsZXQgaSA9IGJ1ZmZlcmVkSW5kZXhcbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IHRydWVcbiAgaWYgKGJ1ZmZlcmVkTGVuZ3RoID4gMSAmJiBzdHJlYW0uX3dyaXRldikge1xuICAgIHN0YXRlLnBlbmRpbmdjYiAtPSBidWZmZXJlZExlbmd0aCAtIDFcbiAgICBjb25zdCBjYWxsYmFjayA9IHN0YXRlLmFsbE5vb3BcbiAgICAgID8gbm9wXG4gICAgICA6IChlcnIpID0+IHtcbiAgICAgICAgICBmb3IgKGxldCBuID0gaTsgbiA8IGJ1ZmZlcmVkLmxlbmd0aDsgKytuKSB7XG4gICAgICAgICAgICBidWZmZXJlZFtuXS5jYWxsYmFjayhlcnIpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgLy8gTWFrZSBhIGNvcHkgb2YgYGJ1ZmZlcmVkYCBpZiBpdCdzIGdvaW5nIHRvIGJlIHVzZWQgYnkgYGNhbGxiYWNrYCBhYm92ZSxcbiAgICAvLyBzaW5jZSBgZG9Xcml0ZWAgd2lsbCBtdXRhdGUgdGhlIGFycmF5LlxuICAgIGNvbnN0IGNodW5rcyA9IHN0YXRlLmFsbE5vb3AgJiYgaSA9PT0gMCA/IGJ1ZmZlcmVkIDogQXJyYXlQcm90b3R5cGVTbGljZShidWZmZXJlZCwgaSlcbiAgICBjaHVua3MuYWxsQnVmZmVycyA9IHN0YXRlLmFsbEJ1ZmZlcnNcbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHRydWUsIHN0YXRlLmxlbmd0aCwgY2h1bmtzLCAnJywgY2FsbGJhY2spXG4gICAgcmVzZXRCdWZmZXIoc3RhdGUpXG4gIH0gZWxzZSB7XG4gICAgZG8ge1xuICAgICAgY29uc3QgeyBjaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrIH0gPSBidWZmZXJlZFtpXVxuICAgICAgYnVmZmVyZWRbaSsrXSA9IG51bGxcbiAgICAgIGNvbnN0IGxlbiA9IG9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoXG4gICAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2FsbGJhY2spXG4gICAgfSB3aGlsZSAoaSA8IGJ1ZmZlcmVkLmxlbmd0aCAmJiAhc3RhdGUud3JpdGluZylcbiAgICBpZiAoaSA9PT0gYnVmZmVyZWQubGVuZ3RoKSB7XG4gICAgICByZXNldEJ1ZmZlcihzdGF0ZSlcbiAgICB9IGVsc2UgaWYgKGkgPiAyNTYpIHtcbiAgICAgIGJ1ZmZlcmVkLnNwbGljZSgwLCBpKVxuICAgICAgc3RhdGUuYnVmZmVyZWRJbmRleCA9IDBcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuYnVmZmVyZWRJbmRleCA9IGlcbiAgICB9XG4gIH1cbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlXG59XG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgaWYgKHRoaXMuX3dyaXRldikge1xuICAgIHRoaXMuX3dyaXRldihcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGNodW5rLFxuICAgICAgICAgIGVuY29kaW5nXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBjYlxuICAgIClcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQoJ193cml0ZSgpJylcbiAgfVxufVxuV3JpdGFibGUucHJvdG90eXBlLl93cml0ZXYgPSBudWxsXG5Xcml0YWJsZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlXG4gIGlmICh0eXBlb2YgY2h1bmsgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGNodW5rXG4gICAgY2h1bmsgPSBudWxsXG4gICAgZW5jb2RpbmcgPSBudWxsXG4gIH0gZWxzZSBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZ1xuICAgIGVuY29kaW5nID0gbnVsbFxuICB9XG4gIGxldCBlcnJcbiAgaWYgKGNodW5rICE9PSBudWxsICYmIGNodW5rICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCByZXQgPSBfd3JpdGUodGhpcywgY2h1bmssIGVuY29kaW5nKVxuICAgIGlmIChyZXQgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgZXJyID0gcmV0XG4gICAgfVxuICB9XG5cbiAgLy8gLmVuZCgpIGZ1bGx5IHVuY29ya3MuXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQgPSAxXG4gICAgdGhpcy51bmNvcmsoKVxuICB9XG4gIGlmIChlcnIpIHtcbiAgICAvLyBEbyBub3RoaW5nLi4uXG4gIH0gZWxzZSBpZiAoIXN0YXRlLmVycm9yZWQgJiYgIXN0YXRlLmVuZGluZykge1xuICAgIC8vIFRoaXMgaXMgZm9yZ2l2aW5nIGluIHRlcm1zIG9mIHVubmVjZXNzYXJ5IGNhbGxzIHRvIGVuZCgpIGFuZCBjYW4gaGlkZVxuICAgIC8vIGxvZ2ljIGVycm9ycy4gSG93ZXZlciwgdXN1YWxseSBzdWNoIGVycm9ycyBhcmUgaGFybWxlc3MgYW5kIGNhdXNpbmcgYVxuICAgIC8vIGhhcmQgZXJyb3IgY2FuIGJlIGRpc3Byb3BvcnRpb25hdGVseSBkZXN0cnVjdGl2ZS4gSXQgaXMgbm90IGFsd2F5c1xuICAgIC8vIHRyaXZpYWwgZm9yIHRoZSB1c2VyIHRvIGRldGVybWluZSB3aGV0aGVyIGVuZCgpIG5lZWRzIHRvIGJlIGNhbGxlZFxuICAgIC8vIG9yIG5vdC5cblxuICAgIHN0YXRlLmVuZGluZyA9IHRydWVcbiAgICBmaW5pc2hNYXliZSh0aGlzLCBzdGF0ZSwgdHJ1ZSlcbiAgICBzdGF0ZS5lbmRlZCA9IHRydWVcbiAgfSBlbHNlIGlmIChzdGF0ZS5maW5pc2hlZCkge1xuICAgIGVyciA9IG5ldyBFUlJfU1RSRUFNX0FMUkVBRFlfRklOSVNIRUQoJ2VuZCcpXG4gIH0gZWxzZSBpZiAoc3RhdGUuZGVzdHJveWVkKSB7XG4gICAgZXJyID0gbmV3IEVSUl9TVFJFQU1fREVTVFJPWUVEKCdlbmQnKVxuICB9XG4gIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoZXJyIHx8IHN0YXRlLmZpbmlzaGVkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGNiLCBlcnIpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlW2tPbkZpbmlzaGVkXS5wdXNoKGNiKVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpc1xufVxuZnVuY3Rpb24gbmVlZEZpbmlzaChzdGF0ZSkge1xuICByZXR1cm4gKFxuICAgIHN0YXRlLmVuZGluZyAmJlxuICAgICFzdGF0ZS5kZXN0cm95ZWQgJiZcbiAgICBzdGF0ZS5jb25zdHJ1Y3RlZCAmJlxuICAgIHN0YXRlLmxlbmd0aCA9PT0gMCAmJlxuICAgICFzdGF0ZS5lcnJvcmVkICYmXG4gICAgc3RhdGUuYnVmZmVyZWQubGVuZ3RoID09PSAwICYmXG4gICAgIXN0YXRlLmZpbmlzaGVkICYmXG4gICAgIXN0YXRlLndyaXRpbmcgJiZcbiAgICAhc3RhdGUuZXJyb3JFbWl0dGVkICYmXG4gICAgIXN0YXRlLmNsb3NlRW1pdHRlZFxuICApXG59XG5mdW5jdGlvbiBjYWxsRmluYWwoc3RyZWFtLCBzdGF0ZSkge1xuICBsZXQgY2FsbGVkID0gZmFsc2VcbiAgZnVuY3Rpb24gb25GaW5pc2goZXJyKSB7XG4gICAgaWYgKGNhbGxlZCkge1xuICAgICAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcnIgIT09IG51bGwgJiYgZXJyICE9PSB1bmRlZmluZWQgPyBlcnIgOiBFUlJfTVVMVElQTEVfQ0FMTEJBQ0soKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYWxsZWQgPSB0cnVlXG4gICAgc3RhdGUucGVuZGluZ2NiLS1cbiAgICBpZiAoZXJyKSB7XG4gICAgICBjb25zdCBvbmZpbmlzaENhbGxiYWNrcyA9IHN0YXRlW2tPbkZpbmlzaGVkXS5zcGxpY2UoMClcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb25maW5pc2hDYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb25maW5pc2hDYWxsYmFja3NbaV0oZXJyKVxuICAgICAgfVxuICAgICAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcnIsIHN0YXRlLnN5bmMpXG4gICAgfSBlbHNlIGlmIChuZWVkRmluaXNoKHN0YXRlKSkge1xuICAgICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlXG4gICAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJylcbiAgICAgIC8vIEJhY2t3YXJkcyBjb21wYXQuIERvbid0IGNoZWNrIHN0YXRlLnN5bmMgaGVyZS5cbiAgICAgIC8vIFNvbWUgc3RyZWFtcyBhc3N1bWUgJ2ZpbmlzaCcgd2lsbCBiZSBlbWl0dGVkXG4gICAgICAvLyBhc3luY2hyb25vdXNseSByZWxhdGl2ZSB0byBfZmluYWwgY2FsbGJhY2suXG4gICAgICBzdGF0ZS5wZW5kaW5nY2IrK1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmaW5pc2gsIHN0cmVhbSwgc3RhdGUpXG4gICAgfVxuICB9XG4gIHN0YXRlLnN5bmMgPSB0cnVlXG4gIHN0YXRlLnBlbmRpbmdjYisrXG4gIHRyeSB7XG4gICAgc3RyZWFtLl9maW5hbChvbkZpbmlzaClcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgb25GaW5pc2goZXJyKVxuICB9XG4gIHN0YXRlLnN5bmMgPSBmYWxzZVxufVxuZnVuY3Rpb24gcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5wcmVmaW5pc2hlZCAmJiAhc3RhdGUuZmluYWxDYWxsZWQpIHtcbiAgICBpZiAodHlwZW9mIHN0cmVhbS5fZmluYWwgPT09ICdmdW5jdGlvbicgJiYgIXN0YXRlLmRlc3Ryb3llZCkge1xuICAgICAgc3RhdGUuZmluYWxDYWxsZWQgPSB0cnVlXG4gICAgICBjYWxsRmluYWwoc3RyZWFtLCBzdGF0ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlXG4gICAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJylcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUsIHN5bmMpIHtcbiAgaWYgKG5lZWRGaW5pc2goc3RhdGUpKSB7XG4gICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpXG4gICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkge1xuICAgICAgaWYgKHN5bmMpIHtcbiAgICAgICAgc3RhdGUucGVuZGluZ2NiKytcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhcbiAgICAgICAgICAoc3RyZWFtLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5lZWRGaW5pc2goc3RhdGUpKSB7XG4gICAgICAgICAgICAgIGZpbmlzaChzdHJlYW0sIHN0YXRlKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc3RhdGUucGVuZGluZ2NiLS1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0cmVhbSxcbiAgICAgICAgICBzdGF0ZVxuICAgICAgICApXG4gICAgICB9IGVsc2UgaWYgKG5lZWRGaW5pc2goc3RhdGUpKSB7XG4gICAgICAgIHN0YXRlLnBlbmRpbmdjYisrXG4gICAgICAgIGZpbmlzaChzdHJlYW0sIHN0YXRlKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gZmluaXNoKHN0cmVhbSwgc3RhdGUpIHtcbiAgc3RhdGUucGVuZGluZ2NiLS1cbiAgc3RhdGUuZmluaXNoZWQgPSB0cnVlXG4gIGNvbnN0IG9uZmluaXNoQ2FsbGJhY2tzID0gc3RhdGVba09uRmluaXNoZWRdLnNwbGljZSgwKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IG9uZmluaXNoQ2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgb25maW5pc2hDYWxsYmFja3NbaV0oKVxuICB9XG4gIHN0cmVhbS5lbWl0KCdmaW5pc2gnKVxuICBpZiAoc3RhdGUuYXV0b0Rlc3Ryb3kpIHtcbiAgICAvLyBJbiBjYXNlIG9mIGR1cGxleCBzdHJlYW1zIHdlIG5lZWQgYSB3YXkgdG8gZGV0ZWN0XG4gICAgLy8gaWYgdGhlIHJlYWRhYmxlIHNpZGUgaXMgcmVhZHkgZm9yIGF1dG9EZXN0cm95IGFzIHdlbGwuXG4gICAgY29uc3QgclN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlXG4gICAgY29uc3QgYXV0b0Rlc3Ryb3kgPVxuICAgICAgIXJTdGF0ZSB8fFxuICAgICAgKHJTdGF0ZS5hdXRvRGVzdHJveSAmJlxuICAgICAgICAvLyBXZSBkb24ndCBleHBlY3QgdGhlIHJlYWRhYmxlIHRvIGV2ZXIgJ2VuZCdcbiAgICAgICAgLy8gaWYgcmVhZGFibGUgaXMgZXhwbGljaXRseSBzZXQgdG8gZmFsc2UuXG4gICAgICAgIChyU3RhdGUuZW5kRW1pdHRlZCB8fCByU3RhdGUucmVhZGFibGUgPT09IGZhbHNlKSlcbiAgICBpZiAoYXV0b0Rlc3Ryb3kpIHtcbiAgICAgIHN0cmVhbS5kZXN0cm95KClcbiAgICB9XG4gIH1cbn1cbk9iamVjdERlZmluZVByb3BlcnRpZXMoV3JpdGFibGUucHJvdG90eXBlLCB7XG4gIGNsb3NlZDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSA/IHRoaXMuX3dyaXRhYmxlU3RhdGUuY2xvc2VkIDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGRlc3Ryb3llZDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSA/IHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkIDogZmFsc2VcbiAgICB9LFxuICAgIHNldCh2YWx1ZSkge1xuICAgICAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseSBtYW5hZ2luZyBkZXN0cm95ZWQuXG4gICAgICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlXG4gICAgICB9XG4gICAgfVxuICB9LFxuICB3cml0YWJsZToge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBnZXQoKSB7XG4gICAgICBjb25zdCB3ID0gdGhpcy5fd3JpdGFibGVTdGF0ZVxuICAgICAgLy8gdy53cml0YWJsZSA9PT0gZmFsc2UgbWVhbnMgdGhhdCB0aGlzIGlzIHBhcnQgb2YgYSBEdXBsZXggc3RyZWFtXG4gICAgICAvLyB3aGVyZSB0aGUgd3JpdGFibGUgc2lkZSB3YXMgZGlzYWJsZWQgdXBvbiBjb25zdHJ1Y3Rpb24uXG4gICAgICAvLyBDb21wYXQuIFRoZSB1c2VyIG1pZ2h0IG1hbnVhbGx5IGRpc2FibGUgd3JpdGFibGUgc2lkZSB0aHJvdWdoXG4gICAgICAvLyBkZXByZWNhdGVkIHNldHRlci5cbiAgICAgIHJldHVybiAhIXcgJiYgdy53cml0YWJsZSAhPT0gZmFsc2UgJiYgIXcuZGVzdHJveWVkICYmICF3LmVycm9yZWQgJiYgIXcuZW5kaW5nICYmICF3LmVuZGVkXG4gICAgfSxcbiAgICBzZXQodmFsKSB7XG4gICAgICAvLyBCYWNrd2FyZHMgY29tcGF0aWJsZS5cbiAgICAgIGlmICh0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUud3JpdGFibGUgPSAhIXZhbFxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgd3JpdGFibGVGaW5pc2hlZDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSA/IHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQgOiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgd3JpdGFibGVPYmplY3RNb2RlOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlID8gdGhpcy5fd3JpdGFibGVTdGF0ZS5vYmplY3RNb2RlIDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIHdyaXRhYmxlQnVmZmVyOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyKClcbiAgICB9XG4gIH0sXG4gIHdyaXRhYmxlRW5kZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUgPyB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZyA6IGZhbHNlXG4gICAgfVxuICB9LFxuICB3cml0YWJsZU5lZWREcmFpbjoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBnZXQoKSB7XG4gICAgICBjb25zdCB3U3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlXG4gICAgICBpZiAoIXdTdGF0ZSkgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gIXdTdGF0ZS5kZXN0cm95ZWQgJiYgIXdTdGF0ZS5lbmRpbmcgJiYgd1N0YXRlLm5lZWREcmFpblxuICAgIH1cbiAgfSxcbiAgd3JpdGFibGVIaWdoV2F0ZXJNYXJrOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya1xuICAgIH1cbiAgfSxcbiAgd3JpdGFibGVDb3JrZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUgPyB0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCA6IDBcbiAgICB9XG4gIH0sXG4gIHdyaXRhYmxlTGVuZ3RoOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RoXG4gICAgfVxuICB9LFxuICBlcnJvcmVkOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlID8gdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvcmVkIDogbnVsbFxuICAgIH1cbiAgfSxcbiAgd3JpdGFibGVBYm9ydGVkOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICEhKFxuICAgICAgICB0aGlzLl93cml0YWJsZVN0YXRlLndyaXRhYmxlICE9PSBmYWxzZSAmJlxuICAgICAgICAodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgfHwgdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvcmVkKSAmJlxuICAgICAgICAhdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZFxuICAgICAgKVxuICAgIH1cbiAgfVxufSlcbmNvbnN0IGRlc3Ryb3kgPSBkZXN0cm95SW1wbC5kZXN0cm95XG5Xcml0YWJsZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZVxuXG4gIC8vIEludm9rZSBwZW5kaW5nIGNhbGxiYWNrcy5cbiAgaWYgKCFzdGF0ZS5kZXN0cm95ZWQgJiYgKHN0YXRlLmJ1ZmZlcmVkSW5kZXggPCBzdGF0ZS5idWZmZXJlZC5sZW5ndGggfHwgc3RhdGVba09uRmluaXNoZWRdLmxlbmd0aCkpIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGVycm9yQnVmZmVyLCBzdGF0ZSlcbiAgfVxuICBkZXN0cm95LmNhbGwodGhpcywgZXJyLCBjYilcbiAgcmV0dXJuIHRoaXNcbn1cbldyaXRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95XG5Xcml0YWJsZS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICBjYihlcnIpXG59XG5Xcml0YWJsZS5wcm90b3R5cGVbRUUuY2FwdHVyZVJlamVjdGlvblN5bWJvbF0gPSBmdW5jdGlvbiAoZXJyKSB7XG4gIHRoaXMuZGVzdHJveShlcnIpXG59XG5sZXQgd2ViU3RyZWFtc0FkYXB0ZXJzXG5cbi8vIExhenkgdG8gYXZvaWQgY2lyY3VsYXIgcmVmZXJlbmNlc1xuZnVuY3Rpb24gbGF6eVdlYlN0cmVhbXMoKSB7XG4gIGlmICh3ZWJTdHJlYW1zQWRhcHRlcnMgPT09IHVuZGVmaW5lZCkgd2ViU3RyZWFtc0FkYXB0ZXJzID0ge31cbiAgcmV0dXJuIHdlYlN0cmVhbXNBZGFwdGVyc1xufVxuV3JpdGFibGUuZnJvbVdlYiA9IGZ1bmN0aW9uICh3cml0YWJsZVN0cmVhbSwgb3B0aW9ucykge1xuICByZXR1cm4gbGF6eVdlYlN0cmVhbXMoKS5uZXdTdHJlYW1Xcml0YWJsZUZyb21Xcml0YWJsZVN0cmVhbSh3cml0YWJsZVN0cmVhbSwgb3B0aW9ucylcbn1cbldyaXRhYmxlLnRvV2ViID0gZnVuY3Rpb24gKHN0cmVhbVdyaXRhYmxlKSB7XG4gIHJldHVybiBsYXp5V2ViU3RyZWFtcygpLm5ld1dyaXRhYmxlU3RyZWFtRnJvbVN0cmVhbVdyaXRhYmxlKHN0cmVhbVdyaXRhYmxlKVxufVxuIiwiLyogcmVwbGFjZW1lbnQgc3RhcnQgKi9cblxuY29uc3QgcHJvY2VzcyA9IHJlcXVpcmUoJ3Byb2Nlc3MvJylcblxuLyogcmVwbGFjZW1lbnQgZW5kICovXG5cbjsoJ3VzZSBzdHJpY3QnKVxuY29uc3QgYnVmZmVyTW9kdWxlID0gcmVxdWlyZSgnYnVmZmVyJylcbmNvbnN0IHtcbiAgaXNSZWFkYWJsZSxcbiAgaXNXcml0YWJsZSxcbiAgaXNJdGVyYWJsZSxcbiAgaXNOb2RlU3RyZWFtLFxuICBpc1JlYWRhYmxlTm9kZVN0cmVhbSxcbiAgaXNXcml0YWJsZU5vZGVTdHJlYW0sXG4gIGlzRHVwbGV4Tm9kZVN0cmVhbSxcbiAgaXNSZWFkYWJsZVN0cmVhbSxcbiAgaXNXcml0YWJsZVN0cmVhbVxufSA9IHJlcXVpcmUoJy4vdXRpbHMnKVxuY29uc3QgZW9zID0gcmVxdWlyZSgnLi9lbmQtb2Ytc3RyZWFtJylcbmNvbnN0IHtcbiAgQWJvcnRFcnJvcixcbiAgY29kZXM6IHsgRVJSX0lOVkFMSURfQVJHX1RZUEUsIEVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRSB9XG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9lcnJvcnMnKVxuY29uc3QgeyBkZXN0cm95ZXIgfSA9IHJlcXVpcmUoJy4vZGVzdHJveScpXG5jb25zdCBEdXBsZXggPSByZXF1aXJlKCcuL2R1cGxleCcpXG5jb25zdCBSZWFkYWJsZSA9IHJlcXVpcmUoJy4vcmVhZGFibGUnKVxuY29uc3QgV3JpdGFibGUgPSByZXF1aXJlKCcuL3dyaXRhYmxlJylcbmNvbnN0IHsgY3JlYXRlRGVmZXJyZWRQcm9taXNlIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL3V0aWwnKVxuY29uc3QgZnJvbSA9IHJlcXVpcmUoJy4vZnJvbScpXG5jb25zdCBCbG9iID0gZ2xvYmFsVGhpcy5CbG9iIHx8IGJ1ZmZlck1vZHVsZS5CbG9iXG5jb25zdCBpc0Jsb2IgPVxuICB0eXBlb2YgQmxvYiAhPT0gJ3VuZGVmaW5lZCdcbiAgICA/IGZ1bmN0aW9uIGlzQmxvYihiKSB7XG4gICAgICAgIHJldHVybiBiIGluc3RhbmNlb2YgQmxvYlxuICAgICAgfVxuICAgIDogZnVuY3Rpb24gaXNCbG9iKGIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5jb25zdCBBYm9ydENvbnRyb2xsZXIgPSBnbG9iYWxUaGlzLkFib3J0Q29udHJvbGxlciB8fCByZXF1aXJlKCdhYm9ydC1jb250cm9sbGVyJykuQWJvcnRDb250cm9sbGVyXG5jb25zdCB7IEZ1bmN0aW9uUHJvdG90eXBlQ2FsbCB9ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5cbi8vIFRoaXMgaXMgbmVlZGVkIGZvciBwcmUgbm9kZSAxNy5cbmNsYXNzIER1cGxleGlmeSBleHRlbmRzIER1cGxleCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKVxuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL3B1bGwvMzQzODVcblxuICAgIGlmICgob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBvcHRpb25zLnJlYWRhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGFibGUgPSBmYWxzZVxuICAgICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZCA9IHRydWVcbiAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCA9IHRydWVcbiAgICB9XG4gICAgaWYgKChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdGlvbnMud3JpdGFibGUpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5fd3JpdGFibGVTdGF0ZS53cml0YWJsZSA9IGZhbHNlXG4gICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZyA9IHRydWVcbiAgICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQgPSB0cnVlXG4gICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkdXBsZXhpZnkoYm9keSwgbmFtZSkge1xuICBpZiAoaXNEdXBsZXhOb2RlU3RyZWFtKGJvZHkpKSB7XG4gICAgcmV0dXJuIGJvZHlcbiAgfVxuICBpZiAoaXNSZWFkYWJsZU5vZGVTdHJlYW0oYm9keSkpIHtcbiAgICByZXR1cm4gX2R1cGxleGlmeSh7XG4gICAgICByZWFkYWJsZTogYm9keVxuICAgIH0pXG4gIH1cbiAgaWYgKGlzV3JpdGFibGVOb2RlU3RyZWFtKGJvZHkpKSB7XG4gICAgcmV0dXJuIF9kdXBsZXhpZnkoe1xuICAgICAgd3JpdGFibGU6IGJvZHlcbiAgICB9KVxuICB9XG4gIGlmIChpc05vZGVTdHJlYW0oYm9keSkpIHtcbiAgICByZXR1cm4gX2R1cGxleGlmeSh7XG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICByZWFkYWJsZTogZmFsc2VcbiAgICB9KVxuICB9XG4gIGlmIChpc1JlYWRhYmxlU3RyZWFtKGJvZHkpKSB7XG4gICAgcmV0dXJuIF9kdXBsZXhpZnkoe1xuICAgICAgcmVhZGFibGU6IFJlYWRhYmxlLmZyb21XZWIoYm9keSlcbiAgICB9KVxuICB9XG4gIGlmIChpc1dyaXRhYmxlU3RyZWFtKGJvZHkpKSB7XG4gICAgcmV0dXJuIF9kdXBsZXhpZnkoe1xuICAgICAgd3JpdGFibGU6IFdyaXRhYmxlLmZyb21XZWIoYm9keSlcbiAgICB9KVxuICB9XG4gIGlmICh0eXBlb2YgYm9keSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHsgdmFsdWUsIHdyaXRlLCBmaW5hbCwgZGVzdHJveSB9ID0gZnJvbUFzeW5jR2VuKGJvZHkpXG4gICAgaWYgKGlzSXRlcmFibGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZnJvbShEdXBsZXhpZnksIHZhbHVlLCB7XG4gICAgICAgIC8vIFRPRE8gKHJvbmFnKTogaGlnaFdhdGVyTWFyaz9cbiAgICAgICAgb2JqZWN0TW9kZTogdHJ1ZSxcbiAgICAgICAgd3JpdGUsXG4gICAgICAgIGZpbmFsLFxuICAgICAgICBkZXN0cm95XG4gICAgICB9KVxuICAgIH1cbiAgICBjb25zdCB0aGVuID0gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHZhbHVlLnRoZW5cbiAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCBkXG4gICAgICBjb25zdCBwcm9taXNlID0gRnVuY3Rpb25Qcm90b3R5cGVDYWxsKFxuICAgICAgICB0aGVuLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgKHZhbCkgPT4ge1xuICAgICAgICAgIGlmICh2YWwgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRSgnbnVsbHknLCAnYm9keScsIHZhbClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICBkZXN0cm95ZXIoZCwgZXJyKVxuICAgICAgICB9XG4gICAgICApXG4gICAgICByZXR1cm4gKGQgPSBuZXcgRHVwbGV4aWZ5KHtcbiAgICAgICAgLy8gVE9ETyAocm9uYWcpOiBoaWdoV2F0ZXJNYXJrP1xuICAgICAgICBvYmplY3RNb2RlOiB0cnVlLFxuICAgICAgICByZWFkYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRlLFxuICAgICAgICBmaW5hbChjYikge1xuICAgICAgICAgIGZpbmFsKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGF3YWl0IHByb21pc2VcbiAgICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhjYiwgbnVsbClcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGNiLCBlcnIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgZGVzdHJveVxuICAgICAgfSkpXG4gICAgfVxuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUoJ0l0ZXJhYmxlLCBBc3luY0l0ZXJhYmxlIG9yIEFzeW5jRnVuY3Rpb24nLCBuYW1lLCB2YWx1ZSlcbiAgfVxuICBpZiAoaXNCbG9iKGJvZHkpKSB7XG4gICAgcmV0dXJuIGR1cGxleGlmeShib2R5LmFycmF5QnVmZmVyKCkpXG4gIH1cbiAgaWYgKGlzSXRlcmFibGUoYm9keSkpIHtcbiAgICByZXR1cm4gZnJvbShEdXBsZXhpZnksIGJvZHksIHtcbiAgICAgIC8vIFRPRE8gKHJvbmFnKTogaGlnaFdhdGVyTWFyaz9cbiAgICAgIG9iamVjdE1vZGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogZmFsc2VcbiAgICB9KVxuICB9XG4gIGlmIChcbiAgICBpc1JlYWRhYmxlU3RyZWFtKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYm9keS5yZWFkYWJsZSkgJiZcbiAgICBpc1dyaXRhYmxlU3RyZWFtKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYm9keS53cml0YWJsZSlcbiAgKSB7XG4gICAgcmV0dXJuIER1cGxleGlmeS5mcm9tV2ViKGJvZHkpXG4gIH1cbiAgaWYgKFxuICAgIHR5cGVvZiAoYm9keSA9PT0gbnVsbCB8fCBib2R5ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBib2R5LndyaXRhYmxlKSA9PT0gJ29iamVjdCcgfHxcbiAgICB0eXBlb2YgKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYm9keS5yZWFkYWJsZSkgPT09ICdvYmplY3QnXG4gICkge1xuICAgIGNvbnN0IHJlYWRhYmxlID1cbiAgICAgIGJvZHkgIT09IG51bGwgJiYgYm9keSAhPT0gdW5kZWZpbmVkICYmIGJvZHkucmVhZGFibGVcbiAgICAgICAgPyBpc1JlYWRhYmxlTm9kZVN0cmVhbShib2R5ID09PSBudWxsIHx8IGJvZHkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGJvZHkucmVhZGFibGUpXG4gICAgICAgICAgPyBib2R5ID09PSBudWxsIHx8IGJvZHkgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogYm9keS5yZWFkYWJsZVxuICAgICAgICAgIDogZHVwbGV4aWZ5KGJvZHkucmVhZGFibGUpXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgY29uc3Qgd3JpdGFibGUgPVxuICAgICAgYm9keSAhPT0gbnVsbCAmJiBib2R5ICE9PSB1bmRlZmluZWQgJiYgYm9keS53cml0YWJsZVxuICAgICAgICA/IGlzV3JpdGFibGVOb2RlU3RyZWFtKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYm9keS53cml0YWJsZSlcbiAgICAgICAgICA/IGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiBib2R5LndyaXRhYmxlXG4gICAgICAgICAgOiBkdXBsZXhpZnkoYm9keS53cml0YWJsZSlcbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICByZXR1cm4gX2R1cGxleGlmeSh7XG4gICAgICByZWFkYWJsZSxcbiAgICAgIHdyaXRhYmxlXG4gICAgfSlcbiAgfVxuICBjb25zdCB0aGVuID0gYm9keSA9PT0gbnVsbCB8fCBib2R5ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBib2R5LnRoZW5cbiAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbGV0IGRcbiAgICBGdW5jdGlvblByb3RvdHlwZUNhbGwoXG4gICAgICB0aGVuLFxuICAgICAgYm9keSxcbiAgICAgICh2YWwpID0+IHtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsKSB7XG4gICAgICAgICAgZC5wdXNoKHZhbClcbiAgICAgICAgfVxuICAgICAgICBkLnB1c2gobnVsbClcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGRlc3Ryb3llcihkLCBlcnIpXG4gICAgICB9XG4gICAgKVxuICAgIHJldHVybiAoZCA9IG5ldyBEdXBsZXhpZnkoe1xuICAgICAgb2JqZWN0TW9kZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIHJlYWQoKSB7fVxuICAgIH0pKVxuICB9XG4gIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRShcbiAgICBuYW1lLFxuICAgIFtcbiAgICAgICdCbG9iJyxcbiAgICAgICdSZWFkYWJsZVN0cmVhbScsXG4gICAgICAnV3JpdGFibGVTdHJlYW0nLFxuICAgICAgJ1N0cmVhbScsXG4gICAgICAnSXRlcmFibGUnLFxuICAgICAgJ0FzeW5jSXRlcmFibGUnLFxuICAgICAgJ0Z1bmN0aW9uJyxcbiAgICAgICd7IHJlYWRhYmxlLCB3cml0YWJsZSB9IHBhaXInLFxuICAgICAgJ1Byb21pc2UnXG4gICAgXSxcbiAgICBib2R5XG4gIClcbn1cbmZ1bmN0aW9uIGZyb21Bc3luY0dlbihmbikge1xuICBsZXQgeyBwcm9taXNlLCByZXNvbHZlIH0gPSBjcmVhdGVEZWZlcnJlZFByb21pc2UoKVxuICBjb25zdCBhYyA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICBjb25zdCBzaWduYWwgPSBhYy5zaWduYWxcbiAgY29uc3QgdmFsdWUgPSBmbihcbiAgICAoYXN5bmMgZnVuY3Rpb24qICgpIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGNvbnN0IF9wcm9taXNlID0gcHJvbWlzZVxuICAgICAgICBwcm9taXNlID0gbnVsbFxuICAgICAgICBjb25zdCB7IGNodW5rLCBkb25lLCBjYiB9ID0gYXdhaXQgX3Byb21pc2VcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhjYilcbiAgICAgICAgaWYgKGRvbmUpIHJldHVyblxuICAgICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpXG4gICAgICAgICAgdGhyb3cgbmV3IEFib3J0RXJyb3IodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBjYXVzZTogc2lnbmFsLnJlYXNvblxuICAgICAgICAgIH0pXG4gICAgICAgIDsoeyBwcm9taXNlLCByZXNvbHZlIH0gPSBjcmVhdGVEZWZlcnJlZFByb21pc2UoKSlcbiAgICAgICAgeWllbGQgY2h1bmtcbiAgICAgIH1cbiAgICB9KSgpLFxuICAgIHtcbiAgICAgIHNpZ25hbFxuICAgIH1cbiAgKVxuICByZXR1cm4ge1xuICAgIHZhbHVlLFxuICAgIHdyaXRlKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgICAgIGNvbnN0IF9yZXNvbHZlID0gcmVzb2x2ZVxuICAgICAgcmVzb2x2ZSA9IG51bGxcbiAgICAgIF9yZXNvbHZlKHtcbiAgICAgICAgY2h1bmssXG4gICAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgICBjYlxuICAgICAgfSlcbiAgICB9LFxuICAgIGZpbmFsKGNiKSB7XG4gICAgICBjb25zdCBfcmVzb2x2ZSA9IHJlc29sdmVcbiAgICAgIHJlc29sdmUgPSBudWxsXG4gICAgICBfcmVzb2x2ZSh7XG4gICAgICAgIGRvbmU6IHRydWUsXG4gICAgICAgIGNiXG4gICAgICB9KVxuICAgIH0sXG4gICAgZGVzdHJveShlcnIsIGNiKSB7XG4gICAgICBhYy5hYm9ydCgpXG4gICAgICBjYihlcnIpXG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBfZHVwbGV4aWZ5KHBhaXIpIHtcbiAgY29uc3QgciA9IHBhaXIucmVhZGFibGUgJiYgdHlwZW9mIHBhaXIucmVhZGFibGUucmVhZCAhPT0gJ2Z1bmN0aW9uJyA/IFJlYWRhYmxlLndyYXAocGFpci5yZWFkYWJsZSkgOiBwYWlyLnJlYWRhYmxlXG4gIGNvbnN0IHcgPSBwYWlyLndyaXRhYmxlXG4gIGxldCByZWFkYWJsZSA9ICEhaXNSZWFkYWJsZShyKVxuICBsZXQgd3JpdGFibGUgPSAhIWlzV3JpdGFibGUodylcbiAgbGV0IG9uZHJhaW5cbiAgbGV0IG9uZmluaXNoXG4gIGxldCBvbnJlYWRhYmxlXG4gIGxldCBvbmNsb3NlXG4gIGxldCBkXG4gIGZ1bmN0aW9uIG9uZmluaXNoZWQoZXJyKSB7XG4gICAgY29uc3QgY2IgPSBvbmNsb3NlXG4gICAgb25jbG9zZSA9IG51bGxcbiAgICBpZiAoY2IpIHtcbiAgICAgIGNiKGVycilcbiAgICB9IGVsc2UgaWYgKGVycikge1xuICAgICAgZC5kZXN0cm95KGVycilcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPKHJvbmFnKTogQXZvaWQgZG91YmxlIGJ1ZmZlcmluZy5cbiAgLy8gSW1wbGVtZW50IFdyaXRhYmxlL1JlYWRhYmxlL0R1cGxleCB0cmFpdHMuXG4gIC8vIFNlZSwgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL3B1bGwvMzM1MTUuXG4gIGQgPSBuZXcgRHVwbGV4aWZ5KHtcbiAgICAvLyBUT0RPIChyb25hZyk6IGhpZ2hXYXRlck1hcms/XG4gICAgcmVhZGFibGVPYmplY3RNb2RlOiAhIShyICE9PSBudWxsICYmIHIgIT09IHVuZGVmaW5lZCAmJiByLnJlYWRhYmxlT2JqZWN0TW9kZSksXG4gICAgd3JpdGFibGVPYmplY3RNb2RlOiAhISh3ICE9PSBudWxsICYmIHcgIT09IHVuZGVmaW5lZCAmJiB3LndyaXRhYmxlT2JqZWN0TW9kZSksXG4gICAgcmVhZGFibGUsXG4gICAgd3JpdGFibGVcbiAgfSlcbiAgaWYgKHdyaXRhYmxlKSB7XG4gICAgZW9zKHcsIChlcnIpID0+IHtcbiAgICAgIHdyaXRhYmxlID0gZmFsc2VcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgZGVzdHJveWVyKHIsIGVycilcbiAgICAgIH1cbiAgICAgIG9uZmluaXNoZWQoZXJyKVxuICAgIH0pXG4gICAgZC5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICAgICAgaWYgKHcud3JpdGUoY2h1bmssIGVuY29kaW5nKSkge1xuICAgICAgICBjYWxsYmFjaygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbmRyYWluID0gY2FsbGJhY2tcbiAgICAgIH1cbiAgICB9XG4gICAgZC5fZmluYWwgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgIHcuZW5kKClcbiAgICAgIG9uZmluaXNoID0gY2FsbGJhY2tcbiAgICB9XG4gICAgdy5vbignZHJhaW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAob25kcmFpbikge1xuICAgICAgICBjb25zdCBjYiA9IG9uZHJhaW5cbiAgICAgICAgb25kcmFpbiA9IG51bGxcbiAgICAgICAgY2IoKVxuICAgICAgfVxuICAgIH0pXG4gICAgdy5vbignZmluaXNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKG9uZmluaXNoKSB7XG4gICAgICAgIGNvbnN0IGNiID0gb25maW5pc2hcbiAgICAgICAgb25maW5pc2ggPSBudWxsXG4gICAgICAgIGNiKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGlmIChyZWFkYWJsZSkge1xuICAgIGVvcyhyLCAoZXJyKSA9PiB7XG4gICAgICByZWFkYWJsZSA9IGZhbHNlXG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGRlc3Ryb3llcihyLCBlcnIpXG4gICAgICB9XG4gICAgICBvbmZpbmlzaGVkKGVycilcbiAgICB9KVxuICAgIHIub24oJ3JlYWRhYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKG9ucmVhZGFibGUpIHtcbiAgICAgICAgY29uc3QgY2IgPSBvbnJlYWRhYmxlXG4gICAgICAgIG9ucmVhZGFibGUgPSBudWxsXG4gICAgICAgIGNiKClcbiAgICAgIH1cbiAgICB9KVxuICAgIHIub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGQucHVzaChudWxsKVxuICAgIH0pXG4gICAgZC5fcmVhZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGNvbnN0IGJ1ZiA9IHIucmVhZCgpXG4gICAgICAgIGlmIChidWYgPT09IG51bGwpIHtcbiAgICAgICAgICBvbnJlYWRhYmxlID0gZC5fcmVhZFxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmICghZC5wdXNoKGJ1ZikpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBkLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2FsbGJhY2spIHtcbiAgICBpZiAoIWVyciAmJiBvbmNsb3NlICE9PSBudWxsKSB7XG4gICAgICBlcnIgPSBuZXcgQWJvcnRFcnJvcigpXG4gICAgfVxuICAgIG9ucmVhZGFibGUgPSBudWxsXG4gICAgb25kcmFpbiA9IG51bGxcbiAgICBvbmZpbmlzaCA9IG51bGxcbiAgICBpZiAob25jbG9zZSA9PT0gbnVsbCkge1xuICAgICAgY2FsbGJhY2soZXJyKVxuICAgIH0gZWxzZSB7XG4gICAgICBvbmNsb3NlID0gY2FsbGJhY2tcbiAgICAgIGRlc3Ryb3llcih3LCBlcnIpXG4gICAgICBkZXN0cm95ZXIociwgZXJyKVxuICAgIH1cbiAgfVxuICByZXR1cm4gZFxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIGEgZHVwbGV4IHN0cmVhbSBpcyBqdXN0IGEgc3RyZWFtIHRoYXQgaXMgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUuXG4vLyBTaW5jZSBKUyBkb2Vzbid0IGhhdmUgbXVsdGlwbGUgcHJvdG90eXBlIGluaGVyaXRhbmNlLCB0aGlzIGNsYXNzXG4vLyBwcm90b3R5cGljYWxseSBpbmhlcml0cyBmcm9tIFJlYWRhYmxlLCBhbmQgdGhlbiBwYXJhc2l0aWNhbGx5IGZyb21cbi8vIFdyaXRhYmxlLlxuXG4ndXNlIHN0cmljdCdcblxuY29uc3Qge1xuICBPYmplY3REZWZpbmVQcm9wZXJ0aWVzLFxuICBPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG4gIE9iamVjdEtleXMsXG4gIE9iamVjdFNldFByb3RvdHlwZU9mXG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5tb2R1bGUuZXhwb3J0cyA9IER1cGxleFxuY29uc3QgUmVhZGFibGUgPSByZXF1aXJlKCcuL3JlYWRhYmxlJylcbmNvbnN0IFdyaXRhYmxlID0gcmVxdWlyZSgnLi93cml0YWJsZScpXG5PYmplY3RTZXRQcm90b3R5cGVPZihEdXBsZXgucHJvdG90eXBlLCBSZWFkYWJsZS5wcm90b3R5cGUpXG5PYmplY3RTZXRQcm90b3R5cGVPZihEdXBsZXgsIFJlYWRhYmxlKVxue1xuICBjb25zdCBrZXlzID0gT2JqZWN0S2V5cyhXcml0YWJsZS5wcm90b3R5cGUpXG4gIC8vIEFsbG93IHRoZSBrZXlzIGFycmF5IHRvIGJlIEdDJ2VkLlxuICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBtZXRob2QgPSBrZXlzW2ldXG4gICAgaWYgKCFEdXBsZXgucHJvdG90eXBlW21ldGhvZF0pIER1cGxleC5wcm90b3R5cGVbbWV0aG9kXSA9IFdyaXRhYmxlLnByb3RvdHlwZVttZXRob2RdXG4gIH1cbn1cbmZ1bmN0aW9uIER1cGxleChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSByZXR1cm4gbmV3IER1cGxleChvcHRpb25zKVxuICBSZWFkYWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpXG4gIFdyaXRhYmxlLmNhbGwodGhpcywgb3B0aW9ucylcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICB0aGlzLmFsbG93SGFsZk9wZW4gPSBvcHRpb25zLmFsbG93SGFsZk9wZW4gIT09IGZhbHNlXG4gICAgaWYgKG9wdGlvbnMucmVhZGFibGUgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRhYmxlID0gZmFsc2VcbiAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQgPSB0cnVlXG4gICAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChvcHRpb25zLndyaXRhYmxlID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5fd3JpdGFibGVTdGF0ZS53cml0YWJsZSA9IGZhbHNlXG4gICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZyA9IHRydWVcbiAgICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQgPSB0cnVlXG4gICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkID0gdHJ1ZVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLmFsbG93SGFsZk9wZW4gPSB0cnVlXG4gIH1cbn1cbk9iamVjdERlZmluZVByb3BlcnRpZXMoRHVwbGV4LnByb3RvdHlwZSwge1xuICB3cml0YWJsZToge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAuLi5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGUnKVxuICB9LFxuICB3cml0YWJsZUhpZ2hXYXRlck1hcms6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgLi4uT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlSGlnaFdhdGVyTWFyaycpXG4gIH0sXG4gIHdyaXRhYmxlT2JqZWN0TW9kZToge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAuLi5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVPYmplY3RNb2RlJylcbiAgfSxcbiAgd3JpdGFibGVCdWZmZXI6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgLi4uT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlQnVmZmVyJylcbiAgfSxcbiAgd3JpdGFibGVMZW5ndGg6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgLi4uT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlTGVuZ3RoJylcbiAgfSxcbiAgd3JpdGFibGVGaW5pc2hlZDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAuLi5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVGaW5pc2hlZCcpXG4gIH0sXG4gIHdyaXRhYmxlQ29ya2VkOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIC4uLk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihXcml0YWJsZS5wcm90b3R5cGUsICd3cml0YWJsZUNvcmtlZCcpXG4gIH0sXG4gIHdyaXRhYmxlRW5kZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgLi4uT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlRW5kZWQnKVxuICB9LFxuICB3cml0YWJsZU5lZWREcmFpbjoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAuLi5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVOZWVkRHJhaW4nKVxuICB9LFxuICBkZXN0cm95ZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWRcbiAgICB9LFxuICAgIHNldCh2YWx1ZSkge1xuICAgICAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkLlxuICAgICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlXG4gICAgICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pXG5sZXQgd2ViU3RyZWFtc0FkYXB0ZXJzXG5cbi8vIExhenkgdG8gYXZvaWQgY2lyY3VsYXIgcmVmZXJlbmNlc1xuZnVuY3Rpb24gbGF6eVdlYlN0cmVhbXMoKSB7XG4gIGlmICh3ZWJTdHJlYW1zQWRhcHRlcnMgPT09IHVuZGVmaW5lZCkgd2ViU3RyZWFtc0FkYXB0ZXJzID0ge31cbiAgcmV0dXJuIHdlYlN0cmVhbXNBZGFwdGVyc1xufVxuRHVwbGV4LmZyb21XZWIgPSBmdW5jdGlvbiAocGFpciwgb3B0aW9ucykge1xuICByZXR1cm4gbGF6eVdlYlN0cmVhbXMoKS5uZXdTdHJlYW1EdXBsZXhGcm9tUmVhZGFibGVXcml0YWJsZVBhaXIocGFpciwgb3B0aW9ucylcbn1cbkR1cGxleC50b1dlYiA9IGZ1bmN0aW9uIChkdXBsZXgpIHtcbiAgcmV0dXJuIGxhenlXZWJTdHJlYW1zKCkubmV3UmVhZGFibGVXcml0YWJsZVBhaXJGcm9tRHVwbGV4KGR1cGxleClcbn1cbmxldCBkdXBsZXhpZnlcbkR1cGxleC5mcm9tID0gZnVuY3Rpb24gKGJvZHkpIHtcbiAgaWYgKCFkdXBsZXhpZnkpIHtcbiAgICBkdXBsZXhpZnkgPSByZXF1aXJlKCcuL2R1cGxleGlmeScpXG4gIH1cbiAgcmV0dXJuIGR1cGxleGlmeShib2R5LCAnYm9keScpXG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gYSB0cmFuc2Zvcm0gc3RyZWFtIGlzIGEgcmVhZGFibGUvd3JpdGFibGUgc3RyZWFtIHdoZXJlIHlvdSBkb1xuLy8gc29tZXRoaW5nIHdpdGggdGhlIGRhdGEuICBTb21ldGltZXMgaXQncyBjYWxsZWQgYSBcImZpbHRlclwiLFxuLy8gYnV0IHRoYXQncyBub3QgYSBncmVhdCBuYW1lIGZvciBpdCwgc2luY2UgdGhhdCBpbXBsaWVzIGEgdGhpbmcgd2hlcmVcbi8vIHNvbWUgYml0cyBwYXNzIHRocm91Z2gsIGFuZCBvdGhlcnMgYXJlIHNpbXBseSBpZ25vcmVkLiAgKFRoYXQgd291bGRcbi8vIGJlIGEgdmFsaWQgZXhhbXBsZSBvZiBhIHRyYW5zZm9ybSwgb2YgY291cnNlLilcbi8vXG4vLyBXaGlsZSB0aGUgb3V0cHV0IGlzIGNhdXNhbGx5IHJlbGF0ZWQgdG8gdGhlIGlucHV0LCBpdCdzIG5vdCBhXG4vLyBuZWNlc3NhcmlseSBzeW1tZXRyaWMgb3Igc3luY2hyb25vdXMgdHJhbnNmb3JtYXRpb24uICBGb3IgZXhhbXBsZSxcbi8vIGEgemxpYiBzdHJlYW0gbWlnaHQgdGFrZSBtdWx0aXBsZSBwbGFpbi10ZXh0IHdyaXRlcygpLCBhbmQgdGhlblxuLy8gZW1pdCBhIHNpbmdsZSBjb21wcmVzc2VkIGNodW5rIHNvbWUgdGltZSBpbiB0aGUgZnV0dXJlLlxuLy9cbi8vIEhlcmUncyBob3cgdGhpcyB3b3Jrczpcbi8vXG4vLyBUaGUgVHJhbnNmb3JtIHN0cmVhbSBoYXMgYWxsIHRoZSBhc3BlY3RzIG9mIHRoZSByZWFkYWJsZSBhbmQgd3JpdGFibGVcbi8vIHN0cmVhbSBjbGFzc2VzLiAgV2hlbiB5b3Ugd3JpdGUoY2h1bmspLCB0aGF0IGNhbGxzIF93cml0ZShjaHVuayxjYilcbi8vIGludGVybmFsbHksIGFuZCByZXR1cm5zIGZhbHNlIGlmIHRoZXJlJ3MgYSBsb3Qgb2YgcGVuZGluZyB3cml0ZXNcbi8vIGJ1ZmZlcmVkIHVwLiAgV2hlbiB5b3UgY2FsbCByZWFkKCksIHRoYXQgY2FsbHMgX3JlYWQobikgdW50aWxcbi8vIHRoZXJlJ3MgZW5vdWdoIHBlbmRpbmcgcmVhZGFibGUgZGF0YSBidWZmZXJlZCB1cC5cbi8vXG4vLyBJbiBhIHRyYW5zZm9ybSBzdHJlYW0sIHRoZSB3cml0dGVuIGRhdGEgaXMgcGxhY2VkIGluIGEgYnVmZmVyLiAgV2hlblxuLy8gX3JlYWQobikgaXMgY2FsbGVkLCBpdCB0cmFuc2Zvcm1zIHRoZSBxdWV1ZWQgdXAgZGF0YSwgY2FsbGluZyB0aGVcbi8vIGJ1ZmZlcmVkIF93cml0ZSBjYidzIGFzIGl0IGNvbnN1bWVzIGNodW5rcy4gIElmIGNvbnN1bWluZyBhIHNpbmdsZVxuLy8gd3JpdHRlbiBjaHVuayB3b3VsZCByZXN1bHQgaW4gbXVsdGlwbGUgb3V0cHV0IGNodW5rcywgdGhlbiB0aGUgZmlyc3Rcbi8vIG91dHB1dHRlZCBiaXQgY2FsbHMgdGhlIHJlYWRjYiwgYW5kIHN1YnNlcXVlbnQgY2h1bmtzIGp1c3QgZ28gaW50b1xuLy8gdGhlIHJlYWQgYnVmZmVyLCBhbmQgd2lsbCBjYXVzZSBpdCB0byBlbWl0ICdyZWFkYWJsZScgaWYgbmVjZXNzYXJ5LlxuLy9cbi8vIFRoaXMgd2F5LCBiYWNrLXByZXNzdXJlIGlzIGFjdHVhbGx5IGRldGVybWluZWQgYnkgdGhlIHJlYWRpbmcgc2lkZSxcbi8vIHNpbmNlIF9yZWFkIGhhcyB0byBiZSBjYWxsZWQgdG8gc3RhcnQgcHJvY2Vzc2luZyBhIG5ldyBjaHVuay4gIEhvd2V2ZXIsXG4vLyBhIHBhdGhvbG9naWNhbCBpbmZsYXRlIHR5cGUgb2YgdHJhbnNmb3JtIGNhbiBjYXVzZSBleGNlc3NpdmUgYnVmZmVyaW5nXG4vLyBoZXJlLiAgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBzdHJlYW0gd2hlcmUgZXZlcnkgYnl0ZSBvZiBpbnB1dCBpc1xuLy8gaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlciBmcm9tIDAtMjU1LCBhbmQgdGhlbiByZXN1bHRzIGluIHRoYXQgbWFueVxuLy8gYnl0ZXMgb2Ygb3V0cHV0LiAgV3JpdGluZyB0aGUgNCBieXRlcyB7ZmYsZmYsZmYsZmZ9IHdvdWxkIHJlc3VsdCBpblxuLy8gMWtiIG9mIGRhdGEgYmVpbmcgb3V0cHV0LiAgSW4gdGhpcyBjYXNlLCB5b3UgY291bGQgd3JpdGUgYSB2ZXJ5IHNtYWxsXG4vLyBhbW91bnQgb2YgaW5wdXQsIGFuZCBlbmQgdXAgd2l0aCBhIHZlcnkgbGFyZ2UgYW1vdW50IG9mIG91dHB1dC4gIEluXG4vLyBzdWNoIGEgcGF0aG9sb2dpY2FsIGluZmxhdGluZyBtZWNoYW5pc20sIHRoZXJlJ2QgYmUgbm8gd2F5IHRvIHRlbGxcbi8vIHRoZSBzeXN0ZW0gdG8gc3RvcCBkb2luZyB0aGUgdHJhbnNmb3JtLiAgQSBzaW5nbGUgNE1CIHdyaXRlIGNvdWxkXG4vLyBjYXVzZSB0aGUgc3lzdGVtIHRvIHJ1biBvdXQgb2YgbWVtb3J5LlxuLy9cbi8vIEhvd2V2ZXIsIGV2ZW4gaW4gc3VjaCBhIHBhdGhvbG9naWNhbCBjYXNlLCBvbmx5IGEgc2luZ2xlIHdyaXR0ZW4gY2h1bmtcbi8vIHdvdWxkIGJlIGNvbnN1bWVkLCBhbmQgdGhlbiB0aGUgcmVzdCB3b3VsZCB3YWl0ICh1bi10cmFuc2Zvcm1lZCkgdW50aWxcbi8vIHRoZSByZXN1bHRzIG9mIHRoZSBwcmV2aW91cyB0cmFuc2Zvcm1lZCBjaHVuayB3ZXJlIGNvbnN1bWVkLlxuXG4ndXNlIHN0cmljdCdcblxuY29uc3QgeyBPYmplY3RTZXRQcm90b3R5cGVPZiwgU3ltYm9sIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL3ByaW1vcmRpYWxzJylcbm1vZHVsZS5leHBvcnRzID0gVHJhbnNmb3JtXG5jb25zdCB7IEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL2Vycm9ycycpLmNvZGVzXG5jb25zdCBEdXBsZXggPSByZXF1aXJlKCcuL2R1cGxleCcpXG5jb25zdCB7IGdldEhpZ2hXYXRlck1hcmsgfSA9IHJlcXVpcmUoJy4vc3RhdGUnKVxuT2JqZWN0U2V0UHJvdG90eXBlT2YoVHJhbnNmb3JtLnByb3RvdHlwZSwgRHVwbGV4LnByb3RvdHlwZSlcbk9iamVjdFNldFByb3RvdHlwZU9mKFRyYW5zZm9ybSwgRHVwbGV4KVxuY29uc3Qga0NhbGxiYWNrID0gU3ltYm9sKCdrQ2FsbGJhY2snKVxuZnVuY3Rpb24gVHJhbnNmb3JtKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRyYW5zZm9ybSkpIHJldHVybiBuZXcgVHJhbnNmb3JtKG9wdGlvbnMpXG5cbiAgLy8gVE9ETyAocm9uYWcpOiBUaGlzIHNob3VsZCBwcmVmZXJhYmx5IGFsd2F5cyBiZVxuICAvLyBhcHBsaWVkIGJ1dCB3b3VsZCBiZSBzZW12ZXItbWFqb3IuIE9yIGV2ZW4gYmV0dGVyO1xuICAvLyBtYWtlIFRyYW5zZm9ybSBhIFJlYWRhYmxlIHdpdGggdGhlIFdyaXRhYmxlIGludGVyZmFjZS5cbiAgY29uc3QgcmVhZGFibGVIaWdoV2F0ZXJNYXJrID0gb3B0aW9ucyA/IGdldEhpZ2hXYXRlck1hcmsodGhpcywgb3B0aW9ucywgJ3JlYWRhYmxlSGlnaFdhdGVyTWFyaycsIHRydWUpIDogbnVsbFxuICBpZiAocmVhZGFibGVIaWdoV2F0ZXJNYXJrID09PSAwKSB7XG4gICAgLy8gQSBEdXBsZXggd2lsbCBidWZmZXIgYm90aCBvbiB0aGUgd3JpdGFibGUgYW5kIHJlYWRhYmxlIHNpZGUgd2hpbGVcbiAgICAvLyBhIFRyYW5zZm9ybSBqdXN0IHdhbnRzIHRvIGJ1ZmZlciBod20gbnVtYmVyIG9mIGVsZW1lbnRzLiBUbyBhdm9pZFxuICAgIC8vIGJ1ZmZlcmluZyB0d2ljZSB3ZSBkaXNhYmxlIGJ1ZmZlcmluZyBvbiB0aGUgd3JpdGFibGUgc2lkZS5cbiAgICBvcHRpb25zID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGhpZ2hXYXRlck1hcms6IG51bGwsXG4gICAgICByZWFkYWJsZUhpZ2hXYXRlck1hcmssXG4gICAgICAvLyBUT0RPIChyb25hZyk6IDAgaXMgbm90IG9wdGltYWwgc2luY2Ugd2UgaGF2ZVxuICAgICAgLy8gYSBcImJ1Z1wiIHdoZXJlIHdlIGNoZWNrIG5lZWREcmFpbiBiZWZvcmUgY2FsbGluZyBfd3JpdGUgYW5kIG5vdCBhZnRlci5cbiAgICAgIC8vIFJlZnM6IGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9wdWxsLzMyODg3XG4gICAgICAvLyBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvcHVsbC8zNTk0MVxuICAgICAgd3JpdGFibGVIaWdoV2F0ZXJNYXJrOiBvcHRpb25zLndyaXRhYmxlSGlnaFdhdGVyTWFyayB8fCAwXG4gICAgfVxuICB9XG4gIER1cGxleC5jYWxsKHRoaXMsIG9wdGlvbnMpXG5cbiAgLy8gV2UgaGF2ZSBpbXBsZW1lbnRlZCB0aGUgX3JlYWQgbWV0aG9kLCBhbmQgZG9uZSB0aGUgb3RoZXIgdGhpbmdzXG4gIC8vIHRoYXQgUmVhZGFibGUgd2FudHMgYmVmb3JlIHRoZSBmaXJzdCBfcmVhZCBjYWxsLCBzbyB1bnNldCB0aGVcbiAgLy8gc3luYyBndWFyZCBmbGFnLlxuICB0aGlzLl9yZWFkYWJsZVN0YXRlLnN5bmMgPSBmYWxzZVxuICB0aGlzW2tDYWxsYmFja10gPSBudWxsXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fdHJhbnNmb3JtID0gb3B0aW9ucy50cmFuc2Zvcm1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoID0gb3B0aW9ucy5mbHVzaFxuICB9XG5cbiAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuICAvLyBCYWNrd2FyZHMgY29tcGF0LiBTb21lIFRyYW5zZm9ybSBzdHJlYW1zIGluY29ycmVjdGx5IGltcGxlbWVudCBfZmluYWxcbiAgLy8gaW5zdGVhZCBvZiBvciBpbiBhZGRpdGlvbiB0byBfZmx1c2guIEJ5IHVzaW5nICdwcmVmaW5pc2gnIGluc3RlYWQgb2ZcbiAgLy8gaW1wbGVtZW50aW5nIF9maW5hbCB3ZSBjb250aW51ZSBzdXBwb3J0aW5nIHRoaXMgdW5mb3J0dW5hdGUgdXNlIGNhc2UuXG4gIHRoaXMub24oJ3ByZWZpbmlzaCcsIHByZWZpbmlzaClcbn1cbmZ1bmN0aW9uIGZpbmFsKGNiKSB7XG4gIGlmICh0eXBlb2YgdGhpcy5fZmx1c2ggPT09ICdmdW5jdGlvbicgJiYgIXRoaXMuZGVzdHJveWVkKSB7XG4gICAgdGhpcy5fZmx1c2goKGVyLCBkYXRhKSA9PiB7XG4gICAgICBpZiAoZXIpIHtcbiAgICAgICAgaWYgKGNiKSB7XG4gICAgICAgICAgY2IoZXIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kZXN0cm95KGVyKVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGRhdGEgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnB1c2goZGF0YSlcbiAgICAgIH1cbiAgICAgIHRoaXMucHVzaChudWxsKVxuICAgICAgaWYgKGNiKSB7XG4gICAgICAgIGNiKClcbiAgICAgIH1cbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHRoaXMucHVzaChudWxsKVxuICAgIGlmIChjYikge1xuICAgICAgY2IoKVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gcHJlZmluaXNoKCkge1xuICBpZiAodGhpcy5fZmluYWwgIT09IGZpbmFsKSB7XG4gICAgZmluYWwuY2FsbCh0aGlzKVxuICB9XG59XG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9maW5hbCA9IGZpbmFsXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICB0aHJvdyBuZXcgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQoJ190cmFuc2Zvcm0oKScpXG59XG5UcmFuc2Zvcm0ucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHJTdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGVcbiAgY29uc3Qgd1N0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZVxuICBjb25zdCBsZW5ndGggPSByU3RhdGUubGVuZ3RoXG4gIHRoaXMuX3RyYW5zZm9ybShjaHVuaywgZW5jb2RpbmcsIChlcnIsIHZhbCkgPT4ge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGNhbGxiYWNrKGVycilcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAodmFsICE9IG51bGwpIHtcbiAgICAgIHRoaXMucHVzaCh2YWwpXG4gICAgfVxuICAgIGlmIChcbiAgICAgIHdTdGF0ZS5lbmRlZCB8fFxuICAgICAgLy8gQmFja3dhcmRzIGNvbXBhdC5cbiAgICAgIGxlbmd0aCA9PT0gclN0YXRlLmxlbmd0aCB8fFxuICAgICAgLy8gQmFja3dhcmRzIGNvbXBhdC5cbiAgICAgIHJTdGF0ZS5sZW5ndGggPCByU3RhdGUuaGlnaFdhdGVyTWFya1xuICAgICkge1xuICAgICAgY2FsbGJhY2soKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzW2tDYWxsYmFja10gPSBjYWxsYmFja1xuICAgIH1cbiAgfSlcbn1cblRyYW5zZm9ybS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzW2tDYWxsYmFja10pIHtcbiAgICBjb25zdCBjYWxsYmFjayA9IHRoaXNba0NhbGxiYWNrXVxuICAgIHRoaXNba0NhbGxiYWNrXSA9IG51bGxcbiAgICBjYWxsYmFjaygpXG4gIH1cbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIHBhc3N0aHJvdWdoIHN0cmVhbS5cbi8vIGJhc2ljYWxseSBqdXN0IHRoZSBtb3N0IG1pbmltYWwgc29ydCBvZiBUcmFuc2Zvcm0gc3RyZWFtLlxuLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy5cblxuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgT2JqZWN0U2V0UHJvdG90eXBlT2YgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvcHJpbW9yZGlhbHMnKVxubW9kdWxlLmV4cG9ydHMgPSBQYXNzVGhyb3VnaFxuY29uc3QgVHJhbnNmb3JtID0gcmVxdWlyZSgnLi90cmFuc2Zvcm0nKVxuT2JqZWN0U2V0UHJvdG90eXBlT2YoUGFzc1Rocm91Z2gucHJvdG90eXBlLCBUcmFuc2Zvcm0ucHJvdG90eXBlKVxuT2JqZWN0U2V0UHJvdG90eXBlT2YoUGFzc1Rocm91Z2gsIFRyYW5zZm9ybSlcbmZ1bmN0aW9uIFBhc3NUaHJvdWdoKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBhc3NUaHJvdWdoKSkgcmV0dXJuIG5ldyBQYXNzVGhyb3VnaChvcHRpb25zKVxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKVxufVxuUGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihudWxsLCBjaHVuaylcbn1cbiIsIi8qIHJlcGxhY2VtZW50IHN0YXJ0ICovXG5cbmNvbnN0IHByb2Nlc3MgPSByZXF1aXJlKCdwcm9jZXNzLycpXG5cbi8qIHJlcGxhY2VtZW50IGVuZCAqL1xuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9wdW1wIHdpdGhcbi8vIHBlcm1pc3Npb24gZnJvbSB0aGUgYXV0aG9yLCBNYXRoaWFzIEJ1dXMgKEBtYWZpbnRvc2gpLlxuXG47KCd1c2Ugc3RyaWN0JylcbmNvbnN0IHsgQXJyYXlJc0FycmF5LCBQcm9taXNlLCBTeW1ib2xBc3luY0l0ZXJhdG9yLCBTeW1ib2xEaXNwb3NlIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL3ByaW1vcmRpYWxzJylcbmNvbnN0IGVvcyA9IHJlcXVpcmUoJy4vZW5kLW9mLXN0cmVhbScpXG5jb25zdCB7IG9uY2UgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvdXRpbCcpXG5jb25zdCBkZXN0cm95SW1wbCA9IHJlcXVpcmUoJy4vZGVzdHJveScpXG5jb25zdCBEdXBsZXggPSByZXF1aXJlKCcuL2R1cGxleCcpXG5jb25zdCB7XG4gIGFnZ3JlZ2F0ZVR3b0Vycm9ycyxcbiAgY29kZXM6IHtcbiAgICBFUlJfSU5WQUxJRF9BUkdfVFlQRSxcbiAgICBFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUsXG4gICAgRVJSX01JU1NJTkdfQVJHUyxcbiAgICBFUlJfU1RSRUFNX0RFU1RST1lFRCxcbiAgICBFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRVxuICB9LFxuICBBYm9ydEVycm9yXG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9lcnJvcnMnKVxuY29uc3QgeyB2YWxpZGF0ZUZ1bmN0aW9uLCB2YWxpZGF0ZUFib3J0U2lnbmFsIH0gPSByZXF1aXJlKCcuLi92YWxpZGF0b3JzJylcbmNvbnN0IHtcbiAgaXNJdGVyYWJsZSxcbiAgaXNSZWFkYWJsZSxcbiAgaXNSZWFkYWJsZU5vZGVTdHJlYW0sXG4gIGlzTm9kZVN0cmVhbSxcbiAgaXNUcmFuc2Zvcm1TdHJlYW0sXG4gIGlzV2ViU3RyZWFtLFxuICBpc1JlYWRhYmxlU3RyZWFtLFxuICBpc1JlYWRhYmxlRmluaXNoZWRcbn0gPSByZXF1aXJlKCcuL3V0aWxzJylcbmNvbnN0IEFib3J0Q29udHJvbGxlciA9IGdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyIHx8IHJlcXVpcmUoJ2Fib3J0LWNvbnRyb2xsZXInKS5BYm9ydENvbnRyb2xsZXJcbmxldCBQYXNzVGhyb3VnaFxubGV0IFJlYWRhYmxlXG5sZXQgYWRkQWJvcnRMaXN0ZW5lclxuZnVuY3Rpb24gZGVzdHJveWVyKHN0cmVhbSwgcmVhZGluZywgd3JpdGluZykge1xuICBsZXQgZmluaXNoZWQgPSBmYWxzZVxuICBzdHJlYW0ub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGZpbmlzaGVkID0gdHJ1ZVxuICB9KVxuICBjb25zdCBjbGVhbnVwID0gZW9zKFxuICAgIHN0cmVhbSxcbiAgICB7XG4gICAgICByZWFkYWJsZTogcmVhZGluZyxcbiAgICAgIHdyaXRhYmxlOiB3cml0aW5nXG4gICAgfSxcbiAgICAoZXJyKSA9PiB7XG4gICAgICBmaW5pc2hlZCA9ICFlcnJcbiAgICB9XG4gIClcbiAgcmV0dXJuIHtcbiAgICBkZXN0cm95OiAoZXJyKSA9PiB7XG4gICAgICBpZiAoZmluaXNoZWQpIHJldHVyblxuICAgICAgZmluaXNoZWQgPSB0cnVlXG4gICAgICBkZXN0cm95SW1wbC5kZXN0cm95ZXIoc3RyZWFtLCBlcnIgfHwgbmV3IEVSUl9TVFJFQU1fREVTVFJPWUVEKCdwaXBlJykpXG4gICAgfSxcbiAgICBjbGVhbnVwXG4gIH1cbn1cbmZ1bmN0aW9uIHBvcENhbGxiYWNrKHN0cmVhbXMpIHtcbiAgLy8gU3RyZWFtcyBzaG91bGQgbmV2ZXIgYmUgYW4gZW1wdHkgYXJyYXkuIEl0IHNob3VsZCBhbHdheXMgY29udGFpbiBhdCBsZWFzdFxuICAvLyBhIHNpbmdsZSBzdHJlYW0uIFRoZXJlZm9yZSBvcHRpbWl6ZSBmb3IgdGhlIGF2ZXJhZ2UgY2FzZSBpbnN0ZWFkIG9mXG4gIC8vIGNoZWNraW5nIGZvciBsZW5ndGggPT09IDAgYXMgd2VsbC5cbiAgdmFsaWRhdGVGdW5jdGlvbihzdHJlYW1zW3N0cmVhbXMubGVuZ3RoIC0gMV0sICdzdHJlYW1zW3N0cmVhbS5sZW5ndGggLSAxXScpXG4gIHJldHVybiBzdHJlYW1zLnBvcCgpXG59XG5mdW5jdGlvbiBtYWtlQXN5bmNJdGVyYWJsZSh2YWwpIHtcbiAgaWYgKGlzSXRlcmFibGUodmFsKSkge1xuICAgIHJldHVybiB2YWxcbiAgfSBlbHNlIGlmIChpc1JlYWRhYmxlTm9kZVN0cmVhbSh2YWwpKSB7XG4gICAgLy8gTGVnYWN5IHN0cmVhbXMgYXJlIG5vdCBJdGVyYWJsZS5cbiAgICByZXR1cm4gZnJvbVJlYWRhYmxlKHZhbClcbiAgfVxuICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ3ZhbCcsIFsnUmVhZGFibGUnLCAnSXRlcmFibGUnLCAnQXN5bmNJdGVyYWJsZSddLCB2YWwpXG59XG5hc3luYyBmdW5jdGlvbiogZnJvbVJlYWRhYmxlKHZhbCkge1xuICBpZiAoIVJlYWRhYmxlKSB7XG4gICAgUmVhZGFibGUgPSByZXF1aXJlKCcuL3JlYWRhYmxlJylcbiAgfVxuICB5aWVsZCogUmVhZGFibGUucHJvdG90eXBlW1N5bWJvbEFzeW5jSXRlcmF0b3JdLmNhbGwodmFsKVxufVxuYXN5bmMgZnVuY3Rpb24gcHVtcFRvTm9kZShpdGVyYWJsZSwgd3JpdGFibGUsIGZpbmlzaCwgeyBlbmQgfSkge1xuICBsZXQgZXJyb3JcbiAgbGV0IG9ucmVzb2x2ZSA9IG51bGxcbiAgY29uc3QgcmVzdW1lID0gKGVycikgPT4ge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGVycm9yID0gZXJyXG4gICAgfVxuICAgIGlmIChvbnJlc29sdmUpIHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gb25yZXNvbHZlXG4gICAgICBvbnJlc29sdmUgPSBudWxsXG4gICAgICBjYWxsYmFjaygpXG4gICAgfVxuICB9XG4gIGNvbnN0IHdhaXQgPSAoKSA9PlxuICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbnJlc29sdmUgPSAoKSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIHdyaXRhYmxlLm9uKCdkcmFpbicsIHJlc3VtZSlcbiAgY29uc3QgY2xlYW51cCA9IGVvcyhcbiAgICB3cml0YWJsZSxcbiAgICB7XG4gICAgICByZWFkYWJsZTogZmFsc2VcbiAgICB9LFxuICAgIHJlc3VtZVxuICApXG4gIHRyeSB7XG4gICAgaWYgKHdyaXRhYmxlLndyaXRhYmxlTmVlZERyYWluKSB7XG4gICAgICBhd2FpdCB3YWl0KClcbiAgICB9XG4gICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBpdGVyYWJsZSkge1xuICAgICAgaWYgKCF3cml0YWJsZS53cml0ZShjaHVuaykpIHtcbiAgICAgICAgYXdhaXQgd2FpdCgpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbmQpIHtcbiAgICAgIHdyaXRhYmxlLmVuZCgpXG4gICAgICBhd2FpdCB3YWl0KClcbiAgICB9XG4gICAgZmluaXNoKClcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZmluaXNoKGVycm9yICE9PSBlcnIgPyBhZ2dyZWdhdGVUd29FcnJvcnMoZXJyb3IsIGVycikgOiBlcnIpXG4gIH0gZmluYWxseSB7XG4gICAgY2xlYW51cCgpXG4gICAgd3JpdGFibGUub2ZmKCdkcmFpbicsIHJlc3VtZSlcbiAgfVxufVxuYXN5bmMgZnVuY3Rpb24gcHVtcFRvV2ViKHJlYWRhYmxlLCB3cml0YWJsZSwgZmluaXNoLCB7IGVuZCB9KSB7XG4gIGlmIChpc1RyYW5zZm9ybVN0cmVhbSh3cml0YWJsZSkpIHtcbiAgICB3cml0YWJsZSA9IHdyaXRhYmxlLndyaXRhYmxlXG4gIH1cbiAgLy8gaHR0cHM6Ly9zdHJlYW1zLnNwZWMud2hhdHdnLm9yZy8jZXhhbXBsZS1tYW51YWwtd3JpdGUtd2l0aC1iYWNrcHJlc3N1cmVcbiAgY29uc3Qgd3JpdGVyID0gd3JpdGFibGUuZ2V0V3JpdGVyKClcbiAgdHJ5IHtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHJlYWRhYmxlKSB7XG4gICAgICBhd2FpdCB3cml0ZXIucmVhZHlcbiAgICAgIHdyaXRlci53cml0ZShjaHVuaykuY2F0Y2goKCkgPT4ge30pXG4gICAgfVxuICAgIGF3YWl0IHdyaXRlci5yZWFkeVxuICAgIGlmIChlbmQpIHtcbiAgICAgIGF3YWl0IHdyaXRlci5jbG9zZSgpXG4gICAgfVxuICAgIGZpbmlzaCgpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3cml0ZXIuYWJvcnQoZXJyKVxuICAgICAgZmluaXNoKGVycilcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGZpbmlzaChlcnIpXG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBwaXBlbGluZSguLi5zdHJlYW1zKSB7XG4gIHJldHVybiBwaXBlbGluZUltcGwoc3RyZWFtcywgb25jZShwb3BDYWxsYmFjayhzdHJlYW1zKSkpXG59XG5mdW5jdGlvbiBwaXBlbGluZUltcGwoc3RyZWFtcywgY2FsbGJhY2ssIG9wdHMpIHtcbiAgaWYgKHN0cmVhbXMubGVuZ3RoID09PSAxICYmIEFycmF5SXNBcnJheShzdHJlYW1zWzBdKSkge1xuICAgIHN0cmVhbXMgPSBzdHJlYW1zWzBdXG4gIH1cbiAgaWYgKHN0cmVhbXMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFUlJfTUlTU0lOR19BUkdTKCdzdHJlYW1zJylcbiAgfVxuICBjb25zdCBhYyA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICBjb25zdCBzaWduYWwgPSBhYy5zaWduYWxcbiAgY29uc3Qgb3V0ZXJTaWduYWwgPSBvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdHMuc2lnbmFsXG5cbiAgLy8gTmVlZCB0byBjbGVhbnVwIGV2ZW50IGxpc3RlbmVycyBpZiBsYXN0IHN0cmVhbSBpcyByZWFkYWJsZVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvaXNzdWVzLzM1NDUyXG4gIGNvbnN0IGxhc3RTdHJlYW1DbGVhbnVwID0gW11cbiAgdmFsaWRhdGVBYm9ydFNpZ25hbChvdXRlclNpZ25hbCwgJ29wdGlvbnMuc2lnbmFsJylcbiAgZnVuY3Rpb24gYWJvcnQoKSB7XG4gICAgZmluaXNoSW1wbChuZXcgQWJvcnRFcnJvcigpKVxuICB9XG4gIGFkZEFib3J0TGlzdGVuZXIgPSBhZGRBYm9ydExpc3RlbmVyIHx8IHJlcXVpcmUoJy4uLy4uL291cnMvdXRpbCcpLmFkZEFib3J0TGlzdGVuZXJcbiAgbGV0IGRpc3Bvc2FibGVcbiAgaWYgKG91dGVyU2lnbmFsKSB7XG4gICAgZGlzcG9zYWJsZSA9IGFkZEFib3J0TGlzdGVuZXIob3V0ZXJTaWduYWwsIGFib3J0KVxuICB9XG4gIGxldCBlcnJvclxuICBsZXQgdmFsdWVcbiAgY29uc3QgZGVzdHJveXMgPSBbXVxuICBsZXQgZmluaXNoQ291bnQgPSAwXG4gIGZ1bmN0aW9uIGZpbmlzaChlcnIpIHtcbiAgICBmaW5pc2hJbXBsKGVyciwgLS1maW5pc2hDb3VudCA9PT0gMClcbiAgfVxuICBmdW5jdGlvbiBmaW5pc2hJbXBsKGVyciwgZmluYWwpIHtcbiAgICB2YXIgX2Rpc3Bvc2FibGVcbiAgICBpZiAoZXJyICYmICghZXJyb3IgfHwgZXJyb3IuY29kZSA9PT0gJ0VSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFJykpIHtcbiAgICAgIGVycm9yID0gZXJyXG4gICAgfVxuICAgIGlmICghZXJyb3IgJiYgIWZpbmFsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgd2hpbGUgKGRlc3Ryb3lzLmxlbmd0aCkge1xuICAgICAgZGVzdHJveXMuc2hpZnQoKShlcnJvcilcbiAgICB9XG4gICAgOyhfZGlzcG9zYWJsZSA9IGRpc3Bvc2FibGUpID09PSBudWxsIHx8IF9kaXNwb3NhYmxlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBfZGlzcG9zYWJsZVtTeW1ib2xEaXNwb3NlXSgpXG4gICAgYWMuYWJvcnQoKVxuICAgIGlmIChmaW5hbCkge1xuICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICBsYXN0U3RyZWFtQ2xlYW51cC5mb3JFYWNoKChmbikgPT4gZm4oKSlcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2ssIGVycm9yLCB2YWx1ZSlcbiAgICB9XG4gIH1cbiAgbGV0IHJldFxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmVhbXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1zW2ldXG4gICAgY29uc3QgcmVhZGluZyA9IGkgPCBzdHJlYW1zLmxlbmd0aCAtIDFcbiAgICBjb25zdCB3cml0aW5nID0gaSA+IDBcbiAgICBjb25zdCBlbmQgPSByZWFkaW5nIHx8IChvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdHMuZW5kKSAhPT0gZmFsc2VcbiAgICBjb25zdCBpc0xhc3RTdHJlYW0gPSBpID09PSBzdHJlYW1zLmxlbmd0aCAtIDFcbiAgICBpZiAoaXNOb2RlU3RyZWFtKHN0cmVhbSkpIHtcbiAgICAgIGlmIChlbmQpIHtcbiAgICAgICAgY29uc3QgeyBkZXN0cm95LCBjbGVhbnVwIH0gPSBkZXN0cm95ZXIoc3RyZWFtLCByZWFkaW5nLCB3cml0aW5nKVxuICAgICAgICBkZXN0cm95cy5wdXNoKGRlc3Ryb3kpXG4gICAgICAgIGlmIChpc1JlYWRhYmxlKHN0cmVhbSkgJiYgaXNMYXN0U3RyZWFtKSB7XG4gICAgICAgICAgbGFzdFN0cmVhbUNsZWFudXAucHVzaChjbGVhbnVwKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENhdGNoIHN0cmVhbSBlcnJvcnMgdGhhdCBvY2N1ciBhZnRlciBwaXBlL3B1bXAgaGFzIGNvbXBsZXRlZC5cbiAgICAgIGZ1bmN0aW9uIG9uRXJyb3IoZXJyKSB7XG4gICAgICAgIGlmIChlcnIgJiYgZXJyLm5hbWUgIT09ICdBYm9ydEVycm9yJyAmJiBlcnIuY29kZSAhPT0gJ0VSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFJykge1xuICAgICAgICAgIGZpbmlzaChlcnIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCBvbkVycm9yKVxuICAgICAgaWYgKGlzUmVhZGFibGUoc3RyZWFtKSAmJiBpc0xhc3RTdHJlYW0pIHtcbiAgICAgICAgbGFzdFN0cmVhbUNsZWFudXAucHVzaCgoKSA9PiB7XG4gICAgICAgICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBpZiAodHlwZW9mIHN0cmVhbSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXQgPSBzdHJlYW0oe1xuICAgICAgICAgIHNpZ25hbFxuICAgICAgICB9KVxuICAgICAgICBpZiAoIWlzSXRlcmFibGUocmV0KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUoJ0l0ZXJhYmxlLCBBc3luY0l0ZXJhYmxlIG9yIFN0cmVhbScsICdzb3VyY2UnLCByZXQpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNJdGVyYWJsZShzdHJlYW0pIHx8IGlzUmVhZGFibGVOb2RlU3RyZWFtKHN0cmVhbSkgfHwgaXNUcmFuc2Zvcm1TdHJlYW0oc3RyZWFtKSkge1xuICAgICAgICByZXQgPSBzdHJlYW1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldCA9IER1cGxleC5mcm9tKHN0cmVhbSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdHJlYW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChpc1RyYW5zZm9ybVN0cmVhbShyZXQpKSB7XG4gICAgICAgIHZhciBfcmV0XG4gICAgICAgIHJldCA9IG1ha2VBc3luY0l0ZXJhYmxlKChfcmV0ID0gcmV0KSA9PT0gbnVsbCB8fCBfcmV0ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBfcmV0LnJlYWRhYmxlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0ID0gbWFrZUFzeW5jSXRlcmFibGUocmV0KVxuICAgICAgfVxuICAgICAgcmV0ID0gc3RyZWFtKHJldCwge1xuICAgICAgICBzaWduYWxcbiAgICAgIH0pXG4gICAgICBpZiAocmVhZGluZykge1xuICAgICAgICBpZiAoIWlzSXRlcmFibGUocmV0LCB0cnVlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUoJ0FzeW5jSXRlcmFibGUnLCBgdHJhbnNmb3JtWyR7aSAtIDF9XWAsIHJldClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF9yZXQyXG4gICAgICAgIGlmICghUGFzc1Rocm91Z2gpIHtcbiAgICAgICAgICBQYXNzVGhyb3VnaCA9IHJlcXVpcmUoJy4vcGFzc3Rocm91Z2gnKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlIGxhc3QgYXJndW1lbnQgdG8gcGlwZWxpbmUgaXMgbm90IGEgc3RyZWFtXG4gICAgICAgIC8vIHdlIG11c3QgY3JlYXRlIGEgcHJveHkgc3RyZWFtIHNvIHRoYXQgcGlwZWxpbmUoLi4uKVxuICAgICAgICAvLyBhbHdheXMgcmV0dXJucyBhIHN0cmVhbSB3aGljaCBjYW4gYmUgZnVydGhlclxuICAgICAgICAvLyBjb21wb3NlZCB0aHJvdWdoIGAucGlwZShzdHJlYW0pYC5cblxuICAgICAgICBjb25zdCBwdCA9IG5ldyBQYXNzVGhyb3VnaCh7XG4gICAgICAgICAgb2JqZWN0TW9kZTogdHJ1ZVxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIEhhbmRsZSBQcm9taXNlcy9BKyBzcGVjLCBgdGhlbmAgY291bGQgYmUgYSBnZXR0ZXIgdGhhdCB0aHJvd3Mgb25cbiAgICAgICAgLy8gc2Vjb25kIHVzZS5cbiAgICAgICAgY29uc3QgdGhlbiA9IChfcmV0MiA9IHJldCkgPT09IG51bGwgfHwgX3JldDIgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IF9yZXQyLnRoZW5cbiAgICAgICAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgZmluaXNoQ291bnQrK1xuICAgICAgICAgIHRoZW4uY2FsbChcbiAgICAgICAgICAgIHJldCxcbiAgICAgICAgICAgICh2YWwpID0+IHtcbiAgICAgICAgICAgICAgdmFsdWUgPSB2YWxcbiAgICAgICAgICAgICAgaWYgKHZhbCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcHQud3JpdGUodmFsKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChlbmQpIHtcbiAgICAgICAgICAgICAgICBwdC5lbmQoKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soZmluaXNoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgcHQuZGVzdHJveShlcnIpXG4gICAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soZmluaXNoLCBlcnIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2UgaWYgKGlzSXRlcmFibGUocmV0LCB0cnVlKSkge1xuICAgICAgICAgIGZpbmlzaENvdW50KytcbiAgICAgICAgICBwdW1wVG9Ob2RlKHJldCwgcHQsIGZpbmlzaCwge1xuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIGlmIChpc1JlYWRhYmxlU3RyZWFtKHJldCkgfHwgaXNUcmFuc2Zvcm1TdHJlYW0ocmV0KSkge1xuICAgICAgICAgIGNvbnN0IHRvUmVhZCA9IHJldC5yZWFkYWJsZSB8fCByZXRcbiAgICAgICAgICBmaW5pc2hDb3VudCsrXG4gICAgICAgICAgcHVtcFRvTm9kZSh0b1JlYWQsIHB0LCBmaW5pc2gsIHtcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRSgnQXN5bmNJdGVyYWJsZSBvciBQcm9taXNlJywgJ2Rlc3RpbmF0aW9uJywgcmV0KVxuICAgICAgICB9XG4gICAgICAgIHJldCA9IHB0XG4gICAgICAgIGNvbnN0IHsgZGVzdHJveSwgY2xlYW51cCB9ID0gZGVzdHJveWVyKHJldCwgZmFsc2UsIHRydWUpXG4gICAgICAgIGRlc3Ryb3lzLnB1c2goZGVzdHJveSlcbiAgICAgICAgaWYgKGlzTGFzdFN0cmVhbSkge1xuICAgICAgICAgIGxhc3RTdHJlYW1DbGVhbnVwLnB1c2goY2xlYW51cClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNOb2RlU3RyZWFtKHN0cmVhbSkpIHtcbiAgICAgIGlmIChpc1JlYWRhYmxlTm9kZVN0cmVhbShyZXQpKSB7XG4gICAgICAgIGZpbmlzaENvdW50ICs9IDJcbiAgICAgICAgY29uc3QgY2xlYW51cCA9IHBpcGUocmV0LCBzdHJlYW0sIGZpbmlzaCwge1xuICAgICAgICAgIGVuZFxuICAgICAgICB9KVxuICAgICAgICBpZiAoaXNSZWFkYWJsZShzdHJlYW0pICYmIGlzTGFzdFN0cmVhbSkge1xuICAgICAgICAgIGxhc3RTdHJlYW1DbGVhbnVwLnB1c2goY2xlYW51cClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc1RyYW5zZm9ybVN0cmVhbShyZXQpIHx8IGlzUmVhZGFibGVTdHJlYW0ocmV0KSkge1xuICAgICAgICBjb25zdCB0b1JlYWQgPSByZXQucmVhZGFibGUgfHwgcmV0XG4gICAgICAgIGZpbmlzaENvdW50KytcbiAgICAgICAgcHVtcFRvTm9kZSh0b1JlYWQsIHN0cmVhbSwgZmluaXNoLCB7XG4gICAgICAgICAgZW5kXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGlzSXRlcmFibGUocmV0KSkge1xuICAgICAgICBmaW5pc2hDb3VudCsrXG4gICAgICAgIHB1bXBUb05vZGUocmV0LCBzdHJlYW0sIGZpbmlzaCwge1xuICAgICAgICAgIGVuZFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKFxuICAgICAgICAgICd2YWwnLFxuICAgICAgICAgIFsnUmVhZGFibGUnLCAnSXRlcmFibGUnLCAnQXN5bmNJdGVyYWJsZScsICdSZWFkYWJsZVN0cmVhbScsICdUcmFuc2Zvcm1TdHJlYW0nXSxcbiAgICAgICAgICByZXRcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0ID0gc3RyZWFtXG4gICAgfSBlbHNlIGlmIChpc1dlYlN0cmVhbShzdHJlYW0pKSB7XG4gICAgICBpZiAoaXNSZWFkYWJsZU5vZGVTdHJlYW0ocmV0KSkge1xuICAgICAgICBmaW5pc2hDb3VudCsrXG4gICAgICAgIHB1bXBUb1dlYihtYWtlQXN5bmNJdGVyYWJsZShyZXQpLCBzdHJlYW0sIGZpbmlzaCwge1xuICAgICAgICAgIGVuZFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChpc1JlYWRhYmxlU3RyZWFtKHJldCkgfHwgaXNJdGVyYWJsZShyZXQpKSB7XG4gICAgICAgIGZpbmlzaENvdW50KytcbiAgICAgICAgcHVtcFRvV2ViKHJldCwgc3RyZWFtLCBmaW5pc2gsIHtcbiAgICAgICAgICBlbmRcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoaXNUcmFuc2Zvcm1TdHJlYW0ocmV0KSkge1xuICAgICAgICBmaW5pc2hDb3VudCsrXG4gICAgICAgIHB1bXBUb1dlYihyZXQucmVhZGFibGUsIHN0cmVhbSwgZmluaXNoLCB7XG4gICAgICAgICAgZW5kXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoXG4gICAgICAgICAgJ3ZhbCcsXG4gICAgICAgICAgWydSZWFkYWJsZScsICdJdGVyYWJsZScsICdBc3luY0l0ZXJhYmxlJywgJ1JlYWRhYmxlU3RyZWFtJywgJ1RyYW5zZm9ybVN0cmVhbSddLFxuICAgICAgICAgIHJldFxuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXQgPSBzdHJlYW1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0gRHVwbGV4LmZyb20oc3RyZWFtKVxuICAgIH1cbiAgfVxuICBpZiAoXG4gICAgKHNpZ25hbCAhPT0gbnVsbCAmJiBzaWduYWwgIT09IHVuZGVmaW5lZCAmJiBzaWduYWwuYWJvcnRlZCkgfHxcbiAgICAob3V0ZXJTaWduYWwgIT09IG51bGwgJiYgb3V0ZXJTaWduYWwgIT09IHVuZGVmaW5lZCAmJiBvdXRlclNpZ25hbC5hYm9ydGVkKVxuICApIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGFib3J0KVxuICB9XG4gIHJldHVybiByZXRcbn1cbmZ1bmN0aW9uIHBpcGUoc3JjLCBkc3QsIGZpbmlzaCwgeyBlbmQgfSkge1xuICBsZXQgZW5kZWQgPSBmYWxzZVxuICBkc3Qub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmICghZW5kZWQpIHtcbiAgICAgIC8vIEZpbmlzaCBpZiB0aGUgZGVzdGluYXRpb24gY2xvc2VzIGJlZm9yZSB0aGUgc291cmNlIGhhcyBjb21wbGV0ZWQuXG4gICAgICBmaW5pc2gobmV3IEVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFKCkpXG4gICAgfVxuICB9KVxuICBzcmMucGlwZShkc3QsIHtcbiAgICBlbmQ6IGZhbHNlXG4gIH0pIC8vIElmIGVuZCBpcyB0cnVlIHdlIGFscmVhZHkgd2lsbCBoYXZlIGEgbGlzdGVuZXIgdG8gZW5kIGRzdC5cblxuICBpZiAoZW5kKSB7XG4gICAgLy8gQ29tcGF0LiBCZWZvcmUgbm9kZSB2MTAuMTIuMCBzdGRpbyB1c2VkIHRvIHRocm93IGFuIGVycm9yIHNvXG4gICAgLy8gcGlwZSgpIGRpZC9kb2VzIG5vdCBlbmQoKSBzdGRpbyBkZXN0aW5hdGlvbnMuXG4gICAgLy8gTm93IHRoZXkgYWxsb3cgaXQgYnV0IFwic2VjcmV0bHlcIiBkb24ndCBjbG9zZSB0aGUgdW5kZXJseWluZyBmZC5cblxuICAgIGZ1bmN0aW9uIGVuZEZuKCkge1xuICAgICAgZW5kZWQgPSB0cnVlXG4gICAgICBkc3QuZW5kKClcbiAgICB9XG4gICAgaWYgKGlzUmVhZGFibGVGaW5pc2hlZChzcmMpKSB7XG4gICAgICAvLyBFbmQgdGhlIGRlc3RpbmF0aW9uIGlmIHRoZSBzb3VyY2UgaGFzIGFscmVhZHkgZW5kZWQuXG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGVuZEZuKVxuICAgIH0gZWxzZSB7XG4gICAgICBzcmMub25jZSgnZW5kJywgZW5kRm4pXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZpbmlzaCgpXG4gIH1cbiAgZW9zKFxuICAgIHNyYyxcbiAgICB7XG4gICAgICByZWFkYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZVxuICAgIH0sXG4gICAgKGVycikgPT4ge1xuICAgICAgY29uc3QgclN0YXRlID0gc3JjLl9yZWFkYWJsZVN0YXRlXG4gICAgICBpZiAoXG4gICAgICAgIGVyciAmJlxuICAgICAgICBlcnIuY29kZSA9PT0gJ0VSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFJyAmJlxuICAgICAgICByU3RhdGUgJiZcbiAgICAgICAgclN0YXRlLmVuZGVkICYmXG4gICAgICAgICFyU3RhdGUuZXJyb3JlZCAmJlxuICAgICAgICAhclN0YXRlLmVycm9yRW1pdHRlZFxuICAgICAgKSB7XG4gICAgICAgIC8vIFNvbWUgcmVhZGFibGUgc3RyZWFtcyB3aWxsIGVtaXQgJ2Nsb3NlJyBiZWZvcmUgJ2VuZCcuIEhvd2V2ZXIsIHNpbmNlXG4gICAgICAgIC8vIHRoaXMgaXMgb24gdGhlIHJlYWRhYmxlIHNpZGUgJ2VuZCcgc2hvdWxkIHN0aWxsIGJlIGVtaXR0ZWQgaWYgdGhlXG4gICAgICAgIC8vIHN0cmVhbSBoYXMgYmVlbiBlbmRlZCBhbmQgbm8gZXJyb3IgZW1pdHRlZC4gVGhpcyBzaG91bGQgYmUgYWxsb3dlZCBpblxuICAgICAgICAvLyBmYXZvciBvZiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4gU2luY2UgdGhlIHN0cmVhbSBpcyBwaXBlZCB0byBhXG4gICAgICAgIC8vIGRlc3RpbmF0aW9uIHRoaXMgc2hvdWxkIG5vdCByZXN1bHQgaW4gYW55IG9ic2VydmFibGUgZGlmZmVyZW5jZS5cbiAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjaGVjayBpZiB0aGlzIGlzIGEgd3JpdGFibGUgcHJlbWF0dXJlIGNsb3NlIHNpbmNlXG4gICAgICAgIC8vIGVvcyB3aWxsIG9ubHkgZmFpbCB3aXRoIHByZW1hdHVyZSBjbG9zZSBvbiB0aGUgcmVhZGluZyBzaWRlIGZvclxuICAgICAgICAvLyBkdXBsZXggc3RyZWFtcy5cbiAgICAgICAgc3JjLm9uY2UoJ2VuZCcsIGZpbmlzaCkub25jZSgnZXJyb3InLCBmaW5pc2gpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaW5pc2goZXJyKVxuICAgICAgfVxuICAgIH1cbiAgKVxuICByZXR1cm4gZW9zKFxuICAgIGRzdCxcbiAgICB7XG4gICAgICByZWFkYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0sXG4gICAgZmluaXNoXG4gIClcbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwaXBlbGluZUltcGwsXG4gIHBpcGVsaW5lXG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgeyBwaXBlbGluZSB9ID0gcmVxdWlyZSgnLi9waXBlbGluZScpXG5jb25zdCBEdXBsZXggPSByZXF1aXJlKCcuL2R1cGxleCcpXG5jb25zdCB7IGRlc3Ryb3llciB9ID0gcmVxdWlyZSgnLi9kZXN0cm95JylcbmNvbnN0IHtcbiAgaXNOb2RlU3RyZWFtLFxuICBpc1JlYWRhYmxlLFxuICBpc1dyaXRhYmxlLFxuICBpc1dlYlN0cmVhbSxcbiAgaXNUcmFuc2Zvcm1TdHJlYW0sXG4gIGlzV3JpdGFibGVTdHJlYW0sXG4gIGlzUmVhZGFibGVTdHJlYW1cbn0gPSByZXF1aXJlKCcuL3V0aWxzJylcbmNvbnN0IHtcbiAgQWJvcnRFcnJvcixcbiAgY29kZXM6IHsgRVJSX0lOVkFMSURfQVJHX1ZBTFVFLCBFUlJfTUlTU0lOR19BUkdTIH1cbn0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL2Vycm9ycycpXG5jb25zdCBlb3MgPSByZXF1aXJlKCcuL2VuZC1vZi1zdHJlYW0nKVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb21wb3NlKC4uLnN0cmVhbXMpIHtcbiAgaWYgKHN0cmVhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ3N0cmVhbXMnKVxuICB9XG4gIGlmIChzdHJlYW1zLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBEdXBsZXguZnJvbShzdHJlYW1zWzBdKVxuICB9XG4gIGNvbnN0IG9yZ1N0cmVhbXMgPSBbLi4uc3RyZWFtc11cbiAgaWYgKHR5cGVvZiBzdHJlYW1zWzBdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgc3RyZWFtc1swXSA9IER1cGxleC5mcm9tKHN0cmVhbXNbMF0pXG4gIH1cbiAgaWYgKHR5cGVvZiBzdHJlYW1zW3N0cmVhbXMubGVuZ3RoIC0gMV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCBpZHggPSBzdHJlYW1zLmxlbmd0aCAtIDFcbiAgICBzdHJlYW1zW2lkeF0gPSBEdXBsZXguZnJvbShzdHJlYW1zW2lkeF0pXG4gIH1cbiAgZm9yIChsZXQgbiA9IDA7IG4gPCBzdHJlYW1zLmxlbmd0aDsgKytuKSB7XG4gICAgaWYgKCFpc05vZGVTdHJlYW0oc3RyZWFtc1tuXSkgJiYgIWlzV2ViU3RyZWFtKHN0cmVhbXNbbl0pKSB7XG4gICAgICAvLyBUT0RPKHJvbmFnKTogQWRkIGNoZWNrcyBmb3Igbm9uIHN0cmVhbXMuXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBuIDwgc3RyZWFtcy5sZW5ndGggLSAxICYmXG4gICAgICAhKGlzUmVhZGFibGUoc3RyZWFtc1tuXSkgfHwgaXNSZWFkYWJsZVN0cmVhbShzdHJlYW1zW25dKSB8fCBpc1RyYW5zZm9ybVN0cmVhbShzdHJlYW1zW25dKSlcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVkFMVUUoYHN0cmVhbXNbJHtufV1gLCBvcmdTdHJlYW1zW25dLCAnbXVzdCBiZSByZWFkYWJsZScpXG4gICAgfVxuICAgIGlmIChuID4gMCAmJiAhKGlzV3JpdGFibGUoc3RyZWFtc1tuXSkgfHwgaXNXcml0YWJsZVN0cmVhbShzdHJlYW1zW25dKSB8fCBpc1RyYW5zZm9ybVN0cmVhbShzdHJlYW1zW25dKSkpIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVkFMVUUoYHN0cmVhbXNbJHtufV1gLCBvcmdTdHJlYW1zW25dLCAnbXVzdCBiZSB3cml0YWJsZScpXG4gICAgfVxuICB9XG4gIGxldCBvbmRyYWluXG4gIGxldCBvbmZpbmlzaFxuICBsZXQgb25yZWFkYWJsZVxuICBsZXQgb25jbG9zZVxuICBsZXQgZFxuICBmdW5jdGlvbiBvbmZpbmlzaGVkKGVycikge1xuICAgIGNvbnN0IGNiID0gb25jbG9zZVxuICAgIG9uY2xvc2UgPSBudWxsXG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihlcnIpXG4gICAgfSBlbHNlIGlmIChlcnIpIHtcbiAgICAgIGQuZGVzdHJveShlcnIpXG4gICAgfSBlbHNlIGlmICghcmVhZGFibGUgJiYgIXdyaXRhYmxlKSB7XG4gICAgICBkLmRlc3Ryb3koKVxuICAgIH1cbiAgfVxuICBjb25zdCBoZWFkID0gc3RyZWFtc1swXVxuICBjb25zdCB0YWlsID0gcGlwZWxpbmUoc3RyZWFtcywgb25maW5pc2hlZClcbiAgY29uc3Qgd3JpdGFibGUgPSAhIShpc1dyaXRhYmxlKGhlYWQpIHx8IGlzV3JpdGFibGVTdHJlYW0oaGVhZCkgfHwgaXNUcmFuc2Zvcm1TdHJlYW0oaGVhZCkpXG4gIGNvbnN0IHJlYWRhYmxlID0gISEoaXNSZWFkYWJsZSh0YWlsKSB8fCBpc1JlYWRhYmxlU3RyZWFtKHRhaWwpIHx8IGlzVHJhbnNmb3JtU3RyZWFtKHRhaWwpKVxuXG4gIC8vIFRPRE8ocm9uYWcpOiBBdm9pZCBkb3VibGUgYnVmZmVyaW5nLlxuICAvLyBJbXBsZW1lbnQgV3JpdGFibGUvUmVhZGFibGUvRHVwbGV4IHRyYWl0cy5cbiAgLy8gU2VlLCBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvcHVsbC8zMzUxNS5cbiAgZCA9IG5ldyBEdXBsZXgoe1xuICAgIC8vIFRPRE8gKHJvbmFnKTogaGlnaFdhdGVyTWFyaz9cbiAgICB3cml0YWJsZU9iamVjdE1vZGU6ICEhKGhlYWQgIT09IG51bGwgJiYgaGVhZCAhPT0gdW5kZWZpbmVkICYmIGhlYWQud3JpdGFibGVPYmplY3RNb2RlKSxcbiAgICByZWFkYWJsZU9iamVjdE1vZGU6ICEhKHRhaWwgIT09IG51bGwgJiYgdGFpbCAhPT0gdW5kZWZpbmVkICYmIHRhaWwucmVhZGFibGVPYmplY3RNb2RlKSxcbiAgICB3cml0YWJsZSxcbiAgICByZWFkYWJsZVxuICB9KVxuICBpZiAod3JpdGFibGUpIHtcbiAgICBpZiAoaXNOb2RlU3RyZWFtKGhlYWQpKSB7XG4gICAgICBkLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmIChoZWFkLndyaXRlKGNodW5rLCBlbmNvZGluZykpIHtcbiAgICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25kcmFpbiA9IGNhbGxiYWNrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGQuX2ZpbmFsID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICAgIGhlYWQuZW5kKClcbiAgICAgICAgb25maW5pc2ggPSBjYWxsYmFja1xuICAgICAgfVxuICAgICAgaGVhZC5vbignZHJhaW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChvbmRyYWluKSB7XG4gICAgICAgICAgY29uc3QgY2IgPSBvbmRyYWluXG4gICAgICAgICAgb25kcmFpbiA9IG51bGxcbiAgICAgICAgICBjYigpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmIChpc1dlYlN0cmVhbShoZWFkKSkge1xuICAgICAgY29uc3Qgd3JpdGFibGUgPSBpc1RyYW5zZm9ybVN0cmVhbShoZWFkKSA/IGhlYWQud3JpdGFibGUgOiBoZWFkXG4gICAgICBjb25zdCB3cml0ZXIgPSB3cml0YWJsZS5nZXRXcml0ZXIoKVxuICAgICAgZC5fd3JpdGUgPSBhc3luYyBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHdyaXRlci5yZWFkeVxuICAgICAgICAgIHdyaXRlci53cml0ZShjaHVuaykuY2F0Y2goKCkgPT4ge30pXG4gICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjYWxsYmFjayhlcnIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGQuX2ZpbmFsID0gYXN5bmMgZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgd3JpdGVyLnJlYWR5XG4gICAgICAgICAgd3JpdGVyLmNsb3NlKCkuY2F0Y2goKCkgPT4ge30pXG4gICAgICAgICAgb25maW5pc2ggPSBjYWxsYmFja1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjYWxsYmFjayhlcnIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdG9SZWFkID0gaXNUcmFuc2Zvcm1TdHJlYW0odGFpbCkgPyB0YWlsLnJlYWRhYmxlIDogdGFpbFxuICAgIGVvcyh0b1JlYWQsICgpID0+IHtcbiAgICAgIGlmIChvbmZpbmlzaCkge1xuICAgICAgICBjb25zdCBjYiA9IG9uZmluaXNoXG4gICAgICAgIG9uZmluaXNoID0gbnVsbFxuICAgICAgICBjYigpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBpZiAocmVhZGFibGUpIHtcbiAgICBpZiAoaXNOb2RlU3RyZWFtKHRhaWwpKSB7XG4gICAgICB0YWlsLm9uKCdyZWFkYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG9ucmVhZGFibGUpIHtcbiAgICAgICAgICBjb25zdCBjYiA9IG9ucmVhZGFibGVcbiAgICAgICAgICBvbnJlYWRhYmxlID0gbnVsbFxuICAgICAgICAgIGNiKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHRhaWwub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5wdXNoKG51bGwpXG4gICAgICB9KVxuICAgICAgZC5fcmVhZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICBjb25zdCBidWYgPSB0YWlsLnJlYWQoKVxuICAgICAgICAgIGlmIChidWYgPT09IG51bGwpIHtcbiAgICAgICAgICAgIG9ucmVhZGFibGUgPSBkLl9yZWFkXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFkLnB1c2goYnVmKSkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dlYlN0cmVhbSh0YWlsKSkge1xuICAgICAgY29uc3QgcmVhZGFibGUgPSBpc1RyYW5zZm9ybVN0cmVhbSh0YWlsKSA/IHRhaWwucmVhZGFibGUgOiB0YWlsXG4gICAgICBjb25zdCByZWFkZXIgPSByZWFkYWJsZS5nZXRSZWFkZXIoKVxuICAgICAgZC5fcmVhZCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSwgZG9uZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICAgICAgaWYgKCFkLnB1c2godmFsdWUpKSB7XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgICAgZC5wdXNoKG51bGwpXG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGQuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYWxsYmFjaykge1xuICAgIGlmICghZXJyICYmIG9uY2xvc2UgIT09IG51bGwpIHtcbiAgICAgIGVyciA9IG5ldyBBYm9ydEVycm9yKClcbiAgICB9XG4gICAgb25yZWFkYWJsZSA9IG51bGxcbiAgICBvbmRyYWluID0gbnVsbFxuICAgIG9uZmluaXNoID0gbnVsbFxuICAgIGlmIChvbmNsb3NlID09PSBudWxsKSB7XG4gICAgICBjYWxsYmFjayhlcnIpXG4gICAgfSBlbHNlIHtcbiAgICAgIG9uY2xvc2UgPSBjYWxsYmFja1xuICAgICAgaWYgKGlzTm9kZVN0cmVhbSh0YWlsKSkge1xuICAgICAgICBkZXN0cm95ZXIodGFpbCwgZXJyKVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IEFib3J0Q29udHJvbGxlciA9IGdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyIHx8IHJlcXVpcmUoJ2Fib3J0LWNvbnRyb2xsZXInKS5BYm9ydENvbnRyb2xsZXJcbmNvbnN0IHtcbiAgY29kZXM6IHsgRVJSX0lOVkFMSURfQVJHX1ZBTFVFLCBFUlJfSU5WQUxJRF9BUkdfVFlQRSwgRVJSX01JU1NJTkdfQVJHUywgRVJSX09VVF9PRl9SQU5HRSB9LFxuICBBYm9ydEVycm9yXG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9lcnJvcnMnKVxuY29uc3QgeyB2YWxpZGF0ZUFib3J0U2lnbmFsLCB2YWxpZGF0ZUludGVnZXIsIHZhbGlkYXRlT2JqZWN0IH0gPSByZXF1aXJlKCcuLi92YWxpZGF0b3JzJylcbmNvbnN0IGtXZWFrSGFuZGxlciA9IHJlcXVpcmUoJy4uLy4uL291cnMvcHJpbW9yZGlhbHMnKS5TeW1ib2woJ2tXZWFrJylcbmNvbnN0IGtSZXNpc3RTdG9wUHJvcGFnYXRpb24gPSByZXF1aXJlKCcuLi8uLi9vdXJzL3ByaW1vcmRpYWxzJykuU3ltYm9sKCdrUmVzaXN0U3RvcFByb3BhZ2F0aW9uJylcbmNvbnN0IHsgZmluaXNoZWQgfSA9IHJlcXVpcmUoJy4vZW5kLW9mLXN0cmVhbScpXG5jb25zdCBzdGF0aWNDb21wb3NlID0gcmVxdWlyZSgnLi9jb21wb3NlJylcbmNvbnN0IHsgYWRkQWJvcnRTaWduYWxOb1ZhbGlkYXRlIH0gPSByZXF1aXJlKCcuL2FkZC1hYm9ydC1zaWduYWwnKVxuY29uc3QgeyBpc1dyaXRhYmxlLCBpc05vZGVTdHJlYW0gfSA9IHJlcXVpcmUoJy4vdXRpbHMnKVxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvdXRpbCcpXG5jb25zdCB7XG4gIEFycmF5UHJvdG90eXBlUHVzaCxcbiAgQm9vbGVhbixcbiAgTWF0aEZsb29yLFxuICBOdW1iZXIsXG4gIE51bWJlcklzTmFOLFxuICBQcm9taXNlLFxuICBQcm9taXNlUmVqZWN0LFxuICBQcm9taXNlUmVzb2x2ZSxcbiAgUHJvbWlzZVByb3RvdHlwZVRoZW4sXG4gIFN5bWJvbFxufSA9IHJlcXVpcmUoJy4uLy4uL291cnMvcHJpbW9yZGlhbHMnKVxuY29uc3Qga0VtcHR5ID0gU3ltYm9sKCdrRW1wdHknKVxuY29uc3Qga0VvZiA9IFN5bWJvbCgna0VvZicpXG5mdW5jdGlvbiBjb21wb3NlKHN0cmVhbSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyAhPSBudWxsKSB7XG4gICAgdmFsaWRhdGVPYmplY3Qob3B0aW9ucywgJ29wdGlvbnMnKVxuICB9XG4gIGlmICgob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBvcHRpb25zLnNpZ25hbCkgIT0gbnVsbCkge1xuICAgIHZhbGlkYXRlQWJvcnRTaWduYWwob3B0aW9ucy5zaWduYWwsICdvcHRpb25zLnNpZ25hbCcpXG4gIH1cbiAgaWYgKGlzTm9kZVN0cmVhbShzdHJlYW0pICYmICFpc1dyaXRhYmxlKHN0cmVhbSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1ZBTFVFKCdzdHJlYW0nLCBzdHJlYW0sICdtdXN0IGJlIHdyaXRhYmxlJylcbiAgfVxuICBjb25zdCBjb21wb3NlZFN0cmVhbSA9IHN0YXRpY0NvbXBvc2UodGhpcywgc3RyZWFtKVxuICBpZiAob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5zaWduYWwpIHtcbiAgICAvLyBOb3QgdmFsaWRhdGluZyBhcyB3ZSBhbHJlYWR5IHZhbGlkYXRlZCBiZWZvcmVcbiAgICBhZGRBYm9ydFNpZ25hbE5vVmFsaWRhdGUob3B0aW9ucy5zaWduYWwsIGNvbXBvc2VkU3RyZWFtKVxuICB9XG4gIHJldHVybiBjb21wb3NlZFN0cmVhbVxufVxuZnVuY3Rpb24gbWFwKGZuLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2ZuJywgWydGdW5jdGlvbicsICdBc3luY0Z1bmN0aW9uJ10sIGZuKVxuICB9XG4gIGlmIChvcHRpb25zICE9IG51bGwpIHtcbiAgICB2YWxpZGF0ZU9iamVjdChvcHRpb25zLCAnb3B0aW9ucycpXG4gIH1cbiAgaWYgKChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdGlvbnMuc2lnbmFsKSAhPSBudWxsKSB7XG4gICAgdmFsaWRhdGVBYm9ydFNpZ25hbChvcHRpb25zLnNpZ25hbCwgJ29wdGlvbnMuc2lnbmFsJylcbiAgfVxuICBsZXQgY29uY3VycmVuY3kgPSAxXG4gIGlmICgob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBvcHRpb25zLmNvbmN1cnJlbmN5KSAhPSBudWxsKSB7XG4gICAgY29uY3VycmVuY3kgPSBNYXRoRmxvb3Iob3B0aW9ucy5jb25jdXJyZW5jeSlcbiAgfVxuICBsZXQgaGlnaFdhdGVyTWFyayA9IGNvbmN1cnJlbmN5IC0gMVxuICBpZiAoKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogb3B0aW9ucy5oaWdoV2F0ZXJNYXJrKSAhPSBudWxsKSB7XG4gICAgaGlnaFdhdGVyTWFyayA9IE1hdGhGbG9vcihvcHRpb25zLmhpZ2hXYXRlck1hcmspXG4gIH1cbiAgdmFsaWRhdGVJbnRlZ2VyKGNvbmN1cnJlbmN5LCAnb3B0aW9ucy5jb25jdXJyZW5jeScsIDEpXG4gIHZhbGlkYXRlSW50ZWdlcihoaWdoV2F0ZXJNYXJrLCAnb3B0aW9ucy5oaWdoV2F0ZXJNYXJrJywgMClcbiAgaGlnaFdhdGVyTWFyayArPSBjb25jdXJyZW5jeVxuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24qIG1hcCgpIHtcbiAgICBjb25zdCBzaWduYWwgPSByZXF1aXJlKCcuLi8uLi9vdXJzL3V0aWwnKS5BYm9ydFNpZ25hbEFueShcbiAgICAgIFtvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdGlvbnMuc2lnbmFsXS5maWx0ZXIoQm9vbGVhbilcbiAgICApXG4gICAgY29uc3Qgc3RyZWFtID0gdGhpc1xuICAgIGNvbnN0IHF1ZXVlID0gW11cbiAgICBjb25zdCBzaWduYWxPcHQgPSB7XG4gICAgICBzaWduYWxcbiAgICB9XG4gICAgbGV0IG5leHRcbiAgICBsZXQgcmVzdW1lXG4gICAgbGV0IGRvbmUgPSBmYWxzZVxuICAgIGxldCBjbnQgPSAwXG4gICAgZnVuY3Rpb24gb25DYXRjaCgpIHtcbiAgICAgIGRvbmUgPSB0cnVlXG4gICAgICBhZnRlckl0ZW1Qcm9jZXNzZWQoKVxuICAgIH1cbiAgICBmdW5jdGlvbiBhZnRlckl0ZW1Qcm9jZXNzZWQoKSB7XG4gICAgICBjbnQgLT0gMVxuICAgICAgbWF5YmVSZXN1bWUoKVxuICAgIH1cbiAgICBmdW5jdGlvbiBtYXliZVJlc3VtZSgpIHtcbiAgICAgIGlmIChyZXN1bWUgJiYgIWRvbmUgJiYgY250IDwgY29uY3VycmVuY3kgJiYgcXVldWUubGVuZ3RoIDwgaGlnaFdhdGVyTWFyaykge1xuICAgICAgICByZXN1bWUoKVxuICAgICAgICByZXN1bWUgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIHB1bXAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgYXdhaXQgKGxldCB2YWwgb2Ygc3RyZWFtKSB7XG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBYm9ydEVycm9yKClcbiAgICAgICAgICB9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhbCA9IGZuKHZhbCwgc2lnbmFsT3B0KVxuICAgICAgICAgICAgaWYgKHZhbCA9PT0ga0VtcHR5KSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWwgPSBQcm9taXNlUmVzb2x2ZSh2YWwpXG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB2YWwgPSBQcm9taXNlUmVqZWN0KGVycilcbiAgICAgICAgICB9XG4gICAgICAgICAgY250ICs9IDFcbiAgICAgICAgICBQcm9taXNlUHJvdG90eXBlVGhlbih2YWwsIGFmdGVySXRlbVByb2Nlc3NlZCwgb25DYXRjaClcbiAgICAgICAgICBxdWV1ZS5wdXNoKHZhbClcbiAgICAgICAgICBpZiAobmV4dCkge1xuICAgICAgICAgICAgbmV4dCgpXG4gICAgICAgICAgICBuZXh0ID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWRvbmUgJiYgKHF1ZXVlLmxlbmd0aCA+PSBoaWdoV2F0ZXJNYXJrIHx8IGNudCA+PSBjb25jdXJyZW5jeSkpIHtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAgIHJlc3VtZSA9IHJlc29sdmVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlLnB1c2goa0VvZilcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zdCB2YWwgPSBQcm9taXNlUmVqZWN0KGVycilcbiAgICAgICAgUHJvbWlzZVByb3RvdHlwZVRoZW4odmFsLCBhZnRlckl0ZW1Qcm9jZXNzZWQsIG9uQ2F0Y2gpXG4gICAgICAgIHF1ZXVlLnB1c2godmFsKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgZG9uZSA9IHRydWVcbiAgICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgICBuZXh0KClcbiAgICAgICAgICBuZXh0ID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHB1bXAoKVxuICAgIHRyeSB7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IHZhbCA9IGF3YWl0IHF1ZXVlWzBdXG4gICAgICAgICAgaWYgKHZhbCA9PT0ga0VvZikge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFib3J0RXJyb3IoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFsICE9PSBrRW1wdHkpIHtcbiAgICAgICAgICAgIHlpZWxkIHZhbFxuICAgICAgICAgIH1cbiAgICAgICAgICBxdWV1ZS5zaGlmdCgpXG4gICAgICAgICAgbWF5YmVSZXN1bWUoKVxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgbmV4dCA9IHJlc29sdmVcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgZG9uZSA9IHRydWVcbiAgICAgIGlmIChyZXN1bWUpIHtcbiAgICAgICAgcmVzdW1lKClcbiAgICAgICAgcmVzdW1lID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfS5jYWxsKHRoaXMpXG59XG5mdW5jdGlvbiBhc0luZGV4ZWRQYWlycyhvcHRpb25zID0gdW5kZWZpbmVkKSB7XG4gIGlmIChvcHRpb25zICE9IG51bGwpIHtcbiAgICB2YWxpZGF0ZU9iamVjdChvcHRpb25zLCAnb3B0aW9ucycpXG4gIH1cbiAgaWYgKChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdGlvbnMuc2lnbmFsKSAhPSBudWxsKSB7XG4gICAgdmFsaWRhdGVBYm9ydFNpZ25hbChvcHRpb25zLnNpZ25hbCwgJ29wdGlvbnMuc2lnbmFsJylcbiAgfVxuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24qIGFzSW5kZXhlZFBhaXJzKCkge1xuICAgIGxldCBpbmRleCA9IDBcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHZhbCBvZiB0aGlzKSB7XG4gICAgICB2YXIgX29wdGlvbnMkc2lnbmFsXG4gICAgICBpZiAoXG4gICAgICAgIG9wdGlvbnMgIT09IG51bGwgJiZcbiAgICAgICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIChfb3B0aW9ucyRzaWduYWwgPSBvcHRpb25zLnNpZ25hbCkgIT09IG51bGwgJiZcbiAgICAgICAgX29wdGlvbnMkc2lnbmFsICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgX29wdGlvbnMkc2lnbmFsLmFib3J0ZWRcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgQWJvcnRFcnJvcih7XG4gICAgICAgICAgY2F1c2U6IG9wdGlvbnMuc2lnbmFsLnJlYXNvblxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgeWllbGQgW2luZGV4KyssIHZhbF1cbiAgICB9XG4gIH0uY2FsbCh0aGlzKVxufVxuYXN5bmMgZnVuY3Rpb24gc29tZShmbiwgb3B0aW9ucyA9IHVuZGVmaW5lZCkge1xuICBmb3IgYXdhaXQgKGNvbnN0IHVudXNlZCBvZiBmaWx0ZXIuY2FsbCh0aGlzLCBmbiwgb3B0aW9ucykpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuYXN5bmMgZnVuY3Rpb24gZXZlcnkoZm4sIG9wdGlvbnMgPSB1bmRlZmluZWQpIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnZm4nLCBbJ0Z1bmN0aW9uJywgJ0FzeW5jRnVuY3Rpb24nXSwgZm4pXG4gIH1cbiAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVfTW9yZ2FuJTI3c19sYXdzXG4gIHJldHVybiAhKGF3YWl0IHNvbWUuY2FsbChcbiAgICB0aGlzLFxuICAgIGFzeW5jICguLi5hcmdzKSA9PiB7XG4gICAgICByZXR1cm4gIShhd2FpdCBmbiguLi5hcmdzKSlcbiAgICB9LFxuICAgIG9wdGlvbnNcbiAgKSlcbn1cbmFzeW5jIGZ1bmN0aW9uIGZpbmQoZm4sIG9wdGlvbnMpIHtcbiAgZm9yIGF3YWl0IChjb25zdCByZXN1bHQgb2YgZmlsdGVyLmNhbGwodGhpcywgZm4sIG9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cbmFzeW5jIGZ1bmN0aW9uIGZvckVhY2goZm4sIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnZm4nLCBbJ0Z1bmN0aW9uJywgJ0FzeW5jRnVuY3Rpb24nXSwgZm4pXG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gZm9yRWFjaEZuKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgYXdhaXQgZm4odmFsdWUsIG9wdGlvbnMpXG4gICAgcmV0dXJuIGtFbXB0eVxuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBmb3IgYXdhaXQgKGNvbnN0IHVudXNlZCBvZiBtYXAuY2FsbCh0aGlzLCBmb3JFYWNoRm4sIG9wdGlvbnMpKTtcbn1cbmZ1bmN0aW9uIGZpbHRlcihmbiwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdmbicsIFsnRnVuY3Rpb24nLCAnQXN5bmNGdW5jdGlvbiddLCBmbilcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBmaWx0ZXJGbih2YWx1ZSwgb3B0aW9ucykge1xuICAgIGlmIChhd2FpdCBmbih2YWx1ZSwgb3B0aW9ucykpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cbiAgICByZXR1cm4ga0VtcHR5XG4gIH1cbiAgcmV0dXJuIG1hcC5jYWxsKHRoaXMsIGZpbHRlckZuLCBvcHRpb25zKVxufVxuXG4vLyBTcGVjaWZpYyB0byBwcm92aWRlIGJldHRlciBlcnJvciB0byByZWR1Y2Ugc2luY2UgdGhlIGFyZ3VtZW50IGlzIG9ubHlcbi8vIG1pc3NpbmcgaWYgdGhlIHN0cmVhbSBoYXMgbm8gaXRlbXMgaW4gaXQgLSBidXQgdGhlIGNvZGUgaXMgc3RpbGwgYXBwcm9wcmlhdGVcbmNsYXNzIFJlZHVjZUF3YXJlRXJyTWlzc2luZ0FyZ3MgZXh0ZW5kcyBFUlJfTUlTU0lOR19BUkdTIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ3JlZHVjZScpXG4gICAgdGhpcy5tZXNzYWdlID0gJ1JlZHVjZSBvZiBhbiBlbXB0eSBzdHJlYW0gcmVxdWlyZXMgYW4gaW5pdGlhbCB2YWx1ZSdcbiAgfVxufVxuYXN5bmMgZnVuY3Rpb24gcmVkdWNlKHJlZHVjZXIsIGluaXRpYWxWYWx1ZSwgb3B0aW9ucykge1xuICB2YXIgX29wdGlvbnMkc2lnbmFsMlxuICBpZiAodHlwZW9mIHJlZHVjZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ3JlZHVjZXInLCBbJ0Z1bmN0aW9uJywgJ0FzeW5jRnVuY3Rpb24nXSwgcmVkdWNlcilcbiAgfVxuICBpZiAob3B0aW9ucyAhPSBudWxsKSB7XG4gICAgdmFsaWRhdGVPYmplY3Qob3B0aW9ucywgJ29wdGlvbnMnKVxuICB9XG4gIGlmICgob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBvcHRpb25zLnNpZ25hbCkgIT0gbnVsbCkge1xuICAgIHZhbGlkYXRlQWJvcnRTaWduYWwob3B0aW9ucy5zaWduYWwsICdvcHRpb25zLnNpZ25hbCcpXG4gIH1cbiAgbGV0IGhhc0luaXRpYWxWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxXG4gIGlmIChcbiAgICBvcHRpb25zICE9PSBudWxsICYmXG4gICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgKF9vcHRpb25zJHNpZ25hbDIgPSBvcHRpb25zLnNpZ25hbCkgIT09IG51bGwgJiZcbiAgICBfb3B0aW9ucyRzaWduYWwyICE9PSB1bmRlZmluZWQgJiZcbiAgICBfb3B0aW9ucyRzaWduYWwyLmFib3J0ZWRcbiAgKSB7XG4gICAgY29uc3QgZXJyID0gbmV3IEFib3J0RXJyb3IodW5kZWZpbmVkLCB7XG4gICAgICBjYXVzZTogb3B0aW9ucy5zaWduYWwucmVhc29uXG4gICAgfSlcbiAgICB0aGlzLm9uY2UoJ2Vycm9yJywgKCkgPT4ge30pIC8vIFRoZSBlcnJvciBpcyBhbHJlYWR5IHByb3BhZ2F0ZWRcbiAgICBhd2FpdCBmaW5pc2hlZCh0aGlzLmRlc3Ryb3koZXJyKSlcbiAgICB0aHJvdyBlcnJcbiAgfVxuICBjb25zdCBhYyA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICBjb25zdCBzaWduYWwgPSBhYy5zaWduYWxcbiAgaWYgKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuc2lnbmFsKSB7XG4gICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgIG9uY2U6IHRydWUsXG4gICAgICBba1dlYWtIYW5kbGVyXTogdGhpcyxcbiAgICAgIFtrUmVzaXN0U3RvcFByb3BhZ2F0aW9uXTogdHJ1ZVxuICAgIH1cbiAgICBvcHRpb25zLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IGFjLmFib3J0KCksIG9wdHMpXG4gIH1cbiAgbGV0IGdvdEFueUl0ZW1Gcm9tU3RyZWFtID0gZmFsc2VcbiAgdHJ5IHtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHZhbHVlIG9mIHRoaXMpIHtcbiAgICAgIHZhciBfb3B0aW9ucyRzaWduYWwzXG4gICAgICBnb3RBbnlJdGVtRnJvbVN0cmVhbSA9IHRydWVcbiAgICAgIGlmIChcbiAgICAgICAgb3B0aW9ucyAhPT0gbnVsbCAmJlxuICAgICAgICBvcHRpb25zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgKF9vcHRpb25zJHNpZ25hbDMgPSBvcHRpb25zLnNpZ25hbCkgIT09IG51bGwgJiZcbiAgICAgICAgX29wdGlvbnMkc2lnbmFsMyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIF9vcHRpb25zJHNpZ25hbDMuYWJvcnRlZFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBBYm9ydEVycm9yKClcbiAgICAgIH1cbiAgICAgIGlmICghaGFzSW5pdGlhbFZhbHVlKSB7XG4gICAgICAgIGluaXRpYWxWYWx1ZSA9IHZhbHVlXG4gICAgICAgIGhhc0luaXRpYWxWYWx1ZSA9IHRydWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaXRpYWxWYWx1ZSA9IGF3YWl0IHJlZHVjZXIoaW5pdGlhbFZhbHVlLCB2YWx1ZSwge1xuICAgICAgICAgIHNpZ25hbFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWdvdEFueUl0ZW1Gcm9tU3RyZWFtICYmICFoYXNJbml0aWFsVmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBSZWR1Y2VBd2FyZUVyck1pc3NpbmdBcmdzKClcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgYWMuYWJvcnQoKVxuICB9XG4gIHJldHVybiBpbml0aWFsVmFsdWVcbn1cbmFzeW5jIGZ1bmN0aW9uIHRvQXJyYXkob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyAhPSBudWxsKSB7XG4gICAgdmFsaWRhdGVPYmplY3Qob3B0aW9ucywgJ29wdGlvbnMnKVxuICB9XG4gIGlmICgob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBvcHRpb25zLnNpZ25hbCkgIT0gbnVsbCkge1xuICAgIHZhbGlkYXRlQWJvcnRTaWduYWwob3B0aW9ucy5zaWduYWwsICdvcHRpb25zLnNpZ25hbCcpXG4gIH1cbiAgY29uc3QgcmVzdWx0ID0gW11cbiAgZm9yIGF3YWl0IChjb25zdCB2YWwgb2YgdGhpcykge1xuICAgIHZhciBfb3B0aW9ucyRzaWduYWw0XG4gICAgaWYgKFxuICAgICAgb3B0aW9ucyAhPT0gbnVsbCAmJlxuICAgICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoX29wdGlvbnMkc2lnbmFsNCA9IG9wdGlvbnMuc2lnbmFsKSAhPT0gbnVsbCAmJlxuICAgICAgX29wdGlvbnMkc2lnbmFsNCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBfb3B0aW9ucyRzaWduYWw0LmFib3J0ZWRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBBYm9ydEVycm9yKHVuZGVmaW5lZCwge1xuICAgICAgICBjYXVzZTogb3B0aW9ucy5zaWduYWwucmVhc29uXG4gICAgICB9KVxuICAgIH1cbiAgICBBcnJheVByb3RvdHlwZVB1c2gocmVzdWx0LCB2YWwpXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuZnVuY3Rpb24gZmxhdE1hcChmbiwgb3B0aW9ucykge1xuICBjb25zdCB2YWx1ZXMgPSBtYXAuY2FsbCh0aGlzLCBmbiwgb3B0aW9ucylcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uKiBmbGF0TWFwKCkge1xuICAgIGZvciBhd2FpdCAoY29uc3QgdmFsIG9mIHZhbHVlcykge1xuICAgICAgeWllbGQqIHZhbFxuICAgIH1cbiAgfS5jYWxsKHRoaXMpXG59XG5mdW5jdGlvbiB0b0ludGVnZXJPckluZmluaXR5KG51bWJlcikge1xuICAvLyBXZSBjb2VyY2UgaGVyZSB0byBhbGlnbiB3aXRoIHRoZSBzcGVjXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnMvaXNzdWVzLzE2OVxuICBudW1iZXIgPSBOdW1iZXIobnVtYmVyKVxuICBpZiAoTnVtYmVySXNOYU4obnVtYmVyKSkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKG51bWJlciA8IDApIHtcbiAgICB0aHJvdyBuZXcgRVJSX09VVF9PRl9SQU5HRSgnbnVtYmVyJywgJz49IDAnLCBudW1iZXIpXG4gIH1cbiAgcmV0dXJuIG51bWJlclxufVxuZnVuY3Rpb24gZHJvcChudW1iZXIsIG9wdGlvbnMgPSB1bmRlZmluZWQpIHtcbiAgaWYgKG9wdGlvbnMgIT0gbnVsbCkge1xuICAgIHZhbGlkYXRlT2JqZWN0KG9wdGlvbnMsICdvcHRpb25zJylcbiAgfVxuICBpZiAoKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogb3B0aW9ucy5zaWduYWwpICE9IG51bGwpIHtcbiAgICB2YWxpZGF0ZUFib3J0U2lnbmFsKG9wdGlvbnMuc2lnbmFsLCAnb3B0aW9ucy5zaWduYWwnKVxuICB9XG4gIG51bWJlciA9IHRvSW50ZWdlck9ySW5maW5pdHkobnVtYmVyKVxuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24qIGRyb3AoKSB7XG4gICAgdmFyIF9vcHRpb25zJHNpZ25hbDVcbiAgICBpZiAoXG4gICAgICBvcHRpb25zICE9PSBudWxsICYmXG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIChfb3B0aW9ucyRzaWduYWw1ID0gb3B0aW9ucy5zaWduYWwpICE9PSBudWxsICYmXG4gICAgICBfb3B0aW9ucyRzaWduYWw1ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIF9vcHRpb25zJHNpZ25hbDUuYWJvcnRlZFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEFib3J0RXJyb3IoKVxuICAgIH1cbiAgICBmb3IgYXdhaXQgKGNvbnN0IHZhbCBvZiB0aGlzKSB7XG4gICAgICB2YXIgX29wdGlvbnMkc2lnbmFsNlxuICAgICAgaWYgKFxuICAgICAgICBvcHRpb25zICE9PSBudWxsICYmXG4gICAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAoX29wdGlvbnMkc2lnbmFsNiA9IG9wdGlvbnMuc2lnbmFsKSAhPT0gbnVsbCAmJlxuICAgICAgICBfb3B0aW9ucyRzaWduYWw2ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgX29wdGlvbnMkc2lnbmFsNi5hYm9ydGVkXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEFib3J0RXJyb3IoKVxuICAgICAgfVxuICAgICAgaWYgKG51bWJlci0tIDw9IDApIHtcbiAgICAgICAgeWllbGQgdmFsXG4gICAgICB9XG4gICAgfVxuICB9LmNhbGwodGhpcylcbn1cbmZ1bmN0aW9uIHRha2UobnVtYmVyLCBvcHRpb25zID0gdW5kZWZpbmVkKSB7XG4gIGlmIChvcHRpb25zICE9IG51bGwpIHtcbiAgICB2YWxpZGF0ZU9iamVjdChvcHRpb25zLCAnb3B0aW9ucycpXG4gIH1cbiAgaWYgKChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdGlvbnMuc2lnbmFsKSAhPSBudWxsKSB7XG4gICAgdmFsaWRhdGVBYm9ydFNpZ25hbChvcHRpb25zLnNpZ25hbCwgJ29wdGlvbnMuc2lnbmFsJylcbiAgfVxuICBudW1iZXIgPSB0b0ludGVnZXJPckluZmluaXR5KG51bWJlcilcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uKiB0YWtlKCkge1xuICAgIHZhciBfb3B0aW9ucyRzaWduYWw3XG4gICAgaWYgKFxuICAgICAgb3B0aW9ucyAhPT0gbnVsbCAmJlxuICAgICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoX29wdGlvbnMkc2lnbmFsNyA9IG9wdGlvbnMuc2lnbmFsKSAhPT0gbnVsbCAmJlxuICAgICAgX29wdGlvbnMkc2lnbmFsNyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBfb3B0aW9ucyRzaWduYWw3LmFib3J0ZWRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBBYm9ydEVycm9yKClcbiAgICB9XG4gICAgZm9yIGF3YWl0IChjb25zdCB2YWwgb2YgdGhpcykge1xuICAgICAgdmFyIF9vcHRpb25zJHNpZ25hbDhcbiAgICAgIGlmIChcbiAgICAgICAgb3B0aW9ucyAhPT0gbnVsbCAmJlxuICAgICAgICBvcHRpb25zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgKF9vcHRpb25zJHNpZ25hbDggPSBvcHRpb25zLnNpZ25hbCkgIT09IG51bGwgJiZcbiAgICAgICAgX29wdGlvbnMkc2lnbmFsOCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIF9vcHRpb25zJHNpZ25hbDguYWJvcnRlZFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBBYm9ydEVycm9yKClcbiAgICAgIH1cbiAgICAgIGlmIChudW1iZXItLSA+IDApIHtcbiAgICAgICAgeWllbGQgdmFsXG4gICAgICB9XG5cbiAgICAgIC8vIERvbid0IGdldCBhbm90aGVyIGl0ZW0gZnJvbSBpdGVyYXRvciBpbiBjYXNlIHdlIHJlYWNoZWQgdGhlIGVuZFxuICAgICAgaWYgKG51bWJlciA8PSAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgfS5jYWxsKHRoaXMpXG59XG5tb2R1bGUuZXhwb3J0cy5zdHJlYW1SZXR1cm5pbmdPcGVyYXRvcnMgPSB7XG4gIGFzSW5kZXhlZFBhaXJzOiBkZXByZWNhdGUoYXNJbmRleGVkUGFpcnMsICdyZWFkYWJsZS5hc0luZGV4ZWRQYWlycyB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4nKSxcbiAgZHJvcCxcbiAgZmlsdGVyLFxuICBmbGF0TWFwLFxuICBtYXAsXG4gIHRha2UsXG4gIGNvbXBvc2Vcbn1cbm1vZHVsZS5leHBvcnRzLnByb21pc2VSZXR1cm5pbmdPcGVyYXRvcnMgPSB7XG4gIGV2ZXJ5LFxuICBmb3JFYWNoLFxuICByZWR1Y2UsXG4gIHRvQXJyYXksXG4gIHNvbWUsXG4gIGZpbmRcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IEFycmF5UHJvdG90eXBlUG9wLCBQcm9taXNlIH0gPSByZXF1aXJlKCcuLi9vdXJzL3ByaW1vcmRpYWxzJylcbmNvbnN0IHsgaXNJdGVyYWJsZSwgaXNOb2RlU3RyZWFtLCBpc1dlYlN0cmVhbSB9ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvc3RyZWFtcy91dGlscycpXG5jb25zdCB7IHBpcGVsaW5lSW1wbDogcGwgfSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3N0cmVhbXMvcGlwZWxpbmUnKVxuY29uc3QgeyBmaW5pc2hlZCB9ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvc3RyZWFtcy9lbmQtb2Ytc3RyZWFtJylcbnJlcXVpcmUoJy4uLy4uL2xpYi9zdHJlYW0uanMnKVxuZnVuY3Rpb24gcGlwZWxpbmUoLi4uc3RyZWFtcykge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGxldCBzaWduYWxcbiAgICBsZXQgZW5kXG4gICAgY29uc3QgbGFzdEFyZyA9IHN0cmVhbXNbc3RyZWFtcy5sZW5ndGggLSAxXVxuICAgIGlmIChcbiAgICAgIGxhc3RBcmcgJiZcbiAgICAgIHR5cGVvZiBsYXN0QXJnID09PSAnb2JqZWN0JyAmJlxuICAgICAgIWlzTm9kZVN0cmVhbShsYXN0QXJnKSAmJlxuICAgICAgIWlzSXRlcmFibGUobGFzdEFyZykgJiZcbiAgICAgICFpc1dlYlN0cmVhbShsYXN0QXJnKVxuICAgICkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IEFycmF5UHJvdG90eXBlUG9wKHN0cmVhbXMpXG4gICAgICBzaWduYWwgPSBvcHRpb25zLnNpZ25hbFxuICAgICAgZW5kID0gb3B0aW9ucy5lbmRcbiAgICB9XG4gICAgcGwoXG4gICAgICBzdHJlYW1zLFxuICAgICAgKGVyciwgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJlamVjdChlcnIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZSh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsLFxuICAgICAgICBlbmRcbiAgICAgIH1cbiAgICApXG4gIH0pXG59XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZmluaXNoZWQsXG4gIHBpcGVsaW5lXG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnXG5cbi8qIHJlcGxhY2VtZW50IHN0YXJ0ICovXG5cbmNvbnN0IHsgQnVmZmVyIH0gPSByZXF1aXJlKCdidWZmZXInKVxuXG4vKiByZXBsYWNlbWVudCBlbmQgKi9cblxuY29uc3QgeyBPYmplY3REZWZpbmVQcm9wZXJ0eSwgT2JqZWN0S2V5cywgUmVmbGVjdEFwcGx5IH0gPSByZXF1aXJlKCcuL291cnMvcHJpbW9yZGlhbHMnKVxuY29uc3Qge1xuICBwcm9taXNpZnk6IHsgY3VzdG9tOiBjdXN0b21Qcm9taXNpZnkgfVxufSA9IHJlcXVpcmUoJy4vb3Vycy91dGlsJylcbmNvbnN0IHsgc3RyZWFtUmV0dXJuaW5nT3BlcmF0b3JzLCBwcm9taXNlUmV0dXJuaW5nT3BlcmF0b3JzIH0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvb3BlcmF0b3JzJylcbmNvbnN0IHtcbiAgY29kZXM6IHsgRVJSX0lMTEVHQUxfQ09OU1RSVUNUT1IgfVxufSA9IHJlcXVpcmUoJy4vb3Vycy9lcnJvcnMnKVxuY29uc3QgY29tcG9zZSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9jb21wb3NlJylcbmNvbnN0IHsgc2V0RGVmYXVsdEhpZ2hXYXRlck1hcmssIGdldERlZmF1bHRIaWdoV2F0ZXJNYXJrIH0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RhdGUnKVxuY29uc3QgeyBwaXBlbGluZSB9ID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3BpcGVsaW5lJylcbmNvbnN0IHsgZGVzdHJveWVyIH0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveScpXG5jb25zdCBlb3MgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvZW5kLW9mLXN0cmVhbScpXG5jb25zdCBpbnRlcm5hbEJ1ZmZlciA9IHt9XG5jb25zdCBwcm9taXNlcyA9IHJlcXVpcmUoJy4vc3RyZWFtL3Byb21pc2VzJylcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3V0aWxzJylcbmNvbnN0IFN0cmVhbSA9IChtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9sZWdhY3knKS5TdHJlYW0pXG5TdHJlYW0uaXNEZXN0cm95ZWQgPSB1dGlscy5pc0Rlc3Ryb3llZFxuU3RyZWFtLmlzRGlzdHVyYmVkID0gdXRpbHMuaXNEaXN0dXJiZWRcblN0cmVhbS5pc0Vycm9yZWQgPSB1dGlscy5pc0Vycm9yZWRcblN0cmVhbS5pc1JlYWRhYmxlID0gdXRpbHMuaXNSZWFkYWJsZVxuU3RyZWFtLmlzV3JpdGFibGUgPSB1dGlscy5pc1dyaXRhYmxlXG5TdHJlYW0uUmVhZGFibGUgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvcmVhZGFibGUnKVxuZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0S2V5cyhzdHJlYW1SZXR1cm5pbmdPcGVyYXRvcnMpKSB7XG4gIGNvbnN0IG9wID0gc3RyZWFtUmV0dXJuaW5nT3BlcmF0b3JzW2tleV1cbiAgZnVuY3Rpb24gZm4oLi4uYXJncykge1xuICAgIGlmIChuZXcudGFyZ2V0KSB7XG4gICAgICB0aHJvdyBFUlJfSUxMRUdBTF9DT05TVFJVQ1RPUigpXG4gICAgfVxuICAgIHJldHVybiBTdHJlYW0uUmVhZGFibGUuZnJvbShSZWZsZWN0QXBwbHkob3AsIHRoaXMsIGFyZ3MpKVxuICB9XG4gIE9iamVjdERlZmluZVByb3BlcnR5KGZuLCAnbmFtZScsIHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgdmFsdWU6IG9wLm5hbWVcbiAgfSlcbiAgT2JqZWN0RGVmaW5lUHJvcGVydHkoZm4sICdsZW5ndGgnLCB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIHZhbHVlOiBvcC5sZW5ndGhcbiAgfSlcbiAgT2JqZWN0RGVmaW5lUHJvcGVydHkoU3RyZWFtLlJlYWRhYmxlLnByb3RvdHlwZSwga2V5LCB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIHZhbHVlOiBmbixcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSlcbn1cbmZvciAoY29uc3Qga2V5IG9mIE9iamVjdEtleXMocHJvbWlzZVJldHVybmluZ09wZXJhdG9ycykpIHtcbiAgY29uc3Qgb3AgPSBwcm9taXNlUmV0dXJuaW5nT3BlcmF0b3JzW2tleV1cbiAgZnVuY3Rpb24gZm4oLi4uYXJncykge1xuICAgIGlmIChuZXcudGFyZ2V0KSB7XG4gICAgICB0aHJvdyBFUlJfSUxMRUdBTF9DT05TVFJVQ1RPUigpXG4gICAgfVxuICAgIHJldHVybiBSZWZsZWN0QXBwbHkob3AsIHRoaXMsIGFyZ3MpXG4gIH1cbiAgT2JqZWN0RGVmaW5lUHJvcGVydHkoZm4sICduYW1lJywge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICB2YWx1ZTogb3AubmFtZVxuICB9KVxuICBPYmplY3REZWZpbmVQcm9wZXJ0eShmbiwgJ2xlbmd0aCcsIHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgdmFsdWU6IG9wLmxlbmd0aFxuICB9KVxuICBPYmplY3REZWZpbmVQcm9wZXJ0eShTdHJlYW0uUmVhZGFibGUucHJvdG90eXBlLCBrZXksIHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgdmFsdWU6IGZuLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KVxufVxuU3RyZWFtLldyaXRhYmxlID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3dyaXRhYmxlJylcblN0cmVhbS5EdXBsZXggPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvZHVwbGV4JylcblN0cmVhbS5UcmFuc2Zvcm0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvdHJhbnNmb3JtJylcblN0cmVhbS5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9wYXNzdGhyb3VnaCcpXG5TdHJlYW0ucGlwZWxpbmUgPSBwaXBlbGluZVxuY29uc3QgeyBhZGRBYm9ydFNpZ25hbCB9ID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2FkZC1hYm9ydC1zaWduYWwnKVxuU3RyZWFtLmFkZEFib3J0U2lnbmFsID0gYWRkQWJvcnRTaWduYWxcblN0cmVhbS5maW5pc2hlZCA9IGVvc1xuU3RyZWFtLmRlc3Ryb3kgPSBkZXN0cm95ZXJcblN0cmVhbS5jb21wb3NlID0gY29tcG9zZVxuU3RyZWFtLnNldERlZmF1bHRIaWdoV2F0ZXJNYXJrID0gc2V0RGVmYXVsdEhpZ2hXYXRlck1hcmtcblN0cmVhbS5nZXREZWZhdWx0SGlnaFdhdGVyTWFyayA9IGdldERlZmF1bHRIaWdoV2F0ZXJNYXJrXG5PYmplY3REZWZpbmVQcm9wZXJ0eShTdHJlYW0sICdwcm9taXNlcycsIHtcbiAgX19wcm90b19fOiBudWxsLFxuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldCgpIHtcbiAgICByZXR1cm4gcHJvbWlzZXNcbiAgfVxufSlcbk9iamVjdERlZmluZVByb3BlcnR5KHBpcGVsaW5lLCBjdXN0b21Qcm9taXNpZnksIHtcbiAgX19wcm90b19fOiBudWxsLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQoKSB7XG4gICAgcmV0dXJuIHByb21pc2VzLnBpcGVsaW5lXG4gIH1cbn0pXG5PYmplY3REZWZpbmVQcm9wZXJ0eShlb3MsIGN1c3RvbVByb21pc2lmeSwge1xuICBfX3Byb3RvX186IG51bGwsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldCgpIHtcbiAgICByZXR1cm4gcHJvbWlzZXMuZmluaXNoZWRcbiAgfVxufSlcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC40LnhcblN0cmVhbS5TdHJlYW0gPSBTdHJlYW1cblN0cmVhbS5faXNVaW50OEFycmF5ID0gZnVuY3Rpb24gaXNVaW50OEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXlcbn1cblN0cmVhbS5fdWludDhBcnJheVRvQnVmZmVyID0gZnVuY3Rpb24gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuaykge1xuICByZXR1cm4gQnVmZmVyLmZyb20oY2h1bmsuYnVmZmVyLCBjaHVuay5ieXRlT2Zmc2V0LCBjaHVuay5ieXRlTGVuZ3RoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IEN1c3RvbVN0cmVhbSA9IHJlcXVpcmUoJy4uL3N0cmVhbScpXG5jb25zdCBwcm9taXNlcyA9IHJlcXVpcmUoJy4uL3N0cmVhbS9wcm9taXNlcycpXG5jb25zdCBvcmlnaW5hbERlc3Ryb3kgPSBDdXN0b21TdHJlYW0uUmVhZGFibGUuZGVzdHJveVxubW9kdWxlLmV4cG9ydHMgPSBDdXN0b21TdHJlYW0uUmVhZGFibGVcblxuLy8gRXhwbGljaXQgZXhwb3J0IG5hbWluZyBpcyBuZWVkZWQgZm9yIEVTTVxubW9kdWxlLmV4cG9ydHMuX3VpbnQ4QXJyYXlUb0J1ZmZlciA9IEN1c3RvbVN0cmVhbS5fdWludDhBcnJheVRvQnVmZmVyXG5tb2R1bGUuZXhwb3J0cy5faXNVaW50OEFycmF5ID0gQ3VzdG9tU3RyZWFtLl9pc1VpbnQ4QXJyYXlcbm1vZHVsZS5leHBvcnRzLmlzRGlzdHVyYmVkID0gQ3VzdG9tU3RyZWFtLmlzRGlzdHVyYmVkXG5tb2R1bGUuZXhwb3J0cy5pc0Vycm9yZWQgPSBDdXN0b21TdHJlYW0uaXNFcnJvcmVkXG5tb2R1bGUuZXhwb3J0cy5pc1JlYWRhYmxlID0gQ3VzdG9tU3RyZWFtLmlzUmVhZGFibGVcbm1vZHVsZS5leHBvcnRzLlJlYWRhYmxlID0gQ3VzdG9tU3RyZWFtLlJlYWRhYmxlXG5tb2R1bGUuZXhwb3J0cy5Xcml0YWJsZSA9IEN1c3RvbVN0cmVhbS5Xcml0YWJsZVxubW9kdWxlLmV4cG9ydHMuRHVwbGV4ID0gQ3VzdG9tU3RyZWFtLkR1cGxleFxubW9kdWxlLmV4cG9ydHMuVHJhbnNmb3JtID0gQ3VzdG9tU3RyZWFtLlRyYW5zZm9ybVxubW9kdWxlLmV4cG9ydHMuUGFzc1Rocm91Z2ggPSBDdXN0b21TdHJlYW0uUGFzc1Rocm91Z2hcbm1vZHVsZS5leHBvcnRzLmFkZEFib3J0U2lnbmFsID0gQ3VzdG9tU3RyZWFtLmFkZEFib3J0U2lnbmFsXG5tb2R1bGUuZXhwb3J0cy5maW5pc2hlZCA9IEN1c3RvbVN0cmVhbS5maW5pc2hlZFxubW9kdWxlLmV4cG9ydHMuZGVzdHJveSA9IEN1c3RvbVN0cmVhbS5kZXN0cm95XG5tb2R1bGUuZXhwb3J0cy5kZXN0cm95ID0gb3JpZ2luYWxEZXN0cm95XG5tb2R1bGUuZXhwb3J0cy5waXBlbGluZSA9IEN1c3RvbVN0cmVhbS5waXBlbGluZVxubW9kdWxlLmV4cG9ydHMuY29tcG9zZSA9IEN1c3RvbVN0cmVhbS5jb21wb3NlXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoQ3VzdG9tU3RyZWFtLCAncHJvbWlzZXMnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0KCkge1xuICAgIHJldHVybiBwcm9taXNlc1xuICB9XG59KVxubW9kdWxlLmV4cG9ydHMuU3RyZWFtID0gQ3VzdG9tU3RyZWFtLlN0cmVhbVxuXG4vLyBBbGxvdyBkZWZhdWx0IGltcG9ydGluZ1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IG1vZHVsZS5leHBvcnRzXG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuV3JpdGFibGUgPSBleHBvcnRzLlJlYWRhYmxlID0gdm9pZCAwO1xudmFyIG5vZGVfc3RyZWFtXzEgPSByZXF1aXJlKFwibm9kZTpzdHJlYW1cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWFkYWJsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbm9kZV9zdHJlYW1fMS5SZWFkYWJsZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIldyaXRhYmxlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBub2RlX3N0cmVhbV8xLldyaXRhYmxlOyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RyZWFtLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5FdmVudEVtaXR0ZXIgPSB2b2lkIDA7XG52YXIgbm9kZV9ldmVudHNfMSA9IHJlcXVpcmUoXCJub2RlOmV2ZW50c1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkV2ZW50RW1pdHRlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbm9kZV9ldmVudHNfMS5FdmVudEVtaXR0ZXI7IH0gfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ldmVudHMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkZpbGVIYW5kbGUgPSB2b2lkIDA7XG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuY29uc3QgZXZlbnRzXzEgPSByZXF1aXJlKFwiLi4vdmVuZG9yL25vZGUvZXZlbnRzXCIpO1xuY2xhc3MgRmlsZUhhbmRsZSBleHRlbmRzIGV2ZW50c18xLkV2ZW50RW1pdHRlciB7XG4gICAgY29uc3RydWN0b3IoZnMsIGZkKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucmVmcyA9IDE7XG4gICAgICAgIHRoaXMuY2xvc2VQcm9taXNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IDA7XG4gICAgICAgIHRoaXMucmVhZGFibGVXZWJTdHJlYW1Mb2NrZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mcyA9IGZzO1xuICAgICAgICB0aGlzLmZkID0gZmQ7XG4gICAgfVxuICAgIGdldEFzeW5jSWQoKSB7XG4gICAgICAgIC8vIFJldHVybiBhIHVuaXF1ZSBhc3luYyBJRCBmb3IgdGhpcyBmaWxlIGhhbmRsZVxuICAgICAgICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgYmUgcHJvdmlkZWQgYnkgdGhlIHVuZGVybHlpbmcgc3lzdGVtXG4gICAgICAgIHJldHVybiB0aGlzLmZkO1xuICAgIH1cbiAgICBhcHBlbmRGaWxlKGRhdGEsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnYXBwZW5kRmlsZScpKHRoaXMuZmQsIGRhdGEsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBjaG1vZChtb2RlKSB7XG4gICAgICAgIHJldHVybiAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2ZjaG1vZCcpKHRoaXMuZmQsIG1vZGUpO1xuICAgIH1cbiAgICBjaG93bih1aWQsIGdpZCkge1xuICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdmY2hvd24nKSh0aGlzLmZkLCB1aWQsIGdpZCk7XG4gICAgfVxuICAgIGNsb3NlKCkge1xuICAgICAgICBpZiAodGhpcy5mZCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jbG9zZVByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb3NlUHJvbWlzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZnMtLTtcbiAgICAgICAgaWYgKHRoaXMucmVmcyA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEZkID0gdGhpcy5mZDtcbiAgICAgICAgICAgIHRoaXMuZmQgPSAtMTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VQcm9taXNlID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdjbG9zZScpKGN1cnJlbnRGZCkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZVByb21pc2UgPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlUmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZVJlamVjdCA9IHJlamVjdDtcbiAgICAgICAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VQcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlUmVqZWN0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VSZXNvbHZlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbWl0KCdjbG9zZScpO1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9zZVByb21pc2U7XG4gICAgfVxuICAgIGRhdGFzeW5jKCkge1xuICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdmZGF0YXN5bmMnKSh0aGlzLmZkKTtcbiAgICB9XG4gICAgY3JlYXRlUmVhZFN0cmVhbShvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZzLmNyZWF0ZVJlYWRTdHJlYW0oJycsIHsgLi4ub3B0aW9ucywgZmQ6IHRoaXMgfSk7XG4gICAgfVxuICAgIGNyZWF0ZVdyaXRlU3RyZWFtKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnMuY3JlYXRlV3JpdGVTdHJlYW0oJycsIHsgLi4ub3B0aW9ucywgZmQ6IHRoaXMgfSk7XG4gICAgfVxuICAgIHJlYWRhYmxlV2ViU3RyZWFtKG9wdGlvbnMgPSB7fSkge1xuICAgICAgICBjb25zdCB7IHR5cGUgPSAnYnl0ZXMnLCBhdXRvQ2xvc2UgPSBmYWxzZSB9ID0gb3B0aW9ucztcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gMDtcbiAgICAgICAgaWYgKHRoaXMuZmQgPT09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBGaWxlSGFuZGxlIGlzIGNsb3NlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNsb3NlUHJvbWlzZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgRmlsZUhhbmRsZSBpcyBjbG9zaW5nJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVhZGFibGVXZWJTdHJlYW1Mb2NrZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQW4gZXJyb3Igd2lsbCBiZSB0aHJvd24gaWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIG9yIGlzIGNhbGxlZCBhZnRlciB0aGUgRmlsZUhhbmRsZSBpcyBjbG9zZWQgb3IgY2xvc2luZy4nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlYWRhYmxlV2ViU3RyZWFtTG9ja2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZWYoKTtcbiAgICAgICAgY29uc3QgdW5sb2NrQW5kQ2xlYW51cCA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVhZGFibGVXZWJTdHJlYW1Mb2NrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudW5yZWYoKTtcbiAgICAgICAgICAgIGlmIChhdXRvQ2xvc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgY2xvc2UgZXJyb3JzIGluIGNsZWFudXBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgICAgICB0eXBlOiB0eXBlID09PSAnYnl0ZXMnID8gJ2J5dGVzJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZTogMTYzODQsXG4gICAgICAgICAgICBwdWxsOiBhc3luYyAoY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZpZXcgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0Py52aWV3O1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIGZvciB3aGVuIEJZT0IgaXMgbm90IGF2YWlsYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMTYzODQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZWFkKGJ1ZmZlciwgMCwgYnVmZmVyLmxlbmd0aCwgcG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5ieXRlc1JlYWQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sb2NrQW5kQ2xlYW51cCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IHJlc3VsdC5ieXRlc1JlYWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoYnVmZmVyLnNsaWNlKDAsIHJlc3VsdC5ieXRlc1JlYWQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlYWQodmlldywgdmlldy5ieXRlT2Zmc2V0LCB2aWV3LmJ5dGVMZW5ndGgsIHBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5ieXRlc1JlYWQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVubG9ja0FuZENsZWFudXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiArPSByZXN1bHQuYnl0ZXNSZWFkO1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmQocmVzdWx0LmJ5dGVzUmVhZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgdW5sb2NrQW5kQ2xlYW51cCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYW5jZWw6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICB1bmxvY2tBbmRDbGVhbnVwKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcmVhZChidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbikge1xuICAgICAgICBjb25zdCByZWFkUG9zaXRpb24gPSBwb3NpdGlvbiAhPT0gbnVsbCAmJiBwb3NpdGlvbiAhPT0gdW5kZWZpbmVkID8gcG9zaXRpb24gOiB0aGlzLnBvc2l0aW9uO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3JlYWQnLCBieXRlc1JlYWQgPT4gKHsgYnl0ZXNSZWFkLCBidWZmZXIgfSkpKHRoaXMuZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHJlYWRQb3NpdGlvbik7XG4gICAgICAgIC8vIFVwZGF0ZSBpbnRlcm5hbCBwb3NpdGlvbiBvbmx5IGlmIHBvc2l0aW9uIHdhcyBudWxsL3VuZGVmaW5lZFxuICAgICAgICBpZiAocG9zaXRpb24gPT09IG51bGwgfHwgcG9zaXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiArPSByZXN1bHQuYnl0ZXNSZWFkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJlYWR2KGJ1ZmZlcnMsIHBvc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3JlYWR2JywgYnl0ZXNSZWFkID0+ICh7IGJ5dGVzUmVhZCwgYnVmZmVycyB9KSkodGhpcy5mZCwgYnVmZmVycywgcG9zaXRpb24pO1xuICAgIH1cbiAgICByZWFkRmlsZShvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3JlYWRGaWxlJykodGhpcy5mZCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHN0YXQob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdmc3RhdCcpKHRoaXMuZmQsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBzeW5jKCkge1xuICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdmc3luYycpKHRoaXMuZmQpO1xuICAgIH1cbiAgICB0cnVuY2F0ZShsZW4pIHtcbiAgICAgICAgcmV0dXJuICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnZnRydW5jYXRlJykodGhpcy5mZCwgbGVuKTtcbiAgICB9XG4gICAgdXRpbWVzKGF0aW1lLCBtdGltZSkge1xuICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdmdXRpbWVzJykodGhpcy5mZCwgYXRpbWUsIG10aW1lKTtcbiAgICB9XG4gICAgYXN5bmMgd3JpdGUoYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgY29uc3QgdXNlSW50ZXJuYWxQb3NpdGlvbiA9IHR5cGVvZiBwb3NpdGlvbiAhPT0gJ251bWJlcic7XG4gICAgICAgIGNvbnN0IHdyaXRlUG9zaXRpb24gPSB1c2VJbnRlcm5hbFBvc2l0aW9uID8gdGhpcy5wb3NpdGlvbiA6IHBvc2l0aW9uO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3dyaXRlJywgYnl0ZXNXcml0dGVuID0+ICh7IGJ5dGVzV3JpdHRlbiwgYnVmZmVyIH0pKSh0aGlzLmZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCB3cml0ZVBvc2l0aW9uKTtcbiAgICAgICAgLy8gVXBkYXRlIGludGVybmFsIHBvc2l0aW9uIG9ubHkgaWYgcG9zaXRpb24gd2FzIG51bGwvdW5kZWZpbmVkXG4gICAgICAgIGlmICh1c2VJbnRlcm5hbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uICs9IHJlc3VsdC5ieXRlc1dyaXR0ZW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgd3JpdGV2KGJ1ZmZlcnMsIHBvc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3dyaXRldicsIGJ5dGVzV3JpdHRlbiA9PiAoeyBieXRlc1dyaXR0ZW4sIGJ1ZmZlcnMgfSkpKHRoaXMuZmQsIGJ1ZmZlcnMsIHBvc2l0aW9uKTtcbiAgICB9XG4gICAgd3JpdGVGaWxlKGRhdGEsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnd3JpdGVGaWxlJykodGhpcy5mZCwgZGF0YSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIEltcGxlbWVudCBTeW1ib2wuYXN5bmNEaXNwb3NlIGlmIGF2YWlsYWJsZSAoRVMyMDIzKylcbiAgICBhc3luYyBbU3ltYm9sLmFzeW5jRGlzcG9zZV0oKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gICAgcmVmKCkge1xuICAgICAgICB0aGlzLnJlZnMrKztcbiAgICB9XG4gICAgdW5yZWYoKSB7XG4gICAgICAgIHRoaXMucmVmcy0tO1xuICAgICAgICBpZiAodGhpcy5yZWZzID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmZkID0gLTE7XG4gICAgICAgICAgICBpZiAodGhpcy5jbG9zZVJlc29sdmUpIHtcbiAgICAgICAgICAgICAgICAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2Nsb3NlJykodGhpcy5mZCkudGhlbih0aGlzLmNsb3NlUmVzb2x2ZSwgdGhpcy5jbG9zZVJlamVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkZpbGVIYW5kbGUgPSBGaWxlSGFuZGxlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmlsZUhhbmRsZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRnNQcm9taXNlcyA9IHZvaWQgMDtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5jb25zdCBjb25zdGFudHNfMSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHNcIik7XG4vLyBBc3luY0l0ZXJhdG9yIGltcGxlbWVudGF0aW9uIGZvciBwcm9taXNlcy53YXRjaFxuY2xhc3MgRlNXYXRjaEFzeW5jSXRlcmF0b3Ige1xuICAgIGNvbnN0cnVjdG9yKGZzLCBwYXRoLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5mcyA9IGZzO1xuICAgICAgICB0aGlzLnBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLmV2ZW50UXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5yZXNvbHZlUXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5maW5pc2hlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1heFF1ZXVlID0gb3B0aW9ucy5tYXhRdWV1ZSB8fCAyMDQ4O1xuICAgICAgICB0aGlzLm92ZXJmbG93ID0gb3B0aW9ucy5vdmVyZmxvdyB8fCAnaWdub3JlJztcbiAgICAgICAgdGhpcy5zdGFydFdhdGNoaW5nKCk7XG4gICAgICAgIC8vIEhhbmRsZSBBYm9ydFNpZ25hbFxuICAgICAgICBpZiAob3B0aW9ucy5zaWduYWwpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maW5pc2goKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcHRpb25zLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmlzaCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhcnRXYXRjaGluZygpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMud2F0Y2hlciA9IHRoaXMuZnMud2F0Y2godGhpcy5wYXRoLCB0aGlzLm9wdGlvbnMsIChldmVudFR5cGUsIGZpbGVuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnF1ZXVlRXZlbnQoeyBldmVudFR5cGUsIGZpbGVuYW1lIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBjYW4ndCBzdGFydCB3YXRjaGluZywgZmluaXNoIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICB0aGlzLmZpbmlzaCgpO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZW5xdWV1ZUV2ZW50KGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmZpbmlzaGVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAvLyBIYW5kbGUgcXVldWUgb3ZlcmZsb3dcbiAgICAgICAgaWYgKHRoaXMuZXZlbnRRdWV1ZS5sZW5ndGggPj0gdGhpcy5tYXhRdWV1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmZsb3cgPT09ICd0aHJvdycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgV2F0Y2ggcXVldWUgb3ZlcmZsb3c6IG1vcmUgdGhhbiAke3RoaXMubWF4UXVldWV9IGV2ZW50cyBxdWV1ZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmlzaChlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gJ2lnbm9yZScgLSBkcm9wIHRoZSBvbGRlc3QgZXZlbnRcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50UXVldWUuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFdhdGNoIHF1ZXVlIG92ZXJmbG93OiBkcm9wcGluZyBldmVudCBkdWUgdG8gZXhjZWVkaW5nIG1heFF1ZXVlIG9mICR7dGhpcy5tYXhRdWV1ZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV2ZW50UXVldWUucHVzaChldmVudCk7XG4gICAgICAgIC8vIElmIHRoZXJlJ3MgYSB3YWl0aW5nIHByb21pc2UsIHJlc29sdmUgaXRcbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHsgcmVzb2x2ZSB9ID0gdGhpcy5yZXNvbHZlUXVldWUuc2hpZnQoKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRFdmVudCA9IHRoaXMuZXZlbnRRdWV1ZS5zaGlmdCgpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7IHZhbHVlOiBuZXh0RXZlbnQsIGRvbmU6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbmlzaChlcnJvcikge1xuICAgICAgICBpZiAodGhpcy5maW5pc2hlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5maW5pc2hlZCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLndhdGNoZXIpIHtcbiAgICAgICAgICAgIHRoaXMud2F0Y2hlci5jbG9zZSgpO1xuICAgICAgICAgICAgdGhpcy53YXRjaGVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXNvbHZlIG9yIHJlamVjdCBhbGwgcGVuZGluZyBwcm9taXNlc1xuICAgICAgICB3aGlsZSAodGhpcy5yZXNvbHZlUXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgeyByZXNvbHZlLCByZWplY3QgfSA9IHRoaXMucmVzb2x2ZVF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgbmV4dCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZmluaXNoZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB3ZSBoYXZlIHF1ZXVlZCBldmVudHMsIHJldHVybiBvbmVcbiAgICAgICAgaWYgKHRoaXMuZXZlbnRRdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuZXZlbnRRdWV1ZS5zaGlmdCgpO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IGV2ZW50LCBkb25lOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICAgIC8vIE90aGVyd2lzZSwgd2FpdCBmb3IgdGhlIG5leHQgZXZlbnRcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZVF1ZXVlLnB1c2goeyByZXNvbHZlLCByZWplY3QgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyByZXR1cm4oKSB7XG4gICAgICAgIHRoaXMuZmluaXNoKCk7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgICB9XG4gICAgYXN5bmMgdGhyb3coZXJyb3IpIHtcbiAgICAgICAgdGhpcy5maW5pc2goZXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuY2xhc3MgRnNQcm9taXNlcyB7XG4gICAgY29uc3RydWN0b3IoZnMsIEZpbGVIYW5kbGUpIHtcbiAgICAgICAgdGhpcy5mcyA9IGZzO1xuICAgICAgICB0aGlzLkZpbGVIYW5kbGUgPSBGaWxlSGFuZGxlO1xuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IGNvbnN0YW50c18xLmNvbnN0YW50cztcbiAgICAgICAgdGhpcy5jcCA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnY3AnKTtcbiAgICAgICAgdGhpcy5vcGVuZGlyID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdvcGVuZGlyJyk7XG4gICAgICAgIHRoaXMuc3RhdGZzID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdzdGF0ZnMnKTtcbiAgICAgICAgdGhpcy5sdXRpbWVzID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdsdXRpbWVzJyk7XG4gICAgICAgIHRoaXMuZ2xvYiA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnZ2xvYicpO1xuICAgICAgICB0aGlzLmFjY2VzcyA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnYWNjZXNzJyk7XG4gICAgICAgIHRoaXMuY2htb2QgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2NobW9kJyk7XG4gICAgICAgIHRoaXMuY2hvd24gPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2Nob3duJyk7XG4gICAgICAgIHRoaXMuY29weUZpbGUgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2NvcHlGaWxlJyk7XG4gICAgICAgIHRoaXMubGNobW9kID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdsY2htb2QnKTtcbiAgICAgICAgdGhpcy5sY2hvd24gPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2xjaG93bicpO1xuICAgICAgICB0aGlzLmxpbmsgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2xpbmsnKTtcbiAgICAgICAgdGhpcy5sc3RhdCA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnbHN0YXQnKTtcbiAgICAgICAgdGhpcy5ta2RpciA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnbWtkaXInKTtcbiAgICAgICAgdGhpcy5ta2R0ZW1wID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdta2R0ZW1wJyk7XG4gICAgICAgIHRoaXMucmVhZGRpciA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAncmVhZGRpcicpO1xuICAgICAgICB0aGlzLnJlYWRsaW5rID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdyZWFkbGluaycpO1xuICAgICAgICB0aGlzLnJlYWxwYXRoID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdyZWFscGF0aCcpO1xuICAgICAgICB0aGlzLnJlbmFtZSA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAncmVuYW1lJyk7XG4gICAgICAgIHRoaXMucm1kaXIgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3JtZGlyJyk7XG4gICAgICAgIHRoaXMucm0gPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3JtJyk7XG4gICAgICAgIHRoaXMuc3RhdCA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnc3RhdCcpO1xuICAgICAgICB0aGlzLnN5bWxpbmsgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3N5bWxpbmsnKTtcbiAgICAgICAgdGhpcy50cnVuY2F0ZSA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAndHJ1bmNhdGUnKTtcbiAgICAgICAgdGhpcy51bmxpbmsgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3VubGluaycpO1xuICAgICAgICB0aGlzLnV0aW1lcyA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAndXRpbWVzJyk7XG4gICAgICAgIHRoaXMucmVhZEZpbGUgPSAoaWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3JlYWRGaWxlJykoaWQgaW5zdGFuY2VvZiB0aGlzLkZpbGVIYW5kbGUgPyBpZC5mZCA6IGlkLCBvcHRpb25zKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hcHBlbmRGaWxlID0gKHBhdGgsIGRhdGEsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2FwcGVuZEZpbGUnKShwYXRoIGluc3RhbmNlb2YgdGhpcy5GaWxlSGFuZGxlID8gcGF0aC5mZCA6IHBhdGgsIGRhdGEsIG9wdGlvbnMpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9wZW4gPSAocGF0aCwgZmxhZ3MgPSAncicsIG1vZGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ29wZW4nLCBmZCA9PiBuZXcgdGhpcy5GaWxlSGFuZGxlKHRoaXMuZnMsIGZkKSkocGF0aCwgZmxhZ3MsIG1vZGUpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLndyaXRlRmlsZSA9IChpZCwgZGF0YSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVByb21pc2UgPSAoMCwgdXRpbF8xLmlzUmVhZGFibGVTdHJlYW0pKGRhdGEpID8gKDAsIHV0aWxfMS5zdHJlYW1Ub0J1ZmZlcikoZGF0YSkgOiBQcm9taXNlLnJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb21pc2UudGhlbihkYXRhID0+ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnd3JpdGVGaWxlJykoaWQgaW5zdGFuY2VvZiB0aGlzLkZpbGVIYW5kbGUgPyBpZC5mZCA6IGlkLCBkYXRhLCBvcHRpb25zKSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMud2F0Y2ggPSAoZmlsZW5hbWUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdhdGNoT3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJyA/IHsgZW5jb2Rpbmc6IG9wdGlvbnMgfSA6IG9wdGlvbnMgfHwge307XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZTV2F0Y2hBc3luY0l0ZXJhdG9yKHRoaXMuZnMsIGZpbGVuYW1lLCB3YXRjaE9wdGlvbnMpO1xuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydHMuRnNQcm9taXNlcyA9IEZzUHJvbWlzZXM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gc1Byb21pc2VzLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wcmludFRyZWUgPSB2b2lkIDA7XG5jb25zdCBwcmludFRyZWUgPSAodGFiID0gJycsIGNoaWxkcmVuKSA9PiB7XG4gICAgbGV0IHN0ciA9ICcnO1xuICAgIGxldCBsYXN0ID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICBmb3IgKDsgbGFzdCA+PSAwOyBsYXN0LS0pXG4gICAgICAgIGlmIChjaGlsZHJlbltsYXN0XSlcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGxhc3Q7IGkrKykge1xuICAgICAgICBjb25zdCBmbiA9IGNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAoIWZuKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNvbnN0IGlzTGFzdCA9IGkgPT09IGxhc3Q7XG4gICAgICAgIGNvbnN0IGNoaWxkID0gZm4odGFiICsgKGlzTGFzdCA/ICcgJyA6ICfilIInKSArICcgICcpO1xuICAgICAgICBjb25zdCBicmFuY2ggPSBjaGlsZCA/IChpc0xhc3QgPyAn4pSU4pSAJyA6ICfilJzilIAnKSA6ICfilIInO1xuICAgICAgICBzdHIgKz0gJ1xcbicgKyB0YWIgKyBicmFuY2ggKyAoY2hpbGQgPyAnICcgKyBjaGlsZCA6ICcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbn07XG5leHBvcnRzLnByaW50VHJlZSA9IHByaW50VHJlZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wcmludEJpbmFyeSA9IHZvaWQgMDtcbmNvbnN0IHByaW50QmluYXJ5ID0gKHRhYiA9ICcnLCBjaGlsZHJlbikgPT4ge1xuICAgIGNvbnN0IGxlZnQgPSBjaGlsZHJlblswXSwgcmlnaHQgPSBjaGlsZHJlblsxXTtcbiAgICBsZXQgc3RyID0gJyc7XG4gICAgaWYgKGxlZnQpXG4gICAgICAgIHN0ciArPSAnXFxuJyArIHRhYiArICfihpAgJyArIGxlZnQodGFiICsgJyAgJyk7XG4gICAgaWYgKHJpZ2h0KVxuICAgICAgICBzdHIgKz0gJ1xcbicgKyB0YWIgKyAn4oaSICcgKyByaWdodCh0YWIgKyAnICAnKTtcbiAgICByZXR1cm4gc3RyO1xufTtcbmV4cG9ydHMucHJpbnRCaW5hcnkgPSBwcmludEJpbmFyeTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wcmludEpzb24gPSB2b2lkIDA7XG5jb25zdCBwcmludEpzb24gPSAodGFiID0gJycsIGpzb24sIHNwYWNlID0gMikgPT4gKEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIHNwYWNlKSB8fCAnbmlsJykuc3BsaXQoJ1xcbicpLmpvaW4oJ1xcbicgKyB0YWIpO1xuZXhwb3J0cy5wcmludEpzb24gPSBwcmludEpzb247XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG50c2xpYl8xLl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9wcmludFRyZWVcIiksIGV4cG9ydHMpO1xudHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vcHJpbnRCaW5hcnlcIiksIGV4cG9ydHMpO1xudHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vcHJpbnRKc29uXCIpLCBleHBvcnRzKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5uZXdOb3RBbGxvd2VkRXJyb3IgPSBleHBvcnRzLm5ld1R5cGVNaXNtYXRjaEVycm9yID0gZXhwb3J0cy5uZXdOb3RGb3VuZEVycm9yID0gZXhwb3J0cy5hc3NlcnRDYW5Xcml0ZSA9IGV4cG9ydHMuYXNzZXJ0TmFtZSA9IGV4cG9ydHMuYmFzZW5hbWUgPSBleHBvcnRzLmN0eCA9IHZvaWQgMDtcbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgTm9kZUZzYUNvbnRleHR9LlxuICovXG5jb25zdCBjdHggPSAocGFydGlhbCA9IHt9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2VwYXJhdG9yOiAnLycsXG4gICAgICAgIHN5bmNIYW5kbGVBbGxvd2VkOiBmYWxzZSxcbiAgICAgICAgbW9kZTogJ3JlYWQnLFxuICAgICAgICAuLi5wYXJ0aWFsLFxuICAgIH07XG59O1xuZXhwb3J0cy5jdHggPSBjdHg7XG5jb25zdCBiYXNlbmFtZSA9IChwYXRoLCBzZXBhcmF0b3IpID0+IHtcbiAgICBpZiAocGF0aFtwYXRoLmxlbmd0aCAtIDFdID09PSBzZXBhcmF0b3IpXG4gICAgICAgIHBhdGggPSBwYXRoLnNsaWNlKDAsIC0xKTtcbiAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IHBhdGgubGFzdEluZGV4T2Yoc2VwYXJhdG9yKTtcbiAgICByZXR1cm4gbGFzdFNsYXNoSW5kZXggPT09IC0xID8gcGF0aCA6IHBhdGguc2xpY2UobGFzdFNsYXNoSW5kZXggKyAxKTtcbn07XG5leHBvcnRzLmJhc2VuYW1lID0gYmFzZW5hbWU7XG5jb25zdCBuYW1lUmVnZXggPSAvXihcXC57MSwyfSkkfF4oLiooW1xcL1xcXFxdKS4qKSQvO1xuY29uc3QgYXNzZXJ0TmFtZSA9IChuYW1lLCBtZXRob2QsIGtsYXNzKSA9PiB7XG4gICAgY29uc3QgaXNJbnZhbGlkID0gIW5hbWUgfHwgbmFtZVJlZ2V4LnRlc3QobmFtZSk7XG4gICAgaWYgKGlzSW52YWxpZClcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRmFpbGVkIHRvIGV4ZWN1dGUgJyR7bWV0aG9kfScgb24gJyR7a2xhc3N9JzogTmFtZSBpcyBub3QgYWxsb3dlZC5gKTtcbn07XG5leHBvcnRzLmFzc2VydE5hbWUgPSBhc3NlcnROYW1lO1xuY29uc3QgYXNzZXJ0Q2FuV3JpdGUgPSAobW9kZSkgPT4ge1xuICAgIGlmIChtb2RlICE9PSAncmVhZHdyaXRlJylcbiAgICAgICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbignVGhlIHJlcXVlc3QgaXMgbm90IGFsbG93ZWQgYnkgdGhlIHVzZXIgYWdlbnQgb3IgdGhlIHBsYXRmb3JtIGluIHRoZSBjdXJyZW50IGNvbnRleHQuJywgJ05vdEFsbG93ZWRFcnJvcicpO1xufTtcbmV4cG9ydHMuYXNzZXJ0Q2FuV3JpdGUgPSBhc3NlcnRDYW5Xcml0ZTtcbmNvbnN0IG5ld05vdEZvdW5kRXJyb3IgPSAoKSA9PiBuZXcgRE9NRXhjZXB0aW9uKCdBIHJlcXVlc3RlZCBmaWxlIG9yIGRpcmVjdG9yeSBjb3VsZCBub3QgYmUgZm91bmQgYXQgdGhlIHRpbWUgYW4gb3BlcmF0aW9uIHdhcyBwcm9jZXNzZWQuJywgJ05vdEZvdW5kRXJyb3InKTtcbmV4cG9ydHMubmV3Tm90Rm91bmRFcnJvciA9IG5ld05vdEZvdW5kRXJyb3I7XG5jb25zdCBuZXdUeXBlTWlzbWF0Y2hFcnJvciA9ICgpID0+IG5ldyBET01FeGNlcHRpb24oJ1RoZSBwYXRoIHN1cHBsaWVkIGV4aXN0cywgYnV0IHdhcyBub3QgYW4gZW50cnkgb2YgcmVxdWVzdGVkIHR5cGUuJywgJ1R5cGVNaXNtYXRjaEVycm9yJyk7XG5leHBvcnRzLm5ld1R5cGVNaXNtYXRjaEVycm9yID0gbmV3VHlwZU1pc21hdGNoRXJyb3I7XG5jb25zdCBuZXdOb3RBbGxvd2VkRXJyb3IgPSAoKSA9PiBuZXcgRE9NRXhjZXB0aW9uKCdQZXJtaXNzaW9uIG5vdCBncmFudGVkLicsICdOb3RBbGxvd2VkRXJyb3InKTtcbmV4cG9ydHMubmV3Tm90QWxsb3dlZEVycm9yID0gbmV3Tm90QWxsb3dlZEVycm9yO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudG9UcmVlU3luYyA9IHZvaWQgMDtcbmNvbnN0IHRyZWVfZHVtcF8xID0gcmVxdWlyZShcInRyZWUtZHVtcFwiKTtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi9ub2RlLXRvLWZzYS91dGlsXCIpO1xuY29uc3QgdG9UcmVlU3luYyA9IChmcywgb3B0cyA9IHt9KSA9PiB7XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gb3B0cy5zZXBhcmF0b3IgfHwgJy8nO1xuICAgIGxldCBkaXIgPSBvcHRzLmRpciB8fCBzZXBhcmF0b3I7XG4gICAgaWYgKGRpcltkaXIubGVuZ3RoIC0gMV0gIT09IHNlcGFyYXRvcilcbiAgICAgICAgZGlyICs9IHNlcGFyYXRvcjtcbiAgICBjb25zdCB0YWIgPSBvcHRzLnRhYiB8fCAnJztcbiAgICBjb25zdCBkZXB0aCA9IG9wdHMuZGVwdGggPz8gMTA7XG4gICAgY29uc3Qgc29ydCA9IG9wdHMuc29ydCA/PyB0cnVlO1xuICAgIGxldCBzdWJ0cmVlID0gJyAoLi4uKSc7XG4gICAgaWYgKGRlcHRoID4gMCkge1xuICAgICAgICBjb25zdCBsaXN0ID0gZnMucmVhZGRpclN5bmMoZGlyLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG4gICAgICAgIGlmIChzb3J0KSB7XG4gICAgICAgICAgICBsaXN0LnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYS5pc0RpcmVjdG9yeSgpICYmIGIuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5uYW1lLnRvU3RyaW5nKCkubG9jYWxlQ29tcGFyZShiLm5hbWUudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGEuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGIuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLm5hbWUudG9TdHJpbmcoKS5sb2NhbGVDb21wYXJlKGIubmFtZS50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBzdWJ0cmVlID0gKDAsIHRyZWVfZHVtcF8xLnByaW50VHJlZSkodGFiLCBsaXN0Lm1hcChlbnRyeSA9PiB0YWIgPT4ge1xuICAgICAgICAgICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIGV4cG9ydHMudG9UcmVlU3luYykoZnMsIHsgZGlyOiBkaXIgKyBlbnRyeS5uYW1lLCBkZXB0aDogZGVwdGggLSAxLCB0YWIgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlbnRyeS5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnICsgZW50cnkubmFtZSArICcg4oaSICcgKyBmcy5yZWFkbGlua1N5bmMoZGlyICsgZW50cnkubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJycgKyBlbnRyeS5uYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgfVxuICAgIGNvbnN0IGJhc2UgPSAoMCwgdXRpbF8xLmJhc2VuYW1lKShkaXIsIHNlcGFyYXRvcikgKyBzZXBhcmF0b3I7XG4gICAgcmV0dXJuIGJhc2UgKyBzdWJ0cmVlO1xufTtcbmV4cG9ydHMudG9UcmVlU3luYyA9IHRvVHJlZVN5bmM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZ2V0V3JpdGVGaWxlT3B0aW9ucyA9IGV4cG9ydHMud3JpdGVGaWxlRGVmYXVsdHMgPSBleHBvcnRzLmdldFJlYWxwYXRoT3B0c0FuZENiID0gZXhwb3J0cy5nZXRSZWFscGF0aE9wdGlvbnMgPSBleHBvcnRzLmdldFN0YXRmc09wdHNBbmRDYiA9IGV4cG9ydHMuZ2V0U3RhdGZzT3B0aW9ucyA9IGV4cG9ydHMuZ2V0U3RhdE9wdHNBbmRDYiA9IGV4cG9ydHMuZ2V0U3RhdE9wdGlvbnMgPSBleHBvcnRzLmdldEFwcGVuZEZpbGVPcHRzQW5kQ2IgPSBleHBvcnRzLmdldEFwcGVuZEZpbGVPcHRzID0gZXhwb3J0cy5nZXRPcGVuZGlyT3B0c0FuZENiID0gZXhwb3J0cy5nZXRPcGVuZGlyT3B0aW9ucyA9IGV4cG9ydHMuZ2V0UmVhZGRpck9wdHNBbmRDYiA9IGV4cG9ydHMuZ2V0UmVhZGRpck9wdGlvbnMgPSBleHBvcnRzLmdldFJlYWRGaWxlT3B0aW9ucyA9IGV4cG9ydHMuZ2V0Um1PcHRzQW5kQ2IgPSBleHBvcnRzLmdldFJtZGlyT3B0aW9ucyA9IGV4cG9ydHMuZ2V0RGVmYXVsdE9wdHNBbmRDYiA9IGV4cG9ydHMuZ2V0RGVmYXVsdE9wdHMgPSBleHBvcnRzLm9wdHNEZWZhdWx0cyA9IGV4cG9ydHMuZ2V0TWtkaXJPcHRpb25zID0gdm9pZCAwO1xuZXhwb3J0cy5nZXRPcHRpb25zID0gZ2V0T3B0aW9ucztcbmV4cG9ydHMub3B0c0dlbmVyYXRvciA9IG9wdHNHZW5lcmF0b3I7XG5leHBvcnRzLm9wdHNBbmRDYkdlbmVyYXRvciA9IG9wdHNBbmRDYkdlbmVyYXRvcjtcbmNvbnN0IGNvbnN0YW50c18xID0gcmVxdWlyZShcIi4vY29uc3RhbnRzXCIpO1xuY29uc3QgZW5jb2RpbmdfMSA9IHJlcXVpcmUoXCIuLi9lbmNvZGluZ1wiKTtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5jb25zdCBta2RpckRlZmF1bHRzID0ge1xuICAgIG1vZGU6IDUxMSAvKiBNT0RFLkRJUiAqLyxcbiAgICByZWN1cnNpdmU6IGZhbHNlLFxufTtcbmNvbnN0IGdldE1rZGlyT3B0aW9ucyA9IChvcHRpb25zKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnbnVtYmVyJylcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIG1rZGlyRGVmYXVsdHMsIHsgbW9kZTogb3B0aW9ucyB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgbWtkaXJEZWZhdWx0cywgb3B0aW9ucyk7XG59O1xuZXhwb3J0cy5nZXRNa2Rpck9wdGlvbnMgPSBnZXRNa2Rpck9wdGlvbnM7XG5jb25zdCBFUlJTVFJfT1BUUyA9IHRpcGVvZiA9PiBgRXhwZWN0ZWQgb3B0aW9ucyB0byBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIGEgc3RyaW5nLCBidXQgZ290ICR7dGlwZW9mfSBpbnN0ZWFkYDtcbmZ1bmN0aW9uIGdldE9wdGlvbnMoZGVmYXVsdHMsIG9wdGlvbnMpIHtcbiAgICBsZXQgb3B0cztcbiAgICBpZiAoIW9wdGlvbnMpXG4gICAgICAgIHJldHVybiBkZWZhdWx0cztcbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgdGlwZW9mID0gdHlwZW9mIG9wdGlvbnM7XG4gICAgICAgIHN3aXRjaCAodGlwZW9mKSB7XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgIG9wdHMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0cywgeyBlbmNvZGluZzogb3B0aW9ucyB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICAgICAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKEVSUlNUUl9PUFRTKHRpcGVvZikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChvcHRzLmVuY29kaW5nICE9PSAnYnVmZmVyJylcbiAgICAgICAgKDAsIGVuY29kaW5nXzEuYXNzZXJ0RW5jb2RpbmcpKG9wdHMuZW5jb2RpbmcpO1xuICAgIHJldHVybiBvcHRzO1xufVxuZnVuY3Rpb24gb3B0c0dlbmVyYXRvcihkZWZhdWx0cykge1xuICAgIHJldHVybiBvcHRpb25zID0+IGdldE9wdGlvbnMoZGVmYXVsdHMsIG9wdGlvbnMpO1xufVxuZnVuY3Rpb24gb3B0c0FuZENiR2VuZXJhdG9yKGdldE9wdHMpIHtcbiAgICByZXR1cm4gKG9wdGlvbnMsIGNhbGxiYWNrKSA9PiB0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJyA/IFtnZXRPcHRzKCksIG9wdGlvbnNdIDogW2dldE9wdHMob3B0aW9ucyksICgwLCB1dGlsXzEudmFsaWRhdGVDYWxsYmFjaykoY2FsbGJhY2spXTtcbn1cbmV4cG9ydHMub3B0c0RlZmF1bHRzID0ge1xuICAgIGVuY29kaW5nOiAndXRmOCcsXG59O1xuZXhwb3J0cy5nZXREZWZhdWx0T3B0cyA9IG9wdHNHZW5lcmF0b3IoZXhwb3J0cy5vcHRzRGVmYXVsdHMpO1xuZXhwb3J0cy5nZXREZWZhdWx0T3B0c0FuZENiID0gb3B0c0FuZENiR2VuZXJhdG9yKGV4cG9ydHMuZ2V0RGVmYXVsdE9wdHMpO1xuY29uc3Qgcm1kaXJEZWZhdWx0cyA9IHtcbiAgICByZWN1cnNpdmU6IGZhbHNlLFxufTtcbmNvbnN0IGdldFJtZGlyT3B0aW9ucyA9IChvcHRpb25zKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHJtZGlyRGVmYXVsdHMsIG9wdGlvbnMpO1xufTtcbmV4cG9ydHMuZ2V0Um1kaXJPcHRpb25zID0gZ2V0Um1kaXJPcHRpb25zO1xuY29uc3QgZ2V0Um1PcHRzID0gb3B0c0dlbmVyYXRvcihleHBvcnRzLm9wdHNEZWZhdWx0cyk7XG5leHBvcnRzLmdldFJtT3B0c0FuZENiID0gb3B0c0FuZENiR2VuZXJhdG9yKGdldFJtT3B0cyk7XG5jb25zdCByZWFkRmlsZU9wdHNEZWZhdWx0cyA9IHtcbiAgICBmbGFnOiAncicsXG59O1xuZXhwb3J0cy5nZXRSZWFkRmlsZU9wdGlvbnMgPSBvcHRzR2VuZXJhdG9yKHJlYWRGaWxlT3B0c0RlZmF1bHRzKTtcbmNvbnN0IHJlYWRkaXJEZWZhdWx0cyA9IHtcbiAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgIHJlY3Vyc2l2ZTogZmFsc2UsXG4gICAgd2l0aEZpbGVUeXBlczogZmFsc2UsXG59O1xuZXhwb3J0cy5nZXRSZWFkZGlyT3B0aW9ucyA9IG9wdHNHZW5lcmF0b3IocmVhZGRpckRlZmF1bHRzKTtcbmV4cG9ydHMuZ2V0UmVhZGRpck9wdHNBbmRDYiA9IG9wdHNBbmRDYkdlbmVyYXRvcihleHBvcnRzLmdldFJlYWRkaXJPcHRpb25zKTtcbmNvbnN0IG9wZW5kaXJEZWZhdWx0cyA9IHtcbiAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgIGJ1ZmZlclNpemU6IDMyLFxuICAgIHJlY3Vyc2l2ZTogZmFsc2UsXG59O1xuZXhwb3J0cy5nZXRPcGVuZGlyT3B0aW9ucyA9IG9wdHNHZW5lcmF0b3Iob3BlbmRpckRlZmF1bHRzKTtcbmV4cG9ydHMuZ2V0T3BlbmRpck9wdHNBbmRDYiA9IG9wdHNBbmRDYkdlbmVyYXRvcihleHBvcnRzLmdldE9wZW5kaXJPcHRpb25zKTtcbmNvbnN0IGFwcGVuZEZpbGVEZWZhdWx0cyA9IHtcbiAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgIG1vZGU6IDQzOCAvKiBNT0RFLkRFRkFVTFQgKi8sXG4gICAgZmxhZzogY29uc3RhbnRzXzEuRkxBR1NbY29uc3RhbnRzXzEuRkxBR1MuYV0sXG59O1xuZXhwb3J0cy5nZXRBcHBlbmRGaWxlT3B0cyA9IG9wdHNHZW5lcmF0b3IoYXBwZW5kRmlsZURlZmF1bHRzKTtcbmV4cG9ydHMuZ2V0QXBwZW5kRmlsZU9wdHNBbmRDYiA9IG9wdHNBbmRDYkdlbmVyYXRvcihleHBvcnRzLmdldEFwcGVuZEZpbGVPcHRzKTtcbmNvbnN0IHN0YXREZWZhdWx0cyA9IHtcbiAgICBiaWdpbnQ6IGZhbHNlLFxufTtcbmNvbnN0IGdldFN0YXRPcHRpb25zID0gKG9wdGlvbnMgPSB7fSkgPT4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdERlZmF1bHRzLCBvcHRpb25zKTtcbmV4cG9ydHMuZ2V0U3RhdE9wdGlvbnMgPSBnZXRTdGF0T3B0aW9ucztcbmNvbnN0IGdldFN0YXRPcHRzQW5kQ2IgPSAob3B0aW9ucywgY2FsbGJhY2spID0+IHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nID8gWygwLCBleHBvcnRzLmdldFN0YXRPcHRpb25zKSgpLCBvcHRpb25zXSA6IFsoMCwgZXhwb3J0cy5nZXRTdGF0T3B0aW9ucykob3B0aW9ucyksICgwLCB1dGlsXzEudmFsaWRhdGVDYWxsYmFjaykoY2FsbGJhY2spXTtcbmV4cG9ydHMuZ2V0U3RhdE9wdHNBbmRDYiA9IGdldFN0YXRPcHRzQW5kQ2I7XG5jb25zdCBzdGF0ZnNEZWZhdWx0cyA9IHtcbiAgICBiaWdpbnQ6IGZhbHNlLFxufTtcbmNvbnN0IGdldFN0YXRmc09wdGlvbnMgPSAob3B0aW9ucyA9IHt9KSA9PiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZnNEZWZhdWx0cywgb3B0aW9ucyk7XG5leHBvcnRzLmdldFN0YXRmc09wdGlvbnMgPSBnZXRTdGF0ZnNPcHRpb25zO1xuY29uc3QgZ2V0U3RhdGZzT3B0c0FuZENiID0gKG9wdGlvbnMsIGNhbGxiYWNrKSA9PiB0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gWygwLCBleHBvcnRzLmdldFN0YXRmc09wdGlvbnMpKCksIG9wdGlvbnNdXG4gICAgOiBbKDAsIGV4cG9ydHMuZ2V0U3RhdGZzT3B0aW9ucykob3B0aW9ucyksICgwLCB1dGlsXzEudmFsaWRhdGVDYWxsYmFjaykoY2FsbGJhY2spXTtcbmV4cG9ydHMuZ2V0U3RhdGZzT3B0c0FuZENiID0gZ2V0U3RhdGZzT3B0c0FuZENiO1xuY29uc3QgcmVhbHBhdGhEZWZhdWx0cyA9IGV4cG9ydHMub3B0c0RlZmF1bHRzO1xuZXhwb3J0cy5nZXRSZWFscGF0aE9wdGlvbnMgPSBvcHRzR2VuZXJhdG9yKHJlYWxwYXRoRGVmYXVsdHMpO1xuZXhwb3J0cy5nZXRSZWFscGF0aE9wdHNBbmRDYiA9IG9wdHNBbmRDYkdlbmVyYXRvcihleHBvcnRzLmdldFJlYWxwYXRoT3B0aW9ucyk7XG5leHBvcnRzLndyaXRlRmlsZURlZmF1bHRzID0ge1xuICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgbW9kZTogNDM4IC8qIE1PREUuREVGQVVMVCAqLyxcbiAgICBmbGFnOiBjb25zdGFudHNfMS5GTEFHU1tjb25zdGFudHNfMS5GTEFHUy53XSxcbn07XG5leHBvcnRzLmdldFdyaXRlRmlsZU9wdGlvbnMgPSBvcHRzR2VuZXJhdG9yKGV4cG9ydHMud3JpdGVGaWxlRGVmYXVsdHMpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3B0aW9ucy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRGlyID0gdm9pZCAwO1xuY29uc3QgdXRpbF8xID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbmNvbnN0IERpcmVudF8xID0gcmVxdWlyZShcIi4vRGlyZW50XCIpO1xuY29uc3QgZXJyb3JzID0gcmVxdWlyZShcIi4uL3ZlbmRvci9ub2RlL2ludGVybmFsL2Vycm9yc1wiKTtcbi8qKlxuICogQSBkaXJlY3Rvcnkgc3RyZWFtLCBsaWtlIGBmcy5EaXJgLlxuICovXG5jbGFzcyBEaXIge1xuICAgIGNvbnN0cnVjdG9yKGxpbmssIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5saW5rID0gbGluaztcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5pdGVyYXRvckluZm8gPSBbXTtcbiAgICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vcGVyYXRpb25RdWV1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMucGF0aCA9IGxpbmsuZ2V0UGF0aCgpO1xuICAgICAgICB0aGlzLml0ZXJhdG9ySW5mby5wdXNoKGxpbmsuY2hpbGRyZW5bU3ltYm9sLml0ZXJhdG9yXSgpKTtcbiAgICB9XG4gICAgY2xvc2VCYXNlKCkge1xuICAgICAgICAvLyBJbiBhIHJlYWwgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbiwgdGhpcyB3b3VsZCBjbG9zZSBmaWxlIGRlc2NyaXB0b3JzXG4gICAgICAgIC8vIEZvciBtZW1mcywgd2UganVzdCBuZWVkIHRvIG1hcmsgYXMgY2xvc2VkXG4gICAgfVxuICAgIHJlYWRCYXNlKGl0ZXJhdG9ySW5mbykge1xuICAgICAgICBsZXQgZG9uZTtcbiAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICBsZXQgbmFtZTtcbiAgICAgICAgbGV0IGxpbms7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAoeyBkb25lLCB2YWx1ZSB9ID0gaXRlcmF0b3JJbmZvW2l0ZXJhdG9ySW5mby5sZW5ndGggLSAxXS5uZXh0KCkpO1xuICAgICAgICAgICAgICAgIGlmICghZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICBbbmFtZSwgbGlua10gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKG5hbWUgPT09ICcuJyB8fCBuYW1lID09PSAnLi4nKTtcbiAgICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICAgICAgaXRlcmF0b3JJbmZvLnBvcCgpO1xuICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvckluZm8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVjdXJzaXZlICYmIGxpbmsuY2hpbGRyZW4uc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVyYXRvckluZm8ucHVzaChsaW5rLmNoaWxkcmVuW1N5bWJvbC5pdGVyYXRvcl0oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBEaXJlbnRfMS5kZWZhdWx0LmJ1aWxkKGxpbmssIHRoaXMub3B0aW9ucy5lbmNvZGluZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKCFkb25lKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNsb3NlKGNhbGxiYWNrKSB7XG4gICAgICAgIC8vIFByb21pc2UtYmFzZWQgY2xvc2VcbiAgICAgICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgZXJyb3JzLkVycm9yKCdFUlJfRElSX0NMT1NFRCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZShlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIENhbGxiYWNrLWJhc2VkIGNsb3NlXG4gICAgICAgICgwLCB1dGlsXzEudmFsaWRhdGVDYWxsYmFjaykoY2FsbGJhY2spO1xuICAgICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2ssIG5ldyBlcnJvcnMuRXJyb3IoJ0VSUl9ESVJfQ0xPU0VEJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wZXJhdGlvblF1ZXVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm9wZXJhdGlvblF1ZXVlLnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoY2FsbGJhY2spO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUJhc2UoKTtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2ssIGVycik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2xvc2VTeW5jKCkge1xuICAgICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBlcnJvcnMuRXJyb3IoJ0VSUl9ESVJfQ0xPU0VEJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uUXVldWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBlcnJvcnMuRXJyb3IoJ0VSUl9ESVJfQ09OQ1VSUkVOVF9PUEVSQVRJT04nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2xvc2VCYXNlKCk7XG4gICAgfVxuICAgIHJlYWQoY2FsbGJhY2spIHtcbiAgICAgICAgLy8gUHJvbWlzZS1iYXNlZCByZWFkXG4gICAgICAgIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhZCgoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCA/PyBudWxsKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIENhbGxiYWNrLWJhc2VkIHJlYWRcbiAgICAgICAgKDAsIHV0aWxfMS52YWxpZGF0ZUNhbGxiYWNrKShjYWxsYmFjayk7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjaywgbmV3IGVycm9ycy5FcnJvcignRVJSX0RJUl9DTE9TRUQnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uUXVldWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0aW9uUXVldWUucHVzaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlcmF0aW9uUXVldWUgPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucmVhZEJhc2UodGhpcy5pdGVyYXRvckluZm8pO1xuICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcXVldWUgPSB0aGlzLm9wZXJhdGlvblF1ZXVlO1xuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0aW9uUXVldWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgb3Agb2YgcXVldWUpXG4gICAgICAgICAgICAgICAgICAgIG9wKCk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXVlID0gdGhpcy5vcGVyYXRpb25RdWV1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdGlvblF1ZXVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG9wIG9mIHF1ZXVlKVxuICAgICAgICAgICAgICAgICAgICBvcCgpO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkU3luYygpIHtcbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLkVycm9yKCdFUlJfRElSX0NMT1NFRCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wZXJhdGlvblF1ZXVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLkVycm9yKCdFUlJfRElSX0NPTkNVUlJFTlRfT1BFUkFUSU9OJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZEJhc2UodGhpcy5pdGVyYXRvckluZm8pO1xuICAgIH1cbiAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmV4dDogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpckVudCA9IGF3YWl0IHRoaXMucmVhZCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGlyRW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IGRpckVudCB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuZGVmaW5lZCB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnRzLkRpciA9IERpcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURpci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudG9NYXRjaGVyID0gZXhwb3J0cy50b1JlZ2V4ID0gdm9pZCAwO1xuY29uc3QgZXNjYXBlUmUgPSAoY2gpID0+ICgvWy5eJCt7fSgpfFxcXFxdLy50ZXN0KGNoKSA/IGBcXFxcJHtjaH1gIDogY2gpO1xuLyoqXG4gKiBQYXJzZSBhbiBleHRlbmRlZCBnbG9iIHBhdHRlcm4gbGlrZSA/KGF8YnxjKVxuICogUmV0dXJucyB0aGUgcmVnZXggc3RyaW5nIGVxdWl2YWxlbnQgYW5kIHRoZSBuZXcgaW5kZXggcG9zaXRpb25cbiAqL1xuY29uc3QgcGFyc2VFeHRHbG9iID0gKHBhdHRlcm4sIHN0YXJ0SWR4LCBwcmVmaXgsIG9wdGlvbnMpID0+IHtcbiAgICBsZXQgaSA9IHN0YXJ0SWR4OyAvLyBzdGFydElkeCBzaG91bGQgYmUgcG9pbnRpbmcgYXQgdGhlIGNoYXJhY3RlciBhZnRlciAnKCdcbiAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgIGxldCBjdXIgPSAnJztcbiAgICBsZXQgZGVwdGggPSAxOyAvLyBUcmFjayBwYXJlbnRoZXNpcyBkZXB0aCBmb3IgbmVzdGVkIHBhdHRlcm5zXG4gICAgd2hpbGUgKGkgPCBwYXR0ZXJuLmxlbmd0aCAmJiBkZXB0aCA+IDApIHtcbiAgICAgICAgY29uc3QgY2ggPSBwYXR0ZXJuW2ldO1xuICAgICAgICBpZiAoY2ggPT09ICcoJykge1xuICAgICAgICAgICAgZGVwdGgrKztcbiAgICAgICAgICAgIGN1ciArPSBjaDtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaCA9PT0gJyknKSB7XG4gICAgICAgICAgICBkZXB0aC0tO1xuICAgICAgICAgICAgaWYgKGRlcHRoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gRm91bmQgdGhlIGNsb3NpbmcgcGFyZW50aGVzaXNcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKGN1cik7XG4gICAgICAgICAgICAgICAgaSsrOyAvLyBjb25zdW1lICcpJ1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VyICs9IGNoO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaCA9PT0gJ3wnICYmIGRlcHRoID09PSAxKSB7XG4gICAgICAgICAgICAvLyBQaXBlIHNlcGFyYXRvciBhdCB0b3AgbGV2ZWwgb2YgdGhpcyBleHRnbG9iXG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGN1cik7XG4gICAgICAgICAgICBjdXIgPSAnJztcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1ciArPSBjaDtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGVwdGggIT09IDApXG4gICAgICAgIHJldHVybjsgLy8gVW5jbG9zZWQgcGFyZW50aGVzaXNcbiAgICBsZXQgYWx0ZXJuYXRpdmVzID0gJyc7XG4gICAgY29uc3QgbGVuZ3RoID0gcGFydHMubGVuZ3RoO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspXG4gICAgICAgIGFsdGVybmF0aXZlcyArPSAoYWx0ZXJuYXRpdmVzID8gJ3wnIDogJycpICsgKDAsIGV4cG9ydHMudG9SZWdleCkocGFydHNbal0sIG9wdGlvbnMpLnNvdXJjZS5yZXBsYWNlKC9eXFxeLywgJycpLnJlcGxhY2UoL1xcJCQvLCAnJyk7XG4gICAgc3dpdGNoIChwcmVmaXgpIHtcbiAgICAgICAgY2FzZSAnPyc6IC8vIHplcm8gb3Igb25lXG4gICAgICAgICAgICByZXR1cm4gW2AoPzoke2FsdGVybmF0aXZlc30pP2AsIGldO1xuICAgICAgICBjYXNlICcqJzogLy8gemVybyBvciBtb3JlXG4gICAgICAgICAgICByZXR1cm4gW2AoPzoke2FsdGVybmF0aXZlc30pKmAsIGldO1xuICAgICAgICBjYXNlICcrJzogLy8gb25lIG9yIG1vcmVcbiAgICAgICAgICAgIHJldHVybiBbYCg/OiR7YWx0ZXJuYXRpdmVzfSkrYCwgaV07XG4gICAgICAgIGNhc2UgJ0AnOiAvLyBleGFjdGx5IG9uZVxuICAgICAgICAgICAgcmV0dXJuIFtgKD86JHthbHRlcm5hdGl2ZXN9KWAsIGldO1xuICAgICAgICBjYXNlICchJzogLy8gbm9uZSBvZiAobmVnYXRpdmUgbWF0Y2gpXG4gICAgICAgICAgICAvLyBGb3IgbmVnYXRpb24sIHdlIG5lZWQgdG8gbWF0Y2ggYW55dGhpbmcgdGhhdCBkb2Vzbid0IG1hdGNoIHRoZSBwYXR0ZXJuXG4gICAgICAgICAgICAvLyBVc2UgbmVnYXRpdmUgbG9va2FoZWFkIHdpdGhvdXQgY29uc3VtaW5nIGNoYXJhY3RlcnMgYWZ0ZXJcbiAgICAgICAgICAgIHJldHVybiBbYCg/ISR7YWx0ZXJuYXRpdmVzfSlbXi9dKmAsIGldO1xuICAgIH1cbiAgICByZXR1cm47XG59O1xuLyoqXG4gKiBDb252ZXJ0IGEgZ2xvYiBwYXR0ZXJuIHRvIGEgcmVndWxhciBleHByZXNzaW9uXG4gKlxuICogU3VwcG9ydHM6XG4gKiAtIGAvYCB0byBzZXBhcmF0ZSBwYXRoIHNlZ21lbnRzXG4gKiAtIGAqYCB0byBtYXRjaCB6ZXJvIG9yIG1vcmUgY2hhcmFjdGVycyBpbiBhIHBhdGggc2VnbWVudFxuICogLSBgP2AgdG8gbWF0Y2ggb25lIGNoYXJhY3RlciBpbiBhIHBhdGggc2VnbWVudFxuICogLSBgKipgIHRvIG1hdGNoIGFueSBudW1iZXIgb2YgcGF0aCBzZWdtZW50cywgaW5jbHVkaW5nIG5vbmVcbiAqIC0gYHt9YCB0byBncm91cCBjb25kaXRpb25zIChlLmcuIGB7aHRtbCx0eHR9YClcbiAqIC0gYFthYmNdYCwgYFthLXpdYCwgYFshYS16XWAsIGBbIWFiY11gIGNoYXJhY3RlciBjbGFzc2VzXG4gKiAtIEV4dGVuZGVkIGdsb2JiaW5nICh3aGVuIGBleHRnbG9iOiB0cnVlYCBvcHRpb24gaXMgc2V0KTpcbiAqICAgLSBgPyhwYXR0ZXJuLWxpc3QpYCB6ZXJvIG9yIG9uZSBvY2N1cnJlbmNlXG4gKiAgIC0gYCoocGF0dGVybi1saXN0KWAgemVybyBvciBtb3JlIG9jY3VycmVuY2VzXG4gKiAgIC0gYCsocGF0dGVybi1saXN0KWAgb25lIG9yIG1vcmUgb2NjdXJyZW5jZXNcbiAqICAgLSBgQChwYXR0ZXJuLWxpc3QpYCBleGFjdGx5IG9uZSBvZiB0aGUgcGF0dGVybnNcbiAqICAgLSBgIShwYXR0ZXJuLWxpc3QpYCBhbnl0aGluZyBleGNlcHQgdGhlIHBhdHRlcm5zXG4gKi9cbmNvbnN0IHRvUmVnZXggPSAocGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICAgIGxldCByZWdleFN0ciA9ICcnO1xuICAgIGxldCBpID0gMDtcbiAgICAvLyBIZWxwZXIgdG8gcGFyc2UgYSBicmFjZSBncm91cCBsaWtlIHthLGIsY30uIE5vIG5lc3Rpbmcgc3VwcG9ydC5cbiAgICBjb25zdCBwYXJzZUJyYWNlR3JvdXAgPSAoKSA9PiB7XG4gICAgICAgIC8vIEFzc3VtZSBjdXJyZW50IGNoYXIgaXMgJ3snXG4gICAgICAgIGkrKzsgLy8gc2tpcCAneydcbiAgICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgICAgbGV0IGN1ciA9ICcnO1xuICAgICAgICBsZXQgY2xvc2VkID0gZmFsc2U7XG4gICAgICAgIHdoaWxlIChpIDwgcGF0dGVybi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoID0gcGF0dGVybltpXTtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ30nKSB7XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChjdXIpO1xuICAgICAgICAgICAgICAgIGkrKzsgLy8gY29uc3VtZSAnfSdcbiAgICAgICAgICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoID09PSAnLCcpIHtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKGN1cik7XG4gICAgICAgICAgICAgICAgY3VyID0gJyc7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VyICs9IGNoO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2xvc2VkKSB7XG4gICAgICAgICAgICAvLyB0cmVhdCBhcyBsaXRlcmFsICd7Li4uJ1xuICAgICAgICAgICAgcmV0dXJuICdcXFxceycgKyBlc2NhcGVSZShjdXIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIENvbnZlcnQgZWFjaCBwYXJ0IHJlY3Vyc2l2ZWx5IHRvIHN1cHBvcnQgZ2xvYnMgaW5zaWRlIGJyYWNlc1xuICAgICAgICBjb25zdCBhbHQgPSBwYXJ0cy5tYXAoKHApID0+ICgwLCBleHBvcnRzLnRvUmVnZXgpKHAsIG9wdGlvbnMpLnNvdXJjZS5yZXBsYWNlKC9eXFxeLywgJycpLnJlcGxhY2UoL1xcJCQvLCAnJykpLmpvaW4oJ3wnKTtcbiAgICAgICAgcmV0dXJuIGAoPzoke2FsdH0pYDtcbiAgICB9O1xuICAgIGNvbnN0IGV4dGdsb2IgPSAhIW9wdGlvbnM/LmV4dGdsb2I7XG4gICAgd2hpbGUgKGkgPCBwYXR0ZXJuLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBjaGFyID0gcGF0dGVybltpXTtcbiAgICAgICAgLy8gQ2hlY2sgZm9yIGV4dGVuZGVkIGdsb2IgcGF0dGVybnMgd2hlbiBleHRnbG9iIGlzIGVuYWJsZWRcbiAgICAgICAgaWYgKGV4dGdsb2IgJiYgcGF0dGVybltpICsgMV0gPT09ICcoJykge1xuICAgICAgICAgICAgaWYgKGNoYXIgPT09ICc/JyB8fCBjaGFyID09PSAnKicgfHwgY2hhciA9PT0gJysnIHx8IGNoYXIgPT09ICdAJyB8fCBjaGFyID09PSAnIScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBwYXJzZUV4dEdsb2IocGF0dGVybiwgaSArIDIsIGNoYXIsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVnZXhTdHIgKz0gcmVzdWx0WzBdO1xuICAgICAgICAgICAgICAgICAgICBpID0gcmVzdWx0WzFdO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gSWYgcGFyc2UgZmFpbGVkLCBmYWxsIHRocm91Z2ggdG8gbm9ybWFsIGhhbmRsaW5nXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChjaGFyKSB7XG4gICAgICAgICAgICBjYXNlICcqJzoge1xuICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBkb3VibGUgc3RhciAqKlxuICAgICAgICAgICAgICAgIGlmIChwYXR0ZXJuW2kgKyAxXSA9PT0gJyonKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENvbGxhcHNlIGNvbnNlY3V0aXZlICogYmV5b25kIHR3byAoZS5nLiwgKioqIC0+ICoqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGkgKyAyO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAocGF0dGVybltqXSA9PT0gJyonKVxuICAgICAgICAgICAgICAgICAgICAgICAgaisrO1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBmb2xsb3dlZCBieSBhIHNsYXNoLCBtYWtlIGl0IG9wdGlvbmFsIHRvIGFsbG93IHplcm8gc2VnbWVudHNcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhdHRlcm5bal0gPT09ICcvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhTdHIgKz0gJyg/Oi4qLyk/JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBqICsgMTsgLy8gY29uc3VtZSAqKi9cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4U3RyICs9ICcuKic7XG4gICAgICAgICAgICAgICAgICAgICAgICBpID0gajsgLy8gY29uc3VtZSAqKlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZWdleFN0ciArPSAnW14vXSonO1xuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnPyc6XG4gICAgICAgICAgICAgICAgcmVnZXhTdHIgKz0gJ1teL10nO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1snOiB7XG4gICAgICAgICAgICAgICAgLy8gQ29weSBjaGFyYWN0ZXIgY2xhc3MgYXMtaXMgd2l0aCBzdXBwb3J0IGZvciBsZWFkaW5nICchJ1xuICAgICAgICAgICAgICAgIGxldCBjbHMgPSAnWyc7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGlmIChpIDwgcGF0dGVybi5sZW5ndGggJiYgcGF0dGVybltpXSA9PT0gJyEnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNscyArPSAnXic7XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gaWYgZmlyc3QgYWZ0ZXIgWyBvciBbXiBpcyAnXScgaW5jbHVkZSBpdCBsaXRlcmFsbHlcbiAgICAgICAgICAgICAgICBpZiAoaSA8IHBhdHRlcm4ubGVuZ3RoICYmIHBhdHRlcm5baV0gPT09ICddJykge1xuICAgICAgICAgICAgICAgICAgICBjbHMgKz0gJ10nO1xuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdoaWxlIChpIDwgcGF0dGVybi5sZW5ndGggJiYgcGF0dGVybltpXSAhPT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoID0gcGF0dGVybltpXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRXNjYXBlIGJhY2tzbGFzaCBpbnNpZGUgY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgY2xzICs9IGNoID09PSAnXFxcXCcgPyAnXFxcXFxcXFwnIDogY2g7XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGkgPCBwYXR0ZXJuLmxlbmd0aCAmJiBwYXR0ZXJuW2ldID09PSAnXScpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xzICs9ICddJztcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVW5jbG9zZWQgY2xhc3MgLT4gdHJlYXQgJ1snIGxpdGVyYWxseVxuICAgICAgICAgICAgICAgICAgICByZWdleFN0ciArPSAnXFxcXFsnO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVnZXhTdHIgKz0gY2xzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAneyc6IHtcbiAgICAgICAgICAgICAgICByZWdleFN0ciArPSBwYXJzZUJyYWNlR3JvdXAoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJy8nOlxuICAgICAgICAgICAgICAgIHJlZ2V4U3RyICs9ICcvJztcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcuJzpcbiAgICAgICAgICAgIGNhc2UgJ14nOlxuICAgICAgICAgICAgY2FzZSAnJCc6XG4gICAgICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgICAgIGNhc2UgJygnOlxuICAgICAgICAgICAgY2FzZSAnKSc6XG4gICAgICAgICAgICBjYXNlICd8JzpcbiAgICAgICAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICAgICAgICAgIHJlZ2V4U3RyICs9IGBcXFxcJHtjaGFyfWA7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZWdleFN0ciArPSBjaGFyO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBmbGFncyA9IG9wdGlvbnM/Lm5vY2FzZSA/ICdpJyA6ICcnO1xuICAgIHJldHVybiBuZXcgUmVnRXhwKCdeJyArIHJlZ2V4U3RyICsgJyQnLCBmbGFncyk7XG59O1xuZXhwb3J0cy50b1JlZ2V4ID0gdG9SZWdleDtcbmNvbnN0IGlzUmVnRXhwID0gL15cXC8oLnsxLDQwOTZ9KVxcLyhbZ2ltc3V5XXswLDZ9KSQvO1xuY29uc3QgdG9NYXRjaGVyID0gKHBhdHRlcm4sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCByZWdleGVzID0gW107XG4gICAgY29uc3QgcGF0dGVybnMgPSBBcnJheS5pc0FycmF5KHBhdHRlcm4pID8gcGF0dGVybiA6IFtwYXR0ZXJuXTtcbiAgICBmb3IgKGNvbnN0IHBhdCBvZiBwYXR0ZXJucykge1xuICAgICAgICBpZiAodHlwZW9mIHBhdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gaXNSZWdFeHAuZXhlYyhwYXQpO1xuICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgZXhwciwgZmxhZ3NdID0gbWF0Y2g7XG4gICAgICAgICAgICAgICAgcmVnZXhlcy5wdXNoKG5ldyBSZWdFeHAoZXhwciwgZmxhZ3MpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlZ2V4ZXMucHVzaCgoMCwgZXhwb3J0cy50b1JlZ2V4KShwYXQsIG9wdGlvbnMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlZ2V4ZXMucHVzaChwYXQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZWdleGVzLmxlbmd0aFxuICAgICAgICA/IG5ldyBGdW5jdGlvbigncCcsICdyZXR1cm4gJyArIHJlZ2V4ZXMubWFwKChyKSA9PiByICsgJy50ZXN0KHApJykuam9pbignfHwnKSlcbiAgICAgICAgOiAoKSA9PiBmYWxzZTtcbn07XG5leHBvcnRzLnRvTWF0Y2hlciA9IHRvTWF0Y2hlcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5nbG9iU3luYyA9IGdsb2JTeW5jO1xuY29uc3QgcGF0aF8xID0gcmVxdWlyZShcIi4uL3ZlbmRvci9ub2RlL3BhdGhcIik7XG5jb25zdCBnbG9iX3RvX3JlZ2V4X2pzXzEgPSByZXF1aXJlKFwiZ2xvYi10by1yZWdleC5qc1wiKTtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5jb25zdCBwYXRoSm9pbiA9IHBhdGhfMS5wb3NpeC5qb2luO1xuY29uc3QgcGF0aFJlbGF0aXZlID0gcGF0aF8xLnBvc2l4LnJlbGF0aXZlO1xuY29uc3QgcGF0aFJlc29sdmUgPSBwYXRoXzEucG9zaXgucmVzb2x2ZTtcbi8qKlxuICogQ2hlY2sgaWYgYSBwYXRoIG1hdGNoZXMgYSBnbG9iIHBhdHRlcm5cbiAqL1xuZnVuY3Rpb24gbWF0Y2hlc1BhdHRlcm4ocGF0aCwgcGF0dGVybikge1xuICAgIGNvbnN0IHJlZ2V4ID0gKDAsIGdsb2JfdG9fcmVnZXhfanNfMS50b1JlZ2V4KShwYXR0ZXJuKTtcbiAgICByZXR1cm4gcmVnZXgudGVzdChwYXRoKTtcbn1cbi8qKlxuICogQ2hlY2sgaWYgYSBwYXRoIHNob3VsZCBiZSBleGNsdWRlZCBiYXNlZCBvbiBleGNsdWRlIHBhdHRlcm5zXG4gKi9cbmZ1bmN0aW9uIGlzRXhjbHVkZWQocGF0aCwgZXhjbHVkZSkge1xuICAgIGlmICghZXhjbHVkZSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2YgZXhjbHVkZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gZXhjbHVkZShwYXRoKTtcbiAgICB9XG4gICAgY29uc3QgcGF0dGVybnMgPSBBcnJheS5pc0FycmF5KGV4Y2x1ZGUpID8gZXhjbHVkZSA6IFtleGNsdWRlXTtcbiAgICByZXR1cm4gcGF0dGVybnMuc29tZShwYXR0ZXJuID0+IG1hdGNoZXNQYXR0ZXJuKHBhdGgsIHBhdHRlcm4pKTtcbn1cbi8qKlxuICogV2FsayBkaXJlY3RvcnkgdHJlZSBhbmQgY29sbGVjdCBtYXRjaGluZyBwYXRoc1xuICovXG5mdW5jdGlvbiB3YWxrRGlyZWN0b3J5KGZzLCBkaXIsIHBhdHRlcm5zLCBvcHRpb25zLCBjdXJyZW50RGVwdGggPSAwKSB7XG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgIGNvbnN0IG1heERlcHRoID0gb3B0aW9ucy5tYXhkZXB0aCA/PyBJbmZpbml0eTtcbiAgICBjb25zdCBiYXNlQ3dkID0gb3B0aW9ucy5jd2QgPyAoMCwgdXRpbF8xLnBhdGhUb0ZpbGVuYW1lKShvcHRpb25zLmN3ZCkgOiBwcm9jZXNzLmN3ZCgpO1xuICAgIGlmIChjdXJyZW50RGVwdGggPiBtYXhEZXB0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aEpvaW4oZGlyLCBlbnRyeS5uYW1lLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aFJlbGF0aXZlKGJhc2VDd2QsIGZ1bGxQYXRoKTtcbiAgICAgICAgICAgIC8vIFNraXAgaWYgZXhjbHVkZWRcbiAgICAgICAgICAgIGlmIChpc0V4Y2x1ZGVkKHJlbGF0aXZlUGF0aCwgb3B0aW9ucy5leGNsdWRlKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBwYXRoIG1hdGNoZXMgYW55IHBhdHRlcm5cbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSBwYXR0ZXJucy5zb21lKHBhdHRlcm4gPT4gbWF0Y2hlc1BhdHRlcm4ocmVsYXRpdmVQYXRoLCBwYXR0ZXJuKSk7XG4gICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZWxhdGl2ZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVjdXJzZSBpbnRvIGRpcmVjdG9yaWVzXG4gICAgICAgICAgICBpZiAoZW50cnkuaXNEaXJlY3RvcnkoKSAmJiBjdXJyZW50RGVwdGggPCBtYXhEZXB0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YlJlc3VsdHMgPSB3YWxrRGlyZWN0b3J5KGZzLCBmdWxsUGF0aCwgcGF0dGVybnMsIG9wdGlvbnMsIGN1cnJlbnREZXB0aCArIDEpO1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCguLi5zdWJSZXN1bHRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIFNraXAgZGlyZWN0b3JpZXMgd2UgY2FuJ3QgcmVhZFxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0cztcbn1cbi8qKlxuICogTWFpbiBnbG9iIGltcGxlbWVudGF0aW9uXG4gKi9cbmZ1bmN0aW9uIGdsb2JTeW5jKGZzLCBwYXR0ZXJuLCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBjd2QgPSBvcHRpb25zLmN3ZCA/ICgwLCB1dGlsXzEucGF0aFRvRmlsZW5hbWUpKG9wdGlvbnMuY3dkKSA6IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3QgcmVzb2x2ZWRDd2QgPSBwYXRoUmVzb2x2ZShjd2QpO1xuICAgIGNvbnN0IGdsb2JPcHRpb25zID0ge1xuICAgICAgICBjd2Q6IHJlc29sdmVkQ3dkLFxuICAgICAgICBleGNsdWRlOiBvcHRpb25zLmV4Y2x1ZGUsXG4gICAgICAgIG1heGRlcHRoOiBvcHRpb25zLm1heGRlcHRoLFxuICAgICAgICB3aXRoRmlsZVR5cGVzOiBvcHRpb25zLndpdGhGaWxlVHlwZXMgfHwgZmFsc2UsXG4gICAgfTtcbiAgICBsZXQgcmVzdWx0cyA9IFtdO1xuICAgIC8vIEhhbmRsZSBhYnNvbHV0ZSBwYXR0ZXJuc1xuICAgIGlmIChwYXRoXzEucG9zaXguaXNBYnNvbHV0ZShwYXR0ZXJuKSkge1xuICAgICAgICBjb25zdCBkaXIgPSBwYXRoXzEucG9zaXguZGlybmFtZShwYXR0ZXJuKTtcbiAgICAgICAgY29uc3QgcGF0dGVybkJhc2VuYW1lID0gcGF0aF8xLnBvc2l4LmJhc2VuYW1lKHBhdHRlcm4pO1xuICAgICAgICBjb25zdCBkaXJSZXN1bHRzID0gd2Fsa0RpcmVjdG9yeShmcywgZGlyLCBbcGF0dGVybkJhc2VuYW1lXSwgeyAuLi5nbG9iT3B0aW9ucywgY3dkOiBkaXIgfSk7XG4gICAgICAgIHJlc3VsdHMucHVzaCguLi5kaXJSZXN1bHRzLm1hcChyID0+IHBhdGhfMS5wb3NpeC5yZXNvbHZlKGRpciwgcikpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEhhbmRsZSByZWxhdGl2ZSBwYXR0ZXJuc1xuICAgICAgICBjb25zdCBkaXJSZXN1bHRzID0gd2Fsa0RpcmVjdG9yeShmcywgcmVzb2x2ZWRDd2QsIFtwYXR0ZXJuXSwgZ2xvYk9wdGlvbnMpO1xuICAgICAgICByZXN1bHRzLnB1c2goLi4uZGlyUmVzdWx0cyk7XG4gICAgfVxuICAgIC8vIFJlbW92ZSBkdXBsaWNhdGVzIGFuZCBzb3J0XG4gICAgcmVzdWx0cyA9IFsuLi5uZXcgU2V0KHJlc3VsdHMpXS5zb3J0KCk7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nbG9iLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5GU1dhdGNoZXIgPSBleHBvcnRzLlN0YXRXYXRjaGVyID0gZXhwb3J0cy5Wb2x1bWUgPSB2b2lkIDA7XG5leHBvcnRzLnBhdGhUb1N0ZXBzID0gcGF0aFRvU3RlcHM7XG5leHBvcnRzLmRhdGFUb1N0ciA9IGRhdGFUb1N0cjtcbmV4cG9ydHMudG9Vbml4VGltZXN0YW1wID0gdG9Vbml4VGltZXN0YW1wO1xuY29uc3QgcGF0aF8xID0gcmVxdWlyZShcIi4uL3ZlbmRvci9ub2RlL3BhdGhcIik7XG5jb25zdCBjb3JlXzEgPSByZXF1aXJlKFwiLi4vY29yZVwiKTtcbmNvbnN0IFN0YXRzXzEgPSByZXF1aXJlKFwiLi9TdGF0c1wiKTtcbmNvbnN0IERpcmVudF8xID0gcmVxdWlyZShcIi4vRGlyZW50XCIpO1xuY29uc3QgU3RhdEZzXzEgPSByZXF1aXJlKFwiLi9TdGF0RnNcIik7XG5jb25zdCBidWZmZXJfMSA9IHJlcXVpcmUoXCIuLi92ZW5kb3Ivbm9kZS9pbnRlcm5hbC9idWZmZXJcIik7XG5jb25zdCBxdWV1ZU1pY3JvdGFza18xID0gcmVxdWlyZShcIi4uL3F1ZXVlTWljcm90YXNrXCIpO1xuY29uc3Qgc2V0VGltZW91dFVucmVmXzEgPSByZXF1aXJlKFwiLi4vc2V0VGltZW91dFVucmVmXCIpO1xuY29uc3Qgc3RyZWFtXzEgPSByZXF1aXJlKFwiLi4vdmVuZG9yL25vZGUvc3RyZWFtXCIpO1xuY29uc3QgY29uc3RhbnRzXzEgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzXCIpO1xuY29uc3QgZXZlbnRzXzEgPSByZXF1aXJlKFwiLi4vdmVuZG9yL25vZGUvZXZlbnRzXCIpO1xuY29uc3QgZW5jb2RpbmdfMSA9IHJlcXVpcmUoXCIuLi9lbmNvZGluZ1wiKTtcbmNvbnN0IEZpbGVIYW5kbGVfMSA9IHJlcXVpcmUoXCIuL0ZpbGVIYW5kbGVcIik7XG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwiLi4vdmVuZG9yL25vZGUvdXRpbFwiKTtcbmNvbnN0IEZzUHJvbWlzZXNfMSA9IHJlcXVpcmUoXCIuL0ZzUHJvbWlzZXNcIik7XG5jb25zdCBwcmludF8xID0gcmVxdWlyZShcIi4uL3ByaW50XCIpO1xuY29uc3QgY29uc3RhbnRzXzIgPSByZXF1aXJlKFwiLi9jb25zdGFudHNcIik7XG5jb25zdCBlcnJvcnMgPSByZXF1aXJlKFwiLi4vdmVuZG9yL25vZGUvaW50ZXJuYWwvZXJyb3JzXCIpO1xuY29uc3Qgb3B0aW9uc18xID0gcmVxdWlyZShcIi4vb3B0aW9uc1wiKTtcbmNvbnN0IHV0aWxfMiA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5jb25zdCBEaXJfMSA9IHJlcXVpcmUoXCIuL0RpclwiKTtcbmNvbnN0IHV0aWxfMyA9IHJlcXVpcmUoXCIuLi9jb3JlL3V0aWxcIik7XG5jb25zdCByZXNvbHZlQ3Jvc3NQbGF0Zm9ybSA9IHBhdGhfMS5yZXNvbHZlO1xuY29uc3QgeyBPX1NZTUxJTkssIEZfT0ssIFJfT0ssIFdfT0ssIFhfT0ssIENPUFlGSUxFX0VYQ0wsIENPUFlGSUxFX0ZJQ0xPTkVfRk9SQ0UgfSA9IGNvbnN0YW50c18xLmNvbnN0YW50cztcbmNvbnN0IHBhdGhTZXAgPSBwYXRoXzEucG9zaXggPyBwYXRoXzEucG9zaXguc2VwIDogcGF0aF8xLnNlcDtcbmNvbnN0IHBhdGhSZWxhdGl2ZSA9IHBhdGhfMS5wb3NpeCA/IHBhdGhfMS5wb3NpeC5yZWxhdGl2ZSA6IHBhdGhfMS5yZWxhdGl2ZTtcbmNvbnN0IHBhdGhKb2luID0gcGF0aF8xLnBvc2l4ID8gcGF0aF8xLnBvc2l4LmpvaW4gOiBwYXRoXzEuam9pbjtcbmNvbnN0IHBhdGhEaXJuYW1lID0gcGF0aF8xLnBvc2l4ID8gcGF0aF8xLnBvc2l4LmRpcm5hbWUgOiBwYXRoXzEuZGlybmFtZTtcbmNvbnN0IHBhdGhOb3JtYWxpemUgPSBwYXRoXzEucG9zaXggPyBwYXRoXzEucG9zaXgubm9ybWFsaXplIDogcGF0aF8xLm5vcm1hbGl6ZTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RhbnRzXG5jb25zdCBrTWluUG9vbFNwYWNlID0gMTI4O1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVdGlsaXR5IGZ1bmN0aW9uc1xuZnVuY3Rpb24gcGF0aFRvU3RlcHMocGF0aCkge1xuICAgIHJldHVybiAoMCwgdXRpbF8zLmZpbGVuYW1lVG9TdGVwcykoKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCkpO1xufVxuZnVuY3Rpb24gZGF0YVRvU3RyKGRhdGEsIGVuY29kaW5nID0gZW5jb2RpbmdfMS5FTkNPRElOR19VVEY4KSB7XG4gICAgaWYgKGJ1ZmZlcl8xLkJ1ZmZlci5pc0J1ZmZlcihkYXRhKSlcbiAgICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoZW5jb2RpbmcpO1xuICAgIGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KVxuICAgICAgICByZXR1cm4gKDAsIGJ1ZmZlcl8xLmJ1ZmZlckZyb20pKGRhdGEpLnRvU3RyaW5nKGVuY29kaW5nKTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBTdHJpbmcoZGF0YSk7XG59XG4vLyBjb252ZXJ0cyBEYXRlIG9yIG51bWJlciB0byBhIGZyYWN0aW9uYWwgVU5JWCB0aW1lc3RhbXBcbmZ1bmN0aW9uIHRvVW5peFRpbWVzdGFtcCh0aW1lKSB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIHRyaXBsZS1lcXVhbHNcbiAgICBpZiAodHlwZW9mIHRpbWUgPT09ICdzdHJpbmcnICYmICt0aW1lID09IHRpbWUpIHtcbiAgICAgICAgcmV0dXJuICt0aW1lO1xuICAgIH1cbiAgICBpZiAodGltZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuIHRpbWUuZ2V0VGltZSgpIC8gMTAwMDtcbiAgICB9XG4gICAgaWYgKGlzRmluaXRlKHRpbWUpKSB7XG4gICAgICAgIGlmICh0aW1lIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIERhdGUubm93KCkgLyAxMDAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBwYXJzZSB0aW1lOiAnICsgdGltZSk7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZVVpZCh1aWQpIHtcbiAgICBpZiAodHlwZW9mIHVpZCAhPT0gJ251bWJlcicpXG4gICAgICAgIHRocm93IFR5cGVFcnJvcihjb25zdGFudHNfMi5FUlJTVFIuVUlEKTtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlR2lkKGdpZCkge1xuICAgIGlmICh0eXBlb2YgZ2lkICE9PSAnbnVtYmVyJylcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKGNvbnN0YW50c18yLkVSUlNUUi5HSUQpO1xufVxuLyoqXG4gKiBgVm9sdW1lYCByZXByZXNlbnRzIGEgZmlsZSBzeXN0ZW0uXG4gKi9cbmNsYXNzIFZvbHVtZSB7XG4gICAgZ2V0IHByb21pc2VzKCkge1xuICAgICAgICBpZiAodGhpcy5wcm9taXNlc0FwaSA9PT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUHJvbWlzZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgZW52aXJvbm1lbnQuJyk7XG4gICAgICAgIHJldHVybiB0aGlzLnByb21pc2VzQXBpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihfY29yZSA9IG5ldyBjb3JlXzEuU3VwZXJibG9jaygpKSB7XG4gICAgICAgIHRoaXMuX2NvcmUgPSBfY29yZTtcbiAgICAgICAgdGhpcy5wcm9taXNlc0FwaSA9IG5ldyBGc1Byb21pc2VzXzEuRnNQcm9taXNlcyh0aGlzLCBGaWxlSGFuZGxlXzEuRmlsZUhhbmRsZSk7XG4gICAgICAgIHRoaXMub3BlblN5bmMgPSAocGF0aCwgZmxhZ3MsIG1vZGUgPSA0MzggLyogTU9ERS5ERUZBVUxUICovKSA9PiB7XG4gICAgICAgICAgICAvLyBWYWxpZGF0ZSAoMSkgbW9kZTsgKDIpIHBhdGg7ICgzKSBmbGFncyAtIGluIHRoYXQgb3JkZXIuXG4gICAgICAgICAgICBjb25zdCBtb2RlTnVtID0gKDAsIHV0aWxfMi5tb2RlVG9OdW1iZXIpKG1vZGUpO1xuICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGZsYWdzTnVtID0gKDAsIHV0aWxfMi5mbGFnc1RvTnVtYmVyKShmbGFncyk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29yZS5vcGVuKGZpbGVOYW1lLCBmbGFnc051bSwgbW9kZU51bSwgIShmbGFnc051bSAmIE9fU1lNTElOSykpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9wZW4gPSAocGF0aCwgZmxhZ3MsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGxldCBtb2RlID0gYTtcbiAgICAgICAgICAgIGxldCBjYWxsYmFjayA9IGI7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBtb2RlID0gNDM4IC8qIE1PREUuREVGQVVMVCAqLztcbiAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtb2RlID0gbW9kZSB8fCA0MzggLyogTU9ERS5ERUZBVUxUICovO1xuICAgICAgICAgICAgY29uc3QgbW9kZU51bSA9ICgwLCB1dGlsXzIubW9kZVRvTnVtYmVyKShtb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgICAgICAgICBjb25zdCBmbGFnc051bSA9ICgwLCB1dGlsXzIuZmxhZ3NUb051bWJlcikoZmxhZ3MpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fY29yZS5vcGVuLCBbZmlsZU5hbWUsIGZsYWdzTnVtLCBtb2RlTnVtLCAhKGZsYWdzTnVtICYgT19TWU1MSU5LKV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jbG9zZVN5bmMgPSAoZmQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUuY2xvc2UoZmQpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNsb3NlID0gKGZkLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgKDAsIHV0aWxfMy52YWxpZGF0ZUZkKShmZCk7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5fY29yZS5nZXRGaWxlQnlGZE9yVGhyb3coZmQsICdjbG9zZScpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fY29yZS5jbG9zZSwgW2ZpbGUuZmRdLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVhZFN5bmMgPSAoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSA9PiB7XG4gICAgICAgICAgICAoMCwgdXRpbF8zLnZhbGlkYXRlRmQpKGZkKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb3JlLnJlYWQoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZWFkID0gKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgICgwLCB1dGlsXzIudmFsaWRhdGVDYWxsYmFjaykoY2FsbGJhY2spO1xuICAgICAgICAgICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIFRoaXMgYGlmYCBicmFuY2ggaXMgZnJvbSBOb2RlLmpzXG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBxdWV1ZU1pY3JvdGFza18xLmRlZmF1bHQpKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgMCwgYnVmZmVyKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVzID0gdGhpcy5fY29yZS5yZWFkKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGJ5dGVzLCBidWZmZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVhZHYgPSAoZmQsIGJ1ZmZlcnMsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IGE7XG4gICAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBiO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBhID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgICAgIFtwb3NpdGlvbiwgY2FsbGJhY2tdID0gW251bGwsIGFdO1xuICAgICAgICAgICAgKDAsIHV0aWxfMi52YWxpZGF0ZUNhbGxiYWNrKShjYWxsYmFjayk7XG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHRoaXMuX2NvcmUucmVhZHYoZmQsIGJ1ZmZlcnMsIHBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgYnl0ZXMsIGJ1ZmZlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVhZHZTeW5jID0gKGZkLCBidWZmZXJzLCBwb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgKDAsIHV0aWxfMy52YWxpZGF0ZUZkKShmZCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29yZS5yZWFkdihmZCwgYnVmZmVycywgcG9zaXRpb24gPz8gbnVsbCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX3JlYWRmaWxlID0gKGlkLCBmbGFnc051bSwgZW5jb2RpbmcpID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgICAgICBjb25zdCBpc1VzZXJGZCA9IHR5cGVvZiBpZCA9PT0gJ251bWJlcic7XG4gICAgICAgICAgICBjb25zdCB1c2VyT3duc0ZkID0gaXNVc2VyRmQgJiYgKDAsIHV0aWxfMy5pc0ZkKShpZCk7XG4gICAgICAgICAgICBsZXQgZmQ7XG4gICAgICAgICAgICBpZiAodXNlck93bnNGZClcbiAgICAgICAgICAgICAgICBmZCA9IGlkO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShpZCk7XG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgb3JpZ2luYWwgcGF0aCBoYWQgdHJhaWxpbmcgc2xhc2ggKGluZGljYXRlcyBkaXJlY3RvcnkgaW50ZW50KVxuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsUGF0aCA9IFN0cmluZyhpZCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzVHJhaWxpbmdTbGFzaCA9IG9yaWdpbmFsUGF0aC5sZW5ndGggPiAxICYmIG9yaWdpbmFsUGF0aC5lbmRzV2l0aCgnLycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLl9jb3JlLmdldFJlc29sdmVkTGlua09yVGhyb3coZmlsZW5hbWUsICdvcGVuJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGxpbmsuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgICAgIGlmIChub2RlLmlzRGlyZWN0b3J5KCkpXG4gICAgICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzIuY3JlYXRlRXJyb3IpKFwiRUlTRElSXCIgLyogRVJST1JfQ09ERS5FSVNESVIgKi8sICdvcGVuJywgbGluay5nZXRQYXRoKCkpO1xuICAgICAgICAgICAgICAgIC8vIElmIHBhdGggaGFkIHRyYWlsaW5nIHNsYXNoIGJ1dCByZXNvbHZlZCB0byBhIGZpbGUsIHRocm93IEVOT1RESVJcbiAgICAgICAgICAgICAgICBpZiAoaGFzVHJhaWxpbmdTbGFzaCAmJiBub2RlLmlzRmlsZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzIuY3JlYXRlRXJyb3IpKFwiRU5PVERJUlwiIC8qIEVSUk9SX0NPREUuRU5PVERJUiAqLywgJ29wZW4nLCBvcmlnaW5hbFBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmZCA9IHRoaXMub3BlblN5bmMoaWQsIGZsYWdzTnVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gKDAsIHV0aWxfMi5idWZmZXJUb0VuY29kaW5nKSh0aGlzLl9jb3JlLmdldEZpbGVCeUZkT3JUaHJvdyhmZCkuZ2V0QnVmZmVyKCksIGVuY29kaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIGlmICghdXNlck93bnNGZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlU3luYyhmZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZWFkRmlsZVN5bmMgPSAoZmlsZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3B0cyA9ICgwLCBvcHRpb25zXzEuZ2V0UmVhZEZpbGVPcHRpb25zKShvcHRpb25zKTtcbiAgICAgICAgICAgIGNvbnN0IGZsYWdzTnVtID0gKDAsIHV0aWxfMi5mbGFnc1RvTnVtYmVyKShvcHRzLmZsYWcpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRmaWxlKGZpbGUsIGZsYWdzTnVtLCBvcHRzLmVuY29kaW5nKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZWFkRmlsZSA9IChpZCwgYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgW29wdHMsIGNhbGxiYWNrXSA9ICgwLCBvcHRpb25zXzEub3B0c0FuZENiR2VuZXJhdG9yKShvcHRpb25zXzEuZ2V0UmVhZEZpbGVPcHRpb25zKShhLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IGZsYWdzTnVtID0gKDAsIHV0aWxfMi5mbGFnc1RvTnVtYmVyKShvcHRzLmZsYWcpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fcmVhZGZpbGUsIFtpZCwgZmxhZ3NOdW0sIG9wdHMuZW5jb2RpbmddLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMud3JpdGVTeW5jID0gKGZkLCBhLCBiLCBjLCBkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbLCBidWYsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbl0gPSAoMCwgdXRpbF8yLmdldFdyaXRlU3luY0FyZ3MpKGZkLCBhLCBiLCBjLCBkKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl93cml0ZShmZCwgYnVmLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLndyaXRlID0gKGZkLCBhLCBiLCBjLCBkLCBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbLCBhc1N0ciwgYnVmLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24sIGNiXSA9ICgwLCB1dGlsXzIuZ2V0V3JpdGVBcmdzKShmZCwgYSwgYiwgYywgZCwgZSk7XG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHRoaXMuX3dyaXRlKGZkLCBidWYsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYXNTdHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNiKG51bGwsIGJ5dGVzLCBidWYpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2IobnVsbCwgYnl0ZXMsIGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy53cml0ZXYgPSAoZmQsIGJ1ZmZlcnMsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IGE7XG4gICAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBiO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBhID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgICAgIFtwb3NpdGlvbiwgY2FsbGJhY2tdID0gW251bGwsIGFdO1xuICAgICAgICAgICAgKDAsIHV0aWxfMi52YWxpZGF0ZUNhbGxiYWNrKShjYWxsYmFjayk7XG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHRoaXMud3JpdGV2QmFzZShmZCwgYnVmZmVycywgcG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCBieXRlcywgYnVmZmVycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy53cml0ZXZTeW5jID0gKGZkLCBidWZmZXJzLCBwb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgKDAsIHV0aWxfMy52YWxpZGF0ZUZkKShmZCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZXZCYXNlKGZkLCBidWZmZXJzLCBwb3NpdGlvbiA/PyBudWxsKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy53cml0ZUZpbGVTeW5jID0gKGlkLCBkYXRhLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcHRzID0gKDAsIG9wdGlvbnNfMS5nZXRXcml0ZUZpbGVPcHRpb25zKShvcHRpb25zKTtcbiAgICAgICAgICAgIGNvbnN0IGZsYWdzTnVtID0gKDAsIHV0aWxfMi5mbGFnc1RvTnVtYmVyKShvcHRzLmZsYWcpO1xuICAgICAgICAgICAgY29uc3QgbW9kZU51bSA9ICgwLCB1dGlsXzIubW9kZVRvTnVtYmVyKShvcHRzLm1vZGUpO1xuICAgICAgICAgICAgY29uc3QgYnVmID0gKDAsIHV0aWxfMy5kYXRhVG9CdWZmZXIpKGRhdGEsIG9wdHMuZW5jb2RpbmcpO1xuICAgICAgICAgICAgdGhpcy5fY29yZS53cml0ZUZpbGUoaWQsIGJ1ZiwgZmxhZ3NOdW0sIG1vZGVOdW0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLndyaXRlRmlsZSA9IChpZCwgZGF0YSwgYSwgYikgPT4ge1xuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSBhO1xuICAgICAgICAgICAgbGV0IGNhbGxiYWNrID0gYjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgICBbb3B0aW9ucywgY2FsbGJhY2tdID0gW29wdGlvbnNfMS53cml0ZUZpbGVEZWZhdWx0cywgYV07XG4gICAgICAgICAgICBjb25zdCBjYiA9ICgwLCB1dGlsXzIudmFsaWRhdGVDYWxsYmFjaykoY2FsbGJhY2spO1xuICAgICAgICAgICAgY29uc3Qgb3B0cyA9ICgwLCBvcHRpb25zXzEuZ2V0V3JpdGVGaWxlT3B0aW9ucykob3B0aW9ucyk7XG4gICAgICAgICAgICBjb25zdCBmbGFnc051bSA9ICgwLCB1dGlsXzIuZmxhZ3NUb051bWJlcikob3B0cy5mbGFnKTtcbiAgICAgICAgICAgIGNvbnN0IG1vZGVOdW0gPSAoMCwgdXRpbF8yLm1vZGVUb051bWJlcikob3B0cy5tb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZiA9ICgwLCB1dGlsXzMuZGF0YVRvQnVmZmVyKShkYXRhLCBvcHRzLmVuY29kaW5nKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2NvcmUud3JpdGVGaWxlLCBbaWQsIGJ1ZiwgZmxhZ3NOdW0sIG1vZGVOdW1dLCBjYik7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY29weUZpbGVTeW5jID0gKHNyYywgZGVzdCwgZmxhZ3MpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNyY0ZpbGVuYW1lID0gKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkoc3JjKTtcbiAgICAgICAgICAgIGNvbnN0IGRlc3RGaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKGRlc3QpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvcHlGaWxlKHNyY0ZpbGVuYW1lLCBkZXN0RmlsZW5hbWUsIChmbGFncyB8fCAwKSB8IDApO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvcHlGaWxlID0gKHNyYywgZGVzdCwgYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3JjRmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShzcmMpO1xuICAgICAgICAgICAgY29uc3QgZGVzdEZpbGVuYW1lID0gKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkoZGVzdCk7XG4gICAgICAgICAgICBsZXQgZmxhZ3M7XG4gICAgICAgICAgICBsZXQgY2FsbGJhY2s7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICAgICAgW2ZsYWdzLCBjYWxsYmFja10gPSBbMCwgYV07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgW2ZsYWdzLCBjYWxsYmFja10gPSBbYSwgYl07XG4gICAgICAgICAgICAoMCwgdXRpbF8yLnZhbGlkYXRlQ2FsbGJhY2spKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2NvcHlGaWxlLCBbc3JjRmlsZW5hbWUsIGRlc3RGaWxlbmFtZSwgZmxhZ3NdLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2NwID0gKHNyYywgZGVzdCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZmlsdGVyICYmICFvcHRpb25zLmZpbHRlcihzcmMsIGRlc3QpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IHNyY1N0YXQgPSBvcHRpb25zLmRlcmVmZXJlbmNlID8gdGhpcy5zdGF0U3luYyhzcmMpIDogdGhpcy5sc3RhdFN5bmMoc3JjKTtcbiAgICAgICAgICAgIGxldCBkZXN0U3RhdCA9IG51bGw7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGRlc3RTdGF0ID0gdGhpcy5sc3RhdFN5bmMoZGVzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlICE9PSAnRU5PRU5UJykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgc3JjIGFuZCBkZXN0IGFyZSB0aGUgc2FtZSAoYm90aCBleGlzdCBhbmQgaGF2ZSBzYW1lIGlub2RlKVxuICAgICAgICAgICAgaWYgKGRlc3RTdGF0ICYmIHNyY1N0YXQuaW5vID09PSBkZXN0U3RhdC5pbm8gJiYgc3JjU3RhdC5kZXYgPT09IGRlc3RTdGF0LmRldilcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8yLmNyZWF0ZUVycm9yKShcIkVJTlZBTFwiIC8qIEVSUk9SX0NPREUuRUlOVkFMICovLCAnY3AnLCBzcmMsIGRlc3QpO1xuICAgICAgICAgICAgLy8gQ2hlY2sgdHlwZSBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICBpZiAoZGVzdFN0YXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3JjU3RhdC5pc0RpcmVjdG9yeSgpICYmICFkZXN0U3RhdC5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8yLmNyZWF0ZUVycm9yKShcIkVJU0RJUlwiIC8qIEVSUk9SX0NPREUuRUlTRElSICovLCAnY3AnLCBzcmMsIGRlc3QpO1xuICAgICAgICAgICAgICAgIGlmICghc3JjU3RhdC5pc0RpcmVjdG9yeSgpICYmIGRlc3RTdGF0LmlzRGlyZWN0b3J5KCkpXG4gICAgICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzIuY3JlYXRlRXJyb3IpKFwiRU5PVERJUlwiIC8qIEVSUk9SX0NPREUuRU5PVERJUiAqLywgJ2NwJywgc3JjLCBkZXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRyeWluZyB0byBjb3B5IGRpcmVjdG9yeSB0byBzdWJkaXJlY3Rvcnkgb2YgaXRzZWxmXG4gICAgICAgICAgICBpZiAoc3JjU3RhdC5pc0RpcmVjdG9yeSgpICYmIHRoaXMuaXNTcmNTdWJkaXIoc3JjLCBkZXN0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8yLmNyZWF0ZUVycm9yKShcIkVJTlZBTFwiIC8qIEVSUk9SX0NPREUuRUlOVkFMICovLCAnY3AnLCBzcmMsIGRlc3QpO1xuICAgICAgICAgICAgRU5EVVJFX1BBUkVOVF9ESVJfRVhJU1RTOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gcGF0aERpcm5hbWUoZGVzdCk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmV4aXN0c1N5bmMocGFyZW50KSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ta2RpclN5bmMocGFyZW50LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEhhbmRsZSBkaWZmZXJlbnQgZmlsZSB0eXBlc1xuICAgICAgICAgICAgaWYgKHNyY1N0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5yZWN1cnNpdmUpXG4gICAgICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzIuY3JlYXRlRXJyb3IpKFwiRUlTRElSXCIgLyogRVJST1JfQ09ERS5FSVNESVIgKi8sICdjcCcsIHNyYyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jcERpclN5bmMoc3JjU3RhdCwgZGVzdFN0YXQsIHNyYywgZGVzdCwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzcmNTdGF0LmlzRmlsZSgpIHx8IHNyY1N0YXQuaXNDaGFyYWN0ZXJEZXZpY2UoKSB8fCBzcmNTdGF0LmlzQmxvY2tEZXZpY2UoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3BGaWxlU3luYyhzcmNTdGF0LCBkZXN0U3RhdCwgc3JjLCBkZXN0LCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNyY1N0YXQuaXNTeW1ib2xpY0xpbmsoKSAmJiAhb3B0aW9ucy5kZXJlZmVyZW5jZSkge1xuICAgICAgICAgICAgICAgIC8vIE9ubHkgaGFuZGxlIGFzIHN5bWxpbmsgaWYgbm90IGRlcmVmZXJlbmNpbmdcbiAgICAgICAgICAgICAgICB0aGlzLmNwU3ltbGlua1N5bmMoZGVzdFN0YXQsIHNyYywgZGVzdCwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8yLmNyZWF0ZUVycm9yKShcIkVJTlZBTFwiIC8qIEVSUk9SX0NPREUuRUlOVkFMICovLCAnY3AnLCBzcmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmxpbmtTeW5jID0gKGV4aXN0aW5nUGF0aCwgbmV3UGF0aCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdQYXRoRmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShleGlzdGluZ1BhdGgpO1xuICAgICAgICAgICAgY29uc3QgbmV3UGF0aEZpbGVuYW1lID0gKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkobmV3UGF0aCk7XG4gICAgICAgICAgICB0aGlzLl9jb3JlLmxpbmsoZXhpc3RpbmdQYXRoRmlsZW5hbWUsIG5ld1BhdGhGaWxlbmFtZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubGluayA9IChleGlzdGluZ1BhdGgsIG5ld1BhdGgsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ1BhdGhGaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKGV4aXN0aW5nUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBuZXdQYXRoRmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShuZXdQYXRoKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2NvcmUubGluaywgW2V4aXN0aW5nUGF0aEZpbGVuYW1lLCBuZXdQYXRoRmlsZW5hbWVdLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudW5saW5rU3luYyA9IChwYXRoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgdGhpcy5fY29yZS51bmxpbmsoZmlsZW5hbWUpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnVubGluayA9IChwYXRoLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2NvcmUudW5saW5rLCBbZmlsZW5hbWVdLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBgdHlwZWAgYXJndW1lbnQgd29ya3Mgb25seSBvbiBXaW5kb3dzLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0XG4gICAgICAgICAqIEBwYXJhbSBwYXRoXG4gICAgICAgICAqIEBwYXJhbSB0eXBlXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnN5bWxpbmtTeW5jID0gKHRhcmdldCwgcGF0aCwgdHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0RmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKSh0YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgcGF0aEZpbGVuYW1lID0gKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgICAgICAgICB0aGlzLl9jb3JlLnN5bWxpbmsodGFyZ2V0RmlsZW5hbWUsIHBhdGhGaWxlbmFtZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc3ltbGluayA9ICh0YXJnZXQsIHBhdGgsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKDAsIHV0aWxfMi52YWxpZGF0ZUNhbGxiYWNrKSh0eXBlb2YgYSA9PT0gJ2Z1bmN0aW9uJyA/IGEgOiBiKTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEZpbGVuYW1lID0gKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkodGFyZ2V0KTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGhGaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fY29yZS5zeW1saW5rLCBbdGFyZ2V0RmlsZW5hbWUsIHBhdGhGaWxlbmFtZV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fbHN0YXQgPSAoZmlsZW5hbWUsIGJpZ2ludCA9IGZhbHNlLCB0aHJvd0lmTm9FbnRyeSA9IGZhbHNlKSA9PiB7XG4gICAgICAgICAgICBsZXQgbGluaztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGluayA9IHRoaXMuX2NvcmUuZ2V0TGlua09yVGhyb3coZmlsZW5hbWUsICdsc3RhdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSA9PT0gXCJFTk9FTlRcIiAvKiBFUlJPUl9DT0RFLkVOT0VOVCAqLyAmJiAhdGhyb3dJZk5vRW50cnkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gU3RhdHNfMS5kZWZhdWx0LmJ1aWxkKGxpbmsuZ2V0Tm9kZSgpLCBiaWdpbnQpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmxzdGF0U3luYyA9IChwYXRoLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHRocm93SWZOb0VudHJ5ID0gdHJ1ZSwgYmlnaW50ID0gZmFsc2UgfSA9ICgwLCBvcHRpb25zXzEuZ2V0U3RhdE9wdGlvbnMpKG9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xzdGF0KCgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpLCBiaWdpbnQsIHRocm93SWZOb0VudHJ5KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZW5hbWVTeW5jID0gKG9sZFBhdGgsIG5ld1BhdGgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9sZFBhdGhGaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKG9sZFBhdGgpO1xuICAgICAgICAgICAgY29uc3QgbmV3UGF0aEZpbGVuYW1lID0gKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkobmV3UGF0aCk7XG4gICAgICAgICAgICB0aGlzLl9jb3JlLnJlbmFtZShvbGRQYXRoRmlsZW5hbWUsIG5ld1BhdGhGaWxlbmFtZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVuYW1lID0gKG9sZFBhdGgsIG5ld1BhdGgsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvbGRQYXRoRmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShvbGRQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1BhdGhGaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKG5ld1BhdGgpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fY29yZS5yZW5hbWUsIFtvbGRQYXRoRmlsZW5hbWUsIG5ld1BhdGhGaWxlbmFtZV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5leGlzdHNTeW5jID0gKHBhdGgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V4aXN0cygoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmV4aXN0cyA9IChwYXRoLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoY29uc3RhbnRzXzIuRVJSU1RSLkNCKTtcbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2V4aXN0cyhmaWxlbmFtZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hY2Nlc3NTeW5jID0gKHBhdGgsIG1vZGUgPSBGX09LKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgbW9kZSA9IG1vZGUgfCAwO1xuICAgICAgICAgICAgdGhpcy5fYWNjZXNzKGZpbGVuYW1lLCBtb2RlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hY2Nlc3MgPSAocGF0aCwgYSwgYikgPT4ge1xuICAgICAgICAgICAgbGV0IG1vZGUgPSBGX09LO1xuICAgICAgICAgICAgbGV0IGNhbGxiYWNrO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBhICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgICAgIFttb2RlLCBjYWxsYmFja10gPSBbYSB8IDAsICgwLCB1dGlsXzIudmFsaWRhdGVDYWxsYmFjaykoYildO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gYTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9hY2Nlc3MsIFtmaWxlbmFtZSwgbW9kZV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hcHBlbmRGaWxlU3luYyA9IChpZCwgZGF0YSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3B0cyA9ICgwLCBvcHRpb25zXzEuZ2V0QXBwZW5kRmlsZU9wdHMpKG9wdGlvbnMpO1xuICAgICAgICAgICAgLy8gRm9yY2UgYXBwZW5kIGJlaGF2aW9yIHdoZW4gdXNpbmcgYSBzdXBwbGllZCBmaWxlIGRlc2NyaXB0b3IuXG4gICAgICAgICAgICBpZiAoIW9wdHMuZmxhZyB8fCAoMCwgdXRpbF8zLmlzRmQpKGlkKSlcbiAgICAgICAgICAgICAgICBvcHRzLmZsYWcgPSAnYSc7XG4gICAgICAgICAgICB0aGlzLndyaXRlRmlsZVN5bmMoaWQsIGRhdGEsIG9wdHMpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFwcGVuZEZpbGUgPSAoaWQsIGRhdGEsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFtvcHRzLCBjYWxsYmFja10gPSAoMCwgb3B0aW9uc18xLmdldEFwcGVuZEZpbGVPcHRzQW5kQ2IpKGEsIGIpO1xuICAgICAgICAgICAgLy8gRm9yY2UgYXBwZW5kIGJlaGF2aW9yIHdoZW4gdXNpbmcgYSBzdXBwbGllZCBmaWxlIGRlc2NyaXB0b3IuXG4gICAgICAgICAgICBpZiAoIW9wdHMuZmxhZyB8fCAoMCwgdXRpbF8zLmlzRmQpKGlkKSlcbiAgICAgICAgICAgICAgICBvcHRzLmZsYWcgPSAnYSc7XG4gICAgICAgICAgICB0aGlzLndyaXRlRmlsZShpZCwgZGF0YSwgb3B0cywgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9yZWFkZGlyID0gKGZpbGVuYW1lLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGVwcyA9ICgwLCB1dGlsXzMuZmlsZW5hbWVUb1N0ZXBzKShmaWxlbmFtZSk7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gdGhpcy5fY29yZS5nZXRSZXNvbHZlZExpbmtPclRocm93KGZpbGVuYW1lLCAnc2NhbmRpcicpO1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGxpbmsuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgaWYgKCFub2RlLmlzRGlyZWN0b3J5KCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMi5jcmVhdGVFcnJvcikoXCJFTk9URElSXCIgLyogRVJST1JfQ09ERS5FTk9URElSICovLCAnc2NhbmRpcicsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIC8vIENoZWNrIHdlIGhhdmUgcGVybWlzc2lvbnNcbiAgICAgICAgICAgIGlmICghbm9kZS5jYW5SZWFkKCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMi5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ3NjYW5kaXInLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBjb25zdCBsaXN0ID0gW107IC8vIG91dHB1dCBsaXN0XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgbGluay5jaGlsZHJlbi5rZXlzKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGxpbmsuZ2V0Q2hpbGQobmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFjaGlsZCB8fCBuYW1lID09PSAnLicgfHwgbmFtZSA9PT0gJy4uJylcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgbGlzdC5wdXNoKERpcmVudF8xLmRlZmF1bHQuYnVpbGQoY2hpbGQsIG9wdGlvbnMuZW5jb2RpbmcpKTtcbiAgICAgICAgICAgICAgICAvLyByZWN1cnNpb25cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5yZWN1cnNpdmUgJiYgY2hpbGQuY2hpbGRyZW4uc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWN1cnNlT3B0aW9ucyA9IHsgLi4ub3B0aW9ucywgcmVjdXJzaXZlOiB0cnVlLCB3aXRoRmlsZVR5cGVzOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkTGlzdCA9IHRoaXMuX3JlYWRkaXIoY2hpbGQuZ2V0UGF0aCgpLCByZWN1cnNlT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaCguLi5jaGlsZExpc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdXRpbF8zLmlzV2luICYmIG9wdGlvbnMuZW5jb2RpbmcgIT09ICdidWZmZXInKVxuICAgICAgICAgICAgICAgIGxpc3Quc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYS5uYW1lIDwgYi5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYS5uYW1lID4gYi5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMud2l0aEZpbGVUeXBlcylcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIGxldCBmaWxlbmFtZTIgPSBmaWxlbmFtZTtcbiAgICAgICAgICAgIGlmICh1dGlsXzMuaXNXaW4pXG4gICAgICAgICAgICAgICAgZmlsZW5hbWUyID0gZmlsZW5hbWUyLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgICAgICAgICAgIHJldHVybiBsaXN0Lm1hcChkaXJlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnJlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZnVsbFBhdGggPSBwYXRoSm9pbihkaXJlbnQucGFyZW50UGF0aCwgZGlyZW50Lm5hbWUudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh1dGlsXzMuaXNXaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxQYXRoID0gZnVsbFBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmdWxsUGF0aC5yZXBsYWNlKGZpbGVuYW1lMiArIHBhdGhfMS5wb3NpeC5zZXAsICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpcmVudC5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVhZGRpclN5bmMgPSAocGF0aCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3B0cyA9ICgwLCBvcHRpb25zXzEuZ2V0UmVhZGRpck9wdGlvbnMpKG9wdGlvbnMpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZWFkZGlyKGZpbGVuYW1lLCBvcHRzKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZWFkZGlyID0gKHBhdGgsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFtvcHRpb25zLCBjYWxsYmFja10gPSAoMCwgb3B0aW9uc18xLmdldFJlYWRkaXJPcHRzQW5kQ2IpKGEsIGIpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX3JlYWRkaXIsIFtmaWxlbmFtZSwgb3B0aW9uc10sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fcmVhZGxpbmsgPSAoZmlsZW5hbWUsIGVuY29kaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gdGhpcy5fY29yZS5nZXRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ3JlYWRsaW5rJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbGluay5nZXROb2RlKCk7XG4gICAgICAgICAgICBpZiAoIW5vZGUuaXNTeW1saW5rKCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMi5jcmVhdGVFcnJvcikoXCJFSU5WQUxcIiAvKiBFUlJPUl9DT0RFLkVJTlZBTCAqLywgJ3JlYWRsaW5rJywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuICgwLCBlbmNvZGluZ18xLnN0clRvRW5jb2RpbmcpKG5vZGUuc3ltbGluaywgZW5jb2RpbmcpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlYWRsaW5rU3luYyA9IChwYXRoLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcHRzID0gKDAsIG9wdGlvbnNfMS5nZXREZWZhdWx0T3B0cykob3B0aW9ucyk7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRsaW5rKGZpbGVuYW1lLCBvcHRzLmVuY29kaW5nKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZWFkbGluayA9IChwYXRoLCBhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbb3B0cywgY2FsbGJhY2tdID0gKDAsIG9wdGlvbnNfMS5nZXREZWZhdWx0T3B0c0FuZENiKShhLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9yZWFkbGluaywgW2ZpbGVuYW1lLCBvcHRzLmVuY29kaW5nXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9mc3luYyA9IChmZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY29yZS5nZXRGaWxlQnlGZE9yVGhyb3coZmQsICdmc3luYycpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZzeW5jU3luYyA9IChmZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZnN5bmMoZmQpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZzeW5jID0gKGZkLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fZnN5bmMsIFtmZF0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fZmRhdGFzeW5jID0gKGZkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb3JlLmdldEZpbGVCeUZkT3JUaHJvdyhmZCwgJ2ZkYXRhc3luYycpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZkYXRhc3luY1N5bmMgPSAoZmQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2ZkYXRhc3luYyhmZCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZmRhdGFzeW5jID0gKGZkLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fZmRhdGFzeW5jLCBbZmRdLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2Z0cnVuY2F0ZSA9IChmZCwgbGVuKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5fY29yZS5nZXRGaWxlQnlGZE9yVGhyb3coZmQsICdmdHJ1bmNhdGUnKTtcbiAgICAgICAgICAgIGZpbGUudHJ1bmNhdGUobGVuKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mdHJ1bmNhdGVTeW5jID0gKGZkLCBsZW4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Z0cnVuY2F0ZShmZCwgbGVuKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mdHJ1bmNhdGUgPSAoZmQsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHR5cGVvZiBhID09PSAnbnVtYmVyJyA/IGEgOiAwO1xuICAgICAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAoMCwgdXRpbF8yLnZhbGlkYXRlQ2FsbGJhY2spKHR5cGVvZiBhID09PSAnbnVtYmVyJyA/IGIgOiBhKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2Z0cnVuY2F0ZSwgW2ZkLCBsZW5dLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX3RydW5jYXRlID0gKHBhdGgsIGxlbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmQgPSB0aGlzLm9wZW5TeW5jKHBhdGgsICdyKycpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZ0cnVuY2F0ZVN5bmMoZmQsIGxlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlU3luYyhmZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBgaWRgIHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvciBhIHBhdGguIGBpZGAgYXMgZmlsZSBkZXNjcmlwdG9yIHdpbGxcbiAgICAgICAgICogbm90IGJlIHN1cHBvcnRlZCBzb29uLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy50cnVuY2F0ZVN5bmMgPSAoaWQsIGxlbikgPT4ge1xuICAgICAgICAgICAgaWYgKCgwLCB1dGlsXzMuaXNGZCkoaWQpKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZ0cnVuY2F0ZVN5bmMoaWQsIGxlbik7XG4gICAgICAgICAgICB0aGlzLl90cnVuY2F0ZShpZCwgbGVuKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50cnVuY2F0ZSA9IChpZCwgYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGVuID0gdHlwZW9mIGEgPT09ICdudW1iZXInID8gYSA6IDA7XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9ICgwLCB1dGlsXzIudmFsaWRhdGVDYWxsYmFjaykodHlwZW9mIGEgPT09ICdudW1iZXInID8gYiA6IGEpO1xuICAgICAgICAgICAgaWYgKCgwLCB1dGlsXzMuaXNGZCkoaWQpKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZ0cnVuY2F0ZShpZCwgbGVuLCBjYWxsYmFjayk7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl90cnVuY2F0ZSwgW2lkLCBsZW5dLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2Z1dGltZXMgPSAoZmQsIGF0aW1lLCBtdGltZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuX2NvcmUuZ2V0RmlsZUJ5RmRPclRocm93KGZkLCAnZnV0aW1lcycpO1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGZpbGUubm9kZTtcbiAgICAgICAgICAgIG5vZGUuYXRpbWUgPSBuZXcgRGF0ZShhdGltZSAqIDEwMDApO1xuICAgICAgICAgICAgbm9kZS5tdGltZSA9IG5ldyBEYXRlKG10aW1lICogMTAwMCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZnV0aW1lc1N5bmMgPSAoZmQsIGF0aW1lLCBtdGltZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZnV0aW1lcyhmZCwgdG9Vbml4VGltZXN0YW1wKGF0aW1lKSwgdG9Vbml4VGltZXN0YW1wKG10aW1lKSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZnV0aW1lcyA9IChmZCwgYXRpbWUsIG10aW1lLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fZnV0aW1lcywgW2ZkLCB0b1VuaXhUaW1lc3RhbXAoYXRpbWUpLCB0b1VuaXhUaW1lc3RhbXAobXRpbWUpXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl91dGltZXMgPSAoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSwgZm9sbG93U3ltbGlua3MgPSB0cnVlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb3JlID0gdGhpcy5fY29yZTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBmb2xsb3dTeW1saW5rc1xuICAgICAgICAgICAgICAgID8gY29yZS5nZXRSZXNvbHZlZExpbmtPclRocm93KGZpbGVuYW1lLCAndXRpbWVzJylcbiAgICAgICAgICAgICAgICA6IGNvcmUuZ2V0TGlua09yVGhyb3coZmlsZW5hbWUsICdsdXRpbWVzJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbGluay5nZXROb2RlKCk7XG4gICAgICAgICAgICBub2RlLmF0aW1lID0gbmV3IERhdGUoYXRpbWUgKiAxMDAwKTtcbiAgICAgICAgICAgIG5vZGUubXRpbWUgPSBuZXcgRGF0ZShtdGltZSAqIDEwMDApO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnV0aW1lc1N5bmMgPSAocGF0aCwgYXRpbWUsIG10aW1lKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91dGltZXMoKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCksIHRvVW5peFRpbWVzdGFtcChhdGltZSksIHRvVW5peFRpbWVzdGFtcChtdGltZSksIHRydWUpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnV0aW1lcyA9IChwYXRoLCBhdGltZSwgbXRpbWUsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl91dGltZXMsIFsoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgdG9Vbml4VGltZXN0YW1wKGF0aW1lKSwgdG9Vbml4VGltZXN0YW1wKG10aW1lKSwgdHJ1ZV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5sdXRpbWVzU3luYyA9IChwYXRoLCBhdGltZSwgbXRpbWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3V0aW1lcygoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgdG9Vbml4VGltZXN0YW1wKGF0aW1lKSwgdG9Vbml4VGltZXN0YW1wKG10aW1lKSwgZmFsc2UpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmx1dGltZXMgPSAocGF0aCwgYXRpbWUsIG10aW1lLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fdXRpbWVzLCBbKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCksIHRvVW5peFRpbWVzdGFtcChhdGltZSksIHRvVW5peFRpbWVzdGFtcChtdGltZSksIGZhbHNlXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm1rZGlyU3luYyA9IChwYXRoLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcHRzID0gKDAsIG9wdGlvbnNfMS5nZXRNa2Rpck9wdGlvbnMpKG9wdGlvbnMpO1xuICAgICAgICAgICAgY29uc3QgbW9kZU51bSA9ICgwLCB1dGlsXzIubW9kZVRvTnVtYmVyKShvcHRzLm1vZGUsIDBvNzc3KTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgICAgICAgICBpZiAob3B0cy5yZWN1cnNpdmUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvcmUubWtkaXJwKGZpbGVuYW1lLCBtb2RlTnVtKTtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUubWtkaXIoZmlsZW5hbWUsIG1vZGVOdW0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm1rZGlyID0gKHBhdGgsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wdHMgPSAoMCwgb3B0aW9uc18xLmdldE1rZGlyT3B0aW9ucykoYSk7XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9ICgwLCB1dGlsXzIudmFsaWRhdGVDYWxsYmFjaykodHlwZW9mIGEgPT09ICdmdW5jdGlvbicgPyBhIDogYik7XG4gICAgICAgICAgICBjb25zdCBtb2RlTnVtID0gKDAsIHV0aWxfMi5tb2RlVG9OdW1iZXIpKG9wdHMubW9kZSwgMG83NzcpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIGlmIChvcHRzLnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9jb3JlLm1rZGlycCwgW2ZpbGVuYW1lLCBtb2RlTnVtXSwgY2FsbGJhY2spO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2NvcmUubWtkaXIsIFtmaWxlbmFtZSwgbW9kZU51bV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fbWtkdGVtcCA9IChwcmVmaXgsIGVuY29kaW5nLCByZXRyeSA9IDUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gcHJlZml4ICsgKDAsIHV0aWxfMi5nZW5SbmRTdHI2KSgpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jb3JlLm1rZGlyKGZpbGVuYW1lLCA1MTEgLyogTU9ERS5ESVIgKi8pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgZW5jb2RpbmdfMS5zdHJUb0VuY29kaW5nKShmaWxlbmFtZSwgZW5jb2RpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSA9PT0gXCJFRVhJU1RcIiAvKiBFUlJPUl9DT0RFLkVFWElTVCAqLykge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmV0cnkgPiAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21rZHRlbXAocHJlZml4LCBlbmNvZGluZywgcmV0cnkgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0NvdWxkIG5vdCBjcmVhdGUgdGVtcCBkaXIuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm1rZHRlbXBTeW5jID0gKHByZWZpeCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBlbmNvZGluZyB9ID0gKDAsIG9wdGlvbnNfMS5nZXREZWZhdWx0T3B0cykob3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoIXByZWZpeCB8fCB0eXBlb2YgcHJlZml4ICE9PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmaWxlbmFtZSBwcmVmaXggaXMgcmVxdWlyZWQnKTtcbiAgICAgICAgICAgICgwLCB1dGlsXzIubnVsbENoZWNrKShwcmVmaXgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21rZHRlbXAocHJlZml4LCBlbmNvZGluZyk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubWtkdGVtcCA9IChwcmVmaXgsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFt7IGVuY29kaW5nIH0sIGNhbGxiYWNrXSA9ICgwLCBvcHRpb25zXzEuZ2V0RGVmYXVsdE9wdHNBbmRDYikoYSwgYik7XG4gICAgICAgICAgICBpZiAoIXByZWZpeCB8fCB0eXBlb2YgcHJlZml4ICE9PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmaWxlbmFtZSBwcmVmaXggaXMgcmVxdWlyZWQnKTtcbiAgICAgICAgICAgIGlmICghKDAsIHV0aWxfMi5udWxsQ2hlY2spKHByZWZpeCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fbWtkdGVtcCwgW3ByZWZpeCwgZW5jb2RpbmddLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucm1kaXJTeW5jID0gKHBhdGgsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wdHMgPSAoMCwgb3B0aW9uc18xLmdldFJtZGlyT3B0aW9ucykob3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLl9jb3JlLnJtZGlyKCgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpLCBvcHRzLnJlY3Vyc2l2ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucm1kaXIgPSAocGF0aCwgYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3B0cyA9ICgwLCBvcHRpb25zXzEuZ2V0Um1kaXJPcHRpb25zKShhKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKDAsIHV0aWxfMi52YWxpZGF0ZUNhbGxiYWNrKSh0eXBlb2YgYSA9PT0gJ2Z1bmN0aW9uJyA/IGEgOiBiKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2NvcmUucm1kaXIsIFsoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgb3B0cy5yZWN1cnNpdmVdLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucm1TeW5jID0gKHBhdGgsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUucm0oKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCksIG9wdGlvbnM/LmZvcmNlLCBvcHRpb25zPy5yZWN1cnNpdmUpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJtID0gKHBhdGgsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFtvcHRzLCBjYWxsYmFja10gPSAoMCwgb3B0aW9uc18xLmdldFJtT3B0c0FuZENiKShhLCBiKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2NvcmUucm0sIFsoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgb3B0cz8uZm9yY2UsIG9wdHM/LnJlY3Vyc2l2ZV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fZmNobW9kID0gKGZkLCBtb2RlTnVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5fY29yZS5nZXRGaWxlQnlGZE9yVGhyb3coZmQsICdmY2htb2QnKTtcbiAgICAgICAgICAgIGZpbGUuY2htb2QobW9kZU51bSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZmNobW9kU3luYyA9IChmZCwgbW9kZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZmNobW9kKGZkLCAoMCwgdXRpbF8yLm1vZGVUb051bWJlcikobW9kZSkpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZjaG1vZCA9IChmZCwgbW9kZSwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2ZjaG1vZCwgW2ZkLCAoMCwgdXRpbF8yLm1vZGVUb051bWJlcikobW9kZSldLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2NobW9kID0gKGZpbGVuYW1lLCBtb2RlTnVtLCBmb2xsb3dTeW1saW5rcyA9IHRydWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBmb2xsb3dTeW1saW5rc1xuICAgICAgICAgICAgICAgID8gdGhpcy5fY29yZS5nZXRSZXNvbHZlZExpbmtPclRocm93KGZpbGVuYW1lLCAnY2htb2QnKVxuICAgICAgICAgICAgICAgIDogdGhpcy5fY29yZS5nZXRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ2NobW9kJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbGluay5nZXROb2RlKCk7XG4gICAgICAgICAgICBub2RlLmNobW9kKG1vZGVOdW0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNobW9kU3luYyA9IChwYXRoLCBtb2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtb2RlTnVtID0gKDAsIHV0aWxfMi5tb2RlVG9OdW1iZXIpKG1vZGUpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIHRoaXMuX2NobW9kKGZpbGVuYW1lLCBtb2RlTnVtLCB0cnVlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jaG1vZCA9IChwYXRoLCBtb2RlLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9kZU51bSA9ICgwLCB1dGlsXzIubW9kZVRvTnVtYmVyKShtb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9jaG1vZCwgW2ZpbGVuYW1lLCBtb2RlTnVtXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9sY2htb2QgPSAoZmlsZW5hbWUsIG1vZGVOdW0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NobW9kKGZpbGVuYW1lLCBtb2RlTnVtLCBmYWxzZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubGNobW9kU3luYyA9IChwYXRoLCBtb2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtb2RlTnVtID0gKDAsIHV0aWxfMi5tb2RlVG9OdW1iZXIpKG1vZGUpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIHRoaXMuX2xjaG1vZChmaWxlbmFtZSwgbW9kZU51bSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubGNobW9kID0gKHBhdGgsIG1vZGUsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtb2RlTnVtID0gKDAsIHV0aWxfMi5tb2RlVG9OdW1iZXIpKG1vZGUpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2xjaG1vZCwgW2ZpbGVuYW1lLCBtb2RlTnVtXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9mY2hvd24gPSAoZmQsIHVpZCwgZ2lkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb3JlLmdldEZpbGVCeUZkT3JUaHJvdyhmZCwgJ2ZjaG93bicpLmNob3duKHVpZCwgZ2lkKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mY2hvd25TeW5jID0gKGZkLCB1aWQsIGdpZCkgPT4ge1xuICAgICAgICAgICAgdmFsaWRhdGVVaWQodWlkKTtcbiAgICAgICAgICAgIHZhbGlkYXRlR2lkKGdpZCk7XG4gICAgICAgICAgICB0aGlzLl9mY2hvd24oZmQsIHVpZCwgZ2lkKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mY2hvd24gPSAoZmQsIHVpZCwgZ2lkLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgdmFsaWRhdGVVaWQodWlkKTtcbiAgICAgICAgICAgIHZhbGlkYXRlR2lkKGdpZCk7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9mY2hvd24sIFtmZCwgdWlkLCBnaWRdLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2Nob3duID0gKGZpbGVuYW1lLCB1aWQsIGdpZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluayA9IHRoaXMuX2NvcmUuZ2V0UmVzb2x2ZWRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ2Nob3duJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbGluay5nZXROb2RlKCk7XG4gICAgICAgICAgICBub2RlLmNob3duKHVpZCwgZ2lkKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jaG93blN5bmMgPSAocGF0aCwgdWlkLCBnaWQpID0+IHtcbiAgICAgICAgICAgIHZhbGlkYXRlVWlkKHVpZCk7XG4gICAgICAgICAgICB2YWxpZGF0ZUdpZChnaWQpO1xuICAgICAgICAgICAgdGhpcy5fY2hvd24oKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCksIHVpZCwgZ2lkKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jaG93biA9IChwYXRoLCB1aWQsIGdpZCwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgIHZhbGlkYXRlVWlkKHVpZCk7XG4gICAgICAgICAgICB2YWxpZGF0ZUdpZChnaWQpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fY2hvd24sIFsoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgdWlkLCBnaWRdLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2xjaG93biA9IChmaWxlbmFtZSwgdWlkLCBnaWQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUuZ2V0TGlua09yVGhyb3coZmlsZW5hbWUsICdsY2hvd24nKS5nZXROb2RlKCkuY2hvd24odWlkLCBnaWQpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmxjaG93blN5bmMgPSAocGF0aCwgdWlkLCBnaWQpID0+IHtcbiAgICAgICAgICAgIHZhbGlkYXRlVWlkKHVpZCk7XG4gICAgICAgICAgICB2YWxpZGF0ZUdpZChnaWQpO1xuICAgICAgICAgICAgdGhpcy5fbGNob3duKCgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpLCB1aWQsIGdpZCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubGNob3duID0gKHBhdGgsIHVpZCwgZ2lkLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgdmFsaWRhdGVVaWQodWlkKTtcbiAgICAgICAgICAgIHZhbGlkYXRlR2lkKGdpZCk7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9sY2hvd24sIFsoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgdWlkLCBnaWRdLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc3RhdFdhdGNoZXJzID0ge307XG4gICAgICAgIHRoaXMuY3BTeW5jID0gKHNyYywgZGVzdCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3JjRmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShzcmMpO1xuICAgICAgICAgICAgY29uc3QgZGVzdEZpbGVuYW1lID0gKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkoZGVzdCk7XG4gICAgICAgICAgICBjb25zdCBvcHRzXyA9IHtcbiAgICAgICAgICAgICAgICBkZXJlZmVyZW5jZTogb3B0aW9ucz8uZGVyZWZlcmVuY2UgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgZXJyb3JPbkV4aXN0OiBvcHRpb25zPy5lcnJvck9uRXhpc3QgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBvcHRpb25zPy5maWx0ZXIsXG4gICAgICAgICAgICAgICAgZm9yY2U6IG9wdGlvbnM/LmZvcmNlID8/IHRydWUsXG4gICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucz8ubW9kZSA/PyAwLFxuICAgICAgICAgICAgICAgIHByZXNlcnZlVGltZXN0YW1wczogb3B0aW9ucz8ucHJlc2VydmVUaW1lc3RhbXBzID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZTogb3B0aW9ucz8ucmVjdXJzaXZlID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZlcmJhdGltU3ltbGlua3M6IG9wdGlvbnM/LnZlcmJhdGltU3ltbGlua3MgPz8gZmFsc2UsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NwKHNyY0ZpbGVuYW1lLCBkZXN0RmlsZW5hbWUsIG9wdHNfKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jcCA9IChzcmMsIGRlc3QsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNyY0ZpbGVuYW1lID0gKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkoc3JjKTtcbiAgICAgICAgICAgIGNvbnN0IGRlc3RGaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKGRlc3QpO1xuICAgICAgICAgICAgbGV0IG9wdGlvbnM7XG4gICAgICAgICAgICBsZXQgY2FsbGJhY2s7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICAgICAgW29wdGlvbnMsIGNhbGxiYWNrXSA9IFt7fSwgYV07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgW29wdGlvbnMsIGNhbGxiYWNrXSA9IFthIHx8IHt9LCBiXTtcbiAgICAgICAgICAgICgwLCB1dGlsXzIudmFsaWRhdGVDYWxsYmFjaykoY2FsbGJhY2spO1xuICAgICAgICAgICAgY29uc3Qgb3B0c18gPSB7XG4gICAgICAgICAgICAgICAgZGVyZWZlcmVuY2U6IG9wdGlvbnM/LmRlcmVmZXJlbmNlID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGVycm9yT25FeGlzdDogb3B0aW9ucz8uZXJyb3JPbkV4aXN0ID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogb3B0aW9ucz8uZmlsdGVyLFxuICAgICAgICAgICAgICAgIGZvcmNlOiBvcHRpb25zPy5mb3JjZSA/PyB0cnVlLFxuICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnM/Lm1vZGUgPz8gMCxcbiAgICAgICAgICAgICAgICBwcmVzZXJ2ZVRpbWVzdGFtcHM6IG9wdGlvbnM/LnByZXNlcnZlVGltZXN0YW1wcyA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICByZWN1cnNpdmU6IG9wdGlvbnM/LnJlY3Vyc2l2ZSA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICB2ZXJiYXRpbVN5bWxpbmtzOiBvcHRpb25zPy52ZXJiYXRpbVN5bWxpbmtzID8/IGZhbHNlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2NwLCBbc3JjRmlsZW5hbWUsIGRlc3RGaWxlbmFtZSwgb3B0c19dLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub3BlbkFzQmxvYiA9IGFzeW5jIChwYXRoLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgbGV0IGxpbms7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxpbmsgPSB0aGlzLl9jb3JlLmdldFJlc29sdmVkTGlua09yVGhyb3coZmlsZW5hbWUsICdvcGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IEVOT0VOVCB0byBOb2RlLmpzLWNvbXBhdGlibGUgZXJyb3IgZm9yIG9wZW5Bc0Jsb2JcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgJiYgdHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyAmJiBlcnJvci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlRXJyb3IgPSBuZXcgZXJyb3JzLlR5cGVFcnJvcignRVJSX0lOVkFMSURfQVJHX1ZBTFVFJyk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5vZGVFcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbGluay5nZXROb2RlKCk7XG4gICAgICAgICAgICAvLyBOb3RlOiBOb2RlLmpzIGFsbG93cyBvcGVuaW5nIGRpcmVjdG9yaWVzIGFzIGJsb2JzLCBzbyB3ZSBkb24ndCB0aHJvdyBFSVNESVJcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IG5vZGUuZ2V0QnVmZmVyKCk7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gb3B0aW9ucz8udHlwZSB8fCAnJztcbiAgICAgICAgICAgIHJldHVybiBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlIH0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmdsb2IgPSAocGF0dGVybiwgLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgY29uc3QgW29wdGlvbnMsIGNhbGxiYWNrXSA9IGFyZ3MubGVuZ3RoID09PSAxID8gW3t9LCBhcmdzWzBdXSA6IFthcmdzWzBdLCBhcmdzWzFdXTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2dsb2JTeW5jLCBbcGF0dGVybiwgb3B0aW9ucyB8fCB7fV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5nbG9iU3luYyA9IChwYXR0ZXJuLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nbG9iU3luYyhwYXR0ZXJuLCBvcHRpb25zKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fZ2xvYlN5bmMgPSAocGF0dGVybiwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGdsb2JTeW5jIH0gPSByZXF1aXJlKCcuL2dsb2InKTtcbiAgICAgICAgICAgIHJldHVybiBnbG9iU3luYyh0aGlzLCBwYXR0ZXJuLCBvcHRpb25zKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fb3BlbmRpciA9IChmaWxlbmFtZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluayA9IHRoaXMuX2NvcmUuZ2V0UmVzb2x2ZWRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ3NjYW5kaXInKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBsaW5rLmdldE5vZGUoKTtcbiAgICAgICAgICAgIGlmICghbm9kZS5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzIuY3JlYXRlRXJyb3IpKFwiRU5PVERJUlwiIC8qIEVSUk9SX0NPREUuRU5PVERJUiAqLywgJ3NjYW5kaXInLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERpcl8xLkRpcihsaW5rLCBvcHRpb25zKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vcGVuZGlyU3luYyA9IChwYXRoLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcHRzID0gKDAsIG9wdGlvbnNfMS5nZXRPcGVuZGlyT3B0aW9ucykob3B0aW9ucyk7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wZW5kaXIoZmlsZW5hbWUsIG9wdHMpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9wZW5kaXIgPSAocGF0aCwgYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgW29wdGlvbnMsIGNhbGxiYWNrXSA9ICgwLCBvcHRpb25zXzEuZ2V0T3BlbmRpck9wdHNBbmRDYikoYSwgYik7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fb3BlbmRpciwgW2ZpbGVuYW1lLCBvcHRpb25zXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpczsgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby10aGlzLWFzc2lnbm1lbnRcbiAgICAgICAgdGhpcy5TdGF0V2F0Y2hlciA9IGNsYXNzIGV4dGVuZHMgU3RhdFdhdGNoZXIge1xuICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICAgICAgc3VwZXIoc2VsZik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IF9SZWFkU3RyZWFtID0gRnNSZWFkU3RyZWFtO1xuICAgICAgICB0aGlzLlJlYWRTdHJlYW0gPSBjbGFzcyBleHRlbmRzIF9SZWFkU3RyZWFtIHtcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICBzdXBlcihzZWxmLCAuLi5hcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgX1dyaXRlU3RyZWFtID0gRnNXcml0ZVN0cmVhbTtcbiAgICAgICAgdGhpcy5Xcml0ZVN0cmVhbSA9IGNsYXNzIGV4dGVuZHMgX1dyaXRlU3RyZWFtIHtcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICBzdXBlcihzZWxmLCAuLi5hcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5GU1dhdGNoZXIgPSBjbGFzcyBleHRlbmRzIEZTV2F0Y2hlciB7XG4gICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgICAgICBzdXBlcihzZWxmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgX3JlYWxwYXRoID0gKGZpbGVuYW1lLCBlbmNvZGluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVhbExpbmsgPSB0aGlzLl9jb3JlLmdldFJlc29sdmVkTGlua09yVGhyb3coZmlsZW5hbWUsICdyZWFscGF0aCcpO1xuICAgICAgICAgICAgcmV0dXJuICgwLCBlbmNvZGluZ18xLnN0clRvRW5jb2RpbmcpKHJlYWxMaW5rLmdldFBhdGgoKSB8fCAnLycsIGVuY29kaW5nKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVhbHBhdGhJbXBsID0gKHBhdGgsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFtvcHRzLCBjYWxsYmFja10gPSAoMCwgb3B0aW9uc18xLmdldFJlYWxwYXRoT3B0c0FuZENiKShhLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGhGaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgc2VsZi53cmFwQXN5bmMoX3JlYWxwYXRoLCBbcGF0aEZpbGVuYW1lLCBvcHRzLmVuY29kaW5nXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZWFscGF0aFN5bmNJbXBsID0gKHBhdGgsIG9wdGlvbnMpID0+IF9yZWFscGF0aCgoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgKDAsIG9wdGlvbnNfMS5nZXRSZWFscGF0aE9wdGlvbnMpKG9wdGlvbnMpLmVuY29kaW5nKTtcbiAgICAgICAgdGhpcy5yZWFscGF0aCA9IHJlYWxwYXRoSW1wbDtcbiAgICAgICAgdGhpcy5yZWFscGF0aC5uYXRpdmUgPSByZWFscGF0aEltcGw7XG4gICAgICAgIHRoaXMucmVhbHBhdGhTeW5jID0gcmVhbHBhdGhTeW5jSW1wbDtcbiAgICAgICAgdGhpcy5yZWFscGF0aFN5bmMubmF0aXZlID0gcmVhbHBhdGhTeW5jSW1wbDtcbiAgICB9XG4gICAgd3JhcEFzeW5jKG1ldGhvZCwgYXJncywgY2FsbGJhY2spIHtcbiAgICAgICAgKDAsIHV0aWxfMi52YWxpZGF0ZUNhbGxiYWNrKShjYWxsYmFjayk7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gbWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHRvVHJlZShvcHRzID0geyBzZXBhcmF0b3I6IHBhdGhfMS5zZXAgfSkge1xuICAgICAgICByZXR1cm4gKDAsIHByaW50XzEudG9UcmVlU3luYykodGhpcywgb3B0cyk7XG4gICAgfVxuICAgIHJlc2V0KCkge1xuICAgICAgICB0aGlzLl9jb3JlLnJlc2V0KCk7XG4gICAgfVxuICAgIHRvSlNPTihwYXRocywganNvbiA9IHt9LCBpc1JlbGF0aXZlID0gZmFsc2UsIGFzQnVmZmVyID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvcmUudG9KU09OKHBhdGhzLCBqc29uLCBpc1JlbGF0aXZlLCBhc0J1ZmZlcik7XG4gICAgfVxuICAgIGZyb21KU09OKGpzb24sIGN3ZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29yZS5mcm9tSlNPTihqc29uLCBjd2QpO1xuICAgIH1cbiAgICBmcm9tTmVzdGVkSlNPTihqc29uLCBjd2QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvcmUuZnJvbU5lc3RlZEpTT04oanNvbiwgY3dkKTtcbiAgICB9XG4gICAgLy8gTGVnYWN5IGludGVyZmFjZVxuICAgIG1vdW50U3luYyhtb3VudHBvaW50LCBqc29uKSB7XG4gICAgICAgIHRoaXMuX2NvcmUuZnJvbUpTT04oanNvbiwgbW91bnRwb2ludCk7XG4gICAgfVxuICAgIF93cml0ZShmZCwgYnVmLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuX2NvcmUuZ2V0RmlsZUJ5RmRPclRocm93KGZkLCAnd3JpdGUnKTtcbiAgICAgICAgaWYgKGZpbGUubm9kZS5pc1N5bWxpbmsoKSkge1xuICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMi5jcmVhdGVFcnJvcikoXCJFQkFERlwiIC8qIEVSUk9SX0NPREUuRUJBREYgKi8sICd3cml0ZScsIGZpbGUubGluay5nZXRQYXRoKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxlLndyaXRlKGJ1Ziwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uID09PSAtMSB8fCB0eXBlb2YgcG9zaXRpb24gIT09ICdudW1iZXInID8gdW5kZWZpbmVkIDogcG9zaXRpb24pO1xuICAgIH1cbiAgICB3cml0ZXZCYXNlKGZkLCBidWZmZXJzLCBwb3NpdGlvbikge1xuICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5fY29yZS5nZXRGaWxlQnlGZE9yVGhyb3coZmQpO1xuICAgICAgICBsZXQgcCA9IHBvc2l0aW9uID8/IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHAgPT09IC0xKSB7XG4gICAgICAgICAgICBwID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGxldCBieXRlc1dyaXR0ZW4gPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlQnVmID0gYnVmZmVyXzEuQnVmZmVyLmZyb20oYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVzID0gZmlsZS53cml0ZShub2RlQnVmLCAwLCBub2RlQnVmLmJ5dGVMZW5ndGgsIHApO1xuICAgICAgICAgICAgcCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGJ5dGVzV3JpdHRlbiArPSBieXRlcztcbiAgICAgICAgICAgIGlmIChieXRlcyA8IG5vZGVCdWYuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnl0ZXNXcml0dGVuO1xuICAgIH1cbiAgICBfY29weUZpbGUoc3JjLCBkZXN0LCBmbGFncykge1xuICAgICAgICBjb25zdCBidWYgPSB0aGlzLnJlYWRGaWxlU3luYyhzcmMpO1xuICAgICAgICBpZiAoZmxhZ3MgJiBDT1BZRklMRV9FWENMICYmIHRoaXMuZXhpc3RzU3luYyhkZXN0KSlcbiAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzIuY3JlYXRlRXJyb3IpKFwiRUVYSVNUXCIgLyogRVJST1JfQ09ERS5FRVhJU1QgKi8sICdjb3B5RmlsZScsIHNyYywgZGVzdCk7XG4gICAgICAgIGlmIChmbGFncyAmIENPUFlGSUxFX0ZJQ0xPTkVfRk9SQ0UpXG4gICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8yLmNyZWF0ZUVycm9yKShcIkVOT1NZU1wiIC8qIEVSUk9SX0NPREUuRU5PU1lTICovLCAnY29weUZpbGUnLCBzcmMsIGRlc3QpO1xuICAgICAgICB0aGlzLl9jb3JlLndyaXRlRmlsZShkZXN0LCBidWYsIGNvbnN0YW50c18yLkZMQUdTLncsIDQzOCAvKiBNT0RFLkRFRkFVTFQgKi8pO1xuICAgIH1cbiAgICBpc1NyY1N1YmRpcihzcmMsIGRlc3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRTcmMgPSBwYXRoTm9ybWFsaXplKHNyYy5zdGFydHNXaXRoKCcvJykgPyBzcmMgOiAnLycgKyBzcmMpO1xuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZERlc3QgPSBwYXRoTm9ybWFsaXplKGRlc3Quc3RhcnRzV2l0aCgnLycpID8gZGVzdCA6ICcvJyArIGRlc3QpO1xuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRTcmMgPT09IG5vcm1hbGl6ZWREZXN0KVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyB1bmRlciBzcmMgYnkgdXNpbmcgcmVsYXRpdmUgcGF0aFxuICAgICAgICAgICAgLy8gSWYgZGVzdCBpcyB1bmRlciBzcmMsIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gc3JjIHRvIGRlc3Qgd29uJ3Qgc3RhcnQgd2l0aCAnLi4nXG4gICAgICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBwYXRoUmVsYXRpdmUobm9ybWFsaXplZFNyYywgbm9ybWFsaXplZERlc3QpO1xuICAgICAgICAgICAgLy8gSWYgcmVsYXRpdmUgcGF0aCBpcyBlbXB0eSBvciBkb2Vzbid0IHN0YXJ0IHdpdGggJy4uJywgZGVzdCBpcyB1bmRlciBzcmNcbiAgICAgICAgICAgIHJldHVybiByZWxhdGl2ZVBhdGggPT09ICcnIHx8ICghcmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoJy4uJykgJiYgISgwLCBwYXRoXzEuaXNBYnNvbHV0ZSkocmVsYXRpdmVQYXRoKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBJZiBwYXRoIG9wZXJhdGlvbnMgZmFpbCwgYXNzdW1lIGl0J3Mgc2FmZSAoZG9uJ3QgYmxvY2sgdGhlIGNvcHkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY3BGaWxlU3luYyhzcmNTdGF0LCBkZXN0U3RhdCwgc3JjLCBkZXN0LCBvcHRpb25zKSB7XG4gICAgICAgIGlmIChkZXN0U3RhdCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZXJyb3JPbkV4aXN0KVxuICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzIuY3JlYXRlRXJyb3IpKFwiRUVYSVNUXCIgLyogRVJST1JfQ09ERS5FRVhJU1QgKi8sICdjcCcsIGRlc3QpO1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLmZvcmNlKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMudW5saW5rU3luYyhkZXN0KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDb3B5IHRoZSBmaWxlXG4gICAgICAgIHRoaXMuY29weUZpbGVTeW5jKHNyYywgZGVzdCwgb3B0aW9ucy5tb2RlKTtcbiAgICAgICAgLy8gUHJlc2VydmUgdGltZXN0YW1wcyBpZiByZXF1ZXN0ZWRcbiAgICAgICAgaWYgKG9wdGlvbnMucHJlc2VydmVUaW1lc3RhbXBzKVxuICAgICAgICAgICAgdGhpcy51dGltZXNTeW5jKGRlc3QsIHNyY1N0YXQuYXRpbWUsIHNyY1N0YXQubXRpbWUpO1xuICAgICAgICAvLyBTZXQgZmlsZSBtb2RlXG4gICAgICAgIHRoaXMuY2htb2RTeW5jKGRlc3QsIE51bWJlcihzcmNTdGF0Lm1vZGUpKTtcbiAgICB9XG4gICAgY3BEaXJTeW5jKHNyY1N0YXQsIGRlc3RTdGF0LCBzcmMsIGRlc3QsIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFkZXN0U3RhdCkge1xuICAgICAgICAgICAgdGhpcy5ta2RpclN5bmMoZGVzdCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVhZCBkaXJlY3RvcnkgY29udGVudHNcbiAgICAgICAgY29uc3QgZW50cmllcyA9IHRoaXMucmVhZGRpclN5bmMoc3JjKTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBzcmNJdGVtID0gcGF0aEpvaW4oc3JjLCBTdHJpbmcoZW50cnkpKTtcbiAgICAgICAgICAgIGNvbnN0IGRlc3RJdGVtID0gcGF0aEpvaW4oZGVzdCwgU3RyaW5nKGVudHJ5KSk7XG4gICAgICAgICAgICAvLyBBcHBseSBmaWx0ZXIgdG8gZWFjaCBpdGVtXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5maWx0ZXIgJiYgIW9wdGlvbnMuZmlsdGVyKHNyY0l0ZW0sIGRlc3RJdGVtKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY3Aoc3JjSXRlbSwgZGVzdEl0ZW0sIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNldCBkaXJlY3RvcnkgbW9kZVxuICAgICAgICB0aGlzLmNobW9kU3luYyhkZXN0LCBOdW1iZXIoc3JjU3RhdC5tb2RlKSk7XG4gICAgfVxuICAgIGNwU3ltbGlua1N5bmMoZGVzdFN0YXQsIHNyYywgZGVzdCwgb3B0aW9ucykge1xuICAgICAgICBsZXQgbGlua1RhcmdldCA9IFN0cmluZyh0aGlzLnJlYWRsaW5rU3luYyhzcmMpKTtcbiAgICAgICAgaWYgKCFvcHRpb25zLnZlcmJhdGltU3ltbGlua3MgJiYgISgwLCBwYXRoXzEuaXNBYnNvbHV0ZSkobGlua1RhcmdldCkpXG4gICAgICAgICAgICBsaW5rVGFyZ2V0ID0gcmVzb2x2ZUNyb3NzUGxhdGZvcm0ocGF0aERpcm5hbWUoc3JjKSwgbGlua1RhcmdldCk7XG4gICAgICAgIGlmIChkZXN0U3RhdClcbiAgICAgICAgICAgIHRoaXMudW5saW5rU3luYyhkZXN0KTtcbiAgICAgICAgdGhpcy5zeW1saW5rU3luYyhsaW5rVGFyZ2V0LCBkZXN0KTtcbiAgICB9XG4gICAgbHN0YXQocGF0aCwgYSwgYikge1xuICAgICAgICBjb25zdCBbeyB0aHJvd0lmTm9FbnRyeSA9IHRydWUsIGJpZ2ludCA9IGZhbHNlIH0sIGNhbGxiYWNrXSA9ICgwLCBvcHRpb25zXzEuZ2V0U3RhdE9wdHNBbmRDYikoYSwgYik7XG4gICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2xzdGF0LCBbKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCksIGJpZ2ludCwgdGhyb3dJZk5vRW50cnldLCBjYWxsYmFjayk7XG4gICAgfVxuICAgIF9zdGF0KGZpbGVuYW1lLCBiaWdpbnQgPSBmYWxzZSwgdGhyb3dJZk5vRW50cnkgPSB0cnVlKSB7XG4gICAgICAgIGxldCBsaW5rO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGluayA9IHRoaXMuX2NvcmUuZ2V0UmVzb2x2ZWRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ3N0YXQnKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyLmNvZGUgPT09IFwiRU5PRU5UXCIgLyogRVJST1JfQ09ERS5FTk9FTlQgKi8gJiYgIXRocm93SWZOb0VudHJ5KVxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTdGF0c18xLmRlZmF1bHQuYnVpbGQobGluay5nZXROb2RlKCksIGJpZ2ludCk7XG4gICAgfVxuICAgIHN0YXRTeW5jKHBhdGgsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBiaWdpbnQgPSB0cnVlLCB0aHJvd0lmTm9FbnRyeSA9IHRydWUgfSA9ICgwLCBvcHRpb25zXzEuZ2V0U3RhdE9wdGlvbnMpKG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdCgoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgYmlnaW50LCB0aHJvd0lmTm9FbnRyeSk7XG4gICAgfVxuICAgIHN0YXQocGF0aCwgYSwgYikge1xuICAgICAgICBjb25zdCBbeyBiaWdpbnQgPSBmYWxzZSwgdGhyb3dJZk5vRW50cnkgPSB0cnVlIH0sIGNhbGxiYWNrXSA9ICgwLCBvcHRpb25zXzEuZ2V0U3RhdE9wdHNBbmRDYikoYSwgYik7XG4gICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX3N0YXQsIFsoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgYmlnaW50LCB0aHJvd0lmTm9FbnRyeV0sIGNhbGxiYWNrKTtcbiAgICB9XG4gICAgZnN0YXRCYXNlKGZkLCBiaWdpbnQgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5fY29yZS5nZXRGaWxlQnlGZChmZCk7XG4gICAgICAgIGlmICghZmlsZSlcbiAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzIuY3JlYXRlRXJyb3IpKFwiRUJBREZcIiAvKiBFUlJPUl9DT0RFLkVCQURGICovLCAnZnN0YXQnKTtcbiAgICAgICAgcmV0dXJuIFN0YXRzXzEuZGVmYXVsdC5idWlsZChmaWxlLm5vZGUsIGJpZ2ludCk7XG4gICAgfVxuICAgIGZzdGF0U3luYyhmZCwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5mc3RhdEJhc2UoZmQsICgwLCBvcHRpb25zXzEuZ2V0U3RhdE9wdGlvbnMpKG9wdGlvbnMpLmJpZ2ludCk7XG4gICAgfVxuICAgIGZzdGF0KGZkLCBhLCBiKSB7XG4gICAgICAgIGNvbnN0IFtvcHRzLCBjYWxsYmFja10gPSAoMCwgb3B0aW9uc18xLmdldFN0YXRPcHRzQW5kQ2IpKGEsIGIpO1xuICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLmZzdGF0QmFzZSwgW2ZkLCBvcHRzLmJpZ2ludF0sIGNhbGxiYWNrKTtcbiAgICB9XG4gICAgX2V4aXN0cyhmaWxlbmFtZSkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9zdGF0KGZpbGVuYW1lKTtcbiAgICB9XG4gICAgX2FjY2VzcyhmaWxlbmFtZSwgbW9kZSkge1xuICAgICAgICBjb25zdCBsaW5rID0gdGhpcy5fY29yZS5nZXRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ2FjY2VzcycpO1xuICAgICAgICBjb25zdCBub2RlID0gbGluay5nZXROb2RlKCk7XG4gICAgICAgIC8vIEZfT0sgKDApIGp1c3QgY2hlY2tzIGZvciBleGlzdGVuY2UsIHdoaWNoIHdlIGFscmVhZHkgY29uZmlybWVkIGFib3ZlXG4gICAgICAgIGlmIChtb2RlID09PSBGX09LKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2hlY2sgcmVhZCBwZXJtaXNzaW9uXG4gICAgICAgIGlmIChtb2RlICYgUl9PSyAmJiAhbm9kZS5jYW5SZWFkKCkpIHtcbiAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzIuY3JlYXRlRXJyb3IpKFwiRUFDQ0VTXCIgLyogRVJST1JfQ09ERS5FQUNDRVMgKi8sICdhY2Nlc3MnLCBmaWxlbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2hlY2sgd3JpdGUgcGVybWlzc2lvblxuICAgICAgICBpZiAobW9kZSAmIFdfT0sgJiYgIW5vZGUuY2FuV3JpdGUoKSkge1xuICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMi5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ2FjY2VzcycsIGZpbGVuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBleGVjdXRlIHBlcm1pc3Npb25cbiAgICAgICAgaWYgKG1vZGUgJiBYX09LICYmICFub2RlLmNhbkV4ZWN1dGUoKSkge1xuICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMi5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ2FjY2VzcycsIGZpbGVuYW1lKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB3YXRjaEZpbGUocGF0aCwgYSwgYikge1xuICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICBsZXQgb3B0aW9ucyA9IGE7XG4gICAgICAgIGxldCBsaXN0ZW5lciA9IGI7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbGlzdGVuZXIgPSBhO1xuICAgICAgICAgICAgb3B0aW9ucyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1wid2F0Y2hGaWxlKClcIiByZXF1aXJlcyBhIGxpc3RlbmVyIGZ1bmN0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGludGVydmFsID0gNTAwNztcbiAgICAgICAgbGV0IHBlcnNpc3RlbnQgPSB0cnVlO1xuICAgICAgICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5pbnRlcnZhbCA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSBvcHRpb25zLmludGVydmFsO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnBlcnNpc3RlbnQgPT09ICdib29sZWFuJylcbiAgICAgICAgICAgICAgICBwZXJzaXN0ZW50ID0gb3B0aW9ucy5wZXJzaXN0ZW50O1xuICAgICAgICB9XG4gICAgICAgIGxldCB3YXRjaGVyID0gdGhpcy5zdGF0V2F0Y2hlcnNbZmlsZW5hbWVdO1xuICAgICAgICBpZiAoIXdhdGNoZXIpIHtcbiAgICAgICAgICAgIHdhdGNoZXIgPSBuZXcgdGhpcy5TdGF0V2F0Y2hlcigpO1xuICAgICAgICAgICAgd2F0Y2hlci5zdGFydChmaWxlbmFtZSwgcGVyc2lzdGVudCwgaW50ZXJ2YWwpO1xuICAgICAgICAgICAgdGhpcy5zdGF0V2F0Y2hlcnNbZmlsZW5hbWVdID0gd2F0Y2hlcjtcbiAgICAgICAgfVxuICAgICAgICB3YXRjaGVyLmFkZExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG4gICAgICAgIHJldHVybiB3YXRjaGVyO1xuICAgIH1cbiAgICB1bndhdGNoRmlsZShwYXRoLCBsaXN0ZW5lcikge1xuICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICBjb25zdCB3YXRjaGVyID0gdGhpcy5zdGF0V2F0Y2hlcnNbZmlsZW5hbWVdO1xuICAgICAgICBpZiAoIXdhdGNoZXIpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHdhdGNoZXIucmVtb3ZlTGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHdhdGNoZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCdjaGFuZ2UnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod2F0Y2hlci5saXN0ZW5lckNvdW50KCdjaGFuZ2UnKSA9PT0gMCkge1xuICAgICAgICAgICAgd2F0Y2hlci5zdG9wKCk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5zdGF0V2F0Y2hlcnNbZmlsZW5hbWVdO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNyZWF0ZVJlYWRTdHJlYW0ocGF0aCwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMuUmVhZFN0cmVhbShwYXRoLCBvcHRpb25zKTtcbiAgICB9XG4gICAgY3JlYXRlV3JpdGVTdHJlYW0ocGF0aCwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMuV3JpdGVTdHJlYW0ocGF0aCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIHdhdGNoKHBhdGg6IFBhdGhMaWtlKTogRlNXYXRjaGVyO1xuICAgIC8vIHdhdGNoKHBhdGg6IFBhdGhMaWtlLCBvcHRpb25zPzogSVdhdGNoT3B0aW9ucyB8IHN0cmluZyk6IEZTV2F0Y2hlcjtcbiAgICB3YXRjaChwYXRoLCBvcHRpb25zLCBsaXN0ZW5lcikge1xuICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICBsZXQgZ2l2ZW5PcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBsaXN0ZW5lciA9IG9wdGlvbnM7XG4gICAgICAgICAgICBnaXZlbk9wdGlvbnMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgICAgbGV0IHsgcGVyc2lzdGVudCwgcmVjdXJzaXZlLCBlbmNvZGluZyB9ID0gKDAsIG9wdGlvbnNfMS5nZXREZWZhdWx0T3B0cykoZ2l2ZW5PcHRpb25zKTtcbiAgICAgICAgaWYgKHBlcnNpc3RlbnQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHBlcnNpc3RlbnQgPSB0cnVlO1xuICAgICAgICBpZiAocmVjdXJzaXZlID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICByZWN1cnNpdmUgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgd2F0Y2hlciA9IG5ldyB0aGlzLkZTV2F0Y2hlcigpO1xuICAgICAgICB3YXRjaGVyLnN0YXJ0KGZpbGVuYW1lLCBwZXJzaXN0ZW50LCByZWN1cnNpdmUsIGVuY29kaW5nKTtcbiAgICAgICAgaWYgKGxpc3RlbmVyKSB7XG4gICAgICAgICAgICB3YXRjaGVyLmFkZExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHdhdGNoZXI7XG4gICAgfVxuICAgIF9zdGF0ZnMoZmlsZW5hbWUsIGJpZ2ludCA9IGZhbHNlKSB7XG4gICAgICAgIC8vIFZlcmlmeSB0aGUgcGF0aCBleGlzdHMgdG8gbWF0Y2ggTm9kZS5qcyBiZWhhdmlvclxuICAgICAgICB0aGlzLl9jb3JlLmdldFJlc29sdmVkTGlua09yVGhyb3coZmlsZW5hbWUsICdzdGF0ZnMnKTtcbiAgICAgICAgcmV0dXJuIFN0YXRGc18xLmRlZmF1bHQuYnVpbGQodGhpcy5fY29yZSwgYmlnaW50KTtcbiAgICB9XG4gICAgc3RhdGZzU3luYyhwYXRoLCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHsgYmlnaW50ID0gZmFsc2UgfSA9ICgwLCBvcHRpb25zXzEuZ2V0U3RhdGZzT3B0aW9ucykob3B0aW9ucyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZnMoKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCksIGJpZ2ludCk7XG4gICAgfVxuICAgIHN0YXRmcyhwYXRoLCBhLCBiKSB7XG4gICAgICAgIGNvbnN0IFt7IGJpZ2ludCA9IGZhbHNlIH0sIGNhbGxiYWNrXSA9ICgwLCBvcHRpb25zXzEuZ2V0U3RhdGZzT3B0c0FuZENiKShhLCBiKTtcbiAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fc3RhdGZzLCBbKDAsIHV0aWxfMi5wYXRoVG9GaWxlbmFtZSkocGF0aCksIGJpZ2ludF0sIGNhbGxiYWNrKTtcbiAgICB9XG59XG5leHBvcnRzLlZvbHVtZSA9IFZvbHVtZTtcblZvbHVtZS5mcm9tSlNPTiA9IChqc29uLCBjd2QpID0+IG5ldyBWb2x1bWUoY29yZV8xLlN1cGVyYmxvY2suZnJvbUpTT04oanNvbiwgY3dkKSk7XG5Wb2x1bWUuZnJvbU5lc3RlZEpTT04gPSAoanNvbiwgY3dkKSA9PiBuZXcgVm9sdW1lKGNvcmVfMS5TdXBlcmJsb2NrLmZyb21OZXN0ZWRKU09OKGpzb24sIGN3ZCkpO1xuZnVuY3Rpb24gZW1pdFN0b3Aoc2VsZikge1xuICAgIHNlbGYuZW1pdCgnc3RvcCcpO1xufVxuY2xhc3MgU3RhdFdhdGNoZXIgZXh0ZW5kcyBldmVudHNfMS5FdmVudEVtaXR0ZXIge1xuICAgIGNvbnN0cnVjdG9yKHZvbCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm9uSW50ZXJ2YWwgPSAoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gdGhpcy52b2wuc3RhdFN5bmModGhpcy5maWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzQ2hhbmdlZChzdGF0cykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLCBzdGF0cywgdGhpcy5wcmV2KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2ID0gc3RhdHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb29wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudm9sID0gdm9sO1xuICAgIH1cbiAgICBsb29wKCkge1xuICAgICAgICB0aGlzLnRpbWVvdXRSZWYgPSB0aGlzLnNldFRpbWVvdXQodGhpcy5vbkludGVydmFsLCB0aGlzLmludGVydmFsKTtcbiAgICB9XG4gICAgaGFzQ2hhbmdlZChzdGF0cykge1xuICAgICAgICAvLyBpZighdGhpcy5wcmV2KSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChzdGF0cy5tdGltZU1zID4gdGhpcy5wcmV2Lm10aW1lTXMpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHN0YXRzLm5saW5rICE9PSB0aGlzLnByZXYubmxpbmspXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBzdGFydChwYXRoLCBwZXJzaXN0ZW50ID0gdHJ1ZSwgaW50ZXJ2YWwgPSA1MDA3KSB7XG4gICAgICAgIHRoaXMuZmlsZW5hbWUgPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgdGhpcy5zZXRUaW1lb3V0ID0gcGVyc2lzdGVudFxuICAgICAgICAgICAgPyBzZXRUaW1lb3V0LmJpbmQodHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyA6IGdsb2JhbClcbiAgICAgICAgICAgIDogc2V0VGltZW91dFVucmVmXzEuZGVmYXVsdDtcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IGludGVydmFsO1xuICAgICAgICB0aGlzLnByZXYgPSB0aGlzLnZvbC5zdGF0U3luYyh0aGlzLmZpbGVuYW1lKTtcbiAgICAgICAgdGhpcy5sb29wKCk7XG4gICAgfVxuICAgIHN0b3AoKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRSZWYpO1xuICAgICAgICAoMCwgcXVldWVNaWNyb3Rhc2tfMS5kZWZhdWx0KSgoKSA9PiB7XG4gICAgICAgICAgICBlbWl0U3RvcC5jYWxsKHRoaXMsIHRoaXMpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnRzLlN0YXRXYXRjaGVyID0gU3RhdFdhdGNoZXI7XG4vKiB0c2xpbnQ6ZGlzYWJsZSBuby12YXIta2V5d29yZCBwcmVmZXItY29uc3QgKi9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVhZFN0cmVhbVxudmFyIHBvb2w7XG5mdW5jdGlvbiBhbGxvY05ld1Bvb2wocG9vbFNpemUpIHtcbiAgICBwb29sID0gKDAsIGJ1ZmZlcl8xLmJ1ZmZlckFsbG9jVW5zYWZlKShwb29sU2l6ZSk7XG4gICAgcG9vbC51c2VkID0gMDtcbn1cbigwLCB1dGlsXzEuaW5oZXJpdHMpKEZzUmVhZFN0cmVhbSwgc3RyZWFtXzEuUmVhZGFibGUpO1xuZXhwb3J0cy5SZWFkU3RyZWFtID0gRnNSZWFkU3RyZWFtO1xuZnVuY3Rpb24gRnNSZWFkU3RyZWFtKHZvbCwgcGF0aCwgb3B0aW9ucykge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBGc1JlYWRTdHJlYW0pKVxuICAgICAgICByZXR1cm4gbmV3IEZzUmVhZFN0cmVhbSh2b2wsIHBhdGgsIG9wdGlvbnMpO1xuICAgIHRoaXMuX3ZvbCA9IHZvbDtcbiAgICAvLyBhIGxpdHRsZSBiaXQgYmlnZ2VyIGJ1ZmZlciBhbmQgd2F0ZXIgbWFya3MgYnkgZGVmYXVsdFxuICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCAoMCwgb3B0aW9uc18xLmdldE9wdGlvbnMpKG9wdGlvbnMsIHt9KSk7XG4gICAgaWYgKG9wdGlvbnMuaGlnaFdhdGVyTWFyayA9PT0gdW5kZWZpbmVkKVxuICAgICAgICBvcHRpb25zLmhpZ2hXYXRlck1hcmsgPSA2NCAqIDEwMjQ7XG4gICAgc3RyZWFtXzEuUmVhZGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgICB0aGlzLnBhdGggPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICB0aGlzLmZkID0gb3B0aW9ucy5mZCA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHR5cGVvZiBvcHRpb25zLmZkICE9PSAnbnVtYmVyJyA/IG9wdGlvbnMuZmQuZmQgOiBvcHRpb25zLmZkO1xuICAgIHRoaXMuZmxhZ3MgPSBvcHRpb25zLmZsYWdzID09PSB1bmRlZmluZWQgPyAncicgOiBvcHRpb25zLmZsYWdzO1xuICAgIHRoaXMubW9kZSA9IG9wdGlvbnMubW9kZSA9PT0gdW5kZWZpbmVkID8gMG82NjYgOiBvcHRpb25zLm1vZGU7XG4gICAgdGhpcy5zdGFydCA9IG9wdGlvbnMuc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBvcHRpb25zLmVuZDtcbiAgICB0aGlzLmF1dG9DbG9zZSA9IG9wdGlvbnMuYXV0b0Nsb3NlID09PSB1bmRlZmluZWQgPyB0cnVlIDogb3B0aW9ucy5hdXRvQ2xvc2U7XG4gICAgdGhpcy5wb3MgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5ieXRlc1JlYWQgPSAwO1xuICAgIGlmICh0aGlzLnN0YXJ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXJ0ICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJzdGFydFwiIG9wdGlvbiBtdXN0IGJlIGEgTnVtYmVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kID0gSW5maW5pdHk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHRoaXMuZW5kICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJlbmRcIiBvcHRpb24gbXVzdCBiZSBhIE51bWJlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0ID4gdGhpcy5lbmQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignXCJzdGFydFwiIG9wdGlvbiBtdXN0IGJlIDw9IFwiZW5kXCIgb3B0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3MgPSB0aGlzLnN0YXJ0O1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHRoaXMuZmQgIT09ICdudW1iZXInKVxuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICB0aGlzLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9DbG9zZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVzdHJveSlcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuRnNSZWFkU3RyZWFtLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpczsgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby10aGlzLWFzc2lnbm1lbnRcbiAgICB0aGlzLl92b2wub3Blbih0aGlzLnBhdGgsIHRoaXMuZmxhZ3MsIHRoaXMubW9kZSwgKGVyLCBmZCkgPT4ge1xuICAgICAgICBpZiAoZXIpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmF1dG9DbG9zZSkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmRlc3Ryb3kpXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZWxmLmZkID0gZmQ7XG4gICAgICAgIHNlbGYuZW1pdCgnb3BlbicsIGZkKTtcbiAgICAgICAgLy8gc3RhcnQgdGhlIGZsb3cgb2YgZGF0YS5cbiAgICAgICAgc2VsZi5yZWFkKCk7XG4gICAgfSk7XG59O1xuRnNSZWFkU3RyZWFtLnByb3RvdHlwZS5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmZkICE9PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gdGhpcy5vbmNlKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fcmVhZChuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRlc3Ryb3llZClcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmICghcG9vbCB8fCBwb29sLmxlbmd0aCAtIHBvb2wudXNlZCA8IGtNaW5Qb29sU3BhY2UpIHtcbiAgICAgICAgLy8gZGlzY2FyZCB0aGUgb2xkIHBvb2wuXG4gICAgICAgIGFsbG9jTmV3UG9vbCh0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcmspO1xuICAgIH1cbiAgICAvLyBHcmFiIGFub3RoZXIgcmVmZXJlbmNlIHRvIHRoZSBwb29sIGluIHRoZSBjYXNlIHRoYXQgd2hpbGUgd2UncmVcbiAgICAvLyBpbiB0aGUgdGhyZWFkIHBvb2wgYW5vdGhlciByZWFkKCkgZmluaXNoZXMgdXAgdGhlIHBvb2wsIGFuZFxuICAgIC8vIGFsbG9jYXRlcyBhIG5ldyBvbmUuXG4gICAgdmFyIHRoaXNQb29sID0gcG9vbDtcbiAgICB2YXIgdG9SZWFkID0gTWF0aC5taW4ocG9vbC5sZW5ndGggLSBwb29sLnVzZWQsIG4pO1xuICAgIHZhciBzdGFydCA9IHBvb2wudXNlZDtcbiAgICBpZiAodGhpcy5wb3MgIT09IHVuZGVmaW5lZClcbiAgICAgICAgdG9SZWFkID0gTWF0aC5taW4odGhpcy5lbmQgLSB0aGlzLnBvcyArIDEsIHRvUmVhZCk7XG4gICAgLy8gYWxyZWFkeSByZWFkIGV2ZXJ5dGhpbmcgd2Ugd2VyZSBzdXBwb3NlZCB0byByZWFkIVxuICAgIC8vIHRyZWF0IGFzIEVPRi5cbiAgICBpZiAodG9SZWFkIDw9IDApXG4gICAgICAgIHJldHVybiB0aGlzLnB1c2gobnVsbCk7XG4gICAgLy8gdGhlIGFjdHVhbCByZWFkLlxuICAgIHZhciBzZWxmID0gdGhpczsgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby10aGlzLWFzc2lnbm1lbnRcbiAgICB0aGlzLl92b2wucmVhZCh0aGlzLmZkLCBwb29sLCBwb29sLnVzZWQsIHRvUmVhZCwgdGhpcy5wb3MsIG9ucmVhZCk7XG4gICAgLy8gbW92ZSB0aGUgcG9vbCBwb3NpdGlvbnMsIGFuZCBpbnRlcm5hbCBwb3NpdGlvbiBmb3IgcmVhZGluZy5cbiAgICBpZiAodGhpcy5wb3MgIT09IHVuZGVmaW5lZClcbiAgICAgICAgdGhpcy5wb3MgKz0gdG9SZWFkO1xuICAgIHBvb2wudXNlZCArPSB0b1JlYWQ7XG4gICAgZnVuY3Rpb24gb25yZWFkKGVyLCBieXRlc1JlYWQpIHtcbiAgICAgICAgaWYgKGVyKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5hdXRvQ2xvc2UgJiYgc2VsZi5kZXN0cm95KSB7XG4gICAgICAgICAgICAgICAgc2VsZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGIgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGJ5dGVzUmVhZCA+IDApIHtcbiAgICAgICAgICAgICAgICBzZWxmLmJ5dGVzUmVhZCArPSBieXRlc1JlYWQ7XG4gICAgICAgICAgICAgICAgYiA9IHRoaXNQb29sLnNsaWNlKHN0YXJ0LCBzdGFydCArIGJ5dGVzUmVhZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLnB1c2goYik7XG4gICAgICAgIH1cbiAgICB9XG59O1xuRnNSZWFkU3RyZWFtLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gICAgdGhpcy5jbG9zZShlcnIyID0+IHtcbiAgICAgICAgY2IoZXJyIHx8IGVycjIpO1xuICAgIH0pO1xufTtcbkZzUmVhZFN0cmVhbS5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoY2IpIHtcbiAgICBpZiAoY2IpXG4gICAgICAgIHRoaXMub25jZSgnY2xvc2UnLCBjYik7XG4gICAgaWYgKHRoaXMuY2xvc2VkIHx8IHR5cGVvZiB0aGlzLmZkICE9PSAnbnVtYmVyJykge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmQgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aGlzLm9uY2UoJ29wZW4nLCBjbG9zZU9uT3Blbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgwLCBxdWV1ZU1pY3JvdGFza18xLmRlZmF1bHQpKCgpID0+IHRoaXMuZW1pdCgnY2xvc2UnKSk7XG4gICAgfVxuICAgIC8vIFNpbmNlIE5vZGUgMTgsIHRoZXJlIGlzIG9ubHkgYSBnZXR0ZXIgZm9yICcuY2xvc2VkJy5cbiAgICAvLyBUaGUgZmlyc3QgYnJhbmNoIG1pbWljcyBvdGhlciBzZXR0ZXJzIGZyb20gUmVhZGFibGUuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL3YxOC4wLjAvbGliL2ludGVybmFsL3N0cmVhbXMvcmVhZGFibGUuanMjTDEyNDNcbiAgICBpZiAodHlwZW9mIHRoaXMuX3JlYWRhYmxlU3RhdGU/LmNsb3NlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuY2xvc2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5fdm9sLmNsb3NlKHRoaXMuZmQsIGVyID0+IHtcbiAgICAgICAgaWYgKGVyKVxuICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5lbWl0KCdjbG9zZScpO1xuICAgIH0pO1xuICAgIHRoaXMuZmQgPSBudWxsO1xufTtcbi8vIG5lZWRlZCBiZWNhdXNlIGFzIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggYXJndW1lbnRzXG4vLyB0aGF0IGRvZXMgbm90IG1hdGNoIHRoaXMuY2xvc2UoKSBzaWduYXR1cmVcbmZ1bmN0aW9uIGNsb3NlT25PcGVuKGZkKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xufVxuKDAsIHV0aWxfMS5pbmhlcml0cykoRnNXcml0ZVN0cmVhbSwgc3RyZWFtXzEuV3JpdGFibGUpO1xuZXhwb3J0cy5Xcml0ZVN0cmVhbSA9IEZzV3JpdGVTdHJlYW07XG5mdW5jdGlvbiBGc1dyaXRlU3RyZWFtKHZvbCwgcGF0aCwgb3B0aW9ucykge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBGc1dyaXRlU3RyZWFtKSlcbiAgICAgICAgcmV0dXJuIG5ldyBGc1dyaXRlU3RyZWFtKHZvbCwgcGF0aCwgb3B0aW9ucyk7XG4gICAgdGhpcy5fdm9sID0gdm9sO1xuICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCAoMCwgb3B0aW9uc18xLmdldE9wdGlvbnMpKG9wdGlvbnMsIHt9KSk7XG4gICAgc3RyZWFtXzEuV3JpdGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgICB0aGlzLnBhdGggPSAoMCwgdXRpbF8yLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICB0aGlzLmZkID0gb3B0aW9ucy5mZCA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHR5cGVvZiBvcHRpb25zLmZkICE9PSAnbnVtYmVyJyA/IG9wdGlvbnMuZmQuZmQgOiBvcHRpb25zLmZkO1xuICAgIHRoaXMuZmxhZ3MgPSBvcHRpb25zLmZsYWdzID09PSB1bmRlZmluZWQgPyAndycgOiBvcHRpb25zLmZsYWdzO1xuICAgIHRoaXMubW9kZSA9IG9wdGlvbnMubW9kZSA9PT0gdW5kZWZpbmVkID8gMG82NjYgOiBvcHRpb25zLm1vZGU7XG4gICAgdGhpcy5zdGFydCA9IG9wdGlvbnMuc3RhcnQ7XG4gICAgdGhpcy5hdXRvQ2xvc2UgPSBvcHRpb25zLmF1dG9DbG9zZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6ICEhb3B0aW9ucy5hdXRvQ2xvc2U7XG4gICAgdGhpcy5wb3MgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5ieXRlc1dyaXR0ZW4gPSAwO1xuICAgIHRoaXMucGVuZGluZyA9IHRydWU7XG4gICAgaWYgKHRoaXMuc3RhcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnQgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInN0YXJ0XCIgb3B0aW9uIG11c3QgYmUgYSBOdW1iZXInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zdGFydCA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignXCJzdGFydFwiIG11c3QgYmUgPj0gemVybycpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9zID0gdGhpcy5zdGFydDtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZW5jb2RpbmcpXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEVuY29kaW5nKG9wdGlvbnMuZW5jb2RpbmcpO1xuICAgIGlmICh0eXBlb2YgdGhpcy5mZCAhPT0gJ251bWJlcicpXG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgIC8vIGRpc3Bvc2Ugb24gZmluaXNoLlxuICAgIHRoaXMub25jZSgnZmluaXNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvQ2xvc2UpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuRnNXcml0ZVN0cmVhbS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLl92b2wub3Blbih0aGlzLnBhdGgsIHRoaXMuZmxhZ3MsIHRoaXMubW9kZSwgZnVuY3Rpb24gKGVyLCBmZCkge1xuICAgICAgICBpZiAoZXIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmF1dG9DbG9zZSAmJiB0aGlzLmRlc3Ryb3kpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mZCA9IGZkO1xuICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lbWl0KCdvcGVuJywgZmQpO1xuICAgIH0uYmluZCh0aGlzKSk7XG59O1xuRnNXcml0ZVN0cmVhbS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuY29kaW5nLCBjYikge1xuICAgIGlmICghKGRhdGEgaW5zdGFuY2VvZiBidWZmZXJfMS5CdWZmZXIgfHwgZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKVxuICAgICAgICByZXR1cm4gdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignSW52YWxpZCBkYXRhJykpO1xuICAgIGlmICh0eXBlb2YgdGhpcy5mZCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub25jZSgnb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuX3dyaXRlKGRhdGEsIGVuY29kaW5nLCBjYik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB2YXIgc2VsZiA9IHRoaXM7IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tdGhpcy1hc3NpZ25tZW50XG4gICAgdGhpcy5fdm9sLndyaXRlKHRoaXMuZmQsIGRhdGEsIDAsIGRhdGEubGVuZ3RoLCB0aGlzLnBvcywgKGVyLCBieXRlcykgPT4ge1xuICAgICAgICBpZiAoZXIpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmF1dG9DbG9zZSAmJiBzZWxmLmRlc3Ryb3kpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjYihlcik7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZi5ieXRlc1dyaXR0ZW4gKz0gYnl0ZXM7XG4gICAgICAgIGNiKCk7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMucG9zICE9PSB1bmRlZmluZWQpXG4gICAgICAgIHRoaXMucG9zICs9IGRhdGEubGVuZ3RoO1xufTtcbkZzV3JpdGVTdHJlYW0ucHJvdG90eXBlLl93cml0ZXYgPSBmdW5jdGlvbiAoZGF0YSwgY2IpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuZmQgIT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9uY2UoJ29wZW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLl93cml0ZXYoZGF0YSwgY2IpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tdGhpcy1hc3NpZ25tZW50XG4gICAgY29uc3QgbGVuID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgY2h1bmtzID0gbmV3IEFycmF5KGxlbik7XG4gICAgdmFyIHNpemUgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgdmFyIGNodW5rID0gZGF0YVtpXS5jaHVuaztcbiAgICAgICAgY2h1bmtzW2ldID0gY2h1bms7XG4gICAgICAgIHNpemUgKz0gY2h1bmsubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCBidWYgPSBidWZmZXJfMS5CdWZmZXIuY29uY2F0KGNodW5rcyk7XG4gICAgdGhpcy5fdm9sLndyaXRlKHRoaXMuZmQsIGJ1ZiwgMCwgYnVmLmxlbmd0aCwgdGhpcy5wb3MsIChlciwgYnl0ZXMpID0+IHtcbiAgICAgICAgaWYgKGVyKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5kZXN0cm95KVxuICAgICAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpO1xuICAgICAgICAgICAgcmV0dXJuIGNiKGVyKTtcbiAgICAgICAgfVxuICAgICAgICBzZWxmLmJ5dGVzV3JpdHRlbiArPSBieXRlcztcbiAgICAgICAgY2IoKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5wb3MgIT09IHVuZGVmaW5lZClcbiAgICAgICAgdGhpcy5wb3MgKz0gc2l6ZTtcbn07XG5Gc1dyaXRlU3RyZWFtLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uIChjYikge1xuICAgIGlmIChjYilcbiAgICAgICAgdGhpcy5vbmNlKCdjbG9zZScsIGNiKTtcbiAgICBpZiAodGhpcy5jbG9zZWQgfHwgdHlwZW9mIHRoaXMuZmQgIT09ICdudW1iZXInKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mZCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHRoaXMub25jZSgnb3BlbicsIGNsb3NlT25PcGVuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKDAsIHF1ZXVlTWljcm90YXNrXzEuZGVmYXVsdCkoKCkgPT4gdGhpcy5lbWl0KCdjbG9zZScpKTtcbiAgICB9XG4gICAgLy8gU2luY2UgTm9kZSAxOCwgdGhlcmUgaXMgb25seSBhIGdldHRlciBmb3IgJy5jbG9zZWQnLlxuICAgIC8vIFRoZSBmaXJzdCBicmFuY2ggbWltaWNzIG90aGVyIHNldHRlcnMgZnJvbSBXcml0YWJsZS5cbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvdjE4LjAuMC9saWIvaW50ZXJuYWwvc3RyZWFtcy93cml0YWJsZS5qcyNMNzY2XG4gICAgaWYgKHR5cGVvZiB0aGlzLl93cml0YWJsZVN0YXRlPy5jbG9zZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmNsb3NlZCA9IHRydWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuX3ZvbC5jbG9zZSh0aGlzLmZkLCBlciA9PiB7XG4gICAgICAgIGlmIChlcilcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnY2xvc2UnKTtcbiAgICB9KTtcbiAgICB0aGlzLmZkID0gbnVsbDtcbn07XG5Gc1dyaXRlU3RyZWFtLnByb3RvdHlwZS5fZGVzdHJveSA9IEZzUmVhZFN0cmVhbS5wcm90b3R5cGUuX2Rlc3Ryb3k7XG4vLyBUaGVyZSBpcyBubyBzaHV0ZG93bigpIGZvciBmaWxlcy5cbkZzV3JpdGVTdHJlYW0ucHJvdG90eXBlLmRlc3Ryb3lTb29uID0gRnNXcml0ZVN0cmVhbS5wcm90b3R5cGUuZW5kO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGU1dhdGNoZXJcbmNsYXNzIEZTV2F0Y2hlciBleHRlbmRzIGV2ZW50c18xLkV2ZW50RW1pdHRlciB7XG4gICAgY29uc3RydWN0b3Iodm9sKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX2ZpbGVuYW1lID0gJyc7XG4gICAgICAgIHRoaXMuX2ZpbGVuYW1lRW5jb2RlZCA9ICcnO1xuICAgICAgICAvLyBfcGVyc2lzdGVudDogYm9vbGVhbiA9IHRydWU7XG4gICAgICAgIHRoaXMuX3JlY3Vyc2l2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9lbmNvZGluZyA9IGVuY29kaW5nXzEuRU5DT0RJTkdfVVRGODtcbiAgICAgICAgLy8gaW5vZGUgLT4gcmVtb3ZlcnNcbiAgICAgICAgdGhpcy5fbGlzdGVuZXJSZW1vdmVycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5fb25QYXJlbnRDaGlsZCA9IChsaW5rKSA9PiB7XG4gICAgICAgICAgICBpZiAobGluay5nZXROYW1lKCkgPT09IHRoaXMuX2dldE5hbWUoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXQoJ3JlbmFtZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9lbWl0ID0gKHR5cGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJywgdHlwZSwgdGhpcy5fZmlsZW5hbWVFbmNvZGVkKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fcGVyc2lzdCA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dCh0aGlzLl9wZXJzaXN0LCAxZTYpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl92b2wgPSB2b2w7XG4gICAgICAgIC8vIFRPRE86IEVtaXQgXCJlcnJvclwiIG1lc3NhZ2VzIHdoZW4gd2F0Y2hpbmcuXG4gICAgICAgIC8vIHRoaXMuX2hhbmRsZS5vbmNoYW5nZSA9IGZ1bmN0aW9uKHN0YXR1cywgZXZlbnRUeXBlLCBmaWxlbmFtZSkge1xuICAgICAgICAvLyAgICAgaWYgKHN0YXR1cyA8IDApIHtcbiAgICAgICAgLy8gICAgICAgICBzZWxmLl9oYW5kbGUuY2xvc2UoKTtcbiAgICAgICAgLy8gICAgICAgICBjb25zdCBlcnJvciA9ICFmaWxlbmFtZSA/XG4gICAgICAgIC8vICAgICAgICAgICAgIGVycm5vRXhjZXB0aW9uKHN0YXR1cywgJ0Vycm9yIHdhdGNoaW5nIGZpbGUgZm9yIGNoYW5nZXM6JykgOlxuICAgICAgICAvLyAgICAgICAgICAgICBlcnJub0V4Y2VwdGlvbihzdGF0dXMsIGBFcnJvciB3YXRjaGluZyBmaWxlICR7ZmlsZW5hbWV9IGZvciBjaGFuZ2VzOmApO1xuICAgICAgICAvLyAgICAgICAgIGVycm9yLmZpbGVuYW1lID0gZmlsZW5hbWU7XG4gICAgICAgIC8vICAgICAgICAgc2VsZi5lbWl0KCdlcnJvcicsIGVycm9yKTtcbiAgICAgICAgLy8gICAgIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICAgICAgc2VsZi5lbWl0KCdjaGFuZ2UnLCBldmVudFR5cGUsIGZpbGVuYW1lKTtcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfTtcbiAgICB9XG4gICAgX2dldE5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGVwc1t0aGlzLl9zdGVwcy5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgc3RhcnQocGF0aCwgcGVyc2lzdGVudCA9IHRydWUsIHJlY3Vyc2l2ZSA9IGZhbHNlLCBlbmNvZGluZyA9IGVuY29kaW5nXzEuRU5DT0RJTkdfVVRGOCkge1xuICAgICAgICB0aGlzLl9maWxlbmFtZSA9ICgwLCB1dGlsXzIucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICB0aGlzLl9zdGVwcyA9ICgwLCB1dGlsXzMuZmlsZW5hbWVUb1N0ZXBzKSh0aGlzLl9maWxlbmFtZSk7XG4gICAgICAgIHRoaXMuX2ZpbGVuYW1lRW5jb2RlZCA9ICgwLCBlbmNvZGluZ18xLnN0clRvRW5jb2RpbmcpKHRoaXMuX2ZpbGVuYW1lKTtcbiAgICAgICAgLy8gdGhpcy5fcGVyc2lzdGVudCA9IHBlcnNpc3RlbnQ7XG4gICAgICAgIHRoaXMuX3JlY3Vyc2l2ZSA9IHJlY3Vyc2l2ZTtcbiAgICAgICAgdGhpcy5fZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuX2xpbmsgPSB0aGlzLl92b2wuX2NvcmUuZ2V0TGlua09yVGhyb3codGhpcy5fZmlsZW5hbWUsICdGU1dhdGNoZXInKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgd2F0Y2ggJHt0aGlzLl9maWxlbmFtZX0gJHtlcnIuY29kZX1gKTtcbiAgICAgICAgICAgIGVycm9yLmNvZGUgPSBlcnIuY29kZTtcbiAgICAgICAgICAgIGVycm9yLmVycm5vID0gZXJyLmNvZGU7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3YXRjaExpbmtOb2RlQ2hhbmdlZCA9IChsaW5rKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlcGF0aCA9IGxpbmsuZ2V0UGF0aCgpO1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGxpbmsuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgY29uc3Qgb25Ob2RlQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IHBhdGhSZWxhdGl2ZSh0aGlzLl9maWxlbmFtZSwgZmlsZXBhdGgpO1xuICAgICAgICAgICAgICAgIGlmICghZmlsZW5hbWUpXG4gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gdGhpcy5fZ2V0TmFtZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVtaXQoJ2NoYW5nZScsICdjaGFuZ2UnLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgdW5zdWIgPSBub2RlLmNoYW5nZXMubGlzdGVuKChbdHlwZV0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ21vZGlmeScpXG4gICAgICAgICAgICAgICAgICAgIG9uTm9kZUNoYW5nZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCByZW1vdmVycyA9IHRoaXMuX2xpc3RlbmVyUmVtb3ZlcnMuZ2V0KG5vZGUuaW5vKSA/PyBbXTtcbiAgICAgICAgICAgIHJlbW92ZXJzLnB1c2goKCkgPT4gdW5zdWIoKSk7XG4gICAgICAgICAgICB0aGlzLl9saXN0ZW5lclJlbW92ZXJzLnNldChub2RlLmlubywgcmVtb3ZlcnMpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCB3YXRjaExpbmtDaGlsZHJlbkNoYW5nZWQgPSAobGluaykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGxpbmsuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgLy8gd2hlbiBhIG5ldyBsaW5rIGFkZGVkXG4gICAgICAgICAgICBjb25zdCBvbkxpbmtDaGlsZEFkZCA9IChsKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLCAncmVuYW1lJywgcGF0aFJlbGF0aXZlKHRoaXMuX2ZpbGVuYW1lLCBsLmdldFBhdGgoKSkpO1xuICAgICAgICAgICAgICAgIC8vIDEuIHdhdGNoIGNoYW5nZXMgb2YgdGhlIG5ldyBsaW5rLW5vZGVcbiAgICAgICAgICAgICAgICB3YXRjaExpbmtOb2RlQ2hhbmdlZChsKTtcbiAgICAgICAgICAgICAgICAvLyAyLiB3YXRjaCBjaGFuZ2VzIG9mIHRoZSBuZXcgbGluay1ub2RlJ3MgY2hpbGRyZW5cbiAgICAgICAgICAgICAgICB3YXRjaExpbmtDaGlsZHJlbkNoYW5nZWQobCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gd2hlbiBhIG5ldyBsaW5rIGRlbGV0ZWRcbiAgICAgICAgICAgIGNvbnN0IG9uTGlua0NoaWxkRGVsZXRlID0gKGwpID0+IHtcbiAgICAgICAgICAgICAgICAvLyByZW1vdmUgdGhlIGxpc3RlbmVycyBvZiB0aGUgY2hpbGRyZW4gbm9kZXNcbiAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVMaW5rTm9kZUxpc3RlbmVycyA9IChjdXJMaW5rKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubyA9IGN1ckxpbmsuZ2V0Tm9kZSgpLmlubztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlcnMgPSB0aGlzLl9saXN0ZW5lclJlbW92ZXJzLmdldChpbm8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVtb3ZlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZXJzLmZvckVhY2gociA9PiByKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJSZW1vdmVycy5kZWxldGUoaW5vKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCBjaGlsZExpbmtdIG9mIGN1ckxpbmsuY2hpbGRyZW4uZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRMaW5rICYmIG5hbWUgIT09ICcuJyAmJiBuYW1lICE9PSAnLi4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTGlua05vZGVMaXN0ZW5lcnMoY2hpbGRMaW5rKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmVtb3ZlTGlua05vZGVMaXN0ZW5lcnMobCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLCAncmVuYW1lJywgcGF0aFJlbGF0aXZlKHRoaXMuX2ZpbGVuYW1lLCBsLmdldFBhdGgoKSkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIGNoaWxkcmVuIG5vZGVzIGNoYW5nZWRcbiAgICAgICAgICAgIGZvciAoY29uc3QgW25hbWUsIGNoaWxkTGlua10gb2YgbGluay5jaGlsZHJlbi5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRMaW5rICYmIG5hbWUgIT09ICcuJyAmJiBuYW1lICE9PSAnLi4nKSB7XG4gICAgICAgICAgICAgICAgICAgIHdhdGNoTGlua05vZGVDaGFuZ2VkKGNoaWxkTGluayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbGluayBjaGlsZHJlbiBhZGQvcmVtb3ZlXG4gICAgICAgICAgICBjb25zdCB1bnN1YnNjcmliZUxpbmtDaGFuZ2VzID0gbGluay5jaGFuZ2VzLmxpc3RlbigoW3R5cGUsIGxpbmtdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdjaGlsZDphZGQnKVxuICAgICAgICAgICAgICAgICAgICBvbkxpbmtDaGlsZEFkZChsaW5rKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09PSAnY2hpbGQ6ZGVsJylcbiAgICAgICAgICAgICAgICAgICAgb25MaW5rQ2hpbGREZWxldGUobGluayk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHJlbW92ZXJzID0gdGhpcy5fbGlzdGVuZXJSZW1vdmVycy5nZXQobm9kZS5pbm8pID8/IFtdO1xuICAgICAgICAgICAgcmVtb3ZlcnMucHVzaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdW5zdWJzY3JpYmVMaW5rQ2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAocmVjdXJzaXZlKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbbmFtZSwgY2hpbGRMaW5rXSBvZiBsaW5rLmNoaWxkcmVuLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRMaW5rICYmIG5hbWUgIT09ICcuJyAmJiBuYW1lICE9PSAnLi4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3YXRjaExpbmtDaGlsZHJlbkNoYW5nZWQoY2hpbGRMaW5rKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgd2F0Y2hMaW5rTm9kZUNoYW5nZWQodGhpcy5fbGluayk7XG4gICAgICAgIHdhdGNoTGlua0NoaWxkcmVuQ2hhbmdlZCh0aGlzLl9saW5rKTtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fbGluay5wYXJlbnQ7XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIC8vIHBhcmVudC5vbignY2hpbGQ6ZGVsZXRlJywgdGhpcy5fb25QYXJlbnRDaGlsZCk7XG4gICAgICAgICAgICBwYXJlbnQuY2hhbmdlcy5saXN0ZW4oKFt0eXBlLCBsaW5rXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnY2hpbGQ6ZGVsJylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25QYXJlbnRDaGlsZChsaW5rKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwZXJzaXN0ZW50KVxuICAgICAgICAgICAgdGhpcy5fcGVyc2lzdCgpO1xuICAgIH1cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuZXJSZW1vdmVycy5mb3JFYWNoKHJlbW92ZXJzID0+IHtcbiAgICAgICAgICAgIHJlbW92ZXJzLmZvckVhY2gociA9PiByKCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fbGlzdGVuZXJSZW1vdmVycy5jbGVhcigpO1xuICAgICAgICB0aGlzLl9wYXJlbnRDaGFuZ2VzVW5zdWI/LigpO1xuICAgIH1cbn1cbmV4cG9ydHMuRlNXYXRjaGVyID0gRlNXYXRjaGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dm9sdW1lLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5mc1N5bmNocm9ub3VzQXBpTGlzdCA9IHZvaWQgMDtcbmV4cG9ydHMuZnNTeW5jaHJvbm91c0FwaUxpc3QgPSBbXG4gICAgJ2FjY2Vzc1N5bmMnLFxuICAgICdhcHBlbmRGaWxlU3luYycsXG4gICAgJ2NobW9kU3luYycsXG4gICAgJ2Nob3duU3luYycsXG4gICAgJ2Nsb3NlU3luYycsXG4gICAgJ2NvcHlGaWxlU3luYycsXG4gICAgJ2V4aXN0c1N5bmMnLFxuICAgICdmY2htb2RTeW5jJyxcbiAgICAnZmNob3duU3luYycsXG4gICAgJ2ZkYXRhc3luY1N5bmMnLFxuICAgICdmc3RhdFN5bmMnLFxuICAgICdmc3luY1N5bmMnLFxuICAgICdmdHJ1bmNhdGVTeW5jJyxcbiAgICAnZnV0aW1lc1N5bmMnLFxuICAgICdnbG9iU3luYycsXG4gICAgJ2xjaG1vZFN5bmMnLFxuICAgICdsY2hvd25TeW5jJyxcbiAgICAnbGlua1N5bmMnLFxuICAgICdsc3RhdFN5bmMnLFxuICAgICdta2RpclN5bmMnLFxuICAgICdta2R0ZW1wU3luYycsXG4gICAgJ29wZW5TeW5jJyxcbiAgICAnb3BlbmRpclN5bmMnLFxuICAgICdyZWFkZGlyU3luYycsXG4gICAgJ3JlYWRGaWxlU3luYycsXG4gICAgJ3JlYWRsaW5rU3luYycsXG4gICAgJ3JlYWRTeW5jJyxcbiAgICAncmVhZHZTeW5jJyxcbiAgICAncmVhbHBhdGhTeW5jJyxcbiAgICAncmVuYW1lU3luYycsXG4gICAgJ3JtZGlyU3luYycsXG4gICAgJ3JtU3luYycsXG4gICAgJ3N0YXRTeW5jJyxcbiAgICAnc3ltbGlua1N5bmMnLFxuICAgICd0cnVuY2F0ZVN5bmMnLFxuICAgICd1bmxpbmtTeW5jJyxcbiAgICAndXRpbWVzU3luYycsXG4gICAgJ2x1dGltZXNTeW5jJyxcbiAgICAnd3JpdGVGaWxlU3luYycsXG4gICAgJ3dyaXRlU3luYycsXG4gICAgJ3dyaXRldlN5bmMnLFxuICAgIC8vICdjcFN5bmMnLFxuICAgIC8vICdzdGF0ZnNTeW5jJyxcbl07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mc1N5bmNocm9ub3VzQXBpTGlzdC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZnNDYWxsYmFja0FwaUxpc3QgPSB2b2lkIDA7XG5leHBvcnRzLmZzQ2FsbGJhY2tBcGlMaXN0ID0gW1xuICAgICdhY2Nlc3MnLFxuICAgICdhcHBlbmRGaWxlJyxcbiAgICAnY2htb2QnLFxuICAgICdjaG93bicsXG4gICAgJ2Nsb3NlJyxcbiAgICAnY29weUZpbGUnLFxuICAgICdjcCcsXG4gICAgJ2NyZWF0ZVJlYWRTdHJlYW0nLFxuICAgICdjcmVhdGVXcml0ZVN0cmVhbScsXG4gICAgJ2V4aXN0cycsXG4gICAgJ2ZjaG1vZCcsXG4gICAgJ2ZjaG93bicsXG4gICAgJ2ZkYXRhc3luYycsXG4gICAgJ2ZzdGF0JyxcbiAgICAnZnN5bmMnLFxuICAgICdmdHJ1bmNhdGUnLFxuICAgICdmdXRpbWVzJyxcbiAgICAnZ2xvYicsXG4gICAgJ2xjaG1vZCcsXG4gICAgJ2xjaG93bicsXG4gICAgJ2xpbmsnLFxuICAgICdsc3RhdCcsXG4gICAgJ21rZGlyJyxcbiAgICAnbWtkdGVtcCcsXG4gICAgJ29wZW4nLFxuICAgICdvcGVuQXNCbG9iJyxcbiAgICAnb3BlbmRpcicsXG4gICAgJ3JlYWQnLFxuICAgICdyZWFkdicsXG4gICAgJ3JlYWRkaXInLFxuICAgICdyZWFkRmlsZScsXG4gICAgJ3JlYWRsaW5rJyxcbiAgICAncmVhbHBhdGgnLFxuICAgICdyZW5hbWUnLFxuICAgICdybScsXG4gICAgJ3JtZGlyJyxcbiAgICAnc3RhdCcsXG4gICAgJ3N0YXRmcycsXG4gICAgJ3N5bWxpbmsnLFxuICAgICd0cnVuY2F0ZScsXG4gICAgJ3VubGluaycsXG4gICAgJ3Vud2F0Y2hGaWxlJyxcbiAgICAndXRpbWVzJyxcbiAgICAnbHV0aW1lcycsXG4gICAgJ3dhdGNoJyxcbiAgICAnd2F0Y2hGaWxlJyxcbiAgICAnd3JpdGUnLFxuICAgICd3cml0ZXYnLFxuICAgICd3cml0ZUZpbGUnLFxuXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZzQ2FsbGJhY2tBcGlMaXN0LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tZW1mcyA9IGV4cG9ydHMuZnMgPSBleHBvcnRzLnZvbCA9IGV4cG9ydHMuVm9sdW1lID0gdm9pZCAwO1xuZXhwb3J0cy5jcmVhdGVGc0Zyb21Wb2x1bWUgPSBjcmVhdGVGc0Zyb21Wb2x1bWU7XG5jb25zdCBTdGF0c18xID0gcmVxdWlyZShcIi4vbm9kZS9TdGF0c1wiKTtcbmNvbnN0IERpcmVudF8xID0gcmVxdWlyZShcIi4vbm9kZS9EaXJlbnRcIik7XG5jb25zdCB2b2x1bWVfMSA9IHJlcXVpcmUoXCIuL25vZGUvdm9sdW1lXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVm9sdW1lXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB2b2x1bWVfMS5Wb2x1bWU7IH0gfSk7XG5jb25zdCBjb25zdGFudHNfMSA9IHJlcXVpcmUoXCIuL2NvbnN0YW50c1wiKTtcbmNvbnN0IGZzU3luY2hyb25vdXNBcGlMaXN0XzEgPSByZXF1aXJlKFwiLi9ub2RlL2xpc3RzL2ZzU3luY2hyb25vdXNBcGlMaXN0XCIpO1xuY29uc3QgZnNDYWxsYmFja0FwaUxpc3RfMSA9IHJlcXVpcmUoXCIuL25vZGUvbGlzdHMvZnNDYWxsYmFja0FwaUxpc3RcIik7XG5jb25zdCB7IEZfT0ssIFJfT0ssIFdfT0ssIFhfT0sgfSA9IGNvbnN0YW50c18xLmNvbnN0YW50cztcbi8vIERlZmF1bHQgdm9sdW1lLlxuZXhwb3J0cy52b2wgPSBuZXcgdm9sdW1lXzEuVm9sdW1lKCk7XG5mdW5jdGlvbiBjcmVhdGVGc0Zyb21Wb2x1bWUodm9sKSB7XG4gICAgY29uc3QgZnMgPSB7IEZfT0ssIFJfT0ssIFdfT0ssIFhfT0ssIGNvbnN0YW50czogY29uc3RhbnRzXzEuY29uc3RhbnRzLCBTdGF0czogU3RhdHNfMS5kZWZhdWx0LCBEaXJlbnQ6IERpcmVudF8xLmRlZmF1bHQgfTtcbiAgICAvLyBCaW5kIEZTIG1ldGhvZHMuXG4gICAgZm9yIChjb25zdCBtZXRob2Qgb2YgZnNTeW5jaHJvbm91c0FwaUxpc3RfMS5mc1N5bmNocm9ub3VzQXBpTGlzdClcbiAgICAgICAgaWYgKHR5cGVvZiB2b2xbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIGZzW21ldGhvZF0gPSB2b2xbbWV0aG9kXS5iaW5kKHZvbCk7XG4gICAgZm9yIChjb25zdCBtZXRob2Qgb2YgZnNDYWxsYmFja0FwaUxpc3RfMS5mc0NhbGxiYWNrQXBpTGlzdClcbiAgICAgICAgaWYgKHR5cGVvZiB2b2xbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIGZzW21ldGhvZF0gPSB2b2xbbWV0aG9kXS5iaW5kKHZvbCk7XG4gICAgZnMuU3RhdFdhdGNoZXIgPSB2b2wuU3RhdFdhdGNoZXI7XG4gICAgZnMuRlNXYXRjaGVyID0gdm9sLkZTV2F0Y2hlcjtcbiAgICBmcy5Xcml0ZVN0cmVhbSA9IHZvbC5Xcml0ZVN0cmVhbTtcbiAgICBmcy5SZWFkU3RyZWFtID0gdm9sLlJlYWRTdHJlYW07XG4gICAgZnMucHJvbWlzZXMgPSB2b2wucHJvbWlzZXM7XG4gICAgLy8gSGFuZGxlIHJlYWxwYXRoIGFuZCByZWFscGF0aFN5bmMgd2l0aCB0aGVpciAubmF0aXZlIHByb3BlcnRpZXNcbiAgICBpZiAodHlwZW9mIHZvbC5yZWFscGF0aCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmcy5yZWFscGF0aCA9IHZvbC5yZWFscGF0aC5iaW5kKHZvbCk7XG4gICAgICAgIGlmICh0eXBlb2Ygdm9sLnJlYWxwYXRoLm5hdGl2ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgZnMucmVhbHBhdGgubmF0aXZlID0gdm9sLnJlYWxwYXRoLm5hdGl2ZS5iaW5kKHZvbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2b2wucmVhbHBhdGhTeW5jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGZzLnJlYWxwYXRoU3luYyA9IHZvbC5yZWFscGF0aFN5bmMuYmluZCh2b2wpO1xuICAgICAgICBpZiAodHlwZW9mIHZvbC5yZWFscGF0aFN5bmMubmF0aXZlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBmcy5yZWFscGF0aFN5bmMubmF0aXZlID0gdm9sLnJlYWxwYXRoU3luYy5uYXRpdmUuYmluZCh2b2wpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZzLl90b1VuaXhUaW1lc3RhbXAgPSB2b2x1bWVfMS50b1VuaXhUaW1lc3RhbXA7XG4gICAgZnMuX192b2wgPSB2b2w7XG4gICAgcmV0dXJuIGZzO1xufVxuZXhwb3J0cy5mcyA9IGNyZWF0ZUZzRnJvbVZvbHVtZShleHBvcnRzLnZvbCk7XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgZmlsZSBzeXN0ZW0gaW5zdGFuY2UuXG4gKlxuICogQHBhcmFtIGpzb24gRmlsZSBzeXN0ZW0gc3RydWN0dXJlIGV4cHJlc3NlZCBhcyBhIEpTT04gb2JqZWN0LlxuICogICAgICAgIFVzZSBgbnVsbGAgZm9yIGVtcHR5IGRpcmVjdG9yaWVzIGFuZCBlbXB0eSBzdHJpbmcgZm9yIGVtcHR5IGZpbGVzLlxuICogQHBhcmFtIGN3ZCBDdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiBUaGUgSlNPTiBzdHJ1Y3R1cmUgd2lsbCBiZSBjcmVhdGVkXG4gKiAgICAgICAgcmVsYXRpdmUgdG8gdGhpcyBwYXRoLlxuICogQHJldHVybnMgQSBgbWVtZnNgIGZpbGUgc3lzdGVtIGluc3RhbmNlLCB3aGljaCBpcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yXG4gKiAgICAgICAgICB0aGUgYGZzYCBtb2R1bGUuXG4gKi9cbmNvbnN0IG1lbWZzID0gKGpzb24gPSB7fSwgY3dkID0gJy8nKSA9PiB7XG4gICAgY29uc3Qgdm9sID0gdm9sdW1lXzEuVm9sdW1lLmZyb21OZXN0ZWRKU09OKGpzb24sIGN3ZCk7XG4gICAgY29uc3QgZnMgPSBjcmVhdGVGc0Zyb21Wb2x1bWUodm9sKTtcbiAgICByZXR1cm4geyBmcywgdm9sIH07XG59O1xuZXhwb3J0cy5tZW1mcyA9IG1lbWZzO1xubW9kdWxlLmV4cG9ydHMgPSB7IC4uLm1vZHVsZS5leHBvcnRzLCAuLi5leHBvcnRzLmZzIH07XG5tb2R1bGUuZXhwb3J0cy5zZW1hbnRpYyA9IHRydWU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgKiBhcyBtZW1mc0V4cG9ydGVkIGZyb20gJ21lbWZzJ1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJ1xuXG5jb25zdCB7IGNyZWF0ZUZzRnJvbVZvbHVtZSwgVm9sdW1lLCBmcywgbWVtZnMgfSA9IG1lbWZzRXhwb3J0ZWRcblxuZXhwb3J0IHsgY3JlYXRlRnNGcm9tVm9sdW1lLCBWb2x1bWUsIGZzLCBtZW1mcywgbWVtZnNFeHBvcnRlZCwgQnVmZmVyIH1cbiJdLCJuYW1lcyI6WyJjb25zdGFudHMiLCJTdGF0c18xIiwicmVxdWlyZSQkMCIsIlN0YXRzIiwiYmFzZTY0LmZyb21CeXRlQXJyYXkiLCJpZWVlNzU0LnJlYWQiLCJpZWVlNzU0LndyaXRlIiwiZXJyb3JzIiwiYmFzZTY0LnRvQnl0ZUFycmF5IiwiZXhwb3J0cyIsInV0aWwiLCJnbG9iYWwiLCJyZXF1aXJlJCQxIiwiRGlyZW50XzEiLCJEaXJlbnQiLCJicm93c2VyTW9kdWxlIiwicHJvY2VzcyIsInByb2Nlc3NfMSIsIk5vZGVfMSIsInJlcXVpcmUkJDIiLCJyZXF1aXJlJCQzIiwiTm9kZSIsIkxpbmtfMSIsIkxpbmsiLCJGaWxlXzEiLCJGaWxlIiwicXVldWVNaWNyb3Rhc2tfMSIsInJlcXVpcmUkJDQiLCJ0aGlzIiwidW5kZWZpbmVkIiwicmVxdWlyZSQkNSIsInJlcXVpcmUkJDYiLCJyZXF1aXJlJCQ3IiwicmVxdWlyZSQkOCIsInJlcXVpcmUkJDkiLCJyZXF1aXJlJCQxMCIsInJlcXVpcmUkJDExIiwicmVxdWlyZSQkMTIiLCJyZXF1aXJlJCQxMyIsInJlcXVpcmUkJDE0IiwicmVxdWlyZSQkMTUiLCJyZXF1aXJlJCQxNiIsInJlcXVpcmUkJDE3IiwicmVxdWlyZSQkMTgiLCJyZXF1aXJlJCQxOSIsInJlcXVpcmUkJDIwIiwicmVxdWlyZSQkMjEiLCJyZXF1aXJlJCQyMiIsInJlcXVpcmUkJDIzIiwicmVxdWlyZSQkMjQiLCJyZXF1aXJlJCQyNSIsInJlcXVpcmUkJDI2IiwicmVxdWlyZSQkMjciLCJ1dGlscyIsImxpYiIsIlN1cGVyYmxvY2tfMSIsIlN1cGVyYmxvY2siLCJTdGF0RnNfMSIsIlN0YXRGcyIsInNldFRpbWVvdXRVbnJlZl8xIiwic2V0VGltZW91dFVucmVmIiwiZXZlbnRzTW9kdWxlIiwiZW5kT2ZTdHJlYW1Nb2R1bGUiLCJzdHJlYW1Nb2R1bGUiLCJGaWxlSGFuZGxlXzEiLCJGaWxlSGFuZGxlIiwiRnNQcm9taXNlc18xIiwiRnNQcm9taXNlcyIsInByaW50VHJlZV8xIiwicHJpbnRUcmVlIiwicHJpbnRCaW5hcnlfMSIsInByaW50QmluYXJ5IiwicHJpbnRKc29uXzEiLCJwcmludEpzb24iLCJEaXJfMSIsIkRpciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUdBLFdBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3hDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUNqQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7S0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0tBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUU7S0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHO0tBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUc7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUc7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUc7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUc7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUc7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFFO0tBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBRTtLQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUU7S0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFFO0tBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUM7S0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztLQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDO0tBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUM7S0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztLQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0tBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7S0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztLQUNQLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0tBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixFQUFFLENBQUM7S0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsRUFBRSxDQUFDO0tBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLEVBQUUsQ0FBQztLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixFQUFFLENBQUM7S0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsRUFBRSxDQUFDO0tBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFDO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQztLQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixFQUFFLENBQUM7RUFDNUI7QUFDRDs7Ozs7Ozs7O0FDcERBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBdUI7Q0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN4RyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUM7S0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFDO0FBQ25GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsR0FBRyxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxHQUFHLENBQUM7U0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxJQUFJLENBQUM7U0FDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO1NBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDLENBQUM7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUM7U0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQztTQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztTQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxPQUFPLENBQUM7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE9BQU8sQ0FBQztBQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQyxDQUFDO1NBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtTQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxPQUFPLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxPQUFPLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUc7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxpQkFBaUIsQ0FBQSxDQUFBLENBQUc7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxjQUFjLENBQUEsQ0FBQSxDQUFHO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLE9BQU8sQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLE9BQU8sQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLFFBQVEsQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHRSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFLO0FBQ3JCLENBQUFGLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHRSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFLO0FBQ3ZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtDQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0dBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2xDLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtDQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTs7Q0FFL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnRDtBQUNwRSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTs7QUFFbEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtPQUMvQjtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUE7O0FBRXZCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ25DLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0dBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xELENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsZUFBZSxDQUFBLENBQUU7R0FDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLGVBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEQsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBOztBQUU5QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxlQUFlLENBQUMsQ0FBQTs7R0FFN0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUE7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUc7T0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRU4sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBO09BQ0QsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO09BQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQTtLQUNqQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUMvQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUE7T0FDRCxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBO09BQ0QsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUE7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQTtLQUN4QyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVCxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7R0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3JCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7R0FDSixDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQTtPQUNELENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO1FBQzNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDdkIsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtHQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUU1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxjQUFjLENBQUEsQ0FBRTtLQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQyxDQUFBO0FBQy9GLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQTtLQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUE7T0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBO09BQ3pCLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQTtLQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUE7T0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBO09BQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQTtPQUN6QixDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUN0QixDQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUNwSkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7R0FDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBO0dBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtHQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0dBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQTs7QUFFM0IsQ0FBQSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7O0dBRUwsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBO0dBQzVCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUE7O0dBRTFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQTtHQUM1QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBOztBQUU1RSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0tBQ1gsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDTCxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0tBQ3hCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hELENBQUEsQ0FBQTs7QUFFQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7QUFDckUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBO0dBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtHQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUE7R0FDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7O0FBRTVELENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7O0dBRXRCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0tBQ3RDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUE7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtPQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO09BQ3hDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtPQUNMLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0dBRUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQTs7QUFFaEYsQ0FBQSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBOztHQUU3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQTs7Ozs7O0FDcEZBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQU1BLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUE7QUFDekIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxpQkFBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBOztBQUUxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFbkIsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUE7O0FBRTlDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJFLENBQUE7QUFDL0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBO0FBQ0E7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsaUJBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUE7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN6QixDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRTtBQUNGOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2xELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBRTtBQUNGLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNsRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBRTtBQUNGLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdDO0FBQ2xGLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNuQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDN0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUMxQixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMzQzs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzdDLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzlCLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2RSxDQUFBO0FBQ25GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLFdBQVcsQ0FBQyxDQUFBLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDMUQsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLGlCQUFpQixDQUFDLENBQUEsQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxRCxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDaEQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDeEQsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM1QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUVoQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3BGLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkUsQ0FBQTtBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxRCxDQUFBLENBQUE7QUFDQTs7QUFFQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN6RCxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM3QyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7O0FBRXhDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0M7QUFDaEUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsYUFBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQztBQUNoRixDQUFBLENBQUU7QUFDRjs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDakIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDNUIsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEMsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFCOztBQUVBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDakIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3REOztBQUVBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3pCLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN6QixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3ZELENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDaEQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBOztBQUUvQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTs7QUFFM0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQzdCLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDaEUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNqQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN4RSxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDaEM7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsZUFBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7QUFDckQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNDO0FBQy9ELENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNDO0FBQy9ELENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDOUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUMxQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDbEQsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBOztBQUU3QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTs7QUFFaEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSTs7QUFFSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUM1QixDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNqQyxDQUFBLENBQUU7QUFDRjs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlELENBQUE7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMxRSxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2xCOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDYixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDN0I7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE9BQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUMxRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDMUUsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUV0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNwQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNULENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDbkQsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZDO0FBQ3JFLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUM7QUFDekIsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDTixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUMxQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZDO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFFO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRFLENBQUE7QUFDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2xFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzs7QUFFdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFO0FBQ0Y7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsWUFBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1osQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDWCxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDWCxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ1gsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFYixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDWCxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTVCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUc7O0FBRXhDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUc7O0FBRXpDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUc7O0FBRTFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFHOztBQUUzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBRzs7QUFFM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBRzs7QUFFNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUU7QUFDRjs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2YsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNaLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDVDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDN0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJDO0FBQ3BFLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3ZCLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDN0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJDO0FBQ3BFLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzdDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQztBQUNwRSxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDM0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDOUQsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzNDLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCO0FBQzFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMvQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUNuRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDNUIsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksbUJBQW1CLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDckYsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDakUsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtFLENBQUE7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDWixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ25DLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDaEIsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ2xGLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUM3QyxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDWCxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ1gsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ2IsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNYLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDakIsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFZixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87O0FBRTlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUE7O0FBRTNCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ2hELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBOztBQUU1QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNwQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNULENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTs7QUFFbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDakIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxXQUFXLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBO0FBQzdDLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkQsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN0QyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ2hCLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNuQyxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUc7QUFDOUQsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUc7QUFDaEUsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQztBQUM1RDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM1RCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDbEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUV0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUE7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNOLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7QUFDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUMxRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNyRCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUN4RSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuRSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDaEYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwRSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDN0IsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUV4QixDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDdEIsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNOLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakY7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ2xELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDN0Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDbkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzlEOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3BGOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTNELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdDO0FBQ2pFLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFNUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNOztBQUVwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07O0FBRXJELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07O0FBRXRELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNOztBQUV2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07O0FBRXJELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFO0FBQ0YsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDN0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQ3pELENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBT0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNuQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBT0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckQsQ0FBQSxDQUFFO0FBQ0Y7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2hDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTs7QUFFZCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBOztBQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBRTtBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxhQUFhLENBQUEsQ0FBQSxDQUFHLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNyRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUM3RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMzRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ25JLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksYUFBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFBLENBQUU7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUk7O0FBRUosQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSTs7QUFFSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNsQzs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sb0JBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUU3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDekIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEQsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDVixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNUOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBOztBQUVoQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUM1QyxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTs7QUFFaEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDckMsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVsQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDbkMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTs7QUFFMUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDckMsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsWUFBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3BDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBO0FBQzlELENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNUOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNyRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQTs7QUFFcEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDM0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3ZCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXpCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7O0FBRWhELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7O0FBRUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ2pGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUM7QUFDekY7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDakYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDOUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFNUQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDdkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1osQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDOUIsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNULENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDakYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDOUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQy9DLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUN0QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUN6QyxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1QsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ25FLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ25ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNwQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDekUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDbkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM5QyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDekUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDbkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO0FBQzlDLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN6RSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFbkQsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNuQyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDekUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7O0FBRW5ELENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNwQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3hGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQ2pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDM0IsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUE7QUFDOUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUE7QUFDdkMsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBOztBQUUxQixDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQztBQUMvQyxDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDeEYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDakMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUMzQixDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQTtBQUM5QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQTtBQUN2QyxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBOztBQUVqQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVKLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDL0MsQ0FBQyxDQUFBOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQy9FLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7O0FBRTVELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3ZCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNWLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFVCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7O0FBRW5ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNULENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDL0UsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDOUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFNUQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1osQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDLENBQUE7QUFDN0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVULENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTs7QUFFbkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1QsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDakUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDbkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQztBQUNsRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3hDLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3ZFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ25ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDbkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDN0MsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDdkUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDbkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNuRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUM3QyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN2RSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFbkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBRTtBQUMzQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN2RSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFbkQsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3JCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN0RixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNqQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQzNCLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBO0FBQ3ZDLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVoQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFO0FBQzVCLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3RGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQ2pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDM0IsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUE7QUFDOUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUE7QUFDdkMsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFakIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDdkUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDbkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU9DLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQy9DLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3ZFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ25ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQ2hELENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN6RSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNuRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBT0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7QUFDL0MsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3pFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ25ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQ2hELENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUN0RCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QztBQUM5RixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUM7QUFDMUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUMxRTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQzFGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUE7QUFDekQsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNWLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDekIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQzFGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUE7QUFDekQsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3ZCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUM1RSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQTtBQUN6RCxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDOUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDbEYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBO0FBQzNELENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUM5QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0FBQ2pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2xGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQTtBQUMzRCxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFDLENBQUE7QUFDN0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2xGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQyxDQUFBO0FBQy9ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQTtBQUNsQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUE7QUFDbEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQTtBQUNqQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDOUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDbEYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFDLENBQUE7QUFDL0QsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFFLENBQUE7QUFDOUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBO0FBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7QUFDakMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3ZELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBOztBQUU1QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUE7QUFDNUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNiLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDYixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7QUFDMUQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNiLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDYixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNUOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUE7O0FBRTVDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQTtBQUM1QyxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2IsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNiLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDYixDQUFBLENBQUUsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUMxRCxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2IsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNiLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDYixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2xCOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNyRyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLG9CQUFvQixDQUFDO0FBQ3BGLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDckcsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxvQkFBb0IsQ0FBQztBQUNwRixDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDeEYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUMsQ0FBQTs7QUFFbEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQy9ELENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDVixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDWixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEQsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUN4RixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQyxDQUFBOztBQUVsRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDL0QsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3ZCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEQsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQzFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzdELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDeEMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2hGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDakUsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7QUFDakMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDaEYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNqRSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFDLENBQUE7QUFDN0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2hGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUE7QUFDekUsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7QUFDakMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBO0FBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQTtBQUNsQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNoRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBO0FBQ3pFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDOUMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFFLENBQUE7QUFDOUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBO0FBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7QUFDakMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDbkcsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLG9CQUFvQixDQUFDO0FBQ3hHLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDbkcsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLG9CQUFvQixDQUFDO0FBQ3hHLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDMUQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUMxRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQzNEOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFrRCxDQUFBO0FBQ3ZGLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRUMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUE7QUFDdkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBRztBQUNsQjs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2hGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDdkQsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2hGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN4RCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2xFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQW9ELENBQUE7QUFDekYsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQTtBQUN2RCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2xCOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2xGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN4RCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2xGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3pELENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3hFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QjtBQUNqRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDekQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNsQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzVCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUV2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkI7QUFDcEQsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUNsRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5Qjs7QUFFN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hDLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVwQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzNDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNwQixDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRTtBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDN0MsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7O0FBRWxELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQTs7QUFFbEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNOLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTUMsUUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBRUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBOztBQUVYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxZQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7O0FBRVAsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUVKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUVKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUVKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFBLENBQUE7QUFDQTs7QUFFQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQjtBQUM1QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QjtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUVKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUNmLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUN4QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUN6RixDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDZCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3BCLENBQUEsQ0FBRSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsY0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQTtBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDakYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUE7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBOztBQUVmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3JDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUE7QUFDeEMsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ2xDOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxVQUFVLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQ2pDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUE7QUFDckQsQ0FBQSxDQUFFO0FBQ0Y7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsVUFBVSxDQUFBLENBQUU7QUFDL0QsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUF3QjtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUMsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQTtBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUE7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUE7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBR0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzRCxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUNyQzs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMvRCxDQUFBLENBQUU7QUFDRjs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0UsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBO0FBQzdDLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9DLENBQUMsR0FBRyxDQUFBLENBQWEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDekM7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxpQkFBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7O0FBRWhCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBOztBQUVuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBRTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE1BQU0sQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7O0FBRVIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07O0FBRU4sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxhQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07O0FBRU4sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBSTs7QUFFSixDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUMzQyxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUE7QUFDckIsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNUOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUUsT0FBT0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxHQUFHLENBQUM7QUFDNUM7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDTixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBO0FBQzNCLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEM7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDN0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQyxDQUFBLENBQUEsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxzQkFBc0IsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNsRTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxzQkFBc0IsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VDdGpFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0VBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBR1AsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBc0I7RUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQ2pILENBQUE7Ozs7Ozs7Ozs7O0VDSkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0VBQzdEQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0VBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR1AsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW9CO0VBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQzVHLENBQUEsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUU7TUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdDLENBQUEsQ0FBQTtFQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGlCQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CO0FBQzVFLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtFQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CO0FBQzlELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDL0IsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7QUNYQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDM0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM3QixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3pCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBRTtLQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLGdEQUFnRCxDQUFDO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLHNEQUFzRCxDQUFDO0FBQ25GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7S0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxXQUFXLENBQUEsQ0FBRTthQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7VUFDckI7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ04sQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLGtEQUFrRCxDQUFDO0FBQy9FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7U0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2lCQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO3FCQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7c0JBQ3FCO3FCQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0tBQ1YsQ0FBSztBQUNMLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0tBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUM7S0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7Y0FDL0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDO2NBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxFQUFFLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUN4QixDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0tBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0tBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsR0FBRyxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFHO2FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFFO1NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakIsQ0FBQTtBQUNBOzs7Ozs7Ozs7O0FDOUdBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUFELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUFBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQSxDQUFvQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN4RixDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3pCLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQztFQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHUCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBa0I7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFDO0VBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7RUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBRTtjQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNLO0FBQ0wsQ0FBQSxDQUFBO0VBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBR1MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTTtBQUNqRSxDQUFBLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQztNQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtVQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO2NBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUlGLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDcEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxPQUFPLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUNhO2NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6SixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtVQUNoQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUM7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUN2QyxDQUFBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsb0NBQW9DLENBQUM7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUM7TUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7VUFDM0IsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUNTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1VBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3hDLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLFNBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFDO0FBQ2pFLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUN0QyxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQzlDLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLDZCQUE2QixDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLENBQUEsQ0FBRSx3RkFBd0YsQ0FBQztBQUMzSCxDQUFBLENBQUEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUUsa0RBQWtELENBQUM7QUFDbEYsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFFLGtCQUFrQixDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFBLENBQUEsQ0FBQyxDQUFDO0FBQ0YsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtDLENBQUMsQ0FBQztBQUM3RyxDQUFBLENBQUEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFFLDZCQUE2QixDQUFDO0FBQ3pELENBQUE7Ozs7Ozs7Ozs7O0VDM0VBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM5QixDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUN2QyxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0VBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR1AsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXdDO0VBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBd0M7QUFDdkQsQ0FBQSxDQUFBSCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07RUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtNQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7VUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUM5RSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO01BQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBS0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7VUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtVQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkQsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7Ozs7Ozs7OztBQ2xCQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNJLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHWCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBdUI7Q0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXNCO0NBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDeEcsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7U0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsYUFBYSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtTQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLE9BQU8sQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksaUJBQWlCLENBQUEsQ0FBQSxDQUFHO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLE9BQU8sQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFBLENBQUEsQ0FBRztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxPQUFPLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxPQUFPLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxRQUFRLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQUMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFNO0FBQ3ZCLENBQUFELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFNO0FBQ3hCOzs7Ozs7Ozs7Ozs7Ozs7QUNwREEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBR0MsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsR0FBRyxDQUFBLENBQUU7O0FBRWpDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNwQixDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCOztBQUV0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGdCQUFnQixDQUFBLENBQUEsQ0FBRztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxpQ0FBaUMsQ0FBQztBQUN0RCxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxtQkFBbUIsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxtQ0FBbUMsQ0FBQztBQUN4RCxDQUFBO0FBQ0EsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7YUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07YUFDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0EsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7U0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTthQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2FBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUI7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtTQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtTQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUM7S0FDdkMsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQztTQUN0RCxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7O0FBR0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtTQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0tBQ3pDLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxrQkFBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsTUFBTSxDQUFDO1NBQ3hELENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLGtCQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7QUFJQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0NBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtDQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFOztBQUVuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGVBQWUsQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFlBQVksQ0FBQSxDQUFFO1NBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFVBQVUsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxVQUFVLENBQUEsQ0FBQSxDQUFHO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7U0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLGVBQWUsQ0FBQztLQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUVuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBRTtTQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFO2FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQzVCLENBQUE7O0FBRUEsQ0FBQSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUU7S0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTthQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0tBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtTQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3RCLENBQUE7QUFDQSxDQUFBLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0NBQ3BDLENBQUM7Q0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0NBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtDQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFOztBQUVyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQTs7Q0FFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0NBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0NBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0NBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTs7Q0FFbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQTs7QUFFL0MsQ0FBQSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGtDQUFrQyxDQUFDO0NBQ3ZELENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsWUFBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsZ0NBQWdDLENBQUM7Q0FDckQsQ0FBQztDQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFFOzs7Ozs7Ozs7Ozs7OztDQzdKeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ2xGLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsY0FBYyxDQUFBLENBQUU7R0FDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7R0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtHQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNkLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNWLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQztVQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtPQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FFdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDckosQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTthQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLGNBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxHQUFHLENBQUM7YUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxjQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFO2lCQUN6QixDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRTtpQkFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLEdBQUcsQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2lCQUNMLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLEdBQUcsQ0FBQztBQUN6RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUNjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQztlQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDO2VBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO2FBQy9DLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFO2FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixHQUFHLENBQUM7YUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFDO2FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUM7YUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7YUFDaEIsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO1dBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixHQUFHLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLGlCQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFDO09BQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUM7S0FDZCxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtPQUNMLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDWixDQUFBOztBQUVBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFO0dBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM3QyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0dBQzlFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2YsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsSUFBSSxDQUFBLENBQUU7S0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3JCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDekIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRztLQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRzs7S0FFUCxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGdCQUFnQixDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtPQUNSLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQztZQUNoQjtTQUNILENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQSxDQUFFO1NBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztPQUVNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7O0FBRXRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7U0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFlBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO09BQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsWUFBWSxDQUFBLENBQUUsQ0FBQyxnQkFBZ0IsQ0FBQzs7S0FFcEUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxnQkFBZ0IsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQztTQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQSxDQUFHOztBQUVILENBQUEsQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFBLENBQUU7S0FDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzs7S0FFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFHOztLQUVqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxVQUFVLENBQUM7O0FBRWxELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztLQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHOztBQUV6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0dBQ2YsQ0FBRzs7QUFFSCxDQUFBLENBQUEsQ0FBRSxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsSUFBSSxDQUFBLENBQUU7S0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDdkQsQ0FBRzs7QUFFSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQztPQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtTQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztXQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE1BQU0sQ0FBQztHQUNsQyxDQUFHOztHQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0tBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFDOztBQUVsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFOztBQUU5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxFQUFFLENBQUM7O0FBRTFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7O0FBRTlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQztLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO09BQzNDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTOztBQUVyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQztLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO09BQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUUvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7V0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFFO1dBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEdBQUcsQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsR0FBRyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO09BQzdDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO09BQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7WUFDRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsR0FBRyxDQUFDO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDO1dBQ2xCLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUNVLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7T0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUM7VUFDM0M7T0FDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtPQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUc7O0FBRUgsQ0FBQSxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0dBQ2YsQ0FBRzs7QUFFSCxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFBLENBQUU7S0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUMsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUc7S0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtXQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO2FBQ2pCLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQzthQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztLQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUM7R0FDN0IsQ0FBRzs7R0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsaUNBQWlDLENBQUM7S0FDeEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzs7S0FFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQzs7QUFFVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7U0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztlQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUNjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFFO2VBQ1gsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztPQUVNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtPQUNoRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7U0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztlQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUNVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtPQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQSxDQUFHOztBQUVILENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxJQUFJLENBQUEsQ0FBRTtLQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO09BQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUNVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7YUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQztnQkFDVCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQzthQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEtBQUssQ0FBQyxDQUFBLENBQUE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxHQUFHLENBQUM7R0FDcEMsQ0FBRzs7QUFFSCxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFVBQVUsQ0FBQSxDQUFFO0tBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtPQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsa0VBQWtFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sVUFBVSxDQUFDO0FBQ2pILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsVUFBVSxDQUFDO0dBQ25DLENBQUc7O0FBRUgsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsSUFBSSxDQUFBLENBQUU7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzs7S0FFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0tBQzVELENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBRztLQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNULENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7T0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07T0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQzs7QUFFM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFDOztBQUV2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUNVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEdBQUcsQ0FBQztBQUN2RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEtBQUssQ0FBQyxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUN6SSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBRTtTQUNqQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO1NBQ2xDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDTCxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztTQUMxQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7O0FBRWhHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0dBQ2QsQ0FBRzs7R0FFRCxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHO0dBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBRztHQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDYixDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQTtFQUNSOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7O0FBRW5CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLOzs7Ozs7Ozs7O0VDL2dCdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQVAsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0VBQzdEQSxTQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxjQUFvQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBa0JBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CQSxpQkFBZUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0JBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxDQUFjQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUN0SyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR1AsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW9CO0VBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUNqSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUN6RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQzdHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUMzRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQ25ILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUNqSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUNySCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7RUFDdkgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUNuSCxDQUFBOzs7Ozs7O0FDYkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUE7QUFDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzVCLENBQUM7O0FBRU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBK0IsQ0FBQztBQUMvRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNyQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUN0Rjs7QUFFTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNqQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDO0FBQ2QsQ0FBQSxDQUFFLENBQUE7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQ3hDLENBQUE7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNWOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDMUQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzlILENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNoSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDbkosQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQy9EOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUM7QUFDdEU7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxpQkFBaUIsQ0FBQSxDQUFFO0FBQ3pHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUN4SCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsRyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3pGLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsWUFBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLHdCQUF3QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDO0FBQzFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckIsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQztBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQztBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3RCxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25MLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNwSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsaUJBQWlCLENBQUM7QUFDbkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUM7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUM7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxVQUFVLENBQUM7QUFDdkUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2I7QUFFTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxpQkFBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQ2hFLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO0FBQ3JDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDN0YsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2xDO0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2pEO0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNoRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUN0SDtBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLGFBQWEsQ0FBQSxDQUFFO0FBQ3ZELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQztBQUNoSTs7QUFFTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUM3RCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25HLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUM7QUFDbkgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDM0UsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNKOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQ2xNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDO0FBQzdKLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxpQ0FBaUMsQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDdEssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDN0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ3ZHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN0RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDdEYsQ0FBQSxDQUFFO0FBQ0Y7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUNwRSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDOUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFO0FBQ3JGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNuRSxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNwQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQzlCLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2QsQ0FBQyxDQUFDOztBQUVLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDL0c7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUMvRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFHO0FBQ0gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQyxDQUFDO0FBQ3hGOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFDO0FBQzVELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ2xCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsRUFBRSxDQUFDO0FBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNoRixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUN0QyxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDWDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxRQUFRLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDWDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxjQUFjLENBQUEsQ0FBQSxDQUFHO0FBQ2pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNWOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGFBQWEsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDdkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsT0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUMxRDs7QUFFTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUM7QUFDdEU7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFO0FBQ2pFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQyxDQUFDO0FBQ3hGLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDL0QsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQztBQUN6TixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRyxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6SyxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRixDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssWUFBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6SCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25GOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQztBQUNWLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxZQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUM7QUFDN0ksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkk7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQyxDQUFDO0FBQ3hGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFFLENBQUM7QUFDcEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ2xOLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQztBQUM3SDs7QUFFTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ2xELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ2hILENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2Y7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUM7QUFDckUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxHQUFHLENBQUM7QUFDbEIsQ0FBQzs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLG1CQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtBQUNiLENBQUEsQ0FBRSxDQUFDO0FBQ0gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUNuQixDQUFDOztBQUVNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDdkMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ2pDLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2Y7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3pEOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNqRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLCtDQUErQyxDQUFDO0FBQzlGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEUsQ0FBQztBQUNwTCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFDO0FBQy9GOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDeEUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQztBQUN6RSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLCtDQUErQyxDQUFDO0FBQzlGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlFLENBQUM7QUFDbkwsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNHOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0MsQ0FBQztBQUMxSixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFDO0FBQy9FOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLHVCQUF1QixDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUMzRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLGtCQUFrQixDQUFDO0FBQ3pHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQyxDQUFDO0FBQzFGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxZQUFZLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQztBQUNoRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUM7QUFDcEYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQztBQUNwRSxDQUFBLENBQUU7QUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDO0FBQ25DLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNkOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQ3ZILENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUM7QUFDNUIsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFDO0FBQ2xGLENBQUM7O0FBRU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEMsQ0FBQyxHQUFHLENBQUM7QUFDakgsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDO0FBQ2QsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztBQUM5RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsSUFBSSxDQUFDO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ3BGLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckMsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUU7QUFDZjs7QUFFTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsV0FBVyxDQUFBLENBQUU7QUFDcEUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLGtEQUFrRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0FBQzVHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQztBQUN4SCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7QUFDUixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2I7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNmLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDVixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2QsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7QUFDbkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ1gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7QUFDbkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ2pCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNkLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDVixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNoQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNmLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ2xCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNsQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNmLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNkLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNqQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0I7QUFDeEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCO0FBQ3hCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7QUFDdkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUI7QUFDekIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUNwQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQztBQUNsQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvWUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdEOzs7Ozs7Ozs7OztBQ0RBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdQLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF5QztDQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQThCO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLElBQUksQ0FBQzthQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDL0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7aUJBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBO2lCQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxhQUFhLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDaUI7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsVUFBVSxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtDQUNuQixDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDakM7Ozs7Ozs7Ozs7Ozs7QUNqQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxRQUFRLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Ozs7Ozs7Ozs7O0FDZnZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDSyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDckMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBT0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBT0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU9kLGdCQUFBLENBQUEsQ0FBa0I7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxhQUFhLENBQUEsQ0FBQSxDQUFHO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztTQUNkLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUM7U0FDaEUsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDO0FBQ1osQ0FBQTtBQUNBLENBQUFlLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLGFBQWEsQ0FBQSxDQUFFO0FBQ2pDOzs7Ozs7Ozs7QUN0Q0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHaEIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQThCO0NBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBcUI7Q0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUM7Q0FDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBdUI7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztDQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztDQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztDQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFFO1NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUc7U0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHO1NBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUc7U0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUc7U0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO1NBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxDQUFDLENBQUM7U0FDakQsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFDO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztTQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRztTQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUc7U0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksaUJBQWlCLENBQUEsQ0FBQSxDQUFHO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztTQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUM7YUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7aUJBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxJQUFJLENBQUM7YUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQztBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtTQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFDO1NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7U0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQzVILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7U0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO2FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO2NBQ2Q7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUM7aUJBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO3FCQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsSUFBSSxDQUFDO2lCQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ3ZDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUM7U0FDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO1NBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7U0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7U0FDRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFBLENBQUU7VUFDekI7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBRixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBR0csQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBSTtBQUNuQjs7Ozs7Ozs7Ozs7QUM3UkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHcEIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXVCO0NBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQThCO0FBQy9DLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3pDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQztLQUNQLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRztTQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBRTthQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtpQkFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO1NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7U0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFDO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBRTthQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtTQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtTQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFFO2FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQztTQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO1NBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7U0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7U0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksYUFBYSxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUM7VUFDN0M7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRztTQUNSLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3RGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUFVLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFJO0FBQ25COzs7Ozs7Ozs7OztBQ3RHQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNDLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUd0QixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBdUI7QUFDM0MsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUMxQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFNBQVMsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxHQUFHLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUc7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFNBQVMsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxHQUFHLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO1NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQXNCLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFJO0FBQ25COzs7Ozs7Ozs7Ozs7O0FDdEVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHdkIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXVCO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRztLQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThDO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCO0tBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQjtLQUMvQixDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCO0tBQ2pDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QjtLQUNsQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkI7S0FDbEMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0I7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQjtLQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCO0tBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QjtLQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzRDtLQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQjtLQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQjtLQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCO0VBQzFDO0NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDeEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7Q0FDVCxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztDQUM5QyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3pDOzs7Ozs7Ozs7Ozs7O0FDdkRBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ3dCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxjQUFjLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNoRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3RCOzs7Ozs7Ozs7Ozs7RUNKQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBakIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQUEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsT0FBQSxDQUFBLENBQUEsQ0FBa0JBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDcEYsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDL0IsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0VBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHUCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBOEI7RUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUM7RUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFxQjtFQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBc0I7RUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNEI7QUFDaEQsQ0FBQSxDQUFBbEIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQzVELENBQUEsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBS0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0VBQ3RFLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO01BQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFO01BQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7RUFDL0IsQ0FBQztBQUNELENBQUEsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsYUFBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsbUJBQW1CLENBQUM7TUFDNUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO01BQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFDLEdBQUcsQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0VBQ2QsQ0FBQztFQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxhQUFhLENBQUM7VUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFFLEVBQUUsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0VBQ25CLENBQUM7QUFDRCxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNoRyxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0VBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO01BQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87TUFDeEJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUNsRyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7TUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxJQUFJLENBQUM7TUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0saUJBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFDO01BQy9DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFDO0VBQzNDLENBQUM7QUFDRCxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7RUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDOUIsQ0FBQSxDQUFBO0VBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUM7VUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUM7QUFDOUMsQ0FBQSxDQUFBO0VBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRTtNQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtXQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO1VBQy9CLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxJQUFJLENBQUM7V0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUMvRCxDQUFBLENBQUE7QUFDQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4RUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBRTs7QUFFakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBaUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPO0FBQzlCLENBQUEsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0dBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPRSxjQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU07R0FDcEQsQ0FBQSxDQUFBLENBQUE7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBO0lBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNuQjtJQUNELENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ25CLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFROztBQUViLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0dBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUM7R0FDUixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0dBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtHQUNULENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztHQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUEsQ0FBRTtHQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztHQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRztJQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpRDtJQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0Q7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBRSxlQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDakI7O0FBRUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM1QixDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNuQixDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTs7QUFFekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBRzs7QUFFSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7SUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0lBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0lBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNmLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0lBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQztJQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztJQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN6QixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7SUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7UUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUM7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxPQUFPLENBQUEsQ0FBRTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUM7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNmLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEtBQUssQ0FBQSxDQUFFO0tBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7TUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztNQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLEtBQUssQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUM7QUFDYixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBRTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBRTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBRTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDYixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFDLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFO0lBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsYUFBYSxDQUFDO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUc7UUFDSCxDQUFDLEdBQUcsQ0FBQztRQUNMLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7UUFDWixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLFNBQVMsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQztBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUE7O0lBRUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0csQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO01BQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxXQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkI7O0FBRTFGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7O0FBRWxFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRTtPQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztNQUVJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQzs7QUFFbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUU7T0FDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQzs7QUFFL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7T0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQztNQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRTtPQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUM7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O01BRUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7O0FBRW5CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDOztBQUV6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0csQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7TUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDO0tBQ25CLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRzs7QUFFWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7O0FBRTNCLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO1FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUViLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsS0FBSyxDQUFDOztBQUUzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07O0FBRTVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7SUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDO0lBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVzs7QUFFcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtNQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFFLGNBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07O0FBRTlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFNBQVMsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7O0FBRXZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztNQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7T0FDMUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBRTtNQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7S0FDeEMsQ0FBQyxHQUFHLENBQUM7O0tBRUwsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUM7O01BRXZCLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7T0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUM7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtTQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7UUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO1NBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQyxDQUFDO1NBQzVEO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztPQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQztPQUN6RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDOztBQUVOLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsTUFBTSxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtRQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNKLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxNQUFNLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ0osQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBRztBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtLQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1Y7SUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtJQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtJQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBRSxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDYjs7QUFFRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQVNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMxQixDQUFBLENBQUEsQ0FBQTs7RUFFQSxDQUFDLENBQUNpQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFJLENBQUMsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7QUNsaEJQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQ0gxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksaUJBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pJLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLGlCQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUN2SCxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztDQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksaUJBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pJLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLGlCQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUN2SCxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztDQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztDQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0NBQzFELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0NBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7Q0FDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzlELENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUM5QyxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM5QyxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2xELENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbkMsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNuQyxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDdkMsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUMvQyxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQy9DLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNqQyxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNwQyxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEMsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCO0NBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4SCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMzRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxXQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDOUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNWLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9COztBQUV4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDekYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ1UsQ0FBQSxDQUFBLENBQUE7RUFDVDs7QUFFRCxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7S0FDbkMsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1lBQ0wsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO2FBQ1AsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxJQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRztPQUN4QjtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0M7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsRUFBRSxDQUFDO0FBQ25JLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUM5QyxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUVsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRztLQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUE7RUFDWDtBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHO0tBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDWDs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFFOztBQUU1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLGtEQUFrRCxDQUFDO0FBQy9FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBO1NBQ0ksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2VBQzNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2VBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyx3RkFBd0YsQ0FBQztBQUNySCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQywrRUFBK0UsQ0FBQztBQUM1RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtZQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUE7WUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO09BQ25FO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLDBEQUEwRCxDQUFDO0FBQ3ZGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQ3JGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxtRUFBbUUsQ0FBQztBQUNoRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7O0FBRWhELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO2FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQztTQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtTQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUc7U0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDakYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDakUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7U0FDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQzs7QUFFdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBRTtTQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0tBQ2pCLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtTQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7YUFDVixDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7aUJBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNmO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQztTQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDO0FBQ3pJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO1NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDOUgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQy9GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQTtBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFDO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUE7U0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsT0FBTyxDQUFDO1NBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO2FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE9BQU8sQ0FBQztTQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7QUFDakcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzlILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksYUFBYSxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7QUFDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDcEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtTQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFFO2FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7aUJBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3JGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO1NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO1NBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUU7YUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsS0FBSyxDQUFBLENBQUU7aUJBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7U0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO1NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQjtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQTtTQUNJLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBT2pCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFNO09BQ3JEO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QjtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7U0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsT0FBTyxDQUFDO1NBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksYUFBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQzdHLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxZQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBRTtBQUM5SixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDakosQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDO0FBQ2xKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBO1NBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7Q0FDdEIsQ0FBQzs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNwQyxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ25ELENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUM7QUFDeEgsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxnQkFBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ3hGLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssZUFBZSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUE7QUFDdEYsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssaUJBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQTtBQUMxRixDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssZ0JBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQTtBQUN4RixDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxpQkFBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBO0FBQzFGLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLGlCQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUE7QUFDMUYsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxrQkFBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBOztBQUU1RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxpQkFBaUIsQ0FBQSxDQUFFO1NBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRTtBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ25CLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsRUFBRSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNoQixDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ25CLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsRUFBRSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNoQixDQUFBOztBQUVBLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ3RGLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtLQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUNoQyxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO0FBQ25DLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsc0JBQXNCLENBQUM7S0FDckUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2YsQ0FBQTs7QUFFQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7U0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLE9BQU8sQ0FBQSxDQUFFO0FBQ2IsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7U0FDM0IsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNoQyxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxVQUFVLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxVQUFVLENBQUM7U0FDMUMsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ3BDLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsRUFBRSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNoQixDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQUU7S0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNuQixDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7U0FDM0IsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNoQyxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxVQUFVLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxVQUFVLENBQUM7U0FDMUMsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ3BDLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsRUFBRSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNoQixDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7S0FDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRTtBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDakYsQ0FBQTs7QUFFQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtLQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxlQUFlLENBQUEsQ0FBRTtTQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUM7QUFDekYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3ZGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7S0FDbkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ3hDLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFFO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQztLQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7U0FDSixDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUc7U0FDTixDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUc7U0FDTixDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBRztTQUNQLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFHO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBO01BQ1AsQ0FBQyxDQUFDLENBQUM7S0FDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUE7S0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUM1RSxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDaEMsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0tBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDMUIsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxJQUFJLENBQUM7S0FDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUMzRCxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDZixDQUFBOztBQUVBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtTQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87U0FDSCxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7TUFDaEQ7QUFDTCxDQUFBOztBQUVBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7S0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQTtLQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM3RSxDQUFBOztBQUVBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFDO0tBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTthQUNqQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksaUJBQWlCLENBQUEsQ0FBRTtTQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNyQixDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7YUFDbEMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7QUFDYixDQUFBOzs7Ozs7Ozs7OztDQzdoQkEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR1QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXlCOztDQUV2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUI7O0FBRTFDLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7SUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLGlEQUFpRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDZCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtDQUNBLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtFQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7R0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDdkIsQ0FBQSxDQUFBO0VBQ0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUNyQyxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztDQUMxQixDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7RUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUcsQ0FBQztFQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ1gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDdkYsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ0osQ0FBQSxDQUFBO0NBQ0EsQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7RUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDZCxDQUFBLENBQUE7RUFDQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxHQUFHLENBQUM7Q0FDbkMsQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtFQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO0dBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDeEMsQ0FBQSxDQUFBO0NBQ0EsQ0FBQzs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpRSxJQUFJLENBQUEsQ0FBRTs7QUFFdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0lBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQSxDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtJQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFDO0lBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBRTtLQUNoRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7R0FDdkIsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFDO0dBQzFCLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQztHQUMxQixDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7SUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRztNQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ1g7QUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFDO0FBQ2xFLENBQUEsQ0FBQSxDQUFBO0dBQ0U7QUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztDQUNmLENBQUM7Ozs7Ozs7Ozs7O0FDOUdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNOzs7Ozs7Ozs7OztBQ0R2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzs7Ozs7Ozs7Ozs7QUNEdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7Ozs7Ozs7Ozs7O0FDRDFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTs7Ozs7Ozs7Ozs7QUNEM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjOzs7Ozs7Ozs7OztBQ0QvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7Ozs7Ozs7Ozs7O0FDRDVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTs7Ozs7Ozs7Ozs7QUNEekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRzs7Ozs7Ozs7Ozs7QUNEekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzs7Ozs7Ozs7Ozs7QUNEM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRzs7Ozs7Ozs7Ozs7QUNEekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRzs7Ozs7Ozs7Ozs7QUNEekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRzs7Ozs7Ozs7Ozs7QUNEekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzs7Ozs7Ozs7Ozs7QUNEM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFO0VBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztDQUNmLENBQUM7Ozs7Ozs7Ozs7O0NDSEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdWLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFrQjs7QUFFL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsSUFBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUU7RUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2YsQ0FBQSxDQUFBO0VBQ0MsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUU7Q0FDNUIsQ0FBQzs7Ozs7Ozs7Ozs7QUNSRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCOzs7Ozs7Ozs7OztBQ0RoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFpQjs7QUFFN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO0FBQ1gsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDTCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQztFQUNyQixDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNkLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLOzs7Ozs7Ozs7OztBQ1p0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksZUFBZSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7R0FDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUM7RUFDeEMsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDekIsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTs7Ozs7Ozs7Ozs7QUNYaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHO0FBQ3ZDLENBQUEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7RUFDdkcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBOztBQUV4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDYixDQUFBLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQztBQUN6QixDQUFBLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQztFQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7O0FBRTdDLENBQUEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7QUFDL0UsQ0FBQSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQTs7QUFFbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0VBRUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0VBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7O0VBRXZGLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLG1CQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBOztFQUVySCxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxHQUFHLENBQUM7QUFDN0MsQ0FBQSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBOztBQUUxRCxDQUFBLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7O0FBRTNFLENBQUEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ2hHLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7QUFDcEYsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDWixDQUFDOzs7Ozs7Ozs7OztBQzFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWtCOztBQUV0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUc7RUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0VBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7QUFDbEQsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQTtBQUMzRCxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQTs7RUFFdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxhQUFhLENBQUEsQ0FBRTtDQUN2QixDQUFDOzs7Ozs7Ozs7OztBQ1hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7Ozs7Ozs7Ozs7O0NDRG5GLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUEwQjs7QUFFeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLHFCQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJOzs7Ozs7Ozs7OztBQ0gvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpRDtBQUNyRSxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHO0NBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1COztDQUVsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsUUFBUSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0tBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFOztBQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO1NBQ2xDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztDQUNkLENBQUM7O0NBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7S0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLE1BQVcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtTQUNqRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7Q0FDZCxDQUFDOztBQUVELENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7S0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQztTQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBRTthQUNwQixDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7Q0FDZCxDQUFDOztBQUVELENBQUEsY0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUU7S0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUMsQ0FBQzs7QUFFbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7Y0FDM0I7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE1BQU0sQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO1VBQzNCOztLQUVULENBQUs7O0FBRUwsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDO0tBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsbUJBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsMkNBQTJDLENBQUMsQ0FBQyxNQUFNLENBQUM7O0FBRWpJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7Q0FDaEIsQ0FBQzs7Ozs7Ozs7Ozs7Q0NqRkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUEyQjs7QUFFaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjOzs7Ozs7Ozs7OztBQ0YxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsWUFBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7Ozs7Ozs7Ozs7O0FDRHhDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLGFBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7Ozs7Ozs7Ozs7O0FDRHpDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLOzs7Ozs7Ozs7OztDQ0QzRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF3Qjs7Q0FFbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTBCO0NBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUI7Q0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUI7O0FBRTdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQzs7Ozs7Ozs7Ozs7Q0NQMUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHbEIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXdCO0NBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF5Qjs7Q0FFMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF5QjtDQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBd0I7O0FBRTNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxvQkFBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsSUFBSSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsd0JBQXdCLENBQUM7QUFDaEQsQ0FBQSxDQUFBO0VBQ0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFDO0NBQ3ZDLENBQUM7Ozs7Ozs7Ozs7O0NDWkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdsQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBa0M7Q0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWU7O0FBRTFCLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtDQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQix5REFBeUQsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7Q0FDNUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7RUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLGtCQUFrQixDQUFBLENBQUU7QUFDckYsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQ1QsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLGdCQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0QsV0FBVyxDQUFBLENBQUU7O0NBRTNILENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYzs7QUFFNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztJQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLGVBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzs7Ozs7Ozs7Ozs7Q0MzQlQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBR1YsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW1DO0NBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFrQzs7Q0FFekQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBMkI7O0FBRWhELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsUUFBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQyxDQUFDO0FBQzNCLENBQUEsQ0FBQTtJQUNHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMseUJBQXlCLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7Ozs7Ozs7Ozs7O0FDeEJULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUUsQ0FBQyxXQUFXLENBQUM7O0FBRXJHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTs7Ozs7Ozs7Ozs7QUNKN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFDLFdBQVcsQ0FBQzs7QUFFeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Ozs7Ozs7Ozs7O0FDSjdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBRSxDQUFDLFdBQVcsQ0FBQzs7QUFFL0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNOzs7Ozs7Ozs7OztBQ0o3QixDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xDLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztDQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUdqQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBd0I7O0FBRW5DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQzs7Ozs7Ozs7Ozs7QUNMekMsQ0FBQSxJQUFJMkIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUzs7Q0FFYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHM0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTBCOztDQUV4QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW9CO0NBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF5QjtDQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUEwQjtDQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXdCO0NBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHRyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBMkI7Q0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXlCO0NBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBd0I7O0NBRXhDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBOEI7Q0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBZ0M7Q0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE4QjtDQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQThCO0NBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBOEI7Q0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBZ0M7Q0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQStCOztDQUUxQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFlO0NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNkI7O0NBRW5ELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0VBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7Q0FDdkIsQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxjQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztHQUN4QixDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHO0lBQ3pDLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYzs7Q0FFakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLEVBQXNCLENBQUEsQ0FBRTs7Q0FFekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFvQjtDQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUEwQztDQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTJDOztDQUU3RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBZ0Q7Q0FDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUErQzs7Q0FFM0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7O0FBRWxCLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUdsQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFVBQVUsQ0FBQzs7QUFFbEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUc7RUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0VBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0VBQ3RGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0VBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQzlFLENBQUEsQ0FBQywwQkFBMEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUztFQUNoRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQyxFQUFFQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTO0VBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztFQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztFQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7RUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0VBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0VBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0VBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtFQUNuRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7RUFDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztFQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtFQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0VBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0VBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0VBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztFQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtFQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0VBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0VBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtFQUNoRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7RUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0VBQ2hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0VBQ3hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0VBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0VBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0VBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0VBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0VBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0VBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0VBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVM7RUFDckcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVM7RUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7RUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR0EsV0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUM7RUFDckksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtFQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztFQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1DLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0VBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7RUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7RUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87RUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7RUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0VBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0VBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0VBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztFQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHQSxXQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQztFQUNySSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtFQUMvRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkIsQ0FBQSxDQUFDLDJCQUEyQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTO0FBQ2xHLENBQUEsQ0FBQyxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVM7RUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtFQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7RUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtFQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtFQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtFQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtFQUMvRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztFQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztFQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0VBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0VBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0VBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztFQUVqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7RUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0VBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtFQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFHO0VBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztFQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFHO0VBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUc7RUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUEsQ0FBRztFQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7RUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEIsQ0FBQSxDQUFDLDBCQUEwQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUM1Qjs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7QUFDZCxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUNILENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDYixDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQzlDLENBQUEsQ0FBQTtBQUNBLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBR21CLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF5QjtDQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNkI7Q0FDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW1DOztBQUVuRSxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNWLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBS3JCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVM7QUFDOUMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxxQkFBcUIsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTO0FBQ2xELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssMEJBQTBCLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUtBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVM7QUFDdkQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxrQkFBa0IsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsMEJBQTBCLENBQUM7R0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSywwQkFBMEIsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxrQkFBa0IsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxTQUFTLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7O0FBRXpCLENBQUEsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztDQUNiLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGNBQWMsQ0FBQSxDQUFBLENBQUc7RUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hCLENBQUEsQ0FBQyx3QkFBd0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3ZELENBQUEsQ0FBQyxrQkFBa0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsV0FBVyxDQUFDO0VBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxTQUFTLENBQUM7RUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLFNBQVMsQ0FBQztFQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsTUFBTSxDQUFDO0VBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ3hELENBQUEsQ0FBQywwQkFBMEIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUMzRCxDQUFBLENBQUMsa0JBQWtCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUUsV0FBVyxDQUFDO0VBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDbEYsQ0FBQSxDQUFDLG9CQUFvQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQy9DLENBQUEsQ0FBQyxxQkFBcUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ2pELENBQUEsQ0FBQyxpQkFBaUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUN6QyxDQUFBLENBQUMsa0JBQWtCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUMzQyxDQUFBLENBQUMsc0JBQXNCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ25ELENBQUEsQ0FBQyx5QkFBeUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDekQsQ0FBQSxDQUFDLHlCQUF5QixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUN6RCxDQUFBLENBQUMscUJBQXFCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNqRCxDQUFBLENBQUMsYUFBYSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsV0FBVyxDQUFDO0VBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3hFLENBQUEsQ0FBQyxzQkFBc0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDbkQsQ0FBQSxDQUFDLHVCQUF1QixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3JELENBQUEsQ0FBQyx1QkFBdUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNyRCxDQUFBLENBQUMsYUFBYSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ2pDLENBQUEsQ0FBQyxpQkFBaUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUN6QyxDQUFBLENBQUMsZ0JBQWdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3ZDLENBQUEsQ0FBQyxtQkFBbUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDN0MsQ0FBQSxDQUFDLG1CQUFtQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFdBQVcsQ0FBQztFQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsVUFBVSxDQUFDO0VBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQ3pELENBQUEsQ0FBQyxvQkFBb0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLFdBQVcsQ0FBQztFQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDeEQsQ0FBQSxDQUFDLGVBQWUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLEtBQUssQ0FBQztBQUNwQyxDQUFBLENBQUMsa0JBQWtCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDMUMsQ0FBQSxDQUFDLG1CQUFtQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQzVDLENBQUEsQ0FBQyx1QkFBdUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNyRCxDQUFBLENBQUMsMkJBQTJCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDN0QsQ0FBQSxDQUFDLG1CQUFtQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUM3QyxDQUFBLENBQUMsZ0JBQWdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3ZDLENBQUEsQ0FBQyw4QkFBOEIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNuRSxDQUFBLENBQUMsbUJBQW1CLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQzdDLENBQUEsQ0FBQyxtQkFBbUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDN0MsQ0FBQSxDQUFDLHdCQUF3QixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDdkQsQ0FBQSxDQUFDLHVCQUF1QixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3JELENBQUEsQ0FBQyxzQkFBc0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDbkQsQ0FBQSxDQUFDLHVCQUF1QixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3JELENBQUEsQ0FBQyw4QkFBOEIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNuRSxDQUFBLENBQUMsd0JBQXdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUN2RCxDQUFBLENBQUMsd0JBQXdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUN2RCxDQUFBLENBQUMscUJBQXFCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNqRCxDQUFBLENBQUMsb0JBQW9CLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDL0MsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7RUFDN0M7O0NBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHc0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXdCO0NBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUI7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsTUFBTSxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE1BQU0sQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsT0FBTyxDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEtBQUssQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDOztBQUVuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9HO0NBQ3JILENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsTUFBTSxDQUFBLENBQUU7RUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7RUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEVBQUUsQ0FBQztFQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLGdEQUFnRCxDQUFDO0VBQzFFLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLGdEQUFnRCxDQUFDO0FBQzFFLENBQUEsQ0FBQTtFQUNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsVUFBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFO0dBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsWUFBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNGLENBQUEsQ0FBQSxDQUFFLENBQUM7QUFDSCxDQUFBLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUNkLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0VBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3pCLENBQUEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNWLENBQUEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsY0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsYUFBYSxDQUFDO0dBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3RDLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLGFBQWEsQ0FBQztBQUN2QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsYUFBYSxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsWUFBWSxDQUFBLENBQUU7SUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzRCxDQUFDO0FBQ3JHLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87SUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7SUFDWixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDUDtBQUNILENBQUEsQ0FBQTs7RUFFQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDO0NBQ2pFLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsWUFBWSxDQUFBLENBQUU7RUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsMkNBQTJDLENBQUM7QUFDbkUsQ0FBQSxDQUFBO0VBQ0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDaEUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsMkNBQTJDLENBQUM7QUFDbkUsQ0FBQSxDQUFBOztFQUVDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxvRkFBb0YsQ0FBQztBQUM5RyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxJQUFJLENBQUM7QUFDL0IsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRTs7QUFFekQsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDO0FBQzlFLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZDLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztFQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7O0FBRS9CLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztFQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUM3QyxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztHQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztHQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxFQUFFLENBQUM7R0FDOUIsQ0FBQSxDQUFBLENBQUE7SUFDQztLQUNDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHO1NBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUE7S0FDWjtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLHNEQUFzRCxDQUFDO0FBQ2pGLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxhQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUEsQ0FBRTtJQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLGlCQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLEdBQUcsQ0FBQSxDQUFBLENBQUc7O0FBRW5ELENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxpQkFBaUIsQ0FBQztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0tBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7TUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMscUJBQXFCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZDLENBQUM7QUFDdkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLdkIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0csQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0tBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUVsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGtCQUFrQixDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0NBQ2IsQ0FBQzs7Ozs7Ozs7Ozs7Q0NsWEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUczQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBd0I7O0NBRTNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWtDOztBQUV0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUMsQ0FBQyxDQUFDOztBQUUxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsWUFBWSxDQUFBLENBQUU7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztFQUVDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQztBQUNuSCxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFFO0FBQzVFLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUU7QUFDMUQsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7Q0FDakIsQ0FBQzs7Ozs7Ozs7Ozs7Q0NoQkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdWLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF3QjtDQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXFCO0NBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF5Qjs7Q0FFdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXlCO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsSUFBSSxDQUFDOztBQUV0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxJQUFJLENBQUM7O0FBRXBELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUErQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxpQkFBaUIsQ0FBQSxDQUFBLENBQUc7QUFDbkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNDLElBQUksQ0FBQSxDQUFFOztBQUU1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7SUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0lBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7S0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7TUFDdkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUNmLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7SUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUNmLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtJQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQTtHQUNFOztBQUVGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0NBQ2YsQ0FBQzs7Ozs7Ozs7Ozs7Q0NqRUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdsQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBd0I7Q0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFxQjtDQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUI7Q0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBMkI7O0NBRW5ELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF5QjtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsSUFBSSxDQUFDOztBQUU5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUUsSUFBSSxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFFLElBQUksQ0FBQzs7QUFFaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxrQkFBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOytDQUM2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxxQkFBcUIsQ0FBQSxDQUFBLENBQUc7QUFDL0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9ELElBQUksQ0FBQSxDQUFBLENBQUc7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQyxJQUFJLENBQUEsQ0FBRTs7QUFFM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7TUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0EsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7TUFDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0EsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFO01BQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0lBQ2hCLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7TUFDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7SUFDNUIsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRTtNQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0lBQzlCLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRTtNQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFDO0tBQ2pDLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRTtNQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtPQUNSLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzRDQUMyQyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7O0FBRUgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2hCLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjs7Ozs7Ozs7Ozs7Q0NqRnBCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUd6QixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUI7Q0FDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXlCO0NBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNEI7Q0FDckQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBMkI7Q0FDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUErQjs7QUFFM0QsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxxQkFBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCOztBQUVsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUc7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0MsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTs7QUFFcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0lBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQSxDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtJQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0dBQ3ZELENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7SUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxZQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztHQUMvQyxDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0lBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztHQUNqRCxDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7SUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBO0dBQ0U7QUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztDQUNmLENBQUM7Ozs7Ozs7Ozs7O0FDeENELENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87Q0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTs7QUFFNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUc7S0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNaOztBQUVELENBQUEsT0FBYyxDQUFBLENBQUEsQ0FBRztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO2FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztTQUM1RCxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0s7QUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0tBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDbkI7Ozs7Ozs7Ozs7O0NDcEJELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUd6QixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBb0I7O0FBRWxDLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzs7Q0FFM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO1NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFDO0FBQzlFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQSxDQUFDLEVBQUUsQ0FBQzs7QUFFSixDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEtBQUssQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUEsQ0FBRTtTQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzs7QUFFckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7YUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTs7QUFFOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO2lCQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFFO3FCQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7YUFFWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO1NBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUU7YUFDbEMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztDQUNkLENBQUM7O0NBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDO1NBQy9CLENBQVMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTthQUM3QyxDQUFBLENBQUEsQ0FBQTtpQkFDSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxZQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUM7b0JBQzFELENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtlQUN2QztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7U0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7U0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTthQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ3RHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQzs7U0FFdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0tBQ2xCLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDO0NBQ25CLENBQUM7O0NBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGtCQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7U0FDbEQsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRztLQUNsQixDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0NBQ2QsQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0tBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUM7S0FDakQsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7U0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRTtTQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTs7QUFFcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO2FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQzthQUM3QixDQUFBLENBQUEsQ0FBQTtpQkFDSSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBO29CQUNQLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUE7b0JBQ1YsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQTtvQkFDVixDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUMvRDtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDO2lCQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtpQkFDVixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUM7aUJBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO3VCQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztpQkFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O2FBRVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQzt1QkFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7dUJBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO2lCQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7YUFFWSxDQUFDLElBQUksQ0FBQzthQUNOLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUM7O0FBRWpGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQzttQkFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzttQkFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7bUJBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0NBQ2QsQ0FBQzs7QUFFRCxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUM7S0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTs7QUFFakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUM7U0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7O1NBRTdCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUU7QUFDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7O0FBRXZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztDQUNoQixDQUFDOztBQUVELENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7Q0FDcEUsQ0FBQzs7QUFFRCxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFBLENBQUU7S0FDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztDQUMzRixDQUFDOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxPQUFPLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7S0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7Q0FDMUIsQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7YUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0NBQ2xCLENBQUM7O0FBRUQsQ0FBQW1ELE9BQWMsQ0FBQSxDQUFBLENBQUc7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtLQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7S0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNWOzs7Ozs7Ozs7OztDQ3pRRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBR25ELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF1QjtDQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFrQjtDQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBb0I7QUFDbEMsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYzs7QUFFekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLHFCQUFxQixDQUFBLENBQUEsQ0FBRztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUU7U0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQzVCLENBQUs7S0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUc7S0FDdkMsQ0FBSztBQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ0M7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUMzQixDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQy9CLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsWUFBWSxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUM7Q0FDMUUsQ0FBQzs7QUFFRCxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVzs7QUFFdEMsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFNBQVMsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRztLQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBRztLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxhQUFhLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksYUFBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLElBQUksQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztLQUMvQixDQUFLO0tBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGtCQUFrQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUN2Qjs7QUFFRCxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQyxDQUFBLENBQUU7S0FDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7WUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7WUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtZQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtZQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0NBQ2hDLENBQUM7O0NBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFOztDQUVqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0tBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNGO0tBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTs7S0FFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0tBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFO0FBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQztTQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxxQkFBcUIsQ0FBQztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07aUJBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7YUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsR0FBRyxDQUFDO0tBQ2hDLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtTQUN4RCxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO1NBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxrQkFBa0IsQ0FBQSxDQUFFO2FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3BILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztTQUVRLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7U0FDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTthQUNULENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE1BQU0sQ0FBQzthQUNwRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQztBQUNwSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTs7QUFFbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztLQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksbUJBQW1CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTthQUM3QixDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUM7QUFDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7U0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztTQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQzs7S0FFM0YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxjQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7O0FBRWxILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtTQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7ZUFDSixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7O0FBRXRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO2FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztTQUVRLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDdkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUc7ZUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQzs7QUFFdEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzthQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQ2pCLENBQUM7O0FBRUQsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQyxJQUFJLENBQUEsQ0FBRTtLQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsZ0JBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDcEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLHdFQUF3RSxDQUFDO0FBQ3JHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDbEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLHVFQUF1RSxDQUFDO0FBQ3BHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQzVHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQywrQkFBK0IsQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssWUFBWSxDQUFBLENBQUU7QUFDMUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLG1FQUFtRSxDQUFDO0FBQ2hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsU0FBUyxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxpQ0FBaUMsQ0FBQztBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxNQUFNLENBQUM7O0FBRTlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxxQkFBcUIsQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtTQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLCtDQUErQyxDQUFDO0FBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7O0FBRXhJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO1NBQ3hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsZ0JBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxnQkFBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO1NBQ2xILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNwSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxjQUFjLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ3BILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtTQUNoSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQzdHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzVGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDekc7Q0FDTCxDQUFDOztBQUVELENBQUEsV0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtLQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQyxJQUFJLENBQUM7O0FBRWpELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTs7QUFFZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQztLQUM3QixDQUFLLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7O0tBRWIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLG1CQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsV0FBVyxDQUFDO0tBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjOztLQUU5RSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxJQUFJLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDOztTQUVwQixDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7YUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYzthQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjthQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO2FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUzthQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7YUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07YUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUzthQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTthQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07YUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7YUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO2FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7S0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTs7QUFFM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxZQUFZLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtDQUNuRCxDQUFDOzs7Ozs7Ozs7OztDQ2pXRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdqQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBa0I7O0FBRTlCLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzs7QUFFM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUc7S0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBRTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFHO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQztLQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztLQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksb0JBQW9CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ3pCOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBRTtLQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtTQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0NBQ04sQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLGVBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFO0tBQzlELENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUU7QUFDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFJLGtCQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtTQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFDO0FBQy9KLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztDQUNkLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXhDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Q0FFdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLHNCQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTs7QUFFakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxpQkFBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUcsQ0FBQzs7QUFFbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7U0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUM5Qzs7S0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7U0FDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsaUNBQWlDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsV0FBVyxDQUFDO0FBQy9ILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQzs7QUFFVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxlQUFlLENBQUEsQ0FBRTtxQkFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87aUJBQ3JDLENBQWlCLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7cUJBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO2FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQzs7U0FFbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxJQUFJLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsR0FBRyxDQUFDOztBQUVwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEtBQUssQ0FBQzthQUM3RCxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxrQkFBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2FBQ0gsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDOztBQUV2RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHO2tCQUN6QztpQkFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLFVBQVUsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQzFGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNhO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O1NBRVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyx3QkFBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7YUFDckUsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztTQUVRLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFO2FBQzFCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7U0FFUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztTQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQztTQUNuRCxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7Q0FDZCxDQUFDOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0tBQzNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFDO1NBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzdGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsa0JBQWtCLENBQUM7O0FBRXJGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDOztTQUVuQixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsV0FBVyxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQzttQkFDekYsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNySCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxlQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7YUFDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsRUFBRSxDQUFDO2FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsV0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQTtpQkFDSCxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJO3FCQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7ZUFDeEQ7aUJBQ0UsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFFO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztTQUVRLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUNmLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxZQUFZLENBQUEsQ0FBRTtLQUNoRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTs7QUFFcEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztLQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTs7QUFFL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRzs7QUFFNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLGVBQWUsQ0FBQSxDQUFFO2lCQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7S0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtTQUNuRixDQUFDLElBQUksQ0FBQztTQUNOLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQzFGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxlQUFlLENBQUEsQ0FBRTtpQkFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO2FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQztBQUN0SCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUM7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQztDQUN4RCxDQUFDOztBQUVELENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxJQUFJLENBQUEsQ0FBRTtLQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsZ0JBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDcEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLHdFQUF3RSxDQUFDO0FBQ3JHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDbEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLHVFQUF1RSxDQUFDO0FBQ3BHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQzVHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQywrQkFBK0IsQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFlBQVksQ0FBQSxDQUFFO0FBQzFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxtRUFBbUUsQ0FBQztBQUNoRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsb0JBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUM1RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsaURBQWlELENBQUM7QUFDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUV2RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTs7QUFFbkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3JGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyw4REFBOEQsQ0FBQztBQUMzRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTOztBQUV4SSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztTQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsZ0JBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxnQkFBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzFILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ3BILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNwRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtTQUN2RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNwSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDcEgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO1NBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDN0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLGlCQUFpQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QjtBQUN4SixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQy9HLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDeEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsV0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUN0RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDaEksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUN0RztDQUNMLENBQUM7O0FBRUQsQ0FBQSxLQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsSUFBSSxDQUFDOztBQUU3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBRTtTQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7O0FBRTdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUM7U0FDM0UsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUM7Q0FDN0IsQ0FBQzs7Ozs7Ozs7Ozs7Q0NyVUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFzQjtDQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFrQjtDQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBb0I7O0FBRWxDLENBQUFtQyxLQUFjLENBQUEsQ0FBQSxDQUFHO0tBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDZDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NDZUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdwRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBb0I7O0FBRW5DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNmLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3JCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUI7R0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTs7QUFFMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQzs7QUFFekQsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBRztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBO0lBQ3RDOztBQUVILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFHO0tBQ1AsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDOztBQUVsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLFlBQVksQ0FBQSxDQUFBLENBQUc7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUM7QUFDdEIsQ0FBQSxDQUFBLENBQUUsZUFBZSxDQUFBLENBQUEsQ0FBRztLQUNoQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQTtJQUNYO0dBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUc7R0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0I7R0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QjtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsY0FBYyxDQUFBLENBQUEsQ0FBRztLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQTtJQUNoQjtBQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsZ0JBQWdCLENBQUEsQ0FBQSxDQUFHO0tBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQTtJQUNoQjtBQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLGVBQWUsQ0FBQSxDQUFBLENBQUc7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ1gsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBO0lBQ1Y7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBYTs7QUFFN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsaUJBQWlCLENBQUEsQ0FBRTtBQUM1RCxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQTs7QUFFekUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7R0FDakIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUM7QUFDbkQsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ1YsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRTtBQUMxRSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0tBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyx3Q0FBd0MsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUM7QUFDOUUsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsUUFBUSxDQUFDO0tBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUM7O0dBRTNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRzs7QUFFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFFOztBQUVwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0tBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDO1NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksZ0JBQWdCLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtXQUNMLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztHQUVFLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7R0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsV0FBVyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtLQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFFO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFOztBQUVuRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtPQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztPQUMxQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQTtBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxHQUFHLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUU7T0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztPQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLElBQUksQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7T0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7T0FDdkMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUE7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBOztLQUU1QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUM7O0FBRTlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTs7QUFFcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBRTs7QUFFdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7O0FBRWxHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO09BQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxTQUFTLENBQUE7U0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUU7V0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTthQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUNjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBRztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUNVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFFO2FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7YUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO2FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsaUJBQWlCLENBQUM7YUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtlQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2VBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtlQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsY0FBYyxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTs7QUFFMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFOztBQUVuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsRUFBRSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztLQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUU7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUM7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0tBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksZ0JBQWdCLENBQUEsQ0FBRTtPQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztHQUM1QixDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDYixDQUFDOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQTtBQUNyRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUE7QUFDckUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNyQixDQUFBOztBQUVBLENBQUEsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNuQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7R0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLElBQUksQ0FBQztLQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztLQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTs7QUFFZCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFBLENBQUU7S0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7R0FFRSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtLQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7T0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sY0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ04sQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFFOztBQUU1RCxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUE7O0FBRWpFLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUU7QUFDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQTtBQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBRTtLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0FBQ2IsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBO0FBQzFELENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQTs7R0FFaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFDO0dBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7O0dBRW5DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDbkQsQ0FBQzs7QUFFRCxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxRQUFRLENBQUM7QUFDeEQsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsUUFBUSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBLENBQUU7Q0FDckUsQ0FBQzs7QUFFRCxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQTtBQUNqQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxRQUFRLENBQUM7QUFDOUQsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxhQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsUUFBUSxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtLQUNuQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0tBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtHQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQztLQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTs7QUFFN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakIsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFDO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTtBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFBLENBQUU7QUFDakYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUU7T0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7U0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRTtBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBQTtBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUE7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQTtPQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakIsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxRQUFRLENBQUM7S0FDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDOztBQUVwRSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTtBQUMvRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQ3JHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUM7QUFDdkUsQ0FBQSxDQUFBLENBQUE7O0dBRUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2pGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUE7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxPQUFPLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO09BQzdGLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsS0FBSyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO09BQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDO0FBQ25HLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakIsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7T0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUU7O0FBRS9ILENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBRTtLQUNWLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUU7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxhQUFhLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxFQUFFLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUE7O0dBRUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQzs7QUFFcEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDN0YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEtBQUssQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztHQUVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7O0FBRTVELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsVUFBVSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7S0FDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUM7QUFDakcsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNyRCxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUNmLENBQUM7O0FBRUQsQ0FBQSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3RDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztHQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7T0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBO0NBQ25DLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTOztBQUUxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7Ozs7Ozs7OztBQ3R3QmpCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0YsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzdFLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDN0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzNDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDbkMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM3QixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDdkMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2pDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQy9CLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ3JDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUN2QyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDM0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0NBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR1IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXNCO0NBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUM7Q0FDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUM7Q0FDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE0QjtDQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXVCO0NBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ04sQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtTQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ25CLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3BCLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtLQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUM7S0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztTQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakIsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLDBDQUEwQyxDQUFDO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDZixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFO1NBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUVYLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7aUJBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUMsQ0FBQztBQUNoSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN2QyxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtTQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWWMsVUFBQSxDQUFBLENBQWMsQ0FBQyxHQUFHLENBQUM7aUJBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7YUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsSUFBSSxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUM7S0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNyQixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0NBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0NBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtDQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztDQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7Q0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0NBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7Q0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0NBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtDQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7Q0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0NBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtDQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0NBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUMzQyxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUU7S0FDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO1NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxHQUFHLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7U0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07YUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQztBQUMvRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQztBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQztBQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUM7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTthQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUM7QUFDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTthQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUM7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUzthQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdDLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07YUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQztBQUN6RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtDLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQzlFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTthQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQzNHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7YUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdDLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO1NBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUM7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBRTtBQUN2RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNoQixDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxVQUFVLENBQUEsQ0FBQSxDQUFHO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNoRSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7U0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUN2RSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0tBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUNOLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsVUFBVSxDQUFDO0FBQ3RGLENBQUFwQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3hDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxFQUFFLENBQUM7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7YUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO2FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNhO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7YUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFDO2FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTthQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7YUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQzthQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTthQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFDO2FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQzthQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLFFBQVEsQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxFQUFFLENBQUM7Q0FDckUsQ0FBQztBQUNELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDekMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLEVBQUUsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0tBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztTQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7U0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFDO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQztTQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7S0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUM7Q0FDbkQsQ0FBQztBQUNELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUMzQyxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsUUFBUSxDQUFDO0FBQ3hDLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtLQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO1NBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNoQyxDQUFBO0FBQ0E7Ozs7Ozs7OztBQ3ZSQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUM2QyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHckQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQThCO0NBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUI7Q0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFpQjtDQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXlDO0NBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHRyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBcUI7Q0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBdUI7Q0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNEI7Q0FDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF1QjtDQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUI7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDN0csQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUM7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxlQUFlLENBQUM7YUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7YUFDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO1NBQzFCLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO2lCQUNSLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxPQUFPLENBQUM7YUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUM7cUJBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztxQkFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO3FCQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7eUJBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtxQkFDb0I7aUJBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLFVBQVUsQ0FBQztBQUM3SSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsRUFBRSxDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztBQUMxRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFDO1NBQzVJLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxFQUFFLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtpQkFDUixDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7YUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFDLENBQUM7aUJBQ3hELENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztpQkFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtxQkFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7U0FDNUIsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJO2lCQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7aUJBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQ3pGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFBLENBQUEsQ0FBRztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSTtpQkFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxTQUFTLENBQUM7QUFDekYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQzdHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFFO2FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQztTQUN4QyxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLElBQUksQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7YUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxJQUFJLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNBLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsWUFBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQztBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFDLFNBQVMsQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxZQUFZLENBQUM7QUFDcEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsSUFBSSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsWUFBWSxDQUFDO0FBQ3hILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxPQUFPLENBQUEsQ0FBRTthQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLFlBQVksQ0FBQztBQUN4SCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLElBQUksQ0FBQzthQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxjQUFjLENBQUM7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87U0FDMUIsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLGVBQWUsQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLGVBQWUsQ0FBQztBQUN2RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsY0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQyxlQUFlLENBQUM7QUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsZUFBZSxDQUFDO0FBQ3ZHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFBLENBQUEsQ0FBRztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTthQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLGVBQWUsQ0FBQztBQUMzSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxlQUFlLENBQUM7QUFDM0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLElBQUksQ0FBQztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO1NBQ3pELENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7YUFDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLHlCQUF5QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxJQUFJLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNsRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFFO2FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDbEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUM7U0FDM0YsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7YUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsZUFBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO3FCQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtpQkFDaEIsQ0FBQyxHQUFHLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ3hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7cUJBQ29CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQzFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtzQkFDcUI7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN4RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO2lCQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUM7QUFDM0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO1NBQ2pELENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxJQUFJLENBQUM7U0FDakMsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7aUJBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsNEJBQTRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztxQkFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7YUFDakcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQy9GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxJQUFJLENBQUM7U0FDakMsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNqQixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsRUFBRSxDQUFDO2FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGtCQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDO1NBQ2hDLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDO0FBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO1NBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxrQ0FBa0MsQ0FBQztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDeEosQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsSUFBSSxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQSxDQUFBLENBQUc7U0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtjQUNoQjthQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTthQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHO1NBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsR0FBRyxDQUFBLENBQUU7U0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxJQUFJLENBQUM7U0FDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO1NBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztTQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNoSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQSxDQUFFO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO2FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUscUJBQXFCLENBQUM7YUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ2E7YUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7YUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtTQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBRTtpQkFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBRTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN2RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNpQjtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN6RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDdkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUMvRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ3ZJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO2lCQUNoQixDQUFDLEdBQUcsQ0FBQztpQkFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDL0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsMkJBQTJCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7U0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7U0FDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRSxDQUFDLFdBQVcsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDakcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO1NBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO1NBQzlILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO1NBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO1NBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUUsQ0FBQyxXQUFXLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ2pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO1NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7U0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxFQUFFLENBQUM7YUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFDO1NBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLEVBQUUsQ0FBQztTQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ25GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO1NBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7U0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUU7YUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFFO2FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtpQkFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsSUFBSSxDQUFDO2FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQywrQkFBK0IsQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFBLENBQUU7QUFDL0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUU7aUJBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUU7U0FDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUU7aUJBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7aUJBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsUUFBUSxDQUFDO2lCQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtxQkFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNhO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUM7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7aUJBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtpQkFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUM3RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNpQjtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsVUFBVSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsVUFBVSxDQUFDO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO1NBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUM7QUFDbkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFFO2FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUM7QUFDdkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDYTthQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztBQUN6RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDO0FBQ3ZHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztBQUN2RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQztTQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87YUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtTQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDMUgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNqRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtpQkFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztpQkFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxPQUFPLENBQUM7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFdBQVcsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO2lCQUN2RixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3JHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDO2lCQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUM7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3pGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7U0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUM7YUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQztTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7U0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDO0FBQ3ZHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDdEgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQW9CLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBVTtBQUMvQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7Q0FDQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQzFCOzs7Ozs7Ozs7O0VDcHBCQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBL0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQUEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBQSxDQUFBLENBQWVBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07RUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBR1AsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBZ0I7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDVSxZQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFSCxTQUFPLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDVSxXQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFVixTQUFPLENBQUM7RUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR1csQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0VBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNYLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQ3RHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdrQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUI7RUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ2xCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQ3RHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdxQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUI7RUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ3JCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQ3RHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUdzQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBdUI7RUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ3RCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQ3hILENBQUE7Ozs7Ozs7Ozs7OztBQ2JBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ2dELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDdkIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQztLQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFDO0FBQ25GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsVUFBVSxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxJQUFJLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO1NBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFNO0FBQ3ZCLENBQUFELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFNO0FBQ3hCOzs7Ozs7Ozs7OztBQ2hDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVNDLGlCQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHakQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTSxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQ3BHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7U0FDakUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2QsQ0FBQTtBQUNBLENBQUFnRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBZTtBQUNqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNYQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7R0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7T0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsbUNBQW1DLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUMvRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0tBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLFdBQWMsQ0FBQSxDQUFBLENBQUc7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0dBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUM3QixDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFO0dBQzNCLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtHQUMxQixDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRztHQUN4QixDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtHQUN0QixDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtHQUN0QixDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7R0FDdkIsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLG1CQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUc7R0FDaEMsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUU7S0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0dBQ3BDLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0dBQ3JFLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNSLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ25DLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDakQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDakQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNqQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUM5QyxDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsb0JBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0tBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7R0FDakQsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7R0FDckQsQ0FBRztHQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7R0FDMUIsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7R0FDOUMsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDVCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0dBQ3hCLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxvQkFBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0dBQ3BDLENBQUc7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHO0dBQzdCLENBQUc7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRztHQUM5QixDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDN0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUMxQixDQUFHO0dBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFHO0FBQ2QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUEsQ0FBRSxvQkFBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFHO0dBQ2hDLENBQUc7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7S0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUE7R0FDM0IsQ0FBRztHQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtLQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQTtHQUMzQixDQUFHO0dBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7R0FDcEIsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDdkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUMzQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUN2QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0dBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUM7R0FDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxZQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQztBQUMxRSxDQUFBLENBQUEsQ0FBRSxzQkFBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRztHQUM1QixDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztHQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7O0FDekhBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxPQUFjLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO09BQ3pDLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtTQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNBLENBQUs7R0FDTCxDQUFHO0dBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtXQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNqQixDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtXQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7U0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBOzs7Ozs7Ozs7OztBQ3BEQSxDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsR0FBRzFELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsR0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWpELENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsY0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNWLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNWLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ1gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0dBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGtCQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtHQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2xELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtHQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtHQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ2xDLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxpQ0FBaUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQyxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ3JILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBRTtBQUN2SCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDNUIsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtHQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7T0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLFNBQVMsQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtPQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO09BQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFlBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBO01BQ2Y7QUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUM7T0FDdkQsQ0FBTztPQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7T0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sWUFBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0csQ0FBQTtBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUUsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ1IsQ0FBQTtBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNULENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsVUFBVSxDQUFBLENBQUU7R0FDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0tBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMvRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7R0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRywyQkFBMkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0tBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7T0FDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7Q0FDOUIsQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQTtLQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRTtPQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtPQUNMLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7S0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnRCxDQUFBO0FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBO09BQ3RDLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrRCxDQUFBO0FBQ3JGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUU7U0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQyxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtPQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQztXQUNKLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1dBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1dBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtPQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFDO1dBQ0osQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1dBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7V0FDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQztTQUNKLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQztBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQTtLQUNsQyxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7T0FDdEQsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDSixDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO1NBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLG1CQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBO1NBQ3BCO1NBQ0EsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQTtBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUEsQ0FBRTtXQUNoQyxLQUFLLENBQUEsQ0FBRSxDQUFBO1VBQ1IsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsU0FBUyxDQUFDLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO1FBQ1QsQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUE7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0dBQ1gsQ0FBRztHQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQTtDQUNBLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCO0dBQ3ZCLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsWUFBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7T0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsU0FBUyxDQUFDO0dBQ2xFLENBQUc7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUE7Q0FDQSxDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQjtBQUM1QixDQUFBLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7T0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtPQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtPQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxrQkFBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQTtXQUNmLENBQUMsWUFBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsSUFBSSxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUMsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsMEJBQTBCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsa0JBQWtCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztHQUM5RixDQUFHO0dBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBO0NBQ0EsQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtHQUNsQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0MsQ0FBQTtBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ2pGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDO1NBQ0osQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO1NBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQztBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO1NBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0U7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0dBQ3BDLENBQUc7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUE7Q0FDQSxDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTtBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO09BQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUE7T0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsUUFBUSxDQUFDO0dBQzVGLENBQUc7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNsRSxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0MsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN6RSxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDcEYsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM5RCxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDOUUsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDNUUsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN4RCxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDL0QsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9DLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ2pGLENBQUEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDeEQsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUMzRCxDQUFBLE1BQWMsQ0FBQSxDQUFBLENBQUc7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxrQkFBa0IsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtHQUNmLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7O0FDblZBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsV0FBVyxDQUFBLENBQUUsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7cUJBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUFHLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsV0FBMEIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsT0FBc0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7OztDQ1d6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7R0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMscUJBQXFCLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBRSxjQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtRQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDO0dBQ25ELENBQUc7QUFDSCxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUCxDQUFBLENBQUEsQ0FBRSxjQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxNQUFNLENBQUM7R0FDN0MsQ0FBRztBQUNILENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ3BELENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0dBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEIsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsWUFBWSxDQUFBLENBQUEsQ0FBRztBQUN4QixDQUFBLENBQUEsQ0FBRSxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7QUFDOUIsQ0FBQTtBQUNBLENBQUE4QyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUM3QixDQUFBQSxRQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTs7QUFFMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZOztBQUV4QyxDQUFBLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUMxQyxDQUFBLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQztBQUN2QyxDQUFBLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUzs7QUFFaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTs7Q0FFNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7S0FDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLGtFQUFrRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFFBQVEsQ0FBQztBQUM3RyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLHFCQUFxQixDQUFBLENBQUU7R0FDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7R0FDaEIsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUI7R0FDOUIsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtPQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxpR0FBaUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN6SSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzdCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFDLENBQUM7O0NBRUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVzs7QUFFL0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0tBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUE7O0dBRUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztDQUN0RCxDQUFDOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3JFLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtLQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQywrRUFBK0UsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ25ILENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDYixDQUFDOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0tBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtHQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQzNCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxlQUFlLENBQUEsQ0FBQSxDQUFHO0FBQ3BFLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7Q0FDL0IsQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtHQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0dBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE9BQU8sQ0FBQzs7QUFFbEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztHQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7UUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLOztBQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ2pGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUM7O0dBRTFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLOztBQUVoQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxHQUFHLENBQUM7S0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztPQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDNUMsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0NBQ2IsQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ3ZELENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNQLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTs7R0FFWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7O0FBRXpCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN6QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7S0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTttQkFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7O0FBRW5FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtLQUNsQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxRQUFRLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxNQUFNLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QyxDQUFBOzJCQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUE7QUFDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQyxDQUFBO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixnQkFBZ0IsQ0FBQztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkI7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO09BQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2YsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7R0FDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7Q0FDbEQsQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVzs7Q0FFOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtPQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7S0FDckQsQ0FBSzs7QUFFTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFdBQVcsQ0FBQSxDQUFBLENBQUc7QUFDdkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQztPQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtHQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7R0FDL0YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUM7QUFDdkMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDN0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN4QixDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDaEIsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtHQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDYixDQUFDOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7T0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2pCLENBQUs7O0FBRUwsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO09BQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCOztPQUUvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7O0FBRTdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87T0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUVuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUM7T0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7O09BRWIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUM7V0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2NBQy9CO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7V0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUM7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO1NBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBRTs7QUFFckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLGdCQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO2FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUM7YUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7U0FFUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7O1NBRWIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7V0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7Y0FDVDtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUM7V0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDOztBQUVoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7V0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN6RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2pCLENBQUs7O0NBRUwsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYzs7Q0FFbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQzs7QUFFOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztPQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7O0FBRW5CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7V0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQztTQUMvQixDQUFTLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDO2FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtTQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsR0FBRyxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLGdCQUFnQixDQUFDO1NBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDOztBQUU5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFNBQVMsQ0FBQztBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO1dBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDakIsQ0FBSzs7QUFFTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztHQUUzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7O0FBRWIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDO0dBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFOztBQUViLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLFVBQVUsQ0FBQzs7QUFFdEUsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUMzRSxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7R0FDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQztDQUNyQyxDQUFDOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7R0FDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQztDQUN0QyxDQUFDOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDckQsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLElBQUksQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLElBQUksQ0FBQztBQUM1QyxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUM7O0FBRUQsQ0FBQSxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtDQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzs7QUFFM0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUM7O0FBRWpDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO09BQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNWLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxVQUFVLENBQUEsQ0FBQSxDQUFHO0FBQzFELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQSxDQUFFO0NBQ2xFLENBQUM7O0FBRUQsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDO0dBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2IsQ0FBQTs7QUFFQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtHQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtLQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7R0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNaLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7R0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ1osQ0FBQTs7QUFFQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0dBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUM7T0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxRQUFRLENBQUEsQ0FBQSxDQUFHO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxhQUFhLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDO0tBQ3ZDO0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO09BQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQztBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDSixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsNkJBQTZCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQ2hFLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtLQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3hFLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUcsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsWUFBWSxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLHFFQUFxRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE9BQU8sQ0FBQztBQUMvRyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Ozs7Ozs7Ozs7O0FDOWVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHM0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUE7QUFDckIsQ0FBQSxDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsR0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7RUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07SUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUMsR0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUUsY0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSU8sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBMkIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGVBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLEdBQTJCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0lBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0lBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRTtNQUNyRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7TUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7RUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUUsWUFBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQztJQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtNQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO1FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7VUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0EsQ0FBRztJQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRVIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO01BQ2YsQ0FBSyxDQUFBO0FBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87UUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNBLENBQUc7SUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7TUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1VBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7WUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtRQUM5QixDQUFPLENBQUE7TUFDUCxDQUFLO0lBQ0wsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBRztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sWUFBWSxDQUFBO0lBQ3ZCLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtNQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtRQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDM0IsQ0FBSztNQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtJQUNYLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO01BQ2RHLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7VUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7WUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO1lBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7WUFDVixDQUFDLHNCQUFzQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtXQUMzQixDQUFBO1VBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87VUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7VUFDZixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDSCxDQUFDLG9CQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxvQkFBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtnQkFDL0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0EsQ0FBSztBQUNMLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO01BQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtVQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQTtXQUNQLENBQUE7UUFDVCxDQUFPLENBQUE7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUE7VUFDaEYsQ0FBUztVQUNEO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1FBQ00sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7RUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyw4QkFBOEIsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0NDL0kzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0I7QUFDeEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7QUFDbkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0I7QUFDeEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0I7QUFDeEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkI7QUFDL0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUI7QUFDckIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCO0dBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFDLEdBQUc1QixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7R0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUE7QUFDakgsQ0FBQSxDQUFDLEdBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLEdBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsaUJBQWlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBdUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUM7QUFDN0IsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM3QixDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVqQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxtQkFBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7T0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQyxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsc0JBQXNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNySCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckYsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLGdCQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0dBQ2pGLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztDQUNsRyxDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0tBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN4RCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtLQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEQsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BFLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQyxDQUFBOztBQUVELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0tBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN4RCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEUsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JGLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMzRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7R0FDbkYsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztLQUNuRDtLQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUM7T0FDL0csQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7R0FDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0tBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO09BQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQy9FLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2RCxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3ZGLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsNEJBQTRCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxZQUFZLENBQUEsQ0FBRTtBQUNsRSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLFlBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ3JHLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0dBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7R0FDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0dBQ3hFLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0tBQzdFO0tBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hELENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQyxDQUFBOztBQUVELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxrQkFBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtLQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUQsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdEUsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0tBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdkQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsU0FBUyxDQUFDLENBQUE7S0FDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2RCxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxlQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzdDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUE7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7T0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsa0JBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQSxDQUFFO0FBQ3JELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtLQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUM7QUFDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDdkMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BFLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDckYsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUN2RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDO0FBQ25HLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtHQUMzRCxDQUFBLENBQUEsQ0FBQTtLQUNFLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUE7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBO0tBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7S0FDekI7S0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3ZELENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQ2hCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sbUJBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7R0FDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFO0tBQ3JHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM5RCxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztDQUN6RixDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxxQkFBcUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0QsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxlQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7Q0FDbkgsQ0FBQyxDQUFBOztBQUVELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGlCQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztDQUNsRixDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0dBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsa0JBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3ZGLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGVBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFeEIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7S0FDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7T0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLFVBQWMsQ0FBQSxDQUFBLENBQUc7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNULENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNWLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDZixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ2YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUI7QUFDckIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0I7QUFDMUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNsQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNsQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ2YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNoQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ2YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNoQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDaEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtBQUNuQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ2YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUI7R0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7OztBQy9nQkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBRSxjQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdqQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTs7QUFFM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUE7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtDLENBQUE7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEMsQ0FBQTtBQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLG9CQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUU7QUFDbkQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUE7UUFDakYsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUE7U0FDbEIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDLENBQUEsQ0FBQTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsY0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQTtRQUMzQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQTtTQUNsQixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7S0FDOUIsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0dBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO01BQ0YsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBO09BQ2pCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQyxDQUFBLENBQUE7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFDO0FBQ3RFLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7R0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUMvRyxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtHQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDN0csQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNoRixDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQy9ELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxRixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDbEgsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGFBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEUsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtHQUN0RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsZ0JBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUMvQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hFLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7R0FDekcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUM7QUFDakcsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxhQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0dBQ3RHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEUsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7R0FDM0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDO0FBQ25HLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUN0RSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQzNHLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3RGLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUN0RSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQzNHLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkYsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ3pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDekcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0dBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUkscUJBQXFCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFO0tBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQTtLQUMzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsY0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxzQkFBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLHFCQUFxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7R0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxxQkFBcUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUU7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBO0tBQzNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxjQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ3BGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLHNCQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUkscUJBQXFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ0EsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7S0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDdEIsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNqRjtLQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQTtBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0tBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0dBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtHQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN6RSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBO09BQzFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0SCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7TUFDTCxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDeEQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0I7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtlQUNKLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTttQkFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2VBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUE7ZUFDQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsY0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxzQkFBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxjQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksc0JBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQzdELENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsY0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsc0JBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDdkQsQ0FBQSxDQUFBLENBQUE7U0FDQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsY0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDdEMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxLQUFjLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNiLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDZCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNYLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDWixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDbEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCO0FBQzFCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNiLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNWLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDbEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7QUFDbkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDZCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDYixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNsQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtBQUNuQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNsQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0dBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQTs7Ozs7Ozs7OztBQ2pVQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUM5QixDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0QsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNuRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsb0JBQW9CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDVixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNsQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtBQUNuQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNsQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtBQUNuQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtHQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7R0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUMsR0FBR0csQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtHQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JELENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtHQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLGlCQUFpQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUUsbUJBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQTtBQUN0RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0dBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDM0MsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkcsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0tBQ1osQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7S0FDWixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxvQkFBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1RyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLGtCQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7R0FDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sYUFBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFO09BQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksZ0JBQWdCLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLGtCQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7R0FDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sYUFBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFO09BQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksZ0JBQWdCLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7R0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLDBCQUEwQixDQUFBLENBQUU7QUFDM0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxnQkFBZ0IsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksMEJBQTBCLENBQUEsQ0FBRTtBQUMzRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7S0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0dBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBO0tBQ0wsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUE7TUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtLQUMvRDtLQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLGdCQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2pEO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLGdCQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2pEO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtHQUM3QixDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBRTtLQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtPQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDdkI7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSVgsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBMEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO09BQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGdCQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLGdCQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO09BQzNDLENBQU8sQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0dBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUN2QjtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGdCQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxHQUEwQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7T0FDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7U0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7T0FDM0MsQ0FBTyxDQUFBO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQTtBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUMvRSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNULENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGVBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7S0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7T0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO1NBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNBLENBQUssQ0FBQTtHQUNMLENBQUc7QUFDSCxDQUFBO0FBQ0EsQ0FBQTJDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsUUFBdUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7OztBQzNSMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRzVELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFFO0dBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFDLEdBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxHQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7R0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUViLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUEsQ0FBRTtPQUNuQixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBLENBQUU7T0FDbkIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0dBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRTtBQUN4RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7R0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtLQUNMLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtLQUNMLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQSxDQUFFO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBRTtPQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBO0tBQ3BELENBQUssQ0FBQTtBQUNMLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFFLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7R0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7T0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7S0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtPQUNMLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7T0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7T0FDNUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7T0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsZ0JBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0dBQ3hDLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0dBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNsQixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUU7QUFDeEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBRTtLQUMxRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDeEIsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsU0FBUyxDQUFBLENBQUEsQ0FBRztBQUNyQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtLQUNMLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNoQixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1gsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNqQixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2QsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNaLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDakIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtLQUNMLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNoQixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2QsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNYLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDakIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNaLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDakIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDaEIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRTtBQUN4RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxXQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQztBQUMxRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtRQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQSxDQUFFO09BQ25CLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUEsQ0FBRTtPQUNuQixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO09BQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0tBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBRSxDQUFBO0dBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDdEMsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtHQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUkscUJBQXFCLENBQUEsQ0FBRSxDQUFBO09BQzVGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7T0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtPQUNMLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0tBQy9CLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtLQUN2QyxDQUFLLENBQUE7R0FDTCxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUN4QixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7R0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3RyxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3JCLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDMUMsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7R0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0tBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7S0FDL0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0tBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0tBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtHQUNoQixDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0dBQ3BCLENBQUcsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0dBQ3RCLENBQUcsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtHQUNoQixDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLG9CQUFvQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFNBQVMsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLFNBQWMsQ0FBQSxDQUFBLENBQUc7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDWCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNYLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDVCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztHQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUE7Ozs7Ozs7Ozs7O0FDL1JBLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxHQUFHbEIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDL0MsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDcEIsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtDQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBO0NBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtHQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFBLENBQUU7T0FDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtHQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxPQUFPLENBQUEsQ0FBQSxDQUFHO0tBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFBLENBQUU7T0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTs7QUFFMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEtBQUssQ0FBQSxDQUFBLENBQUc7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsT0FBTyxDQUFBLENBQUEsQ0FBRztLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0tBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBRSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsZUFBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFFLGVBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBOztBQUV4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGVBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBRTs7QUFFN0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUUsQ0FBQTtRQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQTtBQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzNELENBQUE7QUFDQSxDQUFBLE1BQWMsQ0FBQSxDQUFBLENBQUc7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07R0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7RUN0RkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLEdBQUdWLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtFQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztJQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO01BQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNuRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMvRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUEwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7SUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07VUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO2NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDZjtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtVQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO2NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDZjtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSU8sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBMEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Q0NqREEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHekIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUE7Q0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBRSxXQUFXLENBQUEsQ0FBQSxDQUFHO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRTtLQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUc7T0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDWixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUU7S0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHO09BQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7T0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNaLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQzNCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztLQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtLQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7T0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ1osQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUUsVUFBVSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBO09BQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDO0FBQzlELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBRTtPQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUU7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQTtTQUNQLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQTtXQUNGLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07V0FDTCxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1dBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUE7V0FDWixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxvQkFBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUMsQ0FBQTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQTtLQUNSLENBQUssUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFDLENBQUE7S0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRztBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBRTtTQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQTtTQUMzQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUU7V0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUE7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBO1dBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtXQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsVUFBVSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQTtXQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBO1dBQ1osQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQTtLQUNSLENBQUssUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sYUFBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNoQjtBQUNMLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBOzs7Ozs7Ozs7OztBQzFKQSxDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLEdBQUdqQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLEdBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLEVBQUUsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLEdBQTRCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLDhCQUE4QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxpQkFBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBRTtBQUN6RCxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNqRyxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkQsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUUsZUFBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQTtHQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSw4QkFBOEIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUkseUJBQXlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7R0FDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQzVELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtPQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUc7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ3hCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNqRCxDQUFBO0FBQ0EsQ0FBQSxLQUFjLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUI7R0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7OztBQ3JDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHakIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUE7RUFDYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxlQUFlLENBQUEsQ0FBRTtBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBRUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsVUFBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM3QyxDQUFBLENBQUE7O0VBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7O0FBRXJELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTs7RUFFNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBK0I7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDN0MsQ0FBQSxDQUFBLENBQUE7O0VBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQjtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkI7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7OztBQ3pDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHUCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzFELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzFCLENBQUEsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbkosQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNsQixDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUM7O0NBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN6QixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87R0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRztPQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDcEIsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxXQUFXLENBQUEsQ0FBRTtTQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtDQUNBO0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsR0FBRyxDQUFDO0dBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7R0FDbkksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUc7QUFDcEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7Q0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxRQUFRLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7R0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7T0FDbkIsQ0FBQSxDQUFFLEdBQUcsQ0FBQztPQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO09BQzVCLENBQUEsQ0FBRSxHQUFHLENBQUM7T0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO09BQ3BCLENBQUEsQ0FBRSxHQUFHLENBQUM7T0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztPQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ25CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDO0dBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBRSxDQUFDO0FBQ3hDLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUU7R0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDUCxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDUCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ0wsQ0FBQyxHQUFHLENBQUM7QUFDVCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDO0dBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtDQUNoQixDQUFDOztBQUVELENBQUEsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUVyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7O0FBRXZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBRTtHQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQSxDQUFFO0tBQy9CLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFNBQVMsQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDeEUsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDN0IsQ0FBQzs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFDO0dBQzVJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckMsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxtQkFBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxPQUFPLENBQUM7R0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtBQUNiLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztHQUNsQyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtBQUNiLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztHQUNsQyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7QUFDYixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNWLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLG1CQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7R0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7S0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO09BQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtHQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7R0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBTSxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLE9BQU8sQ0FBQztHQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFDO0FBQ25FLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzdCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtHQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNwRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7R0FDOUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztHQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBRTtHQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDeEMsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ1YsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtHQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7S0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUM7S0FDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztPQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztTQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUM7QUFDWixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNuQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNuRCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUNsRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0tBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ1YsQ0FBQTs7QUFFQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtHQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ2xELENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFFO0dBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN0RixDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDVixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7R0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQztBQUNwQyxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQ2pELENBQUE7Ozs7Ozs7Ozs7O0FDclNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsbUJBQW1CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsc0JBQXNCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBNEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0tBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztPQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNLO0FBQ0wsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBLENBQUE7R0FDNUMsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDckUsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUM7S0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7SUFDSixDQUFBOztBQUVILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0tBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7T0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7T0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxLQUFLLENBQUM7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0tBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtTQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtPQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO1NBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUE7V0FDNUMsQ0FBVyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO2FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ0EsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBO0FBQ0EsQ0FBQSxNQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7O0FDMUVqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHbEIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNiLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNoQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNULENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtHQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUMsR0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLFFBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN6QixDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBO0NBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLEdBQUdHLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xFLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0NBQ1YsQ0FBQyxDQUFBO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEI7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QjtLQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNEO0dBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUMsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0NBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7Q0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0NBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7Q0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7Q0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0NBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtDQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtDQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7Q0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtDQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtDQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7Q0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7Q0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtDQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtDQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7Q0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7Q0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtDQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBOztBQUUxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0tBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUNwQyxDQUFLO0tBQ0QsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLFNBQVMsQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxXQUFXLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsTUFBTSxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxXQUFXLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLFFBQVEsQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsWUFBWSxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsS0FBSyxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLGFBQWEsQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLGdCQUFnQixDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxrQkFBa0IsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLGdCQUFnQixDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsYUFBYSxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsVUFBVSxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLFlBQVksQ0FBQztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsVUFBVSxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLE9BQU8sQ0FBQztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxhQUFhLENBQUM7QUFDbkQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxnQkFBZ0IsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsWUFBWSxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0VBQy9DLENBQUE7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTs7QUFFbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25ELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO09BQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTs7QUFFbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7R0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUE7R0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtHQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxRQUFRLENBQUEsQ0FBRTtLQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtHQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzs7QUFFOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7R0FDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDeEUsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUUsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxZQUFZLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUE7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0EsQ0FBRyxDQUFBO0FBQ0gsQ0FBQTtBQUNBLENBQUEsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN6QyxDQUFBLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRTtHQUMvQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1IsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQy9ELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNsQixDQUFBLENBQUE7QUFDQSxDQUFBLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDckQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFNBQVMsQ0FBQSxDQUFFO0tBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxhQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQTtBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUNsSCxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0dBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdEQsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7R0FDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckQsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtBQUMvRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0dBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsUUFBUSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1dBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7S0FDakIsQ0FBSyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN2RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUU7S0FDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLGtDQUFrQyxDQUFBLENBQUUsQ0FBQTtZQUNqRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtZQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUkseUJBQXlCLENBQUEsQ0FBRSxDQUFBO0tBQzVELENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFO1NBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsVUFBVSxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQztBQUNsRixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7R0FDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDOUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO09BQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNoRSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDN0IsQ0FBQTtBQUNBLENBQUEsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDMUMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RELENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUU7QUFDaEQsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdELENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNqQyxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtHQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQTtLQUNELENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0tBQ1gsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7S0FDWCxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtLQUNYLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0tBQ1gsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQTtBQUNMLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNULENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87R0FDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2hELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87R0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRztBQUN0QyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUE7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQyxDQUFDLENBQUE7R0FDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUUvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUE7S0FDRSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUE7S0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUE7TUFDakIsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNwRztLQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO1VBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7O0FBRTVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFBLENBQUU7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNqRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGFBQWEsQ0FBQSxDQUFFO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFO0FBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0dBQ2xELENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUUzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQTtLQUNwQyxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0dBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO09BQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUUzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ3BELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFlBQVksQ0FBQSxDQUFFO0tBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7R0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO09BQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQTtHQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGVBQWUsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7S0FDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNuRSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ2IsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7R0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFdBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFO0tBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxjQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ2xELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0tBQ2QsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztLQUM1RTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNoRCxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7R0FDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsZUFBZSxDQUFBLENBQUU7T0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBO0FBQ3BHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7R0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0dBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckcsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFO0tBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtPQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUU7U0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEtBQUssQ0FBQSxDQUFBLENBQUc7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDSixDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE9BQU8sQ0FBQSxDQUFBLENBQUc7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0tBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQzlHLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCLENBQUEsQ0FBRSxDQUFDLENBQUE7U0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO1NBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkIsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7S0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtLQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtPQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBRSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLGVBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBOztBQUV4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtHQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxRQUFRLENBQUEsQ0FBQSxDQUFHO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtHQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxNQUFNLENBQUEsQ0FBQSxDQUFHO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBOztBQUV2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFFO0tBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQTtLQUNuQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7R0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBLENBQUEsQ0FBRztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUV0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFDLENBQUE7T0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsZUFBZSxDQUFBLENBQUU7T0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO09BQ2pHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUEsQ0FBRztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7R0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtPQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO1FBQ2IsQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDdkQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7R0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUMsQ0FBQTtHQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtHQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUE7QUFDbkQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTs7QUFFL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0tBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7U0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUE7Q0FDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN0RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBO0FBQy9ELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNsRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxrQkFBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBRTtBQUN0RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7R0FDckUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNsRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtHQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7S0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGlCQUFpQixDQUFBLENBQUU7S0FDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7R0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQ2IsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUN4QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7S0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGVBQWUsQ0FBQSxDQUFFO0tBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDM0MsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0dBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUE7QUFDcEQsQ0FBQTtBQUNBLENBQUEsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7R0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtHQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBRTtLQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0dBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNqRCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsTUFBTSxDQUFBLENBQUU7R0FDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7R0FFRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUcsQ0FBQTtBQUNILENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7R0FDbEIsQ0FBRyxDQUFBO0dBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxPQUFPLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0dBQzVCLENBQUcsQ0FBQTtBQUNILENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0dBQ2hCLENBQUcsQ0FBQTtBQUNILENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtHQUNoQixDQUFHLENBQUE7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQTtBQUNBLENBQUEsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0dBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLE9BQU8sQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUM1QyxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBO01BQ2IsQ0FBQTtBQUNMLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLG1CQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0dBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQTtBQUNBLENBQUEsZ0JBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0dBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUNOO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ1g7S0FDRCxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO09BQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUU7T0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ2QsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7U0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7S0FDUixDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQTtRQUNwRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7T0FDekQ7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsU0FBUyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7S0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2xGLENBQUs7S0FDRCxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxlQUFlLENBQUEsQ0FBRTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDakIsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxlQUFlLENBQUEsQ0FBRTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDakIsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQyxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7VUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUE7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUscUJBQXFCLENBQUEsQ0FBRTtLQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2pCLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLGNBQWMsQ0FBQSxDQUFFO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNqQixDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO09BQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxlQUFlLENBQUEsQ0FBRTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDakIsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2pDLENBQUs7QUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLGNBQWMsQ0FBQSxDQUFFO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsa0JBQWtCLENBQUEsQ0FBRTtLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO09BQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxnQkFBZ0IsQ0FBQSxDQUFFO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7T0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0tBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztPQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0tBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO09BQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUU7S0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO09BQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ25FLENBQUs7S0FDRCxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxjQUFjLENBQUEsQ0FBRTtTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxhQUFhLENBQUEsQ0FBRTtLQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7T0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtFQUNDLENBQUE7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLFNBQVMsQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsVUFBVSxDQUFBLENBQUU7S0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtLQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQy9CLENBQUs7S0FDRCxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtFQUNDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNqQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0dBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7UUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtVQUN2RCxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMvQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1QsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsVUFBVSxDQUFBLENBQUU7S0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsYUFBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNqRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7R0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7O0FBRXZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0tBQ3BGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsV0FBVyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7VUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7WUFDVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7T0FDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBRTtTQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEMsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsY0FBYyxDQUFBLENBQUEsQ0FBRztBQUMxQixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLGtCQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDN0QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtHQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLGNBQWMsQ0FBQSxDQUFFLENBQUMsbUNBQW1DLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNyRixDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7R0FDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxjQUFjLENBQUEsQ0FBRSxDQUFDLG1DQUFtQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDckYsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0dBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO1NBQ0gsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxrQkFBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ25GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ3ZDLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7T0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDYixDQUFBLENBQUE7Ozs7Ozs7Ozs7O0FDOXVDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHdEMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUI7QUFDckIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ1AsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0M7QUFDcEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEI7QUFDNUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07R0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFDLEdBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxRQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDekIsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsRUFBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0csQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCO0FBQzVCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQjtBQUN2QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQjtBQUM3QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCO0dBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDRCxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBNEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtDQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTs7QUFFbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDcEQsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQTs7QUFFN0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtPQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7O0FBRW5DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ2hFLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUV4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUE7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWpCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7O0FBRS9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWpCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBOztBQUVsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTs7QUFFbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUE7O0FBRW5CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXJCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXJCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXJELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXpELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUN0QixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtHQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0dBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQTtHQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsU0FBUyxDQUFBLENBQUEsQ0FBRztHQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLG1CQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQzlELENBQUEsQ0FBQTtBQUNBLENBQUEsb0JBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxzQkFBc0IsQ0FBQSxDQUFFO0dBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNqQixDQUFBLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHO0tBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQTtDQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxZQUFZQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87R0FDakcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtHQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUMzRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBRSxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7R0FDM0IsQ0FBRyxDQUFBO0FBQ0gsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsaUJBQWlCLENBQUEsQ0FBRTtHQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtLQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLGtDQUFrQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGNBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEQsQ0FBQSxDQUFBLENBQUE7RUFDQyxDQUFBOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUN0QyxDQUFBLENBQUEsQ0FBRSxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxzQkFBc0IsQ0FBQSxDQUFFLENBQUE7QUFDbkQsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDM0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxVQUFVLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFFO1NBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2pCLENBQUssTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7S0FDaEIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsU0FBUyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7R0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3pELENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0dBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBO0FBQy9DLENBQUEsQ0FBQTtBQUNBLENBQUEsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3RDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDNUIsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3hDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtLQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDL0MsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNsRixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMzRSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtHQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQTs7QUFFbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsV0FBVyxDQUFBLENBQUU7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO09BQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNELENBQUE7S0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtPQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTtPQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0tBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7S0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pDLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7R0FDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0dBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0dBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7UUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0dBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRTtHQUMzQyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ1IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUE7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQTtBQUMzQixDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLHFCQUFxQixDQUFBLENBQUUsQ0FBQTtLQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUE7R0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFFO09BQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUE7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07T0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBRTtBQUNuRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRztXQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07V0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxjQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07T0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRTtHQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDNUMsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0dBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ3BGLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUU7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0tBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzNCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGFBQWEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBO0tBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7T0FDTixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQTtBQUN2RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUMsQ0FBQztPQUNsQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNuQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFdBQVcsQ0FBQSxDQUFFO0tBQ25GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLGFBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEQsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFO0tBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxjQUFjLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNuQixDQUFBLENBQUE7U0FDQSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsbUJBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQyxDQUFBO0FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0tBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUc7T0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0tBQ2xFLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUU7T0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtPQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07T0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUMzRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztPQUNWO1NBQ0U7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1dBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1FBQ087T0FDRCxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDbkQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN4RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQTtHQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7S0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FFUixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFFBQVEsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxTQUFTLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFFBQVEsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtHQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0tBQ1osQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBO0tBQ2xCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUMsQ0FBQSxDQUFBO0tBQzNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtLQUNmLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7S0FDZCxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQTtLQUNuQixDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7R0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLHFCQUFxQixDQUFBLENBQUUsQ0FBQTtPQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtPQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUE7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtPQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO09BQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7R0FDMUIsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtHQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO09BQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07T0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtPQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO1NBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO1NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07ZUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUNBLENBQVc7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07V0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7U0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7R0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0dBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQTtBQUN2RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0tBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtRQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0tBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUU7T0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxTQUFTLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtLQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztPQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO09BQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ25FLENBQUs7S0FDRCxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7S0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDMUYsQ0FBSztLQUNELENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsZ0JBQWdCLENBQUEsQ0FBRTtLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7T0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsa0JBQWtCLENBQUEsQ0FBRTtLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7T0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLGNBQWMsQ0FBQSxDQUFFO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO09BQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxhQUFhLENBQUEsQ0FBRTtLQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztPQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLGlCQUFpQixDQUFBLENBQUU7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUscUJBQXFCLENBQUEsQ0FBRTtLQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7T0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsY0FBYyxDQUFBLENBQUU7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7T0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsY0FBYyxDQUFBLENBQUU7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7T0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0tBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztPQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLGVBQWUsQ0FBQSxDQUFFO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNqQixDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtVQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQTtBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtFQUNDLENBQUE7Q0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ3RHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFFLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQTtBQUNBLENBQUEsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0dBQy9DLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDUixDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDL0QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2xCLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUosQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGNBQWMsQ0FBQSxDQUFBLENBQUc7QUFDMUIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxrQkFBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQzdELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7R0FDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxjQUFjLENBQUEsQ0FBRSxDQUFDLG1DQUFtQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDckYsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsY0FBYyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUM1RSxDQUFBLENBQUE7Ozs7Ozs7Ozs7OztBQ2h6QkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHaEMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBOztBQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUE7Q0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDWixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNkLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7R0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUMsR0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQTtBQUN6RCxDQUFBLENBQUMsR0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLEdBQUdHLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBRSxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0MsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7R0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFO1NBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBSUMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBMkIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBRSxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTs7QUFFbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7R0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7S0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBOztBQUVqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUU7QUFDOUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUU7QUFDOUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDaEQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0tBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7TUFDWDtBQUNMLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtLQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBO01BQ1g7QUFDTCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sVUFBVSxDQUFDO09BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDWDtBQUNMLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtNQUNoQztBQUNMLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtNQUNoQztBQUNMLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztTQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1FBQ0Q7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO09BQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztTQUNMLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTthQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDQSxDQUFTO1NBQ0QsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7U0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO1dBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTthQUN2QyxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUNBLENBQVcsQ0FBQTtTQUNYLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQywwQ0FBMEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUYsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxXQUFXLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ1g7QUFDTCxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUE7QUFDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7S0FDaEY7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pDLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO0FBQ3pGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQzdFO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7T0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM5RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7ZUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7V0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtPQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtXQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO09BQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNEO0FBQ0wsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSTtPQUNKLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO09BQ25CLENBQU87T0FDRCxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQztPQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtPQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNKO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkI7T0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0Q7S0FDRCxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUE7QUFDbEQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUI7T0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBRTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFBO1NBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLFNBQVMsQ0FBQSxDQUFFO2FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7WUFDZjtVQUNGLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxxQkFBcUIsQ0FBQSxDQUFFLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHO0tBQ0o7T0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7T0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFDO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztTQUNYLENBQUE7UUFDRCxDQUFBO0tBQ1AsQ0FBSztLQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7T0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUM7U0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtTQUNWLENBQUE7UUFDRCxDQUFBO0tBQ1AsQ0FBSztBQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO09BQ2YsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtPQUNSLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7R0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVHLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7T0FDTixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0tBQ1osQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLGtCQUFrQixDQUFDO0FBQ2pGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7S0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0QsQ0FBQTtHQUNELENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtLQUNwQixDQUFLLENBQUE7S0FDRCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7T0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsUUFBUSxDQUFBLENBQUU7T0FDN0IsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtPQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNBLENBQUssQ0FBQTtBQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7T0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtTQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNBLENBQUssQ0FBQTtBQUNMLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0tBQ3BCLENBQUssQ0FBQTtBQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO09BQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUU7U0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0EsQ0FBSyxDQUFBO0FBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0tBQ2pCLENBQUssQ0FBQTtBQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO09BQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO1dBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7V0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO09BQzVCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO09BQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQTs7Ozs7Ozs7Ozs7Q0M3VkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEI7QUFDaEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtHQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUMsR0FBR25DLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxNQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0NBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDckMsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0tBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDdkYsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtHQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDMUQsQ0FBQSxDQUFBLENBQUUsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFFLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtHQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLGFBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFNBQVMsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0tBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QixDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7SUFDakU7QUFDSCxDQUFBLENBQUEsQ0FBRSxxQkFBcUIsQ0FBQSxDQUFFO0tBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCO0lBQzlFO0FBQ0gsQ0FBQSxDQUFBLENBQUUsa0JBQWtCLENBQUEsQ0FBRTtLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtJQUMzRTtBQUNILENBQUEsQ0FBQSxDQUFFLGNBQWMsQ0FBQSxDQUFFO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QixDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0lBQ3ZFO0FBQ0gsQ0FBQSxDQUFBLENBQUUsY0FBYyxDQUFBLENBQUU7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7SUFDdkU7QUFDSCxDQUFBLENBQUEsQ0FBRSxnQkFBZ0IsQ0FBQSxDQUFFO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7SUFDekU7QUFDSCxDQUFBLENBQUEsQ0FBRSxjQUFjLENBQUEsQ0FBRTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtJQUN2RTtBQUNILENBQUEsQ0FBQSxDQUFFLGFBQWEsQ0FBQSxDQUFFO0tBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QixDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0lBQ3RFO0FBQ0gsQ0FBQSxDQUFBLENBQUUsaUJBQWlCLENBQUEsQ0FBRTtLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUI7SUFDMUU7QUFDSCxDQUFBLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBRTtLQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDbEUsQ0FBSztLQUNELENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGNBQWMsQ0FBQSxDQUFFO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQTtDQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUosQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGNBQWMsQ0FBQSxDQUFBLENBQUc7QUFDMUIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxrQkFBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQzdELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7R0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxjQUFjLENBQUEsQ0FBRSxDQUFDLHVDQUF1QyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQy9FLENBQUEsQ0FBQTtBQUNBLENBQUEsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLE1BQU0sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2xFLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUU7R0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQy9CLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7QUM3RUEsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEdBQUdsQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUN6QyxDQUFBLFNBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLEVBQUUsQ0FBQSxDQUFBLENBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLEdBQTRCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtDQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBO0NBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7R0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUVoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0csQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO09BQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLHFCQUFxQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7O0FBRTNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25FLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQ2hDLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7S0FDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO09BQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7U0FDTixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFFO1dBQ04sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtPQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNBLENBQUssQ0FBQTtBQUNMLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFFO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxTQUFTLENBQUEsQ0FBQSxDQUFHO0FBQ3JCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3RFLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNyRCxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNsRSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtPQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7T0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBO09BQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDdkI7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUcsQ0FBQTtBQUNILENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDeEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBOzs7Ozs7Ozs7OztDQ3hKQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsR0FBR2xCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pDLENBQUEsV0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0NBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7Q0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7R0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDcEUsQ0FBQSxDQUFBLENBQUUsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzlCLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUNsRSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNoQixDQUFBLENBQUE7Ozs7Ozs7Ozs7OztBQ3BDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUdWLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLEVBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHRyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QjtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7S0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNEO0dBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUMsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDWixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtBQUNuQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDYixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtHQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUMsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGVBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUlDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLEdBQTJCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7R0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDZixDQUFHLENBQUE7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUNOO09BQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ1g7S0FDRCxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO09BQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztPQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBO0tBQzNFLENBQUs7S0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUE7R0FDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNwQixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksb0JBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBRztBQUN0RixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7R0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDekQsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQy9ELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBRTtPQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO09BQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUU7U0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07V0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRTthQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNBLENBQUssQ0FBQTtBQUNMLENBQUEsQ0FBQSxDQUFFLFFBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtHQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7S0FDUjtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNYO0tBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtPQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO09BQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0dBQ1YsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUM5RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUU7S0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7T0FDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtPQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0dBQ1YsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7T0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0tBQ2hCLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtPQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQSxDQUFFO0dBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUM7QUFDekQsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN4QyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxpQkFBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBO0dBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSWYsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBMEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BFLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNwRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtHQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxLQUFLLENBQUMsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixDQUFDLENBQUEsQ0FBRTtBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFBLENBQUU7T0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQSxDQUFBO0tBQzFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7S0FDUixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO09BQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7U0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBRSxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7T0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFBLENBQUU7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyw0QkFBNEIsQ0FBQSxDQUFFO1dBQ2pGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7U0FDaEQsQ0FBUyxDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtTQUNoQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO1dBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ0QsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7V0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQyxtQ0FBbUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFHO0FBQy9GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxpQkFBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUNsRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUN2RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFFO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtRQUNELENBQUE7T0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUc7QUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBR2dCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQTtVQUNiLENBQUE7O0FBRVQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBO1dBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRzthQUNILENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2VBQ2MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtpQkFDUCxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTthQUNyQyxDQUFhO2FBQ0QsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNBLENBQVMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTthQUMxQixDQUFBLENBQUE7WUFDRCxDQUFBO1NBQ1gsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTthQUM3QixDQUFBLENBQUE7WUFDRCxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtXQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsMEJBQTBCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFBLENBQUc7QUFDM0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtTQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFdBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO1NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtXQUN4QyxDQUFBLENBQUE7VUFDRCxDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFBLENBQUU7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ0EsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO1dBQ2pDLENBQUEsQ0FBQTtVQUNELENBQUE7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7V0FDOUIsQ0FBQSxDQUFBO1VBQ0QsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1dBQ0wsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxlQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDO1dBQzlFLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7V0FDaEQsQ0FBQSxDQUFBO1VBQ0QsQ0FBQTtPQUNULENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7V0FDN0IsQ0FBQSxDQUFBO1VBQ0QsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLGlCQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUE7U0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtXQUN0QyxDQUFBLENBQUE7VUFDRCxDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7V0FDTCxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLGVBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUM7V0FDOUUsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBO0tBQ0UsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtNQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87S0FDekU7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVCxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFO0dBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFFLENBQUE7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0EsQ0FBRyxDQUFBO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztHQUVGLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNSLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRztBQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRztLQUNIO09BQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDWDtLQUNELENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ25CLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixDQUFBLENBQUE7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO1NBQ1osQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO1NBQ2YsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1I7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRztLQUNIO09BQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7TUFDWDtLQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsVUFBYyxDQUFBLENBQUEsQ0FBRztBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtHQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUE7Ozs7Ozs7Ozs7O0NDcGRBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLEdBQUdsQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsR0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNkLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDWixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtBQUNuQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtHQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQyxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUE7QUFDbEQsQ0FBQSxDQUFDLEdBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBR0csQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLE9BQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3hDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0tBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0dBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUE7QUFDM0MsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUEsQ0FBQTtPQUN0QixDQUFBLENBQUUsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztPQUN6RjtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUM3RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7T0FDTixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0tBQ1osQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUEsQ0FBRTtPQUNqQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDM0MsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzNGLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQTs7QUFFM0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsa0JBQWtCLENBQUM7QUFDMUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxrQkFBa0IsQ0FBQztBQUMxRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0tBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNELENBQUE7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtPQUN0QixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7U0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsUUFBUSxDQUFBLENBQUU7U0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7U0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtXQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDQSxDQUFPLENBQUE7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO09BQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtPQUNqQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7V0FDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO1NBQ2xCLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtXQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixRQUFRLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJO1dBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNyQixDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7V0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO09BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7U0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDQSxDQUFLLENBQUE7QUFDTCxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtTQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFFO1dBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNBLENBQU8sQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO09BQ25CLENBQU8sQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtTQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO2FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUNVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO2FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtPQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtTQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7YUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO2VBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO2VBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07YUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7T0FDNUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7T0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFBOzs7Ozs7Ozs7O0FDL0xBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBSTVCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLEdBQTJCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07R0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFFLG9CQUFvQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRTtHQUMxRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQyxHQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsZUFBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLEVBQWlDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxzQkFBc0IsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsRUFBaUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBO0NBQ2hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLEdBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBR0csQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUUsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckMsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNULENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ1gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDYixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNmLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNoQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0dBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQyxHQUFHYixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQzFCLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLG1CQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0tBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDeEUsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDbkQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksd0JBQXdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUE7QUFDM0QsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDMUUsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxtQkFBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQzdGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBO0FBQy9DLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDL0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBO0FBQ25ELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsZUFBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLEVBQUUsQ0FBQyxDQUFBO0FBQ3ZELENBQUEsQ0FBQSxDQUFFLGVBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLEVBQUUsQ0FBQyxDQUFBO0FBQzNELENBQUEsQ0FBQSxDQUFFLGFBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR2EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzdGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUEsQ0FBQSxDQUFHO09BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0tBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxrQkFBa0IsQ0FBQSxDQUFBLENBQUc7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxXQUFXLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLGFBQWEsQ0FBQSxDQUFFO0FBQ2hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsSUFBSSxDQUFBLENBQUEsQ0FBRztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO1dBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7YUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO2FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtlQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtXQUNwQyxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLG9CQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO1dBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFFO0FBQzlFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUN2QixDQUFhLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7T0FDdkIsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLG9CQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNQLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtPQUNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO2FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7YUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUNVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNqQixDQUFTLENBQUE7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNQLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDYixDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksbUJBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQTtBQUN4RCxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHO0tBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDSixDQUFBLENBQUEsQ0FBQTtTQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7U0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsZUFBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ2hCO1NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDdkI7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNiLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLElBQUksQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxLQUFLLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDMUUsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDO0tBQ2hDLENBQUs7S0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNEO0FBQ0gsQ0FBQTtBQUNBLENBQUEsZUFBZSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQTtBQUNBLENBQUEsZUFBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDMUUsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUM7QUFDaEUsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzFFLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsZUFBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0tBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3pDLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBRSxXQUFXLENBQUEsQ0FBQSxDQUFHO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUN0RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDcEYsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxtQkFBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQTtHQUN6QyxDQUFBLENBQUEsQ0FBQTtLQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0tBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNqQjtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLFNBQVMsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUN2QixDQUFBO0tBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7S0FDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRztPQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO09BQ1YsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO09BQ3BCLENBQUMsc0JBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGdCQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDbkUsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLG9CQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLG9CQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ3ZCLENBQUEsQ0FBQSxDQUFBO1NBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtTQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNqQjtTQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFlBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLGVBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7V0FDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ0QsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGVBQWUsQ0FBQSxDQUFFO09BQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0tBQ1IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLG1CQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0osQ0FBQSxDQUFBLENBQUE7T0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7T0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7T0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNqQjtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsU0FBUyxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtRQUN2QjtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtHQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtHQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUc7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNiLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1gsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDdkQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksbUJBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQTtBQUN4RCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtHQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUc7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNKLENBQUEsQ0FBQSxDQUFBO09BQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO09BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO09BQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDakI7T0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDSixDQUFBLENBQUEsQ0FBQTtTQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7U0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDakI7U0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNiLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksbUJBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQTtBQUN4RCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtHQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUc7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNKLENBQUEsQ0FBQSxDQUFBO09BQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO09BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO09BQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDakI7T0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDSixDQUFBLENBQUEsQ0FBQTtTQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7U0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDakI7U0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtTQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDYixDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QyxDQUFBLENBQUEsQ0FBRztBQUMxQyxDQUFBLENBQUEsQ0FBRSxjQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsOERBQThELENBQUM7QUFDM0csQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNULENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHO0FBQ0wsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdDLENBQUEsQ0FBQSxDQUFHO0FBQzNDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNQLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDVCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNSLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDVCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0dBQ0osQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUE7Ozs7Ozs7Ozs7O0FDdGNBLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUcvQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsWUFBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEQsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQU8sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQSxDQUFFO0dBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0tBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQTtLQUMxQyxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7T0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUE7T0FDcEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO09BQ3BCO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7T0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ2pCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtXQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1dBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ0EsQ0FBTztPQUNEO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDTixDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQSxDQUFHO0FBQ0gsQ0FBQTtBQUNBLENBQUEsUUFBYyxDQUFBLENBQUEsQ0FBRztBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7R0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBOzs7Ozs7Ozs7O0FDbkJBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHekIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUE7O0FBRW5CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUE7QUFDdEMsQ0FBQSxDQUFDLEdBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBLENBQUUsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07R0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUE7QUFDbEMsQ0FBQSxDQUFDLEdBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHRyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBRSxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBRVosQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSTJCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxPQUFjLENBQUEsQ0FBQSxDQUFHMUIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW9DLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0tBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUE7SUFDWCxDQUFBO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7S0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDWCxDQUFBO0dBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBO0lBQ1gsQ0FBQTtBQUNILENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUMsQ0FBQSxDQUFFO0FBQ3pELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7S0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQTtJQUNYLENBQUE7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtLQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNYLENBQUE7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUU7S0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7SUFDWCxDQUFBO0FBQ0gsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtDQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxVQUFVLENBQUEsQ0FBRTtHQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7R0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7R0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEIsQ0FBQSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtFQUNDLENBQUE7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLGVBQWUsQ0FBQSxDQUFFO0dBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUc7S0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQTtBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxlQUFlLENBQUEsQ0FBRTtHQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7R0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsQixDQUFBLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHO0tBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQTtFQUNDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsS0FBSyxDQUFBLENBQUU7R0FDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsS0FBSyxDQUFBLENBQUU7QUFDakUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDckUsQ0FBQSxDQUFBOzs7Ozs7Ozs7OztBQzVJQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUd6QyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFDLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xELENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQStCLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkIsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQyxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQyxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkIsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQyxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdDLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0MsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxVQUFVLENBQUEsQ0FBRTtJQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7SUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNDLENBQUE7QUFDRCxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7RUNqQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUFILENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztFQUM3REEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUJBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBbUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07RUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHUCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBc0I7RUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7RUFDckgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7QUFDckgsQ0FBQTs7Ozs7Ozs7Ozs7OztFQ0xBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07RUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHUCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBc0I7RUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQzdILENBQUE7Ozs7Ozs7Ozs7OztBQ0pBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ3VELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUc5RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUI7Q0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHVSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBZ0M7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxZQUFZLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUc7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtTQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ25GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO1NBQ1IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7U0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTthQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTthQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNhO2FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQztTQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLGdCQUFnQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLGlCQUFpQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFFO1NBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztTQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLDBCQUEwQixDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQywyQkFBMkIsQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyx5SEFBeUgsQ0FBQztBQUN0SixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7U0FDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO2FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDQSxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDO2FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUzthQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO3FCQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEtBQUssQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUMxRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFOzZCQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLGdCQUFnQixDQUFBLENBQUU7NkJBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDO3lCQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDcEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7eUJBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLGdCQUFnQixDQUFBLENBQUU7eUJBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7cUJBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEtBQUssQ0FBQztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsZ0JBQWdCLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDQSxDQUFhO2FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLGdCQUFnQixDQUFBLENBQUU7YUFDbEMsQ0FBYTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsWUFBWSxDQUFDO0FBQ3hKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDekgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7U0FDZCxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtTQUNWLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO1NBQ1YsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7U0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsS0FBSyxDQUFDO0FBQy9FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1NBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxZQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxhQUFhLENBQUM7QUFDaEssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxtQkFBbUIsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNoSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtTQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ2xGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztTQUNGLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRztTQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUM7QUFDMUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQW9ELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBVTtBQUMvQjs7Ozs7Ozs7Ozs7QUMzTEEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHaEUsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXVCO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sb0JBQW9CLENBQUM7S0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7U0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1NBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE9BQU8sQ0FBQSxDQUFFO2lCQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO2lCQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07aUJBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztpQkFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7U0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO2FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxPQUFPLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDO0FBQ3pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDO2lCQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNpQjtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0UsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUM7QUFDbEgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTthQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTthQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsS0FBSyxDQUFBLENBQUU7YUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7U0FDVixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7YUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7YUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRTtpQkFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7a0JBQ2lCO2lCQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7YUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTthQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsS0FBSyxDQUFBLENBQUU7YUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUM7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRztTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7U0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFDO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxTQUFTLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFVBQVUsQ0FBQztBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFNBQVMsQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFNBQVMsQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsVUFBVSxDQUFDO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxVQUFVLENBQUM7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFNBQVMsQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsVUFBVSxDQUFDO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7U0FDbEgsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7U0FDaEksQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQztTQUNwSCxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDN0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDO1NBQ25KLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFFO2FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDO1NBQzVFLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBc0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFVO0FBQy9COzs7Ozs7Ozs7Ozs7Ozs7QUMvSkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTUMsV0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7YUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQztTQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO2FBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQztTQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7Q0FDZCxDQUFDO0FBQ0QsQ0FBQUQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUzs7Ozs7Ozs7Ozs7QUNuQjdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNQyxhQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDO0tBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztDQUNkLENBQUM7QUFDRCxDQUFBRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBVzs7Ozs7Ozs7Ozs7QUNYakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxQixDQUFBLE1BQU1DLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQztBQUMxSCxDQUFBRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTOzs7Ozs7Ozs7O0VDSDdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUFoRSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7RUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBR1AsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBZ0I7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDVSxnQkFBQSxDQUFBLENBQXNCLENBQUEsQ0FBRUgsU0FBTyxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQ1Usa0JBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUVWLFNBQU8sQ0FBQztBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUNXLGdCQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFFWCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQTs7Ozs7Ozs7Ozs7O0FDSnJELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzVLLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztTQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUc7U0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87TUFDYjtDQUNMLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUNqQixDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztTQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztLQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxjQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxTQUFTLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0NBQ3hFLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtDQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEI7Q0FDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUMsQ0FBQztDQUNoRyxDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0YsQ0FBQSxDQUFFLGlCQUFpQixDQUFDO0NBQ3pJLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztDQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUM7QUFDNUosQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7Q0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQztBQUM3SSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7Q0FDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUM7QUFDL0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUMvQzs7Ozs7Ozs7OztFQ3ZDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07RUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHUCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBb0I7RUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE4QjtFQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztNQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7VUFDakMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7TUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztVQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO2NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2tCQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBRTtzQkFDdEIsT0FBTyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixPQUFPLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7dUJBQ3FCO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFFO2tCQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUlILENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUM7QUFDcEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQztBQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7bUJBQ2lCO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUM7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztNQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztFQUN6QixDQUFDO0FBQ0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUMvQixDQUFBOzs7Ozs7Ozs7Ozs7O0VDL0NBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztFQUM3REEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBOEJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxpQkFBQSxDQUFBLENBQUEsQ0FBNEJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLHlCQUErQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLGtCQUFBLENBQUEsQ0FBQSxDQUE2QkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEscUJBQTJCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkJBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSwyQkFBaUNBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBNEJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QkEsOEJBQTRCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsbUJBQUEsQ0FBQSxDQUFBLENBQThCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQTRCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSx1QkFBNkJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsZUFBQSxDQUFBLENBQUEsQ0FBMEJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLHdCQUE4QkEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUJBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqbEIsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUMvQixDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ3JDLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7RUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHUCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBc0I7RUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXNCO0VBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUI7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGFBQWEsQ0FBQSxDQUFBLENBQUc7TUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7R0FDbkI7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUM7TUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0VBQ3BELENBQUM7QUFDRCxDQUFBLENBQUFWLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7RUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2RCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUM5RyxDQUFBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7TUFDUixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1dBQ2Q7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDO2tCQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO2tCQUNULENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7a0JBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1VBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2YsQ0FBQSxDQUFBO0VBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7TUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ25ELENBQUEsQ0FBQTtFQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUM7QUFDbkosQ0FBQSxDQUFBO0VBQ0FBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUI7TUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07R0FDbkI7QUFDRCxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLGFBQWEsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUM7QUFDNUQsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsa0JBQWtCLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQztBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sYUFBYSxDQUFBLENBQUEsQ0FBRztNQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUNuQjtBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO01BQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztFQUNwRCxDQUFDO0FBQ0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLFlBQVksQ0FBQztFQUNyREEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUF5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxTQUFTLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLG9CQUFvQixDQUFBLENBQUEsQ0FBRztNQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUc7R0FDWjtFQUNEQSxTQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBNkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLG9CQUFvQixDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxlQUFlLENBQUEsQ0FBQSxDQUFHO01BQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO01BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO01BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7R0FDdkI7RUFDREEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUE0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsZUFBZSxDQUFDO0FBQzFELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLGtCQUFrQixDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxlQUFlLENBQUEsQ0FBQSxDQUFHO01BQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO01BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUU7TUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUNuQjtFQUNEQSxTQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQTRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxlQUFlLENBQUM7QUFDMUQsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsa0JBQWtCLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUM7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGtCQUFrQixDQUFBLENBQUEsQ0FBRztNQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtNQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNULENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztHQUMvQztFQUNEQSxTQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQTRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxrQkFBa0IsQ0FBQztBQUM3RCxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQyxrQkFBa0IsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQztBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sWUFBWSxDQUFBLENBQUEsQ0FBRztNQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUNoQjtBQUNELENBQUEsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDakYsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7RUFDdkMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsY0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsZ0JBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDO0FBQ3pNLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxjQUFjLENBQUEsQ0FBQSxDQUFHO01BQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0dBQ2hCO0FBQ0QsQ0FBQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNyRixDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtFQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1FBQy9ELENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztRQUN6QyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUM7QUFDdEYsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtFQUM3Q0EsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQTZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxnQkFBZ0IsQ0FBQztBQUM1RCxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQStCLGtCQUFrQixDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUM7RUFDN0VBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCO01BQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO01BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDO0dBQy9DO0FBQ0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsYUFBYSxDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDO0FBQ3RFLENBQUE7Ozs7Ozs7Ozs7OztBQzlHQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNpRSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHeEUsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW1CO0NBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUM7QUFDeEQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsRUFBRSxDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBO2lCQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtzQkFDcUI7cUJBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO2FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7aUJBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO3FCQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO3NCQUNxQjtxQkFDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7a0JBQ2lCO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxFQUFFLENBQUM7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFFBQVEsQ0FBQztBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixJQUFJLENBQUEsQ0FBQSxDQUFHO3lCQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLE9BQU8sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVlILENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUM7YUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFFBQVEsQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQzthQUNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsUUFBUSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZQSxTQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxnQkFBZ0IsQ0FBQztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyw4QkFBOEIsQ0FBQztBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO1NBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTthQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7aUJBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLElBQUksQ0FBQSxDQUFBLENBQUc7eUJBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsUUFBUSxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFDO2FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO2FBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsRUFBRSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixFQUFFLENBQUEsQ0FBRTtpQkFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGdCQUFnQixDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLDhCQUE4QixDQUFDO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFlBQVksQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2FBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7eUJBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTswQkFDeUI7eUJBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNBLENBQWE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDM0IsQ0FBYTtVQUNKO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTBELENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBRztBQUNqQjs7Ozs7Ozs7Ozs7Ozs7RUNsTEEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQWxFLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztFQUM3REEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQkEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07RUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO01BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFFO2NBQ1AsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO2tCQUNmLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO21CQUNpQjtrQkFDRCxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUNhLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO2NBQ2YsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUNhO2NBQ0QsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO01BQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxZQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUlBLFNBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDeEksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDSixDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7TUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO01BQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1EsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtVQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtVQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztrQkFDZixDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7a0JBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO2tCQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztrQkFDZixDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUU7a0JBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNZLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJQSxTQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO0FBQzdILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7TUFDM0IsQ0FBSztBQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO2NBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTtBQUM5RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQztrQkFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDO3NCQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7Y0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7MEJBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzJCQUN5QjswQkFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJOzBCQUNoQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTt1QkFDcUI7c0JBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFHO2tCQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBRTtrQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7a0JBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7c0JBQzFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTtzQkFDMUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBRztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7c0JBQ29CLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFFO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTtzQkFDMUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBRztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTt1QkFDcUI7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtzQkFDb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO3NCQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7a0JBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFHO2tCQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7a0JBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFO2tCQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFBLENBQUc7a0JBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFFO2tCQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUU7a0JBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBRTtrQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO01BQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7RUFDbEQsQ0FBQztBQUNELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87RUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtDO0FBQ25ELENBQUEsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7TUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7Y0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO2NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2tCQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTttQkFDaUI7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2VBQ2E7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1lBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztFQUNyQixDQUFDO0FBQ0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLFNBQVMsQ0FBQTs7Ozs7Ozs7OztBQ25QN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtDQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR1AsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQThCO0NBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTJCO0NBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUI7QUFDaEMsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsQyxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMxQyxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3hDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7S0FDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLGtCQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0FBQzNCLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0tBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsT0FBTyxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUM7QUFDbEUsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7S0FDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7S0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGNBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUdILENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUN6RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO2FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFlBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7aUJBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQzthQUMvRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxZQUFZLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNuRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsQixDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUU7S0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGNBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsR0FBRyxDQUFDO0tBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFdBQVcsQ0FBQSxDQUFBLENBQUc7U0FDaEIsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLGFBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO01BQ2hEO0tBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7U0FDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztTQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7U0FDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFDLGVBQWUsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUM7U0FDMUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1M7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsQixDQUFBO0FBQ0E7Ozs7Ozs7OztBQzVGQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7Q0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdkLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE4QjtDQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR1UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWtCO0NBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFrQjtDQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFtQjtDQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFtQjtDQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdHLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF5QztDQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTRCO0NBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE2QjtDQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFnQztDQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF1QjtDQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFnQztDQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBc0I7Q0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF1QjtDQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQThCO0NBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBdUI7Q0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW1CO0NBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXNCO0NBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUM7Q0FDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFvQjtDQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWdCO0NBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBdUI7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUMzQyxDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLGFBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDMUcsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzlFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDeEUsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUU7S0FDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxJQUFJLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsUUFBUSxDQUFDO1VBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzNCLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7U0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQztBQUNqRCxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtTQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUM7QUFDL0MsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7U0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFDO0FBQy9DLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLCtDQUErQyxDQUFDO1NBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxVQUFVLENBQUM7QUFDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0I7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUM7U0FDeEYsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7aUJBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7YUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO2FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO1NBQzdHLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxFQUFFLENBQUM7U0FDaEMsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQzNCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQ2pFLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN0RCxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsRUFBRSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUN4RSxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUM1RCxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ3ZGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtxQkFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO1NBQ2QsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO2lCQUN2QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUNwQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtxQkFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO1NBQ2QsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDeEMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLEVBQUUsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDO1NBQ2xFLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO2lCQUNWLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtrQkFDTjtpQkFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUM7QUFDOUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUNoRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztBQUMzRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQztBQUMzRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJO2lCQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDOUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtxQkFDb0I7aUJBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxFQUFFLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUN6QixDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7U0FDaEUsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsa0JBQWtCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFNBQVMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQ25GLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDbEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQ2pFLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUM1RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQztxQkFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTswQkFDeUI7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtxQkFDUixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO1NBQ2QsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7aUJBQ3ZCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFDO2FBQ3BDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFO3FCQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUM7U0FDZCxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3pDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDakUsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUM7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLE9BQU8sQ0FBQztTQUM1RCxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQzthQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQzthQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO1NBQ2xGLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFlBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztTQUM5RSxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO2lCQUN2QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUM5QixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDeEYsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUM7aUJBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsR0FBRyxDQUFDO2FBQzlFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNoRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7aUJBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRTtBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLElBQUksQ0FBQztpQkFDcEYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ3RHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDaEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0M7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLElBQUksQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLE1BQU0sQ0FBQztxQkFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDOUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFFO0FBQ2pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDaUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNpQjtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDMUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNBLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLG9CQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUM7YUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQzthQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUM7U0FDbEUsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsWUFBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxvQkFBb0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDO2FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGVBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxlQUFlLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUM5RixDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFDO1NBQ3ZDLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQ25FLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxjQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQzthQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDO1NBQzVELENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQzthQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxjQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQzthQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxZQUFZLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUN4RixDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7aUJBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7aUJBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFBLENBQUEsQ0FBRztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxNQUFNLENBQUM7U0FDaEUsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ3BHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxjQUFjLENBQUM7U0FDeEYsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQzthQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxlQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO2FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUM7U0FDL0QsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQzthQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxlQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxlQUFlLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUMzRixDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO2lCQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSTtxQkFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFO3FCQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO1NBQ2QsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsSUFBSSxDQUFDO1NBQ3hDLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7aUJBQ3ZCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsZ0JBQWdCLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQztBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFDO2FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUNwRSxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRzthQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztTQUM5QyxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO2FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7U0FDcEQsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDL0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxXQUFXLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDdEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNwRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRTtpQkFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsSUFBSSxDQUFDO2lCQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSTtxQkFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUM7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDL0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsY0FBYyxDQUFDO0FBQ3BGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO2lCQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7eUJBQ2YsT0FBTyxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsT0FBTyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixPQUFPLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUM7YUFDTixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7YUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztpQkFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQztBQUN0RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7eUJBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQztTQUNkLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7YUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLElBQUksQ0FBQztTQUNoRCxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO2FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQ3hFLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUM7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3JHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7U0FDeEUsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7YUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztTQUMxRCxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7YUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDL0UsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztTQUN0RCxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUM7U0FDM0IsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDdkQsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUM7U0FDMUQsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEVBQUUsQ0FBQztTQUMvQixDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDM0QsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUM7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDO1NBQzlCLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFDO1NBQ3BDLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDaEUsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7cUJBQ29CO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsRUFBRSxDQUFDO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDQSxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQzdCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEVBQUUsQ0FBQztpQkFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUM7U0FDbkMsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7YUFDNUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsRUFBRSxDQUFDO2lCQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDL0QsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDL0MsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDO1NBQzdFLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLGVBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7U0FDekcsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTthQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7YUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO1NBQy9DLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztTQUNoSCxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsY0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDNUksQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztTQUNqSCxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxjQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQzdJLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQzthQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO2lCQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQzthQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO1NBQy9DLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQzFGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUM7YUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ2hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUMvRSxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUc7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJO2lCQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtpQkFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQjtxQkFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFBLENBQUEsQ0FBRztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLDZCQUE2QixDQUFDO2FBQ3RELElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsTUFBTSxDQUFDO2FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDbEQsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsNkJBQTZCLENBQUM7YUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsTUFBTSxDQUFDO2lCQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUN2RSxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFDO1NBQzlFLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO2FBQzlFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztTQUMxRyxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO1NBQy9GLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDckgsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFDO1NBQy9CLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztTQUM1RCxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7U0FDeEYsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTttQkFDUCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzttQkFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFDO1NBQy9CLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7YUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDaEQsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQ3RFLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7U0FDakQsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsT0FBTyxDQUFDO1NBQzNDLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDdkUsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQztTQUN2RSxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO1NBQ3RDLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDbEUsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDO1NBQ2hDLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQztTQUNuRSxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztTQUMvRixDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQztTQUNuRixDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDO1NBQ3BFLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztTQUNoRyxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixZQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLGtCQUFrQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixnQkFBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2NBQ3ZEO2FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7U0FDN0QsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7aUJBQ3ZCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUM7YUFDdEMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxRQUFRLENBQUM7YUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLFlBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0Isa0JBQWtCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLGdCQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7Y0FDdkQ7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDbEYsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7aUJBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7cUJBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUM7QUFDbkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO2FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQztTQUMvQyxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDOUUsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxPQUFPLENBQUM7U0FDbkQsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdDLFdBQUEsQ0FBQSxDQUFpQjthQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsT0FBTyxDQUFDO1NBQ25ELENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQy9FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsV0FBVyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO2FBQzFGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO1NBQy9DLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7YUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLElBQUksQ0FBQztTQUNoRCxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO2FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQ3hFLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsV0FBVyxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksV0FBVyxDQUFBLENBQUEsQ0FBRztpQkFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxXQUFXLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxZQUFZLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxTQUFTLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxXQUFXLENBQUEsQ0FBQSxDQUFHO2lCQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1M7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQztBQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsYUFBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQ3JGLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO2FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFlBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxTQUFTLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUM5RSxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDcEosQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7U0FDOUIsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJO2lCQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFO2lCQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7aUJBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRTtTQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUU7QUFDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7U0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO1NBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO1NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztBQUN2RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3RILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7U0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUU7YUFDVixDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7YUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsVUFBVSxDQUFDO0FBQ3JHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUMzRCxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7YUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO2lCQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEdBQUcsQ0FBQztTQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFDO1NBQzFGLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNsRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDO0FBQ3RGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDO2FBQzlFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFlBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxjQUFjLENBQUM7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxZQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQztBQUNuSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7U0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTthQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7aUJBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLElBQUksQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7U0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsR0FBRyxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTthQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUM7YUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFO2lCQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7U0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxVQUFVLENBQUM7YUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsZ0JBQWdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7U0FDbkcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDekcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTthQUNSLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDL0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsY0FBYyxDQUFDO0FBQ25GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO1NBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxnQkFBZ0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztTQUNuRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDeEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBRTtTQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFFLENBQUM7U0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsY0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ2hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxRQUFRLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTthQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDL0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQy9GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQy9GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7U0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztTQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQztTQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO2FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUM7YUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QyxDQUFDO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtTQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxRQUFRLENBQUM7U0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxXQUFXLENBQUEsQ0FBRTthQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO1NBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsUUFBUSxDQUFDO1NBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNhO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsUUFBUSxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTthQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLFFBQVEsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO1NBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO1NBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7U0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztTQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO2FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87YUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLFlBQVksQ0FBQztTQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO2FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO1NBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO2FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBRTtTQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7U0FDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7U0FDZixNQUFNLENBQUMsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztTQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDMUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0NBQ2xGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7Q0FDOUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDO0FBQ3JCLENBQUE7QUFDQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFlBQVksQ0FBQztLQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtxQkFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7cUJBQ29CO2lCQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUM7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO1NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztTQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBR3BDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU07ZUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQztTQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxVQUFVLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0NBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0tBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNqQixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsWUFBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksWUFBWSxDQUFDO1NBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7S0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtBQUMzRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQy9FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxpQ0FBaUMsQ0FBQztBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsK0JBQStCLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLHdDQUF3QyxDQUFDO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTthQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2lCQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFBO0FBQ0EsQ0FBQSxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7aUJBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87cUJBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsRUFBRSxDQUFDO2FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0NBQ04sQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLGFBQWEsQ0FBQSxDQUFFO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsYUFBYSxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUU7U0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTthQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO2lCQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDYTthQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO2lCQUMzQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFDO0NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztDQUNOLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxFQUFFLENBQUM7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsV0FBVyxDQUFDO2FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxjQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1M7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFFO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEVBQUUsQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDbEIsQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtLQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNoQixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsYUFBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLGFBQWEsQ0FBQztTQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUM7S0FDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7S0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtBQUMzRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsaUNBQWlDLENBQUM7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLHlCQUF5QixDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsUUFBUSxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtTQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTthQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFBO0FBQ0EsQ0FBQSxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7S0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUU7U0FDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTthQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO2lCQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxFQUFFLENBQUM7YUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7Q0FDakIsQ0FBQztDQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0tBQzNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQztBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7YUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7YUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtpQkFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUU7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQy9CLENBQUM7Q0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEVBQUUsQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUM7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO1NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0tBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7YUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2lCQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUU7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUN4QixDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxFQUFFLENBQUM7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsV0FBVyxDQUFDO2FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsY0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBRTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0NBQ2xCLENBQUM7Q0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFlBQVksQ0FBQztLQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxRQUFRLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNBLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDO1NBQzVELENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztTQUN4RCxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLGFBQWEsQ0FBQSxDQUFFO0FBQzNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3BGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTthQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTthQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtpQkFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO2lCQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFO2lCQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQzthQUM5RCxDQUFhO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2lCQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsWUFBWSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUU7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUM7YUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7U0FDMUQsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFDLENBQUM7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsQ0FBQyxDQUFDO2FBQzNDLENBQWE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBQSxDQUFHLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7cUJBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUc7cUJBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO3FCQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFO3lCQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFFO3lCQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFOzZCQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ0EsQ0FBaUI7aUJBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFDO2FBQ3hGLENBQWE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFFO2lCQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO3FCQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztpQkFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7cUJBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztzQkFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7cUJBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUU7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixzQkFBc0IsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO2FBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUU7cUJBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7eUJBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUM7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7aUJBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsSUFBSSxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7YUFDVixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLEtBQUssQ0FBQSxDQUFFO1NBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzdCOzs7Ozs7Ozs7OztBQ3ZsREEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQSxDQUFBLENBQUc7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNDO0FBQ0Q7Ozs7Ozs7Ozs7O0FDL0NBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFHO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0VBQ2Q7QUFDRDs7Ozs7Ozs7OztFQ3JEQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBRixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxDQUFBQSxTQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLENBQWNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsRSxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0VBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUdQLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF1QjtFQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF3QjtFQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF3QjtFQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDVixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUM1RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdXLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFzQjtFQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTRDO0VBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHRyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUM7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBckIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUU7RUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDN0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7VUFDcEMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7VUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7VUFDeEMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO1VBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7QUFDYixDQUFBLENBQUE7QUFDQSxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsa0JBQWtCLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxHQUFHLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtFQUN0QixDQUFDO0FBQ0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7RUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUNyRCxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM5QixDQUFBOzs7Ozs7Ozs7Ozs7O0FDN0RLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFDLENBQUEsQ0FBRSxrQkFBa0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7OyIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2XX0= diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/fs-proxy.js b/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/fs-proxy.js deleted file mode 100644 index 1a016c8..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +++ /dev/null @@ -1,259 +0,0 @@ -// @ts-check - -/** - * @param {unknown} value - */ -const getType = (value) => { - if (value === undefined) return 0 - if (value === null) return 1 - const t = typeof value - if (t === 'boolean') return 2 - if (t === 'number') return 3 - if (t === 'string') return 4 - if (t === 'object') return 6 - if (t === 'bigint') return 9 - return -1 -} - -/** - * @param {import('memfs').IFs} memfs - * @param {any} value - * @param {ReturnType} type - * @returns {Uint8Array} - */ -const encodeValue = (memfs, value, type) => { - switch (type) { - case 0: - case 1: - return new Uint8Array(0) - case 2: { - const view = new Int32Array(1) - view[0] = value ? 1 : 0 - return new Uint8Array(view.buffer) - } - case 3: { - const view = new Float64Array(1) - view[0] = value - return new Uint8Array(view.buffer) - } - case 4: { - const view = new TextEncoder().encode(value) - return view - } - case 6: { - function storeConstructor(obj, memfs, processed = new WeakSet()) { - if (!obj || typeof obj !== 'object') { - return - } - - if (processed.has(obj)) { - return - } - - processed.add(obj) - - const [entry] = - Object.entries(memfs).filter(([_, v]) => v === obj.constructor)[0] ?? - [] - if (entry) { - Object.defineProperty(obj, '__constructor__', { - configurable: true, - writable: true, - enumerable: true, - value: entry, - }) - } - - for (const value of Object.values(obj)) { - storeConstructor(value, memfs, processed) - } - } - - storeConstructor(value, memfs) - - const json = JSON.stringify(value, (_, value) => { - if (typeof value === 'bigint') { - return `BigInt(${String(value)})` - } - if (value instanceof Error) { - return { - ...value, - message: value.message, - stack: value.stack, - __error__: value.constructor.name, - } - } - return value - }) - const view = new TextEncoder().encode(json) - return view - } - case 9: { - const view = new BigInt64Array(1) - view[0] = value - return new Uint8Array(view.buffer) - } - case -1: - default: - throw new Error('unsupported data') - } -} - -/** - * @param {typeof import('memfs')} memfs - * @param {Uint8Array} payload - * @param {number} type - * @returns {any} - */ -const decodeValue = (memfs, payload, type) => { - if (type === 0) return undefined - if (type === 1) return null - if (type === 2) - return Boolean(new Int32Array(payload.buffer, payload.byteOffset, 1)[0]) - if (type === 3) - return new Float64Array(payload.buffer, payload.byteOffset, 1)[0] - if (type === 4) return new TextDecoder().decode(payload.slice()) - if (type === 6) { - const obj = JSON.parse( - new TextDecoder().decode(payload.slice()), - (_key, value) => { - if (typeof value === 'string') { - const matched = value.match(/^BigInt\((-?\d+)\)$/) - if (matched && matched[1]) { - return BigInt(matched[1]) - } - } - return value - }, - ) - - function loadConstructor(obj, memfs, processed = new WeakSet()) { - if (!obj || typeof obj !== 'object') { - return - } - - if (processed.has(obj)) { - return - } - - processed.add(obj) - - if (obj.__constructor__) { - const ctor = obj.__constructor__ - delete obj.__constructor__ - Object.setPrototypeOf(obj, memfs[ctor].prototype) - } - - for (const value of Object.values(obj)) { - loadConstructor(value, memfs, processed) - } - } - - loadConstructor(obj, memfs) - - if (obj.__error__) { - const name = obj.__error__ - const ErrorConstructor = globalThis[name] || Error - delete obj.__error__ - const err = new ErrorConstructor(obj.message) - Object.defineProperty(err, 'stack', { - configurable: true, - enumerable: false, - writable: true, - value: err.stack, - }) - Object.defineProperty(err, Symbol.toStringTag, { - configurable: true, - enumerable: false, - writable: true, - value: name, - }) - for (const [k, v] of Object.entries(obj)) { - if (k === 'message' || k === 'stack') continue - err[k] = v - } - return err - } - return obj - } - if (type === 9) - return new BigInt64Array(payload.buffer, payload.byteOffset, 1)[0] - throw new Error('unsupported data') -} - -/** - * @param {import('memfs').IFs} fs - * @returns {(e: { data: { __fs__: { sab: Int32Array, type: keyof import('memfs').IFs, payload: any[] } } }) => void} - */ -// oxlint-disable-next-line no-unused-vars -- fixed in an upcoming release -export const createOnMessage = (fs) => - function onMessage(e) { - if (e.data.__fs__) { - /** - * 0..4 status(int32_t): 21(waiting) 0(success) 1(error) - * 5..8 type(napi_valuetype): 0(undefined) 1(null) 2(boolean) 3(number) 4(string) 6(jsonstring) 9(bigint) -1(unsupported) - * 9..16 payload_size(uint32_t) <= 1024 - * 16..16 + payload_size payload_content - */ - const { sab, type, payload } = e.data.__fs__ - const fn = fs[type] - try { - const ret = fn.apply(fs, payload) - const t = getType(ret) - Atomics.store(sab, 1, t) - const v = encodeValue(fs, ret, t) - Atomics.store(sab, 2, v.length) - new Uint8Array(sab.buffer).set(v, 16) - Atomics.store(sab, 0, 0) // success - } catch (/** @type {any} */ err) { - const t = getType(err) - Atomics.store(sab, 1, t) - const v = encodeValue(fs, err, t) - Atomics.store(sab, 2, v.length) - new Uint8Array(sab.buffer).set(v, 16) - Atomics.store(sab, 0, 1) // error - } finally { - Atomics.notify(sab, 0) - } - } - } - -/** - * @param {typeof import('memfs')} memfs - */ -export const createFsProxy = (memfs) => - new Proxy( - {}, - { - get(_target, p, _receiver) { - /** - * @param {any[]} args - */ - return function (...args) { - const sab = new SharedArrayBuffer(16 + 10240) - const i32arr = new Int32Array(sab) - Atomics.store(i32arr, 0, 21) - - postMessage({ - __fs__: { - sab: i32arr, - type: p, - payload: args, - }, - }) - - Atomics.wait(i32arr, 0, 21) - - const status = Atomics.load(i32arr, 0) - const type = Atomics.load(i32arr, 1) - const size = Atomics.load(i32arr, 2) - const content = new Uint8Array(sab, 16, size) - const value = decodeValue(memfs, content, type) - if (status === 1) { - throw value - } - return value - } - }, - }, - ) diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/package.json b/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/package.json deleted file mode 100644 index 10071da..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/package.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "name": "@napi-rs/wasm-runtime", - "version": "1.1.1", - "type": "module", - "description": "Runtime and polyfill for wasm targets", - "homepage": "https://napi.rs/", - "author": { - "name": "LongYinan", - "url": "https://github.com/Brooooooklyn" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/napi-rs/napi-rs.git", - "directory": "wasi-runtime" - }, - "license": "MIT", - "publishConfig": { - "registry": "https://registry.npmjs.org/", - "access": "public" - }, - "files": [ - "runtime.cjs", - "runtime.js", - "fs-proxy.js", - "dist/*.cjs", - "dist/*.js" - ], - "devDependencies": { - "@rollup/plugin-alias": "^6.0.0", - "@rollup/plugin-commonjs": "^29.0.0", - "@rollup/plugin-inject": "^5.0.5", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^16.0.3", - "@rollup/plugin-replace": "^6.0.3", - "buffer": "^6.0.3", - "events": "^3.3.0", - "memfs": "^4.50.0", - "node-inspect-extracted": "^3.2.2", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "readable-stream": "^4.7.0", - "rollup": "^4.53.1", - "rollup-plugin-polyfill-node": "^0.13.0", - "tslib": "^2.8.1" - }, - "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", - "@tybys/wasm-util": "^0.10.1" - }, - "scripts": { - "build": "rollup -c rollup.config.js", - "test": "node --test" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "exports": { - ".": { - "import": "./runtime.js", - "require": "./runtime.cjs" - }, - "./fs": { - "import": "./dist/fs.js" - } - } -} diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/runtime.cjs b/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/runtime.cjs deleted file mode 100644 index a22e62a..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/runtime.cjs +++ /dev/null @@ -1,15 +0,0 @@ -const { MessageHandler, instantiateNapiModuleSync, instantiateNapiModule } = require('@emnapi/core') -const { getDefaultContext } = require('@emnapi/runtime') -const { WASI } = require('@tybys/wasm-util') - -const { createFsProxy, createOnMessage } = require('./dist/fs-proxy.cjs') - -module.exports = { - MessageHandler, - instantiateNapiModule, - instantiateNapiModuleSync, - getDefaultContext, - WASI, - createFsProxy, - createOnMessage, -} diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/runtime.js b/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/runtime.js deleted file mode 100644 index abbe9e2..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-runtime/runtime.js +++ /dev/null @@ -1,8 +0,0 @@ -export { - instantiateNapiModuleSync, - instantiateNapiModule, - MessageHandler, -} from '@emnapi/core' -export { getDefaultContext } from '@emnapi/runtime' -export * from '@tybys/wasm-util' -export { createOnMessage, createFsProxy } from './fs-proxy.js' diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-tools-darwin-x64/README.md b/sdks/nodejs/node_modules/@napi-rs/wasm-tools-darwin-x64/README.md deleted file mode 100644 index 36a1804..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-tools-darwin-x64/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@napi-rs/wasm-tools-darwin-x64` - -This is the **x86_64-apple-darwin** binary for `@napi-rs/wasm-tools` diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-tools-darwin-x64/package.json b/sdks/nodejs/node_modules/@napi-rs/wasm-tools-darwin-x64/package.json deleted file mode 100644 index 37bfa2b..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-tools-darwin-x64/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "@napi-rs/wasm-tools-darwin-x64", - "version": "1.0.1", - "cpu": [ - "x64" - ], - "main": "walrus.darwin-x64.node", - "files": [ - "walrus.darwin-x64.node" - ], - "description": "https://github.com/rustwasm/walrus bindings", - "keywords": [ - "napi-rs", - "NAPI", - "N-API", - "Rust", - "node-addon", - "node-addon-api" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "repository": { - "url": "git+ssh://git@github.com/napi-rs/wasm-tools.git", - "type": "git" - }, - "publishConfig": { - "registry": "https://registry.npmjs.org/", - "access": "public" - }, - "os": [ - "darwin" - ] -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-tools-darwin-x64/walrus.darwin-x64.node b/sdks/nodejs/node_modules/@napi-rs/wasm-tools-darwin-x64/walrus.darwin-x64.node deleted file mode 100644 index 37c2ca3..0000000 Binary files a/sdks/nodejs/node_modules/@napi-rs/wasm-tools-darwin-x64/walrus.darwin-x64.node and /dev/null differ diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-tools/LICENSE b/sdks/nodejs/node_modules/@napi-rs/wasm-tools/LICENSE deleted file mode 100644 index 6c7f562..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-tools/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 N-API for Rust - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-tools/README.md b/sdks/nodejs/node_modules/@napi-rs/wasm-tools/README.md deleted file mode 100644 index 1a6a940..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-tools/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# `@napi-rs/wasm-tools` - -![https://github.com/napi-rs/wasm-tools/actions](https://github.com/napi-rs/wasm-tools/workflows/CI/badge.svg) - -> https://github.com/rustwasm/walrus bindings - -## Install this package - -``` -pnpm add @napi-rs/wasm-tools -D -yarn add @napi-rs/wasm-tools -D -``` - -## Usage - -```ts -// Generate dwarf info and emit wasm - -import { join } from 'node:path' -import { readFile, writeFile } from 'node:fs/promises' -import { fileURLToPath } from 'node:url' - -import { ModuleConfig } from '@napi-rs/wasm-tools' - -const __dirname = join(fileURLToPath(import.meta.url), '..') - -const wasm = await readFile(join(__dirname, 'panic.wasm32-wasi.wasm')) - -const binary = new ModuleConfig() - .generateDwarf(true) - .generateNameSection(true) - .generateProducersSection(true) - .preserveCodeTransform(true) - .parse(wasm) - .emitWasm(true) - -await writeFile(join(__dirname, 'panic.wasm32-wasi.wasm'), binary) -``` diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-tools/browser.js b/sdks/nodejs/node_modules/@napi-rs/wasm-tools/browser.js deleted file mode 100644 index ba8add4..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-tools/browser.js +++ /dev/null @@ -1 +0,0 @@ -export * from '@napi-rs/wasm-tools-wasm32-wasi' diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-tools/index.d.ts b/sdks/nodejs/node_modules/@napi-rs/wasm-tools/index.d.ts deleted file mode 100644 index eed9d00..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-tools/index.d.ts +++ /dev/null @@ -1,87 +0,0 @@ -/* auto-generated by NAPI-RS */ -/* eslint-disable */ -export declare class ModuleConfig { - constructor() - /** - * Sets a flag to whether DWARF debug sections are generated for this - * module. - * - * By default this flag is `false`. Note that any emitted DWARF is - * currently wildly incorrect and buggy, and is also larger than the wasm - * itself! - */ - generateDwarf(generateDwarf: boolean): this - /** - * Sets a flag to whether the custom "name" section is generated for this - * module. - * - * The "name" section contains symbol names for the module, functions, and - * locals. When enabled, stack traces will use these names, instead of - * `wasm-function[123]`. - * - * By default this flag is `true`. - */ - generateNameSection(generateNameSection: boolean): this - /** - * Sets a flag to whether synthetic debugging names are generated for - * anonymous locals/functions/etc when parsing and running passes for this - * module. - * - * By default this flag is `false`, and it will generate quite a few names - * if enabled! - */ - generateSyntheticNamesForAnonymousItems(generateSyntheticNamesForAnonymousItems: boolean): this - /** - * Indicates whether the module, after parsing, performs strict validation - * of the wasm module to adhere with the current version of the wasm - * specification. - * - * This can be expensive for some modules and strictly isn't required to - * create a `Module` from a wasm file. This includes checks such as "atomic - * instructions require a shared memory". - * - * By default this flag is `true` - */ - strictValidate(strictValidate: boolean): this - /** - * Indicates whether the module will have the "producers" custom section - * which preserves the original producers and also includes `walrus`. - * - * This is generally used for telemetry in browsers, but for otherwise tiny - * wasm binaries can add some size to the binary. - * - * By default this flag is `true` - */ - generateProducersSection(generateProducersSection: boolean): this - /** - * Indicates whether this module is allowed to use only stable WebAssembly - * features or not. - * - * This is currently used to disable some validity checks required by the - * WebAssembly specification. It's not religiously adhered to throughout - * the codebase, even if set to `true` some unstable features may still be - * allowed. - * - * By default this flag is `false` - */ - onlyStableFeatures(onlyStableFeatures: boolean): this - /** - * Sets a flag to whether code transform is preverved during parsing. - * - * By default this flag is `false`. - */ - preserveCodeTransform(preserve: boolean): this - parse(binary: Uint8Array): WasmModule -} - -export declare class WasmModule { - /** - * Construct a new module from the given path with the default - * configuration. - */ - static fromPath(path: string): WasmModule - /** Construct a new module from the given path and configuration. */ - static fromFileWithConfig(path: string, config: ModuleConfig): WasmModule - /** Emit this module into an in-memory wasm buffer. */ - emitWasm(demangle: boolean): Uint8Array -} diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-tools/index.js b/sdks/nodejs/node_modules/@napi-rs/wasm-tools/index.js deleted file mode 100644 index 1f1a687..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-tools/index.js +++ /dev/null @@ -1,512 +0,0 @@ -// prettier-ignore -/* eslint-disable */ -// @ts-nocheck -/* auto-generated by NAPI-RS */ - -const { createRequire } = require('node:module') -require = createRequire(__filename) - -const { readFileSync } = require('node:fs') -let nativeBinding = null -const loadErrors = [] - -const isMusl = () => { - let musl = false - if (process.platform === 'linux') { - musl = isMuslFromFilesystem() - if (musl === null) { - musl = isMuslFromReport() - } - if (musl === null) { - musl = isMuslFromChildProcess() - } - } - return musl -} - -const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-') - -const isMuslFromFilesystem = () => { - try { - return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl') - } catch { - return null - } -} - -const isMuslFromReport = () => { - let report = null - if (typeof process.report?.getReport === 'function') { - process.report.excludeNetwork = true - report = process.report.getReport() - } - if (!report) { - return null - } - if (report.header && report.header.glibcVersionRuntime) { - return false - } - if (Array.isArray(report.sharedObjects)) { - if (report.sharedObjects.some(isFileMusl)) { - return true - } - } - return false -} - -const isMuslFromChildProcess = () => { - try { - return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl') - } catch (e) { - // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false - return false - } -} - -function requireNative() { - if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) { - try { - nativeBinding = require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH); - } catch (err) { - loadErrors.push(err) - } - } else if (process.platform === 'android') { - if (process.arch === 'arm64') { - try { - return require('./walrus.android-arm64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-android-arm64') - const bindingPackageVersion = require('@napi-rs/wasm-tools-android-arm64/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm') { - try { - return require('./walrus.android-arm-eabi.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-android-arm-eabi') - const bindingPackageVersion = require('@napi-rs/wasm-tools-android-arm-eabi/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`)) - } - } else if (process.platform === 'win32') { - if (process.arch === 'x64') { - try { - return require('./walrus.win32-x64-msvc.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-win32-x64-msvc') - const bindingPackageVersion = require('@napi-rs/wasm-tools-win32-x64-msvc/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'ia32') { - try { - return require('./walrus.win32-ia32-msvc.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-win32-ia32-msvc') - const bindingPackageVersion = require('@napi-rs/wasm-tools-win32-ia32-msvc/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm64') { - try { - return require('./walrus.win32-arm64-msvc.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-win32-arm64-msvc') - const bindingPackageVersion = require('@napi-rs/wasm-tools-win32-arm64-msvc/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`)) - } - } else if (process.platform === 'darwin') { - try { - return require('./walrus.darwin-universal.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-darwin-universal') - const bindingPackageVersion = require('@napi-rs/wasm-tools-darwin-universal/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - if (process.arch === 'x64') { - try { - return require('./walrus.darwin-x64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-darwin-x64') - const bindingPackageVersion = require('@napi-rs/wasm-tools-darwin-x64/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm64') { - try { - return require('./walrus.darwin-arm64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-darwin-arm64') - const bindingPackageVersion = require('@napi-rs/wasm-tools-darwin-arm64/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`)) - } - } else if (process.platform === 'freebsd') { - if (process.arch === 'x64') { - try { - return require('./walrus.freebsd-x64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-freebsd-x64') - const bindingPackageVersion = require('@napi-rs/wasm-tools-freebsd-x64/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm64') { - try { - return require('./walrus.freebsd-arm64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-freebsd-arm64') - const bindingPackageVersion = require('@napi-rs/wasm-tools-freebsd-arm64/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`)) - } - } else if (process.platform === 'linux') { - if (process.arch === 'x64') { - if (isMusl()) { - try { - return require('./walrus.linux-x64-musl.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-linux-x64-musl') - const bindingPackageVersion = require('@napi-rs/wasm-tools-linux-x64-musl/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - try { - return require('./walrus.linux-x64-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-linux-x64-gnu') - const bindingPackageVersion = require('@napi-rs/wasm-tools-linux-x64-gnu/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } - } else if (process.arch === 'arm64') { - if (isMusl()) { - try { - return require('./walrus.linux-arm64-musl.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-linux-arm64-musl') - const bindingPackageVersion = require('@napi-rs/wasm-tools-linux-arm64-musl/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - try { - return require('./walrus.linux-arm64-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-linux-arm64-gnu') - const bindingPackageVersion = require('@napi-rs/wasm-tools-linux-arm64-gnu/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } - } else if (process.arch === 'arm') { - if (isMusl()) { - try { - return require('./walrus.linux-arm-musleabihf.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-linux-arm-musleabihf') - const bindingPackageVersion = require('@napi-rs/wasm-tools-linux-arm-musleabihf/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - try { - return require('./walrus.linux-arm-gnueabihf.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-linux-arm-gnueabihf') - const bindingPackageVersion = require('@napi-rs/wasm-tools-linux-arm-gnueabihf/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } - } else if (process.arch === 'riscv64') { - if (isMusl()) { - try { - return require('./walrus.linux-riscv64-musl.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-linux-riscv64-musl') - const bindingPackageVersion = require('@napi-rs/wasm-tools-linux-riscv64-musl/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - try { - return require('./walrus.linux-riscv64-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-linux-riscv64-gnu') - const bindingPackageVersion = require('@napi-rs/wasm-tools-linux-riscv64-gnu/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } - } else if (process.arch === 'ppc64') { - try { - return require('./walrus.linux-ppc64-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-linux-ppc64-gnu') - const bindingPackageVersion = require('@napi-rs/wasm-tools-linux-ppc64-gnu/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 's390x') { - try { - return require('./walrus.linux-s390x-gnu.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-linux-s390x-gnu') - const bindingPackageVersion = require('@napi-rs/wasm-tools-linux-s390x-gnu/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`)) - } - } else if (process.platform === 'openharmony') { - if (process.arch === 'arm64') { - try { - return require('./walrus.openharmony-arm64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-openharmony-arm64') - const bindingPackageVersion = require('@napi-rs/wasm-tools-openharmony-arm64/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'x64') { - try { - return require('./walrus.openharmony-x64.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-openharmony-x64') - const bindingPackageVersion = require('@napi-rs/wasm-tools-openharmony-x64/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else if (process.arch === 'arm') { - try { - return require('./walrus.openharmony-arm.node') - } catch (e) { - loadErrors.push(e) - } - try { - const binding = require('@napi-rs/wasm-tools-openharmony-arm') - const bindingPackageVersion = require('@napi-rs/wasm-tools-openharmony-arm/package.json').version - if (bindingPackageVersion !== '1.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { - throw new Error(`Native binding package version mismatch, expected 1.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) - } - return binding - } catch (e) { - loadErrors.push(e) - } - } else { - loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`)) - } - } else { - loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`)) - } -} - -nativeBinding = requireNative() - -if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) { - try { - nativeBinding = require('./walrus.wasi.cjs') - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - loadErrors.push(err) - } - } - if (!nativeBinding) { - try { - nativeBinding = require('@napi-rs/wasm-tools-wasm32-wasi') - } catch (err) { - if (process.env.NAPI_RS_FORCE_WASI) { - loadErrors.push(err) - } - } - } -} - -if (!nativeBinding) { - if (loadErrors.length > 0) { - throw new Error( - `Cannot find native binding. ` + - `npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` + - 'Please try `npm i` again after removing both package-lock.json and node_modules directory.', - { cause: loadErrors } - ) - } - throw new Error(`Failed to load native binding`) -} - -module.exports = nativeBinding -module.exports.ModuleConfig = nativeBinding.ModuleConfig -module.exports.WasmModule = nativeBinding.WasmModule diff --git a/sdks/nodejs/node_modules/@napi-rs/wasm-tools/package.json b/sdks/nodejs/node_modules/@napi-rs/wasm-tools/package.json deleted file mode 100644 index cb79de2..0000000 --- a/sdks/nodejs/node_modules/@napi-rs/wasm-tools/package.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "name": "@napi-rs/wasm-tools", - "version": "1.0.1", - "description": "https://github.com/rustwasm/walrus bindings", - "main": "index.js", - "types": "index.d.ts", - "browser": "browser.js", - "repository": { - "url": "git+ssh://git@github.com/napi-rs/wasm-tools.git", - "type": "git" - }, - "license": "MIT", - "keywords": [ - "napi-rs", - "NAPI", - "N-API", - "Rust", - "node-addon", - "node-addon-api" - ], - "files": [ - "index.d.ts", - "index.js", - "browser.js" - ], - "napi": { - "binaryName": "walrus", - "targets": [ - "x86_64-apple-darwin", - "aarch64-apple-darwin", - "x86_64-unknown-linux-gnu", - "x86_64-pc-windows-msvc", - "x86_64-unknown-linux-musl", - "aarch64-unknown-linux-gnu", - "i686-pc-windows-msvc", - "aarch64-linux-android", - "x86_64-unknown-freebsd", - "aarch64-unknown-linux-musl", - "aarch64-pc-windows-msvc", - "armv7-linux-androideabi", - "wasm32-wasi-preview1-threads" - ] - }, - "engines": { - "node": ">= 10" - }, - "publishConfig": { - "registry": "https://registry.npmjs.org/", - "access": "public" - }, - "scripts": { - "artifacts": "napi artifacts", - "build": "napi build --platform --release", - "build:debug": "napi build --platform", - "format": "run-p format:prettier format:rs format:toml", - "format:prettier": "prettier . -w", - "format:toml": "taplo format", - "format:rs": "cargo fmt", - "lint": "oxlint", - "prepublishOnly": "napi prepublish -t npm", - "test": "ava", - "version": "napi version" - }, - "devDependencies": { - "@emnapi/core": "^1.4.5", - "@emnapi/runtime": "^1.4.5", - "@napi-rs/cli": "^3.1.2", - "@napi-rs/wasm-runtime": "^1.0.3", - "@oxc-node/core": "^0.0.32", - "@taplo/cli": "^0.7.0", - "@tybys/wasm-util": "^0.10.0", - "@types/node": "^24.2.1", - "ava": "^6.4.1", - "chalk": "^5.5.0", - "emnapi": "^1.4.5", - "husky": "^9.1.7", - "lint-staged": "^16.1.5", - "npm-run-all2": "^8.0.4", - "oxlint": "^1.11.1", - "prettier": "^3.6.2", - "typescript": "^5.9.2" - }, - "lint-staged": { - "*.@(js|ts|tsx)": [ - "oxlint --fix" - ], - "*.@(js|ts|tsx|yml|yaml|md|json)": [ - "prettier --write" - ], - "*.toml": [ - "taplo format" - ] - }, - "ava": { - "require": [ - "@oxc-node/core/register" - ], - "extensions": { - "ts": "module" - }, - "timeout": "2m", - "workerThreads": false, - "environmentVariables": { - "TS_NODE_PROJECT": "./tsconfig.json" - } - }, - "prettier": { - "printWidth": 120, - "semi": false, - "trailingComma": "all", - "singleQuote": true, - "arrowParens": "always" - }, - "packageManager": "pnpm@10.14.0", - "optionalDependencies": { - "@napi-rs/wasm-tools-darwin-x64": "1.0.1", - "@napi-rs/wasm-tools-darwin-arm64": "1.0.1", - "@napi-rs/wasm-tools-linux-x64-gnu": "1.0.1", - "@napi-rs/wasm-tools-win32-x64-msvc": "1.0.1", - "@napi-rs/wasm-tools-linux-x64-musl": "1.0.1", - "@napi-rs/wasm-tools-linux-arm64-gnu": "1.0.1", - "@napi-rs/wasm-tools-win32-ia32-msvc": "1.0.1", - "@napi-rs/wasm-tools-android-arm64": "1.0.1", - "@napi-rs/wasm-tools-freebsd-x64": "1.0.1", - "@napi-rs/wasm-tools-linux-arm64-musl": "1.0.1", - "@napi-rs/wasm-tools-win32-arm64-msvc": "1.0.1", - "@napi-rs/wasm-tools-android-arm-eabi": "1.0.1", - "@napi-rs/wasm-tools-wasm32-wasi": "1.0.1" - } -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/LICENSE b/sdks/nodejs/node_modules/@octokit/auth-token/LICENSE deleted file mode 100644 index ef2c18e..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/README.md b/sdks/nodejs/node_modules/@octokit/auth-token/README.md deleted file mode 100644 index f94e2f2..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/README.md +++ /dev/null @@ -1,284 +0,0 @@ -# auth-token.js - -> GitHub API token authentication for browsers and Node.js - -[![@latest](https://img.shields.io/npm/v/@octokit/auth-token.svg)](https://www.npmjs.com/package/@octokit/auth-token) -[![Build Status](https://github.com/octokit/auth-token.js/workflows/Test/badge.svg)](https://github.com/octokit/auth-token.js/actions?query=workflow%3ATest) - -`@octokit/auth-token` is the simplest of [GitHub’s authentication strategies](https://github.com/octokit/auth.js). - -It is useful if you want to support multiple authentication strategies, as it’s API is compatible with its sibling packages for [basic](https://github.com/octokit/auth-basic.js), [GitHub App](https://github.com/octokit/auth-app.js) and [OAuth app](https://github.com/octokit/auth.js) authentication. - - - -- [Usage](#usage) -- [`createTokenAuth(token) options`](#createtokenauthtoken-options) -- [`auth()`](#auth) -- [Authentication object](#authentication-object) -- [`auth.hook(request, route, options)` or `auth.hook(request, options)`](#authhookrequest-route-options-or-authhookrequest-options) -- [Find more information](#find-more-information) - - [Find out what scopes are enabled for oauth tokens](#find-out-what-scopes-are-enabled-for-oauth-tokens) - - [Find out if token is a personal access token or if it belongs to an OAuth app](#find-out-if-token-is-a-personal-access-token-or-if-it-belongs-to-an-oauth-app) - - [Find out what permissions are enabled for a repository](#find-out-what-permissions-are-enabled-for-a-repository) - - [Use token for git operations](#use-token-for-git-operations) -- [License](#license) - - - -## Usage - - - - - - -
-Browsers - - -Load `@octokit/auth-token` directly from [esm.sh](https://esm.sh) - -```html - -``` - -
-Node - - -Install with npm install @octokit/auth-token - -```js -import { createTokenAuth } from "@octokit/auth-token"; -``` - -
- -```js -const auth = createTokenAuth("ghp_PersonalAccessToken01245678900000000"); -const authentication = await auth(); -// { -// type: 'token', -// token: 'ghp_PersonalAccessToken01245678900000000', -// tokenType: 'oauth' -// } -``` - -## `createTokenAuth(token) options` - -The `createTokenAuth` method accepts a single argument of type string, which is the token. The passed token can be one of the following: - -- [Personal access token](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line) -- [OAuth access token](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/) -- [GITHUB_TOKEN provided to GitHub Actions](https://developer.github.com/actions/creating-github-actions/accessing-the-runtime-environment/#environment-variables) -- Installation access token ([server-to-server](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation)) -- User authentication for installation ([user-to-server](https://docs.github.com/en/developers/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps)) - -Examples - -```js -// Personal access token or OAuth access token -createTokenAuth("ghp_PersonalAccessToken01245678900000000"); -// { -// type: 'token', -// token: 'ghp_PersonalAccessToken01245678900000000', -// tokenType: 'oauth' -// } - -// Installation access token or GitHub Action token -createTokenAuth("ghs_InstallallationOrActionToken00000000"); -// { -// type: 'token', -// token: 'ghs_InstallallationOrActionToken00000000', -// tokenType: 'installation' -// } - -// Installation access token or GitHub Action token -createTokenAuth("ghu_InstallationUserToServer000000000000"); -// { -// type: 'token', -// token: 'ghu_InstallationUserToServer000000000000', -// tokenType: 'user-to-server' -// } -``` - -## `auth()` - -The `auth()` method has no options. It returns a promise which resolves with the the authentication object. - -## Authentication object - - - - - - - - - - - - - - - - - - - - - - - - - - -
- name - - type - - description -
- type - - string - - "token" -
- token - - string - - The provided token. -
- tokenType - - string - - Can be either "oauth" for personal access tokens and OAuth tokens, "installation" for installation access tokens (includes GITHUB_TOKEN provided to GitHub Actions), "app" for a GitHub App JSON Web Token, or "user-to-server" for a user authentication token through an app installation. -
- -## `auth.hook(request, route, options)` or `auth.hook(request, options)` - -`auth.hook()` hooks directly into the request life cycle. It authenticates the request using the provided token. - -The `request` option is an instance of [`@octokit/request`](https://github.com/octokit/request.js#readme). The `route`/`options` parameters are the same as for the [`request()` method](https://github.com/octokit/request.js#request). - -`auth.hook()` can be called directly to send an authenticated request - -```js -const { data: authorizations } = await auth.hook( - request, - "GET /authorizations", -); -``` - -Or it can be passed as option to [`request()`](https://github.com/octokit/request.js#request). - -```js -const requestWithAuth = request.defaults({ - request: { - hook: auth.hook, - }, -}); - -const { data: authorizations } = await requestWithAuth("GET /authorizations"); -``` - -## Find more information - -`auth()` does not send any requests, it only transforms the provided token string into an authentication object. - -Here is a list of things you can do to retrieve further information - -### Find out what scopes are enabled for oauth tokens - -Note that this does not work for installations. There is no way to retrieve permissions based on an installation access tokens. - -```js -const TOKEN = "ghp_PersonalAccessToken01245678900000000"; - -const auth = createTokenAuth(TOKEN); -const authentication = await auth(); - -const response = await request("HEAD /"); -const scopes = response.headers["x-oauth-scopes"].split(/,\s+/); - -if (scopes.length) { - console.log( - `"${TOKEN}" has ${scopes.length} scopes enabled: ${scopes.join(", ")}`, - ); -} else { - console.log(`"${TOKEN}" has no scopes enabled`); -} -``` - -### Find out if token is a personal access token or if it belongs to an OAuth app - -```js -const TOKEN = "ghp_PersonalAccessToken01245678900000000"; - -const auth = createTokenAuth(TOKEN); -const authentication = await auth(); - -const response = await request("HEAD /"); -const clientId = response.headers["x-oauth-client-id"]; - -if (clientId) { - console.log( - `"${token}" is an OAuth token, its app’s client_id is ${clientId}.`, - ); -} else { - console.log(`"${token}" is a personal access token`); -} -``` - -### Find out what permissions are enabled for a repository - -Note that the `permissions` key is not set when authenticated using an installation access token. - -```js -const TOKEN = "ghp_PersonalAccessToken01245678900000000"; - -const auth = createTokenAuth(TOKEN); -const authentication = await auth(); - -const response = await request("GET /repos/{owner}/{repo}", { - owner: "octocat", - repo: "hello-world", -}); - -console.log(response.data.permissions); -// { -// admin: true, -// push: true, -// pull: true -// } -``` - -### Use token for git operations - -Both OAuth and installation access tokens can be used for git operations. However, when using with an installation, [the token must be prefixed with `x-access-token`](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#http-based-git-access-by-an-installation). - -This example is using the [`execa`](https://github.com/sindresorhus/execa) package to run a `git push` command. - -```js -const TOKEN = "ghp_PersonalAccessToken01245678900000000"; - -const auth = createTokenAuth(TOKEN); -const { token, tokenType } = await auth(); -const tokenWithPrefix = - tokenType === "installation" ? `x-access-token:${token}` : token; - -const repositoryUrl = `https://${tokenWithPrefix}@github.com/octocat/hello-world.git`; - -const { stdout } = await execa("git", ["push", repositoryUrl]); -console.log(stdout); -``` - -## License - -[MIT](LICENSE) diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/dist-bundle/index.js b/sdks/nodejs/node_modules/@octokit/auth-token/dist-bundle/index.js deleted file mode 100644 index 4d68bcf..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/dist-bundle/index.js +++ /dev/null @@ -1,55 +0,0 @@ -// pkg/dist-src/is-jwt.js -var b64url = "(?:[a-zA-Z0-9_-]+)"; -var sep = "\\."; -var jwtRE = new RegExp(`^${b64url}${sep}${b64url}${sep}${b64url}$`); -var isJWT = jwtRE.test.bind(jwtRE); - -// pkg/dist-src/auth.js -async function auth(token) { - const isApp = isJWT(token); - const isInstallation = token.startsWith("v1.") || token.startsWith("ghs_"); - const isUserToServer = token.startsWith("ghu_"); - const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; - return { - type: "token", - token, - tokenType - }; -} - -// pkg/dist-src/with-authorization-prefix.js -function withAuthorizationPrefix(token) { - if (token.split(/\./).length === 3) { - return `bearer ${token}`; - } - return `token ${token}`; -} - -// pkg/dist-src/hook.js -async function hook(token, request, route, parameters) { - const endpoint = request.endpoint.merge( - route, - parameters - ); - endpoint.headers.authorization = withAuthorizationPrefix(token); - return request(endpoint); -} - -// pkg/dist-src/index.js -var createTokenAuth = function createTokenAuth2(token) { - if (!token) { - throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); - } - if (typeof token !== "string") { - throw new Error( - "[@octokit/auth-token] Token passed to createTokenAuth is not a string" - ); - } - token = token.replace(/^(token|bearer) +/i, ""); - return Object.assign(auth.bind(null, token), { - hook: hook.bind(null, token) - }); -}; -export { - createTokenAuth -}; diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/dist-bundle/index.js.map b/sdks/nodejs/node_modules/@octokit/auth-token/dist-bundle/index.js.map deleted file mode 100644 index 57157db..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/dist-bundle/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../dist-src/is-jwt.js", "../dist-src/auth.js", "../dist-src/with-authorization-prefix.js", "../dist-src/hook.js", "../dist-src/index.js"], - "sourcesContent": ["const b64url = \"(?:[a-zA-Z0-9_-]+)\";\nconst sep = \"\\\\.\";\nconst jwtRE = new RegExp(`^${b64url}${sep}${b64url}${sep}${b64url}$`);\nconst isJWT = jwtRE.test.bind(jwtRE);\nexport {\n isJWT\n};\n", "import { isJWT } from \"./is-jwt.js\";\nasync function auth(token) {\n const isApp = isJWT(token);\n const isInstallation = token.startsWith(\"v1.\") || token.startsWith(\"ghs_\");\n const isUserToServer = token.startsWith(\"ghu_\");\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token,\n tokenType\n };\n}\nexport {\n auth\n};\n", "function withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\nexport {\n withAuthorizationPrefix\n};\n", "import { withAuthorizationPrefix } from \"./with-authorization-prefix.js\";\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(\n route,\n parameters\n );\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\nexport {\n hook\n};\n", "import { auth } from \"./auth.js\";\nimport { hook } from \"./hook.js\";\nconst createTokenAuth = function createTokenAuth2(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\n \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n );\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\nexport {\n createTokenAuth\n};\n"], - "mappings": ";AAAA,IAAM,SAAS;AACf,IAAM,MAAM;AACZ,IAAM,QAAQ,IAAI,OAAO,IAAI,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG;AACpE,IAAM,QAAQ,MAAM,KAAK,KAAK,KAAK;;;ACFnC,eAAe,KAAK,OAAO;AACzB,QAAM,QAAQ,MAAM,KAAK;AACzB,QAAM,iBAAiB,MAAM,WAAW,KAAK,KAAK,MAAM,WAAW,MAAM;AACzE,QAAM,iBAAiB,MAAM,WAAW,MAAM;AAC9C,QAAM,YAAY,QAAQ,QAAQ,iBAAiB,iBAAiB,iBAAiB,mBAAmB;AACxG,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF;AACF;;;ACXA,SAAS,wBAAwB,OAAO;AACtC,MAAI,MAAM,MAAM,IAAI,EAAE,WAAW,GAAG;AAClC,WAAO,UAAU,KAAK;AAAA,EACxB;AACA,SAAO,SAAS,KAAK;AACvB;;;ACJA,eAAe,KAAK,OAAO,SAAS,OAAO,YAAY;AACrD,QAAM,WAAW,QAAQ,SAAS;AAAA,IAChC;AAAA,IACA;AAAA,EACF;AACA,WAAS,QAAQ,gBAAgB,wBAAwB,KAAK;AAC9D,SAAO,QAAQ,QAAQ;AACzB;;;ACNA,IAAM,kBAAkB,SAAS,iBAAiB,OAAO;AACvD,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,0DAA0D;AAAA,EAC5E;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,UAAQ,MAAM,QAAQ,sBAAsB,EAAE;AAC9C,SAAO,OAAO,OAAO,KAAK,KAAK,MAAM,KAAK,GAAG;AAAA,IAC3C,MAAM,KAAK,KAAK,MAAM,KAAK;AAAA,EAC7B,CAAC;AACH;", - "names": [] -} diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/auth.js b/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/auth.js deleted file mode 100644 index 587f523..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/auth.js +++ /dev/null @@ -1,15 +0,0 @@ -import { isJWT } from "./is-jwt.js"; -async function auth(token) { - const isApp = isJWT(token); - const isInstallation = token.startsWith("v1.") || token.startsWith("ghs_"); - const isUserToServer = token.startsWith("ghu_"); - const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; - return { - type: "token", - token, - tokenType - }; -} -export { - auth -}; diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/hook.js b/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/hook.js deleted file mode 100644 index be336ad..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/hook.js +++ /dev/null @@ -1,12 +0,0 @@ -import { withAuthorizationPrefix } from "./with-authorization-prefix.js"; -async function hook(token, request, route, parameters) { - const endpoint = request.endpoint.merge( - route, - parameters - ); - endpoint.headers.authorization = withAuthorizationPrefix(token); - return request(endpoint); -} -export { - hook -}; diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/index.js b/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/index.js deleted file mode 100644 index a68cea6..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/index.js +++ /dev/null @@ -1,19 +0,0 @@ -import { auth } from "./auth.js"; -import { hook } from "./hook.js"; -const createTokenAuth = function createTokenAuth2(token) { - if (!token) { - throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); - } - if (typeof token !== "string") { - throw new Error( - "[@octokit/auth-token] Token passed to createTokenAuth is not a string" - ); - } - token = token.replace(/^(token|bearer) +/i, ""); - return Object.assign(auth.bind(null, token), { - hook: hook.bind(null, token) - }); -}; -export { - createTokenAuth -}; diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/is-jwt.js b/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/is-jwt.js deleted file mode 100644 index 833dad7..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/is-jwt.js +++ /dev/null @@ -1,7 +0,0 @@ -const b64url = "(?:[a-zA-Z0-9_-]+)"; -const sep = "\\."; -const jwtRE = new RegExp(`^${b64url}${sep}${b64url}${sep}${b64url}$`); -const isJWT = jwtRE.test.bind(jwtRE); -export { - isJWT -}; diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js b/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js deleted file mode 100644 index 02a4bb5..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js +++ /dev/null @@ -1,9 +0,0 @@ -function withAuthorizationPrefix(token) { - if (token.split(/\./).length === 3) { - return `bearer ${token}`; - } - return `token ${token}`; -} -export { - withAuthorizationPrefix -}; diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/auth.d.ts b/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/auth.d.ts deleted file mode 100644 index 6398528..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/auth.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import type { Token, Authentication } from "./types.js"; -export declare function auth(token: Token): Promise; diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/hook.d.ts b/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/hook.d.ts deleted file mode 100644 index cf96965..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/hook.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import type { AnyResponse, EndpointOptions, RequestInterface, RequestParameters, Route, Token } from "./types.js"; -export declare function hook(token: Token, request: RequestInterface, route: Route | EndpointOptions, parameters?: RequestParameters): Promise; diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/index.d.ts b/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/index.d.ts deleted file mode 100644 index 9f8a318..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { StrategyInterface, Token, Authentication } from "./types.js"; -export type Types = { - StrategyOptions: Token; - AuthOptions: never; - Authentication: Authentication; -}; -export declare const createTokenAuth: StrategyInterface; diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/is-jwt.d.ts b/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/is-jwt.d.ts deleted file mode 100644 index 3d3ff81..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/is-jwt.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const isJWT: (string: string) => boolean; diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/types.d.ts b/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/types.d.ts deleted file mode 100644 index c3e1ae0..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/types.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type * as OctokitTypes from "@octokit/types"; -export type AnyResponse = OctokitTypes.OctokitResponse; -export type StrategyInterface = OctokitTypes.StrategyInterface<[ - Token -], [ -], Authentication>; -export type EndpointDefaults = OctokitTypes.EndpointDefaults; -export type EndpointOptions = OctokitTypes.EndpointOptions; -export type RequestParameters = OctokitTypes.RequestParameters; -export type RequestInterface = OctokitTypes.RequestInterface; -export type Route = OctokitTypes.Route; -export type Token = string; -export type OAuthTokenAuthentication = { - type: "token"; - tokenType: "oauth"; - token: Token; -}; -export type InstallationTokenAuthentication = { - type: "token"; - tokenType: "installation"; - token: Token; -}; -export type AppAuthentication = { - type: "token"; - tokenType: "app"; - token: Token; -}; -export type UserToServerAuthentication = { - type: "token"; - tokenType: "user-to-server"; - token: Token; -}; -export type Authentication = OAuthTokenAuthentication | InstallationTokenAuthentication | AppAuthentication | UserToServerAuthentication; diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts b/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts deleted file mode 100644 index 2e52c31..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Prefix token for usage in the Authorization header - * - * @param token OAuth token or JSON Web Token - */ -export declare function withAuthorizationPrefix(token: string): string; diff --git a/sdks/nodejs/node_modules/@octokit/auth-token/package.json b/sdks/nodejs/node_modules/@octokit/auth-token/package.json deleted file mode 100644 index 075fe07..0000000 --- a/sdks/nodejs/node_modules/@octokit/auth-token/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "@octokit/auth-token", - "publishConfig": { - "access": "public", - "provenance": true - }, - "type": "module", - "version": "6.0.0", - "description": "GitHub API token authentication for browsers and Node.js", - "repository": "github:octokit/auth-token.js", - "keywords": [ - "github", - "octokit", - "authentication", - "api" - ], - "author": "Gregor Martynus (https://github.com/gr2m)", - "license": "MIT", - "devDependencies": { - "@octokit/request": "^9.0.0", - "@octokit/tsconfig": "^4.0.0", - "@octokit/types": "^14.0.0", - "@vitest/coverage-v8": "^3.0.0", - "esbuild": "^0.25.0", - "fetch-mock": "^12.0.0", - "glob": "^11.0.0", - "prettier": "3.5.3", - "typescript": "^5.3.0", - "vitest": "^3.0.0" - }, - "engines": { - "node": ">= 20" - }, - "files": [ - "dist-*/**", - "bin/**" - ], - "types": "./dist-types/index.d.ts", - "exports": { - ".": { - "types": "./dist-types/index.d.ts", - "import": "./dist-bundle/index.js", - "default": "./dist-bundle/index.js" - }, - "./types": { - "types": "./dist-types/index.d.ts" - } - }, - "sideEffects": false -} diff --git a/sdks/nodejs/node_modules/@octokit/core/LICENSE b/sdks/nodejs/node_modules/@octokit/core/LICENSE deleted file mode 100644 index ef2c18e..0000000 --- a/sdks/nodejs/node_modules/@octokit/core/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@octokit/core/README.md b/sdks/nodejs/node_modules/@octokit/core/README.md deleted file mode 100644 index ed4c070..0000000 --- a/sdks/nodejs/node_modules/@octokit/core/README.md +++ /dev/null @@ -1,457 +0,0 @@ -# core.js - -> Extendable client for GitHub's REST & GraphQL APIs - -[![@latest](https://img.shields.io/npm/v/@octokit/core.svg)](https://www.npmjs.com/package/@octokit/core) -[![Build Status](https://github.com/octokit/core.js/workflows/Test/badge.svg)](https://github.com/octokit/core.js/actions?query=workflow%3ATest+branch%3Amain) - - - -- [Usage](#usage) - - [REST API example](#rest-api-example) - - [GraphQL example](#graphql-example) -- [Options](#options) -- [Defaults](#defaults) -- [Authentication](#authentication) -- [Logging](#logging) -- [Hooks](#hooks) -- [Plugins](#plugins) -- [Build your own Octokit with Plugins and Defaults](#build-your-own-octokit-with-plugins-and-defaults) -- [LICENSE](#license) - - - -If you need a minimalistic library to utilize GitHub's [REST API](https://developer.github.com/v3/) and [GraphQL API](https://developer.github.com/v4/) which you can extend with plugins as needed, then `@octokit/core` is a great starting point. - -If you don't need the Plugin API then using [`@octokit/request`](https://github.com/octokit/request.js/) or [`@octokit/graphql`](https://github.com/octokit/graphql.js/) directly is a good alternative. - -## Usage - - - - - - -
-Browsers - -Load @octokit/core directly from esm.sh - -```html - -``` - -
-Node - - -Install with npm install @octokit/core - -```js -import { Octokit } from "@octokit/core"; -``` - -
- -As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json`. See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports). - -### REST API example - -```js -// Create a personal access token at https://github.com/settings/tokens/new?scopes=repo -const octokit = new Octokit({ auth: `personal-access-token123` }); - -const response = await octokit.request("GET /orgs/{org}/repos", { - org: "octokit", - type: "private", -}); -``` - -See [`@octokit/request`](https://github.com/octokit/request.js) for full documentation of the `.request` method. - -### GraphQL example - -```js -const octokit = new Octokit({ auth: `secret123` }); - -const response = await octokit.graphql( - `query ($login: String!) { - organization(login: $login) { - repositories(privacy: PRIVATE) { - totalCount - } - } - }`, - { login: "octokit" }, -); -``` - -See [`@octokit/graphql`](https://github.com/octokit/graphql.js) for full documentation of the `.graphql` method. - -## Options - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- name - - type - - description -
- options.authStrategy - - Function - - Defaults to @octokit/auth-token. See Authentication below for examples. -
- options.auth - - String or Object - - See Authentication below for examples. -
- options.baseUrl - - String - - -When using with GitHub Enterprise Server, set `options.baseUrl` to the root URL of the API. For example, if your GitHub Enterprise Server's hostname is `github.acme-inc.com`, then set `options.baseUrl` to `https://github.acme-inc.com/api/v3`. Example - -```js -const octokit = new Octokit({ - baseUrl: "https://github.acme-inc.com/api/v3", -}); -``` - -
- options.previews - - Array of Strings - - -Some REST API endpoints require preview headers to be set, or enable -additional features. Preview headers can be set on a per-request basis, e.g. - -```js -octokit.request("POST /repos/{owner}/{repo}/pulls", { - mediaType: { - previews: ["shadow-cat"], - }, - owner, - repo, - title: "My pull request", - base: "main", - head: "my-feature", - draft: true, -}); -``` - -You can also set previews globally, by setting the `options.previews` option on the constructor. Example: - -```js -const octokit = new Octokit({ - previews: ["shadow-cat"], -}); -``` - -
- options.request - - Object - - -Set a default request timeout (`options.request.timeout`) or an [`http(s).Agent`](https://nodejs.org/api/http.html#http_class_http_agent) e.g. for proxy usage (Node only, `options.request.agent`). - -There are more `options.request.*` options, see [`@octokit/request` options](https://github.com/octokit/request.js#request). `options.request` can also be set on a per-request basis. - -
- options.timeZone - - String - - -Sets the `Time-Zone` header which defines a timezone according to the [list of names from the Olson database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). - -```js -const octokit = new Octokit({ - timeZone: "America/Los_Angeles", -}); -``` - -The time zone header will determine the timezone used for generating the timestamp when creating commits. See [GitHub's Timezones documentation](https://developer.github.com/v3/#timezones). - -
- options.userAgent - - String - - -A custom user agent string for your app or library. Example - -```js -const octokit = new Octokit({ - userAgent: "my-app/v1.2.3", -}); -``` - -
- -## Defaults - -You can create a new Octokit class with customized default options. - -```js -const MyOctokit = Octokit.defaults({ - auth: "personal-access-token123", - baseUrl: "https://github.acme-inc.com/api/v3", - userAgent: "my-app/v1.2.3", -}); -const octokit1 = new MyOctokit(); -const octokit2 = new MyOctokit(); -``` - -If you pass additional options to your new constructor, the options will be merged shallowly. - -```js -const MyOctokit = Octokit.defaults({ - foo: { - opt1: 1, - }, -}); -const octokit = new MyOctokit({ - foo: { - opt2: 1, - }, -}); -// options will be { foo: { opt2: 1 }} -``` - -If you need a deep or conditional merge, you can pass a function instead. - -```js -const MyOctokit = Octokit.defaults((options) => { - return { - foo: Object.assign({}, options.foo, { opt1: 1 }), - }; -}); -const octokit = new MyOctokit({ - foo: { opt2: 1 }, -}); -// options will be { foo: { opt1: 1, opt2: 1 }} -``` - -Be careful about mutating the `options` object in the `Octokit.defaults` callback, as it can have unforeseen consequences. - -## Authentication - -Authentication is optional for some REST API endpoints accessing public data, but is required for GraphQL queries. Using authentication also increases your [API rate limit](https://developer.github.com/v3/#rate-limiting). - -By default, Octokit authenticates using the [token authentication strategy](https://github.com/octokit/auth-token.js). Pass in a token using `options.auth`. It can be a personal access token, an OAuth token, an installation access token or a JSON Web Token for GitHub App authentication. The `Authorization` header will be set according to the type of token. - -```js -import { Octokit } from "@octokit/core"; - -const octokit = new Octokit({ - auth: "mypersonalaccesstoken123", -}); - -const { data } = await octokit.request("/user"); -``` - -To use a different authentication strategy, set `options.authStrategy`. A list of authentication strategies is available at [octokit/authentication-strategies.js](https://github.com/octokit/authentication-strategies.js/#readme). - -Example - -```js -import { Octokit } from "@octokit/core"; -import { createAppAuth } from "@octokit/auth-app"; - -const appOctokit = new Octokit({ - authStrategy: createAppAuth, - auth: { - appId: 123, - privateKey: process.env.PRIVATE_KEY, - }, -}); - -const { data } = await appOctokit.request("/app"); -``` - -The `.auth()` method returned by the current authentication strategy can be accessed at `octokit.auth()`. Example - -```js -const { token } = await appOctokit.auth({ - type: "installation", - installationId: 123, -}); -``` - -## Logging - -There are four built-in log methods - -1. `octokit.log.debug(message[, additionalInfo])` -1. `octokit.log.info(message[, additionalInfo])` -1. `octokit.log.warn(message[, additionalInfo])` -1. `octokit.log.error(message[, additionalInfo])` - -They can be configured using the [`log` client option](client-options). By default, `octokit.log.debug()` and `octokit.log.info()` are no-ops, while the other two call `console.warn()` and `console.error()` respectively. - -This is useful if you build reusable [plugins](#plugins). - -If you would like to make the log level configurable using an environment variable or external option, we recommend the [console-log-level](https://github.com/watson/console-log-level) package. Example - -```js -import consoleLogLevel from "console-log-level"; -const octokit = new Octokit({ - log: consoleLogLevel({ level: "info" }), -}); -``` - -## Hooks - -You can customize Octokit's request lifecycle with hooks. - -```js -octokit.hook.before("request", async (options) => { - validate(options); -}); -octokit.hook.after("request", async (response, options) => { - console.log(`${options.method} ${options.url}: ${response.status}`); -}); -octokit.hook.error("request", async (error, options) => { - if (error.status === 304) { - return findInCache(error.response.headers.etag); - } - - throw error; -}); -octokit.hook.wrap("request", async (request, options) => { - // add logic before, after, catch errors or replace the request altogether - return request(options); -}); -``` - -See [before-after-hook](https://github.com/gr2m/before-after-hook#readme) for more documentation on hooks. - -## Plugins - -Octokit’s functionality can be extended using plugins. The `Octokit.plugin()` method accepts a plugin (or many) and returns a new constructor. - -A plugin is a function which gets two arguments: - -1. the current instance -2. the options passed to the constructor. - -In order to extend `octokit`'s API, the plugin must return an object with the new methods. Please refrain from adding methods directly to the `octokit` instance, especialy if you depend on keys that do not exist in `@octokit/core`, such as `octokit.rest`. - -```js -// index.js -import { Octokit } from "@octokit/core"; -import myPlugin from "./lib/my-plugin.js"; -import octokitPluginExample from "octokit-plugin-example"; -const MyOctokit = Octokit.plugin( - myPlugin, - octokitPluginExample -); - -const octokit = new MyOctokit({ greeting: "Moin moin" }); -octokit.helloWorld(); // logs "Moin moin, world!" -octokit.request("GET /"); // logs "GET / - 200 in 123ms" - -// lib/my-plugin.js -const plugin = (octokit, options = { greeting: "Hello" }) => { - // hook into the request lifecycle - octokit.hook.wrap("request", async (request, options) => { - const time = Date.now(); - const response = await request(options); - console.log( - `${options.method} ${options.url} – ${response.status} in ${Date.now() - - time}ms` - ); - return response; - }); - - // add a custom method - return { - helloWorld: () => console.log(`${options.greeting}, world!`); - } -}; -export default plugin; -``` - -## Build your own Octokit with Plugins and Defaults - -You can build your own Octokit class with preset default options and plugins. In fact, this is mostly how the `@octokit/` modules work, such as [`@octokit/action`](https://github.com/octokit/action.js): - -```js -import { Octokit } from "@octokit/core"; -import { paginateRest } from "@octokit/plugin-paginate-rest"; -import { throttling } from "@octokit/plugin-throttling"; -import { retry } from "@octokit/plugin-retry"; -import { createActionAuth } from "@octokit/auth-action"; -const MyActionOctokit = Octokit.plugin( - paginateRest, - throttling, - retry, -).defaults({ - throttle: { - onAbuseLimit: (retryAfter, options) => { - /* ... */ - }, - onRateLimit: (retryAfter, options) => { - /* ... */ - }, - }, - authStrategy: createActionAuth, - userAgent: `my-octokit-action/v1.2.3`, -}); - -const octokit = new MyActionOctokit(); -const installations = await octokit.paginate("GET /app/installations"); -``` - -## LICENSE - -[MIT](LICENSE) diff --git a/sdks/nodejs/node_modules/@octokit/core/dist-src/index.js b/sdks/nodejs/node_modules/@octokit/core/dist-src/index.js deleted file mode 100644 index 1a72f10..0000000 --- a/sdks/nodejs/node_modules/@octokit/core/dist-src/index.js +++ /dev/null @@ -1,141 +0,0 @@ -import { getUserAgent } from "universal-user-agent"; -import Hook from "before-after-hook"; -import { request } from "@octokit/request"; -import { withCustomRequest } from "@octokit/graphql"; -import { createTokenAuth } from "@octokit/auth-token"; -import { VERSION } from "./version.js"; -const noop = () => { -}; -const consoleWarn = console.warn.bind(console); -const consoleError = console.error.bind(console); -function createLogger(logger = {}) { - if (typeof logger.debug !== "function") { - logger.debug = noop; - } - if (typeof logger.info !== "function") { - logger.info = noop; - } - if (typeof logger.warn !== "function") { - logger.warn = consoleWarn; - } - if (typeof logger.error !== "function") { - logger.error = consoleError; - } - return logger; -} -const userAgentTrail = `octokit-core.js/${VERSION} ${getUserAgent()}`; -class Octokit { - static VERSION = VERSION; - static defaults(defaults) { - const OctokitWithDefaults = class extends this { - constructor(...args) { - const options = args[0] || {}; - if (typeof defaults === "function") { - super(defaults(options)); - return; - } - super( - Object.assign( - {}, - defaults, - options, - options.userAgent && defaults.userAgent ? { - userAgent: `${options.userAgent} ${defaults.userAgent}` - } : null - ) - ); - } - }; - return OctokitWithDefaults; - } - static plugins = []; - /** - * Attach a plugin (or many) to your Octokit instance. - * - * @example - * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) - */ - static plugin(...newPlugins) { - const currentPlugins = this.plugins; - const NewOctokit = class extends this { - static plugins = currentPlugins.concat( - newPlugins.filter((plugin) => !currentPlugins.includes(plugin)) - ); - }; - return NewOctokit; - } - constructor(options = {}) { - const hook = new Hook.Collection(); - const requestDefaults = { - baseUrl: request.endpoint.DEFAULTS.baseUrl, - headers: {}, - request: Object.assign({}, options.request, { - // @ts-ignore internal usage only, no need to type - hook: hook.bind(null, "request") - }), - mediaType: { - previews: [], - format: "" - } - }; - requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail; - if (options.baseUrl) { - requestDefaults.baseUrl = options.baseUrl; - } - if (options.previews) { - requestDefaults.mediaType.previews = options.previews; - } - if (options.timeZone) { - requestDefaults.headers["time-zone"] = options.timeZone; - } - this.request = request.defaults(requestDefaults); - this.graphql = withCustomRequest(this.request).defaults(requestDefaults); - this.log = createLogger(options.log); - this.hook = hook; - if (!options.authStrategy) { - if (!options.auth) { - this.auth = async () => ({ - type: "unauthenticated" - }); - } else { - const auth = createTokenAuth(options.auth); - hook.wrap("request", auth.hook); - this.auth = auth; - } - } else { - const { authStrategy, ...otherOptions } = options; - const auth = authStrategy( - Object.assign( - { - request: this.request, - log: this.log, - // we pass the current octokit instance as well as its constructor options - // to allow for authentication strategies that return a new octokit instance - // that shares the same internal state as the current one. The original - // requirement for this was the "event-octokit" authentication strategy - // of https://github.com/probot/octokit-auth-probot. - octokit: this, - octokitOptions: otherOptions - }, - options.auth - ) - ); - hook.wrap("request", auth.hook); - this.auth = auth; - } - const classConstructor = this.constructor; - for (let i = 0; i < classConstructor.plugins.length; ++i) { - Object.assign(this, classConstructor.plugins[i](this, options)); - } - } - // assigned during constructor - request; - graphql; - log; - hook; - // TODO: type `octokit.auth` based on passed options.authStrategy - auth; -} -export { - Octokit -}; diff --git a/sdks/nodejs/node_modules/@octokit/core/dist-src/version.js b/sdks/nodejs/node_modules/@octokit/core/dist-src/version.js deleted file mode 100644 index e711fc1..0000000 --- a/sdks/nodejs/node_modules/@octokit/core/dist-src/version.js +++ /dev/null @@ -1,4 +0,0 @@ -const VERSION = "7.0.6"; -export { - VERSION -}; diff --git a/sdks/nodejs/node_modules/@octokit/core/dist-types/index.d.ts b/sdks/nodejs/node_modules/@octokit/core/dist-types/index.d.ts deleted file mode 100644 index 8275033..0000000 --- a/sdks/nodejs/node_modules/@octokit/core/dist-types/index.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { HookCollection } from "before-after-hook"; -import { request } from "@octokit/request"; -import { type graphql } from "@octokit/graphql"; -import type { Constructor, Hooks, OctokitOptions, OctokitPlugin, ReturnTypeOf, UnionToIntersection } from "./types.js"; -export type { OctokitOptions } from "./types.js"; -export declare class Octokit { - static VERSION: string; - static defaults>(this: S, defaults: OctokitOptions | Function): typeof this; - static plugins: OctokitPlugin[]; - /** - * Attach a plugin (or many) to your Octokit instance. - * - * @example - * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) - */ - static plugin & { - plugins: any[]; - }, T extends OctokitPlugin[]>(this: S, ...newPlugins: T): typeof this & Constructor>>; - constructor(options?: OctokitOptions); - request: typeof request; - graphql: typeof graphql; - log: { - debug: (message: string, additionalInfo?: object) => any; - info: (message: string, additionalInfo?: object) => any; - warn: (message: string, additionalInfo?: object) => any; - error: (message: string, additionalInfo?: object) => any; - [key: string]: any; - }; - hook: HookCollection; - auth: (...args: unknown[]) => Promise; -} diff --git a/sdks/nodejs/node_modules/@octokit/core/dist-types/types.d.ts b/sdks/nodejs/node_modules/@octokit/core/dist-types/types.d.ts deleted file mode 100644 index eae600a..0000000 --- a/sdks/nodejs/node_modules/@octokit/core/dist-types/types.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type * as OctokitTypes from "@octokit/types"; -import type { RequestError } from "@octokit/request-error"; -import type { Octokit } from "./index.js"; -export type RequestParameters = OctokitTypes.RequestParameters; -export interface OctokitOptions { - authStrategy?: any; - auth?: any; - userAgent?: string; - previews?: string[]; - baseUrl?: string; - log?: { - debug: (message: string) => unknown; - info: (message: string) => unknown; - warn: (message: string) => unknown; - error: (message: string) => unknown; - }; - request?: OctokitTypes.RequestRequestOptions; - timeZone?: string; - [option: string]: any; -} -export type Constructor = new (...args: any[]) => T; -export type ReturnTypeOf = T extends AnyFunction ? ReturnType : T extends AnyFunction[] ? UnionToIntersection, void>> : never; -/** - * @author https://stackoverflow.com/users/2887218/jcalz - * @see https://stackoverflow.com/a/50375286/10325032 - */ -export type UnionToIntersection = (Union extends any ? (argument: Union) => void : never) extends (argument: infer Intersection) => void ? Intersection : never; -type AnyFunction = (...args: any) => any; -export type OctokitPlugin = (octokit: Octokit, options: OctokitOptions) => { - [key: string]: any; -} | void; -export type Hooks = { - request: { - Options: Required; - Result: OctokitTypes.OctokitResponse; - Error: RequestError | Error; - }; - [key: string]: { - Options: unknown; - Result: unknown; - Error: unknown; - }; -}; -export type StrictOmit = { - [P in keyof T as P extends K ? never : P]: T[P]; -} & { - [parameter: string]: unknown; -}; -export {}; diff --git a/sdks/nodejs/node_modules/@octokit/core/dist-types/version.d.ts b/sdks/nodejs/node_modules/@octokit/core/dist-types/version.d.ts deleted file mode 100644 index 12819c5..0000000 --- a/sdks/nodejs/node_modules/@octokit/core/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "7.0.6"; diff --git a/sdks/nodejs/node_modules/@octokit/core/package.json b/sdks/nodejs/node_modules/@octokit/core/package.json deleted file mode 100644 index c60a874..0000000 --- a/sdks/nodejs/node_modules/@octokit/core/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "@octokit/core", - "version": "7.0.6", - "publishConfig": { - "access": "public", - "provenance": true - }, - "type": "module", - "description": "Extendable client for GitHub's REST & GraphQL APIs", - "repository": "github:octokit/core.js", - "keywords": [ - "octokit", - "github", - "api", - "sdk", - "toolkit" - ], - "author": "Gregor Martynus (https://github.com/gr2m)", - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^6.0.0", - "@octokit/graphql": "^9.0.3", - "@octokit/request": "^10.0.6", - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", - "before-after-hook": "^4.0.0", - "universal-user-agent": "^7.0.0" - }, - "devDependencies": { - "@octokit/auth-action": "^6.0.1", - "@octokit/auth-app": "^8.0.0", - "@octokit/auth-oauth-app": "^9.0.0", - "@octokit/tsconfig": "^4.0.0", - "@sinonjs/fake-timers": "^15.0.0", - "@types/lolex": "^5.1.0", - "@types/node": "^22.0.0", - "@types/sinonjs__fake-timers": "^15.0.0", - "@vitest/coverage-v8": "^3.0.5", - "esbuild": "^0.25.0", - "fetch-mock": "^12.0.0", - "prettier": "3.6.2", - "proxy": "^2.0.0", - "semantic-release-plugin-update-version-in-files": "^2.0.0", - "typescript": "^5.0.0", - "undici": "^7.0.0", - "vitest": "^3.0.5" - }, - "engines": { - "node": ">= 20" - }, - "files": [ - "dist-*/**", - "bin/**" - ], - "types": "./dist-types/index.d.ts", - "exports": { - ".": { - "types": "./dist-types/index.d.ts", - "import": "./dist-src/index.js", - "default": "./dist-src/index.js" - }, - "./types": { - "types": "./dist-types/types.d.ts" - } - }, - "sideEffects": false -} diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/LICENSE b/sdks/nodejs/node_modules/@octokit/endpoint/LICENSE deleted file mode 100644 index af5366d..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/README.md b/sdks/nodejs/node_modules/@octokit/endpoint/README.md deleted file mode 100644 index 164f60d..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/README.md +++ /dev/null @@ -1,412 +0,0 @@ -# endpoint.js - -> Turns GitHub REST API endpoints into generic request options - -[![@latest](https://img.shields.io/npm/v/@octokit/endpoint.svg)](https://www.npmjs.com/package/@octokit/endpoint) -[![Build Status](https://github.com/octokit/endpoint.js/workflows/Test/badge.svg)](https://github.com/octokit/endpoint.js/actions/workflows/test.yml?query=branch%3Amain) - -`@octokit/endpoint` combines [GitHub REST API routes](https://developer.github.com/v3/) with your parameters and turns them into generic request options that can be used in any request library. - - - - - -- [Usage](#usage) -- [API](#api) - - [`endpoint(route, options)` or `endpoint(options)`](#endpointroute-options-or-endpointoptions) - - [`endpoint.defaults()`](#endpointdefaults) - - [`endpoint.DEFAULTS`](#endpointdefaults) - - [`endpoint.merge(route, options)` or `endpoint.merge(options)`](#endpointmergeroute-options-or-endpointmergeoptions) - - [`endpoint.parse()`](#endpointparse) -- [Special cases](#special-cases) - - [The `data` parameter – set request body directly](#the-data-parameter-%E2%80%93-set-request-body-directly) - - [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body) -- [LICENSE](#license) - - - -## Usage - - - - - - -
-Browsers - -Load @octokit/endpoint directly from esm.sh - -```html - -``` - -
-Node - - -Install with npm install @octokit/endpoint - -```js -import { endpoint } from "@octokit/endpoint"; -``` - -
- -Example for [List organization repositories](https://developer.github.com/v3/repos/#list-organization-repositories) - -```js -const requestOptions = endpoint("GET /orgs/{org}/repos", { - headers: { - authorization: "token 0000000000000000000000000000000000000001", - }, - org: "octokit", - type: "private", -}); -``` - -The resulting `requestOptions` looks as follows - -```json -{ - "method": "GET", - "url": "https://api.github.com/orgs/octokit/repos?type=private", - "headers": { - "accept": "application/vnd.github.v3+json", - "authorization": "token 0000000000000000000000000000000000000001", - "user-agent": "octokit/endpoint.js v1.2.3" - } -} -``` - -You can pass `requestOptions` to common request libraries - -```js -const { url, ...options } = requestOptions; -// using with fetch (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) -fetch(url, options); -// using with request (https://github.com/request/request) -request(requestOptions); -// using with got (https://github.com/sindresorhus/got) -got[options.method](url, options); -// using with axios -axios(requestOptions); -``` - -> [!IMPORTANT] -> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json`. See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports). - -## API - -### `endpoint(route, options)` or `endpoint(options)` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- name - - type - - description -
- route - - String - - If set, it has to be a string consisting of URL and the request method, e.g., GET /orgs/{org}. If it’s set to a URL, only the method defaults to GET. -
- options.method - - String - - Required unless route is set. Any supported http verb. Defaults to GET. -
- options.url - - String - - Required unless route is set. A path or full URL which may contain :variable or {variable} placeholders, - e.g., /orgs/{org}/repos. The url is parsed using url-template. -
- options.baseUrl - - String - - Defaults to https://api.github.com. -
- options.headers - - Object - - Custom headers. Passed headers are merged with defaults:
- headers['user-agent'] defaults to octokit-endpoint.js/1.2.3 (where 1.2.3 is the released version).
- headers['accept'] defaults to application/vnd.github.v3+json.
-
- options.mediaType.format - - String - - Media type param, such as raw, diff, or text+json. See Media Types. Setting options.mediaType.format will amend the headers.accept value. -
- options.data - - Any - - Set request body directly instead of setting it to JSON based on additional parameters. See "The data parameter" below. -
- options.request - - Object - - Pass custom meta information for the request. The request object will be returned as is. -
- -All other options will be passed depending on the `method` and `url` options. - -1. If the option key has a placeholder in the `url`, it will be used as the replacement. For example, if the passed options are `{url: '/orgs/{org}/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos`. -2. If the `method` is `GET` or `HEAD`, the option is passed as a query parameter. -3. Otherwise, the parameter is passed in the request body as a JSON key. - -**Result** - -`endpoint()` is a synchronous method and returns an object with the following keys: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- key - - type - - description -
methodStringThe http method. Always lowercase.
urlStringThe url with placeholders replaced with passed parameters.
headersObjectAll header names are lowercased.
bodyAnyThe request body if one is present. Only for PATCH, POST, PUT, DELETE requests.
requestObjectRequest meta option, it will be returned as it was passed into endpoint()
- -### `endpoint.defaults()` - -Override or set default options. Example: - -```js -const request = require("request"); -const myEndpoint = require("@octokit/endpoint").defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api/v3", - headers: { - "user-agent": "myApp/1.2.3", - authorization: `token 0000000000000000000000000000000000000001`, - }, - org: "my-project", - per_page: 100, -}); - -request(myEndpoint(`GET /orgs/{org}/repos`)); -``` - -You can call `.defaults()` again on the returned method, the defaults will cascade. - -```js -const myProjectEndpoint = endpoint.defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api/v3", - headers: { - "user-agent": "myApp/1.2.3", - }, - org: "my-project", -}); -const myProjectEndpointWithAuth = myProjectEndpoint.defaults({ - headers: { - authorization: `token 0000000000000000000000000000000000000001`, - }, -}); -``` - -`myProjectEndpointWithAuth` now defaults the `baseUrl`, `headers['user-agent']`, -`org` and `headers['authorization']` on top of `headers['accept']` that is set -by the global default. - -### `endpoint.DEFAULTS` - -The current default options. - -```js -endpoint.DEFAULTS.baseUrl; // https://api.github.com -const myEndpoint = endpoint.defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api/v3", -}); -myEndpoint.DEFAULTS.baseUrl; // https://github-enterprise.acme-inc.com/api/v3 -``` - -### `endpoint.merge(route, options)` or `endpoint.merge(options)` - -Get the defaulted endpoint options, but without parsing them into request options: - -```js -const myProjectEndpoint = endpoint.defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api/v3", - headers: { - "user-agent": "myApp/1.2.3", - }, - org: "my-project", -}); -myProjectEndpoint.merge("GET /orgs/{org}/repos", { - headers: { - authorization: `token 0000000000000000000000000000000000000001`, - }, - org: "my-secret-project", - type: "private", -}); - -// { -// baseUrl: 'https://github-enterprise.acme-inc.com/api/v3', -// method: 'GET', -// url: '/orgs/{org}/repos', -// headers: { -// accept: 'application/vnd.github.v3+json', -// authorization: `token 0000000000000000000000000000000000000001`, -// 'user-agent': 'myApp/1.2.3' -// }, -// org: 'my-secret-project', -// type: 'private' -// } -``` - -### `endpoint.parse()` - -Stateless method to turn endpoint options into request options. Calling -`endpoint(options)` is the same as calling `endpoint.parse(endpoint.merge(options))`. - -## Special cases - - - -### The `data` parameter – set request body directly - -Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead, the request body needs to be set directly. In these cases, set the `data` parameter. - -```js -const options = endpoint("POST /markdown/raw", { - data: "Hello world github/linguist#1 **cool**, and #1!", - headers: { - accept: "text/html;charset=utf-8", - "content-type": "text/plain", - }, -}); - -// options is -// { -// method: 'post', -// url: 'https://api.github.com/markdown/raw', -// headers: { -// accept: 'text/html;charset=utf-8', -// 'content-type': 'text/plain', -// 'user-agent': userAgent -// }, -// body: 'Hello world github/linguist#1 **cool**, and #1!' -// } -``` - -### Set parameters for both the URL/query and the request body - -There are API endpoints that accept both query parameters as well as a body. In that case, you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570). - -Example - -```js -endpoint( - "POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}", - { - name: "example.zip", - label: "short description", - headers: { - "content-type": "text/plain", - "content-length": 14, - authorization: `token 0000000000000000000000000000000000000001`, - }, - data: "Hello, world!", - }, -); -``` - -## LICENSE - -[MIT](LICENSE) diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-bundle/index.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-bundle/index.js deleted file mode 100644 index 3d9aa82..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-bundle/index.js +++ /dev/null @@ -1,346 +0,0 @@ -// pkg/dist-src/defaults.js -import { getUserAgent } from "universal-user-agent"; - -// pkg/dist-src/version.js -var VERSION = "0.0.0-development"; - -// pkg/dist-src/defaults.js -var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`; -var DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent - }, - mediaType: { - format: "" - } -}; - -// pkg/dist-src/util/lowercase-keys.js -function lowercaseKeys(object) { - if (!object) { - return {}; - } - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); -} - -// pkg/dist-src/util/is-plain-object.js -function isPlainObject(value) { - if (typeof value !== "object" || value === null) return false; - if (Object.prototype.toString.call(value) !== "[object Object]") return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; - return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); -} - -// pkg/dist-src/util/merge-deep.js -function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach((key) => { - if (isPlainObject(options[key])) { - if (!(key in defaults)) Object.assign(result, { [key]: options[key] }); - else result[key] = mergeDeep(defaults[key], options[key]); - } else { - Object.assign(result, { [key]: options[key] }); - } - }); - return result; -} - -// pkg/dist-src/util/remove-undefined-properties.js -function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === void 0) { - delete obj[key]; - } - } - return obj; -} - -// pkg/dist-src/merge.js -function merge(defaults, route, options) { - if (typeof route === "string") { - let [method, url] = route.split(" "); - options = Object.assign(url ? { method, url } : { url: method }, options); - } else { - options = Object.assign({}, route); - } - options.headers = lowercaseKeys(options.headers); - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); - if (options.url === "/graphql") { - if (defaults && defaults.mediaType.previews?.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews.filter( - (preview) => !mergedOptions.mediaType.previews.includes(preview) - ).concat(mergedOptions.mediaType.previews); - } - mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, "")); - } - return mergedOptions; -} - -// pkg/dist-src/util/add-query-parameters.js -function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? "&" : "?"; - const names = Object.keys(parameters); - if (names.length === 0) { - return url; - } - return url + separator + names.map((name) => { - if (name === "q") { - return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); - } - return `${name}=${encodeURIComponent(parameters[name])}`; - }).join("&"); -} - -// pkg/dist-src/util/extract-url-variable-names.js -var urlVariableRegex = /\{[^{}}]+\}/g; -function removeNonChars(variableName) { - return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []); -} - -// pkg/dist-src/util/omit.js -function omit(object, keysToOmit) { - const result = { __proto__: null }; - for (const key of Object.keys(object)) { - if (keysToOmit.indexOf(key) === -1) { - result[key] = object[key]; - } - } - return result; -} - -// pkg/dist-src/util/url-template.js -function encodeReserved(str) { - return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); - } - return part; - }).join(""); -} -function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { - return "%" + c.charCodeAt(0).toString(16).toUpperCase(); - }); -} -function encodeValue(operator, value, key) { - value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); - if (key) { - return encodeUnreserved(key) + "=" + value; - } else { - return value; - } -} -function isDefined(value) { - return value !== void 0 && value !== null; -} -function isKeyOperator(operator) { - return operator === ";" || operator === "&" || operator === "?"; -} -function getValues(context, operator, key, modifier) { - var value = context[key], result = []; - if (isDefined(value) && value !== "") { - if (typeof value === "string" || typeof value === "number" || typeof value === "bigint" || typeof value === "boolean") { - value = value.toString(); - if (modifier && modifier !== "*") { - value = value.substring(0, parseInt(modifier, 10)); - } - result.push( - encodeValue(operator, value, isKeyOperator(operator) ? key : "") - ); - } else { - if (modifier === "*") { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function(value2) { - result.push( - encodeValue(operator, value2, isKeyOperator(operator) ? key : "") - ); - }); - } else { - Object.keys(value).forEach(function(k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } else { - const tmp = []; - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function(value2) { - tmp.push(encodeValue(operator, value2)); - }); - } else { - Object.keys(value).forEach(function(k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + "=" + tmp.join(",")); - } else if (tmp.length !== 0) { - result.push(tmp.join(",")); - } - } - } - } else { - if (operator === ";") { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); - } - } else if (value === "" && (operator === "&" || operator === "?")) { - result.push(encodeUnreserved(key) + "="); - } else if (value === "") { - result.push(""); - } - } - return result; -} -function parseUrl(template) { - return { - expand: expand.bind(null, template) - }; -} -function expand(template, context) { - var operators = ["+", "#", ".", "/", ";", "?", "&"]; - template = template.replace( - /\{([^\{\}]+)\}|([^\{\}]+)/g, - function(_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - expression.split(/,/g).forEach(function(variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); - if (operator && operator !== "+") { - var separator = ","; - if (operator === "?") { - separator = "&"; - } else if (operator !== "#") { - separator = operator; - } - return (values.length !== 0 ? operator : "") + values.join(separator); - } else { - return values.join(","); - } - } else { - return encodeReserved(literal); - } - } - ); - if (template === "/") { - return template; - } else { - return template.replace(/\/$/, ""); - } -} - -// pkg/dist-src/parse.js -function parse(options) { - let method = options.method.toUpperCase(); - let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); - let headers = Object.assign({}, options.headers); - let body; - let parameters = omit(options, [ - "method", - "baseUrl", - "url", - "headers", - "request", - "mediaType" - ]); - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } - const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl"); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - if (!isBinaryRequest) { - if (options.mediaType.format) { - headers.accept = headers.accept.split(/,/).map( - (format) => format.replace( - /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, - `application/vnd$1$2.${options.mediaType.format}` - ) - ).join(","); - } - if (url.endsWith("/graphql")) { - if (options.mediaType.previews?.length) { - const previewsFromAcceptHeader = headers.accept.match(/(? { - const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }).join(","); - } - } - } - if (["GET", "HEAD"].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } else { - if ("data" in remainingParameters) { - body = remainingParameters.data; - } else { - if (Object.keys(remainingParameters).length) { - body = remainingParameters; - } - } - } - if (!headers["content-type"] && typeof body !== "undefined") { - headers["content-type"] = "application/json; charset=utf-8"; - } - if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { - body = ""; - } - return Object.assign( - { method, url, headers }, - typeof body !== "undefined" ? { body } : null, - options.request ? { request: options.request } : null - ); -} - -// pkg/dist-src/endpoint-with-defaults.js -function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, route, options)); -} - -// pkg/dist-src/with-defaults.js -function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS2 = merge(oldDefaults, newDefaults); - const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); - return Object.assign(endpoint2, { - DEFAULTS: DEFAULTS2, - defaults: withDefaults.bind(null, DEFAULTS2), - merge: merge.bind(null, DEFAULTS2), - parse - }); -} - -// pkg/dist-src/index.js -var endpoint = withDefaults(null, DEFAULTS); -export { - endpoint -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-bundle/index.js.map b/sdks/nodejs/node_modules/@octokit/endpoint/dist-bundle/index.js.map deleted file mode 100644 index bc3b9ac..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-bundle/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../dist-src/defaults.js", "../dist-src/version.js", "../dist-src/util/lowercase-keys.js", "../dist-src/util/is-plain-object.js", "../dist-src/util/merge-deep.js", "../dist-src/util/remove-undefined-properties.js", "../dist-src/merge.js", "../dist-src/util/add-query-parameters.js", "../dist-src/util/extract-url-variable-names.js", "../dist-src/util/omit.js", "../dist-src/util/url-template.js", "../dist-src/parse.js", "../dist-src/endpoint-with-defaults.js", "../dist-src/with-defaults.js", "../dist-src/index.js"], - "sourcesContent": ["import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version.js\";\nconst userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\nconst DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\"\n }\n};\nexport {\n DEFAULTS\n};\n", "const VERSION = \"0.0.0-development\";\nexport {\n VERSION\n};\n", "function lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\nexport {\n lowercaseKeys\n};\n", "function isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\nexport {\n isPlainObject\n};\n", "import { isPlainObject } from \"./is-plain-object.js\";\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults)) Object.assign(result, { [key]: options[key] });\n else result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\nexport {\n mergeDeep\n};\n", "function removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === void 0) {\n delete obj[key];\n }\n }\n return obj;\n}\nexport {\n removeUndefinedProperties\n};\n", "import { lowercaseKeys } from \"./util/lowercase-keys.js\";\nimport { mergeDeep } from \"./util/merge-deep.js\";\nimport { removeUndefinedProperties } from \"./util/remove-undefined-properties.js\";\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n } else {\n options = Object.assign({}, route);\n }\n options.headers = lowercaseKeys(options.headers);\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n if (options.url === \"/graphql\") {\n if (defaults && defaults.mediaType.previews?.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n (preview) => !mergedOptions.mediaType.previews.includes(preview)\n ).concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n }\n return mergedOptions;\n}\nexport {\n merge\n};\n", "function addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return url + separator + names.map((name) => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\nexport {\n addQueryParameters\n};\n", "const urlVariableRegex = /\\{[^{}}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/(?:^\\W+)|(?:(? a.concat(b), []);\n}\nexport {\n extractUrlVariableNames\n};\n", "function omit(object, keysToOmit) {\n const result = { __proto__: null };\n for (const key of Object.keys(object)) {\n if (keysToOmit.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n}\nexport {\n omit\n};\n", "function encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"bigint\" || typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(\n encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n );\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n result.push(\n encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n );\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n tmp.push(encodeValue(operator, value2));\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n template = template.replace(\n /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n function(_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function(variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n }\n );\n if (template === \"/\") {\n return template;\n } else {\n return template.replace(/\\/$/, \"\");\n }\n}\nexport {\n parseUrl\n};\n", "import { addQueryParameters } from \"./util/add-query-parameters.js\";\nimport { extractUrlVariableNames } from \"./util/extract-url-variable-names.js\";\nimport { omit } from \"./util/omit.js\";\nimport { parseUrl } from \"./util/url-template.js\";\nfunction parse(options) {\n let method = options.method.toUpperCase();\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\"\n ]);\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n headers.accept = headers.accept.split(/,/).map(\n (format) => format.replace(\n /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n `application/vnd$1$2.${options.mediaType.format}`\n )\n ).join(\",\");\n }\n if (url.endsWith(\"/graphql\")) {\n if (options.mediaType.previews?.length) {\n const previewsFromAcceptHeader = headers.accept.match(/(? {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n }\n }\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n }\n }\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n return Object.assign(\n { method, url, headers },\n typeof body !== \"undefined\" ? { body } : null,\n options.request ? { request: options.request } : null\n );\n}\nexport {\n parse\n};\n", "import { DEFAULTS } from \"./defaults.js\";\nimport { merge } from \"./merge.js\";\nimport { parse } from \"./parse.js\";\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\nexport {\n endpointWithDefaults\n};\n", "import { endpointWithDefaults } from \"./endpoint-with-defaults.js\";\nimport { merge } from \"./merge.js\";\nimport { parse } from \"./parse.js\";\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS = merge(oldDefaults, newDefaults);\n const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n return Object.assign(endpoint, {\n DEFAULTS,\n defaults: withDefaults.bind(null, DEFAULTS),\n merge: merge.bind(null, DEFAULTS),\n parse\n });\n}\nexport {\n withDefaults\n};\n", "import { withDefaults } from \"./with-defaults.js\";\nimport { DEFAULTS } from \"./defaults.js\";\nconst endpoint = withDefaults(null, DEFAULTS);\nexport {\n endpoint\n};\n"], - "mappings": ";AAAA,SAAS,oBAAoB;;;ACA7B,IAAM,UAAU;;;ADEhB,IAAM,YAAY,uBAAuB,OAAO,IAAI,aAAa,CAAC;AAClE,IAAM,WAAW;AAAA,EACf,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,IACT,QAAQ;AAAA,EACV;AACF;;;AEbA,SAAS,cAAc,QAAQ;AAC7B,MAAI,CAAC,QAAQ;AACX,WAAO,CAAC;AAAA,EACV;AACA,SAAO,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,QAAQ,QAAQ;AACjD,WAAO,IAAI,YAAY,CAAC,IAAI,OAAO,GAAG;AACtC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACP;;;ACRA,SAAS,cAAc,OAAO;AAC5B,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;AACxD,MAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM,kBAAmB,QAAO;AACxE,QAAM,QAAQ,OAAO,eAAe,KAAK;AACzC,MAAI,UAAU,KAAM,QAAO;AAC3B,QAAM,OAAO,OAAO,UAAU,eAAe,KAAK,OAAO,aAAa,KAAK,MAAM;AACjF,SAAO,OAAO,SAAS,cAAc,gBAAgB,QAAQ,SAAS,UAAU,KAAK,IAAI,MAAM,SAAS,UAAU,KAAK,KAAK;AAC9H;;;ACNA,SAAS,UAAU,UAAU,SAAS;AACpC,QAAM,SAAS,OAAO,OAAO,CAAC,GAAG,QAAQ;AACzC,SAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,QAAQ;AACpC,QAAI,cAAc,QAAQ,GAAG,CAAC,GAAG;AAC/B,UAAI,EAAE,OAAO,UAAW,QAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAC;AAAA,UAChE,QAAO,GAAG,IAAI,UAAU,SAAS,GAAG,GAAG,QAAQ,GAAG,CAAC;AAAA,IAC1D,OAAO;AACL,aAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAC;AAAA,IAC/C;AAAA,EACF,CAAC;AACD,SAAO;AACT;;;ACZA,SAAS,0BAA0B,KAAK;AACtC,aAAW,OAAO,KAAK;AACrB,QAAI,IAAI,GAAG,MAAM,QAAQ;AACvB,aAAO,IAAI,GAAG;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;;;ACJA,SAAS,MAAM,UAAU,OAAO,SAAS;AACvC,MAAI,OAAO,UAAU,UAAU;AAC7B,QAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,MAAM,GAAG;AACnC,cAAU,OAAO,OAAO,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,KAAK,OAAO,GAAG,OAAO;AAAA,EAC1E,OAAO;AACL,cAAU,OAAO,OAAO,CAAC,GAAG,KAAK;AAAA,EACnC;AACA,UAAQ,UAAU,cAAc,QAAQ,OAAO;AAC/C,4BAA0B,OAAO;AACjC,4BAA0B,QAAQ,OAAO;AACzC,QAAM,gBAAgB,UAAU,YAAY,CAAC,GAAG,OAAO;AACvD,MAAI,QAAQ,QAAQ,YAAY;AAC9B,QAAI,YAAY,SAAS,UAAU,UAAU,QAAQ;AACnD,oBAAc,UAAU,WAAW,SAAS,UAAU,SAAS;AAAA,QAC7D,CAAC,YAAY,CAAC,cAAc,UAAU,SAAS,SAAS,OAAO;AAAA,MACjE,EAAE,OAAO,cAAc,UAAU,QAAQ;AAAA,IAC3C;AACA,kBAAc,UAAU,YAAY,cAAc,UAAU,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,QAAQ,QAAQ,YAAY,EAAE,CAAC;AAAA,EAC9H;AACA,SAAO;AACT;;;ACvBA,SAAS,mBAAmB,KAAK,YAAY;AAC3C,QAAM,YAAY,KAAK,KAAK,GAAG,IAAI,MAAM;AACzC,QAAM,QAAQ,OAAO,KAAK,UAAU;AACpC,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AACA,SAAO,MAAM,YAAY,MAAM,IAAI,CAAC,SAAS;AAC3C,QAAI,SAAS,KAAK;AAChB,aAAO,OAAO,WAAW,EAAE,MAAM,GAAG,EAAE,IAAI,kBAAkB,EAAE,KAAK,GAAG;AAAA,IACxE;AACA,WAAO,GAAG,IAAI,IAAI,mBAAmB,WAAW,IAAI,CAAC,CAAC;AAAA,EACxD,CAAC,EAAE,KAAK,GAAG;AACb;;;ACZA,IAAM,mBAAmB;AACzB,SAAS,eAAe,cAAc;AACpC,SAAO,aAAa,QAAQ,6BAA6B,EAAE,EAAE,MAAM,GAAG;AACxE;AACA,SAAS,wBAAwB,KAAK;AACpC,QAAM,UAAU,IAAI,MAAM,gBAAgB;AAC1C,MAAI,CAAC,SAAS;AACZ,WAAO,CAAC;AAAA,EACV;AACA,SAAO,QAAQ,IAAI,cAAc,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACrE;;;ACVA,SAAS,KAAK,QAAQ,YAAY;AAChC,QAAM,SAAS,EAAE,WAAW,KAAK;AACjC,aAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACrC,QAAI,WAAW,QAAQ,GAAG,MAAM,IAAI;AAClC,aAAO,GAAG,IAAI,OAAO,GAAG;AAAA,IAC1B;AAAA,EACF;AACA,SAAO;AACT;;;ACRA,SAAS,eAAe,KAAK;AAC3B,SAAO,IAAI,MAAM,oBAAoB,EAAE,IAAI,SAAS,MAAM;AACxD,QAAI,CAAC,eAAe,KAAK,IAAI,GAAG;AAC9B,aAAO,UAAU,IAAI,EAAE,QAAQ,QAAQ,GAAG,EAAE,QAAQ,QAAQ,GAAG;AAAA,IACjE;AACA,WAAO;AAAA,EACT,CAAC,EAAE,KAAK,EAAE;AACZ;AACA,SAAS,iBAAiB,KAAK;AAC7B,SAAO,mBAAmB,GAAG,EAAE,QAAQ,YAAY,SAAS,GAAG;AAC7D,WAAO,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY;AAAA,EACxD,CAAC;AACH;AACA,SAAS,YAAY,UAAU,OAAO,KAAK;AACzC,UAAQ,aAAa,OAAO,aAAa,MAAM,eAAe,KAAK,IAAI,iBAAiB,KAAK;AAC7F,MAAI,KAAK;AACP,WAAO,iBAAiB,GAAG,IAAI,MAAM;AAAA,EACvC,OAAO;AACL,WAAO;AAAA,EACT;AACF;AACA,SAAS,UAAU,OAAO;AACxB,SAAO,UAAU,UAAU,UAAU;AACvC;AACA,SAAS,cAAc,UAAU;AAC/B,SAAO,aAAa,OAAO,aAAa,OAAO,aAAa;AAC9D;AACA,SAAS,UAAU,SAAS,UAAU,KAAK,UAAU;AACnD,MAAI,QAAQ,QAAQ,GAAG,GAAG,SAAS,CAAC;AACpC,MAAI,UAAU,KAAK,KAAK,UAAU,IAAI;AACpC,QAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AACrH,cAAQ,MAAM,SAAS;AACvB,UAAI,YAAY,aAAa,KAAK;AAChC,gBAAQ,MAAM,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC;AAAA,MACnD;AACA,aAAO;AAAA,QACL,YAAY,UAAU,OAAO,cAAc,QAAQ,IAAI,MAAM,EAAE;AAAA,MACjE;AAAA,IACF,OAAO;AACL,UAAI,aAAa,KAAK;AACpB,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,gBAAM,OAAO,SAAS,EAAE,QAAQ,SAAS,QAAQ;AAC/C,mBAAO;AAAA,cACL,YAAY,UAAU,QAAQ,cAAc,QAAQ,IAAI,MAAM,EAAE;AAAA,YAClE;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,KAAK,KAAK,EAAE,QAAQ,SAAS,GAAG;AACrC,gBAAI,UAAU,MAAM,CAAC,CAAC,GAAG;AACvB,qBAAO,KAAK,YAAY,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC;AAAA,YAChD;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,cAAM,MAAM,CAAC;AACb,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,gBAAM,OAAO,SAAS,EAAE,QAAQ,SAAS,QAAQ;AAC/C,gBAAI,KAAK,YAAY,UAAU,MAAM,CAAC;AAAA,UACxC,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,KAAK,KAAK,EAAE,QAAQ,SAAS,GAAG;AACrC,gBAAI,UAAU,MAAM,CAAC,CAAC,GAAG;AACvB,kBAAI,KAAK,iBAAiB,CAAC,CAAC;AAC5B,kBAAI,KAAK,YAAY,UAAU,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AAAA,YACrD;AAAA,UACF,CAAC;AAAA,QACH;AACA,YAAI,cAAc,QAAQ,GAAG;AAC3B,iBAAO,KAAK,iBAAiB,GAAG,IAAI,MAAM,IAAI,KAAK,GAAG,CAAC;AAAA,QACzD,WAAW,IAAI,WAAW,GAAG;AAC3B,iBAAO,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,EACF,OAAO;AACL,QAAI,aAAa,KAAK;AACpB,UAAI,UAAU,KAAK,GAAG;AACpB,eAAO,KAAK,iBAAiB,GAAG,CAAC;AAAA,MACnC;AAAA,IACF,WAAW,UAAU,OAAO,aAAa,OAAO,aAAa,MAAM;AACjE,aAAO,KAAK,iBAAiB,GAAG,IAAI,GAAG;AAAA,IACzC,WAAW,UAAU,IAAI;AACvB,aAAO,KAAK,EAAE;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,SAAS,UAAU;AAC1B,SAAO;AAAA,IACL,QAAQ,OAAO,KAAK,MAAM,QAAQ;AAAA,EACpC;AACF;AACA,SAAS,OAAO,UAAU,SAAS;AACjC,MAAI,YAAY,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAClD,aAAW,SAAS;AAAA,IAClB;AAAA,IACA,SAAS,GAAG,YAAY,SAAS;AAC/B,UAAI,YAAY;AACd,YAAI,WAAW;AACf,cAAM,SAAS,CAAC;AAChB,YAAI,UAAU,QAAQ,WAAW,OAAO,CAAC,CAAC,MAAM,IAAI;AAClD,qBAAW,WAAW,OAAO,CAAC;AAC9B,uBAAa,WAAW,OAAO,CAAC;AAAA,QAClC;AACA,mBAAW,MAAM,IAAI,EAAE,QAAQ,SAAS,UAAU;AAChD,cAAI,MAAM,4BAA4B,KAAK,QAAQ;AACnD,iBAAO,KAAK,UAAU,SAAS,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AAAA,QACpE,CAAC;AACD,YAAI,YAAY,aAAa,KAAK;AAChC,cAAI,YAAY;AAChB,cAAI,aAAa,KAAK;AACpB,wBAAY;AAAA,UACd,WAAW,aAAa,KAAK;AAC3B,wBAAY;AAAA,UACd;AACA,kBAAQ,OAAO,WAAW,IAAI,WAAW,MAAM,OAAO,KAAK,SAAS;AAAA,QACtE,OAAO;AACL,iBAAO,OAAO,KAAK,GAAG;AAAA,QACxB;AAAA,MACF,OAAO;AACL,eAAO,eAAe,OAAO;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AACA,MAAI,aAAa,KAAK;AACpB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,SAAS,QAAQ,OAAO,EAAE;AAAA,EACnC;AACF;;;AC7HA,SAAS,MAAM,SAAS;AACtB,MAAI,SAAS,QAAQ,OAAO,YAAY;AACxC,MAAI,OAAO,QAAQ,OAAO,KAAK,QAAQ,gBAAgB,MAAM;AAC7D,MAAI,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO;AAC/C,MAAI;AACJ,MAAI,aAAa,KAAK,SAAS;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,mBAAmB,wBAAwB,GAAG;AACpD,QAAM,SAAS,GAAG,EAAE,OAAO,UAAU;AACrC,MAAI,CAAC,QAAQ,KAAK,GAAG,GAAG;AACtB,UAAM,QAAQ,UAAU;AAAA,EAC1B;AACA,QAAM,oBAAoB,OAAO,KAAK,OAAO,EAAE,OAAO,CAAC,WAAW,iBAAiB,SAAS,MAAM,CAAC,EAAE,OAAO,SAAS;AACrH,QAAM,sBAAsB,KAAK,YAAY,iBAAiB;AAC9D,QAAM,kBAAkB,6BAA6B,KAAK,QAAQ,MAAM;AACxE,MAAI,CAAC,iBAAiB;AACpB,QAAI,QAAQ,UAAU,QAAQ;AAC5B,cAAQ,SAAS,QAAQ,OAAO,MAAM,GAAG,EAAE;AAAA,QACzC,CAAC,WAAW,OAAO;AAAA,UACjB;AAAA,UACA,uBAAuB,QAAQ,UAAU,MAAM;AAAA,QACjD;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AACA,QAAI,IAAI,SAAS,UAAU,GAAG;AAC5B,UAAI,QAAQ,UAAU,UAAU,QAAQ;AACtC,cAAM,2BAA2B,QAAQ,OAAO,MAAM,+BAA+B,KAAK,CAAC;AAC3F,gBAAQ,SAAS,yBAAyB,OAAO,QAAQ,UAAU,QAAQ,EAAE,IAAI,CAAC,YAAY;AAC5F,gBAAM,SAAS,QAAQ,UAAU,SAAS,IAAI,QAAQ,UAAU,MAAM,KAAK;AAC3E,iBAAO,0BAA0B,OAAO,WAAW,MAAM;AAAA,QAC3D,CAAC,EAAE,KAAK,GAAG;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,OAAO,MAAM,EAAE,SAAS,MAAM,GAAG;AACpC,UAAM,mBAAmB,KAAK,mBAAmB;AAAA,EACnD,OAAO;AACL,QAAI,UAAU,qBAAqB;AACjC,aAAO,oBAAoB;AAAA,IAC7B,OAAO;AACL,UAAI,OAAO,KAAK,mBAAmB,EAAE,QAAQ;AAC3C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,QAAQ,cAAc,KAAK,OAAO,SAAS,aAAa;AAC3D,YAAQ,cAAc,IAAI;AAAA,EAC5B;AACA,MAAI,CAAC,SAAS,KAAK,EAAE,SAAS,MAAM,KAAK,OAAO,SAAS,aAAa;AACpE,WAAO;AAAA,EACT;AACA,SAAO,OAAO;AAAA,IACZ,EAAE,QAAQ,KAAK,QAAQ;AAAA,IACvB,OAAO,SAAS,cAAc,EAAE,KAAK,IAAI;AAAA,IACzC,QAAQ,UAAU,EAAE,SAAS,QAAQ,QAAQ,IAAI;AAAA,EACnD;AACF;;;AC/DA,SAAS,qBAAqB,UAAU,OAAO,SAAS;AACtD,SAAO,MAAM,MAAM,UAAU,OAAO,OAAO,CAAC;AAC9C;;;ACFA,SAAS,aAAa,aAAa,aAAa;AAC9C,QAAMA,YAAW,MAAM,aAAa,WAAW;AAC/C,QAAMC,YAAW,qBAAqB,KAAK,MAAMD,SAAQ;AACzD,SAAO,OAAO,OAAOC,WAAU;AAAA,IAC7B,UAAAD;AAAA,IACA,UAAU,aAAa,KAAK,MAAMA,SAAQ;AAAA,IAC1C,OAAO,MAAM,KAAK,MAAMA,SAAQ;AAAA,IAChC;AAAA,EACF,CAAC;AACH;;;ACVA,IAAM,WAAW,aAAa,MAAM,QAAQ;", - "names": ["DEFAULTS", "endpoint"] -} diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/defaults.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/defaults.js deleted file mode 100644 index 5f65ced..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/defaults.js +++ /dev/null @@ -1,17 +0,0 @@ -import { getUserAgent } from "universal-user-agent"; -import { VERSION } from "./version.js"; -const userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`; -const DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent - }, - mediaType: { - format: "" - } -}; -export { - DEFAULTS -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js deleted file mode 100644 index e67c9e5..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js +++ /dev/null @@ -1,9 +0,0 @@ -import { DEFAULTS } from "./defaults.js"; -import { merge } from "./merge.js"; -import { parse } from "./parse.js"; -function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, route, options)); -} -export { - endpointWithDefaults -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/index.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/index.js deleted file mode 100644 index 7d60502..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import { withDefaults } from "./with-defaults.js"; -import { DEFAULTS } from "./defaults.js"; -const endpoint = withDefaults(null, DEFAULTS); -export { - endpoint -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/merge.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/merge.js deleted file mode 100644 index cf1b37e..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/merge.js +++ /dev/null @@ -1,27 +0,0 @@ -import { lowercaseKeys } from "./util/lowercase-keys.js"; -import { mergeDeep } from "./util/merge-deep.js"; -import { removeUndefinedProperties } from "./util/remove-undefined-properties.js"; -function merge(defaults, route, options) { - if (typeof route === "string") { - let [method, url] = route.split(" "); - options = Object.assign(url ? { method, url } : { url: method }, options); - } else { - options = Object.assign({}, route); - } - options.headers = lowercaseKeys(options.headers); - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); - if (options.url === "/graphql") { - if (defaults && defaults.mediaType.previews?.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews.filter( - (preview) => !mergedOptions.mediaType.previews.includes(preview) - ).concat(mergedOptions.mediaType.previews); - } - mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, "")); - } - return mergedOptions; -} -export { - merge -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/parse.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/parse.js deleted file mode 100644 index f3df817..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/parse.js +++ /dev/null @@ -1,70 +0,0 @@ -import { addQueryParameters } from "./util/add-query-parameters.js"; -import { extractUrlVariableNames } from "./util/extract-url-variable-names.js"; -import { omit } from "./util/omit.js"; -import { parseUrl } from "./util/url-template.js"; -function parse(options) { - let method = options.method.toUpperCase(); - let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); - let headers = Object.assign({}, options.headers); - let body; - let parameters = omit(options, [ - "method", - "baseUrl", - "url", - "headers", - "request", - "mediaType" - ]); - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } - const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl"); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - if (!isBinaryRequest) { - if (options.mediaType.format) { - headers.accept = headers.accept.split(/,/).map( - (format) => format.replace( - /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, - `application/vnd$1$2.${options.mediaType.format}` - ) - ).join(","); - } - if (url.endsWith("/graphql")) { - if (options.mediaType.previews?.length) { - const previewsFromAcceptHeader = headers.accept.match(/(? { - const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }).join(","); - } - } - } - if (["GET", "HEAD"].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } else { - if ("data" in remainingParameters) { - body = remainingParameters.data; - } else { - if (Object.keys(remainingParameters).length) { - body = remainingParameters; - } - } - } - if (!headers["content-type"] && typeof body !== "undefined") { - headers["content-type"] = "application/json; charset=utf-8"; - } - if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { - body = ""; - } - return Object.assign( - { method, url, headers }, - typeof body !== "undefined" ? { body } : null, - options.request ? { request: options.request } : null - ); -} -export { - parse -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js deleted file mode 100644 index 6bdf736..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js +++ /dev/null @@ -1,16 +0,0 @@ -function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? "&" : "?"; - const names = Object.keys(parameters); - if (names.length === 0) { - return url; - } - return url + separator + names.map((name) => { - if (name === "q") { - return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); - } - return `${name}=${encodeURIComponent(parameters[name])}`; - }).join("&"); -} -export { - addQueryParameters -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js deleted file mode 100644 index bd90977..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js +++ /dev/null @@ -1,14 +0,0 @@ -const urlVariableRegex = /\{[^{}}]+\}/g; -function removeNonChars(variableName) { - return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []); -} -export { - extractUrlVariableNames -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js deleted file mode 100644 index 6ae73a6..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js +++ /dev/null @@ -1,11 +0,0 @@ -function isPlainObject(value) { - if (typeof value !== "object" || value === null) return false; - if (Object.prototype.toString.call(value) !== "[object Object]") return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; - return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); -} -export { - isPlainObject -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js deleted file mode 100644 index 9bd7bb9..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js +++ /dev/null @@ -1,12 +0,0 @@ -function lowercaseKeys(object) { - if (!object) { - return {}; - } - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); -} -export { - lowercaseKeys -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js deleted file mode 100644 index bbfef87..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js +++ /dev/null @@ -1,16 +0,0 @@ -import { isPlainObject } from "./is-plain-object.js"; -function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach((key) => { - if (isPlainObject(options[key])) { - if (!(key in defaults)) Object.assign(result, { [key]: options[key] }); - else result[key] = mergeDeep(defaults[key], options[key]); - } else { - Object.assign(result, { [key]: options[key] }); - } - }); - return result; -} -export { - mergeDeep -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/omit.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/omit.js deleted file mode 100644 index aceffe2..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/omit.js +++ /dev/null @@ -1,12 +0,0 @@ -function omit(object, keysToOmit) { - const result = { __proto__: null }; - for (const key of Object.keys(object)) { - if (keysToOmit.indexOf(key) === -1) { - result[key] = object[key]; - } - } - return result; -} -export { - omit -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js deleted file mode 100644 index 8653027..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js +++ /dev/null @@ -1,11 +0,0 @@ -function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === void 0) { - delete obj[key]; - } - } - return obj; -} -export { - removeUndefinedProperties -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/url-template.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/url-template.js deleted file mode 100644 index 805424f..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/util/url-template.js +++ /dev/null @@ -1,133 +0,0 @@ -function encodeReserved(str) { - return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); - } - return part; - }).join(""); -} -function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { - return "%" + c.charCodeAt(0).toString(16).toUpperCase(); - }); -} -function encodeValue(operator, value, key) { - value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); - if (key) { - return encodeUnreserved(key) + "=" + value; - } else { - return value; - } -} -function isDefined(value) { - return value !== void 0 && value !== null; -} -function isKeyOperator(operator) { - return operator === ";" || operator === "&" || operator === "?"; -} -function getValues(context, operator, key, modifier) { - var value = context[key], result = []; - if (isDefined(value) && value !== "") { - if (typeof value === "string" || typeof value === "number" || typeof value === "bigint" || typeof value === "boolean") { - value = value.toString(); - if (modifier && modifier !== "*") { - value = value.substring(0, parseInt(modifier, 10)); - } - result.push( - encodeValue(operator, value, isKeyOperator(operator) ? key : "") - ); - } else { - if (modifier === "*") { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function(value2) { - result.push( - encodeValue(operator, value2, isKeyOperator(operator) ? key : "") - ); - }); - } else { - Object.keys(value).forEach(function(k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } else { - const tmp = []; - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function(value2) { - tmp.push(encodeValue(operator, value2)); - }); - } else { - Object.keys(value).forEach(function(k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + "=" + tmp.join(",")); - } else if (tmp.length !== 0) { - result.push(tmp.join(",")); - } - } - } - } else { - if (operator === ";") { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); - } - } else if (value === "" && (operator === "&" || operator === "?")) { - result.push(encodeUnreserved(key) + "="); - } else if (value === "") { - result.push(""); - } - } - return result; -} -function parseUrl(template) { - return { - expand: expand.bind(null, template) - }; -} -function expand(template, context) { - var operators = ["+", "#", ".", "/", ";", "?", "&"]; - template = template.replace( - /\{([^\{\}]+)\}|([^\{\}]+)/g, - function(_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - expression.split(/,/g).forEach(function(variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); - if (operator && operator !== "+") { - var separator = ","; - if (operator === "?") { - separator = "&"; - } else if (operator !== "#") { - separator = operator; - } - return (values.length !== 0 ? operator : "") + values.join(separator); - } else { - return values.join(","); - } - } else { - return encodeReserved(literal); - } - } - ); - if (template === "/") { - return template; - } else { - return template.replace(/\/$/, ""); - } -} -export { - parseUrl -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/version.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/version.js deleted file mode 100644 index 7544985..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/version.js +++ /dev/null @@ -1,4 +0,0 @@ -const VERSION = "11.0.3"; -export { - VERSION -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/with-defaults.js b/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/with-defaults.js deleted file mode 100644 index 5551d42..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-src/with-defaults.js +++ /dev/null @@ -1,16 +0,0 @@ -import { endpointWithDefaults } from "./endpoint-with-defaults.js"; -import { merge } from "./merge.js"; -import { parse } from "./parse.js"; -function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS = merge(oldDefaults, newDefaults); - const endpoint = endpointWithDefaults.bind(null, DEFAULTS); - return Object.assign(endpoint, { - DEFAULTS, - defaults: withDefaults.bind(null, DEFAULTS), - merge: merge.bind(null, DEFAULTS), - parse - }); -} -export { - withDefaults -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/defaults.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/defaults.d.ts deleted file mode 100644 index d65e889..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/defaults.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import type { EndpointDefaults } from "@octokit/types"; -export declare const DEFAULTS: EndpointDefaults; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts deleted file mode 100644 index ec25627..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { EndpointOptions, RequestParameters, Route } from "@octokit/types"; -import { DEFAULTS } from "./defaults.js"; -export declare function endpointWithDefaults(defaults: typeof DEFAULTS, route: Route | EndpointOptions, options?: RequestParameters): import("@octokit/types").RequestOptions; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/index.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/index.d.ts deleted file mode 100644 index 1ede136..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const endpoint: import("@octokit/types").EndpointInterface; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/merge.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/merge.d.ts deleted file mode 100644 index f583981..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/merge.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import type { EndpointDefaults, RequestParameters, Route } from "@octokit/types"; -export declare function merge(defaults: EndpointDefaults | null, route?: Route | RequestParameters, options?: RequestParameters): EndpointDefaults; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/parse.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/parse.d.ts deleted file mode 100644 index 5d0927a..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/parse.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import type { EndpointDefaults, RequestOptions } from "@octokit/types"; -export declare function parse(options: EndpointDefaults): RequestOptions; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts deleted file mode 100644 index 4b192ac..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare function addQueryParameters(url: string, parameters: { - [x: string]: string | undefined; - q?: string; -}): string; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts deleted file mode 100644 index 93586d4..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function extractUrlVariableNames(url: string): string[]; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/is-plain-object.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/is-plain-object.d.ts deleted file mode 100644 index 004fa4b..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/is-plain-object.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function isPlainObject(value: unknown): value is Object; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts deleted file mode 100644 index 1daf307..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare function lowercaseKeys(object?: { - [key: string]: any; -}): { - [key: string]: any; -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts deleted file mode 100644 index 914411c..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function mergeDeep(defaults: any, options: any): object; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts deleted file mode 100644 index 06927d6..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare function omit(object: { - [key: string]: any; -}, keysToOmit: string[]): { - [key: string]: any; -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts deleted file mode 100644 index 92d8d85..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function removeUndefinedProperties(obj: any): any; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts deleted file mode 100644 index 5d967ca..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare function parseUrl(template: string): { - expand: (context: object) => string; -}; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/version.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/version.d.ts deleted file mode 100644 index 1dfc475..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "11.0.3"; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts b/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts deleted file mode 100644 index e09354c..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import type { EndpointInterface, RequestParameters, EndpointDefaults } from "@octokit/types"; -export declare function withDefaults(oldDefaults: EndpointDefaults | null, newDefaults: RequestParameters): EndpointInterface; diff --git a/sdks/nodejs/node_modules/@octokit/endpoint/package.json b/sdks/nodejs/node_modules/@octokit/endpoint/package.json deleted file mode 100644 index e323231..0000000 --- a/sdks/nodejs/node_modules/@octokit/endpoint/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "@octokit/endpoint", - "version": "11.0.3", - "type": "module", - "publishConfig": { - "access": "public", - "provenance": true - }, - "description": "Turns REST API endpoints into generic request options", - "repository": "github:octokit/endpoint.js", - "keywords": [ - "octokit", - "github", - "api", - "rest" - ], - "author": "Gregor Martynus (https://github.com/gr2m)", - "license": "MIT", - "devDependencies": { - "@octokit/tsconfig": "^4.0.0", - "@types/node": "^24.0.0", - "@vitest/coverage-v8": "^3.0.0", - "esbuild": "^0.27.0", - "tinyglobby": "^0.2.15", - "prettier": "3.6.2", - "semantic-release-plugin-update-version-in-files": "^2.0.0", - "typescript": "^5.0.0", - "vitest": "^3.0.0" - }, - "dependencies": { - "@octokit/types": "^16.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 20" - }, - "files": [ - "dist-*/**", - "bin/**" - ], - "types": "./dist-types/index.d.ts", - "exports": { - ".": { - "types": "./dist-types/index.d.ts", - "import": "./dist-bundle/index.js", - "default": "./dist-bundle/index.js" - } - }, - "sideEffects": false -} diff --git a/sdks/nodejs/node_modules/@octokit/graphql/LICENSE b/sdks/nodejs/node_modules/@octokit/graphql/LICENSE deleted file mode 100644 index af5366d..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@octokit/graphql/README.md b/sdks/nodejs/node_modules/@octokit/graphql/README.md deleted file mode 100644 index 074cb05..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/README.md +++ /dev/null @@ -1,408 +0,0 @@ -# graphql.js - -> GitHub GraphQL API client for browsers and Node - -[![@latest](https://img.shields.io/npm/v/@octokit/graphql.svg)](https://www.npmjs.com/package/@octokit/graphql) -[![Build Status](https://github.com/octokit/graphql.js/workflows/Test/badge.svg)](https://github.com/octokit/graphql.js/actions?query=workflow%3ATest+branch%3Amain) - - - -- [Usage](#usage) - - [Send a simple query](#send-a-simple-query) - - [Authentication](#authentication) - - [Variables](#variables) - - [Pass query together with headers and variables](#pass-query-together-with-headers-and-variables) - - [Use with GitHub Enterprise](#use-with-github-enterprise) - - [Use custom `@octokit/request` instance](#use-custom-octokitrequest-instance) -- [TypeScript](#typescript) - - [Additional Types](#additional-types) -- [Errors](#errors) -- [Partial responses](#partial-responses) -- [Writing tests](#writing-tests) -- [License](#license) - - - -## Usage - - - - - - -
-Browsers - - -Load `@octokit/graphql` directly from [esm.sh](https://esm.sh) - -```html - -``` - -
-Node - - -Install with npm install @octokit/graphql - -```js -import { graphql } from "@octokit/graphql"; -``` - -
- -### Send a simple query - -```js -const { repository } = await graphql( - ` - { - repository(owner: "octokit", name: "graphql.js") { - issues(last: 3) { - edges { - node { - title - } - } - } - } - } - `, - { - headers: { - authorization: `token secret123`, - }, - }, -); -``` - -### Authentication - -The simplest way to authenticate a request is to set the `Authorization` header, e.g. to a [personal access token](https://github.com/settings/tokens/). - -```js -const graphqlWithAuth = graphql.defaults({ - headers: { - authorization: `token secret123`, - }, -}); -const { repository } = await graphqlWithAuth(` - { - repository(owner: "octokit", name: "graphql.js") { - issues(last: 3) { - edges { - node { - title - } - } - } - } - } -`); -``` - -For more complex authentication strategies such as GitHub Apps or Basic, we recommend the according authentication library exported by [`@octokit/auth`](https://github.com/octokit/auth.js). - -```js -const { createAppAuth } = await import("@octokit/auth-app"); -const auth = createAppAuth({ - appId: process.env.APP_ID, - privateKey: process.env.PRIVATE_KEY, - installationId: 123, -}); -const graphqlWithAuth = graphql.defaults({ - request: { - hook: auth.hook, - }, -}); - -const { repository } = await graphqlWithAuth( - `{ - repository(owner: "octokit", name: "graphql.js") { - issues(last: 3) { - edges { - node { - title - } - } - } - } - }`, -); -``` - -### Variables - -⚠️ Do not use [template literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) in the query strings as they make your code vulnerable to query injection attacks (see [#2](https://github.com/octokit/graphql.js/issues/2)). Use variables instead: - -```js -const { repository } = await graphql( - ` - query lastIssues($owner: String!, $repo: String!, $num: Int = 3) { - repository(owner: $owner, name: $repo) { - issues(last: $num) { - edges { - node { - title - } - } - } - } - } - `, - { - owner: "octokit", - repo: "graphql.js", - headers: { - authorization: `token secret123`, - }, - }, -); -``` - -### Pass query together with headers and variables - -```js -import { graphql } from("@octokit/graphql"); -const { repository } = await graphql({ - query: `query lastIssues($owner: String!, $repo: String!, $num: Int = 3) { - repository(owner: $owner, name: $repo) { - issues(last: $num) { - edges { - node { - title - } - } - } - } - }`, - owner: "octokit", - repo: "graphql.js", - headers: { - authorization: `token secret123`, - }, -}); -``` - -### Use with GitHub Enterprise - -```js -import { graphql } from "@octokit/graphql"; -graphql = graphql.defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api", - headers: { - authorization: `token secret123`, - }, -}); -const { repository } = await graphql(` - { - repository(owner: "acme-project", name: "acme-repo") { - issues(last: 3) { - edges { - node { - title - } - } - } - } - } -`); -``` - -### Use custom `@octokit/request` instance - -```js -import { request } from "@octokit/request"; -import { withCustomRequest } from "@octokit/graphql"; - -let requestCounter = 0; -const myRequest = request.defaults({ - headers: { - authorization: "bearer secret123", - }, - request: { - hook(request, options) { - requestCounter++; - return request(options); - }, - }, -}); -const myGraphql = withCustomRequest(myRequest); -await request("/"); -await myGraphql(` - { - repository(owner: "acme-project", name: "acme-repo") { - issues(last: 3) { - edges { - node { - title - } - } - } - } - } -`); -// requestCounter is now 2 -``` - -## TypeScript - -`@octokit/graphql` is exposing proper types for its usage with TypeScript projects. - -### Additional Types - -Additionally, `GraphQlQueryResponseData` has been exposed to users: - -```ts -import type { GraphQlQueryResponseData } from "@octokit/graphql"; -``` - -## Errors - -In case of a GraphQL error, `error.message` is set to a combined message describing all errors returned by the endpoint. -All errors can be accessed at `error.errors`. `error.request` has the request options such as query, variables and headers set for easier debugging. - -```js -import { graphql, GraphqlResponseError } from "@octokit/graphql"; -graphql = graphql.defaults({ - headers: { - authorization: `token secret123`, - }, -}); -const query = `{ - viewer { - bioHtml - } -}`; - -try { - const result = await graphql(query); -} catch (error) { - if (error instanceof GraphqlResponseError) { - // do something with the error, allowing you to detect a graphql response error, - // compared to accidentally catching unrelated errors. - - // server responds with an object like the following (as an example) - // class GraphqlResponseError { - // "headers": { - // "status": "403", - // }, - // "data": null, - // "errors": [{ - // "message": "Field 'bioHtml' doesn't exist on type 'User'", - // "locations": [{ - // "line": 3, - // "column": 5 - // }] - // }] - // } - - console.log("Request failed:", error.request); // { query, variables: {}, headers: { authorization: 'token secret123' } } - console.log(error.message); // Field 'bioHtml' doesn't exist on type 'User' - } else { - // handle non-GraphQL error - } -} -``` - -## Partial responses - -A GraphQL query may respond with partial data accompanied by errors. In this case we will throw an error but the partial data will still be accessible through `error.data` - -```js -import { graphql } from "@octokit/graphql"; -graphql = graphql.defaults({ - headers: { - authorization: `token secret123`, - }, -}); -const query = `{ - repository(name: "probot", owner: "probot") { - name - ref(qualifiedName: "master") { - target { - ... on Commit { - history(first: 25, after: "invalid cursor") { - nodes { - message - } - } - } - } - } - } -}`; - -try { - const result = await graphql(query); -} catch (error) { - // server responds with - // { - // "data": { - // "repository": { - // "name": "probot", - // "ref": null - // } - // }, - // "errors": [ - // { - // "type": "INVALID_CURSOR_ARGUMENTS", - // "path": [ - // "repository", - // "ref", - // "target", - // "history" - // ], - // "locations": [ - // { - // "line": 7, - // "column": 11 - // } - // ], - // "message": "`invalid cursor` does not appear to be a valid cursor." - // } - // ] - // } - - console.log("Request failed:", error.request); // { query, variables: {}, headers: { authorization: 'token secret123' } } - console.log(error.message); // `invalid cursor` does not appear to be a valid cursor. - console.log(error.data); // { repository: { name: 'probot', ref: null } } -} -``` - -## Writing tests - -You can pass a replacement for [the built-in fetch implementation](https://github.com/bitinn/node-fetch) as `request.fetch` option. For example, using [fetch-mock](http://www.wheresrhys.co.uk/fetch-mock/) works great to write tests - -```js -import assert from "assert"; -import fetchMock from "fetch-mock"; - -import { graphql } from "@octokit/graphql"; - -graphql("{ viewer { login } }", { - headers: { - authorization: "token secret123", - }, - request: { - fetch: fetchMock - .sandbox() - .post("https://api.github.com/graphql", (url, options) => { - assert.strictEqual(options.headers.authorization, "token secret123"); - assert.strictEqual( - options.body, - '{"query":"{ viewer { login } }"}', - "Sends correct query", - ); - return { data: {} }; - }), - }, -}); -``` - -## License - -[MIT](LICENSE) diff --git a/sdks/nodejs/node_modules/@octokit/graphql/dist-bundle/index.js b/sdks/nodejs/node_modules/@octokit/graphql/dist-bundle/index.js deleted file mode 100644 index da0ade5..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/dist-bundle/index.js +++ /dev/null @@ -1,129 +0,0 @@ -// pkg/dist-src/index.js -import { request } from "@octokit/request"; -import { getUserAgent } from "universal-user-agent"; - -// pkg/dist-src/version.js -var VERSION = "0.0.0-development"; - -// pkg/dist-src/with-defaults.js -import { request as Request2 } from "@octokit/request"; - -// pkg/dist-src/graphql.js -import { request as Request } from "@octokit/request"; - -// pkg/dist-src/error.js -function _buildMessageForResponseErrors(data) { - return `Request failed due to following response errors: -` + data.errors.map((e) => ` - ${e.message}`).join("\n"); -} -var GraphqlResponseError = class extends Error { - constructor(request2, headers, response) { - super(_buildMessageForResponseErrors(response)); - this.request = request2; - this.headers = headers; - this.response = response; - this.errors = response.errors; - this.data = response.data; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } - name = "GraphqlResponseError"; - errors; - data; -}; - -// pkg/dist-src/graphql.js -var NON_VARIABLE_OPTIONS = [ - "method", - "baseUrl", - "url", - "headers", - "request", - "query", - "mediaType", - "operationName" -]; -var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; -var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; -function graphql(request2, query, options) { - if (options) { - if (typeof query === "string" && "query" in options) { - return Promise.reject( - new Error(`[@octokit/graphql] "query" cannot be used as variable name`) - ); - } - for (const key in options) { - if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue; - return Promise.reject( - new Error( - `[@octokit/graphql] "${key}" cannot be used as variable name` - ) - ); - } - } - const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query; - const requestOptions = Object.keys( - parsedOptions - ).reduce((result, key) => { - if (NON_VARIABLE_OPTIONS.includes(key)) { - result[key] = parsedOptions[key]; - return result; - } - if (!result.variables) { - result.variables = {}; - } - result.variables[key] = parsedOptions[key]; - return result; - }, {}); - const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; - if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { - requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); - } - return request2(requestOptions).then((response) => { - if (response.data.errors) { - const headers = {}; - for (const key of Object.keys(response.headers)) { - headers[key] = response.headers[key]; - } - throw new GraphqlResponseError( - requestOptions, - headers, - response.data - ); - } - return response.data.data; - }); -} - -// pkg/dist-src/with-defaults.js -function withDefaults(request2, newDefaults) { - const newRequest = request2.defaults(newDefaults); - const newApi = (query, options) => { - return graphql(newRequest, query, options); - }; - return Object.assign(newApi, { - defaults: withDefaults.bind(null, newRequest), - endpoint: newRequest.endpoint - }); -} - -// pkg/dist-src/index.js -var graphql2 = withDefaults(request, { - headers: { - "user-agent": `octokit-graphql.js/${VERSION} ${getUserAgent()}` - }, - method: "POST", - url: "/graphql" -}); -function withCustomRequest(customRequest) { - return withDefaults(customRequest, { - method: "POST", - url: "/graphql" - }); -} -export { - GraphqlResponseError, - graphql2 as graphql, - withCustomRequest -}; diff --git a/sdks/nodejs/node_modules/@octokit/graphql/dist-bundle/index.js.map b/sdks/nodejs/node_modules/@octokit/graphql/dist-bundle/index.js.map deleted file mode 100644 index 3f41bc3..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/dist-bundle/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../dist-src/index.js", "../dist-src/version.js", "../dist-src/with-defaults.js", "../dist-src/graphql.js", "../dist-src/error.js"], - "sourcesContent": ["import { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version.js\";\nimport { withDefaults } from \"./with-defaults.js\";\nconst graphql = withDefaults(request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nimport { GraphqlResponseError } from \"./error.js\";\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\nexport {\n GraphqlResponseError,\n graphql,\n withCustomRequest\n};\n", "const VERSION = \"0.0.0-development\";\nexport {\n VERSION\n};\n", "import { request as Request } from \"@octokit/request\";\nimport { graphql } from \"./graphql.js\";\nfunction withDefaults(request, newDefaults) {\n const newRequest = request.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: newRequest.endpoint\n });\n}\nexport {\n withDefaults\n};\n", "import { request as Request } from \"@octokit/request\";\nimport { GraphqlResponseError } from \"./error.js\";\nconst NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\",\n \"operationName\"\n];\nconst FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nconst GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(\n new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n );\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;\n return Promise.reject(\n new Error(\n `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n )\n );\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(\n parsedOptions\n ).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(\n requestOptions,\n headers,\n response.data\n );\n }\n return response.data.data;\n });\n}\nexport {\n graphql\n};\n", "function _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nclass GraphqlResponseError extends Error {\n constructor(request, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request;\n this.headers = headers;\n this.response = response;\n this.errors = response.errors;\n this.data = response.data;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n name = \"GraphqlResponseError\";\n errors;\n data;\n}\nexport {\n GraphqlResponseError\n};\n"], - "mappings": ";AAAA,SAAS,eAAe;AACxB,SAAS,oBAAoB;;;ACD7B,IAAM,UAAU;;;ACAhB,SAAS,WAAWA,gBAAe;;;ACAnC,SAAS,WAAW,eAAe;;;ACAnC,SAAS,+BAA+B,MAAM;AAC5C,SAAO;AAAA,IACL,KAAK,OAAO,IAAI,CAAC,MAAM,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,IAAI;AACvD;AACA,IAAM,uBAAN,cAAmC,MAAM;AAAA,EACvC,YAAYC,UAAS,SAAS,UAAU;AACtC,UAAM,+BAA+B,QAAQ,CAAC;AAC9C,SAAK,UAAUA;AACf,SAAK,UAAU;AACf,SAAK,WAAW;AAChB,SAAK,SAAS,SAAS;AACvB,SAAK,OAAO,SAAS;AACrB,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,IAChD;AAAA,EACF;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF;;;ADjBA,IAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,6BAA6B,CAAC,SAAS,UAAU,KAAK;AAC5D,IAAM,uBAAuB;AAC7B,SAAS,QAAQC,UAAS,OAAO,SAAS;AACxC,MAAI,SAAS;AACX,QAAI,OAAO,UAAU,YAAY,WAAW,SAAS;AACnD,aAAO,QAAQ;AAAA,QACb,IAAI,MAAM,4DAA4D;AAAA,MACxE;AAAA,IACF;AACA,eAAW,OAAO,SAAS;AACzB,UAAI,CAAC,2BAA2B,SAAS,GAAG,EAAG;AAC/C,aAAO,QAAQ;AAAA,QACb,IAAI;AAAA,UACF,uBAAuB,GAAG;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,gBAAgB,OAAO,UAAU,WAAW,OAAO,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI;AACtF,QAAM,iBAAiB,OAAO;AAAA,IAC5B;AAAA,EACF,EAAE,OAAO,CAAC,QAAQ,QAAQ;AACxB,QAAI,qBAAqB,SAAS,GAAG,GAAG;AACtC,aAAO,GAAG,IAAI,cAAc,GAAG;AAC/B,aAAO;AAAA,IACT;AACA,QAAI,CAAC,OAAO,WAAW;AACrB,aAAO,YAAY,CAAC;AAAA,IACtB;AACA,WAAO,UAAU,GAAG,IAAI,cAAc,GAAG;AACzC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,QAAM,UAAU,cAAc,WAAWA,SAAQ,SAAS,SAAS;AACnE,MAAI,qBAAqB,KAAK,OAAO,GAAG;AACtC,mBAAe,MAAM,QAAQ,QAAQ,sBAAsB,cAAc;AAAA,EAC3E;AACA,SAAOA,SAAQ,cAAc,EAAE,KAAK,CAAC,aAAa;AAChD,QAAI,SAAS,KAAK,QAAQ;AACxB,YAAM,UAAU,CAAC;AACjB,iBAAW,OAAO,OAAO,KAAK,SAAS,OAAO,GAAG;AAC/C,gBAAQ,GAAG,IAAI,SAAS,QAAQ,GAAG;AAAA,MACrC;AACA,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS,KAAK;AAAA,EACvB,CAAC;AACH;;;AD5DA,SAAS,aAAaC,UAAS,aAAa;AAC1C,QAAM,aAAaA,SAAQ,SAAS,WAAW;AAC/C,QAAM,SAAS,CAAC,OAAO,YAAY;AACjC,WAAO,QAAQ,YAAY,OAAO,OAAO;AAAA,EAC3C;AACA,SAAO,OAAO,OAAO,QAAQ;AAAA,IAC3B,UAAU,aAAa,KAAK,MAAM,UAAU;AAAA,IAC5C,UAAU,WAAW;AAAA,EACvB,CAAC;AACH;;;AFPA,IAAMC,WAAU,aAAa,SAAS;AAAA,EACpC,SAAS;AAAA,IACP,cAAc,sBAAsB,OAAO,IAAI,aAAa,CAAC;AAAA,EAC/D;AAAA,EACA,QAAQ;AAAA,EACR,KAAK;AACP,CAAC;AAED,SAAS,kBAAkB,eAAe;AACxC,SAAO,aAAa,eAAe;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,EACP,CAAC;AACH;", - "names": ["Request", "request", "request", "request", "graphql"] -} diff --git a/sdks/nodejs/node_modules/@octokit/graphql/dist-src/error.js b/sdks/nodejs/node_modules/@octokit/graphql/dist-src/error.js deleted file mode 100644 index e899b5a..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/dist-src/error.js +++ /dev/null @@ -1,23 +0,0 @@ -function _buildMessageForResponseErrors(data) { - return `Request failed due to following response errors: -` + data.errors.map((e) => ` - ${e.message}`).join("\n"); -} -class GraphqlResponseError extends Error { - constructor(request, headers, response) { - super(_buildMessageForResponseErrors(response)); - this.request = request; - this.headers = headers; - this.response = response; - this.errors = response.errors; - this.data = response.data; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } - name = "GraphqlResponseError"; - errors; - data; -} -export { - GraphqlResponseError -}; diff --git a/sdks/nodejs/node_modules/@octokit/graphql/dist-src/graphql.js b/sdks/nodejs/node_modules/@octokit/graphql/dist-src/graphql.js deleted file mode 100644 index 391a594..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/dist-src/graphql.js +++ /dev/null @@ -1,66 +0,0 @@ -import { request as Request } from "@octokit/request"; -import { GraphqlResponseError } from "./error.js"; -const NON_VARIABLE_OPTIONS = [ - "method", - "baseUrl", - "url", - "headers", - "request", - "query", - "mediaType", - "operationName" -]; -const FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; -const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; -function graphql(request, query, options) { - if (options) { - if (typeof query === "string" && "query" in options) { - return Promise.reject( - new Error(`[@octokit/graphql] "query" cannot be used as variable name`) - ); - } - for (const key in options) { - if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue; - return Promise.reject( - new Error( - `[@octokit/graphql] "${key}" cannot be used as variable name` - ) - ); - } - } - const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query; - const requestOptions = Object.keys( - parsedOptions - ).reduce((result, key) => { - if (NON_VARIABLE_OPTIONS.includes(key)) { - result[key] = parsedOptions[key]; - return result; - } - if (!result.variables) { - result.variables = {}; - } - result.variables[key] = parsedOptions[key]; - return result; - }, {}); - const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl; - if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { - requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); - } - return request(requestOptions).then((response) => { - if (response.data.errors) { - const headers = {}; - for (const key of Object.keys(response.headers)) { - headers[key] = response.headers[key]; - } - throw new GraphqlResponseError( - requestOptions, - headers, - response.data - ); - } - return response.data.data; - }); -} -export { - graphql -}; diff --git a/sdks/nodejs/node_modules/@octokit/graphql/dist-src/index.js b/sdks/nodejs/node_modules/@octokit/graphql/dist-src/index.js deleted file mode 100644 index c3e5446..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/dist-src/index.js +++ /dev/null @@ -1,23 +0,0 @@ -import { request } from "@octokit/request"; -import { getUserAgent } from "universal-user-agent"; -import { VERSION } from "./version.js"; -import { withDefaults } from "./with-defaults.js"; -const graphql = withDefaults(request, { - headers: { - "user-agent": `octokit-graphql.js/${VERSION} ${getUserAgent()}` - }, - method: "POST", - url: "/graphql" -}); -import { GraphqlResponseError } from "./error.js"; -function withCustomRequest(customRequest) { - return withDefaults(customRequest, { - method: "POST", - url: "/graphql" - }); -} -export { - GraphqlResponseError, - graphql, - withCustomRequest -}; diff --git a/sdks/nodejs/node_modules/@octokit/graphql/dist-src/version.js b/sdks/nodejs/node_modules/@octokit/graphql/dist-src/version.js deleted file mode 100644 index c1f302f..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/dist-src/version.js +++ /dev/null @@ -1,4 +0,0 @@ -const VERSION = "9.0.3"; -export { - VERSION -}; diff --git a/sdks/nodejs/node_modules/@octokit/graphql/dist-src/with-defaults.js b/sdks/nodejs/node_modules/@octokit/graphql/dist-src/with-defaults.js deleted file mode 100644 index 2e7dd58..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/dist-src/with-defaults.js +++ /dev/null @@ -1,15 +0,0 @@ -import { request as Request } from "@octokit/request"; -import { graphql } from "./graphql.js"; -function withDefaults(request, newDefaults) { - const newRequest = request.defaults(newDefaults); - const newApi = (query, options) => { - return graphql(newRequest, query, options); - }; - return Object.assign(newApi, { - defaults: withDefaults.bind(null, newRequest), - endpoint: newRequest.endpoint - }); -} -export { - withDefaults -}; diff --git a/sdks/nodejs/node_modules/@octokit/graphql/dist-types/error.d.ts b/sdks/nodejs/node_modules/@octokit/graphql/dist-types/error.d.ts deleted file mode 100644 index 722b9e0..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/dist-types/error.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { ResponseHeaders } from "@octokit/types"; -import type { GraphQlEndpointOptions, GraphQlQueryResponse } from "./types.js"; -type ServerResponseData = Required>; -export declare class GraphqlResponseError extends Error { - readonly request: GraphQlEndpointOptions; - readonly headers: ResponseHeaders; - readonly response: ServerResponseData; - name: string; - readonly errors: GraphQlQueryResponse["errors"]; - readonly data: ResponseData; - constructor(request: GraphQlEndpointOptions, headers: ResponseHeaders, response: ServerResponseData); -} -export {}; diff --git a/sdks/nodejs/node_modules/@octokit/graphql/dist-types/graphql.d.ts b/sdks/nodejs/node_modules/@octokit/graphql/dist-types/graphql.d.ts deleted file mode 100644 index f21fe22..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/dist-types/graphql.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { request as Request } from "@octokit/request"; -import type { RequestParameters, GraphQlQueryResponseData } from "./types.js"; -export declare function graphql(request: typeof Request, query: string | RequestParameters, options?: RequestParameters): Promise; diff --git a/sdks/nodejs/node_modules/@octokit/graphql/dist-types/index.d.ts b/sdks/nodejs/node_modules/@octokit/graphql/dist-types/index.d.ts deleted file mode 100644 index 94f3bf2..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/dist-types/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { request } from "@octokit/request"; -export declare const graphql: import("./types.js").graphql; -export type { GraphQlQueryResponseData } from "./types.js"; -export { GraphqlResponseError } from "./error.js"; -export declare function withCustomRequest(customRequest: typeof request): import("./types.js").graphql; diff --git a/sdks/nodejs/node_modules/@octokit/graphql/dist-types/types.d.ts b/sdks/nodejs/node_modules/@octokit/graphql/dist-types/types.d.ts deleted file mode 100644 index ceba025..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/dist-types/types.d.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { EndpointOptions, RequestParameters as RequestParametersType, EndpointInterface } from "@octokit/types"; -export type GraphQlEndpointOptions = EndpointOptions & { - variables?: { - [key: string]: unknown; - }; -}; -export type RequestParameters = RequestParametersType; -export type Query = string; -export interface graphql { - /** - * Sends a GraphQL query request based on endpoint options - * The GraphQL query must be specified in `options`. - * - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (options: RequestParameters): GraphQlResponse; - /** - * Sends a GraphQL query request based on endpoint options - * - * @param {string} query GraphQL query. Example: `'query { viewer { login } }'`. - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (query: Query, parameters?: RequestParameters): GraphQlResponse; - /** - * Returns a new `endpoint` with updated route and parameters - */ - defaults: (newDefaults: RequestParameters) => graphql; - /** - * Octokit endpoint API, see {@link https://github.com/octokit/endpoint.js|@octokit/endpoint} - */ - endpoint: EndpointInterface; -} -export type GraphQlResponse = Promise; -export type GraphQlQueryResponseData = { - [key: string]: any; -}; -export type GraphQlQueryResponse = { - data: ResponseData; - errors?: [ - { - type: string; - message: string; - path: [string]; - extensions: { - [key: string]: any; - }; - locations: [ - { - line: number; - column: number; - } - ]; - } - ]; -}; diff --git a/sdks/nodejs/node_modules/@octokit/graphql/dist-types/version.d.ts b/sdks/nodejs/node_modules/@octokit/graphql/dist-types/version.d.ts deleted file mode 100644 index b52078d..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "9.0.3"; diff --git a/sdks/nodejs/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts b/sdks/nodejs/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts deleted file mode 100644 index 9644868..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { request as Request } from "@octokit/request"; -import type { graphql as ApiInterface, RequestParameters } from "./types.js"; -export declare function withDefaults(request: typeof Request, newDefaults: RequestParameters): ApiInterface; diff --git a/sdks/nodejs/node_modules/@octokit/graphql/package.json b/sdks/nodejs/node_modules/@octokit/graphql/package.json deleted file mode 100644 index f212720..0000000 --- a/sdks/nodejs/node_modules/@octokit/graphql/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "@octokit/graphql", - "version": "9.0.3", - "publishConfig": { - "access": "public", - "provenance": true - }, - "type": "module", - "description": "GitHub GraphQL API client for browsers and Node", - "repository": "github:octokit/graphql.js", - "keywords": [ - "octokit", - "github", - "api", - "graphql" - ], - "author": "Gregor Martynus (https://github.com/gr2m)", - "license": "MIT", - "dependencies": { - "@octokit/request": "^10.0.6", - "@octokit/types": "^16.0.0", - "universal-user-agent": "^7.0.0" - }, - "devDependencies": { - "@octokit/tsconfig": "^4.0.0", - "@types/node": "^24.0.0", - "@vitest/coverage-v8": "^3.0.0", - "esbuild": "^0.25.0", - "fetch-mock": "^12.0.0", - "glob": "^11.0.0", - "prettier": "3.6.2", - "semantic-release-plugin-update-version-in-files": "^2.0.0", - "typescript": "^5.3.0", - "vitest": "^3.0.0" - }, - "engines": { - "node": ">= 20" - }, - "files": [ - "dist-*/**", - "bin/**" - ], - "types": "./dist-types/index.d.ts", - "exports": { - ".": { - "types": "./dist-types/index.d.ts", - "import": "./dist-bundle/index.js", - "default": "./dist-bundle/index.js" - }, - "./types": { - "types": "./dist-types/types.d.ts" - } - }, - "sideEffects": false -} diff --git a/sdks/nodejs/node_modules/@octokit/openapi-types/LICENSE b/sdks/nodejs/node_modules/@octokit/openapi-types/LICENSE deleted file mode 100644 index b5642cd..0000000 --- a/sdks/nodejs/node_modules/@octokit/openapi-types/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -Copyright (c) GitHub 2025 - Licensed as MIT. - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@octokit/openapi-types/README.md b/sdks/nodejs/node_modules/@octokit/openapi-types/README.md deleted file mode 100644 index e61ed8d..0000000 --- a/sdks/nodejs/node_modules/@octokit/openapi-types/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# @octokit/openapi-types - -> Generated TypeScript definitions based on GitHub's OpenAPI spec - -This package is continuously updated based on [GitHub's OpenAPI specification](https://github.com/github/rest-api-description/) - -## Usage - -```ts -import { components } from "@octokit/openapi-types"; - -type Repository = components["schemas"]["full-repository"]; -``` - -## License - -[MIT](LICENSE) diff --git a/sdks/nodejs/node_modules/@octokit/openapi-types/package.json b/sdks/nodejs/node_modules/@octokit/openapi-types/package.json deleted file mode 100644 index 822dd9b..0000000 --- a/sdks/nodejs/node_modules/@octokit/openapi-types/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@octokit/openapi-types", - "description": "Generated TypeScript definitions based on GitHub's OpenAPI spec for api.github.com", - "repository": { - "type": "git", - "url": "https://github.com/octokit/openapi-types.ts.git", - "directory": "packages/openapi-types" - }, - "publishConfig": { - "access": "public", - "provenance": true - }, - "version": "27.0.0", - "main": "", - "types": "types.d.ts", - "author": "Gregor Martynus (https://twitter.com/gr2m)", - "license": "MIT", - "octokit": { - "openapi-version": "21.0.0" - } -} diff --git a/sdks/nodejs/node_modules/@octokit/openapi-types/types.d.ts b/sdks/nodejs/node_modules/@octokit/openapi-types/types.d.ts deleted file mode 100644 index 556b090..0000000 --- a/sdks/nodejs/node_modules/@octokit/openapi-types/types.d.ts +++ /dev/null @@ -1,122599 +0,0 @@ -/** - * This file was auto-generated by openapi-typescript. - * Do not make direct changes to the file. - */ - -/** OneOf type helpers */ -type Without = { [P in Exclude]?: never }; -type XOR = T | U extends object - ? (Without & U) | (Without & T) - : T | U; -type OneOf = T extends [infer Only] - ? Only - : T extends [infer A, infer B, ...infer Rest] - ? OneOf<[XOR, ...Rest]> - : never; - -export interface paths { - "/": { - /** - * GitHub API Root - * @description Get Hypermedia links to resources accessible in GitHub's REST API - */ - get: operations["meta/root"]; - }; - "/advisories": { - /** - * List global security advisories - * @description Lists all global security advisories that match the specified parameters. If no other parameters are defined, the request will return only GitHub-reviewed advisories that are not malware. - * - * By default, all responses will exclude advisories for malware, because malware are not standard vulnerabilities. To list advisories for malware, you must include the `type` parameter in your request, with the value `malware`. For more information about the different types of security advisories, see "[About the GitHub Advisory database](https://docs.github.com/code-security/security-advisories/global-security-advisories/about-the-github-advisory-database#about-types-of-security-advisories)." - */ - get: operations["security-advisories/list-global-advisories"]; - }; - "/advisories/{ghsa_id}": { - /** - * Get a global security advisory - * @description Gets a global security advisory using its GitHub Security Advisory (GHSA) identifier. - */ - get: operations["security-advisories/get-global-advisory"]; - }; - "/app": { - /** - * Get the authenticated app - * @description Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations for the authenticated app](https://docs.github.com/rest/apps/apps#list-installations-for-the-authenticated-app)" endpoint. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - get: operations["apps/get-authenticated"]; - }; - "/app-manifests/{code}/conversions": { - /** - * Create a GitHub App from a manifest - * @description Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`. - */ - post: operations["apps/create-from-manifest"]; - }; - "/app/hook/config": { - /** - * Get a webhook configuration for an app - * @description Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - get: operations["apps/get-webhook-config-for-app"]; - /** - * Update a webhook configuration for an app - * @description Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - patch: operations["apps/update-webhook-config-for-app"]; - }; - "/app/hook/deliveries": { - /** - * List deliveries for an app webhook - * @description Returns a list of webhook deliveries for the webhook configured for a GitHub App. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - get: operations["apps/list-webhook-deliveries"]; - }; - "/app/hook/deliveries/{delivery_id}": { - /** - * Get a delivery for an app webhook - * @description Returns a delivery for the webhook configured for a GitHub App. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - get: operations["apps/get-webhook-delivery"]; - }; - "/app/hook/deliveries/{delivery_id}/attempts": { - /** - * Redeliver a delivery for an app webhook - * @description Redeliver a delivery for the webhook configured for a GitHub App. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - post: operations["apps/redeliver-webhook-delivery"]; - }; - "/app/installation-requests": { - /** - * List installation requests for the authenticated app - * @description Lists all the pending installation requests for the authenticated GitHub App. - */ - get: operations["apps/list-installation-requests-for-authenticated-app"]; - }; - "/app/installations": { - /** - * List installations for the authenticated app - * @description You must use a [JWT](https://docs.github.com/enterprise-server@3.9/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - * - * The permissions the installation has are included under the `permissions` key. - */ - get: operations["apps/list-installations"]; - }; - "/app/installations/{installation_id}": { - /** - * Get an installation for the authenticated app - * @description Enables an authenticated GitHub App to find an installation's information using the installation id. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - get: operations["apps/get-installation"]; - /** - * Delete an installation for the authenticated app - * @description Uninstalls a GitHub App on a user, organization, or enterprise account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the "[Suspend an app installation](https://docs.github.com/rest/apps/apps#suspend-an-app-installation)" endpoint. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - delete: operations["apps/delete-installation"]; - }; - "/app/installations/{installation_id}/access_tokens": { - /** - * Create an installation access token for an app - * @description Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access. - * - * Optionally, you can use the `repositories` or `repository_ids` body parameters to specify individual repositories that the installation access token can access. If you don't use `repositories` or `repository_ids` to grant access to specific repositories, the installation access token will have access to all repositories that the installation was granted access to. The installation access token cannot be granted access to repositories that the installation was not granted access to. Up to 500 repositories can be listed in this manner. - * - * Optionally, use the `permissions` body parameter to specify the permissions that the installation access token should have. If `permissions` is not specified, the installation access token will have all of the permissions that were granted to the app. The installation access token cannot be granted permissions that the app was not granted. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - post: operations["apps/create-installation-access-token"]; - }; - "/app/installations/{installation_id}/suspended": { - /** - * Suspend an app installation - * @description Suspends a GitHub App on a user, organization, or enterprise account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - put: operations["apps/suspend-installation"]; - /** - * Unsuspend an app installation - * @description Removes a GitHub App installation suspension. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - delete: operations["apps/unsuspend-installation"]; - }; - "/applications/{client_id}/grant": { - /** - * Delete an app authorization - * @description OAuth and GitHub application owners can revoke a grant for their application and a specific user. You must provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted. - * Deleting an application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). - */ - delete: operations["apps/delete-authorization"]; - }; - "/applications/{client_id}/token": { - /** - * Check a token - * @description OAuth applications and GitHub applications with OAuth authorizations can use this API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. Invalid tokens will return `404 NOT FOUND`. - */ - post: operations["apps/check-token"]; - /** - * Delete an app token - * @description OAuth or GitHub application owners can revoke a single token for an OAuth application or a GitHub application with an OAuth authorization. - */ - delete: operations["apps/delete-token"]; - /** - * Reset a token - * @description OAuth applications and GitHub applications with OAuth authorizations can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. Invalid tokens will return `404 NOT FOUND`. - */ - patch: operations["apps/reset-token"]; - }; - "/applications/{client_id}/token/scoped": { - /** - * Create a scoped access token - * @description Use a non-scoped user access token to create a repository-scoped and/or permission-scoped user access token. You can specify - * which repositories the token can access and which permissions are granted to the - * token. - * - * Invalid tokens will return `404 NOT FOUND`. - */ - post: operations["apps/scope-token"]; - }; - "/apps/{app_slug}": { - /** - * Get an app - * @description > [!NOTE] - * > The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`). - */ - get: operations["apps/get-by-slug"]; - }; - "/assignments/{assignment_id}": { - /** - * Get an assignment - * @description Gets a GitHub Classroom assignment. Assignment will only be returned if the current user is an administrator of the GitHub Classroom for the assignment. - */ - get: operations["classroom/get-an-assignment"]; - }; - "/assignments/{assignment_id}/accepted_assignments": { - /** - * List accepted assignments for an assignment - * @description Lists any assignment repositories that have been created by students accepting a GitHub Classroom assignment. Accepted assignments will only be returned if the current user is an administrator of the GitHub Classroom for the assignment. - */ - get: operations["classroom/list-accepted-assignments-for-an-assignment"]; - }; - "/assignments/{assignment_id}/grades": { - /** - * Get assignment grades - * @description Gets grades for a GitHub Classroom assignment. Grades will only be returned if the current user is an administrator of the GitHub Classroom for the assignment. - */ - get: operations["classroom/get-assignment-grades"]; - }; - "/classrooms": { - /** - * List classrooms - * @description Lists GitHub Classroom classrooms for the current user. Classrooms will only be returned if the current user is an administrator of one or more GitHub Classrooms. - */ - get: operations["classroom/list-classrooms"]; - }; - "/classrooms/{classroom_id}": { - /** - * Get a classroom - * @description Gets a GitHub Classroom classroom for the current user. Classroom will only be returned if the current user is an administrator of the GitHub Classroom. - */ - get: operations["classroom/get-a-classroom"]; - }; - "/classrooms/{classroom_id}/assignments": { - /** - * List assignments for a classroom - * @description Lists GitHub Classroom assignments for a classroom. Assignments will only be returned if the current user is an administrator of the GitHub Classroom. - */ - get: operations["classroom/list-assignments-for-a-classroom"]; - }; - "/codes_of_conduct": { - /** - * Get all codes of conduct - * @description Returns array of all GitHub's codes of conduct. - */ - get: operations["codes-of-conduct/get-all-codes-of-conduct"]; - }; - "/codes_of_conduct/{key}": { - /** - * Get a code of conduct - * @description Returns information about the specified GitHub code of conduct. - */ - get: operations["codes-of-conduct/get-conduct-code"]; - }; - "/credentials/revoke": { - /** - * Revoke a list of credentials - * @description Submit a list of credentials to be revoked. This endpoint is intended to revoke credentials the caller does not own and may have found exposed on GitHub.com or elsewhere. It can also be used for credentials associated with an old user account that you no longer have access to. Credential owners will be notified of the revocation. - * - * This endpoint currently accepts the following credential types: - * - Personal access tokens (classic) - * - Fine-grained personal access tokens - * - * Revoked credentials may impact users on GitHub Free, Pro, & Team and GitHub Enterprise Cloud, and GitHub Enterprise Cloud with Enterprise Managed Users. - * GitHub cannot reactivate any credentials that have been revoked; new credentials will need to be generated. - * - * To prevent abuse, this API is limited to only 60 unauthenticated requests per hour and a max of 1000 tokens per API request. - * - * > [!NOTE] - * > Any authenticated requests will return a 403. - */ - post: operations["credentials/revoke"]; - }; - "/emojis": { - /** - * Get emojis - * @description Lists all the emojis available to use on GitHub. - */ - get: operations["emojis/get"]; - }; - "/enterprises/{enterprise}/code-security/configurations": { - /** - * Get code security configurations for an enterprise - * @description Lists all code security configurations available in an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:enterprise` scope to use this endpoint. - */ - get: operations["code-security/get-configurations-for-enterprise"]; - /** - * Create a code security configuration for an enterprise - * @description Creates a code security configuration in an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - post: operations["code-security/create-configuration-for-enterprise"]; - }; - "/enterprises/{enterprise}/code-security/configurations/defaults": { - /** - * Get default code security configurations for an enterprise - * @description Lists the default code security configurations for an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:enterprise` scope to use this endpoint. - */ - get: operations["code-security/get-default-configurations-for-enterprise"]; - }; - "/enterprises/{enterprise}/code-security/configurations/{configuration_id}": { - /** - * Retrieve a code security configuration of an enterprise - * @description Gets a code security configuration available in an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:enterprise` scope to use this endpoint. - */ - get: operations["code-security/get-single-configuration-for-enterprise"]; - /** - * Delete a code security configuration for an enterprise - * @description Deletes a code security configuration from an enterprise. - * Repositories attached to the configuration will retain their settings but will no longer be associated with - * the configuration. - * - * The authenticated user must be an administrator for the enterprise to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - delete: operations["code-security/delete-configuration-for-enterprise"]; - /** - * Update a custom code security configuration for an enterprise - * @description Updates a code security configuration in an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - patch: operations["code-security/update-enterprise-configuration"]; - }; - "/enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach": { - /** - * Attach an enterprise configuration to repositories - * @description Attaches an enterprise code security configuration to repositories. If the repositories specified are already attached to a configuration, they will be re-attached to the provided configuration. - * - * If insufficient GHAS licenses are available to attach the configuration to a repository, only free features will be enabled. - * - * The authenticated user must be an administrator for the enterprise to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - post: operations["code-security/attach-enterprise-configuration"]; - }; - "/enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults": { - /** - * Set a code security configuration as a default for an enterprise - * @description Sets a code security configuration as a default to be applied to new repositories in your enterprise. - * - * This configuration will be applied by default to the matching repository type when created, but only for organizations within the enterprise that do not already have a default code security configuration set. - * - * The authenticated user must be an administrator for the enterprise to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - put: operations["code-security/set-configuration-as-default-for-enterprise"]; - }; - "/enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories": { - /** - * Get repositories associated with an enterprise code security configuration - * @description Lists the repositories associated with an enterprise code security configuration in an organization. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:enterprise` scope to use this endpoint. - */ - get: operations["code-security/get-repositories-for-enterprise-configuration"]; - }; - "/enterprises/{enterprise}/dependabot/alerts": { - /** - * List Dependabot alerts for an enterprise - * @description Lists Dependabot alerts for repositories that are owned by the specified enterprise. - * - * The authenticated user must be a member of the enterprise to use this endpoint. - * - * Alerts are only returned for organizations in the enterprise for which you are an organization owner or a security manager. For more information about security managers, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. - */ - get: operations["dependabot/list-alerts-for-enterprise"]; - }; - "/enterprises/{enterprise}/teams": { - /** - * List enterprise teams - * @description List all teams in the enterprise for the authenticated user - */ - get: operations["enterprise-teams/list"]; - /** - * Create an enterprise team - * @description To create an enterprise team, the authenticated user must be an owner of the enterprise. - */ - post: operations["enterprise-teams/create"]; - }; - "/enterprises/{enterprise}/teams/{enterprise-team}/memberships": { - /** - * List members in an enterprise team - * @description Lists all team members in an enterprise team. - */ - get: operations["enterprise-team-memberships/list"]; - }; - "/enterprises/{enterprise}/teams/{enterprise-team}/memberships/add": { - /** - * Bulk add team members - * @description Add multiple team members to an enterprise team. - */ - post: operations["enterprise-team-memberships/bulk-add"]; - }; - "/enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove": { - /** - * Bulk remove team members - * @description Remove multiple team members from an enterprise team. - */ - post: operations["enterprise-team-memberships/bulk-remove"]; - }; - "/enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}": { - /** - * Get enterprise team membership - * @description Returns whether the user is a member of the enterprise team. - */ - get: operations["enterprise-team-memberships/get"]; - /** - * Add team member - * @description Add a team member to an enterprise team. - */ - put: operations["enterprise-team-memberships/add"]; - /** - * Remove team membership - * @description Remove membership of a specific user from a particular team in an enterprise. - */ - delete: operations["enterprise-team-memberships/remove"]; - }; - "/enterprises/{enterprise}/teams/{enterprise-team}/organizations": { - /** - * Get organization assignments - * @description Get all organizations assigned to an enterprise team - */ - get: operations["enterprise-team-organizations/get-assignments"]; - }; - "/enterprises/{enterprise}/teams/{enterprise-team}/organizations/add": { - /** - * Add organization assignments - * @description Assign an enterprise team to multiple organizations. - */ - post: operations["enterprise-team-organizations/bulk-add"]; - }; - "/enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove": { - /** - * Remove organization assignments - * @description Unassign an enterprise team from multiple organizations. - */ - post: operations["enterprise-team-organizations/bulk-remove"]; - }; - "/enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}": { - /** - * Get organization assignment - * @description Check if an enterprise team is assigned to an organization - */ - get: operations["enterprise-team-organizations/get-assignment"]; - /** - * Add an organization assignment - * @description Assign an enterprise team to an organization. - */ - put: operations["enterprise-team-organizations/add"]; - /** - * Delete an organization assignment - * @description Unassign an enterprise team from an organization. - */ - delete: operations["enterprise-team-organizations/delete"]; - }; - "/enterprises/{enterprise}/teams/{team_slug}": { - /** - * Get an enterprise team - * @description Gets a team using the team's slug. To create the slug, GitHub replaces special characters in the name string, changes all words to lowercase, and replaces spaces with a `-` separator and adds the "ent:" prefix. For example, "My TEam Näme" would become `ent:my-team-name`. - */ - get: operations["enterprise-teams/get"]; - /** - * Delete an enterprise team - * @description To delete an enterprise team, the authenticated user must be an enterprise owner. - * - * If you are an enterprise owner, deleting an enterprise team will delete all of its IdP mappings as well. - */ - delete: operations["enterprise-teams/delete"]; - /** - * Update an enterprise team - * @description To edit a team, the authenticated user must be an enterprise owner. - */ - patch: operations["enterprise-teams/update"]; - }; - "/events": { - /** - * List public events - * @description > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - get: operations["activity/list-public-events"]; - }; - "/feeds": { - /** - * Get feeds - * @description Lists the feeds available to the authenticated user. The response provides a URL for each feed. You can then get a specific feed by sending a request to one of the feed URLs. - * - * * **Timeline**: The GitHub global public timeline - * * **User**: The public timeline for any user, using `uri_template`. For more information, see "[Hypermedia](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#hypermedia)." - * * **Current user public**: The public timeline for the authenticated user - * * **Current user**: The private timeline for the authenticated user - * * **Current user actor**: The private timeline for activity created by the authenticated user - * * **Current user organizations**: The private timeline for the organizations the authenticated user is a member of. - * * **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub. - * - * By default, timeline resources are returned in JSON. You can specify the `application/atom+xml` type in the `Accept` header to return timeline resources in Atom format. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * > [!NOTE] - * > Private feeds are only returned when [authenticating via Basic Auth](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) since current feed URIs use the older, non revocable auth tokens. - */ - get: operations["activity/get-feeds"]; - }; - "/gists": { - /** - * List gists for the authenticated user - * @description Lists the authenticated user's gists or if called anonymously, this endpoint returns all public gists: - */ - get: operations["gists/list"]; - /** - * Create a gist - * @description Allows you to add a new gist with one or more files. - * - * > [!NOTE] - * > Don't name your files "gistfile" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally. - */ - post: operations["gists/create"]; - }; - "/gists/public": { - /** - * List public gists - * @description List public gists sorted by most recently updated to least recently updated. - * - * Note: With [pagination](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page. - */ - get: operations["gists/list-public"]; - }; - "/gists/starred": { - /** - * List starred gists - * @description List the authenticated user's starred gists: - */ - get: operations["gists/list-starred"]; - }; - "/gists/{gist_id}": { - /** - * Get a gist - * @description Gets a specified gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - get: operations["gists/get"]; - /** Delete a gist */ - delete: operations["gists/delete"]; - /** - * Update a gist - * @description Allows you to update a gist's description and to update, delete, or rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged. - */ - patch: operations["gists/update"]; - }; - "/gists/{gist_id}/comments": { - /** - * List gist comments - * @description Lists the comments on a gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - get: operations["gists/list-comments"]; - /** - * Create a gist comment - * @description Creates a comment on a gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - post: operations["gists/create-comment"]; - }; - "/gists/{gist_id}/comments/{comment_id}": { - /** - * Get a gist comment - * @description Gets a comment on a gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - get: operations["gists/get-comment"]; - /** Delete a gist comment */ - delete: operations["gists/delete-comment"]; - /** - * Update a gist comment - * @description Updates a comment on a gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - patch: operations["gists/update-comment"]; - }; - "/gists/{gist_id}/commits": { - /** List gist commits */ - get: operations["gists/list-commits"]; - }; - "/gists/{gist_id}/forks": { - /** List gist forks */ - get: operations["gists/list-forks"]; - /** Fork a gist */ - post: operations["gists/fork"]; - }; - "/gists/{gist_id}/star": { - /** Check if a gist is starred */ - get: operations["gists/check-is-starred"]; - /** - * Star a gist - * @description Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - put: operations["gists/star"]; - /** Unstar a gist */ - delete: operations["gists/unstar"]; - }; - "/gists/{gist_id}/{sha}": { - /** - * Get a gist revision - * @description Gets a specified gist revision. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - get: operations["gists/get-revision"]; - }; - "/gitignore/templates": { - /** - * Get all gitignore templates - * @description List all templates available to pass as an option when [creating a repository](https://docs.github.com/rest/repos/repos#create-a-repository-for-the-authenticated-user). - */ - get: operations["gitignore/get-all-templates"]; - }; - "/gitignore/templates/{name}": { - /** - * Get a gitignore template - * @description Get the content of a gitignore template. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw .gitignore contents. - */ - get: operations["gitignore/get-template"]; - }; - "/installation/repositories": { - /** - * List repositories accessible to the app installation - * @description List repositories that an app installation can access. - */ - get: operations["apps/list-repos-accessible-to-installation"]; - }; - "/installation/token": { - /** - * Revoke an installation access token - * @description Revokes the installation token you're using to authenticate as an installation and access this endpoint. - * - * Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the "[Create an installation access token for an app](https://docs.github.com/rest/apps/apps#create-an-installation-access-token-for-an-app)" endpoint. - */ - delete: operations["apps/revoke-installation-access-token"]; - }; - "/issues": { - /** - * List issues assigned to the authenticated user - * @description List issues assigned to the authenticated user across all visible repositories including owned repositories, member - * repositories, and organization repositories. You can use the `filter` query parameter to fetch issues that are not - * necessarily assigned to you. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["issues/list"]; - }; - "/licenses": { - /** - * Get all commonly used licenses - * @description Lists the most commonly used licenses on GitHub. For more information, see "[Licensing a repository ](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)." - */ - get: operations["licenses/get-all-commonly-used"]; - }; - "/licenses/{license}": { - /** - * Get a license - * @description Gets information about a specific license. For more information, see "[Licensing a repository ](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)." - */ - get: operations["licenses/get"]; - }; - "/markdown": { - /** - * Render a Markdown document - * @description Depending on what is rendered in the Markdown, you may need to provide additional token scopes for labels, such as `issues:read` or `pull_requests:read`. - */ - post: operations["markdown/render"]; - }; - "/markdown/raw": { - /** - * Render a Markdown document in raw mode - * @description You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less. - */ - post: operations["markdown/render-raw"]; - }; - "/marketplace_listing/accounts/{account_id}": { - /** - * Get a subscription plan for an account - * @description Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - get: operations["apps/get-subscription-plan-for-account"]; - }; - "/marketplace_listing/plans": { - /** - * List plans - * @description Lists all plans that are part of your GitHub Marketplace listing. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - get: operations["apps/list-plans"]; - }; - "/marketplace_listing/plans/{plan_id}/accounts": { - /** - * List accounts for a plan - * @description Returns user and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - get: operations["apps/list-accounts-for-plan"]; - }; - "/marketplace_listing/stubbed/accounts/{account_id}": { - /** - * Get a subscription plan for an account (stubbed) - * @description Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - get: operations["apps/get-subscription-plan-for-account-stubbed"]; - }; - "/marketplace_listing/stubbed/plans": { - /** - * List plans (stubbed) - * @description Lists all plans that are part of your GitHub Marketplace listing. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - get: operations["apps/list-plans-stubbed"]; - }; - "/marketplace_listing/stubbed/plans/{plan_id}/accounts": { - /** - * List accounts for a plan (stubbed) - * @description Returns repository and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - get: operations["apps/list-accounts-for-plan-stubbed"]; - }; - "/meta": { - /** - * Get GitHub meta information - * @description Returns meta information about GitHub, including a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://docs.github.com/articles/about-github-s-ip-addresses/)." - * - * The API's response also includes a list of GitHub's domain names. - * - * The values shown in the documentation's response are example values. You must always query the API directly to get the latest values. - * - * > [!NOTE] - * > This endpoint returns both IPv4 and IPv6 addresses. However, not all features support IPv6. You should refer to the specific documentation for each feature to determine if IPv6 is supported. - */ - get: operations["meta/get"]; - }; - "/networks/{owner}/{repo}/events": { - /** - * List public events for a network of repositories - * @description > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - get: operations["activity/list-public-events-for-repo-network"]; - }; - "/notifications": { - /** - * List notifications for the authenticated user - * @description List all notifications for the current user, sorted by most recently updated. - */ - get: operations["activity/list-notifications-for-authenticated-user"]; - /** - * Mark notifications as read - * @description Marks all notifications as "read" for the current user. If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List notifications for the authenticated user](https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. - */ - put: operations["activity/mark-notifications-as-read"]; - }; - "/notifications/threads/{thread_id}": { - /** - * Get a thread - * @description Gets information about a notification thread. - */ - get: operations["activity/get-thread"]; - /** - * Mark a thread as done - * @description Marks a thread as "done." Marking a thread as "done" is equivalent to marking a notification in your notification inbox on GitHub as done: https://github.com/notifications. - */ - delete: operations["activity/mark-thread-as-done"]; - /** - * Mark a thread as read - * @description Marks a thread as "read." Marking a thread as "read" is equivalent to clicking a notification in your notification inbox on GitHub: https://github.com/notifications. - */ - patch: operations["activity/mark-thread-as-read"]; - }; - "/notifications/threads/{thread_id}/subscription": { - /** - * Get a thread subscription for the authenticated user - * @description This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://docs.github.com/rest/activity/watching#get-a-repository-subscription). - * - * Note that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread. - */ - get: operations["activity/get-thread-subscription-for-authenticated-user"]; - /** - * Set a thread subscription - * @description If you are watching a repository, you receive notifications for all threads by default. Use this endpoint to ignore future notifications for threads until you comment on the thread or get an **@mention**. - * - * You can also use this endpoint to subscribe to threads that you are currently not receiving notifications for or to subscribed to threads that you have previously ignored. - * - * Unsubscribing from a conversation in a repository that you are not watching is functionally equivalent to the [Delete a thread subscription](https://docs.github.com/rest/activity/notifications#delete-a-thread-subscription) endpoint. - */ - put: operations["activity/set-thread-subscription"]; - /** - * Delete a thread subscription - * @description Mutes all future notifications for a conversation until you comment on the thread or get an **@mention**. If you are watching the repository of the thread, you will still receive notifications. To ignore future notifications for a repository you are watching, use the [Set a thread subscription](https://docs.github.com/rest/activity/notifications#set-a-thread-subscription) endpoint and set `ignore` to `true`. - */ - delete: operations["activity/delete-thread-subscription"]; - }; - "/octocat": { - /** - * Get Octocat - * @description Get the octocat as ASCII art - */ - get: operations["meta/get-octocat"]; - }; - "/organizations": { - /** - * List organizations - * @description Lists all organizations, in the order that they were created. - * - * > [!NOTE] - * > Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of organizations. - */ - get: operations["orgs/list"]; - }; - "/organizations/{org}/dependabot/repository-access": { - /** - * Lists the repositories Dependabot can access in an organization - * @description Lists repositories that organization admins have allowed Dependabot to access when updating dependencies. - * > [!NOTE] - * > This operation supports both server-to-server and user-to-server access. - * Unauthorized users will not see the existence of this endpoint. - */ - get: operations["dependabot/repository-access-for-org"]; - /** - * Updates Dependabot's repository access list for an organization - * @description Updates repositories according to the list of repositories that organization admins have given Dependabot access to when they've updated dependencies. - * - * > [!NOTE] - * > This operation supports both server-to-server and user-to-server access. - * Unauthorized users will not see the existence of this endpoint. - * - * **Example request body:** - * ```json - * { - * "repository_ids_to_add": [123, 456], - * "repository_ids_to_remove": [789] - * } - * ``` - */ - patch: operations["dependabot/update-repository-access-for-org"]; - }; - "/organizations/{org}/dependabot/repository-access/default-level": { - /** - * Set the default repository access level for Dependabot - * @description Sets the default level of repository access Dependabot will have while performing an update. Available values are: - * - 'public' - Dependabot will only have access to public repositories, unless access is explicitly granted to non-public repositories. - * - 'internal' - Dependabot will only have access to public and internal repositories, unless access is explicitly granted to private repositories. - * - * Unauthorized users will not see the existence of this endpoint. - * - * This operation supports both server-to-server and user-to-server access. - */ - put: operations["dependabot/set-repository-access-default-level"]; - }; - "/organizations/{org}/org-properties/values": { - /** - * Get all custom property values for an organization - * @description Gets all custom property values that are set for an organization. - * - * The organization must belong to an enterprise. - * - * Access requirements: - * - Organization admins - * - OAuth tokens and personal access tokens (classic) with the `read:org` scope - * - Actors with the organization-level "read custom properties for an organization" fine-grained permission or above - */ - get: operations["orgs/custom-properties-for-orgs-get-organization-values"]; - /** - * Create or update custom property values for an organization - * @description Create new or update existing custom property values for an organization. - * To remove a custom property value from an organization, set the property value to `null`. - * - * The organization must belong to an enterprise. - * - * Access requirements: - * - Organization admins - * - OAuth tokens and personal access tokens (classic) with the `admin:org` scope - * - Actors with the organization-level "edit custom properties for an organization" fine-grained permission - */ - patch: operations["orgs/custom-properties-for-orgs-create-or-update-organization-values"]; - }; - "/organizations/{org}/settings/billing/premium_request/usage": { - /** - * Get billing premium request usage report for an organization - * @description Gets a report of premium request usage for an organization. To use this endpoint, you must be an administrator of an organization within an enterprise or an organization account. - * - * **Note:** Only data from the past 24 months is accessible via this endpoint. - */ - get: operations["billing/get-github-billing-premium-request-usage-report-org"]; - }; - "/organizations/{org}/settings/billing/usage": { - /** - * Get billing usage report for an organization - * @description Gets a report of the total usage for an organization. To use this endpoint, you must be an administrator of an organization within an enterprise or an organization account. - * - * **Note:** This endpoint is only available to organizations with access to the enhanced billing platform. For more information, see "[About the enhanced billing platform](https://docs.github.com/billing/using-the-new-billing-platform)." - */ - get: operations["billing/get-github-billing-usage-report-org"]; - }; - "/orgs/{org}": { - /** - * Get an organization - * @description Gets information about an organization. - * - * When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, outside collaborators, guest collaborators, repository collaborators, or everyone with access to any repository within the organization to enable [two-factor authentication](https://docs.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/). - * - * To see the full details about an organization, the authenticated user must be an organization owner. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to see the full details about an organization. - * - * To see information about an organization's GitHub plan, GitHub Apps need the `Organization plan` permission. - */ - get: operations["orgs/get"]; - /** - * Delete an organization - * @description Deletes an organization and all its repositories. - * - * The organization login will be unavailable for 90 days after deletion. - * - * Please review the Terms of Service regarding account deletion before using this endpoint: - * - * https://docs.github.com/site-policy/github-terms/github-terms-of-service - */ - delete: operations["orgs/delete"]; - /** - * Update an organization - * @description > [!WARNING] - * > **Closing down notice:** GitHub will replace and discontinue `members_allowed_repository_creation_type` in favor of more granular permissions. The new input parameters are `members_can_create_public_repositories`, `members_can_create_private_repositories` for all organizations and `members_can_create_internal_repositories` for organizations associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes). - * - * > [!WARNING] - * > **Closing down notice:** Code security product enablement for new repositories through the organization API is closing down. Please use [code security configurations](https://docs.github.com/rest/code-security/configurations#set-a-code-security-configuration-as-a-default-for-an-organization) to set defaults instead. For more information on setting a default security configuration, see the [changelog](https://github.blog/changelog/2024-07-09-sunsetting-security-settings-defaults-parameters-in-the-organizations-rest-api/). - * - * Updates the organization's profile and member privileges. - * - * The authenticated user must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` or `repo` scope to use this endpoint. - */ - patch: operations["orgs/update"]; - }; - "/orgs/{org}/actions/cache/usage": { - /** - * Get GitHub Actions cache usage for an organization - * @description Gets the total GitHub Actions cache usage for an organization. - * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. - * - * OAuth tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - get: operations["actions/get-actions-cache-usage-for-org"]; - }; - "/orgs/{org}/actions/cache/usage-by-repository": { - /** - * List repositories with GitHub Actions cache usage for an organization - * @description Lists repositories and their GitHub Actions cache usage for an organization. - * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. - * - * OAuth tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - get: operations["actions/get-actions-cache-usage-by-repo-for-org"]; - }; - "/orgs/{org}/actions/hosted-runners": { - /** - * List GitHub-hosted runners for an organization - * @description Lists all GitHub-hosted runners configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `manage_runner:org` scope to use this endpoint. - */ - get: operations["actions/list-hosted-runners-for-org"]; - /** - * Create a GitHub-hosted runner for an organization - * @description Creates a GitHub-hosted runner for an organization. - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - post: operations["actions/create-hosted-runner-for-org"]; - }; - "/orgs/{org}/actions/hosted-runners/images/custom": { - /** - * List custom images for an organization - * @description List custom images for an organization. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - get: operations["actions/list-custom-images-for-org"]; - }; - "/orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}": { - /** - * Get a custom image definition for GitHub Actions Hosted Runners - * @description Get a custom image definition for GitHub Actions Hosted Runners. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - get: operations["actions/get-custom-image-for-org"]; - /** - * Delete a custom image from the organization - * @description Delete a custom image from the organization. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - delete: operations["actions/delete-custom-image-from-org"]; - }; - "/orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions": { - /** - * List image versions of a custom image for an organization - * @description List image versions of a custom image for an organization. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - get: operations["actions/list-custom-image-versions-for-org"]; - }; - "/orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}": { - /** - * Get an image version of a custom image for GitHub Actions Hosted Runners - * @description Get an image version of a custom image for GitHub Actions Hosted Runners. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - get: operations["actions/get-custom-image-version-for-org"]; - /** - * Delete an image version of custom image from the organization - * @description Delete an image version of custom image from the organization. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - delete: operations["actions/delete-custom-image-version-from-org"]; - }; - "/orgs/{org}/actions/hosted-runners/images/github-owned": { - /** - * Get GitHub-owned images for GitHub-hosted runners in an organization - * @description Get the list of GitHub-owned images available for GitHub-hosted runners for an organization. - */ - get: operations["actions/get-hosted-runners-github-owned-images-for-org"]; - }; - "/orgs/{org}/actions/hosted-runners/images/partner": { - /** - * Get partner images for GitHub-hosted runners in an organization - * @description Get the list of partner images available for GitHub-hosted runners for an organization. - */ - get: operations["actions/get-hosted-runners-partner-images-for-org"]; - }; - "/orgs/{org}/actions/hosted-runners/limits": { - /** - * Get limits on GitHub-hosted runners for an organization - * @description Get the GitHub-hosted runners limits for an organization. - */ - get: operations["actions/get-hosted-runners-limits-for-org"]; - }; - "/orgs/{org}/actions/hosted-runners/machine-sizes": { - /** - * Get GitHub-hosted runners machine specs for an organization - * @description Get the list of machine specs available for GitHub-hosted runners for an organization. - */ - get: operations["actions/get-hosted-runners-machine-specs-for-org"]; - }; - "/orgs/{org}/actions/hosted-runners/platforms": { - /** - * Get platforms for GitHub-hosted runners in an organization - * @description Get the list of platforms available for GitHub-hosted runners for an organization. - */ - get: operations["actions/get-hosted-runners-platforms-for-org"]; - }; - "/orgs/{org}/actions/hosted-runners/{hosted_runner_id}": { - /** - * Get a GitHub-hosted runner for an organization - * @description Gets a GitHub-hosted runner configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - get: operations["actions/get-hosted-runner-for-org"]; - /** - * Delete a GitHub-hosted runner for an organization - * @description Deletes a GitHub-hosted runner for an organization. - */ - delete: operations["actions/delete-hosted-runner-for-org"]; - /** - * Update a GitHub-hosted runner for an organization - * @description Updates a GitHub-hosted runner for an organization. - * OAuth app tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - patch: operations["actions/update-hosted-runner-for-org"]; - }; - "/orgs/{org}/actions/oidc/customization/sub": { - /** - * Get the customization template for an OIDC subject claim for an organization - * @description Gets the customization template for an OpenID Connect (OIDC) subject claim. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - get: operations["oidc/get-oidc-custom-sub-template-for-org"]; - /** - * Set the customization template for an OIDC subject claim for an organization - * @description Creates or updates the customization template for an OpenID Connect (OIDC) subject claim. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - put: operations["oidc/update-oidc-custom-sub-template-for-org"]; - }; - "/orgs/{org}/actions/permissions": { - /** - * Get GitHub Actions permissions for an organization - * @description Gets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["actions/get-github-actions-permissions-organization"]; - /** - * Set GitHub Actions permissions for an organization - * @description Sets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["actions/set-github-actions-permissions-organization"]; - }; - "/orgs/{org}/actions/permissions/artifact-and-log-retention": { - /** - * Get artifact and log retention settings for an organization - * @description Gets artifact and log retention settings for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - get: operations["actions/get-artifact-and-log-retention-settings-organization"]; - /** - * Set artifact and log retention settings for an organization - * @description Sets artifact and log retention settings for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - put: operations["actions/set-artifact-and-log-retention-settings-organization"]; - }; - "/orgs/{org}/actions/permissions/fork-pr-contributor-approval": { - /** - * Get fork PR contributor approval permissions for an organization - * @description Gets the fork PR contributor approval policy for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - get: operations["actions/get-fork-pr-contributor-approval-permissions-organization"]; - /** - * Set fork PR contributor approval permissions for an organization - * @description Sets the fork PR contributor approval policy for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["actions/set-fork-pr-contributor-approval-permissions-organization"]; - }; - "/orgs/{org}/actions/permissions/fork-pr-workflows-private-repos": { - /** - * Get private repo fork PR workflow settings for an organization - * @description Gets the settings for whether workflows from fork pull requests can run on private repositories in an organization. - */ - get: operations["actions/get-private-repo-fork-pr-workflows-settings-organization"]; - /** - * Set private repo fork PR workflow settings for an organization - * @description Sets the settings for whether workflows from fork pull requests can run on private repositories in an organization. - */ - put: operations["actions/set-private-repo-fork-pr-workflows-settings-organization"]; - }; - "/orgs/{org}/actions/permissions/repositories": { - /** - * List selected repositories enabled for GitHub Actions in an organization - * @description Lists the selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["actions/list-selected-repositories-enabled-github-actions-organization"]; - /** - * Set selected repositories enabled for GitHub Actions in an organization - * @description Replaces the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["actions/set-selected-repositories-enabled-github-actions-organization"]; - }; - "/orgs/{org}/actions/permissions/repositories/{repository_id}": { - /** - * Enable a selected repository for GitHub Actions in an organization - * @description Adds a repository to the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["actions/enable-selected-repository-github-actions-organization"]; - /** - * Disable a selected repository for GitHub Actions in an organization - * @description Removes a repository from the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["actions/disable-selected-repository-github-actions-organization"]; - }; - "/orgs/{org}/actions/permissions/selected-actions": { - /** - * Get allowed actions and reusable workflows for an organization - * @description Gets the selected actions and reusable workflows that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["actions/get-allowed-actions-organization"]; - /** - * Set allowed actions and reusable workflows for an organization - * @description Sets the actions and reusable workflows that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["actions/set-allowed-actions-organization"]; - }; - "/orgs/{org}/actions/permissions/self-hosted-runners": { - /** - * Get self-hosted runners settings for an organization - * @description Gets the settings for self-hosted runners for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - get: operations["actions/get-self-hosted-runners-permissions-organization"]; - /** - * Set self-hosted runners settings for an organization - * @description Sets the settings for self-hosted runners for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - put: operations["actions/set-self-hosted-runners-permissions-organization"]; - }; - "/orgs/{org}/actions/permissions/self-hosted-runners/repositories": { - /** - * List repositories allowed to use self-hosted runners in an organization - * @description Lists repositories that are allowed to use self-hosted runners in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - get: operations["actions/list-selected-repositories-self-hosted-runners-organization"]; - /** - * Set repositories allowed to use self-hosted runners in an organization - * @description Sets repositories that are allowed to use self-hosted runners in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - put: operations["actions/set-selected-repositories-self-hosted-runners-organization"]; - }; - "/orgs/{org}/actions/permissions/self-hosted-runners/repositories/{repository_id}": { - /** - * Add a repository to the list of repositories allowed to use self-hosted runners in an organization - * @description Adds a repository to the list of repositories that are allowed to use self-hosted runners in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - put: operations["actions/enable-selected-repository-self-hosted-runners-organization"]; - /** - * Remove a repository from the list of repositories allowed to use self-hosted runners in an organization - * @description Removes a repository from the list of repositories that are allowed to use self-hosted runners in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - delete: operations["actions/disable-selected-repository-self-hosted-runners-organization"]; - }; - "/orgs/{org}/actions/permissions/workflow": { - /** - * Get default workflow permissions for an organization - * @description Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, - * as well as whether GitHub Actions can submit approving pull request reviews. For more information, see - * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["actions/get-github-actions-default-workflow-permissions-organization"]; - /** - * Set default workflow permissions for an organization - * @description Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, and sets if GitHub Actions - * can submit approving pull request reviews. For more information, see - * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["actions/set-github-actions-default-workflow-permissions-organization"]; - }; - "/orgs/{org}/actions/runner-groups": { - /** - * List self-hosted runner groups for an organization - * @description Lists all self-hosted runner groups configured in an organization and inherited from an enterprise. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["actions/list-self-hosted-runner-groups-for-org"]; - /** - * Create a self-hosted runner group for an organization - * @description Creates a new self-hosted runner group for an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - post: operations["actions/create-self-hosted-runner-group-for-org"]; - }; - "/orgs/{org}/actions/runner-groups/{runner_group_id}": { - /** - * Get a self-hosted runner group for an organization - * @description Gets a specific self-hosted runner group for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["actions/get-self-hosted-runner-group-for-org"]; - /** - * Delete a self-hosted runner group from an organization - * @description Deletes a self-hosted runner group for an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["actions/delete-self-hosted-runner-group-from-org"]; - /** - * Update a self-hosted runner group for an organization - * @description Updates the `name` and `visibility` of a self-hosted runner group in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - patch: operations["actions/update-self-hosted-runner-group-for-org"]; - }; - "/orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners": { - /** - * List GitHub-hosted runners in a group for an organization - * @description Lists the GitHub-hosted runners in an organization group. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["actions/list-github-hosted-runners-in-group-for-org"]; - }; - "/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": { - /** - * List repository access to a self-hosted runner group in an organization - * @description Lists the repositories with access to a self-hosted runner group configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["actions/list-repo-access-to-self-hosted-runner-group-in-org"]; - /** - * Set repository access for a self-hosted runner group in an organization - * @description Replaces the list of repositories that have access to a self-hosted runner group configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["actions/set-repo-access-to-self-hosted-runner-group-in-org"]; - }; - "/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}": { - /** - * Add repository access to a self-hosted runner group in an organization - * @description Adds a repository to the list of repositories that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an organization](#create-a-self-hosted-runner-group-for-an-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["actions/add-repo-access-to-self-hosted-runner-group-in-org"]; - /** - * Remove repository access to a self-hosted runner group in an organization - * @description Removes a repository from the list of selected repositories that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an organization](#create-a-self-hosted-runner-group-for-an-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["actions/remove-repo-access-to-self-hosted-runner-group-in-org"]; - }; - "/orgs/{org}/actions/runner-groups/{runner_group_id}/runners": { - /** - * List self-hosted runners in a group for an organization - * @description Lists self-hosted runners that are in a specific organization group. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["actions/list-self-hosted-runners-in-group-for-org"]; - /** - * Set self-hosted runners in a group for an organization - * @description Replaces the list of self-hosted runners that are part of an organization runner group. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["actions/set-self-hosted-runners-in-group-for-org"]; - }; - "/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": { - /** - * Add a self-hosted runner to a group for an organization - * @description Adds a self-hosted runner to a runner group configured in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["actions/add-self-hosted-runner-to-group-for-org"]; - /** - * Remove a self-hosted runner from a group for an organization - * @description Removes a self-hosted runner from a group configured in an organization. The runner is then returned to the default group. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["actions/remove-self-hosted-runner-from-group-for-org"]; - }; - "/orgs/{org}/actions/runners": { - /** - * List self-hosted runners for an organization - * @description Lists all self-hosted runners configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - get: operations["actions/list-self-hosted-runners-for-org"]; - }; - "/orgs/{org}/actions/runners/downloads": { - /** - * List runner applications for an organization - * @description Lists binaries for the runner application that you can download and run. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - get: operations["actions/list-runner-applications-for-org"]; - }; - "/orgs/{org}/actions/runners/generate-jitconfig": { - /** - * Create configuration for a just-in-time runner for an organization - * @description Generates a configuration that can be passed to the runner application at startup. - * - * The authenticated user must have admin access to the organization. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/generate-runner-jitconfig-for-org"]; - }; - "/orgs/{org}/actions/runners/registration-token": { - /** - * Create a registration token for an organization - * @description Returns a token that you can pass to the `config` script. The token expires after one hour. - * - * For example, you can replace `TOKEN` in the following example with the registration token provided by this endpoint to configure your self-hosted runner: - * - * ``` - * ./config.sh --url https://github.com/octo-org --token TOKEN - * ``` - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/create-registration-token-for-org"]; - }; - "/orgs/{org}/actions/runners/remove-token": { - /** - * Create a remove token for an organization - * @description Returns a token that you can pass to the `config` script to remove a self-hosted runner from an organization. The token expires after one hour. - * - * For example, you can replace `TOKEN` in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization: - * - * ``` - * ./config.sh remove --token TOKEN - * ``` - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/create-remove-token-for-org"]; - }; - "/orgs/{org}/actions/runners/{runner_id}": { - /** - * Get a self-hosted runner for an organization - * @description Gets a specific self-hosted runner configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - get: operations["actions/get-self-hosted-runner-for-org"]; - /** - * Delete a self-hosted runner from an organization - * @description Forces the removal of a self-hosted runner from an organization. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/delete-self-hosted-runner-from-org"]; - }; - "/orgs/{org}/actions/runners/{runner_id}/labels": { - /** - * List labels for a self-hosted runner for an organization - * @description Lists all labels for a self-hosted runner configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - get: operations["actions/list-labels-for-self-hosted-runner-for-org"]; - /** - * Set custom labels for a self-hosted runner for an organization - * @description Remove all previous custom labels and set the new custom labels for a specific - * self-hosted runner configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - put: operations["actions/set-custom-labels-for-self-hosted-runner-for-org"]; - /** - * Add custom labels to a self-hosted runner for an organization - * @description Adds custom labels to a self-hosted runner configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - post: operations["actions/add-custom-labels-to-self-hosted-runner-for-org"]; - /** - * Remove all custom labels from a self-hosted runner for an organization - * @description Remove all custom labels from a self-hosted runner configured in an - * organization. Returns the remaining read-only labels from the runner. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - delete: operations["actions/remove-all-custom-labels-from-self-hosted-runner-for-org"]; - }; - "/orgs/{org}/actions/runners/{runner_id}/labels/{name}": { - /** - * Remove a custom label from a self-hosted runner for an organization - * @description Remove a custom label from a self-hosted runner configured - * in an organization. Returns the remaining labels from the runner. - * - * This endpoint returns a `404 Not Found` status if the custom label is not - * present on the runner. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - delete: operations["actions/remove-custom-label-from-self-hosted-runner-for-org"]; - }; - "/orgs/{org}/actions/secrets": { - /** - * List organization secrets - * @description Lists all secrets available in an organization without revealing their - * encrypted values. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - get: operations["actions/list-org-secrets"]; - }; - "/orgs/{org}/actions/secrets/public-key": { - /** - * Get an organization public key - * @description Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. - * - * The authenticated user must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-org-public-key"]; - }; - "/orgs/{org}/actions/secrets/{secret_name}": { - /** - * Get an organization secret - * @description Gets a single organization secret without revealing its encrypted value. - * - * The authenticated user must have collaborator access to a repository to create, update, or read secrets - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-org-secret"]; - /** - * Create or update an organization secret - * @description Creates or updates an organization secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access - * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to - * use this endpoint. - * - * #### Example encrypting a secret using Node.js - * - * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. - * - * ``` - * const sodium = require('tweetsodium'); - * - * const key = "base64-encoded-public-key"; - * const value = "plain-text-secret"; - * - * // Convert the message and key to Uint8Array's (Buffer implements that interface) - * const messageBytes = Buffer.from(value); - * const keyBytes = Buffer.from(key, 'base64'); - * - * // Encrypt using LibSodium. - * const encryptedBytes = sodium.seal(messageBytes, keyBytes); - * - * // Base64 the encrypted secret - * const encrypted = Buffer.from(encryptedBytes).toString('base64'); - * - * console.log(encrypted); - * ``` - * - * - * #### Example encrypting a secret using Python - * - * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. - * - * ``` - * from base64 import b64encode - * from nacl import encoding, public - * - * def encrypt(public_key: str, secret_value: str) -> str: - * """Encrypt a Unicode string using the public key.""" - * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) - * sealed_box = public.SealedBox(public_key) - * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) - * return b64encode(encrypted).decode("utf-8") - * ``` - * - * #### Example encrypting a secret using C# - * - * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. - * - * ``` - * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); - * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); - * - * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); - * - * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); - * ``` - * - * #### Example encrypting a secret using Ruby - * - * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. - * - * ```ruby - * require "rbnacl" - * require "base64" - * - * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") - * public_key = RbNaCl::PublicKey.new(key) - * - * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) - * encrypted_secret = box.encrypt("my_secret") - * - * # Print the base64 encoded secret - * puts Base64.strict_encode64(encrypted_secret) - * ``` - */ - put: operations["actions/create-or-update-org-secret"]; - /** - * Delete an organization secret - * @description Deletes a secret in an organization using the secret name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/delete-org-secret"]; - }; - "/orgs/{org}/actions/secrets/{secret_name}/repositories": { - /** - * List selected repositories for an organization secret - * @description Lists all repositories that have been selected when the `visibility` - * for repository access to a secret is set to `selected`. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - get: operations["actions/list-selected-repos-for-org-secret"]; - /** - * Set selected repositories for an organization secret - * @description Replaces all repositories for an organization secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret). - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - put: operations["actions/set-selected-repos-for-org-secret"]; - }; - "/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": { - /** - * Add selected repository to an organization secret - * @description Adds a repository to an organization secret when the `visibility` for - * repository access is set to `selected`. For more information about setting the visibility, see [Create or - * update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret). - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/add-selected-repo-to-org-secret"]; - /** - * Remove selected repository from an organization secret - * @description Removes a repository from an organization secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret). - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - delete: operations["actions/remove-selected-repo-from-org-secret"]; - }; - "/orgs/{org}/actions/variables": { - /** - * List organization variables - * @description Lists all organization variables. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - get: operations["actions/list-org-variables"]; - /** - * Create an organization variable - * @description Creates an organization variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/create-org-variable"]; - }; - "/orgs/{org}/actions/variables/{name}": { - /** - * Get an organization variable - * @description Gets a specific variable in an organization. - * - * The authenticated user must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-org-variable"]; - /** - * Delete an organization variable - * @description Deletes an organization variable using the variable name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/delete-org-variable"]; - /** - * Update an organization variable - * @description Updates an organization variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - patch: operations["actions/update-org-variable"]; - }; - "/orgs/{org}/actions/variables/{name}/repositories": { - /** - * List selected repositories for an organization variable - * @description Lists all repositories that can access an organization variable - * that is available to selected repositories. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - get: operations["actions/list-selected-repos-for-org-variable"]; - /** - * Set selected repositories for an organization variable - * @description Replaces all repositories for an organization variable that is available - * to selected repositories. Organization variables that are available to selected - * repositories have their `visibility` field set to `selected`. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - put: operations["actions/set-selected-repos-for-org-variable"]; - }; - "/orgs/{org}/actions/variables/{name}/repositories/{repository_id}": { - /** - * Add selected repository to an organization variable - * @description Adds a repository to an organization variable that is available to selected repositories. - * Organization variables that are available to selected repositories have their `visibility` field set to `selected`. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/add-selected-repo-to-org-variable"]; - /** - * Remove selected repository from an organization variable - * @description Removes a repository from an organization variable that is - * available to selected repositories. Organization variables that are available to - * selected repositories have their `visibility` field set to `selected`. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - delete: operations["actions/remove-selected-repo-from-org-variable"]; - }; - "/orgs/{org}/artifacts/metadata/storage-record": { - /** - * Create artifact metadata storage record - * @description Create metadata storage records for artifacts associated with an organization. - * This endpoint will create a new artifact storage record on behalf of any artifact matching the provided digest and - * associated with a repository owned by the organization. - */ - post: operations["orgs/create-artifact-storage-record"]; - }; - "/orgs/{org}/artifacts/{subject_digest}/metadata/storage-records": { - /** - * List artifact storage records - * @description List a collection of artifact storage records with a given subject digest that are associated with repositories owned by an organization. - * - * The collection of storage records returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `content:read` permission is required. - */ - get: operations["orgs/list-artifact-storage-records"]; - }; - "/orgs/{org}/attestations/bulk-list": { - /** - * List attestations by bulk subject digests - * @description List a collection of artifact attestations associated with any entry in a list of subject digests owned by an organization. - * - * The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - post: operations["orgs/list-attestations-bulk"]; - }; - "/orgs/{org}/attestations/delete-request": { - /** - * Delete attestations in bulk - * @description Delete artifact attestations in bulk by either subject digests or unique ID. - */ - post: operations["orgs/delete-attestations-bulk"]; - }; - "/orgs/{org}/attestations/digest/{subject_digest}": { - /** - * Delete attestations by subject digest - * @description Delete an artifact attestation by subject digest. - */ - delete: operations["orgs/delete-attestations-by-subject-digest"]; - }; - "/orgs/{org}/attestations/repositories": { - /** - * List attestation repositories - * @description List repositories owned by the provided organization that have created at least one attested artifact - * Results will be sorted in ascending order by repository ID - */ - get: operations["orgs/list-attestation-repositories"]; - }; - "/orgs/{org}/attestations/{attestation_id}": { - /** - * Delete attestations by ID - * @description Delete an artifact attestation by unique ID that is associated with a repository owned by an org. - */ - delete: operations["orgs/delete-attestations-by-id"]; - }; - "/orgs/{org}/attestations/{subject_digest}": { - /** - * List attestations - * @description List a collection of artifact attestations with a given subject digest that are associated with repositories owned by an organization. - * - * The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - get: operations["orgs/list-attestations"]; - }; - "/orgs/{org}/blocks": { - /** - * List users blocked by an organization - * @description List the users blocked by an organization. - */ - get: operations["orgs/list-blocked-users"]; - }; - "/orgs/{org}/blocks/{username}": { - /** - * Check if a user is blocked by an organization - * @description Returns a 204 if the given user is blocked by the given organization. Returns a 404 if the organization is not blocking the user, or if the user account has been identified as spam by GitHub. - */ - get: operations["orgs/check-blocked-user"]; - /** - * Block a user from an organization - * @description Blocks the given user on behalf of the specified organization and returns a 204. If the organization cannot block the given user a 422 is returned. - */ - put: operations["orgs/block-user"]; - /** - * Unblock a user from an organization - * @description Unblocks the given user on behalf of the specified organization. - */ - delete: operations["orgs/unblock-user"]; - }; - "/orgs/{org}/campaigns": { - /** - * List campaigns for an organization - * @description Lists campaigns in an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - */ - get: operations["campaigns/list-org-campaigns"]; - /** - * Create a campaign for an organization - * @description Create a campaign for an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - * - * Fine-grained tokens must have the "Code scanning alerts" repository permissions (read) on all repositories included - * in the campaign. - */ - post: operations["campaigns/create-campaign"]; - }; - "/orgs/{org}/campaigns/{campaign_number}": { - /** - * Get a campaign for an organization - * @description Gets a campaign for an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - */ - get: operations["campaigns/get-campaign-summary"]; - /** - * Delete a campaign for an organization - * @description Deletes a campaign in an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - */ - delete: operations["campaigns/delete-campaign"]; - /** - * Update a campaign - * @description Updates a campaign in an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - */ - patch: operations["campaigns/update-campaign"]; - }; - "/orgs/{org}/code-scanning/alerts": { - /** - * List code scanning alerts for an organization - * @description Lists code scanning alerts for the default branch for all eligible repositories in an organization. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` or `repo`s cope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - get: operations["code-scanning/list-alerts-for-org"]; - }; - "/orgs/{org}/code-security/configurations": { - /** - * Get code security configurations for an organization - * @description Lists all code security configurations available in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - get: operations["code-security/get-configurations-for-org"]; - /** - * Create a code security configuration - * @description Creates a code security configuration in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - post: operations["code-security/create-configuration"]; - }; - "/orgs/{org}/code-security/configurations/defaults": { - /** - * Get default code security configurations - * @description Lists the default code security configurations for an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - get: operations["code-security/get-default-configurations"]; - }; - "/orgs/{org}/code-security/configurations/detach": { - /** - * Detach configurations from repositories - * @description Detach code security configuration(s) from a set of repositories. - * Repositories will retain their settings but will no longer be associated with the configuration. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - delete: operations["code-security/detach-configuration"]; - }; - "/orgs/{org}/code-security/configurations/{configuration_id}": { - /** - * Get a code security configuration - * @description Gets a code security configuration available in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - get: operations["code-security/get-configuration"]; - /** - * Delete a code security configuration - * @description Deletes the desired code security configuration from an organization. - * Repositories attached to the configuration will retain their settings but will no longer be associated with - * the configuration. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - delete: operations["code-security/delete-configuration"]; - /** - * Update a code security configuration - * @description Updates a code security configuration in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - patch: operations["code-security/update-configuration"]; - }; - "/orgs/{org}/code-security/configurations/{configuration_id}/attach": { - /** - * Attach a configuration to repositories - * @description Attach a code security configuration to a set of repositories. If the repositories specified are already attached to a configuration, they will be re-attached to the provided configuration. - * - * If insufficient GHAS licenses are available to attach the configuration to a repository, only free features will be enabled. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - post: operations["code-security/attach-configuration"]; - }; - "/orgs/{org}/code-security/configurations/{configuration_id}/defaults": { - /** - * Set a code security configuration as a default for an organization - * @description Sets a code security configuration as a default to be applied to new repositories in your organization. - * - * This configuration will be applied to the matching repository type (all, none, public, private and internal) by default when they are created. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - put: operations["code-security/set-configuration-as-default"]; - }; - "/orgs/{org}/code-security/configurations/{configuration_id}/repositories": { - /** - * Get repositories associated with a code security configuration - * @description Lists the repositories associated with a code security configuration in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - get: operations["code-security/get-repositories-for-configuration"]; - }; - "/orgs/{org}/codespaces": { - /** - * List codespaces for the organization - * @description Lists the codespaces associated to a specified organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["codespaces/list-in-organization"]; - }; - "/orgs/{org}/codespaces/access": { - /** - * Manage access control for organization codespaces - * @deprecated - * @description Sets which users can access codespaces in an organization. This is synonymous with granting or revoking codespaces access permissions for users according to the visibility. - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["codespaces/set-codespaces-access"]; - }; - "/orgs/{org}/codespaces/access/selected_users": { - /** - * Add users to Codespaces access for an organization - * @deprecated - * @description Codespaces for the specified users will be billed to the organization. - * - * To use this endpoint, the access settings for the organization must be set to `selected_members`. - * For information on how to change this setting, see "[Manage access control for organization codespaces](https://docs.github.com/rest/codespaces/organizations#manage-access-control-for-organization-codespaces)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - post: operations["codespaces/set-codespaces-access-users"]; - /** - * Remove users from Codespaces access for an organization - * @deprecated - * @description Codespaces for the specified users will no longer be billed to the organization. - * - * To use this endpoint, the access settings for the organization must be set to `selected_members`. - * For information on how to change this setting, see "[Manage access control for organization codespaces](https://docs.github.com/rest/codespaces/organizations#manage-access-control-for-organization-codespaces)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["codespaces/delete-codespaces-access-users"]; - }; - "/orgs/{org}/codespaces/secrets": { - /** - * List organization secrets - * @description Lists all Codespaces development environment secrets available at the organization-level without revealing their encrypted - * values. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["codespaces/list-org-secrets"]; - }; - "/orgs/{org}/codespaces/secrets/public-key": { - /** - * Get an organization public key - * @description Gets a public key for an organization, which is required in order to encrypt secrets. You need to encrypt the value of a secret before you can create or update secrets. - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["codespaces/get-org-public-key"]; - }; - "/orgs/{org}/codespaces/secrets/{secret_name}": { - /** - * Get an organization secret - * @description Gets an organization development environment secret without revealing its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["codespaces/get-org-secret"]; - /** - * Create or update an organization secret - * @description Creates or updates an organization development environment secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["codespaces/create-or-update-org-secret"]; - /** - * Delete an organization secret - * @description Deletes an organization development environment secret using the secret name. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["codespaces/delete-org-secret"]; - }; - "/orgs/{org}/codespaces/secrets/{secret_name}/repositories": { - /** - * List selected repositories for an organization secret - * @description Lists all repositories that have been selected when the `visibility` - * for repository access to a secret is set to `selected`. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["codespaces/list-selected-repos-for-org-secret"]; - /** - * Set selected repositories for an organization secret - * @description Replaces all repositories for an organization development environment secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["codespaces/set-selected-repos-for-org-secret"]; - }; - "/orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}": { - /** - * Add selected repository to an organization secret - * @description Adds a repository to an organization development environment secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["codespaces/add-selected-repo-to-org-secret"]; - /** - * Remove selected repository from an organization secret - * @description Removes a repository from an organization development environment secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["codespaces/remove-selected-repo-from-org-secret"]; - }; - "/orgs/{org}/copilot/billing": { - /** - * Get Copilot seat information and settings for an organization - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Gets information about an organization's Copilot subscription, including seat breakdown - * and feature policies. To configure these settings, go to your organization's settings on GitHub.com. - * For more information, see "[Managing policies for Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-policies-for-copilot-business-in-your-organization)." - * - * Only organization owners can view details about the organization's Copilot Business or Copilot Enterprise subscription. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `read:org` scopes to use this endpoint. - */ - get: operations["copilot/get-copilot-organization-details"]; - }; - "/orgs/{org}/copilot/billing/seats": { - /** - * List all Copilot seat assignments for an organization - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Lists all Copilot seats for which an organization with a Copilot Business or Copilot Enterprise subscription is currently being billed. - * Only organization owners can view assigned seats. - * - * Each seat object contains information about the assigned user's most recent Copilot activity. Users must have telemetry enabled in their IDE for Copilot in the IDE activity to be reflected in `last_activity_at`. - * For more information about activity data, see [Metrics data properties for GitHub Copilot](https://docs.github.com/copilot/reference/metrics-data). - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `read:org` scopes to use this endpoint. - */ - get: operations["copilot/list-copilot-seats"]; - }; - "/orgs/{org}/copilot/billing/selected_teams": { - /** - * Add teams to the Copilot subscription for an organization - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Purchases a GitHub Copilot seat for all users within each specified team. - * The organization will be billed for each seat based on the organization's Copilot plan. For more information about Copilot pricing, see "[About billing for GitHub Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-the-copilot-subscription-for-your-organization/about-billing-for-github-copilot-in-your-organization)." - * - * Only organization owners can purchase Copilot seats for their organization members. The organization must have a Copilot Business or Copilot Enterprise subscription and a configured suggestion matching policy. - * For more information about setting up a Copilot subscription, see "[Subscribing to Copilot for your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-the-copilot-subscription-for-your-organization/subscribing-to-copilot-for-your-organization)." - * For more information about setting a suggestion matching policy, see "[Managing policies for Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#policies-for-suggestion-matching)." - * - * The response contains the total number of new seats that were created and existing seats that were refreshed. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `admin:org` scopes to use this endpoint. - */ - post: operations["copilot/add-copilot-seats-for-teams"]; - /** - * Remove teams from the Copilot subscription for an organization - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Sets seats for all members of each team specified to "pending cancellation". - * This will cause the members of the specified team(s) to lose access to GitHub Copilot at the end of the current billing cycle unless they retain access through another team. - * For more information about disabling access to Copilot, see "[Revoking access to Copilot for members of your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-access-to-github-copilot-in-your-organization/revoking-access-to-copilot-for-members-of-your-organization)." - * - * Only organization owners can cancel Copilot seats for their organization members. - * - * The response contains the total number of seats set to "pending cancellation". - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `admin:org` scopes to use this endpoint. - */ - delete: operations["copilot/cancel-copilot-seat-assignment-for-teams"]; - }; - "/orgs/{org}/copilot/billing/selected_users": { - /** - * Add users to the Copilot subscription for an organization - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Purchases a GitHub Copilot seat for each user specified. - * The organization will be billed for each seat based on the organization's Copilot plan. For more information about Copilot pricing, see "[About billing for GitHub Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-the-copilot-subscription-for-your-organization/about-billing-for-github-copilot-in-your-organization)." - * - * Only organization owners can purchase Copilot seats for their organization members. The organization must have a Copilot Business or Copilot Enterprise subscription and a configured suggestion matching policy. - * For more information about setting up a Copilot subscription, see "[Subscribing to Copilot for your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-the-copilot-subscription-for-your-organization/subscribing-to-copilot-for-your-organization)." - * For more information about setting a suggestion matching policy, see "[Managing policies for Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#policies-for-suggestion-matching)." - * - * The response contains the total number of new seats that were created and existing seats that were refreshed. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `admin:org` scopes to use this endpoint. - */ - post: operations["copilot/add-copilot-seats-for-users"]; - /** - * Remove users from the Copilot subscription for an organization - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Sets seats for all users specified to "pending cancellation". - * This will cause the specified users to lose access to GitHub Copilot at the end of the current billing cycle unless they retain access through team membership. - * For more information about disabling access to Copilot, see "[Revoking access to Copilot for members of your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-access-to-github-copilot-in-your-organization/revoking-access-to-copilot-for-members-of-your-organization)." - * - * Only organization owners can cancel Copilot seats for their organization members. - * - * The response contains the total number of seats set to "pending cancellation". - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `admin:org` scopes to use this endpoint. - */ - delete: operations["copilot/cancel-copilot-seat-assignment-for-users"]; - }; - "/orgs/{org}/copilot/metrics": { - /** - * Get Copilot metrics for an organization - * @description Use this endpoint to see a breakdown of aggregated metrics for various GitHub Copilot features. See the response schema tab for detailed metrics definitions. - * - * > [!NOTE] - * > This endpoint will only return results for a given day if the organization contained **five or more members with active Copilot licenses** on that day, as evaluated at the end of that day. - * - * The response contains metrics for up to 100 days prior. Metrics are processed once per day for the previous day, - * and the response will only include data up until yesterday. In order for an end user to be counted towards these metrics, - * they must have telemetry enabled in their IDE. - * - * To access this endpoint, the Copilot Metrics API access policy must be enabled for the organization. - * Only organization owners and owners and billing managers of the parent enterprise can view Copilot metrics. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot`, `read:org`, or `read:enterprise` scopes to use this endpoint. - */ - get: operations["copilot/copilot-metrics-for-organization"]; - }; - "/orgs/{org}/dependabot/alerts": { - /** - * List Dependabot alerts for an organization - * @description Lists Dependabot alerts for an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - get: operations["dependabot/list-alerts-for-org"]; - }; - "/orgs/{org}/dependabot/secrets": { - /** - * List organization secrets - * @description Lists all secrets available in an organization without revealing their - * encrypted values. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["dependabot/list-org-secrets"]; - }; - "/orgs/{org}/dependabot/secrets/public-key": { - /** - * Get an organization public key - * @description Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["dependabot/get-org-public-key"]; - }; - "/orgs/{org}/dependabot/secrets/{secret_name}": { - /** - * Get an organization secret - * @description Gets a single organization secret without revealing its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["dependabot/get-org-secret"]; - /** - * Create or update an organization secret - * @description Creates or updates an organization secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access - * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization - * permission to use this endpoint. - * - * #### Example encrypting a secret using Node.js - * - * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. - * - * ``` - * const sodium = require('tweetsodium'); - * - * const key = "base64-encoded-public-key"; - * const value = "plain-text-secret"; - * - * // Convert the message and key to Uint8Array's (Buffer implements that interface) - * const messageBytes = Buffer.from(value); - * const keyBytes = Buffer.from(key, 'base64'); - * - * // Encrypt using LibSodium. - * const encryptedBytes = sodium.seal(messageBytes, keyBytes); - * - * // Base64 the encrypted secret - * const encrypted = Buffer.from(encryptedBytes).toString('base64'); - * - * console.log(encrypted); - * ``` - * - * - * #### Example encrypting a secret using Python - * - * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. - * - * ``` - * from base64 import b64encode - * from nacl import encoding, public - * - * def encrypt(public_key: str, secret_value: str) -> str: - * """Encrypt a Unicode string using the public key.""" - * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) - * sealed_box = public.SealedBox(public_key) - * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) - * return b64encode(encrypted).decode("utf-8") - * ``` - * - * #### Example encrypting a secret using C# - * - * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. - * - * ``` - * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); - * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); - * - * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); - * - * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); - * ``` - * - * #### Example encrypting a secret using Ruby - * - * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. - * - * ```ruby - * require "rbnacl" - * require "base64" - * - * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") - * public_key = RbNaCl::PublicKey.new(key) - * - * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) - * encrypted_secret = box.encrypt("my_secret") - * - * # Print the base64 encoded secret - * puts Base64.strict_encode64(encrypted_secret) - * ``` - */ - put: operations["dependabot/create-or-update-org-secret"]; - /** - * Delete an organization secret - * @description Deletes a secret in an organization using the secret name. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["dependabot/delete-org-secret"]; - }; - "/orgs/{org}/dependabot/secrets/{secret_name}/repositories": { - /** - * List selected repositories for an organization secret - * @description Lists all repositories that have been selected when the `visibility` - * for repository access to a secret is set to `selected`. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["dependabot/list-selected-repos-for-org-secret"]; - /** - * Set selected repositories for an organization secret - * @description Replaces all repositories for an organization secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["dependabot/set-selected-repos-for-org-secret"]; - }; - "/orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}": { - /** - * Add selected repository to an organization secret - * @description Adds a repository to an organization secret when the `visibility` for - * repository access is set to `selected`. The visibility is set when you [Create or - * update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["dependabot/add-selected-repo-to-org-secret"]; - /** - * Remove selected repository from an organization secret - * @description Removes a repository from an organization secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["dependabot/remove-selected-repo-from-org-secret"]; - }; - "/orgs/{org}/docker/conflicts": { - /** - * Get list of conflicting packages during Docker migration for organization - * @description Lists all packages that are in a specific organization, are readable by the requesting user, and that encountered a conflict during a Docker migration. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. - */ - get: operations["packages/list-docker-migration-conflicting-packages-for-organization"]; - }; - "/orgs/{org}/events": { - /** - * List public organization events - * @description > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - get: operations["activity/list-public-org-events"]; - }; - "/orgs/{org}/failed_invitations": { - /** - * List failed organization invitations - * @description The return hash contains `failed_at` and `failed_reason` fields which represent the time at which the invitation failed and the reason for the failure. - */ - get: operations["orgs/list-failed-invitations"]; - }; - "/orgs/{org}/hooks": { - /** - * List organization webhooks - * @description List webhooks for an organization. - * - * The authenticated user must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - get: operations["orgs/list-webhooks"]; - /** - * Create an organization webhook - * @description Create a hook that posts payloads in JSON format. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or - * edit webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - post: operations["orgs/create-webhook"]; - }; - "/orgs/{org}/hooks/{hook_id}": { - /** - * Get an organization webhook - * @description Returns a webhook configured in an organization. To get only the webhook - * `config` properties, see "[Get a webhook configuration for an organization](/rest/orgs/webhooks#get-a-webhook-configuration-for-an-organization). - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - get: operations["orgs/get-webhook"]; - /** - * Delete an organization webhook - * @description Delete a webhook for an organization. - * - * The authenticated user must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - delete: operations["orgs/delete-webhook"]; - /** - * Update an organization webhook - * @description Updates a webhook configured in an organization. When you update a webhook, - * the `secret` will be overwritten. If you previously had a `secret` set, you must - * provide the same `secret` or set a new `secret` or the secret will be removed. If - * you are only updating individual webhook `config` properties, use "[Update a webhook - * configuration for an organization](/rest/orgs/webhooks#update-a-webhook-configuration-for-an-organization)". - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - patch: operations["orgs/update-webhook"]; - }; - "/orgs/{org}/hooks/{hook_id}/config": { - /** - * Get a webhook configuration for an organization - * @description Returns the webhook configuration for an organization. To get more information about the webhook, including the `active` state and `events`, use "[Get an organization webhook ](/rest/orgs/webhooks#get-an-organization-webhook)." - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - get: operations["orgs/get-webhook-config-for-org"]; - /** - * Update a webhook configuration for an organization - * @description Updates the webhook configuration for an organization. To update more information about the webhook, including the `active` state and `events`, use "[Update an organization webhook ](/rest/orgs/webhooks#update-an-organization-webhook)." - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - patch: operations["orgs/update-webhook-config-for-org"]; - }; - "/orgs/{org}/hooks/{hook_id}/deliveries": { - /** - * List deliveries for an organization webhook - * @description Returns a list of webhook deliveries for a webhook configured in an organization. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - get: operations["orgs/list-webhook-deliveries"]; - }; - "/orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}": { - /** - * Get a webhook delivery for an organization webhook - * @description Returns a delivery for a webhook configured in an organization. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - get: operations["orgs/get-webhook-delivery"]; - }; - "/orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts": { - /** - * Redeliver a delivery for an organization webhook - * @description Redeliver a delivery for a webhook configured in an organization. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - post: operations["orgs/redeliver-webhook-delivery"]; - }; - "/orgs/{org}/hooks/{hook_id}/pings": { - /** - * Ping an organization webhook - * @description This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) - * to be sent to the hook. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - post: operations["orgs/ping-webhook"]; - }; - "/orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}": { - /** - * Get route stats by actor - * @description Get API request count statistics for an actor broken down by route within a specified time frame. - */ - get: operations["api-insights/get-route-stats-by-actor"]; - }; - "/orgs/{org}/insights/api/subject-stats": { - /** - * Get subject stats - * @description Get API request statistics for all subjects within an organization within a specified time frame. Subjects can be users or GitHub Apps. - */ - get: operations["api-insights/get-subject-stats"]; - }; - "/orgs/{org}/insights/api/summary-stats": { - /** - * Get summary stats - * @description Get overall statistics of API requests made within an organization by all users and apps within a specified time frame. - */ - get: operations["api-insights/get-summary-stats"]; - }; - "/orgs/{org}/insights/api/summary-stats/users/{user_id}": { - /** - * Get summary stats by user - * @description Get overall statistics of API requests within the organization for a user. - */ - get: operations["api-insights/get-summary-stats-by-user"]; - }; - "/orgs/{org}/insights/api/summary-stats/{actor_type}/{actor_id}": { - /** - * Get summary stats by actor - * @description Get overall statistics of API requests within the organization made by a specific actor. Actors can be GitHub App installations, OAuth apps or other tokens on behalf of a user. - */ - get: operations["api-insights/get-summary-stats-by-actor"]; - }; - "/orgs/{org}/insights/api/time-stats": { - /** - * Get time stats - * @description Get the number of API requests and rate-limited requests made within an organization over a specified time period. - */ - get: operations["api-insights/get-time-stats"]; - }; - "/orgs/{org}/insights/api/time-stats/users/{user_id}": { - /** - * Get time stats by user - * @description Get the number of API requests and rate-limited requests made within an organization by a specific user over a specified time period. - */ - get: operations["api-insights/get-time-stats-by-user"]; - }; - "/orgs/{org}/insights/api/time-stats/{actor_type}/{actor_id}": { - /** - * Get time stats by actor - * @description Get the number of API requests and rate-limited requests made within an organization by a specific actor within a specified time period. - */ - get: operations["api-insights/get-time-stats-by-actor"]; - }; - "/orgs/{org}/insights/api/user-stats/{user_id}": { - /** - * Get user stats - * @description Get API usage statistics within an organization for a user broken down by the type of access. - */ - get: operations["api-insights/get-user-stats"]; - }; - "/orgs/{org}/installation": { - /** - * Get an organization installation for the authenticated app - * @description Enables an authenticated GitHub App to find the organization's installation information. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - get: operations["apps/get-org-installation"]; - }; - "/orgs/{org}/installations": { - /** - * List app installations for an organization - * @description Lists all GitHub Apps in an organization. The installation count includes - * all GitHub Apps installed on repositories in the organization. - * - * The authenticated user must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:read` scope to use this endpoint. - */ - get: operations["orgs/list-app-installations"]; - }; - "/orgs/{org}/interaction-limits": { - /** - * Get interaction restrictions for an organization - * @description Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response. - */ - get: operations["interactions/get-restrictions-for-org"]; - /** - * Set interaction restrictions for an organization - * @description Temporarily restricts interactions to a certain type of GitHub user in any public repository in the given organization. You must be an organization owner to set these restrictions. Setting the interaction limit at the organization level will overwrite any interaction limits that are set for individual repositories owned by the organization. - */ - put: operations["interactions/set-restrictions-for-org"]; - /** - * Remove interaction restrictions for an organization - * @description Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions. - */ - delete: operations["interactions/remove-restrictions-for-org"]; - }; - "/orgs/{org}/invitations": { - /** - * List pending organization invitations - * @description The return hash contains a `role` field which refers to the Organization - * Invitation role and will be one of the following values: `direct_member`, `admin`, - * `billing_manager`, or `hiring_manager`. If the invitee is not a GitHub - * member, the `login` field in the return hash will be `null`. - */ - get: operations["orgs/list-pending-invitations"]; - /** - * Create an organization invitation - * @description Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - */ - post: operations["orgs/create-invitation"]; - }; - "/orgs/{org}/invitations/{invitation_id}": { - /** - * Cancel an organization invitation - * @description Cancel an organization invitation. In order to cancel an organization invitation, the authenticated user must be an organization owner. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). - */ - delete: operations["orgs/cancel-invitation"]; - }; - "/orgs/{org}/invitations/{invitation_id}/teams": { - /** - * List organization invitation teams - * @description List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner. - */ - get: operations["orgs/list-invitation-teams"]; - }; - "/orgs/{org}/issue-types": { - /** - * List issue types for an organization - * @description Lists all issue types for an organization. OAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint. - */ - get: operations["orgs/list-issue-types"]; - /** - * Create issue type for an organization - * @description Create a new issue type for an organization. - * - * You can find out more about issue types in [Managing issue types in an organization](https://docs.github.com/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization). - * - * To use this endpoint, the authenticated user must be an administrator for the organization. OAuth app tokens and - * personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - post: operations["orgs/create-issue-type"]; - }; - "/orgs/{org}/issue-types/{issue_type_id}": { - /** - * Update issue type for an organization - * @description Updates an issue type for an organization. - * - * You can find out more about issue types in [Managing issue types in an organization](https://docs.github.com/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization). - * - * To use this endpoint, the authenticated user must be an administrator for the organization. OAuth app tokens and - * personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["orgs/update-issue-type"]; - /** - * Delete issue type for an organization - * @description Deletes an issue type for an organization. - * - * You can find out more about issue types in [Managing issue types in an organization](https://docs.github.com/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization). - * - * To use this endpoint, the authenticated user must be an administrator for the organization. OAuth app tokens and - * personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["orgs/delete-issue-type"]; - }; - "/orgs/{org}/issues": { - /** - * List organization issues assigned to the authenticated user - * @description List issues in an organization assigned to the authenticated user. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["issues/list-for-org"]; - }; - "/orgs/{org}/members": { - /** - * List organization members - * @description List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned. - */ - get: operations["orgs/list-members"]; - }; - "/orgs/{org}/members/{username}": { - /** - * Check organization membership for a user - * @description Check if a user is, publicly or privately, a member of the organization. - */ - get: operations["orgs/check-membership-for-user"]; - /** - * Remove an organization member - * @description Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories. - * - * > [!NOTE] - * > If a user has both direct membership in the organization as well as indirect membership via an enterprise team, only their direct membership will be removed. Their indirect membership via an enterprise team remains until the user is removed from the enterprise team. - */ - delete: operations["orgs/remove-member"]; - }; - "/orgs/{org}/members/{username}/codespaces": { - /** - * List codespaces for a user in organization - * @description Lists the codespaces that a member of an organization has for repositories in that organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["codespaces/get-codespaces-for-user-in-org"]; - }; - "/orgs/{org}/members/{username}/codespaces/{codespace_name}": { - /** - * Delete a codespace from the organization - * @description Deletes a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["codespaces/delete-from-organization"]; - }; - "/orgs/{org}/members/{username}/codespaces/{codespace_name}/stop": { - /** - * Stop a codespace for an organization user - * @description Stops a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - post: operations["codespaces/stop-in-organization"]; - }; - "/orgs/{org}/members/{username}/copilot": { - /** - * Get Copilot seat assignment details for a user - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Gets the GitHub Copilot seat details for a member of an organization who currently has access to GitHub Copilot. - * - * The seat object contains information about the user's most recent Copilot activity. Users must have telemetry enabled in their IDE for Copilot in the IDE activity to be reflected in `last_activity_at`. - * For more information about activity data, see [Metrics data properties for GitHub Copilot](https://docs.github.com/copilot/reference/metrics-data). - * - * Only organization owners can view Copilot seat assignment details for members of their organization. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `read:org` scopes to use this endpoint. - */ - get: operations["copilot/get-copilot-seat-details-for-user"]; - }; - "/orgs/{org}/memberships/{username}": { - /** - * Get organization membership for a user - * @description In order to get a user's membership with an organization, the authenticated user must be an organization member. The `state` parameter in the response can be used to identify the user's membership status. - */ - get: operations["orgs/get-membership-for-user"]; - /** - * Set organization membership for a user - * @description Only authenticated organization owners can add a member to the organization or update the member's role. - * - * * If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://docs.github.com/rest/orgs/members#get-organization-membership-for-a-user) will be `pending` until they accept the invitation. - * - * * Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent. - * - * **Rate limits** - * - * To prevent abuse, organization owners are limited to creating 50 organization invitations for an organization within a 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period. - */ - put: operations["orgs/set-membership-for-user"]; - /** - * Remove organization membership for a user - * @description In order to remove a user's membership with an organization, the authenticated user must be an organization owner. - * - * If the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases. - * - * > [!NOTE] - * > If a user has both direct membership in the organization as well as indirect membership via an enterprise team, only their direct membership will be removed. Their indirect membership via an enterprise team remains until the user is removed from the enterprise team. - */ - delete: operations["orgs/remove-membership-for-user"]; - }; - "/orgs/{org}/migrations": { - /** - * List organization migrations - * @description Lists the most recent migrations, including both exports (which can be started through the REST API) and imports (which cannot be started using the REST API). - * - * A list of `repositories` is only returned for export migrations. - */ - get: operations["migrations/list-for-org"]; - /** - * Start an organization migration - * @description Initiates the generation of a migration archive. - */ - post: operations["migrations/start-for-org"]; - }; - "/orgs/{org}/migrations/{migration_id}": { - /** - * Get an organization migration status - * @description Fetches the status of a migration. - * - * The `state` of a migration can be one of the following values: - * - * * `pending`, which means the migration hasn't started yet. - * * `exporting`, which means the migration is in progress. - * * `exported`, which means the migration finished successfully. - * * `failed`, which means the migration failed. - */ - get: operations["migrations/get-status-for-org"]; - }; - "/orgs/{org}/migrations/{migration_id}/archive": { - /** - * Download an organization migration archive - * @description Fetches the URL to a migration archive. - */ - get: operations["migrations/download-archive-for-org"]; - /** - * Delete an organization migration archive - * @description Deletes a previous migration archive. Migration archives are automatically deleted after seven days. - */ - delete: operations["migrations/delete-archive-for-org"]; - }; - "/orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock": { - /** - * Unlock an organization repository - * @description Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://docs.github.com/rest/repos/repos#delete-a-repository) when the migration is complete and you no longer need the source data. - */ - delete: operations["migrations/unlock-repo-for-org"]; - }; - "/orgs/{org}/migrations/{migration_id}/repositories": { - /** - * List repositories in an organization migration - * @description List all the repositories for this organization migration. - */ - get: operations["migrations/list-repos-for-org"]; - }; - "/orgs/{org}/organization-roles": { - /** - * Get all organization roles for an organization - * @description Lists the organization roles available in this organization. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * To use this endpoint, the authenticated user must be one of: - * - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permissions of `read_organization_custom_org_role` in the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["orgs/list-org-roles"]; - }; - "/orgs/{org}/organization-roles/teams/{team_slug}": { - /** - * Remove all organization roles for a team - * @description Removes all assigned organization roles from a team. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["orgs/revoke-all-org-roles-team"]; - }; - "/orgs/{org}/organization-roles/teams/{team_slug}/{role_id}": { - /** - * Assign an organization role to a team - * @description Assigns an organization role to a team in an organization. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["orgs/assign-team-to-org-role"]; - /** - * Remove an organization role from a team - * @description Removes an organization role from a team. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["orgs/revoke-org-role-team"]; - }; - "/orgs/{org}/organization-roles/users/{username}": { - /** - * Remove all organization roles for a user - * @description Revokes all assigned organization roles from a user. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["orgs/revoke-all-org-roles-user"]; - }; - "/orgs/{org}/organization-roles/users/{username}/{role_id}": { - /** - * Assign an organization role to a user - * @description Assigns an organization role to a member of an organization. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["orgs/assign-user-to-org-role"]; - /** - * Remove an organization role from a user - * @description Remove an organization role from a user. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["orgs/revoke-org-role-user"]; - }; - "/orgs/{org}/organization-roles/{role_id}": { - /** - * Get an organization role - * @description Gets an organization role that is available to this organization. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * To use this endpoint, the authenticated user must be one of: - * - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permissions of `read_organization_custom_org_role` in the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["orgs/get-org-role"]; - }; - "/orgs/{org}/organization-roles/{role_id}/teams": { - /** - * List teams that are assigned to an organization role - * @description Lists the teams that are assigned to an organization role. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * To use this endpoint, you must be an administrator for the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["orgs/list-org-role-teams"]; - }; - "/orgs/{org}/organization-roles/{role_id}/users": { - /** - * List users that are assigned to an organization role - * @description Lists organization members that are assigned to an organization role. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * To use this endpoint, you must be an administrator for the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["orgs/list-org-role-users"]; - }; - "/orgs/{org}/outside_collaborators": { - /** - * List outside collaborators for an organization - * @description List all users who are outside collaborators of an organization. - */ - get: operations["orgs/list-outside-collaborators"]; - }; - "/orgs/{org}/outside_collaborators/{username}": { - /** - * Convert an organization member to outside collaborator - * @description When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see "[Converting an organization member to an outside collaborator](https://docs.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)". Converting an organization member to an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)." - */ - put: operations["orgs/convert-member-to-outside-collaborator"]; - /** - * Remove outside collaborator from an organization - * @description Removing a user from this list will remove them from all the organization's repositories. - */ - delete: operations["orgs/remove-outside-collaborator"]; - }; - "/orgs/{org}/packages": { - /** - * List packages for an organization - * @description Lists packages in an organization readable by the user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - get: operations["packages/list-packages-for-organization"]; - }; - "/orgs/{org}/packages/{package_type}/{package_name}": { - /** - * Get a package for an organization - * @description Gets a specific package in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - get: operations["packages/get-package-for-organization"]; - /** - * Delete a package for an organization - * @description Deletes an entire package in an organization. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must also have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - delete: operations["packages/delete-package-for-org"]; - }; - "/orgs/{org}/packages/{package_type}/{package_name}/restore": { - /** - * Restore a package for an organization - * @description Restores an entire package in an organization. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must also have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - post: operations["packages/restore-package-for-org"]; - }; - "/orgs/{org}/packages/{package_type}/{package_name}/versions": { - /** - * List package versions for a package owned by an organization - * @description Lists package versions for a package owned by an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - get: operations["packages/get-all-package-versions-for-package-owned-by-org"]; - }; - "/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}": { - /** - * Get a package version for an organization - * @description Gets a specific package version in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - get: operations["packages/get-package-version-for-organization"]; - /** - * Delete package version for an organization - * @description Deletes a specific package version in an organization. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must also have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - delete: operations["packages/delete-package-version-for-org"]; - }; - "/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": { - /** - * Restore package version for an organization - * @description Restores a specific package version in an organization. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must also have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - post: operations["packages/restore-package-version-for-org"]; - }; - "/orgs/{org}/personal-access-token-requests": { - /** - * List requests to access organization resources with fine-grained personal access tokens - * @description Lists requests from organization members to access organization resources with a fine-grained personal access token. - * - * Only GitHub Apps can use this endpoint. - */ - get: operations["orgs/list-pat-grant-requests"]; - /** - * Review requests to access organization resources with fine-grained personal access tokens - * @description Approves or denies multiple pending requests to access organization resources via a fine-grained personal access token. - * - * Only GitHub Apps can use this endpoint. - */ - post: operations["orgs/review-pat-grant-requests-in-bulk"]; - }; - "/orgs/{org}/personal-access-token-requests/{pat_request_id}": { - /** - * Review a request to access organization resources with a fine-grained personal access token - * @description Approves or denies a pending request to access organization resources via a fine-grained personal access token. - * - * Only GitHub Apps can use this endpoint. - */ - post: operations["orgs/review-pat-grant-request"]; - }; - "/orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories": { - /** - * List repositories requested to be accessed by a fine-grained personal access token - * @description Lists the repositories a fine-grained personal access token request is requesting access to. - * - * Only GitHub Apps can use this endpoint. - */ - get: operations["orgs/list-pat-grant-request-repositories"]; - }; - "/orgs/{org}/personal-access-tokens": { - /** - * List fine-grained personal access tokens with access to organization resources - * @description Lists approved fine-grained personal access tokens owned by organization members that can access organization resources. - * - * Only GitHub Apps can use this endpoint. - */ - get: operations["orgs/list-pat-grants"]; - /** - * Update the access to organization resources via fine-grained personal access tokens - * @description Updates the access organization members have to organization resources via fine-grained personal access tokens. Limited to revoking a token's existing access. - * - * Only GitHub Apps can use this endpoint. - */ - post: operations["orgs/update-pat-accesses"]; - }; - "/orgs/{org}/personal-access-tokens/{pat_id}": { - /** - * Update the access a fine-grained personal access token has to organization resources - * @description Updates the access an organization member has to organization resources via a fine-grained personal access token. Limited to revoking the token's existing access. Limited to revoking a token's existing access. - * - * Only GitHub Apps can use this endpoint. - */ - post: operations["orgs/update-pat-access"]; - }; - "/orgs/{org}/personal-access-tokens/{pat_id}/repositories": { - /** - * List repositories a fine-grained personal access token has access to - * @description Lists the repositories a fine-grained personal access token has access to. - * - * Only GitHub Apps can use this endpoint. - */ - get: operations["orgs/list-pat-grant-repositories"]; - }; - "/orgs/{org}/private-registries": { - /** - * List private registries for an organization - * @description - * Lists all private registry configurations available at the organization-level without revealing their encrypted - * values. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["private-registries/list-org-private-registries"]; - /** - * Create a private registry for an organization - * @description - * Creates a private registry configuration with an encrypted value for an organization. Encrypt your secret using [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - post: operations["private-registries/create-org-private-registry"]; - }; - "/orgs/{org}/private-registries/public-key": { - /** - * Get private registries public key for an organization - * @description - * Gets the org public key, which is needed to encrypt private registry secrets. You need to encrypt a secret before you can create or update secrets. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["private-registries/get-org-public-key"]; - }; - "/orgs/{org}/private-registries/{secret_name}": { - /** - * Get a private registry for an organization - * @description - * Get the configuration of a single private registry defined for an organization, omitting its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["private-registries/get-org-private-registry"]; - /** - * Delete a private registry for an organization - * @description - * Delete a private registry configuration at the organization-level. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["private-registries/delete-org-private-registry"]; - /** - * Update a private registry for an organization - * @description - * Updates a private registry configuration with an encrypted value for an organization. Encrypt your secret using [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - patch: operations["private-registries/update-org-private-registry"]; - }; - "/orgs/{org}/projects": { - /** - * List organization projects - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - get: operations["projects-classic/list-for-org"]; - /** - * Create an organization project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - post: operations["projects-classic/create-for-org"]; - }; - "/orgs/{org}/projectsV2": { - /** - * List projects for organization - * @description List all projects owned by a specific organization accessible by the authenticated user. - */ - get: operations["projects/list-for-org"]; - }; - "/orgs/{org}/projectsV2/{project_number}": { - /** - * Get project for organization - * @description Get a specific organization-owned project. - */ - get: operations["projects/get-for-org"]; - }; - "/orgs/{org}/projectsV2/{project_number}/fields": { - /** - * List project fields for organization - * @description List all fields for a specific organization-owned project. - */ - get: operations["projects/list-fields-for-org"]; - }; - "/orgs/{org}/projectsV2/{project_number}/fields/{field_id}": { - /** - * Get project field for organization - * @description Get a specific field for an organization-owned project. - */ - get: operations["projects/get-field-for-org"]; - }; - "/orgs/{org}/projectsV2/{project_number}/items": { - /** - * List items for an organization owned project - * @description List all items for a specific organization-owned project accessible by the authenticated user. - */ - get: operations["projects/list-items-for-org"]; - /** - * Add item to organization owned project - * @description Add an issue or pull request item to the specified organization owned project. - */ - post: operations["projects/add-item-for-org"]; - }; - "/orgs/{org}/projectsV2/{project_number}/items/{item_id}": { - /** - * Get an item for an organization owned project - * @description Get a specific item from an organization-owned project. - */ - get: operations["projects/get-org-item"]; - /** - * Delete project item for organization - * @description Delete a specific item from an organization-owned project. - */ - delete: operations["projects/delete-item-for-org"]; - /** - * Update project item for organization - * @description Update a specific item in an organization-owned project. - */ - patch: operations["projects/update-item-for-org"]; - }; - "/orgs/{org}/properties/schema": { - /** - * Get all custom properties for an organization - * @description Gets all custom properties defined for an organization. - * Organization members can read these properties. - */ - get: operations["orgs/custom-properties-for-repos-get-organization-definitions"]; - /** - * Create or update custom properties for an organization - * @description Creates new or updates existing custom properties defined for an organization in a batch. - * - * If the property already exists, the existing property will be replaced with the new values. - * Missing optional values will fall back to default values, previous values will be overwritten. - * E.g. if a property exists with `values_editable_by: org_and_repo_actors` and it's updated without specifying `values_editable_by`, it will be updated to default value `org_actors`. - * - * To use this endpoint, the authenticated user must be one of: - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permission of `custom_properties_org_definitions_manager` in the organization. - */ - patch: operations["orgs/custom-properties-for-repos-create-or-update-organization-definitions"]; - }; - "/orgs/{org}/properties/schema/{custom_property_name}": { - /** - * Get a custom property for an organization - * @description Gets a custom property that is defined for an organization. - * Organization members can read these properties. - */ - get: operations["orgs/custom-properties-for-repos-get-organization-definition"]; - /** - * Create or update a custom property for an organization - * @description Creates a new or updates an existing custom property that is defined for an organization. - * - * To use this endpoint, the authenticated user must be one of: - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permission of `custom_properties_org_definitions_manager` in the organization. - */ - put: operations["orgs/custom-properties-for-repos-create-or-update-organization-definition"]; - /** - * Remove a custom property for an organization - * @description Removes a custom property that is defined for an organization. - * - * To use this endpoint, the authenticated user must be one of: - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permission of `custom_properties_org_definitions_manager` in the organization. - */ - delete: operations["orgs/custom-properties-for-repos-delete-organization-definition"]; - }; - "/orgs/{org}/properties/values": { - /** - * List custom property values for organization repositories - * @description Lists organization repositories with all of their custom property values. - * Organization members can read these properties. - */ - get: operations["orgs/custom-properties-for-repos-get-organization-values"]; - /** - * Create or update custom property values for organization repositories - * @description Create new or update existing custom property values for repositories in a batch that belong to an organization. - * Each target repository will have its custom property values updated to match the values provided in the request. - * - * A maximum of 30 repositories can be updated in a single request. - * - * Using a value of `null` for a custom property will remove or 'unset' the property value from the repository. - * - * To use this endpoint, the authenticated user must be one of: - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permission of `custom_properties_org_values_editor` in the organization. - */ - patch: operations["orgs/custom-properties-for-repos-create-or-update-organization-values"]; - }; - "/orgs/{org}/public_members": { - /** - * List public organization members - * @description Members of an organization can choose to have their membership publicized or not. - */ - get: operations["orgs/list-public-members"]; - }; - "/orgs/{org}/public_members/{username}": { - /** - * Check public organization membership for a user - * @description Check if the provided user is a public member of the organization. - */ - get: operations["orgs/check-public-membership-for-user"]; - /** - * Set public organization membership for the authenticated user - * @description The user can publicize their own membership. (A user cannot publicize the membership for another user.) - * - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - put: operations["orgs/set-public-membership-for-authenticated-user"]; - /** - * Remove public organization membership for the authenticated user - * @description Removes the public membership for the authenticated user from the specified organization, unless public visibility is enforced by default. - */ - delete: operations["orgs/remove-public-membership-for-authenticated-user"]; - }; - "/orgs/{org}/repos": { - /** - * List organization repositories - * @description Lists repositories for the specified organization. - * - * > [!NOTE] - * > In order to see the `security_and_analysis` block for a repository you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - */ - get: operations["repos/list-for-org"]; - /** - * Create an organization repository - * @description Creates a new repository in the specified organization. The authenticated user must be a member of the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `public_repo` or `repo` scope to create a public repository, and `repo` scope to create a private repository. - */ - post: operations["repos/create-in-org"]; - }; - "/orgs/{org}/rulesets": { - /** - * Get all organization repository rulesets - * @description Get all the repository rulesets for an organization. - */ - get: operations["repos/get-org-rulesets"]; - /** - * Create an organization repository ruleset - * @description Create a repository ruleset for an organization. - */ - post: operations["repos/create-org-ruleset"]; - }; - "/orgs/{org}/rulesets/rule-suites": { - /** - * List organization rule suites - * @description Lists suites of rule evaluations at the organization level. - * For more information, see "[Managing rulesets for repositories in your organization](https://docs.github.com/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization#viewing-insights-for-rulesets)." - */ - get: operations["repos/get-org-rule-suites"]; - }; - "/orgs/{org}/rulesets/rule-suites/{rule_suite_id}": { - /** - * Get an organization rule suite - * @description Gets information about a suite of rule evaluations from within an organization. - * For more information, see "[Managing rulesets for repositories in your organization](https://docs.github.com/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization#viewing-insights-for-rulesets)." - */ - get: operations["repos/get-org-rule-suite"]; - }; - "/orgs/{org}/rulesets/{ruleset_id}": { - /** - * Get an organization repository ruleset - * @description Get a repository ruleset for an organization. - * - * **Note:** To prevent leaking sensitive information, the `bypass_actors` property is only returned if the user - * making the API request has write access to the ruleset. - */ - get: operations["repos/get-org-ruleset"]; - /** - * Update an organization repository ruleset - * @description Update a ruleset for an organization. - */ - put: operations["repos/update-org-ruleset"]; - /** - * Delete an organization repository ruleset - * @description Delete a ruleset for an organization. - */ - delete: operations["repos/delete-org-ruleset"]; - }; - "/orgs/{org}/rulesets/{ruleset_id}/history": { - /** - * Get organization ruleset history - * @description Get the history of an organization ruleset. - */ - get: operations["orgs/get-org-ruleset-history"]; - }; - "/orgs/{org}/rulesets/{ruleset_id}/history/{version_id}": { - /** - * Get organization ruleset version - * @description Get a version of an organization ruleset. - */ - get: operations["orgs/get-org-ruleset-version"]; - }; - "/orgs/{org}/secret-scanning/alerts": { - /** - * List secret scanning alerts for an organization - * @description Lists secret scanning alerts for eligible repositories in an organization, from newest to oldest. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - get: operations["secret-scanning/list-alerts-for-org"]; - }; - "/orgs/{org}/secret-scanning/pattern-configurations": { - /** - * List organization pattern configurations - * @description Lists the secret scanning pattern configurations for an organization. - * - * Personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - get: operations["secret-scanning/list-org-pattern-configs"]; - /** - * Update organization pattern configurations - * @description Updates the secret scanning pattern configurations for an organization. - * - * Personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - patch: operations["secret-scanning/update-org-pattern-configs"]; - }; - "/orgs/{org}/security-advisories": { - /** - * List repository security advisories for an organization - * @description Lists repository security advisories for an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:write` scope to use this endpoint. - */ - get: operations["security-advisories/list-org-repository-advisories"]; - }; - "/orgs/{org}/security-managers": { - /** - * List security manager teams - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed starting January 1, 2026. Please use the "[Organization Roles](https://docs.github.com/rest/orgs/organization-roles)" endpoints instead. - */ - get: operations["orgs/list-security-manager-teams"]; - }; - "/orgs/{org}/security-managers/teams/{team_slug}": { - /** - * Add a security manager team - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed starting January 1, 2026. Please use the "[Organization Roles](https://docs.github.com/rest/orgs/organization-roles)" endpoints instead. - */ - put: operations["orgs/add-security-manager-team"]; - /** - * Remove a security manager team - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed starting January 1, 2026. Please use the "[Organization Roles](https://docs.github.com/rest/orgs/organization-roles)" endpoints instead. - */ - delete: operations["orgs/remove-security-manager-team"]; - }; - "/orgs/{org}/settings/billing/actions": { - /** - * Get GitHub Actions billing for an organization - * @description Gets the summary of the free and paid GitHub Actions minutes used. - * - * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `admin:org` scope to use this endpoint. - */ - get: operations["billing/get-github-actions-billing-org"]; - }; - "/orgs/{org}/settings/billing/packages": { - /** - * Get GitHub Packages billing for an organization - * @description Gets the free and paid storage used for GitHub Packages in gigabytes. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `admin:org` scope to use this endpoint. - */ - get: operations["billing/get-github-packages-billing-org"]; - }; - "/orgs/{org}/settings/billing/shared-storage": { - /** - * Get shared storage billing for an organization - * @description Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `admin:org` scope to use this endpoint. - */ - get: operations["billing/get-shared-storage-billing-org"]; - }; - "/orgs/{org}/settings/immutable-releases": { - /** - * Get immutable releases settings for an organization - * @description Gets the immutable releases policy for repositories in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["orgs/get-immutable-releases-settings"]; - /** - * Set immutable releases settings for an organization - * @description Sets the immutable releases policy for repositories in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["orgs/set-immutable-releases-settings"]; - }; - "/orgs/{org}/settings/immutable-releases/repositories": { - /** - * List selected repositories for immutable releases enforcement - * @description List all of the repositories that have been selected for immutable releases enforcement in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["orgs/get-immutable-releases-settings-repositories"]; - /** - * Set selected repositories for immutable releases enforcement - * @description Replaces all repositories that have been selected for immutable releases enforcement in an organization. To use this endpoint, the organization immutable releases policy for `enforced_repositories` must be configured to `selected`. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["orgs/set-immutable-releases-settings-repositories"]; - }; - "/orgs/{org}/settings/immutable-releases/repositories/{repository_id}": { - /** - * Enable a selected repository for immutable releases in an organization - * @description Adds a repository to the list of selected repositories that are enforced for immutable releases in an organization. To use this endpoint, the organization immutable releases policy for `enforced_repositories` must be configured to `selected`. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - put: operations["orgs/enable-selected-repository-immutable-releases-organization"]; - /** - * Disable a selected repository for immutable releases in an organization - * @description Removes a repository from the list of selected repositories that are enforced for immutable releases in an organization. To use this endpoint, the organization immutable releases policy for `enforced_repositories` must be configured to `selected`. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - delete: operations["orgs/disable-selected-repository-immutable-releases-organization"]; - }; - "/orgs/{org}/settings/network-configurations": { - /** - * List hosted compute network configurations for an organization - * @description Lists all hosted compute network configurations configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:network_configurations` scope to use this endpoint. - */ - get: operations["hosted-compute/list-network-configurations-for-org"]; - /** - * Create a hosted compute network configuration for an organization - * @description Creates a hosted compute network configuration for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `write:network_configurations` scope to use this endpoint. - */ - post: operations["hosted-compute/create-network-configuration-for-org"]; - }; - "/orgs/{org}/settings/network-configurations/{network_configuration_id}": { - /** - * Get a hosted compute network configuration for an organization - * @description Gets a hosted compute network configuration configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:network_configurations` scope to use this endpoint. - */ - get: operations["hosted-compute/get-network-configuration-for-org"]; - /** - * Delete a hosted compute network configuration from an organization - * @description Deletes a hosted compute network configuration from an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `write:network_configurations` scope to use this endpoint. - */ - delete: operations["hosted-compute/delete-network-configuration-from-org"]; - /** - * Update a hosted compute network configuration for an organization - * @description Updates a hosted compute network configuration for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `write:network_configurations` scope to use this endpoint. - */ - patch: operations["hosted-compute/update-network-configuration-for-org"]; - }; - "/orgs/{org}/settings/network-settings/{network_settings_id}": { - /** - * Get a hosted compute network settings resource for an organization - * @description Gets a hosted compute network settings resource configured for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:network_configurations` scope to use this endpoint. - */ - get: operations["hosted-compute/get-network-settings-for-org"]; - }; - "/orgs/{org}/team/{team_slug}/copilot/metrics": { - /** - * Get Copilot metrics for a team - * @description Use this endpoint to see a breakdown of aggregated metrics for various GitHub Copilot features. See the response schema tab for detailed metrics definitions. - * - * > [!NOTE] - * > This endpoint will only return results for a given day if the team had **five or more members with active Copilot licenses** on that day, as evaluated at the end of that day. - * - * The response contains metrics for up to 100 days prior. Metrics are processed once per day for the previous day, - * and the response will only include data up until yesterday. In order for an end user to be counted towards these metrics, - * they must have telemetry enabled in their IDE. - * - * To access this endpoint, the Copilot Metrics API access policy must be enabled for the organization containing the team within GitHub settings. - * Only organization owners for the organization that contains this team and owners and billing managers of the parent enterprise can view Copilot metrics for a team. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot`, `read:org`, or `read:enterprise` scopes to use this endpoint. - */ - get: operations["copilot/copilot-metrics-for-team"]; - }; - "/orgs/{org}/teams": { - /** - * List teams - * @description Lists all teams in an organization that are visible to the authenticated user. - */ - get: operations["teams/list"]; - /** - * Create a team - * @description To create a team, the authenticated user must be a member or owner of `{org}`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see "[Setting team creation permissions](https://docs.github.com/articles/setting-team-creation-permissions-in-your-organization)." - * - * When you create a new team, you automatically become a team maintainer without explicitly adding yourself to the optional array of `maintainers`. For more information, see "[About teams](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/about-teams)". - */ - post: operations["teams/create"]; - }; - "/orgs/{org}/teams/{team_slug}": { - /** - * Get a team by name - * @description Gets a team using the team's `slug`. To create the `slug`, GitHub replaces special characters in the `name` string, changes all words to lowercase, and replaces spaces with a `-` separator. For example, `"My TEam Näme"` would become `my-team-name`. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}`. - */ - get: operations["teams/get-by-name"]; - /** - * Delete a team - * @description To delete a team, the authenticated user must be an organization owner or team maintainer. - * - * If you are an organization owner, deleting a parent team will delete all of its child teams as well. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}`. - */ - delete: operations["teams/delete-in-org"]; - /** - * Update a team - * @description To edit a team, the authenticated user must either be an organization owner or a team maintainer. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}`. - */ - patch: operations["teams/update-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions": { - /** - * List discussions - * @description List all discussions on a team's page. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - get: operations["teams/list-discussions-in-org"]; - /** - * Create a discussion - * @description Creates a new discussion post on a team's page. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - post: operations["teams/create-discussion-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": { - /** - * Get a discussion - * @description Get a specific discussion on a team's page. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - get: operations["teams/get-discussion-in-org"]; - /** - * Delete a discussion - * @description Delete a discussion from a team's page. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - delete: operations["teams/delete-discussion-in-org"]; - /** - * Update a discussion - * @description Edits the title and body text of a discussion post. Only the parameters you provide are updated. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - patch: operations["teams/update-discussion-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": { - /** - * List discussion comments - * @description List all comments on a team discussion. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - get: operations["teams/list-discussion-comments-in-org"]; - /** - * Create a discussion comment - * @description Creates a new comment on a team discussion. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - post: operations["teams/create-discussion-comment-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": { - /** - * Get a discussion comment - * @description Get a specific comment on a team discussion. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - get: operations["teams/get-discussion-comment-in-org"]; - /** - * Delete a discussion comment - * @description Deletes a comment on a team discussion. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - delete: operations["teams/delete-discussion-comment-in-org"]; - /** - * Update a discussion comment - * @description Edits the body text of a discussion comment. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - patch: operations["teams/update-discussion-comment-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": { - /** - * List reactions for a team discussion comment - * @description List the reactions to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - get: operations["reactions/list-for-team-discussion-comment-in-org"]; - /** - * Create reaction for a team discussion comment - * @description Create a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). - * - * A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - post: operations["reactions/create-for-team-discussion-comment-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}": { - /** - * Delete team discussion comment reaction - * @description > [!NOTE] - * > You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id`. - * - * Delete a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - delete: operations["reactions/delete-for-team-discussion-comment"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": { - /** - * List reactions for a team discussion - * @description List the reactions to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - get: operations["reactions/list-for-team-discussion-in-org"]; - /** - * Create reaction for a team discussion - * @description Create a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). - * - * A response with an HTTP `200` status means that you already added the reaction type to this team discussion. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - post: operations["reactions/create-for-team-discussion-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}": { - /** - * Delete team discussion reaction - * @description > [!NOTE] - * > You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions/:reaction_id`. - * - * Delete a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - delete: operations["reactions/delete-for-team-discussion"]; - }; - "/orgs/{org}/teams/{team_slug}/invitations": { - /** - * List pending team invitations - * @description The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/invitations`. - */ - get: operations["teams/list-pending-invitations-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/members": { - /** - * List team members - * @description Team members will include the members of child teams. - * - * To list members in a team, the team must be visible to the authenticated user. - */ - get: operations["teams/list-members-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/memberships/{username}": { - /** - * Get team membership for a user - * @description Team members will include the members of child teams. - * - * To get a user's membership with a team, the team must be visible to the authenticated user. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/memberships/{username}`. - * - * > [!NOTE] - * > The response contains the `state` of the membership and the member's `role`. - * - * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/teams/teams#create-a-team). - */ - get: operations["teams/get-membership-for-user-in-org"]; - /** - * Add or update team membership for a user - * @description Adds an organization member to a team. An authenticated organization owner or team maintainer can add organization members to a team. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * An organization owner can add someone who is not part of the team's organization to a team. When an organization owner adds someone to a team who is not an organization member, this endpoint will send an invitation to the person via email. This newly-created membership will be in the "pending" state until the person accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. - * - * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/memberships/{username}`. - */ - put: operations["teams/add-or-update-membership-for-user-in-org"]; - /** - * Remove team membership for a user - * @description To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/memberships/{username}`. - */ - delete: operations["teams/remove-membership-for-user-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/projects": { - /** - * List team projects - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - get: operations["teams/list-projects-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/projects/{project_id}": { - /** - * Check team permissions for a project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - get: operations["teams/check-permissions-for-project-in-org"]; - /** - * Add or update team project permissions - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - put: operations["teams/add-or-update-project-permissions-in-org"]; - /** - * Remove a project from a team - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - delete: operations["teams/remove-project-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/repos": { - /** - * List team repositories - * @description Lists a team's repositories visible to the authenticated user. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos`. - */ - get: operations["teams/list-repos-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": { - /** - * Check team permissions for a repository - * @description Checks whether a team has `admin`, `push`, `maintain`, `triage`, or `pull` permission for a repository. Repositories inherited through a parent team will also be checked. - * - * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types/) via the `application/vnd.github.v3.repository+json` accept header. - * - * If a team doesn't have permission for the repository, you will receive a `404 Not Found` response status. - * - * If the repository is private, you must have at least `read` permission for that repository, and your token must have the `repo` or `admin:org` scope. Otherwise, you will receive a `404 Not Found` response status. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - */ - get: operations["teams/check-permissions-for-repo-in-org"]; - /** - * Add or update team repository permissions - * @description To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - * - * For more information about the permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". - */ - put: operations["teams/add-or-update-repo-permissions-in-org"]; - /** - * Remove a repository from a team - * @description If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. This does not delete the repository, it just removes it from the team. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - */ - delete: operations["teams/remove-repo-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/teams": { - /** - * List child teams - * @description Lists the child teams of the team specified by `{team_slug}`. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/teams`. - */ - get: operations["teams/list-child-in-org"]; - }; - "/orgs/{org}/{security_product}/{enablement}": { - /** - * Enable or disable a security feature for an organization - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** The ability to enable or disable a security feature for all eligible repositories in an organization is closing down. Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. For more information, see the [changelog](https://github.blog/changelog/2024-07-22-deprecation-of-api-endpoint-to-enable-or-disable-a-security-feature-for-an-organization/). - * - * Enables or disables the specified security feature for all eligible repositories in an organization. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * The authenticated user must be an organization owner or be member of a team with the security manager role to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org`, `write:org`, or `repo` scopes to use this endpoint. - */ - post: operations["orgs/enable-or-disable-security-product-on-all-org-repos"]; - }; - "/projects/columns/{column_id}": { - /** - * Get a project column - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - get: operations["projects-classic/get-column"]; - /** - * Delete a project column - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - delete: operations["projects-classic/delete-column"]; - /** - * Update an existing project column - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - patch: operations["projects-classic/update-column"]; - }; - "/projects/columns/{column_id}/moves": { - /** - * Move a project column - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - post: operations["projects-classic/move-column"]; - }; - "/projects/{project_id}": { - /** - * Get a project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - get: operations["projects-classic/get"]; - /** - * Delete a project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - delete: operations["projects-classic/delete"]; - /** - * Update a project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - patch: operations["projects-classic/update"]; - }; - "/projects/{project_id}/collaborators": { - /** - * List project collaborators - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - get: operations["projects-classic/list-collaborators"]; - }; - "/projects/{project_id}/collaborators/{username}": { - /** - * Add project collaborator - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - put: operations["projects-classic/add-collaborator"]; - /** - * Remove user as a collaborator - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - delete: operations["projects-classic/remove-collaborator"]; - }; - "/projects/{project_id}/collaborators/{username}/permission": { - /** - * Get project permission for a user - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - get: operations["projects-classic/get-permission-for-user"]; - }; - "/rate_limit": { - /** - * Get rate limit status for the authenticated user - * @description > [!NOTE] - * > Accessing this endpoint does not count against your REST API rate limit. - * - * Some categories of endpoints have custom rate limits that are separate from the rate limit governing the other REST API endpoints. For this reason, the API response categorizes your rate limit. Under `resources`, you'll see objects relating to different categories: - * * The `core` object provides your rate limit status for all non-search-related resources in the REST API. - * * The `search` object provides your rate limit status for the REST API for searching (excluding code searches). For more information, see "[Search](https://docs.github.com/rest/search/search)." - * * The `code_search` object provides your rate limit status for the REST API for searching code. For more information, see "[Search code](https://docs.github.com/rest/search/search#search-code)." - * * The `graphql` object provides your rate limit status for the GraphQL API. For more information, see "[Resource limitations](https://docs.github.com/graphql/overview/resource-limitations#rate-limit)." - * * The `integration_manifest` object provides your rate limit status for the `POST /app-manifests/{code}/conversions` operation. For more information, see "[Creating a GitHub App from a manifest](https://docs.github.com/apps/creating-github-apps/setting-up-a-github-app/creating-a-github-app-from-a-manifest#3-you-exchange-the-temporary-code-to-retrieve-the-app-configuration)." - * * The `dependency_snapshots` object provides your rate limit status for submitting snapshots to the dependency graph. For more information, see "[Dependency graph](https://docs.github.com/rest/dependency-graph)." - * * The `dependency_sbom` object provides your rate limit status for requesting SBOMs from the dependency graph. For more information, see "[Dependency graph](https://docs.github.com/rest/dependency-graph)." - * * The `code_scanning_upload` object provides your rate limit status for uploading SARIF results to code scanning. For more information, see "[Uploading a SARIF file to GitHub](https://docs.github.com/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github)." - * * The `actions_runner_registration` object provides your rate limit status for registering self-hosted runners in GitHub Actions. For more information, see "[Self-hosted runners](https://docs.github.com/rest/actions/self-hosted-runners)." - * * The `source_import` object is no longer in use for any API endpoints, and it will be removed in the next API version. For more information about API versions, see "[API Versions](https://docs.github.com/rest/about-the-rest-api/api-versions)." - * - * > [!NOTE] - * > The `rate` object is closing down. If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object. - */ - get: operations["rate-limit/get"]; - }; - "/repos/{owner}/{repo}": { - /** - * Get a repository - * @description The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network. - * - * > [!NOTE] - * > - In order to see the `security_and_analysis` block for a repository you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * > - To view merge-related settings, you must have the `contents:read` and `contents:write` permissions. - */ - get: operations["repos/get"]; - /** - * Delete a repository - * @description Deleting a repository requires admin access. - * - * If an organization owner has configured the organization to prevent members from deleting organization-owned - * repositories, you will get a `403 Forbidden` response. - * - * OAuth app tokens and personal access tokens (classic) need the `delete_repo` scope to use this endpoint. - */ - delete: operations["repos/delete"]; - /** - * Update a repository - * @description **Note**: To edit a repository's topics, use the [Replace all repository topics](https://docs.github.com/rest/repos/repos#replace-all-repository-topics) endpoint. - */ - patch: operations["repos/update"]; - }; - "/repos/{owner}/{repo}/actions/artifacts": { - /** - * List artifacts for a repository - * @description Lists all artifacts for a repository. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["actions/list-artifacts-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/artifacts/{artifact_id}": { - /** - * Get an artifact - * @description Gets a specific artifact for a workflow run. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-artifact"]; - /** - * Delete an artifact - * @description Deletes an artifact for a workflow run. - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/delete-artifact"]; - }; - "/repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}": { - /** - * Download an artifact - * @description Gets a redirect URL to download an archive for a repository. This URL expires after 1 minute. Look for `Location:` in - * the response header to find the URL for the download. The `:archive_format` must be `zip`. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/download-artifact"]; - }; - "/repos/{owner}/{repo}/actions/cache/usage": { - /** - * Get GitHub Actions cache usage for a repository - * @description Gets GitHub Actions cache usage for a repository. - * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-actions-cache-usage"]; - }; - "/repos/{owner}/{repo}/actions/caches": { - /** - * List GitHub Actions caches for a repository - * @description Lists the GitHub Actions caches for a repository. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-actions-cache-list"]; - /** - * Delete GitHub Actions caches for a repository (using a cache key) - * @description Deletes one or more GitHub Actions caches for a repository, using a complete cache key. By default, all caches that match the provided key are deleted, but you can optionally provide a Git ref to restrict deletions to caches that match both the provided key and the Git ref. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/delete-actions-cache-by-key"]; - }; - "/repos/{owner}/{repo}/actions/caches/{cache_id}": { - /** - * Delete a GitHub Actions cache for a repository (using a cache ID) - * @description Deletes a GitHub Actions cache for a repository, using a cache ID. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/delete-actions-cache-by-id"]; - }; - "/repos/{owner}/{repo}/actions/jobs/{job_id}": { - /** - * Get a job for a workflow run - * @description Gets a specific job in a workflow run. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-job-for-workflow-run"]; - }; - "/repos/{owner}/{repo}/actions/jobs/{job_id}/logs": { - /** - * Download job logs for a workflow run - * @description Gets a redirect URL to download a plain text file of logs for a workflow job. This link expires after 1 minute. Look - * for `Location:` in the response header to find the URL for the download. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/download-job-logs-for-workflow-run"]; - }; - "/repos/{owner}/{repo}/actions/jobs/{job_id}/rerun": { - /** - * Re-run a job from a workflow run - * @description Re-run a job and its dependent jobs in a workflow run. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/re-run-job-for-workflow-run"]; - }; - "/repos/{owner}/{repo}/actions/oidc/customization/sub": { - /** - * Get the customization template for an OIDC subject claim for a repository - * @description Gets the customization template for an OpenID Connect (OIDC) subject claim. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-custom-oidc-sub-claim-for-repo"]; - /** - * Set the customization template for an OIDC subject claim for a repository - * @description Sets the customization template and `opt-in` or `opt-out` flag for an OpenID Connect (OIDC) subject claim for a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/set-custom-oidc-sub-claim-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/organization-secrets": { - /** - * List repository organization secrets - * @description Lists all organization secrets shared with a repository without revealing their encrypted - * values. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/list-repo-organization-secrets"]; - }; - "/repos/{owner}/{repo}/actions/organization-variables": { - /** - * List repository organization variables - * @description Lists all organization variables shared with a repository. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/list-repo-organization-variables"]; - }; - "/repos/{owner}/{repo}/actions/permissions": { - /** - * Get GitHub Actions permissions for a repository - * @description Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions and reusable workflows allowed to run in the repository. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-github-actions-permissions-repository"]; - /** - * Set GitHub Actions permissions for a repository - * @description Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions and reusable workflows in the repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/set-github-actions-permissions-repository"]; - }; - "/repos/{owner}/{repo}/actions/permissions/access": { - /** - * Get the level of access for workflows outside of the repository - * @description Gets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository. - * This endpoint only applies to private repositories. - * For more information, see "[Allowing access to components in a private repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-workflow-access-to-repository"]; - /** - * Set the level of access for workflows outside of the repository - * @description Sets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository. - * This endpoint only applies to private repositories. - * For more information, see "[Allowing access to components in a private repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository)". - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/set-workflow-access-to-repository"]; - }; - "/repos/{owner}/{repo}/actions/permissions/artifact-and-log-retention": { - /** - * Get artifact and log retention settings for a repository - * @description Gets artifact and log retention settings for a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-artifact-and-log-retention-settings-repository"]; - /** - * Set artifact and log retention settings for a repository - * @description Sets artifact and log retention settings for a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/set-artifact-and-log-retention-settings-repository"]; - }; - "/repos/{owner}/{repo}/actions/permissions/fork-pr-contributor-approval": { - /** - * Get fork PR contributor approval permissions for a repository - * @description Gets the fork PR contributor approval policy for a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-fork-pr-contributor-approval-permissions-repository"]; - /** - * Set fork PR contributor approval permissions for a repository - * @description Sets the fork PR contributor approval policy for a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/set-fork-pr-contributor-approval-permissions-repository"]; - }; - "/repos/{owner}/{repo}/actions/permissions/fork-pr-workflows-private-repos": { - /** - * Get private repo fork PR workflow settings for a repository - * @description Gets the settings for whether workflows from fork pull requests can run on a private repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-private-repo-fork-pr-workflows-settings-repository"]; - /** - * Set private repo fork PR workflow settings for a repository - * @description Sets the settings for whether workflows from fork pull requests can run on a private repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/set-private-repo-fork-pr-workflows-settings-repository"]; - }; - "/repos/{owner}/{repo}/actions/permissions/selected-actions": { - /** - * Get allowed actions and reusable workflows for a repository - * @description Gets the settings for selected actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-allowed-actions-repository"]; - /** - * Set allowed actions and reusable workflows for a repository - * @description Sets the actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/set-allowed-actions-repository"]; - }; - "/repos/{owner}/{repo}/actions/permissions/workflow": { - /** - * Get default workflow permissions for a repository - * @description Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, - * as well as if GitHub Actions can submit approving pull request reviews. - * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository)." - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-github-actions-default-workflow-permissions-repository"]; - /** - * Set default workflow permissions for a repository - * @description Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, and sets if GitHub Actions - * can submit approving pull request reviews. - * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/set-github-actions-default-workflow-permissions-repository"]; - }; - "/repos/{owner}/{repo}/actions/runners": { - /** - * List self-hosted runners for a repository - * @description Lists all self-hosted runners configured in a repository. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/list-self-hosted-runners-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/runners/downloads": { - /** - * List runner applications for a repository - * @description Lists binaries for the runner application that you can download and run. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/list-runner-applications-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/runners/generate-jitconfig": { - /** - * Create configuration for a just-in-time runner for a repository - * @description Generates a configuration that can be passed to the runner application at startup. - * - * The authenticated user must have admin access to the repository. - * - * OAuth tokens and personal access tokens (classic) need the`repo` scope to use this endpoint. - */ - post: operations["actions/generate-runner-jitconfig-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/runners/registration-token": { - /** - * Create a registration token for a repository - * @description Returns a token that you can pass to the `config` script. The token expires after one hour. - * - * For example, you can replace `TOKEN` in the following example with the registration token provided by this endpoint to configure your self-hosted runner: - * - * ``` - * ./config.sh --url https://github.com/octo-org --token TOKEN - * ``` - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/create-registration-token-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/runners/remove-token": { - /** - * Create a remove token for a repository - * @description Returns a token that you can pass to the `config` script to remove a self-hosted runner from an repository. The token expires after one hour. - * - * For example, you can replace `TOKEN` in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization: - * - * ``` - * ./config.sh remove --token TOKEN - * ``` - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/create-remove-token-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/runners/{runner_id}": { - /** - * Get a self-hosted runner for a repository - * @description Gets a specific self-hosted runner configured in a repository. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-self-hosted-runner-for-repo"]; - /** - * Delete a self-hosted runner from a repository - * @description Forces the removal of a self-hosted runner from a repository. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/delete-self-hosted-runner-from-repo"]; - }; - "/repos/{owner}/{repo}/actions/runners/{runner_id}/labels": { - /** - * List labels for a self-hosted runner for a repository - * @description Lists all labels for a self-hosted runner configured in a repository. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/list-labels-for-self-hosted-runner-for-repo"]; - /** - * Set custom labels for a self-hosted runner for a repository - * @description Remove all previous custom labels and set the new custom labels for a specific - * self-hosted runner configured in a repository. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/set-custom-labels-for-self-hosted-runner-for-repo"]; - /** - * Add custom labels to a self-hosted runner for a repository - * @description Adds custom labels to a self-hosted runner configured in a repository. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/add-custom-labels-to-self-hosted-runner-for-repo"]; - /** - * Remove all custom labels from a self-hosted runner for a repository - * @description Remove all custom labels from a self-hosted runner configured in a - * repository. Returns the remaining read-only labels from the runner. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/remove-all-custom-labels-from-self-hosted-runner-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}": { - /** - * Remove a custom label from a self-hosted runner for a repository - * @description Remove a custom label from a self-hosted runner configured - * in a repository. Returns the remaining labels from the runner. - * - * This endpoint returns a `404 Not Found` status if the custom label is not - * present on the runner. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/remove-custom-label-from-self-hosted-runner-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/runs": { - /** - * List workflow runs for a repository - * @description Lists all workflow runs for a repository. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - * - * This endpoint will return up to 1,000 results for each search when using the following parameters: `actor`, `branch`, `check_suite_id`, `created`, `event`, `head_sha`, `status`. - */ - get: operations["actions/list-workflow-runs-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}": { - /** - * Get a workflow run - * @description Gets a specific workflow run. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["actions/get-workflow-run"]; - /** - * Delete a workflow run - * @description Deletes a specific workflow run. - * - * Anyone with write access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/delete-workflow-run"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/approvals": { - /** - * Get the review history for a workflow run - * @description Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["actions/get-reviews-for-run"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/approve": { - /** - * Approve a workflow run for a fork pull request - * @description Approves a workflow run for a pull request from a public fork of a first time contributor. For more information, see ["Approving workflow runs from public forks](https://docs.github.com/actions/managing-workflow-runs/approving-workflow-runs-from-public-forks)." - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/approve-workflow-run"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": { - /** - * List workflow run artifacts - * @description Lists artifacts for a workflow run. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["actions/list-workflow-run-artifacts"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}": { - /** - * Get a workflow run attempt - * @description Gets a specific workflow run attempt. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["actions/get-workflow-run-attempt"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs": { - /** - * List jobs for a workflow run attempt - * @description Lists jobs for a specific workflow run attempt. You can use parameters to narrow the list of results. For more information - * about using parameters, see [Parameters](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["actions/list-jobs-for-workflow-run-attempt"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs": { - /** - * Download workflow run attempt logs - * @description Gets a redirect URL to download an archive of log files for a specific workflow run attempt. This link expires after - * 1 minute. Look for `Location:` in the response header to find the URL for the download. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/download-workflow-run-attempt-logs"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/cancel": { - /** - * Cancel a workflow run - * @description Cancels a workflow run using its `id`. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/cancel-workflow-run"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule": { - /** - * Review custom deployment protection rules for a workflow run - * @description Approve or reject custom deployment protection rules provided by a GitHub App for a workflow run. For more information, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)." - * - * > [!NOTE] - * > GitHub Apps can only review their own custom deployment protection rules. To approve or reject pending deployments that are waiting for review from a specific person or team, see [`POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments`](/rest/actions/workflow-runs#review-pending-deployments-for-a-workflow-run). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - post: operations["actions/review-custom-gates-for-run"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel": { - /** - * Force cancel a workflow run - * @description Cancels a workflow run and bypasses conditions that would otherwise cause a workflow execution to continue, such as an `always()` condition on a job. - * You should only use this endpoint to cancel a workflow run when the workflow run is not responding to [`POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel`](/rest/actions/workflow-runs#cancel-a-workflow-run). - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/force-cancel-workflow-run"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/jobs": { - /** - * List jobs for a workflow run - * @description Lists jobs for a workflow run. You can use parameters to narrow the list of results. For more information - * about using parameters, see [Parameters](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["actions/list-jobs-for-workflow-run"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/logs": { - /** - * Download workflow run logs - * @description Gets a redirect URL to download an archive of log files for a workflow run. This link expires after 1 minute. Look for - * `Location:` in the response header to find the URL for the download. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/download-workflow-run-logs"]; - /** - * Delete workflow run logs - * @description Deletes all logs for a workflow run. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/delete-workflow-run-logs"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments": { - /** - * Get pending deployments for a workflow run - * @description Get all deployment environments for a workflow run that are waiting for protection rules to pass. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-pending-deployments-for-run"]; - /** - * Review pending deployments for a workflow run - * @description Approve or reject pending deployments that are waiting on approval by a required reviewer. - * - * Required reviewers with read access to the repository contents and deployments can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/review-pending-deployments-for-run"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/rerun": { - /** - * Re-run a workflow - * @description Re-runs your workflow run using its `id`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/re-run-workflow"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs": { - /** - * Re-run failed jobs from a workflow run - * @description Re-run all of the failed jobs and their dependent jobs in a workflow run using the `id` of the workflow run. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/re-run-workflow-failed-jobs"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/timing": { - /** - * Get workflow run usage - * @description > [!WARNING] - * > This endpoint is in the process of closing down. Refer to "[Actions Get workflow usage and Get workflow run usage endpoints closing down](https://github.blog/changelog/2025-02-02-actions-get-workflow-usage-and-get-workflow-run-usage-endpoints-closing-down/)" for more information. - * - * Gets the number of billable minutes and total run time for a specific workflow run. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["actions/get-workflow-run-usage"]; - }; - "/repos/{owner}/{repo}/actions/secrets": { - /** - * List repository secrets - * @description Lists all secrets available in a repository without revealing their encrypted - * values. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/list-repo-secrets"]; - }; - "/repos/{owner}/{repo}/actions/secrets/public-key": { - /** - * Get a repository public key - * @description Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-repo-public-key"]; - }; - "/repos/{owner}/{repo}/actions/secrets/{secret_name}": { - /** - * Get a repository secret - * @description Gets a single repository secret without revealing its encrypted value. - * - * The authenticated user must have collaborator access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-repo-secret"]; - /** - * Create or update a repository secret - * @description Creates or updates a repository secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/create-or-update-repo-secret"]; - /** - * Delete a repository secret - * @description Deletes a secret in a repository using the secret name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/delete-repo-secret"]; - }; - "/repos/{owner}/{repo}/actions/variables": { - /** - * List repository variables - * @description Lists all repository variables. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/list-repo-variables"]; - /** - * Create a repository variable - * @description Creates a repository variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/create-repo-variable"]; - }; - "/repos/{owner}/{repo}/actions/variables/{name}": { - /** - * Get a repository variable - * @description Gets a specific variable in a repository. - * - * The authenticated user must have collaborator access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-repo-variable"]; - /** - * Delete a repository variable - * @description Deletes a repository variable using the variable name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/delete-repo-variable"]; - /** - * Update a repository variable - * @description Updates a repository variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - patch: operations["actions/update-repo-variable"]; - }; - "/repos/{owner}/{repo}/actions/workflows": { - /** - * List repository workflows - * @description Lists the workflows in a repository. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["actions/list-repo-workflows"]; - }; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}": { - /** - * Get a workflow - * @description Gets a specific workflow. You can replace `workflow_id` with the workflow - * file name. For example, you could use `main.yaml`. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["actions/get-workflow"]; - }; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable": { - /** - * Disable a workflow - * @description Disables a workflow and sets the `state` of the workflow to `disabled_manually`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/disable-workflow"]; - }; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches": { - /** - * Create a workflow dispatch event - * @description You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * You must configure your GitHub Actions workflow to run when the [`workflow_dispatch` webhook](/developers/webhooks-and-events/webhook-events-and-payloads#workflow_dispatch) event occurs. The `inputs` are configured in the workflow file. For more information about how to configure the `workflow_dispatch` event in the workflow file, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_dispatch)." - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/create-workflow-dispatch"]; - }; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable": { - /** - * Enable a workflow - * @description Enables a workflow and sets the `state` of the workflow to `active`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/enable-workflow"]; - }; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": { - /** - * List workflow runs for a workflow - * @description List all workflow runs for a workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - * - * This endpoint will return up to 1,000 results for each search when using the following parameters: `actor`, `branch`, `check_suite_id`, `created`, `event`, `head_sha`, `status`. - */ - get: operations["actions/list-workflow-runs"]; - }; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing": { - /** - * Get workflow usage - * @description > [!WARNING] - * > This endpoint is in the process of closing down. Refer to "[Actions Get workflow usage and Get workflow run usage endpoints closing down](https://github.blog/changelog/2025-02-02-actions-get-workflow-usage-and-get-workflow-run-usage-endpoints-closing-down/)" for more information. - * - * Gets the number of billable minutes used by a specific workflow during the current billing cycle. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["actions/get-workflow-usage"]; - }; - "/repos/{owner}/{repo}/activity": { - /** - * List repository activities - * @description Lists a detailed history of changes to a repository, such as pushes, merges, force pushes, and branch changes, and associates these changes with commits and users. - * - * For more information about viewing repository activity, - * see "[Viewing activity and data for your repository](https://docs.github.com/repositories/viewing-activity-and-data-for-your-repository)." - */ - get: operations["repos/list-activities"]; - }; - "/repos/{owner}/{repo}/assignees": { - /** - * List assignees - * @description Lists the [available assignees](https://docs.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository. - */ - get: operations["issues/list-assignees"]; - }; - "/repos/{owner}/{repo}/assignees/{assignee}": { - /** - * Check if a user can be assigned - * @description Checks if a user has permission to be assigned to an issue in this repository. - * - * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned. - * - * Otherwise a `404` status code is returned. - */ - get: operations["issues/check-user-can-be-assigned"]; - }; - "/repos/{owner}/{repo}/attestations": { - /** - * Create an attestation - * @description Store an artifact attestation and associate it with a repository. - * - * The authenticated user must have write permission to the repository and, if using a fine-grained access token, the `attestations:write` permission is required. - * - * Artifact attestations are meant to be created using the [attest action](https://github.com/actions/attest). For more information, see our guide on [using artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - post: operations["repos/create-attestation"]; - }; - "/repos/{owner}/{repo}/attestations/{subject_digest}": { - /** - * List attestations - * @description List a collection of artifact attestations with a given subject digest that are associated with a repository. - * - * The authenticated user making the request must have read access to the repository. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - get: operations["repos/list-attestations"]; - }; - "/repos/{owner}/{repo}/autolinks": { - /** - * Get all autolinks of a repository - * @description Gets all autolinks that are configured for a repository. - * - * Information about autolinks are only available to repository administrators. - */ - get: operations["repos/list-autolinks"]; - /** - * Create an autolink reference for a repository - * @description Users with admin access to the repository can create an autolink. - */ - post: operations["repos/create-autolink"]; - }; - "/repos/{owner}/{repo}/autolinks/{autolink_id}": { - /** - * Get an autolink reference of a repository - * @description This returns a single autolink reference by ID that was configured for the given repository. - * - * Information about autolinks are only available to repository administrators. - */ - get: operations["repos/get-autolink"]; - /** - * Delete an autolink reference from a repository - * @description This deletes a single autolink reference by ID that was configured for the given repository. - * - * Information about autolinks are only available to repository administrators. - */ - delete: operations["repos/delete-autolink"]; - }; - "/repos/{owner}/{repo}/automated-security-fixes": { - /** - * Check if Dependabot security updates are enabled for a repository - * @description Shows whether Dependabot security updates are enabled, disabled or paused for a repository. The authenticated user must have admin read access to the repository. For more information, see "[Configuring Dependabot security updates](https://docs.github.com/articles/configuring-automated-security-fixes)". - */ - get: operations["repos/check-automated-security-fixes"]; - /** - * Enable Dependabot security updates - * @description Enables Dependabot security updates for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring Dependabot security updates](https://docs.github.com/articles/configuring-automated-security-fixes)". - */ - put: operations["repos/enable-automated-security-fixes"]; - /** - * Disable Dependabot security updates - * @description Disables Dependabot security updates for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring Dependabot security updates](https://docs.github.com/articles/configuring-automated-security-fixes)". - */ - delete: operations["repos/disable-automated-security-fixes"]; - }; - "/repos/{owner}/{repo}/branches": { - /** List branches */ - get: operations["repos/list-branches"]; - }; - "/repos/{owner}/{repo}/branches/{branch}": { - /** Get a branch */ - get: operations["repos/get-branch"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection": { - /** - * Get branch protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - get: operations["repos/get-branch-protection"]; - /** - * Update branch protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Protecting a branch requires admin or owner permissions to the repository. - * - * > [!NOTE] - * > Passing new arrays of `users` and `teams` replaces their previous values. - * - * > [!NOTE] - * > The list of users, apps, and teams in total is limited to 100 items. - */ - put: operations["repos/update-branch-protection"]; - /** - * Delete branch protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - delete: operations["repos/delete-branch-protection"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": { - /** - * Get admin branch protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - get: operations["repos/get-admin-branch-protection"]; - /** - * Set admin branch protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Adding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - */ - post: operations["repos/set-admin-branch-protection"]; - /** - * Delete admin branch protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removing admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - */ - delete: operations["repos/delete-admin-branch-protection"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": { - /** - * Get pull request review protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - get: operations["repos/get-pull-request-review-protection"]; - /** - * Delete pull request review protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - delete: operations["repos/delete-pull-request-review-protection"]; - /** - * Update pull request review protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Updating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - * - * > [!NOTE] - * > Passing new arrays of `users` and `teams` replaces their previous values. - */ - patch: operations["repos/update-pull-request-review-protection"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": { - /** - * Get commit signature protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://docs.github.com/articles/signing-commits-with-gpg) in GitHub Help. - * - * > [!NOTE] - * > You must enable branch protection to require signed commits. - */ - get: operations["repos/get-commit-signature-protection"]; - /** - * Create commit signature protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits. - */ - post: operations["repos/create-commit-signature-protection"]; - /** - * Delete commit signature protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits. - */ - delete: operations["repos/delete-commit-signature-protection"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": { - /** - * Get status checks protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - get: operations["repos/get-status-checks-protection"]; - /** - * Remove status check protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - delete: operations["repos/remove-status-check-protection"]; - /** - * Update status check protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled. - */ - patch: operations["repos/update-status-check-protection"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": { - /** - * Get all status check contexts - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - get: operations["repos/get-all-status-check-contexts"]; - /** - * Set status check contexts - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - put: operations["repos/set-status-check-contexts"]; - /** - * Add status check contexts - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - post: operations["repos/add-status-check-contexts"]; - /** - * Remove status check contexts - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - delete: operations["repos/remove-status-check-contexts"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions": { - /** - * Get access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists who has access to this protected branch. - * - * > [!NOTE] - * > Users, apps, and teams `restrictions` are only available for organization-owned repositories. - */ - get: operations["repos/get-access-restrictions"]; - /** - * Delete access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Disables the ability to restrict who can push to this branch. - */ - delete: operations["repos/delete-access-restrictions"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": { - /** - * Get apps with access to the protected branch - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the GitHub Apps that have push access to this branch. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch. - */ - get: operations["repos/get-apps-with-access-to-protected-branch"]; - /** - * Set app access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch. - */ - put: operations["repos/set-app-access-restrictions"]; - /** - * Add app access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified apps push access for this branch. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch. - */ - post: operations["repos/add-app-access-restrictions"]; - /** - * Remove app access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of an app to push to this branch. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch. - */ - delete: operations["repos/remove-app-access-restrictions"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": { - /** - * Get teams with access to the protected branch - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the teams who have push access to this branch. The list includes child teams. - */ - get: operations["repos/get-teams-with-access-to-protected-branch"]; - /** - * Set team access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. Team restrictions include child teams. - */ - put: operations["repos/set-team-access-restrictions"]; - /** - * Add team access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified teams push access for this branch. You can also give push access to child teams. - */ - post: operations["repos/add-team-access-restrictions"]; - /** - * Remove team access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of a team to push to this branch. You can also remove push access for child teams. - */ - delete: operations["repos/remove-team-access-restrictions"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": { - /** - * Get users with access to the protected branch - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the people who have push access to this branch. - */ - get: operations["repos/get-users-with-access-to-protected-branch"]; - /** - * Set user access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people. - * - * | Type | Description | - * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - put: operations["repos/set-user-access-restrictions"]; - /** - * Add user access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified people push access for this branch. - * - * | Type | Description | - * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - post: operations["repos/add-user-access-restrictions"]; - /** - * Remove user access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of a user to push to this branch. - * - * | Type | Description | - * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - delete: operations["repos/remove-user-access-restrictions"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/rename": { - /** - * Rename a branch - * @description Renames a branch in a repository. - * - * > [!NOTE] - * > Although the API responds immediately, the branch rename process might take some extra time to complete in the background. You won't be able to push to the old branch name while the rename process is in progress. For more information, see "[Renaming a branch](https://docs.github.com/github/administering-a-repository/renaming-a-branch)". - * - * The authenticated user must have push access to the branch. If the branch is the default branch, the authenticated user must also have admin or owner permissions. - * - * In order to rename the default branch, fine-grained access tokens also need the `administration:write` repository permission. - */ - post: operations["repos/rename-branch"]; - }; - "/repos/{owner}/{repo}/check-runs": { - /** - * Create a check run - * @description **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * Creates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs. - * - * In a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs. - */ - post: operations["checks/create"]; - }; - "/repos/{owner}/{repo}/check-runs/{check_run_id}": { - /** - * Get a check run - * @description Gets a single check run using its `id`. - * - * > [!NOTE] - * > The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - get: operations["checks/get"]; - /** - * Update a check run - * @description Updates a check run for a specific commit in a repository. - * - * > [!NOTE] - * > The endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * OAuth apps and personal access tokens (classic) cannot use this endpoint. - */ - patch: operations["checks/update"]; - }; - "/repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": { - /** - * List check run annotations - * @description Lists annotations for a check run using the annotation `id`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - get: operations["checks/list-annotations"]; - }; - "/repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest": { - /** - * Rerequest a check run - * @description Triggers GitHub to rerequest an existing check run, without pushing new code to a repository. This endpoint will trigger the [`check_run` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) event with the action `rerequested`. When a check run is `rerequested`, the `status` of the check suite it belongs to is reset to `queued` and the `conclusion` is cleared. The check run itself is not updated. GitHub apps recieving the [`check_run` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) with the `rerequested` action should then decide if the check run should be reset or updated and call the [update `check_run` endpoint](https://docs.github.com/rest/checks/runs#update-a-check-run) to update the check_run if desired. - * - * For more information about how to re-run GitHub Actions jobs, see "[Re-run a job from a workflow run](https://docs.github.com/rest/actions/workflow-runs#re-run-a-job-from-a-workflow-run)". - */ - post: operations["checks/rerequest-run"]; - }; - "/repos/{owner}/{repo}/check-suites": { - /** - * Create a check suite - * @description Creates a check suite manually. By default, check suites are automatically created when you create a [check run](https://docs.github.com/rest/checks/runs). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using "[Update repository preferences for check suites](https://docs.github.com/rest/checks/suites#update-repository-preferences-for-check-suites)". - * - * > [!NOTE] - * > The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * OAuth apps and personal access tokens (classic) cannot use this endpoint. - */ - post: operations["checks/create-suite"]; - }; - "/repos/{owner}/{repo}/check-suites/preferences": { - /** - * Update repository preferences for check suites - * @description Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://docs.github.com/rest/checks/suites#create-a-check-suite). - * You must have admin permissions in the repository to set preferences for check suites. - */ - patch: operations["checks/set-suites-preferences"]; - }; - "/repos/{owner}/{repo}/check-suites/{check_suite_id}": { - /** - * Get a check suite - * @description Gets a single check suite using its `id`. - * - * > [!NOTE] - * > The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - get: operations["checks/get-suite"]; - }; - "/repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": { - /** - * List check runs in a check suite - * @description Lists check runs for a check suite using its `id`. - * - * > [!NOTE] - * > The endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - get: operations["checks/list-for-suite"]; - }; - "/repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest": { - /** - * Rerequest a check suite - * @description Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://docs.github.com/webhooks/event-payloads/#check_suite) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared. - */ - post: operations["checks/rerequest-suite"]; - }; - "/repos/{owner}/{repo}/code-scanning/alerts": { - /** - * List code scanning alerts for a repository - * @description Lists all open code scanning alerts for the default branch (usually `main` - * or `master`). You must use an access token with the `security_events` scope to use - * this endpoint with private repos, the `public_repo` scope also grants permission to read - * security events on public repos only. GitHub Apps must have the `security_events` read - * permission to use this endpoint. - * - * The response includes a `most_recent_instance` object. - * This provides details of the most recent instance of this alert - * for the default branch or for the specified Git reference - * (if you used `ref` in the request). - */ - get: operations["code-scanning/list-alerts-for-repo"]; - }; - "/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": { - /** - * Get a code scanning alert - * @description Gets a single code scanning alert. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - get: operations["code-scanning/get-alert"]; - /** - * Update a code scanning alert - * @description Updates the status of a single code scanning alert. - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - patch: operations["code-scanning/update-alert"]; - }; - "/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix": { - /** - * Get the status of an autofix for a code scanning alert - * @description Gets the status and description of an autofix for a code scanning alert. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - get: operations["code-scanning/get-autofix"]; - /** - * Create an autofix for a code scanning alert - * @description Creates an autofix for a code scanning alert. - * - * If a new autofix is to be created as a result of this request or is currently being generated, then this endpoint will return a 202 Accepted response. - * - * If an autofix already exists for a given alert, then this endpoint will return a 200 OK response. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - post: operations["code-scanning/create-autofix"]; - }; - "/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits": { - /** - * Commit an autofix for a code scanning alert - * @description Commits an autofix for a code scanning alert. - * - * If an autofix is committed as a result of this request, then this endpoint will return a 201 Created response. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - post: operations["code-scanning/commit-autofix"]; - }; - "/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances": { - /** - * List instances of a code scanning alert - * @description Lists all instances of the specified code scanning alert. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - get: operations["code-scanning/list-alert-instances"]; - }; - "/repos/{owner}/{repo}/code-scanning/analyses": { - /** - * List code scanning analyses for a repository - * @description Lists the details of all code scanning analyses for a repository, - * starting with the most recent. - * The response is paginated and you can use the `page` and `per_page` parameters - * to list the analyses you're interested in. - * By default 30 analyses are listed per page. - * - * The `rules_count` field in the response give the number of rules - * that were run in the analysis. - * For very old analyses this data is not available, - * and `0` is returned in this field. - * - * > [!WARNING] - * > **Closing down notice:** The `tool_name` field is closing down and will, in future, not be included in the response for this endpoint. The example response reflects this change. The tool name can now be found inside the `tool` field. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - get: operations["code-scanning/list-recent-analyses"]; - }; - "/repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}": { - /** - * Get a code scanning analysis for a repository - * @description Gets a specified code scanning analysis for a repository. - * - * The default JSON response contains fields that describe the analysis. - * This includes the Git reference and commit SHA to which the analysis relates, - * the datetime of the analysis, the name of the code scanning tool, - * and the number of alerts. - * - * The `rules_count` field in the default response give the number of rules - * that were run in the analysis. - * For very old analyses this data is not available, - * and `0` is returned in this field. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/sarif+json`**: Instead of returning a summary of the analysis, this endpoint returns a subset of the analysis data that was uploaded. The data is formatted as [SARIF version 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html). It also returns additional data such as the `github/alertNumber` and `github/alertUrl` properties. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - get: operations["code-scanning/get-analysis"]; - /** - * Delete a code scanning analysis from a repository - * @description Deletes a specified code scanning analysis from a repository. - * - * You can delete one analysis at a time. - * To delete a series of analyses, start with the most recent analysis and work backwards. - * Conceptually, the process is similar to the undo function in a text editor. - * - * When you list the analyses for a repository, - * one or more will be identified as deletable in the response: - * - * ``` - * "deletable": true - * ``` - * - * An analysis is deletable when it's the most recent in a set of analyses. - * Typically, a repository will have multiple sets of analyses - * for each enabled code scanning tool, - * where a set is determined by a unique combination of analysis values: - * - * * `ref` - * * `tool` - * * `category` - * - * If you attempt to delete an analysis that is not the most recent in a set, - * you'll get a 400 response with the message: - * - * ``` - * Analysis specified is not deletable. - * ``` - * - * The response from a successful `DELETE` operation provides you with - * two alternative URLs for deleting the next analysis in the set: - * `next_analysis_url` and `confirm_delete_url`. - * Use the `next_analysis_url` URL if you want to avoid accidentally deleting the final analysis - * in a set. This is a useful option if you want to preserve at least one analysis - * for the specified tool in your repository. - * Use the `confirm_delete_url` URL if you are content to remove all analyses for a tool. - * When you delete the last analysis in a set, the value of `next_analysis_url` and `confirm_delete_url` - * in the 200 response is `null`. - * - * As an example of the deletion process, - * let's imagine that you added a workflow that configured a particular code scanning tool - * to analyze the code in a repository. This tool has added 15 analyses: - * 10 on the default branch, and another 5 on a topic branch. - * You therefore have two separate sets of analyses for this tool. - * You've now decided that you want to remove all of the analyses for the tool. - * To do this you must make 15 separate deletion requests. - * To start, you must find an analysis that's identified as deletable. - * Each set of analyses always has one that's identified as deletable. - * Having found the deletable analysis for one of the two sets, - * delete this analysis and then continue deleting the next analysis in the set until they're all deleted. - * Then repeat the process for the second set. - * The procedure therefore consists of a nested loop: - * - * **Outer loop**: - * * List the analyses for the repository, filtered by tool. - * * Parse this list to find a deletable analysis. If found: - * - * **Inner loop**: - * * Delete the identified analysis. - * * Parse the response for the value of `confirm_delete_url` and, if found, use this in the next iteration. - * - * The above process assumes that you want to remove all trace of the tool's analyses from the GitHub user interface, for the specified repository, and it therefore uses the `confirm_delete_url` value. Alternatively, you could use the `next_analysis_url` value, which would leave the last analysis in each set undeleted to avoid removing a tool's analysis entirely. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - delete: operations["code-scanning/delete-analysis"]; - }; - "/repos/{owner}/{repo}/code-scanning/codeql/databases": { - /** - * List CodeQL databases for a repository - * @description Lists the CodeQL databases that are available in a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - get: operations["code-scanning/list-codeql-databases"]; - }; - "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}": { - /** - * Get a CodeQL database for a repository - * @description Gets a CodeQL database for a language in a repository. - * - * By default this endpoint returns JSON metadata about the CodeQL database. To - * download the CodeQL database binary content, set the `Accept` header of the request - * to [`application/zip`](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types), and make sure - * your HTTP client is configured to follow redirects or use the `Location` header - * to make a second request to get the redirect URL. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - get: operations["code-scanning/get-codeql-database"]; - /** - * Delete a CodeQL database - * @description Deletes a CodeQL database for a language in a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - delete: operations["code-scanning/delete-codeql-database"]; - }; - "/repos/{owner}/{repo}/code-scanning/codeql/variant-analyses": { - /** - * Create a CodeQL variant analysis - * @description Creates a new CodeQL variant analysis, which will run a CodeQL query against one or more repositories. - * - * Get started by learning more about [running CodeQL queries at scale with Multi-Repository Variant Analysis](https://docs.github.com/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/running-codeql-queries-at-scale-with-multi-repository-variant-analysis). - * - * Use the `owner` and `repo` parameters in the URL to specify the controller repository that - * will be used for running GitHub Actions workflows and storing the results of the CodeQL variant analysis. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["code-scanning/create-variant-analysis"]; - }; - "/repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}": { - /** - * Get the summary of a CodeQL variant analysis - * @description Gets the summary of a CodeQL variant analysis. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - get: operations["code-scanning/get-variant-analysis"]; - }; - "/repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}": { - /** - * Get the analysis status of a repository in a CodeQL variant analysis - * @description Gets the analysis status of a repository in a CodeQL variant analysis. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - get: operations["code-scanning/get-variant-analysis-repo-task"]; - }; - "/repos/{owner}/{repo}/code-scanning/default-setup": { - /** - * Get a code scanning default setup configuration - * @description Gets a code scanning default setup configuration. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - get: operations["code-scanning/get-default-setup"]; - /** - * Update a code scanning default setup configuration - * @description Updates a code scanning default setup configuration. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - patch: operations["code-scanning/update-default-setup"]; - }; - "/repos/{owner}/{repo}/code-scanning/sarifs": { - /** - * Upload an analysis as SARIF data - * @description Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. For troubleshooting information, see "[Troubleshooting SARIF uploads](https://docs.github.com/code-security/code-scanning/troubleshooting-sarif)." - * - * There are two places where you can upload code scanning results. - * - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see "[Triaging code scanning alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." - * - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see "[Managing code scanning alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)." - * - * You must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example: - * - * ``` - * gzip -c analysis-data.sarif | base64 -w0 - * ``` - * - * SARIF upload supports a maximum number of entries per the following data objects, and an analysis will be rejected if any of these objects is above its maximum value. For some objects, there are additional values over which the entries will be ignored while keeping the most important entries whenever applicable. - * To get the most out of your analysis when it includes data above the supported limits, try to optimize the analysis configuration. For example, for the CodeQL tool, identify and remove the most noisy queries. For more information, see "[SARIF results exceed one or more limits](https://docs.github.com/code-security/code-scanning/troubleshooting-sarif/results-exceed-limit)." - * - * - * | **SARIF data** | **Maximum values** | **Additional limits** | - * |----------------------------------|:------------------:|----------------------------------------------------------------------------------| - * | Runs per file | 20 | | - * | Results per run | 25,000 | Only the top 5,000 results will be included, prioritized by severity. | - * | Rules per run | 25,000 | | - * | Tool extensions per run | 100 | | - * | Thread Flow Locations per result | 10,000 | Only the top 1,000 Thread Flow Locations will be included, using prioritization. | - * | Location per result | 1,000 | Only 100 locations will be included. | - * | Tags per rule | 20 | Only 10 tags will be included. | - * - * - * The `202 Accepted` response includes an `id` value. - * You can use this ID to check the status of the upload by using it in the `/sarifs/{sarif_id}` endpoint. - * For more information, see "[Get information about a SARIF upload](/rest/code-scanning/code-scanning#get-information-about-a-sarif-upload)." - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - * - * This endpoint is limited to 1,000 requests per hour for each user or app installation calling it. - */ - post: operations["code-scanning/upload-sarif"]; - }; - "/repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}": { - /** - * Get information about a SARIF upload - * @description Gets information about a SARIF upload, including the status and the URL of the analysis that was uploaded so that you can retrieve details of the analysis. For more information, see "[Get a code scanning analysis for a repository](/rest/code-scanning/code-scanning#get-a-code-scanning-analysis-for-a-repository)." - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - get: operations["code-scanning/get-sarif"]; - }; - "/repos/{owner}/{repo}/code-security-configuration": { - /** - * Get the code security configuration associated with a repository - * @description Get the code security configuration that manages a repository's code security settings. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["code-security/get-configuration-for-repository"]; - }; - "/repos/{owner}/{repo}/codeowners/errors": { - /** - * List CODEOWNERS errors - * @description List any syntax errors that are detected in the CODEOWNERS - * file. - * - * For more information about the correct CODEOWNERS syntax, - * see "[About code owners](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)." - */ - get: operations["repos/codeowners-errors"]; - }; - "/repos/{owner}/{repo}/codespaces": { - /** - * List codespaces in a repository for the authenticated user - * @description Lists the codespaces associated to a specified repository and the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - get: operations["codespaces/list-in-repository-for-authenticated-user"]; - /** - * Create a codespace in a repository - * @description Creates a codespace owned by the authenticated user in the specified repository. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - post: operations["codespaces/create-with-repo-for-authenticated-user"]; - }; - "/repos/{owner}/{repo}/codespaces/devcontainers": { - /** - * List devcontainer configurations in a repository for the authenticated user - * @description Lists the devcontainer.json files associated with a specified repository and the authenticated user. These files - * specify launchpoint configurations for codespaces created within the repository. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - get: operations["codespaces/list-devcontainers-in-repository-for-authenticated-user"]; - }; - "/repos/{owner}/{repo}/codespaces/machines": { - /** - * List available machine types for a repository - * @description List the machine types available for a given repository based on its configuration. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - get: operations["codespaces/repo-machines-for-authenticated-user"]; - }; - "/repos/{owner}/{repo}/codespaces/new": { - /** - * Get default attributes for a codespace - * @description Gets the default attributes for codespaces created by the user with the repository. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - get: operations["codespaces/pre-flight-with-repo-for-authenticated-user"]; - }; - "/repos/{owner}/{repo}/codespaces/permissions_check": { - /** - * Check if permissions defined by a devcontainer have been accepted by the authenticated user - * @description Checks whether the permissions defined by a given devcontainer configuration have been accepted by the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - get: operations["codespaces/check-permissions-for-devcontainer"]; - }; - "/repos/{owner}/{repo}/codespaces/secrets": { - /** - * List repository secrets - * @description Lists all development environment secrets available in a repository without revealing their encrypted - * values. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["codespaces/list-repo-secrets"]; - }; - "/repos/{owner}/{repo}/codespaces/secrets/public-key": { - /** - * Get a repository public key - * @description Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. - * - * If the repository is private, OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["codespaces/get-repo-public-key"]; - }; - "/repos/{owner}/{repo}/codespaces/secrets/{secret_name}": { - /** - * Get a repository secret - * @description Gets a single repository development environment secret without revealing its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["codespaces/get-repo-secret"]; - /** - * Create or update a repository secret - * @description Creates or updates a repository development environment secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. The associated user must be a repository admin. - */ - put: operations["codespaces/create-or-update-repo-secret"]; - /** - * Delete a repository secret - * @description Deletes a development environment secret in a repository using the secret name. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. The associated user must be a repository admin. - */ - delete: operations["codespaces/delete-repo-secret"]; - }; - "/repos/{owner}/{repo}/collaborators": { - /** - * List repository collaborators - * @description For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. - * The `permissions` hash returned in the response contains the base role permissions of the collaborator. The `role_name` is the highest role assigned to the collaborator after considering all sources of grants, including: repo, teams, organization, and enterprise. - * There is presently not a way to differentiate between an organization level grant and a repository level grant from this endpoint response. - * - * Team members will include the members of child teams. - * - * The authenticated user must have write, maintain, or admin privileges on the repository to use this endpoint. For organization-owned repositories, the authenticated user needs to be a member of the organization. - * OAuth app tokens and personal access tokens (classic) need the `read:org` and `repo` scopes to use this endpoint. - */ - get: operations["repos/list-collaborators"]; - }; - "/repos/{owner}/{repo}/collaborators/{username}": { - /** - * Check if a user is a repository collaborator - * @description For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. - * - * Team members will include the members of child teams. - * - * The authenticated user must have push access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` and `repo` scopes to use this endpoint. - */ - get: operations["repos/check-collaborator"]; - /** - * Add a repository collaborator - * @description Add a user to a repository with a specified level of access. If the repository is owned by an organization, this API does not add the user to the organization - a user that has repository access without being an organization member is called an "outside collaborator" (if they are not an Enterprise Managed User) or a "repository collaborator" if they are an Enterprise Managed User. These users are exempt from some organization policies - see "[Adding outside collaborators to repositories](https://docs.github.com/organizations/managing-user-access-to-your-organizations-repositories/managing-outside-collaborators/adding-outside-collaborators-to-repositories-in-your-organization)" to learn more about these collaborator types. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). - * - * Adding an outside collaborator may be restricted by enterprise and organization administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)" and "[Setting permissions for adding outside collaborators](https://docs.github.com/organizations/managing-organization-settings/setting-permissions-for-adding-outside-collaborators)" for organization settings. - * - * For more information on permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". There are restrictions on which permissions can be granted to organization members when an organization base role is in place. In this case, the role being given must be equal to or higher than the org base permission. Otherwise, the request will fail with: - * - * ``` - * Cannot assign {member} permission of {role name} - * ``` - * - * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - * - * The invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [API](https://docs.github.com/rest/collaborators/invitations). - * - * For Enterprise Managed Users, this endpoint does not send invitations - these users are automatically added to organizations and repositories. Enterprise Managed Users can only be added to organizations and repositories within their enterprise. - * - * **Updating an existing collaborator's permission level** - * - * The endpoint can also be used to change the permissions of an existing collaborator without first removing and re-adding the collaborator. To change the permissions, use the same endpoint and pass a different `permission` parameter. The response will be a `204`, with no other indication that the permission level changed. - * - * **Rate limits** - * - * You are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository. - */ - put: operations["repos/add-collaborator"]; - /** - * Remove a repository collaborator - * @description Removes a collaborator from a repository. - * - * To use this endpoint, the authenticated user must either be an administrator of the repository or target themselves for removal. - * - * This endpoint also: - * - Cancels any outstanding invitations sent by the collaborator - * - Unassigns the user from any issues - * - Removes access to organization projects if the user is not an organization member and is not a collaborator on any other organization repositories. - * - Unstars the repository - * - Updates access permissions to packages - * - * Removing a user as a collaborator has the following effects on forks: - * - If the user had access to a fork through their membership to this repository, the user will also be removed from the fork. - * - If the user had their own fork of the repository, the fork will be deleted. - * - If the user still has read access to the repository, open pull requests by this user from a fork will be denied. - * - * > [!NOTE] - * > A user can still have access to the repository through organization permissions like base repository permissions. - * - * Although the API responds immediately, the additional permission updates might take some extra time to complete in the background. - * - * For more information on fork permissions, see "[About permissions and visibility of forks](https://docs.github.com/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks)". - */ - delete: operations["repos/remove-collaborator"]; - }; - "/repos/{owner}/{repo}/collaborators/{username}/permission": { - /** - * Get repository permissions for a user - * @description Checks the repository permission and role of a collaborator. - * - * The `permission` attribute provides the legacy base roles of `admin`, `write`, `read`, and `none`, where the - * `maintain` role is mapped to `write` and the `triage` role is mapped to `read`. - * The `role_name` attribute provides the name of the assigned role, including custom roles. The - * `permission` can also be used to determine which base level of access the collaborator has to the repository. - * - * The calculated permissions are the highest role assigned to the collaborator after considering all sources of grants, including: repo, teams, organization, and enterprise. - * There is presently not a way to differentiate between an organization level grant and a repository level grant from this endpoint response. - */ - get: operations["repos/get-collaborator-permission-level"]; - }; - "/repos/{owner}/{repo}/comments": { - /** - * List commit comments for a repository - * @description Lists the commit comments for a specified repository. Comments are ordered by ascending ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["repos/list-commit-comments-for-repo"]; - }; - "/repos/{owner}/{repo}/comments/{comment_id}": { - /** - * Get a commit comment - * @description Gets a specified commit comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["repos/get-commit-comment"]; - /** Delete a commit comment */ - delete: operations["repos/delete-commit-comment"]; - /** - * Update a commit comment - * @description Updates the contents of a specified commit comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - patch: operations["repos/update-commit-comment"]; - }; - "/repos/{owner}/{repo}/comments/{comment_id}/reactions": { - /** - * List reactions for a commit comment - * @description List the reactions to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment). - */ - get: operations["reactions/list-for-commit-comment"]; - /** - * Create reaction for a commit comment - * @description Create a reaction to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment). A response with an HTTP `200` status means that you already added the reaction type to this commit comment. - */ - post: operations["reactions/create-for-commit-comment"]; - }; - "/repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}": { - /** - * Delete a commit comment reaction - * @description > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/comments/:comment_id/reactions/:reaction_id`. - * - * Delete a reaction to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment). - */ - delete: operations["reactions/delete-for-commit-comment"]; - }; - "/repos/{owner}/{repo}/commits": { - /** - * List commits - * @description **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - get: operations["repos/list-commits"]; - }; - "/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head": { - /** - * List branches for HEAD commit - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Returns all branches where the given commit SHA is the HEAD, or latest commit for the branch. - */ - get: operations["repos/list-branches-for-head-commit"]; - }; - "/repos/{owner}/{repo}/commits/{commit_sha}/comments": { - /** - * List commit comments - * @description Lists the comments for a specified commit. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["repos/list-comments-for-commit"]; - /** - * Create a commit comment - * @description Create a comment for a commit using its `:commit_sha`. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - post: operations["repos/create-commit-comment"]; - }; - "/repos/{owner}/{repo}/commits/{commit_sha}/pulls": { - /** - * List pull requests associated with a commit - * @description Lists the merged pull request that introduced the commit to the repository. If the commit is not present in the default branch, it will return merged and open pull requests associated with the commit. - * - * To list the open or merged pull requests associated with a branch, you can set the `commit_sha` parameter to the branch name. - */ - get: operations["repos/list-pull-requests-associated-with-commit"]; - }; - "/repos/{owner}/{repo}/commits/{ref}": { - /** - * Get a commit - * @description Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint. - * - * > [!NOTE] - * > If there are more than 300 files in the commit diff and the default JSON media type is requested, the response will include pagination link headers for the remaining files, up to a limit of 3000 files. Each page contains the static commit information, and the only changes are to the file listing. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." Pagination query parameters are not supported for these media types. - * - * - **`application/vnd.github.diff`**: Returns the diff of the commit. Larger diffs may time out and return a 5xx status code. - * - **`application/vnd.github.patch`**: Returns the patch of the commit. Diffs with binary data will have no `patch` property. Larger diffs may time out and return a 5xx status code. - * - **`application/vnd.github.sha`**: Returns the commit's SHA-1 hash. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - get: operations["repos/get-commit"]; - }; - "/repos/{owner}/{repo}/commits/{ref}/check-runs": { - /** - * List check runs for a Git reference - * @description Lists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. - * - * > [!NOTE] - * > The endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * If there are more than 1000 check suites on a single git reference, this endpoint will limit check runs to the 1000 most recent check suites. To iterate over all possible check runs, use the [List check suites for a Git reference](https://docs.github.com/rest/reference/checks#list-check-suites-for-a-git-reference) endpoint and provide the `check_suite_id` parameter to the [List check runs in a check suite](https://docs.github.com/rest/reference/checks#list-check-runs-in-a-check-suite) endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - get: operations["checks/list-for-ref"]; - }; - "/repos/{owner}/{repo}/commits/{ref}/check-suites": { - /** - * List check suites for a Git reference - * @description Lists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. - * - * > [!NOTE] - * > The endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - get: operations["checks/list-suites-for-ref"]; - }; - "/repos/{owner}/{repo}/commits/{ref}/status": { - /** - * Get the combined status for a specific reference - * @description Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. - * - * - * Additionally, a combined `state` is returned. The `state` is one of: - * - * * **failure** if any of the contexts report as `error` or `failure` - * * **pending** if there are no statuses or a context is `pending` - * * **success** if the latest status for all contexts is `success` - */ - get: operations["repos/get-combined-status-for-ref"]; - }; - "/repos/{owner}/{repo}/commits/{ref}/statuses": { - /** - * List commit statuses for a reference - * @description Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one. - * - * This resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`. - */ - get: operations["repos/list-commit-statuses-for-ref"]; - }; - "/repos/{owner}/{repo}/community/profile": { - /** - * Get community profile metrics - * @description Returns all community profile metrics for a repository. The repository cannot be a fork. - * - * The returned metrics include an overall health score, the repository description, the presence of documentation, the - * detected code of conduct, the detected license, and the presence of ISSUE\_TEMPLATE, PULL\_REQUEST\_TEMPLATE, - * README, and CONTRIBUTING files. - * - * The `health_percentage` score is defined as a percentage of how many of - * the recommended community health files are present. For more information, see - * "[About community profiles for public repositories](https://docs.github.com/communities/setting-up-your-project-for-healthy-contributions/about-community-profiles-for-public-repositories)." - * - * `content_reports_enabled` is only returned for organization-owned repositories. - */ - get: operations["repos/get-community-profile-metrics"]; - }; - "/repos/{owner}/{repo}/compare/{basehead}": { - /** - * Compare two commits - * @description Compares two commits against one another. You can compare refs (branches or tags) and commit SHAs in the same repository, or you can compare refs and commit SHAs that exist in different repositories within the same repository network, including fork branches. For more information about how to view a repository's network, see "[Understanding connections between repositories](https://docs.github.com/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories)." - * - * This endpoint is equivalent to running the `git log BASE..HEAD` command, but it returns commits in a different order. The `git log BASE..HEAD` command returns commits in reverse chronological order, whereas the API returns commits in chronological order. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.diff`**: Returns the diff of the commit. - * - **`application/vnd.github.patch`**: Returns the patch of the commit. Diffs with binary data will have no `patch` property. - * - * The API response includes details about the files that were changed between the two commits. This includes the status of the change (if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. - * - * When calling this endpoint without any paging parameter (`per_page` or `page`), the returned list is limited to 250 commits, and the last commit in the list is the most recent of the entire comparison. - * - * **Working with large comparisons** - * - * To process a response with a large number of commits, use a query parameter (`per_page` or `page`) to paginate the results. When using pagination: - * - * - The list of changed files is only shown on the first page of results, and it includes up to 300 changed files for the entire comparison. - * - The results are returned in chronological order, but the last commit in the returned list may not be the most recent one in the entire set if there are more pages of results. - * - * For more information on working with pagination, see "[Using pagination in the REST API](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api)." - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The `verification` object includes the following fields: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - get: operations["repos/compare-commits-with-basehead"]; - }; - "/repos/{owner}/{repo}/contents/{path}": { - /** - * Get repository content - * @description Gets the contents of a file or directory in a repository. Specify the file path or directory with the `path` parameter. If you omit the `path` parameter, you will receive the contents of the repository's root directory. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw file contents for files and symlinks. - * - **`application/vnd.github.html+json`**: Returns the file contents in HTML. Markup languages are rendered to HTML using GitHub's open-source [Markup library](https://github.com/github/markup). - * - **`application/vnd.github.object+json`**: Returns the contents in a consistent object format regardless of the content type. For example, instead of an array of objects for a directory, the response will be an object with an `entries` attribute containing the array of objects. - * - * If the content is a directory, the response will be an array of objects, one object for each item in the directory. When listing the contents of a directory, submodules have their "type" specified as "file". Logically, the value _should_ be "submodule". This behavior exists [for backwards compatibility purposes](https://git.io/v1YCW). In the next major version of the API, the type will be returned as "submodule". - * - * If the content is a symlink and the symlink's target is a normal file in the repository, then the API responds with the content of the file. Otherwise, the API responds with an object describing the symlink itself. - * - * If the content is a submodule, the `submodule_git_url` field identifies the location of the submodule repository, and the `sha` identifies a specific commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out the submodule at that specific commit. If the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links["git"]`) and the github.com URLs (`html_url` and `_links["html"]`) will have null values. - * - * **Notes**: - * - * - To get a repository's contents recursively, you can [recursively get the tree](https://docs.github.com/rest/git/trees#get-a-tree). - * - This API has an upper limit of 1,000 files for a directory. If you need to retrieve - * more files, use the [Git Trees API](https://docs.github.com/rest/git/trees#get-a-tree). - * - Download URLs expire and are meant to be used just once. To ensure the download URL does not expire, please use the contents API to obtain a fresh download URL for each download. - * - If the requested file's size is: - * - 1 MB or smaller: All features of this endpoint are supported. - * - Between 1-100 MB: Only the `raw` or `object` custom media types are supported. Both will work as normal, except that when using the `object` media type, the `content` field will be an empty - * string and the `encoding` field will be `"none"`. To get the contents of these larger files, use the `raw` media type. - * - Greater than 100 MB: This endpoint is not supported. - */ - get: operations["repos/get-content"]; - /** - * Create or update file contents - * @description Creates a new file or replaces an existing file in a repository. - * - * > [!NOTE] - * > If you use this endpoint and the "[Delete a file](https://docs.github.com/rest/repos/contents/#delete-a-file)" endpoint in parallel, the concurrent requests will conflict and you will receive errors. You must use these endpoints serially instead. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. The `workflow` scope is also required in order to modify files in the `.github/workflows` directory. - */ - put: operations["repos/create-or-update-file-contents"]; - /** - * Delete a file - * @description Deletes a file in a repository. - * - * You can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author. - * - * The `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used. - * - * You must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code. - * - * > [!NOTE] - * > If you use this endpoint and the "[Create or update file contents](https://docs.github.com/rest/repos/contents/#create-or-update-file-contents)" endpoint in parallel, the concurrent requests will conflict and you will receive errors. You must use these endpoints serially instead. - */ - delete: operations["repos/delete-file"]; - }; - "/repos/{owner}/{repo}/contributors": { - /** - * List repository contributors - * @description Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API caches contributor data to improve performance. - * - * GitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information. - */ - get: operations["repos/list-contributors"]; - }; - "/repos/{owner}/{repo}/dependabot/alerts": { - /** - * List Dependabot alerts for a repository - * @description OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - get: operations["dependabot/list-alerts-for-repo"]; - }; - "/repos/{owner}/{repo}/dependabot/alerts/{alert_number}": { - /** - * Get a Dependabot alert - * @description OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - get: operations["dependabot/get-alert"]; - /** - * Update a Dependabot alert - * @description The authenticated user must have access to security alerts for the repository to use this endpoint. For more information, see "[Granting access to security alerts](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#granting-access-to-security-alerts)." - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - patch: operations["dependabot/update-alert"]; - }; - "/repos/{owner}/{repo}/dependabot/secrets": { - /** - * List repository secrets - * @description Lists all secrets available in a repository without revealing their encrypted - * values. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["dependabot/list-repo-secrets"]; - }; - "/repos/{owner}/{repo}/dependabot/secrets/public-key": { - /** - * Get a repository public key - * @description Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. Anyone with read access - * to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint if the repository is private. - */ - get: operations["dependabot/get-repo-public-key"]; - }; - "/repos/{owner}/{repo}/dependabot/secrets/{secret_name}": { - /** - * Get a repository secret - * @description Gets a single repository secret without revealing its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["dependabot/get-repo-secret"]; - /** - * Create or update a repository secret - * @description Creates or updates a repository secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["dependabot/create-or-update-repo-secret"]; - /** - * Delete a repository secret - * @description Deletes a secret in a repository using the secret name. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["dependabot/delete-repo-secret"]; - }; - "/repos/{owner}/{repo}/dependency-graph/compare/{basehead}": { - /** - * Get a diff of the dependencies between commits - * @description Gets the diff of the dependency changes between two commits of a repository, based on the changes to the dependency manifests made in those commits. - */ - get: operations["dependency-graph/diff-range"]; - }; - "/repos/{owner}/{repo}/dependency-graph/sbom": { - /** - * Export a software bill of materials (SBOM) for a repository. - * @description Exports the software bill of materials (SBOM) for a repository in SPDX JSON format. - */ - get: operations["dependency-graph/export-sbom"]; - }; - "/repos/{owner}/{repo}/dependency-graph/snapshots": { - /** - * Create a snapshot of dependencies for a repository - * @description Create a new snapshot of a repository's dependencies. - * - * The authenticated user must have access to the repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["dependency-graph/create-repository-snapshot"]; - }; - "/repos/{owner}/{repo}/deployments": { - /** - * List deployments - * @description Simple filtering of deployments is available via query parameters: - */ - get: operations["repos/list-deployments"]; - /** - * Create a deployment - * @description Deployments offer a few configurable parameters with certain defaults. - * - * The `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them - * before we merge a pull request. - * - * The `environment` parameter allows deployments to be issued to different runtime environments. Teams often have - * multiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter - * makes it easier to track which environments have requested deployments. The default environment is `production`. - * - * The `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If - * the ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds, - * the API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will - * return a failure response. - * - * By default, [commit statuses](https://docs.github.com/rest/commits/statuses) for every submitted context must be in a `success` - * state. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to - * specify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do - * not require any contexts or create any commit statuses, the deployment will always succeed. - * - * The `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text - * field that will be passed on when a deployment event is dispatched. - * - * The `task` parameter is used by the deployment system to allow different execution paths. In the web world this might - * be `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an - * application with debugging enabled. - * - * Merged branch response: - * - * You will see this response when GitHub automatically merges the base branch into the topic branch instead of creating - * a deployment. This auto-merge happens when: - * * Auto-merge option is enabled in the repository - * * Topic branch does not include the latest changes on the base branch, which is `master` in the response example - * * There are no merge conflicts - * - * If there are no new commits in the base branch, a new request to create a deployment should give a successful - * response. - * - * Merge conflict response: - * - * This error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't - * be merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts. - * - * Failed commit status checks: - * - * This error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success` - * status for the commit to be deployed, but one or more of the required contexts do not have a state of `success`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repo_deployment` scope to use this endpoint. - */ - post: operations["repos/create-deployment"]; - }; - "/repos/{owner}/{repo}/deployments/{deployment_id}": { - /** Get a deployment */ - get: operations["repos/get-deployment"]; - /** - * Delete a deployment - * @description If the repository only has one deployment, you can delete the deployment regardless of its status. If the repository has more than one deployment, you can only delete inactive deployments. This ensures that repositories with multiple deployments will always have an active deployment. - * - * To set a deployment as inactive, you must: - * - * * Create a new deployment that is active so that the system has a record of the current state, then delete the previously active deployment. - * * Mark the active deployment as inactive by adding any non-successful deployment status. - * - * For more information, see "[Create a deployment](https://docs.github.com/rest/deployments/deployments/#create-a-deployment)" and "[Create a deployment status](https://docs.github.com/rest/deployments/statuses#create-a-deployment-status)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repo_deployment` scope to use this endpoint. - */ - delete: operations["repos/delete-deployment"]; - }; - "/repos/{owner}/{repo}/deployments/{deployment_id}/statuses": { - /** - * List deployment statuses - * @description Users with pull access can view deployment statuses for a deployment: - */ - get: operations["repos/list-deployment-statuses"]; - /** - * Create a deployment status - * @description Users with `push` access can create deployment statuses for a given deployment. - * - * OAuth app tokens and personal access tokens (classic) need the `repo_deployment` scope to use this endpoint. - */ - post: operations["repos/create-deployment-status"]; - }; - "/repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}": { - /** - * Get a deployment status - * @description Users with pull access can view a deployment status for a deployment: - */ - get: operations["repos/get-deployment-status"]; - }; - "/repos/{owner}/{repo}/dispatches": { - /** - * Create a repository dispatch event - * @description You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see "[RepositoryDispatchEvent](https://docs.github.com/webhooks/event-payloads/#repository_dispatch)." - * - * The `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow. - * - * This input example shows how you can use the `client_payload` as a test to debug your workflow. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["repos/create-dispatch-event"]; - }; - "/repos/{owner}/{repo}/environments": { - /** - * List environments - * @description Lists the environments for a repository. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["repos/get-all-environments"]; - }; - "/repos/{owner}/{repo}/environments/{environment_name}": { - /** - * Get an environment - * @description > [!NOTE] - * > To get information about name patterns that branches must match in order to deploy to this environment, see "[Get a deployment branch policy](/rest/deployments/branch-policies#get-a-deployment-branch-policy)." - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["repos/get-environment"]; - /** - * Create or update an environment - * @description Create or update an environment with protection rules, such as required reviewers. For more information about environment protection rules, see "[Environments](/actions/reference/environments#environment-protection-rules)." - * - * > [!NOTE] - * > To create or update name patterns that branches must match in order to deploy to this environment, see "[Deployment branch policies](/rest/deployments/branch-policies)." - * - * > [!NOTE] - * > To create or update secrets for an environment, see "[GitHub Actions secrets](/rest/actions/secrets)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["repos/create-or-update-environment"]; - /** - * Delete an environment - * @description OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["repos/delete-an-environment"]; - }; - "/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies": { - /** - * List deployment branch policies - * @description Lists the deployment branch policies for an environment. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["repos/list-deployment-branch-policies"]; - /** - * Create a deployment branch policy - * @description Creates a deployment branch or tag policy for an environment. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["repos/create-deployment-branch-policy"]; - }; - "/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}": { - /** - * Get a deployment branch policy - * @description Gets a deployment branch or tag policy for an environment. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["repos/get-deployment-branch-policy"]; - /** - * Update a deployment branch policy - * @description Updates a deployment branch or tag policy for an environment. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["repos/update-deployment-branch-policy"]; - /** - * Delete a deployment branch policy - * @description Deletes a deployment branch or tag policy for an environment. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["repos/delete-deployment-branch-policy"]; - }; - "/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules": { - /** - * Get all deployment protection rules for an environment - * @description Gets all custom deployment protection rules that are enabled for an environment. Anyone with read access to the repository can use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)." - * - * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["repos/get-all-deployment-protection-rules"]; - /** - * Create a custom deployment protection rule on an environment - * @description Enable a custom deployment protection rule for an environment. - * - * The authenticated user must have admin or owner permissions to the repository to use this endpoint. - * - * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app), as well as the [guide to creating custom deployment protection rules](https://docs.github.com/actions/managing-workflow-runs-and-deployments/managing-deployments/creating-custom-deployment-protection-rules). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["repos/create-deployment-protection-rule"]; - }; - "/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps": { - /** - * List custom deployment rule integrations available for an environment - * @description Gets all custom deployment protection rule integrations that are available for an environment. - * - * The authenticated user must have admin or owner permissions to the repository to use this endpoint. - * - * For more information about environments, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)." - * - * For more information about the app that is providing this custom deployment rule, see "[GET an app](https://docs.github.com/rest/apps/apps#get-an-app)". - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["repos/list-custom-deployment-rule-integrations"]; - }; - "/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}": { - /** - * Get a custom deployment protection rule - * @description Gets an enabled custom deployment protection rule for an environment. Anyone with read access to the repository can use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)." - * - * For more information about the app that is providing this custom deployment rule, see [`GET /apps/{app_slug}`](https://docs.github.com/rest/apps/apps#get-an-app). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - get: operations["repos/get-custom-deployment-protection-rule"]; - /** - * Disable a custom protection rule for an environment - * @description Disables a custom deployment protection rule for an environment. - * - * The authenticated user must have admin or owner permissions to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["repos/disable-deployment-protection-rule"]; - }; - "/repos/{owner}/{repo}/environments/{environment_name}/secrets": { - /** - * List environment secrets - * @description Lists all secrets available in an environment without revealing their - * encrypted values. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/list-environment-secrets"]; - }; - "/repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key": { - /** - * Get an environment public key - * @description Get the public key for an environment, which you need to encrypt environment - * secrets. You need to encrypt a secret before you can create or update secrets. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-environment-public-key"]; - }; - "/repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}": { - /** - * Get an environment secret - * @description Gets a single environment secret without revealing its encrypted value. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-environment-secret"]; - /** - * Create or update an environment secret - * @description Creates or updates an environment secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["actions/create-or-update-environment-secret"]; - /** - * Delete an environment secret - * @description Deletes a secret in an environment using the secret name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/delete-environment-secret"]; - }; - "/repos/{owner}/{repo}/environments/{environment_name}/variables": { - /** - * List environment variables - * @description Lists all environment variables. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/list-environment-variables"]; - /** - * Create an environment variable - * @description Create an environment variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["actions/create-environment-variable"]; - }; - "/repos/{owner}/{repo}/environments/{environment_name}/variables/{name}": { - /** - * Get an environment variable - * @description Gets a specific variable in an environment. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["actions/get-environment-variable"]; - /** - * Delete an environment variable - * @description Deletes an environment variable using the variable name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["actions/delete-environment-variable"]; - /** - * Update an environment variable - * @description Updates an environment variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - patch: operations["actions/update-environment-variable"]; - }; - "/repos/{owner}/{repo}/events": { - /** - * List repository events - * @description > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - get: operations["activity/list-repo-events"]; - }; - "/repos/{owner}/{repo}/forks": { - /** List forks */ - get: operations["repos/list-forks"]; - /** - * Create a fork - * @description Create a fork for the authenticated user. - * - * > [!NOTE] - * > Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api). - * - * > [!NOTE] - * > Although this endpoint works with GitHub Apps, the GitHub App must be installed on the destination account with access to all repositories and on the source account with access to the source repository. - */ - post: operations["repos/create-fork"]; - }; - "/repos/{owner}/{repo}/git/blobs": { - /** Create a blob */ - post: operations["git/create-blob"]; - }; - "/repos/{owner}/{repo}/git/blobs/{file_sha}": { - /** - * Get a blob - * @description The `content` in the response will always be Base64 encoded. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw blob data. - * - **`application/vnd.github+json`**: Returns a JSON representation of the blob with `content` as a base64 encoded string. This is the default if no media type is specified. - * - * **Note** This endpoint supports blobs up to 100 megabytes in size. - */ - get: operations["git/get-blob"]; - }; - "/repos/{owner}/{repo}/git/commits": { - /** - * Create a commit - * @description Creates a new Git [commit object](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects). - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - post: operations["git/create-commit"]; - }; - "/repos/{owner}/{repo}/git/commits/{commit_sha}": { - /** - * Get a commit object - * @description Gets a Git [commit object](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects). - * - * To get the contents of a commit, see "[Get a commit](/rest/commits/commits#get-a-commit)." - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - get: operations["git/get-commit"]; - }; - "/repos/{owner}/{repo}/git/matching-refs/{ref}": { - /** - * List matching references - * @description Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array. - * - * When you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`. - * - * > [!NOTE] - * > You need to explicitly [request a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - * - * If you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`. - */ - get: operations["git/list-matching-refs"]; - }; - "/repos/{owner}/{repo}/git/ref/{ref}": { - /** - * Get a reference - * @description Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned. - * - * > [!NOTE] - * > You need to explicitly [request a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - */ - get: operations["git/get-ref"]; - }; - "/repos/{owner}/{repo}/git/refs": { - /** - * Create a reference - * @description Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches. - */ - post: operations["git/create-ref"]; - }; - "/repos/{owner}/{repo}/git/refs/{ref}": { - /** - * Delete a reference - * @description Deletes the provided reference. - */ - delete: operations["git/delete-ref"]; - /** - * Update a reference - * @description Updates the provided reference to point to a new SHA. For more information, see "[Git References](https://git-scm.com/book/en/v2/Git-Internals-Git-References)" in the Git documentation. - */ - patch: operations["git/update-ref"]; - }; - "/repos/{owner}/{repo}/git/tags": { - /** - * Create a tag object - * @description Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://docs.github.com/rest/git/refs#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://docs.github.com/rest/git/refs#create-a-reference) the tag reference - this call would be unnecessary. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - post: operations["git/create-tag"]; - }; - "/repos/{owner}/{repo}/git/tags/{tag_sha}": { - /** - * Get a tag - * @description **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - get: operations["git/get-tag"]; - }; - "/repos/{owner}/{repo}/git/trees": { - /** - * Create a tree - * @description The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure. - * - * If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "[Create a commit](https://docs.github.com/rest/git/commits#create-a-commit)" and "[Update a reference](https://docs.github.com/rest/git/refs#update-a-reference)." - * - * Returns an error if you try to delete a file that does not exist. - */ - post: operations["git/create-tree"]; - }; - "/repos/{owner}/{repo}/git/trees/{tree_sha}": { - /** - * Get a tree - * @description Returns a single tree using the SHA1 value or ref name for that tree. - * - * If `truncated` is `true` in the response then the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time. - * - * > [!NOTE] - * > The limit for the `tree` array is 100,000 entries with a maximum size of 7 MB when using the `recursive` parameter. - */ - get: operations["git/get-tree"]; - }; - "/repos/{owner}/{repo}/hooks": { - /** - * List repository webhooks - * @description Lists webhooks for a repository. `last response` may return null if there have not been any deliveries within 30 days. - */ - get: operations["repos/list-webhooks"]; - /** - * Create a repository webhook - * @description Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can - * share the same `config` as long as those webhooks do not have any `events` that overlap. - */ - post: operations["repos/create-webhook"]; - }; - "/repos/{owner}/{repo}/hooks/{hook_id}": { - /** - * Get a repository webhook - * @description Returns a webhook configured in a repository. To get only the webhook `config` properties, see "[Get a webhook configuration for a repository](/rest/webhooks/repo-config#get-a-webhook-configuration-for-a-repository)." - */ - get: operations["repos/get-webhook"]; - /** - * Delete a repository webhook - * @description Delete a webhook for an organization. - * - * The authenticated user must be a repository owner, or have admin access in the repository, to delete the webhook. - */ - delete: operations["repos/delete-webhook"]; - /** - * Update a repository webhook - * @description Updates a webhook configured in a repository. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for a repository](/rest/webhooks/repo-config#update-a-webhook-configuration-for-a-repository)." - */ - patch: operations["repos/update-webhook"]; - }; - "/repos/{owner}/{repo}/hooks/{hook_id}/config": { - /** - * Get a webhook configuration for a repository - * @description Returns the webhook configuration for a repository. To get more information about the webhook, including the `active` state and `events`, use "[Get a repository webhook](/rest/webhooks/repos#get-a-repository-webhook)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:repo_hook` or `repo` scope to use this endpoint. - */ - get: operations["repos/get-webhook-config-for-repo"]; - /** - * Update a webhook configuration for a repository - * @description Updates the webhook configuration for a repository. To update more information about the webhook, including the `active` state and `events`, use "[Update a repository webhook](/rest/webhooks/repos#update-a-repository-webhook)." - * - * OAuth app tokens and personal access tokens (classic) need the `write:repo_hook` or `repo` scope to use this endpoint. - */ - patch: operations["repos/update-webhook-config-for-repo"]; - }; - "/repos/{owner}/{repo}/hooks/{hook_id}/deliveries": { - /** - * List deliveries for a repository webhook - * @description Returns a list of webhook deliveries for a webhook configured in a repository. - */ - get: operations["repos/list-webhook-deliveries"]; - }; - "/repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}": { - /** - * Get a delivery for a repository webhook - * @description Returns a delivery for a webhook configured in a repository. - */ - get: operations["repos/get-webhook-delivery"]; - }; - "/repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts": { - /** - * Redeliver a delivery for a repository webhook - * @description Redeliver a webhook delivery for a webhook configured in a repository. - */ - post: operations["repos/redeliver-webhook-delivery"]; - }; - "/repos/{owner}/{repo}/hooks/{hook_id}/pings": { - /** - * Ping a repository webhook - * @description This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook. - */ - post: operations["repos/ping-webhook"]; - }; - "/repos/{owner}/{repo}/hooks/{hook_id}/tests": { - /** - * Test the push repository webhook - * @description This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated. - * - * > [!NOTE] - * > Previously `/repos/:owner/:repo/hooks/:hook_id/test` - */ - post: operations["repos/test-push-webhook"]; - }; - "/repos/{owner}/{repo}/immutable-releases": { - /** - * Check if immutable releases are enabled for a repository - * @description Shows whether immutable releases are enabled or disabled. Also identifies whether immutability is being - * enforced by the repository owner. The authenticated user must have admin read access to the repository. - */ - get: operations["repos/check-immutable-releases"]; - /** - * Enable immutable releases - * @description Enables immutable releases for a repository. The authenticated user must have admin access to the repository. - */ - put: operations["repos/enable-immutable-releases"]; - /** - * Disable immutable releases - * @description Disables immutable releases for a repository. The authenticated user must have admin access to the repository. - */ - delete: operations["repos/disable-immutable-releases"]; - }; - "/repos/{owner}/{repo}/import": { - /** - * Get an import status - * @deprecated - * @description View the progress of an import. - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - * - * **Import status** - * - * This section includes details about the possible values of the `status` field of the Import Progress response. - * - * An import that does not have errors will progress through these steps: - * - * * `detecting` - the "detection" step of the import is in progress because the request did not include a `vcs` parameter. The import is identifying the type of source control present at the URL. - * * `importing` - the "raw" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will include `commit_count` (the total number of raw commits that will be imported) and `percent` (0 - 100, the current progress through the import). - * * `mapping` - the "rewrite" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information. - * * `pushing` - the "push" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will include `push_percent`, which is the percent value reported by `git push` when it is "Writing objects". - * * `complete` - the import is complete, and the repository is ready on GitHub. - * - * If there are problems, you will see one of these in the `status` field: - * - * * `auth_failed` - the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section. - * * `error` - the import encountered an error. The import progress response will include the `failed_step` and an error message. Contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api) for more information. - * * `detection_needs_auth` - the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section. - * * `detection_found_nothing` - the importer didn't recognize any source control at the URL. To resolve, [Cancel the import](https://docs.github.com/rest/migrations/source-imports#cancel-an-import) and [retry](https://docs.github.com/rest/migrations/source-imports#start-an-import) with the correct URL. - * * `detection_found_multiple` - the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include a `project_choices` field with the possible project choices as values. To update project choice, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section. - * - * **The project_choices field** - * - * When multiple projects are found at the provided URL, the response hash will include a `project_choices` field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type. - * - * **Git LFS related fields** - * - * This section includes details about Git LFS related fields that may be present in the Import Progress response. - * - * * `use_lfs` - describes whether the import has been opted in or out of using Git LFS. The value can be `opt_in`, `opt_out`, or `undecided` if no action has been taken. - * * `has_large_files` - the boolean value describing whether files larger than 100MB were found during the `importing` step. - * * `large_files_size` - the total size in gigabytes of files larger than 100MB found in the originating repository. - * * `large_files_count` - the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a "Get Large Files" request. - */ - get: operations["migrations/get-import-status"]; - /** - * Start an import - * @deprecated - * @description Start a source import to a GitHub repository using GitHub Importer. - * Importing into a GitHub repository with GitHub Actions enabled is not supported and will - * return a status `422 Unprocessable Entity` response. - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - put: operations["migrations/start-import"]; - /** - * Cancel an import - * @deprecated - * @description Stop an import for a repository. - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - delete: operations["migrations/cancel-import"]; - /** - * Update an import - * @deprecated - * @description An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API - * request. If no parameters are provided, the import will be restarted. - * - * Some servers (e.g. TFS servers) can have several projects at a single URL. In those cases the import progress will - * have the status `detection_found_multiple` and the Import Progress response will include a `project_choices` array. - * You can select the project to import by providing one of the objects in the `project_choices` array in the update request. - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - patch: operations["migrations/update-import"]; - }; - "/repos/{owner}/{repo}/import/authors": { - /** - * Get commit authors - * @deprecated - * @description Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username `hubot` into something like `hubot `. - * - * This endpoint and the [Map a commit author](https://docs.github.com/rest/migrations/source-imports#map-a-commit-author) endpoint allow you to provide correct Git author information. - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - get: operations["migrations/get-commit-authors"]; - }; - "/repos/{owner}/{repo}/import/authors/{author_id}": { - /** - * Map a commit author - * @deprecated - * @description Update an author's identity for the import. Your application can continue updating authors any time before you push - * new commits to the repository. - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - patch: operations["migrations/map-commit-author"]; - }; - "/repos/{owner}/{repo}/import/large_files": { - /** - * Get large files - * @deprecated - * @description List files larger than 100MB found during the import - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - get: operations["migrations/get-large-files"]; - }; - "/repos/{owner}/{repo}/import/lfs": { - /** - * Update Git LFS preference - * @deprecated - * @description You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability - * is powered by [Git LFS](https://git-lfs.com). - * - * You can learn more about our LFS feature and working with large files [on our help - * site](https://docs.github.com/repositories/working-with-files/managing-large-files). - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - patch: operations["migrations/set-lfs-preference"]; - }; - "/repos/{owner}/{repo}/installation": { - /** - * Get a repository installation for the authenticated app - * @description Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - get: operations["apps/get-repo-installation"]; - }; - "/repos/{owner}/{repo}/interaction-limits": { - /** - * Get interaction restrictions for a repository - * @description Shows which type of GitHub user can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response. - */ - get: operations["interactions/get-restrictions-for-repo"]; - /** - * Set interaction restrictions for a repository - * @description Temporarily restricts interactions to a certain type of GitHub user within the given repository. You must have owner or admin access to set these restrictions. If an interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. - */ - put: operations["interactions/set-restrictions-for-repo"]; - /** - * Remove interaction restrictions for a repository - * @description Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions. If the interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. - */ - delete: operations["interactions/remove-restrictions-for-repo"]; - }; - "/repos/{owner}/{repo}/invitations": { - /** - * List repository invitations - * @description When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations. - */ - get: operations["repos/list-invitations"]; - }; - "/repos/{owner}/{repo}/invitations/{invitation_id}": { - /** Delete a repository invitation */ - delete: operations["repos/delete-invitation"]; - /** Update a repository invitation */ - patch: operations["repos/update-invitation"]; - }; - "/repos/{owner}/{repo}/issues": { - /** - * List repository issues - * @description List issues in a repository. Only open issues will be listed. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["issues/list-for-repo"]; - /** - * Create an issue - * @description Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://docs.github.com/articles/disabling-issues/), the API returns a `410 Gone` status. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - post: operations["issues/create"]; - }; - "/repos/{owner}/{repo}/issues/comments": { - /** - * List issue comments for a repository - * @description You can use the REST API to list comments on issues and pull requests for a repository. Every pull request is an issue, but not every issue is a pull request. - * - * By default, issue comments are ordered by ascending ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["issues/list-comments-for-repo"]; - }; - "/repos/{owner}/{repo}/issues/comments/{comment_id}": { - /** - * Get an issue comment - * @description You can use the REST API to get comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["issues/get-comment"]; - /** - * Delete an issue comment - * @description You can use the REST API to delete comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - */ - delete: operations["issues/delete-comment"]; - /** - * Update an issue comment - * @description You can use the REST API to update comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - patch: operations["issues/update-comment"]; - }; - "/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": { - /** - * List reactions for an issue comment - * @description List the reactions to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment). - */ - get: operations["reactions/list-for-issue-comment"]; - /** - * Create reaction for an issue comment - * @description Create a reaction to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment). A response with an HTTP `200` status means that you already added the reaction type to this issue comment. - */ - post: operations["reactions/create-for-issue-comment"]; - }; - "/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}": { - /** - * Delete an issue comment reaction - * @description > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id`. - * - * Delete a reaction to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment). - */ - delete: operations["reactions/delete-for-issue-comment"]; - }; - "/repos/{owner}/{repo}/issues/events": { - /** - * List issue events for a repository - * @description Lists events for a repository. - */ - get: operations["issues/list-events-for-repo"]; - }; - "/repos/{owner}/{repo}/issues/events/{event_id}": { - /** - * Get an issue event - * @description Gets a single event by the event id. - */ - get: operations["issues/get-event"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}": { - /** - * Get an issue - * @description The API returns a [`301 Moved Permanently` status](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api#follow-redirects) if the issue was - * [transferred](https://docs.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If - * the issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API - * returns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read - * access, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe - * to the [`issues`](https://docs.github.com/webhooks/event-payloads/#issues) webhook. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["issues/get"]; - /** - * Update an issue - * @description Issue owners and users with push access or Triage role can edit an issue. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - patch: operations["issues/update"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/assignees": { - /** - * Add assignees to an issue - * @description Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced. - */ - post: operations["issues/add-assignees"]; - /** - * Remove assignees from an issue - * @description Removes one or more assignees from an issue. - */ - delete: operations["issues/remove-assignees"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}": { - /** - * Check if a user can be assigned to a issue - * @description Checks if a user has permission to be assigned to a specific issue. - * - * If the `assignee` can be assigned to this issue, a `204` status code with no content is returned. - * - * Otherwise a `404` status code is returned. - */ - get: operations["issues/check-user-can-be-assigned-to-issue"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/comments": { - /** - * List issue comments - * @description You can use the REST API to list comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - * - * Issue comments are ordered by ascending ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["issues/list-comments"]; - /** - * Create an issue comment - * @description You can use the REST API to create comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). - * Creating content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - post: operations["issues/create-comment"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by": { - /** - * List dependencies an issue is blocked by - * @description You can use the REST API to list the dependencies an issue is blocked by. - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["issues/list-dependencies-blocked-by"]; - /** - * Add a dependency an issue is blocked by - * @description You can use the REST API to add a 'blocked by' relationship to an issue. - * - * Creating content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see [Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits) - * and [Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api). - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - post: operations["issues/add-blocked-by-dependency"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}": { - /** - * Remove dependency an issue is blocked by - * @description You can use the REST API to remove a dependency that an issue is blocked by. - * - * Removing content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see [Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits) - * and [Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api). - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass a specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - delete: operations["issues/remove-dependency-blocked-by"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking": { - /** - * List dependencies an issue is blocking - * @description You can use the REST API to list the dependencies an issue is blocking. - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["issues/list-dependencies-blocking"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/events": { - /** - * List issue events - * @description Lists all events for an issue. - */ - get: operations["issues/list-events"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/labels": { - /** - * List labels for an issue - * @description Lists all labels for an issue. - */ - get: operations["issues/list-labels-on-issue"]; - /** - * Set labels for an issue - * @description Removes any previous labels and sets the new labels for an issue. - */ - put: operations["issues/set-labels"]; - /** - * Add labels to an issue - * @description Adds labels to an issue. If you provide an empty array of labels, all labels are removed from the issue. - */ - post: operations["issues/add-labels"]; - /** - * Remove all labels from an issue - * @description Removes all labels from an issue. - */ - delete: operations["issues/remove-all-labels"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/labels/{name}": { - /** - * Remove a label from an issue - * @description Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist. - */ - delete: operations["issues/remove-label"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/lock": { - /** - * Lock an issue - * @description Users with push access can lock an issue or pull request's conversation. - * - * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - put: operations["issues/lock"]; - /** - * Unlock an issue - * @description Users with push access can unlock an issue's conversation. - */ - delete: operations["issues/unlock"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/parent": { - /** - * Get parent issue - * @description You can use the REST API to get the parent issue of a sub-issue. - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["issues/get-parent"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/reactions": { - /** - * List reactions for an issue - * @description List the reactions to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue). - */ - get: operations["reactions/list-for-issue"]; - /** - * Create reaction for an issue - * @description Create a reaction to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue). A response with an HTTP `200` status means that you already added the reaction type to this issue. - */ - post: operations["reactions/create-for-issue"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}": { - /** - * Delete an issue reaction - * @description > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/issues/:issue_number/reactions/:reaction_id`. - * - * Delete a reaction to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue). - */ - delete: operations["reactions/delete-for-issue"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/sub_issue": { - /** - * Remove sub-issue - * @description You can use the REST API to remove a sub-issue from an issue. - * Removing content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass a specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - delete: operations["issues/remove-sub-issue"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/sub_issues": { - /** - * List sub-issues - * @description You can use the REST API to list the sub-issues on an issue. - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["issues/list-sub-issues"]; - /** - * Add sub-issue - * @description You can use the REST API to add sub-issues to issues. - * - * Creating content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - post: operations["issues/add-sub-issue"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority": { - /** - * Reprioritize sub-issue - * @description You can use the REST API to reprioritize a sub-issue to a different position in the parent list. - */ - patch: operations["issues/reprioritize-sub-issue"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/timeline": { - /** - * List timeline events for an issue - * @description List all timeline events for an issue. - */ - get: operations["issues/list-events-for-timeline"]; - }; - "/repos/{owner}/{repo}/keys": { - /** List deploy keys */ - get: operations["repos/list-deploy-keys"]; - /** - * Create a deploy key - * @description You can create a read-only deploy key. - */ - post: operations["repos/create-deploy-key"]; - }; - "/repos/{owner}/{repo}/keys/{key_id}": { - /** Get a deploy key */ - get: operations["repos/get-deploy-key"]; - /** - * Delete a deploy key - * @description Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead. - */ - delete: operations["repos/delete-deploy-key"]; - }; - "/repos/{owner}/{repo}/labels": { - /** - * List labels for a repository - * @description Lists all labels for a repository. - */ - get: operations["issues/list-labels-for-repo"]; - /** - * Create a label - * @description Creates a label for the specified repository with the given name and color. The name and color parameters are required. The color must be a valid [hexadecimal color code](http://www.color-hex.com/). - */ - post: operations["issues/create-label"]; - }; - "/repos/{owner}/{repo}/labels/{name}": { - /** - * Get a label - * @description Gets a label using the given name. - */ - get: operations["issues/get-label"]; - /** - * Delete a label - * @description Deletes a label using the given label name. - */ - delete: operations["issues/delete-label"]; - /** - * Update a label - * @description Updates a label using the given label name. - */ - patch: operations["issues/update-label"]; - }; - "/repos/{owner}/{repo}/languages": { - /** - * List repository languages - * @description Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language. - */ - get: operations["repos/list-languages"]; - }; - "/repos/{owner}/{repo}/license": { - /** - * Get the license for a repository - * @description This method returns the contents of the repository's license file, if one is detected. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw contents of the license. - * - **`application/vnd.github.html+json`**: Returns the license contents in HTML. Markup languages are rendered to HTML using GitHub's open-source [Markup library](https://github.com/github/markup). - */ - get: operations["licenses/get-for-repo"]; - }; - "/repos/{owner}/{repo}/merge-upstream": { - /** - * Sync a fork branch with the upstream repository - * @description Sync a branch of a forked repository to keep it up-to-date with the upstream repository. - */ - post: operations["repos/merge-upstream"]; - }; - "/repos/{owner}/{repo}/merges": { - /** Merge a branch */ - post: operations["repos/merge"]; - }; - "/repos/{owner}/{repo}/milestones": { - /** - * List milestones - * @description Lists milestones for a repository. - */ - get: operations["issues/list-milestones"]; - /** - * Create a milestone - * @description Creates a milestone. - */ - post: operations["issues/create-milestone"]; - }; - "/repos/{owner}/{repo}/milestones/{milestone_number}": { - /** - * Get a milestone - * @description Gets a milestone using the given milestone number. - */ - get: operations["issues/get-milestone"]; - /** - * Delete a milestone - * @description Deletes a milestone using the given milestone number. - */ - delete: operations["issues/delete-milestone"]; - /** Update a milestone */ - patch: operations["issues/update-milestone"]; - }; - "/repos/{owner}/{repo}/milestones/{milestone_number}/labels": { - /** - * List labels for issues in a milestone - * @description Lists labels for issues in a milestone. - */ - get: operations["issues/list-labels-for-milestone"]; - }; - "/repos/{owner}/{repo}/notifications": { - /** - * List repository notifications for the authenticated user - * @description Lists all notifications for the current user in the specified repository. - */ - get: operations["activity/list-repo-notifications-for-authenticated-user"]; - /** - * Mark repository notifications as read - * @description Marks all notifications in a repository as "read" for the current user. If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List repository notifications for the authenticated user](https://docs.github.com/rest/activity/notifications#list-repository-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. - */ - put: operations["activity/mark-repo-notifications-as-read"]; - }; - "/repos/{owner}/{repo}/pages": { - /** - * Get a GitHub Pages site - * @description Gets information about a GitHub Pages site. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["repos/get-pages"]; - /** - * Update information about a GitHub Pages site - * @description Updates information for a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages). - * - * The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - put: operations["repos/update-information-about-pages-site"]; - /** - * Create a GitHub Pages site - * @description Configures a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages)." - * - * The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["repos/create-pages-site"]; - /** - * Delete a GitHub Pages site - * @description Deletes a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages). - * - * The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - delete: operations["repos/delete-pages-site"]; - }; - "/repos/{owner}/{repo}/pages/builds": { - /** - * List GitHub Pages builds - * @description Lists builts of a GitHub Pages site. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["repos/list-pages-builds"]; - /** - * Request a GitHub Pages build - * @description You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures. - * - * Build requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes. - */ - post: operations["repos/request-pages-build"]; - }; - "/repos/{owner}/{repo}/pages/builds/latest": { - /** - * Get latest Pages build - * @description Gets information about the single most recent build of a GitHub Pages site. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["repos/get-latest-pages-build"]; - }; - "/repos/{owner}/{repo}/pages/builds/{build_id}": { - /** - * Get GitHub Pages build - * @description Gets information about a GitHub Pages build. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["repos/get-pages-build"]; - }; - "/repos/{owner}/{repo}/pages/deployments": { - /** - * Create a GitHub Pages deployment - * @description Create a GitHub Pages deployment for a repository. - * - * The authenticated user must have write permission to the repository. - */ - post: operations["repos/create-pages-deployment"]; - }; - "/repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}": { - /** - * Get the status of a GitHub Pages deployment - * @description Gets the current status of a GitHub Pages deployment. - * - * The authenticated user must have read permission for the GitHub Pages site. - */ - get: operations["repos/get-pages-deployment"]; - }; - "/repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel": { - /** - * Cancel a GitHub Pages deployment - * @description Cancels a GitHub Pages deployment. - * - * The authenticated user must have write permissions for the GitHub Pages site. - */ - post: operations["repos/cancel-pages-deployment"]; - }; - "/repos/{owner}/{repo}/pages/health": { - /** - * Get a DNS health check for GitHub Pages - * @description Gets a health check of the DNS settings for the `CNAME` record configured for a repository's GitHub Pages. - * - * The first request to this endpoint returns a `202 Accepted` status and starts an asynchronous background task to get the results for the domain. After the background task completes, subsequent requests to this endpoint return a `200 OK` status with the health check results in the response. - * - * The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["repos/get-pages-health-check"]; - }; - "/repos/{owner}/{repo}/private-vulnerability-reporting": { - /** - * Check if private vulnerability reporting is enabled for a repository - * @description Returns a boolean indicating whether or not private vulnerability reporting is enabled for the repository. For more information, see "[Evaluating the security settings of a repository](https://docs.github.com/code-security/security-advisories/working-with-repository-security-advisories/evaluating-the-security-settings-of-a-repository)". - */ - get: operations["repos/check-private-vulnerability-reporting"]; - /** - * Enable private vulnerability reporting for a repository - * @description Enables private vulnerability reporting for a repository. The authenticated user must have admin access to the repository. For more information, see "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)." - */ - put: operations["repos/enable-private-vulnerability-reporting"]; - /** - * Disable private vulnerability reporting for a repository - * @description Disables private vulnerability reporting for a repository. The authenticated user must have admin access to the repository. For more information, see "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)". - */ - delete: operations["repos/disable-private-vulnerability-reporting"]; - }; - "/repos/{owner}/{repo}/projects": { - /** - * List repository projects - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - get: operations["projects-classic/list-for-repo"]; - /** - * Create a repository project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - post: operations["projects-classic/create-for-repo"]; - }; - "/repos/{owner}/{repo}/properties/values": { - /** - * Get all custom property values for a repository - * @description Gets all custom property values that are set for a repository. - * Users with read access to the repository can use this endpoint. - */ - get: operations["repos/custom-properties-for-repos-get-repository-values"]; - /** - * Create or update custom property values for a repository - * @description Create new or update existing custom property values for a repository. - * Using a value of `null` for a custom property will remove or 'unset' the property value from the repository. - * - * Repository admins and other users with the repository-level "edit custom property values" fine-grained permission can use this endpoint. - */ - patch: operations["repos/custom-properties-for-repos-create-or-update-repository-values"]; - }; - "/repos/{owner}/{repo}/pulls": { - /** - * List pull requests - * @description Lists pull requests in a specified repository. - * - * Draft pull requests are available in public repositories with GitHub - * Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing - * plans, and in public and private repositories with GitHub Team and GitHub Enterprise - * Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) - * in the GitHub Help documentation. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["pulls/list"]; - /** - * Create a pull request - * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - post: operations["pulls/create"]; - }; - "/repos/{owner}/{repo}/pulls/comments": { - /** - * List review comments in a repository - * @description Lists review comments for all pull requests in a repository. By default, - * review comments are in ascending order by ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["pulls/list-review-comments-for-repo"]; - }; - "/repos/{owner}/{repo}/pulls/comments/{comment_id}": { - /** - * Get a review comment for a pull request - * @description Provides details for a specified review comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["pulls/get-review-comment"]; - /** - * Delete a review comment for a pull request - * @description Deletes a review comment. - */ - delete: operations["pulls/delete-review-comment"]; - /** - * Update a review comment for a pull request - * @description Edits the content of a specified review comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - patch: operations["pulls/update-review-comment"]; - }; - "/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": { - /** - * List reactions for a pull request review comment - * @description List the reactions to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request). - */ - get: operations["reactions/list-for-pull-request-review-comment"]; - /** - * Create reaction for a pull request review comment - * @description Create a reaction to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request). A response with an HTTP `200` status means that you already added the reaction type to this pull request review comment. - */ - post: operations["reactions/create-for-pull-request-review-comment"]; - }; - "/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}": { - /** - * Delete a pull request comment reaction - * @description > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/pulls/comments/:comment_id/reactions/:reaction_id.` - * - * Delete a reaction to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request). - */ - delete: operations["reactions/delete-for-pull-request-comment"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}": { - /** - * Get a pull request - * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists details of a pull request by providing its number. - * - * When you get, [create](https://docs.github.com/rest/pulls/pulls/#create-a-pull-request), or [edit](https://docs.github.com/rest/pulls/pulls#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - * - * The value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit. - * - * The value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request: - * - * * If merged as a [merge commit](https://docs.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit. - * * If merged via a [squash](https://docs.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch. - * * If [rebased](https://docs.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to. - * - * Pass the appropriate [media type](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types) to fetch diff and patch formats. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - * - **`application/vnd.github.diff`**: For more information, see "[git-diff](https://git-scm.com/docs/git-diff)" in the Git documentation. If a diff is corrupt, contact us through the [GitHub Support portal](https://support.github.com/). Include the repository name and pull request ID in your message. - */ - get: operations["pulls/get"]; - /** - * Update a pull request - * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - patch: operations["pulls/update"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/codespaces": { - /** - * Create a codespace from a pull request - * @description Creates a codespace owned by the authenticated user for the specified pull request. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - post: operations["codespaces/create-with-pr-for-authenticated-user"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/comments": { - /** - * List review comments on a pull request - * @description Lists all review comments for a specified pull request. By default, review comments - * are in ascending order by ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["pulls/list-review-comments"]; - /** - * Create a review comment for a pull request - * @description Creates a review comment on the diff of a specified pull request. To add a regular comment to a pull request timeline, see "[Create an issue comment](https://docs.github.com/rest/issues/comments#create-an-issue-comment)." - * - * If your comment applies to more than one line in the pull request diff, you should use the parameters `line`, `side`, and optionally `start_line` and `start_side` in your request. - * - * The `position` parameter is closing down. If you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - post: operations["pulls/create-review-comment"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies": { - /** - * Create a reply for a review comment - * @description Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - post: operations["pulls/create-reply-for-review-comment"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/commits": { - /** - * List commits on a pull request - * @description Lists a maximum of 250 commits for a pull request. To receive a complete - * commit list for pull requests with more than 250 commits, use the [List commits](https://docs.github.com/rest/commits/commits#list-commits) - * endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["pulls/list-commits"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/files": { - /** - * List pull requests files - * @description Lists the files in a specified pull request. - * - * > [!NOTE] - * > Responses include a maximum of 3000 files. The paginated response returns 30 files per page by default. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["pulls/list-files"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/merge": { - /** - * Check if a pull request has been merged - * @description Checks if a pull request has been merged into the base branch. The HTTP status of the response indicates whether or not the pull request has been merged; the response body is empty. - */ - get: operations["pulls/check-if-merged"]; - /** - * Merge a pull request - * @description Merges a pull request into the base branch. - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - */ - put: operations["pulls/merge"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": { - /** - * Get all requested reviewers for a pull request - * @description Gets the users or teams whose review is requested for a pull request. Once a requested reviewer submits a review, they are no longer considered a requested reviewer. Their review will instead be returned by the [List reviews for a pull request](https://docs.github.com/rest/pulls/reviews#list-reviews-for-a-pull-request) operation. - */ - get: operations["pulls/list-requested-reviewers"]; - /** - * Request reviewers for a pull request - * @description This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. - */ - post: operations["pulls/request-reviewers"]; - /** - * Remove requested reviewers from a pull request - * @description Removes review requests from a pull request for a given set of users and/or teams. - */ - delete: operations["pulls/remove-requested-reviewers"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews": { - /** - * List reviews for a pull request - * @description Lists all reviews for a specified pull request. The list of reviews returns in chronological order. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["pulls/list-reviews"]; - /** - * Create a review for a pull request - * @description Creates a review on a specified pull request. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * Pull request reviews created in the `PENDING` state are not submitted and therefore do not include the `submitted_at` property in the response. To create a pending review for a pull request, leave the `event` parameter blank. For more information about submitting a `PENDING` review, see "[Submit a review for a pull request](https://docs.github.com/rest/pulls/reviews#submit-a-review-for-a-pull-request)." - * - * > [!NOTE] - * > To comment on a specific line in a file, you need to first determine the position of that line in the diff. To see a pull request diff, add the `application/vnd.github.v3.diff` media type to the `Accept` header of a call to the [Get a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) endpoint. - * - * The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - post: operations["pulls/create-review"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": { - /** - * Get a review for a pull request - * @description Retrieves a pull request review by its ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["pulls/get-review"]; - /** - * Update a review for a pull request - * @description Updates the contents of a specified review summary comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - put: operations["pulls/update-review"]; - /** - * Delete a pending review for a pull request - * @description Deletes a pull request review that has not been submitted. Submitted reviews cannot be deleted. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - delete: operations["pulls/delete-pending-review"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": { - /** - * List comments for a pull request review - * @description Lists comments for a specific pull request review. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["pulls/list-comments-for-review"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals": { - /** - * Dismiss a review for a pull request - * @description Dismisses a specified review on a pull request. - * - * > [!NOTE] - * > To dismiss a pull request review on a [protected branch](https://docs.github.com/rest/branches/branch-protection), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - put: operations["pulls/dismiss-review"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events": { - /** - * Submit a review for a pull request - * @description Submits a pending review for a pull request. For more information about creating a pending review for a pull request, see "[Create a review for a pull request](https://docs.github.com/rest/pulls/reviews#create-a-review-for-a-pull-request)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - post: operations["pulls/submit-review"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/update-branch": { - /** - * Update a pull request branch - * @description Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch. - * Note: If making a request on behalf of a GitHub App you must also have permissions to write the contents of the head repository. - */ - put: operations["pulls/update-branch"]; - }; - "/repos/{owner}/{repo}/readme": { - /** - * Get a repository README - * @description Gets the preferred README for a repository. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw file contents. This is the default if you do not specify a media type. - * - **`application/vnd.github.html+json`**: Returns the README in HTML. Markup languages are rendered to HTML using GitHub's open-source [Markup library](https://github.com/github/markup). - */ - get: operations["repos/get-readme"]; - }; - "/repos/{owner}/{repo}/readme/{dir}": { - /** - * Get a repository README for a directory - * @description Gets the README from a repository directory. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw file contents. This is the default if you do not specify a media type. - * - **`application/vnd.github.html+json`**: Returns the README in HTML. Markup languages are rendered to HTML using GitHub's open-source [Markup library](https://github.com/github/markup). - */ - get: operations["repos/get-readme-in-directory"]; - }; - "/repos/{owner}/{repo}/releases": { - /** - * List releases - * @description This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://docs.github.com/rest/repos/repos#list-repository-tags). - * - * Information about published releases are available to everyone. Only users with push access will receive listings for draft releases. - */ - get: operations["repos/list-releases"]; - /** - * Create a release - * @description Users with push access to the repository can create a release. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - */ - post: operations["repos/create-release"]; - }; - "/repos/{owner}/{repo}/releases/assets/{asset_id}": { - /** - * Get a release asset - * @description To download the asset's binary content: - * - * - If within a browser, fetch the location specified in the `browser_download_url` key provided in the response. - * - Alternatively, set the `Accept` header of the request to - * [`application/octet-stream`](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * The API will either redirect the client to the location, or stream it directly if possible. - * API clients should handle both a `200` or `302` response. - */ - get: operations["repos/get-release-asset"]; - /** Delete a release asset */ - delete: operations["repos/delete-release-asset"]; - /** - * Update a release asset - * @description Users with push access to the repository can edit a release asset. - */ - patch: operations["repos/update-release-asset"]; - }; - "/repos/{owner}/{repo}/releases/generate-notes": { - /** - * Generate release notes content for a release - * @description Generate a name and body describing a [release](https://docs.github.com/rest/releases/releases#get-a-release). The body content will be markdown formatted and contain information like the changes since last release and users who contributed. The generated release notes are not saved anywhere. They are intended to be generated and used when creating a new release. - */ - post: operations["repos/generate-release-notes"]; - }; - "/repos/{owner}/{repo}/releases/latest": { - /** - * Get the latest release - * @description View the latest published full release for the repository. - * - * The latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published. - */ - get: operations["repos/get-latest-release"]; - }; - "/repos/{owner}/{repo}/releases/tags/{tag}": { - /** - * Get a release by tag name - * @description Get a published release with the specified tag. - */ - get: operations["repos/get-release-by-tag"]; - }; - "/repos/{owner}/{repo}/releases/{release_id}": { - /** - * Get a release - * @description Gets a public release with the specified release ID. - * - * > [!NOTE] - * > This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a hypermedia resource. For more information, see "[Getting started with the REST API](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#hypermedia)." - */ - get: operations["repos/get-release"]; - /** - * Delete a release - * @description Users with push access to the repository can delete a release. - */ - delete: operations["repos/delete-release"]; - /** - * Update a release - * @description Users with push access to the repository can edit a release. - */ - patch: operations["repos/update-release"]; - }; - "/repos/{owner}/{repo}/releases/{release_id}/assets": { - /** List release assets */ - get: operations["repos/list-release-assets"]; - /** - * Upload a release asset - * @description This endpoint makes use of a [Hypermedia relation](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in - * the response of the [Create a release endpoint](https://docs.github.com/rest/releases/releases#create-a-release) to upload a release asset. - * - * You need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint. - * - * Most libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example: - * - * `application/zip` - * - * GitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example, - * you'll still need to pass your authentication to be able to upload an asset. - * - * When an upstream failure occurs, you will receive a `502 Bad Gateway` status. This may leave an empty asset with a state of `starter`. It can be safely deleted. - * - * **Notes:** - * * GitHub renames asset filenames that have special characters, non-alphanumeric characters, and leading or trailing periods. The "[List release assets](https://docs.github.com/rest/releases/assets#list-release-assets)" - * endpoint lists the renamed filenames. For more information and help, contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api). - * * To find the `release_id` query the [`GET /repos/{owner}/{repo}/releases/latest` endpoint](https://docs.github.com/rest/releases/releases#get-the-latest-release). - * * If you upload an asset with the same filename as another uploaded asset, you'll receive an error and must delete the old file before you can re-upload the new asset. - */ - post: operations["repos/upload-release-asset"]; - }; - "/repos/{owner}/{repo}/releases/{release_id}/reactions": { - /** - * List reactions for a release - * @description List the reactions to a [release](https://docs.github.com/rest/releases/releases#get-a-release). - */ - get: operations["reactions/list-for-release"]; - /** - * Create reaction for a release - * @description Create a reaction to a [release](https://docs.github.com/rest/releases/releases#get-a-release). A response with a `Status: 200 OK` means that you already added the reaction type to this release. - */ - post: operations["reactions/create-for-release"]; - }; - "/repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}": { - /** - * Delete a release reaction - * @description > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/releases/:release_id/reactions/:reaction_id`. - * - * Delete a reaction to a [release](https://docs.github.com/rest/releases/releases#get-a-release). - */ - delete: operations["reactions/delete-for-release"]; - }; - "/repos/{owner}/{repo}/rules/branches/{branch}": { - /** - * Get rules for a branch - * @description Returns all active rules that apply to the specified branch. The branch does not need to exist; rules that would apply - * to a branch with that name will be returned. All active rules that apply will be returned, regardless of the level - * at which they are configured (e.g. repository or organization). Rules in rulesets with "evaluate" or "disabled" - * enforcement statuses are not returned. - */ - get: operations["repos/get-branch-rules"]; - }; - "/repos/{owner}/{repo}/rulesets": { - /** - * Get all repository rulesets - * @description Get all the rulesets for a repository. - */ - get: operations["repos/get-repo-rulesets"]; - /** - * Create a repository ruleset - * @description Create a ruleset for a repository. - */ - post: operations["repos/create-repo-ruleset"]; - }; - "/repos/{owner}/{repo}/rulesets/rule-suites": { - /** - * List repository rule suites - * @description Lists suites of rule evaluations at the repository level. - * For more information, see "[Managing rulesets for a repository](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#viewing-insights-for-rulesets)." - */ - get: operations["repos/get-repo-rule-suites"]; - }; - "/repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}": { - /** - * Get a repository rule suite - * @description Gets information about a suite of rule evaluations from within a repository. - * For more information, see "[Managing rulesets for a repository](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#viewing-insights-for-rulesets)." - */ - get: operations["repos/get-repo-rule-suite"]; - }; - "/repos/{owner}/{repo}/rulesets/{ruleset_id}": { - /** - * Get a repository ruleset - * @description Get a ruleset for a repository. - * - * **Note:** To prevent leaking sensitive information, the `bypass_actors` property is only returned if the user - * making the API request has write access to the ruleset. - */ - get: operations["repos/get-repo-ruleset"]; - /** - * Update a repository ruleset - * @description Update a ruleset for a repository. - */ - put: operations["repos/update-repo-ruleset"]; - /** - * Delete a repository ruleset - * @description Delete a ruleset for a repository. - */ - delete: operations["repos/delete-repo-ruleset"]; - }; - "/repos/{owner}/{repo}/rulesets/{ruleset_id}/history": { - /** - * Get repository ruleset history - * @description Get the history of a repository ruleset. - */ - get: operations["repos/get-repo-ruleset-history"]; - }; - "/repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}": { - /** - * Get repository ruleset version - * @description Get a version of a repository ruleset. - */ - get: operations["repos/get-repo-ruleset-version"]; - }; - "/repos/{owner}/{repo}/secret-scanning/alerts": { - /** - * List secret scanning alerts for a repository - * @description Lists secret scanning alerts for an eligible repository, from newest to oldest. - * - * The authenticated user must be an administrator for the repository or for the organization that owns the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - get: operations["secret-scanning/list-alerts-for-repo"]; - }; - "/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": { - /** - * Get a secret scanning alert - * @description Gets a single secret scanning alert detected in an eligible repository. - * - * The authenticated user must be an administrator for the repository or for the organization that owns the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - get: operations["secret-scanning/get-alert"]; - /** - * Update a secret scanning alert - * @description Updates the status of a secret scanning alert in an eligible repository. - * - * The authenticated user must be an administrator for the repository or for the organization that owns the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - patch: operations["secret-scanning/update-alert"]; - }; - "/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations": { - /** - * List locations for a secret scanning alert - * @description Lists all locations for a given secret scanning alert for an eligible repository. - * - * The authenticated user must be an administrator for the repository or for the organization that owns the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - get: operations["secret-scanning/list-locations-for-alert"]; - }; - "/repos/{owner}/{repo}/secret-scanning/push-protection-bypasses": { - /** - * Create a push protection bypass - * @description Creates a bypass for a previously push protected secret. - * - * The authenticated user must be the original author of the committed secret. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - post: operations["secret-scanning/create-push-protection-bypass"]; - }; - "/repos/{owner}/{repo}/secret-scanning/scan-history": { - /** - * Get secret scanning scan history for a repository - * @description Lists the latest default incremental and backfill scans by type for a repository. Scans from Copilot Secret Scanning are not included. - * - * > [!NOTE] - * > This endpoint requires [GitHub Advanced Security](https://docs.github.com/get-started/learning-about-github/about-github-advanced-security)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - get: operations["secret-scanning/get-scan-history"]; - }; - "/repos/{owner}/{repo}/security-advisories": { - /** - * List repository security advisories - * @description Lists security advisories in a repository. - * - * The authenticated user can access unpublished security advisories from a repository if they are a security manager or administrator of that repository, or if they are a collaborator on any security advisory. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:read` scope to to get a published security advisory in a private repository, or any unpublished security advisory that the authenticated user has access to. - */ - get: operations["security-advisories/list-repository-advisories"]; - /** - * Create a repository security advisory - * @description Creates a new repository security advisory. - * - * In order to create a draft repository security advisory, the authenticated user must be a security manager or administrator of that repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:write` scope to use this endpoint. - */ - post: operations["security-advisories/create-repository-advisory"]; - }; - "/repos/{owner}/{repo}/security-advisories/reports": { - /** - * Privately report a security vulnerability - * @description Report a security vulnerability to the maintainers of the repository. - * See "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)" for more information about private vulnerability reporting. - */ - post: operations["security-advisories/create-private-vulnerability-report"]; - }; - "/repos/{owner}/{repo}/security-advisories/{ghsa_id}": { - /** - * Get a repository security advisory - * @description Get a repository security advisory using its GitHub Security Advisory (GHSA) identifier. - * - * Anyone can access any published security advisory on a public repository. - * - * The authenticated user can access an unpublished security advisory from a repository if they are a security manager or administrator of that repository, or if they are a - * collaborator on the security advisory. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:read` scope to to get a published security advisory in a private repository, or any unpublished security advisory that the authenticated user has access to. - */ - get: operations["security-advisories/get-repository-advisory"]; - /** - * Update a repository security advisory - * @description Update a repository security advisory using its GitHub Security Advisory (GHSA) identifier. - * - * In order to update any security advisory, the authenticated user must be a security manager or administrator of that repository, - * or a collaborator on the repository security advisory. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:write` scope to use this endpoint. - */ - patch: operations["security-advisories/update-repository-advisory"]; - }; - "/repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve": { - /** - * Request a CVE for a repository security advisory - * @description If you want a CVE identification number for the security vulnerability in your project, and don't already have one, you can request a CVE identification number from GitHub. For more information see "[Requesting a CVE identification number](https://docs.github.com/code-security/security-advisories/repository-security-advisories/publishing-a-repository-security-advisory#requesting-a-cve-identification-number-optional)." - * - * You may request a CVE for public repositories, but cannot do so for private repositories. - * - * In order to request a CVE for a repository security advisory, the authenticated user must be a security manager or administrator of that repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:write` scope to use this endpoint. - */ - post: operations["security-advisories/create-repository-advisory-cve-request"]; - }; - "/repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks": { - /** - * Create a temporary private fork - * @description Create a temporary private fork to collaborate on fixing a security vulnerability in your repository. - * - * > [!NOTE] - * > Forking a repository happens asynchronously. You may have to wait up to 5 minutes before you can access the fork. - */ - post: operations["security-advisories/create-fork"]; - }; - "/repos/{owner}/{repo}/stargazers": { - /** - * List stargazers - * @description Lists the people that have starred the repository. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.star+json`**: Includes a timestamp of when the star was created. - */ - get: operations["activity/list-stargazers-for-repo"]; - }; - "/repos/{owner}/{repo}/stats/code_frequency": { - /** - * Get the weekly commit activity - * @description Returns a weekly aggregate of the number of additions and deletions pushed to a repository. - * - * > [!NOTE] - * > This endpoint can only be used for repositories with fewer than 10,000 commits. If the repository contains 10,000 or more commits, a 422 status code will be returned. - */ - get: operations["repos/get-code-frequency-stats"]; - }; - "/repos/{owner}/{repo}/stats/commit_activity": { - /** - * Get the last year of commit activity - * @description Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`. - */ - get: operations["repos/get-commit-activity-stats"]; - }; - "/repos/{owner}/{repo}/stats/contributors": { - /** - * Get all contributor commit activity - * @description - * Returns the `total` number of commits authored by the contributor. In addition, the response includes a Weekly Hash (`weeks` array) with the following information: - * - * * `w` - Start of the week, given as a [Unix timestamp](https://en.wikipedia.org/wiki/Unix_time). - * * `a` - Number of additions - * * `d` - Number of deletions - * * `c` - Number of commits - * - * > [!NOTE] - * > This endpoint will return `0` values for all addition and deletion counts in repositories with 10,000 or more commits. - */ - get: operations["repos/get-contributors-stats"]; - }; - "/repos/{owner}/{repo}/stats/participation": { - /** - * Get the weekly commit count - * @description Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`. - * - * The array order is oldest week (index 0) to most recent week. - * - * The most recent week is seven days ago at UTC midnight to today at UTC midnight. - */ - get: operations["repos/get-participation-stats"]; - }; - "/repos/{owner}/{repo}/stats/punch_card": { - /** - * Get the hourly commit count for each day - * @description Each array contains the day number, hour number, and number of commits: - * - * * `0-6`: Sunday - Saturday - * * `0-23`: Hour of day - * * Number of commits - * - * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits. - */ - get: operations["repos/get-punch-card-stats"]; - }; - "/repos/{owner}/{repo}/statuses/{sha}": { - /** - * Create a commit status - * @description Users with push access in a repository can create commit statuses for a given SHA. - * - * Note: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error. - */ - post: operations["repos/create-commit-status"]; - }; - "/repos/{owner}/{repo}/subscribers": { - /** - * List watchers - * @description Lists the people watching the specified repository. - */ - get: operations["activity/list-watchers-for-repo"]; - }; - "/repos/{owner}/{repo}/subscription": { - /** - * Get a repository subscription - * @description Gets information about whether the authenticated user is subscribed to the repository. - */ - get: operations["activity/get-repo-subscription"]; - /** - * Set a repository subscription - * @description If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://docs.github.com/rest/activity/watching#delete-a-repository-subscription) completely. - */ - put: operations["activity/set-repo-subscription"]; - /** - * Delete a repository subscription - * @description This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://docs.github.com/rest/activity/watching#set-a-repository-subscription). - */ - delete: operations["activity/delete-repo-subscription"]; - }; - "/repos/{owner}/{repo}/tags": { - /** List repository tags */ - get: operations["repos/list-tags"]; - }; - "/repos/{owner}/{repo}/tags/protection": { - /** - * Closing down - List tag protection states for a repository - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed after August 30, 2024. Use the "[Repository Rulesets](https://docs.github.com/rest/repos/rules#get-all-repository-rulesets)" endpoint instead. - * - * This returns the tag protection states of a repository. - * - * This information is only available to repository administrators. - */ - get: operations["repos/list-tag-protection"]; - /** - * Closing down - Create a tag protection state for a repository - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed after August 30, 2024. Use the "[Repository Rulesets](https://docs.github.com/rest/repos/rules#create-a-repository-ruleset)" endpoint instead. - * - * This creates a tag protection state for a repository. - * This endpoint is only available to repository administrators. - */ - post: operations["repos/create-tag-protection"]; - }; - "/repos/{owner}/{repo}/tags/protection/{tag_protection_id}": { - /** - * Closing down - Delete a tag protection state for a repository - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed after August 30, 2024. Use the "[Repository Rulesets](https://docs.github.com/rest/repos/rules#delete-a-repository-ruleset)" endpoint instead. - * - * This deletes a tag protection state for a repository. - * This endpoint is only available to repository administrators. - */ - delete: operations["repos/delete-tag-protection"]; - }; - "/repos/{owner}/{repo}/tarball/{ref}": { - /** - * Download a repository archive (tar) - * @description Gets a redirect URL to download a tar archive for a repository. If you omit `:ref`, the repository’s default branch (usually - * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use - * the `Location` header to make a second `GET` request. - * - * > [!NOTE] - * > For private repositories, these links are temporary and expire after five minutes. - */ - get: operations["repos/download-tarball-archive"]; - }; - "/repos/{owner}/{repo}/teams": { - /** - * List repository teams - * @description Lists the teams that have access to the specified repository and that are also visible to the authenticated user. - * - * For a public repository, a team is listed only if that team added the public repository explicitly. - * - * OAuth app tokens and personal access tokens (classic) need the `public_repo` or `repo` scope to use this endpoint with a public repository, and `repo` scope to use this endpoint with a private repository. - */ - get: operations["repos/list-teams"]; - }; - "/repos/{owner}/{repo}/topics": { - /** Get all repository topics */ - get: operations["repos/get-all-topics"]; - /** Replace all repository topics */ - put: operations["repos/replace-all-topics"]; - }; - "/repos/{owner}/{repo}/traffic/clones": { - /** - * Get repository clones - * @description Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. - */ - get: operations["repos/get-clones"]; - }; - "/repos/{owner}/{repo}/traffic/popular/paths": { - /** - * Get top referral paths - * @description Get the top 10 popular contents over the last 14 days. - */ - get: operations["repos/get-top-paths"]; - }; - "/repos/{owner}/{repo}/traffic/popular/referrers": { - /** - * Get top referral sources - * @description Get the top 10 referrers over the last 14 days. - */ - get: operations["repos/get-top-referrers"]; - }; - "/repos/{owner}/{repo}/traffic/views": { - /** - * Get page views - * @description Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. - */ - get: operations["repos/get-views"]; - }; - "/repos/{owner}/{repo}/transfer": { - /** - * Transfer a repository - * @description A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://docs.github.com/articles/about-repository-transfers/). - */ - post: operations["repos/transfer"]; - }; - "/repos/{owner}/{repo}/vulnerability-alerts": { - /** - * Check if vulnerability alerts are enabled for a repository - * @description Shows whether dependency alerts are enabled or disabled for a repository. The authenticated user must have admin read access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - get: operations["repos/check-vulnerability-alerts"]; - /** - * Enable vulnerability alerts - * @description Enables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - put: operations["repos/enable-vulnerability-alerts"]; - /** - * Disable vulnerability alerts - * @description Disables dependency alerts and the dependency graph for a repository. - * The authenticated user must have admin access to the repository. For more information, - * see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - delete: operations["repos/disable-vulnerability-alerts"]; - }; - "/repos/{owner}/{repo}/zipball/{ref}": { - /** - * Download a repository archive (zip) - * @description Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually - * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use - * the `Location` header to make a second `GET` request. - * - * > [!NOTE] - * > For private repositories, these links are temporary and expire after five minutes. If the repository is empty, you will receive a 404 when you follow the redirect. - */ - get: operations["repos/download-zipball-archive"]; - }; - "/repos/{template_owner}/{template_repo}/generate": { - /** - * Create a repository using a template - * @description Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. If the repository is not public, the authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/repos/repos#get-a-repository) endpoint and check that the `is_template` key is `true`. - * - * OAuth app tokens and personal access tokens (classic) need the `public_repo` or `repo` scope to create a public repository, and `repo` scope to create a private repository. - */ - post: operations["repos/create-using-template"]; - }; - "/repositories": { - /** - * List public repositories - * @description Lists all public repositories in the order that they were created. - * - * Note: - * - For GitHub Enterprise Server, this endpoint will only list repositories available to all users on the enterprise. - * - Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of repositories. - */ - get: operations["repos/list-public"]; - }; - "/search/code": { - /** - * Search code - * @description Searches for query terms inside of a file. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery) repository, your query would look something like this: - * - * `q=addClass+in:file+language:js+repo:jquery/jquery` - * - * This query searches for the keyword `addClass` within a file's contents. The query limits the search to files where the language is JavaScript in the `jquery/jquery` repository. - * - * Considerations for code search: - * - * Due to the complexity of searching code, there are a few restrictions on how searches are performed: - * - * * Only the _default branch_ is considered. In most cases, this will be the `master` branch. - * * Only files smaller than 384 KB are searchable. - * * You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing - * language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is. - * - * This endpoint requires you to authenticate and limits you to 10 requests per minute. - */ - get: operations["search/code"]; - }; - "/search/commits": { - /** - * Search commits - * @description Find commits via various criteria on the default branch (usually `main`). This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match - * metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this: - * - * `q=repo:octocat/Spoon-Knife+css` - */ - get: operations["search/commits"]; - }; - "/search/issues": { - /** - * Search issues and pull requests - * @description Find issues by state and keyword. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted - * search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this. - * - * `q=windows+label:bug+language:python+state:open&sort=created&order=asc` - * - * This query searches for the keyword `windows`, within any open issue that is labeled as `bug`. The search runs across repositories whose primary language is Python. The results are sorted by creation date in ascending order, which means the oldest issues appear first in the search results. - * - * > [!NOTE] - * > For requests made by GitHub Apps with a user access token, you can't retrieve a combination of issues and pull requests in a single query. Requests that don't include the `is:issue` or `is:pull-request` qualifier will receive an HTTP `422 Unprocessable Entity` response. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about the `is` qualifier, see "[Searching only issues or pull requests](https://docs.github.com/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests)." - */ - get: operations["search/issues-and-pull-requests"]; - }; - "/search/labels": { - /** - * Search labels - * @description Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this: - * - * `q=bug+defect+enhancement&repository_id=64778136` - * - * The labels that best match the query appear first in the search results. - */ - get: operations["search/labels"]; - }; - "/search/repositories": { - /** - * Search repositories - * @description Find repositories via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to search for popular Tetris repositories written in assembly code, your query might look like this: - * - * `q=tetris+language:assembly&sort=stars&order=desc` - * - * This query searches for repositories with the word `tetris` in the name, the description, or the README. The results are limited to repositories where the primary language is assembly. The results are sorted by stars in descending order, so that the most popular repositories appear first in the search results. - */ - get: operations["search/repos"]; - }; - "/search/topics": { - /** - * Search topics - * @description Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). See "[Searching topics](https://docs.github.com/articles/searching-topics/)" for a detailed list of qualifiers. - * - * When searching for topics, you can get text match metadata for the topic's **short\_description**, **description**, **name**, or **display\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to search for topics related to Ruby that are featured on https://github.com/topics. Your query might look like this: - * - * `q=ruby+is:featured` - * - * This query searches for topics with the keyword `ruby` and limits the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results. - */ - get: operations["search/topics"]; - }; - "/search/users": { - /** - * Search users - * @description Find users via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for users, you can get text match metadata for the issue **login**, public **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you're looking for a list of popular users, you might try this query: - * - * `q=tom+repos:%3E42+followers:%3E1000` - * - * This query searches for users with the name `tom`. The results are restricted to users with more than 42 repositories and over 1,000 followers. - * - * This endpoint does not accept authentication and will only include publicly visible users. As an alternative, you can use the GraphQL API. The GraphQL API requires authentication and will return private users, including Enterprise Managed Users (EMUs), that you are authorized to view. For more information, see "[GraphQL Queries](https://docs.github.com/graphql/reference/queries#search)." - */ - get: operations["search/users"]; - }; - "/teams/{team_id}": { - /** - * Get a team (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the [Get a team by name](https://docs.github.com/rest/teams/teams#get-a-team-by-name) endpoint. - */ - get: operations["teams/get-legacy"]; - /** - * Delete a team (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a team](https://docs.github.com/rest/teams/teams#delete-a-team) endpoint. - * - * To delete a team, the authenticated user must be an organization owner or team maintainer. - * - * If you are an organization owner, deleting a parent team will delete all of its child teams as well. - */ - delete: operations["teams/delete-legacy"]; - /** - * Update a team (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a team](https://docs.github.com/rest/teams/teams#update-a-team) endpoint. - * - * To edit a team, the authenticated user must either be an organization owner or a team maintainer. - * - * > [!NOTE] - * > With nested teams, the `privacy` for parent teams cannot be `secret`. - */ - patch: operations["teams/update-legacy"]; - }; - "/teams/{team_id}/discussions": { - /** - * List discussions (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List discussions`](https://docs.github.com/rest/teams/discussions#list-discussions) endpoint. - * - * List all discussions on a team's page. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - get: operations["teams/list-discussions-legacy"]; - /** - * Create a discussion (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create a discussion`](https://docs.github.com/rest/teams/discussions#create-a-discussion) endpoint. - * - * Creates a new discussion post on a team's page. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - post: operations["teams/create-discussion-legacy"]; - }; - "/teams/{team_id}/discussions/{discussion_number}": { - /** - * Get a discussion (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion) endpoint. - * - * Get a specific discussion on a team's page. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - get: operations["teams/get-discussion-legacy"]; - /** - * Delete a discussion (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Delete a discussion`](https://docs.github.com/rest/teams/discussions#delete-a-discussion) endpoint. - * - * Delete a discussion from a team's page. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - delete: operations["teams/delete-discussion-legacy"]; - /** - * Update a discussion (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion](https://docs.github.com/rest/teams/discussions#update-a-discussion) endpoint. - * - * Edits the title and body text of a discussion post. Only the parameters you provide are updated. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - patch: operations["teams/update-discussion-legacy"]; - }; - "/teams/{team_id}/discussions/{discussion_number}/comments": { - /** - * List discussion comments (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [List discussion comments](https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments) endpoint. - * - * List all comments on a team discussion. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - get: operations["teams/list-discussion-comments-legacy"]; - /** - * Create a discussion comment (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Create a discussion comment](https://docs.github.com/rest/teams/discussion-comments#create-a-discussion-comment) endpoint. - * - * Creates a new comment on a team discussion. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - post: operations["teams/create-discussion-comment-legacy"]; - }; - "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": { - /** - * Get a discussion comment (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment) endpoint. - * - * Get a specific comment on a team discussion. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - get: operations["teams/get-discussion-comment-legacy"]; - /** - * Delete a discussion comment (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a discussion comment](https://docs.github.com/rest/teams/discussion-comments#delete-a-discussion-comment) endpoint. - * - * Deletes a comment on a team discussion. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - delete: operations["teams/delete-discussion-comment-legacy"]; - /** - * Update a discussion comment (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion comment](https://docs.github.com/rest/teams/discussion-comments#update-a-discussion-comment) endpoint. - * - * Edits the body text of a discussion comment. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - patch: operations["teams/update-discussion-comment-legacy"]; - }; - "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": { - /** - * List reactions for a team discussion comment (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion comment`](https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment) endpoint. - * - * List the reactions to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - get: operations["reactions/list-for-team-discussion-comment-legacy"]; - /** - * Create reaction for a team discussion comment (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new "[Create reaction for a team discussion comment](https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion-comment)" endpoint. - * - * Create a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). - * - * A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - post: operations["reactions/create-for-team-discussion-comment-legacy"]; - }; - "/teams/{team_id}/discussions/{discussion_number}/reactions": { - /** - * List reactions for a team discussion (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion`](https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion) endpoint. - * - * List the reactions to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - get: operations["reactions/list-for-team-discussion-legacy"]; - /** - * Create reaction for a team discussion (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create reaction for a team discussion`](https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion) endpoint. - * - * Create a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). - * - * A response with an HTTP `200` status means that you already added the reaction type to this team discussion. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - post: operations["reactions/create-for-team-discussion-legacy"]; - }; - "/teams/{team_id}/invitations": { - /** - * List pending team invitations (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List pending team invitations`](https://docs.github.com/rest/teams/members#list-pending-team-invitations) endpoint. - * - * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. - */ - get: operations["teams/list-pending-invitations-legacy"]; - }; - "/teams/{team_id}/members": { - /** - * List team members (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team members`](https://docs.github.com/rest/teams/members#list-team-members) endpoint. - * - * Team members will include the members of child teams. - */ - get: operations["teams/list-members-legacy"]; - }; - "/teams/{team_id}/members/{username}": { - /** - * Get team member (Legacy) - * @deprecated - * @description The "Get team member" endpoint (described below) is closing down. - * - * We recommend using the [Get team membership for a user](https://docs.github.com/rest/teams/members#get-team-membership-for-a-user) endpoint instead. It allows you to get both active and pending memberships. - * - * To list members in a team, the team must be visible to the authenticated user. - */ - get: operations["teams/get-member-legacy"]; - /** - * Add team member (Legacy) - * @deprecated - * @description The "Add team member" endpoint (described below) is closing down. - * - * We recommend using the [Add or update team membership for a user](https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user) endpoint instead. It allows you to invite new organization members to your teams. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To add someone to a team, the authenticated user must be an organization owner or a team maintainer in the team they're changing. The person being added to the team must be a member of the team's organization. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - put: operations["teams/add-member-legacy"]; - /** - * Remove team member (Legacy) - * @deprecated - * @description The "Remove team member" endpoint (described below) is closing down. - * - * We recommend using the [Remove team membership for a user](https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user) endpoint instead. It allows you to remove both active and pending memberships. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To remove a team member, the authenticated user must have 'admin' permissions to the team or be an owner of the org that the team is associated with. Removing a team member does not delete the user, it just removes them from the team. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - */ - delete: operations["teams/remove-member-legacy"]; - }; - "/teams/{team_id}/memberships/{username}": { - /** - * Get team membership for a user (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get team membership for a user](https://docs.github.com/rest/teams/members#get-team-membership-for-a-user) endpoint. - * - * Team members will include the members of child teams. - * - * To get a user's membership with a team, the team must be visible to the authenticated user. - * - * **Note:** - * The response contains the `state` of the membership and the member's `role`. - * - * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/teams/teams#create-a-team). - */ - get: operations["teams/get-membership-for-user-legacy"]; - /** - * Add or update team membership for a user (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team membership for a user](https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user) endpoint. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * If the user is already a member of the team's organization, this endpoint will add the user to the team. To add a membership between an organization member and a team, the authenticated user must be an organization owner or a team maintainer. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * If the user is unaffiliated with the team's organization, this endpoint will send an invitation to the user via email. This newly-created membership will be in the "pending" state until the user accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. To add a membership between an unaffiliated user and a team, the authenticated user must be an organization owner. - * - * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer. - */ - put: operations["teams/add-or-update-membership-for-user-legacy"]; - /** - * Remove team membership for a user (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove team membership for a user](https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user) endpoint. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - */ - delete: operations["teams/remove-membership-for-user-legacy"]; - }; - "/teams/{team_id}/projects": { - /** - * List team projects (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - get: operations["teams/list-projects-legacy"]; - }; - "/teams/{team_id}/projects/{project_id}": { - /** - * Check team permissions for a project (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - get: operations["teams/check-permissions-for-project-legacy"]; - /** - * Add or update team project permissions (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - put: operations["teams/add-or-update-project-permissions-legacy"]; - /** - * Remove a project from a team (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - delete: operations["teams/remove-project-legacy"]; - }; - "/teams/{team_id}/repos": { - /** - * List team repositories (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [List team repositories](https://docs.github.com/rest/teams/teams#list-team-repositories) endpoint. - */ - get: operations["teams/list-repos-legacy"]; - }; - "/teams/{team_id}/repos/{owner}/{repo}": { - /** - * Check team permissions for a repository (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a repository](https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-repository) endpoint. - * - * > [!NOTE] - * > Repositories inherited through a parent team will also be checked. - * - * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types/) via the `Accept` header: - */ - get: operations["teams/check-permissions-for-repo-legacy"]; - /** - * Add or update team repository permissions (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new "[Add or update team repository permissions](https://docs.github.com/rest/teams/teams#add-or-update-team-repository-permissions)" endpoint. - * - * To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. - * - * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - put: operations["teams/add-or-update-repo-permissions-legacy"]; - /** - * Remove a repository from a team (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a repository from a team](https://docs.github.com/rest/teams/teams#remove-a-repository-from-a-team) endpoint. - * - * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. NOTE: This does not delete the repository, it just removes it from the team. - */ - delete: operations["teams/remove-repo-legacy"]; - }; - "/teams/{team_id}/teams": { - /** - * List child teams (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List child teams`](https://docs.github.com/rest/teams/teams#list-child-teams) endpoint. - */ - get: operations["teams/list-child-legacy"]; - }; - "/user": { - /** - * Get the authenticated user - * @description OAuth app tokens and personal access tokens (classic) need the `user` scope in order for the response to include private profile information. - */ - get: operations["users/get-authenticated"]; - /** - * Update the authenticated user - * @description **Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API. - */ - patch: operations["users/update-authenticated"]; - }; - "/user/blocks": { - /** - * List users blocked by the authenticated user - * @description List the users you've blocked on your personal account. - */ - get: operations["users/list-blocked-by-authenticated-user"]; - }; - "/user/blocks/{username}": { - /** - * Check if a user is blocked by the authenticated user - * @description Returns a 204 if the given user is blocked by the authenticated user. Returns a 404 if the given user is not blocked by the authenticated user, or if the given user account has been identified as spam by GitHub. - */ - get: operations["users/check-blocked"]; - /** - * Block a user - * @description Blocks the given user and returns a 204. If the authenticated user cannot block the given user a 422 is returned. - */ - put: operations["users/block"]; - /** - * Unblock a user - * @description Unblocks the given user and returns a 204. - */ - delete: operations["users/unblock"]; - }; - "/user/codespaces": { - /** - * List codespaces for the authenticated user - * @description Lists the authenticated user's codespaces. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - get: operations["codespaces/list-for-authenticated-user"]; - /** - * Create a codespace for the authenticated user - * @description Creates a new codespace, owned by the authenticated user. - * - * This endpoint requires either a `repository_id` OR a `pull_request` but not both. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - post: operations["codespaces/create-for-authenticated-user"]; - }; - "/user/codespaces/secrets": { - /** - * List secrets for the authenticated user - * @description Lists all development environment secrets available for a user's codespaces without revealing their - * encrypted values. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - get: operations["codespaces/list-secrets-for-authenticated-user"]; - }; - "/user/codespaces/secrets/public-key": { - /** - * Get public key for the authenticated user - * @description Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - get: operations["codespaces/get-public-key-for-authenticated-user"]; - }; - "/user/codespaces/secrets/{secret_name}": { - /** - * Get a secret for the authenticated user - * @description Gets a development environment secret available to a user's codespaces without revealing its encrypted value. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - get: operations["codespaces/get-secret-for-authenticated-user"]; - /** - * Create or update a secret for the authenticated user - * @description Creates or updates a development environment secret for a user's codespace with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - put: operations["codespaces/create-or-update-secret-for-authenticated-user"]; - /** - * Delete a secret for the authenticated user - * @description Deletes a development environment secret from a user's codespaces using the secret name. Deleting the secret will remove access from all codespaces that were allowed to access the secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - delete: operations["codespaces/delete-secret-for-authenticated-user"]; - }; - "/user/codespaces/secrets/{secret_name}/repositories": { - /** - * List selected repositories for a user secret - * @description List the repositories that have been granted the ability to use a user's development environment secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - get: operations["codespaces/list-repositories-for-secret-for-authenticated-user"]; - /** - * Set selected repositories for a user secret - * @description Select the repositories that will use a user's development environment secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - put: operations["codespaces/set-repositories-for-secret-for-authenticated-user"]; - }; - "/user/codespaces/secrets/{secret_name}/repositories/{repository_id}": { - /** - * Add a selected repository to a user secret - * @description Adds a repository to the selected repositories for a user's development environment secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - put: operations["codespaces/add-repository-for-secret-for-authenticated-user"]; - /** - * Remove a selected repository from a user secret - * @description Removes a repository from the selected repositories for a user's development environment secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - delete: operations["codespaces/remove-repository-for-secret-for-authenticated-user"]; - }; - "/user/codespaces/{codespace_name}": { - /** - * Get a codespace for the authenticated user - * @description Gets information about a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - get: operations["codespaces/get-for-authenticated-user"]; - /** - * Delete a codespace for the authenticated user - * @description Deletes a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - delete: operations["codespaces/delete-for-authenticated-user"]; - /** - * Update a codespace for the authenticated user - * @description Updates a codespace owned by the authenticated user. Currently only the codespace's machine type and recent folders can be modified using this endpoint. - * - * If you specify a new machine type it will be applied the next time your codespace is started. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - patch: operations["codespaces/update-for-authenticated-user"]; - }; - "/user/codespaces/{codespace_name}/exports": { - /** - * Export a codespace for the authenticated user - * @description Triggers an export of the specified codespace and returns a URL and ID where the status of the export can be monitored. - * - * If changes cannot be pushed to the codespace's repository, they will be pushed to a new or previously-existing fork instead. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - post: operations["codespaces/export-for-authenticated-user"]; - }; - "/user/codespaces/{codespace_name}/exports/{export_id}": { - /** - * Get details about a codespace export - * @description Gets information about an export of a codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - get: operations["codespaces/get-export-details-for-authenticated-user"]; - }; - "/user/codespaces/{codespace_name}/machines": { - /** - * List machine types for a codespace - * @description List the machine types a codespace can transition to use. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - get: operations["codespaces/codespace-machines-for-authenticated-user"]; - }; - "/user/codespaces/{codespace_name}/publish": { - /** - * Create a repository from an unpublished codespace - * @description Publishes an unpublished codespace, creating a new repository and assigning it to the codespace. - * - * The codespace's token is granted write permissions to the repository, allowing the user to push their changes. - * - * This will fail for a codespace that is already published, meaning it has an associated repository. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - post: operations["codespaces/publish-for-authenticated-user"]; - }; - "/user/codespaces/{codespace_name}/start": { - /** - * Start a codespace for the authenticated user - * @description Starts a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - post: operations["codespaces/start-for-authenticated-user"]; - }; - "/user/codespaces/{codespace_name}/stop": { - /** - * Stop a codespace for the authenticated user - * @description Stops a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - post: operations["codespaces/stop-for-authenticated-user"]; - }; - "/user/docker/conflicts": { - /** - * Get list of conflicting packages during Docker migration for authenticated-user - * @description Lists all packages that are owned by the authenticated user within the user's namespace, and that encountered a conflict during a Docker migration. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. - */ - get: operations["packages/list-docker-migration-conflicting-packages-for-authenticated-user"]; - }; - "/user/email/visibility": { - /** - * Set primary email visibility for the authenticated user - * @description Sets the visibility for your primary email addresses. - */ - patch: operations["users/set-primary-email-visibility-for-authenticated-user"]; - }; - "/user/emails": { - /** - * List email addresses for the authenticated user - * @description Lists all of your email addresses, and specifies which one is visible - * to the public. - * - * OAuth app tokens and personal access tokens (classic) need the `user:email` scope to use this endpoint. - */ - get: operations["users/list-emails-for-authenticated-user"]; - /** - * Add an email address for the authenticated user - * @description OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - post: operations["users/add-email-for-authenticated-user"]; - /** - * Delete an email address for the authenticated user - * @description OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - delete: operations["users/delete-email-for-authenticated-user"]; - }; - "/user/followers": { - /** - * List followers of the authenticated user - * @description Lists the people following the authenticated user. - */ - get: operations["users/list-followers-for-authenticated-user"]; - }; - "/user/following": { - /** - * List the people the authenticated user follows - * @description Lists the people who the authenticated user follows. - */ - get: operations["users/list-followed-by-authenticated-user"]; - }; - "/user/following/{username}": { - /** Check if a person is followed by the authenticated user */ - get: operations["users/check-person-is-followed-by-authenticated"]; - /** - * Follow a user - * @description Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - * - * OAuth app tokens and personal access tokens (classic) need the `user:follow` scope to use this endpoint. - */ - put: operations["users/follow"]; - /** - * Unfollow a user - * @description OAuth app tokens and personal access tokens (classic) need the `user:follow` scope to use this endpoint. - */ - delete: operations["users/unfollow"]; - }; - "/user/gpg_keys": { - /** - * List GPG keys for the authenticated user - * @description Lists the current user's GPG keys. - * - * OAuth app tokens and personal access tokens (classic) need the `read:gpg_key` scope to use this endpoint. - */ - get: operations["users/list-gpg-keys-for-authenticated-user"]; - /** - * Create a GPG key for the authenticated user - * @description Adds a GPG key to the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `write:gpg_key` scope to use this endpoint. - */ - post: operations["users/create-gpg-key-for-authenticated-user"]; - }; - "/user/gpg_keys/{gpg_key_id}": { - /** - * Get a GPG key for the authenticated user - * @description View extended details for a single GPG key. - * - * OAuth app tokens and personal access tokens (classic) need the `read:gpg_key` scope to use this endpoint. - */ - get: operations["users/get-gpg-key-for-authenticated-user"]; - /** - * Delete a GPG key for the authenticated user - * @description Removes a GPG key from the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:gpg_key` scope to use this endpoint. - */ - delete: operations["users/delete-gpg-key-for-authenticated-user"]; - }; - "/user/installations": { - /** - * List app installations accessible to the user access token - * @description Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - * - * You can find the permissions for the installation under the `permissions` key. - */ - get: operations["apps/list-installations-for-authenticated-user"]; - }; - "/user/installations/{installation_id}/repositories": { - /** - * List repositories accessible to the user access token - * @description List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - * - * The access the user has to each repository is included in the hash under the `permissions` key. - */ - get: operations["apps/list-installation-repos-for-authenticated-user"]; - }; - "/user/installations/{installation_id}/repositories/{repository_id}": { - /** - * Add a repository to an app installation - * @description Add a single repository to an installation. The authenticated user must have admin access to the repository. - * - * This endpoint only works for PATs (classic) with the `repo` scope. - */ - put: operations["apps/add-repo-to-installation-for-authenticated-user"]; - /** - * Remove a repository from an app installation - * @description Remove a single repository from an installation. The authenticated user must have admin access to the repository. The installation must have the `repository_selection` of `selected`. - * - * This endpoint only works for PATs (classic) with the `repo` scope. - */ - delete: operations["apps/remove-repo-from-installation-for-authenticated-user"]; - }; - "/user/interaction-limits": { - /** - * Get interaction restrictions for your public repositories - * @description Shows which type of GitHub user can interact with your public repositories and when the restriction expires. - */ - get: operations["interactions/get-restrictions-for-authenticated-user"]; - /** - * Set interaction restrictions for your public repositories - * @description Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user. - */ - put: operations["interactions/set-restrictions-for-authenticated-user"]; - /** - * Remove interaction restrictions from your public repositories - * @description Removes any interaction restrictions from your public repositories. - */ - delete: operations["interactions/remove-restrictions-for-authenticated-user"]; - }; - "/user/issues": { - /** - * List user account issues assigned to the authenticated user - * @description List issues across owned and member repositories assigned to the authenticated user. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: operations["issues/list-for-authenticated-user"]; - }; - "/user/keys": { - /** - * List public SSH keys for the authenticated user - * @description Lists the public SSH keys for the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `read:public_key` scope to use this endpoint. - */ - get: operations["users/list-public-ssh-keys-for-authenticated-user"]; - /** - * Create a public SSH key for the authenticated user - * @description Adds a public SSH key to the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `write:public_key` scope to use this endpoint. - */ - post: operations["users/create-public-ssh-key-for-authenticated-user"]; - }; - "/user/keys/{key_id}": { - /** - * Get a public SSH key for the authenticated user - * @description View extended details for a single public SSH key. - * - * OAuth app tokens and personal access tokens (classic) need the `read:public_key` scope to use this endpoint. - */ - get: operations["users/get-public-ssh-key-for-authenticated-user"]; - /** - * Delete a public SSH key for the authenticated user - * @description Removes a public SSH key from the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:public_key` scope to use this endpoint. - */ - delete: operations["users/delete-public-ssh-key-for-authenticated-user"]; - }; - "/user/marketplace_purchases": { - /** - * List subscriptions for the authenticated user - * @description Lists the active subscriptions for the authenticated user. - */ - get: operations["apps/list-subscriptions-for-authenticated-user"]; - }; - "/user/marketplace_purchases/stubbed": { - /** - * List subscriptions for the authenticated user (stubbed) - * @description Lists the active subscriptions for the authenticated user. - */ - get: operations["apps/list-subscriptions-for-authenticated-user-stubbed"]; - }; - "/user/memberships/orgs": { - /** - * List organization memberships for the authenticated user - * @description Lists all of the authenticated user's organization memberships. - */ - get: operations["orgs/list-memberships-for-authenticated-user"]; - }; - "/user/memberships/orgs/{org}": { - /** - * Get an organization membership for the authenticated user - * @description If the authenticated user is an active or pending member of the organization, this endpoint will return the user's membership. If the authenticated user is not affiliated with the organization, a `404` is returned. This endpoint will return a `403` if the request is made by a GitHub App that is blocked by the organization. - */ - get: operations["orgs/get-membership-for-authenticated-user"]; - /** - * Update an organization membership for the authenticated user - * @description Converts the authenticated user to an active member of the organization, if that user has a pending invitation from the organization. - */ - patch: operations["orgs/update-membership-for-authenticated-user"]; - }; - "/user/migrations": { - /** - * List user migrations - * @description Lists all migrations a user has started. - */ - get: operations["migrations/list-for-authenticated-user"]; - /** - * Start a user migration - * @description Initiates the generation of a user migration archive. - */ - post: operations["migrations/start-for-authenticated-user"]; - }; - "/user/migrations/{migration_id}": { - /** - * Get a user migration status - * @description Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values: - * - * * `pending` - the migration hasn't started yet. - * * `exporting` - the migration is in progress. - * * `exported` - the migration finished successfully. - * * `failed` - the migration failed. - * - * Once the migration has been `exported` you can [download the migration archive](https://docs.github.com/rest/migrations/users#download-a-user-migration-archive). - */ - get: operations["migrations/get-status-for-authenticated-user"]; - }; - "/user/migrations/{migration_id}/archive": { - /** - * Download a user migration archive - * @description Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects: - * - * * attachments - * * bases - * * commit\_comments - * * issue\_comments - * * issue\_events - * * issues - * * milestones - * * organizations - * * projects - * * protected\_branches - * * pull\_request\_reviews - * * pull\_requests - * * releases - * * repositories - * * review\_comments - * * schema - * * users - * - * The archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data. - */ - get: operations["migrations/get-archive-for-authenticated-user"]; - /** - * Delete a user migration archive - * @description Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [List user migrations](https://docs.github.com/rest/migrations/users#list-user-migrations) and [Get a user migration status](https://docs.github.com/rest/migrations/users#get-a-user-migration-status) endpoints, will continue to be available even after an archive is deleted. - */ - delete: operations["migrations/delete-archive-for-authenticated-user"]; - }; - "/user/migrations/{migration_id}/repos/{repo_name}/lock": { - /** - * Unlock a user repository - * @description Unlocks a repository. You can lock repositories when you [start a user migration](https://docs.github.com/rest/migrations/users#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://docs.github.com/rest/repos/repos#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked. - */ - delete: operations["migrations/unlock-repo-for-authenticated-user"]; - }; - "/user/migrations/{migration_id}/repositories": { - /** - * List repositories for a user migration - * @description Lists all the repositories for this user migration. - */ - get: operations["migrations/list-repos-for-authenticated-user"]; - }; - "/user/orgs": { - /** - * List organizations for the authenticated user - * @description List organizations for the authenticated user. - * - * For OAuth app tokens and personal access tokens (classic), this endpoint only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope for OAuth app tokens and personal access tokens (classic). Requests with insufficient scope will receive a `403 Forbidden` response. - * - * > [!NOTE] - * > Requests using a fine-grained access token will receive a `200 Success` response with an empty list. - */ - get: operations["orgs/list-for-authenticated-user"]; - }; - "/user/packages": { - /** - * List packages for the authenticated user's namespace - * @description Lists packages owned by the authenticated user within the user's namespace. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - get: operations["packages/list-packages-for-authenticated-user"]; - }; - "/user/packages/{package_type}/{package_name}": { - /** - * Get a package for the authenticated user - * @description Gets a specific package for a package owned by the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - get: operations["packages/get-package-for-authenticated-user"]; - /** - * Delete a package for the authenticated user - * @description Deletes a package owned by the authenticated user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - delete: operations["packages/delete-package-for-authenticated-user"]; - }; - "/user/packages/{package_type}/{package_name}/restore": { - /** - * Restore a package for the authenticated user - * @description Restores a package owned by the authenticated user. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - post: operations["packages/restore-package-for-authenticated-user"]; - }; - "/user/packages/{package_type}/{package_name}/versions": { - /** - * List package versions for a package owned by the authenticated user - * @description Lists package versions for a package owned by the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - get: operations["packages/get-all-package-versions-for-package-owned-by-authenticated-user"]; - }; - "/user/packages/{package_type}/{package_name}/versions/{package_version_id}": { - /** - * Get a package version for the authenticated user - * @description Gets a specific package version for a package owned by the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - get: operations["packages/get-package-version-for-authenticated-user"]; - /** - * Delete a package version for the authenticated user - * @description Deletes a specific package version for a package owned by the authenticated user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - delete: operations["packages/delete-package-version-for-authenticated-user"]; - }; - "/user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": { - /** - * Restore a package version for the authenticated user - * @description Restores a package version owned by the authenticated user. - * - * You can restore a deleted package version under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - post: operations["packages/restore-package-version-for-authenticated-user"]; - }; - "/user/projects": { - /** - * Create a user project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - post: operations["projects-classic/create-for-authenticated-user"]; - }; - "/user/public_emails": { - /** - * List public email addresses for the authenticated user - * @description Lists your publicly visible email address, which you can set with the - * [Set primary email visibility for the authenticated user](https://docs.github.com/rest/users/emails#set-primary-email-visibility-for-the-authenticated-user) - * endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `user:email` scope to use this endpoint. - */ - get: operations["users/list-public-emails-for-authenticated-user"]; - }; - "/user/repos": { - /** - * List repositories for the authenticated user - * @description Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - */ - get: operations["repos/list-for-authenticated-user"]; - /** - * Create a repository for the authenticated user - * @description Creates a new repository for the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `public_repo` or `repo` scope to create a public repository, and `repo` scope to create a private repository. - */ - post: operations["repos/create-for-authenticated-user"]; - }; - "/user/repository_invitations": { - /** - * List repository invitations for the authenticated user - * @description When authenticating as a user, this endpoint will list all currently open repository invitations for that user. - */ - get: operations["repos/list-invitations-for-authenticated-user"]; - }; - "/user/repository_invitations/{invitation_id}": { - /** Decline a repository invitation */ - delete: operations["repos/decline-invitation-for-authenticated-user"]; - /** Accept a repository invitation */ - patch: operations["repos/accept-invitation-for-authenticated-user"]; - }; - "/user/social_accounts": { - /** - * List social accounts for the authenticated user - * @description Lists all of your social accounts. - */ - get: operations["users/list-social-accounts-for-authenticated-user"]; - /** - * Add social accounts for the authenticated user - * @description Add one or more social accounts to the authenticated user's profile. - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - post: operations["users/add-social-account-for-authenticated-user"]; - /** - * Delete social accounts for the authenticated user - * @description Deletes one or more social accounts from the authenticated user's profile. - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - delete: operations["users/delete-social-account-for-authenticated-user"]; - }; - "/user/ssh_signing_keys": { - /** - * List SSH signing keys for the authenticated user - * @description Lists the SSH signing keys for the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `read:ssh_signing_key` scope to use this endpoint. - */ - get: operations["users/list-ssh-signing-keys-for-authenticated-user"]; - /** - * Create a SSH signing key for the authenticated user - * @description Creates an SSH signing key for the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `write:ssh_signing_key` scope to use this endpoint. - */ - post: operations["users/create-ssh-signing-key-for-authenticated-user"]; - }; - "/user/ssh_signing_keys/{ssh_signing_key_id}": { - /** - * Get an SSH signing key for the authenticated user - * @description Gets extended details for an SSH signing key. - * - * OAuth app tokens and personal access tokens (classic) need the `read:ssh_signing_key` scope to use this endpoint. - */ - get: operations["users/get-ssh-signing-key-for-authenticated-user"]; - /** - * Delete an SSH signing key for the authenticated user - * @description Deletes an SSH signing key from the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:ssh_signing_key` scope to use this endpoint. - */ - delete: operations["users/delete-ssh-signing-key-for-authenticated-user"]; - }; - "/user/starred": { - /** - * List repositories starred by the authenticated user - * @description Lists repositories the authenticated user has starred. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.star+json`**: Includes a timestamp of when the star was created. - */ - get: operations["activity/list-repos-starred-by-authenticated-user"]; - }; - "/user/starred/{owner}/{repo}": { - /** - * Check if a repository is starred by the authenticated user - * @description Whether the authenticated user has starred the repository. - */ - get: operations["activity/check-repo-is-starred-by-authenticated-user"]; - /** - * Star a repository for the authenticated user - * @description Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - put: operations["activity/star-repo-for-authenticated-user"]; - /** - * Unstar a repository for the authenticated user - * @description Unstar a repository that the authenticated user has previously starred. - */ - delete: operations["activity/unstar-repo-for-authenticated-user"]; - }; - "/user/subscriptions": { - /** - * List repositories watched by the authenticated user - * @description Lists repositories the authenticated user is watching. - */ - get: operations["activity/list-watched-repos-for-authenticated-user"]; - }; - "/user/teams": { - /** - * List teams for the authenticated user - * @description List all of the teams across all of the organizations to which the authenticated - * user belongs. - * - * OAuth app tokens and personal access tokens (classic) need the `user`, `repo`, or `read:org` scope to use this endpoint. - * - * When using a fine-grained personal access token, the resource owner of the token must be a single organization, and the response will only include the teams from that organization. - */ - get: operations["teams/list-for-authenticated-user"]; - }; - "/user/{account_id}": { - /** - * Get a user using their ID - * @description Provides publicly available information about someone with a GitHub account. This method takes their durable user `ID` instead of their `login`, which can change over time. - * - * If you are requesting information about an [Enterprise Managed User](https://docs.github.com/enterprise-cloud@latest/admin/managing-iam/understanding-iam-for-enterprises/about-enterprise-managed-users), or a GitHub App bot that is installed in an organization that uses Enterprise Managed Users, your requests must be authenticated as a user or GitHub App that has access to the organization to view that account's information. If you are not authorized, the request will return a `404 Not Found` status. - * - * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be public which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#authentication). - * - * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see [Emails API](https://docs.github.com/rest/users/emails). - */ - get: operations["users/get-by-id"]; - }; - "/users": { - /** - * List users - * @description Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts. - * - * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of users. - */ - get: operations["users/list"]; - }; - "/users/{username}": { - /** - * Get a user - * @description Provides publicly available information about someone with a GitHub account. - * - * If you are requesting information about an [Enterprise Managed User](https://docs.github.com/enterprise-cloud@latest/admin/managing-iam/understanding-iam-for-enterprises/about-enterprise-managed-users), or a GitHub App bot that is installed in an organization that uses Enterprise Managed Users, your requests must be authenticated as a user or GitHub App that has access to the organization to view that account's information. If you are not authorized, the request will return a `404 Not Found` status. - * - * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be public which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#authentication). - * - * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see [Emails API](https://docs.github.com/rest/users/emails). - */ - get: operations["users/get-by-username"]; - }; - "/users/{username}/attestations/bulk-list": { - /** - * List attestations by bulk subject digests - * @description List a collection of artifact attestations associated with any entry in a list of subject digests owned by a user. - * - * The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - post: operations["users/list-attestations-bulk"]; - }; - "/users/{username}/attestations/delete-request": { - /** - * Delete attestations in bulk - * @description Delete artifact attestations in bulk by either subject digests or unique ID. - */ - post: operations["users/delete-attestations-bulk"]; - }; - "/users/{username}/attestations/digest/{subject_digest}": { - /** - * Delete attestations by subject digest - * @description Delete an artifact attestation by subject digest. - */ - delete: operations["users/delete-attestations-by-subject-digest"]; - }; - "/users/{username}/attestations/{attestation_id}": { - /** - * Delete attestations by ID - * @description Delete an artifact attestation by unique ID that is associated with a repository owned by a user. - */ - delete: operations["users/delete-attestations-by-id"]; - }; - "/users/{username}/attestations/{subject_digest}": { - /** - * List attestations - * @description List a collection of artifact attestations with a given subject digest that are associated with repositories owned by a user. - * - * The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - get: operations["users/list-attestations"]; - }; - "/users/{username}/docker/conflicts": { - /** - * Get list of conflicting packages during Docker migration for user - * @description Lists all packages that are in a specific user's namespace, that the requesting user has access to, and that encountered a conflict during Docker migration. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. - */ - get: operations["packages/list-docker-migration-conflicting-packages-for-user"]; - }; - "/users/{username}/events": { - /** - * List events for the authenticated user - * @description If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events. _Optional_: use the fine-grained token with following permission set to view private events: "Events" user permissions (read). - * - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - get: operations["activity/list-events-for-authenticated-user"]; - }; - "/users/{username}/events/orgs/{org}": { - /** - * List organization events for the authenticated user - * @description This is the user's organization dashboard. You must be authenticated as the user to view this. - * - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - get: operations["activity/list-org-events-for-authenticated-user"]; - }; - "/users/{username}/events/public": { - /** - * List public events for a user - * @description > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - get: operations["activity/list-public-events-for-user"]; - }; - "/users/{username}/followers": { - /** - * List followers of a user - * @description Lists the people following the specified user. - */ - get: operations["users/list-followers-for-user"]; - }; - "/users/{username}/following": { - /** - * List the people a user follows - * @description Lists the people who the specified user follows. - */ - get: operations["users/list-following-for-user"]; - }; - "/users/{username}/following/{target_user}": { - /** Check if a user follows another user */ - get: operations["users/check-following-for-user"]; - }; - "/users/{username}/gists": { - /** - * List gists for a user - * @description Lists public gists for the specified user: - */ - get: operations["gists/list-for-user"]; - }; - "/users/{username}/gpg_keys": { - /** - * List GPG keys for a user - * @description Lists the GPG keys for a user. This information is accessible by anyone. - */ - get: operations["users/list-gpg-keys-for-user"]; - }; - "/users/{username}/hovercard": { - /** - * Get contextual information for a user - * @description Provides hovercard information. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations. - * - * The `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository, you would use a `subject_type` value of `repository` and a `subject_id` value of `1300192` (the ID of the `Spoon-Knife` repository). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - get: operations["users/get-context-for-user"]; - }; - "/users/{username}/installation": { - /** - * Get a user installation for the authenticated app - * @description Enables an authenticated GitHub App to find the user’s installation information. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - get: operations["apps/get-user-installation"]; - }; - "/users/{username}/keys": { - /** - * List public keys for a user - * @description Lists the _verified_ public SSH keys for a user. This is accessible by anyone. - */ - get: operations["users/list-public-keys-for-user"]; - }; - "/users/{username}/orgs": { - /** - * List organizations for a user - * @description List [public organization memberships](https://docs.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user. - * - * This method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List organizations for the authenticated user](https://docs.github.com/rest/orgs/orgs#list-organizations-for-the-authenticated-user) API instead. - */ - get: operations["orgs/list-for-user"]; - }; - "/users/{username}/packages": { - /** - * List packages for a user - * @description Lists all packages in a user's namespace for which the requesting user has access. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - get: operations["packages/list-packages-for-user"]; - }; - "/users/{username}/packages/{package_type}/{package_name}": { - /** - * Get a package for a user - * @description Gets a specific package metadata for a public package owned by a user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - get: operations["packages/get-package-for-user"]; - /** - * Delete a package for a user - * @description Deletes an entire package for a user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. - * - * If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - delete: operations["packages/delete-package-for-user"]; - }; - "/users/{username}/packages/{package_type}/{package_name}/restore": { - /** - * Restore a package for a user - * @description Restores an entire package for a user. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - post: operations["packages/restore-package-for-user"]; - }; - "/users/{username}/packages/{package_type}/{package_name}/versions": { - /** - * List package versions for a package owned by a user - * @description Lists package versions for a public package owned by a specified user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - get: operations["packages/get-all-package-versions-for-package-owned-by-user"]; - }; - "/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}": { - /** - * Get a package version for a user - * @description Gets a specific package version for a public package owned by a specified user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - get: operations["packages/get-package-version-for-user"]; - /** - * Delete package version for a user - * @description Deletes a specific package version for a user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. - * - * If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - delete: operations["packages/delete-package-version-for-user"]; - }; - "/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": { - /** - * Restore package version for a user - * @description Restores a specific package version for a user. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - post: operations["packages/restore-package-version-for-user"]; - }; - "/users/{username}/projects": { - /** - * List user projects - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - get: operations["projects-classic/list-for-user"]; - }; - "/users/{username}/projectsV2": { - /** - * List projects for user - * @description List all projects owned by a specific user accessible by the authenticated user. - */ - get: operations["projects/list-for-user"]; - }; - "/users/{username}/projectsV2/{project_number}": { - /** - * Get project for user - * @description Get a specific user-owned project. - */ - get: operations["projects/get-for-user"]; - }; - "/users/{username}/projectsV2/{project_number}/fields": { - /** - * List project fields for user - * @description List all fields for a specific user-owned project. - */ - get: operations["projects/list-fields-for-user"]; - }; - "/users/{username}/projectsV2/{project_number}/fields/{field_id}": { - /** - * Get project field for user - * @description Get a specific field for a user-owned project. - */ - get: operations["projects/get-field-for-user"]; - }; - "/users/{username}/projectsV2/{project_number}/items": { - /** - * List items for a user owned project - * @description List all items for a specific user-owned project accessible by the authenticated user. - */ - get: operations["projects/list-items-for-user"]; - /** - * Add item to user owned project - * @description Add an issue or pull request item to the specified user owned project. - */ - post: operations["projects/add-item-for-user"]; - }; - "/users/{username}/projectsV2/{project_number}/items/{item_id}": { - /** - * Get an item for a user owned project - * @description Get a specific item from a user-owned project. - */ - get: operations["projects/get-user-item"]; - /** - * Delete project item for user - * @description Delete a specific item from a user-owned project. - */ - delete: operations["projects/delete-item-for-user"]; - /** - * Update project item for user - * @description Update a specific item in a user-owned project. - */ - patch: operations["projects/update-item-for-user"]; - }; - "/users/{username}/received_events": { - /** - * List events received by the authenticated user - * @description These are events that you've received by watching repositories and following users. If you are authenticated as the - * given user, you will see private events. Otherwise, you'll only see public events. - * - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - get: operations["activity/list-received-events-for-user"]; - }; - "/users/{username}/received_events/public": { - /** - * List public events received by a user - * @description > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - get: operations["activity/list-received-public-events-for-user"]; - }; - "/users/{username}/repos": { - /** - * List repositories for a user - * @description Lists public repositories for the specified user. - */ - get: operations["repos/list-for-user"]; - }; - "/users/{username}/settings/billing/actions": { - /** - * Get GitHub Actions billing for a user - * @description Gets the summary of the free and paid GitHub Actions minutes used. - * - * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - get: operations["billing/get-github-actions-billing-user"]; - }; - "/users/{username}/settings/billing/packages": { - /** - * Get GitHub Packages billing for a user - * @description Gets the free and paid storage used for GitHub Packages in gigabytes. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - get: operations["billing/get-github-packages-billing-user"]; - }; - "/users/{username}/settings/billing/premium_request/usage": { - /** - * Get billing premium request usage report for a user - * @description Gets a report of premium request usage for a user. - * - * **Note:** Only data from the past 24 months is accessible via this endpoint. - */ - get: operations["billing/get-github-billing-premium-request-usage-report-user"]; - }; - "/users/{username}/settings/billing/shared-storage": { - /** - * Get shared storage billing for a user - * @description Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - get: operations["billing/get-shared-storage-billing-user"]; - }; - "/users/{username}/settings/billing/usage": { - /** - * Get billing usage report for a user - * @description Gets a report of the total usage for a user. - * - * **Note:** This endpoint is only available to users with access to the enhanced billing platform. - */ - get: operations["billing/get-github-billing-usage-report-user"]; - }; - "/users/{username}/social_accounts": { - /** - * List social accounts for a user - * @description Lists social media accounts for a user. This endpoint is accessible by anyone. - */ - get: operations["users/list-social-accounts-for-user"]; - }; - "/users/{username}/ssh_signing_keys": { - /** - * List SSH signing keys for a user - * @description Lists the SSH signing keys for a user. This operation is accessible by anyone. - */ - get: operations["users/list-ssh-signing-keys-for-user"]; - }; - "/users/{username}/starred": { - /** - * List repositories starred by a user - * @description Lists repositories a user has starred. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.star+json`**: Includes a timestamp of when the star was created. - */ - get: operations["activity/list-repos-starred-by-user"]; - }; - "/users/{username}/subscriptions": { - /** - * List repositories watched by a user - * @description Lists repositories a user is watching. - */ - get: operations["activity/list-repos-watched-by-user"]; - }; - "/versions": { - /** - * Get all API versions - * @description Get all supported GitHub API versions. - */ - get: operations["meta/get-all-versions"]; - }; - "/zen": { - /** - * Get the Zen of GitHub - * @description Get a random sentence from the Zen of GitHub - */ - get: operations["meta/get-zen"]; - }; - "/repos/{owner}/{repo}/compare/{base}...{head}": { - /** - * Compare two commits - * @description **Deprecated**: Use `repos.compareCommitsWithBasehead()` (`GET /repos/{owner}/{repo}/compare/{basehead}`) instead. Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `:branch`. - * - * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. - * - * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. - * - * **Working with large comparisons** - * - * To process a response with a large number of commits, you can use (`per_page` or `page`) to paginate the results. When using paging, the list of changed files is only returned with page 1, but includes all changed files for the entire comparison. For more information on working with pagination, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)." - * - * When calling this API without any paging parameters (`per_page` or `page`), the returned list is limited to 250 commits and the last commit in the list is the most recent of the entire comparison. When a paging parameter is specified, the first commit in the returned list of each page is the earliest. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - get: operations["repos/compare-commits"]; - }; - "/orgs/{org}/organization-fine-grained-permissions": { - /** - * List organization fine-grained permissions for an organization - * @description Lists the fine-grained permissions that can be used in custom organization roles for an organization. For more information, see "[Managing people's access to your organization with roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles)." - * - * To list the fine-grained permissions that can be used in custom repository roles for an organization, see "[List repository fine-grained permissions for an organization](https://docs.github.com/rest/orgs/organization-roles#list-repository-fine-grained-permissions-for-an-organization)." - * - * To use this endpoint, the authenticated user must be one of: - * - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permissions of `read_organization_custom_org_role` in the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - get: operations["orgs/list-organization-fine-grained-permissions"]; - }; -} - -export type webhooks = Record; - -export interface components { - schemas: { - root: { - /** Format: uri-template */ - current_user_url: string; - /** Format: uri-template */ - current_user_authorizations_html_url: string; - /** Format: uri-template */ - authorizations_url: string; - /** Format: uri-template */ - code_search_url: string; - /** Format: uri-template */ - commit_search_url: string; - /** Format: uri-template */ - emails_url: string; - /** Format: uri-template */ - emojis_url: string; - /** Format: uri-template */ - events_url: string; - /** Format: uri-template */ - feeds_url: string; - /** Format: uri-template */ - followers_url: string; - /** Format: uri-template */ - following_url: string; - /** Format: uri-template */ - gists_url: string; - /** - * Format: uri-template - * @deprecated - */ - hub_url?: string; - /** Format: uri-template */ - issue_search_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - label_search_url: string; - /** Format: uri-template */ - notifications_url: string; - /** Format: uri-template */ - organization_url: string; - /** Format: uri-template */ - organization_repositories_url: string; - /** Format: uri-template */ - organization_teams_url: string; - /** Format: uri-template */ - public_gists_url: string; - /** Format: uri-template */ - rate_limit_url: string; - /** Format: uri-template */ - repository_url: string; - /** Format: uri-template */ - repository_search_url: string; - /** Format: uri-template */ - current_user_repositories_url: string; - /** Format: uri-template */ - starred_url: string; - /** Format: uri-template */ - starred_gists_url: string; - /** Format: uri-template */ - topic_search_url?: string; - /** Format: uri-template */ - user_url: string; - /** Format: uri-template */ - user_organizations_url: string; - /** Format: uri-template */ - user_repositories_url: string; - /** Format: uri-template */ - user_search_url: string; - }; - /** - * @description The package's language or package management ecosystem. - * @enum {string} - */ - "security-advisory-ecosystems": - | "rubygems" - | "npm" - | "pip" - | "maven" - | "nuget" - | "composer" - | "go" - | "rust" - | "erlang" - | "actions" - | "pub" - | "other" - | "swift"; - /** @description A vulnerability describing the product and its affected versions within a GitHub Security Advisory. */ - vulnerability: { - /** @description The name of the package affected by the vulnerability. */ - package: { - ecosystem: components["schemas"]["security-advisory-ecosystems"]; - /** @description The unique package name within its ecosystem. */ - name: string | null; - } | null; - /** @description The range of the package versions affected by the vulnerability. */ - vulnerable_version_range: string | null; - /** @description The package version that resolves the vulnerability. */ - first_patched_version: string | null; - /** @description The functions in the package that are affected by the vulnerability. */ - vulnerable_functions: readonly string[] | null; - }; - "cvss-severities": { - cvss_v3?: { - /** @description The CVSS 3 vector string. */ - vector_string: string | null; - /** @description The CVSS 3 score. */ - score: number | null; - } | null; - cvss_v4?: { - /** @description The CVSS 4 vector string. */ - vector_string: string | null; - /** @description The CVSS 4 score. */ - score: number | null; - } | null; - } | null; - /** @description The EPSS scores as calculated by the [Exploit Prediction Scoring System](https://www.first.org/epss). */ - readonly "security-advisory-epss": { - readonly percentage?: number; - readonly percentile?: number; - } | null; - /** - * Simple User - * @description A GitHub user. - */ - "simple-user": { - name?: string | null; - email?: string | null; - /** @example octocat */ - login: string; - /** - * Format: int64 - * @example 1 - */ - id: number; - /** @example MDQ6VXNlcjE= */ - node_id: string; - /** - * Format: uri - * @example https://github.com/images/error/octocat_happy.gif - */ - avatar_url: string; - /** @example 41d064eb2195891e12d0413f63227ea7 */ - gravatar_id: string | null; - /** - * Format: uri - * @example https://api.github.com/users/octocat - */ - url: string; - /** - * Format: uri - * @example https://github.com/octocat - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/followers - */ - followers_url: string; - /** @example https://api.github.com/users/octocat/following{/other_user} */ - following_url: string; - /** @example https://api.github.com/users/octocat/gists{/gist_id} */ - gists_url: string; - /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */ - starred_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/subscriptions - */ - subscriptions_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/orgs - */ - organizations_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/repos - */ - repos_url: string; - /** @example https://api.github.com/users/octocat/events{/privacy} */ - events_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/received_events - */ - received_events_url: string; - /** @example User */ - type: string; - site_admin: boolean; - /** @example "2020-07-09T00:17:55Z" */ - starred_at?: string; - /** @example public */ - user_view_type?: string; - }; - /** - * @description The type of credit the user is receiving. - * @enum {string} - */ - "security-advisory-credit-types": - | "analyst" - | "finder" - | "reporter" - | "coordinator" - | "remediation_developer" - | "remediation_reviewer" - | "remediation_verifier" - | "tool" - | "sponsor" - | "other"; - /** @description A GitHub Security Advisory. */ - "global-advisory": { - /** @description The GitHub Security Advisory ID. */ - ghsa_id: string; - /** @description The Common Vulnerabilities and Exposures (CVE) ID. */ - cve_id: string | null; - /** @description The API URL for the advisory. */ - url: string; - /** - * Format: uri - * @description The URL for the advisory. - */ - html_url: string; - /** - * Format: uri - * @description The API URL for the repository advisory. - */ - repository_advisory_url: string | null; - /** @description A short summary of the advisory. */ - summary: string; - /** @description A detailed description of what the advisory entails. */ - description: string | null; - /** - * @description The type of advisory. - * @enum {string} - */ - type: "reviewed" | "unreviewed" | "malware"; - /** - * @description The severity of the advisory. - * @enum {string} - */ - severity: "critical" | "high" | "medium" | "low" | "unknown"; - /** - * Format: uri - * @description The URL of the advisory's source code. - */ - source_code_location: string | null; - identifiers: - | readonly { - /** - * @description The type of identifier. - * @enum {string} - */ - type: "CVE" | "GHSA"; - /** @description The identifier value. */ - value: string; - }[] - | null; - references: string[] | null; - /** - * Format: date-time - * @description The date and time of when the advisory was published, in ISO 8601 format. - */ - published_at: string; - /** - * Format: date-time - * @description The date and time of when the advisory was last updated, in ISO 8601 format. - */ - updated_at: string; - /** - * Format: date-time - * @description The date and time of when the advisory was reviewed by GitHub, in ISO 8601 format. - */ - github_reviewed_at: string | null; - /** - * Format: date-time - * @description The date and time when the advisory was published in the National Vulnerability Database, in ISO 8601 format. - * This field is only populated when the advisory is imported from the National Vulnerability Database. - */ - nvd_published_at: string | null; - /** - * Format: date-time - * @description The date and time of when the advisory was withdrawn, in ISO 8601 format. - */ - withdrawn_at: string | null; - /** @description The products and respective version ranges affected by the advisory. */ - vulnerabilities: components["schemas"]["vulnerability"][] | null; - cvss: { - /** @description The CVSS vector. */ - vector_string: string | null; - /** @description The CVSS score. */ - score: number | null; - } | null; - cvss_severities?: components["schemas"]["cvss-severities"]; - epss?: components["schemas"]["security-advisory-epss"]; - cwes: - | { - /** @description The Common Weakness Enumeration (CWE) identifier. */ - cwe_id: string; - /** @description The name of the CWE. */ - name: string; - }[] - | null; - /** @description The users who contributed to the advisory. */ - credits: - | readonly { - user: components["schemas"]["simple-user"]; - type: components["schemas"]["security-advisory-credit-types"]; - }[] - | null; - }; - /** - * Basic Error - * @description Basic Error - */ - "basic-error": { - message?: string; - documentation_url?: string; - url?: string; - status?: string; - }; - /** - * Validation Error Simple - * @description Validation Error Simple - */ - "validation-error-simple": { - message: string; - documentation_url: string; - errors?: string[]; - }; - /** - * Enterprise - * @description An enterprise on GitHub. - */ - enterprise: { - /** @description A short description of the enterprise. */ - description?: string | null; - /** - * Format: uri - * @example https://github.com/enterprises/octo-business - */ - html_url: string; - /** - * Format: uri - * @description The enterprise's website URL. - */ - website_url?: string | null; - /** - * @description Unique identifier of the enterprise - * @example 42 - */ - id: number; - /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ - node_id: string; - /** - * @description The name of the enterprise. - * @example Octo Business - */ - name: string; - /** - * @description The slug url identifier for the enterprise. - * @example octo-business - */ - slug: string; - /** - * Format: date-time - * @example 2019-01-26T19:01:12Z - */ - created_at: string | null; - /** - * Format: date-time - * @example 2019-01-26T19:14:43Z - */ - updated_at: string | null; - /** Format: uri */ - avatar_url: string; - }; - /** - * GitHub app - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - integration: { - /** - * @description Unique identifier of the GitHub app - * @example 37 - */ - id: number; - /** - * @description The slug name of the GitHub app - * @example probot-owners - */ - slug?: string; - /** @example MDExOkludGVncmF0aW9uMQ== */ - node_id: string; - /** @example "Iv1.25b5d1e65ffc4022" */ - client_id?: string; - owner: - | components["schemas"]["simple-user"] - | components["schemas"]["enterprise"]; - /** - * @description The name of the GitHub app - * @example Probot Owners - */ - name: string; - /** @example The description of the app. */ - description: string | null; - /** - * Format: uri - * @example https://example.com - */ - external_url: string; - /** - * Format: uri - * @example https://github.com/apps/super-ci - */ - html_url: string; - /** - * Format: date-time - * @example 2017-07-08T16:18:44-04:00 - */ - created_at: string; - /** - * Format: date-time - * @example 2017-07-08T16:18:44-04:00 - */ - updated_at: string; - /** - * @description The set of permissions for the GitHub app - * @example { - * "issues": "read", - * "deployments": "write" - * } - */ - permissions: { - issues?: string; - checks?: string; - metadata?: string; - contents?: string; - deployments?: string; - [key: string]: string | undefined; - }; - /** - * @description The list of events for the GitHub app. Note that the `installation_target`, `security_advisory`, and `meta` events are not included because they are global events and not specific to an installation. - * @example [ - * "label", - * "deployment" - * ] - */ - events: string[]; - /** - * @description The number of installations associated with the GitHub app. Only returned when the integration is requesting details about itself. - * @example 5 - */ - installations_count?: number; - } | null; - /** - * Format: uri - * @description The URL to which the payloads will be delivered. - * @example https://example.com/webhook - */ - "webhook-config-url": string; - /** - * @description The media type used to serialize the payloads. Supported values include `json` and `form`. The default is `form`. - * @example "json" - */ - "webhook-config-content-type": string; - /** - * @description If provided, the `secret` will be used as the `key` to generate the HMAC hex digest value for [delivery signature headers](https://docs.github.com/webhooks/event-payloads/#delivery-headers). - * @example "********" - */ - "webhook-config-secret": string; - "webhook-config-insecure-ssl": string | number; - /** - * Webhook Configuration - * @description Configuration object of the webhook - */ - "webhook-config": { - url?: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - }; - /** - * Simple webhook delivery - * @description Delivery made by a webhook, without request and response information. - */ - "hook-delivery-item": { - /** - * Format: int64 - * @description Unique identifier of the webhook delivery. - * @example 42 - */ - id: number; - /** - * @description Unique identifier for the event (shared with all deliveries for all webhooks that subscribe to this event). - * @example 58474f00-b361-11eb-836d-0e4f3503ccbe - */ - guid: string; - /** - * Format: date-time - * @description Time when the webhook delivery occurred. - * @example 2021-05-12T20:33:44Z - */ - delivered_at: string; - /** - * @description Whether the webhook delivery is a redelivery. - * @example false - */ - redelivery: boolean; - /** - * @description Time spent delivering. - * @example 0.03 - */ - duration: number; - /** - * @description Describes the response returned after attempting the delivery. - * @example failed to connect - */ - status: string; - /** - * @description Status code received when delivery was made. - * @example 502 - */ - status_code: number; - /** - * @description The event that triggered the delivery. - * @example issues - */ - event: string; - /** - * @description The type of activity for the event that triggered the delivery. - * @example opened - */ - action: string | null; - /** - * Format: int64 - * @description The id of the GitHub App installation associated with this event. - * @example 123 - */ - installation_id: number | null; - /** - * Format: int64 - * @description The id of the repository associated with this event. - * @example 123 - */ - repository_id: number | null; - /** - * Format: date-time - * @description Time when the webhook delivery was throttled. - * @example 2021-05-12T20:33:44Z - */ - throttled_at?: string | null; - }; - /** - * Scim Error - * @description Scim Error - */ - "scim-error": { - message?: string | null; - documentation_url?: string | null; - detail?: string | null; - status?: number; - scimType?: string | null; - schemas?: string[]; - }; - /** - * Validation Error - * @description Validation Error - */ - "validation-error": { - message: string; - documentation_url: string; - errors?: { - resource?: string; - field?: string; - message?: string; - code: string; - index?: number; - value?: (string | null) | (number | null) | (string[] | null); - }[]; - }; - /** - * Webhook delivery - * @description Delivery made by a webhook. - */ - "hook-delivery": { - /** - * @description Unique identifier of the delivery. - * @example 42 - */ - id: number; - /** - * @description Unique identifier for the event (shared with all deliveries for all webhooks that subscribe to this event). - * @example 58474f00-b361-11eb-836d-0e4f3503ccbe - */ - guid: string; - /** - * Format: date-time - * @description Time when the delivery was delivered. - * @example 2021-05-12T20:33:44Z - */ - delivered_at: string; - /** - * @description Whether the delivery is a redelivery. - * @example false - */ - redelivery: boolean; - /** - * @description Time spent delivering. - * @example 0.03 - */ - duration: number; - /** - * @description Description of the status of the attempted delivery - * @example failed to connect - */ - status: string; - /** - * @description Status code received when delivery was made. - * @example 502 - */ - status_code: number; - /** - * @description The event that triggered the delivery. - * @example issues - */ - event: string; - /** - * @description The type of activity for the event that triggered the delivery. - * @example opened - */ - action: string | null; - /** - * @description The id of the GitHub App installation associated with this event. - * @example 123 - */ - installation_id: number | null; - /** - * @description The id of the repository associated with this event. - * @example 123 - */ - repository_id: number | null; - /** - * Format: date-time - * @description Time when the webhook delivery was throttled. - * @example 2021-05-12T20:33:44Z - */ - throttled_at?: string | null; - /** - * @description The URL target of the delivery. - * @example https://www.example.com - */ - url?: string; - request: { - /** @description The request headers sent with the webhook delivery. */ - headers: { - [key: string]: unknown; - } | null; - /** @description The webhook payload. */ - payload: { - [key: string]: unknown; - } | null; - }; - response: { - /** @description The response headers received when the delivery was made. */ - headers: { - [key: string]: unknown; - } | null; - /** @description The response payload received. */ - payload: string | null; - }; - }; - /** - * Integration Installation Request - * @description Request to install an integration on a target - */ - "integration-installation-request": { - /** - * @description Unique identifier of the request installation. - * @example 42 - */ - id: number; - /** @example MDExOkludGVncmF0aW9uMQ== */ - node_id?: string; - account: - | components["schemas"]["simple-user"] - | components["schemas"]["enterprise"]; - requester: components["schemas"]["simple-user"]; - /** - * Format: date-time - * @example 2022-07-08T16:18:44-04:00 - */ - created_at: string; - }; - /** - * App Permissions - * @description The permissions granted to the user access token. - * @example { - * "contents": "read", - * "issues": "read", - * "deployments": "write", - * "single_file": "read" - * } - */ - "app-permissions": { - /** - * @description The level of permission to grant the access token for GitHub Actions workflows, workflow runs, and artifacts. - * @enum {string} - */ - actions?: "read" | "write"; - /** - * @description The level of permission to grant the access token for repository creation, deletion, settings, teams, and collaborators creation. - * @enum {string} - */ - administration?: "read" | "write"; - /** - * @description The level of permission to grant the access token for checks on code. - * @enum {string} - */ - checks?: "read" | "write"; - /** - * @description The level of permission to grant the access token to create, edit, delete, and list Codespaces. - * @enum {string} - */ - codespaces?: "read" | "write"; - /** - * @description The level of permission to grant the access token for repository contents, commits, branches, downloads, releases, and merges. - * @enum {string} - */ - contents?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage Dependabot secrets. - * @enum {string} - */ - dependabot_secrets?: "read" | "write"; - /** - * @description The level of permission to grant the access token for deployments and deployment statuses. - * @enum {string} - */ - deployments?: "read" | "write"; - /** - * @description The level of permission to grant the access token for managing repository environments. - * @enum {string} - */ - environments?: "read" | "write"; - /** - * @description The level of permission to grant the access token for issues and related comments, assignees, labels, and milestones. - * @enum {string} - */ - issues?: "read" | "write"; - /** - * @description The level of permission to grant the access token to search repositories, list collaborators, and access repository metadata. - * @enum {string} - */ - metadata?: "read" | "write"; - /** - * @description The level of permission to grant the access token for packages published to GitHub Packages. - * @enum {string} - */ - packages?: "read" | "write"; - /** - * @description The level of permission to grant the access token to retrieve Pages statuses, configuration, and builds, as well as create new builds. - * @enum {string} - */ - pages?: "read" | "write"; - /** - * @description The level of permission to grant the access token for pull requests and related comments, assignees, labels, milestones, and merges. - * @enum {string} - */ - pull_requests?: "read" | "write"; - /** - * @description The level of permission to grant the access token to view and edit custom properties for a repository, when allowed by the property. - * @enum {string} - */ - repository_custom_properties?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage the post-receive hooks for a repository. - * @enum {string} - */ - repository_hooks?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage repository projects, columns, and cards. - * @enum {string} - */ - repository_projects?: "read" | "write" | "admin"; - /** - * @description The level of permission to grant the access token to view and manage secret scanning alerts. - * @enum {string} - */ - secret_scanning_alerts?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage repository secrets. - * @enum {string} - */ - secrets?: "read" | "write"; - /** - * @description The level of permission to grant the access token to view and manage security events like code scanning alerts. - * @enum {string} - */ - security_events?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage just a single file. - * @enum {string} - */ - single_file?: "read" | "write"; - /** - * @description The level of permission to grant the access token for commit statuses. - * @enum {string} - */ - statuses?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage Dependabot alerts. - * @enum {string} - */ - vulnerability_alerts?: "read" | "write"; - /** - * @description The level of permission to grant the access token to update GitHub Actions workflow files. - * @enum {string} - */ - workflows?: "write"; - /** - * @description The level of permission to grant the access token to view and edit custom properties for an organization, when allowed by the property. - * @enum {string} - */ - custom_properties_for_organizations?: "read" | "write"; - /** - * @description The level of permission to grant the access token for organization teams and members. - * @enum {string} - */ - members?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage access to an organization. - * @enum {string} - */ - organization_administration?: "read" | "write"; - /** - * @description The level of permission to grant the access token for custom repository roles management. - * @enum {string} - */ - organization_custom_roles?: "read" | "write"; - /** - * @description The level of permission to grant the access token for custom organization roles management. - * @enum {string} - */ - organization_custom_org_roles?: "read" | "write"; - /** - * @description The level of permission to grant the access token for repository custom properties management at the organization level. - * @enum {string} - */ - organization_custom_properties?: "read" | "write" | "admin"; - /** - * @description The level of permission to grant the access token for managing access to GitHub Copilot for members of an organization with a Copilot Business subscription. This property is in public preview and is subject to change. - * @enum {string} - */ - organization_copilot_seat_management?: "write"; - /** - * @description The level of permission to grant the access token to view and manage announcement banners for an organization. - * @enum {string} - */ - organization_announcement_banners?: "read" | "write"; - /** - * @description The level of permission to grant the access token to view events triggered by an activity in an organization. - * @enum {string} - */ - organization_events?: "read"; - /** - * @description The level of permission to grant the access token to manage the post-receive hooks for an organization. - * @enum {string} - */ - organization_hooks?: "read" | "write"; - /** - * @description The level of permission to grant the access token for viewing and managing fine-grained personal access token requests to an organization. - * @enum {string} - */ - organization_personal_access_tokens?: "read" | "write"; - /** - * @description The level of permission to grant the access token for viewing and managing fine-grained personal access tokens that have been approved by an organization. - * @enum {string} - */ - organization_personal_access_token_requests?: "read" | "write"; - /** - * @description The level of permission to grant the access token for viewing an organization's plan. - * @enum {string} - */ - organization_plan?: "read"; - /** - * @description The level of permission to grant the access token to manage organization projects and projects public preview (where available). - * @enum {string} - */ - organization_projects?: "read" | "write" | "admin"; - /** - * @description The level of permission to grant the access token for organization packages published to GitHub Packages. - * @enum {string} - */ - organization_packages?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage organization secrets. - * @enum {string} - */ - organization_secrets?: "read" | "write"; - /** - * @description The level of permission to grant the access token to view and manage GitHub Actions self-hosted runners available to an organization. - * @enum {string} - */ - organization_self_hosted_runners?: "read" | "write"; - /** - * @description The level of permission to grant the access token to view and manage users blocked by the organization. - * @enum {string} - */ - organization_user_blocking?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage team discussions and related comments. - * @enum {string} - */ - team_discussions?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage the email addresses belonging to a user. - * @enum {string} - */ - email_addresses?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage the followers belonging to a user. - * @enum {string} - */ - followers?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage git SSH keys. - * @enum {string} - */ - git_ssh_keys?: "read" | "write"; - /** - * @description The level of permission to grant the access token to view and manage GPG keys belonging to a user. - * @enum {string} - */ - gpg_keys?: "read" | "write"; - /** - * @description The level of permission to grant the access token to view and manage interaction limits on a repository. - * @enum {string} - */ - interaction_limits?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage the profile settings belonging to a user. - * @enum {string} - */ - profile?: "write"; - /** - * @description The level of permission to grant the access token to list and manage repositories a user is starring. - * @enum {string} - */ - starring?: "read" | "write"; - /** - * @description The level of permission to grant the access token for organization custom properties management at the enterprise level. - * @enum {string} - */ - enterprise_custom_properties_for_organizations?: - | "read" - | "write" - | "admin"; - }; - /** - * Simple User - * @description A GitHub user. - */ - "nullable-simple-user": { - name?: string | null; - email?: string | null; - /** @example octocat */ - login: string; - /** - * Format: int64 - * @example 1 - */ - id: number; - /** @example MDQ6VXNlcjE= */ - node_id: string; - /** - * Format: uri - * @example https://github.com/images/error/octocat_happy.gif - */ - avatar_url: string; - /** @example 41d064eb2195891e12d0413f63227ea7 */ - gravatar_id: string | null; - /** - * Format: uri - * @example https://api.github.com/users/octocat - */ - url: string; - /** - * Format: uri - * @example https://github.com/octocat - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/followers - */ - followers_url: string; - /** @example https://api.github.com/users/octocat/following{/other_user} */ - following_url: string; - /** @example https://api.github.com/users/octocat/gists{/gist_id} */ - gists_url: string; - /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */ - starred_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/subscriptions - */ - subscriptions_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/orgs - */ - organizations_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/repos - */ - repos_url: string; - /** @example https://api.github.com/users/octocat/events{/privacy} */ - events_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/received_events - */ - received_events_url: string; - /** @example User */ - type: string; - site_admin: boolean; - /** @example "2020-07-09T00:17:55Z" */ - starred_at?: string; - /** @example public */ - user_view_type?: string; - } | null; - /** - * Installation - * @description Installation - */ - installation: { - /** - * @description The ID of the installation. - * @example 1 - */ - id: number; - account: - | ( - | components["schemas"]["simple-user"] - | components["schemas"]["enterprise"] - ) - | null; - /** - * @description Describe whether all repositories have been selected or there's a selection involved - * @enum {string} - */ - repository_selection: "all" | "selected"; - /** - * Format: uri - * @example https://api.github.com/app/installations/1/access_tokens - */ - access_tokens_url: string; - /** - * Format: uri - * @example https://api.github.com/installation/repositories - */ - repositories_url: string; - /** - * Format: uri - * @example https://github.com/organizations/github/settings/installations/1 - */ - html_url: string; - /** @example 1 */ - app_id: number; - /** @example Iv1.ab1112223334445c */ - client_id?: string; - /** @description The ID of the user or organization this token is being scoped to. */ - target_id: number; - /** @example Organization */ - target_type: string; - permissions: components["schemas"]["app-permissions"]; - events: string[]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** @example config.yaml */ - single_file_name: string | null; - /** @example true */ - has_multiple_single_files?: boolean; - /** - * @example [ - * "config.yml", - * ".github/issue_TEMPLATE.md" - * ] - */ - single_file_paths?: string[]; - /** @example github-actions */ - app_slug: string; - suspended_by: components["schemas"]["nullable-simple-user"]; - /** Format: date-time */ - suspended_at: string | null; - /** @example "test_13f1e99741e3e004@d7e1eb0bc0a1ba12.com" */ - contact_email?: string | null; - }; - /** - * License Simple - * @description License Simple - */ - "nullable-license-simple": { - /** @example mit */ - key: string; - /** @example MIT License */ - name: string; - /** - * Format: uri - * @example https://api.github.com/licenses/mit - */ - url: string | null; - /** @example MIT */ - spdx_id: string | null; - /** @example MDc6TGljZW5zZW1pdA== */ - node_id: string; - /** Format: uri */ - html_url?: string; - } | null; - /** - * Repository - * @description A repository on GitHub. - */ - repository: { - /** - * Format: int64 - * @description Unique identifier of the repository - * @example 42 - */ - id: number; - /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ - node_id: string; - /** - * @description The name of the repository. - * @example Team Environment - */ - name: string; - /** @example octocat/Hello-World */ - full_name: string; - license: components["schemas"]["nullable-license-simple"]; - forks: number; - permissions?: { - admin: boolean; - pull: boolean; - triage?: boolean; - push: boolean; - maintain?: boolean; - }; - owner: components["schemas"]["simple-user"]; - /** - * @description Whether the repository is private or public. - * @default false - */ - private: boolean; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World - */ - html_url: string; - /** @example This your first repo! */ - description: string | null; - fork: boolean; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World - */ - url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ - archive_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ - assignees_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ - blobs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ - branches_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ - collaborators_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ - comments_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ - commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ - compare_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ - contents_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/contributors - */ - contributors_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/deployments - */ - deployments_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/downloads - */ - downloads_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/events - */ - events_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/forks - */ - forks_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ - git_commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ - git_refs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ - git_tags_url: string; - /** @example git:github.com/octocat/Hello-World.git */ - git_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ - issue_comment_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ - issue_events_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ - issues_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ - keys_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ - labels_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/languages - */ - languages_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/merges - */ - merges_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ - milestones_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ - notifications_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ - pulls_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ - releases_url: string; - /** @example git@github.com:octocat/Hello-World.git */ - ssh_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/stargazers - */ - stargazers_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ - statuses_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscribers - */ - subscribers_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscription - */ - subscription_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/tags - */ - tags_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/teams - */ - teams_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ - trees_url: string; - /** @example https://github.com/octocat/Hello-World.git */ - clone_url: string; - /** - * Format: uri - * @example git:git.example.com/octocat/Hello-World - */ - mirror_url: string | null; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/hooks - */ - hooks_url: string; - /** - * Format: uri - * @example https://svn.github.com/octocat/Hello-World - */ - svn_url: string; - /** - * Format: uri - * @example https://github.com - */ - homepage: string | null; - language: string | null; - /** @example 9 */ - forks_count: number; - /** @example 80 */ - stargazers_count: number; - /** @example 80 */ - watchers_count: number; - /** - * @description The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0. - * @example 108 - */ - size: number; - /** - * @description The default branch of the repository. - * @example master - */ - default_branch: string; - /** @example 0 */ - open_issues_count: number; - /** - * @description Whether this repository acts as a template that can be used to generate new repositories. - * @default false - * @example true - */ - is_template?: boolean; - topics?: string[]; - /** - * @description Whether issues are enabled. - * @default true - * @example true - */ - has_issues: boolean; - /** - * @description Whether projects are enabled. - * @default true - * @example true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - * @example true - */ - has_wiki: boolean; - has_pages: boolean; - /** - * @deprecated - * @description Whether downloads are enabled. - * @default true - * @example true - */ - has_downloads: boolean; - /** - * @description Whether discussions are enabled. - * @default false - * @example true - */ - has_discussions?: boolean; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** @description Returns whether or not this repository disabled. */ - disabled: boolean; - /** - * @description The repository visibility: public, private, or internal. - * @default public - */ - visibility?: string; - /** - * Format: date-time - * @example 2011-01-26T19:06:43Z - */ - pushed_at: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - created_at: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:14:43Z - */ - updated_at: string | null; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - * @example true - */ - allow_rebase_merge?: boolean; - temp_clone_token?: string; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - * @example true - */ - allow_squash_merge?: boolean; - /** - * @description Whether to allow Auto-merge to be used on pull requests. - * @default false - * @example false - */ - allow_auto_merge?: boolean; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - * @example false - */ - delete_branch_on_merge?: boolean; - /** - * @description Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging. - * @default false - * @example false - */ - allow_update_branch?: boolean; - /** - * @deprecated - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - * @example true - */ - allow_merge_commit?: boolean; - /** @description Whether to allow forking this repo */ - allow_forking?: boolean; - /** - * @description Whether to require contributors to sign off on web-based commits - * @default false - */ - web_commit_signoff_required?: boolean; - open_issues: number; - watchers: number; - master_branch?: string; - /** @example "2020-07-09T00:17:42Z" */ - starred_at?: string; - /** @description Whether anonymous git access is enabled for this repository */ - anonymous_access_enabled?: boolean; - /** @description The status of the code search index for this repository */ - code_search_index_status?: { - lexical_search_ok?: boolean; - lexical_commit_sha?: string; - }; - }; - /** - * Installation Token - * @description Authentication token for a GitHub App installed on a user or org. - */ - "installation-token": { - token: string; - expires_at: string; - permissions?: components["schemas"]["app-permissions"]; - /** @enum {string} */ - repository_selection?: "all" | "selected"; - repositories?: components["schemas"]["repository"][]; - /** @example README.md */ - single_file?: string; - /** @example true */ - has_multiple_single_files?: boolean; - /** - * @example [ - * "config.yml", - * ".github/issue_TEMPLATE.md" - * ] - */ - single_file_paths?: string[]; - }; - /** Scoped Installation */ - "nullable-scoped-installation": { - permissions: components["schemas"]["app-permissions"]; - /** - * @description Describe whether all repositories have been selected or there's a selection involved - * @enum {string} - */ - repository_selection: "all" | "selected"; - /** @example config.yaml */ - single_file_name: string | null; - /** @example true */ - has_multiple_single_files?: boolean; - /** - * @example [ - * "config.yml", - * ".github/issue_TEMPLATE.md" - * ] - */ - single_file_paths?: string[]; - /** - * Format: uri - * @example https://api.github.com/users/octocat/repos - */ - repositories_url: string; - account: components["schemas"]["simple-user"]; - } | null; - /** - * Authorization - * @description The authorization for an OAuth app, GitHub App, or a Personal Access Token. - */ - authorization: { - /** Format: int64 */ - id: number; - /** Format: uri */ - url: string; - /** @description A list of scopes that this authorization is in. */ - scopes: string[] | null; - token: string; - token_last_eight: string | null; - hashed_token: string | null; - app: { - client_id: string; - name: string; - /** Format: uri */ - url: string; - }; - note: string | null; - /** Format: uri */ - note_url: string | null; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - created_at: string; - fingerprint: string | null; - user?: components["schemas"]["nullable-simple-user"]; - installation?: components["schemas"]["nullable-scoped-installation"]; - /** Format: date-time */ - expires_at: string | null; - }; - /** - * Simple Classroom Repository - * @description A GitHub repository view for Classroom - */ - "simple-classroom-repository": { - /** - * @description A unique identifier of the repository. - * @example 1296269 - */ - id: number; - /** - * @description The full, globally unique name of the repository. - * @example octocat/Hello-World - */ - full_name: string; - /** - * Format: uri - * @description The URL to view the repository on GitHub.com. - * @example https://github.com/octocat/Hello-World - */ - html_url: string; - /** - * @description The GraphQL identifier of the repository. - * @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 - */ - node_id: string; - /** @description Whether the repository is private. */ - private: boolean; - /** - * @description The default branch for the repository. - * @example main - */ - default_branch: string; - }; - /** - * Organization Simple for Classroom - * @description A GitHub organization. - */ - "simple-classroom-organization": { - /** @example 1 */ - id: number; - /** @example github */ - login: string; - /** @example MDEyOk9yZ2FuaXphdGlvbjE= */ - node_id: string; - /** - * Format: uri - * @example https://github.com/github - */ - html_url: string; - /** @example Github - Code thigns happen here */ - name: string | null; - /** @example https://github.com/images/error/octocat_happy.gif */ - avatar_url: string; - }; - /** - * Classroom - * @description A GitHub Classroom classroom - */ - classroom: { - /** - * @description Unique identifier of the classroom. - * @example 42 - */ - id: number; - /** - * @description The name of the classroom. - * @example Programming Elixir - */ - name: string; - /** - * @description Whether classroom is archived. - * @example false - */ - archived: boolean; - organization: components["schemas"]["simple-classroom-organization"]; - /** - * @description The URL of the classroom on GitHub Classroom. - * @example https://classroom.github.com/classrooms/1-programming-elixir - */ - url: string; - }; - /** - * Classroom Assignment - * @description A GitHub Classroom assignment - */ - "classroom-assignment": { - /** - * @description Unique identifier of the repository. - * @example 42 - */ - id: number; - /** - * @description Whether an accepted assignment creates a public repository. - * @example true - */ - public_repo: boolean; - /** - * @description Assignment title. - * @example Intro to Binaries - */ - title: string; - /** - * @description Whether it's a group assignment or individual assignment. - * @example individual - * @enum {string} - */ - type: "individual" | "group"; - /** - * @description The link that a student can use to accept the assignment. - * @example https://classroom.github.com/a/Lx7jiUgx - */ - invite_link: string; - /** - * @description Whether the invitation link is enabled. Visiting an enabled invitation link will accept the assignment. - * @example true - */ - invitations_enabled: boolean; - /** - * @description Sluggified name of the assignment. - * @example intro-to-binaries - */ - slug: string; - /** - * @description Whether students are admins on created repository when a student accepts the assignment. - * @example true - */ - students_are_repo_admins: boolean; - /** - * @description Whether feedback pull request will be created when a student accepts the assignment. - * @example true - */ - feedback_pull_requests_enabled: boolean; - /** - * @description The maximum allowable teams for the assignment. - * @example 0 - */ - max_teams: number | null; - /** - * @description The maximum allowable members per team. - * @example 0 - */ - max_members: number | null; - /** - * @description The selected editor for the assignment. - * @example codespaces - */ - editor: string; - /** - * @description The number of students that have accepted the assignment. - * @example 25 - */ - accepted: number; - /** - * @description The number of students that have submitted the assignment. - * @example 10 - */ - submitted: number; - /** - * @description The number of students that have passed the assignment. - * @example 10 - */ - passing: number; - /** - * @description The programming language used in the assignment. - * @example elixir - */ - language: string; - /** - * Format: date-time - * @description The time at which the assignment is due. - * @example 2011-01-26T19:06:43Z - */ - deadline: string | null; - starter_code_repository: components["schemas"]["simple-classroom-repository"]; - classroom: components["schemas"]["classroom"]; - }; - /** - * Simple Classroom User - * @description A GitHub user simplified for Classroom. - */ - "simple-classroom-user": { - /** @example 1 */ - id: number; - /** @example octocat */ - login: string; - /** - * Format: uri - * @example https://github.com/images/error/octocat_happy.gif - */ - avatar_url: string; - /** - * Format: uri - * @example https://github.com/octocat - */ - html_url: string; - }; - /** - * Simple Classroom - * @description A GitHub Classroom classroom - */ - "simple-classroom": { - /** - * @description Unique identifier of the classroom. - * @example 42 - */ - id: number; - /** - * @description The name of the classroom. - * @example Programming Elixir - */ - name: string; - /** - * @description Returns whether classroom is archived or not. - * @example false - */ - archived: boolean; - /** - * @description The url of the classroom on GitHub Classroom. - * @example https://classroom.github.com/classrooms/1-programming-elixir - */ - url: string; - }; - /** - * Simple Classroom Assignment - * @description A GitHub Classroom assignment - */ - "simple-classroom-assignment": { - /** - * @description Unique identifier of the repository. - * @example 42 - */ - id: number; - /** - * @description Whether an accepted assignment creates a public repository. - * @example true - */ - public_repo: boolean; - /** - * @description Assignment title. - * @example Intro to Binaries - */ - title: string; - /** - * @description Whether it's a Group Assignment or Individual Assignment. - * @example individual - * @enum {string} - */ - type: "individual" | "group"; - /** - * @description The link that a student can use to accept the assignment. - * @example https://classroom.github.com/a/Lx7jiUgx - */ - invite_link: string; - /** - * @description Whether the invitation link is enabled. Visiting an enabled invitation link will accept the assignment. - * @example true - */ - invitations_enabled: boolean; - /** - * @description Sluggified name of the assignment. - * @example intro-to-binaries - */ - slug: string; - /** - * @description Whether students are admins on created repository on accepted assignment. - * @example true - */ - students_are_repo_admins: boolean; - /** - * @description Whether feedback pull request will be created on assignment acceptance. - * @example true - */ - feedback_pull_requests_enabled: boolean; - /** - * @description The maximum allowable teams for the assignment. - * @example 0 - */ - max_teams?: number | null; - /** - * @description The maximum allowable members per team. - * @example 0 - */ - max_members?: number | null; - /** - * @description The selected editor for the assignment. - * @example codespaces - */ - editor: string; - /** - * @description The number of students that have accepted the assignment. - * @example 25 - */ - accepted: number; - /** - * @description The number of students that have submitted the assignment. - * @example 10 - */ - submitted: number; - /** - * @description The number of students that have passed the assignment. - * @example 10 - */ - passing: number; - /** - * @description The programming language used in the assignment. - * @example elixir - */ - language: string; - /** - * Format: date-time - * @description The time at which the assignment is due. - * @example 2011-01-26T19:06:43Z - */ - deadline: string | null; - classroom: components["schemas"]["simple-classroom"]; - }; - /** - * Classroom Accepted Assignment - * @description A GitHub Classroom accepted assignment - */ - "classroom-accepted-assignment": { - /** - * @description Unique identifier of the repository. - * @example 42 - */ - id: number; - /** - * @description Whether an accepted assignment has been submitted. - * @example true - */ - submitted: boolean; - /** - * @description Whether a submission passed. - * @example true - */ - passing: boolean; - /** - * @description Count of student commits. - * @example 5 - */ - commit_count: number; - /** - * @description Most recent grade. - * @example 10/10 - */ - grade: string; - students: components["schemas"]["simple-classroom-user"][]; - repository: components["schemas"]["simple-classroom-repository"]; - assignment: components["schemas"]["simple-classroom-assignment"]; - }; - /** - * Classroom Assignment Grade - * @description Grade for a student or groups GitHub Classroom assignment - */ - "classroom-assignment-grade": { - /** @description Name of the assignment */ - assignment_name: string; - /** @description URL of the assignment */ - assignment_url: string; - /** @description URL of the starter code for the assignment */ - starter_code_url: string; - /** @description GitHub username of the student */ - github_username: string; - /** @description Roster identifier of the student */ - roster_identifier: string; - /** @description Name of the student's assignment repository */ - student_repository_name: string; - /** @description URL of the student's assignment repository */ - student_repository_url: string; - /** @description Timestamp of the student's assignment submission */ - submission_timestamp: string; - /** @description Number of points awarded to the student */ - points_awarded: number; - /** @description Number of points available for the assignment */ - points_available: number; - /** @description If a group assignment, name of the group the student is in */ - group_name?: string; - }; - /** - * Code Of Conduct - * @description Code Of Conduct - */ - "code-of-conduct": { - /** @example contributor_covenant */ - key: string; - /** @example Contributor Covenant */ - name: string; - /** - * Format: uri - * @example https://api.github.com/codes_of_conduct/contributor_covenant - */ - url: string; - /** - * @example # Contributor Covenant Code of Conduct - * - * ## Our Pledge - * - * In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - * - * ## Our Standards - * - * Examples of behavior that contributes to creating a positive environment include: - * - * * Using welcoming and inclusive language - * * Being respectful of differing viewpoints and experiences - * * Gracefully accepting constructive criticism - * * Focusing on what is best for the community - * * Showing empathy towards other community members - * - * Examples of unacceptable behavior by participants include: - * - * * The use of sexualized language or imagery and unwelcome sexual attention or advances - * * Trolling, insulting/derogatory comments, and personal or political attacks - * * Public or private harassment - * * Publishing others' private information, such as a physical or electronic address, without explicit permission - * * Other conduct which could reasonably be considered inappropriate in a professional setting - * - * ## Our Responsibilities - * - * Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response - * to any instances of unacceptable behavior. - * - * Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - * - * ## Scope - * - * This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, - * posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - * - * ## Enforcement - * - * Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [EMAIL]. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - * - * Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - * - * ## Attribution - * - * This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.4, available at [http://contributor-covenant.org/version/1/4](http://contributor-covenant.org/version/1/4/). - */ - body?: string; - /** Format: uri */ - html_url: string | null; - }; - /** @description A code security configuration */ - "code-security-configuration": { - /** @description The ID of the code security configuration */ - id?: number; - /** @description The name of the code security configuration. Must be unique within the organization. */ - name?: string; - /** - * @description The type of the code security configuration. - * @enum {string} - */ - target_type?: "global" | "organization" | "enterprise"; - /** @description A description of the code security configuration */ - description?: string; - /** - * @description The enablement status of GitHub Advanced Security - * @enum {string} - */ - advanced_security?: - | "enabled" - | "disabled" - | "code_security" - | "secret_protection"; - /** - * @description The enablement status of Dependency Graph - * @enum {string} - */ - dependency_graph?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Automatic dependency submission - * @enum {string} - */ - dependency_graph_autosubmit_action?: "enabled" | "disabled" | "not_set"; - /** @description Feature options for Automatic dependency submission */ - dependency_graph_autosubmit_action_options?: { - /** @description Whether to use runners labeled with 'dependency-submission' or standard GitHub runners. */ - labeled_runners?: boolean; - }; - /** - * @description The enablement status of Dependabot alerts - * @enum {string} - */ - dependabot_alerts?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Dependabot security updates - * @enum {string} - */ - dependabot_security_updates?: "enabled" | "disabled" | "not_set"; - /** @description Feature options for code scanning */ - code_scanning_options?: { - /** @description Whether to allow repos which use advanced setup */ - allow_advanced?: boolean | null; - } | null; - /** - * @description The enablement status of code scanning default setup - * @enum {string} - */ - code_scanning_default_setup?: "enabled" | "disabled" | "not_set"; - /** @description Feature options for code scanning default setup */ - code_scanning_default_setup_options?: { - /** - * @description Whether to use labeled runners or standard GitHub runners. - * @enum {string|null} - */ - runner_type?: "standard" | "labeled" | "not_set" | null; - /** @description The label of the runner to use for code scanning when runner_type is 'labeled'. */ - runner_label?: string | null; - } | null; - /** - * @description The enablement status of code scanning delegated alert dismissal - * @enum {string} - */ - code_scanning_delegated_alert_dismissal?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of secret scanning - * @enum {string} - */ - secret_scanning?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning push protection - * @enum {string} - */ - secret_scanning_push_protection?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning delegated bypass - * @enum {string} - */ - secret_scanning_delegated_bypass?: "enabled" | "disabled" | "not_set"; - /** @description Feature options for secret scanning delegated bypass */ - secret_scanning_delegated_bypass_options?: { - /** @description The bypass reviewers for secret scanning delegated bypass */ - reviewers?: { - /** @description The ID of the team or role selected as a bypass reviewer */ - reviewer_id: number; - /** - * @description The type of the bypass reviewer - * @enum {string} - */ - reviewer_type: "TEAM" | "ROLE"; - }[]; - }; - /** - * @description The enablement status of secret scanning validity checks - * @enum {string} - */ - secret_scanning_validity_checks?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning non-provider patterns - * @enum {string} - */ - secret_scanning_non_provider_patterns?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of Copilot secret scanning - * @enum {string} - */ - secret_scanning_generic_secrets?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning delegated alert dismissal - * @enum {string} - */ - secret_scanning_delegated_alert_dismissal?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of private vulnerability reporting - * @enum {string} - */ - private_vulnerability_reporting?: "enabled" | "disabled" | "not_set"; - /** - * @description The enforcement status for a security configuration - * @enum {string} - */ - enforcement?: "enforced" | "unenforced"; - /** - * Format: uri - * @description The URL of the configuration - */ - url?: string; - /** - * Format: uri - * @description The URL of the configuration - */ - html_url?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - /** @description Security Configuration feature options for code scanning */ - "code-scanning-options": { - /** @description Whether to allow repos which use advanced setup */ - allow_advanced?: boolean | null; - } | null; - /** @description Feature options for code scanning default setup */ - "code-scanning-default-setup-options": { - /** - * @description Whether to use labeled runners or standard GitHub runners. - * @enum {string} - */ - runner_type?: "standard" | "labeled" | "not_set"; - /** @description The label of the runner to use for code scanning default setup when runner_type is 'labeled'. */ - runner_label?: string | null; - } | null; - /** @description A list of default code security configurations */ - "code-security-default-configurations": { - /** - * @description The visibility of newly created repositories for which the code security configuration will be applied to by default - * @enum {unknown} - */ - default_for_new_repos?: "public" | "private_and_internal" | "all"; - configuration?: components["schemas"]["code-security-configuration"]; - }[]; - /** - * Simple Repository - * @description A GitHub repository. - */ - "simple-repository": { - /** - * Format: int64 - * @description A unique identifier of the repository. - * @example 1296269 - */ - id: number; - /** - * @description The GraphQL identifier of the repository. - * @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 - */ - node_id: string; - /** - * @description The name of the repository. - * @example Hello-World - */ - name: string; - /** - * @description The full, globally unique, name of the repository. - * @example octocat/Hello-World - */ - full_name: string; - owner: components["schemas"]["simple-user"]; - /** @description Whether the repository is private. */ - private: boolean; - /** - * Format: uri - * @description The URL to view the repository on GitHub.com. - * @example https://github.com/octocat/Hello-World - */ - html_url: string; - /** - * @description The repository description. - * @example This your first repo! - */ - description: string | null; - /** @description Whether the repository is a fork. */ - fork: boolean; - /** - * Format: uri - * @description The URL to get more information about the repository from the GitHub API. - * @example https://api.github.com/repos/octocat/Hello-World - */ - url: string; - /** - * @description A template for the API URL to download the repository as an archive. - * @example https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} - */ - archive_url: string; - /** - * @description A template for the API URL to list the available assignees for issues in the repository. - * @example https://api.github.com/repos/octocat/Hello-World/assignees{/user} - */ - assignees_url: string; - /** - * @description A template for the API URL to create or retrieve a raw Git blob in the repository. - * @example https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} - */ - blobs_url: string; - /** - * @description A template for the API URL to get information about branches in the repository. - * @example https://api.github.com/repos/octocat/Hello-World/branches{/branch} - */ - branches_url: string; - /** - * @description A template for the API URL to get information about collaborators of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} - */ - collaborators_url: string; - /** - * @description A template for the API URL to get information about comments on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/comments{/number} - */ - comments_url: string; - /** - * @description A template for the API URL to get information about commits on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/commits{/sha} - */ - commits_url: string; - /** - * @description A template for the API URL to compare two commits or refs. - * @example https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} - */ - compare_url: string; - /** - * @description A template for the API URL to get the contents of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/contents/{+path} - */ - contents_url: string; - /** - * Format: uri - * @description A template for the API URL to list the contributors to the repository. - * @example https://api.github.com/repos/octocat/Hello-World/contributors - */ - contributors_url: string; - /** - * Format: uri - * @description The API URL to list the deployments of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/deployments - */ - deployments_url: string; - /** - * Format: uri - * @description The API URL to list the downloads on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/downloads - */ - downloads_url: string; - /** - * Format: uri - * @description The API URL to list the events of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/events - */ - events_url: string; - /** - * Format: uri - * @description The API URL to list the forks of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/forks - */ - forks_url: string; - /** - * @description A template for the API URL to get information about Git commits of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/git/commits{/sha} - */ - git_commits_url: string; - /** - * @description A template for the API URL to get information about Git refs of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/git/refs{/sha} - */ - git_refs_url: string; - /** - * @description A template for the API URL to get information about Git tags of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/git/tags{/sha} - */ - git_tags_url: string; - /** - * @description A template for the API URL to get information about issue comments on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/issues/comments{/number} - */ - issue_comment_url: string; - /** - * @description A template for the API URL to get information about issue events on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/issues/events{/number} - */ - issue_events_url: string; - /** - * @description A template for the API URL to get information about issues on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/issues{/number} - */ - issues_url: string; - /** - * @description A template for the API URL to get information about deploy keys on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/keys{/key_id} - */ - keys_url: string; - /** - * @description A template for the API URL to get information about labels of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/labels{/name} - */ - labels_url: string; - /** - * Format: uri - * @description The API URL to get information about the languages of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/languages - */ - languages_url: string; - /** - * Format: uri - * @description The API URL to merge branches in the repository. - * @example https://api.github.com/repos/octocat/Hello-World/merges - */ - merges_url: string; - /** - * @description A template for the API URL to get information about milestones of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/milestones{/number} - */ - milestones_url: string; - /** - * @description A template for the API URL to get information about notifications on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} - */ - notifications_url: string; - /** - * @description A template for the API URL to get information about pull requests on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/pulls{/number} - */ - pulls_url: string; - /** - * @description A template for the API URL to get information about releases on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/releases{/id} - */ - releases_url: string; - /** - * Format: uri - * @description The API URL to list the stargazers on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/stargazers - */ - stargazers_url: string; - /** - * @description A template for the API URL to get information about statuses of a commit. - * @example https://api.github.com/repos/octocat/Hello-World/statuses/{sha} - */ - statuses_url: string; - /** - * Format: uri - * @description The API URL to list the subscribers on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/subscribers - */ - subscribers_url: string; - /** - * Format: uri - * @description The API URL to subscribe to notifications for this repository. - * @example https://api.github.com/repos/octocat/Hello-World/subscription - */ - subscription_url: string; - /** - * Format: uri - * @description The API URL to get information about tags on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/tags - */ - tags_url: string; - /** - * Format: uri - * @description The API URL to list the teams on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/teams - */ - teams_url: string; - /** - * @description A template for the API URL to create or retrieve a raw Git tree of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/git/trees{/sha} - */ - trees_url: string; - /** - * Format: uri - * @description The API URL to list the hooks on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/hooks - */ - hooks_url: string; - }; - /** @description Repositories associated with a code security configuration and attachment status */ - "code-security-configuration-repositories": { - /** - * @description The attachment status of the code security configuration on the repository. - * @enum {string} - */ - status?: - | "attached" - | "attaching" - | "detached" - | "removed" - | "enforced" - | "failed" - | "updating" - | "removed_by_enterprise"; - repository?: components["schemas"]["simple-repository"]; - }; - /** @description The security alert number. */ - readonly "alert-number": number; - /** @description Details for the vulnerable package. */ - readonly "dependabot-alert-package": { - /** @description The package's language or package management ecosystem. */ - readonly ecosystem: string; - /** @description The unique package name within its ecosystem. */ - readonly name: string; - }; - /** @description Details pertaining to one vulnerable version range for the advisory. */ - readonly "dependabot-alert-security-vulnerability": { - readonly package: components["schemas"]["dependabot-alert-package"]; - /** - * @description The severity of the vulnerability. - * @enum {string} - */ - readonly severity: "low" | "medium" | "high" | "critical"; - /** @description Conditions that identify vulnerable versions of this vulnerability's package. */ - readonly vulnerable_version_range: string; - /** @description Details pertaining to the package version that patches this vulnerability. */ - readonly first_patched_version: { - /** @description The package version that patches this vulnerability. */ - readonly identifier: string; - } | null; - }; - /** @description Details for the GitHub Security Advisory. */ - readonly "dependabot-alert-security-advisory": { - /** @description The unique GitHub Security Advisory ID assigned to the advisory. */ - readonly ghsa_id: string; - /** @description The unique CVE ID assigned to the advisory. */ - readonly cve_id: string | null; - /** @description A short, plain text summary of the advisory. */ - readonly summary: string; - /** @description A long-form Markdown-supported description of the advisory. */ - readonly description: string; - /** @description Vulnerable version range information for the advisory. */ - readonly vulnerabilities: readonly components["schemas"]["dependabot-alert-security-vulnerability"][]; - /** - * @description The severity of the advisory. - * @enum {string} - */ - readonly severity: "low" | "medium" | "high" | "critical"; - /** @description Details for the advisory pertaining to the Common Vulnerability Scoring System. */ - readonly cvss: { - /** @description The overall CVSS score of the advisory. */ - readonly score: number; - /** @description The full CVSS vector string for the advisory. */ - readonly vector_string: string | null; - }; - readonly cvss_severities?: components["schemas"]["cvss-severities"]; - readonly epss?: components["schemas"]["security-advisory-epss"]; - /** @description Details for the advisory pertaining to Common Weakness Enumeration. */ - readonly cwes: readonly { - /** @description The unique CWE ID. */ - readonly cwe_id: string; - /** @description The short, plain text name of the CWE. */ - readonly name: string; - }[]; - /** @description Values that identify this advisory among security information sources. */ - readonly identifiers: readonly { - /** - * @description The type of advisory identifier. - * @enum {string} - */ - readonly type: "CVE" | "GHSA"; - /** @description The value of the advisory identifer. */ - readonly value: string; - }[]; - /** @description Links to additional advisory information. */ - readonly references: readonly { - /** - * Format: uri - * @description The URL of the reference. - */ - readonly url: string; - }[]; - /** - * Format: date-time - * @description The time that the advisory was published in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - readonly published_at: string; - /** - * Format: date-time - * @description The time that the advisory was last modified in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - readonly updated_at: string; - /** - * Format: date-time - * @description The time that the advisory was withdrawn in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - readonly withdrawn_at: string | null; - }; - /** - * Format: uri - * @description The REST API URL of the alert resource. - */ - readonly "alert-url": string; - /** - * Format: uri - * @description The GitHub URL of the alert resource. - */ - readonly "alert-html-url": string; - /** - * Format: date-time - * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - readonly "alert-created-at": string; - /** - * Format: date-time - * @description The time that the alert was last updated in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - readonly "alert-updated-at": string; - /** - * Format: date-time - * @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - readonly "alert-dismissed-at": string | null; - /** - * Format: date-time - * @description The time that the alert was no longer detected and was considered fixed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - readonly "alert-fixed-at": string | null; - /** - * Format: date-time - * @description The time that the alert was auto-dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - readonly "alert-auto-dismissed-at": string | null; - /** @description A Dependabot alert. */ - "dependabot-alert-with-repository": { - number: components["schemas"]["alert-number"]; - /** - * @description The state of the Dependabot alert. - * @enum {string} - */ - state: "auto_dismissed" | "dismissed" | "fixed" | "open"; - /** @description Details for the vulnerable dependency. */ - dependency: { - readonly package?: components["schemas"]["dependabot-alert-package"]; - /** @description The full path to the dependency manifest file, relative to the root of the repository. */ - readonly manifest_path?: string; - /** - * @description The execution scope of the vulnerable dependency. - * @enum {string|null} - */ - readonly scope?: "development" | "runtime" | null; - /** - * @description The vulnerable dependency's relationship to your project. - * - * > [!NOTE] - * > We are rolling out support for dependency relationship across ecosystems. This value will be "unknown" for all dependencies in unsupported ecosystems. - * - * @enum {string|null} - */ - readonly relationship?: "unknown" | "direct" | "transitive" | null; - }; - security_advisory: components["schemas"]["dependabot-alert-security-advisory"]; - security_vulnerability: components["schemas"]["dependabot-alert-security-vulnerability"]; - url: components["schemas"]["alert-url"]; - html_url: components["schemas"]["alert-html-url"]; - created_at: components["schemas"]["alert-created-at"]; - updated_at: components["schemas"]["alert-updated-at"]; - dismissed_at: components["schemas"]["alert-dismissed-at"]; - dismissed_by: components["schemas"]["nullable-simple-user"]; - /** - * @description The reason that the alert was dismissed. - * @enum {string|null} - */ - dismissed_reason: - | "fix_started" - | "inaccurate" - | "no_bandwidth" - | "not_used" - | "tolerable_risk" - | null; - /** @description An optional comment associated with the alert's dismissal. */ - dismissed_comment: string | null; - fixed_at: components["schemas"]["alert-fixed-at"]; - auto_dismissed_at?: components["schemas"]["alert-auto-dismissed-at"]; - repository: components["schemas"]["simple-repository"]; - }; - /** - * Enterprise Team - * @description Group of enterprise owners and/or members - */ - "enterprise-team": { - /** Format: int64 */ - id: number; - name: string; - description?: string; - slug: string; - /** Format: uri */ - url: string; - /** - * @description Retired: this field will not be returned with GHEC enterprise teams. - * @example disabled | all - */ - sync_to_organizations?: string; - /** @example disabled | selected | all */ - organization_selection_type?: string; - /** @example 62ab9291-fae2-468e-974b-7e45096d5021 */ - group_id: string | null; - /** - * @description Retired: this field will not be returned with GHEC enterprise teams. - * @example Justice League - */ - group_name?: string | null; - /** - * Format: uri - * @example https://github.com/enterprises/dc/teams/justice-league - */ - html_url: string; - members_url: string; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - }; - /** - * Organization Simple - * @description A GitHub organization. - */ - "organization-simple": { - /** @example github */ - login: string; - /** @example 1 */ - id: number; - /** @example MDEyOk9yZ2FuaXphdGlvbjE= */ - node_id: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github - */ - url: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github/repos - */ - repos_url: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github/events - */ - events_url: string; - /** @example https://api.github.com/orgs/github/hooks */ - hooks_url: string; - /** @example https://api.github.com/orgs/github/issues */ - issues_url: string; - /** @example https://api.github.com/orgs/github/members{/member} */ - members_url: string; - /** @example https://api.github.com/orgs/github/public_members{/member} */ - public_members_url: string; - /** @example https://github.com/images/error/octocat_happy.gif */ - avatar_url: string; - /** @example A great organization */ - description: string | null; - }; - /** - * Actor - * @description Actor - */ - actor: { - id: number; - login: string; - display_login?: string; - gravatar_id: string | null; - /** Format: uri */ - url: string; - /** Format: uri */ - avatar_url: string; - }; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - "nullable-milestone": { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/milestones/1 - */ - url: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/milestones/v1.0 - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/milestones/1/labels - */ - labels_url: string; - /** @example 1002604 */ - id: number; - /** @example MDk6TWlsZXN0b25lMTAwMjYwNA== */ - node_id: string; - /** - * @description The number of the milestone. - * @example 42 - */ - number: number; - /** - * @description The state of the milestone. - * @default open - * @example open - * @enum {string} - */ - state: "open" | "closed"; - /** - * @description The title of the milestone. - * @example v1.0 - */ - title: string; - /** @example Tracking milestone for version 1.0 */ - description: string | null; - creator: components["schemas"]["nullable-simple-user"]; - /** @example 4 */ - open_issues: number; - /** @example 8 */ - closed_issues: number; - /** - * Format: date-time - * @example 2011-04-10T20:09:31Z - */ - created_at: string; - /** - * Format: date-time - * @example 2014-03-03T18:58:10Z - */ - updated_at: string; - /** - * Format: date-time - * @example 2013-02-12T13:22:01Z - */ - closed_at: string | null; - /** - * Format: date-time - * @example 2012-10-09T23:39:01Z - */ - due_on: string | null; - } | null; - /** - * Issue Type - * @description The type of issue. - */ - "issue-type": { - /** @description The unique identifier of the issue type. */ - id: number; - /** @description The node identifier of the issue type. */ - node_id: string; - /** @description The name of the issue type. */ - name: string; - /** @description The description of the issue type. */ - description: string | null; - /** - * @description The color of the issue type. - * @enum {string|null} - */ - color?: - | "gray" - | "blue" - | "green" - | "yellow" - | "orange" - | "red" - | "pink" - | "purple" - | null; - /** - * Format: date-time - * @description The time the issue type created. - */ - created_at?: string; - /** - * Format: date-time - * @description The time the issue type last updated. - */ - updated_at?: string; - /** @description The enabled state of the issue type. */ - is_enabled?: boolean; - } | null; - /** - * GitHub app - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - "nullable-integration": { - /** - * @description Unique identifier of the GitHub app - * @example 37 - */ - id: number; - /** - * @description The slug name of the GitHub app - * @example probot-owners - */ - slug?: string; - /** @example MDExOkludGVncmF0aW9uMQ== */ - node_id: string; - /** @example "Iv1.25b5d1e65ffc4022" */ - client_id?: string; - owner: - | components["schemas"]["simple-user"] - | components["schemas"]["enterprise"]; - /** - * @description The name of the GitHub app - * @example Probot Owners - */ - name: string; - /** @example The description of the app. */ - description: string | null; - /** - * Format: uri - * @example https://example.com - */ - external_url: string; - /** - * Format: uri - * @example https://github.com/apps/super-ci - */ - html_url: string; - /** - * Format: date-time - * @example 2017-07-08T16:18:44-04:00 - */ - created_at: string; - /** - * Format: date-time - * @example 2017-07-08T16:18:44-04:00 - */ - updated_at: string; - /** - * @description The set of permissions for the GitHub app - * @example { - * "issues": "read", - * "deployments": "write" - * } - */ - permissions: { - issues?: string; - checks?: string; - metadata?: string; - contents?: string; - deployments?: string; - [key: string]: string | undefined; - }; - /** - * @description The list of events for the GitHub app. Note that the `installation_target`, `security_advisory`, and `meta` events are not included because they are global events and not specific to an installation. - * @example [ - * "label", - * "deployment" - * ] - */ - events: string[]; - /** - * @description The number of installations associated with the GitHub app. Only returned when the integration is requesting details about itself. - * @example 5 - */ - installations_count?: number; - } | null; - /** - * author_association - * @description How the author is associated with the repository. - * @example OWNER - * @enum {string} - */ - "author-association": - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** Reaction Rollup */ - "reaction-rollup": { - /** Format: uri */ - url: string; - total_count: number; - "+1": number; - "-1": number; - laugh: number; - confused: number; - heart: number; - hooray: number; - eyes: number; - rocket: number; - }; - /** Sub-issues Summary */ - "sub-issues-summary": { - total: number; - completed: number; - percent_completed: number; - }; - /** Issue Dependencies Summary */ - "issue-dependencies-summary": { - blocked_by: number; - blocking: number; - total_blocked_by: number; - total_blocking: number; - }; - /** - * Issue Field Value - * @description A value assigned to an issue field - */ - "issue-field-value": { - /** - * Format: int64 - * @description Unique identifier for the issue field. - * @example 1 - */ - issue_field_id: number; - /** @example IFT_GDKND */ - node_id: string; - /** - * @description The data type of the issue field - * @example text - * @enum {string} - */ - data_type: "text" | "single_select" | "number" | "date"; - /** @description The value of the issue field */ - value: (string | number) | null; - /** @description Details about the selected option (only present for single_select fields) */ - single_select_option?: { - /** - * Format: int64 - * @description Unique identifier for the option. - * @example 1 - */ - id: number; - /** - * @description The name of the option - * @example High - */ - name: string; - /** - * @description The color of the option - * @example red - */ - color: string; - } | null; - }; - /** - * Issue - * @description Issues are a great way to keep track of tasks, enhancements, and bugs for your projects. - */ - issue: { - /** Format: int64 */ - id: number; - node_id: string; - /** - * Format: uri - * @description URL for the issue - * @example https://api.github.com/repositories/42/issues/1 - */ - url: string; - /** Format: uri */ - repository_url: string; - labels_url: string; - /** Format: uri */ - comments_url: string; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** - * @description Number uniquely identifying the issue within its repository - * @example 42 - */ - number: number; - /** - * @description State of the issue; either 'open' or 'closed' - * @example open - */ - state: string; - /** - * @description The reason for the current state - * @example not_planned - * @enum {string|null} - */ - state_reason?: - | "completed" - | "reopened" - | "not_planned" - | "duplicate" - | null; - /** - * @description Title of the issue - * @example Widget creation fails in Safari on OS X 10.8 - */ - title: string; - /** - * @description Contents of the issue - * @example It looks like the new widget form is broken on Safari. When I try and create the widget, Safari crashes. This is reproducible on 10.8, but not 10.9. Maybe a browser bug? - */ - body?: string | null; - user: components["schemas"]["nullable-simple-user"]; - /** - * @description Labels to associate with this issue; pass one or more label names to replace the set of labels on this issue; send an empty array to clear all labels from the issue; note that the labels are silently dropped for users without push access to the repository - * @example [ - * "bug", - * "registration" - * ] - */ - labels: OneOf< - [ - string, - { - /** Format: int64 */ - id?: number; - node_id?: string; - /** Format: uri */ - url?: string; - name?: string; - description?: string | null; - color?: string | null; - default?: boolean; - }, - ] - >[]; - assignee: components["schemas"]["nullable-simple-user"]; - assignees?: components["schemas"]["simple-user"][] | null; - milestone: components["schemas"]["nullable-milestone"]; - locked: boolean; - active_lock_reason?: string | null; - comments: number; - pull_request?: { - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - diff_url: string | null; - /** Format: uri */ - html_url: string | null; - /** Format: uri */ - patch_url: string | null; - /** Format: uri */ - url: string | null; - }; - /** Format: date-time */ - closed_at: string | null; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - draft?: boolean; - closed_by?: components["schemas"]["nullable-simple-user"]; - body_html?: string; - body_text?: string; - /** Format: uri */ - timeline_url?: string; - type?: components["schemas"]["issue-type"]; - repository?: components["schemas"]["repository"]; - performed_via_github_app?: components["schemas"]["nullable-integration"]; - author_association?: components["schemas"]["author-association"]; - reactions?: components["schemas"]["reaction-rollup"]; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - /** - * Format: uri - * @description URL to get the parent issue of this issue, if it is a sub-issue - */ - parent_issue_url?: string | null; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - }; - /** - * Issue Comment - * @description Comments provide a way for people to collaborate on an issue. - */ - "issue-comment": { - /** - * Format: int64 - * @description Unique identifier of the issue comment - * @example 42 - */ - id: number; - node_id: string; - /** - * Format: uri - * @description URL for the issue comment - * @example https://api.github.com/repositories/42/issues/comments/1 - */ - url: string; - /** - * @description Contents of the issue comment - * @example What version of Safari were you using when you observed this bug? - */ - body?: string; - body_text?: string; - body_html?: string; - /** Format: uri */ - html_url: string; - user: components["schemas"]["nullable-simple-user"]; - /** - * Format: date-time - * @example 2011-04-14T16:00:49Z - */ - created_at: string; - /** - * Format: date-time - * @example 2011-04-14T16:00:49Z - */ - updated_at: string; - /** Format: uri */ - issue_url: string; - author_association: components["schemas"]["author-association"]; - performed_via_github_app?: components["schemas"]["nullable-integration"]; - reactions?: components["schemas"]["reaction-rollup"]; - }; - /** - * Event - * @description Event - */ - event: { - id: string; - type: string | null; - actor: components["schemas"]["actor"]; - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - org?: components["schemas"]["actor"]; - payload: { - action?: string; - issue?: components["schemas"]["issue"]; - comment?: components["schemas"]["issue-comment"]; - pages?: { - page_name?: string; - title?: string; - summary?: string | null; - action?: string; - sha?: string; - html_url?: string; - }[]; - }; - public: boolean; - /** Format: date-time */ - created_at: string | null; - }; - /** - * Link With Type - * @description Hypermedia Link with Type - */ - "link-with-type": { - href: string; - type: string; - }; - /** - * Feed - * @description Feed - */ - feed: { - /** @example https://github.com/timeline */ - timeline_url: string; - /** @example https://github.com/{user} */ - user_url: string; - /** @example https://github.com/octocat */ - current_user_public_url?: string; - /** @example https://github.com/octocat.private?token=abc123 */ - current_user_url?: string; - /** @example https://github.com/octocat.private.actor?token=abc123 */ - current_user_actor_url?: string; - /** @example https://github.com/octocat-org */ - current_user_organization_url?: string; - /** - * @example [ - * "https://github.com/organizations/github/octocat.private.atom?token=abc123" - * ] - */ - current_user_organization_urls?: string[]; - /** @example https://github.com/security-advisories */ - security_advisories_url?: string; - /** - * @description A feed of discussions for a given repository. - * @example https://github.com/{user}/{repo}/discussions - */ - repository_discussions_url?: string; - /** - * @description A feed of discussions for a given repository and category. - * @example https://github.com/{user}/{repo}/discussions/categories/{category} - */ - repository_discussions_category_url?: string; - _links: { - timeline: components["schemas"]["link-with-type"]; - user: components["schemas"]["link-with-type"]; - security_advisories?: components["schemas"]["link-with-type"]; - current_user?: components["schemas"]["link-with-type"]; - current_user_public?: components["schemas"]["link-with-type"]; - current_user_actor?: components["schemas"]["link-with-type"]; - current_user_organization?: components["schemas"]["link-with-type"]; - current_user_organizations?: components["schemas"]["link-with-type"][]; - repository_discussions?: components["schemas"]["link-with-type"]; - repository_discussions_category?: components["schemas"]["link-with-type"]; - }; - }; - /** - * Base Gist - * @description Base Gist - */ - "base-gist": { - /** Format: uri */ - url: string; - /** Format: uri */ - forks_url: string; - /** Format: uri */ - commits_url: string; - id: string; - node_id: string; - /** Format: uri */ - git_pull_url: string; - /** Format: uri */ - git_push_url: string; - /** Format: uri */ - html_url: string; - files: { - [key: string]: { - filename?: string; - type?: string; - language?: string; - raw_url?: string; - size?: number; - /** - * @description The encoding used for `content`. Currently, `"utf-8"` and `"base64"` are supported. - * @default utf-8 - */ - encoding?: string; - }; - }; - public: boolean; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - description: string | null; - comments: number; - comments_enabled?: boolean; - user: components["schemas"]["nullable-simple-user"]; - /** Format: uri */ - comments_url: string; - owner?: components["schemas"]["simple-user"]; - truncated?: boolean; - forks?: unknown[]; - history?: unknown[]; - }; - /** - * Public User - * @description Public User - */ - "public-user": { - login: string; - /** Format: int64 */ - id: number; - user_view_type?: string; - node_id: string; - /** Format: uri */ - avatar_url: string; - gravatar_id: string | null; - /** Format: uri */ - url: string; - /** Format: uri */ - html_url: string; - /** Format: uri */ - followers_url: string; - following_url: string; - gists_url: string; - starred_url: string; - /** Format: uri */ - subscriptions_url: string; - /** Format: uri */ - organizations_url: string; - /** Format: uri */ - repos_url: string; - events_url: string; - /** Format: uri */ - received_events_url: string; - type: string; - site_admin: boolean; - name: string | null; - company: string | null; - blog: string | null; - location: string | null; - /** Format: email */ - email: string | null; - /** Format: email */ - notification_email?: string | null; - hireable: boolean | null; - bio: string | null; - twitter_username?: string | null; - public_repos: number; - public_gists: number; - followers: number; - following: number; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - plan?: { - collaborators: number; - name: string; - space: number; - private_repos: number; - }; - /** @example 1 */ - private_gists?: number; - /** @example 2 */ - total_private_repos?: number; - /** @example 2 */ - owned_private_repos?: number; - /** @example 1 */ - disk_usage?: number; - /** @example 3 */ - collaborators?: number; - }; - /** - * Gist History - * @description Gist History - */ - "gist-history": { - user?: components["schemas"]["nullable-simple-user"]; - version?: string; - /** Format: date-time */ - committed_at?: string; - change_status?: { - total?: number; - additions?: number; - deletions?: number; - }; - /** Format: uri */ - url?: string; - }; - /** - * Gist Simple - * @description Gist Simple - */ - "gist-simple": { - /** @deprecated */ - forks?: - | { - id?: string; - /** Format: uri */ - url?: string; - user?: components["schemas"]["public-user"]; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[] - | null; - /** @deprecated */ - history?: components["schemas"]["gist-history"][] | null; - /** - * Gist - * @description Gist - */ - fork_of?: { - /** Format: uri */ - url: string; - /** Format: uri */ - forks_url: string; - /** Format: uri */ - commits_url: string; - id: string; - node_id: string; - /** Format: uri */ - git_pull_url: string; - /** Format: uri */ - git_push_url: string; - /** Format: uri */ - html_url: string; - files: { - [key: string]: { - filename?: string; - type?: string; - language?: string; - raw_url?: string; - size?: number; - }; - }; - public: boolean; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - description: string | null; - comments: number; - comments_enabled?: boolean; - user: components["schemas"]["nullable-simple-user"]; - /** Format: uri */ - comments_url: string; - owner?: components["schemas"]["nullable-simple-user"]; - truncated?: boolean; - forks?: unknown[]; - history?: unknown[]; - } | null; - url?: string; - forks_url?: string; - commits_url?: string; - id?: string; - node_id?: string; - git_pull_url?: string; - git_push_url?: string; - html_url?: string; - files?: { - [key: string]: { - filename?: string; - type?: string; - language?: string; - raw_url?: string; - size?: number; - truncated?: boolean; - content?: string; - /** - * @description The encoding used for `content`. Currently, `"utf-8"` and `"base64"` are supported. - * @default utf-8 - */ - encoding?: string; - } | null; - }; - public?: boolean; - created_at?: string; - updated_at?: string; - description?: string | null; - comments?: number; - comments_enabled?: boolean; - user?: string | null; - comments_url?: string; - owner?: components["schemas"]["simple-user"]; - truncated?: boolean; - }; - /** - * Gist Comment - * @description A comment made to a gist. - */ - "gist-comment": { - /** @example 1 */ - id: number; - /** @example MDExOkdpc3RDb21tZW50MQ== */ - node_id: string; - /** - * Format: uri - * @example https://api.github.com/gists/a6db0bec360bb87e9418/comments/1 - */ - url: string; - /** - * @description The comment text. - * @example Body of the attachment - */ - body: string; - user: components["schemas"]["nullable-simple-user"]; - /** - * Format: date-time - * @example 2011-04-18T23:23:56Z - */ - created_at: string; - /** - * Format: date-time - * @example 2011-04-18T23:23:56Z - */ - updated_at: string; - author_association: components["schemas"]["author-association"]; - }; - /** - * Gist Commit - * @description Gist Commit - */ - "gist-commit": { - /** - * Format: uri - * @example https://api.github.com/gists/aa5a315d61ae9438b18d/57a7f021a713b1c5a6a199b54cc514735d2d462f - */ - url: string; - /** @example 57a7f021a713b1c5a6a199b54cc514735d2d462f */ - version: string; - user: components["schemas"]["nullable-simple-user"]; - change_status: { - total?: number; - additions?: number; - deletions?: number; - }; - /** - * Format: date-time - * @example 2010-04-14T02:15:15Z - */ - committed_at: string; - }; - /** - * Gitignore Template - * @description Gitignore Template - */ - "gitignore-template": { - /** @example C */ - name: string; - /** - * @example # Object files - * *.o - * - * # Libraries - * *.lib - * *.a - * - * # Shared objects (inc. Windows DLLs) - * *.dll - * *.so - * *.so.* - * *.dylib - * - * # Executables - * *.exe - * *.out - * *.app - */ - source: string; - }; - /** - * License Simple - * @description License Simple - */ - "license-simple": { - /** @example mit */ - key: string; - /** @example MIT License */ - name: string; - /** - * Format: uri - * @example https://api.github.com/licenses/mit - */ - url: string | null; - /** @example MIT */ - spdx_id: string | null; - /** @example MDc6TGljZW5zZW1pdA== */ - node_id: string; - /** Format: uri */ - html_url?: string; - }; - /** - * License - * @description License - */ - license: { - /** @example mit */ - key: string; - /** @example MIT License */ - name: string; - /** @example MIT */ - spdx_id: string | null; - /** - * Format: uri - * @example https://api.github.com/licenses/mit - */ - url: string | null; - /** @example MDc6TGljZW5zZW1pdA== */ - node_id: string; - /** - * Format: uri - * @example http://choosealicense.com/licenses/mit/ - */ - html_url: string; - /** @example A permissive license that is short and to the point. It lets people do anything with your code with proper attribution and without warranty. */ - description: string; - /** @example Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. */ - implementation: string; - /** - * @example [ - * "commercial-use", - * "modifications", - * "distribution", - * "sublicense", - * "private-use" - * ] - */ - permissions: string[]; - /** - * @example [ - * "include-copyright" - * ] - */ - conditions: string[]; - /** - * @example [ - * "no-liability" - * ] - */ - limitations: string[]; - /** - * @example - * - * The MIT License (MIT) - * - * Copyright (c) [year] [fullname] - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - body: string; - /** @example true */ - featured: boolean; - }; - /** - * Marketplace Listing Plan - * @description Marketplace Listing Plan - */ - "marketplace-listing-plan": { - /** - * Format: uri - * @example https://api.github.com/marketplace_listing/plans/1313 - */ - url: string; - /** - * Format: uri - * @example https://api.github.com/marketplace_listing/plans/1313/accounts - */ - accounts_url: string; - /** @example 1313 */ - id: number; - /** @example 3 */ - number: number; - /** @example Pro */ - name: string; - /** @example A professional-grade CI solution */ - description: string; - /** @example 1099 */ - monthly_price_in_cents: number; - /** @example 11870 */ - yearly_price_in_cents: number; - /** - * @example FLAT_RATE - * @enum {string} - */ - price_model: "FREE" | "FLAT_RATE" | "PER_UNIT"; - /** @example true */ - has_free_trial: boolean; - unit_name: string | null; - /** @example published */ - state: string; - /** - * @example [ - * "Up to 25 private repositories", - * "11 concurrent builds" - * ] - */ - bullets: string[]; - }; - /** - * Marketplace Purchase - * @description Marketplace Purchase - */ - "marketplace-purchase": { - url: string; - type: string; - id: number; - login: string; - organization_billing_email?: string; - email?: string | null; - marketplace_pending_change?: { - is_installed?: boolean; - effective_date?: string; - unit_count?: number | null; - id?: number; - plan?: components["schemas"]["marketplace-listing-plan"]; - } | null; - marketplace_purchase: { - billing_cycle?: string; - next_billing_date?: string | null; - is_installed?: boolean; - unit_count?: number | null; - on_free_trial?: boolean; - free_trial_ends_on?: string | null; - updated_at?: string; - plan?: components["schemas"]["marketplace-listing-plan"]; - }; - }; - /** - * Api Overview - * @description Api Overview - */ - "api-overview": { - /** @example true */ - verifiable_password_authentication: boolean; - ssh_key_fingerprints?: { - SHA256_RSA?: string; - SHA256_DSA?: string; - SHA256_ECDSA?: string; - SHA256_ED25519?: string; - }; - /** - * @example [ - * "ssh-ed25519 ABCDEFGHIJKLMNOPQRSTUVWXYZ" - * ] - */ - ssh_keys?: string[]; - /** - * @example [ - * "192.0.2.1" - * ] - */ - hooks?: string[]; - /** - * @example [ - * "192.0.2.1" - * ] - */ - github_enterprise_importer?: string[]; - /** - * @example [ - * "192.0.2.1" - * ] - */ - web?: string[]; - /** - * @example [ - * "192.0.2.1" - * ] - */ - api?: string[]; - /** - * @example [ - * "192.0.2.1" - * ] - */ - git?: string[]; - /** - * @example [ - * "192.0.2.1" - * ] - */ - packages?: string[]; - /** - * @example [ - * "192.0.2.1" - * ] - */ - pages?: string[]; - /** - * @example [ - * "192.0.2.1" - * ] - */ - importer?: string[]; - /** - * @example [ - * "192.0.2.1" - * ] - */ - actions?: string[]; - /** - * @example [ - * "192.0.2.1" - * ] - */ - actions_macos?: string[]; - /** - * @example [ - * "192.0.2.1" - * ] - */ - codespaces?: string[]; - /** - * @example [ - * "192.0.2.1" - * ] - */ - dependabot?: string[]; - /** - * @example [ - * "192.0.2.1" - * ] - */ - copilot?: string[]; - domains?: { - website?: string[]; - codespaces?: string[]; - copilot?: string[]; - packages?: string[]; - actions?: string[]; - actions_inbound?: { - full_domains?: string[]; - wildcard_domains?: string[]; - }; - artifact_attestations?: { - /** - * @example [ - * "example" - * ] - */ - trust_domain?: string; - services?: string[]; - }; - }; - }; - "security-and-analysis": { - /** - * @description Enable or disable GitHub Advanced Security for the repository. - * - * For standalone Code Scanning or Secret Protection products, this parameter cannot be used. - */ - advanced_security?: { - /** @enum {string} */ - status?: "enabled" | "disabled"; - }; - code_security?: { - /** @enum {string} */ - status?: "enabled" | "disabled"; - }; - /** @description Enable or disable Dependabot security updates for the repository. */ - dependabot_security_updates?: { - /** - * @description The enablement status of Dependabot security updates for the repository. - * @enum {string} - */ - status?: "enabled" | "disabled"; - }; - secret_scanning?: { - /** @enum {string} */ - status?: "enabled" | "disabled"; - }; - secret_scanning_push_protection?: { - /** @enum {string} */ - status?: "enabled" | "disabled"; - }; - secret_scanning_non_provider_patterns?: { - /** @enum {string} */ - status?: "enabled" | "disabled"; - }; - secret_scanning_ai_detection?: { - /** @enum {string} */ - status?: "enabled" | "disabled"; - }; - } | null; - /** - * Minimal Repository - * @description Minimal Repository - */ - "minimal-repository": { - /** - * Format: int64 - * @example 1296269 - */ - id: number; - /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ - node_id: string; - /** @example Hello-World */ - name: string; - /** @example octocat/Hello-World */ - full_name: string; - owner: components["schemas"]["simple-user"]; - private: boolean; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World - */ - html_url: string; - /** @example This your first repo! */ - description: string | null; - fork: boolean; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World - */ - url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ - archive_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ - assignees_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ - blobs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ - branches_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ - collaborators_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ - comments_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ - commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ - compare_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ - contents_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/contributors - */ - contributors_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/deployments - */ - deployments_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/downloads - */ - downloads_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/events - */ - events_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/forks - */ - forks_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ - git_commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ - git_refs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ - git_tags_url: string; - git_url?: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ - issue_comment_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ - issue_events_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ - issues_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ - keys_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ - labels_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/languages - */ - languages_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/merges - */ - merges_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ - milestones_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ - notifications_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ - pulls_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ - releases_url: string; - ssh_url?: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/stargazers - */ - stargazers_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ - statuses_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscribers - */ - subscribers_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscription - */ - subscription_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/tags - */ - tags_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/teams - */ - teams_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ - trees_url: string; - clone_url?: string; - mirror_url?: string | null; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/hooks - */ - hooks_url: string; - svn_url?: string; - homepage?: string | null; - language?: string | null; - forks_count?: number; - stargazers_count?: number; - watchers_count?: number; - /** @description The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0. */ - size?: number; - default_branch?: string; - open_issues_count?: number; - is_template?: boolean; - topics?: string[]; - has_issues?: boolean; - has_projects?: boolean; - has_wiki?: boolean; - has_pages?: boolean; - has_downloads?: boolean; - has_discussions?: boolean; - archived?: boolean; - disabled?: boolean; - visibility?: string; - /** - * Format: date-time - * @example 2011-01-26T19:06:43Z - */ - pushed_at?: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - created_at?: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:14:43Z - */ - updated_at?: string | null; - permissions?: { - admin?: boolean; - maintain?: boolean; - push?: boolean; - triage?: boolean; - pull?: boolean; - }; - /** @example admin */ - role_name?: string; - temp_clone_token?: string; - delete_branch_on_merge?: boolean; - subscribers_count?: number; - network_count?: number; - code_of_conduct?: components["schemas"]["code-of-conduct"]; - license?: { - key?: string; - name?: string; - spdx_id?: string; - url?: string; - node_id?: string; - } | null; - /** @example 0 */ - forks?: number; - /** @example 0 */ - open_issues?: number; - /** @example 0 */ - watchers?: number; - allow_forking?: boolean; - /** @example false */ - web_commit_signoff_required?: boolean; - security_and_analysis?: components["schemas"]["security-and-analysis"]; - /** @description The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - }; - /** - * Thread - * @description Thread - */ - thread: { - id: string; - repository: components["schemas"]["minimal-repository"]; - subject: { - title: string; - url: string; - latest_comment_url: string; - type: string; - }; - reason: string; - unread: boolean; - updated_at: string; - last_read_at: string | null; - url: string; - /** @example https://api.github.com/notifications/threads/2/subscription */ - subscription_url: string; - }; - /** - * Thread Subscription - * @description Thread Subscription - */ - "thread-subscription": { - /** @example true */ - subscribed: boolean; - ignored: boolean; - reason: string | null; - /** - * Format: date-time - * @example 2012-10-06T21:34:12Z - */ - created_at: string | null; - /** - * Format: uri - * @example https://api.github.com/notifications/threads/1/subscription - */ - url: string; - /** - * Format: uri - * @example https://api.github.com/notifications/threads/1 - */ - thread_url?: string; - /** - * Format: uri - * @example https://api.github.com/repos/1 - */ - repository_url?: string; - }; - /** - * Simple Repository - * @description A GitHub repository. - */ - "nullable-simple-repository": { - /** - * Format: int64 - * @description A unique identifier of the repository. - * @example 1296269 - */ - id: number; - /** - * @description The GraphQL identifier of the repository. - * @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 - */ - node_id: string; - /** - * @description The name of the repository. - * @example Hello-World - */ - name: string; - /** - * @description The full, globally unique, name of the repository. - * @example octocat/Hello-World - */ - full_name: string; - owner: components["schemas"]["simple-user"]; - /** @description Whether the repository is private. */ - private: boolean; - /** - * Format: uri - * @description The URL to view the repository on GitHub.com. - * @example https://github.com/octocat/Hello-World - */ - html_url: string; - /** - * @description The repository description. - * @example This your first repo! - */ - description: string | null; - /** @description Whether the repository is a fork. */ - fork: boolean; - /** - * Format: uri - * @description The URL to get more information about the repository from the GitHub API. - * @example https://api.github.com/repos/octocat/Hello-World - */ - url: string; - /** - * @description A template for the API URL to download the repository as an archive. - * @example https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} - */ - archive_url: string; - /** - * @description A template for the API URL to list the available assignees for issues in the repository. - * @example https://api.github.com/repos/octocat/Hello-World/assignees{/user} - */ - assignees_url: string; - /** - * @description A template for the API URL to create or retrieve a raw Git blob in the repository. - * @example https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} - */ - blobs_url: string; - /** - * @description A template for the API URL to get information about branches in the repository. - * @example https://api.github.com/repos/octocat/Hello-World/branches{/branch} - */ - branches_url: string; - /** - * @description A template for the API URL to get information about collaborators of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} - */ - collaborators_url: string; - /** - * @description A template for the API URL to get information about comments on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/comments{/number} - */ - comments_url: string; - /** - * @description A template for the API URL to get information about commits on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/commits{/sha} - */ - commits_url: string; - /** - * @description A template for the API URL to compare two commits or refs. - * @example https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} - */ - compare_url: string; - /** - * @description A template for the API URL to get the contents of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/contents/{+path} - */ - contents_url: string; - /** - * Format: uri - * @description A template for the API URL to list the contributors to the repository. - * @example https://api.github.com/repos/octocat/Hello-World/contributors - */ - contributors_url: string; - /** - * Format: uri - * @description The API URL to list the deployments of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/deployments - */ - deployments_url: string; - /** - * Format: uri - * @description The API URL to list the downloads on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/downloads - */ - downloads_url: string; - /** - * Format: uri - * @description The API URL to list the events of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/events - */ - events_url: string; - /** - * Format: uri - * @description The API URL to list the forks of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/forks - */ - forks_url: string; - /** - * @description A template for the API URL to get information about Git commits of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/git/commits{/sha} - */ - git_commits_url: string; - /** - * @description A template for the API URL to get information about Git refs of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/git/refs{/sha} - */ - git_refs_url: string; - /** - * @description A template for the API URL to get information about Git tags of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/git/tags{/sha} - */ - git_tags_url: string; - /** - * @description A template for the API URL to get information about issue comments on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/issues/comments{/number} - */ - issue_comment_url: string; - /** - * @description A template for the API URL to get information about issue events on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/issues/events{/number} - */ - issue_events_url: string; - /** - * @description A template for the API URL to get information about issues on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/issues{/number} - */ - issues_url: string; - /** - * @description A template for the API URL to get information about deploy keys on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/keys{/key_id} - */ - keys_url: string; - /** - * @description A template for the API URL to get information about labels of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/labels{/name} - */ - labels_url: string; - /** - * Format: uri - * @description The API URL to get information about the languages of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/languages - */ - languages_url: string; - /** - * Format: uri - * @description The API URL to merge branches in the repository. - * @example https://api.github.com/repos/octocat/Hello-World/merges - */ - merges_url: string; - /** - * @description A template for the API URL to get information about milestones of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/milestones{/number} - */ - milestones_url: string; - /** - * @description A template for the API URL to get information about notifications on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} - */ - notifications_url: string; - /** - * @description A template for the API URL to get information about pull requests on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/pulls{/number} - */ - pulls_url: string; - /** - * @description A template for the API URL to get information about releases on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/releases{/id} - */ - releases_url: string; - /** - * Format: uri - * @description The API URL to list the stargazers on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/stargazers - */ - stargazers_url: string; - /** - * @description A template for the API URL to get information about statuses of a commit. - * @example https://api.github.com/repos/octocat/Hello-World/statuses/{sha} - */ - statuses_url: string; - /** - * Format: uri - * @description The API URL to list the subscribers on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/subscribers - */ - subscribers_url: string; - /** - * Format: uri - * @description The API URL to subscribe to notifications for this repository. - * @example https://api.github.com/repos/octocat/Hello-World/subscription - */ - subscription_url: string; - /** - * Format: uri - * @description The API URL to get information about tags on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/tags - */ - tags_url: string; - /** - * Format: uri - * @description The API URL to list the teams on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/teams - */ - teams_url: string; - /** - * @description A template for the API URL to create or retrieve a raw Git tree of the repository. - * @example https://api.github.com/repos/octocat/Hello-World/git/trees{/sha} - */ - trees_url: string; - /** - * Format: uri - * @description The API URL to list the hooks on the repository. - * @example https://api.github.com/repos/octocat/Hello-World/hooks - */ - hooks_url: string; - } | null; - /** - * Dependabot Repository Access Details - * @description Information about repositories that Dependabot is able to access in an organization - */ - "dependabot-repository-access-details": { - /** - * @description The default repository access level for Dependabot updates. - * @example internal - * @enum {string|null} - */ - default_level?: "public" | "internal" | null; - accessible_repositories?: components["schemas"]["nullable-simple-repository"][]; - }; - /** - * Custom Property Value - * @description Custom property name and associated value - */ - "custom-property-value": { - /** @description The name of the property */ - property_name: string; - /** @description The value assigned to the property */ - value: string | string[] | null; - }; - "billing-premium-request-usage-report-org": { - timePeriod: { - /** @description The year for the usage report. */ - year: number; - /** @description The month for the usage report. */ - month?: number; - /** @description The day for the usage report. */ - day?: number; - }; - /** @description The unique identifier of the organization. */ - organization: string; - /** @description The name of the user for the usage report. */ - user?: string; - /** @description The product for the usage report. */ - product?: string; - /** @description The model for the usage report. */ - model?: string; - usageItems: { - /** @description Product name. */ - product: string; - /** @description SKU name. */ - sku: string; - /** @description Model name. */ - model: string; - /** @description Unit type of the usage line item. */ - unitType: string; - /** @description Price per unit of the usage line item. */ - pricePerUnit: number; - /** @description Gross quantity of the usage line item. */ - grossQuantity: number; - /** @description Gross amount of the usage line item. */ - grossAmount: number; - /** @description Discount quantity of the usage line item. */ - discountQuantity: number; - /** @description Discount amount of the usage line item. */ - discountAmount: number; - /** @description Net quantity of the usage line item. */ - netQuantity: number; - /** @description Net amount of the usage line item. */ - netAmount: number; - }[]; - }; - "billing-usage-report": { - usageItems?: { - /** @description Date of the usage line item. */ - date: string; - /** @description Product name. */ - product: string; - /** @description SKU name. */ - sku: string; - /** @description Quantity of the usage line item. */ - quantity: number; - /** @description Unit type of the usage line item. */ - unitType: string; - /** @description Price per unit of the usage line item. */ - pricePerUnit: number; - /** @description Gross amount of the usage line item. */ - grossAmount: number; - /** @description Discount amount of the usage line item. */ - discountAmount: number; - /** @description Net amount of the usage line item. */ - netAmount: number; - /** @description Name of the organization. */ - organizationName: string; - /** @description Name of the repository. */ - repositoryName?: string; - }[]; - }; - /** - * Organization Full - * @description Organization Full - */ - "organization-full": { - /** @example github */ - login: string; - /** @example 1 */ - id: number; - /** @example MDEyOk9yZ2FuaXphdGlvbjE= */ - node_id: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github - */ - url: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github/repos - */ - repos_url: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github/events - */ - events_url: string; - /** @example https://api.github.com/orgs/github/hooks */ - hooks_url: string; - /** @example https://api.github.com/orgs/github/issues */ - issues_url: string; - /** @example https://api.github.com/orgs/github/members{/member} */ - members_url: string; - /** @example https://api.github.com/orgs/github/public_members{/member} */ - public_members_url: string; - /** @example https://github.com/images/error/octocat_happy.gif */ - avatar_url: string; - /** @example A great organization */ - description: string | null; - /** @example github */ - name?: string; - /** @example GitHub */ - company?: string; - /** - * Format: uri - * @example https://github.com/blog - */ - blog?: string; - /** @example San Francisco */ - location?: string; - /** - * Format: email - * @example octocat@github.com - */ - email?: string; - /** @example github */ - twitter_username?: string | null; - /** @example true */ - is_verified?: boolean; - /** @example true */ - has_organization_projects: boolean; - /** @example true */ - has_repository_projects: boolean; - /** @example 2 */ - public_repos: number; - /** @example 1 */ - public_gists: number; - /** @example 20 */ - followers: number; - /** @example 0 */ - following: number; - /** - * Format: uri - * @example https://github.com/octocat - */ - html_url: string; - /** @example Organization */ - type: string; - /** @example 100 */ - total_private_repos?: number; - /** @example 100 */ - owned_private_repos?: number; - /** @example 81 */ - private_gists?: number | null; - /** @example 10000 */ - disk_usage?: number | null; - /** - * @description The number of collaborators on private repositories. - * - * This field may be null if the number of private repositories is over 50,000. - * @example 8 - */ - collaborators?: number | null; - /** - * Format: email - * @example org@example.com - */ - billing_email?: string | null; - plan?: { - name: string; - space: number; - private_repos: number; - filled_seats?: number; - seats?: number; - }; - default_repository_permission?: string | null; - /** - * @description The default branch for repositories created in this organization. - * @example main - */ - default_repository_branch?: string | null; - /** @example true */ - members_can_create_repositories?: boolean | null; - /** @example true */ - two_factor_requirement_enabled?: boolean | null; - /** @example all */ - members_allowed_repository_creation_type?: string; - /** @example true */ - members_can_create_public_repositories?: boolean; - /** @example true */ - members_can_create_private_repositories?: boolean; - /** @example true */ - members_can_create_internal_repositories?: boolean; - /** @example true */ - members_can_create_pages?: boolean; - /** @example true */ - members_can_create_public_pages?: boolean; - /** @example true */ - members_can_create_private_pages?: boolean; - /** @example true */ - members_can_delete_repositories?: boolean; - /** @example true */ - members_can_change_repo_visibility?: boolean; - /** @example true */ - members_can_invite_outside_collaborators?: boolean; - /** @example true */ - members_can_delete_issues?: boolean; - /** @example true */ - display_commenter_full_name_setting_enabled?: boolean; - /** @example true */ - readers_can_create_discussions?: boolean; - /** @example true */ - members_can_create_teams?: boolean; - /** @example true */ - members_can_view_dependency_insights?: boolean; - /** @example false */ - members_can_fork_private_repositories?: boolean | null; - /** @example false */ - web_commit_signoff_required?: boolean; - /** - * @deprecated - * @description **Endpoint closing down notice.** Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. - * - * Whether GitHub Advanced Security is enabled for new repositories and repositories transferred to this organization. - * - * This field is only visible to organization owners or members of a team with the security manager role. - * @example false - */ - advanced_security_enabled_for_new_repositories?: boolean; - /** - * @deprecated - * @description **Endpoint closing down notice.** Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. - * - * Whether Dependabot alerts are automatically enabled for new repositories and repositories transferred to this organization. - * - * This field is only visible to organization owners or members of a team with the security manager role. - * @example false - */ - dependabot_alerts_enabled_for_new_repositories?: boolean; - /** - * @deprecated - * @description **Endpoint closing down notice.** Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. - * - * Whether Dependabot security updates are automatically enabled for new repositories and repositories transferred to this organization. - * - * This field is only visible to organization owners or members of a team with the security manager role. - * @example false - */ - dependabot_security_updates_enabled_for_new_repositories?: boolean; - /** - * @deprecated - * @description **Endpoint closing down notice.** Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. - * - * Whether dependency graph is automatically enabled for new repositories and repositories transferred to this organization. - * - * This field is only visible to organization owners or members of a team with the security manager role. - * @example false - */ - dependency_graph_enabled_for_new_repositories?: boolean; - /** - * @deprecated - * @description **Endpoint closing down notice.** Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. - * - * Whether secret scanning is automatically enabled for new repositories and repositories transferred to this organization. - * - * This field is only visible to organization owners or members of a team with the security manager role. - * @example false - */ - secret_scanning_enabled_for_new_repositories?: boolean; - /** - * @deprecated - * @description **Endpoint closing down notice.** Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. - * - * Whether secret scanning push protection is automatically enabled for new repositories and repositories transferred to this organization. - * - * This field is only visible to organization owners or members of a team with the security manager role. - * @example false - */ - secret_scanning_push_protection_enabled_for_new_repositories?: boolean; - /** - * @description Whether a custom link is shown to contributors who are blocked from pushing a secret by push protection. - * @example false - */ - secret_scanning_push_protection_custom_link_enabled?: boolean; - /** - * @description An optional URL string to display to contributors who are blocked from pushing a secret. - * @example https://github.com/test-org/test-repo/blob/main/README.md - */ - secret_scanning_push_protection_custom_link?: string | null; - /** - * Format: date-time - * @example 2008-01-14T04:33:35Z - */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - archived_at: string | null; - /** - * @description Controls whether or not deploy keys may be added and used for repositories in the organization. - * @example false - */ - deploy_keys_enabled_for_repositories?: boolean; - }; - "actions-cache-usage-org-enterprise": { - /** @description The count of active caches across all repositories of an enterprise or an organization. */ - total_active_caches_count: number; - /** @description The total size in bytes of all active cache items across all repositories of an enterprise or an organization. */ - total_active_caches_size_in_bytes: number; - }; - /** - * Actions Cache Usage by repository - * @description GitHub Actions Cache Usage by repository. - */ - "actions-cache-usage-by-repository": { - /** - * @description The repository owner and name for the cache usage being shown. - * @example octo-org/Hello-World - */ - full_name: string; - /** - * @description The sum of the size in bytes of all the active cache items in the repository. - * @example 2322142 - */ - active_caches_size_in_bytes: number; - /** - * @description The number of active caches in the repository. - * @example 3 - */ - active_caches_count: number; - }; - /** - * GitHub-hosted runner image details. - * @description Provides details of a hosted runner image - */ - "nullable-actions-hosted-runner-pool-image": { - /** - * @description The ID of the image. Use this ID for the `image` parameter when creating a new larger runner. - * @example ubuntu-20.04 - */ - id: string; - /** - * @description Image size in GB. - * @example 86 - */ - size_gb: number; - /** - * @description Display name for this image. - * @example 20.04 - */ - display_name: string; - /** - * @description The image provider. - * @enum {string} - */ - source: "github" | "partner" | "custom"; - /** - * @description The image version of the hosted runner pool. - * @example latest - */ - version?: string; - } | null; - /** - * Github-owned VM details. - * @description Provides details of a particular machine spec. - */ - "actions-hosted-runner-machine-spec": { - /** - * @description The ID used for the `size` parameter when creating a new runner. - * @example 8-core - */ - id: string; - /** - * @description The number of cores. - * @example 8 - */ - cpu_cores: number; - /** - * @description The available RAM for the machine spec. - * @example 32 - */ - memory_gb: number; - /** - * @description The available SSD storage for the machine spec. - * @example 300 - */ - storage_gb: number; - }; - /** - * Public IP for a GitHub-hosted larger runners. - * @description Provides details of Public IP for a GitHub-hosted larger runners - */ - "public-ip": { - /** - * @description Whether public IP is enabled. - * @example true - */ - enabled?: boolean; - /** - * @description The prefix for the public IP. - * @example 20.80.208.150 - */ - prefix?: string; - /** - * @description The length of the IP prefix. - * @example 28 - */ - length?: number; - }; - /** - * GitHub-hosted hosted runner - * @description A Github-hosted hosted runner. - */ - "actions-hosted-runner": { - /** - * @description The unique identifier of the hosted runner. - * @example 5 - */ - id: number; - /** - * @description The name of the hosted runner. - * @example my-github-hosted-runner - */ - name: string; - /** - * @description The unique identifier of the group that the hosted runner belongs to. - * @example 2 - */ - runner_group_id?: number; - image_details: components["schemas"]["nullable-actions-hosted-runner-pool-image"]; - machine_size_details: components["schemas"]["actions-hosted-runner-machine-spec"]; - /** - * @description The status of the runner. - * @example Ready - * @enum {string} - */ - status: "Ready" | "Provisioning" | "Shutdown" | "Deleting" | "Stuck"; - /** - * @description The operating system of the image. - * @example linux-x64 - */ - platform: string; - /** - * @description The maximum amount of hosted runners. Runners will not scale automatically above this number. Use this setting to limit your cost. - * @default 10 - * @example 5 - */ - maximum_runners?: number; - /** - * @description Whether public IP is enabled for the hosted runners. - * @example true - */ - public_ip_enabled: boolean; - /** @description The public IP ranges when public IP is enabled for the hosted runners. */ - public_ips?: components["schemas"]["public-ip"][]; - /** - * Format: date-time - * @description The time at which the runner was last used, in ISO 8601 format. - * @example 2022-10-09T23:39:01Z - */ - last_active_on?: string | null; - /** @description Whether custom image generation is enabled for the hosted runners. */ - image_gen?: boolean; - }; - /** - * GitHub-hosted runner custom image details - * @description Provides details of a custom runner image - */ - "actions-hosted-runner-custom-image": { - /** - * @description The ID of the image. Use this ID for the `image` parameter when creating a new larger runner. - * @example 1 - */ - id: number; - /** - * @description The operating system of the image. - * @example linux-x64 - */ - platform: string; - /** - * @description Total size of all the image versions in GB. - * @example 200 - */ - total_versions_size: number; - /** - * @description Display name for this image. - * @example CustomImage - */ - name: string; - /** - * @description The image provider. - * @example custom - */ - source: string; - /** - * @description The number of image versions associated with the image. - * @example 4 - */ - versions_count: number; - /** - * @description The latest image version associated with the image. - * @example 1.3.0 - */ - latest_version: string; - /** - * @description The number of image versions associated with the image. - * @example Ready - */ - state: string; - }; - /** - * GitHub-hosted runner custom image version details. - * @description Provides details of a hosted runner custom image version - */ - "actions-hosted-runner-custom-image-version": { - /** - * @description The version of image. - * @example 1.0.0 - */ - version: string; - /** - * @description The state of image version. - * @example Ready - */ - state: string; - /** - * @description Image version size in GB. - * @example 30 - */ - size_gb: number; - /** - * @description The creation date time of the image version. - * @example 2024-11-09T23:39:01Z - */ - created_on: string; - /** - * @description The image version status details. - * @example None - */ - state_details: string; - }; - /** - * GitHub-hosted runner image details. - * @description Provides details of a hosted runner image - */ - "actions-hosted-runner-curated-image": { - /** - * @description The ID of the image. Use this ID for the `image` parameter when creating a new larger runner. - * @example ubuntu-20.04 - */ - id: string; - /** - * @description The operating system of the image. - * @example linux-x64 - */ - platform: string; - /** - * @description Image size in GB. - * @example 86 - */ - size_gb: number; - /** - * @description Display name for this image. - * @example 20.04 - */ - display_name: string; - /** - * @description The image provider. - * @enum {string} - */ - source: "github" | "partner" | "custom"; - }; - "actions-hosted-runner-limits": { - /** - * Static public IP Limits for GitHub-hosted Hosted Runners. - * @description Provides details of static public IP limits for GitHub-hosted Hosted Runners - */ - public_ips: { - /** - * @description The maximum number of static public IP addresses that can be used for Hosted Runners. - * @example 50 - */ - maximum: number; - /** - * @description The current number of static public IP addresses in use by Hosted Runners. - * @example 17 - */ - current_usage: number; - }; - }; - /** - * Actions OIDC Subject customization - * @description Actions OIDC Subject customization - */ - "oidc-custom-sub": { - /** @description Array of unique strings. Each claim key can only contain alphanumeric characters and underscores. */ - include_claim_keys: string[]; - }; - /** - * Empty Object - * @description An object without any properties. - */ - "empty-object": Record; - /** - * @description The policy that controls the repositories in the organization that are allowed to run GitHub Actions. - * @enum {string} - */ - "enabled-repositories": "all" | "none" | "selected"; - /** - * @description The permissions policy that controls the actions and reusable workflows that are allowed to run. - * @enum {string} - */ - "allowed-actions": "all" | "local_only" | "selected"; - /** @description The API URL to use to get or set the actions and reusable workflows that are allowed to run, when `allowed_actions` is set to `selected`. */ - "selected-actions-url": string; - /** @description Whether actions must be pinned to a full-length commit SHA. */ - "sha-pinning-required": boolean; - "actions-organization-permissions": { - enabled_repositories: components["schemas"]["enabled-repositories"]; - /** @description The API URL to use to get or set the selected repositories that are allowed to run GitHub Actions, when `enabled_repositories` is set to `selected`. */ - selected_repositories_url?: string; - allowed_actions?: components["schemas"]["allowed-actions"]; - selected_actions_url?: components["schemas"]["selected-actions-url"]; - sha_pinning_required?: components["schemas"]["sha-pinning-required"]; - }; - "actions-artifact-and-log-retention-response": { - /** @description The number of days artifacts and logs are retained */ - days: number; - /** @description The maximum number of days that can be configured */ - maximum_allowed_days: number; - }; - "actions-artifact-and-log-retention": { - /** @description The number of days to retain artifacts and logs */ - days: number; - }; - "actions-fork-pr-contributor-approval": { - /** - * @description The policy that controls when fork PR workflows require approval from a maintainer. - * @enum {string} - */ - approval_policy: - | "first_time_contributors_new_to_github" - | "first_time_contributors" - | "all_external_contributors"; - }; - "actions-fork-pr-workflows-private-repos": { - /** @description Whether workflows triggered by pull requests from forks are allowed to run on private repositories. */ - run_workflows_from_fork_pull_requests: boolean; - /** @description Whether GitHub Actions can create pull requests or submit approving pull request reviews from a workflow triggered by a fork pull request. */ - send_write_tokens_to_workflows: boolean; - /** @description Whether to make secrets and variables available to workflows triggered by pull requests from forks. */ - send_secrets_and_variables: boolean; - /** @description Whether workflows triggered by pull requests from forks require approval from a repository administrator to run. */ - require_approval_for_fork_pr_workflows: boolean; - }; - "actions-fork-pr-workflows-private-repos-request": { - /** @description Whether workflows triggered by pull requests from forks are allowed to run on private repositories. */ - run_workflows_from_fork_pull_requests: boolean; - /** @description Whether GitHub Actions can create pull requests or submit approving pull request reviews from a workflow triggered by a fork pull request. */ - send_write_tokens_to_workflows?: boolean; - /** @description Whether to make secrets and variables available to workflows triggered by pull requests from forks. */ - send_secrets_and_variables?: boolean; - /** @description Whether workflows triggered by pull requests from forks require approval from a repository administrator to run. */ - require_approval_for_fork_pr_workflows?: boolean; - }; - "selected-actions": { - /** @description Whether GitHub-owned actions are allowed. For example, this includes the actions in the `actions` organization. */ - github_owned_allowed?: boolean; - /** @description Whether actions from GitHub Marketplace verified creators are allowed. Set to `true` to allow all actions by GitHub Marketplace verified creators. */ - verified_allowed?: boolean; - /** - * @description Specifies a list of string-matching patterns to allow specific action(s) and reusable workflow(s). Wildcards, tags, and SHAs are allowed. For example, `monalisa/octocat@*`, `monalisa/octocat@v2`, `monalisa/*`. - * - * > [!NOTE] - * > The `patterns_allowed` setting only applies to public repositories. - */ - patterns_allowed?: string[]; - }; - "self-hosted-runners-settings": { - /** - * @description The policy that controls whether self-hosted runners can be used by repositories in the organization - * @enum {string} - */ - enabled_repositories: "all" | "selected" | "none"; - /** @description The URL to the endpoint for managing selected repositories for self-hosted runners in the organization */ - selected_repositories_url?: string; - }; - /** - * @description The default workflow permissions granted to the GITHUB_TOKEN when running workflows. - * @enum {string} - */ - "actions-default-workflow-permissions": "read" | "write"; - /** @description Whether GitHub Actions can approve pull requests. Enabling this can be a security risk. */ - "actions-can-approve-pull-request-reviews": boolean; - "actions-get-default-workflow-permissions": { - default_workflow_permissions: components["schemas"]["actions-default-workflow-permissions"]; - can_approve_pull_request_reviews: components["schemas"]["actions-can-approve-pull-request-reviews"]; - }; - "actions-set-default-workflow-permissions": { - default_workflow_permissions?: components["schemas"]["actions-default-workflow-permissions"]; - can_approve_pull_request_reviews?: components["schemas"]["actions-can-approve-pull-request-reviews"]; - }; - "runner-groups-org": { - id: number; - name: string; - visibility: string; - default: boolean; - /** @description Link to the selected repositories resource for this runner group. Not present unless visibility was set to `selected` */ - selected_repositories_url?: string; - runners_url: string; - hosted_runners_url?: string; - /** @description The identifier of a hosted compute network configuration. */ - network_configuration_id?: string; - inherited: boolean; - inherited_allows_public_repositories?: boolean; - allows_public_repositories: boolean; - /** - * @description If `true`, the `restricted_to_workflows` and `selected_workflows` fields cannot be modified. - * @default false - */ - workflow_restrictions_read_only?: boolean; - /** - * @description If `true`, the runner group will be restricted to running only the workflows specified in the `selected_workflows` array. - * @default false - */ - restricted_to_workflows?: boolean; - /** @description List of workflows the runner group should be allowed to run. This setting will be ignored unless `restricted_to_workflows` is set to `true`. */ - selected_workflows?: string[]; - }; - /** - * Self hosted runner label - * @description A label for a self hosted runner - */ - "runner-label": { - /** @description Unique identifier of the label. */ - id?: number; - /** @description Name of the label. */ - name: string; - /** - * @description The type of label. Read-only labels are applied automatically when the runner is configured. - * @enum {string} - */ - type?: "read-only" | "custom"; - }; - /** - * Self hosted runners - * @description A self hosted runner - */ - runner: { - /** - * @description The ID of the runner. - * @example 5 - */ - id: number; - /** - * @description The ID of the runner group. - * @example 1 - */ - runner_group_id?: number; - /** - * @description The name of the runner. - * @example iMac - */ - name: string; - /** - * @description The Operating System of the runner. - * @example macos - */ - os: string; - /** - * @description The status of the runner. - * @example online - */ - status: string; - busy: boolean; - labels: components["schemas"]["runner-label"][]; - ephemeral?: boolean; - }; - /** - * Runner Application - * @description Runner Application - */ - "runner-application": { - os: string; - architecture: string; - download_url: string; - filename: string; - /** @description A short lived bearer token used to download the runner, if needed. */ - temp_download_token?: string; - sha256_checksum?: string; - }; - /** - * Authentication Token - * @description Authentication Token - */ - "authentication-token": { - /** - * @description The token used for authentication - * @example v1.1f699f1069f60xxx - */ - token: string; - /** - * Format: date-time - * @description The time this token expires - * @example 2016-07-11T22:14:10Z - */ - expires_at: string; - /** - * @example { - * "issues": "read", - * "deployments": "write" - * } - */ - permissions?: Record; - /** @description The repositories this token has access to */ - repositories?: components["schemas"]["repository"][]; - /** @example config.yaml */ - single_file?: string | null; - /** - * @description Describe whether all repositories have been selected or there's a selection involved - * @enum {string} - */ - repository_selection?: "all" | "selected"; - }; - /** - * Actions Secret for an Organization - * @description Secrets for GitHub Actions for an organization. - */ - "organization-actions-secret": { - /** - * @description The name of the secret. - * @example SECRET_TOKEN - */ - name: string; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** - * @description Visibility of a secret - * @enum {string} - */ - visibility: "all" | "private" | "selected"; - /** - * Format: uri - * @example https://api.github.com/organizations/org/secrets/my_secret/repositories - */ - selected_repositories_url?: string; - }; - /** - * ActionsPublicKey - * @description The public key used for setting Actions Secrets. - */ - "actions-public-key": { - /** - * @description The identifier for the key. - * @example 1234567 - */ - key_id: string; - /** - * @description The Base64 encoded public key. - * @example hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs= - */ - key: string; - /** @example 2 */ - id?: number; - /** @example https://api.github.com/user/keys/2 */ - url?: string; - /** @example ssh-rsa AAAAB3NzaC1yc2EAAA */ - title?: string; - /** @example 2011-01-26T19:01:12Z */ - created_at?: string; - }; - /** - * Actions Variable for an Organization - * @description Organization variable for GitHub Actions. - */ - "organization-actions-variable": { - /** - * @description The name of the variable. - * @example USERNAME - */ - name: string; - /** - * @description The value of the variable. - * @example octocat - */ - value: string; - /** - * Format: date-time - * @description The date and time at which the variable was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - * @example 2019-01-24T22:45:36.000Z - */ - created_at: string; - /** - * Format: date-time - * @description The date and time at which the variable was last updated, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - * @example 2019-01-24T22:45:36.000Z - */ - updated_at: string; - /** - * @description Visibility of a variable - * @enum {string} - */ - visibility: "all" | "private" | "selected"; - /** - * Format: uri - * @example https://api.github.com/organizations/org/variables/USERNAME/repositories - */ - selected_repositories_url?: string; - }; - /** - * Campaign state - * @description Indicates whether a campaign is open or closed - * @enum {string} - */ - "campaign-state": "open" | "closed"; - /** - * Campaign alert type - * @description Indicates the alert type of a campaign - * @enum {string} - */ - "campaign-alert-type": "code_scanning" | "secret_scanning"; - /** - * Team Simple - * @description Groups of organization members that gives permissions on specified repositories. - */ - "nullable-team-simple": { - /** - * @description Unique identifier of the team - * @example 1 - */ - id: number; - /** @example MDQ6VGVhbTE= */ - node_id: string; - /** - * Format: uri - * @description URL for the team - * @example https://api.github.com/organizations/1/team/1 - */ - url: string; - /** @example https://api.github.com/organizations/1/team/1/members{/member} */ - members_url: string; - /** - * @description Name of the team - * @example Justice League - */ - name: string; - /** - * @description Description of the team - * @example A great team. - */ - description: string | null; - /** - * @description Permission that the team will have for its repositories - * @example admin - */ - permission: string; - /** - * @description The level of privacy this team should have - * @example closed - */ - privacy?: string; - /** - * @description The notification setting the team has set - * @example notifications_enabled - */ - notification_setting?: string; - /** - * Format: uri - * @example https://github.com/orgs/rails/teams/core - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/organizations/1/team/1/repos - */ - repositories_url: string; - /** @example justice-league */ - slug: string; - /** - * @description Distinguished Name (DN) that team maps to within LDAP environment - * @example uid=example,ou=users,dc=github,dc=com - */ - ldap_dn?: string; - /** - * @description The ownership type of the team - * @enum {string} - */ - type: "enterprise" | "organization"; - /** - * @description Unique identifier of the organization to which this team belongs - * @example 37 - */ - organization_id?: number; - /** - * @description Unique identifier of the enterprise to which this team belongs - * @example 42 - */ - enterprise_id?: number; - } | null; - /** - * Team - * @description Groups of organization members that gives permissions on specified repositories. - */ - team: { - id: number; - node_id: string; - name: string; - slug: string; - description: string | null; - privacy?: string; - notification_setting?: string; - permission: string; - permissions?: { - pull: boolean; - triage: boolean; - push: boolean; - maintain: boolean; - admin: boolean; - }; - /** Format: uri */ - url: string; - /** - * Format: uri - * @example https://github.com/orgs/rails/teams/core - */ - html_url: string; - members_url: string; - /** Format: uri */ - repositories_url: string; - /** - * @description The ownership type of the team - * @enum {string} - */ - type: "enterprise" | "organization"; - /** - * @description Unique identifier of the organization to which this team belongs - * @example 37 - */ - organization_id?: number; - /** - * @description Unique identifier of the enterprise to which this team belongs - * @example 42 - */ - enterprise_id?: number; - parent: components["schemas"]["nullable-team-simple"]; - }; - /** - * Campaign summary - * @description The campaign metadata and alert stats. - */ - "campaign-summary": { - /** @description The number of the newly created campaign */ - number: number; - /** - * Format: date-time - * @description The date and time the campaign was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - */ - created_at: string; - /** - * Format: date-time - * @description The date and time the campaign was last updated, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - */ - updated_at: string; - /** @description The campaign name */ - name?: string; - /** @description The campaign description */ - description: string; - /** @description The campaign managers */ - managers: components["schemas"]["simple-user"][]; - /** @description The campaign team managers */ - team_managers?: components["schemas"]["team"][]; - /** - * Format: date-time - * @description The date and time the campaign was published, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - */ - published_at?: string; - /** - * Format: date-time - * @description The date and time the campaign has ended, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - */ - ends_at: string; - /** - * Format: date-time - * @description The date and time the campaign was closed, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. Will be null if the campaign is still open. - */ - closed_at?: string | null; - state: components["schemas"]["campaign-state"]; - /** - * Format: uri - * @description The contact link of the campaign. - */ - contact_link: string | null; - alert_stats?: { - /** @description The number of open alerts */ - open_count: number; - /** @description The number of closed alerts */ - closed_count: number; - /** @description The number of in-progress alerts */ - in_progress_count: number; - }; - }; - /** @description The name of the tool used to generate the code scanning analysis. */ - "code-scanning-analysis-tool-name": string; - /** @description The GUID of the tool used to generate the code scanning analysis, if provided in the uploaded SARIF data. */ - "code-scanning-analysis-tool-guid": string | null; - /** - * @description State of a code scanning alert. - * @enum {string} - */ - "code-scanning-alert-state-query": - | "open" - | "closed" - | "dismissed" - | "fixed"; - /** - * @description Severity of a code scanning alert. - * @enum {string} - */ - "code-scanning-alert-severity": - | "critical" - | "high" - | "medium" - | "low" - | "warning" - | "note" - | "error"; - /** - * Format: uri - * @description The REST API URL for fetching the list of instances for an alert. - */ - readonly "alert-instances-url": string; - /** - * @description State of a code scanning alert. - * @enum {string|null} - */ - "code-scanning-alert-state": "open" | "dismissed" | "fixed" | null; - /** - * @description **Required when the state is dismissed.** The reason for dismissing or closing the alert. - * @enum {string|null} - */ - "code-scanning-alert-dismissed-reason": - | "false positive" - | "won't fix" - | "used in tests" - | null; - /** @description The dismissal comment associated with the dismissal of the alert. */ - "code-scanning-alert-dismissed-comment": string | null; - "code-scanning-alert-rule-summary": { - /** @description A unique identifier for the rule used to detect the alert. */ - id?: string | null; - /** @description The name of the rule used to detect the alert. */ - name?: string; - /** - * @description The severity of the alert. - * @enum {string|null} - */ - severity?: "none" | "note" | "warning" | "error" | null; - /** - * @description The security severity of the alert. - * @enum {string|null} - */ - security_severity_level?: "low" | "medium" | "high" | "critical" | null; - /** @description A short description of the rule used to detect the alert. */ - description?: string; - /** @description A description of the rule used to detect the alert. */ - full_description?: string; - /** @description A set of tags applicable for the rule. */ - tags?: string[] | null; - /** @description Detailed documentation for the rule as GitHub Flavored Markdown. */ - help?: string | null; - /** @description A link to the documentation for the rule used to detect the alert. */ - help_uri?: string | null; - }; - /** @description The version of the tool used to generate the code scanning analysis. */ - "code-scanning-analysis-tool-version": string | null; - "code-scanning-analysis-tool": { - name?: components["schemas"]["code-scanning-analysis-tool-name"]; - version?: components["schemas"]["code-scanning-analysis-tool-version"]; - guid?: components["schemas"]["code-scanning-analysis-tool-guid"]; - }; - /** - * @description The Git reference, formatted as `refs/pull//merge`, `refs/pull//head`, - * `refs/heads/` or simply ``. - */ - "code-scanning-ref": string; - /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */ - "code-scanning-analysis-analysis-key": string; - /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */ - "code-scanning-alert-environment": string; - /** @description Identifies the configuration under which the analysis was executed. Used to distinguish between multiple analyses for the same tool and commit, but performed on different languages or different parts of the code. */ - "code-scanning-analysis-category": string; - /** @description Describe a region within a file for the alert. */ - "code-scanning-alert-location": { - path?: string; - start_line?: number; - end_line?: number; - start_column?: number; - end_column?: number; - }; - /** - * @description A classification of the file. For example to identify it as generated. - * @enum {string|null} - */ - "code-scanning-alert-classification": - | "source" - | "generated" - | "test" - | "library" - | null; - "code-scanning-alert-instance": { - ref?: components["schemas"]["code-scanning-ref"]; - analysis_key?: components["schemas"]["code-scanning-analysis-analysis-key"]; - environment?: components["schemas"]["code-scanning-alert-environment"]; - category?: components["schemas"]["code-scanning-analysis-category"]; - state?: components["schemas"]["code-scanning-alert-state"]; - commit_sha?: string; - message?: { - text?: string; - }; - location?: components["schemas"]["code-scanning-alert-location"]; - html_url?: string; - /** - * @description Classifications that have been applied to the file that triggered the alert. - * For example identifying it as documentation, or a generated file. - */ - classifications?: components["schemas"]["code-scanning-alert-classification"][]; - }; - "code-scanning-organization-alert-items": { - number: components["schemas"]["alert-number"]; - created_at: components["schemas"]["alert-created-at"]; - updated_at?: components["schemas"]["alert-updated-at"]; - url: components["schemas"]["alert-url"]; - html_url: components["schemas"]["alert-html-url"]; - instances_url: components["schemas"]["alert-instances-url"]; - state: components["schemas"]["code-scanning-alert-state"]; - fixed_at?: components["schemas"]["alert-fixed-at"]; - dismissed_by: components["schemas"]["nullable-simple-user"]; - dismissed_at: components["schemas"]["alert-dismissed-at"]; - dismissed_reason: components["schemas"]["code-scanning-alert-dismissed-reason"]; - dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; - rule: components["schemas"]["code-scanning-alert-rule-summary"]; - tool: components["schemas"]["code-scanning-analysis-tool"]; - most_recent_instance: components["schemas"]["code-scanning-alert-instance"]; - repository: components["schemas"]["simple-repository"]; - dismissal_approved_by?: components["schemas"]["nullable-simple-user"]; - assignees?: components["schemas"]["simple-user"][]; - }; - /** - * Codespace machine - * @description A description of the machine powering a codespace. - */ - "nullable-codespace-machine": { - /** - * @description The name of the machine. - * @example standardLinux - */ - name: string; - /** - * @description The display name of the machine includes cores, memory, and storage. - * @example 4 cores, 16 GB RAM, 64 GB storage - */ - display_name: string; - /** - * @description The operating system of the machine. - * @example linux - */ - operating_system: string; - /** - * @description How much storage is available to the codespace. - * @example 68719476736 - */ - storage_in_bytes: number; - /** - * @description How much memory is available to the codespace. - * @example 17179869184 - */ - memory_in_bytes: number; - /** - * @description How many cores are available to the codespace. - * @example 4 - */ - cpus: number; - /** - * @description Whether a prebuild is currently available when creating a codespace for this machine and repository. If a branch was not specified as a ref, the default branch will be assumed. Value will be "null" if prebuilds are not supported or prebuild availability could not be determined. Value will be "none" if no prebuild is available. Latest values "ready" and "in_progress" indicate the prebuild availability status. - * @example ready - * @enum {string|null} - */ - prebuild_availability: "none" | "ready" | "in_progress" | null; - } | null; - /** - * Codespace - * @description A codespace. - */ - codespace: { - /** - * Format: int64 - * @example 1 - */ - id: number; - /** - * @description Automatically generated name of this codespace. - * @example monalisa-octocat-hello-world-g4wpq6h95q - */ - name: string; - /** - * @description Display name for this codespace. - * @example bookish space pancake - */ - display_name?: string | null; - /** - * @description UUID identifying this codespace's environment. - * @example 26a7c758-7299-4a73-b978-5a92a7ae98a0 - */ - environment_id: string | null; - owner: components["schemas"]["simple-user"]; - billable_owner: components["schemas"]["simple-user"]; - repository: components["schemas"]["minimal-repository"]; - machine: components["schemas"]["nullable-codespace-machine"]; - /** - * @description Path to devcontainer.json from repo root used to create Codespace. - * @example .devcontainer/example/devcontainer.json - */ - devcontainer_path?: string | null; - /** - * @description Whether the codespace was created from a prebuild. - * @example false - */ - prebuild: boolean | null; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - created_at: string; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - updated_at: string; - /** - * Format: date-time - * @description Last known time this codespace was started. - * @example 2011-01-26T19:01:12Z - */ - last_used_at: string; - /** - * @description State of this codespace. - * @example Available - * @enum {string} - */ - state: - | "Unknown" - | "Created" - | "Queued" - | "Provisioning" - | "Available" - | "Awaiting" - | "Unavailable" - | "Deleted" - | "Moved" - | "Shutdown" - | "Archived" - | "Starting" - | "ShuttingDown" - | "Failed" - | "Exporting" - | "Updating" - | "Rebuilding"; - /** - * Format: uri - * @description API URL for this codespace. - */ - url: string; - /** @description Details about the codespace's git repository. */ - git_status: { - /** - * @description The number of commits the local repository is ahead of the remote. - * @example 0 - */ - ahead?: number; - /** - * @description The number of commits the local repository is behind the remote. - * @example 0 - */ - behind?: number; - /** @description Whether the local repository has unpushed changes. */ - has_unpushed_changes?: boolean; - /** @description Whether the local repository has uncommitted changes. */ - has_uncommitted_changes?: boolean; - /** - * @description The current branch (or SHA if in detached HEAD state) of the local repository. - * @example main - */ - ref?: string; - }; - /** - * @description The initally assigned location of a new codespace. - * @example WestUs2 - * @enum {string} - */ - location: "EastUs" | "SouthEastAsia" | "WestEurope" | "WestUs2"; - /** - * @description The number of minutes of inactivity after which this codespace will be automatically stopped. - * @example 60 - */ - idle_timeout_minutes: number | null; - /** - * Format: uri - * @description URL to access this codespace on the web. - */ - web_url: string; - /** - * Format: uri - * @description API URL to access available alternate machine types for this codespace. - */ - machines_url: string; - /** - * Format: uri - * @description API URL to start this codespace. - */ - start_url: string; - /** - * Format: uri - * @description API URL to stop this codespace. - */ - stop_url: string; - /** - * Format: uri - * @description API URL to publish this codespace to a new repository. - */ - publish_url?: string | null; - /** - * Format: uri - * @description API URL for the Pull Request associated with this codespace, if any. - */ - pulls_url: string | null; - recent_folders: string[]; - runtime_constraints?: { - /** @description The privacy settings a user can select from when forwarding a port. */ - allowed_port_privacy_settings?: string[] | null; - }; - /** @description Whether or not a codespace has a pending async operation. This would mean that the codespace is temporarily unavailable. The only thing that you can do with a codespace in this state is delete it. */ - pending_operation?: boolean | null; - /** @description Text to show user when codespace is disabled by a pending operation */ - pending_operation_disabled_reason?: string | null; - /** @description Text to show user when codespace idle timeout minutes has been overriden by an organization policy */ - idle_timeout_notice?: string | null; - /** - * @description Duration in minutes after codespace has gone idle in which it will be deleted. Must be integer minutes between 0 and 43200 (30 days). - * @example 60 - */ - retention_period_minutes?: number | null; - /** - * Format: date-time - * @description When a codespace will be auto-deleted based on the "retention_period_minutes" and "last_used_at" - * @example 2011-01-26T20:01:12Z - */ - retention_expires_at?: string | null; - /** - * @description The text to display to a user when a codespace has been stopped for a potentially actionable reason. - * @example you've used 100% of your spending limit for Codespaces - */ - last_known_stop_notice?: string | null; - }; - /** - * Codespaces Secret - * @description Secrets for a GitHub Codespace. - */ - "codespaces-org-secret": { - /** - * @description The name of the secret - * @example SECRET_NAME - */ - name: string; - /** - * Format: date-time - * @description The date and time at which the secret was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - */ - created_at: string; - /** - * Format: date-time - * @description The date and time at which the secret was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - */ - updated_at: string; - /** - * @description The type of repositories in the organization that the secret is visible to - * @enum {string} - */ - visibility: "all" | "private" | "selected"; - /** - * Format: uri - * @description The API URL at which the list of repositories this secret is visible to can be retrieved - * @example https://api.github.com/orgs/ORGANIZATION/codespaces/secrets/SECRET_NAME/repositories - */ - selected_repositories_url?: string; - }; - /** - * CodespacesPublicKey - * @description The public key used for setting Codespaces secrets. - */ - "codespaces-public-key": { - /** - * @description The identifier for the key. - * @example 1234567 - */ - key_id: string; - /** - * @description The Base64 encoded public key. - * @example hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs= - */ - key: string; - /** @example 2 */ - id?: number; - /** @example https://api.github.com/user/keys/2 */ - url?: string; - /** @example ssh-rsa AAAAB3NzaC1yc2EAAA */ - title?: string; - /** @example 2011-01-26T19:01:12Z */ - created_at?: string; - }; - /** - * Copilot Seat Breakdown - * @description The breakdown of Copilot Business seats for the organization. - */ - "copilot-organization-seat-breakdown": { - /** @description The total number of seats being billed for the organization as of the current billing cycle. */ - total?: number; - /** @description Seats added during the current billing cycle. */ - added_this_cycle?: number; - /** @description The number of seats that are pending cancellation at the end of the current billing cycle. */ - pending_cancellation?: number; - /** @description The number of users who have been invited to receive a Copilot seat through this organization. */ - pending_invitation?: number; - /** @description The number of seats that have used Copilot during the current billing cycle. */ - active_this_cycle?: number; - /** @description The number of seats that have not used Copilot during the current billing cycle. */ - inactive_this_cycle?: number; - }; - /** - * Copilot Organization Details - * @description Information about the seat breakdown and policies set for an organization with a Copilot Business or Copilot Enterprise subscription. - */ - "copilot-organization-details": { - seat_breakdown: components["schemas"]["copilot-organization-seat-breakdown"]; - /** - * @description The organization policy for allowing or blocking suggestions matching public code (duplication detection filter). - * @enum {string} - */ - public_code_suggestions: "allow" | "block" | "unconfigured"; - /** - * @description The organization policy for allowing or disallowing Copilot Chat in the IDE. - * @enum {string} - */ - ide_chat?: "enabled" | "disabled" | "unconfigured"; - /** - * @description The organization policy for allowing or disallowing Copilot features on GitHub.com. - * @enum {string} - */ - platform_chat?: "enabled" | "disabled" | "unconfigured"; - /** - * @description The organization policy for allowing or disallowing Copilot in the CLI. - * @enum {string} - */ - cli?: "enabled" | "disabled" | "unconfigured"; - /** - * @description The mode of assigning new seats. - * @enum {string} - */ - seat_management_setting: - | "assign_all" - | "assign_selected" - | "disabled" - | "unconfigured"; - /** - * @description The Copilot plan of the organization, or the parent enterprise, when applicable. - * @enum {string} - */ - plan_type?: "business" | "enterprise"; - [key: string]: unknown; - }; - /** - * Organization Simple - * @description A GitHub organization. - */ - "nullable-organization-simple": { - /** @example github */ - login: string; - /** @example 1 */ - id: number; - /** @example MDEyOk9yZ2FuaXphdGlvbjE= */ - node_id: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github - */ - url: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github/repos - */ - repos_url: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github/events - */ - events_url: string; - /** @example https://api.github.com/orgs/github/hooks */ - hooks_url: string; - /** @example https://api.github.com/orgs/github/issues */ - issues_url: string; - /** @example https://api.github.com/orgs/github/members{/member} */ - members_url: string; - /** @example https://api.github.com/orgs/github/public_members{/member} */ - public_members_url: string; - /** @example https://github.com/images/error/octocat_happy.gif */ - avatar_url: string; - /** @example A great organization */ - description: string | null; - } | null; - /** - * Copilot Business Seat Detail - * @description Information about a Copilot Business seat assignment for a user, team, or organization. - */ - "copilot-seat-details": { - assignee?: components["schemas"]["nullable-simple-user"]; - organization?: components["schemas"]["nullable-organization-simple"]; - /** @description The team through which the assignee is granted access to GitHub Copilot, if applicable. */ - assigning_team?: - | components["schemas"]["team"] - | components["schemas"]["enterprise-team"] - | null; - /** - * Format: date - * @description The pending cancellation date for the seat, in `YYYY-MM-DD` format. This will be null unless the assignee's Copilot access has been canceled during the current billing cycle. If the seat has been cancelled, this corresponds to the start of the organization's next billing cycle. - */ - pending_cancellation_date?: string | null; - /** - * Format: date-time - * @description Timestamp of user's last GitHub Copilot activity, in ISO 8601 format. - */ - last_activity_at?: string | null; - /** @description Last editor that was used by the user for a GitHub Copilot completion. */ - last_activity_editor?: string | null; - /** - * Format: date-time - * @description Timestamp of the last time the user authenticated with GitHub Copilot, in ISO 8601 format. - */ - last_authenticated_at?: string | null; - /** - * Format: date-time - * @description Timestamp of when the assignee was last granted access to GitHub Copilot, in ISO 8601 format. - */ - created_at: string; - /** - * Format: date-time - * @deprecated - * @description **Closing down notice:** This field is no longer relevant and is closing down. Use the `created_at` field to determine when the assignee was last granted access to GitHub Copilot. Timestamp of when the assignee's GitHub Copilot access was last updated, in ISO 8601 format. - */ - updated_at?: string; - /** - * @description The Copilot plan of the organization, or the parent enterprise, when applicable. - * @enum {string} - */ - plan_type?: "business" | "enterprise" | "unknown"; - }; - /** @description Usage metrics for Copilot editor code completions in the IDE. */ - "copilot-ide-code-completions": { - /** @description Number of users who accepted at least one Copilot code suggestion, across all active editors. Includes both full and partial acceptances. */ - total_engaged_users?: number; - /** @description Code completion metrics for active languages. */ - languages?: { - /** @description Name of the language used for Copilot code completion suggestions. */ - name?: string; - /** @description Number of users who accepted at least one Copilot code completion suggestion for the given language. Includes both full and partial acceptances. */ - total_engaged_users?: number; - }[]; - editors?: { - /** @description Name of the given editor. */ - name?: string; - /** @description Number of users who accepted at least one Copilot code completion suggestion for the given editor. Includes both full and partial acceptances. */ - total_engaged_users?: number; - /** @description List of model metrics for custom models and the default model. */ - models?: { - /** @description Name of the model used for Copilot code completion suggestions. If the default model is used will appear as 'default'. */ - name?: string; - /** @description Indicates whether a model is custom or default. */ - is_custom_model?: boolean; - /** @description The training date for the custom model. */ - custom_model_training_date?: string | null; - /** @description Number of users who accepted at least one Copilot code completion suggestion for the given editor, for the given language and model. Includes both full and partial acceptances. */ - total_engaged_users?: number; - /** @description Code completion metrics for active languages, for the given editor. */ - languages?: { - /** @description Name of the language used for Copilot code completion suggestions, for the given editor. */ - name?: string; - /** @description Number of users who accepted at least one Copilot code completion suggestion for the given editor, for the given language. Includes both full and partial acceptances. */ - total_engaged_users?: number; - /** @description The number of Copilot code suggestions generated for the given editor, for the given language. */ - total_code_suggestions?: number; - /** @description The number of Copilot code suggestions accepted for the given editor, for the given language. Includes both full and partial acceptances. */ - total_code_acceptances?: number; - /** @description The number of lines of code suggested by Copilot code completions for the given editor, for the given language. */ - total_code_lines_suggested?: number; - /** @description The number of lines of code accepted from Copilot code suggestions for the given editor, for the given language. */ - total_code_lines_accepted?: number; - }[]; - }[]; - [key: string]: unknown; - }[]; - [key: string]: unknown; - } | null; - /** @description Usage metrics for Copilot Chat in the IDE. */ - "copilot-ide-chat": { - /** @description Total number of users who prompted Copilot Chat in the IDE. */ - total_engaged_users?: number; - editors?: { - /** @description Name of the given editor. */ - name?: string; - /** @description The number of users who prompted Copilot Chat in the specified editor. */ - total_engaged_users?: number; - /** @description List of model metrics for custom models and the default model. */ - models?: { - /** @description Name of the model used for Copilot Chat. If the default model is used will appear as 'default'. */ - name?: string; - /** @description Indicates whether a model is custom or default. */ - is_custom_model?: boolean; - /** @description The training date for the custom model. */ - custom_model_training_date?: string | null; - /** @description The number of users who prompted Copilot Chat in the given editor and model. */ - total_engaged_users?: number; - /** @description The total number of chats initiated by users in the given editor and model. */ - total_chats?: number; - /** @description The number of times users accepted a code suggestion from Copilot Chat using the 'Insert Code' UI element, for the given editor. */ - total_chat_insertion_events?: number; - /** @description The number of times users copied a code suggestion from Copilot Chat using the keyboard, or the 'Copy' UI element, for the given editor. */ - total_chat_copy_events?: number; - }[]; - }[]; - [key: string]: unknown; - } | null; - /** @description Usage metrics for Copilot Chat in GitHub.com */ - "copilot-dotcom-chat": { - /** @description Total number of users who prompted Copilot Chat on github.com at least once. */ - total_engaged_users?: number; - /** @description List of model metrics for a custom models and the default model. */ - models?: { - /** @description Name of the model used for Copilot Chat. If the default model is used will appear as 'default'. */ - name?: string; - /** @description Indicates whether a model is custom or default. */ - is_custom_model?: boolean; - /** @description The training date for the custom model (if applicable). */ - custom_model_training_date?: string | null; - /** @description Total number of users who prompted Copilot Chat on github.com at least once for each model. */ - total_engaged_users?: number; - /** @description Total number of chats initiated by users on github.com. */ - total_chats?: number; - }[]; - [key: string]: unknown; - } | null; - /** @description Usage metrics for Copilot for pull requests. */ - "copilot-dotcom-pull-requests": { - /** @description The number of users who used Copilot for Pull Requests on github.com to generate a pull request summary at least once. */ - total_engaged_users?: number; - /** @description Repositories in which users used Copilot for Pull Requests to generate pull request summaries */ - repositories?: { - /** @description Repository name */ - name?: string; - /** @description The number of users who generated pull request summaries using Copilot for Pull Requests in the given repository. */ - total_engaged_users?: number; - /** @description List of model metrics for custom models and the default model. */ - models?: { - /** @description Name of the model used for Copilot pull request summaries. If the default model is used will appear as 'default'. */ - name?: string; - /** @description Indicates whether a model is custom or default. */ - is_custom_model?: boolean; - /** @description The training date for the custom model. */ - custom_model_training_date?: string | null; - /** @description The number of pull request summaries generated using Copilot for Pull Requests in the given repository. */ - total_pr_summaries_created?: number; - /** @description The number of users who generated pull request summaries using Copilot for Pull Requests in the given repository and model. */ - total_engaged_users?: number; - }[]; - }[]; - [key: string]: unknown; - } | null; - /** - * Copilot Usage Metrics - * @description Copilot usage metrics for a given day. - */ - "copilot-usage-metrics-day": { - /** - * Format: date - * @description The date for which the usage metrics are aggregated, in `YYYY-MM-DD` format. - */ - date: string; - /** @description The total number of Copilot users with activity belonging to any Copilot feature, globally, for the given day. Includes passive activity such as receiving a code suggestion, as well as engagement activity such as accepting a code suggestion or prompting chat. Does not include authentication events. Is not limited to the individual features detailed on the endpoint. */ - total_active_users?: number; - /** @description The total number of Copilot users who engaged with any Copilot feature, for the given day. Examples include but are not limited to accepting a code suggestion, prompting Copilot chat, or triggering a PR Summary. Does not include authentication events. Is not limited to the individual features detailed on the endpoint. */ - total_engaged_users?: number; - copilot_ide_code_completions?: components["schemas"]["copilot-ide-code-completions"]; - copilot_ide_chat?: components["schemas"]["copilot-ide-chat"]; - copilot_dotcom_chat?: components["schemas"]["copilot-dotcom-chat"]; - copilot_dotcom_pull_requests?: components["schemas"]["copilot-dotcom-pull-requests"]; - [key: string]: unknown; - }; - /** - * Dependabot Secret for an Organization - * @description Secrets for GitHub Dependabot for an organization. - */ - "organization-dependabot-secret": { - /** - * @description The name of the secret. - * @example SECRET_TOKEN - */ - name: string; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** - * @description Visibility of a secret - * @enum {string} - */ - visibility: "all" | "private" | "selected"; - /** - * Format: uri - * @example https://api.github.com/organizations/org/dependabot/secrets/my_secret/repositories - */ - selected_repositories_url?: string; - }; - /** - * DependabotPublicKey - * @description The public key used for setting Dependabot Secrets. - */ - "dependabot-public-key": { - /** - * @description The identifier for the key. - * @example 1234567 - */ - key_id: string; - /** - * @description The Base64 encoded public key. - * @example hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs= - */ - key: string; - }; - /** - * Minimal Repository - * @description Minimal Repository - */ - "nullable-minimal-repository": { - /** - * Format: int64 - * @example 1296269 - */ - id: number; - /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ - node_id: string; - /** @example Hello-World */ - name: string; - /** @example octocat/Hello-World */ - full_name: string; - owner: components["schemas"]["simple-user"]; - private: boolean; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World - */ - html_url: string; - /** @example This your first repo! */ - description: string | null; - fork: boolean; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World - */ - url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ - archive_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ - assignees_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ - blobs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ - branches_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ - collaborators_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ - comments_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ - commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ - compare_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ - contents_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/contributors - */ - contributors_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/deployments - */ - deployments_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/downloads - */ - downloads_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/events - */ - events_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/forks - */ - forks_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ - git_commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ - git_refs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ - git_tags_url: string; - git_url?: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ - issue_comment_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ - issue_events_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ - issues_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ - keys_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ - labels_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/languages - */ - languages_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/merges - */ - merges_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ - milestones_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ - notifications_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ - pulls_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ - releases_url: string; - ssh_url?: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/stargazers - */ - stargazers_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ - statuses_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscribers - */ - subscribers_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscription - */ - subscription_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/tags - */ - tags_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/teams - */ - teams_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ - trees_url: string; - clone_url?: string; - mirror_url?: string | null; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/hooks - */ - hooks_url: string; - svn_url?: string; - homepage?: string | null; - language?: string | null; - forks_count?: number; - stargazers_count?: number; - watchers_count?: number; - /** @description The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0. */ - size?: number; - default_branch?: string; - open_issues_count?: number; - is_template?: boolean; - topics?: string[]; - has_issues?: boolean; - has_projects?: boolean; - has_wiki?: boolean; - has_pages?: boolean; - has_downloads?: boolean; - has_discussions?: boolean; - archived?: boolean; - disabled?: boolean; - visibility?: string; - /** - * Format: date-time - * @example 2011-01-26T19:06:43Z - */ - pushed_at?: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - created_at?: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:14:43Z - */ - updated_at?: string | null; - permissions?: { - admin?: boolean; - maintain?: boolean; - push?: boolean; - triage?: boolean; - pull?: boolean; - }; - /** @example admin */ - role_name?: string; - temp_clone_token?: string; - delete_branch_on_merge?: boolean; - subscribers_count?: number; - network_count?: number; - code_of_conduct?: components["schemas"]["code-of-conduct"]; - license?: { - key?: string; - name?: string; - spdx_id?: string; - url?: string; - node_id?: string; - } | null; - /** @example 0 */ - forks?: number; - /** @example 0 */ - open_issues?: number; - /** @example 0 */ - watchers?: number; - allow_forking?: boolean; - /** @example false */ - web_commit_signoff_required?: boolean; - security_and_analysis?: components["schemas"]["security-and-analysis"]; - /** @description The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - } | null; - /** - * Package - * @description A software package - */ - package: { - /** - * @description Unique identifier of the package. - * @example 1 - */ - id: number; - /** - * @description The name of the package. - * @example super-linter - */ - name: string; - /** - * @example docker - * @enum {string} - */ - package_type: - | "npm" - | "maven" - | "rubygems" - | "docker" - | "nuget" - | "container"; - /** @example https://api.github.com/orgs/github/packages/container/super-linter */ - url: string; - /** @example https://github.com/orgs/github/packages/container/package/super-linter */ - html_url: string; - /** - * @description The number of versions of the package. - * @example 1 - */ - version_count: number; - /** - * @example private - * @enum {string} - */ - visibility: "private" | "public"; - owner?: components["schemas"]["nullable-simple-user"]; - repository?: components["schemas"]["nullable-minimal-repository"]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - }; - /** - * Organization Invitation - * @description Organization Invitation - */ - "organization-invitation": { - /** Format: int64 */ - id: number; - login: string | null; - email: string | null; - role: string; - created_at: string; - failed_at?: string | null; - failed_reason?: string | null; - inviter: components["schemas"]["simple-user"]; - team_count: number; - /** @example "MDIyOk9yZ2FuaXphdGlvbkludml0YXRpb24x" */ - node_id: string; - /** @example "https://api.github.com/organizations/16/invitations/1/teams" */ - invitation_teams_url: string; - /** @example "member" */ - invitation_source?: string; - }; - /** - * Org Hook - * @description Org Hook - */ - "org-hook": { - /** @example 1 */ - id: number; - /** - * Format: uri - * @example https://api.github.com/orgs/octocat/hooks/1 - */ - url: string; - /** - * Format: uri - * @example https://api.github.com/orgs/octocat/hooks/1/pings - */ - ping_url: string; - /** - * Format: uri - * @example https://api.github.com/orgs/octocat/hooks/1/deliveries - */ - deliveries_url?: string; - /** @example web */ - name: string; - /** - * @example [ - * "push", - * "pull_request" - * ] - */ - events: string[]; - /** @example true */ - active: boolean; - config: { - /** @example "http://example.com/2" */ - url?: string; - /** @example "0" */ - insecure_ssl?: string; - /** @example "form" */ - content_type?: string; - /** @example "********" */ - secret?: string; - }; - /** - * Format: date-time - * @example 2011-09-06T20:39:23Z - */ - updated_at: string; - /** - * Format: date-time - * @example 2011-09-06T17:26:27Z - */ - created_at: string; - type: string; - }; - /** - * Route Stats - * @description API Insights usage route stats for an actor - */ - "api-insights-route-stats": { - /** @description The HTTP method */ - http_method?: string; - /** @description The API path's route template */ - api_route?: string; - /** - * Format: int64 - * @description The total number of requests within the queried time period - */ - total_request_count?: number; - /** - * Format: int64 - * @description The total number of requests that were rate limited within the queried time period - */ - rate_limited_request_count?: number; - last_rate_limited_timestamp?: string | null; - last_request_timestamp?: string; - }[]; - /** - * Subject Stats - * @description API Insights usage subject stats for an organization - */ - "api-insights-subject-stats": { - subject_type?: string; - subject_name?: string; - /** Format: int64 */ - subject_id?: number; - total_request_count?: number; - rate_limited_request_count?: number; - last_rate_limited_timestamp?: string | null; - last_request_timestamp?: string; - }[]; - /** - * Summary Stats - * @description API Insights usage summary stats for an organization - */ - "api-insights-summary-stats": { - /** - * Format: int64 - * @description The total number of requests within the queried time period - */ - total_request_count?: number; - /** - * Format: int64 - * @description The total number of requests that were rate limited within the queried time period - */ - rate_limited_request_count?: number; - }; - /** - * Time Stats - * @description API Insights usage time stats for an organization - */ - "api-insights-time-stats": { - timestamp?: string; - /** Format: int64 */ - total_request_count?: number; - /** Format: int64 */ - rate_limited_request_count?: number; - }[]; - /** - * User Stats - * @description API Insights usage stats for a user - */ - "api-insights-user-stats": { - actor_type?: string; - actor_name?: string; - /** Format: int64 */ - actor_id?: number; - /** Format: int64 */ - integration_id?: number | null; - /** Format: int64 */ - oauth_application_id?: number | null; - total_request_count?: number; - rate_limited_request_count?: number; - last_rate_limited_timestamp?: string | null; - last_request_timestamp?: string; - }[]; - /** - * @description The type of GitHub user that can comment, open issues, or create pull requests while the interaction limit is in effect. - * @example collaborators_only - * @enum {string} - */ - "interaction-group": - | "existing_users" - | "contributors_only" - | "collaborators_only"; - /** - * Interaction Limits - * @description Interaction limit settings. - */ - "interaction-limit-response": { - limit: components["schemas"]["interaction-group"]; - /** @example repository */ - origin: string; - /** - * Format: date-time - * @example 2018-08-17T04:18:39Z - */ - expires_at: string; - }; - /** - * @description The duration of the interaction restriction. Default: `one_day`. - * @example one_month - * @enum {string} - */ - "interaction-expiry": - | "one_day" - | "three_days" - | "one_week" - | "one_month" - | "six_months"; - /** - * Interaction Restrictions - * @description Limit interactions to a specific type of user for a specified duration - */ - "interaction-limit": { - limit: components["schemas"]["interaction-group"]; - expiry?: components["schemas"]["interaction-expiry"]; - }; - "organization-create-issue-type": { - /** @description Name of the issue type. */ - name: string; - /** @description Whether or not the issue type is enabled at the organization level. */ - is_enabled: boolean; - /** @description Description of the issue type. */ - description?: string | null; - /** - * @description Color for the issue type. - * @enum {string|null} - */ - color?: - | "gray" - | "blue" - | "green" - | "yellow" - | "orange" - | "red" - | "pink" - | "purple" - | null; - }; - "organization-update-issue-type": { - /** @description Name of the issue type. */ - name: string; - /** @description Whether or not the issue type is enabled at the organization level. */ - is_enabled: boolean; - /** @description Description of the issue type. */ - description?: string | null; - /** - * @description Color for the issue type. - * @enum {string|null} - */ - color?: - | "gray" - | "blue" - | "green" - | "yellow" - | "orange" - | "red" - | "pink" - | "purple" - | null; - }; - /** - * Org Membership - * @description Org Membership - */ - "org-membership": { - /** - * Format: uri - * @example https://api.github.com/orgs/octocat/memberships/defunkt - */ - url: string; - /** - * @description The state of the member in the organization. The `pending` state indicates the user has not yet accepted an invitation. - * @example active - * @enum {string} - */ - state: "active" | "pending"; - /** - * @description The user's membership type in the organization. - * @example admin - * @enum {string} - */ - role: "admin" | "member" | "billing_manager"; - /** - * @description Whether the user has direct membership in the organization. - * @example true - */ - direct_membership?: boolean; - /** - * @description The slugs of the enterprise teams providing the user with indirect membership in the organization. - * A limit of 100 enterprise team slugs is returned. - * @example [ - * "ent:team-one", - * "ent:team-two" - * ] - */ - enterprise_teams_providing_indirect_membership?: string[]; - /** - * Format: uri - * @example https://api.github.com/orgs/octocat - */ - organization_url: string; - organization: components["schemas"]["organization-simple"]; - user: components["schemas"]["nullable-simple-user"]; - permissions?: { - can_create_repository: boolean; - }; - }; - /** - * Migration - * @description A migration. - */ - migration: { - /** - * Format: int64 - * @example 79 - */ - id: number; - owner: components["schemas"]["nullable-simple-user"]; - /** @example 0b989ba4-242f-11e5-81e1-c7b6966d2516 */ - guid: string; - /** @example pending */ - state: string; - /** @example true */ - lock_repositories: boolean; - exclude_metadata: boolean; - exclude_git_data: boolean; - exclude_attachments: boolean; - exclude_releases: boolean; - exclude_owner_projects: boolean; - org_metadata_only: boolean; - /** @description The repositories included in the migration. Only returned for export migrations. */ - repositories: components["schemas"]["repository"][]; - /** - * Format: uri - * @example https://api.github.com/orgs/octo-org/migrations/79 - */ - url: string; - /** - * Format: date-time - * @example 2015-07-06T15:33:38-07:00 - */ - created_at: string; - /** - * Format: date-time - * @example 2015-07-06T15:33:38-07:00 - */ - updated_at: string; - node_id: string; - /** Format: uri */ - archive_url?: string; - /** @description Exclude related items from being returned in the response in order to improve performance of the request. The array can include any of: `"repositories"`. */ - exclude?: string[]; - }; - /** - * Organization Role - * @description Organization roles - */ - "organization-role": { - /** - * Format: int64 - * @description The unique identifier of the role. - */ - id: number; - /** @description The name of the role. */ - name: string; - /** @description A short description about who this role is for or what permissions it grants. */ - description?: string | null; - /** - * @description The system role from which this role inherits permissions. - * @enum {string|null} - */ - base_role?: "read" | "triage" | "write" | "maintain" | "admin" | null; - /** - * @description Source answers the question, "where did this role come from?" - * @enum {string|null} - */ - source?: "Organization" | "Enterprise" | "Predefined" | null; - /** @description A list of permissions included in this role. */ - permissions: string[]; - organization: components["schemas"]["nullable-simple-user"]; - /** - * Format: date-time - * @description The date and time the role was created. - */ - created_at: string; - /** - * Format: date-time - * @description The date and time the role was last updated. - */ - updated_at: string; - }; - /** - * A Role Assignment for a Team - * @description The Relationship a Team has with a role. - */ - "team-role-assignment": { - /** - * @description Determines if the team has a direct, indirect, or mixed relationship to a role - * @example direct - * @enum {string} - */ - assignment?: "direct" | "indirect" | "mixed"; - id: number; - node_id: string; - name: string; - slug: string; - description: string | null; - privacy?: string; - notification_setting?: string; - permission: string; - permissions?: { - pull: boolean; - triage: boolean; - push: boolean; - maintain: boolean; - admin: boolean; - }; - /** Format: uri */ - url: string; - /** - * Format: uri - * @example https://github.com/orgs/rails/teams/core - */ - html_url: string; - members_url: string; - /** Format: uri */ - repositories_url: string; - parent: components["schemas"]["nullable-team-simple"]; - /** - * @description The ownership type of the team - * @enum {string} - */ - type: "enterprise" | "organization"; - /** - * @description Unique identifier of the organization to which this team belongs - * @example 37 - */ - organization_id?: number; - /** - * @description Unique identifier of the enterprise to which this team belongs - * @example 42 - */ - enterprise_id?: number; - }; - /** - * Team Simple - * @description Groups of organization members that gives permissions on specified repositories. - */ - "team-simple": { - /** - * @description Unique identifier of the team - * @example 1 - */ - id: number; - /** @example MDQ6VGVhbTE= */ - node_id: string; - /** - * Format: uri - * @description URL for the team - * @example https://api.github.com/organizations/1/team/1 - */ - url: string; - /** @example https://api.github.com/organizations/1/team/1/members{/member} */ - members_url: string; - /** - * @description Name of the team - * @example Justice League - */ - name: string; - /** - * @description Description of the team - * @example A great team. - */ - description: string | null; - /** - * @description Permission that the team will have for its repositories - * @example admin - */ - permission: string; - /** - * @description The level of privacy this team should have - * @example closed - */ - privacy?: string; - /** - * @description The notification setting the team has set - * @example notifications_enabled - */ - notification_setting?: string; - /** - * Format: uri - * @example https://github.com/orgs/rails/teams/core - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/organizations/1/team/1/repos - */ - repositories_url: string; - /** @example justice-league */ - slug: string; - /** - * @description Distinguished Name (DN) that team maps to within LDAP environment - * @example uid=example,ou=users,dc=github,dc=com - */ - ldap_dn?: string; - /** - * @description The ownership type of the team - * @enum {string} - */ - type: "enterprise" | "organization"; - /** - * @description Unique identifier of the organization to which this team belongs - * @example 37 - */ - organization_id?: number; - /** - * @description Unique identifier of the enterprise to which this team belongs - * @example 42 - */ - enterprise_id?: number; - }; - /** - * A Role Assignment for a User - * @description The Relationship a User has with a role. - */ - "user-role-assignment": { - /** - * @description Determines if the user has a direct, indirect, or mixed relationship to a role - * @example direct - * @enum {string} - */ - assignment?: "direct" | "indirect" | "mixed"; - /** @description Team the user has gotten the role through */ - inherited_from?: components["schemas"]["team-simple"][]; - name?: string | null; - email?: string | null; - /** @example octocat */ - login: string; - /** @example 1 */ - id: number; - /** @example MDQ6VXNlcjE= */ - node_id: string; - /** - * Format: uri - * @example https://github.com/images/error/octocat_happy.gif - */ - avatar_url: string; - /** @example 41d064eb2195891e12d0413f63227ea7 */ - gravatar_id: string | null; - /** - * Format: uri - * @example https://api.github.com/users/octocat - */ - url: string; - /** - * Format: uri - * @example https://github.com/octocat - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/followers - */ - followers_url: string; - /** @example https://api.github.com/users/octocat/following{/other_user} */ - following_url: string; - /** @example https://api.github.com/users/octocat/gists{/gist_id} */ - gists_url: string; - /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */ - starred_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/subscriptions - */ - subscriptions_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/orgs - */ - organizations_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/repos - */ - repos_url: string; - /** @example https://api.github.com/users/octocat/events{/privacy} */ - events_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/received_events - */ - received_events_url: string; - /** @example User */ - type: string; - site_admin: boolean; - /** @example "2020-07-09T00:17:55Z" */ - starred_at?: string; - /** @example public */ - user_view_type?: string; - }; - /** - * Package Version - * @description A version of a software package - */ - "package-version": { - /** - * @description Unique identifier of the package version. - * @example 1 - */ - id: number; - /** - * @description The name of the package version. - * @example latest - */ - name: string; - /** @example https://api.github.com/orgs/github/packages/container/super-linter/versions/786068 */ - url: string; - /** @example https://github.com/orgs/github/packages/container/package/super-linter */ - package_html_url: string; - /** @example https://github.com/orgs/github/packages/container/super-linter/786068 */ - html_url?: string; - /** @example MIT */ - license?: string; - description?: string; - /** - * Format: date-time - * @example 2011-04-10T20:09:31Z - */ - created_at: string; - /** - * Format: date-time - * @example 2014-03-03T18:58:10Z - */ - updated_at: string; - /** - * Format: date-time - * @example 2014-03-03T18:58:10Z - */ - deleted_at?: string; - /** Package Version Metadata */ - metadata?: { - /** - * @example docker - * @enum {string} - */ - package_type: - | "npm" - | "maven" - | "rubygems" - | "docker" - | "nuget" - | "container"; - /** Container Metadata */ - container?: { - tags: string[]; - }; - /** Docker Metadata */ - docker?: { - tag?: string[]; - }; - }; - }; - /** - * Simple Organization Programmatic Access Grant Request - * @description Minimal representation of an organization programmatic access grant request for enumerations - */ - "organization-programmatic-access-grant-request": { - /** @description Unique identifier of the request for access via fine-grained personal access token. The `pat_request_id` used to review PAT requests. */ - id: number; - /** @description Reason for requesting access. */ - reason: string | null; - owner: components["schemas"]["simple-user"]; - /** - * @description Type of repository selection requested. - * @enum {string} - */ - repository_selection: "none" | "all" | "subset"; - /** @description URL to the list of repositories requested to be accessed via fine-grained personal access token. Should only be followed when `repository_selection` is `subset`. */ - repositories_url: string; - /** @description Permissions requested, categorized by type of permission. */ - permissions: { - organization?: { - [key: string]: string; - }; - repository?: { - [key: string]: string; - }; - other?: { - [key: string]: string; - }; - }; - /** @description Date and time when the request for access was created. */ - created_at: string; - /** @description Unique identifier of the user's token. This field can also be found in audit log events and the organization's settings for their PAT grants. */ - token_id: number; - /** @description The name given to the user's token. This field can also be found in an organization's settings page for Active Tokens. */ - token_name: string; - /** @description Whether the associated fine-grained personal access token has expired. */ - token_expired: boolean; - /** @description Date and time when the associated fine-grained personal access token expires. */ - token_expires_at: string | null; - /** @description Date and time when the associated fine-grained personal access token was last used for authentication. */ - token_last_used_at: string | null; - }; - /** - * Organization Programmatic Access Grant - * @description Minimal representation of an organization programmatic access grant for enumerations - */ - "organization-programmatic-access-grant": { - /** @description Unique identifier of the fine-grained personal access token grant. The `pat_id` used to get details about an approved fine-grained personal access token. */ - id: number; - owner: components["schemas"]["simple-user"]; - /** - * @description Type of repository selection requested. - * @enum {string} - */ - repository_selection: "none" | "all" | "subset"; - /** @description URL to the list of repositories the fine-grained personal access token can access. Only follow when `repository_selection` is `subset`. */ - repositories_url: string; - /** @description Permissions requested, categorized by type of permission. */ - permissions: { - organization?: { - [key: string]: string; - }; - repository?: { - [key: string]: string; - }; - other?: { - [key: string]: string; - }; - }; - /** @description Date and time when the fine-grained personal access token was approved to access the organization. */ - access_granted_at: string; - /** @description Unique identifier of the user's token. This field can also be found in audit log events and the organization's settings for their PAT grants. */ - token_id: number; - /** @description The name given to the user's token. This field can also be found in an organization's settings page for Active Tokens. */ - token_name: string; - /** @description Whether the associated fine-grained personal access token has expired. */ - token_expired: boolean; - /** @description Date and time when the associated fine-grained personal access token expires. */ - token_expires_at: string | null; - /** @description Date and time when the associated fine-grained personal access token was last used for authentication. */ - token_last_used_at: string | null; - }; - /** - * Organization private registry - * @description Private registry configuration for an organization - */ - "org-private-registry-configuration": { - /** - * @description The name of the private registry configuration. - * @example MAVEN_REPOSITORY_SECRET - */ - name: string; - /** - * @description The registry type. - * @enum {string} - */ - registry_type: - | "maven_repository" - | "nuget_feed" - | "goproxy_server" - | "npm_registry" - | "rubygems_server" - | "cargo_registry" - | "composer_repository" - | "docker_registry" - | "git_source" - | "helm_registry" - | "hex_organization" - | "hex_repository" - | "pub_repository" - | "python_index" - | "terraform_registry"; - /** - * @description The username to use when authenticating with the private registry. - * @example monalisa - */ - username?: string | null; - /** - * @description Which type of organization repositories have access to the private registry. - * @enum {string} - */ - visibility: "all" | "private" | "selected"; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - }; - /** - * Organization private registry - * @description Private registry configuration for an organization - */ - "org-private-registry-configuration-with-selected-repositories": { - /** - * @description The name of the private registry configuration. - * @example MAVEN_REPOSITORY_SECRET - */ - name: string; - /** - * @description The registry type. - * @enum {string} - */ - registry_type: - | "maven_repository" - | "nuget_feed" - | "goproxy_server" - | "npm_registry" - | "rubygems_server" - | "cargo_registry" - | "composer_repository" - | "docker_registry" - | "git_source" - | "helm_registry" - | "hex_organization" - | "hex_repository" - | "pub_repository" - | "python_index" - | "terraform_registry"; - /** - * @description The username to use when authenticating with the private registry. - * @example monalisa - */ - username?: string; - /** - * @description Which type of organization repositories have access to the private registry. `selected` means only the repositories specified by `selected_repository_ids` can access the private registry. - * @enum {string} - */ - visibility: "all" | "private" | "selected"; - /** @description An array of repository IDs that can access the organization private registry when `visibility` is set to `selected`. */ - selected_repository_ids?: number[]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - }; - /** - * Project - * @description Projects are a way to organize columns and cards of work. - */ - project: { - /** - * Format: uri - * @example https://api.github.com/repos/api-playground/projects-test - */ - owner_url: string; - /** - * Format: uri - * @example https://api.github.com/projects/1002604 - */ - url: string; - /** - * Format: uri - * @example https://github.com/api-playground/projects-test/projects/12 - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/projects/1002604/columns - */ - columns_url: string; - /** @example 1002604 */ - id: number; - /** @example MDc6UHJvamVjdDEwMDI2MDQ= */ - node_id: string; - /** - * @description Name of the project - * @example Week One Sprint - */ - name: string; - /** - * @description Body of the project - * @example This project represents the sprint of the first week in January - */ - body: string | null; - /** @example 1 */ - number: number; - /** - * @description State of the project; either 'open' or 'closed' - * @example open - */ - state: string; - creator: components["schemas"]["nullable-simple-user"]; - /** - * Format: date-time - * @example 2011-04-10T20:09:31Z - */ - created_at: string; - /** - * Format: date-time - * @example 2014-03-03T18:58:10Z - */ - updated_at: string; - /** - * @description The baseline permission that all organization members have on this project. Only present if owner is an organization. - * @enum {string} - */ - organization_permission?: "read" | "write" | "admin" | "none"; - /** @description Whether or not this project can be seen by everyone. Only present if owner is an organization. */ - private?: boolean; - }; - /** - * Projects v2 Status Update - * @description An status update belonging to a project - */ - "nullable-projects-v2-status-update": { - /** @description The unique identifier of the status update. */ - id: number; - /** @description The node ID of the status update. */ - node_id: string; - /** @description The node ID of the project that this status update belongs to. */ - project_node_id?: string; - creator?: components["schemas"]["simple-user"]; - /** - * Format: date-time - * @description The time when the status update was created. - * @example 2022-04-28T12:00:00Z - */ - created_at: string; - /** - * Format: date-time - * @description The time when the status update was last updated. - * @example 2022-04-28T12:00:00Z - */ - updated_at: string; - /** - * @description The current status. - * @enum {string|null} - */ - status?: - | "INACTIVE" - | "ON_TRACK" - | "AT_RISK" - | "OFF_TRACK" - | "COMPLETE" - | null; - /** - * Format: date - * @description The start date of the period covered by the update. - * @example 2022-04-28 - */ - start_date?: string; - /** - * Format: date - * @description The target date associated with the update. - * @example 2022-04-28 - */ - target_date?: string; - /** - * @description Body of the status update - * @example The project is off to a great start! - */ - body?: string | null; - } | null; - /** - * Projects v2 Project - * @description A projects v2 project - */ - "projects-v2": { - /** @description The unique identifier of the project. */ - id: number; - /** @description The node ID of the project. */ - node_id: string; - owner: components["schemas"]["simple-user"]; - creator: components["schemas"]["simple-user"]; - /** @description The project title. */ - title: string; - /** @description A short description of the project. */ - description: string | null; - /** @description Whether the project is visible to anyone with access to the owner. */ - public: boolean; - /** - * Format: date-time - * @description The time when the project was closed. - * @example 2022-04-28T12:00:00Z - */ - closed_at: string | null; - /** - * Format: date-time - * @description The time when the project was created. - * @example 2022-04-28T12:00:00Z - */ - created_at: string; - /** - * Format: date-time - * @description The time when the project was last updated. - * @example 2022-04-28T12:00:00Z - */ - updated_at: string; - /** @description The project number. */ - number: number; - /** @description A concise summary of the project. */ - short_description: string | null; - /** - * Format: date-time - * @description The time when the project was deleted. - * @example 2022-04-28T12:00:00Z - */ - deleted_at: string | null; - deleted_by: components["schemas"]["nullable-simple-user"]; - /** - * @description The current state of the project. - * @enum {string} - */ - state?: "open" | "closed"; - latest_status_update?: components["schemas"]["nullable-projects-v2-status-update"]; - /** @description Whether this project is a template */ - is_template?: boolean; - }; - /** - * Projects v2 Single Select Option - * @description An option for a single select field - */ - "projects-v2-single-select-options": { - /** @description The unique identifier of the option. */ - id: string; - /** @description The display name of the option, in raw text and HTML formats. */ - name: { - raw: string; - html: string; - }; - /** @description The description of the option, in raw text and HTML formats. */ - description: { - raw: string; - html: string; - }; - /** @description The color associated with the option. */ - color: string; - }; - /** - * Projects v2 Iteration Setting - * @description An iteration setting for an iteration field - */ - "projects-v2-iteration-settings": { - /** @description The unique identifier of the iteration setting. */ - id: string; - /** - * Format: date - * @description The start date of the iteration. - */ - start_date: string; - /** @description The duration of the iteration in days. */ - duration: number; - /** @description The iteration title, in raw text and HTML formats. */ - title: { - raw: string; - html: string; - }; - /** @description Whether the iteration has been completed. */ - completed: boolean; - }; - /** - * Projects v2 Field - * @description A field inside a projects v2 project - */ - "projects-v2-field": { - /** @description The unique identifier of the field. */ - id: number; - /** @description The node ID of the field. */ - node_id?: string; - /** - * @description The API URL of the project that contains the field. - * @example https://api.github.com/projects/1 - */ - project_url: string; - /** @description The name of the field. */ - name: string; - /** - * @description The field's data type. - * @enum {string} - */ - data_type: - | "assignees" - | "linked_pull_requests" - | "reviewers" - | "labels" - | "milestone" - | "repository" - | "title" - | "text" - | "single_select" - | "number" - | "date" - | "iteration" - | "issue_type" - | "parent_issue" - | "sub_issues_progress"; - /** @description The options available for single select fields. */ - options?: components["schemas"]["projects-v2-single-select-options"][]; - /** @description Configuration for iteration fields. */ - configuration?: { - /** @description The day of the week when the iteration starts. */ - start_day?: number; - /** @description The duration of the iteration in days. */ - duration?: number; - iterations?: components["schemas"]["projects-v2-iteration-settings"][]; - }; - /** - * Format: date-time - * @description The time when the field was created. - * @example 2022-04-28T12:00:00Z - */ - created_at: string; - /** - * Format: date-time - * @description The time when the field was last updated. - * @example 2022-04-28T12:00:00Z - */ - updated_at: string; - }; - /** - * Projects v2 Item Content Type - * @description The type of content tracked in a project item - * @enum {string} - */ - "projects-v2-item-content-type": "Issue" | "PullRequest" | "DraftIssue"; - /** - * Projects v2 Item - * @description An item belonging to a project - */ - "projects-v2-item-with-content": { - /** @description The unique identifier of the project item. */ - id: number; - /** @description The node ID of the project item. */ - node_id?: string; - /** - * Format: uri - * @description The API URL of the project that contains this item. - * @example https://api.github.com/users/monalisa/2/projectsV2/3 - */ - project_url?: string; - content_type: components["schemas"]["projects-v2-item-content-type"]; - /** @description The content of the item, which varies by content type. */ - content?: { - [key: string]: unknown; - } | null; - creator?: components["schemas"]["simple-user"]; - /** - * Format: date-time - * @description The time when the item was created. - * @example 2022-04-28T12:00:00Z - */ - created_at: string; - /** - * Format: date-time - * @description The time when the item was last updated. - * @example 2022-04-28T12:00:00Z - */ - updated_at: string; - /** - * Format: date-time - * @description The time when the item was archived. - * @example 2022-04-28T12:00:00Z - */ - archived_at: string | null; - /** - * Format: uri - * @description The API URL of this item. - * @example https://api.github.com/users/monalisa/2/projectsV2/items/3 - */ - item_url?: string | null; - /** @description The fields and values associated with this item. */ - fields?: { - [key: string]: unknown; - }[]; - }; - /** - * Link - * @description Hypermedia Link - */ - link: { - href: string; - }; - /** - * Auto merge - * @description The status of auto merging a pull request. - */ - "auto-merge": { - enabled_by: components["schemas"]["simple-user"]; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - /** @description Title for the merge commit message. */ - commit_title: string; - /** @description Commit message for the merge commit. */ - commit_message: string; - } | null; - /** - * Pull Request Simple - * @description Pull Request Simple - */ - "pull-request-simple": { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347 - */ - url: string; - /** - * Format: int64 - * @example 1 - */ - id: number; - /** @example MDExOlB1bGxSZXF1ZXN0MQ== */ - node_id: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/pull/1347 - */ - html_url: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/pull/1347.diff - */ - diff_url: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/pull/1347.patch - */ - patch_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/issues/1347 - */ - issue_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits - */ - commits_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments - */ - review_comments_url: string; - /** @example https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number} */ - review_comment_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/issues/1347/comments - */ - comments_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e - */ - statuses_url: string; - /** @example 1347 */ - number: number; - /** @example open */ - state: string; - /** @example true */ - locked: boolean; - /** @example new-feature */ - title: string; - user: components["schemas"]["nullable-simple-user"]; - /** @example Please pull these awesome changes */ - body: string | null; - labels: { - /** Format: int64 */ - id: number; - node_id: string; - url: string; - name: string; - description: string; - color: string; - default: boolean; - }[]; - milestone: components["schemas"]["nullable-milestone"]; - /** @example too heated */ - active_lock_reason?: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - created_at: string; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - updated_at: string; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - closed_at: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - merged_at: string | null; - /** @example e5bd3914e2e596debea16f433f57875b5b90bcd6 */ - merge_commit_sha: string | null; - assignee: components["schemas"]["nullable-simple-user"]; - assignees?: components["schemas"]["simple-user"][] | null; - requested_reviewers?: components["schemas"]["simple-user"][] | null; - requested_teams?: components["schemas"]["team"][] | null; - head: { - label: string; - ref: string; - repo: components["schemas"]["repository"]; - sha: string; - user: components["schemas"]["nullable-simple-user"]; - }; - base: { - label: string; - ref: string; - repo: components["schemas"]["repository"]; - sha: string; - user: components["schemas"]["nullable-simple-user"]; - }; - _links: { - comments: components["schemas"]["link"]; - commits: components["schemas"]["link"]; - statuses: components["schemas"]["link"]; - html: components["schemas"]["link"]; - issue: components["schemas"]["link"]; - review_comments: components["schemas"]["link"]; - review_comment: components["schemas"]["link"]; - self: components["schemas"]["link"]; - }; - author_association: components["schemas"]["author-association"]; - auto_merge: components["schemas"]["auto-merge"]; - /** - * @description Indicates whether or not the pull request is a draft. - * @example false - */ - draft?: boolean; - }; - /** - * Draft Issue - * @description A draft issue in a project - */ - "projects-v2-draft-issue": { - /** @description The ID of the draft issue */ - id: number; - /** @description The node ID of the draft issue */ - node_id: string; - /** @description The title of the draft issue */ - title: string; - /** @description The body content of the draft issue */ - body?: string | null; - user: components["schemas"]["nullable-simple-user"]; - /** - * Format: date-time - * @description The time the draft issue was created - */ - created_at: string; - /** - * Format: date-time - * @description The time the draft issue was last updated - */ - updated_at: string; - }; - /** - * Projects v2 Item - * @description An item belonging to a project - */ - "projects-v2-item-simple": { - /** @description The unique identifier of the project item. */ - id: number; - /** @description The node ID of the project item. */ - node_id?: string; - /** @description The content represented by the item. */ - content?: - | components["schemas"]["issue"] - | components["schemas"]["pull-request-simple"] - | components["schemas"]["projects-v2-draft-issue"]; - content_type: components["schemas"]["projects-v2-item-content-type"]; - creator?: components["schemas"]["simple-user"]; - /** - * Format: date-time - * @description The time when the item was created. - * @example 2022-04-28T12:00:00Z - */ - created_at: string; - /** - * Format: date-time - * @description The time when the item was last updated. - * @example 2022-04-28T12:00:00Z - */ - updated_at: string; - /** - * Format: date-time - * @description The time when the item was archived. - * @example 2022-04-28T12:00:00Z - */ - archived_at: string | null; - /** - * Format: uri - * @description The URL of the project this item belongs to. - */ - project_url?: string; - /** - * Format: uri - * @description The URL of the item in the project. - */ - item_url?: string; - }; - /** - * Organization Custom Property - * @description Custom property defined on an organization - */ - "custom-property": { - /** @description The name of the property */ - property_name: string; - /** - * Format: uri - * @description The URL that can be used to fetch, update, or delete info about this property via the API. - */ - url?: string; - /** - * @description The source type of the property - * @example organization - * @enum {string} - */ - source_type?: "organization" | "enterprise"; - /** - * @description The type of the value for the property - * @example single_select - * @enum {string} - */ - value_type: "string" | "single_select" | "multi_select" | "true_false"; - /** @description Whether the property is required. */ - required?: boolean; - /** @description Default value of the property */ - default_value?: string | string[] | null; - /** @description Short description of the property */ - description?: string | null; - /** - * @description An ordered list of the allowed values of the property. - * The property can have up to 200 allowed values. - */ - allowed_values?: string[] | null; - /** - * @description Who can edit the values of the property - * @example org_actors - * @enum {string|null} - */ - values_editable_by?: "org_actors" | "org_and_repo_actors" | null; - }; - /** - * Custom Property Set Payload - * @description Custom property set payload - */ - "custom-property-set-payload": { - /** - * @description The type of the value for the property - * @example single_select - * @enum {string} - */ - value_type: "string" | "single_select" | "multi_select" | "true_false"; - /** @description Whether the property is required. */ - required?: boolean; - /** @description Default value of the property */ - default_value?: string | string[] | null; - /** @description Short description of the property */ - description?: string | null; - /** - * @description An ordered list of the allowed values of the property. - * The property can have up to 200 allowed values. - */ - allowed_values?: string[] | null; - /** - * @description Who can edit the values of the property - * @example org_actors - * @enum {string|null} - */ - values_editable_by?: "org_actors" | "org_and_repo_actors" | null; - }; - /** - * Organization Repository Custom Property Values - * @description List of custom property values for a repository - */ - "org-repo-custom-property-values": { - /** @example 1296269 */ - repository_id: number; - /** @example Hello-World */ - repository_name: string; - /** @example octocat/Hello-World */ - repository_full_name: string; - /** @description List of custom property names and associated values */ - properties: components["schemas"]["custom-property-value"][]; - }; - /** - * Repository - * @description A repository on GitHub. - */ - "nullable-repository": { - /** - * Format: int64 - * @description Unique identifier of the repository - * @example 42 - */ - id: number; - /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ - node_id: string; - /** - * @description The name of the repository. - * @example Team Environment - */ - name: string; - /** @example octocat/Hello-World */ - full_name: string; - license: components["schemas"]["nullable-license-simple"]; - forks: number; - permissions?: { - admin: boolean; - pull: boolean; - triage?: boolean; - push: boolean; - maintain?: boolean; - }; - owner: components["schemas"]["simple-user"]; - /** - * @description Whether the repository is private or public. - * @default false - */ - private: boolean; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World - */ - html_url: string; - /** @example This your first repo! */ - description: string | null; - fork: boolean; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World - */ - url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ - archive_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ - assignees_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ - blobs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ - branches_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ - collaborators_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ - comments_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ - commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ - compare_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ - contents_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/contributors - */ - contributors_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/deployments - */ - deployments_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/downloads - */ - downloads_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/events - */ - events_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/forks - */ - forks_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ - git_commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ - git_refs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ - git_tags_url: string; - /** @example git:github.com/octocat/Hello-World.git */ - git_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ - issue_comment_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ - issue_events_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ - issues_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ - keys_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ - labels_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/languages - */ - languages_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/merges - */ - merges_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ - milestones_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ - notifications_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ - pulls_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ - releases_url: string; - /** @example git@github.com:octocat/Hello-World.git */ - ssh_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/stargazers - */ - stargazers_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ - statuses_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscribers - */ - subscribers_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscription - */ - subscription_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/tags - */ - tags_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/teams - */ - teams_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ - trees_url: string; - /** @example https://github.com/octocat/Hello-World.git */ - clone_url: string; - /** - * Format: uri - * @example git:git.example.com/octocat/Hello-World - */ - mirror_url: string | null; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/hooks - */ - hooks_url: string; - /** - * Format: uri - * @example https://svn.github.com/octocat/Hello-World - */ - svn_url: string; - /** - * Format: uri - * @example https://github.com - */ - homepage: string | null; - language: string | null; - /** @example 9 */ - forks_count: number; - /** @example 80 */ - stargazers_count: number; - /** @example 80 */ - watchers_count: number; - /** - * @description The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0. - * @example 108 - */ - size: number; - /** - * @description The default branch of the repository. - * @example master - */ - default_branch: string; - /** @example 0 */ - open_issues_count: number; - /** - * @description Whether this repository acts as a template that can be used to generate new repositories. - * @default false - * @example true - */ - is_template?: boolean; - topics?: string[]; - /** - * @description Whether issues are enabled. - * @default true - * @example true - */ - has_issues: boolean; - /** - * @description Whether projects are enabled. - * @default true - * @example true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - * @example true - */ - has_wiki: boolean; - has_pages: boolean; - /** - * @deprecated - * @description Whether downloads are enabled. - * @default true - * @example true - */ - has_downloads: boolean; - /** - * @description Whether discussions are enabled. - * @default false - * @example true - */ - has_discussions?: boolean; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** @description Returns whether or not this repository disabled. */ - disabled: boolean; - /** - * @description The repository visibility: public, private, or internal. - * @default public - */ - visibility?: string; - /** - * Format: date-time - * @example 2011-01-26T19:06:43Z - */ - pushed_at: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - created_at: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:14:43Z - */ - updated_at: string | null; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - * @example true - */ - allow_rebase_merge?: boolean; - temp_clone_token?: string; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - * @example true - */ - allow_squash_merge?: boolean; - /** - * @description Whether to allow Auto-merge to be used on pull requests. - * @default false - * @example false - */ - allow_auto_merge?: boolean; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - * @example false - */ - delete_branch_on_merge?: boolean; - /** - * @description Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging. - * @default false - * @example false - */ - allow_update_branch?: boolean; - /** - * @deprecated - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - * @example true - */ - allow_merge_commit?: boolean; - /** @description Whether to allow forking this repo */ - allow_forking?: boolean; - /** - * @description Whether to require contributors to sign off on web-based commits - * @default false - */ - web_commit_signoff_required?: boolean; - open_issues: number; - watchers: number; - master_branch?: string; - /** @example "2020-07-09T00:17:42Z" */ - starred_at?: string; - /** @description Whether anonymous git access is enabled for this repository */ - anonymous_access_enabled?: boolean; - /** @description The status of the code search index for this repository */ - code_search_index_status?: { - lexical_search_ok?: boolean; - lexical_commit_sha?: string; - }; - } | null; - /** - * Code Of Conduct Simple - * @description Code of Conduct Simple - */ - "code-of-conduct-simple": { - /** - * Format: uri - * @example https://api.github.com/repos/github/docs/community/code_of_conduct - */ - url: string; - /** @example citizen_code_of_conduct */ - key: string; - /** @example Citizen Code of Conduct */ - name: string; - /** - * Format: uri - * @example https://github.com/github/docs/blob/main/CODE_OF_CONDUCT.md - */ - html_url: string | null; - }; - /** - * Full Repository - * @description Full Repository - */ - "full-repository": { - /** - * Format: int64 - * @example 1296269 - */ - id: number; - /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ - node_id: string; - /** @example Hello-World */ - name: string; - /** @example octocat/Hello-World */ - full_name: string; - owner: components["schemas"]["simple-user"]; - private: boolean; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World - */ - html_url: string; - /** @example This your first repo! */ - description: string | null; - fork: boolean; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World - */ - url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ - archive_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ - assignees_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ - blobs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ - branches_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ - collaborators_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ - comments_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ - commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ - compare_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ - contents_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/contributors - */ - contributors_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/deployments - */ - deployments_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/downloads - */ - downloads_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/events - */ - events_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/forks - */ - forks_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ - git_commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ - git_refs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ - git_tags_url: string; - /** @example git:github.com/octocat/Hello-World.git */ - git_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ - issue_comment_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ - issue_events_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ - issues_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ - keys_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ - labels_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/languages - */ - languages_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/merges - */ - merges_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ - milestones_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ - notifications_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ - pulls_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ - releases_url: string; - /** @example git@github.com:octocat/Hello-World.git */ - ssh_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/stargazers - */ - stargazers_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ - statuses_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscribers - */ - subscribers_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscription - */ - subscription_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/tags - */ - tags_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/teams - */ - teams_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ - trees_url: string; - /** @example https://github.com/octocat/Hello-World.git */ - clone_url: string; - /** - * Format: uri - * @example git:git.example.com/octocat/Hello-World - */ - mirror_url: string | null; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/hooks - */ - hooks_url: string; - /** - * Format: uri - * @example https://svn.github.com/octocat/Hello-World - */ - svn_url: string; - /** - * Format: uri - * @example https://github.com - */ - homepage: string | null; - language: string | null; - /** @example 9 */ - forks_count: number; - /** @example 80 */ - stargazers_count: number; - /** @example 80 */ - watchers_count: number; - /** - * @description The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0. - * @example 108 - */ - size: number; - /** @example master */ - default_branch: string; - /** @example 0 */ - open_issues_count: number; - /** @example true */ - is_template?: boolean; - /** - * @example [ - * "octocat", - * "atom", - * "electron", - * "API" - * ] - */ - topics?: string[]; - /** @example true */ - has_issues: boolean; - /** @example true */ - has_projects: boolean; - /** @example true */ - has_wiki: boolean; - has_pages: boolean; - /** @example true */ - has_downloads?: boolean; - /** @example true */ - has_discussions: boolean; - archived: boolean; - /** @description Returns whether or not this repository disabled. */ - disabled: boolean; - /** - * @description The repository visibility: public, private, or internal. - * @example public - */ - visibility?: string; - /** - * Format: date-time - * @example 2011-01-26T19:06:43Z - */ - pushed_at: string; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - created_at: string; - /** - * Format: date-time - * @example 2011-01-26T19:14:43Z - */ - updated_at: string; - permissions?: { - admin: boolean; - maintain?: boolean; - push: boolean; - triage?: boolean; - pull: boolean; - }; - /** @example true */ - allow_rebase_merge?: boolean; - template_repository?: components["schemas"]["nullable-repository"]; - temp_clone_token?: string | null; - /** @example true */ - allow_squash_merge?: boolean; - /** @example false */ - allow_auto_merge?: boolean; - /** @example false */ - delete_branch_on_merge?: boolean; - /** @example true */ - allow_merge_commit?: boolean; - /** @example true */ - allow_update_branch?: boolean; - /** @example false */ - use_squash_pr_title_as_default?: boolean; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @example PR_TITLE - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @example PR_BODY - * @enum {string} - */ - squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @example PR_TITLE - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @example PR_BODY - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** @example true */ - allow_forking?: boolean; - /** @example false */ - web_commit_signoff_required?: boolean; - /** @example 42 */ - subscribers_count: number; - /** @example 0 */ - network_count: number; - license: components["schemas"]["nullable-license-simple"]; - organization?: components["schemas"]["nullable-simple-user"]; - parent?: components["schemas"]["repository"]; - source?: components["schemas"]["repository"]; - forks: number; - master_branch?: string; - open_issues: number; - watchers: number; - /** - * @description Whether anonymous git access is allowed. - * @default true - */ - anonymous_access_enabled?: boolean; - code_of_conduct?: components["schemas"]["code-of-conduct-simple"]; - security_and_analysis?: components["schemas"]["security-and-analysis"]; - /** @description The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - }; - /** - * @description The enforcement level of the ruleset. `evaluate` allows admins to test rules before enforcing them. Admins can view insights on the Rule Insights page (`evaluate` is only available with GitHub Enterprise). - * @enum {string} - */ - "repository-rule-enforcement": "disabled" | "active" | "evaluate"; - /** - * Repository Ruleset Bypass Actor - * @description An actor that can bypass rules in a ruleset - */ - "repository-ruleset-bypass-actor": { - /** @description The ID of the actor that can bypass a ruleset. Required for `Integration`, `RepositoryRole`, and `Team` actor types. If `actor_type` is `OrganizationAdmin`, this should be `1`. If `actor_type` is `DeployKey`, this should be null. `OrganizationAdmin` is not applicable for personal repositories. */ - actor_id?: number | null; - /** - * @description The type of actor that can bypass a ruleset. - * @enum {string} - */ - actor_type: - | "Integration" - | "OrganizationAdmin" - | "RepositoryRole" - | "Team" - | "DeployKey"; - /** - * @description When the specified actor can bypass the ruleset. `pull_request` means that an actor can only bypass rules on pull requests. `pull_request` is not applicable for the `DeployKey` actor type. Also, `pull_request` is only applicable to branch rulesets. When `bypass_mode` is `exempt`, rules will not be run for that actor and a bypass audit entry will not be created. - * @default always - * @enum {string} - */ - bypass_mode?: "always" | "pull_request" | "exempt"; - }; - /** - * Repository ruleset conditions for ref names - * @description Parameters for a repository ruleset ref name condition - */ - "repository-ruleset-conditions": { - ref_name?: { - /** @description Array of ref names or patterns to include. One of these patterns must match for the condition to pass. Also accepts `~DEFAULT_BRANCH` to include the default branch or `~ALL` to include all branches. */ - include?: string[]; - /** @description Array of ref names or patterns to exclude. The condition will not pass if any of these patterns match. */ - exclude?: string[]; - }; - }; - /** - * Repository ruleset conditions for repository names - * @description Parameters for a repository name condition - */ - "repository-ruleset-conditions-repository-name-target": { - repository_name: { - /** @description Array of repository names or patterns to include. One of these patterns must match for the condition to pass. Also accepts `~ALL` to include all repositories. */ - include?: string[]; - /** @description Array of repository names or patterns to exclude. The condition will not pass if any of these patterns match. */ - exclude?: string[]; - /** @description Whether renaming of target repositories is prevented. */ - protected?: boolean; - }; - }; - /** - * Repository ruleset conditions for repository IDs - * @description Parameters for a repository ID condition - */ - "repository-ruleset-conditions-repository-id-target": { - repository_id: { - /** @description The repository IDs that the ruleset applies to. One of these IDs must match for the condition to pass. */ - repository_ids?: number[]; - }; - }; - /** - * Repository ruleset property targeting definition - * @description Parameters for a targeting a repository property - */ - "repository-ruleset-conditions-repository-property-spec": { - /** @description The name of the repository property to target */ - name: string; - /** @description The values to match for the repository property */ - property_values: string[]; - /** - * @description The source of the repository property. Defaults to 'custom' if not specified. - * @enum {string} - */ - source?: "custom" | "system"; - }; - /** - * Repository ruleset conditions for repository properties - * @description Parameters for a repository property condition - */ - "repository-ruleset-conditions-repository-property-target": { - repository_property: { - /** @description The repository properties and values to include. All of these properties must match for the condition to pass. */ - include?: components["schemas"]["repository-ruleset-conditions-repository-property-spec"][]; - /** @description The repository properties and values to exclude. The condition will not pass if any of these properties match. */ - exclude?: components["schemas"]["repository-ruleset-conditions-repository-property-spec"][]; - }; - }; - /** - * Organization ruleset conditions - * @description Conditions for an organization ruleset. - * The branch and tag rulesets conditions object should contain both `repository_name` and `ref_name` properties, or both `repository_id` and `ref_name` properties, or both `repository_property` and `ref_name` properties. - * The push rulesets conditions object does not require the `ref_name` property. - * For repository policy rulesets, the conditions object should only contain the `repository_name`, the `repository_id`, or the `repository_property`. - */ - "org-ruleset-conditions": - | (components["schemas"]["repository-ruleset-conditions"] & - components["schemas"]["repository-ruleset-conditions-repository-name-target"]) - | (components["schemas"]["repository-ruleset-conditions"] & - components["schemas"]["repository-ruleset-conditions-repository-id-target"]) - | (components["schemas"]["repository-ruleset-conditions"] & - components["schemas"]["repository-ruleset-conditions-repository-property-target"]); - /** - * creation - * @description Only allow users with bypass permission to create matching refs. - */ - "repository-rule-creation": { - /** @enum {string} */ - type: "creation"; - }; - /** - * update - * @description Only allow users with bypass permission to update matching refs. - */ - "repository-rule-update": { - /** @enum {string} */ - type: "update"; - parameters?: { - /** @description Branch can pull changes from its upstream repository */ - update_allows_fetch_and_merge: boolean; - }; - }; - /** - * deletion - * @description Only allow users with bypass permissions to delete matching refs. - */ - "repository-rule-deletion": { - /** @enum {string} */ - type: "deletion"; - }; - /** - * required_linear_history - * @description Prevent merge commits from being pushed to matching refs. - */ - "repository-rule-required-linear-history": { - /** @enum {string} */ - type: "required_linear_history"; - }; - /** - * merge_queue - * @description Merges must be performed via a merge queue. - */ - "repository-rule-merge-queue": { - /** @enum {string} */ - type: "merge_queue"; - parameters?: { - /** @description Maximum time for a required status check to report a conclusion. After this much time has elapsed, checks that have not reported a conclusion will be assumed to have failed */ - check_response_timeout_minutes: number; - /** - * @description When set to ALLGREEN, the merge commit created by merge queue for each PR in the group must pass all required checks to merge. When set to HEADGREEN, only the commit at the head of the merge group, i.e. the commit containing changes from all of the PRs in the group, must pass its required checks to merge. - * @enum {string} - */ - grouping_strategy: "ALLGREEN" | "HEADGREEN"; - /** @description Limit the number of queued pull requests requesting checks and workflow runs at the same time. */ - max_entries_to_build: number; - /** @description The maximum number of PRs that will be merged together in a group. */ - max_entries_to_merge: number; - /** - * @description Method to use when merging changes from queued pull requests. - * @enum {string} - */ - merge_method: "MERGE" | "SQUASH" | "REBASE"; - /** @description The minimum number of PRs that will be merged together in a group. */ - min_entries_to_merge: number; - /** @description The time merge queue should wait after the first PR is added to the queue for the minimum group size to be met. After this time has elapsed, the minimum group size will be ignored and a smaller group will be merged. */ - min_entries_to_merge_wait_minutes: number; - }; - }; - /** - * required_deployments - * @description Choose which environments must be successfully deployed to before refs can be pushed into a ref that matches this rule. - */ - "repository-rule-required-deployments": { - /** @enum {string} */ - type: "required_deployments"; - parameters?: { - /** @description The environments that must be successfully deployed to before branches can be merged. */ - required_deployment_environments: string[]; - }; - }; - /** - * required_signatures - * @description Commits pushed to matching refs must have verified signatures. - */ - "repository-rule-required-signatures": { - /** @enum {string} */ - type: "required_signatures"; - }; - /** - * Reviewer - * @description A required reviewing team - */ - "repository-rule-params-reviewer": { - /** @description ID of the reviewer which must review changes to matching files. */ - id: number; - /** - * @description The type of the reviewer - * @enum {string} - */ - type: "Team"; - }; - /** - * RequiredReviewerConfiguration - * @description A reviewing team, and file patterns describing which files they must approve changes to. - */ - "repository-rule-params-required-reviewer-configuration": { - /** @description Array of file patterns. Pull requests which change matching files must be approved by the specified team. File patterns use the same syntax as `.gitignore` files. */ - file_patterns: string[]; - /** @description Minimum number of approvals required from the specified team. If set to zero, the team will be added to the pull request but approval is optional. */ - minimum_approvals: number; - reviewer: components["schemas"]["repository-rule-params-reviewer"]; - }; - /** - * pull_request - * @description Require all commits be made to a non-target branch and submitted via a pull request before they can be merged. - */ - "repository-rule-pull-request": { - /** @enum {string} */ - type: "pull_request"; - parameters?: { - /** @description Array of allowed merge methods. Allowed values include `merge`, `squash`, and `rebase`. At least one option must be enabled. */ - allowed_merge_methods?: ("merge" | "squash" | "rebase")[]; - /** @description Request Copilot code review for new pull requests automatically if the author has access to Copilot code review. */ - automatic_copilot_code_review_enabled?: boolean; - /** @description New, reviewable commits pushed will dismiss previous pull request review approvals. */ - dismiss_stale_reviews_on_push: boolean; - /** @description Require an approving review in pull requests that modify files that have a designated code owner. */ - require_code_owner_review: boolean; - /** @description Whether the most recent reviewable push must be approved by someone other than the person who pushed it. */ - require_last_push_approval: boolean; - /** @description The number of approving reviews that are required before a pull request can be merged. */ - required_approving_review_count: number; - /** @description All conversations on code must be resolved before a pull request can be merged. */ - required_review_thread_resolution: boolean; - }; - }; - /** - * StatusCheckConfiguration - * @description Required status check - */ - "repository-rule-params-status-check-configuration": { - /** @description The status check context name that must be present on the commit. */ - context: string; - /** @description The optional integration ID that this status check must originate from. */ - integration_id?: number; - }; - /** - * required_status_checks - * @description Choose which status checks must pass before the ref is updated. When enabled, commits must first be pushed to another ref where the checks pass. - */ - "repository-rule-required-status-checks": { - /** @enum {string} */ - type: "required_status_checks"; - parameters?: { - /** @description Allow repositories and branches to be created if a check would otherwise prohibit it. */ - do_not_enforce_on_create?: boolean; - /** @description Status checks that are required. */ - required_status_checks: components["schemas"]["repository-rule-params-status-check-configuration"][]; - /** @description Whether pull requests targeting a matching branch must be tested with the latest code. This setting will not take effect unless at least one status check is enabled. */ - strict_required_status_checks_policy: boolean; - }; - }; - /** - * non_fast_forward - * @description Prevent users with push access from force pushing to refs. - */ - "repository-rule-non-fast-forward": { - /** @enum {string} */ - type: "non_fast_forward"; - }; - /** - * commit_message_pattern - * @description Parameters to be used for the commit_message_pattern rule - */ - "repository-rule-commit-message-pattern": { - /** @enum {string} */ - type: "commit_message_pattern"; - parameters?: { - /** @description How this rule will appear to users. */ - name?: string; - /** @description If true, the rule will fail if the pattern matches. */ - negate?: boolean; - /** - * @description The operator to use for matching. - * @enum {string} - */ - operator: "starts_with" | "ends_with" | "contains" | "regex"; - /** @description The pattern to match with. */ - pattern: string; - }; - }; - /** - * commit_author_email_pattern - * @description Parameters to be used for the commit_author_email_pattern rule - */ - "repository-rule-commit-author-email-pattern": { - /** @enum {string} */ - type: "commit_author_email_pattern"; - parameters?: { - /** @description How this rule will appear to users. */ - name?: string; - /** @description If true, the rule will fail if the pattern matches. */ - negate?: boolean; - /** - * @description The operator to use for matching. - * @enum {string} - */ - operator: "starts_with" | "ends_with" | "contains" | "regex"; - /** @description The pattern to match with. */ - pattern: string; - }; - }; - /** - * committer_email_pattern - * @description Parameters to be used for the committer_email_pattern rule - */ - "repository-rule-committer-email-pattern": { - /** @enum {string} */ - type: "committer_email_pattern"; - parameters?: { - /** @description How this rule will appear to users. */ - name?: string; - /** @description If true, the rule will fail if the pattern matches. */ - negate?: boolean; - /** - * @description The operator to use for matching. - * @enum {string} - */ - operator: "starts_with" | "ends_with" | "contains" | "regex"; - /** @description The pattern to match with. */ - pattern: string; - }; - }; - /** - * branch_name_pattern - * @description Parameters to be used for the branch_name_pattern rule - */ - "repository-rule-branch-name-pattern": { - /** @enum {string} */ - type: "branch_name_pattern"; - parameters?: { - /** @description How this rule will appear to users. */ - name?: string; - /** @description If true, the rule will fail if the pattern matches. */ - negate?: boolean; - /** - * @description The operator to use for matching. - * @enum {string} - */ - operator: "starts_with" | "ends_with" | "contains" | "regex"; - /** @description The pattern to match with. */ - pattern: string; - }; - }; - /** - * tag_name_pattern - * @description Parameters to be used for the tag_name_pattern rule - */ - "repository-rule-tag-name-pattern": { - /** @enum {string} */ - type: "tag_name_pattern"; - parameters?: { - /** @description How this rule will appear to users. */ - name?: string; - /** @description If true, the rule will fail if the pattern matches. */ - negate?: boolean; - /** - * @description The operator to use for matching. - * @enum {string} - */ - operator: "starts_with" | "ends_with" | "contains" | "regex"; - /** @description The pattern to match with. */ - pattern: string; - }; - }; - /** - * file_path_restriction - * @description Prevent commits that include changes in specified file and folder paths from being pushed to the commit graph. This includes absolute paths that contain file names. - */ - "repository-rule-file-path-restriction": { - /** @enum {string} */ - type: "file_path_restriction"; - parameters?: { - /** @description The file paths that are restricted from being pushed to the commit graph. */ - restricted_file_paths: string[]; - }; - }; - /** - * max_file_path_length - * @description Prevent commits that include file paths that exceed the specified character limit from being pushed to the commit graph. - */ - "repository-rule-max-file-path-length": { - /** @enum {string} */ - type: "max_file_path_length"; - parameters?: { - /** @description The maximum amount of characters allowed in file paths. */ - max_file_path_length: number; - }; - }; - /** - * file_extension_restriction - * @description Prevent commits that include files with specified file extensions from being pushed to the commit graph. - */ - "repository-rule-file-extension-restriction": { - /** @enum {string} */ - type: "file_extension_restriction"; - parameters?: { - /** @description The file extensions that are restricted from being pushed to the commit graph. */ - restricted_file_extensions: string[]; - }; - }; - /** - * max_file_size - * @description Prevent commits with individual files that exceed the specified limit from being pushed to the commit graph. - */ - "repository-rule-max-file-size": { - /** @enum {string} */ - type: "max_file_size"; - parameters?: { - /** @description The maximum file size allowed in megabytes. This limit does not apply to Git Large File Storage (Git LFS). */ - max_file_size: number; - }; - }; - /** - * RestrictedCommits - * @description Restricted commit - */ - "repository-rule-params-restricted-commits": { - /** @description Full or abbreviated commit hash to reject */ - oid: string; - /** @description Reason for restriction */ - reason?: string; - }; - /** - * WorkflowFileReference - * @description A workflow that must run for this rule to pass - */ - "repository-rule-params-workflow-file-reference": { - /** @description The path to the workflow file */ - path: string; - /** @description The ref (branch or tag) of the workflow file to use */ - ref?: string; - /** @description The ID of the repository where the workflow is defined */ - repository_id: number; - /** @description The commit SHA of the workflow file to use */ - sha?: string; - }; - /** - * workflows - * @description Require all changes made to a targeted branch to pass the specified workflows before they can be merged. - */ - "repository-rule-workflows": { - /** @enum {string} */ - type: "workflows"; - parameters?: { - /** @description Allow repositories and branches to be created if a check would otherwise prohibit it. */ - do_not_enforce_on_create?: boolean; - /** @description Workflows that must pass for this rule to pass. */ - workflows: components["schemas"]["repository-rule-params-workflow-file-reference"][]; - }; - }; - /** - * CodeScanningTool - * @description A tool that must provide code scanning results for this rule to pass. - */ - "repository-rule-params-code-scanning-tool": { - /** - * @description The severity level at which code scanning results that raise alerts block a reference update. For more information on alert severity levels, see "[About code scanning alerts](https://docs.github.com/code-security/code-scanning/managing-code-scanning-alerts/about-code-scanning-alerts#about-alert-severity-and-security-severity-levels)." - * @enum {string} - */ - alerts_threshold: "none" | "errors" | "errors_and_warnings" | "all"; - /** - * @description The severity level at which code scanning results that raise security alerts block a reference update. For more information on security severity levels, see "[About code scanning alerts](https://docs.github.com/code-security/code-scanning/managing-code-scanning-alerts/about-code-scanning-alerts#about-alert-severity-and-security-severity-levels)." - * @enum {string} - */ - security_alerts_threshold: - | "none" - | "critical" - | "high_or_higher" - | "medium_or_higher" - | "all"; - /** @description The name of a code scanning tool */ - tool: string; - }; - /** - * code_scanning - * @description Choose which tools must provide code scanning results before the reference is updated. When configured, code scanning must be enabled and have results for both the commit and the reference being updated. - */ - "repository-rule-code-scanning": { - /** @enum {string} */ - type: "code_scanning"; - parameters?: { - /** @description Tools that must provide code scanning results for this rule to pass. */ - code_scanning_tools: components["schemas"]["repository-rule-params-code-scanning-tool"][]; - }; - }; - /** - * copilot_code_review - * @description Request Copilot code review for new pull requests automatically if the author has access to Copilot code review. - */ - "repository-rule-copilot-code-review": { - /** @enum {string} */ - type: "copilot_code_review"; - parameters?: { - /** @description Copilot automatically reviews draft pull requests before they are marked as ready for review. */ - review_draft_pull_requests?: boolean; - /** @description Copilot automatically reviews each new push to the pull request. */ - review_on_push?: boolean; - }; - }; - /** - * Repository Rule - * @description A repository rule. - */ - "repository-rule": - | components["schemas"]["repository-rule-creation"] - | components["schemas"]["repository-rule-update"] - | components["schemas"]["repository-rule-deletion"] - | components["schemas"]["repository-rule-required-linear-history"] - | components["schemas"]["repository-rule-merge-queue"] - | components["schemas"]["repository-rule-required-deployments"] - | components["schemas"]["repository-rule-required-signatures"] - | components["schemas"]["repository-rule-pull-request"] - | components["schemas"]["repository-rule-required-status-checks"] - | components["schemas"]["repository-rule-non-fast-forward"] - | components["schemas"]["repository-rule-commit-message-pattern"] - | components["schemas"]["repository-rule-commit-author-email-pattern"] - | components["schemas"]["repository-rule-committer-email-pattern"] - | components["schemas"]["repository-rule-branch-name-pattern"] - | components["schemas"]["repository-rule-tag-name-pattern"] - | components["schemas"]["repository-rule-file-path-restriction"] - | components["schemas"]["repository-rule-max-file-path-length"] - | components["schemas"]["repository-rule-file-extension-restriction"] - | components["schemas"]["repository-rule-max-file-size"] - | components["schemas"]["repository-rule-workflows"] - | components["schemas"]["repository-rule-code-scanning"] - | components["schemas"]["repository-rule-copilot-code-review"]; - /** - * Repository ruleset - * @description A set of rules to apply when specified conditions are met. - */ - "repository-ruleset": { - /** @description The ID of the ruleset */ - id: number; - /** @description The name of the ruleset */ - name: string; - /** - * @description The target of the ruleset - * @enum {string} - */ - target?: "branch" | "tag" | "push" | "repository"; - /** - * @description The type of the source of the ruleset - * @enum {string} - */ - source_type?: "Repository" | "Organization" | "Enterprise"; - /** @description The name of the source */ - source: string; - enforcement: components["schemas"]["repository-rule-enforcement"]; - /** @description The actors that can bypass the rules in this ruleset */ - bypass_actors?: components["schemas"]["repository-ruleset-bypass-actor"][]; - /** - * @description The bypass type of the user making the API request for this ruleset. This field is only returned when - * querying the repository-level endpoint. - * @enum {string} - */ - current_user_can_bypass?: - | "always" - | "pull_requests_only" - | "never" - | "exempt"; - node_id?: string; - _links?: { - self?: { - /** @description The URL of the ruleset */ - href?: string; - }; - html?: { - /** @description The html URL of the ruleset */ - href?: string; - } | null; - }; - conditions?: - | ( - | components["schemas"]["repository-ruleset-conditions"] - | components["schemas"]["org-ruleset-conditions"] - ) - | null; - rules?: components["schemas"]["repository-rule"][]; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - /** - * Repository Rule - * @description A repository rule. - */ - "org-rules": - | components["schemas"]["repository-rule-creation"] - | components["schemas"]["repository-rule-update"] - | components["schemas"]["repository-rule-deletion"] - | components["schemas"]["repository-rule-required-linear-history"] - | components["schemas"]["repository-rule-required-deployments"] - | components["schemas"]["repository-rule-required-signatures"] - | components["schemas"]["repository-rule-pull-request"] - | components["schemas"]["repository-rule-required-status-checks"] - | components["schemas"]["repository-rule-non-fast-forward"] - | components["schemas"]["repository-rule-commit-message-pattern"] - | components["schemas"]["repository-rule-commit-author-email-pattern"] - | components["schemas"]["repository-rule-committer-email-pattern"] - | components["schemas"]["repository-rule-branch-name-pattern"] - | components["schemas"]["repository-rule-tag-name-pattern"] - | components["schemas"]["repository-rule-file-path-restriction"] - | components["schemas"]["repository-rule-max-file-path-length"] - | components["schemas"]["repository-rule-file-extension-restriction"] - | components["schemas"]["repository-rule-max-file-size"] - | components["schemas"]["repository-rule-workflows"] - | components["schemas"]["repository-rule-code-scanning"]; - /** - * Rule Suites - * @description Response - */ - "rule-suites": { - /** @description The unique identifier of the rule insight. */ - id?: number; - /** @description The number that identifies the user. */ - actor_id?: number; - /** @description The handle for the GitHub user account. */ - actor_name?: string; - /** @description The first commit sha before the push evaluation. */ - before_sha?: string; - /** @description The last commit sha in the push evaluation. */ - after_sha?: string; - /** @description The ref name that the evaluation ran on. */ - ref?: string; - /** @description The ID of the repository associated with the rule evaluation. */ - repository_id?: number; - /** @description The name of the repository without the `.git` extension. */ - repository_name?: string; - /** - * Format: date-time - * @example 2011-01-26T19:06:43Z - */ - pushed_at?: string; - /** - * @description The result of the rule evaluations for rules with the `active` enforcement status. - * @enum {string} - */ - result?: "pass" | "fail" | "bypass"; - /** - * @description The result of the rule evaluations for rules with the `active` and `evaluate` enforcement statuses, demonstrating whether rules would pass or fail if all rules in the rule suite were `active`. - * @enum {string} - */ - evaluation_result?: "pass" | "fail" | "bypass"; - }[]; - /** - * Rule Suite - * @description Response - */ - "rule-suite": { - /** @description The unique identifier of the rule insight. */ - id?: number; - /** @description The number that identifies the user. */ - actor_id?: number | null; - /** @description The handle for the GitHub user account. */ - actor_name?: string | null; - /** @description The previous commit SHA of the ref. */ - before_sha?: string; - /** @description The new commit SHA of the ref. */ - after_sha?: string; - /** @description The ref name that the evaluation ran on. */ - ref?: string; - /** @description The ID of the repository associated with the rule evaluation. */ - repository_id?: number; - /** @description The name of the repository without the `.git` extension. */ - repository_name?: string; - /** - * Format: date-time - * @example 2011-01-26T19:06:43Z - */ - pushed_at?: string; - /** - * @description The result of the rule evaluations for rules with the `active` enforcement status. - * @enum {string} - */ - result?: "pass" | "fail" | "bypass"; - /** - * @description The result of the rule evaluations for rules with the `active` and `evaluate` enforcement statuses, demonstrating whether rules would pass or fail if all rules in the rule suite were `active`. Null if no rules with `evaluate` enforcement status were run. - * @enum {string|null} - */ - evaluation_result?: "pass" | "fail" | "bypass" | null; - /** @description Details on the evaluated rules. */ - rule_evaluations?: { - rule_source?: { - /** @description The type of rule source. */ - type?: string; - /** @description The ID of the rule source. */ - id?: number | null; - /** @description The name of the rule source. */ - name?: string | null; - }; - /** - * @description The enforcement level of this rule source. - * @enum {string} - */ - enforcement?: "active" | "evaluate" | "deleted ruleset"; - /** - * @description The result of the evaluation of the individual rule. - * @enum {string} - */ - result?: "pass" | "fail"; - /** @description The type of rule. */ - rule_type?: string; - /** @description The detailed failure message for the rule. Null if the rule passed. */ - details?: string | null; - }[]; - }; - /** - * Ruleset version - * @description The historical version of a ruleset - */ - "ruleset-version": { - /** @description The ID of the previous version of the ruleset */ - version_id: number; - /** @description The actor who updated the ruleset */ - actor: { - id?: number; - type?: string; - }; - /** Format: date-time */ - updated_at: string; - }; - "ruleset-version-with-state": components["schemas"]["ruleset-version"] & { - /** @description The state of the ruleset version */ - state: Record; - }; - /** - * Format: date-time - * @description The time that the alert was last updated in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - readonly "nullable-alert-updated-at": string | null; - /** - * @description Sets the state of the secret scanning alert. You must provide `resolution` when you set the state to `resolved`. - * @enum {string} - */ - "secret-scanning-alert-state": "open" | "resolved"; - /** - * @description **Required when the `state` is `resolved`.** The reason for resolving the alert. - * @enum {string|null} - */ - "secret-scanning-alert-resolution": - | "false_positive" - | "wont_fix" - | "revoked" - | "used_in_tests" - | null; - /** @description Represents a 'commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository. */ - "secret-scanning-location-commit": { - /** - * @description The file path in the repository - * @example /example/secrets.txt - */ - path: string; - /** @description Line number at which the secret starts in the file */ - start_line: number; - /** @description Line number at which the secret ends in the file */ - end_line: number; - /** @description The column at which the secret starts within the start line when the file is interpreted as 8BIT ASCII */ - start_column: number; - /** @description The column at which the secret ends within the end line when the file is interpreted as 8BIT ASCII */ - end_column: number; - /** - * @description SHA-1 hash ID of the associated blob - * @example af5626b4a114abcb82d63db7c8082c3c4756e51b - */ - blob_sha: string; - /** @description The API URL to get the associated blob resource */ - blob_url: string; - /** - * @description SHA-1 hash ID of the associated commit - * @example af5626b4a114abcb82d63db7c8082c3c4756e51b - */ - commit_sha: string; - /** @description The API URL to get the associated commit resource */ - commit_url: string; - }; - /** @description Represents a 'wiki_commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository wiki. */ - "secret-scanning-location-wiki-commit": { - /** - * @description The file path of the wiki page - * @example /example/Home.md - */ - path: string; - /** @description Line number at which the secret starts in the file */ - start_line: number; - /** @description Line number at which the secret ends in the file */ - end_line: number; - /** @description The column at which the secret starts within the start line when the file is interpreted as 8-bit ASCII. */ - start_column: number; - /** @description The column at which the secret ends within the end line when the file is interpreted as 8-bit ASCII. */ - end_column: number; - /** - * @description SHA-1 hash ID of the associated blob - * @example af5626b4a114abcb82d63db7c8082c3c4756e51b - */ - blob_sha: string; - /** - * @description The GitHub URL to get the associated wiki page - * @example https://github.com/octocat/Hello-World/wiki/Home/302c0b7e200761c9dd9b57e57db540ee0b4293a5 - */ - page_url: string; - /** - * @description SHA-1 hash ID of the associated commit - * @example 302c0b7e200761c9dd9b57e57db540ee0b4293a5 - */ - commit_sha: string; - /** - * @description The GitHub URL to get the associated wiki commit - * @example https://github.com/octocat/Hello-World/wiki/_compare/302c0b7e200761c9dd9b57e57db540ee0b4293a5 - */ - commit_url: string; - }; - /** @description Represents an 'issue_title' secret scanning location type. This location type shows that a secret was detected in the title of an issue. */ - "secret-scanning-location-issue-title": { - /** - * Format: uri - * @description The API URL to get the issue where the secret was detected. - * @example https://api.github.com/repos/octocat/Hello-World/issues/1347 - */ - issue_title_url: string; - }; - /** @description Represents an 'issue_body' secret scanning location type. This location type shows that a secret was detected in the body of an issue. */ - "secret-scanning-location-issue-body": { - /** - * Format: uri - * @description The API URL to get the issue where the secret was detected. - * @example https://api.github.com/repos/octocat/Hello-World/issues/1347 - */ - issue_body_url: string; - }; - /** @description Represents an 'issue_comment' secret scanning location type. This location type shows that a secret was detected in a comment on an issue. */ - "secret-scanning-location-issue-comment": { - /** - * Format: uri - * @description The API URL to get the issue comment where the secret was detected. - * @example https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451 - */ - issue_comment_url: string; - }; - /** @description Represents a 'discussion_title' secret scanning location type. This location type shows that a secret was detected in the title of a discussion. */ - "secret-scanning-location-discussion-title": { - /** - * Format: uri - * @description The URL to the discussion where the secret was detected. - * @example https://github.com/community/community/discussions/39082 - */ - discussion_title_url: string; - }; - /** @description Represents a 'discussion_body' secret scanning location type. This location type shows that a secret was detected in the body of a discussion. */ - "secret-scanning-location-discussion-body": { - /** - * Format: uri - * @description The URL to the discussion where the secret was detected. - * @example https://github.com/community/community/discussions/39082#discussion-4566270 - */ - discussion_body_url: string; - }; - /** @description Represents a 'discussion_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a discussion. */ - "secret-scanning-location-discussion-comment": { - /** - * Format: uri - * @description The API URL to get the discussion comment where the secret was detected. - * @example https://github.com/community/community/discussions/39082#discussioncomment-4158232 - */ - discussion_comment_url: string; - }; - /** @description Represents a 'pull_request_title' secret scanning location type. This location type shows that a secret was detected in the title of a pull request. */ - "secret-scanning-location-pull-request-title": { - /** - * Format: uri - * @description The API URL to get the pull request where the secret was detected. - * @example https://api.github.com/repos/octocat/Hello-World/pulls/2846 - */ - pull_request_title_url: string; - }; - /** @description Represents a 'pull_request_body' secret scanning location type. This location type shows that a secret was detected in the body of a pull request. */ - "secret-scanning-location-pull-request-body": { - /** - * Format: uri - * @description The API URL to get the pull request where the secret was detected. - * @example https://api.github.com/repos/octocat/Hello-World/pulls/2846 - */ - pull_request_body_url: string; - }; - /** @description Represents a 'pull_request_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a pull request. */ - "secret-scanning-location-pull-request-comment": { - /** - * Format: uri - * @description The API URL to get the pull request comment where the secret was detected. - * @example https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451 - */ - pull_request_comment_url: string; - }; - /** @description Represents a 'pull_request_review' secret scanning location type. This location type shows that a secret was detected in a review on a pull request. */ - "secret-scanning-location-pull-request-review": { - /** - * Format: uri - * @description The API URL to get the pull request review where the secret was detected. - * @example https://api.github.com/repos/octocat/Hello-World/pulls/2846/reviews/80 - */ - pull_request_review_url: string; - }; - /** @description Represents a 'pull_request_review_comment' secret scanning location type. This location type shows that a secret was detected in a review comment on a pull request. */ - "secret-scanning-location-pull-request-review-comment": { - /** - * Format: uri - * @description The API URL to get the pull request review comment where the secret was detected. - * @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/12 - */ - pull_request_review_comment_url: string; - }; - /** @description Details on the location where the token was initially detected. This can be a commit, wiki commit, issue, discussion, pull request. */ - "nullable-secret-scanning-first-detected-location": - | components["schemas"]["secret-scanning-location-commit"] - | components["schemas"]["secret-scanning-location-wiki-commit"] - | components["schemas"]["secret-scanning-location-issue-title"] - | components["schemas"]["secret-scanning-location-issue-body"] - | components["schemas"]["secret-scanning-location-issue-comment"] - | components["schemas"]["secret-scanning-location-discussion-title"] - | components["schemas"]["secret-scanning-location-discussion-body"] - | components["schemas"]["secret-scanning-location-discussion-comment"] - | components["schemas"]["secret-scanning-location-pull-request-title"] - | components["schemas"]["secret-scanning-location-pull-request-body"] - | components["schemas"]["secret-scanning-location-pull-request-comment"] - | components["schemas"]["secret-scanning-location-pull-request-review"] - | components["schemas"]["secret-scanning-location-pull-request-review-comment"] - | null; - "organization-secret-scanning-alert": { - number?: components["schemas"]["alert-number"]; - created_at?: components["schemas"]["alert-created-at"]; - updated_at?: components["schemas"]["nullable-alert-updated-at"]; - url?: components["schemas"]["alert-url"]; - html_url?: components["schemas"]["alert-html-url"]; - /** - * Format: uri - * @description The REST API URL of the code locations for this alert. - */ - locations_url?: string; - state?: components["schemas"]["secret-scanning-alert-state"]; - resolution?: components["schemas"]["secret-scanning-alert-resolution"]; - /** - * Format: date-time - * @description The time that the alert was resolved in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - resolved_at?: string | null; - resolved_by?: components["schemas"]["nullable-simple-user"]; - /** @description The type of secret that secret scanning detected. */ - secret_type?: string; - /** - * @description User-friendly name for the detected secret, matching the `secret_type`. - * For a list of built-in patterns, see "[Supported secret scanning patterns](https://docs.github.com/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." - */ - secret_type_display_name?: string; - /** @description The secret that was detected. */ - secret?: string; - repository?: components["schemas"]["simple-repository"]; - /** @description Whether push protection was bypassed for the detected secret. */ - push_protection_bypassed?: boolean | null; - push_protection_bypassed_by?: components["schemas"]["nullable-simple-user"]; - /** - * Format: date-time - * @description The time that push protection was bypassed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - push_protection_bypassed_at?: string | null; - push_protection_bypass_request_reviewer?: components["schemas"]["nullable-simple-user"]; - /** @description An optional comment when reviewing a push protection bypass. */ - push_protection_bypass_request_reviewer_comment?: string | null; - /** @description An optional comment when requesting a push protection bypass. */ - push_protection_bypass_request_comment?: string | null; - /** - * Format: uri - * @description The URL to a push protection bypass request. - */ - push_protection_bypass_request_html_url?: string | null; - /** @description The comment that was optionally added when this alert was closed */ - resolution_comment?: string | null; - /** - * @description The token status as of the latest validity check. - * @enum {string} - */ - validity?: "active" | "inactive" | "unknown"; - /** @description Whether the secret was publicly leaked. */ - publicly_leaked?: boolean | null; - /** @description Whether the detected secret was found in multiple repositories in the same organization or enterprise. */ - multi_repo?: boolean | null; - /** @description A boolean value representing whether or not alert is base64 encoded */ - is_base64_encoded?: boolean | null; - first_location_detected?: components["schemas"]["nullable-secret-scanning-first-detected-location"]; - /** @description A boolean value representing whether or not the token in the alert was detected in more than one location. */ - has_more_locations?: boolean; - assigned_to?: components["schemas"]["nullable-simple-user"]; - }; - /** @description The version of the entity. This is used to confirm you're updating the current version of the entity and mitigate unintentionally overriding someone else's update. */ - "secret-scanning-row-version": string | null; - "secret-scanning-pattern-override": { - /** @description The ID of the pattern. */ - token_type?: string; - /** @description The version of this pattern if it's a custom pattern. */ - custom_pattern_version?: string | null; - /** @description The slug of the pattern. */ - slug?: string; - /** @description The user-friendly name for the pattern. */ - display_name?: string; - /** @description The total number of alerts generated by this pattern. */ - alert_total?: number; - /** @description The percentage of all alerts that this pattern represents, rounded to the nearest integer. */ - alert_total_percentage?: number; - /** @description The number of false positive alerts generated by this pattern. */ - false_positives?: number; - /** @description The percentage of alerts from this pattern that are false positives, rounded to the nearest integer. */ - false_positive_rate?: number; - /** @description The percentage of blocks for this pattern that were bypassed, rounded to the nearest integer. */ - bypass_rate?: number; - /** - * @description The default push protection setting for this pattern. - * @enum {string} - */ - default_setting?: "disabled" | "enabled"; - /** - * @description The push protection setting for this pattern set at the enterprise level. Only present for partner patterns when the organization has a parent enterprise. - * @enum {string|null} - */ - enterprise_setting?: "not-set" | "disabled" | "enabled" | null; - /** - * @description The current push protection setting for this pattern. If this is `not-set`, then it inherits either the enterprise setting if it exists or the default setting. - * @enum {string} - */ - setting?: "not-set" | "disabled" | "enabled"; - }; - /** - * Secret scanning pattern configuration - * @description A collection of secret scanning patterns and their settings related to push protection. - */ - "secret-scanning-pattern-configuration": { - pattern_config_version?: components["schemas"]["secret-scanning-row-version"]; - /** @description Overrides for partner patterns. */ - provider_pattern_overrides?: components["schemas"]["secret-scanning-pattern-override"][]; - /** @description Overrides for custom patterns defined by the organization. */ - custom_pattern_overrides?: components["schemas"]["secret-scanning-pattern-override"][]; - }; - /** @description A product affected by the vulnerability detailed in a repository security advisory. */ - "repository-advisory-vulnerability": { - /** @description The name of the package affected by the vulnerability. */ - package: { - ecosystem: components["schemas"]["security-advisory-ecosystems"]; - /** @description The unique package name within its ecosystem. */ - name: string | null; - } | null; - /** @description The range of the package versions affected by the vulnerability. */ - vulnerable_version_range: string | null; - /** @description The package version(s) that resolve the vulnerability. */ - patched_versions: string | null; - /** @description The functions in the package that are affected. */ - vulnerable_functions: string[] | null; - }; - /** @description A credit given to a user for a repository security advisory. */ - "repository-advisory-credit": { - user: components["schemas"]["simple-user"]; - type: components["schemas"]["security-advisory-credit-types"]; - /** - * @description The state of the user's acceptance of the credit. - * @enum {string} - */ - state: "accepted" | "declined" | "pending"; - }; - /** @description A repository security advisory. */ - "repository-advisory": { - /** @description The GitHub Security Advisory ID. */ - ghsa_id: string; - /** @description The Common Vulnerabilities and Exposures (CVE) ID. */ - cve_id: string | null; - /** - * Format: uri - * @description The API URL for the advisory. - */ - url: string; - /** - * Format: uri - * @description The URL for the advisory. - */ - html_url: string; - /** @description A short summary of the advisory. */ - summary: string; - /** @description A detailed description of what the advisory entails. */ - description: string | null; - /** - * @description The severity of the advisory. - * @enum {string|null} - */ - severity: "critical" | "high" | "medium" | "low" | null; - /** @description The author of the advisory. */ - author: components["schemas"]["simple-user"] | null; - /** @description The publisher of the advisory. */ - publisher: components["schemas"]["simple-user"] | null; - identifiers: readonly { - /** - * @description The type of identifier. - * @enum {string} - */ - type: "CVE" | "GHSA"; - /** @description The identifier value. */ - value: string; - }[]; - /** - * @description The state of the advisory. - * @enum {string} - */ - state: "published" | "closed" | "withdrawn" | "draft" | "triage"; - /** - * Format: date-time - * @description The date and time of when the advisory was created, in ISO 8601 format. - */ - created_at: string | null; - /** - * Format: date-time - * @description The date and time of when the advisory was last updated, in ISO 8601 format. - */ - updated_at: string | null; - /** - * Format: date-time - * @description The date and time of when the advisory was published, in ISO 8601 format. - */ - published_at: string | null; - /** - * Format: date-time - * @description The date and time of when the advisory was closed, in ISO 8601 format. - */ - closed_at: string | null; - /** - * Format: date-time - * @description The date and time of when the advisory was withdrawn, in ISO 8601 format. - */ - withdrawn_at: string | null; - submission: { - /** @description Whether a private vulnerability report was accepted by the repository's administrators. */ - readonly accepted: boolean; - } | null; - vulnerabilities: - | components["schemas"]["repository-advisory-vulnerability"][] - | null; - cvss: { - /** @description The CVSS vector. */ - vector_string: string | null; - /** @description The CVSS score. */ - score: number | null; - } | null; - cvss_severities?: components["schemas"]["cvss-severities"]; - cwes: - | readonly { - /** @description The Common Weakness Enumeration (CWE) identifier. */ - cwe_id: string; - /** @description The name of the CWE. */ - name: string; - }[] - | null; - /** @description A list of only the CWE IDs. */ - cwe_ids: string[] | null; - credits: - | { - /** @description The username of the user credited. */ - login?: string; - type?: components["schemas"]["security-advisory-credit-types"]; - }[] - | null; - credits_detailed: - | readonly components["schemas"]["repository-advisory-credit"][] - | null; - /** @description A list of users that collaborate on the advisory. */ - collaborating_users: components["schemas"]["simple-user"][] | null; - /** @description A list of teams that collaborate on the advisory. */ - collaborating_teams: components["schemas"]["team"][] | null; - /** @description A temporary private fork of the advisory's repository for collaborating on a fix. */ - private_fork: components["schemas"]["simple-repository"] | null; - }; - "actions-billing-usage": { - /** @description The sum of the free and paid GitHub Actions minutes used. */ - total_minutes_used: number; - /** @description The total paid GitHub Actions minutes used. */ - total_paid_minutes_used: number; - /** @description The amount of free GitHub Actions minutes available. */ - included_minutes: number; - minutes_used_breakdown: { - /** @description Total minutes used on Ubuntu runner machines. */ - UBUNTU?: number; - /** @description Total minutes used on macOS runner machines. */ - MACOS?: number; - /** @description Total minutes used on Windows runner machines. */ - WINDOWS?: number; - /** @description Total minutes used on Ubuntu 4 core runner machines. */ - ubuntu_4_core?: number; - /** @description Total minutes used on Ubuntu 8 core runner machines. */ - ubuntu_8_core?: number; - /** @description Total minutes used on Ubuntu 16 core runner machines. */ - ubuntu_16_core?: number; - /** @description Total minutes used on Ubuntu 32 core runner machines. */ - ubuntu_32_core?: number; - /** @description Total minutes used on Ubuntu 64 core runner machines. */ - ubuntu_64_core?: number; - /** @description Total minutes used on Windows 4 core runner machines. */ - windows_4_core?: number; - /** @description Total minutes used on Windows 8 core runner machines. */ - windows_8_core?: number; - /** @description Total minutes used on Windows 16 core runner machines. */ - windows_16_core?: number; - /** @description Total minutes used on Windows 32 core runner machines. */ - windows_32_core?: number; - /** @description Total minutes used on Windows 64 core runner machines. */ - windows_64_core?: number; - /** @description Total minutes used on macOS 12 core runner machines. */ - macos_12_core?: number; - /** @description Total minutes used on all runner machines. */ - total?: number; - }; - }; - "packages-billing-usage": { - /** @description Sum of the free and paid storage space (GB) for GitHuub Packages. */ - total_gigabytes_bandwidth_used: number; - /** @description Total paid storage space (GB) for GitHuub Packages. */ - total_paid_gigabytes_bandwidth_used: number; - /** @description Free storage space (GB) for GitHub Packages. */ - included_gigabytes_bandwidth: number; - }; - "combined-billing-usage": { - /** @description Numbers of days left in billing cycle. */ - days_left_in_billing_cycle: number; - /** @description Estimated storage space (GB) used in billing cycle. */ - estimated_paid_storage_for_month: number; - /** @description Estimated sum of free and paid storage space (GB) used in billing cycle. */ - estimated_storage_for_month: number; - }; - /** - * Check immutable releases organization settings - * @description Check immutable releases settings for an organization. - */ - "immutable-releases-organization-settings": { - /** - * @description The policy that controls how immutable releases are enforced in the organization. - * @example all - * @enum {string} - */ - enforced_repositories: "all" | "none" | "selected"; - /** @description The API URL to use to get or set the selected repositories for immutable releases enforcement, when `enforced_repositories` is set to `selected`. */ - selected_repositories_url?: string; - }; - /** - * Hosted compute network configuration - * @description A hosted compute network configuration. - */ - "network-configuration": { - /** - * @description The unique identifier of the network configuration. - * @example 123ABC456DEF789 - */ - id: string; - /** - * @description The name of the network configuration. - * @example my-network-configuration - */ - name: string; - /** - * @description The hosted compute service the network configuration supports. - * @enum {string} - */ - compute_service?: "none" | "actions" | "codespaces"; - /** - * @description The unique identifier of each network settings in the configuration. - * @example 123ABC456DEF789 - */ - network_settings_ids?: string[]; - /** - * Format: date-time - * @description The time at which the network configuration was created, in ISO 8601 format. - * @example 2024-04-26T11:31:07Z - */ - created_on: string | null; - }; - /** - * Hosted compute network settings resource - * @description A hosted compute network settings resource. - */ - "network-settings": { - /** - * @description The unique identifier of the network settings resource. - * @example 220F78DACB92BBFBC5E6F22DE1CCF52309D - */ - id: string; - /** - * @description The identifier of the network configuration that is using this settings resource. - * @example 934E208B3EE0BD60CF5F752C426BFB53562 - */ - network_configuration_id?: string; - /** - * @description The name of the network settings resource. - * @example my-network-settings - */ - name: string; - /** - * @description The subnet this network settings resource is configured for. - * @example /subscriptions/14839728-3ad9-43ab-bd2b-fa6ad0f75e2a/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/my-vnet/subnets/my-subnet - */ - subnet_id: string; - /** - * @description The location of the subnet this network settings resource is configured for. - * @example eastus - */ - region: string; - }; - /** - * Team Organization - * @description Team Organization - */ - "team-organization": { - /** @example github */ - login: string; - /** @example 1 */ - id: number; - /** @example MDEyOk9yZ2FuaXphdGlvbjE= */ - node_id: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github - */ - url: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github/repos - */ - repos_url: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github/events - */ - events_url: string; - /** @example https://api.github.com/orgs/github/hooks */ - hooks_url: string; - /** @example https://api.github.com/orgs/github/issues */ - issues_url: string; - /** @example https://api.github.com/orgs/github/members{/member} */ - members_url: string; - /** @example https://api.github.com/orgs/github/public_members{/member} */ - public_members_url: string; - /** @example https://github.com/images/error/octocat_happy.gif */ - avatar_url: string; - /** @example A great organization */ - description: string | null; - /** @example github */ - name?: string; - /** @example GitHub */ - company?: string; - /** - * Format: uri - * @example https://github.com/blog - */ - blog?: string; - /** @example San Francisco */ - location?: string; - /** - * Format: email - * @example octocat@github.com - */ - email?: string; - /** @example github */ - twitter_username?: string | null; - /** @example true */ - is_verified?: boolean; - /** @example true */ - has_organization_projects: boolean; - /** @example true */ - has_repository_projects: boolean; - /** @example 2 */ - public_repos: number; - /** @example 1 */ - public_gists: number; - /** @example 20 */ - followers: number; - /** @example 0 */ - following: number; - /** - * Format: uri - * @example https://github.com/octocat - */ - html_url: string; - /** - * Format: date-time - * @example 2008-01-14T04:33:35Z - */ - created_at: string; - /** @example Organization */ - type: string; - /** @example 100 */ - total_private_repos?: number; - /** @example 100 */ - owned_private_repos?: number; - /** @example 81 */ - private_gists?: number | null; - /** @example 10000 */ - disk_usage?: number | null; - /** @example 8 */ - collaborators?: number | null; - /** - * Format: email - * @example org@example.com - */ - billing_email?: string | null; - plan?: { - name: string; - space: number; - private_repos: number; - filled_seats?: number; - seats?: number; - }; - default_repository_permission?: string | null; - /** @example true */ - members_can_create_repositories?: boolean | null; - /** @example true */ - two_factor_requirement_enabled?: boolean | null; - /** @example all */ - members_allowed_repository_creation_type?: string; - /** @example true */ - members_can_create_public_repositories?: boolean; - /** @example true */ - members_can_create_private_repositories?: boolean; - /** @example true */ - members_can_create_internal_repositories?: boolean; - /** @example true */ - members_can_create_pages?: boolean; - /** @example true */ - members_can_create_public_pages?: boolean; - /** @example true */ - members_can_create_private_pages?: boolean; - /** @example false */ - members_can_fork_private_repositories?: boolean | null; - /** @example false */ - web_commit_signoff_required?: boolean; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - archived_at: string | null; - }; - /** - * @description The [distinguished name](https://www.ldap.com/ldap-dns-and-rdns) (DN) of the LDAP entry to map to a team. - * @example cn=Enterprise Ops,ou=teams,dc=github,dc=com - */ - "ldap-dn": string; - /** - * Full Team - * @description Groups of organization members that gives permissions on specified repositories. - */ - "team-full": { - /** - * @description Unique identifier of the team - * @example 42 - */ - id: number; - /** @example MDQ6VGVhbTE= */ - node_id: string; - /** - * Format: uri - * @description URL for the team - * @example https://api.github.com/organizations/1/team/1 - */ - url: string; - /** - * Format: uri - * @example https://github.com/orgs/rails/teams/core - */ - html_url: string; - /** - * @description Name of the team - * @example Developers - */ - name: string; - /** @example justice-league */ - slug: string; - /** @example A great team. */ - description: string | null; - /** - * @description The level of privacy this team should have - * @example closed - * @enum {string} - */ - privacy?: "closed" | "secret"; - /** - * @description The notification setting the team has set - * @example notifications_enabled - * @enum {string} - */ - notification_setting?: "notifications_enabled" | "notifications_disabled"; - /** - * @description Permission that the team will have for its repositories - * @example push - */ - permission: string; - /** @example https://api.github.com/organizations/1/team/1/members{/member} */ - members_url: string; - /** - * Format: uri - * @example https://api.github.com/organizations/1/team/1/repos - */ - repositories_url: string; - parent?: components["schemas"]["nullable-team-simple"]; - /** @example 3 */ - members_count: number; - /** @example 10 */ - repos_count: number; - /** - * Format: date-time - * @example 2017-07-14T16:53:42Z - */ - created_at: string; - /** - * Format: date-time - * @example 2017-08-17T12:37:15Z - */ - updated_at: string; - organization: components["schemas"]["team-organization"]; - ldap_dn?: components["schemas"]["ldap-dn"]; - /** - * @description The ownership type of the team - * @enum {string} - */ - type: "enterprise" | "organization"; - /** - * @description Unique identifier of the organization to which this team belongs - * @example 37 - */ - organization_id?: number; - /** - * @description Unique identifier of the enterprise to which this team belongs - * @example 42 - */ - enterprise_id?: number; - }; - /** - * Team Discussion - * @description A team discussion is a persistent record of a free-form conversation within a team. - */ - "team-discussion": { - author: components["schemas"]["nullable-simple-user"]; - /** - * @description The main text of the discussion. - * @example Please suggest improvements to our workflow in comments. - */ - body: string; - /** @example

Hi! This is an area for us to collaborate as a team

*/ - body_html: string; - /** - * @description The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server. - * @example 0307116bbf7ced493b8d8a346c650b71 - */ - body_version: string; - /** @example 0 */ - comments_count: number; - /** - * Format: uri - * @example https://api.github.com/organizations/1/team/2343027/discussions/1/comments - */ - comments_url: string; - /** - * Format: date-time - * @example 2018-01-25T18:56:31Z - */ - created_at: string; - /** Format: date-time */ - last_edited_at: string | null; - /** - * Format: uri - * @example https://github.com/orgs/github/teams/justice-league/discussions/1 - */ - html_url: string; - /** @example MDE0OlRlYW1EaXNjdXNzaW9uMQ== */ - node_id: string; - /** - * @description The unique sequence number of a team discussion. - * @example 42 - */ - number: number; - /** - * @description Whether or not this discussion should be pinned for easy retrieval. - * @example true - */ - pinned: boolean; - /** - * @description Whether or not this discussion should be restricted to team members and organization owners. - * @example true - */ - private: boolean; - /** - * Format: uri - * @example https://api.github.com/organizations/1/team/2343027 - */ - team_url: string; - /** - * @description The title of the discussion. - * @example How can we improve our workflow? - */ - title: string; - /** - * Format: date-time - * @example 2018-01-25T18:56:31Z - */ - updated_at: string; - /** - * Format: uri - * @example https://api.github.com/organizations/1/team/2343027/discussions/1 - */ - url: string; - reactions?: components["schemas"]["reaction-rollup"]; - }; - /** - * Team Discussion Comment - * @description A reply to a discussion within a team. - */ - "team-discussion-comment": { - author: components["schemas"]["nullable-simple-user"]; - /** - * @description The main text of the comment. - * @example I agree with this suggestion. - */ - body: string; - /** @example

Do you like apples?

*/ - body_html: string; - /** - * @description The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server. - * @example 0307116bbf7ced493b8d8a346c650b71 - */ - body_version: string; - /** - * Format: date-time - * @example 2018-01-15T23:53:58Z - */ - created_at: string; - /** Format: date-time */ - last_edited_at: string | null; - /** - * Format: uri - * @example https://api.github.com/organizations/1/team/2403582/discussions/1 - */ - discussion_url: string; - /** - * Format: uri - * @example https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1 - */ - html_url: string; - /** @example MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE= */ - node_id: string; - /** - * @description The unique sequence number of a team discussion comment. - * @example 42 - */ - number: number; - /** - * Format: date-time - * @example 2018-01-15T23:53:58Z - */ - updated_at: string; - /** - * Format: uri - * @example https://api.github.com/organizations/1/team/2403582/discussions/1/comments/1 - */ - url: string; - reactions?: components["schemas"]["reaction-rollup"]; - }; - /** - * Reaction - * @description Reactions to conversations provide a way to help people express their feelings more simply and effectively. - */ - reaction: { - /** @example 1 */ - id: number; - /** @example MDg6UmVhY3Rpb24x */ - node_id: string; - user: components["schemas"]["nullable-simple-user"]; - /** - * @description The reaction to use - * @example heart - * @enum {string} - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - /** - * Format: date-time - * @example 2016-05-20T20:09:31Z - */ - created_at: string; - }; - /** - * Team Membership - * @description Team Membership - */ - "team-membership": { - /** Format: uri */ - url: string; - /** - * @description The role of the user in the team. - * @default member - * @example member - * @enum {string} - */ - role: "member" | "maintainer"; - /** - * @description The state of the user's membership in the team. - * @enum {string} - */ - state: "active" | "pending"; - }; - /** - * Team Project - * @description A team's access to a project. - */ - "team-project": { - owner_url: string; - url: string; - html_url: string; - columns_url: string; - id: number; - node_id: string; - name: string; - body: string | null; - number: number; - state: string; - creator: components["schemas"]["simple-user"]; - created_at: string; - updated_at: string; - /** @description The organization permission for this project. Only present when owner is an organization. */ - organization_permission?: string; - /** @description Whether the project is private or not. Only present when owner is an organization. */ - private?: boolean; - permissions: { - read: boolean; - write: boolean; - admin: boolean; - }; - }; - /** - * Team Repository - * @description A team's access to a repository. - */ - "team-repository": { - /** - * @description Unique identifier of the repository - * @example 42 - */ - id: number; - /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ - node_id: string; - /** - * @description The name of the repository. - * @example Team Environment - */ - name: string; - /** @example octocat/Hello-World */ - full_name: string; - license: components["schemas"]["nullable-license-simple"]; - forks: number; - permissions?: { - admin: boolean; - pull: boolean; - triage?: boolean; - push: boolean; - maintain?: boolean; - }; - /** @example admin */ - role_name?: string; - owner: components["schemas"]["nullable-simple-user"]; - /** - * @description Whether the repository is private or public. - * @default false - */ - private: boolean; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World - */ - html_url: string; - /** @example This your first repo! */ - description: string | null; - fork: boolean; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World - */ - url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ - archive_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ - assignees_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ - blobs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ - branches_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ - collaborators_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ - comments_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ - commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ - compare_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ - contents_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/contributors - */ - contributors_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/deployments - */ - deployments_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/downloads - */ - downloads_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/events - */ - events_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/forks - */ - forks_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ - git_commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ - git_refs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ - git_tags_url: string; - /** @example git:github.com/octocat/Hello-World.git */ - git_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ - issue_comment_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ - issue_events_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ - issues_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ - keys_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ - labels_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/languages - */ - languages_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/merges - */ - merges_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ - milestones_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ - notifications_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ - pulls_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ - releases_url: string; - /** @example git@github.com:octocat/Hello-World.git */ - ssh_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/stargazers - */ - stargazers_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ - statuses_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscribers - */ - subscribers_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscription - */ - subscription_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/tags - */ - tags_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/teams - */ - teams_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ - trees_url: string; - /** @example https://github.com/octocat/Hello-World.git */ - clone_url: string; - /** - * Format: uri - * @example git:git.example.com/octocat/Hello-World - */ - mirror_url: string | null; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/hooks - */ - hooks_url: string; - /** - * Format: uri - * @example https://svn.github.com/octocat/Hello-World - */ - svn_url: string; - /** - * Format: uri - * @example https://github.com - */ - homepage: string | null; - language: string | null; - /** @example 9 */ - forks_count: number; - /** @example 80 */ - stargazers_count: number; - /** @example 80 */ - watchers_count: number; - /** @example 108 */ - size: number; - /** - * @description The default branch of the repository. - * @example master - */ - default_branch: string; - /** @example 0 */ - open_issues_count: number; - /** - * @description Whether this repository acts as a template that can be used to generate new repositories. - * @default false - * @example true - */ - is_template?: boolean; - topics?: string[]; - /** - * @description Whether issues are enabled. - * @default true - * @example true - */ - has_issues: boolean; - /** - * @description Whether projects are enabled. - * @default true - * @example true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - * @example true - */ - has_wiki: boolean; - has_pages: boolean; - /** - * @description Whether downloads are enabled. - * @default true - * @example true - */ - has_downloads: boolean; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** @description Returns whether or not this repository disabled. */ - disabled: boolean; - /** - * @description The repository visibility: public, private, or internal. - * @default public - */ - visibility?: string; - /** - * Format: date-time - * @example 2011-01-26T19:06:43Z - */ - pushed_at: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - created_at: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:14:43Z - */ - updated_at: string | null; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - * @example true - */ - allow_rebase_merge?: boolean; - temp_clone_token?: string; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - * @example true - */ - allow_squash_merge?: boolean; - /** - * @description Whether to allow Auto-merge to be used on pull requests. - * @default false - * @example false - */ - allow_auto_merge?: boolean; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - * @example false - */ - delete_branch_on_merge?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - * @example true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow forking this repo - * @default false - * @example false - */ - allow_forking?: boolean; - /** - * @description Whether to require contributors to sign off on web-based commits - * @default false - * @example false - */ - web_commit_signoff_required?: boolean; - subscribers_count?: number; - network_count?: number; - open_issues: number; - watchers: number; - master_branch?: string; - }; - /** - * Project Column - * @description Project columns contain cards of work. - */ - "project-column": { - /** - * Format: uri - * @example https://api.github.com/projects/columns/367 - */ - url: string; - /** - * Format: uri - * @example https://api.github.com/projects/120 - */ - project_url: string; - /** - * Format: uri - * @example https://api.github.com/projects/columns/367/cards - */ - cards_url: string; - /** - * @description The unique identifier of the project column - * @example 42 - */ - id: number; - /** @example MDEzOlByb2plY3RDb2x1bW4zNjc= */ - node_id: string; - /** - * @description Name of the project column - * @example Remaining tasks - */ - name: string; - /** - * Format: date-time - * @example 2016-09-05T14:18:44Z - */ - created_at: string; - /** - * Format: date-time - * @example 2016-09-05T14:22:28Z - */ - updated_at: string; - }; - /** - * Project Collaborator Permission - * @description Project Collaborator Permission - */ - "project-collaborator-permission": { - permission: string; - user: components["schemas"]["nullable-simple-user"]; - }; - /** Rate Limit */ - "rate-limit": { - limit: number; - remaining: number; - reset: number; - used: number; - }; - /** - * Rate Limit Overview - * @description Rate Limit Overview - */ - "rate-limit-overview": { - resources: { - core: components["schemas"]["rate-limit"]; - graphql?: components["schemas"]["rate-limit"]; - search: components["schemas"]["rate-limit"]; - code_search?: components["schemas"]["rate-limit"]; - source_import?: components["schemas"]["rate-limit"]; - integration_manifest?: components["schemas"]["rate-limit"]; - code_scanning_upload?: components["schemas"]["rate-limit"]; - actions_runner_registration?: components["schemas"]["rate-limit"]; - scim?: components["schemas"]["rate-limit"]; - dependency_snapshots?: components["schemas"]["rate-limit"]; - dependency_sbom?: components["schemas"]["rate-limit"]; - code_scanning_autofix?: components["schemas"]["rate-limit"]; - }; - rate: components["schemas"]["rate-limit"]; - }; - /** - * Artifact - * @description An artifact - */ - artifact: { - /** @example 5 */ - id: number; - /** @example MDEwOkNoZWNrU3VpdGU1 */ - node_id: string; - /** - * @description The name of the artifact. - * @example AdventureWorks.Framework - */ - name: string; - /** - * @description The size in bytes of the artifact. - * @example 12345 - */ - size_in_bytes: number; - /** @example https://api.github.com/repos/github/hello-world/actions/artifacts/5 */ - url: string; - /** @example https://api.github.com/repos/github/hello-world/actions/artifacts/5/zip */ - archive_download_url: string; - /** @description Whether or not the artifact has expired. */ - expired: boolean; - /** Format: date-time */ - created_at: string | null; - /** Format: date-time */ - expires_at: string | null; - /** Format: date-time */ - updated_at: string | null; - /** - * @description The SHA256 digest of the artifact. This field will only be populated on artifacts uploaded with upload-artifact v4 or newer. For older versions, this field will be null. - * @example sha256:cfc3236bdad15b5898bca8408945c9e19e1917da8704adc20eaa618444290a8c - */ - digest?: string | null; - workflow_run?: { - /** @example 10 */ - id?: number; - /** @example 42 */ - repository_id?: number; - /** @example 42 */ - head_repository_id?: number; - /** @example main */ - head_branch?: string; - /** @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d */ - head_sha?: string; - } | null; - }; - /** - * Repository actions caches - * @description Repository actions caches - */ - "actions-cache-list": { - /** - * @description Total number of caches - * @example 2 - */ - total_count: number; - /** @description Array of caches */ - actions_caches: { - /** @example 2 */ - id?: number; - /** @example refs/heads/main */ - ref?: string; - /** @example Linux-node-958aff96db2d75d67787d1e634ae70b659de937b */ - key?: string; - /** @example 73885106f58cc52a7df9ec4d4a5622a5614813162cb516c759a30af6bf56e6f0 */ - version?: string; - /** - * Format: date-time - * @example 2019-01-24T22:45:36.000Z - */ - last_accessed_at?: string; - /** - * Format: date-time - * @example 2019-01-24T22:45:36.000Z - */ - created_at?: string; - /** @example 1024 */ - size_in_bytes?: number; - }[]; - }; - /** - * Job - * @description Information of a job execution in a workflow run - */ - job: { - /** - * @description The id of the job. - * @example 21 - */ - id: number; - /** - * @description The id of the associated workflow run. - * @example 5 - */ - run_id: number; - /** @example https://api.github.com/repos/github/hello-world/actions/runs/5 */ - run_url: string; - /** - * @description Attempt number of the associated workflow run, 1 for first attempt and higher if the workflow was re-run. - * @example 1 - */ - run_attempt?: number; - /** @example MDg6Q2hlY2tSdW40 */ - node_id: string; - /** - * @description The SHA of the commit that is being run. - * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d - */ - head_sha: string; - /** @example https://api.github.com/repos/github/hello-world/actions/jobs/21 */ - url: string; - /** @example https://github.com/github/hello-world/runs/4 */ - html_url: string | null; - /** - * @description The phase of the lifecycle that the job is currently in. - * @example queued - * @enum {string} - */ - status: - | "queued" - | "in_progress" - | "completed" - | "waiting" - | "requested" - | "pending"; - /** - * @description The outcome of the job. - * @example success - * @enum {string|null} - */ - conclusion: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "skipped" - | "timed_out" - | "action_required" - | null; - /** - * Format: date-time - * @description The time that the job created, in ISO 8601 format. - * @example 2019-08-08T08:00:00-07:00 - */ - created_at: string; - /** - * Format: date-time - * @description The time that the job started, in ISO 8601 format. - * @example 2019-08-08T08:00:00-07:00 - */ - started_at: string; - /** - * Format: date-time - * @description The time that the job finished, in ISO 8601 format. - * @example 2019-08-08T08:00:00-07:00 - */ - completed_at: string | null; - /** - * @description The name of the job. - * @example test-coverage - */ - name: string; - /** @description Steps in this job. */ - steps?: { - /** - * @description The phase of the lifecycle that the job is currently in. - * @example queued - * @enum {string} - */ - status: "queued" | "in_progress" | "completed"; - /** - * @description The outcome of the job. - * @example success - */ - conclusion: string | null; - /** - * @description The name of the job. - * @example test-coverage - */ - name: string; - /** @example 1 */ - number: number; - /** - * Format: date-time - * @description The time that the step started, in ISO 8601 format. - * @example 2019-08-08T08:00:00-07:00 - */ - started_at?: string | null; - /** - * Format: date-time - * @description The time that the job finished, in ISO 8601 format. - * @example 2019-08-08T08:00:00-07:00 - */ - completed_at?: string | null; - }[]; - /** @example https://api.github.com/repos/github/hello-world/check-runs/4 */ - check_run_url: string; - /** - * @description Labels for the workflow job. Specified by the "runs_on" attribute in the action's workflow file. - * @example [ - * "self-hosted", - * "foo", - * "bar" - * ] - */ - labels: string[]; - /** - * @description The ID of the runner to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.) - * @example 1 - */ - runner_id: number | null; - /** - * @description The name of the runner to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.) - * @example my runner - */ - runner_name: string | null; - /** - * @description The ID of the runner group to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.) - * @example 2 - */ - runner_group_id: number | null; - /** - * @description The name of the runner group to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.) - * @example my runner group - */ - runner_group_name: string | null; - /** - * @description The name of the workflow. - * @example Build - */ - workflow_name: string | null; - /** - * @description The name of the current branch. - * @example main - */ - head_branch: string | null; - }; - /** - * Actions OIDC subject customization for a repository - * @description Actions OIDC subject customization for a repository - */ - "oidc-custom-sub-repo": { - /** @description Whether to use the default template or not. If `true`, the `include_claim_keys` field is ignored. */ - use_default: boolean; - /** @description Array of unique strings. Each claim key can only contain alphanumeric characters and underscores. */ - include_claim_keys?: string[]; - }; - /** - * Actions Secret - * @description Set secrets for GitHub Actions. - */ - "actions-secret": { - /** - * @description The name of the secret. - * @example SECRET_TOKEN - */ - name: string; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - }; - /** Actions Variable */ - "actions-variable": { - /** - * @description The name of the variable. - * @example USERNAME - */ - name: string; - /** - * @description The value of the variable. - * @example octocat - */ - value: string; - /** - * Format: date-time - * @description The date and time at which the variable was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - * @example 2019-01-24T22:45:36.000Z - */ - created_at: string; - /** - * Format: date-time - * @description The date and time at which the variable was last updated, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - * @example 2019-01-24T22:45:36.000Z - */ - updated_at: string; - }; - /** @description Whether GitHub Actions is enabled on the repository. */ - "actions-enabled": boolean; - "actions-repository-permissions": { - enabled: components["schemas"]["actions-enabled"]; - allowed_actions?: components["schemas"]["allowed-actions"]; - selected_actions_url?: components["schemas"]["selected-actions-url"]; - sha_pinning_required?: components["schemas"]["sha-pinning-required"]; - }; - "actions-workflow-access-to-repository": { - /** - * @description Defines the level of access that workflows outside of the repository have to actions and reusable workflows within the - * repository. - * - * `none` means the access is only possible from workflows in this repository. `user` level access allows sharing across user owned private repositories only. `organization` level access allows sharing across the organization. - * @enum {string} - */ - access_level: "none" | "user" | "organization"; - }; - /** - * Referenced workflow - * @description A workflow referenced/reused by the initial caller workflow - */ - "referenced-workflow": { - path: string; - sha: string; - ref?: string; - }; - /** Pull Request Minimal */ - "pull-request-minimal": { - /** Format: int64 */ - id: number; - number: number; - url: string; - head: { - ref: string; - sha: string; - repo: { - /** Format: int64 */ - id: number; - url: string; - name: string; - }; - }; - base: { - ref: string; - sha: string; - repo: { - /** Format: int64 */ - id: number; - url: string; - name: string; - }; - }; - }; - /** - * Simple Commit - * @description A commit. - */ - "nullable-simple-commit": { - /** - * @description SHA for the commit - * @example 7638417db6d59f3c431d3e1f261cc637155684cd - */ - id: string; - /** @description SHA for the commit's tree */ - tree_id: string; - /** - * @description Message describing the purpose of the commit - * @example Fix #42 - */ - message: string; - /** - * Format: date-time - * @description Timestamp of the commit - * @example 2014-08-09T08:02:04+12:00 - */ - timestamp: string; - /** @description Information about the Git author */ - author: { - /** - * @description Name of the commit's author - * @example Monalisa Octocat - */ - name: string; - /** - * Format: email - * @description Git email address of the commit's author - * @example monalisa.octocat@example.com - */ - email: string; - } | null; - /** @description Information about the Git committer */ - committer: { - /** - * @description Name of the commit's committer - * @example Monalisa Octocat - */ - name: string; - /** - * Format: email - * @description Git email address of the commit's committer - * @example monalisa.octocat@example.com - */ - email: string; - } | null; - } | null; - /** - * Workflow Run - * @description An invocation of a workflow - */ - "workflow-run": { - /** - * @description The ID of the workflow run. - * @example 5 - */ - id: number; - /** - * @description The name of the workflow run. - * @example Build - */ - name?: string | null; - /** @example MDEwOkNoZWNrU3VpdGU1 */ - node_id: string; - /** - * @description The ID of the associated check suite. - * @example 42 - */ - check_suite_id?: number; - /** - * @description The node ID of the associated check suite. - * @example MDEwOkNoZWNrU3VpdGU0Mg== - */ - check_suite_node_id?: string; - /** @example master */ - head_branch: string | null; - /** - * @description The SHA of the head commit that points to the version of the workflow being run. - * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d - */ - head_sha: string; - /** - * @description The full path of the workflow - * @example octocat/octo-repo/.github/workflows/ci.yml@main - */ - path: string; - /** - * @description The auto incrementing run number for the workflow run. - * @example 106 - */ - run_number: number; - /** - * @description Attempt number of the run, 1 for first attempt and higher if the workflow was re-run. - * @example 1 - */ - run_attempt?: number; - referenced_workflows?: - | components["schemas"]["referenced-workflow"][] - | null; - /** @example push */ - event: string; - /** @example completed */ - status: string | null; - /** @example neutral */ - conclusion: string | null; - /** - * @description The ID of the parent workflow. - * @example 5 - */ - workflow_id: number; - /** - * @description The URL to the workflow run. - * @example https://api.github.com/repos/github/hello-world/actions/runs/5 - */ - url: string; - /** @example https://github.com/github/hello-world/suites/4 */ - html_url: string; - /** @description Pull requests that are open with a `head_sha` or `head_branch` that matches the workflow run. The returned pull requests do not necessarily indicate pull requests that triggered the run. */ - pull_requests: components["schemas"]["pull-request-minimal"][] | null; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - actor?: components["schemas"]["simple-user"]; - triggering_actor?: components["schemas"]["simple-user"]; - /** - * Format: date-time - * @description The start time of the latest run. Resets on re-run. - */ - run_started_at?: string; - /** - * @description The URL to the jobs for the workflow run. - * @example https://api.github.com/repos/github/hello-world/actions/runs/5/jobs - */ - jobs_url: string; - /** - * @description The URL to download the logs for the workflow run. - * @example https://api.github.com/repos/github/hello-world/actions/runs/5/logs - */ - logs_url: string; - /** - * @description The URL to the associated check suite. - * @example https://api.github.com/repos/github/hello-world/check-suites/12 - */ - check_suite_url: string; - /** - * @description The URL to the artifacts for the workflow run. - * @example https://api.github.com/repos/github/hello-world/actions/runs/5/rerun/artifacts - */ - artifacts_url: string; - /** - * @description The URL to cancel the workflow run. - * @example https://api.github.com/repos/github/hello-world/actions/runs/5/cancel - */ - cancel_url: string; - /** - * @description The URL to rerun the workflow run. - * @example https://api.github.com/repos/github/hello-world/actions/runs/5/rerun - */ - rerun_url: string; - /** - * @description The URL to the previous attempted run of this workflow, if one exists. - * @example https://api.github.com/repos/github/hello-world/actions/runs/5/attempts/3 - */ - previous_attempt_url?: string | null; - /** - * @description The URL to the workflow. - * @example https://api.github.com/repos/github/hello-world/actions/workflows/main.yaml - */ - workflow_url: string; - head_commit: components["schemas"]["nullable-simple-commit"]; - repository: components["schemas"]["minimal-repository"]; - head_repository: components["schemas"]["minimal-repository"]; - /** @example 5 */ - head_repository_id?: number; - /** - * @description The event-specific title associated with the run or the run-name if set, or the value of `run-name` if it is set in the workflow. - * @example Simple Workflow - */ - display_title: string; - }; - /** - * Environment Approval - * @description An entry in the reviews log for environment deployments - */ - "environment-approvals": { - /** @description The list of environments that were approved or rejected */ - environments: { - /** - * @description The id of the environment. - * @example 56780428 - */ - id?: number; - /** @example MDExOkVudmlyb25tZW50NTY3ODA0Mjg= */ - node_id?: string; - /** - * @description The name of the environment. - * @example staging - */ - name?: string; - /** @example https://api.github.com/repos/github/hello-world/environments/staging */ - url?: string; - /** @example https://github.com/github/hello-world/deployments/activity_log?environments_filter=staging */ - html_url?: string; - /** - * Format: date-time - * @description The time that the environment was created, in ISO 8601 format. - * @example 2020-11-23T22:00:40Z - */ - created_at?: string; - /** - * Format: date-time - * @description The time that the environment was last updated, in ISO 8601 format. - * @example 2020-11-23T22:00:40Z - */ - updated_at?: string; - }[]; - /** - * @description Whether deployment to the environment(s) was approved or rejected or pending (with comments) - * @example approved - * @enum {string} - */ - state: "approved" | "rejected" | "pending"; - user: components["schemas"]["simple-user"]; - /** - * @description The comment submitted with the deployment review - * @example Ship it! - */ - comment: string; - }; - "review-custom-gates-comment-required": { - /** @description The name of the environment to approve or reject. */ - environment_name: string; - /** @description Comment associated with the pending deployment protection rule. **Required when state is not provided.** */ - comment: string; - }; - "review-custom-gates-state-required": { - /** @description The name of the environment to approve or reject. */ - environment_name: string; - /** - * @description Whether to approve or reject deployment to the specified environments. - * @enum {string} - */ - state: "approved" | "rejected"; - /** @description Optional comment to include with the review. */ - comment?: string; - }; - /** - * @description The type of reviewer. - * @example User - * @enum {string} - */ - "deployment-reviewer-type": "User" | "Team"; - /** - * Pending Deployment - * @description Details of a deployment that is waiting for protection rules to pass - */ - "pending-deployment": { - environment: { - /** - * Format: int64 - * @description The id of the environment. - * @example 56780428 - */ - id?: number; - /** @example MDExOkVudmlyb25tZW50NTY3ODA0Mjg= */ - node_id?: string; - /** - * @description The name of the environment. - * @example staging - */ - name?: string; - /** @example https://api.github.com/repos/github/hello-world/environments/staging */ - url?: string; - /** @example https://github.com/github/hello-world/deployments/activity_log?environments_filter=staging */ - html_url?: string; - }; - /** - * @description The set duration of the wait timer - * @example 30 - */ - wait_timer: number; - /** - * Format: date-time - * @description The time that the wait timer began. - * @example 2020-11-23T22:00:40Z - */ - wait_timer_started_at: string | null; - /** - * @description Whether the currently authenticated user can approve the deployment - * @example true - */ - current_user_can_approve: boolean; - /** @description The people or teams that may approve jobs that reference the environment. You can list up to six users or teams as reviewers. The reviewers must have at least read access to the repository. Only one of the required reviewers needs to approve the job for it to proceed. */ - reviewers: { - type?: components["schemas"]["deployment-reviewer-type"]; - reviewer?: - | components["schemas"]["simple-user"] - | components["schemas"]["team"]; - }[]; - }; - /** - * Deployment - * @description A request for a specific ref(branch,sha,tag) to be deployed - */ - deployment: { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/example/deployments/1 - */ - url: string; - /** - * Format: int64 - * @description Unique identifier of the deployment - * @example 42 - */ - id: number; - /** @example MDEwOkRlcGxveW1lbnQx */ - node_id: string; - /** @example a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d */ - sha: string; - /** - * @description The ref to deploy. This can be a branch, tag, or sha. - * @example topic-branch - */ - ref: string; - /** - * @description Parameter to specify a task to execute - * @example deploy - */ - task: string; - payload: OneOf< - [ - { - [key: string]: unknown; - }, - string, - ] - >; - /** @example staging */ - original_environment?: string; - /** - * @description Name for the target deployment environment. - * @example production - */ - environment: string; - /** @example Deploy request from hubot */ - description: string | null; - creator: components["schemas"]["nullable-simple-user"]; - /** - * Format: date-time - * @example 2012-07-20T01:19:13Z - */ - created_at: string; - /** - * Format: date-time - * @example 2012-07-20T01:19:13Z - */ - updated_at: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/example/deployments/1/statuses - */ - statuses_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/example - */ - repository_url: string; - /** - * @description Specifies if the given environment is will no longer exist at some point in the future. Default: false. - * @example true - */ - transient_environment?: boolean; - /** - * @description Specifies if the given environment is one that end-users directly interact with. Default: false. - * @example true - */ - production_environment?: boolean; - performed_via_github_app?: components["schemas"]["nullable-integration"]; - }; - /** - * Workflow Run Usage - * @description Workflow Run Usage - */ - "workflow-run-usage": { - billable: { - UBUNTU?: { - total_ms: number; - jobs: number; - job_runs?: { - job_id: number; - duration_ms: number; - }[]; - }; - MACOS?: { - total_ms: number; - jobs: number; - job_runs?: { - job_id: number; - duration_ms: number; - }[]; - }; - WINDOWS?: { - total_ms: number; - jobs: number; - job_runs?: { - job_id: number; - duration_ms: number; - }[]; - }; - }; - run_duration_ms?: number; - }; - /** - * Workflow - * @description A GitHub Actions workflow - */ - workflow: { - /** @example 5 */ - id: number; - /** @example MDg6V29ya2Zsb3cxMg== */ - node_id: string; - /** @example CI */ - name: string; - /** @example ruby.yaml */ - path: string; - /** - * @example active - * @enum {string} - */ - state: - | "active" - | "deleted" - | "disabled_fork" - | "disabled_inactivity" - | "disabled_manually"; - /** - * Format: date-time - * @example 2019-12-06T14:20:20.000Z - */ - created_at: string; - /** - * Format: date-time - * @example 2019-12-06T14:20:20.000Z - */ - updated_at: string; - /** @example https://api.github.com/repos/actions/setup-ruby/workflows/5 */ - url: string; - /** @example https://github.com/actions/setup-ruby/blob/master/.github/workflows/ruby.yaml */ - html_url: string; - /** @example https://github.com/actions/setup-ruby/workflows/CI/badge.svg */ - badge_url: string; - /** - * Format: date-time - * @example 2019-12-06T14:20:20.000Z - */ - deleted_at?: string; - }; - /** - * Workflow Usage - * @description Workflow Usage - */ - "workflow-usage": { - billable: { - UBUNTU?: { - total_ms?: number; - }; - MACOS?: { - total_ms?: number; - }; - WINDOWS?: { - total_ms?: number; - }; - }; - }; - /** - * Activity - * @description Activity - */ - activity: { - /** @example 1296269 */ - id: number; - /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ - node_id: string; - /** - * @description The SHA of the commit before the activity. - * @example 6dcb09b5b57875f334f61aebed695e2e4193db5e - */ - before: string; - /** - * @description The SHA of the commit after the activity. - * @example 827efc6d56897b048c772eb4087f854f46256132 - */ - after: string; - /** - * @description The full Git reference, formatted as `refs/heads/`. - * @example refs/heads/main - */ - ref: string; - /** - * Format: date-time - * @description The time when the activity occurred. - * @example 2011-01-26T19:06:43Z - */ - timestamp: string; - /** - * @description The type of the activity that was performed. - * @example force_push - * @enum {string} - */ - activity_type: - | "push" - | "force_push" - | "branch_deletion" - | "branch_creation" - | "pr_merge" - | "merge_queue_merge"; - actor: components["schemas"]["nullable-simple-user"]; - }; - /** - * Autolink reference - * @description An autolink reference. - */ - autolink: { - /** @example 3 */ - id: number; - /** - * @description The prefix of a key that is linkified. - * @example TICKET- - */ - key_prefix: string; - /** - * @description A template for the target URL that is generated if a key was found. - * @example https://example.com/TICKET?query= - */ - url_template: string; - /** - * @description Whether this autolink reference matches alphanumeric characters. If false, this autolink reference only matches numeric characters. - * @example true - */ - is_alphanumeric: boolean; - /** Format: date-time */ - updated_at?: string | null; - }; - /** - * Check Dependabot security updates - * @description Check Dependabot security updates - */ - "check-automated-security-fixes": { - /** - * @description Whether Dependabot security updates are enabled for the repository. - * @example true - */ - enabled: boolean; - /** - * @description Whether Dependabot security updates are paused for the repository. - * @example false - */ - paused: boolean; - }; - /** - * Protected Branch Required Status Check - * @description Protected Branch Required Status Check - */ - "protected-branch-required-status-check": { - url?: string; - enforcement_level?: string; - contexts: string[]; - checks: { - context: string; - app_id: number | null; - }[]; - contexts_url?: string; - strict?: boolean; - }; - /** - * Protected Branch Admin Enforced - * @description Protected Branch Admin Enforced - */ - "protected-branch-admin-enforced": { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins - */ - url: string; - /** @example true */ - enabled: boolean; - }; - /** - * Protected Branch Pull Request Review - * @description Protected Branch Pull Request Review - */ - "protected-branch-pull-request-review": { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions - */ - url?: string; - dismissal_restrictions?: { - /** @description The list of users with review dismissal access. */ - users?: components["schemas"]["simple-user"][]; - /** @description The list of teams with review dismissal access. */ - teams?: components["schemas"]["team"][]; - /** @description The list of apps with review dismissal access. */ - apps?: components["schemas"]["integration"][]; - /** @example "https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions" */ - url?: string; - /** @example "https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/users" */ - users_url?: string; - /** @example "https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/teams" */ - teams_url?: string; - }; - /** @description Allow specific users, teams, or apps to bypass pull request requirements. */ - bypass_pull_request_allowances?: { - /** @description The list of users allowed to bypass pull request requirements. */ - users?: components["schemas"]["simple-user"][]; - /** @description The list of teams allowed to bypass pull request requirements. */ - teams?: components["schemas"]["team"][]; - /** @description The list of apps allowed to bypass pull request requirements. */ - apps?: components["schemas"]["integration"][]; - }; - /** @example true */ - dismiss_stale_reviews: boolean; - /** @example true */ - require_code_owner_reviews: boolean; - /** @example 2 */ - required_approving_review_count?: number; - /** - * @description Whether the most recent push must be approved by someone other than the person who pushed it. - * @default false - * @example true - */ - require_last_push_approval?: boolean; - }; - /** - * Branch Restriction Policy - * @description Branch Restriction Policy - */ - "branch-restriction-policy": { - /** Format: uri */ - url: string; - /** Format: uri */ - users_url: string; - /** Format: uri */ - teams_url: string; - /** Format: uri */ - apps_url: string; - users: { - login?: string; - /** Format: int64 */ - id?: number; - node_id?: string; - avatar_url?: string; - gravatar_id?: string; - url?: string; - html_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - starred_url?: string; - subscriptions_url?: string; - organizations_url?: string; - repos_url?: string; - events_url?: string; - received_events_url?: string; - type?: string; - site_admin?: boolean; - user_view_type?: string; - }[]; - teams: components["schemas"]["team"][]; - apps: { - id?: number; - slug?: string; - node_id?: string; - owner?: { - login?: string; - id?: number; - node_id?: string; - url?: string; - repos_url?: string; - events_url?: string; - hooks_url?: string; - issues_url?: string; - members_url?: string; - public_members_url?: string; - avatar_url?: string; - description?: string; - /** @example "" */ - gravatar_id?: string; - /** @example "https://github.com/testorg-ea8ec76d71c3af4b" */ - html_url?: string; - /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/followers" */ - followers_url?: string; - /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/following{/other_user}" */ - following_url?: string; - /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/gists{/gist_id}" */ - gists_url?: string; - /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/starred{/owner}{/repo}" */ - starred_url?: string; - /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/subscriptions" */ - subscriptions_url?: string; - /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/orgs" */ - organizations_url?: string; - /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/received_events" */ - received_events_url?: string; - /** @example "Organization" */ - type?: string; - /** @example false */ - site_admin?: boolean; - /** @example public */ - user_view_type?: string; - }; - name?: string; - client_id?: string; - description?: string; - external_url?: string; - html_url?: string; - created_at?: string; - updated_at?: string; - permissions?: { - metadata?: string; - contents?: string; - issues?: string; - single_file?: string; - }; - events?: string[]; - }[]; - }; - /** - * Branch Protection - * @description Branch Protection - */ - "branch-protection": { - url?: string; - enabled?: boolean; - required_status_checks?: components["schemas"]["protected-branch-required-status-check"]; - enforce_admins?: components["schemas"]["protected-branch-admin-enforced"]; - required_pull_request_reviews?: components["schemas"]["protected-branch-pull-request-review"]; - restrictions?: components["schemas"]["branch-restriction-policy"]; - required_linear_history?: { - enabled?: boolean; - }; - allow_force_pushes?: { - enabled?: boolean; - }; - allow_deletions?: { - enabled?: boolean; - }; - block_creations?: { - enabled?: boolean; - }; - required_conversation_resolution?: { - enabled?: boolean; - }; - /** @example "branch/with/protection" */ - name?: string; - /** @example "https://api.github.com/repos/owner-79e94e2d36b3fd06a32bb213/AAA_Public_Repo/branches/branch/with/protection/protection" */ - protection_url?: string; - required_signatures?: { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures - */ - url: string; - /** @example true */ - enabled: boolean; - }; - /** @description Whether to set the branch as read-only. If this is true, users will not be able to push to the branch. */ - lock_branch?: { - /** @default false */ - enabled?: boolean; - }; - /** @description Whether users can pull changes from upstream when the branch is locked. Set to `true` to allow fork syncing. Set to `false` to prevent fork syncing. */ - allow_fork_syncing?: { - /** @default false */ - enabled?: boolean; - }; - }; - /** - * Short Branch - * @description Short Branch - */ - "short-branch": { - name: string; - commit: { - sha: string; - /** Format: uri */ - url: string; - }; - protected: boolean; - protection?: components["schemas"]["branch-protection"]; - /** Format: uri */ - protection_url?: string; - }; - /** - * Git User - * @description Metaproperties for Git author/committer information. - */ - "nullable-git-user": { - /** @example "Chris Wanstrath" */ - name?: string; - /** @example "chris@ozmm.org" */ - email?: string; - /** @example "2007-10-29T02:42:39.000-07:00" */ - date?: string; - } | null; - /** Verification */ - verification: { - verified: boolean; - reason: string; - payload: string | null; - signature: string | null; - verified_at: string | null; - }; - /** - * Diff Entry - * @description Diff Entry - */ - "diff-entry": { - /** @example bbcd538c8e72b8c175046e27cc8f907076331401 */ - sha: string | null; - /** @example file1.txt */ - filename: string; - /** - * @example added - * @enum {string} - */ - status: - | "added" - | "removed" - | "modified" - | "renamed" - | "copied" - | "changed" - | "unchanged"; - /** @example 103 */ - additions: number; - /** @example 21 */ - deletions: number; - /** @example 124 */ - changes: number; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/blob/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt - */ - blob_url: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/raw/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt - */ - raw_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/contents/file1.txt?ref=6dcb09b5b57875f334f61aebed695e2e4193db5e - */ - contents_url: string; - /** @example @@ -132,7 +132,7 @@ module Test @@ -1000,7 +1000,7 @@ module Test */ - patch?: string; - /** @example file.txt */ - previous_filename?: string; - }; - /** - * Commit - * @description Commit - */ - commit: { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e - */ - url: string; - /** @example 6dcb09b5b57875f334f61aebed695e2e4193db5e */ - sha: string; - /** @example MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ== */ - node_id: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments - */ - comments_url: string; - commit: { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e - */ - url: string; - author: components["schemas"]["nullable-git-user"]; - committer: components["schemas"]["nullable-git-user"]; - /** @example Fix all the bugs */ - message: string; - /** @example 0 */ - comment_count: number; - tree: { - /** @example 827efc6d56897b048c772eb4087f854f46256132 */ - sha: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/tree/827efc6d56897b048c772eb4087f854f46256132 - */ - url: string; - }; - verification?: components["schemas"]["verification"]; - }; - author: - | components["schemas"]["simple-user"] - | components["schemas"]["empty-object"] - | null; - committer: - | components["schemas"]["simple-user"] - | components["schemas"]["empty-object"] - | null; - parents: { - /** @example 7638417db6d59f3c431d3e1f261cc637155684cd */ - sha: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd - */ - url: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd - */ - html_url?: string; - }[]; - stats?: { - additions?: number; - deletions?: number; - total?: number; - }; - files?: components["schemas"]["diff-entry"][]; - }; - /** - * Branch With Protection - * @description Branch With Protection - */ - "branch-with-protection": { - name: string; - commit: components["schemas"]["commit"]; - _links: { - html: string; - /** Format: uri */ - self: string; - }; - protected: boolean; - protection: components["schemas"]["branch-protection"]; - /** Format: uri */ - protection_url: string; - /** @example "mas*" */ - pattern?: string; - /** @example 1 */ - required_approving_review_count?: number; - }; - /** - * Status Check Policy - * @description Status Check Policy - */ - "status-check-policy": { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks - */ - url: string; - /** @example true */ - strict: boolean; - /** - * @example [ - * "continuous-integration/travis-ci" - * ] - */ - contexts: string[]; - checks: { - /** @example continuous-integration/travis-ci */ - context: string; - app_id: number | null; - }[]; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts - */ - contexts_url: string; - }; - /** - * Protected Branch - * @description Branch protections protect branches - */ - "protected-branch": { - /** Format: uri */ - url: string; - required_status_checks?: components["schemas"]["status-check-policy"]; - required_pull_request_reviews?: { - /** Format: uri */ - url: string; - dismiss_stale_reviews?: boolean; - require_code_owner_reviews?: boolean; - required_approving_review_count?: number; - /** - * @description Whether the most recent push must be approved by someone other than the person who pushed it. - * @default false - */ - require_last_push_approval?: boolean; - dismissal_restrictions?: { - /** Format: uri */ - url: string; - /** Format: uri */ - users_url: string; - /** Format: uri */ - teams_url: string; - users: components["schemas"]["simple-user"][]; - teams: components["schemas"]["team"][]; - apps?: components["schemas"]["integration"][]; - }; - bypass_pull_request_allowances?: { - users: components["schemas"]["simple-user"][]; - teams: components["schemas"]["team"][]; - apps?: components["schemas"]["integration"][]; - }; - }; - required_signatures?: { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures - */ - url: string; - /** @example true */ - enabled: boolean; - }; - enforce_admins?: { - /** Format: uri */ - url: string; - enabled: boolean; - }; - required_linear_history?: { - enabled: boolean; - }; - allow_force_pushes?: { - enabled: boolean; - }; - allow_deletions?: { - enabled: boolean; - }; - restrictions?: components["schemas"]["branch-restriction-policy"]; - required_conversation_resolution?: { - enabled?: boolean; - }; - block_creations?: { - enabled: boolean; - }; - /** @description Whether to set the branch as read-only. If this is true, users will not be able to push to the branch. */ - lock_branch?: { - /** @default false */ - enabled?: boolean; - }; - /** @description Whether users can pull changes from upstream when the branch is locked. Set to `true` to allow fork syncing. Set to `false` to prevent fork syncing. */ - allow_fork_syncing?: { - /** @default false */ - enabled?: boolean; - }; - }; - /** - * Deployment - * @description A deployment created as the result of an Actions check run from a workflow that references an environment - */ - "deployment-simple": { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/example/deployments/1 - */ - url: string; - /** - * @description Unique identifier of the deployment - * @example 42 - */ - id: number; - /** @example MDEwOkRlcGxveW1lbnQx */ - node_id: string; - /** - * @description Parameter to specify a task to execute - * @example deploy - */ - task: string; - /** @example staging */ - original_environment?: string; - /** - * @description Name for the target deployment environment. - * @example production - */ - environment: string; - /** @example Deploy request from hubot */ - description: string | null; - /** - * Format: date-time - * @example 2012-07-20T01:19:13Z - */ - created_at: string; - /** - * Format: date-time - * @example 2012-07-20T01:19:13Z - */ - updated_at: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/example/deployments/1/statuses - */ - statuses_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/example - */ - repository_url: string; - /** - * @description Specifies if the given environment is will no longer exist at some point in the future. Default: false. - * @example true - */ - transient_environment?: boolean; - /** - * @description Specifies if the given environment is one that end-users directly interact with. Default: false. - * @example true - */ - production_environment?: boolean; - performed_via_github_app?: components["schemas"]["nullable-integration"]; - }; - /** - * CheckRun - * @description A check performed on the code of a given code change - */ - "check-run": { - /** - * Format: int64 - * @description The id of the check. - * @example 21 - */ - id: number; - /** - * @description The SHA of the commit that is being checked. - * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d - */ - head_sha: string; - /** @example MDg6Q2hlY2tSdW40 */ - node_id: string; - /** @example 42 */ - external_id: string | null; - /** @example https://api.github.com/repos/github/hello-world/check-runs/4 */ - url: string; - /** @example https://github.com/github/hello-world/runs/4 */ - html_url: string | null; - /** @example https://example.com */ - details_url: string | null; - /** - * @description The phase of the lifecycle that the check is currently in. Statuses of waiting, requested, and pending are reserved for GitHub Actions check runs. - * @example queued - * @enum {string} - */ - status: - | "queued" - | "in_progress" - | "completed" - | "waiting" - | "requested" - | "pending"; - /** - * @example neutral - * @enum {string|null} - */ - conclusion: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "skipped" - | "timed_out" - | "action_required" - | null; - /** - * Format: date-time - * @example 2018-05-04T01:14:52Z - */ - started_at: string | null; - /** - * Format: date-time - * @example 2018-05-04T01:14:52Z - */ - completed_at: string | null; - output: { - title: string | null; - summary: string | null; - text: string | null; - annotations_count: number; - /** Format: uri */ - annotations_url: string; - }; - /** - * @description The name of the check. - * @example test-coverage - */ - name: string; - check_suite: { - id: number; - } | null; - app: components["schemas"]["nullable-integration"]; - /** @description Pull requests that are open with a `head_sha` or `head_branch` that matches the check. The returned pull requests do not necessarily indicate pull requests that triggered the check. */ - pull_requests: components["schemas"]["pull-request-minimal"][]; - deployment?: components["schemas"]["deployment-simple"]; - }; - /** - * Check Annotation - * @description Check Annotation - */ - "check-annotation": { - /** @example README.md */ - path: string; - /** @example 2 */ - start_line: number; - /** @example 2 */ - end_line: number; - /** @example 5 */ - start_column: number | null; - /** @example 10 */ - end_column: number | null; - /** @example warning */ - annotation_level: string | null; - /** @example Spell Checker */ - title: string | null; - /** @example Check your spelling for 'banaas'. */ - message: string | null; - /** @example Do you mean 'bananas' or 'banana'? */ - raw_details: string | null; - blob_href: string; - }; - /** - * Simple Commit - * @description A commit. - */ - "simple-commit": { - /** - * @description SHA for the commit - * @example 7638417db6d59f3c431d3e1f261cc637155684cd - */ - id: string; - /** @description SHA for the commit's tree */ - tree_id: string; - /** - * @description Message describing the purpose of the commit - * @example Fix #42 - */ - message: string; - /** - * Format: date-time - * @description Timestamp of the commit - * @example 2014-08-09T08:02:04+12:00 - */ - timestamp: string; - /** @description Information about the Git author */ - author: { - /** - * @description Name of the commit's author - * @example Monalisa Octocat - */ - name: string; - /** - * Format: email - * @description Git email address of the commit's author - * @example monalisa.octocat@example.com - */ - email: string; - } | null; - /** @description Information about the Git committer */ - committer: { - /** - * @description Name of the commit's committer - * @example Monalisa Octocat - */ - name: string; - /** - * Format: email - * @description Git email address of the commit's committer - * @example monalisa.octocat@example.com - */ - email: string; - } | null; - }; - /** - * CheckSuite - * @description A suite of checks performed on the code of a given code change - */ - "check-suite": { - /** - * Format: int64 - * @example 5 - */ - id: number; - /** @example MDEwOkNoZWNrU3VpdGU1 */ - node_id: string; - /** @example master */ - head_branch: string | null; - /** - * @description The SHA of the head commit that is being checked. - * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d - */ - head_sha: string; - /** - * @description The phase of the lifecycle that the check suite is currently in. Statuses of waiting, requested, and pending are reserved for GitHub Actions check suites. - * @example completed - * @enum {string|null} - */ - status: - | "queued" - | "in_progress" - | "completed" - | "waiting" - | "requested" - | "pending" - | null; - /** - * @example neutral - * @enum {string|null} - */ - conclusion: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "skipped" - | "timed_out" - | "action_required" - | "startup_failure" - | "stale" - | null; - /** @example https://api.github.com/repos/github/hello-world/check-suites/5 */ - url: string | null; - /** @example 146e867f55c26428e5f9fade55a9bbf5e95a7912 */ - before: string | null; - /** @example d6fde92930d4715a2b49857d24b940956b26d2d3 */ - after: string | null; - pull_requests: components["schemas"]["pull-request-minimal"][] | null; - app: components["schemas"]["nullable-integration"]; - repository: components["schemas"]["minimal-repository"]; - /** Format: date-time */ - created_at: string | null; - /** Format: date-time */ - updated_at: string | null; - head_commit: components["schemas"]["simple-commit"]; - latest_check_runs_count: number; - check_runs_url: string; - rerequestable?: boolean; - runs_rerequestable?: boolean; - }; - /** - * Check Suite Preference - * @description Check suite configuration preferences for a repository. - */ - "check-suite-preference": { - preferences: { - auto_trigger_checks?: { - app_id: number; - setting: boolean; - }[]; - }; - repository: components["schemas"]["minimal-repository"]; - }; - "code-scanning-alert-items": { - number: components["schemas"]["alert-number"]; - created_at: components["schemas"]["alert-created-at"]; - updated_at?: components["schemas"]["alert-updated-at"]; - url: components["schemas"]["alert-url"]; - html_url: components["schemas"]["alert-html-url"]; - instances_url: components["schemas"]["alert-instances-url"]; - state: components["schemas"]["code-scanning-alert-state"]; - fixed_at?: components["schemas"]["alert-fixed-at"]; - dismissed_by: components["schemas"]["nullable-simple-user"]; - dismissed_at: components["schemas"]["alert-dismissed-at"]; - dismissed_reason: components["schemas"]["code-scanning-alert-dismissed-reason"]; - dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; - rule: components["schemas"]["code-scanning-alert-rule-summary"]; - tool: components["schemas"]["code-scanning-analysis-tool"]; - most_recent_instance: components["schemas"]["code-scanning-alert-instance"]; - dismissal_approved_by?: components["schemas"]["nullable-simple-user"]; - assignees?: components["schemas"]["simple-user"][]; - }; - "code-scanning-alert-rule": { - /** @description A unique identifier for the rule used to detect the alert. */ - id?: string | null; - /** @description The name of the rule used to detect the alert. */ - name?: string; - /** - * @description The severity of the alert. - * @enum {string|null} - */ - severity?: "none" | "note" | "warning" | "error" | null; - /** - * @description The security severity of the alert. - * @enum {string|null} - */ - security_severity_level?: "low" | "medium" | "high" | "critical" | null; - /** @description A short description of the rule used to detect the alert. */ - description?: string; - /** @description A description of the rule used to detect the alert. */ - full_description?: string; - /** @description A set of tags applicable for the rule. */ - tags?: string[] | null; - /** @description Detailed documentation for the rule as GitHub Flavored Markdown. */ - help?: string | null; - /** @description A link to the documentation for the rule used to detect the alert. */ - help_uri?: string | null; - }; - "code-scanning-alert": { - number: components["schemas"]["alert-number"]; - created_at: components["schemas"]["alert-created-at"]; - updated_at?: components["schemas"]["alert-updated-at"]; - url: components["schemas"]["alert-url"]; - html_url: components["schemas"]["alert-html-url"]; - instances_url: components["schemas"]["alert-instances-url"]; - state: components["schemas"]["code-scanning-alert-state"]; - fixed_at?: components["schemas"]["alert-fixed-at"]; - dismissed_by: components["schemas"]["nullable-simple-user"]; - dismissed_at: components["schemas"]["alert-dismissed-at"]; - dismissed_reason: components["schemas"]["code-scanning-alert-dismissed-reason"]; - dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; - rule: components["schemas"]["code-scanning-alert-rule"]; - tool: components["schemas"]["code-scanning-analysis-tool"]; - most_recent_instance: components["schemas"]["code-scanning-alert-instance"]; - dismissal_approved_by?: components["schemas"]["nullable-simple-user"]; - assignees?: components["schemas"]["simple-user"][]; - }; - /** - * @description Sets the state of the code scanning alert. You must provide `dismissed_reason` when you set the state to `dismissed`. - * @enum {string} - */ - "code-scanning-alert-set-state": "open" | "dismissed"; - /** @description If `true`, attempt to create an alert dismissal request. */ - "code-scanning-alert-create-request": boolean; - /** - * @description The status of an autofix. - * @enum {string} - */ - "code-scanning-autofix-status": - | "pending" - | "error" - | "success" - | "outdated"; - /** @description The description of an autofix. */ - "code-scanning-autofix-description": string | null; - /** - * Format: date-time - * @description The start time of an autofix in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - readonly "code-scanning-autofix-started-at": string; - "code-scanning-autofix": { - status: components["schemas"]["code-scanning-autofix-status"]; - description: components["schemas"]["code-scanning-autofix-description"]; - started_at: components["schemas"]["code-scanning-autofix-started-at"]; - }; - /** @description Commit an autofix for a code scanning alert */ - "code-scanning-autofix-commits": { - /** @description The Git reference of target branch for the commit. Branch needs to already exist. For more information, see "[Git References](https://git-scm.com/book/en/v2/Git-Internals-Git-References)" in the Git documentation. */ - target_ref?: string; - /** @description Commit message to be used. */ - message?: string; - } | null; - "code-scanning-autofix-commits-response": { - /** @description The Git reference of target branch for the commit. For more information, see "[Git References](https://git-scm.com/book/en/v2/Git-Internals-Git-References)" in the Git documentation. */ - target_ref?: string; - /** @description SHA of commit with autofix. */ - sha?: string; - }; - /** - * @description An identifier for the upload. - * @example 6c81cd8e-b078-4ac3-a3be-1dad7dbd0b53 - */ - "code-scanning-analysis-sarif-id": string; - /** @description The SHA of the commit to which the analysis you are uploading relates. */ - "code-scanning-analysis-commit-sha": string; - /** @description Identifies the variable values associated with the environment in which this analysis was performed. */ - "code-scanning-analysis-environment": string; - /** - * Format: date-time - * @description The time that the analysis was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - readonly "code-scanning-analysis-created-at": string; - /** - * Format: uri - * @description The REST API URL of the analysis resource. - */ - readonly "code-scanning-analysis-url": string; - "code-scanning-analysis": { - ref: components["schemas"]["code-scanning-ref"]; - commit_sha: components["schemas"]["code-scanning-analysis-commit-sha"]; - analysis_key: components["schemas"]["code-scanning-analysis-analysis-key"]; - environment: components["schemas"]["code-scanning-analysis-environment"]; - category?: components["schemas"]["code-scanning-analysis-category"]; - /** @example error reading field xyz */ - error: string; - created_at: components["schemas"]["code-scanning-analysis-created-at"]; - /** @description The total number of results in the analysis. */ - results_count: number; - /** @description The total number of rules used in the analysis. */ - rules_count: number; - /** @description Unique identifier for this analysis. */ - id: number; - url: components["schemas"]["code-scanning-analysis-url"]; - sarif_id: components["schemas"]["code-scanning-analysis-sarif-id"]; - tool: components["schemas"]["code-scanning-analysis-tool"]; - deletable: boolean; - /** - * @description Warning generated when processing the analysis - * @example 123 results were ignored - */ - warning: string; - }; - /** - * Analysis deletion - * @description Successful deletion of a code scanning analysis - */ - "code-scanning-analysis-deletion": { - /** - * Format: uri - * @description Next deletable analysis in chain, without last analysis deletion confirmation - */ - next_analysis_url: string | null; - /** - * Format: uri - * @description Next deletable analysis in chain, with last analysis deletion confirmation - */ - confirm_delete_url: string | null; - }; - /** - * CodeQL Database - * @description A CodeQL database. - */ - "code-scanning-codeql-database": { - /** @description The ID of the CodeQL database. */ - id: number; - /** @description The name of the CodeQL database. */ - name: string; - /** @description The language of the CodeQL database. */ - language: string; - uploader: components["schemas"]["simple-user"]; - /** @description The MIME type of the CodeQL database file. */ - content_type: string; - /** @description The size of the CodeQL database file in bytes. */ - size: number; - /** - * Format: date-time - * @description The date and time at which the CodeQL database was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - */ - created_at: string; - /** - * Format: date-time - * @description The date and time at which the CodeQL database was last updated, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - */ - updated_at: string; - /** - * Format: uri - * @description The URL at which to download the CodeQL database. The `Accept` header must be set to the value of the `content_type` property. - */ - url: string; - /** @description The commit SHA of the repository at the time the CodeQL database was created. */ - commit_oid?: string | null; - }; - /** - * @description The language targeted by the CodeQL query - * @enum {string} - */ - "code-scanning-variant-analysis-language": - | "cpp" - | "csharp" - | "go" - | "java" - | "javascript" - | "python" - | "ruby" - | "rust" - | "swift"; - /** - * Repository Identifier - * @description Repository Identifier - */ - "code-scanning-variant-analysis-repository": { - /** - * @description A unique identifier of the repository. - * @example 1296269 - */ - id: number; - /** - * @description The name of the repository. - * @example Hello-World - */ - name: string; - /** - * @description The full, globally unique, name of the repository. - * @example octocat/Hello-World - */ - full_name: string; - /** @description Whether the repository is private. */ - private: boolean; - /** @example 80 */ - stargazers_count: number; - /** - * Format: date-time - * @example 2011-01-26T19:14:43Z - */ - updated_at: string | null; - }; - /** - * @description The new status of the CodeQL variant analysis repository task. - * @enum {string} - */ - "code-scanning-variant-analysis-status": - | "pending" - | "in_progress" - | "succeeded" - | "failed" - | "canceled" - | "timed_out"; - "code-scanning-variant-analysis-skipped-repo-group": { - /** - * @description The total number of repositories that were skipped for this reason. - * @example 2 - */ - repository_count: number; - /** @description A list of repositories that were skipped. This list may not include all repositories that were skipped. This is only available when the repository was found and the user has access to it. */ - repositories: components["schemas"]["code-scanning-variant-analysis-repository"][]; - }; - /** - * Variant Analysis - * @description A run of a CodeQL query against one or more repositories. - */ - "code-scanning-variant-analysis": { - /** @description The ID of the variant analysis. */ - id: number; - controller_repo: components["schemas"]["simple-repository"]; - actor: components["schemas"]["simple-user"]; - query_language: components["schemas"]["code-scanning-variant-analysis-language"]; - /** @description The download url for the query pack. */ - query_pack_url: string; - /** - * Format: date-time - * @description The date and time at which the variant analysis was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - */ - created_at?: string; - /** - * Format: date-time - * @description The date and time at which the variant analysis was last updated, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - */ - updated_at?: string; - /** - * Format: date-time - * @description The date and time at which the variant analysis was completed, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. Will be null if the variant analysis has not yet completed or this information is not available. - */ - completed_at?: string | null; - /** @enum {string} */ - status: "in_progress" | "succeeded" | "failed" | "cancelled"; - /** @description The GitHub Actions workflow run used to execute this variant analysis. This is only available if the workflow run has started. */ - actions_workflow_run_id?: number; - /** - * @description The reason for a failure of the variant analysis. This is only available if the variant analysis has failed. - * @enum {string} - */ - failure_reason?: - | "no_repos_queried" - | "actions_workflow_run_failed" - | "internal_error"; - scanned_repositories?: { - repository: components["schemas"]["code-scanning-variant-analysis-repository"]; - analysis_status: components["schemas"]["code-scanning-variant-analysis-status"]; - /** @description The number of results in the case of a successful analysis. This is only available for successful analyses. */ - result_count?: number; - /** @description The size of the artifact. This is only available for successful analyses. */ - artifact_size_in_bytes?: number; - /** @description The reason of the failure of this repo task. This is only available if the repository task has failed. */ - failure_message?: string; - }[]; - /** @description Information about repositories that were skipped from processing. This information is only available to the user that initiated the variant analysis. */ - skipped_repositories?: { - access_mismatch_repos: components["schemas"]["code-scanning-variant-analysis-skipped-repo-group"]; - not_found_repos: { - /** - * @description The total number of repositories that were skipped for this reason. - * @example 2 - */ - repository_count: number; - /** @description A list of full repository names that were skipped. This list may not include all repositories that were skipped. */ - repository_full_names: string[]; - }; - no_codeql_db_repos: components["schemas"]["code-scanning-variant-analysis-skipped-repo-group"]; - over_limit_repos: components["schemas"]["code-scanning-variant-analysis-skipped-repo-group"]; - }; - }; - "code-scanning-variant-analysis-repo-task": { - repository: components["schemas"]["simple-repository"]; - analysis_status: components["schemas"]["code-scanning-variant-analysis-status"]; - /** @description The size of the artifact. This is only available for successful analyses. */ - artifact_size_in_bytes?: number; - /** @description The number of results in the case of a successful analysis. This is only available for successful analyses. */ - result_count?: number; - /** @description The reason of the failure of this repo task. This is only available if the repository task has failed. */ - failure_message?: string; - /** @description The SHA of the commit the CodeQL database was built against. This is only available for successful analyses. */ - database_commit_sha?: string; - /** @description The source location prefix to use. This is only available for successful analyses. */ - source_location_prefix?: string; - /** @description The URL of the artifact. This is only available for successful analyses. */ - artifact_url?: string; - }; - /** @description Configuration for code scanning default setup. */ - "code-scanning-default-setup": { - /** - * @description Code scanning default setup has been configured or not. - * @enum {string} - */ - state?: "configured" | "not-configured"; - /** @description Languages to be analyzed. */ - languages?: ( - | "actions" - | "c-cpp" - | "csharp" - | "go" - | "java-kotlin" - | "javascript-typescript" - | "javascript" - | "python" - | "ruby" - | "typescript" - | "swift" - )[]; - /** - * @description Runner type to be used. - * @enum {string|null} - */ - runner_type?: "standard" | "labeled" | null; - /** - * @description Runner label to be used if the runner type is labeled. - * @example code-scanning - */ - runner_label?: string | null; - /** - * @description CodeQL query suite to be used. - * @enum {string} - */ - query_suite?: "default" | "extended"; - /** - * @description Threat model to be used for code scanning analysis. Use `remote` to analyze only network sources and `remote_and_local` to include local sources like filesystem access, command-line arguments, database reads, environment variable and standard input. - * @enum {string} - */ - threat_model?: "remote" | "remote_and_local"; - /** - * Format: date-time - * @description Timestamp of latest configuration update. - * @example 2023-12-06T14:20:20.000Z - */ - updated_at?: string | null; - /** - * @description The frequency of the periodic analysis. - * @enum {string|null} - */ - schedule?: "weekly" | null; - }; - /** @description Configuration for code scanning default setup. */ - "code-scanning-default-setup-update": { - /** - * @description The desired state of code scanning default setup. - * @enum {string} - */ - state?: "configured" | "not-configured"; - /** - * @description Runner type to be used. - * @enum {string} - */ - runner_type?: "standard" | "labeled"; - /** - * @description Runner label to be used if the runner type is labeled. - * @example code-scanning - */ - runner_label?: string | null; - /** - * @description CodeQL query suite to be used. - * @enum {string} - */ - query_suite?: "default" | "extended"; - /** - * @description Threat model to be used for code scanning analysis. Use `remote` to analyze only network sources and `remote_and_local` to include local sources like filesystem access, command-line arguments, database reads, environment variable and standard input. - * @enum {string} - */ - threat_model?: "remote" | "remote_and_local"; - /** @description CodeQL languages to be analyzed. */ - languages?: ( - | "actions" - | "c-cpp" - | "csharp" - | "go" - | "java-kotlin" - | "javascript-typescript" - | "python" - | "ruby" - | "swift" - )[]; - }; - /** - * @description You can use `run_url` to track the status of the run. This includes a property status and conclusion. - * You should not rely on this always being an actions workflow run object. - */ - "code-scanning-default-setup-update-response": { - /** @description ID of the corresponding run. */ - run_id?: number; - /** @description URL of the corresponding run. */ - run_url?: string; - }; - /** - * @description The full Git reference, formatted as `refs/heads/`, - * `refs/tags/`, `refs/pull//merge`, or `refs/pull//head`. - * @example refs/heads/main - */ - "code-scanning-ref-full": string; - /** @description A Base64 string representing the SARIF file to upload. You must first compress your SARIF file using [`gzip`](http://www.gnu.org/software/gzip/manual/gzip.html) and then translate the contents of the file into a Base64 encoding string. For more information, see "[SARIF support for code scanning](https://docs.github.com/code-security/secure-coding/sarif-support-for-code-scanning)." */ - "code-scanning-analysis-sarif-file": string; - "code-scanning-sarifs-receipt": { - id?: components["schemas"]["code-scanning-analysis-sarif-id"]; - /** - * Format: uri - * @description The REST API URL for checking the status of the upload. - */ - url?: string; - }; - "code-scanning-sarifs-status": { - /** - * @description `pending` files have not yet been processed, while `complete` means results from the SARIF have been stored. `failed` files have either not been processed at all, or could only be partially processed. - * @enum {string} - */ - processing_status?: "pending" | "complete" | "failed"; - /** - * Format: uri - * @description The REST API URL for getting the analyses associated with the upload. - */ - analyses_url?: string | null; - /** @description Any errors that ocurred during processing of the delivery. */ - errors?: readonly string[] | null; - }; - /** @description Code security configuration associated with a repository and attachment status */ - "code-security-configuration-for-repository": { - /** - * @description The attachment status of the code security configuration on the repository. - * @enum {string} - */ - status?: - | "attached" - | "attaching" - | "detached" - | "removed" - | "enforced" - | "failed" - | "updating" - | "removed_by_enterprise"; - configuration?: components["schemas"]["code-security-configuration"]; - }; - /** - * CODEOWNERS errors - * @description A list of errors found in a repo's CODEOWNERS file - */ - "codeowners-errors": { - errors: { - /** - * @description The line number where this errors occurs. - * @example 7 - */ - line: number; - /** - * @description The column number where this errors occurs. - * @example 3 - */ - column: number; - /** - * @description The contents of the line where the error occurs. - * @example * user - */ - source?: string; - /** - * @description The type of error. - * @example Invalid owner - */ - kind: string; - /** - * @description Suggested action to fix the error. This will usually be `null`, but is provided for some common errors. - * @example The pattern `/` will never match anything, did you mean `*` instead? - */ - suggestion?: string | null; - /** - * @description A human-readable description of the error, combining information from multiple fields, laid out for display in a monospaced typeface (for example, a command-line setting). - * @example Invalid owner on line 7: - * - * * user - * ^ - */ - message: string; - /** - * @description The path of the file where the error occured. - * @example .github/CODEOWNERS - */ - path: string; - }[]; - }; - /** - * Codespace machine - * @description A description of the machine powering a codespace. - */ - "codespace-machine": { - /** - * @description The name of the machine. - * @example standardLinux - */ - name: string; - /** - * @description The display name of the machine includes cores, memory, and storage. - * @example 4 cores, 16 GB RAM, 64 GB storage - */ - display_name: string; - /** - * @description The operating system of the machine. - * @example linux - */ - operating_system: string; - /** - * @description How much storage is available to the codespace. - * @example 68719476736 - */ - storage_in_bytes: number; - /** - * @description How much memory is available to the codespace. - * @example 17179869184 - */ - memory_in_bytes: number; - /** - * @description How many cores are available to the codespace. - * @example 4 - */ - cpus: number; - /** - * @description Whether a prebuild is currently available when creating a codespace for this machine and repository. If a branch was not specified as a ref, the default branch will be assumed. Value will be "null" if prebuilds are not supported or prebuild availability could not be determined. Value will be "none" if no prebuild is available. Latest values "ready" and "in_progress" indicate the prebuild availability status. - * @example ready - * @enum {string|null} - */ - prebuild_availability: "none" | "ready" | "in_progress" | null; - }; - /** - * Codespaces Permissions Check - * @description Permission check result for a given devcontainer config. - */ - "codespaces-permissions-check-for-devcontainer": { - /** - * @description Whether the user has accepted the permissions defined by the devcontainer config - * @example true - */ - accepted: boolean; - }; - /** - * Codespaces Secret - * @description Set repository secrets for GitHub Codespaces. - */ - "repo-codespaces-secret": { - /** - * @description The name of the secret. - * @example SECRET_TOKEN - */ - name: string; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - }; - /** - * Collaborator - * @description Collaborator - */ - collaborator: { - /** @example octocat */ - login: string; - /** - * Format: int64 - * @example 1 - */ - id: number; - email?: string | null; - name?: string | null; - /** @example MDQ6VXNlcjE= */ - node_id: string; - /** - * Format: uri - * @example https://github.com/images/error/octocat_happy.gif - */ - avatar_url: string; - /** @example 41d064eb2195891e12d0413f63227ea7 */ - gravatar_id: string | null; - /** - * Format: uri - * @example https://api.github.com/users/octocat - */ - url: string; - /** - * Format: uri - * @example https://github.com/octocat - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/followers - */ - followers_url: string; - /** @example https://api.github.com/users/octocat/following{/other_user} */ - following_url: string; - /** @example https://api.github.com/users/octocat/gists{/gist_id} */ - gists_url: string; - /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */ - starred_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/subscriptions - */ - subscriptions_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/orgs - */ - organizations_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/repos - */ - repos_url: string; - /** @example https://api.github.com/users/octocat/events{/privacy} */ - events_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/received_events - */ - received_events_url: string; - /** @example User */ - type: string; - site_admin: boolean; - permissions?: { - pull: boolean; - triage?: boolean; - push: boolean; - maintain?: boolean; - admin: boolean; - }; - /** @example admin */ - role_name: string; - /** @example public */ - user_view_type?: string; - }; - /** - * Repository Invitation - * @description Repository invitations let you manage who you collaborate with. - */ - "repository-invitation": { - /** - * Format: int64 - * @description Unique identifier of the repository invitation. - * @example 42 - */ - id: number; - repository: components["schemas"]["minimal-repository"]; - invitee: components["schemas"]["nullable-simple-user"]; - inviter: components["schemas"]["nullable-simple-user"]; - /** - * @description The permission associated with the invitation. - * @example read - * @enum {string} - */ - permissions: "read" | "write" | "admin" | "triage" | "maintain"; - /** - * Format: date-time - * @example 2016-06-13T14:52:50-05:00 - */ - created_at: string; - /** @description Whether or not the invitation has expired */ - expired?: boolean; - /** - * @description URL for the repository invitation - * @example https://api.github.com/user/repository-invitations/1 - */ - url: string; - /** @example https://github.com/octocat/Hello-World/invitations */ - html_url: string; - node_id: string; - }; - /** - * Collaborator - * @description Collaborator - */ - "nullable-collaborator": { - /** @example octocat */ - login: string; - /** - * Format: int64 - * @example 1 - */ - id: number; - email?: string | null; - name?: string | null; - /** @example MDQ6VXNlcjE= */ - node_id: string; - /** - * Format: uri - * @example https://github.com/images/error/octocat_happy.gif - */ - avatar_url: string; - /** @example 41d064eb2195891e12d0413f63227ea7 */ - gravatar_id: string | null; - /** - * Format: uri - * @example https://api.github.com/users/octocat - */ - url: string; - /** - * Format: uri - * @example https://github.com/octocat - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/followers - */ - followers_url: string; - /** @example https://api.github.com/users/octocat/following{/other_user} */ - following_url: string; - /** @example https://api.github.com/users/octocat/gists{/gist_id} */ - gists_url: string; - /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */ - starred_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/subscriptions - */ - subscriptions_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/orgs - */ - organizations_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/repos - */ - repos_url: string; - /** @example https://api.github.com/users/octocat/events{/privacy} */ - events_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/received_events - */ - received_events_url: string; - /** @example User */ - type: string; - site_admin: boolean; - permissions?: { - pull: boolean; - triage?: boolean; - push: boolean; - maintain?: boolean; - admin: boolean; - }; - /** @example admin */ - role_name: string; - /** @example public */ - user_view_type?: string; - } | null; - /** - * Repository Collaborator Permission - * @description Repository Collaborator Permission - */ - "repository-collaborator-permission": { - permission: string; - /** @example admin */ - role_name: string; - user: components["schemas"]["nullable-collaborator"]; - }; - /** - * Commit Comment - * @description Commit Comment - */ - "commit-comment": { - /** Format: uri */ - html_url: string; - /** Format: uri */ - url: string; - id: number; - node_id: string; - body: string; - path: string | null; - position: number | null; - line: number | null; - commit_id: string; - user: components["schemas"]["nullable-simple-user"]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - author_association: components["schemas"]["author-association"]; - reactions?: components["schemas"]["reaction-rollup"]; - }; - /** - * Branch Short - * @description Branch Short - */ - "branch-short": { - name: string; - commit: { - sha: string; - url: string; - }; - protected: boolean; - }; - /** Simple Commit Status */ - "simple-commit-status": { - description: string | null; - id: number; - node_id: string; - state: string; - context: string; - /** Format: uri */ - target_url: string | null; - required?: boolean | null; - /** Format: uri */ - avatar_url: string | null; - /** Format: uri */ - url: string; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - }; - /** - * Combined Commit Status - * @description Combined Commit Status - */ - "combined-commit-status": { - state: string; - statuses: components["schemas"]["simple-commit-status"][]; - sha: string; - total_count: number; - repository: components["schemas"]["minimal-repository"]; - /** Format: uri */ - commit_url: string; - /** Format: uri */ - url: string; - }; - /** - * Status - * @description The status of a commit. - */ - status: { - url: string; - avatar_url: string | null; - id: number; - node_id: string; - state: string; - description: string | null; - target_url: string | null; - context: string; - created_at: string; - updated_at: string; - creator: components["schemas"]["nullable-simple-user"]; - }; - /** - * Code Of Conduct Simple - * @description Code of Conduct Simple - */ - "nullable-code-of-conduct-simple": { - /** - * Format: uri - * @example https://api.github.com/repos/github/docs/community/code_of_conduct - */ - url: string; - /** @example citizen_code_of_conduct */ - key: string; - /** @example Citizen Code of Conduct */ - name: string; - /** - * Format: uri - * @example https://github.com/github/docs/blob/main/CODE_OF_CONDUCT.md - */ - html_url: string | null; - } | null; - /** Community Health File */ - "nullable-community-health-file": { - /** Format: uri */ - url: string; - /** Format: uri */ - html_url: string; - } | null; - /** - * Community Profile - * @description Community Profile - */ - "community-profile": { - /** @example 100 */ - health_percentage: number; - /** @example My first repository on GitHub! */ - description: string | null; - /** @example example.com */ - documentation: string | null; - files: { - code_of_conduct: components["schemas"]["nullable-code-of-conduct-simple"]; - code_of_conduct_file: components["schemas"]["nullable-community-health-file"]; - license: components["schemas"]["nullable-license-simple"]; - contributing: components["schemas"]["nullable-community-health-file"]; - readme: components["schemas"]["nullable-community-health-file"]; - issue_template: components["schemas"]["nullable-community-health-file"]; - pull_request_template: components["schemas"]["nullable-community-health-file"]; - }; - /** - * Format: date-time - * @example 2017-02-28T19:09:29Z - */ - updated_at: string | null; - /** @example true */ - content_reports_enabled?: boolean; - }; - /** - * Commit Comparison - * @description Commit Comparison - */ - "commit-comparison": { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/compare/master...topic - */ - url: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/compare/master...topic - */ - html_url: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/compare/octocat:bbcd538c8e72b8c175046e27cc8f907076331401...octocat:0328041d1152db8ae77652d1618a02e57f745f17 - */ - permalink_url: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/compare/master...topic.diff - */ - diff_url: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/compare/master...topic.patch - */ - patch_url: string; - base_commit: components["schemas"]["commit"]; - merge_base_commit: components["schemas"]["commit"]; - /** - * @example ahead - * @enum {string} - */ - status: "diverged" | "ahead" | "behind" | "identical"; - /** @example 4 */ - ahead_by: number; - /** @example 5 */ - behind_by: number; - /** @example 6 */ - total_commits: number; - commits: components["schemas"]["commit"][]; - files?: components["schemas"]["diff-entry"][]; - }; - /** - * Content Tree - * @description Content Tree - */ - "content-tree": { - type: string; - size: number; - name: string; - path: string; - sha: string; - content?: string; - /** Format: uri */ - url: string; - /** Format: uri */ - git_url: string | null; - /** Format: uri */ - html_url: string | null; - /** Format: uri */ - download_url: string | null; - entries?: { - type: string; - size: number; - name: string; - path: string; - sha: string; - /** Format: uri */ - url: string; - /** Format: uri */ - git_url: string | null; - /** Format: uri */ - html_url: string | null; - /** Format: uri */ - download_url: string | null; - _links: { - /** Format: uri */ - git: string | null; - /** Format: uri */ - html: string | null; - /** Format: uri */ - self: string; - }; - }[]; - encoding?: string; - _links: { - /** Format: uri */ - git: string | null; - /** Format: uri */ - html: string | null; - /** Format: uri */ - self: string; - }; - }; - /** - * Content Directory - * @description A list of directory items - */ - "content-directory": { - /** @enum {string} */ - type: "dir" | "file" | "submodule" | "symlink"; - size: number; - name: string; - path: string; - content?: string; - sha: string; - /** Format: uri */ - url: string; - /** Format: uri */ - git_url: string | null; - /** Format: uri */ - html_url: string | null; - /** Format: uri */ - download_url: string | null; - _links: { - /** Format: uri */ - git: string | null; - /** Format: uri */ - html: string | null; - /** Format: uri */ - self: string; - }; - }[]; - /** - * Content File - * @description Content File - */ - "content-file": { - /** @enum {string} */ - type: "file"; - encoding: string; - size: number; - name: string; - path: string; - content: string; - sha: string; - /** Format: uri */ - url: string; - /** Format: uri */ - git_url: string | null; - /** Format: uri */ - html_url: string | null; - /** Format: uri */ - download_url: string | null; - _links: { - /** Format: uri */ - git: string | null; - /** Format: uri */ - html: string | null; - /** Format: uri */ - self: string; - }; - /** @example "actual/actual.md" */ - target?: string; - /** @example "git://example.com/defunkt/dotjs.git" */ - submodule_git_url?: string; - }; - /** - * Symlink Content - * @description An object describing a symlink - */ - "content-symlink": { - /** @enum {string} */ - type: "symlink"; - target: string; - size: number; - name: string; - path: string; - sha: string; - /** Format: uri */ - url: string; - /** Format: uri */ - git_url: string | null; - /** Format: uri */ - html_url: string | null; - /** Format: uri */ - download_url: string | null; - _links: { - /** Format: uri */ - git: string | null; - /** Format: uri */ - html: string | null; - /** Format: uri */ - self: string; - }; - }; - /** - * Submodule Content - * @description An object describing a submodule - */ - "content-submodule": { - /** @enum {string} */ - type: "submodule"; - /** Format: uri */ - submodule_git_url: string; - size: number; - name: string; - path: string; - sha: string; - /** Format: uri */ - url: string; - /** Format: uri */ - git_url: string | null; - /** Format: uri */ - html_url: string | null; - /** Format: uri */ - download_url: string | null; - _links: { - /** Format: uri */ - git: string | null; - /** Format: uri */ - html: string | null; - /** Format: uri */ - self: string; - }; - }; - /** - * File Commit - * @description File Commit - */ - "file-commit": { - content: { - name?: string; - path?: string; - sha?: string; - size?: number; - url?: string; - html_url?: string; - git_url?: string; - download_url?: string; - type?: string; - _links?: { - self?: string; - git?: string; - html?: string; - }; - } | null; - commit: { - sha?: string; - node_id?: string; - url?: string; - html_url?: string; - author?: { - date?: string; - name?: string; - email?: string; - }; - committer?: { - date?: string; - name?: string; - email?: string; - }; - message?: string; - tree?: { - url?: string; - sha?: string; - }; - parents?: { - url?: string; - html_url?: string; - sha?: string; - }[]; - verification?: { - verified?: boolean; - reason?: string; - signature?: string | null; - payload?: string | null; - verified_at?: string | null; - }; - }; - }; - /** @description The ID of the push protection bypass placeholder. This value is returned on any push protected routes. */ - "secret-scanning-push-protection-bypass-placeholder-id": string; - /** @description Repository rule violation was detected */ - "repository-rule-violation-error": { - message?: string; - documentation_url?: string; - status?: string; - metadata?: { - secret_scanning?: { - bypass_placeholders?: { - placeholder_id?: components["schemas"]["secret-scanning-push-protection-bypass-placeholder-id"]; - token_type?: string; - }[]; - }; - }; - }; - /** - * Contributor - * @description Contributor - */ - contributor: { - login?: string; - id?: number; - node_id?: string; - /** Format: uri */ - avatar_url?: string; - gravatar_id?: string | null; - /** Format: uri */ - url?: string; - /** Format: uri */ - html_url?: string; - /** Format: uri */ - followers_url?: string; - following_url?: string; - gists_url?: string; - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - repos_url?: string; - events_url?: string; - /** Format: uri */ - received_events_url?: string; - type: string; - site_admin?: boolean; - contributions: number; - email?: string; - name?: string; - user_view_type?: string; - }; - /** @description A Dependabot alert. */ - "dependabot-alert": { - number: components["schemas"]["alert-number"]; - /** - * @description The state of the Dependabot alert. - * @enum {string} - */ - state: "auto_dismissed" | "dismissed" | "fixed" | "open"; - /** @description Details for the vulnerable dependency. */ - dependency: { - readonly package?: components["schemas"]["dependabot-alert-package"]; - /** @description The full path to the dependency manifest file, relative to the root of the repository. */ - readonly manifest_path?: string; - /** - * @description The execution scope of the vulnerable dependency. - * @enum {string|null} - */ - readonly scope?: "development" | "runtime" | null; - /** - * @description The vulnerable dependency's relationship to your project. - * - * > [!NOTE] - * > We are rolling out support for dependency relationship across ecosystems. This value will be "unknown" for all dependencies in unsupported ecosystems. - * - * @enum {string|null} - */ - readonly relationship?: "unknown" | "direct" | "transitive" | null; - }; - security_advisory: components["schemas"]["dependabot-alert-security-advisory"]; - security_vulnerability: components["schemas"]["dependabot-alert-security-vulnerability"]; - url: components["schemas"]["alert-url"]; - html_url: components["schemas"]["alert-html-url"]; - created_at: components["schemas"]["alert-created-at"]; - updated_at: components["schemas"]["alert-updated-at"]; - dismissed_at: components["schemas"]["alert-dismissed-at"]; - dismissed_by: components["schemas"]["nullable-simple-user"]; - /** - * @description The reason that the alert was dismissed. - * @enum {string|null} - */ - dismissed_reason: - | "fix_started" - | "inaccurate" - | "no_bandwidth" - | "not_used" - | "tolerable_risk" - | null; - /** @description An optional comment associated with the alert's dismissal. */ - dismissed_comment: string | null; - fixed_at: components["schemas"]["alert-fixed-at"]; - auto_dismissed_at?: components["schemas"]["alert-auto-dismissed-at"]; - }; - /** - * Dependabot Secret - * @description Set secrets for Dependabot. - */ - "dependabot-secret": { - /** - * @description The name of the secret. - * @example MY_ARTIFACTORY_PASSWORD - */ - name: string; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - }; - /** - * Dependency Graph Diff - * @description A diff of the dependencies between two commits. - */ - "dependency-graph-diff": { - /** @enum {string} */ - change_type: "added" | "removed"; - /** @example path/to/package-lock.json */ - manifest: string; - /** @example npm */ - ecosystem: string; - /** @example @actions/core */ - name: string; - /** @example 1.0.0 */ - version: string; - /** @example pkg:/npm/%40actions/core@1.1.0 */ - package_url: string | null; - /** @example MIT */ - license: string | null; - /** @example https://github.com/github/actions */ - source_repository_url: string | null; - vulnerabilities: { - /** @example critical */ - severity: string; - /** @example GHSA-rf4j-j272-fj86 */ - advisory_ghsa_id: string; - /** @example A summary of the advisory. */ - advisory_summary: string; - /** @example https://github.com/advisories/GHSA-rf4j-j272-fj86 */ - advisory_url: string; - }[]; - /** - * @description Where the dependency is utilized. `development` means that the dependency is only utilized in the development environment. `runtime` means that the dependency is utilized at runtime and in the development environment. - * @enum {string} - */ - scope: "unknown" | "runtime" | "development"; - }[]; - /** - * Dependency Graph SPDX SBOM - * @description A schema for the SPDX JSON format returned by the Dependency Graph. - */ - "dependency-graph-spdx-sbom": { - sbom: { - /** - * @description The SPDX identifier for the SPDX document. - * @example SPDXRef-DOCUMENT - */ - SPDXID: string; - /** - * @description The version of the SPDX specification that this document conforms to. - * @example SPDX-2.3 - */ - spdxVersion: string; - /** - * @description An optional comment about the SPDX document. - * @example Exact versions could not be resolved for some packages. For more information: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/ - */ - comment?: string; - creationInfo: { - /** - * @description The date and time the SPDX document was created. - * @example 2021-11-03T00:00:00Z - */ - created: string; - /** @description The tools that were used to generate the SPDX document. */ - creators: string[]; - }; - /** - * @description The name of the SPDX document. - * @example github/github - */ - name: string; - /** - * @description The license under which the SPDX document is licensed. - * @example CC0-1.0 - */ - dataLicense: string; - /** - * @description The namespace for the SPDX document. - * @example https://spdx.org/spdxdocs/protobom/15e41dd2-f961-4f4d-b8dc-f8f57ad70d57 - */ - documentNamespace: string; - packages: { - /** - * @description A unique SPDX identifier for the package. - * @example SPDXRef-Package - */ - SPDXID?: string; - /** - * @description The name of the package. - * @example github/github - */ - name?: string; - /** - * @description The version of the package. If the package does not have an exact version specified, - * a version range is given. - * @example 1.0.0 - */ - versionInfo?: string; - /** - * @description The location where the package can be downloaded, - * or NOASSERTION if this has not been determined. - * @example NOASSERTION - */ - downloadLocation?: string; - /** - * @description Whether the package's file content has been subjected to - * analysis during the creation of the SPDX document. - * @example false - */ - filesAnalyzed?: boolean; - /** - * @description The license of the package as determined while creating the SPDX document. - * @example MIT - */ - licenseConcluded?: string; - /** - * @description The license of the package as declared by its author, or NOASSERTION if this information - * was not available when the SPDX document was created. - * @example NOASSERTION - */ - licenseDeclared?: string; - /** - * @description The distribution source of this package, or NOASSERTION if this was not determined. - * @example NOASSERTION - */ - supplier?: string; - /** - * @description The copyright holders of the package, and any dates present with those notices, if available. - * @example Copyright (c) 1985 GitHub.com - */ - copyrightText?: string; - externalRefs?: { - /** - * @description The category of reference to an external resource this reference refers to. - * @example PACKAGE-MANAGER - */ - referenceCategory: string; - /** - * @description A locator for the particular external resource this reference refers to. - * @example pkg:gem/rails@6.0.1 - */ - referenceLocator: string; - /** - * @description The category of reference to an external resource this reference refers to. - * @example purl - */ - referenceType: string; - }[]; - }[]; - relationships?: { - /** - * @description The type of relationship between the two SPDX elements. - * @example DEPENDS_ON - */ - relationshipType?: string; - /** @description The SPDX identifier of the package that is the source of the relationship. */ - spdxElementId?: string; - /** @description The SPDX identifier of the package that is the target of the relationship. */ - relatedSpdxElement?: string; - }[]; - }; - }; - /** - * metadata - * @description User-defined metadata to store domain-specific information limited to 8 keys with scalar values. - */ - metadata: { - [key: string]: (string | number | boolean) | null; - }; - dependency: { - /** - * @description Package-url (PURL) of dependency. See https://github.com/package-url/purl-spec for more details. - * @example pkg:/npm/%40actions/http-client@1.0.11 - */ - package_url?: string; - metadata?: components["schemas"]["metadata"]; - /** - * @description A notation of whether a dependency is requested directly by this manifest or is a dependency of another dependency. - * @example direct - * @enum {string} - */ - relationship?: "direct" | "indirect"; - /** - * @description A notation of whether the dependency is required for the primary build artifact (runtime) or is only used for development. Future versions of this specification may allow for more granular scopes. - * @example runtime - * @enum {string} - */ - scope?: "runtime" | "development"; - /** - * @description Array of package-url (PURLs) of direct child dependencies. - * @example @actions/http-client - */ - dependencies?: string[]; - }; - manifest: { - /** - * @description The name of the manifest. - * @example package-lock.json - */ - name: string; - file?: { - /** - * @description The path of the manifest file relative to the root of the Git repository. - * @example /src/build/package-lock.json - */ - source_location?: string; - }; - metadata?: components["schemas"]["metadata"]; - /** @description A collection of resolved package dependencies. */ - resolved?: { - [key: string]: components["schemas"]["dependency"]; - }; - }; - /** - * snapshot - * @description Create a new snapshot of a repository's dependencies. - */ - snapshot: { - /** @description The version of the repository snapshot submission. */ - version: number; - job: { - /** - * @description The external ID of the job. - * @example 5622a2b0-63f6-4732-8c34-a1ab27e102a11 - */ - id: string; - /** - * @description Correlator provides a key that is used to group snapshots submitted over time. Only the "latest" submitted snapshot for a given combination of `job.correlator` and `detector.name` will be considered when calculating a repository's current dependencies. Correlator should be as unique as it takes to distinguish all detection runs for a given "wave" of CI workflow you run. If you're using GitHub Actions, a good default value for this could be the environment variables GITHUB_WORKFLOW and GITHUB_JOB concatenated together. If you're using a build matrix, then you'll also need to add additional key(s) to distinguish between each submission inside a matrix variation. - * @example yourworkflowname_yourjobname - */ - correlator: string; - /** - * @description The url for the job. - * @example http://example.com/build - */ - html_url?: string; - }; - /** - * @description The commit SHA associated with this dependency snapshot. Maximum length: 40 characters. - * @example ddc951f4b1293222421f2c8df679786153acf689 - */ - sha: string; - /** - * @description The repository branch that triggered this snapshot. - * @example refs/heads/main - */ - ref: string; - /** @description A description of the detector used. */ - detector: { - /** - * @description The name of the detector used. - * @example docker buildtime detector - */ - name: string; - /** - * @description The version of the detector used. - * @example 1.0.0 - */ - version: string; - /** - * @description The url of the detector used. - * @example http://example.com/docker-buildtimer-detector - */ - url: string; - }; - metadata?: components["schemas"]["metadata"]; - /** @description A collection of package manifests, which are a collection of related dependencies declared in a file or representing a logical group of dependencies. */ - manifests?: { - [key: string]: components["schemas"]["manifest"]; - }; - /** - * Format: date-time - * @description The time at which the snapshot was scanned. - * @example 2020-06-13T14:52:50-05:00 - */ - scanned: string; - }; - /** - * Deployment Status - * @description The status of a deployment. - */ - "deployment-status": { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/example/deployments/42/statuses/1 - */ - url: string; - /** - * Format: int64 - * @example 1 - */ - id: number; - /** @example MDE2OkRlcGxveW1lbnRTdGF0dXMx */ - node_id: string; - /** - * @description The state of the status. - * @example success - * @enum {string} - */ - state: - | "error" - | "failure" - | "inactive" - | "pending" - | "success" - | "queued" - | "in_progress"; - creator: components["schemas"]["nullable-simple-user"]; - /** - * @description A short description of the status. - * @default - * @example Deployment finished successfully. - */ - description: string; - /** - * @description The environment of the deployment that the status is for. - * @default - * @example production - */ - environment?: string; - /** - * Format: uri - * @description Closing down notice: the URL to associate with this status. - * @default - * @example https://example.com/deployment/42/output - */ - target_url: string; - /** - * Format: date-time - * @example 2012-07-20T01:19:13Z - */ - created_at: string; - /** - * Format: date-time - * @example 2012-07-20T01:19:13Z - */ - updated_at: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/example/deployments/42 - */ - deployment_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/example - */ - repository_url: string; - /** - * Format: uri - * @description The URL for accessing your environment. - * @default - * @example https://staging.example.com/ - */ - environment_url?: string; - /** - * Format: uri - * @description The URL to associate with this status. - * @default - * @example https://example.com/deployment/42/output - */ - log_url?: string; - performed_via_github_app?: components["schemas"]["nullable-integration"]; - }; - /** - * @description The amount of time to delay a job after the job is initially triggered. The time (in minutes) must be an integer between 0 and 43,200 (30 days). - * @example 30 - */ - "wait-timer": number; - /** @description The type of deployment branch policy for this environment. To allow all branches to deploy, set to `null`. */ - "deployment-branch-policy-settings": { - /** @description Whether only branches with branch protection rules can deploy to this environment. If `protected_branches` is `true`, `custom_branch_policies` must be `false`; if `protected_branches` is `false`, `custom_branch_policies` must be `true`. */ - protected_branches: boolean; - /** @description Whether only branches that match the specified name patterns can deploy to this environment. If `custom_branch_policies` is `true`, `protected_branches` must be `false`; if `custom_branch_policies` is `false`, `protected_branches` must be `true`. */ - custom_branch_policies: boolean; - } | null; - /** - * Environment - * @description Details of a deployment environment - */ - environment: { - /** - * Format: int64 - * @description The id of the environment. - * @example 56780428 - */ - id: number; - /** @example MDExOkVudmlyb25tZW50NTY3ODA0Mjg= */ - node_id: string; - /** - * @description The name of the environment. - * @example staging - */ - name: string; - /** @example https://api.github.com/repos/github/hello-world/environments/staging */ - url: string; - /** @example https://github.com/github/hello-world/deployments/activity_log?environments_filter=staging */ - html_url: string; - /** - * Format: date-time - * @description The time that the environment was created, in ISO 8601 format. - * @example 2020-11-23T22:00:40Z - */ - created_at: string; - /** - * Format: date-time - * @description The time that the environment was last updated, in ISO 8601 format. - * @example 2020-11-23T22:00:40Z - */ - updated_at: string; - /** @description Built-in deployment protection rules for the environment. */ - protection_rules?: ( - | { - /** @example 3515 */ - id: number; - /** @example MDQ6R2F0ZTM1MTU= */ - node_id: string; - /** @example wait_timer */ - type: string; - wait_timer?: components["schemas"]["wait-timer"]; - } - | { - /** @example 3755 */ - id: number; - /** @example MDQ6R2F0ZTM3NTU= */ - node_id: string; - /** - * @description Whether deployments to this environment can be approved by the user who created the deployment. - * @example false - */ - prevent_self_review?: boolean; - /** @example required_reviewers */ - type: string; - /** @description The people or teams that may approve jobs that reference the environment. You can list up to six users or teams as reviewers. The reviewers must have at least read access to the repository. Only one of the required reviewers needs to approve the job for it to proceed. */ - reviewers?: { - type?: components["schemas"]["deployment-reviewer-type"]; - reviewer?: - | components["schemas"]["simple-user"] - | components["schemas"]["team"]; - }[]; - } - | { - /** @example 3515 */ - id: number; - /** @example MDQ6R2F0ZTM1MTU= */ - node_id: string; - /** @example branch_policy */ - type: string; - } - )[]; - deployment_branch_policy?: components["schemas"]["deployment-branch-policy-settings"]; - }; - /** - * @description Whether or not a user who created the job is prevented from approving their own job. - * @example false - */ - "prevent-self-review": boolean; - /** - * Deployment branch policy - * @description Details of a deployment branch or tag policy. - */ - "deployment-branch-policy": { - /** - * @description The unique identifier of the branch or tag policy. - * @example 361471 - */ - id?: number; - /** @example MDE2OkdhdGVCcmFuY2hQb2xpY3kzNjE0NzE= */ - node_id?: string; - /** - * @description The name pattern that branches or tags must match in order to deploy to the environment. - * @example release/* - */ - name?: string; - /** - * @description Whether this rule targets a branch or tag. - * @example branch - * @enum {string} - */ - type?: "branch" | "tag"; - }; - /** Deployment branch and tag policy name pattern */ - "deployment-branch-policy-name-pattern-with-type": { - /** - * @description The name pattern that branches or tags must match in order to deploy to the environment. - * - * Wildcard characters will not match `/`. For example, to match branches that begin with `release/` and contain an additional single slash, use `release/*\/*`. - * For more information about pattern matching syntax, see the [Ruby File.fnmatch documentation](https://ruby-doc.org/core-2.5.1/File.html#method-c-fnmatch). - * @example release/* - */ - name: string; - /** - * @description Whether this rule targets a branch or tag - * @example branch - * @enum {string} - */ - type?: "branch" | "tag"; - }; - /** Deployment branch policy name pattern */ - "deployment-branch-policy-name-pattern": { - /** - * @description The name pattern that branches must match in order to deploy to the environment. - * - * Wildcard characters will not match `/`. For example, to match branches that begin with `release/` and contain an additional single slash, use `release/*\/*`. - * For more information about pattern matching syntax, see the [Ruby File.fnmatch documentation](https://ruby-doc.org/core-2.5.1/File.html#method-c-fnmatch). - * @example release/* - */ - name: string; - }; - /** - * Custom deployment protection rule app - * @description A GitHub App that is providing a custom deployment protection rule. - */ - "custom-deployment-rule-app": { - /** - * @description The unique identifier of the deployment protection rule integration. - * @example 3515 - */ - id: number; - /** - * @description The slugified name of the deployment protection rule integration. - * @example my-custom-app - */ - slug: string; - /** - * @description The URL for the endpoint to get details about the app. - * @example https://api.github.com/apps/custom-app-slug - */ - integration_url: string; - /** - * @description The node ID for the deployment protection rule integration. - * @example MDQ6R2F0ZTM1MTU= - */ - node_id: string; - }; - /** - * Deployment protection rule - * @description Deployment protection rule - */ - "deployment-protection-rule": { - /** - * @description The unique identifier for the deployment protection rule. - * @example 3515 - */ - id: number; - /** - * @description The node ID for the deployment protection rule. - * @example MDQ6R2F0ZTM1MTU= - */ - node_id: string; - /** - * @description Whether the deployment protection rule is enabled for the environment. - * @example true - */ - enabled: boolean; - app: components["schemas"]["custom-deployment-rule-app"]; - }; - /** - * Short Blob - * @description Short Blob - */ - "short-blob": { - url: string; - sha: string; - }; - /** - * Blob - * @description Blob - */ - blob: { - content: string; - encoding: string; - /** Format: uri */ - url: string; - sha: string; - size: number | null; - node_id: string; - highlighted_content?: string; - }; - /** - * Git Commit - * @description Low-level Git commit operations within a repository - */ - "git-commit": { - /** - * @description SHA for the commit - * @example 7638417db6d59f3c431d3e1f261cc637155684cd - */ - sha: string; - node_id: string; - /** Format: uri */ - url: string; - /** @description Identifying information for the git-user */ - author: { - /** - * Format: date-time - * @description Timestamp of the commit - * @example 2014-08-09T08:02:04+12:00 - */ - date: string; - /** - * @description Git email address of the user - * @example monalisa.octocat@example.com - */ - email: string; - /** - * @description Name of the git user - * @example Monalisa Octocat - */ - name: string; - }; - /** @description Identifying information for the git-user */ - committer: { - /** - * Format: date-time - * @description Timestamp of the commit - * @example 2014-08-09T08:02:04+12:00 - */ - date: string; - /** - * @description Git email address of the user - * @example monalisa.octocat@example.com - */ - email: string; - /** - * @description Name of the git user - * @example Monalisa Octocat - */ - name: string; - }; - /** - * @description Message describing the purpose of the commit - * @example Fix #42 - */ - message: string; - tree: { - /** - * @description SHA for the commit - * @example 7638417db6d59f3c431d3e1f261cc637155684cd - */ - sha: string; - /** Format: uri */ - url: string; - }; - parents: { - /** - * @description SHA for the commit - * @example 7638417db6d59f3c431d3e1f261cc637155684cd - */ - sha: string; - /** Format: uri */ - url: string; - /** Format: uri */ - html_url: string; - }[]; - verification: { - verified: boolean; - reason: string; - signature: string | null; - payload: string | null; - verified_at: string | null; - }; - /** Format: uri */ - html_url: string; - }; - /** - * Git Reference - * @description Git references within a repository - */ - "git-ref": { - ref: string; - node_id: string; - /** Format: uri */ - url: string; - object: { - type: string; - /** - * @description SHA for the reference - * @example 7638417db6d59f3c431d3e1f261cc637155684cd - */ - sha: string; - /** Format: uri */ - url: string; - }; - }; - /** - * Git Tag - * @description Metadata for a Git tag - */ - "git-tag": { - /** @example MDM6VGFnOTQwYmQzMzYyNDhlZmFlMGY5ZWU1YmM3YjJkNWM5ODU4ODdiMTZhYw== */ - node_id: string; - /** - * @description Name of the tag - * @example v0.0.1 - */ - tag: string; - /** @example 940bd336248efae0f9ee5bc7b2d5c985887b16ac */ - sha: string; - /** - * Format: uri - * @description URL for the tag - * @example https://api.github.com/repositories/42/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac - */ - url: string; - /** - * @description Message describing the purpose of the tag - * @example Initial public release - */ - message: string; - tagger: { - date: string; - email: string; - name: string; - }; - object: { - sha: string; - type: string; - /** Format: uri */ - url: string; - }; - verification?: components["schemas"]["verification"]; - }; - /** - * Git Tree - * @description The hierarchy between files in a Git repository. - */ - "git-tree": { - sha: string; - /** Format: uri */ - url?: string; - truncated: boolean; - /** - * @description Objects specifying a tree structure - * @example [ - * { - * "path": "file.rb", - * "mode": "100644", - * "type": "blob", - * "size": 30, - * "sha": "44b4fc6d56897b048c772eb4087f854f46256132", - * "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132" - * } - * ] - */ - tree: { - /** @example test/file.rb */ - path: string; - /** @example 040000 */ - mode: string; - /** @example tree */ - type: string; - /** @example 23f6827669e43831def8a7ad935069c8bd418261 */ - sha: string; - /** @example 12 */ - size?: number; - /** @example https://api.github.com/repos/owner-482f3203ecf01f67e9deb18e/BBB_Private_Repo/git/blobs/23f6827669e43831def8a7ad935069c8bd418261 */ - url?: string; - }[]; - }; - /** Hook Response */ - "hook-response": { - code: number | null; - status: string | null; - message: string | null; - }; - /** - * Webhook - * @description Webhooks for repositories. - */ - hook: { - type: string; - /** - * @description Unique identifier of the webhook. - * @example 42 - */ - id: number; - /** - * @description The name of a valid service, use 'web' for a webhook. - * @example web - */ - name: string; - /** - * @description Determines whether the hook is actually triggered on pushes. - * @example true - */ - active: boolean; - /** - * @description Determines what events the hook is triggered for. Default: ['push']. - * @example [ - * "push", - * "pull_request" - * ] - */ - events: string[]; - config: components["schemas"]["webhook-config"]; - /** - * Format: date-time - * @example 2011-09-06T20:39:23Z - */ - updated_at: string; - /** - * Format: date-time - * @example 2011-09-06T17:26:27Z - */ - created_at: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/hooks/1 - */ - url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/hooks/1/test - */ - test_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/hooks/1/pings - */ - ping_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/hooks/1/deliveries - */ - deliveries_url?: string; - last_response: components["schemas"]["hook-response"]; - }; - /** - * Check immutable releases - * @description Check immutable releases - */ - "check-immutable-releases": { - /** - * @description Whether immutable releases are enabled for the repository. - * @example true - */ - enabled: boolean; - /** - * @description Whether immutable releases are enforced by the repository owner. - * @example false - */ - enforced_by_owner: boolean; - }; - /** - * Import - * @description A repository import from an external source. - */ - import: { - vcs: string | null; - use_lfs?: boolean; - /** @description The URL of the originating repository. */ - vcs_url: string; - svc_root?: string; - tfvc_project?: string; - /** @enum {string} */ - status: - | "auth" - | "error" - | "none" - | "detecting" - | "choose" - | "auth_failed" - | "importing" - | "mapping" - | "waiting_to_push" - | "pushing" - | "complete" - | "setup" - | "unknown" - | "detection_found_multiple" - | "detection_found_nothing" - | "detection_needs_auth"; - status_text?: string | null; - failed_step?: string | null; - error_message?: string | null; - import_percent?: number | null; - commit_count?: number | null; - push_percent?: number | null; - has_large_files?: boolean; - large_files_size?: number; - large_files_count?: number; - project_choices?: { - vcs?: string; - tfvc_project?: string; - human_name?: string; - }[]; - message?: string; - authors_count?: number | null; - /** Format: uri */ - url: string; - /** Format: uri */ - html_url: string; - /** Format: uri */ - authors_url: string; - /** Format: uri */ - repository_url: string; - svn_root?: string; - }; - /** - * Porter Author - * @description Porter Author - */ - "porter-author": { - id: number; - remote_id: string; - remote_name: string; - email: string; - name: string; - /** Format: uri */ - url: string; - /** Format: uri */ - import_url: string; - }; - /** - * Porter Large File - * @description Porter Large File - */ - "porter-large-file": { - ref_name: string; - path: string; - oid: string; - size: number; - }; - /** - * Issue - * @description Issues are a great way to keep track of tasks, enhancements, and bugs for your projects. - */ - "nullable-issue": { - /** Format: int64 */ - id: number; - node_id: string; - /** - * Format: uri - * @description URL for the issue - * @example https://api.github.com/repositories/42/issues/1 - */ - url: string; - /** Format: uri */ - repository_url: string; - labels_url: string; - /** Format: uri */ - comments_url: string; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** - * @description Number uniquely identifying the issue within its repository - * @example 42 - */ - number: number; - /** - * @description State of the issue; either 'open' or 'closed' - * @example open - */ - state: string; - /** - * @description The reason for the current state - * @example not_planned - * @enum {string|null} - */ - state_reason?: - | "completed" - | "reopened" - | "not_planned" - | "duplicate" - | null; - /** - * @description Title of the issue - * @example Widget creation fails in Safari on OS X 10.8 - */ - title: string; - /** - * @description Contents of the issue - * @example It looks like the new widget form is broken on Safari. When I try and create the widget, Safari crashes. This is reproducible on 10.8, but not 10.9. Maybe a browser bug? - */ - body?: string | null; - user: components["schemas"]["nullable-simple-user"]; - /** - * @description Labels to associate with this issue; pass one or more label names to replace the set of labels on this issue; send an empty array to clear all labels from the issue; note that the labels are silently dropped for users without push access to the repository - * @example [ - * "bug", - * "registration" - * ] - */ - labels: OneOf< - [ - string, - { - /** Format: int64 */ - id?: number; - node_id?: string; - /** Format: uri */ - url?: string; - name?: string; - description?: string | null; - color?: string | null; - default?: boolean; - }, - ] - >[]; - assignee: components["schemas"]["nullable-simple-user"]; - assignees?: components["schemas"]["simple-user"][] | null; - milestone: components["schemas"]["nullable-milestone"]; - locked: boolean; - active_lock_reason?: string | null; - comments: number; - pull_request?: { - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - diff_url: string | null; - /** Format: uri */ - html_url: string | null; - /** Format: uri */ - patch_url: string | null; - /** Format: uri */ - url: string | null; - }; - /** Format: date-time */ - closed_at: string | null; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - draft?: boolean; - closed_by?: components["schemas"]["nullable-simple-user"]; - body_html?: string; - body_text?: string; - /** Format: uri */ - timeline_url?: string; - type?: components["schemas"]["issue-type"]; - repository?: components["schemas"]["repository"]; - performed_via_github_app?: components["schemas"]["nullable-integration"]; - author_association?: components["schemas"]["author-association"]; - reactions?: components["schemas"]["reaction-rollup"]; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - /** - * Format: uri - * @description URL to get the parent issue of this issue, if it is a sub-issue - */ - parent_issue_url?: string | null; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - } | null; - /** - * Issue Event Label - * @description Issue Event Label - */ - "issue-event-label": { - name: string | null; - color: string | null; - }; - /** Issue Event Dismissed Review */ - "issue-event-dismissed-review": { - state: string; - review_id: number; - dismissal_message: string | null; - dismissal_commit_id?: string | null; - }; - /** - * Issue Event Milestone - * @description Issue Event Milestone - */ - "issue-event-milestone": { - title: string; - }; - /** - * Issue Event Project Card - * @description Issue Event Project Card - */ - "issue-event-project-card": { - /** Format: uri */ - url: string; - id: number; - /** Format: uri */ - project_url: string; - project_id: number; - column_name: string; - previous_column_name?: string; - }; - /** - * Issue Event Rename - * @description Issue Event Rename - */ - "issue-event-rename": { - from: string; - to: string; - }; - /** - * Issue Event - * @description Issue Event - */ - "issue-event": { - /** - * Format: int64 - * @example 1 - */ - id: number; - /** @example MDEwOklzc3VlRXZlbnQx */ - node_id: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/issues/events/1 - */ - url: string; - actor: components["schemas"]["nullable-simple-user"]; - /** @example closed */ - event: string; - /** @example 6dcb09b5b57875f334f61aebed695e2e4193db5e */ - commit_id: string | null; - /** @example https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e */ - commit_url: string | null; - /** - * Format: date-time - * @example 2011-04-14T16:00:49Z - */ - created_at: string; - issue?: components["schemas"]["nullable-issue"]; - label?: components["schemas"]["issue-event-label"]; - assignee?: components["schemas"]["nullable-simple-user"]; - assigner?: components["schemas"]["nullable-simple-user"]; - review_requester?: components["schemas"]["nullable-simple-user"]; - requested_reviewer?: components["schemas"]["nullable-simple-user"]; - requested_team?: components["schemas"]["team"]; - dismissed_review?: components["schemas"]["issue-event-dismissed-review"]; - milestone?: components["schemas"]["issue-event-milestone"]; - project_card?: components["schemas"]["issue-event-project-card"]; - rename?: components["schemas"]["issue-event-rename"]; - author_association?: components["schemas"]["author-association"]; - lock_reason?: string | null; - performed_via_github_app?: components["schemas"]["nullable-integration"]; - }; - /** - * Labeled Issue Event - * @description Labeled Issue Event - */ - "labeled-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - label: { - name: string; - color: string; - }; - }; - /** - * Unlabeled Issue Event - * @description Unlabeled Issue Event - */ - "unlabeled-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - label: { - name: string; - color: string; - }; - }; - /** - * Assigned Issue Event - * @description Assigned Issue Event - */ - "assigned-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["integration"]; - assignee: components["schemas"]["simple-user"]; - assigner: components["schemas"]["simple-user"]; - }; - /** - * Unassigned Issue Event - * @description Unassigned Issue Event - */ - "unassigned-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - assignee: components["schemas"]["simple-user"]; - assigner: components["schemas"]["simple-user"]; - }; - /** - * Milestoned Issue Event - * @description Milestoned Issue Event - */ - "milestoned-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - milestone: { - title: string; - }; - }; - /** - * Demilestoned Issue Event - * @description Demilestoned Issue Event - */ - "demilestoned-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - milestone: { - title: string; - }; - }; - /** - * Renamed Issue Event - * @description Renamed Issue Event - */ - "renamed-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - rename: { - from: string; - to: string; - }; - }; - /** - * Review Requested Issue Event - * @description Review Requested Issue Event - */ - "review-requested-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - review_requester: components["schemas"]["simple-user"]; - requested_team?: components["schemas"]["team"]; - requested_reviewer?: components["schemas"]["simple-user"]; - }; - /** - * Review Request Removed Issue Event - * @description Review Request Removed Issue Event - */ - "review-request-removed-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - review_requester: components["schemas"]["simple-user"]; - requested_team?: components["schemas"]["team"]; - requested_reviewer?: components["schemas"]["simple-user"]; - }; - /** - * Review Dismissed Issue Event - * @description Review Dismissed Issue Event - */ - "review-dismissed-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - dismissed_review: { - state: string; - review_id: number; - dismissal_message: string | null; - dismissal_commit_id?: string; - }; - }; - /** - * Locked Issue Event - * @description Locked Issue Event - */ - "locked-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - /** @example "off-topic" */ - lock_reason: string | null; - }; - /** - * Added to Project Issue Event - * @description Added to Project Issue Event - */ - "added-to-project-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - project_card?: { - id: number; - /** Format: uri */ - url: string; - project_id: number; - /** Format: uri */ - project_url: string; - column_name: string; - previous_column_name?: string; - }; - }; - /** - * Moved Column in Project Issue Event - * @description Moved Column in Project Issue Event - */ - "moved-column-in-project-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - project_card?: { - id: number; - /** Format: uri */ - url: string; - project_id: number; - /** Format: uri */ - project_url: string; - column_name: string; - previous_column_name?: string; - }; - }; - /** - * Removed from Project Issue Event - * @description Removed from Project Issue Event - */ - "removed-from-project-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - project_card?: { - id: number; - /** Format: uri */ - url: string; - project_id: number; - /** Format: uri */ - project_url: string; - column_name: string; - previous_column_name?: string; - }; - }; - /** - * Converted Note to Issue Issue Event - * @description Converted Note to Issue Issue Event - */ - "converted-note-to-issue-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["integration"]; - project_card?: { - id: number; - /** Format: uri */ - url: string; - project_id: number; - /** Format: uri */ - project_url: string; - column_name: string; - previous_column_name?: string; - }; - }; - /** - * Issue Event for Issue - * @description Issue Event for Issue - */ - "issue-event-for-issue": - | components["schemas"]["labeled-issue-event"] - | components["schemas"]["unlabeled-issue-event"] - | components["schemas"]["assigned-issue-event"] - | components["schemas"]["unassigned-issue-event"] - | components["schemas"]["milestoned-issue-event"] - | components["schemas"]["demilestoned-issue-event"] - | components["schemas"]["renamed-issue-event"] - | components["schemas"]["review-requested-issue-event"] - | components["schemas"]["review-request-removed-issue-event"] - | components["schemas"]["review-dismissed-issue-event"] - | components["schemas"]["locked-issue-event"] - | components["schemas"]["added-to-project-issue-event"] - | components["schemas"]["moved-column-in-project-issue-event"] - | components["schemas"]["removed-from-project-issue-event"] - | components["schemas"]["converted-note-to-issue-issue-event"]; - /** - * Label - * @description Color-coded labels help you categorize and filter your issues (just like labels in Gmail). - */ - label: { - /** - * Format: int64 - * @description Unique identifier for the label. - * @example 208045946 - */ - id: number; - /** @example MDU6TGFiZWwyMDgwNDU5NDY= */ - node_id: string; - /** - * Format: uri - * @description URL for the label - * @example https://api.github.com/repositories/42/labels/bug - */ - url: string; - /** - * @description The name of the label. - * @example bug - */ - name: string; - /** - * @description Optional description of the label, such as its purpose. - * @example Something isn't working - */ - description: string | null; - /** - * @description 6-character hex code, without the leading #, identifying the color - * @example FFFFFF - */ - color: string; - /** - * @description Whether this label comes by default in a new repository. - * @example true - */ - default: boolean; - }; - /** - * Timeline Comment Event - * @description Timeline Comment Event - */ - "timeline-comment-event": { - event: string; - actor: components["schemas"]["simple-user"]; - /** - * @description Unique identifier of the issue comment - * @example 42 - */ - id: number; - node_id: string; - /** - * Format: uri - * @description URL for the issue comment - * @example https://api.github.com/repositories/42/issues/comments/1 - */ - url: string; - /** - * @description Contents of the issue comment - * @example What version of Safari were you using when you observed this bug? - */ - body?: string; - body_text?: string; - body_html?: string; - /** Format: uri */ - html_url: string; - user: components["schemas"]["simple-user"]; - /** - * Format: date-time - * @example 2011-04-14T16:00:49Z - */ - created_at: string; - /** - * Format: date-time - * @example 2011-04-14T16:00:49Z - */ - updated_at: string; - /** Format: uri */ - issue_url: string; - author_association: components["schemas"]["author-association"]; - performed_via_github_app?: components["schemas"]["nullable-integration"]; - reactions?: components["schemas"]["reaction-rollup"]; - }; - /** - * Timeline Cross Referenced Event - * @description Timeline Cross Referenced Event - */ - "timeline-cross-referenced-event": { - event: string; - actor?: components["schemas"]["simple-user"]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - source: { - type?: string; - issue?: components["schemas"]["issue"]; - }; - }; - /** - * Timeline Committed Event - * @description Timeline Committed Event - */ - "timeline-committed-event": { - event?: string; - /** - * @description SHA for the commit - * @example 7638417db6d59f3c431d3e1f261cc637155684cd - */ - sha: string; - node_id: string; - /** Format: uri */ - url: string; - /** @description Identifying information for the git-user */ - author: { - /** - * Format: date-time - * @description Timestamp of the commit - * @example 2014-08-09T08:02:04+12:00 - */ - date: string; - /** - * @description Git email address of the user - * @example monalisa.octocat@example.com - */ - email: string; - /** - * @description Name of the git user - * @example Monalisa Octocat - */ - name: string; - }; - /** @description Identifying information for the git-user */ - committer: { - /** - * Format: date-time - * @description Timestamp of the commit - * @example 2014-08-09T08:02:04+12:00 - */ - date: string; - /** - * @description Git email address of the user - * @example monalisa.octocat@example.com - */ - email: string; - /** - * @description Name of the git user - * @example Monalisa Octocat - */ - name: string; - }; - /** - * @description Message describing the purpose of the commit - * @example Fix #42 - */ - message: string; - tree: { - /** - * @description SHA for the commit - * @example 7638417db6d59f3c431d3e1f261cc637155684cd - */ - sha: string; - /** Format: uri */ - url: string; - }; - parents: { - /** - * @description SHA for the commit - * @example 7638417db6d59f3c431d3e1f261cc637155684cd - */ - sha: string; - /** Format: uri */ - url: string; - /** Format: uri */ - html_url: string; - }[]; - verification: { - verified: boolean; - reason: string; - signature: string | null; - payload: string | null; - verified_at: string | null; - }; - /** Format: uri */ - html_url: string; - }; - /** - * Timeline Reviewed Event - * @description Timeline Reviewed Event - */ - "timeline-reviewed-event": { - event: string; - /** - * @description Unique identifier of the review - * @example 42 - */ - id: number; - /** @example MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA= */ - node_id: string; - user: components["schemas"]["simple-user"]; - /** - * @description The text of the review. - * @example This looks great. - */ - body: string | null; - /** @example CHANGES_REQUESTED */ - state: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80 - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/pulls/12 - */ - pull_request_url: string; - _links: { - html: { - href: string; - }; - pull_request: { - href: string; - }; - }; - /** Format: date-time */ - submitted_at?: string; - /** Format: date-time */ - updated_at?: string | null; - /** - * @description A commit SHA for the review. - * @example 54bb654c9e6025347f57900a4a5c2313a96b8035 - */ - commit_id: string; - body_html?: string; - body_text?: string; - author_association: components["schemas"]["author-association"]; - }; - /** - * Pull Request Review Comment - * @description Pull Request Review Comments are comments on a portion of the Pull Request's diff. - */ - "pull-request-review-comment": { - /** - * @description URL for the pull request review comment - * @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/1 - */ - url: string; - /** - * Format: int64 - * @description The ID of the pull request review to which the comment belongs. - * @example 42 - */ - pull_request_review_id: number | null; - /** - * Format: int64 - * @description The ID of the pull request review comment. - * @example 1 - */ - id: number; - /** - * @description The node ID of the pull request review comment. - * @example MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw - */ - node_id: string; - /** - * @description The diff of the line that the comment refers to. - * @example @@ -16,33 +16,40 @@ public class Connection : IConnection... - */ - diff_hunk: string; - /** - * @description The relative path of the file to which the comment applies. - * @example config/database.yaml - */ - path: string; - /** - * @description The line index in the diff to which the comment applies. This field is closing down; use `line` instead. - * @example 1 - */ - position?: number; - /** - * @description The index of the original line in the diff to which the comment applies. This field is closing down; use `original_line` instead. - * @example 4 - */ - original_position?: number; - /** - * @description The SHA of the commit to which the comment applies. - * @example 6dcb09b5b57875f334f61aebed695e2e4193db5e - */ - commit_id: string; - /** - * @description The SHA of the original commit to which the comment applies. - * @example 9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840 - */ - original_commit_id: string; - /** - * @description The comment ID to reply to. - * @example 8 - */ - in_reply_to_id?: number; - user: components["schemas"]["simple-user"]; - /** - * @description The text of the comment. - * @example We should probably include a check for null values here. - */ - body: string; - /** - * Format: date-time - * @example 2011-04-14T16:00:49Z - */ - created_at: string; - /** - * Format: date-time - * @example 2011-04-14T16:00:49Z - */ - updated_at: string; - /** - * Format: uri - * @description HTML URL for the pull request review comment. - * @example https://github.com/octocat/Hello-World/pull/1#discussion-diff-1 - */ - html_url: string; - /** - * Format: uri - * @description URL for the pull request that the review comment belongs to. - * @example https://api.github.com/repos/octocat/Hello-World/pulls/1 - */ - pull_request_url: string; - author_association: components["schemas"]["author-association"]; - _links: { - self: { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/1 - */ - href: string; - }; - html: { - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/pull/1#discussion-diff-1 - */ - href: string; - }; - pull_request: { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/pulls/1 - */ - href: string; - }; - }; - /** - * @description The first line of the range for a multi-line comment. - * @example 2 - */ - start_line?: number | null; - /** - * @description The first line of the range for a multi-line comment. - * @example 2 - */ - original_start_line?: number | null; - /** - * @description The side of the first line of the range for a multi-line comment. - * @default RIGHT - * @enum {string|null} - */ - start_side?: "LEFT" | "RIGHT" | null; - /** - * @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment - * @example 2 - */ - line?: number; - /** - * @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment - * @example 2 - */ - original_line?: number; - /** - * @description The side of the diff to which the comment applies. The side of the last line of the range for a multi-line comment - * @default RIGHT - * @enum {string} - */ - side?: "LEFT" | "RIGHT"; - /** - * @description The level at which the comment is targeted, can be a diff line or a file. - * @enum {string} - */ - subject_type?: "line" | "file"; - reactions?: components["schemas"]["reaction-rollup"]; - /** @example "

comment body

" */ - body_html?: string; - /** @example "comment body" */ - body_text?: string; - }; - /** - * Timeline Line Commented Event - * @description Timeline Line Commented Event - */ - "timeline-line-commented-event": { - event?: string; - node_id?: string; - comments?: components["schemas"]["pull-request-review-comment"][]; - }; - /** - * Timeline Commit Commented Event - * @description Timeline Commit Commented Event - */ - "timeline-commit-commented-event": { - event?: string; - node_id?: string; - commit_id?: string; - comments?: components["schemas"]["commit-comment"][]; - }; - /** - * Timeline Assigned Issue Event - * @description Timeline Assigned Issue Event - */ - "timeline-assigned-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - assignee: components["schemas"]["simple-user"]; - }; - /** - * Timeline Unassigned Issue Event - * @description Timeline Unassigned Issue Event - */ - "timeline-unassigned-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - assignee: components["schemas"]["simple-user"]; - }; - /** - * State Change Issue Event - * @description State Change Issue Event - */ - "state-change-issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"]; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - state_reason?: string | null; - }; - /** - * Timeline Event - * @description Timeline Event - */ - "timeline-issue-events": - | components["schemas"]["labeled-issue-event"] - | components["schemas"]["unlabeled-issue-event"] - | components["schemas"]["milestoned-issue-event"] - | components["schemas"]["demilestoned-issue-event"] - | components["schemas"]["renamed-issue-event"] - | components["schemas"]["review-requested-issue-event"] - | components["schemas"]["review-request-removed-issue-event"] - | components["schemas"]["review-dismissed-issue-event"] - | components["schemas"]["locked-issue-event"] - | components["schemas"]["added-to-project-issue-event"] - | components["schemas"]["moved-column-in-project-issue-event"] - | components["schemas"]["removed-from-project-issue-event"] - | components["schemas"]["converted-note-to-issue-issue-event"] - | components["schemas"]["timeline-comment-event"] - | components["schemas"]["timeline-cross-referenced-event"] - | components["schemas"]["timeline-committed-event"] - | components["schemas"]["timeline-reviewed-event"] - | components["schemas"]["timeline-line-commented-event"] - | components["schemas"]["timeline-commit-commented-event"] - | components["schemas"]["timeline-assigned-issue-event"] - | components["schemas"]["timeline-unassigned-issue-event"] - | components["schemas"]["state-change-issue-event"]; - /** - * Deploy Key - * @description An SSH key granting access to a single repository. - */ - "deploy-key": { - id: number; - key: string; - url: string; - title: string; - verified: boolean; - created_at: string; - read_only: boolean; - added_by?: string | null; - /** Format: date-time */ - last_used?: string | null; - enabled?: boolean; - }; - /** - * Language - * @description Language - */ - language: { - [key: string]: number; - }; - /** - * License Content - * @description License Content - */ - "license-content": { - name: string; - path: string; - sha: string; - size: number; - /** Format: uri */ - url: string; - /** Format: uri */ - html_url: string | null; - /** Format: uri */ - git_url: string | null; - /** Format: uri */ - download_url: string | null; - type: string; - content: string; - encoding: string; - _links: { - /** Format: uri */ - git: string | null; - /** Format: uri */ - html: string | null; - /** Format: uri */ - self: string; - }; - license: components["schemas"]["nullable-license-simple"]; - }; - /** - * Merged upstream - * @description Results of a successful merge upstream request - */ - "merged-upstream": { - message?: string; - /** @enum {string} */ - merge_type?: "merge" | "fast-forward" | "none"; - base_branch?: string; - }; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/milestones/1 - */ - url: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/milestones/v1.0 - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/milestones/1/labels - */ - labels_url: string; - /** @example 1002604 */ - id: number; - /** @example MDk6TWlsZXN0b25lMTAwMjYwNA== */ - node_id: string; - /** - * @description The number of the milestone. - * @example 42 - */ - number: number; - /** - * @description The state of the milestone. - * @default open - * @example open - * @enum {string} - */ - state: "open" | "closed"; - /** - * @description The title of the milestone. - * @example v1.0 - */ - title: string; - /** @example Tracking milestone for version 1.0 */ - description: string | null; - creator: components["schemas"]["nullable-simple-user"]; - /** @example 4 */ - open_issues: number; - /** @example 8 */ - closed_issues: number; - /** - * Format: date-time - * @example 2011-04-10T20:09:31Z - */ - created_at: string; - /** - * Format: date-time - * @example 2014-03-03T18:58:10Z - */ - updated_at: string; - /** - * Format: date-time - * @example 2013-02-12T13:22:01Z - */ - closed_at: string | null; - /** - * Format: date-time - * @example 2012-10-09T23:39:01Z - */ - due_on: string | null; - }; - /** Pages Source Hash */ - "pages-source-hash": { - branch: string; - path: string; - }; - /** Pages Https Certificate */ - "pages-https-certificate": { - /** - * @example approved - * @enum {string} - */ - state: - | "new" - | "authorization_created" - | "authorization_pending" - | "authorized" - | "authorization_revoked" - | "issued" - | "uploaded" - | "approved" - | "errored" - | "bad_authz" - | "destroy_pending" - | "dns_changed"; - /** @example Certificate is approved */ - description: string; - /** - * @description Array of the domain set and its alternate name (if it is configured) - * @example [ - * "example.com", - * "www.example.com" - * ] - */ - domains: string[]; - /** Format: date */ - expires_at?: string; - }; - /** - * GitHub Pages - * @description The configuration for GitHub Pages for a repository. - */ - page: { - /** - * Format: uri - * @description The API address for accessing this Page resource. - * @example https://api.github.com/repos/github/hello-world/pages - */ - url: string; - /** - * @description The status of the most recent build of the Page. - * @example built - * @enum {string|null} - */ - status: "built" | "building" | "errored" | null; - /** - * @description The Pages site's custom domain - * @example example.com - */ - cname: string | null; - /** - * @description The state if the domain is verified - * @example pending - * @enum {string|null} - */ - protected_domain_state?: "pending" | "verified" | "unverified" | null; - /** - * Format: date-time - * @description The timestamp when a pending domain becomes unverified. - */ - pending_domain_unverified_at?: string | null; - /** - * @description Whether the Page has a custom 404 page. - * @default false - * @example false - */ - custom_404: boolean; - /** - * Format: uri - * @description The web address the Page can be accessed from. - * @example https://example.com - */ - html_url?: string; - /** - * @description The process in which the Page will be built. - * @example legacy - * @enum {string|null} - */ - build_type?: "legacy" | "workflow" | null; - source?: components["schemas"]["pages-source-hash"]; - /** - * @description Whether the GitHub Pages site is publicly visible. If set to `true`, the site is accessible to anyone on the internet. If set to `false`, the site will only be accessible to users who have at least `read` access to the repository that published the site. - * @example true - */ - public: boolean; - https_certificate?: components["schemas"]["pages-https-certificate"]; - /** - * @description Whether https is enabled on the domain - * @example true - */ - https_enforced?: boolean; - }; - /** - * Page Build - * @description Page Build - */ - "page-build": { - /** Format: uri */ - url: string; - status: string; - error: { - message: string | null; - }; - pusher: components["schemas"]["nullable-simple-user"]; - commit: string; - duration: number; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - }; - /** - * Page Build Status - * @description Page Build Status - */ - "page-build-status": { - /** - * Format: uri - * @example https://api.github.com/repos/github/hello-world/pages/builds/latest - */ - url: string; - /** @example queued */ - status: string; - }; - /** - * GitHub Pages - * @description The GitHub Pages deployment status. - */ - "page-deployment": { - /** @description The ID of the GitHub Pages deployment. This is the Git SHA of the deployed commit. */ - id: number | string; - /** - * Format: uri - * @description The URI to monitor GitHub Pages deployment status. - * @example https://api.github.com/repos/github/hello-world/pages/deployments/4fd754f7e594640989b406850d0bc8f06a121251 - */ - status_url: string; - /** - * Format: uri - * @description The URI to the deployed GitHub Pages. - * @example hello-world.github.io - */ - page_url: string; - /** - * Format: uri - * @description The URI to the deployed GitHub Pages preview. - * @example monalisa-1231a2312sa32-23sda74.drafts.github.io - */ - preview_url?: string; - }; - /** GitHub Pages deployment status */ - "pages-deployment-status": { - /** - * @description The current status of the deployment. - * @enum {string} - */ - status?: - | "deployment_in_progress" - | "syncing_files" - | "finished_file_sync" - | "updating_pages" - | "purging_cdn" - | "deployment_cancelled" - | "deployment_failed" - | "deployment_content_failed" - | "deployment_attempt_error" - | "deployment_lost" - | "succeed"; - }; - /** - * Pages Health Check Status - * @description Pages Health Check Status - */ - "pages-health-check": { - domain?: { - host?: string; - uri?: string; - nameservers?: string; - dns_resolves?: boolean; - is_proxied?: boolean | null; - is_cloudflare_ip?: boolean | null; - is_fastly_ip?: boolean | null; - is_old_ip_address?: boolean | null; - is_a_record?: boolean | null; - has_cname_record?: boolean | null; - has_mx_records_present?: boolean | null; - is_valid_domain?: boolean; - is_apex_domain?: boolean; - should_be_a_record?: boolean | null; - is_cname_to_github_user_domain?: boolean | null; - is_cname_to_pages_dot_github_dot_com?: boolean | null; - is_cname_to_fastly?: boolean | null; - is_pointed_to_github_pages_ip?: boolean | null; - is_non_github_pages_ip_present?: boolean | null; - is_pages_domain?: boolean; - is_served_by_pages?: boolean | null; - is_valid?: boolean; - reason?: string | null; - responds_to_https?: boolean; - enforces_https?: boolean; - https_error?: string | null; - is_https_eligible?: boolean | null; - caa_error?: string | null; - }; - alt_domain?: { - host?: string; - uri?: string; - nameservers?: string; - dns_resolves?: boolean; - is_proxied?: boolean | null; - is_cloudflare_ip?: boolean | null; - is_fastly_ip?: boolean | null; - is_old_ip_address?: boolean | null; - is_a_record?: boolean | null; - has_cname_record?: boolean | null; - has_mx_records_present?: boolean | null; - is_valid_domain?: boolean; - is_apex_domain?: boolean; - should_be_a_record?: boolean | null; - is_cname_to_github_user_domain?: boolean | null; - is_cname_to_pages_dot_github_dot_com?: boolean | null; - is_cname_to_fastly?: boolean | null; - is_pointed_to_github_pages_ip?: boolean | null; - is_non_github_pages_ip_present?: boolean | null; - is_pages_domain?: boolean; - is_served_by_pages?: boolean | null; - is_valid?: boolean; - reason?: string | null; - responds_to_https?: boolean; - enforces_https?: boolean; - https_error?: string | null; - is_https_eligible?: boolean | null; - caa_error?: string | null; - } | null; - }; - /** - * Pull Request - * @description Pull requests let you tell others about changes you've pushed to a repository on GitHub. Once a pull request is sent, interested parties can review the set of changes, discuss potential modifications, and even push follow-up commits if necessary. - */ - "pull-request": { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347 - */ - url: string; - /** - * Format: int64 - * @example 1 - */ - id: number; - /** @example MDExOlB1bGxSZXF1ZXN0MQ== */ - node_id: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/pull/1347 - */ - html_url: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/pull/1347.diff - */ - diff_url: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/pull/1347.patch - */ - patch_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/issues/1347 - */ - issue_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits - */ - commits_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments - */ - review_comments_url: string; - /** @example https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number} */ - review_comment_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/issues/1347/comments - */ - comments_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e - */ - statuses_url: string; - /** - * @description Number uniquely identifying the pull request within its repository. - * @example 42 - */ - number: number; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @example open - * @enum {string} - */ - state: "open" | "closed"; - /** @example true */ - locked: boolean; - /** - * @description The title of the pull request. - * @example Amazing new feature - */ - title: string; - user: components["schemas"]["simple-user"]; - /** @example Please pull these awesome changes */ - body: string | null; - labels: { - /** Format: int64 */ - id: number; - node_id: string; - url: string; - name: string; - description: string | null; - color: string; - default: boolean; - }[]; - milestone: components["schemas"]["nullable-milestone"]; - /** @example too heated */ - active_lock_reason?: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - created_at: string; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - updated_at: string; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - closed_at: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - merged_at: string | null; - /** @example e5bd3914e2e596debea16f433f57875b5b90bcd6 */ - merge_commit_sha: string | null; - assignee: components["schemas"]["nullable-simple-user"]; - assignees?: components["schemas"]["simple-user"][] | null; - requested_reviewers?: components["schemas"]["simple-user"][] | null; - requested_teams?: components["schemas"]["team-simple"][] | null; - head: { - label: string; - ref: string; - repo: components["schemas"]["repository"]; - sha: string; - user: components["schemas"]["simple-user"]; - }; - base: { - label: string; - ref: string; - repo: components["schemas"]["repository"]; - sha: string; - user: components["schemas"]["simple-user"]; - }; - _links: { - comments: components["schemas"]["link"]; - commits: components["schemas"]["link"]; - statuses: components["schemas"]["link"]; - html: components["schemas"]["link"]; - issue: components["schemas"]["link"]; - review_comments: components["schemas"]["link"]; - review_comment: components["schemas"]["link"]; - self: components["schemas"]["link"]; - }; - author_association: components["schemas"]["author-association"]; - auto_merge: components["schemas"]["auto-merge"]; - /** - * @description Indicates whether or not the pull request is a draft. - * @example false - */ - draft?: boolean; - merged: boolean; - /** @example true */ - mergeable: boolean | null; - /** @example true */ - rebaseable?: boolean | null; - /** @example clean */ - mergeable_state: string; - merged_by: components["schemas"]["nullable-simple-user"]; - /** @example 10 */ - comments: number; - /** @example 0 */ - review_comments: number; - /** - * @description Indicates whether maintainers can modify the pull request. - * @example true - */ - maintainer_can_modify: boolean; - /** @example 3 */ - commits: number; - /** @example 100 */ - additions: number; - /** @example 3 */ - deletions: number; - /** @example 5 */ - changed_files: number; - }; - /** - * Pull Request Merge Result - * @description Pull Request Merge Result - */ - "pull-request-merge-result": { - sha: string; - merged: boolean; - message: string; - }; - /** - * Pull Request Review Request - * @description Pull Request Review Request - */ - "pull-request-review-request": { - users: components["schemas"]["simple-user"][]; - teams: components["schemas"]["team"][]; - }; - /** - * Pull Request Review - * @description Pull Request Reviews are reviews on pull requests. - */ - "pull-request-review": { - /** - * Format: int64 - * @description Unique identifier of the review - * @example 42 - */ - id: number; - /** @example MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA= */ - node_id: string; - user: components["schemas"]["nullable-simple-user"]; - /** - * @description The text of the review. - * @example This looks great. - */ - body: string; - /** @example CHANGES_REQUESTED */ - state: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80 - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/pulls/12 - */ - pull_request_url: string; - _links: { - html: { - href: string; - }; - pull_request: { - href: string; - }; - }; - /** Format: date-time */ - submitted_at?: string; - /** - * @description A commit SHA for the review. If the commit object was garbage collected or forcibly deleted, then it no longer exists in Git and this value will be `null`. - * @example 54bb654c9e6025347f57900a4a5c2313a96b8035 - */ - commit_id: string | null; - body_html?: string; - body_text?: string; - author_association: components["schemas"]["author-association"]; - }; - /** - * Legacy Review Comment - * @description Legacy Review Comment - */ - "review-comment": { - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/1 - */ - url: string; - /** - * Format: int64 - * @example 42 - */ - pull_request_review_id: number | null; - /** - * Format: int64 - * @example 10 - */ - id: number; - /** @example MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw */ - node_id: string; - /** @example @@ -16,33 +16,40 @@ public class Connection : IConnection... */ - diff_hunk: string; - /** @example file1.txt */ - path: string; - /** @example 1 */ - position: number | null; - /** @example 4 */ - original_position: number; - /** @example 6dcb09b5b57875f334f61aebed695e2e4193db5e */ - commit_id: string; - /** @example 9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840 */ - original_commit_id: string; - /** @example 8 */ - in_reply_to_id?: number; - user: components["schemas"]["nullable-simple-user"]; - /** @example Great stuff */ - body: string; - /** - * Format: date-time - * @example 2011-04-14T16:00:49Z - */ - created_at: string; - /** - * Format: date-time - * @example 2011-04-14T16:00:49Z - */ - updated_at: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/pull/1#discussion-diff-1 - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World/pulls/1 - */ - pull_request_url: string; - author_association: components["schemas"]["author-association"]; - _links: { - self: components["schemas"]["link"]; - html: components["schemas"]["link"]; - pull_request: components["schemas"]["link"]; - }; - body_text?: string; - body_html?: string; - reactions?: components["schemas"]["reaction-rollup"]; - /** - * @description The side of the first line of the range for a multi-line comment. - * @default RIGHT - * @enum {string} - */ - side?: "LEFT" | "RIGHT"; - /** - * @description The side of the first line of the range for a multi-line comment. - * @default RIGHT - * @enum {string|null} - */ - start_side?: "LEFT" | "RIGHT" | null; - /** - * @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment - * @example 2 - */ - line?: number; - /** - * @description The original line of the blob to which the comment applies. The last line of the range for a multi-line comment - * @example 2 - */ - original_line?: number; - /** - * @description The first line of the range for a multi-line comment. - * @example 2 - */ - start_line?: number | null; - /** - * @description The original first line of the range for a multi-line comment. - * @example 2 - */ - original_start_line?: number | null; - /** - * @description The level at which the comment is targeted, can be a diff line or a file. - * @enum {string} - */ - subject_type?: "line" | "file"; - }; - /** - * Release Asset - * @description Data related to a release. - */ - "release-asset": { - /** Format: uri */ - url: string; - /** Format: uri */ - browser_download_url: string; - id: number; - node_id: string; - /** - * @description The file name of the asset. - * @example Team Environment - */ - name: string; - label: string | null; - /** - * @description State of the release asset. - * @enum {string} - */ - state: "uploaded" | "open"; - content_type: string; - size: number; - digest: string | null; - download_count: number; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - uploader: components["schemas"]["nullable-simple-user"]; - }; - /** - * Release - * @description A release. - */ - release: { - /** Format: uri */ - url: string; - /** Format: uri */ - html_url: string; - /** Format: uri */ - assets_url: string; - upload_url: string; - /** Format: uri */ - tarball_url: string | null; - /** Format: uri */ - zipball_url: string | null; - id: number; - node_id: string; - /** - * @description The name of the tag. - * @example v1.0.0 - */ - tag_name: string; - /** - * @description Specifies the commitish value that determines where the Git tag is created from. - * @example master - */ - target_commitish: string; - name: string | null; - body?: string | null; - /** - * @description true to create a draft (unpublished) release, false to create a published one. - * @example false - */ - draft: boolean; - /** - * @description Whether to identify the release as a prerelease or a full release. - * @example false - */ - prerelease: boolean; - /** - * @description Whether or not the release is immutable. - * @example false - */ - immutable?: boolean; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - published_at: string | null; - /** Format: date-time */ - updated_at?: string | null; - author: components["schemas"]["simple-user"]; - assets: components["schemas"]["release-asset"][]; - body_html?: string; - body_text?: string; - mentions_count?: number; - /** - * Format: uri - * @description The URL of the release discussion. - */ - discussion_url?: string; - reactions?: components["schemas"]["reaction-rollup"]; - }; - /** - * Generated Release Notes Content - * @description Generated name and body describing a release - */ - "release-notes-content": { - /** - * @description The generated name of the release - * @example Release v1.0.0 is now available! - */ - name: string; - /** @description The generated body describing the contents of the release supporting markdown formatting */ - body: string; - }; - /** - * repository ruleset data for rule - * @description User-defined metadata to store domain-specific information limited to 8 keys with scalar values. - */ - "repository-rule-ruleset-info": { - /** - * @description The type of source for the ruleset that includes this rule. - * @enum {string} - */ - ruleset_source_type?: "Repository" | "Organization"; - /** @description The name of the source of the ruleset that includes this rule. */ - ruleset_source?: string; - /** @description The ID of the ruleset that includes this rule. */ - ruleset_id?: number; - }; - /** - * Repository Rule - * @description A repository rule with ruleset details. - */ - "repository-rule-detailed": - | (components["schemas"]["repository-rule-creation"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-update"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-deletion"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-required-linear-history"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-merge-queue"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-required-deployments"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-required-signatures"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-pull-request"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-required-status-checks"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-non-fast-forward"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-commit-message-pattern"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-commit-author-email-pattern"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-committer-email-pattern"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-branch-name-pattern"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-tag-name-pattern"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-file-path-restriction"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-max-file-path-length"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-file-extension-restriction"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-max-file-size"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-workflows"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-code-scanning"] & - components["schemas"]["repository-rule-ruleset-info"]) - | (components["schemas"]["repository-rule-copilot-code-review"] & - components["schemas"]["repository-rule-ruleset-info"]); - "secret-scanning-alert": { - number?: components["schemas"]["alert-number"]; - created_at?: components["schemas"]["alert-created-at"]; - updated_at?: components["schemas"]["nullable-alert-updated-at"]; - url?: components["schemas"]["alert-url"]; - html_url?: components["schemas"]["alert-html-url"]; - /** - * Format: uri - * @description The REST API URL of the code locations for this alert. - */ - locations_url?: string; - state?: components["schemas"]["secret-scanning-alert-state"]; - resolution?: components["schemas"]["secret-scanning-alert-resolution"]; - /** - * Format: date-time - * @description The time that the alert was resolved in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - resolved_at?: string | null; - resolved_by?: components["schemas"]["nullable-simple-user"]; - /** @description An optional comment to resolve an alert. */ - resolution_comment?: string | null; - /** @description The type of secret that secret scanning detected. */ - secret_type?: string; - /** - * @description User-friendly name for the detected secret, matching the `secret_type`. - * For a list of built-in patterns, see "[Supported secret scanning patterns](https://docs.github.com/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." - */ - secret_type_display_name?: string; - /** @description The secret that was detected. */ - secret?: string; - /** @description Whether push protection was bypassed for the detected secret. */ - push_protection_bypassed?: boolean | null; - push_protection_bypassed_by?: components["schemas"]["nullable-simple-user"]; - /** - * Format: date-time - * @description The time that push protection was bypassed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - push_protection_bypassed_at?: string | null; - push_protection_bypass_request_reviewer?: components["schemas"]["nullable-simple-user"]; - /** @description An optional comment when reviewing a push protection bypass. */ - push_protection_bypass_request_reviewer_comment?: string | null; - /** @description An optional comment when requesting a push protection bypass. */ - push_protection_bypass_request_comment?: string | null; - /** - * Format: uri - * @description The URL to a push protection bypass request. - */ - push_protection_bypass_request_html_url?: string | null; - /** - * @description The token status as of the latest validity check. - * @enum {string} - */ - validity?: "active" | "inactive" | "unknown"; - /** @description Whether the detected secret was publicly leaked. */ - publicly_leaked?: boolean | null; - /** @description Whether the detected secret was found in multiple repositories under the same organization or enterprise. */ - multi_repo?: boolean | null; - /** @description A boolean value representing whether or not alert is base64 encoded */ - is_base64_encoded?: boolean | null; - first_location_detected?: components["schemas"]["nullable-secret-scanning-first-detected-location"]; - /** @description A boolean value representing whether or not the token in the alert was detected in more than one location. */ - has_more_locations?: boolean; - assigned_to?: components["schemas"]["nullable-simple-user"]; - }; - /** @description An optional comment when closing or reopening an alert. Cannot be updated or deleted. */ - "secret-scanning-alert-resolution-comment": string | null; - "secret-scanning-location": { - /** - * @description The location type. Because secrets may be found in different types of resources (ie. code, comments, issues, pull requests, discussions), this field identifies the type of resource where the secret was found. - * @example commit - * @enum {string} - */ - type?: - | "commit" - | "wiki_commit" - | "issue_title" - | "issue_body" - | "issue_comment" - | "discussion_title" - | "discussion_body" - | "discussion_comment" - | "pull_request_title" - | "pull_request_body" - | "pull_request_comment" - | "pull_request_review" - | "pull_request_review_comment"; - details?: - | components["schemas"]["secret-scanning-location-commit"] - | components["schemas"]["secret-scanning-location-wiki-commit"] - | components["schemas"]["secret-scanning-location-issue-title"] - | components["schemas"]["secret-scanning-location-issue-body"] - | components["schemas"]["secret-scanning-location-issue-comment"] - | components["schemas"]["secret-scanning-location-discussion-title"] - | components["schemas"]["secret-scanning-location-discussion-body"] - | components["schemas"]["secret-scanning-location-discussion-comment"] - | components["schemas"]["secret-scanning-location-pull-request-title"] - | components["schemas"]["secret-scanning-location-pull-request-body"] - | components["schemas"]["secret-scanning-location-pull-request-comment"] - | components["schemas"]["secret-scanning-location-pull-request-review"] - | components["schemas"]["secret-scanning-location-pull-request-review-comment"]; - }; - /** - * @description The reason for bypassing push protection. - * @enum {string} - */ - "secret-scanning-push-protection-bypass-reason": - | "false_positive" - | "used_in_tests" - | "will_fix_later"; - "secret-scanning-push-protection-bypass": { - reason?: components["schemas"]["secret-scanning-push-protection-bypass-reason"]; - /** - * Format: date-time - * @description The time that the bypass will expire in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - expire_at?: string | null; - /** @description The token type this bypass is for. */ - token_type?: string; - }; - /** @description Information on a single scan performed by secret scanning on the repository */ - "secret-scanning-scan": { - /** @description The type of scan */ - type?: string; - /** @description The state of the scan. Either "completed", "running", or "pending" */ - status?: string; - /** - * Format: date-time - * @description The time that the scan was completed. Empty if the scan is running - */ - completed_at?: string | null; - /** - * Format: date-time - * @description The time that the scan was started. Empty if the scan is pending - */ - started_at?: string | null; - }; - "secret-scanning-scan-history": { - incremental_scans?: components["schemas"]["secret-scanning-scan"][]; - pattern_update_scans?: components["schemas"]["secret-scanning-scan"][]; - backfill_scans?: components["schemas"]["secret-scanning-scan"][]; - custom_pattern_backfill_scans?: (components["schemas"]["secret-scanning-scan"] & { - /** @description Name of the custom pattern for custom pattern scans */ - pattern_name?: string; - /** @description Level at which the custom pattern is defined, one of "repository", "organization", or "enterprise" */ - pattern_scope?: string; - })[]; - }; - "repository-advisory-create": { - /** @description A short summary of the advisory. */ - summary: string; - /** @description A detailed description of what the advisory impacts. */ - description: string; - /** @description The Common Vulnerabilities and Exposures (CVE) ID. */ - cve_id?: string | null; - /** @description A product affected by the vulnerability detailed in a repository security advisory. */ - vulnerabilities: { - /** @description The name of the package affected by the vulnerability. */ - package: { - ecosystem: components["schemas"]["security-advisory-ecosystems"]; - /** @description The unique package name within its ecosystem. */ - name?: string | null; - }; - /** @description The range of the package versions affected by the vulnerability. */ - vulnerable_version_range?: string | null; - /** @description The package version(s) that resolve the vulnerability. */ - patched_versions?: string | null; - /** @description The functions in the package that are affected. */ - vulnerable_functions?: string[] | null; - }[]; - /** @description A list of Common Weakness Enumeration (CWE) IDs. */ - cwe_ids?: string[] | null; - /** @description A list of users receiving credit for their participation in the security advisory. */ - credits?: - | { - /** @description The username of the user credited. */ - login: string; - type: components["schemas"]["security-advisory-credit-types"]; - }[] - | null; - /** - * @description The severity of the advisory. You must choose between setting this field or `cvss_vector_string`. - * @enum {string|null} - */ - severity?: "critical" | "high" | "medium" | "low" | null; - /** @description The CVSS vector that calculates the severity of the advisory. You must choose between setting this field or `severity`. */ - cvss_vector_string?: string | null; - /** - * @description Whether to create a temporary private fork of the repository to collaborate on a fix. - * @default false - */ - start_private_fork?: boolean; - }; - "private-vulnerability-report-create": { - /** @description A short summary of the advisory. */ - summary: string; - /** @description A detailed description of what the advisory impacts. */ - description: string; - /** @description An array of products affected by the vulnerability detailed in a repository security advisory. */ - vulnerabilities?: - | { - /** @description The name of the package affected by the vulnerability. */ - package: { - ecosystem: components["schemas"]["security-advisory-ecosystems"]; - /** @description The unique package name within its ecosystem. */ - name?: string | null; - }; - /** @description The range of the package versions affected by the vulnerability. */ - vulnerable_version_range?: string | null; - /** @description The package version(s) that resolve the vulnerability. */ - patched_versions?: string | null; - /** @description The functions in the package that are affected. */ - vulnerable_functions?: string[] | null; - }[] - | null; - /** @description A list of Common Weakness Enumeration (CWE) IDs. */ - cwe_ids?: string[] | null; - /** - * @description The severity of the advisory. You must choose between setting this field or `cvss_vector_string`. - * @enum {string|null} - */ - severity?: "critical" | "high" | "medium" | "low" | null; - /** @description The CVSS vector that calculates the severity of the advisory. You must choose between setting this field or `severity`. */ - cvss_vector_string?: string | null; - /** - * @description Whether to create a temporary private fork of the repository to collaborate on a fix. - * @default false - */ - start_private_fork?: boolean; - }; - "repository-advisory-update": { - /** @description A short summary of the advisory. */ - summary?: string; - /** @description A detailed description of what the advisory impacts. */ - description?: string; - /** @description The Common Vulnerabilities and Exposures (CVE) ID. */ - cve_id?: string | null; - /** @description A product affected by the vulnerability detailed in a repository security advisory. */ - vulnerabilities?: { - /** @description The name of the package affected by the vulnerability. */ - package: { - ecosystem: components["schemas"]["security-advisory-ecosystems"]; - /** @description The unique package name within its ecosystem. */ - name?: string | null; - }; - /** @description The range of the package versions affected by the vulnerability. */ - vulnerable_version_range?: string | null; - /** @description The package version(s) that resolve the vulnerability. */ - patched_versions?: string | null; - /** @description The functions in the package that are affected. */ - vulnerable_functions?: string[] | null; - }[]; - /** @description A list of Common Weakness Enumeration (CWE) IDs. */ - cwe_ids?: string[] | null; - /** @description A list of users receiving credit for their participation in the security advisory. */ - credits?: - | { - /** @description The username of the user credited. */ - login: string; - type: components["schemas"]["security-advisory-credit-types"]; - }[] - | null; - /** - * @description The severity of the advisory. You must choose between setting this field or `cvss_vector_string`. - * @enum {string|null} - */ - severity?: "critical" | "high" | "medium" | "low" | null; - /** @description The CVSS vector that calculates the severity of the advisory. You must choose between setting this field or `severity`. */ - cvss_vector_string?: string | null; - /** - * @description The state of the advisory. - * @enum {string} - */ - state?: "published" | "closed" | "draft"; - /** @description A list of usernames who have been granted write access to the advisory. */ - collaborating_users?: string[] | null; - /** @description A list of team slugs which have been granted write access to the advisory. */ - collaborating_teams?: string[] | null; - }; - /** - * Stargazer - * @description Stargazer - */ - stargazer: { - /** Format: date-time */ - starred_at: string; - user: components["schemas"]["nullable-simple-user"]; - }; - /** - * Code Frequency Stat - * @description Code Frequency Stat - */ - "code-frequency-stat": number[]; - /** - * Commit Activity - * @description Commit Activity - */ - "commit-activity": { - /** - * @example [ - * 0, - * 3, - * 26, - * 20, - * 39, - * 1, - * 0 - * ] - */ - days: number[]; - /** @example 89 */ - total: number; - /** @example 1336280400 */ - week: number; - }; - /** - * Contributor Activity - * @description Contributor Activity - */ - "contributor-activity": { - author: components["schemas"]["nullable-simple-user"]; - /** @example 135 */ - total: number; - /** - * @example [ - * { - * "w": "1367712000", - * "a": 6898, - * "d": 77, - * "c": 10 - * } - * ] - */ - weeks: { - w?: number; - a?: number; - d?: number; - c?: number; - }[]; - }; - /** Participation Stats */ - "participation-stats": { - all: number[]; - owner: number[]; - }; - /** - * Repository Invitation - * @description Repository invitations let you manage who you collaborate with. - */ - "repository-subscription": { - /** - * @description Determines if notifications should be received from this repository. - * @example true - */ - subscribed: boolean; - /** @description Determines if all notifications should be blocked from this repository. */ - ignored: boolean; - reason: string | null; - /** - * Format: date-time - * @example 2012-10-06T21:34:12Z - */ - created_at: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/example/subscription - */ - url: string; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/example - */ - repository_url: string; - }; - /** - * Tag - * @description Tag - */ - tag: { - /** @example v0.1 */ - name: string; - commit: { - sha: string; - /** Format: uri */ - url: string; - }; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/zipball/v0.1 - */ - zipball_url: string; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World/tarball/v0.1 - */ - tarball_url: string; - node_id: string; - }; - /** - * Tag protection - * @description Tag protection - */ - "tag-protection": { - /** @example 2 */ - id?: number; - /** @example 2011-01-26T19:01:12Z */ - created_at?: string; - /** @example 2011-01-26T19:01:12Z */ - updated_at?: string; - /** @example true */ - enabled?: boolean; - /** @example v1.* */ - pattern: string; - }; - /** - * Topic - * @description A topic aggregates entities that are related to a subject. - */ - topic: { - names: string[]; - }; - /** Traffic */ - traffic: { - /** Format: date-time */ - timestamp: string; - uniques: number; - count: number; - }; - /** - * Clone Traffic - * @description Clone Traffic - */ - "clone-traffic": { - /** @example 173 */ - count: number; - /** @example 128 */ - uniques: number; - clones: components["schemas"]["traffic"][]; - }; - /** - * Content Traffic - * @description Content Traffic - */ - "content-traffic": { - /** @example /github/hubot */ - path: string; - /** @example github/hubot: A customizable life embetterment robot. */ - title: string; - /** @example 3542 */ - count: number; - /** @example 2225 */ - uniques: number; - }; - /** - * Referrer Traffic - * @description Referrer Traffic - */ - "referrer-traffic": { - /** @example Google */ - referrer: string; - /** @example 4 */ - count: number; - /** @example 3 */ - uniques: number; - }; - /** - * View Traffic - * @description View Traffic - */ - "view-traffic": { - /** @example 14850 */ - count: number; - /** @example 3782 */ - uniques: number; - views: components["schemas"]["traffic"][]; - }; - /** Search Result Text Matches */ - "search-result-text-matches": { - object_url?: string; - object_type?: string | null; - property?: string; - fragment?: string; - matches?: { - text?: string; - indices?: number[]; - }[]; - }[]; - /** - * Code Search Result Item - * @description Code Search Result Item - */ - "code-search-result-item": { - name: string; - path: string; - sha: string; - /** Format: uri */ - url: string; - /** Format: uri */ - git_url: string; - /** Format: uri */ - html_url: string; - repository: components["schemas"]["minimal-repository"]; - score: number; - file_size?: number; - language?: string | null; - /** Format: date-time */ - last_modified_at?: string; - /** - * @example [ - * "73..77", - * "77..78" - * ] - */ - line_numbers?: string[]; - text_matches?: components["schemas"]["search-result-text-matches"]; - }; - /** - * Commit Search Result Item - * @description Commit Search Result Item - */ - "commit-search-result-item": { - /** Format: uri */ - url: string; - sha: string; - /** Format: uri */ - html_url: string; - /** Format: uri */ - comments_url: string; - commit: { - author: { - name: string; - email: string; - /** Format: date-time */ - date: string; - }; - committer: components["schemas"]["nullable-git-user"]; - comment_count: number; - message: string; - tree: { - sha: string; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - url: string; - verification?: components["schemas"]["verification"]; - }; - author: components["schemas"]["nullable-simple-user"]; - committer: components["schemas"]["nullable-git-user"]; - parents: { - url?: string; - html_url?: string; - sha?: string; - }[]; - repository: components["schemas"]["minimal-repository"]; - score: number; - node_id: string; - text_matches?: components["schemas"]["search-result-text-matches"]; - }; - /** - * Issue Search Result Item - * @description Issue Search Result Item - */ - "issue-search-result-item": { - /** Format: uri */ - url: string; - /** Format: uri */ - repository_url: string; - labels_url: string; - /** Format: uri */ - comments_url: string; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - node_id: string; - number: number; - title: string; - locked: boolean; - active_lock_reason?: string | null; - assignees?: components["schemas"]["simple-user"][] | null; - user: components["schemas"]["nullable-simple-user"]; - labels: { - /** Format: int64 */ - id?: number; - node_id?: string; - url?: string; - name?: string; - color?: string; - default?: boolean; - description?: string | null; - }[]; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - state: string; - state_reason?: string | null; - assignee: components["schemas"]["nullable-simple-user"]; - milestone: components["schemas"]["nullable-milestone"]; - comments: number; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - closed_at: string | null; - text_matches?: components["schemas"]["search-result-text-matches"]; - pull_request?: { - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - diff_url: string | null; - /** Format: uri */ - html_url: string | null; - /** Format: uri */ - patch_url: string | null; - /** Format: uri */ - url: string | null; - }; - body?: string; - score: number; - author_association: components["schemas"]["author-association"]; - draft?: boolean; - repository?: components["schemas"]["repository"]; - body_html?: string; - body_text?: string; - /** Format: uri */ - timeline_url?: string; - type?: components["schemas"]["issue-type"]; - performed_via_github_app?: components["schemas"]["nullable-integration"]; - reactions?: components["schemas"]["reaction-rollup"]; - }; - /** - * Label Search Result Item - * @description Label Search Result Item - */ - "label-search-result-item": { - id: number; - node_id: string; - /** Format: uri */ - url: string; - name: string; - color: string; - default: boolean; - description: string | null; - score: number; - text_matches?: components["schemas"]["search-result-text-matches"]; - }; - /** - * Repo Search Result Item - * @description Repo Search Result Item - */ - "repo-search-result-item": { - id: number; - node_id: string; - name: string; - full_name: string; - owner: components["schemas"]["nullable-simple-user"]; - private: boolean; - /** Format: uri */ - html_url: string; - description: string | null; - fork: boolean; - /** Format: uri */ - url: string; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - pushed_at: string; - /** Format: uri */ - homepage: string | null; - size: number; - stargazers_count: number; - watchers_count: number; - language: string | null; - forks_count: number; - open_issues_count: number; - master_branch?: string; - default_branch: string; - score: number; - /** Format: uri */ - forks_url: string; - keys_url: string; - collaborators_url: string; - /** Format: uri */ - teams_url: string; - /** Format: uri */ - hooks_url: string; - issue_events_url: string; - /** Format: uri */ - events_url: string; - assignees_url: string; - branches_url: string; - /** Format: uri */ - tags_url: string; - blobs_url: string; - git_tags_url: string; - git_refs_url: string; - trees_url: string; - statuses_url: string; - /** Format: uri */ - languages_url: string; - /** Format: uri */ - stargazers_url: string; - /** Format: uri */ - contributors_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - commits_url: string; - git_commits_url: string; - comments_url: string; - issue_comment_url: string; - contents_url: string; - compare_url: string; - /** Format: uri */ - merges_url: string; - archive_url: string; - /** Format: uri */ - downloads_url: string; - issues_url: string; - pulls_url: string; - milestones_url: string; - notifications_url: string; - labels_url: string; - releases_url: string; - /** Format: uri */ - deployments_url: string; - git_url: string; - ssh_url: string; - clone_url: string; - /** Format: uri */ - svn_url: string; - forks: number; - open_issues: number; - watchers: number; - topics?: string[]; - /** Format: uri */ - mirror_url: string | null; - has_issues: boolean; - has_projects: boolean; - has_pages: boolean; - has_wiki: boolean; - has_downloads: boolean; - has_discussions?: boolean; - archived: boolean; - /** @description Returns whether or not this repository disabled. */ - disabled: boolean; - /** @description The repository visibility: public, private, or internal. */ - visibility?: string; - license: components["schemas"]["nullable-license-simple"]; - permissions?: { - admin: boolean; - maintain?: boolean; - push: boolean; - triage?: boolean; - pull: boolean; - }; - text_matches?: components["schemas"]["search-result-text-matches"]; - temp_clone_token?: string; - allow_merge_commit?: boolean; - allow_squash_merge?: boolean; - allow_rebase_merge?: boolean; - allow_auto_merge?: boolean; - delete_branch_on_merge?: boolean; - allow_forking?: boolean; - is_template?: boolean; - /** @example false */ - web_commit_signoff_required?: boolean; - }; - /** - * Topic Search Result Item - * @description Topic Search Result Item - */ - "topic-search-result-item": { - name: string; - display_name: string | null; - short_description: string | null; - description: string | null; - created_by: string | null; - released: string | null; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - featured: boolean; - curated: boolean; - score: number; - repository_count?: number | null; - /** Format: uri */ - logo_url?: string | null; - text_matches?: components["schemas"]["search-result-text-matches"]; - related?: - | { - topic_relation?: { - id?: number; - name?: string; - topic_id?: number; - relation_type?: string; - }; - }[] - | null; - aliases?: - | { - topic_relation?: { - id?: number; - name?: string; - topic_id?: number; - relation_type?: string; - }; - }[] - | null; - }; - /** - * User Search Result Item - * @description User Search Result Item - */ - "user-search-result-item": { - login: string; - /** Format: int64 */ - id: number; - node_id: string; - /** Format: uri */ - avatar_url: string; - gravatar_id: string | null; - /** Format: uri */ - url: string; - /** Format: uri */ - html_url: string; - /** Format: uri */ - followers_url: string; - /** Format: uri */ - subscriptions_url: string; - /** Format: uri */ - organizations_url: string; - /** Format: uri */ - repos_url: string; - /** Format: uri */ - received_events_url: string; - type: string; - score: number; - following_url: string; - gists_url: string; - starred_url: string; - events_url: string; - public_repos?: number; - public_gists?: number; - followers?: number; - following?: number; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - name?: string | null; - bio?: string | null; - /** Format: email */ - email?: string | null; - location?: string | null; - site_admin: boolean; - hireable?: boolean | null; - text_matches?: components["schemas"]["search-result-text-matches"]; - blog?: string | null; - company?: string | null; - /** Format: date-time */ - suspended_at?: string | null; - user_view_type?: string; - }; - /** - * Private User - * @description Private User - */ - "private-user": { - /** @example octocat */ - login: string; - /** - * Format: int64 - * @example 1 - */ - id: number; - user_view_type?: string; - /** @example MDQ6VXNlcjE= */ - node_id: string; - /** - * Format: uri - * @example https://github.com/images/error/octocat_happy.gif - */ - avatar_url: string; - /** @example 41d064eb2195891e12d0413f63227ea7 */ - gravatar_id: string | null; - /** - * Format: uri - * @example https://api.github.com/users/octocat - */ - url: string; - /** - * Format: uri - * @example https://github.com/octocat - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/followers - */ - followers_url: string; - /** @example https://api.github.com/users/octocat/following{/other_user} */ - following_url: string; - /** @example https://api.github.com/users/octocat/gists{/gist_id} */ - gists_url: string; - /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */ - starred_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/subscriptions - */ - subscriptions_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/orgs - */ - organizations_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/repos - */ - repos_url: string; - /** @example https://api.github.com/users/octocat/events{/privacy} */ - events_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/received_events - */ - received_events_url: string; - /** @example User */ - type: string; - site_admin: boolean; - /** @example monalisa octocat */ - name: string | null; - /** @example GitHub */ - company: string | null; - /** @example https://github.com/blog */ - blog: string | null; - /** @example San Francisco */ - location: string | null; - /** - * Format: email - * @example octocat@github.com - */ - email: string | null; - /** - * Format: email - * @example octocat@github.com - */ - notification_email?: string | null; - hireable: boolean | null; - /** @example There once was... */ - bio: string | null; - /** @example monalisa */ - twitter_username?: string | null; - /** @example 2 */ - public_repos: number; - /** @example 1 */ - public_gists: number; - /** @example 20 */ - followers: number; - /** @example 0 */ - following: number; - /** - * Format: date-time - * @example 2008-01-14T04:33:35Z - */ - created_at: string; - /** - * Format: date-time - * @example 2008-01-14T04:33:35Z - */ - updated_at: string; - /** @example 81 */ - private_gists: number; - /** @example 100 */ - total_private_repos: number; - /** @example 100 */ - owned_private_repos: number; - /** @example 10000 */ - disk_usage: number; - /** @example 8 */ - collaborators: number; - /** @example true */ - two_factor_authentication: boolean; - plan?: { - collaborators: number; - name: string; - space: number; - private_repos: number; - }; - business_plus?: boolean; - ldap_dn?: string; - }; - /** - * Codespaces Secret - * @description Secrets for a GitHub Codespace. - */ - "codespaces-secret": { - /** - * @description The name of the secret - * @example SECRET_NAME - */ - name: string; - /** - * Format: date-time - * @description The date and time at which the secret was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - */ - created_at: string; - /** - * Format: date-time - * @description The date and time at which the secret was last updated, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - */ - updated_at: string; - /** - * @description The type of repositories in the organization that the secret is visible to - * @enum {string} - */ - visibility: "all" | "private" | "selected"; - /** - * Format: uri - * @description The API URL at which the list of repositories this secret is visible to can be retrieved - * @example https://api.github.com/user/secrets/SECRET_NAME/repositories - */ - selected_repositories_url: string; - }; - /** - * CodespacesUserPublicKey - * @description The public key used for setting user Codespaces' Secrets. - */ - "codespaces-user-public-key": { - /** - * @description The identifier for the key. - * @example 1234567 - */ - key_id: string; - /** - * @description The Base64 encoded public key. - * @example hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs= - */ - key: string; - }; - /** - * Fetches information about an export of a codespace. - * @description An export of a codespace. Also, latest export details for a codespace can be fetched with id = latest - */ - "codespace-export-details": { - /** - * @description State of the latest export - * @example succeeded | failed | in_progress - */ - state?: string | null; - /** - * Format: date-time - * @description Completion time of the last export operation - * @example 2021-01-01T19:01:12Z - */ - completed_at?: string | null; - /** - * @description Name of the exported branch - * @example codespace-monalisa-octocat-hello-world-g4wpq6h95q - */ - branch?: string | null; - /** - * @description Git commit SHA of the exported branch - * @example fd95a81ca01e48ede9f39c799ecbcef817b8a3b2 - */ - sha?: string | null; - /** - * @description Id for the export details - * @example latest - */ - id?: string; - /** - * @description Url for fetching export details - * @example https://api.github.com/user/codespaces/:name/exports/latest - */ - export_url?: string; - /** - * @description Web url for the exported branch - * @example https://github.com/octocat/hello-world/tree/:branch - */ - html_url?: string | null; - }; - /** - * Codespace - * @description A codespace. - */ - "codespace-with-full-repository": { - /** - * Format: int64 - * @example 1 - */ - id: number; - /** - * @description Automatically generated name of this codespace. - * @example monalisa-octocat-hello-world-g4wpq6h95q - */ - name: string; - /** - * @description Display name for this codespace. - * @example bookish space pancake - */ - display_name?: string | null; - /** - * @description UUID identifying this codespace's environment. - * @example 26a7c758-7299-4a73-b978-5a92a7ae98a0 - */ - environment_id: string | null; - owner: components["schemas"]["simple-user"]; - billable_owner: components["schemas"]["simple-user"]; - repository: components["schemas"]["full-repository"]; - machine: components["schemas"]["nullable-codespace-machine"]; - /** - * @description Path to devcontainer.json from repo root used to create Codespace. - * @example .devcontainer/example/devcontainer.json - */ - devcontainer_path?: string | null; - /** - * @description Whether the codespace was created from a prebuild. - * @example false - */ - prebuild: boolean | null; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - created_at: string; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - updated_at: string; - /** - * Format: date-time - * @description Last known time this codespace was started. - * @example 2011-01-26T19:01:12Z - */ - last_used_at: string; - /** - * @description State of this codespace. - * @example Available - * @enum {string} - */ - state: - | "Unknown" - | "Created" - | "Queued" - | "Provisioning" - | "Available" - | "Awaiting" - | "Unavailable" - | "Deleted" - | "Moved" - | "Shutdown" - | "Archived" - | "Starting" - | "ShuttingDown" - | "Failed" - | "Exporting" - | "Updating" - | "Rebuilding"; - /** - * Format: uri - * @description API URL for this codespace. - */ - url: string; - /** @description Details about the codespace's git repository. */ - git_status: { - /** - * @description The number of commits the local repository is ahead of the remote. - * @example 0 - */ - ahead?: number; - /** - * @description The number of commits the local repository is behind the remote. - * @example 0 - */ - behind?: number; - /** @description Whether the local repository has unpushed changes. */ - has_unpushed_changes?: boolean; - /** @description Whether the local repository has uncommitted changes. */ - has_uncommitted_changes?: boolean; - /** - * @description The current branch (or SHA if in detached HEAD state) of the local repository. - * @example main - */ - ref?: string; - }; - /** - * @description The initally assigned location of a new codespace. - * @example WestUs2 - * @enum {string} - */ - location: "EastUs" | "SouthEastAsia" | "WestEurope" | "WestUs2"; - /** - * @description The number of minutes of inactivity after which this codespace will be automatically stopped. - * @example 60 - */ - idle_timeout_minutes: number | null; - /** - * Format: uri - * @description URL to access this codespace on the web. - */ - web_url: string; - /** - * Format: uri - * @description API URL to access available alternate machine types for this codespace. - */ - machines_url: string; - /** - * Format: uri - * @description API URL to start this codespace. - */ - start_url: string; - /** - * Format: uri - * @description API URL to stop this codespace. - */ - stop_url: string; - /** - * Format: uri - * @description API URL to publish this codespace to a new repository. - */ - publish_url?: string | null; - /** - * Format: uri - * @description API URL for the Pull Request associated with this codespace, if any. - */ - pulls_url: string | null; - recent_folders: string[]; - runtime_constraints?: { - /** @description The privacy settings a user can select from when forwarding a port. */ - allowed_port_privacy_settings?: string[] | null; - }; - /** @description Whether or not a codespace has a pending async operation. This would mean that the codespace is temporarily unavailable. The only thing that you can do with a codespace in this state is delete it. */ - pending_operation?: boolean | null; - /** @description Text to show user when codespace is disabled by a pending operation */ - pending_operation_disabled_reason?: string | null; - /** @description Text to show user when codespace idle timeout minutes has been overriden by an organization policy */ - idle_timeout_notice?: string | null; - /** - * @description Duration in minutes after codespace has gone idle in which it will be deleted. Must be integer minutes between 0 and 43200 (30 days). - * @example 60 - */ - retention_period_minutes?: number | null; - /** - * Format: date-time - * @description When a codespace will be auto-deleted based on the "retention_period_minutes" and "last_used_at" - * @example 2011-01-26T20:01:12Z - */ - retention_expires_at?: string | null; - }; - /** - * Email - * @description Email - */ - email: { - /** - * Format: email - * @example octocat@github.com - */ - email: string; - /** @example true */ - primary: boolean; - /** @example true */ - verified: boolean; - /** @example public */ - visibility: string | null; - }; - /** - * GPG Key - * @description A unique encryption key - */ - "gpg-key": { - /** - * Format: int64 - * @example 3 - */ - id: number; - /** @example Octocat's GPG Key */ - name?: string | null; - primary_key_id: number | null; - /** @example 3262EFF25BA0D270 */ - key_id: string; - /** @example xsBNBFayYZ... */ - public_key: string; - /** - * @example [ - * { - * "email": "octocat@users.noreply.github.com", - * "verified": true - * } - * ] - */ - emails: { - email?: string; - verified?: boolean; - }[]; - /** - * @example [ - * { - * "id": 4, - * "primary_key_id": 3, - * "key_id": "4A595D4C72EE49C7", - * "public_key": "zsBNBFayYZ...", - * "emails": [], - * "can_sign": false, - * "can_encrypt_comms": true, - * "can_encrypt_storage": true, - * "can_certify": false, - * "created_at": "2016-03-24T11:31:04-06:00", - * "expires_at": null, - * "revoked": false - * } - * ] - */ - subkeys: { - /** Format: int64 */ - id?: number; - primary_key_id?: number; - key_id?: string; - public_key?: string; - emails?: { - email?: string; - verified?: boolean; - }[]; - subkeys?: unknown[]; - can_sign?: boolean; - can_encrypt_comms?: boolean; - can_encrypt_storage?: boolean; - can_certify?: boolean; - created_at?: string; - expires_at?: string | null; - raw_key?: string | null; - revoked?: boolean; - }[]; - /** @example true */ - can_sign: boolean; - can_encrypt_comms: boolean; - can_encrypt_storage: boolean; - /** @example true */ - can_certify: boolean; - /** - * Format: date-time - * @example 2016-03-24T11:31:04-06:00 - */ - created_at: string; - /** Format: date-time */ - expires_at: string | null; - /** @example true */ - revoked: boolean; - raw_key: string | null; - }; - /** - * Key - * @description Key - */ - key: { - key: string; - /** Format: int64 */ - id: number; - url: string; - title: string; - /** Format: date-time */ - created_at: string; - verified: boolean; - read_only: boolean; - /** Format: date-time */ - last_used?: string | null; - }; - /** Marketplace Account */ - "marketplace-account": { - /** Format: uri */ - url: string; - id: number; - type: string; - node_id?: string; - login: string; - /** Format: email */ - email?: string | null; - /** Format: email */ - organization_billing_email?: string | null; - }; - /** - * User Marketplace Purchase - * @description User Marketplace Purchase - */ - "user-marketplace-purchase": { - /** @example monthly */ - billing_cycle: string; - /** - * Format: date-time - * @example 2017-11-11T00:00:00Z - */ - next_billing_date: string | null; - unit_count: number | null; - /** @example true */ - on_free_trial: boolean; - /** - * Format: date-time - * @example 2017-11-11T00:00:00Z - */ - free_trial_ends_on: string | null; - /** - * Format: date-time - * @example 2017-11-02T01:12:12Z - */ - updated_at: string | null; - account: components["schemas"]["marketplace-account"]; - plan: components["schemas"]["marketplace-listing-plan"]; - }; - /** - * Social account - * @description Social media account - */ - "social-account": { - /** @example linkedin */ - provider: string; - /** @example https://www.linkedin.com/company/github/ */ - url: string; - }; - /** - * SSH Signing Key - * @description A public SSH key used to sign Git commits - */ - "ssh-signing-key": { - key: string; - id: number; - title: string; - /** Format: date-time */ - created_at: string; - }; - /** - * Starred Repository - * @description Starred Repository - */ - "starred-repository": { - /** Format: date-time */ - starred_at: string; - repo: components["schemas"]["repository"]; - }; - /** - * Hovercard - * @description Hovercard - */ - hovercard: { - contexts: { - message: string; - octicon: string; - }[]; - }; - /** - * Key Simple - * @description Key Simple - */ - "key-simple": { - id: number; - key: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - last_used?: string | null; - }; - "billing-premium-request-usage-report-user": { - timePeriod: { - /** @description The year for the usage report. */ - year: number; - /** @description The month for the usage report. */ - month?: number; - /** @description The day for the usage report. */ - day?: number; - }; - /** @description The unique identifier of the user. */ - user: string; - /** @description The product for the usage report. */ - product?: string; - /** @description The model for the usage report. */ - model?: string; - usageItems: { - /** @description Product name. */ - product: string; - /** @description SKU name. */ - sku: string; - /** @description Model name. */ - model: string; - /** @description Unit type of the usage line item. */ - unitType: string; - /** @description Price per unit of the usage line item. */ - pricePerUnit: number; - /** @description Gross quantity of the usage line item. */ - grossQuantity: number; - /** @description Gross amount of the usage line item. */ - grossAmount: number; - /** @description Discount quantity of the usage line item. */ - discountQuantity: number; - /** @description Discount amount of the usage line item. */ - discountAmount: number; - /** @description Net quantity of the usage line item. */ - netQuantity: number; - /** @description Net amount of the usage line item. */ - netAmount: number; - }[]; - }; - "billing-usage-report-user": { - usageItems?: { - /** @description Date of the usage line item. */ - date: string; - /** @description Product name. */ - product: string; - /** @description SKU name. */ - sku: string; - /** @description Quantity of the usage line item. */ - quantity: number; - /** @description Unit type of the usage line item. */ - unitType: string; - /** @description Price per unit of the usage line item. */ - pricePerUnit: number; - /** @description Gross amount of the usage line item. */ - grossAmount: number; - /** @description Discount amount of the usage line item. */ - discountAmount: number; - /** @description Net amount of the usage line item. */ - netAmount: number; - /** @description Name of the repository. */ - repositoryName?: string; - }[]; - }; - /** - * Enterprise - * @description An enterprise on GitHub. Webhook payloads contain the `enterprise` property when the webhook is configured - * on an enterprise account or an organization that's part of an enterprise account. For more information, - * see "[About enterprise accounts](https://docs.github.com/admin/overview/about-enterprise-accounts)." - */ - "enterprise-webhooks": { - /** @description A short description of the enterprise. */ - description?: string | null; - /** - * Format: uri - * @example https://github.com/enterprises/octo-business - */ - html_url: string; - /** - * Format: uri - * @description The enterprise's website URL. - */ - website_url?: string | null; - /** - * @description Unique identifier of the enterprise - * @example 42 - */ - id: number; - /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ - node_id: string; - /** - * @description The name of the enterprise. - * @example Octo Business - */ - name: string; - /** - * @description The slug url identifier for the enterprise. - * @example octo-business - */ - slug: string; - /** - * Format: date-time - * @example 2019-01-26T19:01:12Z - */ - created_at: string | null; - /** - * Format: date-time - * @example 2019-01-26T19:14:43Z - */ - updated_at: string | null; - /** Format: uri */ - avatar_url: string; - }; - /** - * Simple Installation - * @description The GitHub App installation. Webhook payloads contain the `installation` property when the event is configured - * for and sent to a GitHub App. For more information, - * see "[Using webhooks with GitHub Apps](https://docs.github.com/apps/creating-github-apps/registering-a-github-app/using-webhooks-with-github-apps)." - */ - "simple-installation": { - /** - * @description The ID of the installation. - * @example 1 - */ - id: number; - /** - * @description The global node ID of the installation. - * @example MDQ6VXNlcjU4MzIzMQ== - */ - node_id: string; - }; - /** - * Organization Simple - * @description A GitHub organization. Webhook payloads contain the `organization` property when the webhook is configured for an - * organization, or when the event occurs from activity in a repository owned by an organization. - */ - "organization-simple-webhooks": { - /** @example github */ - login: string; - /** @example 1 */ - id: number; - /** @example MDEyOk9yZ2FuaXphdGlvbjE= */ - node_id: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github - */ - url: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github/repos - */ - repos_url: string; - /** - * Format: uri - * @example https://api.github.com/orgs/github/events - */ - events_url: string; - /** @example https://api.github.com/orgs/github/hooks */ - hooks_url: string; - /** @example https://api.github.com/orgs/github/issues */ - issues_url: string; - /** @example https://api.github.com/orgs/github/members{/member} */ - members_url: string; - /** @example https://api.github.com/orgs/github/public_members{/member} */ - public_members_url: string; - /** @example https://github.com/images/error/octocat_happy.gif */ - avatar_url: string; - /** @example A great organization */ - description: string | null; - }; - /** - * Repository - * @description The repository on GitHub where the event occurred. Webhook payloads contain the `repository` property - * when the event occurs from activity in a repository. - */ - "repository-webhooks": { - /** - * Format: int64 - * @description Unique identifier of the repository - * @example 42 - */ - id: number; - /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ - node_id: string; - /** - * @description The name of the repository. - * @example Team Environment - */ - name: string; - /** @example octocat/Hello-World */ - full_name: string; - license: components["schemas"]["nullable-license-simple"]; - organization?: components["schemas"]["nullable-simple-user"]; - forks: number; - permissions?: { - admin: boolean; - pull: boolean; - triage?: boolean; - push: boolean; - maintain?: boolean; - }; - owner: components["schemas"]["simple-user"]; - /** - * @description Whether the repository is private or public. - * @default false - */ - private: boolean; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World - */ - html_url: string; - /** @example This your first repo! */ - description: string | null; - fork: boolean; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World - */ - url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ - archive_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ - assignees_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ - blobs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ - branches_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ - collaborators_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ - comments_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ - commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ - compare_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ - contents_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/contributors - */ - contributors_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/deployments - */ - deployments_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/downloads - */ - downloads_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/events - */ - events_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/forks - */ - forks_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ - git_commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ - git_refs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ - git_tags_url: string; - /** @example git:github.com/octocat/Hello-World.git */ - git_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ - issue_comment_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ - issue_events_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ - issues_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ - keys_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ - labels_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/languages - */ - languages_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/merges - */ - merges_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ - milestones_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ - notifications_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ - pulls_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ - releases_url: string; - /** @example git@github.com:octocat/Hello-World.git */ - ssh_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/stargazers - */ - stargazers_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ - statuses_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscribers - */ - subscribers_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscription - */ - subscription_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/tags - */ - tags_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/teams - */ - teams_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ - trees_url: string; - /** @example https://github.com/octocat/Hello-World.git */ - clone_url: string; - /** - * Format: uri - * @example git:git.example.com/octocat/Hello-World - */ - mirror_url: string | null; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/hooks - */ - hooks_url: string; - /** - * Format: uri - * @example https://svn.github.com/octocat/Hello-World - */ - svn_url: string; - /** - * Format: uri - * @example https://github.com - */ - homepage: string | null; - language: string | null; - /** @example 9 */ - forks_count: number; - /** @example 80 */ - stargazers_count: number; - /** @example 80 */ - watchers_count: number; - /** - * @description The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0. - * @example 108 - */ - size: number; - /** - * @description The default branch of the repository. - * @example master - */ - default_branch: string; - /** @example 0 */ - open_issues_count: number; - /** - * @description Whether this repository acts as a template that can be used to generate new repositories. - * @default false - * @example true - */ - is_template?: boolean; - topics?: string[]; - /** @description The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - /** - * @description Whether issues are enabled. - * @default true - * @example true - */ - has_issues: boolean; - /** - * @description Whether projects are enabled. - * @default true - * @example true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - * @example true - */ - has_wiki: boolean; - has_pages: boolean; - /** - * @description Whether downloads are enabled. - * @default true - * @example true - */ - has_downloads: boolean; - /** - * @description Whether discussions are enabled. - * @default false - * @example true - */ - has_discussions?: boolean; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** @description Returns whether or not this repository disabled. */ - disabled: boolean; - /** - * @description The repository visibility: public, private, or internal. - * @default public - */ - visibility?: string; - /** - * Format: date-time - * @example 2011-01-26T19:06:43Z - */ - pushed_at: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - created_at: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:14:43Z - */ - updated_at: string | null; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - * @example true - */ - allow_rebase_merge?: boolean; - template_repository?: { - id?: number; - node_id?: string; - name?: string; - full_name?: string; - owner?: { - login?: string; - id?: number; - node_id?: string; - avatar_url?: string; - gravatar_id?: string; - url?: string; - html_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - starred_url?: string; - subscriptions_url?: string; - organizations_url?: string; - repos_url?: string; - events_url?: string; - received_events_url?: string; - type?: string; - site_admin?: boolean; - }; - private?: boolean; - html_url?: string; - description?: string; - fork?: boolean; - url?: string; - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - downloads_url?: string; - events_url?: string; - forks_url?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - git_url?: string; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - notifications_url?: string; - pulls_url?: string; - releases_url?: string; - ssh_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - clone_url?: string; - mirror_url?: string; - hooks_url?: string; - svn_url?: string; - homepage?: string; - language?: string; - forks_count?: number; - stargazers_count?: number; - watchers_count?: number; - size?: number; - default_branch?: string; - open_issues_count?: number; - is_template?: boolean; - topics?: string[]; - has_issues?: boolean; - has_projects?: boolean; - has_wiki?: boolean; - has_pages?: boolean; - has_downloads?: boolean; - archived?: boolean; - disabled?: boolean; - visibility?: string; - pushed_at?: string; - created_at?: string; - updated_at?: string; - permissions?: { - admin?: boolean; - maintain?: boolean; - push?: boolean; - triage?: boolean; - pull?: boolean; - }; - allow_rebase_merge?: boolean; - temp_clone_token?: string; - allow_squash_merge?: boolean; - allow_auto_merge?: boolean; - delete_branch_on_merge?: boolean; - allow_update_branch?: boolean; - use_squash_pr_title_as_default?: boolean; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - allow_merge_commit?: boolean; - subscribers_count?: number; - network_count?: number; - } | null; - temp_clone_token?: string; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - * @example true - */ - allow_squash_merge?: boolean; - /** - * @description Whether to allow Auto-merge to be used on pull requests. - * @default false - * @example false - */ - allow_auto_merge?: boolean; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - * @example false - */ - delete_branch_on_merge?: boolean; - /** - * @description Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging. - * @default false - * @example false - */ - allow_update_branch?: boolean; - /** - * @deprecated - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - * @example true - */ - allow_merge_commit?: boolean; - /** @description Whether to allow forking this repo */ - allow_forking?: boolean; - /** - * @description Whether to require contributors to sign off on web-based commits - * @default false - */ - web_commit_signoff_required?: boolean; - subscribers_count?: number; - network_count?: number; - open_issues: number; - watchers: number; - master_branch?: string; - /** @example "2020-07-09T00:17:42Z" */ - starred_at?: string; - /** @description Whether anonymous git access is enabled for this repository */ - anonymous_access_enabled?: boolean; - }; - /** - * branch protection rule - * @description The branch protection rule. Includes a `name` and all the [branch protection settings](https://docs.github.com/github/administering-a-repository/defining-the-mergeability-of-pull-requests/about-protected-branches#about-branch-protection-settings) applied to branches that match the name. Binary settings are boolean. Multi-level configurations are one of `off`, `non_admins`, or `everyone`. Actor and build lists are arrays of strings. - */ - webhooks_rule: { - admin_enforced: boolean; - /** @enum {string} */ - allow_deletions_enforcement_level: "off" | "non_admins" | "everyone"; - /** @enum {string} */ - allow_force_pushes_enforcement_level: "off" | "non_admins" | "everyone"; - authorized_actor_names: string[]; - authorized_actors_only: boolean; - authorized_dismissal_actors_only: boolean; - create_protected?: boolean; - /** Format: date-time */ - created_at: string; - dismiss_stale_reviews_on_push: boolean; - id: number; - ignore_approvals_from_contributors: boolean; - /** @enum {string} */ - linear_history_requirement_enforcement_level: - | "off" - | "non_admins" - | "everyone"; - /** - * @description The enforcement level of the branch lock setting. `off` means the branch is not locked, `non_admins` means the branch is read-only for non_admins, and `everyone` means the branch is read-only for everyone. - * @enum {string} - */ - lock_branch_enforcement_level: "off" | "non_admins" | "everyone"; - /** @description Whether users can pull changes from upstream when the branch is locked. Set to `true` to allow users to pull changes from upstream when the branch is locked. This setting is only applicable for forks. */ - lock_allows_fork_sync?: boolean; - /** @enum {string} */ - merge_queue_enforcement_level: "off" | "non_admins" | "everyone"; - name: string; - /** @enum {string} */ - pull_request_reviews_enforcement_level: "off" | "non_admins" | "everyone"; - repository_id: number; - require_code_owner_review: boolean; - /** @description Whether the most recent push must be approved by someone other than the person who pushed it */ - require_last_push_approval?: boolean; - required_approving_review_count: number; - /** @enum {string} */ - required_conversation_resolution_level: "off" | "non_admins" | "everyone"; - /** @enum {string} */ - required_deployments_enforcement_level: "off" | "non_admins" | "everyone"; - required_status_checks: string[]; - /** @enum {string} */ - required_status_checks_enforcement_level: - | "off" - | "non_admins" - | "everyone"; - /** @enum {string} */ - signature_requirement_enforcement_level: - | "off" - | "non_admins" - | "everyone"; - strict_required_status_checks_policy: boolean; - /** Format: date-time */ - updated_at: string; - }; - /** @description A suite of checks performed on the code of a given code change */ - "simple-check-suite": { - /** @example d6fde92930d4715a2b49857d24b940956b26d2d3 */ - after?: string | null; - app?: components["schemas"]["integration"]; - /** @example 146e867f55c26428e5f9fade55a9bbf5e95a7912 */ - before?: string | null; - /** - * @example neutral - * @enum {string|null} - */ - conclusion?: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "skipped" - | "timed_out" - | "action_required" - | "stale" - | "startup_failure" - | null; - /** Format: date-time */ - created_at?: string; - /** @example master */ - head_branch?: string | null; - /** - * @description The SHA of the head commit that is being checked. - * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d - */ - head_sha?: string; - /** @example 5 */ - id?: number; - /** @example MDEwOkNoZWNrU3VpdGU1 */ - node_id?: string; - pull_requests?: components["schemas"]["pull-request-minimal"][]; - repository?: components["schemas"]["minimal-repository"]; - /** - * @example completed - * @enum {string} - */ - status?: "queued" | "in_progress" | "completed" | "pending" | "waiting"; - /** Format: date-time */ - updated_at?: string; - /** @example https://api.github.com/repos/github/hello-world/check-suites/5 */ - url?: string; - }; - /** - * CheckRun - * @description A check performed on the code of a given code change - */ - "check-run-with-simple-check-suite": { - app: components["schemas"]["integration"]; - check_suite: components["schemas"]["simple-check-suite"]; - /** - * Format: date-time - * @example 2018-05-04T01:14:52Z - */ - completed_at: string | null; - /** - * @example neutral - * @enum {string|null} - */ - conclusion: - | "waiting" - | "pending" - | "startup_failure" - | "stale" - | "success" - | "failure" - | "neutral" - | "cancelled" - | "skipped" - | "timed_out" - | "action_required" - | null; - deployment?: components["schemas"]["deployment-simple"]; - /** @example https://example.com */ - details_url: string; - /** @example 42 */ - external_id: string; - /** - * @description The SHA of the commit that is being checked. - * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d - */ - head_sha: string; - /** @example https://github.com/github/hello-world/runs/4 */ - html_url: string; - /** - * @description The id of the check. - * @example 21 - */ - id: number; - /** - * @description The name of the check. - * @example test-coverage - */ - name: string; - /** @example MDg6Q2hlY2tSdW40 */ - node_id: string; - output: { - annotations_count: number; - /** Format: uri */ - annotations_url: string; - summary: string | null; - text: string | null; - title: string | null; - }; - pull_requests: components["schemas"]["pull-request-minimal"][]; - /** - * Format: date-time - * @example 2018-05-04T01:14:52Z - */ - started_at: string; - /** - * @description The phase of the lifecycle that the check is currently in. - * @example queued - * @enum {string} - */ - status: "queued" | "in_progress" | "completed" | "pending"; - /** @example https://api.github.com/repos/github/hello-world/check-runs/4 */ - url: string; - }; - /** @description The commit SHA of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */ - webhooks_code_scanning_commit_oid: string; - /** @description The Git reference of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */ - webhooks_code_scanning_ref: string; - /** @description The pusher type for the event. Can be either `user` or a deploy key. */ - webhooks_deploy_pusher_type: string; - /** @description The [`git ref`](https://docs.github.com/rest/git/refs#get-a-reference) resource. */ - webhooks_ref_0: string; - /** @description The [`deploy key`](https://docs.github.com/rest/deploy-keys/deploy-keys#get-a-deploy-key) resource. */ - webhooks_deploy_key: { - added_by?: string | null; - created_at: string; - id: number; - key: string; - last_used?: string | null; - read_only: boolean; - title: string; - /** Format: uri */ - url: string; - verified: boolean; - enabled?: boolean; - }; - /** Workflow */ - webhooks_workflow: { - /** Format: uri */ - badge_url: string; - /** Format: date-time */ - created_at: string; - /** Format: uri */ - html_url: string; - id: number; - name: string; - node_id: string; - path: string; - state: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - webhooks_approver: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - user_view_type?: string; - }; - webhooks_reviewers: { - /** User */ - reviewer?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - /** @enum {string} */ - type?: "User"; - }[]; - webhooks_workflow_job_run: { - conclusion: unknown; - created_at: string; - environment: string; - html_url: string; - id: number; - name: unknown; - status: string; - updated_at: string; - }; - /** User */ - webhooks_user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - webhooks_answer: { - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - body: string; - child_comment_count: number; - /** Format: date-time */ - created_at: string; - discussion_id: number; - html_url: string; - id: number; - node_id: string; - parent_id: unknown; - /** Reactions */ - reactions?: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - repository_url: string; - /** Format: date-time */ - updated_at: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** - * Discussion - * @description A Discussion in a repository. - */ - discussion: { - active_lock_reason: string | null; - answer_chosen_at: string | null; - /** User */ - answer_chosen_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - answer_html_url: string | null; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - body: string; - category: { - /** Format: date-time */ - created_at: string; - description: string; - emoji: string; - id: number; - is_answerable: boolean; - name: string; - node_id?: string; - repository_id: number; - slug: string; - updated_at: string; - }; - comments: number; - /** Format: date-time */ - created_at: string; - html_url: string; - id: number; - locked: boolean; - node_id: string; - number: number; - /** Reactions */ - reactions?: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - repository_url: string; - /** - * @description The current state of the discussion. - * `converting` means that the discussion is being converted from an issue. - * `transferring` means that the discussion is being transferred from another repository. - * @enum {string} - */ - state: "open" | "closed" | "locked" | "converting" | "transferring"; - /** - * @description The reason for the current state - * @example resolved - * @enum {string|null} - */ - state_reason: "resolved" | "outdated" | "duplicate" | "reopened" | null; - timeline_url?: string; - title: string; - /** Format: date-time */ - updated_at: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - labels?: components["schemas"]["label"][]; - }; - webhooks_comment: { - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - body: string; - child_comment_count: number; - created_at: string; - discussion_id: number; - html_url: string; - id: number; - node_id: string; - parent_id: number | null; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - repository_url: string; - updated_at: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Label */ - webhooks_label: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }; - /** @description An array of repository objects that the installation can access. */ - webhooks_repositories: { - full_name: string; - /** @description Unique identifier of the repository */ - id: number; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** @description Whether the repository is private or public. */ - private: boolean; - }[]; - /** @description An array of repository objects, which were added to the installation. */ - webhooks_repositories_added: { - full_name: string; - /** @description Unique identifier of the repository */ - id: number; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** @description Whether the repository is private or public. */ - private: boolean; - }[]; - /** - * @description Describe whether all repositories have been selected or there's a selection involved - * @enum {string} - */ - webhooks_repository_selection: "all" | "selected"; - /** - * issue comment - * @description The [comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment) itself. - */ - webhooks_issue_comment: { - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue comment */ - body: string; - /** Format: date-time */ - created_at: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the issue comment - */ - id: number; - /** Format: uri */ - issue_url: string; - node_id: string; - performed_via_github_app: components["schemas"]["integration"]; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue comment - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** @description The changes to the comment. */ - webhooks_changes: { - body?: { - /** @description The previous version of the body. */ - from: string; - }; - }; - /** - * Issue - * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. - */ - webhooks_issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "reminder" - | "pull_request_review_thread" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title: string; - type?: components["schemas"]["issue-type"]; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - webhooks_milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - }; - /** - * Issue - * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. - */ - webhooks_issue_2: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title: string; - type?: components["schemas"]["issue-type"]; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** User */ - webhooks_user_mannequin: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** Marketplace Purchase */ - webhooks_marketplace_purchase: { - account: { - id: number; - login: string; - node_id: string; - organization_billing_email: string | null; - type: string; - }; - billing_cycle: string; - free_trial_ends_on: string | null; - next_billing_date: string | null; - on_free_trial: boolean; - plan: { - bullets: (string | null)[]; - description: string; - has_free_trial: boolean; - id: number; - monthly_price_in_cents: number; - name: string; - /** @enum {string} */ - price_model: "FREE" | "FLAT_RATE" | "PER_UNIT"; - unit_name: string | null; - yearly_price_in_cents: number; - }; - unit_count: number; - }; - /** Marketplace Purchase */ - webhooks_previous_marketplace_purchase: { - account: { - id: number; - login: string; - node_id: string; - organization_billing_email: string | null; - type: string; - }; - billing_cycle: string; - free_trial_ends_on: unknown; - next_billing_date?: string | null; - on_free_trial: boolean; - plan: { - bullets: string[]; - description: string; - has_free_trial: boolean; - id: number; - monthly_price_in_cents: number; - name: string; - /** @enum {string} */ - price_model: "FREE" | "FLAT_RATE" | "PER_UNIT"; - unit_name: string | null; - yearly_price_in_cents: number; - }; - unit_count: number; - }; - /** - * Team - * @description Groups of organization members that gives permissions on specified repositories. - */ - webhooks_team: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** - * @description Whether team members will receive notifications when their team is @mentioned - * @enum {string} - */ - notification_setting: - | "notifications_enabled" - | "notifications_disabled"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - /** - * @description The ownership type of the team - * @enum {string} - */ - type: "enterprise" | "organization"; - /** - * @description Unique identifier of the organization to which this team belongs - * @example 37 - */ - organization_id?: number; - /** - * @description Unique identifier of the enterprise to which this team belongs - * @example 42 - */ - enterprise_id?: number; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** @enum {string} */ - notification_setting?: "notifications_enabled" | "notifications_disabled"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - /** - * @description The ownership type of the team - * @enum {string} - */ - type?: "enterprise" | "organization"; - /** - * @description Unique identifier of the organization to which this team belongs - * @example 37 - */ - organization_id?: number; - /** - * @description Unique identifier of the enterprise to which this team belongs - * @example 42 - */ - enterprise_id?: number; - }; - /** - * Merge Group - * @description A group of pull requests that the merge queue has grouped together to be merged. - */ - "merge-group": { - /** @description The SHA of the merge group. */ - head_sha: string; - /** @description The full ref of the merge group. */ - head_ref: string; - /** @description The SHA of the merge group's parent commit. */ - base_sha: string; - /** @description The full ref of the branch the merge group will be merged into. */ - base_ref: string; - head_commit: components["schemas"]["simple-commit"]; - }; - /** - * Repository - * @description The repository on GitHub where the event occurred. Webhook payloads contain the `repository` property - * when the event occurs from activity in a repository. - */ - "nullable-repository-webhooks": { - /** - * Format: int64 - * @description Unique identifier of the repository - * @example 42 - */ - id: number; - /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ - node_id: string; - /** - * @description The name of the repository. - * @example Team Environment - */ - name: string; - /** @example octocat/Hello-World */ - full_name: string; - license: components["schemas"]["nullable-license-simple"]; - organization?: components["schemas"]["nullable-simple-user"]; - forks: number; - permissions?: { - admin: boolean; - pull: boolean; - triage?: boolean; - push: boolean; - maintain?: boolean; - }; - owner: components["schemas"]["simple-user"]; - /** - * @description Whether the repository is private or public. - * @default false - */ - private: boolean; - /** - * Format: uri - * @example https://github.com/octocat/Hello-World - */ - html_url: string; - /** @example This your first repo! */ - description: string | null; - fork: boolean; - /** - * Format: uri - * @example https://api.github.com/repos/octocat/Hello-World - */ - url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ - archive_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ - assignees_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ - blobs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ - branches_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ - collaborators_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ - comments_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ - commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ - compare_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ - contents_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/contributors - */ - contributors_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/deployments - */ - deployments_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/downloads - */ - downloads_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/events - */ - events_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/forks - */ - forks_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ - git_commits_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ - git_refs_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ - git_tags_url: string; - /** @example git:github.com/octocat/Hello-World.git */ - git_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ - issue_comment_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ - issue_events_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ - issues_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ - keys_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ - labels_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/languages - */ - languages_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/merges - */ - merges_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ - milestones_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ - notifications_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ - pulls_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ - releases_url: string; - /** @example git@github.com:octocat/Hello-World.git */ - ssh_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/stargazers - */ - stargazers_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ - statuses_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscribers - */ - subscribers_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/subscription - */ - subscription_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/tags - */ - tags_url: string; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/teams - */ - teams_url: string; - /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ - trees_url: string; - /** @example https://github.com/octocat/Hello-World.git */ - clone_url: string; - /** - * Format: uri - * @example git:git.example.com/octocat/Hello-World - */ - mirror_url: string | null; - /** - * Format: uri - * @example http://api.github.com/repos/octocat/Hello-World/hooks - */ - hooks_url: string; - /** - * Format: uri - * @example https://svn.github.com/octocat/Hello-World - */ - svn_url: string; - /** - * Format: uri - * @example https://github.com - */ - homepage: string | null; - language: string | null; - /** @example 9 */ - forks_count: number; - /** @example 80 */ - stargazers_count: number; - /** @example 80 */ - watchers_count: number; - /** - * @description The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0. - * @example 108 - */ - size: number; - /** - * @description The default branch of the repository. - * @example master - */ - default_branch: string; - /** @example 0 */ - open_issues_count: number; - /** - * @description Whether this repository acts as a template that can be used to generate new repositories. - * @default false - * @example true - */ - is_template?: boolean; - topics?: string[]; - /** @description The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - /** - * @description Whether issues are enabled. - * @default true - * @example true - */ - has_issues: boolean; - /** - * @description Whether projects are enabled. - * @default true - * @example true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - * @example true - */ - has_wiki: boolean; - has_pages: boolean; - /** - * @description Whether downloads are enabled. - * @default true - * @example true - */ - has_downloads: boolean; - /** - * @description Whether discussions are enabled. - * @default false - * @example true - */ - has_discussions?: boolean; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** @description Returns whether or not this repository disabled. */ - disabled: boolean; - /** - * @description The repository visibility: public, private, or internal. - * @default public - */ - visibility?: string; - /** - * Format: date-time - * @example 2011-01-26T19:06:43Z - */ - pushed_at: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:01:12Z - */ - created_at: string | null; - /** - * Format: date-time - * @example 2011-01-26T19:14:43Z - */ - updated_at: string | null; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - * @example true - */ - allow_rebase_merge?: boolean; - template_repository?: { - id?: number; - node_id?: string; - name?: string; - full_name?: string; - owner?: { - login?: string; - id?: number; - node_id?: string; - avatar_url?: string; - gravatar_id?: string; - url?: string; - html_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - starred_url?: string; - subscriptions_url?: string; - organizations_url?: string; - repos_url?: string; - events_url?: string; - received_events_url?: string; - type?: string; - site_admin?: boolean; - }; - private?: boolean; - html_url?: string; - description?: string; - fork?: boolean; - url?: string; - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - downloads_url?: string; - events_url?: string; - forks_url?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - git_url?: string; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - notifications_url?: string; - pulls_url?: string; - releases_url?: string; - ssh_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - clone_url?: string; - mirror_url?: string; - hooks_url?: string; - svn_url?: string; - homepage?: string; - language?: string; - forks_count?: number; - stargazers_count?: number; - watchers_count?: number; - size?: number; - default_branch?: string; - open_issues_count?: number; - is_template?: boolean; - topics?: string[]; - has_issues?: boolean; - has_projects?: boolean; - has_wiki?: boolean; - has_pages?: boolean; - has_downloads?: boolean; - archived?: boolean; - disabled?: boolean; - visibility?: string; - pushed_at?: string; - created_at?: string; - updated_at?: string; - permissions?: { - admin?: boolean; - maintain?: boolean; - push?: boolean; - triage?: boolean; - pull?: boolean; - }; - allow_rebase_merge?: boolean; - temp_clone_token?: string; - allow_squash_merge?: boolean; - allow_auto_merge?: boolean; - delete_branch_on_merge?: boolean; - allow_update_branch?: boolean; - use_squash_pr_title_as_default?: boolean; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - allow_merge_commit?: boolean; - subscribers_count?: number; - network_count?: number; - } | null; - temp_clone_token?: string; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - * @example true - */ - allow_squash_merge?: boolean; - /** - * @description Whether to allow Auto-merge to be used on pull requests. - * @default false - * @example false - */ - allow_auto_merge?: boolean; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - * @example false - */ - delete_branch_on_merge?: boolean; - /** - * @description Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging. - * @default false - * @example false - */ - allow_update_branch?: boolean; - /** - * @deprecated - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - * @example true - */ - allow_merge_commit?: boolean; - /** @description Whether to allow forking this repo */ - allow_forking?: boolean; - /** - * @description Whether to require contributors to sign off on web-based commits - * @default false - */ - web_commit_signoff_required?: boolean; - subscribers_count?: number; - network_count?: number; - open_issues: number; - watchers: number; - master_branch?: string; - /** @example "2020-07-09T00:17:42Z" */ - starred_at?: string; - /** @description Whether anonymous git access is enabled for this repository */ - anonymous_access_enabled?: boolean; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - webhooks_milestone_3: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - }; - /** - * Membership - * @description The membership between the user and the organization. Not present when the action is `member_invited`. - */ - webhooks_membership: { - /** Format: uri */ - organization_url: string; - role: string; - /** - * @description Whether the user has direct membership in the organization. - * @example true - */ - direct_membership?: boolean; - /** - * @description The slugs of the enterprise teams providing the user with indirect membership in the organization. - * A limit of 100 enterprise team slugs is returned. - * @example [ - * "ent:team-one", - * "ent:team-two" - * ] - */ - enterprise_teams_providing_indirect_membership?: string[]; - state: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** - * Personal Access Token Request - * @description Details of a Personal Access Token Request. - */ - "personal-access-token-request": { - /** @description Unique identifier of the request for access via fine-grained personal access token. Used as the `pat_request_id` parameter in the list and review API calls. */ - id: number; - owner: components["schemas"]["simple-user"]; - /** @description New requested permissions, categorized by type of permission. */ - permissions_added: { - organization?: { - [key: string]: string; - }; - repository?: { - [key: string]: string; - }; - other?: { - [key: string]: string; - }; - }; - /** @description Requested permissions that elevate access for a previously approved request for access, categorized by type of permission. */ - permissions_upgraded: { - organization?: { - [key: string]: string; - }; - repository?: { - [key: string]: string; - }; - other?: { - [key: string]: string; - }; - }; - /** @description Permissions requested, categorized by type of permission. This field incorporates `permissions_added` and `permissions_upgraded`. */ - permissions_result: { - organization?: { - [key: string]: string; - }; - repository?: { - [key: string]: string; - }; - other?: { - [key: string]: string; - }; - }; - /** - * @description Type of repository selection requested. - * @enum {string} - */ - repository_selection: "none" | "all" | "subset"; - /** @description The number of repositories the token is requesting access to. This field is only populated when `repository_selection` is `subset`. */ - repository_count: number | null; - /** @description An array of repository objects the token is requesting access to. This field is only populated when `repository_selection` is `subset`. */ - repositories: - | { - full_name: string; - /** @description Unique identifier of the repository */ - id: number; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** @description Whether the repository is private or public. */ - private: boolean; - }[] - | null; - /** @description Date and time when the request for access was created. */ - created_at: string; - /** @description Unique identifier of the user's token. This field can also be found in audit log events and the organization's settings for their PAT grants. */ - token_id: number; - /** @description The name given to the user's token. This field can also be found in an organization's settings page for Active Tokens. */ - token_name: string; - /** @description Whether the associated fine-grained personal access token has expired. */ - token_expired: boolean; - /** @description Date and time when the associated fine-grained personal access token expires. */ - token_expires_at: string | null; - /** @description Date and time when the associated fine-grained personal access token was last used for authentication. */ - token_last_used_at: string | null; - }; - /** Project Card */ - webhooks_project_card: { - after_id?: number | null; - /** @description Whether or not the card is archived */ - archived: boolean; - column_id: number; - /** Format: uri */ - column_url: string; - /** Format: uri */ - content_url?: string; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The project card's ID */ - id: number; - node_id: string; - note: string | null; - /** Format: uri */ - project_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - }; - /** Project */ - webhooks_project: { - /** @description Body of the project */ - body: string | null; - /** Format: uri */ - columns_url: string; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** Format: uri */ - html_url: string; - id: number; - /** @description Name of the project */ - name: string; - node_id: string; - number: number; - /** Format: uri */ - owner_url: string; - /** - * @description State of the project; either 'open' or 'closed' - * @enum {string} - */ - state: "open" | "closed"; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - }; - /** Project Column */ - webhooks_project_column: { - after_id?: number | null; - /** Format: uri */ - cards_url: string; - /** Format: date-time */ - created_at: string; - /** @description The unique identifier of the project column */ - id: number; - /** @description Name of the project column */ - name: string; - node_id: string; - /** Format: uri */ - project_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - }; - webhooks_project_changes: { - archived_at?: { - /** Format: date-time */ - from?: string | null; - /** Format: date-time */ - to?: string | null; - }; - }; - /** - * Projects v2 Item - * @description An item belonging to a project - */ - "projects-v2-item": { - /** @description The unique identifier of the project item. */ - id: number; - /** @description The node ID of the project item. */ - node_id?: string; - /** @description The node ID of the project that contains this item. */ - project_node_id?: string; - /** @description The node ID of the content represented by this item. */ - content_node_id: string; - content_type: components["schemas"]["projects-v2-item-content-type"]; - creator?: components["schemas"]["simple-user"]; - /** - * Format: date-time - * @description The time when the item was created. - * @example 2022-04-28T12:00:00Z - */ - created_at: string; - /** - * Format: date-time - * @description The time when the item was last updated. - * @example 2022-04-28T12:00:00Z - */ - updated_at: string; - /** - * Format: date-time - * @description The time when the item was archived. - * @example 2022-04-28T12:00:00Z - */ - archived_at: string | null; - }; - /** - * Projects v2 Single Select Option - * @description An option for a single select field - */ - "projects-v2-single-select-option": { - /** @description The unique identifier of the option. */ - id: string; - /** @description The display name of the option. */ - name: string; - /** @description The color associated with the option. */ - color?: string | null; - /** @description A short description of the option. */ - description?: string | null; - }; - /** - * Projects v2 Iteration Setting - * @description An iteration setting for an iteration field - */ - "projects-v2-iteration-setting": { - /** @description The unique identifier of the iteration setting. */ - id: string; - /** @description The iteration title. */ - title: string; - /** @description The iteration title, rendered as HTML. */ - title_html?: string; - /** @description The duration of the iteration in days. */ - duration?: number | null; - /** @description The start date of the iteration. */ - start_date?: string | null; - /** @description Whether the iteration has been completed. */ - completed?: boolean; - }; - /** - * Projects v2 Status Update - * @description An status update belonging to a project - */ - "projects-v2-status-update": { - /** @description The unique identifier of the status update. */ - id: number; - /** @description The node ID of the status update. */ - node_id: string; - /** @description The node ID of the project that this status update belongs to. */ - project_node_id?: string; - creator?: components["schemas"]["simple-user"]; - /** - * Format: date-time - * @description The time when the status update was created. - * @example 2022-04-28T12:00:00Z - */ - created_at: string; - /** - * Format: date-time - * @description The time when the status update was last updated. - * @example 2022-04-28T12:00:00Z - */ - updated_at: string; - /** - * @description The current status. - * @enum {string|null} - */ - status?: - | "INACTIVE" - | "ON_TRACK" - | "AT_RISK" - | "OFF_TRACK" - | "COMPLETE" - | null; - /** - * Format: date - * @description The start date of the period covered by the update. - * @example 2022-04-28 - */ - start_date?: string; - /** - * Format: date - * @description The target date associated with the update. - * @example 2022-04-28 - */ - target_date?: string; - /** - * @description Body of the status update - * @example The project is off to a great start! - */ - body?: string | null; - }; - /** @description The pull request number. */ - webhooks_number: number; - "pull-request-webhook": components["schemas"]["pull-request"] & { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow updating the pull request's branch. */ - allow_update_branch?: boolean; - /** - * @description Whether to delete head branches when pull requests are merged. - * @default false - */ - delete_branch_on_merge?: boolean; - /** - * @description The default value for a merge commit message. - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., "Merge pull request #123 from branch-name"). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** - * @description The default value for a squash merge commit message: - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead.** - * @default false - */ - use_squash_pr_title_as_default?: boolean; - }; - /** Pull Request */ - webhooks_pull_request_5: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** - * Pull Request Review Comment - * @description The [comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request) itself. - */ - webhooks_review_comment: { - _links: { - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - pull_request: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - }; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description The text of the comment. */ - body: string; - /** @description The SHA of the commit to which the comment applies. */ - commit_id: string; - /** Format: date-time */ - created_at: string; - /** @description The diff of the line that the comment refers to. */ - diff_hunk: string; - /** - * Format: uri - * @description HTML URL for the pull request review comment. - */ - html_url: string; - /** @description The ID of the pull request review comment. */ - id: number; - /** @description The comment ID to reply to. */ - in_reply_to_id?: number; - /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */ - line: number | null; - /** @description The node ID of the pull request review comment. */ - node_id: string; - /** @description The SHA of the original commit to which the comment applies. */ - original_commit_id: string; - /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */ - original_line: number; - /** @description The index of the original line in the diff to which the comment applies. */ - original_position: number; - /** @description The first line of the range for a multi-line comment. */ - original_start_line: number | null; - /** @description The relative path of the file to which the comment applies. */ - path: string; - /** @description The line index in the diff to which the comment applies. */ - position: number | null; - /** @description The ID of the pull request review to which the comment belongs. */ - pull_request_review_id: number | null; - /** - * Format: uri - * @description URL for the pull request that the review comment belongs to. - */ - pull_request_url: string; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** - * @description The side of the first line of the range for a multi-line comment. - * @enum {string} - */ - side: "LEFT" | "RIGHT"; - /** @description The first line of the range for a multi-line comment. */ - start_line: number | null; - /** - * @description The side of the first line of the range for a multi-line comment. - * @default RIGHT - * @enum {string|null} - */ - start_side: "LEFT" | "RIGHT" | null; - /** - * @description The level at which the comment is targeted, can be a diff line or a file. - * @enum {string} - */ - subject_type?: "line" | "file"; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the pull request review comment - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** @description The review that was affected. */ - webhooks_review: { - _links: { - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - pull_request: { - /** Format: uri-template */ - href: string; - }; - }; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description The text of the review. */ - body: string | null; - /** @description A commit SHA for the review. */ - commit_id: string; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the review */ - id: number; - node_id: string; - /** Format: uri */ - pull_request_url: string; - state: string; - /** Format: date-time */ - submitted_at: string | null; - /** Format: date-time */ - updated_at?: string | null; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - webhooks_nullable_string: string | null; - /** - * Release - * @description The [release](https://docs.github.com/rest/releases/releases/#get-a-release) object. - */ - webhooks_release: { - assets: { - /** Format: uri */ - browser_download_url: string; - content_type: string; - /** Format: date-time */ - created_at: string; - download_count: number; - id: number; - label: string | null; - /** @description The file name of the asset. */ - name: string; - node_id: string; - size: number; - digest: string | null; - /** - * @description State of the release asset. - * @enum {string} - */ - state: "uploaded"; - /** Format: date-time */ - updated_at: string; - /** User */ - uploader?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - /** Format: uri */ - url: string; - }[]; - /** Format: uri */ - assets_url: string; - /** User */ - author: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - body: string | null; - /** Format: date-time */ - created_at: string | null; - /** Format: date-time */ - updated_at: string | null; - /** Format: uri */ - discussion_url?: string; - /** @description Whether the release is a draft or published */ - draft: boolean; - /** Format: uri */ - html_url: string; - id: number; - /** @description Whether or not the release is immutable. */ - immutable: boolean; - name: string | null; - node_id: string; - /** @description Whether the release is identified as a prerelease or a full release. */ - prerelease: boolean; - /** Format: date-time */ - published_at: string | null; - /** Reactions */ - reactions?: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** @description The name of the tag. */ - tag_name: string; - /** Format: uri */ - tarball_url: string | null; - /** @description Specifies the commitish value that determines where the Git tag is created from. */ - target_commitish: string; - /** Format: uri-template */ - upload_url: string; - /** Format: uri */ - url: string; - /** Format: uri */ - zipball_url: string | null; - }; - /** - * Release - * @description The [release](https://docs.github.com/rest/releases/releases/#get-a-release) object. - */ - webhooks_release_1: { - assets: ({ - /** Format: uri */ - browser_download_url: string; - content_type: string; - /** Format: date-time */ - created_at: string; - download_count: number; - id: number; - label: string | null; - /** @description The file name of the asset. */ - name: string; - node_id: string; - size: number; - digest: string | null; - /** - * @description State of the release asset. - * @enum {string} - */ - state: "uploaded"; - /** Format: date-time */ - updated_at: string; - /** User */ - uploader?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - /** Format: uri */ - url: string; - } | null)[]; - /** Format: uri */ - assets_url: string; - /** User */ - author: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - body: string | null; - /** Format: date-time */ - created_at: string | null; - /** Format: uri */ - discussion_url?: string; - /** @description Whether the release is a draft or published */ - draft: boolean; - /** Format: uri */ - html_url: string; - id: number; - /** @description Whether or not the release is immutable. */ - immutable: boolean; - name: string | null; - node_id: string; - /** @description Whether the release is identified as a prerelease or a full release. */ - prerelease: boolean; - /** Format: date-time */ - published_at: string | null; - /** Reactions */ - reactions?: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** @description The name of the tag. */ - tag_name: string; - /** Format: uri */ - tarball_url: string | null; - /** @description Specifies the commitish value that determines where the Git tag is created from. */ - target_commitish: string; - /** Format: date-time */ - updated_at: string | null; - /** Format: uri-template */ - upload_url: string; - /** Format: uri */ - url: string; - /** Format: uri */ - zipball_url: string | null; - }; - /** - * Repository Vulnerability Alert Alert - * @description The security alert of the vulnerable dependency. - */ - webhooks_alert: { - affected_package_name: string; - affected_range: string; - created_at: string; - dismiss_reason?: string; - dismissed_at?: string; - /** User */ - dismisser?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - external_identifier: string; - /** Format: uri */ - external_reference: string | null; - fix_reason?: string; - /** Format: date-time */ - fixed_at?: string; - fixed_in?: string; - ghsa_id: string; - id: number; - node_id: string; - number: number; - severity: string; - /** @enum {string} */ - state: "open"; - }; - /** - * @description The reason for resolving the alert. - * @enum {string|null} - */ - "secret-scanning-alert-resolution-webhook": - | "false_positive" - | "wont_fix" - | "revoked" - | "used_in_tests" - | "pattern_deleted" - | "pattern_edited" - | null; - "secret-scanning-alert-webhook": { - number?: components["schemas"]["alert-number"]; - created_at?: components["schemas"]["alert-created-at"]; - updated_at?: components["schemas"]["nullable-alert-updated-at"]; - url?: components["schemas"]["alert-url"]; - html_url?: components["schemas"]["alert-html-url"]; - /** - * Format: uri - * @description The REST API URL of the code locations for this alert. - */ - locations_url?: string; - resolution?: components["schemas"]["secret-scanning-alert-resolution-webhook"]; - /** - * Format: date-time - * @description The time that the alert was resolved in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - resolved_at?: string | null; - resolved_by?: components["schemas"]["nullable-simple-user"]; - /** @description An optional comment to resolve an alert. */ - resolution_comment?: string | null; - /** @description The type of secret that secret scanning detected. */ - secret_type?: string; - /** - * @description User-friendly name for the detected secret, matching the `secret_type`. - * For a list of built-in patterns, see "[Supported secret scanning patterns](https://docs.github.com/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." - */ - secret_type_display_name?: string; - /** - * @description The token status as of the latest validity check. - * @enum {string} - */ - validity?: "active" | "inactive" | "unknown"; - /** @description Whether push protection was bypassed for the detected secret. */ - push_protection_bypassed?: boolean | null; - push_protection_bypassed_by?: components["schemas"]["nullable-simple-user"]; - /** - * Format: date-time - * @description The time that push protection was bypassed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - push_protection_bypassed_at?: string | null; - push_protection_bypass_request_reviewer?: components["schemas"]["nullable-simple-user"]; - /** @description An optional comment when reviewing a push protection bypass. */ - push_protection_bypass_request_reviewer_comment?: string | null; - /** @description An optional comment when requesting a push protection bypass. */ - push_protection_bypass_request_comment?: string | null; - /** - * Format: uri - * @description The URL to a push protection bypass request. - */ - push_protection_bypass_request_html_url?: string | null; - /** @description Whether the detected secret was publicly leaked. */ - publicly_leaked?: boolean | null; - /** @description Whether the detected secret was found in multiple repositories in the same organization or business. */ - multi_repo?: boolean | null; - assigned_to?: components["schemas"]["nullable-simple-user"]; - }; - /** @description The details of the security advisory, including summary, description, and severity. */ - webhooks_security_advisory: { - cvss: { - score: number; - vector_string: string | null; - }; - cvss_severities?: components["schemas"]["cvss-severities"]; - cwes: { - cwe_id: string; - name: string; - }[]; - description: string; - ghsa_id: string; - identifiers: { - type: string; - value: string; - }[]; - published_at: string; - references: { - /** Format: uri */ - url: string; - }[]; - severity: string; - summary: string; - updated_at: string; - vulnerabilities: { - first_patched_version: { - identifier: string; - } | null; - package: { - ecosystem: string; - name: string; - }; - severity: string; - vulnerable_version_range: string; - }[]; - withdrawn_at: string | null; - }; - webhooks_sponsorship: { - created_at: string; - maintainer?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - user_view_type?: string; - }; - node_id: string; - privacy_level: string; - /** User */ - sponsor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** User */ - sponsorable: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Sponsorship Tier - * @description The `tier_changed` and `pending_tier_change` will include the original tier before the change or pending change. For more information, see the pending tier change payload. - */ - tier: { - created_at: string; - description: string; - is_custom_ammount?: boolean; - is_custom_amount?: boolean; - is_one_time: boolean; - monthly_price_in_cents: number; - monthly_price_in_dollars: number; - name: string; - node_id: string; - }; - }; - /** @description The `pending_cancellation` and `pending_tier_change` event types will include the date the cancellation or tier change will take effect. */ - webhooks_effective_date: string; - webhooks_changes_8: { - tier: { - /** - * Sponsorship Tier - * @description The `tier_changed` and `pending_tier_change` will include the original tier before the change or pending change. For more information, see the pending tier change payload. - */ - from: { - created_at: string; - description: string; - is_custom_ammount?: boolean; - is_custom_amount?: boolean; - is_one_time: boolean; - monthly_price_in_cents: number; - monthly_price_in_dollars: number; - name: string; - node_id: string; - }; - }; - }; - /** - * Team - * @description Groups of organization members that gives permissions on specified repositories. - */ - webhooks_team_1: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** - * @description Whether team members will receive notifications when their team is @mentioned - * @enum {string} - */ - notification_setting: - | "notifications_enabled" - | "notifications_disabled"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - /** - * @description The ownership type of the team - * @enum {string} - */ - type: "enterprise" | "organization"; - /** - * @description Unique identifier of the organization to which this team belongs - * @example 37 - */ - organization_id?: number; - /** - * @description Unique identifier of the enterprise to which this team belongs - * @example 42 - */ - enterprise_id?: number; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** - * @description Whether team members will receive notifications when their team is @mentioned - * @enum {string} - */ - notification_setting?: "notifications_enabled" | "notifications_disabled"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - /** - * @description The ownership type of the team - * @enum {string} - */ - type?: "enterprise" | "organization"; - /** - * @description Unique identifier of the organization to which this team belongs - * @example 37 - */ - organization_id?: number; - /** - * @description Unique identifier of the enterprise to which this team belongs - * @example 42 - */ - enterprise_id?: number; - }; - /** branch protection configuration disabled event */ - "webhook-branch-protection-configuration-disabled": { - /** @enum {string} */ - action: "disabled"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** branch protection configuration enabled event */ - "webhook-branch-protection-configuration-enabled": { - /** @enum {string} */ - action: "enabled"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** branch protection rule created event */ - "webhook-branch-protection-rule-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - rule: components["schemas"]["webhooks_rule"]; - sender: components["schemas"]["simple-user"]; - }; - /** branch protection rule deleted event */ - "webhook-branch-protection-rule-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - rule: components["schemas"]["webhooks_rule"]; - sender: components["schemas"]["simple-user"]; - }; - /** branch protection rule edited event */ - "webhook-branch-protection-rule-edited": { - /** @enum {string} */ - action: "edited"; - /** @description If the action was `edited`, the changes to the rule. */ - changes?: { - admin_enforced?: { - from: boolean | null; - }; - authorized_actor_names?: { - from: string[]; - }; - authorized_actors_only?: { - from: boolean | null; - }; - authorized_dismissal_actors_only?: { - from: boolean | null; - }; - linear_history_requirement_enforcement_level?: { - /** @enum {string} */ - from: "off" | "non_admins" | "everyone"; - }; - lock_branch_enforcement_level?: { - /** @enum {string} */ - from: "off" | "non_admins" | "everyone"; - }; - lock_allows_fork_sync?: { - from: boolean | null; - }; - pull_request_reviews_enforcement_level?: { - /** @enum {string} */ - from: "off" | "non_admins" | "everyone"; - }; - require_last_push_approval?: { - from: boolean | null; - }; - required_status_checks?: { - from: string[]; - }; - required_status_checks_enforcement_level?: { - /** @enum {string} */ - from: "off" | "non_admins" | "everyone"; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - rule: components["schemas"]["webhooks_rule"]; - sender: components["schemas"]["simple-user"]; - }; - /** Check Run Completed Event */ - "webhook-check-run-completed": { - /** @enum {string} */ - action?: "completed"; - check_run: components["schemas"]["check-run-with-simple-check-suite"]; - installation?: components["schemas"]["simple-installation"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** - * Check Run Completed Event - * @description The check_run.completed webhook encoded with URL encoding - */ - "webhook-check-run-completed-form-encoded": { - /** @description A URL-encoded string of the check_run.completed JSON payload. The decoded payload is a JSON object. */ - payload: string; - }; - /** Check Run Created Event */ - "webhook-check-run-created": { - /** @enum {string} */ - action?: "created"; - check_run: components["schemas"]["check-run-with-simple-check-suite"]; - installation?: components["schemas"]["simple-installation"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** - * Check Run Created Event - * @description The check_run.created webhook encoded with URL encoding - */ - "webhook-check-run-created-form-encoded": { - /** @description A URL-encoded string of the check_run.created JSON payload. The decoded payload is a JSON object. */ - payload: string; - }; - /** Check Run Requested Action Event */ - "webhook-check-run-requested-action": { - /** @enum {string} */ - action: "requested_action"; - check_run: components["schemas"]["check-run-with-simple-check-suite"]; - installation?: components["schemas"]["simple-installation"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - /** @description The action requested by the user. */ - requested_action?: { - /** @description The integrator reference of the action requested by the user. */ - identifier?: string; - }; - sender: components["schemas"]["simple-user"]; - }; - /** - * Check Run Requested Action Event - * @description The check_run.requested_action webhook encoded with URL encoding - */ - "webhook-check-run-requested-action-form-encoded": { - /** @description A URL-encoded string of the check_run.requested_action JSON payload. The decoded payload is a JSON object. */ - payload: string; - }; - /** Check Run Re-Requested Event */ - "webhook-check-run-rerequested": { - /** @enum {string} */ - action?: "rerequested"; - check_run: components["schemas"]["check-run-with-simple-check-suite"]; - installation?: components["schemas"]["simple-installation"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** - * Check Run Re-Requested Event - * @description The check_run.rerequested webhook encoded with URL encoding - */ - "webhook-check-run-rerequested-form-encoded": { - /** @description A URL-encoded string of the check_run.rerequested JSON payload. The decoded payload is a JSON object. */ - payload: string; - }; - /** check_suite completed event */ - "webhook-check-suite-completed": { - /** @enum {string} */ - action: "completed"; - /** @description The [check_suite](https://docs.github.com/rest/checks/suites#get-a-check-suite). */ - check_suite: { - after: string | null; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - app: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "merge_group" - | "pull_request_review_thread" - | "workflow_job" - | "merge_queue_entry" - | "security_and_analysis" - | "projects_v2_item" - | "secret_scanning_alert_location" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The client ID of the GitHub app */ - client_id?: string | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - }; - before: string | null; - /** Format: uri */ - check_runs_url: string; - /** - * @description The summary conclusion for all check runs that are part of the check suite. This value will be `null` until the check run has `completed`. - * @enum {string|null} - */ - conclusion: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "timed_out" - | "action_required" - | "stale" - | null - | "skipped" - | "startup_failure"; - /** Format: date-time */ - created_at: string; - /** @description The head branch name the changes are on. */ - head_branch: string | null; - /** SimpleCommit */ - head_commit: { - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - author: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - committer: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - id: string; - message: string; - timestamp: string; - tree_id: string; - }; - /** @description The SHA of the head commit that is being checked. */ - head_sha: string; - id: number; - latest_check_runs_count: number; - node_id: string; - /** @description An array of pull requests that match this check suite. A pull request matches a check suite if they have the same `head_sha` and `head_branch`. When the check suite's `head_branch` is in a forked repository it will be `null` and the `pull_requests` array will be empty. */ - pull_requests: { - base: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - head: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - id: number; - number: number; - /** Format: uri */ - url: string; - }[]; - rerequestable?: boolean; - runs_rerequestable?: boolean; - /** - * @description The summary status for all check runs that are part of the check suite. Can be `requested`, `in_progress`, or `completed`. - * @enum {string|null} - */ - status: - | "requested" - | "in_progress" - | "completed" - | "queued" - | null - | "pending"; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL that points to the check suite API resource. - */ - url: string; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** check_suite requested event */ - "webhook-check-suite-requested": { - /** @enum {string} */ - action: "requested"; - /** @description The [check_suite](https://docs.github.com/rest/checks/suites#get-a-check-suite). */ - check_suite: { - after: string | null; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - app: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "pull_request_review_thread" - | "workflow_job" - | "merge_queue_entry" - | "security_and_analysis" - | "secret_scanning_alert_location" - | "projects_v2_item" - | "merge_group" - | "repository_import" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description Client ID of the GitHub app */ - client_id?: string | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - }; - before: string | null; - /** Format: uri */ - check_runs_url: string; - /** - * @description The summary conclusion for all check runs that are part of the check suite. This value will be `null` until the check run has completed. - * @enum {string|null} - */ - conclusion: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "timed_out" - | "action_required" - | "stale" - | null - | "skipped"; - /** Format: date-time */ - created_at: string; - /** @description The head branch name the changes are on. */ - head_branch: string | null; - /** SimpleCommit */ - head_commit: { - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - author: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - committer: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - id: string; - message: string; - timestamp: string; - tree_id: string; - }; - /** @description The SHA of the head commit that is being checked. */ - head_sha: string; - id: number; - latest_check_runs_count: number; - node_id: string; - /** @description An array of pull requests that match this check suite. A pull request matches a check suite if they have the same `head_sha` and `head_branch`. When the check suite's `head_branch` is in a forked repository it will be `null` and the `pull_requests` array will be empty. */ - pull_requests: { - base: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - head: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - id: number; - number: number; - /** Format: uri */ - url: string; - }[]; - rerequestable?: boolean; - runs_rerequestable?: boolean; - /** - * @description The summary status for all check runs that are part of the check suite. Can be `requested`, `in_progress`, or `completed`. - * @enum {string|null} - */ - status: "requested" | "in_progress" | "completed" | "queued" | null; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL that points to the check suite API resource. - */ - url: string; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** check_suite rerequested event */ - "webhook-check-suite-rerequested": { - /** @enum {string} */ - action: "rerequested"; - /** @description The [check_suite](https://docs.github.com/rest/checks/suites#get-a-check-suite). */ - check_suite: { - after: string | null; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - app: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "pull_request_review_thread" - | "merge_queue_entry" - | "workflow_job" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The Client ID for the GitHub app */ - client_id?: string | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - }; - before: string | null; - /** Format: uri */ - check_runs_url: string; - /** - * @description The summary conclusion for all check runs that are part of the check suite. This value will be `null` until the check run has completed. - * @enum {string|null} - */ - conclusion: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "timed_out" - | "action_required" - | "stale" - | null; - /** Format: date-time */ - created_at: string; - /** @description The head branch name the changes are on. */ - head_branch: string | null; - /** SimpleCommit */ - head_commit: { - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - author: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - committer: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - id: string; - message: string; - timestamp: string; - tree_id: string; - }; - /** @description The SHA of the head commit that is being checked. */ - head_sha: string; - id: number; - latest_check_runs_count: number; - node_id: string; - /** @description An array of pull requests that match this check suite. A pull request matches a check suite if they have the same `head_sha` and `head_branch`. When the check suite's `head_branch` is in a forked repository it will be `null` and the `pull_requests` array will be empty. */ - pull_requests: { - base: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - head: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - id: number; - number: number; - /** Format: uri */ - url: string; - }[]; - rerequestable?: boolean; - runs_rerequestable?: boolean; - /** - * @description The summary status for all check runs that are part of the check suite. Can be `requested`, `in_progress`, or `completed`. - * @enum {string|null} - */ - status: "requested" | "in_progress" | "completed" | "queued" | null; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL that points to the check suite API resource. - */ - url: string; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** code_scanning_alert appeared_in_branch event */ - "webhook-code-scanning-alert-appeared-in-branch": { - /** @enum {string} */ - action: "appeared_in_branch"; - /** @description The code scanning alert involved in the event. */ - alert: { - assignees?: components["schemas"]["simple-user"][]; - /** - * Format: date-time - * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ.` - */ - created_at: string; - /** - * Format: date-time - * @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - dismissed_at: string | null; - /** User */ - dismissed_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; - /** - * @description The reason for dismissing or closing the alert. - * @enum {string|null} - */ - dismissed_reason: - | "false positive" - | "won't fix" - | "used in tests" - | null; - /** @description The time that the alert was fixed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. */ - fixed_at?: unknown; - /** - * Format: uri - * @description The GitHub URL of the alert resource. - */ - html_url: string; - /** Alert Instance */ - most_recent_instance?: { - /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */ - analysis_key: string; - /** @description Identifies the configuration under which the analysis was executed. */ - category?: string; - classifications?: string[]; - commit_sha?: string; - /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */ - environment: string; - location?: { - end_column?: number; - end_line?: number; - path?: string; - start_column?: number; - start_line?: number; - }; - message?: { - text?: string; - }; - /** @description The full Git reference, formatted as `refs/heads/`. */ - ref: string; - /** - * @description State of a code scanning alert. - * @enum {string} - */ - state: "open" | "dismissed" | "fixed"; - } | null; - /** @description The code scanning alert number. */ - number: number; - rule: { - /** @description A short description of the rule used to detect the alert. */ - description: string; - /** @description A unique identifier for the rule used to detect the alert. */ - id: string; - /** - * @description The severity of the alert. - * @enum {string|null} - */ - severity: "none" | "note" | "warning" | "error" | null; - }; - /** - * @description State of a code scanning alert. Events for alerts found outside the default branch will return a `null` value until they are dismissed or fixed. - * @enum {string|null} - */ - state: "open" | "dismissed" | "fixed" | null; - tool: { - /** @description The name of the tool used to generate the code scanning analysis alert. */ - name: string; - /** @description The version of the tool used to detect the alert. */ - version: string | null; - }; - /** Format: uri */ - url: string; - }; - commit_oid: components["schemas"]["webhooks_code_scanning_commit_oid"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - ref: components["schemas"]["webhooks_code_scanning_ref"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** code_scanning_alert closed_by_user event */ - "webhook-code-scanning-alert-closed-by-user": { - /** @enum {string} */ - action: "closed_by_user"; - /** @description The code scanning alert involved in the event. */ - alert: { - assignees?: components["schemas"]["simple-user"][]; - /** - * Format: date-time - * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ.` - */ - created_at: string; - /** - * Format: date-time - * @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - dismissed_at: string; - /** User */ - dismissed_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; - /** - * @description The reason for dismissing or closing the alert. - * @enum {string|null} - */ - dismissed_reason: - | "false positive" - | "won't fix" - | "used in tests" - | null; - /** @description The time that the alert was fixed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. */ - fixed_at?: unknown; - /** - * Format: uri - * @description The GitHub URL of the alert resource. - */ - html_url: string; - /** Alert Instance */ - most_recent_instance?: { - /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */ - analysis_key: string; - /** @description Identifies the configuration under which the analysis was executed. */ - category?: string; - classifications?: string[]; - commit_sha?: string; - /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */ - environment: string; - location?: { - end_column?: number; - end_line?: number; - path?: string; - start_column?: number; - start_line?: number; - }; - message?: { - text?: string; - }; - /** @description The full Git reference, formatted as `refs/heads/`. */ - ref: string; - /** - * @description State of a code scanning alert. - * @enum {string} - */ - state: "open" | "dismissed" | "fixed"; - } | null; - /** @description The code scanning alert number. */ - number: number; - rule: { - /** @description A short description of the rule used to detect the alert. */ - description: string; - full_description?: string; - help?: string | null; - /** @description A link to the documentation for the rule used to detect the alert. */ - help_uri?: string | null; - /** @description A unique identifier for the rule used to detect the alert. */ - id: string; - name?: string; - /** - * @description The severity of the alert. - * @enum {string|null} - */ - severity: "none" | "note" | "warning" | "error" | null; - tags?: string[] | null; - }; - /** - * @description State of a code scanning alert. - * @enum {string} - */ - state: "dismissed" | "fixed"; - tool: { - guid?: string | null; - /** @description The name of the tool used to generate the code scanning analysis alert. */ - name: string; - /** @description The version of the tool used to detect the alert. */ - version: string | null; - }; - /** Format: uri */ - url: string; - /** User */ - dismissal_approved_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - commit_oid: components["schemas"]["webhooks_code_scanning_commit_oid"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - ref: components["schemas"]["webhooks_code_scanning_ref"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** code_scanning_alert created event */ - "webhook-code-scanning-alert-created": { - /** @enum {string} */ - action: "created"; - /** @description The code scanning alert involved in the event. */ - alert: { - /** - * Format: date-time - * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ.` - */ - created_at: string | null; - /** @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. */ - dismissed_at: unknown; - dismissed_by: unknown; - dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; - /** @description The reason for dismissing or closing the alert. Can be one of: `false positive`, `won't fix`, and `used in tests`. */ - dismissed_reason: unknown; - /** @description The time that the alert was fixed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. */ - fixed_at?: unknown; - /** - * Format: uri - * @description The GitHub URL of the alert resource. - */ - html_url: string; - instances_url?: string; - /** Alert Instance */ - most_recent_instance?: { - /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */ - analysis_key: string; - /** @description Identifies the configuration under which the analysis was executed. */ - category?: string; - classifications?: string[]; - commit_sha?: string; - /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */ - environment: string; - location?: { - end_column?: number; - end_line?: number; - path?: string; - start_column?: number; - start_line?: number; - }; - message?: { - text?: string; - }; - /** @description The full Git reference, formatted as `refs/heads/`. */ - ref: string; - /** - * @description State of a code scanning alert. - * @enum {string} - */ - state: "open" | "dismissed" | "fixed"; - } | null; - /** @description The code scanning alert number. */ - number: number; - rule: { - /** @description A short description of the rule used to detect the alert. */ - description: string; - full_description?: string; - help?: string | null; - /** @description A link to the documentation for the rule used to detect the alert. */ - help_uri?: string | null; - /** @description A unique identifier for the rule used to detect the alert. */ - id: string; - name?: string; - /** - * @description The severity of the alert. - * @enum {string|null} - */ - severity: "none" | "note" | "warning" | "error" | null; - tags?: string[] | null; - }; - /** - * @description State of a code scanning alert. Events for alerts found outside the default branch will return a `null` value until they are dismissed or fixed. - * @enum {string|null} - */ - state: "open" | "dismissed" | null; - tool: { - guid?: string | null; - /** @description The name of the tool used to generate the code scanning analysis alert. */ - name: string; - /** @description The version of the tool used to detect the alert. */ - version: string | null; - } | null; - updated_at?: string | null; - /** Format: uri */ - url: string; - dismissal_approved_by?: unknown; - assignees?: components["schemas"]["simple-user"][]; - }; - commit_oid: components["schemas"]["webhooks_code_scanning_commit_oid"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - ref: components["schemas"]["webhooks_code_scanning_ref"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** code_scanning_alert fixed event */ - "webhook-code-scanning-alert-fixed": { - /** @enum {string} */ - action: "fixed"; - /** @description The code scanning alert involved in the event. */ - alert: { - assignees?: components["schemas"]["simple-user"][]; - /** - * Format: date-time - * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ.` - */ - created_at: string; - /** - * Format: date-time - * @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - dismissed_at: string | null; - /** User */ - dismissed_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; - /** - * @description The reason for dismissing or closing the alert. - * @enum {string|null} - */ - dismissed_reason: - | "false positive" - | "won't fix" - | "used in tests" - | null; - /** @description The time that the alert was fixed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. */ - fixed_at?: unknown; - /** - * Format: uri - * @description The GitHub URL of the alert resource. - */ - html_url: string; - /** Format: uri */ - instances_url?: string; - /** Alert Instance */ - most_recent_instance?: { - /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */ - analysis_key: string; - /** @description Identifies the configuration under which the analysis was executed. */ - category?: string; - classifications?: string[]; - commit_sha?: string; - /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */ - environment: string; - location?: { - end_column?: number; - end_line?: number; - path?: string; - start_column?: number; - start_line?: number; - }; - message?: { - text?: string; - }; - /** @description The full Git reference, formatted as `refs/heads/`. */ - ref: string; - /** - * @description State of a code scanning alert. - * @enum {string} - */ - state: "open" | "dismissed" | "fixed"; - } | null; - /** @description The code scanning alert number. */ - number: number; - rule: { - /** @description A short description of the rule used to detect the alert. */ - description: string; - full_description?: string; - help?: string | null; - /** @description A link to the documentation for the rule used to detect the alert. */ - help_uri?: string | null; - /** @description A unique identifier for the rule used to detect the alert. */ - id: string; - name?: string; - /** - * @description The severity of the alert. - * @enum {string|null} - */ - severity: "none" | "note" | "warning" | "error" | null; - tags?: string[] | null; - }; - /** - * @description State of a code scanning alert. Events for alerts found outside the default branch will return a `null` value until they are dismissed or fixed. - * @enum {string|null} - */ - state: "fixed" | null; - tool: { - guid?: string | null; - /** @description The name of the tool used to generate the code scanning analysis alert. */ - name: string; - /** @description The version of the tool used to detect the alert. */ - version: string | null; - }; - /** Format: uri */ - url: string; - }; - commit_oid: components["schemas"]["webhooks_code_scanning_commit_oid"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - ref: components["schemas"]["webhooks_code_scanning_ref"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** code_scanning_alert reopened event */ - "webhook-code-scanning-alert-reopened": { - /** @enum {string} */ - action: "reopened"; - /** @description The code scanning alert involved in the event. */ - alert: { - assignees?: components["schemas"]["simple-user"][]; - /** - * Format: date-time - * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ.` - */ - created_at: string; - /** @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. */ - dismissed_at: string | null; - dismissed_by: Record | null; - dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; - /** @description The reason for dismissing or closing the alert. Can be one of: `false positive`, `won't fix`, and `used in tests`. */ - dismissed_reason: string | null; - /** @description The time that the alert was fixed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. */ - fixed_at?: unknown; - /** - * Format: uri - * @description The GitHub URL of the alert resource. - */ - html_url: string; - /** Alert Instance */ - most_recent_instance?: { - /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */ - analysis_key: string; - /** @description Identifies the configuration under which the analysis was executed. */ - category?: string; - classifications?: string[]; - commit_sha?: string; - /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */ - environment: string; - location?: { - end_column?: number; - end_line?: number; - path?: string; - start_column?: number; - start_line?: number; - }; - message?: { - text?: string; - }; - /** @description The full Git reference, formatted as `refs/heads/`. */ - ref: string; - /** - * @description State of a code scanning alert. - * @enum {string} - */ - state: "open" | "dismissed" | "fixed"; - } | null; - /** @description The code scanning alert number. */ - number: number; - rule: { - /** @description A short description of the rule used to detect the alert. */ - description: string; - full_description?: string; - help?: string | null; - /** @description A link to the documentation for the rule used to detect the alert. */ - help_uri?: string | null; - /** @description A unique identifier for the rule used to detect the alert. */ - id: string; - name?: string; - /** - * @description The severity of the alert. - * @enum {string|null} - */ - severity: "none" | "note" | "warning" | "error" | null; - tags?: string[] | null; - }; - /** - * @description State of a code scanning alert. Events for alerts found outside the default branch will return a `null` value until they are dismissed or fixed. - * @enum {string|null} - */ - state: "open" | "dismissed" | "fixed" | null; - tool: { - guid?: string | null; - /** @description The name of the tool used to generate the code scanning analysis alert. */ - name: string; - /** @description The version of the tool used to detect the alert. */ - version: string | null; - }; - /** Format: uri */ - url: string; - } | null; - /** @description The commit SHA of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */ - commit_oid: string | null; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** @description The Git reference of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */ - ref: string | null; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** code_scanning_alert reopened_by_user event */ - "webhook-code-scanning-alert-reopened-by-user": { - /** @enum {string} */ - action: "reopened_by_user"; - /** @description The code scanning alert involved in the event. */ - alert: { - assignees?: components["schemas"]["simple-user"][]; - /** - * Format: date-time - * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ.` - */ - created_at: string; - /** @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. */ - dismissed_at: unknown; - dismissed_by: unknown; - dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; - /** @description The reason for dismissing or closing the alert. Can be one of: `false positive`, `won't fix`, and `used in tests`. */ - dismissed_reason: unknown; - /** @description The time that the alert was fixed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. */ - fixed_at?: unknown; - /** - * Format: uri - * @description The GitHub URL of the alert resource. - */ - html_url: string; - /** Alert Instance */ - most_recent_instance?: { - /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */ - analysis_key: string; - /** @description Identifies the configuration under which the analysis was executed. */ - category?: string; - classifications?: string[]; - commit_sha?: string; - /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */ - environment: string; - location?: { - end_column?: number; - end_line?: number; - path?: string; - start_column?: number; - start_line?: number; - }; - message?: { - text?: string; - }; - /** @description The full Git reference, formatted as `refs/heads/`. */ - ref: string; - /** - * @description State of a code scanning alert. - * @enum {string} - */ - state: "open" | "dismissed" | "fixed"; - } | null; - /** @description The code scanning alert number. */ - number: number; - rule: { - /** @description A short description of the rule used to detect the alert. */ - description: string; - /** @description A unique identifier for the rule used to detect the alert. */ - id: string; - /** - * @description The severity of the alert. - * @enum {string|null} - */ - severity: "none" | "note" | "warning" | "error" | null; - }; - /** - * @description State of a code scanning alert. Events for alerts found outside the default branch will return a `null` value until they are dismissed or fixed. - * @enum {string|null} - */ - state: "open" | "fixed" | null; - tool: { - /** @description The name of the tool used to generate the code scanning analysis alert. */ - name: string; - /** @description The version of the tool used to detect the alert. */ - version: string | null; - }; - /** Format: uri */ - url: string; - }; - commit_oid: components["schemas"]["webhooks_code_scanning_commit_oid"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - ref: components["schemas"]["webhooks_code_scanning_ref"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** commit_comment created event */ - "webhook-commit-comment-created": { - /** - * @description The action performed. Can be `created`. - * @enum {string} - */ - action: "created"; - /** @description The [commit comment](${externalDocsUpapp/api/description/components/schemas/webhooks/issue-comment-created.yamlrl}/rest/commits/comments#get-a-commit-comment) resource. */ - comment: { - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description The text of the comment. */ - body: string; - /** @description The SHA of the commit to which the comment applies. */ - commit_id: string; - created_at: string; - /** Format: uri */ - html_url: string; - /** @description The ID of the commit comment. */ - id: number; - /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */ - line: number | null; - /** @description The node ID of the commit comment. */ - node_id: string; - /** @description The relative path of the file to which the comment applies. */ - path: string | null; - /** @description The line index in the diff to which the comment applies. */ - position: number | null; - /** Reactions */ - reactions?: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** create event */ - "webhook-create": { - /** @description The repository's current description. */ - description: string | null; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** @description The name of the repository's default branch (usually `main`). */ - master_branch: string; - organization?: components["schemas"]["organization-simple-webhooks"]; - pusher_type: components["schemas"]["webhooks_deploy_pusher_type"]; - ref: components["schemas"]["webhooks_ref_0"]; - /** - * @description The type of Git ref object created in the repository. - * @enum {string} - */ - ref_type: "tag" | "branch"; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** custom property created event */ - "webhook-custom-property-created": { - /** @enum {string} */ - action: "created"; - definition: components["schemas"]["custom-property"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** custom property deleted event */ - "webhook-custom-property-deleted": { - /** @enum {string} */ - action: "deleted"; - definition: { - /** @description The name of the property that was deleted. */ - property_name: string; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** custom property promoted to business event */ - "webhook-custom-property-promoted-to-enterprise": { - /** @enum {string} */ - action: "promote_to_enterprise"; - definition: components["schemas"]["custom-property"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** custom property updated event */ - "webhook-custom-property-updated": { - /** @enum {string} */ - action: "updated"; - definition: components["schemas"]["custom-property"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** Custom property values updated event */ - "webhook-custom-property-values-updated": { - /** @enum {string} */ - action: "updated"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - repository: components["schemas"]["repository-webhooks"]; - organization: components["schemas"]["organization-simple-webhooks"]; - sender?: components["schemas"]["simple-user"]; - /** @description The new custom property values for the repository. */ - new_property_values: components["schemas"]["custom-property-value"][]; - /** @description The old custom property values for the repository. */ - old_property_values: components["schemas"]["custom-property-value"][]; - }; - /** delete event */ - "webhook-delete": { - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - pusher_type: components["schemas"]["webhooks_deploy_pusher_type"]; - ref: components["schemas"]["webhooks_ref_0"]; - /** - * @description The type of Git ref object deleted in the repository. - * @enum {string} - */ - ref_type: "tag" | "branch"; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** Dependabot alert auto-dismissed event */ - "webhook-dependabot-alert-auto-dismissed": { - /** @enum {string} */ - action: "auto_dismissed"; - alert: components["schemas"]["dependabot-alert"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** Dependabot alert auto-reopened event */ - "webhook-dependabot-alert-auto-reopened": { - /** @enum {string} */ - action: "auto_reopened"; - alert: components["schemas"]["dependabot-alert"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** Dependabot alert created event */ - "webhook-dependabot-alert-created": { - /** @enum {string} */ - action: "created"; - alert: components["schemas"]["dependabot-alert"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** Dependabot alert dismissed event */ - "webhook-dependabot-alert-dismissed": { - /** @enum {string} */ - action: "dismissed"; - alert: components["schemas"]["dependabot-alert"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** Dependabot alert fixed event */ - "webhook-dependabot-alert-fixed": { - /** @enum {string} */ - action: "fixed"; - alert: components["schemas"]["dependabot-alert"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** Dependabot alert reintroduced event */ - "webhook-dependabot-alert-reintroduced": { - /** @enum {string} */ - action: "reintroduced"; - alert: components["schemas"]["dependabot-alert"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** Dependabot alert reopened event */ - "webhook-dependabot-alert-reopened": { - /** @enum {string} */ - action: "reopened"; - alert: components["schemas"]["dependabot-alert"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** deploy_key created event */ - "webhook-deploy-key-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - key: components["schemas"]["webhooks_deploy_key"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** deploy_key deleted event */ - "webhook-deploy-key-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - key: components["schemas"]["webhooks_deploy_key"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** deployment created event */ - "webhook-deployment-created": { - /** @enum {string} */ - action: "created"; - /** - * Deployment - * @description The [deployment](https://docs.github.com/rest/deployments/deployments#list-deployments). - */ - deployment: { - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - environment: string; - id: number; - node_id: string; - original_environment: string; - payload: Record | string; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "workflow_job" - | "pull_request_review_thread" - | "merge_queue_entry" - | "secret_scanning_alert_location" - | "merge_group" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - production_environment?: boolean; - ref: string; - /** Format: uri */ - repository_url: string; - sha: string; - /** Format: uri */ - statuses_url: string; - task: string; - transient_environment?: boolean; - updated_at: string; - /** Format: uri */ - url: string; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - workflow: components["schemas"]["webhooks_workflow"]; - /** Deployment Workflow Run */ - workflow_run: { - /** User */ - actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - artifacts_url?: string; - cancel_url?: string; - check_suite_id: number; - check_suite_node_id: string; - check_suite_url?: string; - /** @enum {string|null} */ - conclusion: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "timed_out" - | "action_required" - | "stale" - | null; - /** Format: date-time */ - created_at: string; - display_title: string; - event: string; - head_branch: string; - head_commit?: unknown; - head_repository?: { - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - description?: unknown; - downloads_url?: string; - events_url?: string; - fork?: boolean; - forks_url?: string; - full_name?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - hooks_url?: string; - html_url?: string; - id?: number; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - name?: string; - node_id?: string; - notifications_url?: string; - owner?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - }; - private?: boolean; - pulls_url?: string; - releases_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - url?: string; - }; - head_sha: string; - /** Format: uri */ - html_url: string; - id: number; - jobs_url?: string; - logs_url?: string; - name: string; - node_id: string; - path: string; - previous_attempt_url?: unknown; - pull_requests: { - base: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - head: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - id: number; - number: number; - /** Format: uri */ - url: string; - }[]; - referenced_workflows?: - | { - path: string; - ref?: string; - sha: string; - }[] - | null; - repository?: { - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - description?: unknown; - downloads_url?: string; - events_url?: string; - fork?: boolean; - forks_url?: string; - full_name?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - hooks_url?: string; - html_url?: string; - id?: number; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - name?: string; - node_id?: string; - notifications_url?: string; - owner?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - }; - private?: boolean; - pulls_url?: string; - releases_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - url?: string; - }; - rerun_url?: string; - run_attempt: number; - run_number: number; - /** Format: date-time */ - run_started_at: string; - /** @enum {string} */ - status: - | "requested" - | "in_progress" - | "completed" - | "queued" - | "waiting" - | "pending"; - /** User */ - triggering_actor?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - workflow_id: number; - workflow_url?: string; - } | null; - }; - /** deployment protection rule requested event */ - "webhook-deployment-protection-rule-requested": { - /** @enum {string} */ - action?: "requested"; - /** @description The name of the environment that has the deployment protection rule. */ - environment?: string; - /** @description The event that triggered the deployment protection rule. */ - event?: string; - /** - * Format: uri - * @description The URL to review the deployment protection rule. - */ - deployment_callback_url?: string; - deployment?: components["schemas"]["deployment"]; - pull_requests?: components["schemas"]["pull-request"][]; - repository?: components["schemas"]["repository-webhooks"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - sender?: components["schemas"]["simple-user"]; - }; - "webhook-deployment-review-approved": { - /** @enum {string} */ - action: "approved"; - approver?: components["schemas"]["webhooks_approver"]; - comment?: string; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - reviewers?: components["schemas"]["webhooks_reviewers"]; - sender: components["schemas"]["simple-user"]; - since: string; - workflow_job_run?: components["schemas"]["webhooks_workflow_job_run"]; - workflow_job_runs?: { - conclusion?: unknown; - created_at?: string; - environment?: string; - html_url?: string; - id?: number; - name?: string | null; - status?: string; - updated_at?: string; - }[]; - /** Deployment Workflow Run */ - workflow_run: { - /** User */ - actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - artifacts_url?: string; - cancel_url?: string; - check_suite_id: number; - check_suite_node_id: string; - check_suite_url?: string; - /** @enum {string|null} */ - conclusion: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "timed_out" - | "action_required" - | "stale" - | null; - /** Format: date-time */ - created_at: string; - display_title: string; - event: string; - head_branch: string; - head_commit?: Record | null; - head_repository?: { - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - description?: string | null; - downloads_url?: string; - events_url?: string; - fork?: boolean; - forks_url?: string; - full_name?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - hooks_url?: string; - html_url?: string; - id?: number; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - name?: string; - node_id?: string; - notifications_url?: string; - owner?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - user_view_type?: string; - }; - private?: boolean; - pulls_url?: string; - releases_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - url?: string; - }; - head_sha: string; - /** Format: uri */ - html_url: string; - id: number; - jobs_url?: string; - logs_url?: string; - name: string; - node_id: string; - path: string; - previous_attempt_url?: string | null; - pull_requests: { - base: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - head: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - id: number; - number: number; - /** Format: uri */ - url: string; - }[]; - referenced_workflows?: - | { - path: string; - ref?: string; - sha: string; - }[] - | null; - repository?: { - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - description?: string | null; - downloads_url?: string; - events_url?: string; - fork?: boolean; - forks_url?: string; - full_name?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - hooks_url?: string; - html_url?: string; - id?: number; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - name?: string; - node_id?: string; - notifications_url?: string; - owner?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - user_view_type?: string; - }; - private?: boolean; - pulls_url?: string; - releases_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - url?: string; - }; - rerun_url?: string; - run_attempt: number; - run_number: number; - /** Format: date-time */ - run_started_at: string; - /** @enum {string} */ - status: - | "requested" - | "in_progress" - | "completed" - | "queued" - | "waiting" - | "pending"; - /** User */ - triggering_actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - workflow_id: number; - workflow_url?: string; - } | null; - }; - "webhook-deployment-review-rejected": { - /** @enum {string} */ - action: "rejected"; - approver?: components["schemas"]["webhooks_approver"]; - comment?: string; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - reviewers?: components["schemas"]["webhooks_reviewers"]; - sender: components["schemas"]["simple-user"]; - since: string; - workflow_job_run?: components["schemas"]["webhooks_workflow_job_run"]; - workflow_job_runs?: { - conclusion?: string | null; - created_at?: string; - environment?: string; - html_url?: string; - id?: number; - name?: string | null; - status?: string; - updated_at?: string; - }[]; - /** Deployment Workflow Run */ - workflow_run: { - /** User */ - actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - artifacts_url?: string; - cancel_url?: string; - check_suite_id: number; - check_suite_node_id: string; - check_suite_url?: string; - /** @enum {string|null} */ - conclusion: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "timed_out" - | "action_required" - | "stale" - | null; - /** Format: date-time */ - created_at: string; - event: string; - head_branch: string; - head_commit?: Record | null; - head_repository?: { - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - description?: string | null; - downloads_url?: string; - events_url?: string; - fork?: boolean; - forks_url?: string; - full_name?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - hooks_url?: string; - html_url?: string; - id?: number; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - name?: string; - node_id?: string; - notifications_url?: string; - owner?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - user_view_type?: string; - }; - private?: boolean; - pulls_url?: string; - releases_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - url?: string; - }; - head_sha: string; - /** Format: uri */ - html_url: string; - id: number; - jobs_url?: string; - logs_url?: string; - name: string; - node_id: string; - path: string; - previous_attempt_url?: string | null; - pull_requests: { - base: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - head: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - id: number; - number: number; - /** Format: uri */ - url: string; - }[]; - referenced_workflows?: - | { - path: string; - ref?: string; - sha: string; - }[] - | null; - repository?: { - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - description?: string | null; - downloads_url?: string; - events_url?: string; - fork?: boolean; - forks_url?: string; - full_name?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - hooks_url?: string; - html_url?: string; - id?: number; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - name?: string; - node_id?: string; - notifications_url?: string; - owner?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - user_view_type?: string; - }; - private?: boolean; - pulls_url?: string; - releases_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - url?: string; - }; - rerun_url?: string; - run_attempt: number; - run_number: number; - /** Format: date-time */ - run_started_at: string; - /** @enum {string} */ - status: - | "requested" - | "in_progress" - | "completed" - | "queued" - | "waiting"; - /** User */ - triggering_actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - workflow_id: number; - workflow_url?: string; - display_title: string; - } | null; - }; - "webhook-deployment-review-requested": { - /** @enum {string} */ - action: "requested"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - environment: string; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - requestor: components["schemas"]["webhooks_user"]; - reviewers: { - /** User */ - reviewer?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login?: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @enum {string} */ - type?: "User" | "Team"; - }[]; - sender: components["schemas"]["simple-user"]; - since: string; - workflow_job_run: { - conclusion: unknown; - created_at: string; - environment: string; - html_url: string; - id: number; - name: string | null; - status: string; - updated_at: string; - }; - /** Deployment Workflow Run */ - workflow_run: { - /** User */ - actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - artifacts_url?: string; - cancel_url?: string; - check_suite_id: number; - check_suite_node_id: string; - check_suite_url?: string; - /** @enum {string|null} */ - conclusion: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "timed_out" - | "action_required" - | "stale" - | null; - /** Format: date-time */ - created_at: string; - event: string; - head_branch: string; - head_commit?: Record | null; - head_repository?: { - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - description?: string | null; - downloads_url?: string; - events_url?: string; - fork?: boolean; - forks_url?: string; - full_name?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - hooks_url?: string; - html_url?: string; - id?: number; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - name?: string; - node_id?: string; - notifications_url?: string; - owner?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - user_view_type?: string; - }; - private?: boolean; - pulls_url?: string; - releases_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - url?: string; - }; - head_sha: string; - /** Format: uri */ - html_url: string; - id: number; - jobs_url?: string; - logs_url?: string; - name: string; - node_id: string; - path: string; - previous_attempt_url?: string | null; - pull_requests: { - base: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - head: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - id: number; - number: number; - /** Format: uri */ - url: string; - }[]; - referenced_workflows?: - | { - path: string; - ref?: string; - sha: string; - }[] - | null; - repository?: { - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - description?: string | null; - downloads_url?: string; - events_url?: string; - fork?: boolean; - forks_url?: string; - full_name?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - hooks_url?: string; - html_url?: string; - id?: number; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - name?: string; - node_id?: string; - notifications_url?: string; - owner?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - user_view_type?: string; - }; - private?: boolean; - pulls_url?: string; - releases_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - url?: string; - }; - rerun_url?: string; - run_attempt: number; - run_number: number; - /** Format: date-time */ - run_started_at: string; - /** @enum {string} */ - status: - | "requested" - | "in_progress" - | "completed" - | "queued" - | "waiting" - | "pending"; - /** User */ - triggering_actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - workflow_id: number; - workflow_url?: string; - display_title: string; - } | null; - }; - /** deployment_status created event */ - "webhook-deployment-status-created": { - /** @enum {string} */ - action: "created"; - check_run?: { - /** Format: date-time */ - completed_at: string | null; - /** - * @description The result of the completed check run. This value will be `null` until the check run has completed. - * @enum {string|null} - */ - conclusion: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "timed_out" - | "action_required" - | "stale" - | "skipped" - | null; - /** Format: uri */ - details_url: string; - external_id: string; - /** @description The SHA of the commit that is being checked. */ - head_sha: string; - /** Format: uri */ - html_url: string; - /** @description The id of the check. */ - id: number; - /** @description The name of the check run. */ - name: string; - node_id: string; - /** Format: date-time */ - started_at: string; - /** - * @description The current status of the check run. Can be `queued`, `in_progress`, or `completed`. - * @enum {string} - */ - status: "queued" | "in_progress" | "completed" | "waiting" | "pending"; - /** Format: uri */ - url: string; - } | null; - /** - * Deployment - * @description The [deployment](https://docs.github.com/rest/deployments/deployments#list-deployments). - */ - deployment: { - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - environment: string; - id: number; - node_id: string; - original_environment: string; - payload: string | Record | null; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "merge_queue_entry" - | "workflow_job" - | "pull_request_review_thread" - | "secret_scanning_alert_location" - | "merge_group" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - production_environment?: boolean; - ref: string; - /** Format: uri */ - repository_url: string; - sha: string; - /** Format: uri */ - statuses_url: string; - task: string; - transient_environment?: boolean; - updated_at: string; - /** Format: uri */ - url: string; - }; - /** @description The [deployment status](https://docs.github.com/rest/deployments/statuses#list-deployment-statuses). */ - deployment_status: { - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** Format: uri */ - deployment_url: string; - /** @description The optional human-readable description added to the status. */ - description: string; - environment: string; - /** Format: uri */ - environment_url?: string; - id: number; - /** Format: uri */ - log_url?: string; - node_id: string; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "pull_request_review_thread" - | "merge_queue_entry" - | "workflow_job" - | "merge_group" - | "secret_scanning_alert_location" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - /** Format: uri */ - repository_url: string; - /** @description The new state. Can be `pending`, `success`, `failure`, or `error`. */ - state: string; - /** @description The optional link added to the status. */ - target_url: string; - updated_at: string; - /** Format: uri */ - url: string; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - workflow?: components["schemas"]["webhooks_workflow"]; - /** Deployment Workflow Run */ - workflow_run?: { - /** User */ - actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - artifacts_url?: string; - cancel_url?: string; - check_suite_id: number; - check_suite_node_id: string; - check_suite_url?: string; - /** @enum {string|null} */ - conclusion: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "timed_out" - | "action_required" - | "stale" - | null - | "startup_failure"; - /** Format: date-time */ - created_at: string; - display_title: string; - event: string; - head_branch: string; - head_commit?: unknown; - head_repository?: { - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - description?: unknown; - downloads_url?: string; - events_url?: string; - fork?: boolean; - forks_url?: string; - full_name?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - hooks_url?: string; - html_url?: string; - id?: number; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - name?: string; - node_id?: string; - notifications_url?: string; - owner?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - }; - private?: boolean; - pulls_url?: string; - releases_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - url?: string; - }; - head_sha: string; - /** Format: uri */ - html_url: string; - id: number; - jobs_url?: string; - logs_url?: string; - name: string; - node_id: string; - path: string; - previous_attempt_url?: unknown; - pull_requests: { - base: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - head: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - id: number; - number: number; - /** Format: uri */ - url: string; - }[]; - referenced_workflows?: - | { - path: string; - ref?: string; - sha: string; - }[] - | null; - repository?: { - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - description?: unknown; - downloads_url?: string; - events_url?: string; - fork?: boolean; - forks_url?: string; - full_name?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - hooks_url?: string; - html_url?: string; - id?: number; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - name?: string; - node_id?: string; - notifications_url?: string; - owner?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - }; - private?: boolean; - pulls_url?: string; - releases_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - url?: string; - }; - rerun_url?: string; - run_attempt: number; - run_number: number; - /** Format: date-time */ - run_started_at: string; - /** @enum {string} */ - status: - | "requested" - | "in_progress" - | "completed" - | "queued" - | "waiting" - | "pending"; - /** User */ - triggering_actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - workflow_id: number; - workflow_url?: string; - } | null; - }; - /** discussion answered event */ - "webhook-discussion-answered": { - /** @enum {string} */ - action: "answered"; - answer: components["schemas"]["webhooks_answer"]; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion category changed event */ - "webhook-discussion-category-changed": { - /** @enum {string} */ - action: "category_changed"; - changes: { - category: { - from: { - /** Format: date-time */ - created_at: string; - description: string; - emoji: string; - id: number; - is_answerable: boolean; - name: string; - node_id?: string; - repository_id: number; - slug: string; - updated_at: string; - }; - }; - }; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion closed event */ - "webhook-discussion-closed": { - /** @enum {string} */ - action: "closed"; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion_comment created event */ - "webhook-discussion-comment-created": { - /** @enum {string} */ - action: "created"; - comment: components["schemas"]["webhooks_comment"]; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion_comment deleted event */ - "webhook-discussion-comment-deleted": { - /** @enum {string} */ - action: "deleted"; - comment: components["schemas"]["webhooks_comment"]; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion_comment edited event */ - "webhook-discussion-comment-edited": { - /** @enum {string} */ - action: "edited"; - changes: { - body: { - from: string; - }; - }; - comment: components["schemas"]["webhooks_comment"]; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion created event */ - "webhook-discussion-created": { - /** @enum {string} */ - action: "created"; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion deleted event */ - "webhook-discussion-deleted": { - /** @enum {string} */ - action: "deleted"; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion edited event */ - "webhook-discussion-edited": { - /** @enum {string} */ - action: "edited"; - changes?: { - body?: { - from: string; - }; - title?: { - from: string; - }; - }; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion labeled event */ - "webhook-discussion-labeled": { - /** @enum {string} */ - action: "labeled"; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - label: components["schemas"]["webhooks_label"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion locked event */ - "webhook-discussion-locked": { - /** @enum {string} */ - action: "locked"; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion pinned event */ - "webhook-discussion-pinned": { - /** @enum {string} */ - action: "pinned"; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion reopened event */ - "webhook-discussion-reopened": { - /** @enum {string} */ - action: "reopened"; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion transferred event */ - "webhook-discussion-transferred": { - /** @enum {string} */ - action: "transferred"; - changes: { - new_discussion: components["schemas"]["discussion"]; - new_repository: components["schemas"]["repository-webhooks"]; - }; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion unanswered event */ - "webhook-discussion-unanswered": { - /** @enum {string} */ - action: "unanswered"; - discussion: components["schemas"]["discussion"]; - old_answer: components["schemas"]["webhooks_answer"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** discussion unlabeled event */ - "webhook-discussion-unlabeled": { - /** @enum {string} */ - action: "unlabeled"; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - label: components["schemas"]["webhooks_label"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion unlocked event */ - "webhook-discussion-unlocked": { - /** @enum {string} */ - action: "unlocked"; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** discussion unpinned event */ - "webhook-discussion-unpinned": { - /** @enum {string} */ - action: "unpinned"; - discussion: components["schemas"]["discussion"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** - * fork event - * @description A user forks a repository. - */ - "webhook-fork": { - enterprise?: components["schemas"]["enterprise-webhooks"]; - /** @description The created [`repository`](https://docs.github.com/rest/repos/repos#get-a-repository) resource. */ - forkee: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - } & { - allow_forking?: boolean; - archive_url?: string; - archived?: boolean; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - clone_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - created_at?: string; - default_branch?: string; - deployments_url?: string; - description?: string | null; - disabled?: boolean; - downloads_url?: string; - events_url?: string; - /** @enum {boolean} */ - fork?: true; - forks?: number; - forks_count?: number; - forks_url?: string; - full_name?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - git_url?: string; - has_downloads?: boolean; - has_issues?: boolean; - has_pages?: boolean; - has_projects?: boolean; - has_wiki?: boolean; - homepage?: string | null; - hooks_url?: string; - html_url?: string; - id?: number; - is_template?: boolean; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - language?: unknown; - languages_url?: string; - license?: Record | null; - merges_url?: string; - milestones_url?: string; - mirror_url?: unknown; - name?: string; - node_id?: string; - notifications_url?: string; - open_issues?: number; - open_issues_count?: number; - owner?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - }; - private?: boolean; - public?: boolean; - pulls_url?: string; - pushed_at?: string; - releases_url?: string; - size?: number; - ssh_url?: string; - stargazers_count?: number; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - svn_url?: string; - tags_url?: string; - teams_url?: string; - topics?: unknown[]; - trees_url?: string; - updated_at?: string; - url?: string; - visibility?: string; - watchers?: number; - watchers_count?: number; - }; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** github_app_authorization revoked event */ - "webhook-github-app-authorization-revoked": { - /** @enum {string} */ - action: "revoked"; - sender: components["schemas"]["simple-user"]; - }; - /** gollum event */ - "webhook-gollum": { - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** @description The pages that were updated. */ - pages: { - /** - * @description The action that was performed on the page. Can be `created` or `edited`. - * @enum {string} - */ - action: "created" | "edited"; - /** - * Format: uri - * @description Points to the HTML wiki page. - */ - html_url: string; - /** @description The name of the page. */ - page_name: string; - /** @description The latest commit SHA of the page. */ - sha: string; - summary: string | null; - /** @description The current page title. */ - title: string; - }[]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** installation created event */ - "webhook-installation-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation: components["schemas"]["installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repositories?: components["schemas"]["webhooks_repositories"]; - repository?: components["schemas"]["repository-webhooks"]; - requester?: components["schemas"]["webhooks_user"]; - sender: components["schemas"]["simple-user"]; - }; - /** installation deleted event */ - "webhook-installation-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation: components["schemas"]["installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repositories?: components["schemas"]["webhooks_repositories"]; - repository?: components["schemas"]["repository-webhooks"]; - requester?: unknown; - sender: components["schemas"]["simple-user"]; - }; - /** installation new_permissions_accepted event */ - "webhook-installation-new-permissions-accepted": { - /** @enum {string} */ - action: "new_permissions_accepted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation: components["schemas"]["installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repositories?: components["schemas"]["webhooks_repositories"]; - repository?: components["schemas"]["repository-webhooks"]; - requester?: unknown; - sender: components["schemas"]["simple-user"]; - }; - /** installation_repositories added event */ - "webhook-installation-repositories-added": { - /** @enum {string} */ - action: "added"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation: components["schemas"]["installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repositories_added: components["schemas"]["webhooks_repositories_added"]; - /** @description An array of repository objects, which were removed from the installation. */ - repositories_removed: { - full_name?: string; - /** @description Unique identifier of the repository */ - id?: number; - /** @description The name of the repository. */ - name?: string; - node_id?: string; - /** @description Whether the repository is private or public. */ - private?: boolean; - }[]; - repository?: components["schemas"]["repository-webhooks"]; - repository_selection: components["schemas"]["webhooks_repository_selection"]; - requester: components["schemas"]["webhooks_user"]; - sender: components["schemas"]["simple-user"]; - }; - /** installation_repositories removed event */ - "webhook-installation-repositories-removed": { - /** @enum {string} */ - action: "removed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation: components["schemas"]["installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repositories_added: components["schemas"]["webhooks_repositories_added"]; - /** @description An array of repository objects, which were removed from the installation. */ - repositories_removed: { - full_name: string; - /** @description Unique identifier of the repository */ - id: number; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** @description Whether the repository is private or public. */ - private: boolean; - }[]; - repository?: components["schemas"]["repository-webhooks"]; - repository_selection: components["schemas"]["webhooks_repository_selection"]; - requester: components["schemas"]["webhooks_user"]; - sender: components["schemas"]["simple-user"]; - }; - /** installation suspend event */ - "webhook-installation-suspend": { - /** @enum {string} */ - action: "suspend"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation: components["schemas"]["installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repositories?: components["schemas"]["webhooks_repositories"]; - repository?: components["schemas"]["repository-webhooks"]; - requester?: unknown; - sender: components["schemas"]["simple-user"]; - }; - "webhook-installation-target-renamed": { - account: { - archived_at?: string | null; - avatar_url: string; - created_at?: string; - description?: unknown; - events_url?: string; - followers?: number; - followers_url?: string; - following?: number; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - has_organization_projects?: boolean; - has_repository_projects?: boolean; - hooks_url?: string; - html_url: string; - id: number; - is_verified?: boolean; - issues_url?: string; - login?: string; - members_url?: string; - name?: string; - node_id: string; - organizations_url?: string; - public_gists?: number; - public_members_url?: string; - public_repos?: number; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - slug?: string; - starred_url?: string; - subscriptions_url?: string; - type?: string; - updated_at?: string; - url?: string; - website_url?: unknown; - user_view_type?: string; - }; - /** @enum {string} */ - action: "renamed"; - changes: { - login?: { - from: string; - }; - slug?: { - from: string; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - target_type: string; - }; - /** installation unsuspend event */ - "webhook-installation-unsuspend": { - /** @enum {string} */ - action: "unsuspend"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation: components["schemas"]["installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repositories?: components["schemas"]["webhooks_repositories"]; - repository?: components["schemas"]["repository-webhooks"]; - requester?: unknown; - sender: components["schemas"]["simple-user"]; - }; - /** issue_comment created event */ - "webhook-issue-comment-created": { - /** @enum {string} */ - action: "created"; - /** - * issue comment - * @description The [comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment) itself. - */ - comment: { - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue comment */ - body: string; - /** Format: date-time */ - created_at: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the issue comment - */ - id: number; - /** Format: uri */ - issue_url: string; - node_id: string; - performed_via_github_app: components["schemas"]["nullable-integration"]; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue comment - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) the comment belongs to. */ - issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "reminder" - | "pull_request_review_thread" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title: string; - type?: components["schemas"]["issue-type"]; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - } & { - active_lock_reason?: string | null; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees?: (Record | null)[]; - author_association?: string; - body?: string | null; - closed_at?: string | null; - comments?: number; - comments_url?: string; - created_at?: string; - events_url?: string; - html_url?: string; - id?: number; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - labels_url?: string; - locked: boolean; - milestone?: Record | null; - node_id?: string; - number?: number; - performed_via_github_app?: Record | null; - reactions?: { - "+1"?: number; - "-1"?: number; - confused?: number; - eyes?: number; - heart?: number; - hooray?: number; - laugh?: number; - rocket?: number; - total_count?: number; - url?: string; - }; - repository_url?: string; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state: "open" | "closed"; - timeline_url?: string; - title?: string; - updated_at?: string; - url?: string; - user?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - /** Format: int64 */ - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - }; - }; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issue_comment deleted event */ - "webhook-issue-comment-deleted": { - /** @enum {string} */ - action: "deleted"; - comment: components["schemas"]["webhooks_issue_comment"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) the comment belongs to. */ - issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title: string; - type?: components["schemas"]["issue-type"]; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - } & { - active_lock_reason?: string | null; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees?: (Record | null)[]; - author_association?: string; - body?: string | null; - closed_at?: string | null; - comments?: number; - comments_url?: string; - created_at?: string; - events_url?: string; - html_url?: string; - id?: number; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - labels_url?: string; - locked: boolean; - milestone?: Record | null; - node_id?: string; - number?: number; - performed_via_github_app?: Record | null; - reactions?: { - "+1"?: number; - "-1"?: number; - confused?: number; - eyes?: number; - heart?: number; - hooray?: number; - laugh?: number; - rocket?: number; - total_count?: number; - url?: string; - }; - repository_url?: string; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state: "open" | "closed"; - timeline_url?: string; - title?: string; - updated_at?: string; - url?: string; - user?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - /** Format: int64 */ - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - user_view_type?: string; - }; - }; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issue_comment edited event */ - "webhook-issue-comment-edited": { - /** @enum {string} */ - action: "edited"; - changes: components["schemas"]["webhooks_changes"]; - comment: components["schemas"]["webhooks_issue_comment"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) the comment belongs to. */ - issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "reminder" - | "pull_request_review_thread" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title: string; - type?: components["schemas"]["issue-type"]; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - } & { - active_lock_reason?: string | null; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees?: (Record | null)[]; - author_association?: string; - body?: string | null; - closed_at?: string | null; - comments?: number; - comments_url?: string; - created_at?: string; - events_url?: string; - html_url?: string; - id?: number; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - labels_url?: string; - locked: boolean; - milestone?: Record | null; - node_id?: string; - number?: number; - performed_via_github_app?: Record | null; - reactions?: { - "+1"?: number; - "-1"?: number; - confused?: number; - eyes?: number; - heart?: number; - hooray?: number; - laugh?: number; - rocket?: number; - total_count?: number; - url?: string; - }; - repository_url?: string; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state: "open" | "closed"; - timeline_url?: string; - title?: string; - updated_at?: string; - url?: string; - user?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - /** Format: int64 */ - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - }; - }; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** blocked by issue added event */ - "webhook-issue-dependencies-blocked-by-added": { - /** @enum {string} */ - action: "blocked_by_added"; - /** @description The ID of the blocked issue. */ - blocked_issue_id: number; - blocked_issue: components["schemas"]["issue"]; - /** @description The ID of the blocking issue. */ - blocking_issue_id: number; - blocking_issue: components["schemas"]["issue"]; - blocking_issue_repo: components["schemas"]["repository"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** blocked by issue removed event */ - "webhook-issue-dependencies-blocked-by-removed": { - /** @enum {string} */ - action: "blocked_by_removed"; - /** @description The ID of the blocked issue. */ - blocked_issue_id: number; - blocked_issue: components["schemas"]["issue"]; - /** @description The ID of the blocking issue. */ - blocking_issue_id: number; - blocking_issue: components["schemas"]["issue"]; - blocking_issue_repo: components["schemas"]["repository"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** blocking issue added event */ - "webhook-issue-dependencies-blocking-added": { - /** @enum {string} */ - action: "blocking_added"; - /** @description The ID of the blocked issue. */ - blocked_issue_id: number; - blocked_issue: components["schemas"]["issue"]; - blocked_issue_repo: components["schemas"]["repository"]; - /** @description The ID of the blocking issue. */ - blocking_issue_id: number; - blocking_issue: components["schemas"]["issue"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** blocking issue removed event */ - "webhook-issue-dependencies-blocking-removed": { - /** @enum {string} */ - action: "blocking_removed"; - /** @description The ID of the blocked issue. */ - blocked_issue_id: number; - blocked_issue: components["schemas"]["issue"]; - blocked_issue_repo: components["schemas"]["repository"]; - /** @description The ID of the blocking issue. */ - blocking_issue_id: number; - blocking_issue: components["schemas"]["issue"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues assigned event */ - "webhook-issues-assigned": { - /** - * @description The action that was performed. - * @enum {string} - */ - action: "assigned"; - assignee?: components["schemas"]["webhooks_user"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - issue: components["schemas"]["webhooks_issue"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues closed event */ - "webhook-issues-closed": { - /** - * @description The action that was performed. - * @enum {string} - */ - action: "closed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. */ - issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "security_and_analysis" - | "reminder" - | "pull_request_review_thread" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title: string; - type?: components["schemas"]["issue-type"]; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - } & { - active_lock_reason?: string | null; - assignee?: Record | null; - assignees?: (Record | null)[]; - author_association?: string; - body?: string | null; - closed_at: string | null; - comments?: number; - comments_url?: string; - created_at?: string; - events_url?: string; - html_url?: string; - id?: number; - labels?: (Record | null)[]; - labels_url?: string; - locked?: boolean; - milestone?: Record | null; - node_id?: string; - number?: number; - performed_via_github_app?: Record | null; - reactions?: { - "+1"?: number; - "-1"?: number; - confused?: number; - eyes?: number; - heart?: number; - hooray?: number; - laugh?: number; - rocket?: number; - total_count?: number; - url?: string; - }; - repository_url?: string; - /** @enum {string} */ - state: "closed" | "open"; - timeline_url?: string; - title?: string; - updated_at?: string; - url?: string; - user?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - /** Format: int64 */ - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - user_view_type?: string; - }; - }; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues deleted event */ - "webhook-issues-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** - * Issue - * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. - */ - issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "reminder" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title: string; - type?: components["schemas"]["issue-type"]; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues demilestoned event */ - "webhook-issues-demilestoned": { - /** @enum {string} */ - action: "demilestoned"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** - * Issue - * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. - */ - issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: ({ - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - } | null)[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title: string; - type?: components["schemas"]["issue-type"]; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - milestone?: components["schemas"]["webhooks_milestone"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues edited event */ - "webhook-issues-edited": { - /** @enum {string} */ - action: "edited"; - /** @description The changes to the issue. */ - changes: { - body?: { - /** @description The previous version of the body. */ - from: string; - }; - title?: { - /** @description The previous version of the title. */ - from: string; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** - * Issue - * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. - */ - issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "security_and_analysis" - | "pull_request_review_thread" - | "reminder" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - type?: components["schemas"]["issue-type"]; - /** @description Title of the issue */ - title: string; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - label?: components["schemas"]["webhooks_label"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues labeled event */ - "webhook-issues-labeled": { - /** @enum {string} */ - action: "labeled"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** - * Issue - * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. - */ - issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "pull_request_review_thread" - | "reminder" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - type?: components["schemas"]["issue-type"]; - /** @description Title of the issue */ - title: string; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - label?: components["schemas"]["webhooks_label"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues locked event */ - "webhook-issues-locked": { - /** @enum {string} */ - action: "locked"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** - * Issue - * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. - */ - issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: ({ - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - } | null)[]; - /** Format: uri-template */ - labels_url: string; - /** @enum {boolean} */ - locked: true; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "reminder" - | "security_and_analysis" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - type?: components["schemas"]["issue-type"]; - /** @description Title of the issue */ - title: string; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues milestoned event */ - "webhook-issues-milestoned": { - /** @enum {string} */ - action: "milestoned"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** - * Issue - * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. - */ - issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: ({ - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - } | null)[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "reminder" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title: string; - type?: components["schemas"]["issue-type"]; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - milestone: components["schemas"]["webhooks_milestone"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues opened event */ - "webhook-issues-opened": { - /** @enum {string} */ - action: "opened"; - changes?: { - /** - * Issue - * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. - */ - old_issue: { - /** @enum {string|null} */ - active_lock_reason?: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees?: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association?: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body?: string | null; - /** Format: date-time */ - closed_at?: string | null; - comments?: number; - /** Format: uri */ - comments_url?: string; - /** Format: date-time */ - created_at?: string; - draft?: boolean; - /** Format: uri */ - events_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - labels?: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - /** Format: uri-template */ - labels_url?: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone?: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id?: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions?: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url?: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title?: string; - /** Format: date-time */ - updated_at?: string; - /** - * Format: uri - * @description URL for the issue - */ - url?: string; - /** User */ - user?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - type?: components["schemas"]["issue-type"]; - } | null; - /** - * Repository - * @description A git repository - */ - old_repository: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** @description Whether the repository has discussions enabled. */ - has_discussions?: boolean; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require commit signoff. */ - web_commit_signoff_required?: boolean; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** - * Issue - * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. - */ - issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "security_and_analysis" - | "pull_request_review_thread" - | "reminder" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title: string; - type?: components["schemas"]["issue-type"]; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues pinned event */ - "webhook-issues-pinned": { - /** @enum {string} */ - action: "pinned"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - issue: components["schemas"]["webhooks_issue_2"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues reopened event */ - "webhook-issues-reopened": { - /** @enum {string} */ - action: "reopened"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** - * Issue - * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. - */ - issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: ({ - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - } | null)[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - | "pull_request_review_thread" - | "reminder" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write" | "admin"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title: string; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - type?: components["schemas"]["issue-type"]; - }; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues transferred event */ - "webhook-issues-transferred": { - /** @enum {string} */ - action: "transferred"; - changes: { - /** - * Issue - * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. - */ - new_issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - /** Format: uri-template */ - labels_url: string; - locked?: boolean; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title: string; - type?: components["schemas"]["issue-type"]; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** - * Repository - * @description A git repository - */ - new_repository: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - issue: components["schemas"]["webhooks_issue_2"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues typed event */ - "webhook-issues-typed": { - /** @enum {string} */ - action: "typed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - issue: components["schemas"]["webhooks_issue"]; - type: components["schemas"]["issue-type"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues unassigned event */ - "webhook-issues-unassigned": { - /** - * @description The action that was performed. - * @enum {string} - */ - action: "unassigned"; - assignee?: components["schemas"]["webhooks_user_mannequin"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - issue: components["schemas"]["webhooks_issue"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues unlabeled event */ - "webhook-issues-unlabeled": { - /** @enum {string} */ - action: "unlabeled"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - issue: components["schemas"]["webhooks_issue"]; - label?: components["schemas"]["webhooks_label"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues unlocked event */ - "webhook-issues-unlocked": { - /** @enum {string} */ - action: "unlocked"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** - * Issue - * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. - */ - issue: { - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description Contents of the issue */ - body: string | null; - /** Format: date-time */ - closed_at: string | null; - comments: number; - /** Format: uri */ - comments_url: string; - /** Format: date-time */ - created_at: string; - draft?: boolean; - /** Format: uri */ - events_url: string; - /** Format: uri */ - html_url: string; - /** Format: int64 */ - id: number; - labels?: ({ - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - } | null)[]; - /** Format: uri-template */ - labels_url: string; - /** @enum {boolean} */ - locked: false; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** - * App - * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - performed_via_github_app?: { - /** Format: date-time */ - created_at: string | null; - description: string | null; - /** @description The list of events for the GitHub app */ - events?: ( - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "content_reference" - | "create" - | "delete" - | "deployment" - | "deployment_review" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "milestone" - | "organization" - | "org_block" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_dispatch" - | "secret_scanning_alert" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_dispatch" - | "workflow_run" - )[]; - /** Format: uri */ - external_url: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the GitHub app */ - id: number | null; - /** @description The name of the GitHub app */ - name: string; - node_id: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The set of permissions for the GitHub app */ - permissions?: { - /** @enum {string} */ - actions?: "read" | "write"; - /** @enum {string} */ - administration?: "read" | "write"; - /** @enum {string} */ - checks?: "read" | "write"; - /** @enum {string} */ - content_references?: "read" | "write"; - /** @enum {string} */ - contents?: "read" | "write"; - /** @enum {string} */ - deployments?: "read" | "write"; - /** @enum {string} */ - discussions?: "read" | "write"; - /** @enum {string} */ - emails?: "read" | "write"; - /** @enum {string} */ - environments?: "read" | "write"; - /** @enum {string} */ - issues?: "read" | "write"; - /** @enum {string} */ - keys?: "read" | "write"; - /** @enum {string} */ - members?: "read" | "write"; - /** @enum {string} */ - metadata?: "read" | "write"; - /** @enum {string} */ - organization_administration?: "read" | "write"; - /** @enum {string} */ - organization_hooks?: "read" | "write"; - /** @enum {string} */ - organization_packages?: "read" | "write"; - /** @enum {string} */ - organization_plan?: "read" | "write"; - /** @enum {string} */ - organization_projects?: "read" | "write"; - /** @enum {string} */ - organization_secrets?: "read" | "write"; - /** @enum {string} */ - organization_self_hosted_runners?: "read" | "write"; - /** @enum {string} */ - organization_user_blocking?: "read" | "write"; - /** @enum {string} */ - packages?: "read" | "write"; - /** @enum {string} */ - pages?: "read" | "write"; - /** @enum {string} */ - pull_requests?: "read" | "write"; - /** @enum {string} */ - repository_hooks?: "read" | "write"; - /** @enum {string} */ - repository_projects?: "read" | "write"; - /** @enum {string} */ - secret_scanning_alerts?: "read" | "write"; - /** @enum {string} */ - secrets?: "read" | "write"; - /** @enum {string} */ - security_events?: "read" | "write"; - /** @enum {string} */ - security_scanning_alert?: "read" | "write"; - /** @enum {string} */ - single_file?: "read" | "write"; - /** @enum {string} */ - statuses?: "read" | "write"; - /** @enum {string} */ - team_discussions?: "read" | "write"; - /** @enum {string} */ - vulnerability_alerts?: "read" | "write"; - /** @enum {string} */ - workflows?: "read" | "write"; - }; - /** @description The slug name of the GitHub app */ - slug?: string; - /** Format: date-time */ - updated_at: string | null; - } | null; - pull_request?: { - /** Format: uri */ - diff_url?: string; - /** Format: uri */ - html_url?: string; - /** Format: date-time */ - merged_at?: string | null; - /** Format: uri */ - patch_url?: string; - /** Format: uri */ - url?: string; - }; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - repository_url: string; - sub_issues_summary?: components["schemas"]["sub-issues-summary"]; - issue_dependencies_summary?: components["schemas"]["issue-dependencies-summary"]; - issue_field_values?: components["schemas"]["issue-field-value"][]; - /** - * @description State of the issue; either 'open' or 'closed' - * @enum {string} - */ - state?: "open" | "closed"; - state_reason?: string | null; - /** Format: uri */ - timeline_url?: string; - /** @description Title of the issue */ - title: string; - type?: components["schemas"]["issue-type"]; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the issue - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues unpinned event */ - "webhook-issues-unpinned": { - /** @enum {string} */ - action: "unpinned"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - issue: components["schemas"]["webhooks_issue_2"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** issues untyped event */ - "webhook-issues-untyped": { - /** @enum {string} */ - action: "untyped"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - issue: components["schemas"]["webhooks_issue"]; - type: components["schemas"]["issue-type"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** label created event */ - "webhook-label-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - label: components["schemas"]["webhooks_label"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** label deleted event */ - "webhook-label-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - label: components["schemas"]["webhooks_label"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** label edited event */ - "webhook-label-edited": { - /** @enum {string} */ - action: "edited"; - /** @description The changes to the label if the action was `edited`. */ - changes?: { - color?: { - /** @description The previous version of the color if the action was `edited`. */ - from: string; - }; - description?: { - /** @description The previous version of the description if the action was `edited`. */ - from: string; - }; - name?: { - /** @description The previous version of the name if the action was `edited`. */ - from: string; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - label: components["schemas"]["webhooks_label"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** marketplace_purchase cancelled event */ - "webhook-marketplace-purchase-cancelled": { - /** @enum {string} */ - action: "cancelled"; - effective_date: string; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - marketplace_purchase: components["schemas"]["webhooks_marketplace_purchase"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - previous_marketplace_purchase?: components["schemas"]["webhooks_previous_marketplace_purchase"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** marketplace_purchase changed event */ - "webhook-marketplace-purchase-changed": { - /** @enum {string} */ - action: "changed"; - effective_date: string; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - marketplace_purchase: components["schemas"]["webhooks_marketplace_purchase"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Marketplace Purchase */ - previous_marketplace_purchase?: { - account: { - id: number; - login: string; - node_id: string; - organization_billing_email: string | null; - type: string; - }; - billing_cycle: string; - free_trial_ends_on: string | null; - next_billing_date?: string | null; - on_free_trial: boolean | null; - plan: { - bullets: string[]; - description: string; - has_free_trial: boolean; - id: number; - monthly_price_in_cents: number; - name: string; - /** @enum {string} */ - price_model: "FREE" | "FLAT_RATE" | "PER_UNIT"; - unit_name: string | null; - yearly_price_in_cents: number; - }; - unit_count: number; - }; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** marketplace_purchase pending_change event */ - "webhook-marketplace-purchase-pending-change": { - /** @enum {string} */ - action: "pending_change"; - effective_date: string; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - marketplace_purchase: components["schemas"]["webhooks_marketplace_purchase"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Marketplace Purchase */ - previous_marketplace_purchase?: { - account: { - id: number; - login: string; - node_id: string; - organization_billing_email: string | null; - type: string; - }; - billing_cycle: string; - free_trial_ends_on: string | null; - next_billing_date?: string | null; - on_free_trial: boolean; - plan: { - bullets: string[]; - description: string; - has_free_trial: boolean; - id: number; - monthly_price_in_cents: number; - name: string; - /** @enum {string} */ - price_model: "FREE" | "FLAT_RATE" | "PER_UNIT"; - unit_name: string | null; - yearly_price_in_cents: number; - }; - unit_count: number; - }; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** marketplace_purchase pending_change_cancelled event */ - "webhook-marketplace-purchase-pending-change-cancelled": { - /** @enum {string} */ - action: "pending_change_cancelled"; - effective_date: string; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** Marketplace Purchase */ - marketplace_purchase: { - account: { - id: number; - login: string; - node_id: string; - organization_billing_email: string | null; - type: string; - }; - billing_cycle: string; - free_trial_ends_on: unknown; - next_billing_date: string | null; - on_free_trial: boolean; - plan: { - bullets: string[]; - description: string; - has_free_trial: boolean; - id: number; - monthly_price_in_cents: number; - name: string; - /** @enum {string} */ - price_model: "FREE" | "FLAT_RATE" | "PER_UNIT"; - unit_name: string | null; - yearly_price_in_cents: number; - }; - unit_count: number; - }; - organization?: components["schemas"]["organization-simple-webhooks"]; - previous_marketplace_purchase?: components["schemas"]["webhooks_previous_marketplace_purchase"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** marketplace_purchase purchased event */ - "webhook-marketplace-purchase-purchased": { - /** @enum {string} */ - action: "purchased"; - effective_date: string; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - marketplace_purchase: components["schemas"]["webhooks_marketplace_purchase"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - previous_marketplace_purchase?: components["schemas"]["webhooks_previous_marketplace_purchase"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** member added event */ - "webhook-member-added": { - /** @enum {string} */ - action: "added"; - changes?: { - /** - * @description This field is included for legacy purposes; use the `role_name` field instead. The `maintain` - * role is mapped to `write` and the `triage` role is mapped to `read`. To determine the role - * assigned to the collaborator, use the `role_name` field instead, which will provide the full - * role name, including custom roles. - */ - permission?: { - /** @enum {string} */ - to: "write" | "admin" | "read"; - }; - /** @description The role assigned to the collaborator. */ - role_name?: { - to: string; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - member: components["schemas"]["webhooks_user"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** member edited event */ - "webhook-member-edited": { - /** @enum {string} */ - action: "edited"; - /** @description The changes to the collaborator permissions */ - changes: { - old_permission?: { - /** @description The previous permissions of the collaborator if the action was edited. */ - from: string; - }; - permission?: { - from?: string | null; - to?: string | null; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - member: components["schemas"]["webhooks_user"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** member removed event */ - "webhook-member-removed": { - /** @enum {string} */ - action: "removed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - member: components["schemas"]["webhooks_user"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** membership added event */ - "webhook-membership-added": { - /** @enum {string} */ - action: "added"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - member: components["schemas"]["webhooks_user"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - /** - * @description The scope of the membership. Currently, can only be `team`. - * @enum {string} - */ - scope: "team"; - /** User */ - sender: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - team: components["schemas"]["webhooks_team"]; - }; - /** membership removed event */ - "webhook-membership-removed": { - /** @enum {string} */ - action: "removed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - member: components["schemas"]["webhooks_user"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - /** - * @description The scope of the membership. Currently, can only be `team`. - * @enum {string} - */ - scope: "team" | "organization"; - /** User */ - sender: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - team: components["schemas"]["webhooks_team"]; - }; - "webhook-merge-group-checks-requested": { - /** @enum {string} */ - action: "checks_requested"; - installation?: components["schemas"]["simple-installation"]; - merge_group: components["schemas"]["merge-group"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - "webhook-merge-group-destroyed": { - /** @enum {string} */ - action: "destroyed"; - /** - * @description Explains why the merge group is being destroyed. The group could have been merged, removed from the queue (dequeued), or invalidated by an earlier queue entry being dequeued (invalidated). - * @enum {string} - */ - reason?: "merged" | "invalidated" | "dequeued"; - installation?: components["schemas"]["simple-installation"]; - merge_group: components["schemas"]["merge-group"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** meta deleted event */ - "webhook-meta-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - /** @description The deleted webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace. */ - hook: { - active: boolean; - config: { - /** @enum {string} */ - content_type: "json" | "form"; - insecure_ssl: string; - secret?: string; - /** Format: uri */ - url: string; - }; - created_at: string; - events: ( - | "*" - | "branch_protection_rule" - | "check_run" - | "check_suite" - | "code_scanning_alert" - | "commit_comment" - | "create" - | "delete" - | "deployment" - | "deployment_status" - | "deploy_key" - | "discussion" - | "discussion_comment" - | "fork" - | "gollum" - | "issues" - | "issue_comment" - | "label" - | "member" - | "membership" - | "meta" - | "milestone" - | "organization" - | "org_block" - | "package" - | "page_build" - | "project" - | "project_card" - | "project_column" - | "public" - | "pull_request" - | "pull_request_review" - | "pull_request_review_comment" - | "pull_request_review_thread" - | "push" - | "registry_package" - | "release" - | "repository" - | "repository_import" - | "repository_vulnerability_alert" - | "secret_scanning_alert" - | "secret_scanning_alert_location" - | "security_and_analysis" - | "star" - | "status" - | "team" - | "team_add" - | "watch" - | "workflow_job" - | "workflow_run" - | "repository_dispatch" - | "projects_v2_item" - )[]; - id: number; - name: string; - type: string; - updated_at: string; - }; - /** @description The id of the modified webhook. */ - hook_id: number; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["nullable-repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** milestone closed event */ - "webhook-milestone-closed": { - /** @enum {string} */ - action: "closed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - milestone: components["schemas"]["webhooks_milestone"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** milestone created event */ - "webhook-milestone-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - milestone: components["schemas"]["webhooks_milestone_3"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** milestone deleted event */ - "webhook-milestone-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - milestone: components["schemas"]["webhooks_milestone"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** milestone edited event */ - "webhook-milestone-edited": { - /** @enum {string} */ - action: "edited"; - /** @description The changes to the milestone if the action was `edited`. */ - changes: { - description?: { - /** @description The previous version of the description if the action was `edited`. */ - from: string; - }; - due_on?: { - /** @description The previous version of the due date if the action was `edited`. */ - from: string; - }; - title?: { - /** @description The previous version of the title if the action was `edited`. */ - from: string; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - milestone: components["schemas"]["webhooks_milestone"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** milestone opened event */ - "webhook-milestone-opened": { - /** @enum {string} */ - action: "opened"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - milestone: components["schemas"]["webhooks_milestone_3"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** org_block blocked event */ - "webhook-org-block-blocked": { - /** @enum {string} */ - action: "blocked"; - blocked_user: components["schemas"]["webhooks_user"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** org_block unblocked event */ - "webhook-org-block-unblocked": { - /** @enum {string} */ - action: "unblocked"; - blocked_user: components["schemas"]["webhooks_user"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** organization deleted event */ - "webhook-organization-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - membership?: components["schemas"]["webhooks_membership"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** organization member_added event */ - "webhook-organization-member-added": { - /** @enum {string} */ - action: "member_added"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - membership: components["schemas"]["webhooks_membership"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** organization member_invited event */ - "webhook-organization-member-invited": { - /** @enum {string} */ - action: "member_invited"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** @description The invitation for the user or email if the action is `member_invited`. */ - invitation: { - /** Format: date-time */ - created_at: string; - email: string | null; - /** Format: date-time */ - failed_at: string | null; - failed_reason: string | null; - id: number; - /** Format: uri */ - invitation_teams_url: string; - /** User */ - inviter: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - login: string | null; - node_id: string; - role: string; - team_count: number; - invitation_source?: string; - }; - organization: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - user?: components["schemas"]["webhooks_user"]; - }; - /** organization member_removed event */ - "webhook-organization-member-removed": { - /** @enum {string} */ - action: "member_removed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - membership: components["schemas"]["webhooks_membership"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** organization renamed event */ - "webhook-organization-renamed": { - /** @enum {string} */ - action: "renamed"; - changes?: { - login?: { - from?: string; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - membership?: components["schemas"]["webhooks_membership"]; - organization: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** Ruby Gems metadata */ - "webhook-rubygems-metadata": { - name?: string; - description?: string; - readme?: string; - homepage?: string; - version_info?: { - version?: string; - }; - platform?: string; - metadata?: { - [key: string]: string; - }; - repo?: string; - dependencies?: { - [key: string]: string; - }[]; - commit_oid?: string; - }; - /** package published event */ - "webhook-package-published": { - /** @enum {string} */ - action: "published"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** @description Information about the package. */ - package: { - created_at: string | null; - description: string | null; - ecosystem: string; - /** Format: uri */ - html_url: string; - id: number; - name: string; - namespace: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - package_type: string; - package_version: { - /** User */ - author?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - body?: string | Record; - body_html?: string; - container_metadata?: { - labels?: Record | null; - manifest?: Record | null; - tag?: { - digest?: string; - name?: string; - }; - } | null; - created_at?: string; - description: string; - docker_metadata?: { - tags?: string[]; - }[]; - draft?: boolean; - /** Format: uri */ - html_url: string; - id: number; - installation_command: string; - manifest?: string; - metadata: { - [key: string]: unknown; - }[]; - name: string; - npm_metadata?: { - name?: string; - version?: string; - npm_user?: string; - author?: Record | null; - bugs?: Record | null; - dependencies?: Record; - dev_dependencies?: Record; - peer_dependencies?: Record; - optional_dependencies?: Record; - description?: string; - dist?: Record | null; - git_head?: string; - homepage?: string; - license?: string; - main?: string; - repository?: Record | null; - scripts?: Record; - id?: string; - node_version?: string; - npm_version?: string; - has_shrinkwrap?: boolean; - maintainers?: Record[]; - contributors?: Record[]; - engines?: Record; - keywords?: string[]; - files?: string[]; - bin?: Record; - man?: Record; - directories?: Record | null; - os?: string[]; - cpu?: string[]; - readme?: string; - installation_command?: string; - release_id?: number; - commit_oid?: string; - published_via_actions?: boolean; - deleted_by_id?: number; - } | null; - nuget_metadata?: - | { - id?: number | string; - name?: string; - value?: OneOf< - [ - boolean, - string, - number, - { - url?: string; - branch?: string; - commit?: string; - type?: string; - }, - ] - >; - }[] - | null; - package_files: { - content_type: string; - created_at: string; - /** Format: uri */ - download_url: string; - id: number; - md5: string | null; - name: string; - sha1: string | null; - sha256: string | null; - size: number; - state: string | null; - updated_at: string; - }[]; - package_url?: string; - prerelease?: boolean; - release?: { - /** User */ - author: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - created_at: string; - draft: boolean; - /** Format: uri */ - html_url: string; - id: number; - name: string | null; - prerelease: boolean; - published_at: string; - tag_name: string; - target_commitish: string; - /** Format: uri */ - url: string; - }; - rubygems_metadata?: components["schemas"]["webhook-rubygems-metadata"][]; - source_url?: string; - summary: string; - tag_name?: string; - target_commitish?: string; - target_oid?: string; - updated_at?: string; - version: string; - } | null; - registry: { - /** Format: uri */ - about_url: string; - name: string; - type: string; - /** Format: uri */ - url: string; - vendor: string; - } | null; - updated_at: string | null; - }; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** package updated event */ - "webhook-package-updated": { - /** @enum {string} */ - action: "updated"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** @description Information about the package. */ - package: { - created_at: string; - description: string | null; - ecosystem: string; - /** Format: uri */ - html_url: string; - id: number; - name: string; - namespace: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - package_type: string; - package_version: { - /** User */ - author: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - body: string; - body_html: string; - created_at: string; - description: string; - docker_metadata?: { - tags?: string[]; - }[]; - draft?: boolean; - /** Format: uri */ - html_url: string; - id: number; - installation_command: string; - manifest?: string; - metadata: { - [key: string]: unknown; - }[]; - name: string; - package_files: { - content_type: string; - created_at: string; - /** Format: uri */ - download_url: string; - id: number; - md5: string | null; - name: string; - sha1: string | null; - sha256: string; - size: number; - state: string; - updated_at: string; - }[]; - package_url?: string; - prerelease?: boolean; - release?: { - /** User */ - author: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - created_at: string; - draft: boolean; - /** Format: uri */ - html_url: string; - id: number; - name: string; - prerelease: boolean; - published_at: string; - tag_name: string; - target_commitish: string; - /** Format: uri */ - url: string; - }; - rubygems_metadata?: components["schemas"]["webhook-rubygems-metadata"][]; - /** Format: uri */ - source_url?: string; - summary: string; - tag_name?: string; - target_commitish: string; - target_oid: string; - updated_at: string; - version: string; - }; - registry: { - /** Format: uri */ - about_url: string; - name: string; - type: string; - /** Format: uri */ - url: string; - vendor: string; - } | null; - updated_at: string; - }; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** page_build event */ - "webhook-page-build": { - /** @description The [List GitHub Pages builds](https://docs.github.com/rest/pages/pages#list-github-pages-builds) itself. */ - build: { - commit: string | null; - created_at: string; - duration: number; - error: { - message: string | null; - }; - /** User */ - pusher: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - status: string; - updated_at: string; - /** Format: uri */ - url: string; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - id: number; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** personal_access_token_request approved event */ - "webhook-personal-access-token-request-approved": { - /** @enum {string} */ - action: "approved"; - personal_access_token_request: components["schemas"]["personal-access-token-request"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - organization: components["schemas"]["organization-simple-webhooks"]; - sender: components["schemas"]["simple-user"]; - installation: components["schemas"]["simple-installation"]; - }; - /** personal_access_token_request cancelled event */ - "webhook-personal-access-token-request-cancelled": { - /** @enum {string} */ - action: "cancelled"; - personal_access_token_request: components["schemas"]["personal-access-token-request"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - organization: components["schemas"]["organization-simple-webhooks"]; - sender: components["schemas"]["simple-user"]; - installation: components["schemas"]["simple-installation"]; - }; - /** personal_access_token_request created event */ - "webhook-personal-access-token-request-created": { - /** @enum {string} */ - action: "created"; - personal_access_token_request: components["schemas"]["personal-access-token-request"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - organization: components["schemas"]["organization-simple-webhooks"]; - sender: components["schemas"]["simple-user"]; - installation?: components["schemas"]["simple-installation"]; - }; - /** personal_access_token_request denied event */ - "webhook-personal-access-token-request-denied": { - /** @enum {string} */ - action: "denied"; - personal_access_token_request: components["schemas"]["personal-access-token-request"]; - organization: components["schemas"]["organization-simple-webhooks"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - sender: components["schemas"]["simple-user"]; - installation: components["schemas"]["simple-installation"]; - }; - "webhook-ping": { - /** - * Webhook - * @description The webhook that is being pinged - */ - hook?: { - /** @description Determines whether the hook is actually triggered for the events it subscribes to. */ - active: boolean; - /** @description Only included for GitHub Apps. When you register a new GitHub App, GitHub sends a ping event to the webhook URL you specified during registration. The GitHub App ID sent in this field is required for authenticating an app. */ - app_id?: number; - config: { - content_type?: components["schemas"]["webhook-config-content-type"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - secret?: components["schemas"]["webhook-config-secret"]; - url?: components["schemas"]["webhook-config-url"]; - }; - /** Format: date-time */ - created_at: string; - /** Format: uri */ - deliveries_url?: string; - /** @description Determines what events the hook is triggered for. Default: ['push']. */ - events: string[]; - /** @description Unique identifier of the webhook. */ - id: number; - last_response?: components["schemas"]["hook-response"]; - /** - * @description The type of webhook. The only valid value is 'web'. - * @enum {string} - */ - name: "web"; - /** Format: uri */ - ping_url?: string; - /** Format: uri */ - test_url?: string; - type: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url?: string; - }; - /** @description The ID of the webhook that triggered the ping. */ - hook_id?: number; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - /** @description Random string of GitHub zen. */ - zen?: string; - }; - /** @description The webhooks ping payload encoded with URL encoding. */ - "webhook-ping-form-encoded": { - /** @description A URL-encoded string of the ping JSON payload. The decoded payload is a JSON object. */ - payload: string; - }; - /** project_card converted event */ - "webhook-project-card-converted": { - /** @enum {string} */ - action: "converted"; - changes: { - note: { - from: string; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - project_card: components["schemas"]["webhooks_project_card"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** project_card created event */ - "webhook-project-card-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - project_card: components["schemas"]["webhooks_project_card"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** project_card deleted event */ - "webhook-project-card-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Project Card */ - project_card: { - after_id?: number | null; - /** @description Whether or not the card is archived */ - archived: boolean; - column_id: number | null; - /** Format: uri */ - column_url: string; - /** Format: uri */ - content_url?: string; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The project card's ID */ - id: number; - node_id: string; - note: string | null; - /** Format: uri */ - project_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - }; - repository?: components["schemas"]["nullable-repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** project_card edited event */ - "webhook-project-card-edited": { - /** @enum {string} */ - action: "edited"; - changes: { - note: { - from: string | null; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - project_card: components["schemas"]["webhooks_project_card"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** project_card moved event */ - "webhook-project-card-moved": { - /** @enum {string} */ - action: "moved"; - changes?: { - column_id: { - from: number; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - project_card: { - after_id?: number | null; - /** @description Whether or not the card is archived */ - archived: boolean; - column_id: number; - /** Format: uri */ - column_url: string; - /** Format: uri */ - content_url?: string; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description The project card's ID */ - id: number; - node_id: string; - note: string | null; - /** Format: uri */ - project_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } & { - after_id: number | null; - archived?: boolean; - column_id?: number; - column_url?: string; - created_at?: string; - creator?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - } | null; - id?: number; - node_id?: string; - note?: string | null; - project_url?: string; - updated_at?: string; - url?: string; - }; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** project closed event */ - "webhook-project-closed": { - /** @enum {string} */ - action: "closed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - project: components["schemas"]["webhooks_project"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** project_column created event */ - "webhook-project-column-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - project_column: components["schemas"]["webhooks_project_column"]; - repository?: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** project_column deleted event */ - "webhook-project-column-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - project_column: components["schemas"]["webhooks_project_column"]; - repository?: components["schemas"]["nullable-repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** project_column edited event */ - "webhook-project-column-edited": { - /** @enum {string} */ - action: "edited"; - changes: { - name?: { - from: string; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - project_column: components["schemas"]["webhooks_project_column"]; - repository?: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** project_column moved event */ - "webhook-project-column-moved": { - /** @enum {string} */ - action: "moved"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - project_column: components["schemas"]["webhooks_project_column"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** project created event */ - "webhook-project-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - project: components["schemas"]["webhooks_project"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** project deleted event */ - "webhook-project-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - project: components["schemas"]["webhooks_project"]; - repository?: components["schemas"]["nullable-repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** project edited event */ - "webhook-project-edited": { - /** @enum {string} */ - action: "edited"; - /** @description The changes to the project if the action was `edited`. */ - changes?: { - body?: { - /** @description The previous version of the body if the action was `edited`. */ - from: string; - }; - name?: { - /** @description The changes to the project if the action was `edited`. */ - from: string; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - project: components["schemas"]["webhooks_project"]; - repository?: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** project reopened event */ - "webhook-project-reopened": { - /** @enum {string} */ - action: "reopened"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - project: components["schemas"]["webhooks_project"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Project Closed Event */ - "webhook-projects-v2-project-closed": { - /** @enum {string} */ - action: "closed"; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2: components["schemas"]["projects-v2"]; - sender: components["schemas"]["simple-user"]; - }; - /** @description A project was created */ - "webhook-projects-v2-project-created": { - /** @enum {string} */ - action: "created"; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2: components["schemas"]["projects-v2"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Project Deleted Event */ - "webhook-projects-v2-project-deleted": { - /** @enum {string} */ - action: "deleted"; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2: components["schemas"]["projects-v2"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Project Edited Event */ - "webhook-projects-v2-project-edited": { - /** @enum {string} */ - action: "edited"; - changes: { - description?: { - from?: string | null; - to?: string | null; - }; - public?: { - from?: boolean; - to?: boolean; - }; - short_description?: { - from?: string | null; - to?: string | null; - }; - title?: { - from?: string; - to?: string; - }; - }; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2: components["schemas"]["projects-v2"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Item Archived Event */ - "webhook-projects-v2-item-archived": { - /** @enum {string} */ - action: "archived"; - changes: components["schemas"]["webhooks_project_changes"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2_item: components["schemas"]["projects-v2-item"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Item Converted Event */ - "webhook-projects-v2-item-converted": { - /** @enum {string} */ - action: "converted"; - changes: { - content_type?: { - from?: string | null; - to?: string; - }; - }; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2_item: components["schemas"]["projects-v2-item"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Item Created Event */ - "webhook-projects-v2-item-created": { - /** @enum {string} */ - action: "created"; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2_item: components["schemas"]["projects-v2-item"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Item Deleted Event */ - "webhook-projects-v2-item-deleted": { - /** @enum {string} */ - action: "deleted"; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2_item: components["schemas"]["projects-v2-item"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Item Edited Event */ - "webhook-projects-v2-item-edited": { - /** @enum {string} */ - action: "edited"; - /** - * @description The changes made to the item may involve modifications in the item's fields and draft issue body. - * It includes altered values for text, number, date, single select, and iteration fields, along with the GraphQL node ID of the changed field. - */ - changes?: OneOf< - [ - { - field_value: { - field_node_id?: string; - field_type?: string; - field_name?: string; - project_number?: number; - from?: - | string - | number - | components["schemas"]["projects-v2-single-select-option"] - | components["schemas"]["projects-v2-iteration-setting"] - | null; - to?: - | string - | number - | components["schemas"]["projects-v2-single-select-option"] - | components["schemas"]["projects-v2-iteration-setting"] - | null; - }; - }, - { - body: { - from?: string | null; - to?: string | null; - }; - }, - ] - >; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2_item: components["schemas"]["projects-v2-item"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Item Reordered Event */ - "webhook-projects-v2-item-reordered": { - /** @enum {string} */ - action: "reordered"; - changes: { - previous_projects_v2_item_node_id?: { - from?: string | null; - to?: string | null; - }; - }; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2_item: components["schemas"]["projects-v2-item"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Item Restored Event */ - "webhook-projects-v2-item-restored": { - /** @enum {string} */ - action: "restored"; - changes: components["schemas"]["webhooks_project_changes"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2_item: components["schemas"]["projects-v2-item"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Project Reopened Event */ - "webhook-projects-v2-project-reopened": { - /** @enum {string} */ - action: "reopened"; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2: components["schemas"]["projects-v2"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Status Update Created Event */ - "webhook-projects-v2-status-update-created": { - /** @enum {string} */ - action: "created"; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2_status_update: components["schemas"]["projects-v2-status-update"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Status Update Deleted Event */ - "webhook-projects-v2-status-update-deleted": { - /** @enum {string} */ - action: "deleted"; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2_status_update: components["schemas"]["projects-v2-status-update"]; - sender: components["schemas"]["simple-user"]; - }; - /** Projects v2 Status Update Edited Event */ - "webhook-projects-v2-status-update-edited": { - /** @enum {string} */ - action: "edited"; - changes?: { - body?: { - from?: string | null; - to?: string | null; - }; - status?: { - /** @enum {string|null} */ - from?: - | "INACTIVE" - | "ON_TRACK" - | "AT_RISK" - | "OFF_TRACK" - | "COMPLETE" - | null; - /** @enum {string|null} */ - to?: - | "INACTIVE" - | "ON_TRACK" - | "AT_RISK" - | "OFF_TRACK" - | "COMPLETE" - | null; - }; - start_date?: { - /** Format: date */ - from?: string | null; - /** Format: date */ - to?: string | null; - }; - target_date?: { - /** Format: date */ - from?: string | null; - /** Format: date */ - to?: string | null; - }; - }; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - projects_v2_status_update: components["schemas"]["projects-v2-status-update"]; - sender: components["schemas"]["simple-user"]; - }; - /** public event */ - "webhook-public": { - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request assigned event */ - "webhook-pull-request-assigned": { - /** @enum {string} */ - action: "assigned"; - assignee: components["schemas"]["webhooks_user"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string | null; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - } | null; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request auto_merge_disabled event */ - "webhook-pull-request-auto-merge-disabled": { - /** @enum {string} */ - action: "auto_merge_disabled"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: number; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - reason: string; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request auto_merge_enabled event */ - "webhook-pull-request-auto-merge-enabled": { - /** @enum {string} */ - action: "auto_merge_enabled"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: number; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the repository */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - reason?: string; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request closed event */ - "webhook-pull-request-closed": { - /** @enum {string} */ - action: "closed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - pull_request: components["schemas"]["pull-request-webhook"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request converted_to_draft event */ - "webhook-pull-request-converted-to-draft": { - /** @enum {string} */ - action: "converted_to_draft"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - pull_request: components["schemas"]["pull-request-webhook"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request demilestoned event */ - "webhook-pull-request-demilestoned": { - /** @enum {string} */ - action: "demilestoned"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - milestone?: components["schemas"]["milestone"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - pull_request: components["schemas"]["webhooks_pull_request_5"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** pull_request dequeued event */ - "webhook-pull-request-dequeued": { - /** @enum {string} */ - action: "dequeued"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: number; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** @enum {string} */ - reason: - | "UNKNOWN_REMOVAL_REASON" - | "MANUAL" - | "MERGE" - | "MERGE_CONFLICT" - | "CI_FAILURE" - | "CI_TIMEOUT" - | "ALREADY_MERGED" - | "QUEUE_CLEARED" - | "ROLL_BACK" - | "BRANCH_PROTECTIONS" - | "GIT_TREE_INVALID" - | "INVALID_MERGE_COMMIT"; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request edited event */ - "webhook-pull-request-edited": { - /** @enum {string} */ - action: "edited"; - /** @description The changes to the comment if the action was `edited`. */ - changes: { - base?: { - ref: { - from: string; - }; - sha: { - from: string; - }; - }; - body?: { - /** @description The previous version of the body if the action was `edited`. */ - from: string; - }; - title?: { - /** @description The previous version of the title if the action was `edited`. */ - from: string; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - pull_request: components["schemas"]["pull-request-webhook"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** pull_request enqueued event */ - "webhook-pull-request-enqueued": { - /** @enum {string} */ - action: "enqueued"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: number; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request labeled event */ - "webhook-pull-request-labeled": { - /** @enum {string} */ - action: "labeled"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - label?: components["schemas"]["webhooks_label"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string | null; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - } | null; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request locked event */ - "webhook-pull-request-locked": { - /** @enum {string} */ - action: "locked"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string | null; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - } | null; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request milestoned event */ - "webhook-pull-request-milestoned": { - /** @enum {string} */ - action: "milestoned"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - milestone?: components["schemas"]["milestone"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - pull_request: components["schemas"]["webhooks_pull_request_5"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** pull_request opened event */ - "webhook-pull-request-opened": { - /** @enum {string} */ - action: "opened"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - pull_request: components["schemas"]["pull-request-webhook"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request ready_for_review event */ - "webhook-pull-request-ready-for-review": { - /** @enum {string} */ - action: "ready_for_review"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - pull_request: components["schemas"]["pull-request-webhook"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request reopened event */ - "webhook-pull-request-reopened": { - /** @enum {string} */ - action: "reopened"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - pull_request: components["schemas"]["pull-request-webhook"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request_review_comment created event */ - "webhook-pull-request-review-comment-created": { - /** @enum {string} */ - action: "created"; - /** - * Pull Request Review Comment - * @description The [comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request) itself. - */ - comment: { - _links: { - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - pull_request: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - }; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description The text of the comment. */ - body: string; - /** @description The SHA of the commit to which the comment applies. */ - commit_id: string; - /** Format: date-time */ - created_at: string; - /** @description The diff of the line that the comment refers to. */ - diff_hunk: string; - /** - * Format: uri - * @description HTML URL for the pull request review comment. - */ - html_url: string; - /** @description The ID of the pull request review comment. */ - id: number; - /** @description The comment ID to reply to. */ - in_reply_to_id?: number; - /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */ - line: number | null; - /** @description The node ID of the pull request review comment. */ - node_id: string; - /** @description The SHA of the original commit to which the comment applies. */ - original_commit_id: string; - /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */ - original_line: number | null; - /** @description The index of the original line in the diff to which the comment applies. */ - original_position: number; - /** @description The first line of the range for a multi-line comment. */ - original_start_line: number | null; - /** @description The relative path of the file to which the comment applies. */ - path: string; - /** @description The line index in the diff to which the comment applies. */ - position: number | null; - /** @description The ID of the pull request review to which the comment belongs. */ - pull_request_review_id: number | null; - /** - * Format: uri - * @description URL for the pull request that the review comment belongs to. - */ - pull_request_url: string; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** - * @description The side of the first line of the range for a multi-line comment. - * @enum {string} - */ - side: "LEFT" | "RIGHT"; - /** @description The first line of the range for a multi-line comment. */ - start_line: number | null; - /** - * @description The side of the first line of the range for a multi-line comment. - * @default RIGHT - * @enum {string|null} - */ - start_side: "LEFT" | "RIGHT" | null; - /** - * @description The level at which the comment is targeted, can be a diff line or a file. - * @enum {string} - */ - subject_type?: "line" | "file"; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the pull request review comment - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge?: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - closed_at: string | null; - /** Format: uri */ - comments_url: string; - /** Format: uri */ - commits_url: string; - created_at: string; - /** Format: uri */ - diff_url: string; - draft?: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions?: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - } | null; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - merge_commit_sha: string | null; - merged_at: string | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** Format: uri */ - patch_url: string; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - /** Format: uri */ - review_comments_url: string; - /** @enum {string} */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - title: string; - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request_review_comment deleted event */ - "webhook-pull-request-review-comment-deleted": { - /** @enum {string} */ - action: "deleted"; - comment: components["schemas"]["webhooks_review_comment"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge?: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - closed_at: string | null; - /** Format: uri */ - comments_url: string; - /** Format: uri */ - commits_url: string; - created_at: string; - /** Format: uri */ - diff_url: string; - draft?: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - } | null; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - merge_commit_sha: string | null; - merged_at: string | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** Format: uri */ - patch_url: string; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - /** Format: uri */ - review_comments_url: string; - /** @enum {string} */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - title: string; - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request_review_comment edited event */ - "webhook-pull-request-review-comment-edited": { - /** @enum {string} */ - action: "edited"; - changes: components["schemas"]["webhooks_changes"]; - comment: components["schemas"]["webhooks_review_comment"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge?: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - closed_at: string | null; - /** Format: uri */ - comments_url: string; - /** Format: uri */ - commits_url: string; - created_at: string; - /** Format: uri */ - diff_url: string; - draft?: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - } | null; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - merge_commit_sha: string | null; - merged_at: string | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** Format: uri */ - patch_url: string; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - /** Format: uri */ - review_comments_url: string; - /** @enum {string} */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - title: string; - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - user_view_type?: string; - /** Format: uri */ - url?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request_review dismissed event */ - "webhook-pull-request-review-dismissed": { - /** @enum {string} */ - action: "dismissed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Simple Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - closed_at: string | null; - /** Format: uri */ - comments_url: string; - /** Format: uri */ - commits_url: string; - created_at: string; - /** Format: uri */ - diff_url: string; - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - } | null; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - merge_commit_sha: string | null; - merged_at: string | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** Format: uri */ - patch_url: string; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - /** Format: uri */ - review_comments_url: string; - /** @enum {string} */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - title: string; - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - /** @description The review that was affected. */ - review: { - _links: { - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - pull_request: { - /** Format: uri-template */ - href: string; - }; - }; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description The text of the review. */ - body: string | null; - /** @description A commit SHA for the review. */ - commit_id: string; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the review */ - id: number; - node_id: string; - /** Format: uri */ - pull_request_url: string; - /** @enum {string} */ - state: "dismissed" | "approved" | "changes_requested"; - /** Format: date-time */ - submitted_at: string; - /** Format: date-time */ - updated_at?: string | null; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request_review edited event */ - "webhook-pull-request-review-edited": { - /** @enum {string} */ - action: "edited"; - changes: { - body?: { - /** @description The previous version of the body if the action was `edited`. */ - from: string; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Simple Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - closed_at: string | null; - /** Format: uri */ - comments_url: string; - /** Format: uri */ - commits_url: string; - created_at: string; - /** Format: uri */ - diff_url: string; - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - } | null; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - merge_commit_sha: string | null; - merged_at: string | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** Format: uri */ - patch_url: string; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - /** Format: uri */ - review_comments_url: string; - /** @enum {string} */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - title: string; - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - review: components["schemas"]["webhooks_review"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request review_request_removed event */ - "webhook-pull-request-review-request-removed": OneOf< - [ - { - /** @enum {string} */ - action: "review_request_removed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** @description The pull request number. */ - number: number; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title. - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - /** User */ - requested_reviewer: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - sender: components["schemas"]["simple-user"]; - }, - { - /** @enum {string} */ - action: "review_request_removed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** @description The pull request number. */ - number: number; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - /** - * Team - * @description Groups of organization members that gives permissions on specified repositories. - */ - requested_team: { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }; - sender: components["schemas"]["simple-user"]; - }, - ] - >; - /** pull_request review_requested event */ - "webhook-pull-request-review-requested": OneOf< - [ - { - /** @enum {string} */ - action: "review_requested"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** @description The pull request number. */ - number: number; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - /** User */ - requested_reviewer: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - sender: components["schemas"]["simple-user"]; - }, - { - /** @enum {string} */ - action: "review_requested"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - /** @description The pull request number. */ - number: number; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - /** - * Team - * @description Groups of organization members that gives permissions on specified repositories. - */ - requested_team: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }; - sender: components["schemas"]["simple-user"]; - }, - ] - >; - /** pull_request_review submitted event */ - "webhook-pull-request-review-submitted": { - /** @enum {string} */ - action: "submitted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Simple Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - closed_at: string | null; - /** Format: uri */ - comments_url: string; - /** Format: uri */ - commits_url: string; - created_at: string; - /** Format: uri */ - diff_url: string; - draft: boolean; - head: { - label: string | null; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - } | null; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - merge_commit_sha: string | null; - merged_at: string | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** Format: uri */ - patch_url: string; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - /** Format: uri */ - review_comments_url: string; - /** @enum {string} */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - title: string; - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - review: components["schemas"]["webhooks_review"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request_review_thread resolved event */ - "webhook-pull-request-review-thread-resolved": { - /** @enum {string} */ - action: "resolved"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Simple Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - closed_at: string | null; - /** Format: uri */ - comments_url: string; - /** Format: uri */ - commits_url: string; - created_at: string; - /** Format: uri */ - diff_url: string; - draft: boolean; - head: { - label: string | null; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - } | null; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - merge_commit_sha: string | null; - merged_at: string | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** Format: uri */ - patch_url: string; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - /** Format: uri */ - review_comments_url: string; - /** @enum {string} */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - title: string; - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - thread: { - comments: { - _links: { - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - pull_request: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - }; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description The text of the comment. */ - body: string; - /** @description The SHA of the commit to which the comment applies. */ - commit_id: string; - /** Format: date-time */ - created_at: string; - /** @description The diff of the line that the comment refers to. */ - diff_hunk: string; - /** - * Format: uri - * @description HTML URL for the pull request review comment. - */ - html_url: string; - /** @description The ID of the pull request review comment. */ - id: number; - /** @description The comment ID to reply to. */ - in_reply_to_id?: number; - /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */ - line: number | null; - /** @description The node ID of the pull request review comment. */ - node_id: string; - /** @description The SHA of the original commit to which the comment applies. */ - original_commit_id: string; - /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */ - original_line: number | null; - /** @description The index of the original line in the diff to which the comment applies. */ - original_position: number; - /** @description The first line of the range for a multi-line comment. */ - original_start_line: number | null; - /** @description The relative path of the file to which the comment applies. */ - path: string; - /** @description The line index in the diff to which the comment applies. */ - position: number | null; - /** @description The ID of the pull request review to which the comment belongs. */ - pull_request_review_id: number | null; - /** - * Format: uri - * @description URL for the pull request that the review comment belongs to. - */ - pull_request_url: string; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** - * @description The side of the first line of the range for a multi-line comment. - * @enum {string} - */ - side: "LEFT" | "RIGHT"; - /** @description The first line of the range for a multi-line comment. */ - start_line: number | null; - /** - * @description The side of the first line of the range for a multi-line comment. - * @default RIGHT - * @enum {string|null} - */ - start_side: "LEFT" | "RIGHT" | null; - /** - * @description The level at which the comment is targeted, can be a diff line or a file. - * @enum {string} - */ - subject_type?: "line" | "file"; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the pull request review comment - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }[]; - node_id: string; - }; - /** Format: date-time */ - updated_at?: string | null; - }; - /** pull_request_review_thread unresolved event */ - "webhook-pull-request-review-thread-unresolved": { - /** @enum {string} */ - action: "unresolved"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Simple Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - closed_at: string | null; - /** Format: uri */ - comments_url: string; - /** Format: uri */ - commits_url: string; - created_at: string; - /** Format: uri */ - diff_url: string; - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - merge_commit_sha: string | null; - merged_at: string | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - number: number; - /** Format: uri */ - patch_url: string; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - /** Format: uri */ - review_comments_url: string; - /** @enum {string} */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - title: string; - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - thread: { - comments: { - _links: { - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - pull_request: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - }; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** @description The text of the comment. */ - body: string; - /** @description The SHA of the commit to which the comment applies. */ - commit_id: string; - /** Format: date-time */ - created_at: string; - /** @description The diff of the line that the comment refers to. */ - diff_hunk: string; - /** - * Format: uri - * @description HTML URL for the pull request review comment. - */ - html_url: string; - /** @description The ID of the pull request review comment. */ - id: number; - /** @description The comment ID to reply to. */ - in_reply_to_id?: number; - /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */ - line: number | null; - /** @description The node ID of the pull request review comment. */ - node_id: string; - /** @description The SHA of the original commit to which the comment applies. */ - original_commit_id: string; - /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */ - original_line: number; - /** @description The index of the original line in the diff to which the comment applies. */ - original_position: number; - /** @description The first line of the range for a multi-line comment. */ - original_start_line: number | null; - /** @description The relative path of the file to which the comment applies. */ - path: string; - /** @description The line index in the diff to which the comment applies. */ - position: number | null; - /** @description The ID of the pull request review to which the comment belongs. */ - pull_request_review_id: number | null; - /** - * Format: uri - * @description URL for the pull request that the review comment belongs to. - */ - pull_request_url: string; - /** Reactions */ - reactions: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** - * @description The side of the first line of the range for a multi-line comment. - * @enum {string} - */ - side: "LEFT" | "RIGHT"; - /** @description The first line of the range for a multi-line comment. */ - start_line: number | null; - /** - * @description The side of the first line of the range for a multi-line comment. - * @default RIGHT - * @enum {string|null} - */ - start_side: "LEFT" | "RIGHT" | null; - /** - * @description The level at which the comment is targeted, can be a diff line or a file. - * @enum {string} - */ - subject_type?: "line" | "file"; - /** Format: date-time */ - updated_at: string; - /** - * Format: uri - * @description URL for the pull request review comment - */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }[]; - node_id: string; - }; - /** Format: date-time */ - updated_at?: string | null; - }; - /** pull_request synchronize event */ - "webhook-pull-request-synchronize": { - /** @enum {string} */ - action: "synchronize"; - after: string; - before: string; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit message title. - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request unassigned event */ - "webhook-pull-request-unassigned": { - /** @enum {string} */ - action: "unassigned"; - assignee?: components["schemas"]["webhooks_user_mannequin"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string | null; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string | null; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - } | null; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** pull_request unlabeled event */ - "webhook-pull-request-unlabeled": { - /** @enum {string} */ - action: "unlabeled"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - label?: components["schemas"]["webhooks_label"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string | null; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string | null; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit message title. - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - } | null; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization" | "Mannequin"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** pull_request unlocked event */ - "webhook-pull-request-unlocked": { - /** @enum {string} */ - action: "unlocked"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - number: components["schemas"]["webhooks_number"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** Pull Request */ - pull_request: { - _links: { - /** Link */ - comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - commits: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - html: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - issue: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comment: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - review_comments: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - self: { - /** Format: uri-template */ - href: string; - }; - /** Link */ - statuses: { - /** Format: uri-template */ - href: string; - }; - }; - /** @enum {string|null} */ - active_lock_reason: - | "resolved" - | "off-topic" - | "too heated" - | "spam" - | null; - additions?: number; - /** User */ - assignee: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - assignees: ({ - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null)[]; - /** - * AuthorAssociation - * @description How the author is associated with the repository. - * @enum {string} - */ - author_association: - | "COLLABORATOR" - | "CONTRIBUTOR" - | "FIRST_TIMER" - | "FIRST_TIME_CONTRIBUTOR" - | "MANNEQUIN" - | "MEMBER" - | "NONE" - | "OWNER"; - /** - * PullRequestAutoMerge - * @description The status of auto merging a pull request. - */ - auto_merge: { - /** @description Commit message for the merge commit. */ - commit_message: string | null; - /** @description Title for the merge commit message. */ - commit_title: string; - /** User */ - enabled_by: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method: "merge" | "squash" | "rebase"; - } | null; - base: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - body: string | null; - changed_files?: number; - /** Format: date-time */ - closed_at: string | null; - comments?: number; - /** Format: uri */ - comments_url: string; - commits?: number; - /** Format: uri */ - commits_url: string; - /** Format: date-time */ - created_at: string; - deletions?: number; - /** Format: uri */ - diff_url: string; - /** @description Indicates whether or not the pull request is a draft. */ - draft: boolean; - head: { - label: string; - ref: string; - /** - * Repository - * @description A git repository - */ - repo: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: - | "PR_BODY" - | "COMMIT_MESSAGES" - | "BLANK"; - /** - * @description The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** - * @description Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - } | null; - sha: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - issue_url: string; - labels: { - /** @description 6-character hex code, without the leading #, identifying the color */ - color: string; - default: boolean; - description: string | null; - id: number; - /** @description The name of the label. */ - name: string; - node_id: string; - /** - * Format: uri - * @description URL for the label - */ - url: string; - }[]; - locked: boolean; - /** @description Indicates whether maintainers can modify the pull request. */ - maintainer_can_modify?: boolean; - merge_commit_sha: string | null; - mergeable?: boolean | null; - mergeable_state?: string; - merged?: boolean | null; - /** Format: date-time */ - merged_at: string | null; - /** User */ - merged_by?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** - * Milestone - * @description A collection of related issues and pull requests. - */ - milestone: { - /** Format: date-time */ - closed_at: string | null; - closed_issues: number; - /** Format: date-time */ - created_at: string; - /** User */ - creator: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - description: string | null; - /** Format: date-time */ - due_on: string | null; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - labels_url: string; - node_id: string; - /** @description The number of the milestone. */ - number: number; - open_issues: number; - /** - * @description The state of the milestone. - * @enum {string} - */ - state: "open" | "closed"; - /** @description The title of the milestone. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - } | null; - node_id: string; - /** @description Number uniquely identifying the pull request within its repository. */ - number: number; - /** Format: uri */ - patch_url: string; - rebaseable?: boolean | null; - requested_reviewers: OneOf< - [ - { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null, - { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }, - ] - >[]; - requested_teams: { - deleted?: boolean; - /** @description Description of the team */ - description?: string | null; - /** Format: uri */ - html_url?: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url?: string; - /** @description Name of the team */ - name: string; - node_id?: string; - parent?: { - /** @description Description of the team */ - description: string | null; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the team */ - id: number; - /** Format: uri-template */ - members_url: string; - /** @description Name of the team */ - name: string; - node_id: string; - /** @description Permission that the team will have for its repositories */ - permission: string; - /** @enum {string} */ - privacy: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url: string; - slug: string; - /** - * Format: uri - * @description URL for the team - */ - url: string; - } | null; - /** @description Permission that the team will have for its repositories */ - permission?: string; - /** @enum {string} */ - privacy?: "open" | "closed" | "secret"; - /** Format: uri */ - repositories_url?: string; - slug?: string; - /** - * Format: uri - * @description URL for the team - */ - url?: string; - }[]; - /** Format: uri-template */ - review_comment_url: string; - review_comments?: number; - /** Format: uri */ - review_comments_url: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state: "open" | "closed"; - /** Format: uri */ - statuses_url: string; - /** @description The title of the pull request. */ - title: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** User */ - user: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** push event */ - "webhook-push": { - /** @description The SHA of the most recent commit on `ref` after the push. */ - after: string; - base_ref: components["schemas"]["webhooks_nullable_string"]; - /** @description The SHA of the most recent commit on `ref` before the push. */ - before: string; - /** @description An array of commit objects describing the pushed commits. (Pushed commits are all commits that are included in the `compare` between the `before` commit and the `after` commit.) The array includes a maximum of 2048 commits. If necessary, you can use the [Commits API](https://docs.github.com/rest/commits) to fetch additional commits. */ - commits: { - /** @description An array of files added in the commit. A maximum of 3000 changed files will be reported per commit. */ - added?: string[]; - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - author: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - committer: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - /** @description Whether this commit is distinct from any that have been pushed before. */ - distinct: boolean; - id: string; - /** @description The commit message. */ - message: string; - /** @description An array of files modified by the commit. A maximum of 3000 changed files will be reported per commit. */ - modified?: string[]; - /** @description An array of files removed in the commit. A maximum of 3000 changed files will be reported per commit. */ - removed?: string[]; - /** - * Format: date-time - * @description The ISO 8601 timestamp of the commit. - */ - timestamp: string; - tree_id: string; - /** - * Format: uri - * @description URL that points to the commit API resource. - */ - url: string; - }[]; - /** @description URL that shows the changes in this `ref` update, from the `before` commit to the `after` commit. For a newly created `ref` that is directly based on the default branch, this is the comparison between the head of the default branch and the `after` commit. Otherwise, this shows all commits until the `after` commit. */ - compare: string; - /** @description Whether this push created the `ref`. */ - created: boolean; - /** @description Whether this push deleted the `ref`. */ - deleted: boolean; - enterprise?: components["schemas"]["enterprise-webhooks"]; - /** @description Whether this push was a force push of the `ref`. */ - forced: boolean; - /** Commit */ - head_commit: { - /** @description An array of files added in the commit. */ - added?: string[]; - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - author: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - committer: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - /** @description Whether this commit is distinct from any that have been pushed before. */ - distinct: boolean; - id: string; - /** @description The commit message. */ - message: string; - /** @description An array of files modified by the commit. */ - modified?: string[]; - /** @description An array of files removed in the commit. */ - removed?: string[]; - /** - * Format: date-time - * @description The ISO 8601 timestamp of the commit. - */ - timestamp: string; - tree_id: string; - /** - * Format: uri - * @description URL that points to the commit API resource. - */ - url: string; - } | null; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - pusher: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email?: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - /** @description The full git ref that was pushed. Example: `refs/heads/main` or `refs/tags/v3.14.1`. */ - ref: string; - /** - * Repository - * @description A git repository - */ - repository: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - /** - * @description Whether discussions are enabled. - * @default false - */ - has_discussions: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - /** @description Whether to require contributors to sign off on web-based commits */ - web_commit_signoff_required?: boolean; - }; - sender?: components["schemas"]["simple-user"]; - }; - "webhook-registry-package-published": { - /** @enum {string} */ - action: "published"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - registry_package: { - created_at: string | null; - description: string | null; - ecosystem: string; - html_url: string; - id: number; - name: string; - namespace: string; - owner: { - avatar_url: string; - events_url: string; - followers_url: string; - following_url: string; - gists_url: string; - gravatar_id: string; - html_url: string; - id: number; - login: string; - node_id: string; - organizations_url: string; - received_events_url: string; - repos_url: string; - site_admin: boolean; - starred_url: string; - subscriptions_url: string; - type: string; - url: string; - user_view_type?: string; - }; - package_type: string; - package_version: { - author?: { - avatar_url: string; - events_url: string; - followers_url: string; - following_url: string; - gists_url: string; - gravatar_id: string; - html_url: string; - id: number; - login: string; - node_id: string; - organizations_url: string; - received_events_url: string; - repos_url: string; - site_admin: boolean; - starred_url: string; - subscriptions_url: string; - type: string; - url: string; - user_view_type?: string; - }; - body?: string | Record; - body_html?: string; - container_metadata?: { - labels?: Record | null; - manifest?: Record | null; - tag?: { - digest?: string; - name?: string; - }; - }; - created_at?: string; - description: string; - docker_metadata?: { - tags?: string[]; - }[]; - draft?: boolean; - html_url: string; - id: number; - installation_command: string; - manifest?: string; - metadata: { - [key: string]: unknown; - }[]; - name: string; - npm_metadata?: { - name?: string; - version?: string; - npm_user?: string; - author?: string | Record | null; - bugs?: string | Record | null; - dependencies?: Record; - dev_dependencies?: Record; - peer_dependencies?: Record; - optional_dependencies?: Record; - description?: string; - dist?: string | Record | null; - git_head?: string; - homepage?: string; - license?: string; - main?: string; - repository?: string | Record | null; - scripts?: Record; - id?: string; - node_version?: string; - npm_version?: string; - has_shrinkwrap?: boolean; - maintainers?: string[]; - contributors?: string[]; - engines?: Record; - keywords?: string[]; - files?: string[]; - bin?: Record; - man?: Record; - directories?: string | Record | null; - os?: string[]; - cpu?: string[]; - readme?: string; - installation_command?: string; - release_id?: number; - commit_oid?: string; - published_via_actions?: boolean; - deleted_by_id?: number; - } | null; - nuget_metadata?: - | { - id?: string | Record | number | null; - name?: string; - value?: OneOf< - [ - boolean, - string, - number, - { - url?: string; - branch?: string; - commit?: string; - type?: string; - }, - ] - >; - }[] - | null; - package_files: { - content_type: string; - created_at: string; - download_url: string; - id: number; - md5: string | null; - name: string; - sha1: string | null; - sha256: string | null; - size: number; - state: string | null; - updated_at: string; - }[]; - package_url: string; - prerelease?: boolean; - release?: { - author?: { - avatar_url?: string; - events_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - gravatar_id?: string; - html_url?: string; - id?: number; - login?: string; - node_id?: string; - organizations_url?: string; - received_events_url?: string; - repos_url?: string; - site_admin?: boolean; - starred_url?: string; - subscriptions_url?: string; - type?: string; - url?: string; - user_view_type?: string; - }; - created_at?: string; - draft?: boolean; - html_url?: string; - id?: number; - name?: string | null; - prerelease?: boolean; - published_at?: string; - tag_name?: string; - target_commitish?: string; - url?: string; - }; - rubygems_metadata?: components["schemas"]["webhook-rubygems-metadata"][]; - summary: string; - tag_name?: string; - target_commitish?: string; - target_oid?: string; - updated_at?: string; - version: string; - } | null; - registry: { - about_url?: string; - name?: string; - type?: string; - url?: string; - vendor?: string; - } | null; - updated_at: string | null; - }; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - "webhook-registry-package-updated": { - /** @enum {string} */ - action: "updated"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - registry_package: { - created_at: string; - description: unknown; - ecosystem: string; - html_url: string; - id: number; - name: string; - namespace: string; - owner: { - avatar_url: string; - events_url: string; - followers_url: string; - following_url: string; - gists_url: string; - gravatar_id: string; - html_url: string; - id: number; - login: string; - node_id: string; - organizations_url: string; - received_events_url: string; - repos_url: string; - site_admin: boolean; - starred_url: string; - subscriptions_url: string; - type: string; - url: string; - user_view_type?: string; - }; - package_type: string; - package_version: { - author: { - avatar_url: string; - events_url: string; - followers_url: string; - following_url: string; - gists_url: string; - gravatar_id: string; - html_url: string; - id: number; - login: string; - node_id: string; - organizations_url: string; - received_events_url: string; - repos_url: string; - site_admin: boolean; - starred_url: string; - subscriptions_url: string; - type: string; - url: string; - user_view_type?: string; - }; - body: string; - body_html: string; - created_at: string; - description: string; - docker_metadata?: ({ - tags?: string[]; - } | null)[]; - draft?: boolean; - html_url: string; - id: number; - installation_command: string; - manifest?: string; - metadata: { - [key: string]: unknown; - }[]; - name: string; - package_files: { - content_type?: string; - created_at?: string; - download_url?: string; - id?: number; - md5?: string | null; - name?: string; - sha1?: string | null; - sha256?: string; - size?: number; - state?: string; - updated_at?: string; - }[]; - package_url: string; - prerelease?: boolean; - release?: { - author: { - avatar_url: string; - events_url: string; - followers_url: string; - following_url: string; - gists_url: string; - gravatar_id: string; - html_url: string; - id: number; - login: string; - node_id: string; - organizations_url: string; - received_events_url: string; - repos_url: string; - site_admin: boolean; - starred_url: string; - subscriptions_url: string; - type: string; - url: string; - user_view_type?: string; - }; - created_at: string; - draft: boolean; - html_url: string; - id: number; - name: string; - prerelease: boolean; - published_at: string; - tag_name: string; - target_commitish: string; - url: string; - }; - rubygems_metadata?: components["schemas"]["webhook-rubygems-metadata"][]; - summary: string; - tag_name?: string; - target_commitish: string; - target_oid: string; - updated_at: string; - version: string; - }; - registry: Record | null; - updated_at: string; - }; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** release created event */ - "webhook-release-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - release: components["schemas"]["webhooks_release"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** release deleted event */ - "webhook-release-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - release: components["schemas"]["webhooks_release"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** release edited event */ - "webhook-release-edited": { - /** @enum {string} */ - action: "edited"; - changes: { - body?: { - /** @description The previous version of the body if the action was `edited`. */ - from: string; - }; - name?: { - /** @description The previous version of the name if the action was `edited`. */ - from: string; - }; - tag_name?: { - /** @description The previous version of the tag_name if the action was `edited`. */ - from: string; - }; - make_latest?: { - /** @description Whether this release was explicitly `edited` to be the latest. */ - to: boolean; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - release: components["schemas"]["webhooks_release"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** release prereleased event */ - "webhook-release-prereleased": { - /** @enum {string} */ - action: "prereleased"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - /** - * Release - * @description The [release](https://docs.github.com/rest/releases/releases/#get-a-release) object. - */ - release: { - assets: ({ - /** Format: uri */ - browser_download_url: string; - content_type: string; - /** Format: date-time */ - created_at: string; - download_count: number; - id: number; - label: string | null; - /** @description The file name of the asset. */ - name: string; - node_id: string; - size: number; - digest: string | null; - /** - * @description State of the release asset. - * @enum {string} - */ - state: "uploaded"; - /** Format: date-time */ - updated_at: string; - /** User */ - uploader?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - /** Format: uri */ - url: string; - } | null)[]; - /** Format: uri */ - assets_url: string; - /** User */ - author: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - body: string | null; - /** Format: date-time */ - created_at: string | null; - /** Format: uri */ - discussion_url?: string; - /** @description Whether the release is a draft or published */ - draft: boolean; - /** Format: uri */ - html_url: string; - id: number; - /** @description Whether or not the release is immutable. */ - immutable: boolean; - name: string | null; - node_id: string; - /** - * @description Whether the release is identified as a prerelease or a full release. - * @enum {boolean} - */ - prerelease: true; - /** Format: date-time */ - published_at: string | null; - /** Reactions */ - reactions?: { - "+1": number; - "-1": number; - confused: number; - eyes: number; - heart: number; - hooray: number; - laugh: number; - rocket: number; - total_count: number; - /** Format: uri */ - url: string; - }; - /** @description The name of the tag. */ - tag_name: string; - /** Format: uri */ - tarball_url: string | null; - /** @description Specifies the commitish value that determines where the Git tag is created from. */ - target_commitish: string; - /** Format: uri-template */ - upload_url: string; - /** Format: date-time */ - updated_at: string | null; - /** Format: uri */ - url: string; - /** Format: uri */ - zipball_url: string | null; - }; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** release published event */ - "webhook-release-published": { - /** @enum {string} */ - action: "published"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - release: components["schemas"]["webhooks_release_1"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** release released event */ - "webhook-release-released": { - /** @enum {string} */ - action: "released"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - release: components["schemas"]["webhooks_release"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** release unpublished event */ - "webhook-release-unpublished": { - /** @enum {string} */ - action: "unpublished"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - release: components["schemas"]["webhooks_release_1"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** Repository advisory published event */ - "webhook-repository-advisory-published": { - /** @enum {string} */ - action: "published"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - repository_advisory: components["schemas"]["repository-advisory"]; - sender?: components["schemas"]["simple-user"]; - }; - /** Repository advisory reported event */ - "webhook-repository-advisory-reported": { - /** @enum {string} */ - action: "reported"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - repository_advisory: components["schemas"]["repository-advisory"]; - sender?: components["schemas"]["simple-user"]; - }; - /** repository archived event */ - "webhook-repository-archived": { - /** @enum {string} */ - action: "archived"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository created event */ - "webhook-repository-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository deleted event */ - "webhook-repository-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository_dispatch event */ - "webhook-repository-dispatch-sample": { - /** @description The `event_type` that was specified in the `POST /repos/{owner}/{repo}/dispatches` request body. */ - action: string; - branch: string; - /** @description The `client_payload` that was specified in the `POST /repos/{owner}/{repo}/dispatches` request body. */ - client_payload: { - [key: string]: unknown; - } | null; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository edited event */ - "webhook-repository-edited": { - /** @enum {string} */ - action: "edited"; - changes: { - default_branch?: { - from: string; - }; - description?: { - from: string | null; - }; - homepage?: { - from: string | null; - }; - topics?: { - from?: string[] | null; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository_import event */ - "webhook-repository-import": { - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - /** @enum {string} */ - status: "success" | "cancelled" | "failure"; - }; - /** repository privatized event */ - "webhook-repository-privatized": { - /** @enum {string} */ - action: "privatized"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository publicized event */ - "webhook-repository-publicized": { - /** @enum {string} */ - action: "publicized"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository renamed event */ - "webhook-repository-renamed": { - /** @enum {string} */ - action: "renamed"; - changes: { - repository: { - name: { - from: string; - }; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository ruleset created event */ - "webhook-repository-ruleset-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - repository_ruleset: components["schemas"]["repository-ruleset"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository ruleset deleted event */ - "webhook-repository-ruleset-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - repository_ruleset: components["schemas"]["repository-ruleset"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository ruleset edited event */ - "webhook-repository-ruleset-edited": { - /** @enum {string} */ - action: "edited"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - repository_ruleset: components["schemas"]["repository-ruleset"]; - changes?: { - name?: { - from?: string; - }; - enforcement?: { - from?: string; - }; - conditions?: { - added?: components["schemas"]["repository-ruleset-conditions"][]; - deleted?: components["schemas"]["repository-ruleset-conditions"][]; - updated?: { - condition?: components["schemas"]["repository-ruleset-conditions"]; - changes?: { - condition_type?: { - from?: string; - }; - target?: { - from?: string; - }; - include?: { - from?: string[]; - }; - exclude?: { - from?: string[]; - }; - }; - }[]; - }; - rules?: { - added?: components["schemas"]["repository-rule"][]; - deleted?: components["schemas"]["repository-rule"][]; - updated?: { - rule?: components["schemas"]["repository-rule"]; - changes?: { - configuration?: { - from?: string; - }; - rule_type?: { - from?: string; - }; - pattern?: { - from?: string; - }; - }; - }[]; - }; - }; - sender: components["schemas"]["simple-user"]; - }; - /** repository transferred event */ - "webhook-repository-transferred": { - /** @enum {string} */ - action: "transferred"; - changes: { - owner: { - from: { - /** Organization */ - organization?: { - /** Format: uri */ - avatar_url: string; - description: string | null; - /** Format: uri */ - events_url: string; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url?: string; - id: number; - /** Format: uri */ - issues_url: string; - login: string; - /** Format: uri-template */ - members_url: string; - node_id: string; - /** Format: uri-template */ - public_members_url: string; - /** Format: uri */ - repos_url: string; - /** Format: uri */ - url: string; - }; - /** User */ - user?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - /** Format: int64 */ - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - }; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository unarchived event */ - "webhook-repository-unarchived": { - /** @enum {string} */ - action: "unarchived"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository_vulnerability_alert create event */ - "webhook-repository-vulnerability-alert-create": { - /** @enum {string} */ - action: "create"; - alert: components["schemas"]["webhooks_alert"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository_vulnerability_alert dismiss event */ - "webhook-repository-vulnerability-alert-dismiss": { - /** @enum {string} */ - action: "dismiss"; - /** - * Repository Vulnerability Alert Alert - * @description The security alert of the vulnerable dependency. - */ - alert: { - affected_package_name: string; - affected_range: string; - created_at: string; - dismiss_comment?: string | null; - dismiss_reason: string; - dismissed_at: string; - /** User */ - dismisser: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - external_identifier: string; - /** Format: uri */ - external_reference: string | null; - fix_reason?: string; - /** Format: date-time */ - fixed_at?: string; - fixed_in?: string; - ghsa_id: string; - id: number; - node_id: string; - number: number; - severity: string; - /** @enum {string} */ - state: "dismissed"; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository_vulnerability_alert reopen event */ - "webhook-repository-vulnerability-alert-reopen": { - /** @enum {string} */ - action: "reopen"; - alert: components["schemas"]["webhooks_alert"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** repository_vulnerability_alert resolve event */ - "webhook-repository-vulnerability-alert-resolve": { - /** @enum {string} */ - action: "resolve"; - /** - * Repository Vulnerability Alert Alert - * @description The security alert of the vulnerable dependency. - */ - alert: { - affected_package_name: string; - affected_range: string; - created_at: string; - dismiss_reason?: string; - dismissed_at?: string; - /** User */ - dismisser?: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - external_identifier: string; - /** Format: uri */ - external_reference: string | null; - fix_reason?: string; - /** Format: date-time */ - fixed_at?: string; - fixed_in?: string; - ghsa_id: string; - id: number; - node_id: string; - number: number; - severity: string; - /** @enum {string} */ - state: "fixed" | "open"; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** secret_scanning_alert created event */ - "webhook-secret-scanning-alert-created": { - /** @enum {string} */ - action: "created"; - alert: components["schemas"]["secret-scanning-alert-webhook"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** Secret Scanning Alert Location Created Event */ - "webhook-secret-scanning-alert-location-created": { - /** @enum {string} */ - action?: "created"; - alert: components["schemas"]["secret-scanning-alert-webhook"]; - installation?: components["schemas"]["simple-installation"]; - location: components["schemas"]["secret-scanning-location"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** Secret Scanning Alert Location Created Event */ - "webhook-secret-scanning-alert-location-created-form-encoded": { - /** @description A URL-encoded string of the secret_scanning_alert_location.created JSON payload. The decoded payload is a JSON object. */ - payload: string; - }; - /** secret_scanning_alert publicly leaked event */ - "webhook-secret-scanning-alert-publicly-leaked": { - /** @enum {string} */ - action: "publicly_leaked"; - alert: components["schemas"]["secret-scanning-alert-webhook"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** secret_scanning_alert reopened event */ - "webhook-secret-scanning-alert-reopened": { - /** @enum {string} */ - action: "reopened"; - alert: components["schemas"]["secret-scanning-alert-webhook"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** secret_scanning_alert resolved event */ - "webhook-secret-scanning-alert-resolved": { - /** @enum {string} */ - action: "resolved"; - alert: components["schemas"]["secret-scanning-alert-webhook"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** secret_scanning_alert validated event */ - "webhook-secret-scanning-alert-validated": { - /** @enum {string} */ - action: "validated"; - alert: components["schemas"]["secret-scanning-alert-webhook"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** secret_scanning_scan completed event */ - "webhook-secret-scanning-scan-completed": { - /** @enum {string} */ - action: "completed"; - /** - * @description What type of scan was completed - * @enum {string} - */ - type: "backfill" | "custom-pattern-backfill" | "pattern-version-backfill"; - /** - * @description What type of content was scanned - * @enum {string} - */ - source: "git" | "issues" | "pull-requests" | "discussions" | "wiki"; - /** - * Format: date-time - * @description The time that the alert was resolved in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - started_at: string; - /** - * Format: date-time - * @description The time that the alert was resolved in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - completed_at: string; - /** @description List of patterns that were updated. This will be empty for normal backfill scans or custom pattern updates */ - secret_types?: string[] | null; - /** @description If the scan was triggered by a custom pattern update, this will be the name of the pattern that was updated */ - custom_pattern_name?: string | null; - /** - * @description If the scan was triggered by a custom pattern update, this will be the scope of the pattern that was updated - * @enum {string|null} - */ - custom_pattern_scope?: - | "repository" - | "organization" - | "enterprise" - | null; - repository?: components["schemas"]["repository-webhooks"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** security_advisory published event */ - "webhook-security-advisory-published": { - /** @enum {string} */ - action: "published"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - security_advisory: components["schemas"]["webhooks_security_advisory"]; - sender?: components["schemas"]["simple-user"]; - }; - /** security_advisory updated event */ - "webhook-security-advisory-updated": { - /** @enum {string} */ - action: "updated"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - security_advisory: components["schemas"]["webhooks_security_advisory"]; - sender?: components["schemas"]["simple-user"]; - }; - /** security_advisory withdrawn event */ - "webhook-security-advisory-withdrawn": { - /** @enum {string} */ - action: "withdrawn"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - /** @description The details of the security advisory, including summary, description, and severity. */ - security_advisory: { - cvss: { - score: number; - vector_string: string | null; - }; - cvss_severities?: components["schemas"]["cvss-severities"]; - cwes: { - cwe_id: string; - name: string; - }[]; - description: string; - ghsa_id: string; - identifiers: { - type: string; - value: string; - }[]; - published_at: string; - references: { - /** Format: uri */ - url: string; - }[]; - severity: string; - summary: string; - updated_at: string; - vulnerabilities: { - first_patched_version: { - identifier: string; - } | null; - package: { - ecosystem: string; - name: string; - }; - severity: string; - vulnerable_version_range: string; - }[]; - withdrawn_at: string; - }; - sender?: components["schemas"]["simple-user"]; - }; - /** security_and_analysis event */ - "webhook-security-and-analysis": { - changes: { - from?: { - security_and_analysis?: components["schemas"]["security-and-analysis"]; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["full-repository"]; - sender?: components["schemas"]["simple-user"]; - }; - /** sponsorship cancelled event */ - "webhook-sponsorship-cancelled": { - /** @enum {string} */ - action: "cancelled"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - sponsorship: components["schemas"]["webhooks_sponsorship"]; - }; - /** sponsorship created event */ - "webhook-sponsorship-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - sponsorship: components["schemas"]["webhooks_sponsorship"]; - }; - /** sponsorship edited event */ - "webhook-sponsorship-edited": { - /** @enum {string} */ - action: "edited"; - changes: { - privacy_level?: { - /** @description The `edited` event types include the details about the change when someone edits a sponsorship to change the privacy. */ - from: string; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - sponsorship: components["schemas"]["webhooks_sponsorship"]; - }; - /** sponsorship pending_cancellation event */ - "webhook-sponsorship-pending-cancellation": { - /** @enum {string} */ - action: "pending_cancellation"; - effective_date?: components["schemas"]["webhooks_effective_date"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - sponsorship: components["schemas"]["webhooks_sponsorship"]; - }; - /** sponsorship pending_tier_change event */ - "webhook-sponsorship-pending-tier-change": { - /** @enum {string} */ - action: "pending_tier_change"; - changes: components["schemas"]["webhooks_changes_8"]; - effective_date?: components["schemas"]["webhooks_effective_date"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - sponsorship: components["schemas"]["webhooks_sponsorship"]; - }; - /** sponsorship tier_changed event */ - "webhook-sponsorship-tier-changed": { - /** @enum {string} */ - action: "tier_changed"; - changes: components["schemas"]["webhooks_changes_8"]; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - sponsorship: components["schemas"]["webhooks_sponsorship"]; - }; - /** star created event */ - "webhook-star-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - /** @description The time the star was created. This is a timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. Will be `null` for the `deleted` action. */ - starred_at: string | null; - }; - /** star deleted event */ - "webhook-star-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - /** @description The time the star was created. This is a timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. Will be `null` for the `deleted` action. */ - starred_at: unknown; - }; - /** status event */ - "webhook-status": { - /** Format: uri */ - avatar_url?: string | null; - /** @description An array of branch objects containing the status' SHA. Each branch contains the given SHA, but the SHA may or may not be the head of the branch. The array includes a maximum of 10 branches. */ - branches: { - commit: { - sha: string | null; - /** Format: uri */ - url: string | null; - }; - name: string; - protected: boolean; - }[]; - commit: { - /** User */ - author: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id?: number; - login?: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - /** Format: uri */ - comments_url: string; - commit: { - author: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - } & { - date: string; - email?: string; - name?: string; - }; - comment_count: number; - committer: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - } & { - date: string; - email?: string; - name?: string; - }; - message: string; - tree: { - sha: string; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - url: string; - verification: { - payload: string | null; - /** @enum {string} */ - reason: - | "expired_key" - | "not_signing_key" - | "gpgverify_error" - | "gpgverify_unavailable" - | "unsigned" - | "unknown_signature_type" - | "no_user" - | "unverified_email" - | "bad_email" - | "unknown_key" - | "malformed_signature" - | "invalid" - | "valid" - | "bad_cert" - | "ocsp_pending"; - signature: string | null; - verified: boolean; - verified_at: string | null; - }; - }; - /** User */ - committer: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id?: number; - login?: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - /** Format: uri */ - html_url: string; - node_id: string; - parents: { - /** Format: uri */ - html_url: string; - sha: string; - /** Format: uri */ - url: string; - }[]; - sha: string; - /** Format: uri */ - url: string; - }; - context: string; - created_at: string; - /** @description The optional human-readable description added to the status. */ - description: string | null; - enterprise?: components["schemas"]["enterprise-webhooks"]; - /** @description The unique identifier of the status. */ - id: number; - installation?: components["schemas"]["simple-installation"]; - name: string; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - /** @description The Commit SHA. */ - sha: string; - /** - * @description The new state. Can be `pending`, `success`, `failure`, or `error`. - * @enum {string} - */ - state: "pending" | "success" | "failure" | "error"; - /** @description The optional link added to the status. */ - target_url: string | null; - updated_at: string; - }; - /** parent issue added event */ - "webhook-sub-issues-parent-issue-added": { - /** @enum {string} */ - action: "parent_issue_added"; - /** @description The ID of the parent issue. */ - parent_issue_id: number; - parent_issue: components["schemas"]["issue"]; - parent_issue_repo: components["schemas"]["repository"]; - /** @description The ID of the sub-issue. */ - sub_issue_id: number; - sub_issue: components["schemas"]["issue"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** parent issue removed event */ - "webhook-sub-issues-parent-issue-removed": { - /** @enum {string} */ - action: "parent_issue_removed"; - /** @description The ID of the parent issue. */ - parent_issue_id: number; - parent_issue: components["schemas"]["issue"]; - parent_issue_repo: components["schemas"]["repository"]; - /** @description The ID of the sub-issue. */ - sub_issue_id: number; - sub_issue: components["schemas"]["issue"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** sub-issue added event */ - "webhook-sub-issues-sub-issue-added": { - /** @enum {string} */ - action: "sub_issue_added"; - /** @description The ID of the sub-issue. */ - sub_issue_id: number; - sub_issue: components["schemas"]["issue"]; - sub_issue_repo: components["schemas"]["repository"]; - /** @description The ID of the parent issue. */ - parent_issue_id: number; - parent_issue: components["schemas"]["issue"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** sub-issue removed event */ - "webhook-sub-issues-sub-issue-removed": { - /** @enum {string} */ - action: "sub_issue_removed"; - /** @description The ID of the sub-issue. */ - sub_issue_id: number; - sub_issue: components["schemas"]["issue"]; - sub_issue_repo: components["schemas"]["repository"]; - /** @description The ID of the parent issue. */ - parent_issue_id: number; - parent_issue: components["schemas"]["issue"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository?: components["schemas"]["repository-webhooks"]; - sender?: components["schemas"]["simple-user"]; - }; - /** team_add event */ - "webhook-team-add": { - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - team: components["schemas"]["webhooks_team_1"]; - }; - /** team added_to_repository event */ - "webhook-team-added-to-repository": { - /** @enum {string} */ - action: "added_to_repository"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - /** - * Repository - * @description A git repository - */ - repository?: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - }; - sender?: components["schemas"]["simple-user"]; - team: components["schemas"]["webhooks_team_1"]; - }; - /** team created event */ - "webhook-team-created": { - /** @enum {string} */ - action: "created"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - /** - * Repository - * @description A git repository - */ - repository?: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - }; - sender: components["schemas"]["simple-user"]; - team: components["schemas"]["webhooks_team_1"]; - }; - /** team deleted event */ - "webhook-team-deleted": { - /** @enum {string} */ - action: "deleted"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - /** - * Repository - * @description A git repository - */ - repository?: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - }; - sender?: components["schemas"]["simple-user"]; - team: components["schemas"]["webhooks_team_1"]; - }; - /** team edited event */ - "webhook-team-edited": { - /** @enum {string} */ - action: "edited"; - /** @description The changes to the team if the action was `edited`. */ - changes: { - description?: { - /** @description The previous version of the description if the action was `edited`. */ - from: string; - }; - name?: { - /** @description The previous version of the name if the action was `edited`. */ - from: string; - }; - privacy?: { - /** @description The previous version of the team's privacy if the action was `edited`. */ - from: string; - }; - notification_setting?: { - /** @description The previous version of the team's notification setting if the action was `edited`. */ - from: string; - }; - repository?: { - permissions: { - from: { - /** @description The previous version of the team member's `admin` permission on a repository, if the action was `edited`. */ - admin?: boolean; - /** @description The previous version of the team member's `pull` permission on a repository, if the action was `edited`. */ - pull?: boolean; - /** @description The previous version of the team member's `push` permission on a repository, if the action was `edited`. */ - push?: boolean; - }; - }; - }; - }; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - /** - * Repository - * @description A git repository - */ - repository?: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - }; - sender: components["schemas"]["simple-user"]; - team: components["schemas"]["webhooks_team_1"]; - }; - /** team removed_from_repository event */ - "webhook-team-removed-from-repository": { - /** @enum {string} */ - action: "removed_from_repository"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization: components["schemas"]["organization-simple-webhooks"]; - /** - * Repository - * @description A git repository - */ - repository?: { - /** - * @description Whether to allow auto-merge for pull requests. - * @default false - */ - allow_auto_merge?: boolean; - /** @description Whether to allow private forks */ - allow_forking?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - */ - allow_squash_merge?: boolean; - allow_update_branch?: boolean; - /** Format: uri-template */ - archive_url: string; - /** - * @description Whether the repository is archived. - * @default false - */ - archived: boolean; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri */ - clone_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - created_at: number | string; - /** @description The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - /** @description The default branch of the repository. */ - default_branch: string; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - */ - delete_branch_on_merge?: boolean; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** @description Returns whether or not this repository is disabled. */ - disabled?: boolean; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - forks: number; - forks_count: number; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - git_url: string; - /** - * @description Whether downloads are enabled. - * @default true - */ - has_downloads: boolean; - /** - * @description Whether issues are enabled. - * @default true - */ - has_issues: boolean; - has_pages: boolean; - /** - * @description Whether projects are enabled. - * @default true - */ - has_projects: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - */ - has_wiki: boolean; - homepage: string | null; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** - * Format: int64 - * @description Unique identifier of the repository - */ - id: number; - is_template?: boolean; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - language: string | null; - /** Format: uri */ - languages_url: string; - /** License */ - license: { - key: string; - name: string; - node_id: string; - spdx_id: string; - /** Format: uri */ - url: string | null; - } | null; - master_branch?: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** Format: uri */ - mirror_url: string | null; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - open_issues: number; - open_issues_count: number; - organization?: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - permissions?: { - admin: boolean; - maintain?: boolean; - pull: boolean; - push: boolean; - triage?: boolean; - }; - /** @description Whether the repository is private or public. */ - private: boolean; - public?: boolean; - /** Format: uri-template */ - pulls_url: string; - pushed_at: number | string | null; - /** Format: uri-template */ - releases_url: string; - role_name?: string | null; - size: number; - ssh_url: string; - stargazers?: number; - stargazers_count: number; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - svn_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - topics: string[]; - /** Format: uri-template */ - trees_url: string; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - /** @enum {string} */ - visibility: "public" | "private" | "internal"; - watchers: number; - watchers_count: number; - }; - sender: components["schemas"]["simple-user"]; - team: components["schemas"]["webhooks_team_1"]; - }; - /** watch started event */ - "webhook-watch-started": { - /** @enum {string} */ - action: "started"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - }; - /** workflow_dispatch event */ - "webhook-workflow-dispatch": { - enterprise?: components["schemas"]["enterprise-webhooks"]; - inputs: { - [key: string]: unknown; - } | null; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - ref: string; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - workflow: string; - }; - /** workflow_job completed event */ - "webhook-workflow-job-completed": { - /** @enum {string} */ - action: "completed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - workflow_job: { - /** Format: uri */ - check_run_url: string; - completed_at: string | null; - /** @enum {string|null} */ - conclusion: - | "success" - | "failure" - | null - | "skipped" - | "cancelled" - | "action_required" - | "neutral" - | "timed_out"; - /** @description The time that the job created. */ - created_at: string; - head_sha: string; - /** Format: uri */ - html_url: string; - id: number; - /** @description Custom labels for the job. Specified by the [`"runs-on"` attribute](https://docs.github.com/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on) in the workflow YAML. */ - labels: string[]; - name: string; - node_id: string; - run_attempt: number; - run_id: number; - /** Format: uri */ - run_url: string; - /** @description The ID of the runner group that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */ - runner_group_id: number | null; - /** @description The name of the runner group that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */ - runner_group_name: string | null; - /** @description The ID of the runner that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */ - runner_id: number | null; - /** @description The name of the runner that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */ - runner_name: string | null; - started_at: string; - /** - * @description The current status of the job. Can be `queued`, `in_progress`, `waiting`, or `completed`. - * @enum {string} - */ - status: "queued" | "in_progress" | "completed" | "waiting"; - /** @description The name of the current branch. */ - head_branch: string | null; - /** @description The name of the workflow. */ - workflow_name: string | null; - steps: { - completed_at: string | null; - /** @enum {string|null} */ - conclusion: "failure" | "skipped" | "success" | "cancelled" | null; - name: string; - number: number; - started_at: string | null; - /** @enum {string} */ - status: "in_progress" | "completed" | "queued"; - }[]; - /** Format: uri */ - url: string; - } & { - check_run_url?: string; - completed_at?: string; - /** @enum {string} */ - conclusion: - | "success" - | "failure" - | "skipped" - | "cancelled" - | "action_required" - | "neutral" - | "timed_out"; - /** @description The time that the job created. */ - created_at?: string; - head_sha?: string; - html_url?: string; - id?: number; - labels?: (string | null)[]; - name?: string; - node_id?: string; - run_attempt?: number; - run_id?: number; - run_url?: string; - runner_group_id?: number | null; - runner_group_name?: string | null; - runner_id?: number | null; - runner_name?: string | null; - started_at?: string; - status?: string; - /** @description The name of the current branch. */ - head_branch?: string | null; - /** @description The name of the workflow. */ - workflow_name?: string | null; - steps?: (Record | null)[]; - url?: string; - }; - deployment?: components["schemas"]["deployment"]; - }; - /** workflow_job in_progress event */ - "webhook-workflow-job-in-progress": { - /** @enum {string} */ - action: "in_progress"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - workflow_job: { - /** Format: uri */ - check_run_url: string; - completed_at: string | null; - /** @enum {string|null} */ - conclusion: "success" | "failure" | null | "cancelled" | "neutral"; - /** @description The time that the job created. */ - created_at: string; - head_sha: string; - /** Format: uri */ - html_url: string; - id: number; - /** @description Custom labels for the job. Specified by the [`"runs-on"` attribute](https://docs.github.com/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on) in the workflow YAML. */ - labels: string[]; - name: string; - node_id: string; - run_attempt: number; - run_id: number; - /** Format: uri */ - run_url: string; - /** @description The ID of the runner group that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */ - runner_group_id: number | null; - /** @description The name of the runner group that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */ - runner_group_name: string | null; - /** @description The ID of the runner that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */ - runner_id: number | null; - /** @description The name of the runner that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */ - runner_name: string | null; - started_at: string; - /** - * @description The current status of the job. Can be `queued`, `in_progress`, or `completed`. - * @enum {string} - */ - status: "queued" | "in_progress" | "completed"; - /** @description The name of the current branch. */ - head_branch: string | null; - /** @description The name of the workflow. */ - workflow_name: string | null; - steps: { - completed_at: string | null; - /** @enum {string|null} */ - conclusion: "failure" | "skipped" | "success" | null | "cancelled"; - name: string; - number: number; - started_at: string | null; - /** @enum {string} */ - status: "in_progress" | "completed" | "queued" | "pending"; - }[]; - /** Format: uri */ - url: string; - } & { - check_run_url?: string; - completed_at?: string | null; - conclusion?: string | null; - /** @description The time that the job created. */ - created_at?: string; - head_sha?: string; - html_url?: string; - id?: number; - labels?: string[]; - name?: string; - node_id?: string; - run_attempt?: number; - run_id?: number; - run_url?: string; - runner_group_id?: number | null; - runner_group_name?: string | null; - runner_id?: number | null; - runner_name?: string | null; - started_at?: string; - /** @enum {string} */ - status: "in_progress" | "completed" | "queued"; - /** @description The name of the current branch. */ - head_branch?: string | null; - /** @description The name of the workflow. */ - workflow_name?: string | null; - steps: { - completed_at: string | null; - conclusion: string | null; - name: string; - number: number; - started_at: string | null; - /** @enum {string} */ - status: "in_progress" | "completed" | "pending" | "queued"; - }[]; - url?: string; - }; - deployment?: components["schemas"]["deployment"]; - }; - /** workflow_job queued event */ - "webhook-workflow-job-queued": { - /** @enum {string} */ - action: "queued"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - workflow_job: { - /** Format: uri */ - check_run_url: string; - completed_at: string | null; - conclusion: string | null; - /** @description The time that the job created. */ - created_at: string; - head_sha: string; - /** Format: uri */ - html_url: string; - id: number; - labels: string[]; - name: string; - node_id: string; - run_attempt: number; - run_id: number; - /** Format: uri */ - run_url: string; - runner_group_id: number | null; - runner_group_name: string | null; - runner_id: number | null; - runner_name: string | null; - /** Format: date-time */ - started_at: string; - /** @enum {string} */ - status: "queued" | "in_progress" | "completed" | "waiting"; - /** @description The name of the current branch. */ - head_branch: string | null; - /** @description The name of the workflow. */ - workflow_name: string | null; - steps: { - completed_at: string | null; - /** @enum {string|null} */ - conclusion: "failure" | "skipped" | "success" | "cancelled" | null; - name: string; - number: number; - started_at: string | null; - /** @enum {string} */ - status: "completed" | "in_progress" | "queued" | "pending"; - }[]; - /** Format: uri */ - url: string; - }; - deployment?: components["schemas"]["deployment"]; - }; - /** workflow_job waiting event */ - "webhook-workflow-job-waiting": { - /** @enum {string} */ - action: "waiting"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - workflow_job: { - /** Format: uri */ - check_run_url: string; - completed_at: string | null; - conclusion: string | null; - /** @description The time that the job created. */ - created_at: string; - head_sha: string; - /** Format: uri */ - html_url: string; - id: number; - labels: string[]; - name: string; - node_id: string; - run_attempt: number; - run_id: number; - /** Format: uri */ - run_url: string; - runner_group_id: number | null; - runner_group_name: string | null; - runner_id: number | null; - runner_name: string | null; - /** Format: date-time */ - started_at: string; - /** @description The name of the current branch. */ - head_branch: string | null; - /** @description The name of the workflow. */ - workflow_name: string | null; - /** @enum {string} */ - status: "queued" | "in_progress" | "completed" | "waiting"; - steps: { - completed_at: string | null; - /** @enum {string|null} */ - conclusion: "failure" | "skipped" | "success" | "cancelled" | null; - name: string; - number: number; - started_at: string | null; - /** @enum {string} */ - status: - | "completed" - | "in_progress" - | "queued" - | "pending" - | "waiting"; - }[]; - /** Format: uri */ - url: string; - }; - deployment?: components["schemas"]["deployment"]; - }; - /** workflow_run completed event */ - "webhook-workflow-run-completed": { - /** @enum {string} */ - action: "completed"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - workflow: components["schemas"]["webhooks_workflow"]; - /** Workflow Run */ - workflow_run: { - /** User */ - actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** Format: uri */ - artifacts_url: string; - /** Format: uri */ - cancel_url: string; - check_suite_id: number; - check_suite_node_id: string; - /** Format: uri */ - check_suite_url: string; - /** @enum {string|null} */ - conclusion: - | "action_required" - | "cancelled" - | "failure" - | "neutral" - | "skipped" - | "stale" - | "success" - | "timed_out" - | "startup_failure" - | null; - /** Format: date-time */ - created_at: string; - event: string; - head_branch: string | null; - /** SimpleCommit */ - head_commit: { - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - author: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - committer: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - id: string; - message: string; - timestamp: string; - tree_id: string; - }; - /** Repository Lite */ - head_repository: { - /** Format: uri-template */ - archive_url: string; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the repository */ - id: number; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - /** Format: uri */ - languages_url: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description Whether the repository is private or public. */ - private: boolean; - /** Format: uri-template */ - pulls_url: string; - /** Format: uri-template */ - releases_url: string; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - /** Format: uri-template */ - trees_url: string; - /** Format: uri */ - url: string; - }; - head_sha: string; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - jobs_url: string; - /** Format: uri */ - logs_url: string; - name: string | null; - node_id: string; - path: string; - /** Format: uri */ - previous_attempt_url: string | null; - pull_requests: ({ - base: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - head: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - id: number; - number: number; - /** Format: uri */ - url: string; - } | null)[]; - referenced_workflows?: - | { - path: string; - ref?: string; - sha: string; - }[] - | null; - /** Repository Lite */ - repository: { - /** Format: uri-template */ - archive_url: string; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the repository */ - id: number; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - /** Format: uri */ - languages_url: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description Whether the repository is private or public. */ - private: boolean; - /** Format: uri-template */ - pulls_url: string; - /** Format: uri-template */ - releases_url: string; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - /** Format: uri-template */ - trees_url: string; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - rerun_url: string; - run_attempt: number; - run_number: number; - /** Format: date-time */ - run_started_at: string; - /** @enum {string} */ - status: - | "requested" - | "in_progress" - | "completed" - | "queued" - | "pending" - | "waiting"; - /** User */ - triggering_actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - workflow_id: number; - /** Format: uri */ - workflow_url: string; - /** - * @description The event-specific title associated with the run or the run-name if set, or the value of `run-name` if it is set in the workflow. - * @example Simple Workflow - */ - display_title?: string; - }; - }; - /** workflow_run in_progress event */ - "webhook-workflow-run-in-progress": { - /** @enum {string} */ - action: "in_progress"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - workflow: components["schemas"]["webhooks_workflow"]; - /** Workflow Run */ - workflow_run: { - /** User */ - actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - /** Format: uri */ - artifacts_url: string; - /** Format: uri */ - cancel_url: string; - check_suite_id: number; - check_suite_node_id: string; - /** Format: uri */ - check_suite_url: string; - /** @enum {string|null} */ - conclusion: - | "action_required" - | "cancelled" - | "failure" - | "neutral" - | "skipped" - | "stale" - | "success" - | "timed_out" - | null; - /** Format: date-time */ - created_at: string; - event: string; - head_branch: string | null; - /** SimpleCommit */ - head_commit: { - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - author: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - committer: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - id: string; - message: string; - timestamp: string; - tree_id: string; - }; - /** Repository Lite */ - head_repository: { - /** Format: uri-template */ - archive_url: string; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the repository */ - id: number; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - /** Format: uri */ - languages_url: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** @description The name of the repository. */ - name: string | null; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - /** @description Whether the repository is private or public. */ - private: boolean; - /** Format: uri-template */ - pulls_url: string; - /** Format: uri-template */ - releases_url: string; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - /** Format: uri-template */ - trees_url: string; - /** Format: uri */ - url: string; - }; - head_sha: string; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - jobs_url: string; - /** Format: uri */ - logs_url: string; - name: string | null; - node_id: string; - path: string; - /** Format: uri */ - previous_attempt_url: string | null; - pull_requests: ({ - base: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - head: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - id: number; - number: number; - /** Format: uri */ - url: string; - } | null)[]; - referenced_workflows?: - | { - path: string; - ref?: string; - sha: string; - }[] - | null; - /** Repository Lite */ - repository: { - /** Format: uri-template */ - archive_url: string; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the repository */ - id: number; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - /** Format: uri */ - languages_url: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - /** @description Whether the repository is private or public. */ - private: boolean; - /** Format: uri-template */ - pulls_url: string; - /** Format: uri-template */ - releases_url: string; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - /** Format: uri-template */ - trees_url: string; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - rerun_url: string; - run_attempt: number; - run_number: number; - /** Format: date-time */ - run_started_at: string; - /** @enum {string} */ - status: - | "requested" - | "in_progress" - | "completed" - | "queued" - | "pending"; - /** User */ - triggering_actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - } | null; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - workflow_id: number; - /** Format: uri */ - workflow_url: string; - }; - }; - /** workflow_run requested event */ - "webhook-workflow-run-requested": { - /** @enum {string} */ - action: "requested"; - enterprise?: components["schemas"]["enterprise-webhooks"]; - installation?: components["schemas"]["simple-installation"]; - organization?: components["schemas"]["organization-simple-webhooks"]; - repository: components["schemas"]["repository-webhooks"]; - sender: components["schemas"]["simple-user"]; - workflow: components["schemas"]["webhooks_workflow"]; - /** Workflow Run */ - workflow_run: { - /** User */ - actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** Format: uri */ - artifacts_url: string; - /** Format: uri */ - cancel_url: string; - check_suite_id: number; - check_suite_node_id: string; - /** Format: uri */ - check_suite_url: string; - /** @enum {string|null} */ - conclusion: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "timed_out" - | "action_required" - | "stale" - | null - | "skipped" - | "startup_failure"; - /** Format: date-time */ - created_at: string; - event: string; - head_branch: string | null; - /** SimpleCommit */ - head_commit: { - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - author: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - /** - * Committer - * @description Metaproperties for Git author/committer information. - */ - committer: { - /** Format: date-time */ - date?: string; - /** Format: email */ - email: string | null; - /** @description The git author's name. */ - name: string; - username?: string; - }; - id: string; - message: string; - timestamp: string; - tree_id: string; - }; - /** Repository Lite */ - head_repository: { - /** Format: uri-template */ - archive_url: string; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the repository */ - id: number; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - /** Format: uri */ - languages_url: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description Whether the repository is private or public. */ - private: boolean; - /** Format: uri-template */ - pulls_url: string; - /** Format: uri-template */ - releases_url: string; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - /** Format: uri-template */ - trees_url: string; - /** Format: uri */ - url: string; - }; - head_sha: string; - /** Format: uri */ - html_url: string; - id: number; - /** Format: uri */ - jobs_url: string; - /** Format: uri */ - logs_url: string; - name: string | null; - node_id: string; - path: string; - /** Format: uri */ - previous_attempt_url: string | null; - pull_requests: { - base: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - head: { - ref: string; - /** Repo Ref */ - repo: { - id: number; - name: string; - /** Format: uri */ - url: string; - }; - sha: string; - }; - id: number; - number: number; - /** Format: uri */ - url: string; - }[]; - referenced_workflows?: - | { - path: string; - ref?: string; - sha: string; - }[] - | null; - /** Repository Lite */ - repository: { - /** Format: uri-template */ - archive_url: string; - /** Format: uri-template */ - assignees_url: string; - /** Format: uri-template */ - blobs_url: string; - /** Format: uri-template */ - branches_url: string; - /** Format: uri-template */ - collaborators_url: string; - /** Format: uri-template */ - comments_url: string; - /** Format: uri-template */ - commits_url: string; - /** Format: uri-template */ - compare_url: string; - /** Format: uri-template */ - contents_url: string; - /** Format: uri */ - contributors_url: string; - /** Format: uri */ - deployments_url: string; - description: string | null; - /** Format: uri */ - downloads_url: string; - /** Format: uri */ - events_url: string; - fork: boolean; - /** Format: uri */ - forks_url: string; - full_name: string; - /** Format: uri-template */ - git_commits_url: string; - /** Format: uri-template */ - git_refs_url: string; - /** Format: uri-template */ - git_tags_url: string; - /** Format: uri */ - hooks_url: string; - /** Format: uri */ - html_url: string; - /** @description Unique identifier of the repository */ - id: number; - /** Format: uri-template */ - issue_comment_url: string; - /** Format: uri-template */ - issue_events_url: string; - /** Format: uri-template */ - issues_url: string; - /** Format: uri-template */ - keys_url: string; - /** Format: uri-template */ - labels_url: string; - /** Format: uri */ - languages_url: string; - /** Format: uri */ - merges_url: string; - /** Format: uri-template */ - milestones_url: string; - /** @description The name of the repository. */ - name: string; - node_id: string; - /** Format: uri-template */ - notifications_url: string; - /** User */ - owner: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** @description Whether the repository is private or public. */ - private: boolean; - /** Format: uri-template */ - pulls_url: string; - /** Format: uri-template */ - releases_url: string; - /** Format: uri */ - stargazers_url: string; - /** Format: uri-template */ - statuses_url: string; - /** Format: uri */ - subscribers_url: string; - /** Format: uri */ - subscription_url: string; - /** Format: uri */ - tags_url: string; - /** Format: uri */ - teams_url: string; - /** Format: uri-template */ - trees_url: string; - /** Format: uri */ - url: string; - }; - /** Format: uri */ - rerun_url: string; - run_attempt: number; - run_number: number; - /** Format: date-time */ - run_started_at: string; - /** @enum {string} */ - status: - | "requested" - | "in_progress" - | "completed" - | "queued" - | "pending" - | "waiting"; - /** User */ - triggering_actor: { - /** Format: uri */ - avatar_url?: string; - deleted?: boolean; - email?: string | null; - /** Format: uri-template */ - events_url?: string; - /** Format: uri */ - followers_url?: string; - /** Format: uri-template */ - following_url?: string; - /** Format: uri-template */ - gists_url?: string; - gravatar_id?: string; - /** Format: uri */ - html_url?: string; - id: number; - login: string; - name?: string; - node_id?: string; - /** Format: uri */ - organizations_url?: string; - /** Format: uri */ - received_events_url?: string; - /** Format: uri */ - repos_url?: string; - site_admin?: boolean; - /** Format: uri-template */ - starred_url?: string; - /** Format: uri */ - subscriptions_url?: string; - /** @enum {string} */ - type?: "Bot" | "User" | "Organization"; - /** Format: uri */ - url?: string; - user_view_type?: string; - } | null; - /** Format: date-time */ - updated_at: string; - /** Format: uri */ - url: string; - workflow_id: number; - /** Format: uri */ - workflow_url: string; - display_title: string; - }; - }; - }; - responses: { - /** @description Validation failed, or the endpoint has been spammed. */ - validation_failed_simple: { - content: { - "application/json": components["schemas"]["validation-error-simple"]; - }; - }; - /** @description Resource not found */ - not_found: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Bad Request */ - bad_request: { - content: { - "application/json": components["schemas"]["basic-error"]; - "application/scim+json": components["schemas"]["scim-error"]; - }; - }; - /** @description Validation failed, or the endpoint has been spammed. */ - validation_failed: { - content: { - "application/json": components["schemas"]["validation-error"]; - }; - }; - /** @description Accepted */ - accepted: { - content: { - "application/json": Record; - }; - }; - /** @description Not modified */ - not_modified: { - content: never; - }; - /** @description Requires authentication */ - requires_authentication: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Forbidden */ - forbidden: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Internal Error */ - internal_error: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Conflict */ - conflict: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description A header with no content is returned. */ - no_content: { - content: never; - }; - /** @description Service unavailable */ - service_unavailable: { - content: { - "application/json": { - code?: string; - message?: string; - documentation_url?: string; - }; - }; - }; - /** @description Forbidden Gist */ - forbidden_gist: { - content: { - "application/json": { - block?: { - reason?: string; - created_at?: string; - html_url?: string | null; - }; - message?: string; - documentation_url?: string; - }; - }; - }; - /** @description Moved permanently */ - moved_permanently: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Response when getting a billing premium request usage report */ - billing_premium_request_usage_report_org: { - content: { - "application/json": components["schemas"]["billing-premium-request-usage-report-org"]; - }; - }; - /** @description Billing usage report response for an organization */ - billing_usage_report_org: { - content: { - "application/json": components["schemas"]["billing-usage-report"]; - }; - }; - /** @description Response */ - actions_runner_jitconfig: { - content: { - "application/json": { - runner: components["schemas"]["runner"]; - /** @description The base64 encoded runner configuration. */ - encoded_jit_config: string; - }; - }; - }; - /** @description Response */ - actions_runner_labels: { - content: { - "application/json": { - total_count: number; - labels: components["schemas"]["runner-label"][]; - }; - }; - }; - /** @description Response */ - actions_runner_labels_readonly: { - content: { - "application/json": { - total_count: number; - labels: components["schemas"]["runner-label"][]; - }; - }; - }; - /** @description Copilot Usage Merics API setting is disabled at the organization or enterprise level. */ - usage_metrics_api_disabled: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description The value of `per_page` multiplied by `page` cannot be greater than 10000. */ - package_es_list_error: { - content: never; - }; - /** @description Gone */ - gone: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Temporary Redirect */ - temporary_redirect: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Response if GitHub Advanced Security is not enabled for this repository */ - code_scanning_forbidden_read: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Response if the repository is archived or if GitHub Advanced Security is not enabled for this repository */ - code_scanning_forbidden_write: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Bad Request */ - code_scanning_bad_request: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Response if the repository is archived, if GitHub Advanced Security is not enabled for this repository or if rate limit is exceeded */ - code_scanning_autofix_create_forbidden: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Response if analysis could not be processed */ - unprocessable_analysis: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Found */ - found: { - content: never; - }; - /** @description Response if there is already a validation run in progress with a different default setup configuration */ - code_scanning_conflict: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Response if the configuration change cannot be made because the repository is not in the required state */ - code_scanning_invalid_state: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Response for a private repository when GitHub Advanced Security is not enabled, or if used against a fork */ - dependency_review_forbidden: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Unavailable due to service under maintenance. */ - porter_maintenance: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Unacceptable */ - unacceptable: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Response when getting a billing premium request usage report */ - billing_premium_request_usage_report_user: { - content: { - "application/json": components["schemas"]["billing-premium-request-usage-report-user"]; - }; - }; - /** @description Response when getting a billing usage report */ - billing_usage_report_user: { - content: { - "application/json": components["schemas"]["billing-usage-report-user"]; - }; - }; - }; - parameters: { - /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for results before this cursor. For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - "pagination-before"?: string; - /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for results after this cursor. For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - "pagination-after"?: string; - /** @description The direction to sort the results by. */ - direction?: "asc" | "desc"; - /** @description The GHSA (GitHub Security Advisory) identifier of the advisory. */ - ghsa_id: string; - /** @description The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - "per-page"?: number; - /** @description Used for pagination: the starting delivery from which the page of deliveries is fetched. Refer to the `link` header for the next and previous page cursors. */ - cursor?: string; - "delivery-id": number; - /** @description The page number of the results to fetch. For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - page?: number; - /** @description Only show results that were last updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ - since?: string; - /** @description The unique identifier of the installation. */ - "installation-id": number; - /** @description The client ID of the GitHub app. */ - "client-id": string; - "app-slug": string; - /** @description The unique identifier of the classroom assignment. */ - "assignment-id": number; - /** @description The unique identifier of the classroom. */ - "classroom-id": number; - /** @description The slug version of the enterprise name. */ - enterprise: string; - /** @description The unique identifier of the code security configuration. */ - "configuration-id": number; - /** - * @description A comma-separated list of states. If specified, only alerts with these states will be returned. - * - * Can be: `auto_dismissed`, `dismissed`, `fixed`, `open` - */ - "dependabot-alert-comma-separated-states"?: string; - /** - * @description A comma-separated list of severities. If specified, only alerts with these severities will be returned. - * - * Can be: `low`, `medium`, `high`, `critical` - */ - "dependabot-alert-comma-separated-severities"?: string; - /** - * @description A comma-separated list of ecosystems. If specified, only alerts for these ecosystems will be returned. - * - * Can be: `composer`, `go`, `maven`, `npm`, `nuget`, `pip`, `pub`, `rubygems`, `rust` - */ - "dependabot-alert-comma-separated-ecosystems"?: string; - /** @description A comma-separated list of package names. If specified, only alerts for these packages will be returned. */ - "dependabot-alert-comma-separated-packages"?: string; - /** - * @description CVE Exploit Prediction Scoring System (EPSS) percentage. Can be specified as: - * - An exact number (`n`) - * - Comparators such as `>n`, `=n`, `<=n` - * - A range like `n..n`, where `n` is a number from 0.0 to 1.0 - * - * Filters the list of alerts based on EPSS percentages. If specified, only alerts with the provided EPSS percentages will be returned. - */ - "dependabot-alert-comma-separated-epss"?: string; - /** - * @description Filters the list of alerts based on whether the alert has the given value. If specified, only alerts meeting this criterion will be returned. - * Multiple `has` filters can be passed to filter for alerts that have all of the values. Currently, only `patch` is supported. - */ - "dependabot-alert-comma-separated-has"?: string | "patch"[]; - /** @description The scope of the vulnerable dependency. If specified, only alerts with this scope will be returned. */ - "dependabot-alert-scope"?: "development" | "runtime"; - /** - * @description The property by which to sort the results. - * `created` means when the alert was created. - * `updated` means when the alert's state last changed. - * `epss_percentage` sorts alerts by the Exploit Prediction Scoring System (EPSS) percentage. - */ - "dependabot-alert-sort"?: "created" | "updated" | "epss_percentage"; - /** @description The slug version of the enterprise team name. You can also substitute this value with the enterprise team id. */ - "enterprise-team": string; - /** @description The handle for the GitHub user account. */ - username: string; - /** @description The organization name. The name is not case sensitive. */ - org: string; - /** @description The slug of the team name. */ - "team-slug": string; - /** @description The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - "public-events-per-page"?: number; - /** @description The unique identifier of the gist. */ - "gist-id": string; - /** @description The unique identifier of the comment. */ - "comment-id": number; - /** @description A list of comma separated label names. Example: `bug,ui,@high` */ - labels?: string; - /** @description account_id parameter */ - "account-id": number; - /** @description The unique identifier of the plan. */ - "plan-id": number; - /** @description The property to sort the results by. */ - sort?: "created" | "updated"; - /** @description The account owner of the repository. The name is not case sensitive. */ - owner: string; - /** @description The name of the repository without the `.git` extension. The name is not case sensitive. */ - repo: string; - /** @description If `true`, show notifications marked as read. */ - all?: boolean; - /** @description If `true`, only shows notifications in which the user is directly participating or mentioned. */ - participating?: boolean; - /** @description Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ - before?: string; - /** @description The unique identifier of the notification thread. This corresponds to the value returned in the `id` field when you retrieve notifications (for example with the [`GET /notifications` operation](https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user)). */ - "thread-id": number; - /** @description An organization ID. Only return organizations with an ID greater than this ID. */ - "since-org"?: number; - /** @description If specified, only return results for a single year. The value of `year` is an integer with four digits representing a year. For example, `2025`. Default value is the current year. */ - "billing-usage-report-year"?: number; - /** @description If specified, only return results for a single month. The value of `month` is an integer between `1` and `12`. Default value is the current month. If no year is specified the default `year` is used. */ - "billing-usage-report-month-default"?: number; - /** @description If specified, only return results for a single day. The value of `day` is an integer between `1` and `31`. If no `year` or `month` is specified, the default `year` and `month` are used. */ - "billing-usage-report-day"?: number; - /** @description The user name to query usage for. The name is not case sensitive. */ - "billing-usage-report-user"?: string; - /** @description The model name to query usage for. The name is not case sensitive. */ - "billing-usage-report-model"?: string; - /** @description The product name to query usage for. The name is not case sensitive. */ - "billing-usage-report-product"?: string; - /** @description If specified, only return results for a single month. The value of `month` is an integer between `1` and `12`. If no year is specified the default `year` is used. */ - "billing-usage-report-month"?: number; - /** @description Image definition ID of custom image */ - "actions-custom-image-definition-id": number; - /** @description Version of a custom image */ - "actions-custom-image-version": string; - /** @description Unique identifier of the GitHub-hosted runner. */ - "hosted-runner-id": number; - /** @description The unique identifier of the repository. */ - "repository-id": number; - /** @description Only return runner groups that are allowed to be used by this repository. */ - "visible-to-repository"?: string; - /** @description Unique identifier of the self-hosted runner group. */ - "runner-group-id": number; - /** @description Unique identifier of the self-hosted runner. */ - "runner-id": number; - /** @description The name of a self-hosted runner's custom label. */ - "runner-label-name": string; - /** @description The name of the secret. */ - "secret-name": string; - /** @description The number of results per page (max 30). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - "variables-per-page"?: number; - /** @description The name of the variable. */ - "variable-name": string; - /** @description The name of a code scanning tool. Only results by this tool will be listed. You can specify the tool by using either `tool_name` or `tool_guid`, but not both. */ - "tool-name"?: components["schemas"]["code-scanning-analysis-tool-name"]; - /** @description The GUID of a code scanning tool. Only results by this tool will be listed. Note that some code scanning tools may not include a GUID in their analysis data. You can specify the tool by using either `tool_guid` or `tool_name`, but not both. */ - "tool-guid"?: components["schemas"]["code-scanning-analysis-tool-guid"]; - /** @description A comma-separated list of artifact registry URLs. If specified, only alerts for repositories with storage records matching these URLs will be returned. */ - "dependabot-alert-comma-separated-artifact-registry-urls"?: string; - /** - * @description A comma-separated list of Artifact Registry name strings. If specified, only alerts for repositories with storage records matching these registries will be returned. - * - * Can be: `jfrog-artifactory` - */ - "dependabot-alert-comma-separated-artifact-registry"?: string; - /** - * @description Filters the list of alerts based on whether the alert has the given value. If specified, only alerts meeting this criterion will be returned. - * Multiple `has` filters can be passed to filter for alerts that have all of the values. - */ - "dependabot-alert-org-scope-comma-separated-has"?: - | string - | ("patch" | "deployment")[]; - /** - * @description A comma-separated list of runtime risk strings. If specified, only alerts for repositories with deployment records matching these risks will be returned. - * - * Can be: `critical-resource`, `internet-exposed`, `sensitive-data`, `lateral-movement` - */ - "dependabot-alert-comma-separated-runtime-risk"?: string; - /** @description The unique identifier of the hook. You can find this value in the `X-GitHub-Hook-ID` header of a webhook delivery. */ - "hook-id": number; - /** @description The type of the actor */ - "api-insights-actor-type": - | "installation" - | "classic_pat" - | "fine_grained_pat" - | "oauth_app" - | "github_app_user_to_server"; - /** @description The ID of the actor */ - "api-insights-actor-id": number; - /** @description The minimum timestamp to query for stats. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ - "api-insights-min-timestamp": string; - /** @description The maximum timestamp to query for stats. Defaults to the time 30 days ago. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ - "api-insights-max-timestamp"?: string; - /** @description The property to sort the results by. */ - "api-insights-route-stats-sort"?: ( - | "last_rate_limited_timestamp" - | "last_request_timestamp" - | "rate_limited_request_count" - | "http_method" - | "api_route" - | "total_request_count" - )[]; - /** @description Providing a substring will filter results where the API route contains the substring. This is a case-insensitive search. */ - "api-insights-api-route-substring"?: string; - /** @description The property to sort the results by. */ - "api-insights-sort"?: ( - | "last_rate_limited_timestamp" - | "last_request_timestamp" - | "rate_limited_request_count" - | "subject_name" - | "total_request_count" - )[]; - /** @description Providing a substring will filter results where the subject name contains the substring. This is a case-insensitive search. */ - "api-insights-subject-name-substring"?: string; - /** @description The ID of the user to query for stats */ - "api-insights-user-id": string; - /** @description The increment of time used to breakdown the query results (5m, 10m, 1h, etc.) */ - "api-insights-timestamp-increment": string; - /** @description Providing a substring will filter results where the actor name contains the substring. This is a case-insensitive search. */ - "api-insights-actor-name-substring"?: string; - /** @description The unique identifier of the invitation. */ - "invitation-id": number; - /** @description The unique identifier of the issue type. */ - "issue-type-id": number; - /** @description The name of the codespace. */ - "codespace-name": string; - /** @description The unique identifier of the migration. */ - "migration-id": number; - /** @description repo_name parameter */ - "repo-name": string; - /** @description The unique identifier of the role. */ - "role-id": number; - /** - * @description The selected visibility of the packages. This parameter is optional and only filters an existing result set. - * - * The `internal` visibility is only supported for GitHub Packages registries that allow for granular permissions. For other ecosystems `internal` is synonymous with `private`. - * For the list of GitHub Packages registries that support granular permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - */ - "package-visibility"?: "public" | "private" | "internal"; - /** @description The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ - "package-type": - | "npm" - | "maven" - | "rubygems" - | "docker" - | "nuget" - | "container"; - /** @description The name of the package. */ - "package-name": string; - /** @description Unique identifier of the package version. */ - "package-version-id": number; - /** @description The property by which to sort the results. */ - "personal-access-token-sort"?: "created_at"; - /** @description A list of owner usernames to use to filter the results. */ - "personal-access-token-owner"?: string[]; - /** @description The name of the repository to use to filter the results. */ - "personal-access-token-repository"?: string; - /** @description The permission to use to filter the results. */ - "personal-access-token-permission"?: string; - /** @description Only show fine-grained personal access tokens used before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ - "personal-access-token-before"?: string; - /** @description Only show fine-grained personal access tokens used after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ - "personal-access-token-after"?: string; - /** @description The ID of the token */ - "personal-access-token-token-id"?: string[]; - /** @description The unique identifier of the fine-grained personal access token. */ - "fine-grained-personal-access-token-id": number; - /** @description The project's number. */ - "project-number": number; - /** @description The unique identifier of the field. */ - "field-id": number; - /** @description The unique identifier of the project item. */ - "item-id": number; - /** @description The custom property name */ - "custom-property-name": string; - /** - * @description A comma-separated list of rule targets to filter by. - * If provided, only rulesets that apply to the specified targets will be returned. - * For example, `branch,tag,push`. - */ - "ruleset-targets"?: string; - /** @description The name of the ref. Cannot contain wildcard characters. Optionally prefix with `refs/heads/` to limit to branches or `refs/tags/` to limit to tags. Omit the prefix to search across all refs. When specified, only rule evaluations triggered for this ref will be returned. */ - "ref-in-query"?: string; - /** @description The name of the repository to filter on. */ - "repository-name-in-query"?: string; - /** - * @description The time period to filter by. - * - * For example, `day` will filter for rule suites that occurred in the past 24 hours, and `week` will filter for rule suites that occurred in the past 7 days (168 hours). - */ - "time-period"?: "hour" | "day" | "week" | "month"; - /** @description The handle for the GitHub user account to filter on. When specified, only rule evaluations triggered by this actor will be returned. */ - "actor-name-in-query"?: string; - /** @description The rule suite results to filter on. When specified, only suites with this result will be returned. */ - "rule-suite-result"?: "pass" | "fail" | "bypass" | "all"; - /** - * @description The unique identifier of the rule suite result. - * To get this ID, you can use [GET /repos/{owner}/{repo}/rulesets/rule-suites](https://docs.github.com/rest/repos/rule-suites#list-repository-rule-suites) - * for repositories and [GET /orgs/{org}/rulesets/rule-suites](https://docs.github.com/rest/orgs/rule-suites#list-organization-rule-suites) - * for organizations. - */ - "rule-suite-id": number; - /** @description Set to `open` or `resolved` to only list secret scanning alerts in a specific state. */ - "secret-scanning-alert-state"?: "open" | "resolved"; - /** @description A comma-separated list of secret types to return. All default secret patterns are returned. To return generic patterns, pass the token name(s) in the parameter. See "[Supported secret scanning patterns](https://docs.github.com/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)" for a complete list of secret types. */ - "secret-scanning-alert-secret-type"?: string; - /** @description A comma-separated list of resolutions. Only secret scanning alerts with one of these resolutions are listed. Valid resolutions are `false_positive`, `wont_fix`, `revoked`, `pattern_edited`, `pattern_deleted` or `used_in_tests`. */ - "secret-scanning-alert-resolution"?: string; - /** @description The property to sort the results by. `created` means when the alert was created. `updated` means when the alert was updated or resolved. */ - "secret-scanning-alert-sort"?: "created" | "updated"; - /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for events before this cursor. To receive an initial cursor on your first request, include an empty "before" query string. */ - "secret-scanning-pagination-before-org-repo"?: string; - /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for events after this cursor. To receive an initial cursor on your first request, include an empty "after" query string. */ - "secret-scanning-pagination-after-org-repo"?: string; - /** @description A comma-separated list of validities that, when present, will return alerts that match the validities in this list. Valid options are `active`, `inactive`, and `unknown`. */ - "secret-scanning-alert-validity"?: string; - /** @description A boolean value representing whether or not to filter alerts by the publicly-leaked tag being present. */ - "secret-scanning-alert-publicly-leaked"?: boolean; - /** @description A boolean value representing whether or not to filter alerts by the multi-repo tag being present. */ - "secret-scanning-alert-multi-repo"?: boolean; - /** @description A boolean value representing whether or not to hide literal secrets in the results. */ - "secret-scanning-alert-hide-secret"?: boolean; - /** @description Unique identifier of the hosted compute network configuration. */ - "network-configuration-id": string; - /** @description Unique identifier of the hosted compute network settings. */ - "network-settings-id": string; - /** @description The number that identifies the discussion. */ - "discussion-number": number; - /** @description The number that identifies the comment. */ - "comment-number": number; - /** @description The unique identifier of the reaction. */ - "reaction-id": number; - /** @description The unique identifier of the project. */ - "project-id": number; - /** @description The security feature to enable or disable. */ - "security-product": - | "dependency_graph" - | "dependabot_alerts" - | "dependabot_security_updates" - | "advanced_security" - | "code_scanning_default_setup" - | "secret_scanning" - | "secret_scanning_push_protection"; - /** - * @description The action to take. - * - * `enable_all` means to enable the specified security feature for all repositories in the organization. - * `disable_all` means to disable the specified security feature for all repositories in the organization. - */ - "org-security-product-enablement": "enable_all" | "disable_all"; - /** @description The unique identifier of the column. */ - "column-id": number; - /** @description The name field of an artifact. When specified, only artifacts with this name will be returned. */ - "artifact-name"?: string; - /** @description The unique identifier of the artifact. */ - "artifact-id": number; - /** @description The full Git reference for narrowing down the cache. The `ref` for a branch should be formatted as `refs/heads/`. To reference a pull request use `refs/pull//merge`. */ - "actions-cache-git-ref-full"?: string; - /** @description An explicit key or prefix for identifying the cache */ - "actions-cache-key"?: string; - /** @description The property to sort the results by. `created_at` means when the cache was created. `last_accessed_at` means when the cache was last accessed. `size_in_bytes` is the size of the cache in bytes. */ - "actions-cache-list-sort"?: - | "created_at" - | "last_accessed_at" - | "size_in_bytes"; - /** @description A key for identifying the cache. */ - "actions-cache-key-required": string; - /** @description The unique identifier of the GitHub Actions cache. */ - "cache-id": number; - /** @description The unique identifier of the job. */ - "job-id": number; - /** @description Returns someone's workflow runs. Use the login for the user who created the `push` associated with the check suite or workflow run. */ - actor?: string; - /** @description Returns workflow runs associated with a branch. Use the name of the branch of the `push`. */ - "workflow-run-branch"?: string; - /** @description Returns workflow run triggered by the event you specify. For example, `push`, `pull_request` or `issue`. For more information, see "[Events that trigger workflows](https://docs.github.com/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows)." */ - event?: string; - /** @description Returns workflow runs with the check run `status` or `conclusion` that you specify. For example, a conclusion can be `success` or a status can be `in_progress`. Only GitHub Actions can set a status of `waiting`, `pending`, or `requested`. */ - "workflow-run-status"?: - | "completed" - | "action_required" - | "cancelled" - | "failure" - | "neutral" - | "skipped" - | "stale" - | "success" - | "timed_out" - | "in_progress" - | "queued" - | "requested" - | "waiting" - | "pending"; - /** @description Returns workflow runs created within the given date-time range. For more information on the syntax, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)." */ - created?: string; - /** @description If `true` pull requests are omitted from the response (empty array). */ - "exclude-pull-requests"?: boolean; - /** @description Returns workflow runs with the `check_suite_id` that you specify. */ - "workflow-run-check-suite-id"?: number; - /** @description Only returns workflow runs that are associated with the specified `head_sha`. */ - "workflow-run-head-sha"?: string; - /** @description The unique identifier of the workflow run. */ - "run-id": number; - /** @description The attempt number of the workflow run. */ - "attempt-number": number; - /** @description The ID of the workflow. You can also pass the workflow file name as a string. */ - "workflow-id": number | string; - /** @description The unique identifier of the autolink. */ - "autolink-id": number; - /** @description The name of the branch. Cannot contain wildcard characters. To use wildcard characters in branch names, use [the GraphQL API](https://docs.github.com/graphql). */ - branch: string; - /** @description The unique identifier of the check run. */ - "check-run-id": number; - /** @description The unique identifier of the check suite. */ - "check-suite-id": number; - /** @description Returns check runs with the specified `name`. */ - "check-name"?: string; - /** @description Returns check runs with the specified `status`. */ - status?: "queued" | "in_progress" | "completed"; - /** @description The Git reference for the results you want to list. The `ref` for a branch can be formatted either as `refs/heads/` or simply ``. To reference a pull request use `refs/pull//merge`. */ - "git-ref"?: components["schemas"]["code-scanning-ref"]; - /** @description The number of the pull request for the results you want to list. */ - "pr-alias"?: number; - /** @description The number that identifies an alert. You can find this at the end of the URL for a code scanning alert within GitHub, and in the `number` field in the response from the `GET /repos/{owner}/{repo}/code-scanning/alerts` operation. */ - "alert-number": components["schemas"]["alert-number"]; - /** @description The SHA of the commit. */ - "commit-sha": string; - /** @description The commit reference. Can be a commit SHA, branch name (`heads/BRANCH_NAME`), or tag name (`tags/TAG_NAME`). For more information, see "[Git References](https://git-scm.com/book/en/v2/Git-Internals-Git-References)" in the Git documentation. */ - "commit-ref": string; - /** @description A comma-separated list of full manifest paths. If specified, only alerts for these manifests will be returned. */ - "dependabot-alert-comma-separated-manifests"?: string; - /** - * @description The number that identifies a Dependabot alert in its repository. - * You can find this at the end of the URL for a Dependabot alert within GitHub, - * or in `number` fields in the response from the - * `GET /repos/{owner}/{repo}/dependabot/alerts` operation. - */ - "dependabot-alert-number": components["schemas"]["alert-number"]; - /** @description The full path, relative to the repository root, of the dependency manifest file. */ - "manifest-path"?: string; - /** @description deployment_id parameter */ - "deployment-id": number; - /** @description The name of the environment. The name must be URL encoded. For example, any slashes in the name must be replaced with `%2F`. */ - "environment-name": string; - /** @description The unique identifier of the branch policy. */ - "branch-policy-id": number; - /** @description The unique identifier of the protection rule. */ - "protection-rule-id": number; - /** - * @description The Git reference. For more information, see "[Git References](https://git-scm.com/book/en/v2/Git-Internals-Git-References)" in the Git documentation. - * @example heads/feature-a - */ - "git-ref-only": string; - /** @description A user ID. Only return users with an ID greater than this ID. */ - "since-user"?: number; - /** @description The number that identifies the issue. */ - "issue-number": number; - /** @description The unique identifier of the key. */ - "key-id": number; - /** @description The number that identifies the milestone. */ - "milestone-number": number; - /** @description The ID of the Pages deployment. You can also give the commit SHA of the deployment. */ - "pages-deployment-id": number | string; - /** @description The number that identifies the pull request. */ - "pull-number": number; - /** @description The unique identifier of the review. */ - "review-id": number; - /** @description The unique identifier of the asset. */ - "asset-id": number; - /** @description The unique identifier of the release. */ - "release-id": number; - /** @description The unique identifier of the tag protection. */ - "tag-protection-id": number; - /** @description The time frame to display results for. */ - per?: "day" | "week"; - /** @description A repository ID. Only return repositories with an ID greater than this ID. */ - "since-repo"?: number; - /** @description Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`. */ - order?: "desc" | "asc"; - /** - * @description Set to `true` to use advanced search. - * Example: `http://api.github.com/search/issues?q={query}&advanced_search=true` - */ - "issues-advanced-search"?: string; - /** @description The unique identifier of the team. */ - "team-id": number; - /** @description ID of the Repository to filter on */ - "repository-id-in-query"?: number; - /** @description The ID of the export operation, or `latest`. Currently only `latest` is currently supported. */ - "export-id": string; - /** @description The unique identifier of the GPG key. */ - "gpg-key-id": number; - /** @description Only show repositories updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ - "since-repo-date"?: string; - /** @description Only show repositories updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ - "before-repo-date"?: string; - /** @description The unique identifier of the SSH signing key. */ - "ssh-signing-key-id": number; - /** @description The property to sort the results by. `created` means when the repository was starred. `updated` means when the repository was last pushed to. */ - "sort-starred"?: "created" | "updated"; - }; - requestBodies: never; - headers: { - /** @example ; rel="next", ; rel="last" */ - link: string; - /** @example text/html */ - "content-type": string; - /** @example 0.17.4 */ - "x-common-marker-version": string; - /** @example 5000 */ - "x-rate-limit-limit": number; - /** @example 4999 */ - "x-rate-limit-remaining": number; - /** @example 1590701888 */ - "x-rate-limit-reset": number; - /** @example https://pipelines.actions.githubusercontent.com/OhgS4QRKqmgx7bKC27GKU83jnQjyeqG8oIMTge8eqtheppcmw8/_apis/pipelines/1/runs/176/signedlogcontent?urlExpires=2020-01-24T18%3A10%3A31.5729946Z&urlSigningMethod=HMACV1&urlSignature=agG73JakPYkHrh06seAkvmH7rBR4Ji4c2%2B6a2ejYh3E%3D */ - location: string; - }; - pathItems: never; -} - -export type $defs = Record; - -export type external = Record; - -export interface operations { - /** - * GitHub API Root - * @description Get Hypermedia links to resources accessible in GitHub's REST API - */ - "meta/root": { - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["root"]; - }; - }; - }; - }; - /** - * List global security advisories - * @description Lists all global security advisories that match the specified parameters. If no other parameters are defined, the request will return only GitHub-reviewed advisories that are not malware. - * - * By default, all responses will exclude advisories for malware, because malware are not standard vulnerabilities. To list advisories for malware, you must include the `type` parameter in your request, with the value `malware`. For more information about the different types of security advisories, see "[About the GitHub Advisory database](https://docs.github.com/code-security/security-advisories/global-security-advisories/about-the-github-advisory-database#about-types-of-security-advisories)." - */ - "security-advisories/list-global-advisories": { - parameters: { - query?: { - /** @description If specified, only advisories with this GHSA (GitHub Security Advisory) identifier will be returned. */ - ghsa_id?: string; - /** @description If specified, only advisories of this type will be returned. By default, a request with no other parameters defined will only return reviewed advisories that are not malware. */ - type?: "reviewed" | "malware" | "unreviewed"; - /** @description If specified, only advisories with this CVE (Common Vulnerabilities and Exposures) identifier will be returned. */ - cve_id?: string; - /** @description If specified, only advisories for these ecosystems will be returned. */ - ecosystem?: components["schemas"]["security-advisory-ecosystems"]; - /** @description If specified, only advisories with these severities will be returned. */ - severity?: "unknown" | "low" | "medium" | "high" | "critical"; - /** - * @description If specified, only advisories with these Common Weakness Enumerations (CWEs) will be returned. - * - * Example: `cwes=79,284,22` or `cwes[]=79&cwes[]=284&cwes[]=22` - */ - cwes?: string | string[]; - /** @description Whether to only return advisories that have been withdrawn. */ - is_withdrawn?: boolean; - /** - * @description If specified, only return advisories that affect any of `package` or `package@version`. A maximum of 1000 packages can be specified. - * If the query parameter causes the URL to exceed the maximum URL length supported by your client, you must specify fewer packages. - * - * Example: `affects=package1,package2@1.0.0,package3@2.0.0` or `affects[]=package1&affects[]=package2@1.0.0` - */ - affects?: string | string[]; - /** - * @description If specified, only return advisories that were published on a date or date range. - * - * For more information on the syntax of the date range, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)." - */ - published?: string; - /** - * @description If specified, only return advisories that were updated on a date or date range. - * - * For more information on the syntax of the date range, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)." - */ - updated?: string; - /** - * @description If specified, only show advisories that were updated or published on a date or date range. - * - * For more information on the syntax of the date range, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)." - */ - modified?: string; - /** - * @description If specified, only return advisories that have an EPSS percentage score that matches the provided value. - * The EPSS percentage represents the likelihood of a CVE being exploited. - */ - epss_percentage?: string; - /** - * @description If specified, only return advisories that have an EPSS percentile score that matches the provided value. - * The EPSS percentile represents the relative rank of the CVE's likelihood of being exploited compared to other CVEs. - */ - epss_percentile?: string; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - direction?: components["parameters"]["direction"]; - /** @description The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - per_page?: number; - /** @description The property to sort the results by. */ - sort?: "updated" | "published" | "epss_percentage" | "epss_percentile"; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["global-advisory"][]; - }; - }; - 422: components["responses"]["validation_failed_simple"]; - /** @description Too many requests */ - 429: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - }; - /** - * Get a global security advisory - * @description Gets a global security advisory using its GitHub Security Advisory (GHSA) identifier. - */ - "security-advisories/get-global-advisory": { - parameters: { - path: { - ghsa_id: components["parameters"]["ghsa_id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["global-advisory"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get the authenticated app - * @description Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations for the authenticated app](https://docs.github.com/rest/apps/apps#list-installations-for-the-authenticated-app)" endpoint. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/get-authenticated": { - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["integration"]; - }; - }; - }; - }; - /** - * Create a GitHub App from a manifest - * @description Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`. - */ - "apps/create-from-manifest": { - parameters: { - path: { - code: string; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["integration"] & { - client_id: string; - client_secret: string; - webhook_secret: string | null; - pem: string; - [key: string]: unknown; - }; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Get a webhook configuration for an app - * @description Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/get-webhook-config-for-app": { - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["webhook-config"]; - }; - }; - }; - }; - /** - * Update a webhook configuration for an app - * @description Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/update-webhook-config-for-app": { - requestBody: { - content: { - "application/json": { - url?: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["webhook-config"]; - }; - }; - }; - }; - /** - * List deliveries for an app webhook - * @description Returns a list of webhook deliveries for the webhook configured for a GitHub App. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/list-webhook-deliveries": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - cursor?: components["parameters"]["cursor"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["hook-delivery-item"][]; - }; - }; - 400: components["responses"]["bad_request"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a delivery for an app webhook - * @description Returns a delivery for the webhook configured for a GitHub App. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/get-webhook-delivery": { - parameters: { - path: { - delivery_id: components["parameters"]["delivery-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["hook-delivery"]; - }; - }; - 400: components["responses"]["bad_request"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Redeliver a delivery for an app webhook - * @description Redeliver a delivery for the webhook configured for a GitHub App. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/redeliver-webhook-delivery": { - parameters: { - path: { - delivery_id: components["parameters"]["delivery-id"]; - }; - }; - responses: { - 202: components["responses"]["accepted"]; - 400: components["responses"]["bad_request"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List installation requests for the authenticated app - * @description Lists all the pending installation requests for the authenticated GitHub App. - */ - "apps/list-installation-requests-for-authenticated-app": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description List of integration installation requests */ - 200: { - content: { - "application/json": components["schemas"]["integration-installation-request"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - }; - }; - /** - * List installations for the authenticated app - * @description You must use a [JWT](https://docs.github.com/enterprise-server@3.9/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - * - * The permissions the installation has are included under the `permissions` key. - */ - "apps/list-installations": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - since?: components["parameters"]["since"]; - outdated?: string; - }; - }; - responses: { - /** @description The permissions the installation has are included under the `permissions` key. */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - /** - * @description The ID of the installation. - * @example 1 - */ - id: number; - account: - | ({ - name?: string | null; - email?: string | null; - /** @example octocat */ - login: string; - /** @example 1 */ - id: number; - /** @example MDQ6VXNlcjE= */ - node_id: string; - /** - * Format: uri - * @example https://github.com/images/error/octocat_happy.gif - */ - avatar_url: string; - /** @example 41d064eb2195891e12d0413f63227ea7 */ - gravatar_id: string | null; - /** - * Format: uri - * @example https://api.github.com/users/octocat - */ - url: string; - /** - * Format: uri - * @example https://github.com/octocat - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/followers - */ - followers_url: string; - /** @example https://api.github.com/users/octocat/following{/other_user} */ - following_url: string; - /** @example https://api.github.com/users/octocat/gists{/gist_id} */ - gists_url: string; - /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */ - starred_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/subscriptions - */ - subscriptions_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/orgs - */ - organizations_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/repos - */ - repos_url: string; - /** @example https://api.github.com/users/octocat/events{/privacy} */ - events_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/received_events - */ - received_events_url: string; - /** @example User */ - type: string; - site_admin: boolean; - /** @example "2020-07-09T00:17:55Z" */ - starred_at?: string; - } & { - /** @description A short description of the enterprise. */ - description?: string | null; - /** - * Format: uri - * @example https://github.com/enterprises/octo-business - */ - html_url: string; - /** - * Format: uri - * @description The enterprise's website URL. - */ - website_url?: string | null; - /** - * @description Unique identifier of the enterprise - * @example 42 - */ - id: number; - /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ - node_id: string; - /** - * @description The name of the enterprise. - * @example Octo Business - */ - name: string; - /** - * @description The slug url identifier for the enterprise. - * @example octo-business - */ - slug: string; - /** - * Format: date-time - * @example 2019-01-26T19:01:12Z - */ - created_at: string | null; - /** - * Format: date-time - * @example 2019-01-26T19:14:43Z - */ - updated_at: string | null; - /** Format: uri */ - avatar_url: string; - }) - | null; - /** - * @description Describe whether all repositories have been selected or there's a selection involved - * @enum {string} - */ - repository_selection: "all" | "selected"; - /** - * Format: uri - * @example https://api.github.com/installations/1/access_tokens - */ - access_tokens_url: string; - /** - * Format: uri - * @example https://api.github.com/installation/repositories - */ - repositories_url: string; - /** - * Format: uri - * @example https://github.com/organizations/github/settings/installations/1 - */ - html_url: string; - /** @example 1 */ - app_id: number; - /** @description The ID of the user or organization this token is being scoped to. */ - target_id: number; - /** @example Organization */ - target_type: string; - /** - * App Permissions - * @description The permissions granted to the user access token. - * @example { - * "contents": "read", - * "issues": "read", - * "deployments": "write", - * "single_file": "read" - * } - */ - permissions: { - /** - * @description The level of permission to grant the access token for GitHub Actions workflows, workflow runs, and artifacts. - * @enum {string} - */ - actions?: "read" | "write"; - /** - * @description The level of permission to grant the access token for repository creation, deletion, settings, teams, and collaborators creation. - * @enum {string} - */ - administration?: "read" | "write"; - /** - * @description The level of permission to grant the access token for checks on code. - * @enum {string} - */ - checks?: "read" | "write"; - /** - * @description The level of permission to grant the access token for repository contents, commits, branches, downloads, releases, and merges. - * @enum {string} - */ - contents?: "read" | "write"; - /** - * @description The level of permission to grant the access token for deployments and deployment statuses. - * @enum {string} - */ - deployments?: "read" | "write"; - /** - * @description The level of permission to grant the access token for managing repository environments. - * @enum {string} - */ - environments?: "read" | "write"; - /** - * @description The level of permission to grant the access token for issues and related comments, assignees, labels, and milestones. - * @enum {string} - */ - issues?: "read" | "write"; - /** - * @description The level of permission to grant the access token to search repositories, list collaborators, and access repository metadata. - * @enum {string} - */ - metadata?: "read" | "write"; - /** - * @description The level of permission to grant the access token for packages published to GitHub Packages. - * @enum {string} - */ - packages?: "read" | "write"; - /** - * @description The level of permission to grant the access token to retrieve Pages statuses, configuration, and builds, as well as create new builds. - * @enum {string} - */ - pages?: "read" | "write"; - /** - * @description The level of permission to grant the access token for pull requests and related comments, assignees, labels, milestones, and merges. - * @enum {string} - */ - pull_requests?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage the post-receive hooks for a repository. - * @enum {string} - */ - repository_hooks?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage repository projects, columns, and cards. - * @enum {string} - */ - repository_projects?: "read" | "write" | "admin"; - /** - * @description The level of permission to grant the access token to view and manage secret scanning alerts. - * @enum {string} - */ - secret_scanning_alerts?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage repository secrets. - * @enum {string} - */ - secrets?: "read" | "write"; - /** - * @description The level of permission to grant the access token to view and manage security events like code scanning alerts. - * @enum {string} - */ - security_events?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage just a single file. - * @enum {string} - */ - single_file?: "read" | "write"; - /** - * @description The level of permission to grant the access token for commit statuses. - * @enum {string} - */ - statuses?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage Dependabot alerts. - * @enum {string} - */ - vulnerability_alerts?: "read" | "write"; - /** - * @description The level of permission to grant the access token to update GitHub Actions workflow files. - * @enum {string} - */ - workflows?: "write"; - /** - * @description The level of permission to grant the access token for organization teams and members. - * @enum {string} - */ - members?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage access to an organization. - * @enum {string} - */ - organization_administration?: "read" | "write"; - /** - * @description The level of permission to grant the access token for custom repository roles management. This property is in beta and is subject to change. - * @enum {string} - */ - organization_custom_roles?: "read" | "write"; - /** - * @description The level of permission to grant the access token to view and manage announcement banners for an organization. - * @enum {string} - */ - organization_announcement_banners?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage the post-receive hooks for an organization. - * @enum {string} - */ - organization_hooks?: "read" | "write"; - /** - * @description The level of permission to grant the access token for viewing and managing fine-grained personal access token requests to an organization. - * @enum {string} - */ - organization_personal_access_tokens?: "read" | "write"; - /** - * @description The level of permission to grant the access token for viewing and managing fine-grained personal access tokens that have been approved by an organization. - * @enum {string} - */ - organization_personal_access_token_requests?: "read" | "write"; - /** - * @description The level of permission to grant the access token for viewing an organization's plan. - * @enum {string} - */ - organization_plan?: "read"; - /** - * @description The level of permission to grant the access token to manage organization projects and projects beta (where available). - * @enum {string} - */ - organization_projects?: "read" | "write" | "admin"; - /** - * @description The level of permission to grant the access token for organization packages published to GitHub Packages. - * @enum {string} - */ - organization_packages?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage organization secrets. - * @enum {string} - */ - organization_secrets?: "read" | "write"; - /** - * @description The level of permission to grant the access token to view and manage GitHub Actions self-hosted runners available to an organization. - * @enum {string} - */ - organization_self_hosted_runners?: "read" | "write"; - /** - * @description The level of permission to grant the access token to view and manage users blocked by the organization. - * @enum {string} - */ - organization_user_blocking?: "read" | "write"; - /** - * @description The level of permission to grant the access token to manage team discussions and related comments. - * @enum {string} - */ - team_discussions?: "read" | "write"; - }; - events: string[]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** @example config.yaml */ - single_file_name: string | null; - /** @example true */ - has_multiple_single_files?: boolean; - /** - * @example [ - * "config.yml", - * ".github/issue_TEMPLATE.md" - * ] - */ - single_file_paths?: string[]; - /** @example github-actions */ - app_slug: string; - /** - * Simple User - * @description A GitHub user. - */ - suspended_by: { - name?: string | null; - email?: string | null; - /** @example octocat */ - login: string; - /** @example 1 */ - id: number; - /** @example MDQ6VXNlcjE= */ - node_id: string; - /** - * Format: uri - * @example https://github.com/images/error/octocat_happy.gif - */ - avatar_url: string; - /** @example 41d064eb2195891e12d0413f63227ea7 */ - gravatar_id: string | null; - /** - * Format: uri - * @example https://api.github.com/users/octocat - */ - url: string; - /** - * Format: uri - * @example https://github.com/octocat - */ - html_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/followers - */ - followers_url: string; - /** @example https://api.github.com/users/octocat/following{/other_user} */ - following_url: string; - /** @example https://api.github.com/users/octocat/gists{/gist_id} */ - gists_url: string; - /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */ - starred_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/subscriptions - */ - subscriptions_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/orgs - */ - organizations_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/repos - */ - repos_url: string; - /** @example https://api.github.com/users/octocat/events{/privacy} */ - events_url: string; - /** - * Format: uri - * @example https://api.github.com/users/octocat/received_events - */ - received_events_url: string; - /** @example User */ - type: string; - site_admin: boolean; - /** @example "2020-07-09T00:17:55Z" */ - starred_at?: string; - } | null; - /** Format: date-time */ - suspended_at: string | null; - /** @example "test_13f1e99741e3e004@d7e1eb0bc0a1ba12.com" */ - contact_email?: string | null; - }[]; - }; - }; - }; - }; - /** - * Get an installation for the authenticated app - * @description Enables an authenticated GitHub App to find an installation's information using the installation id. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/get-installation": { - parameters: { - path: { - installation_id: components["parameters"]["installation-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["installation"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete an installation for the authenticated app - * @description Uninstalls a GitHub App on a user, organization, or enterprise account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the "[Suspend an app installation](https://docs.github.com/rest/apps/apps#suspend-an-app-installation)" endpoint. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/delete-installation": { - parameters: { - path: { - installation_id: components["parameters"]["installation-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create an installation access token for an app - * @description Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access. - * - * Optionally, you can use the `repositories` or `repository_ids` body parameters to specify individual repositories that the installation access token can access. If you don't use `repositories` or `repository_ids` to grant access to specific repositories, the installation access token will have access to all repositories that the installation was granted access to. The installation access token cannot be granted access to repositories that the installation was not granted access to. Up to 500 repositories can be listed in this manner. - * - * Optionally, use the `permissions` body parameter to specify the permissions that the installation access token should have. If `permissions` is not specified, the installation access token will have all of the permissions that were granted to the app. The installation access token cannot be granted permissions that the app was not granted. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/create-installation-access-token": { - parameters: { - path: { - installation_id: components["parameters"]["installation-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description List of repository names that the token should have access to */ - repositories?: string[]; - /** - * @description List of repository IDs that the token should have access to - * @example [ - * 1 - * ] - */ - repository_ids?: number[]; - permissions?: components["schemas"]["app-permissions"]; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["installation-token"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Suspend an app installation - * @description Suspends a GitHub App on a user, organization, or enterprise account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/suspend-installation": { - parameters: { - path: { - installation_id: components["parameters"]["installation-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Unsuspend an app installation - * @description Removes a GitHub App installation suspension. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/unsuspend-installation": { - parameters: { - path: { - installation_id: components["parameters"]["installation-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete an app authorization - * @description OAuth and GitHub application owners can revoke a grant for their application and a specific user. You must provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted. - * Deleting an application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). - */ - "apps/delete-authorization": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The OAuth access token used to authenticate to the GitHub API. */ - access_token: string; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Check a token - * @description OAuth applications and GitHub applications with OAuth authorizations can use this API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. Invalid tokens will return `404 NOT FOUND`. - */ - "apps/check-token": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The access_token of the OAuth or GitHub application. */ - access_token: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["authorization"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Delete an app token - * @description OAuth or GitHub application owners can revoke a single token for an OAuth application or a GitHub application with an OAuth authorization. - */ - "apps/delete-token": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The OAuth access token used to authenticate to the GitHub API. */ - access_token: string; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Reset a token - * @description OAuth applications and GitHub applications with OAuth authorizations can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. Invalid tokens will return `404 NOT FOUND`. - */ - "apps/reset-token": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The access_token of the OAuth or GitHub application. */ - access_token: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["authorization"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Create a scoped access token - * @description Use a non-scoped user access token to create a repository-scoped and/or permission-scoped user access token. You can specify - * which repositories the token can access and which permissions are granted to the - * token. - * - * Invalid tokens will return `404 NOT FOUND`. - */ - "apps/scope-token": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The access token used to authenticate to the GitHub API. - * @example e72e16c7e42f292c6912e7710c838347ae178b4a - */ - access_token: string; - /** - * @description The name of the user or organization to scope the user access token to. **Required** unless `target_id` is specified. - * @example octocat - */ - target?: string; - /** - * @description The ID of the user or organization to scope the user access token to. **Required** unless `target` is specified. - * @example 1 - */ - target_id?: number; - /** @description The list of repository names to scope the user access token to. `repositories` may not be specified if `repository_ids` is specified. */ - repositories?: string[]; - /** - * @description The list of repository IDs to scope the user access token to. `repository_ids` may not be specified if `repositories` is specified. - * @example [ - * 1 - * ] - */ - repository_ids?: number[]; - permissions?: components["schemas"]["app-permissions"]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["authorization"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get an app - * @description > [!NOTE] - * > The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`). - */ - "apps/get-by-slug": { - parameters: { - path: { - app_slug: components["parameters"]["app-slug"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["integration"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get an assignment - * @description Gets a GitHub Classroom assignment. Assignment will only be returned if the current user is an administrator of the GitHub Classroom for the assignment. - */ - "classroom/get-an-assignment": { - parameters: { - path: { - assignment_id: components["parameters"]["assignment-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["classroom-assignment"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List accepted assignments for an assignment - * @description Lists any assignment repositories that have been created by students accepting a GitHub Classroom assignment. Accepted assignments will only be returned if the current user is an administrator of the GitHub Classroom for the assignment. - */ - "classroom/list-accepted-assignments-for-an-assignment": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - assignment_id: components["parameters"]["assignment-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["classroom-accepted-assignment"][]; - }; - }; - }; - }; - /** - * Get assignment grades - * @description Gets grades for a GitHub Classroom assignment. Grades will only be returned if the current user is an administrator of the GitHub Classroom for the assignment. - */ - "classroom/get-assignment-grades": { - parameters: { - path: { - assignment_id: components["parameters"]["assignment-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["classroom-assignment-grade"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List classrooms - * @description Lists GitHub Classroom classrooms for the current user. Classrooms will only be returned if the current user is an administrator of one or more GitHub Classrooms. - */ - "classroom/list-classrooms": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["simple-classroom"][]; - }; - }; - }; - }; - /** - * Get a classroom - * @description Gets a GitHub Classroom classroom for the current user. Classroom will only be returned if the current user is an administrator of the GitHub Classroom. - */ - "classroom/get-a-classroom": { - parameters: { - path: { - classroom_id: components["parameters"]["classroom-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["classroom"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List assignments for a classroom - * @description Lists GitHub Classroom assignments for a classroom. Assignments will only be returned if the current user is an administrator of the GitHub Classroom. - */ - "classroom/list-assignments-for-a-classroom": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - classroom_id: components["parameters"]["classroom-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["simple-classroom-assignment"][]; - }; - }; - }; - }; - /** - * Get all codes of conduct - * @description Returns array of all GitHub's codes of conduct. - */ - "codes-of-conduct/get-all-codes-of-conduct": { - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-of-conduct"][]; - }; - }; - 304: components["responses"]["not_modified"]; - }; - }; - /** - * Get a code of conduct - * @description Returns information about the specified GitHub code of conduct. - */ - "codes-of-conduct/get-conduct-code": { - parameters: { - path: { - key: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-of-conduct"]; - }; - }; - 304: components["responses"]["not_modified"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Revoke a list of credentials - * @description Submit a list of credentials to be revoked. This endpoint is intended to revoke credentials the caller does not own and may have found exposed on GitHub.com or elsewhere. It can also be used for credentials associated with an old user account that you no longer have access to. Credential owners will be notified of the revocation. - * - * This endpoint currently accepts the following credential types: - * - Personal access tokens (classic) - * - Fine-grained personal access tokens - * - * Revoked credentials may impact users on GitHub Free, Pro, & Team and GitHub Enterprise Cloud, and GitHub Enterprise Cloud with Enterprise Managed Users. - * GitHub cannot reactivate any credentials that have been revoked; new credentials will need to be generated. - * - * To prevent abuse, this API is limited to only 60 unauthenticated requests per hour and a max of 1000 tokens per API request. - * - * > [!NOTE] - * > Any authenticated requests will return a 403. - */ - "credentials/revoke": { - requestBody: { - content: { - "application/json": { - /** @description A list of credentials to be revoked, up to 1000 per request. */ - credentials: string[]; - }; - }; - }; - responses: { - 202: components["responses"]["accepted"]; - 422: components["responses"]["validation_failed_simple"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get emojis - * @description Lists all the emojis available to use on GitHub. - */ - "emojis/get": { - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - [key: string]: string; - }; - }; - }; - 304: components["responses"]["not_modified"]; - }; - }; - /** - * Get code security configurations for an enterprise - * @description Lists all code security configurations available in an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:enterprise` scope to use this endpoint. - */ - "code-security/get-configurations-for-enterprise": { - parameters: { - query?: { - /** @description The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - per_page?: number; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - }; - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-security-configuration"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a code security configuration for an enterprise - * @description Creates a code security configuration in an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - "code-security/create-configuration-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the code security configuration. Must be unique within the enterprise. */ - name: string; - /** @description A description of the code security configuration */ - description: string; - /** - * @description The enablement status of GitHub Advanced Security features. `enabled` will enable both Code Security and Secret Protection features. - * - * > [!WARNING] - * > `code_security` and `secret_protection` are deprecated values for this field. Prefer the individual `code_security` and `secret_protection` fields to set the status of these features. - * - * @default disabled - * @enum {string} - */ - advanced_security?: - | "enabled" - | "disabled" - | "code_security" - | "secret_protection"; - /** - * @description The enablement status of GitHub Code Security features. - * @enum {string} - */ - code_security?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Dependency Graph - * @default enabled - * @enum {string} - */ - dependency_graph?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Automatic dependency submission - * @default disabled - * @enum {string} - */ - dependency_graph_autosubmit_action?: - | "enabled" - | "disabled" - | "not_set"; - /** @description Feature options for Automatic dependency submission */ - dependency_graph_autosubmit_action_options?: { - /** - * @description Whether to use runners labeled with 'dependency-submission' or standard GitHub runners. - * @default false - */ - labeled_runners?: boolean; - }; - /** - * @description The enablement status of Dependabot alerts - * @default disabled - * @enum {string} - */ - dependabot_alerts?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Dependabot security updates - * @default disabled - * @enum {string} - */ - dependabot_security_updates?: "enabled" | "disabled" | "not_set"; - code_scanning_options?: components["schemas"]["code-scanning-options"]; - /** - * @description The enablement status of code scanning default setup - * @default disabled - * @enum {string} - */ - code_scanning_default_setup?: "enabled" | "disabled" | "not_set"; - code_scanning_default_setup_options?: components["schemas"]["code-scanning-default-setup-options"]; - /** - * @description The enablement status of code scanning delegated alert dismissal - * @default disabled - * @enum {string} - */ - code_scanning_delegated_alert_dismissal?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of GitHub Secret Protection features. - * @enum {string} - */ - secret_protection?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning - * @default disabled - * @enum {string} - */ - secret_scanning?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning push protection - * @default disabled - * @enum {string} - */ - secret_scanning_push_protection?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning validity checks - * @default disabled - * @enum {string} - */ - secret_scanning_validity_checks?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning non provider patterns - * @default disabled - * @enum {string} - */ - secret_scanning_non_provider_patterns?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of Copilot secret scanning - * @default disabled - * @enum {string} - */ - secret_scanning_generic_secrets?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning delegated alert dismissal - * @default disabled - * @enum {string} - */ - secret_scanning_delegated_alert_dismissal?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of private vulnerability reporting - * @default disabled - * @enum {string} - */ - private_vulnerability_reporting?: "enabled" | "disabled" | "not_set"; - /** - * @description The enforcement status for a security configuration - * @default enforced - * @enum {string} - */ - enforcement?: "enforced" | "unenforced"; - }; - }; - }; - responses: { - /** @description Successfully created code security configuration */ - 201: { - content: { - "application/json": components["schemas"]["code-security-configuration"]; - }; - }; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get default code security configurations for an enterprise - * @description Lists the default code security configurations for an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:enterprise` scope to use this endpoint. - */ - "code-security/get-default-configurations-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-security-default-configurations"]; - }; - }; - }; - }; - /** - * Retrieve a code security configuration of an enterprise - * @description Gets a code security configuration available in an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:enterprise` scope to use this endpoint. - */ - "code-security/get-single-configuration-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - configuration_id: components["parameters"]["configuration-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-security-configuration"]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a code security configuration for an enterprise - * @description Deletes a code security configuration from an enterprise. - * Repositories attached to the configuration will retain their settings but will no longer be associated with - * the configuration. - * - * The authenticated user must be an administrator for the enterprise to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - "code-security/delete-configuration-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - configuration_id: components["parameters"]["configuration-id"]; - }; - }; - responses: { - 204: components["responses"]["no_content"]; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - }; - }; - /** - * Update a custom code security configuration for an enterprise - * @description Updates a code security configuration in an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - "code-security/update-enterprise-configuration": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - configuration_id: components["parameters"]["configuration-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the code security configuration. Must be unique across the enterprise. */ - name?: string; - /** @description A description of the code security configuration */ - description?: string; - /** - * @description The enablement status of GitHub Advanced Security features. `enabled` will enable both Code Security and Secret Protection features. - * - * > [!WARNING] - * > `code_security` and `secret_protection` are deprecated values for this field. Prefer the individual `code_security` and `secret_protection` fields to set the status of these features. - * - * @enum {string} - */ - advanced_security?: - | "enabled" - | "disabled" - | "code_security" - | "secret_protection"; - /** - * @description The enablement status of GitHub Code Security features. - * @enum {string} - */ - code_security?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Dependency Graph - * @enum {string} - */ - dependency_graph?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Automatic dependency submission - * @enum {string} - */ - dependency_graph_autosubmit_action?: - | "enabled" - | "disabled" - | "not_set"; - /** @description Feature options for Automatic dependency submission */ - dependency_graph_autosubmit_action_options?: { - /** @description Whether to use runners labeled with 'dependency-submission' or standard GitHub runners. */ - labeled_runners?: boolean; - }; - /** - * @description The enablement status of Dependabot alerts - * @enum {string} - */ - dependabot_alerts?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Dependabot security updates - * @enum {string} - */ - dependabot_security_updates?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of code scanning default setup - * @enum {string} - */ - code_scanning_default_setup?: "enabled" | "disabled" | "not_set"; - code_scanning_default_setup_options?: components["schemas"]["code-scanning-default-setup-options"]; - /** - * @description The enablement status of code scanning delegated alert dismissal - * @default disabled - * @enum {string} - */ - code_scanning_delegated_alert_dismissal?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of GitHub Secret Protection features. - * @enum {string} - */ - secret_protection?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning - * @enum {string} - */ - secret_scanning?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning push protection - * @enum {string} - */ - secret_scanning_push_protection?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning validity checks - * @enum {string} - */ - secret_scanning_validity_checks?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning non-provider patterns - * @enum {string} - */ - secret_scanning_non_provider_patterns?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of Copilot secret scanning - * @default disabled - * @enum {string} - */ - secret_scanning_generic_secrets?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning delegated alert dismissal - * @default disabled - * @enum {string} - */ - secret_scanning_delegated_alert_dismissal?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of private vulnerability reporting - * @enum {string} - */ - private_vulnerability_reporting?: "enabled" | "disabled" | "not_set"; - /** - * @description The enforcement status for a security configuration - * @enum {string} - */ - enforcement?: "enforced" | "unenforced"; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-security-configuration"]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - }; - }; - /** - * Attach an enterprise configuration to repositories - * @description Attaches an enterprise code security configuration to repositories. If the repositories specified are already attached to a configuration, they will be re-attached to the provided configuration. - * - * If insufficient GHAS licenses are available to attach the configuration to a repository, only free features will be enabled. - * - * The authenticated user must be an administrator for the enterprise to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - "code-security/attach-enterprise-configuration": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - configuration_id: components["parameters"]["configuration-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The type of repositories to attach the configuration to. - * @enum {string} - */ - scope: "all" | "all_without_configurations"; - }; - }; - }; - responses: { - 202: components["responses"]["accepted"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - }; - }; - /** - * Set a code security configuration as a default for an enterprise - * @description Sets a code security configuration as a default to be applied to new repositories in your enterprise. - * - * This configuration will be applied by default to the matching repository type when created, but only for organizations within the enterprise that do not already have a default code security configuration set. - * - * The authenticated user must be an administrator for the enterprise to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - "code-security/set-configuration-as-default-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - configuration_id: components["parameters"]["configuration-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description Specify which types of repository this security configuration should be applied to by default. - * @enum {string} - */ - default_for_new_repos?: - | "all" - | "none" - | "private_and_internal" - | "public"; - }; - }; - }; - responses: { - /** @description Default successfully changed. */ - 200: { - content: { - "application/json": { - /** - * @description Specifies which types of repository this security configuration is applied to by default. - * @enum {string} - */ - default_for_new_repos?: - | "all" - | "none" - | "private_and_internal" - | "public"; - configuration?: components["schemas"]["code-security-configuration"]; - }; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get repositories associated with an enterprise code security configuration - * @description Lists the repositories associated with an enterprise code security configuration in an organization. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:enterprise` scope to use this endpoint. - */ - "code-security/get-repositories-for-enterprise-configuration": { - parameters: { - query?: { - /** @description The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - per_page?: number; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - /** - * @description A comma-separated list of statuses. If specified, only repositories with these attachment statuses will be returned. - * - * Can be: `all`, `attached`, `attaching`, `removed`, `enforced`, `failed`, `updating`, `removed_by_enterprise` - */ - status?: string; - }; - path: { - enterprise: components["parameters"]["enterprise"]; - configuration_id: components["parameters"]["configuration-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-security-configuration-repositories"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List Dependabot alerts for an enterprise - * @description Lists Dependabot alerts for repositories that are owned by the specified enterprise. - * - * The authenticated user must be a member of the enterprise to use this endpoint. - * - * Alerts are only returned for organizations in the enterprise for which you are an organization owner or a security manager. For more information about security managers, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. - */ - "dependabot/list-alerts-for-enterprise": { - parameters: { - query?: { - state?: components["parameters"]["dependabot-alert-comma-separated-states"]; - severity?: components["parameters"]["dependabot-alert-comma-separated-severities"]; - ecosystem?: components["parameters"]["dependabot-alert-comma-separated-ecosystems"]; - package?: components["parameters"]["dependabot-alert-comma-separated-packages"]; - epss_percentage?: components["parameters"]["dependabot-alert-comma-separated-epss"]; - has?: components["parameters"]["dependabot-alert-comma-separated-has"]; - scope?: components["parameters"]["dependabot-alert-scope"]; - sort?: components["parameters"]["dependabot-alert-sort"]; - direction?: components["parameters"]["direction"]; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["dependabot-alert-with-repository"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List enterprise teams - * @description List all teams in the enterprise for the authenticated user - */ - "enterprise-teams/list": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["enterprise-team"][]; - }; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Create an enterprise team - * @description To create an enterprise team, the authenticated user must be an owner of the enterprise. - */ - "enterprise-teams/create": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the team. */ - name: string; - /** @description A description of the team. */ - description?: string | null; - /** - * @description Retired: this field is no longer supported. - * Whether the enterprise team should be reflected in each organization. - * This value cannot be set. - * - * @default disabled - * @enum {string} - */ - sync_to_organizations?: "all" | "disabled"; - /** - * @description Specifies which organizations in the enterprise should have access to this team. Can be one of `disabled`, `selected`, or `all`. - * `disabled`: The team is not assigned to any organizations. This is the default when you create a new team. - * `selected`: The team is assigned to specific organizations. You can then use the [add organization assignments API](https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#add-organization-assignments) endpoint. - * `all`: The team is assigned to all current and future organizations in the enterprise. - * - * @default disabled - * @enum {string} - */ - organization_selection_type?: "disabled" | "selected" | "all"; - /** @description The ID of the IdP group to assign team membership with. You can get this value from the [REST API endpoints for SCIM](https://docs.github.com/rest/scim#list-provisioned-scim-groups-for-an-enterprise). */ - group_id?: string | null; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["enterprise-team"]; - }; - }; - }; - }; - /** - * List members in an enterprise team - * @description Lists all team members in an enterprise team. - */ - "enterprise-team-memberships/list": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - enterprise: components["parameters"]["enterprise"]; - "enterprise-team": components["parameters"]["enterprise-team"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - }; - /** - * Bulk add team members - * @description Add multiple team members to an enterprise team. - */ - "enterprise-team-memberships/bulk-add": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - "enterprise-team": components["parameters"]["enterprise-team"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The GitHub user handles to add to the team. */ - usernames: string[]; - }; - }; - }; - responses: { - /** @description Successfully added team members. */ - 200: { - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - }; - /** - * Bulk remove team members - * @description Remove multiple team members from an enterprise team. - */ - "enterprise-team-memberships/bulk-remove": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - "enterprise-team": components["parameters"]["enterprise-team"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The GitHub user handles to be removed from the team. */ - usernames: string[]; - }; - }; - }; - responses: { - /** @description Successfully removed team members. */ - 200: { - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - }; - /** - * Get enterprise team membership - * @description Returns whether the user is a member of the enterprise team. - */ - "enterprise-team-memberships/get": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - "enterprise-team": components["parameters"]["enterprise-team"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description User is a member of the enterprise team. */ - 200: { - content: { - "application/json": components["schemas"]["simple-user"]; - }; - }; - }; - }; - /** - * Add team member - * @description Add a team member to an enterprise team. - */ - "enterprise-team-memberships/add": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - "enterprise-team": components["parameters"]["enterprise-team"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Successfully added team member */ - 201: { - content: { - "application/json": components["schemas"]["simple-user"]; - }; - }; - }; - }; - /** - * Remove team membership - * @description Remove membership of a specific user from a particular team in an enterprise. - */ - "enterprise-team-memberships/remove": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - "enterprise-team": components["parameters"]["enterprise-team"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get organization assignments - * @description Get all organizations assigned to an enterprise team - */ - "enterprise-team-organizations/get-assignments": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - enterprise: components["parameters"]["enterprise"]; - "enterprise-team": components["parameters"]["enterprise-team"]; - }; - }; - responses: { - /** @description An array of organizations the team is assigned to */ - 200: { - content: { - "application/json": components["schemas"]["organization-simple"][]; - }; - }; - }; - }; - /** - * Add organization assignments - * @description Assign an enterprise team to multiple organizations. - */ - "enterprise-team-organizations/bulk-add": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - "enterprise-team": components["parameters"]["enterprise-team"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Organization slug to assign the team to. */ - organization_slugs: string[]; - }; - }; - }; - responses: { - /** @description Successfully assigned the enterprise team to organizations. */ - 200: { - content: { - "application/json": components["schemas"]["organization-simple"][]; - }; - }; - }; - }; - /** - * Remove organization assignments - * @description Unassign an enterprise team from multiple organizations. - */ - "enterprise-team-organizations/bulk-remove": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - "enterprise-team": components["parameters"]["enterprise-team"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Organization slug to unassign the team from. */ - organization_slugs: string[]; - }; - }; - }; - responses: { - /** @description Successfully unassigned the enterprise team from organizations. */ - 204: { - content: never; - }; - }; - }; - /** - * Get organization assignment - * @description Check if an enterprise team is assigned to an organization - */ - "enterprise-team-organizations/get-assignment": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - "enterprise-team": components["parameters"]["enterprise-team"]; - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description The team is assigned to the organization */ - 200: { - content: { - "application/json": components["schemas"]["organization-simple"]; - }; - }; - /** @description The team is not assigned to the organization */ - 404: { - content: never; - }; - }; - }; - /** - * Add an organization assignment - * @description Assign an enterprise team to an organization. - */ - "enterprise-team-organizations/add": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - "enterprise-team": components["parameters"]["enterprise-team"]; - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Successfully assigned the enterprise team to the organization. */ - 201: { - content: { - "application/json": components["schemas"]["organization-simple"]; - }; - }; - }; - }; - /** - * Delete an organization assignment - * @description Unassign an enterprise team from an organization. - */ - "enterprise-team-organizations/delete": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - "enterprise-team": components["parameters"]["enterprise-team"]; - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Successfully unassigned the enterprise team from the organization. */ - 204: { - content: never; - }; - }; - }; - /** - * Get an enterprise team - * @description Gets a team using the team's slug. To create the slug, GitHub replaces special characters in the name string, changes all words to lowercase, and replaces spaces with a `-` separator and adds the "ent:" prefix. For example, "My TEam Näme" would become `ent:my-team-name`. - */ - "enterprise-teams/get": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["enterprise-team"]; - }; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Delete an enterprise team - * @description To delete an enterprise team, the authenticated user must be an enterprise owner. - * - * If you are an enterprise owner, deleting an enterprise team will delete all of its IdP mappings as well. - */ - "enterprise-teams/delete": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Update an enterprise team - * @description To edit a team, the authenticated user must be an enterprise owner. - */ - "enterprise-teams/update": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description A new name for the team. */ - name?: string | null; - /** @description A new description for the team. */ - description?: string | null; - /** - * @description Retired: this field is no longer supported. - * Whether the enterprise team should be reflected in each organization. - * This value cannot be changed. - * - * @default disabled - * @enum {string} - */ - sync_to_organizations?: "all" | "disabled"; - /** - * @description Specifies which organizations in the enterprise should have access to this team. Can be one of `disabled`, `selected`, or `all`. - * `disabled`: The team is not assigned to any organizations. This is the default when you create a new team. - * `selected`: The team is assigned to specific organizations. You can then use the [add organization assignments API](https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#add-organization-assignments). - * `all`: The team is assigned to all current and future organizations in the enterprise. - * - * @default disabled - * @enum {string} - */ - organization_selection_type?: "disabled" | "selected" | "all"; - /** @description The ID of the IdP group to assign team membership with. The new IdP group will replace the existing one, or replace existing direct members if the team isn't currently linked to an IdP group. */ - group_id?: string | null; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["enterprise-team"]; - }; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * List public events - * @description > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - "activity/list-public-events": { - parameters: { - query?: { - per_page?: components["parameters"]["public-events-per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["event"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get feeds - * @description Lists the feeds available to the authenticated user. The response provides a URL for each feed. You can then get a specific feed by sending a request to one of the feed URLs. - * - * * **Timeline**: The GitHub global public timeline - * * **User**: The public timeline for any user, using `uri_template`. For more information, see "[Hypermedia](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#hypermedia)." - * * **Current user public**: The public timeline for the authenticated user - * * **Current user**: The private timeline for the authenticated user - * * **Current user actor**: The private timeline for activity created by the authenticated user - * * **Current user organizations**: The private timeline for the organizations the authenticated user is a member of. - * * **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub. - * - * By default, timeline resources are returned in JSON. You can specify the `application/atom+xml` type in the `Accept` header to return timeline resources in Atom format. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * > [!NOTE] - * > Private feeds are only returned when [authenticating via Basic Auth](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) since current feed URIs use the older, non revocable auth tokens. - */ - "activity/get-feeds": { - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["feed"]; - }; - }; - }; - }; - /** - * List gists for the authenticated user - * @description Lists the authenticated user's gists or if called anonymously, this endpoint returns all public gists: - */ - "gists/list": { - parameters: { - query?: { - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["base-gist"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Create a gist - * @description Allows you to add a new gist with one or more files. - * - * > [!NOTE] - * > Don't name your files "gistfile" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally. - */ - "gists/create": { - requestBody: { - content: { - "application/json": { - /** - * @description Description of the gist - * @example Example Ruby script - */ - description?: string; - /** - * @description Names and content for the files that make up the gist - * @example { - * "hello.rb": { - * "content": "puts \"Hello, World!\"" - * } - * } - */ - files: { - [key: string]: { - /** @description Content of the file */ - content: string; - }; - }; - public?: boolean | ("true" | "false"); - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/gists/aa5a315d61ae9438b18d */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["gist-simple"]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List public gists - * @description List public gists sorted by most recently updated to least recently updated. - * - * Note: With [pagination](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page. - */ - "gists/list-public": { - parameters: { - query?: { - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["base-gist"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List starred gists - * @description List the authenticated user's starred gists: - */ - "gists/list-starred": { - parameters: { - query?: { - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["base-gist"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get a gist - * @description Gets a specified gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - "gists/get": { - parameters: { - path: { - gist_id: components["parameters"]["gist-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["gist-simple"]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden_gist"]; - 404: components["responses"]["not_found"]; - }; - }; - /** Delete a gist */ - "gists/delete": { - parameters: { - path: { - gist_id: components["parameters"]["gist-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update a gist - * @description Allows you to update a gist's description and to update, delete, or rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged. - */ - "gists/update": { - parameters: { - path: { - gist_id: components["parameters"]["gist-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The description of the gist. - * @example Example Ruby script - */ - description?: string; - /** - * @description The gist files to be updated, renamed, or deleted. Each `key` must match the current filename - * (including extension) of the targeted gist file. For example: `hello.py`. - * - * To delete a file, set the whole file to null. For example: `hello.py : null`. - * @example { - * "hello.rb": { - * "content": "blah", - * "filename": "goodbye.rb" - * } - * } - */ - files?: { - [key: string]: { - /** @description The new content of the file. */ - content?: string; - /** @description The new filename for the file. */ - filename?: string | null; - }; - }; - } | null; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["gist-simple"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List gist comments - * @description Lists the comments on a gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - "gists/list-comments": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - gist_id: components["parameters"]["gist-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["gist-comment"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a gist comment - * @description Creates a comment on a gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - "gists/create-comment": { - parameters: { - path: { - gist_id: components["parameters"]["gist-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The comment text. - * @example Body of the attachment - */ - body: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/gists/a6db0bec360bb87e9418/comments/1 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["gist-comment"]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get a gist comment - * @description Gets a comment on a gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - "gists/get-comment": { - parameters: { - path: { - gist_id: components["parameters"]["gist-id"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["gist-comment"]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden_gist"]; - 404: components["responses"]["not_found"]; - }; - }; - /** Delete a gist comment */ - "gists/delete-comment": { - parameters: { - path: { - gist_id: components["parameters"]["gist-id"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update a gist comment - * @description Updates a comment on a gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - "gists/update-comment": { - parameters: { - path: { - gist_id: components["parameters"]["gist-id"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The comment text. - * @example Body of the attachment - */ - body: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["gist-comment"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** List gist commits */ - "gists/list-commits": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - gist_id: components["parameters"]["gist-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - /** @example ; rel="next" */ - Link?: string; - }; - content: { - "application/json": components["schemas"]["gist-commit"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** List gist forks */ - "gists/list-forks": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - gist_id: components["parameters"]["gist-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["gist-simple"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** Fork a gist */ - "gists/fork": { - parameters: { - path: { - gist_id: components["parameters"]["gist-id"]; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/gists/aa5a315d61ae9438b18d */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["base-gist"]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** Check if a gist is starred */ - "gists/check-is-starred": { - parameters: { - path: { - gist_id: components["parameters"]["gist-id"]; - }; - }; - responses: { - /** @description Response if gist is starred */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - /** @description Not Found if gist is not starred */ - 404: { - content: { - "application/json": Record; - }; - }; - }; - }; - /** - * Star a gist - * @description Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - "gists/star": { - parameters: { - path: { - gist_id: components["parameters"]["gist-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** Unstar a gist */ - "gists/unstar": { - parameters: { - path: { - gist_id: components["parameters"]["gist-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get a gist revision - * @description Gets a specified gist revision. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - "gists/get-revision": { - parameters: { - path: { - gist_id: components["parameters"]["gist-id"]; - sha: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["gist-simple"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get all gitignore templates - * @description List all templates available to pass as an option when [creating a repository](https://docs.github.com/rest/repos/repos#create-a-repository-for-the-authenticated-user). - */ - "gitignore/get-all-templates": { - responses: { - /** @description Response */ - 200: { - content: { - "application/json": string[]; - }; - }; - 304: components["responses"]["not_modified"]; - }; - }; - /** - * Get a gitignore template - * @description Get the content of a gitignore template. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw .gitignore contents. - */ - "gitignore/get-template": { - parameters: { - path: { - name: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["gitignore-template"]; - }; - }; - 304: components["responses"]["not_modified"]; - }; - }; - /** - * List repositories accessible to the app installation - * @description List repositories that an app installation can access. - */ - "apps/list-repos-accessible-to-installation": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - repositories: components["schemas"]["repository"][]; - /** @example selected */ - repository_selection?: string; - }; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Revoke an installation access token - * @description Revokes the installation token you're using to authenticate as an installation and access this endpoint. - * - * Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the "[Create an installation access token for an app](https://docs.github.com/rest/apps/apps#create-an-installation-access-token-for-an-app)" endpoint. - */ - "apps/revoke-installation-access-token": { - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List issues assigned to the authenticated user - * @description List issues assigned to the authenticated user across all visible repositories including owned repositories, member - * repositories, and organization repositories. You can use the `filter` query parameter to fetch issues that are not - * necessarily assigned to you. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/list": { - parameters: { - query?: { - /** @description Indicates which sorts of issues to return. `assigned` means issues assigned to you. `created` means issues created by you. `mentioned` means issues mentioning you. `subscribed` means issues you're subscribed to updates for. `all` or `repos` means all issues you can see, regardless of participation or creation. */ - filter?: - | "assigned" - | "created" - | "mentioned" - | "subscribed" - | "repos" - | "all"; - /** @description Indicates the state of the issues to return. */ - state?: "open" | "closed" | "all"; - labels?: components["parameters"]["labels"]; - /** @description What to sort results by. */ - sort?: "created" | "updated" | "comments"; - direction?: components["parameters"]["direction"]; - since?: components["parameters"]["since"]; - collab?: boolean; - orgs?: boolean; - owned?: boolean; - pulls?: boolean; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["issue"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get all commonly used licenses - * @description Lists the most commonly used licenses on GitHub. For more information, see "[Licensing a repository ](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)." - */ - "licenses/get-all-commonly-used": { - parameters: { - query?: { - featured?: boolean; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["license-simple"][]; - }; - }; - 304: components["responses"]["not_modified"]; - }; - }; - /** - * Get a license - * @description Gets information about a specific license. For more information, see "[Licensing a repository ](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)." - */ - "licenses/get": { - parameters: { - path: { - license: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["license"]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Render a Markdown document - * @description Depending on what is rendered in the Markdown, you may need to provide additional token scopes for labels, such as `issues:read` or `pull_requests:read`. - */ - "markdown/render": { - requestBody: { - content: { - "application/json": { - /** @description The Markdown text to render in HTML. */ - text: string; - /** - * @description The rendering mode. - * @default markdown - * @example markdown - * @enum {string} - */ - mode?: "markdown" | "gfm"; - /** @description The repository context to use when creating references in `gfm` mode. For example, setting `context` to `octo-org/octo-repo` will change the text `#42` into an HTML link to issue 42 in the `octo-org/octo-repo` repository. */ - context?: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - "Content-Type": components["headers"]["content-type"]; - /** @example 279 */ - "Content-Length"?: string; - "X-CommonMarker-Version": components["headers"]["x-common-marker-version"]; - }; - content: { - "text/html": string; - }; - }; - 304: components["responses"]["not_modified"]; - }; - }; - /** - * Render a Markdown document in raw mode - * @description You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less. - */ - "markdown/render-raw": { - requestBody?: { - content: { - "text/plain": string; - "text/x-markdown": string; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - "X-CommonMarker-Version": components["headers"]["x-common-marker-version"]; - }; - content: { - "text/html": string; - }; - }; - 304: components["responses"]["not_modified"]; - }; - }; - /** - * Get a subscription plan for an account - * @description Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - "apps/get-subscription-plan-for-account": { - parameters: { - path: { - account_id: components["parameters"]["account-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["marketplace-purchase"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - /** @description Not Found when the account has not purchased the listing */ - 404: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - }; - /** - * List plans - * @description Lists all plans that are part of your GitHub Marketplace listing. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - "apps/list-plans": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["marketplace-listing-plan"][]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List accounts for a plan - * @description Returns user and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - "apps/list-accounts-for-plan": { - parameters: { - query?: { - sort?: components["parameters"]["sort"]; - /** @description To return the oldest accounts first, set to `asc`. Ignored without the `sort` parameter. */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - plan_id: components["parameters"]["plan-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["marketplace-purchase"][]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a subscription plan for an account (stubbed) - * @description Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - "apps/get-subscription-plan-for-account-stubbed": { - parameters: { - path: { - account_id: components["parameters"]["account-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["marketplace-purchase"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - /** @description Not Found when the account has not purchased the listing */ - 404: { - content: never; - }; - }; - }; - /** - * List plans (stubbed) - * @description Lists all plans that are part of your GitHub Marketplace listing. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - "apps/list-plans-stubbed": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["marketplace-listing-plan"][]; - }; - }; - 401: components["responses"]["requires_authentication"]; - }; - }; - /** - * List accounts for a plan (stubbed) - * @description Returns repository and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - "apps/list-accounts-for-plan-stubbed": { - parameters: { - query?: { - sort?: components["parameters"]["sort"]; - /** @description To return the oldest accounts first, set to `asc`. Ignored without the `sort` parameter. */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - plan_id: components["parameters"]["plan-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["marketplace-purchase"][]; - }; - }; - 401: components["responses"]["requires_authentication"]; - }; - }; - /** - * Get GitHub meta information - * @description Returns meta information about GitHub, including a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://docs.github.com/articles/about-github-s-ip-addresses/)." - * - * The API's response also includes a list of GitHub's domain names. - * - * The values shown in the documentation's response are example values. You must always query the API directly to get the latest values. - * - * > [!NOTE] - * > This endpoint returns both IPv4 and IPv6 addresses. However, not all features support IPv6. You should refer to the specific documentation for each feature to determine if IPv6 is supported. - */ - "meta/get": { - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["api-overview"]; - }; - }; - 304: components["responses"]["not_modified"]; - }; - }; - /** - * List public events for a network of repositories - * @description > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - "activity/list-public-events-for-repo-network": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["event"][]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List notifications for the authenticated user - * @description List all notifications for the current user, sorted by most recently updated. - */ - "activity/list-notifications-for-authenticated-user": { - parameters: { - query?: { - all?: components["parameters"]["all"]; - participating?: components["parameters"]["participating"]; - since?: components["parameters"]["since"]; - before?: components["parameters"]["before"]; - page?: components["parameters"]["page"]; - /** @description The number of results per page (max 50). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - per_page?: number; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["thread"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Mark notifications as read - * @description Marks all notifications as "read" for the current user. If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List notifications for the authenticated user](https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. - */ - "activity/mark-notifications-as-read": { - requestBody?: { - content: { - "application/json": { - /** - * Format: date-time - * @description Describes the last point that notifications were checked. Anything updated since this time will not be marked as read. If you omit this parameter, all notifications are marked as read. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp. - */ - last_read_at?: string; - /** @description Whether the notification has been read. */ - read?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 202: { - content: { - "application/json": { - message?: string; - }; - }; - }; - /** @description Reset Content */ - 205: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get a thread - * @description Gets information about a notification thread. - */ - "activity/get-thread": { - parameters: { - path: { - thread_id: components["parameters"]["thread-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["thread"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Mark a thread as done - * @description Marks a thread as "done." Marking a thread as "done" is equivalent to marking a notification in your notification inbox on GitHub as done: https://github.com/notifications. - */ - "activity/mark-thread-as-done": { - parameters: { - path: { - thread_id: components["parameters"]["thread-id"]; - }; - }; - responses: { - /** @description No content */ - 204: { - content: never; - }; - }; - }; - /** - * Mark a thread as read - * @description Marks a thread as "read." Marking a thread as "read" is equivalent to clicking a notification in your notification inbox on GitHub: https://github.com/notifications. - */ - "activity/mark-thread-as-read": { - parameters: { - path: { - thread_id: components["parameters"]["thread-id"]; - }; - }; - responses: { - /** @description Reset Content */ - 205: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get a thread subscription for the authenticated user - * @description This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://docs.github.com/rest/activity/watching#get-a-repository-subscription). - * - * Note that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread. - */ - "activity/get-thread-subscription-for-authenticated-user": { - parameters: { - path: { - thread_id: components["parameters"]["thread-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["thread-subscription"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Set a thread subscription - * @description If you are watching a repository, you receive notifications for all threads by default. Use this endpoint to ignore future notifications for threads until you comment on the thread or get an **@mention**. - * - * You can also use this endpoint to subscribe to threads that you are currently not receiving notifications for or to subscribed to threads that you have previously ignored. - * - * Unsubscribing from a conversation in a repository that you are not watching is functionally equivalent to the [Delete a thread subscription](https://docs.github.com/rest/activity/notifications#delete-a-thread-subscription) endpoint. - */ - "activity/set-thread-subscription": { - parameters: { - path: { - thread_id: components["parameters"]["thread-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description Whether to block all notifications from a thread. - * @default false - */ - ignored?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["thread-subscription"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Delete a thread subscription - * @description Mutes all future notifications for a conversation until you comment on the thread or get an **@mention**. If you are watching the repository of the thread, you will still receive notifications. To ignore future notifications for a repository you are watching, use the [Set a thread subscription](https://docs.github.com/rest/activity/notifications#set-a-thread-subscription) endpoint and set `ignore` to `true`. - */ - "activity/delete-thread-subscription": { - parameters: { - path: { - thread_id: components["parameters"]["thread-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get Octocat - * @description Get the octocat as ASCII art - */ - "meta/get-octocat": { - parameters: { - query?: { - /** @description The words to show in Octocat's speech bubble */ - s?: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/octocat-stream": string; - }; - }; - }; - }; - /** - * List organizations - * @description Lists all organizations, in the order that they were created. - * - * > [!NOTE] - * > Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of organizations. - */ - "orgs/list": { - parameters: { - query?: { - since?: components["parameters"]["since-org"]; - per_page?: components["parameters"]["per-page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - /** @example ; rel="next" */ - Link?: string; - }; - content: { - "application/json": components["schemas"]["organization-simple"][]; - }; - }; - 304: components["responses"]["not_modified"]; - }; - }; - /** - * Lists the repositories Dependabot can access in an organization - * @description Lists repositories that organization admins have allowed Dependabot to access when updating dependencies. - * > [!NOTE] - * > This operation supports both server-to-server and user-to-server access. - * Unauthorized users will not see the existence of this endpoint. - */ - "dependabot/repository-access-for-org": { - parameters: { - query?: { - /** @description The page number of results to fetch. */ - page?: number; - /** @description Number of results per page. */ - per_page?: number; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["dependabot-repository-access-details"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Updates Dependabot's repository access list for an organization - * @description Updates repositories according to the list of repositories that organization admins have given Dependabot access to when they've updated dependencies. - * - * > [!NOTE] - * > This operation supports both server-to-server and user-to-server access. - * Unauthorized users will not see the existence of this endpoint. - * - * **Example request body:** - * ```json - * { - * "repository_ids_to_add": [123, 456], - * "repository_ids_to_remove": [789] - * } - * ``` - */ - "dependabot/update-repository-access-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description List of repository IDs to add. */ - repository_ids_to_add?: number[]; - /** @description List of repository IDs to remove. */ - repository_ids_to_remove?: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set the default repository access level for Dependabot - * @description Sets the default level of repository access Dependabot will have while performing an update. Available values are: - * - 'public' - Dependabot will only have access to public repositories, unless access is explicitly granted to non-public repositories. - * - 'internal' - Dependabot will only have access to public and internal repositories, unless access is explicitly granted to private repositories. - * - * Unauthorized users will not see the existence of this endpoint. - * - * This operation supports both server-to-server and user-to-server access. - */ - "dependabot/set-repository-access-default-level": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The default repository access level for Dependabot updates. - * @example internal - * @enum {string} - */ - default_level: "public" | "internal"; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get all custom property values for an organization - * @description Gets all custom property values that are set for an organization. - * - * The organization must belong to an enterprise. - * - * Access requirements: - * - Organization admins - * - OAuth tokens and personal access tokens (classic) with the `read:org` scope - * - Actors with the organization-level "read custom properties for an organization" fine-grained permission or above - */ - "orgs/custom-properties-for-orgs-get-organization-values": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["custom-property-value"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create or update custom property values for an organization - * @description Create new or update existing custom property values for an organization. - * To remove a custom property value from an organization, set the property value to `null`. - * - * The organization must belong to an enterprise. - * - * Access requirements: - * - Organization admins - * - OAuth tokens and personal access tokens (classic) with the `admin:org` scope - * - Actors with the organization-level "edit custom properties for an organization" fine-grained permission - */ - "orgs/custom-properties-for-orgs-create-or-update-organization-values": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description A list of custom property names and associated values to apply to the organization. */ - properties: components["schemas"]["custom-property-value"][]; - }; - }; - }; - responses: { - /** @description No Content when custom property values are successfully created or updated */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get billing premium request usage report for an organization - * @description Gets a report of premium request usage for an organization. To use this endpoint, you must be an administrator of an organization within an enterprise or an organization account. - * - * **Note:** Only data from the past 24 months is accessible via this endpoint. - */ - "billing/get-github-billing-premium-request-usage-report-org": { - parameters: { - query?: { - year?: components["parameters"]["billing-usage-report-year"]; - month?: components["parameters"]["billing-usage-report-month-default"]; - day?: components["parameters"]["billing-usage-report-day"]; - user?: components["parameters"]["billing-usage-report-user"]; - model?: components["parameters"]["billing-usage-report-model"]; - product?: components["parameters"]["billing-usage-report-product"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - 200: components["responses"]["billing_premium_request_usage_report_org"]; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get billing usage report for an organization - * @description Gets a report of the total usage for an organization. To use this endpoint, you must be an administrator of an organization within an enterprise or an organization account. - * - * **Note:** This endpoint is only available to organizations with access to the enhanced billing platform. For more information, see "[About the enhanced billing platform](https://docs.github.com/billing/using-the-new-billing-platform)." - */ - "billing/get-github-billing-usage-report-org": { - parameters: { - query?: { - year?: components["parameters"]["billing-usage-report-year"]; - month?: components["parameters"]["billing-usage-report-month"]; - day?: components["parameters"]["billing-usage-report-day"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - 200: components["responses"]["billing_usage_report_org"]; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 500: components["responses"]["internal_error"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get an organization - * @description Gets information about an organization. - * - * When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, outside collaborators, guest collaborators, repository collaborators, or everyone with access to any repository within the organization to enable [two-factor authentication](https://docs.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/). - * - * To see the full details about an organization, the authenticated user must be an organization owner. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to see the full details about an organization. - * - * To see information about an organization's GitHub plan, GitHub Apps need the `Organization plan` permission. - */ - "orgs/get": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["organization-full"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete an organization - * @description Deletes an organization and all its repositories. - * - * The organization login will be unavailable for 90 days after deletion. - * - * Please review the Terms of Service regarding account deletion before using this endpoint: - * - * https://docs.github.com/site-policy/github-terms/github-terms-of-service - */ - "orgs/delete": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - 202: components["responses"]["accepted"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update an organization - * @description > [!WARNING] - * > **Closing down notice:** GitHub will replace and discontinue `members_allowed_repository_creation_type` in favor of more granular permissions. The new input parameters are `members_can_create_public_repositories`, `members_can_create_private_repositories` for all organizations and `members_can_create_internal_repositories` for organizations associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes). - * - * > [!WARNING] - * > **Closing down notice:** Code security product enablement for new repositories through the organization API is closing down. Please use [code security configurations](https://docs.github.com/rest/code-security/configurations#set-a-code-security-configuration-as-a-default-for-an-organization) to set defaults instead. For more information on setting a default security configuration, see the [changelog](https://github.blog/changelog/2024-07-09-sunsetting-security-settings-defaults-parameters-in-the-organizations-rest-api/). - * - * Updates the organization's profile and member privileges. - * - * The authenticated user must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` or `repo` scope to use this endpoint. - */ - "orgs/update": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description Billing email address. This address is not publicized. */ - billing_email?: string; - /** @description The company name. */ - company?: string; - /** @description The publicly visible email address. */ - email?: string; - /** @description The Twitter username of the company. */ - twitter_username?: string; - /** @description The location. */ - location?: string; - /** @description The shorthand name of the company. */ - name?: string; - /** @description The description of the company. The maximum size is 160 characters. */ - description?: string; - /** @description Whether an organization can use organization projects. */ - has_organization_projects?: boolean; - /** @description Whether repositories that belong to the organization can use repository projects. */ - has_repository_projects?: boolean; - /** - * @description Default permission level members have for organization repositories. - * @default read - * @enum {string} - */ - default_repository_permission?: "read" | "write" | "admin" | "none"; - /** - * @description Whether of non-admin organization members can create repositories. **Note:** A parameter can override this parameter. See `members_allowed_repository_creation_type` in this table for details. - * @default true - */ - members_can_create_repositories?: boolean; - /** @description Whether organization members can create internal repositories, which are visible to all enterprise members. You can only allow members to create internal repositories if your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see "[Restricting repository creation in your organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)" in the GitHub Help documentation. */ - members_can_create_internal_repositories?: boolean; - /** @description Whether organization members can create private repositories, which are visible to organization members with permission. For more information, see "[Restricting repository creation in your organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)" in the GitHub Help documentation. */ - members_can_create_private_repositories?: boolean; - /** @description Whether organization members can create public repositories, which are visible to anyone. For more information, see "[Restricting repository creation in your organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)" in the GitHub Help documentation. */ - members_can_create_public_repositories?: boolean; - /** - * @description Specifies which types of repositories non-admin organization members can create. `private` is only available to repositories that are part of an organization on GitHub Enterprise Cloud. - * **Note:** This parameter is closing down and will be removed in the future. Its return value ignores internal repositories. Using this parameter overrides values set in `members_can_create_repositories`. See the parameter deprecation notice in the operation description for details. - * @enum {string} - */ - members_allowed_repository_creation_type?: "all" | "private" | "none"; - /** - * @description Whether organization members can create GitHub Pages sites. Existing published sites will not be impacted. - * @default true - */ - members_can_create_pages?: boolean; - /** - * @description Whether organization members can create public GitHub Pages sites. Existing published sites will not be impacted. - * @default true - */ - members_can_create_public_pages?: boolean; - /** - * @description Whether organization members can create private GitHub Pages sites. Existing published sites will not be impacted. - * @default true - */ - members_can_create_private_pages?: boolean; - /** - * @description Whether organization members can fork private organization repositories. - * @default false - */ - members_can_fork_private_repositories?: boolean; - /** - * @description Whether contributors to organization repositories are required to sign off on commits they make through GitHub's web interface. - * @default false - */ - web_commit_signoff_required?: boolean; - /** @example "http://github.blog" */ - blog?: string; - /** - * @deprecated - * @description **Endpoint closing down notice.** Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. - * - * Whether GitHub Advanced Security is automatically enabled for new repositories and repositories transferred to this organization. - * - * To use this parameter, you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * You can check which security and analysis features are currently enabled by using a `GET /orgs/{org}` request. - */ - advanced_security_enabled_for_new_repositories?: boolean; - /** - * @deprecated - * @description **Endpoint closing down notice.** Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. - * - * Whether Dependabot alerts are automatically enabled for new repositories and repositories transferred to this organization. - * - * To use this parameter, you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * You can check which security and analysis features are currently enabled by using a `GET /orgs/{org}` request. - */ - dependabot_alerts_enabled_for_new_repositories?: boolean; - /** - * @deprecated - * @description **Endpoint closing down notice.** Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. - * - * Whether Dependabot security updates are automatically enabled for new repositories and repositories transferred to this organization. - * - * To use this parameter, you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * You can check which security and analysis features are currently enabled by using a `GET /orgs/{org}` request. - */ - dependabot_security_updates_enabled_for_new_repositories?: boolean; - /** - * @deprecated - * @description **Endpoint closing down notice.** Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. - * - * Whether dependency graph is automatically enabled for new repositories and repositories transferred to this organization. - * - * To use this parameter, you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * You can check which security and analysis features are currently enabled by using a `GET /orgs/{org}` request. - */ - dependency_graph_enabled_for_new_repositories?: boolean; - /** - * @deprecated - * @description **Endpoint closing down notice.** Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. - * - * Whether secret scanning is automatically enabled for new repositories and repositories transferred to this organization. - * - * To use this parameter, you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * You can check which security and analysis features are currently enabled by using a `GET /orgs/{org}` request. - */ - secret_scanning_enabled_for_new_repositories?: boolean; - /** - * @deprecated - * @description **Endpoint closing down notice.** Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. - * - * Whether secret scanning push protection is automatically enabled for new repositories and repositories transferred to this organization. - * - * To use this parameter, you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * You can check which security and analysis features are currently enabled by using a `GET /orgs/{org}` request. - */ - secret_scanning_push_protection_enabled_for_new_repositories?: boolean; - /** @description Whether a custom link is shown to contributors who are blocked from pushing a secret by push protection. */ - secret_scanning_push_protection_custom_link_enabled?: boolean; - /** @description If `secret_scanning_push_protection_custom_link_enabled` is true, the URL that will be displayed to contributors who are blocked from pushing a secret. */ - secret_scanning_push_protection_custom_link?: string; - /** @description Controls whether or not deploy keys may be added and used for repositories in the organization. */ - deploy_keys_enabled_for_repositories?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["organization-full"]; - }; - }; - 409: components["responses"]["conflict"]; - /** @description Validation failed */ - 422: { - content: { - "application/json": - | components["schemas"]["validation-error"] - | components["schemas"]["validation-error-simple"]; - }; - }; - }; - }; - /** - * Get GitHub Actions cache usage for an organization - * @description Gets the total GitHub Actions cache usage for an organization. - * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. - * - * OAuth tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - "actions/get-actions-cache-usage-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["actions-cache-usage-org-enterprise"]; - }; - }; - }; - }; - /** - * List repositories with GitHub Actions cache usage for an organization - * @description Lists repositories and their GitHub Actions cache usage for an organization. - * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. - * - * OAuth tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - "actions/get-actions-cache-usage-by-repo-for-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - repository_cache_usages: components["schemas"]["actions-cache-usage-by-repository"][]; - }; - }; - }; - }; - }; - /** - * List GitHub-hosted runners for an organization - * @description Lists all GitHub-hosted runners configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `manage_runner:org` scope to use this endpoint. - */ - "actions/list-hosted-runners-for-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - runners: components["schemas"]["actions-hosted-runner"][]; - }; - }; - }; - }; - }; - /** - * Create a GitHub-hosted runner for an organization - * @description Creates a GitHub-hosted runner for an organization. - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - "actions/create-hosted-runner-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Name of the runner. Must be between 1 and 64 characters and may only contain upper and lowercase letters a-z, numbers 0-9, '.', '-', and '_'. */ - name: string; - /** @description The image of runner. To list all available images, use `GET /actions/hosted-runners/images/github-owned` or `GET /actions/hosted-runners/images/partner`. */ - image: { - /** @description The unique identifier of the runner image. */ - id?: string; - /** - * @description The source of the runner image. - * @enum {string} - */ - source?: "github" | "partner" | "custom"; - /** @description The version of the runner image to deploy. This is relevant only for runners using custom images. */ - version?: string | null; - }; - /** @description The machine size of the runner. To list available sizes, use `GET actions/hosted-runners/machine-sizes` */ - size: string; - /** @description The existing runner group to add this runner to. */ - runner_group_id: number; - /** @description The maximum amount of runners to scale up to. Runners will not auto-scale above this number. Use this setting to limit your cost. */ - maximum_runners?: number; - /** @description Whether this runner should be created with a static public IP. Note limit on account. To list limits on account, use `GET actions/hosted-runners/limits` */ - enable_static_ip?: boolean; - /** - * @description Whether this runner should be used to generate custom images. - * @default false - */ - image_gen?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["actions-hosted-runner"]; - }; - }; - }; - }; - /** - * List custom images for an organization - * @description List custom images for an organization. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - "actions/list-custom-images-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - images: components["schemas"]["actions-hosted-runner-custom-image"][]; - }; - }; - }; - }; - }; - /** - * Get a custom image definition for GitHub Actions Hosted Runners - * @description Get a custom image definition for GitHub Actions Hosted Runners. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - "actions/get-custom-image-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - image_definition_id: components["parameters"]["actions-custom-image-definition-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-hosted-runner-custom-image"]; - }; - }; - }; - }; - /** - * Delete a custom image from the organization - * @description Delete a custom image from the organization. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - "actions/delete-custom-image-from-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - image_definition_id: components["parameters"]["actions-custom-image-definition-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List image versions of a custom image for an organization - * @description List image versions of a custom image for an organization. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - "actions/list-custom-image-versions-for-org": { - parameters: { - path: { - image_definition_id: components["parameters"]["actions-custom-image-definition-id"]; - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - image_versions: components["schemas"]["actions-hosted-runner-custom-image-version"][]; - }; - }; - }; - }; - }; - /** - * Get an image version of a custom image for GitHub Actions Hosted Runners - * @description Get an image version of a custom image for GitHub Actions Hosted Runners. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - "actions/get-custom-image-version-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - image_definition_id: components["parameters"]["actions-custom-image-definition-id"]; - version: components["parameters"]["actions-custom-image-version"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-hosted-runner-custom-image-version"]; - }; - }; - }; - }; - /** - * Delete an image version of custom image from the organization - * @description Delete an image version of custom image from the organization. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - "actions/delete-custom-image-version-from-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - image_definition_id: components["parameters"]["actions-custom-image-definition-id"]; - version: components["parameters"]["actions-custom-image-version"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get GitHub-owned images for GitHub-hosted runners in an organization - * @description Get the list of GitHub-owned images available for GitHub-hosted runners for an organization. - */ - "actions/get-hosted-runners-github-owned-images-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - images: components["schemas"]["actions-hosted-runner-curated-image"][]; - }; - }; - }; - }; - }; - /** - * Get partner images for GitHub-hosted runners in an organization - * @description Get the list of partner images available for GitHub-hosted runners for an organization. - */ - "actions/get-hosted-runners-partner-images-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - images: components["schemas"]["actions-hosted-runner-curated-image"][]; - }; - }; - }; - }; - }; - /** - * Get limits on GitHub-hosted runners for an organization - * @description Get the GitHub-hosted runners limits for an organization. - */ - "actions/get-hosted-runners-limits-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-hosted-runner-limits"]; - }; - }; - }; - }; - /** - * Get GitHub-hosted runners machine specs for an organization - * @description Get the list of machine specs available for GitHub-hosted runners for an organization. - */ - "actions/get-hosted-runners-machine-specs-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - machine_specs: components["schemas"]["actions-hosted-runner-machine-spec"][]; - }; - }; - }; - }; - }; - /** - * Get platforms for GitHub-hosted runners in an organization - * @description Get the list of platforms available for GitHub-hosted runners for an organization. - */ - "actions/get-hosted-runners-platforms-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - platforms: string[]; - }; - }; - }; - }; - }; - /** - * Get a GitHub-hosted runner for an organization - * @description Gets a GitHub-hosted runner configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - "actions/get-hosted-runner-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - hosted_runner_id: components["parameters"]["hosted-runner-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["actions-hosted-runner"]; - }; - }; - }; - }; - /** - * Delete a GitHub-hosted runner for an organization - * @description Deletes a GitHub-hosted runner for an organization. - */ - "actions/delete-hosted-runner-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - hosted_runner_id: components["parameters"]["hosted-runner-id"]; - }; - }; - responses: { - /** @description Response */ - 202: { - content: { - "application/json": components["schemas"]["actions-hosted-runner"]; - }; - }; - }; - }; - /** - * Update a GitHub-hosted runner for an organization - * @description Updates a GitHub-hosted runner for an organization. - * OAuth app tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - "actions/update-hosted-runner-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - hosted_runner_id: components["parameters"]["hosted-runner-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Name of the runner. Must be between 1 and 64 characters and may only contain upper and lowercase letters a-z, numbers 0-9, '.', '-', and '_'. */ - name?: string; - /** @description The existing runner group to add this runner to. */ - runner_group_id?: number; - /** @description The maximum amount of runners to scale up to. Runners will not auto-scale above this number. Use this setting to limit your cost. */ - maximum_runners?: number; - /** @description Whether this runner should be updated with a static public IP. Note limit on account. To list limits on account, use `GET actions/hosted-runners/limits` */ - enable_static_ip?: boolean; - /** @description The version of the runner image to deploy. This is relevant only for runners using custom images. */ - image_version?: string | null; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-hosted-runner"]; - }; - }; - }; - }; - /** - * Get the customization template for an OIDC subject claim for an organization - * @description Gets the customization template for an OpenID Connect (OIDC) subject claim. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - "oidc/get-oidc-custom-sub-template-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description A JSON serialized template for OIDC subject claim customization */ - 200: { - content: { - "application/json": components["schemas"]["oidc-custom-sub"]; - }; - }; - }; - }; - /** - * Set the customization template for an OIDC subject claim for an organization - * @description Creates or updates the customization template for an OpenID Connect (OIDC) subject claim. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - "oidc/update-oidc-custom-sub-template-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["oidc-custom-sub"]; - }; - }; - responses: { - /** @description Empty response */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get GitHub Actions permissions for an organization - * @description Gets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/get-github-actions-permissions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-organization-permissions"]; - }; - }; - }; - }; - /** - * Set GitHub Actions permissions for an organization - * @description Sets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/set-github-actions-permissions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - enabled_repositories: components["schemas"]["enabled-repositories"]; - allowed_actions?: components["schemas"]["allowed-actions"]; - sha_pinning_required?: components["schemas"]["sha-pinning-required"]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get artifact and log retention settings for an organization - * @description Gets artifact and log retention settings for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - "actions/get-artifact-and-log-retention-settings-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-artifact-and-log-retention-response"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set artifact and log retention settings for an organization - * @description Sets artifact and log retention settings for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - "actions/set-artifact-and-log-retention-settings-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["actions-artifact-and-log-retention"]; - }; - }; - responses: { - /** @description No content */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get fork PR contributor approval permissions for an organization - * @description Gets the fork PR contributor approval policy for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - "actions/get-fork-pr-contributor-approval-permissions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-fork-pr-contributor-approval"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set fork PR contributor approval permissions for an organization - * @description Sets the fork PR contributor approval policy for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/set-fork-pr-contributor-approval-permissions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["actions-fork-pr-contributor-approval"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get private repo fork PR workflow settings for an organization - * @description Gets the settings for whether workflows from fork pull requests can run on private repositories in an organization. - */ - "actions/get-private-repo-fork-pr-workflows-settings-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-fork-pr-workflows-private-repos"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set private repo fork PR workflow settings for an organization - * @description Sets the settings for whether workflows from fork pull requests can run on private repositories in an organization. - */ - "actions/set-private-repo-fork-pr-workflows-settings-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["actions-fork-pr-workflows-private-repos-request"]; - }; - }; - responses: { - /** @description Empty response for successful settings update */ - 204: { - content: never; - }; - /** @description Forbidden - Fork PR workflow settings for private repositories are managed by the enterprise owner */ - 403: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List selected repositories enabled for GitHub Actions in an organization - * @description Lists the selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/list-selected-repositories-enabled-github-actions-organization": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - repositories: components["schemas"]["repository"][]; - }; - }; - }; - }; - }; - /** - * Set selected repositories enabled for GitHub Actions in an organization - * @description Replaces the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/set-selected-repositories-enabled-github-actions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description List of repository IDs to enable for GitHub Actions. */ - selected_repository_ids: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Enable a selected repository for GitHub Actions in an organization - * @description Adds a repository to the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/enable-selected-repository-github-actions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - repository_id: components["parameters"]["repository-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Disable a selected repository for GitHub Actions in an organization - * @description Removes a repository from the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/disable-selected-repository-github-actions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - repository_id: components["parameters"]["repository-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get allowed actions and reusable workflows for an organization - * @description Gets the selected actions and reusable workflows that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/get-allowed-actions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["selected-actions"]; - }; - }; - }; - }; - /** - * Set allowed actions and reusable workflows for an organization - * @description Sets the actions and reusable workflows that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/set-allowed-actions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody?: { - content: { - "application/json": components["schemas"]["selected-actions"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get self-hosted runners settings for an organization - * @description Gets the settings for self-hosted runners for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - "actions/get-self-hosted-runners-permissions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["self-hosted-runners-settings"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set self-hosted runners settings for an organization - * @description Sets the settings for self-hosted runners for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - "actions/set-self-hosted-runners-permissions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The policy that controls whether self-hosted runners can be used in the organization - * @enum {string} - */ - enabled_repositories: "all" | "selected" | "none"; - }; - }; - }; - responses: { - /** @description No content */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List repositories allowed to use self-hosted runners in an organization - * @description Lists repositories that are allowed to use self-hosted runners in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - "actions/list-selected-repositories-self-hosted-runners-organization": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count?: number; - repositories?: components["schemas"]["repository"][]; - }; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set repositories allowed to use self-hosted runners in an organization - * @description Sets repositories that are allowed to use self-hosted runners in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - "actions/set-selected-repositories-self-hosted-runners-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description IDs of repositories that can use repository-level self-hosted runners */ - selected_repository_ids: number[]; - }; - }; - }; - responses: { - /** @description No content */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Add a repository to the list of repositories allowed to use self-hosted runners in an organization - * @description Adds a repository to the list of repositories that are allowed to use self-hosted runners in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - "actions/enable-selected-repository-self-hosted-runners-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - repository_id: components["parameters"]["repository-id"]; - }; - }; - responses: { - /** @description No content */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove a repository from the list of repositories allowed to use self-hosted runners in an organization - * @description Removes a repository from the list of repositories that are allowed to use self-hosted runners in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope or the "Actions policies" fine-grained permission to use this endpoint. - */ - "actions/disable-selected-repository-self-hosted-runners-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - repository_id: components["parameters"]["repository-id"]; - }; - }; - responses: { - /** @description No content */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get default workflow permissions for an organization - * @description Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, - * as well as whether GitHub Actions can submit approving pull request reviews. For more information, see - * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/get-github-actions-default-workflow-permissions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-get-default-workflow-permissions"]; - }; - }; - }; - }; - /** - * Set default workflow permissions for an organization - * @description Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, and sets if GitHub Actions - * can submit approving pull request reviews. For more information, see - * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/set-github-actions-default-workflow-permissions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody?: { - content: { - "application/json": components["schemas"]["actions-set-default-workflow-permissions"]; - }; - }; - responses: { - /** @description Success response */ - 204: { - content: never; - }; - }; - }; - /** - * List self-hosted runner groups for an organization - * @description Lists all self-hosted runner groups configured in an organization and inherited from an enterprise. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/list-self-hosted-runner-groups-for-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - visible_to_repository?: components["parameters"]["visible-to-repository"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - runner_groups: components["schemas"]["runner-groups-org"][]; - }; - }; - }; - }; - }; - /** - * Create a self-hosted runner group for an organization - * @description Creates a new self-hosted runner group for an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/create-self-hosted-runner-group-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Name of the runner group. */ - name: string; - /** - * @description Visibility of a runner group. You can select all repositories, select individual repositories, or limit access to private repositories. - * @default all - * @enum {string} - */ - visibility?: "selected" | "all" | "private"; - /** @description List of repository IDs that can access the runner group. */ - selected_repository_ids?: number[]; - /** @description List of runner IDs to add to the runner group. */ - runners?: number[]; - /** - * @description Whether the runner group can be used by `public` repositories. - * @default false - */ - allows_public_repositories?: boolean; - /** - * @description If `true`, the runner group will be restricted to running only the workflows specified in the `selected_workflows` array. - * @default false - */ - restricted_to_workflows?: boolean; - /** @description List of workflows the runner group should be allowed to run. This setting will be ignored unless `restricted_to_workflows` is set to `true`. */ - selected_workflows?: string[]; - /** @description The identifier of a hosted compute network configuration. */ - network_configuration_id?: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["runner-groups-org"]; - }; - }; - }; - }; - /** - * Get a self-hosted runner group for an organization - * @description Gets a specific self-hosted runner group for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/get-self-hosted-runner-group-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner-group-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["runner-groups-org"]; - }; - }; - }; - }; - /** - * Delete a self-hosted runner group from an organization - * @description Deletes a self-hosted runner group for an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/delete-self-hosted-runner-group-from-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner-group-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update a self-hosted runner group for an organization - * @description Updates the `name` and `visibility` of a self-hosted runner group in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/update-self-hosted-runner-group-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner-group-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Name of the runner group. */ - name: string; - /** - * @description Visibility of a runner group. You can select all repositories, select individual repositories, or all private repositories. - * @enum {string} - */ - visibility?: "selected" | "all" | "private"; - /** - * @description Whether the runner group can be used by `public` repositories. - * @default false - */ - allows_public_repositories?: boolean; - /** - * @description If `true`, the runner group will be restricted to running only the workflows specified in the `selected_workflows` array. - * @default false - */ - restricted_to_workflows?: boolean; - /** @description List of workflows the runner group should be allowed to run. This setting will be ignored unless `restricted_to_workflows` is set to `true`. */ - selected_workflows?: string[]; - /** @description The identifier of a hosted compute network configuration. */ - network_configuration_id?: string | null; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["runner-groups-org"]; - }; - }; - }; - }; - /** - * List GitHub-hosted runners in a group for an organization - * @description Lists the GitHub-hosted runners in an organization group. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/list-github-hosted-runners-in-group-for-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner-group-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - runners: components["schemas"]["actions-hosted-runner"][]; - }; - }; - }; - }; - }; - /** - * List repository access to a self-hosted runner group in an organization - * @description Lists the repositories with access to a self-hosted runner group configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/list-repo-access-to-self-hosted-runner-group-in-org": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner-group-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - repositories: components["schemas"]["minimal-repository"][]; - }; - }; - }; - }; - }; - /** - * Set repository access for a self-hosted runner group in an organization - * @description Replaces the list of repositories that have access to a self-hosted runner group configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/set-repo-access-to-self-hosted-runner-group-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner-group-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description List of repository IDs that can access the runner group. */ - selected_repository_ids: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Add repository access to a self-hosted runner group in an organization - * @description Adds a repository to the list of repositories that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an organization](#create-a-self-hosted-runner-group-for-an-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/add-repo-access-to-self-hosted-runner-group-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner-group-id"]; - repository_id: components["parameters"]["repository-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Remove repository access to a self-hosted runner group in an organization - * @description Removes a repository from the list of selected repositories that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an organization](#create-a-self-hosted-runner-group-for-an-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/remove-repo-access-to-self-hosted-runner-group-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner-group-id"]; - repository_id: components["parameters"]["repository-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List self-hosted runners in a group for an organization - * @description Lists self-hosted runners that are in a specific organization group. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/list-self-hosted-runners-in-group-for-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner-group-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - runners: components["schemas"]["runner"][]; - }; - }; - }; - }; - }; - /** - * Set self-hosted runners in a group for an organization - * @description Replaces the list of self-hosted runners that are part of an organization runner group. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/set-self-hosted-runners-in-group-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner-group-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description List of runner IDs to add to the runner group. */ - runners: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Add a self-hosted runner to a group for an organization - * @description Adds a self-hosted runner to a runner group configured in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/add-self-hosted-runner-to-group-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner-group-id"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Remove a self-hosted runner from a group for an organization - * @description Removes a self-hosted runner from a group configured in an organization. The runner is then returned to the default group. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/remove-self-hosted-runner-from-group-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner-group-id"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List self-hosted runners for an organization - * @description Lists all self-hosted runners configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/list-self-hosted-runners-for-org": { - parameters: { - query?: { - /** @description The name of a self-hosted runner. */ - name?: string; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - runners: components["schemas"]["runner"][]; - }; - }; - }; - }; - }; - /** - * List runner applications for an organization - * @description Lists binaries for the runner application that you can download and run. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/list-runner-applications-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["runner-application"][]; - }; - }; - }; - }; - /** - * Create configuration for a just-in-time runner for an organization - * @description Generates a configuration that can be passed to the runner application at startup. - * - * The authenticated user must have admin access to the organization. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/generate-runner-jitconfig-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the new runner. */ - name: string; - /** @description The ID of the runner group to register the runner to. */ - runner_group_id: number; - /** @description The names of the custom labels to add to the runner. **Minimum items**: 1. **Maximum items**: 100. */ - labels: string[]; - /** - * @description The working directory to be used for job execution, relative to the runner install directory. - * @default _work - */ - work_folder?: string; - }; - }; - }; - responses: { - 201: components["responses"]["actions_runner_jitconfig"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Create a registration token for an organization - * @description Returns a token that you can pass to the `config` script. The token expires after one hour. - * - * For example, you can replace `TOKEN` in the following example with the registration token provided by this endpoint to configure your self-hosted runner: - * - * ``` - * ./config.sh --url https://github.com/octo-org --token TOKEN - * ``` - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/create-registration-token-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["authentication-token"]; - }; - }; - }; - }; - /** - * Create a remove token for an organization - * @description Returns a token that you can pass to the `config` script to remove a self-hosted runner from an organization. The token expires after one hour. - * - * For example, you can replace `TOKEN` in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization: - * - * ``` - * ./config.sh remove --token TOKEN - * ``` - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/create-remove-token-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["authentication-token"]; - }; - }; - }; - }; - /** - * Get a self-hosted runner for an organization - * @description Gets a specific self-hosted runner configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/get-self-hosted-runner-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["runner"]; - }; - }; - }; - }; - /** - * Delete a self-hosted runner from an organization - * @description Forces the removal of a self-hosted runner from an organization. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/delete-self-hosted-runner-from-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List labels for a self-hosted runner for an organization - * @description Lists all labels for a self-hosted runner configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/list-labels-for-self-hosted-runner-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - responses: { - 200: components["responses"]["actions_runner_labels"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set custom labels for a self-hosted runner for an organization - * @description Remove all previous custom labels and set the new custom labels for a specific - * self-hosted runner configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/set-custom-labels-for-self-hosted-runner-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The names of the custom labels to set for the runner. You can pass an empty array to remove all custom labels. */ - labels: string[]; - }; - }; - }; - responses: { - 200: components["responses"]["actions_runner_labels"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Add custom labels to a self-hosted runner for an organization - * @description Adds custom labels to a self-hosted runner configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "actions/add-custom-labels-to-self-hosted-runner-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The names of the custom labels to add to the runner. */ - labels: string[]; - }; - }; - }; - responses: { - 200: components["responses"]["actions_runner_labels"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Remove all custom labels from a self-hosted runner for an organization - * @description Remove all custom labels from a self-hosted runner configured in an - * organization. Returns the remaining read-only labels from the runner. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/remove-all-custom-labels-from-self-hosted-runner-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - responses: { - 200: components["responses"]["actions_runner_labels_readonly"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Remove a custom label from a self-hosted runner for an organization - * @description Remove a custom label from a self-hosted runner configured - * in an organization. Returns the remaining labels from the runner. - * - * This endpoint returns a `404 Not Found` status if the custom label is not - * present on the runner. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/remove-custom-label-from-self-hosted-runner-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_id: components["parameters"]["runner-id"]; - name: components["parameters"]["runner-label-name"]; - }; - }; - responses: { - 200: components["responses"]["actions_runner_labels"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List organization secrets - * @description Lists all secrets available in an organization without revealing their - * encrypted values. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/list-org-secrets": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - secrets: components["schemas"]["organization-actions-secret"][]; - }; - }; - }; - }; - }; - /** - * Get an organization public key - * @description Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. - * - * The authenticated user must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-org-public-key": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-public-key"]; - }; - }; - }; - }; - /** - * Get an organization secret - * @description Gets a single organization secret without revealing its encrypted value. - * - * The authenticated user must have collaborator access to a repository to create, update, or read secrets - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["organization-actions-secret"]; - }; - }; - }; - }; - /** - * Create or update an organization secret - * @description Creates or updates an organization secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access - * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to - * use this endpoint. - * - * #### Example encrypting a secret using Node.js - * - * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. - * - * ``` - * const sodium = require('tweetsodium'); - * - * const key = "base64-encoded-public-key"; - * const value = "plain-text-secret"; - * - * // Convert the message and key to Uint8Array's (Buffer implements that interface) - * const messageBytes = Buffer.from(value); - * const keyBytes = Buffer.from(key, 'base64'); - * - * // Encrypt using LibSodium. - * const encryptedBytes = sodium.seal(messageBytes, keyBytes); - * - * // Base64 the encrypted secret - * const encrypted = Buffer.from(encryptedBytes).toString('base64'); - * - * console.log(encrypted); - * ``` - * - * - * #### Example encrypting a secret using Python - * - * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. - * - * ``` - * from base64 import b64encode - * from nacl import encoding, public - * - * def encrypt(public_key: str, secret_value: str) -> str: - * """Encrypt a Unicode string using the public key.""" - * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) - * sealed_box = public.SealedBox(public_key) - * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) - * return b64encode(encrypted).decode("utf-8") - * ``` - * - * #### Example encrypting a secret using C# - * - * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. - * - * ``` - * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); - * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); - * - * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); - * - * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); - * ``` - * - * #### Example encrypting a secret using Ruby - * - * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. - * - * ```ruby - * require "rbnacl" - * require "base64" - * - * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") - * public_key = RbNaCl::PublicKey.new(key) - * - * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) - * encrypted_secret = box.encrypt("my_secret") - * - * # Print the base64 encoded secret - * puts Base64.strict_encode64(encrypted_secret) - * ``` - */ - "actions/create-or-update-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get an organization public key](https://docs.github.com/rest/reference/actions#get-an-organization-public-key) endpoint. */ - encrypted_value?: string; - /** @description ID of the key you used to encrypt the secret. */ - key_id?: string; - /** - * @description Which type of organization repositories have access to the organization secret. `selected` means only the repositories specified by `selected_repository_ids` can access the secret. - * @enum {string} - */ - visibility: "all" | "private" | "selected"; - /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can manage the list of selected repositories using the [List selected repositories for an organization secret](https://docs.github.com/rest/reference/actions#list-selected-repositories-for-an-organization-secret), [Set selected repositories for an organization secret](https://docs.github.com/rest/reference/actions#set-selected-repositories-for-an-organization-secret), and [Remove selected repository from an organization secret](https://docs.github.com/rest/reference/actions#remove-selected-repository-from-an-organization-secret) endpoints. */ - selected_repository_ids?: (number | string)[]; - }; - }; - }; - responses: { - /** @description Response when creating a secret */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - /** @description Response when updating a secret */ - 204: { - content: never; - }; - }; - }; - /** - * Delete an organization secret - * @description Deletes a secret in an organization using the secret name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/delete-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List selected repositories for an organization secret - * @description Lists all repositories that have been selected when the `visibility` - * for repository access to a secret is set to `selected`. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/list-selected-repos-for-org-secret": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - repositories: components["schemas"]["minimal-repository"][]; - }; - }; - }; - }; - }; - /** - * Set selected repositories for an organization secret - * @description Replaces all repositories for an organization secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret). - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/set-selected-repos-for-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can add and remove individual repositories using the [Add selected repository to an organization secret](https://docs.github.com/rest/actions/secrets#add-selected-repository-to-an-organization-secret) and [Remove selected repository from an organization secret](https://docs.github.com/rest/actions/secrets#remove-selected-repository-from-an-organization-secret) endpoints. */ - selected_repository_ids: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Add selected repository to an organization secret - * @description Adds a repository to an organization secret when the `visibility` for - * repository access is set to `selected`. For more information about setting the visibility, see [Create or - * update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret). - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/add-selected-repo-to-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - repository_id: number; - }; - }; - responses: { - /** @description No Content when repository was added to the selected list */ - 204: { - content: never; - }; - /** @description Conflict when visibility type is not set to selected */ - 409: { - content: never; - }; - }; - }; - /** - * Remove selected repository from an organization secret - * @description Removes a repository from an organization secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret). - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/remove-selected-repo-from-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - repository_id: number; - }; - }; - responses: { - /** @description Response when repository was removed from the selected list */ - 204: { - content: never; - }; - /** @description Conflict when visibility type not set to selected */ - 409: { - content: never; - }; - }; - }; - /** - * List organization variables - * @description Lists all organization variables. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/list-org-variables": { - parameters: { - query?: { - per_page?: components["parameters"]["variables-per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - variables: components["schemas"]["organization-actions-variable"][]; - }; - }; - }; - }; - }; - /** - * Create an organization variable - * @description Creates an organization variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/create-org-variable": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the variable. */ - name: string; - /** @description The value of the variable. */ - value: string; - /** - * @description The type of repositories in the organization that can access the variable. `selected` means only the repositories specified by `selected_repository_ids` can access the variable. - * @enum {string} - */ - visibility: "all" | "private" | "selected"; - /** @description An array of repository ids that can access the organization variable. You can only provide a list of repository ids when the `visibility` is set to `selected`. */ - selected_repository_ids?: number[]; - }; - }; - }; - responses: { - /** @description Response when creating a variable */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - }; - }; - /** - * Get an organization variable - * @description Gets a specific variable in an organization. - * - * The authenticated user must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-org-variable": { - parameters: { - path: { - org: components["parameters"]["org"]; - name: components["parameters"]["variable-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["organization-actions-variable"]; - }; - }; - }; - }; - /** - * Delete an organization variable - * @description Deletes an organization variable using the variable name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/delete-org-variable": { - parameters: { - path: { - org: components["parameters"]["org"]; - name: components["parameters"]["variable-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update an organization variable - * @description Updates an organization variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/update-org-variable": { - parameters: { - path: { - org: components["parameters"]["org"]; - name: components["parameters"]["variable-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the variable. */ - name?: string; - /** @description The value of the variable. */ - value?: string; - /** - * @description The type of repositories in the organization that can access the variable. `selected` means only the repositories specified by `selected_repository_ids` can access the variable. - * @enum {string} - */ - visibility?: "all" | "private" | "selected"; - /** @description An array of repository ids that can access the organization variable. You can only provide a list of repository ids when the `visibility` is set to `selected`. */ - selected_repository_ids?: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List selected repositories for an organization variable - * @description Lists all repositories that can access an organization variable - * that is available to selected repositories. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/list-selected-repos-for-org-variable": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - org: components["parameters"]["org"]; - name: components["parameters"]["variable-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - repositories: components["schemas"]["minimal-repository"][]; - }; - }; - }; - /** @description Response when the visibility of the variable is not set to `selected` */ - 409: { - content: never; - }; - }; - }; - /** - * Set selected repositories for an organization variable - * @description Replaces all repositories for an organization variable that is available - * to selected repositories. Organization variables that are available to selected - * repositories have their `visibility` field set to `selected`. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/set-selected-repos-for-org-variable": { - parameters: { - path: { - org: components["parameters"]["org"]; - name: components["parameters"]["variable-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The IDs of the repositories that can access the organization variable. */ - selected_repository_ids: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - /** @description Response when the visibility of the variable is not set to `selected` */ - 409: { - content: never; - }; - }; - }; - /** - * Add selected repository to an organization variable - * @description Adds a repository to an organization variable that is available to selected repositories. - * Organization variables that are available to selected repositories have their `visibility` field set to `selected`. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/add-selected-repo-to-org-variable": { - parameters: { - path: { - org: components["parameters"]["org"]; - name: components["parameters"]["variable-name"]; - repository_id: number; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - /** @description Response when the visibility of the variable is not set to `selected` */ - 409: { - content: never; - }; - }; - }; - /** - * Remove selected repository from an organization variable - * @description Removes a repository from an organization variable that is - * available to selected repositories. Organization variables that are available to - * selected repositories have their `visibility` field set to `selected`. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - "actions/remove-selected-repo-from-org-variable": { - parameters: { - path: { - org: components["parameters"]["org"]; - name: components["parameters"]["variable-name"]; - repository_id: number; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - /** @description Response when the visibility of the variable is not set to `selected` */ - 409: { - content: never; - }; - }; - }; - /** - * Create artifact metadata storage record - * @description Create metadata storage records for artifacts associated with an organization. - * This endpoint will create a new artifact storage record on behalf of any artifact matching the provided digest and - * associated with a repository owned by the organization. - */ - "orgs/create-artifact-storage-record": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The name of the artifact. - * @example libfoo-1.2.3 - */ - name: string; - /** - * @description The digest of the artifact (algorithm:hex-encoded-digest). - * @example sha256:0ecbaa601dba202129058746c7d8e3f282d0efb5fff0... - */ - digest: string; - /** - * Format: uri - * @description The URL where the artifact is stored. - * @example https://reg.example.com/artifactory/bar/libfoo-1.2.3 - */ - artifact_url?: string; - /** - * Format: uri - * @description The path of the artifact. - * @example com/github/bar/libfoo-1.2.3 - */ - path?: string; - /** - * Format: uri - * @description The base URL of the artifact registry. - * @example https://reg.example.com/artifactory/ - */ - registry_url: string; - /** - * @description The repository name within the registry. - * @example bar - */ - repository?: string; - /** - * @description The status of the artifact (e.g., active, inactive). - * @default active - * @example active - * @enum {string} - */ - status?: "active" | "eol" | "deleted"; - }; - }; - }; - responses: { - /** @description Artifact metadata storage record stored successfully. */ - 200: { - content: { - "application/json": { - /** @example 1 */ - total_count?: number; - storage_records?: { - id?: number; - name?: string; - digest?: string; - artifact_url?: string | null; - registry_url?: string; - repository?: string | null; - status?: string; - created_at?: string; - updated_at?: string; - }[]; - }; - }; - }; - }; - }; - /** - * List artifact storage records - * @description List a collection of artifact storage records with a given subject digest that are associated with repositories owned by an organization. - * - * The collection of storage records returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `content:read` permission is required. - */ - "orgs/list-artifact-storage-records": { - parameters: { - path: { - org: components["parameters"]["org"]; - /** - * @description The parameter should be set to the attestation's subject's SHA256 digest, in the form `sha256:HEX_DIGEST`. - * @example sha256:1bb1e949e55dcefc6353e7b36c8897d2a107d8e8dca49d4e3c0ea8493fc0bc72 - */ - subject_digest: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - /** - * @description The number of storage records for this digest and organization - * @example 3 - */ - total_count?: number; - storage_records?: { - id?: number; - name?: string; - digest?: string; - artifact_url?: string; - registry_url?: string; - repository?: string; - status?: string; - created_at?: string; - updated_at?: string; - }[]; - }; - }; - }; - }; - }; - /** - * List attestations by bulk subject digests - * @description List a collection of artifact attestations associated with any entry in a list of subject digests owned by an organization. - * - * The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - "orgs/list-attestations-bulk": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description List of subject digests to fetch attestations for. */ - subject_digests: string[]; - /** - * @description Optional filter for fetching attestations with a given predicate type. - * This option accepts `provenance`, `sbom`, `release`, or freeform text - * for custom predicate types. - */ - predicate_type?: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - /** @description Mapping of subject digest to bundles. */ - attestations_subject_digests?: { - [key: string]: - | { - /** @description The bundle of the attestation. */ - bundle?: { - mediaType?: string; - verificationMaterial?: { - [key: string]: unknown; - }; - dsseEnvelope?: { - [key: string]: unknown; - }; - }; - repository_id?: number; - bundle_url?: string; - }[] - | null; - }; - /** @description Information about the current page. */ - page_info?: { - /** @description Indicates whether there is a next page. */ - has_next?: boolean; - /** @description Indicates whether there is a previous page. */ - has_previous?: boolean; - /** @description The cursor to the next page. */ - next?: string; - /** @description The cursor to the previous page. */ - previous?: string; - }; - }; - }; - }; - }; - }; - /** - * Delete attestations in bulk - * @description Delete artifact attestations in bulk by either subject digests or unique ID. - */ - "orgs/delete-attestations-bulk": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": OneOf< - [ - { - /** @description List of subject digests associated with the artifact attestations to delete. */ - subject_digests: string[]; - }, - { - /** @description List of unique IDs associated with the artifact attestations to delete. */ - attestation_ids: number[]; - }, - ] - >; - }; - }; - responses: { - /** @description Response */ - 200: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete attestations by subject digest - * @description Delete an artifact attestation by subject digest. - */ - "orgs/delete-attestations-by-subject-digest": { - parameters: { - path: { - org: components["parameters"]["org"]; - /** @description Subject Digest */ - subject_digest: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: never; - }; - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List attestation repositories - * @description List repositories owned by the provided organization that have created at least one attested artifact - * Results will be sorted in ascending order by repository ID - */ - "orgs/list-attestation-repositories": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - /** - * @description Optional filter for fetching attestations with a given predicate type. - * This option accepts `provenance`, `sbom`, `release`, or freeform text - * for custom predicate types. - */ - predicate_type?: string; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - id?: number; - name?: string; - }[]; - }; - }; - }; - }; - /** - * Delete attestations by ID - * @description Delete an artifact attestation by unique ID that is associated with a repository owned by an org. - */ - "orgs/delete-attestations-by-id": { - parameters: { - path: { - org: components["parameters"]["org"]; - /** @description Attestation ID */ - attestation_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: never; - }; - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List attestations - * @description List a collection of artifact attestations with a given subject digest that are associated with repositories owned by an organization. - * - * The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - "orgs/list-attestations": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - /** - * @description Optional filter for fetching attestations with a given predicate type. - * This option accepts `provenance`, `sbom`, `release`, or freeform text - * for custom predicate types. - */ - predicate_type?: string; - }; - path: { - org: components["parameters"]["org"]; - /** @description The parameter should be set to the attestation's subject's SHA256 digest, in the form `sha256:HEX_DIGEST`. */ - subject_digest: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - attestations?: { - /** - * @description The attestation's Sigstore Bundle. - * Refer to the [Sigstore Bundle Specification](https://github.com/sigstore/protobuf-specs/blob/main/protos/sigstore_bundle.proto) for more information. - */ - bundle?: { - mediaType?: string; - verificationMaterial?: { - [key: string]: unknown; - }; - dsseEnvelope?: { - [key: string]: unknown; - }; - }; - repository_id?: number; - bundle_url?: string; - initiator?: string; - }[]; - }; - }; - }; - }; - }; - /** - * List users blocked by an organization - * @description List the users blocked by an organization. - */ - "orgs/list-blocked-users": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - }; - /** - * Check if a user is blocked by an organization - * @description Returns a 204 if the given user is blocked by the given organization. Returns a 404 if the organization is not blocking the user, or if the user account has been identified as spam by GitHub. - */ - "orgs/check-blocked-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description If the user is blocked */ - 204: { - content: never; - }; - /** @description If the user is not blocked */ - 404: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - }; - /** - * Block a user from an organization - * @description Blocks the given user on behalf of the specified organization and returns a 204. If the organization cannot block the given user a 422 is returned. - */ - "orgs/block-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Unblock a user from an organization - * @description Unblocks the given user on behalf of the specified organization. - */ - "orgs/unblock-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List campaigns for an organization - * @description Lists campaigns in an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - */ - "campaigns/list-org-campaigns": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - direction?: components["parameters"]["direction"]; - /** @description If specified, only campaigns with this state will be returned. */ - state?: components["schemas"]["campaign-state"]; - /** @description The property by which to sort the results. */ - sort?: "created" | "updated" | "ends_at" | "published"; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["campaign-summary"][]; - }; - }; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Create a campaign for an organization - * @description Create a campaign for an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - * - * Fine-grained tokens must have the "Code scanning alerts" repository permissions (read) on all repositories included - * in the campaign. - */ - "campaigns/create-campaign": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the campaign */ - name: string; - /** @description A description for the campaign */ - description: string; - /** @description The logins of the users to set as the campaign managers. At this time, only a single manager can be supplied. */ - managers?: string[]; - /** @description The slugs of the teams to set as the campaign managers. */ - team_managers?: string[]; - /** - * Format: date-time - * @description The end date and time of the campaign. The date must be in the future. - */ - ends_at: string; - /** - * Format: uri - * @description The contact link of the campaign. Must be a URI. - */ - contact_link?: string | null; - /** @description The code scanning alerts to include in this campaign */ - code_scanning_alerts?: - | { - /** @description The repository id */ - repository_id: number; - /** @description The alert numbers */ - alert_numbers: number[]; - }[] - | null; - /** - * @description If true, will automatically generate issues for the campaign. The default is false. - * @default false - */ - generate_issues?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["campaign-summary"]; - }; - }; - /** @description Bad Request */ - 400: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - 404: components["responses"]["not_found"]; - /** @description Unprocessable Entity */ - 422: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - /** @description Too Many Requests */ - 429: { - content: never; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get a campaign for an organization - * @description Gets a campaign for an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - */ - "campaigns/get-campaign-summary": { - parameters: { - path: { - org: components["parameters"]["org"]; - /** @description The campaign number. */ - campaign_number: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["campaign-summary"]; - }; - }; - 404: components["responses"]["not_found"]; - /** @description Unprocessable Entity */ - 422: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Delete a campaign for an organization - * @description Deletes a campaign in an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - */ - "campaigns/delete-campaign": { - parameters: { - path: { - org: components["parameters"]["org"]; - /** @description The campaign number. */ - campaign_number: number; - }; - }; - responses: { - /** @description Deletion successful */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Update a campaign - * @description Updates a campaign in an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - */ - "campaigns/update-campaign": { - parameters: { - path: { - org: components["parameters"]["org"]; - /** @description The campaign number. */ - campaign_number: number; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the campaign */ - name?: string; - /** @description A description for the campaign */ - description?: string; - /** @description The logins of the users to set as the campaign managers. At this time, only a single manager can be supplied. */ - managers?: string[]; - /** @description The slugs of the teams to set as the campaign managers. */ - team_managers?: string[]; - /** - * Format: date-time - * @description The end date and time of the campaign, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ. - */ - ends_at?: string; - /** - * Format: uri - * @description The contact link of the campaign. Must be a URI. - */ - contact_link?: string | null; - state?: components["schemas"]["campaign-state"]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["campaign-summary"]; - }; - }; - /** @description Bad Request */ - 400: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - 404: components["responses"]["not_found"]; - /** @description Unprocessable Entity */ - 422: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List code scanning alerts for an organization - * @description Lists code scanning alerts for the default branch for all eligible repositories in an organization. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` or `repo`s cope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/list-alerts-for-org": { - parameters: { - query?: { - tool_name?: components["parameters"]["tool-name"]; - tool_guid?: components["parameters"]["tool-guid"]; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - direction?: components["parameters"]["direction"]; - /** @description If specified, only code scanning alerts with this state will be returned. */ - state?: components["schemas"]["code-scanning-alert-state-query"]; - /** @description The property by which to sort the results. */ - sort?: "created" | "updated"; - /** @description If specified, only code scanning alerts with this severity will be returned. */ - severity?: components["schemas"]["code-scanning-alert-severity"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["code-scanning-organization-alert-items"][]; - }; - }; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get code security configurations for an organization - * @description Lists all code security configurations available in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - "code-security/get-configurations-for-org": { - parameters: { - query?: { - /** @description The target type of the code security configuration */ - target_type?: "global" | "all"; - /** @description The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - per_page?: number; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-security-configuration"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a code security configuration - * @description Creates a code security configuration in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - "code-security/create-configuration": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the code security configuration. Must be unique within the organization. */ - name: string; - /** @description A description of the code security configuration */ - description: string; - /** - * @description The enablement status of GitHub Advanced Security features. `enabled` will enable both Code Security and Secret Protection features. - * - * > [!WARNING] - * > `code_security` and `secret_protection` are deprecated values for this field. Prefer the individual `code_security` and `secret_protection` fields to set the status of these features. - * - * @default disabled - * @enum {string} - */ - advanced_security?: - | "enabled" - | "disabled" - | "code_security" - | "secret_protection"; - /** - * @description The enablement status of GitHub Code Security features. - * @enum {string} - */ - code_security?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Dependency Graph - * @default enabled - * @enum {string} - */ - dependency_graph?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Automatic dependency submission - * @default disabled - * @enum {string} - */ - dependency_graph_autosubmit_action?: - | "enabled" - | "disabled" - | "not_set"; - /** @description Feature options for Automatic dependency submission */ - dependency_graph_autosubmit_action_options?: { - /** - * @description Whether to use runners labeled with 'dependency-submission' or standard GitHub runners. - * @default false - */ - labeled_runners?: boolean; - }; - /** - * @description The enablement status of Dependabot alerts - * @default disabled - * @enum {string} - */ - dependabot_alerts?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Dependabot security updates - * @default disabled - * @enum {string} - */ - dependabot_security_updates?: "enabled" | "disabled" | "not_set"; - code_scanning_options?: components["schemas"]["code-scanning-options"]; - /** - * @description The enablement status of code scanning default setup - * @default disabled - * @enum {string} - */ - code_scanning_default_setup?: "enabled" | "disabled" | "not_set"; - code_scanning_default_setup_options?: components["schemas"]["code-scanning-default-setup-options"]; - /** - * @description The enablement status of code scanning delegated alert dismissal - * @default not_set - * @enum {string} - */ - code_scanning_delegated_alert_dismissal?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of GitHub Secret Protection features. - * @enum {string} - */ - secret_protection?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning - * @default disabled - * @enum {string} - */ - secret_scanning?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning push protection - * @default disabled - * @enum {string} - */ - secret_scanning_push_protection?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning delegated bypass - * @default disabled - * @enum {string} - */ - secret_scanning_delegated_bypass?: "enabled" | "disabled" | "not_set"; - /** @description Feature options for secret scanning delegated bypass */ - secret_scanning_delegated_bypass_options?: { - /** @description The bypass reviewers for secret scanning delegated bypass */ - reviewers?: { - /** @description The ID of the team or role selected as a bypass reviewer */ - reviewer_id: number; - /** - * @description The type of the bypass reviewer - * @enum {string} - */ - reviewer_type: "TEAM" | "ROLE"; - }[]; - }; - /** - * @description The enablement status of secret scanning validity checks - * @default disabled - * @enum {string} - */ - secret_scanning_validity_checks?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning non provider patterns - * @default disabled - * @enum {string} - */ - secret_scanning_non_provider_patterns?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of Copilot secret scanning - * @default disabled - * @enum {string} - */ - secret_scanning_generic_secrets?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning delegated alert dismissal - * @enum {string} - */ - secret_scanning_delegated_alert_dismissal?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of private vulnerability reporting - * @default disabled - * @enum {string} - */ - private_vulnerability_reporting?: "enabled" | "disabled" | "not_set"; - /** - * @description The enforcement status for a security configuration - * @default enforced - * @enum {string} - */ - enforcement?: "enforced" | "unenforced"; - }; - }; - }; - responses: { - /** @description Successfully created code security configuration */ - 201: { - content: { - "application/json": components["schemas"]["code-security-configuration"]; - }; - }; - }; - }; - /** - * Get default code security configurations - * @description Lists the default code security configurations for an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - "code-security/get-default-configurations": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-security-default-configurations"]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Detach configurations from repositories - * @description Detach code security configuration(s) from a set of repositories. - * Repositories will retain their settings but will no longer be associated with the configuration. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - "code-security/detach-configuration": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description An array of repository IDs to detach from configurations. Up to 250 IDs can be provided. */ - selected_repository_ids?: number[]; - }; - }; - }; - responses: { - 204: components["responses"]["no_content"]; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - }; - }; - /** - * Get a code security configuration - * @description Gets a code security configuration available in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - "code-security/get-configuration": { - parameters: { - path: { - org: components["parameters"]["org"]; - configuration_id: components["parameters"]["configuration-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-security-configuration"]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a code security configuration - * @description Deletes the desired code security configuration from an organization. - * Repositories attached to the configuration will retain their settings but will no longer be associated with - * the configuration. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - "code-security/delete-configuration": { - parameters: { - path: { - org: components["parameters"]["org"]; - configuration_id: components["parameters"]["configuration-id"]; - }; - }; - responses: { - 204: components["responses"]["no_content"]; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - }; - }; - /** - * Update a code security configuration - * @description Updates a code security configuration in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - "code-security/update-configuration": { - parameters: { - path: { - org: components["parameters"]["org"]; - configuration_id: components["parameters"]["configuration-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the code security configuration. Must be unique within the organization. */ - name?: string; - /** @description A description of the code security configuration */ - description?: string; - /** - * @description The enablement status of GitHub Advanced Security features. `enabled` will enable both Code Security and Secret Protection features. - * - * > [!WARNING] - * > `code_security` and `secret_protection` are deprecated values for this field. Prefer the individual `code_security` and `secret_protection` fields to set the status of these features. - * - * @enum {string} - */ - advanced_security?: - | "enabled" - | "disabled" - | "code_security" - | "secret_protection"; - /** - * @description The enablement status of GitHub Code Security features. - * @enum {string} - */ - code_security?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Dependency Graph - * @enum {string} - */ - dependency_graph?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Automatic dependency submission - * @enum {string} - */ - dependency_graph_autosubmit_action?: - | "enabled" - | "disabled" - | "not_set"; - /** @description Feature options for Automatic dependency submission */ - dependency_graph_autosubmit_action_options?: { - /** @description Whether to use runners labeled with 'dependency-submission' or standard GitHub runners. */ - labeled_runners?: boolean; - }; - /** - * @description The enablement status of Dependabot alerts - * @enum {string} - */ - dependabot_alerts?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of Dependabot security updates - * @enum {string} - */ - dependabot_security_updates?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of code scanning default setup - * @enum {string} - */ - code_scanning_default_setup?: "enabled" | "disabled" | "not_set"; - code_scanning_default_setup_options?: components["schemas"]["code-scanning-default-setup-options"]; - /** - * @description The enablement status of code scanning delegated alert dismissal - * @default disabled - * @enum {string} - */ - code_scanning_delegated_alert_dismissal?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of GitHub Secret Protection features. - * @enum {string} - */ - secret_protection?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning - * @enum {string} - */ - secret_scanning?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning push protection - * @enum {string} - */ - secret_scanning_push_protection?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning delegated bypass - * @enum {string} - */ - secret_scanning_delegated_bypass?: "enabled" | "disabled" | "not_set"; - /** @description Feature options for secret scanning delegated bypass */ - secret_scanning_delegated_bypass_options?: { - /** @description The bypass reviewers for secret scanning delegated bypass */ - reviewers?: { - /** @description The ID of the team or role selected as a bypass reviewer */ - reviewer_id: number; - /** - * @description The type of the bypass reviewer - * @enum {string} - */ - reviewer_type: "TEAM" | "ROLE"; - }[]; - }; - /** - * @description The enablement status of secret scanning validity checks - * @enum {string} - */ - secret_scanning_validity_checks?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning non-provider patterns - * @enum {string} - */ - secret_scanning_non_provider_patterns?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of Copilot secret scanning - * @enum {string} - */ - secret_scanning_generic_secrets?: "enabled" | "disabled" | "not_set"; - /** - * @description The enablement status of secret scanning delegated alert dismissal - * @enum {string} - */ - secret_scanning_delegated_alert_dismissal?: - | "enabled" - | "disabled" - | "not_set"; - /** - * @description The enablement status of private vulnerability reporting - * @enum {string} - */ - private_vulnerability_reporting?: "enabled" | "disabled" | "not_set"; - /** - * @description The enforcement status for a security configuration - * @enum {string} - */ - enforcement?: "enforced" | "unenforced"; - }; - }; - }; - responses: { - /** @description Response when a configuration is updated */ - 200: { - content: { - "application/json": components["schemas"]["code-security-configuration"]; - }; - }; - /** @description Response when no new updates are made */ - 204: { - content: never; - }; - }; - }; - /** - * Attach a configuration to repositories - * @description Attach a code security configuration to a set of repositories. If the repositories specified are already attached to a configuration, they will be re-attached to the provided configuration. - * - * If insufficient GHAS licenses are available to attach the configuration to a repository, only free features will be enabled. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - "code-security/attach-configuration": { - parameters: { - path: { - org: components["parameters"]["org"]; - configuration_id: components["parameters"]["configuration-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The type of repositories to attach the configuration to. `selected` means the configuration will be attached to only the repositories specified by `selected_repository_ids` - * @enum {string} - */ - scope: - | "all" - | "all_without_configurations" - | "public" - | "private_or_internal" - | "selected"; - /** @description An array of repository IDs to attach the configuration to. You can only provide a list of repository ids when the `scope` is set to `selected`. */ - selected_repository_ids?: number[]; - }; - }; - }; - responses: { - 202: components["responses"]["accepted"]; - }; - }; - /** - * Set a code security configuration as a default for an organization - * @description Sets a code security configuration as a default to be applied to new repositories in your organization. - * - * This configuration will be applied to the matching repository type (all, none, public, private and internal) by default when they are created. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - "code-security/set-configuration-as-default": { - parameters: { - path: { - org: components["parameters"]["org"]; - configuration_id: components["parameters"]["configuration-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description Specify which types of repository this security configuration should be applied to by default. - * @enum {string} - */ - default_for_new_repos?: - | "all" - | "none" - | "private_and_internal" - | "public"; - }; - }; - }; - responses: { - /** @description Default successfully changed. */ - 200: { - content: { - "application/json": { - /** - * @description Specifies which types of repository this security configuration is applied to by default. - * @enum {string} - */ - default_for_new_repos?: - | "all" - | "none" - | "private_and_internal" - | "public"; - configuration?: components["schemas"]["code-security-configuration"]; - }; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get repositories associated with a code security configuration - * @description Lists the repositories associated with a code security configuration in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - "code-security/get-repositories-for-configuration": { - parameters: { - query?: { - /** @description The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - per_page?: number; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - /** - * @description A comma-separated list of statuses. If specified, only repositories with these attachment statuses will be returned. - * - * Can be: `all`, `attached`, `attaching`, `detached`, `removed`, `enforced`, `failed`, `updating`, `removed_by_enterprise` - */ - status?: string; - }; - path: { - org: components["parameters"]["org"]; - configuration_id: components["parameters"]["configuration-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-security-configuration-repositories"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List codespaces for the organization - * @description Lists the codespaces associated to a specified organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/list-in-organization": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - codespaces: components["schemas"]["codespace"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Manage access control for organization codespaces - * @deprecated - * @description Sets which users can access codespaces in an organization. This is synonymous with granting or revoking codespaces access permissions for users according to the visibility. - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/set-codespaces-access": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description Which users can access codespaces in the organization. `disabled` means that no users can access codespaces in the organization. - * @enum {string} - */ - visibility: - | "disabled" - | "selected_members" - | "all_members" - | "all_members_and_outside_collaborators"; - /** @description The usernames of the organization members who should have access to codespaces in the organization. Required when `visibility` is `selected_members`. The provided list of usernames will replace any existing value. */ - selected_usernames?: string[]; - }; - }; - }; - responses: { - /** @description Response when successfully modifying permissions. */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - /** @description Users are neither members nor collaborators of this organization. */ - 400: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Add users to Codespaces access for an organization - * @deprecated - * @description Codespaces for the specified users will be billed to the organization. - * - * To use this endpoint, the access settings for the organization must be set to `selected_members`. - * For information on how to change this setting, see "[Manage access control for organization codespaces](https://docs.github.com/rest/codespaces/organizations#manage-access-control-for-organization-codespaces)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/set-codespaces-access-users": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The usernames of the organization members whose codespaces be billed to the organization. */ - selected_usernames: string[]; - }; - }; - }; - responses: { - /** @description Response when successfully modifying permissions. */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - /** @description Users are neither members nor collaborators of this organization. */ - 400: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Remove users from Codespaces access for an organization - * @deprecated - * @description Codespaces for the specified users will no longer be billed to the organization. - * - * To use this endpoint, the access settings for the organization must be set to `selected_members`. - * For information on how to change this setting, see "[Manage access control for organization codespaces](https://docs.github.com/rest/codespaces/organizations#manage-access-control-for-organization-codespaces)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/delete-codespaces-access-users": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The usernames of the organization members whose codespaces should not be billed to the organization. */ - selected_usernames: string[]; - }; - }; - }; - responses: { - /** @description Response when successfully modifying permissions. */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - /** @description Users are neither members nor collaborators of this organization. */ - 400: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List organization secrets - * @description Lists all Codespaces development environment secrets available at the organization-level without revealing their encrypted - * values. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/list-org-secrets": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - secrets: components["schemas"]["codespaces-org-secret"][]; - }; - }; - }; - }; - }; - /** - * Get an organization public key - * @description Gets a public key for an organization, which is required in order to encrypt secrets. You need to encrypt the value of a secret before you can create or update secrets. - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/get-org-public-key": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["codespaces-public-key"]; - }; - }; - }; - }; - /** - * Get an organization secret - * @description Gets an organization development environment secret without revealing its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/get-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["codespaces-org-secret"]; - }; - }; - }; - }; - /** - * Create or update an organization secret - * @description Creates or updates an organization development environment secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/create-or-update-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get an organization public key](https://docs.github.com/rest/codespaces/organization-secrets#get-an-organization-public-key) endpoint. */ - encrypted_value?: string; - /** @description The ID of the key you used to encrypt the secret. */ - key_id?: string; - /** - * @description Which type of organization repositories have access to the organization secret. `selected` means only the repositories specified by `selected_repository_ids` can access the secret. - * @enum {string} - */ - visibility: "all" | "private" | "selected"; - /** @description An array of repository IDs that can access the organization secret. You can only provide a list of repository IDs when the `visibility` is set to `selected`. You can manage the list of selected repositories using the [List selected repositories for an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#list-selected-repositories-for-an-organization-secret), [Set selected repositories for an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#set-selected-repositories-for-an-organization-secret), and [Remove selected repository from an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#remove-selected-repository-from-an-organization-secret) endpoints. */ - selected_repository_ids?: number[]; - }; - }; - }; - responses: { - /** @description Response when creating a secret */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - /** @description Response when updating a secret */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Delete an organization secret - * @description Deletes an organization development environment secret using the secret name. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/delete-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List selected repositories for an organization secret - * @description Lists all repositories that have been selected when the `visibility` - * for repository access to a secret is set to `selected`. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/list-selected-repos-for-org-secret": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - repositories: components["schemas"]["minimal-repository"][]; - }; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set selected repositories for an organization secret - * @description Replaces all repositories for an organization development environment secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/set-selected-repos-for-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can add and remove individual repositories using the [Set selected repositories for an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#set-selected-repositories-for-an-organization-secret) and [Remove selected repository from an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#remove-selected-repository-from-an-organization-secret) endpoints. */ - selected_repository_ids: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - /** @description Conflict when visibility type not set to selected */ - 409: { - content: never; - }; - }; - }; - /** - * Add selected repository to an organization secret - * @description Adds a repository to an organization development environment secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/add-selected-repo-to-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - repository_id: number; - }; - }; - responses: { - /** @description No Content when repository was added to the selected list */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - /** @description Conflict when visibility type is not set to selected */ - 409: { - content: never; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove selected repository from an organization secret - * @description Removes a repository from an organization development environment secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/remove-selected-repo-from-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - repository_id: number; - }; - }; - responses: { - /** @description Response when repository was removed from the selected list */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - /** @description Conflict when visibility type not set to selected */ - 409: { - content: never; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get Copilot seat information and settings for an organization - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Gets information about an organization's Copilot subscription, including seat breakdown - * and feature policies. To configure these settings, go to your organization's settings on GitHub.com. - * For more information, see "[Managing policies for Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-policies-for-copilot-business-in-your-organization)." - * - * Only organization owners can view details about the organization's Copilot Business or Copilot Enterprise subscription. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `read:org` scopes to use this endpoint. - */ - "copilot/get-copilot-organization-details": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description OK */ - 200: { - content: { - "application/json": components["schemas"]["copilot-organization-details"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - /** @description There is a problem with your account's associated payment method. */ - 422: { - content: never; - }; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List all Copilot seat assignments for an organization - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Lists all Copilot seats for which an organization with a Copilot Business or Copilot Enterprise subscription is currently being billed. - * Only organization owners can view assigned seats. - * - * Each seat object contains information about the assigned user's most recent Copilot activity. Users must have telemetry enabled in their IDE for Copilot in the IDE activity to be reflected in `last_activity_at`. - * For more information about activity data, see [Metrics data properties for GitHub Copilot](https://docs.github.com/copilot/reference/metrics-data). - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `read:org` scopes to use this endpoint. - */ - "copilot/list-copilot-seats": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - /** @description The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - per_page?: number; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - /** @description Total number of Copilot seats for the organization currently being billed. */ - total_seats?: number; - seats?: components["schemas"]["copilot-seat-details"][]; - }; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Add teams to the Copilot subscription for an organization - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Purchases a GitHub Copilot seat for all users within each specified team. - * The organization will be billed for each seat based on the organization's Copilot plan. For more information about Copilot pricing, see "[About billing for GitHub Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-the-copilot-subscription-for-your-organization/about-billing-for-github-copilot-in-your-organization)." - * - * Only organization owners can purchase Copilot seats for their organization members. The organization must have a Copilot Business or Copilot Enterprise subscription and a configured suggestion matching policy. - * For more information about setting up a Copilot subscription, see "[Subscribing to Copilot for your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-the-copilot-subscription-for-your-organization/subscribing-to-copilot-for-your-organization)." - * For more information about setting a suggestion matching policy, see "[Managing policies for Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#policies-for-suggestion-matching)." - * - * The response contains the total number of new seats that were created and existing seats that were refreshed. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `admin:org` scopes to use this endpoint. - */ - "copilot/add-copilot-seats-for-teams": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description List of team names within the organization to which to grant access to GitHub Copilot. */ - selected_teams: string[]; - }; - }; - }; - responses: { - /** @description OK */ - 201: { - content: { - "application/json": { - seats_created: number; - }; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - /** @description Copilot Business or Enterprise is not enabled for this organization, billing has not been set up for this organization, a public code suggestions policy has not been set for this organization, or the organization's Copilot access setting is set to enable Copilot for all users or is unconfigured. */ - 422: { - content: never; - }; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Remove teams from the Copilot subscription for an organization - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Sets seats for all members of each team specified to "pending cancellation". - * This will cause the members of the specified team(s) to lose access to GitHub Copilot at the end of the current billing cycle unless they retain access through another team. - * For more information about disabling access to Copilot, see "[Revoking access to Copilot for members of your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-access-to-github-copilot-in-your-organization/revoking-access-to-copilot-for-members-of-your-organization)." - * - * Only organization owners can cancel Copilot seats for their organization members. - * - * The response contains the total number of seats set to "pending cancellation". - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `admin:org` scopes to use this endpoint. - */ - "copilot/cancel-copilot-seat-assignment-for-teams": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The names of teams from which to revoke access to GitHub Copilot. */ - selected_teams: string[]; - }; - }; - }; - responses: { - /** @description OK */ - 200: { - content: { - "application/json": { - seats_cancelled: number; - }; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - /** @description Copilot Business or Enterprise is not enabled for this organization, billing has not been set up for this organization, a public code suggestions policy has not been set for this organization, or the organization's Copilot access setting is set to enable Copilot for all users or is unconfigured. */ - 422: { - content: never; - }; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Add users to the Copilot subscription for an organization - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Purchases a GitHub Copilot seat for each user specified. - * The organization will be billed for each seat based on the organization's Copilot plan. For more information about Copilot pricing, see "[About billing for GitHub Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-the-copilot-subscription-for-your-organization/about-billing-for-github-copilot-in-your-organization)." - * - * Only organization owners can purchase Copilot seats for their organization members. The organization must have a Copilot Business or Copilot Enterprise subscription and a configured suggestion matching policy. - * For more information about setting up a Copilot subscription, see "[Subscribing to Copilot for your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-the-copilot-subscription-for-your-organization/subscribing-to-copilot-for-your-organization)." - * For more information about setting a suggestion matching policy, see "[Managing policies for Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#policies-for-suggestion-matching)." - * - * The response contains the total number of new seats that were created and existing seats that were refreshed. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `admin:org` scopes to use this endpoint. - */ - "copilot/add-copilot-seats-for-users": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The usernames of the organization members to be granted access to GitHub Copilot. */ - selected_usernames: string[]; - }; - }; - }; - responses: { - /** @description OK */ - 201: { - content: { - "application/json": { - seats_created: number; - }; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - /** @description Copilot Business or Enterprise is not enabled for this organization, billing has not been set up for this organization, a public code suggestions policy has not been set for this organization, or the organization's Copilot access setting is set to enable Copilot for all users or is unconfigured. */ - 422: { - content: never; - }; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Remove users from the Copilot subscription for an organization - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Sets seats for all users specified to "pending cancellation". - * This will cause the specified users to lose access to GitHub Copilot at the end of the current billing cycle unless they retain access through team membership. - * For more information about disabling access to Copilot, see "[Revoking access to Copilot for members of your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-access-to-github-copilot-in-your-organization/revoking-access-to-copilot-for-members-of-your-organization)." - * - * Only organization owners can cancel Copilot seats for their organization members. - * - * The response contains the total number of seats set to "pending cancellation". - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `admin:org` scopes to use this endpoint. - */ - "copilot/cancel-copilot-seat-assignment-for-users": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The usernames of the organization members for which to revoke access to GitHub Copilot. */ - selected_usernames: string[]; - }; - }; - }; - responses: { - /** @description OK */ - 200: { - content: { - "application/json": { - seats_cancelled: number; - }; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - /** @description Copilot Business or Enterprise is not enabled for this organization, billing has not been set up for this organization, a public code suggestions policy has not been set for this organization, the seat management setting is set to enable Copilot for all users or is unconfigured, or a user's seat cannot be cancelled because it was assigned to them via a team. */ - 422: { - content: never; - }; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get Copilot metrics for an organization - * @description Use this endpoint to see a breakdown of aggregated metrics for various GitHub Copilot features. See the response schema tab for detailed metrics definitions. - * - * > [!NOTE] - * > This endpoint will only return results for a given day if the organization contained **five or more members with active Copilot licenses** on that day, as evaluated at the end of that day. - * - * The response contains metrics for up to 100 days prior. Metrics are processed once per day for the previous day, - * and the response will only include data up until yesterday. In order for an end user to be counted towards these metrics, - * they must have telemetry enabled in their IDE. - * - * To access this endpoint, the Copilot Metrics API access policy must be enabled for the organization. - * Only organization owners and owners and billing managers of the parent enterprise can view Copilot metrics. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot`, `read:org`, or `read:enterprise` scopes to use this endpoint. - */ - "copilot/copilot-metrics-for-organization": { - parameters: { - query?: { - /** @description Show usage metrics since this date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:MM:SSZ`). Maximum value is 100 days ago. */ - since?: string; - /** @description Show usage metrics until this date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:MM:SSZ`) and should not preceed the `since` date if it is passed. */ - until?: string; - page?: components["parameters"]["page"]; - /** @description The number of days of metrics to display per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - per_page?: number; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["copilot-usage-metrics-day"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["usage_metrics_api_disabled"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List Dependabot alerts for an organization - * @description Lists Dependabot alerts for an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - "dependabot/list-alerts-for-org": { - parameters: { - query?: { - state?: components["parameters"]["dependabot-alert-comma-separated-states"]; - severity?: components["parameters"]["dependabot-alert-comma-separated-severities"]; - ecosystem?: components["parameters"]["dependabot-alert-comma-separated-ecosystems"]; - package?: components["parameters"]["dependabot-alert-comma-separated-packages"]; - epss_percentage?: components["parameters"]["dependabot-alert-comma-separated-epss"]; - artifact_registry_url?: components["parameters"]["dependabot-alert-comma-separated-artifact-registry-urls"]; - artifact_registry?: components["parameters"]["dependabot-alert-comma-separated-artifact-registry"]; - has?: components["parameters"]["dependabot-alert-org-scope-comma-separated-has"]; - runtime_risk?: components["parameters"]["dependabot-alert-comma-separated-runtime-risk"]; - scope?: components["parameters"]["dependabot-alert-scope"]; - sort?: components["parameters"]["dependabot-alert-sort"]; - direction?: components["parameters"]["direction"]; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["dependabot-alert-with-repository"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List organization secrets - * @description Lists all secrets available in an organization without revealing their - * encrypted values. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "dependabot/list-org-secrets": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - secrets: components["schemas"]["organization-dependabot-secret"][]; - }; - }; - }; - }; - }; - /** - * Get an organization public key - * @description Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "dependabot/get-org-public-key": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["dependabot-public-key"]; - }; - }; - }; - }; - /** - * Get an organization secret - * @description Gets a single organization secret without revealing its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "dependabot/get-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["organization-dependabot-secret"]; - }; - }; - }; - }; - /** - * Create or update an organization secret - * @description Creates or updates an organization secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access - * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization - * permission to use this endpoint. - * - * #### Example encrypting a secret using Node.js - * - * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. - * - * ``` - * const sodium = require('tweetsodium'); - * - * const key = "base64-encoded-public-key"; - * const value = "plain-text-secret"; - * - * // Convert the message and key to Uint8Array's (Buffer implements that interface) - * const messageBytes = Buffer.from(value); - * const keyBytes = Buffer.from(key, 'base64'); - * - * // Encrypt using LibSodium. - * const encryptedBytes = sodium.seal(messageBytes, keyBytes); - * - * // Base64 the encrypted secret - * const encrypted = Buffer.from(encryptedBytes).toString('base64'); - * - * console.log(encrypted); - * ``` - * - * - * #### Example encrypting a secret using Python - * - * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. - * - * ``` - * from base64 import b64encode - * from nacl import encoding, public - * - * def encrypt(public_key: str, secret_value: str) -> str: - * """Encrypt a Unicode string using the public key.""" - * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) - * sealed_box = public.SealedBox(public_key) - * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) - * return b64encode(encrypted).decode("utf-8") - * ``` - * - * #### Example encrypting a secret using C# - * - * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. - * - * ``` - * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); - * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); - * - * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); - * - * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); - * ``` - * - * #### Example encrypting a secret using Ruby - * - * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. - * - * ```ruby - * require "rbnacl" - * require "base64" - * - * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") - * public_key = RbNaCl::PublicKey.new(key) - * - * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) - * encrypted_secret = box.encrypt("my_secret") - * - * # Print the base64 encoded secret - * puts Base64.strict_encode64(encrypted_secret) - * ``` - */ - "dependabot/create-or-update-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get an organization public key](https://docs.github.com/rest/reference/dependabot#get-an-organization-public-key) endpoint. */ - encrypted_value?: string; - /** @description ID of the key you used to encrypt the secret. */ - key_id?: string; - /** - * @description Which type of organization repositories have access to the organization secret. `selected` means only the repositories specified by `selected_repository_ids` can access the secret. - * @enum {string} - */ - visibility: "all" | "private" | "selected"; - /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can manage the list of selected repositories using the [List selected repositories for an organization secret](https://docs.github.com/rest/reference/dependabot#list-selected-repositories-for-an-organization-secret), [Set selected repositories for an organization secret](https://docs.github.com/rest/reference/dependabot#set-selected-repositories-for-an-organization-secret), and [Remove selected repository from an organization secret](https://docs.github.com/rest/reference/dependabot#remove-selected-repository-from-an-organization-secret) endpoints. */ - selected_repository_ids?: (string | number)[]; - }; - }; - }; - responses: { - /** @description Response when creating a secret */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - /** @description Response when updating a secret */ - 204: { - content: never; - }; - }; - }; - /** - * Delete an organization secret - * @description Deletes a secret in an organization using the secret name. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "dependabot/delete-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List selected repositories for an organization secret - * @description Lists all repositories that have been selected when the `visibility` - * for repository access to a secret is set to `selected`. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "dependabot/list-selected-repos-for-org-secret": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - repositories: components["schemas"]["minimal-repository"][]; - }; - }; - }; - }; - }; - /** - * Set selected repositories for an organization secret - * @description Replaces all repositories for an organization secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "dependabot/set-selected-repos-for-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can add and remove individual repositories using the [Set selected repositories for an organization secret](https://docs.github.com/rest/dependabot/secrets#set-selected-repositories-for-an-organization-secret) and [Remove selected repository from an organization secret](https://docs.github.com/rest/dependabot/secrets#remove-selected-repository-from-an-organization-secret) endpoints. */ - selected_repository_ids: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Add selected repository to an organization secret - * @description Adds a repository to an organization secret when the `visibility` for - * repository access is set to `selected`. The visibility is set when you [Create or - * update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "dependabot/add-selected-repo-to-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - repository_id: number; - }; - }; - responses: { - /** @description No Content when repository was added to the selected list */ - 204: { - content: never; - }; - /** @description Conflict when visibility type is not set to selected */ - 409: { - content: never; - }; - }; - }; - /** - * Remove selected repository from an organization secret - * @description Removes a repository from an organization secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "dependabot/remove-selected-repo-from-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - repository_id: number; - }; - }; - responses: { - /** @description Response when repository was removed from the selected list */ - 204: { - content: never; - }; - /** @description Conflict when visibility type not set to selected */ - 409: { - content: never; - }; - }; - }; - /** - * Get list of conflicting packages during Docker migration for organization - * @description Lists all packages that are in a specific organization, are readable by the requesting user, and that encountered a conflict during a Docker migration. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. - */ - "packages/list-docker-migration-conflicting-packages-for-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package"][]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * List public organization events - * @description > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - "activity/list-public-org-events": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - }; - /** - * List failed organization invitations - * @description The return hash contains `failed_at` and `failed_reason` fields which represent the time at which the invitation failed and the reason for the failure. - */ - "orgs/list-failed-invitations": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["organization-invitation"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List organization webhooks - * @description List webhooks for an organization. - * - * The authenticated user must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - "orgs/list-webhooks": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["org-hook"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create an organization webhook - * @description Create a hook that posts payloads in JSON format. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or - * edit webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - "orgs/create-webhook": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Must be passed as "web". */ - name: string; - /** @description Key/value pairs to provide settings for this webhook. */ - config: { - url: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - /** @example "kdaigle" */ - username?: string; - /** @example "password" */ - password?: string; - }; - /** - * @description Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. Set to `["*"]` to receive all possible events. - * @default [ - * "push" - * ] - */ - events?: string[]; - /** - * @description Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications. - * @default true - */ - active?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/orgs/octocat/hooks/1 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["org-hook"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get an organization webhook - * @description Returns a webhook configured in an organization. To get only the webhook - * `config` properties, see "[Get a webhook configuration for an organization](/rest/orgs/webhooks#get-a-webhook-configuration-for-an-organization). - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - "orgs/get-webhook": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["org-hook"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete an organization webhook - * @description Delete a webhook for an organization. - * - * The authenticated user must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - "orgs/delete-webhook": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update an organization webhook - * @description Updates a webhook configured in an organization. When you update a webhook, - * the `secret` will be overwritten. If you previously had a `secret` set, you must - * provide the same `secret` or set a new `secret` or the secret will be removed. If - * you are only updating individual webhook `config` properties, use "[Update a webhook - * configuration for an organization](/rest/orgs/webhooks#update-a-webhook-configuration-for-an-organization)". - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - "orgs/update-webhook": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description Key/value pairs to provide settings for this webhook. */ - config?: { - url: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - }; - /** - * @description Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. - * @default [ - * "push" - * ] - */ - events?: string[]; - /** - * @description Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications. - * @default true - */ - active?: boolean; - /** @example "web" */ - name?: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["org-hook"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a webhook configuration for an organization - * @description Returns the webhook configuration for an organization. To get more information about the webhook, including the `active` state and `events`, use "[Get an organization webhook ](/rest/orgs/webhooks#get-an-organization-webhook)." - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - "orgs/get-webhook-config-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["webhook-config"]; - }; - }; - }; - }; - /** - * Update a webhook configuration for an organization - * @description Updates the webhook configuration for an organization. To update more information about the webhook, including the `active` state and `events`, use "[Update an organization webhook ](/rest/orgs/webhooks#update-an-organization-webhook)." - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - "orgs/update-webhook-config-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - url?: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["webhook-config"]; - }; - }; - }; - }; - /** - * List deliveries for an organization webhook - * @description Returns a list of webhook deliveries for a webhook configured in an organization. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - "orgs/list-webhook-deliveries": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - cursor?: components["parameters"]["cursor"]; - }; - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["hook-delivery-item"][]; - }; - }; - 400: components["responses"]["bad_request"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a webhook delivery for an organization webhook - * @description Returns a delivery for a webhook configured in an organization. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - "orgs/get-webhook-delivery": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - delivery_id: components["parameters"]["delivery-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["hook-delivery"]; - }; - }; - 400: components["responses"]["bad_request"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Redeliver a delivery for an organization webhook - * @description Redeliver a delivery for a webhook configured in an organization. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - "orgs/redeliver-webhook-delivery": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - delivery_id: components["parameters"]["delivery-id"]; - }; - }; - responses: { - 202: components["responses"]["accepted"]; - 400: components["responses"]["bad_request"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Ping an organization webhook - * @description This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) - * to be sent to the hook. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - "orgs/ping-webhook": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get route stats by actor - * @description Get API request count statistics for an actor broken down by route within a specified time frame. - */ - "api-insights/get-route-stats-by-actor": { - parameters: { - query: { - min_timestamp: components["parameters"]["api-insights-min-timestamp"]; - max_timestamp?: components["parameters"]["api-insights-max-timestamp"]; - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - direction?: components["parameters"]["direction"]; - sort?: components["parameters"]["api-insights-route-stats-sort"]; - api_route_substring?: components["parameters"]["api-insights-api-route-substring"]; - }; - path: { - org: components["parameters"]["org"]; - actor_type: components["parameters"]["api-insights-actor-type"]; - actor_id: components["parameters"]["api-insights-actor-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["api-insights-route-stats"]; - }; - }; - }; - }; - /** - * Get subject stats - * @description Get API request statistics for all subjects within an organization within a specified time frame. Subjects can be users or GitHub Apps. - */ - "api-insights/get-subject-stats": { - parameters: { - query: { - min_timestamp: components["parameters"]["api-insights-min-timestamp"]; - max_timestamp?: components["parameters"]["api-insights-max-timestamp"]; - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - direction?: components["parameters"]["direction"]; - sort?: components["parameters"]["api-insights-sort"]; - subject_name_substring?: components["parameters"]["api-insights-subject-name-substring"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["api-insights-subject-stats"]; - }; - }; - }; - }; - /** - * Get summary stats - * @description Get overall statistics of API requests made within an organization by all users and apps within a specified time frame. - */ - "api-insights/get-summary-stats": { - parameters: { - query: { - min_timestamp: components["parameters"]["api-insights-min-timestamp"]; - max_timestamp?: components["parameters"]["api-insights-max-timestamp"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["api-insights-summary-stats"]; - }; - }; - }; - }; - /** - * Get summary stats by user - * @description Get overall statistics of API requests within the organization for a user. - */ - "api-insights/get-summary-stats-by-user": { - parameters: { - query: { - min_timestamp: components["parameters"]["api-insights-min-timestamp"]; - max_timestamp?: components["parameters"]["api-insights-max-timestamp"]; - }; - path: { - org: components["parameters"]["org"]; - user_id: components["parameters"]["api-insights-user-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["api-insights-summary-stats"]; - }; - }; - }; - }; - /** - * Get summary stats by actor - * @description Get overall statistics of API requests within the organization made by a specific actor. Actors can be GitHub App installations, OAuth apps or other tokens on behalf of a user. - */ - "api-insights/get-summary-stats-by-actor": { - parameters: { - query: { - min_timestamp: components["parameters"]["api-insights-min-timestamp"]; - max_timestamp?: components["parameters"]["api-insights-max-timestamp"]; - }; - path: { - org: components["parameters"]["org"]; - actor_type: components["parameters"]["api-insights-actor-type"]; - actor_id: components["parameters"]["api-insights-actor-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["api-insights-summary-stats"]; - }; - }; - }; - }; - /** - * Get time stats - * @description Get the number of API requests and rate-limited requests made within an organization over a specified time period. - */ - "api-insights/get-time-stats": { - parameters: { - query: { - min_timestamp: components["parameters"]["api-insights-min-timestamp"]; - max_timestamp?: components["parameters"]["api-insights-max-timestamp"]; - timestamp_increment: components["parameters"]["api-insights-timestamp-increment"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["api-insights-time-stats"]; - }; - }; - }; - }; - /** - * Get time stats by user - * @description Get the number of API requests and rate-limited requests made within an organization by a specific user over a specified time period. - */ - "api-insights/get-time-stats-by-user": { - parameters: { - query: { - min_timestamp: components["parameters"]["api-insights-min-timestamp"]; - max_timestamp?: components["parameters"]["api-insights-max-timestamp"]; - timestamp_increment: components["parameters"]["api-insights-timestamp-increment"]; - }; - path: { - org: components["parameters"]["org"]; - user_id: components["parameters"]["api-insights-user-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["api-insights-time-stats"]; - }; - }; - }; - }; - /** - * Get time stats by actor - * @description Get the number of API requests and rate-limited requests made within an organization by a specific actor within a specified time period. - */ - "api-insights/get-time-stats-by-actor": { - parameters: { - query: { - min_timestamp: components["parameters"]["api-insights-min-timestamp"]; - max_timestamp?: components["parameters"]["api-insights-max-timestamp"]; - timestamp_increment: components["parameters"]["api-insights-timestamp-increment"]; - }; - path: { - org: components["parameters"]["org"]; - actor_type: components["parameters"]["api-insights-actor-type"]; - actor_id: components["parameters"]["api-insights-actor-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["api-insights-time-stats"]; - }; - }; - }; - }; - /** - * Get user stats - * @description Get API usage statistics within an organization for a user broken down by the type of access. - */ - "api-insights/get-user-stats": { - parameters: { - query: { - min_timestamp: components["parameters"]["api-insights-min-timestamp"]; - max_timestamp?: components["parameters"]["api-insights-max-timestamp"]; - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - direction?: components["parameters"]["direction"]; - sort?: components["parameters"]["api-insights-sort"]; - actor_name_substring?: components["parameters"]["api-insights-actor-name-substring"]; - }; - path: { - org: components["parameters"]["org"]; - user_id: components["parameters"]["api-insights-user-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["api-insights-user-stats"]; - }; - }; - }; - }; - /** - * Get an organization installation for the authenticated app - * @description Enables an authenticated GitHub App to find the organization's installation information. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/get-org-installation": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["installation"]; - }; - }; - }; - }; - /** - * List app installations for an organization - * @description Lists all GitHub Apps in an organization. The installation count includes - * all GitHub Apps installed on repositories in the organization. - * - * The authenticated user must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:read` scope to use this endpoint. - */ - "orgs/list-app-installations": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - installations: components["schemas"]["installation"][]; - }; - }; - }; - }; - }; - /** - * Get interaction restrictions for an organization - * @description Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response. - */ - "interactions/get-restrictions-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": - | components["schemas"]["interaction-limit-response"] - | Record; - }; - }; - }; - }; - /** - * Set interaction restrictions for an organization - * @description Temporarily restricts interactions to a certain type of GitHub user in any public repository in the given organization. You must be an organization owner to set these restrictions. Setting the interaction limit at the organization level will overwrite any interaction limits that are set for individual repositories owned by the organization. - */ - "interactions/set-restrictions-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["interaction-limit"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["interaction-limit-response"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove interaction restrictions for an organization - * @description Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions. - */ - "interactions/remove-restrictions-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List pending organization invitations - * @description The return hash contains a `role` field which refers to the Organization - * Invitation role and will be one of the following values: `direct_member`, `admin`, - * `billing_manager`, or `hiring_manager`. If the invitee is not a GitHub - * member, the `login` field in the return hash will be `null`. - */ - "orgs/list-pending-invitations": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - /** @description Filter invitations by their member role. */ - role?: - | "all" - | "admin" - | "direct_member" - | "billing_manager" - | "hiring_manager"; - /** @description Filter invitations by their invitation source. */ - invitation_source?: "all" | "member" | "scim"; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["organization-invitation"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create an organization invitation - * @description Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - */ - "orgs/create-invitation": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description **Required unless you provide `email`**. GitHub user ID for the person you are inviting. */ - invitee_id?: number; - /** @description **Required unless you provide `invitee_id`**. Email address of the person you are inviting, which can be an existing GitHub user. */ - email?: string; - /** - * @description The role for the new member. - * * `admin` - Organization owners with full administrative rights to the organization and complete access to all repositories and teams. - * * `direct_member` - Non-owner organization members with ability to see other members and join teams by invitation. - * * `billing_manager` - Non-owner organization members with ability to manage the billing settings of your organization. - * * `reinstate` - The previous role assigned to the invitee before they were removed from your organization. Can be one of the roles listed above. Only works if the invitee was previously part of your organization. - * @default direct_member - * @enum {string} - */ - role?: "admin" | "direct_member" | "billing_manager" | "reinstate"; - /** @description Specify IDs for the teams you want to invite new members to. */ - team_ids?: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["organization-invitation"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Cancel an organization invitation - * @description Cancel an organization invitation. In order to cancel an organization invitation, the authenticated user must be an organization owner. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). - */ - "orgs/cancel-invitation": { - parameters: { - path: { - org: components["parameters"]["org"]; - invitation_id: components["parameters"]["invitation-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List organization invitation teams - * @description List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner. - */ - "orgs/list-invitation-teams": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - invitation_id: components["parameters"]["invitation-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["team"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List issue types for an organization - * @description Lists all issue types for an organization. OAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint. - */ - "orgs/list-issue-types": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["issue-type"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create issue type for an organization - * @description Create a new issue type for an organization. - * - * You can find out more about issue types in [Managing issue types in an organization](https://docs.github.com/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization). - * - * To use this endpoint, the authenticated user must be an administrator for the organization. OAuth app tokens and - * personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/create-issue-type": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["organization-create-issue-type"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["issue-type"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Update issue type for an organization - * @description Updates an issue type for an organization. - * - * You can find out more about issue types in [Managing issue types in an organization](https://docs.github.com/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization). - * - * To use this endpoint, the authenticated user must be an administrator for the organization. OAuth app tokens and - * personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/update-issue-type": { - parameters: { - path: { - org: components["parameters"]["org"]; - issue_type_id: components["parameters"]["issue-type-id"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["organization-update-issue-type"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["issue-type"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Delete issue type for an organization - * @description Deletes an issue type for an organization. - * - * You can find out more about issue types in [Managing issue types in an organization](https://docs.github.com/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization). - * - * To use this endpoint, the authenticated user must be an administrator for the organization. OAuth app tokens and - * personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/delete-issue-type": { - parameters: { - path: { - org: components["parameters"]["org"]; - issue_type_id: components["parameters"]["issue-type-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List organization issues assigned to the authenticated user - * @description List issues in an organization assigned to the authenticated user. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/list-for-org": { - parameters: { - query?: { - /** @description Indicates which sorts of issues to return. `assigned` means issues assigned to you. `created` means issues created by you. `mentioned` means issues mentioning you. `subscribed` means issues you're subscribed to updates for. `all` or `repos` means all issues you can see, regardless of participation or creation. */ - filter?: - | "assigned" - | "created" - | "mentioned" - | "subscribed" - | "repos" - | "all"; - /** @description Indicates the state of the issues to return. */ - state?: "open" | "closed" | "all"; - labels?: components["parameters"]["labels"]; - /** @description Can be the name of an issue type. */ - type?: string; - /** @description What to sort results by. */ - sort?: "created" | "updated" | "comments"; - direction?: components["parameters"]["direction"]; - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["issue"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List organization members - * @description List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned. - */ - "orgs/list-members": { - parameters: { - query?: { - /** @description Filter members returned in the list. `2fa_disabled` means that only members without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled will be returned. `2fa_insecure` means that only members with [insecure 2FA methods](https://docs.github.com/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization#requiring-secure-methods-of-two-factor-authentication-in-your-organization) will be returned. These options are only available for organization owners. */ - filter?: "2fa_disabled" | "2fa_insecure" | "all"; - /** @description Filter members returned by their role. */ - role?: "all" | "admin" | "member"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Check organization membership for a user - * @description Check if a user is, publicly or privately, a member of the organization. - */ - "orgs/check-membership-for-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response if requester is an organization member and user is a member */ - 204: { - content: never; - }; - /** @description Response if requester is not an organization member */ - 302: { - headers: { - /** @example https://api.github.com/orgs/github/public_members/pezra */ - Location?: string; - }; - content: never; - }; - /** @description Not Found if requester is an organization member and user is not a member */ - 404: { - content: never; - }; - }; - }; - /** - * Remove an organization member - * @description Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories. - * - * > [!NOTE] - * > If a user has both direct membership in the organization as well as indirect membership via an enterprise team, only their direct membership will be removed. Their indirect membership via an enterprise team remains until the user is removed from the enterprise team. - */ - "orgs/remove-member": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * List codespaces for a user in organization - * @description Lists the codespaces that a member of an organization has for repositories in that organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/get-codespaces-for-user-in-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - codespaces: components["schemas"]["codespace"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Delete a codespace from the organization - * @description Deletes a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/delete-from-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - codespace_name: components["parameters"]["codespace-name"]; - }; - }; - responses: { - 202: components["responses"]["accepted"]; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Stop a codespace for an organization user - * @description Stops a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "codespaces/stop-in-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - codespace_name: components["parameters"]["codespace-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["codespace"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get Copilot seat assignment details for a user - * @description > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Gets the GitHub Copilot seat details for a member of an organization who currently has access to GitHub Copilot. - * - * The seat object contains information about the user's most recent Copilot activity. Users must have telemetry enabled in their IDE for Copilot in the IDE activity to be reflected in `last_activity_at`. - * For more information about activity data, see [Metrics data properties for GitHub Copilot](https://docs.github.com/copilot/reference/metrics-data). - * - * Only organization owners can view Copilot seat assignment details for members of their organization. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `read:org` scopes to use this endpoint. - */ - "copilot/get-copilot-seat-details-for-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description The user's GitHub Copilot seat details, including usage. */ - 200: { - content: { - "application/json": components["schemas"]["copilot-seat-details"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - /** @description Copilot Business or Enterprise is not enabled for this organization or the user has a pending organization invitation. */ - 422: { - content: never; - }; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get organization membership for a user - * @description In order to get a user's membership with an organization, the authenticated user must be an organization member. The `state` parameter in the response can be used to identify the user's membership status. - */ - "orgs/get-membership-for-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["org-membership"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set organization membership for a user - * @description Only authenticated organization owners can add a member to the organization or update the member's role. - * - * * If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://docs.github.com/rest/orgs/members#get-organization-membership-for-a-user) will be `pending` until they accept the invitation. - * - * * Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent. - * - * **Rate limits** - * - * To prevent abuse, organization owners are limited to creating 50 organization invitations for an organization within a 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period. - */ - "orgs/set-membership-for-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description The role to give the user in the organization. Can be one of: - * * `admin` - The user will become an owner of the organization. - * * `member` - The user will become a non-owner member of the organization. - * @default member - * @enum {string} - */ - role?: "admin" | "member"; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["org-membership"]; - }; - }; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove organization membership for a user - * @description In order to remove a user's membership with an organization, the authenticated user must be an organization owner. - * - * If the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases. - * - * > [!NOTE] - * > If a user has both direct membership in the organization as well as indirect membership via an enterprise team, only their direct membership will be removed. Their indirect membership via an enterprise team remains until the user is removed from the enterprise team. - */ - "orgs/remove-membership-for-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List organization migrations - * @description Lists the most recent migrations, including both exports (which can be started through the REST API) and imports (which cannot be started using the REST API). - * - * A list of `repositories` is only returned for export migrations. - */ - "migrations/list-for-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - /** @description Exclude attributes from the API response to improve performance */ - exclude?: "repositories"[]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["migration"][]; - }; - }; - }; - }; - /** - * Start an organization migration - * @description Initiates the generation of a migration archive. - */ - "migrations/start-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description A list of arrays indicating which repositories should be migrated. */ - repositories: string[]; - /** - * @description Indicates whether repositories should be locked (to prevent manipulation) while migrating data. - * @default false - * @example true - */ - lock_repositories?: boolean; - /** - * @description Indicates whether metadata should be excluded and only git source should be included for the migration. - * @default false - */ - exclude_metadata?: boolean; - /** - * @description Indicates whether the repository git data should be excluded from the migration. - * @default false - */ - exclude_git_data?: boolean; - /** - * @description Indicates whether attachments should be excluded from the migration (to reduce migration archive file size). - * @default false - * @example true - */ - exclude_attachments?: boolean; - /** - * @description Indicates whether releases should be excluded from the migration (to reduce migration archive file size). - * @default false - * @example true - */ - exclude_releases?: boolean; - /** - * @description Indicates whether projects owned by the organization or users should be excluded. from the migration. - * @default false - * @example true - */ - exclude_owner_projects?: boolean; - /** - * @description Indicates whether this should only include organization metadata (repositories array should be empty and will ignore other flags). - * @default false - * @example true - */ - org_metadata_only?: boolean; - /** @description Exclude related items from being returned in the response in order to improve performance of the request. */ - exclude?: "repositories"[]; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["migration"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get an organization migration status - * @description Fetches the status of a migration. - * - * The `state` of a migration can be one of the following values: - * - * * `pending`, which means the migration hasn't started yet. - * * `exporting`, which means the migration is in progress. - * * `exported`, which means the migration finished successfully. - * * `failed`, which means the migration failed. - */ - "migrations/get-status-for-org": { - parameters: { - query?: { - /** @description Exclude attributes from the API response to improve performance */ - exclude?: "repositories"[]; - }; - path: { - org: components["parameters"]["org"]; - migration_id: components["parameters"]["migration-id"]; - }; - }; - responses: { - /** - * @description * `pending`, which means the migration hasn't started yet. - * * `exporting`, which means the migration is in progress. - * * `exported`, which means the migration finished successfully. - * * `failed`, which means the migration failed. - */ - 200: { - content: { - "application/json": components["schemas"]["migration"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Download an organization migration archive - * @description Fetches the URL to a migration archive. - */ - "migrations/download-archive-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - migration_id: components["parameters"]["migration-id"]; - }; - }; - responses: { - /** @description Response */ - 302: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete an organization migration archive - * @description Deletes a previous migration archive. Migration archives are automatically deleted after seven days. - */ - "migrations/delete-archive-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - migration_id: components["parameters"]["migration-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Unlock an organization repository - * @description Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://docs.github.com/rest/repos/repos#delete-a-repository) when the migration is complete and you no longer need the source data. - */ - "migrations/unlock-repo-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - migration_id: components["parameters"]["migration-id"]; - repo_name: components["parameters"]["repo-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List repositories in an organization migration - * @description List all the repositories for this organization migration. - */ - "migrations/list-repos-for-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - migration_id: components["parameters"]["migration-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get all organization roles for an organization - * @description Lists the organization roles available in this organization. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * To use this endpoint, the authenticated user must be one of: - * - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permissions of `read_organization_custom_org_role` in the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/list-org-roles": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response - list of organization roles */ - 200: { - content: { - "application/json": { - /** @description The total number of organization roles available to the organization. */ - total_count?: number; - /** @description The list of organization roles available to the organization. */ - roles?: components["schemas"]["organization-role"][]; - }; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove all organization roles for a team - * @description Removes all assigned organization roles from a team. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/revoke-all-org-roles-team": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Assign an organization role to a team - * @description Assigns an organization role to a team in an organization. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/assign-team-to-org-role": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - role_id: components["parameters"]["role-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - /** @description Response if the organization, team or role does not exist. */ - 404: { - content: never; - }; - /** @description Response if the organization roles feature is not enabled for the organization, or validation failed. */ - 422: { - content: never; - }; - }; - }; - /** - * Remove an organization role from a team - * @description Removes an organization role from a team. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/revoke-org-role-team": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - role_id: components["parameters"]["role-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Remove all organization roles for a user - * @description Revokes all assigned organization roles from a user. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/revoke-all-org-roles-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Assign an organization role to a user - * @description Assigns an organization role to a member of an organization. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/assign-user-to-org-role": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - role_id: components["parameters"]["role-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - /** @description Response if the organization, user or role does not exist. */ - 404: { - content: never; - }; - /** @description Response if the organization roles feature is not enabled enabled for the organization, the validation failed, or the user is not an organization member. */ - 422: { - content: never; - }; - }; - }; - /** - * Remove an organization role from a user - * @description Remove an organization role from a user. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/revoke-org-role-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - role_id: components["parameters"]["role-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get an organization role - * @description Gets an organization role that is available to this organization. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * To use this endpoint, the authenticated user must be one of: - * - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permissions of `read_organization_custom_org_role` in the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/get-org-role": { - parameters: { - path: { - org: components["parameters"]["org"]; - role_id: components["parameters"]["role-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["organization-role"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List teams that are assigned to an organization role - * @description Lists the teams that are assigned to an organization role. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * To use this endpoint, you must be an administrator for the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/list-org-role-teams": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - role_id: components["parameters"]["role-id"]; - }; - }; - responses: { - /** @description Response - List of assigned teams */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["team-role-assignment"][]; - }; - }; - /** @description Response if the organization or role does not exist. */ - 404: { - content: never; - }; - /** @description Response if the organization roles feature is not enabled or validation failed. */ - 422: { - content: never; - }; - }; - }; - /** - * List users that are assigned to an organization role - * @description Lists organization members that are assigned to an organization role. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * To use this endpoint, you must be an administrator for the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/list-org-role-users": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - role_id: components["parameters"]["role-id"]; - }; - }; - responses: { - /** @description Response - List of assigned users */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["user-role-assignment"][]; - }; - }; - /** @description Response if the organization or role does not exist. */ - 404: { - content: never; - }; - /** @description Response if the organization roles feature is not enabled or validation failed. */ - 422: { - content: never; - }; - }; - }; - /** - * List outside collaborators for an organization - * @description List all users who are outside collaborators of an organization. - */ - "orgs/list-outside-collaborators": { - parameters: { - query?: { - /** @description Filter the list of outside collaborators. `2fa_disabled` means that only outside collaborators without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled will be returned. `2fa_insecure` means that only outside collaborators with [insecure 2FA methods](https://docs.github.com/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization#requiring-secure-methods-of-two-factor-authentication-in-your-organization) will be returned. */ - filter?: "2fa_disabled" | "2fa_insecure" | "all"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - }; - /** - * Convert an organization member to outside collaborator - * @description When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see "[Converting an organization member to an outside collaborator](https://docs.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)". Converting an organization member to an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)." - */ - "orgs/convert-member-to-outside-collaborator": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description When set to `true`, the request will be performed asynchronously. Returns a 202 status code when the job is successfully queued. - * @default false - */ - async?: boolean; - }; - }; - }; - responses: { - /** @description User is getting converted asynchronously */ - 202: { - content: { - "application/json": Record; - }; - }; - /** @description User was converted */ - 204: { - content: never; - }; - /** @description Forbidden if user is the last owner of the organization, not a member of the organization, or if the enterprise enforces a policy for inviting outside collaborators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)." */ - 403: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Remove outside collaborator from an organization - * @description Removing a user from this list will remove them from all the organization's repositories. - */ - "orgs/remove-outside-collaborator": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - /** @description Unprocessable Entity if user is a member of the organization */ - 422: { - content: { - "application/json": { - message?: string; - documentation_url?: string; - }; - }; - }; - }; - }; - /** - * List packages for an organization - * @description Lists packages in an organization readable by the user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/list-packages-for-organization": { - parameters: { - query: { - /** @description The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ - package_type: - | "npm" - | "maven" - | "rubygems" - | "docker" - | "nuget" - | "container"; - visibility?: components["parameters"]["package-visibility"]; - /** @description The page number of the results to fetch. For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - page?: number; - /** @description The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - per_page?: number; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package"][]; - }; - }; - 400: components["responses"]["package_es_list_error"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get a package for an organization - * @description Gets a specific package in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/get-package-for-organization": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package"]; - }; - }; - }; - }; - /** - * Delete a package for an organization - * @description Deletes an entire package in an organization. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must also have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/delete-package-for-org": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Restore a package for an organization - * @description Restores an entire package in an organization. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must also have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/restore-package-for-org": { - parameters: { - query?: { - /** @description package token */ - token?: string; - }; - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List package versions for a package owned by an organization - * @description Lists package versions for a package owned by an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/get-all-package-versions-for-package-owned-by-org": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - /** @description The state of the package, either active or deleted. */ - state?: "active" | "deleted"; - }; - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package-version"][]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get a package version for an organization - * @description Gets a specific package version in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/get-package-version-for-organization": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - org: components["parameters"]["org"]; - package_version_id: components["parameters"]["package-version-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package-version"]; - }; - }; - }; - }; - /** - * Delete package version for an organization - * @description Deletes a specific package version in an organization. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must also have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/delete-package-version-for-org": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - org: components["parameters"]["org"]; - package_version_id: components["parameters"]["package-version-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Restore package version for an organization - * @description Restores a specific package version in an organization. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must also have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/restore-package-version-for-org": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - org: components["parameters"]["org"]; - package_version_id: components["parameters"]["package-version-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List requests to access organization resources with fine-grained personal access tokens - * @description Lists requests from organization members to access organization resources with a fine-grained personal access token. - * - * Only GitHub Apps can use this endpoint. - */ - "orgs/list-pat-grant-requests": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - sort?: components["parameters"]["personal-access-token-sort"]; - direction?: components["parameters"]["direction"]; - owner?: components["parameters"]["personal-access-token-owner"]; - repository?: components["parameters"]["personal-access-token-repository"]; - permission?: components["parameters"]["personal-access-token-permission"]; - last_used_before?: components["parameters"]["personal-access-token-before"]; - last_used_after?: components["parameters"]["personal-access-token-after"]; - token_id?: components["parameters"]["personal-access-token-token-id"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["organization-programmatic-access-grant-request"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Review requests to access organization resources with fine-grained personal access tokens - * @description Approves or denies multiple pending requests to access organization resources via a fine-grained personal access token. - * - * Only GitHub Apps can use this endpoint. - */ - "orgs/review-pat-grant-requests-in-bulk": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Unique identifiers of the requests for access via fine-grained personal access token. Must be formed of between 1 and 100 `pat_request_id` values. */ - pat_request_ids?: number[]; - /** - * @description Action to apply to the requests. - * @enum {string} - */ - action: "approve" | "deny"; - /** @description Reason for approving or denying the requests. Max 1024 characters. */ - reason?: string | null; - }; - }; - }; - responses: { - 202: components["responses"]["accepted"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Review a request to access organization resources with a fine-grained personal access token - * @description Approves or denies a pending request to access organization resources via a fine-grained personal access token. - * - * Only GitHub Apps can use this endpoint. - */ - "orgs/review-pat-grant-request": { - parameters: { - path: { - org: components["parameters"]["org"]; - /** @description Unique identifier of the request for access via fine-grained personal access token. */ - pat_request_id: number; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description Action to apply to the request. - * @enum {string} - */ - action: "approve" | "deny"; - /** @description Reason for approving or denying the request. Max 1024 characters. */ - reason?: string | null; - }; - }; - }; - responses: { - 204: components["responses"]["no_content"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List repositories requested to be accessed by a fine-grained personal access token - * @description Lists the repositories a fine-grained personal access token request is requesting access to. - * - * Only GitHub Apps can use this endpoint. - */ - "orgs/list-pat-grant-request-repositories": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - /** @description Unique identifier of the request for access via fine-grained personal access token. */ - pat_request_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List fine-grained personal access tokens with access to organization resources - * @description Lists approved fine-grained personal access tokens owned by organization members that can access organization resources. - * - * Only GitHub Apps can use this endpoint. - */ - "orgs/list-pat-grants": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - sort?: components["parameters"]["personal-access-token-sort"]; - direction?: components["parameters"]["direction"]; - owner?: components["parameters"]["personal-access-token-owner"]; - repository?: components["parameters"]["personal-access-token-repository"]; - permission?: components["parameters"]["personal-access-token-permission"]; - last_used_before?: components["parameters"]["personal-access-token-before"]; - last_used_after?: components["parameters"]["personal-access-token-after"]; - token_id?: components["parameters"]["personal-access-token-token-id"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["organization-programmatic-access-grant"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Update the access to organization resources via fine-grained personal access tokens - * @description Updates the access organization members have to organization resources via fine-grained personal access tokens. Limited to revoking a token's existing access. - * - * Only GitHub Apps can use this endpoint. - */ - "orgs/update-pat-accesses": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description Action to apply to the fine-grained personal access token. - * @enum {string} - */ - action: "revoke"; - /** @description The IDs of the fine-grained personal access tokens. */ - pat_ids: number[]; - }; - }; - }; - responses: { - 202: components["responses"]["accepted"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Update the access a fine-grained personal access token has to organization resources - * @description Updates the access an organization member has to organization resources via a fine-grained personal access token. Limited to revoking the token's existing access. Limited to revoking a token's existing access. - * - * Only GitHub Apps can use this endpoint. - */ - "orgs/update-pat-access": { - parameters: { - path: { - org: components["parameters"]["org"]; - pat_id: components["parameters"]["fine-grained-personal-access-token-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description Action to apply to the fine-grained personal access token. - * @enum {string} - */ - action: "revoke"; - }; - }; - }; - responses: { - 204: components["responses"]["no_content"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List repositories a fine-grained personal access token has access to - * @description Lists the repositories a fine-grained personal access token has access to. - * - * Only GitHub Apps can use this endpoint. - */ - "orgs/list-pat-grant-repositories": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - /** @description Unique identifier of the fine-grained personal access token. */ - pat_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List private registries for an organization - * @description - * Lists all private registry configurations available at the organization-level without revealing their encrypted - * values. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "private-registries/list-org-private-registries": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - configurations: components["schemas"]["org-private-registry-configuration"][]; - }; - }; - }; - 400: components["responses"]["bad_request"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a private registry for an organization - * @description - * Creates a private registry configuration with an encrypted value for an organization. Encrypt your secret using [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "private-registries/create-org-private-registry": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The registry type. - * @enum {string} - */ - registry_type: - | "maven_repository" - | "nuget_feed" - | "goproxy_server" - | "npm_registry" - | "rubygems_server" - | "cargo_registry" - | "composer_repository" - | "docker_registry" - | "git_source" - | "helm_registry" - | "hex_organization" - | "hex_repository" - | "pub_repository" - | "python_index" - | "terraform_registry"; - /** - * Format: uri - * @description The URL of the private registry. - */ - url: string; - /** @description The username to use when authenticating with the private registry. This field should be omitted if the private registry does not require a username for authentication. */ - username?: string | null; - /** @description The value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get private registries public key for an organization](https://docs.github.com/rest/private-registries/organization-configurations#get-private-registries-public-key-for-an-organization) endpoint. */ - encrypted_value: string; - /** @description The ID of the key you used to encrypt the secret. */ - key_id: string; - /** - * @description Which type of organization repositories have access to the private registry. `selected` means only the repositories specified by `selected_repository_ids` can access the private registry. - * @enum {string} - */ - visibility: "all" | "private" | "selected"; - /** @description An array of repository IDs that can access the organization private registry. You can only provide a list of repository IDs when `visibility` is set to `selected`. You can manage the list of selected repositories using the [Update a private registry for an organization](https://docs.github.com/rest/private-registries/organization-configurations#update-a-private-registry-for-an-organization) endpoint. This field should be omitted if `visibility` is set to `all` or `private`. */ - selected_repository_ids?: number[]; - }; - }; - }; - responses: { - /** @description The organization private registry configuration */ - 201: { - content: { - "application/json": components["schemas"]["org-private-registry-configuration-with-selected-repositories"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get private registries public key for an organization - * @description - * Gets the org public key, which is needed to encrypt private registry secrets. You need to encrypt a secret before you can create or update secrets. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "private-registries/get-org-public-key": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - /** - * @description The identifier for the key. - * @example 012345678912345678 - */ - key_id: string; - /** - * @description The Base64 encoded public key. - * @example 2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvv1234 - */ - key: string; - }; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get a private registry for an organization - * @description - * Get the configuration of a single private registry defined for an organization, omitting its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "private-registries/get-org-private-registry": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description The specified private registry configuration for the organization */ - 200: { - content: { - "application/json": components["schemas"]["org-private-registry-configuration"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a private registry for an organization - * @description - * Delete a private registry configuration at the organization-level. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "private-registries/delete-org-private-registry": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 400: components["responses"]["bad_request"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update a private registry for an organization - * @description - * Updates a private registry configuration with an encrypted value for an organization. Encrypt your secret using [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "private-registries/update-org-private-registry": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The registry type. - * @enum {string} - */ - registry_type?: - | "maven_repository" - | "nuget_feed" - | "goproxy_server" - | "npm_registry" - | "rubygems_server" - | "cargo_registry" - | "composer_repository" - | "docker_registry" - | "git_source" - | "helm_registry" - | "hex_organization" - | "hex_repository" - | "pub_repository" - | "python_index" - | "terraform_registry"; - /** - * Format: uri - * @description The URL of the private registry. - */ - url?: string; - /** @description The username to use when authenticating with the private registry. This field should be omitted if the private registry does not require a username for authentication. */ - username?: string | null; - /** @description The value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get private registries public key for an organization](https://docs.github.com/rest/private-registries/organization-configurations#get-private-registries-public-key-for-an-organization) endpoint. */ - encrypted_value?: string; - /** @description The ID of the key you used to encrypt the secret. */ - key_id?: string; - /** - * @description Which type of organization repositories have access to the private registry. `selected` means only the repositories specified by `selected_repository_ids` can access the private registry. - * @enum {string} - */ - visibility?: "all" | "private" | "selected"; - /** @description An array of repository IDs that can access the organization private registry. You can only provide a list of repository IDs when `visibility` is set to `selected`. This field should be omitted if `visibility` is set to `all` or `private`. */ - selected_repository_ids?: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List organization projects - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/list-for-org": { - parameters: { - query?: { - /** @description Indicates the state of the projects to return. */ - state?: "open" | "closed" | "all"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["project"][]; - }; - }; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Create an organization project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/create-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the project. */ - name: string; - /** @description The description of the project. */ - body?: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["project"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List projects for organization - * @description List all projects owned by a specific organization accessible by the authenticated user. - */ - "projects/list-for-org": { - parameters: { - query?: { - /** @description Limit results to projects of the specified type. */ - q?: string; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["projects-v2"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get project for organization - * @description Get a specific organization-owned project. - */ - "projects/get-for-org": { - parameters: { - path: { - project_number: components["parameters"]["project-number"]; - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["projects-v2"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * List project fields for organization - * @description List all fields for a specific organization-owned project. - */ - "projects/list-fields-for-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - }; - path: { - project_number: components["parameters"]["project-number"]; - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["projects-v2-field"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get project field for organization - * @description Get a specific field for an organization-owned project. - */ - "projects/get-field-for-org": { - parameters: { - path: { - project_number: components["parameters"]["project-number"]; - field_id: components["parameters"]["field-id"]; - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["projects-v2-field"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * List items for an organization owned project - * @description List all items for a specific organization-owned project accessible by the authenticated user. - */ - "projects/list-items-for-org": { - parameters: { - query?: { - /** @description Search query to filter items, see [Filtering projects](https://docs.github.com/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/filtering-projects) for more information. */ - q?: string; - /** - * @description Limit results to specific fields, by their IDs. If not specified, the title field will be returned. - * - * Example: `fields[]=123&fields[]=456&fields[]=789` or `fields=123,456,789` - */ - fields?: string | string[]; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - project_number: components["parameters"]["project-number"]; - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["projects-v2-item-with-content"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Add item to organization owned project - * @description Add an issue or pull request item to the specified organization owned project. - */ - "projects/add-item-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - project_number: components["parameters"]["project-number"]; - }; - }; - /** @description Details of the item to add to the project. */ - requestBody: { - content: { - "application/json": { - /** - * @description The type of item to add to the project. Must be either Issue or PullRequest. - * @enum {string} - */ - type: "Issue" | "PullRequest"; - /** @description The numeric ID of the issue or pull request to add to the project. */ - id: number; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["projects-v2-item-simple"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get an item for an organization owned project - * @description Get a specific item from an organization-owned project. - */ - "projects/get-org-item": { - parameters: { - query?: { - /** - * @description Limit results to specific fields, by their IDs. If not specified, the title field will be returned. - * - * Example: fields[]=123&fields[]=456&fields[]=789 or fields=123,456,789 - */ - fields?: string | string[]; - }; - path: { - project_number: components["parameters"]["project-number"]; - org: components["parameters"]["org"]; - item_id: components["parameters"]["item-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["projects-v2-item-with-content"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Delete project item for organization - * @description Delete a specific item from an organization-owned project. - */ - "projects/delete-item-for-org": { - parameters: { - path: { - project_number: components["parameters"]["project-number"]; - org: components["parameters"]["org"]; - item_id: components["parameters"]["item-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Update project item for organization - * @description Update a specific item in an organization-owned project. - */ - "projects/update-item-for-org": { - parameters: { - path: { - project_number: components["parameters"]["project-number"]; - org: components["parameters"]["org"]; - item_id: components["parameters"]["item-id"]; - }; - }; - /** @description Field updates to apply to the project item. Only text, number, date, single select, and iteration fields are supported. */ - requestBody: { - content: { - "application/json": { - /** @description A list of field updates to apply. */ - fields: { - /** @description The ID of the project field to update. */ - id: number; - /** - * @description The new value for the field: - * - For text, number, and date fields, provide the new value directly. - * - For single select and iteration fields, provide the ID of the option or iteration. - * - To clear the field, set this to null. - */ - value: string | number | null; - }[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["projects-v2-item-with-content"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get all custom properties for an organization - * @description Gets all custom properties defined for an organization. - * Organization members can read these properties. - */ - "orgs/custom-properties-for-repos-get-organization-definitions": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["custom-property"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create or update custom properties for an organization - * @description Creates new or updates existing custom properties defined for an organization in a batch. - * - * If the property already exists, the existing property will be replaced with the new values. - * Missing optional values will fall back to default values, previous values will be overwritten. - * E.g. if a property exists with `values_editable_by: org_and_repo_actors` and it's updated without specifying `values_editable_by`, it will be updated to default value `org_actors`. - * - * To use this endpoint, the authenticated user must be one of: - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permission of `custom_properties_org_definitions_manager` in the organization. - */ - "orgs/custom-properties-for-repos-create-or-update-organization-definitions": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The array of custom properties to create or update. */ - properties: components["schemas"]["custom-property"][]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["custom-property"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get a custom property for an organization - * @description Gets a custom property that is defined for an organization. - * Organization members can read these properties. - */ - "orgs/custom-properties-for-repos-get-organization-definition": { - parameters: { - path: { - org: components["parameters"]["org"]; - custom_property_name: components["parameters"]["custom-property-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["custom-property"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create or update a custom property for an organization - * @description Creates a new or updates an existing custom property that is defined for an organization. - * - * To use this endpoint, the authenticated user must be one of: - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permission of `custom_properties_org_definitions_manager` in the organization. - */ - "orgs/custom-properties-for-repos-create-or-update-organization-definition": { - parameters: { - path: { - org: components["parameters"]["org"]; - custom_property_name: components["parameters"]["custom-property-name"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["custom-property-set-payload"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["custom-property"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Remove a custom property for an organization - * @description Removes a custom property that is defined for an organization. - * - * To use this endpoint, the authenticated user must be one of: - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permission of `custom_properties_org_definitions_manager` in the organization. - */ - "orgs/custom-properties-for-repos-delete-organization-definition": { - parameters: { - path: { - org: components["parameters"]["org"]; - custom_property_name: components["parameters"]["custom-property-name"]; - }; - }; - responses: { - 204: components["responses"]["no_content"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List custom property values for organization repositories - * @description Lists organization repositories with all of their custom property values. - * Organization members can read these properties. - */ - "orgs/custom-properties-for-repos-get-organization-values": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - /** @description Finds repositories in the organization with a query containing one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). See "[Searching for repositories](https://docs.github.com/articles/searching-for-repositories/)" for a detailed list of qualifiers. */ - repository_query?: string; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["org-repo-custom-property-values"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create or update custom property values for organization repositories - * @description Create new or update existing custom property values for repositories in a batch that belong to an organization. - * Each target repository will have its custom property values updated to match the values provided in the request. - * - * A maximum of 30 repositories can be updated in a single request. - * - * Using a value of `null` for a custom property will remove or 'unset' the property value from the repository. - * - * To use this endpoint, the authenticated user must be one of: - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permission of `custom_properties_org_values_editor` in the organization. - */ - "orgs/custom-properties-for-repos-create-or-update-organization-values": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The names of repositories that the custom property values will be applied to. */ - repository_names: string[]; - /** @description List of custom property names and associated values to apply to the repositories. */ - properties: components["schemas"]["custom-property-value"][]; - }; - }; - }; - responses: { - /** @description No Content when custom property values are successfully created or updated */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List public organization members - * @description Members of an organization can choose to have their membership publicized or not. - */ - "orgs/list-public-members": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - }; - /** - * Check public organization membership for a user - * @description Check if the provided user is a public member of the organization. - */ - "orgs/check-public-membership-for-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response if user is a public member */ - 204: { - content: never; - }; - /** @description Not Found if user is not a public member */ - 404: { - content: never; - }; - }; - }; - /** - * Set public organization membership for the authenticated user - * @description The user can publicize their own membership. (A user cannot publicize the membership for another user.) - * - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - "orgs/set-public-membership-for-authenticated-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Remove public organization membership for the authenticated user - * @description Removes the public membership for the authenticated user from the specified organization, unless public visibility is enforced by default. - */ - "orgs/remove-public-membership-for-authenticated-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List organization repositories - * @description Lists repositories for the specified organization. - * - * > [!NOTE] - * > In order to see the `security_and_analysis` block for a repository you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - */ - "repos/list-for-org": { - parameters: { - query?: { - /** @description Specifies the types of repositories you want returned. */ - type?: "all" | "public" | "private" | "forks" | "sources" | "member"; - /** @description The property to sort the results by. */ - sort?: "created" | "updated" | "pushed" | "full_name"; - /** @description The order to sort by. Default: `asc` when using `full_name`, otherwise `desc`. */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - }; - }; - /** - * Create an organization repository - * @description Creates a new repository in the specified organization. The authenticated user must be a member of the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `public_repo` or `repo` scope to create a public repository, and `repo` scope to create a private repository. - */ - "repos/create-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the repository. */ - name: string; - /** @description A short description of the repository. */ - description?: string; - /** @description A URL with more information about the repository. */ - homepage?: string; - /** - * @description Whether the repository is private. - * @default false - */ - private?: boolean; - /** - * @description The visibility of the repository. - * @enum {string} - */ - visibility?: "public" | "private"; - /** - * @description Either `true` to enable issues for this repository or `false` to disable them. - * @default true - */ - has_issues?: boolean; - /** - * @description Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error. - * @default true - */ - has_projects?: boolean; - /** - * @description Either `true` to enable the wiki for this repository or `false` to disable it. - * @default true - */ - has_wiki?: boolean; - /** - * @description Whether downloads are enabled. - * @default true - * @example true - */ - has_downloads?: boolean; - /** - * @description Either `true` to make this repo available as a template repository or `false` to prevent it. - * @default false - */ - is_template?: boolean; - /** @description The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization. */ - team_id?: number; - /** - * @description Pass `true` to create an initial commit with empty README. - * @default false - */ - auto_init?: boolean; - /** @description Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, "Haskell". */ - gitignore_template?: string; - /** @description Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://docs.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, "mit" or "mpl-2.0". */ - license_template?: string; - /** - * @description Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging. - * @default true - */ - allow_squash_merge?: boolean; - /** - * @description Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Either `true` to allow auto-merge on pull requests, or `false` to disallow auto-merge. - * @default false - */ - allow_auto_merge?: boolean; - /** - * @description Either `true` to allow automatically deleting head branches when pull requests are merged, or `false` to prevent automatic deletion. **The authenticated user must be an organization owner to set this property to `true`.** - * @default false - */ - delete_branch_on_merge?: boolean; - /** - * @deprecated - * @description Either `true` to allow squash-merge commits to use pull request title, or `false` to use commit message. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** - * @description Required when using `squash_merge_commit_message`. - * - * The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK"; - /** - * @description Required when using `merge_commit_message`. - * - * The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** @description The custom properties for the new repository. The keys are the custom property names, and the values are the corresponding custom property values. */ - custom_properties?: { - [key: string]: unknown; - }; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["full-repository"]; - }; - }; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get all organization repository rulesets - * @description Get all the repository rulesets for an organization. - */ - "repos/get-org-rulesets": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - targets?: components["parameters"]["ruleset-targets"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repository-ruleset"][]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Create an organization repository ruleset - * @description Create a repository ruleset for an organization. - */ - "repos/create-org-ruleset": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - /** @description Request body */ - requestBody: { - content: { - "application/json": { - /** @description The name of the ruleset. */ - name: string; - /** - * @description The target of the ruleset - * @default branch - * @enum {string} - */ - target?: "branch" | "tag" | "push" | "repository"; - enforcement: components["schemas"]["repository-rule-enforcement"]; - /** @description The actors that can bypass the rules in this ruleset */ - bypass_actors?: components["schemas"]["repository-ruleset-bypass-actor"][]; - conditions?: components["schemas"]["org-ruleset-conditions"]; - /** @description An array of rules within the ruleset. */ - rules?: components["schemas"]["org-rules"][]; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["repository-ruleset"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List organization rule suites - * @description Lists suites of rule evaluations at the organization level. - * For more information, see "[Managing rulesets for repositories in your organization](https://docs.github.com/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization#viewing-insights-for-rulesets)." - */ - "repos/get-org-rule-suites": { - parameters: { - query?: { - ref?: components["parameters"]["ref-in-query"]; - repository_name?: components["parameters"]["repository-name-in-query"]; - time_period?: components["parameters"]["time-period"]; - actor_name?: components["parameters"]["actor-name-in-query"]; - rule_suite_result?: components["parameters"]["rule-suite-result"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["rule-suites"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get an organization rule suite - * @description Gets information about a suite of rule evaluations from within an organization. - * For more information, see "[Managing rulesets for repositories in your organization](https://docs.github.com/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization#viewing-insights-for-rulesets)." - */ - "repos/get-org-rule-suite": { - parameters: { - path: { - org: components["parameters"]["org"]; - rule_suite_id: components["parameters"]["rule-suite-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["rule-suite"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get an organization repository ruleset - * @description Get a repository ruleset for an organization. - * - * **Note:** To prevent leaking sensitive information, the `bypass_actors` property is only returned if the user - * making the API request has write access to the ruleset. - */ - "repos/get-org-ruleset": { - parameters: { - path: { - org: components["parameters"]["org"]; - /** @description The ID of the ruleset. */ - ruleset_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repository-ruleset"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Update an organization repository ruleset - * @description Update a ruleset for an organization. - */ - "repos/update-org-ruleset": { - parameters: { - path: { - org: components["parameters"]["org"]; - /** @description The ID of the ruleset. */ - ruleset_id: number; - }; - }; - /** @description Request body */ - requestBody?: { - content: { - "application/json": { - /** @description The name of the ruleset. */ - name?: string; - /** - * @description The target of the ruleset - * @enum {string} - */ - target?: "branch" | "tag" | "push" | "repository"; - enforcement?: components["schemas"]["repository-rule-enforcement"]; - /** @description The actors that can bypass the rules in this ruleset */ - bypass_actors?: components["schemas"]["repository-ruleset-bypass-actor"][]; - conditions?: components["schemas"]["org-ruleset-conditions"]; - /** @description An array of rules within the ruleset. */ - rules?: components["schemas"]["org-rules"][]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repository-ruleset"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Delete an organization repository ruleset - * @description Delete a ruleset for an organization. - */ - "repos/delete-org-ruleset": { - parameters: { - path: { - org: components["parameters"]["org"]; - /** @description The ID of the ruleset. */ - ruleset_id: number; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get organization ruleset history - * @description Get the history of an organization ruleset. - */ - "orgs/get-org-ruleset-history": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - /** @description The ID of the ruleset. */ - ruleset_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["ruleset-version"][]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get organization ruleset version - * @description Get a version of an organization ruleset. - */ - "orgs/get-org-ruleset-version": { - parameters: { - path: { - org: components["parameters"]["org"]; - /** @description The ID of the ruleset. */ - ruleset_id: number; - /** @description The ID of the version */ - version_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["ruleset-version-with-state"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List secret scanning alerts for an organization - * @description Lists secret scanning alerts for eligible repositories in an organization, from newest to oldest. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - "secret-scanning/list-alerts-for-org": { - parameters: { - query?: { - state?: components["parameters"]["secret-scanning-alert-state"]; - secret_type?: components["parameters"]["secret-scanning-alert-secret-type"]; - resolution?: components["parameters"]["secret-scanning-alert-resolution"]; - sort?: components["parameters"]["secret-scanning-alert-sort"]; - direction?: components["parameters"]["direction"]; - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - before?: components["parameters"]["secret-scanning-pagination-before-org-repo"]; - after?: components["parameters"]["secret-scanning-pagination-after-org-repo"]; - validity?: components["parameters"]["secret-scanning-alert-validity"]; - is_publicly_leaked?: components["parameters"]["secret-scanning-alert-publicly-leaked"]; - is_multi_repo?: components["parameters"]["secret-scanning-alert-multi-repo"]; - hide_secret?: components["parameters"]["secret-scanning-alert-hide-secret"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["organization-secret-scanning-alert"][]; - }; - }; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List organization pattern configurations - * @description Lists the secret scanning pattern configurations for an organization. - * - * Personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - "secret-scanning/list-org-pattern-configs": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["secret-scanning-pattern-configuration"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update organization pattern configurations - * @description Updates the secret scanning pattern configurations for an organization. - * - * Personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - "secret-scanning/update-org-pattern-configs": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - pattern_config_version?: components["schemas"]["secret-scanning-row-version"]; - /** @description Pattern settings for provider patterns. */ - provider_pattern_settings?: { - /** @description The ID of the pattern to configure. */ - token_type?: string; - /** - * @description Push protection setting to set for the pattern. - * @enum {string} - */ - push_protection_setting?: "not-set" | "disabled" | "enabled"; - }[]; - /** @description Pattern settings for custom patterns. */ - custom_pattern_settings?: { - /** @description The ID of the pattern to configure. */ - token_type?: string; - custom_pattern_version?: components["schemas"]["secret-scanning-row-version"]; - /** - * @description Push protection setting to set for the pattern. - * @enum {string} - */ - push_protection_setting?: "disabled" | "enabled"; - }[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - /** @description The updated pattern configuration version. */ - pattern_config_version?: string; - }; - }; - }; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List repository security advisories for an organization - * @description Lists repository security advisories for an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:write` scope to use this endpoint. - */ - "security-advisories/list-org-repository-advisories": { - parameters: { - query?: { - direction?: components["parameters"]["direction"]; - /** @description The property to sort the results by. */ - sort?: "created" | "updated" | "published"; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - /** @description The number of advisories to return per page. For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - per_page?: number; - /** @description Filter by the state of the repository advisories. Only advisories of this state will be returned. */ - state?: "triage" | "draft" | "published" | "closed"; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repository-advisory"][]; - }; - }; - 400: components["responses"]["bad_request"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List security manager teams - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed starting January 1, 2026. Please use the "[Organization Roles](https://docs.github.com/rest/orgs/organization-roles)" endpoints instead. - */ - "orgs/list-security-manager-teams": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-simple"][]; - }; - }; - }; - }; - /** - * Add a security manager team - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed starting January 1, 2026. Please use the "[Organization Roles](https://docs.github.com/rest/orgs/organization-roles)" endpoints instead. - */ - "orgs/add-security-manager-team": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Remove a security manager team - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed starting January 1, 2026. Please use the "[Organization Roles](https://docs.github.com/rest/orgs/organization-roles)" endpoints instead. - */ - "orgs/remove-security-manager-team": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get GitHub Actions billing for an organization - * @description Gets the summary of the free and paid GitHub Actions minutes used. - * - * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `admin:org` scope to use this endpoint. - */ - "billing/get-github-actions-billing-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-billing-usage"]; - }; - }; - }; - }; - /** - * Get GitHub Packages billing for an organization - * @description Gets the free and paid storage used for GitHub Packages in gigabytes. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `admin:org` scope to use this endpoint. - */ - "billing/get-github-packages-billing-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["packages-billing-usage"]; - }; - }; - }; - }; - /** - * Get shared storage billing for an organization - * @description Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `admin:org` scope to use this endpoint. - */ - "billing/get-shared-storage-billing-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["combined-billing-usage"]; - }; - }; - }; - }; - /** - * Get immutable releases settings for an organization - * @description Gets the immutable releases policy for repositories in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/get-immutable-releases-settings": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Immutable releases settings response */ - 200: { - content: { - "application/json": components["schemas"]["immutable-releases-organization-settings"]; - }; - }; - }; - }; - /** - * Set immutable releases settings for an organization - * @description Sets the immutable releases policy for repositories in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/set-immutable-releases-settings": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The policy that controls how immutable releases are enforced in the organization. - * @example all - * @enum {string} - */ - enforced_repositories: "all" | "none" | "selected"; - /** @description An array of repository ids for which immutable releases enforcement should be applied. You can only provide a list of repository ids when the `enforced_repositories` is set to `selected`. You can add and remove individual repositories using the [Enable a selected repository for immutable releases in an organization](https://docs.github.com/rest/orgs/orgs#enable-a-selected-repository-for-immutable-releases-in-an-organization) and [Disable a selected repository for immutable releases in an organization](https://docs.github.com/rest/orgs/orgs#disable-a-selected-repository-for-immutable-releases-in-an-organization) endpoints. */ - selected_repository_ids?: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List selected repositories for immutable releases enforcement - * @description List all of the repositories that have been selected for immutable releases enforcement in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/get-immutable-releases-settings-repositories": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - repositories: components["schemas"]["minimal-repository"][]; - }; - }; - }; - }; - }; - /** - * Set selected repositories for immutable releases enforcement - * @description Replaces all repositories that have been selected for immutable releases enforcement in an organization. To use this endpoint, the organization immutable releases policy for `enforced_repositories` must be configured to `selected`. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/set-immutable-releases-settings-repositories": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description An array of repository ids for which immutable releases enforcement should be applied. You can only provide a list of repository ids when the `enforced_repositories` is set to `selected`. You can add and remove individual repositories using the [Enable a selected repository for immutable releases in an organization](https://docs.github.com/rest/orgs/orgs#enable-a-selected-repository-for-immutable-releases-in-an-organization) and [Disable a selected repository for immutable releases in an organization](https://docs.github.com/rest/orgs/orgs#disable-a-selected-repository-for-immutable-releases-in-an-organization) endpoints. */ - selected_repository_ids: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Enable a selected repository for immutable releases in an organization - * @description Adds a repository to the list of selected repositories that are enforced for immutable releases in an organization. To use this endpoint, the organization immutable releases policy for `enforced_repositories` must be configured to `selected`. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/enable-selected-repository-immutable-releases-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - repository_id: components["parameters"]["repository-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Disable a selected repository for immutable releases in an organization - * @description Removes a repository from the list of selected repositories that are enforced for immutable releases in an organization. To use this endpoint, the organization immutable releases policy for `enforced_repositories` must be configured to `selected`. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/disable-selected-repository-immutable-releases-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - repository_id: components["parameters"]["repository-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List hosted compute network configurations for an organization - * @description Lists all hosted compute network configurations configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:network_configurations` scope to use this endpoint. - */ - "hosted-compute/list-network-configurations-for-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - network_configurations: components["schemas"]["network-configuration"][]; - }; - }; - }; - }; - }; - /** - * Create a hosted compute network configuration for an organization - * @description Creates a hosted compute network configuration for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `write:network_configurations` scope to use this endpoint. - */ - "hosted-compute/create-network-configuration-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Name of the network configuration. Must be between 1 and 100 characters and may only contain upper and lowercase letters a-z, numbers 0-9, '.', '-', and '_'. */ - name: string; - /** - * @description The hosted compute service to use for the network configuration. - * @enum {string} - */ - compute_service?: "none" | "actions"; - /** @description The identifier of the network settings to use for the network configuration. Exactly one network settings must be specified. */ - network_settings_ids: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["network-configuration"]; - }; - }; - }; - }; - /** - * Get a hosted compute network configuration for an organization - * @description Gets a hosted compute network configuration configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:network_configurations` scope to use this endpoint. - */ - "hosted-compute/get-network-configuration-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - network_configuration_id: components["parameters"]["network-configuration-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["network-configuration"]; - }; - }; - }; - }; - /** - * Delete a hosted compute network configuration from an organization - * @description Deletes a hosted compute network configuration from an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `write:network_configurations` scope to use this endpoint. - */ - "hosted-compute/delete-network-configuration-from-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - network_configuration_id: components["parameters"]["network-configuration-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update a hosted compute network configuration for an organization - * @description Updates a hosted compute network configuration for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `write:network_configurations` scope to use this endpoint. - */ - "hosted-compute/update-network-configuration-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - network_configuration_id: components["parameters"]["network-configuration-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Name of the network configuration. Must be between 1 and 100 characters and may only contain upper and lowercase letters a-z, numbers 0-9, '.', '-', and '_'. */ - name?: string; - /** - * @description The hosted compute service to use for the network configuration. - * @enum {string} - */ - compute_service?: "none" | "actions"; - /** @description The identifier of the network settings to use for the network configuration. Exactly one network settings must be specified. */ - network_settings_ids?: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["network-configuration"]; - }; - }; - }; - }; - /** - * Get a hosted compute network settings resource for an organization - * @description Gets a hosted compute network settings resource configured for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:network_configurations` scope to use this endpoint. - */ - "hosted-compute/get-network-settings-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - network_settings_id: components["parameters"]["network-settings-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["network-settings"]; - }; - }; - }; - }; - /** - * Get Copilot metrics for a team - * @description Use this endpoint to see a breakdown of aggregated metrics for various GitHub Copilot features. See the response schema tab for detailed metrics definitions. - * - * > [!NOTE] - * > This endpoint will only return results for a given day if the team had **five or more members with active Copilot licenses** on that day, as evaluated at the end of that day. - * - * The response contains metrics for up to 100 days prior. Metrics are processed once per day for the previous day, - * and the response will only include data up until yesterday. In order for an end user to be counted towards these metrics, - * they must have telemetry enabled in their IDE. - * - * To access this endpoint, the Copilot Metrics API access policy must be enabled for the organization containing the team within GitHub settings. - * Only organization owners for the organization that contains this team and owners and billing managers of the parent enterprise can view Copilot metrics for a team. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot`, `read:org`, or `read:enterprise` scopes to use this endpoint. - */ - "copilot/copilot-metrics-for-team": { - parameters: { - query?: { - /** @description Show usage metrics since this date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:MM:SSZ`). Maximum value is 100 days ago. */ - since?: string; - /** @description Show usage metrics until this date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:MM:SSZ`) and should not preceed the `since` date if it is passed. */ - until?: string; - page?: components["parameters"]["page"]; - /** @description The number of days of metrics to display per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - per_page?: number; - }; - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["copilot-usage-metrics-day"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["usage_metrics_api_disabled"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List teams - * @description Lists all teams in an organization that are visible to the authenticated user. - */ - "teams/list": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["team"][]; - }; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Create a team - * @description To create a team, the authenticated user must be a member or owner of `{org}`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see "[Setting team creation permissions](https://docs.github.com/articles/setting-team-creation-permissions-in-your-organization)." - * - * When you create a new team, you automatically become a team maintainer without explicitly adding yourself to the optional array of `maintainers`. For more information, see "[About teams](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/about-teams)". - */ - "teams/create": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the team. */ - name: string; - /** @description The description of the team. */ - description?: string; - /** @description List GitHub usernames for organization members who will become team maintainers. */ - maintainers?: string[]; - /** @description The full name (e.g., "organization-name/repository-name") of repositories to add the team to. */ - repo_names?: string[]; - /** - * @description The level of privacy this team should have. The options are: - * **For a non-nested team:** - * * `secret` - only visible to organization owners and members of this team. - * * `closed` - visible to all members of this organization. - * Default: `secret` - * **For a parent or child team:** - * * `closed` - visible to all members of this organization. - * Default for child team: `closed` - * @enum {string} - */ - privacy?: "secret" | "closed"; - /** - * @description The notification setting the team has chosen. The options are: - * * `notifications_enabled` - team members receive notifications when the team is @mentioned. - * * `notifications_disabled` - no one receives notifications. - * Default: `notifications_enabled` - * @enum {string} - */ - notification_setting?: - | "notifications_enabled" - | "notifications_disabled"; - /** - * @description **Closing down notice**. The permission that new repositories will be added to the team with when none is specified. - * @default pull - * @enum {string} - */ - permission?: "pull" | "push"; - /** @description The ID of a team to set as the parent team. */ - parent_team_id?: number; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["team-full"]; - }; - }; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a team by name - * @description Gets a team using the team's `slug`. To create the `slug`, GitHub replaces special characters in the `name` string, changes all words to lowercase, and replaces spaces with a `-` separator. For example, `"My TEam Näme"` would become `my-team-name`. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}`. - */ - "teams/get-by-name": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-full"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a team - * @description To delete a team, the authenticated user must be an organization owner or team maintainer. - * - * If you are an organization owner, deleting a parent team will delete all of its child teams as well. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}`. - */ - "teams/delete-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update a team - * @description To edit a team, the authenticated user must either be an organization owner or a team maintainer. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}`. - */ - "teams/update-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The name of the team. */ - name?: string; - /** @description The description of the team. */ - description?: string; - /** - * @description The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. When a team is nested, the `privacy` for parent teams cannot be `secret`. The options are: - * **For a non-nested team:** - * * `secret` - only visible to organization owners and members of this team. - * * `closed` - visible to all members of this organization. - * **For a parent or child team:** - * * `closed` - visible to all members of this organization. - * @enum {string} - */ - privacy?: "secret" | "closed"; - /** - * @description The notification setting the team has chosen. Editing teams without specifying this parameter leaves `notification_setting` intact. The options are: - * * `notifications_enabled` - team members receive notifications when the team is @mentioned. - * * `notifications_disabled` - no one receives notifications. - * @enum {string} - */ - notification_setting?: - | "notifications_enabled" - | "notifications_disabled"; - /** - * @description **Closing down notice**. The permission that new repositories will be added to the team with when none is specified. - * @default pull - * @enum {string} - */ - permission?: "pull" | "push" | "admin"; - /** @description The ID of a team to set as the parent team. */ - parent_team_id?: number | null; - }; - }; - }; - responses: { - /** @description Response when the updated information already exists */ - 200: { - content: { - "application/json": components["schemas"]["team-full"]; - }; - }; - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["team-full"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List discussions - * @description List all discussions on a team's page. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - "teams/list-discussions-in-org": { - parameters: { - query?: { - direction?: components["parameters"]["direction"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - /** @description Pinned discussions only filter */ - pinned?: string; - }; - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["team-discussion"][]; - }; - }; - }; - }; - /** - * Create a discussion - * @description Creates a new discussion post on a team's page. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "teams/create-discussion-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The discussion post's title. */ - title: string; - /** @description The discussion post's body text. */ - body: string; - /** - * @description Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post. - * @default false - */ - private?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["team-discussion"]; - }; - }; - }; - }; - /** - * Get a discussion - * @description Get a specific discussion on a team's page. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - "teams/get-discussion-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-discussion"]; - }; - }; - }; - }; - /** - * Delete a discussion - * @description Delete a discussion from a team's page. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "teams/delete-discussion-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update a discussion - * @description Edits the title and body text of a discussion post. Only the parameters you provide are updated. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "teams/update-discussion-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The discussion post's title. */ - title?: string; - /** @description The discussion post's body text. */ - body?: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-discussion"]; - }; - }; - }; - }; - /** - * List discussion comments - * @description List all comments on a team discussion. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - "teams/list-discussion-comments-in-org": { - parameters: { - query?: { - direction?: components["parameters"]["direction"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["team-discussion-comment"][]; - }; - }; - }; - }; - /** - * Create a discussion comment - * @description Creates a new comment on a team discussion. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "teams/create-discussion-comment-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The discussion comment's body text. */ - body: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["team-discussion-comment"]; - }; - }; - }; - }; - /** - * Get a discussion comment - * @description Get a specific comment on a team discussion. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - "teams/get-discussion-comment-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-discussion-comment"]; - }; - }; - }; - }; - /** - * Delete a discussion comment - * @description Deletes a comment on a team discussion. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "teams/delete-discussion-comment-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update a discussion comment - * @description Edits the body text of a discussion comment. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "teams/update-discussion-comment-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The discussion comment's body text. */ - body: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-discussion-comment"]; - }; - }; - }; - }; - /** - * List reactions for a team discussion comment - * @description List the reactions to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - "reactions/list-for-team-discussion-comment-in-org": { - parameters: { - query?: { - /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a team discussion comment. */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["reaction"][]; - }; - }; - }; - }; - /** - * Create reaction for a team discussion comment - * @description Create a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). - * - * A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "reactions/create-for-team-discussion-comment-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the team discussion comment. - * @enum {string} - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - }; - responses: { - /** @description Response when the reaction type has already been added to this team discussion comment */ - 200: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - }; - }; - /** - * Delete team discussion comment reaction - * @description > [!NOTE] - * > You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id`. - * - * Delete a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "reactions/delete-for-team-discussion-comment": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List reactions for a team discussion - * @description List the reactions to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - "reactions/list-for-team-discussion-in-org": { - parameters: { - query?: { - /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a team discussion. */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["reaction"][]; - }; - }; - }; - }; - /** - * Create reaction for a team discussion - * @description Create a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). - * - * A response with an HTTP `200` status means that you already added the reaction type to this team discussion. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "reactions/create-for-team-discussion-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the team discussion. - * @enum {string} - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - }; - }; - /** - * Delete team discussion reaction - * @description > [!NOTE] - * > You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions/:reaction_id`. - * - * Delete a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "reactions/delete-for-team-discussion": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - discussion_number: components["parameters"]["discussion-number"]; - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List pending team invitations - * @description The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/invitations`. - */ - "teams/list-pending-invitations-in-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["organization-invitation"][]; - }; - }; - }; - }; - /** - * List team members - * @description Team members will include the members of child teams. - * - * To list members in a team, the team must be visible to the authenticated user. - */ - "teams/list-members-in-org": { - parameters: { - query?: { - /** @description Filters members returned by their role in the team. */ - role?: "member" | "maintainer" | "all"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - }; - /** - * Get team membership for a user - * @description Team members will include the members of child teams. - * - * To get a user's membership with a team, the team must be visible to the authenticated user. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/memberships/{username}`. - * - * > [!NOTE] - * > The response contains the `state` of the membership and the member's `role`. - * - * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/teams/teams#create-a-team). - */ - "teams/get-membership-for-user-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-membership"]; - }; - }; - /** @description if user has no team membership */ - 404: { - content: never; - }; - }; - }; - /** - * Add or update team membership for a user - * @description Adds an organization member to a team. An authenticated organization owner or team maintainer can add organization members to a team. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * An organization owner can add someone who is not part of the team's organization to a team. When an organization owner adds someone to a team who is not an organization member, this endpoint will send an invitation to the person via email. This newly-created membership will be in the "pending" state until the person accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. - * - * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/memberships/{username}`. - */ - "teams/add-or-update-membership-for-user-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - username: components["parameters"]["username"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description The role that this user should have in the team. - * @default member - * @enum {string} - */ - role?: "member" | "maintainer"; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-membership"]; - }; - }; - /** @description Forbidden if team synchronization is set up */ - 403: { - content: never; - }; - /** @description Unprocessable Entity if you attempt to add an organization to a team */ - 422: { - content: never; - }; - }; - }; - /** - * Remove team membership for a user - * @description To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/memberships/{username}`. - */ - "teams/remove-membership-for-user-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - /** @description Forbidden if team synchronization is set up */ - 403: { - content: never; - }; - }; - }; - /** - * List team projects - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "teams/list-projects-in-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["team-project"][]; - }; - }; - }; - }; - /** - * Check team permissions for a project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "teams/check-permissions-for-project-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - project_id: components["parameters"]["project-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-project"]; - }; - }; - /** @description Not Found if project is not managed by this team */ - 404: { - content: never; - }; - }; - }; - /** - * Add or update team project permissions - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "teams/add-or-update-project-permissions-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - project_id: components["parameters"]["project-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description The permission to grant to the team for this project. Default: the team's `permission` attribute will be used to determine what permission to grant the team on this project. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - * @enum {string} - */ - permission?: "read" | "write" | "admin"; - } | null; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - /** @description Forbidden if the project is not owned by the organization */ - 403: { - content: { - "application/json": { - message?: string; - documentation_url?: string; - }; - }; - }; - }; - }; - /** - * Remove a project from a team - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "teams/remove-project-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - project_id: components["parameters"]["project-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List team repositories - * @description Lists a team's repositories visible to the authenticated user. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos`. - */ - "teams/list-repos-in-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - }; - }; - /** - * Check team permissions for a repository - * @description Checks whether a team has `admin`, `push`, `maintain`, `triage`, or `pull` permission for a repository. Repositories inherited through a parent team will also be checked. - * - * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types/) via the `application/vnd.github.v3.repository+json` accept header. - * - * If a team doesn't have permission for the repository, you will receive a `404 Not Found` response status. - * - * If the repository is private, you must have at least `read` permission for that repository, and your token must have the `repo` or `admin:org` scope. Otherwise, you will receive a `404 Not Found` response status. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - */ - "teams/check-permissions-for-repo-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Alternative response with repository permissions */ - 200: { - content: { - "application/json": components["schemas"]["team-repository"]; - }; - }; - /** @description Response if team has permission for the repository. This is the response when the repository media type hasn't been provded in the Accept header. */ - 204: { - content: never; - }; - /** @description Not Found if team does not have permission for the repository */ - 404: { - content: never; - }; - }; - }; - /** - * Add or update team repository permissions - * @description To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - * - * For more information about the permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". - */ - "teams/add-or-update-repo-permissions-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The permission to grant the team on this repository. We accept the following permissions to be set: `pull`, `triage`, `push`, `maintain`, `admin` and you can also specify a custom repository role name, if the owning organization has defined any. If no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository. */ - permission?: string; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Remove a repository from a team - * @description If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. This does not delete the repository, it just removes it from the team. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - */ - "teams/remove-repo-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List child teams - * @description Lists the child teams of the team specified by `{team_slug}`. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/teams`. - */ - "teams/list-child-in-org": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team-slug"]; - }; - }; - responses: { - /** @description if child teams exist */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["team"][]; - }; - }; - }; - }; - /** - * Enable or disable a security feature for an organization - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** The ability to enable or disable a security feature for all eligible repositories in an organization is closing down. Please use [code security configurations](https://docs.github.com/rest/code-security/configurations) instead. For more information, see the [changelog](https://github.blog/changelog/2024-07-22-deprecation-of-api-endpoint-to-enable-or-disable-a-security-feature-for-an-organization/). - * - * Enables or disables the specified security feature for all eligible repositories in an organization. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * The authenticated user must be an organization owner or be member of a team with the security manager role to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org`, `write:org`, or `repo` scopes to use this endpoint. - */ - "orgs/enable-or-disable-security-product-on-all-org-repos": { - parameters: { - path: { - org: components["parameters"]["org"]; - security_product: components["parameters"]["security-product"]; - enablement: components["parameters"]["org-security-product-enablement"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description CodeQL query suite to be used. If you specify the `query_suite` parameter, the default setup will be configured with this query suite only on all repositories that didn't have default setup already configured. It will not change the query suite on repositories that already have default setup configured. - * If you don't specify any `query_suite` in your request, the preferred query suite of the organization will be applied. - * @enum {string} - */ - query_suite?: "default" | "extended"; - }; - }; - }; - responses: { - /** @description Action started */ - 204: { - content: never; - }; - /** @description The action could not be taken due to an in progress enablement, or a policy is preventing enablement */ - 422: { - content: never; - }; - }; - }; - /** - * Get a project column - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/get-column": { - parameters: { - path: { - column_id: components["parameters"]["column-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["project-column"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a project column - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/delete-column": { - parameters: { - path: { - column_id: components["parameters"]["column-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Update an existing project column - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/update-column": { - parameters: { - path: { - column_id: components["parameters"]["column-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description Name of the project column - * @example Remaining tasks - */ - name: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["project-column"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Move a project column - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/move-column": { - parameters: { - path: { - column_id: components["parameters"]["column-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The position of the column in a project. Can be one of: `first`, `last`, or `after:` to place after the specified column. - * @example last - */ - position: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": Record; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Get a project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/get": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["project"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Delete a project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/delete": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - }; - }; - responses: { - /** @description Delete Success */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - /** @description Forbidden */ - 403: { - content: { - "application/json": { - message?: string; - documentation_url?: string; - errors?: string[]; - }; - }; - }; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** - * Update a project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/update": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description Name of the project - * @example Week One Sprint - */ - name?: string; - /** - * @description Body of the project - * @example This project represents the sprint of the first week in January - */ - body?: string | null; - /** - * @description State of the project; either 'open' or 'closed' - * @example open - */ - state?: string; - /** - * @description The baseline permission that all organization members have on this project - * @enum {string} - */ - organization_permission?: "read" | "write" | "admin" | "none"; - /** @description Whether or not this project can be seen by everyone. */ - private?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["project"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - /** @description Forbidden */ - 403: { - content: { - "application/json": { - message?: string; - documentation_url?: string; - errors?: string[]; - }; - }; - }; - /** @description Not Found if the authenticated user does not have access to the project */ - 404: { - content: never; - }; - 410: components["responses"]["gone"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List project collaborators - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/list-collaborators": { - parameters: { - query?: { - /** @description Filters the collaborators by their affiliation. `outside` means outside collaborators of a project that are not a member of the project's organization. `direct` means collaborators with permissions to a project, regardless of organization membership status. `all` means all collaborators the authenticated user can see. */ - affiliation?: "outside" | "direct" | "all"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - project_id: components["parameters"]["project-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Add project collaborator - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/add-collaborator": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - username: components["parameters"]["username"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description The permission to grant the collaborator. - * @default write - * @example write - * @enum {string} - */ - permission?: "read" | "write" | "admin"; - } | null; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove user as a collaborator - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/remove-collaborator": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get project permission for a user - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/get-permission-for-user": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["project-collaborator-permission"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get rate limit status for the authenticated user - * @description > [!NOTE] - * > Accessing this endpoint does not count against your REST API rate limit. - * - * Some categories of endpoints have custom rate limits that are separate from the rate limit governing the other REST API endpoints. For this reason, the API response categorizes your rate limit. Under `resources`, you'll see objects relating to different categories: - * * The `core` object provides your rate limit status for all non-search-related resources in the REST API. - * * The `search` object provides your rate limit status for the REST API for searching (excluding code searches). For more information, see "[Search](https://docs.github.com/rest/search/search)." - * * The `code_search` object provides your rate limit status for the REST API for searching code. For more information, see "[Search code](https://docs.github.com/rest/search/search#search-code)." - * * The `graphql` object provides your rate limit status for the GraphQL API. For more information, see "[Resource limitations](https://docs.github.com/graphql/overview/resource-limitations#rate-limit)." - * * The `integration_manifest` object provides your rate limit status for the `POST /app-manifests/{code}/conversions` operation. For more information, see "[Creating a GitHub App from a manifest](https://docs.github.com/apps/creating-github-apps/setting-up-a-github-app/creating-a-github-app-from-a-manifest#3-you-exchange-the-temporary-code-to-retrieve-the-app-configuration)." - * * The `dependency_snapshots` object provides your rate limit status for submitting snapshots to the dependency graph. For more information, see "[Dependency graph](https://docs.github.com/rest/dependency-graph)." - * * The `dependency_sbom` object provides your rate limit status for requesting SBOMs from the dependency graph. For more information, see "[Dependency graph](https://docs.github.com/rest/dependency-graph)." - * * The `code_scanning_upload` object provides your rate limit status for uploading SARIF results to code scanning. For more information, see "[Uploading a SARIF file to GitHub](https://docs.github.com/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github)." - * * The `actions_runner_registration` object provides your rate limit status for registering self-hosted runners in GitHub Actions. For more information, see "[Self-hosted runners](https://docs.github.com/rest/actions/self-hosted-runners)." - * * The `source_import` object is no longer in use for any API endpoints, and it will be removed in the next API version. For more information about API versions, see "[API Versions](https://docs.github.com/rest/about-the-rest-api/api-versions)." - * - * > [!NOTE] - * > The `rate` object is closing down. If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object. - */ - "rate-limit/get": { - responses: { - /** @description Response */ - 200: { - headers: { - "X-RateLimit-Limit": components["headers"]["x-rate-limit-limit"]; - "X-RateLimit-Remaining": components["headers"]["x-rate-limit-remaining"]; - "X-RateLimit-Reset": components["headers"]["x-rate-limit-reset"]; - }; - content: { - "application/json": components["schemas"]["rate-limit-overview"]; - }; - }; - 304: components["responses"]["not_modified"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get a repository - * @description The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network. - * - * > [!NOTE] - * > - In order to see the `security_and_analysis` block for a repository you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * > - To view merge-related settings, you must have the `contents:read` and `contents:write` permissions. - */ - "repos/get": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["full-repository"]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a repository - * @description Deleting a repository requires admin access. - * - * If an organization owner has configured the organization to prevent members from deleting organization-owned - * repositories, you will get a `403 Forbidden` response. - * - * OAuth app tokens and personal access tokens (classic) need the `delete_repo` scope to use this endpoint. - */ - "repos/delete": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 307: components["responses"]["temporary_redirect"]; - /** @description If an organization owner has configured the organization to prevent members from deleting organization-owned repositories, a member will get this response: */ - 403: { - content: { - "application/json": { - message?: string; - documentation_url?: string; - }; - }; - }; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - }; - }; - /** - * Update a repository - * @description **Note**: To edit a repository's topics, use the [Replace all repository topics](https://docs.github.com/rest/repos/repos#replace-all-repository-topics) endpoint. - */ - "repos/update": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The name of the repository. */ - name?: string; - /** @description A short description of the repository. */ - description?: string; - /** @description A URL with more information about the repository. */ - homepage?: string; - /** - * @description Either `true` to make the repository private or `false` to make it public. Default: `false`. - * **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://docs.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private. - * @default false - */ - private?: boolean; - /** - * @description The visibility of the repository. - * @enum {string} - */ - visibility?: "public" | "private"; - /** - * @description Specify which security and analysis features to enable or disable for the repository. - * - * To use this parameter, you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * For example, to enable GitHub Advanced Security, use this data in the body of the `PATCH` request: - * `{ "security_and_analysis": {"advanced_security": { "status": "enabled" } } }`. - * - * You can check which security and analysis features are currently enabled by using a `GET /repos/{owner}/{repo}` request. - */ - security_and_analysis?: { - /** - * @description Use the `status` property to enable or disable GitHub Advanced Security for this repository. - * For more information, see "[About GitHub Advanced - * Security](/github/getting-started-with-github/learning-about-github/about-github-advanced-security)." - * - * For standalone Code Scanning or Secret Protection products, this parameter cannot be used. - */ - advanced_security?: { - /** @description Can be `enabled` or `disabled`. */ - status?: string; - }; - /** @description Use the `status` property to enable or disable GitHub Code Security for this repository. */ - code_security?: { - /** @description Can be `enabled` or `disabled`. */ - status?: string; - }; - /** @description Use the `status` property to enable or disable secret scanning for this repository. For more information, see "[About secret scanning](/code-security/secret-security/about-secret-scanning)." */ - secret_scanning?: { - /** @description Can be `enabled` or `disabled`. */ - status?: string; - }; - /** @description Use the `status` property to enable or disable secret scanning push protection for this repository. For more information, see "[Protecting pushes with secret scanning](/code-security/secret-scanning/protecting-pushes-with-secret-scanning)." */ - secret_scanning_push_protection?: { - /** @description Can be `enabled` or `disabled`. */ - status?: string; - }; - /** @description Use the `status` property to enable or disable secret scanning AI detection for this repository. For more information, see "[Responsible detection of generic secrets with AI](https://docs.github.com/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/responsible-ai-generic-secrets)." */ - secret_scanning_ai_detection?: { - /** @description Can be `enabled` or `disabled`. */ - status?: string; - }; - /** @description Use the `status` property to enable or disable secret scanning non-provider patterns for this repository. For more information, see "[Supported secret scanning patterns](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." */ - secret_scanning_non_provider_patterns?: { - /** @description Can be `enabled` or `disabled`. */ - status?: string; - }; - } | null; - /** - * @description Either `true` to enable issues for this repository or `false` to disable them. - * @default true - */ - has_issues?: boolean; - /** - * @description Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error. - * @default true - */ - has_projects?: boolean; - /** - * @description Either `true` to enable the wiki for this repository or `false` to disable it. - * @default true - */ - has_wiki?: boolean; - /** - * @description Either `true` to make this repo available as a template repository or `false` to prevent it. - * @default false - */ - is_template?: boolean; - /** @description Updates the default branch for this repository. */ - default_branch?: string; - /** - * @description Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging. - * @default true - */ - allow_squash_merge?: boolean; - /** - * @description Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits. - * @default true - */ - allow_merge_commit?: boolean; - /** - * @description Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging. - * @default true - */ - allow_rebase_merge?: boolean; - /** - * @description Either `true` to allow auto-merge on pull requests, or `false` to disallow auto-merge. - * @default false - */ - allow_auto_merge?: boolean; - /** - * @description Either `true` to allow automatically deleting head branches when pull requests are merged, or `false` to prevent automatic deletion. - * @default false - */ - delete_branch_on_merge?: boolean; - /** - * @description Either `true` to always allow a pull request head branch that is behind its base branch to be updated even if it is not required to be up to date before merging, or false otherwise. - * @default false - */ - allow_update_branch?: boolean; - /** - * @deprecated - * @description Either `true` to allow squash-merge commits to use pull request title, or `false` to use commit message. **This property is closing down. Please use `squash_merge_commit_title` instead. - * @default false - */ - use_squash_pr_title_as_default?: boolean; - /** - * @description Required when using `squash_merge_commit_message`. - * - * The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK"; - /** - * @description Required when using `merge_commit_message`. - * - * The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description Whether to archive this repository. `false` will unarchive a previously archived repository. - * @default false - */ - archived?: boolean; - /** - * @description Either `true` to allow private forks, or `false` to prevent private forks. - * @default false - */ - allow_forking?: boolean; - /** - * @description Either `true` to require contributors to sign off on web-based commits, or `false` to not require contributors to sign off on web-based commits. - * @default false - */ - web_commit_signoff_required?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["full-repository"]; - }; - }; - 307: components["responses"]["temporary_redirect"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List artifacts for a repository - * @description Lists all artifacts for a repository. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "actions/list-artifacts-for-repo": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - name?: components["parameters"]["artifact-name"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - artifacts: components["schemas"]["artifact"][]; - }; - }; - }; - }; - }; - /** - * Get an artifact - * @description Gets a specific artifact for a workflow run. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-artifact": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - artifact_id: components["parameters"]["artifact-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["artifact"]; - }; - }; - }; - }; - /** - * Delete an artifact - * @description Deletes an artifact for a workflow run. - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/delete-artifact": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - artifact_id: components["parameters"]["artifact-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Download an artifact - * @description Gets a redirect URL to download an archive for a repository. This URL expires after 1 minute. Look for `Location:` in - * the response header to find the URL for the download. The `:archive_format` must be `zip`. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/download-artifact": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - artifact_id: components["parameters"]["artifact-id"]; - archive_format: string; - }; - }; - responses: { - /** @description Response */ - 302: { - headers: { - Location: components["headers"]["location"]; - }; - content: never; - }; - 410: components["responses"]["gone"]; - }; - }; - /** - * Get GitHub Actions cache usage for a repository - * @description Gets GitHub Actions cache usage for a repository. - * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-actions-cache-usage": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-cache-usage-by-repository"]; - }; - }; - }; - }; - /** - * List GitHub Actions caches for a repository - * @description Lists the GitHub Actions caches for a repository. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-actions-cache-list": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - ref?: components["parameters"]["actions-cache-git-ref-full"]; - key?: components["parameters"]["actions-cache-key"]; - sort?: components["parameters"]["actions-cache-list-sort"]; - direction?: components["parameters"]["direction"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["actions-cache-list"]; - }; - }; - }; - }; - /** - * Delete GitHub Actions caches for a repository (using a cache key) - * @description Deletes one or more GitHub Actions caches for a repository, using a complete cache key. By default, all caches that match the provided key are deleted, but you can optionally provide a Git ref to restrict deletions to caches that match both the provided key and the Git ref. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/delete-actions-cache-by-key": { - parameters: { - query: { - key: components["parameters"]["actions-cache-key-required"]; - ref?: components["parameters"]["actions-cache-git-ref-full"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-cache-list"]; - }; - }; - }; - }; - /** - * Delete a GitHub Actions cache for a repository (using a cache ID) - * @description Deletes a GitHub Actions cache for a repository, using a cache ID. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/delete-actions-cache-by-id": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - cache_id: components["parameters"]["cache-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get a job for a workflow run - * @description Gets a specific job in a workflow run. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-job-for-workflow-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - job_id: components["parameters"]["job-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["job"]; - }; - }; - }; - }; - /** - * Download job logs for a workflow run - * @description Gets a redirect URL to download a plain text file of logs for a workflow job. This link expires after 1 minute. Look - * for `Location:` in the response header to find the URL for the download. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/download-job-logs-for-workflow-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - job_id: components["parameters"]["job-id"]; - }; - }; - responses: { - /** @description Response */ - 302: { - headers: { - /** @example https://pipelines.actions.githubusercontent.com/ab1f3cCFPB34Nd6imvFxpGZH5hNlDp2wijMwl2gDoO0bcrrlJj/_apis/pipelines/1/jobs/19/signedlogcontent?urlExpires=2020-01-22T22%3A44%3A54.1389777Z&urlSigningMethod=HMACV1&urlSignature=2TUDfIg4fm36OJmfPy6km5QD5DLCOkBVzvhWZM8B%2BUY%3D */ - Location?: string; - }; - content: never; - }; - }; - }; - /** - * Re-run a job from a workflow run - * @description Re-run a job and its dependent jobs in a workflow run. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/re-run-job-for-workflow-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - job_id: components["parameters"]["job-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description Whether to enable debug logging for the re-run. - * @default false - */ - enable_debug_logging?: boolean; - } | null; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get the customization template for an OIDC subject claim for a repository - * @description Gets the customization template for an OpenID Connect (OIDC) subject claim. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-custom-oidc-sub-claim-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Status response */ - 200: { - content: { - "application/json": components["schemas"]["oidc-custom-sub-repo"]; - }; - }; - 400: components["responses"]["bad_request"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set the customization template for an OIDC subject claim for a repository - * @description Sets the customization template and `opt-in` or `opt-out` flag for an OpenID Connect (OIDC) subject claim for a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/set-custom-oidc-sub-claim-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Whether to use the default template or not. If `true`, the `include_claim_keys` field is ignored. */ - use_default: boolean; - /** @description Array of unique strings. Each claim key can only contain alphanumeric characters and underscores. */ - include_claim_keys?: string[]; - }; - }; - }; - responses: { - /** @description Empty response */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - 400: components["responses"]["bad_request"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List repository organization secrets - * @description Lists all organization secrets shared with a repository without revealing their encrypted - * values. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/list-repo-organization-secrets": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - secrets: components["schemas"]["actions-secret"][]; - }; - }; - }; - }; - }; - /** - * List repository organization variables - * @description Lists all organization variables shared with a repository. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/list-repo-organization-variables": { - parameters: { - query?: { - per_page?: components["parameters"]["variables-per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - variables: components["schemas"]["actions-variable"][]; - }; - }; - }; - }; - }; - /** - * Get GitHub Actions permissions for a repository - * @description Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions and reusable workflows allowed to run in the repository. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-github-actions-permissions-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-repository-permissions"]; - }; - }; - }; - }; - /** - * Set GitHub Actions permissions for a repository - * @description Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions and reusable workflows in the repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/set-github-actions-permissions-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - enabled: components["schemas"]["actions-enabled"]; - allowed_actions?: components["schemas"]["allowed-actions"]; - sha_pinning_required?: components["schemas"]["sha-pinning-required"]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get the level of access for workflows outside of the repository - * @description Gets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository. - * This endpoint only applies to private repositories. - * For more information, see "[Allowing access to components in a private repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-workflow-access-to-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-workflow-access-to-repository"]; - }; - }; - }; - }; - /** - * Set the level of access for workflows outside of the repository - * @description Sets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository. - * This endpoint only applies to private repositories. - * For more information, see "[Allowing access to components in a private repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository)". - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/set-workflow-access-to-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["actions-workflow-access-to-repository"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get artifact and log retention settings for a repository - * @description Gets artifact and log retention settings for a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-artifact-and-log-retention-settings-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-artifact-and-log-retention-response"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set artifact and log retention settings for a repository - * @description Sets artifact and log retention settings for a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/set-artifact-and-log-retention-settings-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["actions-artifact-and-log-retention"]; - }; - }; - responses: { - /** @description Empty response for successful settings update */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get fork PR contributor approval permissions for a repository - * @description Gets the fork PR contributor approval policy for a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-fork-pr-contributor-approval-permissions-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-fork-pr-contributor-approval"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set fork PR contributor approval permissions for a repository - * @description Sets the fork PR contributor approval policy for a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/set-fork-pr-contributor-approval-permissions-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["actions-fork-pr-contributor-approval"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get private repo fork PR workflow settings for a repository - * @description Gets the settings for whether workflows from fork pull requests can run on a private repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-private-repo-fork-pr-workflows-settings-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-fork-pr-workflows-private-repos"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set private repo fork PR workflow settings for a repository - * @description Sets the settings for whether workflows from fork pull requests can run on a private repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/set-private-repo-fork-pr-workflows-settings-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["actions-fork-pr-workflows-private-repos-request"]; - }; - }; - responses: { - /** @description Empty response for successful settings update */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get allowed actions and reusable workflows for a repository - * @description Gets the settings for selected actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-allowed-actions-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["selected-actions"]; - }; - }; - }; - }; - /** - * Set allowed actions and reusable workflows for a repository - * @description Sets the actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/set-allowed-actions-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody?: { - content: { - "application/json": components["schemas"]["selected-actions"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get default workflow permissions for a repository - * @description Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, - * as well as if GitHub Actions can submit approving pull request reviews. - * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository)." - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-github-actions-default-workflow-permissions-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-get-default-workflow-permissions"]; - }; - }; - }; - }; - /** - * Set default workflow permissions for a repository - * @description Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, and sets if GitHub Actions - * can submit approving pull request reviews. - * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/set-github-actions-default-workflow-permissions-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["actions-set-default-workflow-permissions"]; - }; - }; - responses: { - /** @description Success response */ - 204: { - content: never; - }; - /** @description Conflict response when changing a setting is prevented by the owning organization */ - 409: { - content: never; - }; - }; - }; - /** - * List self-hosted runners for a repository - * @description Lists all self-hosted runners configured in a repository. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/list-self-hosted-runners-for-repo": { - parameters: { - query?: { - /** @description The name of a self-hosted runner. */ - name?: string; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - runners: components["schemas"]["runner"][]; - }; - }; - }; - }; - }; - /** - * List runner applications for a repository - * @description Lists binaries for the runner application that you can download and run. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/list-runner-applications-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["runner-application"][]; - }; - }; - }; - }; - /** - * Create configuration for a just-in-time runner for a repository - * @description Generates a configuration that can be passed to the runner application at startup. - * - * The authenticated user must have admin access to the repository. - * - * OAuth tokens and personal access tokens (classic) need the`repo` scope to use this endpoint. - */ - "actions/generate-runner-jitconfig-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the new runner. */ - name: string; - /** @description The ID of the runner group to register the runner to. */ - runner_group_id: number; - /** @description The names of the custom labels to add to the runner. **Minimum items**: 1. **Maximum items**: 100. */ - labels: string[]; - /** - * @description The working directory to be used for job execution, relative to the runner install directory. - * @default _work - */ - work_folder?: string; - }; - }; - }; - responses: { - 201: components["responses"]["actions_runner_jitconfig"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Create a registration token for a repository - * @description Returns a token that you can pass to the `config` script. The token expires after one hour. - * - * For example, you can replace `TOKEN` in the following example with the registration token provided by this endpoint to configure your self-hosted runner: - * - * ``` - * ./config.sh --url https://github.com/octo-org --token TOKEN - * ``` - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/create-registration-token-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["authentication-token"]; - }; - }; - }; - }; - /** - * Create a remove token for a repository - * @description Returns a token that you can pass to the `config` script to remove a self-hosted runner from an repository. The token expires after one hour. - * - * For example, you can replace `TOKEN` in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization: - * - * ``` - * ./config.sh remove --token TOKEN - * ``` - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/create-remove-token-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["authentication-token"]; - }; - }; - }; - }; - /** - * Get a self-hosted runner for a repository - * @description Gets a specific self-hosted runner configured in a repository. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-self-hosted-runner-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["runner"]; - }; - }; - }; - }; - /** - * Delete a self-hosted runner from a repository - * @description Forces the removal of a self-hosted runner from a repository. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/delete-self-hosted-runner-from-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List labels for a self-hosted runner for a repository - * @description Lists all labels for a self-hosted runner configured in a repository. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/list-labels-for-self-hosted-runner-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - responses: { - 200: components["responses"]["actions_runner_labels"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set custom labels for a self-hosted runner for a repository - * @description Remove all previous custom labels and set the new custom labels for a specific - * self-hosted runner configured in a repository. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/set-custom-labels-for-self-hosted-runner-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The names of the custom labels to set for the runner. You can pass an empty array to remove all custom labels. */ - labels: string[]; - }; - }; - }; - responses: { - 200: components["responses"]["actions_runner_labels"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Add custom labels to a self-hosted runner for a repository - * @description Adds custom labels to a self-hosted runner configured in a repository. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/add-custom-labels-to-self-hosted-runner-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The names of the custom labels to add to the runner. */ - labels: string[]; - }; - }; - }; - responses: { - 200: components["responses"]["actions_runner_labels"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Remove all custom labels from a self-hosted runner for a repository - * @description Remove all custom labels from a self-hosted runner configured in a - * repository. Returns the remaining read-only labels from the runner. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/remove-all-custom-labels-from-self-hosted-runner-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - runner_id: components["parameters"]["runner-id"]; - }; - }; - responses: { - 200: components["responses"]["actions_runner_labels_readonly"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Remove a custom label from a self-hosted runner for a repository - * @description Remove a custom label from a self-hosted runner configured - * in a repository. Returns the remaining labels from the runner. - * - * This endpoint returns a `404 Not Found` status if the custom label is not - * present on the runner. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/remove-custom-label-from-self-hosted-runner-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - runner_id: components["parameters"]["runner-id"]; - name: components["parameters"]["runner-label-name"]; - }; - }; - responses: { - 200: components["responses"]["actions_runner_labels"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List workflow runs for a repository - * @description Lists all workflow runs for a repository. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - * - * This endpoint will return up to 1,000 results for each search when using the following parameters: `actor`, `branch`, `check_suite_id`, `created`, `event`, `head_sha`, `status`. - */ - "actions/list-workflow-runs-for-repo": { - parameters: { - query?: { - actor?: components["parameters"]["actor"]; - branch?: components["parameters"]["workflow-run-branch"]; - event?: components["parameters"]["event"]; - status?: components["parameters"]["workflow-run-status"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - created?: components["parameters"]["created"]; - exclude_pull_requests?: components["parameters"]["exclude-pull-requests"]; - check_suite_id?: components["parameters"]["workflow-run-check-suite-id"]; - head_sha?: components["parameters"]["workflow-run-head-sha"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - workflow_runs: components["schemas"]["workflow-run"][]; - }; - }; - }; - }; - }; - /** - * Get a workflow run - * @description Gets a specific workflow run. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "actions/get-workflow-run": { - parameters: { - query?: { - exclude_pull_requests?: components["parameters"]["exclude-pull-requests"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["workflow-run"]; - }; - }; - }; - }; - /** - * Delete a workflow run - * @description Deletes a specific workflow run. - * - * Anyone with write access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/delete-workflow-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get the review history for a workflow run - * @description Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "actions/get-reviews-for-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["environment-approvals"][]; - }; - }; - }; - }; - /** - * Approve a workflow run for a fork pull request - * @description Approves a workflow run for a pull request from a public fork of a first time contributor. For more information, see ["Approving workflow runs from public forks](https://docs.github.com/actions/managing-workflow-runs/approving-workflow-runs-from-public-forks)." - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/approve-workflow-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List workflow run artifacts - * @description Lists artifacts for a workflow run. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "actions/list-workflow-run-artifacts": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - name?: components["parameters"]["artifact-name"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - artifacts: components["schemas"]["artifact"][]; - }; - }; - }; - }; - }; - /** - * Get a workflow run attempt - * @description Gets a specific workflow run attempt. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "actions/get-workflow-run-attempt": { - parameters: { - query?: { - exclude_pull_requests?: components["parameters"]["exclude-pull-requests"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - attempt_number: components["parameters"]["attempt-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["workflow-run"]; - }; - }; - }; - }; - /** - * List jobs for a workflow run attempt - * @description Lists jobs for a specific workflow run attempt. You can use parameters to narrow the list of results. For more information - * about using parameters, see [Parameters](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "actions/list-jobs-for-workflow-run-attempt": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - attempt_number: components["parameters"]["attempt-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - jobs: components["schemas"]["job"][]; - }; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Download workflow run attempt logs - * @description Gets a redirect URL to download an archive of log files for a specific workflow run attempt. This link expires after - * 1 minute. Look for `Location:` in the response header to find the URL for the download. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/download-workflow-run-attempt-logs": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - attempt_number: components["parameters"]["attempt-number"]; - }; - }; - responses: { - /** @description Response */ - 302: { - headers: { - /** @example https://pipelines.actions.githubusercontent.com/ab1f3cCFPB34Nd6imvFxpGZH5hNlDp2wijMwl2gDoO0bcrrlJj/_apis/pipelines/1/runs/19/signedlogcontent?urlExpires=2020-01-22T22%3A44%3A54.1389777Z&urlSigningMethod=HMACV1&urlSignature=2TUDfIg4fm36OJmfPy6km5QD5DLCOkBVzvhWZM8B%2BUY%3D */ - Location?: string; - }; - content: never; - }; - }; - }; - /** - * Cancel a workflow run - * @description Cancels a workflow run using its `id`. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/cancel-workflow-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** @description Response */ - 202: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - 409: components["responses"]["conflict"]; - }; - }; - /** - * Review custom deployment protection rules for a workflow run - * @description Approve or reject custom deployment protection rules provided by a GitHub App for a workflow run. For more information, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)." - * - * > [!NOTE] - * > GitHub Apps can only review their own custom deployment protection rules. To approve or reject pending deployments that are waiting for review from a specific person or team, see [`POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments`](/rest/actions/workflow-runs#review-pending-deployments-for-a-workflow-run). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "actions/review-custom-gates-for-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - requestBody: { - content: { - "application/json": - | components["schemas"]["review-custom-gates-comment-required"] - | components["schemas"]["review-custom-gates-state-required"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Force cancel a workflow run - * @description Cancels a workflow run and bypasses conditions that would otherwise cause a workflow execution to continue, such as an `always()` condition on a job. - * You should only use this endpoint to cancel a workflow run when the workflow run is not responding to [`POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel`](/rest/actions/workflow-runs#cancel-a-workflow-run). - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/force-cancel-workflow-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** @description Response */ - 202: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - 409: components["responses"]["conflict"]; - }; - }; - /** - * List jobs for a workflow run - * @description Lists jobs for a workflow run. You can use parameters to narrow the list of results. For more information - * about using parameters, see [Parameters](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "actions/list-jobs-for-workflow-run": { - parameters: { - query?: { - /** @description Filters jobs by their `completed_at` timestamp. `latest` returns jobs from the most recent execution of the workflow run. `all` returns all jobs for a workflow run, including from old executions of the workflow run. */ - filter?: "latest" | "all"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - jobs: components["schemas"]["job"][]; - }; - }; - }; - }; - }; - /** - * Download workflow run logs - * @description Gets a redirect URL to download an archive of log files for a workflow run. This link expires after 1 minute. Look for - * `Location:` in the response header to find the URL for the download. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/download-workflow-run-logs": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** @description Response */ - 302: { - headers: { - /** @example https://pipelines.actions.githubusercontent.com/ab1f3cCFPB34Nd6imvFxpGZH5hNlDp2wijMwl2gDoO0bcrrlJj/_apis/pipelines/1/runs/19/signedlogcontent?urlExpires=2020-01-22T22%3A44%3A54.1389777Z&urlSigningMethod=HMACV1&urlSignature=2TUDfIg4fm36OJmfPy6km5QD5DLCOkBVzvhWZM8B%2BUY%3D */ - Location?: string; - }; - content: never; - }; - }; - }; - /** - * Delete workflow run logs - * @description Deletes all logs for a workflow run. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/delete-workflow-run-logs": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get pending deployments for a workflow run - * @description Get all deployment environments for a workflow run that are waiting for protection rules to pass. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-pending-deployments-for-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["pending-deployment"][]; - }; - }; - }; - }; - /** - * Review pending deployments for a workflow run - * @description Approve or reject pending deployments that are waiting on approval by a required reviewer. - * - * Required reviewers with read access to the repository contents and deployments can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/review-pending-deployments-for-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The list of environment ids to approve or reject - * @example [ - * 161171787, - * 161171795 - * ] - */ - environment_ids: number[]; - /** - * @description Whether to approve or reject deployment to the specified environments. - * @example approved - * @enum {string} - */ - state: "approved" | "rejected"; - /** - * @description A comment to accompany the deployment review - * @example Ship it! - */ - comment: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["deployment"][]; - }; - }; - }; - }; - /** - * Re-run a workflow - * @description Re-runs your workflow run using its `id`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/re-run-workflow": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description Whether to enable debug logging for the re-run. - * @default false - */ - enable_debug_logging?: boolean; - } | null; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - }; - }; - /** - * Re-run failed jobs from a workflow run - * @description Re-run all of the failed jobs and their dependent jobs in a workflow run using the `id` of the workflow run. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/re-run-workflow-failed-jobs": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description Whether to enable debug logging for the re-run. - * @default false - */ - enable_debug_logging?: boolean; - } | null; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - }; - }; - /** - * Get workflow run usage - * @description > [!WARNING] - * > This endpoint is in the process of closing down. Refer to "[Actions Get workflow usage and Get workflow run usage endpoints closing down](https://github.blog/changelog/2025-02-02-actions-get-workflow-usage-and-get-workflow-run-usage-endpoints-closing-down/)" for more information. - * - * Gets the number of billable minutes and total run time for a specific workflow run. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "actions/get-workflow-run-usage": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["workflow-run-usage"]; - }; - }; - }; - }; - /** - * List repository secrets - * @description Lists all secrets available in a repository without revealing their encrypted - * values. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/list-repo-secrets": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - secrets: components["schemas"]["actions-secret"][]; - }; - }; - }; - }; - }; - /** - * Get a repository public key - * @description Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-repo-public-key": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-public-key"]; - }; - }; - }; - }; - /** - * Get a repository secret - * @description Gets a single repository secret without revealing its encrypted value. - * - * The authenticated user must have collaborator access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-repo-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-secret"]; - }; - }; - }; - }; - /** - * Create or update a repository secret - * @description Creates or updates a repository secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/create-or-update-repo-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get a repository public key](https://docs.github.com/rest/actions/secrets#get-a-repository-public-key) endpoint. */ - encrypted_value: string; - /** @description ID of the key you used to encrypt the secret. */ - key_id: string; - }; - }; - }; - responses: { - /** @description Response when creating a secret */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - /** @description Response when updating a secret */ - 204: { - content: never; - }; - }; - }; - /** - * Delete a repository secret - * @description Deletes a secret in a repository using the secret name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/delete-repo-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List repository variables - * @description Lists all repository variables. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/list-repo-variables": { - parameters: { - query?: { - per_page?: components["parameters"]["variables-per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - variables: components["schemas"]["actions-variable"][]; - }; - }; - }; - }; - }; - /** - * Create a repository variable - * @description Creates a repository variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/create-repo-variable": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the variable. */ - name: string; - /** @description The value of the variable. */ - value: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - }; - }; - /** - * Get a repository variable - * @description Gets a specific variable in a repository. - * - * The authenticated user must have collaborator access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-repo-variable": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - name: components["parameters"]["variable-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-variable"]; - }; - }; - }; - }; - /** - * Delete a repository variable - * @description Deletes a repository variable using the variable name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/delete-repo-variable": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - name: components["parameters"]["variable-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update a repository variable - * @description Updates a repository variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/update-repo-variable": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - name: components["parameters"]["variable-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the variable. */ - name?: string; - /** @description The value of the variable. */ - value?: string; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List repository workflows - * @description Lists the workflows in a repository. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "actions/list-repo-workflows": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - workflows: components["schemas"]["workflow"][]; - }; - }; - }; - }; - }; - /** - * Get a workflow - * @description Gets a specific workflow. You can replace `workflow_id` with the workflow - * file name. For example, you could use `main.yaml`. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "actions/get-workflow": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - workflow_id: components["parameters"]["workflow-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["workflow"]; - }; - }; - }; - }; - /** - * Disable a workflow - * @description Disables a workflow and sets the `state` of the workflow to `disabled_manually`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/disable-workflow": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - workflow_id: components["parameters"]["workflow-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Create a workflow dispatch event - * @description You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * You must configure your GitHub Actions workflow to run when the [`workflow_dispatch` webhook](/developers/webhooks-and-events/webhook-events-and-payloads#workflow_dispatch) event occurs. The `inputs` are configured in the workflow file. For more information about how to configure the `workflow_dispatch` event in the workflow file, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_dispatch)." - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/create-workflow-dispatch": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - workflow_id: components["parameters"]["workflow-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The git reference for the workflow. The reference can be a branch or tag name. */ - ref: string; - /** @description Input keys and values configured in the workflow file. The maximum number of properties is 10. Any default properties configured in the workflow file will be used when `inputs` are omitted. */ - inputs?: { - [key: string]: unknown; - }; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Enable a workflow - * @description Enables a workflow and sets the `state` of the workflow to `active`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/enable-workflow": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - workflow_id: components["parameters"]["workflow-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List workflow runs for a workflow - * @description List all workflow runs for a workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - * - * This endpoint will return up to 1,000 results for each search when using the following parameters: `actor`, `branch`, `check_suite_id`, `created`, `event`, `head_sha`, `status`. - */ - "actions/list-workflow-runs": { - parameters: { - query?: { - actor?: components["parameters"]["actor"]; - branch?: components["parameters"]["workflow-run-branch"]; - event?: components["parameters"]["event"]; - status?: components["parameters"]["workflow-run-status"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - created?: components["parameters"]["created"]; - exclude_pull_requests?: components["parameters"]["exclude-pull-requests"]; - check_suite_id?: components["parameters"]["workflow-run-check-suite-id"]; - head_sha?: components["parameters"]["workflow-run-head-sha"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - workflow_id: components["parameters"]["workflow-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - workflow_runs: components["schemas"]["workflow-run"][]; - }; - }; - }; - }; - }; - /** - * Get workflow usage - * @description > [!WARNING] - * > This endpoint is in the process of closing down. Refer to "[Actions Get workflow usage and Get workflow run usage endpoints closing down](https://github.blog/changelog/2025-02-02-actions-get-workflow-usage-and-get-workflow-run-usage-endpoints-closing-down/)" for more information. - * - * Gets the number of billable minutes used by a specific workflow during the current billing cycle. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "actions/get-workflow-usage": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - workflow_id: components["parameters"]["workflow-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["workflow-usage"]; - }; - }; - }; - }; - /** - * List repository activities - * @description Lists a detailed history of changes to a repository, such as pushes, merges, force pushes, and branch changes, and associates these changes with commits and users. - * - * For more information about viewing repository activity, - * see "[Viewing activity and data for your repository](https://docs.github.com/repositories/viewing-activity-and-data-for-your-repository)." - */ - "repos/list-activities": { - parameters: { - query?: { - direction?: components["parameters"]["direction"]; - per_page?: components["parameters"]["per-page"]; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - /** - * @description The Git reference for the activities you want to list. - * - * The `ref` for a branch can be formatted either as `refs/heads/BRANCH_NAME` or `BRANCH_NAME`, where `BRANCH_NAME` is the name of your branch. - */ - ref?: string; - /** @description The GitHub username to use to filter by the actor who performed the activity. */ - actor?: string; - /** - * @description The time period to filter by. - * - * For example, `day` will filter for activity that occurred in the past 24 hours, and `week` will filter for activity that occurred in the past 7 days (168 hours). - */ - time_period?: "day" | "week" | "month" | "quarter" | "year"; - /** - * @description The activity type to filter by. - * - * For example, you can choose to filter by "force_push", to see all force pushes to the repository. - */ - activity_type?: - | "push" - | "force_push" - | "branch_creation" - | "branch_deletion" - | "pr_merge" - | "merge_queue_merge"; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["activity"][]; - }; - }; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List assignees - * @description Lists the [available assignees](https://docs.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository. - */ - "issues/list-assignees": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Check if a user can be assigned - * @description Checks if a user has permission to be assigned to an issue in this repository. - * - * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned. - * - * Otherwise a `404` status code is returned. - */ - "issues/check-user-can-be-assigned": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - assignee: string; - }; - }; - responses: { - /** @description If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned. */ - 204: { - content: never; - }; - /** @description Otherwise a `404` status code is returned. */ - 404: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - }; - /** - * Create an attestation - * @description Store an artifact attestation and associate it with a repository. - * - * The authenticated user must have write permission to the repository and, if using a fine-grained access token, the `attestations:write` permission is required. - * - * Artifact attestations are meant to be created using the [attest action](https://github.com/actions/attest). For more information, see our guide on [using artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - "repos/create-attestation": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The attestation's Sigstore Bundle. - * Refer to the [Sigstore Bundle Specification](https://github.com/sigstore/protobuf-specs/blob/main/protos/sigstore_bundle.proto) for more information. - */ - bundle: { - mediaType?: string; - verificationMaterial?: { - [key: string]: unknown; - }; - dsseEnvelope?: { - [key: string]: unknown; - }; - }; - }; - }; - }; - responses: { - /** @description response */ - 201: { - content: { - "application/json": { - /** @description The ID of the attestation. */ - id?: number; - }; - }; - }; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List attestations - * @description List a collection of artifact attestations with a given subject digest that are associated with a repository. - * - * The authenticated user making the request must have read access to the repository. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - "repos/list-attestations": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - /** - * @description Optional filter for fetching attestations with a given predicate type. - * This option accepts `provenance`, `sbom`, `release`, or freeform text - * for custom predicate types. - */ - predicate_type?: string; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The parameter should be set to the attestation's subject's SHA256 digest, in the form `sha256:HEX_DIGEST`. */ - subject_digest: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - attestations?: { - /** - * @description The attestation's Sigstore Bundle. - * Refer to the [Sigstore Bundle Specification](https://github.com/sigstore/protobuf-specs/blob/main/protos/sigstore_bundle.proto) for more information. - */ - bundle?: { - mediaType?: string; - verificationMaterial?: { - [key: string]: unknown; - }; - dsseEnvelope?: { - [key: string]: unknown; - }; - }; - repository_id?: number; - bundle_url?: string; - initiator?: string; - }[]; - }; - }; - }; - }; - }; - /** - * Get all autolinks of a repository - * @description Gets all autolinks that are configured for a repository. - * - * Information about autolinks are only available to repository administrators. - */ - "repos/list-autolinks": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["autolink"][]; - }; - }; - }; - }; - /** - * Create an autolink reference for a repository - * @description Users with admin access to the repository can create an autolink. - */ - "repos/create-autolink": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description This prefix appended by certain characters will generate a link any time it is found in an issue, pull request, or commit. */ - key_prefix: string; - /** @description The URL must contain `` for the reference number. `` matches different characters depending on the value of `is_alphanumeric`. */ - url_template: string; - /** - * @description Whether this autolink reference matches alphanumeric characters. If true, the `` parameter of the `url_template` matches alphanumeric characters `A-Z` (case insensitive), `0-9`, and `-`. If false, this autolink reference only matches numeric characters. - * @default true - */ - is_alphanumeric?: boolean; - }; - }; - }; - responses: { - /** @description response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/autolinks/1 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["autolink"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get an autolink reference of a repository - * @description This returns a single autolink reference by ID that was configured for the given repository. - * - * Information about autolinks are only available to repository administrators. - */ - "repos/get-autolink": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - autolink_id: components["parameters"]["autolink-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["autolink"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete an autolink reference from a repository - * @description This deletes a single autolink reference by ID that was configured for the given repository. - * - * Information about autolinks are only available to repository administrators. - */ - "repos/delete-autolink": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - autolink_id: components["parameters"]["autolink-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Check if Dependabot security updates are enabled for a repository - * @description Shows whether Dependabot security updates are enabled, disabled or paused for a repository. The authenticated user must have admin read access to the repository. For more information, see "[Configuring Dependabot security updates](https://docs.github.com/articles/configuring-automated-security-fixes)". - */ - "repos/check-automated-security-fixes": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response if Dependabot is enabled */ - 200: { - content: { - "application/json": components["schemas"]["check-automated-security-fixes"]; - }; - }; - /** @description Not Found if Dependabot is not enabled for the repository */ - 404: { - content: never; - }; - }; - }; - /** - * Enable Dependabot security updates - * @description Enables Dependabot security updates for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring Dependabot security updates](https://docs.github.com/articles/configuring-automated-security-fixes)". - */ - "repos/enable-automated-security-fixes": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Disable Dependabot security updates - * @description Disables Dependabot security updates for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring Dependabot security updates](https://docs.github.com/articles/configuring-automated-security-fixes)". - */ - "repos/disable-automated-security-fixes": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** List branches */ - "repos/list-branches": { - parameters: { - query?: { - /** @description Setting to `true` returns only branches protected by branch protections or rulesets. When set to `false`, only unprotected branches are returned. Omitting this parameter returns all branches. */ - protected?: boolean; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["short-branch"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** Get a branch */ - "repos/get-branch": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["branch-with-protection"]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get branch protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/get-branch-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["branch-protection"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update branch protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Protecting a branch requires admin or owner permissions to the repository. - * - * > [!NOTE] - * > Passing new arrays of `users` and `teams` replaces their previous values. - * - * > [!NOTE] - * > The list of users, apps, and teams in total is limited to 100 items. - */ - "repos/update-branch-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Require status checks to pass before merging. Set to `null` to disable. */ - required_status_checks: { - /** @description Require branches to be up to date before merging. */ - strict: boolean; - /** - * @deprecated - * @description **Closing down notice**: The list of status checks to require in order to merge into this branch. If any of these checks have recently been set by a particular GitHub App, they will be required to come from that app in future for the branch to merge. Use `checks` instead of `contexts` for more fine-grained control. - */ - contexts: string[]; - /** @description The list of status checks to require in order to merge into this branch. */ - checks?: { - /** @description The name of the required check */ - context: string; - /** @description The ID of the GitHub App that must provide this check. Omit this field to automatically select the GitHub App that has recently provided this check, or any app if it was not set by a GitHub App. Pass -1 to explicitly allow any app to set the status. */ - app_id?: number; - }[]; - } | null; - /** @description Enforce all configured restrictions for administrators. Set to `true` to enforce required status checks for repository administrators. Set to `null` to disable. */ - enforce_admins: boolean | null; - /** @description Require at least one approving review on a pull request, before merging. Set to `null` to disable. */ - required_pull_request_reviews: { - /** @description Specify which users, teams, and apps can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories. */ - dismissal_restrictions?: { - /** @description The list of user `login`s with dismissal access */ - users?: string[]; - /** @description The list of team `slug`s with dismissal access */ - teams?: string[]; - /** @description The list of app `slug`s with dismissal access */ - apps?: string[]; - }; - /** @description Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit. */ - dismiss_stale_reviews?: boolean; - /** @description Blocks merging pull requests until [code owners](https://docs.github.com/articles/about-code-owners/) review them. */ - require_code_owner_reviews?: boolean; - /** @description Specify the number of reviewers required to approve pull requests. Use a number between 1 and 6 or 0 to not require reviewers. */ - required_approving_review_count?: number; - /** - * @description Whether the most recent push must be approved by someone other than the person who pushed it. Default: `false`. - * @default false - */ - require_last_push_approval?: boolean; - /** @description Allow specific users, teams, or apps to bypass pull request requirements. */ - bypass_pull_request_allowances?: { - /** @description The list of user `login`s allowed to bypass pull request requirements. */ - users?: string[]; - /** @description The list of team `slug`s allowed to bypass pull request requirements. */ - teams?: string[]; - /** @description The list of app `slug`s allowed to bypass pull request requirements. */ - apps?: string[]; - }; - } | null; - /** @description Restrict who can push to the protected branch. User, app, and team `restrictions` are only available for organization-owned repositories. Set to `null` to disable. */ - restrictions: { - /** @description The list of user `login`s with push access */ - users: string[]; - /** @description The list of team `slug`s with push access */ - teams: string[]; - /** @description The list of app `slug`s with push access */ - apps?: string[]; - } | null; - /** @description Enforces a linear commit Git history, which prevents anyone from pushing merge commits to a branch. Set to `true` to enforce a linear commit history. Set to `false` to disable a linear commit Git history. Your repository must allow squash merging or rebase merging before you can enable a linear commit history. Default: `false`. For more information, see "[Requiring a linear commit history](https://docs.github.com/github/administering-a-repository/requiring-a-linear-commit-history)" in the GitHub Help documentation. */ - required_linear_history?: boolean; - /** @description Permits force pushes to the protected branch by anyone with write access to the repository. Set to `true` to allow force pushes. Set to `false` or `null` to block force pushes. Default: `false`. For more information, see "[Enabling force pushes to a protected branch](https://docs.github.com/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch)" in the GitHub Help documentation." */ - allow_force_pushes?: boolean | null; - /** @description Allows deletion of the protected branch by anyone with write access to the repository. Set to `false` to prevent deletion of the protected branch. Default: `false`. For more information, see "[Enabling force pushes to a protected branch](https://docs.github.com/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch)" in the GitHub Help documentation. */ - allow_deletions?: boolean; - /** @description If set to `true`, the `restrictions` branch protection settings which limits who can push will also block pushes which create new branches, unless the push is initiated by a user, team, or app which has the ability to push. Set to `true` to restrict new branch creation. Default: `false`. */ - block_creations?: boolean; - /** @description Requires all conversations on code to be resolved before a pull request can be merged into a branch that matches this rule. Set to `false` to disable. Default: `false`. */ - required_conversation_resolution?: boolean; - /** - * @description Whether to set the branch as read-only. If this is true, users will not be able to push to the branch. Default: `false`. - * @default false - */ - lock_branch?: boolean; - /** - * @description Whether users can pull changes from upstream when the branch is locked. Set to `true` to allow fork syncing. Set to `false` to prevent fork syncing. Default: `false`. - * @default false - */ - allow_fork_syncing?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["protected-branch"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Delete branch protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/delete-branch-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get admin branch protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/get-admin-branch-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["protected-branch-admin-enforced"]; - }; - }; - }; - }; - /** - * Set admin branch protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Adding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - */ - "repos/set-admin-branch-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["protected-branch-admin-enforced"]; - }; - }; - }; - }; - /** - * Delete admin branch protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removing admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - */ - "repos/delete-admin-branch-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get pull request review protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/get-pull-request-review-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["protected-branch-pull-request-review"]; - }; - }; - }; - }; - /** - * Delete pull request review protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/delete-pull-request-review-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update pull request review protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Updating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - * - * > [!NOTE] - * > Passing new arrays of `users` and `teams` replaces their previous values. - */ - "repos/update-pull-request-review-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description Specify which users, teams, and apps can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories. */ - dismissal_restrictions?: { - /** @description The list of user `login`s with dismissal access */ - users?: string[]; - /** @description The list of team `slug`s with dismissal access */ - teams?: string[]; - /** @description The list of app `slug`s with dismissal access */ - apps?: string[]; - }; - /** @description Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit. */ - dismiss_stale_reviews?: boolean; - /** @description Blocks merging pull requests until [code owners](https://docs.github.com/articles/about-code-owners/) have reviewed. */ - require_code_owner_reviews?: boolean; - /** @description Specifies the number of reviewers required to approve pull requests. Use a number between 1 and 6 or 0 to not require reviewers. */ - required_approving_review_count?: number; - /** - * @description Whether the most recent push must be approved by someone other than the person who pushed it. Default: `false` - * @default false - */ - require_last_push_approval?: boolean; - /** @description Allow specific users, teams, or apps to bypass pull request requirements. */ - bypass_pull_request_allowances?: { - /** @description The list of user `login`s allowed to bypass pull request requirements. */ - users?: string[]; - /** @description The list of team `slug`s allowed to bypass pull request requirements. */ - teams?: string[]; - /** @description The list of app `slug`s allowed to bypass pull request requirements. */ - apps?: string[]; - }; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["protected-branch-pull-request-review"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get commit signature protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://docs.github.com/articles/signing-commits-with-gpg) in GitHub Help. - * - * > [!NOTE] - * > You must enable branch protection to require signed commits. - */ - "repos/get-commit-signature-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["protected-branch-admin-enforced"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create commit signature protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits. - */ - "repos/create-commit-signature-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["protected-branch-admin-enforced"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete commit signature protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits. - */ - "repos/delete-commit-signature-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get status checks protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/get-status-checks-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["status-check-policy"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Remove status check protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/remove-status-check-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update status check protection - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled. - */ - "repos/update-status-check-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description Require branches to be up to date before merging. */ - strict?: boolean; - /** - * @deprecated - * @description **Closing down notice**: The list of status checks to require in order to merge into this branch. If any of these checks have recently been set by a particular GitHub App, they will be required to come from that app in future for the branch to merge. Use `checks` instead of `contexts` for more fine-grained control. - */ - contexts?: string[]; - /** @description The list of status checks to require in order to merge into this branch. */ - checks?: { - /** @description The name of the required check */ - context: string; - /** @description The ID of the GitHub App that must provide this check. Omit this field to automatically select the GitHub App that has recently provided this check, or any app if it was not set by a GitHub App. Pass -1 to explicitly allow any app to set the status. */ - app_id?: number; - }[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["status-check-policy"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get all status check contexts - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/get-all-status-check-contexts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": string[]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set status check contexts - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/set-status-check-contexts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The name of the status checks */ - contexts: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": string[]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Add status check contexts - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/add-status-check-contexts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The name of the status checks */ - contexts: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": string[]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove status check contexts - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/remove-status-check-contexts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The name of the status checks */ - contexts: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": string[]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists who has access to this protected branch. - * - * > [!NOTE] - * > Users, apps, and teams `restrictions` are only available for organization-owned repositories. - */ - "repos/get-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["branch-restriction-policy"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Disables the ability to restrict who can push to this branch. - */ - "repos/delete-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get apps with access to the protected branch - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the GitHub Apps that have push access to this branch. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch. - */ - "repos/get-apps-with-access-to-protected-branch": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["integration"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set app access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch. - */ - "repos/set-app-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The GitHub Apps that have push access to this branch. Use the slugified version of the app name. **Note**: The list of users, apps, and teams in total is limited to 100 items. */ - apps: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["integration"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Add app access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified apps push access for this branch. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch. - */ - "repos/add-app-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The GitHub Apps that have push access to this branch. Use the slugified version of the app name. **Note**: The list of users, apps, and teams in total is limited to 100 items. */ - apps: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["integration"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove app access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of an app to push to this branch. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch. - */ - "repos/remove-app-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The GitHub Apps that have push access to this branch. Use the slugified version of the app name. **Note**: The list of users, apps, and teams in total is limited to 100 items. */ - apps: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["integration"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get teams with access to the protected branch - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the teams who have push access to this branch. The list includes child teams. - */ - "repos/get-teams-with-access-to-protected-branch": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set team access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. Team restrictions include child teams. - */ - "repos/set-team-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The slug values for teams */ - teams: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Add team access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified teams push access for this branch. You can also give push access to child teams. - */ - "repos/add-team-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The slug values for teams */ - teams: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove team access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of a team to push to this branch. You can also remove push access for child teams. - */ - "repos/remove-team-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The slug values for teams */ - teams: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get users with access to the protected branch - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the people who have push access to this branch. - */ - "repos/get-users-with-access-to-protected-branch": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Set user access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people. - * - * | Type | Description | - * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - "repos/set-user-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The username for users */ - users: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Add user access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified people push access for this branch. - * - * | Type | Description | - * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - "repos/add-user-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The username for users */ - users: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove user access restrictions - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of a user to push to this branch. - * - * | Type | Description | - * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - "repos/remove-user-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The username for users */ - users: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Rename a branch - * @description Renames a branch in a repository. - * - * > [!NOTE] - * > Although the API responds immediately, the branch rename process might take some extra time to complete in the background. You won't be able to push to the old branch name while the rename process is in progress. For more information, see "[Renaming a branch](https://docs.github.com/github/administering-a-repository/renaming-a-branch)". - * - * The authenticated user must have push access to the branch. If the branch is the default branch, the authenticated user must also have admin or owner permissions. - * - * In order to rename the default branch, fine-grained access tokens also need the `administration:write` repository permission. - */ - "repos/rename-branch": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The new name of the branch. */ - new_name: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["branch-with-protection"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Create a check run - * @description **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * Creates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs. - * - * In a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs. - */ - "checks/create": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the check. For example, "code-coverage". */ - name: string; - /** @description The SHA of the commit. */ - head_sha: string; - /** @description The URL of the integrator's site that has the full details of the check. If the integrator does not provide this, then the homepage of the GitHub app is used. */ - details_url?: string; - /** @description A reference for the run on the integrator's system. */ - external_id?: string; - /** - * @description The current status. - * @default queued - * @enum {string} - */ - status?: "queued" | "in_progress" | "completed"; - /** - * Format: date-time - * @description The time that the check run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - started_at?: string; - /** - * @description **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. - * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`. You cannot change a check run conclusion to `stale`, only GitHub can set this. - * @enum {string} - */ - conclusion?: - | "action_required" - | "cancelled" - | "failure" - | "neutral" - | "success" - | "skipped" - | "stale" - | "timed_out"; - /** - * Format: date-time - * @description The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - completed_at?: string; - /** @description Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. */ - output?: { - /** @description The title of the check run. */ - title: string; - /** @description The summary of the check run. This parameter supports Markdown. **Maximum length**: 65535 characters. */ - summary: string; - /** @description The details of the check run. This parameter supports Markdown. **Maximum length**: 65535 characters. */ - text?: string; - /** @description Adds information from your analysis to specific lines of code. Annotations are visible on GitHub in the **Checks** and **Files changed** tab of the pull request. The Checks API limits the number of annotations to a maximum of 50 per API request. To create more than 50 annotations, you have to make multiple requests to the [Update a check run](https://docs.github.com/rest/reference/checks#update-a-check-run) endpoint. Each time you update the check run, annotations are appended to the list of annotations that already exist for the check run. GitHub Actions are limited to 10 warning annotations and 10 error annotations per step. For details about how you can view annotations on GitHub, see "[About status checks](https://docs.github.com/articles/about-status-checks#checks)". */ - annotations?: { - /** @description The path of the file to add an annotation to. For example, `assets/css/main.css`. */ - path: string; - /** @description The start line of the annotation. Line numbers start at 1. */ - start_line: number; - /** @description The end line of the annotation. */ - end_line: number; - /** @description The start column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. Column numbers start at 1. */ - start_column?: number; - /** @description The end column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. */ - end_column?: number; - /** - * @description The level of the annotation. - * @enum {string} - */ - annotation_level: "notice" | "warning" | "failure"; - /** @description A short description of the feedback for these lines of code. The maximum size is 64 KB. */ - message: string; - /** @description The title that represents the annotation. The maximum size is 255 characters. */ - title?: string; - /** @description Details about this annotation. The maximum size is 64 KB. */ - raw_details?: string; - }[]; - /** @description Adds images to the output displayed in the GitHub pull request UI. */ - images?: { - /** @description The alternative text for the image. */ - alt: string; - /** @description The full URL of the image. */ - image_url: string; - /** @description A short image description. */ - caption?: string; - }[]; - }; - /** @description Displays a button on GitHub that can be clicked to alert your app to do additional tasks. For example, a code linting app can display a button that automatically fixes detected errors. The button created in this object is displayed after the check run completes. When a user clicks the button, GitHub sends the [`check_run.requested_action` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) to your app. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://docs.github.com/rest/reference/checks#check-runs-and-requested-actions)." */ - actions?: { - /** @description The text to be displayed on a button in the web UI. The maximum size is 20 characters. */ - label: string; - /** @description A short explanation of what this action would do. The maximum size is 40 characters. */ - description: string; - /** @description A reference for the action on the integrator's system. The maximum size is 20 characters. */ - identifier: string; - }[]; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["check-run"]; - }; - }; - }; - }; - /** - * Get a check run - * @description Gets a single check run using its `id`. - * - * > [!NOTE] - * > The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - "checks/get": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - check_run_id: components["parameters"]["check-run-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["check-run"]; - }; - }; - }; - }; - /** - * Update a check run - * @description Updates a check run for a specific commit in a repository. - * - * > [!NOTE] - * > The endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * OAuth apps and personal access tokens (classic) cannot use this endpoint. - */ - "checks/update": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - check_run_id: components["parameters"]["check-run-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the check. For example, "code-coverage". */ - name?: string; - /** @description The URL of the integrator's site that has the full details of the check. */ - details_url?: string; - /** @description A reference for the run on the integrator's system. */ - external_id?: string; - /** - * Format: date-time - * @description This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - started_at?: string; - /** - * @description The current status of the check run. Only GitHub Actions can set a status of `waiting`, `pending`, or `requested`. - * @enum {string} - */ - status?: - | "queued" - | "in_progress" - | "completed" - | "waiting" - | "requested" - | "pending"; - /** - * @description **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. - * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`. You cannot change a check run conclusion to `stale`, only GitHub can set this. - * @enum {string} - */ - conclusion?: - | "action_required" - | "cancelled" - | "failure" - | "neutral" - | "success" - | "skipped" - | "stale" - | "timed_out"; - /** - * Format: date-time - * @description The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - completed_at?: string; - /** @description Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. */ - output?: { - /** @description **Required**. */ - title?: string; - /** @description Can contain Markdown. */ - summary: string; - /** @description Can contain Markdown. */ - text?: string; - /** @description Adds information from your analysis to specific lines of code. Annotations are visible in GitHub's pull request UI. Annotations are visible in GitHub's pull request UI. The Checks API limits the number of annotations to a maximum of 50 per API request. To create more than 50 annotations, you have to make multiple requests to the [Update a check run](https://docs.github.com/rest/checks/runs#update-a-check-run) endpoint. Each time you update the check run, annotations are appended to the list of annotations that already exist for the check run. GitHub Actions are limited to 10 warning annotations and 10 error annotations per step. For details about annotations in the UI, see "[About status checks](https://docs.github.com/articles/about-status-checks#checks)". */ - annotations?: { - /** @description The path of the file to add an annotation to. For example, `assets/css/main.css`. */ - path: string; - /** @description The start line of the annotation. Line numbers start at 1. */ - start_line: number; - /** @description The end line of the annotation. */ - end_line: number; - /** @description The start column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. Column numbers start at 1. */ - start_column?: number; - /** @description The end column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. */ - end_column?: number; - /** - * @description The level of the annotation. - * @enum {string} - */ - annotation_level: "notice" | "warning" | "failure"; - /** @description A short description of the feedback for these lines of code. The maximum size is 64 KB. */ - message: string; - /** @description The title that represents the annotation. The maximum size is 255 characters. */ - title?: string; - /** @description Details about this annotation. The maximum size is 64 KB. */ - raw_details?: string; - }[]; - /** @description Adds images to the output displayed in the GitHub pull request UI. */ - images?: { - /** @description The alternative text for the image. */ - alt: string; - /** @description The full URL of the image. */ - image_url: string; - /** @description A short image description. */ - caption?: string; - }[]; - }; - /** @description Possible further actions the integrator can perform, which a user may trigger. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://docs.github.com/rest/guides/using-the-rest-api-to-interact-with-checks#check-runs-and-requested-actions)." */ - actions?: { - /** @description The text to be displayed on a button in the web UI. The maximum size is 20 characters. */ - label: string; - /** @description A short explanation of what this action would do. The maximum size is 40 characters. */ - description: string; - /** @description A reference for the action on the integrator's system. The maximum size is 20 characters. */ - identifier: string; - }[]; - } & ( - | { - /** @enum {unknown} */ - status?: "completed"; - [key: string]: unknown; - } - | { - /** @enum {unknown} */ - status?: "queued" | "in_progress"; - [key: string]: unknown; - } - ); - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["check-run"]; - }; - }; - }; - }; - /** - * List check run annotations - * @description Lists annotations for a check run using the annotation `id`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - "checks/list-annotations": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - check_run_id: components["parameters"]["check-run-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["check-annotation"][]; - }; - }; - }; - }; - /** - * Rerequest a check run - * @description Triggers GitHub to rerequest an existing check run, without pushing new code to a repository. This endpoint will trigger the [`check_run` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) event with the action `rerequested`. When a check run is `rerequested`, the `status` of the check suite it belongs to is reset to `queued` and the `conclusion` is cleared. The check run itself is not updated. GitHub apps recieving the [`check_run` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) with the `rerequested` action should then decide if the check run should be reset or updated and call the [update `check_run` endpoint](https://docs.github.com/rest/checks/runs#update-a-check-run) to update the check_run if desired. - * - * For more information about how to re-run GitHub Actions jobs, see "[Re-run a job from a workflow run](https://docs.github.com/rest/actions/workflow-runs#re-run-a-job-from-a-workflow-run)". - */ - "checks/rerequest-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - check_run_id: components["parameters"]["check-run-id"]; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - /** @description Forbidden if the check run is not rerequestable or doesn't belong to the authenticated GitHub App */ - 403: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - 404: components["responses"]["not_found"]; - /** @description Validation error if the check run is not rerequestable */ - 422: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - }; - /** - * Create a check suite - * @description Creates a check suite manually. By default, check suites are automatically created when you create a [check run](https://docs.github.com/rest/checks/runs). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using "[Update repository preferences for check suites](https://docs.github.com/rest/checks/suites#update-repository-preferences-for-check-suites)". - * - * > [!NOTE] - * > The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * OAuth apps and personal access tokens (classic) cannot use this endpoint. - */ - "checks/create-suite": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The sha of the head commit. */ - head_sha: string; - }; - }; - }; - responses: { - /** @description Response when the suite already exists */ - 200: { - content: { - "application/json": components["schemas"]["check-suite"]; - }; - }; - /** @description Response when the suite was created */ - 201: { - content: { - "application/json": components["schemas"]["check-suite"]; - }; - }; - }; - }; - /** - * Update repository preferences for check suites - * @description Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://docs.github.com/rest/checks/suites#create-a-check-suite). - * You must have admin permissions in the repository to set preferences for check suites. - */ - "checks/set-suites-preferences": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Enables or disables automatic creation of CheckSuite events upon pushes to the repository. Enabled by default. */ - auto_trigger_checks?: { - /** @description The `id` of the GitHub App. */ - app_id: number; - /** - * @description Set to `true` to enable automatic creation of CheckSuite events upon pushes to the repository, or `false` to disable them. - * @default true - */ - setting: boolean; - }[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["check-suite-preference"]; - }; - }; - }; - }; - /** - * Get a check suite - * @description Gets a single check suite using its `id`. - * - * > [!NOTE] - * > The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - "checks/get-suite": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - check_suite_id: components["parameters"]["check-suite-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["check-suite"]; - }; - }; - }; - }; - /** - * List check runs in a check suite - * @description Lists check runs for a check suite using its `id`. - * - * > [!NOTE] - * > The endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - "checks/list-for-suite": { - parameters: { - query?: { - check_name?: components["parameters"]["check-name"]; - status?: components["parameters"]["status"]; - /** @description Filters check runs by their `completed_at` timestamp. `latest` returns the most recent check runs. */ - filter?: "latest" | "all"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - check_suite_id: components["parameters"]["check-suite-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - check_runs: components["schemas"]["check-run"][]; - }; - }; - }; - }; - }; - /** - * Rerequest a check suite - * @description Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://docs.github.com/webhooks/event-payloads/#check_suite) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared. - */ - "checks/rerequest-suite": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - check_suite_id: components["parameters"]["check-suite-id"]; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - }; - }; - /** - * List code scanning alerts for a repository - * @description Lists all open code scanning alerts for the default branch (usually `main` - * or `master`). You must use an access token with the `security_events` scope to use - * this endpoint with private repos, the `public_repo` scope also grants permission to read - * security events on public repos only. GitHub Apps must have the `security_events` read - * permission to use this endpoint. - * - * The response includes a `most_recent_instance` object. - * This provides details of the most recent instance of this alert - * for the default branch or for the specified Git reference - * (if you used `ref` in the request). - */ - "code-scanning/list-alerts-for-repo": { - parameters: { - query?: { - tool_name?: components["parameters"]["tool-name"]; - tool_guid?: components["parameters"]["tool-guid"]; - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - ref?: components["parameters"]["git-ref"]; - direction?: components["parameters"]["direction"]; - /** @description The property by which to sort the results. . `number` is deprecated - we recommend that you use `created` instead. */ - sort?: "created" | "number" | "updated"; - /** @description Set to `open`, `closed, `fixed`, or `dismissed` to list code scanning alerts in a specific state. */ - state?: components["schemas"]["code-scanning-alert-state"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-alert-items"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["code_scanning_forbidden_read"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get a code scanning alert - * @description Gets a single code scanning alert. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/get-alert": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["alert-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-alert"]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["code_scanning_forbidden_read"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Update a code scanning alert - * @description Updates the status of a single code scanning alert. - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/update-alert": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["alert-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - state: components["schemas"]["code-scanning-alert-set-state"]; - dismissed_reason?: components["schemas"]["code-scanning-alert-dismissed-reason"]; - dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; - create_request?: components["schemas"]["code-scanning-alert-create-request"]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-alert"]; - }; - }; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["code_scanning_forbidden_write"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get the status of an autofix for a code scanning alert - * @description Gets the status and description of an autofix for a code scanning alert. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/get-autofix": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["alert-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-autofix"]; - }; - }; - 400: components["responses"]["code_scanning_bad_request"]; - 403: components["responses"]["code_scanning_forbidden_read"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Create an autofix for a code scanning alert - * @description Creates an autofix for a code scanning alert. - * - * If a new autofix is to be created as a result of this request or is currently being generated, then this endpoint will return a 202 Accepted response. - * - * If an autofix already exists for a given alert, then this endpoint will return a 200 OK response. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/create-autofix": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["alert-number"]; - }; - }; - responses: { - /** @description OK */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-autofix"]; - }; - }; - /** @description Accepted */ - 202: { - content: { - "application/json": components["schemas"]["code-scanning-autofix"]; - }; - }; - 400: components["responses"]["code_scanning_bad_request"]; - 403: components["responses"]["code_scanning_autofix_create_forbidden"]; - 404: components["responses"]["not_found"]; - /** @description Unprocessable Entity */ - 422: { - content: never; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Commit an autofix for a code scanning alert - * @description Commits an autofix for a code scanning alert. - * - * If an autofix is committed as a result of this request, then this endpoint will return a 201 Created response. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/commit-autofix": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["alert-number"]; - }; - }; - requestBody?: { - content: { - "application/json": components["schemas"]["code-scanning-autofix-commits"]; - }; - }; - responses: { - /** @description Created */ - 201: { - content: { - "application/json": components["schemas"]["code-scanning-autofix-commits-response"]; - }; - }; - 400: components["responses"]["code_scanning_bad_request"]; - 403: components["responses"]["code_scanning_forbidden_write"]; - 404: components["responses"]["not_found"]; - /** @description Unprocessable Entity */ - 422: { - content: never; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List instances of a code scanning alert - * @description Lists all instances of the specified code scanning alert. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/list-alert-instances": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - ref?: components["parameters"]["git-ref"]; - pr?: components["parameters"]["pr-alias"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["alert-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-alert-instance"][]; - }; - }; - 403: components["responses"]["code_scanning_forbidden_read"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List code scanning analyses for a repository - * @description Lists the details of all code scanning analyses for a repository, - * starting with the most recent. - * The response is paginated and you can use the `page` and `per_page` parameters - * to list the analyses you're interested in. - * By default 30 analyses are listed per page. - * - * The `rules_count` field in the response give the number of rules - * that were run in the analysis. - * For very old analyses this data is not available, - * and `0` is returned in this field. - * - * > [!WARNING] - * > **Closing down notice:** The `tool_name` field is closing down and will, in future, not be included in the response for this endpoint. The example response reflects this change. The tool name can now be found inside the `tool` field. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/list-recent-analyses": { - parameters: { - query?: { - tool_name?: components["parameters"]["tool-name"]; - tool_guid?: components["parameters"]["tool-guid"]; - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - pr?: components["parameters"]["pr-alias"]; - /** @description The Git reference for the analyses you want to list. The `ref` for a branch can be formatted either as `refs/heads/` or simply ``. To reference a pull request use `refs/pull//merge`. */ - ref?: components["schemas"]["code-scanning-ref"]; - /** @description Filter analyses belonging to the same SARIF upload. */ - sarif_id?: components["schemas"]["code-scanning-analysis-sarif-id"]; - direction?: components["parameters"]["direction"]; - /** @description The property by which to sort the results. */ - sort?: "created"; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-analysis"][]; - }; - }; - 403: components["responses"]["code_scanning_forbidden_read"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get a code scanning analysis for a repository - * @description Gets a specified code scanning analysis for a repository. - * - * The default JSON response contains fields that describe the analysis. - * This includes the Git reference and commit SHA to which the analysis relates, - * the datetime of the analysis, the name of the code scanning tool, - * and the number of alerts. - * - * The `rules_count` field in the default response give the number of rules - * that were run in the analysis. - * For very old analyses this data is not available, - * and `0` is returned in this field. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/sarif+json`**: Instead of returning a summary of the analysis, this endpoint returns a subset of the analysis data that was uploaded. The data is formatted as [SARIF version 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html). It also returns additional data such as the `github/alertNumber` and `github/alertUrl` properties. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/get-analysis": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The ID of the analysis, as returned from the `GET /repos/{owner}/{repo}/code-scanning/analyses` operation. */ - analysis_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-analysis"]; - "application/json+sarif": { - [key: string]: unknown; - }; - }; - }; - 403: components["responses"]["code_scanning_forbidden_read"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["unprocessable_analysis"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Delete a code scanning analysis from a repository - * @description Deletes a specified code scanning analysis from a repository. - * - * You can delete one analysis at a time. - * To delete a series of analyses, start with the most recent analysis and work backwards. - * Conceptually, the process is similar to the undo function in a text editor. - * - * When you list the analyses for a repository, - * one or more will be identified as deletable in the response: - * - * ``` - * "deletable": true - * ``` - * - * An analysis is deletable when it's the most recent in a set of analyses. - * Typically, a repository will have multiple sets of analyses - * for each enabled code scanning tool, - * where a set is determined by a unique combination of analysis values: - * - * * `ref` - * * `tool` - * * `category` - * - * If you attempt to delete an analysis that is not the most recent in a set, - * you'll get a 400 response with the message: - * - * ``` - * Analysis specified is not deletable. - * ``` - * - * The response from a successful `DELETE` operation provides you with - * two alternative URLs for deleting the next analysis in the set: - * `next_analysis_url` and `confirm_delete_url`. - * Use the `next_analysis_url` URL if you want to avoid accidentally deleting the final analysis - * in a set. This is a useful option if you want to preserve at least one analysis - * for the specified tool in your repository. - * Use the `confirm_delete_url` URL if you are content to remove all analyses for a tool. - * When you delete the last analysis in a set, the value of `next_analysis_url` and `confirm_delete_url` - * in the 200 response is `null`. - * - * As an example of the deletion process, - * let's imagine that you added a workflow that configured a particular code scanning tool - * to analyze the code in a repository. This tool has added 15 analyses: - * 10 on the default branch, and another 5 on a topic branch. - * You therefore have two separate sets of analyses for this tool. - * You've now decided that you want to remove all of the analyses for the tool. - * To do this you must make 15 separate deletion requests. - * To start, you must find an analysis that's identified as deletable. - * Each set of analyses always has one that's identified as deletable. - * Having found the deletable analysis for one of the two sets, - * delete this analysis and then continue deleting the next analysis in the set until they're all deleted. - * Then repeat the process for the second set. - * The procedure therefore consists of a nested loop: - * - * **Outer loop**: - * * List the analyses for the repository, filtered by tool. - * * Parse this list to find a deletable analysis. If found: - * - * **Inner loop**: - * * Delete the identified analysis. - * * Parse the response for the value of `confirm_delete_url` and, if found, use this in the next iteration. - * - * The above process assumes that you want to remove all trace of the tool's analyses from the GitHub user interface, for the specified repository, and it therefore uses the `confirm_delete_url` value. Alternatively, you could use the `next_analysis_url` value, which would leave the last analysis in each set undeleted to avoid removing a tool's analysis entirely. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/delete-analysis": { - parameters: { - query?: { - /** @description Allow deletion if the specified analysis is the last in a set. If you attempt to delete the final analysis in a set without setting this parameter to `true`, you'll get a 400 response with the message: `Analysis is last of its type and deletion may result in the loss of historical alert data. Please specify confirm_delete.` */ - confirm_delete?: string | null; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The ID of the analysis, as returned from the `GET /repos/{owner}/{repo}/code-scanning/analyses` operation. */ - analysis_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-analysis-deletion"]; - }; - }; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["code_scanning_forbidden_write"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List CodeQL databases for a repository - * @description Lists the CodeQL databases that are available in a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/list-codeql-databases": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-codeql-database"][]; - }; - }; - 403: components["responses"]["code_scanning_forbidden_read"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get a CodeQL database for a repository - * @description Gets a CodeQL database for a language in a repository. - * - * By default this endpoint returns JSON metadata about the CodeQL database. To - * download the CodeQL database binary content, set the `Accept` header of the request - * to [`application/zip`](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types), and make sure - * your HTTP client is configured to follow redirects or use the `Location` header - * to make a second request to get the redirect URL. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/get-codeql-database": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The language of the CodeQL database. */ - language: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-codeql-database"]; - }; - }; - 302: components["responses"]["found"]; - 403: components["responses"]["code_scanning_forbidden_read"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Delete a CodeQL database - * @description Deletes a CodeQL database for a language in a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/delete-codeql-database": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The language of the CodeQL database. */ - language: string; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["code_scanning_forbidden_write"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Create a CodeQL variant analysis - * @description Creates a new CodeQL variant analysis, which will run a CodeQL query against one or more repositories. - * - * Get started by learning more about [running CodeQL queries at scale with Multi-Repository Variant Analysis](https://docs.github.com/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/running-codeql-queries-at-scale-with-multi-repository-variant-analysis). - * - * Use the `owner` and `repo` parameters in the URL to specify the controller repository that - * will be used for running GitHub Actions workflows and storing the results of the CodeQL variant analysis. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "code-scanning/create-variant-analysis": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - language: components["schemas"]["code-scanning-variant-analysis-language"]; - /** @description A Base64-encoded tarball containing a CodeQL query and all its dependencies */ - query_pack: string; - /** @description List of repository names (in the form `owner/repo-name`) to run the query against. Precisely one property from `repositories`, `repository_lists` and `repository_owners` is required. */ - repositories?: string[]; - /** @description List of repository lists to run the query against. Precisely one property from `repositories`, `repository_lists` and `repository_owners` is required. */ - repository_lists?: string[]; - /** @description List of organization or user names whose repositories the query should be run against. Precisely one property from `repositories`, `repository_lists` and `repository_owners` is required. */ - repository_owners?: string[]; - }; - }; - }; - responses: { - /** @description Variant analysis submitted for processing */ - 201: { - content: { - "application/json": components["schemas"]["code-scanning-variant-analysis"]; - }; - }; - 404: components["responses"]["not_found"]; - /** @description Unable to process variant analysis submission */ - 422: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get the summary of a CodeQL variant analysis - * @description Gets the summary of a CodeQL variant analysis. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/get-variant-analysis": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The unique identifier of the variant analysis. */ - codeql_variant_analysis_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-variant-analysis"]; - }; - }; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get the analysis status of a repository in a CodeQL variant analysis - * @description Gets the analysis status of a repository in a CodeQL variant analysis. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/get-variant-analysis-repo-task": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - /** @description The name of the controller repository. */ - repo: string; - /** @description The ID of the variant analysis. */ - codeql_variant_analysis_id: number; - /** @description The account owner of the variant analysis repository. The name is not case sensitive. */ - repo_owner: string; - /** @description The name of the variant analysis repository. */ - repo_name: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-variant-analysis-repo-task"]; - }; - }; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get a code scanning default setup configuration - * @description Gets a code scanning default setup configuration. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/get-default-setup": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-default-setup"]; - }; - }; - 403: components["responses"]["code_scanning_forbidden_read"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Update a code scanning default setup configuration - * @description Updates a code scanning default setup configuration. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/update-default-setup": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["code-scanning-default-setup-update"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - /** @description Response */ - 202: { - content: { - "application/json": components["schemas"]["code-scanning-default-setup-update-response"]; - }; - }; - 403: components["responses"]["code_scanning_forbidden_write"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["code_scanning_conflict"]; - 422: components["responses"]["code_scanning_invalid_state"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Upload an analysis as SARIF data - * @description Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. For troubleshooting information, see "[Troubleshooting SARIF uploads](https://docs.github.com/code-security/code-scanning/troubleshooting-sarif)." - * - * There are two places where you can upload code scanning results. - * - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see "[Triaging code scanning alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." - * - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see "[Managing code scanning alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)." - * - * You must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example: - * - * ``` - * gzip -c analysis-data.sarif | base64 -w0 - * ``` - * - * SARIF upload supports a maximum number of entries per the following data objects, and an analysis will be rejected if any of these objects is above its maximum value. For some objects, there are additional values over which the entries will be ignored while keeping the most important entries whenever applicable. - * To get the most out of your analysis when it includes data above the supported limits, try to optimize the analysis configuration. For example, for the CodeQL tool, identify and remove the most noisy queries. For more information, see "[SARIF results exceed one or more limits](https://docs.github.com/code-security/code-scanning/troubleshooting-sarif/results-exceed-limit)." - * - * - * | **SARIF data** | **Maximum values** | **Additional limits** | - * |----------------------------------|:------------------:|----------------------------------------------------------------------------------| - * | Runs per file | 20 | | - * | Results per run | 25,000 | Only the top 5,000 results will be included, prioritized by severity. | - * | Rules per run | 25,000 | | - * | Tool extensions per run | 100 | | - * | Thread Flow Locations per result | 10,000 | Only the top 1,000 Thread Flow Locations will be included, using prioritization. | - * | Location per result | 1,000 | Only 100 locations will be included. | - * | Tags per rule | 20 | Only 10 tags will be included. | - * - * - * The `202 Accepted` response includes an `id` value. - * You can use this ID to check the status of the upload by using it in the `/sarifs/{sarif_id}` endpoint. - * For more information, see "[Get information about a SARIF upload](/rest/code-scanning/code-scanning#get-information-about-a-sarif-upload)." - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - * - * This endpoint is limited to 1,000 requests per hour for each user or app installation calling it. - */ - "code-scanning/upload-sarif": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - commit_sha: components["schemas"]["code-scanning-analysis-commit-sha"]; - ref: components["schemas"]["code-scanning-ref-full"]; - sarif: components["schemas"]["code-scanning-analysis-sarif-file"]; - /** - * Format: uri - * @description The base directory used in the analysis, as it appears in the SARIF file. - * This property is used to convert file paths from absolute to relative, so that alerts can be mapped to their correct location in the repository. - * @example file:///github/workspace/ - */ - checkout_uri?: string; - /** - * Format: date-time - * @description The time that the analysis run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - started_at?: string; - /** @description The name of the tool used to generate the code scanning analysis. If this parameter is not used, the tool name defaults to "API". If the uploaded SARIF contains a tool GUID, this will be available for filtering using the `tool_guid` parameter of operations such as `GET /repos/{owner}/{repo}/code-scanning/alerts`. */ - tool_name?: string; - /** - * @description Whether the SARIF file will be validated according to the code scanning specifications. - * This parameter is intended to help integrators ensure that the uploaded SARIF files are correctly rendered by code scanning. - */ - validate?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 202: { - content: { - "application/json": components["schemas"]["code-scanning-sarifs-receipt"]; - }; - }; - /** @description Bad Request if the sarif field is invalid */ - 400: { - content: never; - }; - 403: components["responses"]["code_scanning_forbidden_write"]; - 404: components["responses"]["not_found"]; - /** @description Payload Too Large if the sarif field is too large */ - 413: { - content: never; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get information about a SARIF upload - * @description Gets information about a SARIF upload, including the status and the URL of the analysis that was uploaded so that you can retrieve details of the analysis. For more information, see "[Get a code scanning analysis for a repository](/rest/code-scanning/code-scanning#get-a-code-scanning-analysis-for-a-repository)." - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - "code-scanning/get-sarif": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The SARIF ID obtained after uploading. */ - sarif_id: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-scanning-sarifs-status"]; - }; - }; - 403: components["responses"]["code_scanning_forbidden_read"]; - /** @description Not Found if the sarif id does not match any upload */ - 404: { - content: never; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get the code security configuration associated with a repository - * @description Get the code security configuration that manages a repository's code security settings. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "code-security/get-configuration-for-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["code-security-configuration-for-repository"]; - }; - }; - 204: components["responses"]["no_content"]; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List CODEOWNERS errors - * @description List any syntax errors that are detected in the CODEOWNERS - * file. - * - * For more information about the correct CODEOWNERS syntax, - * see "[About code owners](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)." - */ - "repos/codeowners-errors": { - parameters: { - query?: { - /** @description A branch, tag or commit name used to determine which version of the CODEOWNERS file to use. Default: the repository's default branch (e.g. `main`) */ - ref?: string; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["codeowners-errors"]; - }; - }; - /** @description Resource not found */ - 404: { - content: never; - }; - }; - }; - /** - * List codespaces in a repository for the authenticated user - * @description Lists the codespaces associated to a specified repository and the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/list-in-repository-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - codespaces: components["schemas"]["codespace"][]; - }; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Create a codespace in a repository - * @description Creates a codespace owned by the authenticated user in the specified repository. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/create-with-repo-for-authenticated-user": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Git ref (typically a branch name) for this codespace */ - ref?: string; - /** @description The requested location for a new codespace. Best efforts are made to respect this upon creation. Assigned by IP if not provided. */ - location?: string; - /** - * @description The geographic area for this codespace. If not specified, the value is assigned by IP. This property replaces `location`, which is closing down. - * @enum {string} - */ - geo?: "EuropeWest" | "SoutheastAsia" | "UsEast" | "UsWest"; - /** @description IP for location auto-detection when proxying a request */ - client_ip?: string; - /** @description Machine type to use for this codespace */ - machine?: string; - /** @description Path to devcontainer.json config to use for this codespace */ - devcontainer_path?: string; - /** @description Whether to authorize requested permissions from devcontainer.json */ - multi_repo_permissions_opt_out?: boolean; - /** @description Working directory for this codespace */ - working_directory?: string; - /** @description Time in minutes before codespace stops from inactivity */ - idle_timeout_minutes?: number; - /** @description Display name for this codespace */ - display_name?: string; - /** @description Duration in minutes after codespace has gone idle in which it will be deleted. Must be integer minutes between 0 and 43200 (30 days). */ - retention_period_minutes?: number; - } | null; - }; - }; - responses: { - /** @description Response when the codespace was successfully created */ - 201: { - content: { - "application/json": components["schemas"]["codespace"]; - }; - }; - /** @description Response when the codespace creation partially failed but is being retried in the background */ - 202: { - content: { - "application/json": components["schemas"]["codespace"]; - }; - }; - 400: components["responses"]["bad_request"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List devcontainer configurations in a repository for the authenticated user - * @description Lists the devcontainer.json files associated with a specified repository and the authenticated user. These files - * specify launchpoint configurations for codespaces created within the repository. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/list-devcontainers-in-repository-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - devcontainers: { - path: string; - name?: string; - display_name?: string; - }[]; - }; - }; - }; - 400: components["responses"]["bad_request"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List available machine types for a repository - * @description List the machine types available for a given repository based on its configuration. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/repo-machines-for-authenticated-user": { - parameters: { - query?: { - /** @description The location to check for available machines. Assigned by IP if not provided. */ - location?: string; - /** @description IP for location auto-detection when proxying a request */ - client_ip?: string; - /** @description The branch or commit to check for prebuild availability and devcontainer restrictions. */ - ref?: string; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - machines: components["schemas"]["codespace-machine"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get default attributes for a codespace - * @description Gets the default attributes for codespaces created by the user with the repository. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/pre-flight-with-repo-for-authenticated-user": { - parameters: { - query?: { - /** @description The branch or commit to check for a default devcontainer path. If not specified, the default branch will be checked. */ - ref?: string; - /** @description An alternative IP for default location auto-detection, such as when proxying a request. */ - client_ip?: string; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response when a user is able to create codespaces from the repository. */ - 200: { - content: { - "application/json": { - billable_owner?: components["schemas"]["simple-user"]; - defaults?: { - location: string; - devcontainer_path: string | null; - }; - }; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Check if permissions defined by a devcontainer have been accepted by the authenticated user - * @description Checks whether the permissions defined by a given devcontainer configuration have been accepted by the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/check-permissions-for-devcontainer": { - parameters: { - query: { - /** @description The git reference that points to the location of the devcontainer configuration to use for the permission check. The value of `ref` will typically be a branch name (`heads/BRANCH_NAME`). For more information, see "[Git References](https://git-scm.com/book/en/v2/Git-Internals-Git-References)" in the Git documentation. */ - ref: string; - /** @description Path to the devcontainer.json configuration to use for the permission check. */ - devcontainer_path: string; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response when the permission check is successful */ - 200: { - content: { - "application/json": components["schemas"]["codespaces-permissions-check-for-devcontainer"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List repository secrets - * @description Lists all development environment secrets available in a repository without revealing their encrypted - * values. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "codespaces/list-repo-secrets": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - secrets: components["schemas"]["repo-codespaces-secret"][]; - }; - }; - }; - }; - }; - /** - * Get a repository public key - * @description Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. - * - * If the repository is private, OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "codespaces/get-repo-public-key": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["codespaces-public-key"]; - }; - }; - }; - }; - /** - * Get a repository secret - * @description Gets a single repository development environment secret without revealing its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "codespaces/get-repo-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repo-codespaces-secret"]; - }; - }; - }; - }; - /** - * Create or update a repository secret - * @description Creates or updates a repository development environment secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. The associated user must be a repository admin. - */ - "codespaces/create-or-update-repo-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get a repository public key](https://docs.github.com/rest/codespaces/repository-secrets#get-a-repository-public-key) endpoint. */ - encrypted_value?: string; - /** @description ID of the key you used to encrypt the secret. */ - key_id?: string; - }; - }; - }; - responses: { - /** @description Response when creating a secret */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - /** @description Response when updating a secret */ - 204: { - content: never; - }; - }; - }; - /** - * Delete a repository secret - * @description Deletes a development environment secret in a repository using the secret name. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. The associated user must be a repository admin. - */ - "codespaces/delete-repo-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List repository collaborators - * @description For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. - * The `permissions` hash returned in the response contains the base role permissions of the collaborator. The `role_name` is the highest role assigned to the collaborator after considering all sources of grants, including: repo, teams, organization, and enterprise. - * There is presently not a way to differentiate between an organization level grant and a repository level grant from this endpoint response. - * - * Team members will include the members of child teams. - * - * The authenticated user must have write, maintain, or admin privileges on the repository to use this endpoint. For organization-owned repositories, the authenticated user needs to be a member of the organization. - * OAuth app tokens and personal access tokens (classic) need the `read:org` and `repo` scopes to use this endpoint. - */ - "repos/list-collaborators": { - parameters: { - query?: { - /** @description Filter collaborators returned by their affiliation. `outside` means all outside collaborators of an organization-owned repository. `direct` means all collaborators with permissions to an organization-owned repository, regardless of organization membership status. `all` means all collaborators the authenticated user can see. */ - affiliation?: "outside" | "direct" | "all"; - /** @description Filter collaborators by the permissions they have on the repository. If not specified, all collaborators will be returned. */ - permission?: "pull" | "triage" | "push" | "maintain" | "admin"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["collaborator"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Check if a user is a repository collaborator - * @description For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. - * - * Team members will include the members of child teams. - * - * The authenticated user must have push access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` and `repo` scopes to use this endpoint. - */ - "repos/check-collaborator": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response if user is a collaborator */ - 204: { - content: never; - }; - /** @description Not Found if user is not a collaborator */ - 404: { - content: never; - }; - }; - }; - /** - * Add a repository collaborator - * @description Add a user to a repository with a specified level of access. If the repository is owned by an organization, this API does not add the user to the organization - a user that has repository access without being an organization member is called an "outside collaborator" (if they are not an Enterprise Managed User) or a "repository collaborator" if they are an Enterprise Managed User. These users are exempt from some organization policies - see "[Adding outside collaborators to repositories](https://docs.github.com/organizations/managing-user-access-to-your-organizations-repositories/managing-outside-collaborators/adding-outside-collaborators-to-repositories-in-your-organization)" to learn more about these collaborator types. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). - * - * Adding an outside collaborator may be restricted by enterprise and organization administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)" and "[Setting permissions for adding outside collaborators](https://docs.github.com/organizations/managing-organization-settings/setting-permissions-for-adding-outside-collaborators)" for organization settings. - * - * For more information on permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". There are restrictions on which permissions can be granted to organization members when an organization base role is in place. In this case, the role being given must be equal to or higher than the org base permission. Otherwise, the request will fail with: - * - * ``` - * Cannot assign {member} permission of {role name} - * ``` - * - * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - * - * The invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [API](https://docs.github.com/rest/collaborators/invitations). - * - * For Enterprise Managed Users, this endpoint does not send invitations - these users are automatically added to organizations and repositories. Enterprise Managed Users can only be added to organizations and repositories within their enterprise. - * - * **Updating an existing collaborator's permission level** - * - * The endpoint can also be used to change the permissions of an existing collaborator without first removing and re-adding the collaborator. To change the permissions, use the same endpoint and pass a different `permission` parameter. The response will be a `204`, with no other indication that the permission level changed. - * - * **Rate limits** - * - * You are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository. - */ - "repos/add-collaborator": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - username: components["parameters"]["username"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description The permission to grant the collaborator. **Only valid on organization-owned repositories.** We accept the following permissions to be set: `pull`, `triage`, `push`, `maintain`, `admin` and you can also specify a custom repository role name, if the owning organization has defined any. - * @default push - */ - permission?: string; - }; - }; - }; - responses: { - /** @description Response when a new invitation is created */ - 201: { - content: { - "application/json": components["schemas"]["repository-invitation"]; - }; - }; - /** - * @description Response when: - * - an existing collaborator is added as a collaborator - * - an organization member is added as an individual collaborator - * - an existing team member (whose team is also a repository collaborator) is added as an individual collaborator - */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - /** - * @description Response when: - * - validation failed, or the endpoint has been spammed - * - an Enterprise Managed User (EMU) account was invited to a repository in an enterprise with personal user accounts - */ - 422: { - content: { - "application/json": components["schemas"]["validation-error"]; - }; - }; - }; - }; - /** - * Remove a repository collaborator - * @description Removes a collaborator from a repository. - * - * To use this endpoint, the authenticated user must either be an administrator of the repository or target themselves for removal. - * - * This endpoint also: - * - Cancels any outstanding invitations sent by the collaborator - * - Unassigns the user from any issues - * - Removes access to organization projects if the user is not an organization member and is not a collaborator on any other organization repositories. - * - Unstars the repository - * - Updates access permissions to packages - * - * Removing a user as a collaborator has the following effects on forks: - * - If the user had access to a fork through their membership to this repository, the user will also be removed from the fork. - * - If the user had their own fork of the repository, the fork will be deleted. - * - If the user still has read access to the repository, open pull requests by this user from a fork will be denied. - * - * > [!NOTE] - * > A user can still have access to the repository through organization permissions like base repository permissions. - * - * Although the API responds immediately, the additional permission updates might take some extra time to complete in the background. - * - * For more information on fork permissions, see "[About permissions and visibility of forks](https://docs.github.com/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks)". - */ - "repos/remove-collaborator": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description No Content when collaborator was removed from the repository. */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get repository permissions for a user - * @description Checks the repository permission and role of a collaborator. - * - * The `permission` attribute provides the legacy base roles of `admin`, `write`, `read`, and `none`, where the - * `maintain` role is mapped to `write` and the `triage` role is mapped to `read`. - * The `role_name` attribute provides the name of the assigned role, including custom roles. The - * `permission` can also be used to determine which base level of access the collaborator has to the repository. - * - * The calculated permissions are the highest role assigned to the collaborator after considering all sources of grants, including: repo, teams, organization, and enterprise. - * There is presently not a way to differentiate between an organization level grant and a repository level grant from this endpoint response. - */ - "repos/get-collaborator-permission-level": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description if user has admin permissions */ - 200: { - content: { - "application/json": components["schemas"]["repository-collaborator-permission"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List commit comments for a repository - * @description Lists the commit comments for a specified repository. Comments are ordered by ascending ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "repos/list-commit-comments-for-repo": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["commit-comment"][]; - }; - }; - }; - }; - /** - * Get a commit comment - * @description Gets a specified commit comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "repos/get-commit-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["commit-comment"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** Delete a commit comment */ - "repos/delete-commit-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update a commit comment - * @description Updates the contents of a specified commit comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "repos/update-commit-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The contents of the comment */ - body: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["commit-comment"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List reactions for a commit comment - * @description List the reactions to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment). - */ - "reactions/list-for-commit-comment": { - parameters: { - query?: { - /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a commit comment. */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["reaction"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create reaction for a commit comment - * @description Create a reaction to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment). A response with an HTTP `200` status means that you already added the reaction type to this commit comment. - */ - "reactions/create-for-commit-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the commit comment. - * @enum {string} - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - }; - responses: { - /** @description Reaction exists */ - 200: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - /** @description Reaction created */ - 201: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Delete a commit comment reaction - * @description > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/comments/:comment_id/reactions/:reaction_id`. - * - * Delete a reaction to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment). - */ - "reactions/delete-for-commit-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List commits - * @description **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "repos/list-commits": { - parameters: { - query?: { - /** @description SHA or branch to start listing commits from. Default: the repository’s default branch (usually `main`). */ - sha?: string; - /** @description Only commits containing this file path will be returned. */ - path?: string; - /** @description GitHub username or email address to use to filter by commit author. */ - author?: string; - /** @description GitHub username or email address to use to filter by commit committer. */ - committer?: string; - /** @description Only show results that were last updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Due to limitations of Git, timestamps must be between 1970-01-01 and 2099-12-31 (inclusive) or unexpected results may be returned. */ - since?: string; - /** @description Only commits before this date will be returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Due to limitations of Git, timestamps must be between 1970-01-01 and 2099-12-31 (inclusive) or unexpected results may be returned. */ - until?: string; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["commit"][]; - }; - }; - 400: components["responses"]["bad_request"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List branches for HEAD commit - * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Returns all branches where the given commit SHA is the HEAD, or latest commit for the branch. - */ - "repos/list-branches-for-head-commit": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - commit_sha: components["parameters"]["commit-sha"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["branch-short"][]; - }; - }; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List commit comments - * @description Lists the comments for a specified commit. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "repos/list-comments-for-commit": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - commit_sha: components["parameters"]["commit-sha"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["commit-comment"][]; - }; - }; - }; - }; - /** - * Create a commit comment - * @description Create a comment for a commit using its `:commit_sha`. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "repos/create-commit-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - commit_sha: components["parameters"]["commit-sha"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The contents of the comment. */ - body: string; - /** @description Relative path of the file to comment on. */ - path?: string; - /** @description Line index in the diff to comment on. */ - position?: number; - /** @description **Closing down notice**. Use **position** parameter instead. Line number in the file to comment on. */ - line?: number; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/comments/1 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["commit-comment"]; - }; - }; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List pull requests associated with a commit - * @description Lists the merged pull request that introduced the commit to the repository. If the commit is not present in the default branch, it will return merged and open pull requests associated with the commit. - * - * To list the open or merged pull requests associated with a branch, you can set the `commit_sha` parameter to the branch name. - */ - "repos/list-pull-requests-associated-with-commit": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - commit_sha: components["parameters"]["commit-sha"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["pull-request-simple"][]; - }; - }; - 409: components["responses"]["conflict"]; - }; - }; - /** - * Get a commit - * @description Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint. - * - * > [!NOTE] - * > If there are more than 300 files in the commit diff and the default JSON media type is requested, the response will include pagination link headers for the remaining files, up to a limit of 3000 files. Each page contains the static commit information, and the only changes are to the file listing. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." Pagination query parameters are not supported for these media types. - * - * - **`application/vnd.github.diff`**: Returns the diff of the commit. Larger diffs may time out and return a 5xx status code. - * - **`application/vnd.github.patch`**: Returns the patch of the commit. Diffs with binary data will have no `patch` property. Larger diffs may time out and return a 5xx status code. - * - **`application/vnd.github.sha`**: Returns the commit's SHA-1 hash. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "repos/get-commit": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ref: components["parameters"]["commit-ref"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["commit"]; - }; - }; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - 500: components["responses"]["internal_error"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List check runs for a Git reference - * @description Lists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. - * - * > [!NOTE] - * > The endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * If there are more than 1000 check suites on a single git reference, this endpoint will limit check runs to the 1000 most recent check suites. To iterate over all possible check runs, use the [List check suites for a Git reference](https://docs.github.com/rest/reference/checks#list-check-suites-for-a-git-reference) endpoint and provide the `check_suite_id` parameter to the [List check runs in a check suite](https://docs.github.com/rest/reference/checks#list-check-runs-in-a-check-suite) endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - "checks/list-for-ref": { - parameters: { - query?: { - check_name?: components["parameters"]["check-name"]; - status?: components["parameters"]["status"]; - /** @description Filters check runs by their `completed_at` timestamp. `latest` returns the most recent check runs. */ - filter?: "latest" | "all"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - app_id?: number; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ref: components["parameters"]["commit-ref"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - check_runs: components["schemas"]["check-run"][]; - }; - }; - }; - }; - }; - /** - * List check suites for a Git reference - * @description Lists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. - * - * > [!NOTE] - * > The endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - "checks/list-suites-for-ref": { - parameters: { - query?: { - /** - * @description Filters check suites by GitHub App `id`. - * @example 1 - */ - app_id?: number; - check_name?: components["parameters"]["check-name"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ref: components["parameters"]["commit-ref"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - check_suites: components["schemas"]["check-suite"][]; - }; - }; - }; - }; - }; - /** - * Get the combined status for a specific reference - * @description Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. - * - * - * Additionally, a combined `state` is returned. The `state` is one of: - * - * * **failure** if any of the contexts report as `error` or `failure` - * * **pending** if there are no statuses or a context is `pending` - * * **success** if the latest status for all contexts is `success` - */ - "repos/get-combined-status-for-ref": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ref: components["parameters"]["commit-ref"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["combined-commit-status"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List commit statuses for a reference - * @description Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one. - * - * This resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`. - */ - "repos/list-commit-statuses-for-ref": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ref: components["parameters"]["commit-ref"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["status"][]; - }; - }; - 301: components["responses"]["moved_permanently"]; - }; - }; - /** - * Get community profile metrics - * @description Returns all community profile metrics for a repository. The repository cannot be a fork. - * - * The returned metrics include an overall health score, the repository description, the presence of documentation, the - * detected code of conduct, the detected license, and the presence of ISSUE\_TEMPLATE, PULL\_REQUEST\_TEMPLATE, - * README, and CONTRIBUTING files. - * - * The `health_percentage` score is defined as a percentage of how many of - * the recommended community health files are present. For more information, see - * "[About community profiles for public repositories](https://docs.github.com/communities/setting-up-your-project-for-healthy-contributions/about-community-profiles-for-public-repositories)." - * - * `content_reports_enabled` is only returned for organization-owned repositories. - */ - "repos/get-community-profile-metrics": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["community-profile"]; - }; - }; - }; - }; - /** - * Compare two commits - * @description Compares two commits against one another. You can compare refs (branches or tags) and commit SHAs in the same repository, or you can compare refs and commit SHAs that exist in different repositories within the same repository network, including fork branches. For more information about how to view a repository's network, see "[Understanding connections between repositories](https://docs.github.com/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories)." - * - * This endpoint is equivalent to running the `git log BASE..HEAD` command, but it returns commits in a different order. The `git log BASE..HEAD` command returns commits in reverse chronological order, whereas the API returns commits in chronological order. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.diff`**: Returns the diff of the commit. - * - **`application/vnd.github.patch`**: Returns the patch of the commit. Diffs with binary data will have no `patch` property. - * - * The API response includes details about the files that were changed between the two commits. This includes the status of the change (if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. - * - * When calling this endpoint without any paging parameter (`per_page` or `page`), the returned list is limited to 250 commits, and the last commit in the list is the most recent of the entire comparison. - * - * **Working with large comparisons** - * - * To process a response with a large number of commits, use a query parameter (`per_page` or `page`) to paginate the results. When using pagination: - * - * - The list of changed files is only shown on the first page of results, and it includes up to 300 changed files for the entire comparison. - * - The results are returned in chronological order, but the last commit in the returned list may not be the most recent one in the entire set if there are more pages of results. - * - * For more information on working with pagination, see "[Using pagination in the REST API](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api)." - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The `verification` object includes the following fields: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "repos/compare-commits-with-basehead": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The base branch and head branch to compare. This parameter expects the format `BASE...HEAD`. Both must be branch names in `repo`. To compare with a branch that exists in a different repository in the same network as `repo`, the `basehead` parameter expects the format `USERNAME:BASE...USERNAME:HEAD`. */ - basehead: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["commit-comparison"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get repository content - * @description Gets the contents of a file or directory in a repository. Specify the file path or directory with the `path` parameter. If you omit the `path` parameter, you will receive the contents of the repository's root directory. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw file contents for files and symlinks. - * - **`application/vnd.github.html+json`**: Returns the file contents in HTML. Markup languages are rendered to HTML using GitHub's open-source [Markup library](https://github.com/github/markup). - * - **`application/vnd.github.object+json`**: Returns the contents in a consistent object format regardless of the content type. For example, instead of an array of objects for a directory, the response will be an object with an `entries` attribute containing the array of objects. - * - * If the content is a directory, the response will be an array of objects, one object for each item in the directory. When listing the contents of a directory, submodules have their "type" specified as "file". Logically, the value _should_ be "submodule". This behavior exists [for backwards compatibility purposes](https://git.io/v1YCW). In the next major version of the API, the type will be returned as "submodule". - * - * If the content is a symlink and the symlink's target is a normal file in the repository, then the API responds with the content of the file. Otherwise, the API responds with an object describing the symlink itself. - * - * If the content is a submodule, the `submodule_git_url` field identifies the location of the submodule repository, and the `sha` identifies a specific commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out the submodule at that specific commit. If the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links["git"]`) and the github.com URLs (`html_url` and `_links["html"]`) will have null values. - * - * **Notes**: - * - * - To get a repository's contents recursively, you can [recursively get the tree](https://docs.github.com/rest/git/trees#get-a-tree). - * - This API has an upper limit of 1,000 files for a directory. If you need to retrieve - * more files, use the [Git Trees API](https://docs.github.com/rest/git/trees#get-a-tree). - * - Download URLs expire and are meant to be used just once. To ensure the download URL does not expire, please use the contents API to obtain a fresh download URL for each download. - * - If the requested file's size is: - * - 1 MB or smaller: All features of this endpoint are supported. - * - Between 1-100 MB: Only the `raw` or `object` custom media types are supported. Both will work as normal, except that when using the `object` media type, the `content` field will be an empty - * string and the `encoding` field will be `"none"`. To get the contents of these larger files, use the `raw` media type. - * - Greater than 100 MB: This endpoint is not supported. - */ - "repos/get-content": { - parameters: { - query?: { - /** @description The name of the commit/branch/tag. Default: the repository’s default branch. */ - ref?: string; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description path parameter */ - path: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/vnd.github.object": components["schemas"]["content-tree"]; - "application/json": - | components["schemas"]["content-directory"] - | components["schemas"]["content-file"] - | components["schemas"]["content-symlink"] - | components["schemas"]["content-submodule"]; - }; - }; - 302: components["responses"]["found"]; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create or update file contents - * @description Creates a new file or replaces an existing file in a repository. - * - * > [!NOTE] - * > If you use this endpoint and the "[Delete a file](https://docs.github.com/rest/repos/contents/#delete-a-file)" endpoint in parallel, the concurrent requests will conflict and you will receive errors. You must use these endpoints serially instead. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. The `workflow` scope is also required in order to modify files in the `.github/workflows` directory. - */ - "repos/create-or-update-file-contents": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description path parameter */ - path: string; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The commit message. */ - message: string; - /** @description The new file content, using Base64 encoding. */ - content: string; - /** @description **Required if you are updating a file**. The blob SHA of the file being replaced. */ - sha?: string; - /** @description The branch name. Default: the repository’s default branch. */ - branch?: string; - /** @description The person that committed the file. Default: the authenticated user. */ - committer?: { - /** @description The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted. */ - name: string; - /** @description The email of the author or committer of the commit. You'll receive a `422` status code if `email` is omitted. */ - email: string; - /** @example "2013-01-05T13:13:22+05:00" */ - date?: string; - }; - /** @description The author of the file. Default: The `committer` or the authenticated user if you omit `committer`. */ - author?: { - /** @description The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted. */ - name: string; - /** @description The email of the author or committer of the commit. You'll receive a `422` status code if `email` is omitted. */ - email: string; - /** @example "2013-01-15T17:13:22+05:00" */ - date?: string; - }; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["file-commit"]; - }; - }; - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["file-commit"]; - }; - }; - 404: components["responses"]["not_found"]; - /** @description Conflict */ - 409: { - content: { - "application/json": - | components["schemas"]["basic-error"] - | components["schemas"]["repository-rule-violation-error"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Delete a file - * @description Deletes a file in a repository. - * - * You can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author. - * - * The `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used. - * - * You must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code. - * - * > [!NOTE] - * > If you use this endpoint and the "[Create or update file contents](https://docs.github.com/rest/repos/contents/#create-or-update-file-contents)" endpoint in parallel, the concurrent requests will conflict and you will receive errors. You must use these endpoints serially instead. - */ - "repos/delete-file": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description path parameter */ - path: string; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The commit message. */ - message: string; - /** @description The blob SHA of the file being deleted. */ - sha: string; - /** @description The branch name. Default: the repository’s default branch */ - branch?: string; - /** @description object containing information about the committer. */ - committer?: { - /** @description The name of the author (or committer) of the commit */ - name?: string; - /** @description The email of the author (or committer) of the commit */ - email?: string; - }; - /** @description object containing information about the author. */ - author?: { - /** @description The name of the author (or committer) of the commit */ - name?: string; - /** @description The email of the author (or committer) of the commit */ - email?: string; - }; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["file-commit"]; - }; - }; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List repository contributors - * @description Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API caches contributor data to improve performance. - * - * GitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information. - */ - "repos/list-contributors": { - parameters: { - query?: { - /** @description Set to `1` or `true` to include anonymous contributors in results. */ - anon?: string; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description If repository contains content */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["contributor"][]; - }; - }; - /** @description Response if repository is empty */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List Dependabot alerts for a repository - * @description OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - "dependabot/list-alerts-for-repo": { - parameters: { - query?: { - state?: components["parameters"]["dependabot-alert-comma-separated-states"]; - severity?: components["parameters"]["dependabot-alert-comma-separated-severities"]; - ecosystem?: components["parameters"]["dependabot-alert-comma-separated-ecosystems"]; - package?: components["parameters"]["dependabot-alert-comma-separated-packages"]; - manifest?: components["parameters"]["dependabot-alert-comma-separated-manifests"]; - epss_percentage?: components["parameters"]["dependabot-alert-comma-separated-epss"]; - has?: components["parameters"]["dependabot-alert-comma-separated-has"]; - scope?: components["parameters"]["dependabot-alert-scope"]; - sort?: components["parameters"]["dependabot-alert-sort"]; - direction?: components["parameters"]["direction"]; - /** - * @deprecated - * @description The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." - */ - per_page?: number; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["dependabot-alert"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Get a Dependabot alert - * @description OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - "dependabot/get-alert": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["dependabot-alert-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["dependabot-alert"]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update a Dependabot alert - * @description The authenticated user must have access to security alerts for the repository to use this endpoint. For more information, see "[Granting access to security alerts](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#granting-access-to-security-alerts)." - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - "dependabot/update-alert": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["dependabot-alert-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The state of the Dependabot alert. - * A `dismissed_reason` must be provided when setting the state to `dismissed`. - * @enum {string} - */ - state: "dismissed" | "open"; - /** - * @description **Required when `state` is `dismissed`.** A reason for dismissing the alert. - * @enum {string} - */ - dismissed_reason?: - | "fix_started" - | "inaccurate" - | "no_bandwidth" - | "not_used" - | "tolerable_risk"; - /** @description An optional comment associated with dismissing the alert. */ - dismissed_comment?: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["dependabot-alert"]; - }; - }; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List repository secrets - * @description Lists all secrets available in a repository without revealing their encrypted - * values. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "dependabot/list-repo-secrets": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - secrets: components["schemas"]["dependabot-secret"][]; - }; - }; - }; - }; - }; - /** - * Get a repository public key - * @description Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. Anyone with read access - * to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint if the repository is private. - */ - "dependabot/get-repo-public-key": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["dependabot-public-key"]; - }; - }; - }; - }; - /** - * Get a repository secret - * @description Gets a single repository secret without revealing its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "dependabot/get-repo-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["dependabot-secret"]; - }; - }; - }; - }; - /** - * Create or update a repository secret - * @description Creates or updates a repository secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "dependabot/create-or-update-repo-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get a repository public key](https://docs.github.com/rest/dependabot/secrets#get-a-repository-public-key) endpoint. */ - encrypted_value?: string; - /** @description ID of the key you used to encrypt the secret. */ - key_id?: string; - }; - }; - }; - responses: { - /** @description Response when creating a secret */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - /** @description Response when updating a secret */ - 204: { - content: never; - }; - }; - }; - /** - * Delete a repository secret - * @description Deletes a secret in a repository using the secret name. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "dependabot/delete-repo-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get a diff of the dependencies between commits - * @description Gets the diff of the dependency changes between two commits of a repository, based on the changes to the dependency manifests made in those commits. - */ - "dependency-graph/diff-range": { - parameters: { - query?: { - name?: components["parameters"]["manifest-path"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The base and head Git revisions to compare. The Git revisions will be resolved to commit SHAs. Named revisions will be resolved to their corresponding HEAD commits, and an appropriate merge base will be determined. This parameter expects the format `{base}...{head}`. */ - basehead: string; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["dependency-graph-diff"]; - }; - }; - 403: components["responses"]["dependency_review_forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Export a software bill of materials (SBOM) for a repository. - * @description Exports the software bill of materials (SBOM) for a repository in SPDX JSON format. - */ - "dependency-graph/export-sbom": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["dependency-graph-spdx-sbom"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a snapshot of dependencies for a repository - * @description Create a new snapshot of a repository's dependencies. - * - * The authenticated user must have access to the repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "dependency-graph/create-repository-snapshot": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["snapshot"]; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": { - /** @description ID of the created snapshot. */ - id: number; - /** @description The time at which the snapshot was created. */ - created_at: string; - /** @description Either "SUCCESS", "ACCEPTED", or "INVALID". "SUCCESS" indicates that the snapshot was successfully created and the repository's dependencies were updated. "ACCEPTED" indicates that the snapshot was successfully created, but the repository's dependencies were not updated. "INVALID" indicates that the snapshot was malformed. */ - result: string; - /** @description A message providing further details about the result, such as why the dependencies were not updated. */ - message: string; - }; - }; - }; - }; - }; - /** - * List deployments - * @description Simple filtering of deployments is available via query parameters: - */ - "repos/list-deployments": { - parameters: { - query?: { - /** @description The SHA recorded at creation time. */ - sha?: string; - /** @description The name of the ref. This can be a branch, tag, or SHA. */ - ref?: string; - /** @description The name of the task for the deployment (e.g., `deploy` or `deploy:migrations`). */ - task?: string; - /** @description The name of the environment that was deployed to (e.g., `staging` or `production`). */ - environment?: string | null; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["deployment"][]; - }; - }; - }; - }; - /** - * Create a deployment - * @description Deployments offer a few configurable parameters with certain defaults. - * - * The `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them - * before we merge a pull request. - * - * The `environment` parameter allows deployments to be issued to different runtime environments. Teams often have - * multiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter - * makes it easier to track which environments have requested deployments. The default environment is `production`. - * - * The `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If - * the ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds, - * the API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will - * return a failure response. - * - * By default, [commit statuses](https://docs.github.com/rest/commits/statuses) for every submitted context must be in a `success` - * state. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to - * specify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do - * not require any contexts or create any commit statuses, the deployment will always succeed. - * - * The `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text - * field that will be passed on when a deployment event is dispatched. - * - * The `task` parameter is used by the deployment system to allow different execution paths. In the web world this might - * be `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an - * application with debugging enabled. - * - * Merged branch response: - * - * You will see this response when GitHub automatically merges the base branch into the topic branch instead of creating - * a deployment. This auto-merge happens when: - * * Auto-merge option is enabled in the repository - * * Topic branch does not include the latest changes on the base branch, which is `master` in the response example - * * There are no merge conflicts - * - * If there are no new commits in the base branch, a new request to create a deployment should give a successful - * response. - * - * Merge conflict response: - * - * This error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't - * be merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts. - * - * Failed commit status checks: - * - * This error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success` - * status for the commit to be deployed, but one or more of the required contexts do not have a state of `success`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repo_deployment` scope to use this endpoint. - */ - "repos/create-deployment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The ref to deploy. This can be a branch, tag, or SHA. */ - ref: string; - /** - * @description Specifies a task to execute (e.g., `deploy` or `deploy:migrations`). - * @default deploy - */ - task?: string; - /** - * @description Attempts to automatically merge the default branch into the requested ref, if it's behind the default branch. - * @default true - */ - auto_merge?: boolean; - /** @description The [status](https://docs.github.com/rest/commits/statuses) contexts to verify against commit status checks. If you omit this parameter, GitHub verifies all unique contexts before creating a deployment. To bypass checking entirely, pass an empty array. Defaults to all unique contexts. */ - required_contexts?: string[]; - payload?: OneOf< - [ - { - [key: string]: unknown; - }, - string, - ] - >; - /** - * @description Name for the target deployment environment (e.g., `production`, `staging`, `qa`). - * @default production - */ - environment?: string; - /** - * @description Short description of the deployment. - * @default - */ - description?: string | null; - /** - * @description Specifies if the given environment is specific to the deployment and will no longer exist at some point in the future. Default: `false` - * @default false - */ - transient_environment?: boolean; - /** @description Specifies if the given environment is one that end-users directly interact with. Default: `true` when `environment` is `production` and `false` otherwise. */ - production_environment?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["deployment"]; - }; - }; - /** @description Merged branch response */ - 202: { - content: { - "application/json": { - message?: string; - }; - }; - }; - /** @description Conflict when there is a merge conflict or the commit's status checks failed */ - 409: { - content: never; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** Get a deployment */ - "repos/get-deployment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - deployment_id: components["parameters"]["deployment-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["deployment"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a deployment - * @description If the repository only has one deployment, you can delete the deployment regardless of its status. If the repository has more than one deployment, you can only delete inactive deployments. This ensures that repositories with multiple deployments will always have an active deployment. - * - * To set a deployment as inactive, you must: - * - * * Create a new deployment that is active so that the system has a record of the current state, then delete the previously active deployment. - * * Mark the active deployment as inactive by adding any non-successful deployment status. - * - * For more information, see "[Create a deployment](https://docs.github.com/rest/deployments/deployments/#create-a-deployment)" and "[Create a deployment status](https://docs.github.com/rest/deployments/statuses#create-a-deployment-status)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repo_deployment` scope to use this endpoint. - */ - "repos/delete-deployment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - deployment_id: components["parameters"]["deployment-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List deployment statuses - * @description Users with pull access can view deployment statuses for a deployment: - */ - "repos/list-deployment-statuses": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - deployment_id: components["parameters"]["deployment-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["deployment-status"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a deployment status - * @description Users with `push` access can create deployment statuses for a given deployment. - * - * OAuth app tokens and personal access tokens (classic) need the `repo_deployment` scope to use this endpoint. - */ - "repos/create-deployment-status": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - deployment_id: components["parameters"]["deployment-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The state of the status. When you set a transient deployment to `inactive`, the deployment will be shown as `destroyed` in GitHub. - * @enum {string} - */ - state: - | "error" - | "failure" - | "inactive" - | "in_progress" - | "queued" - | "pending" - | "success"; - /** - * @description The target URL to associate with this status. This URL should contain output to keep the user updated while the task is running or serve as historical information for what happened in the deployment. - * - * > [!NOTE] - * > It's recommended to use the `log_url` parameter, which replaces `target_url`. - * @default - */ - target_url?: string; - /** - * @description The full URL of the deployment's output. This parameter replaces `target_url`. We will continue to accept `target_url` to support legacy uses, but we recommend replacing `target_url` with `log_url`. Setting `log_url` will automatically set `target_url` to the same value. Default: `""` - * @default - */ - log_url?: string; - /** - * @description A short description of the status. The maximum description length is 140 characters. - * @default - */ - description?: string; - /** @description Name for the target deployment environment, which can be changed when setting a deploy status. For example, `production`, `staging`, or `qa`. If not defined, the environment of the previous status on the deployment will be used, if it exists. Otherwise, the environment of the deployment will be used. */ - environment?: string; - /** - * @description Sets the URL for accessing your environment. Default: `""` - * @default - */ - environment_url?: string; - /** @description Adds a new `inactive` status to all prior non-transient, non-production environment deployments with the same repository and `environment` name as the created status's deployment. An `inactive` status is only added to deployments that had a `success` state. Default: `true` */ - auto_inactive?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/example/deployments/42/statuses/1 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["deployment-status"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a deployment status - * @description Users with pull access can view a deployment status for a deployment: - */ - "repos/get-deployment-status": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - deployment_id: components["parameters"]["deployment-id"]; - status_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["deployment-status"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a repository dispatch event - * @description You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see "[RepositoryDispatchEvent](https://docs.github.com/webhooks/event-payloads/#repository_dispatch)." - * - * The `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow. - * - * This input example shows how you can use the `client_payload` as a test to debug your workflow. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/create-dispatch-event": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description A custom webhook event name. Must be 100 characters or fewer. */ - event_type: string; - /** @description JSON payload with extra information about the webhook event that your action or workflow may use. The maximum number of top-level properties is 10. The total size of the JSON payload must be less than 64KB. */ - client_payload?: { - [key: string]: unknown; - }; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List environments - * @description Lists the environments for a repository. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "repos/get-all-environments": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - /** - * @description The number of environments in this repository - * @example 5 - */ - total_count?: number; - environments?: components["schemas"]["environment"][]; - }; - }; - }; - }; - }; - /** - * Get an environment - * @description > [!NOTE] - * > To get information about name patterns that branches must match in order to deploy to this environment, see "[Get a deployment branch policy](/rest/deployments/branch-policies#get-a-deployment-branch-policy)." - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "repos/get-environment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["environment"]; - }; - }; - }; - }; - /** - * Create or update an environment - * @description Create or update an environment with protection rules, such as required reviewers. For more information about environment protection rules, see "[Environments](/actions/reference/environments#environment-protection-rules)." - * - * > [!NOTE] - * > To create or update name patterns that branches must match in order to deploy to this environment, see "[Deployment branch policies](/rest/deployments/branch-policies)." - * - * > [!NOTE] - * > To create or update secrets for an environment, see "[GitHub Actions secrets](/rest/actions/secrets)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/create-or-update-environment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - }; - }; - requestBody?: { - content: { - "application/json": { - wait_timer?: components["schemas"]["wait-timer"]; - prevent_self_review?: components["schemas"]["prevent-self-review"]; - /** @description The people or teams that may review jobs that reference the environment. You can list up to six users or teams as reviewers. The reviewers must have at least read access to the repository. Only one of the required reviewers needs to approve the job for it to proceed. */ - reviewers?: - | { - type?: components["schemas"]["deployment-reviewer-type"]; - /** - * @description The id of the user or team who can review the deployment - * @example 4532992 - */ - id?: number; - }[] - | null; - deployment_branch_policy?: components["schemas"]["deployment-branch-policy-settings"]; - } | null; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["environment"]; - }; - }; - /** @description Validation error when the environment name is invalid or when `protected_branches` and `custom_branch_policies` in `deployment_branch_policy` are set to the same value */ - 422: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - }; - /** - * Delete an environment - * @description OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/delete-an-environment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - }; - }; - responses: { - /** @description Default response */ - 204: { - content: never; - }; - }; - }; - /** - * List deployment branch policies - * @description Lists the deployment branch policies for an environment. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "repos/list-deployment-branch-policies": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - /** - * @description The number of deployment branch policies for the environment. - * @example 2 - */ - total_count: number; - branch_policies: components["schemas"]["deployment-branch-policy"][]; - }; - }; - }; - }; - }; - /** - * Create a deployment branch policy - * @description Creates a deployment branch or tag policy for an environment. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/create-deployment-branch-policy": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["deployment-branch-policy-name-pattern-with-type"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["deployment-branch-policy"]; - }; - }; - /** @description Response if the same branch name pattern already exists */ - 303: { - content: never; - }; - /** @description Not Found or `deployment_branch_policy.custom_branch_policies` property for the environment is set to false */ - 404: { - content: never; - }; - }; - }; - /** - * Get a deployment branch policy - * @description Gets a deployment branch or tag policy for an environment. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "repos/get-deployment-branch-policy": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - branch_policy_id: components["parameters"]["branch-policy-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["deployment-branch-policy"]; - }; - }; - }; - }; - /** - * Update a deployment branch policy - * @description Updates a deployment branch or tag policy for an environment. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/update-deployment-branch-policy": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - branch_policy_id: components["parameters"]["branch-policy-id"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["deployment-branch-policy-name-pattern"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["deployment-branch-policy"]; - }; - }; - }; - }; - /** - * Delete a deployment branch policy - * @description Deletes a deployment branch or tag policy for an environment. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/delete-deployment-branch-policy": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - branch_policy_id: components["parameters"]["branch-policy-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get all deployment protection rules for an environment - * @description Gets all custom deployment protection rules that are enabled for an environment. Anyone with read access to the repository can use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)." - * - * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "repos/get-all-deployment-protection-rules": { - parameters: { - path: { - environment_name: components["parameters"]["environment-name"]; - repo: components["parameters"]["repo"]; - owner: components["parameters"]["owner"]; - }; - }; - responses: { - /** @description List of deployment protection rules */ - 200: { - content: { - "application/json": { - /** - * @description The number of enabled custom deployment protection rules for this environment - * @example 10 - */ - total_count?: number; - custom_deployment_protection_rules?: components["schemas"]["deployment-protection-rule"][]; - }; - }; - }; - }; - }; - /** - * Create a custom deployment protection rule on an environment - * @description Enable a custom deployment protection rule for an environment. - * - * The authenticated user must have admin or owner permissions to the repository to use this endpoint. - * - * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app), as well as the [guide to creating custom deployment protection rules](https://docs.github.com/actions/managing-workflow-runs-and-deployments/managing-deployments/creating-custom-deployment-protection-rules). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/create-deployment-protection-rule": { - parameters: { - path: { - environment_name: components["parameters"]["environment-name"]; - repo: components["parameters"]["repo"]; - owner: components["parameters"]["owner"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The ID of the custom app that will be enabled on the environment. */ - integration_id?: number; - }; - }; - }; - responses: { - /** @description The enabled custom deployment protection rule */ - 201: { - content: { - "application/json": components["schemas"]["deployment-protection-rule"]; - }; - }; - }; - }; - /** - * List custom deployment rule integrations available for an environment - * @description Gets all custom deployment protection rule integrations that are available for an environment. - * - * The authenticated user must have admin or owner permissions to the repository to use this endpoint. - * - * For more information about environments, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)." - * - * For more information about the app that is providing this custom deployment rule, see "[GET an app](https://docs.github.com/rest/apps/apps#get-an-app)". - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "repos/list-custom-deployment-rule-integrations": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - environment_name: components["parameters"]["environment-name"]; - repo: components["parameters"]["repo"]; - owner: components["parameters"]["owner"]; - }; - }; - responses: { - /** @description A list of custom deployment rule integrations available for this environment. */ - 200: { - content: { - "application/json": { - /** - * @description The total number of custom deployment protection rule integrations available for this environment. - * @example 35 - */ - total_count?: number; - available_custom_deployment_protection_rule_integrations?: components["schemas"]["custom-deployment-rule-app"][]; - }; - }; - }; - }; - }; - /** - * Get a custom deployment protection rule - * @description Gets an enabled custom deployment protection rule for an environment. Anyone with read access to the repository can use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)." - * - * For more information about the app that is providing this custom deployment rule, see [`GET /apps/{app_slug}`](https://docs.github.com/rest/apps/apps#get-an-app). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - "repos/get-custom-deployment-protection-rule": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - protection_rule_id: components["parameters"]["protection-rule-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["deployment-protection-rule"]; - }; - }; - }; - }; - /** - * Disable a custom protection rule for an environment - * @description Disables a custom deployment protection rule for an environment. - * - * The authenticated user must have admin or owner permissions to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/disable-deployment-protection-rule": { - parameters: { - path: { - environment_name: components["parameters"]["environment-name"]; - repo: components["parameters"]["repo"]; - owner: components["parameters"]["owner"]; - protection_rule_id: components["parameters"]["protection-rule-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List environment secrets - * @description Lists all secrets available in an environment without revealing their - * encrypted values. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/list-environment-secrets": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - secrets: components["schemas"]["actions-secret"][]; - }; - }; - }; - }; - }; - /** - * Get an environment public key - * @description Get the public key for an environment, which you need to encrypt environment - * secrets. You need to encrypt a secret before you can create or update secrets. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-environment-public-key": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-public-key"]; - }; - }; - }; - }; - /** - * Get an environment secret - * @description Gets a single environment secret without revealing its encrypted value. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-environment-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-secret"]; - }; - }; - }; - }; - /** - * Create or update an environment secret - * @description Creates or updates an environment secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/create-or-update-environment-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get an environment public key](https://docs.github.com/rest/actions/secrets#get-an-environment-public-key) endpoint. */ - encrypted_value: string; - /** @description ID of the key you used to encrypt the secret. */ - key_id: string; - }; - }; - }; - responses: { - /** @description Response when creating a secret */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - /** @description Response when updating a secret */ - 204: { - content: never; - }; - }; - }; - /** - * Delete an environment secret - * @description Deletes a secret in an environment using the secret name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/delete-environment-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Default response */ - 204: { - content: never; - }; - }; - }; - /** - * List environment variables - * @description Lists all environment variables. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/list-environment-variables": { - parameters: { - query?: { - per_page?: components["parameters"]["variables-per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - variables: components["schemas"]["actions-variable"][]; - }; - }; - }; - }; - }; - /** - * Create an environment variable - * @description Create an environment variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/create-environment-variable": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the variable. */ - name: string; - /** @description The value of the variable. */ - value: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - }; - }; - /** - * Get an environment variable - * @description Gets a specific variable in an environment. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/get-environment-variable": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - environment_name: components["parameters"]["environment-name"]; - name: components["parameters"]["variable-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-variable"]; - }; - }; - }; - }; - /** - * Delete an environment variable - * @description Deletes an environment variable using the variable name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/delete-environment-variable": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - name: components["parameters"]["variable-name"]; - environment_name: components["parameters"]["environment-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update an environment variable - * @description Updates an environment variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "actions/update-environment-variable": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - name: components["parameters"]["variable-name"]; - environment_name: components["parameters"]["environment-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the variable. */ - name?: string; - /** @description The value of the variable. */ - value?: string; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List repository events - * @description > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - "activity/list-repo-events": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - }; - /** List forks */ - "repos/list-forks": { - parameters: { - query?: { - /** @description The sort order. `stargazers` will sort by star count. */ - sort?: "newest" | "oldest" | "stargazers" | "watchers"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - 400: components["responses"]["bad_request"]; - }; - }; - /** - * Create a fork - * @description Create a fork for the authenticated user. - * - * > [!NOTE] - * > Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api). - * - * > [!NOTE] - * > Although this endpoint works with GitHub Apps, the GitHub App must be installed on the destination account with access to all repositories and on the source account with access to the source repository. - */ - "repos/create-fork": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description Optional parameter to specify the organization name if forking into an organization. */ - organization?: string; - /** @description When forking from an existing repository, a new name for the fork. */ - name?: string; - /** @description When forking from an existing repository, fork with only the default branch. */ - default_branch_only?: boolean; - } | null; - }; - }; - responses: { - /** @description Response */ - 202: { - content: { - "application/json": components["schemas"]["full-repository"]; - }; - }; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** Create a blob */ - "git/create-blob": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The new blob's content. */ - content: string; - /** - * @description The encoding used for `content`. Currently, `"utf-8"` and `"base64"` are supported. - * @default utf-8 - */ - encoding?: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/example/git/blobs/3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["short-blob"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - /** @description Validation failed */ - 422: { - content: { - "application/json": - | components["schemas"]["validation-error"] - | components["schemas"]["repository-rule-violation-error"]; - }; - }; - }; - }; - /** - * Get a blob - * @description The `content` in the response will always be Base64 encoded. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw blob data. - * - **`application/vnd.github+json`**: Returns a JSON representation of the blob with `content` as a base64 encoded string. This is the default if no media type is specified. - * - * **Note** This endpoint supports blobs up to 100 megabytes in size. - */ - "git/get-blob": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - file_sha: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["blob"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Create a commit - * @description Creates a new Git [commit object](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects). - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "git/create-commit": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The commit message */ - message: string; - /** @description The SHA of the tree object this commit points to */ - tree: string; - /** @description The full SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided; for a merge commit, an array of more than one should be provided. */ - parents?: string[]; - /** @description Information about the author of the commit. By default, the `author` will be the authenticated user and the current date. See the `author` and `committer` object below for details. */ - author?: { - /** @description The name of the author (or committer) of the commit */ - name: string; - /** @description The email of the author (or committer) of the commit */ - email: string; - /** - * Format: date-time - * @description Indicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - date?: string; - }; - /** @description Information about the person who is making the commit. By default, `committer` will use the information set in `author`. See the `author` and `committer` object below for details. */ - committer?: { - /** @description The name of the author (or committer) of the commit */ - name?: string; - /** @description The email of the author (or committer) of the commit */ - email?: string; - /** - * Format: date-time - * @description Indicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - date?: string; - }; - /** @description The [PGP signature](https://en.wikipedia.org/wiki/Pretty_Good_Privacy) of the commit. GitHub adds the signature to the `gpgsig` header of the created commit. For a commit signature to be verifiable by Git or GitHub, it must be an ASCII-armored detached PGP signature over the string commit as it would be written to the object database. To pass a `signature` parameter, you need to first manually create a valid PGP signature, which can be complicated. You may find it easier to [use the command line](https://git-scm.com/book/id/v2/Git-Tools-Signing-Your-Work) to create signed commits. */ - signature?: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["git-commit"]; - }; - }; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a commit object - * @description Gets a Git [commit object](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects). - * - * To get the contents of a commit, see "[Get a commit](/rest/commits/commits#get-a-commit)." - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "git/get-commit": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - commit_sha: components["parameters"]["commit-sha"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["git-commit"]; - }; - }; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - }; - }; - /** - * List matching references - * @description Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array. - * - * When you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`. - * - * > [!NOTE] - * > You need to explicitly [request a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - * - * If you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`. - */ - "git/list-matching-refs": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ref: components["parameters"]["git-ref-only"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["git-ref"][]; - }; - }; - 409: components["responses"]["conflict"]; - }; - }; - /** - * Get a reference - * @description Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned. - * - * > [!NOTE] - * > You need to explicitly [request a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - */ - "git/get-ref": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ref: components["parameters"]["git-ref-only"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["git-ref"]; - }; - }; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - }; - }; - /** - * Create a reference - * @description Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches. - */ - "git/create-ref": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the fully qualified reference (ie: `refs/heads/master`). If it doesn't start with 'refs' and have at least two slashes, it will be rejected. */ - ref: string; - /** @description The SHA1 value for this reference. */ - sha: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/git/refs/heads/featureA */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["git-ref"]; - }; - }; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Delete a reference - * @description Deletes the provided reference. - */ - "git/delete-ref": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ref: components["parameters"]["git-ref-only"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 409: components["responses"]["conflict"]; - /** @description Validation failed, an attempt was made to delete the default branch, or the endpoint has been spammed. */ - 422: { - content: never; - }; - }; - }; - /** - * Update a reference - * @description Updates the provided reference to point to a new SHA. For more information, see "[Git References](https://git-scm.com/book/en/v2/Git-Internals-Git-References)" in the Git documentation. - */ - "git/update-ref": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ref: components["parameters"]["git-ref-only"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The SHA1 value to set this reference to */ - sha: string; - /** - * @description Indicates whether to force the update or to make sure the update is a fast-forward update. Leaving this out or setting it to `false` will make sure you're not overwriting work. - * @default false - */ - force?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["git-ref"]; - }; - }; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Create a tag object - * @description Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://docs.github.com/rest/git/refs#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://docs.github.com/rest/git/refs#create-a-reference) the tag reference - this call would be unnecessary. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "git/create-tag": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The tag's name. This is typically a version (e.g., "v0.0.1"). */ - tag: string; - /** @description The tag message. */ - message: string; - /** @description The SHA of the git object this is tagging. */ - object: string; - /** - * @description The type of the object we're tagging. Normally this is a `commit` but it can also be a `tree` or a `blob`. - * @enum {string} - */ - type: "commit" | "tree" | "blob"; - /** @description An object with information about the individual creating the tag. */ - tagger?: { - /** @description The name of the author of the tag */ - name: string; - /** @description The email of the author of the tag */ - email: string; - /** - * Format: date-time - * @description When this object was tagged. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - date?: string; - }; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["git-tag"]; - }; - }; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a tag - * @description **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "git/get-tag": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - tag_sha: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["git-tag"]; - }; - }; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - }; - }; - /** - * Create a tree - * @description The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure. - * - * If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "[Create a commit](https://docs.github.com/rest/git/commits#create-a-commit)" and "[Update a reference](https://docs.github.com/rest/git/refs#update-a-reference)." - * - * Returns an error if you try to delete a file that does not exist. - */ - "git/create-tree": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Objects (of `path`, `mode`, `type`, and `sha`) specifying a tree structure. */ - tree: { - /** @description The file referenced in the tree. */ - path?: string; - /** - * @description The file mode; one of `100644` for file (blob), `100755` for executable (blob), `040000` for subdirectory (tree), `160000` for submodule (commit), or `120000` for a blob that specifies the path of a symlink. - * @enum {string} - */ - mode?: "100644" | "100755" | "040000" | "160000" | "120000"; - /** - * @description Either `blob`, `tree`, or `commit`. - * @enum {string} - */ - type?: "blob" | "tree" | "commit"; - /** - * @description The SHA1 checksum ID of the object in the tree. Also called `tree.sha`. If the value is `null` then the file will be deleted. - * - * **Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error. - */ - sha?: string | null; - /** - * @description The content you want this file to have. GitHub will write this blob out and use that SHA for this entry. Use either this, or `tree.sha`. - * - * **Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error. - */ - content?: string; - }[]; - /** - * @description The SHA1 of an existing Git tree object which will be used as the base for the new tree. If provided, a new Git tree object will be created from entries in the Git tree object pointed to by `base_tree` and entries defined in the `tree` parameter. Entries defined in the `tree` parameter will overwrite items from `base_tree` with the same `path`. If you're creating new changes on a branch, then normally you'd set `base_tree` to the SHA1 of the Git tree object of the current latest commit on the branch you're working on. - * If not provided, GitHub will create a new Git tree object from only the entries defined in the `tree` parameter. If you create a new commit pointing to such a tree, then all files which were a part of the parent commit's tree and were not defined in the `tree` parameter will be listed as deleted by the new commit. - */ - base_tree?: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/trees/cd8274d15fa3ae2ab983129fb037999f264ba9a7 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["git-tree"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a tree - * @description Returns a single tree using the SHA1 value or ref name for that tree. - * - * If `truncated` is `true` in the response then the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time. - * - * > [!NOTE] - * > The limit for the `tree` array is 100,000 entries with a maximum size of 7 MB when using the `recursive` parameter. - */ - "git/get-tree": { - parameters: { - query?: { - /** @description Setting this parameter to any value returns the objects or subtrees referenced by the tree specified in `:tree_sha`. For example, setting `recursive` to any of the following will enable returning objects or subtrees: `0`, `1`, `"true"`, and `"false"`. Omit this parameter to prevent recursively returning objects or subtrees. */ - recursive?: string; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The SHA1 value or ref (branch or tag) name of the tree. */ - tree_sha: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["git-tree"]; - }; - }; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List repository webhooks - * @description Lists webhooks for a repository. `last response` may return null if there have not been any deliveries within 30 days. - */ - "repos/list-webhooks": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["hook"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a repository webhook - * @description Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can - * share the same `config` as long as those webhooks do not have any `events` that overlap. - */ - "repos/create-webhook": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description Use `web` to create a webhook. Default: `web`. This parameter only accepts the value `web`. */ - name?: string; - /** @description Key/value pairs to provide settings for this webhook. */ - config?: { - url?: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - }; - /** - * @description Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. - * @default [ - * "push" - * ] - */ - events?: string[]; - /** - * @description Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications. - * @default true - */ - active?: boolean; - } | null; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/hooks/12345678 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["hook"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a repository webhook - * @description Returns a webhook configured in a repository. To get only the webhook `config` properties, see "[Get a webhook configuration for a repository](/rest/webhooks/repo-config#get-a-webhook-configuration-for-a-repository)." - */ - "repos/get-webhook": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["hook"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a repository webhook - * @description Delete a webhook for an organization. - * - * The authenticated user must be a repository owner, or have admin access in the repository, to delete the webhook. - */ - "repos/delete-webhook": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update a repository webhook - * @description Updates a webhook configured in a repository. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for a repository](/rest/webhooks/repo-config#update-a-webhook-configuration-for-a-repository)." - */ - "repos/update-webhook": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - config?: components["schemas"]["webhook-config"]; - /** - * @description Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. This replaces the entire array of events. - * @default [ - * "push" - * ] - */ - events?: string[]; - /** @description Determines a list of events to be added to the list of events that the Hook triggers for. */ - add_events?: string[]; - /** @description Determines a list of events to be removed from the list of events that the Hook triggers for. */ - remove_events?: string[]; - /** - * @description Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications. - * @default true - */ - active?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["hook"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a webhook configuration for a repository - * @description Returns the webhook configuration for a repository. To get more information about the webhook, including the `active` state and `events`, use "[Get a repository webhook](/rest/webhooks/repos#get-a-repository-webhook)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:repo_hook` or `repo` scope to use this endpoint. - */ - "repos/get-webhook-config-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["webhook-config"]; - }; - }; - }; - }; - /** - * Update a webhook configuration for a repository - * @description Updates the webhook configuration for a repository. To update more information about the webhook, including the `active` state and `events`, use "[Update a repository webhook](/rest/webhooks/repos#update-a-repository-webhook)." - * - * OAuth app tokens and personal access tokens (classic) need the `write:repo_hook` or `repo` scope to use this endpoint. - */ - "repos/update-webhook-config-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - url?: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["webhook-config"]; - }; - }; - }; - }; - /** - * List deliveries for a repository webhook - * @description Returns a list of webhook deliveries for a webhook configured in a repository. - */ - "repos/list-webhook-deliveries": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - cursor?: components["parameters"]["cursor"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["hook-delivery-item"][]; - }; - }; - 400: components["responses"]["bad_request"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a delivery for a repository webhook - * @description Returns a delivery for a webhook configured in a repository. - */ - "repos/get-webhook-delivery": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - delivery_id: components["parameters"]["delivery-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["hook-delivery"]; - }; - }; - 400: components["responses"]["bad_request"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Redeliver a delivery for a repository webhook - * @description Redeliver a webhook delivery for a webhook configured in a repository. - */ - "repos/redeliver-webhook-delivery": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - delivery_id: components["parameters"]["delivery-id"]; - }; - }; - responses: { - 202: components["responses"]["accepted"]; - 400: components["responses"]["bad_request"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Ping a repository webhook - * @description This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook. - */ - "repos/ping-webhook": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Test the push repository webhook - * @description This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated. - * - * > [!NOTE] - * > Previously `/repos/:owner/:repo/hooks/:hook_id/test` - */ - "repos/test-push-webhook": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Check if immutable releases are enabled for a repository - * @description Shows whether immutable releases are enabled or disabled. Also identifies whether immutability is being - * enforced by the repository owner. The authenticated user must have admin read access to the repository. - */ - "repos/check-immutable-releases": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response if immutable releases are enabled */ - 200: { - content: { - "application/json": components["schemas"]["check-immutable-releases"]; - }; - }; - /** @description Not Found if immutable releases are not enabled for the repository */ - 404: { - content: never; - }; - }; - }; - /** - * Enable immutable releases - * @description Enables immutable releases for a repository. The authenticated user must have admin access to the repository. - */ - "repos/enable-immutable-releases": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - 204: components["responses"]["no_content"]; - 409: components["responses"]["conflict"]; - }; - }; - /** - * Disable immutable releases - * @description Disables immutable releases for a repository. The authenticated user must have admin access to the repository. - */ - "repos/disable-immutable-releases": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - 204: components["responses"]["no_content"]; - 409: components["responses"]["conflict"]; - }; - }; - /** - * Get an import status - * @deprecated - * @description View the progress of an import. - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - * - * **Import status** - * - * This section includes details about the possible values of the `status` field of the Import Progress response. - * - * An import that does not have errors will progress through these steps: - * - * * `detecting` - the "detection" step of the import is in progress because the request did not include a `vcs` parameter. The import is identifying the type of source control present at the URL. - * * `importing` - the "raw" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will include `commit_count` (the total number of raw commits that will be imported) and `percent` (0 - 100, the current progress through the import). - * * `mapping` - the "rewrite" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information. - * * `pushing` - the "push" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will include `push_percent`, which is the percent value reported by `git push` when it is "Writing objects". - * * `complete` - the import is complete, and the repository is ready on GitHub. - * - * If there are problems, you will see one of these in the `status` field: - * - * * `auth_failed` - the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section. - * * `error` - the import encountered an error. The import progress response will include the `failed_step` and an error message. Contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api) for more information. - * * `detection_needs_auth` - the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section. - * * `detection_found_nothing` - the importer didn't recognize any source control at the URL. To resolve, [Cancel the import](https://docs.github.com/rest/migrations/source-imports#cancel-an-import) and [retry](https://docs.github.com/rest/migrations/source-imports#start-an-import) with the correct URL. - * * `detection_found_multiple` - the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include a `project_choices` field with the possible project choices as values. To update project choice, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section. - * - * **The project_choices field** - * - * When multiple projects are found at the provided URL, the response hash will include a `project_choices` field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type. - * - * **Git LFS related fields** - * - * This section includes details about Git LFS related fields that may be present in the Import Progress response. - * - * * `use_lfs` - describes whether the import has been opted in or out of using Git LFS. The value can be `opt_in`, `opt_out`, or `undecided` if no action has been taken. - * * `has_large_files` - the boolean value describing whether files larger than 100MB were found during the `importing` step. - * * `large_files_size` - the total size in gigabytes of files larger than 100MB found in the originating repository. - * * `large_files_count` - the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a "Get Large Files" request. - */ - "migrations/get-import-status": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["import"]; - }; - }; - 404: components["responses"]["not_found"]; - 503: components["responses"]["porter_maintenance"]; - }; - }; - /** - * Start an import - * @deprecated - * @description Start a source import to a GitHub repository using GitHub Importer. - * Importing into a GitHub repository with GitHub Actions enabled is not supported and will - * return a status `422 Unprocessable Entity` response. - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - "migrations/start-import": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The URL of the originating repository. */ - vcs_url: string; - /** - * @description The originating VCS type. Without this parameter, the import job will take additional time to detect the VCS type before beginning the import. This detection step will be reflected in the response. - * @enum {string} - */ - vcs?: "subversion" | "git" | "mercurial" | "tfvc"; - /** @description If authentication is required, the username to provide to `vcs_url`. */ - vcs_username?: string; - /** @description If authentication is required, the password to provide to `vcs_url`. */ - vcs_password?: string; - /** @description For a tfvc import, the name of the project that is being imported. */ - tfvc_project?: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/spraints/socm/import */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["import"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - 503: components["responses"]["porter_maintenance"]; - }; - }; - /** - * Cancel an import - * @deprecated - * @description Stop an import for a repository. - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - "migrations/cancel-import": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 503: components["responses"]["porter_maintenance"]; - }; - }; - /** - * Update an import - * @deprecated - * @description An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API - * request. If no parameters are provided, the import will be restarted. - * - * Some servers (e.g. TFS servers) can have several projects at a single URL. In those cases the import progress will - * have the status `detection_found_multiple` and the Import Progress response will include a `project_choices` array. - * You can select the project to import by providing one of the objects in the `project_choices` array in the update request. - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - "migrations/update-import": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The username to provide to the originating repository. */ - vcs_username?: string; - /** @description The password to provide to the originating repository. */ - vcs_password?: string; - /** - * @description The type of version control system you are migrating from. - * @example "git" - * @enum {string} - */ - vcs?: "subversion" | "tfvc" | "git" | "mercurial"; - /** - * @description For a tfvc import, the name of the project that is being imported. - * @example "project1" - */ - tfvc_project?: string; - } | null; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["import"]; - }; - }; - 503: components["responses"]["porter_maintenance"]; - }; - }; - /** - * Get commit authors - * @deprecated - * @description Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username `hubot` into something like `hubot `. - * - * This endpoint and the [Map a commit author](https://docs.github.com/rest/migrations/source-imports#map-a-commit-author) endpoint allow you to provide correct Git author information. - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - "migrations/get-commit-authors": { - parameters: { - query?: { - since?: components["parameters"]["since-user"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["porter-author"][]; - }; - }; - 404: components["responses"]["not_found"]; - 503: components["responses"]["porter_maintenance"]; - }; - }; - /** - * Map a commit author - * @deprecated - * @description Update an author's identity for the import. Your application can continue updating authors any time before you push - * new commits to the repository. - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - "migrations/map-commit-author": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - author_id: number; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The new Git author email. */ - email?: string; - /** @description The new Git author name. */ - name?: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["porter-author"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - 503: components["responses"]["porter_maintenance"]; - }; - }; - /** - * Get large files - * @deprecated - * @description List files larger than 100MB found during the import - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - "migrations/get-large-files": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["porter-large-file"][]; - }; - }; - 503: components["responses"]["porter_maintenance"]; - }; - }; - /** - * Update Git LFS preference - * @deprecated - * @description You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability - * is powered by [Git LFS](https://git-lfs.com). - * - * You can learn more about our LFS feature and working with large files [on our help - * site](https://docs.github.com/repositories/working-with-files/managing-large-files). - * - * > [!WARNING] - * > **Endpoint closing down notice:** Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation). - */ - "migrations/set-lfs-preference": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description Whether to store large files during the import. `opt_in` means large files will be stored using Git LFS. `opt_out` means large files will be removed during the import. - * @enum {string} - */ - use_lfs: "opt_in" | "opt_out"; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["import"]; - }; - }; - 422: components["responses"]["validation_failed"]; - 503: components["responses"]["porter_maintenance"]; - }; - }; - /** - * Get a repository installation for the authenticated app - * @description Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/get-repo-installation": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["installation"]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get interaction restrictions for a repository - * @description Shows which type of GitHub user can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response. - */ - "interactions/get-restrictions-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": - | components["schemas"]["interaction-limit-response"] - | Record; - }; - }; - }; - }; - /** - * Set interaction restrictions for a repository - * @description Temporarily restricts interactions to a certain type of GitHub user within the given repository. You must have owner or admin access to set these restrictions. If an interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. - */ - "interactions/set-restrictions-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["interaction-limit"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["interaction-limit-response"]; - }; - }; - /** @description Response */ - 409: { - content: never; - }; - }; - }; - /** - * Remove interaction restrictions for a repository - * @description Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions. If the interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. - */ - "interactions/remove-restrictions-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - /** @description Response */ - 409: { - content: never; - }; - }; - }; - /** - * List repository invitations - * @description When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations. - */ - "repos/list-invitations": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["repository-invitation"][]; - }; - }; - }; - }; - /** Delete a repository invitation */ - "repos/delete-invitation": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - invitation_id: components["parameters"]["invitation-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** Update a repository invitation */ - "repos/update-invitation": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - invitation_id: components["parameters"]["invitation-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description The permissions that the associated user will have on the repository. Valid values are `read`, `write`, `maintain`, `triage`, and `admin`. - * @enum {string} - */ - permissions?: "read" | "write" | "maintain" | "triage" | "admin"; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repository-invitation"]; - }; - }; - }; - }; - /** - * List repository issues - * @description List issues in a repository. Only open issues will be listed. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/list-for-repo": { - parameters: { - query?: { - /** @description If an `integer` is passed, it should refer to a milestone by its `number` field. If the string `*` is passed, issues with any milestone are accepted. If the string `none` is passed, issues without milestones are returned. */ - milestone?: string; - /** @description Indicates the state of the issues to return. */ - state?: "open" | "closed" | "all"; - /** @description Can be the name of a user. Pass in `none` for issues with no assigned user, and `*` for issues assigned to any user. */ - assignee?: string; - /** @description Can be the name of an issue type. If the string `*` is passed, issues with any type are accepted. If the string `none` is passed, issues without type are returned. */ - type?: string; - /** @description The user that created the issue. */ - creator?: string; - /** @description A user that's mentioned in the issue. */ - mentioned?: string; - labels?: components["parameters"]["labels"]; - /** @description What to sort results by. */ - sort?: "created" | "updated" | "comments"; - direction?: components["parameters"]["direction"]; - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["issue"][]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Create an issue - * @description Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://docs.github.com/articles/disabling-issues/), the API returns a `410 Gone` status. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/create": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The title of the issue. */ - title: string | number; - /** @description The contents of the issue. */ - body?: string; - /** @description Login for the user that this issue should be assigned to. _NOTE: Only users with push access can set the assignee for new issues. The assignee is silently dropped otherwise. **This field is closing down.**_ */ - assignee?: string | null; - milestone?: string | number | null; - /** @description Labels to associate with this issue. _NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise._ */ - labels?: OneOf< - [ - string, - { - id?: number; - name?: string; - description?: string | null; - color?: string | null; - }, - ] - >[]; - /** @description Logins for Users to assign to this issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._ */ - assignees?: string[]; - /** - * @description The name of the issue type to associate with this issue. _NOTE: Only users with push access can set the type for new issues. The type is silently dropped otherwise._ - * @example Epic - */ - type?: string | null; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/issues/1347 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["issue"]; - }; - }; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - 422: components["responses"]["validation_failed"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List issue comments for a repository - * @description You can use the REST API to list comments on issues and pull requests for a repository. Every pull request is an issue, but not every issue is a pull request. - * - * By default, issue comments are ordered by ascending ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/list-comments-for-repo": { - parameters: { - query?: { - sort?: components["parameters"]["sort"]; - /** @description Either `asc` or `desc`. Ignored without the `sort` parameter. */ - direction?: "asc" | "desc"; - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["issue-comment"][]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get an issue comment - * @description You can use the REST API to get comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/get-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["issue-comment"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete an issue comment - * @description You can use the REST API to delete comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - */ - "issues/delete-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update an issue comment - * @description You can use the REST API to update comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/update-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The contents of the comment. */ - body: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["issue-comment"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List reactions for an issue comment - * @description List the reactions to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment). - */ - "reactions/list-for-issue-comment": { - parameters: { - query?: { - /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to an issue comment. */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["reaction"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create reaction for an issue comment - * @description Create a reaction to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment). A response with an HTTP `200` status means that you already added the reaction type to this issue comment. - */ - "reactions/create-for-issue-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the issue comment. - * @enum {string} - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - }; - responses: { - /** @description Reaction exists */ - 200: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - /** @description Reaction created */ - 201: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Delete an issue comment reaction - * @description > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id`. - * - * Delete a reaction to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment). - */ - "reactions/delete-for-issue-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List issue events for a repository - * @description Lists events for a repository. - */ - "issues/list-events-for-repo": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["issue-event"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get an issue event - * @description Gets a single event by the event id. - */ - "issues/get-event": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - event_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["issue-event"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** - * Get an issue - * @description The API returns a [`301 Moved Permanently` status](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api#follow-redirects) if the issue was - * [transferred](https://docs.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If - * the issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API - * returns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read - * access, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe - * to the [`issues`](https://docs.github.com/webhooks/event-payloads/#issues) webhook. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/get": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["issue"]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 304: components["responses"]["not_modified"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** - * Update an issue - * @description Issue owners and users with push access or Triage role can edit an issue. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/update": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The title of the issue. */ - title?: string | number | null; - /** @description The contents of the issue. */ - body?: string | null; - /** @description Username to assign to this issue. **This field is closing down.** */ - assignee?: string | null; - /** - * @description The open or closed state of the issue. - * @enum {string} - */ - state?: "open" | "closed"; - /** - * @description The reason for the state change. Ignored unless `state` is changed. - * @example not_planned - * @enum {string|null} - */ - state_reason?: - | "completed" - | "not_planned" - | "duplicate" - | "reopened" - | null; - milestone?: string | number | null; - /** @description Labels to associate with this issue. Pass one or more labels to _replace_ the set of labels on this issue. Send an empty array (`[]`) to clear all labels from the issue. Only users with push access can set labels for issues. Without push access to the repository, label changes are silently dropped. */ - labels?: OneOf< - [ - string, - { - id?: number; - name?: string; - description?: string | null; - color?: string | null; - }, - ] - >[]; - /** @description Usernames to assign to this issue. Pass one or more user logins to _replace_ the set of assignees on this issue. Send an empty array (`[]`) to clear all assignees from the issue. Only users with push access can set assignees for new issues. Without push access to the repository, assignee changes are silently dropped. */ - assignees?: string[]; - /** - * @description The name of the issue type to associate with this issue or use `null` to remove the current issue type. Only users with push access can set the type for issues. Without push access to the repository, type changes are silently dropped. - * @example Epic - */ - type?: string | null; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["issue"]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - 422: components["responses"]["validation_failed"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Add assignees to an issue - * @description Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced. - */ - "issues/add-assignees": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description Usernames of people to assign this issue to. _NOTE: Only users with push access can add assignees to an issue. Assignees are silently ignored otherwise._ */ - assignees?: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["issue"]; - }; - }; - }; - }; - /** - * Remove assignees from an issue - * @description Removes one or more assignees from an issue. - */ - "issues/remove-assignees": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Usernames of assignees to remove from an issue. _NOTE: Only users with push access can remove assignees from an issue. Assignees are silently ignored otherwise._ */ - assignees: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["issue"]; - }; - }; - }; - }; - /** - * Check if a user can be assigned to a issue - * @description Checks if a user has permission to be assigned to a specific issue. - * - * If the `assignee` can be assigned to this issue, a `204` status code with no content is returned. - * - * Otherwise a `404` status code is returned. - */ - "issues/check-user-can-be-assigned-to-issue": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - assignee: string; - }; - }; - responses: { - /** @description Response if `assignee` can be assigned to `issue_number` */ - 204: { - content: never; - }; - /** @description Response if `assignee` can not be assigned to `issue_number` */ - 404: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - }; - /** - * List issue comments - * @description You can use the REST API to list comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - * - * Issue comments are ordered by ascending ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/list-comments": { - parameters: { - query?: { - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["issue-comment"][]; - }; - }; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** - * Create an issue comment - * @description You can use the REST API to create comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). - * Creating content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/create-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The contents of the comment. */ - body: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/issues/comments/1 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["issue-comment"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List dependencies an issue is blocked by - * @description You can use the REST API to list the dependencies an issue is blocked by. - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/list-dependencies-blocked-by": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["issue"][]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** - * Add a dependency an issue is blocked by - * @description You can use the REST API to add a 'blocked by' relationship to an issue. - * - * Creating content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see [Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits) - * and [Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api). - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/add-blocked-by-dependency": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The id of the issue that blocks the current issue */ - issue_id: number; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/issues/1/dependencies/blocked_by */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["issue"]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove dependency an issue is blocked by - * @description You can use the REST API to remove a dependency that an issue is blocked by. - * - * Removing content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see [Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits) - * and [Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api). - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass a specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/remove-dependency-blocked-by": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - /** @description The id of the blocking issue to remove as a dependency */ - issue_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["issue"]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 400: components["responses"]["bad_request"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** - * List dependencies an issue is blocking - * @description You can use the REST API to list the dependencies an issue is blocking. - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/list-dependencies-blocking": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["issue"][]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** - * List issue events - * @description Lists all events for an issue. - */ - "issues/list-events": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["issue-event-for-issue"][]; - }; - }; - 410: components["responses"]["gone"]; - }; - }; - /** - * List labels for an issue - * @description Lists all labels for an issue. - */ - "issues/list-labels-on-issue": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["label"][]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** - * Set labels for an issue - * @description Removes any previous labels and sets the new labels for an issue. - */ - "issues/set-labels": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - requestBody?: { - content: { - "application/json": OneOf< - [ - { - /** @description The names of the labels to set for the issue. The labels you set replace any existing labels. You can pass an empty array to remove all labels. Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key. You can also add labels to the existing labels for an issue. For more information, see "[Add labels to an issue](https://docs.github.com/rest/issues/labels#add-labels-to-an-issue)." */ - labels?: string[]; - }, - { - labels?: { - name: string; - }[]; - }, - ] - >; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["label"][]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Add labels to an issue - * @description Adds labels to an issue. If you provide an empty array of labels, all labels are removed from the issue. - */ - "issues/add-labels": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - requestBody?: { - content: { - "application/json": OneOf< - [ - { - /** @description The names of the labels to add to the issue's existing labels. You can pass an empty array to remove all labels. Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key. You can also replace all of the labels for an issue. For more information, see "[Set labels for an issue](https://docs.github.com/rest/issues/labels#set-labels-for-an-issue)." */ - labels?: string[]; - }, - { - labels?: { - name: string; - }[]; - }, - ] - >; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["label"][]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove all labels from an issue - * @description Removes all labels from an issue. - */ - "issues/remove-all-labels": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 301: components["responses"]["moved_permanently"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** - * Remove a label from an issue - * @description Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist. - */ - "issues/remove-label": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - name: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["label"][]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** - * Lock an issue - * @description Users with push access can lock an issue or pull request's conversation. - * - * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - "issues/lock": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description The reason for locking the issue or pull request conversation. Lock will fail if you don't use one of these reasons: - * * `off-topic` - * * `too heated` - * * `resolved` - * * `spam` - * @enum {string} - */ - lock_reason?: "off-topic" | "too heated" | "resolved" | "spam"; - } | null; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Unlock an issue - * @description Users with push access can unlock an issue's conversation. - */ - "issues/unlock": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get parent issue - * @description You can use the REST API to get the parent issue of a sub-issue. - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/get-parent": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["issue"]; - }; - }; - 301: components["responses"]["moved_permanently"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** - * List reactions for an issue - * @description List the reactions to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue). - */ - "reactions/list-for-issue": { - parameters: { - query?: { - /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to an issue. */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["reaction"][]; - }; - }; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** - * Create reaction for an issue - * @description Create a reaction to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue). A response with an HTTP `200` status means that you already added the reaction type to this issue. - */ - "reactions/create-for-issue": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the issue. - * @enum {string} - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Delete an issue reaction - * @description > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/issues/:issue_number/reactions/:reaction_id`. - * - * Delete a reaction to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue). - */ - "reactions/delete-for-issue": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Remove sub-issue - * @description You can use the REST API to remove a sub-issue from an issue. - * Removing content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass a specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/remove-sub-issue": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The id of the sub-issue to remove */ - sub_issue_id: number; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/issues/1/sub-issue */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["issue"]; - }; - }; - 400: components["responses"]["bad_request"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List sub-issues - * @description You can use the REST API to list the sub-issues on an issue. - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/list-sub-issues": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["issue"][]; - }; - }; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** - * Add sub-issue - * @description You can use the REST API to add sub-issues to issues. - * - * Creating content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/add-sub-issue": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The id of the sub-issue to add. The sub-issue must belong to the same repository owner as the parent issue */ - sub_issue_id: number; - /** @description Option that, when true, instructs the operation to replace the sub-issues current parent issue */ - replace_parent?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/issues/sub-issues/1 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["issue"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Reprioritize sub-issue - * @description You can use the REST API to reprioritize a sub-issue to a different position in the parent list. - */ - "issues/reprioritize-sub-issue": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The id of the sub-issue to reprioritize */ - sub_issue_id: number; - /** @description The id of the sub-issue to be prioritized after (either positional argument after OR before should be specified). */ - after_id?: number; - /** @description The id of the sub-issue to be prioritized before (either positional argument after OR before should be specified). */ - before_id?: number; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["issue"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List timeline events for an issue - * @description List all timeline events for an issue. - */ - "issues/list-events-for-timeline": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["timeline-issue-events"][]; - }; - }; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - }; - }; - /** List deploy keys */ - "repos/list-deploy-keys": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["deploy-key"][]; - }; - }; - }; - }; - /** - * Create a deploy key - * @description You can create a read-only deploy key. - */ - "repos/create-deploy-key": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description A name for the key. */ - title?: string; - /** @description The contents of the key. */ - key: string; - /** - * @description If `true`, the key will only be able to read repository contents. Otherwise, the key will be able to read and write. - * - * Deploy keys with write access can perform the same actions as an organization member with admin access, or a collaborator on a personal repository. For more information, see "[Repository permission levels for an organization](https://docs.github.com/articles/repository-permission-levels-for-an-organization/)" and "[Permission levels for a user account repository](https://docs.github.com/articles/permission-levels-for-a-user-account-repository/)." - */ - read_only?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/keys/1 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["deploy-key"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** Get a deploy key */ - "repos/get-deploy-key": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - key_id: components["parameters"]["key-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["deploy-key"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a deploy key - * @description Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead. - */ - "repos/delete-deploy-key": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - key_id: components["parameters"]["key-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List labels for a repository - * @description Lists all labels for a repository. - */ - "issues/list-labels-for-repo": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["label"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a label - * @description Creates a label for the specified repository with the given name and color. The name and color parameters are required. The color must be a valid [hexadecimal color code](http://www.color-hex.com/). - */ - "issues/create-label": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see "[Emoji cheat sheet](https://github.com/ikatyang/emoji-cheat-sheet)." */ - name: string; - /** @description The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`. */ - color?: string; - /** @description A short description of the label. Must be 100 characters or fewer. */ - description?: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/labels/bug */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["label"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a label - * @description Gets a label using the given name. - */ - "issues/get-label": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - name: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["label"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a label - * @description Deletes a label using the given label name. - */ - "issues/delete-label": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - name: string; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update a label - * @description Updates a label using the given label name. - */ - "issues/update-label": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - name: string; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The new name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see "[Emoji cheat sheet](https://github.com/ikatyang/emoji-cheat-sheet)." */ - new_name?: string; - /** @description The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`. */ - color?: string; - /** @description A short description of the label. Must be 100 characters or fewer. */ - description?: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["label"]; - }; - }; - }; - }; - /** - * List repository languages - * @description Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language. - */ - "repos/list-languages": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["language"]; - }; - }; - }; - }; - /** - * Get the license for a repository - * @description This method returns the contents of the repository's license file, if one is detected. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw contents of the license. - * - **`application/vnd.github.html+json`**: Returns the license contents in HTML. Markup languages are rendered to HTML using GitHub's open-source [Markup library](https://github.com/github/markup). - */ - "licenses/get-for-repo": { - parameters: { - query?: { - ref?: components["parameters"]["git-ref"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["license-content"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Sync a fork branch with the upstream repository - * @description Sync a branch of a forked repository to keep it up-to-date with the upstream repository. - */ - "repos/merge-upstream": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the branch which should be updated to match upstream. */ - branch: string; - }; - }; - }; - responses: { - /** @description The branch has been successfully synced with the upstream repository */ - 200: { - content: { - "application/json": components["schemas"]["merged-upstream"]; - }; - }; - /** @description The branch could not be synced because of a merge conflict */ - 409: { - content: never; - }; - /** @description The branch could not be synced for some other reason */ - 422: { - content: never; - }; - }; - }; - /** Merge a branch */ - "repos/merge": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the base branch that the head will be merged into. */ - base: string; - /** @description The head to merge. This can be a branch name or a commit SHA1. */ - head: string; - /** @description Commit message to use for the merge commit. If omitted, a default message will be used. */ - commit_message?: string; - }; - }; - }; - responses: { - /** @description Successful Response (The resulting merge commit) */ - 201: { - content: { - "application/json": components["schemas"]["commit"]; - }; - }; - /** @description Response when already merged */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - /** @description Not Found when the base or head does not exist */ - 404: { - content: never; - }; - /** @description Conflict when there is a merge conflict */ - 409: { - content: never; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List milestones - * @description Lists milestones for a repository. - */ - "issues/list-milestones": { - parameters: { - query?: { - /** @description The state of the milestone. Either `open`, `closed`, or `all`. */ - state?: "open" | "closed" | "all"; - /** @description What to sort results by. Either `due_on` or `completeness`. */ - sort?: "due_on" | "completeness"; - /** @description The direction of the sort. Either `asc` or `desc`. */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["milestone"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a milestone - * @description Creates a milestone. - */ - "issues/create-milestone": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The title of the milestone. */ - title: string; - /** - * @description The state of the milestone. Either `open` or `closed`. - * @default open - * @enum {string} - */ - state?: "open" | "closed"; - /** @description A description of the milestone. */ - description?: string; - /** - * Format: date-time - * @description The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - due_on?: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/milestones/1 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["milestone"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a milestone - * @description Gets a milestone using the given milestone number. - */ - "issues/get-milestone": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - milestone_number: components["parameters"]["milestone-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["milestone"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a milestone - * @description Deletes a milestone using the given milestone number. - */ - "issues/delete-milestone": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - milestone_number: components["parameters"]["milestone-number"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** Update a milestone */ - "issues/update-milestone": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - milestone_number: components["parameters"]["milestone-number"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The title of the milestone. */ - title?: string; - /** - * @description The state of the milestone. Either `open` or `closed`. - * @default open - * @enum {string} - */ - state?: "open" | "closed"; - /** @description A description of the milestone. */ - description?: string; - /** - * Format: date-time - * @description The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - due_on?: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["milestone"]; - }; - }; - }; - }; - /** - * List labels for issues in a milestone - * @description Lists labels for issues in a milestone. - */ - "issues/list-labels-for-milestone": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - milestone_number: components["parameters"]["milestone-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["label"][]; - }; - }; - }; - }; - /** - * List repository notifications for the authenticated user - * @description Lists all notifications for the current user in the specified repository. - */ - "activity/list-repo-notifications-for-authenticated-user": { - parameters: { - query?: { - all?: components["parameters"]["all"]; - participating?: components["parameters"]["participating"]; - since?: components["parameters"]["since"]; - before?: components["parameters"]["before"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["thread"][]; - }; - }; - }; - }; - /** - * Mark repository notifications as read - * @description Marks all notifications in a repository as "read" for the current user. If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List repository notifications for the authenticated user](https://docs.github.com/rest/activity/notifications#list-repository-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. - */ - "activity/mark-repo-notifications-as-read": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * Format: date-time - * @description Describes the last point that notifications were checked. Anything updated since this time will not be marked as read. If you omit this parameter, all notifications are marked as read. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp. - */ - last_read_at?: string; - }; - }; - }; - responses: { - /** @description Response */ - 202: { - content: { - "application/json": { - message?: string; - url?: string; - }; - }; - }; - /** @description Reset Content */ - 205: { - content: never; - }; - }; - }; - /** - * Get a GitHub Pages site - * @description Gets information about a GitHub Pages site. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/get-pages": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["page"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update information about a GitHub Pages site - * @description Updates information for a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages). - * - * The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/update-information-about-pages-site": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Specify a custom domain for the repository. Sending a `null` value will remove the custom domain. For more about custom domains, see "[Using a custom domain with GitHub Pages](https://docs.github.com/pages/configuring-a-custom-domain-for-your-github-pages-site)." */ - cname?: string | null; - /** @description Specify whether HTTPS should be enforced for the repository. */ - https_enforced?: boolean; - /** - * @description The process by which the GitHub Pages site will be built. `workflow` means that the site is built by a custom GitHub Actions workflow. `legacy` means that the site is built by GitHub when changes are pushed to a specific branch. - * @enum {string} - */ - build_type?: "legacy" | "workflow"; - source?: - | ("gh-pages" | "master" | "master /docs") - | { - /** @description The repository branch used to publish your site's source files. */ - branch: string; - /** - * @description The repository directory that includes the source files for the Pages site. Allowed paths are `/` or `/docs`. - * @enum {string} - */ - path: "/" | "/docs"; - }; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 400: components["responses"]["bad_request"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Create a GitHub Pages site - * @description Configures a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages)." - * - * The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/create-pages-site": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The process in which the Page will be built. Possible values are `"legacy"` and `"workflow"`. - * @enum {string} - */ - build_type?: "legacy" | "workflow"; - /** @description The source branch and directory used to publish your Pages site. */ - source?: { - /** @description The repository branch used to publish your site's source files. */ - branch: string; - /** - * @description The repository directory that includes the source files for the Pages site. Allowed paths are `/` or `/docs`. Default: `/` - * @default / - * @enum {string} - */ - path?: "/" | "/docs"; - }; - } | null; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["page"]; - }; - }; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Delete a GitHub Pages site - * @description Deletes a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages). - * - * The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/delete-pages-site": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List GitHub Pages builds - * @description Lists builts of a GitHub Pages site. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/list-pages-builds": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["page-build"][]; - }; - }; - }; - }; - /** - * Request a GitHub Pages build - * @description You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures. - * - * Build requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes. - */ - "repos/request-pages-build": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["page-build-status"]; - }; - }; - }; - }; - /** - * Get latest Pages build - * @description Gets information about the single most recent build of a GitHub Pages site. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/get-latest-pages-build": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["page-build"]; - }; - }; - }; - }; - /** - * Get GitHub Pages build - * @description Gets information about a GitHub Pages build. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/get-pages-build": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - build_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["page-build"]; - }; - }; - }; - }; - /** - * Create a GitHub Pages deployment - * @description Create a GitHub Pages deployment for a repository. - * - * The authenticated user must have write permission to the repository. - */ - "repos/create-pages-deployment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The ID of an artifact that contains the .zip or .tar of static assets to deploy. The artifact belongs to the repository. Either `artifact_id` or `artifact_url` are required. */ - artifact_id?: number; - /** @description The URL of an artifact that contains the .zip or .tar of static assets to deploy. The artifact belongs to the repository. Either `artifact_id` or `artifact_url` are required. */ - artifact_url?: string; - /** - * @description The target environment for this GitHub Pages deployment. - * @default github-pages - */ - environment?: string; - /** - * @description A unique string that represents the version of the build for this deployment. - * @default GITHUB_SHA - */ - pages_build_version: string; - /** @description The OIDC token issued by GitHub Actions certifying the origin of the deployment. */ - oidc_token: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["page-deployment"]; - }; - }; - 400: components["responses"]["bad_request"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get the status of a GitHub Pages deployment - * @description Gets the current status of a GitHub Pages deployment. - * - * The authenticated user must have read permission for the GitHub Pages site. - */ - "repos/get-pages-deployment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pages_deployment_id: components["parameters"]["pages-deployment-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["pages-deployment-status"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Cancel a GitHub Pages deployment - * @description Cancels a GitHub Pages deployment. - * - * The authenticated user must have write permissions for the GitHub Pages site. - */ - "repos/cancel-pages-deployment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pages_deployment_id: components["parameters"]["pages-deployment-id"]; - }; - }; - responses: { - 204: components["responses"]["no_content"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get a DNS health check for GitHub Pages - * @description Gets a health check of the DNS settings for the `CNAME` record configured for a repository's GitHub Pages. - * - * The first request to this endpoint returns a `202 Accepted` status and starts an asynchronous background task to get the results for the domain. After the background task completes, subsequent requests to this endpoint return a `200 OK` status with the health check results in the response. - * - * The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "repos/get-pages-health-check": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["pages-health-check"]; - }; - }; - /** @description Empty response */ - 202: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - /** @description Custom domains are not available for GitHub Pages */ - 400: { - content: never; - }; - 404: components["responses"]["not_found"]; - /** @description There isn't a CNAME for this page */ - 422: { - content: never; - }; - }; - }; - /** - * Check if private vulnerability reporting is enabled for a repository - * @description Returns a boolean indicating whether or not private vulnerability reporting is enabled for the repository. For more information, see "[Evaluating the security settings of a repository](https://docs.github.com/code-security/security-advisories/working-with-repository-security-advisories/evaluating-the-security-settings-of-a-repository)". - */ - "repos/check-private-vulnerability-reporting": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Private vulnerability reporting status */ - 200: { - content: { - "application/json": { - /** @description Whether or not private vulnerability reporting is enabled for the repository. */ - enabled: boolean; - }; - }; - }; - 422: components["responses"]["bad_request"]; - }; - }; - /** - * Enable private vulnerability reporting for a repository - * @description Enables private vulnerability reporting for a repository. The authenticated user must have admin access to the repository. For more information, see "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)." - */ - "repos/enable-private-vulnerability-reporting": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - 204: components["responses"]["no_content"]; - 422: components["responses"]["bad_request"]; - }; - }; - /** - * Disable private vulnerability reporting for a repository - * @description Disables private vulnerability reporting for a repository. The authenticated user must have admin access to the repository. For more information, see "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)". - */ - "repos/disable-private-vulnerability-reporting": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - 204: components["responses"]["no_content"]; - 422: components["responses"]["bad_request"]; - }; - }; - /** - * List repository projects - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/list-for-repo": { - parameters: { - query?: { - /** @description Indicates the state of the projects to return. */ - state?: "open" | "closed" | "all"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["project"][]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Create a repository project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/create-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the project. */ - name: string; - /** @description The description of the project. */ - body?: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["project"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 410: components["responses"]["gone"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Get all custom property values for a repository - * @description Gets all custom property values that are set for a repository. - * Users with read access to the repository can use this endpoint. - */ - "repos/custom-properties-for-repos-get-repository-values": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["custom-property-value"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create or update custom property values for a repository - * @description Create new or update existing custom property values for a repository. - * Using a value of `null` for a custom property will remove or 'unset' the property value from the repository. - * - * Repository admins and other users with the repository-level "edit custom property values" fine-grained permission can use this endpoint. - */ - "repos/custom-properties-for-repos-create-or-update-repository-values": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description A list of custom property names and associated values to apply to the repositories. */ - properties: components["schemas"]["custom-property-value"][]; - }; - }; - }; - responses: { - /** @description No Content when custom property values are successfully created or updated */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List pull requests - * @description Lists pull requests in a specified repository. - * - * Draft pull requests are available in public repositories with GitHub - * Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing - * plans, and in public and private repositories with GitHub Team and GitHub Enterprise - * Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) - * in the GitHub Help documentation. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/list": { - parameters: { - query?: { - /** @description Either `open`, `closed`, or `all` to filter by state. */ - state?: "open" | "closed" | "all"; - /** @description Filter pulls by head user or head organization and branch name in the format of `user:ref-name` or `organization:ref-name`. For example: `github:new-script-format` or `octocat:test-branch`. */ - head?: string; - /** @description Filter pulls by base branch name. Example: `gh-pages`. */ - base?: string; - /** @description What to sort results by. `popularity` will sort by the number of comments. `long-running` will sort by date created and will limit the results to pull requests that have been open for more than a month and have had activity within the past month. */ - sort?: "created" | "updated" | "popularity" | "long-running"; - /** @description The direction of the sort. Default: `desc` when sort is `created` or sort is not specified, otherwise `asc`. */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["pull-request-simple"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Create a pull request - * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/create": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The title of the new pull request. Required unless `issue` is specified. */ - title?: string; - /** @description The name of the branch where your changes are implemented. For cross-repository pull requests in the same network, namespace `head` with a user like this: `username:branch`. */ - head: string; - /** - * Format: repo.nwo - * @description The name of the repository where the changes in the pull request were made. This field is required for cross-repository pull requests if both repositories are owned by the same organization. - * @example octo-org/octo-repo - */ - head_repo?: string; - /** @description The name of the branch you want the changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repository that requests a merge to a base of another repository. */ - base: string; - /** @description The contents of the pull request. */ - body?: string; - /** @description Indicates whether [maintainers can modify](https://docs.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request. */ - maintainer_can_modify?: boolean; - /** @description Indicates whether the pull request is a draft. See "[Draft Pull Requests](https://docs.github.com/articles/about-pull-requests#draft-pull-requests)" in the GitHub Help documentation to learn more. */ - draft?: boolean; - /** - * Format: int64 - * @description An issue in the repository to convert to a pull request. The issue title, body, and comments will become the title, body, and comments on the new pull request. Required unless `title` is specified. - * @example 1 - */ - issue?: number; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/pulls/1347 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["pull-request"]; - }; - }; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List review comments in a repository - * @description Lists review comments for all pull requests in a repository. By default, - * review comments are in ascending order by ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/list-review-comments-for-repo": { - parameters: { - query?: { - sort?: "created" | "updated" | "created_at"; - /** @description The direction to sort results. Ignored without `sort` parameter. */ - direction?: "asc" | "desc"; - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["pull-request-review-comment"][]; - }; - }; - }; - }; - /** - * Get a review comment for a pull request - * @description Provides details for a specified review comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/get-review-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["pull-request-review-comment"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a review comment for a pull request - * @description Deletes a review comment. - */ - "pulls/delete-review-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update a review comment for a pull request - * @description Edits the content of a specified review comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/update-review-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The text of the reply to the review comment. */ - body: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["pull-request-review-comment"]; - }; - }; - }; - }; - /** - * List reactions for a pull request review comment - * @description List the reactions to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request). - */ - "reactions/list-for-pull-request-review-comment": { - parameters: { - query?: { - /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a pull request review comment. */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["reaction"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create reaction for a pull request review comment - * @description Create a reaction to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request). A response with an HTTP `200` status means that you already added the reaction type to this pull request review comment. - */ - "reactions/create-for-pull-request-review-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the pull request review comment. - * @enum {string} - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - }; - responses: { - /** @description Reaction exists */ - 200: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - /** @description Reaction created */ - 201: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Delete a pull request comment reaction - * @description > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/pulls/comments/:comment_id/reactions/:reaction_id.` - * - * Delete a reaction to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request). - */ - "reactions/delete-for-pull-request-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment-id"]; - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get a pull request - * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists details of a pull request by providing its number. - * - * When you get, [create](https://docs.github.com/rest/pulls/pulls/#create-a-pull-request), or [edit](https://docs.github.com/rest/pulls/pulls#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - * - * The value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit. - * - * The value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request: - * - * * If merged as a [merge commit](https://docs.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit. - * * If merged via a [squash](https://docs.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch. - * * If [rebased](https://docs.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to. - * - * Pass the appropriate [media type](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types) to fetch diff and patch formats. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - * - **`application/vnd.github.diff`**: For more information, see "[git-diff](https://git-scm.com/docs/git-diff)" in the Git documentation. If a diff is corrupt, contact us through the [GitHub Support portal](https://support.github.com/). Include the repository name and pull request ID in your message. - */ - "pulls/get": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - responses: { - /** @description Pass the appropriate [media type](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types) to fetch diff and patch formats. */ - 200: { - content: { - "application/json": components["schemas"]["pull-request"]; - }; - }; - 304: components["responses"]["not_modified"]; - 404: components["responses"]["not_found"]; - 406: components["responses"]["unacceptable"]; - 500: components["responses"]["internal_error"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Update a pull request - * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/update": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The title of the pull request. */ - title?: string; - /** @description The contents of the pull request. */ - body?: string; - /** - * @description State of this Pull Request. Either `open` or `closed`. - * @enum {string} - */ - state?: "open" | "closed"; - /** @description The name of the branch you want your changes pulled into. This should be an existing branch on the current repository. You cannot update the base branch on a pull request to point to another repository. */ - base?: string; - /** @description Indicates whether [maintainers can modify](https://docs.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request. */ - maintainer_can_modify?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["pull-request"]; - }; - }; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Create a codespace from a pull request - * @description Creates a codespace owned by the authenticated user for the specified pull request. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/create-with-pr-for-authenticated-user": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The requested location for a new codespace. Best efforts are made to respect this upon creation. Assigned by IP if not provided. */ - location?: string; - /** - * @description The geographic area for this codespace. If not specified, the value is assigned by IP. This property replaces `location`, which is closing down. - * @enum {string} - */ - geo?: "EuropeWest" | "SoutheastAsia" | "UsEast" | "UsWest"; - /** @description IP for location auto-detection when proxying a request */ - client_ip?: string; - /** @description Machine type to use for this codespace */ - machine?: string; - /** @description Path to devcontainer.json config to use for this codespace */ - devcontainer_path?: string; - /** @description Whether to authorize requested permissions from devcontainer.json */ - multi_repo_permissions_opt_out?: boolean; - /** @description Working directory for this codespace */ - working_directory?: string; - /** @description Time in minutes before codespace stops from inactivity */ - idle_timeout_minutes?: number; - /** @description Display name for this codespace */ - display_name?: string; - /** @description Duration in minutes after codespace has gone idle in which it will be deleted. Must be integer minutes between 0 and 43200 (30 days). */ - retention_period_minutes?: number; - } | null; - }; - }; - responses: { - /** @description Response when the codespace was successfully created */ - 201: { - content: { - "application/json": components["schemas"]["codespace"]; - }; - }; - /** @description Response when the codespace creation partially failed but is being retried in the background */ - 202: { - content: { - "application/json": components["schemas"]["codespace"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List review comments on a pull request - * @description Lists all review comments for a specified pull request. By default, review comments - * are in ascending order by ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/list-review-comments": { - parameters: { - query?: { - sort?: components["parameters"]["sort"]; - /** @description The direction to sort results. Ignored without `sort` parameter. */ - direction?: "asc" | "desc"; - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["pull-request-review-comment"][]; - }; - }; - }; - }; - /** - * Create a review comment for a pull request - * @description Creates a review comment on the diff of a specified pull request. To add a regular comment to a pull request timeline, see "[Create an issue comment](https://docs.github.com/rest/issues/comments#create-an-issue-comment)." - * - * If your comment applies to more than one line in the pull request diff, you should use the parameters `line`, `side`, and optionally `start_line` and `start_side` in your request. - * - * The `position` parameter is closing down. If you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/create-review-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The text of the review comment. */ - body: string; - /** @description The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`. */ - commit_id: string; - /** @description The relative path to the file that necessitates a comment. */ - path: string; - /** - * @deprecated - * @description **This parameter is closing down. Use `line` instead**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. The position value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. - */ - position?: number; - /** - * @description In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://docs.github.com/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation. - * @enum {string} - */ - side?: "LEFT" | "RIGHT"; - /** @description **Required unless using `subject_type:file`**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to. */ - line?: number; - /** @description **Required when using multi-line comments unless using `in_reply_to`**. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://docs.github.com/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. */ - start_line?: number; - /** - * @description **Required when using multi-line comments unless using `in_reply_to`**. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://docs.github.com/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context. - * @enum {string} - */ - start_side?: "LEFT" | "RIGHT" | "side"; - /** - * @description The ID of the review comment to reply to. To find the ID of a review comment with ["List review comments on a pull request"](#list-review-comments-on-a-pull-request). When specified, all parameters other than `body` in the request body are ignored. - * @example 2 - */ - in_reply_to?: number; - /** - * @description The level at which the comment is targeted. - * @enum {string} - */ - subject_type?: "line" | "file"; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/1 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["pull-request-review-comment"]; - }; - }; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Create a reply for a review comment - * @description Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/create-reply-for-review-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - comment_id: components["parameters"]["comment-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The text of the review comment. */ - body: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/1 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["pull-request-review-comment"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List commits on a pull request - * @description Lists a maximum of 250 commits for a pull request. To receive a complete - * commit list for pull requests with more than 250 commits, use the [List commits](https://docs.github.com/rest/commits/commits#list-commits) - * endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/list-commits": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["commit"][]; - }; - }; - }; - }; - /** - * List pull requests files - * @description Lists the files in a specified pull request. - * - * > [!NOTE] - * > Responses include a maximum of 3000 files. The paginated response returns 30 files per page by default. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/list-files": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["diff-entry"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - 500: components["responses"]["internal_error"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Check if a pull request has been merged - * @description Checks if a pull request has been merged into the base branch. The HTTP status of the response indicates whether or not the pull request has been merged; the response body is empty. - */ - "pulls/check-if-merged": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - responses: { - /** @description Response if pull request has been merged */ - 204: { - content: never; - }; - /** @description Not Found if pull request has not been merged */ - 404: { - content: never; - }; - }; - }; - /** - * Merge a pull request - * @description Merges a pull request into the base branch. - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - */ - "pulls/merge": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description Title for the automatic commit message. */ - commit_title?: string; - /** @description Extra detail to append to automatic commit message. */ - commit_message?: string; - /** @description SHA that pull request head must match to allow merge. */ - sha?: string; - /** - * @description The merge method to use. - * @enum {string} - */ - merge_method?: "merge" | "squash" | "rebase"; - } | null; - }; - }; - responses: { - /** @description if merge was successful */ - 200: { - content: { - "application/json": components["schemas"]["pull-request-merge-result"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - /** @description Method Not Allowed if merge cannot be performed */ - 405: { - content: { - "application/json": { - message?: string; - documentation_url?: string; - }; - }; - }; - /** @description Conflict if sha was provided and pull request head did not match */ - 409: { - content: { - "application/json": { - message?: string; - documentation_url?: string; - }; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get all requested reviewers for a pull request - * @description Gets the users or teams whose review is requested for a pull request. Once a requested reviewer submits a review, they are no longer considered a requested reviewer. Their review will instead be returned by the [List reviews for a pull request](https://docs.github.com/rest/pulls/reviews#list-reviews-for-a-pull-request) operation. - */ - "pulls/list-requested-reviewers": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["pull-request-review-request"]; - }; - }; - }; - }; - /** - * Request reviewers for a pull request - * @description This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. - */ - "pulls/request-reviewers": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description An array of user `login`s that will be requested. */ - reviewers?: string[]; - /** @description An array of team `slug`s that will be requested. */ - team_reviewers?: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["pull-request-simple"]; - }; - }; - 403: components["responses"]["forbidden"]; - /** @description Unprocessable Entity if user is not a collaborator */ - 422: { - content: never; - }; - }; - }; - /** - * Remove requested reviewers from a pull request - * @description Removes review requests from a pull request for a given set of users and/or teams. - */ - "pulls/remove-requested-reviewers": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description An array of user `login`s that will be removed. */ - reviewers: string[]; - /** @description An array of team `slug`s that will be removed. */ - team_reviewers?: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["pull-request-simple"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List reviews for a pull request - * @description Lists all reviews for a specified pull request. The list of reviews returns in chronological order. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/list-reviews": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - responses: { - /** @description The list of reviews returns in chronological order. */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["pull-request-review"][]; - }; - }; - }; - }; - /** - * Create a review for a pull request - * @description Creates a review on a specified pull request. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * Pull request reviews created in the `PENDING` state are not submitted and therefore do not include the `submitted_at` property in the response. To create a pending review for a pull request, leave the `event` parameter blank. For more information about submitting a `PENDING` review, see "[Submit a review for a pull request](https://docs.github.com/rest/pulls/reviews#submit-a-review-for-a-pull-request)." - * - * > [!NOTE] - * > To comment on a specific line in a file, you need to first determine the position of that line in the diff. To see a pull request diff, add the `application/vnd.github.v3.diff` media type to the `Accept` header of a call to the [Get a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) endpoint. - * - * The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/create-review": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The SHA of the commit that needs a review. Not using the latest commit SHA may render your review comment outdated if a subsequent commit modifies the line you specify as the `position`. Defaults to the most recent commit in the pull request when you do not specify a value. */ - commit_id?: string; - /** @description **Required** when using `REQUEST_CHANGES` or `COMMENT` for the `event` parameter. The body text of the pull request review. */ - body?: string; - /** - * @description The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. By leaving this blank, you set the review action state to `PENDING`, which means you will need to [submit the pull request review](https://docs.github.com/rest/pulls/reviews#submit-a-review-for-a-pull-request) when you are ready. - * @enum {string} - */ - event?: "APPROVE" | "REQUEST_CHANGES" | "COMMENT"; - /** @description Use the following table to specify the location, destination, and contents of the draft review comment. */ - comments?: { - /** @description The relative path to the file that necessitates a review comment. */ - path: string; - /** @description The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. */ - position?: number; - /** @description Text of the review comment. */ - body: string; - /** @example 28 */ - line?: number; - /** @example RIGHT */ - side?: string; - /** @example 26 */ - start_line?: number; - /** @example LEFT */ - start_side?: string; - }[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["pull-request-review"]; - }; - }; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Get a review for a pull request - * @description Retrieves a pull request review by its ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/get-review": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - review_id: components["parameters"]["review-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["pull-request-review"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update a review for a pull request - * @description Updates the contents of a specified review summary comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/update-review": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - review_id: components["parameters"]["review-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The body text of the pull request review. */ - body: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["pull-request-review"]; - }; - }; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Delete a pending review for a pull request - * @description Deletes a pull request review that has not been submitted. Submitted reviews cannot be deleted. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/delete-pending-review": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - review_id: components["parameters"]["review-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["pull-request-review"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List comments for a pull request review - * @description Lists comments for a specific pull request review. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/list-comments-for-review": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - review_id: components["parameters"]["review-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["review-comment"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Dismiss a review for a pull request - * @description Dismisses a specified review on a pull request. - * - * > [!NOTE] - * > To dismiss a pull request review on a [protected branch](https://docs.github.com/rest/branches/branch-protection), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/dismiss-review": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - review_id: components["parameters"]["review-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The message for the pull request review dismissal */ - message: string; - /** - * @example "DISMISS" - * @enum {string} - */ - event?: "DISMISS"; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["pull-request-review"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Submit a review for a pull request - * @description Submits a pending review for a pull request. For more information about creating a pending review for a pull request, see "[Create a review for a pull request](https://docs.github.com/rest/pulls/reviews#create-a-review-for-a-pull-request)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "pulls/submit-review": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - review_id: components["parameters"]["review-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The body text of the pull request review */ - body?: string; - /** - * @description The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. When you leave this blank, the API returns _HTTP 422 (Unrecognizable entity)_ and sets the review action state to `PENDING`, which means you will need to re-submit the pull request review using a review action. - * @enum {string} - */ - event: "APPROVE" | "REQUEST_CHANGES" | "COMMENT"; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["pull-request-review"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Update a pull request branch - * @description Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch. - * Note: If making a request on behalf of a GitHub App you must also have permissions to write the contents of the head repository. - */ - "pulls/update-branch": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The expected SHA of the pull request's HEAD ref. This is the most recent commit on the pull request's branch. If the expected SHA does not match the pull request's HEAD, you will receive a `422 Unprocessable Entity` status. You can use the "[List commits](https://docs.github.com/rest/commits/commits#list-commits)" endpoint to find the most recent commit SHA. Default: SHA of the pull request's current HEAD ref. */ - expected_head_sha?: string; - } | null; - }; - }; - responses: { - /** @description Response */ - 202: { - content: { - "application/json": { - message?: string; - url?: string; - }; - }; - }; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a repository README - * @description Gets the preferred README for a repository. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw file contents. This is the default if you do not specify a media type. - * - **`application/vnd.github.html+json`**: Returns the README in HTML. Markup languages are rendered to HTML using GitHub's open-source [Markup library](https://github.com/github/markup). - */ - "repos/get-readme": { - parameters: { - query?: { - /** @description The name of the commit/branch/tag. Default: the repository’s default branch. */ - ref?: string; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["content-file"]; - }; - }; - 304: components["responses"]["not_modified"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a repository README for a directory - * @description Gets the README from a repository directory. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw file contents. This is the default if you do not specify a media type. - * - **`application/vnd.github.html+json`**: Returns the README in HTML. Markup languages are rendered to HTML using GitHub's open-source [Markup library](https://github.com/github/markup). - */ - "repos/get-readme-in-directory": { - parameters: { - query?: { - /** @description The name of the commit/branch/tag. Default: the repository’s default branch. */ - ref?: string; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The alternate path to look for a README file */ - dir: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["content-file"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List releases - * @description This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://docs.github.com/rest/repos/repos#list-repository-tags). - * - * Information about published releases are available to everyone. Only users with push access will receive listings for draft releases. - */ - "repos/list-releases": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["release"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a release - * @description Users with push access to the repository can create a release. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - */ - "repos/create-release": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the tag. */ - tag_name: string; - /** @description Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch. */ - target_commitish?: string; - /** @description The name of the release. */ - name?: string; - /** @description Text describing the contents of the tag. */ - body?: string; - /** - * @description `true` to create a draft (unpublished) release, `false` to create a published one. - * @default false - */ - draft?: boolean; - /** - * @description `true` to identify the release as a prerelease. `false` to identify the release as a full release. - * @default false - */ - prerelease?: boolean; - /** @description If specified, a discussion of the specified category is created and linked to the release. The value must be a category that already exists in the repository. For more information, see "[Managing categories for discussions in your repository](https://docs.github.com/discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository)." */ - discussion_category_name?: string; - /** - * @description Whether to automatically generate the name and body for this release. If `name` is specified, the specified name will be used; otherwise, a name will be automatically generated. If `body` is specified, the body will be pre-pended to the automatically generated notes. - * @default false - */ - generate_release_notes?: boolean; - /** - * @description Specifies whether this release should be set as the latest release for the repository. Drafts and prereleases cannot be set as latest. Defaults to `true` for newly published releases. `legacy` specifies that the latest release should be determined based on the release creation date and higher semantic version. - * @default true - * @enum {string} - */ - make_latest?: "true" | "false" | "legacy"; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/releases/1 */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["release"]; - }; - }; - /** @description Not Found if the discussion category name is invalid */ - 404: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a release asset - * @description To download the asset's binary content: - * - * - If within a browser, fetch the location specified in the `browser_download_url` key provided in the response. - * - Alternatively, set the `Accept` header of the request to - * [`application/octet-stream`](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * The API will either redirect the client to the location, or stream it directly if possible. - * API clients should handle both a `200` or `302` response. - */ - "repos/get-release-asset": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - asset_id: components["parameters"]["asset-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["release-asset"]; - }; - }; - 302: components["responses"]["found"]; - 404: components["responses"]["not_found"]; - }; - }; - /** Delete a release asset */ - "repos/delete-release-asset": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - asset_id: components["parameters"]["asset-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update a release asset - * @description Users with push access to the repository can edit a release asset. - */ - "repos/update-release-asset": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - asset_id: components["parameters"]["asset-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The file name of the asset. */ - name?: string; - /** @description An alternate short description of the asset. Used in place of the filename. */ - label?: string; - /** @example "uploaded" */ - state?: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["release-asset"]; - }; - }; - }; - }; - /** - * Generate release notes content for a release - * @description Generate a name and body describing a [release](https://docs.github.com/rest/releases/releases#get-a-release). The body content will be markdown formatted and contain information like the changes since last release and users who contributed. The generated release notes are not saved anywhere. They are intended to be generated and used when creating a new release. - */ - "repos/generate-release-notes": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The tag name for the release. This can be an existing tag or a new one. */ - tag_name: string; - /** @description Specifies the commitish value that will be the target for the release's tag. Required if the supplied tag_name does not reference an existing tag. Ignored if the tag_name already exists. */ - target_commitish?: string; - /** @description The name of the previous tag to use as the starting point for the release notes. Use to manually specify the range for the set of changes considered as part this release. */ - previous_tag_name?: string; - /** @description Specifies a path to a file in the repository containing configuration settings used for generating the release notes. If unspecified, the configuration file located in the repository at '.github/release.yml' or '.github/release.yaml' will be used. If that is not present, the default configuration will be used. */ - configuration_file_path?: string; - }; - }; - }; - responses: { - /** @description Name and body of generated release notes */ - 200: { - content: { - "application/json": components["schemas"]["release-notes-content"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get the latest release - * @description View the latest published full release for the repository. - * - * The latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published. - */ - "repos/get-latest-release": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["release"]; - }; - }; - }; - }; - /** - * Get a release by tag name - * @description Get a published release with the specified tag. - */ - "repos/get-release-by-tag": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description tag parameter */ - tag: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["release"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get a release - * @description Gets a public release with the specified release ID. - * - * > [!NOTE] - * > This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a hypermedia resource. For more information, see "[Getting started with the REST API](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#hypermedia)." - */ - "repos/get-release": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - release_id: components["parameters"]["release-id"]; - }; - }; - responses: { - /** @description **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a hypermedia resource. For more information, see "[Getting started with the REST API](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#hypermedia)." */ - 200: { - content: { - "application/json": components["schemas"]["release"]; - }; - }; - /** @description Unauthorized */ - 401: { - content: never; - }; - }; - }; - /** - * Delete a release - * @description Users with push access to the repository can delete a release. - */ - "repos/delete-release": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - release_id: components["parameters"]["release-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update a release - * @description Users with push access to the repository can edit a release. - */ - "repos/update-release": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - release_id: components["parameters"]["release-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The name of the tag. */ - tag_name?: string; - /** @description Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch. */ - target_commitish?: string; - /** @description The name of the release. */ - name?: string; - /** @description Text describing the contents of the tag. */ - body?: string; - /** @description `true` makes the release a draft, and `false` publishes the release. */ - draft?: boolean; - /** @description `true` to identify the release as a prerelease, `false` to identify the release as a full release. */ - prerelease?: boolean; - /** - * @description Specifies whether this release should be set as the latest release for the repository. Drafts and prereleases cannot be set as latest. Defaults to `true` for newly published releases. `legacy` specifies that the latest release should be determined based on the release creation date and higher semantic version. - * @default true - * @enum {string} - */ - make_latest?: "true" | "false" | "legacy"; - /** @description If specified, a discussion of the specified category is created and linked to the release. The value must be a category that already exists in the repository. If there is already a discussion linked to the release, this parameter is ignored. For more information, see "[Managing categories for discussions in your repository](https://docs.github.com/discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository)." */ - discussion_category_name?: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["release"]; - }; - }; - /** @description Not Found if the discussion category name is invalid */ - 404: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - }; - /** List release assets */ - "repos/list-release-assets": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - release_id: components["parameters"]["release-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["release-asset"][]; - }; - }; - }; - }; - /** - * Upload a release asset - * @description This endpoint makes use of a [Hypermedia relation](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in - * the response of the [Create a release endpoint](https://docs.github.com/rest/releases/releases#create-a-release) to upload a release asset. - * - * You need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint. - * - * Most libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example: - * - * `application/zip` - * - * GitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example, - * you'll still need to pass your authentication to be able to upload an asset. - * - * When an upstream failure occurs, you will receive a `502 Bad Gateway` status. This may leave an empty asset with a state of `starter`. It can be safely deleted. - * - * **Notes:** - * * GitHub renames asset filenames that have special characters, non-alphanumeric characters, and leading or trailing periods. The "[List release assets](https://docs.github.com/rest/releases/assets#list-release-assets)" - * endpoint lists the renamed filenames. For more information and help, contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api). - * * To find the `release_id` query the [`GET /repos/{owner}/{repo}/releases/latest` endpoint](https://docs.github.com/rest/releases/releases#get-the-latest-release). - * * If you upload an asset with the same filename as another uploaded asset, you'll receive an error and must delete the old file before you can re-upload the new asset. - */ - "repos/upload-release-asset": { - parameters: { - query: { - name: string; - label?: string; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - release_id: components["parameters"]["release-id"]; - }; - }; - requestBody?: { - content: { - "application/octet-stream": string; - }; - }; - responses: { - /** @description Response for successful upload */ - 201: { - content: { - "application/json": components["schemas"]["release-asset"]; - }; - }; - /** @description Response if you upload an asset with the same filename as another uploaded asset */ - 422: { - content: never; - }; - }; - }; - /** - * List reactions for a release - * @description List the reactions to a [release](https://docs.github.com/rest/releases/releases#get-a-release). - */ - "reactions/list-for-release": { - parameters: { - query?: { - /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a release. */ - content?: "+1" | "laugh" | "heart" | "hooray" | "rocket" | "eyes"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - release_id: components["parameters"]["release-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["reaction"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create reaction for a release - * @description Create a reaction to a [release](https://docs.github.com/rest/releases/releases#get-a-release). A response with a `Status: 200 OK` means that you already added the reaction type to this release. - */ - "reactions/create-for-release": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - release_id: components["parameters"]["release-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the release. - * @enum {string} - */ - content: "+1" | "laugh" | "heart" | "hooray" | "rocket" | "eyes"; - }; - }; - }; - responses: { - /** @description Reaction exists */ - 200: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - /** @description Reaction created */ - 201: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Delete a release reaction - * @description > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/releases/:release_id/reactions/:reaction_id`. - * - * Delete a reaction to a [release](https://docs.github.com/rest/releases/releases#get-a-release). - */ - "reactions/delete-for-release": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - release_id: components["parameters"]["release-id"]; - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Get rules for a branch - * @description Returns all active rules that apply to the specified branch. The branch does not need to exist; rules that would apply - * to a branch with that name will be returned. All active rules that apply will be returned, regardless of the level - * at which they are configured (e.g. repository or organization). Rules in rulesets with "evaluate" or "disabled" - * enforcement statuses are not returned. - */ - "repos/get-branch-rules": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repository-rule-detailed"][]; - }; - }; - }; - }; - /** - * Get all repository rulesets - * @description Get all the rulesets for a repository. - */ - "repos/get-repo-rulesets": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - /** @description Include rulesets configured at higher levels that apply to this repository */ - includes_parents?: boolean; - targets?: components["parameters"]["ruleset-targets"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repository-ruleset"][]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Create a repository ruleset - * @description Create a ruleset for a repository. - */ - "repos/create-repo-ruleset": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - /** @description Request body */ - requestBody: { - content: { - "application/json": { - /** @description The name of the ruleset. */ - name: string; - /** - * @description The target of the ruleset - * @default branch - * @enum {string} - */ - target?: "branch" | "tag" | "push"; - enforcement: components["schemas"]["repository-rule-enforcement"]; - /** @description The actors that can bypass the rules in this ruleset */ - bypass_actors?: components["schemas"]["repository-ruleset-bypass-actor"][]; - conditions?: components["schemas"]["repository-ruleset-conditions"]; - /** @description An array of rules within the ruleset. */ - rules?: components["schemas"]["repository-rule"][]; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["repository-ruleset"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List repository rule suites - * @description Lists suites of rule evaluations at the repository level. - * For more information, see "[Managing rulesets for a repository](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#viewing-insights-for-rulesets)." - */ - "repos/get-repo-rule-suites": { - parameters: { - query?: { - ref?: components["parameters"]["ref-in-query"]; - time_period?: components["parameters"]["time-period"]; - actor_name?: components["parameters"]["actor-name-in-query"]; - rule_suite_result?: components["parameters"]["rule-suite-result"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["rule-suites"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get a repository rule suite - * @description Gets information about a suite of rule evaluations from within a repository. - * For more information, see "[Managing rulesets for a repository](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#viewing-insights-for-rulesets)." - */ - "repos/get-repo-rule-suite": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - rule_suite_id: components["parameters"]["rule-suite-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["rule-suite"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get a repository ruleset - * @description Get a ruleset for a repository. - * - * **Note:** To prevent leaking sensitive information, the `bypass_actors` property is only returned if the user - * making the API request has write access to the ruleset. - */ - "repos/get-repo-ruleset": { - parameters: { - query?: { - /** @description Include rulesets configured at higher levels that apply to this repository */ - includes_parents?: boolean; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The ID of the ruleset. */ - ruleset_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repository-ruleset"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Update a repository ruleset - * @description Update a ruleset for a repository. - */ - "repos/update-repo-ruleset": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The ID of the ruleset. */ - ruleset_id: number; - }; - }; - /** @description Request body */ - requestBody?: { - content: { - "application/json": { - /** @description The name of the ruleset. */ - name?: string; - /** - * @description The target of the ruleset - * @enum {string} - */ - target?: "branch" | "tag" | "push"; - enforcement?: components["schemas"]["repository-rule-enforcement"]; - /** @description The actors that can bypass the rules in this ruleset */ - bypass_actors?: components["schemas"]["repository-ruleset-bypass-actor"][]; - conditions?: components["schemas"]["repository-ruleset-conditions"]; - /** @description An array of rules within the ruleset. */ - rules?: components["schemas"]["repository-rule"][]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repository-ruleset"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Delete a repository ruleset - * @description Delete a ruleset for a repository. - */ - "repos/delete-repo-ruleset": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The ID of the ruleset. */ - ruleset_id: number; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get repository ruleset history - * @description Get the history of a repository ruleset. - */ - "repos/get-repo-ruleset-history": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The ID of the ruleset. */ - ruleset_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["ruleset-version"][]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get repository ruleset version - * @description Get a version of a repository ruleset. - */ - "repos/get-repo-ruleset-version": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** @description The ID of the ruleset. */ - ruleset_id: number; - /** @description The ID of the version */ - version_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["ruleset-version-with-state"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List secret scanning alerts for a repository - * @description Lists secret scanning alerts for an eligible repository, from newest to oldest. - * - * The authenticated user must be an administrator for the repository or for the organization that owns the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - "secret-scanning/list-alerts-for-repo": { - parameters: { - query?: { - state?: components["parameters"]["secret-scanning-alert-state"]; - secret_type?: components["parameters"]["secret-scanning-alert-secret-type"]; - resolution?: components["parameters"]["secret-scanning-alert-resolution"]; - sort?: components["parameters"]["secret-scanning-alert-sort"]; - direction?: components["parameters"]["direction"]; - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - before?: components["parameters"]["secret-scanning-pagination-before-org-repo"]; - after?: components["parameters"]["secret-scanning-pagination-after-org-repo"]; - validity?: components["parameters"]["secret-scanning-alert-validity"]; - is_publicly_leaked?: components["parameters"]["secret-scanning-alert-publicly-leaked"]; - is_multi_repo?: components["parameters"]["secret-scanning-alert-multi-repo"]; - hide_secret?: components["parameters"]["secret-scanning-alert-hide-secret"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["secret-scanning-alert"][]; - }; - }; - /** @description Repository is public or secret scanning is disabled for the repository */ - 404: { - content: never; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get a secret scanning alert - * @description Gets a single secret scanning alert detected in an eligible repository. - * - * The authenticated user must be an administrator for the repository or for the organization that owns the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - "secret-scanning/get-alert": { - parameters: { - query?: { - hide_secret?: components["parameters"]["secret-scanning-alert-hide-secret"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["alert-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["secret-scanning-alert"]; - }; - }; - 304: components["responses"]["not_modified"]; - /** @description Repository is public, or secret scanning is disabled for the repository, or the resource is not found */ - 404: { - content: never; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Update a secret scanning alert - * @description Updates the status of a secret scanning alert in an eligible repository. - * - * The authenticated user must be an administrator for the repository or for the organization that owns the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - "secret-scanning/update-alert": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["alert-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - state: components["schemas"]["secret-scanning-alert-state"]; - resolution?: components["schemas"]["secret-scanning-alert-resolution"]; - resolution_comment?: components["schemas"]["secret-scanning-alert-resolution-comment"]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["secret-scanning-alert"]; - }; - }; - /** @description Bad request, resolution comment is invalid or the resolution was not changed. */ - 400: { - content: never; - }; - /** @description Repository is public, or secret scanning is disabled for the repository, or the resource is not found */ - 404: { - content: never; - }; - /** @description State does not match the resolution or resolution comment */ - 422: { - content: never; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List locations for a secret scanning alert - * @description Lists all locations for a given secret scanning alert for an eligible repository. - * - * The authenticated user must be an administrator for the repository or for the organization that owns the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - "secret-scanning/list-locations-for-alert": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["alert-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["secret-scanning-location"][]; - }; - }; - /** @description Repository is public, or secret scanning is disabled for the repository, or the resource is not found */ - 404: { - content: never; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Create a push protection bypass - * @description Creates a bypass for a previously push protected secret. - * - * The authenticated user must be the original author of the committed secret. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "secret-scanning/create-push-protection-bypass": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - reason: components["schemas"]["secret-scanning-push-protection-bypass-reason"]; - placeholder_id: components["schemas"]["secret-scanning-push-protection-bypass-placeholder-id"]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["secret-scanning-push-protection-bypass"]; - }; - }; - /** @description User does not have enough permissions to perform this action. */ - 403: { - content: never; - }; - /** @description Placeholder ID not found, or push protection is disabled on this repository. */ - 404: { - content: never; - }; - /** @description Bad request, input data missing or incorrect. */ - 422: { - content: never; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get secret scanning scan history for a repository - * @description Lists the latest default incremental and backfill scans by type for a repository. Scans from Copilot Secret Scanning are not included. - * - * > [!NOTE] - * > This endpoint requires [GitHub Advanced Security](https://docs.github.com/get-started/learning-about-github/about-github-advanced-security)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - "secret-scanning/get-scan-history": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["secret-scanning-scan-history"]; - }; - }; - /** @description Repository does not have GitHub Advanced Security or secret scanning enabled */ - 404: { - content: never; - }; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List repository security advisories - * @description Lists security advisories in a repository. - * - * The authenticated user can access unpublished security advisories from a repository if they are a security manager or administrator of that repository, or if they are a collaborator on any security advisory. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:read` scope to to get a published security advisory in a private repository, or any unpublished security advisory that the authenticated user has access to. - */ - "security-advisories/list-repository-advisories": { - parameters: { - query?: { - direction?: components["parameters"]["direction"]; - /** @description The property to sort the results by. */ - sort?: "created" | "updated" | "published"; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - /** @description The number of advisories to return per page. For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." */ - per_page?: number; - /** @description Filter by state of the repository advisories. Only advisories of this state will be returned. */ - state?: "triage" | "draft" | "published" | "closed"; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repository-advisory"][]; - }; - }; - 400: components["responses"]["bad_request"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a repository security advisory - * @description Creates a new repository security advisory. - * - * In order to create a draft repository security advisory, the authenticated user must be a security manager or administrator of that repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:write` scope to use this endpoint. - */ - "security-advisories/create-repository-advisory": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["repository-advisory-create"]; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["repository-advisory"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Privately report a security vulnerability - * @description Report a security vulnerability to the maintainers of the repository. - * See "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)" for more information about private vulnerability reporting. - */ - "security-advisories/create-private-vulnerability-report": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["private-vulnerability-report-create"]; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["repository-advisory"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a repository security advisory - * @description Get a repository security advisory using its GitHub Security Advisory (GHSA) identifier. - * - * Anyone can access any published security advisory on a public repository. - * - * The authenticated user can access an unpublished security advisory from a repository if they are a security manager or administrator of that repository, or if they are a - * collaborator on the security advisory. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:read` scope to to get a published security advisory in a private repository, or any unpublished security advisory that the authenticated user has access to. - */ - "security-advisories/get-repository-advisory": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ghsa_id: components["parameters"]["ghsa_id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repository-advisory"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update a repository security advisory - * @description Update a repository security advisory using its GitHub Security Advisory (GHSA) identifier. - * - * In order to update any security advisory, the authenticated user must be a security manager or administrator of that repository, - * or a collaborator on the repository security advisory. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:write` scope to use this endpoint. - */ - "security-advisories/update-repository-advisory": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ghsa_id: components["parameters"]["ghsa_id"]; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["repository-advisory-update"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repository-advisory"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - /** @description Validation failed, or the endpoint has been spammed. */ - 422: { - content: { - "application/json": components["schemas"]["validation-error"]; - }; - }; - }; - }; - /** - * Request a CVE for a repository security advisory - * @description If you want a CVE identification number for the security vulnerability in your project, and don't already have one, you can request a CVE identification number from GitHub. For more information see "[Requesting a CVE identification number](https://docs.github.com/code-security/security-advisories/repository-security-advisories/publishing-a-repository-security-advisory#requesting-a-cve-identification-number-optional)." - * - * You may request a CVE for public repositories, but cannot do so for private repositories. - * - * In order to request a CVE for a repository security advisory, the authenticated user must be a security manager or administrator of that repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:write` scope to use this endpoint. - */ - "security-advisories/create-repository-advisory-cve-request": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ghsa_id: components["parameters"]["ghsa_id"]; - }; - }; - responses: { - 202: components["responses"]["accepted"]; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Create a temporary private fork - * @description Create a temporary private fork to collaborate on fixing a security vulnerability in your repository. - * - * > [!NOTE] - * > Forking a repository happens asynchronously. You may have to wait up to 5 minutes before you can access the fork. - */ - "security-advisories/create-fork": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ghsa_id: components["parameters"]["ghsa_id"]; - }; - }; - responses: { - /** @description Response */ - 202: { - content: { - "application/json": components["schemas"]["full-repository"]; - }; - }; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List stargazers - * @description Lists the people that have starred the repository. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.star+json`**: Includes a timestamp of when the star was created. - */ - "activity/list-stargazers-for-repo": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": - | components["schemas"]["simple-user"][] - | components["schemas"]["stargazer"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get the weekly commit activity - * @description Returns a weekly aggregate of the number of additions and deletions pushed to a repository. - * - * > [!NOTE] - * > This endpoint can only be used for repositories with fewer than 10,000 commits. If the repository contains 10,000 or more commits, a 422 status code will be returned. - */ - "repos/get-code-frequency-stats": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Returns a weekly aggregate of the number of additions and deletions pushed to a repository. */ - 200: { - content: { - "application/json": components["schemas"]["code-frequency-stat"][]; - }; - }; - 202: components["responses"]["accepted"]; - 204: components["responses"]["no_content"]; - /** @description Repository contains more than 10,000 commits */ - 422: { - content: never; - }; - }; - }; - /** - * Get the last year of commit activity - * @description Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`. - */ - "repos/get-commit-activity-stats": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["commit-activity"][]; - }; - }; - 202: components["responses"]["accepted"]; - 204: components["responses"]["no_content"]; - }; - }; - /** - * Get all contributor commit activity - * @description - * Returns the `total` number of commits authored by the contributor. In addition, the response includes a Weekly Hash (`weeks` array) with the following information: - * - * * `w` - Start of the week, given as a [Unix timestamp](https://en.wikipedia.org/wiki/Unix_time). - * * `a` - Number of additions - * * `d` - Number of deletions - * * `c` - Number of commits - * - * > [!NOTE] - * > This endpoint will return `0` values for all addition and deletion counts in repositories with 10,000 or more commits. - */ - "repos/get-contributors-stats": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["contributor-activity"][]; - }; - }; - 202: components["responses"]["accepted"]; - 204: components["responses"]["no_content"]; - }; - }; - /** - * Get the weekly commit count - * @description Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`. - * - * The array order is oldest week (index 0) to most recent week. - * - * The most recent week is seven days ago at UTC midnight to today at UTC midnight. - */ - "repos/get-participation-stats": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description The array order is oldest week (index 0) to most recent week. */ - 200: { - content: { - "application/json": components["schemas"]["participation-stats"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get the hourly commit count for each day - * @description Each array contains the day number, hour number, and number of commits: - * - * * `0-6`: Sunday - Saturday - * * `0-23`: Hour of day - * * Number of commits - * - * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits. - */ - "repos/get-punch-card-stats": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits. */ - 200: { - content: { - "application/json": components["schemas"]["code-frequency-stat"][]; - }; - }; - 204: components["responses"]["no_content"]; - }; - }; - /** - * Create a commit status - * @description Users with push access in a repository can create commit statuses for a given SHA. - * - * Note: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error. - */ - "repos/create-commit-status": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - sha: string; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The state of the status. - * @enum {string} - */ - state: "error" | "failure" | "pending" | "success"; - /** - * @description The target URL to associate with this status. This URL will be linked from the GitHub UI to allow users to easily see the source of the status. - * For example, if your continuous integration system is posting build status, you would want to provide the deep link for the build output for this specific SHA: - * `http://ci.example.com/user/repo/build/sha` - */ - target_url?: string | null; - /** @description A short description of the status. */ - description?: string | null; - /** - * @description A string label to differentiate this status from the status of other systems. This field is case-insensitive. - * @default default - */ - context?: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["status"]; - }; - }; - }; - }; - /** - * List watchers - * @description Lists the people watching the specified repository. - */ - "activity/list-watchers-for-repo": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - }; - /** - * Get a repository subscription - * @description Gets information about whether the authenticated user is subscribed to the repository. - */ - "activity/get-repo-subscription": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description if you subscribe to the repository */ - 200: { - content: { - "application/json": components["schemas"]["repository-subscription"]; - }; - }; - 403: components["responses"]["forbidden"]; - /** @description Not Found if you don't subscribe to the repository */ - 404: { - content: never; - }; - }; - }; - /** - * Set a repository subscription - * @description If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://docs.github.com/rest/activity/watching#delete-a-repository-subscription) completely. - */ - "activity/set-repo-subscription": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description Determines if notifications should be received from this repository. */ - subscribed?: boolean; - /** @description Determines if all notifications should be blocked from this repository. */ - ignored?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["repository-subscription"]; - }; - }; - }; - }; - /** - * Delete a repository subscription - * @description This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://docs.github.com/rest/activity/watching#set-a-repository-subscription). - */ - "activity/delete-repo-subscription": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** List repository tags */ - "repos/list-tags": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["tag"][]; - }; - }; - }; - }; - /** - * Closing down - List tag protection states for a repository - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed after August 30, 2024. Use the "[Repository Rulesets](https://docs.github.com/rest/repos/rules#get-all-repository-rulesets)" endpoint instead. - * - * This returns the tag protection states of a repository. - * - * This information is only available to repository administrators. - */ - "repos/list-tag-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["tag-protection"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Closing down - Create a tag protection state for a repository - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed after August 30, 2024. Use the "[Repository Rulesets](https://docs.github.com/rest/repos/rules#create-a-repository-ruleset)" endpoint instead. - * - * This creates a tag protection state for a repository. - * This endpoint is only available to repository administrators. - */ - "repos/create-tag-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description An optional glob pattern to match against when enforcing tag protection. */ - pattern: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["tag-protection"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Closing down - Delete a tag protection state for a repository - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed after August 30, 2024. Use the "[Repository Rulesets](https://docs.github.com/rest/repos/rules#delete-a-repository-ruleset)" endpoint instead. - * - * This deletes a tag protection state for a repository. - * This endpoint is only available to repository administrators. - */ - "repos/delete-tag-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - tag_protection_id: components["parameters"]["tag-protection-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Download a repository archive (tar) - * @description Gets a redirect URL to download a tar archive for a repository. If you omit `:ref`, the repository’s default branch (usually - * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use - * the `Location` header to make a second `GET` request. - * - * > [!NOTE] - * > For private repositories, these links are temporary and expire after five minutes. - */ - "repos/download-tarball-archive": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ref: string; - }; - }; - responses: { - /** @description Response */ - 302: { - headers: { - /** @example https://codeload.github.com/me/myprivate/legacy.zip/master?login=me&token=thistokenexpires */ - Location?: string; - }; - content: never; - }; - }; - }; - /** - * List repository teams - * @description Lists the teams that have access to the specified repository and that are also visible to the authenticated user. - * - * For a public repository, a team is listed only if that team added the public repository explicitly. - * - * OAuth app tokens and personal access tokens (classic) need the `public_repo` or `repo` scope to use this endpoint with a public repository, and `repo` scope to use this endpoint with a private repository. - */ - "repos/list-teams": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["team"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** Get all repository topics */ - "repos/get-all-topics": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["topic"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** Replace all repository topics */ - "repos/replace-all-topics": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description An array of topics to add to the repository. Pass one or more topics to _replace_ the set of existing topics. Send an empty array (`[]`) to clear all topics from the repository. **Note:** Topic `names` will be saved as lowercase. */ - names: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["topic"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * Get repository clones - * @description Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. - */ - "repos/get-clones": { - parameters: { - query?: { - per?: components["parameters"]["per"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["clone-traffic"]; - }; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get top referral paths - * @description Get the top 10 popular contents over the last 14 days. - */ - "repos/get-top-paths": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["content-traffic"][]; - }; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get top referral sources - * @description Get the top 10 referrers over the last 14 days. - */ - "repos/get-top-referrers": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["referrer-traffic"][]; - }; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get page views - * @description Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. - */ - "repos/get-views": { - parameters: { - query?: { - per?: components["parameters"]["per"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["view-traffic"]; - }; - }; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Transfer a repository - * @description A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://docs.github.com/articles/about-repository-transfers/). - */ - "repos/transfer": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The username or organization name the repository will be transferred to. */ - new_owner: string; - /** @description The new name to be given to the repository. */ - new_name?: string; - /** @description ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories. */ - team_ids?: number[]; - }; - }; - }; - responses: { - /** @description Response */ - 202: { - content: { - "application/json": components["schemas"]["minimal-repository"]; - }; - }; - }; - }; - /** - * Check if vulnerability alerts are enabled for a repository - * @description Shows whether dependency alerts are enabled or disabled for a repository. The authenticated user must have admin read access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - "repos/check-vulnerability-alerts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response if repository is enabled with vulnerability alerts */ - 204: { - content: never; - }; - /** @description Not Found if repository is not enabled with vulnerability alerts */ - 404: { - content: never; - }; - }; - }; - /** - * Enable vulnerability alerts - * @description Enables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - "repos/enable-vulnerability-alerts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Disable vulnerability alerts - * @description Disables dependency alerts and the dependency graph for a repository. - * The authenticated user must have admin access to the repository. For more information, - * see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - "repos/disable-vulnerability-alerts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Download a repository archive (zip) - * @description Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually - * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use - * the `Location` header to make a second `GET` request. - * - * > [!NOTE] - * > For private repositories, these links are temporary and expire after five minutes. If the repository is empty, you will receive a 404 when you follow the redirect. - */ - "repos/download-zipball-archive": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ref: string; - }; - }; - responses: { - /** @description Response */ - 302: { - headers: { - /** @example https://codeload.github.com/me/myprivate/legacy.zip/master?login=me&token=thistokenexpires */ - Location?: string; - }; - content: never; - }; - }; - }; - /** - * Create a repository using a template - * @description Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. If the repository is not public, the authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/repos/repos#get-a-repository) endpoint and check that the `is_template` key is `true`. - * - * OAuth app tokens and personal access tokens (classic) need the `public_repo` or `repo` scope to create a public repository, and `repo` scope to create a private repository. - */ - "repos/create-using-template": { - parameters: { - path: { - /** @description The account owner of the template repository. The name is not case sensitive. */ - template_owner: string; - /** @description The name of the template repository without the `.git` extension. The name is not case sensitive. */ - template_repo: string; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The organization or person who will own the new repository. To create a new repository in an organization, the authenticated user must be a member of the specified organization. */ - owner?: string; - /** @description The name of the new repository. */ - name: string; - /** @description A short description of the new repository. */ - description?: string; - /** - * @description Set to `true` to include the directory structure and files from all branches in the template repository, and not just the default branch. Default: `false`. - * @default false - */ - include_all_branches?: boolean; - /** - * @description Either `true` to create a new private repository or `false` to create a new public one. - * @default false - */ - private?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["full-repository"]; - }; - }; - }; - }; - /** - * List public repositories - * @description Lists all public repositories in the order that they were created. - * - * Note: - * - For GitHub Enterprise Server, this endpoint will only list repositories available to all users on the enterprise. - * - Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of repositories. - */ - "repos/list-public": { - parameters: { - query?: { - since?: components["parameters"]["since-repo"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - /** @example ; rel="next" */ - Link?: string; - }; - content: { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Search code - * @description Searches for query terms inside of a file. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery) repository, your query would look something like this: - * - * `q=addClass+in:file+language:js+repo:jquery/jquery` - * - * This query searches for the keyword `addClass` within a file's contents. The query limits the search to files where the language is JavaScript in the `jquery/jquery` repository. - * - * Considerations for code search: - * - * Due to the complexity of searching code, there are a few restrictions on how searches are performed: - * - * * Only the _default branch_ is considered. In most cases, this will be the `master` branch. - * * Only files smaller than 384 KB are searchable. - * * You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing - * language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is. - * - * This endpoint requires you to authenticate and limits you to 10 requests per minute. - */ - "search/code": { - parameters: { - query: { - /** @description The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). See "[Searching code](https://docs.github.com/search-github/searching-on-github/searching-code)" for a detailed list of qualifiers. */ - q: string; - /** - * @deprecated - * @description **This field is closing down.** Sorts the results of your query. Can only be `indexed`, which indicates how recently a file has been indexed by the GitHub search infrastructure. Default: [best match](https://docs.github.com/rest/search/search#ranking-search-results) - */ - sort?: "indexed"; - /** - * @deprecated - * @description **This field is closing down.** Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`. - */ - order?: "desc" | "asc"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - incomplete_results: boolean; - items: components["schemas"]["code-search-result-item"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Search commits - * @description Find commits via various criteria on the default branch (usually `main`). This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match - * metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this: - * - * `q=repo:octocat/Spoon-Knife+css` - */ - "search/commits": { - parameters: { - query: { - /** @description The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). See "[Searching commits](https://docs.github.com/search-github/searching-on-github/searching-commits)" for a detailed list of qualifiers. */ - q: string; - /** @description Sorts the results of your query by `author-date` or `committer-date`. Default: [best match](https://docs.github.com/rest/search/search#ranking-search-results) */ - sort?: "author-date" | "committer-date"; - order?: components["parameters"]["order"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - incomplete_results: boolean; - items: components["schemas"]["commit-search-result-item"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - }; - }; - /** - * Search issues and pull requests - * @description Find issues by state and keyword. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted - * search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this. - * - * `q=windows+label:bug+language:python+state:open&sort=created&order=asc` - * - * This query searches for the keyword `windows`, within any open issue that is labeled as `bug`. The search runs across repositories whose primary language is Python. The results are sorted by creation date in ascending order, which means the oldest issues appear first in the search results. - * - * > [!NOTE] - * > For requests made by GitHub Apps with a user access token, you can't retrieve a combination of issues and pull requests in a single query. Requests that don't include the `is:issue` or `is:pull-request` qualifier will receive an HTTP `422 Unprocessable Entity` response. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about the `is` qualifier, see "[Searching only issues or pull requests](https://docs.github.com/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests)." - */ - "search/issues-and-pull-requests": { - parameters: { - query: { - /** @description The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). See "[Searching issues and pull requests](https://docs.github.com/search-github/searching-on-github/searching-issues-and-pull-requests)" for a detailed list of qualifiers. */ - q: string; - /** @description Sorts the results of your query by the number of `comments`, `reactions`, `reactions-+1`, `reactions--1`, `reactions-smile`, `reactions-thinking_face`, `reactions-heart`, `reactions-tada`, or `interactions`. You can also sort results by how recently the items were `created` or `updated`, Default: [best match](https://docs.github.com/rest/search/search#ranking-search-results) */ - sort?: - | "comments" - | "reactions" - | "reactions-+1" - | "reactions--1" - | "reactions-smile" - | "reactions-thinking_face" - | "reactions-heart" - | "reactions-tada" - | "interactions" - | "created" - | "updated"; - order?: components["parameters"]["order"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - advanced_search?: components["parameters"]["issues-advanced-search"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - incomplete_results: boolean; - items: components["schemas"]["issue-search-result-item"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Search labels - * @description Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this: - * - * `q=bug+defect+enhancement&repository_id=64778136` - * - * The labels that best match the query appear first in the search results. - */ - "search/labels": { - parameters: { - query: { - /** @description The id of the repository. */ - repository_id: number; - /** @description The search keywords. This endpoint does not accept qualifiers in the query. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). */ - q: string; - /** @description Sorts the results of your query by when the label was `created` or `updated`. Default: [best match](https://docs.github.com/rest/search/search#ranking-search-results) */ - sort?: "created" | "updated"; - order?: components["parameters"]["order"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - incomplete_results: boolean; - items: components["schemas"]["label-search-result-item"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Search repositories - * @description Find repositories via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to search for popular Tetris repositories written in assembly code, your query might look like this: - * - * `q=tetris+language:assembly&sort=stars&order=desc` - * - * This query searches for repositories with the word `tetris` in the name, the description, or the README. The results are limited to repositories where the primary language is assembly. The results are sorted by stars in descending order, so that the most popular repositories appear first in the search results. - */ - "search/repos": { - parameters: { - query: { - /** @description The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). See "[Searching for repositories](https://docs.github.com/articles/searching-for-repositories/)" for a detailed list of qualifiers. */ - q: string; - /** @description Sorts the results of your query by number of `stars`, `forks`, or `help-wanted-issues` or how recently the items were `updated`. Default: [best match](https://docs.github.com/rest/search/search#ranking-search-results) */ - sort?: "stars" | "forks" | "help-wanted-issues" | "updated"; - order?: components["parameters"]["order"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - incomplete_results: boolean; - items: components["schemas"]["repo-search-result-item"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - 422: components["responses"]["validation_failed"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Search topics - * @description Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). See "[Searching topics](https://docs.github.com/articles/searching-topics/)" for a detailed list of qualifiers. - * - * When searching for topics, you can get text match metadata for the topic's **short\_description**, **description**, **name**, or **display\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to search for topics related to Ruby that are featured on https://github.com/topics. Your query might look like this: - * - * `q=ruby+is:featured` - * - * This query searches for topics with the keyword `ruby` and limits the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results. - */ - "search/topics": { - parameters: { - query: { - /** @description The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). */ - q: string; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - incomplete_results: boolean; - items: components["schemas"]["topic-search-result-item"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - }; - }; - /** - * Search users - * @description Find users via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for users, you can get text match metadata for the issue **login**, public **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you're looking for a list of popular users, you might try this query: - * - * `q=tom+repos:%3E42+followers:%3E1000` - * - * This query searches for users with the name `tom`. The results are restricted to users with more than 42 repositories and over 1,000 followers. - * - * This endpoint does not accept authentication and will only include publicly visible users. As an alternative, you can use the GraphQL API. The GraphQL API requires authentication and will return private users, including Enterprise Managed Users (EMUs), that you are authorized to view. For more information, see "[GraphQL Queries](https://docs.github.com/graphql/reference/queries#search)." - */ - "search/users": { - parameters: { - query: { - /** @description The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). See "[Searching users](https://docs.github.com/search-github/searching-on-github/searching-users)" for a detailed list of qualifiers. */ - q: string; - /** @description Sorts the results of your query by number of `followers` or `repositories`, or when the person `joined` GitHub. Default: [best match](https://docs.github.com/rest/search/search#ranking-search-results) */ - sort?: "followers" | "repositories" | "joined"; - order?: components["parameters"]["order"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - incomplete_results: boolean; - items: components["schemas"]["user-search-result-item"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - 422: components["responses"]["validation_failed"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get a team (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the [Get a team by name](https://docs.github.com/rest/teams/teams#get-a-team-by-name) endpoint. - */ - "teams/get-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-full"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a team (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a team](https://docs.github.com/rest/teams/teams#delete-a-team) endpoint. - * - * To delete a team, the authenticated user must be an organization owner or team maintainer. - * - * If you are an organization owner, deleting a parent team will delete all of its child teams as well. - */ - "teams/delete-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Update a team (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a team](https://docs.github.com/rest/teams/teams#update-a-team) endpoint. - * - * To edit a team, the authenticated user must either be an organization owner or a team maintainer. - * - * > [!NOTE] - * > With nested teams, the `privacy` for parent teams cannot be `secret`. - */ - "teams/update-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The name of the team. */ - name: string; - /** @description The description of the team. */ - description?: string; - /** - * @description The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. The options are: - * **For a non-nested team:** - * * `secret` - only visible to organization owners and members of this team. - * * `closed` - visible to all members of this organization. - * **For a parent or child team:** - * * `closed` - visible to all members of this organization. - * @enum {string} - */ - privacy?: "secret" | "closed"; - /** - * @description The notification setting the team has chosen. Editing teams without specifying this parameter leaves `notification_setting` intact. The options are: - * * `notifications_enabled` - team members receive notifications when the team is @mentioned. - * * `notifications_disabled` - no one receives notifications. - * @enum {string} - */ - notification_setting?: - | "notifications_enabled" - | "notifications_disabled"; - /** - * @description **Closing down notice**. The permission that new repositories will be added to the team with when none is specified. - * @default pull - * @enum {string} - */ - permission?: "pull" | "push" | "admin"; - /** @description The ID of a team to set as the parent team. */ - parent_team_id?: number | null; - }; - }; - }; - responses: { - /** @description Response when the updated information already exists */ - 200: { - content: { - "application/json": components["schemas"]["team-full"]; - }; - }; - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["team-full"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List discussions (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List discussions`](https://docs.github.com/rest/teams/discussions#list-discussions) endpoint. - * - * List all discussions on a team's page. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - "teams/list-discussions-legacy": { - parameters: { - query?: { - direction?: components["parameters"]["direction"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["team-discussion"][]; - }; - }; - }; - }; - /** - * Create a discussion (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create a discussion`](https://docs.github.com/rest/teams/discussions#create-a-discussion) endpoint. - * - * Creates a new discussion post on a team's page. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "teams/create-discussion-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The discussion post's title. */ - title: string; - /** @description The discussion post's body text. */ - body: string; - /** - * @description Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post. - * @default false - */ - private?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["team-discussion"]; - }; - }; - }; - }; - /** - * Get a discussion (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion) endpoint. - * - * Get a specific discussion on a team's page. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - "teams/get-discussion-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-discussion"]; - }; - }; - }; - }; - /** - * Delete a discussion (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Delete a discussion`](https://docs.github.com/rest/teams/discussions#delete-a-discussion) endpoint. - * - * Delete a discussion from a team's page. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "teams/delete-discussion-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update a discussion (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion](https://docs.github.com/rest/teams/discussions#update-a-discussion) endpoint. - * - * Edits the title and body text of a discussion post. Only the parameters you provide are updated. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "teams/update-discussion-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description The discussion post's title. */ - title?: string; - /** @description The discussion post's body text. */ - body?: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-discussion"]; - }; - }; - }; - }; - /** - * List discussion comments (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [List discussion comments](https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments) endpoint. - * - * List all comments on a team discussion. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - "teams/list-discussion-comments-legacy": { - parameters: { - query?: { - direction?: components["parameters"]["direction"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["team-discussion-comment"][]; - }; - }; - }; - }; - /** - * Create a discussion comment (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Create a discussion comment](https://docs.github.com/rest/teams/discussion-comments#create-a-discussion-comment) endpoint. - * - * Creates a new comment on a team discussion. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "teams/create-discussion-comment-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The discussion comment's body text. */ - body: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["team-discussion-comment"]; - }; - }; - }; - }; - /** - * Get a discussion comment (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment) endpoint. - * - * Get a specific comment on a team discussion. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - "teams/get-discussion-comment-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-discussion-comment"]; - }; - }; - }; - }; - /** - * Delete a discussion comment (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a discussion comment](https://docs.github.com/rest/teams/discussion-comments#delete-a-discussion-comment) endpoint. - * - * Deletes a comment on a team discussion. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "teams/delete-discussion-comment-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * Update a discussion comment (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion comment](https://docs.github.com/rest/teams/discussion-comments#update-a-discussion-comment) endpoint. - * - * Edits the body text of a discussion comment. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "teams/update-discussion-comment-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description The discussion comment's body text. */ - body: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-discussion-comment"]; - }; - }; - }; - }; - /** - * List reactions for a team discussion comment (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion comment`](https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment) endpoint. - * - * List the reactions to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - "reactions/list-for-team-discussion-comment-legacy": { - parameters: { - query?: { - /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a team discussion comment. */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["reaction"][]; - }; - }; - }; - }; - /** - * Create reaction for a team discussion comment (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new "[Create reaction for a team discussion comment](https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion-comment)" endpoint. - * - * Create a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). - * - * A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "reactions/create-for-team-discussion-comment-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the team discussion comment. - * @enum {string} - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - }; - }; - /** - * List reactions for a team discussion (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion`](https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion) endpoint. - * - * List the reactions to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - "reactions/list-for-team-discussion-legacy": { - parameters: { - query?: { - /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a team discussion. */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["reaction"][]; - }; - }; - }; - }; - /** - * Create reaction for a team discussion (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create reaction for a team discussion`](https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion) endpoint. - * - * Create a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). - * - * A response with an HTTP `200` status means that you already added the reaction type to this team discussion. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - "reactions/create-for-team-discussion-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the team discussion. - * @enum {string} - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["reaction"]; - }; - }; - }; - }; - /** - * List pending team invitations (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List pending team invitations`](https://docs.github.com/rest/teams/members#list-pending-team-invitations) endpoint. - * - * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. - */ - "teams/list-pending-invitations-legacy": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["organization-invitation"][]; - }; - }; - }; - }; - /** - * List team members (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team members`](https://docs.github.com/rest/teams/members#list-team-members) endpoint. - * - * Team members will include the members of child teams. - */ - "teams/list-members-legacy": { - parameters: { - query?: { - /** @description Filters members returned by their role in the team. */ - role?: "member" | "maintainer" | "all"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get team member (Legacy) - * @deprecated - * @description The "Get team member" endpoint (described below) is closing down. - * - * We recommend using the [Get team membership for a user](https://docs.github.com/rest/teams/members#get-team-membership-for-a-user) endpoint instead. It allows you to get both active and pending memberships. - * - * To list members in a team, the team must be visible to the authenticated user. - */ - "teams/get-member-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description if user is a member */ - 204: { - content: never; - }; - /** @description if user is not a member */ - 404: { - content: never; - }; - }; - }; - /** - * Add team member (Legacy) - * @deprecated - * @description The "Add team member" endpoint (described below) is closing down. - * - * We recommend using the [Add or update team membership for a user](https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user) endpoint instead. It allows you to invite new organization members to your teams. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To add someone to a team, the authenticated user must be an organization owner or a team maintainer in the team they're changing. The person being added to the team must be a member of the team's organization. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - "teams/add-member-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - /** @description Not Found if team synchronization is set up */ - 404: { - content: never; - }; - /** @description Unprocessable Entity if you attempt to add an organization to a team or you attempt to add a user to a team when they are not a member of at least one other team in the same organization */ - 422: { - content: never; - }; - }; - }; - /** - * Remove team member (Legacy) - * @deprecated - * @description The "Remove team member" endpoint (described below) is closing down. - * - * We recommend using the [Remove team membership for a user](https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user) endpoint instead. It allows you to remove both active and pending memberships. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To remove a team member, the authenticated user must have 'admin' permissions to the team or be an owner of the org that the team is associated with. Removing a team member does not delete the user, it just removes them from the team. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - */ - "teams/remove-member-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - /** @description Not Found if team synchronization is setup */ - 404: { - content: never; - }; - }; - }; - /** - * Get team membership for a user (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get team membership for a user](https://docs.github.com/rest/teams/members#get-team-membership-for-a-user) endpoint. - * - * Team members will include the members of child teams. - * - * To get a user's membership with a team, the team must be visible to the authenticated user. - * - * **Note:** - * The response contains the `state` of the membership and the member's `role`. - * - * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/teams/teams#create-a-team). - */ - "teams/get-membership-for-user-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-membership"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Add or update team membership for a user (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team membership for a user](https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user) endpoint. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * If the user is already a member of the team's organization, this endpoint will add the user to the team. To add a membership between an organization member and a team, the authenticated user must be an organization owner or a team maintainer. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * If the user is unaffiliated with the team's organization, this endpoint will send an invitation to the user via email. This newly-created membership will be in the "pending" state until the user accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. To add a membership between an unaffiliated user and a team, the authenticated user must be an organization owner. - * - * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer. - */ - "teams/add-or-update-membership-for-user-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - username: components["parameters"]["username"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description The role that this user should have in the team. - * @default member - * @enum {string} - */ - role?: "member" | "maintainer"; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-membership"]; - }; - }; - /** @description Forbidden if team synchronization is set up */ - 403: { - content: never; - }; - 404: components["responses"]["not_found"]; - /** @description Unprocessable Entity if you attempt to add an organization to a team */ - 422: { - content: never; - }; - }; - }; - /** - * Remove team membership for a user (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove team membership for a user](https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user) endpoint. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - */ - "teams/remove-membership-for-user-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - /** @description if team synchronization is set up */ - 403: { - content: never; - }; - }; - }; - /** - * List team projects (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "teams/list-projects-legacy": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["team-project"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Check team permissions for a project (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "teams/check-permissions-for-project-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - project_id: components["parameters"]["project-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["team-project"]; - }; - }; - /** @description Not Found if project is not managed by this team */ - 404: { - content: never; - }; - }; - }; - /** - * Add or update team project permissions (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "teams/add-or-update-project-permissions-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - project_id: components["parameters"]["project-id"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description The permission to grant to the team for this project. Default: the team's `permission` attribute will be used to determine what permission to grant the team on this project. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - * @enum {string} - */ - permission?: "read" | "write" | "admin"; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - /** @description Forbidden if the project is not owned by the organization */ - 403: { - content: { - "application/json": { - message?: string; - documentation_url?: string; - }; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove a project from a team (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "teams/remove-project-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - project_id: components["parameters"]["project-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List team repositories (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [List team repositories](https://docs.github.com/rest/teams/teams#list-team-repositories) endpoint. - */ - "teams/list-repos-legacy": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Check team permissions for a repository (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a repository](https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-repository) endpoint. - * - * > [!NOTE] - * > Repositories inherited through a parent team will also be checked. - * - * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types/) via the `Accept` header: - */ - "teams/check-permissions-for-repo-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Alternative response with extra repository information */ - 200: { - content: { - "application/json": components["schemas"]["team-repository"]; - }; - }; - /** @description Response if repository is managed by this team */ - 204: { - content: never; - }; - /** @description Not Found if repository is not managed by this team */ - 404: { - content: never; - }; - }; - }; - /** - * Add or update team repository permissions (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new "[Add or update team repository permissions](https://docs.github.com/rest/teams/teams#add-or-update-team-repository-permissions)" endpoint. - * - * To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. - * - * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - "teams/add-or-update-repo-permissions-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** - * @description The permission to grant the team on this repository. If no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository. - * @enum {string} - */ - permission?: "pull" | "push" | "admin"; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove a repository from a team (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a repository from a team](https://docs.github.com/rest/teams/teams#remove-a-repository-from-a-team) endpoint. - * - * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. NOTE: This does not delete the repository, it just removes it from the team. - */ - "teams/remove-repo-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List child teams (Legacy) - * @deprecated - * @description > [!WARNING] - * > **Endpoint closing down notice:** This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List child teams`](https://docs.github.com/rest/teams/teams#list-child-teams) endpoint. - */ - "teams/list-child-legacy": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - responses: { - /** @description if child teams exist */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["team"][]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get the authenticated user - * @description OAuth app tokens and personal access tokens (classic) need the `user` scope in order for the response to include private profile information. - */ - "users/get-authenticated": { - responses: { - /** @description Response */ - 200: { - content: { - "application/json": - | components["schemas"]["private-user"] - | components["schemas"]["public-user"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Update the authenticated user - * @description **Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API. - */ - "users/update-authenticated": { - requestBody?: { - content: { - "application/json": { - /** - * @description The new name of the user. - * @example Omar Jahandar - */ - name?: string; - /** - * @description The publicly visible email address of the user. - * @example omar@example.com - */ - email?: string; - /** - * @description The new blog URL of the user. - * @example blog.example.com - */ - blog?: string; - /** - * @description The new Twitter username of the user. - * @example therealomarj - */ - twitter_username?: string | null; - /** - * @description The new company of the user. - * @example Acme corporation - */ - company?: string; - /** - * @description The new location of the user. - * @example Berlin, Germany - */ - location?: string; - /** @description The new hiring availability of the user. */ - hireable?: boolean; - /** @description The new short biography of the user. */ - bio?: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["private-user"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List users blocked by the authenticated user - * @description List the users you've blocked on your personal account. - */ - "users/list-blocked-by-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Check if a user is blocked by the authenticated user - * @description Returns a 204 if the given user is blocked by the authenticated user. Returns a 404 if the given user is not blocked by the authenticated user, or if the given user account has been identified as spam by GitHub. - */ - "users/check-blocked": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description If the user is blocked */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - /** @description If the user is not blocked */ - 404: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - }; - /** - * Block a user - * @description Blocks the given user and returns a 204. If the authenticated user cannot block the given user a 422 is returned. - */ - "users/block": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Unblock a user - * @description Unblocks the given user and returns a 204. - */ - "users/unblock": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List codespaces for the authenticated user - * @description Lists the authenticated user's codespaces. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/list-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - repository_id?: components["parameters"]["repository-id-in-query"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - codespaces: components["schemas"]["codespace"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Create a codespace for the authenticated user - * @description Creates a new codespace, owned by the authenticated user. - * - * This endpoint requires either a `repository_id` OR a `pull_request` but not both. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/create-for-authenticated-user": { - requestBody: { - content: { - "application/json": OneOf< - [ - { - /** @description Repository id for this codespace */ - repository_id: number; - /** @description Git ref (typically a branch name) for this codespace */ - ref?: string; - /** @description The requested location for a new codespace. Best efforts are made to respect this upon creation. Assigned by IP if not provided. */ - location?: string; - /** - * @description The geographic area for this codespace. If not specified, the value is assigned by IP. This property replaces `location`, which is closing down. - * @enum {string} - */ - geo?: "EuropeWest" | "SoutheastAsia" | "UsEast" | "UsWest"; - /** @description IP for location auto-detection when proxying a request */ - client_ip?: string; - /** @description Machine type to use for this codespace */ - machine?: string; - /** @description Path to devcontainer.json config to use for this codespace */ - devcontainer_path?: string; - /** @description Whether to authorize requested permissions from devcontainer.json */ - multi_repo_permissions_opt_out?: boolean; - /** @description Working directory for this codespace */ - working_directory?: string; - /** @description Time in minutes before codespace stops from inactivity */ - idle_timeout_minutes?: number; - /** @description Display name for this codespace */ - display_name?: string; - /** @description Duration in minutes after codespace has gone idle in which it will be deleted. Must be integer minutes between 0 and 43200 (30 days). */ - retention_period_minutes?: number; - }, - { - /** @description Pull request number for this codespace */ - pull_request: { - /** @description Pull request number */ - pull_request_number: number; - /** @description Repository id for this codespace */ - repository_id: number; - }; - /** @description The requested location for a new codespace. Best efforts are made to respect this upon creation. Assigned by IP if not provided. */ - location?: string; - /** - * @description The geographic area for this codespace. If not specified, the value is assigned by IP. This property replaces `location`, which is closing down. - * @enum {string} - */ - geo?: "EuropeWest" | "SoutheastAsia" | "UsEast" | "UsWest"; - /** @description Machine type to use for this codespace */ - machine?: string; - /** @description Path to devcontainer.json config to use for this codespace */ - devcontainer_path?: string; - /** @description Working directory for this codespace */ - working_directory?: string; - /** @description Time in minutes before codespace stops from inactivity */ - idle_timeout_minutes?: number; - }, - ] - >; - }; - }; - responses: { - /** @description Response when the codespace was successfully created */ - 201: { - content: { - "application/json": components["schemas"]["codespace"]; - }; - }; - /** @description Response when the codespace creation partially failed but is being retried in the background */ - 202: { - content: { - "application/json": components["schemas"]["codespace"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List secrets for the authenticated user - * @description Lists all development environment secrets available for a user's codespaces without revealing their - * encrypted values. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - "codespaces/list-secrets-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - secrets: components["schemas"]["codespaces-secret"][]; - }; - }; - }; - }; - }; - /** - * Get public key for the authenticated user - * @description Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - "codespaces/get-public-key-for-authenticated-user": { - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["codespaces-user-public-key"]; - }; - }; - }; - }; - /** - * Get a secret for the authenticated user - * @description Gets a development environment secret available to a user's codespaces without revealing its encrypted value. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - "codespaces/get-secret-for-authenticated-user": { - parameters: { - path: { - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["codespaces-secret"]; - }; - }; - }; - }; - /** - * Create or update a secret for the authenticated user - * @description Creates or updates a development environment secret for a user's codespace with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - "codespaces/create-or-update-secret-for-authenticated-user": { - parameters: { - path: { - secret_name: components["parameters"]["secret-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get the public key for the authenticated user](https://docs.github.com/rest/codespaces/secrets#get-public-key-for-the-authenticated-user) endpoint. */ - encrypted_value?: string; - /** @description ID of the key you used to encrypt the secret. */ - key_id: string; - /** @description An array of repository ids that can access the user secret. You can manage the list of selected repositories using the [List selected repositories for a user secret](https://docs.github.com/rest/codespaces/secrets#list-selected-repositories-for-a-user-secret), [Set selected repositories for a user secret](https://docs.github.com/rest/codespaces/secrets#set-selected-repositories-for-a-user-secret), and [Remove a selected repository from a user secret](https://docs.github.com/rest/codespaces/secrets#remove-a-selected-repository-from-a-user-secret) endpoints. */ - selected_repository_ids?: (number | string)[]; - }; - }; - }; - responses: { - /** @description Response after successfully creating a secret */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - /** @description Response after successfully updating a secret */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Delete a secret for the authenticated user - * @description Deletes a development environment secret from a user's codespaces using the secret name. Deleting the secret will remove access from all codespaces that were allowed to access the secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - "codespaces/delete-secret-for-authenticated-user": { - parameters: { - path: { - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List selected repositories for a user secret - * @description List the repositories that have been granted the ability to use a user's development environment secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - "codespaces/list-repositories-for-secret-for-authenticated-user": { - parameters: { - path: { - secret_name: components["parameters"]["secret-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - repositories: components["schemas"]["minimal-repository"][]; - }; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Set selected repositories for a user secret - * @description Select the repositories that will use a user's development environment secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - "codespaces/set-repositories-for-secret-for-authenticated-user": { - parameters: { - path: { - secret_name: components["parameters"]["secret-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description An array of repository ids for which a codespace can access the secret. You can manage the list of selected repositories using the [List selected repositories for a user secret](https://docs.github.com/rest/codespaces/secrets#list-selected-repositories-for-a-user-secret), [Add a selected repository to a user secret](https://docs.github.com/rest/codespaces/secrets#add-a-selected-repository-to-a-user-secret), and [Remove a selected repository from a user secret](https://docs.github.com/rest/codespaces/secrets#remove-a-selected-repository-from-a-user-secret) endpoints. */ - selected_repository_ids: number[]; - }; - }; - }; - responses: { - /** @description No Content when repositories were added to the selected list */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Add a selected repository to a user secret - * @description Adds a repository to the selected repositories for a user's development environment secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - "codespaces/add-repository-for-secret-for-authenticated-user": { - parameters: { - path: { - secret_name: components["parameters"]["secret-name"]; - repository_id: number; - }; - }; - responses: { - /** @description No Content when repository was added to the selected list */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Remove a selected repository from a user secret - * @description Removes a repository from the selected repositories for a user's development environment secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - "codespaces/remove-repository-for-secret-for-authenticated-user": { - parameters: { - path: { - secret_name: components["parameters"]["secret-name"]; - repository_id: number; - }; - }; - responses: { - /** @description No Content when repository was removed from the selected list */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get a codespace for the authenticated user - * @description Gets information about a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/get-for-authenticated-user": { - parameters: { - path: { - codespace_name: components["parameters"]["codespace-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["codespace"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Delete a codespace for the authenticated user - * @description Deletes a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/delete-for-authenticated-user": { - parameters: { - path: { - codespace_name: components["parameters"]["codespace-name"]; - }; - }; - responses: { - 202: components["responses"]["accepted"]; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Update a codespace for the authenticated user - * @description Updates a codespace owned by the authenticated user. Currently only the codespace's machine type and recent folders can be modified using this endpoint. - * - * If you specify a new machine type it will be applied the next time your codespace is started. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/update-for-authenticated-user": { - parameters: { - path: { - codespace_name: components["parameters"]["codespace-name"]; - }; - }; - requestBody?: { - content: { - "application/json": { - /** @description A valid machine to transition this codespace to. */ - machine?: string; - /** @description Display name for this codespace */ - display_name?: string; - /** @description Recently opened folders inside the codespace. It is currently used by the clients to determine the folder path to load the codespace in. */ - recent_folders?: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["codespace"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Export a codespace for the authenticated user - * @description Triggers an export of the specified codespace and returns a URL and ID where the status of the export can be monitored. - * - * If changes cannot be pushed to the codespace's repository, they will be pushed to a new or previously-existing fork instead. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/export-for-authenticated-user": { - parameters: { - path: { - codespace_name: components["parameters"]["codespace-name"]; - }; - }; - responses: { - /** @description Response */ - 202: { - content: { - "application/json": components["schemas"]["codespace-export-details"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get details about a codespace export - * @description Gets information about an export of a codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/get-export-details-for-authenticated-user": { - parameters: { - path: { - codespace_name: components["parameters"]["codespace-name"]; - export_id: components["parameters"]["export-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["codespace-export-details"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List machine types for a codespace - * @description List the machine types a codespace can transition to use. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/codespace-machines-for-authenticated-user": { - parameters: { - path: { - codespace_name: components["parameters"]["codespace-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - total_count: number; - machines: components["schemas"]["codespace-machine"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Create a repository from an unpublished codespace - * @description Publishes an unpublished codespace, creating a new repository and assigning it to the codespace. - * - * The codespace's token is granted write permissions to the repository, allowing the user to push their changes. - * - * This will fail for a codespace that is already published, meaning it has an associated repository. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/publish-for-authenticated-user": { - parameters: { - path: { - codespace_name: components["parameters"]["codespace-name"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description A name for the new repository. */ - name?: string; - /** - * @description Whether the new repository should be private. - * @default false - */ - private?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["codespace-with-full-repository"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Start a codespace for the authenticated user - * @description Starts a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/start-for-authenticated-user": { - parameters: { - path: { - codespace_name: components["parameters"]["codespace-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["codespace"]; - }; - }; - 304: components["responses"]["not_modified"]; - 400: components["responses"]["bad_request"]; - 401: components["responses"]["requires_authentication"]; - /** @description Payment required */ - 402: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Stop a codespace for the authenticated user - * @description Stops a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - "codespaces/stop-for-authenticated-user": { - parameters: { - path: { - codespace_name: components["parameters"]["codespace-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["codespace"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * Get list of conflicting packages during Docker migration for authenticated-user - * @description Lists all packages that are owned by the authenticated user within the user's namespace, and that encountered a conflict during a Docker migration. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. - */ - "packages/list-docker-migration-conflicting-packages-for-authenticated-user": { - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package"][]; - }; - }; - }; - }; - /** - * Set primary email visibility for the authenticated user - * @description Sets the visibility for your primary email addresses. - */ - "users/set-primary-email-visibility-for-authenticated-user": { - requestBody: { - content: { - "application/json": { - /** - * @description Denotes whether an email is publicly visible. - * @enum {string} - */ - visibility: "public" | "private"; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["email"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List email addresses for the authenticated user - * @description Lists all of your email addresses, and specifies which one is visible - * to the public. - * - * OAuth app tokens and personal access tokens (classic) need the `user:email` scope to use this endpoint. - */ - "users/list-emails-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["email"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Add an email address for the authenticated user - * @description OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - "users/add-email-for-authenticated-user": { - requestBody?: { - content: { - "application/json": { - /** - * @description Adds one or more email addresses to your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key. - * @example [] - */ - emails: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["email"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Delete an email address for the authenticated user - * @description OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - "users/delete-email-for-authenticated-user": { - requestBody?: { - content: { - "application/json": { - /** @description Email addresses associated with the GitHub user account. */ - emails: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List followers of the authenticated user - * @description Lists the people following the authenticated user. - */ - "users/list-followers-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * List the people the authenticated user follows - * @description Lists the people who the authenticated user follows. - */ - "users/list-followed-by-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** Check if a person is followed by the authenticated user */ - "users/check-person-is-followed-by-authenticated": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description if the person is followed by the authenticated user */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - /** @description if the person is not followed by the authenticated user */ - 404: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - }; - /** - * Follow a user - * @description Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - * - * OAuth app tokens and personal access tokens (classic) need the `user:follow` scope to use this endpoint. - */ - "users/follow": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Unfollow a user - * @description OAuth app tokens and personal access tokens (classic) need the `user:follow` scope to use this endpoint. - */ - "users/unfollow": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List GPG keys for the authenticated user - * @description Lists the current user's GPG keys. - * - * OAuth app tokens and personal access tokens (classic) need the `read:gpg_key` scope to use this endpoint. - */ - "users/list-gpg-keys-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["gpg-key"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a GPG key for the authenticated user - * @description Adds a GPG key to the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `write:gpg_key` scope to use this endpoint. - */ - "users/create-gpg-key-for-authenticated-user": { - requestBody: { - content: { - "application/json": { - /** @description A descriptive name for the new key. */ - name?: string; - /** @description A GPG key in ASCII-armored format. */ - armored_public_key: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["gpg-key"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a GPG key for the authenticated user - * @description View extended details for a single GPG key. - * - * OAuth app tokens and personal access tokens (classic) need the `read:gpg_key` scope to use this endpoint. - */ - "users/get-gpg-key-for-authenticated-user": { - parameters: { - path: { - gpg_key_id: components["parameters"]["gpg-key-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["gpg-key"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a GPG key for the authenticated user - * @description Removes a GPG key from the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:gpg_key` scope to use this endpoint. - */ - "users/delete-gpg-key-for-authenticated-user": { - parameters: { - path: { - gpg_key_id: components["parameters"]["gpg-key-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List app installations accessible to the user access token - * @description Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - * - * You can find the permissions for the installation under the `permissions` key. - */ - "apps/list-installations-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description You can find the permissions for the installation under the `permissions` key. */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - installations: components["schemas"]["installation"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * List repositories accessible to the user access token - * @description List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - * - * The access the user has to each repository is included in the hash under the `permissions` key. - */ - "apps/list-installation-repos-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - installation_id: components["parameters"]["installation-id"]; - }; - }; - responses: { - /** @description The access the user has to each repository is included in the hash under the `permissions` key. */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": { - total_count: number; - repository_selection?: string; - repositories: components["schemas"]["repository"][]; - }; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Add a repository to an app installation - * @description Add a single repository to an installation. The authenticated user must have admin access to the repository. - * - * This endpoint only works for PATs (classic) with the `repo` scope. - */ - "apps/add-repo-to-installation-for-authenticated-user": { - parameters: { - path: { - installation_id: components["parameters"]["installation-id"]; - repository_id: components["parameters"]["repository-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Remove a repository from an app installation - * @description Remove a single repository from an installation. The authenticated user must have admin access to the repository. The installation must have the `repository_selection` of `selected`. - * - * This endpoint only works for PATs (classic) with the `repo` scope. - */ - "apps/remove-repo-from-installation-for-authenticated-user": { - parameters: { - path: { - installation_id: components["parameters"]["installation-id"]; - repository_id: components["parameters"]["repository-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - /** @description Returned when the application is installed on `all` repositories in the organization, or if this request would remove the last repository that the application has access to in the organization. */ - 422: { - content: never; - }; - }; - }; - /** - * Get interaction restrictions for your public repositories - * @description Shows which type of GitHub user can interact with your public repositories and when the restriction expires. - */ - "interactions/get-restrictions-for-authenticated-user": { - responses: { - /** @description Default response */ - 200: { - content: { - "application/json": - | components["schemas"]["interaction-limit-response"] - | Record; - }; - }; - /** @description Response when there are no restrictions */ - 204: { - content: never; - }; - }; - }; - /** - * Set interaction restrictions for your public repositories - * @description Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user. - */ - "interactions/set-restrictions-for-authenticated-user": { - requestBody: { - content: { - "application/json": components["schemas"]["interaction-limit"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["interaction-limit-response"]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Remove interaction restrictions from your public repositories - * @description Removes any interaction restrictions from your public repositories. - */ - "interactions/remove-restrictions-for-authenticated-user": { - responses: { - /** @description Response */ - 204: { - content: never; - }; - }; - }; - /** - * List user account issues assigned to the authenticated user - * @description List issues across owned and member repositories assigned to the authenticated user. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - "issues/list-for-authenticated-user": { - parameters: { - query?: { - /** @description Indicates which sorts of issues to return. `assigned` means issues assigned to you. `created` means issues created by you. `mentioned` means issues mentioning you. `subscribed` means issues you're subscribed to updates for. `all` or `repos` means all issues you can see, regardless of participation or creation. */ - filter?: - | "assigned" - | "created" - | "mentioned" - | "subscribed" - | "repos" - | "all"; - /** @description Indicates the state of the issues to return. */ - state?: "open" | "closed" | "all"; - labels?: components["parameters"]["labels"]; - /** @description What to sort results by. */ - sort?: "created" | "updated" | "comments"; - direction?: components["parameters"]["direction"]; - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["issue"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List public SSH keys for the authenticated user - * @description Lists the public SSH keys for the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `read:public_key` scope to use this endpoint. - */ - "users/list-public-ssh-keys-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["key"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a public SSH key for the authenticated user - * @description Adds a public SSH key to the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `write:public_key` scope to use this endpoint. - */ - "users/create-public-ssh-key-for-authenticated-user": { - requestBody: { - content: { - "application/json": { - /** - * @description A descriptive name for the new key. - * @example Personal MacBook Air - */ - title?: string; - /** @description The public SSH key to add to your GitHub account. */ - key: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["key"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a public SSH key for the authenticated user - * @description View extended details for a single public SSH key. - * - * OAuth app tokens and personal access tokens (classic) need the `read:public_key` scope to use this endpoint. - */ - "users/get-public-ssh-key-for-authenticated-user": { - parameters: { - path: { - key_id: components["parameters"]["key-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["key"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete a public SSH key for the authenticated user - * @description Removes a public SSH key from the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:public_key` scope to use this endpoint. - */ - "users/delete-public-ssh-key-for-authenticated-user": { - parameters: { - path: { - key_id: components["parameters"]["key-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List subscriptions for the authenticated user - * @description Lists the active subscriptions for the authenticated user. - */ - "apps/list-subscriptions-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["user-marketplace-purchase"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List subscriptions for the authenticated user (stubbed) - * @description Lists the active subscriptions for the authenticated user. - */ - "apps/list-subscriptions-for-authenticated-user-stubbed": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["user-marketplace-purchase"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - }; - }; - /** - * List organization memberships for the authenticated user - * @description Lists all of the authenticated user's organization memberships. - */ - "orgs/list-memberships-for-authenticated-user": { - parameters: { - query?: { - /** @description Indicates the state of the memberships to return. If not specified, the API returns both active and pending memberships. */ - state?: "active" | "pending"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["org-membership"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get an organization membership for the authenticated user - * @description If the authenticated user is an active or pending member of the organization, this endpoint will return the user's membership. If the authenticated user is not affiliated with the organization, a `404` is returned. This endpoint will return a `403` if the request is made by a GitHub App that is blocked by the organization. - */ - "orgs/get-membership-for-authenticated-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["org-membership"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Update an organization membership for the authenticated user - * @description Converts the authenticated user to an active member of the organization, if that user has a pending invitation from the organization. - */ - "orgs/update-membership-for-authenticated-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** - * @description The state that the membership should be in. Only `"active"` will be accepted. - * @enum {string} - */ - state: "active"; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["org-membership"]; - }; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List user migrations - * @description Lists all migrations a user has started. - */ - "migrations/list-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["migration"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Start a user migration - * @description Initiates the generation of a user migration archive. - */ - "migrations/start-for-authenticated-user": { - requestBody: { - content: { - "application/json": { - /** - * @description Lock the repositories being migrated at the start of the migration - * @example true - */ - lock_repositories?: boolean; - /** - * @description Indicates whether metadata should be excluded and only git source should be included for the migration. - * @example true - */ - exclude_metadata?: boolean; - /** - * @description Indicates whether the repository git data should be excluded from the migration. - * @example true - */ - exclude_git_data?: boolean; - /** - * @description Do not include attachments in the migration - * @example true - */ - exclude_attachments?: boolean; - /** - * @description Do not include releases in the migration - * @example true - */ - exclude_releases?: boolean; - /** - * @description Indicates whether projects owned by the organization or users should be excluded. - * @example true - */ - exclude_owner_projects?: boolean; - /** - * @description Indicates whether this should only include organization metadata (repositories array should be empty and will ignore other flags). - * @default false - * @example true - */ - org_metadata_only?: boolean; - /** - * @description Exclude attributes from the API response to improve performance - * @example [ - * "repositories" - * ] - */ - exclude?: "repositories"[]; - repositories: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["migration"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a user migration status - * @description Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values: - * - * * `pending` - the migration hasn't started yet. - * * `exporting` - the migration is in progress. - * * `exported` - the migration finished successfully. - * * `failed` - the migration failed. - * - * Once the migration has been `exported` you can [download the migration archive](https://docs.github.com/rest/migrations/users#download-a-user-migration-archive). - */ - "migrations/get-status-for-authenticated-user": { - parameters: { - query?: { - exclude?: string[]; - }; - path: { - migration_id: components["parameters"]["migration-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["migration"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Download a user migration archive - * @description Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects: - * - * * attachments - * * bases - * * commit\_comments - * * issue\_comments - * * issue\_events - * * issues - * * milestones - * * organizations - * * projects - * * protected\_branches - * * pull\_request\_reviews - * * pull\_requests - * * releases - * * repositories - * * review\_comments - * * schema - * * users - * - * The archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data. - */ - "migrations/get-archive-for-authenticated-user": { - parameters: { - path: { - migration_id: components["parameters"]["migration-id"]; - }; - }; - responses: { - /** @description Response */ - 302: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Delete a user migration archive - * @description Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [List user migrations](https://docs.github.com/rest/migrations/users#list-user-migrations) and [Get a user migration status](https://docs.github.com/rest/migrations/users#get-a-user-migration-status) endpoints, will continue to be available even after an archive is deleted. - */ - "migrations/delete-archive-for-authenticated-user": { - parameters: { - path: { - migration_id: components["parameters"]["migration-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Unlock a user repository - * @description Unlocks a repository. You can lock repositories when you [start a user migration](https://docs.github.com/rest/migrations/users#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://docs.github.com/rest/repos/repos#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked. - */ - "migrations/unlock-repo-for-authenticated-user": { - parameters: { - path: { - migration_id: components["parameters"]["migration-id"]; - repo_name: components["parameters"]["repo-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List repositories for a user migration - * @description Lists all the repositories for this user migration. - */ - "migrations/list-repos-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - migration_id: components["parameters"]["migration-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List organizations for the authenticated user - * @description List organizations for the authenticated user. - * - * For OAuth app tokens and personal access tokens (classic), this endpoint only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope for OAuth app tokens and personal access tokens (classic). Requests with insufficient scope will receive a `403 Forbidden` response. - * - * > [!NOTE] - * > Requests using a fine-grained access token will receive a `200 Success` response with an empty list. - */ - "orgs/list-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["organization-simple"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * List packages for the authenticated user's namespace - * @description Lists packages owned by the authenticated user within the user's namespace. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/list-packages-for-authenticated-user": { - parameters: { - query: { - /** @description The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ - package_type: - | "npm" - | "maven" - | "rubygems" - | "docker" - | "nuget" - | "container"; - visibility?: components["parameters"]["package-visibility"]; - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package"][]; - }; - }; - 400: components["responses"]["package_es_list_error"]; - }; - }; - /** - * Get a package for the authenticated user - * @description Gets a specific package for a package owned by the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/get-package-for-authenticated-user": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package"]; - }; - }; - }; - }; - /** - * Delete a package for the authenticated user - * @description Deletes a package owned by the authenticated user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/delete-package-for-authenticated-user": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Restore a package for the authenticated user - * @description Restores a package owned by the authenticated user. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/restore-package-for-authenticated-user": { - parameters: { - query?: { - /** @description package token */ - token?: string; - }; - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List package versions for a package owned by the authenticated user - * @description Lists package versions for a package owned by the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/get-all-package-versions-for-package-owned-by-authenticated-user": { - parameters: { - query?: { - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - /** @description The state of the package, either active or deleted. */ - state?: "active" | "deleted"; - }; - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package-version"][]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get a package version for the authenticated user - * @description Gets a specific package version for a package owned by the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/get-package-version-for-authenticated-user": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - package_version_id: components["parameters"]["package-version-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package-version"]; - }; - }; - }; - }; - /** - * Delete a package version for the authenticated user - * @description Deletes a specific package version for a package owned by the authenticated user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/delete-package-version-for-authenticated-user": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - package_version_id: components["parameters"]["package-version-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Restore a package version for the authenticated user - * @description Restores a package version owned by the authenticated user. - * - * You can restore a deleted package version under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/restore-package-version-for-authenticated-user": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - package_version_id: components["parameters"]["package-version-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a user project - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/create-for-authenticated-user": { - requestBody: { - content: { - "application/json": { - /** - * @description Name of the project - * @example Week One Sprint - */ - name: string; - /** - * @description Body of the project - * @example This project represents the sprint of the first week in January - */ - body?: string | null; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["project"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed_simple"]; - }; - }; - /** - * List public email addresses for the authenticated user - * @description Lists your publicly visible email address, which you can set with the - * [Set primary email visibility for the authenticated user](https://docs.github.com/rest/users/emails#set-primary-email-visibility-for-the-authenticated-user) - * endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `user:email` scope to use this endpoint. - */ - "users/list-public-emails-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["email"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List repositories for the authenticated user - * @description Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - */ - "repos/list-for-authenticated-user": { - parameters: { - query?: { - /** @description Limit results to repositories with the specified visibility. */ - visibility?: "all" | "public" | "private"; - /** - * @description Comma-separated list of values. Can include: - * * `owner`: Repositories that are owned by the authenticated user. - * * `collaborator`: Repositories that the user has been added to as a collaborator. - * * `organization_member`: Repositories that the user has access to through being a member of an organization. This includes every repository on every team that the user is on. - */ - affiliation?: string; - /** @description Limit results to repositories of the specified type. Will cause a `422` error if used in the same request as **visibility** or **affiliation**. */ - type?: "all" | "owner" | "public" | "private" | "member"; - /** @description The property to sort the results by. */ - sort?: "created" | "updated" | "pushed" | "full_name"; - /** @description The order to sort by. Default: `asc` when using `full_name`, otherwise `desc`. */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - since?: components["parameters"]["since-repo-date"]; - before?: components["parameters"]["before-repo-date"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["repository"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Create a repository for the authenticated user - * @description Creates a new repository for the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `public_repo` or `repo` scope to create a public repository, and `repo` scope to create a private repository. - */ - "repos/create-for-authenticated-user": { - requestBody: { - content: { - "application/json": { - /** - * @description The name of the repository. - * @example Team Environment - */ - name: string; - /** @description A short description of the repository. */ - description?: string; - /** @description A URL with more information about the repository. */ - homepage?: string; - /** - * @description Whether the repository is private. - * @default false - */ - private?: boolean; - /** - * @description Whether issues are enabled. - * @default true - * @example true - */ - has_issues?: boolean; - /** - * @description Whether projects are enabled. - * @default true - * @example true - */ - has_projects?: boolean; - /** - * @description Whether the wiki is enabled. - * @default true - * @example true - */ - has_wiki?: boolean; - /** - * @description Whether discussions are enabled. - * @default false - * @example true - */ - has_discussions?: boolean; - /** @description The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization. */ - team_id?: number; - /** - * @description Whether the repository is initialized with a minimal README. - * @default false - */ - auto_init?: boolean; - /** - * @description The desired language or platform to apply to the .gitignore. - * @example Haskell - */ - gitignore_template?: string; - /** - * @description The license keyword of the open source license for this repository. - * @example mit - */ - license_template?: string; - /** - * @description Whether to allow squash merges for pull requests. - * @default true - * @example true - */ - allow_squash_merge?: boolean; - /** - * @description Whether to allow merge commits for pull requests. - * @default true - * @example true - */ - allow_merge_commit?: boolean; - /** - * @description Whether to allow rebase merges for pull requests. - * @default true - * @example true - */ - allow_rebase_merge?: boolean; - /** - * @description Whether to allow Auto-merge to be used on pull requests. - * @default false - * @example false - */ - allow_auto_merge?: boolean; - /** - * @description Whether to delete head branches when pull requests are merged - * @default false - * @example false - */ - delete_branch_on_merge?: boolean; - /** - * @description Required when using `squash_merge_commit_message`. - * - * The default value for a squash merge commit title: - * - * - `PR_TITLE` - default to the pull request's title. - * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit). - * @enum {string} - */ - squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE"; - /** - * @description The default value for a squash merge commit message: - * - * - `PR_BODY` - default to the pull request's body. - * - `COMMIT_MESSAGES` - default to the branch's commit messages. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK"; - /** - * @description Required when using `merge_commit_message`. - * - * The default value for a merge commit title. - * - * - `PR_TITLE` - default to the pull request's title. - * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). - * @enum {string} - */ - merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE"; - /** - * @description The default value for a merge commit message. - * - * - `PR_TITLE` - default to the pull request's title. - * - `PR_BODY` - default to the pull request's body. - * - `BLANK` - default to a blank commit message. - * @enum {string} - */ - merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK"; - /** - * @description Whether downloads are enabled. - * @default true - * @example true - */ - has_downloads?: boolean; - /** - * @description Whether this repository acts as a template that can be used to generate new repositories. - * @default false - * @example true - */ - is_template?: boolean; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - headers: { - /** @example https://api.github.com/repos/octocat/Hello-World */ - Location?: string; - }; - content: { - "application/json": components["schemas"]["full-repository"]; - }; - }; - 304: components["responses"]["not_modified"]; - 400: components["responses"]["bad_request"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List repository invitations for the authenticated user - * @description When authenticating as a user, this endpoint will list all currently open repository invitations for that user. - */ - "repos/list-invitations-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["repository-invitation"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** Decline a repository invitation */ - "repos/decline-invitation-for-authenticated-user": { - parameters: { - path: { - invitation_id: components["parameters"]["invitation-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - }; - }; - /** Accept a repository invitation */ - "repos/accept-invitation-for-authenticated-user": { - parameters: { - path: { - invitation_id: components["parameters"]["invitation-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 409: components["responses"]["conflict"]; - }; - }; - /** - * List social accounts for the authenticated user - * @description Lists all of your social accounts. - */ - "users/list-social-accounts-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["social-account"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Add social accounts for the authenticated user - * @description Add one or more social accounts to the authenticated user's profile. - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - "users/add-social-account-for-authenticated-user": { - requestBody: { - content: { - "application/json": { - /** - * @description Full URLs for the social media profiles to add. - * @example [] - */ - account_urls: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["social-account"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Delete social accounts for the authenticated user - * @description Deletes one or more social accounts from the authenticated user's profile. - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - "users/delete-social-account-for-authenticated-user": { - requestBody: { - content: { - "application/json": { - /** - * @description Full URLs for the social media profiles to delete. - * @example [] - */ - account_urls: string[]; - }; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List SSH signing keys for the authenticated user - * @description Lists the SSH signing keys for the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `read:ssh_signing_key` scope to use this endpoint. - */ - "users/list-ssh-signing-keys-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["ssh-signing-key"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Create a SSH signing key for the authenticated user - * @description Creates an SSH signing key for the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `write:ssh_signing_key` scope to use this endpoint. - */ - "users/create-ssh-signing-key-for-authenticated-user": { - requestBody: { - content: { - "application/json": { - /** - * @description A descriptive name for the new key. - * @example Personal MacBook Air - */ - title?: string; - /** @description The public SSH key to add to your GitHub account. For more information, see "[Checking for existing SSH keys](https://docs.github.com/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys)." */ - key: string; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["ssh-signing-key"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get an SSH signing key for the authenticated user - * @description Gets extended details for an SSH signing key. - * - * OAuth app tokens and personal access tokens (classic) need the `read:ssh_signing_key` scope to use this endpoint. - */ - "users/get-ssh-signing-key-for-authenticated-user": { - parameters: { - path: { - ssh_signing_key_id: components["parameters"]["ssh-signing-key-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["ssh-signing-key"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete an SSH signing key for the authenticated user - * @description Deletes an SSH signing key from the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:ssh_signing_key` scope to use this endpoint. - */ - "users/delete-ssh-signing-key-for-authenticated-user": { - parameters: { - path: { - ssh_signing_key_id: components["parameters"]["ssh-signing-key-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List repositories starred by the authenticated user - * @description Lists repositories the authenticated user has starred. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.star+json`**: Includes a timestamp of when the star was created. - */ - "activity/list-repos-starred-by-authenticated-user": { - parameters: { - query?: { - sort?: components["parameters"]["sort-starred"]; - direction?: components["parameters"]["direction"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["repository"][]; - "application/vnd.github.v3.star+json": components["schemas"]["starred-repository"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Check if a repository is starred by the authenticated user - * @description Whether the authenticated user has starred the repository. - */ - "activity/check-repo-is-starred-by-authenticated-user": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response if this repository is starred by you */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - /** @description Not Found if this repository is not starred by you */ - 404: { - content: { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - }; - /** - * Star a repository for the authenticated user - * @description Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - "activity/star-repo-for-authenticated-user": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Unstar a repository for the authenticated user - * @description Unstar a repository that the authenticated user has previously starred. - */ - "activity/unstar-repo-for-authenticated-user": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List repositories watched by the authenticated user - * @description Lists repositories the authenticated user is watching. - */ - "activity/list-watched-repos-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * List teams for the authenticated user - * @description List all of the teams across all of the organizations to which the authenticated - * user belongs. - * - * OAuth app tokens and personal access tokens (classic) need the `user`, `repo`, or `read:org` scope to use this endpoint. - * - * When using a fine-grained personal access token, the resource owner of the token must be a single organization, and the response will only include the teams from that organization. - */ - "teams/list-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["team-full"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get a user using their ID - * @description Provides publicly available information about someone with a GitHub account. This method takes their durable user `ID` instead of their `login`, which can change over time. - * - * If you are requesting information about an [Enterprise Managed User](https://docs.github.com/enterprise-cloud@latest/admin/managing-iam/understanding-iam-for-enterprises/about-enterprise-managed-users), or a GitHub App bot that is installed in an organization that uses Enterprise Managed Users, your requests must be authenticated as a user or GitHub App that has access to the organization to view that account's information. If you are not authorized, the request will return a `404 Not Found` status. - * - * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be public which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#authentication). - * - * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see [Emails API](https://docs.github.com/rest/users/emails). - */ - "users/get-by-id": { - parameters: { - path: { - account_id: components["parameters"]["account-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": - | components["schemas"]["private-user"] - | components["schemas"]["public-user"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List users - * @description Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts. - * - * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of users. - */ - "users/list": { - parameters: { - query?: { - since?: components["parameters"]["since-user"]; - per_page?: components["parameters"]["per-page"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - /** @example ; rel="next" */ - Link?: string; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - 304: components["responses"]["not_modified"]; - }; - }; - /** - * Get a user - * @description Provides publicly available information about someone with a GitHub account. - * - * If you are requesting information about an [Enterprise Managed User](https://docs.github.com/enterprise-cloud@latest/admin/managing-iam/understanding-iam-for-enterprises/about-enterprise-managed-users), or a GitHub App bot that is installed in an organization that uses Enterprise Managed Users, your requests must be authenticated as a user or GitHub App that has access to the organization to view that account's information. If you are not authorized, the request will return a `404 Not Found` status. - * - * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be public which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#authentication). - * - * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see [Emails API](https://docs.github.com/rest/users/emails). - */ - "users/get-by-username": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": - | components["schemas"]["private-user"] - | components["schemas"]["public-user"]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List attestations by bulk subject digests - * @description List a collection of artifact attestations associated with any entry in a list of subject digests owned by a user. - * - * The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - "users/list-attestations-bulk": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - requestBody: { - content: { - "application/json": { - /** @description List of subject digests to fetch attestations for. */ - subject_digests: string[]; - /** - * @description Optional filter for fetching attestations with a given predicate type. - * This option accepts `provenance`, `sbom`, `release`, or freeform text - * for custom predicate types. - */ - predicate_type?: string; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - /** @description Mapping of subject digest to bundles. */ - attestations_subject_digests?: { - [key: string]: - | { - /** @description The bundle of the attestation. */ - bundle?: { - mediaType?: string; - verificationMaterial?: { - [key: string]: unknown; - }; - dsseEnvelope?: { - [key: string]: unknown; - }; - }; - repository_id?: number; - bundle_url?: string; - }[] - | null; - }; - /** @description Information about the current page. */ - page_info?: { - /** @description Indicates whether there is a next page. */ - has_next?: boolean; - /** @description Indicates whether there is a previous page. */ - has_previous?: boolean; - /** @description The cursor to the next page. */ - next?: string; - /** @description The cursor to the previous page. */ - previous?: string; - }; - }; - }; - }; - }; - }; - /** - * Delete attestations in bulk - * @description Delete artifact attestations in bulk by either subject digests or unique ID. - */ - "users/delete-attestations-bulk": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - requestBody: { - content: { - "application/json": OneOf< - [ - { - /** @description List of subject digests associated with the artifact attestations to delete. */ - subject_digests: string[]; - }, - { - /** @description List of unique IDs associated with the artifact attestations to delete. */ - attestation_ids: number[]; - }, - ] - >; - }; - }; - responses: { - /** @description Response */ - 200: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete attestations by subject digest - * @description Delete an artifact attestation by subject digest. - */ - "users/delete-attestations-by-subject-digest": { - parameters: { - path: { - username: components["parameters"]["username"]; - /** @description Subject Digest */ - subject_digest: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: never; - }; - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Delete attestations by ID - * @description Delete an artifact attestation by unique ID that is associated with a repository owned by a user. - */ - "users/delete-attestations-by-id": { - parameters: { - path: { - username: components["parameters"]["username"]; - /** @description Attestation ID */ - attestation_id: number; - }; - }; - responses: { - /** @description Response */ - 200: { - content: never; - }; - /** @description Response */ - 204: { - content: never; - }; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List attestations - * @description List a collection of artifact attestations with a given subject digest that are associated with repositories owned by a user. - * - * The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - "users/list-attestations": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - /** - * @description Optional filter for fetching attestations with a given predicate type. - * This option accepts `provenance`, `sbom`, `release`, or freeform text - * for custom predicate types. - */ - predicate_type?: string; - }; - path: { - username: components["parameters"]["username"]; - /** @description Subject Digest */ - subject_digest: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - attestations?: { - /** - * @description The attestation's Sigstore Bundle. - * Refer to the [Sigstore Bundle Specification](https://github.com/sigstore/protobuf-specs/blob/main/protos/sigstore_bundle.proto) for more information. - */ - bundle?: { - mediaType?: string; - verificationMaterial?: { - [key: string]: unknown; - }; - dsseEnvelope?: { - [key: string]: unknown; - }; - }; - repository_id?: number; - bundle_url?: string; - initiator?: string; - }[]; - }; - }; - }; - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["empty-object"]; - }; - }; - /** @description Response */ - 204: { - content: never; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get list of conflicting packages during Docker migration for user - * @description Lists all packages that are in a specific user's namespace, that the requesting user has access to, and that encountered a conflict during Docker migration. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. - */ - "packages/list-docker-migration-conflicting-packages-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package"][]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * List events for the authenticated user - * @description If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events. _Optional_: use the fine-grained token with following permission set to view private events: "Events" user permissions (read). - * - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - "activity/list-events-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - }; - /** - * List organization events for the authenticated user - * @description This is the user's organization dashboard. You must be authenticated as the user to view this. - * - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - "activity/list-org-events-for-authenticated-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - }; - /** - * List public events for a user - * @description > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - "activity/list-public-events-for-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - }; - /** - * List followers of a user - * @description Lists the people following the specified user. - */ - "users/list-followers-for-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - }; - /** - * List the people a user follows - * @description Lists the people who the specified user follows. - */ - "users/list-following-for-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - }; - /** Check if a user follows another user */ - "users/check-following-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - target_user: string; - }; - }; - responses: { - /** @description if the user follows the target user */ - 204: { - content: never; - }; - /** @description if the user does not follow the target user */ - 404: { - content: never; - }; - }; - }; - /** - * List gists for a user - * @description Lists public gists for the specified user: - */ - "gists/list-for-user": { - parameters: { - query?: { - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["base-gist"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List GPG keys for a user - * @description Lists the GPG keys for a user. This information is accessible by anyone. - */ - "users/list-gpg-keys-for-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["gpg-key"][]; - }; - }; - }; - }; - /** - * Get contextual information for a user - * @description Provides hovercard information. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations. - * - * The `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository, you would use a `subject_type` value of `repository` and a `subject_id` value of `1300192` (the ID of the `Spoon-Knife` repository). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - "users/get-context-for-user": { - parameters: { - query?: { - /** @description Identifies which additional information you'd like to receive about the person's hovercard. Can be `organization`, `repository`, `issue`, `pull_request`. **Required** when using `subject_id`. */ - subject_type?: "organization" | "repository" | "issue" | "pull_request"; - /** @description Uses the ID for the `subject_type` you specified. **Required** when using `subject_type`. */ - subject_id?: string; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["hovercard"]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * Get a user installation for the authenticated app - * @description Enables an authenticated GitHub App to find the user’s installation information. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/get-user-installation": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["installation"]; - }; - }; - }; - }; - /** - * List public keys for a user - * @description Lists the _verified_ public SSH keys for a user. This is accessible by anyone. - */ - "users/list-public-keys-for-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["key-simple"][]; - }; - }; - }; - }; - /** - * List organizations for a user - * @description List [public organization memberships](https://docs.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user. - * - * This method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List organizations for the authenticated user](https://docs.github.com/rest/orgs/orgs#list-organizations-for-the-authenticated-user) API instead. - */ - "orgs/list-for-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["organization-simple"][]; - }; - }; - }; - }; - /** - * List packages for a user - * @description Lists all packages in a user's namespace for which the requesting user has access. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/list-packages-for-user": { - parameters: { - query: { - /** @description The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ - package_type: - | "npm" - | "maven" - | "rubygems" - | "docker" - | "nuget" - | "container"; - visibility?: components["parameters"]["package-visibility"]; - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package"][]; - }; - }; - 400: components["responses"]["package_es_list_error"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get a package for a user - * @description Gets a specific package metadata for a public package owned by a user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/get-package-for-user": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package"]; - }; - }; - }; - }; - /** - * Delete a package for a user - * @description Deletes an entire package for a user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. - * - * If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/delete-package-for-user": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Restore a package for a user - * @description Restores an entire package for a user. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/restore-package-for-user": { - parameters: { - query?: { - /** @description package token */ - token?: string; - }; - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List package versions for a package owned by a user - * @description Lists package versions for a public package owned by a specified user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/get-all-package-versions-for-package-owned-by-user": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package-version"][]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get a package version for a user - * @description Gets a specific package version for a public package owned by a specified user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/get-package-version-for-user": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - package_version_id: components["parameters"]["package-version-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["package-version"]; - }; - }; - }; - }; - /** - * Delete package version for a user - * @description Deletes a specific package version for a user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. - * - * If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/delete-package-version-for-user": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - username: components["parameters"]["username"]; - package_version_id: components["parameters"]["package-version-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Restore package version for a user - * @description Restores a specific package version for a user. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - "packages/restore-package-version-for-user": { - parameters: { - path: { - package_type: components["parameters"]["package-type"]; - package_name: components["parameters"]["package-name"]; - username: components["parameters"]["username"]; - package_version_id: components["parameters"]["package-version-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - }; - }; - /** - * List user projects - * @deprecated - * @description > [!WARNING] - * > **Closing down notice:** Projects (classic) is being deprecated in favor of the new Projects experience. - * > See the [changelog](https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/) for more information. - */ - "projects-classic/list-for-user": { - parameters: { - query?: { - /** @description Indicates the state of the projects to return. */ - state?: "open" | "closed" | "all"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["project"][]; - }; - }; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List projects for user - * @description List all projects owned by a specific user accessible by the authenticated user. - */ - "projects/list-for-user": { - parameters: { - query?: { - /** @description Limit results to projects of the specified type. */ - q?: string; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - per_page?: components["parameters"]["per-page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["projects-v2"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get project for user - * @description Get a specific user-owned project. - */ - "projects/get-for-user": { - parameters: { - path: { - project_number: components["parameters"]["project-number"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["projects-v2"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * List project fields for user - * @description List all fields for a specific user-owned project. - */ - "projects/list-fields-for-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - }; - path: { - project_number: components["parameters"]["project-number"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["projects-v2-field"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get project field for user - * @description Get a specific field for a user-owned project. - */ - "projects/get-field-for-user": { - parameters: { - path: { - project_number: components["parameters"]["project-number"]; - field_id: components["parameters"]["field-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["projects-v2-field"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * List items for a user owned project - * @description List all items for a specific user-owned project accessible by the authenticated user. - */ - "projects/list-items-for-user": { - parameters: { - query?: { - before?: components["parameters"]["pagination-before"]; - after?: components["parameters"]["pagination-after"]; - per_page?: components["parameters"]["per-page"]; - /** @description Search query to filter items, see [Filtering projects](https://docs.github.com/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/filtering-projects) for more information. */ - q?: string; - /** - * @description Limit results to specific fields, by their IDs. If not specified, the title field will be returned. - * - * Example: `fields[]=123&fields[]=456&fields[]=789` or `fields=123,456,789` - */ - fields?: string | string[]; - }; - path: { - project_number: components["parameters"]["project-number"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["projects-v2-item-with-content"][]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Add item to user owned project - * @description Add an issue or pull request item to the specified user owned project. - */ - "projects/add-item-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - project_number: components["parameters"]["project-number"]; - }; - }; - /** @description Details of the item to add to the project. */ - requestBody: { - content: { - "application/json": { - /** - * @description The type of item to add to the project. Must be either Issue or PullRequest. - * @enum {string} - */ - type: "Issue" | "PullRequest"; - /** @description The numeric ID of the issue or pull request to add to the project. */ - id: number; - }; - }; - }; - responses: { - /** @description Response */ - 201: { - content: { - "application/json": components["schemas"]["projects-v2-item-simple"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Get an item for a user owned project - * @description Get a specific item from a user-owned project. - */ - "projects/get-user-item": { - parameters: { - query?: { - /** - * @description Limit results to specific fields, by their IDs. If not specified, the title field will be returned. - * - * Example: fields[]=123&fields[]=456&fields[]=789 or fields=123,456,789 - */ - fields?: string | string[]; - }; - path: { - project_number: components["parameters"]["project-number"]; - username: components["parameters"]["username"]; - item_id: components["parameters"]["item-id"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["projects-v2-item-with-content"]; - }; - }; - 304: components["responses"]["not_modified"]; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Delete project item for user - * @description Delete a specific item from a user-owned project. - */ - "projects/delete-item-for-user": { - parameters: { - path: { - project_number: components["parameters"]["project-number"]; - username: components["parameters"]["username"]; - item_id: components["parameters"]["item-id"]; - }; - }; - responses: { - /** @description Response */ - 204: { - content: never; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - }; - }; - /** - * Update project item for user - * @description Update a specific item in a user-owned project. - */ - "projects/update-item-for-user": { - parameters: { - path: { - project_number: components["parameters"]["project-number"]; - username: components["parameters"]["username"]; - item_id: components["parameters"]["item-id"]; - }; - }; - /** @description Field updates to apply to the project item. Only text, number, date, single select, and iteration fields are supported. */ - requestBody: { - content: { - "application/json": { - /** @description A list of field updates to apply. */ - fields: { - /** @description The ID of the project field to update. */ - id: number; - /** - * @description The new value for the field: - * - For text, number, and date fields, provide the new value directly. - * - For single select and iteration fields, provide the ID of the option or iteration. - * - To clear the field, set this to null. - */ - value: string | number | null; - }[]; - }; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["projects-v2-item-with-content"]; - }; - }; - 401: components["responses"]["requires_authentication"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; - /** - * List events received by the authenticated user - * @description These are events that you've received by watching repositories and following users. If you are authenticated as the - * given user, you will see private events. Otherwise, you'll only see public events. - * - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - "activity/list-received-events-for-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - }; - /** - * List public events received by a user - * @description > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - "activity/list-received-public-events-for-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - }; - /** - * List repositories for a user - * @description Lists public repositories for the specified user. - */ - "repos/list-for-user": { - parameters: { - query?: { - /** @description Limit results to repositories of the specified type. */ - type?: "all" | "owner" | "member"; - /** @description The property to sort the results by. */ - sort?: "created" | "updated" | "pushed" | "full_name"; - /** @description The order to sort by. Default: `asc` when using `full_name`, otherwise `desc`. */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - }; - }; - /** - * Get GitHub Actions billing for a user - * @description Gets the summary of the free and paid GitHub Actions minutes used. - * - * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - "billing/get-github-actions-billing-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["actions-billing-usage"]; - }; - }; - }; - }; - /** - * Get GitHub Packages billing for a user - * @description Gets the free and paid storage used for GitHub Packages in gigabytes. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - "billing/get-github-packages-billing-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["packages-billing-usage"]; - }; - }; - }; - }; - /** - * Get billing premium request usage report for a user - * @description Gets a report of premium request usage for a user. - * - * **Note:** Only data from the past 24 months is accessible via this endpoint. - */ - "billing/get-github-billing-premium-request-usage-report-user": { - parameters: { - query?: { - year?: components["parameters"]["billing-usage-report-year"]; - month?: components["parameters"]["billing-usage-report-month-default"]; - day?: components["parameters"]["billing-usage-report-day"]; - model?: components["parameters"]["billing-usage-report-model"]; - product?: components["parameters"]["billing-usage-report-product"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - 200: components["responses"]["billing_premium_request_usage_report_user"]; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * Get shared storage billing for a user - * @description Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - "billing/get-shared-storage-billing-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["combined-billing-usage"]; - }; - }; - }; - }; - /** - * Get billing usage report for a user - * @description Gets a report of the total usage for a user. - * - * **Note:** This endpoint is only available to users with access to the enhanced billing platform. - */ - "billing/get-github-billing-usage-report-user": { - parameters: { - query?: { - year?: components["parameters"]["billing-usage-report-year"]; - month?: components["parameters"]["billing-usage-report-month"]; - day?: components["parameters"]["billing-usage-report-day"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - 200: components["responses"]["billing_usage_report_user"]; - 400: components["responses"]["bad_request"]; - 403: components["responses"]["forbidden"]; - 500: components["responses"]["internal_error"]; - 503: components["responses"]["service_unavailable"]; - }; - }; - /** - * List social accounts for a user - * @description Lists social media accounts for a user. This endpoint is accessible by anyone. - */ - "users/list-social-accounts-for-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["social-account"][]; - }; - }; - }; - }; - /** - * List SSH signing keys for a user - * @description Lists the SSH signing keys for a user. This operation is accessible by anyone. - */ - "users/list-ssh-signing-keys-for-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["ssh-signing-key"][]; - }; - }; - }; - }; - /** - * List repositories starred by a user - * @description Lists repositories a user has starred. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.star+json`**: Includes a timestamp of when the star was created. - */ - "activity/list-repos-starred-by-user": { - parameters: { - query?: { - sort?: components["parameters"]["sort-starred"]; - direction?: components["parameters"]["direction"]; - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": - | components["schemas"]["starred-repository"][] - | components["schemas"]["repository"][]; - }; - }; - }; - }; - /** - * List repositories watched by a user - * @description Lists repositories a user is watching. - */ - "activity/list-repos-watched-by-user": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** @description Response */ - 200: { - headers: { - Link: components["headers"]["link"]; - }; - content: { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - }; - }; - /** - * Get all API versions - * @description Get all supported GitHub API versions. - */ - "meta/get-all-versions": { - responses: { - /** @description Response */ - 200: { - content: { - "application/json": string[]; - }; - }; - 404: components["responses"]["not_found"]; - }; - }; - /** - * Get the Zen of GitHub - * @description Get a random sentence from the Zen of GitHub - */ - "meta/get-zen": { - responses: { - /** @description Response */ - 200: { - content: { - "text/plain": string; - }; - }; - }; - }; - /** - * Compare two commits - * @description **Deprecated**: Use `repos.compareCommitsWithBasehead()` (`GET /repos/{owner}/{repo}/compare/{basehead}`) instead. Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `:branch`. - * - * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. - * - * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. - * - * **Working with large comparisons** - * - * To process a response with a large number of commits, you can use (`per_page` or `page`) to paginate the results. When using paging, the list of changed files is only returned with page 1, but includes all changed files for the entire comparison. For more information on working with pagination, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)." - * - * When calling this API without any paging parameters (`per_page` or `page`), the returned list is limited to 250 commits and the last commit in the list is the most recent of the entire comparison. When a paging parameter is specified, the first commit in the returned list of each page is the earliest. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "repos/compare-commits": { - parameters: { - query?: { - per_page?: components["parameters"]["per-page"]; - page?: components["parameters"]["page"]; - }; - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - base: string; - head: string; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": components["schemas"]["commit-comparison"]; - }; - }; - 404: components["responses"]["not_found"]; - 500: components["responses"]["internal_error"]; - }; - }; - /** - * List organization fine-grained permissions for an organization - * @description Lists the fine-grained permissions that can be used in custom organization roles for an organization. For more information, see "[Managing people's access to your organization with roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles)." - * - * To list the fine-grained permissions that can be used in custom repository roles for an organization, see "[List repository fine-grained permissions for an organization](https://docs.github.com/rest/orgs/organization-roles#list-repository-fine-grained-permissions-for-an-organization)." - * - * To use this endpoint, the authenticated user must be one of: - * - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permissions of `read_organization_custom_org_role` in the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - "orgs/list-organization-fine-grained-permissions": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** @description Response */ - 200: { - content: { - "application/json": { - name: string; - description: string; - }[]; - }; - }; - 404: components["responses"]["not_found"]; - 422: components["responses"]["validation_failed"]; - }; - }; -} diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/LICENSE b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/LICENSE deleted file mode 100644 index 57bee5f..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/README.md b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/README.md deleted file mode 100644 index 8bdea31..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/README.md +++ /dev/null @@ -1,273 +0,0 @@ -# plugin-paginate-rest.js - -> Octokit plugin to paginate REST API endpoint responses - -[![@latest](https://img.shields.io/npm/v/@octokit/plugin-paginate-rest.svg)](https://www.npmjs.com/package/@octokit/plugin-paginate-rest) -[![Build Status](https://github.com/octokit/plugin-paginate-rest.js/workflows/Test/badge.svg)](https://github.com/octokit/plugin-paginate-rest.js/actions?workflow=Test) - -## Usage - - - - - - -
-Browsers - - -Load `@octokit/plugin-paginate-rest` and [`@octokit/core`](https://github.com/octokit/core.js) (or core-compatible module) directly from [esm.sh](https://esm.sh) - -```html - -``` - -
-Node - - -Install with `npm install @octokit/core @octokit/plugin-paginate-rest`. Optionally replace `@octokit/core` with a core-compatible module - -```js -import { Octokit } from "@octokit/core"; -import { - paginateRest, - composePaginateRest, -} from "@octokit/plugin-paginate-rest"; -``` - -
- -```js -const MyOctokit = Octokit.plugin(paginateRest); -const octokit = new MyOctokit({ auth: "secret123" }); - -// See https://developer.github.com/v3/issues/#list-issues-for-a-repository -const issues = await octokit.paginate("GET /repos/{owner}/{repo}/issues", { - owner: "octocat", - repo: "hello-world", - since: "2010-10-01", - per_page: 100, -}); -``` - -If you want to utilize the pagination methods in another plugin, use `composePaginateRest`. - -```js -function myPlugin(octokit, options) { - return { - allStars({owner, repo}) => { - return composePaginateRest( - octokit, - "GET /repos/{owner}/{repo}/stargazers", - {owner, repo } - ) - } - } -} -``` - -> [!IMPORTANT] -> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json`. See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports). - -## `octokit.paginate()` - -The `paginateRest` plugin adds a new `octokit.paginate()` method which accepts the same parameters as [`octokit.request`](https://github.com/octokit/request.js#request). Only "List ..." endpoints such as [List issues for a repository](https://developer.github.com/v3/issues/#list-issues-for-a-repository) are supporting pagination. Their [response includes a Link header](https://developer.github.com/v3/issues/#response-1). For other endpoints, `octokit.paginate()` behaves the same as `octokit.request()`. - -The `per_page` parameter is usually defaulting to `30`, and can be set to up to `100`, which helps retrieving a big amount of data without hitting the rate limits too soon. - -An optional `mapFunction` can be passed to map each page response to a new value, usually an array with only the data you need. This can help to reduce memory usage, as only the relevant data has to be kept in memory until the pagination is complete. - -```js -const issueTitles = await octokit.paginate( - "GET /repos/{owner}/{repo}/issues", - { - owner: "octocat", - repo: "hello-world", - since: "2010-10-01", - per_page: 100, - }, - (response) => response.data.map((issue) => issue.title), -); -``` - -The `mapFunction` gets a 2nd argument `done` which can be called to end the pagination early. - -```js -const issues = await octokit.paginate( - "GET /repos/{owner}/{repo}/issues", - { - owner: "octocat", - repo: "hello-world", - since: "2010-10-01", - per_page: 100, - }, - (response, done) => { - if (response.data.find((issue) => issue.title.includes("something"))) { - done(); - } - return response.data; - }, -); -``` - -Alternatively you can pass a `request` method as first argument. This is great when using in combination with [`@octokit/plugin-rest-endpoint-methods`](https://github.com/octokit/plugin-rest-endpoint-methods.js/): - -```js -const issues = await octokit.paginate(octokit.rest.issues.listForRepo, { - owner: "octocat", - repo: "hello-world", - since: "2010-10-01", - per_page: 100, -}); -``` - -## `octokit.paginate.iterator()` - -If your target runtime environments supports async iterators (such as most modern browsers and Node 10+), you can iterate through each response - -```js -const parameters = { - owner: "octocat", - repo: "hello-world", - since: "2010-10-01", - per_page: 100, -}; -for await (const response of octokit.paginate.iterator( - "GET /repos/{owner}/{repo}/issues", - parameters, -)) { - // do whatever you want with each response, break out of the loop, etc. - const issues = response.data; - console.log("%d issues found", issues.length); -} -``` - -Alternatively you can pass a `request` method as first argument. This is great when using in combination with [`@octokit/plugin-rest-endpoint-methods`](https://github.com/octokit/plugin-rest-endpoint-methods.js/): - -```js -const parameters = { - owner: "octocat", - repo: "hello-world", - since: "2010-10-01", - per_page: 100, -}; -for await (const response of octokit.paginate.iterator( - octokit.rest.issues.listForRepo, - parameters, -)) { - // do whatever you want with each response, break out of the loop, etc. - const issues = response.data; - console.log("%d issues found", issues.length); -} -``` - -## `composePaginateRest` and `composePaginateRest.iterator` - -The `compose*` methods work just like their `octokit.*` counterparts described above, with the differenct that both methods require an `octokit` instance to be passed as first argument - -## How it works - -`octokit.paginate()` wraps `octokit.request()`. As long as a `rel="next"` link value is present in the response's `Link` header, it sends another request for that URL, and so on. - -Most of GitHub's paginating REST API endpoints return an array, but there are a few exceptions which return an object with a key that includes the items array. For example: - -- [Search repositories](https://developer.github.com/v3/search/#example) (key `items`) -- [List check runs for a specific ref](https://developer.github.com/v3/checks/runs/#response-3) (key: `check_runs`) -- [List check suites for a specific ref](https://developer.github.com/v3/checks/suites/#response-1) (key: `check_suites`) -- [List repositories](https://developer.github.com/v3/apps/installations/#list-repositories) for an installation (key: `repositories`) -- [List installations for a user](https://developer.github.com/v3/apps/installations/#response-1) (key `installations`) -- [Compare commits](https://docs.github.com/en/rest/commits/commits?apiVersion=2022-11-28#compare-two-commits) (key `commits`) - -`octokit.paginate()` is working around these inconsistencies so you don't have to worry about it. - -If a response is lacking the `Link` header, `octokit.paginate()` still resolves with an array, even if the response returns a single object. - -## Types - -The plugin also exposes some types and runtime type guards for TypeScript projects. - - - - - - -
-Types - - -```typescript -import { - PaginateInterface, - PaginatingEndpoints, -} from "@octokit/plugin-paginate-rest"; -``` - -
-Guards - - -```typescript -import { isPaginatingEndpoint } from "@octokit/plugin-paginate-rest"; -``` - -
- -### PaginateInterface - -An `interface` that declares all the overloads of the `.paginate` method. - -### PaginatingEndpoints - -An `interface` which describes all API endpoints supported by the plugin. Some overloads of `.paginate()` method and `composePaginateRest()` function depend on `PaginatingEndpoints`, using the `keyof PaginatingEndpoints` as a type for one of its arguments. - -```typescript -import { Octokit } from "@octokit/core"; -import { - PaginatingEndpoints, - composePaginateRest, -} from "@octokit/plugin-paginate-rest"; - -type DataType = "data" extends keyof T ? T["data"] : unknown; - -async function myPaginatePlugin( - octokit: Octokit, - endpoint: E, - parameters?: PaginatingEndpoints[E]["parameters"], -): Promise> { - return await composePaginateRest(octokit, endpoint, parameters); -} -``` - -### isPaginatingEndpoint - -A type guard, `isPaginatingEndpoint(arg)` returns `true` if `arg` is one of the keys in `PaginatingEndpoints` (is `keyof PaginatingEndpoints`). - -```typescript -import { Octokit } from "@octokit/core"; -import { - isPaginatingEndpoint, - composePaginateRest, -} from "@octokit/plugin-paginate-rest"; - -async function myPlugin(octokit: Octokit, arg: unknown) { - if (isPaginatingEndpoint(arg)) { - return await composePaginateRest(octokit, arg); - } - // ... -} -``` - -## Contributing - -See [CONTRIBUTING.md](CONTRIBUTING.md) - -## License - -[MIT](LICENSE) diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js deleted file mode 100644 index cbfa885..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js +++ /dev/null @@ -1,415 +0,0 @@ -// pkg/dist-src/version.js -var VERSION = "0.0.0-development"; - -// pkg/dist-src/normalize-paginated-list-response.js -function normalizePaginatedListResponse(response) { - if (!response.data) { - return { - ...response, - data: [] - }; - } - const responseNeedsNormalization = ("total_count" in response.data || "total_commits" in response.data) && !("url" in response.data); - if (!responseNeedsNormalization) return response; - const incompleteResults = response.data.incomplete_results; - const repositorySelection = response.data.repository_selection; - const totalCount = response.data.total_count; - const totalCommits = response.data.total_commits; - delete response.data.incomplete_results; - delete response.data.repository_selection; - delete response.data.total_count; - delete response.data.total_commits; - const namespaceKey = Object.keys(response.data)[0]; - const data = response.data[namespaceKey]; - response.data = data; - if (typeof incompleteResults !== "undefined") { - response.data.incomplete_results = incompleteResults; - } - if (typeof repositorySelection !== "undefined") { - response.data.repository_selection = repositorySelection; - } - response.data.total_count = totalCount; - response.data.total_commits = totalCommits; - return response; -} - -// pkg/dist-src/iterator.js -function iterator(octokit, route, parameters) { - const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); - const requestMethod = typeof route === "function" ? route : octokit.request; - const method = options.method; - const headers = options.headers; - let url = options.url; - return { - [Symbol.asyncIterator]: () => ({ - async next() { - if (!url) return { done: true }; - try { - const response = await requestMethod({ method, url, headers }); - const normalizedResponse = normalizePaginatedListResponse(response); - url = ((normalizedResponse.headers.link || "").match( - /<([^<>]+)>;\s*rel="next"/ - ) || [])[1]; - if (!url && "total_commits" in normalizedResponse.data) { - const parsedUrl = new URL(normalizedResponse.url); - const params = parsedUrl.searchParams; - const page = parseInt(params.get("page") || "1", 10); - const per_page = parseInt(params.get("per_page") || "250", 10); - if (page * per_page < normalizedResponse.data.total_commits) { - params.set("page", String(page + 1)); - url = parsedUrl.toString(); - } - } - return { value: normalizedResponse }; - } catch (error) { - if (error.status !== 409) throw error; - url = ""; - return { - value: { - status: 200, - headers: {}, - data: [] - } - }; - } - } - }) - }; -} - -// pkg/dist-src/paginate.js -function paginate(octokit, route, parameters, mapFn) { - if (typeof parameters === "function") { - mapFn = parameters; - parameters = void 0; - } - return gather( - octokit, - [], - iterator(octokit, route, parameters)[Symbol.asyncIterator](), - mapFn - ); -} -function gather(octokit, results, iterator2, mapFn) { - return iterator2.next().then((result) => { - if (result.done) { - return results; - } - let earlyExit = false; - function done() { - earlyExit = true; - } - results = results.concat( - mapFn ? mapFn(result.value, done) : result.value.data - ); - if (earlyExit) { - return results; - } - return gather(octokit, results, iterator2, mapFn); - }); -} - -// pkg/dist-src/compose-paginate.js -var composePaginateRest = Object.assign(paginate, { - iterator -}); - -// pkg/dist-src/generated/paginating-endpoints.js -var paginatingEndpoints = [ - "GET /advisories", - "GET /app/hook/deliveries", - "GET /app/installation-requests", - "GET /app/installations", - "GET /assignments/{assignment_id}/accepted_assignments", - "GET /classrooms", - "GET /classrooms/{classroom_id}/assignments", - "GET /enterprises/{enterprise}/code-security/configurations", - "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories", - "GET /enterprises/{enterprise}/dependabot/alerts", - "GET /enterprises/{enterprise}/teams", - "GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships", - "GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations", - "GET /events", - "GET /gists", - "GET /gists/public", - "GET /gists/starred", - "GET /gists/{gist_id}/comments", - "GET /gists/{gist_id}/commits", - "GET /gists/{gist_id}/forks", - "GET /installation/repositories", - "GET /issues", - "GET /licenses", - "GET /marketplace_listing/plans", - "GET /marketplace_listing/plans/{plan_id}/accounts", - "GET /marketplace_listing/stubbed/plans", - "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", - "GET /networks/{owner}/{repo}/events", - "GET /notifications", - "GET /organizations", - "GET /organizations/{org}/dependabot/repository-access", - "GET /orgs/{org}/actions/cache/usage-by-repository", - "GET /orgs/{org}/actions/hosted-runners", - "GET /orgs/{org}/actions/permissions/repositories", - "GET /orgs/{org}/actions/permissions/self-hosted-runners/repositories", - "GET /orgs/{org}/actions/runner-groups", - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners", - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", - "GET /orgs/{org}/actions/runners", - "GET /orgs/{org}/actions/secrets", - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", - "GET /orgs/{org}/actions/variables", - "GET /orgs/{org}/actions/variables/{name}/repositories", - "GET /orgs/{org}/attestations/repositories", - "GET /orgs/{org}/attestations/{subject_digest}", - "GET /orgs/{org}/blocks", - "GET /orgs/{org}/campaigns", - "GET /orgs/{org}/code-scanning/alerts", - "GET /orgs/{org}/code-security/configurations", - "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories", - "GET /orgs/{org}/codespaces", - "GET /orgs/{org}/codespaces/secrets", - "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories", - "GET /orgs/{org}/copilot/billing/seats", - "GET /orgs/{org}/copilot/metrics", - "GET /orgs/{org}/dependabot/alerts", - "GET /orgs/{org}/dependabot/secrets", - "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", - "GET /orgs/{org}/events", - "GET /orgs/{org}/failed_invitations", - "GET /orgs/{org}/hooks", - "GET /orgs/{org}/hooks/{hook_id}/deliveries", - "GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}", - "GET /orgs/{org}/insights/api/subject-stats", - "GET /orgs/{org}/insights/api/user-stats/{user_id}", - "GET /orgs/{org}/installations", - "GET /orgs/{org}/invitations", - "GET /orgs/{org}/invitations/{invitation_id}/teams", - "GET /orgs/{org}/issues", - "GET /orgs/{org}/members", - "GET /orgs/{org}/members/{username}/codespaces", - "GET /orgs/{org}/migrations", - "GET /orgs/{org}/migrations/{migration_id}/repositories", - "GET /orgs/{org}/organization-roles/{role_id}/teams", - "GET /orgs/{org}/organization-roles/{role_id}/users", - "GET /orgs/{org}/outside_collaborators", - "GET /orgs/{org}/packages", - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", - "GET /orgs/{org}/personal-access-token-requests", - "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories", - "GET /orgs/{org}/personal-access-tokens", - "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories", - "GET /orgs/{org}/private-registries", - "GET /orgs/{org}/projects", - "GET /orgs/{org}/projectsV2", - "GET /orgs/{org}/projectsV2/{project_number}/fields", - "GET /orgs/{org}/projectsV2/{project_number}/items", - "GET /orgs/{org}/properties/values", - "GET /orgs/{org}/public_members", - "GET /orgs/{org}/repos", - "GET /orgs/{org}/rulesets", - "GET /orgs/{org}/rulesets/rule-suites", - "GET /orgs/{org}/rulesets/{ruleset_id}/history", - "GET /orgs/{org}/secret-scanning/alerts", - "GET /orgs/{org}/security-advisories", - "GET /orgs/{org}/settings/immutable-releases/repositories", - "GET /orgs/{org}/settings/network-configurations", - "GET /orgs/{org}/team/{team_slug}/copilot/metrics", - "GET /orgs/{org}/teams", - "GET /orgs/{org}/teams/{team_slug}/discussions", - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - "GET /orgs/{org}/teams/{team_slug}/invitations", - "GET /orgs/{org}/teams/{team_slug}/members", - "GET /orgs/{org}/teams/{team_slug}/projects", - "GET /orgs/{org}/teams/{team_slug}/repos", - "GET /orgs/{org}/teams/{team_slug}/teams", - "GET /projects/{project_id}/collaborators", - "GET /repos/{owner}/{repo}/actions/artifacts", - "GET /repos/{owner}/{repo}/actions/caches", - "GET /repos/{owner}/{repo}/actions/organization-secrets", - "GET /repos/{owner}/{repo}/actions/organization-variables", - "GET /repos/{owner}/{repo}/actions/runners", - "GET /repos/{owner}/{repo}/actions/runs", - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", - "GET /repos/{owner}/{repo}/actions/secrets", - "GET /repos/{owner}/{repo}/actions/variables", - "GET /repos/{owner}/{repo}/actions/workflows", - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", - "GET /repos/{owner}/{repo}/activity", - "GET /repos/{owner}/{repo}/assignees", - "GET /repos/{owner}/{repo}/attestations/{subject_digest}", - "GET /repos/{owner}/{repo}/branches", - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", - "GET /repos/{owner}/{repo}/code-scanning/alerts", - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", - "GET /repos/{owner}/{repo}/code-scanning/analyses", - "GET /repos/{owner}/{repo}/codespaces", - "GET /repos/{owner}/{repo}/codespaces/devcontainers", - "GET /repos/{owner}/{repo}/codespaces/secrets", - "GET /repos/{owner}/{repo}/collaborators", - "GET /repos/{owner}/{repo}/comments", - "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", - "GET /repos/{owner}/{repo}/commits", - "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", - "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", - "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", - "GET /repos/{owner}/{repo}/commits/{ref}/status", - "GET /repos/{owner}/{repo}/commits/{ref}/statuses", - "GET /repos/{owner}/{repo}/compare/{basehead}", - "GET /repos/{owner}/{repo}/compare/{base}...{head}", - "GET /repos/{owner}/{repo}/contributors", - "GET /repos/{owner}/{repo}/dependabot/alerts", - "GET /repos/{owner}/{repo}/dependabot/secrets", - "GET /repos/{owner}/{repo}/deployments", - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", - "GET /repos/{owner}/{repo}/environments", - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps", - "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets", - "GET /repos/{owner}/{repo}/environments/{environment_name}/variables", - "GET /repos/{owner}/{repo}/events", - "GET /repos/{owner}/{repo}/forks", - "GET /repos/{owner}/{repo}/hooks", - "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", - "GET /repos/{owner}/{repo}/invitations", - "GET /repos/{owner}/{repo}/issues", - "GET /repos/{owner}/{repo}/issues/comments", - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", - "GET /repos/{owner}/{repo}/issues/events", - "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", - "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by", - "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking", - "GET /repos/{owner}/{repo}/issues/{issue_number}/events", - "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", - "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", - "GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues", - "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", - "GET /repos/{owner}/{repo}/keys", - "GET /repos/{owner}/{repo}/labels", - "GET /repos/{owner}/{repo}/milestones", - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", - "GET /repos/{owner}/{repo}/notifications", - "GET /repos/{owner}/{repo}/pages/builds", - "GET /repos/{owner}/{repo}/projects", - "GET /repos/{owner}/{repo}/pulls", - "GET /repos/{owner}/{repo}/pulls/comments", - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", - "GET /repos/{owner}/{repo}/releases", - "GET /repos/{owner}/{repo}/releases/{release_id}/assets", - "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", - "GET /repos/{owner}/{repo}/rules/branches/{branch}", - "GET /repos/{owner}/{repo}/rulesets", - "GET /repos/{owner}/{repo}/rulesets/rule-suites", - "GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history", - "GET /repos/{owner}/{repo}/secret-scanning/alerts", - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", - "GET /repos/{owner}/{repo}/security-advisories", - "GET /repos/{owner}/{repo}/stargazers", - "GET /repos/{owner}/{repo}/subscribers", - "GET /repos/{owner}/{repo}/tags", - "GET /repos/{owner}/{repo}/teams", - "GET /repos/{owner}/{repo}/topics", - "GET /repositories", - "GET /search/code", - "GET /search/commits", - "GET /search/issues", - "GET /search/labels", - "GET /search/repositories", - "GET /search/topics", - "GET /search/users", - "GET /teams/{team_id}/discussions", - "GET /teams/{team_id}/discussions/{discussion_number}/comments", - "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", - "GET /teams/{team_id}/discussions/{discussion_number}/reactions", - "GET /teams/{team_id}/invitations", - "GET /teams/{team_id}/members", - "GET /teams/{team_id}/projects", - "GET /teams/{team_id}/repos", - "GET /teams/{team_id}/teams", - "GET /user/blocks", - "GET /user/codespaces", - "GET /user/codespaces/secrets", - "GET /user/emails", - "GET /user/followers", - "GET /user/following", - "GET /user/gpg_keys", - "GET /user/installations", - "GET /user/installations/{installation_id}/repositories", - "GET /user/issues", - "GET /user/keys", - "GET /user/marketplace_purchases", - "GET /user/marketplace_purchases/stubbed", - "GET /user/memberships/orgs", - "GET /user/migrations", - "GET /user/migrations/{migration_id}/repositories", - "GET /user/orgs", - "GET /user/packages", - "GET /user/packages/{package_type}/{package_name}/versions", - "GET /user/public_emails", - "GET /user/repos", - "GET /user/repository_invitations", - "GET /user/social_accounts", - "GET /user/ssh_signing_keys", - "GET /user/starred", - "GET /user/subscriptions", - "GET /user/teams", - "GET /users", - "GET /users/{username}/attestations/{subject_digest}", - "GET /users/{username}/events", - "GET /users/{username}/events/orgs/{org}", - "GET /users/{username}/events/public", - "GET /users/{username}/followers", - "GET /users/{username}/following", - "GET /users/{username}/gists", - "GET /users/{username}/gpg_keys", - "GET /users/{username}/keys", - "GET /users/{username}/orgs", - "GET /users/{username}/packages", - "GET /users/{username}/projects", - "GET /users/{username}/projectsV2", - "GET /users/{username}/projectsV2/{project_number}/fields", - "GET /users/{username}/projectsV2/{project_number}/items", - "GET /users/{username}/received_events", - "GET /users/{username}/received_events/public", - "GET /users/{username}/repos", - "GET /users/{username}/social_accounts", - "GET /users/{username}/ssh_signing_keys", - "GET /users/{username}/starred", - "GET /users/{username}/subscriptions" -]; - -// pkg/dist-src/paginating-endpoints.js -function isPaginatingEndpoint(arg) { - if (typeof arg === "string") { - return paginatingEndpoints.includes(arg); - } else { - return false; - } -} - -// pkg/dist-src/index.js -function paginateRest(octokit) { - return { - paginate: Object.assign(paginate.bind(null, octokit), { - iterator: iterator.bind(null, octokit) - }) - }; -} -paginateRest.VERSION = VERSION; -export { - composePaginateRest, - isPaginatingEndpoint, - paginateRest, - paginatingEndpoints -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js.map b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js.map deleted file mode 100644 index 3fa2c04..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../dist-src/version.js", "../dist-src/normalize-paginated-list-response.js", "../dist-src/iterator.js", "../dist-src/paginate.js", "../dist-src/compose-paginate.js", "../dist-src/generated/paginating-endpoints.js", "../dist-src/paginating-endpoints.js", "../dist-src/index.js"], - "sourcesContent": ["const VERSION = \"0.0.0-development\";\nexport {\n VERSION\n};\n", "function normalizePaginatedListResponse(response) {\n if (!response.data) {\n return {\n ...response,\n data: []\n };\n }\n const responseNeedsNormalization = (\"total_count\" in response.data || \"total_commits\" in response.data) && !(\"url\" in response.data);\n if (!responseNeedsNormalization) return response;\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n const totalCommits = response.data.total_commits;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n delete response.data.total_commits;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n response.data.total_commits = totalCommits;\n return response;\n}\nexport {\n normalizePaginatedListResponse\n};\n", "import { normalizePaginatedListResponse } from \"./normalize-paginated-list-response.js\";\nfunction iterator(octokit, route, parameters) {\n const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url) return { done: true };\n try {\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n url = ((normalizedResponse.headers.link || \"\").match(\n /<([^<>]+)>;\\s*rel=\"next\"/\n ) || [])[1];\n if (!url && \"total_commits\" in normalizedResponse.data) {\n const parsedUrl = new URL(normalizedResponse.url);\n const params = parsedUrl.searchParams;\n const page = parseInt(params.get(\"page\") || \"1\", 10);\n const per_page = parseInt(params.get(\"per_page\") || \"250\", 10);\n if (page * per_page < normalizedResponse.data.total_commits) {\n params.set(\"page\", String(page + 1));\n url = parsedUrl.toString();\n }\n }\n return { value: normalizedResponse };\n } catch (error) {\n if (error.status !== 409) throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: []\n }\n };\n }\n }\n })\n };\n}\nexport {\n iterator\n};\n", "import { iterator } from \"./iterator.js\";\nfunction paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = void 0;\n }\n return gather(\n octokit,\n [],\n iterator(octokit, route, parameters)[Symbol.asyncIterator](),\n mapFn\n );\n}\nfunction gather(octokit, results, iterator2, mapFn) {\n return iterator2.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(\n mapFn ? mapFn(result.value, done) : result.value.data\n );\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator2, mapFn);\n });\n}\nexport {\n paginate\n};\n", "import { paginate } from \"./paginate.js\";\nimport { iterator } from \"./iterator.js\";\nconst composePaginateRest = Object.assign(paginate, {\n iterator\n});\nexport {\n composePaginateRest\n};\n", "const paginatingEndpoints = [\n \"GET /advisories\",\n \"GET /app/hook/deliveries\",\n \"GET /app/installation-requests\",\n \"GET /app/installations\",\n \"GET /assignments/{assignment_id}/accepted_assignments\",\n \"GET /classrooms\",\n \"GET /classrooms/{classroom_id}/assignments\",\n \"GET /enterprises/{enterprise}/code-security/configurations\",\n \"GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories\",\n \"GET /enterprises/{enterprise}/dependabot/alerts\",\n \"GET /enterprises/{enterprise}/teams\",\n \"GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships\",\n \"GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations\",\n \"GET /events\",\n \"GET /gists\",\n \"GET /gists/public\",\n \"GET /gists/starred\",\n \"GET /gists/{gist_id}/comments\",\n \"GET /gists/{gist_id}/commits\",\n \"GET /gists/{gist_id}/forks\",\n \"GET /installation/repositories\",\n \"GET /issues\",\n \"GET /licenses\",\n \"GET /marketplace_listing/plans\",\n \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n \"GET /marketplace_listing/stubbed/plans\",\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"GET /networks/{owner}/{repo}/events\",\n \"GET /notifications\",\n \"GET /organizations\",\n \"GET /organizations/{org}/dependabot/repository-access\",\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n \"GET /orgs/{org}/actions/hosted-runners\",\n \"GET /orgs/{org}/actions/permissions/repositories\",\n \"GET /orgs/{org}/actions/permissions/self-hosted-runners/repositories\",\n \"GET /orgs/{org}/actions/runner-groups\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners\",\n \"GET /orgs/{org}/actions/runners\",\n \"GET /orgs/{org}/actions/secrets\",\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/actions/variables\",\n \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n \"GET /orgs/{org}/attestations/repositories\",\n \"GET /orgs/{org}/attestations/{subject_digest}\",\n \"GET /orgs/{org}/blocks\",\n \"GET /orgs/{org}/campaigns\",\n \"GET /orgs/{org}/code-scanning/alerts\",\n \"GET /orgs/{org}/code-security/configurations\",\n \"GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories\",\n \"GET /orgs/{org}/codespaces\",\n \"GET /orgs/{org}/codespaces/secrets\",\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/copilot/billing/seats\",\n \"GET /orgs/{org}/copilot/metrics\",\n \"GET /orgs/{org}/dependabot/alerts\",\n \"GET /orgs/{org}/dependabot/secrets\",\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/events\",\n \"GET /orgs/{org}/failed_invitations\",\n \"GET /orgs/{org}/hooks\",\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n \"GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}\",\n \"GET /orgs/{org}/insights/api/subject-stats\",\n \"GET /orgs/{org}/insights/api/user-stats/{user_id}\",\n \"GET /orgs/{org}/installations\",\n \"GET /orgs/{org}/invitations\",\n \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n \"GET /orgs/{org}/issues\",\n \"GET /orgs/{org}/members\",\n \"GET /orgs/{org}/members/{username}/codespaces\",\n \"GET /orgs/{org}/migrations\",\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n \"GET /orgs/{org}/organization-roles/{role_id}/teams\",\n \"GET /orgs/{org}/organization-roles/{role_id}/users\",\n \"GET /orgs/{org}/outside_collaborators\",\n \"GET /orgs/{org}/packages\",\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n \"GET /orgs/{org}/personal-access-token-requests\",\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n \"GET /orgs/{org}/personal-access-tokens\",\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n \"GET /orgs/{org}/private-registries\",\n \"GET /orgs/{org}/projects\",\n \"GET /orgs/{org}/projectsV2\",\n \"GET /orgs/{org}/projectsV2/{project_number}/fields\",\n \"GET /orgs/{org}/projectsV2/{project_number}/items\",\n \"GET /orgs/{org}/properties/values\",\n \"GET /orgs/{org}/public_members\",\n \"GET /orgs/{org}/repos\",\n \"GET /orgs/{org}/rulesets\",\n \"GET /orgs/{org}/rulesets/rule-suites\",\n \"GET /orgs/{org}/rulesets/{ruleset_id}/history\",\n \"GET /orgs/{org}/secret-scanning/alerts\",\n \"GET /orgs/{org}/security-advisories\",\n \"GET /orgs/{org}/settings/immutable-releases/repositories\",\n \"GET /orgs/{org}/settings/network-configurations\",\n \"GET /orgs/{org}/team/{team_slug}/copilot/metrics\",\n \"GET /orgs/{org}/teams\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n \"GET /orgs/{org}/teams/{team_slug}/members\",\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n \"GET /orgs/{org}/teams/{team_slug}/repos\",\n \"GET /orgs/{org}/teams/{team_slug}/teams\",\n \"GET /projects/{project_id}/collaborators\",\n \"GET /repos/{owner}/{repo}/actions/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/caches\",\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n \"GET /repos/{owner}/{repo}/actions/runners\",\n \"GET /repos/{owner}/{repo}/actions/runs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/secrets\",\n \"GET /repos/{owner}/{repo}/actions/variables\",\n \"GET /repos/{owner}/{repo}/actions/workflows\",\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n \"GET /repos/{owner}/{repo}/activity\",\n \"GET /repos/{owner}/{repo}/assignees\",\n \"GET /repos/{owner}/{repo}/attestations/{subject_digest}\",\n \"GET /repos/{owner}/{repo}/branches\",\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n \"GET /repos/{owner}/{repo}/codespaces\",\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n \"GET /repos/{owner}/{repo}/collaborators\",\n \"GET /repos/{owner}/{repo}/comments\",\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/commits\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n \"GET /repos/{owner}/{repo}/compare/{basehead}\",\n \"GET /repos/{owner}/{repo}/compare/{base}...{head}\",\n \"GET /repos/{owner}/{repo}/contributors\",\n \"GET /repos/{owner}/{repo}/dependabot/alerts\",\n \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n \"GET /repos/{owner}/{repo}/deployments\",\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n \"GET /repos/{owner}/{repo}/environments\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/secrets\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/variables\",\n \"GET /repos/{owner}/{repo}/events\",\n \"GET /repos/{owner}/{repo}/forks\",\n \"GET /repos/{owner}/{repo}/hooks\",\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n \"GET /repos/{owner}/{repo}/invitations\",\n \"GET /repos/{owner}/{repo}/issues\",\n \"GET /repos/{owner}/{repo}/issues/comments\",\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n \"GET /repos/{owner}/{repo}/keys\",\n \"GET /repos/{owner}/{repo}/labels\",\n \"GET /repos/{owner}/{repo}/milestones\",\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n \"GET /repos/{owner}/{repo}/notifications\",\n \"GET /repos/{owner}/{repo}/pages/builds\",\n \"GET /repos/{owner}/{repo}/projects\",\n \"GET /repos/{owner}/{repo}/pulls\",\n \"GET /repos/{owner}/{repo}/pulls/comments\",\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n \"GET /repos/{owner}/{repo}/releases\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n \"GET /repos/{owner}/{repo}/rules/branches/{branch}\",\n \"GET /repos/{owner}/{repo}/rulesets\",\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites\",\n \"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n \"GET /repos/{owner}/{repo}/security-advisories\",\n \"GET /repos/{owner}/{repo}/stargazers\",\n \"GET /repos/{owner}/{repo}/subscribers\",\n \"GET /repos/{owner}/{repo}/tags\",\n \"GET /repos/{owner}/{repo}/teams\",\n \"GET /repos/{owner}/{repo}/topics\",\n \"GET /repositories\",\n \"GET /search/code\",\n \"GET /search/commits\",\n \"GET /search/issues\",\n \"GET /search/labels\",\n \"GET /search/repositories\",\n \"GET /search/topics\",\n \"GET /search/users\",\n \"GET /teams/{team_id}/discussions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n \"GET /teams/{team_id}/invitations\",\n \"GET /teams/{team_id}/members\",\n \"GET /teams/{team_id}/projects\",\n \"GET /teams/{team_id}/repos\",\n \"GET /teams/{team_id}/teams\",\n \"GET /user/blocks\",\n \"GET /user/codespaces\",\n \"GET /user/codespaces/secrets\",\n \"GET /user/emails\",\n \"GET /user/followers\",\n \"GET /user/following\",\n \"GET /user/gpg_keys\",\n \"GET /user/installations\",\n \"GET /user/installations/{installation_id}/repositories\",\n \"GET /user/issues\",\n \"GET /user/keys\",\n \"GET /user/marketplace_purchases\",\n \"GET /user/marketplace_purchases/stubbed\",\n \"GET /user/memberships/orgs\",\n \"GET /user/migrations\",\n \"GET /user/migrations/{migration_id}/repositories\",\n \"GET /user/orgs\",\n \"GET /user/packages\",\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n \"GET /user/public_emails\",\n \"GET /user/repos\",\n \"GET /user/repository_invitations\",\n \"GET /user/social_accounts\",\n \"GET /user/ssh_signing_keys\",\n \"GET /user/starred\",\n \"GET /user/subscriptions\",\n \"GET /user/teams\",\n \"GET /users\",\n \"GET /users/{username}/attestations/{subject_digest}\",\n \"GET /users/{username}/events\",\n \"GET /users/{username}/events/orgs/{org}\",\n \"GET /users/{username}/events/public\",\n \"GET /users/{username}/followers\",\n \"GET /users/{username}/following\",\n \"GET /users/{username}/gists\",\n \"GET /users/{username}/gpg_keys\",\n \"GET /users/{username}/keys\",\n \"GET /users/{username}/orgs\",\n \"GET /users/{username}/packages\",\n \"GET /users/{username}/projects\",\n \"GET /users/{username}/projectsV2\",\n \"GET /users/{username}/projectsV2/{project_number}/fields\",\n \"GET /users/{username}/projectsV2/{project_number}/items\",\n \"GET /users/{username}/received_events\",\n \"GET /users/{username}/received_events/public\",\n \"GET /users/{username}/repos\",\n \"GET /users/{username}/social_accounts\",\n \"GET /users/{username}/ssh_signing_keys\",\n \"GET /users/{username}/starred\",\n \"GET /users/{username}/subscriptions\"\n];\nexport {\n paginatingEndpoints\n};\n", "import {\n paginatingEndpoints\n} from \"./generated/paginating-endpoints.js\";\nimport { paginatingEndpoints as paginatingEndpoints2 } from \"./generated/paginating-endpoints.js\";\nfunction isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n } else {\n return false;\n }\n}\nexport {\n isPaginatingEndpoint,\n paginatingEndpoints2 as paginatingEndpoints\n};\n", "import { VERSION } from \"./version.js\";\nimport { paginate } from \"./paginate.js\";\nimport { iterator } from \"./iterator.js\";\nimport { composePaginateRest } from \"./compose-paginate.js\";\nimport {\n isPaginatingEndpoint,\n paginatingEndpoints\n} from \"./paginating-endpoints.js\";\nfunction paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit)\n })\n };\n}\npaginateRest.VERSION = VERSION;\nexport {\n composePaginateRest,\n isPaginatingEndpoint,\n paginateRest,\n paginatingEndpoints\n};\n"], - "mappings": ";AAAA,IAAM,UAAU;;;ACAhB,SAAS,+BAA+B,UAAU;AAChD,MAAI,CAAC,SAAS,MAAM;AAClB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,CAAC;AAAA,IACT;AAAA,EACF;AACA,QAAM,8BAA8B,iBAAiB,SAAS,QAAQ,mBAAmB,SAAS,SAAS,EAAE,SAAS,SAAS;AAC/H,MAAI,CAAC,2BAA4B,QAAO;AACxC,QAAM,oBAAoB,SAAS,KAAK;AACxC,QAAM,sBAAsB,SAAS,KAAK;AAC1C,QAAM,aAAa,SAAS,KAAK;AACjC,QAAM,eAAe,SAAS,KAAK;AACnC,SAAO,SAAS,KAAK;AACrB,SAAO,SAAS,KAAK;AACrB,SAAO,SAAS,KAAK;AACrB,SAAO,SAAS,KAAK;AACrB,QAAM,eAAe,OAAO,KAAK,SAAS,IAAI,EAAE,CAAC;AACjD,QAAM,OAAO,SAAS,KAAK,YAAY;AACvC,WAAS,OAAO;AAChB,MAAI,OAAO,sBAAsB,aAAa;AAC5C,aAAS,KAAK,qBAAqB;AAAA,EACrC;AACA,MAAI,OAAO,wBAAwB,aAAa;AAC9C,aAAS,KAAK,uBAAuB;AAAA,EACvC;AACA,WAAS,KAAK,cAAc;AAC5B,WAAS,KAAK,gBAAgB;AAC9B,SAAO;AACT;;;AC5BA,SAAS,SAAS,SAAS,OAAO,YAAY;AAC5C,QAAM,UAAU,OAAO,UAAU,aAAa,MAAM,SAAS,UAAU,IAAI,QAAQ,QAAQ,SAAS,OAAO,UAAU;AACrH,QAAM,gBAAgB,OAAO,UAAU,aAAa,QAAQ,QAAQ;AACpE,QAAM,SAAS,QAAQ;AACvB,QAAM,UAAU,QAAQ;AACxB,MAAI,MAAM,QAAQ;AAClB,SAAO;AAAA,IACL,CAAC,OAAO,aAAa,GAAG,OAAO;AAAA,MAC7B,MAAM,OAAO;AACX,YAAI,CAAC,IAAK,QAAO,EAAE,MAAM,KAAK;AAC9B,YAAI;AACF,gBAAM,WAAW,MAAM,cAAc,EAAE,QAAQ,KAAK,QAAQ,CAAC;AAC7D,gBAAM,qBAAqB,+BAA+B,QAAQ;AAClE,kBAAQ,mBAAmB,QAAQ,QAAQ,IAAI;AAAA,YAC7C;AAAA,UACF,KAAK,CAAC,GAAG,CAAC;AACV,cAAI,CAAC,OAAO,mBAAmB,mBAAmB,MAAM;AACtD,kBAAM,YAAY,IAAI,IAAI,mBAAmB,GAAG;AAChD,kBAAM,SAAS,UAAU;AACzB,kBAAM,OAAO,SAAS,OAAO,IAAI,MAAM,KAAK,KAAK,EAAE;AACnD,kBAAM,WAAW,SAAS,OAAO,IAAI,UAAU,KAAK,OAAO,EAAE;AAC7D,gBAAI,OAAO,WAAW,mBAAmB,KAAK,eAAe;AAC3D,qBAAO,IAAI,QAAQ,OAAO,OAAO,CAAC,CAAC;AACnC,oBAAM,UAAU,SAAS;AAAA,YAC3B;AAAA,UACF;AACA,iBAAO,EAAE,OAAO,mBAAmB;AAAA,QACrC,SAAS,OAAO;AACd,cAAI,MAAM,WAAW,IAAK,OAAM;AAChC,gBAAM;AACN,iBAAO;AAAA,YACL,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,SAAS,CAAC;AAAA,cACV,MAAM,CAAC;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACzCA,SAAS,SAAS,SAAS,OAAO,YAAY,OAAO;AACnD,MAAI,OAAO,eAAe,YAAY;AACpC,YAAQ;AACR,iBAAa;AAAA,EACf;AACA,SAAO;AAAA,IACL;AAAA,IACA,CAAC;AAAA,IACD,SAAS,SAAS,OAAO,UAAU,EAAE,OAAO,aAAa,EAAE;AAAA,IAC3D;AAAA,EACF;AACF;AACA,SAAS,OAAO,SAAS,SAAS,WAAW,OAAO;AAClD,SAAO,UAAU,KAAK,EAAE,KAAK,CAAC,WAAW;AACvC,QAAI,OAAO,MAAM;AACf,aAAO;AAAA,IACT;AACA,QAAI,YAAY;AAChB,aAAS,OAAO;AACd,kBAAY;AAAA,IACd;AACA,cAAU,QAAQ;AAAA,MAChB,QAAQ,MAAM,OAAO,OAAO,IAAI,IAAI,OAAO,MAAM;AAAA,IACnD;AACA,QAAI,WAAW;AACb,aAAO;AAAA,IACT;AACA,WAAO,OAAO,SAAS,SAAS,WAAW,KAAK;AAAA,EAClD,CAAC;AACH;;;AC5BA,IAAM,sBAAsB,OAAO,OAAO,UAAU;AAAA,EAClD;AACF,CAAC;;;ACJD,IAAM,sBAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AC5QA,SAAS,qBAAqB,KAAK;AACjC,MAAI,OAAO,QAAQ,UAAU;AAC3B,WAAO,oBAAoB,SAAS,GAAG;AAAA,EACzC,OAAO;AACL,WAAO;AAAA,EACT;AACF;;;ACFA,SAAS,aAAa,SAAS;AAC7B,SAAO;AAAA,IACL,UAAU,OAAO,OAAO,SAAS,KAAK,MAAM,OAAO,GAAG;AAAA,MACpD,UAAU,SAAS,KAAK,MAAM,OAAO;AAAA,IACvC,CAAC;AAAA,EACH;AACF;AACA,aAAa,UAAU;", - "names": [] -} diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js deleted file mode 100644 index f3a6537..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js +++ /dev/null @@ -1,8 +0,0 @@ -import { paginate } from "./paginate.js"; -import { iterator } from "./iterator.js"; -const composePaginateRest = Object.assign(paginate, { - iterator -}); -export { - composePaginateRest -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js deleted file mode 100644 index 394aec6..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js +++ /dev/null @@ -1,276 +0,0 @@ -const paginatingEndpoints = [ - "GET /advisories", - "GET /app/hook/deliveries", - "GET /app/installation-requests", - "GET /app/installations", - "GET /assignments/{assignment_id}/accepted_assignments", - "GET /classrooms", - "GET /classrooms/{classroom_id}/assignments", - "GET /enterprises/{enterprise}/code-security/configurations", - "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories", - "GET /enterprises/{enterprise}/dependabot/alerts", - "GET /enterprises/{enterprise}/teams", - "GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships", - "GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations", - "GET /events", - "GET /gists", - "GET /gists/public", - "GET /gists/starred", - "GET /gists/{gist_id}/comments", - "GET /gists/{gist_id}/commits", - "GET /gists/{gist_id}/forks", - "GET /installation/repositories", - "GET /issues", - "GET /licenses", - "GET /marketplace_listing/plans", - "GET /marketplace_listing/plans/{plan_id}/accounts", - "GET /marketplace_listing/stubbed/plans", - "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", - "GET /networks/{owner}/{repo}/events", - "GET /notifications", - "GET /organizations", - "GET /organizations/{org}/dependabot/repository-access", - "GET /orgs/{org}/actions/cache/usage-by-repository", - "GET /orgs/{org}/actions/hosted-runners", - "GET /orgs/{org}/actions/permissions/repositories", - "GET /orgs/{org}/actions/permissions/self-hosted-runners/repositories", - "GET /orgs/{org}/actions/runner-groups", - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners", - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", - "GET /orgs/{org}/actions/runners", - "GET /orgs/{org}/actions/secrets", - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", - "GET /orgs/{org}/actions/variables", - "GET /orgs/{org}/actions/variables/{name}/repositories", - "GET /orgs/{org}/attestations/repositories", - "GET /orgs/{org}/attestations/{subject_digest}", - "GET /orgs/{org}/blocks", - "GET /orgs/{org}/campaigns", - "GET /orgs/{org}/code-scanning/alerts", - "GET /orgs/{org}/code-security/configurations", - "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories", - "GET /orgs/{org}/codespaces", - "GET /orgs/{org}/codespaces/secrets", - "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories", - "GET /orgs/{org}/copilot/billing/seats", - "GET /orgs/{org}/copilot/metrics", - "GET /orgs/{org}/dependabot/alerts", - "GET /orgs/{org}/dependabot/secrets", - "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", - "GET /orgs/{org}/events", - "GET /orgs/{org}/failed_invitations", - "GET /orgs/{org}/hooks", - "GET /orgs/{org}/hooks/{hook_id}/deliveries", - "GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}", - "GET /orgs/{org}/insights/api/subject-stats", - "GET /orgs/{org}/insights/api/user-stats/{user_id}", - "GET /orgs/{org}/installations", - "GET /orgs/{org}/invitations", - "GET /orgs/{org}/invitations/{invitation_id}/teams", - "GET /orgs/{org}/issues", - "GET /orgs/{org}/members", - "GET /orgs/{org}/members/{username}/codespaces", - "GET /orgs/{org}/migrations", - "GET /orgs/{org}/migrations/{migration_id}/repositories", - "GET /orgs/{org}/organization-roles/{role_id}/teams", - "GET /orgs/{org}/organization-roles/{role_id}/users", - "GET /orgs/{org}/outside_collaborators", - "GET /orgs/{org}/packages", - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", - "GET /orgs/{org}/personal-access-token-requests", - "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories", - "GET /orgs/{org}/personal-access-tokens", - "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories", - "GET /orgs/{org}/private-registries", - "GET /orgs/{org}/projects", - "GET /orgs/{org}/projectsV2", - "GET /orgs/{org}/projectsV2/{project_number}/fields", - "GET /orgs/{org}/projectsV2/{project_number}/items", - "GET /orgs/{org}/properties/values", - "GET /orgs/{org}/public_members", - "GET /orgs/{org}/repos", - "GET /orgs/{org}/rulesets", - "GET /orgs/{org}/rulesets/rule-suites", - "GET /orgs/{org}/rulesets/{ruleset_id}/history", - "GET /orgs/{org}/secret-scanning/alerts", - "GET /orgs/{org}/security-advisories", - "GET /orgs/{org}/settings/immutable-releases/repositories", - "GET /orgs/{org}/settings/network-configurations", - "GET /orgs/{org}/team/{team_slug}/copilot/metrics", - "GET /orgs/{org}/teams", - "GET /orgs/{org}/teams/{team_slug}/discussions", - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - "GET /orgs/{org}/teams/{team_slug}/invitations", - "GET /orgs/{org}/teams/{team_slug}/members", - "GET /orgs/{org}/teams/{team_slug}/projects", - "GET /orgs/{org}/teams/{team_slug}/repos", - "GET /orgs/{org}/teams/{team_slug}/teams", - "GET /projects/{project_id}/collaborators", - "GET /repos/{owner}/{repo}/actions/artifacts", - "GET /repos/{owner}/{repo}/actions/caches", - "GET /repos/{owner}/{repo}/actions/organization-secrets", - "GET /repos/{owner}/{repo}/actions/organization-variables", - "GET /repos/{owner}/{repo}/actions/runners", - "GET /repos/{owner}/{repo}/actions/runs", - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", - "GET /repos/{owner}/{repo}/actions/secrets", - "GET /repos/{owner}/{repo}/actions/variables", - "GET /repos/{owner}/{repo}/actions/workflows", - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", - "GET /repos/{owner}/{repo}/activity", - "GET /repos/{owner}/{repo}/assignees", - "GET /repos/{owner}/{repo}/attestations/{subject_digest}", - "GET /repos/{owner}/{repo}/branches", - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", - "GET /repos/{owner}/{repo}/code-scanning/alerts", - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", - "GET /repos/{owner}/{repo}/code-scanning/analyses", - "GET /repos/{owner}/{repo}/codespaces", - "GET /repos/{owner}/{repo}/codespaces/devcontainers", - "GET /repos/{owner}/{repo}/codespaces/secrets", - "GET /repos/{owner}/{repo}/collaborators", - "GET /repos/{owner}/{repo}/comments", - "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", - "GET /repos/{owner}/{repo}/commits", - "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", - "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", - "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", - "GET /repos/{owner}/{repo}/commits/{ref}/status", - "GET /repos/{owner}/{repo}/commits/{ref}/statuses", - "GET /repos/{owner}/{repo}/compare/{basehead}", - "GET /repos/{owner}/{repo}/compare/{base}...{head}", - "GET /repos/{owner}/{repo}/contributors", - "GET /repos/{owner}/{repo}/dependabot/alerts", - "GET /repos/{owner}/{repo}/dependabot/secrets", - "GET /repos/{owner}/{repo}/deployments", - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", - "GET /repos/{owner}/{repo}/environments", - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps", - "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets", - "GET /repos/{owner}/{repo}/environments/{environment_name}/variables", - "GET /repos/{owner}/{repo}/events", - "GET /repos/{owner}/{repo}/forks", - "GET /repos/{owner}/{repo}/hooks", - "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", - "GET /repos/{owner}/{repo}/invitations", - "GET /repos/{owner}/{repo}/issues", - "GET /repos/{owner}/{repo}/issues/comments", - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", - "GET /repos/{owner}/{repo}/issues/events", - "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", - "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by", - "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking", - "GET /repos/{owner}/{repo}/issues/{issue_number}/events", - "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", - "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", - "GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues", - "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", - "GET /repos/{owner}/{repo}/keys", - "GET /repos/{owner}/{repo}/labels", - "GET /repos/{owner}/{repo}/milestones", - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", - "GET /repos/{owner}/{repo}/notifications", - "GET /repos/{owner}/{repo}/pages/builds", - "GET /repos/{owner}/{repo}/projects", - "GET /repos/{owner}/{repo}/pulls", - "GET /repos/{owner}/{repo}/pulls/comments", - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", - "GET /repos/{owner}/{repo}/releases", - "GET /repos/{owner}/{repo}/releases/{release_id}/assets", - "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", - "GET /repos/{owner}/{repo}/rules/branches/{branch}", - "GET /repos/{owner}/{repo}/rulesets", - "GET /repos/{owner}/{repo}/rulesets/rule-suites", - "GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history", - "GET /repos/{owner}/{repo}/secret-scanning/alerts", - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", - "GET /repos/{owner}/{repo}/security-advisories", - "GET /repos/{owner}/{repo}/stargazers", - "GET /repos/{owner}/{repo}/subscribers", - "GET /repos/{owner}/{repo}/tags", - "GET /repos/{owner}/{repo}/teams", - "GET /repos/{owner}/{repo}/topics", - "GET /repositories", - "GET /search/code", - "GET /search/commits", - "GET /search/issues", - "GET /search/labels", - "GET /search/repositories", - "GET /search/topics", - "GET /search/users", - "GET /teams/{team_id}/discussions", - "GET /teams/{team_id}/discussions/{discussion_number}/comments", - "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", - "GET /teams/{team_id}/discussions/{discussion_number}/reactions", - "GET /teams/{team_id}/invitations", - "GET /teams/{team_id}/members", - "GET /teams/{team_id}/projects", - "GET /teams/{team_id}/repos", - "GET /teams/{team_id}/teams", - "GET /user/blocks", - "GET /user/codespaces", - "GET /user/codespaces/secrets", - "GET /user/emails", - "GET /user/followers", - "GET /user/following", - "GET /user/gpg_keys", - "GET /user/installations", - "GET /user/installations/{installation_id}/repositories", - "GET /user/issues", - "GET /user/keys", - "GET /user/marketplace_purchases", - "GET /user/marketplace_purchases/stubbed", - "GET /user/memberships/orgs", - "GET /user/migrations", - "GET /user/migrations/{migration_id}/repositories", - "GET /user/orgs", - "GET /user/packages", - "GET /user/packages/{package_type}/{package_name}/versions", - "GET /user/public_emails", - "GET /user/repos", - "GET /user/repository_invitations", - "GET /user/social_accounts", - "GET /user/ssh_signing_keys", - "GET /user/starred", - "GET /user/subscriptions", - "GET /user/teams", - "GET /users", - "GET /users/{username}/attestations/{subject_digest}", - "GET /users/{username}/events", - "GET /users/{username}/events/orgs/{org}", - "GET /users/{username}/events/public", - "GET /users/{username}/followers", - "GET /users/{username}/following", - "GET /users/{username}/gists", - "GET /users/{username}/gpg_keys", - "GET /users/{username}/keys", - "GET /users/{username}/orgs", - "GET /users/{username}/packages", - "GET /users/{username}/projects", - "GET /users/{username}/projectsV2", - "GET /users/{username}/projectsV2/{project_number}/fields", - "GET /users/{username}/projectsV2/{project_number}/items", - "GET /users/{username}/received_events", - "GET /users/{username}/received_events/public", - "GET /users/{username}/repos", - "GET /users/{username}/social_accounts", - "GET /users/{username}/ssh_signing_keys", - "GET /users/{username}/starred", - "GET /users/{username}/subscriptions" -]; -export { - paginatingEndpoints -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js deleted file mode 100644 index 02a5b10..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js +++ /dev/null @@ -1,22 +0,0 @@ -import { VERSION } from "./version.js"; -import { paginate } from "./paginate.js"; -import { iterator } from "./iterator.js"; -import { composePaginateRest } from "./compose-paginate.js"; -import { - isPaginatingEndpoint, - paginatingEndpoints -} from "./paginating-endpoints.js"; -function paginateRest(octokit) { - return { - paginate: Object.assign(paginate.bind(null, octokit), { - iterator: iterator.bind(null, octokit) - }) - }; -} -paginateRest.VERSION = VERSION; -export { - composePaginateRest, - isPaginatingEndpoint, - paginateRest, - paginatingEndpoints -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js deleted file mode 100644 index c6e2bc9..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js +++ /dev/null @@ -1,46 +0,0 @@ -import { normalizePaginatedListResponse } from "./normalize-paginated-list-response.js"; -function iterator(octokit, route, parameters) { - const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); - const requestMethod = typeof route === "function" ? route : octokit.request; - const method = options.method; - const headers = options.headers; - let url = options.url; - return { - [Symbol.asyncIterator]: () => ({ - async next() { - if (!url) return { done: true }; - try { - const response = await requestMethod({ method, url, headers }); - const normalizedResponse = normalizePaginatedListResponse(response); - url = ((normalizedResponse.headers.link || "").match( - /<([^<>]+)>;\s*rel="next"/ - ) || [])[1]; - if (!url && "total_commits" in normalizedResponse.data) { - const parsedUrl = new URL(normalizedResponse.url); - const params = parsedUrl.searchParams; - const page = parseInt(params.get("page") || "1", 10); - const per_page = parseInt(params.get("per_page") || "250", 10); - if (page * per_page < normalizedResponse.data.total_commits) { - params.set("page", String(page + 1)); - url = parsedUrl.toString(); - } - } - return { value: normalizedResponse }; - } catch (error) { - if (error.status !== 409) throw error; - url = ""; - return { - value: { - status: 200, - headers: {}, - data: [] - } - }; - } - } - }) - }; -} -export { - iterator -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js deleted file mode 100644 index 18ad9ed..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js +++ /dev/null @@ -1,33 +0,0 @@ -function normalizePaginatedListResponse(response) { - if (!response.data) { - return { - ...response, - data: [] - }; - } - const responseNeedsNormalization = ("total_count" in response.data || "total_commits" in response.data) && !("url" in response.data); - if (!responseNeedsNormalization) return response; - const incompleteResults = response.data.incomplete_results; - const repositorySelection = response.data.repository_selection; - const totalCount = response.data.total_count; - const totalCommits = response.data.total_commits; - delete response.data.incomplete_results; - delete response.data.repository_selection; - delete response.data.total_count; - delete response.data.total_commits; - const namespaceKey = Object.keys(response.data)[0]; - const data = response.data[namespaceKey]; - response.data = data; - if (typeof incompleteResults !== "undefined") { - response.data.incomplete_results = incompleteResults; - } - if (typeof repositorySelection !== "undefined") { - response.data.repository_selection = repositorySelection; - } - response.data.total_count = totalCount; - response.data.total_commits = totalCommits; - return response; -} -export { - normalizePaginatedListResponse -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js deleted file mode 100644 index 0e888b9..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js +++ /dev/null @@ -1,34 +0,0 @@ -import { iterator } from "./iterator.js"; -function paginate(octokit, route, parameters, mapFn) { - if (typeof parameters === "function") { - mapFn = parameters; - parameters = void 0; - } - return gather( - octokit, - [], - iterator(octokit, route, parameters)[Symbol.asyncIterator](), - mapFn - ); -} -function gather(octokit, results, iterator2, mapFn) { - return iterator2.next().then((result) => { - if (result.done) { - return results; - } - let earlyExit = false; - function done() { - earlyExit = true; - } - results = results.concat( - mapFn ? mapFn(result.value, done) : result.value.data - ); - if (earlyExit) { - return results; - } - return gather(octokit, results, iterator2, mapFn); - }); -} -export { - paginate -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js deleted file mode 100644 index f9a110a..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js +++ /dev/null @@ -1,15 +0,0 @@ -import { - paginatingEndpoints -} from "./generated/paginating-endpoints.js"; -import { paginatingEndpoints as paginatingEndpoints2 } from "./generated/paginating-endpoints.js"; -function isPaginatingEndpoint(arg) { - if (typeof arg === "string") { - return paginatingEndpoints.includes(arg); - } else { - return false; - } -} -export { - isPaginatingEndpoint, - paginatingEndpoints2 as paginatingEndpoints -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js deleted file mode 100644 index 5c8408f..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js +++ /dev/null @@ -1,4 +0,0 @@ -const VERSION = "14.0.0"; -export { - VERSION -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts deleted file mode 100644 index 484eadb..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import type { ComposePaginateInterface } from "./types.js"; -export declare const composePaginateRest: ComposePaginateInterface; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts deleted file mode 100644 index a45035a..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts +++ /dev/null @@ -1,2039 +0,0 @@ -import type { Endpoints } from "@octokit/types"; -export interface PaginatingEndpoints { - /** - * @see https://docs.github.com/rest/security-advisories/global-advisories#list-global-security-advisories - */ - "GET /advisories": { - parameters: Endpoints["GET /advisories"]["parameters"]; - response: Endpoints["GET /advisories"]["response"]; - }; - /** - * @see https://docs.github.com/rest/apps/webhooks#list-deliveries-for-an-app-webhook - */ - "GET /app/hook/deliveries": { - parameters: Endpoints["GET /app/hook/deliveries"]["parameters"]; - response: Endpoints["GET /app/hook/deliveries"]["response"]; - }; - /** - * @see https://docs.github.com/rest/apps/apps#list-installation-requests-for-the-authenticated-app - */ - "GET /app/installation-requests": { - parameters: Endpoints["GET /app/installation-requests"]["parameters"]; - response: Endpoints["GET /app/installation-requests"]["response"]; - }; - /** - * @see https://docs.github.com/enterprise-server@3.9/rest/apps/apps#list-installations-for-the-authenticated-app - */ - "GET /app/installations": { - parameters: Endpoints["GET /app/installations"]["parameters"]; - response: Endpoints["GET /app/installations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/classroom/classroom#list-accepted-assignments-for-an-assignment - */ - "GET /assignments/{assignment_id}/accepted_assignments": { - parameters: Endpoints["GET /assignments/{assignment_id}/accepted_assignments"]["parameters"]; - response: Endpoints["GET /assignments/{assignment_id}/accepted_assignments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/classroom/classroom#list-classrooms - */ - "GET /classrooms": { - parameters: Endpoints["GET /classrooms"]["parameters"]; - response: Endpoints["GET /classrooms"]["response"]; - }; - /** - * @see https://docs.github.com/rest/classroom/classroom#list-assignments-for-a-classroom - */ - "GET /classrooms/{classroom_id}/assignments": { - parameters: Endpoints["GET /classrooms/{classroom_id}/assignments"]["parameters"]; - response: Endpoints["GET /classrooms/{classroom_id}/assignments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/code-security/configurations#get-code-security-configurations-for-an-enterprise - */ - "GET /enterprises/{enterprise}/code-security/configurations": { - parameters: Endpoints["GET /enterprises/{enterprise}/code-security/configurations"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/code-security/configurations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/code-security/configurations#get-repositories-associated-with-an-enterprise-code-security-configuration - */ - "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories": { - parameters: Endpoints["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"]["response"]; - }; - /** - * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-an-enterprise - */ - "GET /enterprises/{enterprise}/dependabot/alerts": { - parameters: Endpoints["GET /enterprises/{enterprise}/dependabot/alerts"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/dependabot/alerts"]["response"]; - }; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-teams#list-enterprise-teams - */ - "GET /enterprises/{enterprise}/teams": { - parameters: Endpoints["GET /enterprises/{enterprise}/teams"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/teams"]["response"]; - }; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-members#list-members-in-an-enterprise-team - */ - "GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships": { - parameters: Endpoints["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships"]["response"]; - }; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#get-organization-assignments - */ - "GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations": { - parameters: Endpoints["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/events#list-public-events - */ - "GET /events": { - parameters: Endpoints["GET /events"]["parameters"]; - response: Endpoints["GET /events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/gists/gists#list-gists-for-the-authenticated-user - */ - "GET /gists": { - parameters: Endpoints["GET /gists"]["parameters"]; - response: Endpoints["GET /gists"]["response"]; - }; - /** - * @see https://docs.github.com/rest/gists/gists#list-public-gists - */ - "GET /gists/public": { - parameters: Endpoints["GET /gists/public"]["parameters"]; - response: Endpoints["GET /gists/public"]["response"]; - }; - /** - * @see https://docs.github.com/rest/gists/gists#list-starred-gists - */ - "GET /gists/starred": { - parameters: Endpoints["GET /gists/starred"]["parameters"]; - response: Endpoints["GET /gists/starred"]["response"]; - }; - /** - * @see https://docs.github.com/rest/gists/comments#list-gist-comments - */ - "GET /gists/{gist_id}/comments": { - parameters: Endpoints["GET /gists/{gist_id}/comments"]["parameters"]; - response: Endpoints["GET /gists/{gist_id}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/gists/gists#list-gist-commits - */ - "GET /gists/{gist_id}/commits": { - parameters: Endpoints["GET /gists/{gist_id}/commits"]["parameters"]; - response: Endpoints["GET /gists/{gist_id}/commits"]["response"]; - }; - /** - * @see https://docs.github.com/rest/gists/gists#list-gist-forks - */ - "GET /gists/{gist_id}/forks": { - parameters: Endpoints["GET /gists/{gist_id}/forks"]["parameters"]; - response: Endpoints["GET /gists/{gist_id}/forks"]["response"]; - }; - /** - * @see https://docs.github.com/rest/apps/installations#list-repositories-accessible-to-the-app-installation - */ - "GET /installation/repositories": { - parameters: Endpoints["GET /installation/repositories"]["parameters"]; - response: Endpoints["GET /installation/repositories"]["response"] & { - data: Endpoints["GET /installation/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/issues/issues#list-issues-assigned-to-the-authenticated-user - */ - "GET /issues": { - parameters: Endpoints["GET /issues"]["parameters"]; - response: Endpoints["GET /issues"]["response"]; - }; - /** - * @see https://docs.github.com/rest/licenses/licenses#get-all-commonly-used-licenses - */ - "GET /licenses": { - parameters: Endpoints["GET /licenses"]["parameters"]; - response: Endpoints["GET /licenses"]["response"]; - }; - /** - * @see https://docs.github.com/rest/apps/marketplace#list-plans - */ - "GET /marketplace_listing/plans": { - parameters: Endpoints["GET /marketplace_listing/plans"]["parameters"]; - response: Endpoints["GET /marketplace_listing/plans"]["response"]; - }; - /** - * @see https://docs.github.com/rest/apps/marketplace#list-accounts-for-a-plan - */ - "GET /marketplace_listing/plans/{plan_id}/accounts": { - parameters: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["parameters"]; - response: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["response"]; - }; - /** - * @see https://docs.github.com/rest/apps/marketplace#list-plans-stubbed - */ - "GET /marketplace_listing/stubbed/plans": { - parameters: Endpoints["GET /marketplace_listing/stubbed/plans"]["parameters"]; - response: Endpoints["GET /marketplace_listing/stubbed/plans"]["response"]; - }; - /** - * @see https://docs.github.com/rest/apps/marketplace#list-accounts-for-a-plan-stubbed - */ - "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts": { - parameters: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["parameters"]; - response: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/events#list-public-events-for-a-network-of-repositories - */ - "GET /networks/{owner}/{repo}/events": { - parameters: Endpoints["GET /networks/{owner}/{repo}/events"]["parameters"]; - response: Endpoints["GET /networks/{owner}/{repo}/events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user - */ - "GET /notifications": { - parameters: Endpoints["GET /notifications"]["parameters"]; - response: Endpoints["GET /notifications"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/orgs#list-organizations - */ - "GET /organizations": { - parameters: Endpoints["GET /organizations"]["parameters"]; - response: Endpoints["GET /organizations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/dependabot/repository-access#lists-the-repositories-dependabot-can-access-in-an-organization - */ - "GET /organizations/{org}/dependabot/repository-access": { - parameters: Endpoints["GET /organizations/{org}/dependabot/repository-access"]["parameters"]; - response: Endpoints["GET /organizations/{org}/dependabot/repository-access"]["response"] & { - data: Endpoints["GET /organizations/{org}/dependabot/repository-access"]["response"]["data"]["accessible_repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/cache#list-repositories-with-github-actions-cache-usage-for-an-organization - */ - "GET /orgs/{org}/actions/cache/usage-by-repository": { - parameters: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["response"]["data"]["repository_cache_usages"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#list-github-hosted-runners-for-an-organization - */ - "GET /orgs/{org}/actions/hosted-runners": { - parameters: Endpoints["GET /orgs/{org}/actions/hosted-runners"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/hosted-runners"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/hosted-runners"]["response"]["data"]["runners"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/permissions#list-selected-repositories-enabled-for-github-actions-in-an-organization - */ - "GET /orgs/{org}/actions/permissions/repositories": { - parameters: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/permissions#list-repositories-allowed-to-use-self-hosted-runners-in-an-organization - */ - "GET /orgs/{org}/actions/permissions/self-hosted-runners/repositories": { - parameters: Endpoints["GET /orgs/{org}/actions/permissions/self-hosted-runners/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/permissions/self-hosted-runners/repositories"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/permissions/self-hosted-runners/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#list-self-hosted-runner-groups-for-an-organization - */ - "GET /orgs/{org}/actions/runner-groups": { - parameters: Endpoints["GET /orgs/{org}/actions/runner-groups"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runner-groups"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/runner-groups"]["response"]["data"]["runner_groups"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#list-github-hosted-runners-in-a-group-for-an-organization - */ - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners": { - parameters: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"]["response"]["data"]["runners"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#list-repository-access-to-a-self-hosted-runner-group-in-an-organization - */ - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": { - parameters: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#list-self-hosted-runners-in-a-group-for-an-organization - */ - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners": { - parameters: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners"]["response"]["data"]["runners"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#list-self-hosted-runners-for-an-organization - */ - "GET /orgs/{org}/actions/runners": { - parameters: Endpoints["GET /orgs/{org}/actions/runners"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runners"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/runners"]["response"]["data"]["runners"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/secrets#list-organization-secrets - */ - "GET /orgs/{org}/actions/secrets": { - parameters: Endpoints["GET /orgs/{org}/actions/secrets"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/secrets"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/secrets"]["response"]["data"]["secrets"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/secrets#list-selected-repositories-for-an-organization-secret - */ - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories": { - parameters: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/variables#list-organization-variables - */ - "GET /orgs/{org}/actions/variables": { - parameters: Endpoints["GET /orgs/{org}/actions/variables"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/variables"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/variables"]["response"]["data"]["variables"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/variables#list-selected-repositories-for-an-organization-variable - */ - "GET /orgs/{org}/actions/variables/{name}/repositories": { - parameters: Endpoints["GET /orgs/{org}/actions/variables/{name}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/variables/{name}/repositories"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/variables/{name}/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/orgs/attestations#list-attestation-repositories - */ - "GET /orgs/{org}/attestations/repositories": { - parameters: Endpoints["GET /orgs/{org}/attestations/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/attestations/repositories"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/attestations#list-attestations - */ - "GET /orgs/{org}/attestations/{subject_digest}": { - parameters: Endpoints["GET /orgs/{org}/attestations/{subject_digest}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/attestations/{subject_digest}"]["response"] & { - data: Endpoints["GET /orgs/{org}/attestations/{subject_digest}"]["response"]["data"]["attestations"]; - }; - }; - /** - * @see https://docs.github.com/rest/orgs/blocking#list-users-blocked-by-an-organization - */ - "GET /orgs/{org}/blocks": { - parameters: Endpoints["GET /orgs/{org}/blocks"]["parameters"]; - response: Endpoints["GET /orgs/{org}/blocks"]["response"]; - }; - /** - * @see https://docs.github.com/rest/campaigns/campaigns#list-campaigns-for-an-organization - */ - "GET /orgs/{org}/campaigns": { - parameters: Endpoints["GET /orgs/{org}/campaigns"]["parameters"]; - response: Endpoints["GET /orgs/{org}/campaigns"]["response"]; - }; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#list-code-scanning-alerts-for-an-organization - */ - "GET /orgs/{org}/code-scanning/alerts": { - parameters: Endpoints["GET /orgs/{org}/code-scanning/alerts"]["parameters"]; - response: Endpoints["GET /orgs/{org}/code-scanning/alerts"]["response"]; - }; - /** - * @see https://docs.github.com/rest/code-security/configurations#get-code-security-configurations-for-an-organization - */ - "GET /orgs/{org}/code-security/configurations": { - parameters: Endpoints["GET /orgs/{org}/code-security/configurations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/code-security/configurations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/code-security/configurations#get-repositories-associated-with-a-code-security-configuration - */ - "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories": { - parameters: Endpoints["GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"]["response"]; - }; - /** - * @see https://docs.github.com/rest/codespaces/organizations#list-codespaces-for-the-organization - */ - "GET /orgs/{org}/codespaces": { - parameters: Endpoints["GET /orgs/{org}/codespaces"]["parameters"]; - response: Endpoints["GET /orgs/{org}/codespaces"]["response"] & { - data: Endpoints["GET /orgs/{org}/codespaces"]["response"]["data"]["codespaces"]; - }; - }; - /** - * @see https://docs.github.com/rest/codespaces/organization-secrets#list-organization-secrets - */ - "GET /orgs/{org}/codespaces/secrets": { - parameters: Endpoints["GET /orgs/{org}/codespaces/secrets"]["parameters"]; - response: Endpoints["GET /orgs/{org}/codespaces/secrets"]["response"] & { - data: Endpoints["GET /orgs/{org}/codespaces/secrets"]["response"]["data"]["secrets"]; - }; - }; - /** - * @see https://docs.github.com/rest/codespaces/organization-secrets#list-selected-repositories-for-an-organization-secret - */ - "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories": { - parameters: Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["response"] & { - data: Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/copilot/copilot-user-management#list-all-copilot-seat-assignments-for-an-organization - */ - "GET /orgs/{org}/copilot/billing/seats": { - parameters: Endpoints["GET /orgs/{org}/copilot/billing/seats"]["parameters"]; - response: Endpoints["GET /orgs/{org}/copilot/billing/seats"]["response"] & { - data: Endpoints["GET /orgs/{org}/copilot/billing/seats"]["response"]["data"]["seats"]; - }; - }; - /** - * @see https://docs.github.com/rest/copilot/copilot-metrics#get-copilot-metrics-for-an-organization - */ - "GET /orgs/{org}/copilot/metrics": { - parameters: Endpoints["GET /orgs/{org}/copilot/metrics"]["parameters"]; - response: Endpoints["GET /orgs/{org}/copilot/metrics"]["response"]; - }; - /** - * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-an-organization - */ - "GET /orgs/{org}/dependabot/alerts": { - parameters: Endpoints["GET /orgs/{org}/dependabot/alerts"]["parameters"]; - response: Endpoints["GET /orgs/{org}/dependabot/alerts"]["response"]; - }; - /** - * @see https://docs.github.com/rest/dependabot/secrets#list-organization-secrets - */ - "GET /orgs/{org}/dependabot/secrets": { - parameters: Endpoints["GET /orgs/{org}/dependabot/secrets"]["parameters"]; - response: Endpoints["GET /orgs/{org}/dependabot/secrets"]["response"] & { - data: Endpoints["GET /orgs/{org}/dependabot/secrets"]["response"]["data"]["secrets"]; - }; - }; - /** - * @see https://docs.github.com/rest/dependabot/secrets#list-selected-repositories-for-an-organization-secret - */ - "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories": { - parameters: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"] & { - data: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/activity/events#list-public-organization-events - */ - "GET /orgs/{org}/events": { - parameters: Endpoints["GET /orgs/{org}/events"]["parameters"]; - response: Endpoints["GET /orgs/{org}/events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/members#list-failed-organization-invitations - */ - "GET /orgs/{org}/failed_invitations": { - parameters: Endpoints["GET /orgs/{org}/failed_invitations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/failed_invitations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/webhooks#list-organization-webhooks - */ - "GET /orgs/{org}/hooks": { - parameters: Endpoints["GET /orgs/{org}/hooks"]["parameters"]; - response: Endpoints["GET /orgs/{org}/hooks"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/webhooks#list-deliveries-for-an-organization-webhook - */ - "GET /orgs/{org}/hooks/{hook_id}/deliveries": { - parameters: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries"]["parameters"]; - response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/api-insights#get-route-stats-by-actor - */ - "GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}": { - parameters: Endpoints["GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/api-insights#get-subject-stats - */ - "GET /orgs/{org}/insights/api/subject-stats": { - parameters: Endpoints["GET /orgs/{org}/insights/api/subject-stats"]["parameters"]; - response: Endpoints["GET /orgs/{org}/insights/api/subject-stats"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/api-insights#get-user-stats - */ - "GET /orgs/{org}/insights/api/user-stats/{user_id}": { - parameters: Endpoints["GET /orgs/{org}/insights/api/user-stats/{user_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/insights/api/user-stats/{user_id}"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/orgs#list-app-installations-for-an-organization - */ - "GET /orgs/{org}/installations": { - parameters: Endpoints["GET /orgs/{org}/installations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/installations"]["response"] & { - data: Endpoints["GET /orgs/{org}/installations"]["response"]["data"]["installations"]; - }; - }; - /** - * @see https://docs.github.com/rest/orgs/members#list-pending-organization-invitations - */ - "GET /orgs/{org}/invitations": { - parameters: Endpoints["GET /orgs/{org}/invitations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/invitations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/members#list-organization-invitation-teams - */ - "GET /orgs/{org}/invitations/{invitation_id}/teams": { - parameters: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["parameters"]; - response: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/issues#list-organization-issues-assigned-to-the-authenticated-user - */ - "GET /orgs/{org}/issues": { - parameters: Endpoints["GET /orgs/{org}/issues"]["parameters"]; - response: Endpoints["GET /orgs/{org}/issues"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/members#list-organization-members - */ - "GET /orgs/{org}/members": { - parameters: Endpoints["GET /orgs/{org}/members"]["parameters"]; - response: Endpoints["GET /orgs/{org}/members"]["response"]; - }; - /** - * @see https://docs.github.com/rest/codespaces/organizations#list-codespaces-for-a-user-in-organization - */ - "GET /orgs/{org}/members/{username}/codespaces": { - parameters: Endpoints["GET /orgs/{org}/members/{username}/codespaces"]["parameters"]; - response: Endpoints["GET /orgs/{org}/members/{username}/codespaces"]["response"] & { - data: Endpoints["GET /orgs/{org}/members/{username}/codespaces"]["response"]["data"]["codespaces"]; - }; - }; - /** - * @see https://docs.github.com/rest/migrations/orgs#list-organization-migrations - */ - "GET /orgs/{org}/migrations": { - parameters: Endpoints["GET /orgs/{org}/migrations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/migrations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/migrations/orgs#list-repositories-in-an-organization-migration - */ - "GET /orgs/{org}/migrations/{migration_id}/repositories": { - parameters: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/organization-roles#list-teams-that-are-assigned-to-an-organization-role - */ - "GET /orgs/{org}/organization-roles/{role_id}/teams": { - parameters: Endpoints["GET /orgs/{org}/organization-roles/{role_id}/teams"]["parameters"]; - response: Endpoints["GET /orgs/{org}/organization-roles/{role_id}/teams"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/organization-roles#list-users-that-are-assigned-to-an-organization-role - */ - "GET /orgs/{org}/organization-roles/{role_id}/users": { - parameters: Endpoints["GET /orgs/{org}/organization-roles/{role_id}/users"]["parameters"]; - response: Endpoints["GET /orgs/{org}/organization-roles/{role_id}/users"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/outside-collaborators#list-outside-collaborators-for-an-organization - */ - "GET /orgs/{org}/outside_collaborators": { - parameters: Endpoints["GET /orgs/{org}/outside_collaborators"]["parameters"]; - response: Endpoints["GET /orgs/{org}/outside_collaborators"]["response"]; - }; - /** - * @see https://docs.github.com/rest/packages/packages#list-packages-for-an-organization - */ - "GET /orgs/{org}/packages": { - parameters: Endpoints["GET /orgs/{org}/packages"]["parameters"]; - response: Endpoints["GET /orgs/{org}/packages"]["response"]; - }; - /** - * @see https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-an-organization - */ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions": { - parameters: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-requests-to-access-organization-resources-with-fine-grained-personal-access-tokens - */ - "GET /orgs/{org}/personal-access-token-requests": { - parameters: Endpoints["GET /orgs/{org}/personal-access-token-requests"]["parameters"]; - response: Endpoints["GET /orgs/{org}/personal-access-token-requests"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-repositories-requested-to-be-accessed-by-a-fine-grained-personal-access-token - */ - "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories": { - parameters: Endpoints["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-fine-grained-personal-access-tokens-with-access-to-organization-resources - */ - "GET /orgs/{org}/personal-access-tokens": { - parameters: Endpoints["GET /orgs/{org}/personal-access-tokens"]["parameters"]; - response: Endpoints["GET /orgs/{org}/personal-access-tokens"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-repositories-a-fine-grained-personal-access-token-has-access-to - */ - "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories": { - parameters: Endpoints["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"]["response"]; - }; - /** - * @see https://docs.github.com/rest/private-registries/organization-configurations#list-private-registries-for-an-organization - */ - "GET /orgs/{org}/private-registries": { - parameters: Endpoints["GET /orgs/{org}/private-registries"]["parameters"]; - response: Endpoints["GET /orgs/{org}/private-registries"]["response"] & { - data: Endpoints["GET /orgs/{org}/private-registries"]["response"]["data"]["configurations"]; - }; - }; - /** - * @see https://docs.github.com/rest/projects-classic/projects#list-organization-projects - */ - "GET /orgs/{org}/projects": { - parameters: Endpoints["GET /orgs/{org}/projects"]["parameters"]; - response: Endpoints["GET /orgs/{org}/projects"]["response"]; - }; - /** - * @see https://docs.github.com/rest/projects/projects#list-projects-for-organization - */ - "GET /orgs/{org}/projectsV2": { - parameters: Endpoints["GET /orgs/{org}/projectsV2"]["parameters"]; - response: Endpoints["GET /orgs/{org}/projectsV2"]["response"]; - }; - /** - * @see https://docs.github.com/rest/projects/fields#list-project-fields-for-organization - */ - "GET /orgs/{org}/projectsV2/{project_number}/fields": { - parameters: Endpoints["GET /orgs/{org}/projectsV2/{project_number}/fields"]["parameters"]; - response: Endpoints["GET /orgs/{org}/projectsV2/{project_number}/fields"]["response"]; - }; - /** - * @see https://docs.github.com/rest/projects/items#list-items-for-an-organization-owned-project - */ - "GET /orgs/{org}/projectsV2/{project_number}/items": { - parameters: Endpoints["GET /orgs/{org}/projectsV2/{project_number}/items"]["parameters"]; - response: Endpoints["GET /orgs/{org}/projectsV2/{project_number}/items"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/custom-properties#list-custom-property-values-for-organization-repositories - */ - "GET /orgs/{org}/properties/values": { - parameters: Endpoints["GET /orgs/{org}/properties/values"]["parameters"]; - response: Endpoints["GET /orgs/{org}/properties/values"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/members#list-public-organization-members - */ - "GET /orgs/{org}/public_members": { - parameters: Endpoints["GET /orgs/{org}/public_members"]["parameters"]; - response: Endpoints["GET /orgs/{org}/public_members"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/repos#list-organization-repositories - */ - "GET /orgs/{org}/repos": { - parameters: Endpoints["GET /orgs/{org}/repos"]["parameters"]; - response: Endpoints["GET /orgs/{org}/repos"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/rules#get-all-organization-repository-rulesets - */ - "GET /orgs/{org}/rulesets": { - parameters: Endpoints["GET /orgs/{org}/rulesets"]["parameters"]; - response: Endpoints["GET /orgs/{org}/rulesets"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/rule-suites#list-organization-rule-suites - */ - "GET /orgs/{org}/rulesets/rule-suites": { - parameters: Endpoints["GET /orgs/{org}/rulesets/rule-suites"]["parameters"]; - response: Endpoints["GET /orgs/{org}/rulesets/rule-suites"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/rules#get-organization-ruleset-history - */ - "GET /orgs/{org}/rulesets/{ruleset_id}/history": { - parameters: Endpoints["GET /orgs/{org}/rulesets/{ruleset_id}/history"]["parameters"]; - response: Endpoints["GET /orgs/{org}/rulesets/{ruleset_id}/history"]["response"]; - }; - /** - * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-secret-scanning-alerts-for-an-organization - */ - "GET /orgs/{org}/secret-scanning/alerts": { - parameters: Endpoints["GET /orgs/{org}/secret-scanning/alerts"]["parameters"]; - response: Endpoints["GET /orgs/{org}/secret-scanning/alerts"]["response"]; - }; - /** - * @see https://docs.github.com/rest/security-advisories/repository-advisories#list-repository-security-advisories-for-an-organization - */ - "GET /orgs/{org}/security-advisories": { - parameters: Endpoints["GET /orgs/{org}/security-advisories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/security-advisories"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/orgs#list-selected-repositories-for-immutable-releases-enforcement - */ - "GET /orgs/{org}/settings/immutable-releases/repositories": { - parameters: Endpoints["GET /orgs/{org}/settings/immutable-releases/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/settings/immutable-releases/repositories"]["response"] & { - data: Endpoints["GET /orgs/{org}/settings/immutable-releases/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/orgs/network-configurations#list-hosted-compute-network-configurations-for-an-organization - */ - "GET /orgs/{org}/settings/network-configurations": { - parameters: Endpoints["GET /orgs/{org}/settings/network-configurations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/settings/network-configurations"]["response"] & { - data: Endpoints["GET /orgs/{org}/settings/network-configurations"]["response"]["data"]["network_configurations"]; - }; - }; - /** - * @see https://docs.github.com/rest/copilot/copilot-metrics#get-copilot-metrics-for-a-team - */ - "GET /orgs/{org}/team/{team_slug}/copilot/metrics": { - parameters: Endpoints["GET /orgs/{org}/team/{team_slug}/copilot/metrics"]["parameters"]; - response: Endpoints["GET /orgs/{org}/team/{team_slug}/copilot/metrics"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/teams#list-teams - */ - "GET /orgs/{org}/teams": { - parameters: Endpoints["GET /orgs/{org}/teams"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/discussions#list-discussions - */ - "GET /orgs/{org}/teams/{team_slug}/discussions": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/members#list-pending-team-invitations - */ - "GET /orgs/{org}/teams/{team_slug}/invitations": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/members#list-team-members - */ - "GET /orgs/{org}/teams/{team_slug}/members": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/teams#list-team-projects - */ - "GET /orgs/{org}/teams/{team_slug}/projects": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/teams#list-team-repositories - */ - "GET /orgs/{org}/teams/{team_slug}/repos": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/teams#list-child-teams - */ - "GET /orgs/{org}/teams/{team_slug}/teams": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["response"]; - }; - /** - * @see https://docs.github.com/rest/projects-classic/collaborators#list-project-collaborators - */ - "GET /projects/{project_id}/collaborators": { - parameters: Endpoints["GET /projects/{project_id}/collaborators"]["parameters"]; - response: Endpoints["GET /projects/{project_id}/collaborators"]["response"]; - }; - /** - * @see https://docs.github.com/rest/actions/artifacts#list-artifacts-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/artifacts": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"]["data"]["artifacts"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/cache#list-github-actions-caches-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/caches": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["response"]["data"]["actions_caches"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/secrets#list-repository-organization-secrets - */ - "GET /repos/{owner}/{repo}/actions/organization-secrets": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/organization-secrets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/organization-secrets"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/organization-secrets"]["response"]["data"]["secrets"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/variables#list-repository-organization-variables - */ - "GET /repos/{owner}/{repo}/actions/organization-variables": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/organization-variables"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/organization-variables"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/organization-variables"]["response"]["data"]["variables"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#list-self-hosted-runners-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runners": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"]["data"]["runners"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runs": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"]["data"]["workflow_runs"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/artifacts#list-workflow-run-artifacts - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"]["data"]["artifacts"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run-attempt - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["response"]["data"]["jobs"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"]["data"]["jobs"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/secrets#list-repository-secrets - */ - "GET /repos/{owner}/{repo}/actions/secrets": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"]["data"]["secrets"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/variables#list-repository-variables - */ - "GET /repos/{owner}/{repo}/actions/variables": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/variables"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/variables"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/variables"]["response"]["data"]["variables"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/workflows#list-repository-workflows - */ - "GET /repos/{owner}/{repo}/actions/workflows": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"]["data"]["workflows"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-workflow - */ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"]["data"]["workflow_runs"]; - }; - }; - /** - * @see https://docs.github.com/rest/repos/repos#list-repository-activities - */ - "GET /repos/{owner}/{repo}/activity": { - parameters: Endpoints["GET /repos/{owner}/{repo}/activity"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/activity"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/assignees#list-assignees - */ - "GET /repos/{owner}/{repo}/assignees": { - parameters: Endpoints["GET /repos/{owner}/{repo}/assignees"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/assignees"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/repos#list-attestations - */ - "GET /repos/{owner}/{repo}/attestations/{subject_digest}": { - parameters: Endpoints["GET /repos/{owner}/{repo}/attestations/{subject_digest}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/attestations/{subject_digest}"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/attestations/{subject_digest}"]["response"]["data"]["attestations"]; - }; - }; - /** - * @see https://docs.github.com/rest/branches/branches#list-branches - */ - "GET /repos/{owner}/{repo}/branches": { - parameters: Endpoints["GET /repos/{owner}/{repo}/branches"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches"]["response"]; - }; - /** - * @see https://docs.github.com/rest/checks/runs#list-check-run-annotations - */ - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": { - parameters: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/checks/runs#list-check-runs-in-a-check-suite - */ - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": { - parameters: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"]["data"]["check_runs"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-alerts-for-a-repository - */ - "GET /repos/{owner}/{repo}/code-scanning/alerts": { - parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["response"]; - }; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#list-instances-of-a-code-scanning-alert - */ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances": { - parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["response"]; - }; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#list-code-scanning-analyses-for-a-repository - */ - "GET /repos/{owner}/{repo}/code-scanning/analyses": { - parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["response"]; - }; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#list-codespaces-in-a-repository-for-the-authenticated-user - */ - "GET /repos/{owner}/{repo}/codespaces": { - parameters: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["response"]["data"]["codespaces"]; - }; - }; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#list-devcontainer-configurations-in-a-repository-for-the-authenticated-user - */ - "GET /repos/{owner}/{repo}/codespaces/devcontainers": { - parameters: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["response"]["data"]["devcontainers"]; - }; - }; - /** - * @see https://docs.github.com/rest/codespaces/repository-secrets#list-repository-secrets - */ - "GET /repos/{owner}/{repo}/codespaces/secrets": { - parameters: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["response"]["data"]["secrets"]; - }; - }; - /** - * @see https://docs.github.com/rest/collaborators/collaborators#list-repository-collaborators - */ - "GET /repos/{owner}/{repo}/collaborators": { - parameters: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["response"]; - }; - /** - * @see https://docs.github.com/rest/commits/comments#list-commit-comments-for-a-repository - */ - "GET /repos/{owner}/{repo}/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-commit-comment - */ - "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions": { - parameters: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/commits/commits#list-commits - */ - "GET /repos/{owner}/{repo}/commits": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits"]["response"]; - }; - /** - * @see https://docs.github.com/rest/commits/comments#list-commit-comments - */ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/commits/commits#list-pull-requests-associated-with-a-commit - */ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["response"]; - }; - /** - * @see https://docs.github.com/rest/checks/runs#list-check-runs-for-a-git-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/check-runs": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"]["data"]["check_runs"]; - }; - }; - /** - * @see https://docs.github.com/rest/checks/suites#list-check-suites-for-a-git-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/check-suites": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"]["data"]["check_suites"]; - }; - }; - /** - * @see https://docs.github.com/rest/commits/statuses#get-the-combined-status-for-a-specific-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/status": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["response"]["data"]["statuses"]; - }; - }; - /** - * @see https://docs.github.com/rest/commits/statuses#list-commit-statuses-for-a-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/statuses": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["response"]; - }; - /** - * @see https://docs.github.com/rest/commits/commits#compare-two-commits - */ - "GET /repos/{owner}/{repo}/compare/{basehead}": { - parameters: Endpoints["GET /repos/{owner}/{repo}/compare/{basehead}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/compare/{basehead}"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/compare/{basehead}"]["response"]["data"]["commits"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/repos#compare-two-commits - */ - "GET /repos/{owner}/{repo}/compare/{base}...{head}": { - parameters: Endpoints["GET /repos/{owner}/{repo}/compare/{base}...{head}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/compare/{base}...{head}"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/compare/{base}...{head}"]["response"]["data"]["commits"]; - }; - }; - /** - * @see https://docs.github.com/rest/repos/repos#list-repository-contributors - */ - "GET /repos/{owner}/{repo}/contributors": { - parameters: Endpoints["GET /repos/{owner}/{repo}/contributors"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/contributors"]["response"]; - }; - /** - * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-a-repository - */ - "GET /repos/{owner}/{repo}/dependabot/alerts": { - parameters: Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts"]["response"]; - }; - /** - * @see https://docs.github.com/rest/dependabot/secrets#list-repository-secrets - */ - "GET /repos/{owner}/{repo}/dependabot/secrets": { - parameters: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["response"]["data"]["secrets"]; - }; - }; - /** - * @see https://docs.github.com/rest/deployments/deployments#list-deployments - */ - "GET /repos/{owner}/{repo}/deployments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/deployments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/deployments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/deployments/statuses#list-deployment-statuses - */ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": { - parameters: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["response"]; - }; - /** - * @see https://docs.github.com/rest/deployments/environments#list-environments - */ - "GET /repos/{owner}/{repo}/environments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/environments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/environments"]["response"]["data"]["environments"]; - }; - }; - /** - * @see https://docs.github.com/rest/deployments/branch-policies#list-deployment-branch-policies - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies": { - parameters: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["response"]["data"]["branch_policies"]; - }; - }; - /** - * @see https://docs.github.com/rest/deployments/protection-rules#list-custom-deployment-rule-integrations-available-for-an-environment - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps": { - parameters: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"]["response"]["data"]["available_custom_deployment_protection_rule_integrations"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/secrets#list-environment-secrets - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets": { - parameters: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"]["response"]["data"]["secrets"]; - }; - }; - /** - * @see https://docs.github.com/rest/actions/variables#list-environment-variables - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/variables": { - parameters: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"]["response"]["data"]["variables"]; - }; - }; - /** - * @see https://docs.github.com/rest/activity/events#list-repository-events - */ - "GET /repos/{owner}/{repo}/events": { - parameters: Endpoints["GET /repos/{owner}/{repo}/events"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/forks#list-forks - */ - "GET /repos/{owner}/{repo}/forks": { - parameters: Endpoints["GET /repos/{owner}/{repo}/forks"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/forks"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/webhooks#list-repository-webhooks - */ - "GET /repos/{owner}/{repo}/hooks": { - parameters: Endpoints["GET /repos/{owner}/{repo}/hooks"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/hooks"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/webhooks#list-deliveries-for-a-repository-webhook - */ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries": { - parameters: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"]["response"]; - }; - /** - * @see https://docs.github.com/rest/collaborators/invitations#list-repository-invitations - */ - "GET /repos/{owner}/{repo}/invitations": { - parameters: Endpoints["GET /repos/{owner}/{repo}/invitations"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/invitations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/issues#list-repository-issues - */ - "GET /repos/{owner}/{repo}/issues": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/comments#list-issue-comments-for-a-repository - */ - "GET /repos/{owner}/{repo}/issues/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-an-issue-comment - */ - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/events#list-issue-events-for-a-repository - */ - "GET /repos/{owner}/{repo}/issues/events": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/comments#list-issue-comments - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/issue-dependencies#list-dependencies-an-issue-is-blocked-by - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/issue-dependencies#list-dependencies-an-issue-is-blocking - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/events#list-issue-events - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/events": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/labels#list-labels-for-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/labels": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/sub-issues#list-sub-issues - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/timeline#list-timeline-events-for-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["response"]; - }; - /** - * @see https://docs.github.com/rest/deploy-keys/deploy-keys#list-deploy-keys - */ - "GET /repos/{owner}/{repo}/keys": { - parameters: Endpoints["GET /repos/{owner}/{repo}/keys"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/keys"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/labels#list-labels-for-a-repository - */ - "GET /repos/{owner}/{repo}/labels": { - parameters: Endpoints["GET /repos/{owner}/{repo}/labels"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/labels"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/milestones#list-milestones - */ - "GET /repos/{owner}/{repo}/milestones": { - parameters: Endpoints["GET /repos/{owner}/{repo}/milestones"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/milestones"]["response"]; - }; - /** - * @see https://docs.github.com/rest/issues/labels#list-labels-for-issues-in-a-milestone - */ - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels": { - parameters: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/notifications#list-repository-notifications-for-the-authenticated-user - */ - "GET /repos/{owner}/{repo}/notifications": { - parameters: Endpoints["GET /repos/{owner}/{repo}/notifications"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/notifications"]["response"]; - }; - /** - * @see https://docs.github.com/rest/pages/pages#list-apiname-pages-builds - */ - "GET /repos/{owner}/{repo}/pages/builds": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["response"]; - }; - /** - * @see https://docs.github.com/rest/projects-classic/projects#list-repository-projects - */ - "GET /repos/{owner}/{repo}/projects": { - parameters: Endpoints["GET /repos/{owner}/{repo}/projects"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/projects"]["response"]; - }; - /** - * @see https://docs.github.com/rest/pulls/pulls#list-pull-requests - */ - "GET /repos/{owner}/{repo}/pulls": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls"]["response"]; - }; - /** - * @see https://docs.github.com/rest/pulls/comments#list-review-comments-in-a-repository - */ - "GET /repos/{owner}/{repo}/pulls/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-pull-request-review-comment - */ - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/pulls/comments#list-review-comments-on-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/pulls/pulls#list-commits-on-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["response"]; - }; - /** - * @see https://docs.github.com/rest/pulls/pulls#list-pull-requests-files - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/files": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["response"]; - }; - /** - * @see https://docs.github.com/rest/pulls/reviews#list-reviews-for-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["response"]; - }; - /** - * @see https://docs.github.com/rest/pulls/reviews#list-comments-for-a-pull-request-review - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/releases/releases#list-releases - */ - "GET /repos/{owner}/{repo}/releases": { - parameters: Endpoints["GET /repos/{owner}/{repo}/releases"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/releases"]["response"]; - }; - /** - * @see https://docs.github.com/rest/releases/assets#list-release-assets - */ - "GET /repos/{owner}/{repo}/releases/{release_id}/assets": { - parameters: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-release - */ - "GET /repos/{owner}/{repo}/releases/{release_id}/reactions": { - parameters: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/rules#get-rules-for-a-branch - */ - "GET /repos/{owner}/{repo}/rules/branches/{branch}": { - parameters: Endpoints["GET /repos/{owner}/{repo}/rules/branches/{branch}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/rules/branches/{branch}"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/rules#get-all-repository-rulesets - */ - "GET /repos/{owner}/{repo}/rulesets": { - parameters: Endpoints["GET /repos/{owner}/{repo}/rulesets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/rulesets"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/rule-suites#list-repository-rule-suites - */ - "GET /repos/{owner}/{repo}/rulesets/rule-suites": { - parameters: Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/rules#get-repository-ruleset-history - */ - "GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history": { - parameters: Endpoints["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history"]["response"]; - }; - /** - * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-secret-scanning-alerts-for-a-repository - */ - "GET /repos/{owner}/{repo}/secret-scanning/alerts": { - parameters: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["response"]; - }; - /** - * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-locations-for-a-secret-scanning-alert - */ - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations": { - parameters: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/security-advisories/repository-advisories#list-repository-security-advisories - */ - "GET /repos/{owner}/{repo}/security-advisories": { - parameters: Endpoints["GET /repos/{owner}/{repo}/security-advisories"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/security-advisories"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/starring#list-stargazers - */ - "GET /repos/{owner}/{repo}/stargazers": { - parameters: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/watching#list-watchers - */ - "GET /repos/{owner}/{repo}/subscribers": { - parameters: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/repos#list-repository-tags - */ - "GET /repos/{owner}/{repo}/tags": { - parameters: Endpoints["GET /repos/{owner}/{repo}/tags"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/tags"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/repos#list-repository-teams - */ - "GET /repos/{owner}/{repo}/teams": { - parameters: Endpoints["GET /repos/{owner}/{repo}/teams"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/teams"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/repos#get-all-repository-topics - */ - "GET /repos/{owner}/{repo}/topics": { - parameters: Endpoints["GET /repos/{owner}/{repo}/topics"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/topics"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/topics"]["response"]["data"]["names"]; - }; - }; - /** - * @see https://docs.github.com/rest/repos/repos#list-public-repositories - */ - "GET /repositories": { - parameters: Endpoints["GET /repositories"]["parameters"]; - response: Endpoints["GET /repositories"]["response"]; - }; - /** - * @see https://docs.github.com/rest/search/search#search-code - */ - "GET /search/code": { - parameters: Endpoints["GET /search/code"]["parameters"]; - response: Endpoints["GET /search/code"]["response"] & { - data: Endpoints["GET /search/code"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/rest/search/search#search-commits - */ - "GET /search/commits": { - parameters: Endpoints["GET /search/commits"]["parameters"]; - response: Endpoints["GET /search/commits"]["response"] & { - data: Endpoints["GET /search/commits"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/rest/search/search#search-issues-and-pull-requests - */ - "GET /search/issues": { - parameters: Endpoints["GET /search/issues"]["parameters"]; - response: Endpoints["GET /search/issues"]["response"] & { - data: Endpoints["GET /search/issues"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/rest/search/search#search-labels - */ - "GET /search/labels": { - parameters: Endpoints["GET /search/labels"]["parameters"]; - response: Endpoints["GET /search/labels"]["response"] & { - data: Endpoints["GET /search/labels"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/rest/search/search#search-repositories - */ - "GET /search/repositories": { - parameters: Endpoints["GET /search/repositories"]["parameters"]; - response: Endpoints["GET /search/repositories"]["response"] & { - data: Endpoints["GET /search/repositories"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/rest/search/search#search-topics - */ - "GET /search/topics": { - parameters: Endpoints["GET /search/topics"]["parameters"]; - response: Endpoints["GET /search/topics"]["response"] & { - data: Endpoints["GET /search/topics"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/rest/search/search#search-users - */ - "GET /search/users": { - parameters: Endpoints["GET /search/users"]["parameters"]; - response: Endpoints["GET /search/users"]["response"] & { - data: Endpoints["GET /search/users"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/rest/teams/discussions#list-discussions-legacy - */ - "GET /teams/{team_id}/discussions": { - parameters: Endpoints["GET /teams/{team_id}/discussions"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/discussions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/comments": { - parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": { - parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/reactions": { - parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/reactions"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/members#list-pending-team-invitations-legacy - */ - "GET /teams/{team_id}/invitations": { - parameters: Endpoints["GET /teams/{team_id}/invitations"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/invitations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/members#list-team-members-legacy - */ - "GET /teams/{team_id}/members": { - parameters: Endpoints["GET /teams/{team_id}/members"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/members"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/teams#list-team-projects-legacy - */ - "GET /teams/{team_id}/projects": { - parameters: Endpoints["GET /teams/{team_id}/projects"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/projects"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/teams#list-team-repositories-legacy - */ - "GET /teams/{team_id}/repos": { - parameters: Endpoints["GET /teams/{team_id}/repos"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/repos"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/teams#list-child-teams-legacy - */ - "GET /teams/{team_id}/teams": { - parameters: Endpoints["GET /teams/{team_id}/teams"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/teams"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/blocking#list-users-blocked-by-the-authenticated-user - */ - "GET /user/blocks": { - parameters: Endpoints["GET /user/blocks"]["parameters"]; - response: Endpoints["GET /user/blocks"]["response"]; - }; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#list-codespaces-for-the-authenticated-user - */ - "GET /user/codespaces": { - parameters: Endpoints["GET /user/codespaces"]["parameters"]; - response: Endpoints["GET /user/codespaces"]["response"] & { - data: Endpoints["GET /user/codespaces"]["response"]["data"]["codespaces"]; - }; - }; - /** - * @see https://docs.github.com/rest/codespaces/secrets#list-secrets-for-the-authenticated-user - */ - "GET /user/codespaces/secrets": { - parameters: Endpoints["GET /user/codespaces/secrets"]["parameters"]; - response: Endpoints["GET /user/codespaces/secrets"]["response"] & { - data: Endpoints["GET /user/codespaces/secrets"]["response"]["data"]["secrets"]; - }; - }; - /** - * @see https://docs.github.com/rest/users/emails#list-email-addresses-for-the-authenticated-user - */ - "GET /user/emails": { - parameters: Endpoints["GET /user/emails"]["parameters"]; - response: Endpoints["GET /user/emails"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/followers#list-followers-of-the-authenticated-user - */ - "GET /user/followers": { - parameters: Endpoints["GET /user/followers"]["parameters"]; - response: Endpoints["GET /user/followers"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/followers#list-the-people-the-authenticated-user-follows - */ - "GET /user/following": { - parameters: Endpoints["GET /user/following"]["parameters"]; - response: Endpoints["GET /user/following"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/gpg-keys#list-gpg-keys-for-the-authenticated-user - */ - "GET /user/gpg_keys": { - parameters: Endpoints["GET /user/gpg_keys"]["parameters"]; - response: Endpoints["GET /user/gpg_keys"]["response"]; - }; - /** - * @see https://docs.github.com/rest/apps/installations#list-app-installations-accessible-to-the-user-access-token - */ - "GET /user/installations": { - parameters: Endpoints["GET /user/installations"]["parameters"]; - response: Endpoints["GET /user/installations"]["response"] & { - data: Endpoints["GET /user/installations"]["response"]["data"]["installations"]; - }; - }; - /** - * @see https://docs.github.com/rest/apps/installations#list-repositories-accessible-to-the-user-access-token - */ - "GET /user/installations/{installation_id}/repositories": { - parameters: Endpoints["GET /user/installations/{installation_id}/repositories"]["parameters"]; - response: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"] & { - data: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/issues/issues#list-user-account-issues-assigned-to-the-authenticated-user - */ - "GET /user/issues": { - parameters: Endpoints["GET /user/issues"]["parameters"]; - response: Endpoints["GET /user/issues"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/keys#list-public-ssh-keys-for-the-authenticated-user - */ - "GET /user/keys": { - parameters: Endpoints["GET /user/keys"]["parameters"]; - response: Endpoints["GET /user/keys"]["response"]; - }; - /** - * @see https://docs.github.com/rest/apps/marketplace#list-subscriptions-for-the-authenticated-user - */ - "GET /user/marketplace_purchases": { - parameters: Endpoints["GET /user/marketplace_purchases"]["parameters"]; - response: Endpoints["GET /user/marketplace_purchases"]["response"]; - }; - /** - * @see https://docs.github.com/rest/apps/marketplace#list-subscriptions-for-the-authenticated-user-stubbed - */ - "GET /user/marketplace_purchases/stubbed": { - parameters: Endpoints["GET /user/marketplace_purchases/stubbed"]["parameters"]; - response: Endpoints["GET /user/marketplace_purchases/stubbed"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/members#list-organization-memberships-for-the-authenticated-user - */ - "GET /user/memberships/orgs": { - parameters: Endpoints["GET /user/memberships/orgs"]["parameters"]; - response: Endpoints["GET /user/memberships/orgs"]["response"]; - }; - /** - * @see https://docs.github.com/rest/migrations/users#list-user-migrations - */ - "GET /user/migrations": { - parameters: Endpoints["GET /user/migrations"]["parameters"]; - response: Endpoints["GET /user/migrations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/migrations/users#list-repositories-for-a-user-migration - */ - "GET /user/migrations/{migration_id}/repositories": { - parameters: Endpoints["GET /user/migrations/{migration_id}/repositories"]["parameters"]; - response: Endpoints["GET /user/migrations/{migration_id}/repositories"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/orgs#list-organizations-for-the-authenticated-user - */ - "GET /user/orgs": { - parameters: Endpoints["GET /user/orgs"]["parameters"]; - response: Endpoints["GET /user/orgs"]["response"]; - }; - /** - * @see https://docs.github.com/rest/packages/packages#list-packages-for-the-authenticated-users-namespace - */ - "GET /user/packages": { - parameters: Endpoints["GET /user/packages"]["parameters"]; - response: Endpoints["GET /user/packages"]["response"]; - }; - /** - * @see https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-the-authenticated-user - */ - "GET /user/packages/{package_type}/{package_name}/versions": { - parameters: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["parameters"]; - response: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/emails#list-public-email-addresses-for-the-authenticated-user - */ - "GET /user/public_emails": { - parameters: Endpoints["GET /user/public_emails"]["parameters"]; - response: Endpoints["GET /user/public_emails"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/repos#list-repositories-for-the-authenticated-user - */ - "GET /user/repos": { - parameters: Endpoints["GET /user/repos"]["parameters"]; - response: Endpoints["GET /user/repos"]["response"]; - }; - /** - * @see https://docs.github.com/rest/collaborators/invitations#list-repository-invitations-for-the-authenticated-user - */ - "GET /user/repository_invitations": { - parameters: Endpoints["GET /user/repository_invitations"]["parameters"]; - response: Endpoints["GET /user/repository_invitations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/social-accounts#list-social-accounts-for-the-authenticated-user - */ - "GET /user/social_accounts": { - parameters: Endpoints["GET /user/social_accounts"]["parameters"]; - response: Endpoints["GET /user/social_accounts"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/ssh-signing-keys#list-ssh-signing-keys-for-the-authenticated-user - */ - "GET /user/ssh_signing_keys": { - parameters: Endpoints["GET /user/ssh_signing_keys"]["parameters"]; - response: Endpoints["GET /user/ssh_signing_keys"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/starring#list-repositories-starred-by-the-authenticated-user - */ - "GET /user/starred": { - parameters: Endpoints["GET /user/starred"]["parameters"]; - response: Endpoints["GET /user/starred"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/watching#list-repositories-watched-by-the-authenticated-user - */ - "GET /user/subscriptions": { - parameters: Endpoints["GET /user/subscriptions"]["parameters"]; - response: Endpoints["GET /user/subscriptions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/teams/teams#list-teams-for-the-authenticated-user - */ - "GET /user/teams": { - parameters: Endpoints["GET /user/teams"]["parameters"]; - response: Endpoints["GET /user/teams"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/users#list-users - */ - "GET /users": { - parameters: Endpoints["GET /users"]["parameters"]; - response: Endpoints["GET /users"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/attestations#list-attestations - */ - "GET /users/{username}/attestations/{subject_digest}": { - parameters: Endpoints["GET /users/{username}/attestations/{subject_digest}"]["parameters"]; - response: Endpoints["GET /users/{username}/attestations/{subject_digest}"]["response"] & { - data: Endpoints["GET /users/{username}/attestations/{subject_digest}"]["response"]["data"]["attestations"]; - }; - }; - /** - * @see https://docs.github.com/rest/activity/events#list-events-for-the-authenticated-user - */ - "GET /users/{username}/events": { - parameters: Endpoints["GET /users/{username}/events"]["parameters"]; - response: Endpoints["GET /users/{username}/events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/events#list-organization-events-for-the-authenticated-user - */ - "GET /users/{username}/events/orgs/{org}": { - parameters: Endpoints["GET /users/{username}/events/orgs/{org}"]["parameters"]; - response: Endpoints["GET /users/{username}/events/orgs/{org}"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/events#list-public-events-for-a-user - */ - "GET /users/{username}/events/public": { - parameters: Endpoints["GET /users/{username}/events/public"]["parameters"]; - response: Endpoints["GET /users/{username}/events/public"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/followers#list-followers-of-a-user - */ - "GET /users/{username}/followers": { - parameters: Endpoints["GET /users/{username}/followers"]["parameters"]; - response: Endpoints["GET /users/{username}/followers"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/followers#list-the-people-a-user-follows - */ - "GET /users/{username}/following": { - parameters: Endpoints["GET /users/{username}/following"]["parameters"]; - response: Endpoints["GET /users/{username}/following"]["response"]; - }; - /** - * @see https://docs.github.com/rest/gists/gists#list-gists-for-a-user - */ - "GET /users/{username}/gists": { - parameters: Endpoints["GET /users/{username}/gists"]["parameters"]; - response: Endpoints["GET /users/{username}/gists"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/gpg-keys#list-gpg-keys-for-a-user - */ - "GET /users/{username}/gpg_keys": { - parameters: Endpoints["GET /users/{username}/gpg_keys"]["parameters"]; - response: Endpoints["GET /users/{username}/gpg_keys"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/keys#list-public-keys-for-a-user - */ - "GET /users/{username}/keys": { - parameters: Endpoints["GET /users/{username}/keys"]["parameters"]; - response: Endpoints["GET /users/{username}/keys"]["response"]; - }; - /** - * @see https://docs.github.com/rest/orgs/orgs#list-organizations-for-a-user - */ - "GET /users/{username}/orgs": { - parameters: Endpoints["GET /users/{username}/orgs"]["parameters"]; - response: Endpoints["GET /users/{username}/orgs"]["response"]; - }; - /** - * @see https://docs.github.com/rest/packages/packages#list-packages-for-a-user - */ - "GET /users/{username}/packages": { - parameters: Endpoints["GET /users/{username}/packages"]["parameters"]; - response: Endpoints["GET /users/{username}/packages"]["response"]; - }; - /** - * @see https://docs.github.com/rest/projects-classic/projects#list-user-projects - */ - "GET /users/{username}/projects": { - parameters: Endpoints["GET /users/{username}/projects"]["parameters"]; - response: Endpoints["GET /users/{username}/projects"]["response"]; - }; - /** - * @see https://docs.github.com/rest/projects/projects#list-projects-for-user - */ - "GET /users/{username}/projectsV2": { - parameters: Endpoints["GET /users/{username}/projectsV2"]["parameters"]; - response: Endpoints["GET /users/{username}/projectsV2"]["response"]; - }; - /** - * @see https://docs.github.com/rest/projects/fields#list-project-fields-for-user - */ - "GET /users/{username}/projectsV2/{project_number}/fields": { - parameters: Endpoints["GET /users/{username}/projectsV2/{project_number}/fields"]["parameters"]; - response: Endpoints["GET /users/{username}/projectsV2/{project_number}/fields"]["response"]; - }; - /** - * @see https://docs.github.com/rest/projects/items#list-items-for-a-user-owned-project - */ - "GET /users/{username}/projectsV2/{project_number}/items": { - parameters: Endpoints["GET /users/{username}/projectsV2/{project_number}/items"]["parameters"]; - response: Endpoints["GET /users/{username}/projectsV2/{project_number}/items"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/events#list-events-received-by-the-authenticated-user - */ - "GET /users/{username}/received_events": { - parameters: Endpoints["GET /users/{username}/received_events"]["parameters"]; - response: Endpoints["GET /users/{username}/received_events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/events#list-public-events-received-by-a-user - */ - "GET /users/{username}/received_events/public": { - parameters: Endpoints["GET /users/{username}/received_events/public"]["parameters"]; - response: Endpoints["GET /users/{username}/received_events/public"]["response"]; - }; - /** - * @see https://docs.github.com/rest/repos/repos#list-repositories-for-a-user - */ - "GET /users/{username}/repos": { - parameters: Endpoints["GET /users/{username}/repos"]["parameters"]; - response: Endpoints["GET /users/{username}/repos"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/social-accounts#list-social-accounts-for-a-user - */ - "GET /users/{username}/social_accounts": { - parameters: Endpoints["GET /users/{username}/social_accounts"]["parameters"]; - response: Endpoints["GET /users/{username}/social_accounts"]["response"]; - }; - /** - * @see https://docs.github.com/rest/users/ssh-signing-keys#list-ssh-signing-keys-for-a-user - */ - "GET /users/{username}/ssh_signing_keys": { - parameters: Endpoints["GET /users/{username}/ssh_signing_keys"]["parameters"]; - response: Endpoints["GET /users/{username}/ssh_signing_keys"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/starring#list-repositories-starred-by-a-user - */ - "GET /users/{username}/starred": { - parameters: Endpoints["GET /users/{username}/starred"]["parameters"]; - response: Endpoints["GET /users/{username}/starred"]["response"]; - }; - /** - * @see https://docs.github.com/rest/activity/watching#list-repositories-watched-by-a-user - */ - "GET /users/{username}/subscriptions": { - parameters: Endpoints["GET /users/{username}/subscriptions"]["parameters"]; - response: Endpoints["GET /users/{username}/subscriptions"]["response"]; - }; -} -export declare const paginatingEndpoints: (keyof PaginatingEndpoints)[]; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts deleted file mode 100644 index 4a5c6a7..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { Octokit } from "@octokit/core"; -import type { PaginateInterface } from "./types.js"; -export type { PaginateInterface, PaginatingEndpoints } from "./types.js"; -export { composePaginateRest } from "./compose-paginate.js"; -export { isPaginatingEndpoint, paginatingEndpoints, } from "./paginating-endpoints.js"; -/** - * @param octokit Octokit instance - * @param options Options passed to Octokit constructor - */ -export declare function paginateRest(octokit: Octokit): { - paginate: PaginateInterface; -}; -export declare namespace paginateRest { - var VERSION: string; -} diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts deleted file mode 100644 index ac6a42b..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { Octokit } from "@octokit/core"; -import type { RequestInterface, RequestParameters, Route } from "./types.js"; -export declare function iterator(octokit: Octokit, route: Route | RequestInterface, parameters?: RequestParameters): AsyncIterable; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts deleted file mode 100644 index 4b15bf0..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Some “list” response that can be paginated have a different response structure - * - * They have a `total_count` key in the response (search also has `incomplete_results`, - * /installation/repositories also has `repository_selection`), as well as a key with - * the list of the items which name varies from endpoint to endpoint. - * - * Octokit normalizes these responses so that paginated results are always returned following - * the same structure. One challenge is that if the list response has only one page, no Link - * header is provided, so this header alone is not sufficient to check wether a response is - * paginated or not. - * - * We check if a "total_count" key is present in the response data, but also make sure that - * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would - * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref - */ -import type { OctokitResponse } from "./types.js"; -export declare function normalizePaginatedListResponse(response: OctokitResponse): OctokitResponse; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts deleted file mode 100644 index 4132a30..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { Octokit } from "@octokit/core"; -import type { MapFunction, PaginationResults, RequestParameters, Route, RequestInterface } from "./types.js"; -export declare function paginate(octokit: Octokit, route: Route | RequestInterface, parameters?: RequestParameters, mapFn?: MapFunction): Promise; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts deleted file mode 100644 index 22cd65d..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type PaginatingEndpoints } from "./generated/paginating-endpoints.js"; -export { paginatingEndpoints } from "./generated/paginating-endpoints.js"; -export declare function isPaginatingEndpoint(arg: unknown): arg is keyof PaginatingEndpoints; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts deleted file mode 100644 index 2fa123d..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts +++ /dev/null @@ -1,248 +0,0 @@ -import type { Octokit } from "@octokit/core"; -import type * as OctokitTypes from "@octokit/types"; -export type { EndpointOptions, RequestInterface, OctokitResponse, RequestParameters, Route, } from "@octokit/types"; -export type { PaginatingEndpoints } from "./generated/paginating-endpoints.js"; -import type { PaginatingEndpoints } from "./generated/paginating-endpoints.js"; -type PaginationMetadataKeys = "repository_selection" | "total_count" | "total_commits" | "incomplete_results"; -type KnownKeys = Extract<{ - [K in keyof T]: string extends K ? never : number extends K ? never : K; -} extends { - [_ in keyof T]: infer U; -} ? U : never, Exclude>; -type KeysMatching = { - [K in keyof T]: T[K] extends V ? K : never; -}[keyof T]; -type KnownKeysMatching = KeysMatching>, V>; -type GetResultsType = T extends { - data: any[]; -} ? T["data"] : T extends { - data: object; -} ? T["data"][KnownKeysMatching] : never; -type GetPaginationKeys = T extends { - data: any[]; -} ? {} : T extends { - data: object; -} ? Pick> : never; -type NormalizeResponse = Omit & { - data: GetResultsType & GetPaginationKeys; -}; -type DataType = "data" extends keyof T ? T["data"] : unknown; -export interface MapFunction>, M = unknown[]> { - (response: T, done: () => void): M; -} -export type PaginationResults = T[]; -export interface PaginateInterface { - /** - * Paginate a request using endpoint options and map each response to a custom array - * - * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - * @param {function} mapFn Optional method to map each response to a custom array - */ - (options: OctokitTypes.EndpointOptions, mapFn: MapFunction>, M[]>): Promise>; - /** - * Paginate a request using endpoint options - * - * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (options: OctokitTypes.EndpointOptions): Promise>; - /** - * Paginate a request using a known endpoint route string and map each response to a custom array - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {function} mapFn Optional method to map each response to a custom array - */ - (route: R, mapFn: MapFunction): Promise; - /** - * Paginate a request using a known endpoint route string and parameters, and map each response to a custom array - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - * @param {function} mapFn Optional method to map each response to a custom array - */ - (route: R, parameters: PaginatingEndpoints[R]["parameters"], mapFn: MapFunction): Promise; - /** - * Paginate a request using an known endpoint route string - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (route: R, parameters?: PaginatingEndpoints[R]["parameters"]): Promise>; - /** - * Paginate a request using an unknown endpoint route string - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): Promise; - /** - * Paginate a request using an endpoint method and a map function - * - * @param {string} request Request method (`octokit.request` or `@octokit/request`) - * @param {function} mapFn? Optional method to map each response to a custom array - */ - (request: R, mapFn: MapFunction>, M>): Promise; - /** - * Paginate a request using an endpoint method, parameters, and a map function - * - * @param {string} request Request method (`octokit.request` or `@octokit/request`) - * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - * @param {function} mapFn? Optional method to map each response to a custom array - */ - (request: R, parameters: Parameters[0], mapFn: MapFunction>, M>): Promise; - /** - * Paginate a request using an endpoint method and parameters - * - * @param {string} request Request method (`octokit.request` or `@octokit/request`) - * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (request: R, parameters?: Parameters[0]): Promise>["data"]>; - iterator: { - /** - * Get an async iterator to paginate a request using endpoint options - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (options: OctokitTypes.EndpointOptions): AsyncIterable>>; - /** - * Get an async iterator to paginate a request using a known endpoint route string and optional parameters - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (route: R, parameters?: PaginatingEndpoints[R]["parameters"]): AsyncIterable>>; - /** - * Get an async iterator to paginate a request using an unknown endpoint route string and optional parameters - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): AsyncIterable>>; - /** - * Get an async iterator to paginate a request using a request method and optional parameters - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * @param {string} request `@octokit/request` or `octokit.request` method - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (request: R, parameters?: Parameters[0]): AsyncIterable>>; - }; -} -export interface ComposePaginateInterface { - /** - * Paginate a request using endpoint options and map each response to a custom array - * - * @param {object} octokit Octokit instance - * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - * @param {function} mapFn Optional method to map each response to a custom array - */ - (octokit: Octokit, options: OctokitTypes.EndpointOptions, mapFn: MapFunction>, M[]>): Promise>; - /** - * Paginate a request using endpoint options - * - * @param {object} octokit Octokit instance - * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (octokit: Octokit, options: OctokitTypes.EndpointOptions): Promise>; - /** - * Paginate a request using a known endpoint route string and map each response to a custom array - * - * @param {object} octokit Octokit instance - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {function} mapFn Optional method to map each response to a custom array - */ - (octokit: Octokit, route: R, mapFn: MapFunction): Promise; - /** - * Paginate a request using a known endpoint route string and parameters, and map each response to a custom array - * - * @param {object} octokit Octokit instance - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - * @param {function} mapFn Optional method to map each response to a custom array - */ - (octokit: Octokit, route: R, parameters: PaginatingEndpoints[R]["parameters"], mapFn: MapFunction): Promise; - /** - * Paginate a request using an known endpoint route string - * - * @param {object} octokit Octokit instance - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (octokit: Octokit, route: R, parameters?: PaginatingEndpoints[R]["parameters"]): Promise>; - /** - * Paginate a request using an unknown endpoint route string - * - * @param {object} octokit Octokit instance - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (octokit: Octokit, route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): Promise; - /** - * Paginate a request using an endpoint method and a map function - * - * @param {object} octokit Octokit instance - * @param {string} request Request method (`octokit.request` or `@octokit/request`) - * @param {function} mapFn? Optional method to map each response to a custom array - */ - (octokit: Octokit, request: R, mapFn: MapFunction>, M>): Promise; - /** - * Paginate a request using an endpoint method, parameters, and a map function - * - * @param {object} octokit Octokit instance - * @param {string} request Request method (`octokit.request` or `@octokit/request`) - * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - * @param {function} mapFn? Optional method to map each response to a custom array - */ - (octokit: Octokit, request: R, parameters: Parameters[0], mapFn: MapFunction>, M>): Promise; - /** - * Paginate a request using an endpoint method and parameters - * - * @param {object} octokit Octokit instance - * @param {string} request Request method (`octokit.request` or `@octokit/request`) - * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (octokit: Octokit, request: R, parameters?: Parameters[0]): Promise>["data"]>; - iterator: { - /** - * Get an async iterator to paginate a request using endpoint options - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * - * @param {object} octokit Octokit instance - * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (octokit: Octokit, options: OctokitTypes.EndpointOptions): AsyncIterable>>; - /** - * Get an async iterator to paginate a request using a known endpoint route string and optional parameters - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * - * @param {object} octokit Octokit instance - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (octokit: Octokit, route: R, parameters?: PaginatingEndpoints[R]["parameters"]): AsyncIterable>>; - /** - * Get an async iterator to paginate a request using an unknown endpoint route string and optional parameters - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * - * @param {object} octokit Octokit instance - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (octokit: Octokit, route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): AsyncIterable>>; - /** - * Get an async iterator to paginate a request using a request method and optional parameters - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * - * @param {object} octokit Octokit instance - * @param {string} request `@octokit/request` or `octokit.request` method - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`. - */ - (octokit: Octokit, request: R, parameters?: Parameters[0]): AsyncIterable>>; - }; -} diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts deleted file mode 100644 index 0b0ffa3..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "14.0.0"; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/package.json b/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/package.json deleted file mode 100644 index 79b3cbf..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-paginate-rest/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "@octokit/plugin-paginate-rest", - "publishConfig": { - "access": "public", - "provenance": true - }, - "type": "module", - "version": "14.0.0", - "description": "Octokit plugin to paginate REST API endpoint responses", - "repository": "github:octokit/plugin-paginate-rest.js", - "keywords": [ - "github", - "api", - "sdk", - "toolkit" - ], - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0" - }, - "peerDependencies": { - "@octokit/core": ">=6" - }, - "devDependencies": { - "@octokit/core": "^7.0.6", - "@octokit/plugin-rest-endpoint-methods": "^17.0.0", - "@octokit/tsconfig": "^4.0.0", - "@types/node": "^24.0.0", - "@vitest/coverage-v8": "^3.0.0", - "esbuild": "^0.25.0", - "fetch-mock": "^12.0.0", - "github-openapi-graphql-query": "^5.0.0", - "glob": "^11.0.0", - "npm-run-all2": "^8.0.0", - "prettier": "3.6.2", - "semantic-release-plugin-update-version-in-files": "^2.0.0", - "typescript": "^5.0.0", - "vitest": "^3.0.0" - }, - "engines": { - "node": ">= 20" - }, - "files": [ - "dist-*/**", - "bin/**" - ], - "types": "dist-types/index.d.ts", - "exports": { - ".": { - "types": "./dist-types/index.d.ts", - "import": "./dist-bundle/index.js", - "default": "./dist-bundle/index.js" - }, - "./types": { - "types": "./dist-types/.d.ts" - } - }, - "sideEffects": false -} diff --git a/sdks/nodejs/node_modules/@octokit/plugin-request-log/LICENSE b/sdks/nodejs/node_modules/@octokit/plugin-request-log/LICENSE deleted file mode 100644 index d7d5927..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-request-log/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -MIT License Copyright (c) 2020 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@octokit/plugin-request-log/README.md b/sdks/nodejs/node_modules/@octokit/plugin-request-log/README.md deleted file mode 100644 index 7ce854c..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-request-log/README.md +++ /dev/null @@ -1,76 +0,0 @@ -# plugin-request-log.js - -> Log all requests and request errors - -[![@latest](https://img.shields.io/npm/v/@octokit/plugin-request-log.svg)](https://www.npmjs.com/package/@octokit/plugin-request-log) -[![Build Status](https://github.com/octokit/plugin-request-log.js/workflows/Test/badge.svg)](https://github.com/octokit/plugin-request-log.js/actions?workflow=Test) - -## Usage - - - - - - -
-Browsers - - -Load `@octokit/plugin-request-log` and [`@octokit/core`](https://github.com/octokit/core.js) (or core-compatible module) directly from [esm.sh](https://esm.sh) - -```html - -``` - -
-Node - - -Install with `npm install @octokit/core @octokit/plugin-request-log`. Optionally replace `@octokit/core` with a core-compatible module - -```js -import { Octokit } from "@octokit/core"; -import { requestLog } from "@octokit/plugin-request-log"; -``` - -
- -> [!IMPORTANT] -> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json` by setting `"moduleResolution": "node16", "module": "node16"`. -> -> See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports).
-> See this [helpful guide on transitioning to ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) from [@sindresorhus](https://github.com/sindresorhus) - -```js -const MyOctokit = Octokit.plugin(requestLog); -const octokit = new MyOctokit({ auth: "secret123" }); - -octokit.request("GET /"); -// logs "GET / - 200 in 123ms - -octokit.request("GET /oops"); -// logs "GET / - 404 in 123ms -``` - -In order to log all request options, the `log.debug` option needs to be set. We recommend the [console-log-level](https://github.com/watson/console-log-level) package for a configurable log level - -```js -import consoleLogLevel from "console-log-level"; -const octokit = new MyOctokit({ - log: consoleLogLevel({ - auth: "secret123", - level: "info", - }), -}); -``` - -## Contributing - -See [CONTRIBUTING.md](CONTRIBUTING.md) - -## License - -[MIT](LICENSE) diff --git a/sdks/nodejs/node_modules/@octokit/plugin-request-log/dist-src/index.js b/sdks/nodejs/node_modules/@octokit/plugin-request-log/dist-src/index.js deleted file mode 100644 index 13e99f0..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-request-log/dist-src/index.js +++ /dev/null @@ -1,26 +0,0 @@ -import { VERSION } from "./version.js"; -function requestLog(octokit) { - octokit.hook.wrap("request", (request, options) => { - octokit.log.debug("request", options); - const start = Date.now(); - const requestOptions = octokit.request.endpoint.parse(options); - const path = requestOptions.url.replace(options.baseUrl, ""); - return request(options).then((response) => { - const requestId = response.headers["x-github-request-id"]; - octokit.log.info( - `${requestOptions.method} ${path} - ${response.status} with id ${requestId} in ${Date.now() - start}ms` - ); - return response; - }).catch((error) => { - const requestId = error.response?.headers["x-github-request-id"] || "UNKNOWN"; - octokit.log.error( - `${requestOptions.method} ${path} - ${error.status} with id ${requestId} in ${Date.now() - start}ms` - ); - throw error; - }); - }); -} -requestLog.VERSION = VERSION; -export { - requestLog -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-request-log/dist-src/version.js b/sdks/nodejs/node_modules/@octokit/plugin-request-log/dist-src/version.js deleted file mode 100644 index 6b5dccd..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-request-log/dist-src/version.js +++ /dev/null @@ -1,4 +0,0 @@ -const VERSION = "6.0.0"; -export { - VERSION -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-request-log/dist-types/index.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-request-log/dist-types/index.d.ts deleted file mode 100644 index dc62f63..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-request-log/dist-types/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { Octokit } from "@octokit/core"; -/** - * @param octokit Octokit instance - * @param options Options passed to Octokit constructor - */ -export declare function requestLog(octokit: Octokit): void; -export declare namespace requestLog { - var VERSION: string; -} diff --git a/sdks/nodejs/node_modules/@octokit/plugin-request-log/dist-types/version.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-request-log/dist-types/version.d.ts deleted file mode 100644 index 392768e..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-request-log/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "6.0.0"; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-request-log/package.json b/sdks/nodejs/node_modules/@octokit/plugin-request-log/package.json deleted file mode 100644 index e34e238..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-request-log/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "@octokit/plugin-request-log", - "version": "6.0.0", - "description": "Log all requests and request errors", - "type": "module", - "repository": "github:octokit/plugin-request-log.js", - "keywords": [ - "github", - "api", - "sdk", - "toolkit" - ], - "author": "Gregor Martynus (https://twitter.com/gr2m)", - "license": "MIT", - "peerDependencies": { - "@octokit/core": ">=6" - }, - "devDependencies": { - "@octokit/core": "^7.0.0", - "@octokit/tsconfig": "^4.0.0", - "@types/node": "^22.0.0", - "@vitest/coverage-v8": "^3.1.4", - "esbuild": "^0.25.0", - "fetch-mock": "^11.0.0", - "prettier": "3.5.3", - "semantic-release-plugin-update-version-in-files": "^2.0.0", - "tinyglobby": "^0.2.13", - "typescript": "^5.0.0", - "vitest": "^3.1.4" - }, - "publishConfig": { - "access": "public", - "provenance": true - }, - "engines": { - "node": ">= 20" - }, - "files": [ - "dist-*/**", - "bin/**" - ], - "types": "dist-types/index.d.ts", - "exports": { - ".": { - "types": "./dist-types/index.d.ts", - "import": "./dist-src/index.js", - "default": "./dist-src/index.js" - } - }, - "sideEffects": false -} diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE deleted file mode 100644 index 57bee5f..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/README.md b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/README.md deleted file mode 100644 index 4ece5a4..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/README.md +++ /dev/null @@ -1,80 +0,0 @@ -# plugin-rest-endpoint-methods.js - -> Octokit plugin adding one method for all of api.github.com REST API endpoints - -[![@latest](https://img.shields.io/npm/v/@octokit/plugin-rest-endpoint-methods.svg)](https://www.npmjs.com/package/@octokit/plugin-rest-endpoint-methods) -[![Build Status](https://github.com/octokit/plugin-rest-endpoint-methods.js/workflows/Test/badge.svg)](https://github.com/octokit/plugin-rest-endpoint-methods.js/actions?workflow=Test) - -## Usage - - - - - - -
-Browsers - - -Load `@octokit/plugin-rest-endpoint-methods` and [`@octokit/core`](https://github.com/octokit/core.js) (or core-compatible module) directly from [esm.sh](https://esm.sh) - -```html - -``` - -
-Node - - -Install with `npm install @octokit/core @octokit/plugin-rest-endpoint-methods`. Optionally replace `@octokit/core` with a compatible module - -```js -import { Octokit } from "@octokit/core"; -import { restEndpointMethods } from "@octokit/plugin-rest-endpoint-methods"; -``` - -
- -```js -const MyOctokit = Octokit.plugin(restEndpointMethods); -const octokit = new MyOctokit({ auth: "secret123" }); - -// https://developer.github.com/v3/users/#get-the-authenticated-user -octokit.rest.users.getAuthenticated(); -``` - -There is one method for each REST API endpoint documented at [https://developer.github.com/v3](https://developer.github.com/v3). All endpoint methods are documented in the [docs/](docs/) folder, e.g. [docs/users/getAuthenticated.md](docs/users/getAuthenticated.md) - -## TypeScript - -> [!IMPORTANT] -> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json` by setting `"moduleResolution": "node16", "module": "node16"`. -> -> See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports).
-> See this [helpful guide on transitioning to ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) from [@sindresorhus](https://github.com/sindresorhus) - -Parameter and response types for all endpoint methods exported as `{ RestEndpointMethodTypes }`. - -Example - -```ts -import { RestEndpointMethodTypes } from "@octokit/plugin-rest-endpoint-methods"; - -type UpdateLabelParameters = - RestEndpointMethodTypes["issues"]["updateLabel"]["parameters"]; -type UpdateLabelResponse = - RestEndpointMethodTypes["issues"]["updateLabel"]["response"]; -``` - -In order to get types beyond parameters and responses, check out [`@octokit/openapi-types`](https://github.com/octokit/openapi-types.ts/#readme), which is a direct transpilation from GitHub's official OpenAPI specification. - -## Contributing - -See [CONTRIBUTING.md](CONTRIBUTING.md) - -## License - -[MIT](LICENSE) diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js deleted file mode 100644 index d6b61c9..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js +++ /dev/null @@ -1,126 +0,0 @@ -import ENDPOINTS from "./generated/endpoints.js"; -const endpointMethodsMap = /* @__PURE__ */ new Map(); -for (const [scope, endpoints] of Object.entries(ENDPOINTS)) { - for (const [methodName, endpoint] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign( - { - method, - url - }, - defaults - ); - if (!endpointMethodsMap.has(scope)) { - endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); - } - endpointMethodsMap.get(scope).set(methodName, { - scope, - methodName, - endpointDefaults, - decorations - }); - } -} -const handler = { - has({ scope }, methodName) { - return endpointMethodsMap.get(scope).has(methodName); - }, - getOwnPropertyDescriptor(target, methodName) { - return { - value: this.get(target, methodName), - // ensures method is in the cache - configurable: true, - writable: true, - enumerable: true - }; - }, - defineProperty(target, methodName, descriptor) { - Object.defineProperty(target.cache, methodName, descriptor); - return true; - }, - deleteProperty(target, methodName) { - delete target.cache[methodName]; - return true; - }, - ownKeys({ scope }) { - return [...endpointMethodsMap.get(scope).keys()]; - }, - set(target, methodName, value) { - return target.cache[methodName] = value; - }, - get({ octokit, scope, cache }, methodName) { - if (cache[methodName]) { - return cache[methodName]; - } - const method = endpointMethodsMap.get(scope).get(methodName); - if (!method) { - return void 0; - } - const { endpointDefaults, decorations } = method; - if (decorations) { - cache[methodName] = decorate( - octokit, - scope, - methodName, - endpointDefaults, - decorations - ); - } else { - cache[methodName] = octokit.request.defaults(endpointDefaults); - } - return cache[methodName]; - } -}; -function endpointsToMethods(octokit) { - const newMethods = {}; - for (const scope of endpointMethodsMap.keys()) { - newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler); - } - return newMethods; -} -function decorate(octokit, scope, methodName, defaults, decorations) { - const requestWithDefaults = octokit.request.defaults(defaults); - function withDecorations(...args) { - let options = requestWithDefaults.endpoint.merge(...args); - if (decorations.mapToData) { - options = Object.assign({}, options, { - data: options[decorations.mapToData], - [decorations.mapToData]: void 0 - }); - return requestWithDefaults(options); - } - if (decorations.renamed) { - const [newScope, newMethodName] = decorations.renamed; - octokit.log.warn( - `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()` - ); - } - if (decorations.deprecated) { - octokit.log.warn(decorations.deprecated); - } - if (decorations.renamedParameters) { - const options2 = requestWithDefaults.endpoint.merge(...args); - for (const [name, alias] of Object.entries( - decorations.renamedParameters - )) { - if (name in options2) { - octokit.log.warn( - `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead` - ); - if (!(alias in options2)) { - options2[alias] = options2[name]; - } - delete options2[name]; - } - } - return requestWithDefaults(options2); - } - return requestWithDefaults(...args); - } - return Object.assign(withDecorations, requestWithDefaults); -} -export { - endpointsToMethods -}; -//# sourceMappingURL=endpoints-to-methods.js.map diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js.map b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js.map deleted file mode 100644 index 5f4c3af..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../src/endpoints-to-methods.ts"], - "sourcesContent": ["import type { Octokit } from \"@octokit/core\";\nimport type { EndpointOptions, RequestParameters, Route } from \"@octokit/types\";\nimport ENDPOINTS from \"./generated/endpoints.js\";\nimport type { RestEndpointMethods } from \"./generated/method-types.js\";\nimport type { EndpointDecorations } from \"./types.js\";\n\n// The following code was refactored in: https://github.com/octokit/plugin-rest-endpoint-methods.js/pull/622\n// to optimise the runtime performance of Octokit initialization.\n//\n// This optimization involves two key changes:\n// 1. Pre-Computation: The endpoint methods are pre-computed once at module load\n// time instead of each invocation of `endpointsToMethods()`.\n// 2. Lazy initialization and caching: We use a Proxy for each scope to only\n// initialize methods that are actually called. This reduces runtime overhead\n// as the initialization involves deep merging of objects. The initialized\n// methods are then cached for future use.\n\nconst endpointMethodsMap = new Map();\nfor (const [scope, endpoints] of Object.entries(ENDPOINTS)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign(\n {\n method,\n url,\n },\n defaults,\n );\n\n if (!endpointMethodsMap.has(scope)) {\n endpointMethodsMap.set(scope, new Map());\n }\n\n endpointMethodsMap.get(scope).set(methodName, {\n scope,\n methodName,\n endpointDefaults,\n decorations,\n });\n }\n}\n\ntype ProxyTarget = {\n octokit: Octokit;\n scope: string;\n cache: Record any>;\n};\n\nconst handler = {\n has({ scope }: ProxyTarget, methodName: string) {\n return endpointMethodsMap.get(scope).has(methodName);\n },\n getOwnPropertyDescriptor(target: ProxyTarget, methodName: string) {\n return {\n value: this.get(target, methodName), // ensures method is in the cache\n configurable: true,\n writable: true,\n enumerable: true,\n };\n },\n defineProperty(\n target: ProxyTarget,\n methodName: string,\n descriptor: PropertyDescriptor,\n ) {\n Object.defineProperty(target.cache, methodName, descriptor);\n return true;\n },\n deleteProperty(target: ProxyTarget, methodName: string) {\n delete target.cache[methodName];\n return true;\n },\n ownKeys({ scope }: ProxyTarget) {\n return [...endpointMethodsMap.get(scope).keys()];\n },\n set(target: ProxyTarget, methodName: string, value: any) {\n return (target.cache[methodName] = value);\n },\n get({ octokit, scope, cache }: ProxyTarget, methodName: string) {\n if (cache[methodName]) {\n return cache[methodName];\n }\n\n const method = endpointMethodsMap.get(scope).get(methodName);\n if (!method) {\n return undefined;\n }\n\n const { endpointDefaults, decorations } = method;\n\n if (decorations) {\n cache[methodName] = decorate(\n octokit,\n scope,\n methodName,\n endpointDefaults,\n decorations,\n );\n } else {\n cache[methodName] = octokit.request.defaults(endpointDefaults);\n }\n\n return cache[methodName];\n },\n};\n\nexport function endpointsToMethods(octokit: Octokit): RestEndpointMethods {\n const newMethods = {} as { [key: string]: object };\n\n for (const scope of endpointMethodsMap.keys()) {\n newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);\n }\n\n return newMethods as RestEndpointMethods;\n}\n\nfunction decorate(\n octokit: Octokit,\n scope: string,\n methodName: string,\n defaults: EndpointOptions,\n decorations: EndpointDecorations,\n) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n\n /* istanbul ignore next */\n function withDecorations(\n ...args: [Route, RequestParameters?] | [EndpointOptions]\n ) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n let options = requestWithDefaults.endpoint.merge(...args);\n\n // There are currently no other decorations than `.mapToData`\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: undefined,\n });\n return requestWithDefaults(options);\n }\n\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(\n `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`,\n );\n }\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n\n if (decorations.renamedParameters) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n const options = requestWithDefaults.endpoint.merge(...args);\n\n for (const [name, alias] of Object.entries(\n decorations.renamedParameters,\n )) {\n if (name in options) {\n octokit.log.warn(\n `\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`,\n );\n if (!(alias in options)) {\n options[alias] = options[name];\n }\n delete options[name];\n }\n }\n return requestWithDefaults(options);\n }\n\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n return requestWithDefaults(...args);\n }\n return Object.assign(withDecorations, requestWithDefaults);\n}\n"], - "mappings": "AAEA,OAAO,eAAe;AAetB,MAAM,qBAAqB,oBAAI,IAAI;AACnC,WAAW,CAAC,OAAO,SAAS,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC1D,aAAW,CAAC,YAAY,QAAQ,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC9D,UAAM,CAAC,OAAO,UAAU,WAAW,IAAI;AACvC,UAAM,CAAC,QAAQ,GAAG,IAAI,MAAM,MAAM,GAAG;AACrC,UAAM,mBAAmB,OAAO;AAAA,MAC9B;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAEA,QAAI,CAAC,mBAAmB,IAAI,KAAK,GAAG;AAClC,yBAAmB,IAAI,OAAO,oBAAI,IAAI,CAAC;AAAA,IACzC;AAEA,uBAAmB,IAAI,KAAK,EAAE,IAAI,YAAY;AAAA,MAC5C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAQA,MAAM,UAAU;AAAA,EACd,IAAI,EAAE,MAAM,GAAgB,YAAoB;AAC9C,WAAO,mBAAmB,IAAI,KAAK,EAAE,IAAI,UAAU;AAAA,EACrD;AAAA,EACA,yBAAyB,QAAqB,YAAoB;AAChE,WAAO;AAAA,MACL,OAAO,KAAK,IAAI,QAAQ,UAAU;AAAA;AAAA,MAClC,cAAc;AAAA,MACd,UAAU;AAAA,MACV,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,eACE,QACA,YACA,YACA;AACA,WAAO,eAAe,OAAO,OAAO,YAAY,UAAU;AAC1D,WAAO;AAAA,EACT;AAAA,EACA,eAAe,QAAqB,YAAoB;AACtD,WAAO,OAAO,MAAM,UAAU;AAC9B,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,EAAE,MAAM,GAAgB;AAC9B,WAAO,CAAC,GAAG,mBAAmB,IAAI,KAAK,EAAE,KAAK,CAAC;AAAA,EACjD;AAAA,EACA,IAAI,QAAqB,YAAoB,OAAY;AACvD,WAAQ,OAAO,MAAM,UAAU,IAAI;AAAA,EACrC;AAAA,EACA,IAAI,EAAE,SAAS,OAAO,MAAM,GAAgB,YAAoB;AAC9D,QAAI,MAAM,UAAU,GAAG;AACrB,aAAO,MAAM,UAAU;AAAA,IACzB;AAEA,UAAM,SAAS,mBAAmB,IAAI,KAAK,EAAE,IAAI,UAAU;AAC3D,QAAI,CAAC,QAAQ;AACX,aAAO;AAAA,IACT;AAEA,UAAM,EAAE,kBAAkB,YAAY,IAAI;AAE1C,QAAI,aAAa;AACf,YAAM,UAAU,IAAI;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,OAAO;AACL,YAAM,UAAU,IAAI,QAAQ,QAAQ,SAAS,gBAAgB;AAAA,IAC/D;AAEA,WAAO,MAAM,UAAU;AAAA,EACzB;AACF;AAEO,SAAS,mBAAmB,SAAuC;AACxE,QAAM,aAAa,CAAC;AAEpB,aAAW,SAAS,mBAAmB,KAAK,GAAG;AAC7C,eAAW,KAAK,IAAI,IAAI,MAAM,EAAE,SAAS,OAAO,OAAO,CAAC,EAAE,GAAG,OAAO;AAAA,EACtE;AAEA,SAAO;AACT;AAEA,SAAS,SACP,SACA,OACA,YACA,UACA,aACA;AACA,QAAM,sBAAsB,QAAQ,QAAQ,SAAS,QAAQ;AAG7D,WAAS,mBACJ,MACH;AAEA,QAAI,UAAU,oBAAoB,SAAS,MAAM,GAAG,IAAI;AAGxD,QAAI,YAAY,WAAW;AACzB,gBAAU,OAAO,OAAO,CAAC,GAAG,SAAS;AAAA,QACnC,MAAM,QAAQ,YAAY,SAAS;AAAA,QACnC,CAAC,YAAY,SAAS,GAAG;AAAA,MAC3B,CAAC;AACD,aAAO,oBAAoB,OAAO;AAAA,IACpC;AAEA,QAAI,YAAY,SAAS;AACvB,YAAM,CAAC,UAAU,aAAa,IAAI,YAAY;AAC9C,cAAQ,IAAI;AAAA,QACV,WAAW,KAAK,IAAI,UAAU,kCAAkC,QAAQ,IAAI,aAAa;AAAA,MAC3F;AAAA,IACF;AACA,QAAI,YAAY,YAAY;AAC1B,cAAQ,IAAI,KAAK,YAAY,UAAU;AAAA,IACzC;AAEA,QAAI,YAAY,mBAAmB;AAEjC,YAAMA,WAAU,oBAAoB,SAAS,MAAM,GAAG,IAAI;AAE1D,iBAAW,CAAC,MAAM,KAAK,KAAK,OAAO;AAAA,QACjC,YAAY;AAAA,MACd,GAAG;AACD,YAAI,QAAQA,UAAS;AACnB,kBAAQ,IAAI;AAAA,YACV,IAAI,IAAI,0CAA0C,KAAK,IAAI,UAAU,aAAa,KAAK;AAAA,UACzF;AACA,cAAI,EAAE,SAASA,WAAU;AACvB,YAAAA,SAAQ,KAAK,IAAIA,SAAQ,IAAI;AAAA,UAC/B;AACA,iBAAOA,SAAQ,IAAI;AAAA,QACrB;AAAA,MACF;AACA,aAAO,oBAAoBA,QAAO;AAAA,IACpC;AAGA,WAAO,oBAAoB,GAAG,IAAI;AAAA,EACpC;AACA,SAAO,OAAO,OAAO,iBAAiB,mBAAmB;AAC3D;", - "names": ["options"] -} diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js deleted file mode 100644 index 3767575..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js +++ /dev/null @@ -1,2294 +0,0 @@ -const Endpoints = { - actions: { - addCustomLabelsToSelfHostedRunnerForOrg: [ - "POST /orgs/{org}/actions/runners/{runner_id}/labels" - ], - addCustomLabelsToSelfHostedRunnerForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" - ], - addRepoAccessToSelfHostedRunnerGroupInOrg: [ - "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}" - ], - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" - ], - addSelectedRepoToOrgVariable: [ - "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" - ], - approveWorkflowRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve" - ], - cancelWorkflowRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel" - ], - createEnvironmentVariable: [ - "POST /repos/{owner}/{repo}/environments/{environment_name}/variables" - ], - createHostedRunnerForOrg: ["POST /orgs/{org}/actions/hosted-runners"], - createOrUpdateEnvironmentSecret: [ - "PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" - ], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], - createOrUpdateRepoSecret: [ - "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}" - ], - createOrgVariable: ["POST /orgs/{org}/actions/variables"], - createRegistrationTokenForOrg: [ - "POST /orgs/{org}/actions/runners/registration-token" - ], - createRegistrationTokenForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/registration-token" - ], - createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], - createRemoveTokenForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/remove-token" - ], - createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"], - createWorkflowDispatch: [ - "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches" - ], - deleteActionsCacheById: [ - "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}" - ], - deleteActionsCacheByKey: [ - "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}" - ], - deleteArtifact: [ - "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}" - ], - deleteCustomImageFromOrg: [ - "DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}" - ], - deleteCustomImageVersionFromOrg: [ - "DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}" - ], - deleteEnvironmentSecret: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" - ], - deleteEnvironmentVariable: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" - ], - deleteHostedRunnerForOrg: [ - "DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}" - ], - deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], - deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], - deleteRepoSecret: [ - "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}" - ], - deleteRepoVariable: [ - "DELETE /repos/{owner}/{repo}/actions/variables/{name}" - ], - deleteSelfHostedRunnerFromOrg: [ - "DELETE /orgs/{org}/actions/runners/{runner_id}" - ], - deleteSelfHostedRunnerFromRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}" - ], - deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], - deleteWorkflowRunLogs: [ - "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs" - ], - disableSelectedRepositoryGithubActionsOrganization: [ - "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}" - ], - disableWorkflow: [ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable" - ], - downloadArtifact: [ - "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}" - ], - downloadJobLogsForWorkflowRun: [ - "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs" - ], - downloadWorkflowRunAttemptLogs: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs" - ], - downloadWorkflowRunLogs: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs" - ], - enableSelectedRepositoryGithubActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}" - ], - enableWorkflow: [ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable" - ], - forceCancelWorkflowRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel" - ], - generateRunnerJitconfigForOrg: [ - "POST /orgs/{org}/actions/runners/generate-jitconfig" - ], - generateRunnerJitconfigForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig" - ], - getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], - getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], - getActionsCacheUsageByRepoForOrg: [ - "GET /orgs/{org}/actions/cache/usage-by-repository" - ], - getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], - getAllowedActionsOrganization: [ - "GET /orgs/{org}/actions/permissions/selected-actions" - ], - getAllowedActionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions/selected-actions" - ], - getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - getCustomImageForOrg: [ - "GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}" - ], - getCustomImageVersionForOrg: [ - "GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}" - ], - getCustomOidcSubClaimForRepo: [ - "GET /repos/{owner}/{repo}/actions/oidc/customization/sub" - ], - getEnvironmentPublicKey: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key" - ], - getEnvironmentSecret: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" - ], - getEnvironmentVariable: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" - ], - getGithubActionsDefaultWorkflowPermissionsOrganization: [ - "GET /orgs/{org}/actions/permissions/workflow" - ], - getGithubActionsDefaultWorkflowPermissionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions/workflow" - ], - getGithubActionsPermissionsOrganization: [ - "GET /orgs/{org}/actions/permissions" - ], - getGithubActionsPermissionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions" - ], - getHostedRunnerForOrg: [ - "GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}" - ], - getHostedRunnersGithubOwnedImagesForOrg: [ - "GET /orgs/{org}/actions/hosted-runners/images/github-owned" - ], - getHostedRunnersLimitsForOrg: [ - "GET /orgs/{org}/actions/hosted-runners/limits" - ], - getHostedRunnersMachineSpecsForOrg: [ - "GET /orgs/{org}/actions/hosted-runners/machine-sizes" - ], - getHostedRunnersPartnerImagesForOrg: [ - "GET /orgs/{org}/actions/hosted-runners/images/partner" - ], - getHostedRunnersPlatformsForOrg: [ - "GET /orgs/{org}/actions/hosted-runners/platforms" - ], - getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], - getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], - getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"], - getPendingDeploymentsForRun: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" - ], - getRepoPermissions: [ - "GET /repos/{owner}/{repo}/actions/permissions", - {}, - { renamed: ["actions", "getGithubActionsPermissionsRepository"] } - ], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"], - getReviewsForRun: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals" - ], - getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], - getSelfHostedRunnerForRepo: [ - "GET /repos/{owner}/{repo}/actions/runners/{runner_id}" - ], - getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], - getWorkflowAccessToRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions/access" - ], - getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], - getWorkflowRunAttempt: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}" - ], - getWorkflowRunUsage: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing" - ], - getWorkflowUsage: [ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing" - ], - listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], - listCustomImageVersionsForOrg: [ - "GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions" - ], - listCustomImagesForOrg: [ - "GET /orgs/{org}/actions/hosted-runners/images/custom" - ], - listEnvironmentSecrets: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets" - ], - listEnvironmentVariables: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/variables" - ], - listGithubHostedRunnersInGroupForOrg: [ - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners" - ], - listHostedRunnersForOrg: ["GET /orgs/{org}/actions/hosted-runners"], - listJobsForWorkflowRun: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs" - ], - listJobsForWorkflowRunAttempt: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs" - ], - listLabelsForSelfHostedRunnerForOrg: [ - "GET /orgs/{org}/actions/runners/{runner_id}/labels" - ], - listLabelsForSelfHostedRunnerForRepo: [ - "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" - ], - listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], - listOrgVariables: ["GET /orgs/{org}/actions/variables"], - listRepoOrganizationSecrets: [ - "GET /repos/{owner}/{repo}/actions/organization-secrets" - ], - listRepoOrganizationVariables: [ - "GET /repos/{owner}/{repo}/actions/organization-variables" - ], - listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], - listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"], - listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], - listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], - listRunnerApplicationsForRepo: [ - "GET /repos/{owner}/{repo}/actions/runners/downloads" - ], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories" - ], - listSelectedReposForOrgVariable: [ - "GET /orgs/{org}/actions/variables/{name}/repositories" - ], - listSelectedRepositoriesEnabledGithubActionsOrganization: [ - "GET /orgs/{org}/actions/permissions/repositories" - ], - listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], - listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], - listWorkflowRunArtifacts: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts" - ], - listWorkflowRuns: [ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs" - ], - listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], - reRunJobForWorkflowRun: [ - "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun" - ], - reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], - reRunWorkflowFailedJobs: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs" - ], - removeAllCustomLabelsFromSelfHostedRunnerForOrg: [ - "DELETE /orgs/{org}/actions/runners/{runner_id}/labels" - ], - removeAllCustomLabelsFromSelfHostedRunnerForRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" - ], - removeCustomLabelFromSelfHostedRunnerForOrg: [ - "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}" - ], - removeCustomLabelFromSelfHostedRunnerForRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}" - ], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" - ], - removeSelectedRepoFromOrgVariable: [ - "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" - ], - reviewCustomGatesForRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule" - ], - reviewPendingDeploymentsForRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" - ], - setAllowedActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/selected-actions" - ], - setAllowedActionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions" - ], - setCustomLabelsForSelfHostedRunnerForOrg: [ - "PUT /orgs/{org}/actions/runners/{runner_id}/labels" - ], - setCustomLabelsForSelfHostedRunnerForRepo: [ - "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" - ], - setCustomOidcSubClaimForRepo: [ - "PUT /repos/{owner}/{repo}/actions/oidc/customization/sub" - ], - setGithubActionsDefaultWorkflowPermissionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/workflow" - ], - setGithubActionsDefaultWorkflowPermissionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions/workflow" - ], - setGithubActionsPermissionsOrganization: [ - "PUT /orgs/{org}/actions/permissions" - ], - setGithubActionsPermissionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions" - ], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories" - ], - setSelectedReposForOrgVariable: [ - "PUT /orgs/{org}/actions/variables/{name}/repositories" - ], - setSelectedRepositoriesEnabledGithubActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/repositories" - ], - setWorkflowAccessToRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions/access" - ], - updateEnvironmentVariable: [ - "PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" - ], - updateHostedRunnerForOrg: [ - "PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}" - ], - updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"], - updateRepoVariable: [ - "PATCH /repos/{owner}/{repo}/actions/variables/{name}" - ] - }, - activity: { - checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], - deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], - deleteThreadSubscription: [ - "DELETE /notifications/threads/{thread_id}/subscription" - ], - getFeeds: ["GET /feeds"], - getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], - getThread: ["GET /notifications/threads/{thread_id}"], - getThreadSubscriptionForAuthenticatedUser: [ - "GET /notifications/threads/{thread_id}/subscription" - ], - listEventsForAuthenticatedUser: ["GET /users/{username}/events"], - listNotificationsForAuthenticatedUser: ["GET /notifications"], - listOrgEventsForAuthenticatedUser: [ - "GET /users/{username}/events/orgs/{org}" - ], - listPublicEvents: ["GET /events"], - listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], - listPublicEventsForUser: ["GET /users/{username}/events/public"], - listPublicOrgEvents: ["GET /orgs/{org}/events"], - listReceivedEventsForUser: ["GET /users/{username}/received_events"], - listReceivedPublicEventsForUser: [ - "GET /users/{username}/received_events/public" - ], - listRepoEvents: ["GET /repos/{owner}/{repo}/events"], - listRepoNotificationsForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/notifications" - ], - listReposStarredByAuthenticatedUser: ["GET /user/starred"], - listReposStarredByUser: ["GET /users/{username}/starred"], - listReposWatchedByUser: ["GET /users/{username}/subscriptions"], - listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], - listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], - listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], - markNotificationsAsRead: ["PUT /notifications"], - markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], - markThreadAsDone: ["DELETE /notifications/threads/{thread_id}"], - markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], - setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], - setThreadSubscription: [ - "PUT /notifications/threads/{thread_id}/subscription" - ], - starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], - unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"] - }, - apps: { - addRepoToInstallation: [ - "PUT /user/installations/{installation_id}/repositories/{repository_id}", - {}, - { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] } - ], - addRepoToInstallationForAuthenticatedUser: [ - "PUT /user/installations/{installation_id}/repositories/{repository_id}" - ], - checkToken: ["POST /applications/{client_id}/token"], - createFromManifest: ["POST /app-manifests/{code}/conversions"], - createInstallationAccessToken: [ - "POST /app/installations/{installation_id}/access_tokens" - ], - deleteAuthorization: ["DELETE /applications/{client_id}/grant"], - deleteInstallation: ["DELETE /app/installations/{installation_id}"], - deleteToken: ["DELETE /applications/{client_id}/token"], - getAuthenticated: ["GET /app"], - getBySlug: ["GET /apps/{app_slug}"], - getInstallation: ["GET /app/installations/{installation_id}"], - getOrgInstallation: ["GET /orgs/{org}/installation"], - getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], - getSubscriptionPlanForAccount: [ - "GET /marketplace_listing/accounts/{account_id}" - ], - getSubscriptionPlanForAccountStubbed: [ - "GET /marketplace_listing/stubbed/accounts/{account_id}" - ], - getUserInstallation: ["GET /users/{username}/installation"], - getWebhookConfigForApp: ["GET /app/hook/config"], - getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], - listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], - listAccountsForPlanStubbed: [ - "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts" - ], - listInstallationReposForAuthenticatedUser: [ - "GET /user/installations/{installation_id}/repositories" - ], - listInstallationRequestsForAuthenticatedApp: [ - "GET /app/installation-requests" - ], - listInstallations: ["GET /app/installations"], - listInstallationsForAuthenticatedUser: ["GET /user/installations"], - listPlans: ["GET /marketplace_listing/plans"], - listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], - listReposAccessibleToInstallation: ["GET /installation/repositories"], - listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], - listSubscriptionsForAuthenticatedUserStubbed: [ - "GET /user/marketplace_purchases/stubbed" - ], - listWebhookDeliveries: ["GET /app/hook/deliveries"], - redeliverWebhookDelivery: [ - "POST /app/hook/deliveries/{delivery_id}/attempts" - ], - removeRepoFromInstallation: [ - "DELETE /user/installations/{installation_id}/repositories/{repository_id}", - {}, - { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] } - ], - removeRepoFromInstallationForAuthenticatedUser: [ - "DELETE /user/installations/{installation_id}/repositories/{repository_id}" - ], - resetToken: ["PATCH /applications/{client_id}/token"], - revokeInstallationAccessToken: ["DELETE /installation/token"], - scopeToken: ["POST /applications/{client_id}/token/scoped"], - suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], - unsuspendInstallation: [ - "DELETE /app/installations/{installation_id}/suspended" - ], - updateWebhookConfigForApp: ["PATCH /app/hook/config"] - }, - billing: { - getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], - getGithubActionsBillingUser: [ - "GET /users/{username}/settings/billing/actions" - ], - getGithubBillingPremiumRequestUsageReportOrg: [ - "GET /organizations/{org}/settings/billing/premium_request/usage" - ], - getGithubBillingPremiumRequestUsageReportUser: [ - "GET /users/{username}/settings/billing/premium_request/usage" - ], - getGithubBillingUsageReportOrg: [ - "GET /organizations/{org}/settings/billing/usage" - ], - getGithubBillingUsageReportUser: [ - "GET /users/{username}/settings/billing/usage" - ], - getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], - getGithubPackagesBillingUser: [ - "GET /users/{username}/settings/billing/packages" - ], - getSharedStorageBillingOrg: [ - "GET /orgs/{org}/settings/billing/shared-storage" - ], - getSharedStorageBillingUser: [ - "GET /users/{username}/settings/billing/shared-storage" - ] - }, - campaigns: { - createCampaign: ["POST /orgs/{org}/campaigns"], - deleteCampaign: ["DELETE /orgs/{org}/campaigns/{campaign_number}"], - getCampaignSummary: ["GET /orgs/{org}/campaigns/{campaign_number}"], - listOrgCampaigns: ["GET /orgs/{org}/campaigns"], - updateCampaign: ["PATCH /orgs/{org}/campaigns/{campaign_number}"] - }, - checks: { - create: ["POST /repos/{owner}/{repo}/check-runs"], - createSuite: ["POST /repos/{owner}/{repo}/check-suites"], - get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], - getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], - listAnnotations: [ - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations" - ], - listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], - listForSuite: [ - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs" - ], - listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], - rerequestRun: [ - "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest" - ], - rerequestSuite: [ - "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest" - ], - setSuitesPreferences: [ - "PATCH /repos/{owner}/{repo}/check-suites/preferences" - ], - update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"] - }, - codeScanning: { - commitAutofix: [ - "POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits" - ], - createAutofix: [ - "POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix" - ], - createVariantAnalysis: [ - "POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses" - ], - deleteAnalysis: [ - "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}" - ], - deleteCodeqlDatabase: [ - "DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" - ], - getAlert: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", - {}, - { renamedParameters: { alert_id: "alert_number" } } - ], - getAnalysis: [ - "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}" - ], - getAutofix: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix" - ], - getCodeqlDatabase: [ - "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" - ], - getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"], - getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], - getVariantAnalysis: [ - "GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}" - ], - getVariantAnalysisRepoTask: [ - "GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}" - ], - listAlertInstances: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances" - ], - listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], - listAlertsInstances: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", - {}, - { renamed: ["codeScanning", "listAlertInstances"] } - ], - listCodeqlDatabases: [ - "GET /repos/{owner}/{repo}/code-scanning/codeql/databases" - ], - listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], - updateAlert: [ - "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}" - ], - updateDefaultSetup: [ - "PATCH /repos/{owner}/{repo}/code-scanning/default-setup" - ], - uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"] - }, - codeSecurity: { - attachConfiguration: [ - "POST /orgs/{org}/code-security/configurations/{configuration_id}/attach" - ], - attachEnterpriseConfiguration: [ - "POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach" - ], - createConfiguration: ["POST /orgs/{org}/code-security/configurations"], - createConfigurationForEnterprise: [ - "POST /enterprises/{enterprise}/code-security/configurations" - ], - deleteConfiguration: [ - "DELETE /orgs/{org}/code-security/configurations/{configuration_id}" - ], - deleteConfigurationForEnterprise: [ - "DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}" - ], - detachConfiguration: [ - "DELETE /orgs/{org}/code-security/configurations/detach" - ], - getConfiguration: [ - "GET /orgs/{org}/code-security/configurations/{configuration_id}" - ], - getConfigurationForRepository: [ - "GET /repos/{owner}/{repo}/code-security-configuration" - ], - getConfigurationsForEnterprise: [ - "GET /enterprises/{enterprise}/code-security/configurations" - ], - getConfigurationsForOrg: ["GET /orgs/{org}/code-security/configurations"], - getDefaultConfigurations: [ - "GET /orgs/{org}/code-security/configurations/defaults" - ], - getDefaultConfigurationsForEnterprise: [ - "GET /enterprises/{enterprise}/code-security/configurations/defaults" - ], - getRepositoriesForConfiguration: [ - "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories" - ], - getRepositoriesForEnterpriseConfiguration: [ - "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories" - ], - getSingleConfigurationForEnterprise: [ - "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}" - ], - setConfigurationAsDefault: [ - "PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults" - ], - setConfigurationAsDefaultForEnterprise: [ - "PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults" - ], - updateConfiguration: [ - "PATCH /orgs/{org}/code-security/configurations/{configuration_id}" - ], - updateEnterpriseConfiguration: [ - "PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}" - ] - }, - codesOfConduct: { - getAllCodesOfConduct: ["GET /codes_of_conduct"], - getConductCode: ["GET /codes_of_conduct/{key}"] - }, - codespaces: { - addRepositoryForSecretForAuthenticatedUser: [ - "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" - ], - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" - ], - checkPermissionsForDevcontainer: [ - "GET /repos/{owner}/{repo}/codespaces/permissions_check" - ], - codespaceMachinesForAuthenticatedUser: [ - "GET /user/codespaces/{codespace_name}/machines" - ], - createForAuthenticatedUser: ["POST /user/codespaces"], - createOrUpdateOrgSecret: [ - "PUT /orgs/{org}/codespaces/secrets/{secret_name}" - ], - createOrUpdateRepoSecret: [ - "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" - ], - createOrUpdateSecretForAuthenticatedUser: [ - "PUT /user/codespaces/secrets/{secret_name}" - ], - createWithPrForAuthenticatedUser: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces" - ], - createWithRepoForAuthenticatedUser: [ - "POST /repos/{owner}/{repo}/codespaces" - ], - deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], - deleteFromOrganization: [ - "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}" - ], - deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"], - deleteRepoSecret: [ - "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" - ], - deleteSecretForAuthenticatedUser: [ - "DELETE /user/codespaces/secrets/{secret_name}" - ], - exportForAuthenticatedUser: [ - "POST /user/codespaces/{codespace_name}/exports" - ], - getCodespacesForUserInOrg: [ - "GET /orgs/{org}/members/{username}/codespaces" - ], - getExportDetailsForAuthenticatedUser: [ - "GET /user/codespaces/{codespace_name}/exports/{export_id}" - ], - getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], - getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"], - getPublicKeyForAuthenticatedUser: [ - "GET /user/codespaces/secrets/public-key" - ], - getRepoPublicKey: [ - "GET /repos/{owner}/{repo}/codespaces/secrets/public-key" - ], - getRepoSecret: [ - "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" - ], - getSecretForAuthenticatedUser: [ - "GET /user/codespaces/secrets/{secret_name}" - ], - listDevcontainersInRepositoryForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/codespaces/devcontainers" - ], - listForAuthenticatedUser: ["GET /user/codespaces"], - listInOrganization: [ - "GET /orgs/{org}/codespaces", - {}, - { renamedParameters: { org_id: "org" } } - ], - listInRepositoryForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/codespaces" - ], - listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], - listRepositoriesForSecretForAuthenticatedUser: [ - "GET /user/codespaces/secrets/{secret_name}/repositories" - ], - listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories" - ], - preFlightWithRepoForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/codespaces/new" - ], - publishForAuthenticatedUser: [ - "POST /user/codespaces/{codespace_name}/publish" - ], - removeRepositoryForSecretForAuthenticatedUser: [ - "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" - ], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" - ], - repoMachinesForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/codespaces/machines" - ], - setRepositoriesForSecretForAuthenticatedUser: [ - "PUT /user/codespaces/secrets/{secret_name}/repositories" - ], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories" - ], - startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], - stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], - stopInOrganization: [ - "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop" - ], - updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"] - }, - copilot: { - addCopilotSeatsForTeams: [ - "POST /orgs/{org}/copilot/billing/selected_teams" - ], - addCopilotSeatsForUsers: [ - "POST /orgs/{org}/copilot/billing/selected_users" - ], - cancelCopilotSeatAssignmentForTeams: [ - "DELETE /orgs/{org}/copilot/billing/selected_teams" - ], - cancelCopilotSeatAssignmentForUsers: [ - "DELETE /orgs/{org}/copilot/billing/selected_users" - ], - copilotMetricsForOrganization: ["GET /orgs/{org}/copilot/metrics"], - copilotMetricsForTeam: ["GET /orgs/{org}/team/{team_slug}/copilot/metrics"], - getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"], - getCopilotSeatDetailsForUser: [ - "GET /orgs/{org}/members/{username}/copilot" - ], - listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"] - }, - credentials: { revoke: ["POST /credentials/revoke"] }, - dependabot: { - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" - ], - createOrUpdateOrgSecret: [ - "PUT /orgs/{org}/dependabot/secrets/{secret_name}" - ], - createOrUpdateRepoSecret: [ - "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" - ], - deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], - deleteRepoSecret: [ - "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" - ], - getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"], - getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], - getRepoPublicKey: [ - "GET /repos/{owner}/{repo}/dependabot/secrets/public-key" - ], - getRepoSecret: [ - "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" - ], - listAlertsForEnterprise: [ - "GET /enterprises/{enterprise}/dependabot/alerts" - ], - listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"], - listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories" - ], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" - ], - repositoryAccessForOrg: [ - "GET /organizations/{org}/dependabot/repository-access" - ], - setRepositoryAccessDefaultLevel: [ - "PUT /organizations/{org}/dependabot/repository-access/default-level" - ], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories" - ], - updateAlert: [ - "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}" - ], - updateRepositoryAccessForOrg: [ - "PATCH /organizations/{org}/dependabot/repository-access" - ] - }, - dependencyGraph: { - createRepositorySnapshot: [ - "POST /repos/{owner}/{repo}/dependency-graph/snapshots" - ], - diffRange: [ - "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}" - ], - exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"] - }, - emojis: { get: ["GET /emojis"] }, - enterpriseTeamMemberships: { - add: [ - "PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}" - ], - bulkAdd: [ - "POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add" - ], - bulkRemove: [ - "POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove" - ], - get: [ - "GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}" - ], - list: ["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships"], - remove: [ - "DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}" - ] - }, - enterpriseTeamOrganizations: { - add: [ - "PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}" - ], - bulkAdd: [ - "POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add" - ], - bulkRemove: [ - "POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove" - ], - delete: [ - "DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}" - ], - getAssignment: [ - "GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}" - ], - getAssignments: [ - "GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations" - ] - }, - enterpriseTeams: { - create: ["POST /enterprises/{enterprise}/teams"], - delete: ["DELETE /enterprises/{enterprise}/teams/{team_slug}"], - get: ["GET /enterprises/{enterprise}/teams/{team_slug}"], - list: ["GET /enterprises/{enterprise}/teams"], - update: ["PATCH /enterprises/{enterprise}/teams/{team_slug}"] - }, - gists: { - checkIsStarred: ["GET /gists/{gist_id}/star"], - create: ["POST /gists"], - createComment: ["POST /gists/{gist_id}/comments"], - delete: ["DELETE /gists/{gist_id}"], - deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], - fork: ["POST /gists/{gist_id}/forks"], - get: ["GET /gists/{gist_id}"], - getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], - getRevision: ["GET /gists/{gist_id}/{sha}"], - list: ["GET /gists"], - listComments: ["GET /gists/{gist_id}/comments"], - listCommits: ["GET /gists/{gist_id}/commits"], - listForUser: ["GET /users/{username}/gists"], - listForks: ["GET /gists/{gist_id}/forks"], - listPublic: ["GET /gists/public"], - listStarred: ["GET /gists/starred"], - star: ["PUT /gists/{gist_id}/star"], - unstar: ["DELETE /gists/{gist_id}/star"], - update: ["PATCH /gists/{gist_id}"], - updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"] - }, - git: { - createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], - createCommit: ["POST /repos/{owner}/{repo}/git/commits"], - createRef: ["POST /repos/{owner}/{repo}/git/refs"], - createTag: ["POST /repos/{owner}/{repo}/git/tags"], - createTree: ["POST /repos/{owner}/{repo}/git/trees"], - deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], - getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], - getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], - getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], - getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], - getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], - listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], - updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"] - }, - gitignore: { - getAllTemplates: ["GET /gitignore/templates"], - getTemplate: ["GET /gitignore/templates/{name}"] - }, - hostedCompute: { - createNetworkConfigurationForOrg: [ - "POST /orgs/{org}/settings/network-configurations" - ], - deleteNetworkConfigurationFromOrg: [ - "DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}" - ], - getNetworkConfigurationForOrg: [ - "GET /orgs/{org}/settings/network-configurations/{network_configuration_id}" - ], - getNetworkSettingsForOrg: [ - "GET /orgs/{org}/settings/network-settings/{network_settings_id}" - ], - listNetworkConfigurationsForOrg: [ - "GET /orgs/{org}/settings/network-configurations" - ], - updateNetworkConfigurationForOrg: [ - "PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}" - ] - }, - interactions: { - getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], - getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], - getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], - getRestrictionsForYourPublicRepos: [ - "GET /user/interaction-limits", - {}, - { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] } - ], - removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], - removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], - removeRestrictionsForRepo: [ - "DELETE /repos/{owner}/{repo}/interaction-limits" - ], - removeRestrictionsForYourPublicRepos: [ - "DELETE /user/interaction-limits", - {}, - { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] } - ], - setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], - setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], - setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], - setRestrictionsForYourPublicRepos: [ - "PUT /user/interaction-limits", - {}, - { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] } - ] - }, - issues: { - addAssignees: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees" - ], - addBlockedByDependency: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by" - ], - addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], - addSubIssue: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues" - ], - checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], - checkUserCanBeAssignedToIssue: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}" - ], - create: ["POST /repos/{owner}/{repo}/issues"], - createComment: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/comments" - ], - createLabel: ["POST /repos/{owner}/{repo}/labels"], - createMilestone: ["POST /repos/{owner}/{repo}/milestones"], - deleteComment: [ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}" - ], - deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], - deleteMilestone: [ - "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}" - ], - get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], - getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], - getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], - getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], - getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], - getParent: ["GET /repos/{owner}/{repo}/issues/{issue_number}/parent"], - list: ["GET /issues"], - listAssignees: ["GET /repos/{owner}/{repo}/assignees"], - listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], - listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], - listDependenciesBlockedBy: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by" - ], - listDependenciesBlocking: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking" - ], - listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], - listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], - listEventsForTimeline: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline" - ], - listForAuthenticatedUser: ["GET /user/issues"], - listForOrg: ["GET /orgs/{org}/issues"], - listForRepo: ["GET /repos/{owner}/{repo}/issues"], - listLabelsForMilestone: [ - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels" - ], - listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], - listLabelsOnIssue: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/labels" - ], - listMilestones: ["GET /repos/{owner}/{repo}/milestones"], - listSubIssues: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues" - ], - lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], - removeAllLabels: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels" - ], - removeAssignees: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees" - ], - removeDependencyBlockedBy: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}" - ], - removeLabel: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}" - ], - removeSubIssue: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue" - ], - reprioritizeSubIssue: [ - "PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority" - ], - setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], - unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], - update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], - updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], - updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], - updateMilestone: [ - "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}" - ] - }, - licenses: { - get: ["GET /licenses/{license}"], - getAllCommonlyUsed: ["GET /licenses"], - getForRepo: ["GET /repos/{owner}/{repo}/license"] - }, - markdown: { - render: ["POST /markdown"], - renderRaw: [ - "POST /markdown/raw", - { headers: { "content-type": "text/plain; charset=utf-8" } } - ] - }, - meta: { - get: ["GET /meta"], - getAllVersions: ["GET /versions"], - getOctocat: ["GET /octocat"], - getZen: ["GET /zen"], - root: ["GET /"] - }, - migrations: { - deleteArchiveForAuthenticatedUser: [ - "DELETE /user/migrations/{migration_id}/archive" - ], - deleteArchiveForOrg: [ - "DELETE /orgs/{org}/migrations/{migration_id}/archive" - ], - downloadArchiveForOrg: [ - "GET /orgs/{org}/migrations/{migration_id}/archive" - ], - getArchiveForAuthenticatedUser: [ - "GET /user/migrations/{migration_id}/archive" - ], - getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], - getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], - listForAuthenticatedUser: ["GET /user/migrations"], - listForOrg: ["GET /orgs/{org}/migrations"], - listReposForAuthenticatedUser: [ - "GET /user/migrations/{migration_id}/repositories" - ], - listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], - listReposForUser: [ - "GET /user/migrations/{migration_id}/repositories", - {}, - { renamed: ["migrations", "listReposForAuthenticatedUser"] } - ], - startForAuthenticatedUser: ["POST /user/migrations"], - startForOrg: ["POST /orgs/{org}/migrations"], - unlockRepoForAuthenticatedUser: [ - "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock" - ], - unlockRepoForOrg: [ - "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock" - ] - }, - oidc: { - getOidcCustomSubTemplateForOrg: [ - "GET /orgs/{org}/actions/oidc/customization/sub" - ], - updateOidcCustomSubTemplateForOrg: [ - "PUT /orgs/{org}/actions/oidc/customization/sub" - ] - }, - orgs: { - addSecurityManagerTeam: [ - "PUT /orgs/{org}/security-managers/teams/{team_slug}", - {}, - { - deprecated: "octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team" - } - ], - assignTeamToOrgRole: [ - "PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}" - ], - assignUserToOrgRole: [ - "PUT /orgs/{org}/organization-roles/users/{username}/{role_id}" - ], - blockUser: ["PUT /orgs/{org}/blocks/{username}"], - cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], - checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], - checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], - checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], - convertMemberToOutsideCollaborator: [ - "PUT /orgs/{org}/outside_collaborators/{username}" - ], - createArtifactStorageRecord: [ - "POST /orgs/{org}/artifacts/metadata/storage-record" - ], - createInvitation: ["POST /orgs/{org}/invitations"], - createIssueType: ["POST /orgs/{org}/issue-types"], - createWebhook: ["POST /orgs/{org}/hooks"], - customPropertiesForOrgsCreateOrUpdateOrganizationValues: [ - "PATCH /organizations/{org}/org-properties/values" - ], - customPropertiesForOrgsGetOrganizationValues: [ - "GET /organizations/{org}/org-properties/values" - ], - customPropertiesForReposCreateOrUpdateOrganizationDefinition: [ - "PUT /orgs/{org}/properties/schema/{custom_property_name}" - ], - customPropertiesForReposCreateOrUpdateOrganizationDefinitions: [ - "PATCH /orgs/{org}/properties/schema" - ], - customPropertiesForReposCreateOrUpdateOrganizationValues: [ - "PATCH /orgs/{org}/properties/values" - ], - customPropertiesForReposDeleteOrganizationDefinition: [ - "DELETE /orgs/{org}/properties/schema/{custom_property_name}" - ], - customPropertiesForReposGetOrganizationDefinition: [ - "GET /orgs/{org}/properties/schema/{custom_property_name}" - ], - customPropertiesForReposGetOrganizationDefinitions: [ - "GET /orgs/{org}/properties/schema" - ], - customPropertiesForReposGetOrganizationValues: [ - "GET /orgs/{org}/properties/values" - ], - delete: ["DELETE /orgs/{org}"], - deleteAttestationsBulk: ["POST /orgs/{org}/attestations/delete-request"], - deleteAttestationsById: [ - "DELETE /orgs/{org}/attestations/{attestation_id}" - ], - deleteAttestationsBySubjectDigest: [ - "DELETE /orgs/{org}/attestations/digest/{subject_digest}" - ], - deleteIssueType: ["DELETE /orgs/{org}/issue-types/{issue_type_id}"], - deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], - disableSelectedRepositoryImmutableReleasesOrganization: [ - "DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}" - ], - enableSelectedRepositoryImmutableReleasesOrganization: [ - "PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}" - ], - get: ["GET /orgs/{org}"], - getImmutableReleasesSettings: [ - "GET /orgs/{org}/settings/immutable-releases" - ], - getImmutableReleasesSettingsRepositories: [ - "GET /orgs/{org}/settings/immutable-releases/repositories" - ], - getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], - getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], - getOrgRole: ["GET /orgs/{org}/organization-roles/{role_id}"], - getOrgRulesetHistory: ["GET /orgs/{org}/rulesets/{ruleset_id}/history"], - getOrgRulesetVersion: [ - "GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}" - ], - getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], - getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], - getWebhookDelivery: [ - "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}" - ], - list: ["GET /organizations"], - listAppInstallations: ["GET /orgs/{org}/installations"], - listArtifactStorageRecords: [ - "GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records" - ], - listAttestationRepositories: ["GET /orgs/{org}/attestations/repositories"], - listAttestations: ["GET /orgs/{org}/attestations/{subject_digest}"], - listAttestationsBulk: [ - "POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}" - ], - listBlockedUsers: ["GET /orgs/{org}/blocks"], - listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], - listForAuthenticatedUser: ["GET /user/orgs"], - listForUser: ["GET /users/{username}/orgs"], - listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], - listIssueTypes: ["GET /orgs/{org}/issue-types"], - listMembers: ["GET /orgs/{org}/members"], - listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], - listOrgRoleTeams: ["GET /orgs/{org}/organization-roles/{role_id}/teams"], - listOrgRoleUsers: ["GET /orgs/{org}/organization-roles/{role_id}/users"], - listOrgRoles: ["GET /orgs/{org}/organization-roles"], - listOrganizationFineGrainedPermissions: [ - "GET /orgs/{org}/organization-fine-grained-permissions" - ], - listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], - listPatGrantRepositories: [ - "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories" - ], - listPatGrantRequestRepositories: [ - "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories" - ], - listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"], - listPatGrants: ["GET /orgs/{org}/personal-access-tokens"], - listPendingInvitations: ["GET /orgs/{org}/invitations"], - listPublicMembers: ["GET /orgs/{org}/public_members"], - listSecurityManagerTeams: [ - "GET /orgs/{org}/security-managers", - {}, - { - deprecated: "octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams" - } - ], - listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], - listWebhooks: ["GET /orgs/{org}/hooks"], - pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: [ - "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" - ], - removeMember: ["DELETE /orgs/{org}/members/{username}"], - removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], - removeOutsideCollaborator: [ - "DELETE /orgs/{org}/outside_collaborators/{username}" - ], - removePublicMembershipForAuthenticatedUser: [ - "DELETE /orgs/{org}/public_members/{username}" - ], - removeSecurityManagerTeam: [ - "DELETE /orgs/{org}/security-managers/teams/{team_slug}", - {}, - { - deprecated: "octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team" - } - ], - reviewPatGrantRequest: [ - "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}" - ], - reviewPatGrantRequestsInBulk: [ - "POST /orgs/{org}/personal-access-token-requests" - ], - revokeAllOrgRolesTeam: [ - "DELETE /orgs/{org}/organization-roles/teams/{team_slug}" - ], - revokeAllOrgRolesUser: [ - "DELETE /orgs/{org}/organization-roles/users/{username}" - ], - revokeOrgRoleTeam: [ - "DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}" - ], - revokeOrgRoleUser: [ - "DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}" - ], - setImmutableReleasesSettings: [ - "PUT /orgs/{org}/settings/immutable-releases" - ], - setImmutableReleasesSettingsRepositories: [ - "PUT /orgs/{org}/settings/immutable-releases/repositories" - ], - setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], - setPublicMembershipForAuthenticatedUser: [ - "PUT /orgs/{org}/public_members/{username}" - ], - unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], - update: ["PATCH /orgs/{org}"], - updateIssueType: ["PUT /orgs/{org}/issue-types/{issue_type_id}"], - updateMembershipForAuthenticatedUser: [ - "PATCH /user/memberships/orgs/{org}" - ], - updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"], - updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"], - updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], - updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"] - }, - packages: { - deletePackageForAuthenticatedUser: [ - "DELETE /user/packages/{package_type}/{package_name}" - ], - deletePackageForOrg: [ - "DELETE /orgs/{org}/packages/{package_type}/{package_name}" - ], - deletePackageForUser: [ - "DELETE /users/{username}/packages/{package_type}/{package_name}" - ], - deletePackageVersionForAuthenticatedUser: [ - "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}" - ], - deletePackageVersionForOrg: [ - "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" - ], - deletePackageVersionForUser: [ - "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" - ], - getAllPackageVersionsForAPackageOwnedByAnOrg: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", - {}, - { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] } - ], - getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}/versions", - {}, - { - renamed: [ - "packages", - "getAllPackageVersionsForPackageOwnedByAuthenticatedUser" - ] - } - ], - getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}/versions" - ], - getAllPackageVersionsForPackageOwnedByOrg: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions" - ], - getAllPackageVersionsForPackageOwnedByUser: [ - "GET /users/{username}/packages/{package_type}/{package_name}/versions" - ], - getPackageForAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}" - ], - getPackageForOrganization: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}" - ], - getPackageForUser: [ - "GET /users/{username}/packages/{package_type}/{package_name}" - ], - getPackageVersionForAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}" - ], - getPackageVersionForOrganization: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" - ], - getPackageVersionForUser: [ - "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" - ], - listDockerMigrationConflictingPackagesForAuthenticatedUser: [ - "GET /user/docker/conflicts" - ], - listDockerMigrationConflictingPackagesForOrganization: [ - "GET /orgs/{org}/docker/conflicts" - ], - listDockerMigrationConflictingPackagesForUser: [ - "GET /users/{username}/docker/conflicts" - ], - listPackagesForAuthenticatedUser: ["GET /user/packages"], - listPackagesForOrganization: ["GET /orgs/{org}/packages"], - listPackagesForUser: ["GET /users/{username}/packages"], - restorePackageForAuthenticatedUser: [ - "POST /user/packages/{package_type}/{package_name}/restore{?token}" - ], - restorePackageForOrg: [ - "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}" - ], - restorePackageForUser: [ - "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}" - ], - restorePackageVersionForAuthenticatedUser: [ - "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" - ], - restorePackageVersionForOrg: [ - "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" - ], - restorePackageVersionForUser: [ - "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" - ] - }, - privateRegistries: { - createOrgPrivateRegistry: ["POST /orgs/{org}/private-registries"], - deleteOrgPrivateRegistry: [ - "DELETE /orgs/{org}/private-registries/{secret_name}" - ], - getOrgPrivateRegistry: ["GET /orgs/{org}/private-registries/{secret_name}"], - getOrgPublicKey: ["GET /orgs/{org}/private-registries/public-key"], - listOrgPrivateRegistries: ["GET /orgs/{org}/private-registries"], - updateOrgPrivateRegistry: [ - "PATCH /orgs/{org}/private-registries/{secret_name}" - ] - }, - projects: { - addItemForOrg: ["POST /orgs/{org}/projectsV2/{project_number}/items"], - addItemForUser: [ - "POST /users/{username}/projectsV2/{project_number}/items" - ], - deleteItemForOrg: [ - "DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}" - ], - deleteItemForUser: [ - "DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}" - ], - getFieldForOrg: [ - "GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}" - ], - getFieldForUser: [ - "GET /users/{username}/projectsV2/{project_number}/fields/{field_id}" - ], - getForOrg: ["GET /orgs/{org}/projectsV2/{project_number}"], - getForUser: ["GET /users/{username}/projectsV2/{project_number}"], - getOrgItem: ["GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}"], - getUserItem: [ - "GET /users/{username}/projectsV2/{project_number}/items/{item_id}" - ], - listFieldsForOrg: ["GET /orgs/{org}/projectsV2/{project_number}/fields"], - listFieldsForUser: [ - "GET /users/{username}/projectsV2/{project_number}/fields" - ], - listForOrg: ["GET /orgs/{org}/projectsV2"], - listForUser: ["GET /users/{username}/projectsV2"], - listItemsForOrg: ["GET /orgs/{org}/projectsV2/{project_number}/items"], - listItemsForUser: [ - "GET /users/{username}/projectsV2/{project_number}/items" - ], - updateItemForOrg: [ - "PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}" - ], - updateItemForUser: [ - "PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}" - ] - }, - pulls: { - checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - create: ["POST /repos/{owner}/{repo}/pulls"], - createReplyForReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies" - ], - createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - createReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments" - ], - deletePendingReview: [ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" - ], - deleteReviewComment: [ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}" - ], - dismissReview: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals" - ], - get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], - getReview: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" - ], - getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - list: ["GET /repos/{owner}/{repo}/pulls"], - listCommentsForReview: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments" - ], - listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], - listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], - listRequestedReviewers: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" - ], - listReviewComments: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments" - ], - listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], - listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - removeRequestedReviewers: [ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" - ], - requestReviewers: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" - ], - submitReview: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events" - ], - update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], - updateBranch: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch" - ], - updateReview: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" - ], - updateReviewComment: [ - "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}" - ] - }, - rateLimit: { get: ["GET /rate_limit"] }, - reactions: { - createForCommitComment: [ - "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions" - ], - createForIssue: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions" - ], - createForIssueComment: [ - "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" - ], - createForPullRequestReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" - ], - createForRelease: [ - "POST /repos/{owner}/{repo}/releases/{release_id}/reactions" - ], - createForTeamDiscussionCommentInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" - ], - createForTeamDiscussionInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" - ], - deleteForCommitComment: [ - "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}" - ], - deleteForIssue: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}" - ], - deleteForIssueComment: [ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}" - ], - deleteForPullRequestComment: [ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}" - ], - deleteForRelease: [ - "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}" - ], - deleteForTeamDiscussion: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}" - ], - deleteForTeamDiscussionComment: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}" - ], - listForCommitComment: [ - "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions" - ], - listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], - listForIssueComment: [ - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" - ], - listForPullRequestReviewComment: [ - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" - ], - listForRelease: [ - "GET /repos/{owner}/{repo}/releases/{release_id}/reactions" - ], - listForTeamDiscussionCommentInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" - ], - listForTeamDiscussionInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" - ] - }, - repos: { - acceptInvitation: [ - "PATCH /user/repository_invitations/{invitation_id}", - {}, - { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] } - ], - acceptInvitationForAuthenticatedUser: [ - "PATCH /user/repository_invitations/{invitation_id}" - ], - addAppAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" } - ], - addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], - addStatusCheckContexts: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" } - ], - addTeamAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" } - ], - addUserAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" } - ], - cancelPagesDeployment: [ - "POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel" - ], - checkAutomatedSecurityFixes: [ - "GET /repos/{owner}/{repo}/automated-security-fixes" - ], - checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], - checkImmutableReleases: ["GET /repos/{owner}/{repo}/immutable-releases"], - checkPrivateVulnerabilityReporting: [ - "GET /repos/{owner}/{repo}/private-vulnerability-reporting" - ], - checkVulnerabilityAlerts: [ - "GET /repos/{owner}/{repo}/vulnerability-alerts" - ], - codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], - compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], - compareCommitsWithBasehead: [ - "GET /repos/{owner}/{repo}/compare/{basehead}" - ], - createAttestation: ["POST /repos/{owner}/{repo}/attestations"], - createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], - createCommitComment: [ - "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments" - ], - createCommitSignatureProtection: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" - ], - createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], - createDeployKey: ["POST /repos/{owner}/{repo}/keys"], - createDeployment: ["POST /repos/{owner}/{repo}/deployments"], - createDeploymentBranchPolicy: [ - "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" - ], - createDeploymentProtectionRule: [ - "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" - ], - createDeploymentStatus: [ - "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" - ], - createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], - createForAuthenticatedUser: ["POST /user/repos"], - createFork: ["POST /repos/{owner}/{repo}/forks"], - createInOrg: ["POST /orgs/{org}/repos"], - createOrUpdateEnvironment: [ - "PUT /repos/{owner}/{repo}/environments/{environment_name}" - ], - createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], - createOrgRuleset: ["POST /orgs/{org}/rulesets"], - createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployments"], - createPagesSite: ["POST /repos/{owner}/{repo}/pages"], - createRelease: ["POST /repos/{owner}/{repo}/releases"], - createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"], - createUsingTemplate: [ - "POST /repos/{template_owner}/{template_repo}/generate" - ], - createWebhook: ["POST /repos/{owner}/{repo}/hooks"], - customPropertiesForReposCreateOrUpdateRepositoryValues: [ - "PATCH /repos/{owner}/{repo}/properties/values" - ], - customPropertiesForReposGetRepositoryValues: [ - "GET /repos/{owner}/{repo}/properties/values" - ], - declineInvitation: [ - "DELETE /user/repository_invitations/{invitation_id}", - {}, - { renamed: ["repos", "declineInvitationForAuthenticatedUser"] } - ], - declineInvitationForAuthenticatedUser: [ - "DELETE /user/repository_invitations/{invitation_id}" - ], - delete: ["DELETE /repos/{owner}/{repo}"], - deleteAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" - ], - deleteAdminBranchProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" - ], - deleteAnEnvironment: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}" - ], - deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], - deleteBranchProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection" - ], - deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], - deleteCommitSignatureProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" - ], - deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], - deleteDeployment: [ - "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}" - ], - deleteDeploymentBranchPolicy: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" - ], - deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], - deleteInvitation: [ - "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}" - ], - deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"], - deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], - deletePullRequestReviewProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" - ], - deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], - deleteReleaseAsset: [ - "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}" - ], - deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"], - deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], - disableAutomatedSecurityFixes: [ - "DELETE /repos/{owner}/{repo}/automated-security-fixes" - ], - disableDeploymentProtectionRule: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" - ], - disableImmutableReleases: [ - "DELETE /repos/{owner}/{repo}/immutable-releases" - ], - disablePrivateVulnerabilityReporting: [ - "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting" - ], - disableVulnerabilityAlerts: [ - "DELETE /repos/{owner}/{repo}/vulnerability-alerts" - ], - downloadArchive: [ - "GET /repos/{owner}/{repo}/zipball/{ref}", - {}, - { renamed: ["repos", "downloadZipballArchive"] } - ], - downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], - downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], - enableAutomatedSecurityFixes: [ - "PUT /repos/{owner}/{repo}/automated-security-fixes" - ], - enableImmutableReleases: ["PUT /repos/{owner}/{repo}/immutable-releases"], - enablePrivateVulnerabilityReporting: [ - "PUT /repos/{owner}/{repo}/private-vulnerability-reporting" - ], - enableVulnerabilityAlerts: [ - "PUT /repos/{owner}/{repo}/vulnerability-alerts" - ], - generateReleaseNotes: [ - "POST /repos/{owner}/{repo}/releases/generate-notes" - ], - get: ["GET /repos/{owner}/{repo}"], - getAccessRestrictions: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" - ], - getAdminBranchProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" - ], - getAllDeploymentProtectionRules: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" - ], - getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], - getAllStatusCheckContexts: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts" - ], - getAllTopics: ["GET /repos/{owner}/{repo}/topics"], - getAppsWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps" - ], - getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], - getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], - getBranchProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection" - ], - getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"], - getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], - getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], - getCollaboratorPermissionLevel: [ - "GET /repos/{owner}/{repo}/collaborators/{username}/permission" - ], - getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], - getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], - getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], - getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], - getCommitSignatureProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" - ], - getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], - getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], - getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], - getCustomDeploymentProtectionRule: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" - ], - getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], - getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], - getDeploymentBranchPolicy: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" - ], - getDeploymentStatus: [ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}" - ], - getEnvironment: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}" - ], - getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], - getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], - getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"], - getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"], - getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"], - getOrgRulesets: ["GET /orgs/{org}/rulesets"], - getPages: ["GET /repos/{owner}/{repo}/pages"], - getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], - getPagesDeployment: [ - "GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}" - ], - getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], - getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], - getPullRequestReviewProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" - ], - getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], - getReadme: ["GET /repos/{owner}/{repo}/readme"], - getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], - getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], - getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], - getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], - getRepoRuleSuite: [ - "GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}" - ], - getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"], - getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"], - getRepoRulesetHistory: [ - "GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history" - ], - getRepoRulesetVersion: [ - "GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}" - ], - getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"], - getStatusChecksProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" - ], - getTeamsWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams" - ], - getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], - getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], - getUsersWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users" - ], - getViews: ["GET /repos/{owner}/{repo}/traffic/views"], - getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], - getWebhookConfigForRepo: [ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/config" - ], - getWebhookDelivery: [ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}" - ], - listActivities: ["GET /repos/{owner}/{repo}/activity"], - listAttestations: [ - "GET /repos/{owner}/{repo}/attestations/{subject_digest}" - ], - listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], - listBranches: ["GET /repos/{owner}/{repo}/branches"], - listBranchesForHeadCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head" - ], - listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], - listCommentsForCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments" - ], - listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], - listCommitStatusesForRef: [ - "GET /repos/{owner}/{repo}/commits/{ref}/statuses" - ], - listCommits: ["GET /repos/{owner}/{repo}/commits"], - listContributors: ["GET /repos/{owner}/{repo}/contributors"], - listCustomDeploymentRuleIntegrations: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps" - ], - listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], - listDeploymentBranchPolicies: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" - ], - listDeploymentStatuses: [ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" - ], - listDeployments: ["GET /repos/{owner}/{repo}/deployments"], - listForAuthenticatedUser: ["GET /user/repos"], - listForOrg: ["GET /orgs/{org}/repos"], - listForUser: ["GET /users/{username}/repos"], - listForks: ["GET /repos/{owner}/{repo}/forks"], - listInvitations: ["GET /repos/{owner}/{repo}/invitations"], - listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], - listLanguages: ["GET /repos/{owner}/{repo}/languages"], - listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], - listPublic: ["GET /repositories"], - listPullRequestsAssociatedWithCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls" - ], - listReleaseAssets: [ - "GET /repos/{owner}/{repo}/releases/{release_id}/assets" - ], - listReleases: ["GET /repos/{owner}/{repo}/releases"], - listTags: ["GET /repos/{owner}/{repo}/tags"], - listTeams: ["GET /repos/{owner}/{repo}/teams"], - listWebhookDeliveries: [ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries" - ], - listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], - merge: ["POST /repos/{owner}/{repo}/merges"], - mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], - pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: [ - "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" - ], - removeAppAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" } - ], - removeCollaborator: [ - "DELETE /repos/{owner}/{repo}/collaborators/{username}" - ], - removeStatusCheckContexts: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" } - ], - removeStatusCheckProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" - ], - removeTeamAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" } - ], - removeUserAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" } - ], - renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], - replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], - requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], - setAdminBranchProtection: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" - ], - setAppAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" } - ], - setStatusCheckContexts: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" } - ], - setTeamAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" } - ], - setUserAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" } - ], - testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], - transfer: ["POST /repos/{owner}/{repo}/transfer"], - update: ["PATCH /repos/{owner}/{repo}"], - updateBranchProtection: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection" - ], - updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], - updateDeploymentBranchPolicy: [ - "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" - ], - updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], - updateInvitation: [ - "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}" - ], - updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"], - updatePullRequestReviewProtection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" - ], - updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], - updateReleaseAsset: [ - "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}" - ], - updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"], - updateStatusCheckPotection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - {}, - { renamed: ["repos", "updateStatusCheckProtection"] } - ], - updateStatusCheckProtection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" - ], - updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], - updateWebhookConfigForRepo: [ - "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config" - ], - uploadReleaseAsset: [ - "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", - { baseUrl: "https://uploads.github.com" } - ] - }, - search: { - code: ["GET /search/code"], - commits: ["GET /search/commits"], - issuesAndPullRequests: ["GET /search/issues"], - labels: ["GET /search/labels"], - repos: ["GET /search/repositories"], - topics: ["GET /search/topics"], - users: ["GET /search/users"] - }, - secretScanning: { - createPushProtectionBypass: [ - "POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses" - ], - getAlert: [ - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" - ], - getScanHistory: ["GET /repos/{owner}/{repo}/secret-scanning/scan-history"], - listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], - listLocationsForAlert: [ - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations" - ], - listOrgPatternConfigs: [ - "GET /orgs/{org}/secret-scanning/pattern-configurations" - ], - updateAlert: [ - "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" - ], - updateOrgPatternConfigs: [ - "PATCH /orgs/{org}/secret-scanning/pattern-configurations" - ] - }, - securityAdvisories: { - createFork: [ - "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks" - ], - createPrivateVulnerabilityReport: [ - "POST /repos/{owner}/{repo}/security-advisories/reports" - ], - createRepositoryAdvisory: [ - "POST /repos/{owner}/{repo}/security-advisories" - ], - createRepositoryAdvisoryCveRequest: [ - "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve" - ], - getGlobalAdvisory: ["GET /advisories/{ghsa_id}"], - getRepositoryAdvisory: [ - "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}" - ], - listGlobalAdvisories: ["GET /advisories"], - listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"], - listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"], - updateRepositoryAdvisory: [ - "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}" - ] - }, - teams: { - addOrUpdateMembershipForUserInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}" - ], - addOrUpdateRepoPermissionsInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" - ], - checkPermissionsForRepoInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" - ], - create: ["POST /orgs/{org}/teams"], - createDiscussionCommentInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" - ], - createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], - deleteDiscussionCommentInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" - ], - deleteDiscussionInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" - ], - deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], - getByName: ["GET /orgs/{org}/teams/{team_slug}"], - getDiscussionCommentInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" - ], - getDiscussionInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" - ], - getMembershipForUserInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/memberships/{username}" - ], - list: ["GET /orgs/{org}/teams"], - listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], - listDiscussionCommentsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" - ], - listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], - listForAuthenticatedUser: ["GET /user/teams"], - listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], - listPendingInvitationsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/invitations" - ], - listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], - removeMembershipForUserInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}" - ], - removeRepoInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" - ], - updateDiscussionCommentInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" - ], - updateDiscussionInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" - ], - updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] - }, - users: { - addEmailForAuthenticated: [ - "POST /user/emails", - {}, - { renamed: ["users", "addEmailForAuthenticatedUser"] } - ], - addEmailForAuthenticatedUser: ["POST /user/emails"], - addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"], - block: ["PUT /user/blocks/{username}"], - checkBlocked: ["GET /user/blocks/{username}"], - checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], - checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], - createGpgKeyForAuthenticated: [ - "POST /user/gpg_keys", - {}, - { renamed: ["users", "createGpgKeyForAuthenticatedUser"] } - ], - createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], - createPublicSshKeyForAuthenticated: [ - "POST /user/keys", - {}, - { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] } - ], - createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], - createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], - deleteAttestationsBulk: [ - "POST /users/{username}/attestations/delete-request" - ], - deleteAttestationsById: [ - "DELETE /users/{username}/attestations/{attestation_id}" - ], - deleteAttestationsBySubjectDigest: [ - "DELETE /users/{username}/attestations/digest/{subject_digest}" - ], - deleteEmailForAuthenticated: [ - "DELETE /user/emails", - {}, - { renamed: ["users", "deleteEmailForAuthenticatedUser"] } - ], - deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], - deleteGpgKeyForAuthenticated: [ - "DELETE /user/gpg_keys/{gpg_key_id}", - {}, - { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] } - ], - deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], - deletePublicSshKeyForAuthenticated: [ - "DELETE /user/keys/{key_id}", - {}, - { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] } - ], - deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], - deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"], - deleteSshSigningKeyForAuthenticatedUser: [ - "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}" - ], - follow: ["PUT /user/following/{username}"], - getAuthenticated: ["GET /user"], - getById: ["GET /user/{account_id}"], - getByUsername: ["GET /users/{username}"], - getContextForUser: ["GET /users/{username}/hovercard"], - getGpgKeyForAuthenticated: [ - "GET /user/gpg_keys/{gpg_key_id}", - {}, - { renamed: ["users", "getGpgKeyForAuthenticatedUser"] } - ], - getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], - getPublicSshKeyForAuthenticated: [ - "GET /user/keys/{key_id}", - {}, - { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] } - ], - getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], - getSshSigningKeyForAuthenticatedUser: [ - "GET /user/ssh_signing_keys/{ssh_signing_key_id}" - ], - list: ["GET /users"], - listAttestations: ["GET /users/{username}/attestations/{subject_digest}"], - listAttestationsBulk: [ - "POST /users/{username}/attestations/bulk-list{?per_page,before,after}" - ], - listBlockedByAuthenticated: [ - "GET /user/blocks", - {}, - { renamed: ["users", "listBlockedByAuthenticatedUser"] } - ], - listBlockedByAuthenticatedUser: ["GET /user/blocks"], - listEmailsForAuthenticated: [ - "GET /user/emails", - {}, - { renamed: ["users", "listEmailsForAuthenticatedUser"] } - ], - listEmailsForAuthenticatedUser: ["GET /user/emails"], - listFollowedByAuthenticated: [ - "GET /user/following", - {}, - { renamed: ["users", "listFollowedByAuthenticatedUser"] } - ], - listFollowedByAuthenticatedUser: ["GET /user/following"], - listFollowersForAuthenticatedUser: ["GET /user/followers"], - listFollowersForUser: ["GET /users/{username}/followers"], - listFollowingForUser: ["GET /users/{username}/following"], - listGpgKeysForAuthenticated: [ - "GET /user/gpg_keys", - {}, - { renamed: ["users", "listGpgKeysForAuthenticatedUser"] } - ], - listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], - listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], - listPublicEmailsForAuthenticated: [ - "GET /user/public_emails", - {}, - { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] } - ], - listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], - listPublicKeysForUser: ["GET /users/{username}/keys"], - listPublicSshKeysForAuthenticated: [ - "GET /user/keys", - {}, - { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] } - ], - listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], - listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], - listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], - listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], - listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], - setPrimaryEmailVisibilityForAuthenticated: [ - "PATCH /user/email/visibility", - {}, - { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] } - ], - setPrimaryEmailVisibilityForAuthenticatedUser: [ - "PATCH /user/email/visibility" - ], - unblock: ["DELETE /user/blocks/{username}"], - unfollow: ["DELETE /user/following/{username}"], - updateAuthenticated: ["PATCH /user"] - } -}; -var endpoints_default = Endpoints; -export { - endpoints_default as default -}; -//# sourceMappingURL=endpoints.js.map diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js.map b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js.map deleted file mode 100644 index aa466bb..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/generated/endpoints.ts"], - "sourcesContent": ["import type { EndpointsDefaultsAndDecorations } from \"../types.js\";\nconst Endpoints: EndpointsDefaultsAndDecorations = {\n actions: {\n addCustomLabelsToSelfHostedRunnerForOrg: [\n \"POST /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n addCustomLabelsToSelfHostedRunnerForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n addRepoAccessToSelfHostedRunnerGroupInOrg: [\n \"PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}\",\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n addSelectedRepoToOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\",\n ],\n approveWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\",\n ],\n cancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\",\n ],\n createEnvironmentVariable: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/variables\",\n ],\n createHostedRunnerForOrg: [\"POST /orgs/{org}/actions/hosted-runners\"],\n createOrUpdateEnvironmentSecret: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n createOrgVariable: [\"POST /orgs/{org}/actions/variables\"],\n createRegistrationTokenForOrg: [\n \"POST /orgs/{org}/actions/runners/registration-token\",\n ],\n createRegistrationTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/registration-token\",\n ],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/remove-token\",\n ],\n createRepoVariable: [\"POST /repos/{owner}/{repo}/actions/variables\"],\n createWorkflowDispatch: [\n \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\",\n ],\n deleteActionsCacheById: [\n \"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\",\n ],\n deleteActionsCacheByKey: [\n \"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\",\n ],\n deleteArtifact: [\n \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\",\n ],\n deleteCustomImageFromOrg: [\n \"DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}\",\n ],\n deleteCustomImageVersionFromOrg: [\n \"DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}\",\n ],\n deleteEnvironmentSecret: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n deleteEnvironmentVariable: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}\",\n ],\n deleteHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteOrgVariable: [\"DELETE /orgs/{org}/actions/variables/{name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n deleteRepoVariable: [\n \"DELETE /repos/{owner}/{repo}/actions/variables/{name}\",\n ],\n deleteSelfHostedRunnerFromOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}\",\n ],\n deleteSelfHostedRunnerFromRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\n \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n disableSelectedRepositoryGithubActionsOrganization: [\n \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n disableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\",\n ],\n downloadArtifact: [\n \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\",\n ],\n downloadJobLogsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\",\n ],\n downloadWorkflowRunAttemptLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\",\n ],\n downloadWorkflowRunLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n enableSelectedRepositoryGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n enableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\",\n ],\n forceCancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel\",\n ],\n generateRunnerJitconfigForOrg: [\n \"POST /orgs/{org}/actions/runners/generate-jitconfig\",\n ],\n generateRunnerJitconfigForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig\",\n ],\n getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n getActionsCacheUsageByRepoForOrg: [\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n ],\n getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n getAllowedActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/selected-actions\",\n ],\n getAllowedActionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getCustomImageForOrg: [\n \"GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}\",\n ],\n getCustomImageVersionForOrg: [\n \"GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}\",\n ],\n getCustomOidcSubClaimForRepo: [\n \"GET /repos/{owner}/{repo}/actions/oidc/customization/sub\",\n ],\n getEnvironmentPublicKey: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key\",\n ],\n getEnvironmentSecret: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n getEnvironmentVariable: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}\",\n ],\n getGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/workflow\",\n ],\n getGithubActionsDefaultWorkflowPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/workflow\",\n ],\n getGithubActionsPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions\",\n ],\n getGithubActionsPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n ],\n getHostedRunnerForOrg: [\n \"GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}\",\n ],\n getHostedRunnersGithubOwnedImagesForOrg: [\n \"GET /orgs/{org}/actions/hosted-runners/images/github-owned\",\n ],\n getHostedRunnersLimitsForOrg: [\n \"GET /orgs/{org}/actions/hosted-runners/limits\",\n ],\n getHostedRunnersMachineSpecsForOrg: [\n \"GET /orgs/{org}/actions/hosted-runners/machine-sizes\",\n ],\n getHostedRunnersPartnerImagesForOrg: [\n \"GET /orgs/{org}/actions/hosted-runners/images/partner\",\n ],\n getHostedRunnersPlatformsForOrg: [\n \"GET /orgs/{org}/actions/hosted-runners/platforms\",\n ],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getOrgVariable: [\"GET /orgs/{org}/actions/variables/{name}\"],\n getPendingDeploymentsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\",\n ],\n getRepoPermissions: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n {},\n { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] },\n ],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getRepoVariable: [\"GET /repos/{owner}/{repo}/actions/variables/{name}\"],\n getReviewsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\",\n ],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowAccessToRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/access\",\n ],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\",\n ],\n getWorkflowRunUsage: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\",\n ],\n getWorkflowUsage: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\",\n ],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listCustomImageVersionsForOrg: [\n \"GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions\",\n ],\n listCustomImagesForOrg: [\n \"GET /orgs/{org}/actions/hosted-runners/images/custom\",\n ],\n listEnvironmentSecrets: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/secrets\",\n ],\n listEnvironmentVariables: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/variables\",\n ],\n listGithubHostedRunnersInGroupForOrg: [\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners\",\n ],\n listHostedRunnersForOrg: [\"GET /orgs/{org}/actions/hosted-runners\"],\n listJobsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n ],\n listJobsForWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n ],\n listLabelsForSelfHostedRunnerForOrg: [\n \"GET /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n listLabelsForSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listOrgVariables: [\"GET /orgs/{org}/actions/variables\"],\n listRepoOrganizationSecrets: [\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n ],\n listRepoOrganizationVariables: [\n \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n ],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoVariables: [\"GET /repos/{owner}/{repo}/actions/variables\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/downloads\",\n ],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n listSelectedReposForOrgVariable: [\n \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n ],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/repositories\",\n ],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n ],\n listWorkflowRuns: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n ],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunJobForWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\",\n ],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n reRunWorkflowFailedJobs: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n removeCustomLabelFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\",\n ],\n removeCustomLabelFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n removeSelectedRepoFromOrgVariable: [\n \"DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\",\n ],\n reviewCustomGatesForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule\",\n ],\n reviewPendingDeploymentsForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\",\n ],\n setAllowedActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/selected-actions\",\n ],\n setAllowedActionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n setCustomLabelsForSelfHostedRunnerForOrg: [\n \"PUT /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n setCustomLabelsForSelfHostedRunnerForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n setCustomOidcSubClaimForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/oidc/customization/sub\",\n ],\n setGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/workflow\",\n ],\n setGithubActionsDefaultWorkflowPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/workflow\",\n ],\n setGithubActionsPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions\",\n ],\n setGithubActionsPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n setSelectedReposForOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories\",\n ],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories\",\n ],\n setWorkflowAccessToRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/access\",\n ],\n updateEnvironmentVariable: [\n \"PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}\",\n ],\n updateHostedRunnerForOrg: [\n \"PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}\",\n ],\n updateOrgVariable: [\"PATCH /orgs/{org}/actions/variables/{name}\"],\n updateRepoVariable: [\n \"PATCH /repos/{owner}/{repo}/actions/variables/{name}\",\n ],\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\n \"DELETE /notifications/threads/{thread_id}/subscription\",\n ],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\n \"GET /notifications/threads/{thread_id}/subscription\",\n ],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\n \"GET /users/{username}/events/orgs/{org}\",\n ],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\n \"GET /users/{username}/received_events/public\",\n ],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/notifications\",\n ],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsDone: [\"DELETE /notifications/threads/{thread_id}\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\n \"PUT /notifications/threads/{thread_id}/subscription\",\n ],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"],\n },\n apps: {\n addRepoToInstallation: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"] },\n ],\n addRepoToInstallationForAuthenticatedUser: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\n \"POST /app/installations/{installation_id}/access_tokens\",\n ],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\n \"GET /marketplace_listing/accounts/{account_id}\",\n ],\n getSubscriptionPlanForAccountStubbed: [\n \"GET /marketplace_listing/stubbed/accounts/{account_id}\",\n ],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n ],\n listInstallationReposForAuthenticatedUser: [\n \"GET /user/installations/{installation_id}/repositories\",\n ],\n listInstallationRequestsForAuthenticatedApp: [\n \"GET /app/installation-requests\",\n ],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\n \"GET /user/marketplace_purchases/stubbed\",\n ],\n listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n redeliverWebhookDelivery: [\n \"POST /app/hook/deliveries/{delivery_id}/attempts\",\n ],\n removeRepoFromInstallation: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"] },\n ],\n removeRepoFromInstallationForAuthenticatedUser: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\n \"DELETE /app/installations/{installation_id}/suspended\",\n ],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"],\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\n \"GET /users/{username}/settings/billing/actions\",\n ],\n getGithubBillingPremiumRequestUsageReportOrg: [\n \"GET /organizations/{org}/settings/billing/premium_request/usage\",\n ],\n getGithubBillingPremiumRequestUsageReportUser: [\n \"GET /users/{username}/settings/billing/premium_request/usage\",\n ],\n getGithubBillingUsageReportOrg: [\n \"GET /organizations/{org}/settings/billing/usage\",\n ],\n getGithubBillingUsageReportUser: [\n \"GET /users/{username}/settings/billing/usage\",\n ],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\n \"GET /users/{username}/settings/billing/packages\",\n ],\n getSharedStorageBillingOrg: [\n \"GET /orgs/{org}/settings/billing/shared-storage\",\n ],\n getSharedStorageBillingUser: [\n \"GET /users/{username}/settings/billing/shared-storage\",\n ],\n },\n campaigns: {\n createCampaign: [\"POST /orgs/{org}/campaigns\"],\n deleteCampaign: [\"DELETE /orgs/{org}/campaigns/{campaign_number}\"],\n getCampaignSummary: [\"GET /orgs/{org}/campaigns/{campaign_number}\"],\n listOrgCampaigns: [\"GET /orgs/{org}/campaigns\"],\n updateCampaign: [\"PATCH /orgs/{org}/campaigns/{campaign_number}\"],\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n ],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n ],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestRun: [\n \"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\",\n ],\n rerequestSuite: [\n \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\",\n ],\n setSuitesPreferences: [\n \"PATCH /repos/{owner}/{repo}/check-suites/preferences\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n },\n codeScanning: {\n commitAutofix: [\n \"POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits\",\n ],\n createAutofix: [\n \"POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix\",\n ],\n createVariantAnalysis: [\n \"POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses\",\n ],\n deleteAnalysis: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\",\n ],\n deleteCodeqlDatabase: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}\",\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n {},\n { renamedParameters: { alert_id: \"alert_number\" } },\n ],\n getAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\",\n ],\n getAutofix: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix\",\n ],\n getCodeqlDatabase: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}\",\n ],\n getDefaultSetup: [\"GET /repos/{owner}/{repo}/code-scanning/default-setup\"],\n getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n getVariantAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}\",\n ],\n getVariantAnalysisRepoTask: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}\",\n ],\n listAlertInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listAlertsInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n {},\n { renamed: [\"codeScanning\", \"listAlertInstances\"] },\n ],\n listCodeqlDatabases: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases\",\n ],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n ],\n updateDefaultSetup: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/default-setup\",\n ],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"],\n },\n codeSecurity: {\n attachConfiguration: [\n \"POST /orgs/{org}/code-security/configurations/{configuration_id}/attach\",\n ],\n attachEnterpriseConfiguration: [\n \"POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach\",\n ],\n createConfiguration: [\"POST /orgs/{org}/code-security/configurations\"],\n createConfigurationForEnterprise: [\n \"POST /enterprises/{enterprise}/code-security/configurations\",\n ],\n deleteConfiguration: [\n \"DELETE /orgs/{org}/code-security/configurations/{configuration_id}\",\n ],\n deleteConfigurationForEnterprise: [\n \"DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}\",\n ],\n detachConfiguration: [\n \"DELETE /orgs/{org}/code-security/configurations/detach\",\n ],\n getConfiguration: [\n \"GET /orgs/{org}/code-security/configurations/{configuration_id}\",\n ],\n getConfigurationForRepository: [\n \"GET /repos/{owner}/{repo}/code-security-configuration\",\n ],\n getConfigurationsForEnterprise: [\n \"GET /enterprises/{enterprise}/code-security/configurations\",\n ],\n getConfigurationsForOrg: [\"GET /orgs/{org}/code-security/configurations\"],\n getDefaultConfigurations: [\n \"GET /orgs/{org}/code-security/configurations/defaults\",\n ],\n getDefaultConfigurationsForEnterprise: [\n \"GET /enterprises/{enterprise}/code-security/configurations/defaults\",\n ],\n getRepositoriesForConfiguration: [\n \"GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories\",\n ],\n getRepositoriesForEnterpriseConfiguration: [\n \"GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories\",\n ],\n getSingleConfigurationForEnterprise: [\n \"GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}\",\n ],\n setConfigurationAsDefault: [\n \"PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults\",\n ],\n setConfigurationAsDefaultForEnterprise: [\n \"PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults\",\n ],\n updateConfiguration: [\n \"PATCH /orgs/{org}/code-security/configurations/{configuration_id}\",\n ],\n updateEnterpriseConfiguration: [\n \"PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}\",\n ],\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n getConductCode: [\"GET /codes_of_conduct/{key}\"],\n },\n codespaces: {\n addRepositoryForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n checkPermissionsForDevcontainer: [\n \"GET /repos/{owner}/{repo}/codespaces/permissions_check\",\n ],\n codespaceMachinesForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/machines\",\n ],\n createForAuthenticatedUser: [\"POST /user/codespaces\"],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}\",\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n createOrUpdateSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}\",\n ],\n createWithPrForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\",\n ],\n createWithRepoForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/codespaces\",\n ],\n deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n deleteFromOrganization: [\n \"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/codespaces/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n deleteSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}\",\n ],\n exportForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/exports\",\n ],\n getCodespacesForUserInOrg: [\n \"GET /orgs/{org}/members/{username}/codespaces\",\n ],\n getExportDetailsForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/exports/{export_id}\",\n ],\n getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/codespaces/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/codespaces/secrets/{secret_name}\"],\n getPublicKeyForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/public-key\",\n ],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\",\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n getSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}\",\n ],\n listDevcontainersInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n ],\n listForAuthenticatedUser: [\"GET /user/codespaces\"],\n listInOrganization: [\n \"GET /orgs/{org}/codespaces\",\n {},\n { renamedParameters: { org_id: \"org\" } },\n ],\n listInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/codespaces/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n listRepositoriesForSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}/repositories\",\n ],\n listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n ],\n preFlightWithRepoForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/new\",\n ],\n publishForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/publish\",\n ],\n removeRepositoryForSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n repoMachinesForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/machines\",\n ],\n setRepositoriesForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n ],\n startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n stopInOrganization: [\n \"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\",\n ],\n updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"],\n },\n copilot: {\n addCopilotSeatsForTeams: [\n \"POST /orgs/{org}/copilot/billing/selected_teams\",\n ],\n addCopilotSeatsForUsers: [\n \"POST /orgs/{org}/copilot/billing/selected_users\",\n ],\n cancelCopilotSeatAssignmentForTeams: [\n \"DELETE /orgs/{org}/copilot/billing/selected_teams\",\n ],\n cancelCopilotSeatAssignmentForUsers: [\n \"DELETE /orgs/{org}/copilot/billing/selected_users\",\n ],\n copilotMetricsForOrganization: [\"GET /orgs/{org}/copilot/metrics\"],\n copilotMetricsForTeam: [\"GET /orgs/{org}/team/{team_slug}/copilot/metrics\"],\n getCopilotOrganizationDetails: [\"GET /orgs/{org}/copilot/billing\"],\n getCopilotSeatDetailsForUser: [\n \"GET /orgs/{org}/members/{username}/copilot\",\n ],\n listCopilotSeats: [\"GET /orgs/{org}/copilot/billing/seats\"],\n },\n credentials: { revoke: [\"POST /credentials/revoke\"] },\n dependabot: {\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}\",\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n getAlert: [\"GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\",\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/dependabot/alerts\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/dependabot/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/dependabot/alerts\"],\n listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n repositoryAccessForOrg: [\n \"GET /organizations/{org}/dependabot/repository-access\",\n ],\n setRepositoryAccessDefaultLevel: [\n \"PUT /organizations/{org}/dependabot/repository-access/default-level\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\",\n ],\n updateRepositoryAccessForOrg: [\n \"PATCH /organizations/{org}/dependabot/repository-access\",\n ],\n },\n dependencyGraph: {\n createRepositorySnapshot: [\n \"POST /repos/{owner}/{repo}/dependency-graph/snapshots\",\n ],\n diffRange: [\n \"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\",\n ],\n exportSbom: [\"GET /repos/{owner}/{repo}/dependency-graph/sbom\"],\n },\n emojis: { get: [\"GET /emojis\"] },\n enterpriseTeamMemberships: {\n add: [\n \"PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}\",\n ],\n bulkAdd: [\n \"POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add\",\n ],\n bulkRemove: [\n \"POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove\",\n ],\n get: [\n \"GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}\",\n ],\n list: [\"GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships\"],\n remove: [\n \"DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}\",\n ],\n },\n enterpriseTeamOrganizations: {\n add: [\n \"PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}\",\n ],\n bulkAdd: [\n \"POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add\",\n ],\n bulkRemove: [\n \"POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove\",\n ],\n delete: [\n \"DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}\",\n ],\n getAssignment: [\n \"GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}\",\n ],\n getAssignments: [\n \"GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations\",\n ],\n },\n enterpriseTeams: {\n create: [\"POST /enterprises/{enterprise}/teams\"],\n delete: [\"DELETE /enterprises/{enterprise}/teams/{team_slug}\"],\n get: [\"GET /enterprises/{enterprise}/teams/{team_slug}\"],\n list: [\"GET /enterprises/{enterprise}/teams\"],\n update: [\"PATCH /enterprises/{enterprise}/teams/{team_slug}\"],\n },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"],\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"],\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"],\n },\n hostedCompute: {\n createNetworkConfigurationForOrg: [\n \"POST /orgs/{org}/settings/network-configurations\",\n ],\n deleteNetworkConfigurationFromOrg: [\n \"DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}\",\n ],\n getNetworkConfigurationForOrg: [\n \"GET /orgs/{org}/settings/network-configurations/{network_configuration_id}\",\n ],\n getNetworkSettingsForOrg: [\n \"GET /orgs/{org}/settings/network-settings/{network_settings_id}\",\n ],\n listNetworkConfigurationsForOrg: [\n \"GET /orgs/{org}/settings/network-configurations\",\n ],\n updateNetworkConfigurationForOrg: [\n \"PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}\",\n ],\n },\n interactions: {\n getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\n \"GET /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"] },\n ],\n removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\n \"DELETE /repos/{owner}/{repo}/interaction-limits\",\n ],\n removeRestrictionsForYourPublicRepos: [\n \"DELETE /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"] },\n ],\n setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\n \"PUT /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"] },\n ],\n },\n issues: {\n addAssignees: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n addBlockedByDependency: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by\",\n ],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n addSubIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues\",\n ],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n checkUserCanBeAssignedToIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}\",\n ],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n ],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\",\n ],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\n \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n getParent: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/parent\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listDependenciesBlockedBy: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by\",\n ],\n listDependenciesBlocking: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking\",\n ],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n ],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n ],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n listSubIssues: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues\",\n ],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n removeAssignees: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n removeDependencyBlockedBy: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}\",\n ],\n removeLabel: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\",\n ],\n removeSubIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue\",\n ],\n reprioritizeSubIssue: [\n \"PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority\",\n ],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\n \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"],\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\n \"POST /markdown/raw\",\n { headers: { \"content-type\": \"text/plain; charset=utf-8\" } },\n ],\n },\n meta: {\n get: [\"GET /meta\"],\n getAllVersions: [\"GET /versions\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"],\n },\n migrations: {\n deleteArchiveForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/archive\",\n ],\n deleteArchiveForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/archive\",\n ],\n downloadArchiveForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/archive\",\n ],\n getArchiveForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/archive\",\n ],\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n listForAuthenticatedUser: [\"GET /user/migrations\"],\n listForOrg: [\"GET /orgs/{org}/migrations\"],\n listReposForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n ],\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n listReposForUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n {},\n { renamed: [\"migrations\", \"listReposForAuthenticatedUser\"] },\n ],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n unlockRepoForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\",\n ],\n unlockRepoForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\",\n ],\n },\n oidc: {\n getOidcCustomSubTemplateForOrg: [\n \"GET /orgs/{org}/actions/oidc/customization/sub\",\n ],\n updateOidcCustomSubTemplateForOrg: [\n \"PUT /orgs/{org}/actions/oidc/customization/sub\",\n ],\n },\n orgs: {\n addSecurityManagerTeam: [\n \"PUT /orgs/{org}/security-managers/teams/{team_slug}\",\n {},\n {\n deprecated:\n \"octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team\",\n },\n ],\n assignTeamToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\",\n ],\n assignUserToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/users/{username}/{role_id}\",\n ],\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\n \"PUT /orgs/{org}/outside_collaborators/{username}\",\n ],\n createArtifactStorageRecord: [\n \"POST /orgs/{org}/artifacts/metadata/storage-record\",\n ],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createIssueType: [\"POST /orgs/{org}/issue-types\"],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n customPropertiesForOrgsCreateOrUpdateOrganizationValues: [\n \"PATCH /organizations/{org}/org-properties/values\",\n ],\n customPropertiesForOrgsGetOrganizationValues: [\n \"GET /organizations/{org}/org-properties/values\",\n ],\n customPropertiesForReposCreateOrUpdateOrganizationDefinition: [\n \"PUT /orgs/{org}/properties/schema/{custom_property_name}\",\n ],\n customPropertiesForReposCreateOrUpdateOrganizationDefinitions: [\n \"PATCH /orgs/{org}/properties/schema\",\n ],\n customPropertiesForReposCreateOrUpdateOrganizationValues: [\n \"PATCH /orgs/{org}/properties/values\",\n ],\n customPropertiesForReposDeleteOrganizationDefinition: [\n \"DELETE /orgs/{org}/properties/schema/{custom_property_name}\",\n ],\n customPropertiesForReposGetOrganizationDefinition: [\n \"GET /orgs/{org}/properties/schema/{custom_property_name}\",\n ],\n customPropertiesForReposGetOrganizationDefinitions: [\n \"GET /orgs/{org}/properties/schema\",\n ],\n customPropertiesForReposGetOrganizationValues: [\n \"GET /orgs/{org}/properties/values\",\n ],\n delete: [\"DELETE /orgs/{org}\"],\n deleteAttestationsBulk: [\"POST /orgs/{org}/attestations/delete-request\"],\n deleteAttestationsById: [\n \"DELETE /orgs/{org}/attestations/{attestation_id}\",\n ],\n deleteAttestationsBySubjectDigest: [\n \"DELETE /orgs/{org}/attestations/digest/{subject_digest}\",\n ],\n deleteIssueType: [\"DELETE /orgs/{org}/issue-types/{issue_type_id}\"],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n disableSelectedRepositoryImmutableReleasesOrganization: [\n \"DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}\",\n ],\n enableSelectedRepositoryImmutableReleasesOrganization: [\n \"PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}\",\n ],\n get: [\"GET /orgs/{org}\"],\n getImmutableReleasesSettings: [\n \"GET /orgs/{org}/settings/immutable-releases\",\n ],\n getImmutableReleasesSettingsRepositories: [\n \"GET /orgs/{org}/settings/immutable-releases/repositories\",\n ],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getOrgRole: [\"GET /orgs/{org}/organization-roles/{role_id}\"],\n getOrgRulesetHistory: [\"GET /orgs/{org}/rulesets/{ruleset_id}/history\"],\n getOrgRulesetVersion: [\n \"GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}\",\n ],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\",\n ],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listArtifactStorageRecords: [\n \"GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records\",\n ],\n listAttestationRepositories: [\"GET /orgs/{org}/attestations/repositories\"],\n listAttestations: [\"GET /orgs/{org}/attestations/{subject_digest}\"],\n listAttestationsBulk: [\n \"POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}\",\n ],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listIssueTypes: [\"GET /orgs/{org}/issue-types\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOrgRoleTeams: [\"GET /orgs/{org}/organization-roles/{role_id}/teams\"],\n listOrgRoleUsers: [\"GET /orgs/{org}/organization-roles/{role_id}/users\"],\n listOrgRoles: [\"GET /orgs/{org}/organization-roles\"],\n listOrganizationFineGrainedPermissions: [\n \"GET /orgs/{org}/organization-fine-grained-permissions\",\n ],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPatGrantRepositories: [\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n ],\n listPatGrantRequestRepositories: [\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n ],\n listPatGrantRequests: [\"GET /orgs/{org}/personal-access-token-requests\"],\n listPatGrants: [\"GET /orgs/{org}/personal-access-tokens\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listSecurityManagerTeams: [\n \"GET /orgs/{org}/security-managers\",\n {},\n {\n deprecated:\n \"octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams\",\n },\n ],\n listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\",\n ],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\n \"DELETE /orgs/{org}/outside_collaborators/{username}\",\n ],\n removePublicMembershipForAuthenticatedUser: [\n \"DELETE /orgs/{org}/public_members/{username}\",\n ],\n removeSecurityManagerTeam: [\n \"DELETE /orgs/{org}/security-managers/teams/{team_slug}\",\n {},\n {\n deprecated:\n \"octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team\",\n },\n ],\n reviewPatGrantRequest: [\n \"POST /orgs/{org}/personal-access-token-requests/{pat_request_id}\",\n ],\n reviewPatGrantRequestsInBulk: [\n \"POST /orgs/{org}/personal-access-token-requests\",\n ],\n revokeAllOrgRolesTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}\",\n ],\n revokeAllOrgRolesUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}\",\n ],\n revokeOrgRoleTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\",\n ],\n revokeOrgRoleUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}\",\n ],\n setImmutableReleasesSettings: [\n \"PUT /orgs/{org}/settings/immutable-releases\",\n ],\n setImmutableReleasesSettingsRepositories: [\n \"PUT /orgs/{org}/settings/immutable-releases/repositories\",\n ],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\n \"PUT /orgs/{org}/public_members/{username}\",\n ],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateIssueType: [\"PUT /orgs/{org}/issue-types/{issue_type_id}\"],\n updateMembershipForAuthenticatedUser: [\n \"PATCH /user/memberships/orgs/{org}\",\n ],\n updatePatAccess: [\"POST /orgs/{org}/personal-access-tokens/{pat_id}\"],\n updatePatAccesses: [\"POST /orgs/{org}/personal-access-tokens\"],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"],\n },\n packages: {\n deletePackageForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}\",\n ],\n deletePackageForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}\",\n ],\n deletePackageForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}\",\n ],\n deletePackageVersionForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n deletePackageVersionForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n deletePackageVersionForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getAllPackageVersionsForAPackageOwnedByAnOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n {},\n { renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"] },\n ],\n getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n {},\n {\n renamed: [\n \"packages\",\n \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\",\n ],\n },\n ],\n getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n ],\n getAllPackageVersionsForPackageOwnedByOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n ],\n getAllPackageVersionsForPackageOwnedByUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions\",\n ],\n getPackageForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}\",\n ],\n getPackageForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}\",\n ],\n getPackageForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}\",\n ],\n getPackageVersionForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getPackageVersionForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getPackageVersionForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n listDockerMigrationConflictingPackagesForAuthenticatedUser: [\n \"GET /user/docker/conflicts\",\n ],\n listDockerMigrationConflictingPackagesForOrganization: [\n \"GET /orgs/{org}/docker/conflicts\",\n ],\n listDockerMigrationConflictingPackagesForUser: [\n \"GET /users/{username}/docker/conflicts\",\n ],\n listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n listPackagesForUser: [\"GET /users/{username}/packages\"],\n restorePackageForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageVersionForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n restorePackageVersionForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n restorePackageVersionForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n },\n privateRegistries: {\n createOrgPrivateRegistry: [\"POST /orgs/{org}/private-registries\"],\n deleteOrgPrivateRegistry: [\n \"DELETE /orgs/{org}/private-registries/{secret_name}\",\n ],\n getOrgPrivateRegistry: [\"GET /orgs/{org}/private-registries/{secret_name}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/private-registries/public-key\"],\n listOrgPrivateRegistries: [\"GET /orgs/{org}/private-registries\"],\n updateOrgPrivateRegistry: [\n \"PATCH /orgs/{org}/private-registries/{secret_name}\",\n ],\n },\n projects: {\n addItemForOrg: [\"POST /orgs/{org}/projectsV2/{project_number}/items\"],\n addItemForUser: [\n \"POST /users/{username}/projectsV2/{project_number}/items\",\n ],\n deleteItemForOrg: [\n \"DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}\",\n ],\n deleteItemForUser: [\n \"DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}\",\n ],\n getFieldForOrg: [\n \"GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}\",\n ],\n getFieldForUser: [\n \"GET /users/{username}/projectsV2/{project_number}/fields/{field_id}\",\n ],\n getForOrg: [\"GET /orgs/{org}/projectsV2/{project_number}\"],\n getForUser: [\"GET /users/{username}/projectsV2/{project_number}\"],\n getOrgItem: [\"GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}\"],\n getUserItem: [\n \"GET /users/{username}/projectsV2/{project_number}/items/{item_id}\",\n ],\n listFieldsForOrg: [\"GET /orgs/{org}/projectsV2/{project_number}/fields\"],\n listFieldsForUser: [\n \"GET /users/{username}/projectsV2/{project_number}/fields\",\n ],\n listForOrg: [\"GET /orgs/{org}/projectsV2\"],\n listForUser: [\"GET /users/{username}/projectsV2\"],\n listItemsForOrg: [\"GET /orgs/{org}/projectsV2/{project_number}/items\"],\n listItemsForUser: [\n \"GET /users/{username}/projectsV2/{project_number}/items\",\n ],\n updateItemForOrg: [\n \"PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}\",\n ],\n updateItemForUser: [\n \"PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}\",\n ],\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\",\n ],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n deletePendingReview: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n deleteReviewComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n dismissReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\",\n ],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n listReviewComments: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n requestReviewers: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n submitReview: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\",\n ],\n updateReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n updateReviewComment: [\n \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n },\n rateLimit: { get: [\"GET /rate_limit\"] },\n reactions: {\n createForCommitComment: [\n \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n ],\n createForIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n ],\n createForIssueComment: [\n \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n ],\n createForPullRequestReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n ],\n createForRelease: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n ],\n createForTeamDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n ],\n createForTeamDiscussionInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n ],\n deleteForCommitComment: [\n \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\",\n ],\n deleteForIssueComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForPullRequestComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForRelease: [\n \"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\",\n ],\n deleteForTeamDiscussion: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\",\n ],\n deleteForTeamDiscussionComment: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\",\n ],\n listForCommitComment: [\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n ],\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n listForIssueComment: [\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n ],\n listForPullRequestReviewComment: [\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n ],\n listForRelease: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n ],\n listForTeamDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n ],\n listForTeamDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n ],\n },\n repos: {\n acceptInvitation: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"] },\n ],\n acceptInvitationForAuthenticatedUser: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n ],\n addAppAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n addTeamAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n addUserAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n cancelPagesDeployment: [\n \"POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel\",\n ],\n checkAutomatedSecurityFixes: [\n \"GET /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkImmutableReleases: [\"GET /repos/{owner}/{repo}/immutable-releases\"],\n checkPrivateVulnerabilityReporting: [\n \"GET /repos/{owner}/{repo}/private-vulnerability-reporting\",\n ],\n checkVulnerabilityAlerts: [\n \"GET /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n compareCommitsWithBasehead: [\n \"GET /repos/{owner}/{repo}/compare/{basehead}\",\n ],\n createAttestation: [\"POST /repos/{owner}/{repo}/attestations\"],\n createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n createCommitComment: [\n \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n createCommitSignatureProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentBranchPolicy: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n ],\n createDeploymentProtectionRule: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\",\n ],\n createDeploymentStatus: [\n \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateEnvironment: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createOrgRuleset: [\"POST /orgs/{org}/rulesets\"],\n createPagesDeployment: [\"POST /repos/{owner}/{repo}/pages/deployments\"],\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createRepoRuleset: [\"POST /repos/{owner}/{repo}/rulesets\"],\n createUsingTemplate: [\n \"POST /repos/{template_owner}/{template_repo}/generate\",\n ],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n customPropertiesForReposCreateOrUpdateRepositoryValues: [\n \"PATCH /repos/{owner}/{repo}/properties/values\",\n ],\n customPropertiesForReposGetRepositoryValues: [\n \"GET /repos/{owner}/{repo}/properties/values\",\n ],\n declineInvitation: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"] },\n ],\n declineInvitationForAuthenticatedUser: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n ],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n deleteAdminBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n deleteAnEnvironment: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n deleteBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\n \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\",\n ],\n deleteDeploymentBranchPolicy: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\",\n ],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\n \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n deleteOrgRuleset: [\"DELETE /orgs/{org}/rulesets/{ruleset_id}\"],\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n deletePullRequestReviewProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\n \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n deleteRepoRuleset: [\"DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\n \"DELETE /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n disableDeploymentProtectionRule: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\",\n ],\n disableImmutableReleases: [\n \"DELETE /repos/{owner}/{repo}/immutable-releases\",\n ],\n disablePrivateVulnerabilityReporting: [\n \"DELETE /repos/{owner}/{repo}/private-vulnerability-reporting\",\n ],\n disableVulnerabilityAlerts: [\n \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n downloadArchive: [\n \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n {},\n { renamed: [\"repos\", \"downloadZipballArchive\"] },\n ],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\n \"PUT /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n enableImmutableReleases: [\"PUT /repos/{owner}/{repo}/immutable-releases\"],\n enablePrivateVulnerabilityReporting: [\n \"PUT /repos/{owner}/{repo}/private-vulnerability-reporting\",\n ],\n enableVulnerabilityAlerts: [\n \"PUT /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n generateReleaseNotes: [\n \"POST /repos/{owner}/{repo}/releases/generate-notes\",\n ],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n getAdminBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n getAllDeploymentProtectionRules: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\",\n ],\n getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n getAllStatusCheckContexts: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n ],\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n getAppsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n ],\n getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n getBranchRules: [\"GET /repos/{owner}/{repo}/rules/branches/{branch}\"],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\n \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\",\n ],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getCustomDeploymentProtectionRule: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\",\n ],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentBranchPolicy: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\",\n ],\n getDeploymentStatus: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\",\n ],\n getEnvironment: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getOrgRuleSuite: [\"GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}\"],\n getOrgRuleSuites: [\"GET /orgs/{org}/rulesets/rule-suites\"],\n getOrgRuleset: [\"GET /orgs/{org}/rulesets/{ruleset_id}\"],\n getOrgRulesets: [\"GET /orgs/{org}/rulesets\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getPagesDeployment: [\n \"GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}\",\n ],\n getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getRepoRuleSuite: [\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}\",\n ],\n getRepoRuleSuites: [\"GET /repos/{owner}/{repo}/rulesets/rule-suites\"],\n getRepoRuleset: [\"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n getRepoRulesetHistory: [\n \"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history\",\n ],\n getRepoRulesetVersion: [\n \"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}\",\n ],\n getRepoRulesets: [\"GET /repos/{owner}/{repo}/rulesets\"],\n getStatusChecksProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n getTeamsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n ],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n ],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n getWebhookDelivery: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\",\n ],\n listActivities: [\"GET /repos/{owner}/{repo}/activity\"],\n listAttestations: [\n \"GET /repos/{owner}/{repo}/attestations/{subject_digest}\",\n ],\n listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\",\n ],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listCustomDeploymentRuleIntegrations: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n ],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentBranchPolicies: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n ],\n listDeploymentStatuses: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n ],\n listReleaseAssets: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n ],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhookDeliveries: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n ],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\",\n ],\n removeAppAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n removeCollaborator: [\n \"DELETE /repos/{owner}/{repo}/collaborators/{username}\",\n ],\n removeStatusCheckContexts: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n removeStatusCheckProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n removeTeamAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n removeUserAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n setAppAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n setStatusCheckContexts: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n setTeamAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n setUserAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateDeploymentBranchPolicy: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\",\n ],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\n \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n updateOrgRuleset: [\"PUT /orgs/{org}/rulesets/{ruleset_id}\"],\n updatePullRequestReviewProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\n \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n updateRepoRuleset: [\"PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n updateStatusCheckPotection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n {},\n { renamed: [\"repos\", \"updateStatusCheckProtection\"] },\n ],\n updateStatusCheckProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\n \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n uploadReleaseAsset: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n { baseUrl: \"https://uploads.github.com\" },\n ],\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\"],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\"],\n users: [\"GET /search/users\"],\n },\n secretScanning: {\n createPushProtectionBypass: [\n \"POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses\",\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n getScanHistory: [\"GET /repos/{owner}/{repo}/secret-scanning/scan-history\"],\n listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n listLocationsForAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n ],\n listOrgPatternConfigs: [\n \"GET /orgs/{org}/secret-scanning/pattern-configurations\",\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n updateOrgPatternConfigs: [\n \"PATCH /orgs/{org}/secret-scanning/pattern-configurations\",\n ],\n },\n securityAdvisories: {\n createFork: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks\",\n ],\n createPrivateVulnerabilityReport: [\n \"POST /repos/{owner}/{repo}/security-advisories/reports\",\n ],\n createRepositoryAdvisory: [\n \"POST /repos/{owner}/{repo}/security-advisories\",\n ],\n createRepositoryAdvisoryCveRequest: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve\",\n ],\n getGlobalAdvisory: [\"GET /advisories/{ghsa_id}\"],\n getRepositoryAdvisory: [\n \"GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}\",\n ],\n listGlobalAdvisories: [\"GET /advisories\"],\n listOrgRepositoryAdvisories: [\"GET /orgs/{org}/security-advisories\"],\n listRepositoryAdvisories: [\"GET /repos/{owner}/{repo}/security-advisories\"],\n updateRepositoryAdvisory: [\n \"PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}\",\n ],\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n addOrUpdateRepoPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n checkPermissionsForRepoInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n deleteDiscussionInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n getDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n getMembershipForUserInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n ],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n removeRepoInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n updateDiscussionCommentInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n updateDiscussionInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"],\n },\n users: {\n addEmailForAuthenticated: [\n \"POST /user/emails\",\n {},\n { renamed: [\"users\", \"addEmailForAuthenticatedUser\"] },\n ],\n addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n addSocialAccountForAuthenticatedUser: [\"POST /user/social_accounts\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\n \"POST /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"] },\n ],\n createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\n \"POST /user/keys\",\n {},\n { renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"] },\n ],\n createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n createSshSigningKeyForAuthenticatedUser: [\"POST /user/ssh_signing_keys\"],\n deleteAttestationsBulk: [\n \"POST /users/{username}/attestations/delete-request\",\n ],\n deleteAttestationsById: [\n \"DELETE /users/{username}/attestations/{attestation_id}\",\n ],\n deleteAttestationsBySubjectDigest: [\n \"DELETE /users/{username}/attestations/digest/{subject_digest}\",\n ],\n deleteEmailForAuthenticated: [\n \"DELETE /user/emails\",\n {},\n { renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"] },\n ],\n deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\n \"DELETE /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"] },\n ],\n deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\n \"DELETE /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"] },\n ],\n deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n deleteSocialAccountForAuthenticatedUser: [\"DELETE /user/social_accounts\"],\n deleteSshSigningKeyForAuthenticatedUser: [\n \"DELETE /user/ssh_signing_keys/{ssh_signing_key_id}\",\n ],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getById: [\"GET /user/{account_id}\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\n \"GET /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"] },\n ],\n getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\n \"GET /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"] },\n ],\n getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n getSshSigningKeyForAuthenticatedUser: [\n \"GET /user/ssh_signing_keys/{ssh_signing_key_id}\",\n ],\n list: [\"GET /users\"],\n listAttestations: [\"GET /users/{username}/attestations/{subject_digest}\"],\n listAttestationsBulk: [\n \"POST /users/{username}/attestations/bulk-list{?per_page,before,after}\",\n ],\n listBlockedByAuthenticated: [\n \"GET /user/blocks\",\n {},\n { renamed: [\"users\", \"listBlockedByAuthenticatedUser\"] },\n ],\n listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\n \"GET /user/emails\",\n {},\n { renamed: [\"users\", \"listEmailsForAuthenticatedUser\"] },\n ],\n listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\n \"GET /user/following\",\n {},\n { renamed: [\"users\", \"listFollowedByAuthenticatedUser\"] },\n ],\n listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\n \"GET /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"] },\n ],\n listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\n \"GET /user/public_emails\",\n {},\n { renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"] },\n ],\n listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\n \"GET /user/keys\",\n {},\n { renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"] },\n ],\n listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n listSocialAccountsForAuthenticatedUser: [\"GET /user/social_accounts\"],\n listSocialAccountsForUser: [\"GET /users/{username}/social_accounts\"],\n listSshSigningKeysForAuthenticatedUser: [\"GET /user/ssh_signing_keys\"],\n listSshSigningKeysForUser: [\"GET /users/{username}/ssh_signing_keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\n \"PATCH /user/email/visibility\",\n {},\n { renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"] },\n ],\n setPrimaryEmailVisibilityForAuthenticatedUser: [\n \"PATCH /user/email/visibility\",\n ],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"],\n },\n};\n\nexport default Endpoints;\n"], - "mappings": "AACA,MAAM,YAA6C;AAAA,EACjD,SAAS;AAAA,IACP,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,0BAA0B,CAAC,yCAAyC;AAAA,IACpE,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,+CAA+C;AAAA,IACzE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,oCAAoC;AAAA,IACxD,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,+CAA+C;AAAA,IACzE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,oBAAoB,CAAC,8CAA8C;AAAA,IACnE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,kDAAkD;AAAA,IACpE,mBAAmB,CAAC,6CAA6C;AAAA,IACjE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,oDAAoD;AAAA,IACxE,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,oDAAoD;AAAA,MAClD;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,mDAAmD;AAAA,MACjD;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,0CAA0C;AAAA,IAChE,sBAAsB,CAAC,+CAA+C;AAAA,IACtE,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,qCAAqC;AAAA,IAClE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,aAAa,CAAC,2DAA2D;AAAA,IACzE,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,wDAAwD;AAAA,MACtD;AAAA,IACF;AAAA,IACA,sDAAsD;AAAA,MACpD;AAAA,IACF;AAAA,IACA,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,iDAAiD;AAAA,IACxE,iBAAiB,CAAC,4CAA4C;AAAA,IAC9D,cAAc,CAAC,+CAA+C;AAAA,IAC9D,gBAAgB,CAAC,0CAA0C;AAAA,IAC3D,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,WAAW,uCAAuC,EAAE;AAAA,IAClE;AAAA,IACA,kBAAkB,CAAC,sDAAsD;AAAA,IACzE,eAAe,CAAC,yDAAyD;AAAA,IACzE,iBAAiB,CAAC,oDAAoD;AAAA,IACtE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,6CAA6C;AAAA,IACzE,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,aAAa,CAAC,2DAA2D;AAAA,IACzE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,iDAAiD;AAAA,IAClE,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,6CAA6C;AAAA,IACpE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,wCAAwC;AAAA,IAClE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,iCAAiC;AAAA,IAClD,kBAAkB,CAAC,mCAAmC;AAAA,IACtD,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,2CAA2C;AAAA,IAC7D,mBAAmB,CAAC,6CAA6C;AAAA,IACjE,mBAAmB,CAAC,6CAA6C;AAAA,IACjE,8BAA8B,CAAC,2CAA2C;AAAA,IAC1E,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,0DAA0D;AAAA,MACxD;AAAA,IACF;AAAA,IACA,6BAA6B,CAAC,iCAAiC;AAAA,IAC/D,8BAA8B,CAAC,2CAA2C;AAAA,IAC1E,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,wCAAwC;AAAA,IAClE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,eAAe,CAAC,wDAAwD;AAAA,IACxE,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,iDAAiD;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,kDAAkD;AAAA,MAChD;AAAA,IACF;AAAA,IACA,6CAA6C;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,8CAA8C;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,wDAAwD;AAAA,MACtD;AAAA,IACF;AAAA,IACA,sDAAsD;AAAA,MACpD;AAAA,IACF;AAAA,IACA,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,yDAAyD;AAAA,MACvD;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,4CAA4C;AAAA,IAChE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,uCAAuC,CAAC,kCAAkC;AAAA,IAC1E,wBAAwB,CAAC,2CAA2C;AAAA,IACpE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,UAAU,CAAC,YAAY;AAAA,IACvB,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,WAAW,CAAC,wCAAwC;AAAA,IACpD,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,gCAAgC,CAAC,8BAA8B;AAAA,IAC/D,uCAAuC,CAAC,oBAAoB;AAAA,IAC5D,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,aAAa;AAAA,IAChC,gCAAgC,CAAC,qCAAqC;AAAA,IACtE,yBAAyB,CAAC,qCAAqC;AAAA,IAC/D,qBAAqB,CAAC,wBAAwB;AAAA,IAC9C,2BAA2B,CAAC,uCAAuC;AAAA,IACnE,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,kCAAkC;AAAA,IACnD,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,qCAAqC,CAAC,mBAAmB;AAAA,IACzD,wBAAwB,CAAC,+BAA+B;AAAA,IACxD,wBAAwB,CAAC,qCAAqC;AAAA,IAC9D,uBAAuB,CAAC,sCAAsC;AAAA,IAC9D,sCAAsC,CAAC,yBAAyB;AAAA,IAChE,qBAAqB,CAAC,uCAAuC;AAAA,IAC7D,yBAAyB,CAAC,oBAAoB;AAAA,IAC9C,6BAA6B,CAAC,yCAAyC;AAAA,IACvE,kBAAkB,CAAC,2CAA2C;AAAA,IAC9D,kBAAkB,CAAC,0CAA0C;AAAA,IAC7D,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,8BAA8B,CAAC,kCAAkC;AAAA,IACjE,gCAAgC,CAAC,qCAAqC;AAAA,EACxE;AAAA,EACA,MAAM;AAAA,IACJ,uBAAuB;AAAA,MACrB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,QAAQ,2CAA2C,EAAE;AAAA,IACnE;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,YAAY,CAAC,sCAAsC;AAAA,IACnD,oBAAoB,CAAC,wCAAwC;AAAA,IAC7D,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,oBAAoB,CAAC,6CAA6C;AAAA,IAClE,aAAa,CAAC,wCAAwC;AAAA,IACtD,kBAAkB,CAAC,UAAU;AAAA,IAC7B,WAAW,CAAC,sBAAsB;AAAA,IAClC,iBAAiB,CAAC,0CAA0C;AAAA,IAC5D,oBAAoB,CAAC,8BAA8B;AAAA,IACnD,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,oCAAoC;AAAA,IAC1D,wBAAwB,CAAC,sBAAsB;AAAA,IAC/C,oBAAoB,CAAC,wCAAwC;AAAA,IAC7D,qBAAqB,CAAC,mDAAmD;AAAA,IACzE,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,6CAA6C;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,wBAAwB;AAAA,IAC5C,uCAAuC,CAAC,yBAAyB;AAAA,IACjE,WAAW,CAAC,gCAAgC;AAAA,IAC5C,kBAAkB,CAAC,wCAAwC;AAAA,IAC3D,mCAAmC,CAAC,gCAAgC;AAAA,IACpE,uCAAuC,CAAC,iCAAiC;AAAA,IACzE,8CAA8C;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,uBAAuB,CAAC,0BAA0B;AAAA,IAClD,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,QAAQ,gDAAgD,EAAE;AAAA,IACxE;AAAA,IACA,gDAAgD;AAAA,MAC9C;AAAA,IACF;AAAA,IACA,YAAY,CAAC,uCAAuC;AAAA,IACpD,+BAA+B,CAAC,4BAA4B;AAAA,IAC5D,YAAY,CAAC,6CAA6C;AAAA,IAC1D,qBAAqB,CAAC,oDAAoD;AAAA,IAC1E,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,wBAAwB;AAAA,EACtD;AAAA,EACA,SAAS;AAAA,IACP,4BAA4B,CAAC,0CAA0C;AAAA,IACvE,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,8CAA8C;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,6BAA6B,CAAC,2CAA2C;AAAA,IACzE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACT,gBAAgB,CAAC,4BAA4B;AAAA,IAC7C,gBAAgB,CAAC,gDAAgD;AAAA,IACjE,oBAAoB,CAAC,6CAA6C;AAAA,IAClE,kBAAkB,CAAC,2BAA2B;AAAA,IAC9C,gBAAgB,CAAC,+CAA+C;AAAA,EAClE;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ,CAAC,uCAAuC;AAAA,IAChD,aAAa,CAAC,yCAAyC;AAAA,IACvD,KAAK,CAAC,qDAAqD;AAAA,IAC3D,UAAU,CAAC,yDAAyD;AAAA,IACpE,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,YAAY,CAAC,oDAAoD;AAAA,IACjE,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,sDAAsD;AAAA,IACzE,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,uDAAuD;AAAA,EAClE;AAAA,EACA,cAAc;AAAA,IACZ,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,UAAU;AAAA,MACR;AAAA,MACA,CAAC;AAAA,MACD,EAAE,mBAAmB,EAAE,UAAU,eAAe,EAAE;AAAA,IACpD;AAAA,IACA,aAAa;AAAA,MACX;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,uDAAuD;AAAA,IACzE,UAAU,CAAC,2DAA2D;AAAA,IACtE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,sCAAsC;AAAA,IACzD,mBAAmB,CAAC,gDAAgD;AAAA,IACpE,qBAAqB;AAAA,MACnB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,gBAAgB,oBAAoB,EAAE;AAAA,IACpD;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,oBAAoB,CAAC,kDAAkD;AAAA,IACvE,aAAa;AAAA,MACX;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,iDAAiD;AAAA,EACjE;AAAA,EACA,cAAc;AAAA,IACZ,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,+CAA+C;AAAA,IACrE,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,8CAA8C;AAAA,IACxE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,wCAAwC;AAAA,MACtC;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,sBAAsB,CAAC,uBAAuB;AAAA,IAC9C,gBAAgB,CAAC,6BAA6B;AAAA,EAChD;AAAA,EACA,YAAY;AAAA,IACV,4CAA4C;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,uBAAuB;AAAA,IACpD,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,0CAA0C;AAAA,IACvE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,qDAAqD;AAAA,IACvE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,uCAAuC;AAAA,IACjE,iBAAiB,CAAC,+CAA+C;AAAA,IACjE,cAAc,CAAC,kDAAkD;AAAA,IACjE,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,mDAAmD;AAAA,MACjD;AAAA,IACF;AAAA,IACA,0BAA0B,CAAC,sBAAsB;AAAA,IACjD,oBAAoB;AAAA,MAClB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,mBAAmB,EAAE,QAAQ,MAAM,EAAE;AAAA,IACzC;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,oCAAoC;AAAA,IACrD,iBAAiB,CAAC,8CAA8C;AAAA,IAChE,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,iCAAiC,CAAC,8BAA8B;AAAA,IAChE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,8CAA8C;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,8CAA8C;AAAA,IAC1E,0BAA0B,CAAC,6CAA6C;AAAA,IACxE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,yCAAyC;AAAA,EACxE;AAAA,EACA,SAAS;AAAA,IACP,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,+BAA+B,CAAC,iCAAiC;AAAA,IACjE,uBAAuB,CAAC,kDAAkD;AAAA,IAC1E,+BAA+B,CAAC,iCAAiC;AAAA,IACjE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,uCAAuC;AAAA,EAC5D;AAAA,EACA,aAAa,EAAE,QAAQ,CAAC,0BAA0B,EAAE;AAAA,EACpD,YAAY;AAAA,IACV,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,qDAAqD;AAAA,IACvE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,UAAU,CAAC,4DAA4D;AAAA,IACvE,iBAAiB,CAAC,+CAA+C;AAAA,IACjE,cAAc,CAAC,kDAAkD;AAAA,IACjE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,mCAAmC;AAAA,IACtD,mBAAmB,CAAC,6CAA6C;AAAA,IACjE,gBAAgB,CAAC,oCAAoC;AAAA,IACrD,iBAAiB,CAAC,8CAA8C;AAAA,IAChE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,IACF;AAAA,IACA,YAAY,CAAC,iDAAiD;AAAA,EAChE;AAAA,EACA,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE;AAAA,EAC/B,2BAA2B;AAAA,IACzB,KAAK;AAAA,MACH;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,IACF;AAAA,IACA,MAAM,CAAC,mEAAmE;AAAA,IAC1E,QAAQ;AAAA,MACN;AAAA,IACF;AAAA,EACF;AAAA,EACA,6BAA6B;AAAA,IAC3B,KAAK;AAAA,MACH;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,QAAQ,CAAC,sCAAsC;AAAA,IAC/C,QAAQ,CAAC,oDAAoD;AAAA,IAC7D,KAAK,CAAC,iDAAiD;AAAA,IACvD,MAAM,CAAC,qCAAqC;AAAA,IAC5C,QAAQ,CAAC,mDAAmD;AAAA,EAC9D;AAAA,EACA,OAAO;AAAA,IACL,gBAAgB,CAAC,2BAA2B;AAAA,IAC5C,QAAQ,CAAC,aAAa;AAAA,IACtB,eAAe,CAAC,gCAAgC;AAAA,IAChD,QAAQ,CAAC,yBAAyB;AAAA,IAClC,eAAe,CAAC,+CAA+C;AAAA,IAC/D,MAAM,CAAC,6BAA6B;AAAA,IACpC,KAAK,CAAC,sBAAsB;AAAA,IAC5B,YAAY,CAAC,4CAA4C;AAAA,IACzD,aAAa,CAAC,4BAA4B;AAAA,IAC1C,MAAM,CAAC,YAAY;AAAA,IACnB,cAAc,CAAC,+BAA+B;AAAA,IAC9C,aAAa,CAAC,8BAA8B;AAAA,IAC5C,aAAa,CAAC,6BAA6B;AAAA,IAC3C,WAAW,CAAC,4BAA4B;AAAA,IACxC,YAAY,CAAC,mBAAmB;AAAA,IAChC,aAAa,CAAC,oBAAoB;AAAA,IAClC,MAAM,CAAC,2BAA2B;AAAA,IAClC,QAAQ,CAAC,8BAA8B;AAAA,IACvC,QAAQ,CAAC,wBAAwB;AAAA,IACjC,eAAe,CAAC,8CAA8C;AAAA,EAChE;AAAA,EACA,KAAK;AAAA,IACH,YAAY,CAAC,sCAAsC;AAAA,IACnD,cAAc,CAAC,wCAAwC;AAAA,IACvD,WAAW,CAAC,qCAAqC;AAAA,IACjD,WAAW,CAAC,qCAAqC;AAAA,IACjD,YAAY,CAAC,sCAAsC;AAAA,IACnD,WAAW,CAAC,6CAA6C;AAAA,IACzD,SAAS,CAAC,gDAAgD;AAAA,IAC1D,WAAW,CAAC,oDAAoD;AAAA,IAChE,QAAQ,CAAC,yCAAyC;AAAA,IAClD,QAAQ,CAAC,8CAA8C;AAAA,IACvD,SAAS,CAAC,gDAAgD;AAAA,IAC1D,kBAAkB,CAAC,mDAAmD;AAAA,IACtE,WAAW,CAAC,4CAA4C;AAAA,EAC1D;AAAA,EACA,WAAW;AAAA,IACT,iBAAiB,CAAC,0BAA0B;AAAA,IAC5C,aAAa,CAAC,iCAAiC;AAAA,EACjD;AAAA,EACA,eAAe;AAAA,IACb,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,qCAAqC,CAAC,8BAA8B;AAAA,IACpE,uBAAuB,CAAC,oCAAoC;AAAA,IAC5D,wBAAwB,CAAC,8CAA8C;AAAA,IACvE,mCAAmC;AAAA,MACjC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,gBAAgB,qCAAqC,EAAE;AAAA,IACrE;AAAA,IACA,wCAAwC,CAAC,iCAAiC;AAAA,IAC1E,0BAA0B,CAAC,uCAAuC;AAAA,IAClE,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,gBAAgB,wCAAwC,EAAE;AAAA,IACxE;AAAA,IACA,qCAAqC,CAAC,8BAA8B;AAAA,IACpE,uBAAuB,CAAC,oCAAoC;AAAA,IAC5D,wBAAwB,CAAC,8CAA8C;AAAA,IACvE,mCAAmC;AAAA,MACjC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,gBAAgB,qCAAqC,EAAE;AAAA,IACrE;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,WAAW,CAAC,yDAAyD;AAAA,IACrE,aAAa;AAAA,MACX;AAAA,IACF;AAAA,IACA,wBAAwB,CAAC,gDAAgD;AAAA,IACzE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,mCAAmC;AAAA,IAC5C,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,aAAa,CAAC,mCAAmC;AAAA,IACjD,iBAAiB,CAAC,uCAAuC;AAAA,IACzD,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,aAAa,CAAC,4CAA4C;AAAA,IAC1D,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,KAAK,CAAC,iDAAiD;AAAA,IACvD,YAAY,CAAC,wDAAwD;AAAA,IACrE,UAAU,CAAC,oDAAoD;AAAA,IAC/D,UAAU,CAAC,yCAAyC;AAAA,IACpD,cAAc,CAAC,yDAAyD;AAAA,IACxE,WAAW,CAAC,wDAAwD;AAAA,IACpE,MAAM,CAAC,aAAa;AAAA,IACpB,eAAe,CAAC,qCAAqC;AAAA,IACrD,cAAc,CAAC,0DAA0D;AAAA,IACzE,qBAAqB,CAAC,2CAA2C;AAAA,IACjE,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,YAAY,CAAC,wDAAwD;AAAA,IACrE,mBAAmB,CAAC,yCAAyC;AAAA,IAC7D,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,0BAA0B,CAAC,kBAAkB;AAAA,IAC7C,YAAY,CAAC,wBAAwB;AAAA,IACrC,aAAa,CAAC,kCAAkC;AAAA,IAChD,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,kCAAkC;AAAA,IACtD,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,sCAAsC;AAAA,IACvD,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,MAAM,CAAC,sDAAsD;AAAA,IAC7D,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,WAAW,CAAC,wDAAwD;AAAA,IACpE,QAAQ,CAAC,yDAAyD;AAAA,IAClE,QAAQ,CAAC,mDAAmD;AAAA,IAC5D,eAAe,CAAC,0DAA0D;AAAA,IAC1E,aAAa,CAAC,2CAA2C;AAAA,IACzD,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,KAAK,CAAC,yBAAyB;AAAA,IAC/B,oBAAoB,CAAC,eAAe;AAAA,IACpC,YAAY,CAAC,mCAAmC;AAAA,EAClD;AAAA,EACA,UAAU;AAAA,IACR,QAAQ,CAAC,gBAAgB;AAAA,IACzB,WAAW;AAAA,MACT;AAAA,MACA,EAAE,SAAS,EAAE,gBAAgB,4BAA4B,EAAE;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,KAAK,CAAC,WAAW;AAAA,IACjB,gBAAgB,CAAC,eAAe;AAAA,IAChC,YAAY,CAAC,cAAc;AAAA,IAC3B,QAAQ,CAAC,UAAU;AAAA,IACnB,MAAM,CAAC,OAAO;AAAA,EAChB;AAAA,EACA,YAAY;AAAA,IACV,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,+BAA+B,CAAC,qCAAqC;AAAA,IACrE,iBAAiB,CAAC,2CAA2C;AAAA,IAC7D,0BAA0B,CAAC,sBAAsB;AAAA,IACjD,YAAY,CAAC,4BAA4B;AAAA,IACzC,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,wDAAwD;AAAA,IAC1E,kBAAkB;AAAA,MAChB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,cAAc,+BAA+B,EAAE;AAAA,IAC7D;AAAA,IACA,2BAA2B,CAAC,uBAAuB;AAAA,IACnD,aAAa,CAAC,6BAA6B;AAAA,IAC3C,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,wBAAwB;AAAA,MACtB;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,WAAW,CAAC,mCAAmC;AAAA,IAC/C,kBAAkB,CAAC,gDAAgD;AAAA,IACnE,kBAAkB,CAAC,mCAAmC;AAAA,IACtD,wBAAwB,CAAC,oCAAoC;AAAA,IAC7D,8BAA8B,CAAC,2CAA2C;AAAA,IAC1E,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,8BAA8B;AAAA,IACjD,iBAAiB,CAAC,8BAA8B;AAAA,IAChD,eAAe,CAAC,wBAAwB;AAAA,IACxC,yDAAyD;AAAA,MACvD;AAAA,IACF;AAAA,IACA,8CAA8C;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,8DAA8D;AAAA,MAC5D;AAAA,IACF;AAAA,IACA,+DAA+D;AAAA,MAC7D;AAAA,IACF;AAAA,IACA,0DAA0D;AAAA,MACxD;AAAA,IACF;AAAA,IACA,sDAAsD;AAAA,MACpD;AAAA,IACF;AAAA,IACA,mDAAmD;AAAA,MACjD;AAAA,IACF;AAAA,IACA,oDAAoD;AAAA,MAClD;AAAA,IACF;AAAA,IACA,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,oBAAoB;AAAA,IAC7B,wBAAwB,CAAC,8CAA8C;AAAA,IACvE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,gDAAgD;AAAA,IAClE,eAAe,CAAC,oCAAoC;AAAA,IACpD,wDAAwD;AAAA,MACtD;AAAA,IACF;AAAA,IACA,uDAAuD;AAAA,MACrD;AAAA,IACF;AAAA,IACA,KAAK,CAAC,iBAAiB;AAAA,IACvB,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,mCAAmC,CAAC,kCAAkC;AAAA,IACtE,sBAAsB,CAAC,wCAAwC;AAAA,IAC/D,YAAY,CAAC,8CAA8C;AAAA,IAC3D,sBAAsB,CAAC,+CAA+C;AAAA,IACtE,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,YAAY,CAAC,iCAAiC;AAAA,IAC9C,wBAAwB,CAAC,wCAAwC;AAAA,IACjE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,MAAM,CAAC,oBAAoB;AAAA,IAC3B,sBAAsB,CAAC,+BAA+B;AAAA,IACtD,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,6BAA6B,CAAC,2CAA2C;AAAA,IACzE,kBAAkB,CAAC,+CAA+C;AAAA,IAClE,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,wBAAwB;AAAA,IAC3C,uBAAuB,CAAC,oCAAoC;AAAA,IAC5D,0BAA0B,CAAC,gBAAgB;AAAA,IAC3C,aAAa,CAAC,4BAA4B;AAAA,IAC1C,qBAAqB,CAAC,mDAAmD;AAAA,IACzE,gBAAgB,CAAC,6BAA6B;AAAA,IAC9C,aAAa,CAAC,yBAAyB;AAAA,IACvC,qCAAqC,CAAC,4BAA4B;AAAA,IAClE,kBAAkB,CAAC,oDAAoD;AAAA,IACvE,kBAAkB,CAAC,oDAAoD;AAAA,IACvE,cAAc,CAAC,oCAAoC;AAAA,IACnD,wCAAwC;AAAA,MACtC;AAAA,IACF;AAAA,IACA,0BAA0B,CAAC,uCAAuC;AAAA,IAClE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,gDAAgD;AAAA,IACvE,eAAe,CAAC,wCAAwC;AAAA,IACxD,wBAAwB,CAAC,6BAA6B;AAAA,IACtD,mBAAmB,CAAC,gCAAgC;AAAA,IACpD,0BAA0B;AAAA,MACxB;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,uBAAuB,CAAC,4CAA4C;AAAA,IACpE,cAAc,CAAC,uBAAuB;AAAA,IACtC,aAAa,CAAC,wCAAwC;AAAA,IACtD,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,uCAAuC;AAAA,IACtD,yBAAyB,CAAC,2CAA2C;AAAA,IACrE,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,4CAA4C;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,wCAAwC;AAAA,IAC/D,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,aAAa,CAAC,sCAAsC;AAAA,IACpD,QAAQ,CAAC,mBAAmB;AAAA,IAC5B,iBAAiB,CAAC,6CAA6C;AAAA,IAC/D,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,kDAAkD;AAAA,IACpE,mBAAmB,CAAC,yCAAyC;AAAA,IAC7D,eAAe,CAAC,mCAAmC;AAAA,IACnD,2BAA2B,CAAC,0CAA0C;AAAA,EACxE;AAAA,EACA,UAAU;AAAA,IACR,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,8CAA8C;AAAA,MAC5C;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,YAAY,2CAA2C,EAAE;AAAA,IACvE;AAAA,IACA,6DAA6D;AAAA,MAC3D;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,SAAS;AAAA,UACP;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,yDAAyD;AAAA,MACvD;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,4CAA4C;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,4DAA4D;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,uDAAuD;AAAA,MACrD;AAAA,IACF;AAAA,IACA,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,kCAAkC,CAAC,oBAAoB;AAAA,IACvD,6BAA6B,CAAC,0BAA0B;AAAA,IACxD,qBAAqB,CAAC,gCAAgC;AAAA,IACtD,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AAAA,EACA,mBAAmB;AAAA,IACjB,0BAA0B,CAAC,qCAAqC;AAAA,IAChE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,uBAAuB,CAAC,kDAAkD;AAAA,IAC1E,iBAAiB,CAAC,+CAA+C;AAAA,IACjE,0BAA0B,CAAC,oCAAoC;AAAA,IAC/D,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,eAAe,CAAC,oDAAoD;AAAA,IACpE,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,WAAW,CAAC,6CAA6C;AAAA,IACzD,YAAY,CAAC,mDAAmD;AAAA,IAChE,YAAY,CAAC,6DAA6D;AAAA,IAC1E,aAAa;AAAA,MACX;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,oDAAoD;AAAA,IACvE,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY,CAAC,4BAA4B;AAAA,IACzC,aAAa,CAAC,kCAAkC;AAAA,IAChD,iBAAiB,CAAC,mDAAmD;AAAA,IACrE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,eAAe,CAAC,qDAAqD;AAAA,IACrE,QAAQ,CAAC,kCAAkC;AAAA,IAC3C,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,cAAc,CAAC,wDAAwD;AAAA,IACvE,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,KAAK,CAAC,+CAA+C;AAAA,IACrD,WAAW;AAAA,MACT;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,uDAAuD;AAAA,IAC1E,MAAM,CAAC,iCAAiC;AAAA,IACxC,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,uDAAuD;AAAA,IACrE,WAAW,CAAC,qDAAqD;AAAA,IACjE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,0CAA0C;AAAA,IACtE,aAAa,CAAC,uDAAuD;AAAA,IACrE,OAAO,CAAC,qDAAqD;AAAA,IAC7D,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,iDAAiD;AAAA,IAC1D,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAW,EAAE,KAAK,CAAC,iBAAiB,EAAE;AAAA,EACtC,WAAW;AAAA,IACT,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,2DAA2D;AAAA,IAC1E,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,kBAAkB;AAAA,MAChB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,sCAAsC,EAAE;AAAA,IAC/D;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,OAAO;AAAA,IACtB;AAAA,IACA,iBAAiB,CAAC,oDAAoD;AAAA,IACtE,wBAAwB;AAAA,MACtB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,WAAW;AAAA,IAC1B;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,oDAAoD;AAAA,IACxE,wBAAwB,CAAC,8CAA8C;AAAA,IACvE,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,6CAA6C;AAAA,IAChE,gBAAgB,CAAC,mDAAmD;AAAA,IACpE,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,yCAAyC;AAAA,IAC7D,gBAAgB,CAAC,sCAAsC;AAAA,IACvD,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,oBAAoB,CAAC,2CAA2C;AAAA,IAChE,iBAAiB,CAAC,iCAAiC;AAAA,IACnD,kBAAkB,CAAC,wCAAwC;AAAA,IAC3D,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,uCAAuC;AAAA,IAC7D,4BAA4B,CAAC,kBAAkB;AAAA,IAC/C,YAAY,CAAC,kCAAkC;AAAA,IAC/C,aAAa,CAAC,wBAAwB;AAAA,IACtC,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,2CAA2C;AAAA,IACxE,kBAAkB,CAAC,2BAA2B;AAAA,IAC9C,uBAAuB,CAAC,8CAA8C;AAAA,IACtE,iBAAiB,CAAC,kCAAkC;AAAA,IACpD,eAAe,CAAC,qCAAqC;AAAA,IACrD,mBAAmB,CAAC,qCAAqC;AAAA,IACzD,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,eAAe,CAAC,kCAAkC;AAAA,IAClD,wDAAwD;AAAA,MACtD;AAAA,IACF;AAAA,IACA,6CAA6C;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,uCAAuC,EAAE;AAAA,IAChE;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,8BAA8B;AAAA,IACvC,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,sDAAsD;AAAA,IACvE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,oDAAoD;AAAA,IAC1E,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,4CAA4C;AAAA,IAC9D,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,YAAY,CAAC,8CAA8C;AAAA,IAC3D,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,0CAA0C;AAAA,IAC7D,iBAAiB,CAAC,oCAAoC;AAAA,IACtD,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,eAAe,CAAC,oDAAoD;AAAA,IACpE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,oDAAoD;AAAA,IACxE,eAAe,CAAC,8CAA8C;AAAA,IAC9D,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,wBAAwB,EAAE;AAAA,IACjD;AAAA,IACA,wBAAwB,CAAC,yCAAyC;AAAA,IAClE,wBAAwB,CAAC,yCAAyC;AAAA,IAClE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,8CAA8C;AAAA,IACxE,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,KAAK,CAAC,2BAA2B;AAAA,IACjC,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,oBAAoB,CAAC,wCAAwC;AAAA,IAC7D,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,kCAAkC;AAAA,IACjD,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,aAAa,CAAC,mDAAmD;AAAA,IACjE,WAAW,CAAC,6CAA6C;AAAA,IACzD,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,mDAAmD;AAAA,IACpE,WAAW,CAAC,0CAA0C;AAAA,IACtD,uBAAuB,CAAC,gDAAgD;AAAA,IACxE,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,gDAAgD;AAAA,IAC1E,WAAW,CAAC,yCAAyC;AAAA,IACrD,wBAAwB,CAAC,iDAAiD;AAAA,IAC1E,kBAAkB,CAAC,iDAAiD;AAAA,IACpE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,6CAA6C;AAAA,IAC1E,YAAY,CAAC,2CAA2C;AAAA,IACxD,sBAAsB,CAAC,8CAA8C;AAAA,IACrE,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,cAAc,CAAC,yCAAyC;AAAA,IACxD,eAAe,CAAC,uDAAuD;AAAA,IACvE,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,+CAA+C;AAAA,IACrE,kBAAkB,CAAC,2CAA2C;AAAA,IAC9D,iBAAiB,CAAC,sDAAsD;AAAA,IACxE,kBAAkB,CAAC,sCAAsC;AAAA,IACzD,eAAe,CAAC,uCAAuC;AAAA,IACvD,gBAAgB,CAAC,0BAA0B;AAAA,IAC3C,UAAU,CAAC,iCAAiC;AAAA,IAC5C,eAAe,CAAC,mDAAmD;AAAA,IACnE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,uBAAuB,CAAC,+CAA+C;AAAA,IACvE,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,4CAA4C;AAAA,IAChE,WAAW,CAAC,kCAAkC;AAAA,IAC9C,sBAAsB,CAAC,wCAAwC;AAAA,IAC/D,YAAY,CAAC,iDAAiD;AAAA,IAC9D,iBAAiB,CAAC,sDAAsD;AAAA,IACxE,iBAAiB,CAAC,+CAA+C;AAAA,IACjE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,gDAAgD;AAAA,IACpE,gBAAgB,CAAC,iDAAiD;AAAA,IAClE,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,oCAAoC;AAAA,IACtD,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,aAAa,CAAC,iDAAiD;AAAA,IAC/D,iBAAiB,CAAC,qDAAqD;AAAA,IACvE,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,UAAU,CAAC,yCAAyC;AAAA,IACpD,YAAY,CAAC,2CAA2C;AAAA,IACxD,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,oCAAoC;AAAA,IACrD,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,eAAe,CAAC,qCAAqC;AAAA,IACrD,cAAc,CAAC,oCAAoC;AAAA,IACnD,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,yCAAyC;AAAA,IAC7D,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,oCAAoC;AAAA,IAChE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,mCAAmC;AAAA,IACjD,kBAAkB,CAAC,wCAAwC;AAAA,IAC3D,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,gCAAgC;AAAA,IACjD,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,uCAAuC;AAAA,IACzD,0BAA0B,CAAC,iBAAiB;AAAA,IAC5C,YAAY,CAAC,uBAAuB;AAAA,IACpC,aAAa,CAAC,6BAA6B;AAAA,IAC3C,WAAW,CAAC,iCAAiC;AAAA,IAC7C,iBAAiB,CAAC,uCAAuC;AAAA,IACzD,qCAAqC,CAAC,kCAAkC;AAAA,IACxE,eAAe,CAAC,qCAAqC;AAAA,IACrD,iBAAiB,CAAC,wCAAwC;AAAA,IAC1D,YAAY,CAAC,mBAAmB;AAAA,IAChC,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,oCAAoC;AAAA,IACnD,UAAU,CAAC,gCAAgC;AAAA,IAC3C,WAAW,CAAC,iCAAiC;AAAA,IAC7C,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,iCAAiC;AAAA,IAChD,OAAO,CAAC,mCAAmC;AAAA,IAC3C,eAAe,CAAC,2CAA2C;AAAA,IAC3D,aAAa,CAAC,kDAAkD;AAAA,IAChE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,OAAO;AAAA,IACtB;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,WAAW;AAAA,IAC1B;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,cAAc,CAAC,qDAAqD;AAAA,IACpE,kBAAkB,CAAC,kCAAkC;AAAA,IACrD,mBAAmB,CAAC,yCAAyC;AAAA,IAC7D,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,OAAO;AAAA,IACtB;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,WAAW;AAAA,IAC1B;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,iBAAiB,CAAC,kDAAkD;AAAA,IACpE,UAAU,CAAC,qCAAqC;AAAA,IAChD,QAAQ,CAAC,6BAA6B;AAAA,IACtC,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,mDAAmD;AAAA,IACzE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,iCAAiC,CAAC,iCAAiC;AAAA,IACnE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,uCAAuC;AAAA,IAC1D,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,eAAe,CAAC,mDAAmD;AAAA,IACnE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,iDAAiD;AAAA,IACrE,4BAA4B;AAAA,MAC1B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,6BAA6B,EAAE;AAAA,IACtD;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,eAAe,CAAC,6CAA6C;AAAA,IAC7D,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,MACA,EAAE,SAAS,6BAA6B;AAAA,IAC1C;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,MAAM,CAAC,kBAAkB;AAAA,IACzB,SAAS,CAAC,qBAAqB;AAAA,IAC/B,uBAAuB,CAAC,oBAAoB;AAAA,IAC5C,QAAQ,CAAC,oBAAoB;AAAA,IAC7B,OAAO,CAAC,0BAA0B;AAAA,IAClC,QAAQ,CAAC,oBAAoB;AAAA,IAC7B,OAAO,CAAC,mBAAmB;AAAA,EAC7B;AAAA,EACA,gBAAgB;AAAA,IACd,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,UAAU;AAAA,MACR;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,wDAAwD;AAAA,IACzE,kBAAkB,CAAC,wCAAwC;AAAA,IAC3D,mBAAmB,CAAC,kDAAkD;AAAA,IACtE,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAAA,EACA,oBAAoB;AAAA,IAClB,YAAY;AAAA,MACV;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,2BAA2B;AAAA,IAC/C,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,iBAAiB;AAAA,IACxC,6BAA6B,CAAC,qCAAqC;AAAA,IACnE,0BAA0B,CAAC,+CAA+C;AAAA,IAC1E,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,wBAAwB;AAAA,IACjC,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,uBAAuB,CAAC,gDAAgD;AAAA,IACxE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,sCAAsC;AAAA,IACpD,WAAW,CAAC,mCAAmC;AAAA,IAC/C,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,MAAM,CAAC,uBAAuB;AAAA,IAC9B,gBAAgB,CAAC,yCAAyC;AAAA,IAC1D,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,+CAA+C;AAAA,IACtE,0BAA0B,CAAC,iBAAiB;AAAA,IAC5C,kBAAkB,CAAC,2CAA2C;AAAA,IAC9D,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,yCAAyC;AAAA,IAC1D,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,qCAAqC;AAAA,EACrD;AAAA,EACA,OAAO;AAAA,IACL,0BAA0B;AAAA,MACxB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,8BAA8B,EAAE;AAAA,IACvD;AAAA,IACA,8BAA8B,CAAC,mBAAmB;AAAA,IAClD,sCAAsC,CAAC,4BAA4B;AAAA,IACnE,OAAO,CAAC,6BAA6B;AAAA,IACrC,cAAc,CAAC,6BAA6B;AAAA,IAC5C,uBAAuB,CAAC,+CAA+C;AAAA,IACvE,sCAAsC,CAAC,gCAAgC;AAAA,IACvE,8BAA8B;AAAA,MAC5B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,kCAAkC,EAAE;AAAA,IAC3D;AAAA,IACA,kCAAkC,CAAC,qBAAqB;AAAA,IACxD,oCAAoC;AAAA,MAClC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,wCAAwC,EAAE;AAAA,IACjE;AAAA,IACA,wCAAwC,CAAC,iBAAiB;AAAA,IAC1D,yCAAyC,CAAC,6BAA6B;AAAA,IACvE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,iCAAiC,EAAE;AAAA,IAC1D;AAAA,IACA,iCAAiC,CAAC,qBAAqB;AAAA,IACvD,8BAA8B;AAAA,MAC5B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,kCAAkC,EAAE;AAAA,IAC3D;AAAA,IACA,kCAAkC,CAAC,oCAAoC;AAAA,IACvE,oCAAoC;AAAA,MAClC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,wCAAwC,EAAE;AAAA,IACjE;AAAA,IACA,wCAAwC,CAAC,4BAA4B;AAAA,IACrE,yCAAyC,CAAC,8BAA8B;AAAA,IACxE,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,gCAAgC;AAAA,IACzC,kBAAkB,CAAC,WAAW;AAAA,IAC9B,SAAS,CAAC,wBAAwB;AAAA,IAClC,eAAe,CAAC,uBAAuB;AAAA,IACvC,mBAAmB,CAAC,iCAAiC;AAAA,IACrD,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,+BAA+B,EAAE;AAAA,IACxD;AAAA,IACA,+BAA+B,CAAC,iCAAiC;AAAA,IACjE,iCAAiC;AAAA,MAC/B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,qCAAqC,EAAE;AAAA,IAC9D;AAAA,IACA,qCAAqC,CAAC,yBAAyB;AAAA,IAC/D,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,MAAM,CAAC,YAAY;AAAA,IACnB,kBAAkB,CAAC,qDAAqD;AAAA,IACxE,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,gCAAgC,EAAE;AAAA,IACzD;AAAA,IACA,gCAAgC,CAAC,kBAAkB;AAAA,IACnD,4BAA4B;AAAA,MAC1B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,gCAAgC,EAAE;AAAA,IACzD;AAAA,IACA,gCAAgC,CAAC,kBAAkB;AAAA,IACnD,6BAA6B;AAAA,MAC3B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,iCAAiC,EAAE;AAAA,IAC1D;AAAA,IACA,iCAAiC,CAAC,qBAAqB;AAAA,IACvD,mCAAmC,CAAC,qBAAqB;AAAA,IACzD,sBAAsB,CAAC,iCAAiC;AAAA,IACxD,sBAAsB,CAAC,iCAAiC;AAAA,IACxD,6BAA6B;AAAA,MAC3B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,iCAAiC,EAAE;AAAA,IAC1D;AAAA,IACA,iCAAiC,CAAC,oBAAoB;AAAA,IACtD,oBAAoB,CAAC,gCAAgC;AAAA,IACrD,kCAAkC;AAAA,MAChC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,sCAAsC,EAAE;AAAA,IAC/D;AAAA,IACA,sCAAsC,CAAC,yBAAyB;AAAA,IAChE,uBAAuB,CAAC,4BAA4B;AAAA,IACpD,mCAAmC;AAAA,MACjC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,uCAAuC,EAAE;AAAA,IAChE;AAAA,IACA,uCAAuC,CAAC,gBAAgB;AAAA,IACxD,wCAAwC,CAAC,2BAA2B;AAAA,IACpE,2BAA2B,CAAC,uCAAuC;AAAA,IACnE,wCAAwC,CAAC,4BAA4B;AAAA,IACrE,2BAA2B,CAAC,wCAAwC;AAAA,IACpE,2CAA2C;AAAA,MACzC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,+CAA+C,EAAE;AAAA,IACxE;AAAA,IACA,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,SAAS,CAAC,gCAAgC;AAAA,IAC1C,UAAU,CAAC,mCAAmC;AAAA,IAC9C,qBAAqB,CAAC,aAAa;AAAA,EACrC;AACF;AAEA,IAAO,oBAAQ;", - "names": [] -} diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js deleted file mode 100644 index 2a4f018..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js +++ /dev/null @@ -1,22 +0,0 @@ -import { VERSION } from "./version.js"; -import { endpointsToMethods } from "./endpoints-to-methods.js"; -function restEndpointMethods(octokit) { - const api = endpointsToMethods(octokit); - return { - rest: api - }; -} -restEndpointMethods.VERSION = VERSION; -function legacyRestEndpointMethods(octokit) { - const api = endpointsToMethods(octokit); - return { - ...api, - rest: api - }; -} -legacyRestEndpointMethods.VERSION = VERSION; -export { - legacyRestEndpointMethods, - restEndpointMethods -}; -//# sourceMappingURL=index.js.map diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js.map b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js.map deleted file mode 100644 index 2c3f826..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../src/index.ts"], - "sourcesContent": ["import type { Octokit } from \"@octokit/core\";\n\nexport type { RestEndpointMethodTypes } from \"./generated/parameters-and-response-types.js\";\nimport { VERSION } from \"./version.js\";\nimport type { Api } from \"./types.js\";\nimport { endpointsToMethods } from \"./endpoints-to-methods.js\";\n\n// Export the type for downstream users in order to fix a TypeScript error\n// The inferred type of 'Octokit' cannot be named without a reference to '../node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.js'. This is likely not portable. A type annotation is necessary.\nexport type { Api };\n\nexport function restEndpointMethods(octokit: Octokit): Api {\n const api = endpointsToMethods(octokit);\n return {\n rest: api,\n };\n}\nrestEndpointMethods.VERSION = VERSION;\n\nexport function legacyRestEndpointMethods(octokit: Octokit): Api[\"rest\"] & Api {\n const api = endpointsToMethods(octokit);\n return {\n ...api,\n rest: api,\n };\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\n"], - "mappings": "AAGA,SAAS,eAAe;AAExB,SAAS,0BAA0B;AAM5B,SAAS,oBAAoB,SAAuB;AACzD,QAAM,MAAM,mBAAmB,OAAO;AACtC,SAAO;AAAA,IACL,MAAM;AAAA,EACR;AACF;AACA,oBAAoB,UAAU;AAEvB,SAAS,0BAA0B,SAAqC;AAC7E,QAAM,MAAM,mBAAmB,OAAO;AACtC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM;AAAA,EACR;AACF;AACA,0BAA0B,UAAU;", - "names": [] -} diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js deleted file mode 100644 index 9f36993..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js +++ /dev/null @@ -1,5 +0,0 @@ -const VERSION = "17.0.0"; -export { - VERSION -}; -//# sourceMappingURL=version.js.map diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js.map b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js.map deleted file mode 100644 index e21d0b8..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../src/version.ts"], - "sourcesContent": ["export const VERSION = \"17.0.0\";\n"], - "mappings": "AAAO,MAAM,UAAU;", - "names": [] -} diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts deleted file mode 100644 index c46d15b..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { Octokit } from "@octokit/core"; -import type { RestEndpointMethods } from "./generated/method-types.js"; -export declare function endpointsToMethods(octokit: Octokit): RestEndpointMethods; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts deleted file mode 100644 index c2f1e81..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { EndpointsDefaultsAndDecorations } from "../types.js"; -declare const Endpoints: EndpointsDefaultsAndDecorations; -export default Endpoints; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts deleted file mode 100644 index 9646c9c..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts +++ /dev/null @@ -1,13996 +0,0 @@ -import type { EndpointInterface, RequestInterface } from "@octokit/types"; -import type { RestEndpointMethodTypes } from "./parameters-and-response-types.js"; -export type RestEndpointMethods = { - actions: { - /** - * Adds custom labels to a self-hosted runner configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - addCustomLabelsToSelfHostedRunnerForOrg: { - (params?: RestEndpointMethodTypes["actions"]["addCustomLabelsToSelfHostedRunnerForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds custom labels to a self-hosted runner configured in a repository. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - addCustomLabelsToSelfHostedRunnerForRepo: { - (params?: RestEndpointMethodTypes["actions"]["addCustomLabelsToSelfHostedRunnerForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds a repository to the list of repositories that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an organization](#create-a-self-hosted-runner-group-for-an-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - addRepoAccessToSelfHostedRunnerGroupInOrg: { - (params?: RestEndpointMethodTypes["actions"]["addRepoAccessToSelfHostedRunnerGroupInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds a repository to an organization secret when the `visibility` for - * repository access is set to `selected`. For more information about setting the visibility, see [Create or - * update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret). - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - addSelectedRepoToOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["addSelectedRepoToOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds a repository to an organization variable that is available to selected repositories. - * Organization variables that are available to selected repositories have their `visibility` field set to `selected`. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - addSelectedRepoToOrgVariable: { - (params?: RestEndpointMethodTypes["actions"]["addSelectedRepoToOrgVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Approves a workflow run for a pull request from a public fork of a first time contributor. For more information, see ["Approving workflow runs from public forks](https://docs.github.com/actions/managing-workflow-runs/approving-workflow-runs-from-public-forks)." - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - approveWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["approveWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Cancels a workflow run using its `id`. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - cancelWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["cancelWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create an environment variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createEnvironmentVariable: { - (params?: RestEndpointMethodTypes["actions"]["createEnvironmentVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a GitHub-hosted runner for an organization. - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - createHostedRunnerForOrg: { - (params?: RestEndpointMethodTypes["actions"]["createHostedRunnerForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates or updates an environment secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createOrUpdateEnvironmentSecret: { - (params?: RestEndpointMethodTypes["actions"]["createOrUpdateEnvironmentSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates or updates an organization secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access - * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to - * use this endpoint. - * - * #### Example encrypting a secret using Node.js - * - * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. - * - * ``` - * const sodium = require('tweetsodium'); - * - * const key = "base64-encoded-public-key"; - * const value = "plain-text-secret"; - * - * // Convert the message and key to Uint8Array's (Buffer implements that interface) - * const messageBytes = Buffer.from(value); - * const keyBytes = Buffer.from(key, 'base64'); - * - * // Encrypt using LibSodium. - * const encryptedBytes = sodium.seal(messageBytes, keyBytes); - * - * // Base64 the encrypted secret - * const encrypted = Buffer.from(encryptedBytes).toString('base64'); - * - * console.log(encrypted); - * ``` - * - * - * #### Example encrypting a secret using Python - * - * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. - * - * ``` - * from base64 import b64encode - * from nacl import encoding, public - * - * def encrypt(public_key: str, secret_value: str) -> str: - * """Encrypt a Unicode string using the public key.""" - * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) - * sealed_box = public.SealedBox(public_key) - * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) - * return b64encode(encrypted).decode("utf-8") - * ``` - * - * #### Example encrypting a secret using C# - * - * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. - * - * ``` - * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); - * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); - * - * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); - * - * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); - * ``` - * - * #### Example encrypting a secret using Ruby - * - * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. - * - * ```ruby - * require "rbnacl" - * require "base64" - * - * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") - * public_key = RbNaCl::PublicKey.new(key) - * - * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) - * encrypted_secret = box.encrypt("my_secret") - * - * # Print the base64 encoded secret - * puts Base64.strict_encode64(encrypted_secret) - * ``` - */ - createOrUpdateOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["createOrUpdateOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates or updates a repository secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createOrUpdateRepoSecret: { - (params?: RestEndpointMethodTypes["actions"]["createOrUpdateRepoSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates an organization variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createOrgVariable: { - (params?: RestEndpointMethodTypes["actions"]["createOrgVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a token that you can pass to the `config` script. The token expires after one hour. - * - * For example, you can replace `TOKEN` in the following example with the registration token provided by this endpoint to configure your self-hosted runner: - * - * ``` - * ./config.sh --url https://github.com/octo-org --token TOKEN - * ``` - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createRegistrationTokenForOrg: { - (params?: RestEndpointMethodTypes["actions"]["createRegistrationTokenForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a token that you can pass to the `config` script. The token expires after one hour. - * - * For example, you can replace `TOKEN` in the following example with the registration token provided by this endpoint to configure your self-hosted runner: - * - * ``` - * ./config.sh --url https://github.com/octo-org --token TOKEN - * ``` - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createRegistrationTokenForRepo: { - (params?: RestEndpointMethodTypes["actions"]["createRegistrationTokenForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a token that you can pass to the `config` script to remove a self-hosted runner from an organization. The token expires after one hour. - * - * For example, you can replace `TOKEN` in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization: - * - * ``` - * ./config.sh remove --token TOKEN - * ``` - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createRemoveTokenForOrg: { - (params?: RestEndpointMethodTypes["actions"]["createRemoveTokenForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a token that you can pass to the `config` script to remove a self-hosted runner from an repository. The token expires after one hour. - * - * For example, you can replace `TOKEN` in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization: - * - * ``` - * ./config.sh remove --token TOKEN - * ``` - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createRemoveTokenForRepo: { - (params?: RestEndpointMethodTypes["actions"]["createRemoveTokenForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a repository variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createRepoVariable: { - (params?: RestEndpointMethodTypes["actions"]["createRepoVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * You must configure your GitHub Actions workflow to run when the [`workflow_dispatch` webhook](/developers/webhooks-and-events/webhook-events-and-payloads#workflow_dispatch) event occurs. The `inputs` are configured in the workflow file. For more information about how to configure the `workflow_dispatch` event in the workflow file, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_dispatch)." - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createWorkflowDispatch: { - (params?: RestEndpointMethodTypes["actions"]["createWorkflowDispatch"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a GitHub Actions cache for a repository, using a cache ID. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteActionsCacheById: { - (params?: RestEndpointMethodTypes["actions"]["deleteActionsCacheById"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes one or more GitHub Actions caches for a repository, using a complete cache key. By default, all caches that match the provided key are deleted, but you can optionally provide a Git ref to restrict deletions to caches that match both the provided key and the Git ref. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteActionsCacheByKey: { - (params?: RestEndpointMethodTypes["actions"]["deleteActionsCacheByKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes an artifact for a workflow run. - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteArtifact: { - (params?: RestEndpointMethodTypes["actions"]["deleteArtifact"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete a custom image from the organization. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - deleteCustomImageFromOrg: { - (params?: RestEndpointMethodTypes["actions"]["deleteCustomImageFromOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete an image version of custom image from the organization. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - deleteCustomImageVersionFromOrg: { - (params?: RestEndpointMethodTypes["actions"]["deleteCustomImageVersionFromOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a secret in an environment using the secret name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteEnvironmentSecret: { - (params?: RestEndpointMethodTypes["actions"]["deleteEnvironmentSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes an environment variable using the variable name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteEnvironmentVariable: { - (params?: RestEndpointMethodTypes["actions"]["deleteEnvironmentVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a GitHub-hosted runner for an organization. - */ - deleteHostedRunnerForOrg: { - (params?: RestEndpointMethodTypes["actions"]["deleteHostedRunnerForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a secret in an organization using the secret name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["deleteOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes an organization variable using the variable name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteOrgVariable: { - (params?: RestEndpointMethodTypes["actions"]["deleteOrgVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a secret in a repository using the secret name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteRepoSecret: { - (params?: RestEndpointMethodTypes["actions"]["deleteRepoSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a repository variable using the variable name. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteRepoVariable: { - (params?: RestEndpointMethodTypes["actions"]["deleteRepoVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Forces the removal of a self-hosted runner from an organization. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteSelfHostedRunnerFromOrg: { - (params?: RestEndpointMethodTypes["actions"]["deleteSelfHostedRunnerFromOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Forces the removal of a self-hosted runner from a repository. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteSelfHostedRunnerFromRepo: { - (params?: RestEndpointMethodTypes["actions"]["deleteSelfHostedRunnerFromRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a specific workflow run. - * - * Anyone with write access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["deleteWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes all logs for a workflow run. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteWorkflowRunLogs: { - (params?: RestEndpointMethodTypes["actions"]["deleteWorkflowRunLogs"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a repository from the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - disableSelectedRepositoryGithubActionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["disableSelectedRepositoryGithubActionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Disables a workflow and sets the `state` of the workflow to `disabled_manually`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - disableWorkflow: { - (params?: RestEndpointMethodTypes["actions"]["disableWorkflow"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a redirect URL to download an archive for a repository. This URL expires after 1 minute. Look for `Location:` in - * the response header to find the URL for the download. The `:archive_format` must be `zip`. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - downloadArtifact: { - (params?: RestEndpointMethodTypes["actions"]["downloadArtifact"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a redirect URL to download a plain text file of logs for a workflow job. This link expires after 1 minute. Look - * for `Location:` in the response header to find the URL for the download. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - downloadJobLogsForWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["downloadJobLogsForWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a redirect URL to download an archive of log files for a specific workflow run attempt. This link expires after - * 1 minute. Look for `Location:` in the response header to find the URL for the download. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - downloadWorkflowRunAttemptLogs: { - (params?: RestEndpointMethodTypes["actions"]["downloadWorkflowRunAttemptLogs"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a redirect URL to download an archive of log files for a workflow run. This link expires after 1 minute. Look for - * `Location:` in the response header to find the URL for the download. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - downloadWorkflowRunLogs: { - (params?: RestEndpointMethodTypes["actions"]["downloadWorkflowRunLogs"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds a repository to the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - enableSelectedRepositoryGithubActionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["enableSelectedRepositoryGithubActionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables a workflow and sets the `state` of the workflow to `active`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - enableWorkflow: { - (params?: RestEndpointMethodTypes["actions"]["enableWorkflow"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Cancels a workflow run and bypasses conditions that would otherwise cause a workflow execution to continue, such as an `always()` condition on a job. - * You should only use this endpoint to cancel a workflow run when the workflow run is not responding to [`POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel`](/rest/actions/workflow-runs#cancel-a-workflow-run). - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - forceCancelWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["forceCancelWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Generates a configuration that can be passed to the runner application at startup. - * - * The authenticated user must have admin access to the organization. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - generateRunnerJitconfigForOrg: { - (params?: RestEndpointMethodTypes["actions"]["generateRunnerJitconfigForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Generates a configuration that can be passed to the runner application at startup. - * - * The authenticated user must have admin access to the repository. - * - * OAuth tokens and personal access tokens (classic) need the`repo` scope to use this endpoint. - */ - generateRunnerJitconfigForRepo: { - (params?: RestEndpointMethodTypes["actions"]["generateRunnerJitconfigForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the GitHub Actions caches for a repository. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getActionsCacheList: { - (params?: RestEndpointMethodTypes["actions"]["getActionsCacheList"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets GitHub Actions cache usage for a repository. - * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getActionsCacheUsage: { - (params?: RestEndpointMethodTypes["actions"]["getActionsCacheUsage"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories and their GitHub Actions cache usage for an organization. - * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. - * - * OAuth tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - getActionsCacheUsageByRepoForOrg: { - (params?: RestEndpointMethodTypes["actions"]["getActionsCacheUsageByRepoForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the total GitHub Actions cache usage for an organization. - * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. - * - * OAuth tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - getActionsCacheUsageForOrg: { - (params?: RestEndpointMethodTypes["actions"]["getActionsCacheUsageForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the selected actions and reusable workflows that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - getAllowedActionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["getAllowedActionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the settings for selected actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getAllowedActionsRepository: { - (params?: RestEndpointMethodTypes["actions"]["getAllowedActionsRepository"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific artifact for a workflow run. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getArtifact: { - (params?: RestEndpointMethodTypes["actions"]["getArtifact"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a custom image definition for GitHub Actions Hosted Runners. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - getCustomImageForOrg: { - (params?: RestEndpointMethodTypes["actions"]["getCustomImageForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get an image version of a custom image for GitHub Actions Hosted Runners. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - getCustomImageVersionForOrg: { - (params?: RestEndpointMethodTypes["actions"]["getCustomImageVersionForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the customization template for an OpenID Connect (OIDC) subject claim. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getCustomOidcSubClaimForRepo: { - (params?: RestEndpointMethodTypes["actions"]["getCustomOidcSubClaimForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the public key for an environment, which you need to encrypt environment - * secrets. You need to encrypt a secret before you can create or update secrets. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getEnvironmentPublicKey: { - (params?: RestEndpointMethodTypes["actions"]["getEnvironmentPublicKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a single environment secret without revealing its encrypted value. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getEnvironmentSecret: { - (params?: RestEndpointMethodTypes["actions"]["getEnvironmentSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific variable in an environment. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getEnvironmentVariable: { - (params?: RestEndpointMethodTypes["actions"]["getEnvironmentVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, - * as well as whether GitHub Actions can submit approving pull request reviews. For more information, see - * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)." - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - getGithubActionsDefaultWorkflowPermissionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["getGithubActionsDefaultWorkflowPermissionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, - * as well as if GitHub Actions can submit approving pull request reviews. - * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository)." - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getGithubActionsDefaultWorkflowPermissionsRepository: { - (params?: RestEndpointMethodTypes["actions"]["getGithubActionsDefaultWorkflowPermissionsRepository"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - getGithubActionsPermissionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["getGithubActionsPermissionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions and reusable workflows allowed to run in the repository. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getGithubActionsPermissionsRepository: { - (params?: RestEndpointMethodTypes["actions"]["getGithubActionsPermissionsRepository"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a GitHub-hosted runner configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - getHostedRunnerForOrg: { - (params?: RestEndpointMethodTypes["actions"]["getHostedRunnerForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the list of GitHub-owned images available for GitHub-hosted runners for an organization. - */ - getHostedRunnersGithubOwnedImagesForOrg: { - (params?: RestEndpointMethodTypes["actions"]["getHostedRunnersGithubOwnedImagesForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the GitHub-hosted runners limits for an organization. - */ - getHostedRunnersLimitsForOrg: { - (params?: RestEndpointMethodTypes["actions"]["getHostedRunnersLimitsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the list of machine specs available for GitHub-hosted runners for an organization. - */ - getHostedRunnersMachineSpecsForOrg: { - (params?: RestEndpointMethodTypes["actions"]["getHostedRunnersMachineSpecsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the list of partner images available for GitHub-hosted runners for an organization. - */ - getHostedRunnersPartnerImagesForOrg: { - (params?: RestEndpointMethodTypes["actions"]["getHostedRunnersPartnerImagesForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the list of platforms available for GitHub-hosted runners for an organization. - */ - getHostedRunnersPlatformsForOrg: { - (params?: RestEndpointMethodTypes["actions"]["getHostedRunnersPlatformsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific job in a workflow run. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getJobForWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["getJobForWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. - * - * The authenticated user must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getOrgPublicKey: { - (params?: RestEndpointMethodTypes["actions"]["getOrgPublicKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a single organization secret without revealing its encrypted value. - * - * The authenticated user must have collaborator access to a repository to create, update, or read secrets - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["getOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific variable in an organization. - * - * The authenticated user must have collaborator access to a repository to create, update, or read variables. - * - * OAuth tokens and personal access tokens (classic) need the`admin:org` scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getOrgVariable: { - (params?: RestEndpointMethodTypes["actions"]["getOrgVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get all deployment environments for a workflow run that are waiting for protection rules to pass. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getPendingDeploymentsForRun: { - (params?: RestEndpointMethodTypes["actions"]["getPendingDeploymentsForRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions and reusable workflows allowed to run in the repository. - * - * OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - * @deprecated octokit.rest.actions.getRepoPermissions() has been renamed to octokit.rest.actions.getGithubActionsPermissionsRepository() (2020-11-10) - */ - getRepoPermissions: { - (params?: RestEndpointMethodTypes["actions"]["getRepoPermissions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. - * - * Anyone with read access to the repository can use this endpoint. - * - * If the repository is private, OAuth tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getRepoPublicKey: { - (params?: RestEndpointMethodTypes["actions"]["getRepoPublicKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a single repository secret without revealing its encrypted value. - * - * The authenticated user must have collaborator access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getRepoSecret: { - (params?: RestEndpointMethodTypes["actions"]["getRepoSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific variable in a repository. - * - * The authenticated user must have collaborator access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getRepoVariable: { - (params?: RestEndpointMethodTypes["actions"]["getRepoVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - getReviewsForRun: { - (params?: RestEndpointMethodTypes["actions"]["getReviewsForRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific self-hosted runner configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - getSelfHostedRunnerForOrg: { - (params?: RestEndpointMethodTypes["actions"]["getSelfHostedRunnerForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific self-hosted runner configured in a repository. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getSelfHostedRunnerForRepo: { - (params?: RestEndpointMethodTypes["actions"]["getSelfHostedRunnerForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific workflow. You can replace `workflow_id` with the workflow - * file name. For example, you could use `main.yaml`. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - getWorkflow: { - (params?: RestEndpointMethodTypes["actions"]["getWorkflow"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository. - * This endpoint only applies to private repositories. - * For more information, see "[Allowing access to components in a private repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getWorkflowAccessToRepository: { - (params?: RestEndpointMethodTypes["actions"]["getWorkflowAccessToRepository"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific workflow run. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - getWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["getWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific workflow run attempt. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - getWorkflowRunAttempt: { - (params?: RestEndpointMethodTypes["actions"]["getWorkflowRunAttempt"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!WARNING] - * > This endpoint is in the process of closing down. Refer to "[Actions Get workflow usage and Get workflow run usage endpoints closing down](https://github.blog/changelog/2025-02-02-actions-get-workflow-usage-and-get-workflow-run-usage-endpoints-closing-down/)" for more information. - * - * Gets the number of billable minutes and total run time for a specific workflow run. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - getWorkflowRunUsage: { - (params?: RestEndpointMethodTypes["actions"]["getWorkflowRunUsage"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!WARNING] - * > This endpoint is in the process of closing down. Refer to "[Actions Get workflow usage and Get workflow run usage endpoints closing down](https://github.blog/changelog/2025-02-02-actions-get-workflow-usage-and-get-workflow-run-usage-endpoints-closing-down/)" for more information. - * - * Gets the number of billable minutes used by a specific workflow during the current billing cycle. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - getWorkflowUsage: { - (params?: RestEndpointMethodTypes["actions"]["getWorkflowUsage"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all artifacts for a repository. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - listArtifactsForRepo: { - (params?: RestEndpointMethodTypes["actions"]["listArtifactsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List image versions of a custom image for an organization. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - listCustomImageVersionsForOrg: { - (params?: RestEndpointMethodTypes["actions"]["listCustomImageVersionsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List custom images for an organization. - * - * OAuth tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - listCustomImagesForOrg: { - (params?: RestEndpointMethodTypes["actions"]["listCustomImagesForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all secrets available in an environment without revealing their - * encrypted values. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - listEnvironmentSecrets: { - (params?: RestEndpointMethodTypes["actions"]["listEnvironmentSecrets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all environment variables. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - listEnvironmentVariables: { - (params?: RestEndpointMethodTypes["actions"]["listEnvironmentVariables"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the GitHub-hosted runners in an organization group. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - listGithubHostedRunnersInGroupForOrg: { - (params?: RestEndpointMethodTypes["actions"]["listGithubHostedRunnersInGroupForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all GitHub-hosted runners configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `manage_runner:org` scope to use this endpoint. - */ - listHostedRunnersForOrg: { - (params?: RestEndpointMethodTypes["actions"]["listHostedRunnersForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists jobs for a workflow run. You can use parameters to narrow the list of results. For more information - * about using parameters, see [Parameters](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - listJobsForWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["listJobsForWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists jobs for a specific workflow run attempt. You can use parameters to narrow the list of results. For more information - * about using parameters, see [Parameters](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - listJobsForWorkflowRunAttempt: { - (params?: RestEndpointMethodTypes["actions"]["listJobsForWorkflowRunAttempt"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all labels for a self-hosted runner configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - listLabelsForSelfHostedRunnerForOrg: { - (params?: RestEndpointMethodTypes["actions"]["listLabelsForSelfHostedRunnerForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all labels for a self-hosted runner configured in a repository. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - listLabelsForSelfHostedRunnerForRepo: { - (params?: RestEndpointMethodTypes["actions"]["listLabelsForSelfHostedRunnerForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all secrets available in an organization without revealing their - * encrypted values. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - listOrgSecrets: { - (params?: RestEndpointMethodTypes["actions"]["listOrgSecrets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all organization variables. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - listOrgVariables: { - (params?: RestEndpointMethodTypes["actions"]["listOrgVariables"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all organization secrets shared with a repository without revealing their encrypted - * values. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - listRepoOrganizationSecrets: { - (params?: RestEndpointMethodTypes["actions"]["listRepoOrganizationSecrets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all organization variables shared with a repository. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - listRepoOrganizationVariables: { - (params?: RestEndpointMethodTypes["actions"]["listRepoOrganizationVariables"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all secrets available in a repository without revealing their encrypted - * values. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - listRepoSecrets: { - (params?: RestEndpointMethodTypes["actions"]["listRepoSecrets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all repository variables. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - listRepoVariables: { - (params?: RestEndpointMethodTypes["actions"]["listRepoVariables"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the workflows in a repository. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - listRepoWorkflows: { - (params?: RestEndpointMethodTypes["actions"]["listRepoWorkflows"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists binaries for the runner application that you can download and run. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - listRunnerApplicationsForOrg: { - (params?: RestEndpointMethodTypes["actions"]["listRunnerApplicationsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists binaries for the runner application that you can download and run. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - listRunnerApplicationsForRepo: { - (params?: RestEndpointMethodTypes["actions"]["listRunnerApplicationsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all repositories that have been selected when the `visibility` - * for repository access to a secret is set to `selected`. - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - listSelectedReposForOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["listSelectedReposForOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all repositories that can access an organization variable - * that is available to selected repositories. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - listSelectedReposForOrgVariable: { - (params?: RestEndpointMethodTypes["actions"]["listSelectedReposForOrgVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - listSelectedRepositoriesEnabledGithubActionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["listSelectedRepositoriesEnabledGithubActionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all self-hosted runners configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - listSelfHostedRunnersForOrg: { - (params?: RestEndpointMethodTypes["actions"]["listSelfHostedRunnersForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all self-hosted runners configured in a repository. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - listSelfHostedRunnersForRepo: { - (params?: RestEndpointMethodTypes["actions"]["listSelfHostedRunnersForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists artifacts for a workflow run. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - listWorkflowRunArtifacts: { - (params?: RestEndpointMethodTypes["actions"]["listWorkflowRunArtifacts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all workflow runs for a workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - * - * This endpoint will return up to 1,000 results for each search when using the following parameters: `actor`, `branch`, `check_suite_id`, `created`, `event`, `head_sha`, `status`. - */ - listWorkflowRuns: { - (params?: RestEndpointMethodTypes["actions"]["listWorkflowRuns"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all workflow runs for a repository. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - * - * This endpoint will return up to 1,000 results for each search when using the following parameters: `actor`, `branch`, `check_suite_id`, `created`, `event`, `head_sha`, `status`. - */ - listWorkflowRunsForRepo: { - (params?: RestEndpointMethodTypes["actions"]["listWorkflowRunsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Re-run a job and its dependent jobs in a workflow run. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - reRunJobForWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["reRunJobForWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Re-runs your workflow run using its `id`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - reRunWorkflow: { - (params?: RestEndpointMethodTypes["actions"]["reRunWorkflow"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Re-run all of the failed jobs and their dependent jobs in a workflow run using the `id` of the workflow run. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - reRunWorkflowFailedJobs: { - (params?: RestEndpointMethodTypes["actions"]["reRunWorkflowFailedJobs"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Remove all custom labels from a self-hosted runner configured in an - * organization. Returns the remaining read-only labels from the runner. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - removeAllCustomLabelsFromSelfHostedRunnerForOrg: { - (params?: RestEndpointMethodTypes["actions"]["removeAllCustomLabelsFromSelfHostedRunnerForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Remove all custom labels from a self-hosted runner configured in a - * repository. Returns the remaining read-only labels from the runner. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - removeAllCustomLabelsFromSelfHostedRunnerForRepo: { - (params?: RestEndpointMethodTypes["actions"]["removeAllCustomLabelsFromSelfHostedRunnerForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Remove a custom label from a self-hosted runner configured - * in an organization. Returns the remaining labels from the runner. - * - * This endpoint returns a `404 Not Found` status if the custom label is not - * present on the runner. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - removeCustomLabelFromSelfHostedRunnerForOrg: { - (params?: RestEndpointMethodTypes["actions"]["removeCustomLabelFromSelfHostedRunnerForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Remove a custom label from a self-hosted runner configured - * in a repository. Returns the remaining labels from the runner. - * - * This endpoint returns a `404 Not Found` status if the custom label is not - * present on the runner. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - removeCustomLabelFromSelfHostedRunnerForRepo: { - (params?: RestEndpointMethodTypes["actions"]["removeCustomLabelFromSelfHostedRunnerForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a repository from an organization secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret). - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - removeSelectedRepoFromOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["removeSelectedRepoFromOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a repository from an organization variable that is - * available to selected repositories. Organization variables that are available to - * selected repositories have their `visibility` field set to `selected`. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - removeSelectedRepoFromOrgVariable: { - (params?: RestEndpointMethodTypes["actions"]["removeSelectedRepoFromOrgVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Approve or reject custom deployment protection rules provided by a GitHub App for a workflow run. For more information, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)." - * - * > [!NOTE] - * > GitHub Apps can only review their own custom deployment protection rules. To approve or reject pending deployments that are waiting for review from a specific person or team, see [`POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments`](/rest/actions/workflow-runs#review-pending-deployments-for-a-workflow-run). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - reviewCustomGatesForRun: { - (params?: RestEndpointMethodTypes["actions"]["reviewCustomGatesForRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Approve or reject pending deployments that are waiting on approval by a required reviewer. - * - * Required reviewers with read access to the repository contents and deployments can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - reviewPendingDeploymentsForRun: { - (params?: RestEndpointMethodTypes["actions"]["reviewPendingDeploymentsForRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the actions and reusable workflows that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - setAllowedActionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["setAllowedActionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - setAllowedActionsRepository: { - (params?: RestEndpointMethodTypes["actions"]["setAllowedActionsRepository"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Remove all previous custom labels and set the new custom labels for a specific - * self-hosted runner configured in an organization. - * - * Authenticated users must have admin access to the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - setCustomLabelsForSelfHostedRunnerForOrg: { - (params?: RestEndpointMethodTypes["actions"]["setCustomLabelsForSelfHostedRunnerForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Remove all previous custom labels and set the new custom labels for a specific - * self-hosted runner configured in a repository. - * - * Authenticated users must have admin access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - setCustomLabelsForSelfHostedRunnerForRepo: { - (params?: RestEndpointMethodTypes["actions"]["setCustomLabelsForSelfHostedRunnerForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the customization template and `opt-in` or `opt-out` flag for an OpenID Connect (OIDC) subject claim for a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - setCustomOidcSubClaimForRepo: { - (params?: RestEndpointMethodTypes["actions"]["setCustomOidcSubClaimForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, and sets if GitHub Actions - * can submit approving pull request reviews. For more information, see - * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - setGithubActionsDefaultWorkflowPermissionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["setGithubActionsDefaultWorkflowPermissionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, and sets if GitHub Actions - * can submit approving pull request reviews. - * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - setGithubActionsDefaultWorkflowPermissionsRepository: { - (params?: RestEndpointMethodTypes["actions"]["setGithubActionsDefaultWorkflowPermissionsRepository"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - setGithubActionsPermissionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["setGithubActionsPermissionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions and reusable workflows in the repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - setGithubActionsPermissionsRepository: { - (params?: RestEndpointMethodTypes["actions"]["setGithubActionsPermissionsRepository"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Replaces all repositories for an organization secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret). - * - * Authenticated users must have collaborator access to a repository to create, update, or read secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - setSelectedReposForOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["setSelectedReposForOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Replaces all repositories for an organization variable that is available - * to selected repositories. Organization variables that are available to selected - * repositories have their `visibility` field set to `selected`. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - setSelectedReposForOrgVariable: { - (params?: RestEndpointMethodTypes["actions"]["setSelectedReposForOrgVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Replaces the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - setSelectedRepositoriesEnabledGithubActionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["setSelectedRepositoriesEnabledGithubActionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository. - * This endpoint only applies to private repositories. - * For more information, see "[Allowing access to components in a private repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository)". - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - setWorkflowAccessToRepository: { - (params?: RestEndpointMethodTypes["actions"]["setWorkflowAccessToRepository"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates an environment variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - updateEnvironmentVariable: { - (params?: RestEndpointMethodTypes["actions"]["updateEnvironmentVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a GitHub-hosted runner for an organization. - * OAuth app tokens and personal access tokens (classic) need the `manage_runners:org` scope to use this endpoint. - */ - updateHostedRunnerForOrg: { - (params?: RestEndpointMethodTypes["actions"]["updateHostedRunnerForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates an organization variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. If the repository is private, the `repo` scope is also required. - */ - updateOrgVariable: { - (params?: RestEndpointMethodTypes["actions"]["updateOrgVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a repository variable that you can reference in a GitHub Actions workflow. - * - * Authenticated users must have collaborator access to a repository to create, update, or read variables. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - updateRepoVariable: { - (params?: RestEndpointMethodTypes["actions"]["updateRepoVariable"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - activity: { - /** - * Whether the authenticated user has starred the repository. - */ - checkRepoIsStarredByAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["checkRepoIsStarredByAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://docs.github.com/rest/activity/watching#set-a-repository-subscription). - */ - deleteRepoSubscription: { - (params?: RestEndpointMethodTypes["activity"]["deleteRepoSubscription"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Mutes all future notifications for a conversation until you comment on the thread or get an **@mention**. If you are watching the repository of the thread, you will still receive notifications. To ignore future notifications for a repository you are watching, use the [Set a thread subscription](https://docs.github.com/rest/activity/notifications#set-a-thread-subscription) endpoint and set `ignore` to `true`. - */ - deleteThreadSubscription: { - (params?: RestEndpointMethodTypes["activity"]["deleteThreadSubscription"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the feeds available to the authenticated user. The response provides a URL for each feed. You can then get a specific feed by sending a request to one of the feed URLs. - * - * * **Timeline**: The GitHub global public timeline - * * **User**: The public timeline for any user, using `uri_template`. For more information, see "[Hypermedia](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#hypermedia)." - * * **Current user public**: The public timeline for the authenticated user - * * **Current user**: The private timeline for the authenticated user - * * **Current user actor**: The private timeline for activity created by the authenticated user - * * **Current user organizations**: The private timeline for the organizations the authenticated user is a member of. - * * **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub. - * - * By default, timeline resources are returned in JSON. You can specify the `application/atom+xml` type in the `Accept` header to return timeline resources in Atom format. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * > [!NOTE] - * > Private feeds are only returned when [authenticating via Basic Auth](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) since current feed URIs use the older, non revocable auth tokens. - */ - getFeeds: { - (params?: RestEndpointMethodTypes["activity"]["getFeeds"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets information about whether the authenticated user is subscribed to the repository. - */ - getRepoSubscription: { - (params?: RestEndpointMethodTypes["activity"]["getRepoSubscription"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets information about a notification thread. - */ - getThread: { - (params?: RestEndpointMethodTypes["activity"]["getThread"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://docs.github.com/rest/activity/watching#get-a-repository-subscription). - * - * Note that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread. - */ - getThreadSubscriptionForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["getThreadSubscriptionForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events. _Optional_: use the fine-grained token with following permission set to view private events: "Events" user permissions (read). - * - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - listEventsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["listEventsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all notifications for the current user, sorted by most recently updated. - */ - listNotificationsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["listNotificationsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This is the user's organization dashboard. You must be authenticated as the user to view this. - * - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - listOrgEventsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["listOrgEventsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - listPublicEvents: { - (params?: RestEndpointMethodTypes["activity"]["listPublicEvents"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - listPublicEventsForRepoNetwork: { - (params?: RestEndpointMethodTypes["activity"]["listPublicEventsForRepoNetwork"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - listPublicEventsForUser: { - (params?: RestEndpointMethodTypes["activity"]["listPublicEventsForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - listPublicOrgEvents: { - (params?: RestEndpointMethodTypes["activity"]["listPublicOrgEvents"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * These are events that you've received by watching repositories and following users. If you are authenticated as the - * given user, you will see private events. Otherwise, you'll only see public events. - * - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - listReceivedEventsForUser: { - (params?: RestEndpointMethodTypes["activity"]["listReceivedEventsForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - listReceivedPublicEventsForUser: { - (params?: RestEndpointMethodTypes["activity"]["listReceivedPublicEventsForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > This API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h. - */ - listRepoEvents: { - (params?: RestEndpointMethodTypes["activity"]["listRepoEvents"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all notifications for the current user in the specified repository. - */ - listRepoNotificationsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["listRepoNotificationsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories the authenticated user has starred. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.star+json`**: Includes a timestamp of when the star was created. - */ - listReposStarredByAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["listReposStarredByAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories a user has starred. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.star+json`**: Includes a timestamp of when the star was created. - */ - listReposStarredByUser: { - (params?: RestEndpointMethodTypes["activity"]["listReposStarredByUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories a user is watching. - */ - listReposWatchedByUser: { - (params?: RestEndpointMethodTypes["activity"]["listReposWatchedByUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the people that have starred the repository. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.star+json`**: Includes a timestamp of when the star was created. - */ - listStargazersForRepo: { - (params?: RestEndpointMethodTypes["activity"]["listStargazersForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories the authenticated user is watching. - */ - listWatchedReposForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["listWatchedReposForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the people watching the specified repository. - */ - listWatchersForRepo: { - (params?: RestEndpointMethodTypes["activity"]["listWatchersForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Marks all notifications as "read" for the current user. If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List notifications for the authenticated user](https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. - */ - markNotificationsAsRead: { - (params?: RestEndpointMethodTypes["activity"]["markNotificationsAsRead"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Marks all notifications in a repository as "read" for the current user. If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List repository notifications for the authenticated user](https://docs.github.com/rest/activity/notifications#list-repository-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. - */ - markRepoNotificationsAsRead: { - (params?: RestEndpointMethodTypes["activity"]["markRepoNotificationsAsRead"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Marks a thread as "done." Marking a thread as "done" is equivalent to marking a notification in your notification inbox on GitHub as done: https://github.com/notifications. - */ - markThreadAsDone: { - (params?: RestEndpointMethodTypes["activity"]["markThreadAsDone"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Marks a thread as "read." Marking a thread as "read" is equivalent to clicking a notification in your notification inbox on GitHub: https://github.com/notifications. - */ - markThreadAsRead: { - (params?: RestEndpointMethodTypes["activity"]["markThreadAsRead"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://docs.github.com/rest/activity/watching#delete-a-repository-subscription) completely. - */ - setRepoSubscription: { - (params?: RestEndpointMethodTypes["activity"]["setRepoSubscription"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * If you are watching a repository, you receive notifications for all threads by default. Use this endpoint to ignore future notifications for threads until you comment on the thread or get an **@mention**. - * - * You can also use this endpoint to subscribe to threads that you are currently not receiving notifications for or to subscribed to threads that you have previously ignored. - * - * Unsubscribing from a conversation in a repository that you are not watching is functionally equivalent to the [Delete a thread subscription](https://docs.github.com/rest/activity/notifications#delete-a-thread-subscription) endpoint. - */ - setThreadSubscription: { - (params?: RestEndpointMethodTypes["activity"]["setThreadSubscription"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - starRepoForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["starRepoForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Unstar a repository that the authenticated user has previously starred. - */ - unstarRepoForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["unstarRepoForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - apps: { - /** - * Add a single repository to an installation. The authenticated user must have admin access to the repository. - * - * This endpoint only works for PATs (classic) with the `repo` scope. - * @deprecated octokit.rest.apps.addRepoToInstallation() has been renamed to octokit.rest.apps.addRepoToInstallationForAuthenticatedUser() (2021-10-05) - */ - addRepoToInstallation: { - (params?: RestEndpointMethodTypes["apps"]["addRepoToInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Add a single repository to an installation. The authenticated user must have admin access to the repository. - * - * This endpoint only works for PATs (classic) with the `repo` scope. - */ - addRepoToInstallationForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["apps"]["addRepoToInstallationForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth applications and GitHub applications with OAuth authorizations can use this API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. Invalid tokens will return `404 NOT FOUND`. - */ - checkToken: { - (params?: RestEndpointMethodTypes["apps"]["checkToken"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`. - */ - createFromManifest: { - (params?: RestEndpointMethodTypes["apps"]["createFromManifest"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access. - * - * Optionally, you can use the `repositories` or `repository_ids` body parameters to specify individual repositories that the installation access token can access. If you don't use `repositories` or `repository_ids` to grant access to specific repositories, the installation access token will have access to all repositories that the installation was granted access to. The installation access token cannot be granted access to repositories that the installation was not granted access to. Up to 500 repositories can be listed in this manner. - * - * Optionally, use the `permissions` body parameter to specify the permissions that the installation access token should have. If `permissions` is not specified, the installation access token will have all of the permissions that were granted to the app. The installation access token cannot be granted permissions that the app was not granted. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - createInstallationAccessToken: { - (params?: RestEndpointMethodTypes["apps"]["createInstallationAccessToken"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth and GitHub application owners can revoke a grant for their application and a specific user. You must provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted. - * Deleting an application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). - */ - deleteAuthorization: { - (params?: RestEndpointMethodTypes["apps"]["deleteAuthorization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Uninstalls a GitHub App on a user, organization, or enterprise account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the "[Suspend an app installation](https://docs.github.com/rest/apps/apps#suspend-an-app-installation)" endpoint. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - deleteInstallation: { - (params?: RestEndpointMethodTypes["apps"]["deleteInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth or GitHub application owners can revoke a single token for an OAuth application or a GitHub application with an OAuth authorization. - */ - deleteToken: { - (params?: RestEndpointMethodTypes["apps"]["deleteToken"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations for the authenticated app](https://docs.github.com/rest/apps/apps#list-installations-for-the-authenticated-app)" endpoint. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - getAuthenticated: { - (params?: RestEndpointMethodTypes["apps"]["getAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`). - */ - getBySlug: { - (params?: RestEndpointMethodTypes["apps"]["getBySlug"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables an authenticated GitHub App to find an installation's information using the installation id. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - getInstallation: { - (params?: RestEndpointMethodTypes["apps"]["getInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables an authenticated GitHub App to find the organization's installation information. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - getOrgInstallation: { - (params?: RestEndpointMethodTypes["apps"]["getOrgInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - getRepoInstallation: { - (params?: RestEndpointMethodTypes["apps"]["getRepoInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - getSubscriptionPlanForAccount: { - (params?: RestEndpointMethodTypes["apps"]["getSubscriptionPlanForAccount"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - getSubscriptionPlanForAccountStubbed: { - (params?: RestEndpointMethodTypes["apps"]["getSubscriptionPlanForAccountStubbed"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables an authenticated GitHub App to find the user’s installation information. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - getUserInstallation: { - (params?: RestEndpointMethodTypes["apps"]["getUserInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - getWebhookConfigForApp: { - (params?: RestEndpointMethodTypes["apps"]["getWebhookConfigForApp"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a delivery for the webhook configured for a GitHub App. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - getWebhookDelivery: { - (params?: RestEndpointMethodTypes["apps"]["getWebhookDelivery"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns user and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - listAccountsForPlan: { - (params?: RestEndpointMethodTypes["apps"]["listAccountsForPlan"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns repository and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - listAccountsForPlanStubbed: { - (params?: RestEndpointMethodTypes["apps"]["listAccountsForPlanStubbed"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - * - * The access the user has to each repository is included in the hash under the `permissions` key. - */ - listInstallationReposForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["apps"]["listInstallationReposForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all the pending installation requests for the authenticated GitHub App. - */ - listInstallationRequestsForAuthenticatedApp: { - (params?: RestEndpointMethodTypes["apps"]["listInstallationRequestsForAuthenticatedApp"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You must use a [JWT](https://docs.github.com/enterprise-server@3.9/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - * - * The permissions the installation has are included under the `permissions` key. - */ - listInstallations: { - (params?: RestEndpointMethodTypes["apps"]["listInstallations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - * - * You can find the permissions for the installation under the `permissions` key. - */ - listInstallationsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["apps"]["listInstallationsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all plans that are part of your GitHub Marketplace listing. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - listPlans: { - (params?: RestEndpointMethodTypes["apps"]["listPlans"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all plans that are part of your GitHub Marketplace listing. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/authentication/authenticating-to-the-rest-api#using-basic-authentication) with their client ID and client secret to access this endpoint. - */ - listPlansStubbed: { - (params?: RestEndpointMethodTypes["apps"]["listPlansStubbed"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List repositories that an app installation can access. - */ - listReposAccessibleToInstallation: { - (params?: RestEndpointMethodTypes["apps"]["listReposAccessibleToInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the active subscriptions for the authenticated user. - */ - listSubscriptionsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["apps"]["listSubscriptionsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the active subscriptions for the authenticated user. - */ - listSubscriptionsForAuthenticatedUserStubbed: { - (params?: RestEndpointMethodTypes["apps"]["listSubscriptionsForAuthenticatedUserStubbed"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a list of webhook deliveries for the webhook configured for a GitHub App. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - listWebhookDeliveries: { - (params?: RestEndpointMethodTypes["apps"]["listWebhookDeliveries"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Redeliver a delivery for the webhook configured for a GitHub App. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - redeliverWebhookDelivery: { - (params?: RestEndpointMethodTypes["apps"]["redeliverWebhookDelivery"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Remove a single repository from an installation. The authenticated user must have admin access to the repository. The installation must have the `repository_selection` of `selected`. - * - * This endpoint only works for PATs (classic) with the `repo` scope. - * @deprecated octokit.rest.apps.removeRepoFromInstallation() has been renamed to octokit.rest.apps.removeRepoFromInstallationForAuthenticatedUser() (2021-10-05) - */ - removeRepoFromInstallation: { - (params?: RestEndpointMethodTypes["apps"]["removeRepoFromInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Remove a single repository from an installation. The authenticated user must have admin access to the repository. The installation must have the `repository_selection` of `selected`. - * - * This endpoint only works for PATs (classic) with the `repo` scope. - */ - removeRepoFromInstallationForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["apps"]["removeRepoFromInstallationForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth applications and GitHub applications with OAuth authorizations can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. Invalid tokens will return `404 NOT FOUND`. - */ - resetToken: { - (params?: RestEndpointMethodTypes["apps"]["resetToken"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Revokes the installation token you're using to authenticate as an installation and access this endpoint. - * - * Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the "[Create an installation access token for an app](https://docs.github.com/rest/apps/apps#create-an-installation-access-token-for-an-app)" endpoint. - */ - revokeInstallationAccessToken: { - (params?: RestEndpointMethodTypes["apps"]["revokeInstallationAccessToken"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Use a non-scoped user access token to create a repository-scoped and/or permission-scoped user access token. You can specify - * which repositories the token can access and which permissions are granted to the - * token. - * - * Invalid tokens will return `404 NOT FOUND`. - */ - scopeToken: { - (params?: RestEndpointMethodTypes["apps"]["scopeToken"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Suspends a GitHub App on a user, organization, or enterprise account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - suspendInstallation: { - (params?: RestEndpointMethodTypes["apps"]["suspendInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a GitHub App installation suspension. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - unsuspendInstallation: { - (params?: RestEndpointMethodTypes["apps"]["unsuspendInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - updateWebhookConfigForApp: { - (params?: RestEndpointMethodTypes["apps"]["updateWebhookConfigForApp"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - billing: { - /** - * Gets the summary of the free and paid GitHub Actions minutes used. - * - * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `admin:org` scope to use this endpoint. - */ - getGithubActionsBillingOrg: { - (params?: RestEndpointMethodTypes["billing"]["getGithubActionsBillingOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the summary of the free and paid GitHub Actions minutes used. - * - * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - getGithubActionsBillingUser: { - (params?: RestEndpointMethodTypes["billing"]["getGithubActionsBillingUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a report of premium request usage for an organization. To use this endpoint, you must be an administrator of an organization within an enterprise or an organization account. - * - * **Note:** Only data from the past 24 months is accessible via this endpoint. - */ - getGithubBillingPremiumRequestUsageReportOrg: { - (params?: RestEndpointMethodTypes["billing"]["getGithubBillingPremiumRequestUsageReportOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a report of premium request usage for a user. - * - * **Note:** Only data from the past 24 months is accessible via this endpoint. - */ - getGithubBillingPremiumRequestUsageReportUser: { - (params?: RestEndpointMethodTypes["billing"]["getGithubBillingPremiumRequestUsageReportUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a report of the total usage for an organization. To use this endpoint, you must be an administrator of an organization within an enterprise or an organization account. - * - * **Note:** This endpoint is only available to organizations with access to the enhanced billing platform. For more information, see "[About the enhanced billing platform](https://docs.github.com/billing/using-the-new-billing-platform)." - */ - getGithubBillingUsageReportOrg: { - (params?: RestEndpointMethodTypes["billing"]["getGithubBillingUsageReportOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a report of the total usage for a user. - * - * **Note:** This endpoint is only available to users with access to the enhanced billing platform. - */ - getGithubBillingUsageReportUser: { - (params?: RestEndpointMethodTypes["billing"]["getGithubBillingUsageReportUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the free and paid storage used for GitHub Packages in gigabytes. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `admin:org` scope to use this endpoint. - */ - getGithubPackagesBillingOrg: { - (params?: RestEndpointMethodTypes["billing"]["getGithubPackagesBillingOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the free and paid storage used for GitHub Packages in gigabytes. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - getGithubPackagesBillingUser: { - (params?: RestEndpointMethodTypes["billing"]["getGithubPackagesBillingUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `admin:org` scope to use this endpoint. - */ - getSharedStorageBillingOrg: { - (params?: RestEndpointMethodTypes["billing"]["getSharedStorageBillingOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - getSharedStorageBillingUser: { - (params?: RestEndpointMethodTypes["billing"]["getSharedStorageBillingUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - campaigns: { - /** - * Create a campaign for an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - * - * Fine-grained tokens must have the "Code scanning alerts" repository permissions (read) on all repositories included - * in the campaign. - */ - createCampaign: { - (params?: RestEndpointMethodTypes["campaigns"]["createCampaign"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a campaign in an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - */ - deleteCampaign: { - (params?: RestEndpointMethodTypes["campaigns"]["deleteCampaign"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a campaign for an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - */ - getCampaignSummary: { - (params?: RestEndpointMethodTypes["campaigns"]["getCampaignSummary"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists campaigns in an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - */ - listOrgCampaigns: { - (params?: RestEndpointMethodTypes["campaigns"]["listOrgCampaigns"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a campaign in an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. - */ - updateCampaign: { - (params?: RestEndpointMethodTypes["campaigns"]["updateCampaign"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - checks: { - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * Creates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs. - * - * In a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs. - */ - create: { - (params?: RestEndpointMethodTypes["checks"]["create"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a check suite manually. By default, check suites are automatically created when you create a [check run](https://docs.github.com/rest/checks/runs). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using "[Update repository preferences for check suites](https://docs.github.com/rest/checks/suites#update-repository-preferences-for-check-suites)". - * - * > [!NOTE] - * > The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * OAuth apps and personal access tokens (classic) cannot use this endpoint. - */ - createSuite: { - (params?: RestEndpointMethodTypes["checks"]["createSuite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a single check run using its `id`. - * - * > [!NOTE] - * > The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - get: { - (params?: RestEndpointMethodTypes["checks"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a single check suite using its `id`. - * - * > [!NOTE] - * > The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - getSuite: { - (params?: RestEndpointMethodTypes["checks"]["getSuite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists annotations for a check run using the annotation `id`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - listAnnotations: { - (params?: RestEndpointMethodTypes["checks"]["listAnnotations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. - * - * > [!NOTE] - * > The endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * If there are more than 1000 check suites on a single git reference, this endpoint will limit check runs to the 1000 most recent check suites. To iterate over all possible check runs, use the [List check suites for a Git reference](https://docs.github.com/rest/reference/checks#list-check-suites-for-a-git-reference) endpoint and provide the `check_suite_id` parameter to the [List check runs in a check suite](https://docs.github.com/rest/reference/checks#list-check-runs-in-a-check-suite) endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - listForRef: { - (params?: RestEndpointMethodTypes["checks"]["listForRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists check runs for a check suite using its `id`. - * - * > [!NOTE] - * > The endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - listForSuite: { - (params?: RestEndpointMethodTypes["checks"]["listForSuite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. - * - * > [!NOTE] - * > The endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint on a private repository. - */ - listSuitesForRef: { - (params?: RestEndpointMethodTypes["checks"]["listSuitesForRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Triggers GitHub to rerequest an existing check run, without pushing new code to a repository. This endpoint will trigger the [`check_run` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) event with the action `rerequested`. When a check run is `rerequested`, the `status` of the check suite it belongs to is reset to `queued` and the `conclusion` is cleared. The check run itself is not updated. GitHub apps recieving the [`check_run` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) with the `rerequested` action should then decide if the check run should be reset or updated and call the [update `check_run` endpoint](https://docs.github.com/rest/checks/runs#update-a-check-run) to update the check_run if desired. - * - * For more information about how to re-run GitHub Actions jobs, see "[Re-run a job from a workflow run](https://docs.github.com/rest/actions/workflow-runs#re-run-a-job-from-a-workflow-run)". - */ - rerequestRun: { - (params?: RestEndpointMethodTypes["checks"]["rerequestRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://docs.github.com/webhooks/event-payloads/#check_suite) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared. - */ - rerequestSuite: { - (params?: RestEndpointMethodTypes["checks"]["rerequestSuite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://docs.github.com/rest/checks/suites#create-a-check-suite). - * You must have admin permissions in the repository to set preferences for check suites. - */ - setSuitesPreferences: { - (params?: RestEndpointMethodTypes["checks"]["setSuitesPreferences"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a check run for a specific commit in a repository. - * - * > [!NOTE] - * > The endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * OAuth apps and personal access tokens (classic) cannot use this endpoint. - */ - update: { - (params?: RestEndpointMethodTypes["checks"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - codeScanning: { - /** - * Commits an autofix for a code scanning alert. - * - * If an autofix is committed as a result of this request, then this endpoint will return a 201 Created response. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - commitAutofix: { - (params?: RestEndpointMethodTypes["codeScanning"]["commitAutofix"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates an autofix for a code scanning alert. - * - * If a new autofix is to be created as a result of this request or is currently being generated, then this endpoint will return a 202 Accepted response. - * - * If an autofix already exists for a given alert, then this endpoint will return a 200 OK response. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - createAutofix: { - (params?: RestEndpointMethodTypes["codeScanning"]["createAutofix"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new CodeQL variant analysis, which will run a CodeQL query against one or more repositories. - * - * Get started by learning more about [running CodeQL queries at scale with Multi-Repository Variant Analysis](https://docs.github.com/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/running-codeql-queries-at-scale-with-multi-repository-variant-analysis). - * - * Use the `owner` and `repo` parameters in the URL to specify the controller repository that - * will be used for running GitHub Actions workflows and storing the results of the CodeQL variant analysis. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createVariantAnalysis: { - (params?: RestEndpointMethodTypes["codeScanning"]["createVariantAnalysis"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a specified code scanning analysis from a repository. - * - * You can delete one analysis at a time. - * To delete a series of analyses, start with the most recent analysis and work backwards. - * Conceptually, the process is similar to the undo function in a text editor. - * - * When you list the analyses for a repository, - * one or more will be identified as deletable in the response: - * - * ``` - * "deletable": true - * ``` - * - * An analysis is deletable when it's the most recent in a set of analyses. - * Typically, a repository will have multiple sets of analyses - * for each enabled code scanning tool, - * where a set is determined by a unique combination of analysis values: - * - * * `ref` - * * `tool` - * * `category` - * - * If you attempt to delete an analysis that is not the most recent in a set, - * you'll get a 400 response with the message: - * - * ``` - * Analysis specified is not deletable. - * ``` - * - * The response from a successful `DELETE` operation provides you with - * two alternative URLs for deleting the next analysis in the set: - * `next_analysis_url` and `confirm_delete_url`. - * Use the `next_analysis_url` URL if you want to avoid accidentally deleting the final analysis - * in a set. This is a useful option if you want to preserve at least one analysis - * for the specified tool in your repository. - * Use the `confirm_delete_url` URL if you are content to remove all analyses for a tool. - * When you delete the last analysis in a set, the value of `next_analysis_url` and `confirm_delete_url` - * in the 200 response is `null`. - * - * As an example of the deletion process, - * let's imagine that you added a workflow that configured a particular code scanning tool - * to analyze the code in a repository. This tool has added 15 analyses: - * 10 on the default branch, and another 5 on a topic branch. - * You therefore have two separate sets of analyses for this tool. - * You've now decided that you want to remove all of the analyses for the tool. - * To do this you must make 15 separate deletion requests. - * To start, you must find an analysis that's identified as deletable. - * Each set of analyses always has one that's identified as deletable. - * Having found the deletable analysis for one of the two sets, - * delete this analysis and then continue deleting the next analysis in the set until they're all deleted. - * Then repeat the process for the second set. - * The procedure therefore consists of a nested loop: - * - * **Outer loop**: - * * List the analyses for the repository, filtered by tool. - * * Parse this list to find a deletable analysis. If found: - * - * **Inner loop**: - * * Delete the identified analysis. - * * Parse the response for the value of `confirm_delete_url` and, if found, use this in the next iteration. - * - * The above process assumes that you want to remove all trace of the tool's analyses from the GitHub user interface, for the specified repository, and it therefore uses the `confirm_delete_url` value. Alternatively, you could use the `next_analysis_url` value, which would leave the last analysis in each set undeleted to avoid removing a tool's analysis entirely. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - deleteAnalysis: { - (params?: RestEndpointMethodTypes["codeScanning"]["deleteAnalysis"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a CodeQL database for a language in a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - deleteCodeqlDatabase: { - (params?: RestEndpointMethodTypes["codeScanning"]["deleteCodeqlDatabase"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a single code scanning alert. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - getAlert: { - (params?: RestEndpointMethodTypes["codeScanning"]["getAlert"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specified code scanning analysis for a repository. - * - * The default JSON response contains fields that describe the analysis. - * This includes the Git reference and commit SHA to which the analysis relates, - * the datetime of the analysis, the name of the code scanning tool, - * and the number of alerts. - * - * The `rules_count` field in the default response give the number of rules - * that were run in the analysis. - * For very old analyses this data is not available, - * and `0` is returned in this field. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/sarif+json`**: Instead of returning a summary of the analysis, this endpoint returns a subset of the analysis data that was uploaded. The data is formatted as [SARIF version 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html). It also returns additional data such as the `github/alertNumber` and `github/alertUrl` properties. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - getAnalysis: { - (params?: RestEndpointMethodTypes["codeScanning"]["getAnalysis"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the status and description of an autofix for a code scanning alert. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - getAutofix: { - (params?: RestEndpointMethodTypes["codeScanning"]["getAutofix"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a CodeQL database for a language in a repository. - * - * By default this endpoint returns JSON metadata about the CodeQL database. To - * download the CodeQL database binary content, set the `Accept` header of the request - * to [`application/zip`](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types), and make sure - * your HTTP client is configured to follow redirects or use the `Location` header - * to make a second request to get the redirect URL. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - getCodeqlDatabase: { - (params?: RestEndpointMethodTypes["codeScanning"]["getCodeqlDatabase"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a code scanning default setup configuration. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - getDefaultSetup: { - (params?: RestEndpointMethodTypes["codeScanning"]["getDefaultSetup"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets information about a SARIF upload, including the status and the URL of the analysis that was uploaded so that you can retrieve details of the analysis. For more information, see "[Get a code scanning analysis for a repository](/rest/code-scanning/code-scanning#get-a-code-scanning-analysis-for-a-repository)." - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - getSarif: { - (params?: RestEndpointMethodTypes["codeScanning"]["getSarif"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the summary of a CodeQL variant analysis. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - getVariantAnalysis: { - (params?: RestEndpointMethodTypes["codeScanning"]["getVariantAnalysis"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the analysis status of a repository in a CodeQL variant analysis. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - getVariantAnalysisRepoTask: { - (params?: RestEndpointMethodTypes["codeScanning"]["getVariantAnalysisRepoTask"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all instances of the specified code scanning alert. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - listAlertInstances: { - (params?: RestEndpointMethodTypes["codeScanning"]["listAlertInstances"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists code scanning alerts for the default branch for all eligible repositories in an organization. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` or `repo`s cope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - listAlertsForOrg: { - (params?: RestEndpointMethodTypes["codeScanning"]["listAlertsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all open code scanning alerts for the default branch (usually `main` - * or `master`). You must use an access token with the `security_events` scope to use - * this endpoint with private repos, the `public_repo` scope also grants permission to read - * security events on public repos only. GitHub Apps must have the `security_events` read - * permission to use this endpoint. - * - * The response includes a `most_recent_instance` object. - * This provides details of the most recent instance of this alert - * for the default branch or for the specified Git reference - * (if you used `ref` in the request). - */ - listAlertsForRepo: { - (params?: RestEndpointMethodTypes["codeScanning"]["listAlertsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all instances of the specified code scanning alert. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - * @deprecated octokit.rest.codeScanning.listAlertsInstances() has been renamed to octokit.rest.codeScanning.listAlertInstances() (2021-04-30) - */ - listAlertsInstances: { - (params?: RestEndpointMethodTypes["codeScanning"]["listAlertsInstances"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the CodeQL databases that are available in a repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - listCodeqlDatabases: { - (params?: RestEndpointMethodTypes["codeScanning"]["listCodeqlDatabases"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the details of all code scanning analyses for a repository, - * starting with the most recent. - * The response is paginated and you can use the `page` and `per_page` parameters - * to list the analyses you're interested in. - * By default 30 analyses are listed per page. - * - * The `rules_count` field in the response give the number of rules - * that were run in the analysis. - * For very old analyses this data is not available, - * and `0` is returned in this field. - * - * > [!WARNING] - * > **Closing down notice:** The `tool_name` field is closing down and will, in future, not be included in the response for this endpoint. The example response reflects this change. The tool name can now be found inside the `tool` field. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - listRecentAnalyses: { - (params?: RestEndpointMethodTypes["codeScanning"]["listRecentAnalyses"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the status of a single code scanning alert. - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - updateAlert: { - (params?: RestEndpointMethodTypes["codeScanning"]["updateAlert"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a code scanning default setup configuration. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - */ - updateDefaultSetup: { - (params?: RestEndpointMethodTypes["codeScanning"]["updateDefaultSetup"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. For troubleshooting information, see "[Troubleshooting SARIF uploads](https://docs.github.com/code-security/code-scanning/troubleshooting-sarif)." - * - * There are two places where you can upload code scanning results. - * - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see "[Triaging code scanning alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." - * - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see "[Managing code scanning alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)." - * - * You must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example: - * - * ``` - * gzip -c analysis-data.sarif | base64 -w0 - * ``` - * - * SARIF upload supports a maximum number of entries per the following data objects, and an analysis will be rejected if any of these objects is above its maximum value. For some objects, there are additional values over which the entries will be ignored while keeping the most important entries whenever applicable. - * To get the most out of your analysis when it includes data above the supported limits, try to optimize the analysis configuration. For example, for the CodeQL tool, identify and remove the most noisy queries. For more information, see "[SARIF results exceed one or more limits](https://docs.github.com/code-security/code-scanning/troubleshooting-sarif/results-exceed-limit)." - * - * - * | **SARIF data** | **Maximum values** | **Additional limits** | - * |----------------------------------|:------------------:|----------------------------------------------------------------------------------| - * | Runs per file | 20 | | - * | Results per run | 25,000 | Only the top 5,000 results will be included, prioritized by severity. | - * | Rules per run | 25,000 | | - * | Tool extensions per run | 100 | | - * | Thread Flow Locations per result | 10,000 | Only the top 1,000 Thread Flow Locations will be included, using prioritization. | - * | Location per result | 1,000 | Only 100 locations will be included. | - * | Tags per rule | 20 | Only 10 tags will be included. | - * - * - * The `202 Accepted` response includes an `id` value. - * You can use this ID to check the status of the upload by using it in the `/sarifs/{sarif_id}` endpoint. - * For more information, see "[Get information about a SARIF upload](/rest/code-scanning/code-scanning#get-information-about-a-sarif-upload)." - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint with private or public repositories, or the `public_repo` scope to use this endpoint with only public repositories. - * - * This endpoint is limited to 1,000 requests per hour for each user or app installation calling it. - */ - uploadSarif: { - (params?: RestEndpointMethodTypes["codeScanning"]["uploadSarif"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - codeSecurity: { - /** - * Attach a code security configuration to a set of repositories. If the repositories specified are already attached to a configuration, they will be re-attached to the provided configuration. - * - * If insufficient GHAS licenses are available to attach the configuration to a repository, only free features will be enabled. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - attachConfiguration: { - (params?: RestEndpointMethodTypes["codeSecurity"]["attachConfiguration"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Attaches an enterprise code security configuration to repositories. If the repositories specified are already attached to a configuration, they will be re-attached to the provided configuration. - * - * If insufficient GHAS licenses are available to attach the configuration to a repository, only free features will be enabled. - * - * The authenticated user must be an administrator for the enterprise to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - attachEnterpriseConfiguration: { - (params?: RestEndpointMethodTypes["codeSecurity"]["attachEnterpriseConfiguration"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a code security configuration in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - createConfiguration: { - (params?: RestEndpointMethodTypes["codeSecurity"]["createConfiguration"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a code security configuration in an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - createConfigurationForEnterprise: { - (params?: RestEndpointMethodTypes["codeSecurity"]["createConfigurationForEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes the desired code security configuration from an organization. - * Repositories attached to the configuration will retain their settings but will no longer be associated with - * the configuration. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - deleteConfiguration: { - (params?: RestEndpointMethodTypes["codeSecurity"]["deleteConfiguration"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a code security configuration from an enterprise. - * Repositories attached to the configuration will retain their settings but will no longer be associated with - * the configuration. - * - * The authenticated user must be an administrator for the enterprise to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - deleteConfigurationForEnterprise: { - (params?: RestEndpointMethodTypes["codeSecurity"]["deleteConfigurationForEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Detach code security configuration(s) from a set of repositories. - * Repositories will retain their settings but will no longer be associated with the configuration. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - detachConfiguration: { - (params?: RestEndpointMethodTypes["codeSecurity"]["detachConfiguration"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a code security configuration available in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - getConfiguration: { - (params?: RestEndpointMethodTypes["codeSecurity"]["getConfiguration"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the code security configuration that manages a repository's code security settings. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getConfigurationForRepository: { - (params?: RestEndpointMethodTypes["codeSecurity"]["getConfigurationForRepository"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all code security configurations available in an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:enterprise` scope to use this endpoint. - */ - getConfigurationsForEnterprise: { - (params?: RestEndpointMethodTypes["codeSecurity"]["getConfigurationsForEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all code security configurations available in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - getConfigurationsForOrg: { - (params?: RestEndpointMethodTypes["codeSecurity"]["getConfigurationsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the default code security configurations for an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - getDefaultConfigurations: { - (params?: RestEndpointMethodTypes["codeSecurity"]["getDefaultConfigurations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the default code security configurations for an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:enterprise` scope to use this endpoint. - */ - getDefaultConfigurationsForEnterprise: { - (params?: RestEndpointMethodTypes["codeSecurity"]["getDefaultConfigurationsForEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the repositories associated with a code security configuration in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - getRepositoriesForConfiguration: { - (params?: RestEndpointMethodTypes["codeSecurity"]["getRepositoriesForConfiguration"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the repositories associated with an enterprise code security configuration in an organization. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:enterprise` scope to use this endpoint. - */ - getRepositoriesForEnterpriseConfiguration: { - (params?: RestEndpointMethodTypes["codeSecurity"]["getRepositoriesForEnterpriseConfiguration"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a code security configuration available in an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:enterprise` scope to use this endpoint. - */ - getSingleConfigurationForEnterprise: { - (params?: RestEndpointMethodTypes["codeSecurity"]["getSingleConfigurationForEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets a code security configuration as a default to be applied to new repositories in your organization. - * - * This configuration will be applied to the matching repository type (all, none, public, private and internal) by default when they are created. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - setConfigurationAsDefault: { - (params?: RestEndpointMethodTypes["codeSecurity"]["setConfigurationAsDefault"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets a code security configuration as a default to be applied to new repositories in your enterprise. - * - * This configuration will be applied by default to the matching repository type when created, but only for organizations within the enterprise that do not already have a default code security configuration set. - * - * The authenticated user must be an administrator for the enterprise to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - setConfigurationAsDefaultForEnterprise: { - (params?: RestEndpointMethodTypes["codeSecurity"]["setConfigurationAsDefaultForEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a code security configuration in an organization. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - updateConfiguration: { - (params?: RestEndpointMethodTypes["codeSecurity"]["updateConfiguration"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a code security configuration in an enterprise. - * - * The authenticated user must be an administrator of the enterprise in order to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:enterprise` scope to use this endpoint. - */ - updateEnterpriseConfiguration: { - (params?: RestEndpointMethodTypes["codeSecurity"]["updateEnterpriseConfiguration"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - codesOfConduct: { - /** - * Returns array of all GitHub's codes of conduct. - */ - getAllCodesOfConduct: { - (params?: RestEndpointMethodTypes["codesOfConduct"]["getAllCodesOfConduct"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns information about the specified GitHub code of conduct. - */ - getConductCode: { - (params?: RestEndpointMethodTypes["codesOfConduct"]["getConductCode"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - codespaces: { - /** - * Adds a repository to the selected repositories for a user's development environment secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - addRepositoryForSecretForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["addRepositoryForSecretForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds a repository to an organization development environment secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - addSelectedRepoToOrgSecret: { - (params?: RestEndpointMethodTypes["codespaces"]["addSelectedRepoToOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Checks whether the permissions defined by a given devcontainer configuration have been accepted by the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - checkPermissionsForDevcontainer: { - (params?: RestEndpointMethodTypes["codespaces"]["checkPermissionsForDevcontainer"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the machine types a codespace can transition to use. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - codespaceMachinesForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["codespaceMachinesForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new codespace, owned by the authenticated user. - * - * This endpoint requires either a `repository_id` OR a `pull_request` but not both. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - createForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["createForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates or updates an organization development environment secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - createOrUpdateOrgSecret: { - (params?: RestEndpointMethodTypes["codespaces"]["createOrUpdateOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates or updates a repository development environment secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. The associated user must be a repository admin. - */ - createOrUpdateRepoSecret: { - (params?: RestEndpointMethodTypes["codespaces"]["createOrUpdateRepoSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates or updates a development environment secret for a user's codespace with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - createOrUpdateSecretForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["createOrUpdateSecretForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a codespace owned by the authenticated user for the specified pull request. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - createWithPrForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["createWithPrForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a codespace owned by the authenticated user in the specified repository. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - createWithRepoForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["createWithRepoForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - deleteForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["deleteForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - deleteFromOrganization: { - (params?: RestEndpointMethodTypes["codespaces"]["deleteFromOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes an organization development environment secret using the secret name. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - deleteOrgSecret: { - (params?: RestEndpointMethodTypes["codespaces"]["deleteOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a development environment secret in a repository using the secret name. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. The associated user must be a repository admin. - */ - deleteRepoSecret: { - (params?: RestEndpointMethodTypes["codespaces"]["deleteRepoSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a development environment secret from a user's codespaces using the secret name. Deleting the secret will remove access from all codespaces that were allowed to access the secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - deleteSecretForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["deleteSecretForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Triggers an export of the specified codespace and returns a URL and ID where the status of the export can be monitored. - * - * If changes cannot be pushed to the codespace's repository, they will be pushed to a new or previously-existing fork instead. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - exportForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["exportForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the codespaces that a member of an organization has for repositories in that organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - getCodespacesForUserInOrg: { - (params?: RestEndpointMethodTypes["codespaces"]["getCodespacesForUserInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets information about an export of a codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - getExportDetailsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["getExportDetailsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets information about a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - getForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["getForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a public key for an organization, which is required in order to encrypt secrets. You need to encrypt the value of a secret before you can create or update secrets. - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - getOrgPublicKey: { - (params?: RestEndpointMethodTypes["codespaces"]["getOrgPublicKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets an organization development environment secret without revealing its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - getOrgSecret: { - (params?: RestEndpointMethodTypes["codespaces"]["getOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - getPublicKeyForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["getPublicKeyForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. - * - * If the repository is private, OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getRepoPublicKey: { - (params?: RestEndpointMethodTypes["codespaces"]["getRepoPublicKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a single repository development environment secret without revealing its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getRepoSecret: { - (params?: RestEndpointMethodTypes["codespaces"]["getRepoSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a development environment secret available to a user's codespaces without revealing its encrypted value. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - getSecretForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["getSecretForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the devcontainer.json files associated with a specified repository and the authenticated user. These files - * specify launchpoint configurations for codespaces created within the repository. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - listDevcontainersInRepositoryForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["listDevcontainersInRepositoryForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the authenticated user's codespaces. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - listForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["listForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the codespaces associated to a specified organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - listInOrganization: { - (params?: RestEndpointMethodTypes["codespaces"]["listInOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the codespaces associated to a specified repository and the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - listInRepositoryForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["listInRepositoryForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all Codespaces development environment secrets available at the organization-level without revealing their encrypted - * values. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - listOrgSecrets: { - (params?: RestEndpointMethodTypes["codespaces"]["listOrgSecrets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all development environment secrets available in a repository without revealing their encrypted - * values. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - listRepoSecrets: { - (params?: RestEndpointMethodTypes["codespaces"]["listRepoSecrets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the repositories that have been granted the ability to use a user's development environment secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - listRepositoriesForSecretForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["listRepositoriesForSecretForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all development environment secrets available for a user's codespaces without revealing their - * encrypted values. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - listSecretsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["listSecretsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all repositories that have been selected when the `visibility` - * for repository access to a secret is set to `selected`. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - listSelectedReposForOrgSecret: { - (params?: RestEndpointMethodTypes["codespaces"]["listSelectedReposForOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the default attributes for codespaces created by the user with the repository. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - preFlightWithRepoForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["preFlightWithRepoForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Publishes an unpublished codespace, creating a new repository and assigning it to the codespace. - * - * The codespace's token is granted write permissions to the repository, allowing the user to push their changes. - * - * This will fail for a codespace that is already published, meaning it has an associated repository. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - publishForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["publishForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a repository from the selected repositories for a user's development environment secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - removeRepositoryForSecretForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["removeRepositoryForSecretForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a repository from an organization development environment secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - removeSelectedRepoFromOrgSecret: { - (params?: RestEndpointMethodTypes["codespaces"]["removeSelectedRepoFromOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the machine types available for a given repository based on its configuration. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - repoMachinesForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["repoMachinesForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Select the repositories that will use a user's development environment secret. - * - * The authenticated user must have Codespaces access to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` or `codespace:secrets` scope to use this endpoint. - */ - setRepositoriesForSecretForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["setRepositoriesForSecretForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Replaces all repositories for an organization development environment secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - setSelectedReposForOrgSecret: { - (params?: RestEndpointMethodTypes["codespaces"]["setSelectedReposForOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Starts a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - startForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["startForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Stops a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - stopForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["stopForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Stops a user's codespace. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - stopInOrganization: { - (params?: RestEndpointMethodTypes["codespaces"]["stopInOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a codespace owned by the authenticated user. Currently only the codespace's machine type and recent folders can be modified using this endpoint. - * - * If you specify a new machine type it will be applied the next time your codespace is started. - * - * OAuth app tokens and personal access tokens (classic) need the `codespace` scope to use this endpoint. - */ - updateForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["codespaces"]["updateForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - copilot: { - /** - * > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Purchases a GitHub Copilot seat for all users within each specified team. - * The organization will be billed for each seat based on the organization's Copilot plan. For more information about Copilot pricing, see "[About billing for GitHub Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-the-copilot-subscription-for-your-organization/about-billing-for-github-copilot-in-your-organization)." - * - * Only organization owners can purchase Copilot seats for their organization members. The organization must have a Copilot Business or Copilot Enterprise subscription and a configured suggestion matching policy. - * For more information about setting up a Copilot subscription, see "[Subscribing to Copilot for your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-the-copilot-subscription-for-your-organization/subscribing-to-copilot-for-your-organization)." - * For more information about setting a suggestion matching policy, see "[Managing policies for Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#policies-for-suggestion-matching)." - * - * The response contains the total number of new seats that were created and existing seats that were refreshed. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `admin:org` scopes to use this endpoint. - */ - addCopilotSeatsForTeams: { - (params?: RestEndpointMethodTypes["copilot"]["addCopilotSeatsForTeams"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Purchases a GitHub Copilot seat for each user specified. - * The organization will be billed for each seat based on the organization's Copilot plan. For more information about Copilot pricing, see "[About billing for GitHub Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-the-copilot-subscription-for-your-organization/about-billing-for-github-copilot-in-your-organization)." - * - * Only organization owners can purchase Copilot seats for their organization members. The organization must have a Copilot Business or Copilot Enterprise subscription and a configured suggestion matching policy. - * For more information about setting up a Copilot subscription, see "[Subscribing to Copilot for your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-the-copilot-subscription-for-your-organization/subscribing-to-copilot-for-your-organization)." - * For more information about setting a suggestion matching policy, see "[Managing policies for Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#policies-for-suggestion-matching)." - * - * The response contains the total number of new seats that were created and existing seats that were refreshed. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `admin:org` scopes to use this endpoint. - */ - addCopilotSeatsForUsers: { - (params?: RestEndpointMethodTypes["copilot"]["addCopilotSeatsForUsers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Sets seats for all members of each team specified to "pending cancellation". - * This will cause the members of the specified team(s) to lose access to GitHub Copilot at the end of the current billing cycle unless they retain access through another team. - * For more information about disabling access to Copilot, see "[Revoking access to Copilot for members of your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-access-to-github-copilot-in-your-organization/revoking-access-to-copilot-for-members-of-your-organization)." - * - * Only organization owners can cancel Copilot seats for their organization members. - * - * The response contains the total number of seats set to "pending cancellation". - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `admin:org` scopes to use this endpoint. - */ - cancelCopilotSeatAssignmentForTeams: { - (params?: RestEndpointMethodTypes["copilot"]["cancelCopilotSeatAssignmentForTeams"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Sets seats for all users specified to "pending cancellation". - * This will cause the specified users to lose access to GitHub Copilot at the end of the current billing cycle unless they retain access through team membership. - * For more information about disabling access to Copilot, see "[Revoking access to Copilot for members of your organization](https://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-access-to-github-copilot-in-your-organization/revoking-access-to-copilot-for-members-of-your-organization)." - * - * Only organization owners can cancel Copilot seats for their organization members. - * - * The response contains the total number of seats set to "pending cancellation". - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `admin:org` scopes to use this endpoint. - */ - cancelCopilotSeatAssignmentForUsers: { - (params?: RestEndpointMethodTypes["copilot"]["cancelCopilotSeatAssignmentForUsers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Use this endpoint to see a breakdown of aggregated metrics for various GitHub Copilot features. See the response schema tab for detailed metrics definitions. - * - * > [!NOTE] - * > This endpoint will only return results for a given day if the organization contained **five or more members with active Copilot licenses** on that day, as evaluated at the end of that day. - * - * The response contains metrics for up to 100 days prior. Metrics are processed once per day for the previous day, - * and the response will only include data up until yesterday. In order for an end user to be counted towards these metrics, - * they must have telemetry enabled in their IDE. - * - * To access this endpoint, the Copilot Metrics API access policy must be enabled for the organization. - * Only organization owners and owners and billing managers of the parent enterprise can view Copilot metrics. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot`, `read:org`, or `read:enterprise` scopes to use this endpoint. - */ - copilotMetricsForOrganization: { - (params?: RestEndpointMethodTypes["copilot"]["copilotMetricsForOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Use this endpoint to see a breakdown of aggregated metrics for various GitHub Copilot features. See the response schema tab for detailed metrics definitions. - * - * > [!NOTE] - * > This endpoint will only return results for a given day if the team had **five or more members with active Copilot licenses** on that day, as evaluated at the end of that day. - * - * The response contains metrics for up to 100 days prior. Metrics are processed once per day for the previous day, - * and the response will only include data up until yesterday. In order for an end user to be counted towards these metrics, - * they must have telemetry enabled in their IDE. - * - * To access this endpoint, the Copilot Metrics API access policy must be enabled for the organization containing the team within GitHub settings. - * Only organization owners for the organization that contains this team and owners and billing managers of the parent enterprise can view Copilot metrics for a team. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot`, `read:org`, or `read:enterprise` scopes to use this endpoint. - */ - copilotMetricsForTeam: { - (params?: RestEndpointMethodTypes["copilot"]["copilotMetricsForTeam"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Gets information about an organization's Copilot subscription, including seat breakdown - * and feature policies. To configure these settings, go to your organization's settings on GitHub.com. - * For more information, see "[Managing policies for Copilot in your organization](https://docs.github.com/copilot/managing-copilot/managing-policies-for-copilot-business-in-your-organization)." - * - * Only organization owners can view details about the organization's Copilot Business or Copilot Enterprise subscription. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `read:org` scopes to use this endpoint. - */ - getCopilotOrganizationDetails: { - (params?: RestEndpointMethodTypes["copilot"]["getCopilotOrganizationDetails"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Gets the GitHub Copilot seat details for a member of an organization who currently has access to GitHub Copilot. - * - * The seat object contains information about the user's most recent Copilot activity. Users must have telemetry enabled in their IDE for Copilot in the IDE activity to be reflected in `last_activity_at`. - * For more information about activity data, see [Metrics data properties for GitHub Copilot](https://docs.github.com/copilot/reference/metrics-data). - * - * Only organization owners can view Copilot seat assignment details for members of their organization. - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `read:org` scopes to use this endpoint. - */ - getCopilotSeatDetailsForUser: { - (params?: RestEndpointMethodTypes["copilot"]["getCopilotSeatDetailsForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > This endpoint is in public preview and is subject to change. - * - * Lists all Copilot seats for which an organization with a Copilot Business or Copilot Enterprise subscription is currently being billed. - * Only organization owners can view assigned seats. - * - * Each seat object contains information about the assigned user's most recent Copilot activity. Users must have telemetry enabled in their IDE for Copilot in the IDE activity to be reflected in `last_activity_at`. - * For more information about activity data, see [Metrics data properties for GitHub Copilot](https://docs.github.com/copilot/reference/metrics-data). - * - * OAuth app tokens and personal access tokens (classic) need either the `manage_billing:copilot` or `read:org` scopes to use this endpoint. - */ - listCopilotSeats: { - (params?: RestEndpointMethodTypes["copilot"]["listCopilotSeats"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - credentials: { - /** - * Submit a list of credentials to be revoked. This endpoint is intended to revoke credentials the caller does not own and may have found exposed on GitHub.com or elsewhere. It can also be used for credentials associated with an old user account that you no longer have access to. Credential owners will be notified of the revocation. - * - * This endpoint currently accepts the following credential types: - * - Personal access tokens (classic) - * - Fine-grained personal access tokens - * - * Revoked credentials may impact users on GitHub Free, Pro, & Team and GitHub Enterprise Cloud, and GitHub Enterprise Cloud with Enterprise Managed Users. - * GitHub cannot reactivate any credentials that have been revoked; new credentials will need to be generated. - * - * To prevent abuse, this API is limited to only 60 unauthenticated requests per hour and a max of 1000 tokens per API request. - * - * > [!NOTE] - * > Any authenticated requests will return a 403. - */ - revoke: { - (params?: RestEndpointMethodTypes["credentials"]["revoke"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - dependabot: { - /** - * Adds a repository to an organization secret when the `visibility` for - * repository access is set to `selected`. The visibility is set when you [Create or - * update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - addSelectedRepoToOrgSecret: { - (params?: RestEndpointMethodTypes["dependabot"]["addSelectedRepoToOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates or updates an organization secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access - * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization - * permission to use this endpoint. - * - * #### Example encrypting a secret using Node.js - * - * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. - * - * ``` - * const sodium = require('tweetsodium'); - * - * const key = "base64-encoded-public-key"; - * const value = "plain-text-secret"; - * - * // Convert the message and key to Uint8Array's (Buffer implements that interface) - * const messageBytes = Buffer.from(value); - * const keyBytes = Buffer.from(key, 'base64'); - * - * // Encrypt using LibSodium. - * const encryptedBytes = sodium.seal(messageBytes, keyBytes); - * - * // Base64 the encrypted secret - * const encrypted = Buffer.from(encryptedBytes).toString('base64'); - * - * console.log(encrypted); - * ``` - * - * - * #### Example encrypting a secret using Python - * - * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. - * - * ``` - * from base64 import b64encode - * from nacl import encoding, public - * - * def encrypt(public_key: str, secret_value: str) -> str: - * """Encrypt a Unicode string using the public key.""" - * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) - * sealed_box = public.SealedBox(public_key) - * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) - * return b64encode(encrypted).decode("utf-8") - * ``` - * - * #### Example encrypting a secret using C# - * - * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. - * - * ``` - * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); - * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); - * - * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); - * - * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); - * ``` - * - * #### Example encrypting a secret using Ruby - * - * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. - * - * ```ruby - * require "rbnacl" - * require "base64" - * - * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") - * public_key = RbNaCl::PublicKey.new(key) - * - * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) - * encrypted_secret = box.encrypt("my_secret") - * - * # Print the base64 encoded secret - * puts Base64.strict_encode64(encrypted_secret) - * ``` - */ - createOrUpdateOrgSecret: { - (params?: RestEndpointMethodTypes["dependabot"]["createOrUpdateOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates or updates a repository secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createOrUpdateRepoSecret: { - (params?: RestEndpointMethodTypes["dependabot"]["createOrUpdateRepoSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a secret in an organization using the secret name. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - deleteOrgSecret: { - (params?: RestEndpointMethodTypes["dependabot"]["deleteOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a secret in a repository using the secret name. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteRepoSecret: { - (params?: RestEndpointMethodTypes["dependabot"]["deleteRepoSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - getAlert: { - (params?: RestEndpointMethodTypes["dependabot"]["getAlert"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - getOrgPublicKey: { - (params?: RestEndpointMethodTypes["dependabot"]["getOrgPublicKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a single organization secret without revealing its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - getOrgSecret: { - (params?: RestEndpointMethodTypes["dependabot"]["getOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets your public key, which you need to encrypt secrets. You need to - * encrypt a secret before you can create or update secrets. Anyone with read access - * to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint if the repository is private. - */ - getRepoPublicKey: { - (params?: RestEndpointMethodTypes["dependabot"]["getRepoPublicKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a single repository secret without revealing its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getRepoSecret: { - (params?: RestEndpointMethodTypes["dependabot"]["getRepoSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists Dependabot alerts for repositories that are owned by the specified enterprise. - * - * The authenticated user must be a member of the enterprise to use this endpoint. - * - * Alerts are only returned for organizations in the enterprise for which you are an organization owner or a security manager. For more information about security managers, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. - */ - listAlertsForEnterprise: { - (params?: RestEndpointMethodTypes["dependabot"]["listAlertsForEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists Dependabot alerts for an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - listAlertsForOrg: { - (params?: RestEndpointMethodTypes["dependabot"]["listAlertsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - listAlertsForRepo: { - (params?: RestEndpointMethodTypes["dependabot"]["listAlertsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all secrets available in an organization without revealing their - * encrypted values. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - listOrgSecrets: { - (params?: RestEndpointMethodTypes["dependabot"]["listOrgSecrets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all secrets available in a repository without revealing their encrypted - * values. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - listRepoSecrets: { - (params?: RestEndpointMethodTypes["dependabot"]["listRepoSecrets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all repositories that have been selected when the `visibility` - * for repository access to a secret is set to `selected`. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - listSelectedReposForOrgSecret: { - (params?: RestEndpointMethodTypes["dependabot"]["listSelectedReposForOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a repository from an organization secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - removeSelectedRepoFromOrgSecret: { - (params?: RestEndpointMethodTypes["dependabot"]["removeSelectedRepoFromOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories that organization admins have allowed Dependabot to access when updating dependencies. - * > [!NOTE] - * > This operation supports both server-to-server and user-to-server access. - * Unauthorized users will not see the existence of this endpoint. - */ - repositoryAccessForOrg: { - (params?: RestEndpointMethodTypes["dependabot"]["repositoryAccessForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the default level of repository access Dependabot will have while performing an update. Available values are: - * - 'public' - Dependabot will only have access to public repositories, unless access is explicitly granted to non-public repositories. - * - 'internal' - Dependabot will only have access to public and internal repositories, unless access is explicitly granted to private repositories. - * - * Unauthorized users will not see the existence of this endpoint. - * - * This operation supports both server-to-server and user-to-server access. - */ - setRepositoryAccessDefaultLevel: { - (params?: RestEndpointMethodTypes["dependabot"]["setRepositoryAccessDefaultLevel"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Replaces all repositories for an organization secret when the `visibility` - * for repository access is set to `selected`. The visibility is set when you [Create - * or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - setSelectedReposForOrgSecret: { - (params?: RestEndpointMethodTypes["dependabot"]["setSelectedReposForOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The authenticated user must have access to security alerts for the repository to use this endpoint. For more information, see "[Granting access to security alerts](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#granting-access-to-security-alerts)." - * - * OAuth app tokens and personal access tokens (classic) need the `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - updateAlert: { - (params?: RestEndpointMethodTypes["dependabot"]["updateAlert"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates repositories according to the list of repositories that organization admins have given Dependabot access to when they've updated dependencies. - * - * > [!NOTE] - * > This operation supports both server-to-server and user-to-server access. - * Unauthorized users will not see the existence of this endpoint. - * - * **Example request body:** - * ```json - * { - * "repository_ids_to_add": [123, 456], - * "repository_ids_to_remove": [789] - * } - * ``` - */ - updateRepositoryAccessForOrg: { - (params?: RestEndpointMethodTypes["dependabot"]["updateRepositoryAccessForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - dependencyGraph: { - /** - * Create a new snapshot of a repository's dependencies. - * - * The authenticated user must have access to the repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createRepositorySnapshot: { - (params?: RestEndpointMethodTypes["dependencyGraph"]["createRepositorySnapshot"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the diff of the dependency changes between two commits of a repository, based on the changes to the dependency manifests made in those commits. - */ - diffRange: { - (params?: RestEndpointMethodTypes["dependencyGraph"]["diffRange"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Exports the software bill of materials (SBOM) for a repository in SPDX JSON format. - */ - exportSbom: { - (params?: RestEndpointMethodTypes["dependencyGraph"]["exportSbom"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - emojis: { - /** - * Lists all the emojis available to use on GitHub. - */ - get: { - (params?: RestEndpointMethodTypes["emojis"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - enterpriseTeamMemberships: { - /** - * Add a team member to an enterprise team. - */ - add: { - (params?: RestEndpointMethodTypes["enterpriseTeamMemberships"]["add"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Add multiple team members to an enterprise team. - */ - bulkAdd: { - (params?: RestEndpointMethodTypes["enterpriseTeamMemberships"]["bulkAdd"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Remove multiple team members from an enterprise team. - */ - bulkRemove: { - (params?: RestEndpointMethodTypes["enterpriseTeamMemberships"]["bulkRemove"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns whether the user is a member of the enterprise team. - */ - get: { - (params?: RestEndpointMethodTypes["enterpriseTeamMemberships"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all team members in an enterprise team. - */ - list: { - (params?: RestEndpointMethodTypes["enterpriseTeamMemberships"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Remove membership of a specific user from a particular team in an enterprise. - */ - remove: { - (params?: RestEndpointMethodTypes["enterpriseTeamMemberships"]["remove"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - enterpriseTeamOrganizations: { - /** - * Assign an enterprise team to an organization. - */ - add: { - (params?: RestEndpointMethodTypes["enterpriseTeamOrganizations"]["add"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Assign an enterprise team to multiple organizations. - */ - bulkAdd: { - (params?: RestEndpointMethodTypes["enterpriseTeamOrganizations"]["bulkAdd"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Unassign an enterprise team from multiple organizations. - */ - bulkRemove: { - (params?: RestEndpointMethodTypes["enterpriseTeamOrganizations"]["bulkRemove"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Unassign an enterprise team from an organization. - */ - delete: { - (params?: RestEndpointMethodTypes["enterpriseTeamOrganizations"]["delete"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Check if an enterprise team is assigned to an organization - */ - getAssignment: { - (params?: RestEndpointMethodTypes["enterpriseTeamOrganizations"]["getAssignment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get all organizations assigned to an enterprise team - */ - getAssignments: { - (params?: RestEndpointMethodTypes["enterpriseTeamOrganizations"]["getAssignments"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - enterpriseTeams: { - /** - * To create an enterprise team, the authenticated user must be an owner of the enterprise. - */ - create: { - (params?: RestEndpointMethodTypes["enterpriseTeams"]["create"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To delete an enterprise team, the authenticated user must be an enterprise owner. - * - * If you are an enterprise owner, deleting an enterprise team will delete all of its IdP mappings as well. - */ - delete: { - (params?: RestEndpointMethodTypes["enterpriseTeams"]["delete"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a team using the team's slug. To create the slug, GitHub replaces special characters in the name string, changes all words to lowercase, and replaces spaces with a `-` separator and adds the "ent:" prefix. For example, "My TEam Näme" would become `ent:my-team-name`. - */ - get: { - (params?: RestEndpointMethodTypes["enterpriseTeams"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all teams in the enterprise for the authenticated user - */ - list: { - (params?: RestEndpointMethodTypes["enterpriseTeams"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To edit a team, the authenticated user must be an enterprise owner. - */ - update: { - (params?: RestEndpointMethodTypes["enterpriseTeams"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - gists: { - checkIsStarred: { - (params?: RestEndpointMethodTypes["gists"]["checkIsStarred"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Allows you to add a new gist with one or more files. - * - * > [!NOTE] - * > Don't name your files "gistfile" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally. - */ - create: { - (params?: RestEndpointMethodTypes["gists"]["create"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a comment on a gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - createComment: { - (params?: RestEndpointMethodTypes["gists"]["createComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - delete: { - (params?: RestEndpointMethodTypes["gists"]["delete"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteComment: { - (params?: RestEndpointMethodTypes["gists"]["deleteComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - fork: { - (params?: RestEndpointMethodTypes["gists"]["fork"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specified gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - get: { - (params?: RestEndpointMethodTypes["gists"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a comment on a gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - getComment: { - (params?: RestEndpointMethodTypes["gists"]["getComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specified gist revision. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - getRevision: { - (params?: RestEndpointMethodTypes["gists"]["getRevision"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the authenticated user's gists or if called anonymously, this endpoint returns all public gists: - */ - list: { - (params?: RestEndpointMethodTypes["gists"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the comments on a gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - listComments: { - (params?: RestEndpointMethodTypes["gists"]["listComments"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listCommits: { - (params?: RestEndpointMethodTypes["gists"]["listCommits"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists public gists for the specified user: - */ - listForUser: { - (params?: RestEndpointMethodTypes["gists"]["listForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listForks: { - (params?: RestEndpointMethodTypes["gists"]["listForks"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List public gists sorted by most recently updated to least recently updated. - * - * Note: With [pagination](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page. - */ - listPublic: { - (params?: RestEndpointMethodTypes["gists"]["listPublic"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the authenticated user's starred gists: - */ - listStarred: { - (params?: RestEndpointMethodTypes["gists"]["listStarred"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - star: { - (params?: RestEndpointMethodTypes["gists"]["star"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - unstar: { - (params?: RestEndpointMethodTypes["gists"]["unstar"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Allows you to update a gist's description and to update, delete, or rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged. - */ - update: { - (params?: RestEndpointMethodTypes["gists"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a comment on a gist. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.base64+json`**: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences. - */ - updateComment: { - (params?: RestEndpointMethodTypes["gists"]["updateComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - git: { - createBlob: { - (params?: RestEndpointMethodTypes["git"]["createBlob"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new Git [commit object](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects). - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - createCommit: { - (params?: RestEndpointMethodTypes["git"]["createCommit"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches. - */ - createRef: { - (params?: RestEndpointMethodTypes["git"]["createRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://docs.github.com/rest/git/refs#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://docs.github.com/rest/git/refs#create-a-reference) the tag reference - this call would be unnecessary. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - createTag: { - (params?: RestEndpointMethodTypes["git"]["createTag"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure. - * - * If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "[Create a commit](https://docs.github.com/rest/git/commits#create-a-commit)" and "[Update a reference](https://docs.github.com/rest/git/refs#update-a-reference)." - * - * Returns an error if you try to delete a file that does not exist. - */ - createTree: { - (params?: RestEndpointMethodTypes["git"]["createTree"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes the provided reference. - */ - deleteRef: { - (params?: RestEndpointMethodTypes["git"]["deleteRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The `content` in the response will always be Base64 encoded. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw blob data. - * - **`application/vnd.github+json`**: Returns a JSON representation of the blob with `content` as a base64 encoded string. This is the default if no media type is specified. - * - * **Note** This endpoint supports blobs up to 100 megabytes in size. - */ - getBlob: { - (params?: RestEndpointMethodTypes["git"]["getBlob"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a Git [commit object](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects). - * - * To get the contents of a commit, see "[Get a commit](/rest/commits/commits#get-a-commit)." - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - getCommit: { - (params?: RestEndpointMethodTypes["git"]["getCommit"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned. - * - * > [!NOTE] - * > You need to explicitly [request a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - */ - getRef: { - (params?: RestEndpointMethodTypes["git"]["getRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - getTag: { - (params?: RestEndpointMethodTypes["git"]["getTag"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a single tree using the SHA1 value or ref name for that tree. - * - * If `truncated` is `true` in the response then the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time. - * - * > [!NOTE] - * > The limit for the `tree` array is 100,000 entries with a maximum size of 7 MB when using the `recursive` parameter. - */ - getTree: { - (params?: RestEndpointMethodTypes["git"]["getTree"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array. - * - * When you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`. - * - * > [!NOTE] - * > You need to explicitly [request a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - * - * If you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`. - */ - listMatchingRefs: { - (params?: RestEndpointMethodTypes["git"]["listMatchingRefs"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the provided reference to point to a new SHA. For more information, see "[Git References](https://git-scm.com/book/en/v2/Git-Internals-Git-References)" in the Git documentation. - */ - updateRef: { - (params?: RestEndpointMethodTypes["git"]["updateRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - gitignore: { - /** - * List all templates available to pass as an option when [creating a repository](https://docs.github.com/rest/repos/repos#create-a-repository-for-the-authenticated-user). - */ - getAllTemplates: { - (params?: RestEndpointMethodTypes["gitignore"]["getAllTemplates"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the content of a gitignore template. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw .gitignore contents. - */ - getTemplate: { - (params?: RestEndpointMethodTypes["gitignore"]["getTemplate"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - hostedCompute: { - /** - * Creates a hosted compute network configuration for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `write:network_configurations` scope to use this endpoint. - */ - createNetworkConfigurationForOrg: { - (params?: RestEndpointMethodTypes["hostedCompute"]["createNetworkConfigurationForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a hosted compute network configuration from an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `write:network_configurations` scope to use this endpoint. - */ - deleteNetworkConfigurationFromOrg: { - (params?: RestEndpointMethodTypes["hostedCompute"]["deleteNetworkConfigurationFromOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a hosted compute network configuration configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:network_configurations` scope to use this endpoint. - */ - getNetworkConfigurationForOrg: { - (params?: RestEndpointMethodTypes["hostedCompute"]["getNetworkConfigurationForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a hosted compute network settings resource configured for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:network_configurations` scope to use this endpoint. - */ - getNetworkSettingsForOrg: { - (params?: RestEndpointMethodTypes["hostedCompute"]["getNetworkSettingsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all hosted compute network configurations configured in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:network_configurations` scope to use this endpoint. - */ - listNetworkConfigurationsForOrg: { - (params?: RestEndpointMethodTypes["hostedCompute"]["listNetworkConfigurationsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a hosted compute network configuration for an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `write:network_configurations` scope to use this endpoint. - */ - updateNetworkConfigurationForOrg: { - (params?: RestEndpointMethodTypes["hostedCompute"]["updateNetworkConfigurationForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - interactions: { - /** - * Shows which type of GitHub user can interact with your public repositories and when the restriction expires. - */ - getRestrictionsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response. - */ - getRestrictionsForOrg: { - (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Shows which type of GitHub user can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response. - */ - getRestrictionsForRepo: { - (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Shows which type of GitHub user can interact with your public repositories and when the restriction expires. - * @deprecated octokit.rest.interactions.getRestrictionsForYourPublicRepos() has been renamed to octokit.rest.interactions.getRestrictionsForAuthenticatedUser() (2021-02-02) - */ - getRestrictionsForYourPublicRepos: { - (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForYourPublicRepos"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes any interaction restrictions from your public repositories. - */ - removeRestrictionsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions. - */ - removeRestrictionsForOrg: { - (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions. If the interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. - */ - removeRestrictionsForRepo: { - (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes any interaction restrictions from your public repositories. - * @deprecated octokit.rest.interactions.removeRestrictionsForYourPublicRepos() has been renamed to octokit.rest.interactions.removeRestrictionsForAuthenticatedUser() (2021-02-02) - */ - removeRestrictionsForYourPublicRepos: { - (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForYourPublicRepos"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user. - */ - setRestrictionsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Temporarily restricts interactions to a certain type of GitHub user in any public repository in the given organization. You must be an organization owner to set these restrictions. Setting the interaction limit at the organization level will overwrite any interaction limits that are set for individual repositories owned by the organization. - */ - setRestrictionsForOrg: { - (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Temporarily restricts interactions to a certain type of GitHub user within the given repository. You must have owner or admin access to set these restrictions. If an interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. - */ - setRestrictionsForRepo: { - (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user. - * @deprecated octokit.rest.interactions.setRestrictionsForYourPublicRepos() has been renamed to octokit.rest.interactions.setRestrictionsForAuthenticatedUser() (2021-02-02) - */ - setRestrictionsForYourPublicRepos: { - (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForYourPublicRepos"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - issues: { - /** - * Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced. - */ - addAssignees: { - (params?: RestEndpointMethodTypes["issues"]["addAssignees"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to add a 'blocked by' relationship to an issue. - * - * Creating content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see [Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits) - * and [Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api). - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - addBlockedByDependency: { - (params?: RestEndpointMethodTypes["issues"]["addBlockedByDependency"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds labels to an issue. If you provide an empty array of labels, all labels are removed from the issue. - */ - addLabels: { - (params?: RestEndpointMethodTypes["issues"]["addLabels"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to add sub-issues to issues. - * - * Creating content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - addSubIssue: { - (params?: RestEndpointMethodTypes["issues"]["addSubIssue"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Checks if a user has permission to be assigned to an issue in this repository. - * - * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned. - * - * Otherwise a `404` status code is returned. - */ - checkUserCanBeAssigned: { - (params?: RestEndpointMethodTypes["issues"]["checkUserCanBeAssigned"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Checks if a user has permission to be assigned to a specific issue. - * - * If the `assignee` can be assigned to this issue, a `204` status code with no content is returned. - * - * Otherwise a `404` status code is returned. - */ - checkUserCanBeAssignedToIssue: { - (params?: RestEndpointMethodTypes["issues"]["checkUserCanBeAssignedToIssue"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://docs.github.com/articles/disabling-issues/), the API returns a `410 Gone` status. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - create: { - (params?: RestEndpointMethodTypes["issues"]["create"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to create comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). - * Creating content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - createComment: { - (params?: RestEndpointMethodTypes["issues"]["createComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a label for the specified repository with the given name and color. The name and color parameters are required. The color must be a valid [hexadecimal color code](http://www.color-hex.com/). - */ - createLabel: { - (params?: RestEndpointMethodTypes["issues"]["createLabel"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a milestone. - */ - createMilestone: { - (params?: RestEndpointMethodTypes["issues"]["createMilestone"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to delete comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - */ - deleteComment: { - (params?: RestEndpointMethodTypes["issues"]["deleteComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a label using the given label name. - */ - deleteLabel: { - (params?: RestEndpointMethodTypes["issues"]["deleteLabel"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a milestone using the given milestone number. - */ - deleteMilestone: { - (params?: RestEndpointMethodTypes["issues"]["deleteMilestone"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The API returns a [`301 Moved Permanently` status](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api#follow-redirects) if the issue was - * [transferred](https://docs.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If - * the issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API - * returns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read - * access, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe - * to the [`issues`](https://docs.github.com/webhooks/event-payloads/#issues) webhook. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - get: { - (params?: RestEndpointMethodTypes["issues"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to get comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - getComment: { - (params?: RestEndpointMethodTypes["issues"]["getComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a single event by the event id. - */ - getEvent: { - (params?: RestEndpointMethodTypes["issues"]["getEvent"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a label using the given name. - */ - getLabel: { - (params?: RestEndpointMethodTypes["issues"]["getLabel"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a milestone using the given milestone number. - */ - getMilestone: { - (params?: RestEndpointMethodTypes["issues"]["getMilestone"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to get the parent issue of a sub-issue. - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - getParent: { - (params?: RestEndpointMethodTypes["issues"]["getParent"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List issues assigned to the authenticated user across all visible repositories including owned repositories, member - * repositories, and organization repositories. You can use the `filter` query parameter to fetch issues that are not - * necessarily assigned to you. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - list: { - (params?: RestEndpointMethodTypes["issues"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the [available assignees](https://docs.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository. - */ - listAssignees: { - (params?: RestEndpointMethodTypes["issues"]["listAssignees"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to list comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - * - * Issue comments are ordered by ascending ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listComments: { - (params?: RestEndpointMethodTypes["issues"]["listComments"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to list comments on issues and pull requests for a repository. Every pull request is an issue, but not every issue is a pull request. - * - * By default, issue comments are ordered by ascending ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listCommentsForRepo: { - (params?: RestEndpointMethodTypes["issues"]["listCommentsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to list the dependencies an issue is blocked by. - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listDependenciesBlockedBy: { - (params?: RestEndpointMethodTypes["issues"]["listDependenciesBlockedBy"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to list the dependencies an issue is blocking. - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listDependenciesBlocking: { - (params?: RestEndpointMethodTypes["issues"]["listDependenciesBlocking"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all events for an issue. - */ - listEvents: { - (params?: RestEndpointMethodTypes["issues"]["listEvents"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists events for a repository. - */ - listEventsForRepo: { - (params?: RestEndpointMethodTypes["issues"]["listEventsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all timeline events for an issue. - */ - listEventsForTimeline: { - (params?: RestEndpointMethodTypes["issues"]["listEventsForTimeline"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List issues across owned and member repositories assigned to the authenticated user. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["issues"]["listForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List issues in an organization assigned to the authenticated user. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listForOrg: { - (params?: RestEndpointMethodTypes["issues"]["listForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List issues in a repository. Only open issues will be listed. - * - * > [!NOTE] - * > GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listForRepo: { - (params?: RestEndpointMethodTypes["issues"]["listForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists labels for issues in a milestone. - */ - listLabelsForMilestone: { - (params?: RestEndpointMethodTypes["issues"]["listLabelsForMilestone"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all labels for a repository. - */ - listLabelsForRepo: { - (params?: RestEndpointMethodTypes["issues"]["listLabelsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all labels for an issue. - */ - listLabelsOnIssue: { - (params?: RestEndpointMethodTypes["issues"]["listLabelsOnIssue"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists milestones for a repository. - */ - listMilestones: { - (params?: RestEndpointMethodTypes["issues"]["listMilestones"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to list the sub-issues on an issue. - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listSubIssues: { - (params?: RestEndpointMethodTypes["issues"]["listSubIssues"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access can lock an issue or pull request's conversation. - * - * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - lock: { - (params?: RestEndpointMethodTypes["issues"]["lock"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes all labels from an issue. - */ - removeAllLabels: { - (params?: RestEndpointMethodTypes["issues"]["removeAllLabels"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes one or more assignees from an issue. - */ - removeAssignees: { - (params?: RestEndpointMethodTypes["issues"]["removeAssignees"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to remove a dependency that an issue is blocked by. - * - * Removing content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see [Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits) - * and [Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api). - * - * This endpoint supports the following custom media types. For more information, see [Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * - **`application/vnd.github.raw+json`**: Returns the raw Markdown body. Response will include `body`. This is the default if you do not pass a specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the Markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's Markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - removeDependencyBlockedBy: { - (params?: RestEndpointMethodTypes["issues"]["removeDependencyBlockedBy"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist. - */ - removeLabel: { - (params?: RestEndpointMethodTypes["issues"]["removeLabel"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to remove a sub-issue from an issue. - * Removing content too quickly using this endpoint may result in secondary rate limiting. - * For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass a specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - removeSubIssue: { - (params?: RestEndpointMethodTypes["issues"]["removeSubIssue"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to reprioritize a sub-issue to a different position in the parent list. - */ - reprioritizeSubIssue: { - (params?: RestEndpointMethodTypes["issues"]["reprioritizeSubIssue"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes any previous labels and sets the new labels for an issue. - */ - setLabels: { - (params?: RestEndpointMethodTypes["issues"]["setLabels"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access can unlock an issue's conversation. - */ - unlock: { - (params?: RestEndpointMethodTypes["issues"]["unlock"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Issue owners and users with push access or Triage role can edit an issue. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - update: { - (params?: RestEndpointMethodTypes["issues"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use the REST API to update comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - updateComment: { - (params?: RestEndpointMethodTypes["issues"]["updateComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a label using the given label name. - */ - updateLabel: { - (params?: RestEndpointMethodTypes["issues"]["updateLabel"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - updateMilestone: { - (params?: RestEndpointMethodTypes["issues"]["updateMilestone"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - licenses: { - /** - * Gets information about a specific license. For more information, see "[Licensing a repository ](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)." - */ - get: { - (params?: RestEndpointMethodTypes["licenses"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the most commonly used licenses on GitHub. For more information, see "[Licensing a repository ](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)." - */ - getAllCommonlyUsed: { - (params?: RestEndpointMethodTypes["licenses"]["getAllCommonlyUsed"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This method returns the contents of the repository's license file, if one is detected. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw contents of the license. - * - **`application/vnd.github.html+json`**: Returns the license contents in HTML. Markup languages are rendered to HTML using GitHub's open-source [Markup library](https://github.com/github/markup). - */ - getForRepo: { - (params?: RestEndpointMethodTypes["licenses"]["getForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - markdown: { - /** - * Depending on what is rendered in the Markdown, you may need to provide additional token scopes for labels, such as `issues:read` or `pull_requests:read`. - */ - render: { - (params?: RestEndpointMethodTypes["markdown"]["render"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less. - */ - renderRaw: { - (params?: RestEndpointMethodTypes["markdown"]["renderRaw"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - meta: { - /** - * Returns meta information about GitHub, including a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://docs.github.com/articles/about-github-s-ip-addresses/)." - * - * The API's response also includes a list of GitHub's domain names. - * - * The values shown in the documentation's response are example values. You must always query the API directly to get the latest values. - * - * > [!NOTE] - * > This endpoint returns both IPv4 and IPv6 addresses. However, not all features support IPv6. You should refer to the specific documentation for each feature to determine if IPv6 is supported. - */ - get: { - (params?: RestEndpointMethodTypes["meta"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get all supported GitHub API versions. - */ - getAllVersions: { - (params?: RestEndpointMethodTypes["meta"]["getAllVersions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the octocat as ASCII art - */ - getOctocat: { - (params?: RestEndpointMethodTypes["meta"]["getOctocat"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a random sentence from the Zen of GitHub - */ - getZen: { - (params?: RestEndpointMethodTypes["meta"]["getZen"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get Hypermedia links to resources accessible in GitHub's REST API - */ - root: { - (params?: RestEndpointMethodTypes["meta"]["root"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - migrations: { - /** - * Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [List user migrations](https://docs.github.com/rest/migrations/users#list-user-migrations) and [Get a user migration status](https://docs.github.com/rest/migrations/users#get-a-user-migration-status) endpoints, will continue to be available even after an archive is deleted. - */ - deleteArchiveForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["migrations"]["deleteArchiveForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a previous migration archive. Migration archives are automatically deleted after seven days. - */ - deleteArchiveForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["deleteArchiveForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Fetches the URL to a migration archive. - */ - downloadArchiveForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["downloadArchiveForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects: - * - * * attachments - * * bases - * * commit\_comments - * * issue\_comments - * * issue\_events - * * issues - * * milestones - * * organizations - * * projects - * * protected\_branches - * * pull\_request\_reviews - * * pull\_requests - * * releases - * * repositories - * * review\_comments - * * schema - * * users - * - * The archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data. - */ - getArchiveForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["migrations"]["getArchiveForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values: - * - * * `pending` - the migration hasn't started yet. - * * `exporting` - the migration is in progress. - * * `exported` - the migration finished successfully. - * * `failed` - the migration failed. - * - * Once the migration has been `exported` you can [download the migration archive](https://docs.github.com/rest/migrations/users#download-a-user-migration-archive). - */ - getStatusForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["migrations"]["getStatusForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Fetches the status of a migration. - * - * The `state` of a migration can be one of the following values: - * - * * `pending`, which means the migration hasn't started yet. - * * `exporting`, which means the migration is in progress. - * * `exported`, which means the migration finished successfully. - * * `failed`, which means the migration failed. - */ - getStatusForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["getStatusForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all migrations a user has started. - */ - listForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["migrations"]["listForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the most recent migrations, including both exports (which can be started through the REST API) and imports (which cannot be started using the REST API). - * - * A list of `repositories` is only returned for export migrations. - */ - listForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["listForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all the repositories for this user migration. - */ - listReposForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["migrations"]["listReposForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all the repositories for this organization migration. - */ - listReposForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["listReposForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all the repositories for this user migration. - * @deprecated octokit.rest.migrations.listReposForUser() has been renamed to octokit.rest.migrations.listReposForAuthenticatedUser() (2021-10-05) - */ - listReposForUser: { - (params?: RestEndpointMethodTypes["migrations"]["listReposForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Initiates the generation of a user migration archive. - */ - startForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["migrations"]["startForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Initiates the generation of a migration archive. - */ - startForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["startForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Unlocks a repository. You can lock repositories when you [start a user migration](https://docs.github.com/rest/migrations/users#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://docs.github.com/rest/repos/repos#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked. - */ - unlockRepoForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["migrations"]["unlockRepoForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://docs.github.com/rest/repos/repos#delete-a-repository) when the migration is complete and you no longer need the source data. - */ - unlockRepoForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["unlockRepoForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - oidc: { - /** - * Gets the customization template for an OpenID Connect (OIDC) subject claim. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - getOidcCustomSubTemplateForOrg: { - (params?: RestEndpointMethodTypes["oidc"]["getOidcCustomSubTemplateForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates or updates the customization template for an OpenID Connect (OIDC) subject claim. - * - * OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - updateOidcCustomSubTemplateForOrg: { - (params?: RestEndpointMethodTypes["oidc"]["updateOidcCustomSubTemplateForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - orgs: { - /** - * > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed starting January 1, 2026. Please use the "[Organization Roles](https://docs.github.com/rest/orgs/organization-roles)" endpoints instead. - * @deprecated octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team - */ - addSecurityManagerTeam: { - (params?: RestEndpointMethodTypes["orgs"]["addSecurityManagerTeam"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Assigns an organization role to a team in an organization. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - assignTeamToOrgRole: { - (params?: RestEndpointMethodTypes["orgs"]["assignTeamToOrgRole"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Assigns an organization role to a member of an organization. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - assignUserToOrgRole: { - (params?: RestEndpointMethodTypes["orgs"]["assignUserToOrgRole"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Blocks the given user on behalf of the specified organization and returns a 204. If the organization cannot block the given user a 422 is returned. - */ - blockUser: { - (params?: RestEndpointMethodTypes["orgs"]["blockUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Cancel an organization invitation. In order to cancel an organization invitation, the authenticated user must be an organization owner. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). - */ - cancelInvitation: { - (params?: RestEndpointMethodTypes["orgs"]["cancelInvitation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a 204 if the given user is blocked by the given organization. Returns a 404 if the organization is not blocking the user, or if the user account has been identified as spam by GitHub. - */ - checkBlockedUser: { - (params?: RestEndpointMethodTypes["orgs"]["checkBlockedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Check if a user is, publicly or privately, a member of the organization. - */ - checkMembershipForUser: { - (params?: RestEndpointMethodTypes["orgs"]["checkMembershipForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Check if the provided user is a public member of the organization. - */ - checkPublicMembershipForUser: { - (params?: RestEndpointMethodTypes["orgs"]["checkPublicMembershipForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see "[Converting an organization member to an outside collaborator](https://docs.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)". Converting an organization member to an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)." - */ - convertMemberToOutsideCollaborator: { - (params?: RestEndpointMethodTypes["orgs"]["convertMemberToOutsideCollaborator"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create metadata storage records for artifacts associated with an organization. - * This endpoint will create a new artifact storage record on behalf of any artifact matching the provided digest and - * associated with a repository owned by the organization. - */ - createArtifactStorageRecord: { - (params?: RestEndpointMethodTypes["orgs"]["createArtifactStorageRecord"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - */ - createInvitation: { - (params?: RestEndpointMethodTypes["orgs"]["createInvitation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a new issue type for an organization. - * - * You can find out more about issue types in [Managing issue types in an organization](https://docs.github.com/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization). - * - * To use this endpoint, the authenticated user must be an administrator for the organization. OAuth app tokens and - * personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - createIssueType: { - (params?: RestEndpointMethodTypes["orgs"]["createIssueType"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a hook that posts payloads in JSON format. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or - * edit webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - createWebhook: { - (params?: RestEndpointMethodTypes["orgs"]["createWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create new or update existing custom property values for an organization. - * To remove a custom property value from an organization, set the property value to `null`. - * - * The organization must belong to an enterprise. - * - * Access requirements: - * - Organization admins - * - OAuth tokens and personal access tokens (classic) with the `admin:org` scope - * - Actors with the organization-level "edit custom properties for an organization" fine-grained permission - */ - customPropertiesForOrgsCreateOrUpdateOrganizationValues: { - (params?: RestEndpointMethodTypes["orgs"]["customPropertiesForOrgsCreateOrUpdateOrganizationValues"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets all custom property values that are set for an organization. - * - * The organization must belong to an enterprise. - * - * Access requirements: - * - Organization admins - * - OAuth tokens and personal access tokens (classic) with the `read:org` scope - * - Actors with the organization-level "read custom properties for an organization" fine-grained permission or above - */ - customPropertiesForOrgsGetOrganizationValues: { - (params?: RestEndpointMethodTypes["orgs"]["customPropertiesForOrgsGetOrganizationValues"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new or updates an existing custom property that is defined for an organization. - * - * To use this endpoint, the authenticated user must be one of: - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permission of `custom_properties_org_definitions_manager` in the organization. - */ - customPropertiesForReposCreateOrUpdateOrganizationDefinition: { - (params?: RestEndpointMethodTypes["orgs"]["customPropertiesForReposCreateOrUpdateOrganizationDefinition"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates new or updates existing custom properties defined for an organization in a batch. - * - * If the property already exists, the existing property will be replaced with the new values. - * Missing optional values will fall back to default values, previous values will be overwritten. - * E.g. if a property exists with `values_editable_by: org_and_repo_actors` and it's updated without specifying `values_editable_by`, it will be updated to default value `org_actors`. - * - * To use this endpoint, the authenticated user must be one of: - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permission of `custom_properties_org_definitions_manager` in the organization. - */ - customPropertiesForReposCreateOrUpdateOrganizationDefinitions: { - (params?: RestEndpointMethodTypes["orgs"]["customPropertiesForReposCreateOrUpdateOrganizationDefinitions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create new or update existing custom property values for repositories in a batch that belong to an organization. - * Each target repository will have its custom property values updated to match the values provided in the request. - * - * A maximum of 30 repositories can be updated in a single request. - * - * Using a value of `null` for a custom property will remove or 'unset' the property value from the repository. - * - * To use this endpoint, the authenticated user must be one of: - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permission of `custom_properties_org_values_editor` in the organization. - */ - customPropertiesForReposCreateOrUpdateOrganizationValues: { - (params?: RestEndpointMethodTypes["orgs"]["customPropertiesForReposCreateOrUpdateOrganizationValues"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a custom property that is defined for an organization. - * - * To use this endpoint, the authenticated user must be one of: - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permission of `custom_properties_org_definitions_manager` in the organization. - */ - customPropertiesForReposDeleteOrganizationDefinition: { - (params?: RestEndpointMethodTypes["orgs"]["customPropertiesForReposDeleteOrganizationDefinition"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a custom property that is defined for an organization. - * Organization members can read these properties. - */ - customPropertiesForReposGetOrganizationDefinition: { - (params?: RestEndpointMethodTypes["orgs"]["customPropertiesForReposGetOrganizationDefinition"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets all custom properties defined for an organization. - * Organization members can read these properties. - */ - customPropertiesForReposGetOrganizationDefinitions: { - (params?: RestEndpointMethodTypes["orgs"]["customPropertiesForReposGetOrganizationDefinitions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists organization repositories with all of their custom property values. - * Organization members can read these properties. - */ - customPropertiesForReposGetOrganizationValues: { - (params?: RestEndpointMethodTypes["orgs"]["customPropertiesForReposGetOrganizationValues"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes an organization and all its repositories. - * - * The organization login will be unavailable for 90 days after deletion. - * - * Please review the Terms of Service regarding account deletion before using this endpoint: - * - * https://docs.github.com/site-policy/github-terms/github-terms-of-service - */ - delete: { - (params?: RestEndpointMethodTypes["orgs"]["delete"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete artifact attestations in bulk by either subject digests or unique ID. - */ - deleteAttestationsBulk: { - (params?: RestEndpointMethodTypes["orgs"]["deleteAttestationsBulk"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete an artifact attestation by unique ID that is associated with a repository owned by an org. - */ - deleteAttestationsById: { - (params?: RestEndpointMethodTypes["orgs"]["deleteAttestationsById"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete an artifact attestation by subject digest. - */ - deleteAttestationsBySubjectDigest: { - (params?: RestEndpointMethodTypes["orgs"]["deleteAttestationsBySubjectDigest"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes an issue type for an organization. - * - * You can find out more about issue types in [Managing issue types in an organization](https://docs.github.com/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization). - * - * To use this endpoint, the authenticated user must be an administrator for the organization. OAuth app tokens and - * personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - deleteIssueType: { - (params?: RestEndpointMethodTypes["orgs"]["deleteIssueType"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete a webhook for an organization. - * - * The authenticated user must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - deleteWebhook: { - (params?: RestEndpointMethodTypes["orgs"]["deleteWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a repository from the list of selected repositories that are enforced for immutable releases in an organization. To use this endpoint, the organization immutable releases policy for `enforced_repositories` must be configured to `selected`. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - disableSelectedRepositoryImmutableReleasesOrganization: { - (params?: RestEndpointMethodTypes["orgs"]["disableSelectedRepositoryImmutableReleasesOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds a repository to the list of selected repositories that are enforced for immutable releases in an organization. To use this endpoint, the organization immutable releases policy for `enforced_repositories` must be configured to `selected`. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - enableSelectedRepositoryImmutableReleasesOrganization: { - (params?: RestEndpointMethodTypes["orgs"]["enableSelectedRepositoryImmutableReleasesOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets information about an organization. - * - * When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, outside collaborators, guest collaborators, repository collaborators, or everyone with access to any repository within the organization to enable [two-factor authentication](https://docs.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/). - * - * To see the full details about an organization, the authenticated user must be an organization owner. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to see the full details about an organization. - * - * To see information about an organization's GitHub plan, GitHub Apps need the `Organization plan` permission. - */ - get: { - (params?: RestEndpointMethodTypes["orgs"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the immutable releases policy for repositories in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - getImmutableReleasesSettings: { - (params?: RestEndpointMethodTypes["orgs"]["getImmutableReleasesSettings"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all of the repositories that have been selected for immutable releases enforcement in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - getImmutableReleasesSettingsRepositories: { - (params?: RestEndpointMethodTypes["orgs"]["getImmutableReleasesSettingsRepositories"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * If the authenticated user is an active or pending member of the organization, this endpoint will return the user's membership. If the authenticated user is not affiliated with the organization, a `404` is returned. This endpoint will return a `403` if the request is made by a GitHub App that is blocked by the organization. - */ - getMembershipForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["orgs"]["getMembershipForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * In order to get a user's membership with an organization, the authenticated user must be an organization member. The `state` parameter in the response can be used to identify the user's membership status. - */ - getMembershipForUser: { - (params?: RestEndpointMethodTypes["orgs"]["getMembershipForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets an organization role that is available to this organization. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * To use this endpoint, the authenticated user must be one of: - * - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permissions of `read_organization_custom_org_role` in the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - getOrgRole: { - (params?: RestEndpointMethodTypes["orgs"]["getOrgRole"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the history of an organization ruleset. - */ - getOrgRulesetHistory: { - (params?: RestEndpointMethodTypes["orgs"]["getOrgRulesetHistory"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a version of an organization ruleset. - */ - getOrgRulesetVersion: { - (params?: RestEndpointMethodTypes["orgs"]["getOrgRulesetVersion"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a webhook configured in an organization. To get only the webhook - * `config` properties, see "[Get a webhook configuration for an organization](/rest/orgs/webhooks#get-a-webhook-configuration-for-an-organization). - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - getWebhook: { - (params?: RestEndpointMethodTypes["orgs"]["getWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the webhook configuration for an organization. To get more information about the webhook, including the `active` state and `events`, use "[Get an organization webhook ](/rest/orgs/webhooks#get-an-organization-webhook)." - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - getWebhookConfigForOrg: { - (params?: RestEndpointMethodTypes["orgs"]["getWebhookConfigForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a delivery for a webhook configured in an organization. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - getWebhookDelivery: { - (params?: RestEndpointMethodTypes["orgs"]["getWebhookDelivery"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all organizations, in the order that they were created. - * - * > [!NOTE] - * > Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of organizations. - */ - list: { - (params?: RestEndpointMethodTypes["orgs"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all GitHub Apps in an organization. The installation count includes - * all GitHub Apps installed on repositories in the organization. - * - * The authenticated user must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:read` scope to use this endpoint. - */ - listAppInstallations: { - (params?: RestEndpointMethodTypes["orgs"]["listAppInstallations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List a collection of artifact storage records with a given subject digest that are associated with repositories owned by an organization. - * - * The collection of storage records returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `content:read` permission is required. - */ - listArtifactStorageRecords: { - (params?: RestEndpointMethodTypes["orgs"]["listArtifactStorageRecords"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List repositories owned by the provided organization that have created at least one attested artifact - * Results will be sorted in ascending order by repository ID - */ - listAttestationRepositories: { - (params?: RestEndpointMethodTypes["orgs"]["listAttestationRepositories"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List a collection of artifact attestations with a given subject digest that are associated with repositories owned by an organization. - * - * The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - listAttestations: { - (params?: RestEndpointMethodTypes["orgs"]["listAttestations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List a collection of artifact attestations associated with any entry in a list of subject digests owned by an organization. - * - * The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - listAttestationsBulk: { - (params?: RestEndpointMethodTypes["orgs"]["listAttestationsBulk"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the users blocked by an organization. - */ - listBlockedUsers: { - (params?: RestEndpointMethodTypes["orgs"]["listBlockedUsers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The return hash contains `failed_at` and `failed_reason` fields which represent the time at which the invitation failed and the reason for the failure. - */ - listFailedInvitations: { - (params?: RestEndpointMethodTypes["orgs"]["listFailedInvitations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List organizations for the authenticated user. - * - * For OAuth app tokens and personal access tokens (classic), this endpoint only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope for OAuth app tokens and personal access tokens (classic). Requests with insufficient scope will receive a `403 Forbidden` response. - * - * > [!NOTE] - * > Requests using a fine-grained access token will receive a `200 Success` response with an empty list. - */ - listForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["orgs"]["listForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List [public organization memberships](https://docs.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user. - * - * This method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List organizations for the authenticated user](https://docs.github.com/rest/orgs/orgs#list-organizations-for-the-authenticated-user) API instead. - */ - listForUser: { - (params?: RestEndpointMethodTypes["orgs"]["listForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner. - */ - listInvitationTeams: { - (params?: RestEndpointMethodTypes["orgs"]["listInvitationTeams"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all issue types for an organization. OAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint. - */ - listIssueTypes: { - (params?: RestEndpointMethodTypes["orgs"]["listIssueTypes"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned. - */ - listMembers: { - (params?: RestEndpointMethodTypes["orgs"]["listMembers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all of the authenticated user's organization memberships. - */ - listMembershipsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["orgs"]["listMembershipsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the teams that are assigned to an organization role. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * To use this endpoint, you must be an administrator for the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - listOrgRoleTeams: { - (params?: RestEndpointMethodTypes["orgs"]["listOrgRoleTeams"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists organization members that are assigned to an organization role. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * To use this endpoint, you must be an administrator for the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - listOrgRoleUsers: { - (params?: RestEndpointMethodTypes["orgs"]["listOrgRoleUsers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the organization roles available in this organization. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * To use this endpoint, the authenticated user must be one of: - * - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permissions of `read_organization_custom_org_role` in the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - listOrgRoles: { - (params?: RestEndpointMethodTypes["orgs"]["listOrgRoles"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the fine-grained permissions that can be used in custom organization roles for an organization. For more information, see "[Managing people's access to your organization with roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles)." - * - * To list the fine-grained permissions that can be used in custom repository roles for an organization, see "[List repository fine-grained permissions for an organization](https://docs.github.com/rest/orgs/organization-roles#list-repository-fine-grained-permissions-for-an-organization)." - * - * To use this endpoint, the authenticated user must be one of: - * - * - An administrator for the organization. - * - A user, or a user on a team, with the fine-grained permissions of `read_organization_custom_org_role` in the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - listOrganizationFineGrainedPermissions: { - (params?: RestEndpointMethodTypes["orgs"]["listOrganizationFineGrainedPermissions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all users who are outside collaborators of an organization. - */ - listOutsideCollaborators: { - (params?: RestEndpointMethodTypes["orgs"]["listOutsideCollaborators"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the repositories a fine-grained personal access token has access to. - * - * Only GitHub Apps can use this endpoint. - */ - listPatGrantRepositories: { - (params?: RestEndpointMethodTypes["orgs"]["listPatGrantRepositories"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the repositories a fine-grained personal access token request is requesting access to. - * - * Only GitHub Apps can use this endpoint. - */ - listPatGrantRequestRepositories: { - (params?: RestEndpointMethodTypes["orgs"]["listPatGrantRequestRepositories"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists requests from organization members to access organization resources with a fine-grained personal access token. - * - * Only GitHub Apps can use this endpoint. - */ - listPatGrantRequests: { - (params?: RestEndpointMethodTypes["orgs"]["listPatGrantRequests"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists approved fine-grained personal access tokens owned by organization members that can access organization resources. - * - * Only GitHub Apps can use this endpoint. - */ - listPatGrants: { - (params?: RestEndpointMethodTypes["orgs"]["listPatGrants"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The return hash contains a `role` field which refers to the Organization - * Invitation role and will be one of the following values: `direct_member`, `admin`, - * `billing_manager`, or `hiring_manager`. If the invitee is not a GitHub - * member, the `login` field in the return hash will be `null`. - */ - listPendingInvitations: { - (params?: RestEndpointMethodTypes["orgs"]["listPendingInvitations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Members of an organization can choose to have their membership publicized or not. - */ - listPublicMembers: { - (params?: RestEndpointMethodTypes["orgs"]["listPublicMembers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed starting January 1, 2026. Please use the "[Organization Roles](https://docs.github.com/rest/orgs/organization-roles)" endpoints instead. - * @deprecated octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams - */ - listSecurityManagerTeams: { - (params?: RestEndpointMethodTypes["orgs"]["listSecurityManagerTeams"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a list of webhook deliveries for a webhook configured in an organization. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - listWebhookDeliveries: { - (params?: RestEndpointMethodTypes["orgs"]["listWebhookDeliveries"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List webhooks for an organization. - * - * The authenticated user must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - listWebhooks: { - (params?: RestEndpointMethodTypes["orgs"]["listWebhooks"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) - * to be sent to the hook. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - pingWebhook: { - (params?: RestEndpointMethodTypes["orgs"]["pingWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Redeliver a delivery for a webhook configured in an organization. - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - redeliverWebhookDelivery: { - (params?: RestEndpointMethodTypes["orgs"]["redeliverWebhookDelivery"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories. - * - * > [!NOTE] - * > If a user has both direct membership in the organization as well as indirect membership via an enterprise team, only their direct membership will be removed. Their indirect membership via an enterprise team remains until the user is removed from the enterprise team. - */ - removeMember: { - (params?: RestEndpointMethodTypes["orgs"]["removeMember"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * In order to remove a user's membership with an organization, the authenticated user must be an organization owner. - * - * If the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases. - * - * > [!NOTE] - * > If a user has both direct membership in the organization as well as indirect membership via an enterprise team, only their direct membership will be removed. Their indirect membership via an enterprise team remains until the user is removed from the enterprise team. - */ - removeMembershipForUser: { - (params?: RestEndpointMethodTypes["orgs"]["removeMembershipForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removing a user from this list will remove them from all the organization's repositories. - */ - removeOutsideCollaborator: { - (params?: RestEndpointMethodTypes["orgs"]["removeOutsideCollaborator"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes the public membership for the authenticated user from the specified organization, unless public visibility is enforced by default. - */ - removePublicMembershipForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["orgs"]["removePublicMembershipForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!WARNING] - * > **Closing down notice:** This operation is closing down and will be removed starting January 1, 2026. Please use the "[Organization Roles](https://docs.github.com/rest/orgs/organization-roles)" endpoints instead. - * @deprecated octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team - */ - removeSecurityManagerTeam: { - (params?: RestEndpointMethodTypes["orgs"]["removeSecurityManagerTeam"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Approves or denies a pending request to access organization resources via a fine-grained personal access token. - * - * Only GitHub Apps can use this endpoint. - */ - reviewPatGrantRequest: { - (params?: RestEndpointMethodTypes["orgs"]["reviewPatGrantRequest"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Approves or denies multiple pending requests to access organization resources via a fine-grained personal access token. - * - * Only GitHub Apps can use this endpoint. - */ - reviewPatGrantRequestsInBulk: { - (params?: RestEndpointMethodTypes["orgs"]["reviewPatGrantRequestsInBulk"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes all assigned organization roles from a team. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - revokeAllOrgRolesTeam: { - (params?: RestEndpointMethodTypes["orgs"]["revokeAllOrgRolesTeam"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Revokes all assigned organization roles from a user. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - revokeAllOrgRolesUser: { - (params?: RestEndpointMethodTypes["orgs"]["revokeAllOrgRolesUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes an organization role from a team. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - revokeOrgRoleTeam: { - (params?: RestEndpointMethodTypes["orgs"]["revokeOrgRoleTeam"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Remove an organization role from a user. For more information on organization roles, see "[Using organization roles](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/using-organization-roles)." - * - * The authenticated user must be an administrator for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - revokeOrgRoleUser: { - (params?: RestEndpointMethodTypes["orgs"]["revokeOrgRoleUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the immutable releases policy for repositories in an organization. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - setImmutableReleasesSettings: { - (params?: RestEndpointMethodTypes["orgs"]["setImmutableReleasesSettings"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Replaces all repositories that have been selected for immutable releases enforcement in an organization. To use this endpoint, the organization immutable releases policy for `enforced_repositories` must be configured to `selected`. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - setImmutableReleasesSettingsRepositories: { - (params?: RestEndpointMethodTypes["orgs"]["setImmutableReleasesSettingsRepositories"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Only authenticated organization owners can add a member to the organization or update the member's role. - * - * * If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://docs.github.com/rest/orgs/members#get-organization-membership-for-a-user) will be `pending` until they accept the invitation. - * - * * Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent. - * - * **Rate limits** - * - * To prevent abuse, organization owners are limited to creating 50 organization invitations for an organization within a 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period. - */ - setMembershipForUser: { - (params?: RestEndpointMethodTypes["orgs"]["setMembershipForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The user can publicize their own membership. (A user cannot publicize the membership for another user.) - * - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - */ - setPublicMembershipForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["orgs"]["setPublicMembershipForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Unblocks the given user on behalf of the specified organization. - */ - unblockUser: { - (params?: RestEndpointMethodTypes["orgs"]["unblockUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!WARNING] - * > **Closing down notice:** GitHub will replace and discontinue `members_allowed_repository_creation_type` in favor of more granular permissions. The new input parameters are `members_can_create_public_repositories`, `members_can_create_private_repositories` for all organizations and `members_can_create_internal_repositories` for organizations associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes). - * - * > [!WARNING] - * > **Closing down notice:** Code security product enablement for new repositories through the organization API is closing down. Please use [code security configurations](https://docs.github.com/rest/code-security/configurations#set-a-code-security-configuration-as-a-default-for-an-organization) to set defaults instead. For more information on setting a default security configuration, see the [changelog](https://github.blog/changelog/2024-07-09-sunsetting-security-settings-defaults-parameters-in-the-organizations-rest-api/). - * - * Updates the organization's profile and member privileges. - * - * The authenticated user must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` or `repo` scope to use this endpoint. - */ - update: { - (params?: RestEndpointMethodTypes["orgs"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates an issue type for an organization. - * - * You can find out more about issue types in [Managing issue types in an organization](https://docs.github.com/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization). - * - * To use this endpoint, the authenticated user must be an administrator for the organization. OAuth app tokens and - * personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - updateIssueType: { - (params?: RestEndpointMethodTypes["orgs"]["updateIssueType"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Converts the authenticated user to an active member of the organization, if that user has a pending invitation from the organization. - */ - updateMembershipForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["orgs"]["updateMembershipForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the access an organization member has to organization resources via a fine-grained personal access token. Limited to revoking the token's existing access. Limited to revoking a token's existing access. - * - * Only GitHub Apps can use this endpoint. - */ - updatePatAccess: { - (params?: RestEndpointMethodTypes["orgs"]["updatePatAccess"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the access organization members have to organization resources via fine-grained personal access tokens. Limited to revoking a token's existing access. - * - * Only GitHub Apps can use this endpoint. - */ - updatePatAccesses: { - (params?: RestEndpointMethodTypes["orgs"]["updatePatAccesses"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a webhook configured in an organization. When you update a webhook, - * the `secret` will be overwritten. If you previously had a `secret` set, you must - * provide the same `secret` or set a new `secret` or the secret will be removed. If - * you are only updating individual webhook `config` properties, use "[Update a webhook - * configuration for an organization](/rest/orgs/webhooks#update-a-webhook-configuration-for-an-organization)". - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - updateWebhook: { - (params?: RestEndpointMethodTypes["orgs"]["updateWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the webhook configuration for an organization. To update more information about the webhook, including the `active` state and `events`, use "[Update an organization webhook ](/rest/orgs/webhooks#update-an-organization-webhook)." - * - * You must be an organization owner to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need `admin:org_hook` scope. OAuth apps cannot list, view, or edit - * webhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps. - */ - updateWebhookConfigForOrg: { - (params?: RestEndpointMethodTypes["orgs"]["updateWebhookConfigForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - packages: { - /** - * Deletes a package owned by the authenticated user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - deletePackageForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["packages"]["deletePackageForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes an entire package in an organization. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must also have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - deletePackageForOrg: { - (params?: RestEndpointMethodTypes["packages"]["deletePackageForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes an entire package for a user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. - * - * If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - deletePackageForUser: { - (params?: RestEndpointMethodTypes["packages"]["deletePackageForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a specific package version for a package owned by the authenticated user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - deletePackageVersionForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["packages"]["deletePackageVersionForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a specific package version in an organization. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must also have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - deletePackageVersionForOrg: { - (params?: RestEndpointMethodTypes["packages"]["deletePackageVersionForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a specific package version for a user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. - * - * If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `delete:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - deletePackageVersionForUser: { - (params?: RestEndpointMethodTypes["packages"]["deletePackageVersionForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists package versions for a package owned by an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - * @deprecated octokit.rest.packages.getAllPackageVersionsForAPackageOwnedByAnOrg() has been renamed to octokit.rest.packages.getAllPackageVersionsForPackageOwnedByOrg() (2021-03-24) - */ - getAllPackageVersionsForAPackageOwnedByAnOrg: { - (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForAPackageOwnedByAnOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists package versions for a package owned by the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - * @deprecated octokit.rest.packages.getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser() has been renamed to octokit.rest.packages.getAllPackageVersionsForPackageOwnedByAuthenticatedUser() (2021-03-24) - */ - getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: { - (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists package versions for a package owned by the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - getAllPackageVersionsForPackageOwnedByAuthenticatedUser: { - (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists package versions for a package owned by an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - getAllPackageVersionsForPackageOwnedByOrg: { - (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForPackageOwnedByOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists package versions for a public package owned by a specified user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - getAllPackageVersionsForPackageOwnedByUser: { - (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForPackageOwnedByUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific package for a package owned by the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - getPackageForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["packages"]["getPackageForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific package in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - getPackageForOrganization: { - (params?: RestEndpointMethodTypes["packages"]["getPackageForOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific package metadata for a public package owned by a user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - getPackageForUser: { - (params?: RestEndpointMethodTypes["packages"]["getPackageForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific package version for a package owned by the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - getPackageVersionForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["packages"]["getPackageVersionForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific package version in an organization. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - getPackageVersionForOrganization: { - (params?: RestEndpointMethodTypes["packages"]["getPackageVersionForOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific package version for a public package owned by a specified user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - getPackageVersionForUser: { - (params?: RestEndpointMethodTypes["packages"]["getPackageVersionForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all packages that are owned by the authenticated user within the user's namespace, and that encountered a conflict during a Docker migration. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. - */ - listDockerMigrationConflictingPackagesForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["packages"]["listDockerMigrationConflictingPackagesForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all packages that are in a specific organization, are readable by the requesting user, and that encountered a conflict during a Docker migration. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. - */ - listDockerMigrationConflictingPackagesForOrganization: { - (params?: RestEndpointMethodTypes["packages"]["listDockerMigrationConflictingPackagesForOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all packages that are in a specific user's namespace, that the requesting user has access to, and that encountered a conflict during Docker migration. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. - */ - listDockerMigrationConflictingPackagesForUser: { - (params?: RestEndpointMethodTypes["packages"]["listDockerMigrationConflictingPackagesForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists packages owned by the authenticated user within the user's namespace. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - listPackagesForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["packages"]["listPackagesForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists packages in an organization readable by the user. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - listPackagesForOrganization: { - (params?: RestEndpointMethodTypes["packages"]["listPackagesForOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all packages in a user's namespace for which the requesting user has access. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` scope to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - listPackagesForUser: { - (params?: RestEndpointMethodTypes["packages"]["listPackagesForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Restores a package owned by the authenticated user. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - restorePackageForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["packages"]["restorePackageForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Restores an entire package in an organization. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must also have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - restorePackageForOrg: { - (params?: RestEndpointMethodTypes["packages"]["restorePackageForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Restores an entire package for a user. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - restorePackageForUser: { - (params?: RestEndpointMethodTypes["packages"]["restorePackageForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Restores a package version owned by the authenticated user. - * - * You can restore a deleted package version under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - restorePackageVersionForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["packages"]["restorePackageVersionForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Restores a specific package version in an organization. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * The authenticated user must have admin permissions in the organization to use this endpoint. If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must also have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - restorePackageVersionForOrg: { - (params?: RestEndpointMethodTypes["packages"]["restorePackageVersionForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Restores a specific package version for a user. - * - * You can restore a deleted package under the following conditions: - * - The package was deleted within the last 30 days. - * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. - * - * If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, the authenticated user must have admin permissions to the package. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:packages` and `write:packages` scopes to use this endpoint. For more information, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)." - */ - restorePackageVersionForUser: { - (params?: RestEndpointMethodTypes["packages"]["restorePackageVersionForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - privateRegistries: { - /** - * Creates a private registry configuration with an encrypted value for an organization. Encrypt your secret using [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - createOrgPrivateRegistry: { - (params?: RestEndpointMethodTypes["privateRegistries"]["createOrgPrivateRegistry"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete a private registry configuration at the organization-level. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - deleteOrgPrivateRegistry: { - (params?: RestEndpointMethodTypes["privateRegistries"]["deleteOrgPrivateRegistry"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the configuration of a single private registry defined for an organization, omitting its encrypted value. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - getOrgPrivateRegistry: { - (params?: RestEndpointMethodTypes["privateRegistries"]["getOrgPrivateRegistry"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the org public key, which is needed to encrypt private registry secrets. You need to encrypt a secret before you can create or update secrets. - * - * OAuth tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - getOrgPublicKey: { - (params?: RestEndpointMethodTypes["privateRegistries"]["getOrgPublicKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all private registry configurations available at the organization-level without revealing their encrypted - * values. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - listOrgPrivateRegistries: { - (params?: RestEndpointMethodTypes["privateRegistries"]["listOrgPrivateRegistries"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a private registry configuration with an encrypted value for an organization. Encrypt your secret using [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)." - * - * OAuth app tokens and personal access tokens (classic) need the `admin:org` scope to use this endpoint. - */ - updateOrgPrivateRegistry: { - (params?: RestEndpointMethodTypes["privateRegistries"]["updateOrgPrivateRegistry"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - projects: { - /** - * Add an issue or pull request item to the specified organization owned project. - */ - addItemForOrg: { - (params?: RestEndpointMethodTypes["projects"]["addItemForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Add an issue or pull request item to the specified user owned project. - */ - addItemForUser: { - (params?: RestEndpointMethodTypes["projects"]["addItemForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete a specific item from an organization-owned project. - */ - deleteItemForOrg: { - (params?: RestEndpointMethodTypes["projects"]["deleteItemForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete a specific item from a user-owned project. - */ - deleteItemForUser: { - (params?: RestEndpointMethodTypes["projects"]["deleteItemForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a specific field for an organization-owned project. - */ - getFieldForOrg: { - (params?: RestEndpointMethodTypes["projects"]["getFieldForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a specific field for a user-owned project. - */ - getFieldForUser: { - (params?: RestEndpointMethodTypes["projects"]["getFieldForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a specific organization-owned project. - */ - getForOrg: { - (params?: RestEndpointMethodTypes["projects"]["getForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a specific user-owned project. - */ - getForUser: { - (params?: RestEndpointMethodTypes["projects"]["getForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a specific item from an organization-owned project. - */ - getOrgItem: { - (params?: RestEndpointMethodTypes["projects"]["getOrgItem"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a specific item from a user-owned project. - */ - getUserItem: { - (params?: RestEndpointMethodTypes["projects"]["getUserItem"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all fields for a specific organization-owned project. - */ - listFieldsForOrg: { - (params?: RestEndpointMethodTypes["projects"]["listFieldsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all fields for a specific user-owned project. - */ - listFieldsForUser: { - (params?: RestEndpointMethodTypes["projects"]["listFieldsForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all projects owned by a specific organization accessible by the authenticated user. - */ - listForOrg: { - (params?: RestEndpointMethodTypes["projects"]["listForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all projects owned by a specific user accessible by the authenticated user. - */ - listForUser: { - (params?: RestEndpointMethodTypes["projects"]["listForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all items for a specific organization-owned project accessible by the authenticated user. - */ - listItemsForOrg: { - (params?: RestEndpointMethodTypes["projects"]["listItemsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all items for a specific user-owned project accessible by the authenticated user. - */ - listItemsForUser: { - (params?: RestEndpointMethodTypes["projects"]["listItemsForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Update a specific item in an organization-owned project. - */ - updateItemForOrg: { - (params?: RestEndpointMethodTypes["projects"]["updateItemForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Update a specific item in a user-owned project. - */ - updateItemForUser: { - (params?: RestEndpointMethodTypes["projects"]["updateItemForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - pulls: { - /** - * Checks if a pull request has been merged into the base branch. The HTTP status of the response indicates whether or not the pull request has been merged; the response body is empty. - */ - checkIfMerged: { - (params?: RestEndpointMethodTypes["pulls"]["checkIfMerged"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - create: { - (params?: RestEndpointMethodTypes["pulls"]["create"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - createReplyForReviewComment: { - (params?: RestEndpointMethodTypes["pulls"]["createReplyForReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a review on a specified pull request. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * Pull request reviews created in the `PENDING` state are not submitted and therefore do not include the `submitted_at` property in the response. To create a pending review for a pull request, leave the `event` parameter blank. For more information about submitting a `PENDING` review, see "[Submit a review for a pull request](https://docs.github.com/rest/pulls/reviews#submit-a-review-for-a-pull-request)." - * - * > [!NOTE] - * > To comment on a specific line in a file, you need to first determine the position of that line in the diff. To see a pull request diff, add the `application/vnd.github.v3.diff` media type to the `Accept` header of a call to the [Get a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) endpoint. - * - * The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - createReview: { - (params?: RestEndpointMethodTypes["pulls"]["createReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a review comment on the diff of a specified pull request. To add a regular comment to a pull request timeline, see "[Create an issue comment](https://docs.github.com/rest/issues/comments#create-an-issue-comment)." - * - * If your comment applies to more than one line in the pull request diff, you should use the parameters `line`, `side`, and optionally `start_line` and `start_side` in your request. - * - * The `position` parameter is closing down. If you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" - * and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - createReviewComment: { - (params?: RestEndpointMethodTypes["pulls"]["createReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a pull request review that has not been submitted. Submitted reviews cannot be deleted. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - deletePendingReview: { - (params?: RestEndpointMethodTypes["pulls"]["deletePendingReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a review comment. - */ - deleteReviewComment: { - (params?: RestEndpointMethodTypes["pulls"]["deleteReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Dismisses a specified review on a pull request. - * - * > [!NOTE] - * > To dismiss a pull request review on a [protected branch](https://docs.github.com/rest/branches/branch-protection), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - dismissReview: { - (params?: RestEndpointMethodTypes["pulls"]["dismissReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists details of a pull request by providing its number. - * - * When you get, [create](https://docs.github.com/rest/pulls/pulls/#create-a-pull-request), or [edit](https://docs.github.com/rest/pulls/pulls#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - * - * The value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit. - * - * The value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request: - * - * * If merged as a [merge commit](https://docs.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit. - * * If merged via a [squash](https://docs.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch. - * * If [rebased](https://docs.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to. - * - * Pass the appropriate [media type](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types) to fetch diff and patch formats. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - * - **`application/vnd.github.diff`**: For more information, see "[git-diff](https://git-scm.com/docs/git-diff)" in the Git documentation. If a diff is corrupt, contact us through the [GitHub Support portal](https://support.github.com/). Include the repository name and pull request ID in your message. - */ - get: { - (params?: RestEndpointMethodTypes["pulls"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Retrieves a pull request review by its ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - getReview: { - (params?: RestEndpointMethodTypes["pulls"]["getReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Provides details for a specified review comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - getReviewComment: { - (params?: RestEndpointMethodTypes["pulls"]["getReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists pull requests in a specified repository. - * - * Draft pull requests are available in public repositories with GitHub - * Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing - * plans, and in public and private repositories with GitHub Team and GitHub Enterprise - * Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) - * in the GitHub Help documentation. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - list: { - (params?: RestEndpointMethodTypes["pulls"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists comments for a specific pull request review. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listCommentsForReview: { - (params?: RestEndpointMethodTypes["pulls"]["listCommentsForReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists a maximum of 250 commits for a pull request. To receive a complete - * commit list for pull requests with more than 250 commits, use the [List commits](https://docs.github.com/rest/commits/commits#list-commits) - * endpoint. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listCommits: { - (params?: RestEndpointMethodTypes["pulls"]["listCommits"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the files in a specified pull request. - * - * > [!NOTE] - * > Responses include a maximum of 3000 files. The paginated response returns 30 files per page by default. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listFiles: { - (params?: RestEndpointMethodTypes["pulls"]["listFiles"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the users or teams whose review is requested for a pull request. Once a requested reviewer submits a review, they are no longer considered a requested reviewer. Their review will instead be returned by the [List reviews for a pull request](https://docs.github.com/rest/pulls/reviews#list-reviews-for-a-pull-request) operation. - */ - listRequestedReviewers: { - (params?: RestEndpointMethodTypes["pulls"]["listRequestedReviewers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all review comments for a specified pull request. By default, review comments - * are in ascending order by ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listReviewComments: { - (params?: RestEndpointMethodTypes["pulls"]["listReviewComments"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists review comments for all pull requests in a repository. By default, - * review comments are in ascending order by ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listReviewCommentsForRepo: { - (params?: RestEndpointMethodTypes["pulls"]["listReviewCommentsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all reviews for a specified pull request. The list of reviews returns in chronological order. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listReviews: { - (params?: RestEndpointMethodTypes["pulls"]["listReviews"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Merges a pull request into the base branch. - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - */ - merge: { - (params?: RestEndpointMethodTypes["pulls"]["merge"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes review requests from a pull request for a given set of users and/or teams. - */ - removeRequestedReviewers: { - (params?: RestEndpointMethodTypes["pulls"]["removeRequestedReviewers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. - */ - requestReviewers: { - (params?: RestEndpointMethodTypes["pulls"]["requestReviewers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Submits a pending review for a pull request. For more information about creating a pending review for a pull request, see "[Create a review for a pull request](https://docs.github.com/rest/pulls/reviews#create-a-review-for-a-pull-request)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - submitReview: { - (params?: RestEndpointMethodTypes["pulls"]["submitReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - update: { - (params?: RestEndpointMethodTypes["pulls"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch. - * Note: If making a request on behalf of a GitHub App you must also have permissions to write the contents of the head repository. - */ - updateBranch: { - (params?: RestEndpointMethodTypes["pulls"]["updateBranch"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the contents of a specified review summary comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - updateReview: { - (params?: RestEndpointMethodTypes["pulls"]["updateReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Edits the content of a specified review comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - updateReviewComment: { - (params?: RestEndpointMethodTypes["pulls"]["updateReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - rateLimit: { - /** - * > [!NOTE] - * > Accessing this endpoint does not count against your REST API rate limit. - * - * Some categories of endpoints have custom rate limits that are separate from the rate limit governing the other REST API endpoints. For this reason, the API response categorizes your rate limit. Under `resources`, you'll see objects relating to different categories: - * * The `core` object provides your rate limit status for all non-search-related resources in the REST API. - * * The `search` object provides your rate limit status for the REST API for searching (excluding code searches). For more information, see "[Search](https://docs.github.com/rest/search/search)." - * * The `code_search` object provides your rate limit status for the REST API for searching code. For more information, see "[Search code](https://docs.github.com/rest/search/search#search-code)." - * * The `graphql` object provides your rate limit status for the GraphQL API. For more information, see "[Resource limitations](https://docs.github.com/graphql/overview/resource-limitations#rate-limit)." - * * The `integration_manifest` object provides your rate limit status for the `POST /app-manifests/{code}/conversions` operation. For more information, see "[Creating a GitHub App from a manifest](https://docs.github.com/apps/creating-github-apps/setting-up-a-github-app/creating-a-github-app-from-a-manifest#3-you-exchange-the-temporary-code-to-retrieve-the-app-configuration)." - * * The `dependency_snapshots` object provides your rate limit status for submitting snapshots to the dependency graph. For more information, see "[Dependency graph](https://docs.github.com/rest/dependency-graph)." - * * The `dependency_sbom` object provides your rate limit status for requesting SBOMs from the dependency graph. For more information, see "[Dependency graph](https://docs.github.com/rest/dependency-graph)." - * * The `code_scanning_upload` object provides your rate limit status for uploading SARIF results to code scanning. For more information, see "[Uploading a SARIF file to GitHub](https://docs.github.com/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github)." - * * The `actions_runner_registration` object provides your rate limit status for registering self-hosted runners in GitHub Actions. For more information, see "[Self-hosted runners](https://docs.github.com/rest/actions/self-hosted-runners)." - * * The `source_import` object is no longer in use for any API endpoints, and it will be removed in the next API version. For more information about API versions, see "[API Versions](https://docs.github.com/rest/about-the-rest-api/api-versions)." - * - * > [!NOTE] - * > The `rate` object is closing down. If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object. - */ - get: { - (params?: RestEndpointMethodTypes["rateLimit"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - reactions: { - /** - * Create a reaction to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment). A response with an HTTP `200` status means that you already added the reaction type to this commit comment. - */ - createForCommitComment: { - (params?: RestEndpointMethodTypes["reactions"]["createForCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a reaction to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue). A response with an HTTP `200` status means that you already added the reaction type to this issue. - */ - createForIssue: { - (params?: RestEndpointMethodTypes["reactions"]["createForIssue"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a reaction to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment). A response with an HTTP `200` status means that you already added the reaction type to this issue comment. - */ - createForIssueComment: { - (params?: RestEndpointMethodTypes["reactions"]["createForIssueComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a reaction to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request). A response with an HTTP `200` status means that you already added the reaction type to this pull request review comment. - */ - createForPullRequestReviewComment: { - (params?: RestEndpointMethodTypes["reactions"]["createForPullRequestReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a reaction to a [release](https://docs.github.com/rest/releases/releases#get-a-release). A response with a `Status: 200 OK` means that you already added the reaction type to this release. - */ - createForRelease: { - (params?: RestEndpointMethodTypes["reactions"]["createForRelease"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). - * - * A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - createForTeamDiscussionCommentInOrg: { - (params?: RestEndpointMethodTypes["reactions"]["createForTeamDiscussionCommentInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). - * - * A response with an HTTP `200` status means that you already added the reaction type to this team discussion. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - createForTeamDiscussionInOrg: { - (params?: RestEndpointMethodTypes["reactions"]["createForTeamDiscussionInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/comments/:comment_id/reactions/:reaction_id`. - * - * Delete a reaction to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment). - */ - deleteForCommitComment: { - (params?: RestEndpointMethodTypes["reactions"]["deleteForCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/issues/:issue_number/reactions/:reaction_id`. - * - * Delete a reaction to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue). - */ - deleteForIssue: { - (params?: RestEndpointMethodTypes["reactions"]["deleteForIssue"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id`. - * - * Delete a reaction to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment). - */ - deleteForIssueComment: { - (params?: RestEndpointMethodTypes["reactions"]["deleteForIssueComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/pulls/comments/:comment_id/reactions/:reaction_id.` - * - * Delete a reaction to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request). - */ - deleteForPullRequestComment: { - (params?: RestEndpointMethodTypes["reactions"]["deleteForPullRequestComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/releases/:release_id/reactions/:reaction_id`. - * - * Delete a reaction to a [release](https://docs.github.com/rest/releases/releases#get-a-release). - */ - deleteForRelease: { - (params?: RestEndpointMethodTypes["reactions"]["deleteForRelease"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions/:reaction_id`. - * - * Delete a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - deleteForTeamDiscussion: { - (params?: RestEndpointMethodTypes["reactions"]["deleteForTeamDiscussion"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id`. - * - * Delete a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - deleteForTeamDiscussionComment: { - (params?: RestEndpointMethodTypes["reactions"]["deleteForTeamDiscussionComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the reactions to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment). - */ - listForCommitComment: { - (params?: RestEndpointMethodTypes["reactions"]["listForCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the reactions to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue). - */ - listForIssue: { - (params?: RestEndpointMethodTypes["reactions"]["listForIssue"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the reactions to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment). - */ - listForIssueComment: { - (params?: RestEndpointMethodTypes["reactions"]["listForIssueComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the reactions to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request). - */ - listForPullRequestReviewComment: { - (params?: RestEndpointMethodTypes["reactions"]["listForPullRequestReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the reactions to a [release](https://docs.github.com/rest/releases/releases#get-a-release). - */ - listForRelease: { - (params?: RestEndpointMethodTypes["reactions"]["listForRelease"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the reactions to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - listForTeamDiscussionCommentInOrg: { - (params?: RestEndpointMethodTypes["reactions"]["listForTeamDiscussionCommentInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the reactions to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - listForTeamDiscussionInOrg: { - (params?: RestEndpointMethodTypes["reactions"]["listForTeamDiscussionInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - repos: { - /** - * @deprecated octokit.rest.repos.acceptInvitation() has been renamed to octokit.rest.repos.acceptInvitationForAuthenticatedUser() (2021-10-05) - */ - acceptInvitation: { - (params?: RestEndpointMethodTypes["repos"]["acceptInvitation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - acceptInvitationForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["repos"]["acceptInvitationForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified apps push access for this branch. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch. - */ - addAppAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["addAppAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Add a user to a repository with a specified level of access. If the repository is owned by an organization, this API does not add the user to the organization - a user that has repository access without being an organization member is called an "outside collaborator" (if they are not an Enterprise Managed User) or a "repository collaborator" if they are an Enterprise Managed User. These users are exempt from some organization policies - see "[Adding outside collaborators to repositories](https://docs.github.com/organizations/managing-user-access-to-your-organizations-repositories/managing-outside-collaborators/adding-outside-collaborators-to-repositories-in-your-organization)" to learn more about these collaborator types. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). - * - * Adding an outside collaborator may be restricted by enterprise and organization administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)" and "[Setting permissions for adding outside collaborators](https://docs.github.com/organizations/managing-organization-settings/setting-permissions-for-adding-outside-collaborators)" for organization settings. - * - * For more information on permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". There are restrictions on which permissions can be granted to organization members when an organization base role is in place. In this case, the role being given must be equal to or higher than the org base permission. Otherwise, the request will fail with: - * - * ``` - * Cannot assign {member} permission of {role name} - * ``` - * - * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - * - * The invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [API](https://docs.github.com/rest/collaborators/invitations). - * - * For Enterprise Managed Users, this endpoint does not send invitations - these users are automatically added to organizations and repositories. Enterprise Managed Users can only be added to organizations and repositories within their enterprise. - * - * **Updating an existing collaborator's permission level** - * - * The endpoint can also be used to change the permissions of an existing collaborator without first removing and re-adding the collaborator. To change the permissions, use the same endpoint and pass a different `permission` parameter. The response will be a `204`, with no other indication that the permission level changed. - * - * **Rate limits** - * - * You are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository. - */ - addCollaborator: { - (params?: RestEndpointMethodTypes["repos"]["addCollaborator"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - addStatusCheckContexts: { - (params?: RestEndpointMethodTypes["repos"]["addStatusCheckContexts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified teams push access for this branch. You can also give push access to child teams. - */ - addTeamAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["addTeamAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified people push access for this branch. - * - * | Type | Description | - * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - addUserAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["addUserAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Cancels a GitHub Pages deployment. - * - * The authenticated user must have write permissions for the GitHub Pages site. - */ - cancelPagesDeployment: { - (params?: RestEndpointMethodTypes["repos"]["cancelPagesDeployment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Shows whether Dependabot security updates are enabled, disabled or paused for a repository. The authenticated user must have admin read access to the repository. For more information, see "[Configuring Dependabot security updates](https://docs.github.com/articles/configuring-automated-security-fixes)". - */ - checkAutomatedSecurityFixes: { - (params?: RestEndpointMethodTypes["repos"]["checkAutomatedSecurityFixes"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. - * - * Team members will include the members of child teams. - * - * The authenticated user must have push access to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `read:org` and `repo` scopes to use this endpoint. - */ - checkCollaborator: { - (params?: RestEndpointMethodTypes["repos"]["checkCollaborator"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Shows whether immutable releases are enabled or disabled. Also identifies whether immutability is being - * enforced by the repository owner. The authenticated user must have admin read access to the repository. - */ - checkImmutableReleases: { - (params?: RestEndpointMethodTypes["repos"]["checkImmutableReleases"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a boolean indicating whether or not private vulnerability reporting is enabled for the repository. For more information, see "[Evaluating the security settings of a repository](https://docs.github.com/code-security/security-advisories/working-with-repository-security-advisories/evaluating-the-security-settings-of-a-repository)". - */ - checkPrivateVulnerabilityReporting: { - (params?: RestEndpointMethodTypes["repos"]["checkPrivateVulnerabilityReporting"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Shows whether dependency alerts are enabled or disabled for a repository. The authenticated user must have admin read access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - checkVulnerabilityAlerts: { - (params?: RestEndpointMethodTypes["repos"]["checkVulnerabilityAlerts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List any syntax errors that are detected in the CODEOWNERS - * file. - * - * For more information about the correct CODEOWNERS syntax, - * see "[About code owners](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)." - */ - codeownersErrors: { - (params?: RestEndpointMethodTypes["repos"]["codeownersErrors"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Deprecated**: Use `repos.compareCommitsWithBasehead()` (`GET /repos/{owner}/{repo}/compare/{basehead}`) instead. Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `:branch`. - * - * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. - * - * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. - * - * **Working with large comparisons** - * - * To process a response with a large number of commits, you can use (`per_page` or `page`) to paginate the results. When using paging, the list of changed files is only returned with page 1, but includes all changed files for the entire comparison. For more information on working with pagination, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)." - * - * When calling this API without any paging parameters (`per_page` or `page`), the returned list is limited to 250 commits and the last commit in the list is the most recent of the entire comparison. When a paging parameter is specified, the first commit in the returned list of each page is the earliest. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - compareCommits: { - (params?: RestEndpointMethodTypes["repos"]["compareCommits"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Compares two commits against one another. You can compare refs (branches or tags) and commit SHAs in the same repository, or you can compare refs and commit SHAs that exist in different repositories within the same repository network, including fork branches. For more information about how to view a repository's network, see "[Understanding connections between repositories](https://docs.github.com/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories)." - * - * This endpoint is equivalent to running the `git log BASE..HEAD` command, but it returns commits in a different order. The `git log BASE..HEAD` command returns commits in reverse chronological order, whereas the API returns commits in chronological order. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.diff`**: Returns the diff of the commit. - * - **`application/vnd.github.patch`**: Returns the patch of the commit. Diffs with binary data will have no `patch` property. - * - * The API response includes details about the files that were changed between the two commits. This includes the status of the change (if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. - * - * When calling this endpoint without any paging parameter (`per_page` or `page`), the returned list is limited to 250 commits, and the last commit in the list is the most recent of the entire comparison. - * - * **Working with large comparisons** - * - * To process a response with a large number of commits, use a query parameter (`per_page` or `page`) to paginate the results. When using pagination: - * - * - The list of changed files is only shown on the first page of results, and it includes up to 300 changed files for the entire comparison. - * - The results are returned in chronological order, but the last commit in the returned list may not be the most recent one in the entire set if there are more pages of results. - * - * For more information on working with pagination, see "[Using pagination in the REST API](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api)." - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The `verification` object includes the following fields: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - compareCommitsWithBasehead: { - (params?: RestEndpointMethodTypes["repos"]["compareCommitsWithBasehead"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Store an artifact attestation and associate it with a repository. - * - * The authenticated user must have write permission to the repository and, if using a fine-grained access token, the `attestations:write` permission is required. - * - * Artifact attestations are meant to be created using the [attest action](https://github.com/actions/attest). For more information, see our guide on [using artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - createAttestation: { - (params?: RestEndpointMethodTypes["repos"]["createAttestation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with admin access to the repository can create an autolink. - */ - createAutolink: { - (params?: RestEndpointMethodTypes["repos"]["createAutolink"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a comment for a commit using its `:commit_sha`. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - createCommitComment: { - (params?: RestEndpointMethodTypes["repos"]["createCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits. - */ - createCommitSignatureProtection: { - (params?: RestEndpointMethodTypes["repos"]["createCommitSignatureProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access in a repository can create commit statuses for a given SHA. - * - * Note: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error. - */ - createCommitStatus: { - (params?: RestEndpointMethodTypes["repos"]["createCommitStatus"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can create a read-only deploy key. - */ - createDeployKey: { - (params?: RestEndpointMethodTypes["repos"]["createDeployKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deployments offer a few configurable parameters with certain defaults. - * - * The `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them - * before we merge a pull request. - * - * The `environment` parameter allows deployments to be issued to different runtime environments. Teams often have - * multiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter - * makes it easier to track which environments have requested deployments. The default environment is `production`. - * - * The `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If - * the ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds, - * the API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will - * return a failure response. - * - * By default, [commit statuses](https://docs.github.com/rest/commits/statuses) for every submitted context must be in a `success` - * state. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to - * specify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do - * not require any contexts or create any commit statuses, the deployment will always succeed. - * - * The `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text - * field that will be passed on when a deployment event is dispatched. - * - * The `task` parameter is used by the deployment system to allow different execution paths. In the web world this might - * be `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an - * application with debugging enabled. - * - * Merged branch response: - * - * You will see this response when GitHub automatically merges the base branch into the topic branch instead of creating - * a deployment. This auto-merge happens when: - * * Auto-merge option is enabled in the repository - * * Topic branch does not include the latest changes on the base branch, which is `master` in the response example - * * There are no merge conflicts - * - * If there are no new commits in the base branch, a new request to create a deployment should give a successful - * response. - * - * Merge conflict response: - * - * This error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't - * be merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts. - * - * Failed commit status checks: - * - * This error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success` - * status for the commit to be deployed, but one or more of the required contexts do not have a state of `success`. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repo_deployment` scope to use this endpoint. - */ - createDeployment: { - (params?: RestEndpointMethodTypes["repos"]["createDeployment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a deployment branch or tag policy for an environment. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createDeploymentBranchPolicy: { - (params?: RestEndpointMethodTypes["repos"]["createDeploymentBranchPolicy"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enable a custom deployment protection rule for an environment. - * - * The authenticated user must have admin or owner permissions to the repository to use this endpoint. - * - * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app), as well as the [guide to creating custom deployment protection rules](https://docs.github.com/actions/managing-workflow-runs-and-deployments/managing-deployments/creating-custom-deployment-protection-rules). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createDeploymentProtectionRule: { - (params?: RestEndpointMethodTypes["repos"]["createDeploymentProtectionRule"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with `push` access can create deployment statuses for a given deployment. - * - * OAuth app tokens and personal access tokens (classic) need the `repo_deployment` scope to use this endpoint. - */ - createDeploymentStatus: { - (params?: RestEndpointMethodTypes["repos"]["createDeploymentStatus"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see "[RepositoryDispatchEvent](https://docs.github.com/webhooks/event-payloads/#repository_dispatch)." - * - * The `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow. - * - * This input example shows how you can use the `client_payload` as a test to debug your workflow. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createDispatchEvent: { - (params?: RestEndpointMethodTypes["repos"]["createDispatchEvent"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new repository for the authenticated user. - * - * OAuth app tokens and personal access tokens (classic) need the `public_repo` or `repo` scope to create a public repository, and `repo` scope to create a private repository. - */ - createForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["repos"]["createForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a fork for the authenticated user. - * - * > [!NOTE] - * > Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api). - * - * > [!NOTE] - * > Although this endpoint works with GitHub Apps, the GitHub App must be installed on the destination account with access to all repositories and on the source account with access to the source repository. - */ - createFork: { - (params?: RestEndpointMethodTypes["repos"]["createFork"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new repository in the specified organization. The authenticated user must be a member of the organization. - * - * OAuth app tokens and personal access tokens (classic) need the `public_repo` or `repo` scope to create a public repository, and `repo` scope to create a private repository. - */ - createInOrg: { - (params?: RestEndpointMethodTypes["repos"]["createInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create or update an environment with protection rules, such as required reviewers. For more information about environment protection rules, see "[Environments](/actions/reference/environments#environment-protection-rules)." - * - * > [!NOTE] - * > To create or update name patterns that branches must match in order to deploy to this environment, see "[Deployment branch policies](/rest/deployments/branch-policies)." - * - * > [!NOTE] - * > To create or update secrets for an environment, see "[GitHub Actions secrets](/rest/actions/secrets)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createOrUpdateEnvironment: { - (params?: RestEndpointMethodTypes["repos"]["createOrUpdateEnvironment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new file or replaces an existing file in a repository. - * - * > [!NOTE] - * > If you use this endpoint and the "[Delete a file](https://docs.github.com/rest/repos/contents/#delete-a-file)" endpoint in parallel, the concurrent requests will conflict and you will receive errors. You must use these endpoints serially instead. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. The `workflow` scope is also required in order to modify files in the `.github/workflows` directory. - */ - createOrUpdateFileContents: { - (params?: RestEndpointMethodTypes["repos"]["createOrUpdateFileContents"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a repository ruleset for an organization. - */ - createOrgRuleset: { - (params?: RestEndpointMethodTypes["repos"]["createOrgRuleset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a GitHub Pages deployment for a repository. - * - * The authenticated user must have write permission to the repository. - */ - createPagesDeployment: { - (params?: RestEndpointMethodTypes["repos"]["createPagesDeployment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Configures a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages)." - * - * The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createPagesSite: { - (params?: RestEndpointMethodTypes["repos"]["createPagesSite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access to the repository can create a release. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - */ - createRelease: { - (params?: RestEndpointMethodTypes["repos"]["createRelease"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a ruleset for a repository. - */ - createRepoRuleset: { - (params?: RestEndpointMethodTypes["repos"]["createRepoRuleset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. If the repository is not public, the authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/repos/repos#get-a-repository) endpoint and check that the `is_template` key is `true`. - * - * OAuth app tokens and personal access tokens (classic) need the `public_repo` or `repo` scope to create a public repository, and `repo` scope to create a private repository. - */ - createUsingTemplate: { - (params?: RestEndpointMethodTypes["repos"]["createUsingTemplate"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can - * share the same `config` as long as those webhooks do not have any `events` that overlap. - */ - createWebhook: { - (params?: RestEndpointMethodTypes["repos"]["createWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create new or update existing custom property values for a repository. - * Using a value of `null` for a custom property will remove or 'unset' the property value from the repository. - * - * Repository admins and other users with the repository-level "edit custom property values" fine-grained permission can use this endpoint. - */ - customPropertiesForReposCreateOrUpdateRepositoryValues: { - (params?: RestEndpointMethodTypes["repos"]["customPropertiesForReposCreateOrUpdateRepositoryValues"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets all custom property values that are set for a repository. - * Users with read access to the repository can use this endpoint. - */ - customPropertiesForReposGetRepositoryValues: { - (params?: RestEndpointMethodTypes["repos"]["customPropertiesForReposGetRepositoryValues"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * @deprecated octokit.rest.repos.declineInvitation() has been renamed to octokit.rest.repos.declineInvitationForAuthenticatedUser() (2021-10-05) - */ - declineInvitation: { - (params?: RestEndpointMethodTypes["repos"]["declineInvitation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - declineInvitationForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["repos"]["declineInvitationForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deleting a repository requires admin access. - * - * If an organization owner has configured the organization to prevent members from deleting organization-owned - * repositories, you will get a `403 Forbidden` response. - * - * OAuth app tokens and personal access tokens (classic) need the `delete_repo` scope to use this endpoint. - */ - delete: { - (params?: RestEndpointMethodTypes["repos"]["delete"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Disables the ability to restrict who can push to this branch. - */ - deleteAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["deleteAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removing admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - */ - deleteAdminBranchProtection: { - (params?: RestEndpointMethodTypes["repos"]["deleteAdminBranchProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteAnEnvironment: { - (params?: RestEndpointMethodTypes["repos"]["deleteAnEnvironment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This deletes a single autolink reference by ID that was configured for the given repository. - * - * Information about autolinks are only available to repository administrators. - */ - deleteAutolink: { - (params?: RestEndpointMethodTypes["repos"]["deleteAutolink"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - deleteBranchProtection: { - (params?: RestEndpointMethodTypes["repos"]["deleteBranchProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteCommitComment: { - (params?: RestEndpointMethodTypes["repos"]["deleteCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits. - */ - deleteCommitSignatureProtection: { - (params?: RestEndpointMethodTypes["repos"]["deleteCommitSignatureProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead. - */ - deleteDeployKey: { - (params?: RestEndpointMethodTypes["repos"]["deleteDeployKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * If the repository only has one deployment, you can delete the deployment regardless of its status. If the repository has more than one deployment, you can only delete inactive deployments. This ensures that repositories with multiple deployments will always have an active deployment. - * - * To set a deployment as inactive, you must: - * - * * Create a new deployment that is active so that the system has a record of the current state, then delete the previously active deployment. - * * Mark the active deployment as inactive by adding any non-successful deployment status. - * - * For more information, see "[Create a deployment](https://docs.github.com/rest/deployments/deployments/#create-a-deployment)" and "[Create a deployment status](https://docs.github.com/rest/deployments/statuses#create-a-deployment-status)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repo_deployment` scope to use this endpoint. - */ - deleteDeployment: { - (params?: RestEndpointMethodTypes["repos"]["deleteDeployment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a deployment branch or tag policy for an environment. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deleteDeploymentBranchPolicy: { - (params?: RestEndpointMethodTypes["repos"]["deleteDeploymentBranchPolicy"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a file in a repository. - * - * You can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author. - * - * The `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used. - * - * You must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code. - * - * > [!NOTE] - * > If you use this endpoint and the "[Create or update file contents](https://docs.github.com/rest/repos/contents/#create-or-update-file-contents)" endpoint in parallel, the concurrent requests will conflict and you will receive errors. You must use these endpoints serially instead. - */ - deleteFile: { - (params?: RestEndpointMethodTypes["repos"]["deleteFile"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteInvitation: { - (params?: RestEndpointMethodTypes["repos"]["deleteInvitation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete a ruleset for an organization. - */ - deleteOrgRuleset: { - (params?: RestEndpointMethodTypes["repos"]["deleteOrgRuleset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages). - * - * The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - deletePagesSite: { - (params?: RestEndpointMethodTypes["repos"]["deletePagesSite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - deletePullRequestReviewProtection: { - (params?: RestEndpointMethodTypes["repos"]["deletePullRequestReviewProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access to the repository can delete a release. - */ - deleteRelease: { - (params?: RestEndpointMethodTypes["repos"]["deleteRelease"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteReleaseAsset: { - (params?: RestEndpointMethodTypes["repos"]["deleteReleaseAsset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete a ruleset for a repository. - */ - deleteRepoRuleset: { - (params?: RestEndpointMethodTypes["repos"]["deleteRepoRuleset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete a webhook for an organization. - * - * The authenticated user must be a repository owner, or have admin access in the repository, to delete the webhook. - */ - deleteWebhook: { - (params?: RestEndpointMethodTypes["repos"]["deleteWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Disables Dependabot security updates for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring Dependabot security updates](https://docs.github.com/articles/configuring-automated-security-fixes)". - */ - disableAutomatedSecurityFixes: { - (params?: RestEndpointMethodTypes["repos"]["disableAutomatedSecurityFixes"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Disables a custom deployment protection rule for an environment. - * - * The authenticated user must have admin or owner permissions to the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - disableDeploymentProtectionRule: { - (params?: RestEndpointMethodTypes["repos"]["disableDeploymentProtectionRule"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Disables immutable releases for a repository. The authenticated user must have admin access to the repository. - */ - disableImmutableReleases: { - (params?: RestEndpointMethodTypes["repos"]["disableImmutableReleases"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Disables private vulnerability reporting for a repository. The authenticated user must have admin access to the repository. For more information, see "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)". - */ - disablePrivateVulnerabilityReporting: { - (params?: RestEndpointMethodTypes["repos"]["disablePrivateVulnerabilityReporting"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Disables dependency alerts and the dependency graph for a repository. - * The authenticated user must have admin access to the repository. For more information, - * see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - disableVulnerabilityAlerts: { - (params?: RestEndpointMethodTypes["repos"]["disableVulnerabilityAlerts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually - * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use - * the `Location` header to make a second `GET` request. - * - * > [!NOTE] - * > For private repositories, these links are temporary and expire after five minutes. If the repository is empty, you will receive a 404 when you follow the redirect. - * @deprecated octokit.rest.repos.downloadArchive() has been renamed to octokit.rest.repos.downloadZipballArchive() (2020-09-17) - */ - downloadArchive: { - (params?: RestEndpointMethodTypes["repos"]["downloadArchive"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a redirect URL to download a tar archive for a repository. If you omit `:ref`, the repository’s default branch (usually - * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use - * the `Location` header to make a second `GET` request. - * - * > [!NOTE] - * > For private repositories, these links are temporary and expire after five minutes. - */ - downloadTarballArchive: { - (params?: RestEndpointMethodTypes["repos"]["downloadTarballArchive"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually - * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use - * the `Location` header to make a second `GET` request. - * - * > [!NOTE] - * > For private repositories, these links are temporary and expire after five minutes. If the repository is empty, you will receive a 404 when you follow the redirect. - */ - downloadZipballArchive: { - (params?: RestEndpointMethodTypes["repos"]["downloadZipballArchive"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables Dependabot security updates for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring Dependabot security updates](https://docs.github.com/articles/configuring-automated-security-fixes)". - */ - enableAutomatedSecurityFixes: { - (params?: RestEndpointMethodTypes["repos"]["enableAutomatedSecurityFixes"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables immutable releases for a repository. The authenticated user must have admin access to the repository. - */ - enableImmutableReleases: { - (params?: RestEndpointMethodTypes["repos"]["enableImmutableReleases"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables private vulnerability reporting for a repository. The authenticated user must have admin access to the repository. For more information, see "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)." - */ - enablePrivateVulnerabilityReporting: { - (params?: RestEndpointMethodTypes["repos"]["enablePrivateVulnerabilityReporting"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - enableVulnerabilityAlerts: { - (params?: RestEndpointMethodTypes["repos"]["enableVulnerabilityAlerts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Generate a name and body describing a [release](https://docs.github.com/rest/releases/releases#get-a-release). The body content will be markdown formatted and contain information like the changes since last release and users who contributed. The generated release notes are not saved anywhere. They are intended to be generated and used when creating a new release. - */ - generateReleaseNotes: { - (params?: RestEndpointMethodTypes["repos"]["generateReleaseNotes"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network. - * - * > [!NOTE] - * > - In order to see the `security_and_analysis` block for a repository you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - * > - To view merge-related settings, you must have the `contents:read` and `contents:write` permissions. - */ - get: { - (params?: RestEndpointMethodTypes["repos"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists who has access to this protected branch. - * - * > [!NOTE] - * > Users, apps, and teams `restrictions` are only available for organization-owned repositories. - */ - getAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["getAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - getAdminBranchProtection: { - (params?: RestEndpointMethodTypes["repos"]["getAdminBranchProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets all custom deployment protection rules that are enabled for an environment. Anyone with read access to the repository can use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)." - * - * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - getAllDeploymentProtectionRules: { - (params?: RestEndpointMethodTypes["repos"]["getAllDeploymentProtectionRules"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the environments for a repository. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - getAllEnvironments: { - (params?: RestEndpointMethodTypes["repos"]["getAllEnvironments"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - getAllStatusCheckContexts: { - (params?: RestEndpointMethodTypes["repos"]["getAllStatusCheckContexts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getAllTopics: { - (params?: RestEndpointMethodTypes["repos"]["getAllTopics"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the GitHub Apps that have push access to this branch. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch. - */ - getAppsWithAccessToProtectedBranch: { - (params?: RestEndpointMethodTypes["repos"]["getAppsWithAccessToProtectedBranch"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This returns a single autolink reference by ID that was configured for the given repository. - * - * Information about autolinks are only available to repository administrators. - */ - getAutolink: { - (params?: RestEndpointMethodTypes["repos"]["getAutolink"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getBranch: { - (params?: RestEndpointMethodTypes["repos"]["getBranch"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - getBranchProtection: { - (params?: RestEndpointMethodTypes["repos"]["getBranchProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns all active rules that apply to the specified branch. The branch does not need to exist; rules that would apply - * to a branch with that name will be returned. All active rules that apply will be returned, regardless of the level - * at which they are configured (e.g. repository or organization). Rules in rulesets with "evaluate" or "disabled" - * enforcement statuses are not returned. - */ - getBranchRules: { - (params?: RestEndpointMethodTypes["repos"]["getBranchRules"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. - */ - getClones: { - (params?: RestEndpointMethodTypes["repos"]["getClones"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a weekly aggregate of the number of additions and deletions pushed to a repository. - * - * > [!NOTE] - * > This endpoint can only be used for repositories with fewer than 10,000 commits. If the repository contains 10,000 or more commits, a 422 status code will be returned. - */ - getCodeFrequencyStats: { - (params?: RestEndpointMethodTypes["repos"]["getCodeFrequencyStats"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Checks the repository permission and role of a collaborator. - * - * The `permission` attribute provides the legacy base roles of `admin`, `write`, `read`, and `none`, where the - * `maintain` role is mapped to `write` and the `triage` role is mapped to `read`. - * The `role_name` attribute provides the name of the assigned role, including custom roles. The - * `permission` can also be used to determine which base level of access the collaborator has to the repository. - * - * The calculated permissions are the highest role assigned to the collaborator after considering all sources of grants, including: repo, teams, organization, and enterprise. - * There is presently not a way to differentiate between an organization level grant and a repository level grant from this endpoint response. - */ - getCollaboratorPermissionLevel: { - (params?: RestEndpointMethodTypes["repos"]["getCollaboratorPermissionLevel"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. - * - * - * Additionally, a combined `state` is returned. The `state` is one of: - * - * * **failure** if any of the contexts report as `error` or `failure` - * * **pending** if there are no statuses or a context is `pending` - * * **success** if the latest status for all contexts is `success` - */ - getCombinedStatusForRef: { - (params?: RestEndpointMethodTypes["repos"]["getCombinedStatusForRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint. - * - * > [!NOTE] - * > If there are more than 300 files in the commit diff and the default JSON media type is requested, the response will include pagination link headers for the remaining files, up to a limit of 3000 files. Each page contains the static commit information, and the only changes are to the file listing. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." Pagination query parameters are not supported for these media types. - * - * - **`application/vnd.github.diff`**: Returns the diff of the commit. Larger diffs may time out and return a 5xx status code. - * - **`application/vnd.github.patch`**: Returns the patch of the commit. Diffs with binary data will have no `patch` property. Larger diffs may time out and return a 5xx status code. - * - **`application/vnd.github.sha`**: Returns the commit's SHA-1 hash. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - getCommit: { - (params?: RestEndpointMethodTypes["repos"]["getCommit"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`. - */ - getCommitActivityStats: { - (params?: RestEndpointMethodTypes["repos"]["getCommitActivityStats"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specified commit comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - getCommitComment: { - (params?: RestEndpointMethodTypes["repos"]["getCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://docs.github.com/articles/signing-commits-with-gpg) in GitHub Help. - * - * > [!NOTE] - * > You must enable branch protection to require signed commits. - */ - getCommitSignatureProtection: { - (params?: RestEndpointMethodTypes["repos"]["getCommitSignatureProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns all community profile metrics for a repository. The repository cannot be a fork. - * - * The returned metrics include an overall health score, the repository description, the presence of documentation, the - * detected code of conduct, the detected license, and the presence of ISSUE\_TEMPLATE, PULL\_REQUEST\_TEMPLATE, - * README, and CONTRIBUTING files. - * - * The `health_percentage` score is defined as a percentage of how many of - * the recommended community health files are present. For more information, see - * "[About community profiles for public repositories](https://docs.github.com/communities/setting-up-your-project-for-healthy-contributions/about-community-profiles-for-public-repositories)." - * - * `content_reports_enabled` is only returned for organization-owned repositories. - */ - getCommunityProfileMetrics: { - (params?: RestEndpointMethodTypes["repos"]["getCommunityProfileMetrics"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the contents of a file or directory in a repository. Specify the file path or directory with the `path` parameter. If you omit the `path` parameter, you will receive the contents of the repository's root directory. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw file contents for files and symlinks. - * - **`application/vnd.github.html+json`**: Returns the file contents in HTML. Markup languages are rendered to HTML using GitHub's open-source [Markup library](https://github.com/github/markup). - * - **`application/vnd.github.object+json`**: Returns the contents in a consistent object format regardless of the content type. For example, instead of an array of objects for a directory, the response will be an object with an `entries` attribute containing the array of objects. - * - * If the content is a directory, the response will be an array of objects, one object for each item in the directory. When listing the contents of a directory, submodules have their "type" specified as "file". Logically, the value _should_ be "submodule". This behavior exists [for backwards compatibility purposes](https://git.io/v1YCW). In the next major version of the API, the type will be returned as "submodule". - * - * If the content is a symlink and the symlink's target is a normal file in the repository, then the API responds with the content of the file. Otherwise, the API responds with an object describing the symlink itself. - * - * If the content is a submodule, the `submodule_git_url` field identifies the location of the submodule repository, and the `sha` identifies a specific commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out the submodule at that specific commit. If the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links["git"]`) and the github.com URLs (`html_url` and `_links["html"]`) will have null values. - * - * **Notes**: - * - * - To get a repository's contents recursively, you can [recursively get the tree](https://docs.github.com/rest/git/trees#get-a-tree). - * - This API has an upper limit of 1,000 files for a directory. If you need to retrieve - * more files, use the [Git Trees API](https://docs.github.com/rest/git/trees#get-a-tree). - * - Download URLs expire and are meant to be used just once. To ensure the download URL does not expire, please use the contents API to obtain a fresh download URL for each download. - * - If the requested file's size is: - * - 1 MB or smaller: All features of this endpoint are supported. - * - Between 1-100 MB: Only the `raw` or `object` custom media types are supported. Both will work as normal, except that when using the `object` media type, the `content` field will be an empty - * string and the `encoding` field will be `"none"`. To get the contents of these larger files, use the `raw` media type. - * - Greater than 100 MB: This endpoint is not supported. - */ - getContent: { - (params?: RestEndpointMethodTypes["repos"]["getContent"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the `total` number of commits authored by the contributor. In addition, the response includes a Weekly Hash (`weeks` array) with the following information: - * - * * `w` - Start of the week, given as a [Unix timestamp](https://en.wikipedia.org/wiki/Unix_time). - * * `a` - Number of additions - * * `d` - Number of deletions - * * `c` - Number of commits - * - * > [!NOTE] - * > This endpoint will return `0` values for all addition and deletion counts in repositories with 10,000 or more commits. - */ - getContributorsStats: { - (params?: RestEndpointMethodTypes["repos"]["getContributorsStats"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets an enabled custom deployment protection rule for an environment. Anyone with read access to the repository can use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)." - * - * For more information about the app that is providing this custom deployment rule, see [`GET /apps/{app_slug}`](https://docs.github.com/rest/apps/apps#get-an-app). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - getCustomDeploymentProtectionRule: { - (params?: RestEndpointMethodTypes["repos"]["getCustomDeploymentProtectionRule"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getDeployKey: { - (params?: RestEndpointMethodTypes["repos"]["getDeployKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getDeployment: { - (params?: RestEndpointMethodTypes["repos"]["getDeployment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a deployment branch or tag policy for an environment. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - getDeploymentBranchPolicy: { - (params?: RestEndpointMethodTypes["repos"]["getDeploymentBranchPolicy"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with pull access can view a deployment status for a deployment: - */ - getDeploymentStatus: { - (params?: RestEndpointMethodTypes["repos"]["getDeploymentStatus"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * > [!NOTE] - * > To get information about name patterns that branches must match in order to deploy to this environment, see "[Get a deployment branch policy](/rest/deployments/branch-policies#get-a-deployment-branch-policy)." - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - getEnvironment: { - (params?: RestEndpointMethodTypes["repos"]["getEnvironment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets information about the single most recent build of a GitHub Pages site. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getLatestPagesBuild: { - (params?: RestEndpointMethodTypes["repos"]["getLatestPagesBuild"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * View the latest published full release for the repository. - * - * The latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published. - */ - getLatestRelease: { - (params?: RestEndpointMethodTypes["repos"]["getLatestRelease"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets information about a suite of rule evaluations from within an organization. - * For more information, see "[Managing rulesets for repositories in your organization](https://docs.github.com/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization#viewing-insights-for-rulesets)." - */ - getOrgRuleSuite: { - (params?: RestEndpointMethodTypes["repos"]["getOrgRuleSuite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists suites of rule evaluations at the organization level. - * For more information, see "[Managing rulesets for repositories in your organization](https://docs.github.com/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization#viewing-insights-for-rulesets)." - */ - getOrgRuleSuites: { - (params?: RestEndpointMethodTypes["repos"]["getOrgRuleSuites"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a repository ruleset for an organization. - * - * **Note:** To prevent leaking sensitive information, the `bypass_actors` property is only returned if the user - * making the API request has write access to the ruleset. - */ - getOrgRuleset: { - (params?: RestEndpointMethodTypes["repos"]["getOrgRuleset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get all the repository rulesets for an organization. - */ - getOrgRulesets: { - (params?: RestEndpointMethodTypes["repos"]["getOrgRulesets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets information about a GitHub Pages site. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getPages: { - (params?: RestEndpointMethodTypes["repos"]["getPages"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets information about a GitHub Pages build. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getPagesBuild: { - (params?: RestEndpointMethodTypes["repos"]["getPagesBuild"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the current status of a GitHub Pages deployment. - * - * The authenticated user must have read permission for the GitHub Pages site. - */ - getPagesDeployment: { - (params?: RestEndpointMethodTypes["repos"]["getPagesDeployment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a health check of the DNS settings for the `CNAME` record configured for a repository's GitHub Pages. - * - * The first request to this endpoint returns a `202 Accepted` status and starts an asynchronous background task to get the results for the domain. After the background task completes, subsequent requests to this endpoint return a `200 OK` status with the health check results in the response. - * - * The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getPagesHealthCheck: { - (params?: RestEndpointMethodTypes["repos"]["getPagesHealthCheck"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`. - * - * The array order is oldest week (index 0) to most recent week. - * - * The most recent week is seven days ago at UTC midnight to today at UTC midnight. - */ - getParticipationStats: { - (params?: RestEndpointMethodTypes["repos"]["getParticipationStats"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - getPullRequestReviewProtection: { - (params?: RestEndpointMethodTypes["repos"]["getPullRequestReviewProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Each array contains the day number, hour number, and number of commits: - * - * * `0-6`: Sunday - Saturday - * * `0-23`: Hour of day - * * Number of commits - * - * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits. - */ - getPunchCardStats: { - (params?: RestEndpointMethodTypes["repos"]["getPunchCardStats"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the preferred README for a repository. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw file contents. This is the default if you do not specify a media type. - * - **`application/vnd.github.html+json`**: Returns the README in HTML. Markup languages are rendered to HTML using GitHub's open-source [Markup library](https://github.com/github/markup). - */ - getReadme: { - (params?: RestEndpointMethodTypes["repos"]["getReadme"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the README from a repository directory. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github.raw+json`**: Returns the raw file contents. This is the default if you do not specify a media type. - * - **`application/vnd.github.html+json`**: Returns the README in HTML. Markup languages are rendered to HTML using GitHub's open-source [Markup library](https://github.com/github/markup). - */ - getReadmeInDirectory: { - (params?: RestEndpointMethodTypes["repos"]["getReadmeInDirectory"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a public release with the specified release ID. - * - * > [!NOTE] - * > This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a hypermedia resource. For more information, see "[Getting started with the REST API](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#hypermedia)." - */ - getRelease: { - (params?: RestEndpointMethodTypes["repos"]["getRelease"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To download the asset's binary content: - * - * - If within a browser, fetch the location specified in the `browser_download_url` key provided in the response. - * - Alternatively, set the `Accept` header of the request to - * [`application/octet-stream`](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types). - * The API will either redirect the client to the location, or stream it directly if possible. - * API clients should handle both a `200` or `302` response. - */ - getReleaseAsset: { - (params?: RestEndpointMethodTypes["repos"]["getReleaseAsset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a published release with the specified tag. - */ - getReleaseByTag: { - (params?: RestEndpointMethodTypes["repos"]["getReleaseByTag"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets information about a suite of rule evaluations from within a repository. - * For more information, see "[Managing rulesets for a repository](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#viewing-insights-for-rulesets)." - */ - getRepoRuleSuite: { - (params?: RestEndpointMethodTypes["repos"]["getRepoRuleSuite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists suites of rule evaluations at the repository level. - * For more information, see "[Managing rulesets for a repository](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#viewing-insights-for-rulesets)." - */ - getRepoRuleSuites: { - (params?: RestEndpointMethodTypes["repos"]["getRepoRuleSuites"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a ruleset for a repository. - * - * **Note:** To prevent leaking sensitive information, the `bypass_actors` property is only returned if the user - * making the API request has write access to the ruleset. - */ - getRepoRuleset: { - (params?: RestEndpointMethodTypes["repos"]["getRepoRuleset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the history of a repository ruleset. - */ - getRepoRulesetHistory: { - (params?: RestEndpointMethodTypes["repos"]["getRepoRulesetHistory"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a version of a repository ruleset. - */ - getRepoRulesetVersion: { - (params?: RestEndpointMethodTypes["repos"]["getRepoRulesetVersion"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get all the rulesets for a repository. - */ - getRepoRulesets: { - (params?: RestEndpointMethodTypes["repos"]["getRepoRulesets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - getStatusChecksProtection: { - (params?: RestEndpointMethodTypes["repos"]["getStatusChecksProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the teams who have push access to this branch. The list includes child teams. - */ - getTeamsWithAccessToProtectedBranch: { - (params?: RestEndpointMethodTypes["repos"]["getTeamsWithAccessToProtectedBranch"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the top 10 popular contents over the last 14 days. - */ - getTopPaths: { - (params?: RestEndpointMethodTypes["repos"]["getTopPaths"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the top 10 referrers over the last 14 days. - */ - getTopReferrers: { - (params?: RestEndpointMethodTypes["repos"]["getTopReferrers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the people who have push access to this branch. - */ - getUsersWithAccessToProtectedBranch: { - (params?: RestEndpointMethodTypes["repos"]["getUsersWithAccessToProtectedBranch"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. - */ - getViews: { - (params?: RestEndpointMethodTypes["repos"]["getViews"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a webhook configured in a repository. To get only the webhook `config` properties, see "[Get a webhook configuration for a repository](/rest/webhooks/repo-config#get-a-webhook-configuration-for-a-repository)." - */ - getWebhook: { - (params?: RestEndpointMethodTypes["repos"]["getWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the webhook configuration for a repository. To get more information about the webhook, including the `active` state and `events`, use "[Get a repository webhook](/rest/webhooks/repos#get-a-repository-webhook)." - * - * OAuth app tokens and personal access tokens (classic) need the `read:repo_hook` or `repo` scope to use this endpoint. - */ - getWebhookConfigForRepo: { - (params?: RestEndpointMethodTypes["repos"]["getWebhookConfigForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a delivery for a webhook configured in a repository. - */ - getWebhookDelivery: { - (params?: RestEndpointMethodTypes["repos"]["getWebhookDelivery"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists a detailed history of changes to a repository, such as pushes, merges, force pushes, and branch changes, and associates these changes with commits and users. - * - * For more information about viewing repository activity, - * see "[Viewing activity and data for your repository](https://docs.github.com/repositories/viewing-activity-and-data-for-your-repository)." - */ - listActivities: { - (params?: RestEndpointMethodTypes["repos"]["listActivities"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List a collection of artifact attestations with a given subject digest that are associated with a repository. - * - * The authenticated user making the request must have read access to the repository. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - listAttestations: { - (params?: RestEndpointMethodTypes["repos"]["listAttestations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets all autolinks that are configured for a repository. - * - * Information about autolinks are only available to repository administrators. - */ - listAutolinks: { - (params?: RestEndpointMethodTypes["repos"]["listAutolinks"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listBranches: { - (params?: RestEndpointMethodTypes["repos"]["listBranches"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Returns all branches where the given commit SHA is the HEAD, or latest commit for the branch. - */ - listBranchesForHeadCommit: { - (params?: RestEndpointMethodTypes["repos"]["listBranchesForHeadCommit"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. - * The `permissions` hash returned in the response contains the base role permissions of the collaborator. The `role_name` is the highest role assigned to the collaborator after considering all sources of grants, including: repo, teams, organization, and enterprise. - * There is presently not a way to differentiate between an organization level grant and a repository level grant from this endpoint response. - * - * Team members will include the members of child teams. - * - * The authenticated user must have write, maintain, or admin privileges on the repository to use this endpoint. For organization-owned repositories, the authenticated user needs to be a member of the organization. - * OAuth app tokens and personal access tokens (classic) need the `read:org` and `repo` scopes to use this endpoint. - */ - listCollaborators: { - (params?: RestEndpointMethodTypes["repos"]["listCollaborators"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the comments for a specified commit. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listCommentsForCommit: { - (params?: RestEndpointMethodTypes["repos"]["listCommentsForCommit"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the commit comments for a specified repository. Comments are ordered by ascending ID. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - listCommitCommentsForRepo: { - (params?: RestEndpointMethodTypes["repos"]["listCommitCommentsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one. - * - * This resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`. - */ - listCommitStatusesForRef: { - (params?: RestEndpointMethodTypes["repos"]["listCommitStatusesForRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * | `verified_at` | `string` | The date the signature was verified by GitHub. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - listCommits: { - (params?: RestEndpointMethodTypes["repos"]["listCommits"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API caches contributor data to improve performance. - * - * GitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information. - */ - listContributors: { - (params?: RestEndpointMethodTypes["repos"]["listContributors"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets all custom deployment protection rule integrations that are available for an environment. - * - * The authenticated user must have admin or owner permissions to the repository to use this endpoint. - * - * For more information about environments, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)." - * - * For more information about the app that is providing this custom deployment rule, see "[GET an app](https://docs.github.com/rest/apps/apps#get-an-app)". - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - listCustomDeploymentRuleIntegrations: { - (params?: RestEndpointMethodTypes["repos"]["listCustomDeploymentRuleIntegrations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listDeployKeys: { - (params?: RestEndpointMethodTypes["repos"]["listDeployKeys"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the deployment branch policies for an environment. - * - * Anyone with read access to the repository can use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository. - */ - listDeploymentBranchPolicies: { - (params?: RestEndpointMethodTypes["repos"]["listDeploymentBranchPolicies"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with pull access can view deployment statuses for a deployment: - */ - listDeploymentStatuses: { - (params?: RestEndpointMethodTypes["repos"]["listDeploymentStatuses"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Simple filtering of deployments is available via query parameters: - */ - listDeployments: { - (params?: RestEndpointMethodTypes["repos"]["listDeployments"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - */ - listForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["repos"]["listForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories for the specified organization. - * - * > [!NOTE] - * > In order to see the `security_and_analysis` block for a repository you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." - */ - listForOrg: { - (params?: RestEndpointMethodTypes["repos"]["listForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists public repositories for the specified user. - */ - listForUser: { - (params?: RestEndpointMethodTypes["repos"]["listForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listForks: { - (params?: RestEndpointMethodTypes["repos"]["listForks"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations. - */ - listInvitations: { - (params?: RestEndpointMethodTypes["repos"]["listInvitations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * When authenticating as a user, this endpoint will list all currently open repository invitations for that user. - */ - listInvitationsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["repos"]["listInvitationsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language. - */ - listLanguages: { - (params?: RestEndpointMethodTypes["repos"]["listLanguages"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists builts of a GitHub Pages site. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - listPagesBuilds: { - (params?: RestEndpointMethodTypes["repos"]["listPagesBuilds"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all public repositories in the order that they were created. - * - * Note: - * - For GitHub Enterprise Server, this endpoint will only list repositories available to all users on the enterprise. - * - Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of repositories. - */ - listPublic: { - (params?: RestEndpointMethodTypes["repos"]["listPublic"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the merged pull request that introduced the commit to the repository. If the commit is not present in the default branch, it will return merged and open pull requests associated with the commit. - * - * To list the open or merged pull requests associated with a branch, you can set the `commit_sha` parameter to the branch name. - */ - listPullRequestsAssociatedWithCommit: { - (params?: RestEndpointMethodTypes["repos"]["listPullRequestsAssociatedWithCommit"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listReleaseAssets: { - (params?: RestEndpointMethodTypes["repos"]["listReleaseAssets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://docs.github.com/rest/repos/repos#list-repository-tags). - * - * Information about published releases are available to everyone. Only users with push access will receive listings for draft releases. - */ - listReleases: { - (params?: RestEndpointMethodTypes["repos"]["listReleases"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listTags: { - (params?: RestEndpointMethodTypes["repos"]["listTags"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the teams that have access to the specified repository and that are also visible to the authenticated user. - * - * For a public repository, a team is listed only if that team added the public repository explicitly. - * - * OAuth app tokens and personal access tokens (classic) need the `public_repo` or `repo` scope to use this endpoint with a public repository, and `repo` scope to use this endpoint with a private repository. - */ - listTeams: { - (params?: RestEndpointMethodTypes["repos"]["listTeams"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a list of webhook deliveries for a webhook configured in a repository. - */ - listWebhookDeliveries: { - (params?: RestEndpointMethodTypes["repos"]["listWebhookDeliveries"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists webhooks for a repository. `last response` may return null if there have not been any deliveries within 30 days. - */ - listWebhooks: { - (params?: RestEndpointMethodTypes["repos"]["listWebhooks"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - merge: { - (params?: RestEndpointMethodTypes["repos"]["merge"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sync a branch of a forked repository to keep it up-to-date with the upstream repository. - */ - mergeUpstream: { - (params?: RestEndpointMethodTypes["repos"]["mergeUpstream"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook. - */ - pingWebhook: { - (params?: RestEndpointMethodTypes["repos"]["pingWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Redeliver a webhook delivery for a webhook configured in a repository. - */ - redeliverWebhookDelivery: { - (params?: RestEndpointMethodTypes["repos"]["redeliverWebhookDelivery"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of an app to push to this branch. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch. - */ - removeAppAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["removeAppAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a collaborator from a repository. - * - * To use this endpoint, the authenticated user must either be an administrator of the repository or target themselves for removal. - * - * This endpoint also: - * - Cancels any outstanding invitations sent by the collaborator - * - Unassigns the user from any issues - * - Removes access to organization projects if the user is not an organization member and is not a collaborator on any other organization repositories. - * - Unstars the repository - * - Updates access permissions to packages - * - * Removing a user as a collaborator has the following effects on forks: - * - If the user had access to a fork through their membership to this repository, the user will also be removed from the fork. - * - If the user had their own fork of the repository, the fork will be deleted. - * - If the user still has read access to the repository, open pull requests by this user from a fork will be denied. - * - * > [!NOTE] - * > A user can still have access to the repository through organization permissions like base repository permissions. - * - * Although the API responds immediately, the additional permission updates might take some extra time to complete in the background. - * - * For more information on fork permissions, see "[About permissions and visibility of forks](https://docs.github.com/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks)". - */ - removeCollaborator: { - (params?: RestEndpointMethodTypes["repos"]["removeCollaborator"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - removeStatusCheckContexts: { - (params?: RestEndpointMethodTypes["repos"]["removeStatusCheckContexts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - removeStatusCheckProtection: { - (params?: RestEndpointMethodTypes["repos"]["removeStatusCheckProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of a team to push to this branch. You can also remove push access for child teams. - */ - removeTeamAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["removeTeamAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of a user to push to this branch. - * - * | Type | Description | - * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - removeUserAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["removeUserAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Renames a branch in a repository. - * - * > [!NOTE] - * > Although the API responds immediately, the branch rename process might take some extra time to complete in the background. You won't be able to push to the old branch name while the rename process is in progress. For more information, see "[Renaming a branch](https://docs.github.com/github/administering-a-repository/renaming-a-branch)". - * - * The authenticated user must have push access to the branch. If the branch is the default branch, the authenticated user must also have admin or owner permissions. - * - * In order to rename the default branch, fine-grained access tokens also need the `administration:write` repository permission. - */ - renameBranch: { - (params?: RestEndpointMethodTypes["repos"]["renameBranch"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - replaceAllTopics: { - (params?: RestEndpointMethodTypes["repos"]["replaceAllTopics"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures. - * - * Build requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes. - */ - requestPagesBuild: { - (params?: RestEndpointMethodTypes["repos"]["requestPagesBuild"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Adding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - */ - setAdminBranchProtection: { - (params?: RestEndpointMethodTypes["repos"]["setAdminBranchProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch. - */ - setAppAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["setAppAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - setStatusCheckContexts: { - (params?: RestEndpointMethodTypes["repos"]["setStatusCheckContexts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. Team restrictions include child teams. - */ - setTeamAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["setTeamAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people. - * - * | Type | Description | - * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - setUserAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["setUserAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated. - * - * > [!NOTE] - * > Previously `/repos/:owner/:repo/hooks/:hook_id/test` - */ - testPushWebhook: { - (params?: RestEndpointMethodTypes["repos"]["testPushWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://docs.github.com/articles/about-repository-transfers/). - */ - transfer: { - (params?: RestEndpointMethodTypes["repos"]["transfer"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note**: To edit a repository's topics, use the [Replace all repository topics](https://docs.github.com/rest/repos/repos#replace-all-repository-topics) endpoint. - */ - update: { - (params?: RestEndpointMethodTypes["repos"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Protecting a branch requires admin or owner permissions to the repository. - * - * > [!NOTE] - * > Passing new arrays of `users` and `teams` replaces their previous values. - * - * > [!NOTE] - * > The list of users, apps, and teams in total is limited to 100 items. - */ - updateBranchProtection: { - (params?: RestEndpointMethodTypes["repos"]["updateBranchProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the contents of a specified commit comment. - * - * This endpoint supports the following custom media types. For more information, see "[Media types](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types)." - * - * - **`application/vnd.github-commitcomment.raw+json`**: Returns the raw markdown body. Response will include `body`. This is the default if you do not pass any specific media type. - * - **`application/vnd.github-commitcomment.text+json`**: Returns a text only representation of the markdown body. Response will include `body_text`. - * - **`application/vnd.github-commitcomment.html+json`**: Returns HTML rendered from the body's markdown. Response will include `body_html`. - * - **`application/vnd.github-commitcomment.full+json`**: Returns raw, text, and HTML representations. Response will include `body`, `body_text`, and `body_html`. - */ - updateCommitComment: { - (params?: RestEndpointMethodTypes["repos"]["updateCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a deployment branch or tag policy for an environment. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - updateDeploymentBranchPolicy: { - (params?: RestEndpointMethodTypes["repos"]["updateDeploymentBranchPolicy"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates information for a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages). - * - * The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - updateInformationAboutPagesSite: { - (params?: RestEndpointMethodTypes["repos"]["updateInformationAboutPagesSite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - updateInvitation: { - (params?: RestEndpointMethodTypes["repos"]["updateInvitation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Update a ruleset for an organization. - */ - updateOrgRuleset: { - (params?: RestEndpointMethodTypes["repos"]["updateOrgRuleset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Updating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - * - * > [!NOTE] - * > Passing new arrays of `users` and `teams` replaces their previous values. - */ - updatePullRequestReviewProtection: { - (params?: RestEndpointMethodTypes["repos"]["updatePullRequestReviewProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access to the repository can edit a release. - */ - updateRelease: { - (params?: RestEndpointMethodTypes["repos"]["updateRelease"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access to the repository can edit a release asset. - */ - updateReleaseAsset: { - (params?: RestEndpointMethodTypes["repos"]["updateReleaseAsset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Update a ruleset for a repository. - */ - updateRepoRuleset: { - (params?: RestEndpointMethodTypes["repos"]["updateRepoRuleset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled. - * @deprecated octokit.rest.repos.updateStatusCheckPotection() has been renamed to octokit.rest.repos.updateStatusCheckProtection() (2020-09-17) - */ - updateStatusCheckPotection: { - (params?: RestEndpointMethodTypes["repos"]["updateStatusCheckPotection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled. - */ - updateStatusCheckProtection: { - (params?: RestEndpointMethodTypes["repos"]["updateStatusCheckProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a webhook configured in a repository. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for a repository](/rest/webhooks/repo-config#update-a-webhook-configuration-for-a-repository)." - */ - updateWebhook: { - (params?: RestEndpointMethodTypes["repos"]["updateWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the webhook configuration for a repository. To update more information about the webhook, including the `active` state and `events`, use "[Update a repository webhook](/rest/webhooks/repos#update-a-repository-webhook)." - * - * OAuth app tokens and personal access tokens (classic) need the `write:repo_hook` or `repo` scope to use this endpoint. - */ - updateWebhookConfigForRepo: { - (params?: RestEndpointMethodTypes["repos"]["updateWebhookConfigForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This endpoint makes use of a [Hypermedia relation](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in - * the response of the [Create a release endpoint](https://docs.github.com/rest/releases/releases#create-a-release) to upload a release asset. - * - * You need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint. - * - * Most libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example: - * - * `application/zip` - * - * GitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example, - * you'll still need to pass your authentication to be able to upload an asset. - * - * When an upstream failure occurs, you will receive a `502 Bad Gateway` status. This may leave an empty asset with a state of `starter`. It can be safely deleted. - * - * **Notes:** - * * GitHub renames asset filenames that have special characters, non-alphanumeric characters, and leading or trailing periods. The "[List release assets](https://docs.github.com/rest/releases/assets#list-release-assets)" - * endpoint lists the renamed filenames. For more information and help, contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api). - * * To find the `release_id` query the [`GET /repos/{owner}/{repo}/releases/latest` endpoint](https://docs.github.com/rest/releases/releases#get-the-latest-release). - * * If you upload an asset with the same filename as another uploaded asset, you'll receive an error and must delete the old file before you can re-upload the new asset. - */ - uploadReleaseAsset: { - (params?: RestEndpointMethodTypes["repos"]["uploadReleaseAsset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - search: { - /** - * Searches for query terms inside of a file. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery) repository, your query would look something like this: - * - * `q=addClass+in:file+language:js+repo:jquery/jquery` - * - * This query searches for the keyword `addClass` within a file's contents. The query limits the search to files where the language is JavaScript in the `jquery/jquery` repository. - * - * Considerations for code search: - * - * Due to the complexity of searching code, there are a few restrictions on how searches are performed: - * - * * Only the _default branch_ is considered. In most cases, this will be the `master` branch. - * * Only files smaller than 384 KB are searchable. - * * You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing - * language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is. - * - * This endpoint requires you to authenticate and limits you to 10 requests per minute. - */ - code: { - (params?: RestEndpointMethodTypes["search"]["code"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Find commits via various criteria on the default branch (usually `main`). This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match - * metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this: - * - * `q=repo:octocat/Spoon-Knife+css` - */ - commits: { - (params?: RestEndpointMethodTypes["search"]["commits"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Find issues by state and keyword. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted - * search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this. - * - * `q=windows+label:bug+language:python+state:open&sort=created&order=asc` - * - * This query searches for the keyword `windows`, within any open issue that is labeled as `bug`. The search runs across repositories whose primary language is Python. The results are sorted by creation date in ascending order, which means the oldest issues appear first in the search results. - * - * > [!NOTE] - * > For requests made by GitHub Apps with a user access token, you can't retrieve a combination of issues and pull requests in a single query. Requests that don't include the `is:issue` or `is:pull-request` qualifier will receive an HTTP `422 Unprocessable Entity` response. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about the `is` qualifier, see "[Searching only issues or pull requests](https://docs.github.com/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests)." - */ - issuesAndPullRequests: { - (params?: RestEndpointMethodTypes["search"]["issuesAndPullRequests"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this: - * - * `q=bug+defect+enhancement&repository_id=64778136` - * - * The labels that best match the query appear first in the search results. - */ - labels: { - (params?: RestEndpointMethodTypes["search"]["labels"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Find repositories via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to search for popular Tetris repositories written in assembly code, your query might look like this: - * - * `q=tetris+language:assembly&sort=stars&order=desc` - * - * This query searches for repositories with the word `tetris` in the name, the description, or the README. The results are limited to repositories where the primary language is assembly. The results are sorted by stars in descending order, so that the most popular repositories appear first in the search results. - */ - repos: { - (params?: RestEndpointMethodTypes["search"]["repos"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). See "[Searching topics](https://docs.github.com/articles/searching-topics/)" for a detailed list of qualifiers. - * - * When searching for topics, you can get text match metadata for the topic's **short\_description**, **description**, **name**, or **display\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you want to search for topics related to Ruby that are featured on https://github.com/topics. Your query might look like this: - * - * `q=ruby+is:featured` - * - * This query searches for topics with the keyword `ruby` and limits the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results. - */ - topics: { - (params?: RestEndpointMethodTypes["search"]["topics"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Find users via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api). - * - * When searching for users, you can get text match metadata for the issue **login**, public **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). - * - * For example, if you're looking for a list of popular users, you might try this query: - * - * `q=tom+repos:%3E42+followers:%3E1000` - * - * This query searches for users with the name `tom`. The results are restricted to users with more than 42 repositories and over 1,000 followers. - * - * This endpoint does not accept authentication and will only include publicly visible users. As an alternative, you can use the GraphQL API. The GraphQL API requires authentication and will return private users, including Enterprise Managed Users (EMUs), that you are authorized to view. For more information, see "[GraphQL Queries](https://docs.github.com/graphql/reference/queries#search)." - */ - users: { - (params?: RestEndpointMethodTypes["search"]["users"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - secretScanning: { - /** - * Creates a bypass for a previously push protected secret. - * - * The authenticated user must be the original author of the committed secret. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - createPushProtectionBypass: { - (params?: RestEndpointMethodTypes["secretScanning"]["createPushProtectionBypass"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a single secret scanning alert detected in an eligible repository. - * - * The authenticated user must be an administrator for the repository or for the organization that owns the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - getAlert: { - (params?: RestEndpointMethodTypes["secretScanning"]["getAlert"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the latest default incremental and backfill scans by type for a repository. Scans from Copilot Secret Scanning are not included. - * - * > [!NOTE] - * > This endpoint requires [GitHub Advanced Security](https://docs.github.com/get-started/learning-about-github/about-github-advanced-security)." - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - getScanHistory: { - (params?: RestEndpointMethodTypes["secretScanning"]["getScanHistory"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists secret scanning alerts for eligible repositories in an organization, from newest to oldest. - * - * The authenticated user must be an administrator or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - listAlertsForOrg: { - (params?: RestEndpointMethodTypes["secretScanning"]["listAlertsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists secret scanning alerts for an eligible repository, from newest to oldest. - * - * The authenticated user must be an administrator for the repository or for the organization that owns the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - listAlertsForRepo: { - (params?: RestEndpointMethodTypes["secretScanning"]["listAlertsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all locations for a given secret scanning alert for an eligible repository. - * - * The authenticated user must be an administrator for the repository or for the organization that owns the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - listLocationsForAlert: { - (params?: RestEndpointMethodTypes["secretScanning"]["listLocationsForAlert"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the secret scanning pattern configurations for an organization. - * - * Personal access tokens (classic) need the `read:org` scope to use this endpoint. - */ - listOrgPatternConfigs: { - (params?: RestEndpointMethodTypes["secretScanning"]["listOrgPatternConfigs"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the status of a secret scanning alert in an eligible repository. - * - * The authenticated user must be an administrator for the repository or for the organization that owns the repository to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `security_events` scope to use this endpoint. If this endpoint is only used with public repositories, the token can use the `public_repo` scope instead. - */ - updateAlert: { - (params?: RestEndpointMethodTypes["secretScanning"]["updateAlert"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the secret scanning pattern configurations for an organization. - * - * Personal access tokens (classic) need the `write:org` scope to use this endpoint. - */ - updateOrgPatternConfigs: { - (params?: RestEndpointMethodTypes["secretScanning"]["updateOrgPatternConfigs"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - securityAdvisories: { - /** - * Create a temporary private fork to collaborate on fixing a security vulnerability in your repository. - * - * > [!NOTE] - * > Forking a repository happens asynchronously. You may have to wait up to 5 minutes before you can access the fork. - */ - createFork: { - (params?: RestEndpointMethodTypes["securityAdvisories"]["createFork"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Report a security vulnerability to the maintainers of the repository. - * See "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)" for more information about private vulnerability reporting. - */ - createPrivateVulnerabilityReport: { - (params?: RestEndpointMethodTypes["securityAdvisories"]["createPrivateVulnerabilityReport"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new repository security advisory. - * - * In order to create a draft repository security advisory, the authenticated user must be a security manager or administrator of that repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:write` scope to use this endpoint. - */ - createRepositoryAdvisory: { - (params?: RestEndpointMethodTypes["securityAdvisories"]["createRepositoryAdvisory"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * If you want a CVE identification number for the security vulnerability in your project, and don't already have one, you can request a CVE identification number from GitHub. For more information see "[Requesting a CVE identification number](https://docs.github.com/code-security/security-advisories/repository-security-advisories/publishing-a-repository-security-advisory#requesting-a-cve-identification-number-optional)." - * - * You may request a CVE for public repositories, but cannot do so for private repositories. - * - * In order to request a CVE for a repository security advisory, the authenticated user must be a security manager or administrator of that repository. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:write` scope to use this endpoint. - */ - createRepositoryAdvisoryCveRequest: { - (params?: RestEndpointMethodTypes["securityAdvisories"]["createRepositoryAdvisoryCveRequest"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a global security advisory using its GitHub Security Advisory (GHSA) identifier. - */ - getGlobalAdvisory: { - (params?: RestEndpointMethodTypes["securityAdvisories"]["getGlobalAdvisory"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a repository security advisory using its GitHub Security Advisory (GHSA) identifier. - * - * Anyone can access any published security advisory on a public repository. - * - * The authenticated user can access an unpublished security advisory from a repository if they are a security manager or administrator of that repository, or if they are a - * collaborator on the security advisory. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:read` scope to to get a published security advisory in a private repository, or any unpublished security advisory that the authenticated user has access to. - */ - getRepositoryAdvisory: { - (params?: RestEndpointMethodTypes["securityAdvisories"]["getRepositoryAdvisory"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all global security advisories that match the specified parameters. If no other parameters are defined, the request will return only GitHub-reviewed advisories that are not malware. - * - * By default, all responses will exclude advisories for malware, because malware are not standard vulnerabilities. To list advisories for malware, you must include the `type` parameter in your request, with the value `malware`. For more information about the different types of security advisories, see "[About the GitHub Advisory database](https://docs.github.com/code-security/security-advisories/global-security-advisories/about-the-github-advisory-database#about-types-of-security-advisories)." - */ - listGlobalAdvisories: { - (params?: RestEndpointMethodTypes["securityAdvisories"]["listGlobalAdvisories"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repository security advisories for an organization. - * - * The authenticated user must be an owner or security manager for the organization to use this endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:write` scope to use this endpoint. - */ - listOrgRepositoryAdvisories: { - (params?: RestEndpointMethodTypes["securityAdvisories"]["listOrgRepositoryAdvisories"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists security advisories in a repository. - * - * The authenticated user can access unpublished security advisories from a repository if they are a security manager or administrator of that repository, or if they are a collaborator on any security advisory. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:read` scope to to get a published security advisory in a private repository, or any unpublished security advisory that the authenticated user has access to. - */ - listRepositoryAdvisories: { - (params?: RestEndpointMethodTypes["securityAdvisories"]["listRepositoryAdvisories"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Update a repository security advisory using its GitHub Security Advisory (GHSA) identifier. - * - * In order to update any security advisory, the authenticated user must be a security manager or administrator of that repository, - * or a collaborator on the repository security advisory. - * - * OAuth app tokens and personal access tokens (classic) need the `repo` or `repository_advisories:write` scope to use this endpoint. - */ - updateRepositoryAdvisory: { - (params?: RestEndpointMethodTypes["securityAdvisories"]["updateRepositoryAdvisory"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - teams: { - /** - * Adds an organization member to a team. An authenticated organization owner or team maintainer can add organization members to a team. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * An organization owner can add someone who is not part of the team's organization to a team. When an organization owner adds someone to a team who is not an organization member, this endpoint will send an invitation to the person via email. This newly-created membership will be in the "pending" state until the person accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. - * - * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/memberships/{username}`. - */ - addOrUpdateMembershipForUserInOrg: { - (params?: RestEndpointMethodTypes["teams"]["addOrUpdateMembershipForUserInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - * - * For more information about the permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". - */ - addOrUpdateRepoPermissionsInOrg: { - (params?: RestEndpointMethodTypes["teams"]["addOrUpdateRepoPermissionsInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Checks whether a team has `admin`, `push`, `maintain`, `triage`, or `pull` permission for a repository. Repositories inherited through a parent team will also be checked. - * - * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types/) via the `application/vnd.github.v3.repository+json` accept header. - * - * If a team doesn't have permission for the repository, you will receive a `404 Not Found` response status. - * - * If the repository is private, you must have at least `read` permission for that repository, and your token must have the `repo` or `admin:org` scope. Otherwise, you will receive a `404 Not Found` response status. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - */ - checkPermissionsForRepoInOrg: { - (params?: RestEndpointMethodTypes["teams"]["checkPermissionsForRepoInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To create a team, the authenticated user must be a member or owner of `{org}`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see "[Setting team creation permissions](https://docs.github.com/articles/setting-team-creation-permissions-in-your-organization)." - * - * When you create a new team, you automatically become a team maintainer without explicitly adding yourself to the optional array of `maintainers`. For more information, see "[About teams](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/about-teams)". - */ - create: { - (params?: RestEndpointMethodTypes["teams"]["create"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new comment on a team discussion. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - createDiscussionCommentInOrg: { - (params?: RestEndpointMethodTypes["teams"]["createDiscussionCommentInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new discussion post on a team's page. - * - * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see "[Rate limits for the API](https://docs.github.com/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-secondary-rate-limits)" and "[Best practices for using the REST API](https://docs.github.com/rest/guides/best-practices-for-using-the-rest-api)." - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - createDiscussionInOrg: { - (params?: RestEndpointMethodTypes["teams"]["createDiscussionInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a comment on a team discussion. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - deleteDiscussionCommentInOrg: { - (params?: RestEndpointMethodTypes["teams"]["deleteDiscussionCommentInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete a discussion from a team's page. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - deleteDiscussionInOrg: { - (params?: RestEndpointMethodTypes["teams"]["deleteDiscussionInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To delete a team, the authenticated user must be an organization owner or team maintainer. - * - * If you are an organization owner, deleting a parent team will delete all of its child teams as well. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}`. - */ - deleteInOrg: { - (params?: RestEndpointMethodTypes["teams"]["deleteInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a team using the team's `slug`. To create the `slug`, GitHub replaces special characters in the `name` string, changes all words to lowercase, and replaces spaces with a `-` separator. For example, `"My TEam Näme"` would become `my-team-name`. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}`. - */ - getByName: { - (params?: RestEndpointMethodTypes["teams"]["getByName"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a specific comment on a team discussion. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - getDiscussionCommentInOrg: { - (params?: RestEndpointMethodTypes["teams"]["getDiscussionCommentInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a specific discussion on a team's page. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - getDiscussionInOrg: { - (params?: RestEndpointMethodTypes["teams"]["getDiscussionInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Team members will include the members of child teams. - * - * To get a user's membership with a team, the team must be visible to the authenticated user. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/memberships/{username}`. - * - * > [!NOTE] - * > The response contains the `state` of the membership and the member's `role`. - * - * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/teams/teams#create-a-team). - */ - getMembershipForUserInOrg: { - (params?: RestEndpointMethodTypes["teams"]["getMembershipForUserInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all teams in an organization that are visible to the authenticated user. - */ - list: { - (params?: RestEndpointMethodTypes["teams"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the child teams of the team specified by `{team_slug}`. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/teams`. - */ - listChildInOrg: { - (params?: RestEndpointMethodTypes["teams"]["listChildInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all comments on a team discussion. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - listDiscussionCommentsInOrg: { - (params?: RestEndpointMethodTypes["teams"]["listDiscussionCommentsInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all discussions on a team's page. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions`. - * - * OAuth app tokens and personal access tokens (classic) need the `read:discussion` scope to use this endpoint. - */ - listDiscussionsInOrg: { - (params?: RestEndpointMethodTypes["teams"]["listDiscussionsInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all of the teams across all of the organizations to which the authenticated - * user belongs. - * - * OAuth app tokens and personal access tokens (classic) need the `user`, `repo`, or `read:org` scope to use this endpoint. - * - * When using a fine-grained personal access token, the resource owner of the token must be a single organization, and the response will only include the teams from that organization. - */ - listForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["teams"]["listForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Team members will include the members of child teams. - * - * To list members in a team, the team must be visible to the authenticated user. - */ - listMembersInOrg: { - (params?: RestEndpointMethodTypes["teams"]["listMembersInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/invitations`. - */ - listPendingInvitationsInOrg: { - (params?: RestEndpointMethodTypes["teams"]["listPendingInvitationsInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists a team's repositories visible to the authenticated user. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos`. - */ - listReposInOrg: { - (params?: RestEndpointMethodTypes["teams"]["listReposInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * > [!NOTE] - * > When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/memberships/{username}`. - */ - removeMembershipForUserInOrg: { - (params?: RestEndpointMethodTypes["teams"]["removeMembershipForUserInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. This does not delete the repository, it just removes it from the team. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - */ - removeRepoInOrg: { - (params?: RestEndpointMethodTypes["teams"]["removeRepoInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Edits the body text of a discussion comment. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - updateDiscussionCommentInOrg: { - (params?: RestEndpointMethodTypes["teams"]["updateDiscussionCommentInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Edits the title and body text of a discussion post. Only the parameters you provide are updated. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - * - * OAuth app tokens and personal access tokens (classic) need the `write:discussion` scope to use this endpoint. - */ - updateDiscussionInOrg: { - (params?: RestEndpointMethodTypes["teams"]["updateDiscussionInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To edit a team, the authenticated user must either be an organization owner or a team maintainer. - * - * > [!NOTE] - * > You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}`. - */ - updateInOrg: { - (params?: RestEndpointMethodTypes["teams"]["updateInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - users: { - /** - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - * @deprecated octokit.rest.users.addEmailForAuthenticated() has been renamed to octokit.rest.users.addEmailForAuthenticatedUser() (2021-10-05) - */ - addEmailForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["addEmailForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - addEmailForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["addEmailForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Add one or more social accounts to the authenticated user's profile. - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - addSocialAccountForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["addSocialAccountForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Blocks the given user and returns a 204. If the authenticated user cannot block the given user a 422 is returned. - */ - block: { - (params?: RestEndpointMethodTypes["users"]["block"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a 204 if the given user is blocked by the authenticated user. Returns a 404 if the given user is not blocked by the authenticated user, or if the given user account has been identified as spam by GitHub. - */ - checkBlocked: { - (params?: RestEndpointMethodTypes["users"]["checkBlocked"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - checkFollowingForUser: { - (params?: RestEndpointMethodTypes["users"]["checkFollowingForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - checkPersonIsFollowedByAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["checkPersonIsFollowedByAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds a GPG key to the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `write:gpg_key` scope to use this endpoint. - * @deprecated octokit.rest.users.createGpgKeyForAuthenticated() has been renamed to octokit.rest.users.createGpgKeyForAuthenticatedUser() (2021-10-05) - */ - createGpgKeyForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["createGpgKeyForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds a GPG key to the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `write:gpg_key` scope to use this endpoint. - */ - createGpgKeyForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["createGpgKeyForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds a public SSH key to the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `write:public_key` scope to use this endpoint. - * @deprecated octokit.rest.users.createPublicSshKeyForAuthenticated() has been renamed to octokit.rest.users.createPublicSshKeyForAuthenticatedUser() (2021-10-05) - */ - createPublicSshKeyForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["createPublicSshKeyForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds a public SSH key to the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `write:public_key` scope to use this endpoint. - */ - createPublicSshKeyForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["createPublicSshKeyForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates an SSH signing key for the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `write:ssh_signing_key` scope to use this endpoint. - */ - createSshSigningKeyForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["createSshSigningKeyForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete artifact attestations in bulk by either subject digests or unique ID. - */ - deleteAttestationsBulk: { - (params?: RestEndpointMethodTypes["users"]["deleteAttestationsBulk"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete an artifact attestation by unique ID that is associated with a repository owned by a user. - */ - deleteAttestationsById: { - (params?: RestEndpointMethodTypes["users"]["deleteAttestationsById"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete an artifact attestation by subject digest. - */ - deleteAttestationsBySubjectDigest: { - (params?: RestEndpointMethodTypes["users"]["deleteAttestationsBySubjectDigest"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - * @deprecated octokit.rest.users.deleteEmailForAuthenticated() has been renamed to octokit.rest.users.deleteEmailForAuthenticatedUser() (2021-10-05) - */ - deleteEmailForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["deleteEmailForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - deleteEmailForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["deleteEmailForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a GPG key from the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:gpg_key` scope to use this endpoint. - * @deprecated octokit.rest.users.deleteGpgKeyForAuthenticated() has been renamed to octokit.rest.users.deleteGpgKeyForAuthenticatedUser() (2021-10-05) - */ - deleteGpgKeyForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["deleteGpgKeyForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a GPG key from the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:gpg_key` scope to use this endpoint. - */ - deleteGpgKeyForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["deleteGpgKeyForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a public SSH key from the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:public_key` scope to use this endpoint. - * @deprecated octokit.rest.users.deletePublicSshKeyForAuthenticated() has been renamed to octokit.rest.users.deletePublicSshKeyForAuthenticatedUser() (2021-10-05) - */ - deletePublicSshKeyForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["deletePublicSshKeyForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a public SSH key from the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:public_key` scope to use this endpoint. - */ - deletePublicSshKeyForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["deletePublicSshKeyForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes one or more social accounts from the authenticated user's profile. - * - * OAuth app tokens and personal access tokens (classic) need the `user` scope to use this endpoint. - */ - deleteSocialAccountForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["deleteSocialAccountForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes an SSH signing key from the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `admin:ssh_signing_key` scope to use this endpoint. - */ - deleteSshSigningKeyForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["deleteSshSigningKeyForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)." - * - * OAuth app tokens and personal access tokens (classic) need the `user:follow` scope to use this endpoint. - */ - follow: { - (params?: RestEndpointMethodTypes["users"]["follow"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth app tokens and personal access tokens (classic) need the `user` scope in order for the response to include private profile information. - */ - getAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["getAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Provides publicly available information about someone with a GitHub account. This method takes their durable user `ID` instead of their `login`, which can change over time. - * - * If you are requesting information about an [Enterprise Managed User](https://docs.github.com/enterprise-cloud@latest/admin/managing-iam/understanding-iam-for-enterprises/about-enterprise-managed-users), or a GitHub App bot that is installed in an organization that uses Enterprise Managed Users, your requests must be authenticated as a user or GitHub App that has access to the organization to view that account's information. If you are not authorized, the request will return a `404 Not Found` status. - * - * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be public which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#authentication). - * - * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see [Emails API](https://docs.github.com/rest/users/emails). - */ - getById: { - (params?: RestEndpointMethodTypes["users"]["getById"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Provides publicly available information about someone with a GitHub account. - * - * If you are requesting information about an [Enterprise Managed User](https://docs.github.com/enterprise-cloud@latest/admin/managing-iam/understanding-iam-for-enterprises/about-enterprise-managed-users), or a GitHub App bot that is installed in an organization that uses Enterprise Managed Users, your requests must be authenticated as a user or GitHub App that has access to the organization to view that account's information. If you are not authorized, the request will return a `404 Not Found` status. - * - * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be public which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#authentication). - * - * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see [Emails API](https://docs.github.com/rest/users/emails). - */ - getByUsername: { - (params?: RestEndpointMethodTypes["users"]["getByUsername"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Provides hovercard information. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations. - * - * The `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository, you would use a `subject_type` value of `repository` and a `subject_id` value of `1300192` (the ID of the `Spoon-Knife` repository). - * - * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint. - */ - getContextForUser: { - (params?: RestEndpointMethodTypes["users"]["getContextForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * View extended details for a single GPG key. - * - * OAuth app tokens and personal access tokens (classic) need the `read:gpg_key` scope to use this endpoint. - * @deprecated octokit.rest.users.getGpgKeyForAuthenticated() has been renamed to octokit.rest.users.getGpgKeyForAuthenticatedUser() (2021-10-05) - */ - getGpgKeyForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["getGpgKeyForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * View extended details for a single GPG key. - * - * OAuth app tokens and personal access tokens (classic) need the `read:gpg_key` scope to use this endpoint. - */ - getGpgKeyForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["getGpgKeyForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * View extended details for a single public SSH key. - * - * OAuth app tokens and personal access tokens (classic) need the `read:public_key` scope to use this endpoint. - * @deprecated octokit.rest.users.getPublicSshKeyForAuthenticated() has been renamed to octokit.rest.users.getPublicSshKeyForAuthenticatedUser() (2021-10-05) - */ - getPublicSshKeyForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["getPublicSshKeyForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * View extended details for a single public SSH key. - * - * OAuth app tokens and personal access tokens (classic) need the `read:public_key` scope to use this endpoint. - */ - getPublicSshKeyForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["getPublicSshKeyForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets extended details for an SSH signing key. - * - * OAuth app tokens and personal access tokens (classic) need the `read:ssh_signing_key` scope to use this endpoint. - */ - getSshSigningKeyForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["getSshSigningKeyForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts. - * - * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of users. - */ - list: { - (params?: RestEndpointMethodTypes["users"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List a collection of artifact attestations with a given subject digest that are associated with repositories owned by a user. - * - * The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - listAttestations: { - (params?: RestEndpointMethodTypes["users"]["listAttestations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List a collection of artifact attestations associated with any entry in a list of subject digests owned by a user. - * - * The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the `attestations:read` permission is required. - * - * **Please note:** in order to offer meaningful security benefits, an attestation's signature and timestamps **must** be cryptographically verified, and the identity of the attestation signer **must** be validated. Attestations can be verified using the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify). For more information, see [our guide on how to use artifact attestations to establish a build's provenance](https://docs.github.com/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - */ - listAttestationsBulk: { - (params?: RestEndpointMethodTypes["users"]["listAttestationsBulk"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the users you've blocked on your personal account. - * @deprecated octokit.rest.users.listBlockedByAuthenticated() has been renamed to octokit.rest.users.listBlockedByAuthenticatedUser() (2021-10-05) - */ - listBlockedByAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["listBlockedByAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the users you've blocked on your personal account. - */ - listBlockedByAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["listBlockedByAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all of your email addresses, and specifies which one is visible - * to the public. - * - * OAuth app tokens and personal access tokens (classic) need the `user:email` scope to use this endpoint. - * @deprecated octokit.rest.users.listEmailsForAuthenticated() has been renamed to octokit.rest.users.listEmailsForAuthenticatedUser() (2021-10-05) - */ - listEmailsForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["listEmailsForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all of your email addresses, and specifies which one is visible - * to the public. - * - * OAuth app tokens and personal access tokens (classic) need the `user:email` scope to use this endpoint. - */ - listEmailsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["listEmailsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the people who the authenticated user follows. - * @deprecated octokit.rest.users.listFollowedByAuthenticated() has been renamed to octokit.rest.users.listFollowedByAuthenticatedUser() (2021-10-05) - */ - listFollowedByAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["listFollowedByAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the people who the authenticated user follows. - */ - listFollowedByAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["listFollowedByAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the people following the authenticated user. - */ - listFollowersForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["listFollowersForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the people following the specified user. - */ - listFollowersForUser: { - (params?: RestEndpointMethodTypes["users"]["listFollowersForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the people who the specified user follows. - */ - listFollowingForUser: { - (params?: RestEndpointMethodTypes["users"]["listFollowingForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the current user's GPG keys. - * - * OAuth app tokens and personal access tokens (classic) need the `read:gpg_key` scope to use this endpoint. - * @deprecated octokit.rest.users.listGpgKeysForAuthenticated() has been renamed to octokit.rest.users.listGpgKeysForAuthenticatedUser() (2021-10-05) - */ - listGpgKeysForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["listGpgKeysForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the current user's GPG keys. - * - * OAuth app tokens and personal access tokens (classic) need the `read:gpg_key` scope to use this endpoint. - */ - listGpgKeysForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["listGpgKeysForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the GPG keys for a user. This information is accessible by anyone. - */ - listGpgKeysForUser: { - (params?: RestEndpointMethodTypes["users"]["listGpgKeysForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists your publicly visible email address, which you can set with the - * [Set primary email visibility for the authenticated user](https://docs.github.com/rest/users/emails#set-primary-email-visibility-for-the-authenticated-user) - * endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `user:email` scope to use this endpoint. - * @deprecated octokit.rest.users.listPublicEmailsForAuthenticated() has been renamed to octokit.rest.users.listPublicEmailsForAuthenticatedUser() (2021-10-05) - */ - listPublicEmailsForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["listPublicEmailsForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists your publicly visible email address, which you can set with the - * [Set primary email visibility for the authenticated user](https://docs.github.com/rest/users/emails#set-primary-email-visibility-for-the-authenticated-user) - * endpoint. - * - * OAuth app tokens and personal access tokens (classic) need the `user:email` scope to use this endpoint. - */ - listPublicEmailsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["listPublicEmailsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the _verified_ public SSH keys for a user. This is accessible by anyone. - */ - listPublicKeysForUser: { - (params?: RestEndpointMethodTypes["users"]["listPublicKeysForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the public SSH keys for the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `read:public_key` scope to use this endpoint. - * @deprecated octokit.rest.users.listPublicSshKeysForAuthenticated() has been renamed to octokit.rest.users.listPublicSshKeysForAuthenticatedUser() (2021-10-05) - */ - listPublicSshKeysForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["listPublicSshKeysForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the public SSH keys for the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `read:public_key` scope to use this endpoint. - */ - listPublicSshKeysForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["listPublicSshKeysForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all of your social accounts. - */ - listSocialAccountsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["listSocialAccountsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists social media accounts for a user. This endpoint is accessible by anyone. - */ - listSocialAccountsForUser: { - (params?: RestEndpointMethodTypes["users"]["listSocialAccountsForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the SSH signing keys for the authenticated user's GitHub account. - * - * OAuth app tokens and personal access tokens (classic) need the `read:ssh_signing_key` scope to use this endpoint. - */ - listSshSigningKeysForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["listSshSigningKeysForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the SSH signing keys for a user. This operation is accessible by anyone. - */ - listSshSigningKeysForUser: { - (params?: RestEndpointMethodTypes["users"]["listSshSigningKeysForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the visibility for your primary email addresses. - * @deprecated octokit.rest.users.setPrimaryEmailVisibilityForAuthenticated() has been renamed to octokit.rest.users.setPrimaryEmailVisibilityForAuthenticatedUser() (2021-10-05) - */ - setPrimaryEmailVisibilityForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["setPrimaryEmailVisibilityForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the visibility for your primary email addresses. - */ - setPrimaryEmailVisibilityForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["setPrimaryEmailVisibilityForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Unblocks the given user and returns a 204. - */ - unblock: { - (params?: RestEndpointMethodTypes["users"]["unblock"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth app tokens and personal access tokens (classic) need the `user:follow` scope to use this endpoint. - */ - unfollow: { - (params?: RestEndpointMethodTypes["users"]["unfollow"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API. - */ - updateAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["updateAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts deleted file mode 100644 index 87725fe..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts +++ /dev/null @@ -1,4199 +0,0 @@ -import type { Endpoints, RequestParameters } from "@octokit/types"; -export type RestEndpointMethodTypes = { - actions: { - addCustomLabelsToSelfHostedRunnerForOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/actions/runners/{runner_id}/labels"]["parameters"]; - response: Endpoints["POST /orgs/{org}/actions/runners/{runner_id}/labels"]["response"]; - }; - addCustomLabelsToSelfHostedRunnerForRepo: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["response"]; - }; - addRepoAccessToSelfHostedRunnerGroupInOrg: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"]["response"]; - }; - addSelectedRepoToOrgSecret: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"]["response"]; - }; - addSelectedRepoToOrgVariable: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"]["response"]; - }; - approveWorkflowRun: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"]["response"]; - }; - cancelWorkflowRun: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"]["response"]; - }; - createEnvironmentVariable: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/environments/{environment_name}/variables"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/environments/{environment_name}/variables"]["response"]; - }; - createHostedRunnerForOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/actions/hosted-runners"]["parameters"]; - response: Endpoints["POST /orgs/{org}/actions/hosted-runners"]["response"]; - }; - createOrUpdateEnvironmentSecret: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"]["response"]; - }; - createOrUpdateOrgSecret: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}"]["response"]; - }; - createOrUpdateRepoSecret: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["response"]; - }; - createOrgVariable: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/actions/variables"]["parameters"]; - response: Endpoints["POST /orgs/{org}/actions/variables"]["response"]; - }; - createRegistrationTokenForOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/actions/runners/registration-token"]["parameters"]; - response: Endpoints["POST /orgs/{org}/actions/runners/registration-token"]["response"]; - }; - createRegistrationTokenForRepo: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runners/registration-token"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runners/registration-token"]["response"]; - }; - createRemoveTokenForOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/actions/runners/remove-token"]["parameters"]; - response: Endpoints["POST /orgs/{org}/actions/runners/remove-token"]["response"]; - }; - createRemoveTokenForRepo: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runners/remove-token"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runners/remove-token"]["response"]; - }; - createRepoVariable: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/variables"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/variables"]["response"]; - }; - createWorkflowDispatch: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"]["response"]; - }; - deleteActionsCacheById: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"]["response"]; - }; - deleteActionsCacheByKey: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"]["response"]; - }; - deleteArtifact: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"]["response"]; - }; - deleteCustomImageFromOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"]["response"]; - }; - deleteCustomImageVersionFromOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"]["response"]; - }; - deleteEnvironmentSecret: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"]["response"]; - }; - deleteEnvironmentVariable: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"]["response"]; - }; - deleteHostedRunnerForOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"]["response"]; - }; - deleteOrgSecret: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/secrets/{secret_name}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/actions/secrets/{secret_name}"]["response"]; - }; - deleteOrgVariable: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/variables/{name}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/actions/variables/{name}"]["response"]; - }; - deleteRepoSecret: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["response"]; - }; - deleteRepoVariable: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/variables/{name}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/variables/{name}"]["response"]; - }; - deleteSelfHostedRunnerFromOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}"]["response"]; - }; - deleteSelfHostedRunnerFromRepo: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"]["response"]; - }; - deleteWorkflowRun: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"]["response"]; - }; - deleteWorkflowRunLogs: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"]["response"]; - }; - disableSelectedRepositoryGithubActionsOrganization: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"]["response"]; - }; - disableWorkflow: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"]["response"]; - }; - downloadArtifact: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"]["response"]; - }; - downloadJobLogsForWorkflowRun: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"]["response"]; - }; - downloadWorkflowRunAttemptLogs: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"]["response"]; - }; - downloadWorkflowRunLogs: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"]["response"]; - }; - enableSelectedRepositoryGithubActionsOrganization: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"]["response"]; - }; - enableWorkflow: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"]["response"]; - }; - forceCancelWorkflowRun: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"]["response"]; - }; - generateRunnerJitconfigForOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/actions/runners/generate-jitconfig"]["parameters"]; - response: Endpoints["POST /orgs/{org}/actions/runners/generate-jitconfig"]["response"]; - }; - generateRunnerJitconfigForRepo: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"]["response"]; - }; - getActionsCacheList: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["response"]; - }; - getActionsCacheUsage: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/cache/usage"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/cache/usage"]["response"]; - }; - getActionsCacheUsageByRepoForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["response"]; - }; - getActionsCacheUsageForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/cache/usage"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/cache/usage"]["response"]; - }; - getAllowedActionsOrganization: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/permissions/selected-actions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/permissions/selected-actions"]["response"]; - }; - getAllowedActionsRepository: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"]["response"]; - }; - getArtifact: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"]["response"]; - }; - getCustomImageForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"]["response"]; - }; - getCustomImageVersionForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"]["response"]; - }; - getCustomOidcSubClaimForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/oidc/customization/sub"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/oidc/customization/sub"]["response"]; - }; - getEnvironmentPublicKey: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key"]["response"]; - }; - getEnvironmentSecret: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"]["response"]; - }; - getEnvironmentVariable: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"]["response"]; - }; - getGithubActionsDefaultWorkflowPermissionsOrganization: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/permissions/workflow"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/permissions/workflow"]["response"]; - }; - getGithubActionsDefaultWorkflowPermissionsRepository: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/permissions/workflow"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions/workflow"]["response"]; - }; - getGithubActionsPermissionsOrganization: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/permissions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/permissions"]["response"]; - }; - getGithubActionsPermissionsRepository: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/permissions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions"]["response"]; - }; - getHostedRunnerForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"]["response"]; - }; - getHostedRunnersGithubOwnedImagesForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/hosted-runners/images/github-owned"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/hosted-runners/images/github-owned"]["response"]; - }; - getHostedRunnersLimitsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/hosted-runners/limits"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/hosted-runners/limits"]["response"]; - }; - getHostedRunnersMachineSpecsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/hosted-runners/machine-sizes"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/hosted-runners/machine-sizes"]["response"]; - }; - getHostedRunnersPartnerImagesForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/hosted-runners/images/partner"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/hosted-runners/images/partner"]["response"]; - }; - getHostedRunnersPlatformsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/hosted-runners/platforms"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/hosted-runners/platforms"]["response"]; - }; - getJobForWorkflowRun: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"]["response"]; - }; - getOrgPublicKey: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/secrets/public-key"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/secrets/public-key"]["response"]; - }; - getOrgSecret: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}"]["response"]; - }; - getOrgVariable: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/variables/{name}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/variables/{name}"]["response"]; - }; - getPendingDeploymentsForRun: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"]["response"]; - }; - getRepoPermissions: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/permissions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions"]["response"]; - }; - getRepoPublicKey: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/secrets/public-key"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets/public-key"]["response"]; - }; - getRepoSecret: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["response"]; - }; - getRepoVariable: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/variables/{name}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/variables/{name}"]["response"]; - }; - getReviewsForRun: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"]["response"]; - }; - getSelfHostedRunnerForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/runners/{runner_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runners/{runner_id}"]["response"]; - }; - getSelfHostedRunnerForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"]["response"]; - }; - getWorkflow: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"]["response"]; - }; - getWorkflowAccessToRepository: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/permissions/access"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions/access"]["response"]; - }; - getWorkflowRun: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}"]["response"]; - }; - getWorkflowRunAttempt: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"]["response"]; - }; - getWorkflowRunUsage: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"]["response"]; - }; - getWorkflowUsage: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"]["response"]; - }; - listArtifactsForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"]; - }; - listCustomImageVersionsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions"]["response"]; - }; - listCustomImagesForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/hosted-runners/images/custom"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/hosted-runners/images/custom"]["response"]; - }; - listEnvironmentSecrets: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"]["response"]; - }; - listEnvironmentVariables: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"]["response"]; - }; - listGithubHostedRunnersInGroupForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"]["response"]; - }; - listHostedRunnersForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/hosted-runners"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/hosted-runners"]["response"]; - }; - listJobsForWorkflowRun: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"]; - }; - listJobsForWorkflowRunAttempt: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["response"]; - }; - listLabelsForSelfHostedRunnerForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/runners/{runner_id}/labels"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runners/{runner_id}/labels"]["response"]; - }; - listLabelsForSelfHostedRunnerForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["response"]; - }; - listOrgSecrets: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/secrets"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/secrets"]["response"]; - }; - listOrgVariables: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/variables"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/variables"]["response"]; - }; - listRepoOrganizationSecrets: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/organization-secrets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/organization-secrets"]["response"]; - }; - listRepoOrganizationVariables: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/organization-variables"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/organization-variables"]["response"]; - }; - listRepoSecrets: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"]; - }; - listRepoVariables: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/variables"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/variables"]["response"]; - }; - listRepoWorkflows: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"]; - }; - listRunnerApplicationsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/runners/downloads"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runners/downloads"]["response"]; - }; - listRunnerApplicationsForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runners/downloads"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runners/downloads"]["response"]; - }; - listSelectedReposForOrgSecret: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"]; - }; - listSelectedReposForOrgVariable: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/variables/{name}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/variables/{name}/repositories"]["response"]; - }; - listSelectedRepositoriesEnabledGithubActionsOrganization: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"]; - }; - listSelfHostedRunnersForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/runners"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runners"]["response"]; - }; - listSelfHostedRunnersForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"]; - }; - listWorkflowRunArtifacts: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"]; - }; - listWorkflowRuns: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"]; - }; - listWorkflowRunsForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"]; - }; - reRunJobForWorkflowRun: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"]["response"]; - }; - reRunWorkflow: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"]["response"]; - }; - reRunWorkflowFailedJobs: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"]["response"]; - }; - removeAllCustomLabelsFromSelfHostedRunnerForOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"]["response"]; - }; - removeAllCustomLabelsFromSelfHostedRunnerForRepo: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["response"]; - }; - removeCustomLabelFromSelfHostedRunnerForOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"]["response"]; - }; - removeCustomLabelFromSelfHostedRunnerForRepo: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"]["response"]; - }; - removeSelectedRepoFromOrgSecret: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"]["response"]; - }; - removeSelectedRepoFromOrgVariable: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"]["response"]; - }; - reviewCustomGatesForRun: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"]["response"]; - }; - reviewPendingDeploymentsForRun: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"]["response"]; - }; - setAllowedActionsOrganization: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/permissions/selected-actions"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/actions/permissions/selected-actions"]["response"]; - }; - setAllowedActionsRepository: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"]["response"]; - }; - setCustomLabelsForSelfHostedRunnerForOrg: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/runners/{runner_id}/labels"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/actions/runners/{runner_id}/labels"]["response"]; - }; - setCustomLabelsForSelfHostedRunnerForRepo: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["response"]; - }; - setCustomOidcSubClaimForRepo: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"]["response"]; - }; - setGithubActionsDefaultWorkflowPermissionsOrganization: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/permissions/workflow"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/actions/permissions/workflow"]["response"]; - }; - setGithubActionsDefaultWorkflowPermissionsRepository: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/workflow"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/workflow"]["response"]; - }; - setGithubActionsPermissionsOrganization: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/permissions"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/actions/permissions"]["response"]; - }; - setGithubActionsPermissionsRepository: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/permissions"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions"]["response"]; - }; - setSelectedReposForOrgSecret: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"]; - }; - setSelectedReposForOrgVariable: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/variables/{name}/repositories"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/actions/variables/{name}/repositories"]["response"]; - }; - setSelectedRepositoriesEnabledGithubActionsOrganization: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/permissions/repositories"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/actions/permissions/repositories"]["response"]; - }; - setWorkflowAccessToRepository: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/access"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/access"]["response"]; - }; - updateEnvironmentVariable: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"]["response"]; - }; - updateHostedRunnerForOrg: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"]["response"]; - }; - updateOrgVariable: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/actions/variables/{name}"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/actions/variables/{name}"]["response"]; - }; - updateRepoVariable: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/actions/variables/{name}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/actions/variables/{name}"]["response"]; - }; - }; - activity: { - checkRepoIsStarredByAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/starred/{owner}/{repo}"]["parameters"]; - response: Endpoints["GET /user/starred/{owner}/{repo}"]["response"]; - }; - deleteRepoSubscription: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/subscription"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/subscription"]["response"]; - }; - deleteThreadSubscription: { - parameters: RequestParameters & Endpoints["DELETE /notifications/threads/{thread_id}/subscription"]["parameters"]; - response: Endpoints["DELETE /notifications/threads/{thread_id}/subscription"]["response"]; - }; - getFeeds: { - parameters: RequestParameters & Endpoints["GET /feeds"]["parameters"]; - response: Endpoints["GET /feeds"]["response"]; - }; - getRepoSubscription: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/subscription"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/subscription"]["response"]; - }; - getThread: { - parameters: RequestParameters & Endpoints["GET /notifications/threads/{thread_id}"]["parameters"]; - response: Endpoints["GET /notifications/threads/{thread_id}"]["response"]; - }; - getThreadSubscriptionForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /notifications/threads/{thread_id}/subscription"]["parameters"]; - response: Endpoints["GET /notifications/threads/{thread_id}/subscription"]["response"]; - }; - listEventsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/events"]["parameters"]; - response: Endpoints["GET /users/{username}/events"]["response"]; - }; - listNotificationsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /notifications"]["parameters"]; - response: Endpoints["GET /notifications"]["response"]; - }; - listOrgEventsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/events/orgs/{org}"]["parameters"]; - response: Endpoints["GET /users/{username}/events/orgs/{org}"]["response"]; - }; - listPublicEvents: { - parameters: RequestParameters & Endpoints["GET /events"]["parameters"]; - response: Endpoints["GET /events"]["response"]; - }; - listPublicEventsForRepoNetwork: { - parameters: RequestParameters & Endpoints["GET /networks/{owner}/{repo}/events"]["parameters"]; - response: Endpoints["GET /networks/{owner}/{repo}/events"]["response"]; - }; - listPublicEventsForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/events/public"]["parameters"]; - response: Endpoints["GET /users/{username}/events/public"]["response"]; - }; - listPublicOrgEvents: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/events"]["parameters"]; - response: Endpoints["GET /orgs/{org}/events"]["response"]; - }; - listReceivedEventsForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/received_events"]["parameters"]; - response: Endpoints["GET /users/{username}/received_events"]["response"]; - }; - listReceivedPublicEventsForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/received_events/public"]["parameters"]; - response: Endpoints["GET /users/{username}/received_events/public"]["response"]; - }; - listRepoEvents: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/events"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/events"]["response"]; - }; - listRepoNotificationsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/notifications"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/notifications"]["response"]; - }; - listReposStarredByAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/starred"]["parameters"]; - response: Endpoints["GET /user/starred"]["response"]; - }; - listReposStarredByUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/starred"]["parameters"]; - response: Endpoints["GET /users/{username}/starred"]["response"]; - }; - listReposWatchedByUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/subscriptions"]["parameters"]; - response: Endpoints["GET /users/{username}/subscriptions"]["response"]; - }; - listStargazersForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/stargazers"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["response"]; - }; - listWatchedReposForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/subscriptions"]["parameters"]; - response: Endpoints["GET /user/subscriptions"]["response"]; - }; - listWatchersForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/subscribers"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["response"]; - }; - markNotificationsAsRead: { - parameters: RequestParameters & Endpoints["PUT /notifications"]["parameters"]; - response: Endpoints["PUT /notifications"]["response"]; - }; - markRepoNotificationsAsRead: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/notifications"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/notifications"]["response"]; - }; - markThreadAsDone: { - parameters: RequestParameters & Endpoints["DELETE /notifications/threads/{thread_id}"]["parameters"]; - response: Endpoints["DELETE /notifications/threads/{thread_id}"]["response"]; - }; - markThreadAsRead: { - parameters: RequestParameters & Endpoints["PATCH /notifications/threads/{thread_id}"]["parameters"]; - response: Endpoints["PATCH /notifications/threads/{thread_id}"]["response"]; - }; - setRepoSubscription: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/subscription"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/subscription"]["response"]; - }; - setThreadSubscription: { - parameters: RequestParameters & Endpoints["PUT /notifications/threads/{thread_id}/subscription"]["parameters"]; - response: Endpoints["PUT /notifications/threads/{thread_id}/subscription"]["response"]; - }; - starRepoForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["PUT /user/starred/{owner}/{repo}"]["parameters"]; - response: Endpoints["PUT /user/starred/{owner}/{repo}"]["response"]; - }; - unstarRepoForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/starred/{owner}/{repo}"]["parameters"]; - response: Endpoints["DELETE /user/starred/{owner}/{repo}"]["response"]; - }; - }; - apps: { - addRepoToInstallation: { - parameters: RequestParameters & Endpoints["PUT /user/installations/{installation_id}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["PUT /user/installations/{installation_id}/repositories/{repository_id}"]["response"]; - }; - addRepoToInstallationForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["PUT /user/installations/{installation_id}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["PUT /user/installations/{installation_id}/repositories/{repository_id}"]["response"]; - }; - checkToken: { - parameters: RequestParameters & Endpoints["POST /applications/{client_id}/token"]["parameters"]; - response: Endpoints["POST /applications/{client_id}/token"]["response"]; - }; - createFromManifest: { - parameters: RequestParameters & Endpoints["POST /app-manifests/{code}/conversions"]["parameters"]; - response: Endpoints["POST /app-manifests/{code}/conversions"]["response"]; - }; - createInstallationAccessToken: { - parameters: RequestParameters & Endpoints["POST /app/installations/{installation_id}/access_tokens"]["parameters"]; - response: Endpoints["POST /app/installations/{installation_id}/access_tokens"]["response"]; - }; - deleteAuthorization: { - parameters: RequestParameters & Endpoints["DELETE /applications/{client_id}/grant"]["parameters"]; - response: Endpoints["DELETE /applications/{client_id}/grant"]["response"]; - }; - deleteInstallation: { - parameters: RequestParameters & Endpoints["DELETE /app/installations/{installation_id}"]["parameters"]; - response: Endpoints["DELETE /app/installations/{installation_id}"]["response"]; - }; - deleteToken: { - parameters: RequestParameters & Endpoints["DELETE /applications/{client_id}/token"]["parameters"]; - response: Endpoints["DELETE /applications/{client_id}/token"]["response"]; - }; - getAuthenticated: { - parameters: RequestParameters & Endpoints["GET /app"]["parameters"]; - response: Endpoints["GET /app"]["response"]; - }; - getBySlug: { - parameters: RequestParameters & Endpoints["GET /apps/{app_slug}"]["parameters"]; - response: Endpoints["GET /apps/{app_slug}"]["response"]; - }; - getInstallation: { - parameters: RequestParameters & Endpoints["GET /app/installations/{installation_id}"]["parameters"]; - response: Endpoints["GET /app/installations/{installation_id}"]["response"]; - }; - getOrgInstallation: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/installation"]["parameters"]; - response: Endpoints["GET /orgs/{org}/installation"]["response"]; - }; - getRepoInstallation: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/installation"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/installation"]["response"]; - }; - getSubscriptionPlanForAccount: { - parameters: RequestParameters & Endpoints["GET /marketplace_listing/accounts/{account_id}"]["parameters"]; - response: Endpoints["GET /marketplace_listing/accounts/{account_id}"]["response"]; - }; - getSubscriptionPlanForAccountStubbed: { - parameters: RequestParameters & Endpoints["GET /marketplace_listing/stubbed/accounts/{account_id}"]["parameters"]; - response: Endpoints["GET /marketplace_listing/stubbed/accounts/{account_id}"]["response"]; - }; - getUserInstallation: { - parameters: RequestParameters & Endpoints["GET /users/{username}/installation"]["parameters"]; - response: Endpoints["GET /users/{username}/installation"]["response"]; - }; - getWebhookConfigForApp: { - parameters: RequestParameters & Endpoints["GET /app/hook/config"]["parameters"]; - response: Endpoints["GET /app/hook/config"]["response"]; - }; - getWebhookDelivery: { - parameters: RequestParameters & Endpoints["GET /app/hook/deliveries/{delivery_id}"]["parameters"]; - response: Endpoints["GET /app/hook/deliveries/{delivery_id}"]["response"]; - }; - listAccountsForPlan: { - parameters: RequestParameters & Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["parameters"]; - response: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["response"]; - }; - listAccountsForPlanStubbed: { - parameters: RequestParameters & Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["parameters"]; - response: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["response"]; - }; - listInstallationReposForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/installations/{installation_id}/repositories"]["parameters"]; - response: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"]; - }; - listInstallationRequestsForAuthenticatedApp: { - parameters: RequestParameters & Endpoints["GET /app/installation-requests"]["parameters"]; - response: Endpoints["GET /app/installation-requests"]["response"]; - }; - listInstallations: { - parameters: RequestParameters & Endpoints["GET /app/installations"]["parameters"]; - response: Endpoints["GET /app/installations"]["response"]; - }; - listInstallationsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/installations"]["parameters"]; - response: Endpoints["GET /user/installations"]["response"]; - }; - listPlans: { - parameters: RequestParameters & Endpoints["GET /marketplace_listing/plans"]["parameters"]; - response: Endpoints["GET /marketplace_listing/plans"]["response"]; - }; - listPlansStubbed: { - parameters: RequestParameters & Endpoints["GET /marketplace_listing/stubbed/plans"]["parameters"]; - response: Endpoints["GET /marketplace_listing/stubbed/plans"]["response"]; - }; - listReposAccessibleToInstallation: { - parameters: RequestParameters & Endpoints["GET /installation/repositories"]["parameters"]; - response: Endpoints["GET /installation/repositories"]["response"]; - }; - listSubscriptionsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/marketplace_purchases"]["parameters"]; - response: Endpoints["GET /user/marketplace_purchases"]["response"]; - }; - listSubscriptionsForAuthenticatedUserStubbed: { - parameters: RequestParameters & Endpoints["GET /user/marketplace_purchases/stubbed"]["parameters"]; - response: Endpoints["GET /user/marketplace_purchases/stubbed"]["response"]; - }; - listWebhookDeliveries: { - parameters: RequestParameters & Endpoints["GET /app/hook/deliveries"]["parameters"]; - response: Endpoints["GET /app/hook/deliveries"]["response"]; - }; - redeliverWebhookDelivery: { - parameters: RequestParameters & Endpoints["POST /app/hook/deliveries/{delivery_id}/attempts"]["parameters"]; - response: Endpoints["POST /app/hook/deliveries/{delivery_id}/attempts"]["response"]; - }; - removeRepoFromInstallation: { - parameters: RequestParameters & Endpoints["DELETE /user/installations/{installation_id}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["DELETE /user/installations/{installation_id}/repositories/{repository_id}"]["response"]; - }; - removeRepoFromInstallationForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/installations/{installation_id}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["DELETE /user/installations/{installation_id}/repositories/{repository_id}"]["response"]; - }; - resetToken: { - parameters: RequestParameters & Endpoints["PATCH /applications/{client_id}/token"]["parameters"]; - response: Endpoints["PATCH /applications/{client_id}/token"]["response"]; - }; - revokeInstallationAccessToken: { - parameters: RequestParameters & Endpoints["DELETE /installation/token"]["parameters"]; - response: Endpoints["DELETE /installation/token"]["response"]; - }; - scopeToken: { - parameters: RequestParameters & Endpoints["POST /applications/{client_id}/token/scoped"]["parameters"]; - response: Endpoints["POST /applications/{client_id}/token/scoped"]["response"]; - }; - suspendInstallation: { - parameters: RequestParameters & Endpoints["PUT /app/installations/{installation_id}/suspended"]["parameters"]; - response: Endpoints["PUT /app/installations/{installation_id}/suspended"]["response"]; - }; - unsuspendInstallation: { - parameters: RequestParameters & Endpoints["DELETE /app/installations/{installation_id}/suspended"]["parameters"]; - response: Endpoints["DELETE /app/installations/{installation_id}/suspended"]["response"]; - }; - updateWebhookConfigForApp: { - parameters: RequestParameters & Endpoints["PATCH /app/hook/config"]["parameters"]; - response: Endpoints["PATCH /app/hook/config"]["response"]; - }; - }; - billing: { - getGithubActionsBillingOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/settings/billing/actions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/settings/billing/actions"]["response"]; - }; - getGithubActionsBillingUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/settings/billing/actions"]["parameters"]; - response: Endpoints["GET /users/{username}/settings/billing/actions"]["response"]; - }; - getGithubBillingPremiumRequestUsageReportOrg: { - parameters: RequestParameters & Endpoints["GET /organizations/{org}/settings/billing/premium_request/usage"]["parameters"]; - response: Endpoints["GET /organizations/{org}/settings/billing/premium_request/usage"]["response"]; - }; - getGithubBillingPremiumRequestUsageReportUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/settings/billing/premium_request/usage"]["parameters"]; - response: Endpoints["GET /users/{username}/settings/billing/premium_request/usage"]["response"]; - }; - getGithubBillingUsageReportOrg: { - parameters: RequestParameters & Endpoints["GET /organizations/{org}/settings/billing/usage"]["parameters"]; - response: Endpoints["GET /organizations/{org}/settings/billing/usage"]["response"]; - }; - getGithubBillingUsageReportUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/settings/billing/usage"]["parameters"]; - response: Endpoints["GET /users/{username}/settings/billing/usage"]["response"]; - }; - getGithubPackagesBillingOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/settings/billing/packages"]["parameters"]; - response: Endpoints["GET /orgs/{org}/settings/billing/packages"]["response"]; - }; - getGithubPackagesBillingUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/settings/billing/packages"]["parameters"]; - response: Endpoints["GET /users/{username}/settings/billing/packages"]["response"]; - }; - getSharedStorageBillingOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/settings/billing/shared-storage"]["parameters"]; - response: Endpoints["GET /orgs/{org}/settings/billing/shared-storage"]["response"]; - }; - getSharedStorageBillingUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/settings/billing/shared-storage"]["parameters"]; - response: Endpoints["GET /users/{username}/settings/billing/shared-storage"]["response"]; - }; - }; - campaigns: { - createCampaign: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/campaigns"]["parameters"]; - response: Endpoints["POST /orgs/{org}/campaigns"]["response"]; - }; - deleteCampaign: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/campaigns/{campaign_number}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/campaigns/{campaign_number}"]["response"]; - }; - getCampaignSummary: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/campaigns/{campaign_number}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/campaigns/{campaign_number}"]["response"]; - }; - listOrgCampaigns: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/campaigns"]["parameters"]; - response: Endpoints["GET /orgs/{org}/campaigns"]["response"]; - }; - updateCampaign: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/campaigns/{campaign_number}"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/campaigns/{campaign_number}"]["response"]; - }; - }; - checks: { - create: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/check-runs"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/check-runs"]["response"]; - }; - createSuite: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/check-suites"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/check-suites"]["response"]; - }; - get: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"]["response"]; - }; - getSuite: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"]["response"]; - }; - listAnnotations: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["response"]; - }; - listForRef: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"]; - }; - listForSuite: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"]; - }; - listSuitesForRef: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"]; - }; - rerequestRun: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"]["response"]; - }; - rerequestSuite: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"]["response"]; - }; - setSuitesPreferences: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/check-suites/preferences"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/check-suites/preferences"]["response"]; - }; - update: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]["response"]; - }; - }; - codeScanning: { - commitAutofix: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits"]["response"]; - }; - createAutofix: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"]["response"]; - }; - createVariantAnalysis: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses"]["response"]; - }; - deleteAnalysis: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"]["response"]; - }; - deleteCodeqlDatabase: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"]["response"]; - }; - getAlert: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"]["response"]; - }; - getAnalysis: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"]["response"]; - }; - getAutofix: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"]["response"]; - }; - getCodeqlDatabase: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"]["response"]; - }; - getDefaultSetup: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/default-setup"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/default-setup"]["response"]; - }; - getSarif: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"]["response"]; - }; - getVariantAnalysis: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}"]["response"]; - }; - getVariantAnalysisRepoTask: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}"]["response"]; - }; - listAlertInstances: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["response"]; - }; - listAlertsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/code-scanning/alerts"]["parameters"]; - response: Endpoints["GET /orgs/{org}/code-scanning/alerts"]["response"]; - }; - listAlertsForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["response"]; - }; - listAlertsInstances: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["response"]; - }; - listCodeqlDatabases: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"]["response"]; - }; - listRecentAnalyses: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["response"]; - }; - updateAlert: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"]["response"]; - }; - updateDefaultSetup: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"]["response"]; - }; - uploadSarif: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/code-scanning/sarifs"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/code-scanning/sarifs"]["response"]; - }; - }; - codeSecurity: { - attachConfiguration: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/code-security/configurations/{configuration_id}/attach"]["parameters"]; - response: Endpoints["POST /orgs/{org}/code-security/configurations/{configuration_id}/attach"]["response"]; - }; - attachEnterpriseConfiguration: { - parameters: RequestParameters & Endpoints["POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach"]["parameters"]; - response: Endpoints["POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach"]["response"]; - }; - createConfiguration: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/code-security/configurations"]["parameters"]; - response: Endpoints["POST /orgs/{org}/code-security/configurations"]["response"]; - }; - createConfigurationForEnterprise: { - parameters: RequestParameters & Endpoints["POST /enterprises/{enterprise}/code-security/configurations"]["parameters"]; - response: Endpoints["POST /enterprises/{enterprise}/code-security/configurations"]["response"]; - }; - deleteConfiguration: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/code-security/configurations/{configuration_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/code-security/configurations/{configuration_id}"]["response"]; - }; - deleteConfigurationForEnterprise: { - parameters: RequestParameters & Endpoints["DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}"]["parameters"]; - response: Endpoints["DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}"]["response"]; - }; - detachConfiguration: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/code-security/configurations/detach"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/code-security/configurations/detach"]["response"]; - }; - getConfiguration: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/code-security/configurations/{configuration_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/code-security/configurations/{configuration_id}"]["response"]; - }; - getConfigurationForRepository: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-security-configuration"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-security-configuration"]["response"]; - }; - getConfigurationsForEnterprise: { - parameters: RequestParameters & Endpoints["GET /enterprises/{enterprise}/code-security/configurations"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/code-security/configurations"]["response"]; - }; - getConfigurationsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/code-security/configurations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/code-security/configurations"]["response"]; - }; - getDefaultConfigurations: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/code-security/configurations/defaults"]["parameters"]; - response: Endpoints["GET /orgs/{org}/code-security/configurations/defaults"]["response"]; - }; - getDefaultConfigurationsForEnterprise: { - parameters: RequestParameters & Endpoints["GET /enterprises/{enterprise}/code-security/configurations/defaults"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/code-security/configurations/defaults"]["response"]; - }; - getRepositoriesForConfiguration: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"]["response"]; - }; - getRepositoriesForEnterpriseConfiguration: { - parameters: RequestParameters & Endpoints["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"]["response"]; - }; - getSingleConfigurationForEnterprise: { - parameters: RequestParameters & Endpoints["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}"]["response"]; - }; - setConfigurationAsDefault: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults"]["response"]; - }; - setConfigurationAsDefaultForEnterprise: { - parameters: RequestParameters & Endpoints["PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults"]["parameters"]; - response: Endpoints["PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults"]["response"]; - }; - updateConfiguration: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/code-security/configurations/{configuration_id}"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/code-security/configurations/{configuration_id}"]["response"]; - }; - updateEnterpriseConfiguration: { - parameters: RequestParameters & Endpoints["PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}"]["parameters"]; - response: Endpoints["PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}"]["response"]; - }; - }; - codesOfConduct: { - getAllCodesOfConduct: { - parameters: RequestParameters & Endpoints["GET /codes_of_conduct"]["parameters"]; - response: Endpoints["GET /codes_of_conduct"]["response"]; - }; - getConductCode: { - parameters: RequestParameters & Endpoints["GET /codes_of_conduct/{key}"]["parameters"]; - response: Endpoints["GET /codes_of_conduct/{key}"]["response"]; - }; - }; - codespaces: { - addRepositoryForSecretForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["response"]; - }; - addSelectedRepoToOrgSecret: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["response"]; - }; - checkPermissionsForDevcontainer: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/permissions_check"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/codespaces/permissions_check"]["response"]; - }; - codespaceMachinesForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/codespaces/{codespace_name}/machines"]["parameters"]; - response: Endpoints["GET /user/codespaces/{codespace_name}/machines"]["response"]; - }; - createForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/codespaces"]["parameters"]; - response: Endpoints["POST /user/codespaces"]["response"]; - }; - createOrUpdateOrgSecret: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/codespaces/secrets/{secret_name}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/codespaces/secrets/{secret_name}"]["response"]; - }; - createOrUpdateRepoSecret: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["response"]; - }; - createOrUpdateSecretForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["PUT /user/codespaces/secrets/{secret_name}"]["parameters"]; - response: Endpoints["PUT /user/codespaces/secrets/{secret_name}"]["response"]; - }; - createWithPrForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"]["response"]; - }; - createWithRepoForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/codespaces"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/codespaces"]["response"]; - }; - deleteForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/codespaces/{codespace_name}"]["parameters"]; - response: Endpoints["DELETE /user/codespaces/{codespace_name}"]["response"]; - }; - deleteFromOrganization: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"]["response"]; - }; - deleteOrgSecret: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"]["response"]; - }; - deleteRepoSecret: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["response"]; - }; - deleteSecretForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/codespaces/secrets/{secret_name}"]["parameters"]; - response: Endpoints["DELETE /user/codespaces/secrets/{secret_name}"]["response"]; - }; - exportForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/codespaces/{codespace_name}/exports"]["parameters"]; - response: Endpoints["POST /user/codespaces/{codespace_name}/exports"]["response"]; - }; - getCodespacesForUserInOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/members/{username}/codespaces"]["parameters"]; - response: Endpoints["GET /orgs/{org}/members/{username}/codespaces"]["response"]; - }; - getExportDetailsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/codespaces/{codespace_name}/exports/{export_id}"]["parameters"]; - response: Endpoints["GET /user/codespaces/{codespace_name}/exports/{export_id}"]["response"]; - }; - getForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/codespaces/{codespace_name}"]["parameters"]; - response: Endpoints["GET /user/codespaces/{codespace_name}"]["response"]; - }; - getOrgPublicKey: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/codespaces/secrets/public-key"]["parameters"]; - response: Endpoints["GET /orgs/{org}/codespaces/secrets/public-key"]["response"]; - }; - getOrgSecret: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}"]["response"]; - }; - getPublicKeyForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/codespaces/secrets/public-key"]["parameters"]; - response: Endpoints["GET /user/codespaces/secrets/public-key"]["response"]; - }; - getRepoPublicKey: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"]["response"]; - }; - getRepoSecret: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["response"]; - }; - getSecretForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/codespaces/secrets/{secret_name}"]["parameters"]; - response: Endpoints["GET /user/codespaces/secrets/{secret_name}"]["response"]; - }; - listDevcontainersInRepositoryForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["response"]; - }; - listForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/codespaces"]["parameters"]; - response: Endpoints["GET /user/codespaces"]["response"]; - }; - listInOrganization: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/codespaces"]["parameters"]; - response: Endpoints["GET /orgs/{org}/codespaces"]["response"]; - }; - listInRepositoryForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["response"]; - }; - listOrgSecrets: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/codespaces/secrets"]["parameters"]; - response: Endpoints["GET /orgs/{org}/codespaces/secrets"]["response"]; - }; - listRepoSecrets: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["response"]; - }; - listRepositoriesForSecretForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/codespaces/secrets/{secret_name}/repositories"]["parameters"]; - response: Endpoints["GET /user/codespaces/secrets/{secret_name}/repositories"]["response"]; - }; - listSecretsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/codespaces/secrets"]["parameters"]; - response: Endpoints["GET /user/codespaces/secrets"]["response"]; - }; - listSelectedReposForOrgSecret: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["response"]; - }; - preFlightWithRepoForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/new"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/codespaces/new"]["response"]; - }; - publishForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/codespaces/{codespace_name}/publish"]["parameters"]; - response: Endpoints["POST /user/codespaces/{codespace_name}/publish"]["response"]; - }; - removeRepositoryForSecretForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["response"]; - }; - removeSelectedRepoFromOrgSecret: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["response"]; - }; - repoMachinesForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/machines"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/codespaces/machines"]["response"]; - }; - setRepositoriesForSecretForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["PUT /user/codespaces/secrets/{secret_name}/repositories"]["parameters"]; - response: Endpoints["PUT /user/codespaces/secrets/{secret_name}/repositories"]["response"]; - }; - setSelectedReposForOrgSecret: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["response"]; - }; - startForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/codespaces/{codespace_name}/start"]["parameters"]; - response: Endpoints["POST /user/codespaces/{codespace_name}/start"]["response"]; - }; - stopForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/codespaces/{codespace_name}/stop"]["parameters"]; - response: Endpoints["POST /user/codespaces/{codespace_name}/stop"]["response"]; - }; - stopInOrganization: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"]["parameters"]; - response: Endpoints["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"]["response"]; - }; - updateForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["PATCH /user/codespaces/{codespace_name}"]["parameters"]; - response: Endpoints["PATCH /user/codespaces/{codespace_name}"]["response"]; - }; - }; - copilot: { - addCopilotSeatsForTeams: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/copilot/billing/selected_teams"]["parameters"]; - response: Endpoints["POST /orgs/{org}/copilot/billing/selected_teams"]["response"]; - }; - addCopilotSeatsForUsers: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/copilot/billing/selected_users"]["parameters"]; - response: Endpoints["POST /orgs/{org}/copilot/billing/selected_users"]["response"]; - }; - cancelCopilotSeatAssignmentForTeams: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/copilot/billing/selected_teams"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/copilot/billing/selected_teams"]["response"]; - }; - cancelCopilotSeatAssignmentForUsers: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/copilot/billing/selected_users"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/copilot/billing/selected_users"]["response"]; - }; - copilotMetricsForOrganization: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/copilot/metrics"]["parameters"]; - response: Endpoints["GET /orgs/{org}/copilot/metrics"]["response"]; - }; - copilotMetricsForTeam: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/team/{team_slug}/copilot/metrics"]["parameters"]; - response: Endpoints["GET /orgs/{org}/team/{team_slug}/copilot/metrics"]["response"]; - }; - getCopilotOrganizationDetails: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/copilot/billing"]["parameters"]; - response: Endpoints["GET /orgs/{org}/copilot/billing"]["response"]; - }; - getCopilotSeatDetailsForUser: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/members/{username}/copilot"]["parameters"]; - response: Endpoints["GET /orgs/{org}/members/{username}/copilot"]["response"]; - }; - listCopilotSeats: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/copilot/billing/seats"]["parameters"]; - response: Endpoints["GET /orgs/{org}/copilot/billing/seats"]["response"]; - }; - }; - credentials: { - revoke: { - parameters: RequestParameters & Endpoints["POST /credentials/revoke"]["parameters"]; - response: Endpoints["POST /credentials/revoke"]["response"]; - }; - }; - dependabot: { - addSelectedRepoToOrgSecret: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"]["response"]; - }; - createOrUpdateOrgSecret: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}"]["response"]; - }; - createOrUpdateRepoSecret: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["response"]; - }; - deleteOrgSecret: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"]["response"]; - }; - deleteRepoSecret: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["response"]; - }; - getAlert: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"]["response"]; - }; - getOrgPublicKey: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/dependabot/secrets/public-key"]["parameters"]; - response: Endpoints["GET /orgs/{org}/dependabot/secrets/public-key"]["response"]; - }; - getOrgSecret: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}"]["response"]; - }; - getRepoPublicKey: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"]["response"]; - }; - getRepoSecret: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["response"]; - }; - listAlertsForEnterprise: { - parameters: RequestParameters & Endpoints["GET /enterprises/{enterprise}/dependabot/alerts"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/dependabot/alerts"]["response"]; - }; - listAlertsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/dependabot/alerts"]["parameters"]; - response: Endpoints["GET /orgs/{org}/dependabot/alerts"]["response"]; - }; - listAlertsForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts"]["response"]; - }; - listOrgSecrets: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/dependabot/secrets"]["parameters"]; - response: Endpoints["GET /orgs/{org}/dependabot/secrets"]["response"]; - }; - listRepoSecrets: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["response"]; - }; - listSelectedReposForOrgSecret: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"]; - }; - removeSelectedRepoFromOrgSecret: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"]["response"]; - }; - repositoryAccessForOrg: { - parameters: RequestParameters & Endpoints["GET /organizations/{org}/dependabot/repository-access"]["parameters"]; - response: Endpoints["GET /organizations/{org}/dependabot/repository-access"]["response"]; - }; - setRepositoryAccessDefaultLevel: { - parameters: RequestParameters & Endpoints["PUT /organizations/{org}/dependabot/repository-access/default-level"]["parameters"]; - response: Endpoints["PUT /organizations/{org}/dependabot/repository-access/default-level"]["response"]; - }; - setSelectedReposForOrgSecret: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"]; - }; - updateAlert: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"]["response"]; - }; - updateRepositoryAccessForOrg: { - parameters: RequestParameters & Endpoints["PATCH /organizations/{org}/dependabot/repository-access"]["parameters"]; - response: Endpoints["PATCH /organizations/{org}/dependabot/repository-access"]["response"]; - }; - }; - dependencyGraph: { - createRepositorySnapshot: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/dependency-graph/snapshots"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/dependency-graph/snapshots"]["response"]; - }; - diffRange: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"]["response"]; - }; - exportSbom: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependency-graph/sbom"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/dependency-graph/sbom"]["response"]; - }; - }; - emojis: { - get: { - parameters: RequestParameters & Endpoints["GET /emojis"]["parameters"]; - response: Endpoints["GET /emojis"]["response"]; - }; - }; - enterpriseTeamMemberships: { - add: { - parameters: RequestParameters & Endpoints["PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"]["parameters"]; - response: Endpoints["PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"]["response"]; - }; - bulkAdd: { - parameters: RequestParameters & Endpoints["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add"]["parameters"]; - response: Endpoints["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add"]["response"]; - }; - bulkRemove: { - parameters: RequestParameters & Endpoints["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove"]["parameters"]; - response: Endpoints["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove"]["response"]; - }; - get: { - parameters: RequestParameters & Endpoints["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"]["response"]; - }; - list: { - parameters: RequestParameters & Endpoints["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships"]["response"]; - }; - remove: { - parameters: RequestParameters & Endpoints["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"]["parameters"]; - response: Endpoints["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"]["response"]; - }; - }; - enterpriseTeamOrganizations: { - add: { - parameters: RequestParameters & Endpoints["PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"]["parameters"]; - response: Endpoints["PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"]["response"]; - }; - bulkAdd: { - parameters: RequestParameters & Endpoints["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add"]["parameters"]; - response: Endpoints["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add"]["response"]; - }; - bulkRemove: { - parameters: RequestParameters & Endpoints["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove"]["parameters"]; - response: Endpoints["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove"]["response"]; - }; - delete: { - parameters: RequestParameters & Endpoints["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"]["parameters"]; - response: Endpoints["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"]["response"]; - }; - getAssignment: { - parameters: RequestParameters & Endpoints["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"]["response"]; - }; - getAssignments: { - parameters: RequestParameters & Endpoints["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations"]["response"]; - }; - }; - enterpriseTeams: { - create: { - parameters: RequestParameters & Endpoints["POST /enterprises/{enterprise}/teams"]["parameters"]; - response: Endpoints["POST /enterprises/{enterprise}/teams"]["response"]; - }; - delete: { - parameters: RequestParameters & Endpoints["DELETE /enterprises/{enterprise}/teams/{team_slug}"]["parameters"]; - response: Endpoints["DELETE /enterprises/{enterprise}/teams/{team_slug}"]["response"]; - }; - get: { - parameters: RequestParameters & Endpoints["GET /enterprises/{enterprise}/teams/{team_slug}"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/teams/{team_slug}"]["response"]; - }; - list: { - parameters: RequestParameters & Endpoints["GET /enterprises/{enterprise}/teams"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/teams"]["response"]; - }; - update: { - parameters: RequestParameters & Endpoints["PATCH /enterprises/{enterprise}/teams/{team_slug}"]["parameters"]; - response: Endpoints["PATCH /enterprises/{enterprise}/teams/{team_slug}"]["response"]; - }; - }; - gists: { - checkIsStarred: { - parameters: RequestParameters & Endpoints["GET /gists/{gist_id}/star"]["parameters"]; - response: Endpoints["GET /gists/{gist_id}/star"]["response"]; - }; - create: { - parameters: RequestParameters & Endpoints["POST /gists"]["parameters"]; - response: Endpoints["POST /gists"]["response"]; - }; - createComment: { - parameters: RequestParameters & Endpoints["POST /gists/{gist_id}/comments"]["parameters"]; - response: Endpoints["POST /gists/{gist_id}/comments"]["response"]; - }; - delete: { - parameters: RequestParameters & Endpoints["DELETE /gists/{gist_id}"]["parameters"]; - response: Endpoints["DELETE /gists/{gist_id}"]["response"]; - }; - deleteComment: { - parameters: RequestParameters & Endpoints["DELETE /gists/{gist_id}/comments/{comment_id}"]["parameters"]; - response: Endpoints["DELETE /gists/{gist_id}/comments/{comment_id}"]["response"]; - }; - fork: { - parameters: RequestParameters & Endpoints["POST /gists/{gist_id}/forks"]["parameters"]; - response: Endpoints["POST /gists/{gist_id}/forks"]["response"]; - }; - get: { - parameters: RequestParameters & Endpoints["GET /gists/{gist_id}"]["parameters"]; - response: Endpoints["GET /gists/{gist_id}"]["response"]; - }; - getComment: { - parameters: RequestParameters & Endpoints["GET /gists/{gist_id}/comments/{comment_id}"]["parameters"]; - response: Endpoints["GET /gists/{gist_id}/comments/{comment_id}"]["response"]; - }; - getRevision: { - parameters: RequestParameters & Endpoints["GET /gists/{gist_id}/{sha}"]["parameters"]; - response: Endpoints["GET /gists/{gist_id}/{sha}"]["response"]; - }; - list: { - parameters: RequestParameters & Endpoints["GET /gists"]["parameters"]; - response: Endpoints["GET /gists"]["response"]; - }; - listComments: { - parameters: RequestParameters & Endpoints["GET /gists/{gist_id}/comments"]["parameters"]; - response: Endpoints["GET /gists/{gist_id}/comments"]["response"]; - }; - listCommits: { - parameters: RequestParameters & Endpoints["GET /gists/{gist_id}/commits"]["parameters"]; - response: Endpoints["GET /gists/{gist_id}/commits"]["response"]; - }; - listForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/gists"]["parameters"]; - response: Endpoints["GET /users/{username}/gists"]["response"]; - }; - listForks: { - parameters: RequestParameters & Endpoints["GET /gists/{gist_id}/forks"]["parameters"]; - response: Endpoints["GET /gists/{gist_id}/forks"]["response"]; - }; - listPublic: { - parameters: RequestParameters & Endpoints["GET /gists/public"]["parameters"]; - response: Endpoints["GET /gists/public"]["response"]; - }; - listStarred: { - parameters: RequestParameters & Endpoints["GET /gists/starred"]["parameters"]; - response: Endpoints["GET /gists/starred"]["response"]; - }; - star: { - parameters: RequestParameters & Endpoints["PUT /gists/{gist_id}/star"]["parameters"]; - response: Endpoints["PUT /gists/{gist_id}/star"]["response"]; - }; - unstar: { - parameters: RequestParameters & Endpoints["DELETE /gists/{gist_id}/star"]["parameters"]; - response: Endpoints["DELETE /gists/{gist_id}/star"]["response"]; - }; - update: { - parameters: RequestParameters & Endpoints["PATCH /gists/{gist_id}"]["parameters"]; - response: Endpoints["PATCH /gists/{gist_id}"]["response"]; - }; - updateComment: { - parameters: RequestParameters & Endpoints["PATCH /gists/{gist_id}/comments/{comment_id}"]["parameters"]; - response: Endpoints["PATCH /gists/{gist_id}/comments/{comment_id}"]["response"]; - }; - }; - git: { - createBlob: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/git/blobs"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/git/blobs"]["response"]; - }; - createCommit: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/git/commits"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/git/commits"]["response"]; - }; - createRef: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/git/refs"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/git/refs"]["response"]; - }; - createTag: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/git/tags"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/git/tags"]["response"]; - }; - createTree: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/git/trees"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/git/trees"]["response"]; - }; - deleteRef: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/git/refs/{ref}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/git/refs/{ref}"]["response"]; - }; - getBlob: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"]["response"]; - }; - getCommit: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"]["response"]; - }; - getRef: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/git/ref/{ref}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/git/ref/{ref}"]["response"]; - }; - getTag: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"]["response"]; - }; - getTree: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"]["response"]; - }; - listMatchingRefs: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"]["response"]; - }; - updateRef: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]["response"]; - }; - }; - gitignore: { - getAllTemplates: { - parameters: RequestParameters & Endpoints["GET /gitignore/templates"]["parameters"]; - response: Endpoints["GET /gitignore/templates"]["response"]; - }; - getTemplate: { - parameters: RequestParameters & Endpoints["GET /gitignore/templates/{name}"]["parameters"]; - response: Endpoints["GET /gitignore/templates/{name}"]["response"]; - }; - }; - hostedCompute: { - createNetworkConfigurationForOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/settings/network-configurations"]["parameters"]; - response: Endpoints["POST /orgs/{org}/settings/network-configurations"]["response"]; - }; - deleteNetworkConfigurationFromOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}"]["response"]; - }; - getNetworkConfigurationForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/settings/network-configurations/{network_configuration_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/settings/network-configurations/{network_configuration_id}"]["response"]; - }; - getNetworkSettingsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/settings/network-settings/{network_settings_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/settings/network-settings/{network_settings_id}"]["response"]; - }; - listNetworkConfigurationsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/settings/network-configurations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/settings/network-configurations"]["response"]; - }; - updateNetworkConfigurationForOrg: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}"]["response"]; - }; - }; - interactions: { - getRestrictionsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/interaction-limits"]["parameters"]; - response: Endpoints["GET /user/interaction-limits"]["response"]; - }; - getRestrictionsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/interaction-limits"]["parameters"]; - response: Endpoints["GET /orgs/{org}/interaction-limits"]["response"]; - }; - getRestrictionsForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/interaction-limits"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/interaction-limits"]["response"]; - }; - getRestrictionsForYourPublicRepos: { - parameters: RequestParameters & Endpoints["GET /user/interaction-limits"]["parameters"]; - response: Endpoints["GET /user/interaction-limits"]["response"]; - }; - removeRestrictionsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/interaction-limits"]["parameters"]; - response: Endpoints["DELETE /user/interaction-limits"]["response"]; - }; - removeRestrictionsForOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/interaction-limits"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/interaction-limits"]["response"]; - }; - removeRestrictionsForRepo: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/interaction-limits"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/interaction-limits"]["response"]; - }; - removeRestrictionsForYourPublicRepos: { - parameters: RequestParameters & Endpoints["DELETE /user/interaction-limits"]["parameters"]; - response: Endpoints["DELETE /user/interaction-limits"]["response"]; - }; - setRestrictionsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["PUT /user/interaction-limits"]["parameters"]; - response: Endpoints["PUT /user/interaction-limits"]["response"]; - }; - setRestrictionsForOrg: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/interaction-limits"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/interaction-limits"]["response"]; - }; - setRestrictionsForRepo: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/interaction-limits"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/interaction-limits"]["response"]; - }; - setRestrictionsForYourPublicRepos: { - parameters: RequestParameters & Endpoints["PUT /user/interaction-limits"]["parameters"]; - response: Endpoints["PUT /user/interaction-limits"]["response"]; - }; - }; - issues: { - addAssignees: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"]["response"]; - }; - addBlockedByDependency: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"]["response"]; - }; - addLabels: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; - }; - addSubIssue: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"]["response"]; - }; - checkUserCanBeAssigned: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/assignees/{assignee}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/assignees/{assignee}"]["response"]; - }; - checkUserCanBeAssignedToIssue: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"]["response"]; - }; - create: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/issues"]["response"]; - }; - createComment: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"]["response"]; - }; - createLabel: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/labels"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/labels"]["response"]; - }; - createMilestone: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/milestones"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/milestones"]["response"]; - }; - deleteComment: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"]["response"]; - }; - deleteLabel: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/labels/{name}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/labels/{name}"]["response"]; - }; - deleteMilestone: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"]["response"]; - }; - get: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}"]["response"]; - }; - getComment: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"]["response"]; - }; - getEvent: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/events/{event_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/events/{event_id}"]["response"]; - }; - getLabel: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/labels/{name}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/labels/{name}"]["response"]; - }; - getMilestone: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}"]["response"]; - }; - getParent: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/parent"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/parent"]["response"]; - }; - list: { - parameters: RequestParameters & Endpoints["GET /issues"]["parameters"]; - response: Endpoints["GET /issues"]["response"]; - }; - listAssignees: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/assignees"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/assignees"]["response"]; - }; - listComments: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["response"]; - }; - listCommentsForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["response"]; - }; - listDependenciesBlockedBy: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"]["response"]; - }; - listDependenciesBlocking: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking"]["response"]; - }; - listEvents: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["response"]; - }; - listEventsForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/events"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["response"]; - }; - listEventsForTimeline: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["response"]; - }; - listForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/issues"]["parameters"]; - response: Endpoints["GET /user/issues"]["response"]; - }; - listForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/issues"]["parameters"]; - response: Endpoints["GET /orgs/{org}/issues"]["response"]; - }; - listForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues"]["response"]; - }; - listLabelsForMilestone: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["response"]; - }; - listLabelsForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/labels"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/labels"]["response"]; - }; - listLabelsOnIssue: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; - }; - listMilestones: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/milestones"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/milestones"]["response"]; - }; - listSubIssues: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"]["response"]; - }; - lock: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"]["response"]; - }; - removeAllLabels: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; - }; - removeAssignees: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"]["response"]; - }; - removeDependencyBlockedBy: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}"]["response"]; - }; - removeLabel: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"]["response"]; - }; - removeSubIssue: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue"]["response"]; - }; - reprioritizeSubIssue: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority"]["response"]; - }; - setLabels: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; - }; - unlock: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"]["response"]; - }; - update: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/issues/{issue_number}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/issues/{issue_number}"]["response"]; - }; - updateComment: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"]["response"]; - }; - updateLabel: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/labels/{name}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/labels/{name}"]["response"]; - }; - updateMilestone: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]["response"]; - }; - }; - licenses: { - get: { - parameters: RequestParameters & Endpoints["GET /licenses/{license}"]["parameters"]; - response: Endpoints["GET /licenses/{license}"]["response"]; - }; - getAllCommonlyUsed: { - parameters: RequestParameters & Endpoints["GET /licenses"]["parameters"]; - response: Endpoints["GET /licenses"]["response"]; - }; - getForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/license"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/license"]["response"]; - }; - }; - markdown: { - render: { - parameters: RequestParameters & Endpoints["POST /markdown"]["parameters"]; - response: Endpoints["POST /markdown"]["response"]; - }; - renderRaw: { - parameters: RequestParameters & Endpoints["POST /markdown/raw"]["parameters"]; - response: Endpoints["POST /markdown/raw"]["response"]; - }; - }; - meta: { - get: { - parameters: RequestParameters & Endpoints["GET /meta"]["parameters"]; - response: Endpoints["GET /meta"]["response"]; - }; - getAllVersions: { - parameters: RequestParameters & Endpoints["GET /versions"]["parameters"]; - response: Endpoints["GET /versions"]["response"]; - }; - getOctocat: { - parameters: RequestParameters & Endpoints["GET /octocat"]["parameters"]; - response: Endpoints["GET /octocat"]["response"]; - }; - getZen: { - parameters: RequestParameters & Endpoints["GET /zen"]["parameters"]; - response: Endpoints["GET /zen"]["response"]; - }; - root: { - parameters: RequestParameters & Endpoints["GET /"]["parameters"]; - response: Endpoints["GET /"]["response"]; - }; - }; - migrations: { - deleteArchiveForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/migrations/{migration_id}/archive"]["parameters"]; - response: Endpoints["DELETE /user/migrations/{migration_id}/archive"]["response"]; - }; - deleteArchiveForOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/migrations/{migration_id}/archive"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/migrations/{migration_id}/archive"]["response"]; - }; - downloadArchiveForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/migrations/{migration_id}/archive"]["parameters"]; - response: Endpoints["GET /orgs/{org}/migrations/{migration_id}/archive"]["response"]; - }; - getArchiveForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/migrations/{migration_id}/archive"]["parameters"]; - response: Endpoints["GET /user/migrations/{migration_id}/archive"]["response"]; - }; - getStatusForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/migrations/{migration_id}"]["parameters"]; - response: Endpoints["GET /user/migrations/{migration_id}"]["response"]; - }; - getStatusForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/migrations/{migration_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/migrations/{migration_id}"]["response"]; - }; - listForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/migrations"]["parameters"]; - response: Endpoints["GET /user/migrations"]["response"]; - }; - listForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/migrations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/migrations"]["response"]; - }; - listReposForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/migrations/{migration_id}/repositories"]["parameters"]; - response: Endpoints["GET /user/migrations/{migration_id}/repositories"]["response"]; - }; - listReposForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["response"]; - }; - listReposForUser: { - parameters: RequestParameters & Endpoints["GET /user/migrations/{migration_id}/repositories"]["parameters"]; - response: Endpoints["GET /user/migrations/{migration_id}/repositories"]["response"]; - }; - startForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/migrations"]["parameters"]; - response: Endpoints["POST /user/migrations"]["response"]; - }; - startForOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/migrations"]["parameters"]; - response: Endpoints["POST /orgs/{org}/migrations"]["response"]; - }; - unlockRepoForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"]["parameters"]; - response: Endpoints["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"]["response"]; - }; - unlockRepoForOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"]["response"]; - }; - }; - oidc: { - getOidcCustomSubTemplateForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/oidc/customization/sub"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/oidc/customization/sub"]["response"]; - }; - updateOidcCustomSubTemplateForOrg: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/oidc/customization/sub"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/actions/oidc/customization/sub"]["response"]; - }; - }; - orgs: { - addSecurityManagerTeam: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/security-managers/teams/{team_slug}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/security-managers/teams/{team_slug}"]["response"]; - }; - assignTeamToOrgRole: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"]["response"]; - }; - assignUserToOrgRole: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"]["response"]; - }; - blockUser: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/blocks/{username}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/blocks/{username}"]["response"]; - }; - cancelInvitation: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/invitations/{invitation_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/invitations/{invitation_id}"]["response"]; - }; - checkBlockedUser: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/blocks/{username}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/blocks/{username}"]["response"]; - }; - checkMembershipForUser: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/members/{username}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/members/{username}"]["response"]; - }; - checkPublicMembershipForUser: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/public_members/{username}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/public_members/{username}"]["response"]; - }; - convertMemberToOutsideCollaborator: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/outside_collaborators/{username}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/outside_collaborators/{username}"]["response"]; - }; - createArtifactStorageRecord: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/artifacts/metadata/storage-record"]["parameters"]; - response: Endpoints["POST /orgs/{org}/artifacts/metadata/storage-record"]["response"]; - }; - createInvitation: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/invitations"]["parameters"]; - response: Endpoints["POST /orgs/{org}/invitations"]["response"]; - }; - createIssueType: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/issue-types"]["parameters"]; - response: Endpoints["POST /orgs/{org}/issue-types"]["response"]; - }; - createWebhook: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/hooks"]["parameters"]; - response: Endpoints["POST /orgs/{org}/hooks"]["response"]; - }; - customPropertiesForOrgsCreateOrUpdateOrganizationValues: { - parameters: RequestParameters & Endpoints["PATCH /organizations/{org}/org-properties/values"]["parameters"]; - response: Endpoints["PATCH /organizations/{org}/org-properties/values"]["response"]; - }; - customPropertiesForOrgsGetOrganizationValues: { - parameters: RequestParameters & Endpoints["GET /organizations/{org}/org-properties/values"]["parameters"]; - response: Endpoints["GET /organizations/{org}/org-properties/values"]["response"]; - }; - customPropertiesForReposCreateOrUpdateOrganizationDefinition: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/properties/schema/{custom_property_name}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/properties/schema/{custom_property_name}"]["response"]; - }; - customPropertiesForReposCreateOrUpdateOrganizationDefinitions: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/properties/schema"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/properties/schema"]["response"]; - }; - customPropertiesForReposCreateOrUpdateOrganizationValues: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/properties/values"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/properties/values"]["response"]; - }; - customPropertiesForReposDeleteOrganizationDefinition: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/properties/schema/{custom_property_name}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/properties/schema/{custom_property_name}"]["response"]; - }; - customPropertiesForReposGetOrganizationDefinition: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/properties/schema/{custom_property_name}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/properties/schema/{custom_property_name}"]["response"]; - }; - customPropertiesForReposGetOrganizationDefinitions: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/properties/schema"]["parameters"]; - response: Endpoints["GET /orgs/{org}/properties/schema"]["response"]; - }; - customPropertiesForReposGetOrganizationValues: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/properties/values"]["parameters"]; - response: Endpoints["GET /orgs/{org}/properties/values"]["response"]; - }; - delete: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}"]["response"]; - }; - deleteAttestationsBulk: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/attestations/delete-request"]["parameters"]; - response: Endpoints["POST /orgs/{org}/attestations/delete-request"]["response"]; - }; - deleteAttestationsById: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/attestations/{attestation_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/attestations/{attestation_id}"]["response"]; - }; - deleteAttestationsBySubjectDigest: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/attestations/digest/{subject_digest}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/attestations/digest/{subject_digest}"]["response"]; - }; - deleteIssueType: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/issue-types/{issue_type_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/issue-types/{issue_type_id}"]["response"]; - }; - deleteWebhook: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/hooks/{hook_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/hooks/{hook_id}"]["response"]; - }; - disableSelectedRepositoryImmutableReleasesOrganization: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"]["response"]; - }; - enableSelectedRepositoryImmutableReleasesOrganization: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"]["response"]; - }; - get: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}"]["parameters"]; - response: Endpoints["GET /orgs/{org}"]["response"]; - }; - getImmutableReleasesSettings: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/settings/immutable-releases"]["parameters"]; - response: Endpoints["GET /orgs/{org}/settings/immutable-releases"]["response"]; - }; - getImmutableReleasesSettingsRepositories: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/settings/immutable-releases/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/settings/immutable-releases/repositories"]["response"]; - }; - getMembershipForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/memberships/orgs/{org}"]["parameters"]; - response: Endpoints["GET /user/memberships/orgs/{org}"]["response"]; - }; - getMembershipForUser: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/memberships/{username}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/memberships/{username}"]["response"]; - }; - getOrgRole: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/organization-roles/{role_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/organization-roles/{role_id}"]["response"]; - }; - getOrgRulesetHistory: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/rulesets/{ruleset_id}/history"]["parameters"]; - response: Endpoints["GET /orgs/{org}/rulesets/{ruleset_id}/history"]["response"]; - }; - getOrgRulesetVersion: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}"]["response"]; - }; - getWebhook: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/hooks/{hook_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/hooks/{hook_id}"]["response"]; - }; - getWebhookConfigForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/hooks/{hook_id}/config"]["parameters"]; - response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/config"]["response"]; - }; - getWebhookDelivery: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"]["response"]; - }; - list: { - parameters: RequestParameters & Endpoints["GET /organizations"]["parameters"]; - response: Endpoints["GET /organizations"]["response"]; - }; - listAppInstallations: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/installations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/installations"]["response"]; - }; - listArtifactStorageRecords: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records"]["parameters"]; - response: Endpoints["GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records"]["response"]; - }; - listAttestationRepositories: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/attestations/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/attestations/repositories"]["response"]; - }; - listAttestations: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/attestations/{subject_digest}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/attestations/{subject_digest}"]["response"]; - }; - listAttestationsBulk: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}"]["parameters"]; - response: Endpoints["POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}"]["response"]; - }; - listBlockedUsers: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/blocks"]["parameters"]; - response: Endpoints["GET /orgs/{org}/blocks"]["response"]; - }; - listFailedInvitations: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/failed_invitations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/failed_invitations"]["response"]; - }; - listForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/orgs"]["parameters"]; - response: Endpoints["GET /user/orgs"]["response"]; - }; - listForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/orgs"]["parameters"]; - response: Endpoints["GET /users/{username}/orgs"]["response"]; - }; - listInvitationTeams: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["parameters"]; - response: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["response"]; - }; - listIssueTypes: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/issue-types"]["parameters"]; - response: Endpoints["GET /orgs/{org}/issue-types"]["response"]; - }; - listMembers: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/members"]["parameters"]; - response: Endpoints["GET /orgs/{org}/members"]["response"]; - }; - listMembershipsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/memberships/orgs"]["parameters"]; - response: Endpoints["GET /user/memberships/orgs"]["response"]; - }; - listOrgRoleTeams: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/organization-roles/{role_id}/teams"]["parameters"]; - response: Endpoints["GET /orgs/{org}/organization-roles/{role_id}/teams"]["response"]; - }; - listOrgRoleUsers: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/organization-roles/{role_id}/users"]["parameters"]; - response: Endpoints["GET /orgs/{org}/organization-roles/{role_id}/users"]["response"]; - }; - listOrgRoles: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/organization-roles"]["parameters"]; - response: Endpoints["GET /orgs/{org}/organization-roles"]["response"]; - }; - listOrganizationFineGrainedPermissions: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/organization-fine-grained-permissions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/organization-fine-grained-permissions"]["response"]; - }; - listOutsideCollaborators: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/outside_collaborators"]["parameters"]; - response: Endpoints["GET /orgs/{org}/outside_collaborators"]["response"]; - }; - listPatGrantRepositories: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"]["response"]; - }; - listPatGrantRequestRepositories: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"]["response"]; - }; - listPatGrantRequests: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/personal-access-token-requests"]["parameters"]; - response: Endpoints["GET /orgs/{org}/personal-access-token-requests"]["response"]; - }; - listPatGrants: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/personal-access-tokens"]["parameters"]; - response: Endpoints["GET /orgs/{org}/personal-access-tokens"]["response"]; - }; - listPendingInvitations: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/invitations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/invitations"]["response"]; - }; - listPublicMembers: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/public_members"]["parameters"]; - response: Endpoints["GET /orgs/{org}/public_members"]["response"]; - }; - listSecurityManagerTeams: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/security-managers"]["parameters"]; - response: Endpoints["GET /orgs/{org}/security-managers"]["response"]; - }; - listWebhookDeliveries: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries"]["parameters"]; - response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries"]["response"]; - }; - listWebhooks: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/hooks"]["parameters"]; - response: Endpoints["GET /orgs/{org}/hooks"]["response"]; - }; - pingWebhook: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/hooks/{hook_id}/pings"]["parameters"]; - response: Endpoints["POST /orgs/{org}/hooks/{hook_id}/pings"]["response"]; - }; - redeliverWebhookDelivery: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"]["parameters"]; - response: Endpoints["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"]["response"]; - }; - removeMember: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/members/{username}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/members/{username}"]["response"]; - }; - removeMembershipForUser: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/memberships/{username}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/memberships/{username}"]["response"]; - }; - removeOutsideCollaborator: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/outside_collaborators/{username}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/outside_collaborators/{username}"]["response"]; - }; - removePublicMembershipForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/public_members/{username}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/public_members/{username}"]["response"]; - }; - removeSecurityManagerTeam: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/security-managers/teams/{team_slug}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/security-managers/teams/{team_slug}"]["response"]; - }; - reviewPatGrantRequest: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"]["parameters"]; - response: Endpoints["POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"]["response"]; - }; - reviewPatGrantRequestsInBulk: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/personal-access-token-requests"]["parameters"]; - response: Endpoints["POST /orgs/{org}/personal-access-token-requests"]["response"]; - }; - revokeAllOrgRolesTeam: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/organization-roles/teams/{team_slug}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/organization-roles/teams/{team_slug}"]["response"]; - }; - revokeAllOrgRolesUser: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/organization-roles/users/{username}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/organization-roles/users/{username}"]["response"]; - }; - revokeOrgRoleTeam: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"]["response"]; - }; - revokeOrgRoleUser: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"]["response"]; - }; - setImmutableReleasesSettings: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/settings/immutable-releases"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/settings/immutable-releases"]["response"]; - }; - setImmutableReleasesSettingsRepositories: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/settings/immutable-releases/repositories"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/settings/immutable-releases/repositories"]["response"]; - }; - setMembershipForUser: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/memberships/{username}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/memberships/{username}"]["response"]; - }; - setPublicMembershipForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/public_members/{username}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/public_members/{username}"]["response"]; - }; - unblockUser: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/blocks/{username}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/blocks/{username}"]["response"]; - }; - update: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}"]["response"]; - }; - updateIssueType: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/issue-types/{issue_type_id}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/issue-types/{issue_type_id}"]["response"]; - }; - updateMembershipForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["PATCH /user/memberships/orgs/{org}"]["parameters"]; - response: Endpoints["PATCH /user/memberships/orgs/{org}"]["response"]; - }; - updatePatAccess: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/personal-access-tokens/{pat_id}"]["parameters"]; - response: Endpoints["POST /orgs/{org}/personal-access-tokens/{pat_id}"]["response"]; - }; - updatePatAccesses: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/personal-access-tokens"]["parameters"]; - response: Endpoints["POST /orgs/{org}/personal-access-tokens"]["response"]; - }; - updateWebhook: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/hooks/{hook_id}"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/hooks/{hook_id}"]["response"]; - }; - updateWebhookConfigForOrg: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/hooks/{hook_id}/config"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/hooks/{hook_id}/config"]["response"]; - }; - }; - packages: { - deletePackageForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/packages/{package_type}/{package_name}"]["parameters"]; - response: Endpoints["DELETE /user/packages/{package_type}/{package_name}"]["response"]; - }; - deletePackageForOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/packages/{package_type}/{package_name}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/packages/{package_type}/{package_name}"]["response"]; - }; - deletePackageForUser: { - parameters: RequestParameters & Endpoints["DELETE /users/{username}/packages/{package_type}/{package_name}"]["parameters"]; - response: Endpoints["DELETE /users/{username}/packages/{package_type}/{package_name}"]["response"]; - }; - deletePackageVersionForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"]["parameters"]; - response: Endpoints["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"]; - }; - deletePackageVersionForOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"]; - }; - deletePackageVersionForUser: { - parameters: RequestParameters & Endpoints["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["parameters"]; - response: Endpoints["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"]; - }; - getAllPackageVersionsForAPackageOwnedByAnOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["response"]; - }; - getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["parameters"]; - response: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["response"]; - }; - getAllPackageVersionsForPackageOwnedByAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["parameters"]; - response: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["response"]; - }; - getAllPackageVersionsForPackageOwnedByOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["response"]; - }; - getAllPackageVersionsForPackageOwnedByUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/packages/{package_type}/{package_name}/versions"]["parameters"]; - response: Endpoints["GET /users/{username}/packages/{package_type}/{package_name}/versions"]["response"]; - }; - getPackageForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/packages/{package_type}/{package_name}"]["parameters"]; - response: Endpoints["GET /user/packages/{package_type}/{package_name}"]["response"]; - }; - getPackageForOrganization: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}"]["response"]; - }; - getPackageForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/packages/{package_type}/{package_name}"]["parameters"]; - response: Endpoints["GET /users/{username}/packages/{package_type}/{package_name}"]["response"]; - }; - getPackageVersionForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"]["parameters"]; - response: Endpoints["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"]; - }; - getPackageVersionForOrganization: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"]; - }; - getPackageVersionForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["parameters"]; - response: Endpoints["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"]; - }; - listDockerMigrationConflictingPackagesForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/docker/conflicts"]["parameters"]; - response: Endpoints["GET /user/docker/conflicts"]["response"]; - }; - listDockerMigrationConflictingPackagesForOrganization: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/docker/conflicts"]["parameters"]; - response: Endpoints["GET /orgs/{org}/docker/conflicts"]["response"]; - }; - listDockerMigrationConflictingPackagesForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/docker/conflicts"]["parameters"]; - response: Endpoints["GET /users/{username}/docker/conflicts"]["response"]; - }; - listPackagesForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/packages"]["parameters"]; - response: Endpoints["GET /user/packages"]["response"]; - }; - listPackagesForOrganization: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/packages"]["parameters"]; - response: Endpoints["GET /orgs/{org}/packages"]["response"]; - }; - listPackagesForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/packages"]["parameters"]; - response: Endpoints["GET /users/{username}/packages"]["response"]; - }; - restorePackageForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/packages/{package_type}/{package_name}/restore{?token}"]["parameters"]; - response: Endpoints["POST /user/packages/{package_type}/{package_name}/restore{?token}"]["response"]; - }; - restorePackageForOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"]["parameters"]; - response: Endpoints["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"]["response"]; - }; - restorePackageForUser: { - parameters: RequestParameters & Endpoints["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"]["parameters"]; - response: Endpoints["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"]["response"]; - }; - restorePackageVersionForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["parameters"]; - response: Endpoints["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["response"]; - }; - restorePackageVersionForOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["parameters"]; - response: Endpoints["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["response"]; - }; - restorePackageVersionForUser: { - parameters: RequestParameters & Endpoints["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["parameters"]; - response: Endpoints["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["response"]; - }; - }; - privateRegistries: { - createOrgPrivateRegistry: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/private-registries"]["parameters"]; - response: Endpoints["POST /orgs/{org}/private-registries"]["response"]; - }; - deleteOrgPrivateRegistry: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/private-registries/{secret_name}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/private-registries/{secret_name}"]["response"]; - }; - getOrgPrivateRegistry: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/private-registries/{secret_name}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/private-registries/{secret_name}"]["response"]; - }; - getOrgPublicKey: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/private-registries/public-key"]["parameters"]; - response: Endpoints["GET /orgs/{org}/private-registries/public-key"]["response"]; - }; - listOrgPrivateRegistries: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/private-registries"]["parameters"]; - response: Endpoints["GET /orgs/{org}/private-registries"]["response"]; - }; - updateOrgPrivateRegistry: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/private-registries/{secret_name}"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/private-registries/{secret_name}"]["response"]; - }; - }; - projects: { - addItemForOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/projectsV2/{project_number}/items"]["parameters"]; - response: Endpoints["POST /orgs/{org}/projectsV2/{project_number}/items"]["response"]; - }; - addItemForUser: { - parameters: RequestParameters & Endpoints["POST /users/{username}/projectsV2/{project_number}/items"]["parameters"]; - response: Endpoints["POST /users/{username}/projectsV2/{project_number}/items"]["response"]; - }; - deleteItemForOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}"]["response"]; - }; - deleteItemForUser: { - parameters: RequestParameters & Endpoints["DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}"]["parameters"]; - response: Endpoints["DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}"]["response"]; - }; - getFieldForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}"]["response"]; - }; - getFieldForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/projectsV2/{project_number}/fields/{field_id}"]["parameters"]; - response: Endpoints["GET /users/{username}/projectsV2/{project_number}/fields/{field_id}"]["response"]; - }; - getForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/projectsV2/{project_number}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/projectsV2/{project_number}"]["response"]; - }; - getForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/projectsV2/{project_number}"]["parameters"]; - response: Endpoints["GET /users/{username}/projectsV2/{project_number}"]["response"]; - }; - getOrgItem: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}"]["response"]; - }; - getUserItem: { - parameters: RequestParameters & Endpoints["GET /users/{username}/projectsV2/{project_number}/items/{item_id}"]["parameters"]; - response: Endpoints["GET /users/{username}/projectsV2/{project_number}/items/{item_id}"]["response"]; - }; - listFieldsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/projectsV2/{project_number}/fields"]["parameters"]; - response: Endpoints["GET /orgs/{org}/projectsV2/{project_number}/fields"]["response"]; - }; - listFieldsForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/projectsV2/{project_number}/fields"]["parameters"]; - response: Endpoints["GET /users/{username}/projectsV2/{project_number}/fields"]["response"]; - }; - listForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/projectsV2"]["parameters"]; - response: Endpoints["GET /orgs/{org}/projectsV2"]["response"]; - }; - listForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/projectsV2"]["parameters"]; - response: Endpoints["GET /users/{username}/projectsV2"]["response"]; - }; - listItemsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/projectsV2/{project_number}/items"]["parameters"]; - response: Endpoints["GET /orgs/{org}/projectsV2/{project_number}/items"]["response"]; - }; - listItemsForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/projectsV2/{project_number}/items"]["parameters"]; - response: Endpoints["GET /users/{username}/projectsV2/{project_number}/items"]["response"]; - }; - updateItemForOrg: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}"]["response"]; - }; - updateItemForUser: { - parameters: RequestParameters & Endpoints["PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}"]["parameters"]; - response: Endpoints["PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}"]["response"]; - }; - }; - pulls: { - checkIfMerged: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"]["response"]; - }; - create: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/pulls"]["response"]; - }; - createReplyForReviewComment: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"]["response"]; - }; - createReview: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["response"]; - }; - createReviewComment: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["response"]; - }; - deletePendingReview: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["response"]; - }; - deleteReviewComment: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["response"]; - }; - dismissReview: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"]["response"]; - }; - get: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}"]["response"]; - }; - getReview: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["response"]; - }; - getReviewComment: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["response"]; - }; - list: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls"]["response"]; - }; - listCommentsForReview: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["response"]; - }; - listCommits: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["response"]; - }; - listFiles: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["response"]; - }; - listRequestedReviewers: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"]; - }; - listReviewComments: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["response"]; - }; - listReviewCommentsForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["response"]; - }; - listReviews: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["response"]; - }; - merge: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"]["response"]; - }; - removeRequestedReviewers: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"]; - }; - requestReviewers: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"]; - }; - submitReview: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"]["response"]; - }; - update: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"]["response"]; - }; - updateBranch: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"]["response"]; - }; - updateReview: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["response"]; - }; - updateReviewComment: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["response"]; - }; - }; - rateLimit: { - get: { - parameters: RequestParameters & Endpoints["GET /rate_limit"]["parameters"]; - response: Endpoints["GET /rate_limit"]["response"]; - }; - }; - reactions: { - createForCommitComment: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["response"]; - }; - createForIssue: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["response"]; - }; - createForIssueComment: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["response"]; - }; - createForPullRequestReviewComment: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["response"]; - }; - createForRelease: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"]["response"]; - }; - createForTeamDiscussionCommentInOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"]; - response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"]; - }; - createForTeamDiscussionInOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["parameters"]; - response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["response"]; - }; - deleteForCommitComment: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"]["response"]; - }; - deleteForIssue: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"]["response"]; - }; - deleteForIssueComment: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"]["response"]; - }; - deleteForPullRequestComment: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"]["response"]; - }; - deleteForRelease: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"]["response"]; - }; - deleteForTeamDiscussion: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"]["response"]; - }; - deleteForTeamDiscussionComment: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"]["response"]; - }; - listForCommitComment: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["response"]; - }; - listForIssue: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["response"]; - }; - listForIssueComment: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["response"]; - }; - listForPullRequestReviewComment: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["response"]; - }; - listForRelease: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"]["response"]; - }; - listForTeamDiscussionCommentInOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"]; - }; - listForTeamDiscussionInOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["response"]; - }; - }; - repos: { - acceptInvitation: { - parameters: RequestParameters & Endpoints["PATCH /user/repository_invitations/{invitation_id}"]["parameters"]; - response: Endpoints["PATCH /user/repository_invitations/{invitation_id}"]["response"]; - }; - acceptInvitationForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["PATCH /user/repository_invitations/{invitation_id}"]["parameters"]; - response: Endpoints["PATCH /user/repository_invitations/{invitation_id}"]["response"]; - }; - addAppAccessRestrictions: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"]; - }; - addCollaborator: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/collaborators/{username}"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/collaborators/{username}"]["response"]; - }; - addStatusCheckContexts: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"]; - }; - addTeamAccessRestrictions: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"]; - }; - addUserAccessRestrictions: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"]; - }; - cancelPagesDeployment: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"]["response"]; - }; - checkAutomatedSecurityFixes: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/automated-security-fixes"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/automated-security-fixes"]["response"]; - }; - checkCollaborator: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/collaborators/{username}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/collaborators/{username}"]["response"]; - }; - checkImmutableReleases: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/immutable-releases"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/immutable-releases"]["response"]; - }; - checkPrivateVulnerabilityReporting: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/private-vulnerability-reporting"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/private-vulnerability-reporting"]["response"]; - }; - checkVulnerabilityAlerts: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/vulnerability-alerts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/vulnerability-alerts"]["response"]; - }; - codeownersErrors: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codeowners/errors"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/codeowners/errors"]["response"]; - }; - compareCommits: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/compare/{base}...{head}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/compare/{base}...{head}"]["response"]; - }; - compareCommitsWithBasehead: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/compare/{basehead}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/compare/{basehead}"]["response"]; - }; - createAttestation: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/attestations"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/attestations"]["response"]; - }; - createAutolink: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/autolinks"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/autolinks"]["response"]; - }; - createCommitComment: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["response"]; - }; - createCommitSignatureProtection: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["response"]; - }; - createCommitStatus: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/statuses/{sha}"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/statuses/{sha}"]["response"]; - }; - createDeployKey: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/keys"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/keys"]["response"]; - }; - createDeployment: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/deployments"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/deployments"]["response"]; - }; - createDeploymentBranchPolicy: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["response"]; - }; - createDeploymentProtectionRule: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"]["response"]; - }; - createDeploymentStatus: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["response"]; - }; - createDispatchEvent: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/dispatches"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/dispatches"]["response"]; - }; - createForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/repos"]["parameters"]; - response: Endpoints["POST /user/repos"]["response"]; - }; - createFork: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/forks"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/forks"]["response"]; - }; - createInOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/repos"]["parameters"]; - response: Endpoints["POST /orgs/{org}/repos"]["response"]; - }; - createOrUpdateEnvironment: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/environments/{environment_name}"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/environments/{environment_name}"]["response"]; - }; - createOrUpdateFileContents: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/contents/{path}"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/contents/{path}"]["response"]; - }; - createOrgRuleset: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/rulesets"]["parameters"]; - response: Endpoints["POST /orgs/{org}/rulesets"]["response"]; - }; - createPagesDeployment: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pages/deployments"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/pages/deployments"]["response"]; - }; - createPagesSite: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pages"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/pages"]["response"]; - }; - createRelease: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/releases"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/releases"]["response"]; - }; - createRepoRuleset: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/rulesets"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/rulesets"]["response"]; - }; - createUsingTemplate: { - parameters: RequestParameters & Endpoints["POST /repos/{template_owner}/{template_repo}/generate"]["parameters"]; - response: Endpoints["POST /repos/{template_owner}/{template_repo}/generate"]["response"]; - }; - createWebhook: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/hooks"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/hooks"]["response"]; - }; - customPropertiesForReposCreateOrUpdateRepositoryValues: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/properties/values"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/properties/values"]["response"]; - }; - customPropertiesForReposGetRepositoryValues: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/properties/values"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/properties/values"]["response"]; - }; - declineInvitation: { - parameters: RequestParameters & Endpoints["DELETE /user/repository_invitations/{invitation_id}"]["parameters"]; - response: Endpoints["DELETE /user/repository_invitations/{invitation_id}"]["response"]; - }; - declineInvitationForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/repository_invitations/{invitation_id}"]["parameters"]; - response: Endpoints["DELETE /user/repository_invitations/{invitation_id}"]["response"]; - }; - delete: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}"]["response"]; - }; - deleteAccessRestrictions: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"]["response"]; - }; - deleteAdminBranchProtection: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["response"]; - }; - deleteAnEnvironment: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}"]["response"]; - }; - deleteAutolink: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"]["response"]; - }; - deleteBranchProtection: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"]["response"]; - }; - deleteCommitComment: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/comments/{comment_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/comments/{comment_id}"]["response"]; - }; - deleteCommitSignatureProtection: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["response"]; - }; - deleteDeployKey: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/keys/{key_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/keys/{key_id}"]["response"]; - }; - deleteDeployment: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"]["response"]; - }; - deleteDeploymentBranchPolicy: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"]["response"]; - }; - deleteFile: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/contents/{path}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/contents/{path}"]["response"]; - }; - deleteInvitation: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"]["response"]; - }; - deleteOrgRuleset: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/rulesets/{ruleset_id}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/rulesets/{ruleset_id}"]["response"]; - }; - deletePagesSite: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/pages"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/pages"]["response"]; - }; - deletePullRequestReviewProtection: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["response"]; - }; - deleteRelease: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/releases/{release_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/releases/{release_id}"]["response"]; - }; - deleteReleaseAsset: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"]["response"]; - }; - deleteRepoRuleset: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"]["response"]; - }; - deleteWebhook: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"]["response"]; - }; - disableAutomatedSecurityFixes: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/automated-security-fixes"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/automated-security-fixes"]["response"]; - }; - disableDeploymentProtectionRule: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"]["response"]; - }; - disableImmutableReleases: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/immutable-releases"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/immutable-releases"]["response"]; - }; - disablePrivateVulnerabilityReporting: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"]["response"]; - }; - disableVulnerabilityAlerts: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/vulnerability-alerts"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/vulnerability-alerts"]["response"]; - }; - downloadArchive: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/zipball/{ref}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/zipball/{ref}"]["response"]; - }; - downloadTarballArchive: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/tarball/{ref}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/tarball/{ref}"]["response"]; - }; - downloadZipballArchive: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/zipball/{ref}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/zipball/{ref}"]["response"]; - }; - enableAutomatedSecurityFixes: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/automated-security-fixes"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/automated-security-fixes"]["response"]; - }; - enableImmutableReleases: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/immutable-releases"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/immutable-releases"]["response"]; - }; - enablePrivateVulnerabilityReporting: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/private-vulnerability-reporting"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/private-vulnerability-reporting"]["response"]; - }; - enableVulnerabilityAlerts: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/vulnerability-alerts"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/vulnerability-alerts"]["response"]; - }; - generateReleaseNotes: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/releases/generate-notes"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/releases/generate-notes"]["response"]; - }; - get: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}"]["response"]; - }; - getAccessRestrictions: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"]["response"]; - }; - getAdminBranchProtection: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["response"]; - }; - getAllDeploymentProtectionRules: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"]["response"]; - }; - getAllEnvironments: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments"]["response"]; - }; - getAllStatusCheckContexts: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"]; - }; - getAllTopics: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/topics"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/topics"]["response"]; - }; - getAppsWithAccessToProtectedBranch: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"]; - }; - getAutolink: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"]["response"]; - }; - getBranch: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}"]["response"]; - }; - getBranchProtection: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection"]["response"]; - }; - getBranchRules: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/rules/branches/{branch}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/rules/branches/{branch}"]["response"]; - }; - getClones: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/traffic/clones"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/traffic/clones"]["response"]; - }; - getCodeFrequencyStats: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/stats/code_frequency"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/stats/code_frequency"]["response"]; - }; - getCollaboratorPermissionLevel: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/collaborators/{username}/permission"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/collaborators/{username}/permission"]["response"]; - }; - getCombinedStatusForRef: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["response"]; - }; - getCommit: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{ref}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}"]["response"]; - }; - getCommitActivityStats: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/stats/commit_activity"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/stats/commit_activity"]["response"]; - }; - getCommitComment: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}"]["response"]; - }; - getCommitSignatureProtection: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["response"]; - }; - getCommunityProfileMetrics: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/community/profile"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/community/profile"]["response"]; - }; - getContent: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/contents/{path}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/contents/{path}"]["response"]; - }; - getContributorsStats: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/stats/contributors"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/stats/contributors"]["response"]; - }; - getCustomDeploymentProtectionRule: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"]["response"]; - }; - getDeployKey: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/keys/{key_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/keys/{key_id}"]["response"]; - }; - getDeployment: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}"]["response"]; - }; - getDeploymentBranchPolicy: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"]["response"]; - }; - getDeploymentStatus: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"]["response"]; - }; - getEnvironment: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}"]["response"]; - }; - getLatestPagesBuild: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pages/builds/latest"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pages/builds/latest"]["response"]; - }; - getLatestRelease: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases/latest"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/releases/latest"]["response"]; - }; - getOrgRuleSuite: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"]["response"]; - }; - getOrgRuleSuites: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/rulesets/rule-suites"]["parameters"]; - response: Endpoints["GET /orgs/{org}/rulesets/rule-suites"]["response"]; - }; - getOrgRuleset: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/rulesets/{ruleset_id}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/rulesets/{ruleset_id}"]["response"]; - }; - getOrgRulesets: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/rulesets"]["parameters"]; - response: Endpoints["GET /orgs/{org}/rulesets"]["response"]; - }; - getPages: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pages"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pages"]["response"]; - }; - getPagesBuild: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pages/builds/{build_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pages/builds/{build_id}"]["response"]; - }; - getPagesDeployment: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"]["response"]; - }; - getPagesHealthCheck: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pages/health"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pages/health"]["response"]; - }; - getParticipationStats: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/stats/participation"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/stats/participation"]["response"]; - }; - getPullRequestReviewProtection: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["response"]; - }; - getPunchCardStats: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/stats/punch_card"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/stats/punch_card"]["response"]; - }; - getReadme: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/readme"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/readme"]["response"]; - }; - getReadmeInDirectory: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/readme/{dir}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/readme/{dir}"]["response"]; - }; - getRelease: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}"]["response"]; - }; - getReleaseAsset: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"]["response"]; - }; - getReleaseByTag: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases/tags/{tag}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/releases/tags/{tag}"]["response"]; - }; - getRepoRuleSuite: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"]["response"]; - }; - getRepoRuleSuites: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites"]["response"]; - }; - getRepoRuleset: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"]["response"]; - }; - getRepoRulesetHistory: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history"]["response"]; - }; - getRepoRulesetVersion: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}"]["response"]; - }; - getRepoRulesets: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/rulesets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/rulesets"]["response"]; - }; - getStatusChecksProtection: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"]; - }; - getTeamsWithAccessToProtectedBranch: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"]; - }; - getTopPaths: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/traffic/popular/paths"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/traffic/popular/paths"]["response"]; - }; - getTopReferrers: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/traffic/popular/referrers"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/traffic/popular/referrers"]["response"]; - }; - getUsersWithAccessToProtectedBranch: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"]; - }; - getViews: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/traffic/views"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/traffic/views"]["response"]; - }; - getWebhook: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}"]["response"]; - }; - getWebhookConfigForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"]["response"]; - }; - getWebhookDelivery: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"]["response"]; - }; - listActivities: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/activity"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/activity"]["response"]; - }; - listAttestations: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/attestations/{subject_digest}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/attestations/{subject_digest}"]["response"]; - }; - listAutolinks: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/autolinks"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/autolinks"]["response"]; - }; - listBranches: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches"]["response"]; - }; - listBranchesForHeadCommit: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"]["response"]; - }; - listCollaborators: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/collaborators"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["response"]; - }; - listCommentsForCommit: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["response"]; - }; - listCommitCommentsForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/comments"]["response"]; - }; - listCommitStatusesForRef: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["response"]; - }; - listCommits: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits"]["response"]; - }; - listContributors: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/contributors"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/contributors"]["response"]; - }; - listCustomDeploymentRuleIntegrations: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"]["response"]; - }; - listDeployKeys: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/keys"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/keys"]["response"]; - }; - listDeploymentBranchPolicies: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["response"]; - }; - listDeploymentStatuses: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["response"]; - }; - listDeployments: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/deployments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/deployments"]["response"]; - }; - listForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/repos"]["parameters"]; - response: Endpoints["GET /user/repos"]["response"]; - }; - listForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/repos"]["parameters"]; - response: Endpoints["GET /orgs/{org}/repos"]["response"]; - }; - listForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/repos"]["parameters"]; - response: Endpoints["GET /users/{username}/repos"]["response"]; - }; - listForks: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/forks"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/forks"]["response"]; - }; - listInvitations: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/invitations"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/invitations"]["response"]; - }; - listInvitationsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/repository_invitations"]["parameters"]; - response: Endpoints["GET /user/repository_invitations"]["response"]; - }; - listLanguages: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/languages"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/languages"]["response"]; - }; - listPagesBuilds: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["response"]; - }; - listPublic: { - parameters: RequestParameters & Endpoints["GET /repositories"]["parameters"]; - response: Endpoints["GET /repositories"]["response"]; - }; - listPullRequestsAssociatedWithCommit: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["response"]; - }; - listReleaseAssets: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["response"]; - }; - listReleases: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/releases"]["response"]; - }; - listTags: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/tags"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/tags"]["response"]; - }; - listTeams: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/teams"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/teams"]["response"]; - }; - listWebhookDeliveries: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"]["response"]; - }; - listWebhooks: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/hooks"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/hooks"]["response"]; - }; - merge: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/merges"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/merges"]["response"]; - }; - mergeUpstream: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/merge-upstream"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/merge-upstream"]["response"]; - }; - pingWebhook: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"]["response"]; - }; - redeliverWebhookDelivery: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"]["response"]; - }; - removeAppAccessRestrictions: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"]; - }; - removeCollaborator: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/collaborators/{username}"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/collaborators/{username}"]["response"]; - }; - removeStatusCheckContexts: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"]; - }; - removeStatusCheckProtection: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"]; - }; - removeTeamAccessRestrictions: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"]; - }; - removeUserAccessRestrictions: { - parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["parameters"]; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"]; - }; - renameBranch: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/rename"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/rename"]["response"]; - }; - replaceAllTopics: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/topics"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/topics"]["response"]; - }; - requestPagesBuild: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pages/builds"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/pages/builds"]["response"]; - }; - setAdminBranchProtection: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["response"]; - }; - setAppAccessRestrictions: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"]; - }; - setStatusCheckContexts: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"]; - }; - setTeamAccessRestrictions: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"]; - }; - setUserAccessRestrictions: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"]; - }; - testPushWebhook: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"]["response"]; - }; - transfer: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/transfer"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/transfer"]["response"]; - }; - update: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}"]["response"]; - }; - updateBranchProtection: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection"]["response"]; - }; - updateCommitComment: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/comments/{comment_id}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/comments/{comment_id}"]["response"]; - }; - updateDeploymentBranchPolicy: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"]["response"]; - }; - updateInformationAboutPagesSite: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/pages"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/pages"]["response"]; - }; - updateInvitation: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"]["response"]; - }; - updateOrgRuleset: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/rulesets/{ruleset_id}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/rulesets/{ruleset_id}"]["response"]; - }; - updatePullRequestReviewProtection: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["response"]; - }; - updateRelease: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/releases/{release_id}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/releases/{release_id}"]["response"]; - }; - updateReleaseAsset: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"]["response"]; - }; - updateRepoRuleset: { - parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"]["parameters"]; - response: Endpoints["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"]["response"]; - }; - updateStatusCheckPotection: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"]; - }; - updateStatusCheckProtection: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"]; - }; - updateWebhook: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"]["response"]; - }; - updateWebhookConfigForRepo: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"]["response"]; - }; - uploadReleaseAsset: { - parameters: RequestParameters & Endpoints["POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}"]["parameters"]; - response: Endpoints["POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}"]["response"]; - }; - }; - search: { - code: { - parameters: RequestParameters & Endpoints["GET /search/code"]["parameters"]; - response: Endpoints["GET /search/code"]["response"]; - }; - commits: { - parameters: RequestParameters & Endpoints["GET /search/commits"]["parameters"]; - response: Endpoints["GET /search/commits"]["response"]; - }; - issuesAndPullRequests: { - parameters: RequestParameters & Endpoints["GET /search/issues"]["parameters"]; - response: Endpoints["GET /search/issues"]["response"]; - }; - labels: { - parameters: RequestParameters & Endpoints["GET /search/labels"]["parameters"]; - response: Endpoints["GET /search/labels"]["response"]; - }; - repos: { - parameters: RequestParameters & Endpoints["GET /search/repositories"]["parameters"]; - response: Endpoints["GET /search/repositories"]["response"]; - }; - topics: { - parameters: RequestParameters & Endpoints["GET /search/topics"]["parameters"]; - response: Endpoints["GET /search/topics"]["response"]; - }; - users: { - parameters: RequestParameters & Endpoints["GET /search/users"]["parameters"]; - response: Endpoints["GET /search/users"]["response"]; - }; - }; - secretScanning: { - createPushProtectionBypass: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses"]["response"]; - }; - getAlert: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]["response"]; - }; - getScanHistory: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/secret-scanning/scan-history"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/scan-history"]["response"]; - }; - listAlertsForOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/secret-scanning/alerts"]["parameters"]; - response: Endpoints["GET /orgs/{org}/secret-scanning/alerts"]["response"]; - }; - listAlertsForRepo: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["response"]; - }; - listLocationsForAlert: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"]["response"]; - }; - listOrgPatternConfigs: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/secret-scanning/pattern-configurations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/secret-scanning/pattern-configurations"]["response"]; - }; - updateAlert: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]["response"]; - }; - updateOrgPatternConfigs: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/secret-scanning/pattern-configurations"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/secret-scanning/pattern-configurations"]["response"]; - }; - }; - securityAdvisories: { - createFork: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"]["response"]; - }; - createPrivateVulnerabilityReport: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/security-advisories/reports"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/security-advisories/reports"]["response"]; - }; - createRepositoryAdvisory: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/security-advisories"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/security-advisories"]["response"]; - }; - createRepositoryAdvisoryCveRequest: { - parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"]["parameters"]; - response: Endpoints["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"]["response"]; - }; - getGlobalAdvisory: { - parameters: RequestParameters & Endpoints["GET /advisories/{ghsa_id}"]["parameters"]; - response: Endpoints["GET /advisories/{ghsa_id}"]["response"]; - }; - getRepositoryAdvisory: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]["response"]; - }; - listGlobalAdvisories: { - parameters: RequestParameters & Endpoints["GET /advisories"]["parameters"]; - response: Endpoints["GET /advisories"]["response"]; - }; - listOrgRepositoryAdvisories: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/security-advisories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/security-advisories"]["response"]; - }; - listRepositoryAdvisories: { - parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/security-advisories"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/security-advisories"]["response"]; - }; - updateRepositoryAdvisory: { - parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]["parameters"]; - response: Endpoints["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]["response"]; - }; - }; - teams: { - addOrUpdateMembershipForUserInOrg: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"]["response"]; - }; - addOrUpdateRepoPermissionsInOrg: { - parameters: RequestParameters & Endpoints["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["parameters"]; - response: Endpoints["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["response"]; - }; - checkPermissionsForRepoInOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["response"]; - }; - create: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/teams"]["parameters"]; - response: Endpoints["POST /orgs/{org}/teams"]["response"]; - }; - createDiscussionCommentInOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["parameters"]; - response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["response"]; - }; - createDiscussionInOrg: { - parameters: RequestParameters & Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions"]["parameters"]; - response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions"]["response"]; - }; - deleteDiscussionCommentInOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["response"]; - }; - deleteDiscussionInOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["response"]; - }; - deleteInOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}"]["response"]; - }; - getByName: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}"]["response"]; - }; - getDiscussionCommentInOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["response"]; - }; - getDiscussionInOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["response"]; - }; - getMembershipForUserInOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"]["response"]; - }; - list: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams"]["response"]; - }; - listChildInOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["response"]; - }; - listDiscussionCommentsInOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["response"]; - }; - listDiscussionsInOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["response"]; - }; - listForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/teams"]["parameters"]; - response: Endpoints["GET /user/teams"]["response"]; - }; - listMembersInOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["response"]; - }; - listPendingInvitationsInOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["response"]; - }; - listReposInOrg: { - parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["response"]; - }; - removeMembershipForUserInOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"]["response"]; - }; - removeRepoInOrg: { - parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["parameters"]; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["response"]; - }; - updateDiscussionCommentInOrg: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["response"]; - }; - updateDiscussionInOrg: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["response"]; - }; - updateInOrg: { - parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/teams/{team_slug}"]["parameters"]; - response: Endpoints["PATCH /orgs/{org}/teams/{team_slug}"]["response"]; - }; - }; - users: { - addEmailForAuthenticated: { - parameters: RequestParameters & Endpoints["POST /user/emails"]["parameters"]; - response: Endpoints["POST /user/emails"]["response"]; - }; - addEmailForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/emails"]["parameters"]; - response: Endpoints["POST /user/emails"]["response"]; - }; - addSocialAccountForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/social_accounts"]["parameters"]; - response: Endpoints["POST /user/social_accounts"]["response"]; - }; - block: { - parameters: RequestParameters & Endpoints["PUT /user/blocks/{username}"]["parameters"]; - response: Endpoints["PUT /user/blocks/{username}"]["response"]; - }; - checkBlocked: { - parameters: RequestParameters & Endpoints["GET /user/blocks/{username}"]["parameters"]; - response: Endpoints["GET /user/blocks/{username}"]["response"]; - }; - checkFollowingForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/following/{target_user}"]["parameters"]; - response: Endpoints["GET /users/{username}/following/{target_user}"]["response"]; - }; - checkPersonIsFollowedByAuthenticated: { - parameters: RequestParameters & Endpoints["GET /user/following/{username}"]["parameters"]; - response: Endpoints["GET /user/following/{username}"]["response"]; - }; - createGpgKeyForAuthenticated: { - parameters: RequestParameters & Endpoints["POST /user/gpg_keys"]["parameters"]; - response: Endpoints["POST /user/gpg_keys"]["response"]; - }; - createGpgKeyForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/gpg_keys"]["parameters"]; - response: Endpoints["POST /user/gpg_keys"]["response"]; - }; - createPublicSshKeyForAuthenticated: { - parameters: RequestParameters & Endpoints["POST /user/keys"]["parameters"]; - response: Endpoints["POST /user/keys"]["response"]; - }; - createPublicSshKeyForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/keys"]["parameters"]; - response: Endpoints["POST /user/keys"]["response"]; - }; - createSshSigningKeyForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["POST /user/ssh_signing_keys"]["parameters"]; - response: Endpoints["POST /user/ssh_signing_keys"]["response"]; - }; - deleteAttestationsBulk: { - parameters: RequestParameters & Endpoints["POST /users/{username}/attestations/delete-request"]["parameters"]; - response: Endpoints["POST /users/{username}/attestations/delete-request"]["response"]; - }; - deleteAttestationsById: { - parameters: RequestParameters & Endpoints["DELETE /users/{username}/attestations/{attestation_id}"]["parameters"]; - response: Endpoints["DELETE /users/{username}/attestations/{attestation_id}"]["response"]; - }; - deleteAttestationsBySubjectDigest: { - parameters: RequestParameters & Endpoints["DELETE /users/{username}/attestations/digest/{subject_digest}"]["parameters"]; - response: Endpoints["DELETE /users/{username}/attestations/digest/{subject_digest}"]["response"]; - }; - deleteEmailForAuthenticated: { - parameters: RequestParameters & Endpoints["DELETE /user/emails"]["parameters"]; - response: Endpoints["DELETE /user/emails"]["response"]; - }; - deleteEmailForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/emails"]["parameters"]; - response: Endpoints["DELETE /user/emails"]["response"]; - }; - deleteGpgKeyForAuthenticated: { - parameters: RequestParameters & Endpoints["DELETE /user/gpg_keys/{gpg_key_id}"]["parameters"]; - response: Endpoints["DELETE /user/gpg_keys/{gpg_key_id}"]["response"]; - }; - deleteGpgKeyForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/gpg_keys/{gpg_key_id}"]["parameters"]; - response: Endpoints["DELETE /user/gpg_keys/{gpg_key_id}"]["response"]; - }; - deletePublicSshKeyForAuthenticated: { - parameters: RequestParameters & Endpoints["DELETE /user/keys/{key_id}"]["parameters"]; - response: Endpoints["DELETE /user/keys/{key_id}"]["response"]; - }; - deletePublicSshKeyForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/keys/{key_id}"]["parameters"]; - response: Endpoints["DELETE /user/keys/{key_id}"]["response"]; - }; - deleteSocialAccountForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/social_accounts"]["parameters"]; - response: Endpoints["DELETE /user/social_accounts"]["response"]; - }; - deleteSshSigningKeyForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"]["parameters"]; - response: Endpoints["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"]["response"]; - }; - follow: { - parameters: RequestParameters & Endpoints["PUT /user/following/{username}"]["parameters"]; - response: Endpoints["PUT /user/following/{username}"]["response"]; - }; - getAuthenticated: { - parameters: RequestParameters & Endpoints["GET /user"]["parameters"]; - response: Endpoints["GET /user"]["response"]; - }; - getById: { - parameters: RequestParameters & Endpoints["GET /user/{account_id}"]["parameters"]; - response: Endpoints["GET /user/{account_id}"]["response"]; - }; - getByUsername: { - parameters: RequestParameters & Endpoints["GET /users/{username}"]["parameters"]; - response: Endpoints["GET /users/{username}"]["response"]; - }; - getContextForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/hovercard"]["parameters"]; - response: Endpoints["GET /users/{username}/hovercard"]["response"]; - }; - getGpgKeyForAuthenticated: { - parameters: RequestParameters & Endpoints["GET /user/gpg_keys/{gpg_key_id}"]["parameters"]; - response: Endpoints["GET /user/gpg_keys/{gpg_key_id}"]["response"]; - }; - getGpgKeyForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/gpg_keys/{gpg_key_id}"]["parameters"]; - response: Endpoints["GET /user/gpg_keys/{gpg_key_id}"]["response"]; - }; - getPublicSshKeyForAuthenticated: { - parameters: RequestParameters & Endpoints["GET /user/keys/{key_id}"]["parameters"]; - response: Endpoints["GET /user/keys/{key_id}"]["response"]; - }; - getPublicSshKeyForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/keys/{key_id}"]["parameters"]; - response: Endpoints["GET /user/keys/{key_id}"]["response"]; - }; - getSshSigningKeyForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/ssh_signing_keys/{ssh_signing_key_id}"]["parameters"]; - response: Endpoints["GET /user/ssh_signing_keys/{ssh_signing_key_id}"]["response"]; - }; - list: { - parameters: RequestParameters & Endpoints["GET /users"]["parameters"]; - response: Endpoints["GET /users"]["response"]; - }; - listAttestations: { - parameters: RequestParameters & Endpoints["GET /users/{username}/attestations/{subject_digest}"]["parameters"]; - response: Endpoints["GET /users/{username}/attestations/{subject_digest}"]["response"]; - }; - listAttestationsBulk: { - parameters: RequestParameters & Endpoints["POST /users/{username}/attestations/bulk-list{?per_page,before,after}"]["parameters"]; - response: Endpoints["POST /users/{username}/attestations/bulk-list{?per_page,before,after}"]["response"]; - }; - listBlockedByAuthenticated: { - parameters: RequestParameters & Endpoints["GET /user/blocks"]["parameters"]; - response: Endpoints["GET /user/blocks"]["response"]; - }; - listBlockedByAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/blocks"]["parameters"]; - response: Endpoints["GET /user/blocks"]["response"]; - }; - listEmailsForAuthenticated: { - parameters: RequestParameters & Endpoints["GET /user/emails"]["parameters"]; - response: Endpoints["GET /user/emails"]["response"]; - }; - listEmailsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/emails"]["parameters"]; - response: Endpoints["GET /user/emails"]["response"]; - }; - listFollowedByAuthenticated: { - parameters: RequestParameters & Endpoints["GET /user/following"]["parameters"]; - response: Endpoints["GET /user/following"]["response"]; - }; - listFollowedByAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/following"]["parameters"]; - response: Endpoints["GET /user/following"]["response"]; - }; - listFollowersForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/followers"]["parameters"]; - response: Endpoints["GET /user/followers"]["response"]; - }; - listFollowersForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/followers"]["parameters"]; - response: Endpoints["GET /users/{username}/followers"]["response"]; - }; - listFollowingForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/following"]["parameters"]; - response: Endpoints["GET /users/{username}/following"]["response"]; - }; - listGpgKeysForAuthenticated: { - parameters: RequestParameters & Endpoints["GET /user/gpg_keys"]["parameters"]; - response: Endpoints["GET /user/gpg_keys"]["response"]; - }; - listGpgKeysForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/gpg_keys"]["parameters"]; - response: Endpoints["GET /user/gpg_keys"]["response"]; - }; - listGpgKeysForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/gpg_keys"]["parameters"]; - response: Endpoints["GET /users/{username}/gpg_keys"]["response"]; - }; - listPublicEmailsForAuthenticated: { - parameters: RequestParameters & Endpoints["GET /user/public_emails"]["parameters"]; - response: Endpoints["GET /user/public_emails"]["response"]; - }; - listPublicEmailsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/public_emails"]["parameters"]; - response: Endpoints["GET /user/public_emails"]["response"]; - }; - listPublicKeysForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/keys"]["parameters"]; - response: Endpoints["GET /users/{username}/keys"]["response"]; - }; - listPublicSshKeysForAuthenticated: { - parameters: RequestParameters & Endpoints["GET /user/keys"]["parameters"]; - response: Endpoints["GET /user/keys"]["response"]; - }; - listPublicSshKeysForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/keys"]["parameters"]; - response: Endpoints["GET /user/keys"]["response"]; - }; - listSocialAccountsForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/social_accounts"]["parameters"]; - response: Endpoints["GET /user/social_accounts"]["response"]; - }; - listSocialAccountsForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/social_accounts"]["parameters"]; - response: Endpoints["GET /users/{username}/social_accounts"]["response"]; - }; - listSshSigningKeysForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["GET /user/ssh_signing_keys"]["parameters"]; - response: Endpoints["GET /user/ssh_signing_keys"]["response"]; - }; - listSshSigningKeysForUser: { - parameters: RequestParameters & Endpoints["GET /users/{username}/ssh_signing_keys"]["parameters"]; - response: Endpoints["GET /users/{username}/ssh_signing_keys"]["response"]; - }; - setPrimaryEmailVisibilityForAuthenticated: { - parameters: RequestParameters & Endpoints["PATCH /user/email/visibility"]["parameters"]; - response: Endpoints["PATCH /user/email/visibility"]["response"]; - }; - setPrimaryEmailVisibilityForAuthenticatedUser: { - parameters: RequestParameters & Endpoints["PATCH /user/email/visibility"]["parameters"]; - response: Endpoints["PATCH /user/email/visibility"]["response"]; - }; - unblock: { - parameters: RequestParameters & Endpoints["DELETE /user/blocks/{username}"]["parameters"]; - response: Endpoints["DELETE /user/blocks/{username}"]["response"]; - }; - unfollow: { - parameters: RequestParameters & Endpoints["DELETE /user/following/{username}"]["parameters"]; - response: Endpoints["DELETE /user/following/{username}"]["response"]; - }; - updateAuthenticated: { - parameters: RequestParameters & Endpoints["PATCH /user"]["parameters"]; - response: Endpoints["PATCH /user"]["response"]; - }; - }; -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts deleted file mode 100644 index f6d1273..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { Octokit } from "@octokit/core"; -export type { RestEndpointMethodTypes } from "./generated/parameters-and-response-types.js"; -import type { Api } from "./types.js"; -export type { Api }; -export declare function restEndpointMethods(octokit: Octokit): Api; -export declare namespace restEndpointMethods { - var VERSION: string; -} -export declare function legacyRestEndpointMethods(octokit: Octokit): Api["rest"] & Api; -export declare namespace legacyRestEndpointMethods { - var VERSION: string; -} diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts deleted file mode 100644 index 5fbfe84..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { Route, RequestParameters } from "@octokit/types"; -import type { RestEndpointMethods } from "./generated/method-types.js"; -export type Api = { - rest: RestEndpointMethods; -}; -export type EndpointDecorations = { - mapToData?: string; - deprecated?: string; - renamed?: [string, string]; - renamedParameters?: { - [name: string]: string; - }; -}; -export type EndpointsDefaultsAndDecorations = { - [scope: string]: { - [methodName: string]: [Route, RequestParameters?, EndpointDecorations?]; - }; -}; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts deleted file mode 100644 index 9b8a5a3..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "17.0.0"; diff --git a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/package.json b/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/package.json deleted file mode 100644 index 5b827b9..0000000 --- a/sdks/nodejs/node_modules/@octokit/plugin-rest-endpoint-methods/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "@octokit/plugin-rest-endpoint-methods", - "version": "17.0.0", - "type": "module", - "description": "Octokit plugin adding one method for all of api.github.com REST API endpoints", - "repository": "github:octokit/plugin-rest-endpoint-methods.js", - "keywords": [ - "github", - "api", - "sdk", - "toolkit" - ], - "author": "Gregor Martynus (https://twitter.com/gr2m)", - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0" - }, - "devDependencies": { - "@octokit/core": "^7.0.0", - "@octokit/tsconfig": "^4.0.0", - "@types/node": "^22.0.0", - "@vitest/coverage-v8": "^3.0.5", - "camelcase": "^8.0.0", - "esbuild": "^0.25.0", - "fetch-mock": "^12.0.0", - "github-openapi-graphql-query": "^5.0.0", - "glob": "^11.0.0", - "prettier": "3.6.2", - "semantic-release-plugin-update-version-in-files": "^2.0.0", - "sinon": "^21.0.0", - "sort-keys": "^6.0.0", - "string-to-jsdoc-comment": "^1.0.0", - "typescript": "^5.0.0", - "vitest": "^3.0.5" - }, - "peerDependencies": { - "@octokit/core": ">=6" - }, - "publishConfig": { - "access": "public", - "provenance": true - }, - "engines": { - "node": ">= 20" - }, - "files": [ - "dist-*/**" - ], - "types": "./dist-types/index.d.ts", - "exports": { - ".": { - "import": "./dist-src/index.js", - "types": "./dist-types/index.d.ts", - "default": "./dist-src/index.js" - } - }, - "sideEffects": false -} diff --git a/sdks/nodejs/node_modules/@octokit/request-error/LICENSE b/sdks/nodejs/node_modules/@octokit/request-error/LICENSE deleted file mode 100644 index ef2c18e..0000000 --- a/sdks/nodejs/node_modules/@octokit/request-error/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@octokit/request-error/README.md b/sdks/nodejs/node_modules/@octokit/request-error/README.md deleted file mode 100644 index df15c6d..0000000 --- a/sdks/nodejs/node_modules/@octokit/request-error/README.md +++ /dev/null @@ -1,93 +0,0 @@ -# request-error.js - -> Error class for Octokit request errors - -[![@latest](https://img.shields.io/npm/v/@octokit/request-error.svg)](https://www.npmjs.com/package/@octokit/request-error) -[![Build Status](https://github.com/octokit/request-error.js/workflows/Test/badge.svg)](https://github.com/octokit/request-error.js/actions?query=workflow%3ATest) - -## Usage - - - - - - -
-Browsers - -Load @octokit/request-error directly from esm.sh - -```html - -``` - -
-Node - - -Install with npm install @octokit/request-error - -```js -import { RequestError } from "@octokit/request-error"; -``` - -
- -> [!IMPORTANT] -> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json` by setting `"moduleResolution": "node16", "module": "node16"`. -> -> See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports).
-> See this [helpful guide on transitioning to ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) from [@sindresorhus](https://github.com/sindresorhus) - -```js -const error = new RequestError("Oops", 500, { - request: { - method: "POST", - url: "https://api.github.com/foo", - body: { - bar: "baz", - }, - headers: { - authorization: "token secret123", - }, - }, - response: { - status: 500, - url: "https://api.github.com/foo", - headers: { - "x-github-request-id": "1:2:3:4", - }, - data: { - foo: "bar", - }, - }, -}); - -error.message; // Oops -error.status; // 500 -error.request; // { method, url, headers, body } -error.response; // { url, status, headers, data } -``` - -### Usage with Octokit - -```js -try { - // your code here that sends at least one Octokit request - await octokit.request("GET /"); -} catch (error) { - // Octokit errors always have a `error.status` property which is the http response code - if (error.status) { - // handle Octokit error - } else { - // handle all other errors - throw error; - } -} -``` - -## LICENSE - -[MIT](LICENSE) diff --git a/sdks/nodejs/node_modules/@octokit/request-error/dist-src/index.js b/sdks/nodejs/node_modules/@octokit/request-error/dist-src/index.js deleted file mode 100644 index 94cd5bd..0000000 --- a/sdks/nodejs/node_modules/@octokit/request-error/dist-src/index.js +++ /dev/null @@ -1,41 +0,0 @@ -class RequestError extends Error { - name; - /** - * http status code - */ - status; - /** - * Request options that lead to the error. - */ - request; - /** - * Response object if a response was received - */ - response; - constructor(message, statusCode, options) { - super(message, { cause: options.cause }); - this.name = "HttpError"; - this.status = Number.parseInt(statusCode); - if (Number.isNaN(this.status)) { - this.status = 0; - } - /* v8 ignore else -- @preserve -- Bug with vitest coverage where it sees an else branch that doesn't exist */ - if ("response" in options) { - this.response = options.response; - } - const requestCopy = Object.assign({}, options.request); - if (options.request.headers.authorization) { - requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace( - /(? | undefined; - constructor(message: string, statusCode: number, options: RequestErrorOptions); -} diff --git a/sdks/nodejs/node_modules/@octokit/request-error/dist-types/types.d.ts b/sdks/nodejs/node_modules/@octokit/request-error/dist-types/types.d.ts deleted file mode 100644 index 91b9afa..0000000 --- a/sdks/nodejs/node_modules/@octokit/request-error/dist-types/types.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { RequestOptions, OctokitResponse } from "@octokit/types"; -export interface RequestErrorOptions extends ErrorOptions { - response?: OctokitResponse | undefined; - request: RequestOptions; -} diff --git a/sdks/nodejs/node_modules/@octokit/request-error/package.json b/sdks/nodejs/node_modules/@octokit/request-error/package.json deleted file mode 100644 index 9b269d2..0000000 --- a/sdks/nodejs/node_modules/@octokit/request-error/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "@octokit/request-error", - "version": "7.1.0", - "publishConfig": { - "access": "public", - "provenance": true - }, - "type": "module", - "description": "Error class for Octokit request errors", - "repository": "github:octokit/request-error.js", - "keywords": [ - "octokit", - "github", - "api", - "error" - ], - "author": "Gregor Martynus (https://github.com/gr2m)", - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0" - }, - "devDependencies": { - "@octokit/tsconfig": "^4.0.0", - "@types/node": "^24.0.0", - "@vitest/coverage-v8": "^4.0.0", - "esbuild": "^0.27.0", - "glob": "^11.0.0", - "prettier": "3.6.2", - "tinybench": "^5.0.0", - "typescript": "^5.0.0", - "vitest": "^4.0.0" - }, - "engines": { - "node": ">= 20" - }, - "files": [ - "dist-*/**", - "bin/**" - ], - "types": "./dist-types/index.d.ts", - "exports": { - ".": { - "types": "./dist-types/index.d.ts", - "import": "./dist-src/index.js", - "default": "./dist-src/index.js" - } - }, - "sideEffects": false, - "unpkg": "dist-src/index.js" -} diff --git a/sdks/nodejs/node_modules/@octokit/request/LICENSE b/sdks/nodejs/node_modules/@octokit/request/LICENSE deleted file mode 100644 index af5366d..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@octokit/request/README.md b/sdks/nodejs/node_modules/@octokit/request/README.md deleted file mode 100644 index 75f4320..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/README.md +++ /dev/null @@ -1,577 +0,0 @@ -# request.js - -> Send parameterized requests to GitHub’s APIs with sensible defaults in browsers and Node - -[![@latest](https://img.shields.io/npm/v/@octokit/request.svg)](https://www.npmjs.com/package/@octokit/request) -[![Build Status](https://github.com/octokit/request.js/workflows/Test/badge.svg)](https://github.com/octokit/request.js/actions?query=workflow%3ATest+branch%3Amain) - -`@octokit/request` is a request library for browsers & node that makes it easier -to interact with [GitHub’s REST API](https://developer.github.com/v3/) and -[GitHub’s GraphQL API](https://developer.github.com/v4/guides/forming-calls/#the-graphql-endpoint). - -It uses [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) to parse -the passed options and sends the request using [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). You can pass a custom `fetch` function using the `options.request.fetch` option, see below. - - - - - -- [request.js](#requestjs) - - [Features](#features) - - [Usage](#usage) - - [REST API example](#rest-api-example) - - [GraphQL example](#graphql-example) - - [Alternative: pass `method` \& `url` as part of options](#alternative-pass-method--url-as-part-of-options) - - [Authentication](#authentication) - - [request()](#request) - - [`request.defaults()`](#requestdefaults) - - [`request.endpoint`](#requestendpoint) - - [Special cases](#special-cases) - - [The `data` parameter – set request body directly](#the-data-parameter--set-request-body-directly) - - [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body) - - [Set a custom Agent to your requests](#set-a-custom-agent-to-your-requests) - - [LICENSE](#license) - - - -## Features - -🤩 1:1 mapping of REST API endpoint documentation, e.g. [Add labels to an issue](https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue) becomes - -```js -request("POST /repos/{owner}/{repo}/issues/{number}/labels", { - mediaType: { - previews: ["symmetra"], - }, - owner: "octokit", - repo: "request.js", - number: 1, - labels: ["🐛 bug"], -}); -``` - -👶 [Small bundle size](https://bundlephobia.com/result?p=@octokit/request@5.0.3) (\<4kb minified + gzipped) - -😎 [Authenticate](#authentication) with any of [GitHubs Authentication Strategies](https://github.com/octokit/auth.js). - -👍 Sensible defaults - -- `baseUrl`: `https://api.github.com` -- `headers.accept`: `application/vnd.github.v3+json` -- `headers['user-agent']`: `octokit-request.js/ `, e.g. `octokit-request.js/1.2.3 Node.js/10.15.0 (macOS Mojave; x64)` - -👌 Simple to test: mock requests by passing a custom fetch method. - -🧐 Simple to debug: Sets `error.request` to request options causing the error (with redacted credentials). - -## Usage - - - - - - -
-Browsers - -Load @octokit/request directly from esm.sh - -```html - -``` - -
-Node - - -Install with npm install @octokit/request - -```js -import { request } from "@octokit/request"; -``` - -
- -### REST API example - -```js -// Following GitHub docs formatting: -// https://developer.github.com/v3/repos/#list-organization-repositories -const result = await request("GET /orgs/{org}/repos", { - headers: { - authorization: "token 0000000000000000000000000000000000000001", - }, - org: "octokit", - type: "private", -}); - -console.log(`${result.data.length} repos found.`); -``` - -### GraphQL example - -For GraphQL request we recommend using [`@octokit/graphql`](https://github.com/octokit/graphql.js#readme) - -```js -const result = await request("POST /graphql", { - headers: { - authorization: "token 0000000000000000000000000000000000000001", - }, - query: `query ($login: String!) { - organization(login: $login) { - repositories(privacy: PRIVATE) { - totalCount - } - } - }`, - variables: { - login: "octokit", - }, -}); -``` - -### Alternative: pass `method` & `url` as part of options - -Alternatively, pass in a method and a url - -```js -const result = await request({ - method: "GET", - url: "/orgs/{org}/repos", - headers: { - authorization: "token 0000000000000000000000000000000000000001", - }, - org: "octokit", - type: "private", -}); -``` - -## Authentication - -The simplest way to authenticate a request is to set the `Authorization` header directly, e.g. to a [personal access token](https://github.com/settings/tokens/). - -```js -const requestWithAuth = request.defaults({ - headers: { - authorization: "token 0000000000000000000000000000000000000001", - }, -}); -const result = await requestWithAuth("GET /user"); -``` - -For more complex authentication strategies such as GitHub Apps or Basic, we recommend the according authentication library exported by [`@octokit/auth`](https://github.com/octokit/auth.js). - -```js -import { createAppAuth } from "@octokit/auth-app"; -const auth = createAppAuth({ - appId: process.env.APP_ID, - privateKey: process.env.PRIVATE_KEY, - installationId: 123, -}); -const requestWithAuth = request.defaults({ - request: { - hook: auth.hook, - }, - mediaType: { - previews: ["machine-man"], - }, -}); - -const { data: app } = await requestWithAuth("GET /app"); -const { data: app } = await requestWithAuth( - "POST /repos/{owner}/{repo}/issues", - { - owner: "octocat", - repo: "hello-world", - title: "Hello from the engine room", - }, -); -``` - -## request() - -`request(route, options)` or `request(options)`. - -**Options** - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- name - - type - - description -
- route - - String - - **Required**. If route is set it has to be a string consisting of the request method and URL, e.g. GET /orgs/{org} -
- options.baseUrl - - String - - The base URL that route or url will be prefixed with, if they use relative paths. Defaults to https://api.github.com. -
- options.headers - - Object - - Custom headers. Passed headers are merged with defaults:
- headers['user-agent'] defaults to octokit-rest.js/1.2.3 (where 1.2.3 is the released version).
- headers['accept'] defaults to application/vnd.github.v3+json.
Use options.mediaType.{format,previews} to request API previews and custom media types. -
- options.method - - String - - Any supported http verb, case-insensitive. Defaults to Get. -
- options.mediaType.format - - String - - Media type param, such as `raw`, `html`, or `full`. See Media Types. -
- options.mediaType.previews - - Array of strings - - Name of previews, such as `mercy`, `symmetra`, or `scarlet-witch`. See GraphQL Schema Previews. - Note that these only apply to GraphQL requests and have no effect on REST routes. -
- options.url - - String - - **Required**. A path or full URL which may contain :variable or {variable} placeholders, - e.g. /orgs/{org}/repos. The url is parsed using url-template. -
- options.data - - Any - - Set request body directly instead of setting it to JSON based on additional parameters. See "The `data` parameter" below. -
- options.request.fetch - - Function - - Custom replacement for fetch. Useful for testing or request hooks. -
- options.request.hook - - Function - - Function with the signature hook(request, endpointOptions), where endpointOptions are the parsed options as returned by endpoint.merge(), and request is request(). This option works great in conjunction with before-after-hook. -
- options.request.signal - - new AbortController().signal - - Use an AbortController instance to cancel a request. In node you can only cancel streamed requests. -
- options.request.log - - object - - Used for internal logging. Defaults to console. -
- options.request.parseSuccessResponseBody - - boolean - - If set to false the returned `response` will be passed through from `fetch`. This is useful to stream response.body when downloading files from the GitHub API. -
- -All other options except `options.request.*` will be passed depending on the `method` and `url` options. - -1. If the option key is a placeholder in the `url`, it will be used as replacement. For example, if the passed options are `{url: '/orgs/{org}/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos` -2. If the `method` is `GET` or `HEAD`, the option is passed as query parameter -3. Otherwise the parameter is passed in the request body as JSON key. - -**Result** - -`request` returns a promise. If the request was successful, the promise resolves with an object containing 4 keys: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- key - - type - - description -
statusIntegerResponse status status
urlStringURL of response. If a request results in redirects, this is the final URL. You can send a HEAD request to retrieve it without loading the full response body.
headersObjectAll response headers
dataAnyThe response body as returned from server. If the response is JSON then it will be parsed into an object
- -If an error occurs, which includes an unsuccessful status code, the promise is rejected with an `error` object containing 3 keys to help with debugging: - -- `error.status` The http response status code -- `error.request` The request options such as `method`, `url` and `data` -- `error.response` The http response object with `url`, `headers`, and `data` - -If the error is due to an `AbortSignal` being used, the resulting `AbortError` is bubbled up to the caller. - -## `request.defaults()` - -Override or set default options. Example: - -```js -import { request } from "@octokit/request"; -const myrequest = request.defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api/v3", - headers: { - "user-agent": "myApp/1.2.3", - authorization: `token 0000000000000000000000000000000000000001`, - }, - org: "my-project", - per_page: 100, -}); - -myrequest(`GET /orgs/{org}/repos`); -``` - -You can call `.defaults()` again on the returned method, the defaults will cascade. - -```js -const myProjectRequest = request.defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api/v3", - headers: { - "user-agent": "myApp/1.2.3", - }, - org: "my-project", -}); -const myProjectRequestWithAuth = myProjectRequest.defaults({ - headers: { - authorization: `token 0000000000000000000000000000000000000001`, - }, -}); -``` - -`myProjectRequest` now defaults the `baseUrl`, `headers['user-agent']`, -`org` and `headers['authorization']` on top of `headers['accept']` that is set -by the global default. - -## `request.endpoint` - -See https://github.com/octokit/endpoint.js. Example - -```js -const options = request.endpoint("GET /orgs/{org}/repos", { - org: "my-project", - type: "private", -}); - -// { -// method: 'GET', -// url: 'https://api.github.com/orgs/my-project/repos?type=private', -// headers: { -// accept: 'application/vnd.github.v3+json', -// authorization: 'token 0000000000000000000000000000000000000001', -// 'user-agent': 'octokit/endpoint.js v1.2.3' -// } -// } -``` - -All of the [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) API can be used: - -- [`octokitRequest.endpoint()`](#endpoint) -- [`octokitRequest.endpoint.defaults()`](#endpointdefaults) -- [`octokitRequest.endpoint.merge()`](#endpointdefaults) -- [`octokitRequest.endpoint.parse()`](#endpointmerge) - -## Special cases - - - -### The `data` parameter – set request body directly - -Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead the request body needs to be set directly. In these cases, set the `data` parameter. - -```js -const response = await request("POST /markdown/raw", { - data: "Hello world github/linguist#1 **cool**, and #1!", - headers: { - accept: "text/html;charset=utf-8", - "content-type": "text/plain", - }, -}); - -// Request is sent as -// -// { -// method: 'post', -// url: 'https://api.github.com/markdown/raw', -// headers: { -// accept: 'text/html;charset=utf-8', -// 'content-type': 'text/plain', -// 'user-agent': userAgent -// }, -// body: 'Hello world github/linguist#1 **cool**, and #1!' -// } -// -// not as -// -// { -// ... -// body: '{"data": "Hello world github/linguist#1 **cool**, and #1!"}' -// } -``` - -### Set parameters for both the URL/query and the request body - -There are API endpoints that accept both query parameters as well as a body. In that case you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570). - -Example - -```js -request( - "POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}", - { - name: "example.zip", - label: "short description", - headers: { - "content-type": "text/plain", - "content-length": 14, - authorization: `token 0000000000000000000000000000000000000001`, - }, - data: "Hello, world!", - }, -); -``` - -### Set a custom Agent to your requests - -The way to pass a custom `Agent` to requests is by creating a custom `fetch` function and pass it as `options.request.fetch`. A good example can be [undici's `fetch` implementation](https://undici.nodejs.org/#/?id=undicifetchinput-init-promise). - -Example ([See example in CodeSandbox](https://codesandbox.io/p/sandbox/nifty-stitch-wdlwlf)) - -```js -import { request } from "@octokit/request"; -import { fetch as undiciFetch, Agent } from "undici"; - -/** @type {typeof import("undici").fetch} */ -const myFetch = (url, options) => { - return undiciFetch(url, { - ...options, - dispatcher: new Agent({ - keepAliveTimeout: 10, - keepAliveMaxTimeout: 10, - }), - }); -}; - -const { data } = await request("GET /users/{username}", { - username: "octocat", - headers: { - "X-GitHub-Api-Version": "2022-11-28", - }, - request: { - fetch: myFetch, - }, -}); -``` - -## LICENSE - -[MIT](LICENSE) diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-bundle/index.js b/sdks/nodejs/node_modules/@octokit/request/dist-bundle/index.js deleted file mode 100644 index be1bc8d..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-bundle/index.js +++ /dev/null @@ -1,203 +0,0 @@ -// pkg/dist-src/index.js -import { endpoint } from "@octokit/endpoint"; - -// pkg/dist-src/defaults.js -import { getUserAgent } from "universal-user-agent"; - -// pkg/dist-src/version.js -var VERSION = "10.0.8"; - -// pkg/dist-src/defaults.js -var defaults_default = { - headers: { - "user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}` - } -}; - -// pkg/dist-src/fetch-wrapper.js -import { safeParse } from "fast-content-type-parse"; -import { JSONParse, JSONStringify } from "json-with-bigint"; - -// pkg/dist-src/is-plain-object.js -function isPlainObject(value) { - if (typeof value !== "object" || value === null) return false; - if (Object.prototype.toString.call(value) !== "[object Object]") return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; - return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); -} - -// pkg/dist-src/fetch-wrapper.js -import { RequestError } from "@octokit/request-error"; -var noop = () => ""; -async function fetchWrapper(requestOptions) { - const fetch = requestOptions.request?.fetch || globalThis.fetch; - if (!fetch) { - throw new Error( - "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing" - ); - } - const log = requestOptions.request?.log || console; - const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false; - const body = isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body) ? JSONStringify(requestOptions.body) : requestOptions.body; - const requestHeaders = Object.fromEntries( - Object.entries(requestOptions.headers).map(([name, value]) => [ - name, - String(value) - ]) - ); - let fetchResponse; - try { - fetchResponse = await fetch(requestOptions.url, { - method: requestOptions.method, - body, - redirect: requestOptions.request?.redirect, - headers: requestHeaders, - signal: requestOptions.request?.signal, - // duplex must be set if request.body is ReadableStream or Async Iterables. - // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. - ...requestOptions.body && { duplex: "half" } - }); - } catch (error) { - let message = "Unknown Error"; - if (error instanceof Error) { - if (error.name === "AbortError") { - error.status = 500; - throw error; - } - message = error.message; - if (error.name === "TypeError" && "cause" in error) { - if (error.cause instanceof Error) { - message = error.cause.message; - } else if (typeof error.cause === "string") { - message = error.cause; - } - } - } - const requestError = new RequestError(message, 500, { - request: requestOptions - }); - requestError.cause = error; - throw requestError; - } - const status = fetchResponse.status; - const url = fetchResponse.url; - const responseHeaders = {}; - for (const [key, value] of fetchResponse.headers) { - responseHeaders[key] = value; - } - const octokitResponse = { - url, - status, - headers: responseHeaders, - data: "" - }; - if ("deprecation" in responseHeaders) { - const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel="deprecation"/); - const deprecationLink = matches && matches.pop(); - log.warn( - `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}` - ); - } - if (status === 204 || status === 205) { - return octokitResponse; - } - if (requestOptions.method === "HEAD") { - if (status < 400) { - return octokitResponse; - } - throw new RequestError(fetchResponse.statusText, status, { - response: octokitResponse, - request: requestOptions - }); - } - if (status === 304) { - octokitResponse.data = await getResponseData(fetchResponse); - throw new RequestError("Not modified", status, { - response: octokitResponse, - request: requestOptions - }); - } - if (status >= 400) { - octokitResponse.data = await getResponseData(fetchResponse); - throw new RequestError(toErrorMessage(octokitResponse.data), status, { - response: octokitResponse, - request: requestOptions - }); - } - octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body; - return octokitResponse; -} -async function getResponseData(response) { - const contentType = response.headers.get("content-type"); - if (!contentType) { - return response.text().catch(noop); - } - const mimetype = safeParse(contentType); - if (isJSONResponse(mimetype)) { - let text = ""; - try { - text = await response.text(); - return JSONParse(text); - } catch (err) { - return text; - } - } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") { - return response.text().catch(noop); - } else { - return response.arrayBuffer().catch( - /* v8 ignore next -- @preserve */ - () => new ArrayBuffer(0) - ); - } -} -function isJSONResponse(mimetype) { - return mimetype.type === "application/json" || mimetype.type === "application/scim+json"; -} -function toErrorMessage(data) { - if (typeof data === "string") { - return data; - } - if (data instanceof ArrayBuffer) { - return "Unknown error"; - } - if ("message" in data) { - const suffix = "documentation_url" in data ? ` - ${data.documentation_url}` : ""; - return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(", ")}${suffix}` : `${data.message}${suffix}`; - } - return `Unknown error: ${JSON.stringify(data)}`; -} - -// pkg/dist-src/with-defaults.js -function withDefaults(oldEndpoint, newDefaults) { - const endpoint2 = oldEndpoint.defaults(newDefaults); - const newApi = function(route, parameters) { - const endpointOptions = endpoint2.merge(route, parameters); - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint2.parse(endpointOptions)); - } - const request2 = (route2, parameters2) => { - return fetchWrapper( - endpoint2.parse(endpoint2.merge(route2, parameters2)) - ); - }; - Object.assign(request2, { - endpoint: endpoint2, - defaults: withDefaults.bind(null, endpoint2) - }); - return endpointOptions.request.hook(request2, endpointOptions); - }; - return Object.assign(newApi, { - endpoint: endpoint2, - defaults: withDefaults.bind(null, endpoint2) - }); -} - -// pkg/dist-src/index.js -var request = withDefaults(endpoint, defaults_default); -export { - request -}; -/* v8 ignore next -- @preserve */ -/* v8 ignore else -- @preserve */ diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-bundle/index.js.map b/sdks/nodejs/node_modules/@octokit/request/dist-bundle/index.js.map deleted file mode 100644 index 34bf484..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-bundle/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../dist-src/index.js", "../dist-src/defaults.js", "../dist-src/version.js", "../dist-src/fetch-wrapper.js", "../dist-src/is-plain-object.js", "../dist-src/with-defaults.js"], - "sourcesContent": ["import { endpoint } from \"@octokit/endpoint\";\nimport defaults from \"./defaults.js\";\nimport withDefaults from \"./with-defaults.js\";\nconst request = withDefaults(endpoint, defaults);\nexport {\n request\n};\n", "import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version.js\";\nvar defaults_default = {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`\n }\n};\nexport {\n defaults_default as default\n};\n", "const VERSION = \"10.0.8\";\nexport {\n VERSION\n};\n", "import { safeParse } from \"fast-content-type-parse\";\nimport { JSONParse, JSONStringify } from \"json-with-bigint\";\nimport { isPlainObject } from \"./is-plain-object.js\";\nimport { RequestError } from \"@octokit/request-error\";\n/* v8 ignore next -- @preserve */\nconst noop = () => \"\";\nasync function fetchWrapper(requestOptions) {\n const fetch = requestOptions.request?.fetch || globalThis.fetch;\n if (!fetch) {\n throw new Error(\n \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n );\n }\n const log = requestOptions.request?.log || console;\n const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;\n const body = isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body) ? JSONStringify(requestOptions.body) : requestOptions.body;\n const requestHeaders = Object.fromEntries(\n Object.entries(requestOptions.headers).map(([name, value]) => [\n name,\n String(value)\n ])\n );\n let fetchResponse;\n try {\n fetchResponse = await fetch(requestOptions.url, {\n method: requestOptions.method,\n body,\n redirect: requestOptions.request?.redirect,\n headers: requestHeaders,\n signal: requestOptions.request?.signal,\n // duplex must be set if request.body is ReadableStream or Async Iterables.\n // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n ...requestOptions.body && { duplex: \"half\" }\n });\n } catch (error) {\n let message = \"Unknown Error\";\n /* v8 ignore else -- @preserve */\n if (error instanceof Error) {\n if (error.name === \"AbortError\") {\n error.status = 500;\n throw error;\n }\n message = error.message;\n if (error.name === \"TypeError\" && \"cause\" in error) {\n /* v8 ignore else -- @preserve */\n if (error.cause instanceof Error) {\n message = error.cause.message;\n } else if (typeof error.cause === \"string\") {\n message = error.cause;\n }\n }\n }\n const requestError = new RequestError(message, 500, {\n request: requestOptions\n });\n requestError.cause = error;\n throw requestError;\n }\n const status = fetchResponse.status;\n const url = fetchResponse.url;\n const responseHeaders = {};\n for (const [key, value] of fetchResponse.headers) {\n responseHeaders[key] = value;\n }\n const octokitResponse = {\n url,\n status,\n headers: responseHeaders,\n data: \"\"\n };\n if (\"deprecation\" in responseHeaders) {\n const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(\n `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n );\n }\n if (status === 204 || status === 205) {\n return octokitResponse;\n }\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return octokitResponse;\n }\n throw new RequestError(fetchResponse.statusText, status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status === 304) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(\"Not modified\", status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status >= 400) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(toErrorMessage(octokitResponse.data), status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;\n return octokitResponse;\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (!contentType) {\n return response.text().catch(noop);\n }\n const mimetype = safeParse(contentType);\n if (isJSONResponse(mimetype)) {\n let text = \"\";\n try {\n text = await response.text();\n return JSONParse(text);\n } catch (err) {\n return text;\n }\n } else if (mimetype.type.startsWith(\"text/\") || mimetype.parameters.charset?.toLowerCase() === \"utf-8\") {\n return response.text().catch(noop);\n } else {\n return response.arrayBuffer().catch(\n /* v8 ignore next -- @preserve */\n () => new ArrayBuffer(0)\n );\n }\n}\nfunction isJSONResponse(mimetype) {\n return mimetype.type === \"application/json\" || mimetype.type === \"application/scim+json\";\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\") {\n return data;\n }\n if (data instanceof ArrayBuffer) {\n return \"Unknown error\";\n }\n if (\"message\" in data) {\n const suffix = \"documentation_url\" in data ? ` - ${data.documentation_url}` : \"\";\n return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(\", \")}${suffix}` : `${data.message}${suffix}`;\n }\n return `Unknown error: ${JSON.stringify(data)}`;\n}\nexport {\n fetchWrapper as default\n};\n", "function isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\nexport {\n isPlainObject\n};\n", "import fetchWrapper from \"./fetch-wrapper.js\";\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint = oldEndpoint.defaults(newDefaults);\n const newApi = function(route, parameters) {\n const endpointOptions = endpoint.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint.parse(endpointOptions));\n }\n const request = (route2, parameters2) => {\n return fetchWrapper(\n endpoint.parse(endpoint.merge(route2, parameters2))\n );\n };\n Object.assign(request, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint)\n });\n return endpointOptions.request.hook(request, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint)\n });\n}\nexport {\n withDefaults as default\n};\n"], - "mappings": ";AAAA,SAAS,gBAAgB;;;ACAzB,SAAS,oBAAoB;;;ACA7B,IAAM,UAAU;;;ADEhB,IAAI,mBAAmB;AAAA,EACrB,SAAS;AAAA,IACP,cAAc,sBAAsB,OAAO,IAAI,aAAa,CAAC;AAAA,EAC/D;AACF;;;AENA,SAAS,iBAAiB;AAC1B,SAAS,WAAW,qBAAqB;;;ACDzC,SAAS,cAAc,OAAO;AAC5B,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;AACxD,MAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM,kBAAmB,QAAO;AACxE,QAAM,QAAQ,OAAO,eAAe,KAAK;AACzC,MAAI,UAAU,KAAM,QAAO;AAC3B,QAAM,OAAO,OAAO,UAAU,eAAe,KAAK,OAAO,aAAa,KAAK,MAAM;AACjF,SAAO,OAAO,SAAS,cAAc,gBAAgB,QAAQ,SAAS,UAAU,KAAK,IAAI,MAAM,SAAS,UAAU,KAAK,KAAK;AAC9H;;;ADJA,SAAS,oBAAoB;AAE7B,IAAM,OAAO,MAAM;AACnB,eAAe,aAAa,gBAAgB;AAC1C,QAAM,QAAQ,eAAe,SAAS,SAAS,WAAW;AAC1D,MAAI,CAAC,OAAO;AACV,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,MAAM,eAAe,SAAS,OAAO;AAC3C,QAAM,2BAA2B,eAAe,SAAS,6BAA6B;AACtF,QAAM,OAAO,cAAc,eAAe,IAAI,KAAK,MAAM,QAAQ,eAAe,IAAI,IAAI,cAAc,eAAe,IAAI,IAAI,eAAe;AAC5I,QAAM,iBAAiB,OAAO;AAAA,IAC5B,OAAO,QAAQ,eAAe,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;AAAA,MAC5D;AAAA,MACA,OAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AACA,MAAI;AACJ,MAAI;AACF,oBAAgB,MAAM,MAAM,eAAe,KAAK;AAAA,MAC9C,QAAQ,eAAe;AAAA,MACvB;AAAA,MACA,UAAU,eAAe,SAAS;AAAA,MAClC,SAAS;AAAA,MACT,QAAQ,eAAe,SAAS;AAAA;AAAA;AAAA,MAGhC,GAAG,eAAe,QAAQ,EAAE,QAAQ,OAAO;AAAA,IAC7C,CAAC;AAAA,EACH,SAAS,OAAO;AACd,QAAI,UAAU;AAEd,QAAI,iBAAiB,OAAO;AAC1B,UAAI,MAAM,SAAS,cAAc;AAC/B,cAAM,SAAS;AACf,cAAM;AAAA,MACR;AACA,gBAAU,MAAM;AAChB,UAAI,MAAM,SAAS,eAAe,WAAW,OAAO;AAElD,YAAI,MAAM,iBAAiB,OAAO;AAChC,oBAAU,MAAM,MAAM;AAAA,QACxB,WAAW,OAAO,MAAM,UAAU,UAAU;AAC1C,oBAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AACA,UAAM,eAAe,IAAI,aAAa,SAAS,KAAK;AAAA,MAClD,SAAS;AAAA,IACX,CAAC;AACD,iBAAa,QAAQ;AACrB,UAAM;AAAA,EACR;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,MAAM,cAAc;AAC1B,QAAM,kBAAkB,CAAC;AACzB,aAAW,CAAC,KAAK,KAAK,KAAK,cAAc,SAAS;AAChD,oBAAgB,GAAG,IAAI;AAAA,EACzB;AACA,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACA,MAAI,iBAAiB,iBAAiB;AACpC,UAAM,UAAU,gBAAgB,QAAQ,gBAAgB,KAAK,MAAM,+BAA+B;AAClG,UAAM,kBAAkB,WAAW,QAAQ,IAAI;AAC/C,QAAI;AAAA,MACF,uBAAuB,eAAe,MAAM,IAAI,eAAe,GAAG,qDAAqD,gBAAgB,MAAM,GAAG,kBAAkB,SAAS,eAAe,KAAK,EAAE;AAAA,IACnM;AAAA,EACF;AACA,MAAI,WAAW,OAAO,WAAW,KAAK;AACpC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,WAAW,QAAQ;AACpC,QAAI,SAAS,KAAK;AAChB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,aAAa,cAAc,YAAY,QAAQ;AAAA,MACvD,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MAAI,WAAW,KAAK;AAClB,oBAAgB,OAAO,MAAM,gBAAgB,aAAa;AAC1D,UAAM,IAAI,aAAa,gBAAgB,QAAQ;AAAA,MAC7C,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MAAI,UAAU,KAAK;AACjB,oBAAgB,OAAO,MAAM,gBAAgB,aAAa;AAC1D,UAAM,IAAI,aAAa,eAAe,gBAAgB,IAAI,GAAG,QAAQ;AAAA,MACnE,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,kBAAgB,OAAO,2BAA2B,MAAM,gBAAgB,aAAa,IAAI,cAAc;AACvG,SAAO;AACT;AACA,eAAe,gBAAgB,UAAU;AACvC,QAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,MAAI,CAAC,aAAa;AAChB,WAAO,SAAS,KAAK,EAAE,MAAM,IAAI;AAAA,EACnC;AACA,QAAM,WAAW,UAAU,WAAW;AACtC,MAAI,eAAe,QAAQ,GAAG;AAC5B,QAAI,OAAO;AACX,QAAI;AACF,aAAO,MAAM,SAAS,KAAK;AAC3B,aAAO,UAAU,IAAI;AAAA,IACvB,SAAS,KAAK;AACZ,aAAO;AAAA,IACT;AAAA,EACF,WAAW,SAAS,KAAK,WAAW,OAAO,KAAK,SAAS,WAAW,SAAS,YAAY,MAAM,SAAS;AACtG,WAAO,SAAS,KAAK,EAAE,MAAM,IAAI;AAAA,EACnC,OAAO;AACL,WAAO,SAAS,YAAY,EAAE;AAAA;AAAA,MAE5B,MAAM,IAAI,YAAY,CAAC;AAAA,IACzB;AAAA,EACF;AACF;AACA,SAAS,eAAe,UAAU;AAChC,SAAO,SAAS,SAAS,sBAAsB,SAAS,SAAS;AACnE;AACA,SAAS,eAAe,MAAM;AAC5B,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,aAAa;AAC/B,WAAO;AAAA,EACT;AACA,MAAI,aAAa,MAAM;AACrB,UAAM,SAAS,uBAAuB,OAAO,MAAM,KAAK,iBAAiB,KAAK;AAC9E,WAAO,MAAM,QAAQ,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,MAAM,KAAK,GAAG,KAAK,OAAO,GAAG,MAAM;AAAA,EACpJ;AACA,SAAO,kBAAkB,KAAK,UAAU,IAAI,CAAC;AAC/C;;;AE/IA,SAAS,aAAa,aAAa,aAAa;AAC9C,QAAMA,YAAW,YAAY,SAAS,WAAW;AACjD,QAAM,SAAS,SAAS,OAAO,YAAY;AACzC,UAAM,kBAAkBA,UAAS,MAAM,OAAO,UAAU;AACxD,QAAI,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,QAAQ,MAAM;AAC7D,aAAO,aAAaA,UAAS,MAAM,eAAe,CAAC;AAAA,IACrD;AACA,UAAMC,WAAU,CAAC,QAAQ,gBAAgB;AACvC,aAAO;AAAA,QACLD,UAAS,MAAMA,UAAS,MAAM,QAAQ,WAAW,CAAC;AAAA,MACpD;AAAA,IACF;AACA,WAAO,OAAOC,UAAS;AAAA,MACrB,UAAAD;AAAA,MACA,UAAU,aAAa,KAAK,MAAMA,SAAQ;AAAA,IAC5C,CAAC;AACD,WAAO,gBAAgB,QAAQ,KAAKC,UAAS,eAAe;AAAA,EAC9D;AACA,SAAO,OAAO,OAAO,QAAQ;AAAA,IAC3B,UAAAD;AAAA,IACA,UAAU,aAAa,KAAK,MAAMA,SAAQ;AAAA,EAC5C,CAAC;AACH;;;ALpBA,IAAM,UAAU,aAAa,UAAU,gBAAQ;", - "names": ["endpoint", "request"] -} diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-src/defaults.js b/sdks/nodejs/node_modules/@octokit/request/dist-src/defaults.js deleted file mode 100644 index 33b14b0..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-src/defaults.js +++ /dev/null @@ -1,10 +0,0 @@ -import { getUserAgent } from "universal-user-agent"; -import { VERSION } from "./version.js"; -var defaults_default = { - headers: { - "user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}` - } -}; -export { - defaults_default as default -}; diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-src/fetch-wrapper.js b/sdks/nodejs/node_modules/@octokit/request/dist-src/fetch-wrapper.js deleted file mode 100644 index 8411532..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-src/fetch-wrapper.js +++ /dev/null @@ -1,148 +0,0 @@ -import { safeParse } from "fast-content-type-parse"; -import { JSONParse, JSONStringify } from "json-with-bigint"; -import { isPlainObject } from "./is-plain-object.js"; -import { RequestError } from "@octokit/request-error"; -/* v8 ignore next -- @preserve */ -const noop = () => ""; -async function fetchWrapper(requestOptions) { - const fetch = requestOptions.request?.fetch || globalThis.fetch; - if (!fetch) { - throw new Error( - "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing" - ); - } - const log = requestOptions.request?.log || console; - const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false; - const body = isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body) ? JSONStringify(requestOptions.body) : requestOptions.body; - const requestHeaders = Object.fromEntries( - Object.entries(requestOptions.headers).map(([name, value]) => [ - name, - String(value) - ]) - ); - let fetchResponse; - try { - fetchResponse = await fetch(requestOptions.url, { - method: requestOptions.method, - body, - redirect: requestOptions.request?.redirect, - headers: requestHeaders, - signal: requestOptions.request?.signal, - // duplex must be set if request.body is ReadableStream or Async Iterables. - // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. - ...requestOptions.body && { duplex: "half" } - }); - } catch (error) { - let message = "Unknown Error"; - /* v8 ignore else -- @preserve */ - if (error instanceof Error) { - if (error.name === "AbortError") { - error.status = 500; - throw error; - } - message = error.message; - if (error.name === "TypeError" && "cause" in error) { - /* v8 ignore else -- @preserve */ - if (error.cause instanceof Error) { - message = error.cause.message; - } else if (typeof error.cause === "string") { - message = error.cause; - } - } - } - const requestError = new RequestError(message, 500, { - request: requestOptions - }); - requestError.cause = error; - throw requestError; - } - const status = fetchResponse.status; - const url = fetchResponse.url; - const responseHeaders = {}; - for (const [key, value] of fetchResponse.headers) { - responseHeaders[key] = value; - } - const octokitResponse = { - url, - status, - headers: responseHeaders, - data: "" - }; - if ("deprecation" in responseHeaders) { - const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel="deprecation"/); - const deprecationLink = matches && matches.pop(); - log.warn( - `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}` - ); - } - if (status === 204 || status === 205) { - return octokitResponse; - } - if (requestOptions.method === "HEAD") { - if (status < 400) { - return octokitResponse; - } - throw new RequestError(fetchResponse.statusText, status, { - response: octokitResponse, - request: requestOptions - }); - } - if (status === 304) { - octokitResponse.data = await getResponseData(fetchResponse); - throw new RequestError("Not modified", status, { - response: octokitResponse, - request: requestOptions - }); - } - if (status >= 400) { - octokitResponse.data = await getResponseData(fetchResponse); - throw new RequestError(toErrorMessage(octokitResponse.data), status, { - response: octokitResponse, - request: requestOptions - }); - } - octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body; - return octokitResponse; -} -async function getResponseData(response) { - const contentType = response.headers.get("content-type"); - if (!contentType) { - return response.text().catch(noop); - } - const mimetype = safeParse(contentType); - if (isJSONResponse(mimetype)) { - let text = ""; - try { - text = await response.text(); - return JSONParse(text); - } catch (err) { - return text; - } - } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") { - return response.text().catch(noop); - } else { - return response.arrayBuffer().catch( - /* v8 ignore next -- @preserve */ - () => new ArrayBuffer(0) - ); - } -} -function isJSONResponse(mimetype) { - return mimetype.type === "application/json" || mimetype.type === "application/scim+json"; -} -function toErrorMessage(data) { - if (typeof data === "string") { - return data; - } - if (data instanceof ArrayBuffer) { - return "Unknown error"; - } - if ("message" in data) { - const suffix = "documentation_url" in data ? ` - ${data.documentation_url}` : ""; - return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(", ")}${suffix}` : `${data.message}${suffix}`; - } - return `Unknown error: ${JSON.stringify(data)}`; -} -export { - fetchWrapper as default -}; diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-src/index.js b/sdks/nodejs/node_modules/@octokit/request/dist-src/index.js deleted file mode 100644 index 42dfe6c..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import { endpoint } from "@octokit/endpoint"; -import defaults from "./defaults.js"; -import withDefaults from "./with-defaults.js"; -const request = withDefaults(endpoint, defaults); -export { - request -}; diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-src/is-plain-object.js b/sdks/nodejs/node_modules/@octokit/request/dist-src/is-plain-object.js deleted file mode 100644 index 6ae73a6..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-src/is-plain-object.js +++ /dev/null @@ -1,11 +0,0 @@ -function isPlainObject(value) { - if (typeof value !== "object" || value === null) return false; - if (Object.prototype.toString.call(value) !== "[object Object]") return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; - return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); -} -export { - isPlainObject -}; diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-src/version.js b/sdks/nodejs/node_modules/@octokit/request/dist-src/version.js deleted file mode 100644 index a81dfdf..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-src/version.js +++ /dev/null @@ -1,4 +0,0 @@ -const VERSION = "10.0.8"; -export { - VERSION -}; diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-src/with-defaults.js b/sdks/nodejs/node_modules/@octokit/request/dist-src/with-defaults.js deleted file mode 100644 index b2dd7ad..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-src/with-defaults.js +++ /dev/null @@ -1,27 +0,0 @@ -import fetchWrapper from "./fetch-wrapper.js"; -function withDefaults(oldEndpoint, newDefaults) { - const endpoint = oldEndpoint.defaults(newDefaults); - const newApi = function(route, parameters) { - const endpointOptions = endpoint.merge(route, parameters); - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint.parse(endpointOptions)); - } - const request = (route2, parameters2) => { - return fetchWrapper( - endpoint.parse(endpoint.merge(route2, parameters2)) - ); - }; - Object.assign(request, { - endpoint, - defaults: withDefaults.bind(null, endpoint) - }); - return endpointOptions.request.hook(request, endpointOptions); - }; - return Object.assign(newApi, { - endpoint, - defaults: withDefaults.bind(null, endpoint) - }); -} -export { - withDefaults as default -}; diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-types/defaults.d.ts b/sdks/nodejs/node_modules/@octokit/request/dist-types/defaults.d.ts deleted file mode 100644 index ddf2ca0..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-types/defaults.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -declare const _default: { - headers: { - "user-agent": string; - }; -}; -export default _default; diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts b/sdks/nodejs/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts deleted file mode 100644 index 880643c..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import type { EndpointInterface, OctokitResponse } from "@octokit/types"; -export default function fetchWrapper(requestOptions: ReturnType): Promise>; diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-types/index.d.ts b/sdks/nodejs/node_modules/@octokit/request/dist-types/index.d.ts deleted file mode 100644 index 1030809..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-types/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const request: import("@octokit/types").RequestInterface; diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-types/is-plain-object.d.ts b/sdks/nodejs/node_modules/@octokit/request/dist-types/is-plain-object.d.ts deleted file mode 100644 index 004fa4b..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-types/is-plain-object.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function isPlainObject(value: unknown): value is Object; diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-types/version.d.ts b/sdks/nodejs/node_modules/@octokit/request/dist-types/version.d.ts deleted file mode 100644 index d711527..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "10.0.8"; diff --git a/sdks/nodejs/node_modules/@octokit/request/dist-types/with-defaults.d.ts b/sdks/nodejs/node_modules/@octokit/request/dist-types/with-defaults.d.ts deleted file mode 100644 index 4300682..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/dist-types/with-defaults.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import type { EndpointInterface, RequestInterface, RequestParameters } from "@octokit/types"; -export default function withDefaults(oldEndpoint: EndpointInterface, newDefaults: RequestParameters): RequestInterface; diff --git a/sdks/nodejs/node_modules/@octokit/request/package.json b/sdks/nodejs/node_modules/@octokit/request/package.json deleted file mode 100644 index 882c46b..0000000 --- a/sdks/nodejs/node_modules/@octokit/request/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "@octokit/request", - "version": "10.0.8", - "type": "module", - "publishConfig": { - "access": "public", - "provenance": true - }, - "description": "Send parameterized requests to GitHub's APIs with sensible defaults in browsers and Node", - "repository": "github:octokit/request.js", - "keywords": [ - "octokit", - "github", - "api", - "request" - ], - "author": "Gregor Martynus (https://github.com/gr2m)", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^11.0.3", - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", - "fast-content-type-parse": "^3.0.0", - "json-with-bigint": "^3.5.3", - "universal-user-agent": "^7.0.2" - }, - "devDependencies": { - "@octokit/auth-app": "^8.0.0", - "@octokit/tsconfig": "^4.0.0", - "@types/node": "^24.0.0", - "@vitest/coverage-v8": "^4.0.0", - "esbuild": "^0.27.0", - "fetch-mock": "^12.0.0", - "prettier": "3.6.2", - "semantic-release-plugin-update-version-in-files": "^2.0.0", - "tinyglobby": "^0.2.15", - "typescript": "^5.0.0", - "undici": "^7.0.0", - "vitest": "^4.0.0" - }, - "engines": { - "node": ">= 20" - }, - "files": [ - "dist-*/**", - "bin/**" - ], - "types": "dist-types/index.d.ts", - "exports": { - ".": { - "types": "./dist-types/index.d.ts", - "import": "./dist-bundle/index.js", - "default": "./dist-bundle/index.js" - } - }, - "sideEffects": false -} diff --git a/sdks/nodejs/node_modules/@octokit/rest/LICENSE b/sdks/nodejs/node_modules/@octokit/rest/LICENSE deleted file mode 100644 index 4c0d268..0000000 --- a/sdks/nodejs/node_modules/@octokit/rest/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License - -Copyright (c) 2012 Cloud9 IDE, Inc. (Mike de Boer) -Copyright (c) 2017-2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@octokit/rest/README.md b/sdks/nodejs/node_modules/@octokit/rest/README.md deleted file mode 100644 index 9448005..0000000 --- a/sdks/nodejs/node_modules/@octokit/rest/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# rest.js - -> GitHub REST API client for JavaScript - -[![@latest](https://img.shields.io/npm/v/@octokit/rest.svg)](https://www.npmjs.com/package/@octokit/rest) -[![Build Status](https://github.com/octokit/rest.js/workflows/Test/badge.svg)](https://github.com/octokit/rest.js/actions?query=workflow%3ATest+branch%3Amain) - -## Usage - - - - - - -
-Browsers - -Load @octokit/rest directly from esm.sh - -```html - -``` - -
-Node - - -Install with npm install @octokit/rest - -```js -import { Octokit } from "@octokit/rest"; -``` - -
- -> [!IMPORTANT] -> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json` by setting `"moduleResolution": "node16", "module": "node16"`. -> -> See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports).
-> See this [helpful guide on transitioning to ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) from [@sindresorhus](https://github.com/sindresorhus) - -```js -const octokit = new Octokit(); - -// Compare: https://docs.github.com/en/rest/reference/repos/#list-organization-repositories -octokit.rest.repos - .listForOrg({ - org: "octokit", - type: "public", - }) - .then(({ data }) => { - // handle data - }); -``` - -See https://octokit.github.io/rest.js for full documentation. - -> [!IMPORTANT] -> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json` by setting `"moduleResolution": "node16", "module": "node16"`. -> -> See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports).
-> See this [helpful guide on transitioning to ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) from [@sindresorhus](https://github.com/sindresorhus) - -## Contributing - -We would love you to contribute to `@octokit/rest`, pull requests are very welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for more information. - -## Credits - -`@octokit/rest` was originally created as [`node-github`](https://www.npmjs.com/package/github) in 2012 by Mike de Boer from Cloud9 IDE, Inc. [The original commit](https://github.blog/2020-04-09-from-48k-lines-of-code-to-10-the-story-of-githubs-javascript-sdk/) is from 2010 which predates the npm registry. - -It was adopted and renamed by GitHub in 2017. Learn more about its origin on GitHub's blog: [From 48k lines of code to 10—the story of GitHub’s JavaScript SDK](https://github.blog/2020-04-09-from-48k-lines-of-code-to-10-the-story-of-githubs-javascript-sdk/) - -## LICENSE - -[MIT](LICENSE) diff --git a/sdks/nodejs/node_modules/@octokit/rest/dist-src/index.js b/sdks/nodejs/node_modules/@octokit/rest/dist-src/index.js deleted file mode 100644 index 85e37c3..0000000 --- a/sdks/nodejs/node_modules/@octokit/rest/dist-src/index.js +++ /dev/null @@ -1,15 +0,0 @@ -import { Octokit as Core } from "@octokit/core"; -import { requestLog } from "@octokit/plugin-request-log"; -import { - paginateRest -} from "@octokit/plugin-paginate-rest"; -import { legacyRestEndpointMethods } from "@octokit/plugin-rest-endpoint-methods"; -import { VERSION } from "./version.js"; -const Octokit = Core.plugin(requestLog, legacyRestEndpointMethods, paginateRest).defaults( - { - userAgent: `octokit-rest.js/${VERSION}` - } -); -export { - Octokit -}; diff --git a/sdks/nodejs/node_modules/@octokit/rest/dist-src/index.js.map b/sdks/nodejs/node_modules/@octokit/rest/dist-src/index.js.map deleted file mode 100644 index 5d95b00..0000000 --- a/sdks/nodejs/node_modules/@octokit/rest/dist-src/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../src/index.ts"], - "sourcesContent": ["import { Octokit as Core } from \"@octokit/core\";\nimport { requestLog } from \"@octokit/plugin-request-log\";\nimport {\n paginateRest,\n type PaginateInterface,\n} from \"@octokit/plugin-paginate-rest\";\nimport { legacyRestEndpointMethods } from \"@octokit/plugin-rest-endpoint-methods\";\nexport type { RestEndpointMethodTypes } from \"@octokit/plugin-rest-endpoint-methods\";\n\nimport { VERSION } from \"./version.js\";\n\ntype Constructor = new (...args: any[]) => T;\n\nexport const Octokit: typeof Core &\n Constructor<\n ReturnType & {\n paginate: PaginateInterface;\n }\n > = Core.plugin(requestLog, legacyRestEndpointMethods, paginateRest).defaults(\n {\n userAgent: `octokit-rest.js/${VERSION}`,\n },\n);\n\nexport type Octokit = InstanceType;\n"], - "mappings": "AAAA,SAAS,WAAW,YAAY;AAChC,SAAS,kBAAkB;AAC3B;AAAA,EACE;AAAA,OAEK;AACP,SAAS,iCAAiC;AAG1C,SAAS,eAAe;AAIjB,MAAM,UAKP,KAAK,OAAO,YAAY,2BAA2B,YAAY,EAAE;AAAA,EACrE;AAAA,IACE,WAAW,mBAAmB,OAAO;AAAA,EACvC;AACF;", - "names": [] -} diff --git a/sdks/nodejs/node_modules/@octokit/rest/dist-src/version.js b/sdks/nodejs/node_modules/@octokit/rest/dist-src/version.js deleted file mode 100644 index 88ee5d8..0000000 --- a/sdks/nodejs/node_modules/@octokit/rest/dist-src/version.js +++ /dev/null @@ -1,4 +0,0 @@ -const VERSION = "22.0.1"; -export { - VERSION -}; diff --git a/sdks/nodejs/node_modules/@octokit/rest/dist-src/version.js.map b/sdks/nodejs/node_modules/@octokit/rest/dist-src/version.js.map deleted file mode 100644 index 13ae61f..0000000 --- a/sdks/nodejs/node_modules/@octokit/rest/dist-src/version.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../src/version.ts"], - "sourcesContent": ["export const VERSION = \"22.0.1\";\n"], - "mappings": "AAAO,MAAM,UAAU;", - "names": [] -} diff --git a/sdks/nodejs/node_modules/@octokit/rest/dist-types/index.d.ts b/sdks/nodejs/node_modules/@octokit/rest/dist-types/index.d.ts deleted file mode 100644 index f1f4ceb..0000000 --- a/sdks/nodejs/node_modules/@octokit/rest/dist-types/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Octokit as Core } from "@octokit/core"; -import { type PaginateInterface } from "@octokit/plugin-paginate-rest"; -import { legacyRestEndpointMethods } from "@octokit/plugin-rest-endpoint-methods"; -export type { RestEndpointMethodTypes } from "@octokit/plugin-rest-endpoint-methods"; -type Constructor = new (...args: any[]) => T; -export declare const Octokit: typeof Core & Constructor & { - paginate: PaginateInterface; -}>; -export type Octokit = InstanceType; diff --git a/sdks/nodejs/node_modules/@octokit/rest/dist-types/version.d.ts b/sdks/nodejs/node_modules/@octokit/rest/dist-types/version.d.ts deleted file mode 100644 index 807e762..0000000 --- a/sdks/nodejs/node_modules/@octokit/rest/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "22.0.1"; diff --git a/sdks/nodejs/node_modules/@octokit/rest/package.json b/sdks/nodejs/node_modules/@octokit/rest/package.json deleted file mode 100644 index 0a09a41..0000000 --- a/sdks/nodejs/node_modules/@octokit/rest/package.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "name": "@octokit/rest", - "version": "22.0.1", - "publishConfig": { - "access": "public", - "provenance": true - }, - "type": "module", - "description": "GitHub REST API client for Node.js", - "keywords": [ - "octokit", - "github", - "rest", - "api-client" - ], - "author": "Gregor Martynus (https://github.com/gr2m)", - "contributors": [ - { - "name": "Mike de Boer", - "email": "info@mikedeboer.nl" - }, - { - "name": "Fabian Jakobs", - "email": "fabian@c9.io" - }, - { - "name": "Joe Gallo", - "email": "joe@brassafrax.com" - }, - { - "name": "Gregor Martynus", - "url": "https://github.com/gr2m" - } - ], - "repository": "github:octokit/rest.js", - "dependencies": { - "@octokit/core": "^7.0.6", - "@octokit/plugin-paginate-rest": "^14.0.0", - "@octokit/plugin-request-log": "^6.0.0", - "@octokit/plugin-rest-endpoint-methods": "^17.0.0" - }, - "devDependencies": { - "@octokit/auth-action": "^6.0.2", - "@octokit/auth-app": "^8.1.2", - "@octokit/fixtures-server": "^8.1.0", - "@octokit/request": "^10.0.6", - "@octokit/tsconfig": "^4.0.0", - "@types/node": "^24.0.0", - "@vitest/coverage-v8": "^4.0.0", - "esbuild": "^0.25.0", - "fetch-mock": "^12.0.0", - "glob": "^11.0.0", - "nock": "^14.0.0-beta.8", - "prettier": "^3.2.4", - "semantic-release-plugin-update-version-in-files": "^2.0.0", - "typescript": "^5.3.3", - "undici": "^7.0.0", - "vitest": "^4.0.0" - }, - "license": "MIT", - "engines": { - "node": ">= 20" - }, - "files": [ - "dist-*/**" - ], - "types": "dist-types/index.d.ts", - "exports": { - ".": { - "types": "./dist-types/index.d.ts", - "import": "./dist-src/index.js", - "default": "./dist-src/index.js" - } - }, - "sideEffects": false -} diff --git a/sdks/nodejs/node_modules/@octokit/types/LICENSE b/sdks/nodejs/node_modules/@octokit/types/LICENSE deleted file mode 100644 index 57bee5f..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/@octokit/types/README.md b/sdks/nodejs/node_modules/@octokit/types/README.md deleted file mode 100644 index 7ebe154..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# types.ts - -> Shared TypeScript definitions for Octokit projects - -[![@latest](https://img.shields.io/npm/v/@octokit/types.svg)](https://www.npmjs.com/package/@octokit/types) -[![Build Status](https://github.com/octokit/types.ts/workflows/Test/badge.svg)](https://github.com/octokit/types.ts/actions?workflow=Test) - - - -- [Usage](#usage) -- [Examples](#examples) - - [Get parameter and response data types for a REST API endpoint](#get-parameter-and-response-data-types-for-a-rest-api-endpoint) - - [Get response types from endpoint methods](#get-response-types-from-endpoint-methods) -- [Contributing](#contributing) -- [License](#license) - - - -## Usage - -See all exported types at https://octokit.github.io/types.ts - -## Examples - -### Get parameter and response data types for a REST API endpoint - -```ts -import { Endpoints } from "@octokit/types"; - -type listUserReposParameters = - Endpoints["GET /repos/{owner}/{repo}"]["parameters"]; -type listUserReposResponse = Endpoints["GET /repos/{owner}/{repo}"]["response"]; - -async function listRepos( - options: listUserReposParameters, -): listUserReposResponse["data"] { - // ... -} -``` - -### Get response types from endpoint methods - -```ts -import { - GetResponseTypeFromEndpointMethod, - GetResponseDataTypeFromEndpointMethod, -} from "@octokit/types"; -import { Octokit } from "@octokit/rest"; - -const octokit = new Octokit(); -type CreateLabelResponseType = GetResponseTypeFromEndpointMethod< - typeof octokit.issues.createLabel ->; -type CreateLabelResponseDataType = GetResponseDataTypeFromEndpointMethod< - typeof octokit.issues.createLabel ->; -``` - -## Contributing - -See [CONTRIBUTING.md](CONTRIBUTING.md) - -## License - -[MIT](LICENSE) diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/AuthInterface.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/AuthInterface.d.ts deleted file mode 100644 index 9858dc4..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/AuthInterface.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { EndpointOptions } from "./EndpointOptions.js"; -import type { OctokitResponse } from "./OctokitResponse.js"; -import type { RequestInterface } from "./RequestInterface.js"; -import type { RequestParameters } from "./RequestParameters.js"; -import type { Route } from "./Route.js"; -/** - * Interface to implement complex authentication strategies for Octokit. - * An object Implementing the AuthInterface can directly be passed as the - * `auth` option in the Octokit constructor. - * - * For the official implementations of the most common authentication - * strategies, see https://github.com/octokit/auth.js - */ -export interface AuthInterface { - (...args: AuthOptions): Promise; - hook: { - /** - * Sends a request using the passed `request` instance - * - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (request: RequestInterface, options: EndpointOptions): Promise>; - /** - * Sends a request using the passed `request` instance - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (request: RequestInterface, route: Route, parameters?: RequestParameters): Promise>; - }; -} diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts deleted file mode 100644 index f8e5fc2..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { RequestHeaders } from "./RequestHeaders.js"; -import type { RequestMethod } from "./RequestMethod.js"; -import type { RequestParameters } from "./RequestParameters.js"; -import type { Url } from "./Url.js"; -/** - * The `.endpoint()` method is guaranteed to set all keys defined by RequestParameters - * as well as the method property. - */ -export interface EndpointDefaults extends RequestParameters { - baseUrl: Url; - method: RequestMethod; - url?: Url; - headers: RequestHeaders & { - accept: string; - "user-agent": string; - }; - mediaType: { - format: string; - previews?: string[]; - }; -} diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts deleted file mode 100644 index 1ef795e..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts +++ /dev/null @@ -1,65 +0,0 @@ -import type { EndpointDefaults } from "./EndpointDefaults.js"; -import type { RequestOptions } from "./RequestOptions.js"; -import type { RequestParameters } from "./RequestParameters.js"; -import type { Route } from "./Route.js"; -import type { EndpointKeys, Endpoints } from "./generated/Endpoints.js"; -export interface EndpointInterface { - /** - * Transforms a GitHub REST API endpoint into generic request options - * - * @param {object} endpoint Must set `url` unless it's set defaults. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (options: O & { - method?: string; - } & ("url" extends keyof D ? { - url?: string; - } : { - url: string; - })): RequestOptions & Pick; - /** - * Transforms a GitHub REST API endpoint into generic request options - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (route: EndpointKeys | R, parameters?: P): (R extends EndpointKeys ? Endpoints[R]["request"] : RequestOptions) & Pick; - /** - * Object with current default route and parameters - */ - DEFAULTS: D & EndpointDefaults; - /** - * Returns a new `endpoint` interface with new defaults - */ - defaults: (newDefaults: O) => EndpointInterface; - merge: { - /** - * Merges current endpoint defaults with passed route and parameters, - * without transforming them into request options. - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - * - */ - (route: EndpointKeys | R, parameters?: P): D & (R extends EndpointKeys ? Endpoints[R]["request"] & Endpoints[R]["parameters"] : EndpointDefaults) & P; - /** - * Merges current endpoint defaults with passed route and parameters, - * without transforming them into request options. - * - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ -

(options: P): EndpointDefaults & D & P; - /** - * Returns current default options. - * - * @deprecated use endpoint.DEFAULTS instead - */ - (): D & EndpointDefaults; - }; - /** - * Stateless method to turn endpoint options into request options. - * Calling `endpoint(options)` is the same as calling `endpoint.parse(endpoint.merge(options))`. - * - * @param {object} options `method`, `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - parse: (options: O) => RequestOptions & Pick; -} diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts deleted file mode 100644 index f25b486..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { RequestMethod } from "./RequestMethod.js"; -import type { Url } from "./Url.js"; -import type { RequestParameters } from "./RequestParameters.js"; -export interface EndpointOptions extends RequestParameters { - method: RequestMethod; - url: Url; -} diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/Fetch.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/Fetch.d.ts deleted file mode 100644 index 983c79b..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/Fetch.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Browser's fetch method (or compatible such as fetch-mock) - */ -export type Fetch = any; diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts deleted file mode 100644 index 2daaf34..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -type Unwrap = T extends Promise ? U : T; -type AnyFunction = (...args: any[]) => any; -export type GetResponseTypeFromEndpointMethod = Unwrap>; -export type GetResponseDataTypeFromEndpointMethod = Unwrap>["data"]; -export {}; diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts deleted file mode 100644 index 47a1797..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { ResponseHeaders } from "./ResponseHeaders.js"; -import type { Url } from "./Url.js"; -export interface OctokitResponse { - headers: ResponseHeaders; - /** - * http response code - */ - status: S; - /** - * URL of response after all redirects - */ - url: Url; - /** - * Response data as documented in the REST API reference documentation at https://docs.github.com/rest/reference - */ - data: T; -} diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestError.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestError.d.ts deleted file mode 100644 index 7b93704..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestError.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -export interface RequestError { - name: string; - status: number; - documentation_url: string; - errors?: Array<{ - resource: string; - code: string; - field: string; - message?: string; - }>; -} diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts deleted file mode 100644 index df15322..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -export interface RequestHeaders { - /** - * Avoid setting `headers.accept`, use `mediaType.{format|previews}` option instead. - */ - accept?: string; - /** - * Use `authorization` to send authenticated request, remember `token ` / `bearer ` prefixes. Example: `token 1234567890abcdef1234567890abcdef12345678` - */ - authorization?: string; - /** - * `user-agent` is set do a default and can be overwritten as needed. - */ - "user-agent"?: string; - [header: string]: string | number | undefined; -} diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestInterface.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestInterface.d.ts deleted file mode 100644 index 6db41f2..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestInterface.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type { EndpointInterface } from "./EndpointInterface.js"; -import type { OctokitResponse } from "./OctokitResponse.js"; -import type { RequestParameters } from "./RequestParameters.js"; -import type { Route } from "./Route.js"; -import type { EndpointKeys, Endpoints } from "./generated/Endpoints.js"; -export interface RequestInterface { - /** - * Sends a request based on endpoint options - * - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (options: O & { - method?: string; - } & ("url" extends keyof D ? { - url?: string; - } : { - url: string; - })): Promise>; - /** - * Sends a request based on endpoint options - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (route: EndpointKeys | R, options?: R extends EndpointKeys ? Endpoints[R]["parameters"] & RequestParameters : RequestParameters): R extends EndpointKeys ? Promise : Promise>; - /** - * Returns a new `request` with updated route and parameters - */ - defaults: (newDefaults: O) => RequestInterface; - /** - * Octokit endpoint API, see {@link https://github.com/octokit/endpoint.js|@octokit/endpoint} - */ - endpoint: EndpointInterface; -} diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestMethod.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestMethod.d.ts deleted file mode 100644 index 4cdfe61..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestMethod.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * HTTP Verb supported by GitHub's REST API - */ -export type RequestMethod = "DELETE" | "GET" | "HEAD" | "PATCH" | "POST" | "PUT"; diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestOptions.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestOptions.d.ts deleted file mode 100644 index 268238a..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestOptions.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { RequestHeaders } from "./RequestHeaders.js"; -import type { RequestMethod } from "./RequestMethod.js"; -import type { RequestRequestOptions } from "./RequestRequestOptions.js"; -import type { Url } from "./Url.js"; -/** - * Generic request options as they are returned by the `endpoint()` method - */ -export interface RequestOptions { - method: RequestMethod; - url: Url; - headers: RequestHeaders; - body?: any; - request?: RequestRequestOptions; -} diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestParameters.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestParameters.d.ts deleted file mode 100644 index 57831de..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestParameters.d.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { RequestRequestOptions } from "./RequestRequestOptions.js"; -import type { RequestHeaders } from "./RequestHeaders.js"; -import type { Url } from "./Url.js"; -/** - * Parameters that can be passed into `request(route, parameters)` or `endpoint(route, parameters)` methods - */ -export interface RequestParameters { - /** - * Base URL to be used when a relative URL is passed, such as `/orgs/{org}`. - * If `baseUrl` is `https://enterprise.acme-inc.com/api/v3`, then the request - * will be sent to `https://enterprise.acme-inc.com/api/v3/orgs/{org}`. - */ - baseUrl?: Url; - /** - * HTTP headers. Use lowercase keys. - */ - headers?: RequestHeaders; - /** - * Media type options, see {@link https://developer.github.com/v3/media/|GitHub Developer Guide} - */ - mediaType?: { - /** - * `json` by default. Can be `raw`, `text`, `html`, `full`, `diff`, `patch`, `sha`, `base64`. Depending on endpoint - */ - format?: string; - /** - * Custom media type names of {@link https://docs.github.com/en/graphql/overview/schema-previews|GraphQL API Previews} without the `-preview` suffix. - * Example for single preview: `['squirrel-girl']`. - * Example for multiple previews: `['squirrel-girl', 'mister-fantastic']`. - */ - previews?: string[]; - }; - /** - * The name of the operation to execute. - * Required only if multiple operations are present in the query document. - */ - operationName?: string; - /** - * The GraphQL query string to be sent in the request. - * This is required and must contain a valid GraphQL document. - */ - query?: string; - /** - * Pass custom meta information for the request. The `request` object will be returned as is. - */ - request?: RequestRequestOptions; - /** - * Any additional parameter will be passed as follows - * 1. URL parameter if `':parameter'` or `{parameter}` is part of `url` - * 2. Query parameter if `method` is `'GET'` or `'HEAD'` - * 3. Request body if `parameter` is `'data'` - * 4. JSON in the request body in the form of `body[parameter]` unless `parameter` key is `'data'` - */ - [parameter: string]: unknown; -} diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts deleted file mode 100644 index fdcd0ab..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { Fetch } from "./Fetch.js"; -/** - * Octokit-specific request options which are ignored for the actual request, but can be used by Octokit or plugins to manipulate how the request is sent or how a response is handled - */ -export interface RequestRequestOptions { - /** - * Custom replacement for built-in fetch method. Useful for testing or request hooks. - */ - fetch?: Fetch; - /** - * Use an `AbortController` instance to cancel a request. In node you can only cancel streamed requests. - */ - signal?: AbortSignal; - /** - * If set to `false`, the response body will not be parsed and will be returned as a stream. - */ - parseSuccessResponseBody?: boolean; - redirect?: "follow" | "error" | "manual"; - [option: string]: any; -} diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts deleted file mode 100644 index 5d5c994..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -export interface ResponseHeaders { - "cache-control"?: string; - "content-length"?: number; - "content-type"?: string; - date?: string; - etag?: string; - "last-modified"?: string; - link?: string; - location?: string; - server?: string; - status?: string; - vary?: string; - "x-accepted-github-permissions"?: string; - "x-github-mediatype"?: string; - "x-github-request-id"?: string; - "x-oauth-scopes"?: string; - "x-ratelimit-limit"?: string; - "x-ratelimit-remaining"?: string; - "x-ratelimit-reset"?: string; - [header: string]: string | number | undefined; -} diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/Route.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/Route.d.ts deleted file mode 100644 index 808991e..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/Route.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * String consisting of an optional HTTP method and relative path or absolute URL. Examples: `'/orgs/{org}'`, `'PUT /orgs/{org}'`, `GET https://example.com/foo/bar` - */ -export type Route = string; diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts deleted file mode 100644 index 158e866..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { AuthInterface } from "./AuthInterface.js"; -export interface StrategyInterface { - (...args: StrategyOptions): AuthInterface; -} diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/Url.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/Url.d.ts deleted file mode 100644 index 521f5ad..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/Url.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Relative or absolute URL. Examples: `'/orgs/{org}'`, `https://example.com/foo/bar` - */ -export type Url = string; diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/VERSION.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/VERSION.d.ts deleted file mode 100644 index 1bf60fc..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/VERSION.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "16.0.0"; diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts deleted file mode 100644 index 898be80..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts +++ /dev/null @@ -1,4543 +0,0 @@ -import type { paths } from "@octokit/openapi-types"; -import type { OctokitResponse } from "../OctokitResponse.js"; -import type { RequestHeaders } from "../RequestHeaders.js"; -import type { RequestRequestOptions } from "../RequestRequestOptions.js"; -/** - * @license (MIT OR CC0-1.0) - * @source https://github.com/sindresorhus/type-fest/blob/570e27f8fdaee37ef5d5e0fbf241e0212ff8fc1a/source/simplify.d.ts - */ -export type Simplify = { - [KeyType in keyof T]: T[KeyType]; -} & {}; -type ExtractParameters = "parameters" extends keyof T ? (T["parameters"] extends { - query?: infer Q; -} ? Q : {}) & (T["parameters"] extends { - path?: infer P; -} ? P : {}) & (T["parameters"] extends { - header?: infer H; -} ? H : {}) : {}; -type ExtractRequestBody = "requestBody" extends keyof T ? "content" extends keyof T["requestBody"] ? "application/json" extends keyof T["requestBody"]["content"] ? T["requestBody"]["content"]["application/json"] : { - data: { - [K in keyof T["requestBody"]["content"]]: T["requestBody"]["content"][K]; - }[keyof T["requestBody"]["content"]]; -} : "application/json" extends keyof T["requestBody"] ? T["requestBody"]["application/json"] : { - data: { - [K in keyof T["requestBody"]]: T["requestBody"][K]; - }[keyof T["requestBody"]]; -} : {}; -type ToOctokitParameters = ExtractParameters & ExtractRequestBody>; -interface OctokitReadonlyRequestType { - request: { - method: Method extends string ? Uppercase : never; - url: Url; - headers: RequestHeaders; - request: RequestRequestOptions; - }; -} -interface OctokitWriteableRequestType { - request: { - method: Method extends string ? Uppercase : never; - url: Url; - headers: RequestHeaders; - request: RequestRequestOptions; - data: ExtractRequestBody; - }; -} -interface OctokitParametersType { - parameters: Simplify>; -} -interface OctokitResponseType { - response: ExtractOctokitResponse; -} -interface ReadonlyOperation extends OctokitParametersType, OctokitResponseType, OctokitReadonlyRequestType { -} -interface Operation extends OctokitParametersType, OctokitResponseType, OctokitWriteableRequestType { -} -type SuccessStatuses = 200 | 201 | 202 | 204 | 205; -type RedirectStatuses = 301 | 302; -type EmptyResponseStatuses = 201 | 204 | 205; -type KnownResponseTypes = "application/json" | "application/octocat-stream" | "application/scim+json" | "text/html" | "text/plain"; -type SuccessResponseDataType = { - [K in SuccessStatuses & keyof Responses]: GetContentKeyIfPresent extends never ? never : OctokitResponse, K>; -}[SuccessStatuses & keyof Responses]; -type RedirectResponseDataType = { - [K in RedirectStatuses & keyof Responses]: OctokitResponse; -}[RedirectStatuses & keyof Responses]; -type EmptyResponseDataType = { - [K in EmptyResponseStatuses & keyof Responses]: OctokitResponse; -}[EmptyResponseStatuses & keyof Responses]; -type GetContentKeyIfPresent = "content" extends keyof T ? DataType : DataType; -type DataType = { - [K in KnownResponseTypes & keyof T]: T[K]; -}[KnownResponseTypes & keyof T]; -type ExtractOctokitResponse = "responses" extends keyof R ? SuccessResponseDataType extends never ? RedirectResponseDataType extends never ? EmptyResponseDataType : RedirectResponseDataType : SuccessResponseDataType : unknown; -export interface Endpoints { - /** - * @see https://docs.github.com/rest/apps/apps#delete-an-installation-for-the-authenticated-app - */ - "DELETE /app/installations/{installation_id}": Operation<"/app/installations/{installation_id}", "delete">; - /** - * @see https://docs.github.com/rest/apps/apps#unsuspend-an-app-installation - */ - "DELETE /app/installations/{installation_id}/suspended": Operation<"/app/installations/{installation_id}/suspended", "delete">; - /** - * @see https://docs.github.com/rest/apps/oauth-applications#delete-an-app-authorization - */ - "DELETE /applications/{client_id}/grant": Operation<"/applications/{client_id}/grant", "delete">; - /** - * @see https://docs.github.com/rest/apps/oauth-applications#delete-an-app-token - */ - "DELETE /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "delete">; - /** - * @see https://docs.github.com/rest/code-security/configurations#delete-a-code-security-configuration-for-an-enterprise - */ - "DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}": Operation<"/enterprises/{enterprise}/code-security/configurations/{configuration_id}", "delete">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-members#remove-team-membership - */ - "DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}": Operation<"/enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}", "delete">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#delete-an-organization-assignment - */ - "DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}": Operation<"/enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}", "delete">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-teams#delete-an-enterprise-team - */ - "DELETE /enterprises/{enterprise}/teams/{team_slug}": Operation<"/enterprises/{enterprise}/teams/{team_slug}", "delete">; - /** - * @see https://docs.github.com/rest/gists/gists#delete-a-gist - */ - "DELETE /gists/{gist_id}": Operation<"/gists/{gist_id}", "delete">; - /** - * @see https://docs.github.com/rest/gists/comments#delete-a-gist-comment - */ - "DELETE /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "delete">; - /** - * @see https://docs.github.com/rest/gists/gists#unstar-a-gist - */ - "DELETE /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "delete">; - /** - * @see https://docs.github.com/rest/apps/installations#revoke-an-installation-access-token - */ - "DELETE /installation/token": Operation<"/installation/token", "delete">; - /** - * @see https://docs.github.com/rest/activity/notifications#mark-a-thread-as-done - */ - "DELETE /notifications/threads/{thread_id}": Operation<"/notifications/threads/{thread_id}", "delete">; - /** - * @see https://docs.github.com/rest/activity/notifications#delete-a-thread-subscription - */ - "DELETE /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "delete">; - /** - * @see https://docs.github.com/rest/orgs/orgs#delete-an-organization - */ - "DELETE /orgs/{org}": Operation<"/orgs/{org}", "delete">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#delete-a-custom-image-from-the-organization - */ - "DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}": Operation<"/orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#delete-an-image-version-of-custom-image-from-the-organization - */ - "DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}": Operation<"/orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}", "delete">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#delete-a-github-hosted-runner-for-an-organization - */ - "DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}": Operation<"/orgs/{org}/actions/hosted-runners/{hosted_runner_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/permissions#disable-a-selected-repository-for-github-actions-in-an-organization - */ - "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}": Operation<"/orgs/{org}/actions/permissions/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/permissions#remove-a-repository-from-the-list-of-repositories-allowed-to-use-self-hosted-runners-in-an-organization - */ - "DELETE /orgs/{org}/actions/permissions/self-hosted-runners/repositories/{repository_id}": Operation<"/orgs/{org}/actions/permissions/self-hosted-runners/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#delete-a-self-hosted-runner-group-from-an-organization - */ - "DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#remove-repository-access-to-a-self-hosted-runner-group-in-an-organization - */ - "DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#remove-a-self-hosted-runner-from-a-group-for-an-organization - */ - "DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#delete-a-self-hosted-runner-from-an-organization - */ - "DELETE /orgs/{org}/actions/runners/{runner_id}": Operation<"/orgs/{org}/actions/runners/{runner_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#remove-all-custom-labels-from-a-self-hosted-runner-for-an-organization - */ - "DELETE /orgs/{org}/actions/runners/{runner_id}/labels": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels", "delete">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#remove-a-custom-label-from-a-self-hosted-runner-for-an-organization - */ - "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels/{name}", "delete">; - /** - * @see https://docs.github.com/rest/actions/secrets#delete-an-organization-secret - */ - "DELETE /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "delete">; - /** - * @see https://docs.github.com/rest/actions/secrets#remove-selected-repository-from-an-organization-secret - */ - "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/variables#delete-an-organization-variable - */ - "DELETE /orgs/{org}/actions/variables/{name}": Operation<"/orgs/{org}/actions/variables/{name}", "delete">; - /** - * @see https://docs.github.com/rest/actions/variables#remove-selected-repository-from-an-organization-variable - */ - "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/variables/{name}/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/attestations#delete-attestations-by-subject-digest - */ - "DELETE /orgs/{org}/attestations/digest/{subject_digest}": Operation<"/orgs/{org}/attestations/digest/{subject_digest}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/attestations#delete-attestations-by-id - */ - "DELETE /orgs/{org}/attestations/{attestation_id}": Operation<"/orgs/{org}/attestations/{attestation_id}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/blocking#unblock-a-user-from-an-organization - */ - "DELETE /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "delete">; - /** - * @see https://docs.github.com/rest/campaigns/campaigns#delete-a-campaign-for-an-organization - */ - "DELETE /orgs/{org}/campaigns/{campaign_number}": Operation<"/orgs/{org}/campaigns/{campaign_number}", "delete">; - /** - * @see https://docs.github.com/rest/code-security/configurations#detach-configurations-from-repositories - */ - "DELETE /orgs/{org}/code-security/configurations/detach": Operation<"/orgs/{org}/code-security/configurations/detach", "delete">; - /** - * @see https://docs.github.com/rest/code-security/configurations#delete-a-code-security-configuration - */ - "DELETE /orgs/{org}/code-security/configurations/{configuration_id}": Operation<"/orgs/{org}/code-security/configurations/{configuration_id}", "delete">; - /** - * @see https://docs.github.com/rest/codespaces/organizations#remove-users-from-codespaces-access-for-an-organization - */ - "DELETE /orgs/{org}/codespaces/access/selected_users": Operation<"/orgs/{org}/codespaces/access/selected_users", "delete">; - /** - * @see https://docs.github.com/rest/codespaces/organization-secrets#delete-an-organization-secret - */ - "DELETE /orgs/{org}/codespaces/secrets/{secret_name}": Operation<"/orgs/{org}/codespaces/secrets/{secret_name}", "delete">; - /** - * @see https://docs.github.com/rest/codespaces/organization-secrets#remove-selected-repository-from-an-organization-secret - */ - "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/copilot/copilot-user-management#remove-teams-from-the-copilot-subscription-for-an-organization - */ - "DELETE /orgs/{org}/copilot/billing/selected_teams": Operation<"/orgs/{org}/copilot/billing/selected_teams", "delete">; - /** - * @see https://docs.github.com/rest/copilot/copilot-user-management#remove-users-from-the-copilot-subscription-for-an-organization - */ - "DELETE /orgs/{org}/copilot/billing/selected_users": Operation<"/orgs/{org}/copilot/billing/selected_users", "delete">; - /** - * @see https://docs.github.com/rest/dependabot/secrets#delete-an-organization-secret - */ - "DELETE /orgs/{org}/dependabot/secrets/{secret_name}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}", "delete">; - /** - * @see https://docs.github.com/rest/dependabot/secrets#remove-selected-repository-from-an-organization-secret - */ - "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/webhooks#delete-an-organization-webhook - */ - "DELETE /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "delete">; - /** - * @see https://docs.github.com/rest/interactions/orgs#remove-interaction-restrictions-for-an-organization - */ - "DELETE /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "delete">; - /** - * @see https://docs.github.com/rest/orgs/members#cancel-an-organization-invitation - */ - "DELETE /orgs/{org}/invitations/{invitation_id}": Operation<"/orgs/{org}/invitations/{invitation_id}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/issue-types#delete-issue-type-for-an-organization - */ - "DELETE /orgs/{org}/issue-types/{issue_type_id}": Operation<"/orgs/{org}/issue-types/{issue_type_id}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/members#remove-an-organization-member - */ - "DELETE /orgs/{org}/members/{username}": Operation<"/orgs/{org}/members/{username}", "delete">; - /** - * @see https://docs.github.com/rest/codespaces/organizations#delete-a-codespace-from-the-organization - */ - "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}": Operation<"/orgs/{org}/members/{username}/codespaces/{codespace_name}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/members#remove-organization-membership-for-a-user - */ - "DELETE /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "delete">; - /** - * @see https://docs.github.com/rest/migrations/orgs#delete-an-organization-migration-archive - */ - "DELETE /orgs/{org}/migrations/{migration_id}/archive": Operation<"/orgs/{org}/migrations/{migration_id}/archive", "delete">; - /** - * @see https://docs.github.com/rest/migrations/orgs#unlock-an-organization-repository - */ - "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock": Operation<"/orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock", "delete">; - /** - * @see https://docs.github.com/rest/orgs/organization-roles#remove-all-organization-roles-for-a-team - */ - "DELETE /orgs/{org}/organization-roles/teams/{team_slug}": Operation<"/orgs/{org}/organization-roles/teams/{team_slug}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/organization-roles#remove-an-organization-role-from-a-team - */ - "DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}": Operation<"/orgs/{org}/organization-roles/teams/{team_slug}/{role_id}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/organization-roles#remove-all-organization-roles-for-a-user - */ - "DELETE /orgs/{org}/organization-roles/users/{username}": Operation<"/orgs/{org}/organization-roles/users/{username}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/organization-roles#remove-an-organization-role-from-a-user - */ - "DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}": Operation<"/orgs/{org}/organization-roles/users/{username}/{role_id}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/outside-collaborators#remove-outside-collaborator-from-an-organization - */ - "DELETE /orgs/{org}/outside_collaborators/{username}": Operation<"/orgs/{org}/outside_collaborators/{username}", "delete">; - /** - * @see https://docs.github.com/rest/packages/packages#delete-a-package-for-an-organization - */ - "DELETE /orgs/{org}/packages/{package_type}/{package_name}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}", "delete">; - /** - * @see https://docs.github.com/rest/packages/packages#delete-package-version-for-an-organization - */ - "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}", "delete">; - /** - * @see https://docs.github.com/rest/private-registries/organization-configurations#delete-a-private-registry-for-an-organization - */ - "DELETE /orgs/{org}/private-registries/{secret_name}": Operation<"/orgs/{org}/private-registries/{secret_name}", "delete">; - /** - * @see https://docs.github.com/rest/projects/items#delete-project-item-for-organization - */ - "DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}": Operation<"/orgs/{org}/projectsV2/{project_number}/items/{item_id}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/custom-properties#remove-a-custom-property-for-an-organization - */ - "DELETE /orgs/{org}/properties/schema/{custom_property_name}": Operation<"/orgs/{org}/properties/schema/{custom_property_name}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/members#remove-public-organization-membership-for-the-authenticated-user - */ - "DELETE /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/rules#delete-an-organization-repository-ruleset - */ - "DELETE /orgs/{org}/rulesets/{ruleset_id}": Operation<"/orgs/{org}/rulesets/{ruleset_id}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team - */ - "DELETE /orgs/{org}/security-managers/teams/{team_slug}": Operation<"/orgs/{org}/security-managers/teams/{team_slug}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/orgs#disable-a-selected-repository-for-immutable-releases-in-an-organization - */ - "DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}": Operation<"/orgs/{org}/settings/immutable-releases/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/orgs/network-configurations#delete-a-hosted-compute-network-configuration-from-an-organization - */ - "DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}": Operation<"/orgs/{org}/settings/network-configurations/{network_configuration_id}", "delete">; - /** - * @see https://docs.github.com/rest/teams/teams#delete-a-team - */ - "DELETE /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "delete">; - /** - * @see https://docs.github.com/rest/teams/discussions#delete-a-discussion - */ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "delete">; - /** - * @see https://docs.github.com/rest/teams/discussion-comments#delete-a-discussion-comment - */ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "delete">; - /** - * @see https://docs.github.com/rest/reactions/reactions#delete-team-discussion-comment-reaction - */ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}", "delete">; - /** - * @see https://docs.github.com/rest/reactions/reactions#delete-team-discussion-reaction - */ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}", "delete">; - /** - * @see https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user - */ - "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "delete">; - /** - * @see https://docs.github.com/rest/teams/teams#remove-a-project-from-a-team - */ - "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "delete">; - /** - * @see https://docs.github.com/rest/teams/teams#remove-a-repository-from-a-team - */ - "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "delete">; - /** - * @see https://docs.github.com/rest/projects-classic/columns#delete-a-project-column - */ - "DELETE /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "delete">; - /** - * @see https://docs.github.com/rest/projects-classic/projects#delete-a-project - */ - "DELETE /projects/{project_id}": Operation<"/projects/{project_id}", "delete">; - /** - * @see https://docs.github.com/rest/projects-classic/collaborators#remove-user-as-a-collaborator - */ - "DELETE /projects/{project_id}/collaborators/{username}": Operation<"/projects/{project_id}/collaborators/{username}", "delete">; - /** - * @see https://docs.github.com/rest/repos/repos#delete-a-repository - */ - "DELETE /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "delete">; - /** - * @see https://docs.github.com/rest/actions/artifacts#delete-an-artifact - */ - "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}": Operation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/cache#delete-a-github-actions-cache-for-a-repository-using-a-cache-id - */ - "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}": Operation<"/repos/{owner}/{repo}/actions/caches/{cache_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/cache#delete-github-actions-caches-for-a-repository-using-a-cache-key - */ - "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}": Operation<"/repos/{owner}/{repo}/actions/caches", "delete">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#delete-a-self-hosted-runner-from-a-repository - */ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#remove-all-custom-labels-from-a-self-hosted-runner-for-a-repository - */ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "delete">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#remove-a-custom-label-from-a-self-hosted-runner-for-a-repository - */ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}", "delete">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#delete-a-workflow-run - */ - "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#delete-workflow-run-logs - */ - "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/logs", "delete">; - /** - * @see https://docs.github.com/rest/actions/secrets#delete-a-repository-secret - */ - "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "delete">; - /** - * @see https://docs.github.com/rest/actions/variables#delete-a-repository-variable - */ - "DELETE /repos/{owner}/{repo}/actions/variables/{name}": Operation<"/repos/{owner}/{repo}/actions/variables/{name}", "delete">; - /** - * @see https://docs.github.com/rest/repos/autolinks#delete-an-autolink-reference-from-a-repository - */ - "DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}": Operation<"/repos/{owner}/{repo}/autolinks/{autolink_id}", "delete">; - /** - * @see https://docs.github.com/rest/repos/repos#disable-dependabot-security-updates - */ - "DELETE /repos/{owner}/{repo}/automated-security-fixes": Operation<"/repos/{owner}/{repo}/automated-security-fixes", "delete">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#delete-branch-protection - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "delete">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#delete-admin-branch-protection - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "delete">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#delete-pull-request-review-protection - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "delete">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#delete-commit-signature-protection - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "delete">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#remove-status-check-protection - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "delete">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#remove-status-check-contexts - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "delete">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#delete-access-restrictions - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions", "delete">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#remove-app-access-restrictions - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "delete">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#remove-team-access-restrictions - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "delete">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#remove-user-access-restrictions - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "delete">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#delete-a-code-scanning-analysis-from-a-repository - */ - "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}": Operation<"/repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}", "delete">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#delete-a-codeql-database - */ - "DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}": Operation<"/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}", "delete">; - /** - * @see https://docs.github.com/rest/codespaces/repository-secrets#delete-a-repository-secret - */ - "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/codespaces/secrets/{secret_name}", "delete">; - /** - * @see https://docs.github.com/rest/collaborators/collaborators#remove-a-repository-collaborator - */ - "DELETE /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "delete">; - /** - * @see https://docs.github.com/rest/commits/comments#delete-a-commit-comment - */ - "DELETE /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "delete">; - /** - * @see https://docs.github.com/rest/reactions/reactions#delete-a-commit-comment-reaction - */ - "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}", "delete">; - /** - * @see https://docs.github.com/rest/repos/contents#delete-a-file - */ - "DELETE /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "delete">; - /** - * @see https://docs.github.com/rest/dependabot/secrets#delete-a-repository-secret - */ - "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/dependabot/secrets/{secret_name}", "delete">; - /** - * @see https://docs.github.com/rest/deployments/deployments#delete-a-deployment - */ - "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}", "delete">; - /** - * @see https://docs.github.com/rest/deployments/environments#delete-an-environment - */ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}", "delete">; - /** - * @see https://docs.github.com/rest/deployments/branch-policies#delete-a-deployment-branch-policy - */ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}", "delete">; - /** - * @see https://docs.github.com/rest/deployments/protection-rules#disable-a-custom-protection-rule-for-an-environment - */ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}", "delete">; - /** - * @see https://docs.github.com/rest/actions/secrets#delete-an-environment-secret - */ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}", "delete">; - /** - * @see https://docs.github.com/rest/actions/variables#delete-an-environment-variable - */ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/variables/{name}", "delete">; - /** - * @see https://docs.github.com/rest/git/refs#delete-a-reference - */ - "DELETE /repos/{owner}/{repo}/git/refs/{ref}": Operation<"/repos/{owner}/{repo}/git/refs/{ref}", "delete">; - /** - * @see https://docs.github.com/rest/repos/webhooks#delete-a-repository-webhook - */ - "DELETE /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "delete">; - /** - * @see https://docs.github.com/rest/repos/repos#disable-immutable-releases - */ - "DELETE /repos/{owner}/{repo}/immutable-releases": Operation<"/repos/{owner}/{repo}/immutable-releases", "delete">; - /** - * @see https://docs.github.com/rest/migrations/source-imports#cancel-an-import - */ - "DELETE /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "delete">; - /** - * @see https://docs.github.com/rest/interactions/repos#remove-interaction-restrictions-for-a-repository - */ - "DELETE /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "delete">; - /** - * @see https://docs.github.com/rest/collaborators/invitations#delete-a-repository-invitation - */ - "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}": Operation<"/repos/{owner}/{repo}/invitations/{invitation_id}", "delete">; - /** - * @see https://docs.github.com/rest/issues/comments#delete-an-issue-comment - */ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "delete">; - /** - * @see https://docs.github.com/rest/reactions/reactions#delete-an-issue-comment-reaction - */ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/issues#remove-assignees-from-an-issue - */ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/assignees", "delete">; - /** - * @see https://docs.github.com/rest/issues/issue-dependencies#remove-dependency-an-issue-is-blocked-by - */ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}", "delete">; - /** - * @see https://docs.github.com/rest/issues/labels#remove-all-labels-from-an-issue - */ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "delete">; - /** - * @see https://docs.github.com/rest/issues/labels#remove-a-label-from-an-issue - */ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels/{name}", "delete">; - /** - * @see https://docs.github.com/rest/issues/issues#unlock-an-issue - */ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/lock", "delete">; - /** - * @see https://docs.github.com/rest/reactions/reactions#delete-an-issue-reaction - */ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}", "delete">; - /** - * @see https://docs.github.com/rest/issues/sub-issues#remove-sub-issue - */ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/sub_issue", "delete">; - /** - * @see https://docs.github.com/rest/deploy-keys/deploy-keys#delete-a-deploy-key - */ - "DELETE /repos/{owner}/{repo}/keys/{key_id}": Operation<"/repos/{owner}/{repo}/keys/{key_id}", "delete">; - /** - * @see https://docs.github.com/rest/issues/labels#delete-a-label - */ - "DELETE /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "delete">; - /** - * @see https://docs.github.com/rest/issues/milestones#delete-a-milestone - */ - "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "delete">; - /** - * @see https://docs.github.com/rest/pages/pages#delete-a-apiname-pages-site - */ - "DELETE /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "delete">; - /** - * @see https://docs.github.com/rest/repos/repos#disable-private-vulnerability-reporting-for-a-repository - */ - "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting": Operation<"/repos/{owner}/{repo}/private-vulnerability-reporting", "delete">; - /** - * @see https://docs.github.com/rest/pulls/comments#delete-a-review-comment-for-a-pull-request - */ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "delete">; - /** - * @see https://docs.github.com/rest/reactions/reactions#delete-a-pull-request-comment-reaction - */ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}", "delete">; - /** - * @see https://docs.github.com/rest/pulls/review-requests#remove-requested-reviewers-from-a-pull-request - */ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "delete">; - /** - * @see https://docs.github.com/rest/pulls/reviews#delete-a-pending-review-for-a-pull-request - */ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "delete">; - /** - * @see https://docs.github.com/rest/releases/assets#delete-a-release-asset - */ - "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "delete">; - /** - * @see https://docs.github.com/rest/releases/releases#delete-a-release - */ - "DELETE /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "delete">; - /** - * @see https://docs.github.com/rest/reactions/reactions#delete-a-release-reaction - */ - "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}", "delete">; - /** - * @see https://docs.github.com/rest/repos/rules#delete-a-repository-ruleset - */ - "DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}": Operation<"/repos/{owner}/{repo}/rulesets/{ruleset_id}", "delete">; - /** - * @see https://docs.github.com/rest/activity/watching#delete-a-repository-subscription - */ - "DELETE /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "delete">; - /** - * @see https://docs.github.com/rest/repos/tags#closing-down---delete-a-tag-protection-state-for-a-repository - */ - "DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}": Operation<"/repos/{owner}/{repo}/tags/protection/{tag_protection_id}", "delete">; - /** - * @see https://docs.github.com/rest/repos/repos#disable-vulnerability-alerts - */ - "DELETE /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "delete">; - /** - * @see https://docs.github.com/rest/teams/teams#delete-a-team-legacy - */ - "DELETE /teams/{team_id}": Operation<"/teams/{team_id}", "delete">; - /** - * @see https://docs.github.com/rest/teams/discussions#delete-a-discussion-legacy - */ - "DELETE /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "delete">; - /** - * @see https://docs.github.com/rest/teams/discussion-comments#delete-a-discussion-comment-legacy - */ - "DELETE /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "delete">; - /** - * @see https://docs.github.com/rest/teams/members#remove-team-member-legacy - */ - "DELETE /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "delete">; - /** - * @see https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user-legacy - */ - "DELETE /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "delete">; - /** - * @see https://docs.github.com/rest/teams/teams#remove-a-project-from-a-team-legacy - */ - "DELETE /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "delete">; - /** - * @see https://docs.github.com/rest/teams/teams#remove-a-repository-from-a-team-legacy - */ - "DELETE /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "delete">; - /** - * @see https://docs.github.com/rest/users/blocking#unblock-a-user - */ - "DELETE /user/blocks/{username}": Operation<"/user/blocks/{username}", "delete">; - /** - * @see https://docs.github.com/rest/codespaces/secrets#delete-a-secret-for-the-authenticated-user - */ - "DELETE /user/codespaces/secrets/{secret_name}": Operation<"/user/codespaces/secrets/{secret_name}", "delete">; - /** - * @see https://docs.github.com/rest/codespaces/secrets#remove-a-selected-repository-from-a-user-secret - */ - "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}": Operation<"/user/codespaces/secrets/{secret_name}/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#delete-a-codespace-for-the-authenticated-user - */ - "DELETE /user/codespaces/{codespace_name}": Operation<"/user/codespaces/{codespace_name}", "delete">; - /** - * @see https://docs.github.com/rest/users/emails#delete-an-email-address-for-the-authenticated-user - */ - "DELETE /user/emails": Operation<"/user/emails", "delete">; - /** - * @see https://docs.github.com/rest/users/followers#unfollow-a-user - */ - "DELETE /user/following/{username}": Operation<"/user/following/{username}", "delete">; - /** - * @see https://docs.github.com/rest/users/gpg-keys#delete-a-gpg-key-for-the-authenticated-user - */ - "DELETE /user/gpg_keys/{gpg_key_id}": Operation<"/user/gpg_keys/{gpg_key_id}", "delete">; - /** - * @see https://docs.github.com/rest/apps/installations#remove-a-repository-from-an-app-installation - */ - "DELETE /user/installations/{installation_id}/repositories/{repository_id}": Operation<"/user/installations/{installation_id}/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/interactions/user#remove-interaction-restrictions-from-your-public-repositories - */ - "DELETE /user/interaction-limits": Operation<"/user/interaction-limits", "delete">; - /** - * @see https://docs.github.com/rest/users/keys#delete-a-public-ssh-key-for-the-authenticated-user - */ - "DELETE /user/keys/{key_id}": Operation<"/user/keys/{key_id}", "delete">; - /** - * @see https://docs.github.com/rest/migrations/users#delete-a-user-migration-archive - */ - "DELETE /user/migrations/{migration_id}/archive": Operation<"/user/migrations/{migration_id}/archive", "delete">; - /** - * @see https://docs.github.com/rest/migrations/users#unlock-a-user-repository - */ - "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock": Operation<"/user/migrations/{migration_id}/repos/{repo_name}/lock", "delete">; - /** - * @see https://docs.github.com/rest/packages/packages#delete-a-package-for-the-authenticated-user - */ - "DELETE /user/packages/{package_type}/{package_name}": Operation<"/user/packages/{package_type}/{package_name}", "delete">; - /** - * @see https://docs.github.com/rest/packages/packages#delete-a-package-version-for-the-authenticated-user - */ - "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/user/packages/{package_type}/{package_name}/versions/{package_version_id}", "delete">; - /** - * @see https://docs.github.com/rest/collaborators/invitations#decline-a-repository-invitation - */ - "DELETE /user/repository_invitations/{invitation_id}": Operation<"/user/repository_invitations/{invitation_id}", "delete">; - /** - * @see https://docs.github.com/rest/users/social-accounts#delete-social-accounts-for-the-authenticated-user - */ - "DELETE /user/social_accounts": Operation<"/user/social_accounts", "delete">; - /** - * @see https://docs.github.com/rest/users/ssh-signing-keys#delete-an-ssh-signing-key-for-the-authenticated-user - */ - "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}": Operation<"/user/ssh_signing_keys/{ssh_signing_key_id}", "delete">; - /** - * @see https://docs.github.com/rest/activity/starring#unstar-a-repository-for-the-authenticated-user - */ - "DELETE /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "delete">; - /** - * @see https://docs.github.com/rest/users/attestations#delete-attestations-by-subject-digest - */ - "DELETE /users/{username}/attestations/digest/{subject_digest}": Operation<"/users/{username}/attestations/digest/{subject_digest}", "delete">; - /** - * @see https://docs.github.com/rest/users/attestations#delete-attestations-by-id - */ - "DELETE /users/{username}/attestations/{attestation_id}": Operation<"/users/{username}/attestations/{attestation_id}", "delete">; - /** - * @see https://docs.github.com/rest/packages/packages#delete-a-package-for-a-user - */ - "DELETE /users/{username}/packages/{package_type}/{package_name}": Operation<"/users/{username}/packages/{package_type}/{package_name}", "delete">; - /** - * @see https://docs.github.com/rest/packages/packages#delete-package-version-for-a-user - */ - "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}", "delete">; - /** - * @see https://docs.github.com/rest/projects/items#delete-project-item-for-user - */ - "DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}": Operation<"/users/{username}/projectsV2/{project_number}/items/{item_id}", "delete">; - /** - * @see https://docs.github.com/rest/meta/meta#github-api-root - */ - "GET /": ReadonlyOperation<"/", "get">; - /** - * @see https://docs.github.com/rest/security-advisories/global-advisories#list-global-security-advisories - */ - "GET /advisories": ReadonlyOperation<"/advisories", "get">; - /** - * @see https://docs.github.com/rest/security-advisories/global-advisories#get-a-global-security-advisory - */ - "GET /advisories/{ghsa_id}": ReadonlyOperation<"/advisories/{ghsa_id}", "get">; - /** - * @see https://docs.github.com/rest/apps/apps#get-the-authenticated-app - */ - "GET /app": ReadonlyOperation<"/app", "get">; - /** - * @see https://docs.github.com/rest/apps/webhooks#get-a-webhook-configuration-for-an-app - */ - "GET /app/hook/config": ReadonlyOperation<"/app/hook/config", "get">; - /** - * @see https://docs.github.com/rest/apps/webhooks#list-deliveries-for-an-app-webhook - */ - "GET /app/hook/deliveries": ReadonlyOperation<"/app/hook/deliveries", "get">; - /** - * @see https://docs.github.com/rest/apps/webhooks#get-a-delivery-for-an-app-webhook - */ - "GET /app/hook/deliveries/{delivery_id}": ReadonlyOperation<"/app/hook/deliveries/{delivery_id}", "get">; - /** - * @see https://docs.github.com/rest/apps/apps#list-installation-requests-for-the-authenticated-app - */ - "GET /app/installation-requests": ReadonlyOperation<"/app/installation-requests", "get">; - /** - * @see https://docs.github.com/enterprise-server@3.9/rest/apps/apps#list-installations-for-the-authenticated-app - */ - "GET /app/installations": ReadonlyOperation<"/app/installations", "get">; - /** - * @see https://docs.github.com/rest/apps/apps#get-an-installation-for-the-authenticated-app - */ - "GET /app/installations/{installation_id}": ReadonlyOperation<"/app/installations/{installation_id}", "get">; - /** - * @see https://docs.github.com/rest/apps/apps#get-an-app - */ - "GET /apps/{app_slug}": ReadonlyOperation<"/apps/{app_slug}", "get">; - /** - * @see https://docs.github.com/rest/classroom/classroom#get-an-assignment - */ - "GET /assignments/{assignment_id}": ReadonlyOperation<"/assignments/{assignment_id}", "get">; - /** - * @see https://docs.github.com/rest/classroom/classroom#list-accepted-assignments-for-an-assignment - */ - "GET /assignments/{assignment_id}/accepted_assignments": ReadonlyOperation<"/assignments/{assignment_id}/accepted_assignments", "get">; - /** - * @see https://docs.github.com/rest/classroom/classroom#get-assignment-grades - */ - "GET /assignments/{assignment_id}/grades": ReadonlyOperation<"/assignments/{assignment_id}/grades", "get">; - /** - * @see https://docs.github.com/rest/classroom/classroom#list-classrooms - */ - "GET /classrooms": ReadonlyOperation<"/classrooms", "get">; - /** - * @see https://docs.github.com/rest/classroom/classroom#get-a-classroom - */ - "GET /classrooms/{classroom_id}": ReadonlyOperation<"/classrooms/{classroom_id}", "get">; - /** - * @see https://docs.github.com/rest/classroom/classroom#list-assignments-for-a-classroom - */ - "GET /classrooms/{classroom_id}/assignments": ReadonlyOperation<"/classrooms/{classroom_id}/assignments", "get">; - /** - * @see https://docs.github.com/rest/codes-of-conduct/codes-of-conduct#get-all-codes-of-conduct - */ - "GET /codes_of_conduct": ReadonlyOperation<"/codes_of_conduct", "get">; - /** - * @see https://docs.github.com/rest/codes-of-conduct/codes-of-conduct#get-a-code-of-conduct - */ - "GET /codes_of_conduct/{key}": ReadonlyOperation<"/codes_of_conduct/{key}", "get">; - /** - * @see https://docs.github.com/rest/emojis/emojis#get-emojis - */ - "GET /emojis": ReadonlyOperation<"/emojis", "get">; - /** - * @see https://docs.github.com/rest/code-security/configurations#get-code-security-configurations-for-an-enterprise - */ - "GET /enterprises/{enterprise}/code-security/configurations": ReadonlyOperation<"/enterprises/{enterprise}/code-security/configurations", "get">; - /** - * @see https://docs.github.com/rest/code-security/configurations#get-default-code-security-configurations-for-an-enterprise - */ - "GET /enterprises/{enterprise}/code-security/configurations/defaults": ReadonlyOperation<"/enterprises/{enterprise}/code-security/configurations/defaults", "get">; - /** - * @see https://docs.github.com/rest/code-security/configurations#retrieve-a-code-security-configuration-of-an-enterprise - */ - "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}": ReadonlyOperation<"/enterprises/{enterprise}/code-security/configurations/{configuration_id}", "get">; - /** - * @see https://docs.github.com/rest/code-security/configurations#get-repositories-associated-with-an-enterprise-code-security-configuration - */ - "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories": ReadonlyOperation<"/enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories", "get">; - /** - * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-an-enterprise - */ - "GET /enterprises/{enterprise}/dependabot/alerts": ReadonlyOperation<"/enterprises/{enterprise}/dependabot/alerts", "get">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-teams#list-enterprise-teams - */ - "GET /enterprises/{enterprise}/teams": ReadonlyOperation<"/enterprises/{enterprise}/teams", "get">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-members#list-members-in-an-enterprise-team - */ - "GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships": ReadonlyOperation<"/enterprises/{enterprise}/teams/{enterprise-team}/memberships", "get">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-members#get-enterprise-team-membership - */ - "GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}": ReadonlyOperation<"/enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}", "get">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#get-organization-assignments - */ - "GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations": ReadonlyOperation<"/enterprises/{enterprise}/teams/{enterprise-team}/organizations", "get">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#get-organization-assignment - */ - "GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}": ReadonlyOperation<"/enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}", "get">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-teams#get-an-enterprise-team - */ - "GET /enterprises/{enterprise}/teams/{team_slug}": ReadonlyOperation<"/enterprises/{enterprise}/teams/{team_slug}", "get">; - /** - * @see https://docs.github.com/rest/activity/events#list-public-events - */ - "GET /events": ReadonlyOperation<"/events", "get">; - /** - * @see https://docs.github.com/rest/activity/feeds#get-feeds - */ - "GET /feeds": ReadonlyOperation<"/feeds", "get">; - /** - * @see https://docs.github.com/rest/gists/gists#list-gists-for-the-authenticated-user - */ - "GET /gists": ReadonlyOperation<"/gists", "get">; - /** - * @see https://docs.github.com/rest/gists/gists#list-public-gists - */ - "GET /gists/public": ReadonlyOperation<"/gists/public", "get">; - /** - * @see https://docs.github.com/rest/gists/gists#list-starred-gists - */ - "GET /gists/starred": ReadonlyOperation<"/gists/starred", "get">; - /** - * @see https://docs.github.com/rest/gists/gists#get-a-gist - */ - "GET /gists/{gist_id}": ReadonlyOperation<"/gists/{gist_id}", "get">; - /** - * @see https://docs.github.com/rest/gists/comments#list-gist-comments - */ - "GET /gists/{gist_id}/comments": ReadonlyOperation<"/gists/{gist_id}/comments", "get">; - /** - * @see https://docs.github.com/rest/gists/comments#get-a-gist-comment - */ - "GET /gists/{gist_id}/comments/{comment_id}": ReadonlyOperation<"/gists/{gist_id}/comments/{comment_id}", "get">; - /** - * @see https://docs.github.com/rest/gists/gists#list-gist-commits - */ - "GET /gists/{gist_id}/commits": ReadonlyOperation<"/gists/{gist_id}/commits", "get">; - /** - * @see https://docs.github.com/rest/gists/gists#list-gist-forks - */ - "GET /gists/{gist_id}/forks": ReadonlyOperation<"/gists/{gist_id}/forks", "get">; - /** - * @see https://docs.github.com/rest/gists/gists#check-if-a-gist-is-starred - */ - "GET /gists/{gist_id}/star": ReadonlyOperation<"/gists/{gist_id}/star", "get">; - /** - * @see https://docs.github.com/rest/gists/gists#get-a-gist-revision - */ - "GET /gists/{gist_id}/{sha}": ReadonlyOperation<"/gists/{gist_id}/{sha}", "get">; - /** - * @see https://docs.github.com/rest/gitignore/gitignore#get-all-gitignore-templates - */ - "GET /gitignore/templates": ReadonlyOperation<"/gitignore/templates", "get">; - /** - * @see https://docs.github.com/rest/gitignore/gitignore#get-a-gitignore-template - */ - "GET /gitignore/templates/{name}": ReadonlyOperation<"/gitignore/templates/{name}", "get">; - /** - * @see https://docs.github.com/rest/apps/installations#list-repositories-accessible-to-the-app-installation - */ - "GET /installation/repositories": ReadonlyOperation<"/installation/repositories", "get">; - /** - * @see https://docs.github.com/rest/issues/issues#list-issues-assigned-to-the-authenticated-user - */ - "GET /issues": ReadonlyOperation<"/issues", "get">; - /** - * @see https://docs.github.com/rest/licenses/licenses#get-all-commonly-used-licenses - */ - "GET /licenses": ReadonlyOperation<"/licenses", "get">; - /** - * @see https://docs.github.com/rest/licenses/licenses#get-a-license - */ - "GET /licenses/{license}": ReadonlyOperation<"/licenses/{license}", "get">; - /** - * @see https://docs.github.com/rest/apps/marketplace#get-a-subscription-plan-for-an-account - */ - "GET /marketplace_listing/accounts/{account_id}": ReadonlyOperation<"/marketplace_listing/accounts/{account_id}", "get">; - /** - * @see https://docs.github.com/rest/apps/marketplace#list-plans - */ - "GET /marketplace_listing/plans": ReadonlyOperation<"/marketplace_listing/plans", "get">; - /** - * @see https://docs.github.com/rest/apps/marketplace#list-accounts-for-a-plan - */ - "GET /marketplace_listing/plans/{plan_id}/accounts": ReadonlyOperation<"/marketplace_listing/plans/{plan_id}/accounts", "get">; - /** - * @see https://docs.github.com/rest/apps/marketplace#get-a-subscription-plan-for-an-account-stubbed - */ - "GET /marketplace_listing/stubbed/accounts/{account_id}": ReadonlyOperation<"/marketplace_listing/stubbed/accounts/{account_id}", "get">; - /** - * @see https://docs.github.com/rest/apps/marketplace#list-plans-stubbed - */ - "GET /marketplace_listing/stubbed/plans": ReadonlyOperation<"/marketplace_listing/stubbed/plans", "get">; - /** - * @see https://docs.github.com/rest/apps/marketplace#list-accounts-for-a-plan-stubbed - */ - "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts": ReadonlyOperation<"/marketplace_listing/stubbed/plans/{plan_id}/accounts", "get">; - /** - * @see https://docs.github.com/rest/meta/meta#get-apiname-meta-information - */ - "GET /meta": ReadonlyOperation<"/meta", "get">; - /** - * @see https://docs.github.com/rest/activity/events#list-public-events-for-a-network-of-repositories - */ - "GET /networks/{owner}/{repo}/events": ReadonlyOperation<"/networks/{owner}/{repo}/events", "get">; - /** - * @see https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user - */ - "GET /notifications": ReadonlyOperation<"/notifications", "get">; - /** - * @see https://docs.github.com/rest/activity/notifications#get-a-thread - */ - "GET /notifications/threads/{thread_id}": ReadonlyOperation<"/notifications/threads/{thread_id}", "get">; - /** - * @see https://docs.github.com/rest/activity/notifications#get-a-thread-subscription-for-the-authenticated-user - */ - "GET /notifications/threads/{thread_id}/subscription": ReadonlyOperation<"/notifications/threads/{thread_id}/subscription", "get">; - /** - * @see https://docs.github.com/rest/meta/meta#get-octocat - */ - "GET /octocat": ReadonlyOperation<"/octocat", "get">; - /** - * @see https://docs.github.com/rest/orgs/orgs#list-organizations - */ - "GET /organizations": ReadonlyOperation<"/organizations", "get">; - /** - * @see https://docs.github.com/rest/dependabot/repository-access#lists-the-repositories-dependabot-can-access-in-an-organization - */ - "GET /organizations/{org}/dependabot/repository-access": ReadonlyOperation<"/organizations/{org}/dependabot/repository-access", "get">; - /** - * @see https://docs.github.com/rest/orgs/custom-properties-for-orgs#get-all-custom-property-values-for-an-organization - */ - "GET /organizations/{org}/org-properties/values": ReadonlyOperation<"/organizations/{org}/org-properties/values", "get">; - /** - * @see https://docs.github.com/rest/billing/enhanced-billing#get-billing-premium-request-usage-report-for-an-organization - */ - "GET /organizations/{org}/settings/billing/premium_request/usage": ReadonlyOperation<"/organizations/{org}/settings/billing/premium_request/usage", "get">; - /** - * @see https://docs.github.com/rest/billing/enhanced-billing#get-billing-usage-report-for-an-organization - */ - "GET /organizations/{org}/settings/billing/usage": ReadonlyOperation<"/organizations/{org}/settings/billing/usage", "get">; - /** - * @see https://docs.github.com/rest/codespaces/organizations#list-codespaces-for-the-organization - * @deprecated "org_id" is now "org" - */ - "GET /orgs/{org_id}/codespaces": ReadonlyOperation<"/orgs/{org}/codespaces", "get">; - /** - * @see https://docs.github.com/rest/orgs/orgs#get-an-organization - */ - "GET /orgs/{org}": ReadonlyOperation<"/orgs/{org}", "get">; - /** - * @see https://docs.github.com/rest/actions/cache#get-github-actions-cache-usage-for-an-organization - */ - "GET /orgs/{org}/actions/cache/usage": ReadonlyOperation<"/orgs/{org}/actions/cache/usage", "get">; - /** - * @see https://docs.github.com/rest/actions/cache#list-repositories-with-github-actions-cache-usage-for-an-organization - */ - "GET /orgs/{org}/actions/cache/usage-by-repository": ReadonlyOperation<"/orgs/{org}/actions/cache/usage-by-repository", "get">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#list-github-hosted-runners-for-an-organization - */ - "GET /orgs/{org}/actions/hosted-runners": ReadonlyOperation<"/orgs/{org}/actions/hosted-runners", "get">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#list-custom-images-for-an-organization - */ - "GET /orgs/{org}/actions/hosted-runners/images/custom": ReadonlyOperation<"/orgs/{org}/actions/hosted-runners/images/custom", "get">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#get-a-custom-image-definition-for-github-actions-hosted-runners - */ - "GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}": ReadonlyOperation<"/orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}", "get">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#list-image-versions-of-a-custom-image-for-an-organization - */ - "GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions": ReadonlyOperation<"/orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions", "get">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#get-an-image-version-of-a-custom-image-for-github-actions-hosted-runners - */ - "GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}": ReadonlyOperation<"/orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}", "get">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#get-github-owned-images-for-github-hosted-runners-in-an-organization - */ - "GET /orgs/{org}/actions/hosted-runners/images/github-owned": ReadonlyOperation<"/orgs/{org}/actions/hosted-runners/images/github-owned", "get">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#get-partner-images-for-github-hosted-runners-in-an-organization - */ - "GET /orgs/{org}/actions/hosted-runners/images/partner": ReadonlyOperation<"/orgs/{org}/actions/hosted-runners/images/partner", "get">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#get-limits-on-github-hosted-runners-for-an-organization - */ - "GET /orgs/{org}/actions/hosted-runners/limits": ReadonlyOperation<"/orgs/{org}/actions/hosted-runners/limits", "get">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#get-github-hosted-runners-machine-specs-for-an-organization - */ - "GET /orgs/{org}/actions/hosted-runners/machine-sizes": ReadonlyOperation<"/orgs/{org}/actions/hosted-runners/machine-sizes", "get">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#get-platforms-for-github-hosted-runners-in-an-organization - */ - "GET /orgs/{org}/actions/hosted-runners/platforms": ReadonlyOperation<"/orgs/{org}/actions/hosted-runners/platforms", "get">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#get-a-github-hosted-runner-for-an-organization - */ - "GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}": ReadonlyOperation<"/orgs/{org}/actions/hosted-runners/{hosted_runner_id}", "get">; - /** - * @see https://docs.github.com/rest/actions/oidc#get-the-customization-template-for-an-oidc-subject-claim-for-an-organization - */ - "GET /orgs/{org}/actions/oidc/customization/sub": ReadonlyOperation<"/orgs/{org}/actions/oidc/customization/sub", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-github-actions-permissions-for-an-organization - */ - "GET /orgs/{org}/actions/permissions": ReadonlyOperation<"/orgs/{org}/actions/permissions", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-artifact-and-log-retention-settings-for-an-organization - */ - "GET /orgs/{org}/actions/permissions/artifact-and-log-retention": ReadonlyOperation<"/orgs/{org}/actions/permissions/artifact-and-log-retention", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-fork-pr-contributor-approval-permissions-for-an-organization - */ - "GET /orgs/{org}/actions/permissions/fork-pr-contributor-approval": ReadonlyOperation<"/orgs/{org}/actions/permissions/fork-pr-contributor-approval", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-private-repo-fork-pr-workflow-settings-for-an-organization - */ - "GET /orgs/{org}/actions/permissions/fork-pr-workflows-private-repos": ReadonlyOperation<"/orgs/{org}/actions/permissions/fork-pr-workflows-private-repos", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#list-selected-repositories-enabled-for-github-actions-in-an-organization - */ - "GET /orgs/{org}/actions/permissions/repositories": ReadonlyOperation<"/orgs/{org}/actions/permissions/repositories", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-an-organization - */ - "GET /orgs/{org}/actions/permissions/selected-actions": ReadonlyOperation<"/orgs/{org}/actions/permissions/selected-actions", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-self-hosted-runners-settings-for-an-organization - */ - "GET /orgs/{org}/actions/permissions/self-hosted-runners": ReadonlyOperation<"/orgs/{org}/actions/permissions/self-hosted-runners", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#list-repositories-allowed-to-use-self-hosted-runners-in-an-organization - */ - "GET /orgs/{org}/actions/permissions/self-hosted-runners/repositories": ReadonlyOperation<"/orgs/{org}/actions/permissions/self-hosted-runners/repositories", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-default-workflow-permissions-for-an-organization - */ - "GET /orgs/{org}/actions/permissions/workflow": ReadonlyOperation<"/orgs/{org}/actions/permissions/workflow", "get">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#list-self-hosted-runner-groups-for-an-organization - */ - "GET /orgs/{org}/actions/runner-groups": ReadonlyOperation<"/orgs/{org}/actions/runner-groups", "get">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#get-a-self-hosted-runner-group-for-an-organization - */ - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}": ReadonlyOperation<"/orgs/{org}/actions/runner-groups/{runner_group_id}", "get">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#list-github-hosted-runners-in-a-group-for-an-organization - */ - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners": ReadonlyOperation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners", "get">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#list-repository-access-to-a-self-hosted-runner-group-in-an-organization - */ - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": ReadonlyOperation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "get">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#list-self-hosted-runners-in-a-group-for-an-organization - */ - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners": ReadonlyOperation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "get">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#list-self-hosted-runners-for-an-organization - */ - "GET /orgs/{org}/actions/runners": ReadonlyOperation<"/orgs/{org}/actions/runners", "get">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#list-runner-applications-for-an-organization - */ - "GET /orgs/{org}/actions/runners/downloads": ReadonlyOperation<"/orgs/{org}/actions/runners/downloads", "get">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#get-a-self-hosted-runner-for-an-organization - */ - "GET /orgs/{org}/actions/runners/{runner_id}": ReadonlyOperation<"/orgs/{org}/actions/runners/{runner_id}", "get">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#list-labels-for-a-self-hosted-runner-for-an-organization - */ - "GET /orgs/{org}/actions/runners/{runner_id}/labels": ReadonlyOperation<"/orgs/{org}/actions/runners/{runner_id}/labels", "get">; - /** - * @see https://docs.github.com/rest/actions/secrets#list-organization-secrets - */ - "GET /orgs/{org}/actions/secrets": ReadonlyOperation<"/orgs/{org}/actions/secrets", "get">; - /** - * @see https://docs.github.com/rest/actions/secrets#get-an-organization-public-key - */ - "GET /orgs/{org}/actions/secrets/public-key": ReadonlyOperation<"/orgs/{org}/actions/secrets/public-key", "get">; - /** - * @see https://docs.github.com/rest/actions/secrets#get-an-organization-secret - */ - "GET /orgs/{org}/actions/secrets/{secret_name}": ReadonlyOperation<"/orgs/{org}/actions/secrets/{secret_name}", "get">; - /** - * @see https://docs.github.com/rest/actions/secrets#list-selected-repositories-for-an-organization-secret - */ - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories": ReadonlyOperation<"/orgs/{org}/actions/secrets/{secret_name}/repositories", "get">; - /** - * @see https://docs.github.com/rest/actions/variables#list-organization-variables - */ - "GET /orgs/{org}/actions/variables": ReadonlyOperation<"/orgs/{org}/actions/variables", "get">; - /** - * @see https://docs.github.com/rest/actions/variables#get-an-organization-variable - */ - "GET /orgs/{org}/actions/variables/{name}": ReadonlyOperation<"/orgs/{org}/actions/variables/{name}", "get">; - /** - * @see https://docs.github.com/rest/actions/variables#list-selected-repositories-for-an-organization-variable - */ - "GET /orgs/{org}/actions/variables/{name}/repositories": ReadonlyOperation<"/orgs/{org}/actions/variables/{name}/repositories", "get">; - /** - * @see https://docs.github.com/rest/orgs/artifact-metadata#list-artifact-storage-records - */ - "GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records": ReadonlyOperation<"/orgs/{org}/artifacts/{subject_digest}/metadata/storage-records", "get">; - /** - * @see https://docs.github.com/rest/orgs/attestations#list-attestation-repositories - */ - "GET /orgs/{org}/attestations/repositories": ReadonlyOperation<"/orgs/{org}/attestations/repositories", "get">; - /** - * @see https://docs.github.com/rest/orgs/attestations#list-attestations - */ - "GET /orgs/{org}/attestations/{subject_digest}": ReadonlyOperation<"/orgs/{org}/attestations/{subject_digest}", "get">; - /** - * @see https://docs.github.com/rest/orgs/blocking#list-users-blocked-by-an-organization - */ - "GET /orgs/{org}/blocks": ReadonlyOperation<"/orgs/{org}/blocks", "get">; - /** - * @see https://docs.github.com/rest/orgs/blocking#check-if-a-user-is-blocked-by-an-organization - */ - "GET /orgs/{org}/blocks/{username}": ReadonlyOperation<"/orgs/{org}/blocks/{username}", "get">; - /** - * @see https://docs.github.com/rest/campaigns/campaigns#list-campaigns-for-an-organization - */ - "GET /orgs/{org}/campaigns": ReadonlyOperation<"/orgs/{org}/campaigns", "get">; - /** - * @see https://docs.github.com/rest/campaigns/campaigns#get-a-campaign-for-an-organization - */ - "GET /orgs/{org}/campaigns/{campaign_number}": ReadonlyOperation<"/orgs/{org}/campaigns/{campaign_number}", "get">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#list-code-scanning-alerts-for-an-organization - */ - "GET /orgs/{org}/code-scanning/alerts": ReadonlyOperation<"/orgs/{org}/code-scanning/alerts", "get">; - /** - * @see https://docs.github.com/rest/code-security/configurations#get-code-security-configurations-for-an-organization - */ - "GET /orgs/{org}/code-security/configurations": ReadonlyOperation<"/orgs/{org}/code-security/configurations", "get">; - /** - * @see https://docs.github.com/rest/code-security/configurations#get-default-code-security-configurations - */ - "GET /orgs/{org}/code-security/configurations/defaults": ReadonlyOperation<"/orgs/{org}/code-security/configurations/defaults", "get">; - /** - * @see https://docs.github.com/rest/code-security/configurations#get-a-code-security-configuration - */ - "GET /orgs/{org}/code-security/configurations/{configuration_id}": ReadonlyOperation<"/orgs/{org}/code-security/configurations/{configuration_id}", "get">; - /** - * @see https://docs.github.com/rest/code-security/configurations#get-repositories-associated-with-a-code-security-configuration - */ - "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories": ReadonlyOperation<"/orgs/{org}/code-security/configurations/{configuration_id}/repositories", "get">; - /** - * @see https://docs.github.com/rest/codespaces/organizations#list-codespaces-for-the-organization - */ - "GET /orgs/{org}/codespaces": ReadonlyOperation<"/orgs/{org}/codespaces", "get">; - /** - * @see https://docs.github.com/rest/codespaces/organization-secrets#list-organization-secrets - */ - "GET /orgs/{org}/codespaces/secrets": ReadonlyOperation<"/orgs/{org}/codespaces/secrets", "get">; - /** - * @see https://docs.github.com/rest/codespaces/organization-secrets#get-an-organization-public-key - */ - "GET /orgs/{org}/codespaces/secrets/public-key": ReadonlyOperation<"/orgs/{org}/codespaces/secrets/public-key", "get">; - /** - * @see https://docs.github.com/rest/codespaces/organization-secrets#get-an-organization-secret - */ - "GET /orgs/{org}/codespaces/secrets/{secret_name}": ReadonlyOperation<"/orgs/{org}/codespaces/secrets/{secret_name}", "get">; - /** - * @see https://docs.github.com/rest/codespaces/organization-secrets#list-selected-repositories-for-an-organization-secret - */ - "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories": ReadonlyOperation<"/orgs/{org}/codespaces/secrets/{secret_name}/repositories", "get">; - /** - * @see https://docs.github.com/rest/copilot/copilot-user-management#get-copilot-seat-information-and-settings-for-an-organization - */ - "GET /orgs/{org}/copilot/billing": ReadonlyOperation<"/orgs/{org}/copilot/billing", "get">; - /** - * @see https://docs.github.com/rest/copilot/copilot-user-management#list-all-copilot-seat-assignments-for-an-organization - */ - "GET /orgs/{org}/copilot/billing/seats": ReadonlyOperation<"/orgs/{org}/copilot/billing/seats", "get">; - /** - * @see https://docs.github.com/rest/copilot/copilot-metrics#get-copilot-metrics-for-an-organization - */ - "GET /orgs/{org}/copilot/metrics": ReadonlyOperation<"/orgs/{org}/copilot/metrics", "get">; - /** - * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-an-organization - */ - "GET /orgs/{org}/dependabot/alerts": ReadonlyOperation<"/orgs/{org}/dependabot/alerts", "get">; - /** - * @see https://docs.github.com/rest/dependabot/secrets#list-organization-secrets - */ - "GET /orgs/{org}/dependabot/secrets": ReadonlyOperation<"/orgs/{org}/dependabot/secrets", "get">; - /** - * @see https://docs.github.com/rest/dependabot/secrets#get-an-organization-public-key - */ - "GET /orgs/{org}/dependabot/secrets/public-key": ReadonlyOperation<"/orgs/{org}/dependabot/secrets/public-key", "get">; - /** - * @see https://docs.github.com/rest/dependabot/secrets#get-an-organization-secret - */ - "GET /orgs/{org}/dependabot/secrets/{secret_name}": ReadonlyOperation<"/orgs/{org}/dependabot/secrets/{secret_name}", "get">; - /** - * @see https://docs.github.com/rest/dependabot/secrets#list-selected-repositories-for-an-organization-secret - */ - "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories": ReadonlyOperation<"/orgs/{org}/dependabot/secrets/{secret_name}/repositories", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#get-list-of-conflicting-packages-during-docker-migration-for-organization - */ - "GET /orgs/{org}/docker/conflicts": ReadonlyOperation<"/orgs/{org}/docker/conflicts", "get">; - /** - * @see https://docs.github.com/rest/activity/events#list-public-organization-events - */ - "GET /orgs/{org}/events": ReadonlyOperation<"/orgs/{org}/events", "get">; - /** - * @see https://docs.github.com/rest/orgs/members#list-failed-organization-invitations - */ - "GET /orgs/{org}/failed_invitations": ReadonlyOperation<"/orgs/{org}/failed_invitations", "get">; - /** - * @see https://docs.github.com/rest/orgs/webhooks#list-organization-webhooks - */ - "GET /orgs/{org}/hooks": ReadonlyOperation<"/orgs/{org}/hooks", "get">; - /** - * @see https://docs.github.com/rest/orgs/webhooks#get-an-organization-webhook - */ - "GET /orgs/{org}/hooks/{hook_id}": ReadonlyOperation<"/orgs/{org}/hooks/{hook_id}", "get">; - /** - * @see https://docs.github.com/rest/orgs/webhooks#get-a-webhook-configuration-for-an-organization - */ - "GET /orgs/{org}/hooks/{hook_id}/config": ReadonlyOperation<"/orgs/{org}/hooks/{hook_id}/config", "get">; - /** - * @see https://docs.github.com/rest/orgs/webhooks#list-deliveries-for-an-organization-webhook - */ - "GET /orgs/{org}/hooks/{hook_id}/deliveries": ReadonlyOperation<"/orgs/{org}/hooks/{hook_id}/deliveries", "get">; - /** - * @see https://docs.github.com/rest/orgs/webhooks#get-a-webhook-delivery-for-an-organization-webhook - */ - "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}": ReadonlyOperation<"/orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}", "get">; - /** - * @see https://docs.github.com/rest/orgs/api-insights#get-route-stats-by-actor - */ - "GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}": ReadonlyOperation<"/orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}", "get">; - /** - * @see https://docs.github.com/rest/orgs/api-insights#get-subject-stats - */ - "GET /orgs/{org}/insights/api/subject-stats": ReadonlyOperation<"/orgs/{org}/insights/api/subject-stats", "get">; - /** - * @see https://docs.github.com/rest/orgs/api-insights#get-summary-stats - */ - "GET /orgs/{org}/insights/api/summary-stats": ReadonlyOperation<"/orgs/{org}/insights/api/summary-stats", "get">; - /** - * @see https://docs.github.com/rest/orgs/api-insights#get-summary-stats-by-user - */ - "GET /orgs/{org}/insights/api/summary-stats/users/{user_id}": ReadonlyOperation<"/orgs/{org}/insights/api/summary-stats/users/{user_id}", "get">; - /** - * @see https://docs.github.com/rest/orgs/api-insights#get-summary-stats-by-actor - */ - "GET /orgs/{org}/insights/api/summary-stats/{actor_type}/{actor_id}": ReadonlyOperation<"/orgs/{org}/insights/api/summary-stats/{actor_type}/{actor_id}", "get">; - /** - * @see https://docs.github.com/rest/orgs/api-insights#get-time-stats - */ - "GET /orgs/{org}/insights/api/time-stats": ReadonlyOperation<"/orgs/{org}/insights/api/time-stats", "get">; - /** - * @see https://docs.github.com/rest/orgs/api-insights#get-time-stats-by-user - */ - "GET /orgs/{org}/insights/api/time-stats/users/{user_id}": ReadonlyOperation<"/orgs/{org}/insights/api/time-stats/users/{user_id}", "get">; - /** - * @see https://docs.github.com/rest/orgs/api-insights#get-time-stats-by-actor - */ - "GET /orgs/{org}/insights/api/time-stats/{actor_type}/{actor_id}": ReadonlyOperation<"/orgs/{org}/insights/api/time-stats/{actor_type}/{actor_id}", "get">; - /** - * @see https://docs.github.com/rest/orgs/api-insights#get-user-stats - */ - "GET /orgs/{org}/insights/api/user-stats/{user_id}": ReadonlyOperation<"/orgs/{org}/insights/api/user-stats/{user_id}", "get">; - /** - * @see https://docs.github.com/rest/apps/apps#get-an-organization-installation-for-the-authenticated-app - */ - "GET /orgs/{org}/installation": ReadonlyOperation<"/orgs/{org}/installation", "get">; - /** - * @see https://docs.github.com/rest/orgs/orgs#list-app-installations-for-an-organization - */ - "GET /orgs/{org}/installations": ReadonlyOperation<"/orgs/{org}/installations", "get">; - /** - * @see https://docs.github.com/rest/interactions/orgs#get-interaction-restrictions-for-an-organization - */ - "GET /orgs/{org}/interaction-limits": ReadonlyOperation<"/orgs/{org}/interaction-limits", "get">; - /** - * @see https://docs.github.com/rest/orgs/members#list-pending-organization-invitations - */ - "GET /orgs/{org}/invitations": ReadonlyOperation<"/orgs/{org}/invitations", "get">; - /** - * @see https://docs.github.com/rest/orgs/members#list-organization-invitation-teams - */ - "GET /orgs/{org}/invitations/{invitation_id}/teams": ReadonlyOperation<"/orgs/{org}/invitations/{invitation_id}/teams", "get">; - /** - * @see https://docs.github.com/rest/orgs/issue-types#list-issue-types-for-an-organization - */ - "GET /orgs/{org}/issue-types": ReadonlyOperation<"/orgs/{org}/issue-types", "get">; - /** - * @see https://docs.github.com/rest/issues/issues#list-organization-issues-assigned-to-the-authenticated-user - */ - "GET /orgs/{org}/issues": ReadonlyOperation<"/orgs/{org}/issues", "get">; - /** - * @see https://docs.github.com/rest/orgs/members#list-organization-members - */ - "GET /orgs/{org}/members": ReadonlyOperation<"/orgs/{org}/members", "get">; - /** - * @see https://docs.github.com/rest/orgs/members#check-organization-membership-for-a-user - */ - "GET /orgs/{org}/members/{username}": ReadonlyOperation<"/orgs/{org}/members/{username}", "get">; - /** - * @see https://docs.github.com/rest/codespaces/organizations#list-codespaces-for-a-user-in-organization - */ - "GET /orgs/{org}/members/{username}/codespaces": ReadonlyOperation<"/orgs/{org}/members/{username}/codespaces", "get">; - /** - * @see https://docs.github.com/rest/copilot/copilot-user-management#get-copilot-seat-assignment-details-for-a-user - */ - "GET /orgs/{org}/members/{username}/copilot": ReadonlyOperation<"/orgs/{org}/members/{username}/copilot", "get">; - /** - * @see https://docs.github.com/rest/orgs/members#get-organization-membership-for-a-user - */ - "GET /orgs/{org}/memberships/{username}": ReadonlyOperation<"/orgs/{org}/memberships/{username}", "get">; - /** - * @see https://docs.github.com/rest/migrations/orgs#list-organization-migrations - */ - "GET /orgs/{org}/migrations": ReadonlyOperation<"/orgs/{org}/migrations", "get">; - /** - * @see https://docs.github.com/rest/migrations/orgs#get-an-organization-migration-status - */ - "GET /orgs/{org}/migrations/{migration_id}": ReadonlyOperation<"/orgs/{org}/migrations/{migration_id}", "get">; - /** - * @see https://docs.github.com/rest/migrations/orgs#download-an-organization-migration-archive - */ - "GET /orgs/{org}/migrations/{migration_id}/archive": ReadonlyOperation<"/orgs/{org}/migrations/{migration_id}/archive", "get">; - /** - * @see https://docs.github.com/rest/migrations/orgs#list-repositories-in-an-organization-migration - */ - "GET /orgs/{org}/migrations/{migration_id}/repositories": ReadonlyOperation<"/orgs/{org}/migrations/{migration_id}/repositories", "get">; - /** - * @see https://docs.github.com/rest/orgs/organization-roles#list-organization-fine-grained-permissions-for-an-organization - */ - "GET /orgs/{org}/organization-fine-grained-permissions": ReadonlyOperation<"/orgs/{org}/organization-fine-grained-permissions", "get">; - /** - * @see https://docs.github.com/rest/orgs/organization-roles#get-all-organization-roles-for-an-organization - */ - "GET /orgs/{org}/organization-roles": ReadonlyOperation<"/orgs/{org}/organization-roles", "get">; - /** - * @see https://docs.github.com/rest/orgs/organization-roles#get-an-organization-role - */ - "GET /orgs/{org}/organization-roles/{role_id}": ReadonlyOperation<"/orgs/{org}/organization-roles/{role_id}", "get">; - /** - * @see https://docs.github.com/rest/orgs/organization-roles#list-teams-that-are-assigned-to-an-organization-role - */ - "GET /orgs/{org}/organization-roles/{role_id}/teams": ReadonlyOperation<"/orgs/{org}/organization-roles/{role_id}/teams", "get">; - /** - * @see https://docs.github.com/rest/orgs/organization-roles#list-users-that-are-assigned-to-an-organization-role - */ - "GET /orgs/{org}/organization-roles/{role_id}/users": ReadonlyOperation<"/orgs/{org}/organization-roles/{role_id}/users", "get">; - /** - * @see https://docs.github.com/rest/orgs/outside-collaborators#list-outside-collaborators-for-an-organization - */ - "GET /orgs/{org}/outside_collaborators": ReadonlyOperation<"/orgs/{org}/outside_collaborators", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#list-packages-for-an-organization - */ - "GET /orgs/{org}/packages": ReadonlyOperation<"/orgs/{org}/packages", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#get-a-package-for-an-organization - */ - "GET /orgs/{org}/packages/{package_type}/{package_name}": ReadonlyOperation<"/orgs/{org}/packages/{package_type}/{package_name}", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-an-organization - */ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions": ReadonlyOperation<"/orgs/{org}/packages/{package_type}/{package_name}/versions", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#get-a-package-version-for-an-organization - */ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}": ReadonlyOperation<"/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}", "get">; - /** - * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-requests-to-access-organization-resources-with-fine-grained-personal-access-tokens - */ - "GET /orgs/{org}/personal-access-token-requests": ReadonlyOperation<"/orgs/{org}/personal-access-token-requests", "get">; - /** - * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-repositories-requested-to-be-accessed-by-a-fine-grained-personal-access-token - */ - "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories": ReadonlyOperation<"/orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories", "get">; - /** - * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-fine-grained-personal-access-tokens-with-access-to-organization-resources - */ - "GET /orgs/{org}/personal-access-tokens": ReadonlyOperation<"/orgs/{org}/personal-access-tokens", "get">; - /** - * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-repositories-a-fine-grained-personal-access-token-has-access-to - */ - "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories": ReadonlyOperation<"/orgs/{org}/personal-access-tokens/{pat_id}/repositories", "get">; - /** - * @see https://docs.github.com/rest/private-registries/organization-configurations#list-private-registries-for-an-organization - */ - "GET /orgs/{org}/private-registries": ReadonlyOperation<"/orgs/{org}/private-registries", "get">; - /** - * @see https://docs.github.com/rest/private-registries/organization-configurations#get-private-registries-public-key-for-an-organization - */ - "GET /orgs/{org}/private-registries/public-key": ReadonlyOperation<"/orgs/{org}/private-registries/public-key", "get">; - /** - * @see https://docs.github.com/rest/private-registries/organization-configurations#get-a-private-registry-for-an-organization - */ - "GET /orgs/{org}/private-registries/{secret_name}": ReadonlyOperation<"/orgs/{org}/private-registries/{secret_name}", "get">; - /** - * @see https://docs.github.com/rest/projects-classic/projects#list-organization-projects - */ - "GET /orgs/{org}/projects": ReadonlyOperation<"/orgs/{org}/projects", "get">; - /** - * @see https://docs.github.com/rest/projects/projects#list-projects-for-organization - */ - "GET /orgs/{org}/projectsV2": ReadonlyOperation<"/orgs/{org}/projectsV2", "get">; - /** - * @see https://docs.github.com/rest/projects/projects#get-project-for-organization - */ - "GET /orgs/{org}/projectsV2/{project_number}": ReadonlyOperation<"/orgs/{org}/projectsV2/{project_number}", "get">; - /** - * @see https://docs.github.com/rest/projects/fields#list-project-fields-for-organization - */ - "GET /orgs/{org}/projectsV2/{project_number}/fields": ReadonlyOperation<"/orgs/{org}/projectsV2/{project_number}/fields", "get">; - /** - * @see https://docs.github.com/rest/projects/fields#get-project-field-for-organization - */ - "GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}": ReadonlyOperation<"/orgs/{org}/projectsV2/{project_number}/fields/{field_id}", "get">; - /** - * @see https://docs.github.com/rest/projects/items#list-items-for-an-organization-owned-project - */ - "GET /orgs/{org}/projectsV2/{project_number}/items": ReadonlyOperation<"/orgs/{org}/projectsV2/{project_number}/items", "get">; - /** - * @see https://docs.github.com/rest/projects/items#get-an-item-for-an-organization-owned-project - */ - "GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}": ReadonlyOperation<"/orgs/{org}/projectsV2/{project_number}/items/{item_id}", "get">; - /** - * @see https://docs.github.com/rest/orgs/custom-properties#get-all-custom-properties-for-an-organization - */ - "GET /orgs/{org}/properties/schema": ReadonlyOperation<"/orgs/{org}/properties/schema", "get">; - /** - * @see https://docs.github.com/rest/orgs/custom-properties#get-a-custom-property-for-an-organization - */ - "GET /orgs/{org}/properties/schema/{custom_property_name}": ReadonlyOperation<"/orgs/{org}/properties/schema/{custom_property_name}", "get">; - /** - * @see https://docs.github.com/rest/orgs/custom-properties#list-custom-property-values-for-organization-repositories - */ - "GET /orgs/{org}/properties/values": ReadonlyOperation<"/orgs/{org}/properties/values", "get">; - /** - * @see https://docs.github.com/rest/orgs/members#list-public-organization-members - */ - "GET /orgs/{org}/public_members": ReadonlyOperation<"/orgs/{org}/public_members", "get">; - /** - * @see https://docs.github.com/rest/orgs/members#check-public-organization-membership-for-a-user - */ - "GET /orgs/{org}/public_members/{username}": ReadonlyOperation<"/orgs/{org}/public_members/{username}", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#list-organization-repositories - */ - "GET /orgs/{org}/repos": ReadonlyOperation<"/orgs/{org}/repos", "get">; - /** - * @see https://docs.github.com/rest/orgs/rules#get-all-organization-repository-rulesets - */ - "GET /orgs/{org}/rulesets": ReadonlyOperation<"/orgs/{org}/rulesets", "get">; - /** - * @see https://docs.github.com/rest/orgs/rule-suites#list-organization-rule-suites - */ - "GET /orgs/{org}/rulesets/rule-suites": ReadonlyOperation<"/orgs/{org}/rulesets/rule-suites", "get">; - /** - * @see https://docs.github.com/rest/orgs/rule-suites#get-an-organization-rule-suite - */ - "GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}": ReadonlyOperation<"/orgs/{org}/rulesets/rule-suites/{rule_suite_id}", "get">; - /** - * @see https://docs.github.com/rest/orgs/rules#get-an-organization-repository-ruleset - */ - "GET /orgs/{org}/rulesets/{ruleset_id}": ReadonlyOperation<"/orgs/{org}/rulesets/{ruleset_id}", "get">; - /** - * @see https://docs.github.com/rest/orgs/rules#get-organization-ruleset-history - */ - "GET /orgs/{org}/rulesets/{ruleset_id}/history": ReadonlyOperation<"/orgs/{org}/rulesets/{ruleset_id}/history", "get">; - /** - * @see https://docs.github.com/rest/orgs/rules#get-organization-ruleset-version - */ - "GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}": ReadonlyOperation<"/orgs/{org}/rulesets/{ruleset_id}/history/{version_id}", "get">; - /** - * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-secret-scanning-alerts-for-an-organization - */ - "GET /orgs/{org}/secret-scanning/alerts": ReadonlyOperation<"/orgs/{org}/secret-scanning/alerts", "get">; - /** - * @see https://docs.github.com/rest/secret-scanning/push-protection#list-organization-pattern-configurations - */ - "GET /orgs/{org}/secret-scanning/pattern-configurations": ReadonlyOperation<"/orgs/{org}/secret-scanning/pattern-configurations", "get">; - /** - * @see https://docs.github.com/rest/security-advisories/repository-advisories#list-repository-security-advisories-for-an-organization - */ - "GET /orgs/{org}/security-advisories": ReadonlyOperation<"/orgs/{org}/security-advisories", "get">; - /** - * @see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams - */ - "GET /orgs/{org}/security-managers": ReadonlyOperation<"/orgs/{org}/security-managers", "get">; - /** - * @see https://docs.github.com/rest/billing/billing#get-github-actions-billing-for-an-organization - */ - "GET /orgs/{org}/settings/billing/actions": ReadonlyOperation<"/orgs/{org}/settings/billing/actions", "get">; - /** - * @see https://docs.github.com/rest/billing/billing#get-github-packages-billing-for-an-organization - */ - "GET /orgs/{org}/settings/billing/packages": ReadonlyOperation<"/orgs/{org}/settings/billing/packages", "get">; - /** - * @see https://docs.github.com/rest/billing/billing#get-shared-storage-billing-for-an-organization - */ - "GET /orgs/{org}/settings/billing/shared-storage": ReadonlyOperation<"/orgs/{org}/settings/billing/shared-storage", "get">; - /** - * @see https://docs.github.com/rest/orgs/orgs#get-immutable-releases-settings-for-an-organization - */ - "GET /orgs/{org}/settings/immutable-releases": ReadonlyOperation<"/orgs/{org}/settings/immutable-releases", "get">; - /** - * @see https://docs.github.com/rest/orgs/orgs#list-selected-repositories-for-immutable-releases-enforcement - */ - "GET /orgs/{org}/settings/immutable-releases/repositories": ReadonlyOperation<"/orgs/{org}/settings/immutable-releases/repositories", "get">; - /** - * @see https://docs.github.com/rest/orgs/network-configurations#list-hosted-compute-network-configurations-for-an-organization - */ - "GET /orgs/{org}/settings/network-configurations": ReadonlyOperation<"/orgs/{org}/settings/network-configurations", "get">; - /** - * @see https://docs.github.com/rest/orgs/network-configurations#get-a-hosted-compute-network-configuration-for-an-organization - */ - "GET /orgs/{org}/settings/network-configurations/{network_configuration_id}": ReadonlyOperation<"/orgs/{org}/settings/network-configurations/{network_configuration_id}", "get">; - /** - * @see https://docs.github.com/rest/orgs/network-configurations#get-a-hosted-compute-network-settings-resource-for-an-organization - */ - "GET /orgs/{org}/settings/network-settings/{network_settings_id}": ReadonlyOperation<"/orgs/{org}/settings/network-settings/{network_settings_id}", "get">; - /** - * @see https://docs.github.com/rest/copilot/copilot-metrics#get-copilot-metrics-for-a-team - */ - "GET /orgs/{org}/team/{team_slug}/copilot/metrics": ReadonlyOperation<"/orgs/{org}/team/{team_slug}/copilot/metrics", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#list-teams - */ - "GET /orgs/{org}/teams": ReadonlyOperation<"/orgs/{org}/teams", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#get-a-team-by-name - */ - "GET /orgs/{org}/teams/{team_slug}": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}", "get">; - /** - * @see https://docs.github.com/rest/teams/discussions#list-discussions - */ - "GET /orgs/{org}/teams/{team_slug}/discussions": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/discussions", "get">; - /** - * @see https://docs.github.com/rest/teams/discussions#get-a-discussion - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "get">; - /** - * @see https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "get">; - /** - * @see https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "get">; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "get">; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "get">; - /** - * @see https://docs.github.com/rest/teams/members#list-pending-team-invitations - */ - "GET /orgs/{org}/teams/{team_slug}/invitations": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/invitations", "get">; - /** - * @see https://docs.github.com/rest/teams/members#list-team-members - */ - "GET /orgs/{org}/teams/{team_slug}/members": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/members", "get">; - /** - * @see https://docs.github.com/rest/teams/members#get-team-membership-for-a-user - */ - "GET /orgs/{org}/teams/{team_slug}/memberships/{username}": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#list-team-projects - */ - "GET /orgs/{org}/teams/{team_slug}/projects": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/projects", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-project - */ - "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#list-team-repositories - */ - "GET /orgs/{org}/teams/{team_slug}/repos": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/repos", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-repository - */ - "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#list-child-teams - */ - "GET /orgs/{org}/teams/{team_slug}/teams": ReadonlyOperation<"/orgs/{org}/teams/{team_slug}/teams", "get">; - /** - * @see https://docs.github.com/rest/projects-classic/columns#get-a-project-column - */ - "GET /projects/columns/{column_id}": ReadonlyOperation<"/projects/columns/{column_id}", "get">; - /** - * @see https://docs.github.com/rest/projects-classic/projects#get-a-project - */ - "GET /projects/{project_id}": ReadonlyOperation<"/projects/{project_id}", "get">; - /** - * @see https://docs.github.com/rest/projects-classic/collaborators#list-project-collaborators - */ - "GET /projects/{project_id}/collaborators": ReadonlyOperation<"/projects/{project_id}/collaborators", "get">; - /** - * @see https://docs.github.com/rest/projects-classic/collaborators#get-project-permission-for-a-user - */ - "GET /projects/{project_id}/collaborators/{username}/permission": ReadonlyOperation<"/projects/{project_id}/collaborators/{username}/permission", "get">; - /** - * @see https://docs.github.com/rest/rate-limit/rate-limit#get-rate-limit-status-for-the-authenticated-user - */ - "GET /rate_limit": ReadonlyOperation<"/rate_limit", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#get-a-repository - */ - "GET /repos/{owner}/{repo}": ReadonlyOperation<"/repos/{owner}/{repo}", "get">; - /** - * @see https://docs.github.com/rest/actions/artifacts#list-artifacts-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/artifacts": ReadonlyOperation<"/repos/{owner}/{repo}/actions/artifacts", "get">; - /** - * @see https://docs.github.com/rest/actions/artifacts#get-an-artifact - */ - "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}": ReadonlyOperation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}", "get">; - /** - * @see https://docs.github.com/rest/actions/artifacts#download-an-artifact - */ - "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}": ReadonlyOperation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}", "get">; - /** - * @see https://docs.github.com/rest/actions/cache#get-github-actions-cache-usage-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/cache/usage": ReadonlyOperation<"/repos/{owner}/{repo}/actions/cache/usage", "get">; - /** - * @see https://docs.github.com/rest/actions/cache#list-github-actions-caches-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/caches": ReadonlyOperation<"/repos/{owner}/{repo}/actions/caches", "get">; - /** - * @see https://docs.github.com/rest/actions/workflow-jobs#get-a-job-for-a-workflow-run - */ - "GET /repos/{owner}/{repo}/actions/jobs/{job_id}": ReadonlyOperation<"/repos/{owner}/{repo}/actions/jobs/{job_id}", "get">; - /** - * @see https://docs.github.com/rest/actions/workflow-jobs#download-job-logs-for-a-workflow-run - */ - "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs": ReadonlyOperation<"/repos/{owner}/{repo}/actions/jobs/{job_id}/logs", "get">; - /** - * @see https://docs.github.com/rest/actions/oidc#get-the-customization-template-for-an-oidc-subject-claim-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/oidc/customization/sub": ReadonlyOperation<"/repos/{owner}/{repo}/actions/oidc/customization/sub", "get">; - /** - * @see https://docs.github.com/rest/actions/secrets#list-repository-organization-secrets - */ - "GET /repos/{owner}/{repo}/actions/organization-secrets": ReadonlyOperation<"/repos/{owner}/{repo}/actions/organization-secrets", "get">; - /** - * @see https://docs.github.com/rest/actions/variables#list-repository-organization-variables - */ - "GET /repos/{owner}/{repo}/actions/organization-variables": ReadonlyOperation<"/repos/{owner}/{repo}/actions/organization-variables", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-github-actions-permissions-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/permissions": ReadonlyOperation<"/repos/{owner}/{repo}/actions/permissions", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-the-level-of-access-for-workflows-outside-of-the-repository - */ - "GET /repos/{owner}/{repo}/actions/permissions/access": ReadonlyOperation<"/repos/{owner}/{repo}/actions/permissions/access", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-artifact-and-log-retention-settings-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/permissions/artifact-and-log-retention": ReadonlyOperation<"/repos/{owner}/{repo}/actions/permissions/artifact-and-log-retention", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-fork-pr-contributor-approval-permissions-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/permissions/fork-pr-contributor-approval": ReadonlyOperation<"/repos/{owner}/{repo}/actions/permissions/fork-pr-contributor-approval", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-private-repo-fork-pr-workflow-settings-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/permissions/fork-pr-workflows-private-repos": ReadonlyOperation<"/repos/{owner}/{repo}/actions/permissions/fork-pr-workflows-private-repos", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/permissions/selected-actions": ReadonlyOperation<"/repos/{owner}/{repo}/actions/permissions/selected-actions", "get">; - /** - * @see https://docs.github.com/rest/actions/permissions#get-default-workflow-permissions-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/permissions/workflow": ReadonlyOperation<"/repos/{owner}/{repo}/actions/permissions/workflow", "get">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#list-self-hosted-runners-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runners": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runners", "get">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#list-runner-applications-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runners/downloads": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runners/downloads", "get">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#get-a-self-hosted-runner-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runners/{runner_id}": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runners/{runner_id}", "get">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#list-labels-for-a-self-hosted-runner-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "get">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runs": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runs", "get">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#get-a-workflow-run - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runs/{run_id}", "get">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#get-the-review-history-for-a-workflow-run - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runs/{run_id}/approvals", "get">; - /** - * @see https://docs.github.com/rest/actions/artifacts#list-workflow-run-artifacts - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "get">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#get-a-workflow-run-attempt - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}", "get">; - /** - * @see https://docs.github.com/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run-attempt - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "get">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#download-workflow-run-attempt-logs - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs", "get">; - /** - * @see https://docs.github.com/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "get">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#download-workflow-run-logs - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runs/{run_id}/logs", "get">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#get-pending-deployments-for-a-workflow-run - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", "get">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#get-workflow-run-usage - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing": ReadonlyOperation<"/repos/{owner}/{repo}/actions/runs/{run_id}/timing", "get">; - /** - * @see https://docs.github.com/rest/actions/secrets#list-repository-secrets - */ - "GET /repos/{owner}/{repo}/actions/secrets": ReadonlyOperation<"/repos/{owner}/{repo}/actions/secrets", "get">; - /** - * @see https://docs.github.com/rest/actions/secrets#get-a-repository-public-key - */ - "GET /repos/{owner}/{repo}/actions/secrets/public-key": ReadonlyOperation<"/repos/{owner}/{repo}/actions/secrets/public-key", "get">; - /** - * @see https://docs.github.com/rest/actions/secrets#get-a-repository-secret - */ - "GET /repos/{owner}/{repo}/actions/secrets/{secret_name}": ReadonlyOperation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "get">; - /** - * @see https://docs.github.com/rest/actions/variables#list-repository-variables - */ - "GET /repos/{owner}/{repo}/actions/variables": ReadonlyOperation<"/repos/{owner}/{repo}/actions/variables", "get">; - /** - * @see https://docs.github.com/rest/actions/variables#get-a-repository-variable - */ - "GET /repos/{owner}/{repo}/actions/variables/{name}": ReadonlyOperation<"/repos/{owner}/{repo}/actions/variables/{name}", "get">; - /** - * @see https://docs.github.com/rest/actions/workflows#list-repository-workflows - */ - "GET /repos/{owner}/{repo}/actions/workflows": ReadonlyOperation<"/repos/{owner}/{repo}/actions/workflows", "get">; - /** - * @see https://docs.github.com/rest/actions/workflows#get-a-workflow - */ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}": ReadonlyOperation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}", "get">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-workflow - */ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": ReadonlyOperation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "get">; - /** - * @see https://docs.github.com/rest/actions/workflows#get-workflow-usage - */ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing": ReadonlyOperation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#list-repository-activities - */ - "GET /repos/{owner}/{repo}/activity": ReadonlyOperation<"/repos/{owner}/{repo}/activity", "get">; - /** - * @see https://docs.github.com/rest/issues/assignees#list-assignees - */ - "GET /repos/{owner}/{repo}/assignees": ReadonlyOperation<"/repos/{owner}/{repo}/assignees", "get">; - /** - * @see https://docs.github.com/rest/issues/assignees#check-if-a-user-can-be-assigned - */ - "GET /repos/{owner}/{repo}/assignees/{assignee}": ReadonlyOperation<"/repos/{owner}/{repo}/assignees/{assignee}", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#list-attestations - */ - "GET /repos/{owner}/{repo}/attestations/{subject_digest}": ReadonlyOperation<"/repos/{owner}/{repo}/attestations/{subject_digest}", "get">; - /** - * @see https://docs.github.com/rest/repos/autolinks#get-all-autolinks-of-a-repository - */ - "GET /repos/{owner}/{repo}/autolinks": ReadonlyOperation<"/repos/{owner}/{repo}/autolinks", "get">; - /** - * @see https://docs.github.com/rest/repos/autolinks#get-an-autolink-reference-of-a-repository - */ - "GET /repos/{owner}/{repo}/autolinks/{autolink_id}": ReadonlyOperation<"/repos/{owner}/{repo}/autolinks/{autolink_id}", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#check-if-dependabot-security-updates-are-enabled-for-a-repository - */ - "GET /repos/{owner}/{repo}/automated-security-fixes": ReadonlyOperation<"/repos/{owner}/{repo}/automated-security-fixes", "get">; - /** - * @see https://docs.github.com/rest/branches/branches#list-branches - */ - "GET /repos/{owner}/{repo}/branches": ReadonlyOperation<"/repos/{owner}/{repo}/branches", "get">; - /** - * @see https://docs.github.com/rest/branches/branches#get-a-branch - */ - "GET /repos/{owner}/{repo}/branches/{branch}": ReadonlyOperation<"/repos/{owner}/{repo}/branches/{branch}", "get">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#get-branch-protection - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection": ReadonlyOperation<"/repos/{owner}/{repo}/branches/{branch}/protection", "get">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#get-admin-branch-protection - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": ReadonlyOperation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "get">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#get-pull-request-review-protection - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": ReadonlyOperation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "get">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#get-commit-signature-protection - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": ReadonlyOperation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "get">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#get-status-checks-protection - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": ReadonlyOperation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "get">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#get-all-status-check-contexts - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": ReadonlyOperation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "get">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#get-access-restrictions - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions": ReadonlyOperation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions", "get">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#get-apps-with-access-to-the-protected-branch - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": ReadonlyOperation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "get">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#get-teams-with-access-to-the-protected-branch - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": ReadonlyOperation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "get">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#get-users-with-access-to-the-protected-branch - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": ReadonlyOperation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "get">; - /** - * @see https://docs.github.com/rest/checks/runs#get-a-check-run - */ - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}": ReadonlyOperation<"/repos/{owner}/{repo}/check-runs/{check_run_id}", "get">; - /** - * @see https://docs.github.com/rest/checks/runs#list-check-run-annotations - */ - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": ReadonlyOperation<"/repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "get">; - /** - * @see https://docs.github.com/rest/checks/suites#get-a-check-suite - */ - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}": ReadonlyOperation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}", "get">; - /** - * @see https://docs.github.com/rest/checks/runs#list-check-runs-in-a-check-suite - */ - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": ReadonlyOperation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "get">; - /** - * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-alerts-for-a-repository - */ - "GET /repos/{owner}/{repo}/code-scanning/alerts": ReadonlyOperation<"/repos/{owner}/{repo}/code-scanning/alerts", "get">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#get-a-code-scanning-alert - * @deprecated "alert_id" is now "alert_number" - */ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_id}": ReadonlyOperation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "get">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#get-a-code-scanning-alert - */ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": ReadonlyOperation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "get">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#get-the-status-of-an-autofix-for-a-code-scanning-alert - */ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix": ReadonlyOperation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix", "get">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#list-instances-of-a-code-scanning-alert - */ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances": ReadonlyOperation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "get">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#list-code-scanning-analyses-for-a-repository - */ - "GET /repos/{owner}/{repo}/code-scanning/analyses": ReadonlyOperation<"/repos/{owner}/{repo}/code-scanning/analyses", "get">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#get-a-code-scanning-analysis-for-a-repository - */ - "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}": ReadonlyOperation<"/repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}", "get">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#list-codeql-databases-for-a-repository - */ - "GET /repos/{owner}/{repo}/code-scanning/codeql/databases": ReadonlyOperation<"/repos/{owner}/{repo}/code-scanning/codeql/databases", "get">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#get-a-codeql-database-for-a-repository - */ - "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}": ReadonlyOperation<"/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}", "get">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#get-the-summary-of-a-codeql-variant-analysis - */ - "GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}": ReadonlyOperation<"/repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}", "get">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#get-the-analysis-status-of-a-repository-in-a-codeql-variant-analysis - */ - "GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}": ReadonlyOperation<"/repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}", "get">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#get-a-code-scanning-default-setup-configuration - */ - "GET /repos/{owner}/{repo}/code-scanning/default-setup": ReadonlyOperation<"/repos/{owner}/{repo}/code-scanning/default-setup", "get">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#get-information-about-a-sarif-upload - */ - "GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}": ReadonlyOperation<"/repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}", "get">; - /** - * @see https://docs.github.com/rest/code-security/configurations#get-the-code-security-configuration-associated-with-a-repository - */ - "GET /repos/{owner}/{repo}/code-security-configuration": ReadonlyOperation<"/repos/{owner}/{repo}/code-security-configuration", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#list-codeowners-errors - */ - "GET /repos/{owner}/{repo}/codeowners/errors": ReadonlyOperation<"/repos/{owner}/{repo}/codeowners/errors", "get">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#list-codespaces-in-a-repository-for-the-authenticated-user - */ - "GET /repos/{owner}/{repo}/codespaces": ReadonlyOperation<"/repos/{owner}/{repo}/codespaces", "get">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#list-devcontainer-configurations-in-a-repository-for-the-authenticated-user - */ - "GET /repos/{owner}/{repo}/codespaces/devcontainers": ReadonlyOperation<"/repos/{owner}/{repo}/codespaces/devcontainers", "get">; - /** - * @see https://docs.github.com/rest/codespaces/machines#list-available-machine-types-for-a-repository - */ - "GET /repos/{owner}/{repo}/codespaces/machines": ReadonlyOperation<"/repos/{owner}/{repo}/codespaces/machines", "get">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#get-default-attributes-for-a-codespace - */ - "GET /repos/{owner}/{repo}/codespaces/new": ReadonlyOperation<"/repos/{owner}/{repo}/codespaces/new", "get">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#check-if-permissions-defined-by-a-devcontainer-have-been-accepted-by-the-authenticated-user - */ - "GET /repos/{owner}/{repo}/codespaces/permissions_check": ReadonlyOperation<"/repos/{owner}/{repo}/codespaces/permissions_check", "get">; - /** - * @see https://docs.github.com/rest/codespaces/repository-secrets#list-repository-secrets - */ - "GET /repos/{owner}/{repo}/codespaces/secrets": ReadonlyOperation<"/repos/{owner}/{repo}/codespaces/secrets", "get">; - /** - * @see https://docs.github.com/rest/codespaces/repository-secrets#get-a-repository-public-key - */ - "GET /repos/{owner}/{repo}/codespaces/secrets/public-key": ReadonlyOperation<"/repos/{owner}/{repo}/codespaces/secrets/public-key", "get">; - /** - * @see https://docs.github.com/rest/codespaces/repository-secrets#get-a-repository-secret - */ - "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}": ReadonlyOperation<"/repos/{owner}/{repo}/codespaces/secrets/{secret_name}", "get">; - /** - * @see https://docs.github.com/rest/collaborators/collaborators#list-repository-collaborators - */ - "GET /repos/{owner}/{repo}/collaborators": ReadonlyOperation<"/repos/{owner}/{repo}/collaborators", "get">; - /** - * @see https://docs.github.com/rest/collaborators/collaborators#check-if-a-user-is-a-repository-collaborator - */ - "GET /repos/{owner}/{repo}/collaborators/{username}": ReadonlyOperation<"/repos/{owner}/{repo}/collaborators/{username}", "get">; - /** - * @see https://docs.github.com/rest/collaborators/collaborators#get-repository-permissions-for-a-user - */ - "GET /repos/{owner}/{repo}/collaborators/{username}/permission": ReadonlyOperation<"/repos/{owner}/{repo}/collaborators/{username}/permission", "get">; - /** - * @see https://docs.github.com/rest/commits/comments#list-commit-comments-for-a-repository - */ - "GET /repos/{owner}/{repo}/comments": ReadonlyOperation<"/repos/{owner}/{repo}/comments", "get">; - /** - * @see https://docs.github.com/rest/commits/comments#get-a-commit-comment - */ - "GET /repos/{owner}/{repo}/comments/{comment_id}": ReadonlyOperation<"/repos/{owner}/{repo}/comments/{comment_id}", "get">; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-commit-comment - */ - "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions": ReadonlyOperation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions", "get">; - /** - * @see https://docs.github.com/rest/commits/commits#list-commits - */ - "GET /repos/{owner}/{repo}/commits": ReadonlyOperation<"/repos/{owner}/{repo}/commits", "get">; - /** - * @see https://docs.github.com/rest/commits/commits#list-branches-for-head-commit - */ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head": ReadonlyOperation<"/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", "get">; - /** - * @see https://docs.github.com/rest/commits/comments#list-commit-comments - */ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments": ReadonlyOperation<"/repos/{owner}/{repo}/commits/{commit_sha}/comments", "get">; - /** - * @see https://docs.github.com/rest/commits/commits#list-pull-requests-associated-with-a-commit - */ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls": ReadonlyOperation<"/repos/{owner}/{repo}/commits/{commit_sha}/pulls", "get">; - /** - * @see https://docs.github.com/rest/commits/commits#get-a-commit - */ - "GET /repos/{owner}/{repo}/commits/{ref}": ReadonlyOperation<"/repos/{owner}/{repo}/commits/{ref}", "get">; - /** - * @see https://docs.github.com/rest/checks/runs#list-check-runs-for-a-git-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/check-runs": ReadonlyOperation<"/repos/{owner}/{repo}/commits/{ref}/check-runs", "get">; - /** - * @see https://docs.github.com/rest/checks/suites#list-check-suites-for-a-git-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/check-suites": ReadonlyOperation<"/repos/{owner}/{repo}/commits/{ref}/check-suites", "get">; - /** - * @see https://docs.github.com/rest/commits/statuses#get-the-combined-status-for-a-specific-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/status": ReadonlyOperation<"/repos/{owner}/{repo}/commits/{ref}/status", "get">; - /** - * @see https://docs.github.com/rest/commits/statuses#list-commit-statuses-for-a-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/statuses": ReadonlyOperation<"/repos/{owner}/{repo}/commits/{ref}/statuses", "get">; - /** - * @see https://docs.github.com/rest/metrics/community#get-community-profile-metrics - */ - "GET /repos/{owner}/{repo}/community/profile": ReadonlyOperation<"/repos/{owner}/{repo}/community/profile", "get">; - /** - * @see https://docs.github.com/rest/commits/commits#compare-two-commits - */ - "GET /repos/{owner}/{repo}/compare/{basehead}": ReadonlyOperation<"/repos/{owner}/{repo}/compare/{basehead}", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#compare-two-commits - */ - "GET /repos/{owner}/{repo}/compare/{base}...{head}": ReadonlyOperation<"/repos/{owner}/{repo}/compare/{base}...{head}", "get">; - /** - * @see https://docs.github.com/rest/repos/contents#get-repository-content - */ - "GET /repos/{owner}/{repo}/contents/{path}": ReadonlyOperation<"/repos/{owner}/{repo}/contents/{path}", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#list-repository-contributors - */ - "GET /repos/{owner}/{repo}/contributors": ReadonlyOperation<"/repos/{owner}/{repo}/contributors", "get">; - /** - * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-a-repository - */ - "GET /repos/{owner}/{repo}/dependabot/alerts": ReadonlyOperation<"/repos/{owner}/{repo}/dependabot/alerts", "get">; - /** - * @see https://docs.github.com/rest/dependabot/alerts#get-a-dependabot-alert - */ - "GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}": ReadonlyOperation<"/repos/{owner}/{repo}/dependabot/alerts/{alert_number}", "get">; - /** - * @see https://docs.github.com/rest/dependabot/secrets#list-repository-secrets - */ - "GET /repos/{owner}/{repo}/dependabot/secrets": ReadonlyOperation<"/repos/{owner}/{repo}/dependabot/secrets", "get">; - /** - * @see https://docs.github.com/rest/dependabot/secrets#get-a-repository-public-key - */ - "GET /repos/{owner}/{repo}/dependabot/secrets/public-key": ReadonlyOperation<"/repos/{owner}/{repo}/dependabot/secrets/public-key", "get">; - /** - * @see https://docs.github.com/rest/dependabot/secrets#get-a-repository-secret - */ - "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}": ReadonlyOperation<"/repos/{owner}/{repo}/dependabot/secrets/{secret_name}", "get">; - /** - * @see https://docs.github.com/rest/dependency-graph/dependency-review#get-a-diff-of-the-dependencies-between-commits - */ - "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}": ReadonlyOperation<"/repos/{owner}/{repo}/dependency-graph/compare/{basehead}", "get">; - /** - * @see https://docs.github.com/rest/dependency-graph/sboms#export-a-software-bill-of-materials-sbom-for-a-repository - */ - "GET /repos/{owner}/{repo}/dependency-graph/sbom": ReadonlyOperation<"/repos/{owner}/{repo}/dependency-graph/sbom", "get">; - /** - * @see https://docs.github.com/rest/deployments/deployments#list-deployments - */ - "GET /repos/{owner}/{repo}/deployments": ReadonlyOperation<"/repos/{owner}/{repo}/deployments", "get">; - /** - * @see https://docs.github.com/rest/deployments/deployments#get-a-deployment - */ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}": ReadonlyOperation<"/repos/{owner}/{repo}/deployments/{deployment_id}", "get">; - /** - * @see https://docs.github.com/rest/deployments/statuses#list-deployment-statuses - */ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": ReadonlyOperation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "get">; - /** - * @see https://docs.github.com/rest/deployments/statuses#get-a-deployment-status - */ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}": ReadonlyOperation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}", "get">; - /** - * @see https://docs.github.com/rest/deployments/environments#list-environments - */ - "GET /repos/{owner}/{repo}/environments": ReadonlyOperation<"/repos/{owner}/{repo}/environments", "get">; - /** - * @see https://docs.github.com/rest/deployments/environments#get-an-environment - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}": ReadonlyOperation<"/repos/{owner}/{repo}/environments/{environment_name}", "get">; - /** - * @see https://docs.github.com/rest/deployments/branch-policies#list-deployment-branch-policies - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies": ReadonlyOperation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", "get">; - /** - * @see https://docs.github.com/rest/deployments/branch-policies#get-a-deployment-branch-policy - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}": ReadonlyOperation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}", "get">; - /** - * @see https://docs.github.com/rest/deployments/protection-rules#get-all-deployment-protection-rules-for-an-environment - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules": ReadonlyOperation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules", "get">; - /** - * @see https://docs.github.com/rest/deployments/protection-rules#list-custom-deployment-rule-integrations-available-for-an-environment - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps": ReadonlyOperation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps", "get">; - /** - * @see https://docs.github.com/rest/deployments/protection-rules#get-a-custom-deployment-protection-rule - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}": ReadonlyOperation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}", "get">; - /** - * @see https://docs.github.com/rest/actions/secrets#list-environment-secrets - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets": ReadonlyOperation<"/repos/{owner}/{repo}/environments/{environment_name}/secrets", "get">; - /** - * @see https://docs.github.com/rest/actions/secrets#get-an-environment-public-key - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key": ReadonlyOperation<"/repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key", "get">; - /** - * @see https://docs.github.com/rest/actions/secrets#get-an-environment-secret - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}": ReadonlyOperation<"/repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}", "get">; - /** - * @see https://docs.github.com/rest/actions/variables#list-environment-variables - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/variables": ReadonlyOperation<"/repos/{owner}/{repo}/environments/{environment_name}/variables", "get">; - /** - * @see https://docs.github.com/rest/actions/variables#get-an-environment-variable - */ - "GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}": ReadonlyOperation<"/repos/{owner}/{repo}/environments/{environment_name}/variables/{name}", "get">; - /** - * @see https://docs.github.com/rest/activity/events#list-repository-events - */ - "GET /repos/{owner}/{repo}/events": ReadonlyOperation<"/repos/{owner}/{repo}/events", "get">; - /** - * @see https://docs.github.com/rest/repos/forks#list-forks - */ - "GET /repos/{owner}/{repo}/forks": ReadonlyOperation<"/repos/{owner}/{repo}/forks", "get">; - /** - * @see https://docs.github.com/rest/git/blobs#get-a-blob - */ - "GET /repos/{owner}/{repo}/git/blobs/{file_sha}": ReadonlyOperation<"/repos/{owner}/{repo}/git/blobs/{file_sha}", "get">; - /** - * @see https://docs.github.com/rest/git/commits#get-a-commit-object - */ - "GET /repos/{owner}/{repo}/git/commits/{commit_sha}": ReadonlyOperation<"/repos/{owner}/{repo}/git/commits/{commit_sha}", "get">; - /** - * @see https://docs.github.com/rest/git/refs#list-matching-references - */ - "GET /repos/{owner}/{repo}/git/matching-refs/{ref}": ReadonlyOperation<"/repos/{owner}/{repo}/git/matching-refs/{ref}", "get">; - /** - * @see https://docs.github.com/rest/git/refs#get-a-reference - */ - "GET /repos/{owner}/{repo}/git/ref/{ref}": ReadonlyOperation<"/repos/{owner}/{repo}/git/ref/{ref}", "get">; - /** - * @see https://docs.github.com/rest/git/tags#get-a-tag - */ - "GET /repos/{owner}/{repo}/git/tags/{tag_sha}": ReadonlyOperation<"/repos/{owner}/{repo}/git/tags/{tag_sha}", "get">; - /** - * @see https://docs.github.com/rest/git/trees#get-a-tree - */ - "GET /repos/{owner}/{repo}/git/trees/{tree_sha}": ReadonlyOperation<"/repos/{owner}/{repo}/git/trees/{tree_sha}", "get">; - /** - * @see https://docs.github.com/rest/repos/webhooks#list-repository-webhooks - */ - "GET /repos/{owner}/{repo}/hooks": ReadonlyOperation<"/repos/{owner}/{repo}/hooks", "get">; - /** - * @see https://docs.github.com/rest/repos/webhooks#get-a-repository-webhook - */ - "GET /repos/{owner}/{repo}/hooks/{hook_id}": ReadonlyOperation<"/repos/{owner}/{repo}/hooks/{hook_id}", "get">; - /** - * @see https://docs.github.com/rest/repos/webhooks#get-a-webhook-configuration-for-a-repository - */ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/config": ReadonlyOperation<"/repos/{owner}/{repo}/hooks/{hook_id}/config", "get">; - /** - * @see https://docs.github.com/rest/repos/webhooks#list-deliveries-for-a-repository-webhook - */ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries": ReadonlyOperation<"/repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "get">; - /** - * @see https://docs.github.com/rest/repos/webhooks#get-a-delivery-for-a-repository-webhook - */ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}": ReadonlyOperation<"/repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#check-if-immutable-releases-are-enabled-for-a-repository - */ - "GET /repos/{owner}/{repo}/immutable-releases": ReadonlyOperation<"/repos/{owner}/{repo}/immutable-releases", "get">; - /** - * @see https://docs.github.com/rest/migrations/source-imports#get-an-import-status - */ - "GET /repos/{owner}/{repo}/import": ReadonlyOperation<"/repos/{owner}/{repo}/import", "get">; - /** - * @see https://docs.github.com/rest/migrations/source-imports#get-commit-authors - */ - "GET /repos/{owner}/{repo}/import/authors": ReadonlyOperation<"/repos/{owner}/{repo}/import/authors", "get">; - /** - * @see https://docs.github.com/rest/migrations/source-imports#get-large-files - */ - "GET /repos/{owner}/{repo}/import/large_files": ReadonlyOperation<"/repos/{owner}/{repo}/import/large_files", "get">; - /** - * @see https://docs.github.com/rest/apps/apps#get-a-repository-installation-for-the-authenticated-app - */ - "GET /repos/{owner}/{repo}/installation": ReadonlyOperation<"/repos/{owner}/{repo}/installation", "get">; - /** - * @see https://docs.github.com/rest/interactions/repos#get-interaction-restrictions-for-a-repository - */ - "GET /repos/{owner}/{repo}/interaction-limits": ReadonlyOperation<"/repos/{owner}/{repo}/interaction-limits", "get">; - /** - * @see https://docs.github.com/rest/collaborators/invitations#list-repository-invitations - */ - "GET /repos/{owner}/{repo}/invitations": ReadonlyOperation<"/repos/{owner}/{repo}/invitations", "get">; - /** - * @see https://docs.github.com/rest/issues/issues#list-repository-issues - */ - "GET /repos/{owner}/{repo}/issues": ReadonlyOperation<"/repos/{owner}/{repo}/issues", "get">; - /** - * @see https://docs.github.com/rest/issues/comments#list-issue-comments-for-a-repository - */ - "GET /repos/{owner}/{repo}/issues/comments": ReadonlyOperation<"/repos/{owner}/{repo}/issues/comments", "get">; - /** - * @see https://docs.github.com/rest/issues/comments#get-an-issue-comment - */ - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}": ReadonlyOperation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "get">; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-an-issue-comment - */ - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": ReadonlyOperation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "get">; - /** - * @see https://docs.github.com/rest/issues/events#list-issue-events-for-a-repository - */ - "GET /repos/{owner}/{repo}/issues/events": ReadonlyOperation<"/repos/{owner}/{repo}/issues/events", "get">; - /** - * @see https://docs.github.com/rest/issues/events#get-an-issue-event - */ - "GET /repos/{owner}/{repo}/issues/events/{event_id}": ReadonlyOperation<"/repos/{owner}/{repo}/issues/events/{event_id}", "get">; - /** - * @see https://docs.github.com/rest/issues/issues#get-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}": ReadonlyOperation<"/repos/{owner}/{repo}/issues/{issue_number}", "get">; - /** - * @see https://docs.github.com/rest/issues/assignees#check-if-a-user-can-be-assigned-to-a-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}": ReadonlyOperation<"/repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}", "get">; - /** - * @see https://docs.github.com/rest/issues/comments#list-issue-comments - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/comments": ReadonlyOperation<"/repos/{owner}/{repo}/issues/{issue_number}/comments", "get">; - /** - * @see https://docs.github.com/rest/issues/issue-dependencies#list-dependencies-an-issue-is-blocked-by - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by": ReadonlyOperation<"/repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by", "get">; - /** - * @see https://docs.github.com/rest/issues/issue-dependencies#list-dependencies-an-issue-is-blocking - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking": ReadonlyOperation<"/repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking", "get">; - /** - * @see https://docs.github.com/rest/issues/events#list-issue-events - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/events": ReadonlyOperation<"/repos/{owner}/{repo}/issues/{issue_number}/events", "get">; - /** - * @see https://docs.github.com/rest/issues/labels#list-labels-for-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/labels": ReadonlyOperation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "get">; - /** - * @see https://docs.github.com/rest/issues/sub-issues#get-parent-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/parent": ReadonlyOperation<"/repos/{owner}/{repo}/issues/{issue_number}/parent", "get">; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions": ReadonlyOperation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions", "get">; - /** - * @see https://docs.github.com/rest/issues/sub-issues#list-sub-issues - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues": ReadonlyOperation<"/repos/{owner}/{repo}/issues/{issue_number}/sub_issues", "get">; - /** - * @see https://docs.github.com/rest/issues/timeline#list-timeline-events-for-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline": ReadonlyOperation<"/repos/{owner}/{repo}/issues/{issue_number}/timeline", "get">; - /** - * @see https://docs.github.com/rest/deploy-keys/deploy-keys#list-deploy-keys - */ - "GET /repos/{owner}/{repo}/keys": ReadonlyOperation<"/repos/{owner}/{repo}/keys", "get">; - /** - * @see https://docs.github.com/rest/deploy-keys/deploy-keys#get-a-deploy-key - */ - "GET /repos/{owner}/{repo}/keys/{key_id}": ReadonlyOperation<"/repos/{owner}/{repo}/keys/{key_id}", "get">; - /** - * @see https://docs.github.com/rest/issues/labels#list-labels-for-a-repository - */ - "GET /repos/{owner}/{repo}/labels": ReadonlyOperation<"/repos/{owner}/{repo}/labels", "get">; - /** - * @see https://docs.github.com/rest/issues/labels#get-a-label - */ - "GET /repos/{owner}/{repo}/labels/{name}": ReadonlyOperation<"/repos/{owner}/{repo}/labels/{name}", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#list-repository-languages - */ - "GET /repos/{owner}/{repo}/languages": ReadonlyOperation<"/repos/{owner}/{repo}/languages", "get">; - /** - * @see https://docs.github.com/rest/licenses/licenses#get-the-license-for-a-repository - */ - "GET /repos/{owner}/{repo}/license": ReadonlyOperation<"/repos/{owner}/{repo}/license", "get">; - /** - * @see https://docs.github.com/rest/issues/milestones#list-milestones - */ - "GET /repos/{owner}/{repo}/milestones": ReadonlyOperation<"/repos/{owner}/{repo}/milestones", "get">; - /** - * @see https://docs.github.com/rest/issues/milestones#get-a-milestone - */ - "GET /repos/{owner}/{repo}/milestones/{milestone_number}": ReadonlyOperation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "get">; - /** - * @see https://docs.github.com/rest/issues/labels#list-labels-for-issues-in-a-milestone - */ - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels": ReadonlyOperation<"/repos/{owner}/{repo}/milestones/{milestone_number}/labels", "get">; - /** - * @see https://docs.github.com/rest/activity/notifications#list-repository-notifications-for-the-authenticated-user - */ - "GET /repos/{owner}/{repo}/notifications": ReadonlyOperation<"/repos/{owner}/{repo}/notifications", "get">; - /** - * @see https://docs.github.com/rest/pages/pages#get-a-apiname-pages-site - */ - "GET /repos/{owner}/{repo}/pages": ReadonlyOperation<"/repos/{owner}/{repo}/pages", "get">; - /** - * @see https://docs.github.com/rest/pages/pages#list-apiname-pages-builds - */ - "GET /repos/{owner}/{repo}/pages/builds": ReadonlyOperation<"/repos/{owner}/{repo}/pages/builds", "get">; - /** - * @see https://docs.github.com/rest/pages/pages#get-latest-pages-build - */ - "GET /repos/{owner}/{repo}/pages/builds/latest": ReadonlyOperation<"/repos/{owner}/{repo}/pages/builds/latest", "get">; - /** - * @see https://docs.github.com/rest/pages/pages#get-apiname-pages-build - */ - "GET /repos/{owner}/{repo}/pages/builds/{build_id}": ReadonlyOperation<"/repos/{owner}/{repo}/pages/builds/{build_id}", "get">; - /** - * @see https://docs.github.com/rest/pages/pages#get-the-status-of-a-github-pages-deployment - */ - "GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}": ReadonlyOperation<"/repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}", "get">; - /** - * @see https://docs.github.com/rest/pages/pages#get-a-dns-health-check-for-github-pages - */ - "GET /repos/{owner}/{repo}/pages/health": ReadonlyOperation<"/repos/{owner}/{repo}/pages/health", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#check-if-private-vulnerability-reporting-is-enabled-for-a-repository - */ - "GET /repos/{owner}/{repo}/private-vulnerability-reporting": ReadonlyOperation<"/repos/{owner}/{repo}/private-vulnerability-reporting", "get">; - /** - * @see https://docs.github.com/rest/projects-classic/projects#list-repository-projects - */ - "GET /repos/{owner}/{repo}/projects": ReadonlyOperation<"/repos/{owner}/{repo}/projects", "get">; - /** - * @see https://docs.github.com/rest/repos/custom-properties#get-all-custom-property-values-for-a-repository - */ - "GET /repos/{owner}/{repo}/properties/values": ReadonlyOperation<"/repos/{owner}/{repo}/properties/values", "get">; - /** - * @see https://docs.github.com/rest/pulls/pulls#list-pull-requests - */ - "GET /repos/{owner}/{repo}/pulls": ReadonlyOperation<"/repos/{owner}/{repo}/pulls", "get">; - /** - * @see https://docs.github.com/rest/pulls/comments#list-review-comments-in-a-repository - */ - "GET /repos/{owner}/{repo}/pulls/comments": ReadonlyOperation<"/repos/{owner}/{repo}/pulls/comments", "get">; - /** - * @see https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}": ReadonlyOperation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "get">; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-pull-request-review-comment - */ - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": ReadonlyOperation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "get">; - /** - * @see https://docs.github.com/rest/pulls/pulls#get-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}": ReadonlyOperation<"/repos/{owner}/{repo}/pulls/{pull_number}", "get">; - /** - * @see https://docs.github.com/rest/pulls/comments#list-review-comments-on-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments": ReadonlyOperation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments", "get">; - /** - * @see https://docs.github.com/rest/pulls/pulls#list-commits-on-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits": ReadonlyOperation<"/repos/{owner}/{repo}/pulls/{pull_number}/commits", "get">; - /** - * @see https://docs.github.com/rest/pulls/pulls#list-pull-requests-files - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/files": ReadonlyOperation<"/repos/{owner}/{repo}/pulls/{pull_number}/files", "get">; - /** - * @see https://docs.github.com/rest/pulls/pulls#check-if-a-pull-request-has-been-merged - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/merge": ReadonlyOperation<"/repos/{owner}/{repo}/pulls/{pull_number}/merge", "get">; - /** - * @see https://docs.github.com/rest/pulls/review-requests#get-all-requested-reviewers-for-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": ReadonlyOperation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "get">; - /** - * @see https://docs.github.com/rest/pulls/reviews#list-reviews-for-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews": ReadonlyOperation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews", "get">; - /** - * @see https://docs.github.com/rest/pulls/reviews#get-a-review-for-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": ReadonlyOperation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "get">; - /** - * @see https://docs.github.com/rest/pulls/reviews#list-comments-for-a-pull-request-review - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": ReadonlyOperation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "get">; - /** - * @see https://docs.github.com/rest/repos/contents#get-a-repository-readme - */ - "GET /repos/{owner}/{repo}/readme": ReadonlyOperation<"/repos/{owner}/{repo}/readme", "get">; - /** - * @see https://docs.github.com/rest/repos/contents#get-a-repository-readme-for-a-directory - */ - "GET /repos/{owner}/{repo}/readme/{dir}": ReadonlyOperation<"/repos/{owner}/{repo}/readme/{dir}", "get">; - /** - * @see https://docs.github.com/rest/releases/releases#list-releases - */ - "GET /repos/{owner}/{repo}/releases": ReadonlyOperation<"/repos/{owner}/{repo}/releases", "get">; - /** - * @see https://docs.github.com/rest/releases/assets#get-a-release-asset - */ - "GET /repos/{owner}/{repo}/releases/assets/{asset_id}": ReadonlyOperation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "get">; - /** - * @see https://docs.github.com/rest/releases/releases#get-the-latest-release - */ - "GET /repos/{owner}/{repo}/releases/latest": ReadonlyOperation<"/repos/{owner}/{repo}/releases/latest", "get">; - /** - * @see https://docs.github.com/rest/releases/releases#get-a-release-by-tag-name - */ - "GET /repos/{owner}/{repo}/releases/tags/{tag}": ReadonlyOperation<"/repos/{owner}/{repo}/releases/tags/{tag}", "get">; - /** - * @see https://docs.github.com/rest/releases/releases#get-a-release - */ - "GET /repos/{owner}/{repo}/releases/{release_id}": ReadonlyOperation<"/repos/{owner}/{repo}/releases/{release_id}", "get">; - /** - * @see https://docs.github.com/rest/releases/assets#list-release-assets - */ - "GET /repos/{owner}/{repo}/releases/{release_id}/assets": ReadonlyOperation<"/repos/{owner}/{repo}/releases/{release_id}/assets", "get">; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-release - */ - "GET /repos/{owner}/{repo}/releases/{release_id}/reactions": ReadonlyOperation<"/repos/{owner}/{repo}/releases/{release_id}/reactions", "get">; - /** - * @see https://docs.github.com/rest/repos/rules#get-rules-for-a-branch - */ - "GET /repos/{owner}/{repo}/rules/branches/{branch}": ReadonlyOperation<"/repos/{owner}/{repo}/rules/branches/{branch}", "get">; - /** - * @see https://docs.github.com/rest/repos/rules#get-all-repository-rulesets - */ - "GET /repos/{owner}/{repo}/rulesets": ReadonlyOperation<"/repos/{owner}/{repo}/rulesets", "get">; - /** - * @see https://docs.github.com/rest/repos/rule-suites#list-repository-rule-suites - */ - "GET /repos/{owner}/{repo}/rulesets/rule-suites": ReadonlyOperation<"/repos/{owner}/{repo}/rulesets/rule-suites", "get">; - /** - * @see https://docs.github.com/rest/repos/rule-suites#get-a-repository-rule-suite - */ - "GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}": ReadonlyOperation<"/repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}", "get">; - /** - * @see https://docs.github.com/rest/repos/rules#get-a-repository-ruleset - */ - "GET /repos/{owner}/{repo}/rulesets/{ruleset_id}": ReadonlyOperation<"/repos/{owner}/{repo}/rulesets/{ruleset_id}", "get">; - /** - * @see https://docs.github.com/rest/repos/rules#get-repository-ruleset-history - */ - "GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history": ReadonlyOperation<"/repos/{owner}/{repo}/rulesets/{ruleset_id}/history", "get">; - /** - * @see https://docs.github.com/rest/repos/rules#get-repository-ruleset-version - */ - "GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}": ReadonlyOperation<"/repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}", "get">; - /** - * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-secret-scanning-alerts-for-a-repository - */ - "GET /repos/{owner}/{repo}/secret-scanning/alerts": ReadonlyOperation<"/repos/{owner}/{repo}/secret-scanning/alerts", "get">; - /** - * @see https://docs.github.com/rest/secret-scanning/secret-scanning#get-a-secret-scanning-alert - */ - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": ReadonlyOperation<"/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", "get">; - /** - * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-locations-for-a-secret-scanning-alert - */ - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations": ReadonlyOperation<"/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "get">; - /** - * @see https://docs.github.com/rest/secret-scanning/secret-scanning#get-secret-scanning-scan-history-for-a-repository - */ - "GET /repos/{owner}/{repo}/secret-scanning/scan-history": ReadonlyOperation<"/repos/{owner}/{repo}/secret-scanning/scan-history", "get">; - /** - * @see https://docs.github.com/rest/security-advisories/repository-advisories#list-repository-security-advisories - */ - "GET /repos/{owner}/{repo}/security-advisories": ReadonlyOperation<"/repos/{owner}/{repo}/security-advisories", "get">; - /** - * @see https://docs.github.com/rest/security-advisories/repository-advisories#get-a-repository-security-advisory - */ - "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}": ReadonlyOperation<"/repos/{owner}/{repo}/security-advisories/{ghsa_id}", "get">; - /** - * @see https://docs.github.com/rest/activity/starring#list-stargazers - */ - "GET /repos/{owner}/{repo}/stargazers": ReadonlyOperation<"/repos/{owner}/{repo}/stargazers", "get">; - /** - * @see https://docs.github.com/rest/metrics/statistics#get-the-weekly-commit-activity - */ - "GET /repos/{owner}/{repo}/stats/code_frequency": ReadonlyOperation<"/repos/{owner}/{repo}/stats/code_frequency", "get">; - /** - * @see https://docs.github.com/rest/metrics/statistics#get-the-last-year-of-commit-activity - */ - "GET /repos/{owner}/{repo}/stats/commit_activity": ReadonlyOperation<"/repos/{owner}/{repo}/stats/commit_activity", "get">; - /** - * @see https://docs.github.com/rest/metrics/statistics#get-all-contributor-commit-activity - */ - "GET /repos/{owner}/{repo}/stats/contributors": ReadonlyOperation<"/repos/{owner}/{repo}/stats/contributors", "get">; - /** - * @see https://docs.github.com/rest/metrics/statistics#get-the-weekly-commit-count - */ - "GET /repos/{owner}/{repo}/stats/participation": ReadonlyOperation<"/repos/{owner}/{repo}/stats/participation", "get">; - /** - * @see https://docs.github.com/rest/metrics/statistics#get-the-hourly-commit-count-for-each-day - */ - "GET /repos/{owner}/{repo}/stats/punch_card": ReadonlyOperation<"/repos/{owner}/{repo}/stats/punch_card", "get">; - /** - * @see https://docs.github.com/rest/activity/watching#list-watchers - */ - "GET /repos/{owner}/{repo}/subscribers": ReadonlyOperation<"/repos/{owner}/{repo}/subscribers", "get">; - /** - * @see https://docs.github.com/rest/activity/watching#get-a-repository-subscription - */ - "GET /repos/{owner}/{repo}/subscription": ReadonlyOperation<"/repos/{owner}/{repo}/subscription", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#list-repository-tags - */ - "GET /repos/{owner}/{repo}/tags": ReadonlyOperation<"/repos/{owner}/{repo}/tags", "get">; - /** - * @see https://docs.github.com/rest/repos/tags#closing-down---list-tag-protection-states-for-a-repository - */ - "GET /repos/{owner}/{repo}/tags/protection": ReadonlyOperation<"/repos/{owner}/{repo}/tags/protection", "get">; - /** - * @see https://docs.github.com/rest/repos/contents#download-a-repository-archive-tar - */ - "GET /repos/{owner}/{repo}/tarball/{ref}": ReadonlyOperation<"/repos/{owner}/{repo}/tarball/{ref}", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#list-repository-teams - */ - "GET /repos/{owner}/{repo}/teams": ReadonlyOperation<"/repos/{owner}/{repo}/teams", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#get-all-repository-topics - */ - "GET /repos/{owner}/{repo}/topics": ReadonlyOperation<"/repos/{owner}/{repo}/topics", "get">; - /** - * @see https://docs.github.com/rest/metrics/traffic#get-repository-clones - */ - "GET /repos/{owner}/{repo}/traffic/clones": ReadonlyOperation<"/repos/{owner}/{repo}/traffic/clones", "get">; - /** - * @see https://docs.github.com/rest/metrics/traffic#get-top-referral-paths - */ - "GET /repos/{owner}/{repo}/traffic/popular/paths": ReadonlyOperation<"/repos/{owner}/{repo}/traffic/popular/paths", "get">; - /** - * @see https://docs.github.com/rest/metrics/traffic#get-top-referral-sources - */ - "GET /repos/{owner}/{repo}/traffic/popular/referrers": ReadonlyOperation<"/repos/{owner}/{repo}/traffic/popular/referrers", "get">; - /** - * @see https://docs.github.com/rest/metrics/traffic#get-page-views - */ - "GET /repos/{owner}/{repo}/traffic/views": ReadonlyOperation<"/repos/{owner}/{repo}/traffic/views", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#check-if-vulnerability-alerts-are-enabled-for-a-repository - */ - "GET /repos/{owner}/{repo}/vulnerability-alerts": ReadonlyOperation<"/repos/{owner}/{repo}/vulnerability-alerts", "get">; - /** - * @see https://docs.github.com/rest/repos/contents#download-a-repository-archive-zip - */ - "GET /repos/{owner}/{repo}/zipball/{ref}": ReadonlyOperation<"/repos/{owner}/{repo}/zipball/{ref}", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#list-public-repositories - */ - "GET /repositories": ReadonlyOperation<"/repositories", "get">; - /** - * @see https://docs.github.com/rest/search/search#search-code - */ - "GET /search/code": ReadonlyOperation<"/search/code", "get">; - /** - * @see https://docs.github.com/rest/search/search#search-commits - */ - "GET /search/commits": ReadonlyOperation<"/search/commits", "get">; - /** - * @see https://docs.github.com/rest/search/search#search-issues-and-pull-requests - */ - "GET /search/issues": ReadonlyOperation<"/search/issues", "get">; - /** - * @see https://docs.github.com/rest/search/search#search-labels - */ - "GET /search/labels": ReadonlyOperation<"/search/labels", "get">; - /** - * @see https://docs.github.com/rest/search/search#search-repositories - */ - "GET /search/repositories": ReadonlyOperation<"/search/repositories", "get">; - /** - * @see https://docs.github.com/rest/search/search#search-topics - */ - "GET /search/topics": ReadonlyOperation<"/search/topics", "get">; - /** - * @see https://docs.github.com/rest/search/search#search-users - */ - "GET /search/users": ReadonlyOperation<"/search/users", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#get-a-team-legacy - */ - "GET /teams/{team_id}": ReadonlyOperation<"/teams/{team_id}", "get">; - /** - * @see https://docs.github.com/rest/teams/discussions#list-discussions-legacy - */ - "GET /teams/{team_id}/discussions": ReadonlyOperation<"/teams/{team_id}/discussions", "get">; - /** - * @see https://docs.github.com/rest/teams/discussions#get-a-discussion-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}": ReadonlyOperation<"/teams/{team_id}/discussions/{discussion_number}", "get">; - /** - * @see https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/comments": ReadonlyOperation<"/teams/{team_id}/discussions/{discussion_number}/comments", "get">; - /** - * @see https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": ReadonlyOperation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "get">; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": ReadonlyOperation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "get">; - /** - * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/reactions": ReadonlyOperation<"/teams/{team_id}/discussions/{discussion_number}/reactions", "get">; - /** - * @see https://docs.github.com/rest/teams/members#list-pending-team-invitations-legacy - */ - "GET /teams/{team_id}/invitations": ReadonlyOperation<"/teams/{team_id}/invitations", "get">; - /** - * @see https://docs.github.com/rest/teams/members#list-team-members-legacy - */ - "GET /teams/{team_id}/members": ReadonlyOperation<"/teams/{team_id}/members", "get">; - /** - * @see https://docs.github.com/rest/teams/members#get-team-member-legacy - */ - "GET /teams/{team_id}/members/{username}": ReadonlyOperation<"/teams/{team_id}/members/{username}", "get">; - /** - * @see https://docs.github.com/rest/teams/members#get-team-membership-for-a-user-legacy - */ - "GET /teams/{team_id}/memberships/{username}": ReadonlyOperation<"/teams/{team_id}/memberships/{username}", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#list-team-projects-legacy - */ - "GET /teams/{team_id}/projects": ReadonlyOperation<"/teams/{team_id}/projects", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-project-legacy - */ - "GET /teams/{team_id}/projects/{project_id}": ReadonlyOperation<"/teams/{team_id}/projects/{project_id}", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#list-team-repositories-legacy - */ - "GET /teams/{team_id}/repos": ReadonlyOperation<"/teams/{team_id}/repos", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-repository-legacy - */ - "GET /teams/{team_id}/repos/{owner}/{repo}": ReadonlyOperation<"/teams/{team_id}/repos/{owner}/{repo}", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#list-child-teams-legacy - */ - "GET /teams/{team_id}/teams": ReadonlyOperation<"/teams/{team_id}/teams", "get">; - /** - * @see https://docs.github.com/rest/users/users#get-the-authenticated-user - */ - "GET /user": ReadonlyOperation<"/user", "get">; - /** - * @see https://docs.github.com/rest/users/blocking#list-users-blocked-by-the-authenticated-user - */ - "GET /user/blocks": ReadonlyOperation<"/user/blocks", "get">; - /** - * @see https://docs.github.com/rest/users/blocking#check-if-a-user-is-blocked-by-the-authenticated-user - */ - "GET /user/blocks/{username}": ReadonlyOperation<"/user/blocks/{username}", "get">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#list-codespaces-for-the-authenticated-user - */ - "GET /user/codespaces": ReadonlyOperation<"/user/codespaces", "get">; - /** - * @see https://docs.github.com/rest/codespaces/secrets#list-secrets-for-the-authenticated-user - */ - "GET /user/codespaces/secrets": ReadonlyOperation<"/user/codespaces/secrets", "get">; - /** - * @see https://docs.github.com/rest/codespaces/secrets#get-public-key-for-the-authenticated-user - */ - "GET /user/codespaces/secrets/public-key": ReadonlyOperation<"/user/codespaces/secrets/public-key", "get">; - /** - * @see https://docs.github.com/rest/codespaces/secrets#get-a-secret-for-the-authenticated-user - */ - "GET /user/codespaces/secrets/{secret_name}": ReadonlyOperation<"/user/codespaces/secrets/{secret_name}", "get">; - /** - * @see https://docs.github.com/rest/codespaces/secrets#list-selected-repositories-for-a-user-secret - */ - "GET /user/codespaces/secrets/{secret_name}/repositories": ReadonlyOperation<"/user/codespaces/secrets/{secret_name}/repositories", "get">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#get-a-codespace-for-the-authenticated-user - */ - "GET /user/codespaces/{codespace_name}": ReadonlyOperation<"/user/codespaces/{codespace_name}", "get">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#get-details-about-a-codespace-export - */ - "GET /user/codespaces/{codespace_name}/exports/{export_id}": ReadonlyOperation<"/user/codespaces/{codespace_name}/exports/{export_id}", "get">; - /** - * @see https://docs.github.com/rest/codespaces/machines#list-machine-types-for-a-codespace - */ - "GET /user/codespaces/{codespace_name}/machines": ReadonlyOperation<"/user/codespaces/{codespace_name}/machines", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#get-list-of-conflicting-packages-during-docker-migration-for-authenticated-user - */ - "GET /user/docker/conflicts": ReadonlyOperation<"/user/docker/conflicts", "get">; - /** - * @see https://docs.github.com/rest/users/emails#list-email-addresses-for-the-authenticated-user - */ - "GET /user/emails": ReadonlyOperation<"/user/emails", "get">; - /** - * @see https://docs.github.com/rest/users/followers#list-followers-of-the-authenticated-user - */ - "GET /user/followers": ReadonlyOperation<"/user/followers", "get">; - /** - * @see https://docs.github.com/rest/users/followers#list-the-people-the-authenticated-user-follows - */ - "GET /user/following": ReadonlyOperation<"/user/following", "get">; - /** - * @see https://docs.github.com/rest/users/followers#check-if-a-person-is-followed-by-the-authenticated-user - */ - "GET /user/following/{username}": ReadonlyOperation<"/user/following/{username}", "get">; - /** - * @see https://docs.github.com/rest/users/gpg-keys#list-gpg-keys-for-the-authenticated-user - */ - "GET /user/gpg_keys": ReadonlyOperation<"/user/gpg_keys", "get">; - /** - * @see https://docs.github.com/rest/users/gpg-keys#get-a-gpg-key-for-the-authenticated-user - */ - "GET /user/gpg_keys/{gpg_key_id}": ReadonlyOperation<"/user/gpg_keys/{gpg_key_id}", "get">; - /** - * @see https://docs.github.com/rest/apps/installations#list-app-installations-accessible-to-the-user-access-token - */ - "GET /user/installations": ReadonlyOperation<"/user/installations", "get">; - /** - * @see https://docs.github.com/rest/apps/installations#list-repositories-accessible-to-the-user-access-token - */ - "GET /user/installations/{installation_id}/repositories": ReadonlyOperation<"/user/installations/{installation_id}/repositories", "get">; - /** - * @see https://docs.github.com/rest/interactions/user#get-interaction-restrictions-for-your-public-repositories - */ - "GET /user/interaction-limits": ReadonlyOperation<"/user/interaction-limits", "get">; - /** - * @see https://docs.github.com/rest/issues/issues#list-user-account-issues-assigned-to-the-authenticated-user - */ - "GET /user/issues": ReadonlyOperation<"/user/issues", "get">; - /** - * @see https://docs.github.com/rest/users/keys#list-public-ssh-keys-for-the-authenticated-user - */ - "GET /user/keys": ReadonlyOperation<"/user/keys", "get">; - /** - * @see https://docs.github.com/rest/users/keys#get-a-public-ssh-key-for-the-authenticated-user - */ - "GET /user/keys/{key_id}": ReadonlyOperation<"/user/keys/{key_id}", "get">; - /** - * @see https://docs.github.com/rest/apps/marketplace#list-subscriptions-for-the-authenticated-user - */ - "GET /user/marketplace_purchases": ReadonlyOperation<"/user/marketplace_purchases", "get">; - /** - * @see https://docs.github.com/rest/apps/marketplace#list-subscriptions-for-the-authenticated-user-stubbed - */ - "GET /user/marketplace_purchases/stubbed": ReadonlyOperation<"/user/marketplace_purchases/stubbed", "get">; - /** - * @see https://docs.github.com/rest/orgs/members#list-organization-memberships-for-the-authenticated-user - */ - "GET /user/memberships/orgs": ReadonlyOperation<"/user/memberships/orgs", "get">; - /** - * @see https://docs.github.com/rest/orgs/members#get-an-organization-membership-for-the-authenticated-user - */ - "GET /user/memberships/orgs/{org}": ReadonlyOperation<"/user/memberships/orgs/{org}", "get">; - /** - * @see https://docs.github.com/rest/migrations/users#list-user-migrations - */ - "GET /user/migrations": ReadonlyOperation<"/user/migrations", "get">; - /** - * @see https://docs.github.com/rest/migrations/users#get-a-user-migration-status - */ - "GET /user/migrations/{migration_id}": ReadonlyOperation<"/user/migrations/{migration_id}", "get">; - /** - * @see https://docs.github.com/rest/migrations/users#download-a-user-migration-archive - */ - "GET /user/migrations/{migration_id}/archive": ReadonlyOperation<"/user/migrations/{migration_id}/archive", "get">; - /** - * @see https://docs.github.com/rest/migrations/users#list-repositories-for-a-user-migration - */ - "GET /user/migrations/{migration_id}/repositories": ReadonlyOperation<"/user/migrations/{migration_id}/repositories", "get">; - /** - * @see https://docs.github.com/rest/orgs/orgs#list-organizations-for-the-authenticated-user - */ - "GET /user/orgs": ReadonlyOperation<"/user/orgs", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#list-packages-for-the-authenticated-users-namespace - */ - "GET /user/packages": ReadonlyOperation<"/user/packages", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#get-a-package-for-the-authenticated-user - */ - "GET /user/packages/{package_type}/{package_name}": ReadonlyOperation<"/user/packages/{package_type}/{package_name}", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-the-authenticated-user - */ - "GET /user/packages/{package_type}/{package_name}/versions": ReadonlyOperation<"/user/packages/{package_type}/{package_name}/versions", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#get-a-package-version-for-the-authenticated-user - */ - "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}": ReadonlyOperation<"/user/packages/{package_type}/{package_name}/versions/{package_version_id}", "get">; - /** - * @see https://docs.github.com/rest/users/emails#list-public-email-addresses-for-the-authenticated-user - */ - "GET /user/public_emails": ReadonlyOperation<"/user/public_emails", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#list-repositories-for-the-authenticated-user - */ - "GET /user/repos": ReadonlyOperation<"/user/repos", "get">; - /** - * @see https://docs.github.com/rest/collaborators/invitations#list-repository-invitations-for-the-authenticated-user - */ - "GET /user/repository_invitations": ReadonlyOperation<"/user/repository_invitations", "get">; - /** - * @see https://docs.github.com/rest/users/social-accounts#list-social-accounts-for-the-authenticated-user - */ - "GET /user/social_accounts": ReadonlyOperation<"/user/social_accounts", "get">; - /** - * @see https://docs.github.com/rest/users/ssh-signing-keys#list-ssh-signing-keys-for-the-authenticated-user - */ - "GET /user/ssh_signing_keys": ReadonlyOperation<"/user/ssh_signing_keys", "get">; - /** - * @see https://docs.github.com/rest/users/ssh-signing-keys#get-an-ssh-signing-key-for-the-authenticated-user - */ - "GET /user/ssh_signing_keys/{ssh_signing_key_id}": ReadonlyOperation<"/user/ssh_signing_keys/{ssh_signing_key_id}", "get">; - /** - * @see https://docs.github.com/rest/activity/starring#list-repositories-starred-by-the-authenticated-user - */ - "GET /user/starred": ReadonlyOperation<"/user/starred", "get">; - /** - * @see https://docs.github.com/rest/activity/starring#check-if-a-repository-is-starred-by-the-authenticated-user - */ - "GET /user/starred/{owner}/{repo}": ReadonlyOperation<"/user/starred/{owner}/{repo}", "get">; - /** - * @see https://docs.github.com/rest/activity/watching#list-repositories-watched-by-the-authenticated-user - */ - "GET /user/subscriptions": ReadonlyOperation<"/user/subscriptions", "get">; - /** - * @see https://docs.github.com/rest/teams/teams#list-teams-for-the-authenticated-user - */ - "GET /user/teams": ReadonlyOperation<"/user/teams", "get">; - /** - * @see https://docs.github.com/rest/users/users#get-a-user-using-their-id - */ - "GET /user/{account_id}": ReadonlyOperation<"/user/{account_id}", "get">; - /** - * @see https://docs.github.com/rest/users/users#list-users - */ - "GET /users": ReadonlyOperation<"/users", "get">; - /** - * @see https://docs.github.com/rest/users/users#get-a-user - */ - "GET /users/{username}": ReadonlyOperation<"/users/{username}", "get">; - /** - * @see https://docs.github.com/rest/users/attestations#list-attestations - */ - "GET /users/{username}/attestations/{subject_digest}": ReadonlyOperation<"/users/{username}/attestations/{subject_digest}", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#get-list-of-conflicting-packages-during-docker-migration-for-user - */ - "GET /users/{username}/docker/conflicts": ReadonlyOperation<"/users/{username}/docker/conflicts", "get">; - /** - * @see https://docs.github.com/rest/activity/events#list-events-for-the-authenticated-user - */ - "GET /users/{username}/events": ReadonlyOperation<"/users/{username}/events", "get">; - /** - * @see https://docs.github.com/rest/activity/events#list-organization-events-for-the-authenticated-user - */ - "GET /users/{username}/events/orgs/{org}": ReadonlyOperation<"/users/{username}/events/orgs/{org}", "get">; - /** - * @see https://docs.github.com/rest/activity/events#list-public-events-for-a-user - */ - "GET /users/{username}/events/public": ReadonlyOperation<"/users/{username}/events/public", "get">; - /** - * @see https://docs.github.com/rest/users/followers#list-followers-of-a-user - */ - "GET /users/{username}/followers": ReadonlyOperation<"/users/{username}/followers", "get">; - /** - * @see https://docs.github.com/rest/users/followers#list-the-people-a-user-follows - */ - "GET /users/{username}/following": ReadonlyOperation<"/users/{username}/following", "get">; - /** - * @see https://docs.github.com/rest/users/followers#check-if-a-user-follows-another-user - */ - "GET /users/{username}/following/{target_user}": ReadonlyOperation<"/users/{username}/following/{target_user}", "get">; - /** - * @see https://docs.github.com/rest/gists/gists#list-gists-for-a-user - */ - "GET /users/{username}/gists": ReadonlyOperation<"/users/{username}/gists", "get">; - /** - * @see https://docs.github.com/rest/users/gpg-keys#list-gpg-keys-for-a-user - */ - "GET /users/{username}/gpg_keys": ReadonlyOperation<"/users/{username}/gpg_keys", "get">; - /** - * @see https://docs.github.com/rest/users/users#get-contextual-information-for-a-user - */ - "GET /users/{username}/hovercard": ReadonlyOperation<"/users/{username}/hovercard", "get">; - /** - * @see https://docs.github.com/rest/apps/apps#get-a-user-installation-for-the-authenticated-app - */ - "GET /users/{username}/installation": ReadonlyOperation<"/users/{username}/installation", "get">; - /** - * @see https://docs.github.com/rest/users/keys#list-public-keys-for-a-user - */ - "GET /users/{username}/keys": ReadonlyOperation<"/users/{username}/keys", "get">; - /** - * @see https://docs.github.com/rest/orgs/orgs#list-organizations-for-a-user - */ - "GET /users/{username}/orgs": ReadonlyOperation<"/users/{username}/orgs", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#list-packages-for-a-user - */ - "GET /users/{username}/packages": ReadonlyOperation<"/users/{username}/packages", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#get-a-package-for-a-user - */ - "GET /users/{username}/packages/{package_type}/{package_name}": ReadonlyOperation<"/users/{username}/packages/{package_type}/{package_name}", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-a-user - */ - "GET /users/{username}/packages/{package_type}/{package_name}/versions": ReadonlyOperation<"/users/{username}/packages/{package_type}/{package_name}/versions", "get">; - /** - * @see https://docs.github.com/rest/packages/packages#get-a-package-version-for-a-user - */ - "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}": ReadonlyOperation<"/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}", "get">; - /** - * @see https://docs.github.com/rest/projects-classic/projects#list-user-projects - */ - "GET /users/{username}/projects": ReadonlyOperation<"/users/{username}/projects", "get">; - /** - * @see https://docs.github.com/rest/projects/projects#list-projects-for-user - */ - "GET /users/{username}/projectsV2": ReadonlyOperation<"/users/{username}/projectsV2", "get">; - /** - * @see https://docs.github.com/rest/projects/projects#get-project-for-user - */ - "GET /users/{username}/projectsV2/{project_number}": ReadonlyOperation<"/users/{username}/projectsV2/{project_number}", "get">; - /** - * @see https://docs.github.com/rest/projects/fields#list-project-fields-for-user - */ - "GET /users/{username}/projectsV2/{project_number}/fields": ReadonlyOperation<"/users/{username}/projectsV2/{project_number}/fields", "get">; - /** - * @see https://docs.github.com/rest/projects/fields#get-project-field-for-user - */ - "GET /users/{username}/projectsV2/{project_number}/fields/{field_id}": ReadonlyOperation<"/users/{username}/projectsV2/{project_number}/fields/{field_id}", "get">; - /** - * @see https://docs.github.com/rest/projects/items#list-items-for-a-user-owned-project - */ - "GET /users/{username}/projectsV2/{project_number}/items": ReadonlyOperation<"/users/{username}/projectsV2/{project_number}/items", "get">; - /** - * @see https://docs.github.com/rest/projects/items#get-an-item-for-a-user-owned-project - */ - "GET /users/{username}/projectsV2/{project_number}/items/{item_id}": ReadonlyOperation<"/users/{username}/projectsV2/{project_number}/items/{item_id}", "get">; - /** - * @see https://docs.github.com/rest/activity/events#list-events-received-by-the-authenticated-user - */ - "GET /users/{username}/received_events": ReadonlyOperation<"/users/{username}/received_events", "get">; - /** - * @see https://docs.github.com/rest/activity/events#list-public-events-received-by-a-user - */ - "GET /users/{username}/received_events/public": ReadonlyOperation<"/users/{username}/received_events/public", "get">; - /** - * @see https://docs.github.com/rest/repos/repos#list-repositories-for-a-user - */ - "GET /users/{username}/repos": ReadonlyOperation<"/users/{username}/repos", "get">; - /** - * @see https://docs.github.com/rest/billing/billing#get-github-actions-billing-for-a-user - */ - "GET /users/{username}/settings/billing/actions": ReadonlyOperation<"/users/{username}/settings/billing/actions", "get">; - /** - * @see https://docs.github.com/rest/billing/billing#get-github-packages-billing-for-a-user - */ - "GET /users/{username}/settings/billing/packages": ReadonlyOperation<"/users/{username}/settings/billing/packages", "get">; - /** - * @see https://docs.github.com/rest/billing/enhanced-billing#get-billing-premium-request-usage-report-for-a-user - */ - "GET /users/{username}/settings/billing/premium_request/usage": ReadonlyOperation<"/users/{username}/settings/billing/premium_request/usage", "get">; - /** - * @see https://docs.github.com/rest/billing/billing#get-shared-storage-billing-for-a-user - */ - "GET /users/{username}/settings/billing/shared-storage": ReadonlyOperation<"/users/{username}/settings/billing/shared-storage", "get">; - /** - * @see https://docs.github.com/rest/billing/enhanced-billing#get-billing-usage-report-for-a-user - */ - "GET /users/{username}/settings/billing/usage": ReadonlyOperation<"/users/{username}/settings/billing/usage", "get">; - /** - * @see https://docs.github.com/rest/users/social-accounts#list-social-accounts-for-a-user - */ - "GET /users/{username}/social_accounts": ReadonlyOperation<"/users/{username}/social_accounts", "get">; - /** - * @see https://docs.github.com/rest/users/ssh-signing-keys#list-ssh-signing-keys-for-a-user - */ - "GET /users/{username}/ssh_signing_keys": ReadonlyOperation<"/users/{username}/ssh_signing_keys", "get">; - /** - * @see https://docs.github.com/rest/activity/starring#list-repositories-starred-by-a-user - */ - "GET /users/{username}/starred": ReadonlyOperation<"/users/{username}/starred", "get">; - /** - * @see https://docs.github.com/rest/activity/watching#list-repositories-watched-by-a-user - */ - "GET /users/{username}/subscriptions": ReadonlyOperation<"/users/{username}/subscriptions", "get">; - /** - * @see https://docs.github.com/rest/meta/meta#get-all-api-versions - */ - "GET /versions": ReadonlyOperation<"/versions", "get">; - /** - * @see https://docs.github.com/rest/meta/meta#get-the-zen-of-github - */ - "GET /zen": ReadonlyOperation<"/zen", "get">; - /** - * @see https://docs.github.com/rest/apps/webhooks#update-a-webhook-configuration-for-an-app - */ - "PATCH /app/hook/config": Operation<"/app/hook/config", "patch">; - /** - * @see https://docs.github.com/rest/apps/oauth-applications#reset-a-token - */ - "PATCH /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "patch">; - /** - * @see https://docs.github.com/rest/code-security/configurations#update-a-custom-code-security-configuration-for-an-enterprise - */ - "PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}": Operation<"/enterprises/{enterprise}/code-security/configurations/{configuration_id}", "patch">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-teams#update-an-enterprise-team - */ - "PATCH /enterprises/{enterprise}/teams/{team_slug}": Operation<"/enterprises/{enterprise}/teams/{team_slug}", "patch">; - /** - * @see https://docs.github.com/rest/reference/gists/#update-a-gist - */ - "PATCH /gists/{gist_id}": Operation<"/gists/{gist_id}", "patch">; - /** - * @see https://docs.github.com/rest/gists/comments#update-a-gist-comment - */ - "PATCH /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "patch">; - /** - * @see https://docs.github.com/rest/activity/notifications#mark-a-thread-as-read - */ - "PATCH /notifications/threads/{thread_id}": Operation<"/notifications/threads/{thread_id}", "patch">; - /** - * @see https://docs.github.com/rest/dependabot/repository-access#updates-dependabots-repository-access-list-for-an-organization - */ - "PATCH /organizations/{org}/dependabot/repository-access": Operation<"/organizations/{org}/dependabot/repository-access", "patch">; - /** - * @see https://docs.github.com/rest/orgs/custom-properties-for-orgs#create-or-update-custom-property-values-for-an-organization - */ - "PATCH /organizations/{org}/org-properties/values": Operation<"/organizations/{org}/org-properties/values", "patch">; - /** - * @see https://docs.github.com/rest/orgs/orgs#update-an-organization - */ - "PATCH /orgs/{org}": Operation<"/orgs/{org}", "patch">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#update-a-github-hosted-runner-for-an-organization - */ - "PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}": Operation<"/orgs/{org}/actions/hosted-runners/{hosted_runner_id}", "patch">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#update-a-self-hosted-runner-group-for-an-organization - */ - "PATCH /orgs/{org}/actions/runner-groups/{runner_group_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}", "patch">; - /** - * @see https://docs.github.com/rest/actions/variables#update-an-organization-variable - */ - "PATCH /orgs/{org}/actions/variables/{name}": Operation<"/orgs/{org}/actions/variables/{name}", "patch">; - /** - * @see https://docs.github.com/rest/campaigns/campaigns#update-a-campaign - */ - "PATCH /orgs/{org}/campaigns/{campaign_number}": Operation<"/orgs/{org}/campaigns/{campaign_number}", "patch">; - /** - * @see https://docs.github.com/rest/code-security/configurations#update-a-code-security-configuration - */ - "PATCH /orgs/{org}/code-security/configurations/{configuration_id}": Operation<"/orgs/{org}/code-security/configurations/{configuration_id}", "patch">; - /** - * @see https://docs.github.com/rest/orgs/webhooks#update-an-organization-webhook - */ - "PATCH /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "patch">; - /** - * @see https://docs.github.com/rest/orgs/webhooks#update-a-webhook-configuration-for-an-organization - */ - "PATCH /orgs/{org}/hooks/{hook_id}/config": Operation<"/orgs/{org}/hooks/{hook_id}/config", "patch">; - /** - * @see https://docs.github.com/rest/private-registries/organization-configurations#update-a-private-registry-for-an-organization - */ - "PATCH /orgs/{org}/private-registries/{secret_name}": Operation<"/orgs/{org}/private-registries/{secret_name}", "patch">; - /** - * @see https://docs.github.com/rest/projects/items#update-project-item-for-organization - */ - "PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}": Operation<"/orgs/{org}/projectsV2/{project_number}/items/{item_id}", "patch">; - /** - * @see https://docs.github.com/rest/orgs/custom-properties#create-or-update-custom-properties-for-an-organization - */ - "PATCH /orgs/{org}/properties/schema": Operation<"/orgs/{org}/properties/schema", "patch">; - /** - * @see https://docs.github.com/rest/orgs/custom-properties#create-or-update-custom-property-values-for-organization-repositories - */ - "PATCH /orgs/{org}/properties/values": Operation<"/orgs/{org}/properties/values", "patch">; - /** - * @see https://docs.github.com/rest/secret-scanning/push-protection#update-organization-pattern-configurations - */ - "PATCH /orgs/{org}/secret-scanning/pattern-configurations": Operation<"/orgs/{org}/secret-scanning/pattern-configurations", "patch">; - /** - * @see https://docs.github.com/rest/orgs/network-configurations#update-a-hosted-compute-network-configuration-for-an-organization - */ - "PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}": Operation<"/orgs/{org}/settings/network-configurations/{network_configuration_id}", "patch">; - /** - * @see https://docs.github.com/rest/teams/teams#update-a-team - */ - "PATCH /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "patch">; - /** - * @see https://docs.github.com/rest/teams/discussions#update-a-discussion - */ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "patch">; - /** - * @see https://docs.github.com/rest/teams/discussion-comments#update-a-discussion-comment - */ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "patch">; - /** - * @see https://docs.github.com/rest/projects-classic/columns#update-an-existing-project-column - */ - "PATCH /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "patch">; - /** - * @see https://docs.github.com/rest/projects-classic/projects#update-a-project - */ - "PATCH /projects/{project_id}": Operation<"/projects/{project_id}", "patch">; - /** - * @see https://docs.github.com/rest/repos/repos#update-a-repository - */ - "PATCH /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "patch">; - /** - * @see https://docs.github.com/rest/actions/variables#update-a-repository-variable - */ - "PATCH /repos/{owner}/{repo}/actions/variables/{name}": Operation<"/repos/{owner}/{repo}/actions/variables/{name}", "patch">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#update-pull-request-review-protection - */ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "patch">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#update-status-check-protection - */ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "patch">; - /** - * @see https://docs.github.com/rest/checks/runs#update-a-check-run - */ - "PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}", "patch">; - /** - * @see https://docs.github.com/rest/checks/suites#update-repository-preferences-for-check-suites - */ - "PATCH /repos/{owner}/{repo}/check-suites/preferences": Operation<"/repos/{owner}/{repo}/check-suites/preferences", "patch">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#update-a-code-scanning-alert - */ - "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "patch">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#update-a-code-scanning-default-setup-configuration - */ - "PATCH /repos/{owner}/{repo}/code-scanning/default-setup": Operation<"/repos/{owner}/{repo}/code-scanning/default-setup", "patch">; - /** - * @see https://docs.github.com/rest/commits/comments#update-a-commit-comment - */ - "PATCH /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "patch">; - /** - * @see https://docs.github.com/rest/dependabot/alerts#update-a-dependabot-alert - */ - "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/dependabot/alerts/{alert_number}", "patch">; - /** - * @see https://docs.github.com/rest/actions/variables#update-an-environment-variable - */ - "PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/variables/{name}", "patch">; - /** - * @see https://docs.github.com/rest/git/refs#update-a-reference - */ - "PATCH /repos/{owner}/{repo}/git/refs/{ref}": Operation<"/repos/{owner}/{repo}/git/refs/{ref}", "patch">; - /** - * @see https://docs.github.com/rest/repos/webhooks#update-a-repository-webhook - */ - "PATCH /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "patch">; - /** - * @see https://docs.github.com/rest/repos/webhooks#update-a-webhook-configuration-for-a-repository - */ - "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/config", "patch">; - /** - * @see https://docs.github.com/rest/migrations/source-imports#update-an-import - */ - "PATCH /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "patch">; - /** - * @see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author - */ - "PATCH /repos/{owner}/{repo}/import/authors/{author_id}": Operation<"/repos/{owner}/{repo}/import/authors/{author_id}", "patch">; - /** - * @see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference - */ - "PATCH /repos/{owner}/{repo}/import/lfs": Operation<"/repos/{owner}/{repo}/import/lfs", "patch">; - /** - * @see https://docs.github.com/rest/collaborators/invitations#update-a-repository-invitation - */ - "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}": Operation<"/repos/{owner}/{repo}/invitations/{invitation_id}", "patch">; - /** - * @see https://docs.github.com/rest/issues/comments#update-an-issue-comment - */ - "PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "patch">; - /** - * @see https://docs.github.com/rest/issues/issues#update-an-issue - */ - "PATCH /repos/{owner}/{repo}/issues/{issue_number}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}", "patch">; - /** - * @see https://docs.github.com/rest/issues/sub-issues#reprioritize-sub-issue - */ - "PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority", "patch">; - /** - * @see https://docs.github.com/rest/issues/labels#update-a-label - */ - "PATCH /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "patch">; - /** - * @see https://docs.github.com/rest/issues/milestones#update-a-milestone - */ - "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "patch">; - /** - * @see https://docs.github.com/rest/repos/custom-properties#create-or-update-custom-property-values-for-a-repository - */ - "PATCH /repos/{owner}/{repo}/properties/values": Operation<"/repos/{owner}/{repo}/properties/values", "patch">; - /** - * @see https://docs.github.com/rest/pulls/comments#update-a-review-comment-for-a-pull-request - */ - "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "patch">; - /** - * @see https://docs.github.com/rest/pulls/pulls#update-a-pull-request - */ - "PATCH /repos/{owner}/{repo}/pulls/{pull_number}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}", "patch">; - /** - * @see https://docs.github.com/rest/releases/assets#update-a-release-asset - */ - "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "patch">; - /** - * @see https://docs.github.com/rest/releases/releases#update-a-release - */ - "PATCH /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "patch">; - /** - * @see https://docs.github.com/rest/secret-scanning/secret-scanning#update-a-secret-scanning-alert - */ - "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", "patch">; - /** - * @see https://docs.github.com/rest/security-advisories/repository-advisories#update-a-repository-security-advisory - */ - "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}": Operation<"/repos/{owner}/{repo}/security-advisories/{ghsa_id}", "patch">; - /** - * @see https://docs.github.com/rest/teams/teams#update-a-team-legacy - */ - "PATCH /teams/{team_id}": Operation<"/teams/{team_id}", "patch">; - /** - * @see https://docs.github.com/rest/teams/discussions#update-a-discussion-legacy - */ - "PATCH /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "patch">; - /** - * @see https://docs.github.com/rest/teams/discussion-comments#update-a-discussion-comment-legacy - */ - "PATCH /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "patch">; - /** - * @see https://docs.github.com/rest/users/users#update-the-authenticated-user - */ - "PATCH /user": Operation<"/user", "patch">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#update-a-codespace-for-the-authenticated-user - */ - "PATCH /user/codespaces/{codespace_name}": Operation<"/user/codespaces/{codespace_name}", "patch">; - /** - * @see https://docs.github.com/rest/users/emails#set-primary-email-visibility-for-the-authenticated-user - */ - "PATCH /user/email/visibility": Operation<"/user/email/visibility", "patch">; - /** - * @see https://docs.github.com/rest/orgs/members#update-an-organization-membership-for-the-authenticated-user - */ - "PATCH /user/memberships/orgs/{org}": Operation<"/user/memberships/orgs/{org}", "patch">; - /** - * @see https://docs.github.com/rest/collaborators/invitations#accept-a-repository-invitation - */ - "PATCH /user/repository_invitations/{invitation_id}": Operation<"/user/repository_invitations/{invitation_id}", "patch">; - /** - * @see https://docs.github.com/rest/projects/items#update-project-item-for-user - */ - "PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}": Operation<"/users/{username}/projectsV2/{project_number}/items/{item_id}", "patch">; - /** - * @see https://docs.github.com/rest/apps/apps#create-a-github-app-from-a-manifest - */ - "POST /app-manifests/{code}/conversions": Operation<"/app-manifests/{code}/conversions", "post">; - /** - * @see https://docs.github.com/rest/apps/webhooks#redeliver-a-delivery-for-an-app-webhook - */ - "POST /app/hook/deliveries/{delivery_id}/attempts": Operation<"/app/hook/deliveries/{delivery_id}/attempts", "post">; - /** - * @see https://docs.github.com/rest/apps/apps#create-an-installation-access-token-for-an-app - */ - "POST /app/installations/{installation_id}/access_tokens": Operation<"/app/installations/{installation_id}/access_tokens", "post">; - /** - * @see https://docs.github.com/rest/apps/oauth-applications#check-a-token - */ - "POST /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "post">; - /** - * @see https://docs.github.com/rest/apps/apps#create-a-scoped-access-token - */ - "POST /applications/{client_id}/token/scoped": Operation<"/applications/{client_id}/token/scoped", "post">; - /** - * @see https://docs.github.com/rest/credentials/revoke#revoke-a-list-of-credentials - */ - "POST /credentials/revoke": Operation<"/credentials/revoke", "post">; - /** - * @see https://docs.github.com/rest/code-security/configurations#create-a-code-security-configuration-for-an-enterprise - */ - "POST /enterprises/{enterprise}/code-security/configurations": Operation<"/enterprises/{enterprise}/code-security/configurations", "post">; - /** - * @see https://docs.github.com/rest/code-security/configurations#attach-an-enterprise-configuration-to-repositories - */ - "POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach": Operation<"/enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach", "post">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-teams#create-an-enterprise-team - */ - "POST /enterprises/{enterprise}/teams": Operation<"/enterprises/{enterprise}/teams", "post">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-members#bulk-add-team-members - */ - "POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add": Operation<"/enterprises/{enterprise}/teams/{enterprise-team}/memberships/add", "post">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-members#bulk-remove-team-members - */ - "POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove": Operation<"/enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove", "post">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#add-organization-assignments - */ - "POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add": Operation<"/enterprises/{enterprise}/teams/{enterprise-team}/organizations/add", "post">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#remove-organization-assignments - */ - "POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove": Operation<"/enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove", "post">; - /** - * @see https://docs.github.com/rest/gists/gists#create-a-gist - */ - "POST /gists": Operation<"/gists", "post">; - /** - * @see https://docs.github.com/rest/gists/comments#create-a-gist-comment - */ - "POST /gists/{gist_id}/comments": Operation<"/gists/{gist_id}/comments", "post">; - /** - * @see https://docs.github.com/rest/gists/gists#fork-a-gist - */ - "POST /gists/{gist_id}/forks": Operation<"/gists/{gist_id}/forks", "post">; - /** - * @see https://docs.github.com/rest/markdown/markdown#render-a-markdown-document - */ - "POST /markdown": Operation<"/markdown", "post">; - /** - * @see https://docs.github.com/rest/markdown/markdown#render-a-markdown-document-in-raw-mode - */ - "POST /markdown/raw": Operation<"/markdown/raw", "post">; - /** - * @see https://docs.github.com/rest/actions/hosted-runners#create-a-github-hosted-runner-for-an-organization - */ - "POST /orgs/{org}/actions/hosted-runners": Operation<"/orgs/{org}/actions/hosted-runners", "post">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#create-a-self-hosted-runner-group-for-an-organization - */ - "POST /orgs/{org}/actions/runner-groups": Operation<"/orgs/{org}/actions/runner-groups", "post">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#create-configuration-for-a-just-in-time-runner-for-an-organization - */ - "POST /orgs/{org}/actions/runners/generate-jitconfig": Operation<"/orgs/{org}/actions/runners/generate-jitconfig", "post">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#create-a-registration-token-for-an-organization - */ - "POST /orgs/{org}/actions/runners/registration-token": Operation<"/orgs/{org}/actions/runners/registration-token", "post">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#create-a-remove-token-for-an-organization - */ - "POST /orgs/{org}/actions/runners/remove-token": Operation<"/orgs/{org}/actions/runners/remove-token", "post">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#add-custom-labels-to-a-self-hosted-runner-for-an-organization - */ - "POST /orgs/{org}/actions/runners/{runner_id}/labels": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels", "post">; - /** - * @see https://docs.github.com/rest/actions/variables#create-an-organization-variable - */ - "POST /orgs/{org}/actions/variables": Operation<"/orgs/{org}/actions/variables", "post">; - /** - * @see https://docs.github.com/rest/orgs/artifact-metadata#create-artifact-metadata-storage-record - */ - "POST /orgs/{org}/artifacts/metadata/storage-record": Operation<"/orgs/{org}/artifacts/metadata/storage-record", "post">; - /** - * @see https://docs.github.com/rest/orgs/attestations#list-attestations-by-bulk-subject-digests - */ - "POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}": Operation<"/orgs/{org}/attestations/bulk-list", "post">; - /** - * @see https://docs.github.com/rest/orgs/attestations#delete-attestations-in-bulk - */ - "POST /orgs/{org}/attestations/delete-request": Operation<"/orgs/{org}/attestations/delete-request", "post">; - /** - * @see https://docs.github.com/rest/campaigns/campaigns#create-a-campaign-for-an-organization - */ - "POST /orgs/{org}/campaigns": Operation<"/orgs/{org}/campaigns", "post">; - /** - * @see https://docs.github.com/rest/code-security/configurations#create-a-code-security-configuration - */ - "POST /orgs/{org}/code-security/configurations": Operation<"/orgs/{org}/code-security/configurations", "post">; - /** - * @see https://docs.github.com/rest/code-security/configurations#attach-a-configuration-to-repositories - */ - "POST /orgs/{org}/code-security/configurations/{configuration_id}/attach": Operation<"/orgs/{org}/code-security/configurations/{configuration_id}/attach", "post">; - /** - * @see https://docs.github.com/rest/codespaces/organizations#add-users-to-codespaces-access-for-an-organization - */ - "POST /orgs/{org}/codespaces/access/selected_users": Operation<"/orgs/{org}/codespaces/access/selected_users", "post">; - /** - * @see https://docs.github.com/rest/copilot/copilot-user-management#add-teams-to-the-copilot-subscription-for-an-organization - */ - "POST /orgs/{org}/copilot/billing/selected_teams": Operation<"/orgs/{org}/copilot/billing/selected_teams", "post">; - /** - * @see https://docs.github.com/rest/copilot/copilot-user-management#add-users-to-the-copilot-subscription-for-an-organization - */ - "POST /orgs/{org}/copilot/billing/selected_users": Operation<"/orgs/{org}/copilot/billing/selected_users", "post">; - /** - * @see https://docs.github.com/rest/orgs/webhooks#create-an-organization-webhook - */ - "POST /orgs/{org}/hooks": Operation<"/orgs/{org}/hooks", "post">; - /** - * @see https://docs.github.com/rest/orgs/webhooks#redeliver-a-delivery-for-an-organization-webhook - */ - "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts": Operation<"/orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts", "post">; - /** - * @see https://docs.github.com/rest/orgs/webhooks#ping-an-organization-webhook - */ - "POST /orgs/{org}/hooks/{hook_id}/pings": Operation<"/orgs/{org}/hooks/{hook_id}/pings", "post">; - /** - * @see https://docs.github.com/rest/orgs/members#create-an-organization-invitation - */ - "POST /orgs/{org}/invitations": Operation<"/orgs/{org}/invitations", "post">; - /** - * @see https://docs.github.com/rest/orgs/issue-types#create-issue-type-for-an-organization - */ - "POST /orgs/{org}/issue-types": Operation<"/orgs/{org}/issue-types", "post">; - /** - * @see https://docs.github.com/rest/codespaces/organizations#stop-a-codespace-for-an-organization-user - */ - "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop": Operation<"/orgs/{org}/members/{username}/codespaces/{codespace_name}/stop", "post">; - /** - * @see https://docs.github.com/rest/migrations/orgs#start-an-organization-migration - */ - "POST /orgs/{org}/migrations": Operation<"/orgs/{org}/migrations", "post">; - /** - * @see https://docs.github.com/rest/packages/packages#restore-a-package-for-an-organization - */ - "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/restore", "post">; - /** - * @see https://docs.github.com/rest/packages/packages#restore-package-version-for-an-organization - */ - "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", "post">; - /** - * @see https://docs.github.com/rest/orgs/personal-access-tokens#review-requests-to-access-organization-resources-with-fine-grained-personal-access-tokens - */ - "POST /orgs/{org}/personal-access-token-requests": Operation<"/orgs/{org}/personal-access-token-requests", "post">; - /** - * @see https://docs.github.com/rest/orgs/personal-access-tokens#review-a-request-to-access-organization-resources-with-a-fine-grained-personal-access-token - */ - "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}": Operation<"/orgs/{org}/personal-access-token-requests/{pat_request_id}", "post">; - /** - * @see https://docs.github.com/rest/orgs/personal-access-tokens#update-the-access-to-organization-resources-via-fine-grained-personal-access-tokens - */ - "POST /orgs/{org}/personal-access-tokens": Operation<"/orgs/{org}/personal-access-tokens", "post">; - /** - * @see https://docs.github.com/rest/orgs/personal-access-tokens#update-the-access-a-fine-grained-personal-access-token-has-to-organization-resources - */ - "POST /orgs/{org}/personal-access-tokens/{pat_id}": Operation<"/orgs/{org}/personal-access-tokens/{pat_id}", "post">; - /** - * @see https://docs.github.com/rest/private-registries/organization-configurations#create-a-private-registry-for-an-organization - */ - "POST /orgs/{org}/private-registries": Operation<"/orgs/{org}/private-registries", "post">; - /** - * @see https://docs.github.com/rest/projects-classic/projects#create-an-organization-project - */ - "POST /orgs/{org}/projects": Operation<"/orgs/{org}/projects", "post">; - /** - * @see https://docs.github.com/rest/projects/items#add-item-to-organization-owned-project - */ - "POST /orgs/{org}/projectsV2/{project_number}/items": Operation<"/orgs/{org}/projectsV2/{project_number}/items", "post">; - /** - * @see https://docs.github.com/rest/repos/repos#create-an-organization-repository - */ - "POST /orgs/{org}/repos": Operation<"/orgs/{org}/repos", "post">; - /** - * @see https://docs.github.com/rest/orgs/rules#create-an-organization-repository-ruleset - */ - "POST /orgs/{org}/rulesets": Operation<"/orgs/{org}/rulesets", "post">; - /** - * @see https://docs.github.com/rest/orgs/network-configurations#create-a-hosted-compute-network-configuration-for-an-organization - */ - "POST /orgs/{org}/settings/network-configurations": Operation<"/orgs/{org}/settings/network-configurations", "post">; - /** - * @see https://docs.github.com/rest/teams/teams#create-a-team - */ - "POST /orgs/{org}/teams": Operation<"/orgs/{org}/teams", "post">; - /** - * @see https://docs.github.com/rest/teams/discussions#create-a-discussion - */ - "POST /orgs/{org}/teams/{team_slug}/discussions": Operation<"/orgs/{org}/teams/{team_slug}/discussions", "post">; - /** - * @see https://docs.github.com/rest/teams/discussion-comments#create-a-discussion-comment - */ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "post">; - /** - * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion-comment - */ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "post">; - /** - * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion - */ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "post">; - /** - * @see https://docs.github.com/rest/orgs/orgs#enable-or-disable-a-security-feature-for-an-organization - */ - "POST /orgs/{org}/{security_product}/{enablement}": Operation<"/orgs/{org}/{security_product}/{enablement}", "post">; - /** - * @see https://docs.github.com/rest/projects-classic/columns#move-a-project-column - */ - "POST /projects/columns/{column_id}/moves": Operation<"/projects/columns/{column_id}/moves", "post">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#re-run-a-job-from-a-workflow-run - */ - "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun": Operation<"/repos/{owner}/{repo}/actions/jobs/{job_id}/rerun", "post">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#create-configuration-for-a-just-in-time-runner-for-a-repository - */ - "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig": Operation<"/repos/{owner}/{repo}/actions/runners/generate-jitconfig", "post">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#create-a-registration-token-for-a-repository - */ - "POST /repos/{owner}/{repo}/actions/runners/registration-token": Operation<"/repos/{owner}/{repo}/actions/runners/registration-token", "post">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#create-a-remove-token-for-a-repository - */ - "POST /repos/{owner}/{repo}/actions/runners/remove-token": Operation<"/repos/{owner}/{repo}/actions/runners/remove-token", "post">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#add-custom-labels-to-a-self-hosted-runner-for-a-repository - */ - "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "post">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#approve-a-workflow-run-for-a-fork-pull-request - */ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/approve", "post">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#cancel-a-workflow-run - */ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/cancel", "post">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#review-custom-deployment-protection-rules-for-a-workflow-run - */ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule", "post">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#force-cancel-a-workflow-run - */ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel", "post">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#review-pending-deployments-for-a-workflow-run - */ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", "post">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#re-run-a-workflow - */ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/rerun", "post">; - /** - * @see https://docs.github.com/rest/actions/workflow-runs#re-run-failed-jobs-from-a-workflow-run - */ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs", "post">; - /** - * @see https://docs.github.com/rest/actions/variables#create-a-repository-variable - */ - "POST /repos/{owner}/{repo}/actions/variables": Operation<"/repos/{owner}/{repo}/actions/variables", "post">; - /** - * @see https://docs.github.com/rest/actions/workflows#create-a-workflow-dispatch-event - */ - "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches", "post">; - /** - * @see https://docs.github.com/rest/repos/repos#create-an-attestation - */ - "POST /repos/{owner}/{repo}/attestations": Operation<"/repos/{owner}/{repo}/attestations", "post">; - /** - * @see https://docs.github.com/rest/repos/autolinks#create-an-autolink-reference-for-a-repository - */ - "POST /repos/{owner}/{repo}/autolinks": Operation<"/repos/{owner}/{repo}/autolinks", "post">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#set-admin-branch-protection - */ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "post">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#create-commit-signature-protection - */ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "post">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#add-status-check-contexts - */ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "post">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#add-app-access-restrictions - */ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "post">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#add-team-access-restrictions - */ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "post">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#add-user-access-restrictions - */ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "post">; - /** - * @see https://docs.github.com/rest/branches/branches#rename-a-branch - */ - "POST /repos/{owner}/{repo}/branches/{branch}/rename": Operation<"/repos/{owner}/{repo}/branches/{branch}/rename", "post">; - /** - * @see https://docs.github.com/rest/reference/checks#create-a-check-run - */ - "POST /repos/{owner}/{repo}/check-runs": Operation<"/repos/{owner}/{repo}/check-runs", "post">; - /** - * @see https://docs.github.com/rest/checks/runs#rerequest-a-check-run - */ - "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest", "post">; - /** - * @see https://docs.github.com/rest/checks/suites#create-a-check-suite - */ - "POST /repos/{owner}/{repo}/check-suites": Operation<"/repos/{owner}/{repo}/check-suites", "post">; - /** - * @see https://docs.github.com/rest/checks/suites#rerequest-a-check-suite - */ - "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest": Operation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest", "post">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#create-an-autofix-for-a-code-scanning-alert - */ - "POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix", "post">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#commit-an-autofix-for-a-code-scanning-alert - */ - "POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits", "post">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#create-a-codeql-variant-analysis - */ - "POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses": Operation<"/repos/{owner}/{repo}/code-scanning/codeql/variant-analyses", "post">; - /** - * @see https://docs.github.com/rest/code-scanning/code-scanning#upload-an-analysis-as-sarif-data - */ - "POST /repos/{owner}/{repo}/code-scanning/sarifs": Operation<"/repos/{owner}/{repo}/code-scanning/sarifs", "post">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#create-a-codespace-in-a-repository - */ - "POST /repos/{owner}/{repo}/codespaces": Operation<"/repos/{owner}/{repo}/codespaces", "post">; - /** - * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-commit-comment - */ - "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions", "post">; - /** - * @see https://docs.github.com/rest/commits/comments#create-a-commit-comment - */ - "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/comments", "post">; - /** - * @see https://docs.github.com/rest/dependency-graph/dependency-submission#create-a-snapshot-of-dependencies-for-a-repository - */ - "POST /repos/{owner}/{repo}/dependency-graph/snapshots": Operation<"/repos/{owner}/{repo}/dependency-graph/snapshots", "post">; - /** - * @see https://docs.github.com/rest/deployments/deployments#create-a-deployment - */ - "POST /repos/{owner}/{repo}/deployments": Operation<"/repos/{owner}/{repo}/deployments", "post">; - /** - * @see https://docs.github.com/rest/deployments/statuses#create-a-deployment-status - */ - "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "post">; - /** - * @see https://docs.github.com/rest/repos/repos#create-a-repository-dispatch-event - */ - "POST /repos/{owner}/{repo}/dispatches": Operation<"/repos/{owner}/{repo}/dispatches", "post">; - /** - * @see https://docs.github.com/rest/deployments/branch-policies#create-a-deployment-branch-policy - */ - "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", "post">; - /** - * @see https://docs.github.com/rest/deployments/protection-rules#create-a-custom-deployment-protection-rule-on-an-environment - */ - "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules", "post">; - /** - * @see https://docs.github.com/rest/actions/variables#create-an-environment-variable - */ - "POST /repos/{owner}/{repo}/environments/{environment_name}/variables": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/variables", "post">; - /** - * @see https://docs.github.com/rest/repos/forks#create-a-fork - */ - "POST /repos/{owner}/{repo}/forks": Operation<"/repos/{owner}/{repo}/forks", "post">; - /** - * @see https://docs.github.com/rest/git/blobs#create-a-blob - */ - "POST /repos/{owner}/{repo}/git/blobs": Operation<"/repos/{owner}/{repo}/git/blobs", "post">; - /** - * @see https://docs.github.com/rest/git/commits#create-a-commit - */ - "POST /repos/{owner}/{repo}/git/commits": Operation<"/repos/{owner}/{repo}/git/commits", "post">; - /** - * @see https://docs.github.com/rest/git/refs#create-a-reference - */ - "POST /repos/{owner}/{repo}/git/refs": Operation<"/repos/{owner}/{repo}/git/refs", "post">; - /** - * @see https://docs.github.com/rest/git/tags#create-a-tag-object - */ - "POST /repos/{owner}/{repo}/git/tags": Operation<"/repos/{owner}/{repo}/git/tags", "post">; - /** - * @see https://docs.github.com/rest/git/trees#create-a-tree - */ - "POST /repos/{owner}/{repo}/git/trees": Operation<"/repos/{owner}/{repo}/git/trees", "post">; - /** - * @see https://docs.github.com/rest/repos/webhooks#create-a-repository-webhook - */ - "POST /repos/{owner}/{repo}/hooks": Operation<"/repos/{owner}/{repo}/hooks", "post">; - /** - * @see https://docs.github.com/rest/repos/webhooks#redeliver-a-delivery-for-a-repository-webhook - */ - "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts", "post">; - /** - * @see https://docs.github.com/rest/repos/webhooks#ping-a-repository-webhook - */ - "POST /repos/{owner}/{repo}/hooks/{hook_id}/pings": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/pings", "post">; - /** - * @see https://docs.github.com/rest/repos/webhooks#test-the-push-repository-webhook - */ - "POST /repos/{owner}/{repo}/hooks/{hook_id}/tests": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/tests", "post">; - /** - * @see https://docs.github.com/rest/issues/issues#create-an-issue - */ - "POST /repos/{owner}/{repo}/issues": Operation<"/repos/{owner}/{repo}/issues", "post">; - /** - * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-an-issue-comment - */ - "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "post">; - /** - * @see https://docs.github.com/rest/issues/assignees#add-assignees-to-an-issue - */ - "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/assignees", "post">; - /** - * @see https://docs.github.com/rest/issues/comments#create-an-issue-comment - */ - "POST /repos/{owner}/{repo}/issues/{issue_number}/comments": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/comments", "post">; - /** - * @see https://docs.github.com/rest/issues/issue-dependencies#add-a-dependency-an-issue-is-blocked-by - */ - "POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by", "post">; - /** - * @see https://docs.github.com/rest/issues/labels#add-labels-to-an-issue - */ - "POST /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "post">; - /** - * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-an-issue - */ - "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions", "post">; - /** - * @see https://docs.github.com/rest/issues/sub-issues#add-sub-issue - */ - "POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/sub_issues", "post">; - /** - * @see https://docs.github.com/rest/deploy-keys/deploy-keys#create-a-deploy-key - */ - "POST /repos/{owner}/{repo}/keys": Operation<"/repos/{owner}/{repo}/keys", "post">; - /** - * @see https://docs.github.com/rest/issues/labels#create-a-label - */ - "POST /repos/{owner}/{repo}/labels": Operation<"/repos/{owner}/{repo}/labels", "post">; - /** - * @see https://docs.github.com/rest/branches/branches#sync-a-fork-branch-with-the-upstream-repository - */ - "POST /repos/{owner}/{repo}/merge-upstream": Operation<"/repos/{owner}/{repo}/merge-upstream", "post">; - /** - * @see https://docs.github.com/rest/branches/branches#merge-a-branch - */ - "POST /repos/{owner}/{repo}/merges": Operation<"/repos/{owner}/{repo}/merges", "post">; - /** - * @see https://docs.github.com/rest/issues/milestones#create-a-milestone - */ - "POST /repos/{owner}/{repo}/milestones": Operation<"/repos/{owner}/{repo}/milestones", "post">; - /** - * @see https://docs.github.com/rest/pages/pages#create-a-apiname-pages-site - */ - "POST /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "post">; - /** - * @see https://docs.github.com/rest/pages/pages#request-a-apiname-pages-build - */ - "POST /repos/{owner}/{repo}/pages/builds": Operation<"/repos/{owner}/{repo}/pages/builds", "post">; - /** - * @see https://docs.github.com/rest/pages/pages#create-a-github-pages-deployment - */ - "POST /repos/{owner}/{repo}/pages/deployments": Operation<"/repos/{owner}/{repo}/pages/deployments", "post">; - /** - * @see https://docs.github.com/rest/pages/pages#cancel-a-github-pages-deployment - */ - "POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel": Operation<"/repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel", "post">; - /** - * @see https://docs.github.com/rest/projects-classic/projects#create-a-repository-project - */ - "POST /repos/{owner}/{repo}/projects": Operation<"/repos/{owner}/{repo}/projects", "post">; - /** - * @see https://docs.github.com/rest/pulls/pulls#create-a-pull-request - */ - "POST /repos/{owner}/{repo}/pulls": Operation<"/repos/{owner}/{repo}/pulls", "post">; - /** - * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-pull-request-review-comment - */ - "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "post">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#create-a-codespace-from-a-pull-request - */ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/codespaces", "post">; - /** - * @see https://docs.github.com/rest/pulls/comments#create-a-review-comment-for-a-pull-request - */ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments", "post">; - /** - * @see https://docs.github.com/rest/pulls/comments#create-a-reply-for-a-review-comment - */ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies", "post">; - /** - * @see https://docs.github.com/rest/reference/pulls#request-reviewers-for-a-pull-request - */ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "post">; - /** - * @see https://docs.github.com/rest/pulls/reviews#create-a-review-for-a-pull-request - */ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews", "post">; - /** - * @see https://docs.github.com/rest/pulls/reviews#submit-a-review-for-a-pull-request - */ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events", "post">; - /** - * @see https://docs.github.com/rest/releases/releases#create-a-release - */ - "POST /repos/{owner}/{repo}/releases": Operation<"/repos/{owner}/{repo}/releases", "post">; - /** - * @see https://docs.github.com/rest/releases/releases#generate-release-notes-content-for-a-release - */ - "POST /repos/{owner}/{repo}/releases/generate-notes": Operation<"/repos/{owner}/{repo}/releases/generate-notes", "post">; - /** - * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-release - */ - "POST /repos/{owner}/{repo}/releases/{release_id}/reactions": Operation<"/repos/{owner}/{repo}/releases/{release_id}/reactions", "post">; - /** - * @see https://docs.github.com/rest/repos/rules#create-a-repository-ruleset - */ - "POST /repos/{owner}/{repo}/rulesets": Operation<"/repos/{owner}/{repo}/rulesets", "post">; - /** - * @see https://docs.github.com/rest/secret-scanning/secret-scanning#create-a-push-protection-bypass - */ - "POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses": Operation<"/repos/{owner}/{repo}/secret-scanning/push-protection-bypasses", "post">; - /** - * @see https://docs.github.com/rest/security-advisories/repository-advisories#create-a-repository-security-advisory - */ - "POST /repos/{owner}/{repo}/security-advisories": Operation<"/repos/{owner}/{repo}/security-advisories", "post">; - /** - * @see https://docs.github.com/rest/security-advisories/repository-advisories#privately-report-a-security-vulnerability - */ - "POST /repos/{owner}/{repo}/security-advisories/reports": Operation<"/repos/{owner}/{repo}/security-advisories/reports", "post">; - /** - * @see https://docs.github.com/rest/security-advisories/repository-advisories#request-a-cve-for-a-repository-security-advisory - */ - "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve": Operation<"/repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve", "post">; - /** - * @see https://docs.github.com/rest/security-advisories/repository-advisories#create-a-temporary-private-fork - */ - "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks": Operation<"/repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks", "post">; - /** - * @see https://docs.github.com/rest/commits/statuses#create-a-commit-status - */ - "POST /repos/{owner}/{repo}/statuses/{sha}": Operation<"/repos/{owner}/{repo}/statuses/{sha}", "post">; - /** - * @see https://docs.github.com/rest/repos/tags#closing-down---create-a-tag-protection-state-for-a-repository - */ - "POST /repos/{owner}/{repo}/tags/protection": Operation<"/repos/{owner}/{repo}/tags/protection", "post">; - /** - * @see https://docs.github.com/rest/repos/repos#transfer-a-repository - */ - "POST /repos/{owner}/{repo}/transfer": Operation<"/repos/{owner}/{repo}/transfer", "post">; - /** - * @see https://docs.github.com/rest/repos/repos#create-a-repository-using-a-template - */ - "POST /repos/{template_owner}/{template_repo}/generate": Operation<"/repos/{template_owner}/{template_repo}/generate", "post">; - /** - * @see https://docs.github.com/rest/teams/discussions#create-a-discussion-legacy - */ - "POST /teams/{team_id}/discussions": Operation<"/teams/{team_id}/discussions", "post">; - /** - * @see https://docs.github.com/rest/teams/discussion-comments#create-a-discussion-comment-legacy - */ - "POST /teams/{team_id}/discussions/{discussion_number}/comments": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments", "post">; - /** - * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion-comment-legacy - */ - "POST /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "post">; - /** - * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion-legacy - */ - "POST /teams/{team_id}/discussions/{discussion_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/reactions", "post">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#create-a-codespace-for-the-authenticated-user - */ - "POST /user/codespaces": Operation<"/user/codespaces", "post">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#export-a-codespace-for-the-authenticated-user - */ - "POST /user/codespaces/{codespace_name}/exports": Operation<"/user/codespaces/{codespace_name}/exports", "post">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#create-a-repository-from-an-unpublished-codespace - */ - "POST /user/codespaces/{codespace_name}/publish": Operation<"/user/codespaces/{codespace_name}/publish", "post">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#start-a-codespace-for-the-authenticated-user - */ - "POST /user/codespaces/{codespace_name}/start": Operation<"/user/codespaces/{codespace_name}/start", "post">; - /** - * @see https://docs.github.com/rest/codespaces/codespaces#stop-a-codespace-for-the-authenticated-user - */ - "POST /user/codespaces/{codespace_name}/stop": Operation<"/user/codespaces/{codespace_name}/stop", "post">; - /** - * @see https://docs.github.com/rest/users/emails#add-an-email-address-for-the-authenticated-user - */ - "POST /user/emails": Operation<"/user/emails", "post">; - /** - * @see https://docs.github.com/rest/users/gpg-keys#create-a-gpg-key-for-the-authenticated-user - */ - "POST /user/gpg_keys": Operation<"/user/gpg_keys", "post">; - /** - * @see https://docs.github.com/rest/users/keys#create-a-public-ssh-key-for-the-authenticated-user - */ - "POST /user/keys": Operation<"/user/keys", "post">; - /** - * @see https://docs.github.com/rest/migrations/users#start-a-user-migration - */ - "POST /user/migrations": Operation<"/user/migrations", "post">; - /** - * @see https://docs.github.com/rest/packages/packages#restore-a-package-for-the-authenticated-user - */ - "POST /user/packages/{package_type}/{package_name}/restore{?token}": Operation<"/user/packages/{package_type}/{package_name}/restore", "post">; - /** - * @see https://docs.github.com/rest/packages/packages#restore-a-package-version-for-the-authenticated-user - */ - "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": Operation<"/user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", "post">; - /** - * @see https://docs.github.com/rest/projects-classic/projects#create-a-user-project - */ - "POST /user/projects": Operation<"/user/projects", "post">; - /** - * @see https://docs.github.com/rest/repos/repos#create-a-repository-for-the-authenticated-user - */ - "POST /user/repos": Operation<"/user/repos", "post">; - /** - * @see https://docs.github.com/rest/users/social-accounts#add-social-accounts-for-the-authenticated-user - */ - "POST /user/social_accounts": Operation<"/user/social_accounts", "post">; - /** - * @see https://docs.github.com/rest/users/ssh-signing-keys#create-a-ssh-signing-key-for-the-authenticated-user - */ - "POST /user/ssh_signing_keys": Operation<"/user/ssh_signing_keys", "post">; - /** - * @see https://docs.github.com/rest/users/attestations#list-attestations-by-bulk-subject-digests - */ - "POST /users/{username}/attestations/bulk-list{?per_page,before,after}": Operation<"/users/{username}/attestations/bulk-list", "post">; - /** - * @see https://docs.github.com/rest/users/attestations#delete-attestations-in-bulk - */ - "POST /users/{username}/attestations/delete-request": Operation<"/users/{username}/attestations/delete-request", "post">; - /** - * @see https://docs.github.com/rest/packages/packages#restore-a-package-for-a-user - */ - "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}": Operation<"/users/{username}/packages/{package_type}/{package_name}/restore", "post">; - /** - * @see https://docs.github.com/rest/packages/packages#restore-package-version-for-a-user - */ - "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": Operation<"/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", "post">; - /** - * @see https://docs.github.com/rest/projects/items#add-item-to-user-owned-project - */ - "POST /users/{username}/projectsV2/{project_number}/items": Operation<"/users/{username}/projectsV2/{project_number}/items", "post">; - /** - * @see https://docs.github.com/rest/releases/assets#upload-a-release-asset - */ - "POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}": Operation<"/repos/{owner}/{repo}/releases/{release_id}/assets", "post">; - /** - * @see https://docs.github.com/rest/apps/apps#suspend-an-app-installation - */ - "PUT /app/installations/{installation_id}/suspended": Operation<"/app/installations/{installation_id}/suspended", "put">; - /** - * @see https://docs.github.com/rest/code-security/configurations#set-a-code-security-configuration-as-a-default-for-an-enterprise - */ - "PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults": Operation<"/enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults", "put">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-members#add-team-member - */ - "PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}": Operation<"/enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}", "put">; - /** - * @see https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#add-an-organization-assignment - */ - "PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}": Operation<"/enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}", "put">; - /** - * @see https://docs.github.com/rest/gists/gists#star-a-gist - */ - "PUT /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "put">; - /** - * @see https://docs.github.com/rest/activity/notifications#mark-notifications-as-read - */ - "PUT /notifications": Operation<"/notifications", "put">; - /** - * @see https://docs.github.com/rest/activity/notifications#set-a-thread-subscription - */ - "PUT /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "put">; - /** - * @see https://docs.github.com/rest/dependabot/repository-access#set-the-default-repository-access-level-for-dependabot - */ - "PUT /organizations/{org}/dependabot/repository-access/default-level": Operation<"/organizations/{org}/dependabot/repository-access/default-level", "put">; - /** - * @see https://docs.github.com/rest/actions/oidc#set-the-customization-template-for-an-oidc-subject-claim-for-an-organization - */ - "PUT /orgs/{org}/actions/oidc/customization/sub": Operation<"/orgs/{org}/actions/oidc/customization/sub", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-github-actions-permissions-for-an-organization - */ - "PUT /orgs/{org}/actions/permissions": Operation<"/orgs/{org}/actions/permissions", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-artifact-and-log-retention-settings-for-an-organization - */ - "PUT /orgs/{org}/actions/permissions/artifact-and-log-retention": Operation<"/orgs/{org}/actions/permissions/artifact-and-log-retention", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-fork-pr-contributor-approval-permissions-for-an-organization - */ - "PUT /orgs/{org}/actions/permissions/fork-pr-contributor-approval": Operation<"/orgs/{org}/actions/permissions/fork-pr-contributor-approval", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-private-repo-fork-pr-workflow-settings-for-an-organization - */ - "PUT /orgs/{org}/actions/permissions/fork-pr-workflows-private-repos": Operation<"/orgs/{org}/actions/permissions/fork-pr-workflows-private-repos", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-selected-repositories-enabled-for-github-actions-in-an-organization - */ - "PUT /orgs/{org}/actions/permissions/repositories": Operation<"/orgs/{org}/actions/permissions/repositories", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#enable-a-selected-repository-for-github-actions-in-an-organization - */ - "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}": Operation<"/orgs/{org}/actions/permissions/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-allowed-actions-and-reusable-workflows-for-an-organization - */ - "PUT /orgs/{org}/actions/permissions/selected-actions": Operation<"/orgs/{org}/actions/permissions/selected-actions", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-self-hosted-runners-settings-for-an-organization - */ - "PUT /orgs/{org}/actions/permissions/self-hosted-runners": Operation<"/orgs/{org}/actions/permissions/self-hosted-runners", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-repositories-allowed-to-use-self-hosted-runners-in-an-organization - */ - "PUT /orgs/{org}/actions/permissions/self-hosted-runners/repositories": Operation<"/orgs/{org}/actions/permissions/self-hosted-runners/repositories", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#add-a-repository-to-the-list-of-repositories-allowed-to-use-self-hosted-runners-in-an-organization - */ - "PUT /orgs/{org}/actions/permissions/self-hosted-runners/repositories/{repository_id}": Operation<"/orgs/{org}/actions/permissions/self-hosted-runners/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-default-workflow-permissions-for-an-organization - */ - "PUT /orgs/{org}/actions/permissions/workflow": Operation<"/orgs/{org}/actions/permissions/workflow", "put">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#set-repository-access-for-a-self-hosted-runner-group-in-an-organization - */ - "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "put">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#add-repository-access-to-a-self-hosted-runner-group-in-an-organization - */ - "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#set-self-hosted-runners-in-a-group-for-an-organization - */ - "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/runners": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "put">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#add-a-self-hosted-runner-to-a-group-for-an-organization - */ - "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "put">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#set-custom-labels-for-a-self-hosted-runner-for-an-organization - */ - "PUT /orgs/{org}/actions/runners/{runner_id}/labels": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret - */ - "PUT /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "put">; - /** - * @see https://docs.github.com/rest/actions/secrets#set-selected-repositories-for-an-organization-secret - */ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories", "put">; - /** - * @see https://docs.github.com/rest/actions/secrets#add-selected-repository-to-an-organization-secret - */ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/actions/variables#set-selected-repositories-for-an-organization-variable - */ - "PUT /orgs/{org}/actions/variables/{name}/repositories": Operation<"/orgs/{org}/actions/variables/{name}/repositories", "put">; - /** - * @see https://docs.github.com/rest/actions/variables#add-selected-repository-to-an-organization-variable - */ - "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/variables/{name}/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/orgs/blocking#block-a-user-from-an-organization - */ - "PUT /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "put">; - /** - * @see https://docs.github.com/rest/code-security/configurations#set-a-code-security-configuration-as-a-default-for-an-organization - */ - "PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults": Operation<"/orgs/{org}/code-security/configurations/{configuration_id}/defaults", "put">; - /** - * @see https://docs.github.com/rest/codespaces/organizations#manage-access-control-for-organization-codespaces - */ - "PUT /orgs/{org}/codespaces/access": Operation<"/orgs/{org}/codespaces/access", "put">; - /** - * @see https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret - */ - "PUT /orgs/{org}/codespaces/secrets/{secret_name}": Operation<"/orgs/{org}/codespaces/secrets/{secret_name}", "put">; - /** - * @see https://docs.github.com/rest/codespaces/organization-secrets#set-selected-repositories-for-an-organization-secret - */ - "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/codespaces/secrets/{secret_name}/repositories", "put">; - /** - * @see https://docs.github.com/rest/codespaces/organization-secrets#add-selected-repository-to-an-organization-secret - */ - "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/reference/dependabot#create-or-update-an-organization-secret - */ - "PUT /orgs/{org}/dependabot/secrets/{secret_name}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}", "put">; - /** - * @see https://docs.github.com/rest/dependabot/secrets#set-selected-repositories-for-an-organization-secret - */ - "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}/repositories", "put">; - /** - * @see https://docs.github.com/rest/dependabot/secrets#add-selected-repository-to-an-organization-secret - */ - "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/interactions/orgs#set-interaction-restrictions-for-an-organization - */ - "PUT /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "put">; - /** - * @see https://docs.github.com/rest/orgs/issue-types#update-issue-type-for-an-organization - */ - "PUT /orgs/{org}/issue-types/{issue_type_id}": Operation<"/orgs/{org}/issue-types/{issue_type_id}", "put">; - /** - * @see https://docs.github.com/rest/orgs/members#set-organization-membership-for-a-user - */ - "PUT /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "put">; - /** - * @see https://docs.github.com/rest/orgs/organization-roles#assign-an-organization-role-to-a-team - */ - "PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}": Operation<"/orgs/{org}/organization-roles/teams/{team_slug}/{role_id}", "put">; - /** - * @see https://docs.github.com/rest/orgs/organization-roles#assign-an-organization-role-to-a-user - */ - "PUT /orgs/{org}/organization-roles/users/{username}/{role_id}": Operation<"/orgs/{org}/organization-roles/users/{username}/{role_id}", "put">; - /** - * @see https://docs.github.com/rest/orgs/outside-collaborators#convert-an-organization-member-to-outside-collaborator - */ - "PUT /orgs/{org}/outside_collaborators/{username}": Operation<"/orgs/{org}/outside_collaborators/{username}", "put">; - /** - * @see https://docs.github.com/rest/orgs/custom-properties#create-or-update-a-custom-property-for-an-organization - */ - "PUT /orgs/{org}/properties/schema/{custom_property_name}": Operation<"/orgs/{org}/properties/schema/{custom_property_name}", "put">; - /** - * @see https://docs.github.com/rest/orgs/members#set-public-organization-membership-for-the-authenticated-user - */ - "PUT /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "put">; - /** - * @see https://docs.github.com/rest/orgs/rules#update-an-organization-repository-ruleset - */ - "PUT /orgs/{org}/rulesets/{ruleset_id}": Operation<"/orgs/{org}/rulesets/{ruleset_id}", "put">; - /** - * @see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team - */ - "PUT /orgs/{org}/security-managers/teams/{team_slug}": Operation<"/orgs/{org}/security-managers/teams/{team_slug}", "put">; - /** - * @see https://docs.github.com/rest/orgs/orgs#set-immutable-releases-settings-for-an-organization - */ - "PUT /orgs/{org}/settings/immutable-releases": Operation<"/orgs/{org}/settings/immutable-releases", "put">; - /** - * @see https://docs.github.com/rest/orgs/orgs#set-selected-repositories-for-immutable-releases-enforcement - */ - "PUT /orgs/{org}/settings/immutable-releases/repositories": Operation<"/orgs/{org}/settings/immutable-releases/repositories", "put">; - /** - * @see https://docs.github.com/rest/orgs/orgs#enable-a-selected-repository-for-immutable-releases-in-an-organization - */ - "PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}": Operation<"/orgs/{org}/settings/immutable-releases/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user - */ - "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "put">; - /** - * @see https://docs.github.com/rest/teams/teams#add-or-update-team-project-permissions - */ - "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "put">; - /** - * @see https://docs.github.com/rest/teams/teams#add-or-update-team-repository-permissions - */ - "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "put">; - /** - * @see https://docs.github.com/rest/projects-classic/collaborators#add-project-collaborator - */ - "PUT /projects/{project_id}/collaborators/{username}": Operation<"/projects/{project_id}/collaborators/{username}", "put">; - /** - * @see https://docs.github.com/rest/actions/oidc#set-the-customization-template-for-an-oidc-subject-claim-for-a-repository - */ - "PUT /repos/{owner}/{repo}/actions/oidc/customization/sub": Operation<"/repos/{owner}/{repo}/actions/oidc/customization/sub", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-github-actions-permissions-for-a-repository - */ - "PUT /repos/{owner}/{repo}/actions/permissions": Operation<"/repos/{owner}/{repo}/actions/permissions", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-the-level-of-access-for-workflows-outside-of-the-repository - */ - "PUT /repos/{owner}/{repo}/actions/permissions/access": Operation<"/repos/{owner}/{repo}/actions/permissions/access", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-artifact-and-log-retention-settings-for-a-repository - */ - "PUT /repos/{owner}/{repo}/actions/permissions/artifact-and-log-retention": Operation<"/repos/{owner}/{repo}/actions/permissions/artifact-and-log-retention", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-fork-pr-contributor-approval-permissions-for-a-repository - */ - "PUT /repos/{owner}/{repo}/actions/permissions/fork-pr-contributor-approval": Operation<"/repos/{owner}/{repo}/actions/permissions/fork-pr-contributor-approval", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-private-repo-fork-pr-workflow-settings-for-a-repository - */ - "PUT /repos/{owner}/{repo}/actions/permissions/fork-pr-workflows-private-repos": Operation<"/repos/{owner}/{repo}/actions/permissions/fork-pr-workflows-private-repos", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-allowed-actions-and-reusable-workflows-for-a-repository - */ - "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions": Operation<"/repos/{owner}/{repo}/actions/permissions/selected-actions", "put">; - /** - * @see https://docs.github.com/rest/actions/permissions#set-default-workflow-permissions-for-a-repository - */ - "PUT /repos/{owner}/{repo}/actions/permissions/workflow": Operation<"/repos/{owner}/{repo}/actions/permissions/workflow", "put">; - /** - * @see https://docs.github.com/rest/actions/self-hosted-runners#set-custom-labels-for-a-self-hosted-runner-for-a-repository - */ - "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "put">; - /** - * @see https://docs.github.com/rest/actions/secrets#create-or-update-a-repository-secret - */ - "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "put">; - /** - * @see https://docs.github.com/rest/actions/workflows#disable-a-workflow - */ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable", "put">; - /** - * @see https://docs.github.com/rest/actions/workflows#enable-a-workflow - */ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable", "put">; - /** - * @see https://docs.github.com/rest/repos/repos#enable-dependabot-security-updates - */ - "PUT /repos/{owner}/{repo}/automated-security-fixes": Operation<"/repos/{owner}/{repo}/automated-security-fixes", "put">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#update-branch-protection - */ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "put">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#set-status-check-contexts - */ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "put">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#set-app-access-restrictions - */ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "put">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#set-team-access-restrictions - */ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "put">; - /** - * @see https://docs.github.com/rest/branches/branch-protection#set-user-access-restrictions - */ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "put">; - /** - * @see https://docs.github.com/rest/codespaces/repository-secrets#create-or-update-a-repository-secret - */ - "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/codespaces/secrets/{secret_name}", "put">; - /** - * @see https://docs.github.com/rest/collaborators/collaborators#add-a-repository-collaborator - */ - "PUT /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "put">; - /** - * @see https://docs.github.com/rest/repos/contents#create-or-update-file-contents - */ - "PUT /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "put">; - /** - * @see https://docs.github.com/rest/dependabot/secrets#create-or-update-a-repository-secret - */ - "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/dependabot/secrets/{secret_name}", "put">; - /** - * @see https://docs.github.com/rest/deployments/environments#create-or-update-an-environment - */ - "PUT /repos/{owner}/{repo}/environments/{environment_name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}", "put">; - /** - * @see https://docs.github.com/rest/deployments/branch-policies#update-a-deployment-branch-policy - */ - "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}", "put">; - /** - * @see https://docs.github.com/rest/actions/secrets#create-or-update-an-environment-secret - */ - "PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}", "put">; - /** - * @see https://docs.github.com/rest/repos/repos#enable-immutable-releases - */ - "PUT /repos/{owner}/{repo}/immutable-releases": Operation<"/repos/{owner}/{repo}/immutable-releases", "put">; - /** - * @see https://docs.github.com/rest/migrations/source-imports#start-an-import - */ - "PUT /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "put">; - /** - * @see https://docs.github.com/rest/interactions/repos#set-interaction-restrictions-for-a-repository - */ - "PUT /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "put">; - /** - * @see https://docs.github.com/rest/issues/labels#set-labels-for-an-issue - */ - "PUT /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "put">; - /** - * @see https://docs.github.com/rest/issues/issues#lock-an-issue - */ - "PUT /repos/{owner}/{repo}/issues/{issue_number}/lock": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/lock", "put">; - /** - * @see https://docs.github.com/rest/activity/notifications#mark-repository-notifications-as-read - */ - "PUT /repos/{owner}/{repo}/notifications": Operation<"/repos/{owner}/{repo}/notifications", "put">; - /** - * @see https://docs.github.com/rest/pages/pages#update-information-about-a-apiname-pages-site - */ - "PUT /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "put">; - /** - * @see https://docs.github.com/rest/repos/repos#enable-private-vulnerability-reporting-for-a-repository - */ - "PUT /repos/{owner}/{repo}/private-vulnerability-reporting": Operation<"/repos/{owner}/{repo}/private-vulnerability-reporting", "put">; - /** - * @see https://docs.github.com/rest/pulls/pulls#merge-a-pull-request - */ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/merge", "put">; - /** - * @see https://docs.github.com/rest/pulls/reviews#update-a-review-for-a-pull-request - */ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "put">; - /** - * @see https://docs.github.com/rest/pulls/reviews#dismiss-a-review-for-a-pull-request - */ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals", "put">; - /** - * @see https://docs.github.com/rest/pulls/pulls#update-a-pull-request-branch - */ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/update-branch", "put">; - /** - * @see https://docs.github.com/rest/repos/rules#update-a-repository-ruleset - */ - "PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}": Operation<"/repos/{owner}/{repo}/rulesets/{ruleset_id}", "put">; - /** - * @see https://docs.github.com/rest/activity/watching#set-a-repository-subscription - */ - "PUT /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "put">; - /** - * @see https://docs.github.com/rest/repos/repos#replace-all-repository-topics - */ - "PUT /repos/{owner}/{repo}/topics": Operation<"/repos/{owner}/{repo}/topics", "put">; - /** - * @see https://docs.github.com/rest/repos/repos#enable-vulnerability-alerts - */ - "PUT /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "put">; - /** - * @see https://docs.github.com/rest/teams/members#add-team-member-legacy - */ - "PUT /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "put">; - /** - * @see https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user-legacy - */ - "PUT /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "put">; - /** - * @see https://docs.github.com/rest/teams/teams#add-or-update-team-project-permissions-legacy - */ - "PUT /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "put">; - /** - * @see https://docs.github.com/rest/teams/teams#add-or-update-team-repository-permissions-legacy - */ - "PUT /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "put">; - /** - * @see https://docs.github.com/rest/users/blocking#block-a-user - */ - "PUT /user/blocks/{username}": Operation<"/user/blocks/{username}", "put">; - /** - * @see https://docs.github.com/rest/codespaces/secrets#create-or-update-a-secret-for-the-authenticated-user - */ - "PUT /user/codespaces/secrets/{secret_name}": Operation<"/user/codespaces/secrets/{secret_name}", "put">; - /** - * @see https://docs.github.com/rest/codespaces/secrets#set-selected-repositories-for-a-user-secret - */ - "PUT /user/codespaces/secrets/{secret_name}/repositories": Operation<"/user/codespaces/secrets/{secret_name}/repositories", "put">; - /** - * @see https://docs.github.com/rest/codespaces/secrets#add-a-selected-repository-to-a-user-secret - */ - "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}": Operation<"/user/codespaces/secrets/{secret_name}/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/users/followers#follow-a-user - */ - "PUT /user/following/{username}": Operation<"/user/following/{username}", "put">; - /** - * @see https://docs.github.com/rest/apps/installations#add-a-repository-to-an-app-installation - */ - "PUT /user/installations/{installation_id}/repositories/{repository_id}": Operation<"/user/installations/{installation_id}/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/interactions/user#set-interaction-restrictions-for-your-public-repositories - */ - "PUT /user/interaction-limits": Operation<"/user/interaction-limits", "put">; - /** - * @see https://docs.github.com/rest/activity/starring#star-a-repository-for-the-authenticated-user - */ - "PUT /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "put">; -} -export type EndpointKeys = keyof Endpoints; -export {}; diff --git a/sdks/nodejs/node_modules/@octokit/types/dist-types/index.d.ts b/sdks/nodejs/node_modules/@octokit/types/dist-types/index.d.ts deleted file mode 100644 index a640e7c..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/dist-types/index.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -export * from "./AuthInterface.js"; -export * from "./EndpointDefaults.js"; -export * from "./EndpointInterface.js"; -export * from "./EndpointOptions.js"; -export * from "./Fetch.js"; -export * from "./OctokitResponse.js"; -export * from "./RequestError.js"; -export * from "./RequestHeaders.js"; -export * from "./RequestInterface.js"; -export * from "./RequestMethod.js"; -export * from "./RequestOptions.js"; -export * from "./RequestParameters.js"; -export * from "./RequestRequestOptions.js"; -export * from "./ResponseHeaders.js"; -export * from "./Route.js"; -export * from "./StrategyInterface.js"; -export * from "./Url.js"; -export * from "./VERSION.js"; -export * from "./GetResponseTypeFromEndpointMethod.js"; -export * from "./generated/Endpoints.js"; diff --git a/sdks/nodejs/node_modules/@octokit/types/package.json b/sdks/nodejs/node_modules/@octokit/types/package.json deleted file mode 100644 index 13e7364..0000000 --- a/sdks/nodejs/node_modules/@octokit/types/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "@octokit/types", - "version": "16.0.0", - "publishConfig": { - "access": "public", - "provenance": true - }, - "description": "Shared TypeScript definitions for Octokit projects", - "dependencies": { - "@octokit/openapi-types": "^27.0.0" - }, - "repository": "github:octokit/types.ts", - "keywords": [ - "github", - "api", - "sdk", - "toolkit", - "typescript" - ], - "author": "Gregor Martynus (https://twitter.com/gr2m)", - "license": "MIT", - "devDependencies": { - "@octokit/tsconfig": "^4.0.0", - "github-openapi-graphql-query": "^5.0.0", - "handlebars": "^4.7.6", - "npm-run-all2": "^8.0.0", - "prettier": "^3.0.0", - "semantic-release": "^25.0.0", - "semantic-release-plugin-update-version-in-files": "^2.0.0", - "sort-keys": "^6.0.0", - "typedoc": "^0.28.0", - "typescript": "^5.0.0" - }, - "octokit": { - "openapi-version": "21.0.0" - }, - "files": [ - "dist-types/**" - ], - "types": "dist-types/index.d.ts", - "sideEffects": false -} diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/README.md b/sdks/nodejs/node_modules/@tybys/wasm-util/README.md deleted file mode 100644 index b36fdf0..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/README.md +++ /dev/null @@ -1,193 +0,0 @@ -# @tybys/wasm-util - -WebAssembly related utils for browser environment - -**The output code is ES2019** - -## Features - -All example code below need to be bundled by ES module bundlers like `webpack` / `rollup`, or specify import map in browser native ES module runtime. - -### WASI polyfill for browser - -The API is similar to the `require('wasi').WASI` in Node.js. - -You can use `memfs-browser` to provide filesystem capability. - -- Example: [https://github.com/toyobayashi/wasi-wabt](https://github.com/toyobayashi/wasi-wabt) -- Demo: [https://toyobayashi.github.io/wasi-wabt/](https://toyobayashi.github.io/wasi-wabt/) - -```js -import { load, WASI } from '@tybys/wasm-util' -import { Volume, createFsFromVolume } from 'memfs-browser' - -const fs = createFsFromVolume(Volume.fromJSON({ - '/home/wasi': null -})) - -const wasi = new WASI({ - args: ['chrome', 'file.wasm'], - env: { - NODE_ENV: 'development', - WASI_SDK_PATH: '/opt/wasi-sdk' - }, - preopens: { - '/': '/' - }, - fs, - - // redirect stdout / stderr - - // print (text) { console.log(text) }, - // printErr (text) { console.error(text) } -}) - -const imports = { - wasi_snapshot_preview1: wasi.wasiImport -} - -const { module, instance } = await load('/path/to/file.wasm', imports) -wasi.start(instance) -// wasi.initialize(instance) -``` - -Implemented syscalls: [wasi_snapshot_preview1](#wasi_snapshot_preview1) - -### `load` / `loadSync` - -`loadSync` has 4KB wasm size limit in browser. - -```js -// bundler -import { load, loadSync } from '@tybys/wasm-util' - -const imports = { /* ... */ } - -// using path -const { module, instance } = await load('/path/to/file.wasm', imports) -const { module, instance } = loadSync('/path/to/file.wasm', imports) - -// using URL -const { module, instance } = await load(new URL('./file.wasm', import.meta.url), imports) -const { module, instance } = loadSync(new URL('./file.wasm', import.meta.url), imports) - -// using Uint8Array -const buffer = new Uint8Array([ - 0x00, 0x61, 0x73, 0x6d, - 0x01, 0x00, 0x00, 0x00 -]) -const { module, instance } = await load(buffer, imports) -const { module, instance } = loadSync(buffer, imports) - -// auto asyncify -const { - module, - instance: asyncifiedInstance -} = await load(buffer, imports, { /* asyncify options */}) -asyncifiedInstance.exports.fn() // => return Promise -``` - -### Extend Memory instance - -```js -import { Memory, extendMemory } from '@tybys/wasm-util' - -const memory = new WebAssembly.Memory({ initial: 256 }) -// const memory = instance.exports.memory - -extendMemory(memory) -console.log(memory instanceof Memory) -console.log(memory instanceof WebAssembly.Memory) -// expose memory view getters like Emscripten -const { HEAPU8, HEAPU32, view } = memory -``` - -### Asyncify wrap - -Build the C code using `clang`, `wasm-ld` and `wasm-opt` - -```c -void async_sleep(int ms); - -int main() { - async_sleep(200); - return 0; -} -``` - -```js -import { Asyncify } from '@tybys/wasm-util' - -const asyncify = new Asyncify() - -const imports = { - env: { - async_sleep: asyncify.wrapImportFunction(function (ms) { - return new Promise((resolve) => { - setTimeout(resolve, ms) - }) - }) - } -} - -// async_sleep(200) -const bytes = await (await fetch('/asyncfied_by_wasm-opt.wasm')).arrayBuffer() -const { instance } = await WebAssembly.instantiate(bytes, imports) -const asyncifiedInstance = asyncify.init(instance.exports.memory, instance, { - wrapExports: ['_start'] -}) - -const p = asyncifedInstance._start() -console.log(typeof p.then === 'function') -const now = Date.now() -await p -console.log(Date.now() - now >= 200) -``` - -### wasi_snapshot_preview1 - -- [x] args_get -- [x] args_sizes_get -- [x] environ_get -- [x] environ_sizes_get -- [x] clock_res_get -- [x] clock_time_get -- [ ] ~~fd_advise~~ -- [x] fd_allocate -- [x] fd_close -- [x] fd_datasync -- [x] fd_fdstat_get -- [ ] ~~fd_fdstat_set_flags~~ -- [x] fd_fdstat_set_rights -- [x] fd_filestat_get -- [x] fd_filestat_set_size -- [x] fd_filestat_set_times -- [x] fd_pread -- [x] fd_prestat_get -- [x] fd_prestat_dir_name -- [x] fd_pwrite -- [x] fd_read -- [x] fd_readdir -- [x] fd_renumber -- [x] fd_seek -- [x] fd_sync -- [x] fd_tell -- [x] fd_write -- [x] path_create_directory -- [x] path_filestat_get -- [x] path_filestat_set_times -- [x] path_link -- [x] path_open -- [x] path_readlink -- [x] path_remove_directory -- [x] path_rename -- [x] path_symlink -- [x] path_unlink_file -- [x] poll_oneoff (timer only) -- [x] proc_exit -- [ ] ~~proc_raise~~ -- [x] sched_yield -- [x] random_get -- [ ] ~~sock_recv~~ -- [ ] ~~sock_send~~ -- [ ] ~~sock_shutdown~~ diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/tsdoc-metadata.json b/sdks/nodejs/node_modules/@tybys/wasm-util/dist/tsdoc-metadata.json deleted file mode 100644 index d842c0e..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/tsdoc-metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -// This file is read by tools that parse documentation comments conforming to the TSDoc standard. -// It should be published with your NPM package. It should not be tracked by Git. -{ - "tsdocVersion": "0.12", - "toolPackages": [ - { - "packageName": "@microsoft/api-extractor", - "packageVersion": "7.34.4" - } - ] -} diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.d.ts b/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.d.ts deleted file mode 100644 index 2e6a959..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.d.ts +++ /dev/null @@ -1,423 +0,0 @@ -/** - * @packageDocumentation - */ - -/** @public */ -export declare class Asyncify { - private value; - private exports; - private dataPtr; - init>>(memory: WebAssembly.Memory, instance: { - readonly exports: T; - }, options: AsyncifyOptions): { - readonly exports: AsyncifyExports; - }; - private assertState; - wrapImportFunction(f: T): T; - wrapImports(imports: T): T; - wrapExportFunction(f: T): AsyncifyExportFunction; - wrapExports(exports: T): AsyncifyExports; - wrapExports>>(exports: T, needWrap: U): AsyncifyExports; -} - -/** @public */ -export declare type AsyncifyExportFunction = T extends Callable ? (...args: Parameters) => Promise> : T; - -/** @public */ -export declare type AsyncifyExportName = 'asyncify_get_state' | 'asyncify_start_unwind' | 'asyncify_stop_unwind' | 'asyncify_start_rewind' | 'asyncify_stop_rewind'; - -/** @public */ -export declare type AsyncifyExports = T extends Record ? { - [P in keyof T]: T[P] extends Callable ? U extends Array> ? P extends U[number] ? AsyncifyExportFunction : T[P] : AsyncifyExportFunction : T[P]; -} : T; - -/** @public */ -export declare function asyncifyLoad(asyncify: AsyncifyOptions, urlOrBuffer: string | URL | BufferSource | WebAssembly.Module, imports?: WebAssembly.Imports): Promise; - -/** @public */ -export declare function asyncifyLoadSync(asyncify: AsyncifyOptions, buffer: BufferSource | WebAssembly.Module, imports?: WebAssembly.Imports): WebAssembly.WebAssemblyInstantiatedSource; - -/** @public */ -export declare interface AsyncifyOptions { - wasm64?: boolean; - tryAllocate?: boolean | { - size?: number; - name?: string; - }; - wrapExports?: string[]; -} - -/** @public */ -export declare interface AsyncWASIOptions extends WASIOptions { - fs: { - promises: IFsPromises; - }; - asyncify?: Asyncify; -} - -/** @public */ -export declare interface BaseEncodingOptions { - encoding?: BufferEncoding_2; -} - -/** @public */ -export declare interface BigIntStats extends StatsBase { -} - -/** @public */ -declare type BufferEncoding_2 = 'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex'; -export { BufferEncoding_2 as BufferEncoding } - -/** @public */ -export declare type BufferEncodingOption = 'buffer' | { - encoding: 'buffer'; -}; - -/** @public */ -export declare type Callable = (...args: any[]) => any; - -/** @public */ -export declare function createAsyncWASI(options?: AsyncWASIOptions): Promise; - -/** @public */ -export declare function extendMemory(memory: WebAssembly.Memory): Memory; - -/** @public */ -export declare interface FileHandle { - readonly fd: number; - datasync(): Promise; - sync(): Promise; - read(buffer: TBuffer, offset?: number, length?: number, position?: number): Promise<{ - bytesRead: number; - buffer: TBuffer; - }>; - stat(opts?: StatOptions & { - bigint?: false; - }): Promise; - stat(opts: StatOptions & { - bigint: true; - }): Promise; - stat(opts?: StatOptions): Promise; - truncate(len?: number): Promise; - utimes(atime: string | number | Date, mtime: string | number | Date): Promise; - write(buffer: TBuffer, offset?: number, length?: number, position?: number): Promise<{ - bytesWritten: number; - buffer: TBuffer; - }>; - write(data: string | Uint8Array, position?: number, encoding?: BufferEncoding_2): Promise<{ - bytesWritten: number; - buffer: string; - }>; - close(): Promise; -} - -/** @public */ -export declare interface FinalizeBindingsOptions { - memory?: WebAssembly.Memory; -} - -/** @public */ -export declare interface IDirent { - isFile(): boolean; - isDirectory(): boolean; - isBlockDevice(): boolean; - isCharacterDevice(): boolean; - isSymbolicLink(): boolean; - isFIFO(): boolean; - isSocket(): boolean; - name: string; -} - -/** @public */ -export declare interface IFs { - fstatSync(fd: number, options?: StatOptions & { - bigint?: false; - }): Stats; - fstatSync(fd: number, options: StatOptions & { - bigint: true; - }): BigIntStats; - fstatSync(fd: number, options?: StatOptions): Stats | BigIntStats; - statSync(path: PathLike, options?: StatOptions & { - bigint?: false; - }): Stats; - statSync(path: PathLike, options: StatOptions & { - bigint: true; - }): BigIntStats; - statSync(path: PathLike, options?: StatOptions): Stats | BigIntStats; - lstatSync(path: PathLike, options?: StatOptions & { - bigint?: false; - }): Stats; - lstatSync(path: PathLike, options: StatOptions & { - bigint: true; - }): BigIntStats; - lstatSync(path: PathLike, options?: StatOptions): Stats | BigIntStats; - utimesSync(path: PathLike, atime: string | number | Date, mtime: string | number | Date): void; - openSync(path: PathLike, flags: OpenMode, mode?: Mode): number; - readSync(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number | null): number; - readSync(fd: number, buffer: ArrayBufferView, opts?: ReadSyncOptions): number; - writeSync(fd: number, buffer: ArrayBufferView, offset?: number, length?: number, position?: number): number; - writeSync(fd: number, string: string, position?: number, encoding?: BufferEncoding_2): number; - closeSync(fd: number): void; - readlinkSync(path: PathLike, options?: BaseEncodingOptions | BufferEncoding_2): string; - readlinkSync(path: PathLike, options: BufferEncodingOption): Uint8Array; - readlinkSync(path: PathLike, options?: BaseEncodingOptions | string): string | Uint8Array; - realpathSync(path: PathLike, options?: BaseEncodingOptions | BufferEncoding_2): string; - realpathSync(path: PathLike, options: BufferEncodingOption): Uint8Array; - realpathSync(path: PathLike, options?: BaseEncodingOptions | string): string | Uint8Array; - truncateSync(path: PathLike, len?: number): void; - ftruncateSync(fd: number, len?: number): void; - fdatasyncSync(fd: number): void; - futimesSync(fd: number, atime: string | number | Date, mtime: string | number | Date): void; - readdirSync(path: PathLike, options?: { - encoding: BufferEncoding_2 | null; - withFileTypes?: false; - } | BufferEncoding_2): string[]; - readdirSync(path: PathLike, options: { - encoding: 'buffer'; - withFileTypes?: false; - } | 'buffer'): Uint8Array[]; - readdirSync(path: PathLike, options?: BaseEncodingOptions & { - withFileTypes?: false; - } | BufferEncoding_2): string[] | Uint8Array[]; - readdirSync(path: PathLike, options: BaseEncodingOptions & { - withFileTypes: true; - }): IDirent[]; - fsyncSync(fd: number): void; - mkdirSync(path: PathLike, options: MakeDirectoryOptions & { - recursive: true; - }): string | undefined; - mkdirSync(path: PathLike, options?: Mode | (MakeDirectoryOptions & { - recursive?: false; - })): void; - mkdirSync(path: PathLike, options?: Mode | MakeDirectoryOptions): string | undefined; - rmdirSync(path: PathLike, options?: RmDirOptions): void; - linkSync(existingPath: PathLike, newPath: PathLike): void; - unlinkSync(path: PathLike): void; - renameSync(oldPath: PathLike, newPath: PathLike): void; - symlinkSync(target: PathLike, path: PathLike, type?: 'dir' | 'file' | 'junction'): void; -} - -/** @public */ -export declare interface IFsPromises { - stat(path: PathLike, options?: StatOptions & { - bigint?: false; - }): Promise; - stat(path: PathLike, options: StatOptions & { - bigint: true; - }): Promise; - stat(path: PathLike, options?: StatOptions): Promise; - lstat(path: PathLike, options?: StatOptions & { - bigint?: false; - }): Promise; - lstat(path: PathLike, options: StatOptions & { - bigint: true; - }): Promise; - lstat(path: PathLike, options?: StatOptions): Promise; - utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise; - open(path: PathLike, flags: OpenMode, mode?: Mode): Promise; - read(handle: FileHandle, buffer: TBuffer, offset?: number, length?: number, position?: number): Promise<{ - bytesRead: number; - buffer: TBuffer; - }>; - write(handle: FileHandle, buffer: TBuffer, offset?: number, length?: number, position?: number): Promise<{ - bytesWritten: number; - buffer: TBuffer; - }>; - readlink(path: PathLike, options?: BaseEncodingOptions | BufferEncoding_2): Promise; - readlink(path: PathLike, options: BufferEncodingOption): Promise; - readlink(path: PathLike, options?: BaseEncodingOptions | string): Promise; - realpath(path: PathLike, options?: BaseEncodingOptions | BufferEncoding_2): Promise; - realpath(path: PathLike, options: BufferEncodingOption): Promise; - realpath(path: PathLike, options?: BaseEncodingOptions | string): Promise; - truncate(path: PathLike, len?: number): Promise; - ftruncate(handle: FileHandle, len?: number): Promise; - fdatasync(handle: FileHandle): Promise; - futimes(handle: FileHandle, atime: string | number | Date, mtime: string | number | Date): Promise; - readdir(path: PathLike, options?: { - encoding: BufferEncoding_2 | null; - withFileTypes?: false; - } | BufferEncoding_2): Promise; - readdir(path: PathLike, options: { - encoding: 'buffer'; - withFileTypes?: false; - } | 'buffer'): Promise; - readdir(path: PathLike, options?: BaseEncodingOptions & { - withFileTypes?: false; - } | BufferEncoding_2): Promise; - readdir(path: PathLike, options: BaseEncodingOptions & { - withFileTypes: true; - }): Promise; - fsync(handle: FileHandle): Promise; - mkdir(path: PathLike, options: MakeDirectoryOptions & { - recursive: true; - }): Promise; - mkdir(path: PathLike, options?: Mode | (MakeDirectoryOptions & { - recursive?: false; - })): Promise; - mkdir(path: PathLike, options?: Mode | MakeDirectoryOptions): Promise; - rmdir(path: PathLike, options?: RmDirOptions): Promise; - link(existingPath: PathLike, newPath: PathLike): Promise; - unlink(path: PathLike): Promise; - rename(oldPath: PathLike, newPath: PathLike): Promise; - symlink(target: PathLike, path: PathLike, type?: 'dir' | 'file' | 'junction'): Promise; -} - -declare const kBindingName: unique symbol; - -declare const kExitCode: unique symbol; - -declare const kInstance: unique symbol; - -declare const kSetMemory: unique symbol; - -declare const kStarted: unique symbol; - -/** @public */ -export declare function load(wasmInput: string | URL | BufferSource | WebAssembly.Module, imports?: WebAssembly.Imports): Promise; - -/** @public */ -export declare function loadSync(wasmInput: BufferSource | WebAssembly.Module, imports?: WebAssembly.Imports): WebAssembly.WebAssemblyInstantiatedSource; - -/** @public */ -export declare interface MakeDirectoryOptions { - recursive?: boolean; - mode?: Mode; -} - -/** @public */ -export declare class Memory extends WebAssemblyMemory { - constructor(descriptor: WebAssembly.MemoryDescriptor); - get HEAP8(): Int8Array; - get HEAPU8(): Uint8Array; - get HEAP16(): Int16Array; - get HEAPU16(): Uint16Array; - get HEAP32(): Int32Array; - get HEAPU32(): Uint32Array; - get HEAP64(): BigInt64Array; - get HEAPU64(): BigUint64Array; - get HEAPF32(): Float32Array; - get HEAPF64(): Float64Array; - get view(): DataView; -} - -/** @public */ -export declare type Mode = number | string; - -/** @public */ -export declare type OpenMode = number | string; - -/** @public */ -export declare type PathLike = string | Uint8Array | URL; - -/** @public */ -export declare type PromisifyExports = T extends Record ? { - [P in keyof T]: T[P] extends Callable ? U extends Array ? P extends U[number] ? AsyncifyExportFunction : T[P] : AsyncifyExportFunction : T[P]; -} : T; - -/** @public */ -export declare interface ReadSyncOptions { - offset?: number; - length?: number; - position?: number; -} - -/** @public */ -export declare interface RmDirOptions { - maxRetries?: number; - recursive?: boolean; - retryDelay?: number; -} - -/** @public */ -export declare interface StatOptions { - bigint?: boolean; -} - -/** @public */ -export declare interface Stats extends StatsBase { -} - -/** @public */ -export declare interface StatsBase { - isFile(): boolean; - isDirectory(): boolean; - isBlockDevice(): boolean; - isCharacterDevice(): boolean; - isSymbolicLink(): boolean; - isFIFO(): boolean; - isSocket(): boolean; - dev: T; - ino: T; - mode: T; - nlink: T; - uid: T; - gid: T; - rdev: T; - size: T; - blksize: T; - blocks: T; - atimeMs: T; - mtimeMs: T; - ctimeMs: T; - birthtimeMs: T; - atime: Date; - mtime: Date; - ctime: Date; - birthtime: Date; -} - -/** @public */ -export declare interface SyncWASIOptions extends WASIOptions { - fs?: IFs; -} - -/** @public */ -export declare class WASI { - private [kSetMemory]; - private [kStarted]; - private [kExitCode]; - private [kInstance]; - private [kBindingName]; - readonly wasiImport: Record; - constructor(options?: SyncWASIOptions); - finalizeBindings(instance: WebAssembly.Instance, { memory }?: FinalizeBindingsOptions): void; - start(instance: WebAssembly.Instance): number | undefined | Promise | Promise; - initialize(instance: WebAssembly.Instance): void | Promise; - getImportObject(): Record>; -} - -/** @public */ -export declare interface WASIOptions { - version?: 'unstable' | 'preview1'; - args?: string[] | undefined; - env?: Record | undefined; - preopens?: Record | undefined; - /** - * @defaultValue `false` - */ - returnOnExit?: boolean | undefined; - print?: (str: string) => void; - printErr?: (str: string) => void; -} - -/** @public */ -export declare const WebAssemblyMemory: { - new (descriptor: WebAssembly.MemoryDescriptor): WebAssembly.Memory; - prototype: WebAssembly.Memory; -}; - -/** @public */ -export declare function wrapAsyncExport(f: Function): T; - -/** @public */ -export declare function wrapAsyncImport any>(f: T, parameterType: WebAssembly.ValueType[], returnType: WebAssembly.ValueType[]): (...args: [object, ...Parameters]) => ReturnType; - -/** @public */ -export declare function wrapExports(exports: T): PromisifyExports; - -/** @public */ -export declare function wrapExports>(exports: T, needWrap: U): PromisifyExports; - -export { } - -export as namespace wasmUtil; diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js b/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js deleted file mode 100644 index e567763..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +++ /dev/null @@ -1,2758 +0,0 @@ -const _WebAssembly = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; -if (!_WebAssembly) { - throw new Error('WebAssembly is not supported in this environment'); -} - -/* eslint-disable spaced-comment */ - -function validateObject(value, name) { - if (value === null || typeof value !== 'object') { - throw new TypeError(`${name} must be an object. Received ${value === null ? 'null' : typeof value}`); - } -} -function validateArray(value, name) { - if (!Array.isArray(value)) { - throw new TypeError(`${name} must be an array. Received ${value === null ? 'null' : typeof value}`); - } -} -function validateBoolean(value, name) { - if (typeof value !== 'boolean') { - throw new TypeError(`${name} must be a boolean. Received ${value === null ? 'null' : typeof value}`); - } -} -function validateString(value, name) { - if (typeof value !== 'string') { - throw new TypeError(`${name} must be a string. Received ${value === null ? 'null' : typeof value}`); - } -} -function validateFunction(value, name) { - if (typeof value !== 'function') { - throw new TypeError(`${name} must be a function. Received ${value === null ? 'null' : typeof value}`); - } -} -function validateUndefined(value, name) { - if (value !== undefined) { - throw new TypeError(`${name} must be undefined. Received ${value === null ? 'null' : typeof value}`); - } -} -function isPromiseLike(obj) { - return !!(obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'); -} -function wrapInstanceExports(exports, mapFn) { - const newExports = Object.create(null); - Object.keys(exports).forEach(name => { - const exportValue = exports[name]; - Object.defineProperty(newExports, name, { - enumerable: true, - value: mapFn(exportValue, name) - }); - }); - return newExports; -} -function sleepBreakIf(delay, breakIf) { - const start = Date.now(); - const end = start + delay; - let ret = false; - while (Date.now() < end) { - if (breakIf()) { - ret = true; - break; - } - } - return ret; -} -function unsharedSlice(view, start, end) { - return ((typeof SharedArrayBuffer === 'function' && view.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(view.buffer.constructor) === '[object SharedArrayBuffer]')) - ? view.slice(start, end) - : view.subarray(start, end); -} - -const ignoreNames = [ - 'asyncify_get_state', - 'asyncify_start_rewind', - 'asyncify_start_unwind', - 'asyncify_stop_rewind', - 'asyncify_stop_unwind' -]; -function tryAllocate(instance, wasm64, size, mallocName) { - if (typeof instance.exports[mallocName] !== 'function' || size <= 0) { - return { - wasm64, - dataPtr: 16, - start: wasm64 ? 32 : 24, - end: 1024 - }; - } - const malloc = instance.exports[mallocName]; - const dataPtr = wasm64 ? Number(malloc(BigInt(16) + BigInt(size))) : malloc(8 + size); - if (dataPtr === 0) { - throw new Error('Allocate asyncify data failed'); - } - return wasm64 - ? { wasm64, dataPtr, start: dataPtr + 16, end: dataPtr + 16 + size } - : { wasm64, dataPtr, start: dataPtr + 8, end: dataPtr + 8 + size }; -} -/** @public */ -class Asyncify { - constructor() { - this.value = undefined; - this.exports = undefined; - this.dataPtr = 0; - } - init(memory, instance, options) { - var _a, _b; - if (this.exports) { - throw new Error('Asyncify has been initialized'); - } - if (!(memory instanceof _WebAssembly.Memory)) { - throw new TypeError('Require WebAssembly.Memory object'); - } - const exports = instance.exports; - for (let i = 0; i < ignoreNames.length; ++i) { - if (typeof exports[ignoreNames[i]] !== 'function') { - throw new TypeError('Invalid asyncify wasm'); - } - } - let address; - const wasm64 = Boolean(options.wasm64); - if (!options.tryAllocate) { - address = { - wasm64, - dataPtr: 16, - start: wasm64 ? 32 : 24, - end: 1024 - }; - } - else { - if (options.tryAllocate === true) { - address = tryAllocate(instance, wasm64, 4096, 'malloc'); - } - else { - address = tryAllocate(instance, wasm64, (_a = options.tryAllocate.size) !== null && _a !== void 0 ? _a : 4096, (_b = options.tryAllocate.name) !== null && _b !== void 0 ? _b : 'malloc'); - } - } - this.dataPtr = address.dataPtr; - if (wasm64) { - new BigInt64Array(memory.buffer, this.dataPtr).set([BigInt(address.start), BigInt(address.end)]); - } - else { - new Int32Array(memory.buffer, this.dataPtr).set([address.start, address.end]); - } - this.exports = this.wrapExports(exports, options.wrapExports); - const asyncifiedInstance = Object.create(_WebAssembly.Instance.prototype); - Object.defineProperty(asyncifiedInstance, 'exports', { value: this.exports }); - // Object.setPrototypeOf(instance, Instance.prototype) - return asyncifiedInstance; - } - assertState() { - if (this.exports.asyncify_get_state() !== 0 /* AsyncifyState.NONE */) { - throw new Error('Asyncify state error'); - } - } - wrapImportFunction(f) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - return (function () { - // eslint-disable-next-line no-unreachable-loop - while (_this.exports.asyncify_get_state() === 2 /* AsyncifyState.REWINDING */) { - _this.exports.asyncify_stop_rewind(); - return _this.value; - } - _this.assertState(); - const v = f.apply(this, arguments); - if (!isPromiseLike(v)) - return v; - _this.exports.asyncify_start_unwind(_this.dataPtr); - _this.value = v; - }); - } - wrapImports(imports) { - const importObject = {}; - Object.keys(imports).forEach(k => { - const mod = imports[k]; - const newModule = {}; - Object.keys(mod).forEach(name => { - const importValue = mod[name]; - if (typeof importValue === 'function') { - newModule[name] = this.wrapImportFunction(importValue); - } - else { - newModule[name] = importValue; - } - }); - importObject[k] = newModule; - }); - return importObject; - } - wrapExportFunction(f) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - return (async function () { - _this.assertState(); - let ret = f.apply(this, arguments); - while (_this.exports.asyncify_get_state() === 1 /* AsyncifyState.UNWINDING */) { - _this.exports.asyncify_stop_unwind(); - _this.value = await _this.value; - _this.assertState(); - _this.exports.asyncify_start_rewind(_this.dataPtr); - ret = f.call(this); - } - _this.assertState(); - return ret; - }); - } - wrapExports(exports, needWrap) { - return wrapInstanceExports(exports, (exportValue, name) => { - let ignore = ignoreNames.indexOf(name) !== -1 || typeof exportValue !== 'function'; - if (Array.isArray(needWrap)) { - ignore = ignore || (needWrap.indexOf(name) === -1); - } - return ignore ? exportValue : this.wrapExportFunction(exportValue); - }); - } -} - -function validateImports(imports) { - if (imports && typeof imports !== 'object') { - throw new TypeError('imports must be an object or undefined'); - } -} -function fetchWasm(urlOrBuffer, imports) { - if (typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { - return _WebAssembly.instantiate(urlOrBuffer, imports); - } - return fetch(urlOrBuffer) - .then(response => response.arrayBuffer()) - .then(buffer => _WebAssembly.instantiate(buffer, imports)); -} -/** @public */ -function load(wasmInput, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - let source; - if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { - return _WebAssembly.instantiate(wasmInput, imports); - } - if (wasmInput instanceof _WebAssembly.Module) { - return _WebAssembly.instantiate(wasmInput, imports).then((instance) => { - return { instance, module: wasmInput }; - }); - } - if (typeof wasmInput !== 'string' && !(wasmInput instanceof URL)) { - throw new TypeError('Invalid source'); - } - if (typeof _WebAssembly.instantiateStreaming === 'function') { - let responsePromise; - try { - responsePromise = fetch(wasmInput); - source = _WebAssembly.instantiateStreaming(responsePromise, imports).catch(() => { - return fetchWasm(wasmInput, imports); - }); - } - catch (_) { - source = fetchWasm(wasmInput, imports); - } - } - else { - source = fetchWasm(wasmInput, imports); - } - return source; -} -/** @public */ -function asyncifyLoad(asyncify, urlOrBuffer, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - const asyncifyHelper = new Asyncify(); - imports = asyncifyHelper.wrapImports(imports); - return load(urlOrBuffer, imports).then(source => { - var _a; - const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); - return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; - }); -} -/** @public */ -function loadSync(wasmInput, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - let module; - if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { - module = new _WebAssembly.Module(wasmInput); - } - else if (wasmInput instanceof WebAssembly.Module) { - module = wasmInput; - } - else { - throw new TypeError('Invalid source'); - } - const instance = new _WebAssembly.Instance(module, imports); - const source = { instance, module }; - return source; -} -/** @public */ -function asyncifyLoadSync(asyncify, buffer, imports) { - var _a; - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - const asyncifyHelper = new Asyncify(); - imports = asyncifyHelper.wrapImports(imports); - const source = loadSync(buffer, imports); - const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); - return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; -} - -const CHAR_DOT = 46; /* . */ -const CHAR_FORWARD_SLASH = 47; /* / */ -function isPosixPathSeparator(code) { - return code === CHAR_FORWARD_SLASH; -} -function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { - let res = ''; - let lastSegmentLength = 0; - let lastSlash = -1; - let dots = 0; - let code = 0; - for (let i = 0; i <= path.length; ++i) { - if (i < path.length) { - code = path.charCodeAt(i); - } - else if (isPathSeparator(code)) { - break; - } - else { - code = CHAR_FORWARD_SLASH; - } - if (isPathSeparator(code)) { - if (lastSlash === i - 1 || dots === 1) ; - else if (dots === 2) { - if (res.length < 2 || lastSegmentLength !== 2 || - res.charCodeAt(res.length - 1) !== CHAR_DOT || - res.charCodeAt(res.length - 2) !== CHAR_DOT) { - if (res.length > 2) { - const lastSlashIndex = res.indexOf(separator); - if (lastSlashIndex === -1) { - res = ''; - lastSegmentLength = 0; - } - else { - res = res.slice(0, lastSlashIndex); - lastSegmentLength = - res.length - 1 - res.indexOf(separator); - } - lastSlash = i; - dots = 0; - continue; - } - else if (res.length !== 0) { - res = ''; - lastSegmentLength = 0; - lastSlash = i; - dots = 0; - continue; - } - } - if (allowAboveRoot) { - res += res.length > 0 ? `${separator}..` : '..'; - lastSegmentLength = 2; - } - } - else { - if (res.length > 0) { - res += `${separator}${path.slice(lastSlash + 1, i)}`; - } - else { - res = path.slice(lastSlash + 1, i); - } - lastSegmentLength = i - lastSlash - 1; - } - lastSlash = i; - dots = 0; - } - else if (code === CHAR_DOT && dots !== -1) { - ++dots; - } - else { - dots = -1; - } - } - return res; -} -function resolve(...args) { - let resolvedPath = ''; - let resolvedAbsolute = false; - for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { - const path = i >= 0 ? args[i] : '/'; - validateString(path, 'path'); - // Skip empty entries - if (path.length === 0) { - continue; - } - resolvedPath = `${path}/${resolvedPath}`; - resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - // Normalize the path - resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); - if (resolvedAbsolute) { - return `/${resolvedPath}`; - } - return resolvedPath.length > 0 ? resolvedPath : '.'; -} - -const FD_DATASYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(0)); -const FD_READ = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(1)); -const FD_SEEK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(2)); -const FD_FDSTAT_SET_FLAGS = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(3)); -const FD_SYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(4)); -const FD_TELL = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(5)); -const FD_WRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(6)); -const FD_ADVISE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(7)); -const FD_ALLOCATE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(8)); -const PATH_CREATE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(9)); -const PATH_CREATE_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(10)); -const PATH_LINK_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(11)); -const PATH_LINK_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(12)); -const PATH_OPEN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(13)); -const FD_READDIR = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(14)); -const PATH_READLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(15)); -const PATH_RENAME_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(16)); -const PATH_RENAME_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(17)); -const PATH_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(18)); -const PATH_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(19)); -const PATH_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(20)); -const FD_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(21)); -const FD_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(22)); -const FD_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(23)); -const PATH_SYMLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(24)); -const PATH_REMOVE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(25)); -const PATH_UNLINK_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(26)); -const POLL_FD_READWRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(27)); -const SOCK_SHUTDOWN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(28)); -const SOCK_ACCEPT = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(29)); -const WasiRights = { - FD_DATASYNC, - FD_READ, - FD_SEEK, - FD_FDSTAT_SET_FLAGS, - FD_SYNC, - FD_TELL, - FD_WRITE, - FD_ADVISE, - FD_ALLOCATE, - PATH_CREATE_DIRECTORY, - PATH_CREATE_FILE, - PATH_LINK_SOURCE, - PATH_LINK_TARGET, - PATH_OPEN, - FD_READDIR, - PATH_READLINK, - PATH_RENAME_SOURCE, - PATH_RENAME_TARGET, - PATH_FILESTAT_GET, - PATH_FILESTAT_SET_SIZE, - PATH_FILESTAT_SET_TIMES, - FD_FILESTAT_GET, - FD_FILESTAT_SET_SIZE, - FD_FILESTAT_SET_TIMES, - PATH_SYMLINK, - PATH_REMOVE_DIRECTORY, - PATH_UNLINK_FILE, - POLL_FD_READWRITE, - SOCK_SHUTDOWN, - SOCK_ACCEPT -}; - -function strerror(errno) { - switch (errno) { - case 0 /* WasiErrno.ESUCCESS */: return 'Success'; - case 1 /* WasiErrno.E2BIG */: return 'Argument list too long'; - case 2 /* WasiErrno.EACCES */: return 'Permission denied'; - case 3 /* WasiErrno.EADDRINUSE */: return 'Address in use'; - case 4 /* WasiErrno.EADDRNOTAVAIL */: return 'Address not available'; - case 5 /* WasiErrno.EAFNOSUPPORT */: return 'Address family not supported by protocol'; - case 6 /* WasiErrno.EAGAIN */: return 'Resource temporarily unavailable'; - case 7 /* WasiErrno.EALREADY */: return 'Operation already in progress'; - case 8 /* WasiErrno.EBADF */: return 'Bad file descriptor'; - case 9 /* WasiErrno.EBADMSG */: return 'Bad message'; - case 10 /* WasiErrno.EBUSY */: return 'Resource busy'; - case 11 /* WasiErrno.ECANCELED */: return 'Operation canceled'; - case 12 /* WasiErrno.ECHILD */: return 'No child process'; - case 13 /* WasiErrno.ECONNABORTED */: return 'Connection aborted'; - case 14 /* WasiErrno.ECONNREFUSED */: return 'Connection refused'; - case 15 /* WasiErrno.ECONNRESET */: return 'Connection reset by peer'; - case 16 /* WasiErrno.EDEADLK */: return 'Resource deadlock would occur'; - case 17 /* WasiErrno.EDESTADDRREQ */: return 'Destination address required'; - case 18 /* WasiErrno.EDOM */: return 'Domain error'; - case 19 /* WasiErrno.EDQUOT */: return 'Quota exceeded'; - case 20 /* WasiErrno.EEXIST */: return 'File exists'; - case 21 /* WasiErrno.EFAULT */: return 'Bad address'; - case 22 /* WasiErrno.EFBIG */: return 'File too large'; - case 23 /* WasiErrno.EHOSTUNREACH */: return 'Host is unreachable'; - case 24 /* WasiErrno.EIDRM */: return 'Identifier removed'; - case 25 /* WasiErrno.EILSEQ */: return 'Illegal byte sequence'; - case 26 /* WasiErrno.EINPROGRESS */: return 'Operation in progress'; - case 27 /* WasiErrno.EINTR */: return 'Interrupted system call'; - case 28 /* WasiErrno.EINVAL */: return 'Invalid argument'; - case 29 /* WasiErrno.EIO */: return 'I/O error'; - case 30 /* WasiErrno.EISCONN */: return 'Socket is connected'; - case 31 /* WasiErrno.EISDIR */: return 'Is a directory'; - case 32 /* WasiErrno.ELOOP */: return 'Symbolic link loop'; - case 33 /* WasiErrno.EMFILE */: return 'No file descriptors available'; - case 34 /* WasiErrno.EMLINK */: return 'Too many links'; - case 35 /* WasiErrno.EMSGSIZE */: return 'Message too large'; - case 36 /* WasiErrno.EMULTIHOP */: return 'Multihop attempted'; - case 37 /* WasiErrno.ENAMETOOLONG */: return 'Filename too long'; - case 38 /* WasiErrno.ENETDOWN */: return 'Network is down'; - case 39 /* WasiErrno.ENETRESET */: return 'Connection reset by network'; - case 40 /* WasiErrno.ENETUNREACH */: return 'Network unreachable'; - case 41 /* WasiErrno.ENFILE */: return 'Too many files open in system'; - case 42 /* WasiErrno.ENOBUFS */: return 'No buffer space available'; - case 43 /* WasiErrno.ENODEV */: return 'No such device'; - case 44 /* WasiErrno.ENOENT */: return 'No such file or directory'; - case 45 /* WasiErrno.ENOEXEC */: return 'Exec format error'; - case 46 /* WasiErrno.ENOLCK */: return 'No locks available'; - case 47 /* WasiErrno.ENOLINK */: return 'Link has been severed'; - case 48 /* WasiErrno.ENOMEM */: return 'Out of memory'; - case 49 /* WasiErrno.ENOMSG */: return 'No message of the desired type'; - case 50 /* WasiErrno.ENOPROTOOPT */: return 'Protocol not available'; - case 51 /* WasiErrno.ENOSPC */: return 'No space left on device'; - case 52 /* WasiErrno.ENOSYS */: return 'Function not implemented'; - case 53 /* WasiErrno.ENOTCONN */: return 'Socket not connected'; - case 54 /* WasiErrno.ENOTDIR */: return 'Not a directory'; - case 55 /* WasiErrno.ENOTEMPTY */: return 'Directory not empty'; - case 56 /* WasiErrno.ENOTRECOVERABLE */: return 'State not recoverable'; - case 57 /* WasiErrno.ENOTSOCK */: return 'Not a socket'; - case 58 /* WasiErrno.ENOTSUP */: return 'Not supported'; - case 59 /* WasiErrno.ENOTTY */: return 'Not a tty'; - case 60 /* WasiErrno.ENXIO */: return 'No such device or address'; - case 61 /* WasiErrno.EOVERFLOW */: return 'Value too large for data type'; - case 62 /* WasiErrno.EOWNERDEAD */: return 'Previous owner died'; - case 63 /* WasiErrno.EPERM */: return 'Operation not permitted'; - case 64 /* WasiErrno.EPIPE */: return 'Broken pipe'; - case 65 /* WasiErrno.EPROTO */: return 'Protocol error'; - case 66 /* WasiErrno.EPROTONOSUPPORT */: return 'Protocol not supported'; - case 67 /* WasiErrno.EPROTOTYPE */: return 'Protocol wrong type for socket'; - case 68 /* WasiErrno.ERANGE */: return 'Result not representable'; - case 69 /* WasiErrno.EROFS */: return 'Read-only file system'; - case 70 /* WasiErrno.ESPIPE */: return 'Invalid seek'; - case 71 /* WasiErrno.ESRCH */: return 'No such process'; - case 72 /* WasiErrno.ESTALE */: return 'Stale file handle'; - case 73 /* WasiErrno.ETIMEDOUT */: return 'Operation timed out'; - case 74 /* WasiErrno.ETXTBSY */: return 'Text file busy'; - case 75 /* WasiErrno.EXDEV */: return 'Cross-device link'; - case 76 /* WasiErrno.ENOTCAPABLE */: return 'Capabilities insufficient'; - default: return 'Unknown error'; - } -} -class WasiError extends Error { - constructor(message, errno) { - super(message); - this.errno = errno; - } - getErrorMessage() { - return strerror(this.errno); - } -} -Object.defineProperty(WasiError.prototype, 'name', { - configurable: true, - writable: true, - value: 'WasiError' -}); - -const RIGHTS_ALL = WasiRights.FD_DATASYNC | - WasiRights.FD_READ | - WasiRights.FD_SEEK | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_SYNC | - WasiRights.FD_TELL | - WasiRights.FD_WRITE | - WasiRights.FD_ADVISE | - WasiRights.FD_ALLOCATE | - WasiRights.PATH_CREATE_DIRECTORY | - WasiRights.PATH_CREATE_FILE | - WasiRights.PATH_LINK_SOURCE | - WasiRights.PATH_LINK_TARGET | - WasiRights.PATH_OPEN | - WasiRights.FD_READDIR | - WasiRights.PATH_READLINK | - WasiRights.PATH_RENAME_SOURCE | - WasiRights.PATH_RENAME_TARGET | - WasiRights.PATH_FILESTAT_GET | - WasiRights.PATH_FILESTAT_SET_SIZE | - WasiRights.PATH_FILESTAT_SET_TIMES | - WasiRights.FD_FILESTAT_GET | - WasiRights.FD_FILESTAT_SET_TIMES | - WasiRights.FD_FILESTAT_SET_SIZE | - WasiRights.PATH_SYMLINK | - WasiRights.PATH_UNLINK_FILE | - WasiRights.PATH_REMOVE_DIRECTORY | - WasiRights.POLL_FD_READWRITE | - WasiRights.SOCK_SHUTDOWN | - WasiRights.SOCK_ACCEPT; -const BLOCK_DEVICE_BASE = RIGHTS_ALL; -const BLOCK_DEVICE_INHERITING = RIGHTS_ALL; -const CHARACTER_DEVICE_BASE = RIGHTS_ALL; -const CHARACTER_DEVICE_INHERITING = RIGHTS_ALL; -const REGULAR_FILE_BASE = WasiRights.FD_DATASYNC | - WasiRights.FD_READ | - WasiRights.FD_SEEK | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_SYNC | - WasiRights.FD_TELL | - WasiRights.FD_WRITE | - WasiRights.FD_ADVISE | - WasiRights.FD_ALLOCATE | - WasiRights.FD_FILESTAT_GET | - WasiRights.FD_FILESTAT_SET_SIZE | - WasiRights.FD_FILESTAT_SET_TIMES | - WasiRights.POLL_FD_READWRITE; -const REGULAR_FILE_INHERITING = /*#__PURE__*/ BigInt(0); -const DIRECTORY_BASE = WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_SYNC | - WasiRights.FD_ADVISE | - WasiRights.PATH_CREATE_DIRECTORY | - WasiRights.PATH_CREATE_FILE | - WasiRights.PATH_LINK_SOURCE | - WasiRights.PATH_LINK_TARGET | - WasiRights.PATH_OPEN | - WasiRights.FD_READDIR | - WasiRights.PATH_READLINK | - WasiRights.PATH_RENAME_SOURCE | - WasiRights.PATH_RENAME_TARGET | - WasiRights.PATH_FILESTAT_GET | - WasiRights.PATH_FILESTAT_SET_SIZE | - WasiRights.PATH_FILESTAT_SET_TIMES | - WasiRights.FD_FILESTAT_GET | - WasiRights.FD_FILESTAT_SET_TIMES | - WasiRights.PATH_SYMLINK | - WasiRights.PATH_UNLINK_FILE | - WasiRights.PATH_REMOVE_DIRECTORY | - WasiRights.POLL_FD_READWRITE; -const DIRECTORY_INHERITING = DIRECTORY_BASE | REGULAR_FILE_BASE; -const SOCKET_BASE = (WasiRights.FD_READ | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_WRITE | - WasiRights.FD_FILESTAT_GET | - WasiRights.POLL_FD_READWRITE | - WasiRights.SOCK_SHUTDOWN); -const SOCKET_INHERITING = RIGHTS_ALL; -const TTY_BASE = WasiRights.FD_READ | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_WRITE | - WasiRights.FD_FILESTAT_GET | - WasiRights.POLL_FD_READWRITE; -const TTY_INHERITING = /*#__PURE__*/ BigInt(0); -function getRights(stdio, fd, flags, type) { - const ret = { - base: BigInt(0), - inheriting: BigInt(0) - }; - if (type === 0 /* WasiFileType.UNKNOWN */) { - throw new WasiError('Unknown file type', 28 /* WasiErrno.EINVAL */); - } - switch (type) { - case 4 /* WasiFileType.REGULAR_FILE */: - ret.base = REGULAR_FILE_BASE; - ret.inheriting = REGULAR_FILE_INHERITING; - break; - case 3 /* WasiFileType.DIRECTORY */: - ret.base = DIRECTORY_BASE; - ret.inheriting = DIRECTORY_INHERITING; - break; - case 6 /* WasiFileType.SOCKET_STREAM */: - case 5 /* WasiFileType.SOCKET_DGRAM */: - ret.base = SOCKET_BASE; - ret.inheriting = SOCKET_INHERITING; - break; - case 2 /* WasiFileType.CHARACTER_DEVICE */: - if (stdio.indexOf(fd) !== -1) { - ret.base = TTY_BASE; - ret.inheriting = TTY_INHERITING; - } - else { - ret.base = CHARACTER_DEVICE_BASE; - ret.inheriting = CHARACTER_DEVICE_INHERITING; - } - break; - case 1 /* WasiFileType.BLOCK_DEVICE */: - ret.base = BLOCK_DEVICE_BASE; - ret.inheriting = BLOCK_DEVICE_INHERITING; - break; - default: - ret.base = BigInt(0); - ret.inheriting = BigInt(0); - } - /* Disable read/write bits depending on access mode. */ - const read_or_write_only = flags & (0 | 1 | 2); - if (read_or_write_only === 0) { - ret.base &= ~WasiRights.FD_WRITE; - } - else if (read_or_write_only === 1) { - ret.base &= ~WasiRights.FD_READ; - } - return ret; -} - -function concatBuffer(buffers, size) { - let total = 0; - if (typeof size === 'number' && size >= 0) { - total = size; - } - else { - for (let i = 0; i < buffers.length; i++) { - const buffer = buffers[i]; - total += buffer.length; - } - } - let pos = 0; - const ret = new Uint8Array(total); - for (let i = 0; i < buffers.length; i++) { - const buffer = buffers[i]; - ret.set(buffer, pos); - pos += buffer.length; - } - return ret; -} -class FileDescriptor { - constructor(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { - this.id = id; - this.fd = fd; - this.path = path; - this.realPath = realPath; - this.type = type; - this.rightsBase = rightsBase; - this.rightsInheriting = rightsInheriting; - this.preopen = preopen; - this.pos = BigInt(0); - this.size = BigInt(0); - } - seek(offset, whence) { - if (whence === 0 /* WasiWhence.SET */) { - this.pos = BigInt(offset); - } - else if (whence === 1 /* WasiWhence.CUR */) { - this.pos += BigInt(offset); - } - else if (whence === 2 /* WasiWhence.END */) { - this.pos = BigInt(this.size) - BigInt(offset); - } - else { - throw new WasiError('Unknown whence', 29 /* WasiErrno.EIO */); - } - return this.pos; - } -} -class StandardOutput extends FileDescriptor { - constructor(log, id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { - super(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen); - this._log = log; - this._buf = null; - } - write(buffer) { - const originalBuffer = buffer; - if (this._buf) { - buffer = concatBuffer([this._buf, buffer]); - this._buf = null; - } - if (buffer.indexOf(10) === -1) { - this._buf = buffer; - return originalBuffer.byteLength; - } - let written = 0; - let lastBegin = 0; - let index; - while ((index = buffer.indexOf(10, written)) !== -1) { - const str = new TextDecoder().decode(buffer.subarray(lastBegin, index)); - this._log(str); - written += index - lastBegin + 1; - lastBegin = index + 1; - } - if (written < buffer.length) { - this._buf = buffer.slice(written); - } - return originalBuffer.byteLength; - } -} -function toFileType(stat) { - if (stat.isBlockDevice()) - return 1 /* WasiFileType.BLOCK_DEVICE */; - if (stat.isCharacterDevice()) - return 2 /* WasiFileType.CHARACTER_DEVICE */; - if (stat.isDirectory()) - return 3 /* WasiFileType.DIRECTORY */; - if (stat.isSocket()) - return 6 /* WasiFileType.SOCKET_STREAM */; - if (stat.isFile()) - return 4 /* WasiFileType.REGULAR_FILE */; - if (stat.isSymbolicLink()) - return 7 /* WasiFileType.SYMBOLIC_LINK */; - return 0 /* WasiFileType.UNKNOWN */; -} -function toFileStat(view, buf, stat) { - view.setBigUint64(buf, stat.dev, true); - view.setBigUint64(buf + 8, stat.ino, true); - view.setBigUint64(buf + 16, BigInt(toFileType(stat)), true); - view.setBigUint64(buf + 24, stat.nlink, true); - view.setBigUint64(buf + 32, stat.size, true); - view.setBigUint64(buf + 40, stat.atimeMs * BigInt(1000000), true); - view.setBigUint64(buf + 48, stat.mtimeMs * BigInt(1000000), true); - view.setBigUint64(buf + 56, stat.ctimeMs * BigInt(1000000), true); -} -class FileDescriptorTable { - constructor(options) { - this.used = 0; - this.size = options.size; - this.fds = Array(options.size); - this.stdio = [options.in, options.out, options.err]; - this.print = options.print; - this.printErr = options.printErr; - this.insertStdio(options.in, 0, ''); - this.insertStdio(options.out, 1, ''); - this.insertStdio(options.err, 2, ''); - } - insertStdio(fd, expected, name) { - const type = 2 /* WasiFileType.CHARACTER_DEVICE */; - const { base, inheriting } = getRights(this.stdio, fd, 2 /* FileControlFlag.O_RDWR */, type); - const wrap = this.insert(fd, name, name, type, base, inheriting, 0); - if (wrap.id !== expected) { - throw new WasiError(`id: ${wrap.id} !== expected: ${expected}`, 8 /* WasiErrno.EBADF */); - } - return wrap; - } - insert(fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen) { - var _a, _b; - let index = -1; - if (this.used >= this.size) { - const newSize = this.size * 2; - this.fds.length = newSize; - index = this.size; - this.size = newSize; - } - else { - for (let i = 0; i < this.size; ++i) { - if (this.fds[i] == null) { - index = i; - break; - } - } - } - let entry; - if (mappedPath === '') { - entry = new StandardOutput((_a = this.print) !== null && _a !== void 0 ? _a : console.log, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - else if (mappedPath === '') { - entry = new StandardOutput((_b = this.printErr) !== null && _b !== void 0 ? _b : console.error, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - else { - entry = new FileDescriptor(index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - this.fds[index] = entry; - this.used++; - return entry; - } - get(id, base, inheriting) { - if (id >= this.size) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - const entry = this.fds[id]; - if (!entry || entry.id !== id) { - throw new WasiError('Bad file descriptor', 8 /* WasiErrno.EBADF */); - } - /* Validate that the fd has the necessary rights. */ - if ((~entry.rightsBase & base) !== BigInt(0) || (~entry.rightsInheriting & inheriting) !== BigInt(0)) { - throw new WasiError('Capabilities insufficient', 76 /* WasiErrno.ENOTCAPABLE */); - } - return entry; - } - remove(id) { - if (id >= this.size) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - const entry = this.fds[id]; - if (!entry || entry.id !== id) { - throw new WasiError('Bad file descriptor', 8 /* WasiErrno.EBADF */); - } - this.fds[id] = undefined; - this.used--; - } -} -class SyncTable extends FileDescriptorTable { - constructor(options) { - super(options); - this.fs = options.fs; - } - getFileTypeByFd(fd) { - const stats = this.fs.fstatSync(fd, { bigint: true }); - return toFileType(stats); - } - insertPreopen(fd, mappedPath, realPath) { - const type = this.getFileTypeByFd(fd); - if (type !== 3 /* WasiFileType.DIRECTORY */) { - throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, 54 /* WasiErrno.ENOTDIR */); - } - const result = getRights(this.stdio, fd, 0, type); - return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); - } - renumber(dst, src) { - if (dst === src) - return; - if (dst >= this.size || src >= this.size) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - const dstEntry = this.fds[dst]; - const srcEntry = this.fds[src]; - if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - this.fs.closeSync(dstEntry.fd); - this.fds[dst] = this.fds[src]; - this.fds[dst].id = dst; - this.fds[src] = undefined; - this.used--; - } -} -class AsyncTable extends FileDescriptorTable { - // eslint-disable-next-line @typescript-eslint/no-useless-constructor - constructor(options) { - super(options); - } - async getFileTypeByFd(fd) { - const stats = await fd.stat({ bigint: true }); - return toFileType(stats); - } - async insertPreopen(fd, mappedPath, realPath) { - const type = await this.getFileTypeByFd(fd); - if (type !== 3 /* WasiFileType.DIRECTORY */) { - throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, 54 /* WasiErrno.ENOTDIR */); - } - const result = getRights(this.stdio, fd.fd, 0, type); - return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); - } - async renumber(dst, src) { - if (dst === src) - return; - if (dst >= this.size || src >= this.size) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - const dstEntry = this.fds[dst]; - const srcEntry = this.fds[src]; - if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - await dstEntry.fd.close(); - this.fds[dst] = this.fds[src]; - this.fds[dst].id = dst; - this.fds[src] = undefined; - this.used--; - } -} - -/** @public */ -const WebAssemblyMemory = /*#__PURE__*/ (function () { return _WebAssembly.Memory; })(); -/** @public */ -class Memory extends WebAssemblyMemory { - // eslint-disable-next-line @typescript-eslint/no-useless-constructor - constructor(descriptor) { - super(descriptor); - } - get HEAP8() { return new Int8Array(super.buffer); } - get HEAPU8() { return new Uint8Array(super.buffer); } - get HEAP16() { return new Int16Array(super.buffer); } - get HEAPU16() { return new Uint16Array(super.buffer); } - get HEAP32() { return new Int32Array(super.buffer); } - get HEAPU32() { return new Uint32Array(super.buffer); } - get HEAP64() { return new BigInt64Array(super.buffer); } - get HEAPU64() { return new BigUint64Array(super.buffer); } - get HEAPF32() { return new Float32Array(super.buffer); } - get HEAPF64() { return new Float64Array(super.buffer); } - get view() { return new DataView(super.buffer); } -} -/** @public */ -function extendMemory(memory) { - if (Object.getPrototypeOf(memory) === _WebAssembly.Memory.prototype) { - Object.setPrototypeOf(memory, Memory.prototype); - } - return memory; -} - -function checkWebAssemblyFunction() { - const WebAssemblyFunction = _WebAssembly.Function; - if (typeof WebAssemblyFunction !== 'function') { - throw new Error('WebAssembly.Function is not supported in this environment.' + - ' If you are using V8 based browser like Chrome, try to specify' + - ' --js-flags="--wasm-staging --experimental-wasm-stack-switching"'); - } - return WebAssemblyFunction; -} -/** @public */ -function wrapAsyncImport(f, parameterType, returnType) { - const WebAssemblyFunction = checkWebAssemblyFunction(); - if (typeof f !== 'function') { - throw new TypeError('Function required'); - } - const parameters = parameterType.slice(0); - parameters.unshift('externref'); - return new WebAssemblyFunction({ parameters, results: returnType }, f, { suspending: 'first' }); -} -/** @public */ -function wrapAsyncExport(f) { - const WebAssemblyFunction = checkWebAssemblyFunction(); - if (typeof f !== 'function') { - throw new TypeError('Function required'); - } - return new WebAssemblyFunction({ parameters: [...WebAssemblyFunction.type(f).parameters.slice(1)], results: ['externref'] }, f, { promising: 'first' }); -} -/** @public */ -function wrapExports(exports, needWrap) { - return wrapInstanceExports(exports, (exportValue, name) => { - let ignore = typeof exportValue !== 'function'; - if (Array.isArray(needWrap)) { - ignore = ignore || (needWrap.indexOf(name) === -1); - } - return ignore ? exportValue : wrapAsyncExport(exportValue); - }); -} - -function copyMemory(targets, src) { - if (targets.length === 0 || src.length === 0) - return 0; - let copied = 0; - let left = src.length - copied; - for (let i = 0; i < targets.length; ++i) { - const target = targets[i]; - if (left < target.length) { - target.set(src.subarray(copied, copied + left), 0); - copied += left; - left = 0; - return copied; - } - target.set(src.subarray(copied, copied + target.length), 0); - copied += target.length; - left -= target.length; - } - return copied; -} -const _memory = new WeakMap(); -const _wasi = new WeakMap(); -const _fs = new WeakMap(); -function getMemory(wasi) { - return _memory.get(wasi); -} -function getFs(wasi) { - const fs = _fs.get(wasi); - if (!fs) - throw new Error('filesystem is unavailable'); - return fs; -} -function handleError(err) { - if (err instanceof WasiError) { - if (((process.env.NODE_ENV)) !== 'production') { - console.warn(err); - } - return err.errno; - } - switch (err.code) { - case 'ENOENT': return 44 /* WasiErrno.ENOENT */; - case 'EBADF': return 8 /* WasiErrno.EBADF */; - case 'EINVAL': return 28 /* WasiErrno.EINVAL */; - case 'EPERM': return 63 /* WasiErrno.EPERM */; - case 'EPROTO': return 65 /* WasiErrno.EPROTO */; - case 'EEXIST': return 20 /* WasiErrno.EEXIST */; - case 'ENOTDIR': return 54 /* WasiErrno.ENOTDIR */; - case 'EMFILE': return 33 /* WasiErrno.EMFILE */; - case 'EACCES': return 2 /* WasiErrno.EACCES */; - case 'EISDIR': return 31 /* WasiErrno.EISDIR */; - case 'ENOTEMPTY': return 55 /* WasiErrno.ENOTEMPTY */; - case 'ENOSYS': return 52 /* WasiErrno.ENOSYS */; - } - throw err; -} -function defineName(name, f) { - Object.defineProperty(f, 'name', { value: name }); - return f; -} -function tryCall(f, wasi, args) { - let r; - try { - r = f.apply(wasi, args); - } - catch (err) { - return handleError(err); - } - if (isPromiseLike(r)) { - return r.then(_ => _, handleError); - } - return r; -} -function syscallWrap(self, name, f) { - let debug = false; - const NODE_DEBUG_NATIVE = (() => { - try { - return process.env.NODE_DEBUG_NATIVE; - } - catch (_) { - return undefined; - } - })(); - if (typeof NODE_DEBUG_NATIVE === 'string' && NODE_DEBUG_NATIVE.split(',').includes('wasi')) { - debug = true; - } - return debug - ? defineName(name, function () { - const args = Array.prototype.slice.call(arguments); - let debugArgs = [`${name}(${Array.from({ length: arguments.length }).map(() => '%d').join(', ')})`]; - debugArgs = debugArgs.concat(args); - console.debug.apply(console, debugArgs); - return tryCall(f, self, args); - }) - : defineName(name, function () { - return tryCall(f, self, arguments); - }); -} -function resolvePathSync(fs, fileDescriptor, path, flags) { - let resolvedPath = resolve(fileDescriptor.realPath, path); - if ((flags & 1) === 1) { - try { - resolvedPath = fs.readlinkSync(resolvedPath); - } - catch (err) { - if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { - throw err; - } - } - } - return resolvedPath; -} -async function resolvePathAsync(fs, fileDescriptor, path, flags) { - let resolvedPath = resolve(fileDescriptor.realPath, path); - if ((flags & 1) === 1) { - try { - resolvedPath = await fs.promises.readlink(resolvedPath); - } - catch (err) { - if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { - throw err; - } - } - } - return resolvedPath; -} -// eslint-disable-next-line spaced-comment -const encoder = /*#__PURE__*/ new TextEncoder(); -// eslint-disable-next-line spaced-comment -const decoder = /*#__PURE__*/ new TextDecoder(); -const INT64_MAX = (BigInt(1) << BigInt(63)) - BigInt(1); -function readStdin() { - const value = window.prompt(); - if (value === null) - return new Uint8Array(); - const buffer = new TextEncoder().encode(value + '\n'); - return buffer; -} -function validateFstFlagsOrReturn(flags) { - return (Boolean((flags) & ~(1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */ | - 4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)) || - ((flags) & (1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */)) === - (1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */) || - ((flags) & (4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)) === - (4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)); -} -class WASI$1 { - constructor(args, env, fds, asyncFs, fs, asyncify) { - this.args_get = syscallWrap(this, 'args_get', function (argv, argv_buf) { - argv = Number(argv); - argv_buf = Number(argv_buf); - if (argv === 0 || argv_buf === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const args = wasi.args; - for (let i = 0; i < args.length; ++i) { - const arg = args[i]; - view.setInt32(argv, argv_buf, true); - argv += 4; - const data = encoder.encode(arg + '\0'); - HEAPU8.set(data, argv_buf); - argv_buf += data.length; - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.args_sizes_get = syscallWrap(this, 'args_sizes_get', function (argc, argv_buf_size) { - argc = Number(argc); - argv_buf_size = Number(argv_buf_size); - if (argc === 0 || argv_buf_size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - const wasi = _wasi.get(this); - const args = wasi.args; - view.setUint32(argc, args.length, true); - view.setUint32(argv_buf_size, encoder.encode(args.join('\0') + '\0').length, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.environ_get = syscallWrap(this, 'environ_get', function (environ, environ_buf) { - environ = Number(environ); - environ_buf = Number(environ_buf); - if (environ === 0 || environ_buf === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const env = wasi.env; - for (let i = 0; i < env.length; ++i) { - const pair = env[i]; - view.setInt32(environ, environ_buf, true); - environ += 4; - const data = encoder.encode(pair + '\0'); - HEAPU8.set(data, environ_buf); - environ_buf += data.length; - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.environ_sizes_get = syscallWrap(this, 'environ_sizes_get', function (len, buflen) { - len = Number(len); - buflen = Number(buflen); - if (len === 0 || buflen === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - const wasi = _wasi.get(this); - view.setUint32(len, wasi.env.length, true); - view.setUint32(buflen, encoder.encode(wasi.env.join('\0') + '\0').length, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.clock_res_get = syscallWrap(this, 'clock_res_get', function (id, resolution) { - resolution = Number(resolution); - if (resolution === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - switch (id) { - case 0 /* WasiClockid.REALTIME */: - view.setBigUint64(resolution, BigInt(1000000), true); - return 0 /* WasiErrno.ESUCCESS */; - case 1 /* WasiClockid.MONOTONIC */: - case 2 /* WasiClockid.PROCESS_CPUTIME_ID */: - case 3 /* WasiClockid.THREAD_CPUTIME_ID */: - view.setBigUint64(resolution, BigInt(1000), true); - return 0 /* WasiErrno.ESUCCESS */; - default: return 28 /* WasiErrno.EINVAL */; - } - }); - this.clock_time_get = syscallWrap(this, 'clock_time_get', function (id, _percision, time) { - time = Number(time); - if (time === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - switch (id) { - case 0 /* WasiClockid.REALTIME */: - view.setBigUint64(time, BigInt(Date.now()) * BigInt(1000000), true); - return 0 /* WasiErrno.ESUCCESS */; - case 1 /* WasiClockid.MONOTONIC */: - case 2 /* WasiClockid.PROCESS_CPUTIME_ID */: - case 3 /* WasiClockid.THREAD_CPUTIME_ID */: { - const t = performance.now() / 1000; - const s = Math.trunc(t); - const ms = Math.floor((t - s) * 1000); - const result = BigInt(s) * BigInt(1000000000) + BigInt(ms) * BigInt(1000000); - view.setBigUint64(time, result, true); - return 0 /* WasiErrno.ESUCCESS */; - } - default: return 28 /* WasiErrno.EINVAL */; - } - }); - this.fd_advise = syscallWrap(this, 'fd_advise', function (_fd, _offset, _len, _advice) { - return 52 /* WasiErrno.ENOSYS */; - }); - this.fd_fdstat_get = syscallWrap(this, 'fd_fdstat_get', function (fd, fdstat) { - fdstat = Number(fdstat); - if (fdstat === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - const { view } = getMemory(this); - view.setUint16(fdstat, fileDescriptor.type, true); - view.setUint16(fdstat + 2, 0, true); - view.setBigUint64(fdstat + 8, fileDescriptor.rightsBase, true); - view.setBigUint64(fdstat + 16, fileDescriptor.rightsInheriting, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_fdstat_set_flags = syscallWrap(this, 'fd_fdstat_set_flags', function (_fd, _flags) { - return 52 /* WasiErrno.ENOSYS */; - }); - this.fd_fdstat_set_rights = syscallWrap(this, 'fd_fdstat_set_rights', function (fd, rightsBase, rightsInheriting) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - if ((rightsBase | fileDescriptor.rightsBase) > fileDescriptor.rightsBase) { - return 76 /* WasiErrno.ENOTCAPABLE */; - } - if ((rightsInheriting | fileDescriptor.rightsInheriting) > - fileDescriptor.rightsInheriting) { - return 76 /* WasiErrno.ENOTCAPABLE */; - } - fileDescriptor.rightsBase = rightsBase; - fileDescriptor.rightsInheriting = rightsInheriting; - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_prestat_get = syscallWrap(this, 'fd_prestat_get', function (fd, prestat) { - prestat = Number(prestat); - if (prestat === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let fileDescriptor; - try { - fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - } - catch (err) { - if (err instanceof WasiError) - return err.errno; - throw err; - } - if (fileDescriptor.preopen !== 1) - return 28 /* WasiErrno.EINVAL */; - const { view } = getMemory(this); - // preopen type is dir(0) - view.setUint32(prestat, 0, true); - view.setUint32(prestat + 4, encoder.encode(fileDescriptor.path).length, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_prestat_dir_name = syscallWrap(this, 'fd_prestat_dir_name', function (fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - if (fileDescriptor.preopen !== 1) - return 8 /* WasiErrno.EBADF */; - const buffer = encoder.encode(fileDescriptor.path); - const size = buffer.length; - if (size > path_len) - return 42 /* WasiErrno.ENOBUFS */; - const { HEAPU8 } = getMemory(this); - HEAPU8.set(buffer, path); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_seek = syscallWrap(this, 'fd_seek', function (fd, offset, whence, newOffset) { - newOffset = Number(newOffset); - if (newOffset === 0) { - return 28 /* WasiErrno.EINVAL */; - } - if (fd === 0 || fd === 1 || fd === 2) - return 0 /* WasiErrno.ESUCCESS */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SEEK, BigInt(0)); - const r = fileDescriptor.seek(offset, whence); - const { view } = getMemory(this); - view.setBigUint64(newOffset, r, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_tell = syscallWrap(this, 'fd_tell', function (fd, offset) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_TELL, BigInt(0)); - const pos = BigInt(fileDescriptor.pos); - const { view } = getMemory(this); - view.setBigUint64(Number(offset), pos, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.poll_oneoff = syscallWrap(this, 'poll_oneoff', function (in_ptr, out_ptr, nsubscriptions, nevents) { - in_ptr = Number(in_ptr); - out_ptr = Number(out_ptr); - nevents = Number(nevents); - nsubscriptions = Number(nsubscriptions); - nsubscriptions = nsubscriptions >>> 0; - if (in_ptr === 0 || out_ptr === 0 || nsubscriptions === 0 || nevents === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - view.setUint32(nevents, 0, true); - let i = 0; - let timer_userdata = BigInt(0); - let cur_timeout = BigInt(0); - let has_timeout = 0; - let min_timeout = BigInt(0); - let sub; - const subscriptions = Array(nsubscriptions); - for (i = 0; i < nsubscriptions; i++) { - sub = in_ptr + i * 48; - const userdata = view.getBigUint64(sub, true); - const type = view.getUint8(sub + 8); - const clockIdOrFd = view.getUint32(sub + 16, true); - const timeout = view.getBigUint64(sub + 24, true); - const precision = view.getBigUint64(sub + 32, true); - const flags = view.getUint16(sub + 40, true); - subscriptions[i] = { - userdata, - type, - u: { - clock: { - clock_id: clockIdOrFd, - timeout, - precision, - flags - }, - fd_readwrite: { - fd: clockIdOrFd - } - } - }; - } - const fdevents = []; - for (i = 0; i < nsubscriptions; i++) { - sub = subscriptions[i]; - switch (sub.type) { - case 0 /* WasiEventType.CLOCK */: { - if (sub.u.clock.flags === 1 /* WasiSubclockflags.ABSTIME */) { - /* Convert absolute time to relative delay. */ - const now = BigInt(Date.now()) * BigInt(1000000); - cur_timeout = sub.u.clock.timeout - now; - } - else { - cur_timeout = sub.u.clock.timeout; - } - if (has_timeout === 0 || cur_timeout < min_timeout) { - min_timeout = cur_timeout; - timer_userdata = sub.userdata; - has_timeout = 1; - } - break; - } - case 1 /* WasiEventType.FD_READ */: - case 2 /* WasiEventType.FD_WRITE */: - fdevents.push(sub); - break; - default: return 28 /* WasiErrno.EINVAL */; - } - } - if (fdevents.length > 0) { - for (i = 0; i < fdevents.length; i++) { - const fdevent = fdevents[i]; - const event = out_ptr + 32 * i; - view.setBigUint64(event, fdevent.userdata, true); - view.setUint32(event + 8, 52 /* WasiErrno.ENOSYS */, true); - view.setUint32(event + 12, fdevent.type, true); - view.setBigUint64(event + 16, BigInt(0), true); - view.setUint16(event + 24, 0, true); - view.setUint32(nevents, 1, true); - } - view.setUint32(nevents, fdevents.length, true); - return 0 /* WasiErrno.ESUCCESS */; - } - if (has_timeout) { - const delay = Number(min_timeout / BigInt(1000000)); - // if (isMainThread || typeof SharedArrayBuffer !== 'function') { - sleepBreakIf(delay, () => false); - // } else { - // const buf = new SharedArrayBuffer(4) - // const arr = new Int32Array(buf) - // postMsg({ - // __tybys_wasm_util_wasi__: { - // type: 'set-timeout', - // payload: { - // buffer: buf, - // delay - // } - // } - // }) - // Atomics.wait(arr, 0, 0) - // } - const event = out_ptr; - view.setBigUint64(event, timer_userdata, true); - view.setUint32(event + 8, 0 /* WasiErrno.ESUCCESS */, true); - view.setUint32(event + 12, 0 /* WasiEventType.CLOCK */, true); - view.setUint32(nevents, 1, true); - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.proc_exit = syscallWrap(this, 'proc_exit', function (rval) { - if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) { - process.exit(rval); - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.proc_raise = syscallWrap(this, 'proc_raise', function (_sig) { - return 52 /* WasiErrno.ENOSYS */; - }); - this.sched_yield = syscallWrap(this, 'sched_yield', function () { - return 0 /* WasiErrno.ESUCCESS */; - }); - this.random_get = typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function' - ? syscallWrap(this, 'random_get', function (buf, buf_len) { - buf = Number(buf); - if (buf === 0) { - return 28 /* WasiErrno.EINVAL */; - } - buf_len = Number(buf_len); - const { HEAPU8, view } = getMemory(this); - if ((typeof SharedArrayBuffer === 'function' && HEAPU8.buffer instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(HEAPU8.buffer) === '[object SharedArrayBuffer]')) { - for (let i = buf; i < buf + buf_len; ++i) { - view.setUint8(i, Math.floor(Math.random() * 256)); - } - return 0 /* WasiErrno.ESUCCESS */; - } - let pos; - const stride = 65536; - for (pos = 0; pos + stride < buf_len; pos += stride) { - crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + pos + stride)); - } - crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + buf_len)); - return 0 /* WasiErrno.ESUCCESS */; - }) - : syscallWrap(this, 'random_get', function (buf, buf_len) { - buf = Number(buf); - if (buf === 0) { - return 28 /* WasiErrno.EINVAL */; - } - buf_len = Number(buf_len); - const { view } = getMemory(this); - for (let i = buf; i < buf + buf_len; ++i) { - view.setUint8(i, Math.floor(Math.random() * 256)); - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.sock_recv = syscallWrap(this, 'sock_recv', function () { - return 58 /* WasiErrno.ENOTSUP */; - }); - this.sock_send = syscallWrap(this, 'sock_send', function () { - return 58 /* WasiErrno.ENOTSUP */; - }); - this.sock_shutdown = syscallWrap(this, 'sock_shutdown', function () { - return 58 /* WasiErrno.ENOTSUP */; - }); - this.sock_accept = syscallWrap(this, 'sock_accept', function () { - return 58 /* WasiErrno.ENOTSUP */; - }); - _wasi.set(this, { - fds, - args, - env - }); - if (fs) - _fs.set(this, fs); - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - function defineImport(name, syncVersion, asyncVersion, parameterType, returnType) { - if (asyncFs) { - if (asyncify) { - _this[name] = asyncify.wrapImportFunction(syscallWrap(_this, name, asyncVersion)); - } - else { - _this[name] = wrapAsyncImport(syscallWrap(_this, name, asyncVersion), parameterType, returnType); - } - } - else { - _this[name] = syscallWrap(_this, name, syncVersion); - } - } - defineImport('fd_allocate', function fd_allocate(fd, offset, len) { - const wasi = _wasi.get(this); - const fs = getFs(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); - const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); - if (stat.size < offset + len) { - fs.ftruncateSync(fileDescriptor.fd, Number(offset + len)); - } - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_allocate(fd, offset, len) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); - const h = fileDescriptor.fd; - const stat = await h.stat({ bigint: true }); - if (stat.size < offset + len) { - await h.truncate(Number(offset + len)); - } - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i64', 'f64'], ['i32']); - defineImport('fd_close', function fd_close(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - const fs = getFs(this); - fs.closeSync(fileDescriptor.fd); - wasi.fds.remove(fd); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_close(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - await fileDescriptor.fd.close(); - wasi.fds.remove(fd); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32'], ['i32']); - defineImport('fd_datasync', function fd_datasync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); - const fs = getFs(this); - fs.fdatasyncSync(fileDescriptor.fd); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_datasync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); - await fileDescriptor.fd.datasync(); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32'], ['i32']); - defineImport('fd_filestat_get', function fd_filestat_get(fd, buf) { - buf = Number(buf); - if (buf === 0) - return 28 /* WasiErrno.EINVAL */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); - const fs = getFs(this); - const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); - const { view } = getMemory(this); - toFileStat(view, buf, stat); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_filestat_get(fd, buf) { - buf = Number(buf); - if (buf === 0) - return 28 /* WasiErrno.EINVAL */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); - const h = fileDescriptor.fd; - const stat = await h.stat({ bigint: true }); - const { view } = getMemory(this); - toFileStat(view, buf, stat); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32'], ['i32']); - defineImport('fd_filestat_set_size', function fd_filestat_set_size(fd, size) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); - const fs = getFs(this); - fs.ftruncateSync(fileDescriptor.fd, Number(size)); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_filestat_set_size(fd, size) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); - const h = fileDescriptor.fd; - await h.truncate(Number(size)); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i64'], ['i32']); - function fdFilestatGetTimes(fd, atim, mtim, flags) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_TIMES, BigInt(0)); - if ((flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { - atim = BigInt(Date.now() * 1000000); - } - if ((flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { - mtim = BigInt(Date.now() * 1000000); - } - return { fileDescriptor, atim, mtim }; - } - defineImport('fd_filestat_set_times', function fd_filestat_set_times(fd, atim, mtim, flags) { - if (validateFstFlagsOrReturn(flags)) { - return 28 /* WasiErrno.EINVAL */; - } - const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); - const fs = getFs(this); - fs.futimesSync(fileDescriptor.fd, Number(atimRes), Number(mtimRes)); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_filestat_set_times(fd, atim, mtim, flags) { - if (validateFstFlagsOrReturn(flags)) { - return 28 /* WasiErrno.EINVAL */; - } - const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); - const h = fileDescriptor.fd; - await h.utimes(Number(atimRes), Number(mtimRes)); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i64', 'i64', 'i32'], ['i32']); - defineImport('fd_pread', function fd_pread(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let nread = 0; - const buffer = (() => { - try { - return new Uint8Array(new SharedArrayBuffer(totalSize)); - } - catch (_) { - return new Uint8Array(totalSize); - } - })(); - buffer._isBuffer = true; - const fs = getFs(this); - const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - view.setUint32(size, nread, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function (fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let nread = 0; - const buffer = new Uint8Array(totalSize); - buffer._isBuffer = true; - const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(offset)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - view.setUint32(size, nread, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_pwrite', function fd_pwrite(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - const fs = getFs(this); - const nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); - view.setUint32(size, nwritten, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_pwrite(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - const { bytesWritten } = await fileDescriptor.fd.write(buffer, 0, buffer.length, Number(offset)); - view.setUint32(size, bytesWritten, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_read', function fd_read(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let buffer; - let nread = 0; - if (fd === 0) { - if (typeof window === 'undefined' || typeof window.prompt !== 'function') { - return 58 /* WasiErrno.ENOTSUP */; - } - buffer = readStdin(); - nread = buffer ? copyMemory(ioVecs, buffer) : 0; - } - else { - buffer = (() => { - try { - return new Uint8Array(new SharedArrayBuffer(totalSize)); - } - catch (_) { - return new Uint8Array(totalSize); - } - })(); - buffer._isBuffer = true; - const fs = getFs(this); - const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - fileDescriptor.pos += BigInt(nread); - } - view.setUint32(size, nread, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_read(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let buffer; - let nread = 0; - if (fd === 0) { - if (typeof window === 'undefined' || typeof window.prompt !== 'function') { - return 58 /* WasiErrno.ENOTSUP */; - } - buffer = readStdin(); - nread = buffer ? copyMemory(ioVecs, buffer) : 0; - } - else { - buffer = new Uint8Array(totalSize); - buffer._isBuffer = true; - const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(fileDescriptor.pos)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - fileDescriptor.pos += BigInt(nread); - } - view.setUint32(size, nread, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('fd_readdir', function fd_readdir(fd, buf, buf_len, cookie, bufused) { - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (buf === 0 || bufused === 0) - return 0 /* WasiErrno.ESUCCESS */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); - const fs = getFs(this); - const entries = fs.readdirSync(fileDescriptor.realPath, { withFileTypes: true }); - const { HEAPU8, view } = getMemory(this); - let bufferUsed = 0; - for (let i = Number(cookie); i < entries.length; i++) { - const nameData = encoder.encode(entries[i].name); - const entryInfo = fs.statSync(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); - const entryData = new Uint8Array(24 + nameData.byteLength); - const entryView = new DataView(entryData.buffer); - entryView.setBigUint64(0, BigInt(i + 1), true); - entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); - entryView.setUint32(16, nameData.byteLength, true); - let type; - if (entries[i].isFile()) { - type = 4 /* WasiFileType.REGULAR_FILE */; - } - else if (entries[i].isDirectory()) { - type = 3 /* WasiFileType.DIRECTORY */; - } - else if (entries[i].isSymbolicLink()) { - type = 7 /* WasiFileType.SYMBOLIC_LINK */; - } - else if (entries[i].isCharacterDevice()) { - type = 2 /* WasiFileType.CHARACTER_DEVICE */; - } - else if (entries[i].isBlockDevice()) { - type = 1 /* WasiFileType.BLOCK_DEVICE */; - } - else if (entries[i].isSocket()) { - type = 6 /* WasiFileType.SOCKET_STREAM */; - } - else { - type = 0 /* WasiFileType.UNKNOWN */; - } - entryView.setUint8(20, type); - entryData.set(nameData, 24); - const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); - HEAPU8.set(data, buf + bufferUsed); - bufferUsed += data.byteLength; - } - view.setUint32(bufused, bufferUsed, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_readdir(fd, buf, buf_len, cookie, bufused) { - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (buf === 0 || bufused === 0) - return 0 /* WasiErrno.ESUCCESS */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); - const fs = getFs(this); - const entries = await fs.promises.readdir(fileDescriptor.realPath, { withFileTypes: true }); - const { HEAPU8, view } = getMemory(this); - let bufferUsed = 0; - for (let i = Number(cookie); i < entries.length; i++) { - const nameData = encoder.encode(entries[i].name); - const entryInfo = await fs.promises.stat(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); - const entryData = new Uint8Array(24 + nameData.byteLength); - const entryView = new DataView(entryData.buffer); - entryView.setBigUint64(0, BigInt(i + 1), true); - entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); - entryView.setUint32(16, nameData.byteLength, true); - let type; - if (entries[i].isFile()) { - type = 4 /* WasiFileType.REGULAR_FILE */; - } - else if (entries[i].isDirectory()) { - type = 3 /* WasiFileType.DIRECTORY */; - } - else if (entries[i].isSymbolicLink()) { - type = 7 /* WasiFileType.SYMBOLIC_LINK */; - } - else if (entries[i].isCharacterDevice()) { - type = 2 /* WasiFileType.CHARACTER_DEVICE */; - } - else if (entries[i].isBlockDevice()) { - type = 1 /* WasiFileType.BLOCK_DEVICE */; - } - else if (entries[i].isSocket()) { - type = 6 /* WasiFileType.SOCKET_STREAM */; - } - else { - type = 0 /* WasiFileType.UNKNOWN */; - } - entryView.setUint8(20, type); - entryData.set(nameData, 24); - const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); - HEAPU8.set(data, buf + bufferUsed); - bufferUsed += data.byteLength; - } - view.setUint32(bufused, bufferUsed, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_renumber', function fd_renumber(from, to) { - const wasi = _wasi.get(this); - wasi.fds.renumber(to, from); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_renumber(from, to) { - const wasi = _wasi.get(this); - await wasi.fds.renumber(to, from); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32'], ['i32']); - defineImport('fd_sync', function fd_sync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); - const fs = getFs(this); - fs.fsyncSync(fileDescriptor.fd); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_sync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); - await fileDescriptor.fd.sync(); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32'], ['i32']); - defineImport('fd_write', function fd_write(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - let nwritten; - if (fd === 1 || fd === 2) { - nwritten = fileDescriptor.write(buffer); - } - else { - const fs = getFs(this); - nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); - fileDescriptor.pos += BigInt(nwritten); - } - view.setUint32(size, nwritten, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_write(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - let nwritten; - if (fd === 1 || fd === 2) { - nwritten = fileDescriptor.write(buffer); - } - else { - nwritten = await (await (fileDescriptor.fd.write(buffer, 0, buffer.length, Number(fileDescriptor.pos)))).bytesWritten; - fileDescriptor.pos += BigInt(nwritten); - } - view.setUint32(size, nwritten, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_create_directory', function path_create_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.mkdirSync(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_create_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.mkdir(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32'], ['i32']); - defineImport('path_filestat_get', function path_filestat_get(fd, flags, path, path_len, filestat) { - path = Number(path); - path_len = Number(path_len); - filestat = Number(filestat); - if (path === 0 || filestat === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - pathString = resolve(fileDescriptor.realPath, pathString); - let stat; - if ((flags & 1) === 1) { - stat = fs.statSync(pathString, { bigint: true }); - } - else { - stat = fs.lstatSync(pathString, { bigint: true }); - } - toFileStat(view, filestat, stat); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_filestat_get(fd, flags, path, path_len, filestat) { - path = Number(path); - path_len = Number(path_len); - filestat = Number(filestat); - if (path === 0 || filestat === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - pathString = resolve(fileDescriptor.realPath, pathString); - let stat; - if ((flags & 1) === 1) { - stat = await fs.promises.stat(pathString, { bigint: true }); - } - else { - stat = await fs.promises.lstat(pathString, { bigint: true }); - } - toFileStat(view, filestat, stat); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_filestat_set_times', function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) - return 28 /* WasiErrno.EINVAL */; - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); - if (validateFstFlagsOrReturn(fst_flags)) { - return 28 /* WasiErrno.EINVAL */; - } - const fs = getFs(this); - const resolvedPath = resolvePathSync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); - if ((fst_flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { - atim = BigInt(Date.now() * 1000000); - } - if ((fst_flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { - mtim = BigInt(Date.now() * 1000000); - } - fs.utimesSync(resolvedPath, Number(atim), Number(mtim)); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) - return 28 /* WasiErrno.EINVAL */; - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); - if (validateFstFlagsOrReturn(fst_flags)) { - return 28 /* WasiErrno.EINVAL */; - } - const fs = getFs(this); - const resolvedPath = await resolvePathAsync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); - if ((fst_flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { - atim = BigInt(Date.now() * 1000000); - } - if ((fst_flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { - mtim = BigInt(Date.now() * 1000000); - } - await fs.promises.utimes(resolvedPath, Number(atim), Number(mtim)); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32'], ['i32']); - defineImport('path_link', function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const fs = getFs(this); - const resolvedOldPath = resolvePathSync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - fs.linkSync(resolvedOldPath, resolvedNewPath); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const fs = getFs(this); - const resolvedOldPath = await resolvePathAsync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - await fs.promises.link(resolvedOldPath, resolvedNewPath); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - function pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags) { - const read = (fs_rights_base & (WasiRights.FD_READ | - WasiRights.FD_READDIR)) !== BigInt(0); - const write = (fs_rights_base & (WasiRights.FD_DATASYNC | - WasiRights.FD_WRITE | - WasiRights.FD_ALLOCATE | - WasiRights.FD_FILESTAT_SET_SIZE)) !== BigInt(0); - let flags = write ? read ? 2 /* FileControlFlag.O_RDWR */ : 1 /* FileControlFlag.O_WRONLY */ : 0 /* FileControlFlag.O_RDONLY */; - let needed_base = WasiRights.PATH_OPEN; - let needed_inheriting = fs_rights_base | fs_rights_inheriting; - if ((o_flags & 1 /* WasiFileControlFlag.O_CREAT */) !== 0) { - flags |= 64 /* FileControlFlag.O_CREAT */; - needed_base |= WasiRights.PATH_CREATE_FILE; - } - if ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0) { - flags |= 65536 /* FileControlFlag.O_DIRECTORY */; - } - if ((o_flags & 4 /* WasiFileControlFlag.O_EXCL */) !== 0) { - flags |= 128 /* FileControlFlag.O_EXCL */; - } - if ((o_flags & 8 /* WasiFileControlFlag.O_TRUNC */) !== 0) { - flags |= 512 /* FileControlFlag.O_TRUNC */; - needed_base |= WasiRights.PATH_FILESTAT_SET_SIZE; - } - if ((fs_flags & 1 /* WasiFdFlag.APPEND */) !== 0) { - flags |= 1024 /* FileControlFlag.O_APPEND */; - } - if ((fs_flags & 2 /* WasiFdFlag.DSYNC */) !== 0) { - // flags |= FileControlFlag.O_DSYNC; - needed_inheriting |= WasiRights.FD_DATASYNC; - } - if ((fs_flags & 4 /* WasiFdFlag.NONBLOCK */) !== 0) { - flags |= 2048 /* FileControlFlag.O_NONBLOCK */; - } - if ((fs_flags & 8 /* WasiFdFlag.RSYNC */) !== 0) { - flags |= 1052672 /* FileControlFlag.O_SYNC */; - needed_inheriting |= WasiRights.FD_SYNC; - } - if ((fs_flags & 16 /* WasiFdFlag.SYNC */) !== 0) { - flags |= 1052672 /* FileControlFlag.O_SYNC */; - needed_inheriting |= WasiRights.FD_SYNC; - } - if (write && (flags & (1024 /* FileControlFlag.O_APPEND */ | 512 /* FileControlFlag.O_TRUNC */)) === 0) { - needed_inheriting |= WasiRights.FD_SEEK; - } - return { flags, needed_base, needed_inheriting }; - } - defineImport('path_open', function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { - path = Number(path); - fd = Number(fd); - if (path === 0 || fd === 0) { - return 28 /* WasiErrno.EINVAL */; - } - path_len = Number(path_len); - fs_rights_base = BigInt(fs_rights_base); - fs_rights_inheriting = BigInt(fs_rights_inheriting); - const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); - const memory = getMemory(this); - const HEAPU8 = memory.HEAPU8; - const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - const resolved_path = resolvePathSync(fs, fileDescriptor, pathString, dirflags); - const r = fs.openSync(resolved_path, flagsRes, 0o666); - const filetype = wasi.fds.getFileTypeByFd(r); - if ((filetype !== 3 /* WasiFileType.DIRECTORY */) && - ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0 || - (resolved_path.endsWith('/')))) { - return 54 /* WasiErrno.ENOTDIR */; - } - const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r, flagsRes, filetype); - const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); - const stat = fs.fstatSync(r, { bigint: true }); - if (stat.isFile()) { - wrap.size = stat.size; - if ((flagsRes & 1024 /* FileControlFlag.O_APPEND */) !== 0) { - wrap.pos = stat.size; - } - } - const view = memory.view; - view.setInt32(fd, wrap.id, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { - path = Number(path); - fd = Number(fd); - if (path === 0 || fd === 0) { - return 28 /* WasiErrno.EINVAL */; - } - path_len = Number(path_len); - fs_rights_base = BigInt(fs_rights_base); - fs_rights_inheriting = BigInt(fs_rights_inheriting); - const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); - const memory = getMemory(this); - const HEAPU8 = memory.HEAPU8; - const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - const resolved_path = await resolvePathAsync(fs, fileDescriptor, pathString, dirflags); - const r = await fs.promises.open(resolved_path, flagsRes, 0o666); - const filetype = await wasi.fds.getFileTypeByFd(r); - if ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0 && filetype !== 3 /* WasiFileType.DIRECTORY */) { - return 54 /* WasiErrno.ENOTDIR */; - } - const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r.fd, flagsRes, filetype); - const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); - const stat = await r.stat({ bigint: true }); - if (stat.isFile()) { - wrap.size = stat.size; - if ((flagsRes & 1024 /* FileControlFlag.O_APPEND */) !== 0) { - wrap.pos = stat.size; - } - } - const view = memory.view; - view.setInt32(fd, wrap.id, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32', 'i32'], ['i32']); - defineImport('path_readlink', function path_readlink(fd, path, path_len, buf, buf_len, bufused) { - path = Number(path); - path_len = Number(path_len); - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (path === 0 || buf === 0 || bufused === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - const link = fs.readlinkSync(pathString); - const linkData = encoder.encode(link); - const len = Math.min(linkData.length, buf_len); - if (len >= buf_len) - return 42 /* WasiErrno.ENOBUFS */; - HEAPU8.set(linkData.subarray(0, len), buf); - HEAPU8[buf + len] = 0; - view.setUint32(bufused, len, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_readlink(fd, path, path_len, buf, buf_len, bufused) { - path = Number(path); - path_len = Number(path_len); - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (path === 0 || buf === 0 || bufused === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - const link = await fs.promises.readlink(pathString); - const linkData = encoder.encode(link); - const len = Math.min(linkData.length, buf_len); - if (len >= buf_len) - return 42 /* WasiErrno.ENOBUFS */; - HEAPU8.set(linkData.subarray(0, len), buf); - HEAPU8[buf + len] = 0; - view.setUint32(bufused, len, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_remove_directory', function path_remove_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.rmdirSync(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_remove_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.rmdir(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32'], ['i32']); - defineImport('path_rename', function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - const fs = getFs(this); - fs.renameSync(resolvedOldPath, resolvedNewPath); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - const fs = getFs(this); - await fs.promises.rename(resolvedOldPath, resolvedNewPath); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_symlink', function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); - const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); - if (oldPath.length > 0 && oldPath[0] === '/') { - return 63 /* WasiErrno.EPERM */; - } - let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); - newPath = resolve(fileDescriptor.realPath, newPath); - const fs = getFs(this); - fs.symlinkSync(oldPath, newPath); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); - const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); - let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); - newPath = resolve(fileDescriptor.realPath, newPath); - const fs = getFs(this); - await fs.promises.symlink(oldPath, newPath); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_unlink_file', function path_unlink_file(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.unlinkSync(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_unlink_file(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.unlink(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32'], ['i32']); - this._setMemory = function setMemory(m) { - if (!(m instanceof _WebAssembly.Memory)) { - throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory'); - } - _memory.set(_this, extendMemory(m)); - }; - } - static createSync(args, env, preopens, stdio, fs, print, printErr) { - const fds = new SyncTable({ - size: 3, - in: stdio[0], - out: stdio[1], - err: stdio[2], - fs, - print, - printErr - }); - const _this = new WASI$1(args, env, fds, false, fs); - if (preopens.length > 0) { - for (let i = 0; i < preopens.length; ++i) { - const realPath = fs.realpathSync(preopens[i].realPath, 'utf8'); - const fd = fs.openSync(realPath, 'r', 0o666); - fds.insertPreopen(fd, preopens[i].mappedPath, realPath); - } - } - return _this; - } - static async createAsync(args, env, preopens, stdio, fs, print, printErr, asyncify) { - const fds = new AsyncTable({ - size: 3, - in: stdio[0], - out: stdio[1], - err: stdio[2], - print, - printErr - }); - const _this = new WASI$1(args, env, fds, true, fs, asyncify); - if (preopens.length > 0) { - for (let i = 0; i < preopens.length; ++i) { - const entry = preopens[i]; - const realPath = await fs.promises.realpath(entry.realPath); - const fd = await fs.promises.open(realPath, 'r', 0o666); - await fds.insertPreopen(fd, entry.mappedPath, realPath); - } - } - return _this; - } -} - -// eslint-disable-next-line spaced-comment -const kEmptyObject = /*#__PURE__*/ Object.freeze(/*#__PURE__*/ Object.create(null)); -const kExitCode = Symbol('kExitCode'); -const kSetMemory = Symbol('kSetMemory'); -const kStarted = Symbol('kStarted'); -const kInstance = Symbol('kInstance'); -const kBindingName = Symbol('kBindingName'); -function validateOptions(options) { - var _a; - validateObject(options, 'options'); - let _WASI; - if (options.version !== undefined) { - validateString(options.version, 'options.version'); - switch (options.version) { - case 'unstable': - _WASI = WASI$1; - this[kBindingName] = 'wasi_unstable'; - break; - case 'preview1': - _WASI = WASI$1; - this[kBindingName] = 'wasi_snapshot_preview1'; - break; - default: - throw new TypeError(`unsupported WASI version "${options.version}"`); - } - } - else { - _WASI = WASI$1; - this[kBindingName] = 'wasi_snapshot_preview1'; - } - if (options.args !== undefined) { - validateArray(options.args, 'options.args'); - } - const args = ((_a = options.args) !== null && _a !== void 0 ? _a : []).map(String); - const env = []; - if (options.env !== undefined) { - validateObject(options.env, 'options.env'); - Object.entries(options.env).forEach(({ 0: key, 1: value }) => { - if (value !== undefined) { - env.push(`${key}=${value}`); - } - }); - } - const preopens = []; - if (options.preopens !== undefined) { - validateObject(options.preopens, 'options.preopens'); - Object.entries(options.preopens).forEach(({ 0: key, 1: value }) => preopens.push({ mappedPath: String(key), realPath: String(value) })); - } - if (preopens.length > 0) { - if (options.fs === undefined) { - throw new Error('filesystem is disabled, can not preopen directory'); - } - try { - validateObject(options.fs, 'options.fs'); - } - catch (_) { - throw new TypeError('Node.js fs like implementation is not provided'); - } - } - // if (options.filesystem !== undefined) { - // validateObject(options.filesystem, 'options.filesystem') - // validateString(options.filesystem.type, 'options.filesystem.type') - // if (options.filesystem.type !== 'memfs' && options.filesystem.type !== 'file-system-access-api') { - // throw new Error(`Filesystem type ${(options.filesystem as any).type as string} is not supported, only "memfs" and "file-system-access-api" is supported currently`) - // } - // try { - // validateObject(options.filesystem.fs, 'options.filesystem.fs') - // } catch (_) { - // throw new Error('Node.js fs like implementation is not provided') - // } - // } - if (options.print !== undefined) - validateFunction(options.print, 'options.print'); - if (options.printErr !== undefined) - validateFunction(options.printErr, 'options.printErr'); - if (options.returnOnExit !== undefined) { - validateBoolean(options.returnOnExit, 'options.returnOnExit'); - } - // const { stdin = 0, stdout = 1, stderr = 2 } = options - // validateInt32(stdin, 'options.stdin', 0) - // validateInt32(stdout, 'options.stdout', 0) - // validateInt32(stderr, 'options.stderr', 0) - // const stdio = [stdin, stdout, stderr] as const - const stdio = [0, 1, 2]; - return { - args, - env, - preopens, - stdio, - _WASI - }; -} -function initWASI(setMemory, wrap) { - this[kSetMemory] = setMemory; - this.wasiImport = wrap; - this[kStarted] = false; - this[kExitCode] = 0; - this[kInstance] = undefined; -} -/** @public */ -class WASI { - constructor(options = kEmptyObject) { - const { args, env, preopens, stdio, _WASI } = validateOptions.call(this, options); - const wrap = _WASI.createSync(args, env, preopens, stdio, options.fs, options.print, options.printErr); - const setMemory = wrap._setMemory; - delete wrap._setMemory; - initWASI.call(this, setMemory, wrap); - if (options.returnOnExit) { - wrap.proc_exit = wasiReturnOnProcExit.bind(this); - } - } - finalizeBindings(instance, _a) { - var _b; - var { memory = (_b = instance === null || instance === void 0 ? void 0 : instance.exports) === null || _b === void 0 ? void 0 : _b.memory } = _a === void 0 ? {} : _a; - if (this[kStarted]) { - throw new Error('WASI instance has already started'); - } - validateObject(instance, 'instance'); - validateObject(instance.exports, 'instance.exports'); - this[kSetMemory](memory); - this[kInstance] = instance; - this[kStarted] = true; - } - // Must not export _initialize, must export _start - start(instance) { - this.finalizeBindings(instance); - const { _start, _initialize } = this[kInstance].exports; - validateFunction(_start, 'instance.exports._start'); - validateUndefined(_initialize, 'instance.exports._initialize'); - let ret; - try { - ret = _start(); - } - catch (err) { - if (err !== kExitCode) { - throw err; - } - } - if (ret instanceof Promise) { - return ret.then(() => this[kExitCode], (err) => { - if (err !== kExitCode) { - throw err; - } - return this[kExitCode]; - }); - } - return this[kExitCode]; - } - // Must not export _start, may optionally export _initialize - initialize(instance) { - this.finalizeBindings(instance); - const { _start, _initialize } = this[kInstance].exports; - validateUndefined(_start, 'instance.exports._start'); - if (_initialize !== undefined) { - validateFunction(_initialize, 'instance.exports._initialize'); - return _initialize(); - } - } - getImportObject() { - return { [this[kBindingName]]: this.wasiImport }; - } -} -function wasiReturnOnProcExit(rval) { - this[kExitCode] = rval; - // eslint-disable-next-line @typescript-eslint/no-throw-literal - throw kExitCode; -} -/** @public */ -async function createAsyncWASI(options = kEmptyObject) { - const _this = Object.create(WASI.prototype); - const { args, env, preopens, stdio, _WASI } = validateOptions.call(_this, options); - if (options.asyncify !== undefined) { - validateObject(options.asyncify, 'options.asyncify'); - validateFunction(options.asyncify.wrapImportFunction, 'options.asyncify.wrapImportFunction'); - } - const wrap = await _WASI.createAsync(args, env, preopens, stdio, options.fs, options.print, options.printErr, options.asyncify); - const setMemory = wrap._setMemory; - delete wrap._setMemory; - initWASI.call(_this, setMemory, wrap); - if (options.returnOnExit) { - wrap.proc_exit = wasiReturnOnProcExit.bind(_this); - } - return _this; -} - -export { Asyncify, Memory, WASI, WebAssemblyMemory, asyncifyLoad, asyncifyLoadSync, createAsyncWASI, extendMemory, load, loadSync, wrapAsyncExport, wrapAsyncImport, wrapExports }; diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js b/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js deleted file mode 100644 index c7368ea..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +++ /dev/null @@ -1,2758 +0,0 @@ -const _WebAssembly = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; -if (!_WebAssembly) { - throw new Error('WebAssembly is not supported in this environment'); -} - -/* eslint-disable spaced-comment */ - -function validateObject(value, name) { - if (value === null || typeof value !== 'object') { - throw new TypeError(`${name} must be an object. Received ${value === null ? 'null' : typeof value}`); - } -} -function validateArray(value, name) { - if (!Array.isArray(value)) { - throw new TypeError(`${name} must be an array. Received ${value === null ? 'null' : typeof value}`); - } -} -function validateBoolean(value, name) { - if (typeof value !== 'boolean') { - throw new TypeError(`${name} must be a boolean. Received ${value === null ? 'null' : typeof value}`); - } -} -function validateString(value, name) { - if (typeof value !== 'string') { - throw new TypeError(`${name} must be a string. Received ${value === null ? 'null' : typeof value}`); - } -} -function validateFunction(value, name) { - if (typeof value !== 'function') { - throw new TypeError(`${name} must be a function. Received ${value === null ? 'null' : typeof value}`); - } -} -function validateUndefined(value, name) { - if (value !== undefined) { - throw new TypeError(`${name} must be undefined. Received ${value === null ? 'null' : typeof value}`); - } -} -function isPromiseLike(obj) { - return !!(obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'); -} -function wrapInstanceExports(exports, mapFn) { - const newExports = Object.create(null); - Object.keys(exports).forEach(name => { - const exportValue = exports[name]; - Object.defineProperty(newExports, name, { - enumerable: true, - value: mapFn(exportValue, name) - }); - }); - return newExports; -} -function sleepBreakIf(delay, breakIf) { - const start = Date.now(); - const end = start + delay; - let ret = false; - while (Date.now() < end) { - if (breakIf()) { - ret = true; - break; - } - } - return ret; -} -function unsharedSlice(view, start, end) { - return ((typeof SharedArrayBuffer === 'function' && view.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(view.buffer.constructor) === '[object SharedArrayBuffer]')) - ? view.slice(start, end) - : view.subarray(start, end); -} - -const ignoreNames = [ - 'asyncify_get_state', - 'asyncify_start_rewind', - 'asyncify_start_unwind', - 'asyncify_stop_rewind', - 'asyncify_stop_unwind' -]; -function tryAllocate(instance, wasm64, size, mallocName) { - if (typeof instance.exports[mallocName] !== 'function' || size <= 0) { - return { - wasm64, - dataPtr: 16, - start: wasm64 ? 32 : 24, - end: 1024 - }; - } - const malloc = instance.exports[mallocName]; - const dataPtr = wasm64 ? Number(malloc(BigInt(16) + BigInt(size))) : malloc(8 + size); - if (dataPtr === 0) { - throw new Error('Allocate asyncify data failed'); - } - return wasm64 - ? { wasm64, dataPtr, start: dataPtr + 16, end: dataPtr + 16 + size } - : { wasm64, dataPtr, start: dataPtr + 8, end: dataPtr + 8 + size }; -} -/** @public */ -class Asyncify { - constructor() { - this.value = undefined; - this.exports = undefined; - this.dataPtr = 0; - } - init(memory, instance, options) { - var _a, _b; - if (this.exports) { - throw new Error('Asyncify has been initialized'); - } - if (!(memory instanceof _WebAssembly.Memory)) { - throw new TypeError('Require WebAssembly.Memory object'); - } - const exports = instance.exports; - for (let i = 0; i < ignoreNames.length; ++i) { - if (typeof exports[ignoreNames[i]] !== 'function') { - throw new TypeError('Invalid asyncify wasm'); - } - } - let address; - const wasm64 = Boolean(options.wasm64); - if (!options.tryAllocate) { - address = { - wasm64, - dataPtr: 16, - start: wasm64 ? 32 : 24, - end: 1024 - }; - } - else { - if (options.tryAllocate === true) { - address = tryAllocate(instance, wasm64, 4096, 'malloc'); - } - else { - address = tryAllocate(instance, wasm64, (_a = options.tryAllocate.size) !== null && _a !== void 0 ? _a : 4096, (_b = options.tryAllocate.name) !== null && _b !== void 0 ? _b : 'malloc'); - } - } - this.dataPtr = address.dataPtr; - if (wasm64) { - new BigInt64Array(memory.buffer, this.dataPtr).set([BigInt(address.start), BigInt(address.end)]); - } - else { - new Int32Array(memory.buffer, this.dataPtr).set([address.start, address.end]); - } - this.exports = this.wrapExports(exports, options.wrapExports); - const asyncifiedInstance = Object.create(_WebAssembly.Instance.prototype); - Object.defineProperty(asyncifiedInstance, 'exports', { value: this.exports }); - // Object.setPrototypeOf(instance, Instance.prototype) - return asyncifiedInstance; - } - assertState() { - if (this.exports.asyncify_get_state() !== 0 /* AsyncifyState.NONE */) { - throw new Error('Asyncify state error'); - } - } - wrapImportFunction(f) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - return (function () { - // eslint-disable-next-line no-unreachable-loop - while (_this.exports.asyncify_get_state() === 2 /* AsyncifyState.REWINDING */) { - _this.exports.asyncify_stop_rewind(); - return _this.value; - } - _this.assertState(); - const v = f.apply(this, arguments); - if (!isPromiseLike(v)) - return v; - _this.exports.asyncify_start_unwind(_this.dataPtr); - _this.value = v; - }); - } - wrapImports(imports) { - const importObject = {}; - Object.keys(imports).forEach(k => { - const mod = imports[k]; - const newModule = {}; - Object.keys(mod).forEach(name => { - const importValue = mod[name]; - if (typeof importValue === 'function') { - newModule[name] = this.wrapImportFunction(importValue); - } - else { - newModule[name] = importValue; - } - }); - importObject[k] = newModule; - }); - return importObject; - } - wrapExportFunction(f) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - return (async function () { - _this.assertState(); - let ret = f.apply(this, arguments); - while (_this.exports.asyncify_get_state() === 1 /* AsyncifyState.UNWINDING */) { - _this.exports.asyncify_stop_unwind(); - _this.value = await _this.value; - _this.assertState(); - _this.exports.asyncify_start_rewind(_this.dataPtr); - ret = f.call(this); - } - _this.assertState(); - return ret; - }); - } - wrapExports(exports, needWrap) { - return wrapInstanceExports(exports, (exportValue, name) => { - let ignore = ignoreNames.indexOf(name) !== -1 || typeof exportValue !== 'function'; - if (Array.isArray(needWrap)) { - ignore = ignore || (needWrap.indexOf(name) === -1); - } - return ignore ? exportValue : this.wrapExportFunction(exportValue); - }); - } -} - -function validateImports(imports) { - if (imports && typeof imports !== 'object') { - throw new TypeError('imports must be an object or undefined'); - } -} -function fetchWasm(urlOrBuffer, imports) { - if (typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { - return _WebAssembly.instantiate(urlOrBuffer, imports); - } - return fetch(urlOrBuffer) - .then(response => response.arrayBuffer()) - .then(buffer => _WebAssembly.instantiate(buffer, imports)); -} -/** @public */ -function load(wasmInput, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - let source; - if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { - return _WebAssembly.instantiate(wasmInput, imports); - } - if (wasmInput instanceof _WebAssembly.Module) { - return _WebAssembly.instantiate(wasmInput, imports).then((instance) => { - return { instance, module: wasmInput }; - }); - } - if (typeof wasmInput !== 'string' && !(wasmInput instanceof URL)) { - throw new TypeError('Invalid source'); - } - if (typeof _WebAssembly.instantiateStreaming === 'function') { - let responsePromise; - try { - responsePromise = fetch(wasmInput); - source = _WebAssembly.instantiateStreaming(responsePromise, imports).catch(() => { - return fetchWasm(wasmInput, imports); - }); - } - catch (_) { - source = fetchWasm(wasmInput, imports); - } - } - else { - source = fetchWasm(wasmInput, imports); - } - return source; -} -/** @public */ -function asyncifyLoad(asyncify, urlOrBuffer, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - const asyncifyHelper = new Asyncify(); - imports = asyncifyHelper.wrapImports(imports); - return load(urlOrBuffer, imports).then(source => { - var _a; - const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); - return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; - }); -} -/** @public */ -function loadSync(wasmInput, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - let module; - if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { - module = new _WebAssembly.Module(wasmInput); - } - else if (wasmInput instanceof WebAssembly.Module) { - module = wasmInput; - } - else { - throw new TypeError('Invalid source'); - } - const instance = new _WebAssembly.Instance(module, imports); - const source = { instance, module }; - return source; -} -/** @public */ -function asyncifyLoadSync(asyncify, buffer, imports) { - var _a; - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - const asyncifyHelper = new Asyncify(); - imports = asyncifyHelper.wrapImports(imports); - const source = loadSync(buffer, imports); - const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); - return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; -} - -const CHAR_DOT = 46; /* . */ -const CHAR_FORWARD_SLASH = 47; /* / */ -function isPosixPathSeparator(code) { - return code === CHAR_FORWARD_SLASH; -} -function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { - let res = ''; - let lastSegmentLength = 0; - let lastSlash = -1; - let dots = 0; - let code = 0; - for (let i = 0; i <= path.length; ++i) { - if (i < path.length) { - code = path.charCodeAt(i); - } - else if (isPathSeparator(code)) { - break; - } - else { - code = CHAR_FORWARD_SLASH; - } - if (isPathSeparator(code)) { - if (lastSlash === i - 1 || dots === 1) ; - else if (dots === 2) { - if (res.length < 2 || lastSegmentLength !== 2 || - res.charCodeAt(res.length - 1) !== CHAR_DOT || - res.charCodeAt(res.length - 2) !== CHAR_DOT) { - if (res.length > 2) { - const lastSlashIndex = res.indexOf(separator); - if (lastSlashIndex === -1) { - res = ''; - lastSegmentLength = 0; - } - else { - res = res.slice(0, lastSlashIndex); - lastSegmentLength = - res.length - 1 - res.indexOf(separator); - } - lastSlash = i; - dots = 0; - continue; - } - else if (res.length !== 0) { - res = ''; - lastSegmentLength = 0; - lastSlash = i; - dots = 0; - continue; - } - } - if (allowAboveRoot) { - res += res.length > 0 ? `${separator}..` : '..'; - lastSegmentLength = 2; - } - } - else { - if (res.length > 0) { - res += `${separator}${path.slice(lastSlash + 1, i)}`; - } - else { - res = path.slice(lastSlash + 1, i); - } - lastSegmentLength = i - lastSlash - 1; - } - lastSlash = i; - dots = 0; - } - else if (code === CHAR_DOT && dots !== -1) { - ++dots; - } - else { - dots = -1; - } - } - return res; -} -function resolve(...args) { - let resolvedPath = ''; - let resolvedAbsolute = false; - for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { - const path = i >= 0 ? args[i] : '/'; - validateString(path, 'path'); - // Skip empty entries - if (path.length === 0) { - continue; - } - resolvedPath = `${path}/${resolvedPath}`; - resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - // Normalize the path - resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); - if (resolvedAbsolute) { - return `/${resolvedPath}`; - } - return resolvedPath.length > 0 ? resolvedPath : '.'; -} - -const FD_DATASYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(0)); -const FD_READ = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(1)); -const FD_SEEK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(2)); -const FD_FDSTAT_SET_FLAGS = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(3)); -const FD_SYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(4)); -const FD_TELL = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(5)); -const FD_WRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(6)); -const FD_ADVISE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(7)); -const FD_ALLOCATE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(8)); -const PATH_CREATE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(9)); -const PATH_CREATE_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(10)); -const PATH_LINK_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(11)); -const PATH_LINK_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(12)); -const PATH_OPEN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(13)); -const FD_READDIR = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(14)); -const PATH_READLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(15)); -const PATH_RENAME_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(16)); -const PATH_RENAME_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(17)); -const PATH_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(18)); -const PATH_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(19)); -const PATH_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(20)); -const FD_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(21)); -const FD_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(22)); -const FD_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(23)); -const PATH_SYMLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(24)); -const PATH_REMOVE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(25)); -const PATH_UNLINK_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(26)); -const POLL_FD_READWRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(27)); -const SOCK_SHUTDOWN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(28)); -const SOCK_ACCEPT = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(29)); -const WasiRights = { - FD_DATASYNC, - FD_READ, - FD_SEEK, - FD_FDSTAT_SET_FLAGS, - FD_SYNC, - FD_TELL, - FD_WRITE, - FD_ADVISE, - FD_ALLOCATE, - PATH_CREATE_DIRECTORY, - PATH_CREATE_FILE, - PATH_LINK_SOURCE, - PATH_LINK_TARGET, - PATH_OPEN, - FD_READDIR, - PATH_READLINK, - PATH_RENAME_SOURCE, - PATH_RENAME_TARGET, - PATH_FILESTAT_GET, - PATH_FILESTAT_SET_SIZE, - PATH_FILESTAT_SET_TIMES, - FD_FILESTAT_GET, - FD_FILESTAT_SET_SIZE, - FD_FILESTAT_SET_TIMES, - PATH_SYMLINK, - PATH_REMOVE_DIRECTORY, - PATH_UNLINK_FILE, - POLL_FD_READWRITE, - SOCK_SHUTDOWN, - SOCK_ACCEPT -}; - -function strerror(errno) { - switch (errno) { - case 0 /* WasiErrno.ESUCCESS */: return 'Success'; - case 1 /* WasiErrno.E2BIG */: return 'Argument list too long'; - case 2 /* WasiErrno.EACCES */: return 'Permission denied'; - case 3 /* WasiErrno.EADDRINUSE */: return 'Address in use'; - case 4 /* WasiErrno.EADDRNOTAVAIL */: return 'Address not available'; - case 5 /* WasiErrno.EAFNOSUPPORT */: return 'Address family not supported by protocol'; - case 6 /* WasiErrno.EAGAIN */: return 'Resource temporarily unavailable'; - case 7 /* WasiErrno.EALREADY */: return 'Operation already in progress'; - case 8 /* WasiErrno.EBADF */: return 'Bad file descriptor'; - case 9 /* WasiErrno.EBADMSG */: return 'Bad message'; - case 10 /* WasiErrno.EBUSY */: return 'Resource busy'; - case 11 /* WasiErrno.ECANCELED */: return 'Operation canceled'; - case 12 /* WasiErrno.ECHILD */: return 'No child process'; - case 13 /* WasiErrno.ECONNABORTED */: return 'Connection aborted'; - case 14 /* WasiErrno.ECONNREFUSED */: return 'Connection refused'; - case 15 /* WasiErrno.ECONNRESET */: return 'Connection reset by peer'; - case 16 /* WasiErrno.EDEADLK */: return 'Resource deadlock would occur'; - case 17 /* WasiErrno.EDESTADDRREQ */: return 'Destination address required'; - case 18 /* WasiErrno.EDOM */: return 'Domain error'; - case 19 /* WasiErrno.EDQUOT */: return 'Quota exceeded'; - case 20 /* WasiErrno.EEXIST */: return 'File exists'; - case 21 /* WasiErrno.EFAULT */: return 'Bad address'; - case 22 /* WasiErrno.EFBIG */: return 'File too large'; - case 23 /* WasiErrno.EHOSTUNREACH */: return 'Host is unreachable'; - case 24 /* WasiErrno.EIDRM */: return 'Identifier removed'; - case 25 /* WasiErrno.EILSEQ */: return 'Illegal byte sequence'; - case 26 /* WasiErrno.EINPROGRESS */: return 'Operation in progress'; - case 27 /* WasiErrno.EINTR */: return 'Interrupted system call'; - case 28 /* WasiErrno.EINVAL */: return 'Invalid argument'; - case 29 /* WasiErrno.EIO */: return 'I/O error'; - case 30 /* WasiErrno.EISCONN */: return 'Socket is connected'; - case 31 /* WasiErrno.EISDIR */: return 'Is a directory'; - case 32 /* WasiErrno.ELOOP */: return 'Symbolic link loop'; - case 33 /* WasiErrno.EMFILE */: return 'No file descriptors available'; - case 34 /* WasiErrno.EMLINK */: return 'Too many links'; - case 35 /* WasiErrno.EMSGSIZE */: return 'Message too large'; - case 36 /* WasiErrno.EMULTIHOP */: return 'Multihop attempted'; - case 37 /* WasiErrno.ENAMETOOLONG */: return 'Filename too long'; - case 38 /* WasiErrno.ENETDOWN */: return 'Network is down'; - case 39 /* WasiErrno.ENETRESET */: return 'Connection reset by network'; - case 40 /* WasiErrno.ENETUNREACH */: return 'Network unreachable'; - case 41 /* WasiErrno.ENFILE */: return 'Too many files open in system'; - case 42 /* WasiErrno.ENOBUFS */: return 'No buffer space available'; - case 43 /* WasiErrno.ENODEV */: return 'No such device'; - case 44 /* WasiErrno.ENOENT */: return 'No such file or directory'; - case 45 /* WasiErrno.ENOEXEC */: return 'Exec format error'; - case 46 /* WasiErrno.ENOLCK */: return 'No locks available'; - case 47 /* WasiErrno.ENOLINK */: return 'Link has been severed'; - case 48 /* WasiErrno.ENOMEM */: return 'Out of memory'; - case 49 /* WasiErrno.ENOMSG */: return 'No message of the desired type'; - case 50 /* WasiErrno.ENOPROTOOPT */: return 'Protocol not available'; - case 51 /* WasiErrno.ENOSPC */: return 'No space left on device'; - case 52 /* WasiErrno.ENOSYS */: return 'Function not implemented'; - case 53 /* WasiErrno.ENOTCONN */: return 'Socket not connected'; - case 54 /* WasiErrno.ENOTDIR */: return 'Not a directory'; - case 55 /* WasiErrno.ENOTEMPTY */: return 'Directory not empty'; - case 56 /* WasiErrno.ENOTRECOVERABLE */: return 'State not recoverable'; - case 57 /* WasiErrno.ENOTSOCK */: return 'Not a socket'; - case 58 /* WasiErrno.ENOTSUP */: return 'Not supported'; - case 59 /* WasiErrno.ENOTTY */: return 'Not a tty'; - case 60 /* WasiErrno.ENXIO */: return 'No such device or address'; - case 61 /* WasiErrno.EOVERFLOW */: return 'Value too large for data type'; - case 62 /* WasiErrno.EOWNERDEAD */: return 'Previous owner died'; - case 63 /* WasiErrno.EPERM */: return 'Operation not permitted'; - case 64 /* WasiErrno.EPIPE */: return 'Broken pipe'; - case 65 /* WasiErrno.EPROTO */: return 'Protocol error'; - case 66 /* WasiErrno.EPROTONOSUPPORT */: return 'Protocol not supported'; - case 67 /* WasiErrno.EPROTOTYPE */: return 'Protocol wrong type for socket'; - case 68 /* WasiErrno.ERANGE */: return 'Result not representable'; - case 69 /* WasiErrno.EROFS */: return 'Read-only file system'; - case 70 /* WasiErrno.ESPIPE */: return 'Invalid seek'; - case 71 /* WasiErrno.ESRCH */: return 'No such process'; - case 72 /* WasiErrno.ESTALE */: return 'Stale file handle'; - case 73 /* WasiErrno.ETIMEDOUT */: return 'Operation timed out'; - case 74 /* WasiErrno.ETXTBSY */: return 'Text file busy'; - case 75 /* WasiErrno.EXDEV */: return 'Cross-device link'; - case 76 /* WasiErrno.ENOTCAPABLE */: return 'Capabilities insufficient'; - default: return 'Unknown error'; - } -} -class WasiError extends Error { - constructor(message, errno) { - super(message); - this.errno = errno; - } - getErrorMessage() { - return strerror(this.errno); - } -} -Object.defineProperty(WasiError.prototype, 'name', { - configurable: true, - writable: true, - value: 'WasiError' -}); - -const RIGHTS_ALL = WasiRights.FD_DATASYNC | - WasiRights.FD_READ | - WasiRights.FD_SEEK | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_SYNC | - WasiRights.FD_TELL | - WasiRights.FD_WRITE | - WasiRights.FD_ADVISE | - WasiRights.FD_ALLOCATE | - WasiRights.PATH_CREATE_DIRECTORY | - WasiRights.PATH_CREATE_FILE | - WasiRights.PATH_LINK_SOURCE | - WasiRights.PATH_LINK_TARGET | - WasiRights.PATH_OPEN | - WasiRights.FD_READDIR | - WasiRights.PATH_READLINK | - WasiRights.PATH_RENAME_SOURCE | - WasiRights.PATH_RENAME_TARGET | - WasiRights.PATH_FILESTAT_GET | - WasiRights.PATH_FILESTAT_SET_SIZE | - WasiRights.PATH_FILESTAT_SET_TIMES | - WasiRights.FD_FILESTAT_GET | - WasiRights.FD_FILESTAT_SET_TIMES | - WasiRights.FD_FILESTAT_SET_SIZE | - WasiRights.PATH_SYMLINK | - WasiRights.PATH_UNLINK_FILE | - WasiRights.PATH_REMOVE_DIRECTORY | - WasiRights.POLL_FD_READWRITE | - WasiRights.SOCK_SHUTDOWN | - WasiRights.SOCK_ACCEPT; -const BLOCK_DEVICE_BASE = RIGHTS_ALL; -const BLOCK_DEVICE_INHERITING = RIGHTS_ALL; -const CHARACTER_DEVICE_BASE = RIGHTS_ALL; -const CHARACTER_DEVICE_INHERITING = RIGHTS_ALL; -const REGULAR_FILE_BASE = WasiRights.FD_DATASYNC | - WasiRights.FD_READ | - WasiRights.FD_SEEK | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_SYNC | - WasiRights.FD_TELL | - WasiRights.FD_WRITE | - WasiRights.FD_ADVISE | - WasiRights.FD_ALLOCATE | - WasiRights.FD_FILESTAT_GET | - WasiRights.FD_FILESTAT_SET_SIZE | - WasiRights.FD_FILESTAT_SET_TIMES | - WasiRights.POLL_FD_READWRITE; -const REGULAR_FILE_INHERITING = /*#__PURE__*/ BigInt(0); -const DIRECTORY_BASE = WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_SYNC | - WasiRights.FD_ADVISE | - WasiRights.PATH_CREATE_DIRECTORY | - WasiRights.PATH_CREATE_FILE | - WasiRights.PATH_LINK_SOURCE | - WasiRights.PATH_LINK_TARGET | - WasiRights.PATH_OPEN | - WasiRights.FD_READDIR | - WasiRights.PATH_READLINK | - WasiRights.PATH_RENAME_SOURCE | - WasiRights.PATH_RENAME_TARGET | - WasiRights.PATH_FILESTAT_GET | - WasiRights.PATH_FILESTAT_SET_SIZE | - WasiRights.PATH_FILESTAT_SET_TIMES | - WasiRights.FD_FILESTAT_GET | - WasiRights.FD_FILESTAT_SET_TIMES | - WasiRights.PATH_SYMLINK | - WasiRights.PATH_UNLINK_FILE | - WasiRights.PATH_REMOVE_DIRECTORY | - WasiRights.POLL_FD_READWRITE; -const DIRECTORY_INHERITING = DIRECTORY_BASE | REGULAR_FILE_BASE; -const SOCKET_BASE = (WasiRights.FD_READ | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_WRITE | - WasiRights.FD_FILESTAT_GET | - WasiRights.POLL_FD_READWRITE | - WasiRights.SOCK_SHUTDOWN); -const SOCKET_INHERITING = RIGHTS_ALL; -const TTY_BASE = WasiRights.FD_READ | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_WRITE | - WasiRights.FD_FILESTAT_GET | - WasiRights.POLL_FD_READWRITE; -const TTY_INHERITING = /*#__PURE__*/ BigInt(0); -function getRights(stdio, fd, flags, type) { - const ret = { - base: BigInt(0), - inheriting: BigInt(0) - }; - if (type === 0 /* WasiFileType.UNKNOWN */) { - throw new WasiError('Unknown file type', 28 /* WasiErrno.EINVAL */); - } - switch (type) { - case 4 /* WasiFileType.REGULAR_FILE */: - ret.base = REGULAR_FILE_BASE; - ret.inheriting = REGULAR_FILE_INHERITING; - break; - case 3 /* WasiFileType.DIRECTORY */: - ret.base = DIRECTORY_BASE; - ret.inheriting = DIRECTORY_INHERITING; - break; - case 6 /* WasiFileType.SOCKET_STREAM */: - case 5 /* WasiFileType.SOCKET_DGRAM */: - ret.base = SOCKET_BASE; - ret.inheriting = SOCKET_INHERITING; - break; - case 2 /* WasiFileType.CHARACTER_DEVICE */: - if (stdio.indexOf(fd) !== -1) { - ret.base = TTY_BASE; - ret.inheriting = TTY_INHERITING; - } - else { - ret.base = CHARACTER_DEVICE_BASE; - ret.inheriting = CHARACTER_DEVICE_INHERITING; - } - break; - case 1 /* WasiFileType.BLOCK_DEVICE */: - ret.base = BLOCK_DEVICE_BASE; - ret.inheriting = BLOCK_DEVICE_INHERITING; - break; - default: - ret.base = BigInt(0); - ret.inheriting = BigInt(0); - } - /* Disable read/write bits depending on access mode. */ - const read_or_write_only = flags & (0 | 1 | 2); - if (read_or_write_only === 0) { - ret.base &= ~WasiRights.FD_WRITE; - } - else if (read_or_write_only === 1) { - ret.base &= ~WasiRights.FD_READ; - } - return ret; -} - -function concatBuffer(buffers, size) { - let total = 0; - if (typeof size === 'number' && size >= 0) { - total = size; - } - else { - for (let i = 0; i < buffers.length; i++) { - const buffer = buffers[i]; - total += buffer.length; - } - } - let pos = 0; - const ret = new Uint8Array(total); - for (let i = 0; i < buffers.length; i++) { - const buffer = buffers[i]; - ret.set(buffer, pos); - pos += buffer.length; - } - return ret; -} -class FileDescriptor { - constructor(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { - this.id = id; - this.fd = fd; - this.path = path; - this.realPath = realPath; - this.type = type; - this.rightsBase = rightsBase; - this.rightsInheriting = rightsInheriting; - this.preopen = preopen; - this.pos = BigInt(0); - this.size = BigInt(0); - } - seek(offset, whence) { - if (whence === 0 /* WasiWhence.SET */) { - this.pos = BigInt(offset); - } - else if (whence === 1 /* WasiWhence.CUR */) { - this.pos += BigInt(offset); - } - else if (whence === 2 /* WasiWhence.END */) { - this.pos = BigInt(this.size) - BigInt(offset); - } - else { - throw new WasiError('Unknown whence', 29 /* WasiErrno.EIO */); - } - return this.pos; - } -} -class StandardOutput extends FileDescriptor { - constructor(log, id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { - super(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen); - this._log = log; - this._buf = null; - } - write(buffer) { - const originalBuffer = buffer; - if (this._buf) { - buffer = concatBuffer([this._buf, buffer]); - this._buf = null; - } - if (buffer.indexOf(10) === -1) { - this._buf = buffer; - return originalBuffer.byteLength; - } - let written = 0; - let lastBegin = 0; - let index; - while ((index = buffer.indexOf(10, written)) !== -1) { - const str = new TextDecoder().decode(buffer.subarray(lastBegin, index)); - this._log(str); - written += index - lastBegin + 1; - lastBegin = index + 1; - } - if (written < buffer.length) { - this._buf = buffer.slice(written); - } - return originalBuffer.byteLength; - } -} -function toFileType(stat) { - if (stat.isBlockDevice()) - return 1 /* WasiFileType.BLOCK_DEVICE */; - if (stat.isCharacterDevice()) - return 2 /* WasiFileType.CHARACTER_DEVICE */; - if (stat.isDirectory()) - return 3 /* WasiFileType.DIRECTORY */; - if (stat.isSocket()) - return 6 /* WasiFileType.SOCKET_STREAM */; - if (stat.isFile()) - return 4 /* WasiFileType.REGULAR_FILE */; - if (stat.isSymbolicLink()) - return 7 /* WasiFileType.SYMBOLIC_LINK */; - return 0 /* WasiFileType.UNKNOWN */; -} -function toFileStat(view, buf, stat) { - view.setBigUint64(buf, stat.dev, true); - view.setBigUint64(buf + 8, stat.ino, true); - view.setBigUint64(buf + 16, BigInt(toFileType(stat)), true); - view.setBigUint64(buf + 24, stat.nlink, true); - view.setBigUint64(buf + 32, stat.size, true); - view.setBigUint64(buf + 40, stat.atimeMs * BigInt(1000000), true); - view.setBigUint64(buf + 48, stat.mtimeMs * BigInt(1000000), true); - view.setBigUint64(buf + 56, stat.ctimeMs * BigInt(1000000), true); -} -class FileDescriptorTable { - constructor(options) { - this.used = 0; - this.size = options.size; - this.fds = Array(options.size); - this.stdio = [options.in, options.out, options.err]; - this.print = options.print; - this.printErr = options.printErr; - this.insertStdio(options.in, 0, ''); - this.insertStdio(options.out, 1, ''); - this.insertStdio(options.err, 2, ''); - } - insertStdio(fd, expected, name) { - const type = 2 /* WasiFileType.CHARACTER_DEVICE */; - const { base, inheriting } = getRights(this.stdio, fd, 2 /* FileControlFlag.O_RDWR */, type); - const wrap = this.insert(fd, name, name, type, base, inheriting, 0); - if (wrap.id !== expected) { - throw new WasiError(`id: ${wrap.id} !== expected: ${expected}`, 8 /* WasiErrno.EBADF */); - } - return wrap; - } - insert(fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen) { - var _a, _b; - let index = -1; - if (this.used >= this.size) { - const newSize = this.size * 2; - this.fds.length = newSize; - index = this.size; - this.size = newSize; - } - else { - for (let i = 0; i < this.size; ++i) { - if (this.fds[i] == null) { - index = i; - break; - } - } - } - let entry; - if (mappedPath === '') { - entry = new StandardOutput((_a = this.print) !== null && _a !== void 0 ? _a : console.log, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - else if (mappedPath === '') { - entry = new StandardOutput((_b = this.printErr) !== null && _b !== void 0 ? _b : console.error, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - else { - entry = new FileDescriptor(index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - this.fds[index] = entry; - this.used++; - return entry; - } - get(id, base, inheriting) { - if (id >= this.size) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - const entry = this.fds[id]; - if (!entry || entry.id !== id) { - throw new WasiError('Bad file descriptor', 8 /* WasiErrno.EBADF */); - } - /* Validate that the fd has the necessary rights. */ - if ((~entry.rightsBase & base) !== BigInt(0) || (~entry.rightsInheriting & inheriting) !== BigInt(0)) { - throw new WasiError('Capabilities insufficient', 76 /* WasiErrno.ENOTCAPABLE */); - } - return entry; - } - remove(id) { - if (id >= this.size) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - const entry = this.fds[id]; - if (!entry || entry.id !== id) { - throw new WasiError('Bad file descriptor', 8 /* WasiErrno.EBADF */); - } - this.fds[id] = undefined; - this.used--; - } -} -class SyncTable extends FileDescriptorTable { - constructor(options) { - super(options); - this.fs = options.fs; - } - getFileTypeByFd(fd) { - const stats = this.fs.fstatSync(fd, { bigint: true }); - return toFileType(stats); - } - insertPreopen(fd, mappedPath, realPath) { - const type = this.getFileTypeByFd(fd); - if (type !== 3 /* WasiFileType.DIRECTORY */) { - throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, 54 /* WasiErrno.ENOTDIR */); - } - const result = getRights(this.stdio, fd, 0, type); - return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); - } - renumber(dst, src) { - if (dst === src) - return; - if (dst >= this.size || src >= this.size) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - const dstEntry = this.fds[dst]; - const srcEntry = this.fds[src]; - if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - this.fs.closeSync(dstEntry.fd); - this.fds[dst] = this.fds[src]; - this.fds[dst].id = dst; - this.fds[src] = undefined; - this.used--; - } -} -class AsyncTable extends FileDescriptorTable { - // eslint-disable-next-line @typescript-eslint/no-useless-constructor - constructor(options) { - super(options); - } - async getFileTypeByFd(fd) { - const stats = await fd.stat({ bigint: true }); - return toFileType(stats); - } - async insertPreopen(fd, mappedPath, realPath) { - const type = await this.getFileTypeByFd(fd); - if (type !== 3 /* WasiFileType.DIRECTORY */) { - throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, 54 /* WasiErrno.ENOTDIR */); - } - const result = getRights(this.stdio, fd.fd, 0, type); - return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); - } - async renumber(dst, src) { - if (dst === src) - return; - if (dst >= this.size || src >= this.size) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - const dstEntry = this.fds[dst]; - const srcEntry = this.fds[src]; - if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - await dstEntry.fd.close(); - this.fds[dst] = this.fds[src]; - this.fds[dst].id = dst; - this.fds[src] = undefined; - this.used--; - } -} - -/** @public */ -const WebAssemblyMemory = /*#__PURE__*/ (function () { return _WebAssembly.Memory; })(); -/** @public */ -class Memory extends WebAssemblyMemory { - // eslint-disable-next-line @typescript-eslint/no-useless-constructor - constructor(descriptor) { - super(descriptor); - } - get HEAP8() { return new Int8Array(super.buffer); } - get HEAPU8() { return new Uint8Array(super.buffer); } - get HEAP16() { return new Int16Array(super.buffer); } - get HEAPU16() { return new Uint16Array(super.buffer); } - get HEAP32() { return new Int32Array(super.buffer); } - get HEAPU32() { return new Uint32Array(super.buffer); } - get HEAP64() { return new BigInt64Array(super.buffer); } - get HEAPU64() { return new BigUint64Array(super.buffer); } - get HEAPF32() { return new Float32Array(super.buffer); } - get HEAPF64() { return new Float64Array(super.buffer); } - get view() { return new DataView(super.buffer); } -} -/** @public */ -function extendMemory(memory) { - if (Object.getPrototypeOf(memory) === _WebAssembly.Memory.prototype) { - Object.setPrototypeOf(memory, Memory.prototype); - } - return memory; -} - -function checkWebAssemblyFunction() { - const WebAssemblyFunction = _WebAssembly.Function; - if (typeof WebAssemblyFunction !== 'function') { - throw new Error('WebAssembly.Function is not supported in this environment.' + - ' If you are using V8 based browser like Chrome, try to specify' + - ' --js-flags="--wasm-staging --experimental-wasm-stack-switching"'); - } - return WebAssemblyFunction; -} -/** @public */ -function wrapAsyncImport(f, parameterType, returnType) { - const WebAssemblyFunction = checkWebAssemblyFunction(); - if (typeof f !== 'function') { - throw new TypeError('Function required'); - } - const parameters = parameterType.slice(0); - parameters.unshift('externref'); - return new WebAssemblyFunction({ parameters, results: returnType }, f, { suspending: 'first' }); -} -/** @public */ -function wrapAsyncExport(f) { - const WebAssemblyFunction = checkWebAssemblyFunction(); - if (typeof f !== 'function') { - throw new TypeError('Function required'); - } - return new WebAssemblyFunction({ parameters: [...WebAssemblyFunction.type(f).parameters.slice(1)], results: ['externref'] }, f, { promising: 'first' }); -} -/** @public */ -function wrapExports(exports, needWrap) { - return wrapInstanceExports(exports, (exportValue, name) => { - let ignore = typeof exportValue !== 'function'; - if (Array.isArray(needWrap)) { - ignore = ignore || (needWrap.indexOf(name) === -1); - } - return ignore ? exportValue : wrapAsyncExport(exportValue); - }); -} - -function copyMemory(targets, src) { - if (targets.length === 0 || src.length === 0) - return 0; - let copied = 0; - let left = src.length - copied; - for (let i = 0; i < targets.length; ++i) { - const target = targets[i]; - if (left < target.length) { - target.set(src.subarray(copied, copied + left), 0); - copied += left; - left = 0; - return copied; - } - target.set(src.subarray(copied, copied + target.length), 0); - copied += target.length; - left -= target.length; - } - return copied; -} -const _memory = new WeakMap(); -const _wasi = new WeakMap(); -const _fs = new WeakMap(); -function getMemory(wasi) { - return _memory.get(wasi); -} -function getFs(wasi) { - const fs = _fs.get(wasi); - if (!fs) - throw new Error('filesystem is unavailable'); - return fs; -} -function handleError(err) { - if (err instanceof WasiError) { - { - console.warn(err); - } - return err.errno; - } - switch (err.code) { - case 'ENOENT': return 44 /* WasiErrno.ENOENT */; - case 'EBADF': return 8 /* WasiErrno.EBADF */; - case 'EINVAL': return 28 /* WasiErrno.EINVAL */; - case 'EPERM': return 63 /* WasiErrno.EPERM */; - case 'EPROTO': return 65 /* WasiErrno.EPROTO */; - case 'EEXIST': return 20 /* WasiErrno.EEXIST */; - case 'ENOTDIR': return 54 /* WasiErrno.ENOTDIR */; - case 'EMFILE': return 33 /* WasiErrno.EMFILE */; - case 'EACCES': return 2 /* WasiErrno.EACCES */; - case 'EISDIR': return 31 /* WasiErrno.EISDIR */; - case 'ENOTEMPTY': return 55 /* WasiErrno.ENOTEMPTY */; - case 'ENOSYS': return 52 /* WasiErrno.ENOSYS */; - } - throw err; -} -function defineName(name, f) { - Object.defineProperty(f, 'name', { value: name }); - return f; -} -function tryCall(f, wasi, args) { - let r; - try { - r = f.apply(wasi, args); - } - catch (err) { - return handleError(err); - } - if (isPromiseLike(r)) { - return r.then(_ => _, handleError); - } - return r; -} -function syscallWrap(self, name, f) { - let debug = false; - const NODE_DEBUG_NATIVE = (() => { - try { - return "wasi"; - } - catch (_) { - return undefined; - } - })(); - if (typeof NODE_DEBUG_NATIVE === 'string' && NODE_DEBUG_NATIVE.split(',').includes('wasi')) { - debug = true; - } - return debug - ? defineName(name, function () { - const args = Array.prototype.slice.call(arguments); - let debugArgs = [`${name}(${Array.from({ length: arguments.length }).map(() => '%d').join(', ')})`]; - debugArgs = debugArgs.concat(args); - console.debug.apply(console, debugArgs); - return tryCall(f, self, args); - }) - : defineName(name, function () { - return tryCall(f, self, arguments); - }); -} -function resolvePathSync(fs, fileDescriptor, path, flags) { - let resolvedPath = resolve(fileDescriptor.realPath, path); - if ((flags & 1) === 1) { - try { - resolvedPath = fs.readlinkSync(resolvedPath); - } - catch (err) { - if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { - throw err; - } - } - } - return resolvedPath; -} -async function resolvePathAsync(fs, fileDescriptor, path, flags) { - let resolvedPath = resolve(fileDescriptor.realPath, path); - if ((flags & 1) === 1) { - try { - resolvedPath = await fs.promises.readlink(resolvedPath); - } - catch (err) { - if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { - throw err; - } - } - } - return resolvedPath; -} -// eslint-disable-next-line spaced-comment -const encoder = /*#__PURE__*/ new TextEncoder(); -// eslint-disable-next-line spaced-comment -const decoder = /*#__PURE__*/ new TextDecoder(); -const INT64_MAX = (BigInt(1) << BigInt(63)) - BigInt(1); -function readStdin() { - const value = window.prompt(); - if (value === null) - return new Uint8Array(); - const buffer = new TextEncoder().encode(value + '\n'); - return buffer; -} -function validateFstFlagsOrReturn(flags) { - return (Boolean((flags) & ~(1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */ | - 4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)) || - ((flags) & (1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */)) === - (1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */) || - ((flags) & (4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)) === - (4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)); -} -class WASI$1 { - constructor(args, env, fds, asyncFs, fs, asyncify) { - this.args_get = syscallWrap(this, 'args_get', function (argv, argv_buf) { - argv = Number(argv); - argv_buf = Number(argv_buf); - if (argv === 0 || argv_buf === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const args = wasi.args; - for (let i = 0; i < args.length; ++i) { - const arg = args[i]; - view.setInt32(argv, argv_buf, true); - argv += 4; - const data = encoder.encode(arg + '\0'); - HEAPU8.set(data, argv_buf); - argv_buf += data.length; - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.args_sizes_get = syscallWrap(this, 'args_sizes_get', function (argc, argv_buf_size) { - argc = Number(argc); - argv_buf_size = Number(argv_buf_size); - if (argc === 0 || argv_buf_size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - const wasi = _wasi.get(this); - const args = wasi.args; - view.setUint32(argc, args.length, true); - view.setUint32(argv_buf_size, encoder.encode(args.join('\0') + '\0').length, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.environ_get = syscallWrap(this, 'environ_get', function (environ, environ_buf) { - environ = Number(environ); - environ_buf = Number(environ_buf); - if (environ === 0 || environ_buf === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const env = wasi.env; - for (let i = 0; i < env.length; ++i) { - const pair = env[i]; - view.setInt32(environ, environ_buf, true); - environ += 4; - const data = encoder.encode(pair + '\0'); - HEAPU8.set(data, environ_buf); - environ_buf += data.length; - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.environ_sizes_get = syscallWrap(this, 'environ_sizes_get', function (len, buflen) { - len = Number(len); - buflen = Number(buflen); - if (len === 0 || buflen === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - const wasi = _wasi.get(this); - view.setUint32(len, wasi.env.length, true); - view.setUint32(buflen, encoder.encode(wasi.env.join('\0') + '\0').length, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.clock_res_get = syscallWrap(this, 'clock_res_get', function (id, resolution) { - resolution = Number(resolution); - if (resolution === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - switch (id) { - case 0 /* WasiClockid.REALTIME */: - view.setBigUint64(resolution, BigInt(1000000), true); - return 0 /* WasiErrno.ESUCCESS */; - case 1 /* WasiClockid.MONOTONIC */: - case 2 /* WasiClockid.PROCESS_CPUTIME_ID */: - case 3 /* WasiClockid.THREAD_CPUTIME_ID */: - view.setBigUint64(resolution, BigInt(1000), true); - return 0 /* WasiErrno.ESUCCESS */; - default: return 28 /* WasiErrno.EINVAL */; - } - }); - this.clock_time_get = syscallWrap(this, 'clock_time_get', function (id, _percision, time) { - time = Number(time); - if (time === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - switch (id) { - case 0 /* WasiClockid.REALTIME */: - view.setBigUint64(time, BigInt(Date.now()) * BigInt(1000000), true); - return 0 /* WasiErrno.ESUCCESS */; - case 1 /* WasiClockid.MONOTONIC */: - case 2 /* WasiClockid.PROCESS_CPUTIME_ID */: - case 3 /* WasiClockid.THREAD_CPUTIME_ID */: { - const t = performance.now() / 1000; - const s = Math.trunc(t); - const ms = Math.floor((t - s) * 1000); - const result = BigInt(s) * BigInt(1000000000) + BigInt(ms) * BigInt(1000000); - view.setBigUint64(time, result, true); - return 0 /* WasiErrno.ESUCCESS */; - } - default: return 28 /* WasiErrno.EINVAL */; - } - }); - this.fd_advise = syscallWrap(this, 'fd_advise', function (_fd, _offset, _len, _advice) { - return 52 /* WasiErrno.ENOSYS */; - }); - this.fd_fdstat_get = syscallWrap(this, 'fd_fdstat_get', function (fd, fdstat) { - fdstat = Number(fdstat); - if (fdstat === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - const { view } = getMemory(this); - view.setUint16(fdstat, fileDescriptor.type, true); - view.setUint16(fdstat + 2, 0, true); - view.setBigUint64(fdstat + 8, fileDescriptor.rightsBase, true); - view.setBigUint64(fdstat + 16, fileDescriptor.rightsInheriting, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_fdstat_set_flags = syscallWrap(this, 'fd_fdstat_set_flags', function (_fd, _flags) { - return 52 /* WasiErrno.ENOSYS */; - }); - this.fd_fdstat_set_rights = syscallWrap(this, 'fd_fdstat_set_rights', function (fd, rightsBase, rightsInheriting) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - if ((rightsBase | fileDescriptor.rightsBase) > fileDescriptor.rightsBase) { - return 76 /* WasiErrno.ENOTCAPABLE */; - } - if ((rightsInheriting | fileDescriptor.rightsInheriting) > - fileDescriptor.rightsInheriting) { - return 76 /* WasiErrno.ENOTCAPABLE */; - } - fileDescriptor.rightsBase = rightsBase; - fileDescriptor.rightsInheriting = rightsInheriting; - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_prestat_get = syscallWrap(this, 'fd_prestat_get', function (fd, prestat) { - prestat = Number(prestat); - if (prestat === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let fileDescriptor; - try { - fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - } - catch (err) { - if (err instanceof WasiError) - return err.errno; - throw err; - } - if (fileDescriptor.preopen !== 1) - return 28 /* WasiErrno.EINVAL */; - const { view } = getMemory(this); - // preopen type is dir(0) - view.setUint32(prestat, 0, true); - view.setUint32(prestat + 4, encoder.encode(fileDescriptor.path).length, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_prestat_dir_name = syscallWrap(this, 'fd_prestat_dir_name', function (fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - if (fileDescriptor.preopen !== 1) - return 8 /* WasiErrno.EBADF */; - const buffer = encoder.encode(fileDescriptor.path); - const size = buffer.length; - if (size > path_len) - return 42 /* WasiErrno.ENOBUFS */; - const { HEAPU8 } = getMemory(this); - HEAPU8.set(buffer, path); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_seek = syscallWrap(this, 'fd_seek', function (fd, offset, whence, newOffset) { - newOffset = Number(newOffset); - if (newOffset === 0) { - return 28 /* WasiErrno.EINVAL */; - } - if (fd === 0 || fd === 1 || fd === 2) - return 0 /* WasiErrno.ESUCCESS */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SEEK, BigInt(0)); - const r = fileDescriptor.seek(offset, whence); - const { view } = getMemory(this); - view.setBigUint64(newOffset, r, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_tell = syscallWrap(this, 'fd_tell', function (fd, offset) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_TELL, BigInt(0)); - const pos = BigInt(fileDescriptor.pos); - const { view } = getMemory(this); - view.setBigUint64(Number(offset), pos, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.poll_oneoff = syscallWrap(this, 'poll_oneoff', function (in_ptr, out_ptr, nsubscriptions, nevents) { - in_ptr = Number(in_ptr); - out_ptr = Number(out_ptr); - nevents = Number(nevents); - nsubscriptions = Number(nsubscriptions); - nsubscriptions = nsubscriptions >>> 0; - if (in_ptr === 0 || out_ptr === 0 || nsubscriptions === 0 || nevents === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - view.setUint32(nevents, 0, true); - let i = 0; - let timer_userdata = BigInt(0); - let cur_timeout = BigInt(0); - let has_timeout = 0; - let min_timeout = BigInt(0); - let sub; - const subscriptions = Array(nsubscriptions); - for (i = 0; i < nsubscriptions; i++) { - sub = in_ptr + i * 48; - const userdata = view.getBigUint64(sub, true); - const type = view.getUint8(sub + 8); - const clockIdOrFd = view.getUint32(sub + 16, true); - const timeout = view.getBigUint64(sub + 24, true); - const precision = view.getBigUint64(sub + 32, true); - const flags = view.getUint16(sub + 40, true); - subscriptions[i] = { - userdata, - type, - u: { - clock: { - clock_id: clockIdOrFd, - timeout, - precision, - flags - }, - fd_readwrite: { - fd: clockIdOrFd - } - } - }; - } - const fdevents = []; - for (i = 0; i < nsubscriptions; i++) { - sub = subscriptions[i]; - switch (sub.type) { - case 0 /* WasiEventType.CLOCK */: { - if (sub.u.clock.flags === 1 /* WasiSubclockflags.ABSTIME */) { - /* Convert absolute time to relative delay. */ - const now = BigInt(Date.now()) * BigInt(1000000); - cur_timeout = sub.u.clock.timeout - now; - } - else { - cur_timeout = sub.u.clock.timeout; - } - if (has_timeout === 0 || cur_timeout < min_timeout) { - min_timeout = cur_timeout; - timer_userdata = sub.userdata; - has_timeout = 1; - } - break; - } - case 1 /* WasiEventType.FD_READ */: - case 2 /* WasiEventType.FD_WRITE */: - fdevents.push(sub); - break; - default: return 28 /* WasiErrno.EINVAL */; - } - } - if (fdevents.length > 0) { - for (i = 0; i < fdevents.length; i++) { - const fdevent = fdevents[i]; - const event = out_ptr + 32 * i; - view.setBigUint64(event, fdevent.userdata, true); - view.setUint32(event + 8, 52 /* WasiErrno.ENOSYS */, true); - view.setUint32(event + 12, fdevent.type, true); - view.setBigUint64(event + 16, BigInt(0), true); - view.setUint16(event + 24, 0, true); - view.setUint32(nevents, 1, true); - } - view.setUint32(nevents, fdevents.length, true); - return 0 /* WasiErrno.ESUCCESS */; - } - if (has_timeout) { - const delay = Number(min_timeout / BigInt(1000000)); - // if (isMainThread || typeof SharedArrayBuffer !== 'function') { - sleepBreakIf(delay, () => false); - // } else { - // const buf = new SharedArrayBuffer(4) - // const arr = new Int32Array(buf) - // postMsg({ - // __tybys_wasm_util_wasi__: { - // type: 'set-timeout', - // payload: { - // buffer: buf, - // delay - // } - // } - // }) - // Atomics.wait(arr, 0, 0) - // } - const event = out_ptr; - view.setBigUint64(event, timer_userdata, true); - view.setUint32(event + 8, 0 /* WasiErrno.ESUCCESS */, true); - view.setUint32(event + 12, 0 /* WasiEventType.CLOCK */, true); - view.setUint32(nevents, 1, true); - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.proc_exit = syscallWrap(this, 'proc_exit', function (rval) { - if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) { - process.exit(rval); - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.proc_raise = syscallWrap(this, 'proc_raise', function (_sig) { - return 52 /* WasiErrno.ENOSYS */; - }); - this.sched_yield = syscallWrap(this, 'sched_yield', function () { - return 0 /* WasiErrno.ESUCCESS */; - }); - this.random_get = typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function' - ? syscallWrap(this, 'random_get', function (buf, buf_len) { - buf = Number(buf); - if (buf === 0) { - return 28 /* WasiErrno.EINVAL */; - } - buf_len = Number(buf_len); - const { HEAPU8, view } = getMemory(this); - if ((typeof SharedArrayBuffer === 'function' && HEAPU8.buffer instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(HEAPU8.buffer) === '[object SharedArrayBuffer]')) { - for (let i = buf; i < buf + buf_len; ++i) { - view.setUint8(i, Math.floor(Math.random() * 256)); - } - return 0 /* WasiErrno.ESUCCESS */; - } - let pos; - const stride = 65536; - for (pos = 0; pos + stride < buf_len; pos += stride) { - crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + pos + stride)); - } - crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + buf_len)); - return 0 /* WasiErrno.ESUCCESS */; - }) - : syscallWrap(this, 'random_get', function (buf, buf_len) { - buf = Number(buf); - if (buf === 0) { - return 28 /* WasiErrno.EINVAL */; - } - buf_len = Number(buf_len); - const { view } = getMemory(this); - for (let i = buf; i < buf + buf_len; ++i) { - view.setUint8(i, Math.floor(Math.random() * 256)); - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.sock_recv = syscallWrap(this, 'sock_recv', function () { - return 58 /* WasiErrno.ENOTSUP */; - }); - this.sock_send = syscallWrap(this, 'sock_send', function () { - return 58 /* WasiErrno.ENOTSUP */; - }); - this.sock_shutdown = syscallWrap(this, 'sock_shutdown', function () { - return 58 /* WasiErrno.ENOTSUP */; - }); - this.sock_accept = syscallWrap(this, 'sock_accept', function () { - return 58 /* WasiErrno.ENOTSUP */; - }); - _wasi.set(this, { - fds, - args, - env - }); - if (fs) - _fs.set(this, fs); - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - function defineImport(name, syncVersion, asyncVersion, parameterType, returnType) { - if (asyncFs) { - if (asyncify) { - _this[name] = asyncify.wrapImportFunction(syscallWrap(_this, name, asyncVersion)); - } - else { - _this[name] = wrapAsyncImport(syscallWrap(_this, name, asyncVersion), parameterType, returnType); - } - } - else { - _this[name] = syscallWrap(_this, name, syncVersion); - } - } - defineImport('fd_allocate', function fd_allocate(fd, offset, len) { - const wasi = _wasi.get(this); - const fs = getFs(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); - const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); - if (stat.size < offset + len) { - fs.ftruncateSync(fileDescriptor.fd, Number(offset + len)); - } - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_allocate(fd, offset, len) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); - const h = fileDescriptor.fd; - const stat = await h.stat({ bigint: true }); - if (stat.size < offset + len) { - await h.truncate(Number(offset + len)); - } - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i64', 'f64'], ['i32']); - defineImport('fd_close', function fd_close(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - const fs = getFs(this); - fs.closeSync(fileDescriptor.fd); - wasi.fds.remove(fd); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_close(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - await fileDescriptor.fd.close(); - wasi.fds.remove(fd); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32'], ['i32']); - defineImport('fd_datasync', function fd_datasync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); - const fs = getFs(this); - fs.fdatasyncSync(fileDescriptor.fd); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_datasync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); - await fileDescriptor.fd.datasync(); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32'], ['i32']); - defineImport('fd_filestat_get', function fd_filestat_get(fd, buf) { - buf = Number(buf); - if (buf === 0) - return 28 /* WasiErrno.EINVAL */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); - const fs = getFs(this); - const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); - const { view } = getMemory(this); - toFileStat(view, buf, stat); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_filestat_get(fd, buf) { - buf = Number(buf); - if (buf === 0) - return 28 /* WasiErrno.EINVAL */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); - const h = fileDescriptor.fd; - const stat = await h.stat({ bigint: true }); - const { view } = getMemory(this); - toFileStat(view, buf, stat); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32'], ['i32']); - defineImport('fd_filestat_set_size', function fd_filestat_set_size(fd, size) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); - const fs = getFs(this); - fs.ftruncateSync(fileDescriptor.fd, Number(size)); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_filestat_set_size(fd, size) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); - const h = fileDescriptor.fd; - await h.truncate(Number(size)); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i64'], ['i32']); - function fdFilestatGetTimes(fd, atim, mtim, flags) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_TIMES, BigInt(0)); - if ((flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { - atim = BigInt(Date.now() * 1000000); - } - if ((flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { - mtim = BigInt(Date.now() * 1000000); - } - return { fileDescriptor, atim, mtim }; - } - defineImport('fd_filestat_set_times', function fd_filestat_set_times(fd, atim, mtim, flags) { - if (validateFstFlagsOrReturn(flags)) { - return 28 /* WasiErrno.EINVAL */; - } - const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); - const fs = getFs(this); - fs.futimesSync(fileDescriptor.fd, Number(atimRes), Number(mtimRes)); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_filestat_set_times(fd, atim, mtim, flags) { - if (validateFstFlagsOrReturn(flags)) { - return 28 /* WasiErrno.EINVAL */; - } - const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); - const h = fileDescriptor.fd; - await h.utimes(Number(atimRes), Number(mtimRes)); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i64', 'i64', 'i32'], ['i32']); - defineImport('fd_pread', function fd_pread(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let nread = 0; - const buffer = (() => { - try { - return new Uint8Array(new SharedArrayBuffer(totalSize)); - } - catch (_) { - return new Uint8Array(totalSize); - } - })(); - buffer._isBuffer = true; - const fs = getFs(this); - const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - view.setUint32(size, nread, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function (fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let nread = 0; - const buffer = new Uint8Array(totalSize); - buffer._isBuffer = true; - const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(offset)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - view.setUint32(size, nread, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_pwrite', function fd_pwrite(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - const fs = getFs(this); - const nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); - view.setUint32(size, nwritten, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_pwrite(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - const { bytesWritten } = await fileDescriptor.fd.write(buffer, 0, buffer.length, Number(offset)); - view.setUint32(size, bytesWritten, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_read', function fd_read(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let buffer; - let nread = 0; - if (fd === 0) { - if (typeof window === 'undefined' || typeof window.prompt !== 'function') { - return 58 /* WasiErrno.ENOTSUP */; - } - buffer = readStdin(); - nread = buffer ? copyMemory(ioVecs, buffer) : 0; - } - else { - buffer = (() => { - try { - return new Uint8Array(new SharedArrayBuffer(totalSize)); - } - catch (_) { - return new Uint8Array(totalSize); - } - })(); - buffer._isBuffer = true; - const fs = getFs(this); - const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - fileDescriptor.pos += BigInt(nread); - } - view.setUint32(size, nread, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_read(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let buffer; - let nread = 0; - if (fd === 0) { - if (typeof window === 'undefined' || typeof window.prompt !== 'function') { - return 58 /* WasiErrno.ENOTSUP */; - } - buffer = readStdin(); - nread = buffer ? copyMemory(ioVecs, buffer) : 0; - } - else { - buffer = new Uint8Array(totalSize); - buffer._isBuffer = true; - const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(fileDescriptor.pos)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - fileDescriptor.pos += BigInt(nread); - } - view.setUint32(size, nread, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('fd_readdir', function fd_readdir(fd, buf, buf_len, cookie, bufused) { - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (buf === 0 || bufused === 0) - return 0 /* WasiErrno.ESUCCESS */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); - const fs = getFs(this); - const entries = fs.readdirSync(fileDescriptor.realPath, { withFileTypes: true }); - const { HEAPU8, view } = getMemory(this); - let bufferUsed = 0; - for (let i = Number(cookie); i < entries.length; i++) { - const nameData = encoder.encode(entries[i].name); - const entryInfo = fs.statSync(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); - const entryData = new Uint8Array(24 + nameData.byteLength); - const entryView = new DataView(entryData.buffer); - entryView.setBigUint64(0, BigInt(i + 1), true); - entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); - entryView.setUint32(16, nameData.byteLength, true); - let type; - if (entries[i].isFile()) { - type = 4 /* WasiFileType.REGULAR_FILE */; - } - else if (entries[i].isDirectory()) { - type = 3 /* WasiFileType.DIRECTORY */; - } - else if (entries[i].isSymbolicLink()) { - type = 7 /* WasiFileType.SYMBOLIC_LINK */; - } - else if (entries[i].isCharacterDevice()) { - type = 2 /* WasiFileType.CHARACTER_DEVICE */; - } - else if (entries[i].isBlockDevice()) { - type = 1 /* WasiFileType.BLOCK_DEVICE */; - } - else if (entries[i].isSocket()) { - type = 6 /* WasiFileType.SOCKET_STREAM */; - } - else { - type = 0 /* WasiFileType.UNKNOWN */; - } - entryView.setUint8(20, type); - entryData.set(nameData, 24); - const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); - HEAPU8.set(data, buf + bufferUsed); - bufferUsed += data.byteLength; - } - view.setUint32(bufused, bufferUsed, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_readdir(fd, buf, buf_len, cookie, bufused) { - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (buf === 0 || bufused === 0) - return 0 /* WasiErrno.ESUCCESS */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); - const fs = getFs(this); - const entries = await fs.promises.readdir(fileDescriptor.realPath, { withFileTypes: true }); - const { HEAPU8, view } = getMemory(this); - let bufferUsed = 0; - for (let i = Number(cookie); i < entries.length; i++) { - const nameData = encoder.encode(entries[i].name); - const entryInfo = await fs.promises.stat(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); - const entryData = new Uint8Array(24 + nameData.byteLength); - const entryView = new DataView(entryData.buffer); - entryView.setBigUint64(0, BigInt(i + 1), true); - entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); - entryView.setUint32(16, nameData.byteLength, true); - let type; - if (entries[i].isFile()) { - type = 4 /* WasiFileType.REGULAR_FILE */; - } - else if (entries[i].isDirectory()) { - type = 3 /* WasiFileType.DIRECTORY */; - } - else if (entries[i].isSymbolicLink()) { - type = 7 /* WasiFileType.SYMBOLIC_LINK */; - } - else if (entries[i].isCharacterDevice()) { - type = 2 /* WasiFileType.CHARACTER_DEVICE */; - } - else if (entries[i].isBlockDevice()) { - type = 1 /* WasiFileType.BLOCK_DEVICE */; - } - else if (entries[i].isSocket()) { - type = 6 /* WasiFileType.SOCKET_STREAM */; - } - else { - type = 0 /* WasiFileType.UNKNOWN */; - } - entryView.setUint8(20, type); - entryData.set(nameData, 24); - const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); - HEAPU8.set(data, buf + bufferUsed); - bufferUsed += data.byteLength; - } - view.setUint32(bufused, bufferUsed, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_renumber', function fd_renumber(from, to) { - const wasi = _wasi.get(this); - wasi.fds.renumber(to, from); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_renumber(from, to) { - const wasi = _wasi.get(this); - await wasi.fds.renumber(to, from); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32'], ['i32']); - defineImport('fd_sync', function fd_sync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); - const fs = getFs(this); - fs.fsyncSync(fileDescriptor.fd); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_sync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); - await fileDescriptor.fd.sync(); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32'], ['i32']); - defineImport('fd_write', function fd_write(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - let nwritten; - if (fd === 1 || fd === 2) { - nwritten = fileDescriptor.write(buffer); - } - else { - const fs = getFs(this); - nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); - fileDescriptor.pos += BigInt(nwritten); - } - view.setUint32(size, nwritten, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_write(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - let nwritten; - if (fd === 1 || fd === 2) { - nwritten = fileDescriptor.write(buffer); - } - else { - nwritten = await (await (fileDescriptor.fd.write(buffer, 0, buffer.length, Number(fileDescriptor.pos)))).bytesWritten; - fileDescriptor.pos += BigInt(nwritten); - } - view.setUint32(size, nwritten, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_create_directory', function path_create_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.mkdirSync(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_create_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.mkdir(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32'], ['i32']); - defineImport('path_filestat_get', function path_filestat_get(fd, flags, path, path_len, filestat) { - path = Number(path); - path_len = Number(path_len); - filestat = Number(filestat); - if (path === 0 || filestat === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - pathString = resolve(fileDescriptor.realPath, pathString); - let stat; - if ((flags & 1) === 1) { - stat = fs.statSync(pathString, { bigint: true }); - } - else { - stat = fs.lstatSync(pathString, { bigint: true }); - } - toFileStat(view, filestat, stat); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_filestat_get(fd, flags, path, path_len, filestat) { - path = Number(path); - path_len = Number(path_len); - filestat = Number(filestat); - if (path === 0 || filestat === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - pathString = resolve(fileDescriptor.realPath, pathString); - let stat; - if ((flags & 1) === 1) { - stat = await fs.promises.stat(pathString, { bigint: true }); - } - else { - stat = await fs.promises.lstat(pathString, { bigint: true }); - } - toFileStat(view, filestat, stat); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_filestat_set_times', function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) - return 28 /* WasiErrno.EINVAL */; - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); - if (validateFstFlagsOrReturn(fst_flags)) { - return 28 /* WasiErrno.EINVAL */; - } - const fs = getFs(this); - const resolvedPath = resolvePathSync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); - if ((fst_flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { - atim = BigInt(Date.now() * 1000000); - } - if ((fst_flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { - mtim = BigInt(Date.now() * 1000000); - } - fs.utimesSync(resolvedPath, Number(atim), Number(mtim)); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) - return 28 /* WasiErrno.EINVAL */; - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); - if (validateFstFlagsOrReturn(fst_flags)) { - return 28 /* WasiErrno.EINVAL */; - } - const fs = getFs(this); - const resolvedPath = await resolvePathAsync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); - if ((fst_flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { - atim = BigInt(Date.now() * 1000000); - } - if ((fst_flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { - mtim = BigInt(Date.now() * 1000000); - } - await fs.promises.utimes(resolvedPath, Number(atim), Number(mtim)); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32'], ['i32']); - defineImport('path_link', function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const fs = getFs(this); - const resolvedOldPath = resolvePathSync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - fs.linkSync(resolvedOldPath, resolvedNewPath); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const fs = getFs(this); - const resolvedOldPath = await resolvePathAsync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - await fs.promises.link(resolvedOldPath, resolvedNewPath); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - function pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags) { - const read = (fs_rights_base & (WasiRights.FD_READ | - WasiRights.FD_READDIR)) !== BigInt(0); - const write = (fs_rights_base & (WasiRights.FD_DATASYNC | - WasiRights.FD_WRITE | - WasiRights.FD_ALLOCATE | - WasiRights.FD_FILESTAT_SET_SIZE)) !== BigInt(0); - let flags = write ? read ? 2 /* FileControlFlag.O_RDWR */ : 1 /* FileControlFlag.O_WRONLY */ : 0 /* FileControlFlag.O_RDONLY */; - let needed_base = WasiRights.PATH_OPEN; - let needed_inheriting = fs_rights_base | fs_rights_inheriting; - if ((o_flags & 1 /* WasiFileControlFlag.O_CREAT */) !== 0) { - flags |= 64 /* FileControlFlag.O_CREAT */; - needed_base |= WasiRights.PATH_CREATE_FILE; - } - if ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0) { - flags |= 65536 /* FileControlFlag.O_DIRECTORY */; - } - if ((o_flags & 4 /* WasiFileControlFlag.O_EXCL */) !== 0) { - flags |= 128 /* FileControlFlag.O_EXCL */; - } - if ((o_flags & 8 /* WasiFileControlFlag.O_TRUNC */) !== 0) { - flags |= 512 /* FileControlFlag.O_TRUNC */; - needed_base |= WasiRights.PATH_FILESTAT_SET_SIZE; - } - if ((fs_flags & 1 /* WasiFdFlag.APPEND */) !== 0) { - flags |= 1024 /* FileControlFlag.O_APPEND */; - } - if ((fs_flags & 2 /* WasiFdFlag.DSYNC */) !== 0) { - // flags |= FileControlFlag.O_DSYNC; - needed_inheriting |= WasiRights.FD_DATASYNC; - } - if ((fs_flags & 4 /* WasiFdFlag.NONBLOCK */) !== 0) { - flags |= 2048 /* FileControlFlag.O_NONBLOCK */; - } - if ((fs_flags & 8 /* WasiFdFlag.RSYNC */) !== 0) { - flags |= 1052672 /* FileControlFlag.O_SYNC */; - needed_inheriting |= WasiRights.FD_SYNC; - } - if ((fs_flags & 16 /* WasiFdFlag.SYNC */) !== 0) { - flags |= 1052672 /* FileControlFlag.O_SYNC */; - needed_inheriting |= WasiRights.FD_SYNC; - } - if (write && (flags & (1024 /* FileControlFlag.O_APPEND */ | 512 /* FileControlFlag.O_TRUNC */)) === 0) { - needed_inheriting |= WasiRights.FD_SEEK; - } - return { flags, needed_base, needed_inheriting }; - } - defineImport('path_open', function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { - path = Number(path); - fd = Number(fd); - if (path === 0 || fd === 0) { - return 28 /* WasiErrno.EINVAL */; - } - path_len = Number(path_len); - fs_rights_base = BigInt(fs_rights_base); - fs_rights_inheriting = BigInt(fs_rights_inheriting); - const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); - const memory = getMemory(this); - const HEAPU8 = memory.HEAPU8; - const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - const resolved_path = resolvePathSync(fs, fileDescriptor, pathString, dirflags); - const r = fs.openSync(resolved_path, flagsRes, 0o666); - const filetype = wasi.fds.getFileTypeByFd(r); - if ((filetype !== 3 /* WasiFileType.DIRECTORY */) && - ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0 || - (resolved_path.endsWith('/')))) { - return 54 /* WasiErrno.ENOTDIR */; - } - const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r, flagsRes, filetype); - const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); - const stat = fs.fstatSync(r, { bigint: true }); - if (stat.isFile()) { - wrap.size = stat.size; - if ((flagsRes & 1024 /* FileControlFlag.O_APPEND */) !== 0) { - wrap.pos = stat.size; - } - } - const view = memory.view; - view.setInt32(fd, wrap.id, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { - path = Number(path); - fd = Number(fd); - if (path === 0 || fd === 0) { - return 28 /* WasiErrno.EINVAL */; - } - path_len = Number(path_len); - fs_rights_base = BigInt(fs_rights_base); - fs_rights_inheriting = BigInt(fs_rights_inheriting); - const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); - const memory = getMemory(this); - const HEAPU8 = memory.HEAPU8; - const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - const resolved_path = await resolvePathAsync(fs, fileDescriptor, pathString, dirflags); - const r = await fs.promises.open(resolved_path, flagsRes, 0o666); - const filetype = await wasi.fds.getFileTypeByFd(r); - if ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0 && filetype !== 3 /* WasiFileType.DIRECTORY */) { - return 54 /* WasiErrno.ENOTDIR */; - } - const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r.fd, flagsRes, filetype); - const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); - const stat = await r.stat({ bigint: true }); - if (stat.isFile()) { - wrap.size = stat.size; - if ((flagsRes & 1024 /* FileControlFlag.O_APPEND */) !== 0) { - wrap.pos = stat.size; - } - } - const view = memory.view; - view.setInt32(fd, wrap.id, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32', 'i32'], ['i32']); - defineImport('path_readlink', function path_readlink(fd, path, path_len, buf, buf_len, bufused) { - path = Number(path); - path_len = Number(path_len); - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (path === 0 || buf === 0 || bufused === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - const link = fs.readlinkSync(pathString); - const linkData = encoder.encode(link); - const len = Math.min(linkData.length, buf_len); - if (len >= buf_len) - return 42 /* WasiErrno.ENOBUFS */; - HEAPU8.set(linkData.subarray(0, len), buf); - HEAPU8[buf + len] = 0; - view.setUint32(bufused, len, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_readlink(fd, path, path_len, buf, buf_len, bufused) { - path = Number(path); - path_len = Number(path_len); - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (path === 0 || buf === 0 || bufused === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - const link = await fs.promises.readlink(pathString); - const linkData = encoder.encode(link); - const len = Math.min(linkData.length, buf_len); - if (len >= buf_len) - return 42 /* WasiErrno.ENOBUFS */; - HEAPU8.set(linkData.subarray(0, len), buf); - HEAPU8[buf + len] = 0; - view.setUint32(bufused, len, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_remove_directory', function path_remove_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.rmdirSync(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_remove_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.rmdir(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32'], ['i32']); - defineImport('path_rename', function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - const fs = getFs(this); - fs.renameSync(resolvedOldPath, resolvedNewPath); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - const fs = getFs(this); - await fs.promises.rename(resolvedOldPath, resolvedNewPath); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_symlink', function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); - const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); - if (oldPath.length > 0 && oldPath[0] === '/') { - return 63 /* WasiErrno.EPERM */; - } - let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); - newPath = resolve(fileDescriptor.realPath, newPath); - const fs = getFs(this); - fs.symlinkSync(oldPath, newPath); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); - const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); - let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); - newPath = resolve(fileDescriptor.realPath, newPath); - const fs = getFs(this); - await fs.promises.symlink(oldPath, newPath); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_unlink_file', function path_unlink_file(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.unlinkSync(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_unlink_file(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.unlink(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32'], ['i32']); - this._setMemory = function setMemory(m) { - if (!(m instanceof _WebAssembly.Memory)) { - throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory'); - } - _memory.set(_this, extendMemory(m)); - }; - } - static createSync(args, env, preopens, stdio, fs, print, printErr) { - const fds = new SyncTable({ - size: 3, - in: stdio[0], - out: stdio[1], - err: stdio[2], - fs, - print, - printErr - }); - const _this = new WASI$1(args, env, fds, false, fs); - if (preopens.length > 0) { - for (let i = 0; i < preopens.length; ++i) { - const realPath = fs.realpathSync(preopens[i].realPath, 'utf8'); - const fd = fs.openSync(realPath, 'r', 0o666); - fds.insertPreopen(fd, preopens[i].mappedPath, realPath); - } - } - return _this; - } - static async createAsync(args, env, preopens, stdio, fs, print, printErr, asyncify) { - const fds = new AsyncTable({ - size: 3, - in: stdio[0], - out: stdio[1], - err: stdio[2], - print, - printErr - }); - const _this = new WASI$1(args, env, fds, true, fs, asyncify); - if (preopens.length > 0) { - for (let i = 0; i < preopens.length; ++i) { - const entry = preopens[i]; - const realPath = await fs.promises.realpath(entry.realPath); - const fd = await fs.promises.open(realPath, 'r', 0o666); - await fds.insertPreopen(fd, entry.mappedPath, realPath); - } - } - return _this; - } -} - -// eslint-disable-next-line spaced-comment -const kEmptyObject = /*#__PURE__*/ Object.freeze(/*#__PURE__*/ Object.create(null)); -const kExitCode = Symbol('kExitCode'); -const kSetMemory = Symbol('kSetMemory'); -const kStarted = Symbol('kStarted'); -const kInstance = Symbol('kInstance'); -const kBindingName = Symbol('kBindingName'); -function validateOptions(options) { - var _a; - validateObject(options, 'options'); - let _WASI; - if (options.version !== undefined) { - validateString(options.version, 'options.version'); - switch (options.version) { - case 'unstable': - _WASI = WASI$1; - this[kBindingName] = 'wasi_unstable'; - break; - case 'preview1': - _WASI = WASI$1; - this[kBindingName] = 'wasi_snapshot_preview1'; - break; - default: - throw new TypeError(`unsupported WASI version "${options.version}"`); - } - } - else { - _WASI = WASI$1; - this[kBindingName] = 'wasi_snapshot_preview1'; - } - if (options.args !== undefined) { - validateArray(options.args, 'options.args'); - } - const args = ((_a = options.args) !== null && _a !== void 0 ? _a : []).map(String); - const env = []; - if (options.env !== undefined) { - validateObject(options.env, 'options.env'); - Object.entries(options.env).forEach(({ 0: key, 1: value }) => { - if (value !== undefined) { - env.push(`${key}=${value}`); - } - }); - } - const preopens = []; - if (options.preopens !== undefined) { - validateObject(options.preopens, 'options.preopens'); - Object.entries(options.preopens).forEach(({ 0: key, 1: value }) => preopens.push({ mappedPath: String(key), realPath: String(value) })); - } - if (preopens.length > 0) { - if (options.fs === undefined) { - throw new Error('filesystem is disabled, can not preopen directory'); - } - try { - validateObject(options.fs, 'options.fs'); - } - catch (_) { - throw new TypeError('Node.js fs like implementation is not provided'); - } - } - // if (options.filesystem !== undefined) { - // validateObject(options.filesystem, 'options.filesystem') - // validateString(options.filesystem.type, 'options.filesystem.type') - // if (options.filesystem.type !== 'memfs' && options.filesystem.type !== 'file-system-access-api') { - // throw new Error(`Filesystem type ${(options.filesystem as any).type as string} is not supported, only "memfs" and "file-system-access-api" is supported currently`) - // } - // try { - // validateObject(options.filesystem.fs, 'options.filesystem.fs') - // } catch (_) { - // throw new Error('Node.js fs like implementation is not provided') - // } - // } - if (options.print !== undefined) - validateFunction(options.print, 'options.print'); - if (options.printErr !== undefined) - validateFunction(options.printErr, 'options.printErr'); - if (options.returnOnExit !== undefined) { - validateBoolean(options.returnOnExit, 'options.returnOnExit'); - } - // const { stdin = 0, stdout = 1, stderr = 2 } = options - // validateInt32(stdin, 'options.stdin', 0) - // validateInt32(stdout, 'options.stdout', 0) - // validateInt32(stderr, 'options.stderr', 0) - // const stdio = [stdin, stdout, stderr] as const - const stdio = [0, 1, 2]; - return { - args, - env, - preopens, - stdio, - _WASI - }; -} -function initWASI(setMemory, wrap) { - this[kSetMemory] = setMemory; - this.wasiImport = wrap; - this[kStarted] = false; - this[kExitCode] = 0; - this[kInstance] = undefined; -} -/** @public */ -class WASI { - constructor(options = kEmptyObject) { - const { args, env, preopens, stdio, _WASI } = validateOptions.call(this, options); - const wrap = _WASI.createSync(args, env, preopens, stdio, options.fs, options.print, options.printErr); - const setMemory = wrap._setMemory; - delete wrap._setMemory; - initWASI.call(this, setMemory, wrap); - if (options.returnOnExit) { - wrap.proc_exit = wasiReturnOnProcExit.bind(this); - } - } - finalizeBindings(instance, _a) { - var _b; - var { memory = (_b = instance === null || instance === void 0 ? void 0 : instance.exports) === null || _b === void 0 ? void 0 : _b.memory } = _a === void 0 ? {} : _a; - if (this[kStarted]) { - throw new Error('WASI instance has already started'); - } - validateObject(instance, 'instance'); - validateObject(instance.exports, 'instance.exports'); - this[kSetMemory](memory); - this[kInstance] = instance; - this[kStarted] = true; - } - // Must not export _initialize, must export _start - start(instance) { - this.finalizeBindings(instance); - const { _start, _initialize } = this[kInstance].exports; - validateFunction(_start, 'instance.exports._start'); - validateUndefined(_initialize, 'instance.exports._initialize'); - let ret; - try { - ret = _start(); - } - catch (err) { - if (err !== kExitCode) { - throw err; - } - } - if (ret instanceof Promise) { - return ret.then(() => this[kExitCode], (err) => { - if (err !== kExitCode) { - throw err; - } - return this[kExitCode]; - }); - } - return this[kExitCode]; - } - // Must not export _start, may optionally export _initialize - initialize(instance) { - this.finalizeBindings(instance); - const { _start, _initialize } = this[kInstance].exports; - validateUndefined(_start, 'instance.exports._start'); - if (_initialize !== undefined) { - validateFunction(_initialize, 'instance.exports._initialize'); - return _initialize(); - } - } - getImportObject() { - return { [this[kBindingName]]: this.wasiImport }; - } -} -function wasiReturnOnProcExit(rval) { - this[kExitCode] = rval; - // eslint-disable-next-line @typescript-eslint/no-throw-literal - throw kExitCode; -} -/** @public */ -async function createAsyncWASI(options = kEmptyObject) { - const _this = Object.create(WASI.prototype); - const { args, env, preopens, stdio, _WASI } = validateOptions.call(_this, options); - if (options.asyncify !== undefined) { - validateObject(options.asyncify, 'options.asyncify'); - validateFunction(options.asyncify.wrapImportFunction, 'options.asyncify.wrapImportFunction'); - } - const wrap = await _WASI.createAsync(args, env, preopens, stdio, options.fs, options.print, options.printErr, options.asyncify); - const setMemory = wrap._setMemory; - delete wrap._setMemory; - initWASI.call(_this, setMemory, wrap); - if (options.returnOnExit) { - wrap.proc_exit = wasiReturnOnProcExit.bind(_this); - } - return _this; -} - -export { Asyncify, Memory, WASI, WebAssemblyMemory, asyncifyLoad, asyncifyLoadSync, createAsyncWASI, extendMemory, load, loadSync, wrapAsyncExport, wrapAsyncImport, wrapExports }; diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js b/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js deleted file mode 100644 index c356880..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +++ /dev/null @@ -1 +0,0 @@ -const t="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0;if(!t)throw new Error("WebAssembly is not supported in this environment");function e(t,e){if(null===t||"object"!=typeof t)throw new TypeError(`${e} must be an object. Received ${null===t?"null":typeof t}`)}function n(t,e){if("string"!=typeof t)throw new TypeError(`${e} must be a string. Received ${null===t?"null":typeof t}`)}function r(t,e){if("function"!=typeof t)throw new TypeError(`${e} must be a function. Received ${null===t?"null":typeof t}`)}function i(t,e){if(void 0!==t)throw new TypeError(`${e} must be undefined. Received ${null===t?"null":typeof t}`)}function s(t){return!(!t||"object"!=typeof t&&"function"!=typeof t||"function"!=typeof t.then)}function o(t,e){const n=Object.create(null);return Object.keys(t).forEach((r=>{const i=t[r];Object.defineProperty(n,r,{enumerable:!0,value:e(i,r)})})),n}function a(t,e,n){return"function"==typeof SharedArrayBuffer&&t.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(t.buffer.constructor)?t.slice(e,n):t.subarray(e,n)}const c=["asyncify_get_state","asyncify_start_rewind","asyncify_start_unwind","asyncify_stop_rewind","asyncify_stop_unwind"];function u(t,e,n,r){if("function"!=typeof t.exports[r]||n<=0)return{wasm64:e,dataPtr:16,start:e?32:24,end:1024};const i=t.exports[r],s=e?Number(i(BigInt(16)+BigInt(n))):i(8+n);if(0===s)throw new Error("Allocate asyncify data failed");return e?{wasm64:e,dataPtr:s,start:s+16,end:s+16+n}:{wasm64:e,dataPtr:s,start:s+8,end:s+8+n}}class f{constructor(){this.value=void 0,this.exports=void 0,this.dataPtr=0}init(e,n,r){var i,s;if(this.exports)throw new Error("Asyncify has been initialized");if(!(e instanceof t.Memory))throw new TypeError("Require WebAssembly.Memory object");const o=n.exports;for(let t=0;t{const r=t[n],i={};Object.keys(r).forEach((t=>{const e=r[t];i[t]="function"==typeof e?this.wrapImportFunction(e):e})),e[n]=i})),e}wrapExportFunction(t){const e=this;return async function(){e.assertState();let n=t.apply(this,arguments);for(;1===e.exports.asyncify_get_state();)e.exports.asyncify_stop_unwind(),e.value=await e.value,e.assertState(),e.exports.asyncify_start_rewind(e.dataPtr),n=t.call(this);return e.assertState(),n}}wrapExports(t,e){return o(t,((t,n)=>{let r=-1!==c.indexOf(n)||"function"!=typeof t;return Array.isArray(e)&&(r=r||-1===e.indexOf(n)),r?t:this.wrapExportFunction(t)}))}}function h(t){if(t&&"object"!=typeof t)throw new TypeError("imports must be an object or undefined")}function g(e,n){return"undefined"!=typeof wx&&"undefined"!=typeof __wxConfig?t.instantiate(e,n):fetch(e).then((t=>t.arrayBuffer())).then((e=>t.instantiate(e,n)))}function d(e,n){let r;if(h(n),n=null!=n?n:{},e instanceof ArrayBuffer||ArrayBuffer.isView(e))return t.instantiate(e,n);if(e instanceof t.Module)return t.instantiate(e,n).then((t=>({instance:t,module:e})));if("string"!=typeof e&&!(e instanceof URL))throw new TypeError("Invalid source");if("function"==typeof t.instantiateStreaming){let i;try{i=fetch(e),r=t.instantiateStreaming(i,n).catch((()=>g(e,n)))}catch(t){r=g(e,n)}}else r=g(e,n);return r}function l(t,e,n){h(n),n=null!=n?n:{};const r=new f;return d(e,n=r.wrapImports(n)).then((e=>{var i;const s=e.instance.exports.memory||(null===(i=n.env)||void 0===i?void 0:i.memory);return{module:e.module,instance:r.init(s,e.instance,t)}}))}function _(e,n){let r;if(h(n),n=null!=n?n:{},e instanceof ArrayBuffer||ArrayBuffer.isView(e))r=new t.Module(e);else{if(!(e instanceof WebAssembly.Module))throw new TypeError("Invalid source");r=e}return{instance:new t.Instance(r,n),module:r}}function p(t,e,n){var r;h(n),n=null!=n?n:{};const i=new f,s=_(e,n=i.wrapImports(n)),o=s.instance.exports.memory||(null===(r=n.env)||void 0===r?void 0:r.memory);return{module:s.module,instance:i.init(o,s.instance,t)}}const E=46,y=47;function I(t){return t===y}function m(...t){let e="",r=!1;for(let i=t.length-1;i>=-1&&!r;i--){const s=i>=0?t[i]:"/";n(s,"path"),0!==s.length&&(e=`${s}/${e}`,r=s.charCodeAt(0)===y)}return e=function(t,e,n,r){let i="",s=0,o=-1,a=0,c=0;for(let u=0;u<=t.length;++u){if(u2){const t=i.indexOf(n);-1===t?(i="",s=0):(i=i.slice(0,t),s=i.length-1-i.indexOf(n)),o=u,a=0;continue}if(0!==i.length){i="",s=0,o=u,a=0;continue}}e&&(i+=i.length>0?`${n}..`:"..",s=2)}else i.length>0?i+=`${n}${t.slice(o+1,u)}`:i=t.slice(o+1,u),s=u-o-1;o=u,a=0}else c===E&&-1!==a?++a:a=-1}return i}(e,!r,"/",I),r?`/${e}`:e.length>0?e:"."}const A={FD_DATASYNC:BigInt(1)<=0)n=e;else for(let e=0;e"),this.insertStdio(t.out,1,""),this.insertStdio(t.err,2,"")}insertStdio(t,e,n){const{base:r,inheriting:i}=O(this.stdio,t,2,2),s=this.insert(t,n,n,2,r,i,0);if(s.id!==e)throw new b(`id: ${s.id} !== expected: ${e}`,8);return s}insert(t,e,n,r,i,s,o){var a,c;let u,f=-1;if(this.used>=this.size){const t=2*this.size;this.fds.length=t,f=this.size,this.size=t}else for(let t=0;t"===e?new x(null!==(c=this.printErr)&&void 0!==c?c:console.error,f,t,e,n,r,i,s,o):new C(f,t,e,n,r,i,s,o),this.fds[f]=u,this.used++,u}get(t,e,n){if(t>=this.size)throw new b("Invalid fd",8);const r=this.fds[t];if(!r||r.id!==t)throw new b("Bad file descriptor",8);if((~r.rightsBase&e)!==BigInt(0)||(~r.rightsInheriting&n)!==BigInt(0))throw new b("Capabilities insufficient",76);return r}remove(t){if(t>=this.size)throw new b("Invalid fd",8);const e=this.fds[t];if(!e||e.id!==t)throw new b("Bad file descriptor",8);this.fds[t]=void 0,this.used--}}class W extends K{constructor(t){super(t),this.fs=t.fs}getFileTypeByFd(t){return M(this.fs.fstatSync(t,{bigint:!0}))}insertPreopen(t,e,n){const r=this.getFileTypeByFd(t);if(3!==r)throw new b(`Preopen not dir: ["${e}", "${n}"]`,54);const i=O(this.stdio,t,0,r);return this.insert(t,e,n,r,i.base,i.inheriting,1)}renumber(t,e){if(t===e)return;if(t>=this.size||e>=this.size)throw new b("Invalid fd",8);const n=this.fds[t],r=this.fds[e];if(!n||!r||n.id!==t||r.id!==e)throw new b("Invalid fd",8);this.fs.closeSync(n.fd),this.fds[t]=this.fds[e],this.fds[t].id=t,this.fds[e]=void 0,this.used--}}class j extends K{constructor(t){super(t)}async getFileTypeByFd(t){return M(await t.stat({bigint:!0}))}async insertPreopen(t,e,n){const r=await this.getFileTypeByFd(t);if(3!==r)throw new b(`Preopen not dir: ["${e}", "${n}"]`,54);const i=O(this.stdio,t.fd,0,r);return this.insert(t,e,n,r,i.base,i.inheriting,1)}async renumber(t,e){if(t===e)return;if(t>=this.size||e>=this.size)throw new b("Invalid fd",8);const n=this.fds[t],r=this.fds[e];if(!n||!r||n.id!==t||r.id!==e)throw new b("Invalid fd",8);await n.fd.close(),this.fds[t]=this.fds[e],this.fds[t].id=t,this.fds[e]=void 0,this.used--}}const G=function(){return t.Memory}();class Y extends G{constructor(t){super(t)}get HEAP8(){return new Int8Array(super.buffer)}get HEAPU8(){return new Uint8Array(super.buffer)}get HEAP16(){return new Int16Array(super.buffer)}get HEAPU16(){return new Uint16Array(super.buffer)}get HEAP32(){return new Int32Array(super.buffer)}get HEAPU32(){return new Uint32Array(super.buffer)}get HEAP64(){return new BigInt64Array(super.buffer)}get HEAPU64(){return new BigUint64Array(super.buffer)}get HEAPF32(){return new Float32Array(super.buffer)}get HEAPF64(){return new Float64Array(super.buffer)}get view(){return new DataView(super.buffer)}}function $(e){return Object.getPrototypeOf(e)===t.Memory.prototype&&Object.setPrototypeOf(e,Y.prototype),e}function V(){const e=t.Function;if("function"!=typeof e)throw new Error('WebAssembly.Function is not supported in this environment. If you are using V8 based browser like Chrome, try to specify --js-flags="--wasm-staging --experimental-wasm-stack-switching"');return e}function Z(t,e,n){const r=V();if("function"!=typeof t)throw new TypeError("Function required");const i=e.slice(0);return i.unshift("externref"),new r({parameters:i,results:n},t,{suspending:"first"})}function q(t){const e=V();if("function"!=typeof t)throw new TypeError("Function required");return new e({parameters:[...e.type(t).parameters.slice(1)],results:["externref"]},t,{promising:"first"})}function X(t,e){return o(t,((t,n)=>{let r="function"!=typeof t;return Array.isArray(e)&&(r=r||-1===e.indexOf(n)),r?t:q(t)}))}function Q(t,e){if(0===t.length||0===e.length)return 0;let n=0,r=e.length-n;for(let i=0;it),it):r}function at(t,e,n){let r=!1;const i=(()=>{try{return}catch(t){return}})();return"string"==typeof i&&i.split(",").includes("wasi")&&(r=!0),st(e,r?function(){const r=Array.prototype.slice.call(arguments);let i=[`${e}(${Array.from({length:arguments.length}).map((()=>"%d")).join(", ")})`];return i=i.concat(r),console.debug.apply(console,i),ot(n,t,r)}:function(){return ot(n,t,arguments)})}function ct(t,e,n,r){let i=m(e.realPath,n);if(1==(1&r))try{i=t.readlinkSync(i)}catch(t){if("EINVAL"!==t.code&&"ENOENT"!==t.code)throw t}return i}async function ut(t,e,n,r){let i=m(e.realPath,n);if(1==(1&r))try{i=await t.promises.readlink(i)}catch(t){if("EINVAL"!==t.code&&"ENOENT"!==t.code)throw t}return i}const ft=new TextEncoder,ht=new TextDecoder,gt=(BigInt(1)<r.rightsBase||(n|r.rightsInheriting)>r.rightsInheriting?76:(r.rightsBase=e,r.rightsInheriting=n,0)})),this.fd_prestat_get=at(this,"fd_prestat_get",(function(t,e){if(0===(e=Number(e)))return 28;const n=tt.get(this);let r;try{r=n.fds.get(t,BigInt(0),BigInt(0))}catch(t){if(t instanceof b)return t.errno;throw t}if(1!==r.preopen)return 28;const{view:i}=nt(this);return i.setUint32(e,0,!0),i.setUint32(e+4,ft.encode(r.path).length,!0),0})),this.fd_prestat_dir_name=at(this,"fd_prestat_dir_name",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const r=tt.get(this).fds.get(t,BigInt(0),BigInt(0));if(1!==r.preopen)return 8;const i=ft.encode(r.path);if(i.length>n)return 42;const{HEAPU8:s}=nt(this);return s.set(i,e),0})),this.fd_seek=at(this,"fd_seek",(function(t,e,n,r){if(0===(r=Number(r)))return 28;if(0===t||1===t||2===t)return 0;const i=tt.get(this).fds.get(t,A.FD_SEEK,BigInt(0)).seek(e,n),{view:s}=nt(this);return s.setBigUint64(r,i,!0),0})),this.fd_tell=at(this,"fd_tell",(function(t,e){const n=tt.get(this).fds.get(t,A.FD_TELL,BigInt(0)),r=BigInt(n.pos),{view:i}=nt(this);return i.setBigUint64(Number(e),r,!0),0})),this.poll_oneoff=at(this,"poll_oneoff",(function(t,e,n,r){if(t=Number(t),e=Number(e),r=Number(r),n=Number(n),n>>>=0,0===t||0===e||0===n||0===r)return 28;const{view:i}=nt(this);i.setUint32(r,0,!0);let s,o=0,a=BigInt(0),c=BigInt(0),u=0,f=BigInt(0);const h=Array(n);for(o=0;o0){for(o=0;o!1));const t=e;i.setBigUint64(t,a,!0),i.setUint32(t+8,0,!0),i.setUint32(t+12,0,!0),i.setUint32(r,1,!0)}return 0})),this.proc_exit=at(this,"proc_exit",(function(t){return"object"==typeof process&&null!==process&&"function"==typeof process.exit&&process.exit(t),0})),this.proc_raise=at(this,"proc_raise",(function(t){return 52})),this.sched_yield=at(this,"sched_yield",(function(){return 0})),this.random_get="undefined"!=typeof crypto&&"function"==typeof crypto.getRandomValues?at(this,"random_get",(function(t,e){if(0===(t=Number(t)))return 28;e=Number(e);const{HEAPU8:n,view:r}=nt(this);if("function"==typeof SharedArrayBuffer&&n.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(n.buffer)){for(let n=t;ngt)return 28;const{HEAPU8:s,view:o}=nt(this),a=tt.get(this).fds.get(t,A.FD_READ|A.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;let c=0;const u=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return c+=a,s.subarray(i,i+a)}));let f=0;const h=(()=>{try{return new Uint8Array(new SharedArrayBuffer(c))}catch(t){return new Uint8Array(c)}})();h._isBuffer=!0;const g=rt(this).readSync(a.fd,h,0,h.length,Number(r));return f=h?Q(u,h.subarray(0,g)):0,o.setUint32(i,f,!0),0}),(async function(t,e,n,r,i){if(e=Number(e),i=Number(i),0===e&&n||0===i||r>gt)return 28;const{HEAPU8:s,view:o}=nt(this),a=tt.get(this).fds.get(t,A.FD_READ|A.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;let c=0;const u=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return c+=a,s.subarray(i,i+a)}));let f=0;const h=new Uint8Array(c);h._isBuffer=!0;const{bytesRead:g}=await a.fd.read(h,0,h.length,Number(r));return f=h?Q(u,h.subarray(0,g)):0,o.setUint32(i,f,!0),0}),["i32","i32","i32","i64","i32"],["i32"]),u("fd_pwrite",(function(t,e,n,r,i){if(e=Number(e),i=Number(i),0===e&&n||0===i||r>gt)return 28;const{HEAPU8:s,view:o}=nt(this),a=tt.get(this).fds.get(t,A.FD_WRITE|A.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;const c=k(Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return s.subarray(i,i+a)}))),u=rt(this).writeSync(a.fd,c,0,c.length,Number(r));return o.setUint32(i,u,!0),0}),(async function(t,e,n,r,i){if(e=Number(e),i=Number(i),0===e&&n||0===i||r>gt)return 28;const{HEAPU8:s,view:o}=nt(this),a=tt.get(this).fds.get(t,A.FD_WRITE|A.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;const c=k(Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return s.subarray(i,i+a)}))),{bytesWritten:u}=await a.fd.write(c,0,c.length,Number(r));return o.setUint32(i,u,!0),0}),["i32","i32","i32","i64","i32"],["i32"]),u("fd_read",(function(t,e,n,r){if(e=Number(e),r=Number(r),0===e&&n||0===r)return 28;const{HEAPU8:i,view:s}=nt(this),o=tt.get(this).fds.get(t,A.FD_READ,BigInt(0));if(!n)return s.setUint32(r,0,!0),0;let a=0;const c=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,o=s.getInt32(r,!0),c=s.getUint32(r+4,!0);return a+=c,i.subarray(o,o+c)}));let u,f=0;if(0===t){if("undefined"==typeof window||"function"!=typeof window.prompt)return 58;u=dt(),f=u?Q(c,u):0}else{u=(()=>{try{return new Uint8Array(new SharedArrayBuffer(a))}catch(t){return new Uint8Array(a)}})(),u._isBuffer=!0;const t=rt(this).readSync(o.fd,u,0,u.length,Number(o.pos));f=u?Q(c,u.subarray(0,t)):0,o.pos+=BigInt(f)}return s.setUint32(r,f,!0),0}),(async function(t,e,n,r){if(e=Number(e),r=Number(r),0===e&&n||0===r)return 28;const{HEAPU8:i,view:s}=nt(this),o=tt.get(this).fds.get(t,A.FD_READ,BigInt(0));if(!n)return s.setUint32(r,0,!0),0;let a=0;const c=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,o=s.getInt32(r,!0),c=s.getUint32(r+4,!0);return a+=c,i.subarray(o,o+c)}));let u,f=0;if(0===t){if("undefined"==typeof window||"function"!=typeof window.prompt)return 58;u=dt(),f=u?Q(c,u):0}else{u=new Uint8Array(a),u._isBuffer=!0;const{bytesRead:t}=await o.fd.read(u,0,u.length,Number(o.pos));f=u?Q(c,u.subarray(0,t)):0,o.pos+=BigInt(f)}return s.setUint32(r,f,!0),0}),["i32","i32","i32","i32"],["i32"]),u("fd_readdir",(function(t,e,n,r,i){if(e=Number(e),n=Number(n),i=Number(i),0===e||0===i)return 0;const s=tt.get(this).fds.get(t,A.FD_READDIR,BigInt(0)),o=rt(this),a=o.readdirSync(s.realPath,{withFileTypes:!0}),{HEAPU8:c,view:u}=nt(this);let f=0;for(let t=Number(r);t{const r=e+8*n,o=s.getInt32(r,!0),a=s.getUint32(r+4,!0);return i.subarray(o,o+a)})));let c;if(1===t||2===t)c=o.write(a);else{c=rt(this).writeSync(o.fd,a,0,a.length,Number(o.pos)),o.pos+=BigInt(c)}return s.setUint32(r,c,!0),0}),(async function(t,e,n,r){if(e=Number(e),r=Number(r),0===e&&n||0===r)return 28;const{HEAPU8:i,view:s}=nt(this),o=tt.get(this).fds.get(t,A.FD_WRITE,BigInt(0));if(!n)return s.setUint32(r,0,!0),0;const a=k(Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,o=s.getInt32(r,!0),a=s.getUint32(r+4,!0);return i.subarray(o,o+a)})));let c;return 1===t||2===t?c=o.write(a):(c=await(await o.fd.write(a,0,a.length,Number(o.pos))).bytesWritten,o.pos+=BigInt(c)),s.setUint32(r,c,!0),0}),["i32","i32","i32","i32"],["i32"]),u("path_create_directory",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=nt(this),i=tt.get(this).fds.get(t,A.PATH_CREATE_DIRECTORY,BigInt(0));let s=ht.decode(a(r,e,e+n));s=m(i.realPath,s);return rt(this).mkdirSync(s),0}),(async function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=nt(this),i=tt.get(this).fds.get(t,A.PATH_CREATE_DIRECTORY,BigInt(0));let s=ht.decode(a(r,e,e+n));s=m(i.realPath,s);const o=rt(this);return await o.promises.mkdir(s),0}),["i32","i32","i32"],["i32"]),u("path_filestat_get",(function(t,e,n,r,i){if(n=Number(n),r=Number(r),i=Number(i),0===n||0===i)return 28;const{HEAPU8:s,view:o}=nt(this),c=tt.get(this).fds.get(t,A.PATH_FILESTAT_GET,BigInt(0));let u=ht.decode(a(s,n,n+r));const f=rt(this);let h;return u=m(c.realPath,u),h=1==(1&e)?f.statSync(u,{bigint:!0}):f.lstatSync(u,{bigint:!0}),z(o,i,h),0}),(async function(t,e,n,r,i){if(n=Number(n),r=Number(r),i=Number(i),0===n||0===i)return 28;const{HEAPU8:s,view:o}=nt(this),c=tt.get(this).fds.get(t,A.PATH_FILESTAT_GET,BigInt(0));let u=ht.decode(a(s,n,n+r));const f=rt(this);let h;return u=m(c.realPath,u),h=1==(1&e)?await f.promises.stat(u,{bigint:!0}):await f.promises.lstat(u,{bigint:!0}),z(o,i,h),0}),["i32","i32","i32","i32","i32"],["i32"]),u("path_filestat_set_times",(function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),0===n)return 28;const{HEAPU8:c}=nt(this),u=tt.get(this).fds.get(t,A.PATH_FILESTAT_SET_TIMES,BigInt(0));if(lt(o))return 28;const f=rt(this),h=ct(f,u,ht.decode(a(c,n,n+r)),e);return 2==(2&o)&&(i=BigInt(1e6*Date.now())),8==(8&o)&&(s=BigInt(1e6*Date.now())),f.utimesSync(h,Number(i),Number(s)),0}),(async function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),0===n)return 28;const{HEAPU8:c}=nt(this),u=tt.get(this).fds.get(t,A.PATH_FILESTAT_SET_TIMES,BigInt(0));if(lt(o))return 28;const f=rt(this),h=await ut(f,u,ht.decode(a(c,n,n+r)),e);return 2==(2&o)&&(i=BigInt(1e6*Date.now())),8==(8&o)&&(s=BigInt(1e6*Date.now())),await f.promises.utimes(h,Number(i),Number(s)),0}),["i32","i32","i32","i32","i64","i64","i32"],["i32"]),u("path_link",(function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),s=Number(s),o=Number(o),0===n||0===s)return 28;const c=tt.get(this);let u,f;t===i?u=f=c.fds.get(t,A.PATH_LINK_SOURCE|A.PATH_LINK_TARGET,BigInt(0)):(u=c.fds.get(t,A.PATH_LINK_SOURCE,BigInt(0)),f=c.fds.get(i,A.PATH_LINK_TARGET,BigInt(0)));const{HEAPU8:h}=nt(this),g=rt(this),d=ct(g,u,ht.decode(a(h,n,n+r)),e),l=m(f.realPath,ht.decode(a(h,s,s+o)));return g.linkSync(d,l),0}),(async function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),s=Number(s),o=Number(o),0===n||0===s)return 28;const c=tt.get(this);let u,f;t===i?u=f=c.fds.get(t,A.PATH_LINK_SOURCE|A.PATH_LINK_TARGET,BigInt(0)):(u=c.fds.get(t,A.PATH_LINK_SOURCE,BigInt(0)),f=c.fds.get(i,A.PATH_LINK_TARGET,BigInt(0)));const{HEAPU8:h}=nt(this),g=rt(this),d=await ut(g,u,ht.decode(a(h,n,n+r)),e),l=m(f.realPath,ht.decode(a(h,s,s+o)));return await g.promises.link(d,l),0}),["i32","i32","i32","i32","i32","i32","i32"],["i32"]),u("path_open",(function(t,e,n,r,i,s,o,c,u){if(n=Number(n),u=Number(u),0===n||0===u)return 28;r=Number(r),s=BigInt(s),o=BigInt(o);const{flags:f,needed_base:g,needed_inheriting:d}=h(i,s,o,c),l=tt.get(this),_=l.fds.get(t,g,d),p=nt(this),E=p.HEAPU8,y=ht.decode(a(E,n,n+r)),I=rt(this),m=ct(I,_,y,e),A=I.openSync(m,f,438),b=l.fds.getFileTypeByFd(A);if(3!==b&&(0!=(2&i)||m.endsWith("/")))return 54;const{base:T,inheriting:w}=O(l.fds.stdio,A,f,b),B=l.fds.insert(A,m,m,b,s&T,o&w,0),N=I.fstatSync(A,{bigint:!0});N.isFile()&&(B.size=N.size,0!=(1024&f)&&(B.pos=N.size));return p.view.setInt32(u,B.id,!0),0}),(async function(t,e,n,r,i,s,o,c,u){if(n=Number(n),u=Number(u),0===n||0===u)return 28;r=Number(r),s=BigInt(s),o=BigInt(o);const{flags:f,needed_base:g,needed_inheriting:d}=h(i,s,o,c),l=tt.get(this),_=l.fds.get(t,g,d),p=nt(this),E=p.HEAPU8,y=ht.decode(a(E,n,n+r)),I=rt(this),m=await ut(I,_,y,e),A=await I.promises.open(m,f,438),b=await l.fds.getFileTypeByFd(A);if(0!=(2&i)&&3!==b)return 54;const{base:T,inheriting:w}=O(l.fds.stdio,A.fd,f,b),B=l.fds.insert(A,m,m,b,s&T,o&w,0),N=await A.stat({bigint:!0});N.isFile()&&(B.size=N.size,0!=(1024&f)&&(B.pos=N.size));return p.view.setInt32(u,B.id,!0),0}),["i32","i32","i32","i32","i32","i64","i64","i32","i32"],["i32"]),u("path_readlink",(function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),r=Number(r),i=Number(i),s=Number(s),0===e||0===r||0===s)return 28;const{HEAPU8:o,view:c}=nt(this),u=tt.get(this).fds.get(t,A.PATH_READLINK,BigInt(0));let f=ht.decode(a(o,e,e+n));f=m(u.realPath,f);const h=rt(this).readlinkSync(f),g=ft.encode(h),d=Math.min(g.length,i);return d>=i?42:(o.set(g.subarray(0,d),r),o[r+d]=0,c.setUint32(s,d,!0),0)}),(async function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),r=Number(r),i=Number(i),s=Number(s),0===e||0===r||0===s)return 28;const{HEAPU8:o,view:c}=nt(this),u=tt.get(this).fds.get(t,A.PATH_READLINK,BigInt(0));let f=ht.decode(a(o,e,e+n));f=m(u.realPath,f);const h=rt(this),g=await h.promises.readlink(f),d=ft.encode(g),l=Math.min(d.length,i);return l>=i?42:(o.set(d.subarray(0,l),r),o[r+l]=0,c.setUint32(s,l,!0),0)}),["i32","i32","i32","i32","i32","i32"],["i32"]),u("path_remove_directory",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=nt(this),i=tt.get(this).fds.get(t,A.PATH_REMOVE_DIRECTORY,BigInt(0));let s=ht.decode(a(r,e,e+n));s=m(i.realPath,s);return rt(this).rmdirSync(s),0}),(async function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=nt(this),i=tt.get(this).fds.get(t,A.PATH_REMOVE_DIRECTORY,BigInt(0));let s=ht.decode(a(r,e,e+n));s=m(i.realPath,s);const o=rt(this);return await o.promises.rmdir(s),0}),["i32","i32","i32"],["i32"]),u("path_rename",(function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),i=Number(i),s=Number(s),0===e||0===i)return 28;const o=tt.get(this);let c,u;t===r?c=u=o.fds.get(t,A.PATH_RENAME_SOURCE|A.PATH_RENAME_TARGET,BigInt(0)):(c=o.fds.get(t,A.PATH_RENAME_SOURCE,BigInt(0)),u=o.fds.get(r,A.PATH_RENAME_TARGET,BigInt(0)));const{HEAPU8:f}=nt(this),h=m(c.realPath,ht.decode(a(f,e,e+n))),g=m(u.realPath,ht.decode(a(f,i,i+s)));return rt(this).renameSync(h,g),0}),(async function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),i=Number(i),s=Number(s),0===e||0===i)return 28;const o=tt.get(this);let c,u;t===r?c=u=o.fds.get(t,A.PATH_RENAME_SOURCE|A.PATH_RENAME_TARGET,BigInt(0)):(c=o.fds.get(t,A.PATH_RENAME_SOURCE,BigInt(0)),u=o.fds.get(r,A.PATH_RENAME_TARGET,BigInt(0)));const{HEAPU8:f}=nt(this),h=m(c.realPath,ht.decode(a(f,e,e+n))),g=m(u.realPath,ht.decode(a(f,i,i+s))),d=rt(this);return await d.promises.rename(h,g),0}),["i32","i32","i32","i32","i32","i32"],["i32"]),u("path_symlink",(function(t,e,n,r,i){if(t=Number(t),e=Number(e),r=Number(r),i=Number(i),0===t||0===r)return 28;const{HEAPU8:s}=nt(this),o=tt.get(this).fds.get(n,A.PATH_SYMLINK,BigInt(0)),c=ht.decode(a(s,t,t+e));if(c.length>0&&"/"===c[0])return 63;let u=ht.decode(a(s,r,r+i));u=m(o.realPath,u);return rt(this).symlinkSync(c,u),0}),(async function(t,e,n,r,i){if(t=Number(t),e=Number(e),r=Number(r),i=Number(i),0===t||0===r)return 28;const{HEAPU8:s}=nt(this),o=tt.get(this).fds.get(n,A.PATH_SYMLINK,BigInt(0)),c=ht.decode(a(s,t,t+e));let u=ht.decode(a(s,r,r+i));u=m(o.realPath,u);const f=rt(this);return await f.promises.symlink(c,u),0}),["i32","i32","i32","i32","i32"],["i32"]),u("path_unlink_file",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=nt(this),i=tt.get(this).fds.get(t,A.PATH_UNLINK_FILE,BigInt(0));let s=ht.decode(a(r,e,e+n));s=m(i.realPath,s);return rt(this).unlinkSync(s),0}),(async function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=nt(this),i=tt.get(this).fds.get(t,A.PATH_UNLINK_FILE,BigInt(0));let s=ht.decode(a(r,e,e+n));s=m(i.realPath,s);const o=rt(this);return await o.promises.unlink(s),0}),["i32","i32","i32"],["i32"]),this._setMemory=function(e){if(!(e instanceof t.Memory))throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory');J.set(c,$(e))}}static createSync(t,e,n,r,i,s,o){const a=new W({size:3,in:r[0],out:r[1],err:r[2],fs:i,print:s,printErr:o}),c=new _t(t,e,a,!1,i);if(n.length>0)for(let t=0;t0)for(let t=0;t{void 0!==e&&a.push(`${t}=${e}`)})));const c=[];if(void 0!==t.preopens&&(e(t.preopens,"options.preopens"),Object.entries(t.preopens).forEach((({0:t,1:e})=>c.push({mappedPath:String(t),realPath:String(e)})))),c.length>0){if(void 0===t.fs)throw new Error("filesystem is disabled, can not preopen directory");try{e(t.fs,"options.fs")}catch(t){throw new TypeError("Node.js fs like implementation is not provided")}}void 0!==t.print&&r(t.print,"options.print"),void 0!==t.printErr&&r(t.printErr,"options.printErr"),void 0!==t.returnOnExit&&function(t,e){if("boolean"!=typeof t)throw new TypeError(`${e} must be a boolean. Received ${null===t?"null":typeof t}`)}(t.returnOnExit,"options.returnOnExit");return{args:o,env:a,preopens:c,stdio:[0,1,2],_WASI:s}}function Tt(t,e){this[yt]=t,this.wasiImport=e,this[It]=!1,this[Et]=0,this[mt]=void 0}class wt{constructor(t=pt){const{args:e,env:n,preopens:r,stdio:i,_WASI:s}=bt.call(this,t),o=s.createSync(e,n,r,i,t.fs,t.print,t.printErr),a=o._setMemory;delete o._setMemory,Tt.call(this,a,o),t.returnOnExit&&(o.proc_exit=Bt.bind(this))}finalizeBindings(t,n){var r,{memory:i=(null===(r=null==t?void 0:t.exports)||void 0===r?void 0:r.memory)}=void 0===n?{}:n;if(this[It])throw new Error("WASI instance has already started");e(t,"instance"),e(t.exports,"instance.exports"),this[yt](i),this[mt]=t,this[It]=!0}start(t){this.finalizeBindings(t);const{_start:e,_initialize:n}=this[mt].exports;let s;r(e,"instance.exports._start"),i(n,"instance.exports._initialize");try{s=e()}catch(t){if(t!==Et)throw t}return s instanceof Promise?s.then((()=>this[Et]),(t=>{if(t!==Et)throw t;return this[Et]})):this[Et]}initialize(t){this.finalizeBindings(t);const{_start:e,_initialize:n}=this[mt].exports;if(i(e,"instance.exports._start"),void 0!==n)return r(n,"instance.exports._initialize"),n()}getImportObject(){return{[this[At]]:this.wasiImport}}}function Bt(t){throw this[Et]=t,Et}async function Nt(t=pt){const n=Object.create(wt.prototype),{args:i,env:s,preopens:o,stdio:a,_WASI:c}=bt.call(n,t);void 0!==t.asyncify&&(e(t.asyncify,"options.asyncify"),r(t.asyncify.wrapImportFunction,"options.asyncify.wrapImportFunction"));const u=await c.createAsync(i,s,o,a,t.fs,t.print,t.printErr,t.asyncify),f=u._setMemory;return delete u._setMemory,Tt.call(n,f,u),t.returnOnExit&&(u.proc_exit=Bt.bind(n)),n}export{f as Asyncify,Y as Memory,wt as WASI,G as WebAssemblyMemory,l as asyncifyLoad,p as asyncifyLoadSync,Nt as createAsyncWASI,$ as extendMemory,d as load,_ as loadSync,q as wrapAsyncExport,Z as wrapAsyncImport,X as wrapExports}; diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.js b/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.js deleted file mode 100644 index 975fbb3..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.js +++ /dev/null @@ -1,2780 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.wasmUtil = {})); -})(this, (function (exports) { 'use strict'; - - const _WebAssembly = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; - if (!_WebAssembly) { - throw new Error('WebAssembly is not supported in this environment'); - } - - /* eslint-disable spaced-comment */ - - function validateObject(value, name) { - if (value === null || typeof value !== 'object') { - throw new TypeError(`${name} must be an object. Received ${value === null ? 'null' : typeof value}`); - } - } - function validateArray(value, name) { - if (!Array.isArray(value)) { - throw new TypeError(`${name} must be an array. Received ${value === null ? 'null' : typeof value}`); - } - } - function validateBoolean(value, name) { - if (typeof value !== 'boolean') { - throw new TypeError(`${name} must be a boolean. Received ${value === null ? 'null' : typeof value}`); - } - } - function validateString(value, name) { - if (typeof value !== 'string') { - throw new TypeError(`${name} must be a string. Received ${value === null ? 'null' : typeof value}`); - } - } - function validateFunction(value, name) { - if (typeof value !== 'function') { - throw new TypeError(`${name} must be a function. Received ${value === null ? 'null' : typeof value}`); - } - } - function validateUndefined(value, name) { - if (value !== undefined) { - throw new TypeError(`${name} must be undefined. Received ${value === null ? 'null' : typeof value}`); - } - } - function isPromiseLike(obj) { - return !!(obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'); - } - function wrapInstanceExports(exports, mapFn) { - const newExports = Object.create(null); - Object.keys(exports).forEach(name => { - const exportValue = exports[name]; - Object.defineProperty(newExports, name, { - enumerable: true, - value: mapFn(exportValue, name) - }); - }); - return newExports; - } - function sleepBreakIf(delay, breakIf) { - const start = Date.now(); - const end = start + delay; - let ret = false; - while (Date.now() < end) { - if (breakIf()) { - ret = true; - break; - } - } - return ret; - } - function unsharedSlice(view, start, end) { - return ((typeof SharedArrayBuffer === 'function' && view.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(view.buffer.constructor) === '[object SharedArrayBuffer]')) - ? view.slice(start, end) - : view.subarray(start, end); - } - - const ignoreNames = [ - 'asyncify_get_state', - 'asyncify_start_rewind', - 'asyncify_start_unwind', - 'asyncify_stop_rewind', - 'asyncify_stop_unwind' - ]; - function tryAllocate(instance, wasm64, size, mallocName) { - if (typeof instance.exports[mallocName] !== 'function' || size <= 0) { - return { - wasm64, - dataPtr: 16, - start: wasm64 ? 32 : 24, - end: 1024 - }; - } - const malloc = instance.exports[mallocName]; - const dataPtr = wasm64 ? Number(malloc(BigInt(16) + BigInt(size))) : malloc(8 + size); - if (dataPtr === 0) { - throw new Error('Allocate asyncify data failed'); - } - return wasm64 - ? { wasm64, dataPtr, start: dataPtr + 16, end: dataPtr + 16 + size } - : { wasm64, dataPtr, start: dataPtr + 8, end: dataPtr + 8 + size }; - } - /** @public */ - class Asyncify { - constructor() { - this.value = undefined; - this.exports = undefined; - this.dataPtr = 0; - } - init(memory, instance, options) { - var _a, _b; - if (this.exports) { - throw new Error('Asyncify has been initialized'); - } - if (!(memory instanceof _WebAssembly.Memory)) { - throw new TypeError('Require WebAssembly.Memory object'); - } - const exports = instance.exports; - for (let i = 0; i < ignoreNames.length; ++i) { - if (typeof exports[ignoreNames[i]] !== 'function') { - throw new TypeError('Invalid asyncify wasm'); - } - } - let address; - const wasm64 = Boolean(options.wasm64); - if (!options.tryAllocate) { - address = { - wasm64, - dataPtr: 16, - start: wasm64 ? 32 : 24, - end: 1024 - }; - } - else { - if (options.tryAllocate === true) { - address = tryAllocate(instance, wasm64, 4096, 'malloc'); - } - else { - address = tryAllocate(instance, wasm64, (_a = options.tryAllocate.size) !== null && _a !== void 0 ? _a : 4096, (_b = options.tryAllocate.name) !== null && _b !== void 0 ? _b : 'malloc'); - } - } - this.dataPtr = address.dataPtr; - if (wasm64) { - new BigInt64Array(memory.buffer, this.dataPtr).set([BigInt(address.start), BigInt(address.end)]); - } - else { - new Int32Array(memory.buffer, this.dataPtr).set([address.start, address.end]); - } - this.exports = this.wrapExports(exports, options.wrapExports); - const asyncifiedInstance = Object.create(_WebAssembly.Instance.prototype); - Object.defineProperty(asyncifiedInstance, 'exports', { value: this.exports }); - // Object.setPrototypeOf(instance, Instance.prototype) - return asyncifiedInstance; - } - assertState() { - if (this.exports.asyncify_get_state() !== 0 /* AsyncifyState.NONE */) { - throw new Error('Asyncify state error'); - } - } - wrapImportFunction(f) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - return (function () { - // eslint-disable-next-line no-unreachable-loop - while (_this.exports.asyncify_get_state() === 2 /* AsyncifyState.REWINDING */) { - _this.exports.asyncify_stop_rewind(); - return _this.value; - } - _this.assertState(); - const v = f.apply(this, arguments); - if (!isPromiseLike(v)) - return v; - _this.exports.asyncify_start_unwind(_this.dataPtr); - _this.value = v; - }); - } - wrapImports(imports) { - const importObject = {}; - Object.keys(imports).forEach(k => { - const mod = imports[k]; - const newModule = {}; - Object.keys(mod).forEach(name => { - const importValue = mod[name]; - if (typeof importValue === 'function') { - newModule[name] = this.wrapImportFunction(importValue); - } - else { - newModule[name] = importValue; - } - }); - importObject[k] = newModule; - }); - return importObject; - } - wrapExportFunction(f) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - return (async function () { - _this.assertState(); - let ret = f.apply(this, arguments); - while (_this.exports.asyncify_get_state() === 1 /* AsyncifyState.UNWINDING */) { - _this.exports.asyncify_stop_unwind(); - _this.value = await _this.value; - _this.assertState(); - _this.exports.asyncify_start_rewind(_this.dataPtr); - ret = f.call(this); - } - _this.assertState(); - return ret; - }); - } - wrapExports(exports, needWrap) { - return wrapInstanceExports(exports, (exportValue, name) => { - let ignore = ignoreNames.indexOf(name) !== -1 || typeof exportValue !== 'function'; - if (Array.isArray(needWrap)) { - ignore = ignore || (needWrap.indexOf(name) === -1); - } - return ignore ? exportValue : this.wrapExportFunction(exportValue); - }); - } - } - - function validateImports(imports) { - if (imports && typeof imports !== 'object') { - throw new TypeError('imports must be an object or undefined'); - } - } - function fetchWasm(urlOrBuffer, imports) { - if (typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { - return _WebAssembly.instantiate(urlOrBuffer, imports); - } - return fetch(urlOrBuffer) - .then(response => response.arrayBuffer()) - .then(buffer => _WebAssembly.instantiate(buffer, imports)); - } - /** @public */ - function load(wasmInput, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - let source; - if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { - return _WebAssembly.instantiate(wasmInput, imports); - } - if (wasmInput instanceof _WebAssembly.Module) { - return _WebAssembly.instantiate(wasmInput, imports).then((instance) => { - return { instance, module: wasmInput }; - }); - } - if (typeof wasmInput !== 'string' && !(wasmInput instanceof URL)) { - throw new TypeError('Invalid source'); - } - if (typeof _WebAssembly.instantiateStreaming === 'function') { - let responsePromise; - try { - responsePromise = fetch(wasmInput); - source = _WebAssembly.instantiateStreaming(responsePromise, imports).catch(() => { - return fetchWasm(wasmInput, imports); - }); - } - catch (_) { - source = fetchWasm(wasmInput, imports); - } - } - else { - source = fetchWasm(wasmInput, imports); - } - return source; - } - /** @public */ - function asyncifyLoad(asyncify, urlOrBuffer, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - const asyncifyHelper = new Asyncify(); - imports = asyncifyHelper.wrapImports(imports); - return load(urlOrBuffer, imports).then(source => { - var _a; - const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); - return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; - }); - } - /** @public */ - function loadSync(wasmInput, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - let module; - if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { - module = new _WebAssembly.Module(wasmInput); - } - else if (wasmInput instanceof WebAssembly.Module) { - module = wasmInput; - } - else { - throw new TypeError('Invalid source'); - } - const instance = new _WebAssembly.Instance(module, imports); - const source = { instance, module }; - return source; - } - /** @public */ - function asyncifyLoadSync(asyncify, buffer, imports) { - var _a; - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - const asyncifyHelper = new Asyncify(); - imports = asyncifyHelper.wrapImports(imports); - const source = loadSync(buffer, imports); - const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); - return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; - } - - const CHAR_DOT = 46; /* . */ - const CHAR_FORWARD_SLASH = 47; /* / */ - function isPosixPathSeparator(code) { - return code === CHAR_FORWARD_SLASH; - } - function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { - let res = ''; - let lastSegmentLength = 0; - let lastSlash = -1; - let dots = 0; - let code = 0; - for (let i = 0; i <= path.length; ++i) { - if (i < path.length) { - code = path.charCodeAt(i); - } - else if (isPathSeparator(code)) { - break; - } - else { - code = CHAR_FORWARD_SLASH; - } - if (isPathSeparator(code)) { - if (lastSlash === i - 1 || dots === 1) ; - else if (dots === 2) { - if (res.length < 2 || lastSegmentLength !== 2 || - res.charCodeAt(res.length - 1) !== CHAR_DOT || - res.charCodeAt(res.length - 2) !== CHAR_DOT) { - if (res.length > 2) { - const lastSlashIndex = res.indexOf(separator); - if (lastSlashIndex === -1) { - res = ''; - lastSegmentLength = 0; - } - else { - res = res.slice(0, lastSlashIndex); - lastSegmentLength = - res.length - 1 - res.indexOf(separator); - } - lastSlash = i; - dots = 0; - continue; - } - else if (res.length !== 0) { - res = ''; - lastSegmentLength = 0; - lastSlash = i; - dots = 0; - continue; - } - } - if (allowAboveRoot) { - res += res.length > 0 ? `${separator}..` : '..'; - lastSegmentLength = 2; - } - } - else { - if (res.length > 0) { - res += `${separator}${path.slice(lastSlash + 1, i)}`; - } - else { - res = path.slice(lastSlash + 1, i); - } - lastSegmentLength = i - lastSlash - 1; - } - lastSlash = i; - dots = 0; - } - else if (code === CHAR_DOT && dots !== -1) { - ++dots; - } - else { - dots = -1; - } - } - return res; - } - function resolve(...args) { - let resolvedPath = ''; - let resolvedAbsolute = false; - for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { - const path = i >= 0 ? args[i] : '/'; - validateString(path, 'path'); - // Skip empty entries - if (path.length === 0) { - continue; - } - resolvedPath = `${path}/${resolvedPath}`; - resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - // Normalize the path - resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); - if (resolvedAbsolute) { - return `/${resolvedPath}`; - } - return resolvedPath.length > 0 ? resolvedPath : '.'; - } - - const FD_DATASYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(0)); - const FD_READ = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(1)); - const FD_SEEK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(2)); - const FD_FDSTAT_SET_FLAGS = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(3)); - const FD_SYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(4)); - const FD_TELL = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(5)); - const FD_WRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(6)); - const FD_ADVISE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(7)); - const FD_ALLOCATE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(8)); - const PATH_CREATE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(9)); - const PATH_CREATE_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(10)); - const PATH_LINK_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(11)); - const PATH_LINK_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(12)); - const PATH_OPEN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(13)); - const FD_READDIR = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(14)); - const PATH_READLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(15)); - const PATH_RENAME_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(16)); - const PATH_RENAME_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(17)); - const PATH_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(18)); - const PATH_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(19)); - const PATH_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(20)); - const FD_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(21)); - const FD_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(22)); - const FD_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(23)); - const PATH_SYMLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(24)); - const PATH_REMOVE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(25)); - const PATH_UNLINK_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(26)); - const POLL_FD_READWRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(27)); - const SOCK_SHUTDOWN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(28)); - const SOCK_ACCEPT = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(29)); - const WasiRights = { - FD_DATASYNC, - FD_READ, - FD_SEEK, - FD_FDSTAT_SET_FLAGS, - FD_SYNC, - FD_TELL, - FD_WRITE, - FD_ADVISE, - FD_ALLOCATE, - PATH_CREATE_DIRECTORY, - PATH_CREATE_FILE, - PATH_LINK_SOURCE, - PATH_LINK_TARGET, - PATH_OPEN, - FD_READDIR, - PATH_READLINK, - PATH_RENAME_SOURCE, - PATH_RENAME_TARGET, - PATH_FILESTAT_GET, - PATH_FILESTAT_SET_SIZE, - PATH_FILESTAT_SET_TIMES, - FD_FILESTAT_GET, - FD_FILESTAT_SET_SIZE, - FD_FILESTAT_SET_TIMES, - PATH_SYMLINK, - PATH_REMOVE_DIRECTORY, - PATH_UNLINK_FILE, - POLL_FD_READWRITE, - SOCK_SHUTDOWN, - SOCK_ACCEPT - }; - - function strerror(errno) { - switch (errno) { - case 0 /* WasiErrno.ESUCCESS */: return 'Success'; - case 1 /* WasiErrno.E2BIG */: return 'Argument list too long'; - case 2 /* WasiErrno.EACCES */: return 'Permission denied'; - case 3 /* WasiErrno.EADDRINUSE */: return 'Address in use'; - case 4 /* WasiErrno.EADDRNOTAVAIL */: return 'Address not available'; - case 5 /* WasiErrno.EAFNOSUPPORT */: return 'Address family not supported by protocol'; - case 6 /* WasiErrno.EAGAIN */: return 'Resource temporarily unavailable'; - case 7 /* WasiErrno.EALREADY */: return 'Operation already in progress'; - case 8 /* WasiErrno.EBADF */: return 'Bad file descriptor'; - case 9 /* WasiErrno.EBADMSG */: return 'Bad message'; - case 10 /* WasiErrno.EBUSY */: return 'Resource busy'; - case 11 /* WasiErrno.ECANCELED */: return 'Operation canceled'; - case 12 /* WasiErrno.ECHILD */: return 'No child process'; - case 13 /* WasiErrno.ECONNABORTED */: return 'Connection aborted'; - case 14 /* WasiErrno.ECONNREFUSED */: return 'Connection refused'; - case 15 /* WasiErrno.ECONNRESET */: return 'Connection reset by peer'; - case 16 /* WasiErrno.EDEADLK */: return 'Resource deadlock would occur'; - case 17 /* WasiErrno.EDESTADDRREQ */: return 'Destination address required'; - case 18 /* WasiErrno.EDOM */: return 'Domain error'; - case 19 /* WasiErrno.EDQUOT */: return 'Quota exceeded'; - case 20 /* WasiErrno.EEXIST */: return 'File exists'; - case 21 /* WasiErrno.EFAULT */: return 'Bad address'; - case 22 /* WasiErrno.EFBIG */: return 'File too large'; - case 23 /* WasiErrno.EHOSTUNREACH */: return 'Host is unreachable'; - case 24 /* WasiErrno.EIDRM */: return 'Identifier removed'; - case 25 /* WasiErrno.EILSEQ */: return 'Illegal byte sequence'; - case 26 /* WasiErrno.EINPROGRESS */: return 'Operation in progress'; - case 27 /* WasiErrno.EINTR */: return 'Interrupted system call'; - case 28 /* WasiErrno.EINVAL */: return 'Invalid argument'; - case 29 /* WasiErrno.EIO */: return 'I/O error'; - case 30 /* WasiErrno.EISCONN */: return 'Socket is connected'; - case 31 /* WasiErrno.EISDIR */: return 'Is a directory'; - case 32 /* WasiErrno.ELOOP */: return 'Symbolic link loop'; - case 33 /* WasiErrno.EMFILE */: return 'No file descriptors available'; - case 34 /* WasiErrno.EMLINK */: return 'Too many links'; - case 35 /* WasiErrno.EMSGSIZE */: return 'Message too large'; - case 36 /* WasiErrno.EMULTIHOP */: return 'Multihop attempted'; - case 37 /* WasiErrno.ENAMETOOLONG */: return 'Filename too long'; - case 38 /* WasiErrno.ENETDOWN */: return 'Network is down'; - case 39 /* WasiErrno.ENETRESET */: return 'Connection reset by network'; - case 40 /* WasiErrno.ENETUNREACH */: return 'Network unreachable'; - case 41 /* WasiErrno.ENFILE */: return 'Too many files open in system'; - case 42 /* WasiErrno.ENOBUFS */: return 'No buffer space available'; - case 43 /* WasiErrno.ENODEV */: return 'No such device'; - case 44 /* WasiErrno.ENOENT */: return 'No such file or directory'; - case 45 /* WasiErrno.ENOEXEC */: return 'Exec format error'; - case 46 /* WasiErrno.ENOLCK */: return 'No locks available'; - case 47 /* WasiErrno.ENOLINK */: return 'Link has been severed'; - case 48 /* WasiErrno.ENOMEM */: return 'Out of memory'; - case 49 /* WasiErrno.ENOMSG */: return 'No message of the desired type'; - case 50 /* WasiErrno.ENOPROTOOPT */: return 'Protocol not available'; - case 51 /* WasiErrno.ENOSPC */: return 'No space left on device'; - case 52 /* WasiErrno.ENOSYS */: return 'Function not implemented'; - case 53 /* WasiErrno.ENOTCONN */: return 'Socket not connected'; - case 54 /* WasiErrno.ENOTDIR */: return 'Not a directory'; - case 55 /* WasiErrno.ENOTEMPTY */: return 'Directory not empty'; - case 56 /* WasiErrno.ENOTRECOVERABLE */: return 'State not recoverable'; - case 57 /* WasiErrno.ENOTSOCK */: return 'Not a socket'; - case 58 /* WasiErrno.ENOTSUP */: return 'Not supported'; - case 59 /* WasiErrno.ENOTTY */: return 'Not a tty'; - case 60 /* WasiErrno.ENXIO */: return 'No such device or address'; - case 61 /* WasiErrno.EOVERFLOW */: return 'Value too large for data type'; - case 62 /* WasiErrno.EOWNERDEAD */: return 'Previous owner died'; - case 63 /* WasiErrno.EPERM */: return 'Operation not permitted'; - case 64 /* WasiErrno.EPIPE */: return 'Broken pipe'; - case 65 /* WasiErrno.EPROTO */: return 'Protocol error'; - case 66 /* WasiErrno.EPROTONOSUPPORT */: return 'Protocol not supported'; - case 67 /* WasiErrno.EPROTOTYPE */: return 'Protocol wrong type for socket'; - case 68 /* WasiErrno.ERANGE */: return 'Result not representable'; - case 69 /* WasiErrno.EROFS */: return 'Read-only file system'; - case 70 /* WasiErrno.ESPIPE */: return 'Invalid seek'; - case 71 /* WasiErrno.ESRCH */: return 'No such process'; - case 72 /* WasiErrno.ESTALE */: return 'Stale file handle'; - case 73 /* WasiErrno.ETIMEDOUT */: return 'Operation timed out'; - case 74 /* WasiErrno.ETXTBSY */: return 'Text file busy'; - case 75 /* WasiErrno.EXDEV */: return 'Cross-device link'; - case 76 /* WasiErrno.ENOTCAPABLE */: return 'Capabilities insufficient'; - default: return 'Unknown error'; - } - } - class WasiError extends Error { - constructor(message, errno) { - super(message); - this.errno = errno; - } - getErrorMessage() { - return strerror(this.errno); - } - } - Object.defineProperty(WasiError.prototype, 'name', { - configurable: true, - writable: true, - value: 'WasiError' - }); - - const RIGHTS_ALL = WasiRights.FD_DATASYNC | - WasiRights.FD_READ | - WasiRights.FD_SEEK | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_SYNC | - WasiRights.FD_TELL | - WasiRights.FD_WRITE | - WasiRights.FD_ADVISE | - WasiRights.FD_ALLOCATE | - WasiRights.PATH_CREATE_DIRECTORY | - WasiRights.PATH_CREATE_FILE | - WasiRights.PATH_LINK_SOURCE | - WasiRights.PATH_LINK_TARGET | - WasiRights.PATH_OPEN | - WasiRights.FD_READDIR | - WasiRights.PATH_READLINK | - WasiRights.PATH_RENAME_SOURCE | - WasiRights.PATH_RENAME_TARGET | - WasiRights.PATH_FILESTAT_GET | - WasiRights.PATH_FILESTAT_SET_SIZE | - WasiRights.PATH_FILESTAT_SET_TIMES | - WasiRights.FD_FILESTAT_GET | - WasiRights.FD_FILESTAT_SET_TIMES | - WasiRights.FD_FILESTAT_SET_SIZE | - WasiRights.PATH_SYMLINK | - WasiRights.PATH_UNLINK_FILE | - WasiRights.PATH_REMOVE_DIRECTORY | - WasiRights.POLL_FD_READWRITE | - WasiRights.SOCK_SHUTDOWN | - WasiRights.SOCK_ACCEPT; - const BLOCK_DEVICE_BASE = RIGHTS_ALL; - const BLOCK_DEVICE_INHERITING = RIGHTS_ALL; - const CHARACTER_DEVICE_BASE = RIGHTS_ALL; - const CHARACTER_DEVICE_INHERITING = RIGHTS_ALL; - const REGULAR_FILE_BASE = WasiRights.FD_DATASYNC | - WasiRights.FD_READ | - WasiRights.FD_SEEK | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_SYNC | - WasiRights.FD_TELL | - WasiRights.FD_WRITE | - WasiRights.FD_ADVISE | - WasiRights.FD_ALLOCATE | - WasiRights.FD_FILESTAT_GET | - WasiRights.FD_FILESTAT_SET_SIZE | - WasiRights.FD_FILESTAT_SET_TIMES | - WasiRights.POLL_FD_READWRITE; - const REGULAR_FILE_INHERITING = /*#__PURE__*/ BigInt(0); - const DIRECTORY_BASE = WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_SYNC | - WasiRights.FD_ADVISE | - WasiRights.PATH_CREATE_DIRECTORY | - WasiRights.PATH_CREATE_FILE | - WasiRights.PATH_LINK_SOURCE | - WasiRights.PATH_LINK_TARGET | - WasiRights.PATH_OPEN | - WasiRights.FD_READDIR | - WasiRights.PATH_READLINK | - WasiRights.PATH_RENAME_SOURCE | - WasiRights.PATH_RENAME_TARGET | - WasiRights.PATH_FILESTAT_GET | - WasiRights.PATH_FILESTAT_SET_SIZE | - WasiRights.PATH_FILESTAT_SET_TIMES | - WasiRights.FD_FILESTAT_GET | - WasiRights.FD_FILESTAT_SET_TIMES | - WasiRights.PATH_SYMLINK | - WasiRights.PATH_UNLINK_FILE | - WasiRights.PATH_REMOVE_DIRECTORY | - WasiRights.POLL_FD_READWRITE; - const DIRECTORY_INHERITING = DIRECTORY_BASE | REGULAR_FILE_BASE; - const SOCKET_BASE = (WasiRights.FD_READ | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_WRITE | - WasiRights.FD_FILESTAT_GET | - WasiRights.POLL_FD_READWRITE | - WasiRights.SOCK_SHUTDOWN); - const SOCKET_INHERITING = RIGHTS_ALL; - const TTY_BASE = WasiRights.FD_READ | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_WRITE | - WasiRights.FD_FILESTAT_GET | - WasiRights.POLL_FD_READWRITE; - const TTY_INHERITING = /*#__PURE__*/ BigInt(0); - function getRights(stdio, fd, flags, type) { - const ret = { - base: BigInt(0), - inheriting: BigInt(0) - }; - if (type === 0 /* WasiFileType.UNKNOWN */) { - throw new WasiError('Unknown file type', 28 /* WasiErrno.EINVAL */); - } - switch (type) { - case 4 /* WasiFileType.REGULAR_FILE */: - ret.base = REGULAR_FILE_BASE; - ret.inheriting = REGULAR_FILE_INHERITING; - break; - case 3 /* WasiFileType.DIRECTORY */: - ret.base = DIRECTORY_BASE; - ret.inheriting = DIRECTORY_INHERITING; - break; - case 6 /* WasiFileType.SOCKET_STREAM */: - case 5 /* WasiFileType.SOCKET_DGRAM */: - ret.base = SOCKET_BASE; - ret.inheriting = SOCKET_INHERITING; - break; - case 2 /* WasiFileType.CHARACTER_DEVICE */: - if (stdio.indexOf(fd) !== -1) { - ret.base = TTY_BASE; - ret.inheriting = TTY_INHERITING; - } - else { - ret.base = CHARACTER_DEVICE_BASE; - ret.inheriting = CHARACTER_DEVICE_INHERITING; - } - break; - case 1 /* WasiFileType.BLOCK_DEVICE */: - ret.base = BLOCK_DEVICE_BASE; - ret.inheriting = BLOCK_DEVICE_INHERITING; - break; - default: - ret.base = BigInt(0); - ret.inheriting = BigInt(0); - } - /* Disable read/write bits depending on access mode. */ - const read_or_write_only = flags & (0 | 1 | 2); - if (read_or_write_only === 0) { - ret.base &= ~WasiRights.FD_WRITE; - } - else if (read_or_write_only === 1) { - ret.base &= ~WasiRights.FD_READ; - } - return ret; - } - - function concatBuffer(buffers, size) { - let total = 0; - if (typeof size === 'number' && size >= 0) { - total = size; - } - else { - for (let i = 0; i < buffers.length; i++) { - const buffer = buffers[i]; - total += buffer.length; - } - } - let pos = 0; - const ret = new Uint8Array(total); - for (let i = 0; i < buffers.length; i++) { - const buffer = buffers[i]; - ret.set(buffer, pos); - pos += buffer.length; - } - return ret; - } - class FileDescriptor { - constructor(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { - this.id = id; - this.fd = fd; - this.path = path; - this.realPath = realPath; - this.type = type; - this.rightsBase = rightsBase; - this.rightsInheriting = rightsInheriting; - this.preopen = preopen; - this.pos = BigInt(0); - this.size = BigInt(0); - } - seek(offset, whence) { - if (whence === 0 /* WasiWhence.SET */) { - this.pos = BigInt(offset); - } - else if (whence === 1 /* WasiWhence.CUR */) { - this.pos += BigInt(offset); - } - else if (whence === 2 /* WasiWhence.END */) { - this.pos = BigInt(this.size) - BigInt(offset); - } - else { - throw new WasiError('Unknown whence', 29 /* WasiErrno.EIO */); - } - return this.pos; - } - } - class StandardOutput extends FileDescriptor { - constructor(log, id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { - super(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen); - this._log = log; - this._buf = null; - } - write(buffer) { - const originalBuffer = buffer; - if (this._buf) { - buffer = concatBuffer([this._buf, buffer]); - this._buf = null; - } - if (buffer.indexOf(10) === -1) { - this._buf = buffer; - return originalBuffer.byteLength; - } - let written = 0; - let lastBegin = 0; - let index; - while ((index = buffer.indexOf(10, written)) !== -1) { - const str = new TextDecoder().decode(buffer.subarray(lastBegin, index)); - this._log(str); - written += index - lastBegin + 1; - lastBegin = index + 1; - } - if (written < buffer.length) { - this._buf = buffer.slice(written); - } - return originalBuffer.byteLength; - } - } - function toFileType(stat) { - if (stat.isBlockDevice()) - return 1 /* WasiFileType.BLOCK_DEVICE */; - if (stat.isCharacterDevice()) - return 2 /* WasiFileType.CHARACTER_DEVICE */; - if (stat.isDirectory()) - return 3 /* WasiFileType.DIRECTORY */; - if (stat.isSocket()) - return 6 /* WasiFileType.SOCKET_STREAM */; - if (stat.isFile()) - return 4 /* WasiFileType.REGULAR_FILE */; - if (stat.isSymbolicLink()) - return 7 /* WasiFileType.SYMBOLIC_LINK */; - return 0 /* WasiFileType.UNKNOWN */; - } - function toFileStat(view, buf, stat) { - view.setBigUint64(buf, stat.dev, true); - view.setBigUint64(buf + 8, stat.ino, true); - view.setBigUint64(buf + 16, BigInt(toFileType(stat)), true); - view.setBigUint64(buf + 24, stat.nlink, true); - view.setBigUint64(buf + 32, stat.size, true); - view.setBigUint64(buf + 40, stat.atimeMs * BigInt(1000000), true); - view.setBigUint64(buf + 48, stat.mtimeMs * BigInt(1000000), true); - view.setBigUint64(buf + 56, stat.ctimeMs * BigInt(1000000), true); - } - class FileDescriptorTable { - constructor(options) { - this.used = 0; - this.size = options.size; - this.fds = Array(options.size); - this.stdio = [options.in, options.out, options.err]; - this.print = options.print; - this.printErr = options.printErr; - this.insertStdio(options.in, 0, ''); - this.insertStdio(options.out, 1, ''); - this.insertStdio(options.err, 2, ''); - } - insertStdio(fd, expected, name) { - const type = 2 /* WasiFileType.CHARACTER_DEVICE */; - const { base, inheriting } = getRights(this.stdio, fd, 2 /* FileControlFlag.O_RDWR */, type); - const wrap = this.insert(fd, name, name, type, base, inheriting, 0); - if (wrap.id !== expected) { - throw new WasiError(`id: ${wrap.id} !== expected: ${expected}`, 8 /* WasiErrno.EBADF */); - } - return wrap; - } - insert(fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen) { - var _a, _b; - let index = -1; - if (this.used >= this.size) { - const newSize = this.size * 2; - this.fds.length = newSize; - index = this.size; - this.size = newSize; - } - else { - for (let i = 0; i < this.size; ++i) { - if (this.fds[i] == null) { - index = i; - break; - } - } - } - let entry; - if (mappedPath === '') { - entry = new StandardOutput((_a = this.print) !== null && _a !== void 0 ? _a : console.log, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - else if (mappedPath === '') { - entry = new StandardOutput((_b = this.printErr) !== null && _b !== void 0 ? _b : console.error, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - else { - entry = new FileDescriptor(index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - this.fds[index] = entry; - this.used++; - return entry; - } - get(id, base, inheriting) { - if (id >= this.size) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - const entry = this.fds[id]; - if (!entry || entry.id !== id) { - throw new WasiError('Bad file descriptor', 8 /* WasiErrno.EBADF */); - } - /* Validate that the fd has the necessary rights. */ - if ((~entry.rightsBase & base) !== BigInt(0) || (~entry.rightsInheriting & inheriting) !== BigInt(0)) { - throw new WasiError('Capabilities insufficient', 76 /* WasiErrno.ENOTCAPABLE */); - } - return entry; - } - remove(id) { - if (id >= this.size) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - const entry = this.fds[id]; - if (!entry || entry.id !== id) { - throw new WasiError('Bad file descriptor', 8 /* WasiErrno.EBADF */); - } - this.fds[id] = undefined; - this.used--; - } - } - class SyncTable extends FileDescriptorTable { - constructor(options) { - super(options); - this.fs = options.fs; - } - getFileTypeByFd(fd) { - const stats = this.fs.fstatSync(fd, { bigint: true }); - return toFileType(stats); - } - insertPreopen(fd, mappedPath, realPath) { - const type = this.getFileTypeByFd(fd); - if (type !== 3 /* WasiFileType.DIRECTORY */) { - throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, 54 /* WasiErrno.ENOTDIR */); - } - const result = getRights(this.stdio, fd, 0, type); - return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); - } - renumber(dst, src) { - if (dst === src) - return; - if (dst >= this.size || src >= this.size) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - const dstEntry = this.fds[dst]; - const srcEntry = this.fds[src]; - if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - this.fs.closeSync(dstEntry.fd); - this.fds[dst] = this.fds[src]; - this.fds[dst].id = dst; - this.fds[src] = undefined; - this.used--; - } - } - class AsyncTable extends FileDescriptorTable { - // eslint-disable-next-line @typescript-eslint/no-useless-constructor - constructor(options) { - super(options); - } - async getFileTypeByFd(fd) { - const stats = await fd.stat({ bigint: true }); - return toFileType(stats); - } - async insertPreopen(fd, mappedPath, realPath) { - const type = await this.getFileTypeByFd(fd); - if (type !== 3 /* WasiFileType.DIRECTORY */) { - throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, 54 /* WasiErrno.ENOTDIR */); - } - const result = getRights(this.stdio, fd.fd, 0, type); - return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); - } - async renumber(dst, src) { - if (dst === src) - return; - if (dst >= this.size || src >= this.size) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - const dstEntry = this.fds[dst]; - const srcEntry = this.fds[src]; - if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { - throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); - } - await dstEntry.fd.close(); - this.fds[dst] = this.fds[src]; - this.fds[dst].id = dst; - this.fds[src] = undefined; - this.used--; - } - } - - /** @public */ - const WebAssemblyMemory = /*#__PURE__*/ (function () { return _WebAssembly.Memory; })(); - /** @public */ - class Memory extends WebAssemblyMemory { - // eslint-disable-next-line @typescript-eslint/no-useless-constructor - constructor(descriptor) { - super(descriptor); - } - get HEAP8() { return new Int8Array(super.buffer); } - get HEAPU8() { return new Uint8Array(super.buffer); } - get HEAP16() { return new Int16Array(super.buffer); } - get HEAPU16() { return new Uint16Array(super.buffer); } - get HEAP32() { return new Int32Array(super.buffer); } - get HEAPU32() { return new Uint32Array(super.buffer); } - get HEAP64() { return new BigInt64Array(super.buffer); } - get HEAPU64() { return new BigUint64Array(super.buffer); } - get HEAPF32() { return new Float32Array(super.buffer); } - get HEAPF64() { return new Float64Array(super.buffer); } - get view() { return new DataView(super.buffer); } - } - /** @public */ - function extendMemory(memory) { - if (Object.getPrototypeOf(memory) === _WebAssembly.Memory.prototype) { - Object.setPrototypeOf(memory, Memory.prototype); - } - return memory; - } - - function checkWebAssemblyFunction() { - const WebAssemblyFunction = _WebAssembly.Function; - if (typeof WebAssemblyFunction !== 'function') { - throw new Error('WebAssembly.Function is not supported in this environment.' + - ' If you are using V8 based browser like Chrome, try to specify' + - ' --js-flags="--wasm-staging --experimental-wasm-stack-switching"'); - } - return WebAssemblyFunction; - } - /** @public */ - function wrapAsyncImport(f, parameterType, returnType) { - const WebAssemblyFunction = checkWebAssemblyFunction(); - if (typeof f !== 'function') { - throw new TypeError('Function required'); - } - const parameters = parameterType.slice(0); - parameters.unshift('externref'); - return new WebAssemblyFunction({ parameters, results: returnType }, f, { suspending: 'first' }); - } - /** @public */ - function wrapAsyncExport(f) { - const WebAssemblyFunction = checkWebAssemblyFunction(); - if (typeof f !== 'function') { - throw new TypeError('Function required'); - } - return new WebAssemblyFunction({ parameters: [...WebAssemblyFunction.type(f).parameters.slice(1)], results: ['externref'] }, f, { promising: 'first' }); - } - /** @public */ - function wrapExports(exports, needWrap) { - return wrapInstanceExports(exports, (exportValue, name) => { - let ignore = typeof exportValue !== 'function'; - if (Array.isArray(needWrap)) { - ignore = ignore || (needWrap.indexOf(name) === -1); - } - return ignore ? exportValue : wrapAsyncExport(exportValue); - }); - } - - function copyMemory(targets, src) { - if (targets.length === 0 || src.length === 0) - return 0; - let copied = 0; - let left = src.length - copied; - for (let i = 0; i < targets.length; ++i) { - const target = targets[i]; - if (left < target.length) { - target.set(src.subarray(copied, copied + left), 0); - copied += left; - left = 0; - return copied; - } - target.set(src.subarray(copied, copied + target.length), 0); - copied += target.length; - left -= target.length; - } - return copied; - } - const _memory = new WeakMap(); - const _wasi = new WeakMap(); - const _fs = new WeakMap(); - function getMemory(wasi) { - return _memory.get(wasi); - } - function getFs(wasi) { - const fs = _fs.get(wasi); - if (!fs) - throw new Error('filesystem is unavailable'); - return fs; - } - function handleError(err) { - if (err instanceof WasiError) { - { - console.warn(err); - } - return err.errno; - } - switch (err.code) { - case 'ENOENT': return 44 /* WasiErrno.ENOENT */; - case 'EBADF': return 8 /* WasiErrno.EBADF */; - case 'EINVAL': return 28 /* WasiErrno.EINVAL */; - case 'EPERM': return 63 /* WasiErrno.EPERM */; - case 'EPROTO': return 65 /* WasiErrno.EPROTO */; - case 'EEXIST': return 20 /* WasiErrno.EEXIST */; - case 'ENOTDIR': return 54 /* WasiErrno.ENOTDIR */; - case 'EMFILE': return 33 /* WasiErrno.EMFILE */; - case 'EACCES': return 2 /* WasiErrno.EACCES */; - case 'EISDIR': return 31 /* WasiErrno.EISDIR */; - case 'ENOTEMPTY': return 55 /* WasiErrno.ENOTEMPTY */; - case 'ENOSYS': return 52 /* WasiErrno.ENOSYS */; - } - throw err; - } - function defineName(name, f) { - Object.defineProperty(f, 'name', { value: name }); - return f; - } - function tryCall(f, wasi, args) { - let r; - try { - r = f.apply(wasi, args); - } - catch (err) { - return handleError(err); - } - if (isPromiseLike(r)) { - return r.then(_ => _, handleError); - } - return r; - } - function syscallWrap(self, name, f) { - let debug = false; - const NODE_DEBUG_NATIVE = (() => { - try { - return "wasi"; - } - catch (_) { - return undefined; - } - })(); - if (typeof NODE_DEBUG_NATIVE === 'string' && NODE_DEBUG_NATIVE.split(',').includes('wasi')) { - debug = true; - } - return debug - ? defineName(name, function () { - const args = Array.prototype.slice.call(arguments); - let debugArgs = [`${name}(${Array.from({ length: arguments.length }).map(() => '%d').join(', ')})`]; - debugArgs = debugArgs.concat(args); - console.debug.apply(console, debugArgs); - return tryCall(f, self, args); - }) - : defineName(name, function () { - return tryCall(f, self, arguments); - }); - } - function resolvePathSync(fs, fileDescriptor, path, flags) { - let resolvedPath = resolve(fileDescriptor.realPath, path); - if ((flags & 1) === 1) { - try { - resolvedPath = fs.readlinkSync(resolvedPath); - } - catch (err) { - if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { - throw err; - } - } - } - return resolvedPath; - } - async function resolvePathAsync(fs, fileDescriptor, path, flags) { - let resolvedPath = resolve(fileDescriptor.realPath, path); - if ((flags & 1) === 1) { - try { - resolvedPath = await fs.promises.readlink(resolvedPath); - } - catch (err) { - if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { - throw err; - } - } - } - return resolvedPath; - } - // eslint-disable-next-line spaced-comment - const encoder = /*#__PURE__*/ new TextEncoder(); - // eslint-disable-next-line spaced-comment - const decoder = /*#__PURE__*/ new TextDecoder(); - const INT64_MAX = (BigInt(1) << BigInt(63)) - BigInt(1); - function readStdin() { - const value = window.prompt(); - if (value === null) - return new Uint8Array(); - const buffer = new TextEncoder().encode(value + '\n'); - return buffer; - } - function validateFstFlagsOrReturn(flags) { - return (Boolean((flags) & ~(1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */ | - 4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)) || - ((flags) & (1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */)) === - (1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */) || - ((flags) & (4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)) === - (4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)); - } - class WASI$1 { - constructor(args, env, fds, asyncFs, fs, asyncify) { - this.args_get = syscallWrap(this, 'args_get', function (argv, argv_buf) { - argv = Number(argv); - argv_buf = Number(argv_buf); - if (argv === 0 || argv_buf === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const args = wasi.args; - for (let i = 0; i < args.length; ++i) { - const arg = args[i]; - view.setInt32(argv, argv_buf, true); - argv += 4; - const data = encoder.encode(arg + '\0'); - HEAPU8.set(data, argv_buf); - argv_buf += data.length; - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.args_sizes_get = syscallWrap(this, 'args_sizes_get', function (argc, argv_buf_size) { - argc = Number(argc); - argv_buf_size = Number(argv_buf_size); - if (argc === 0 || argv_buf_size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - const wasi = _wasi.get(this); - const args = wasi.args; - view.setUint32(argc, args.length, true); - view.setUint32(argv_buf_size, encoder.encode(args.join('\0') + '\0').length, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.environ_get = syscallWrap(this, 'environ_get', function (environ, environ_buf) { - environ = Number(environ); - environ_buf = Number(environ_buf); - if (environ === 0 || environ_buf === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const env = wasi.env; - for (let i = 0; i < env.length; ++i) { - const pair = env[i]; - view.setInt32(environ, environ_buf, true); - environ += 4; - const data = encoder.encode(pair + '\0'); - HEAPU8.set(data, environ_buf); - environ_buf += data.length; - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.environ_sizes_get = syscallWrap(this, 'environ_sizes_get', function (len, buflen) { - len = Number(len); - buflen = Number(buflen); - if (len === 0 || buflen === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - const wasi = _wasi.get(this); - view.setUint32(len, wasi.env.length, true); - view.setUint32(buflen, encoder.encode(wasi.env.join('\0') + '\0').length, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.clock_res_get = syscallWrap(this, 'clock_res_get', function (id, resolution) { - resolution = Number(resolution); - if (resolution === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - switch (id) { - case 0 /* WasiClockid.REALTIME */: - view.setBigUint64(resolution, BigInt(1000000), true); - return 0 /* WasiErrno.ESUCCESS */; - case 1 /* WasiClockid.MONOTONIC */: - case 2 /* WasiClockid.PROCESS_CPUTIME_ID */: - case 3 /* WasiClockid.THREAD_CPUTIME_ID */: - view.setBigUint64(resolution, BigInt(1000), true); - return 0 /* WasiErrno.ESUCCESS */; - default: return 28 /* WasiErrno.EINVAL */; - } - }); - this.clock_time_get = syscallWrap(this, 'clock_time_get', function (id, _percision, time) { - time = Number(time); - if (time === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - switch (id) { - case 0 /* WasiClockid.REALTIME */: - view.setBigUint64(time, BigInt(Date.now()) * BigInt(1000000), true); - return 0 /* WasiErrno.ESUCCESS */; - case 1 /* WasiClockid.MONOTONIC */: - case 2 /* WasiClockid.PROCESS_CPUTIME_ID */: - case 3 /* WasiClockid.THREAD_CPUTIME_ID */: { - const t = performance.now() / 1000; - const s = Math.trunc(t); - const ms = Math.floor((t - s) * 1000); - const result = BigInt(s) * BigInt(1000000000) + BigInt(ms) * BigInt(1000000); - view.setBigUint64(time, result, true); - return 0 /* WasiErrno.ESUCCESS */; - } - default: return 28 /* WasiErrno.EINVAL */; - } - }); - this.fd_advise = syscallWrap(this, 'fd_advise', function (_fd, _offset, _len, _advice) { - return 52 /* WasiErrno.ENOSYS */; - }); - this.fd_fdstat_get = syscallWrap(this, 'fd_fdstat_get', function (fd, fdstat) { - fdstat = Number(fdstat); - if (fdstat === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - const { view } = getMemory(this); - view.setUint16(fdstat, fileDescriptor.type, true); - view.setUint16(fdstat + 2, 0, true); - view.setBigUint64(fdstat + 8, fileDescriptor.rightsBase, true); - view.setBigUint64(fdstat + 16, fileDescriptor.rightsInheriting, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_fdstat_set_flags = syscallWrap(this, 'fd_fdstat_set_flags', function (_fd, _flags) { - return 52 /* WasiErrno.ENOSYS */; - }); - this.fd_fdstat_set_rights = syscallWrap(this, 'fd_fdstat_set_rights', function (fd, rightsBase, rightsInheriting) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - if ((rightsBase | fileDescriptor.rightsBase) > fileDescriptor.rightsBase) { - return 76 /* WasiErrno.ENOTCAPABLE */; - } - if ((rightsInheriting | fileDescriptor.rightsInheriting) > - fileDescriptor.rightsInheriting) { - return 76 /* WasiErrno.ENOTCAPABLE */; - } - fileDescriptor.rightsBase = rightsBase; - fileDescriptor.rightsInheriting = rightsInheriting; - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_prestat_get = syscallWrap(this, 'fd_prestat_get', function (fd, prestat) { - prestat = Number(prestat); - if (prestat === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let fileDescriptor; - try { - fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - } - catch (err) { - if (err instanceof WasiError) - return err.errno; - throw err; - } - if (fileDescriptor.preopen !== 1) - return 28 /* WasiErrno.EINVAL */; - const { view } = getMemory(this); - // preopen type is dir(0) - view.setUint32(prestat, 0, true); - view.setUint32(prestat + 4, encoder.encode(fileDescriptor.path).length, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_prestat_dir_name = syscallWrap(this, 'fd_prestat_dir_name', function (fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - if (fileDescriptor.preopen !== 1) - return 8 /* WasiErrno.EBADF */; - const buffer = encoder.encode(fileDescriptor.path); - const size = buffer.length; - if (size > path_len) - return 42 /* WasiErrno.ENOBUFS */; - const { HEAPU8 } = getMemory(this); - HEAPU8.set(buffer, path); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_seek = syscallWrap(this, 'fd_seek', function (fd, offset, whence, newOffset) { - newOffset = Number(newOffset); - if (newOffset === 0) { - return 28 /* WasiErrno.EINVAL */; - } - if (fd === 0 || fd === 1 || fd === 2) - return 0 /* WasiErrno.ESUCCESS */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SEEK, BigInt(0)); - const r = fileDescriptor.seek(offset, whence); - const { view } = getMemory(this); - view.setBigUint64(newOffset, r, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.fd_tell = syscallWrap(this, 'fd_tell', function (fd, offset) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_TELL, BigInt(0)); - const pos = BigInt(fileDescriptor.pos); - const { view } = getMemory(this); - view.setBigUint64(Number(offset), pos, true); - return 0 /* WasiErrno.ESUCCESS */; - }); - this.poll_oneoff = syscallWrap(this, 'poll_oneoff', function (in_ptr, out_ptr, nsubscriptions, nevents) { - in_ptr = Number(in_ptr); - out_ptr = Number(out_ptr); - nevents = Number(nevents); - nsubscriptions = Number(nsubscriptions); - nsubscriptions = nsubscriptions >>> 0; - if (in_ptr === 0 || out_ptr === 0 || nsubscriptions === 0 || nevents === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { view } = getMemory(this); - view.setUint32(nevents, 0, true); - let i = 0; - let timer_userdata = BigInt(0); - let cur_timeout = BigInt(0); - let has_timeout = 0; - let min_timeout = BigInt(0); - let sub; - const subscriptions = Array(nsubscriptions); - for (i = 0; i < nsubscriptions; i++) { - sub = in_ptr + i * 48; - const userdata = view.getBigUint64(sub, true); - const type = view.getUint8(sub + 8); - const clockIdOrFd = view.getUint32(sub + 16, true); - const timeout = view.getBigUint64(sub + 24, true); - const precision = view.getBigUint64(sub + 32, true); - const flags = view.getUint16(sub + 40, true); - subscriptions[i] = { - userdata, - type, - u: { - clock: { - clock_id: clockIdOrFd, - timeout, - precision, - flags - }, - fd_readwrite: { - fd: clockIdOrFd - } - } - }; - } - const fdevents = []; - for (i = 0; i < nsubscriptions; i++) { - sub = subscriptions[i]; - switch (sub.type) { - case 0 /* WasiEventType.CLOCK */: { - if (sub.u.clock.flags === 1 /* WasiSubclockflags.ABSTIME */) { - /* Convert absolute time to relative delay. */ - const now = BigInt(Date.now()) * BigInt(1000000); - cur_timeout = sub.u.clock.timeout - now; - } - else { - cur_timeout = sub.u.clock.timeout; - } - if (has_timeout === 0 || cur_timeout < min_timeout) { - min_timeout = cur_timeout; - timer_userdata = sub.userdata; - has_timeout = 1; - } - break; - } - case 1 /* WasiEventType.FD_READ */: - case 2 /* WasiEventType.FD_WRITE */: - fdevents.push(sub); - break; - default: return 28 /* WasiErrno.EINVAL */; - } - } - if (fdevents.length > 0) { - for (i = 0; i < fdevents.length; i++) { - const fdevent = fdevents[i]; - const event = out_ptr + 32 * i; - view.setBigUint64(event, fdevent.userdata, true); - view.setUint32(event + 8, 52 /* WasiErrno.ENOSYS */, true); - view.setUint32(event + 12, fdevent.type, true); - view.setBigUint64(event + 16, BigInt(0), true); - view.setUint16(event + 24, 0, true); - view.setUint32(nevents, 1, true); - } - view.setUint32(nevents, fdevents.length, true); - return 0 /* WasiErrno.ESUCCESS */; - } - if (has_timeout) { - const delay = Number(min_timeout / BigInt(1000000)); - // if (isMainThread || typeof SharedArrayBuffer !== 'function') { - sleepBreakIf(delay, () => false); - // } else { - // const buf = new SharedArrayBuffer(4) - // const arr = new Int32Array(buf) - // postMsg({ - // __tybys_wasm_util_wasi__: { - // type: 'set-timeout', - // payload: { - // buffer: buf, - // delay - // } - // } - // }) - // Atomics.wait(arr, 0, 0) - // } - const event = out_ptr; - view.setBigUint64(event, timer_userdata, true); - view.setUint32(event + 8, 0 /* WasiErrno.ESUCCESS */, true); - view.setUint32(event + 12, 0 /* WasiEventType.CLOCK */, true); - view.setUint32(nevents, 1, true); - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.proc_exit = syscallWrap(this, 'proc_exit', function (rval) { - if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) { - process.exit(rval); - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.proc_raise = syscallWrap(this, 'proc_raise', function (_sig) { - return 52 /* WasiErrno.ENOSYS */; - }); - this.sched_yield = syscallWrap(this, 'sched_yield', function () { - return 0 /* WasiErrno.ESUCCESS */; - }); - this.random_get = typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function' - ? syscallWrap(this, 'random_get', function (buf, buf_len) { - buf = Number(buf); - if (buf === 0) { - return 28 /* WasiErrno.EINVAL */; - } - buf_len = Number(buf_len); - const { HEAPU8, view } = getMemory(this); - if ((typeof SharedArrayBuffer === 'function' && HEAPU8.buffer instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(HEAPU8.buffer) === '[object SharedArrayBuffer]')) { - for (let i = buf; i < buf + buf_len; ++i) { - view.setUint8(i, Math.floor(Math.random() * 256)); - } - return 0 /* WasiErrno.ESUCCESS */; - } - let pos; - const stride = 65536; - for (pos = 0; pos + stride < buf_len; pos += stride) { - crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + pos + stride)); - } - crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + buf_len)); - return 0 /* WasiErrno.ESUCCESS */; - }) - : syscallWrap(this, 'random_get', function (buf, buf_len) { - buf = Number(buf); - if (buf === 0) { - return 28 /* WasiErrno.EINVAL */; - } - buf_len = Number(buf_len); - const { view } = getMemory(this); - for (let i = buf; i < buf + buf_len; ++i) { - view.setUint8(i, Math.floor(Math.random() * 256)); - } - return 0 /* WasiErrno.ESUCCESS */; - }); - this.sock_recv = syscallWrap(this, 'sock_recv', function () { - return 58 /* WasiErrno.ENOTSUP */; - }); - this.sock_send = syscallWrap(this, 'sock_send', function () { - return 58 /* WasiErrno.ENOTSUP */; - }); - this.sock_shutdown = syscallWrap(this, 'sock_shutdown', function () { - return 58 /* WasiErrno.ENOTSUP */; - }); - this.sock_accept = syscallWrap(this, 'sock_accept', function () { - return 58 /* WasiErrno.ENOTSUP */; - }); - _wasi.set(this, { - fds, - args, - env - }); - if (fs) - _fs.set(this, fs); - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - function defineImport(name, syncVersion, asyncVersion, parameterType, returnType) { - if (asyncFs) { - if (asyncify) { - _this[name] = asyncify.wrapImportFunction(syscallWrap(_this, name, asyncVersion)); - } - else { - _this[name] = wrapAsyncImport(syscallWrap(_this, name, asyncVersion), parameterType, returnType); - } - } - else { - _this[name] = syscallWrap(_this, name, syncVersion); - } - } - defineImport('fd_allocate', function fd_allocate(fd, offset, len) { - const wasi = _wasi.get(this); - const fs = getFs(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); - const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); - if (stat.size < offset + len) { - fs.ftruncateSync(fileDescriptor.fd, Number(offset + len)); - } - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_allocate(fd, offset, len) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); - const h = fileDescriptor.fd; - const stat = await h.stat({ bigint: true }); - if (stat.size < offset + len) { - await h.truncate(Number(offset + len)); - } - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i64', 'f64'], ['i32']); - defineImport('fd_close', function fd_close(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - const fs = getFs(this); - fs.closeSync(fileDescriptor.fd); - wasi.fds.remove(fd); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_close(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - await fileDescriptor.fd.close(); - wasi.fds.remove(fd); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32'], ['i32']); - defineImport('fd_datasync', function fd_datasync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); - const fs = getFs(this); - fs.fdatasyncSync(fileDescriptor.fd); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_datasync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); - await fileDescriptor.fd.datasync(); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32'], ['i32']); - defineImport('fd_filestat_get', function fd_filestat_get(fd, buf) { - buf = Number(buf); - if (buf === 0) - return 28 /* WasiErrno.EINVAL */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); - const fs = getFs(this); - const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); - const { view } = getMemory(this); - toFileStat(view, buf, stat); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_filestat_get(fd, buf) { - buf = Number(buf); - if (buf === 0) - return 28 /* WasiErrno.EINVAL */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); - const h = fileDescriptor.fd; - const stat = await h.stat({ bigint: true }); - const { view } = getMemory(this); - toFileStat(view, buf, stat); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32'], ['i32']); - defineImport('fd_filestat_set_size', function fd_filestat_set_size(fd, size) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); - const fs = getFs(this); - fs.ftruncateSync(fileDescriptor.fd, Number(size)); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_filestat_set_size(fd, size) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); - const h = fileDescriptor.fd; - await h.truncate(Number(size)); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i64'], ['i32']); - function fdFilestatGetTimes(fd, atim, mtim, flags) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_TIMES, BigInt(0)); - if ((flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { - atim = BigInt(Date.now() * 1000000); - } - if ((flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { - mtim = BigInt(Date.now() * 1000000); - } - return { fileDescriptor, atim, mtim }; - } - defineImport('fd_filestat_set_times', function fd_filestat_set_times(fd, atim, mtim, flags) { - if (validateFstFlagsOrReturn(flags)) { - return 28 /* WasiErrno.EINVAL */; - } - const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); - const fs = getFs(this); - fs.futimesSync(fileDescriptor.fd, Number(atimRes), Number(mtimRes)); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_filestat_set_times(fd, atim, mtim, flags) { - if (validateFstFlagsOrReturn(flags)) { - return 28 /* WasiErrno.EINVAL */; - } - const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); - const h = fileDescriptor.fd; - await h.utimes(Number(atimRes), Number(mtimRes)); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i64', 'i64', 'i32'], ['i32']); - defineImport('fd_pread', function fd_pread(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let nread = 0; - const buffer = (() => { - try { - return new Uint8Array(new SharedArrayBuffer(totalSize)); - } - catch (_) { - return new Uint8Array(totalSize); - } - })(); - buffer._isBuffer = true; - const fs = getFs(this); - const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - view.setUint32(size, nread, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function (fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let nread = 0; - const buffer = new Uint8Array(totalSize); - buffer._isBuffer = true; - const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(offset)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - view.setUint32(size, nread, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_pwrite', function fd_pwrite(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - const fs = getFs(this); - const nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); - view.setUint32(size, nwritten, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_pwrite(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - const { bytesWritten } = await fileDescriptor.fd.write(buffer, 0, buffer.length, Number(offset)); - view.setUint32(size, bytesWritten, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_read', function fd_read(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let buffer; - let nread = 0; - if (fd === 0) { - if (typeof window === 'undefined' || typeof window.prompt !== 'function') { - return 58 /* WasiErrno.ENOTSUP */; - } - buffer = readStdin(); - nread = buffer ? copyMemory(ioVecs, buffer) : 0; - } - else { - buffer = (() => { - try { - return new Uint8Array(new SharedArrayBuffer(totalSize)); - } - catch (_) { - return new Uint8Array(totalSize); - } - })(); - buffer._isBuffer = true; - const fs = getFs(this); - const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - fileDescriptor.pos += BigInt(nread); - } - view.setUint32(size, nread, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_read(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let buffer; - let nread = 0; - if (fd === 0) { - if (typeof window === 'undefined' || typeof window.prompt !== 'function') { - return 58 /* WasiErrno.ENOTSUP */; - } - buffer = readStdin(); - nread = buffer ? copyMemory(ioVecs, buffer) : 0; - } - else { - buffer = new Uint8Array(totalSize); - buffer._isBuffer = true; - const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(fileDescriptor.pos)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - fileDescriptor.pos += BigInt(nread); - } - view.setUint32(size, nread, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('fd_readdir', function fd_readdir(fd, buf, buf_len, cookie, bufused) { - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (buf === 0 || bufused === 0) - return 0 /* WasiErrno.ESUCCESS */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); - const fs = getFs(this); - const entries = fs.readdirSync(fileDescriptor.realPath, { withFileTypes: true }); - const { HEAPU8, view } = getMemory(this); - let bufferUsed = 0; - for (let i = Number(cookie); i < entries.length; i++) { - const nameData = encoder.encode(entries[i].name); - const entryInfo = fs.statSync(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); - const entryData = new Uint8Array(24 + nameData.byteLength); - const entryView = new DataView(entryData.buffer); - entryView.setBigUint64(0, BigInt(i + 1), true); - entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); - entryView.setUint32(16, nameData.byteLength, true); - let type; - if (entries[i].isFile()) { - type = 4 /* WasiFileType.REGULAR_FILE */; - } - else if (entries[i].isDirectory()) { - type = 3 /* WasiFileType.DIRECTORY */; - } - else if (entries[i].isSymbolicLink()) { - type = 7 /* WasiFileType.SYMBOLIC_LINK */; - } - else if (entries[i].isCharacterDevice()) { - type = 2 /* WasiFileType.CHARACTER_DEVICE */; - } - else if (entries[i].isBlockDevice()) { - type = 1 /* WasiFileType.BLOCK_DEVICE */; - } - else if (entries[i].isSocket()) { - type = 6 /* WasiFileType.SOCKET_STREAM */; - } - else { - type = 0 /* WasiFileType.UNKNOWN */; - } - entryView.setUint8(20, type); - entryData.set(nameData, 24); - const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); - HEAPU8.set(data, buf + bufferUsed); - bufferUsed += data.byteLength; - } - view.setUint32(bufused, bufferUsed, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_readdir(fd, buf, buf_len, cookie, bufused) { - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (buf === 0 || bufused === 0) - return 0 /* WasiErrno.ESUCCESS */; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); - const fs = getFs(this); - const entries = await fs.promises.readdir(fileDescriptor.realPath, { withFileTypes: true }); - const { HEAPU8, view } = getMemory(this); - let bufferUsed = 0; - for (let i = Number(cookie); i < entries.length; i++) { - const nameData = encoder.encode(entries[i].name); - const entryInfo = await fs.promises.stat(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); - const entryData = new Uint8Array(24 + nameData.byteLength); - const entryView = new DataView(entryData.buffer); - entryView.setBigUint64(0, BigInt(i + 1), true); - entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); - entryView.setUint32(16, nameData.byteLength, true); - let type; - if (entries[i].isFile()) { - type = 4 /* WasiFileType.REGULAR_FILE */; - } - else if (entries[i].isDirectory()) { - type = 3 /* WasiFileType.DIRECTORY */; - } - else if (entries[i].isSymbolicLink()) { - type = 7 /* WasiFileType.SYMBOLIC_LINK */; - } - else if (entries[i].isCharacterDevice()) { - type = 2 /* WasiFileType.CHARACTER_DEVICE */; - } - else if (entries[i].isBlockDevice()) { - type = 1 /* WasiFileType.BLOCK_DEVICE */; - } - else if (entries[i].isSocket()) { - type = 6 /* WasiFileType.SOCKET_STREAM */; - } - else { - type = 0 /* WasiFileType.UNKNOWN */; - } - entryView.setUint8(20, type); - entryData.set(nameData, 24); - const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); - HEAPU8.set(data, buf + bufferUsed); - bufferUsed += data.byteLength; - } - view.setUint32(bufused, bufferUsed, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_renumber', function fd_renumber(from, to) { - const wasi = _wasi.get(this); - wasi.fds.renumber(to, from); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_renumber(from, to) { - const wasi = _wasi.get(this); - await wasi.fds.renumber(to, from); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32'], ['i32']); - defineImport('fd_sync', function fd_sync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); - const fs = getFs(this); - fs.fsyncSync(fileDescriptor.fd); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_sync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); - await fileDescriptor.fd.sync(); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32'], ['i32']); - defineImport('fd_write', function fd_write(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - let nwritten; - if (fd === 1 || fd === 2) { - nwritten = fileDescriptor.write(buffer); - } - else { - const fs = getFs(this); - nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); - fileDescriptor.pos += BigInt(nwritten); - } - view.setUint32(size, nwritten, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function fd_write(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return 0 /* WasiErrno.ESUCCESS */; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - let nwritten; - if (fd === 1 || fd === 2) { - nwritten = fileDescriptor.write(buffer); - } - else { - nwritten = await (await (fileDescriptor.fd.write(buffer, 0, buffer.length, Number(fileDescriptor.pos)))).bytesWritten; - fileDescriptor.pos += BigInt(nwritten); - } - view.setUint32(size, nwritten, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_create_directory', function path_create_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.mkdirSync(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_create_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.mkdir(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32'], ['i32']); - defineImport('path_filestat_get', function path_filestat_get(fd, flags, path, path_len, filestat) { - path = Number(path); - path_len = Number(path_len); - filestat = Number(filestat); - if (path === 0 || filestat === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - pathString = resolve(fileDescriptor.realPath, pathString); - let stat; - if ((flags & 1) === 1) { - stat = fs.statSync(pathString, { bigint: true }); - } - else { - stat = fs.lstatSync(pathString, { bigint: true }); - } - toFileStat(view, filestat, stat); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_filestat_get(fd, flags, path, path_len, filestat) { - path = Number(path); - path_len = Number(path_len); - filestat = Number(filestat); - if (path === 0 || filestat === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - pathString = resolve(fileDescriptor.realPath, pathString); - let stat; - if ((flags & 1) === 1) { - stat = await fs.promises.stat(pathString, { bigint: true }); - } - else { - stat = await fs.promises.lstat(pathString, { bigint: true }); - } - toFileStat(view, filestat, stat); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_filestat_set_times', function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) - return 28 /* WasiErrno.EINVAL */; - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); - if (validateFstFlagsOrReturn(fst_flags)) { - return 28 /* WasiErrno.EINVAL */; - } - const fs = getFs(this); - const resolvedPath = resolvePathSync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); - if ((fst_flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { - atim = BigInt(Date.now() * 1000000); - } - if ((fst_flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { - mtim = BigInt(Date.now() * 1000000); - } - fs.utimesSync(resolvedPath, Number(atim), Number(mtim)); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) - return 28 /* WasiErrno.EINVAL */; - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); - if (validateFstFlagsOrReturn(fst_flags)) { - return 28 /* WasiErrno.EINVAL */; - } - const fs = getFs(this); - const resolvedPath = await resolvePathAsync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); - if ((fst_flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { - atim = BigInt(Date.now() * 1000000); - } - if ((fst_flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { - mtim = BigInt(Date.now() * 1000000); - } - await fs.promises.utimes(resolvedPath, Number(atim), Number(mtim)); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32'], ['i32']); - defineImport('path_link', function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const fs = getFs(this); - const resolvedOldPath = resolvePathSync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - fs.linkSync(resolvedOldPath, resolvedNewPath); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const fs = getFs(this); - const resolvedOldPath = await resolvePathAsync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - await fs.promises.link(resolvedOldPath, resolvedNewPath); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - function pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags) { - const read = (fs_rights_base & (WasiRights.FD_READ | - WasiRights.FD_READDIR)) !== BigInt(0); - const write = (fs_rights_base & (WasiRights.FD_DATASYNC | - WasiRights.FD_WRITE | - WasiRights.FD_ALLOCATE | - WasiRights.FD_FILESTAT_SET_SIZE)) !== BigInt(0); - let flags = write ? read ? 2 /* FileControlFlag.O_RDWR */ : 1 /* FileControlFlag.O_WRONLY */ : 0 /* FileControlFlag.O_RDONLY */; - let needed_base = WasiRights.PATH_OPEN; - let needed_inheriting = fs_rights_base | fs_rights_inheriting; - if ((o_flags & 1 /* WasiFileControlFlag.O_CREAT */) !== 0) { - flags |= 64 /* FileControlFlag.O_CREAT */; - needed_base |= WasiRights.PATH_CREATE_FILE; - } - if ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0) { - flags |= 65536 /* FileControlFlag.O_DIRECTORY */; - } - if ((o_flags & 4 /* WasiFileControlFlag.O_EXCL */) !== 0) { - flags |= 128 /* FileControlFlag.O_EXCL */; - } - if ((o_flags & 8 /* WasiFileControlFlag.O_TRUNC */) !== 0) { - flags |= 512 /* FileControlFlag.O_TRUNC */; - needed_base |= WasiRights.PATH_FILESTAT_SET_SIZE; - } - if ((fs_flags & 1 /* WasiFdFlag.APPEND */) !== 0) { - flags |= 1024 /* FileControlFlag.O_APPEND */; - } - if ((fs_flags & 2 /* WasiFdFlag.DSYNC */) !== 0) { - // flags |= FileControlFlag.O_DSYNC; - needed_inheriting |= WasiRights.FD_DATASYNC; - } - if ((fs_flags & 4 /* WasiFdFlag.NONBLOCK */) !== 0) { - flags |= 2048 /* FileControlFlag.O_NONBLOCK */; - } - if ((fs_flags & 8 /* WasiFdFlag.RSYNC */) !== 0) { - flags |= 1052672 /* FileControlFlag.O_SYNC */; - needed_inheriting |= WasiRights.FD_SYNC; - } - if ((fs_flags & 16 /* WasiFdFlag.SYNC */) !== 0) { - flags |= 1052672 /* FileControlFlag.O_SYNC */; - needed_inheriting |= WasiRights.FD_SYNC; - } - if (write && (flags & (1024 /* FileControlFlag.O_APPEND */ | 512 /* FileControlFlag.O_TRUNC */)) === 0) { - needed_inheriting |= WasiRights.FD_SEEK; - } - return { flags, needed_base, needed_inheriting }; - } - defineImport('path_open', function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { - path = Number(path); - fd = Number(fd); - if (path === 0 || fd === 0) { - return 28 /* WasiErrno.EINVAL */; - } - path_len = Number(path_len); - fs_rights_base = BigInt(fs_rights_base); - fs_rights_inheriting = BigInt(fs_rights_inheriting); - const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); - const memory = getMemory(this); - const HEAPU8 = memory.HEAPU8; - const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - const resolved_path = resolvePathSync(fs, fileDescriptor, pathString, dirflags); - const r = fs.openSync(resolved_path, flagsRes, 0o666); - const filetype = wasi.fds.getFileTypeByFd(r); - if ((filetype !== 3 /* WasiFileType.DIRECTORY */) && - ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0 || - (resolved_path.endsWith('/')))) { - return 54 /* WasiErrno.ENOTDIR */; - } - const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r, flagsRes, filetype); - const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); - const stat = fs.fstatSync(r, { bigint: true }); - if (stat.isFile()) { - wrap.size = stat.size; - if ((flagsRes & 1024 /* FileControlFlag.O_APPEND */) !== 0) { - wrap.pos = stat.size; - } - } - const view = memory.view; - view.setInt32(fd, wrap.id, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { - path = Number(path); - fd = Number(fd); - if (path === 0 || fd === 0) { - return 28 /* WasiErrno.EINVAL */; - } - path_len = Number(path_len); - fs_rights_base = BigInt(fs_rights_base); - fs_rights_inheriting = BigInt(fs_rights_inheriting); - const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); - const memory = getMemory(this); - const HEAPU8 = memory.HEAPU8; - const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - const resolved_path = await resolvePathAsync(fs, fileDescriptor, pathString, dirflags); - const r = await fs.promises.open(resolved_path, flagsRes, 0o666); - const filetype = await wasi.fds.getFileTypeByFd(r); - if ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0 && filetype !== 3 /* WasiFileType.DIRECTORY */) { - return 54 /* WasiErrno.ENOTDIR */; - } - const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r.fd, flagsRes, filetype); - const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); - const stat = await r.stat({ bigint: true }); - if (stat.isFile()) { - wrap.size = stat.size; - if ((flagsRes & 1024 /* FileControlFlag.O_APPEND */) !== 0) { - wrap.pos = stat.size; - } - } - const view = memory.view; - view.setInt32(fd, wrap.id, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32', 'i32'], ['i32']); - defineImport('path_readlink', function path_readlink(fd, path, path_len, buf, buf_len, bufused) { - path = Number(path); - path_len = Number(path_len); - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (path === 0 || buf === 0 || bufused === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - const link = fs.readlinkSync(pathString); - const linkData = encoder.encode(link); - const len = Math.min(linkData.length, buf_len); - if (len >= buf_len) - return 42 /* WasiErrno.ENOBUFS */; - HEAPU8.set(linkData.subarray(0, len), buf); - HEAPU8[buf + len] = 0; - view.setUint32(bufused, len, true); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_readlink(fd, path, path_len, buf, buf_len, bufused) { - path = Number(path); - path_len = Number(path_len); - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (path === 0 || buf === 0 || bufused === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - const link = await fs.promises.readlink(pathString); - const linkData = encoder.encode(link); - const len = Math.min(linkData.length, buf_len); - if (len >= buf_len) - return 42 /* WasiErrno.ENOBUFS */; - HEAPU8.set(linkData.subarray(0, len), buf); - HEAPU8[buf + len] = 0; - view.setUint32(bufused, len, true); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_remove_directory', function path_remove_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.rmdirSync(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_remove_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.rmdir(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32'], ['i32']); - defineImport('path_rename', function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - const fs = getFs(this); - fs.renameSync(resolvedOldPath, resolvedNewPath); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - const fs = getFs(this); - await fs.promises.rename(resolvedOldPath, resolvedNewPath); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_symlink', function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); - const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); - if (oldPath.length > 0 && oldPath[0] === '/') { - return 63 /* WasiErrno.EPERM */; - } - let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); - newPath = resolve(fileDescriptor.realPath, newPath); - const fs = getFs(this); - fs.symlinkSync(oldPath, newPath); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); - const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); - let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); - newPath = resolve(fileDescriptor.realPath, newPath); - const fs = getFs(this); - await fs.promises.symlink(oldPath, newPath); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_unlink_file', function path_unlink_file(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.unlinkSync(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, async function path_unlink_file(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return 28 /* WasiErrno.EINVAL */; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.unlink(pathString); - return 0 /* WasiErrno.ESUCCESS */; - }, ['i32', 'i32', 'i32'], ['i32']); - this._setMemory = function setMemory(m) { - if (!(m instanceof _WebAssembly.Memory)) { - throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory'); - } - _memory.set(_this, extendMemory(m)); - }; - } - static createSync(args, env, preopens, stdio, fs, print, printErr) { - const fds = new SyncTable({ - size: 3, - in: stdio[0], - out: stdio[1], - err: stdio[2], - fs, - print, - printErr - }); - const _this = new WASI$1(args, env, fds, false, fs); - if (preopens.length > 0) { - for (let i = 0; i < preopens.length; ++i) { - const realPath = fs.realpathSync(preopens[i].realPath, 'utf8'); - const fd = fs.openSync(realPath, 'r', 0o666); - fds.insertPreopen(fd, preopens[i].mappedPath, realPath); - } - } - return _this; - } - static async createAsync(args, env, preopens, stdio, fs, print, printErr, asyncify) { - const fds = new AsyncTable({ - size: 3, - in: stdio[0], - out: stdio[1], - err: stdio[2], - print, - printErr - }); - const _this = new WASI$1(args, env, fds, true, fs, asyncify); - if (preopens.length > 0) { - for (let i = 0; i < preopens.length; ++i) { - const entry = preopens[i]; - const realPath = await fs.promises.realpath(entry.realPath); - const fd = await fs.promises.open(realPath, 'r', 0o666); - await fds.insertPreopen(fd, entry.mappedPath, realPath); - } - } - return _this; - } - } - - // eslint-disable-next-line spaced-comment - const kEmptyObject = /*#__PURE__*/ Object.freeze(/*#__PURE__*/ Object.create(null)); - const kExitCode = Symbol('kExitCode'); - const kSetMemory = Symbol('kSetMemory'); - const kStarted = Symbol('kStarted'); - const kInstance = Symbol('kInstance'); - const kBindingName = Symbol('kBindingName'); - function validateOptions(options) { - var _a; - validateObject(options, 'options'); - let _WASI; - if (options.version !== undefined) { - validateString(options.version, 'options.version'); - switch (options.version) { - case 'unstable': - _WASI = WASI$1; - this[kBindingName] = 'wasi_unstable'; - break; - case 'preview1': - _WASI = WASI$1; - this[kBindingName] = 'wasi_snapshot_preview1'; - break; - default: - throw new TypeError(`unsupported WASI version "${options.version}"`); - } - } - else { - _WASI = WASI$1; - this[kBindingName] = 'wasi_snapshot_preview1'; - } - if (options.args !== undefined) { - validateArray(options.args, 'options.args'); - } - const args = ((_a = options.args) !== null && _a !== void 0 ? _a : []).map(String); - const env = []; - if (options.env !== undefined) { - validateObject(options.env, 'options.env'); - Object.entries(options.env).forEach(({ 0: key, 1: value }) => { - if (value !== undefined) { - env.push(`${key}=${value}`); - } - }); - } - const preopens = []; - if (options.preopens !== undefined) { - validateObject(options.preopens, 'options.preopens'); - Object.entries(options.preopens).forEach(({ 0: key, 1: value }) => preopens.push({ mappedPath: String(key), realPath: String(value) })); - } - if (preopens.length > 0) { - if (options.fs === undefined) { - throw new Error('filesystem is disabled, can not preopen directory'); - } - try { - validateObject(options.fs, 'options.fs'); - } - catch (_) { - throw new TypeError('Node.js fs like implementation is not provided'); - } - } - // if (options.filesystem !== undefined) { - // validateObject(options.filesystem, 'options.filesystem') - // validateString(options.filesystem.type, 'options.filesystem.type') - // if (options.filesystem.type !== 'memfs' && options.filesystem.type !== 'file-system-access-api') { - // throw new Error(`Filesystem type ${(options.filesystem as any).type as string} is not supported, only "memfs" and "file-system-access-api" is supported currently`) - // } - // try { - // validateObject(options.filesystem.fs, 'options.filesystem.fs') - // } catch (_) { - // throw new Error('Node.js fs like implementation is not provided') - // } - // } - if (options.print !== undefined) - validateFunction(options.print, 'options.print'); - if (options.printErr !== undefined) - validateFunction(options.printErr, 'options.printErr'); - if (options.returnOnExit !== undefined) { - validateBoolean(options.returnOnExit, 'options.returnOnExit'); - } - // const { stdin = 0, stdout = 1, stderr = 2 } = options - // validateInt32(stdin, 'options.stdin', 0) - // validateInt32(stdout, 'options.stdout', 0) - // validateInt32(stderr, 'options.stderr', 0) - // const stdio = [stdin, stdout, stderr] as const - const stdio = [0, 1, 2]; - return { - args, - env, - preopens, - stdio, - _WASI - }; - } - function initWASI(setMemory, wrap) { - this[kSetMemory] = setMemory; - this.wasiImport = wrap; - this[kStarted] = false; - this[kExitCode] = 0; - this[kInstance] = undefined; - } - /** @public */ - class WASI { - constructor(options = kEmptyObject) { - const { args, env, preopens, stdio, _WASI } = validateOptions.call(this, options); - const wrap = _WASI.createSync(args, env, preopens, stdio, options.fs, options.print, options.printErr); - const setMemory = wrap._setMemory; - delete wrap._setMemory; - initWASI.call(this, setMemory, wrap); - if (options.returnOnExit) { - wrap.proc_exit = wasiReturnOnProcExit.bind(this); - } - } - finalizeBindings(instance, _a) { - var _b; - var { memory = (_b = instance === null || instance === void 0 ? void 0 : instance.exports) === null || _b === void 0 ? void 0 : _b.memory } = _a === void 0 ? {} : _a; - if (this[kStarted]) { - throw new Error('WASI instance has already started'); - } - validateObject(instance, 'instance'); - validateObject(instance.exports, 'instance.exports'); - this[kSetMemory](memory); - this[kInstance] = instance; - this[kStarted] = true; - } - // Must not export _initialize, must export _start - start(instance) { - this.finalizeBindings(instance); - const { _start, _initialize } = this[kInstance].exports; - validateFunction(_start, 'instance.exports._start'); - validateUndefined(_initialize, 'instance.exports._initialize'); - let ret; - try { - ret = _start(); - } - catch (err) { - if (err !== kExitCode) { - throw err; - } - } - if (ret instanceof Promise) { - return ret.then(() => this[kExitCode], (err) => { - if (err !== kExitCode) { - throw err; - } - return this[kExitCode]; - }); - } - return this[kExitCode]; - } - // Must not export _start, may optionally export _initialize - initialize(instance) { - this.finalizeBindings(instance); - const { _start, _initialize } = this[kInstance].exports; - validateUndefined(_start, 'instance.exports._start'); - if (_initialize !== undefined) { - validateFunction(_initialize, 'instance.exports._initialize'); - return _initialize(); - } - } - getImportObject() { - return { [this[kBindingName]]: this.wasiImport }; - } - } - function wasiReturnOnProcExit(rval) { - this[kExitCode] = rval; - // eslint-disable-next-line @typescript-eslint/no-throw-literal - throw kExitCode; - } - /** @public */ - async function createAsyncWASI(options = kEmptyObject) { - const _this = Object.create(WASI.prototype); - const { args, env, preopens, stdio, _WASI } = validateOptions.call(_this, options); - if (options.asyncify !== undefined) { - validateObject(options.asyncify, 'options.asyncify'); - validateFunction(options.asyncify.wrapImportFunction, 'options.asyncify.wrapImportFunction'); - } - const wrap = await _WASI.createAsync(args, env, preopens, stdio, options.fs, options.print, options.printErr, options.asyncify); - const setMemory = wrap._setMemory; - delete wrap._setMemory; - initWASI.call(_this, setMemory, wrap); - if (options.returnOnExit) { - wrap.proc_exit = wasiReturnOnProcExit.bind(_this); - } - return _this; - } - - exports.Asyncify = Asyncify; - exports.Memory = Memory; - exports.WASI = WASI; - exports.WebAssemblyMemory = WebAssemblyMemory; - exports.asyncifyLoad = asyncifyLoad; - exports.asyncifyLoadSync = asyncifyLoadSync; - exports.createAsyncWASI = createAsyncWASI; - exports.extendMemory = extendMemory; - exports.load = load; - exports.loadSync = loadSync; - exports.wrapAsyncExport = wrapAsyncExport; - exports.wrapAsyncImport = wrapAsyncImport; - exports.wrapExports = wrapExports; - - Object.defineProperty(exports, '__esModule', { value: true }); - -})); diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.min.js b/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.min.js deleted file mode 100644 index f317ae6..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).wasmUtil={})}(this,(function(t){"use strict";const e="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0;if(!e)throw new Error("WebAssembly is not supported in this environment");function n(t,e){if(null===t||"object"!=typeof t)throw new TypeError(`${e} must be an object. Received ${null===t?"null":typeof t}`)}function r(t,e){if("string"!=typeof t)throw new TypeError(`${e} must be a string. Received ${null===t?"null":typeof t}`)}function i(t,e){if("function"!=typeof t)throw new TypeError(`${e} must be a function. Received ${null===t?"null":typeof t}`)}function s(t,e){if(void 0!==t)throw new TypeError(`${e} must be undefined. Received ${null===t?"null":typeof t}`)}function o(t){return!(!t||"object"!=typeof t&&"function"!=typeof t||"function"!=typeof t.then)}function a(t,e){const n=Object.create(null);return Object.keys(t).forEach((r=>{const i=t[r];Object.defineProperty(n,r,{enumerable:!0,value:e(i,r)})})),n}function c(t,e,n){return"function"==typeof SharedArrayBuffer&&t.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(t.buffer.constructor)?t.slice(e,n):t.subarray(e,n)}const u=["asyncify_get_state","asyncify_start_rewind","asyncify_start_unwind","asyncify_stop_rewind","asyncify_stop_unwind"];function f(t,e,n,r){if("function"!=typeof t.exports[r]||n<=0)return{wasm64:e,dataPtr:16,start:e?32:24,end:1024};const i=t.exports[r],s=e?Number(i(BigInt(16)+BigInt(n))):i(8+n);if(0===s)throw new Error("Allocate asyncify data failed");return e?{wasm64:e,dataPtr:s,start:s+16,end:s+16+n}:{wasm64:e,dataPtr:s,start:s+8,end:s+8+n}}class h{constructor(){this.value=void 0,this.exports=void 0,this.dataPtr=0}init(t,n,r){var i,s;if(this.exports)throw new Error("Asyncify has been initialized");if(!(t instanceof e.Memory))throw new TypeError("Require WebAssembly.Memory object");const o=n.exports;for(let t=0;t{const r=t[n],i={};Object.keys(r).forEach((t=>{const e=r[t];i[t]="function"==typeof e?this.wrapImportFunction(e):e})),e[n]=i})),e}wrapExportFunction(t){const e=this;return async function(){e.assertState();let n=t.apply(this,arguments);for(;1===e.exports.asyncify_get_state();)e.exports.asyncify_stop_unwind(),e.value=await e.value,e.assertState(),e.exports.asyncify_start_rewind(e.dataPtr),n=t.call(this);return e.assertState(),n}}wrapExports(t,e){return a(t,((t,n)=>{let r=-1!==u.indexOf(n)||"function"!=typeof t;return Array.isArray(e)&&(r=r||-1===e.indexOf(n)),r?t:this.wrapExportFunction(t)}))}}function d(t){if(t&&"object"!=typeof t)throw new TypeError("imports must be an object or undefined")}function g(t,n){return"undefined"!=typeof wx&&"undefined"!=typeof __wxConfig?e.instantiate(t,n):fetch(t).then((t=>t.arrayBuffer())).then((t=>e.instantiate(t,n)))}function l(t,n){let r;if(d(n),n=null!=n?n:{},t instanceof ArrayBuffer||ArrayBuffer.isView(t))return e.instantiate(t,n);if(t instanceof e.Module)return e.instantiate(t,n).then((e=>({instance:e,module:t})));if("string"!=typeof t&&!(t instanceof URL))throw new TypeError("Invalid source");if("function"==typeof e.instantiateStreaming){let i;try{i=fetch(t),r=e.instantiateStreaming(i,n).catch((()=>g(t,n)))}catch(e){r=g(t,n)}}else r=g(t,n);return r}function _(t,n){let r;if(d(n),n=null!=n?n:{},t instanceof ArrayBuffer||ArrayBuffer.isView(t))r=new e.Module(t);else{if(!(t instanceof WebAssembly.Module))throw new TypeError("Invalid source");r=t}return{instance:new e.Instance(r,n),module:r}}const p=46,y=47;function E(t){return t===y}function I(...t){let e="",n=!1;for(let i=t.length-1;i>=-1&&!n;i--){const s=i>=0?t[i]:"/";r(s,"path"),0!==s.length&&(e=`${s}/${e}`,n=s.charCodeAt(0)===y)}return e=function(t,e,n,r){let i="",s=0,o=-1,a=0,c=0;for(let u=0;u<=t.length;++u){if(u2){const t=i.indexOf(n);-1===t?(i="",s=0):(i=i.slice(0,t),s=i.length-1-i.indexOf(n)),o=u,a=0;continue}if(0!==i.length){i="",s=0,o=u,a=0;continue}}e&&(i+=i.length>0?`${n}..`:"..",s=2)}else i.length>0?i+=`${n}${t.slice(o+1,u)}`:i=t.slice(o+1,u),s=u-o-1;o=u,a=0}else c===p&&-1!==a?++a:a=-1}return i}(e,!n,"/",E),n?`/${e}`:e.length>0?e:"."}const m={FD_DATASYNC:BigInt(1)<=0)n=e;else for(let e=0;e"),this.insertStdio(t.out,1,""),this.insertStdio(t.err,2,"")}insertStdio(t,e,n){const{base:r,inheriting:i}=H(this.stdio,t,2,2),s=this.insert(t,n,n,2,r,i,0);if(s.id!==e)throw new A(`id: ${s.id} !== expected: ${e}`,8);return s}insert(t,e,n,r,i,s,o){var a,c;let u,f=-1;if(this.used>=this.size){const t=2*this.size;this.fds.length=t,f=this.size,this.size=t}else for(let t=0;t"===e?new C(null!==(c=this.printErr)&&void 0!==c?c:console.error,f,t,e,n,r,i,s,o):new k(f,t,e,n,r,i,s,o),this.fds[f]=u,this.used++,u}get(t,e,n){if(t>=this.size)throw new A("Invalid fd",8);const r=this.fds[t];if(!r||r.id!==t)throw new A("Bad file descriptor",8);if((~r.rightsBase&e)!==BigInt(0)||(~r.rightsInheriting&n)!==BigInt(0))throw new A("Capabilities insufficient",76);return r}remove(t){if(t>=this.size)throw new A("Invalid fd",8);const e=this.fds[t];if(!e||e.id!==t)throw new A("Bad file descriptor",8);this.fds[t]=void 0,this.used--}}class z extends W{constructor(t){super(t),this.fs=t.fs}getFileTypeByFd(t){return x(this.fs.fstatSync(t,{bigint:!0}))}insertPreopen(t,e,n){const r=this.getFileTypeByFd(t);if(3!==r)throw new A(`Preopen not dir: ["${e}", "${n}"]`,54);const i=H(this.stdio,t,0,r);return this.insert(t,e,n,r,i.base,i.inheriting,1)}renumber(t,e){if(t===e)return;if(t>=this.size||e>=this.size)throw new A("Invalid fd",8);const n=this.fds[t],r=this.fds[e];if(!n||!r||n.id!==t||r.id!==e)throw new A("Invalid fd",8);this.fs.closeSync(n.fd),this.fds[t]=this.fds[e],this.fds[t].id=t,this.fds[e]=void 0,this.used--}}class K extends W{constructor(t){super(t)}async getFileTypeByFd(t){return x(await t.stat({bigint:!0}))}async insertPreopen(t,e,n){const r=await this.getFileTypeByFd(t);if(3!==r)throw new A(`Preopen not dir: ["${e}", "${n}"]`,54);const i=H(this.stdio,t.fd,0,r);return this.insert(t,e,n,r,i.base,i.inheriting,1)}async renumber(t,e){if(t===e)return;if(t>=this.size||e>=this.size)throw new A("Invalid fd",8);const n=this.fds[t],r=this.fds[e];if(!n||!r||n.id!==t||r.id!==e)throw new A("Invalid fd",8);await n.fd.close(),this.fds[t]=this.fds[e],this.fds[t].id=t,this.fds[e]=void 0,this.used--}}const j=function(){return e.Memory}();class G extends j{constructor(t){super(t)}get HEAP8(){return new Int8Array(super.buffer)}get HEAPU8(){return new Uint8Array(super.buffer)}get HEAP16(){return new Int16Array(super.buffer)}get HEAPU16(){return new Uint16Array(super.buffer)}get HEAP32(){return new Int32Array(super.buffer)}get HEAPU32(){return new Uint32Array(super.buffer)}get HEAP64(){return new BigInt64Array(super.buffer)}get HEAPU64(){return new BigUint64Array(super.buffer)}get HEAPF32(){return new Float32Array(super.buffer)}get HEAPF64(){return new Float64Array(super.buffer)}get view(){return new DataView(super.buffer)}}function Y(t){return Object.getPrototypeOf(t)===e.Memory.prototype&&Object.setPrototypeOf(t,G.prototype),t}function $(){const t=e.Function;if("function"!=typeof t)throw new Error('WebAssembly.Function is not supported in this environment. If you are using V8 based browser like Chrome, try to specify --js-flags="--wasm-staging --experimental-wasm-stack-switching"');return t}function V(t,e,n){const r=$();if("function"!=typeof t)throw new TypeError("Function required");const i=e.slice(0);return i.unshift("externref"),new r({parameters:i,results:n},t,{suspending:"first"})}function Z(t){const e=$();if("function"!=typeof t)throw new TypeError("Function required");return new e({parameters:[...e.type(t).parameters.slice(1)],results:["externref"]},t,{promising:"first"})}function q(t,e){if(0===t.length||0===e.length)return 0;let n=0,r=e.length-n;for(let i=0;it),nt):r}function st(t,e,n){let r=!1;const i=(()=>{try{return}catch(t){return}})();return"string"==typeof i&&i.split(",").includes("wasi")&&(r=!0),rt(e,r?function(){const r=Array.prototype.slice.call(arguments);let i=[`${e}(${Array.from({length:arguments.length}).map((()=>"%d")).join(", ")})`];return i=i.concat(r),console.debug.apply(console,i),it(n,t,r)}:function(){return it(n,t,arguments)})}function ot(t,e,n,r){let i=I(e.realPath,n);if(1==(1&r))try{i=t.readlinkSync(i)}catch(t){if("EINVAL"!==t.code&&"ENOENT"!==t.code)throw t}return i}async function at(t,e,n,r){let i=I(e.realPath,n);if(1==(1&r))try{i=await t.promises.readlink(i)}catch(t){if("EINVAL"!==t.code&&"ENOENT"!==t.code)throw t}return i}const ct=new TextEncoder,ut=new TextDecoder,ft=(BigInt(1)<r.rightsBase||(n|r.rightsInheriting)>r.rightsInheriting?76:(r.rightsBase=e,r.rightsInheriting=n,0)})),this.fd_prestat_get=st(this,"fd_prestat_get",(function(t,e){if(0===(e=Number(e)))return 28;const n=Q.get(this);let r;try{r=n.fds.get(t,BigInt(0),BigInt(0))}catch(t){if(t instanceof A)return t.errno;throw t}if(1!==r.preopen)return 28;const{view:i}=tt(this);return i.setUint32(e,0,!0),i.setUint32(e+4,ct.encode(r.path).length,!0),0})),this.fd_prestat_dir_name=st(this,"fd_prestat_dir_name",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const r=Q.get(this).fds.get(t,BigInt(0),BigInt(0));if(1!==r.preopen)return 8;const i=ct.encode(r.path);if(i.length>n)return 42;const{HEAPU8:s}=tt(this);return s.set(i,e),0})),this.fd_seek=st(this,"fd_seek",(function(t,e,n,r){if(0===(r=Number(r)))return 28;if(0===t||1===t||2===t)return 0;const i=Q.get(this).fds.get(t,m.FD_SEEK,BigInt(0)).seek(e,n),{view:s}=tt(this);return s.setBigUint64(r,i,!0),0})),this.fd_tell=st(this,"fd_tell",(function(t,e){const n=Q.get(this).fds.get(t,m.FD_TELL,BigInt(0)),r=BigInt(n.pos),{view:i}=tt(this);return i.setBigUint64(Number(e),r,!0),0})),this.poll_oneoff=st(this,"poll_oneoff",(function(t,e,n,r){if(t=Number(t),e=Number(e),r=Number(r),n=Number(n),n>>>=0,0===t||0===e||0===n||0===r)return 28;const{view:i}=tt(this);i.setUint32(r,0,!0);let s,o=0,a=BigInt(0),c=BigInt(0),u=0,f=BigInt(0);const h=Array(n);for(o=0;o0){for(o=0;o!1));const t=e;i.setBigUint64(t,a,!0),i.setUint32(t+8,0,!0),i.setUint32(t+12,0,!0),i.setUint32(r,1,!0)}return 0})),this.proc_exit=st(this,"proc_exit",(function(t){return"object"==typeof process&&null!==process&&"function"==typeof process.exit&&process.exit(t),0})),this.proc_raise=st(this,"proc_raise",(function(t){return 52})),this.sched_yield=st(this,"sched_yield",(function(){return 0})),this.random_get="undefined"!=typeof crypto&&"function"==typeof crypto.getRandomValues?st(this,"random_get",(function(t,e){if(0===(t=Number(t)))return 28;e=Number(e);const{HEAPU8:n,view:r}=tt(this);if("function"==typeof SharedArrayBuffer&&n.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(n.buffer)){for(let n=t;nft)return 28;const{HEAPU8:s,view:o}=tt(this),a=Q.get(this).fds.get(t,m.FD_READ|m.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;let c=0;const u=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return c+=a,s.subarray(i,i+a)}));let f=0;const h=(()=>{try{return new Uint8Array(new SharedArrayBuffer(c))}catch(t){return new Uint8Array(c)}})();h._isBuffer=!0;const d=et(this).readSync(a.fd,h,0,h.length,Number(r));return f=h?q(u,h.subarray(0,d)):0,o.setUint32(i,f,!0),0}),(async function(t,e,n,r,i){if(e=Number(e),i=Number(i),0===e&&n||0===i||r>ft)return 28;const{HEAPU8:s,view:o}=tt(this),a=Q.get(this).fds.get(t,m.FD_READ|m.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;let c=0;const u=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return c+=a,s.subarray(i,i+a)}));let f=0;const h=new Uint8Array(c);h._isBuffer=!0;const{bytesRead:d}=await a.fd.read(h,0,h.length,Number(r));return f=h?q(u,h.subarray(0,d)):0,o.setUint32(i,f,!0),0}),["i32","i32","i32","i64","i32"],["i32"]),u("fd_pwrite",(function(t,e,n,r,i){if(e=Number(e),i=Number(i),0===e&&n||0===i||r>ft)return 28;const{HEAPU8:s,view:o}=tt(this),a=Q.get(this).fds.get(t,m.FD_WRITE|m.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;const c=O(Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return s.subarray(i,i+a)}))),u=et(this).writeSync(a.fd,c,0,c.length,Number(r));return o.setUint32(i,u,!0),0}),(async function(t,e,n,r,i){if(e=Number(e),i=Number(i),0===e&&n||0===i||r>ft)return 28;const{HEAPU8:s,view:o}=tt(this),a=Q.get(this).fds.get(t,m.FD_WRITE|m.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;const c=O(Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return s.subarray(i,i+a)}))),{bytesWritten:u}=await a.fd.write(c,0,c.length,Number(r));return o.setUint32(i,u,!0),0}),["i32","i32","i32","i64","i32"],["i32"]),u("fd_read",(function(t,e,n,r){if(e=Number(e),r=Number(r),0===e&&n||0===r)return 28;const{HEAPU8:i,view:s}=tt(this),o=Q.get(this).fds.get(t,m.FD_READ,BigInt(0));if(!n)return s.setUint32(r,0,!0),0;let a=0;const c=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,o=s.getInt32(r,!0),c=s.getUint32(r+4,!0);return a+=c,i.subarray(o,o+c)}));let u,f=0;if(0===t){if("undefined"==typeof window||"function"!=typeof window.prompt)return 58;u=ht(),f=u?q(c,u):0}else{u=(()=>{try{return new Uint8Array(new SharedArrayBuffer(a))}catch(t){return new Uint8Array(a)}})(),u._isBuffer=!0;const t=et(this).readSync(o.fd,u,0,u.length,Number(o.pos));f=u?q(c,u.subarray(0,t)):0,o.pos+=BigInt(f)}return s.setUint32(r,f,!0),0}),(async function(t,e,n,r){if(e=Number(e),r=Number(r),0===e&&n||0===r)return 28;const{HEAPU8:i,view:s}=tt(this),o=Q.get(this).fds.get(t,m.FD_READ,BigInt(0));if(!n)return s.setUint32(r,0,!0),0;let a=0;const c=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,o=s.getInt32(r,!0),c=s.getUint32(r+4,!0);return a+=c,i.subarray(o,o+c)}));let u,f=0;if(0===t){if("undefined"==typeof window||"function"!=typeof window.prompt)return 58;u=ht(),f=u?q(c,u):0}else{u=new Uint8Array(a),u._isBuffer=!0;const{bytesRead:t}=await o.fd.read(u,0,u.length,Number(o.pos));f=u?q(c,u.subarray(0,t)):0,o.pos+=BigInt(f)}return s.setUint32(r,f,!0),0}),["i32","i32","i32","i32"],["i32"]),u("fd_readdir",(function(t,e,n,r,i){if(e=Number(e),n=Number(n),i=Number(i),0===e||0===i)return 0;const s=Q.get(this).fds.get(t,m.FD_READDIR,BigInt(0)),o=et(this),a=o.readdirSync(s.realPath,{withFileTypes:!0}),{HEAPU8:c,view:u}=tt(this);let f=0;for(let t=Number(r);t{const r=e+8*n,o=s.getInt32(r,!0),a=s.getUint32(r+4,!0);return i.subarray(o,o+a)})));let c;if(1===t||2===t)c=o.write(a);else{c=et(this).writeSync(o.fd,a,0,a.length,Number(o.pos)),o.pos+=BigInt(c)}return s.setUint32(r,c,!0),0}),(async function(t,e,n,r){if(e=Number(e),r=Number(r),0===e&&n||0===r)return 28;const{HEAPU8:i,view:s}=tt(this),o=Q.get(this).fds.get(t,m.FD_WRITE,BigInt(0));if(!n)return s.setUint32(r,0,!0),0;const a=O(Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,o=s.getInt32(r,!0),a=s.getUint32(r+4,!0);return i.subarray(o,o+a)})));let c;return 1===t||2===t?c=o.write(a):(c=await(await o.fd.write(a,0,a.length,Number(o.pos))).bytesWritten,o.pos+=BigInt(c)),s.setUint32(r,c,!0),0}),["i32","i32","i32","i32"],["i32"]),u("path_create_directory",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=tt(this),i=Q.get(this).fds.get(t,m.PATH_CREATE_DIRECTORY,BigInt(0));let s=ut.decode(c(r,e,e+n));s=I(i.realPath,s);return et(this).mkdirSync(s),0}),(async function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=tt(this),i=Q.get(this).fds.get(t,m.PATH_CREATE_DIRECTORY,BigInt(0));let s=ut.decode(c(r,e,e+n));s=I(i.realPath,s);const o=et(this);return await o.promises.mkdir(s),0}),["i32","i32","i32"],["i32"]),u("path_filestat_get",(function(t,e,n,r,i){if(n=Number(n),r=Number(r),i=Number(i),0===n||0===i)return 28;const{HEAPU8:s,view:o}=tt(this),a=Q.get(this).fds.get(t,m.PATH_FILESTAT_GET,BigInt(0));let u=ut.decode(c(s,n,n+r));const f=et(this);let h;return u=I(a.realPath,u),h=1==(1&e)?f.statSync(u,{bigint:!0}):f.lstatSync(u,{bigint:!0}),M(o,i,h),0}),(async function(t,e,n,r,i){if(n=Number(n),r=Number(r),i=Number(i),0===n||0===i)return 28;const{HEAPU8:s,view:o}=tt(this),a=Q.get(this).fds.get(t,m.PATH_FILESTAT_GET,BigInt(0));let u=ut.decode(c(s,n,n+r));const f=et(this);let h;return u=I(a.realPath,u),h=1==(1&e)?await f.promises.stat(u,{bigint:!0}):await f.promises.lstat(u,{bigint:!0}),M(o,i,h),0}),["i32","i32","i32","i32","i32"],["i32"]),u("path_filestat_set_times",(function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),0===n)return 28;const{HEAPU8:a}=tt(this),u=Q.get(this).fds.get(t,m.PATH_FILESTAT_SET_TIMES,BigInt(0));if(dt(o))return 28;const f=et(this),h=ot(f,u,ut.decode(c(a,n,n+r)),e);return 2==(2&o)&&(i=BigInt(1e6*Date.now())),8==(8&o)&&(s=BigInt(1e6*Date.now())),f.utimesSync(h,Number(i),Number(s)),0}),(async function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),0===n)return 28;const{HEAPU8:a}=tt(this),u=Q.get(this).fds.get(t,m.PATH_FILESTAT_SET_TIMES,BigInt(0));if(dt(o))return 28;const f=et(this),h=await at(f,u,ut.decode(c(a,n,n+r)),e);return 2==(2&o)&&(i=BigInt(1e6*Date.now())),8==(8&o)&&(s=BigInt(1e6*Date.now())),await f.promises.utimes(h,Number(i),Number(s)),0}),["i32","i32","i32","i32","i64","i64","i32"],["i32"]),u("path_link",(function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),s=Number(s),o=Number(o),0===n||0===s)return 28;const a=Q.get(this);let u,f;t===i?u=f=a.fds.get(t,m.PATH_LINK_SOURCE|m.PATH_LINK_TARGET,BigInt(0)):(u=a.fds.get(t,m.PATH_LINK_SOURCE,BigInt(0)),f=a.fds.get(i,m.PATH_LINK_TARGET,BigInt(0)));const{HEAPU8:h}=tt(this),d=et(this),g=ot(d,u,ut.decode(c(h,n,n+r)),e),l=I(f.realPath,ut.decode(c(h,s,s+o)));return d.linkSync(g,l),0}),(async function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),s=Number(s),o=Number(o),0===n||0===s)return 28;const a=Q.get(this);let u,f;t===i?u=f=a.fds.get(t,m.PATH_LINK_SOURCE|m.PATH_LINK_TARGET,BigInt(0)):(u=a.fds.get(t,m.PATH_LINK_SOURCE,BigInt(0)),f=a.fds.get(i,m.PATH_LINK_TARGET,BigInt(0)));const{HEAPU8:h}=tt(this),d=et(this),g=await at(d,u,ut.decode(c(h,n,n+r)),e),l=I(f.realPath,ut.decode(c(h,s,s+o)));return await d.promises.link(g,l),0}),["i32","i32","i32","i32","i32","i32","i32"],["i32"]),u("path_open",(function(t,e,n,r,i,s,o,a,u){if(n=Number(n),u=Number(u),0===n||0===u)return 28;r=Number(r),s=BigInt(s),o=BigInt(o);const{flags:f,needed_base:d,needed_inheriting:g}=h(i,s,o,a),l=Q.get(this),_=l.fds.get(t,d,g),p=tt(this),y=p.HEAPU8,E=ut.decode(c(y,n,n+r)),I=et(this),m=ot(I,_,E,e),A=I.openSync(m,f,438),b=l.fds.getFileTypeByFd(A);if(3!==b&&(0!=(2&i)||m.endsWith("/")))return 54;const{base:T,inheriting:w}=H(l.fds.stdio,A,f,b),B=l.fds.insert(A,m,m,b,s&T,o&w,0),N=I.fstatSync(A,{bigint:!0});N.isFile()&&(B.size=N.size,0!=(1024&f)&&(B.pos=N.size));return p.view.setInt32(u,B.id,!0),0}),(async function(t,e,n,r,i,s,o,a,u){if(n=Number(n),u=Number(u),0===n||0===u)return 28;r=Number(r),s=BigInt(s),o=BigInt(o);const{flags:f,needed_base:d,needed_inheriting:g}=h(i,s,o,a),l=Q.get(this),_=l.fds.get(t,d,g),p=tt(this),y=p.HEAPU8,E=ut.decode(c(y,n,n+r)),I=et(this),m=await at(I,_,E,e),A=await I.promises.open(m,f,438),b=await l.fds.getFileTypeByFd(A);if(0!=(2&i)&&3!==b)return 54;const{base:T,inheriting:w}=H(l.fds.stdio,A.fd,f,b),B=l.fds.insert(A,m,m,b,s&T,o&w,0),N=await A.stat({bigint:!0});N.isFile()&&(B.size=N.size,0!=(1024&f)&&(B.pos=N.size));return p.view.setInt32(u,B.id,!0),0}),["i32","i32","i32","i32","i32","i64","i64","i32","i32"],["i32"]),u("path_readlink",(function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),r=Number(r),i=Number(i),s=Number(s),0===e||0===r||0===s)return 28;const{HEAPU8:o,view:a}=tt(this),u=Q.get(this).fds.get(t,m.PATH_READLINK,BigInt(0));let f=ut.decode(c(o,e,e+n));f=I(u.realPath,f);const h=et(this).readlinkSync(f),d=ct.encode(h),g=Math.min(d.length,i);return g>=i?42:(o.set(d.subarray(0,g),r),o[r+g]=0,a.setUint32(s,g,!0),0)}),(async function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),r=Number(r),i=Number(i),s=Number(s),0===e||0===r||0===s)return 28;const{HEAPU8:o,view:a}=tt(this),u=Q.get(this).fds.get(t,m.PATH_READLINK,BigInt(0));let f=ut.decode(c(o,e,e+n));f=I(u.realPath,f);const h=et(this),d=await h.promises.readlink(f),g=ct.encode(d),l=Math.min(g.length,i);return l>=i?42:(o.set(g.subarray(0,l),r),o[r+l]=0,a.setUint32(s,l,!0),0)}),["i32","i32","i32","i32","i32","i32"],["i32"]),u("path_remove_directory",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=tt(this),i=Q.get(this).fds.get(t,m.PATH_REMOVE_DIRECTORY,BigInt(0));let s=ut.decode(c(r,e,e+n));s=I(i.realPath,s);return et(this).rmdirSync(s),0}),(async function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=tt(this),i=Q.get(this).fds.get(t,m.PATH_REMOVE_DIRECTORY,BigInt(0));let s=ut.decode(c(r,e,e+n));s=I(i.realPath,s);const o=et(this);return await o.promises.rmdir(s),0}),["i32","i32","i32"],["i32"]),u("path_rename",(function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),i=Number(i),s=Number(s),0===e||0===i)return 28;const o=Q.get(this);let a,u;t===r?a=u=o.fds.get(t,m.PATH_RENAME_SOURCE|m.PATH_RENAME_TARGET,BigInt(0)):(a=o.fds.get(t,m.PATH_RENAME_SOURCE,BigInt(0)),u=o.fds.get(r,m.PATH_RENAME_TARGET,BigInt(0)));const{HEAPU8:f}=tt(this),h=I(a.realPath,ut.decode(c(f,e,e+n))),d=I(u.realPath,ut.decode(c(f,i,i+s)));return et(this).renameSync(h,d),0}),(async function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),i=Number(i),s=Number(s),0===e||0===i)return 28;const o=Q.get(this);let a,u;t===r?a=u=o.fds.get(t,m.PATH_RENAME_SOURCE|m.PATH_RENAME_TARGET,BigInt(0)):(a=o.fds.get(t,m.PATH_RENAME_SOURCE,BigInt(0)),u=o.fds.get(r,m.PATH_RENAME_TARGET,BigInt(0)));const{HEAPU8:f}=tt(this),h=I(a.realPath,ut.decode(c(f,e,e+n))),d=I(u.realPath,ut.decode(c(f,i,i+s))),g=et(this);return await g.promises.rename(h,d),0}),["i32","i32","i32","i32","i32","i32"],["i32"]),u("path_symlink",(function(t,e,n,r,i){if(t=Number(t),e=Number(e),r=Number(r),i=Number(i),0===t||0===r)return 28;const{HEAPU8:s}=tt(this),o=Q.get(this).fds.get(n,m.PATH_SYMLINK,BigInt(0)),a=ut.decode(c(s,t,t+e));if(a.length>0&&"/"===a[0])return 63;let u=ut.decode(c(s,r,r+i));u=I(o.realPath,u);return et(this).symlinkSync(a,u),0}),(async function(t,e,n,r,i){if(t=Number(t),e=Number(e),r=Number(r),i=Number(i),0===t||0===r)return 28;const{HEAPU8:s}=tt(this),o=Q.get(this).fds.get(n,m.PATH_SYMLINK,BigInt(0)),a=ut.decode(c(s,t,t+e));let u=ut.decode(c(s,r,r+i));u=I(o.realPath,u);const f=et(this);return await f.promises.symlink(a,u),0}),["i32","i32","i32","i32","i32"],["i32"]),u("path_unlink_file",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=tt(this),i=Q.get(this).fds.get(t,m.PATH_UNLINK_FILE,BigInt(0));let s=ut.decode(c(r,e,e+n));s=I(i.realPath,s);return et(this).unlinkSync(s),0}),(async function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=tt(this),i=Q.get(this).fds.get(t,m.PATH_UNLINK_FILE,BigInt(0));let s=ut.decode(c(r,e,e+n));s=I(i.realPath,s);const o=et(this);return await o.promises.unlink(s),0}),["i32","i32","i32"],["i32"]),this._setMemory=function(t){if(!(t instanceof e.Memory))throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory');X.set(a,Y(t))}}static createSync(t,e,n,r,i,s,o){const a=new z({size:3,in:r[0],out:r[1],err:r[2],fs:i,print:s,printErr:o}),c=new gt(t,e,a,!1,i);if(n.length>0)for(let t=0;t0)for(let t=0;t{void 0!==e&&a.push(`${t}=${e}`)})));const c=[];if(void 0!==t.preopens&&(n(t.preopens,"options.preopens"),Object.entries(t.preopens).forEach((({0:t,1:e})=>c.push({mappedPath:String(t),realPath:String(e)})))),c.length>0){if(void 0===t.fs)throw new Error("filesystem is disabled, can not preopen directory");try{n(t.fs,"options.fs")}catch(t){throw new TypeError("Node.js fs like implementation is not provided")}}void 0!==t.print&&i(t.print,"options.print"),void 0!==t.printErr&&i(t.printErr,"options.printErr"),void 0!==t.returnOnExit&&function(t,e){if("boolean"!=typeof t)throw new TypeError(`${e} must be a boolean. Received ${null===t?"null":typeof t}`)}(t.returnOnExit,"options.returnOnExit");return{args:o,env:a,preopens:c,stdio:[0,1,2],_WASI:s}}function At(t,e){this[pt]=t,this.wasiImport=e,this[yt]=!1,this[_t]=0,this[Et]=void 0}class bt{constructor(t=lt){const{args:e,env:n,preopens:r,stdio:i,_WASI:s}=mt.call(this,t),o=s.createSync(e,n,r,i,t.fs,t.print,t.printErr),a=o._setMemory;delete o._setMemory,At.call(this,a,o),t.returnOnExit&&(o.proc_exit=Tt.bind(this))}finalizeBindings(t,e){var r,{memory:i=(null===(r=null==t?void 0:t.exports)||void 0===r?void 0:r.memory)}=void 0===e?{}:e;if(this[yt])throw new Error("WASI instance has already started");n(t,"instance"),n(t.exports,"instance.exports"),this[pt](i),this[Et]=t,this[yt]=!0}start(t){this.finalizeBindings(t);const{_start:e,_initialize:n}=this[Et].exports;let r;i(e,"instance.exports._start"),s(n,"instance.exports._initialize");try{r=e()}catch(t){if(t!==_t)throw t}return r instanceof Promise?r.then((()=>this[_t]),(t=>{if(t!==_t)throw t;return this[_t]})):this[_t]}initialize(t){this.finalizeBindings(t);const{_start:e,_initialize:n}=this[Et].exports;if(s(e,"instance.exports._start"),void 0!==n)return i(n,"instance.exports._initialize"),n()}getImportObject(){return{[this[It]]:this.wasiImport}}}function Tt(t){throw this[_t]=t,_t}t.Asyncify=h,t.Memory=G,t.WASI=bt,t.WebAssemblyMemory=j,t.asyncifyLoad=function(t,e,n){d(n),n=null!=n?n:{};const r=new h;return l(e,n=r.wrapImports(n)).then((e=>{var i;const s=e.instance.exports.memory||(null===(i=n.env)||void 0===i?void 0:i.memory);return{module:e.module,instance:r.init(s,e.instance,t)}}))},t.asyncifyLoadSync=function(t,e,n){var r;d(n),n=null!=n?n:{};const i=new h,s=_(e,n=i.wrapImports(n)),o=s.instance.exports.memory||(null===(r=n.env)||void 0===r?void 0:r.memory);return{module:s.module,instance:i.init(o,s.instance,t)}},t.createAsyncWASI=async function(t=lt){const e=Object.create(bt.prototype),{args:r,env:s,preopens:o,stdio:a,_WASI:c}=mt.call(e,t);void 0!==t.asyncify&&(n(t.asyncify,"options.asyncify"),i(t.asyncify.wrapImportFunction,"options.asyncify.wrapImportFunction"));const u=await c.createAsync(r,s,o,a,t.fs,t.print,t.printErr,t.asyncify),f=u._setMemory;return delete u._setMemory,At.call(e,f,u),t.returnOnExit&&(u.proc_exit=Tt.bind(e)),e},t.extendMemory=Y,t.load=l,t.loadSync=_,t.wrapAsyncExport=Z,t.wrapAsyncImport=V,t.wrapExports=function(t,e){return a(t,((t,n)=>{let r="function"!=typeof t;return Array.isArray(e)&&(r=r||-1===e.indexOf(n)),r?t:Z(t)}))},Object.defineProperty(t,"__esModule",{value:!0})})); diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/asyncify.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/asyncify.js deleted file mode 100644 index cf66eb9..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/asyncify.js +++ /dev/null @@ -1,158 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Asyncify = void 0; -const webassembly_1 = require("./webassembly"); -const util_1 = require("./wasi/util"); -const ignoreNames = [ - 'asyncify_get_state', - 'asyncify_start_rewind', - 'asyncify_start_unwind', - 'asyncify_stop_rewind', - 'asyncify_stop_unwind' -]; -// const wrappedExports = new WeakMap() -var AsyncifyState; -(function (AsyncifyState) { - AsyncifyState[AsyncifyState["NONE"] = 0] = "NONE"; - AsyncifyState[AsyncifyState["UNWINDING"] = 1] = "UNWINDING"; - AsyncifyState[AsyncifyState["REWINDING"] = 2] = "REWINDING"; -})(AsyncifyState || (AsyncifyState = {})); -function tryAllocate(instance, wasm64, size, mallocName) { - if (typeof instance.exports[mallocName] !== 'function' || size <= 0) { - return { - wasm64, - dataPtr: 16, - start: wasm64 ? 32 : 24, - end: 1024 - }; - } - const malloc = instance.exports[mallocName]; - const dataPtr = wasm64 ? Number(malloc(BigInt(16) + BigInt(size))) : malloc(8 + size); - if (dataPtr === 0) { - throw new Error('Allocate asyncify data failed'); - } - return wasm64 - ? { wasm64, dataPtr, start: dataPtr + 16, end: dataPtr + 16 + size } - : { wasm64, dataPtr, start: dataPtr + 8, end: dataPtr + 8 + size }; -} -/** @public */ -class Asyncify { - constructor() { - this.value = undefined; - this.exports = undefined; - this.dataPtr = 0; - } - init(memory, instance, options) { - var _a, _b; - if (this.exports) { - throw new Error('Asyncify has been initialized'); - } - if (!(memory instanceof webassembly_1._WebAssembly.Memory)) { - throw new TypeError('Require WebAssembly.Memory object'); - } - const exports = instance.exports; - for (let i = 0; i < ignoreNames.length; ++i) { - if (typeof exports[ignoreNames[i]] !== 'function') { - throw new TypeError('Invalid asyncify wasm'); - } - } - let address; - const wasm64 = Boolean(options.wasm64); - if (!options.tryAllocate) { - address = { - wasm64, - dataPtr: 16, - start: wasm64 ? 32 : 24, - end: 1024 - }; - } - else { - if (options.tryAllocate === true) { - address = tryAllocate(instance, wasm64, 4096, 'malloc'); - } - else { - address = tryAllocate(instance, wasm64, (_a = options.tryAllocate.size) !== null && _a !== void 0 ? _a : 4096, (_b = options.tryAllocate.name) !== null && _b !== void 0 ? _b : 'malloc'); - } - } - this.dataPtr = address.dataPtr; - if (wasm64) { - new BigInt64Array(memory.buffer, this.dataPtr).set([BigInt(address.start), BigInt(address.end)]); - } - else { - new Int32Array(memory.buffer, this.dataPtr).set([address.start, address.end]); - } - this.exports = this.wrapExports(exports, options.wrapExports); - const asyncifiedInstance = Object.create(webassembly_1._WebAssembly.Instance.prototype); - Object.defineProperty(asyncifiedInstance, 'exports', { value: this.exports }); - // Object.setPrototypeOf(instance, Instance.prototype) - return asyncifiedInstance; - } - assertState() { - if (this.exports.asyncify_get_state() !== AsyncifyState.NONE) { - throw new Error('Asyncify state error'); - } - } - wrapImportFunction(f) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - return (function () { - // eslint-disable-next-line no-unreachable-loop - while (_this.exports.asyncify_get_state() === AsyncifyState.REWINDING) { - _this.exports.asyncify_stop_rewind(); - return _this.value; - } - _this.assertState(); - const v = f.apply(this, arguments); - if (!(0, util_1.isPromiseLike)(v)) - return v; - _this.exports.asyncify_start_unwind(_this.dataPtr); - _this.value = v; - }); - } - wrapImports(imports) { - const importObject = {}; - Object.keys(imports).forEach(k => { - const mod = imports[k]; - const newModule = {}; - Object.keys(mod).forEach(name => { - const importValue = mod[name]; - if (typeof importValue === 'function') { - newModule[name] = this.wrapImportFunction(importValue); - } - else { - newModule[name] = importValue; - } - }); - importObject[k] = newModule; - }); - return importObject; - } - wrapExportFunction(f) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - return (async function () { - _this.assertState(); - let ret = f.apply(this, arguments); - while (_this.exports.asyncify_get_state() === AsyncifyState.UNWINDING) { - _this.exports.asyncify_stop_unwind(); - _this.value = await _this.value; - _this.assertState(); - _this.exports.asyncify_start_rewind(_this.dataPtr); - ret = f.call(this); - } - _this.assertState(); - return ret; - }); - } - wrapExports(exports, needWrap) { - return (0, util_1.wrapInstanceExports)(exports, (exportValue, name) => { - let ignore = ignoreNames.indexOf(name) !== -1 || typeof exportValue !== 'function'; - if (Array.isArray(needWrap)) { - ignore = ignore || (needWrap.indexOf(name) === -1); - } - return ignore ? exportValue : this.wrapExportFunction(exportValue); - }); - } -} -exports.Asyncify = Asyncify; -//# sourceMappingURL=asyncify.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/index.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/index.js deleted file mode 100644 index 67a4444..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/index.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -/** - * @packageDocumentation - */ -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./asyncify"), exports); -tslib_1.__exportStar(require("./load"), exports); -tslib_1.__exportStar(require("./wasi/index"), exports); -tslib_1.__exportStar(require("./memory"), exports); -tslib_1.__exportStar(require("./jspi"), exports); -tslib_1.__exportStar(require("./wasi/fs"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/jspi.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/jspi.js deleted file mode 100644 index 1345bc7..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/jspi.js +++ /dev/null @@ -1,46 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.wrapExports = exports.wrapAsyncExport = exports.wrapAsyncImport = void 0; -const util_1 = require("./wasi/util"); -const webassembly_1 = require("./webassembly"); -function checkWebAssemblyFunction() { - const WebAssemblyFunction = webassembly_1._WebAssembly.Function; - if (typeof WebAssemblyFunction !== 'function') { - throw new Error('WebAssembly.Function is not supported in this environment.' + - ' If you are using V8 based browser like Chrome, try to specify' + - ' --js-flags="--wasm-staging --experimental-wasm-stack-switching"'); - } - return WebAssemblyFunction; -} -/** @public */ -function wrapAsyncImport(f, parameterType, returnType) { - const WebAssemblyFunction = checkWebAssemblyFunction(); - if (typeof f !== 'function') { - throw new TypeError('Function required'); - } - const parameters = parameterType.slice(0); - parameters.unshift('externref'); - return new WebAssemblyFunction({ parameters, results: returnType }, f, { suspending: 'first' }); -} -exports.wrapAsyncImport = wrapAsyncImport; -/** @public */ -function wrapAsyncExport(f) { - const WebAssemblyFunction = checkWebAssemblyFunction(); - if (typeof f !== 'function') { - throw new TypeError('Function required'); - } - return new WebAssemblyFunction({ parameters: [...WebAssemblyFunction.type(f).parameters.slice(1)], results: ['externref'] }, f, { promising: 'first' }); -} -exports.wrapAsyncExport = wrapAsyncExport; -/** @public */ -function wrapExports(exports, needWrap) { - return (0, util_1.wrapInstanceExports)(exports, (exportValue, name) => { - let ignore = typeof exportValue !== 'function'; - if (Array.isArray(needWrap)) { - ignore = ignore || (needWrap.indexOf(name) === -1); - } - return ignore ? exportValue : wrapAsyncExport(exportValue); - }); -} -exports.wrapExports = wrapExports; -//# sourceMappingURL=jspi.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/load.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/load.js deleted file mode 100644 index 9138345..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/load.js +++ /dev/null @@ -1,97 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.asyncifyLoadSync = exports.loadSync = exports.asyncifyLoad = exports.load = void 0; -const webassembly_1 = require("./webassembly"); -const asyncify_1 = require("./asyncify"); -function validateImports(imports) { - if (imports && typeof imports !== 'object') { - throw new TypeError('imports must be an object or undefined'); - } -} -function fetchWasm(urlOrBuffer, imports) { - if (typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { - return webassembly_1._WebAssembly.instantiate(urlOrBuffer, imports); - } - return fetch(urlOrBuffer) - .then(response => response.arrayBuffer()) - .then(buffer => webassembly_1._WebAssembly.instantiate(buffer, imports)); -} -/** @public */ -function load(wasmInput, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - let source; - if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { - return webassembly_1._WebAssembly.instantiate(wasmInput, imports); - } - if (wasmInput instanceof webassembly_1._WebAssembly.Module) { - return webassembly_1._WebAssembly.instantiate(wasmInput, imports).then((instance) => { - return { instance, module: wasmInput }; - }); - } - if (typeof wasmInput !== 'string' && !(wasmInput instanceof URL)) { - throw new TypeError('Invalid source'); - } - if (typeof webassembly_1._WebAssembly.instantiateStreaming === 'function') { - let responsePromise; - try { - responsePromise = fetch(wasmInput); - source = webassembly_1._WebAssembly.instantiateStreaming(responsePromise, imports).catch(() => { - return fetchWasm(wasmInput, imports); - }); - } - catch (_) { - source = fetchWasm(wasmInput, imports); - } - } - else { - source = fetchWasm(wasmInput, imports); - } - return source; -} -exports.load = load; -/** @public */ -function asyncifyLoad(asyncify, urlOrBuffer, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - const asyncifyHelper = new asyncify_1.Asyncify(); - imports = asyncifyHelper.wrapImports(imports); - return load(urlOrBuffer, imports).then(source => { - var _a; - const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); - return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; - }); -} -exports.asyncifyLoad = asyncifyLoad; -/** @public */ -function loadSync(wasmInput, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - let module; - if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { - module = new webassembly_1._WebAssembly.Module(wasmInput); - } - else if (wasmInput instanceof WebAssembly.Module) { - module = wasmInput; - } - else { - throw new TypeError('Invalid source'); - } - const instance = new webassembly_1._WebAssembly.Instance(module, imports); - const source = { instance, module }; - return source; -} -exports.loadSync = loadSync; -/** @public */ -function asyncifyLoadSync(asyncify, buffer, imports) { - var _a; - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - const asyncifyHelper = new asyncify_1.Asyncify(); - imports = asyncifyHelper.wrapImports(imports); - const source = loadSync(buffer, imports); - const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); - return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; -} -exports.asyncifyLoadSync = asyncifyLoadSync; -//# sourceMappingURL=load.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/memory.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/memory.js deleted file mode 100644 index ca46ca5..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/memory.js +++ /dev/null @@ -1,35 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.extendMemory = exports.Memory = exports.WebAssemblyMemory = void 0; -/* eslint-disable spaced-comment */ -const webassembly_1 = require("./webassembly"); -/** @public */ -exports.WebAssemblyMemory = (function () { return webassembly_1._WebAssembly.Memory; })(); -/** @public */ -class Memory extends exports.WebAssemblyMemory { - // eslint-disable-next-line @typescript-eslint/no-useless-constructor - constructor(descriptor) { - super(descriptor); - } - get HEAP8() { return new Int8Array(super.buffer); } - get HEAPU8() { return new Uint8Array(super.buffer); } - get HEAP16() { return new Int16Array(super.buffer); } - get HEAPU16() { return new Uint16Array(super.buffer); } - get HEAP32() { return new Int32Array(super.buffer); } - get HEAPU32() { return new Uint32Array(super.buffer); } - get HEAP64() { return new BigInt64Array(super.buffer); } - get HEAPU64() { return new BigUint64Array(super.buffer); } - get HEAPF32() { return new Float32Array(super.buffer); } - get HEAPF64() { return new Float64Array(super.buffer); } - get view() { return new DataView(super.buffer); } -} -exports.Memory = Memory; -/** @public */ -function extendMemory(memory) { - if (Object.getPrototypeOf(memory) === webassembly_1._WebAssembly.Memory.prototype) { - Object.setPrototypeOf(memory, Memory.prototype); - } - return memory; -} -exports.extendMemory = extendMemory; -//# sourceMappingURL=memory.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/error.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/error.js deleted file mode 100644 index e417da3..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/error.js +++ /dev/null @@ -1,103 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.WasiError = exports.strerror = void 0; -const types_1 = require("./types"); -function strerror(errno) { - switch (errno) { - case types_1.WasiErrno.ESUCCESS: return 'Success'; - case types_1.WasiErrno.E2BIG: return 'Argument list too long'; - case types_1.WasiErrno.EACCES: return 'Permission denied'; - case types_1.WasiErrno.EADDRINUSE: return 'Address in use'; - case types_1.WasiErrno.EADDRNOTAVAIL: return 'Address not available'; - case types_1.WasiErrno.EAFNOSUPPORT: return 'Address family not supported by protocol'; - case types_1.WasiErrno.EAGAIN: return 'Resource temporarily unavailable'; - case types_1.WasiErrno.EALREADY: return 'Operation already in progress'; - case types_1.WasiErrno.EBADF: return 'Bad file descriptor'; - case types_1.WasiErrno.EBADMSG: return 'Bad message'; - case types_1.WasiErrno.EBUSY: return 'Resource busy'; - case types_1.WasiErrno.ECANCELED: return 'Operation canceled'; - case types_1.WasiErrno.ECHILD: return 'No child process'; - case types_1.WasiErrno.ECONNABORTED: return 'Connection aborted'; - case types_1.WasiErrno.ECONNREFUSED: return 'Connection refused'; - case types_1.WasiErrno.ECONNRESET: return 'Connection reset by peer'; - case types_1.WasiErrno.EDEADLK: return 'Resource deadlock would occur'; - case types_1.WasiErrno.EDESTADDRREQ: return 'Destination address required'; - case types_1.WasiErrno.EDOM: return 'Domain error'; - case types_1.WasiErrno.EDQUOT: return 'Quota exceeded'; - case types_1.WasiErrno.EEXIST: return 'File exists'; - case types_1.WasiErrno.EFAULT: return 'Bad address'; - case types_1.WasiErrno.EFBIG: return 'File too large'; - case types_1.WasiErrno.EHOSTUNREACH: return 'Host is unreachable'; - case types_1.WasiErrno.EIDRM: return 'Identifier removed'; - case types_1.WasiErrno.EILSEQ: return 'Illegal byte sequence'; - case types_1.WasiErrno.EINPROGRESS: return 'Operation in progress'; - case types_1.WasiErrno.EINTR: return 'Interrupted system call'; - case types_1.WasiErrno.EINVAL: return 'Invalid argument'; - case types_1.WasiErrno.EIO: return 'I/O error'; - case types_1.WasiErrno.EISCONN: return 'Socket is connected'; - case types_1.WasiErrno.EISDIR: return 'Is a directory'; - case types_1.WasiErrno.ELOOP: return 'Symbolic link loop'; - case types_1.WasiErrno.EMFILE: return 'No file descriptors available'; - case types_1.WasiErrno.EMLINK: return 'Too many links'; - case types_1.WasiErrno.EMSGSIZE: return 'Message too large'; - case types_1.WasiErrno.EMULTIHOP: return 'Multihop attempted'; - case types_1.WasiErrno.ENAMETOOLONG: return 'Filename too long'; - case types_1.WasiErrno.ENETDOWN: return 'Network is down'; - case types_1.WasiErrno.ENETRESET: return 'Connection reset by network'; - case types_1.WasiErrno.ENETUNREACH: return 'Network unreachable'; - case types_1.WasiErrno.ENFILE: return 'Too many files open in system'; - case types_1.WasiErrno.ENOBUFS: return 'No buffer space available'; - case types_1.WasiErrno.ENODEV: return 'No such device'; - case types_1.WasiErrno.ENOENT: return 'No such file or directory'; - case types_1.WasiErrno.ENOEXEC: return 'Exec format error'; - case types_1.WasiErrno.ENOLCK: return 'No locks available'; - case types_1.WasiErrno.ENOLINK: return 'Link has been severed'; - case types_1.WasiErrno.ENOMEM: return 'Out of memory'; - case types_1.WasiErrno.ENOMSG: return 'No message of the desired type'; - case types_1.WasiErrno.ENOPROTOOPT: return 'Protocol not available'; - case types_1.WasiErrno.ENOSPC: return 'No space left on device'; - case types_1.WasiErrno.ENOSYS: return 'Function not implemented'; - case types_1.WasiErrno.ENOTCONN: return 'Socket not connected'; - case types_1.WasiErrno.ENOTDIR: return 'Not a directory'; - case types_1.WasiErrno.ENOTEMPTY: return 'Directory not empty'; - case types_1.WasiErrno.ENOTRECOVERABLE: return 'State not recoverable'; - case types_1.WasiErrno.ENOTSOCK: return 'Not a socket'; - case types_1.WasiErrno.ENOTSUP: return 'Not supported'; - case types_1.WasiErrno.ENOTTY: return 'Not a tty'; - case types_1.WasiErrno.ENXIO: return 'No such device or address'; - case types_1.WasiErrno.EOVERFLOW: return 'Value too large for data type'; - case types_1.WasiErrno.EOWNERDEAD: return 'Previous owner died'; - case types_1.WasiErrno.EPERM: return 'Operation not permitted'; - case types_1.WasiErrno.EPIPE: return 'Broken pipe'; - case types_1.WasiErrno.EPROTO: return 'Protocol error'; - case types_1.WasiErrno.EPROTONOSUPPORT: return 'Protocol not supported'; - case types_1.WasiErrno.EPROTOTYPE: return 'Protocol wrong type for socket'; - case types_1.WasiErrno.ERANGE: return 'Result not representable'; - case types_1.WasiErrno.EROFS: return 'Read-only file system'; - case types_1.WasiErrno.ESPIPE: return 'Invalid seek'; - case types_1.WasiErrno.ESRCH: return 'No such process'; - case types_1.WasiErrno.ESTALE: return 'Stale file handle'; - case types_1.WasiErrno.ETIMEDOUT: return 'Operation timed out'; - case types_1.WasiErrno.ETXTBSY: return 'Text file busy'; - case types_1.WasiErrno.EXDEV: return 'Cross-device link'; - case types_1.WasiErrno.ENOTCAPABLE: return 'Capabilities insufficient'; - default: return 'Unknown error'; - } -} -exports.strerror = strerror; -class WasiError extends Error { - constructor(message, errno) { - super(message); - this.errno = errno; - } - getErrorMessage() { - return strerror(this.errno); - } -} -exports.WasiError = WasiError; -Object.defineProperty(WasiError.prototype, 'name', { - configurable: true, - writable: true, - value: 'WasiError' -}); -//# sourceMappingURL=error.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/fd.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/fd.js deleted file mode 100644 index 4cc3fbc..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/fd.js +++ /dev/null @@ -1,268 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AsyncTable = exports.SyncTable = exports.FileDescriptorTable = exports.toFileStat = exports.toFileType = exports.StandardOutput = exports.FileDescriptor = exports.concatBuffer = void 0; -const types_1 = require("./types"); -const rights_1 = require("./rights"); -const error_1 = require("./error"); -function concatBuffer(buffers, size) { - let total = 0; - if (typeof size === 'number' && size >= 0) { - total = size; - } - else { - for (let i = 0; i < buffers.length; i++) { - const buffer = buffers[i]; - total += buffer.length; - } - } - let pos = 0; - const ret = new Uint8Array(total); - for (let i = 0; i < buffers.length; i++) { - const buffer = buffers[i]; - ret.set(buffer, pos); - pos += buffer.length; - } - return ret; -} -exports.concatBuffer = concatBuffer; -class FileDescriptor { - constructor(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { - this.id = id; - this.fd = fd; - this.path = path; - this.realPath = realPath; - this.type = type; - this.rightsBase = rightsBase; - this.rightsInheriting = rightsInheriting; - this.preopen = preopen; - this.pos = BigInt(0); - this.size = BigInt(0); - } - seek(offset, whence) { - if (whence === types_1.WasiWhence.SET) { - this.pos = BigInt(offset); - } - else if (whence === types_1.WasiWhence.CUR) { - this.pos += BigInt(offset); - } - else if (whence === types_1.WasiWhence.END) { - this.pos = BigInt(this.size) - BigInt(offset); - } - else { - throw new error_1.WasiError('Unknown whence', types_1.WasiErrno.EIO); - } - return this.pos; - } -} -exports.FileDescriptor = FileDescriptor; -class StandardOutput extends FileDescriptor { - constructor(log, id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { - super(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen); - this._log = log; - this._buf = null; - } - write(buffer) { - const originalBuffer = buffer; - if (this._buf) { - buffer = concatBuffer([this._buf, buffer]); - this._buf = null; - } - if (buffer.indexOf(10) === -1) { - this._buf = buffer; - return originalBuffer.byteLength; - } - let written = 0; - let lastBegin = 0; - let index; - while ((index = buffer.indexOf(10, written)) !== -1) { - const str = new TextDecoder().decode(buffer.subarray(lastBegin, index)); - this._log(str); - written += index - lastBegin + 1; - lastBegin = index + 1; - } - if (written < buffer.length) { - this._buf = buffer.slice(written); - } - return originalBuffer.byteLength; - } -} -exports.StandardOutput = StandardOutput; -function toFileType(stat) { - if (stat.isBlockDevice()) - return types_1.WasiFileType.BLOCK_DEVICE; - if (stat.isCharacterDevice()) - return types_1.WasiFileType.CHARACTER_DEVICE; - if (stat.isDirectory()) - return types_1.WasiFileType.DIRECTORY; - if (stat.isSocket()) - return types_1.WasiFileType.SOCKET_STREAM; - if (stat.isFile()) - return types_1.WasiFileType.REGULAR_FILE; - if (stat.isSymbolicLink()) - return types_1.WasiFileType.SYMBOLIC_LINK; - return types_1.WasiFileType.UNKNOWN; -} -exports.toFileType = toFileType; -function toFileStat(view, buf, stat) { - view.setBigUint64(buf, stat.dev, true); - view.setBigUint64(buf + 8, stat.ino, true); - view.setBigUint64(buf + 16, BigInt(toFileType(stat)), true); - view.setBigUint64(buf + 24, stat.nlink, true); - view.setBigUint64(buf + 32, stat.size, true); - view.setBigUint64(buf + 40, stat.atimeMs * BigInt(1000000), true); - view.setBigUint64(buf + 48, stat.mtimeMs * BigInt(1000000), true); - view.setBigUint64(buf + 56, stat.ctimeMs * BigInt(1000000), true); -} -exports.toFileStat = toFileStat; -class FileDescriptorTable { - constructor(options) { - this.used = 0; - this.size = options.size; - this.fds = Array(options.size); - this.stdio = [options.in, options.out, options.err]; - this.print = options.print; - this.printErr = options.printErr; - this.insertStdio(options.in, 0, ''); - this.insertStdio(options.out, 1, ''); - this.insertStdio(options.err, 2, ''); - } - insertStdio(fd, expected, name) { - const type = types_1.WasiFileType.CHARACTER_DEVICE; - const { base, inheriting } = (0, rights_1.getRights)(this.stdio, fd, types_1.FileControlFlag.O_RDWR, type); - const wrap = this.insert(fd, name, name, type, base, inheriting, 0); - if (wrap.id !== expected) { - throw new error_1.WasiError(`id: ${wrap.id} !== expected: ${expected}`, types_1.WasiErrno.EBADF); - } - return wrap; - } - insert(fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen) { - var _a, _b; - let index = -1; - if (this.used >= this.size) { - const newSize = this.size * 2; - this.fds.length = newSize; - index = this.size; - this.size = newSize; - } - else { - for (let i = 0; i < this.size; ++i) { - if (this.fds[i] == null) { - index = i; - break; - } - } - } - let entry; - if (mappedPath === '') { - entry = new StandardOutput((_a = this.print) !== null && _a !== void 0 ? _a : console.log, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - else if (mappedPath === '') { - entry = new StandardOutput((_b = this.printErr) !== null && _b !== void 0 ? _b : console.error, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - else { - entry = new FileDescriptor(index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - this.fds[index] = entry; - this.used++; - return entry; - } - get(id, base, inheriting) { - if (id >= this.size) { - throw new error_1.WasiError('Invalid fd', types_1.WasiErrno.EBADF); - } - const entry = this.fds[id]; - if (!entry || entry.id !== id) { - throw new error_1.WasiError('Bad file descriptor', types_1.WasiErrno.EBADF); - } - /* Validate that the fd has the necessary rights. */ - if ((~entry.rightsBase & base) !== BigInt(0) || (~entry.rightsInheriting & inheriting) !== BigInt(0)) { - throw new error_1.WasiError('Capabilities insufficient', types_1.WasiErrno.ENOTCAPABLE); - } - return entry; - } - remove(id) { - if (id >= this.size) { - throw new error_1.WasiError('Invalid fd', types_1.WasiErrno.EBADF); - } - const entry = this.fds[id]; - if (!entry || entry.id !== id) { - throw new error_1.WasiError('Bad file descriptor', types_1.WasiErrno.EBADF); - } - this.fds[id] = undefined; - this.used--; - } -} -exports.FileDescriptorTable = FileDescriptorTable; -class SyncTable extends FileDescriptorTable { - constructor(options) { - super(options); - this.fs = options.fs; - } - getFileTypeByFd(fd) { - const stats = this.fs.fstatSync(fd, { bigint: true }); - return toFileType(stats); - } - insertPreopen(fd, mappedPath, realPath) { - const type = this.getFileTypeByFd(fd); - if (type !== types_1.WasiFileType.DIRECTORY) { - throw new error_1.WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, types_1.WasiErrno.ENOTDIR); - } - const result = (0, rights_1.getRights)(this.stdio, fd, 0, type); - return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); - } - renumber(dst, src) { - if (dst === src) - return; - if (dst >= this.size || src >= this.size) { - throw new error_1.WasiError('Invalid fd', types_1.WasiErrno.EBADF); - } - const dstEntry = this.fds[dst]; - const srcEntry = this.fds[src]; - if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { - throw new error_1.WasiError('Invalid fd', types_1.WasiErrno.EBADF); - } - this.fs.closeSync(dstEntry.fd); - this.fds[dst] = this.fds[src]; - this.fds[dst].id = dst; - this.fds[src] = undefined; - this.used--; - } -} -exports.SyncTable = SyncTable; -class AsyncTable extends FileDescriptorTable { - // eslint-disable-next-line @typescript-eslint/no-useless-constructor - constructor(options) { - super(options); - } - async getFileTypeByFd(fd) { - const stats = await fd.stat({ bigint: true }); - return toFileType(stats); - } - async insertPreopen(fd, mappedPath, realPath) { - const type = await this.getFileTypeByFd(fd); - if (type !== types_1.WasiFileType.DIRECTORY) { - throw new error_1.WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, types_1.WasiErrno.ENOTDIR); - } - const result = (0, rights_1.getRights)(this.stdio, fd.fd, 0, type); - return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); - } - async renumber(dst, src) { - if (dst === src) - return; - if (dst >= this.size || src >= this.size) { - throw new error_1.WasiError('Invalid fd', types_1.WasiErrno.EBADF); - } - const dstEntry = this.fds[dst]; - const srcEntry = this.fds[src]; - if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { - throw new error_1.WasiError('Invalid fd', types_1.WasiErrno.EBADF); - } - await dstEntry.fd.close(); - this.fds[dst] = this.fds[src]; - this.fds[dst].id = dst; - this.fds[src] = undefined; - this.used--; - } -} -exports.AsyncTable = AsyncTable; -//# sourceMappingURL=fd.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/fs.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/fs.js deleted file mode 100644 index f9e16d9..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/fs.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=fs.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/index.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/index.js deleted file mode 100644 index 44865ea..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/index.js +++ /dev/null @@ -1,192 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createAsyncWASI = exports.WASI = void 0; -const preview1_1 = require("./preview1"); -const util_1 = require("./util"); -// eslint-disable-next-line spaced-comment -const kEmptyObject = /*#__PURE__*/ Object.freeze(/*#__PURE__*/ Object.create(null)); -const kExitCode = Symbol('kExitCode'); -const kSetMemory = Symbol('kSetMemory'); -const kStarted = Symbol('kStarted'); -const kInstance = Symbol('kInstance'); -const kBindingName = Symbol('kBindingName'); -function validateOptions(options) { - var _a; - (0, util_1.validateObject)(options, 'options'); - let _WASI; - if (options.version !== undefined) { - (0, util_1.validateString)(options.version, 'options.version'); - switch (options.version) { - case 'unstable': - _WASI = preview1_1.WASI; - this[kBindingName] = 'wasi_unstable'; - break; - case 'preview1': - _WASI = preview1_1.WASI; - this[kBindingName] = 'wasi_snapshot_preview1'; - break; - default: - throw new TypeError(`unsupported WASI version "${options.version}"`); - } - } - else { - _WASI = preview1_1.WASI; - this[kBindingName] = 'wasi_snapshot_preview1'; - } - if (options.args !== undefined) { - (0, util_1.validateArray)(options.args, 'options.args'); - } - const args = ((_a = options.args) !== null && _a !== void 0 ? _a : []).map(String); - const env = []; - if (options.env !== undefined) { - (0, util_1.validateObject)(options.env, 'options.env'); - Object.entries(options.env).forEach(({ 0: key, 1: value }) => { - if (value !== undefined) { - env.push(`${key}=${value}`); - } - }); - } - const preopens = []; - if (options.preopens !== undefined) { - (0, util_1.validateObject)(options.preopens, 'options.preopens'); - Object.entries(options.preopens).forEach(({ 0: key, 1: value }) => preopens.push({ mappedPath: String(key), realPath: String(value) })); - } - if (preopens.length > 0) { - if (options.fs === undefined) { - throw new Error('filesystem is disabled, can not preopen directory'); - } - try { - (0, util_1.validateObject)(options.fs, 'options.fs'); - } - catch (_) { - throw new TypeError('Node.js fs like implementation is not provided'); - } - } - // if (options.filesystem !== undefined) { - // validateObject(options.filesystem, 'options.filesystem') - // validateString(options.filesystem.type, 'options.filesystem.type') - // if (options.filesystem.type !== 'memfs' && options.filesystem.type !== 'file-system-access-api') { - // throw new Error(`Filesystem type ${(options.filesystem as any).type as string} is not supported, only "memfs" and "file-system-access-api" is supported currently`) - // } - // try { - // validateObject(options.filesystem.fs, 'options.filesystem.fs') - // } catch (_) { - // throw new Error('Node.js fs like implementation is not provided') - // } - // } - if (options.print !== undefined) - (0, util_1.validateFunction)(options.print, 'options.print'); - if (options.printErr !== undefined) - (0, util_1.validateFunction)(options.printErr, 'options.printErr'); - if (options.returnOnExit !== undefined) { - (0, util_1.validateBoolean)(options.returnOnExit, 'options.returnOnExit'); - } - // const { stdin = 0, stdout = 1, stderr = 2 } = options - // validateInt32(stdin, 'options.stdin', 0) - // validateInt32(stdout, 'options.stdout', 0) - // validateInt32(stderr, 'options.stderr', 0) - // const stdio = [stdin, stdout, stderr] as const - const stdio = [0, 1, 2]; - return { - args, - env, - preopens, - stdio, - _WASI - }; -} -function initWASI(setMemory, wrap) { - this[kSetMemory] = setMemory; - this.wasiImport = wrap; - this[kStarted] = false; - this[kExitCode] = 0; - this[kInstance] = undefined; -} -/** @public */ -class WASI { - constructor(options = kEmptyObject) { - const { args, env, preopens, stdio, _WASI } = validateOptions.call(this, options); - const wrap = _WASI.createSync(args, env, preopens, stdio, options.fs, options.print, options.printErr); - const setMemory = wrap._setMemory; - delete wrap._setMemory; - initWASI.call(this, setMemory, wrap); - if (options.returnOnExit) { - wrap.proc_exit = wasiReturnOnProcExit.bind(this); - } - } - finalizeBindings(instance, _a) { - var _b; - var { memory = (_b = instance === null || instance === void 0 ? void 0 : instance.exports) === null || _b === void 0 ? void 0 : _b.memory } = _a === void 0 ? {} : _a; - if (this[kStarted]) { - throw new Error('WASI instance has already started'); - } - (0, util_1.validateObject)(instance, 'instance'); - (0, util_1.validateObject)(instance.exports, 'instance.exports'); - this[kSetMemory](memory); - this[kInstance] = instance; - this[kStarted] = true; - } - // Must not export _initialize, must export _start - start(instance) { - this.finalizeBindings(instance); - const { _start, _initialize } = this[kInstance].exports; - (0, util_1.validateFunction)(_start, 'instance.exports._start'); - (0, util_1.validateUndefined)(_initialize, 'instance.exports._initialize'); - let ret; - try { - ret = _start(); - } - catch (err) { - if (err !== kExitCode) { - throw err; - } - } - if (ret instanceof Promise) { - return ret.then(() => this[kExitCode], (err) => { - if (err !== kExitCode) { - throw err; - } - return this[kExitCode]; - }); - } - return this[kExitCode]; - } - // Must not export _start, may optionally export _initialize - initialize(instance) { - this.finalizeBindings(instance); - const { _start, _initialize } = this[kInstance].exports; - (0, util_1.validateUndefined)(_start, 'instance.exports._start'); - if (_initialize !== undefined) { - (0, util_1.validateFunction)(_initialize, 'instance.exports._initialize'); - return _initialize(); - } - } - getImportObject() { - return { [this[kBindingName]]: this.wasiImport }; - } -} -exports.WASI = WASI; -function wasiReturnOnProcExit(rval) { - this[kExitCode] = rval; - // eslint-disable-next-line @typescript-eslint/no-throw-literal - throw kExitCode; -} -/** @public */ -async function createAsyncWASI(options = kEmptyObject) { - const _this = Object.create(WASI.prototype); - const { args, env, preopens, stdio, _WASI } = validateOptions.call(_this, options); - if (options.asyncify !== undefined) { - (0, util_1.validateObject)(options.asyncify, 'options.asyncify'); - (0, util_1.validateFunction)(options.asyncify.wrapImportFunction, 'options.asyncify.wrapImportFunction'); - } - const wrap = await _WASI.createAsync(args, env, preopens, stdio, options.fs, options.print, options.printErr, options.asyncify); - const setMemory = wrap._setMemory; - delete wrap._setMemory; - initWASI.call(_this, setMemory, wrap); - if (options.returnOnExit) { - wrap.proc_exit = wasiReturnOnProcExit.bind(_this); - } - return _this; -} -exports.createAsyncWASI = createAsyncWASI; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js deleted file mode 100644 index bfaf334..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +++ /dev/null @@ -1,174 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.relative = exports.resolve = void 0; -const util_1 = require("./util"); -const CHAR_DOT = 46; /* . */ -const CHAR_FORWARD_SLASH = 47; /* / */ -function isPosixPathSeparator(code) { - return code === CHAR_FORWARD_SLASH; -} -function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { - let res = ''; - let lastSegmentLength = 0; - let lastSlash = -1; - let dots = 0; - let code = 0; - for (let i = 0; i <= path.length; ++i) { - if (i < path.length) { - code = path.charCodeAt(i); - } - else if (isPathSeparator(code)) { - break; - } - else { - code = CHAR_FORWARD_SLASH; - } - if (isPathSeparator(code)) { - if (lastSlash === i - 1 || dots === 1) { - // NOOP - } - else if (dots === 2) { - if (res.length < 2 || lastSegmentLength !== 2 || - res.charCodeAt(res.length - 1) !== CHAR_DOT || - res.charCodeAt(res.length - 2) !== CHAR_DOT) { - if (res.length > 2) { - const lastSlashIndex = res.indexOf(separator); - if (lastSlashIndex === -1) { - res = ''; - lastSegmentLength = 0; - } - else { - res = res.slice(0, lastSlashIndex); - lastSegmentLength = - res.length - 1 - res.indexOf(separator); - } - lastSlash = i; - dots = 0; - continue; - } - else if (res.length !== 0) { - res = ''; - lastSegmentLength = 0; - lastSlash = i; - dots = 0; - continue; - } - } - if (allowAboveRoot) { - res += res.length > 0 ? `${separator}..` : '..'; - lastSegmentLength = 2; - } - } - else { - if (res.length > 0) { - res += `${separator}${path.slice(lastSlash + 1, i)}`; - } - else { - res = path.slice(lastSlash + 1, i); - } - lastSegmentLength = i - lastSlash - 1; - } - lastSlash = i; - dots = 0; - } - else if (code === CHAR_DOT && dots !== -1) { - ++dots; - } - else { - dots = -1; - } - } - return res; -} -function resolve(...args) { - let resolvedPath = ''; - let resolvedAbsolute = false; - for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { - const path = i >= 0 ? args[i] : '/'; - (0, util_1.validateString)(path, 'path'); - // Skip empty entries - if (path.length === 0) { - continue; - } - resolvedPath = `${path}/${resolvedPath}`; - resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - // Normalize the path - resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); - if (resolvedAbsolute) { - return `/${resolvedPath}`; - } - return resolvedPath.length > 0 ? resolvedPath : '.'; -} -exports.resolve = resolve; -function relative(from, to) { - (0, util_1.validateString)(from, 'from'); - (0, util_1.validateString)(to, 'to'); - if (from === to) - return ''; - // Trim leading forward slashes. - from = resolve(from); - to = resolve(to); - if (from === to) - return ''; - const fromStart = 1; - const fromEnd = from.length; - const fromLen = fromEnd - fromStart; - const toStart = 1; - const toLen = to.length - toStart; - // Compare paths to find the longest common path from root - const length = (fromLen < toLen ? fromLen : toLen); - let lastCommonSep = -1; - let i = 0; - for (; i < length; i++) { - const fromCode = from.charCodeAt(fromStart + i); - if (fromCode !== to.charCodeAt(toStart + i)) { - break; - } - else if (fromCode === CHAR_FORWARD_SLASH) { - lastCommonSep = i; - } - } - if (i === length) { - if (toLen > length) { - if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { - // We get here if `from` is the exact base path for `to`. - // For example: from='/foo/bar'; to='/foo/bar/baz' - return to.slice(toStart + i + 1); - } - if (i === 0) { - // We get here if `from` is the root - // For example: from='/'; to='/foo' - return to.slice(toStart + i); - } - } - else if (fromLen > length) { - if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { - // We get here if `to` is the exact base path for `from`. - // For example: from='/foo/bar/baz'; to='/foo/bar' - lastCommonSep = i; - } - else if (i === 0) { - // We get here if `to` is the root. - // For example: from='/foo/bar'; to='/' - lastCommonSep = 0; - } - } - } - let out = ''; - // Generate the relative path based on the path difference between `to` - // and `from`. - for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { - if (i === fromEnd || - from.charCodeAt(i) === CHAR_FORWARD_SLASH) { - out += out.length === 0 ? '..' : '/..'; - } - } - // Lastly, append the rest of the destination (`to`) path that comes after - // the common path parts. - return `${out}${to.slice(toStart + lastCommonSep)}`; -} -exports.relative = relative; -//# sourceMappingURL=path.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js deleted file mode 100644 index c59c36b..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +++ /dev/null @@ -1,1566 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.WASI = void 0; -const webassembly_1 = require("../webassembly"); -const path_1 = require("./path"); -const types_1 = require("./types"); -const fd_1 = require("./fd"); -const error_1 = require("./error"); -const util_1 = require("./util"); -const rights_1 = require("./rights"); -const memory_1 = require("../memory"); -const jspi_1 = require("../jspi"); -function copyMemory(targets, src) { - if (targets.length === 0 || src.length === 0) - return 0; - let copied = 0; - let left = src.length - copied; - for (let i = 0; i < targets.length; ++i) { - const target = targets[i]; - if (left < target.length) { - target.set(src.subarray(copied, copied + left), 0); - copied += left; - left = 0; - return copied; - } - target.set(src.subarray(copied, copied + target.length), 0); - copied += target.length; - left -= target.length; - } - return copied; -} -const _memory = new WeakMap(); -const _wasi = new WeakMap(); -const _fs = new WeakMap(); -function getMemory(wasi) { - return _memory.get(wasi); -} -function getFs(wasi) { - const fs = _fs.get(wasi); - if (!fs) - throw new Error('filesystem is unavailable'); - return fs; -} -function handleError(err) { - if (err instanceof error_1.WasiError) { - if (process.env.NODE_ENV !== 'production') { - console.warn(err); - } - return err.errno; - } - switch (err.code) { - case 'ENOENT': return types_1.WasiErrno.ENOENT; - case 'EBADF': return types_1.WasiErrno.EBADF; - case 'EINVAL': return types_1.WasiErrno.EINVAL; - case 'EPERM': return types_1.WasiErrno.EPERM; - case 'EPROTO': return types_1.WasiErrno.EPROTO; - case 'EEXIST': return types_1.WasiErrno.EEXIST; - case 'ENOTDIR': return types_1.WasiErrno.ENOTDIR; - case 'EMFILE': return types_1.WasiErrno.EMFILE; - case 'EACCES': return types_1.WasiErrno.EACCES; - case 'EISDIR': return types_1.WasiErrno.EISDIR; - case 'ENOTEMPTY': return types_1.WasiErrno.ENOTEMPTY; - case 'ENOSYS': return types_1.WasiErrno.ENOSYS; - } - throw err; -} -function defineName(name, f) { - Object.defineProperty(f, 'name', { value: name }); - return f; -} -function tryCall(f, wasi, args) { - let r; - try { - r = f.apply(wasi, args); - } - catch (err) { - return handleError(err); - } - if ((0, util_1.isPromiseLike)(r)) { - return r.then(_ => _, handleError); - } - return r; -} -function syscallWrap(self, name, f) { - let debug = false; - const NODE_DEBUG_NATIVE = (() => { - try { - return process.env.NODE_DEBUG_NATIVE; - } - catch (_) { - return undefined; - } - })(); - if (typeof NODE_DEBUG_NATIVE === 'string' && NODE_DEBUG_NATIVE.split(',').includes('wasi')) { - debug = true; - } - return debug - ? defineName(name, function () { - const args = Array.prototype.slice.call(arguments); - let debugArgs = [`${name}(${Array.from({ length: arguments.length }).map(() => '%d').join(', ')})`]; - debugArgs = debugArgs.concat(args); - console.debug.apply(console, debugArgs); - return tryCall(f, self, args); - }) - : defineName(name, function () { - return tryCall(f, self, arguments); - }); -} -function resolvePathSync(fs, fileDescriptor, path, flags) { - let resolvedPath = (0, path_1.resolve)(fileDescriptor.realPath, path); - if ((flags & 1) === 1) { - try { - resolvedPath = fs.readlinkSync(resolvedPath); - } - catch (err) { - if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { - throw err; - } - } - } - return resolvedPath; -} -async function resolvePathAsync(fs, fileDescriptor, path, flags) { - let resolvedPath = (0, path_1.resolve)(fileDescriptor.realPath, path); - if ((flags & 1) === 1) { - try { - resolvedPath = await fs.promises.readlink(resolvedPath); - } - catch (err) { - if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { - throw err; - } - } - } - return resolvedPath; -} -// eslint-disable-next-line spaced-comment -const encoder = /*#__PURE__*/ new TextEncoder(); -// eslint-disable-next-line spaced-comment -const decoder = /*#__PURE__*/ new TextDecoder(); -const INT64_MAX = (BigInt(1) << BigInt(63)) - BigInt(1); -function readStdin() { - const value = window.prompt(); - if (value === null) - return new Uint8Array(); - const buffer = new TextEncoder().encode(value + '\n'); - return buffer; -} -function validateFstFlagsOrReturn(flags) { - return (Boolean((flags) & ~(types_1.WasiFstFlag.SET_ATIM | types_1.WasiFstFlag.SET_ATIM_NOW | - types_1.WasiFstFlag.SET_MTIM | types_1.WasiFstFlag.SET_MTIM_NOW)) || - ((flags) & (types_1.WasiFstFlag.SET_ATIM | types_1.WasiFstFlag.SET_ATIM_NOW)) === - (types_1.WasiFstFlag.SET_ATIM | types_1.WasiFstFlag.SET_ATIM_NOW) || - ((flags) & (types_1.WasiFstFlag.SET_MTIM | types_1.WasiFstFlag.SET_MTIM_NOW)) === - (types_1.WasiFstFlag.SET_MTIM | types_1.WasiFstFlag.SET_MTIM_NOW)); -} -class WASI { - constructor(args, env, fds, asyncFs, fs, asyncify) { - this.args_get = syscallWrap(this, 'args_get', function (argv, argv_buf) { - argv = Number(argv); - argv_buf = Number(argv_buf); - if (argv === 0 || argv_buf === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const args = wasi.args; - for (let i = 0; i < args.length; ++i) { - const arg = args[i]; - view.setInt32(argv, argv_buf, true); - argv += 4; - const data = encoder.encode(arg + '\0'); - HEAPU8.set(data, argv_buf); - argv_buf += data.length; - } - return types_1.WasiErrno.ESUCCESS; - }); - this.args_sizes_get = syscallWrap(this, 'args_sizes_get', function (argc, argv_buf_size) { - argc = Number(argc); - argv_buf_size = Number(argv_buf_size); - if (argc === 0 || argv_buf_size === 0) { - return types_1.WasiErrno.EINVAL; - } - const { view } = getMemory(this); - const wasi = _wasi.get(this); - const args = wasi.args; - view.setUint32(argc, args.length, true); - view.setUint32(argv_buf_size, encoder.encode(args.join('\0') + '\0').length, true); - return types_1.WasiErrno.ESUCCESS; - }); - this.environ_get = syscallWrap(this, 'environ_get', function (environ, environ_buf) { - environ = Number(environ); - environ_buf = Number(environ_buf); - if (environ === 0 || environ_buf === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const env = wasi.env; - for (let i = 0; i < env.length; ++i) { - const pair = env[i]; - view.setInt32(environ, environ_buf, true); - environ += 4; - const data = encoder.encode(pair + '\0'); - HEAPU8.set(data, environ_buf); - environ_buf += data.length; - } - return types_1.WasiErrno.ESUCCESS; - }); - this.environ_sizes_get = syscallWrap(this, 'environ_sizes_get', function (len, buflen) { - len = Number(len); - buflen = Number(buflen); - if (len === 0 || buflen === 0) { - return types_1.WasiErrno.EINVAL; - } - const { view } = getMemory(this); - const wasi = _wasi.get(this); - view.setUint32(len, wasi.env.length, true); - view.setUint32(buflen, encoder.encode(wasi.env.join('\0') + '\0').length, true); - return types_1.WasiErrno.ESUCCESS; - }); - this.clock_res_get = syscallWrap(this, 'clock_res_get', function (id, resolution) { - resolution = Number(resolution); - if (resolution === 0) { - return types_1.WasiErrno.EINVAL; - } - const { view } = getMemory(this); - switch (id) { - case types_1.WasiClockid.REALTIME: - view.setBigUint64(resolution, BigInt(1000000), true); - return types_1.WasiErrno.ESUCCESS; - case types_1.WasiClockid.MONOTONIC: - case types_1.WasiClockid.PROCESS_CPUTIME_ID: - case types_1.WasiClockid.THREAD_CPUTIME_ID: - view.setBigUint64(resolution, BigInt(1000), true); - return types_1.WasiErrno.ESUCCESS; - default: return types_1.WasiErrno.EINVAL; - } - }); - this.clock_time_get = syscallWrap(this, 'clock_time_get', function (id, _percision, time) { - time = Number(time); - if (time === 0) { - return types_1.WasiErrno.EINVAL; - } - const { view } = getMemory(this); - switch (id) { - case types_1.WasiClockid.REALTIME: - view.setBigUint64(time, BigInt(Date.now()) * BigInt(1000000), true); - return types_1.WasiErrno.ESUCCESS; - case types_1.WasiClockid.MONOTONIC: - case types_1.WasiClockid.PROCESS_CPUTIME_ID: - case types_1.WasiClockid.THREAD_CPUTIME_ID: { - const t = performance.now() / 1000; - const s = Math.trunc(t); - const ms = Math.floor((t - s) * 1000); - const result = BigInt(s) * BigInt(1000000000) + BigInt(ms) * BigInt(1000000); - view.setBigUint64(time, result, true); - return types_1.WasiErrno.ESUCCESS; - } - default: return types_1.WasiErrno.EINVAL; - } - }); - this.fd_advise = syscallWrap(this, 'fd_advise', function (_fd, _offset, _len, _advice) { - return types_1.WasiErrno.ENOSYS; - }); - this.fd_fdstat_get = syscallWrap(this, 'fd_fdstat_get', function (fd, fdstat) { - fdstat = Number(fdstat); - if (fdstat === 0) { - return types_1.WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - const { view } = getMemory(this); - view.setUint16(fdstat, fileDescriptor.type, true); - view.setUint16(fdstat + 2, 0, true); - view.setBigUint64(fdstat + 8, fileDescriptor.rightsBase, true); - view.setBigUint64(fdstat + 16, fileDescriptor.rightsInheriting, true); - return types_1.WasiErrno.ESUCCESS; - }); - this.fd_fdstat_set_flags = syscallWrap(this, 'fd_fdstat_set_flags', function (_fd, _flags) { - return types_1.WasiErrno.ENOSYS; - }); - this.fd_fdstat_set_rights = syscallWrap(this, 'fd_fdstat_set_rights', function (fd, rightsBase, rightsInheriting) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - if ((rightsBase | fileDescriptor.rightsBase) > fileDescriptor.rightsBase) { - return types_1.WasiErrno.ENOTCAPABLE; - } - if ((rightsInheriting | fileDescriptor.rightsInheriting) > - fileDescriptor.rightsInheriting) { - return types_1.WasiErrno.ENOTCAPABLE; - } - fileDescriptor.rightsBase = rightsBase; - fileDescriptor.rightsInheriting = rightsInheriting; - return types_1.WasiErrno.ESUCCESS; - }); - this.fd_prestat_get = syscallWrap(this, 'fd_prestat_get', function (fd, prestat) { - prestat = Number(prestat); - if (prestat === 0) { - return types_1.WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - let fileDescriptor; - try { - fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - } - catch (err) { - if (err instanceof error_1.WasiError) - return err.errno; - throw err; - } - if (fileDescriptor.preopen !== 1) - return types_1.WasiErrno.EINVAL; - const { view } = getMemory(this); - // preopen type is dir(0) - view.setUint32(prestat, 0, true); - view.setUint32(prestat + 4, encoder.encode(fileDescriptor.path).length, true); - return types_1.WasiErrno.ESUCCESS; - }); - this.fd_prestat_dir_name = syscallWrap(this, 'fd_prestat_dir_name', function (fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return types_1.WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - if (fileDescriptor.preopen !== 1) - return types_1.WasiErrno.EBADF; - const buffer = encoder.encode(fileDescriptor.path); - const size = buffer.length; - if (size > path_len) - return types_1.WasiErrno.ENOBUFS; - const { HEAPU8 } = getMemory(this); - HEAPU8.set(buffer, path); - return types_1.WasiErrno.ESUCCESS; - }); - this.fd_seek = syscallWrap(this, 'fd_seek', function (fd, offset, whence, newOffset) { - newOffset = Number(newOffset); - if (newOffset === 0) { - return types_1.WasiErrno.EINVAL; - } - if (fd === 0 || fd === 1 || fd === 2) - return types_1.WasiErrno.ESUCCESS; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_SEEK, BigInt(0)); - const r = fileDescriptor.seek(offset, whence); - const { view } = getMemory(this); - view.setBigUint64(newOffset, r, true); - return types_1.WasiErrno.ESUCCESS; - }); - this.fd_tell = syscallWrap(this, 'fd_tell', function (fd, offset) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_TELL, BigInt(0)); - const pos = BigInt(fileDescriptor.pos); - const { view } = getMemory(this); - view.setBigUint64(Number(offset), pos, true); - return types_1.WasiErrno.ESUCCESS; - }); - this.poll_oneoff = syscallWrap(this, 'poll_oneoff', function (in_ptr, out_ptr, nsubscriptions, nevents) { - in_ptr = Number(in_ptr); - out_ptr = Number(out_ptr); - nevents = Number(nevents); - nsubscriptions = Number(nsubscriptions); - nsubscriptions = nsubscriptions >>> 0; - if (in_ptr === 0 || out_ptr === 0 || nsubscriptions === 0 || nevents === 0) { - return types_1.WasiErrno.EINVAL; - } - const { view } = getMemory(this); - view.setUint32(nevents, 0, true); - let i = 0; - let timer_userdata = BigInt(0); - let cur_timeout = BigInt(0); - let has_timeout = 0; - let min_timeout = BigInt(0); - let sub; - const subscriptions = Array(nsubscriptions); - for (i = 0; i < nsubscriptions; i++) { - sub = in_ptr + i * 48; - const userdata = view.getBigUint64(sub, true); - const type = view.getUint8(sub + 8); - const clockIdOrFd = view.getUint32(sub + 16, true); - const timeout = view.getBigUint64(sub + 24, true); - const precision = view.getBigUint64(sub + 32, true); - const flags = view.getUint16(sub + 40, true); - subscriptions[i] = { - userdata, - type, - u: { - clock: { - clock_id: clockIdOrFd, - timeout, - precision, - flags - }, - fd_readwrite: { - fd: clockIdOrFd - } - } - }; - } - const fdevents = []; - for (i = 0; i < nsubscriptions; i++) { - sub = subscriptions[i]; - switch (sub.type) { - case types_1.WasiEventType.CLOCK: { - if (sub.u.clock.flags === types_1.WasiSubclockflags.ABSTIME) { - /* Convert absolute time to relative delay. */ - const now = BigInt(Date.now()) * BigInt(1000000); - cur_timeout = sub.u.clock.timeout - now; - } - else { - cur_timeout = sub.u.clock.timeout; - } - if (has_timeout === 0 || cur_timeout < min_timeout) { - min_timeout = cur_timeout; - timer_userdata = sub.userdata; - has_timeout = 1; - } - break; - } - case types_1.WasiEventType.FD_READ: - case types_1.WasiEventType.FD_WRITE: - fdevents.push(sub); - break; - default: return types_1.WasiErrno.EINVAL; - } - } - if (fdevents.length > 0) { - for (i = 0; i < fdevents.length; i++) { - const fdevent = fdevents[i]; - const event = out_ptr + 32 * i; - view.setBigUint64(event, fdevent.userdata, true); - view.setUint32(event + 8, types_1.WasiErrno.ENOSYS, true); - view.setUint32(event + 12, fdevent.type, true); - view.setBigUint64(event + 16, BigInt(0), true); - view.setUint16(event + 24, 0, true); - view.setUint32(nevents, 1, true); - } - view.setUint32(nevents, fdevents.length, true); - return types_1.WasiErrno.ESUCCESS; - } - if (has_timeout) { - const delay = Number(min_timeout / BigInt(1000000)); - // if (isMainThread || typeof SharedArrayBuffer !== 'function') { - (0, util_1.sleepBreakIf)(delay, () => false); - // } else { - // const buf = new SharedArrayBuffer(4) - // const arr = new Int32Array(buf) - // postMsg({ - // __tybys_wasm_util_wasi__: { - // type: 'set-timeout', - // payload: { - // buffer: buf, - // delay - // } - // } - // }) - // Atomics.wait(arr, 0, 0) - // } - const event = out_ptr; - view.setBigUint64(event, timer_userdata, true); - view.setUint32(event + 8, types_1.WasiErrno.ESUCCESS, true); - view.setUint32(event + 12, types_1.WasiEventType.CLOCK, true); - view.setUint32(nevents, 1, true); - } - return types_1.WasiErrno.ESUCCESS; - }); - this.proc_exit = syscallWrap(this, 'proc_exit', function (rval) { - if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) { - process.exit(rval); - } - return types_1.WasiErrno.ESUCCESS; - }); - this.proc_raise = syscallWrap(this, 'proc_raise', function (_sig) { - return types_1.WasiErrno.ENOSYS; - }); - this.sched_yield = syscallWrap(this, 'sched_yield', function () { - return types_1.WasiErrno.ESUCCESS; - }); - this.random_get = typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function' - ? syscallWrap(this, 'random_get', function (buf, buf_len) { - buf = Number(buf); - if (buf === 0) { - return types_1.WasiErrno.EINVAL; - } - buf_len = Number(buf_len); - const { HEAPU8, view } = getMemory(this); - if ((typeof SharedArrayBuffer === 'function' && HEAPU8.buffer instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(HEAPU8.buffer) === '[object SharedArrayBuffer]')) { - for (let i = buf; i < buf + buf_len; ++i) { - view.setUint8(i, Math.floor(Math.random() * 256)); - } - return types_1.WasiErrno.ESUCCESS; - } - let pos; - const stride = 65536; - for (pos = 0; pos + stride < buf_len; pos += stride) { - crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + pos + stride)); - } - crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + buf_len)); - return types_1.WasiErrno.ESUCCESS; - }) - : syscallWrap(this, 'random_get', function (buf, buf_len) { - buf = Number(buf); - if (buf === 0) { - return types_1.WasiErrno.EINVAL; - } - buf_len = Number(buf_len); - const { view } = getMemory(this); - for (let i = buf; i < buf + buf_len; ++i) { - view.setUint8(i, Math.floor(Math.random() * 256)); - } - return types_1.WasiErrno.ESUCCESS; - }); - this.sock_recv = syscallWrap(this, 'sock_recv', function () { - return types_1.WasiErrno.ENOTSUP; - }); - this.sock_send = syscallWrap(this, 'sock_send', function () { - return types_1.WasiErrno.ENOTSUP; - }); - this.sock_shutdown = syscallWrap(this, 'sock_shutdown', function () { - return types_1.WasiErrno.ENOTSUP; - }); - this.sock_accept = syscallWrap(this, 'sock_accept', function () { - return types_1.WasiErrno.ENOTSUP; - }); - _wasi.set(this, { - fds, - args, - env - }); - if (fs) - _fs.set(this, fs); - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - function defineImport(name, syncVersion, asyncVersion, parameterType, returnType) { - if (asyncFs) { - if (asyncify) { - _this[name] = asyncify.wrapImportFunction(syscallWrap(_this, name, asyncVersion)); - } - else { - _this[name] = (0, jspi_1.wrapAsyncImport)(syscallWrap(_this, name, asyncVersion), parameterType, returnType); - } - } - else { - _this[name] = syscallWrap(_this, name, syncVersion); - } - } - defineImport('fd_allocate', function fd_allocate(fd, offset, len) { - const wasi = _wasi.get(this); - const fs = getFs(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_ALLOCATE, BigInt(0)); - const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); - if (stat.size < offset + len) { - fs.ftruncateSync(fileDescriptor.fd, Number(offset + len)); - } - return types_1.WasiErrno.ESUCCESS; - }, async function fd_allocate(fd, offset, len) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_ALLOCATE, BigInt(0)); - const h = fileDescriptor.fd; - const stat = await h.stat({ bigint: true }); - if (stat.size < offset + len) { - await h.truncate(Number(offset + len)); - } - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i64', 'f64'], ['i32']); - defineImport('fd_close', function fd_close(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - const fs = getFs(this); - fs.closeSync(fileDescriptor.fd); - wasi.fds.remove(fd); - return types_1.WasiErrno.ESUCCESS; - }, async function fd_close(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - await fileDescriptor.fd.close(); - wasi.fds.remove(fd); - return types_1.WasiErrno.ESUCCESS; - }, ['i32'], ['i32']); - defineImport('fd_datasync', function fd_datasync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_DATASYNC, BigInt(0)); - const fs = getFs(this); - fs.fdatasyncSync(fileDescriptor.fd); - return types_1.WasiErrno.ESUCCESS; - }, async function fd_datasync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_DATASYNC, BigInt(0)); - await fileDescriptor.fd.datasync(); - return types_1.WasiErrno.ESUCCESS; - }, ['i32'], ['i32']); - defineImport('fd_filestat_get', function fd_filestat_get(fd, buf) { - buf = Number(buf); - if (buf === 0) - return types_1.WasiErrno.EINVAL; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_FILESTAT_GET, BigInt(0)); - const fs = getFs(this); - const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); - const { view } = getMemory(this); - (0, fd_1.toFileStat)(view, buf, stat); - return types_1.WasiErrno.ESUCCESS; - }, async function fd_filestat_get(fd, buf) { - buf = Number(buf); - if (buf === 0) - return types_1.WasiErrno.EINVAL; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_FILESTAT_GET, BigInt(0)); - const h = fileDescriptor.fd; - const stat = await h.stat({ bigint: true }); - const { view } = getMemory(this); - (0, fd_1.toFileStat)(view, buf, stat); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32'], ['i32']); - defineImport('fd_filestat_set_size', function fd_filestat_set_size(fd, size) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); - const fs = getFs(this); - fs.ftruncateSync(fileDescriptor.fd, Number(size)); - return types_1.WasiErrno.ESUCCESS; - }, async function fd_filestat_set_size(fd, size) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); - const h = fileDescriptor.fd; - await h.truncate(Number(size)); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i64'], ['i32']); - function fdFilestatGetTimes(fd, atim, mtim, flags) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_FILESTAT_SET_TIMES, BigInt(0)); - if ((flags & types_1.WasiFstFlag.SET_ATIM_NOW) === types_1.WasiFstFlag.SET_ATIM_NOW) { - atim = BigInt(Date.now() * 1000000); - } - if ((flags & types_1.WasiFstFlag.SET_MTIM_NOW) === types_1.WasiFstFlag.SET_MTIM_NOW) { - mtim = BigInt(Date.now() * 1000000); - } - return { fileDescriptor, atim, mtim }; - } - defineImport('fd_filestat_set_times', function fd_filestat_set_times(fd, atim, mtim, flags) { - if (validateFstFlagsOrReturn(flags)) { - return types_1.WasiErrno.EINVAL; - } - const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); - const fs = getFs(this); - fs.futimesSync(fileDescriptor.fd, Number(atimRes), Number(mtimRes)); - return types_1.WasiErrno.ESUCCESS; - }, async function fd_filestat_set_times(fd, atim, mtim, flags) { - if (validateFstFlagsOrReturn(flags)) { - return types_1.WasiErrno.EINVAL; - } - const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); - const h = fileDescriptor.fd; - await h.utimes(Number(atimRes), Number(mtimRes)); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i64', 'i64', 'i32'], ['i32']); - defineImport('fd_pread', function fd_pread(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_READ | types_1.WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return types_1.WasiErrno.ESUCCESS; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let nread = 0; - const buffer = (() => { - try { - return new Uint8Array(new SharedArrayBuffer(totalSize)); - } - catch (_) { - return new Uint8Array(totalSize); - } - })(); - buffer._isBuffer = true; - const fs = getFs(this); - const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - view.setUint32(size, nread, true); - return types_1.WasiErrno.ESUCCESS; - }, async function (fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_READ | types_1.WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return types_1.WasiErrno.ESUCCESS; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let nread = 0; - const buffer = new Uint8Array(totalSize); - buffer._isBuffer = true; - const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(offset)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - view.setUint32(size, nread, true); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_pwrite', function fd_pwrite(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_WRITE | types_1.WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return types_1.WasiErrno.ESUCCESS; - } - const buffer = (0, fd_1.concatBuffer)(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - const fs = getFs(this); - const nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); - view.setUint32(size, nwritten, true); - return types_1.WasiErrno.ESUCCESS; - }, async function fd_pwrite(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_WRITE | types_1.WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return types_1.WasiErrno.ESUCCESS; - } - const buffer = (0, fd_1.concatBuffer)(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - const { bytesWritten } = await fileDescriptor.fd.write(buffer, 0, buffer.length, Number(offset)); - view.setUint32(size, bytesWritten, true); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_read', function fd_read(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_READ, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return types_1.WasiErrno.ESUCCESS; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let buffer; - let nread = 0; - if (fd === 0) { - if (typeof window === 'undefined' || typeof window.prompt !== 'function') { - return types_1.WasiErrno.ENOTSUP; - } - buffer = readStdin(); - nread = buffer ? copyMemory(ioVecs, buffer) : 0; - } - else { - buffer = (() => { - try { - return new Uint8Array(new SharedArrayBuffer(totalSize)); - } - catch (_) { - return new Uint8Array(totalSize); - } - })(); - buffer._isBuffer = true; - const fs = getFs(this); - const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - fileDescriptor.pos += BigInt(nread); - } - view.setUint32(size, nread, true); - return types_1.WasiErrno.ESUCCESS; - }, async function fd_read(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_READ, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return types_1.WasiErrno.ESUCCESS; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let buffer; - let nread = 0; - if (fd === 0) { - if (typeof window === 'undefined' || typeof window.prompt !== 'function') { - return types_1.WasiErrno.ENOTSUP; - } - buffer = readStdin(); - nread = buffer ? copyMemory(ioVecs, buffer) : 0; - } - else { - buffer = new Uint8Array(totalSize); - buffer._isBuffer = true; - const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(fileDescriptor.pos)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - fileDescriptor.pos += BigInt(nread); - } - view.setUint32(size, nread, true); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('fd_readdir', function fd_readdir(fd, buf, buf_len, cookie, bufused) { - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (buf === 0 || bufused === 0) - return types_1.WasiErrno.ESUCCESS; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_READDIR, BigInt(0)); - const fs = getFs(this); - const entries = fs.readdirSync(fileDescriptor.realPath, { withFileTypes: true }); - const { HEAPU8, view } = getMemory(this); - let bufferUsed = 0; - for (let i = Number(cookie); i < entries.length; i++) { - const nameData = encoder.encode(entries[i].name); - const entryInfo = fs.statSync((0, path_1.resolve)(fileDescriptor.realPath, entries[i].name), { bigint: true }); - const entryData = new Uint8Array(24 + nameData.byteLength); - const entryView = new DataView(entryData.buffer); - entryView.setBigUint64(0, BigInt(i + 1), true); - entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); - entryView.setUint32(16, nameData.byteLength, true); - let type; - if (entries[i].isFile()) { - type = types_1.WasiFileType.REGULAR_FILE; - } - else if (entries[i].isDirectory()) { - type = types_1.WasiFileType.DIRECTORY; - } - else if (entries[i].isSymbolicLink()) { - type = types_1.WasiFileType.SYMBOLIC_LINK; - } - else if (entries[i].isCharacterDevice()) { - type = types_1.WasiFileType.CHARACTER_DEVICE; - } - else if (entries[i].isBlockDevice()) { - type = types_1.WasiFileType.BLOCK_DEVICE; - } - else if (entries[i].isSocket()) { - type = types_1.WasiFileType.SOCKET_STREAM; - } - else { - type = types_1.WasiFileType.UNKNOWN; - } - entryView.setUint8(20, type); - entryData.set(nameData, 24); - const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); - HEAPU8.set(data, buf + bufferUsed); - bufferUsed += data.byteLength; - } - view.setUint32(bufused, bufferUsed, true); - return types_1.WasiErrno.ESUCCESS; - }, async function fd_readdir(fd, buf, buf_len, cookie, bufused) { - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (buf === 0 || bufused === 0) - return types_1.WasiErrno.ESUCCESS; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_READDIR, BigInt(0)); - const fs = getFs(this); - const entries = await fs.promises.readdir(fileDescriptor.realPath, { withFileTypes: true }); - const { HEAPU8, view } = getMemory(this); - let bufferUsed = 0; - for (let i = Number(cookie); i < entries.length; i++) { - const nameData = encoder.encode(entries[i].name); - const entryInfo = await fs.promises.stat((0, path_1.resolve)(fileDescriptor.realPath, entries[i].name), { bigint: true }); - const entryData = new Uint8Array(24 + nameData.byteLength); - const entryView = new DataView(entryData.buffer); - entryView.setBigUint64(0, BigInt(i + 1), true); - entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); - entryView.setUint32(16, nameData.byteLength, true); - let type; - if (entries[i].isFile()) { - type = types_1.WasiFileType.REGULAR_FILE; - } - else if (entries[i].isDirectory()) { - type = types_1.WasiFileType.DIRECTORY; - } - else if (entries[i].isSymbolicLink()) { - type = types_1.WasiFileType.SYMBOLIC_LINK; - } - else if (entries[i].isCharacterDevice()) { - type = types_1.WasiFileType.CHARACTER_DEVICE; - } - else if (entries[i].isBlockDevice()) { - type = types_1.WasiFileType.BLOCK_DEVICE; - } - else if (entries[i].isSocket()) { - type = types_1.WasiFileType.SOCKET_STREAM; - } - else { - type = types_1.WasiFileType.UNKNOWN; - } - entryView.setUint8(20, type); - entryData.set(nameData, 24); - const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); - HEAPU8.set(data, buf + bufferUsed); - bufferUsed += data.byteLength; - } - view.setUint32(bufused, bufferUsed, true); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_renumber', function fd_renumber(from, to) { - const wasi = _wasi.get(this); - wasi.fds.renumber(to, from); - return types_1.WasiErrno.ESUCCESS; - }, async function fd_renumber(from, to) { - const wasi = _wasi.get(this); - await wasi.fds.renumber(to, from); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32'], ['i32']); - defineImport('fd_sync', function fd_sync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_SYNC, BigInt(0)); - const fs = getFs(this); - fs.fsyncSync(fileDescriptor.fd); - return types_1.WasiErrno.ESUCCESS; - }, async function fd_sync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_SYNC, BigInt(0)); - await fileDescriptor.fd.sync(); - return types_1.WasiErrno.ESUCCESS; - }, ['i32'], ['i32']); - defineImport('fd_write', function fd_write(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_WRITE, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return types_1.WasiErrno.ESUCCESS; - } - const buffer = (0, fd_1.concatBuffer)(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - let nwritten; - if (fd === 1 || fd === 2) { - nwritten = fileDescriptor.write(buffer); - } - else { - const fs = getFs(this); - nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); - fileDescriptor.pos += BigInt(nwritten); - } - view.setUint32(size, nwritten, true); - return types_1.WasiErrno.ESUCCESS; - }, async function fd_write(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_WRITE, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return types_1.WasiErrno.ESUCCESS; - } - const buffer = (0, fd_1.concatBuffer)(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - let nwritten; - if (fd === 1 || fd === 2) { - nwritten = fileDescriptor.write(buffer); - } - else { - nwritten = await (await (fileDescriptor.fd.write(buffer, 0, buffer.length, Number(fileDescriptor.pos)))).bytesWritten; - fileDescriptor.pos += BigInt(nwritten); - } - view.setUint32(size, nwritten, true); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_create_directory', function path_create_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); - pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.mkdirSync(pathString); - return types_1.WasiErrno.ESUCCESS; - }, async function path_create_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); - pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.mkdir(pathString); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32'], ['i32']); - defineImport('path_filestat_get', function path_filestat_get(fd, flags, path, path_len, filestat) { - path = Number(path); - path_len = Number(path_len); - filestat = Number(filestat); - if (path === 0 || filestat === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_FILESTAT_GET, BigInt(0)); - let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); - const fs = getFs(this); - pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); - let stat; - if ((flags & 1) === 1) { - stat = fs.statSync(pathString, { bigint: true }); - } - else { - stat = fs.lstatSync(pathString, { bigint: true }); - } - (0, fd_1.toFileStat)(view, filestat, stat); - return types_1.WasiErrno.ESUCCESS; - }, async function path_filestat_get(fd, flags, path, path_len, filestat) { - path = Number(path); - path_len = Number(path_len); - filestat = Number(filestat); - if (path === 0 || filestat === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_FILESTAT_GET, BigInt(0)); - let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); - const fs = getFs(this); - pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); - let stat; - if ((flags & 1) === 1) { - stat = await fs.promises.stat(pathString, { bigint: true }); - } - else { - stat = await fs.promises.lstat(pathString, { bigint: true }); - } - (0, fd_1.toFileStat)(view, filestat, stat); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_filestat_set_times', function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) - return types_1.WasiErrno.EINVAL; - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); - if (validateFstFlagsOrReturn(fst_flags)) { - return types_1.WasiErrno.EINVAL; - } - const fs = getFs(this); - const resolvedPath = resolvePathSync(fs, fileDescriptor, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)), flags); - if ((fst_flags & types_1.WasiFstFlag.SET_ATIM_NOW) === types_1.WasiFstFlag.SET_ATIM_NOW) { - atim = BigInt(Date.now() * 1000000); - } - if ((fst_flags & types_1.WasiFstFlag.SET_MTIM_NOW) === types_1.WasiFstFlag.SET_MTIM_NOW) { - mtim = BigInt(Date.now() * 1000000); - } - fs.utimesSync(resolvedPath, Number(atim), Number(mtim)); - return types_1.WasiErrno.ESUCCESS; - }, async function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) - return types_1.WasiErrno.EINVAL; - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); - if (validateFstFlagsOrReturn(fst_flags)) { - return types_1.WasiErrno.EINVAL; - } - const fs = getFs(this); - const resolvedPath = await resolvePathAsync(fs, fileDescriptor, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)), flags); - if ((fst_flags & types_1.WasiFstFlag.SET_ATIM_NOW) === types_1.WasiFstFlag.SET_ATIM_NOW) { - atim = BigInt(Date.now() * 1000000); - } - if ((fst_flags & types_1.WasiFstFlag.SET_MTIM_NOW) === types_1.WasiFstFlag.SET_MTIM_NOW) { - mtim = BigInt(Date.now() * 1000000); - } - await fs.promises.utimes(resolvedPath, Number(atim), Number(mtim)); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32'], ['i32']); - defineImport('path_link', function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return types_1.WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_LINK_SOURCE | types_1.WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_LINK_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, types_1.WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const fs = getFs(this); - const resolvedOldPath = resolvePathSync(fs, oldWrap, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, old_path, old_path + old_path_len)), old_flags); - const resolvedNewPath = (0, path_1.resolve)(newWrap.realPath, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, new_path, new_path + new_path_len))); - fs.linkSync(resolvedOldPath, resolvedNewPath); - return types_1.WasiErrno.ESUCCESS; - }, async function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return types_1.WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_LINK_SOURCE | types_1.WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_LINK_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, types_1.WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const fs = getFs(this); - const resolvedOldPath = await resolvePathAsync(fs, oldWrap, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, old_path, old_path + old_path_len)), old_flags); - const resolvedNewPath = (0, path_1.resolve)(newWrap.realPath, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, new_path, new_path + new_path_len))); - await fs.promises.link(resolvedOldPath, resolvedNewPath); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - function pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags) { - const read = (fs_rights_base & (types_1.WasiRights.FD_READ | - types_1.WasiRights.FD_READDIR)) !== BigInt(0); - const write = (fs_rights_base & (types_1.WasiRights.FD_DATASYNC | - types_1.WasiRights.FD_WRITE | - types_1.WasiRights.FD_ALLOCATE | - types_1.WasiRights.FD_FILESTAT_SET_SIZE)) !== BigInt(0); - let flags = write ? read ? types_1.FileControlFlag.O_RDWR : types_1.FileControlFlag.O_WRONLY : types_1.FileControlFlag.O_RDONLY; - let needed_base = types_1.WasiRights.PATH_OPEN; - let needed_inheriting = fs_rights_base | fs_rights_inheriting; - if ((o_flags & types_1.WasiFileControlFlag.O_CREAT) !== 0) { - flags |= types_1.FileControlFlag.O_CREAT; - needed_base |= types_1.WasiRights.PATH_CREATE_FILE; - } - if ((o_flags & types_1.WasiFileControlFlag.O_DIRECTORY) !== 0) { - flags |= types_1.FileControlFlag.O_DIRECTORY; - } - if ((o_flags & types_1.WasiFileControlFlag.O_EXCL) !== 0) { - flags |= types_1.FileControlFlag.O_EXCL; - } - if ((o_flags & types_1.WasiFileControlFlag.O_TRUNC) !== 0) { - flags |= types_1.FileControlFlag.O_TRUNC; - needed_base |= types_1.WasiRights.PATH_FILESTAT_SET_SIZE; - } - if ((fs_flags & types_1.WasiFdFlag.APPEND) !== 0) { - flags |= types_1.FileControlFlag.O_APPEND; - } - if ((fs_flags & types_1.WasiFdFlag.DSYNC) !== 0) { - // flags |= FileControlFlag.O_DSYNC; - needed_inheriting |= types_1.WasiRights.FD_DATASYNC; - } - if ((fs_flags & types_1.WasiFdFlag.NONBLOCK) !== 0) { - flags |= types_1.FileControlFlag.O_NONBLOCK; - } - if ((fs_flags & types_1.WasiFdFlag.RSYNC) !== 0) { - flags |= types_1.FileControlFlag.O_SYNC; - needed_inheriting |= types_1.WasiRights.FD_SYNC; - } - if ((fs_flags & types_1.WasiFdFlag.SYNC) !== 0) { - flags |= types_1.FileControlFlag.O_SYNC; - needed_inheriting |= types_1.WasiRights.FD_SYNC; - } - if (write && (flags & (types_1.FileControlFlag.O_APPEND | types_1.FileControlFlag.O_TRUNC)) === 0) { - needed_inheriting |= types_1.WasiRights.FD_SEEK; - } - return { flags, needed_base, needed_inheriting }; - } - defineImport('path_open', function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { - path = Number(path); - fd = Number(fd); - if (path === 0 || fd === 0) { - return types_1.WasiErrno.EINVAL; - } - path_len = Number(path_len); - fs_rights_base = BigInt(fs_rights_base); - fs_rights_inheriting = BigInt(fs_rights_inheriting); - const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); - const memory = getMemory(this); - const HEAPU8 = memory.HEAPU8; - const pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); - const fs = getFs(this); - const resolved_path = resolvePathSync(fs, fileDescriptor, pathString, dirflags); - const r = fs.openSync(resolved_path, flagsRes, 0o666); - const filetype = wasi.fds.getFileTypeByFd(r); - if ((filetype !== types_1.WasiFileType.DIRECTORY) && - ((o_flags & types_1.WasiFileControlFlag.O_DIRECTORY) !== 0 || - (resolved_path.endsWith('/')))) { - return types_1.WasiErrno.ENOTDIR; - } - const { base: max_base, inheriting: max_inheriting } = (0, rights_1.getRights)(wasi.fds.stdio, r, flagsRes, filetype); - const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); - const stat = fs.fstatSync(r, { bigint: true }); - if (stat.isFile()) { - wrap.size = stat.size; - if ((flagsRes & types_1.FileControlFlag.O_APPEND) !== 0) { - wrap.pos = stat.size; - } - } - const view = memory.view; - view.setInt32(fd, wrap.id, true); - return types_1.WasiErrno.ESUCCESS; - }, async function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { - path = Number(path); - fd = Number(fd); - if (path === 0 || fd === 0) { - return types_1.WasiErrno.EINVAL; - } - path_len = Number(path_len); - fs_rights_base = BigInt(fs_rights_base); - fs_rights_inheriting = BigInt(fs_rights_inheriting); - const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); - const memory = getMemory(this); - const HEAPU8 = memory.HEAPU8; - const pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); - const fs = getFs(this); - const resolved_path = await resolvePathAsync(fs, fileDescriptor, pathString, dirflags); - const r = await fs.promises.open(resolved_path, flagsRes, 0o666); - const filetype = await wasi.fds.getFileTypeByFd(r); - if ((o_flags & types_1.WasiFileControlFlag.O_DIRECTORY) !== 0 && filetype !== types_1.WasiFileType.DIRECTORY) { - return types_1.WasiErrno.ENOTDIR; - } - const { base: max_base, inheriting: max_inheriting } = (0, rights_1.getRights)(wasi.fds.stdio, r.fd, flagsRes, filetype); - const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); - const stat = await r.stat({ bigint: true }); - if (stat.isFile()) { - wrap.size = stat.size; - if ((flagsRes & types_1.FileControlFlag.O_APPEND) !== 0) { - wrap.pos = stat.size; - } - } - const view = memory.view; - view.setInt32(fd, wrap.id, true); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32', 'i32'], ['i32']); - defineImport('path_readlink', function path_readlink(fd, path, path_len, buf, buf_len, bufused) { - path = Number(path); - path_len = Number(path_len); - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (path === 0 || buf === 0 || bufused === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_READLINK, BigInt(0)); - let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); - pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); - const fs = getFs(this); - const link = fs.readlinkSync(pathString); - const linkData = encoder.encode(link); - const len = Math.min(linkData.length, buf_len); - if (len >= buf_len) - return types_1.WasiErrno.ENOBUFS; - HEAPU8.set(linkData.subarray(0, len), buf); - HEAPU8[buf + len] = 0; - view.setUint32(bufused, len, true); - return types_1.WasiErrno.ESUCCESS; - }, async function path_readlink(fd, path, path_len, buf, buf_len, bufused) { - path = Number(path); - path_len = Number(path_len); - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (path === 0 || buf === 0 || bufused === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_READLINK, BigInt(0)); - let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); - pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); - const fs = getFs(this); - const link = await fs.promises.readlink(pathString); - const linkData = encoder.encode(link); - const len = Math.min(linkData.length, buf_len); - if (len >= buf_len) - return types_1.WasiErrno.ENOBUFS; - HEAPU8.set(linkData.subarray(0, len), buf); - HEAPU8[buf + len] = 0; - view.setUint32(bufused, len, true); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_remove_directory', function path_remove_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); - pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.rmdirSync(pathString); - return types_1.WasiErrno.ESUCCESS; - }, async function path_remove_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); - pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.rmdir(pathString); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32'], ['i32']); - defineImport('path_rename', function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return types_1.WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_RENAME_SOURCE | types_1.WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_RENAME_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, types_1.WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const resolvedOldPath = (0, path_1.resolve)(oldWrap.realPath, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, old_path, old_path + old_path_len))); - const resolvedNewPath = (0, path_1.resolve)(newWrap.realPath, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, new_path, new_path + new_path_len))); - const fs = getFs(this); - fs.renameSync(resolvedOldPath, resolvedNewPath); - return types_1.WasiErrno.ESUCCESS; - }, async function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return types_1.WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_RENAME_SOURCE | types_1.WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_RENAME_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, types_1.WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const resolvedOldPath = (0, path_1.resolve)(oldWrap.realPath, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, old_path, old_path + old_path_len))); - const resolvedNewPath = (0, path_1.resolve)(newWrap.realPath, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, new_path, new_path + new_path_len))); - const fs = getFs(this); - await fs.promises.rename(resolvedOldPath, resolvedNewPath); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_symlink', function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_SYMLINK, BigInt(0)); - const oldPath = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, old_path, old_path + old_path_len)); - if (oldPath.length > 0 && oldPath[0] === '/') { - return types_1.WasiErrno.EPERM; - } - let newPath = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, new_path, new_path + new_path_len)); - newPath = (0, path_1.resolve)(fileDescriptor.realPath, newPath); - const fs = getFs(this); - fs.symlinkSync(oldPath, newPath); - return types_1.WasiErrno.ESUCCESS; - }, async function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_SYMLINK, BigInt(0)); - const oldPath = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, old_path, old_path + old_path_len)); - let newPath = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, new_path, new_path + new_path_len)); - newPath = (0, path_1.resolve)(fileDescriptor.realPath, newPath); - const fs = getFs(this); - await fs.promises.symlink(oldPath, newPath); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_unlink_file', function path_unlink_file(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_UNLINK_FILE, BigInt(0)); - let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); - pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.unlinkSync(pathString); - return types_1.WasiErrno.ESUCCESS; - }, async function path_unlink_file(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return types_1.WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_UNLINK_FILE, BigInt(0)); - let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); - pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.unlink(pathString); - return types_1.WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32'], ['i32']); - this._setMemory = function setMemory(m) { - if (!(m instanceof webassembly_1._WebAssembly.Memory)) { - throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory'); - } - _memory.set(_this, (0, memory_1.extendMemory)(m)); - }; - } - static createSync(args, env, preopens, stdio, fs, print, printErr) { - const fds = new fd_1.SyncTable({ - size: 3, - in: stdio[0], - out: stdio[1], - err: stdio[2], - fs, - print, - printErr - }); - const _this = new WASI(args, env, fds, false, fs); - if (preopens.length > 0) { - for (let i = 0; i < preopens.length; ++i) { - const realPath = fs.realpathSync(preopens[i].realPath, 'utf8'); - const fd = fs.openSync(realPath, 'r', 0o666); - fds.insertPreopen(fd, preopens[i].mappedPath, realPath); - } - } - return _this; - } - static async createAsync(args, env, preopens, stdio, fs, print, printErr, asyncify) { - const fds = new fd_1.AsyncTable({ - size: 3, - in: stdio[0], - out: stdio[1], - err: stdio[2], - print, - printErr - }); - const _this = new WASI(args, env, fds, true, fs, asyncify); - if (preopens.length > 0) { - for (let i = 0; i < preopens.length; ++i) { - const entry = preopens[i]; - const realPath = await fs.promises.realpath(entry.realPath); - const fd = await fs.promises.open(realPath, 'r', 0o666); - await fds.insertPreopen(fd, entry.mappedPath, realPath); - } - } - return _this; - } -} -exports.WASI = WASI; -//# sourceMappingURL=preview1.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/rights.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/rights.js deleted file mode 100644 index 9713b4b..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/rights.js +++ /dev/null @@ -1,141 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getRights = exports.TTY_INHERITING = exports.TTY_BASE = exports.SOCKET_INHERITING = exports.SOCKET_BASE = exports.DIRECTORY_INHERITING = exports.DIRECTORY_BASE = exports.REGULAR_FILE_INHERITING = exports.REGULAR_FILE_BASE = exports.CHARACTER_DEVICE_INHERITING = exports.CHARACTER_DEVICE_BASE = exports.BLOCK_DEVICE_INHERITING = exports.BLOCK_DEVICE_BASE = exports.RIGHTS_ALL = void 0; -/* eslint-disable spaced-comment */ -const error_1 = require("./error"); -const types_1 = require("./types"); -exports.RIGHTS_ALL = types_1.WasiRights.FD_DATASYNC | - types_1.WasiRights.FD_READ | - types_1.WasiRights.FD_SEEK | - types_1.WasiRights.FD_FDSTAT_SET_FLAGS | - types_1.WasiRights.FD_SYNC | - types_1.WasiRights.FD_TELL | - types_1.WasiRights.FD_WRITE | - types_1.WasiRights.FD_ADVISE | - types_1.WasiRights.FD_ALLOCATE | - types_1.WasiRights.PATH_CREATE_DIRECTORY | - types_1.WasiRights.PATH_CREATE_FILE | - types_1.WasiRights.PATH_LINK_SOURCE | - types_1.WasiRights.PATH_LINK_TARGET | - types_1.WasiRights.PATH_OPEN | - types_1.WasiRights.FD_READDIR | - types_1.WasiRights.PATH_READLINK | - types_1.WasiRights.PATH_RENAME_SOURCE | - types_1.WasiRights.PATH_RENAME_TARGET | - types_1.WasiRights.PATH_FILESTAT_GET | - types_1.WasiRights.PATH_FILESTAT_SET_SIZE | - types_1.WasiRights.PATH_FILESTAT_SET_TIMES | - types_1.WasiRights.FD_FILESTAT_GET | - types_1.WasiRights.FD_FILESTAT_SET_TIMES | - types_1.WasiRights.FD_FILESTAT_SET_SIZE | - types_1.WasiRights.PATH_SYMLINK | - types_1.WasiRights.PATH_UNLINK_FILE | - types_1.WasiRights.PATH_REMOVE_DIRECTORY | - types_1.WasiRights.POLL_FD_READWRITE | - types_1.WasiRights.SOCK_SHUTDOWN | - types_1.WasiRights.SOCK_ACCEPT; -exports.BLOCK_DEVICE_BASE = exports.RIGHTS_ALL; -exports.BLOCK_DEVICE_INHERITING = exports.RIGHTS_ALL; -exports.CHARACTER_DEVICE_BASE = exports.RIGHTS_ALL; -exports.CHARACTER_DEVICE_INHERITING = exports.RIGHTS_ALL; -exports.REGULAR_FILE_BASE = types_1.WasiRights.FD_DATASYNC | - types_1.WasiRights.FD_READ | - types_1.WasiRights.FD_SEEK | - types_1.WasiRights.FD_FDSTAT_SET_FLAGS | - types_1.WasiRights.FD_SYNC | - types_1.WasiRights.FD_TELL | - types_1.WasiRights.FD_WRITE | - types_1.WasiRights.FD_ADVISE | - types_1.WasiRights.FD_ALLOCATE | - types_1.WasiRights.FD_FILESTAT_GET | - types_1.WasiRights.FD_FILESTAT_SET_SIZE | - types_1.WasiRights.FD_FILESTAT_SET_TIMES | - types_1.WasiRights.POLL_FD_READWRITE; -exports.REGULAR_FILE_INHERITING = BigInt(0); -exports.DIRECTORY_BASE = types_1.WasiRights.FD_FDSTAT_SET_FLAGS | - types_1.WasiRights.FD_SYNC | - types_1.WasiRights.FD_ADVISE | - types_1.WasiRights.PATH_CREATE_DIRECTORY | - types_1.WasiRights.PATH_CREATE_FILE | - types_1.WasiRights.PATH_LINK_SOURCE | - types_1.WasiRights.PATH_LINK_TARGET | - types_1.WasiRights.PATH_OPEN | - types_1.WasiRights.FD_READDIR | - types_1.WasiRights.PATH_READLINK | - types_1.WasiRights.PATH_RENAME_SOURCE | - types_1.WasiRights.PATH_RENAME_TARGET | - types_1.WasiRights.PATH_FILESTAT_GET | - types_1.WasiRights.PATH_FILESTAT_SET_SIZE | - types_1.WasiRights.PATH_FILESTAT_SET_TIMES | - types_1.WasiRights.FD_FILESTAT_GET | - types_1.WasiRights.FD_FILESTAT_SET_TIMES | - types_1.WasiRights.PATH_SYMLINK | - types_1.WasiRights.PATH_UNLINK_FILE | - types_1.WasiRights.PATH_REMOVE_DIRECTORY | - types_1.WasiRights.POLL_FD_READWRITE; -exports.DIRECTORY_INHERITING = exports.DIRECTORY_BASE | exports.REGULAR_FILE_BASE; -exports.SOCKET_BASE = (types_1.WasiRights.FD_READ | - types_1.WasiRights.FD_FDSTAT_SET_FLAGS | - types_1.WasiRights.FD_WRITE | - types_1.WasiRights.FD_FILESTAT_GET | - types_1.WasiRights.POLL_FD_READWRITE | - types_1.WasiRights.SOCK_SHUTDOWN); -exports.SOCKET_INHERITING = exports.RIGHTS_ALL; -exports.TTY_BASE = types_1.WasiRights.FD_READ | - types_1.WasiRights.FD_FDSTAT_SET_FLAGS | - types_1.WasiRights.FD_WRITE | - types_1.WasiRights.FD_FILESTAT_GET | - types_1.WasiRights.POLL_FD_READWRITE; -exports.TTY_INHERITING = BigInt(0); -function getRights(stdio, fd, flags, type) { - const ret = { - base: BigInt(0), - inheriting: BigInt(0) - }; - if (type === types_1.WasiFileType.UNKNOWN) { - throw new error_1.WasiError('Unknown file type', types_1.WasiErrno.EINVAL); - } - switch (type) { - case types_1.WasiFileType.REGULAR_FILE: - ret.base = exports.REGULAR_FILE_BASE; - ret.inheriting = exports.REGULAR_FILE_INHERITING; - break; - case types_1.WasiFileType.DIRECTORY: - ret.base = exports.DIRECTORY_BASE; - ret.inheriting = exports.DIRECTORY_INHERITING; - break; - case types_1.WasiFileType.SOCKET_STREAM: - case types_1.WasiFileType.SOCKET_DGRAM: - ret.base = exports.SOCKET_BASE; - ret.inheriting = exports.SOCKET_INHERITING; - break; - case types_1.WasiFileType.CHARACTER_DEVICE: - if (stdio.indexOf(fd) !== -1) { - ret.base = exports.TTY_BASE; - ret.inheriting = exports.TTY_INHERITING; - } - else { - ret.base = exports.CHARACTER_DEVICE_BASE; - ret.inheriting = exports.CHARACTER_DEVICE_INHERITING; - } - break; - case types_1.WasiFileType.BLOCK_DEVICE: - ret.base = exports.BLOCK_DEVICE_BASE; - ret.inheriting = exports.BLOCK_DEVICE_INHERITING; - break; - default: - ret.base = BigInt(0); - ret.inheriting = BigInt(0); - } - /* Disable read/write bits depending on access mode. */ - const read_or_write_only = flags & (0 | 1 | 2); - if (read_or_write_only === 0) { - ret.base &= ~types_1.WasiRights.FD_WRITE; - } - else if (read_or_write_only === 1) { - ret.base &= ~types_1.WasiRights.FD_READ; - } - return ret; -} -exports.getRights = getRights; -//# sourceMappingURL=rights.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/types.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/types.js deleted file mode 100644 index 442ad11..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/types.js +++ /dev/null @@ -1,220 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.WasiSubclockflags = exports.WasiEventType = exports.WasiFstFlag = exports.WasiClockid = exports.WasiFdFlag = exports.WasiFileControlFlag = exports.FileControlFlag = exports.WasiWhence = exports.WasiRights = exports.WasiFileType = exports.WasiErrno = void 0; -/* eslint-disable spaced-comment */ -var WasiErrno; -(function (WasiErrno) { - WasiErrno[WasiErrno["ESUCCESS"] = 0] = "ESUCCESS"; - WasiErrno[WasiErrno["E2BIG"] = 1] = "E2BIG"; - WasiErrno[WasiErrno["EACCES"] = 2] = "EACCES"; - WasiErrno[WasiErrno["EADDRINUSE"] = 3] = "EADDRINUSE"; - WasiErrno[WasiErrno["EADDRNOTAVAIL"] = 4] = "EADDRNOTAVAIL"; - WasiErrno[WasiErrno["EAFNOSUPPORT"] = 5] = "EAFNOSUPPORT"; - WasiErrno[WasiErrno["EAGAIN"] = 6] = "EAGAIN"; - WasiErrno[WasiErrno["EALREADY"] = 7] = "EALREADY"; - WasiErrno[WasiErrno["EBADF"] = 8] = "EBADF"; - WasiErrno[WasiErrno["EBADMSG"] = 9] = "EBADMSG"; - WasiErrno[WasiErrno["EBUSY"] = 10] = "EBUSY"; - WasiErrno[WasiErrno["ECANCELED"] = 11] = "ECANCELED"; - WasiErrno[WasiErrno["ECHILD"] = 12] = "ECHILD"; - WasiErrno[WasiErrno["ECONNABORTED"] = 13] = "ECONNABORTED"; - WasiErrno[WasiErrno["ECONNREFUSED"] = 14] = "ECONNREFUSED"; - WasiErrno[WasiErrno["ECONNRESET"] = 15] = "ECONNRESET"; - WasiErrno[WasiErrno["EDEADLK"] = 16] = "EDEADLK"; - WasiErrno[WasiErrno["EDESTADDRREQ"] = 17] = "EDESTADDRREQ"; - WasiErrno[WasiErrno["EDOM"] = 18] = "EDOM"; - WasiErrno[WasiErrno["EDQUOT"] = 19] = "EDQUOT"; - WasiErrno[WasiErrno["EEXIST"] = 20] = "EEXIST"; - WasiErrno[WasiErrno["EFAULT"] = 21] = "EFAULT"; - WasiErrno[WasiErrno["EFBIG"] = 22] = "EFBIG"; - WasiErrno[WasiErrno["EHOSTUNREACH"] = 23] = "EHOSTUNREACH"; - WasiErrno[WasiErrno["EIDRM"] = 24] = "EIDRM"; - WasiErrno[WasiErrno["EILSEQ"] = 25] = "EILSEQ"; - WasiErrno[WasiErrno["EINPROGRESS"] = 26] = "EINPROGRESS"; - WasiErrno[WasiErrno["EINTR"] = 27] = "EINTR"; - WasiErrno[WasiErrno["EINVAL"] = 28] = "EINVAL"; - WasiErrno[WasiErrno["EIO"] = 29] = "EIO"; - WasiErrno[WasiErrno["EISCONN"] = 30] = "EISCONN"; - WasiErrno[WasiErrno["EISDIR"] = 31] = "EISDIR"; - WasiErrno[WasiErrno["ELOOP"] = 32] = "ELOOP"; - WasiErrno[WasiErrno["EMFILE"] = 33] = "EMFILE"; - WasiErrno[WasiErrno["EMLINK"] = 34] = "EMLINK"; - WasiErrno[WasiErrno["EMSGSIZE"] = 35] = "EMSGSIZE"; - WasiErrno[WasiErrno["EMULTIHOP"] = 36] = "EMULTIHOP"; - WasiErrno[WasiErrno["ENAMETOOLONG"] = 37] = "ENAMETOOLONG"; - WasiErrno[WasiErrno["ENETDOWN"] = 38] = "ENETDOWN"; - WasiErrno[WasiErrno["ENETRESET"] = 39] = "ENETRESET"; - WasiErrno[WasiErrno["ENETUNREACH"] = 40] = "ENETUNREACH"; - WasiErrno[WasiErrno["ENFILE"] = 41] = "ENFILE"; - WasiErrno[WasiErrno["ENOBUFS"] = 42] = "ENOBUFS"; - WasiErrno[WasiErrno["ENODEV"] = 43] = "ENODEV"; - WasiErrno[WasiErrno["ENOENT"] = 44] = "ENOENT"; - WasiErrno[WasiErrno["ENOEXEC"] = 45] = "ENOEXEC"; - WasiErrno[WasiErrno["ENOLCK"] = 46] = "ENOLCK"; - WasiErrno[WasiErrno["ENOLINK"] = 47] = "ENOLINK"; - WasiErrno[WasiErrno["ENOMEM"] = 48] = "ENOMEM"; - WasiErrno[WasiErrno["ENOMSG"] = 49] = "ENOMSG"; - WasiErrno[WasiErrno["ENOPROTOOPT"] = 50] = "ENOPROTOOPT"; - WasiErrno[WasiErrno["ENOSPC"] = 51] = "ENOSPC"; - WasiErrno[WasiErrno["ENOSYS"] = 52] = "ENOSYS"; - WasiErrno[WasiErrno["ENOTCONN"] = 53] = "ENOTCONN"; - WasiErrno[WasiErrno["ENOTDIR"] = 54] = "ENOTDIR"; - WasiErrno[WasiErrno["ENOTEMPTY"] = 55] = "ENOTEMPTY"; - WasiErrno[WasiErrno["ENOTRECOVERABLE"] = 56] = "ENOTRECOVERABLE"; - WasiErrno[WasiErrno["ENOTSOCK"] = 57] = "ENOTSOCK"; - WasiErrno[WasiErrno["ENOTSUP"] = 58] = "ENOTSUP"; - WasiErrno[WasiErrno["ENOTTY"] = 59] = "ENOTTY"; - WasiErrno[WasiErrno["ENXIO"] = 60] = "ENXIO"; - WasiErrno[WasiErrno["EOVERFLOW"] = 61] = "EOVERFLOW"; - WasiErrno[WasiErrno["EOWNERDEAD"] = 62] = "EOWNERDEAD"; - WasiErrno[WasiErrno["EPERM"] = 63] = "EPERM"; - WasiErrno[WasiErrno["EPIPE"] = 64] = "EPIPE"; - WasiErrno[WasiErrno["EPROTO"] = 65] = "EPROTO"; - WasiErrno[WasiErrno["EPROTONOSUPPORT"] = 66] = "EPROTONOSUPPORT"; - WasiErrno[WasiErrno["EPROTOTYPE"] = 67] = "EPROTOTYPE"; - WasiErrno[WasiErrno["ERANGE"] = 68] = "ERANGE"; - WasiErrno[WasiErrno["EROFS"] = 69] = "EROFS"; - WasiErrno[WasiErrno["ESPIPE"] = 70] = "ESPIPE"; - WasiErrno[WasiErrno["ESRCH"] = 71] = "ESRCH"; - WasiErrno[WasiErrno["ESTALE"] = 72] = "ESTALE"; - WasiErrno[WasiErrno["ETIMEDOUT"] = 73] = "ETIMEDOUT"; - WasiErrno[WasiErrno["ETXTBSY"] = 74] = "ETXTBSY"; - WasiErrno[WasiErrno["EXDEV"] = 75] = "EXDEV"; - WasiErrno[WasiErrno["ENOTCAPABLE"] = 76] = "ENOTCAPABLE"; -})(WasiErrno = exports.WasiErrno || (exports.WasiErrno = {})); -var WasiFileType; -(function (WasiFileType) { - WasiFileType[WasiFileType["UNKNOWN"] = 0] = "UNKNOWN"; - WasiFileType[WasiFileType["BLOCK_DEVICE"] = 1] = "BLOCK_DEVICE"; - WasiFileType[WasiFileType["CHARACTER_DEVICE"] = 2] = "CHARACTER_DEVICE"; - WasiFileType[WasiFileType["DIRECTORY"] = 3] = "DIRECTORY"; - WasiFileType[WasiFileType["REGULAR_FILE"] = 4] = "REGULAR_FILE"; - WasiFileType[WasiFileType["SOCKET_DGRAM"] = 5] = "SOCKET_DGRAM"; - WasiFileType[WasiFileType["SOCKET_STREAM"] = 6] = "SOCKET_STREAM"; - WasiFileType[WasiFileType["SYMBOLIC_LINK"] = 7] = "SYMBOLIC_LINK"; -})(WasiFileType = exports.WasiFileType || (exports.WasiFileType = {})); -const FD_DATASYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(0)); -const FD_READ = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(1)); -const FD_SEEK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(2)); -const FD_FDSTAT_SET_FLAGS = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(3)); -const FD_SYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(4)); -const FD_TELL = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(5)); -const FD_WRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(6)); -const FD_ADVISE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(7)); -const FD_ALLOCATE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(8)); -const PATH_CREATE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(9)); -const PATH_CREATE_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(10)); -const PATH_LINK_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(11)); -const PATH_LINK_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(12)); -const PATH_OPEN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(13)); -const FD_READDIR = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(14)); -const PATH_READLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(15)); -const PATH_RENAME_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(16)); -const PATH_RENAME_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(17)); -const PATH_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(18)); -const PATH_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(19)); -const PATH_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(20)); -const FD_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(21)); -const FD_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(22)); -const FD_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(23)); -const PATH_SYMLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(24)); -const PATH_REMOVE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(25)); -const PATH_UNLINK_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(26)); -const POLL_FD_READWRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(27)); -const SOCK_SHUTDOWN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(28)); -const SOCK_ACCEPT = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(29)); -exports.WasiRights = { - FD_DATASYNC, - FD_READ, - FD_SEEK, - FD_FDSTAT_SET_FLAGS, - FD_SYNC, - FD_TELL, - FD_WRITE, - FD_ADVISE, - FD_ALLOCATE, - PATH_CREATE_DIRECTORY, - PATH_CREATE_FILE, - PATH_LINK_SOURCE, - PATH_LINK_TARGET, - PATH_OPEN, - FD_READDIR, - PATH_READLINK, - PATH_RENAME_SOURCE, - PATH_RENAME_TARGET, - PATH_FILESTAT_GET, - PATH_FILESTAT_SET_SIZE, - PATH_FILESTAT_SET_TIMES, - FD_FILESTAT_GET, - FD_FILESTAT_SET_SIZE, - FD_FILESTAT_SET_TIMES, - PATH_SYMLINK, - PATH_REMOVE_DIRECTORY, - PATH_UNLINK_FILE, - POLL_FD_READWRITE, - SOCK_SHUTDOWN, - SOCK_ACCEPT -}; -var WasiWhence; -(function (WasiWhence) { - WasiWhence[WasiWhence["SET"] = 0] = "SET"; - WasiWhence[WasiWhence["CUR"] = 1] = "CUR"; - WasiWhence[WasiWhence["END"] = 2] = "END"; -})(WasiWhence = exports.WasiWhence || (exports.WasiWhence = {})); -var FileControlFlag; -(function (FileControlFlag) { - FileControlFlag[FileControlFlag["O_RDONLY"] = 0] = "O_RDONLY"; - FileControlFlag[FileControlFlag["O_WRONLY"] = 1] = "O_WRONLY"; - FileControlFlag[FileControlFlag["O_RDWR"] = 2] = "O_RDWR"; - FileControlFlag[FileControlFlag["O_CREAT"] = 64] = "O_CREAT"; - FileControlFlag[FileControlFlag["O_EXCL"] = 128] = "O_EXCL"; - FileControlFlag[FileControlFlag["O_NOCTTY"] = 256] = "O_NOCTTY"; - FileControlFlag[FileControlFlag["O_TRUNC"] = 512] = "O_TRUNC"; - FileControlFlag[FileControlFlag["O_APPEND"] = 1024] = "O_APPEND"; - FileControlFlag[FileControlFlag["O_DIRECTORY"] = 65536] = "O_DIRECTORY"; - FileControlFlag[FileControlFlag["O_NOATIME"] = 262144] = "O_NOATIME"; - FileControlFlag[FileControlFlag["O_NOFOLLOW"] = 131072] = "O_NOFOLLOW"; - FileControlFlag[FileControlFlag["O_SYNC"] = 1052672] = "O_SYNC"; - FileControlFlag[FileControlFlag["O_DIRECT"] = 16384] = "O_DIRECT"; - FileControlFlag[FileControlFlag["O_NONBLOCK"] = 2048] = "O_NONBLOCK"; -})(FileControlFlag = exports.FileControlFlag || (exports.FileControlFlag = {})); -var WasiFileControlFlag; -(function (WasiFileControlFlag) { - WasiFileControlFlag[WasiFileControlFlag["O_CREAT"] = 1] = "O_CREAT"; - WasiFileControlFlag[WasiFileControlFlag["O_DIRECTORY"] = 2] = "O_DIRECTORY"; - WasiFileControlFlag[WasiFileControlFlag["O_EXCL"] = 4] = "O_EXCL"; - WasiFileControlFlag[WasiFileControlFlag["O_TRUNC"] = 8] = "O_TRUNC"; -})(WasiFileControlFlag = exports.WasiFileControlFlag || (exports.WasiFileControlFlag = {})); -var WasiFdFlag; -(function (WasiFdFlag) { - WasiFdFlag[WasiFdFlag["APPEND"] = 1] = "APPEND"; - WasiFdFlag[WasiFdFlag["DSYNC"] = 2] = "DSYNC"; - WasiFdFlag[WasiFdFlag["NONBLOCK"] = 4] = "NONBLOCK"; - WasiFdFlag[WasiFdFlag["RSYNC"] = 8] = "RSYNC"; - WasiFdFlag[WasiFdFlag["SYNC"] = 16] = "SYNC"; -})(WasiFdFlag = exports.WasiFdFlag || (exports.WasiFdFlag = {})); -var WasiClockid; -(function (WasiClockid) { - WasiClockid[WasiClockid["REALTIME"] = 0] = "REALTIME"; - WasiClockid[WasiClockid["MONOTONIC"] = 1] = "MONOTONIC"; - WasiClockid[WasiClockid["PROCESS_CPUTIME_ID"] = 2] = "PROCESS_CPUTIME_ID"; - WasiClockid[WasiClockid["THREAD_CPUTIME_ID"] = 3] = "THREAD_CPUTIME_ID"; -})(WasiClockid = exports.WasiClockid || (exports.WasiClockid = {})); -var WasiFstFlag; -(function (WasiFstFlag) { - WasiFstFlag[WasiFstFlag["SET_ATIM"] = 1] = "SET_ATIM"; - WasiFstFlag[WasiFstFlag["SET_ATIM_NOW"] = 2] = "SET_ATIM_NOW"; - WasiFstFlag[WasiFstFlag["SET_MTIM"] = 4] = "SET_MTIM"; - WasiFstFlag[WasiFstFlag["SET_MTIM_NOW"] = 8] = "SET_MTIM_NOW"; -})(WasiFstFlag = exports.WasiFstFlag || (exports.WasiFstFlag = {})); -var WasiEventType; -(function (WasiEventType) { - WasiEventType[WasiEventType["CLOCK"] = 0] = "CLOCK"; - WasiEventType[WasiEventType["FD_READ"] = 1] = "FD_READ"; - WasiEventType[WasiEventType["FD_WRITE"] = 2] = "FD_WRITE"; -})(WasiEventType = exports.WasiEventType || (exports.WasiEventType = {})); -var WasiSubclockflags; -(function (WasiSubclockflags) { - WasiSubclockflags[WasiSubclockflags["ABSTIME"] = 1] = "ABSTIME"; -})(WasiSubclockflags = exports.WasiSubclockflags || (exports.WasiSubclockflags = {})); -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/util.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/util.js deleted file mode 100644 index 4deaec0..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/wasi/util.js +++ /dev/null @@ -1,128 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.unsharedSlice = exports.sleepBreakIf = exports.postMsg = exports.isMainThread = exports.wrapInstanceExports = exports.isPromiseLike = exports.validateInt32 = exports.validateUndefined = exports.validateFunction = exports.validateString = exports.validateBoolean = exports.validateArray = exports.validateObject = void 0; -/* eslint-disable spaced-comment */ -function validateObject(value, name) { - if (value === null || typeof value !== 'object') { - throw new TypeError(`${name} must be an object. Received ${value === null ? 'null' : typeof value}`); - } -} -exports.validateObject = validateObject; -function validateArray(value, name) { - if (!Array.isArray(value)) { - throw new TypeError(`${name} must be an array. Received ${value === null ? 'null' : typeof value}`); - } -} -exports.validateArray = validateArray; -function validateBoolean(value, name) { - if (typeof value !== 'boolean') { - throw new TypeError(`${name} must be a boolean. Received ${value === null ? 'null' : typeof value}`); - } -} -exports.validateBoolean = validateBoolean; -function validateString(value, name) { - if (typeof value !== 'string') { - throw new TypeError(`${name} must be a string. Received ${value === null ? 'null' : typeof value}`); - } -} -exports.validateString = validateString; -function validateFunction(value, name) { - if (typeof value !== 'function') { - throw new TypeError(`${name} must be a function. Received ${value === null ? 'null' : typeof value}`); - } -} -exports.validateFunction = validateFunction; -function validateUndefined(value, name) { - if (value !== undefined) { - throw new TypeError(`${name} must be undefined. Received ${value === null ? 'null' : typeof value}`); - } -} -exports.validateUndefined = validateUndefined; -function validateInt32(value, name, min = -2147483648, max = 2147483647) { - if (typeof value !== 'number') { - throw new TypeError(`${name} must be a number. Received ${value === null ? 'null' : typeof value}`); - } - if (!Number.isInteger(value)) { - throw new RangeError(`${name} must be a integer.`); - } - if (value < min || value > max) { - throw new RangeError(`${name} must be >= ${min} && <= ${max}. Received ${value}`); - } -} -exports.validateInt32 = validateInt32; -function isPromiseLike(obj) { - return !!(obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'); -} -exports.isPromiseLike = isPromiseLike; -function wrapInstanceExports(exports, mapFn) { - const newExports = Object.create(null); - Object.keys(exports).forEach(name => { - const exportValue = exports[name]; - Object.defineProperty(newExports, name, { - enumerable: true, - value: mapFn(exportValue, name) - }); - }); - return newExports; -} -exports.wrapInstanceExports = wrapInstanceExports; -const _require = /*#__PURE__*/ (function () { - let nativeRequire; - if (typeof __webpack_public_path__ !== 'undefined') { - nativeRequire = (function () { - return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; - })(); - } - else { - nativeRequire = (function () { - return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); - })(); - } - return nativeRequire; -})(); -exports.isMainThread = (function () { - let worker_threads; - try { - worker_threads = _require('worker_threads'); - } - catch (_) { } - if (!worker_threads) { - return typeof importScripts === 'undefined'; - } - return worker_threads.isMainThread; -})(); -exports.postMsg = exports.isMainThread - ? () => { } - : /*#__PURE__*/ (function () { - let worker_threads; - try { - worker_threads = _require('worker_threads'); - } - catch (_) { } - if (!worker_threads) { - return postMessage; - } - return function postMessage(data) { - worker_threads.parentPort.postMessage({ data }); - }; - })(); -function sleepBreakIf(delay, breakIf) { - const start = Date.now(); - const end = start + delay; - let ret = false; - while (Date.now() < end) { - if (breakIf()) { - ret = true; - break; - } - } - return ret; -} -exports.sleepBreakIf = sleepBreakIf; -function unsharedSlice(view, start, end) { - return ((typeof SharedArrayBuffer === 'function' && view.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(view.buffer.constructor) === '[object SharedArrayBuffer]')) - ? view.slice(start, end) - : view.subarray(start, end); -} -exports.unsharedSlice = unsharedSlice; -//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/webassembly.js b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/webassembly.js deleted file mode 100644 index 0ae8cf7..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/cjs/webassembly.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports._WebAssembly = void 0; -const _WebAssembly = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; -exports._WebAssembly = _WebAssembly; -if (!_WebAssembly) { - throw new Error('WebAssembly is not supported in this environment'); -} -//# sourceMappingURL=webassembly.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/asyncify.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/asyncify.mjs deleted file mode 100644 index 7655561..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/asyncify.mjs +++ /dev/null @@ -1,153 +0,0 @@ -import { _WebAssembly } from "./webassembly.mjs"; -import { isPromiseLike, wrapInstanceExports } from "./wasi/util.mjs"; -const ignoreNames = [ - 'asyncify_get_state', - 'asyncify_start_rewind', - 'asyncify_start_unwind', - 'asyncify_stop_rewind', - 'asyncify_stop_unwind' -]; -// const wrappedExports = new WeakMap() -var AsyncifyState; -(function (AsyncifyState) { - AsyncifyState[AsyncifyState["NONE"] = 0] = "NONE"; - AsyncifyState[AsyncifyState["UNWINDING"] = 1] = "UNWINDING"; - AsyncifyState[AsyncifyState["REWINDING"] = 2] = "REWINDING"; -})(AsyncifyState || (AsyncifyState = {})); -function tryAllocate(instance, wasm64, size, mallocName) { - if (typeof instance.exports[mallocName] !== 'function' || size <= 0) { - return { - wasm64, - dataPtr: 16, - start: wasm64 ? 32 : 24, - end: 1024 - }; - } - const malloc = instance.exports[mallocName]; - const dataPtr = wasm64 ? Number(malloc(BigInt(16) + BigInt(size))) : malloc(8 + size); - if (dataPtr === 0) { - throw new Error('Allocate asyncify data failed'); - } - return wasm64 - ? { wasm64, dataPtr, start: dataPtr + 16, end: dataPtr + 16 + size } - : { wasm64, dataPtr, start: dataPtr + 8, end: dataPtr + 8 + size }; -} -/** @public */ -export class Asyncify { - constructor() { - this.value = undefined; - this.exports = undefined; - this.dataPtr = 0; - } - init(memory, instance, options) { - var _a, _b; - if (this.exports) { - throw new Error('Asyncify has been initialized'); - } - if (!(memory instanceof _WebAssembly.Memory)) { - throw new TypeError('Require WebAssembly.Memory object'); - } - const exports = instance.exports; - for (let i = 0; i < ignoreNames.length; ++i) { - if (typeof exports[ignoreNames[i]] !== 'function') { - throw new TypeError('Invalid asyncify wasm'); - } - } - let address; - const wasm64 = Boolean(options.wasm64); - if (!options.tryAllocate) { - address = { - wasm64, - dataPtr: 16, - start: wasm64 ? 32 : 24, - end: 1024 - }; - } - else { - if (options.tryAllocate === true) { - address = tryAllocate(instance, wasm64, 4096, 'malloc'); - } - else { - address = tryAllocate(instance, wasm64, (_a = options.tryAllocate.size) !== null && _a !== void 0 ? _a : 4096, (_b = options.tryAllocate.name) !== null && _b !== void 0 ? _b : 'malloc'); - } - } - this.dataPtr = address.dataPtr; - if (wasm64) { - new BigInt64Array(memory.buffer, this.dataPtr).set([BigInt(address.start), BigInt(address.end)]); - } - else { - new Int32Array(memory.buffer, this.dataPtr).set([address.start, address.end]); - } - this.exports = this.wrapExports(exports, options.wrapExports); - const asyncifiedInstance = Object.create(_WebAssembly.Instance.prototype); - Object.defineProperty(asyncifiedInstance, 'exports', { value: this.exports }); - // Object.setPrototypeOf(instance, Instance.prototype) - return asyncifiedInstance; - } - assertState() { - if (this.exports.asyncify_get_state() !== AsyncifyState.NONE) { - throw new Error('Asyncify state error'); - } - } - wrapImportFunction(f) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - return (function () { - // eslint-disable-next-line no-unreachable-loop - while (_this.exports.asyncify_get_state() === AsyncifyState.REWINDING) { - _this.exports.asyncify_stop_rewind(); - return _this.value; - } - _this.assertState(); - const v = f.apply(this, arguments); - if (!isPromiseLike(v)) - return v; - _this.exports.asyncify_start_unwind(_this.dataPtr); - _this.value = v; - }); - } - wrapImports(imports) { - const importObject = {}; - Object.keys(imports).forEach(k => { - const mod = imports[k]; - const newModule = {}; - Object.keys(mod).forEach(name => { - const importValue = mod[name]; - if (typeof importValue === 'function') { - newModule[name] = this.wrapImportFunction(importValue); - } - else { - newModule[name] = importValue; - } - }); - importObject[k] = newModule; - }); - return importObject; - } - wrapExportFunction(f) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - return (async function () { - _this.assertState(); - let ret = f.apply(this, arguments); - while (_this.exports.asyncify_get_state() === AsyncifyState.UNWINDING) { - _this.exports.asyncify_stop_unwind(); - _this.value = await _this.value; - _this.assertState(); - _this.exports.asyncify_start_rewind(_this.dataPtr); - ret = f.call(this); - } - _this.assertState(); - return ret; - }); - } - wrapExports(exports, needWrap) { - return wrapInstanceExports(exports, (exportValue, name) => { - let ignore = ignoreNames.indexOf(name) !== -1 || typeof exportValue !== 'function'; - if (Array.isArray(needWrap)) { - ignore = ignore || (needWrap.indexOf(name) === -1); - } - return ignore ? exportValue : this.wrapExportFunction(exportValue); - }); - } -} diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/index.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/index.mjs deleted file mode 100644 index 6ff30a1..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/index.mjs +++ /dev/null @@ -1,9 +0,0 @@ -/** - * @packageDocumentation - */ -export * from "./asyncify.mjs"; -export * from "./load.mjs"; -export * from "./wasi/index.mjs"; -export * from "./memory.mjs"; -export * from "./jspi.mjs"; -export * from "./wasi/fs.mjs"; diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/jspi.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/jspi.mjs deleted file mode 100644 index 28b54c8..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/jspi.mjs +++ /dev/null @@ -1,39 +0,0 @@ -import { wrapInstanceExports } from "./wasi/util.mjs"; -import { _WebAssembly } from "./webassembly.mjs"; -function checkWebAssemblyFunction() { - const WebAssemblyFunction = _WebAssembly.Function; - if (typeof WebAssemblyFunction !== 'function') { - throw new Error('WebAssembly.Function is not supported in this environment.' + - ' If you are using V8 based browser like Chrome, try to specify' + - ' --js-flags="--wasm-staging --experimental-wasm-stack-switching"'); - } - return WebAssemblyFunction; -} -/** @public */ -export function wrapAsyncImport(f, parameterType, returnType) { - const WebAssemblyFunction = checkWebAssemblyFunction(); - if (typeof f !== 'function') { - throw new TypeError('Function required'); - } - const parameters = parameterType.slice(0); - parameters.unshift('externref'); - return new WebAssemblyFunction({ parameters, results: returnType }, f, { suspending: 'first' }); -} -/** @public */ -export function wrapAsyncExport(f) { - const WebAssemblyFunction = checkWebAssemblyFunction(); - if (typeof f !== 'function') { - throw new TypeError('Function required'); - } - return new WebAssemblyFunction({ parameters: [...WebAssemblyFunction.type(f).parameters.slice(1)], results: ['externref'] }, f, { promising: 'first' }); -} -/** @public */ -export function wrapExports(exports, needWrap) { - return wrapInstanceExports(exports, (exportValue, name) => { - let ignore = typeof exportValue !== 'function'; - if (Array.isArray(needWrap)) { - ignore = ignore || (needWrap.indexOf(name) === -1); - } - return ignore ? exportValue : wrapAsyncExport(exportValue); - }); -} diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/load.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/load.mjs deleted file mode 100644 index 7fee16a..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/load.mjs +++ /dev/null @@ -1,89 +0,0 @@ -import { _WebAssembly } from "./webassembly.mjs"; -import { Asyncify } from "./asyncify.mjs"; -function validateImports(imports) { - if (imports && typeof imports !== 'object') { - throw new TypeError('imports must be an object or undefined'); - } -} -function fetchWasm(urlOrBuffer, imports) { - if (typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { - return _WebAssembly.instantiate(urlOrBuffer, imports); - } - return fetch(urlOrBuffer) - .then(response => response.arrayBuffer()) - .then(buffer => _WebAssembly.instantiate(buffer, imports)); -} -/** @public */ -export function load(wasmInput, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - let source; - if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { - return _WebAssembly.instantiate(wasmInput, imports); - } - if (wasmInput instanceof _WebAssembly.Module) { - return _WebAssembly.instantiate(wasmInput, imports).then((instance) => { - return { instance, module: wasmInput }; - }); - } - if (typeof wasmInput !== 'string' && !(wasmInput instanceof URL)) { - throw new TypeError('Invalid source'); - } - if (typeof _WebAssembly.instantiateStreaming === 'function') { - let responsePromise; - try { - responsePromise = fetch(wasmInput); - source = _WebAssembly.instantiateStreaming(responsePromise, imports).catch(() => { - return fetchWasm(wasmInput, imports); - }); - } - catch (_) { - source = fetchWasm(wasmInput, imports); - } - } - else { - source = fetchWasm(wasmInput, imports); - } - return source; -} -/** @public */ -export function asyncifyLoad(asyncify, urlOrBuffer, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - const asyncifyHelper = new Asyncify(); - imports = asyncifyHelper.wrapImports(imports); - return load(urlOrBuffer, imports).then(source => { - var _a; - const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); - return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; - }); -} -/** @public */ -export function loadSync(wasmInput, imports) { - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - let module; - if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { - module = new _WebAssembly.Module(wasmInput); - } - else if (wasmInput instanceof WebAssembly.Module) { - module = wasmInput; - } - else { - throw new TypeError('Invalid source'); - } - const instance = new _WebAssembly.Instance(module, imports); - const source = { instance, module }; - return source; -} -/** @public */ -export function asyncifyLoadSync(asyncify, buffer, imports) { - var _a; - validateImports(imports); - imports = imports !== null && imports !== void 0 ? imports : {}; - const asyncifyHelper = new Asyncify(); - imports = asyncifyHelper.wrapImports(imports); - const source = loadSync(buffer, imports); - const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); - return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; -} diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/memory.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/memory.mjs deleted file mode 100644 index 72050f7..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/memory.mjs +++ /dev/null @@ -1,28 +0,0 @@ -import { _WebAssembly } from "./webassembly.mjs"; -/** @public */ -export const WebAssemblyMemory = /*#__PURE__*/ (function () { return _WebAssembly.Memory; })(); -/** @public */ -export class Memory extends WebAssemblyMemory { - // eslint-disable-next-line @typescript-eslint/no-useless-constructor - constructor(descriptor) { - super(descriptor); - } - get HEAP8() { return new Int8Array(super.buffer); } - get HEAPU8() { return new Uint8Array(super.buffer); } - get HEAP16() { return new Int16Array(super.buffer); } - get HEAPU16() { return new Uint16Array(super.buffer); } - get HEAP32() { return new Int32Array(super.buffer); } - get HEAPU32() { return new Uint32Array(super.buffer); } - get HEAP64() { return new BigInt64Array(super.buffer); } - get HEAPU64() { return new BigUint64Array(super.buffer); } - get HEAPF32() { return new Float32Array(super.buffer); } - get HEAPF64() { return new Float64Array(super.buffer); } - get view() { return new DataView(super.buffer); } -} -/** @public */ -export function extendMemory(memory) { - if (Object.getPrototypeOf(memory) === _WebAssembly.Memory.prototype) { - Object.setPrototypeOf(memory, Memory.prototype); - } - return memory; -} diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/error.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/error.mjs deleted file mode 100644 index 5c08120..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/error.mjs +++ /dev/null @@ -1,97 +0,0 @@ -import { WasiErrno } from "./types.mjs"; -export function strerror(errno) { - switch (errno) { - case WasiErrno.ESUCCESS: return 'Success'; - case WasiErrno.E2BIG: return 'Argument list too long'; - case WasiErrno.EACCES: return 'Permission denied'; - case WasiErrno.EADDRINUSE: return 'Address in use'; - case WasiErrno.EADDRNOTAVAIL: return 'Address not available'; - case WasiErrno.EAFNOSUPPORT: return 'Address family not supported by protocol'; - case WasiErrno.EAGAIN: return 'Resource temporarily unavailable'; - case WasiErrno.EALREADY: return 'Operation already in progress'; - case WasiErrno.EBADF: return 'Bad file descriptor'; - case WasiErrno.EBADMSG: return 'Bad message'; - case WasiErrno.EBUSY: return 'Resource busy'; - case WasiErrno.ECANCELED: return 'Operation canceled'; - case WasiErrno.ECHILD: return 'No child process'; - case WasiErrno.ECONNABORTED: return 'Connection aborted'; - case WasiErrno.ECONNREFUSED: return 'Connection refused'; - case WasiErrno.ECONNRESET: return 'Connection reset by peer'; - case WasiErrno.EDEADLK: return 'Resource deadlock would occur'; - case WasiErrno.EDESTADDRREQ: return 'Destination address required'; - case WasiErrno.EDOM: return 'Domain error'; - case WasiErrno.EDQUOT: return 'Quota exceeded'; - case WasiErrno.EEXIST: return 'File exists'; - case WasiErrno.EFAULT: return 'Bad address'; - case WasiErrno.EFBIG: return 'File too large'; - case WasiErrno.EHOSTUNREACH: return 'Host is unreachable'; - case WasiErrno.EIDRM: return 'Identifier removed'; - case WasiErrno.EILSEQ: return 'Illegal byte sequence'; - case WasiErrno.EINPROGRESS: return 'Operation in progress'; - case WasiErrno.EINTR: return 'Interrupted system call'; - case WasiErrno.EINVAL: return 'Invalid argument'; - case WasiErrno.EIO: return 'I/O error'; - case WasiErrno.EISCONN: return 'Socket is connected'; - case WasiErrno.EISDIR: return 'Is a directory'; - case WasiErrno.ELOOP: return 'Symbolic link loop'; - case WasiErrno.EMFILE: return 'No file descriptors available'; - case WasiErrno.EMLINK: return 'Too many links'; - case WasiErrno.EMSGSIZE: return 'Message too large'; - case WasiErrno.EMULTIHOP: return 'Multihop attempted'; - case WasiErrno.ENAMETOOLONG: return 'Filename too long'; - case WasiErrno.ENETDOWN: return 'Network is down'; - case WasiErrno.ENETRESET: return 'Connection reset by network'; - case WasiErrno.ENETUNREACH: return 'Network unreachable'; - case WasiErrno.ENFILE: return 'Too many files open in system'; - case WasiErrno.ENOBUFS: return 'No buffer space available'; - case WasiErrno.ENODEV: return 'No such device'; - case WasiErrno.ENOENT: return 'No such file or directory'; - case WasiErrno.ENOEXEC: return 'Exec format error'; - case WasiErrno.ENOLCK: return 'No locks available'; - case WasiErrno.ENOLINK: return 'Link has been severed'; - case WasiErrno.ENOMEM: return 'Out of memory'; - case WasiErrno.ENOMSG: return 'No message of the desired type'; - case WasiErrno.ENOPROTOOPT: return 'Protocol not available'; - case WasiErrno.ENOSPC: return 'No space left on device'; - case WasiErrno.ENOSYS: return 'Function not implemented'; - case WasiErrno.ENOTCONN: return 'Socket not connected'; - case WasiErrno.ENOTDIR: return 'Not a directory'; - case WasiErrno.ENOTEMPTY: return 'Directory not empty'; - case WasiErrno.ENOTRECOVERABLE: return 'State not recoverable'; - case WasiErrno.ENOTSOCK: return 'Not a socket'; - case WasiErrno.ENOTSUP: return 'Not supported'; - case WasiErrno.ENOTTY: return 'Not a tty'; - case WasiErrno.ENXIO: return 'No such device or address'; - case WasiErrno.EOVERFLOW: return 'Value too large for data type'; - case WasiErrno.EOWNERDEAD: return 'Previous owner died'; - case WasiErrno.EPERM: return 'Operation not permitted'; - case WasiErrno.EPIPE: return 'Broken pipe'; - case WasiErrno.EPROTO: return 'Protocol error'; - case WasiErrno.EPROTONOSUPPORT: return 'Protocol not supported'; - case WasiErrno.EPROTOTYPE: return 'Protocol wrong type for socket'; - case WasiErrno.ERANGE: return 'Result not representable'; - case WasiErrno.EROFS: return 'Read-only file system'; - case WasiErrno.ESPIPE: return 'Invalid seek'; - case WasiErrno.ESRCH: return 'No such process'; - case WasiErrno.ESTALE: return 'Stale file handle'; - case WasiErrno.ETIMEDOUT: return 'Operation timed out'; - case WasiErrno.ETXTBSY: return 'Text file busy'; - case WasiErrno.EXDEV: return 'Cross-device link'; - case WasiErrno.ENOTCAPABLE: return 'Capabilities insufficient'; - default: return 'Unknown error'; - } -} -export class WasiError extends Error { - constructor(message, errno) { - super(message); - this.errno = errno; - } - getErrorMessage() { - return strerror(this.errno); - } -} -Object.defineProperty(WasiError.prototype, 'name', { - configurable: true, - writable: true, - value: 'WasiError' -}); diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/fd.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/fd.mjs deleted file mode 100644 index 9ff3d03..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/fd.mjs +++ /dev/null @@ -1,256 +0,0 @@ -import { WasiErrno, FileControlFlag, WasiFileType, WasiWhence } from "./types.mjs"; -import { getRights } from "./rights.mjs"; -import { WasiError } from "./error.mjs"; -export function concatBuffer(buffers, size) { - let total = 0; - if (typeof size === 'number' && size >= 0) { - total = size; - } - else { - for (let i = 0; i < buffers.length; i++) { - const buffer = buffers[i]; - total += buffer.length; - } - } - let pos = 0; - const ret = new Uint8Array(total); - for (let i = 0; i < buffers.length; i++) { - const buffer = buffers[i]; - ret.set(buffer, pos); - pos += buffer.length; - } - return ret; -} -export class FileDescriptor { - constructor(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { - this.id = id; - this.fd = fd; - this.path = path; - this.realPath = realPath; - this.type = type; - this.rightsBase = rightsBase; - this.rightsInheriting = rightsInheriting; - this.preopen = preopen; - this.pos = BigInt(0); - this.size = BigInt(0); - } - seek(offset, whence) { - if (whence === WasiWhence.SET) { - this.pos = BigInt(offset); - } - else if (whence === WasiWhence.CUR) { - this.pos += BigInt(offset); - } - else if (whence === WasiWhence.END) { - this.pos = BigInt(this.size) - BigInt(offset); - } - else { - throw new WasiError('Unknown whence', WasiErrno.EIO); - } - return this.pos; - } -} -export class StandardOutput extends FileDescriptor { - constructor(log, id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { - super(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen); - this._log = log; - this._buf = null; - } - write(buffer) { - const originalBuffer = buffer; - if (this._buf) { - buffer = concatBuffer([this._buf, buffer]); - this._buf = null; - } - if (buffer.indexOf(10) === -1) { - this._buf = buffer; - return originalBuffer.byteLength; - } - let written = 0; - let lastBegin = 0; - let index; - while ((index = buffer.indexOf(10, written)) !== -1) { - const str = new TextDecoder().decode(buffer.subarray(lastBegin, index)); - this._log(str); - written += index - lastBegin + 1; - lastBegin = index + 1; - } - if (written < buffer.length) { - this._buf = buffer.slice(written); - } - return originalBuffer.byteLength; - } -} -export function toFileType(stat) { - if (stat.isBlockDevice()) - return WasiFileType.BLOCK_DEVICE; - if (stat.isCharacterDevice()) - return WasiFileType.CHARACTER_DEVICE; - if (stat.isDirectory()) - return WasiFileType.DIRECTORY; - if (stat.isSocket()) - return WasiFileType.SOCKET_STREAM; - if (stat.isFile()) - return WasiFileType.REGULAR_FILE; - if (stat.isSymbolicLink()) - return WasiFileType.SYMBOLIC_LINK; - return WasiFileType.UNKNOWN; -} -export function toFileStat(view, buf, stat) { - view.setBigUint64(buf, stat.dev, true); - view.setBigUint64(buf + 8, stat.ino, true); - view.setBigUint64(buf + 16, BigInt(toFileType(stat)), true); - view.setBigUint64(buf + 24, stat.nlink, true); - view.setBigUint64(buf + 32, stat.size, true); - view.setBigUint64(buf + 40, stat.atimeMs * BigInt(1000000), true); - view.setBigUint64(buf + 48, stat.mtimeMs * BigInt(1000000), true); - view.setBigUint64(buf + 56, stat.ctimeMs * BigInt(1000000), true); -} -export class FileDescriptorTable { - constructor(options) { - this.used = 0; - this.size = options.size; - this.fds = Array(options.size); - this.stdio = [options.in, options.out, options.err]; - this.print = options.print; - this.printErr = options.printErr; - this.insertStdio(options.in, 0, ''); - this.insertStdio(options.out, 1, ''); - this.insertStdio(options.err, 2, ''); - } - insertStdio(fd, expected, name) { - const type = WasiFileType.CHARACTER_DEVICE; - const { base, inheriting } = getRights(this.stdio, fd, FileControlFlag.O_RDWR, type); - const wrap = this.insert(fd, name, name, type, base, inheriting, 0); - if (wrap.id !== expected) { - throw new WasiError(`id: ${wrap.id} !== expected: ${expected}`, WasiErrno.EBADF); - } - return wrap; - } - insert(fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen) { - var _a, _b; - let index = -1; - if (this.used >= this.size) { - const newSize = this.size * 2; - this.fds.length = newSize; - index = this.size; - this.size = newSize; - } - else { - for (let i = 0; i < this.size; ++i) { - if (this.fds[i] == null) { - index = i; - break; - } - } - } - let entry; - if (mappedPath === '') { - entry = new StandardOutput((_a = this.print) !== null && _a !== void 0 ? _a : console.log, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - else if (mappedPath === '') { - entry = new StandardOutput((_b = this.printErr) !== null && _b !== void 0 ? _b : console.error, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - else { - entry = new FileDescriptor(index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); - } - this.fds[index] = entry; - this.used++; - return entry; - } - get(id, base, inheriting) { - if (id >= this.size) { - throw new WasiError('Invalid fd', WasiErrno.EBADF); - } - const entry = this.fds[id]; - if (!entry || entry.id !== id) { - throw new WasiError('Bad file descriptor', WasiErrno.EBADF); - } - /* Validate that the fd has the necessary rights. */ - if ((~entry.rightsBase & base) !== BigInt(0) || (~entry.rightsInheriting & inheriting) !== BigInt(0)) { - throw new WasiError('Capabilities insufficient', WasiErrno.ENOTCAPABLE); - } - return entry; - } - remove(id) { - if (id >= this.size) { - throw new WasiError('Invalid fd', WasiErrno.EBADF); - } - const entry = this.fds[id]; - if (!entry || entry.id !== id) { - throw new WasiError('Bad file descriptor', WasiErrno.EBADF); - } - this.fds[id] = undefined; - this.used--; - } -} -export class SyncTable extends FileDescriptorTable { - constructor(options) { - super(options); - this.fs = options.fs; - } - getFileTypeByFd(fd) { - const stats = this.fs.fstatSync(fd, { bigint: true }); - return toFileType(stats); - } - insertPreopen(fd, mappedPath, realPath) { - const type = this.getFileTypeByFd(fd); - if (type !== WasiFileType.DIRECTORY) { - throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, WasiErrno.ENOTDIR); - } - const result = getRights(this.stdio, fd, 0, type); - return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); - } - renumber(dst, src) { - if (dst === src) - return; - if (dst >= this.size || src >= this.size) { - throw new WasiError('Invalid fd', WasiErrno.EBADF); - } - const dstEntry = this.fds[dst]; - const srcEntry = this.fds[src]; - if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { - throw new WasiError('Invalid fd', WasiErrno.EBADF); - } - this.fs.closeSync(dstEntry.fd); - this.fds[dst] = this.fds[src]; - this.fds[dst].id = dst; - this.fds[src] = undefined; - this.used--; - } -} -export class AsyncTable extends FileDescriptorTable { - // eslint-disable-next-line @typescript-eslint/no-useless-constructor - constructor(options) { - super(options); - } - async getFileTypeByFd(fd) { - const stats = await fd.stat({ bigint: true }); - return toFileType(stats); - } - async insertPreopen(fd, mappedPath, realPath) { - const type = await this.getFileTypeByFd(fd); - if (type !== WasiFileType.DIRECTORY) { - throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, WasiErrno.ENOTDIR); - } - const result = getRights(this.stdio, fd.fd, 0, type); - return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); - } - async renumber(dst, src) { - if (dst === src) - return; - if (dst >= this.size || src >= this.size) { - throw new WasiError('Invalid fd', WasiErrno.EBADF); - } - const dstEntry = this.fds[dst]; - const srcEntry = this.fds[src]; - if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { - throw new WasiError('Invalid fd', WasiErrno.EBADF); - } - await dstEntry.fd.close(); - this.fds[dst] = this.fds[src]; - this.fds[dst].id = dst; - this.fds[src] = undefined; - this.used--; - } -} diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/fs.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/fs.mjs deleted file mode 100644 index cb0ff5c..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/fs.mjs +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/index.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/index.mjs deleted file mode 100644 index 127ff99..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/index.mjs +++ /dev/null @@ -1,186 +0,0 @@ -import { WASI as WASIPreview1 } from "./preview1.mjs"; -import { validateObject, validateArray, validateBoolean, validateFunction, validateUndefined, validateString } from "./util.mjs"; -// eslint-disable-next-line spaced-comment -const kEmptyObject = /*#__PURE__*/ Object.freeze(/*#__PURE__*/ Object.create(null)); -const kExitCode = Symbol('kExitCode'); -const kSetMemory = Symbol('kSetMemory'); -const kStarted = Symbol('kStarted'); -const kInstance = Symbol('kInstance'); -const kBindingName = Symbol('kBindingName'); -function validateOptions(options) { - var _a; - validateObject(options, 'options'); - let _WASI; - if (options.version !== undefined) { - validateString(options.version, 'options.version'); - switch (options.version) { - case 'unstable': - _WASI = WASIPreview1; - this[kBindingName] = 'wasi_unstable'; - break; - case 'preview1': - _WASI = WASIPreview1; - this[kBindingName] = 'wasi_snapshot_preview1'; - break; - default: - throw new TypeError(`unsupported WASI version "${options.version}"`); - } - } - else { - _WASI = WASIPreview1; - this[kBindingName] = 'wasi_snapshot_preview1'; - } - if (options.args !== undefined) { - validateArray(options.args, 'options.args'); - } - const args = ((_a = options.args) !== null && _a !== void 0 ? _a : []).map(String); - const env = []; - if (options.env !== undefined) { - validateObject(options.env, 'options.env'); - Object.entries(options.env).forEach(({ 0: key, 1: value }) => { - if (value !== undefined) { - env.push(`${key}=${value}`); - } - }); - } - const preopens = []; - if (options.preopens !== undefined) { - validateObject(options.preopens, 'options.preopens'); - Object.entries(options.preopens).forEach(({ 0: key, 1: value }) => preopens.push({ mappedPath: String(key), realPath: String(value) })); - } - if (preopens.length > 0) { - if (options.fs === undefined) { - throw new Error('filesystem is disabled, can not preopen directory'); - } - try { - validateObject(options.fs, 'options.fs'); - } - catch (_) { - throw new TypeError('Node.js fs like implementation is not provided'); - } - } - // if (options.filesystem !== undefined) { - // validateObject(options.filesystem, 'options.filesystem') - // validateString(options.filesystem.type, 'options.filesystem.type') - // if (options.filesystem.type !== 'memfs' && options.filesystem.type !== 'file-system-access-api') { - // throw new Error(`Filesystem type ${(options.filesystem as any).type as string} is not supported, only "memfs" and "file-system-access-api" is supported currently`) - // } - // try { - // validateObject(options.filesystem.fs, 'options.filesystem.fs') - // } catch (_) { - // throw new Error('Node.js fs like implementation is not provided') - // } - // } - if (options.print !== undefined) - validateFunction(options.print, 'options.print'); - if (options.printErr !== undefined) - validateFunction(options.printErr, 'options.printErr'); - if (options.returnOnExit !== undefined) { - validateBoolean(options.returnOnExit, 'options.returnOnExit'); - } - // const { stdin = 0, stdout = 1, stderr = 2 } = options - // validateInt32(stdin, 'options.stdin', 0) - // validateInt32(stdout, 'options.stdout', 0) - // validateInt32(stderr, 'options.stderr', 0) - // const stdio = [stdin, stdout, stderr] as const - const stdio = [0, 1, 2]; - return { - args, - env, - preopens, - stdio, - _WASI - }; -} -function initWASI(setMemory, wrap) { - this[kSetMemory] = setMemory; - this.wasiImport = wrap; - this[kStarted] = false; - this[kExitCode] = 0; - this[kInstance] = undefined; -} -/** @public */ -export class WASI { - constructor(options = kEmptyObject) { - const { args, env, preopens, stdio, _WASI } = validateOptions.call(this, options); - const wrap = _WASI.createSync(args, env, preopens, stdio, options.fs, options.print, options.printErr); - const setMemory = wrap._setMemory; - delete wrap._setMemory; - initWASI.call(this, setMemory, wrap); - if (options.returnOnExit) { - wrap.proc_exit = wasiReturnOnProcExit.bind(this); - } - } - finalizeBindings(instance, _a) { - var _b; - var { memory = (_b = instance === null || instance === void 0 ? void 0 : instance.exports) === null || _b === void 0 ? void 0 : _b.memory } = _a === void 0 ? {} : _a; - if (this[kStarted]) { - throw new Error('WASI instance has already started'); - } - validateObject(instance, 'instance'); - validateObject(instance.exports, 'instance.exports'); - this[kSetMemory](memory); - this[kInstance] = instance; - this[kStarted] = true; - } - // Must not export _initialize, must export _start - start(instance) { - this.finalizeBindings(instance); - const { _start, _initialize } = this[kInstance].exports; - validateFunction(_start, 'instance.exports._start'); - validateUndefined(_initialize, 'instance.exports._initialize'); - let ret; - try { - ret = _start(); - } - catch (err) { - if (err !== kExitCode) { - throw err; - } - } - if (ret instanceof Promise) { - return ret.then(() => this[kExitCode], (err) => { - if (err !== kExitCode) { - throw err; - } - return this[kExitCode]; - }); - } - return this[kExitCode]; - } - // Must not export _start, may optionally export _initialize - initialize(instance) { - this.finalizeBindings(instance); - const { _start, _initialize } = this[kInstance].exports; - validateUndefined(_start, 'instance.exports._start'); - if (_initialize !== undefined) { - validateFunction(_initialize, 'instance.exports._initialize'); - return _initialize(); - } - } - getImportObject() { - return { [this[kBindingName]]: this.wasiImport }; - } -} -function wasiReturnOnProcExit(rval) { - this[kExitCode] = rval; - // eslint-disable-next-line @typescript-eslint/no-throw-literal - throw kExitCode; -} -/** @public */ -export async function createAsyncWASI(options = kEmptyObject) { - const _this = Object.create(WASI.prototype); - const { args, env, preopens, stdio, _WASI } = validateOptions.call(_this, options); - if (options.asyncify !== undefined) { - validateObject(options.asyncify, 'options.asyncify'); - validateFunction(options.asyncify.wrapImportFunction, 'options.asyncify.wrapImportFunction'); - } - const wrap = await _WASI.createAsync(args, env, preopens, stdio, options.fs, options.print, options.printErr, options.asyncify); - const setMemory = wrap._setMemory; - delete wrap._setMemory; - initWASI.call(_this, setMemory, wrap); - if (options.returnOnExit) { - wrap.proc_exit = wasiReturnOnProcExit.bind(_this); - } - return _this; -} diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs deleted file mode 100644 index dca6e11..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +++ /dev/null @@ -1,168 +0,0 @@ -import { validateString } from "./util.mjs"; -const CHAR_DOT = 46; /* . */ -const CHAR_FORWARD_SLASH = 47; /* / */ -function isPosixPathSeparator(code) { - return code === CHAR_FORWARD_SLASH; -} -function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { - let res = ''; - let lastSegmentLength = 0; - let lastSlash = -1; - let dots = 0; - let code = 0; - for (let i = 0; i <= path.length; ++i) { - if (i < path.length) { - code = path.charCodeAt(i); - } - else if (isPathSeparator(code)) { - break; - } - else { - code = CHAR_FORWARD_SLASH; - } - if (isPathSeparator(code)) { - if (lastSlash === i - 1 || dots === 1) { - // NOOP - } - else if (dots === 2) { - if (res.length < 2 || lastSegmentLength !== 2 || - res.charCodeAt(res.length - 1) !== CHAR_DOT || - res.charCodeAt(res.length - 2) !== CHAR_DOT) { - if (res.length > 2) { - const lastSlashIndex = res.indexOf(separator); - if (lastSlashIndex === -1) { - res = ''; - lastSegmentLength = 0; - } - else { - res = res.slice(0, lastSlashIndex); - lastSegmentLength = - res.length - 1 - res.indexOf(separator); - } - lastSlash = i; - dots = 0; - continue; - } - else if (res.length !== 0) { - res = ''; - lastSegmentLength = 0; - lastSlash = i; - dots = 0; - continue; - } - } - if (allowAboveRoot) { - res += res.length > 0 ? `${separator}..` : '..'; - lastSegmentLength = 2; - } - } - else { - if (res.length > 0) { - res += `${separator}${path.slice(lastSlash + 1, i)}`; - } - else { - res = path.slice(lastSlash + 1, i); - } - lastSegmentLength = i - lastSlash - 1; - } - lastSlash = i; - dots = 0; - } - else if (code === CHAR_DOT && dots !== -1) { - ++dots; - } - else { - dots = -1; - } - } - return res; -} -export function resolve(...args) { - let resolvedPath = ''; - let resolvedAbsolute = false; - for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { - const path = i >= 0 ? args[i] : '/'; - validateString(path, 'path'); - // Skip empty entries - if (path.length === 0) { - continue; - } - resolvedPath = `${path}/${resolvedPath}`; - resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - // Normalize the path - resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); - if (resolvedAbsolute) { - return `/${resolvedPath}`; - } - return resolvedPath.length > 0 ? resolvedPath : '.'; -} -export function relative(from, to) { - validateString(from, 'from'); - validateString(to, 'to'); - if (from === to) - return ''; - // Trim leading forward slashes. - from = resolve(from); - to = resolve(to); - if (from === to) - return ''; - const fromStart = 1; - const fromEnd = from.length; - const fromLen = fromEnd - fromStart; - const toStart = 1; - const toLen = to.length - toStart; - // Compare paths to find the longest common path from root - const length = (fromLen < toLen ? fromLen : toLen); - let lastCommonSep = -1; - let i = 0; - for (; i < length; i++) { - const fromCode = from.charCodeAt(fromStart + i); - if (fromCode !== to.charCodeAt(toStart + i)) { - break; - } - else if (fromCode === CHAR_FORWARD_SLASH) { - lastCommonSep = i; - } - } - if (i === length) { - if (toLen > length) { - if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { - // We get here if `from` is the exact base path for `to`. - // For example: from='/foo/bar'; to='/foo/bar/baz' - return to.slice(toStart + i + 1); - } - if (i === 0) { - // We get here if `from` is the root - // For example: from='/'; to='/foo' - return to.slice(toStart + i); - } - } - else if (fromLen > length) { - if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { - // We get here if `to` is the exact base path for `from`. - // For example: from='/foo/bar/baz'; to='/foo/bar' - lastCommonSep = i; - } - else if (i === 0) { - // We get here if `to` is the root. - // For example: from='/foo/bar'; to='/' - lastCommonSep = 0; - } - } - } - let out = ''; - // Generate the relative path based on the path difference between `to` - // and `from`. - for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { - if (i === fromEnd || - from.charCodeAt(i) === CHAR_FORWARD_SLASH) { - out += out.length === 0 ? '..' : '/..'; - } - } - // Lastly, append the rest of the destination (`to`) path that comes after - // the common path parts. - return `${out}${to.slice(toStart + lastCommonSep)}`; -} diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs deleted file mode 100644 index 115a800..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +++ /dev/null @@ -1,1561 +0,0 @@ -import { _WebAssembly } from "../webassembly.mjs"; -import { resolve } from "./path.mjs"; -import { WasiErrno, WasiRights, FileControlFlag, WasiFileControlFlag, WasiFdFlag, WasiFileType, WasiClockid, WasiFstFlag, WasiEventType, WasiSubclockflags } from "./types.mjs"; -import { concatBuffer, toFileStat, AsyncTable, SyncTable } from "./fd.mjs"; -import { WasiError } from "./error.mjs"; -import { isPromiseLike, sleepBreakIf, unsharedSlice } from "./util.mjs"; -import { getRights } from "./rights.mjs"; -import { extendMemory } from "../memory.mjs"; -import { wrapAsyncImport } from "../jspi.mjs"; -function copyMemory(targets, src) { - if (targets.length === 0 || src.length === 0) - return 0; - let copied = 0; - let left = src.length - copied; - for (let i = 0; i < targets.length; ++i) { - const target = targets[i]; - if (left < target.length) { - target.set(src.subarray(copied, copied + left), 0); - copied += left; - left = 0; - return copied; - } - target.set(src.subarray(copied, copied + target.length), 0); - copied += target.length; - left -= target.length; - } - return copied; -} -const _memory = new WeakMap(); -const _wasi = new WeakMap(); -const _fs = new WeakMap(); -function getMemory(wasi) { - return _memory.get(wasi); -} -function getFs(wasi) { - const fs = _fs.get(wasi); - if (!fs) - throw new Error('filesystem is unavailable'); - return fs; -} -function handleError(err) { - if (err instanceof WasiError) { - if (process.env.NODE_ENV !== 'production') { - console.warn(err); - } - return err.errno; - } - switch (err.code) { - case 'ENOENT': return WasiErrno.ENOENT; - case 'EBADF': return WasiErrno.EBADF; - case 'EINVAL': return WasiErrno.EINVAL; - case 'EPERM': return WasiErrno.EPERM; - case 'EPROTO': return WasiErrno.EPROTO; - case 'EEXIST': return WasiErrno.EEXIST; - case 'ENOTDIR': return WasiErrno.ENOTDIR; - case 'EMFILE': return WasiErrno.EMFILE; - case 'EACCES': return WasiErrno.EACCES; - case 'EISDIR': return WasiErrno.EISDIR; - case 'ENOTEMPTY': return WasiErrno.ENOTEMPTY; - case 'ENOSYS': return WasiErrno.ENOSYS; - } - throw err; -} -function defineName(name, f) { - Object.defineProperty(f, 'name', { value: name }); - return f; -} -function tryCall(f, wasi, args) { - let r; - try { - r = f.apply(wasi, args); - } - catch (err) { - return handleError(err); - } - if (isPromiseLike(r)) { - return r.then(_ => _, handleError); - } - return r; -} -function syscallWrap(self, name, f) { - let debug = false; - const NODE_DEBUG_NATIVE = (() => { - try { - return process.env.NODE_DEBUG_NATIVE; - } - catch (_) { - return undefined; - } - })(); - if (typeof NODE_DEBUG_NATIVE === 'string' && NODE_DEBUG_NATIVE.split(',').includes('wasi')) { - debug = true; - } - return debug - ? defineName(name, function () { - const args = Array.prototype.slice.call(arguments); - let debugArgs = [`${name}(${Array.from({ length: arguments.length }).map(() => '%d').join(', ')})`]; - debugArgs = debugArgs.concat(args); - console.debug.apply(console, debugArgs); - return tryCall(f, self, args); - }) - : defineName(name, function () { - return tryCall(f, self, arguments); - }); -} -function resolvePathSync(fs, fileDescriptor, path, flags) { - let resolvedPath = resolve(fileDescriptor.realPath, path); - if ((flags & 1) === 1) { - try { - resolvedPath = fs.readlinkSync(resolvedPath); - } - catch (err) { - if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { - throw err; - } - } - } - return resolvedPath; -} -async function resolvePathAsync(fs, fileDescriptor, path, flags) { - let resolvedPath = resolve(fileDescriptor.realPath, path); - if ((flags & 1) === 1) { - try { - resolvedPath = await fs.promises.readlink(resolvedPath); - } - catch (err) { - if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { - throw err; - } - } - } - return resolvedPath; -} -// eslint-disable-next-line spaced-comment -const encoder = /*#__PURE__*/ new TextEncoder(); -// eslint-disable-next-line spaced-comment -const decoder = /*#__PURE__*/ new TextDecoder(); -const INT64_MAX = (BigInt(1) << BigInt(63)) - BigInt(1); -function readStdin() { - const value = window.prompt(); - if (value === null) - return new Uint8Array(); - const buffer = new TextEncoder().encode(value + '\n'); - return buffer; -} -function validateFstFlagsOrReturn(flags) { - return (Boolean((flags) & ~(WasiFstFlag.SET_ATIM | WasiFstFlag.SET_ATIM_NOW | - WasiFstFlag.SET_MTIM | WasiFstFlag.SET_MTIM_NOW)) || - ((flags) & (WasiFstFlag.SET_ATIM | WasiFstFlag.SET_ATIM_NOW)) === - (WasiFstFlag.SET_ATIM | WasiFstFlag.SET_ATIM_NOW) || - ((flags) & (WasiFstFlag.SET_MTIM | WasiFstFlag.SET_MTIM_NOW)) === - (WasiFstFlag.SET_MTIM | WasiFstFlag.SET_MTIM_NOW)); -} -export class WASI { - constructor(args, env, fds, asyncFs, fs, asyncify) { - this.args_get = syscallWrap(this, 'args_get', function (argv, argv_buf) { - argv = Number(argv); - argv_buf = Number(argv_buf); - if (argv === 0 || argv_buf === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const args = wasi.args; - for (let i = 0; i < args.length; ++i) { - const arg = args[i]; - view.setInt32(argv, argv_buf, true); - argv += 4; - const data = encoder.encode(arg + '\0'); - HEAPU8.set(data, argv_buf); - argv_buf += data.length; - } - return WasiErrno.ESUCCESS; - }); - this.args_sizes_get = syscallWrap(this, 'args_sizes_get', function (argc, argv_buf_size) { - argc = Number(argc); - argv_buf_size = Number(argv_buf_size); - if (argc === 0 || argv_buf_size === 0) { - return WasiErrno.EINVAL; - } - const { view } = getMemory(this); - const wasi = _wasi.get(this); - const args = wasi.args; - view.setUint32(argc, args.length, true); - view.setUint32(argv_buf_size, encoder.encode(args.join('\0') + '\0').length, true); - return WasiErrno.ESUCCESS; - }); - this.environ_get = syscallWrap(this, 'environ_get', function (environ, environ_buf) { - environ = Number(environ); - environ_buf = Number(environ_buf); - if (environ === 0 || environ_buf === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const env = wasi.env; - for (let i = 0; i < env.length; ++i) { - const pair = env[i]; - view.setInt32(environ, environ_buf, true); - environ += 4; - const data = encoder.encode(pair + '\0'); - HEAPU8.set(data, environ_buf); - environ_buf += data.length; - } - return WasiErrno.ESUCCESS; - }); - this.environ_sizes_get = syscallWrap(this, 'environ_sizes_get', function (len, buflen) { - len = Number(len); - buflen = Number(buflen); - if (len === 0 || buflen === 0) { - return WasiErrno.EINVAL; - } - const { view } = getMemory(this); - const wasi = _wasi.get(this); - view.setUint32(len, wasi.env.length, true); - view.setUint32(buflen, encoder.encode(wasi.env.join('\0') + '\0').length, true); - return WasiErrno.ESUCCESS; - }); - this.clock_res_get = syscallWrap(this, 'clock_res_get', function (id, resolution) { - resolution = Number(resolution); - if (resolution === 0) { - return WasiErrno.EINVAL; - } - const { view } = getMemory(this); - switch (id) { - case WasiClockid.REALTIME: - view.setBigUint64(resolution, BigInt(1000000), true); - return WasiErrno.ESUCCESS; - case WasiClockid.MONOTONIC: - case WasiClockid.PROCESS_CPUTIME_ID: - case WasiClockid.THREAD_CPUTIME_ID: - view.setBigUint64(resolution, BigInt(1000), true); - return WasiErrno.ESUCCESS; - default: return WasiErrno.EINVAL; - } - }); - this.clock_time_get = syscallWrap(this, 'clock_time_get', function (id, _percision, time) { - time = Number(time); - if (time === 0) { - return WasiErrno.EINVAL; - } - const { view } = getMemory(this); - switch (id) { - case WasiClockid.REALTIME: - view.setBigUint64(time, BigInt(Date.now()) * BigInt(1000000), true); - return WasiErrno.ESUCCESS; - case WasiClockid.MONOTONIC: - case WasiClockid.PROCESS_CPUTIME_ID: - case WasiClockid.THREAD_CPUTIME_ID: { - const t = performance.now() / 1000; - const s = Math.trunc(t); - const ms = Math.floor((t - s) * 1000); - const result = BigInt(s) * BigInt(1000000000) + BigInt(ms) * BigInt(1000000); - view.setBigUint64(time, result, true); - return WasiErrno.ESUCCESS; - } - default: return WasiErrno.EINVAL; - } - }); - this.fd_advise = syscallWrap(this, 'fd_advise', function (_fd, _offset, _len, _advice) { - return WasiErrno.ENOSYS; - }); - this.fd_fdstat_get = syscallWrap(this, 'fd_fdstat_get', function (fd, fdstat) { - fdstat = Number(fdstat); - if (fdstat === 0) { - return WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - const { view } = getMemory(this); - view.setUint16(fdstat, fileDescriptor.type, true); - view.setUint16(fdstat + 2, 0, true); - view.setBigUint64(fdstat + 8, fileDescriptor.rightsBase, true); - view.setBigUint64(fdstat + 16, fileDescriptor.rightsInheriting, true); - return WasiErrno.ESUCCESS; - }); - this.fd_fdstat_set_flags = syscallWrap(this, 'fd_fdstat_set_flags', function (_fd, _flags) { - return WasiErrno.ENOSYS; - }); - this.fd_fdstat_set_rights = syscallWrap(this, 'fd_fdstat_set_rights', function (fd, rightsBase, rightsInheriting) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - if ((rightsBase | fileDescriptor.rightsBase) > fileDescriptor.rightsBase) { - return WasiErrno.ENOTCAPABLE; - } - if ((rightsInheriting | fileDescriptor.rightsInheriting) > - fileDescriptor.rightsInheriting) { - return WasiErrno.ENOTCAPABLE; - } - fileDescriptor.rightsBase = rightsBase; - fileDescriptor.rightsInheriting = rightsInheriting; - return WasiErrno.ESUCCESS; - }); - this.fd_prestat_get = syscallWrap(this, 'fd_prestat_get', function (fd, prestat) { - prestat = Number(prestat); - if (prestat === 0) { - return WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - let fileDescriptor; - try { - fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - } - catch (err) { - if (err instanceof WasiError) - return err.errno; - throw err; - } - if (fileDescriptor.preopen !== 1) - return WasiErrno.EINVAL; - const { view } = getMemory(this); - // preopen type is dir(0) - view.setUint32(prestat, 0, true); - view.setUint32(prestat + 4, encoder.encode(fileDescriptor.path).length, true); - return WasiErrno.ESUCCESS; - }); - this.fd_prestat_dir_name = syscallWrap(this, 'fd_prestat_dir_name', function (fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - if (fileDescriptor.preopen !== 1) - return WasiErrno.EBADF; - const buffer = encoder.encode(fileDescriptor.path); - const size = buffer.length; - if (size > path_len) - return WasiErrno.ENOBUFS; - const { HEAPU8 } = getMemory(this); - HEAPU8.set(buffer, path); - return WasiErrno.ESUCCESS; - }); - this.fd_seek = syscallWrap(this, 'fd_seek', function (fd, offset, whence, newOffset) { - newOffset = Number(newOffset); - if (newOffset === 0) { - return WasiErrno.EINVAL; - } - if (fd === 0 || fd === 1 || fd === 2) - return WasiErrno.ESUCCESS; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SEEK, BigInt(0)); - const r = fileDescriptor.seek(offset, whence); - const { view } = getMemory(this); - view.setBigUint64(newOffset, r, true); - return WasiErrno.ESUCCESS; - }); - this.fd_tell = syscallWrap(this, 'fd_tell', function (fd, offset) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_TELL, BigInt(0)); - const pos = BigInt(fileDescriptor.pos); - const { view } = getMemory(this); - view.setBigUint64(Number(offset), pos, true); - return WasiErrno.ESUCCESS; - }); - this.poll_oneoff = syscallWrap(this, 'poll_oneoff', function (in_ptr, out_ptr, nsubscriptions, nevents) { - in_ptr = Number(in_ptr); - out_ptr = Number(out_ptr); - nevents = Number(nevents); - nsubscriptions = Number(nsubscriptions); - nsubscriptions = nsubscriptions >>> 0; - if (in_ptr === 0 || out_ptr === 0 || nsubscriptions === 0 || nevents === 0) { - return WasiErrno.EINVAL; - } - const { view } = getMemory(this); - view.setUint32(nevents, 0, true); - let i = 0; - let timer_userdata = BigInt(0); - let cur_timeout = BigInt(0); - let has_timeout = 0; - let min_timeout = BigInt(0); - let sub; - const subscriptions = Array(nsubscriptions); - for (i = 0; i < nsubscriptions; i++) { - sub = in_ptr + i * 48; - const userdata = view.getBigUint64(sub, true); - const type = view.getUint8(sub + 8); - const clockIdOrFd = view.getUint32(sub + 16, true); - const timeout = view.getBigUint64(sub + 24, true); - const precision = view.getBigUint64(sub + 32, true); - const flags = view.getUint16(sub + 40, true); - subscriptions[i] = { - userdata, - type, - u: { - clock: { - clock_id: clockIdOrFd, - timeout, - precision, - flags - }, - fd_readwrite: { - fd: clockIdOrFd - } - } - }; - } - const fdevents = []; - for (i = 0; i < nsubscriptions; i++) { - sub = subscriptions[i]; - switch (sub.type) { - case WasiEventType.CLOCK: { - if (sub.u.clock.flags === WasiSubclockflags.ABSTIME) { - /* Convert absolute time to relative delay. */ - const now = BigInt(Date.now()) * BigInt(1000000); - cur_timeout = sub.u.clock.timeout - now; - } - else { - cur_timeout = sub.u.clock.timeout; - } - if (has_timeout === 0 || cur_timeout < min_timeout) { - min_timeout = cur_timeout; - timer_userdata = sub.userdata; - has_timeout = 1; - } - break; - } - case WasiEventType.FD_READ: - case WasiEventType.FD_WRITE: - fdevents.push(sub); - break; - default: return WasiErrno.EINVAL; - } - } - if (fdevents.length > 0) { - for (i = 0; i < fdevents.length; i++) { - const fdevent = fdevents[i]; - const event = out_ptr + 32 * i; - view.setBigUint64(event, fdevent.userdata, true); - view.setUint32(event + 8, WasiErrno.ENOSYS, true); - view.setUint32(event + 12, fdevent.type, true); - view.setBigUint64(event + 16, BigInt(0), true); - view.setUint16(event + 24, 0, true); - view.setUint32(nevents, 1, true); - } - view.setUint32(nevents, fdevents.length, true); - return WasiErrno.ESUCCESS; - } - if (has_timeout) { - const delay = Number(min_timeout / BigInt(1000000)); - // if (isMainThread || typeof SharedArrayBuffer !== 'function') { - sleepBreakIf(delay, () => false); - // } else { - // const buf = new SharedArrayBuffer(4) - // const arr = new Int32Array(buf) - // postMsg({ - // __tybys_wasm_util_wasi__: { - // type: 'set-timeout', - // payload: { - // buffer: buf, - // delay - // } - // } - // }) - // Atomics.wait(arr, 0, 0) - // } - const event = out_ptr; - view.setBigUint64(event, timer_userdata, true); - view.setUint32(event + 8, WasiErrno.ESUCCESS, true); - view.setUint32(event + 12, WasiEventType.CLOCK, true); - view.setUint32(nevents, 1, true); - } - return WasiErrno.ESUCCESS; - }); - this.proc_exit = syscallWrap(this, 'proc_exit', function (rval) { - if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) { - process.exit(rval); - } - return WasiErrno.ESUCCESS; - }); - this.proc_raise = syscallWrap(this, 'proc_raise', function (_sig) { - return WasiErrno.ENOSYS; - }); - this.sched_yield = syscallWrap(this, 'sched_yield', function () { - return WasiErrno.ESUCCESS; - }); - this.random_get = typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function' - ? syscallWrap(this, 'random_get', function (buf, buf_len) { - buf = Number(buf); - if (buf === 0) { - return WasiErrno.EINVAL; - } - buf_len = Number(buf_len); - const { HEAPU8, view } = getMemory(this); - if ((typeof SharedArrayBuffer === 'function' && HEAPU8.buffer instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(HEAPU8.buffer) === '[object SharedArrayBuffer]')) { - for (let i = buf; i < buf + buf_len; ++i) { - view.setUint8(i, Math.floor(Math.random() * 256)); - } - return WasiErrno.ESUCCESS; - } - let pos; - const stride = 65536; - for (pos = 0; pos + stride < buf_len; pos += stride) { - crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + pos + stride)); - } - crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + buf_len)); - return WasiErrno.ESUCCESS; - }) - : syscallWrap(this, 'random_get', function (buf, buf_len) { - buf = Number(buf); - if (buf === 0) { - return WasiErrno.EINVAL; - } - buf_len = Number(buf_len); - const { view } = getMemory(this); - for (let i = buf; i < buf + buf_len; ++i) { - view.setUint8(i, Math.floor(Math.random() * 256)); - } - return WasiErrno.ESUCCESS; - }); - this.sock_recv = syscallWrap(this, 'sock_recv', function () { - return WasiErrno.ENOTSUP; - }); - this.sock_send = syscallWrap(this, 'sock_send', function () { - return WasiErrno.ENOTSUP; - }); - this.sock_shutdown = syscallWrap(this, 'sock_shutdown', function () { - return WasiErrno.ENOTSUP; - }); - this.sock_accept = syscallWrap(this, 'sock_accept', function () { - return WasiErrno.ENOTSUP; - }); - _wasi.set(this, { - fds, - args, - env - }); - if (fs) - _fs.set(this, fs); - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - function defineImport(name, syncVersion, asyncVersion, parameterType, returnType) { - if (asyncFs) { - if (asyncify) { - _this[name] = asyncify.wrapImportFunction(syscallWrap(_this, name, asyncVersion)); - } - else { - _this[name] = wrapAsyncImport(syscallWrap(_this, name, asyncVersion), parameterType, returnType); - } - } - else { - _this[name] = syscallWrap(_this, name, syncVersion); - } - } - defineImport('fd_allocate', function fd_allocate(fd, offset, len) { - const wasi = _wasi.get(this); - const fs = getFs(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); - const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); - if (stat.size < offset + len) { - fs.ftruncateSync(fileDescriptor.fd, Number(offset + len)); - } - return WasiErrno.ESUCCESS; - }, async function fd_allocate(fd, offset, len) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); - const h = fileDescriptor.fd; - const stat = await h.stat({ bigint: true }); - if (stat.size < offset + len) { - await h.truncate(Number(offset + len)); - } - return WasiErrno.ESUCCESS; - }, ['i32', 'i64', 'f64'], ['i32']); - defineImport('fd_close', function fd_close(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - const fs = getFs(this); - fs.closeSync(fileDescriptor.fd); - wasi.fds.remove(fd); - return WasiErrno.ESUCCESS; - }, async function fd_close(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); - await fileDescriptor.fd.close(); - wasi.fds.remove(fd); - return WasiErrno.ESUCCESS; - }, ['i32'], ['i32']); - defineImport('fd_datasync', function fd_datasync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); - const fs = getFs(this); - fs.fdatasyncSync(fileDescriptor.fd); - return WasiErrno.ESUCCESS; - }, async function fd_datasync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); - await fileDescriptor.fd.datasync(); - return WasiErrno.ESUCCESS; - }, ['i32'], ['i32']); - defineImport('fd_filestat_get', function fd_filestat_get(fd, buf) { - buf = Number(buf); - if (buf === 0) - return WasiErrno.EINVAL; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); - const fs = getFs(this); - const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); - const { view } = getMemory(this); - toFileStat(view, buf, stat); - return WasiErrno.ESUCCESS; - }, async function fd_filestat_get(fd, buf) { - buf = Number(buf); - if (buf === 0) - return WasiErrno.EINVAL; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); - const h = fileDescriptor.fd; - const stat = await h.stat({ bigint: true }); - const { view } = getMemory(this); - toFileStat(view, buf, stat); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32'], ['i32']); - defineImport('fd_filestat_set_size', function fd_filestat_set_size(fd, size) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); - const fs = getFs(this); - fs.ftruncateSync(fileDescriptor.fd, Number(size)); - return WasiErrno.ESUCCESS; - }, async function fd_filestat_set_size(fd, size) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); - const h = fileDescriptor.fd; - await h.truncate(Number(size)); - return WasiErrno.ESUCCESS; - }, ['i32', 'i64'], ['i32']); - function fdFilestatGetTimes(fd, atim, mtim, flags) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_TIMES, BigInt(0)); - if ((flags & WasiFstFlag.SET_ATIM_NOW) === WasiFstFlag.SET_ATIM_NOW) { - atim = BigInt(Date.now() * 1000000); - } - if ((flags & WasiFstFlag.SET_MTIM_NOW) === WasiFstFlag.SET_MTIM_NOW) { - mtim = BigInt(Date.now() * 1000000); - } - return { fileDescriptor, atim, mtim }; - } - defineImport('fd_filestat_set_times', function fd_filestat_set_times(fd, atim, mtim, flags) { - if (validateFstFlagsOrReturn(flags)) { - return WasiErrno.EINVAL; - } - const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); - const fs = getFs(this); - fs.futimesSync(fileDescriptor.fd, Number(atimRes), Number(mtimRes)); - return WasiErrno.ESUCCESS; - }, async function fd_filestat_set_times(fd, atim, mtim, flags) { - if (validateFstFlagsOrReturn(flags)) { - return WasiErrno.EINVAL; - } - const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); - const h = fileDescriptor.fd; - await h.utimes(Number(atimRes), Number(mtimRes)); - return WasiErrno.ESUCCESS; - }, ['i32', 'i64', 'i64', 'i32'], ['i32']); - defineImport('fd_pread', function fd_pread(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return WasiErrno.ESUCCESS; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let nread = 0; - const buffer = (() => { - try { - return new Uint8Array(new SharedArrayBuffer(totalSize)); - } - catch (_) { - return new Uint8Array(totalSize); - } - })(); - buffer._isBuffer = true; - const fs = getFs(this); - const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - view.setUint32(size, nread, true); - return WasiErrno.ESUCCESS; - }, async function (fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return WasiErrno.ESUCCESS; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let nread = 0; - const buffer = new Uint8Array(totalSize); - buffer._isBuffer = true; - const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(offset)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - view.setUint32(size, nread, true); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_pwrite', function fd_pwrite(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return WasiErrno.ESUCCESS; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - const fs = getFs(this); - const nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); - view.setUint32(size, nwritten, true); - return WasiErrno.ESUCCESS; - }, async function fd_pwrite(fd, iovs, iovslen, offset, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return WasiErrno.ESUCCESS; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - const { bytesWritten } = await fileDescriptor.fd.write(buffer, 0, buffer.length, Number(offset)); - view.setUint32(size, bytesWritten, true); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_read', function fd_read(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return WasiErrno.ESUCCESS; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let buffer; - let nread = 0; - if (fd === 0) { - if (typeof window === 'undefined' || typeof window.prompt !== 'function') { - return WasiErrno.ENOTSUP; - } - buffer = readStdin(); - nread = buffer ? copyMemory(ioVecs, buffer) : 0; - } - else { - buffer = (() => { - try { - return new Uint8Array(new SharedArrayBuffer(totalSize)); - } - catch (_) { - return new Uint8Array(totalSize); - } - })(); - buffer._isBuffer = true; - const fs = getFs(this); - const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - fileDescriptor.pos += BigInt(nread); - } - view.setUint32(size, nread, true); - return WasiErrno.ESUCCESS; - }, async function fd_read(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return WasiErrno.ESUCCESS; - } - let totalSize = 0; - const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - totalSize += bufLen; - return HEAPU8.subarray(buf, buf + bufLen); - }); - let buffer; - let nread = 0; - if (fd === 0) { - if (typeof window === 'undefined' || typeof window.prompt !== 'function') { - return WasiErrno.ENOTSUP; - } - buffer = readStdin(); - nread = buffer ? copyMemory(ioVecs, buffer) : 0; - } - else { - buffer = new Uint8Array(totalSize); - buffer._isBuffer = true; - const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(fileDescriptor.pos)); - nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; - fileDescriptor.pos += BigInt(nread); - } - view.setUint32(size, nread, true); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('fd_readdir', function fd_readdir(fd, buf, buf_len, cookie, bufused) { - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (buf === 0 || bufused === 0) - return WasiErrno.ESUCCESS; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); - const fs = getFs(this); - const entries = fs.readdirSync(fileDescriptor.realPath, { withFileTypes: true }); - const { HEAPU8, view } = getMemory(this); - let bufferUsed = 0; - for (let i = Number(cookie); i < entries.length; i++) { - const nameData = encoder.encode(entries[i].name); - const entryInfo = fs.statSync(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); - const entryData = new Uint8Array(24 + nameData.byteLength); - const entryView = new DataView(entryData.buffer); - entryView.setBigUint64(0, BigInt(i + 1), true); - entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); - entryView.setUint32(16, nameData.byteLength, true); - let type; - if (entries[i].isFile()) { - type = WasiFileType.REGULAR_FILE; - } - else if (entries[i].isDirectory()) { - type = WasiFileType.DIRECTORY; - } - else if (entries[i].isSymbolicLink()) { - type = WasiFileType.SYMBOLIC_LINK; - } - else if (entries[i].isCharacterDevice()) { - type = WasiFileType.CHARACTER_DEVICE; - } - else if (entries[i].isBlockDevice()) { - type = WasiFileType.BLOCK_DEVICE; - } - else if (entries[i].isSocket()) { - type = WasiFileType.SOCKET_STREAM; - } - else { - type = WasiFileType.UNKNOWN; - } - entryView.setUint8(20, type); - entryData.set(nameData, 24); - const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); - HEAPU8.set(data, buf + bufferUsed); - bufferUsed += data.byteLength; - } - view.setUint32(bufused, bufferUsed, true); - return WasiErrno.ESUCCESS; - }, async function fd_readdir(fd, buf, buf_len, cookie, bufused) { - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (buf === 0 || bufused === 0) - return WasiErrno.ESUCCESS; - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); - const fs = getFs(this); - const entries = await fs.promises.readdir(fileDescriptor.realPath, { withFileTypes: true }); - const { HEAPU8, view } = getMemory(this); - let bufferUsed = 0; - for (let i = Number(cookie); i < entries.length; i++) { - const nameData = encoder.encode(entries[i].name); - const entryInfo = await fs.promises.stat(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); - const entryData = new Uint8Array(24 + nameData.byteLength); - const entryView = new DataView(entryData.buffer); - entryView.setBigUint64(0, BigInt(i + 1), true); - entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); - entryView.setUint32(16, nameData.byteLength, true); - let type; - if (entries[i].isFile()) { - type = WasiFileType.REGULAR_FILE; - } - else if (entries[i].isDirectory()) { - type = WasiFileType.DIRECTORY; - } - else if (entries[i].isSymbolicLink()) { - type = WasiFileType.SYMBOLIC_LINK; - } - else if (entries[i].isCharacterDevice()) { - type = WasiFileType.CHARACTER_DEVICE; - } - else if (entries[i].isBlockDevice()) { - type = WasiFileType.BLOCK_DEVICE; - } - else if (entries[i].isSocket()) { - type = WasiFileType.SOCKET_STREAM; - } - else { - type = WasiFileType.UNKNOWN; - } - entryView.setUint8(20, type); - entryData.set(nameData, 24); - const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); - HEAPU8.set(data, buf + bufferUsed); - bufferUsed += data.byteLength; - } - view.setUint32(bufused, bufferUsed, true); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); - defineImport('fd_renumber', function fd_renumber(from, to) { - const wasi = _wasi.get(this); - wasi.fds.renumber(to, from); - return WasiErrno.ESUCCESS; - }, async function fd_renumber(from, to) { - const wasi = _wasi.get(this); - await wasi.fds.renumber(to, from); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32'], ['i32']); - defineImport('fd_sync', function fd_sync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); - const fs = getFs(this); - fs.fsyncSync(fileDescriptor.fd); - return WasiErrno.ESUCCESS; - }, async function fd_sync(fd) { - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); - await fileDescriptor.fd.sync(); - return WasiErrno.ESUCCESS; - }, ['i32'], ['i32']); - defineImport('fd_write', function fd_write(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return WasiErrno.ESUCCESS; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - let nwritten; - if (fd === 1 || fd === 2) { - nwritten = fileDescriptor.write(buffer); - } - else { - const fs = getFs(this); - nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); - fileDescriptor.pos += BigInt(nwritten); - } - view.setUint32(size, nwritten, true); - return WasiErrno.ESUCCESS; - }, async function fd_write(fd, iovs, iovslen, size) { - iovs = Number(iovs); - size = Number(size); - if ((iovs === 0 && iovslen) || size === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); - if (!iovslen) { - view.setUint32(size, 0, true); - return WasiErrno.ESUCCESS; - } - const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { - const offset = iovs + (i * 8); - const buf = view.getInt32(offset, true); - const bufLen = view.getUint32(offset + 4, true); - return HEAPU8.subarray(buf, buf + bufLen); - })); - let nwritten; - if (fd === 1 || fd === 2) { - nwritten = fileDescriptor.write(buffer); - } - else { - nwritten = await (await (fileDescriptor.fd.write(buffer, 0, buffer.length, Number(fileDescriptor.pos)))).bytesWritten; - fileDescriptor.pos += BigInt(nwritten); - } - view.setUint32(size, nwritten, true); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_create_directory', function path_create_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.mkdirSync(pathString); - return WasiErrno.ESUCCESS; - }, async function path_create_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.mkdir(pathString); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32'], ['i32']); - defineImport('path_filestat_get', function path_filestat_get(fd, flags, path, path_len, filestat) { - path = Number(path); - path_len = Number(path_len); - filestat = Number(filestat); - if (path === 0 || filestat === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - pathString = resolve(fileDescriptor.realPath, pathString); - let stat; - if ((flags & 1) === 1) { - stat = fs.statSync(pathString, { bigint: true }); - } - else { - stat = fs.lstatSync(pathString, { bigint: true }); - } - toFileStat(view, filestat, stat); - return WasiErrno.ESUCCESS; - }, async function path_filestat_get(fd, flags, path, path_len, filestat) { - path = Number(path); - path_len = Number(path_len); - filestat = Number(filestat); - if (path === 0 || filestat === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - pathString = resolve(fileDescriptor.realPath, pathString); - let stat; - if ((flags & 1) === 1) { - stat = await fs.promises.stat(pathString, { bigint: true }); - } - else { - stat = await fs.promises.lstat(pathString, { bigint: true }); - } - toFileStat(view, filestat, stat); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_filestat_set_times', function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) - return WasiErrno.EINVAL; - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); - if (validateFstFlagsOrReturn(fst_flags)) { - return WasiErrno.EINVAL; - } - const fs = getFs(this); - const resolvedPath = resolvePathSync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); - if ((fst_flags & WasiFstFlag.SET_ATIM_NOW) === WasiFstFlag.SET_ATIM_NOW) { - atim = BigInt(Date.now() * 1000000); - } - if ((fst_flags & WasiFstFlag.SET_MTIM_NOW) === WasiFstFlag.SET_MTIM_NOW) { - mtim = BigInt(Date.now() * 1000000); - } - fs.utimesSync(resolvedPath, Number(atim), Number(mtim)); - return WasiErrno.ESUCCESS; - }, async function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) - return WasiErrno.EINVAL; - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); - if (validateFstFlagsOrReturn(fst_flags)) { - return WasiErrno.EINVAL; - } - const fs = getFs(this); - const resolvedPath = await resolvePathAsync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); - if ((fst_flags & WasiFstFlag.SET_ATIM_NOW) === WasiFstFlag.SET_ATIM_NOW) { - atim = BigInt(Date.now() * 1000000); - } - if ((fst_flags & WasiFstFlag.SET_MTIM_NOW) === WasiFstFlag.SET_MTIM_NOW) { - mtim = BigInt(Date.now() * 1000000); - } - await fs.promises.utimes(resolvedPath, Number(atim), Number(mtim)); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32'], ['i32']); - defineImport('path_link', function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const fs = getFs(this); - const resolvedOldPath = resolvePathSync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - fs.linkSync(resolvedOldPath, resolvedNewPath); - return WasiErrno.ESUCCESS; - }, async function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const fs = getFs(this); - const resolvedOldPath = await resolvePathAsync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - await fs.promises.link(resolvedOldPath, resolvedNewPath); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - function pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags) { - const read = (fs_rights_base & (WasiRights.FD_READ | - WasiRights.FD_READDIR)) !== BigInt(0); - const write = (fs_rights_base & (WasiRights.FD_DATASYNC | - WasiRights.FD_WRITE | - WasiRights.FD_ALLOCATE | - WasiRights.FD_FILESTAT_SET_SIZE)) !== BigInt(0); - let flags = write ? read ? FileControlFlag.O_RDWR : FileControlFlag.O_WRONLY : FileControlFlag.O_RDONLY; - let needed_base = WasiRights.PATH_OPEN; - let needed_inheriting = fs_rights_base | fs_rights_inheriting; - if ((o_flags & WasiFileControlFlag.O_CREAT) !== 0) { - flags |= FileControlFlag.O_CREAT; - needed_base |= WasiRights.PATH_CREATE_FILE; - } - if ((o_flags & WasiFileControlFlag.O_DIRECTORY) !== 0) { - flags |= FileControlFlag.O_DIRECTORY; - } - if ((o_flags & WasiFileControlFlag.O_EXCL) !== 0) { - flags |= FileControlFlag.O_EXCL; - } - if ((o_flags & WasiFileControlFlag.O_TRUNC) !== 0) { - flags |= FileControlFlag.O_TRUNC; - needed_base |= WasiRights.PATH_FILESTAT_SET_SIZE; - } - if ((fs_flags & WasiFdFlag.APPEND) !== 0) { - flags |= FileControlFlag.O_APPEND; - } - if ((fs_flags & WasiFdFlag.DSYNC) !== 0) { - // flags |= FileControlFlag.O_DSYNC; - needed_inheriting |= WasiRights.FD_DATASYNC; - } - if ((fs_flags & WasiFdFlag.NONBLOCK) !== 0) { - flags |= FileControlFlag.O_NONBLOCK; - } - if ((fs_flags & WasiFdFlag.RSYNC) !== 0) { - flags |= FileControlFlag.O_SYNC; - needed_inheriting |= WasiRights.FD_SYNC; - } - if ((fs_flags & WasiFdFlag.SYNC) !== 0) { - flags |= FileControlFlag.O_SYNC; - needed_inheriting |= WasiRights.FD_SYNC; - } - if (write && (flags & (FileControlFlag.O_APPEND | FileControlFlag.O_TRUNC)) === 0) { - needed_inheriting |= WasiRights.FD_SEEK; - } - return { flags, needed_base, needed_inheriting }; - } - defineImport('path_open', function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { - path = Number(path); - fd = Number(fd); - if (path === 0 || fd === 0) { - return WasiErrno.EINVAL; - } - path_len = Number(path_len); - fs_rights_base = BigInt(fs_rights_base); - fs_rights_inheriting = BigInt(fs_rights_inheriting); - const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); - const memory = getMemory(this); - const HEAPU8 = memory.HEAPU8; - const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - const resolved_path = resolvePathSync(fs, fileDescriptor, pathString, dirflags); - const r = fs.openSync(resolved_path, flagsRes, 0o666); - const filetype = wasi.fds.getFileTypeByFd(r); - if ((filetype !== WasiFileType.DIRECTORY) && - ((o_flags & WasiFileControlFlag.O_DIRECTORY) !== 0 || - (resolved_path.endsWith('/')))) { - return WasiErrno.ENOTDIR; - } - const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r, flagsRes, filetype); - const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); - const stat = fs.fstatSync(r, { bigint: true }); - if (stat.isFile()) { - wrap.size = stat.size; - if ((flagsRes & FileControlFlag.O_APPEND) !== 0) { - wrap.pos = stat.size; - } - } - const view = memory.view; - view.setInt32(fd, wrap.id, true); - return WasiErrno.ESUCCESS; - }, async function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { - path = Number(path); - fd = Number(fd); - if (path === 0 || fd === 0) { - return WasiErrno.EINVAL; - } - path_len = Number(path_len); - fs_rights_base = BigInt(fs_rights_base); - fs_rights_inheriting = BigInt(fs_rights_inheriting); - const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); - const memory = getMemory(this); - const HEAPU8 = memory.HEAPU8; - const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - const fs = getFs(this); - const resolved_path = await resolvePathAsync(fs, fileDescriptor, pathString, dirflags); - const r = await fs.promises.open(resolved_path, flagsRes, 0o666); - const filetype = await wasi.fds.getFileTypeByFd(r); - if ((o_flags & WasiFileControlFlag.O_DIRECTORY) !== 0 && filetype !== WasiFileType.DIRECTORY) { - return WasiErrno.ENOTDIR; - } - const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r.fd, flagsRes, filetype); - const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); - const stat = await r.stat({ bigint: true }); - if (stat.isFile()) { - wrap.size = stat.size; - if ((flagsRes & FileControlFlag.O_APPEND) !== 0) { - wrap.pos = stat.size; - } - } - const view = memory.view; - view.setInt32(fd, wrap.id, true); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32', 'i32'], ['i32']); - defineImport('path_readlink', function path_readlink(fd, path, path_len, buf, buf_len, bufused) { - path = Number(path); - path_len = Number(path_len); - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (path === 0 || buf === 0 || bufused === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - const link = fs.readlinkSync(pathString); - const linkData = encoder.encode(link); - const len = Math.min(linkData.length, buf_len); - if (len >= buf_len) - return WasiErrno.ENOBUFS; - HEAPU8.set(linkData.subarray(0, len), buf); - HEAPU8[buf + len] = 0; - view.setUint32(bufused, len, true); - return WasiErrno.ESUCCESS; - }, async function path_readlink(fd, path, path_len, buf, buf_len, bufused) { - path = Number(path); - path_len = Number(path_len); - buf = Number(buf); - buf_len = Number(buf_len); - bufused = Number(bufused); - if (path === 0 || buf === 0 || bufused === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8, view } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - const link = await fs.promises.readlink(pathString); - const linkData = encoder.encode(link); - const len = Math.min(linkData.length, buf_len); - if (len >= buf_len) - return WasiErrno.ENOBUFS; - HEAPU8.set(linkData.subarray(0, len), buf); - HEAPU8[buf + len] = 0; - view.setUint32(bufused, len, true); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_remove_directory', function path_remove_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.rmdirSync(pathString); - return WasiErrno.ESUCCESS; - }, async function path_remove_directory(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.rmdir(pathString); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32'], ['i32']); - defineImport('path_rename', function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - const fs = getFs(this); - fs.renameSync(resolvedOldPath, resolvedNewPath); - return WasiErrno.ESUCCESS; - }, async function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return WasiErrno.EINVAL; - } - const wasi = _wasi.get(this); - let oldWrap; - let newWrap; - if (old_fd === new_fd) { - oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - else { - oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); - newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); - } - const { HEAPU8 } = getMemory(this); - const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); - const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); - const fs = getFs(this); - await fs.promises.rename(resolvedOldPath, resolvedNewPath); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_symlink', function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); - const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); - if (oldPath.length > 0 && oldPath[0] === '/') { - return WasiErrno.EPERM; - } - let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); - newPath = resolve(fileDescriptor.realPath, newPath); - const fs = getFs(this); - fs.symlinkSync(oldPath, newPath); - return WasiErrno.ESUCCESS; - }, async function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { - old_path = Number(old_path); - old_path_len = Number(old_path_len); - new_path = Number(new_path); - new_path_len = Number(new_path_len); - if (old_path === 0 || new_path === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); - const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); - let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); - newPath = resolve(fileDescriptor.realPath, newPath); - const fs = getFs(this); - await fs.promises.symlink(oldPath, newPath); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); - defineImport('path_unlink_file', function path_unlink_file(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - fs.unlinkSync(pathString); - return WasiErrno.ESUCCESS; - }, async function path_unlink_file(fd, path, path_len) { - path = Number(path); - path_len = Number(path_len); - if (path === 0) { - return WasiErrno.EINVAL; - } - const { HEAPU8 } = getMemory(this); - const wasi = _wasi.get(this); - const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); - let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); - pathString = resolve(fileDescriptor.realPath, pathString); - const fs = getFs(this); - await fs.promises.unlink(pathString); - return WasiErrno.ESUCCESS; - }, ['i32', 'i32', 'i32'], ['i32']); - this._setMemory = function setMemory(m) { - if (!(m instanceof _WebAssembly.Memory)) { - throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory'); - } - _memory.set(_this, extendMemory(m)); - }; - } - static createSync(args, env, preopens, stdio, fs, print, printErr) { - const fds = new SyncTable({ - size: 3, - in: stdio[0], - out: stdio[1], - err: stdio[2], - fs, - print, - printErr - }); - const _this = new WASI(args, env, fds, false, fs); - if (preopens.length > 0) { - for (let i = 0; i < preopens.length; ++i) { - const realPath = fs.realpathSync(preopens[i].realPath, 'utf8'); - const fd = fs.openSync(realPath, 'r', 0o666); - fds.insertPreopen(fd, preopens[i].mappedPath, realPath); - } - } - return _this; - } - static async createAsync(args, env, preopens, stdio, fs, print, printErr, asyncify) { - const fds = new AsyncTable({ - size: 3, - in: stdio[0], - out: stdio[1], - err: stdio[2], - print, - printErr - }); - const _this = new WASI(args, env, fds, true, fs, asyncify); - if (preopens.length > 0) { - for (let i = 0; i < preopens.length; ++i) { - const entry = preopens[i]; - const realPath = await fs.promises.realpath(entry.realPath); - const fd = await fs.promises.open(realPath, 'r', 0o666); - await fds.insertPreopen(fd, entry.mappedPath, realPath); - } - } - return _this; - } -} diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/rights.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/rights.mjs deleted file mode 100644 index b87351d..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/rights.mjs +++ /dev/null @@ -1,135 +0,0 @@ -import { WasiError } from "./error.mjs"; -import { WasiErrno, WasiRights, WasiFileType } from "./types.mjs"; -export const RIGHTS_ALL = WasiRights.FD_DATASYNC | - WasiRights.FD_READ | - WasiRights.FD_SEEK | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_SYNC | - WasiRights.FD_TELL | - WasiRights.FD_WRITE | - WasiRights.FD_ADVISE | - WasiRights.FD_ALLOCATE | - WasiRights.PATH_CREATE_DIRECTORY | - WasiRights.PATH_CREATE_FILE | - WasiRights.PATH_LINK_SOURCE | - WasiRights.PATH_LINK_TARGET | - WasiRights.PATH_OPEN | - WasiRights.FD_READDIR | - WasiRights.PATH_READLINK | - WasiRights.PATH_RENAME_SOURCE | - WasiRights.PATH_RENAME_TARGET | - WasiRights.PATH_FILESTAT_GET | - WasiRights.PATH_FILESTAT_SET_SIZE | - WasiRights.PATH_FILESTAT_SET_TIMES | - WasiRights.FD_FILESTAT_GET | - WasiRights.FD_FILESTAT_SET_TIMES | - WasiRights.FD_FILESTAT_SET_SIZE | - WasiRights.PATH_SYMLINK | - WasiRights.PATH_UNLINK_FILE | - WasiRights.PATH_REMOVE_DIRECTORY | - WasiRights.POLL_FD_READWRITE | - WasiRights.SOCK_SHUTDOWN | - WasiRights.SOCK_ACCEPT; -export const BLOCK_DEVICE_BASE = RIGHTS_ALL; -export const BLOCK_DEVICE_INHERITING = RIGHTS_ALL; -export const CHARACTER_DEVICE_BASE = RIGHTS_ALL; -export const CHARACTER_DEVICE_INHERITING = RIGHTS_ALL; -export const REGULAR_FILE_BASE = WasiRights.FD_DATASYNC | - WasiRights.FD_READ | - WasiRights.FD_SEEK | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_SYNC | - WasiRights.FD_TELL | - WasiRights.FD_WRITE | - WasiRights.FD_ADVISE | - WasiRights.FD_ALLOCATE | - WasiRights.FD_FILESTAT_GET | - WasiRights.FD_FILESTAT_SET_SIZE | - WasiRights.FD_FILESTAT_SET_TIMES | - WasiRights.POLL_FD_READWRITE; -export const REGULAR_FILE_INHERITING = /*#__PURE__*/ BigInt(0); -export const DIRECTORY_BASE = WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_SYNC | - WasiRights.FD_ADVISE | - WasiRights.PATH_CREATE_DIRECTORY | - WasiRights.PATH_CREATE_FILE | - WasiRights.PATH_LINK_SOURCE | - WasiRights.PATH_LINK_TARGET | - WasiRights.PATH_OPEN | - WasiRights.FD_READDIR | - WasiRights.PATH_READLINK | - WasiRights.PATH_RENAME_SOURCE | - WasiRights.PATH_RENAME_TARGET | - WasiRights.PATH_FILESTAT_GET | - WasiRights.PATH_FILESTAT_SET_SIZE | - WasiRights.PATH_FILESTAT_SET_TIMES | - WasiRights.FD_FILESTAT_GET | - WasiRights.FD_FILESTAT_SET_TIMES | - WasiRights.PATH_SYMLINK | - WasiRights.PATH_UNLINK_FILE | - WasiRights.PATH_REMOVE_DIRECTORY | - WasiRights.POLL_FD_READWRITE; -export const DIRECTORY_INHERITING = DIRECTORY_BASE | REGULAR_FILE_BASE; -export const SOCKET_BASE = (WasiRights.FD_READ | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_WRITE | - WasiRights.FD_FILESTAT_GET | - WasiRights.POLL_FD_READWRITE | - WasiRights.SOCK_SHUTDOWN); -export const SOCKET_INHERITING = RIGHTS_ALL; -export const TTY_BASE = WasiRights.FD_READ | - WasiRights.FD_FDSTAT_SET_FLAGS | - WasiRights.FD_WRITE | - WasiRights.FD_FILESTAT_GET | - WasiRights.POLL_FD_READWRITE; -export const TTY_INHERITING = /*#__PURE__*/ BigInt(0); -export function getRights(stdio, fd, flags, type) { - const ret = { - base: BigInt(0), - inheriting: BigInt(0) - }; - if (type === WasiFileType.UNKNOWN) { - throw new WasiError('Unknown file type', WasiErrno.EINVAL); - } - switch (type) { - case WasiFileType.REGULAR_FILE: - ret.base = REGULAR_FILE_BASE; - ret.inheriting = REGULAR_FILE_INHERITING; - break; - case WasiFileType.DIRECTORY: - ret.base = DIRECTORY_BASE; - ret.inheriting = DIRECTORY_INHERITING; - break; - case WasiFileType.SOCKET_STREAM: - case WasiFileType.SOCKET_DGRAM: - ret.base = SOCKET_BASE; - ret.inheriting = SOCKET_INHERITING; - break; - case WasiFileType.CHARACTER_DEVICE: - if (stdio.indexOf(fd) !== -1) { - ret.base = TTY_BASE; - ret.inheriting = TTY_INHERITING; - } - else { - ret.base = CHARACTER_DEVICE_BASE; - ret.inheriting = CHARACTER_DEVICE_INHERITING; - } - break; - case WasiFileType.BLOCK_DEVICE: - ret.base = BLOCK_DEVICE_BASE; - ret.inheriting = BLOCK_DEVICE_INHERITING; - break; - default: - ret.base = BigInt(0); - ret.inheriting = BigInt(0); - } - /* Disable read/write bits depending on access mode. */ - const read_or_write_only = flags & (0 | 1 | 2); - if (read_or_write_only === 0) { - ret.base &= ~WasiRights.FD_WRITE; - } - else if (read_or_write_only === 1) { - ret.base &= ~WasiRights.FD_READ; - } - return ret; -} diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/types.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/types.mjs deleted file mode 100644 index c18bdd6..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/types.mjs +++ /dev/null @@ -1,216 +0,0 @@ -/* eslint-disable spaced-comment */ -export var WasiErrno; -(function (WasiErrno) { - WasiErrno[WasiErrno["ESUCCESS"] = 0] = "ESUCCESS"; - WasiErrno[WasiErrno["E2BIG"] = 1] = "E2BIG"; - WasiErrno[WasiErrno["EACCES"] = 2] = "EACCES"; - WasiErrno[WasiErrno["EADDRINUSE"] = 3] = "EADDRINUSE"; - WasiErrno[WasiErrno["EADDRNOTAVAIL"] = 4] = "EADDRNOTAVAIL"; - WasiErrno[WasiErrno["EAFNOSUPPORT"] = 5] = "EAFNOSUPPORT"; - WasiErrno[WasiErrno["EAGAIN"] = 6] = "EAGAIN"; - WasiErrno[WasiErrno["EALREADY"] = 7] = "EALREADY"; - WasiErrno[WasiErrno["EBADF"] = 8] = "EBADF"; - WasiErrno[WasiErrno["EBADMSG"] = 9] = "EBADMSG"; - WasiErrno[WasiErrno["EBUSY"] = 10] = "EBUSY"; - WasiErrno[WasiErrno["ECANCELED"] = 11] = "ECANCELED"; - WasiErrno[WasiErrno["ECHILD"] = 12] = "ECHILD"; - WasiErrno[WasiErrno["ECONNABORTED"] = 13] = "ECONNABORTED"; - WasiErrno[WasiErrno["ECONNREFUSED"] = 14] = "ECONNREFUSED"; - WasiErrno[WasiErrno["ECONNRESET"] = 15] = "ECONNRESET"; - WasiErrno[WasiErrno["EDEADLK"] = 16] = "EDEADLK"; - WasiErrno[WasiErrno["EDESTADDRREQ"] = 17] = "EDESTADDRREQ"; - WasiErrno[WasiErrno["EDOM"] = 18] = "EDOM"; - WasiErrno[WasiErrno["EDQUOT"] = 19] = "EDQUOT"; - WasiErrno[WasiErrno["EEXIST"] = 20] = "EEXIST"; - WasiErrno[WasiErrno["EFAULT"] = 21] = "EFAULT"; - WasiErrno[WasiErrno["EFBIG"] = 22] = "EFBIG"; - WasiErrno[WasiErrno["EHOSTUNREACH"] = 23] = "EHOSTUNREACH"; - WasiErrno[WasiErrno["EIDRM"] = 24] = "EIDRM"; - WasiErrno[WasiErrno["EILSEQ"] = 25] = "EILSEQ"; - WasiErrno[WasiErrno["EINPROGRESS"] = 26] = "EINPROGRESS"; - WasiErrno[WasiErrno["EINTR"] = 27] = "EINTR"; - WasiErrno[WasiErrno["EINVAL"] = 28] = "EINVAL"; - WasiErrno[WasiErrno["EIO"] = 29] = "EIO"; - WasiErrno[WasiErrno["EISCONN"] = 30] = "EISCONN"; - WasiErrno[WasiErrno["EISDIR"] = 31] = "EISDIR"; - WasiErrno[WasiErrno["ELOOP"] = 32] = "ELOOP"; - WasiErrno[WasiErrno["EMFILE"] = 33] = "EMFILE"; - WasiErrno[WasiErrno["EMLINK"] = 34] = "EMLINK"; - WasiErrno[WasiErrno["EMSGSIZE"] = 35] = "EMSGSIZE"; - WasiErrno[WasiErrno["EMULTIHOP"] = 36] = "EMULTIHOP"; - WasiErrno[WasiErrno["ENAMETOOLONG"] = 37] = "ENAMETOOLONG"; - WasiErrno[WasiErrno["ENETDOWN"] = 38] = "ENETDOWN"; - WasiErrno[WasiErrno["ENETRESET"] = 39] = "ENETRESET"; - WasiErrno[WasiErrno["ENETUNREACH"] = 40] = "ENETUNREACH"; - WasiErrno[WasiErrno["ENFILE"] = 41] = "ENFILE"; - WasiErrno[WasiErrno["ENOBUFS"] = 42] = "ENOBUFS"; - WasiErrno[WasiErrno["ENODEV"] = 43] = "ENODEV"; - WasiErrno[WasiErrno["ENOENT"] = 44] = "ENOENT"; - WasiErrno[WasiErrno["ENOEXEC"] = 45] = "ENOEXEC"; - WasiErrno[WasiErrno["ENOLCK"] = 46] = "ENOLCK"; - WasiErrno[WasiErrno["ENOLINK"] = 47] = "ENOLINK"; - WasiErrno[WasiErrno["ENOMEM"] = 48] = "ENOMEM"; - WasiErrno[WasiErrno["ENOMSG"] = 49] = "ENOMSG"; - WasiErrno[WasiErrno["ENOPROTOOPT"] = 50] = "ENOPROTOOPT"; - WasiErrno[WasiErrno["ENOSPC"] = 51] = "ENOSPC"; - WasiErrno[WasiErrno["ENOSYS"] = 52] = "ENOSYS"; - WasiErrno[WasiErrno["ENOTCONN"] = 53] = "ENOTCONN"; - WasiErrno[WasiErrno["ENOTDIR"] = 54] = "ENOTDIR"; - WasiErrno[WasiErrno["ENOTEMPTY"] = 55] = "ENOTEMPTY"; - WasiErrno[WasiErrno["ENOTRECOVERABLE"] = 56] = "ENOTRECOVERABLE"; - WasiErrno[WasiErrno["ENOTSOCK"] = 57] = "ENOTSOCK"; - WasiErrno[WasiErrno["ENOTSUP"] = 58] = "ENOTSUP"; - WasiErrno[WasiErrno["ENOTTY"] = 59] = "ENOTTY"; - WasiErrno[WasiErrno["ENXIO"] = 60] = "ENXIO"; - WasiErrno[WasiErrno["EOVERFLOW"] = 61] = "EOVERFLOW"; - WasiErrno[WasiErrno["EOWNERDEAD"] = 62] = "EOWNERDEAD"; - WasiErrno[WasiErrno["EPERM"] = 63] = "EPERM"; - WasiErrno[WasiErrno["EPIPE"] = 64] = "EPIPE"; - WasiErrno[WasiErrno["EPROTO"] = 65] = "EPROTO"; - WasiErrno[WasiErrno["EPROTONOSUPPORT"] = 66] = "EPROTONOSUPPORT"; - WasiErrno[WasiErrno["EPROTOTYPE"] = 67] = "EPROTOTYPE"; - WasiErrno[WasiErrno["ERANGE"] = 68] = "ERANGE"; - WasiErrno[WasiErrno["EROFS"] = 69] = "EROFS"; - WasiErrno[WasiErrno["ESPIPE"] = 70] = "ESPIPE"; - WasiErrno[WasiErrno["ESRCH"] = 71] = "ESRCH"; - WasiErrno[WasiErrno["ESTALE"] = 72] = "ESTALE"; - WasiErrno[WasiErrno["ETIMEDOUT"] = 73] = "ETIMEDOUT"; - WasiErrno[WasiErrno["ETXTBSY"] = 74] = "ETXTBSY"; - WasiErrno[WasiErrno["EXDEV"] = 75] = "EXDEV"; - WasiErrno[WasiErrno["ENOTCAPABLE"] = 76] = "ENOTCAPABLE"; -})(WasiErrno || (WasiErrno = {})); -export var WasiFileType; -(function (WasiFileType) { - WasiFileType[WasiFileType["UNKNOWN"] = 0] = "UNKNOWN"; - WasiFileType[WasiFileType["BLOCK_DEVICE"] = 1] = "BLOCK_DEVICE"; - WasiFileType[WasiFileType["CHARACTER_DEVICE"] = 2] = "CHARACTER_DEVICE"; - WasiFileType[WasiFileType["DIRECTORY"] = 3] = "DIRECTORY"; - WasiFileType[WasiFileType["REGULAR_FILE"] = 4] = "REGULAR_FILE"; - WasiFileType[WasiFileType["SOCKET_DGRAM"] = 5] = "SOCKET_DGRAM"; - WasiFileType[WasiFileType["SOCKET_STREAM"] = 6] = "SOCKET_STREAM"; - WasiFileType[WasiFileType["SYMBOLIC_LINK"] = 7] = "SYMBOLIC_LINK"; -})(WasiFileType || (WasiFileType = {})); -const FD_DATASYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(0)); -const FD_READ = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(1)); -const FD_SEEK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(2)); -const FD_FDSTAT_SET_FLAGS = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(3)); -const FD_SYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(4)); -const FD_TELL = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(5)); -const FD_WRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(6)); -const FD_ADVISE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(7)); -const FD_ALLOCATE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(8)); -const PATH_CREATE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(9)); -const PATH_CREATE_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(10)); -const PATH_LINK_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(11)); -const PATH_LINK_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(12)); -const PATH_OPEN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(13)); -const FD_READDIR = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(14)); -const PATH_READLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(15)); -const PATH_RENAME_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(16)); -const PATH_RENAME_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(17)); -const PATH_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(18)); -const PATH_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(19)); -const PATH_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(20)); -const FD_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(21)); -const FD_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(22)); -const FD_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(23)); -const PATH_SYMLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(24)); -const PATH_REMOVE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(25)); -const PATH_UNLINK_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(26)); -const POLL_FD_READWRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(27)); -const SOCK_SHUTDOWN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(28)); -const SOCK_ACCEPT = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(29)); -export const WasiRights = { - FD_DATASYNC, - FD_READ, - FD_SEEK, - FD_FDSTAT_SET_FLAGS, - FD_SYNC, - FD_TELL, - FD_WRITE, - FD_ADVISE, - FD_ALLOCATE, - PATH_CREATE_DIRECTORY, - PATH_CREATE_FILE, - PATH_LINK_SOURCE, - PATH_LINK_TARGET, - PATH_OPEN, - FD_READDIR, - PATH_READLINK, - PATH_RENAME_SOURCE, - PATH_RENAME_TARGET, - PATH_FILESTAT_GET, - PATH_FILESTAT_SET_SIZE, - PATH_FILESTAT_SET_TIMES, - FD_FILESTAT_GET, - FD_FILESTAT_SET_SIZE, - FD_FILESTAT_SET_TIMES, - PATH_SYMLINK, - PATH_REMOVE_DIRECTORY, - PATH_UNLINK_FILE, - POLL_FD_READWRITE, - SOCK_SHUTDOWN, - SOCK_ACCEPT -}; -export var WasiWhence; -(function (WasiWhence) { - WasiWhence[WasiWhence["SET"] = 0] = "SET"; - WasiWhence[WasiWhence["CUR"] = 1] = "CUR"; - WasiWhence[WasiWhence["END"] = 2] = "END"; -})(WasiWhence || (WasiWhence = {})); -export var FileControlFlag; -(function (FileControlFlag) { - FileControlFlag[FileControlFlag["O_RDONLY"] = 0] = "O_RDONLY"; - FileControlFlag[FileControlFlag["O_WRONLY"] = 1] = "O_WRONLY"; - FileControlFlag[FileControlFlag["O_RDWR"] = 2] = "O_RDWR"; - FileControlFlag[FileControlFlag["O_CREAT"] = 64] = "O_CREAT"; - FileControlFlag[FileControlFlag["O_EXCL"] = 128] = "O_EXCL"; - FileControlFlag[FileControlFlag["O_NOCTTY"] = 256] = "O_NOCTTY"; - FileControlFlag[FileControlFlag["O_TRUNC"] = 512] = "O_TRUNC"; - FileControlFlag[FileControlFlag["O_APPEND"] = 1024] = "O_APPEND"; - FileControlFlag[FileControlFlag["O_DIRECTORY"] = 65536] = "O_DIRECTORY"; - FileControlFlag[FileControlFlag["O_NOATIME"] = 262144] = "O_NOATIME"; - FileControlFlag[FileControlFlag["O_NOFOLLOW"] = 131072] = "O_NOFOLLOW"; - FileControlFlag[FileControlFlag["O_SYNC"] = 1052672] = "O_SYNC"; - FileControlFlag[FileControlFlag["O_DIRECT"] = 16384] = "O_DIRECT"; - FileControlFlag[FileControlFlag["O_NONBLOCK"] = 2048] = "O_NONBLOCK"; -})(FileControlFlag || (FileControlFlag = {})); -export var WasiFileControlFlag; -(function (WasiFileControlFlag) { - WasiFileControlFlag[WasiFileControlFlag["O_CREAT"] = 1] = "O_CREAT"; - WasiFileControlFlag[WasiFileControlFlag["O_DIRECTORY"] = 2] = "O_DIRECTORY"; - WasiFileControlFlag[WasiFileControlFlag["O_EXCL"] = 4] = "O_EXCL"; - WasiFileControlFlag[WasiFileControlFlag["O_TRUNC"] = 8] = "O_TRUNC"; -})(WasiFileControlFlag || (WasiFileControlFlag = {})); -export var WasiFdFlag; -(function (WasiFdFlag) { - WasiFdFlag[WasiFdFlag["APPEND"] = 1] = "APPEND"; - WasiFdFlag[WasiFdFlag["DSYNC"] = 2] = "DSYNC"; - WasiFdFlag[WasiFdFlag["NONBLOCK"] = 4] = "NONBLOCK"; - WasiFdFlag[WasiFdFlag["RSYNC"] = 8] = "RSYNC"; - WasiFdFlag[WasiFdFlag["SYNC"] = 16] = "SYNC"; -})(WasiFdFlag || (WasiFdFlag = {})); -export var WasiClockid; -(function (WasiClockid) { - WasiClockid[WasiClockid["REALTIME"] = 0] = "REALTIME"; - WasiClockid[WasiClockid["MONOTONIC"] = 1] = "MONOTONIC"; - WasiClockid[WasiClockid["PROCESS_CPUTIME_ID"] = 2] = "PROCESS_CPUTIME_ID"; - WasiClockid[WasiClockid["THREAD_CPUTIME_ID"] = 3] = "THREAD_CPUTIME_ID"; -})(WasiClockid || (WasiClockid = {})); -export var WasiFstFlag; -(function (WasiFstFlag) { - WasiFstFlag[WasiFstFlag["SET_ATIM"] = 1] = "SET_ATIM"; - WasiFstFlag[WasiFstFlag["SET_ATIM_NOW"] = 2] = "SET_ATIM_NOW"; - WasiFstFlag[WasiFstFlag["SET_MTIM"] = 4] = "SET_MTIM"; - WasiFstFlag[WasiFstFlag["SET_MTIM_NOW"] = 8] = "SET_MTIM_NOW"; -})(WasiFstFlag || (WasiFstFlag = {})); -export var WasiEventType; -(function (WasiEventType) { - WasiEventType[WasiEventType["CLOCK"] = 0] = "CLOCK"; - WasiEventType[WasiEventType["FD_READ"] = 1] = "FD_READ"; - WasiEventType[WasiEventType["FD_WRITE"] = 2] = "FD_WRITE"; -})(WasiEventType || (WasiEventType = {})); -export var WasiSubclockflags; -(function (WasiSubclockflags) { - WasiSubclockflags[WasiSubclockflags["ABSTIME"] = 1] = "ABSTIME"; -})(WasiSubclockflags || (WasiSubclockflags = {})); diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/util.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/util.mjs deleted file mode 100644 index a8ba329..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/wasi/util.mjs +++ /dev/null @@ -1,113 +0,0 @@ -/* eslint-disable spaced-comment */ -export function validateObject(value, name) { - if (value === null || typeof value !== 'object') { - throw new TypeError(`${name} must be an object. Received ${value === null ? 'null' : typeof value}`); - } -} -export function validateArray(value, name) { - if (!Array.isArray(value)) { - throw new TypeError(`${name} must be an array. Received ${value === null ? 'null' : typeof value}`); - } -} -export function validateBoolean(value, name) { - if (typeof value !== 'boolean') { - throw new TypeError(`${name} must be a boolean. Received ${value === null ? 'null' : typeof value}`); - } -} -export function validateString(value, name) { - if (typeof value !== 'string') { - throw new TypeError(`${name} must be a string. Received ${value === null ? 'null' : typeof value}`); - } -} -export function validateFunction(value, name) { - if (typeof value !== 'function') { - throw new TypeError(`${name} must be a function. Received ${value === null ? 'null' : typeof value}`); - } -} -export function validateUndefined(value, name) { - if (value !== undefined) { - throw new TypeError(`${name} must be undefined. Received ${value === null ? 'null' : typeof value}`); - } -} -export function validateInt32(value, name, min = -2147483648, max = 2147483647) { - if (typeof value !== 'number') { - throw new TypeError(`${name} must be a number. Received ${value === null ? 'null' : typeof value}`); - } - if (!Number.isInteger(value)) { - throw new RangeError(`${name} must be a integer.`); - } - if (value < min || value > max) { - throw new RangeError(`${name} must be >= ${min} && <= ${max}. Received ${value}`); - } -} -export function isPromiseLike(obj) { - return !!(obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'); -} -export function wrapInstanceExports(exports, mapFn) { - const newExports = Object.create(null); - Object.keys(exports).forEach(name => { - const exportValue = exports[name]; - Object.defineProperty(newExports, name, { - enumerable: true, - value: mapFn(exportValue, name) - }); - }); - return newExports; -} -const _require = /*#__PURE__*/ (function () { - let nativeRequire; - if (typeof __webpack_public_path__ !== 'undefined') { - nativeRequire = (function () { - return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; - })(); - } - else { - nativeRequire = (function () { - return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); - })(); - } - return nativeRequire; -})(); -export const isMainThread = /*#__PURE__*/ (function () { - let worker_threads; - try { - worker_threads = _require('worker_threads'); - } - catch (_) { } - if (!worker_threads) { - return typeof importScripts === 'undefined'; - } - return worker_threads.isMainThread; -})(); -export const postMsg = isMainThread - ? () => { } - : /*#__PURE__*/ (function () { - let worker_threads; - try { - worker_threads = _require('worker_threads'); - } - catch (_) { } - if (!worker_threads) { - return postMessage; - } - return function postMessage(data) { - worker_threads.parentPort.postMessage({ data }); - }; - })(); -export function sleepBreakIf(delay, breakIf) { - const start = Date.now(); - const end = start + delay; - let ret = false; - while (Date.now() < end) { - if (breakIf()) { - ret = true; - break; - } - } - return ret; -} -export function unsharedSlice(view, start, end) { - return ((typeof SharedArrayBuffer === 'function' && view.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(view.buffer.constructor) === '[object SharedArrayBuffer]')) - ? view.slice(start, end) - : view.subarray(start, end); -} diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/webassembly.mjs b/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/webassembly.mjs deleted file mode 100644 index b4192f7..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/lib/mjs/webassembly.mjs +++ /dev/null @@ -1,9 +0,0 @@ -const _WebAssembly = typeof WebAssembly !== 'undefined' - ? WebAssembly - : typeof WXWebAssembly !== 'undefined' - ? WXWebAssembly - : undefined; -if (!_WebAssembly) { - throw new Error('WebAssembly is not supported in this environment'); -} -export { _WebAssembly }; diff --git a/sdks/nodejs/node_modules/@tybys/wasm-util/package.json b/sdks/nodejs/node_modules/@tybys/wasm-util/package.json deleted file mode 100644 index b3d9cac..0000000 --- a/sdks/nodejs/node_modules/@tybys/wasm-util/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "@tybys/wasm-util", - "version": "0.10.1", - "description": "WASI polyfill for browser and some wasm util", - "main": "./lib/cjs/index.js", - "module": "./dist/wasm-util.esm-bundler.js", - "types": "./dist/wasm-util.d.ts", - "exports": { - ".": { - "module": "./dist/wasm-util.esm-bundler.js", - "import": "./lib/mjs/index.mjs", - "require": "./lib/cjs/index.js", - "types": "./dist/wasm-util.d.ts" - } - }, - "scripts": { - "build": "tsgo build", - "watch": "tsgo watch", - "test": "jest", - "lint": "eslint ./src/**/*.{ts,js} --fix", - "prepare": "npm run build" - }, - "publishConfig": { - "access": "public" - }, - "keywords": [ - "wasm", - "webassembly", - "wasi", - "polyfill" - ], - "repository": { - "type": "git", - "url": "https://github.com/toyobayashi/wasm-util.git" - }, - "author": "toyobayashi", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - }, - "devDependencies": { - "@tybys/ts-transform-module-specifier": "^0.0.2", - "@tybys/ts-transform-pure-class": "^0.1.1", - "@tybys/tsgo": "^1.1.0", - "@types/node": "^14.14.31", - "@typescript-eslint/eslint-plugin": "^5.40.1", - "@typescript-eslint/parser": "^5.40.1", - "eslint": "^8.25.0", - "eslint-config-standard-with-typescript": "^23.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.3.0", - "eslint-plugin-promise": "^6.1.0", - "memfs-browser": "^3.4.13000", - "mocha": "^10.1.0", - "ts-node": "^10.9.1", - "typescript": "~4.8.3" - } -} diff --git a/sdks/nodejs/node_modules/argparse/CHANGELOG.md b/sdks/nodejs/node_modules/argparse/CHANGELOG.md deleted file mode 100644 index dc39ed6..0000000 --- a/sdks/nodejs/node_modules/argparse/CHANGELOG.md +++ /dev/null @@ -1,216 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - - -## [2.0.1] - 2020-08-29 -### Fixed -- Fix issue with `process.argv` when used with interpreters (`coffee`, `ts-node`, etc.), #150. - - -## [2.0.0] - 2020-08-14 -### Changed -- Full rewrite. Now port from python 3.9.0 & more precise following. - See [doc](./doc) for difference and migration info. -- node.js 10+ required -- Removed most of local docs in favour of original ones. - - -## [1.0.10] - 2018-02-15 -### Fixed -- Use .concat instead of + for arrays, #122. - - -## [1.0.9] - 2016-09-29 -### Changed -- Rerelease after 1.0.8 - deps cleanup. - - -## [1.0.8] - 2016-09-29 -### Changed -- Maintenance (deps bump, fix node 6.5+ tests, coverage report). - - -## [1.0.7] - 2016-03-17 -### Changed -- Teach `addArgument` to accept string arg names. #97, @tomxtobin. - - -## [1.0.6] - 2016-02-06 -### Changed -- Maintenance: moved to eslint & updated CS. - - -## [1.0.5] - 2016-02-05 -### Changed -- Removed lodash dependency to significantly reduce install size. - Thanks to @mourner. - - -## [1.0.4] - 2016-01-17 -### Changed -- Maintenance: lodash update to 4.0.0. - - -## [1.0.3] - 2015-10-27 -### Fixed -- Fix parse `=` in args: `--examplepath="C:\myfolder\env=x64"`. #84, @CatWithApple. - - -## [1.0.2] - 2015-03-22 -### Changed -- Relaxed lodash version dependency. - - -## [1.0.1] - 2015-02-20 -### Changed -- Changed dependencies to be compatible with ancient nodejs. - - -## [1.0.0] - 2015-02-19 -### Changed -- Maintenance release. -- Replaced `underscore` with `lodash`. -- Bumped version to 1.0.0 to better reflect semver meaning. -- HISTORY.md -> CHANGELOG.md - - -## [0.1.16] - 2013-12-01 -### Changed -- Maintenance release. Updated dependencies and docs. - - -## [0.1.15] - 2013-05-13 -### Fixed -- Fixed #55, @trebor89 - - -## [0.1.14] - 2013-05-12 -### Fixed -- Fixed #62, @maxtaco - - -## [0.1.13] - 2013-04-08 -### Changed -- Added `.npmignore` to reduce package size - - -## [0.1.12] - 2013-02-10 -### Fixed -- Fixed conflictHandler (#46), @hpaulj - - -## [0.1.11] - 2013-02-07 -### Added -- Added 70+ tests (ported from python), @hpaulj -- Added conflictHandler, @applepicke -- Added fromfilePrefixChar, @hpaulj - -### Fixed -- Multiple bugfixes, @hpaulj - - -## [0.1.10] - 2012-12-30 -### Added -- Added [mutual exclusion](http://docs.python.org/dev/library/argparse.html#mutual-exclusion) - support, thanks to @hpaulj - -### Fixed -- Fixed options check for `storeConst` & `appendConst` actions, thanks to @hpaulj - - -## [0.1.9] - 2012-12-27 -### Fixed -- Fixed option dest interferens with other options (issue #23), thanks to @hpaulj -- Fixed default value behavior with `*` positionals, thanks to @hpaulj -- Improve `getDefault()` behavior, thanks to @hpaulj -- Improve negative argument parsing, thanks to @hpaulj - - -## [0.1.8] - 2012-12-01 -### Fixed -- Fixed parser parents (issue #19), thanks to @hpaulj -- Fixed negative argument parse (issue #20), thanks to @hpaulj - - -## [0.1.7] - 2012-10-14 -### Fixed -- Fixed 'choices' argument parse (issue #16) -- Fixed stderr output (issue #15) - - -## [0.1.6] - 2012-09-09 -### Fixed -- Fixed check for conflict of options (thanks to @tomxtobin) - - -## [0.1.5] - 2012-09-03 -### Fixed -- Fix parser #setDefaults method (thanks to @tomxtobin) - - -## [0.1.4] - 2012-07-30 -### Fixed -- Fixed pseudo-argument support (thanks to @CGamesPlay) -- Fixed addHelp default (should be true), if not set (thanks to @benblank) - - -## [0.1.3] - 2012-06-27 -### Fixed -- Fixed formatter api name: Formatter -> HelpFormatter - - -## [0.1.2] - 2012-05-29 -### Fixed -- Removed excess whitespace in help -- Fixed error reporting, when parcer with subcommands - called with empty arguments - -### Added -- Added basic tests - - -## [0.1.1] - 2012-05-23 -### Fixed -- Fixed line wrapping in help formatter -- Added better error reporting on invalid arguments - - -## [0.1.0] - 2012-05-16 -### Added -- First release. - - -[2.0.1]: https://github.com/nodeca/argparse/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/nodeca/argparse/compare/1.0.10...2.0.0 -[1.0.10]: https://github.com/nodeca/argparse/compare/1.0.9...1.0.10 -[1.0.9]: https://github.com/nodeca/argparse/compare/1.0.8...1.0.9 -[1.0.8]: https://github.com/nodeca/argparse/compare/1.0.7...1.0.8 -[1.0.7]: https://github.com/nodeca/argparse/compare/1.0.6...1.0.7 -[1.0.6]: https://github.com/nodeca/argparse/compare/1.0.5...1.0.6 -[1.0.5]: https://github.com/nodeca/argparse/compare/1.0.4...1.0.5 -[1.0.4]: https://github.com/nodeca/argparse/compare/1.0.3...1.0.4 -[1.0.3]: https://github.com/nodeca/argparse/compare/1.0.2...1.0.3 -[1.0.2]: https://github.com/nodeca/argparse/compare/1.0.1...1.0.2 -[1.0.1]: https://github.com/nodeca/argparse/compare/1.0.0...1.0.1 -[1.0.0]: https://github.com/nodeca/argparse/compare/0.1.16...1.0.0 -[0.1.16]: https://github.com/nodeca/argparse/compare/0.1.15...0.1.16 -[0.1.15]: https://github.com/nodeca/argparse/compare/0.1.14...0.1.15 -[0.1.14]: https://github.com/nodeca/argparse/compare/0.1.13...0.1.14 -[0.1.13]: https://github.com/nodeca/argparse/compare/0.1.12...0.1.13 -[0.1.12]: https://github.com/nodeca/argparse/compare/0.1.11...0.1.12 -[0.1.11]: https://github.com/nodeca/argparse/compare/0.1.10...0.1.11 -[0.1.10]: https://github.com/nodeca/argparse/compare/0.1.9...0.1.10 -[0.1.9]: https://github.com/nodeca/argparse/compare/0.1.8...0.1.9 -[0.1.8]: https://github.com/nodeca/argparse/compare/0.1.7...0.1.8 -[0.1.7]: https://github.com/nodeca/argparse/compare/0.1.6...0.1.7 -[0.1.6]: https://github.com/nodeca/argparse/compare/0.1.5...0.1.6 -[0.1.5]: https://github.com/nodeca/argparse/compare/0.1.4...0.1.5 -[0.1.4]: https://github.com/nodeca/argparse/compare/0.1.3...0.1.4 -[0.1.3]: https://github.com/nodeca/argparse/compare/0.1.2...0.1.3 -[0.1.2]: https://github.com/nodeca/argparse/compare/0.1.1...0.1.2 -[0.1.1]: https://github.com/nodeca/argparse/compare/0.1.0...0.1.1 -[0.1.0]: https://github.com/nodeca/argparse/releases/tag/0.1.0 diff --git a/sdks/nodejs/node_modules/argparse/LICENSE b/sdks/nodejs/node_modules/argparse/LICENSE deleted file mode 100644 index 66a3ac8..0000000 --- a/sdks/nodejs/node_modules/argparse/LICENSE +++ /dev/null @@ -1,254 +0,0 @@ -A. HISTORY OF THE SOFTWARE -========================== - -Python was created in the early 1990s by Guido van Rossum at Stichting -Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands -as a successor of a language called ABC. Guido remains Python's -principal author, although it includes many contributions from others. - -In 1995, Guido continued his work on Python at the Corporation for -National Research Initiatives (CNRI, see http://www.cnri.reston.va.us) -in Reston, Virginia where he released several versions of the -software. - -In May 2000, Guido and the Python core development team moved to -BeOpen.com to form the BeOpen PythonLabs team. In October of the same -year, the PythonLabs team moved to Digital Creations, which became -Zope Corporation. In 2001, the Python Software Foundation (PSF, see -https://www.python.org/psf/) was formed, a non-profit organization -created specifically to own Python-related Intellectual Property. -Zope Corporation was a sponsoring member of the PSF. - -All Python releases are Open Source (see http://www.opensource.org for -the Open Source Definition). Historically, most, but not all, Python -releases have also been GPL-compatible; the table below summarizes -the various releases. - - Release Derived Year Owner GPL- - from compatible? (1) - - 0.9.0 thru 1.2 1991-1995 CWI yes - 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes - 1.6 1.5.2 2000 CNRI no - 2.0 1.6 2000 BeOpen.com no - 1.6.1 1.6 2001 CNRI yes (2) - 2.1 2.0+1.6.1 2001 PSF no - 2.0.1 2.0+1.6.1 2001 PSF yes - 2.1.1 2.1+2.0.1 2001 PSF yes - 2.1.2 2.1.1 2002 PSF yes - 2.1.3 2.1.2 2002 PSF yes - 2.2 and above 2.1.1 2001-now PSF yes - -Footnotes: - -(1) GPL-compatible doesn't mean that we're distributing Python under - the GPL. All Python licenses, unlike the GPL, let you distribute - a modified version without making your changes open source. The - GPL-compatible licenses make it possible to combine Python with - other software that is released under the GPL; the others don't. - -(2) According to Richard Stallman, 1.6.1 is not GPL-compatible, - because its license has a choice of law clause. According to - CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1 - is "not incompatible" with the GPL. - -Thanks to the many outside volunteers who have worked under Guido's -direction to make these releases possible. - - -B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON -=============================================================== - -PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 --------------------------------------------- - -1. This LICENSE AGREEMENT is between the Python Software Foundation -("PSF"), and the Individual or Organization ("Licensee") accessing and -otherwise using this software ("Python") in source or binary form and -its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, PSF hereby -grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, -analyze, test, perform and/or display publicly, prepare derivative works, -distribute, and otherwise use Python alone or in any derivative version, -provided, however, that PSF's License Agreement and PSF's notice of copyright, -i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Python Software Foundation; -All Rights Reserved" are retained in Python alone or in any derivative version -prepared by Licensee. - -3. In the event Licensee prepares a derivative work that is based on -or incorporates Python or any part thereof, and wants to make -the derivative work available to others as provided herein, then -Licensee hereby agrees to include in any such work a brief summary of -the changes made to Python. - -4. PSF is making Python available to Licensee on an "AS IS" -basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR -IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND -DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS -FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT -INFRINGE ANY THIRD PARTY RIGHTS. - -5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON -FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS -A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, -OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material -breach of its terms and conditions. - -7. Nothing in this License Agreement shall be deemed to create any -relationship of agency, partnership, or joint venture between PSF and -Licensee. This License Agreement does not grant permission to use PSF -trademarks or trade name in a trademark sense to endorse or promote -products or services of Licensee, or any third party. - -8. By copying, installing or otherwise using Python, Licensee -agrees to be bound by the terms and conditions of this License -Agreement. - - -BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 -------------------------------------------- - -BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 - -1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an -office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the -Individual or Organization ("Licensee") accessing and otherwise using -this software in source or binary form and its associated -documentation ("the Software"). - -2. Subject to the terms and conditions of this BeOpen Python License -Agreement, BeOpen hereby grants Licensee a non-exclusive, -royalty-free, world-wide license to reproduce, analyze, test, perform -and/or display publicly, prepare derivative works, distribute, and -otherwise use the Software alone or in any derivative version, -provided, however, that the BeOpen Python License is retained in the -Software, alone or in any derivative version prepared by Licensee. - -3. BeOpen is making the Software available to Licensee on an "AS IS" -basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR -IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND -DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS -FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT -INFRINGE ANY THIRD PARTY RIGHTS. - -4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE -SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS -AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY -DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -5. This License Agreement will automatically terminate upon a material -breach of its terms and conditions. - -6. This License Agreement shall be governed by and interpreted in all -respects by the law of the State of California, excluding conflict of -law provisions. Nothing in this License Agreement shall be deemed to -create any relationship of agency, partnership, or joint venture -between BeOpen and Licensee. This License Agreement does not grant -permission to use BeOpen trademarks or trade names in a trademark -sense to endorse or promote products or services of Licensee, or any -third party. As an exception, the "BeOpen Python" logos available at -http://www.pythonlabs.com/logos.html may be used according to the -permissions granted on that web page. - -7. By copying, installing or otherwise using the software, Licensee -agrees to be bound by the terms and conditions of this License -Agreement. - - -CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 ---------------------------------------- - -1. This LICENSE AGREEMENT is between the Corporation for National -Research Initiatives, having an office at 1895 Preston White Drive, -Reston, VA 20191 ("CNRI"), and the Individual or Organization -("Licensee") accessing and otherwise using Python 1.6.1 software in -source or binary form and its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, CNRI -hereby grants Licensee a nonexclusive, royalty-free, world-wide -license to reproduce, analyze, test, perform and/or display publicly, -prepare derivative works, distribute, and otherwise use Python 1.6.1 -alone or in any derivative version, provided, however, that CNRI's -License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) -1995-2001 Corporation for National Research Initiatives; All Rights -Reserved" are retained in Python 1.6.1 alone or in any derivative -version prepared by Licensee. Alternately, in lieu of CNRI's License -Agreement, Licensee may substitute the following text (omitting the -quotes): "Python 1.6.1 is made available subject to the terms and -conditions in CNRI's License Agreement. This Agreement together with -Python 1.6.1 may be located on the Internet using the following -unique, persistent identifier (known as a handle): 1895.22/1013. This -Agreement may also be obtained from a proxy server on the Internet -using the following URL: http://hdl.handle.net/1895.22/1013". - -3. In the event Licensee prepares a derivative work that is based on -or incorporates Python 1.6.1 or any part thereof, and wants to make -the derivative work available to others as provided herein, then -Licensee hereby agrees to include in any such work a brief summary of -the changes made to Python 1.6.1. - -4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" -basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR -IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND -DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS -FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT -INFRINGE ANY THIRD PARTY RIGHTS. - -5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON -1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS -A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, -OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material -breach of its terms and conditions. - -7. This License Agreement shall be governed by the federal -intellectual property law of the United States, including without -limitation the federal copyright law, and, to the extent such -U.S. federal law does not apply, by the law of the Commonwealth of -Virginia, excluding Virginia's conflict of law provisions. -Notwithstanding the foregoing, with regard to derivative works based -on Python 1.6.1 that incorporate non-separable material that was -previously distributed under the GNU General Public License (GPL), the -law of the Commonwealth of Virginia shall govern this License -Agreement only as to issues arising under or with respect to -Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this -License Agreement shall be deemed to create any relationship of -agency, partnership, or joint venture between CNRI and Licensee. This -License Agreement does not grant permission to use CNRI trademarks or -trade name in a trademark sense to endorse or promote products or -services of Licensee, or any third party. - -8. By clicking on the "ACCEPT" button where indicated, or by copying, -installing or otherwise using Python 1.6.1, Licensee agrees to be -bound by the terms and conditions of this License Agreement. - - ACCEPT - - -CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 --------------------------------------------------- - -Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, -The Netherlands. All rights reserved. - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Stichting Mathematisch -Centrum or CWI not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. - -STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO -THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE -FOR ANY SPECIAL, 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. diff --git a/sdks/nodejs/node_modules/argparse/README.md b/sdks/nodejs/node_modules/argparse/README.md deleted file mode 100644 index 550b5c9..0000000 --- a/sdks/nodejs/node_modules/argparse/README.md +++ /dev/null @@ -1,84 +0,0 @@ -argparse -======== - -[![Build Status](https://secure.travis-ci.org/nodeca/argparse.svg?branch=master)](http://travis-ci.org/nodeca/argparse) -[![NPM version](https://img.shields.io/npm/v/argparse.svg)](https://www.npmjs.org/package/argparse) - -CLI arguments parser for node.js, with [sub-commands](https://docs.python.org/3.9/library/argparse.html#sub-commands) support. Port of python's [argparse](http://docs.python.org/dev/library/argparse.html) (version [3.9.0](https://github.com/python/cpython/blob/v3.9.0rc1/Lib/argparse.py)). - -**Difference with original.** - -- JS has no keyword arguments support. - - Pass options instead: `new ArgumentParser({ description: 'example', add_help: true })`. -- JS has no python's types `int`, `float`, ... - - Use string-typed names: `.add_argument('-b', { type: 'int', help: 'help' })`. -- `%r` format specifier uses `require('util').inspect()`. - -More details in [doc](./doc). - - -Example -------- - -`test.js` file: - -```javascript -#!/usr/bin/env node -'use strict'; - -const { ArgumentParser } = require('argparse'); -const { version } = require('./package.json'); - -const parser = new ArgumentParser({ - description: 'Argparse example' -}); - -parser.add_argument('-v', '--version', { action: 'version', version }); -parser.add_argument('-f', '--foo', { help: 'foo bar' }); -parser.add_argument('-b', '--bar', { help: 'bar foo' }); -parser.add_argument('--baz', { help: 'baz bar' }); - -console.dir(parser.parse_args()); -``` - -Display help: - -``` -$ ./test.js -h -usage: test.js [-h] [-v] [-f FOO] [-b BAR] [--baz BAZ] - -Argparse example - -optional arguments: - -h, --help show this help message and exit - -v, --version show program's version number and exit - -f FOO, --foo FOO foo bar - -b BAR, --bar BAR bar foo - --baz BAZ baz bar -``` - -Parse arguments: - -``` -$ ./test.js -f=3 --bar=4 --baz 5 -{ foo: '3', bar: '4', baz: '5' } -``` - - -API docs --------- - -Since this is a port with minimal divergence, there's no separate documentation. -Use original one instead, with notes about difference. - -1. [Original doc](https://docs.python.org/3.9/library/argparse.html). -2. [Original tutorial](https://docs.python.org/3.9/howto/argparse.html). -3. [Difference with python](./doc). - - -argparse for enterprise ------------------------ - -Available as part of the Tidelift Subscription - -The maintainers of argparse and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-argparse?utm_source=npm-argparse&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/sdks/nodejs/node_modules/argparse/argparse.js b/sdks/nodejs/node_modules/argparse/argparse.js deleted file mode 100644 index 2b8c8c6..0000000 --- a/sdks/nodejs/node_modules/argparse/argparse.js +++ /dev/null @@ -1,3707 +0,0 @@ -// Port of python's argparse module, version 3.9.0: -// https://github.com/python/cpython/blob/v3.9.0rc1/Lib/argparse.py - -'use strict' - -// Copyright (C) 2010-2020 Python Software Foundation. -// Copyright (C) 2020 argparse.js authors - -/* - * Command-line parsing library - * - * This module is an optparse-inspired command-line parsing library that: - * - * - handles both optional and positional arguments - * - produces highly informative usage messages - * - supports parsers that dispatch to sub-parsers - * - * The following is a simple usage example that sums integers from the - * command-line and writes the result to a file:: - * - * parser = argparse.ArgumentParser( - * description='sum the integers at the command line') - * parser.add_argument( - * 'integers', metavar='int', nargs='+', type=int, - * help='an integer to be summed') - * parser.add_argument( - * '--log', default=sys.stdout, type=argparse.FileType('w'), - * help='the file where the sum should be written') - * args = parser.parse_args() - * args.log.write('%s' % sum(args.integers)) - * args.log.close() - * - * The module contains the following public classes: - * - * - ArgumentParser -- The main entry point for command-line parsing. As the - * example above shows, the add_argument() method is used to populate - * the parser with actions for optional and positional arguments. Then - * the parse_args() method is invoked to convert the args at the - * command-line into an object with attributes. - * - * - ArgumentError -- The exception raised by ArgumentParser objects when - * there are errors with the parser's actions. Errors raised while - * parsing the command-line are caught by ArgumentParser and emitted - * as command-line messages. - * - * - FileType -- A factory for defining types of files to be created. As the - * example above shows, instances of FileType are typically passed as - * the type= argument of add_argument() calls. - * - * - Action -- The base class for parser actions. Typically actions are - * selected by passing strings like 'store_true' or 'append_const' to - * the action= argument of add_argument(). However, for greater - * customization of ArgumentParser actions, subclasses of Action may - * be defined and passed as the action= argument. - * - * - HelpFormatter, RawDescriptionHelpFormatter, RawTextHelpFormatter, - * ArgumentDefaultsHelpFormatter -- Formatter classes which - * may be passed as the formatter_class= argument to the - * ArgumentParser constructor. HelpFormatter is the default, - * RawDescriptionHelpFormatter and RawTextHelpFormatter tell the parser - * not to change the formatting for help text, and - * ArgumentDefaultsHelpFormatter adds information about argument defaults - * to the help. - * - * All other classes in this module are considered implementation details. - * (Also note that HelpFormatter and RawDescriptionHelpFormatter are only - * considered public as object names -- the API of the formatter objects is - * still considered an implementation detail.) - */ - -const SUPPRESS = '==SUPPRESS==' - -const OPTIONAL = '?' -const ZERO_OR_MORE = '*' -const ONE_OR_MORE = '+' -const PARSER = 'A...' -const REMAINDER = '...' -const _UNRECOGNIZED_ARGS_ATTR = '_unrecognized_args' - - -// ================================== -// Utility functions used for porting -// ================================== -const assert = require('assert') -const util = require('util') -const fs = require('fs') -const sub = require('./lib/sub') -const path = require('path') -const repr = util.inspect - -function get_argv() { - // omit first argument (which is assumed to be interpreter - `node`, `coffee`, `ts-node`, etc.) - return process.argv.slice(1) -} - -function get_terminal_size() { - return { - columns: +process.env.COLUMNS || process.stdout.columns || 80 - } -} - -function hasattr(object, name) { - return Object.prototype.hasOwnProperty.call(object, name) -} - -function getattr(object, name, value) { - return hasattr(object, name) ? object[name] : value -} - -function setattr(object, name, value) { - object[name] = value -} - -function setdefault(object, name, value) { - if (!hasattr(object, name)) object[name] = value - return object[name] -} - -function delattr(object, name) { - delete object[name] -} - -function range(from, to, step=1) { - // range(10) is equivalent to range(0, 10) - if (arguments.length === 1) [ to, from ] = [ from, 0 ] - if (typeof from !== 'number' || typeof to !== 'number' || typeof step !== 'number') { - throw new TypeError('argument cannot be interpreted as an integer') - } - if (step === 0) throw new TypeError('range() arg 3 must not be zero') - - let result = [] - if (step > 0) { - for (let i = from; i < to; i += step) result.push(i) - } else { - for (let i = from; i > to; i += step) result.push(i) - } - return result -} - -function splitlines(str, keepends = false) { - let result - if (!keepends) { - result = str.split(/\r\n|[\n\r\v\f\x1c\x1d\x1e\x85\u2028\u2029]/) - } else { - result = [] - let parts = str.split(/(\r\n|[\n\r\v\f\x1c\x1d\x1e\x85\u2028\u2029])/) - for (let i = 0; i < parts.length; i += 2) { - result.push(parts[i] + (i + 1 < parts.length ? parts[i + 1] : '')) - } - } - if (!result[result.length - 1]) result.pop() - return result -} - -function _string_lstrip(string, prefix_chars) { - let idx = 0 - while (idx < string.length && prefix_chars.includes(string[idx])) idx++ - return idx ? string.slice(idx) : string -} - -function _string_split(string, sep, maxsplit) { - let result = string.split(sep) - if (result.length > maxsplit) { - result = result.slice(0, maxsplit).concat([ result.slice(maxsplit).join(sep) ]) - } - return result -} - -function _array_equal(array1, array2) { - if (array1.length !== array2.length) return false - for (let i = 0; i < array1.length; i++) { - if (array1[i] !== array2[i]) return false - } - return true -} - -function _array_remove(array, item) { - let idx = array.indexOf(item) - if (idx === -1) throw new TypeError(sub('%r not in list', item)) - array.splice(idx, 1) -} - -// normalize choices to array; -// this isn't required in python because `in` and `map` operators work with anything, -// but in js dealing with multiple types here is too clunky -function _choices_to_array(choices) { - if (choices === undefined) { - return [] - } else if (Array.isArray(choices)) { - return choices - } else if (choices !== null && typeof choices[Symbol.iterator] === 'function') { - return Array.from(choices) - } else if (typeof choices === 'object' && choices !== null) { - return Object.keys(choices) - } else { - throw new Error(sub('invalid choices value: %r', choices)) - } -} - -// decorator that allows a class to be called without new -function _callable(cls) { - let result = { // object is needed for inferred class name - [cls.name]: function (...args) { - let this_class = new.target === result || !new.target - return Reflect.construct(cls, args, this_class ? cls : new.target) - } - } - result[cls.name].prototype = cls.prototype - // fix default tag for toString, e.g. [object Action] instead of [object Object] - cls.prototype[Symbol.toStringTag] = cls.name - return result[cls.name] -} - -function _alias(object, from, to) { - try { - let name = object.constructor.name - Object.defineProperty(object, from, { - value: util.deprecate(object[to], sub('%s.%s() is renamed to %s.%s()', - name, from, name, to)), - enumerable: false - }) - } catch {} -} - -// decorator that allows snake_case class methods to be called with camelCase and vice versa -function _camelcase_alias(_class) { - for (let name of Object.getOwnPropertyNames(_class.prototype)) { - let camelcase = name.replace(/\w_[a-z]/g, s => s[0] + s[2].toUpperCase()) - if (camelcase !== name) _alias(_class.prototype, camelcase, name) - } - return _class -} - -function _to_legacy_name(key) { - key = key.replace(/\w_[a-z]/g, s => s[0] + s[2].toUpperCase()) - if (key === 'default') key = 'defaultValue' - if (key === 'const') key = 'constant' - return key -} - -function _to_new_name(key) { - if (key === 'defaultValue') key = 'default' - if (key === 'constant') key = 'const' - key = key.replace(/[A-Z]/g, c => '_' + c.toLowerCase()) - return key -} - -// parse options -let no_default = Symbol('no_default_value') -function _parse_opts(args, descriptor) { - function get_name() { - let stack = new Error().stack.split('\n') - .map(x => x.match(/^ at (.*) \(.*\)$/)) - .filter(Boolean) - .map(m => m[1]) - .map(fn => fn.match(/[^ .]*$/)[0]) - - if (stack.length && stack[0] === get_name.name) stack.shift() - if (stack.length && stack[0] === _parse_opts.name) stack.shift() - return stack.length ? stack[0] : '' - } - - args = Array.from(args) - let kwargs = {} - let result = [] - let last_opt = args.length && args[args.length - 1] - - if (typeof last_opt === 'object' && last_opt !== null && !Array.isArray(last_opt) && - (!last_opt.constructor || last_opt.constructor.name === 'Object')) { - kwargs = Object.assign({}, args.pop()) - } - - // LEGACY (v1 compatibility): camelcase - let renames = [] - for (let key of Object.keys(descriptor)) { - let old_name = _to_legacy_name(key) - if (old_name !== key && (old_name in kwargs)) { - if (key in kwargs) { - // default and defaultValue specified at the same time, happens often in old tests - //throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), key)) - } else { - kwargs[key] = kwargs[old_name] - } - renames.push([ old_name, key ]) - delete kwargs[old_name] - } - } - if (renames.length) { - let name = get_name() - deprecate('camelcase_' + name, sub('%s(): following options are renamed: %s', - name, renames.map(([ a, b ]) => sub('%r -> %r', a, b)))) - } - // end - - let missing_positionals = [] - let positional_count = args.length - - for (let [ key, def ] of Object.entries(descriptor)) { - if (key[0] === '*') { - if (key.length > 0 && key[1] === '*') { - // LEGACY (v1 compatibility): camelcase - let renames = [] - for (let key of Object.keys(kwargs)) { - let new_name = _to_new_name(key) - if (new_name !== key && (key in kwargs)) { - if (new_name in kwargs) { - // default and defaultValue specified at the same time, happens often in old tests - //throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), new_name)) - } else { - kwargs[new_name] = kwargs[key] - } - renames.push([ key, new_name ]) - delete kwargs[key] - } - } - if (renames.length) { - let name = get_name() - deprecate('camelcase_' + name, sub('%s(): following options are renamed: %s', - name, renames.map(([ a, b ]) => sub('%r -> %r', a, b)))) - } - // end - result.push(kwargs) - kwargs = {} - } else { - result.push(args) - args = [] - } - } else if (key in kwargs && args.length > 0) { - throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), key)) - } else if (key in kwargs) { - result.push(kwargs[key]) - delete kwargs[key] - } else if (args.length > 0) { - result.push(args.shift()) - } else if (def !== no_default) { - result.push(def) - } else { - missing_positionals.push(key) - } - } - - if (Object.keys(kwargs).length) { - throw new TypeError(sub('%s() got an unexpected keyword argument %r', - get_name(), Object.keys(kwargs)[0])) - } - - if (args.length) { - let from = Object.entries(descriptor).filter(([ k, v ]) => k[0] !== '*' && v !== no_default).length - let to = Object.entries(descriptor).filter(([ k ]) => k[0] !== '*').length - throw new TypeError(sub('%s() takes %s positional argument%s but %s %s given', - get_name(), - from === to ? sub('from %s to %s', from, to) : to, - from === to && to === 1 ? '' : 's', - positional_count, - positional_count === 1 ? 'was' : 'were')) - } - - if (missing_positionals.length) { - let strs = missing_positionals.map(repr) - if (strs.length > 1) strs[strs.length - 1] = 'and ' + strs[strs.length - 1] - let str_joined = strs.join(strs.length === 2 ? '' : ', ') - throw new TypeError(sub('%s() missing %i required positional argument%s: %s', - get_name(), strs.length, strs.length === 1 ? '' : 's', str_joined)) - } - - return result -} - -let _deprecations = {} -function deprecate(id, string) { - _deprecations[id] = _deprecations[id] || util.deprecate(() => {}, string) - _deprecations[id]() -} - - -// ============================= -// Utility functions and classes -// ============================= -function _AttributeHolder(cls = Object) { - /* - * Abstract base class that provides __repr__. - * - * The __repr__ method returns a string in the format:: - * ClassName(attr=name, attr=name, ...) - * The attributes are determined either by a class-level attribute, - * '_kwarg_names', or by inspecting the instance __dict__. - */ - - return class _AttributeHolder extends cls { - [util.inspect.custom]() { - let type_name = this.constructor.name - let arg_strings = [] - let star_args = {} - for (let arg of this._get_args()) { - arg_strings.push(repr(arg)) - } - for (let [ name, value ] of this._get_kwargs()) { - if (/^[a-z_][a-z0-9_$]*$/i.test(name)) { - arg_strings.push(sub('%s=%r', name, value)) - } else { - star_args[name] = value - } - } - if (Object.keys(star_args).length) { - arg_strings.push(sub('**%s', repr(star_args))) - } - return sub('%s(%s)', type_name, arg_strings.join(', ')) - } - - toString() { - return this[util.inspect.custom]() - } - - _get_kwargs() { - return Object.entries(this) - } - - _get_args() { - return [] - } - } -} - - -function _copy_items(items) { - if (items === undefined) { - return [] - } - return items.slice(0) -} - - -// =============== -// Formatting Help -// =============== -const HelpFormatter = _camelcase_alias(_callable(class HelpFormatter { - /* - * Formatter for generating usage messages and argument help strings. - * - * Only the name of this class is considered a public API. All the methods - * provided by the class are considered an implementation detail. - */ - - constructor() { - let [ - prog, - indent_increment, - max_help_position, - width - ] = _parse_opts(arguments, { - prog: no_default, - indent_increment: 2, - max_help_position: 24, - width: undefined - }) - - // default setting for width - if (width === undefined) { - width = get_terminal_size().columns - width -= 2 - } - - this._prog = prog - this._indent_increment = indent_increment - this._max_help_position = Math.min(max_help_position, - Math.max(width - 20, indent_increment * 2)) - this._width = width - - this._current_indent = 0 - this._level = 0 - this._action_max_length = 0 - - this._root_section = this._Section(this, undefined) - this._current_section = this._root_section - - this._whitespace_matcher = /[ \t\n\r\f\v]+/g // equivalent to python /\s+/ with ASCII flag - this._long_break_matcher = /\n\n\n+/g - } - - // =============================== - // Section and indentation methods - // =============================== - _indent() { - this._current_indent += this._indent_increment - this._level += 1 - } - - _dedent() { - this._current_indent -= this._indent_increment - assert(this._current_indent >= 0, 'Indent decreased below 0.') - this._level -= 1 - } - - _add_item(func, args) { - this._current_section.items.push([ func, args ]) - } - - // ======================== - // Message building methods - // ======================== - start_section(heading) { - this._indent() - let section = this._Section(this, this._current_section, heading) - this._add_item(section.format_help.bind(section), []) - this._current_section = section - } - - end_section() { - this._current_section = this._current_section.parent - this._dedent() - } - - add_text(text) { - if (text !== SUPPRESS && text !== undefined) { - this._add_item(this._format_text.bind(this), [text]) - } - } - - add_usage(usage, actions, groups, prefix = undefined) { - if (usage !== SUPPRESS) { - let args = [ usage, actions, groups, prefix ] - this._add_item(this._format_usage.bind(this), args) - } - } - - add_argument(action) { - if (action.help !== SUPPRESS) { - - // find all invocations - let invocations = [this._format_action_invocation(action)] - for (let subaction of this._iter_indented_subactions(action)) { - invocations.push(this._format_action_invocation(subaction)) - } - - // update the maximum item length - let invocation_length = Math.max(...invocations.map(invocation => invocation.length)) - let action_length = invocation_length + this._current_indent - this._action_max_length = Math.max(this._action_max_length, - action_length) - - // add the item to the list - this._add_item(this._format_action.bind(this), [action]) - } - } - - add_arguments(actions) { - for (let action of actions) { - this.add_argument(action) - } - } - - // ======================= - // Help-formatting methods - // ======================= - format_help() { - let help = this._root_section.format_help() - if (help) { - help = help.replace(this._long_break_matcher, '\n\n') - help = help.replace(/^\n+|\n+$/g, '') + '\n' - } - return help - } - - _join_parts(part_strings) { - return part_strings.filter(part => part && part !== SUPPRESS).join('') - } - - _format_usage(usage, actions, groups, prefix) { - if (prefix === undefined) { - prefix = 'usage: ' - } - - // if usage is specified, use that - if (usage !== undefined) { - usage = sub(usage, { prog: this._prog }) - - // if no optionals or positionals are available, usage is just prog - } else if (usage === undefined && !actions.length) { - usage = sub('%(prog)s', { prog: this._prog }) - - // if optionals and positionals are available, calculate usage - } else if (usage === undefined) { - let prog = sub('%(prog)s', { prog: this._prog }) - - // split optionals from positionals - let optionals = [] - let positionals = [] - for (let action of actions) { - if (action.option_strings.length) { - optionals.push(action) - } else { - positionals.push(action) - } - } - - // build full usage string - let action_usage = this._format_actions_usage([].concat(optionals).concat(positionals), groups) - usage = [ prog, action_usage ].map(String).join(' ') - - // wrap the usage parts if it's too long - let text_width = this._width - this._current_indent - if (prefix.length + usage.length > text_width) { - - // break usage into wrappable parts - let part_regexp = /\(.*?\)+(?=\s|$)|\[.*?\]+(?=\s|$)|\S+/g - let opt_usage = this._format_actions_usage(optionals, groups) - let pos_usage = this._format_actions_usage(positionals, groups) - let opt_parts = opt_usage.match(part_regexp) || [] - let pos_parts = pos_usage.match(part_regexp) || [] - assert(opt_parts.join(' ') === opt_usage) - assert(pos_parts.join(' ') === pos_usage) - - // helper for wrapping lines - let get_lines = (parts, indent, prefix = undefined) => { - let lines = [] - let line = [] - let line_len - if (prefix !== undefined) { - line_len = prefix.length - 1 - } else { - line_len = indent.length - 1 - } - for (let part of parts) { - if (line_len + 1 + part.length > text_width && line) { - lines.push(indent + line.join(' ')) - line = [] - line_len = indent.length - 1 - } - line.push(part) - line_len += part.length + 1 - } - if (line.length) { - lines.push(indent + line.join(' ')) - } - if (prefix !== undefined) { - lines[0] = lines[0].slice(indent.length) - } - return lines - } - - let lines - - // if prog is short, follow it with optionals or positionals - if (prefix.length + prog.length <= 0.75 * text_width) { - let indent = ' '.repeat(prefix.length + prog.length + 1) - if (opt_parts.length) { - lines = get_lines([prog].concat(opt_parts), indent, prefix) - lines = lines.concat(get_lines(pos_parts, indent)) - } else if (pos_parts.length) { - lines = get_lines([prog].concat(pos_parts), indent, prefix) - } else { - lines = [prog] - } - - // if prog is long, put it on its own line - } else { - let indent = ' '.repeat(prefix.length) - let parts = [].concat(opt_parts).concat(pos_parts) - lines = get_lines(parts, indent) - if (lines.length > 1) { - lines = [] - lines = lines.concat(get_lines(opt_parts, indent)) - lines = lines.concat(get_lines(pos_parts, indent)) - } - lines = [prog].concat(lines) - } - - // join lines into usage - usage = lines.join('\n') - } - } - - // prefix with 'usage:' - return sub('%s%s\n\n', prefix, usage) - } - - _format_actions_usage(actions, groups) { - // find group indices and identify actions in groups - let group_actions = new Set() - let inserts = {} - for (let group of groups) { - let start = actions.indexOf(group._group_actions[0]) - if (start === -1) { - continue - } else { - let end = start + group._group_actions.length - if (_array_equal(actions.slice(start, end), group._group_actions)) { - for (let action of group._group_actions) { - group_actions.add(action) - } - if (!group.required) { - if (start in inserts) { - inserts[start] += ' [' - } else { - inserts[start] = '[' - } - if (end in inserts) { - inserts[end] += ']' - } else { - inserts[end] = ']' - } - } else { - if (start in inserts) { - inserts[start] += ' (' - } else { - inserts[start] = '(' - } - if (end in inserts) { - inserts[end] += ')' - } else { - inserts[end] = ')' - } - } - for (let i of range(start + 1, end)) { - inserts[i] = '|' - } - } - } - } - - // collect all actions format strings - let parts = [] - for (let [ i, action ] of Object.entries(actions)) { - - // suppressed arguments are marked with None - // remove | separators for suppressed arguments - if (action.help === SUPPRESS) { - parts.push(undefined) - if (inserts[+i] === '|') { - delete inserts[+i] - } else if (inserts[+i + 1] === '|') { - delete inserts[+i + 1] - } - - // produce all arg strings - } else if (!action.option_strings.length) { - let default_value = this._get_default_metavar_for_positional(action) - let part = this._format_args(action, default_value) - - // if it's in a group, strip the outer [] - if (group_actions.has(action)) { - if (part[0] === '[' && part[part.length - 1] === ']') { - part = part.slice(1, -1) - } - } - - // add the action string to the list - parts.push(part) - - // produce the first way to invoke the option in brackets - } else { - let option_string = action.option_strings[0] - let part - - // if the Optional doesn't take a value, format is: - // -s or --long - if (action.nargs === 0) { - part = action.format_usage() - - // if the Optional takes a value, format is: - // -s ARGS or --long ARGS - } else { - let default_value = this._get_default_metavar_for_optional(action) - let args_string = this._format_args(action, default_value) - part = sub('%s %s', option_string, args_string) - } - - // make it look optional if it's not required or in a group - if (!action.required && !group_actions.has(action)) { - part = sub('[%s]', part) - } - - // add the action string to the list - parts.push(part) - } - } - - // insert things at the necessary indices - for (let i of Object.keys(inserts).map(Number).sort((a, b) => b - a)) { - parts.splice(+i, 0, inserts[+i]) - } - - // join all the action items with spaces - let text = parts.filter(Boolean).join(' ') - - // clean up separators for mutually exclusive groups - text = text.replace(/([\[(]) /g, '$1') - text = text.replace(/ ([\])])/g, '$1') - text = text.replace(/[\[(] *[\])]/g, '') - text = text.replace(/\(([^|]*)\)/g, '$1', text) - text = text.trim() - - // return the text - return text - } - - _format_text(text) { - if (text.includes('%(prog)')) { - text = sub(text, { prog: this._prog }) - } - let text_width = Math.max(this._width - this._current_indent, 11) - let indent = ' '.repeat(this._current_indent) - return this._fill_text(text, text_width, indent) + '\n\n' - } - - _format_action(action) { - // determine the required width and the entry label - let help_position = Math.min(this._action_max_length + 2, - this._max_help_position) - let help_width = Math.max(this._width - help_position, 11) - let action_width = help_position - this._current_indent - 2 - let action_header = this._format_action_invocation(action) - let indent_first - - // no help; start on same line and add a final newline - if (!action.help) { - let tup = [ this._current_indent, '', action_header ] - action_header = sub('%*s%s\n', ...tup) - - // short action name; start on the same line and pad two spaces - } else if (action_header.length <= action_width) { - let tup = [ this._current_indent, '', action_width, action_header ] - action_header = sub('%*s%-*s ', ...tup) - indent_first = 0 - - // long action name; start on the next line - } else { - let tup = [ this._current_indent, '', action_header ] - action_header = sub('%*s%s\n', ...tup) - indent_first = help_position - } - - // collect the pieces of the action help - let parts = [action_header] - - // if there was help for the action, add lines of help text - if (action.help) { - let help_text = this._expand_help(action) - let help_lines = this._split_lines(help_text, help_width) - parts.push(sub('%*s%s\n', indent_first, '', help_lines[0])) - for (let line of help_lines.slice(1)) { - parts.push(sub('%*s%s\n', help_position, '', line)) - } - - // or add a newline if the description doesn't end with one - } else if (!action_header.endsWith('\n')) { - parts.push('\n') - } - - // if there are any sub-actions, add their help as well - for (let subaction of this._iter_indented_subactions(action)) { - parts.push(this._format_action(subaction)) - } - - // return a single string - return this._join_parts(parts) - } - - _format_action_invocation(action) { - if (!action.option_strings.length) { - let default_value = this._get_default_metavar_for_positional(action) - let metavar = this._metavar_formatter(action, default_value)(1)[0] - return metavar - - } else { - let parts = [] - - // if the Optional doesn't take a value, format is: - // -s, --long - if (action.nargs === 0) { - parts = parts.concat(action.option_strings) - - // if the Optional takes a value, format is: - // -s ARGS, --long ARGS - } else { - let default_value = this._get_default_metavar_for_optional(action) - let args_string = this._format_args(action, default_value) - for (let option_string of action.option_strings) { - parts.push(sub('%s %s', option_string, args_string)) - } - } - - return parts.join(', ') - } - } - - _metavar_formatter(action, default_metavar) { - let result - if (action.metavar !== undefined) { - result = action.metavar - } else if (action.choices !== undefined) { - let choice_strs = _choices_to_array(action.choices).map(String) - result = sub('{%s}', choice_strs.join(',')) - } else { - result = default_metavar - } - - function format(tuple_size) { - if (Array.isArray(result)) { - return result - } else { - return Array(tuple_size).fill(result) - } - } - return format - } - - _format_args(action, default_metavar) { - let get_metavar = this._metavar_formatter(action, default_metavar) - let result - if (action.nargs === undefined) { - result = sub('%s', ...get_metavar(1)) - } else if (action.nargs === OPTIONAL) { - result = sub('[%s]', ...get_metavar(1)) - } else if (action.nargs === ZERO_OR_MORE) { - let metavar = get_metavar(1) - if (metavar.length === 2) { - result = sub('[%s [%s ...]]', ...metavar) - } else { - result = sub('[%s ...]', ...metavar) - } - } else if (action.nargs === ONE_OR_MORE) { - result = sub('%s [%s ...]', ...get_metavar(2)) - } else if (action.nargs === REMAINDER) { - result = '...' - } else if (action.nargs === PARSER) { - result = sub('%s ...', ...get_metavar(1)) - } else if (action.nargs === SUPPRESS) { - result = '' - } else { - let formats - try { - formats = range(action.nargs).map(() => '%s') - } catch (err) { - throw new TypeError('invalid nargs value') - } - result = sub(formats.join(' '), ...get_metavar(action.nargs)) - } - return result - } - - _expand_help(action) { - let params = Object.assign({ prog: this._prog }, action) - for (let name of Object.keys(params)) { - if (params[name] === SUPPRESS) { - delete params[name] - } - } - for (let name of Object.keys(params)) { - if (params[name] && params[name].name) { - params[name] = params[name].name - } - } - if (params.choices !== undefined) { - let choices_str = _choices_to_array(params.choices).map(String).join(', ') - params.choices = choices_str - } - // LEGACY (v1 compatibility): camelcase - for (let key of Object.keys(params)) { - let old_name = _to_legacy_name(key) - if (old_name !== key) { - params[old_name] = params[key] - } - } - // end - return sub(this._get_help_string(action), params) - } - - * _iter_indented_subactions(action) { - if (typeof action._get_subactions === 'function') { - this._indent() - yield* action._get_subactions() - this._dedent() - } - } - - _split_lines(text, width) { - text = text.replace(this._whitespace_matcher, ' ').trim() - // The textwrap module is used only for formatting help. - // Delay its import for speeding up the common usage of argparse. - let textwrap = require('./lib/textwrap') - return textwrap.wrap(text, { width }) - } - - _fill_text(text, width, indent) { - text = text.replace(this._whitespace_matcher, ' ').trim() - let textwrap = require('./lib/textwrap') - return textwrap.fill(text, { width, - initial_indent: indent, - subsequent_indent: indent }) - } - - _get_help_string(action) { - return action.help - } - - _get_default_metavar_for_optional(action) { - return action.dest.toUpperCase() - } - - _get_default_metavar_for_positional(action) { - return action.dest - } -})) - -HelpFormatter.prototype._Section = _callable(class _Section { - - constructor(formatter, parent, heading = undefined) { - this.formatter = formatter - this.parent = parent - this.heading = heading - this.items = [] - } - - format_help() { - // format the indented section - if (this.parent !== undefined) { - this.formatter._indent() - } - let item_help = this.formatter._join_parts(this.items.map(([ func, args ]) => func.apply(null, args))) - if (this.parent !== undefined) { - this.formatter._dedent() - } - - // return nothing if the section was empty - if (!item_help) { - return '' - } - - // add the heading if the section was non-empty - let heading - if (this.heading !== SUPPRESS && this.heading !== undefined) { - let current_indent = this.formatter._current_indent - heading = sub('%*s%s:\n', current_indent, '', this.heading) - } else { - heading = '' - } - - // join the section-initial newline, the heading and the help - return this.formatter._join_parts(['\n', heading, item_help, '\n']) - } -}) - - -const RawDescriptionHelpFormatter = _camelcase_alias(_callable(class RawDescriptionHelpFormatter extends HelpFormatter { - /* - * Help message formatter which retains any formatting in descriptions. - * - * Only the name of this class is considered a public API. All the methods - * provided by the class are considered an implementation detail. - */ - - _fill_text(text, width, indent) { - return splitlines(text, true).map(line => indent + line).join('') - } -})) - - -const RawTextHelpFormatter = _camelcase_alias(_callable(class RawTextHelpFormatter extends RawDescriptionHelpFormatter { - /* - * Help message formatter which retains formatting of all help text. - * - * Only the name of this class is considered a public API. All the methods - * provided by the class are considered an implementation detail. - */ - - _split_lines(text/*, width*/) { - return splitlines(text) - } -})) - - -const ArgumentDefaultsHelpFormatter = _camelcase_alias(_callable(class ArgumentDefaultsHelpFormatter extends HelpFormatter { - /* - * Help message formatter which adds default values to argument help. - * - * Only the name of this class is considered a public API. All the methods - * provided by the class are considered an implementation detail. - */ - - _get_help_string(action) { - let help = action.help - // LEGACY (v1 compatibility): additional check for defaultValue needed - if (!action.help.includes('%(default)') && !action.help.includes('%(defaultValue)')) { - if (action.default !== SUPPRESS) { - let defaulting_nargs = [OPTIONAL, ZERO_OR_MORE] - if (action.option_strings.length || defaulting_nargs.includes(action.nargs)) { - help += ' (default: %(default)s)' - } - } - } - return help - } -})) - - -const MetavarTypeHelpFormatter = _camelcase_alias(_callable(class MetavarTypeHelpFormatter extends HelpFormatter { - /* - * Help message formatter which uses the argument 'type' as the default - * metavar value (instead of the argument 'dest') - * - * Only the name of this class is considered a public API. All the methods - * provided by the class are considered an implementation detail. - */ - - _get_default_metavar_for_optional(action) { - return typeof action.type === 'function' ? action.type.name : action.type - } - - _get_default_metavar_for_positional(action) { - return typeof action.type === 'function' ? action.type.name : action.type - } -})) - - -// ===================== -// Options and Arguments -// ===================== -function _get_action_name(argument) { - if (argument === undefined) { - return undefined - } else if (argument.option_strings.length) { - return argument.option_strings.join('/') - } else if (![ undefined, SUPPRESS ].includes(argument.metavar)) { - return argument.metavar - } else if (![ undefined, SUPPRESS ].includes(argument.dest)) { - return argument.dest - } else { - return undefined - } -} - - -const ArgumentError = _callable(class ArgumentError extends Error { - /* - * An error from creating or using an argument (optional or positional). - * - * The string value of this exception is the message, augmented with - * information about the argument that caused it. - */ - - constructor(argument, message) { - super() - this.name = 'ArgumentError' - this._argument_name = _get_action_name(argument) - this._message = message - this.message = this.str() - } - - str() { - let format - if (this._argument_name === undefined) { - format = '%(message)s' - } else { - format = 'argument %(argument_name)s: %(message)s' - } - return sub(format, { message: this._message, - argument_name: this._argument_name }) - } -}) - - -const ArgumentTypeError = _callable(class ArgumentTypeError extends Error { - /* - * An error from trying to convert a command line string to a type. - */ - - constructor(message) { - super(message) - this.name = 'ArgumentTypeError' - } -}) - - -// ============== -// Action classes -// ============== -const Action = _camelcase_alias(_callable(class Action extends _AttributeHolder(Function) { - /* - * Information about how to convert command line strings to Python objects. - * - * Action objects are used by an ArgumentParser to represent the information - * needed to parse a single argument from one or more strings from the - * command line. The keyword arguments to the Action constructor are also - * all attributes of Action instances. - * - * Keyword Arguments: - * - * - option_strings -- A list of command-line option strings which - * should be associated with this action. - * - * - dest -- The name of the attribute to hold the created object(s) - * - * - nargs -- The number of command-line arguments that should be - * consumed. By default, one argument will be consumed and a single - * value will be produced. Other values include: - * - N (an integer) consumes N arguments (and produces a list) - * - '?' consumes zero or one arguments - * - '*' consumes zero or more arguments (and produces a list) - * - '+' consumes one or more arguments (and produces a list) - * Note that the difference between the default and nargs=1 is that - * with the default, a single value will be produced, while with - * nargs=1, a list containing a single value will be produced. - * - * - const -- The value to be produced if the option is specified and the - * option uses an action that takes no values. - * - * - default -- The value to be produced if the option is not specified. - * - * - type -- A callable that accepts a single string argument, and - * returns the converted value. The standard Python types str, int, - * float, and complex are useful examples of such callables. If None, - * str is used. - * - * - choices -- A container of values that should be allowed. If not None, - * after a command-line argument has been converted to the appropriate - * type, an exception will be raised if it is not a member of this - * collection. - * - * - required -- True if the action must always be specified at the - * command line. This is only meaningful for optional command-line - * arguments. - * - * - help -- The help string describing the argument. - * - * - metavar -- The name to be used for the option's argument with the - * help string. If None, the 'dest' value will be used as the name. - */ - - constructor() { - let [ - option_strings, - dest, - nargs, - const_value, - default_value, - type, - choices, - required, - help, - metavar - ] = _parse_opts(arguments, { - option_strings: no_default, - dest: no_default, - nargs: undefined, - const: undefined, - default: undefined, - type: undefined, - choices: undefined, - required: false, - help: undefined, - metavar: undefined - }) - - // when this class is called as a function, redirect it to .call() method of itself - super('return arguments.callee.call.apply(arguments.callee, arguments)') - - this.option_strings = option_strings - this.dest = dest - this.nargs = nargs - this.const = const_value - this.default = default_value - this.type = type - this.choices = choices - this.required = required - this.help = help - this.metavar = metavar - } - - _get_kwargs() { - let names = [ - 'option_strings', - 'dest', - 'nargs', - 'const', - 'default', - 'type', - 'choices', - 'help', - 'metavar' - ] - return names.map(name => [ name, getattr(this, name) ]) - } - - format_usage() { - return this.option_strings[0] - } - - call(/*parser, namespace, values, option_string = undefined*/) { - throw new Error('.call() not defined') - } -})) - - -const BooleanOptionalAction = _camelcase_alias(_callable(class BooleanOptionalAction extends Action { - - constructor() { - let [ - option_strings, - dest, - default_value, - type, - choices, - required, - help, - metavar - ] = _parse_opts(arguments, { - option_strings: no_default, - dest: no_default, - default: undefined, - type: undefined, - choices: undefined, - required: false, - help: undefined, - metavar: undefined - }) - - let _option_strings = [] - for (let option_string of option_strings) { - _option_strings.push(option_string) - - if (option_string.startsWith('--')) { - option_string = '--no-' + option_string.slice(2) - _option_strings.push(option_string) - } - } - - if (help !== undefined && default_value !== undefined) { - help += ` (default: ${default_value})` - } - - super({ - option_strings: _option_strings, - dest, - nargs: 0, - default: default_value, - type, - choices, - required, - help, - metavar - }) - } - - call(parser, namespace, values, option_string = undefined) { - if (this.option_strings.includes(option_string)) { - setattr(namespace, this.dest, !option_string.startsWith('--no-')) - } - } - - format_usage() { - return this.option_strings.join(' | ') - } -})) - - -const _StoreAction = _callable(class _StoreAction extends Action { - - constructor() { - let [ - option_strings, - dest, - nargs, - const_value, - default_value, - type, - choices, - required, - help, - metavar - ] = _parse_opts(arguments, { - option_strings: no_default, - dest: no_default, - nargs: undefined, - const: undefined, - default: undefined, - type: undefined, - choices: undefined, - required: false, - help: undefined, - metavar: undefined - }) - - if (nargs === 0) { - throw new TypeError('nargs for store actions must be != 0; if you ' + - 'have nothing to store, actions such as store ' + - 'true or store const may be more appropriate') - } - if (const_value !== undefined && nargs !== OPTIONAL) { - throw new TypeError(sub('nargs must be %r to supply const', OPTIONAL)) - } - super({ - option_strings, - dest, - nargs, - const: const_value, - default: default_value, - type, - choices, - required, - help, - metavar - }) - } - - call(parser, namespace, values/*, option_string = undefined*/) { - setattr(namespace, this.dest, values) - } -}) - - -const _StoreConstAction = _callable(class _StoreConstAction extends Action { - - constructor() { - let [ - option_strings, - dest, - const_value, - default_value, - required, - help - //, metavar - ] = _parse_opts(arguments, { - option_strings: no_default, - dest: no_default, - const: no_default, - default: undefined, - required: false, - help: undefined, - metavar: undefined - }) - - super({ - option_strings, - dest, - nargs: 0, - const: const_value, - default: default_value, - required, - help - }) - } - - call(parser, namespace/*, values, option_string = undefined*/) { - setattr(namespace, this.dest, this.const) - } -}) - - -const _StoreTrueAction = _callable(class _StoreTrueAction extends _StoreConstAction { - - constructor() { - let [ - option_strings, - dest, - default_value, - required, - help - ] = _parse_opts(arguments, { - option_strings: no_default, - dest: no_default, - default: false, - required: false, - help: undefined - }) - - super({ - option_strings, - dest, - const: true, - default: default_value, - required, - help - }) - } -}) - - -const _StoreFalseAction = _callable(class _StoreFalseAction extends _StoreConstAction { - - constructor() { - let [ - option_strings, - dest, - default_value, - required, - help - ] = _parse_opts(arguments, { - option_strings: no_default, - dest: no_default, - default: true, - required: false, - help: undefined - }) - - super({ - option_strings, - dest, - const: false, - default: default_value, - required, - help - }) - } -}) - - -const _AppendAction = _callable(class _AppendAction extends Action { - - constructor() { - let [ - option_strings, - dest, - nargs, - const_value, - default_value, - type, - choices, - required, - help, - metavar - ] = _parse_opts(arguments, { - option_strings: no_default, - dest: no_default, - nargs: undefined, - const: undefined, - default: undefined, - type: undefined, - choices: undefined, - required: false, - help: undefined, - metavar: undefined - }) - - if (nargs === 0) { - throw new TypeError('nargs for append actions must be != 0; if arg ' + - 'strings are not supplying the value to append, ' + - 'the append const action may be more appropriate') - } - if (const_value !== undefined && nargs !== OPTIONAL) { - throw new TypeError(sub('nargs must be %r to supply const', OPTIONAL)) - } - super({ - option_strings, - dest, - nargs, - const: const_value, - default: default_value, - type, - choices, - required, - help, - metavar - }) - } - - call(parser, namespace, values/*, option_string = undefined*/) { - let items = getattr(namespace, this.dest, undefined) - items = _copy_items(items) - items.push(values) - setattr(namespace, this.dest, items) - } -}) - - -const _AppendConstAction = _callable(class _AppendConstAction extends Action { - - constructor() { - let [ - option_strings, - dest, - const_value, - default_value, - required, - help, - metavar - ] = _parse_opts(arguments, { - option_strings: no_default, - dest: no_default, - const: no_default, - default: undefined, - required: false, - help: undefined, - metavar: undefined - }) - - super({ - option_strings, - dest, - nargs: 0, - const: const_value, - default: default_value, - required, - help, - metavar - }) - } - - call(parser, namespace/*, values, option_string = undefined*/) { - let items = getattr(namespace, this.dest, undefined) - items = _copy_items(items) - items.push(this.const) - setattr(namespace, this.dest, items) - } -}) - - -const _CountAction = _callable(class _CountAction extends Action { - - constructor() { - let [ - option_strings, - dest, - default_value, - required, - help - ] = _parse_opts(arguments, { - option_strings: no_default, - dest: no_default, - default: undefined, - required: false, - help: undefined - }) - - super({ - option_strings, - dest, - nargs: 0, - default: default_value, - required, - help - }) - } - - call(parser, namespace/*, values, option_string = undefined*/) { - let count = getattr(namespace, this.dest, undefined) - if (count === undefined) { - count = 0 - } - setattr(namespace, this.dest, count + 1) - } -}) - - -const _HelpAction = _callable(class _HelpAction extends Action { - - constructor() { - let [ - option_strings, - dest, - default_value, - help - ] = _parse_opts(arguments, { - option_strings: no_default, - dest: SUPPRESS, - default: SUPPRESS, - help: undefined - }) - - super({ - option_strings, - dest, - default: default_value, - nargs: 0, - help - }) - } - - call(parser/*, namespace, values, option_string = undefined*/) { - parser.print_help() - parser.exit() - } -}) - - -const _VersionAction = _callable(class _VersionAction extends Action { - - constructor() { - let [ - option_strings, - version, - dest, - default_value, - help - ] = _parse_opts(arguments, { - option_strings: no_default, - version: undefined, - dest: SUPPRESS, - default: SUPPRESS, - help: "show program's version number and exit" - }) - - super({ - option_strings, - dest, - default: default_value, - nargs: 0, - help - }) - this.version = version - } - - call(parser/*, namespace, values, option_string = undefined*/) { - let version = this.version - if (version === undefined) { - version = parser.version - } - let formatter = parser._get_formatter() - formatter.add_text(version) - parser._print_message(formatter.format_help(), process.stdout) - parser.exit() - } -}) - - -const _SubParsersAction = _camelcase_alias(_callable(class _SubParsersAction extends Action { - - constructor() { - let [ - option_strings, - prog, - parser_class, - dest, - required, - help, - metavar - ] = _parse_opts(arguments, { - option_strings: no_default, - prog: no_default, - parser_class: no_default, - dest: SUPPRESS, - required: false, - help: undefined, - metavar: undefined - }) - - let name_parser_map = {} - - super({ - option_strings, - dest, - nargs: PARSER, - choices: name_parser_map, - required, - help, - metavar - }) - - this._prog_prefix = prog - this._parser_class = parser_class - this._name_parser_map = name_parser_map - this._choices_actions = [] - } - - add_parser() { - let [ - name, - kwargs - ] = _parse_opts(arguments, { - name: no_default, - '**kwargs': no_default - }) - - // set prog from the existing prefix - if (kwargs.prog === undefined) { - kwargs.prog = sub('%s %s', this._prog_prefix, name) - } - - let aliases = getattr(kwargs, 'aliases', []) - delete kwargs.aliases - - // create a pseudo-action to hold the choice help - if ('help' in kwargs) { - let help = kwargs.help - delete kwargs.help - let choice_action = this._ChoicesPseudoAction(name, aliases, help) - this._choices_actions.push(choice_action) - } - - // create the parser and add it to the map - let parser = new this._parser_class(kwargs) - this._name_parser_map[name] = parser - - // make parser available under aliases also - for (let alias of aliases) { - this._name_parser_map[alias] = parser - } - - return parser - } - - _get_subactions() { - return this._choices_actions - } - - call(parser, namespace, values/*, option_string = undefined*/) { - let parser_name = values[0] - let arg_strings = values.slice(1) - - // set the parser name if requested - if (this.dest !== SUPPRESS) { - setattr(namespace, this.dest, parser_name) - } - - // select the parser - if (hasattr(this._name_parser_map, parser_name)) { - parser = this._name_parser_map[parser_name] - } else { - let args = {parser_name, - choices: this._name_parser_map.join(', ')} - let msg = sub('unknown parser %(parser_name)r (choices: %(choices)s)', args) - throw new ArgumentError(this, msg) - } - - // parse all the remaining options into the namespace - // store any unrecognized options on the object, so that the top - // level parser can decide what to do with them - - // In case this subparser defines new defaults, we parse them - // in a new namespace object and then update the original - // namespace for the relevant parts. - let subnamespace - [ subnamespace, arg_strings ] = parser.parse_known_args(arg_strings, undefined) - for (let [ key, value ] of Object.entries(subnamespace)) { - setattr(namespace, key, value) - } - - if (arg_strings.length) { - setdefault(namespace, _UNRECOGNIZED_ARGS_ATTR, []) - getattr(namespace, _UNRECOGNIZED_ARGS_ATTR).push(...arg_strings) - } - } -})) - - -_SubParsersAction.prototype._ChoicesPseudoAction = _callable(class _ChoicesPseudoAction extends Action { - constructor(name, aliases, help) { - let metavar = name, dest = name - if (aliases.length) { - metavar += sub(' (%s)', aliases.join(', ')) - } - super({ option_strings: [], dest, help, metavar }) - } -}) - - -const _ExtendAction = _callable(class _ExtendAction extends _AppendAction { - call(parser, namespace, values/*, option_string = undefined*/) { - let items = getattr(namespace, this.dest, undefined) - items = _copy_items(items) - items = items.concat(values) - setattr(namespace, this.dest, items) - } -}) - - -// ============== -// Type classes -// ============== -const FileType = _callable(class FileType extends Function { - /* - * Factory for creating file object types - * - * Instances of FileType are typically passed as type= arguments to the - * ArgumentParser add_argument() method. - * - * Keyword Arguments: - * - mode -- A string indicating how the file is to be opened. Accepts the - * same values as the builtin open() function. - * - bufsize -- The file's desired buffer size. Accepts the same values as - * the builtin open() function. - * - encoding -- The file's encoding. Accepts the same values as the - * builtin open() function. - * - errors -- A string indicating how encoding and decoding errors are to - * be handled. Accepts the same value as the builtin open() function. - */ - - constructor() { - let [ - flags, - encoding, - mode, - autoClose, - emitClose, - start, - end, - highWaterMark, - fs - ] = _parse_opts(arguments, { - flags: 'r', - encoding: undefined, - mode: undefined, // 0o666 - autoClose: undefined, // true - emitClose: undefined, // false - start: undefined, // 0 - end: undefined, // Infinity - highWaterMark: undefined, // 64 * 1024 - fs: undefined - }) - - // when this class is called as a function, redirect it to .call() method of itself - super('return arguments.callee.call.apply(arguments.callee, arguments)') - - Object.defineProperty(this, 'name', { - get() { - return sub('FileType(%r)', flags) - } - }) - this._flags = flags - this._options = {} - if (encoding !== undefined) this._options.encoding = encoding - if (mode !== undefined) this._options.mode = mode - if (autoClose !== undefined) this._options.autoClose = autoClose - if (emitClose !== undefined) this._options.emitClose = emitClose - if (start !== undefined) this._options.start = start - if (end !== undefined) this._options.end = end - if (highWaterMark !== undefined) this._options.highWaterMark = highWaterMark - if (fs !== undefined) this._options.fs = fs - } - - call(string) { - // the special argument "-" means sys.std{in,out} - if (string === '-') { - if (this._flags.includes('r')) { - return process.stdin - } else if (this._flags.includes('w')) { - return process.stdout - } else { - let msg = sub('argument "-" with mode %r', this._flags) - throw new TypeError(msg) - } - } - - // all other arguments are used as file names - let fd - try { - fd = fs.openSync(string, this._flags, this._options.mode) - } catch (e) { - let args = { filename: string, error: e.message } - let message = "can't open '%(filename)s': %(error)s" - throw new ArgumentTypeError(sub(message, args)) - } - - let options = Object.assign({ fd, flags: this._flags }, this._options) - if (this._flags.includes('r')) { - return fs.createReadStream(undefined, options) - } else if (this._flags.includes('w')) { - return fs.createWriteStream(undefined, options) - } else { - let msg = sub('argument "%s" with mode %r', string, this._flags) - throw new TypeError(msg) - } - } - - [util.inspect.custom]() { - let args = [ this._flags ] - let kwargs = Object.entries(this._options).map(([ k, v ]) => { - if (k === 'mode') v = { value: v, [util.inspect.custom]() { return '0o' + this.value.toString(8) } } - return [ k, v ] - }) - let args_str = [] - .concat(args.filter(arg => arg !== -1).map(repr)) - .concat(kwargs.filter(([/*kw*/, arg]) => arg !== undefined) - .map(([kw, arg]) => sub('%s=%r', kw, arg))) - .join(', ') - return sub('%s(%s)', this.constructor.name, args_str) - } - - toString() { - return this[util.inspect.custom]() - } -}) - -// =========================== -// Optional and Positional Parsing -// =========================== -const Namespace = _callable(class Namespace extends _AttributeHolder() { - /* - * Simple object for storing attributes. - * - * Implements equality by attribute names and values, and provides a simple - * string representation. - */ - - constructor(options = {}) { - super() - Object.assign(this, options) - } -}) - -// unset string tag to mimic plain object -Namespace.prototype[Symbol.toStringTag] = undefined - - -const _ActionsContainer = _camelcase_alias(_callable(class _ActionsContainer { - - constructor() { - let [ - description, - prefix_chars, - argument_default, - conflict_handler - ] = _parse_opts(arguments, { - description: no_default, - prefix_chars: no_default, - argument_default: no_default, - conflict_handler: no_default - }) - - this.description = description - this.argument_default = argument_default - this.prefix_chars = prefix_chars - this.conflict_handler = conflict_handler - - // set up registries - this._registries = {} - - // register actions - this.register('action', undefined, _StoreAction) - this.register('action', 'store', _StoreAction) - this.register('action', 'store_const', _StoreConstAction) - this.register('action', 'store_true', _StoreTrueAction) - this.register('action', 'store_false', _StoreFalseAction) - this.register('action', 'append', _AppendAction) - this.register('action', 'append_const', _AppendConstAction) - this.register('action', 'count', _CountAction) - this.register('action', 'help', _HelpAction) - this.register('action', 'version', _VersionAction) - this.register('action', 'parsers', _SubParsersAction) - this.register('action', 'extend', _ExtendAction) - // LEGACY (v1 compatibility): camelcase variants - ;[ 'storeConst', 'storeTrue', 'storeFalse', 'appendConst' ].forEach(old_name => { - let new_name = _to_new_name(old_name) - this.register('action', old_name, util.deprecate(this._registry_get('action', new_name), - sub('{action: "%s"} is renamed to {action: "%s"}', old_name, new_name))) - }) - // end - - // raise an exception if the conflict handler is invalid - this._get_handler() - - // action storage - this._actions = [] - this._option_string_actions = {} - - // groups - this._action_groups = [] - this._mutually_exclusive_groups = [] - - // defaults storage - this._defaults = {} - - // determines whether an "option" looks like a negative number - this._negative_number_matcher = /^-\d+$|^-\d*\.\d+$/ - - // whether or not there are any optionals that look like negative - // numbers -- uses a list so it can be shared and edited - this._has_negative_number_optionals = [] - } - - // ==================== - // Registration methods - // ==================== - register(registry_name, value, object) { - let registry = setdefault(this._registries, registry_name, {}) - registry[value] = object - } - - _registry_get(registry_name, value, default_value = undefined) { - return getattr(this._registries[registry_name], value, default_value) - } - - // ================================== - // Namespace default accessor methods - // ================================== - set_defaults(kwargs) { - Object.assign(this._defaults, kwargs) - - // if these defaults match any existing arguments, replace - // the previous default on the object with the new one - for (let action of this._actions) { - if (action.dest in kwargs) { - action.default = kwargs[action.dest] - } - } - } - - get_default(dest) { - for (let action of this._actions) { - if (action.dest === dest && action.default !== undefined) { - return action.default - } - } - return this._defaults[dest] - } - - - // ======================= - // Adding argument actions - // ======================= - add_argument() { - /* - * add_argument(dest, ..., name=value, ...) - * add_argument(option_string, option_string, ..., name=value, ...) - */ - let [ - args, - kwargs - ] = _parse_opts(arguments, { - '*args': no_default, - '**kwargs': no_default - }) - // LEGACY (v1 compatibility), old-style add_argument([ args ], { options }) - if (args.length === 1 && Array.isArray(args[0])) { - args = args[0] - deprecate('argument-array', - sub('use add_argument(%(args)s, {...}) instead of add_argument([ %(args)s ], { ... })', { - args: args.map(repr).join(', ') - })) - } - // end - - // if no positional args are supplied or only one is supplied and - // it doesn't look like an option string, parse a positional - // argument - let chars = this.prefix_chars - if (!args.length || args.length === 1 && !chars.includes(args[0][0])) { - if (args.length && 'dest' in kwargs) { - throw new TypeError('dest supplied twice for positional argument') - } - kwargs = this._get_positional_kwargs(...args, kwargs) - - // otherwise, we're adding an optional argument - } else { - kwargs = this._get_optional_kwargs(...args, kwargs) - } - - // if no default was supplied, use the parser-level default - if (!('default' in kwargs)) { - let dest = kwargs.dest - if (dest in this._defaults) { - kwargs.default = this._defaults[dest] - } else if (this.argument_default !== undefined) { - kwargs.default = this.argument_default - } - } - - // create the action object, and add it to the parser - let action_class = this._pop_action_class(kwargs) - if (typeof action_class !== 'function') { - throw new TypeError(sub('unknown action "%s"', action_class)) - } - // eslint-disable-next-line new-cap - let action = new action_class(kwargs) - - // raise an error if the action type is not callable - let type_func = this._registry_get('type', action.type, action.type) - if (typeof type_func !== 'function') { - throw new TypeError(sub('%r is not callable', type_func)) - } - - if (type_func === FileType) { - throw new TypeError(sub('%r is a FileType class object, instance of it' + - ' must be passed', type_func)) - } - - // raise an error if the metavar does not match the type - if ('_get_formatter' in this) { - try { - this._get_formatter()._format_args(action, undefined) - } catch (err) { - // check for 'invalid nargs value' is an artifact of TypeError and ValueError in js being the same - if (err instanceof TypeError && err.message !== 'invalid nargs value') { - throw new TypeError('length of metavar tuple does not match nargs') - } else { - throw err - } - } - } - - return this._add_action(action) - } - - add_argument_group() { - let group = _ArgumentGroup(this, ...arguments) - this._action_groups.push(group) - return group - } - - add_mutually_exclusive_group() { - // eslint-disable-next-line no-use-before-define - let group = _MutuallyExclusiveGroup(this, ...arguments) - this._mutually_exclusive_groups.push(group) - return group - } - - _add_action(action) { - // resolve any conflicts - this._check_conflict(action) - - // add to actions list - this._actions.push(action) - action.container = this - - // index the action by any option strings it has - for (let option_string of action.option_strings) { - this._option_string_actions[option_string] = action - } - - // set the flag if any option strings look like negative numbers - for (let option_string of action.option_strings) { - if (this._negative_number_matcher.test(option_string)) { - if (!this._has_negative_number_optionals.length) { - this._has_negative_number_optionals.push(true) - } - } - } - - // return the created action - return action - } - - _remove_action(action) { - _array_remove(this._actions, action) - } - - _add_container_actions(container) { - // collect groups by titles - let title_group_map = {} - for (let group of this._action_groups) { - if (group.title in title_group_map) { - let msg = 'cannot merge actions - two groups are named %r' - throw new TypeError(sub(msg, group.title)) - } - title_group_map[group.title] = group - } - - // map each action to its group - let group_map = new Map() - for (let group of container._action_groups) { - - // if a group with the title exists, use that, otherwise - // create a new group matching the container's group - if (!(group.title in title_group_map)) { - title_group_map[group.title] = this.add_argument_group({ - title: group.title, - description: group.description, - conflict_handler: group.conflict_handler - }) - } - - // map the actions to their new group - for (let action of group._group_actions) { - group_map.set(action, title_group_map[group.title]) - } - } - - // add container's mutually exclusive groups - // NOTE: if add_mutually_exclusive_group ever gains title= and - // description= then this code will need to be expanded as above - for (let group of container._mutually_exclusive_groups) { - let mutex_group = this.add_mutually_exclusive_group({ - required: group.required - }) - - // map the actions to their new mutex group - for (let action of group._group_actions) { - group_map.set(action, mutex_group) - } - } - - // add all actions to this container or their group - for (let action of container._actions) { - group_map.get(action)._add_action(action) - } - } - - _get_positional_kwargs() { - let [ - dest, - kwargs - ] = _parse_opts(arguments, { - dest: no_default, - '**kwargs': no_default - }) - - // make sure required is not specified - if ('required' in kwargs) { - let msg = "'required' is an invalid argument for positionals" - throw new TypeError(msg) - } - - // mark positional arguments as required if at least one is - // always required - if (![OPTIONAL, ZERO_OR_MORE].includes(kwargs.nargs)) { - kwargs.required = true - } - if (kwargs.nargs === ZERO_OR_MORE && !('default' in kwargs)) { - kwargs.required = true - } - - // return the keyword arguments with no option strings - return Object.assign(kwargs, { dest, option_strings: [] }) - } - - _get_optional_kwargs() { - let [ - args, - kwargs - ] = _parse_opts(arguments, { - '*args': no_default, - '**kwargs': no_default - }) - - // determine short and long option strings - let option_strings = [] - let long_option_strings = [] - let option_string - for (option_string of args) { - // error on strings that don't start with an appropriate prefix - if (!this.prefix_chars.includes(option_string[0])) { - let args = {option: option_string, - prefix_chars: this.prefix_chars} - let msg = 'invalid option string %(option)r: ' + - 'must start with a character %(prefix_chars)r' - throw new TypeError(sub(msg, args)) - } - - // strings starting with two prefix characters are long options - option_strings.push(option_string) - if (option_string.length > 1 && this.prefix_chars.includes(option_string[1])) { - long_option_strings.push(option_string) - } - } - - // infer destination, '--foo-bar' -> 'foo_bar' and '-x' -> 'x' - let dest = kwargs.dest - delete kwargs.dest - if (dest === undefined) { - let dest_option_string - if (long_option_strings.length) { - dest_option_string = long_option_strings[0] - } else { - dest_option_string = option_strings[0] - } - dest = _string_lstrip(dest_option_string, this.prefix_chars) - if (!dest) { - let msg = 'dest= is required for options like %r' - throw new TypeError(sub(msg, option_string)) - } - dest = dest.replace(/-/g, '_') - } - - // return the updated keyword arguments - return Object.assign(kwargs, { dest, option_strings }) - } - - _pop_action_class(kwargs, default_value = undefined) { - let action = getattr(kwargs, 'action', default_value) - delete kwargs.action - return this._registry_get('action', action, action) - } - - _get_handler() { - // determine function from conflict handler string - let handler_func_name = sub('_handle_conflict_%s', this.conflict_handler) - if (typeof this[handler_func_name] === 'function') { - return this[handler_func_name] - } else { - let msg = 'invalid conflict_resolution value: %r' - throw new TypeError(sub(msg, this.conflict_handler)) - } - } - - _check_conflict(action) { - - // find all options that conflict with this option - let confl_optionals = [] - for (let option_string of action.option_strings) { - if (hasattr(this._option_string_actions, option_string)) { - let confl_optional = this._option_string_actions[option_string] - confl_optionals.push([ option_string, confl_optional ]) - } - } - - // resolve any conflicts - if (confl_optionals.length) { - let conflict_handler = this._get_handler() - conflict_handler.call(this, action, confl_optionals) - } - } - - _handle_conflict_error(action, conflicting_actions) { - let message = conflicting_actions.length === 1 ? - 'conflicting option string: %s' : - 'conflicting option strings: %s' - let conflict_string = conflicting_actions.map(([ option_string/*, action*/ ]) => option_string).join(', ') - throw new ArgumentError(action, sub(message, conflict_string)) - } - - _handle_conflict_resolve(action, conflicting_actions) { - - // remove all conflicting options - for (let [ option_string, action ] of conflicting_actions) { - - // remove the conflicting option - _array_remove(action.option_strings, option_string) - delete this._option_string_actions[option_string] - - // if the option now has no option string, remove it from the - // container holding it - if (!action.option_strings.length) { - action.container._remove_action(action) - } - } - } -})) - - -const _ArgumentGroup = _callable(class _ArgumentGroup extends _ActionsContainer { - - constructor() { - let [ - container, - title, - description, - kwargs - ] = _parse_opts(arguments, { - container: no_default, - title: undefined, - description: undefined, - '**kwargs': no_default - }) - - // add any missing keyword arguments by checking the container - setdefault(kwargs, 'conflict_handler', container.conflict_handler) - setdefault(kwargs, 'prefix_chars', container.prefix_chars) - setdefault(kwargs, 'argument_default', container.argument_default) - super(Object.assign({ description }, kwargs)) - - // group attributes - this.title = title - this._group_actions = [] - - // share most attributes with the container - this._registries = container._registries - this._actions = container._actions - this._option_string_actions = container._option_string_actions - this._defaults = container._defaults - this._has_negative_number_optionals = - container._has_negative_number_optionals - this._mutually_exclusive_groups = container._mutually_exclusive_groups - } - - _add_action(action) { - action = super._add_action(action) - this._group_actions.push(action) - return action - } - - _remove_action(action) { - super._remove_action(action) - _array_remove(this._group_actions, action) - } -}) - - -const _MutuallyExclusiveGroup = _callable(class _MutuallyExclusiveGroup extends _ArgumentGroup { - - constructor() { - let [ - container, - required - ] = _parse_opts(arguments, { - container: no_default, - required: false - }) - - super(container) - this.required = required - this._container = container - } - - _add_action(action) { - if (action.required) { - let msg = 'mutually exclusive arguments must be optional' - throw new TypeError(msg) - } - action = this._container._add_action(action) - this._group_actions.push(action) - return action - } - - _remove_action(action) { - this._container._remove_action(action) - _array_remove(this._group_actions, action) - } -}) - - -const ArgumentParser = _camelcase_alias(_callable(class ArgumentParser extends _AttributeHolder(_ActionsContainer) { - /* - * Object for parsing command line strings into Python objects. - * - * Keyword Arguments: - * - prog -- The name of the program (default: sys.argv[0]) - * - usage -- A usage message (default: auto-generated from arguments) - * - description -- A description of what the program does - * - epilog -- Text following the argument descriptions - * - parents -- Parsers whose arguments should be copied into this one - * - formatter_class -- HelpFormatter class for printing help messages - * - prefix_chars -- Characters that prefix optional arguments - * - fromfile_prefix_chars -- Characters that prefix files containing - * additional arguments - * - argument_default -- The default value for all arguments - * - conflict_handler -- String indicating how to handle conflicts - * - add_help -- Add a -h/-help option - * - allow_abbrev -- Allow long options to be abbreviated unambiguously - * - exit_on_error -- Determines whether or not ArgumentParser exits with - * error info when an error occurs - */ - - constructor() { - let [ - prog, - usage, - description, - epilog, - parents, - formatter_class, - prefix_chars, - fromfile_prefix_chars, - argument_default, - conflict_handler, - add_help, - allow_abbrev, - exit_on_error, - debug, // LEGACY (v1 compatibility), debug mode - version // LEGACY (v1 compatibility), version - ] = _parse_opts(arguments, { - prog: undefined, - usage: undefined, - description: undefined, - epilog: undefined, - parents: [], - formatter_class: HelpFormatter, - prefix_chars: '-', - fromfile_prefix_chars: undefined, - argument_default: undefined, - conflict_handler: 'error', - add_help: true, - allow_abbrev: true, - exit_on_error: true, - debug: undefined, // LEGACY (v1 compatibility), debug mode - version: undefined // LEGACY (v1 compatibility), version - }) - - // LEGACY (v1 compatibility) - if (debug !== undefined) { - deprecate('debug', - 'The "debug" argument to ArgumentParser is deprecated. Please ' + - 'override ArgumentParser.exit function instead.' - ) - } - - if (version !== undefined) { - deprecate('version', - 'The "version" argument to ArgumentParser is deprecated. Please use ' + - "add_argument(..., { action: 'version', version: 'N', ... }) instead." - ) - } - // end - - super({ - description, - prefix_chars, - argument_default, - conflict_handler - }) - - // default setting for prog - if (prog === undefined) { - prog = path.basename(get_argv()[0] || '') - } - - this.prog = prog - this.usage = usage - this.epilog = epilog - this.formatter_class = formatter_class - this.fromfile_prefix_chars = fromfile_prefix_chars - this.add_help = add_help - this.allow_abbrev = allow_abbrev - this.exit_on_error = exit_on_error - // LEGACY (v1 compatibility), debug mode - this.debug = debug - // end - - this._positionals = this.add_argument_group('positional arguments') - this._optionals = this.add_argument_group('optional arguments') - this._subparsers = undefined - - // register types - function identity(string) { - return string - } - this.register('type', undefined, identity) - this.register('type', null, identity) - this.register('type', 'auto', identity) - this.register('type', 'int', function (x) { - let result = Number(x) - if (!Number.isInteger(result)) { - throw new TypeError(sub('could not convert string to int: %r', x)) - } - return result - }) - this.register('type', 'float', function (x) { - let result = Number(x) - if (isNaN(result)) { - throw new TypeError(sub('could not convert string to float: %r', x)) - } - return result - }) - this.register('type', 'str', String) - // LEGACY (v1 compatibility): custom types - this.register('type', 'string', - util.deprecate(String, 'use {type:"str"} or {type:String} instead of {type:"string"}')) - // end - - // add help argument if necessary - // (using explicit default to override global argument_default) - let default_prefix = prefix_chars.includes('-') ? '-' : prefix_chars[0] - if (this.add_help) { - this.add_argument( - default_prefix + 'h', - default_prefix.repeat(2) + 'help', - { - action: 'help', - default: SUPPRESS, - help: 'show this help message and exit' - } - ) - } - // LEGACY (v1 compatibility), version - if (version) { - this.add_argument( - default_prefix + 'v', - default_prefix.repeat(2) + 'version', - { - action: 'version', - default: SUPPRESS, - version: this.version, - help: "show program's version number and exit" - } - ) - } - // end - - // add parent arguments and defaults - for (let parent of parents) { - this._add_container_actions(parent) - Object.assign(this._defaults, parent._defaults) - } - } - - // ======================= - // Pretty __repr__ methods - // ======================= - _get_kwargs() { - let names = [ - 'prog', - 'usage', - 'description', - 'formatter_class', - 'conflict_handler', - 'add_help' - ] - return names.map(name => [ name, getattr(this, name) ]) - } - - // ================================== - // Optional/Positional adding methods - // ================================== - add_subparsers() { - let [ - kwargs - ] = _parse_opts(arguments, { - '**kwargs': no_default - }) - - if (this._subparsers !== undefined) { - this.error('cannot have multiple subparser arguments') - } - - // add the parser class to the arguments if it's not present - setdefault(kwargs, 'parser_class', this.constructor) - - if ('title' in kwargs || 'description' in kwargs) { - let title = getattr(kwargs, 'title', 'subcommands') - let description = getattr(kwargs, 'description', undefined) - delete kwargs.title - delete kwargs.description - this._subparsers = this.add_argument_group(title, description) - } else { - this._subparsers = this._positionals - } - - // prog defaults to the usage message of this parser, skipping - // optional arguments and with no "usage:" prefix - if (kwargs.prog === undefined) { - let formatter = this._get_formatter() - let positionals = this._get_positional_actions() - let groups = this._mutually_exclusive_groups - formatter.add_usage(this.usage, positionals, groups, '') - kwargs.prog = formatter.format_help().trim() - } - - // create the parsers action and add it to the positionals list - let parsers_class = this._pop_action_class(kwargs, 'parsers') - // eslint-disable-next-line new-cap - let action = new parsers_class(Object.assign({ option_strings: [] }, kwargs)) - this._subparsers._add_action(action) - - // return the created parsers action - return action - } - - _add_action(action) { - if (action.option_strings.length) { - this._optionals._add_action(action) - } else { - this._positionals._add_action(action) - } - return action - } - - _get_optional_actions() { - return this._actions.filter(action => action.option_strings.length) - } - - _get_positional_actions() { - return this._actions.filter(action => !action.option_strings.length) - } - - // ===================================== - // Command line argument parsing methods - // ===================================== - parse_args(args = undefined, namespace = undefined) { - let argv - [ args, argv ] = this.parse_known_args(args, namespace) - if (argv && argv.length > 0) { - let msg = 'unrecognized arguments: %s' - this.error(sub(msg, argv.join(' '))) - } - return args - } - - parse_known_args(args = undefined, namespace = undefined) { - if (args === undefined) { - args = get_argv().slice(1) - } - - // default Namespace built from parser defaults - if (namespace === undefined) { - namespace = new Namespace() - } - - // add any action defaults that aren't present - for (let action of this._actions) { - if (action.dest !== SUPPRESS) { - if (!hasattr(namespace, action.dest)) { - if (action.default !== SUPPRESS) { - setattr(namespace, action.dest, action.default) - } - } - } - } - - // add any parser defaults that aren't present - for (let dest of Object.keys(this._defaults)) { - if (!hasattr(namespace, dest)) { - setattr(namespace, dest, this._defaults[dest]) - } - } - - // parse the arguments and exit if there are any errors - if (this.exit_on_error) { - try { - [ namespace, args ] = this._parse_known_args(args, namespace) - } catch (err) { - if (err instanceof ArgumentError) { - this.error(err.message) - } else { - throw err - } - } - } else { - [ namespace, args ] = this._parse_known_args(args, namespace) - } - - if (hasattr(namespace, _UNRECOGNIZED_ARGS_ATTR)) { - args = args.concat(getattr(namespace, _UNRECOGNIZED_ARGS_ATTR)) - delattr(namespace, _UNRECOGNIZED_ARGS_ATTR) - } - - return [ namespace, args ] - } - - _parse_known_args(arg_strings, namespace) { - // replace arg strings that are file references - if (this.fromfile_prefix_chars !== undefined) { - arg_strings = this._read_args_from_files(arg_strings) - } - - // map all mutually exclusive arguments to the other arguments - // they can't occur with - let action_conflicts = new Map() - for (let mutex_group of this._mutually_exclusive_groups) { - let group_actions = mutex_group._group_actions - for (let [ i, mutex_action ] of Object.entries(mutex_group._group_actions)) { - let conflicts = action_conflicts.get(mutex_action) || [] - conflicts = conflicts.concat(group_actions.slice(0, +i)) - conflicts = conflicts.concat(group_actions.slice(+i + 1)) - action_conflicts.set(mutex_action, conflicts) - } - } - - // find all option indices, and determine the arg_string_pattern - // which has an 'O' if there is an option at an index, - // an 'A' if there is an argument, or a '-' if there is a '--' - let option_string_indices = {} - let arg_string_pattern_parts = [] - let arg_strings_iter = Object.entries(arg_strings)[Symbol.iterator]() - for (let [ i, arg_string ] of arg_strings_iter) { - - // all args after -- are non-options - if (arg_string === '--') { - arg_string_pattern_parts.push('-') - for ([ i, arg_string ] of arg_strings_iter) { - arg_string_pattern_parts.push('A') - } - - // otherwise, add the arg to the arg strings - // and note the index if it was an option - } else { - let option_tuple = this._parse_optional(arg_string) - let pattern - if (option_tuple === undefined) { - pattern = 'A' - } else { - option_string_indices[i] = option_tuple - pattern = 'O' - } - arg_string_pattern_parts.push(pattern) - } - } - - // join the pieces together to form the pattern - let arg_strings_pattern = arg_string_pattern_parts.join('') - - // converts arg strings to the appropriate and then takes the action - let seen_actions = new Set() - let seen_non_default_actions = new Set() - let extras - - let take_action = (action, argument_strings, option_string = undefined) => { - seen_actions.add(action) - let argument_values = this._get_values(action, argument_strings) - - // error if this argument is not allowed with other previously - // seen arguments, assuming that actions that use the default - // value don't really count as "present" - if (argument_values !== action.default) { - seen_non_default_actions.add(action) - for (let conflict_action of action_conflicts.get(action) || []) { - if (seen_non_default_actions.has(conflict_action)) { - let msg = 'not allowed with argument %s' - let action_name = _get_action_name(conflict_action) - throw new ArgumentError(action, sub(msg, action_name)) - } - } - } - - // take the action if we didn't receive a SUPPRESS value - // (e.g. from a default) - if (argument_values !== SUPPRESS) { - action(this, namespace, argument_values, option_string) - } - } - - // function to convert arg_strings into an optional action - let consume_optional = start_index => { - - // get the optional identified at this index - let option_tuple = option_string_indices[start_index] - let [ action, option_string, explicit_arg ] = option_tuple - - // identify additional optionals in the same arg string - // (e.g. -xyz is the same as -x -y -z if no args are required) - let action_tuples = [] - let stop - for (;;) { - - // if we found no optional action, skip it - if (action === undefined) { - extras.push(arg_strings[start_index]) - return start_index + 1 - } - - // if there is an explicit argument, try to match the - // optional's string arguments to only this - if (explicit_arg !== undefined) { - let arg_count = this._match_argument(action, 'A') - - // if the action is a single-dash option and takes no - // arguments, try to parse more single-dash options out - // of the tail of the option string - let chars = this.prefix_chars - if (arg_count === 0 && !chars.includes(option_string[1])) { - action_tuples.push([ action, [], option_string ]) - let char = option_string[0] - option_string = char + explicit_arg[0] - let new_explicit_arg = explicit_arg.slice(1) || undefined - let optionals_map = this._option_string_actions - if (hasattr(optionals_map, option_string)) { - action = optionals_map[option_string] - explicit_arg = new_explicit_arg - } else { - let msg = 'ignored explicit argument %r' - throw new ArgumentError(action, sub(msg, explicit_arg)) - } - - // if the action expect exactly one argument, we've - // successfully matched the option; exit the loop - } else if (arg_count === 1) { - stop = start_index + 1 - let args = [ explicit_arg ] - action_tuples.push([ action, args, option_string ]) - break - - // error if a double-dash option did not use the - // explicit argument - } else { - let msg = 'ignored explicit argument %r' - throw new ArgumentError(action, sub(msg, explicit_arg)) - } - - // if there is no explicit argument, try to match the - // optional's string arguments with the following strings - // if successful, exit the loop - } else { - let start = start_index + 1 - let selected_patterns = arg_strings_pattern.slice(start) - let arg_count = this._match_argument(action, selected_patterns) - stop = start + arg_count - let args = arg_strings.slice(start, stop) - action_tuples.push([ action, args, option_string ]) - break - } - } - - // add the Optional to the list and return the index at which - // the Optional's string args stopped - assert(action_tuples.length) - for (let [ action, args, option_string ] of action_tuples) { - take_action(action, args, option_string) - } - return stop - } - - // the list of Positionals left to be parsed; this is modified - // by consume_positionals() - let positionals = this._get_positional_actions() - - // function to convert arg_strings into positional actions - let consume_positionals = start_index => { - // match as many Positionals as possible - let selected_pattern = arg_strings_pattern.slice(start_index) - let arg_counts = this._match_arguments_partial(positionals, selected_pattern) - - // slice off the appropriate arg strings for each Positional - // and add the Positional and its args to the list - for (let i = 0; i < positionals.length && i < arg_counts.length; i++) { - let action = positionals[i] - let arg_count = arg_counts[i] - let args = arg_strings.slice(start_index, start_index + arg_count) - start_index += arg_count - take_action(action, args) - } - - // slice off the Positionals that we just parsed and return the - // index at which the Positionals' string args stopped - positionals = positionals.slice(arg_counts.length) - return start_index - } - - // consume Positionals and Optionals alternately, until we have - // passed the last option string - extras = [] - let start_index = 0 - let max_option_string_index = Math.max(-1, ...Object.keys(option_string_indices).map(Number)) - while (start_index <= max_option_string_index) { - - // consume any Positionals preceding the next option - let next_option_string_index = Math.min( - // eslint-disable-next-line no-loop-func - ...Object.keys(option_string_indices).map(Number).filter(index => index >= start_index) - ) - if (start_index !== next_option_string_index) { - let positionals_end_index = consume_positionals(start_index) - - // only try to parse the next optional if we didn't consume - // the option string during the positionals parsing - if (positionals_end_index > start_index) { - start_index = positionals_end_index - continue - } else { - start_index = positionals_end_index - } - } - - // if we consumed all the positionals we could and we're not - // at the index of an option string, there were extra arguments - if (!(start_index in option_string_indices)) { - let strings = arg_strings.slice(start_index, next_option_string_index) - extras = extras.concat(strings) - start_index = next_option_string_index - } - - // consume the next optional and any arguments for it - start_index = consume_optional(start_index) - } - - // consume any positionals following the last Optional - let stop_index = consume_positionals(start_index) - - // if we didn't consume all the argument strings, there were extras - extras = extras.concat(arg_strings.slice(stop_index)) - - // make sure all required actions were present and also convert - // action defaults which were not given as arguments - let required_actions = [] - for (let action of this._actions) { - if (!seen_actions.has(action)) { - if (action.required) { - required_actions.push(_get_action_name(action)) - } else { - // Convert action default now instead of doing it before - // parsing arguments to avoid calling convert functions - // twice (which may fail) if the argument was given, but - // only if it was defined already in the namespace - if (action.default !== undefined && - typeof action.default === 'string' && - hasattr(namespace, action.dest) && - action.default === getattr(namespace, action.dest)) { - setattr(namespace, action.dest, - this._get_value(action, action.default)) - } - } - } - } - - if (required_actions.length) { - this.error(sub('the following arguments are required: %s', - required_actions.join(', '))) - } - - // make sure all required groups had one option present - for (let group of this._mutually_exclusive_groups) { - if (group.required) { - let no_actions_used = true - for (let action of group._group_actions) { - if (seen_non_default_actions.has(action)) { - no_actions_used = false - break - } - } - - // if no actions were used, report the error - if (no_actions_used) { - let names = group._group_actions - .filter(action => action.help !== SUPPRESS) - .map(action => _get_action_name(action)) - let msg = 'one of the arguments %s is required' - this.error(sub(msg, names.join(' '))) - } - } - } - - // return the updated namespace and the extra arguments - return [ namespace, extras ] - } - - _read_args_from_files(arg_strings) { - // expand arguments referencing files - let new_arg_strings = [] - for (let arg_string of arg_strings) { - - // for regular arguments, just add them back into the list - if (!arg_string || !this.fromfile_prefix_chars.includes(arg_string[0])) { - new_arg_strings.push(arg_string) - - // replace arguments referencing files with the file content - } else { - try { - let args_file = fs.readFileSync(arg_string.slice(1), 'utf8') - let arg_strings = [] - for (let arg_line of splitlines(args_file)) { - for (let arg of this.convert_arg_line_to_args(arg_line)) { - arg_strings.push(arg) - } - } - arg_strings = this._read_args_from_files(arg_strings) - new_arg_strings = new_arg_strings.concat(arg_strings) - } catch (err) { - this.error(err.message) - } - } - } - - // return the modified argument list - return new_arg_strings - } - - convert_arg_line_to_args(arg_line) { - return [arg_line] - } - - _match_argument(action, arg_strings_pattern) { - // match the pattern for this action to the arg strings - let nargs_pattern = this._get_nargs_pattern(action) - let match = arg_strings_pattern.match(new RegExp('^' + nargs_pattern)) - - // raise an exception if we weren't able to find a match - if (match === null) { - let nargs_errors = { - undefined: 'expected one argument', - [OPTIONAL]: 'expected at most one argument', - [ONE_OR_MORE]: 'expected at least one argument' - } - let msg = nargs_errors[action.nargs] - if (msg === undefined) { - msg = sub(action.nargs === 1 ? 'expected %s argument' : 'expected %s arguments', action.nargs) - } - throw new ArgumentError(action, msg) - } - - // return the number of arguments matched - return match[1].length - } - - _match_arguments_partial(actions, arg_strings_pattern) { - // progressively shorten the actions list by slicing off the - // final actions until we find a match - let result = [] - for (let i of range(actions.length, 0, -1)) { - let actions_slice = actions.slice(0, i) - let pattern = actions_slice.map(action => this._get_nargs_pattern(action)).join('') - let match = arg_strings_pattern.match(new RegExp('^' + pattern)) - if (match !== null) { - result = result.concat(match.slice(1).map(string => string.length)) - break - } - } - - // return the list of arg string counts - return result - } - - _parse_optional(arg_string) { - // if it's an empty string, it was meant to be a positional - if (!arg_string) { - return undefined - } - - // if it doesn't start with a prefix, it was meant to be positional - if (!this.prefix_chars.includes(arg_string[0])) { - return undefined - } - - // if the option string is present in the parser, return the action - if (arg_string in this._option_string_actions) { - let action = this._option_string_actions[arg_string] - return [ action, arg_string, undefined ] - } - - // if it's just a single character, it was meant to be positional - if (arg_string.length === 1) { - return undefined - } - - // if the option string before the "=" is present, return the action - if (arg_string.includes('=')) { - let [ option_string, explicit_arg ] = _string_split(arg_string, '=', 1) - if (option_string in this._option_string_actions) { - let action = this._option_string_actions[option_string] - return [ action, option_string, explicit_arg ] - } - } - - // search through all possible prefixes of the option string - // and all actions in the parser for possible interpretations - let option_tuples = this._get_option_tuples(arg_string) - - // if multiple actions match, the option string was ambiguous - if (option_tuples.length > 1) { - let options = option_tuples.map(([ /*action*/, option_string/*, explicit_arg*/ ]) => option_string).join(', ') - let args = {option: arg_string, matches: options} - let msg = 'ambiguous option: %(option)s could match %(matches)s' - this.error(sub(msg, args)) - - // if exactly one action matched, this segmentation is good, - // so return the parsed action - } else if (option_tuples.length === 1) { - let [ option_tuple ] = option_tuples - return option_tuple - } - - // if it was not found as an option, but it looks like a negative - // number, it was meant to be positional - // unless there are negative-number-like options - if (this._negative_number_matcher.test(arg_string)) { - if (!this._has_negative_number_optionals.length) { - return undefined - } - } - - // if it contains a space, it was meant to be a positional - if (arg_string.includes(' ')) { - return undefined - } - - // it was meant to be an optional but there is no such option - // in this parser (though it might be a valid option in a subparser) - return [ undefined, arg_string, undefined ] - } - - _get_option_tuples(option_string) { - let result = [] - - // option strings starting with two prefix characters are only - // split at the '=' - let chars = this.prefix_chars - if (chars.includes(option_string[0]) && chars.includes(option_string[1])) { - if (this.allow_abbrev) { - let option_prefix, explicit_arg - if (option_string.includes('=')) { - [ option_prefix, explicit_arg ] = _string_split(option_string, '=', 1) - } else { - option_prefix = option_string - explicit_arg = undefined - } - for (let option_string of Object.keys(this._option_string_actions)) { - if (option_string.startsWith(option_prefix)) { - let action = this._option_string_actions[option_string] - let tup = [ action, option_string, explicit_arg ] - result.push(tup) - } - } - } - - // single character options can be concatenated with their arguments - // but multiple character options always have to have their argument - // separate - } else if (chars.includes(option_string[0]) && !chars.includes(option_string[1])) { - let option_prefix = option_string - let explicit_arg = undefined - let short_option_prefix = option_string.slice(0, 2) - let short_explicit_arg = option_string.slice(2) - - for (let option_string of Object.keys(this._option_string_actions)) { - if (option_string === short_option_prefix) { - let action = this._option_string_actions[option_string] - let tup = [ action, option_string, short_explicit_arg ] - result.push(tup) - } else if (option_string.startsWith(option_prefix)) { - let action = this._option_string_actions[option_string] - let tup = [ action, option_string, explicit_arg ] - result.push(tup) - } - } - - // shouldn't ever get here - } else { - this.error(sub('unexpected option string: %s', option_string)) - } - - // return the collected option tuples - return result - } - - _get_nargs_pattern(action) { - // in all examples below, we have to allow for '--' args - // which are represented as '-' in the pattern - let nargs = action.nargs - let nargs_pattern - - // the default (None) is assumed to be a single argument - if (nargs === undefined) { - nargs_pattern = '(-*A-*)' - - // allow zero or one arguments - } else if (nargs === OPTIONAL) { - nargs_pattern = '(-*A?-*)' - - // allow zero or more arguments - } else if (nargs === ZERO_OR_MORE) { - nargs_pattern = '(-*[A-]*)' - - // allow one or more arguments - } else if (nargs === ONE_OR_MORE) { - nargs_pattern = '(-*A[A-]*)' - - // allow any number of options or arguments - } else if (nargs === REMAINDER) { - nargs_pattern = '([-AO]*)' - - // allow one argument followed by any number of options or arguments - } else if (nargs === PARSER) { - nargs_pattern = '(-*A[-AO]*)' - - // suppress action, like nargs=0 - } else if (nargs === SUPPRESS) { - nargs_pattern = '(-*-*)' - - // all others should be integers - } else { - nargs_pattern = sub('(-*%s-*)', 'A'.repeat(nargs).split('').join('-*')) - } - - // if this is an optional action, -- is not allowed - if (action.option_strings.length) { - nargs_pattern = nargs_pattern.replace(/-\*/g, '') - nargs_pattern = nargs_pattern.replace(/-/g, '') - } - - // return the pattern - return nargs_pattern - } - - // ======================== - // Alt command line argument parsing, allowing free intermix - // ======================== - - parse_intermixed_args(args = undefined, namespace = undefined) { - let argv - [ args, argv ] = this.parse_known_intermixed_args(args, namespace) - if (argv.length) { - let msg = 'unrecognized arguments: %s' - this.error(sub(msg, argv.join(' '))) - } - return args - } - - parse_known_intermixed_args(args = undefined, namespace = undefined) { - // returns a namespace and list of extras - // - // positional can be freely intermixed with optionals. optionals are - // first parsed with all positional arguments deactivated. The 'extras' - // are then parsed. If the parser definition is incompatible with the - // intermixed assumptions (e.g. use of REMAINDER, subparsers) a - // TypeError is raised. - // - // positionals are 'deactivated' by setting nargs and default to - // SUPPRESS. This blocks the addition of that positional to the - // namespace - - let extras - let positionals = this._get_positional_actions() - let a = positionals.filter(action => [ PARSER, REMAINDER ].includes(action.nargs)) - if (a.length) { - throw new TypeError(sub('parse_intermixed_args: positional arg' + - ' with nargs=%s', a[0].nargs)) - } - - for (let group of this._mutually_exclusive_groups) { - for (let action of group._group_actions) { - if (positionals.includes(action)) { - throw new TypeError('parse_intermixed_args: positional in' + - ' mutuallyExclusiveGroup') - } - } - } - - let save_usage - try { - save_usage = this.usage - let remaining_args - try { - if (this.usage === undefined) { - // capture the full usage for use in error messages - this.usage = this.format_usage().slice(7) - } - for (let action of positionals) { - // deactivate positionals - action.save_nargs = action.nargs - // action.nargs = 0 - action.nargs = SUPPRESS - action.save_default = action.default - action.default = SUPPRESS - } - [ namespace, remaining_args ] = this.parse_known_args(args, - namespace) - for (let action of positionals) { - // remove the empty positional values from namespace - let attr = getattr(namespace, action.dest) - if (Array.isArray(attr) && attr.length === 0) { - // eslint-disable-next-line no-console - console.warn(sub('Do not expect %s in %s', action.dest, namespace)) - delattr(namespace, action.dest) - } - } - } finally { - // restore nargs and usage before exiting - for (let action of positionals) { - action.nargs = action.save_nargs - action.default = action.save_default - } - } - let optionals = this._get_optional_actions() - try { - // parse positionals. optionals aren't normally required, but - // they could be, so make sure they aren't. - for (let action of optionals) { - action.save_required = action.required - action.required = false - } - for (let group of this._mutually_exclusive_groups) { - group.save_required = group.required - group.required = false - } - [ namespace, extras ] = this.parse_known_args(remaining_args, - namespace) - } finally { - // restore parser values before exiting - for (let action of optionals) { - action.required = action.save_required - } - for (let group of this._mutually_exclusive_groups) { - group.required = group.save_required - } - } - } finally { - this.usage = save_usage - } - return [ namespace, extras ] - } - - // ======================== - // Value conversion methods - // ======================== - _get_values(action, arg_strings) { - // for everything but PARSER, REMAINDER args, strip out first '--' - if (![PARSER, REMAINDER].includes(action.nargs)) { - try { - _array_remove(arg_strings, '--') - } catch (err) {} - } - - let value - // optional argument produces a default when not present - if (!arg_strings.length && action.nargs === OPTIONAL) { - if (action.option_strings.length) { - value = action.const - } else { - value = action.default - } - if (typeof value === 'string') { - value = this._get_value(action, value) - this._check_value(action, value) - } - - // when nargs='*' on a positional, if there were no command-line - // args, use the default if it is anything other than None - } else if (!arg_strings.length && action.nargs === ZERO_OR_MORE && - !action.option_strings.length) { - if (action.default !== undefined) { - value = action.default - } else { - value = arg_strings - } - this._check_value(action, value) - - // single argument or optional argument produces a single value - } else if (arg_strings.length === 1 && [undefined, OPTIONAL].includes(action.nargs)) { - let arg_string = arg_strings[0] - value = this._get_value(action, arg_string) - this._check_value(action, value) - - // REMAINDER arguments convert all values, checking none - } else if (action.nargs === REMAINDER) { - value = arg_strings.map(v => this._get_value(action, v)) - - // PARSER arguments convert all values, but check only the first - } else if (action.nargs === PARSER) { - value = arg_strings.map(v => this._get_value(action, v)) - this._check_value(action, value[0]) - - // SUPPRESS argument does not put anything in the namespace - } else if (action.nargs === SUPPRESS) { - value = SUPPRESS - - // all other types of nargs produce a list - } else { - value = arg_strings.map(v => this._get_value(action, v)) - for (let v of value) { - this._check_value(action, v) - } - } - - // return the converted value - return value - } - - _get_value(action, arg_string) { - let type_func = this._registry_get('type', action.type, action.type) - if (typeof type_func !== 'function') { - let msg = '%r is not callable' - throw new ArgumentError(action, sub(msg, type_func)) - } - - // convert the value to the appropriate type - let result - try { - try { - result = type_func(arg_string) - } catch (err) { - // Dear TC39, why would you ever consider making es6 classes not callable? - // We had one universal interface, [[Call]], which worked for anything - // (with familiar this-instanceof guard for classes). Now we have two. - if (err instanceof TypeError && - /Class constructor .* cannot be invoked without 'new'/.test(err.message)) { - // eslint-disable-next-line new-cap - result = new type_func(arg_string) - } else { - throw err - } - } - - } catch (err) { - // ArgumentTypeErrors indicate errors - if (err instanceof ArgumentTypeError) { - //let name = getattr(action.type, 'name', repr(action.type)) - let msg = err.message - throw new ArgumentError(action, msg) - - // TypeErrors or ValueErrors also indicate errors - } else if (err instanceof TypeError) { - let name = getattr(action.type, 'name', repr(action.type)) - let args = {type: name, value: arg_string} - let msg = 'invalid %(type)s value: %(value)r' - throw new ArgumentError(action, sub(msg, args)) - } else { - throw err - } - } - - // return the converted value - return result - } - - _check_value(action, value) { - // converted value must be one of the choices (if specified) - if (action.choices !== undefined && !_choices_to_array(action.choices).includes(value)) { - let args = {value, - choices: _choices_to_array(action.choices).map(repr).join(', ')} - let msg = 'invalid choice: %(value)r (choose from %(choices)s)' - throw new ArgumentError(action, sub(msg, args)) - } - } - - // ======================= - // Help-formatting methods - // ======================= - format_usage() { - let formatter = this._get_formatter() - formatter.add_usage(this.usage, this._actions, - this._mutually_exclusive_groups) - return formatter.format_help() - } - - format_help() { - let formatter = this._get_formatter() - - // usage - formatter.add_usage(this.usage, this._actions, - this._mutually_exclusive_groups) - - // description - formatter.add_text(this.description) - - // positionals, optionals and user-defined groups - for (let action_group of this._action_groups) { - formatter.start_section(action_group.title) - formatter.add_text(action_group.description) - formatter.add_arguments(action_group._group_actions) - formatter.end_section() - } - - // epilog - formatter.add_text(this.epilog) - - // determine help from format above - return formatter.format_help() - } - - _get_formatter() { - // eslint-disable-next-line new-cap - return new this.formatter_class({ prog: this.prog }) - } - - // ===================== - // Help-printing methods - // ===================== - print_usage(file = undefined) { - if (file === undefined) file = process.stdout - this._print_message(this.format_usage(), file) - } - - print_help(file = undefined) { - if (file === undefined) file = process.stdout - this._print_message(this.format_help(), file) - } - - _print_message(message, file = undefined) { - if (message) { - if (file === undefined) file = process.stderr - file.write(message) - } - } - - // =============== - // Exiting methods - // =============== - exit(status = 0, message = undefined) { - if (message) { - this._print_message(message, process.stderr) - } - process.exit(status) - } - - error(message) { - /* - * error(message: string) - * - * Prints a usage message incorporating the message to stderr and - * exits. - * - * If you override this in a subclass, it should not return -- it - * should either exit or raise an exception. - */ - - // LEGACY (v1 compatibility), debug mode - if (this.debug === true) throw new Error(message) - // end - this.print_usage(process.stderr) - let args = {prog: this.prog, message: message} - this.exit(2, sub('%(prog)s: error: %(message)s\n', args)) - } -})) - - -module.exports = { - ArgumentParser, - ArgumentError, - ArgumentTypeError, - BooleanOptionalAction, - FileType, - HelpFormatter, - ArgumentDefaultsHelpFormatter, - RawDescriptionHelpFormatter, - RawTextHelpFormatter, - MetavarTypeHelpFormatter, - Namespace, - Action, - ONE_OR_MORE, - OPTIONAL, - PARSER, - REMAINDER, - SUPPRESS, - ZERO_OR_MORE -} - -// LEGACY (v1 compatibility), Const alias -Object.defineProperty(module.exports, 'Const', { - get() { - let result = {} - Object.entries({ ONE_OR_MORE, OPTIONAL, PARSER, REMAINDER, SUPPRESS, ZERO_OR_MORE }).forEach(([ n, v ]) => { - Object.defineProperty(result, n, { - get() { - deprecate(n, sub('use argparse.%s instead of argparse.Const.%s', n, n)) - return v - } - }) - }) - Object.entries({ _UNRECOGNIZED_ARGS_ATTR }).forEach(([ n, v ]) => { - Object.defineProperty(result, n, { - get() { - deprecate(n, sub('argparse.Const.%s is an internal symbol and will no longer be available', n)) - return v - } - }) - }) - return result - }, - enumerable: false -}) -// end diff --git a/sdks/nodejs/node_modules/argparse/lib/sub.js b/sdks/nodejs/node_modules/argparse/lib/sub.js deleted file mode 100644 index e3eb321..0000000 --- a/sdks/nodejs/node_modules/argparse/lib/sub.js +++ /dev/null @@ -1,67 +0,0 @@ -// Limited implementation of python % string operator, supports only %s and %r for now -// (other formats are not used here, but may appear in custom templates) - -'use strict' - -const { inspect } = require('util') - - -module.exports = function sub(pattern, ...values) { - let regex = /%(?:(%)|(-)?(\*)?(?:\((\w+)\))?([A-Za-z]))/g - - let result = pattern.replace(regex, function (_, is_literal, is_left_align, is_padded, name, format) { - if (is_literal) return '%' - - let padded_count = 0 - if (is_padded) { - if (values.length === 0) throw new TypeError('not enough arguments for format string') - padded_count = values.shift() - if (!Number.isInteger(padded_count)) throw new TypeError('* wants int') - } - - let str - if (name !== undefined) { - let dict = values[0] - if (typeof dict !== 'object' || dict === null) throw new TypeError('format requires a mapping') - if (!(name in dict)) throw new TypeError(`no such key: '${name}'`) - str = dict[name] - } else { - if (values.length === 0) throw new TypeError('not enough arguments for format string') - str = values.shift() - } - - switch (format) { - case 's': - str = String(str) - break - case 'r': - str = inspect(str) - break - case 'd': - case 'i': - if (typeof str !== 'number') { - throw new TypeError(`%${format} format: a number is required, not ${typeof str}`) - } - str = String(str.toFixed(0)) - break - default: - throw new TypeError(`unsupported format character '${format}'`) - } - - if (padded_count > 0) { - return is_left_align ? str.padEnd(padded_count) : str.padStart(padded_count) - } else { - return str - } - }) - - if (values.length) { - if (values.length === 1 && typeof values[0] === 'object' && values[0] !== null) { - // mapping - } else { - throw new TypeError('not all arguments converted during string formatting') - } - } - - return result -} diff --git a/sdks/nodejs/node_modules/argparse/lib/textwrap.js b/sdks/nodejs/node_modules/argparse/lib/textwrap.js deleted file mode 100644 index 23d51cd..0000000 --- a/sdks/nodejs/node_modules/argparse/lib/textwrap.js +++ /dev/null @@ -1,440 +0,0 @@ -// Partial port of python's argparse module, version 3.9.0 (only wrap and fill functions): -// https://github.com/python/cpython/blob/v3.9.0b4/Lib/textwrap.py - -'use strict' - -/* - * Text wrapping and filling. - */ - -// Copyright (C) 1999-2001 Gregory P. Ward. -// Copyright (C) 2002, 2003 Python Software Foundation. -// Copyright (C) 2020 argparse.js authors -// Originally written by Greg Ward - -// Hardcode the recognized whitespace characters to the US-ASCII -// whitespace characters. The main reason for doing this is that -// some Unicode spaces (like \u00a0) are non-breaking whitespaces. -// -// This less funky little regex just split on recognized spaces. E.g. -// "Hello there -- you goof-ball, use the -b option!" -// splits into -// Hello/ /there/ /--/ /you/ /goof-ball,/ /use/ /the/ /-b/ /option!/ -const wordsep_simple_re = /([\t\n\x0b\x0c\r ]+)/ - -class TextWrapper { - /* - * Object for wrapping/filling text. The public interface consists of - * the wrap() and fill() methods; the other methods are just there for - * subclasses to override in order to tweak the default behaviour. - * If you want to completely replace the main wrapping algorithm, - * you'll probably have to override _wrap_chunks(). - * - * Several instance attributes control various aspects of wrapping: - * width (default: 70) - * the maximum width of wrapped lines (unless break_long_words - * is false) - * initial_indent (default: "") - * string that will be prepended to the first line of wrapped - * output. Counts towards the line's width. - * subsequent_indent (default: "") - * string that will be prepended to all lines save the first - * of wrapped output; also counts towards each line's width. - * expand_tabs (default: true) - * Expand tabs in input text to spaces before further processing. - * Each tab will become 0 .. 'tabsize' spaces, depending on its position - * in its line. If false, each tab is treated as a single character. - * tabsize (default: 8) - * Expand tabs in input text to 0 .. 'tabsize' spaces, unless - * 'expand_tabs' is false. - * replace_whitespace (default: true) - * Replace all whitespace characters in the input text by spaces - * after tab expansion. Note that if expand_tabs is false and - * replace_whitespace is true, every tab will be converted to a - * single space! - * fix_sentence_endings (default: false) - * Ensure that sentence-ending punctuation is always followed - * by two spaces. Off by default because the algorithm is - * (unavoidably) imperfect. - * break_long_words (default: true) - * Break words longer than 'width'. If false, those words will not - * be broken, and some lines might be longer than 'width'. - * break_on_hyphens (default: true) - * Allow breaking hyphenated words. If true, wrapping will occur - * preferably on whitespaces and right after hyphens part of - * compound words. - * drop_whitespace (default: true) - * Drop leading and trailing whitespace from lines. - * max_lines (default: None) - * Truncate wrapped lines. - * placeholder (default: ' [...]') - * Append to the last line of truncated text. - */ - - constructor(options = {}) { - let { - width = 70, - initial_indent = '', - subsequent_indent = '', - expand_tabs = true, - replace_whitespace = true, - fix_sentence_endings = false, - break_long_words = true, - drop_whitespace = true, - break_on_hyphens = true, - tabsize = 8, - max_lines = undefined, - placeholder=' [...]' - } = options - - this.width = width - this.initial_indent = initial_indent - this.subsequent_indent = subsequent_indent - this.expand_tabs = expand_tabs - this.replace_whitespace = replace_whitespace - this.fix_sentence_endings = fix_sentence_endings - this.break_long_words = break_long_words - this.drop_whitespace = drop_whitespace - this.break_on_hyphens = break_on_hyphens - this.tabsize = tabsize - this.max_lines = max_lines - this.placeholder = placeholder - } - - - // -- Private methods ----------------------------------------------- - // (possibly useful for subclasses to override) - - _munge_whitespace(text) { - /* - * _munge_whitespace(text : string) -> string - * - * Munge whitespace in text: expand tabs and convert all other - * whitespace characters to spaces. Eg. " foo\\tbar\\n\\nbaz" - * becomes " foo bar baz". - */ - if (this.expand_tabs) { - text = text.replace(/\t/g, ' '.repeat(this.tabsize)) // not strictly correct in js - } - if (this.replace_whitespace) { - text = text.replace(/[\t\n\x0b\x0c\r]/g, ' ') - } - return text - } - - _split(text) { - /* - * _split(text : string) -> [string] - * - * Split the text to wrap into indivisible chunks. Chunks are - * not quite the same as words; see _wrap_chunks() for full - * details. As an example, the text - * Look, goof-ball -- use the -b option! - * breaks into the following chunks: - * 'Look,', ' ', 'goof-', 'ball', ' ', '--', ' ', - * 'use', ' ', 'the', ' ', '-b', ' ', 'option!' - * if break_on_hyphens is True, or in: - * 'Look,', ' ', 'goof-ball', ' ', '--', ' ', - * 'use', ' ', 'the', ' ', '-b', ' ', option!' - * otherwise. - */ - let chunks = text.split(wordsep_simple_re) - chunks = chunks.filter(Boolean) - return chunks - } - - _handle_long_word(reversed_chunks, cur_line, cur_len, width) { - /* - * _handle_long_word(chunks : [string], - * cur_line : [string], - * cur_len : int, width : int) - * - * Handle a chunk of text (most likely a word, not whitespace) that - * is too long to fit in any line. - */ - // Figure out when indent is larger than the specified width, and make - // sure at least one character is stripped off on every pass - let space_left - if (width < 1) { - space_left = 1 - } else { - space_left = width - cur_len - } - - // If we're allowed to break long words, then do so: put as much - // of the next chunk onto the current line as will fit. - if (this.break_long_words) { - cur_line.push(reversed_chunks[reversed_chunks.length - 1].slice(0, space_left)) - reversed_chunks[reversed_chunks.length - 1] = reversed_chunks[reversed_chunks.length - 1].slice(space_left) - - // Otherwise, we have to preserve the long word intact. Only add - // it to the current line if there's nothing already there -- - // that minimizes how much we violate the width constraint. - } else if (!cur_line) { - cur_line.push(...reversed_chunks.pop()) - } - - // If we're not allowed to break long words, and there's already - // text on the current line, do nothing. Next time through the - // main loop of _wrap_chunks(), we'll wind up here again, but - // cur_len will be zero, so the next line will be entirely - // devoted to the long word that we can't handle right now. - } - - _wrap_chunks(chunks) { - /* - * _wrap_chunks(chunks : [string]) -> [string] - * - * Wrap a sequence of text chunks and return a list of lines of - * length 'self.width' or less. (If 'break_long_words' is false, - * some lines may be longer than this.) Chunks correspond roughly - * to words and the whitespace between them: each chunk is - * indivisible (modulo 'break_long_words'), but a line break can - * come between any two chunks. Chunks should not have internal - * whitespace; ie. a chunk is either all whitespace or a "word". - * Whitespace chunks will be removed from the beginning and end of - * lines, but apart from that whitespace is preserved. - */ - let lines = [] - let indent - if (this.width <= 0) { - throw Error(`invalid width ${this.width} (must be > 0)`) - } - if (this.max_lines !== undefined) { - if (this.max_lines > 1) { - indent = this.subsequent_indent - } else { - indent = this.initial_indent - } - if (indent.length + this.placeholder.trimStart().length > this.width) { - throw Error('placeholder too large for max width') - } - } - - // Arrange in reverse order so items can be efficiently popped - // from a stack of chucks. - chunks = chunks.reverse() - - while (chunks.length > 0) { - - // Start the list of chunks that will make up the current line. - // cur_len is just the length of all the chunks in cur_line. - let cur_line = [] - let cur_len = 0 - - // Figure out which static string will prefix this line. - let indent - if (lines) { - indent = this.subsequent_indent - } else { - indent = this.initial_indent - } - - // Maximum width for this line. - let width = this.width - indent.length - - // First chunk on line is whitespace -- drop it, unless this - // is the very beginning of the text (ie. no lines started yet). - if (this.drop_whitespace && chunks[chunks.length - 1].trim() === '' && lines.length > 0) { - chunks.pop() - } - - while (chunks.length > 0) { - let l = chunks[chunks.length - 1].length - - // Can at least squeeze this chunk onto the current line. - if (cur_len + l <= width) { - cur_line.push(chunks.pop()) - cur_len += l - - // Nope, this line is full. - } else { - break - } - } - - // The current line is full, and the next chunk is too big to - // fit on *any* line (not just this one). - if (chunks.length && chunks[chunks.length - 1].length > width) { - this._handle_long_word(chunks, cur_line, cur_len, width) - cur_len = cur_line.map(l => l.length).reduce((a, b) => a + b, 0) - } - - // If the last chunk on this line is all whitespace, drop it. - if (this.drop_whitespace && cur_line.length > 0 && cur_line[cur_line.length - 1].trim() === '') { - cur_len -= cur_line[cur_line.length - 1].length - cur_line.pop() - } - - if (cur_line) { - if (this.max_lines === undefined || - lines.length + 1 < this.max_lines || - (chunks.length === 0 || - this.drop_whitespace && - chunks.length === 1 && - !chunks[0].trim()) && cur_len <= width) { - // Convert current line back to a string and store it in - // list of all lines (return value). - lines.push(indent + cur_line.join('')) - } else { - let had_break = false - while (cur_line) { - if (cur_line[cur_line.length - 1].trim() && - cur_len + this.placeholder.length <= width) { - cur_line.push(this.placeholder) - lines.push(indent + cur_line.join('')) - had_break = true - break - } - cur_len -= cur_line[-1].length - cur_line.pop() - } - if (!had_break) { - if (lines) { - let prev_line = lines[lines.length - 1].trimEnd() - if (prev_line.length + this.placeholder.length <= - this.width) { - lines[lines.length - 1] = prev_line + this.placeholder - break - } - } - lines.push(indent + this.placeholder.lstrip()) - } - break - } - } - } - - return lines - } - - _split_chunks(text) { - text = this._munge_whitespace(text) - return this._split(text) - } - - // -- Public interface ---------------------------------------------- - - wrap(text) { - /* - * wrap(text : string) -> [string] - * - * Reformat the single paragraph in 'text' so it fits in lines of - * no more than 'self.width' columns, and return a list of wrapped - * lines. Tabs in 'text' are expanded with string.expandtabs(), - * and all other whitespace characters (including newline) are - * converted to space. - */ - let chunks = this._split_chunks(text) - // not implemented in js - //if (this.fix_sentence_endings) { - // this._fix_sentence_endings(chunks) - //} - return this._wrap_chunks(chunks) - } - - fill(text) { - /* - * fill(text : string) -> string - * - * Reformat the single paragraph in 'text' to fit in lines of no - * more than 'self.width' columns, and return a new string - * containing the entire wrapped paragraph. - */ - return this.wrap(text).join('\n') - } -} - - -// -- Convenience interface --------------------------------------------- - -function wrap(text, options = {}) { - /* - * Wrap a single paragraph of text, returning a list of wrapped lines. - * - * Reformat the single paragraph in 'text' so it fits in lines of no - * more than 'width' columns, and return a list of wrapped lines. By - * default, tabs in 'text' are expanded with string.expandtabs(), and - * all other whitespace characters (including newline) are converted to - * space. See TextWrapper class for available keyword args to customize - * wrapping behaviour. - */ - let { width = 70, ...kwargs } = options - let w = new TextWrapper(Object.assign({ width }, kwargs)) - return w.wrap(text) -} - -function fill(text, options = {}) { - /* - * Fill a single paragraph of text, returning a new string. - * - * Reformat the single paragraph in 'text' to fit in lines of no more - * than 'width' columns, and return a new string containing the entire - * wrapped paragraph. As with wrap(), tabs are expanded and other - * whitespace characters converted to space. See TextWrapper class for - * available keyword args to customize wrapping behaviour. - */ - let { width = 70, ...kwargs } = options - let w = new TextWrapper(Object.assign({ width }, kwargs)) - return w.fill(text) -} - -// -- Loosely related functionality ------------------------------------- - -let _whitespace_only_re = /^[ \t]+$/mg -let _leading_whitespace_re = /(^[ \t]*)(?:[^ \t\n])/mg - -function dedent(text) { - /* - * Remove any common leading whitespace from every line in `text`. - * - * This can be used to make triple-quoted strings line up with the left - * edge of the display, while still presenting them in the source code - * in indented form. - * - * Note that tabs and spaces are both treated as whitespace, but they - * are not equal: the lines " hello" and "\\thello" are - * considered to have no common leading whitespace. - * - * Entirely blank lines are normalized to a newline character. - */ - // Look for the longest leading string of spaces and tabs common to - // all lines. - let margin = undefined - text = text.replace(_whitespace_only_re, '') - let indents = text.match(_leading_whitespace_re) || [] - for (let indent of indents) { - indent = indent.slice(0, -1) - - if (margin === undefined) { - margin = indent - - // Current line more deeply indented than previous winner: - // no change (previous winner is still on top). - } else if (indent.startsWith(margin)) { - // pass - - // Current line consistent with and no deeper than previous winner: - // it's the new winner. - } else if (margin.startsWith(indent)) { - margin = indent - - // Find the largest common whitespace between current line and previous - // winner. - } else { - for (let i = 0; i < margin.length && i < indent.length; i++) { - if (margin[i] !== indent[i]) { - margin = margin.slice(0, i) - break - } - } - } - } - - if (margin) { - text = text.replace(new RegExp('^' + margin, 'mg'), '') - } - return text -} - -module.exports = { wrap, fill, dedent } diff --git a/sdks/nodejs/node_modules/argparse/package.json b/sdks/nodejs/node_modules/argparse/package.json deleted file mode 100644 index 647d2af..0000000 --- a/sdks/nodejs/node_modules/argparse/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "argparse", - "description": "CLI arguments parser. Native port of python's argparse.", - "version": "2.0.1", - "keywords": [ - "cli", - "parser", - "argparse", - "option", - "args" - ], - "main": "argparse.js", - "files": [ - "argparse.js", - "lib/" - ], - "license": "Python-2.0", - "repository": "nodeca/argparse", - "scripts": { - "lint": "eslint .", - "test": "npm run lint && nyc mocha", - "coverage": "npm run test && nyc report --reporter html" - }, - "devDependencies": { - "@babel/eslint-parser": "^7.11.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", - "eslint": "^7.5.0", - "mocha": "^8.0.1", - "nyc": "^15.1.0" - } -} diff --git a/sdks/nodejs/node_modules/before-after-hook/LICENSE b/sdks/nodejs/node_modules/before-after-hook/LICENSE deleted file mode 100644 index 225063c..0000000 --- a/sdks/nodejs/node_modules/before-after-hook/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018 Gregor Martynus and other contributors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/sdks/nodejs/node_modules/before-after-hook/README.md b/sdks/nodejs/node_modules/before-after-hook/README.md deleted file mode 100644 index 6e67ffa..0000000 --- a/sdks/nodejs/node_modules/before-after-hook/README.md +++ /dev/null @@ -1,679 +0,0 @@ -# before-after-hook - -> asynchronous hooks for internal functionality - -[![npm downloads](https://img.shields.io/npm/dw/before-after-hook.svg)](https://www.npmjs.com/package/before-after-hook) -[![Test](https://github.com/gr2m/before-after-hook/actions/workflows/test.yml/badge.svg)](https://github.com/gr2m/before-after-hook/actions/workflows/test.yml) - -## Usage - - - - - - -
-Browsers - -Load before-after-hook directly from cdn.skypack.dev - -```html - -``` - -
-Node - - -Install with npm install before-after-hook - -```js -import Hook from "before-after-hook"; -``` - -
- -### Singular hook - -```js -// instantiate singular hook API -const hook = new Hook.Singular(); - -// Create a hook -async function getData(options) { - try { - const result = await hook(fetchFromDatabase, options); - return handleData(result); - } catch (error) { - return handleGetError(error); - } -} - -// register before/error/after hooks. -// The methods can be async or return a promise -hook.before(beforeHook); -hook.error(errorHook); -hook.after(afterHook); - -getData({ id: 123 }); -``` - -### Hook collection - -```js -// instantiate hook collection API -const hookCollection = new Hook.Collection(); - -// Create a hook -async function getData(options) { - try { - const result = await hookCollection("get", fetchFromDatabase, options); - return handleData(result); - } catch (error) { - return handleGetError(error); - } -} - -// register before/error/after hooks. -// The methods can be async or return a promise -hookCollection.before("get", beforeHook); -hookCollection.error("get", errorHook); -hookCollection.after("get", afterHook); - -getData({ id: 123 }); -``` - -### Hook.Singular vs Hook.Collection - -There's no fundamental difference between the `Hook.Singular` and `Hook.Collection` hooks except for the fact that a hook from a collection requires you to pass along the name. Therefore the following explanation applies to both code snippets as described above. - -The methods are executed in the following order - -1. `beforeHook` -2. `fetchFromDatabase` -3. `afterHook` -4. `handleData` - -`beforeHook` can mutate `options` before it’s passed to `fetchFromDatabase`. - -If an error is thrown in `beforeHook` or `fetchFromDatabase` then `errorHook` is -called next. - -If `afterHook` throws an error then `handleGetError` is called instead -of `handleData`. - -If `errorHook` throws an error then `handleGetError` is called next, otherwise -`afterHook` and `handleData`. - -You can also use `hook.wrap` to achieve the same thing as shown above (collection example): - -```js -hookCollection.wrap("get", async (getData, options) => { - await beforeHook(options); - - try { - const result = getData(options); - } catch (error) { - await errorHook(error, options); - } - - await afterHook(result, options); -}); -``` - -## API - -- [Singular Hook Constructor](#singular-hook-api) -- [Hook Collection Constructor](#hook-collection-api) - -## Singular hook API - -- [Singular constructor](#singular-constructor) -- [hook.api](#singular-api) -- [hook()](#singular-api) -- [hook.before()](#singular-api) -- [hook.error()](#singular-api) -- [hook.after()](#singular-api) -- [hook.wrap()](#singular-api) -- [hook.remove()](#singular-api) - -### Singular constructor - -The `Hook.Singular` constructor has no options and returns a `hook` instance with the -methods below: - -```js -const hook = new Hook.Singular(); -``` - -Using the singular hook is recommended for [TypeScript](#typescript) - -### Singular API - -The singular hook is a reference to a single hook. This means that there's no need to pass along any identifier (such as a `name` as can be seen in the [Hook.Collection API](#hookcollectionapi)). - -The API of a singular hook is exactly the same as a collection hook and we therefore suggest you read the [Hook.Collection API](#hookcollectionapi) and leave out any use of the `name` argument. Just skip it like described in this example: - -```js -const hook = new Hook.Singular(); - -// good -hook.before(beforeHook); -hook.after(afterHook); -hook(fetchFromDatabase, options); - -// bad -hook.before("get", beforeHook); -hook.after("get", afterHook); -hook("get", fetchFromDatabase, options); -``` - -## Hook collection API - -- [Collection constructor](#collection-constructor) -- [hookCollection.api](#hookcollectionapi) -- [hookCollection()](#hookcollection) -- [hookCollection.before()](#hookcollectionbefore) -- [hookCollection.error()](#hookcollectionerror) -- [hookCollection.after()](#hookcollectionafter) -- [hookCollection.wrap()](#hookcollectionwrap) -- [hookCollection.remove()](#hookcollectionremove) - -### Collection constructor - -The `Hook.Collection` constructor has no options and returns a `hookCollection` instance with the -methods below - -```js -const hookCollection = new Hook.Collection(); -``` - -### hookCollection.api - -Use the `api` property to return the public API: - -- [hookCollection.before()](#hookcollectionbefore) -- [hookCollection.after()](#hookcollectionafter) -- [hookCollection.error()](#hookcollectionerror) -- [hookCollection.wrap()](#hookcollectionwrap) -- [hookCollection.remove()](#hookcollectionremove) - -That way you don’t need to expose the [hookCollection()](#hookcollection) method to consumers of your library - -### hookCollection() - -Invoke before and after hooks. Returns a promise. - -```js -hookCollection(nameOrNames, method /*, options */); -``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ArgumentTypeDescriptionRequired
nameString or Array of StringsHook name, for example 'save'. Or an array of names, see example below.Yes
methodFunctionCallback to be executed after all before hooks finished execution successfully. options is passed as first argumentYes
optionsObjectWill be passed to all before hooks as reference, so they can mutate itNo, defaults to empty object ({})
- -Resolves with whatever `method` returns or resolves with. -Rejects with error that is thrown or rejected with by - -1. Any of the before hooks, whichever rejects / throws first -2. `method` -3. Any of the after hooks, whichever rejects / throws first - -Simple Example - -```js -hookCollection( - "save", - (record) => { - return store.save(record); - }, - record -); -// shorter: hookCollection('save', store.save, record) - -hookCollection.before("save", function addTimestamps(record) { - const now = new Date().toISOString(); - if (record.createdAt) { - record.updatedAt = now; - } else { - record.createdAt = now; - } -}); -``` - -Example defining multiple hooks at once. - -```js -hookCollection( - ["add", "save"], - (record) => { - return store.save(record); - }, - record -); - -hookCollection.before("add", function addTimestamps(record) { - if (!record.type) { - throw new Error("type property is required"); - } -}); - -hookCollection.before("save", function addTimestamps(record) { - if (!record.type) { - throw new Error("type property is required"); - } -}); -``` - -Defining multiple hooks is helpful if you have similar methods for which you want to define separate hooks, but also an additional hook that gets called for all at once. The example above is equal to this: - -```js -hookCollection( - "add", - (record) => { - return hookCollection( - "save", - (record) => { - return store.save(record); - }, - record - ); - }, - record -); -``` - -### hookCollection.before() - -Add before hook for given name. - -```js -hookCollection.before(name, method); -``` - - - - - - - - - - - - - - - - - - - - - - -
ArgumentTypeDescriptionRequired
nameStringHook name, for example 'save'Yes
methodFunction - Executed before the wrapped method. Called with the hook’s - options argument. Before hooks can mutate the passed options - before they are passed to the wrapped method. - Yes
- -Example - -```js -hookCollection.before("save", function validate(record) { - if (!record.name) { - throw new Error("name property is required"); - } -}); -``` - -### hookCollection.error() - -Add error hook for given name. - -```js -hookCollection.error(name, method); -``` - - - - - - - - - - - - - - - - - - - - - - -
ArgumentTypeDescriptionRequired
nameStringHook name, for example 'save'Yes
methodFunction - Executed when an error occurred in either the wrapped method or a - before hook. Called with the thrown error - and the hook’s options argument. The first method - which does not throw an error will set the result that the after hook - methods will receive. - Yes
- -Example - -```js -hookCollection.error("save", (error, options) => { - if (error.ignore) return; - throw error; -}); -``` - -### hookCollection.after() - -Add after hook for given name. - -```js -hookCollection.after(name, method); -``` - - - - - - - - - - - - - - - - - - - - - - -
ArgumentTypeDescriptionRequired
nameStringHook name, for example 'save'Yes
methodFunction - Executed after wrapped method. Called with what the wrapped method - resolves with the hook’s options argument. - Yes
- -Example - -```js -hookCollection.after("save", (result, options) => { - if (result.updatedAt) { - app.emit("update", result); - } else { - app.emit("create", result); - } -}); -``` - -### hookCollection.wrap() - -Add wrap hook for given name. - -```js -hookCollection.wrap(name, method); -``` - - - - - - - - - - - - - - - - - - - - - - -
ArgumentTypeDescriptionRequired
nameStringHook name, for example 'save'Yes
methodFunction - Receives both the wrapped method and the passed options as arguments so it can add logic before and after the wrapped method, it can handle errors and even replace the wrapped method altogether - Yes
- -Example - -```js -hookCollection.wrap("save", async (saveInDatabase, options) => { - if (!record.name) { - throw new Error("name property is required"); - } - - try { - const result = await saveInDatabase(options); - - if (result.updatedAt) { - app.emit("update", result); - } else { - app.emit("create", result); - } - - return result; - } catch (error) { - if (error.ignore) return; - throw error; - } -}); -``` - -See also: [Test mock example](examples/test-mock-example.md) - -### hookCollection.remove() - -Removes hook for given name. - -```js -hookCollection.remove(name, hookMethod); -``` - - - - - - - - - - - - - - - - - - - - - - -
ArgumentTypeDescriptionRequired
nameStringHook name, for example 'save'Yes
beforeHookMethodFunction - Same function that was previously passed to hookCollection.before(), hookCollection.error(), hookCollection.after() or hookCollection.wrap() - Yes
- -Example - -```js -hookCollection.remove("save", validateRecord); -``` - -## TypeScript - -This library contains type definitions for TypeScript. - -### Type support for `Singular`: - -```ts -import Hook from "before-after-hook"; - -type TOptions = { foo: string }; // type for options -type TResult = { bar: number }; // type for result -type TError = Error; // type for error - -const hook = new Hook.Singular(); - -hook.before((options) => { - // `options.foo` has `string` type - - // not allowed - options.foo = 42; - - // allowed - options.foo = "Forty-Two"; -}); - -const hookedMethod = hook( - (options) => { - // `options.foo` has `string` type - - // not allowed, because it does not satisfy the `R` type - return { foo: 42 }; - - // allowed - return { bar: 42 }; - }, - { foo: "Forty-Two" } -); -``` - -You can choose not to pass the types for options, result or error. So, these are completely valid: - -```ts -const hook = new Hook.Singular(); -const hook = new Hook.Singular(); -const hook = new Hook.Singular(); -``` - -In these cases, the omitted types will implicitly be `any`. - -### Type support for `Collection`: - -`Collection` also has strict type support. You can use it like this: - -```ts -import { Hook } from "before-after-hook"; - -type HooksType = { - add: { - Options: { type: string }; - Result: { id: number }; - Error: Error; - }; - save: { - Options: { type: string }; - Result: { id: number }; - }; - read: { - Options: { id: number; foo: number }; - }; - destroy: { - Options: { id: number; foo: string }; - }; -}; - -const hooks = new Hook.Collection(); - -hooks.before("destroy", (options) => { - // `options.id` has `number` type -}); - -hooks.error("add", (err, options) => { - // `options.type` has `string` type - // `err` is `instanceof Error` -}); - -hooks.error("save", (err, options) => { - // `options.type` has `string` type - // `err` has type `any` -}); - -hooks.after("save", (result, options) => { - // `options.type` has `string` type - // `result.id` has `number` type -}); -``` - -You can choose not to pass the types altogether. In that case, everything will implicitly be `any`: - -```ts -const hook = new Hook.Collection(); -``` - -Alternative imports: - -```ts -import { Singular, Collection } from "before-after-hook"; - -const hook = new Singular(); -const hooks = new Collection(); -``` - -## Upgrading to 1.4 - -Since version 1.4 the `Hook` constructor has been deprecated in favor of returning `Hook.Singular` in an upcoming breaking release. - -Version 1.4 is still 100% backwards-compatible, but if you want to continue using hook collections, we recommend using the `Hook.Collection` constructor instead before the next release. - -For even more details, check out [the PR](https://github.com/gr2m/before-after-hook/pull/52). - -## See also - -If `before-after-hook` is not for you, have a look at one of these alternatives: - -- https://github.com/keystonejs/grappling-hook -- https://github.com/sebelga/promised-hooks -- https://github.com/bnoguchi/hooks-js -- https://github.com/cb1kenobi/hook-emitter - -## License - -[Apache 2.0](LICENSE) diff --git a/sdks/nodejs/node_modules/before-after-hook/index.d.ts b/sdks/nodejs/node_modules/before-after-hook/index.d.ts deleted file mode 100644 index 1f69f0a..0000000 --- a/sdks/nodejs/node_modules/before-after-hook/index.d.ts +++ /dev/null @@ -1,174 +0,0 @@ -type HookMethod = ( - options: Options -) => Result | Promise; - -type BeforeHook = (options: Options) => void | Promise; -type ErrorHook = ( - error: Error, - options: Options -) => unknown | Promise; -type AfterHook = ( - result: Result, - options: Options -) => void | Promise; -type WrapHook = ( - hookMethod: HookMethod, - options: Options -) => Result | Promise; - -type AnyHook = - | BeforeHook - | ErrorHook - | AfterHook - | WrapHook; - -type TypeStoreKey = "Options" | "Result" | "Error"; -type TypeStore = { [key in TypeStoreKey]?: any }; -type GetType< - TStore extends TypeStore, - TKey extends TypeStoreKey -> = TKey extends keyof TStore ? TStore[TKey] : any; - -export interface HookCollection< - HooksType extends Record = Record< - string, - { Options: any; Result: any; Error: any } - >, - HookName extends keyof HooksType = keyof HooksType -> { - /** - * Invoke before and after hooks - */ - ( - name: Name | Name[], - hookMethod: HookMethod< - GetType, - GetType - >, - options?: GetType - ): Promise>; - /** - * Add `before` hook for given `name` - */ - before( - name: Name, - beforeHook: BeforeHook> - ): void; - /** - * Add `error` hook for given `name` - */ - error( - name: Name, - errorHook: ErrorHook< - GetType, - GetType - > - ): void; - /** - * Add `after` hook for given `name` - */ - after( - name: Name, - afterHook: AfterHook< - GetType, - GetType - > - ): void; - /** - * Add `wrap` hook for given `name` - */ - wrap( - name: Name, - wrapHook: WrapHook< - GetType, - GetType - > - ): void; - /** - * Remove added hook for given `name` - */ - remove( - name: Name, - hook: AnyHook< - GetType, - GetType, - GetType - > - ): void; - /** - * Public API - */ - api: Pick< - HookCollection, - "before" | "error" | "after" | "wrap" | "remove" - >; -} - -export interface HookSingular { - /** - * Invoke before and after hooks - */ - (hookMethod: HookMethod, options?: Options): Promise; - /** - * Add `before` hook - */ - before(beforeHook: BeforeHook): void; - /** - * Add `error` hook - */ - error(errorHook: ErrorHook): void; - /** - * Add `after` hook - */ - after(afterHook: AfterHook): void; - /** - * Add `wrap` hook - */ - wrap(wrapHook: WrapHook): void; - /** - * Remove added hook - */ - remove(hook: AnyHook): void; - /** - * Public API - */ - api: Pick< - HookSingular, - "before" | "error" | "after" | "wrap" | "remove" - >; -} - -type Collection = new < - HooksType extends Record = Record ->() => HookCollection; -type Singular = new < - Options = unknown, - Result = unknown, - Error = unknown ->() => HookSingular; - -interface Hook { - /** - * Creates a collection of hooks - */ - Collection: Collection; - - /** - * Creates a nameless hook that supports strict typings - */ - Singular: Singular; -} - -declare const Hook: { - /** - * Creates a collection of hooks - */ - Collection: Collection; - - /** - * Creates a nameless hook that supports strict typings - */ - Singular: Singular; -}; - -export default Hook; diff --git a/sdks/nodejs/node_modules/before-after-hook/index.js b/sdks/nodejs/node_modules/before-after-hook/index.js deleted file mode 100644 index 444f99d..0000000 --- a/sdks/nodejs/node_modules/before-after-hook/index.js +++ /dev/null @@ -1,45 +0,0 @@ -// @ts-check - -import { register } from "./lib/register.js"; -import { addHook } from "./lib/add.js"; -import { removeHook } from "./lib/remove.js"; - -// bind with array of arguments: https://stackoverflow.com/a/21792913 -const bind = Function.bind; -const bindable = bind.bind(bind); - -function bindApi(hook, state, name) { - const removeHookRef = bindable(removeHook, null).apply( - null, - name ? [state, name] : [state] - ); - hook.api = { remove: removeHookRef }; - hook.remove = removeHookRef; - ["before", "error", "after", "wrap"].forEach((kind) => { - const args = name ? [state, kind, name] : [state, kind]; - hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args); - }); -} - -function Singular() { - const singularHookName = Symbol("Singular"); - const singularHookState = { - registry: {}, - }; - const singularHook = register.bind(null, singularHookState, singularHookName); - bindApi(singularHook, singularHookState, singularHookName); - return singularHook; -} - -function Collection() { - const state = { - registry: {}, - }; - - const hook = register.bind(null, state); - bindApi(hook, state); - - return hook; -} - -export default { Singular, Collection }; diff --git a/sdks/nodejs/node_modules/before-after-hook/lib/add.js b/sdks/nodejs/node_modules/before-after-hook/lib/add.js deleted file mode 100644 index f19ee71..0000000 --- a/sdks/nodejs/node_modules/before-after-hook/lib/add.js +++ /dev/null @@ -1,46 +0,0 @@ -// @ts-check - -export function addHook(state, kind, name, hook) { - const orig = hook; - if (!state.registry[name]) { - state.registry[name] = []; - } - - if (kind === "before") { - hook = (method, options) => { - return Promise.resolve() - .then(orig.bind(null, options)) - .then(method.bind(null, options)); - }; - } - - if (kind === "after") { - hook = (method, options) => { - let result; - return Promise.resolve() - .then(method.bind(null, options)) - .then((result_) => { - result = result_; - return orig(result, options); - }) - .then(() => { - return result; - }); - }; - } - - if (kind === "error") { - hook = (method, options) => { - return Promise.resolve() - .then(method.bind(null, options)) - .catch((error) => { - return orig(error, options); - }); - }; - } - - state.registry[name].push({ - hook: hook, - orig: orig, - }); -} diff --git a/sdks/nodejs/node_modules/before-after-hook/lib/register.js b/sdks/nodejs/node_modules/before-after-hook/lib/register.js deleted file mode 100644 index cc4e301..0000000 --- a/sdks/nodejs/node_modules/before-after-hook/lib/register.js +++ /dev/null @@ -1,27 +0,0 @@ -// @ts-check - -export function register(state, name, method, options) { - if (typeof method !== "function") { - throw new Error("method for before hook must be a function"); - } - - if (!options) { - options = {}; - } - - if (Array.isArray(name)) { - return name.reverse().reduce((callback, name) => { - return register.bind(null, state, name, callback, options); - }, method)(); - } - - return Promise.resolve().then(() => { - if (!state.registry[name]) { - return method(options); - } - - return state.registry[name].reduce((method, registered) => { - return registered.hook.bind(null, method, options); - }, method)(); - }); -} diff --git a/sdks/nodejs/node_modules/before-after-hook/lib/remove.js b/sdks/nodejs/node_modules/before-after-hook/lib/remove.js deleted file mode 100644 index e844890..0000000 --- a/sdks/nodejs/node_modules/before-after-hook/lib/remove.js +++ /dev/null @@ -1,19 +0,0 @@ -// @ts-check - -export function removeHook(state, name, method) { - if (!state.registry[name]) { - return; - } - - const index = state.registry[name] - .map((registered) => { - return registered.orig; - }) - .indexOf(method); - - if (index === -1) { - return; - } - - state.registry[name].splice(index, 1); -} diff --git a/sdks/nodejs/node_modules/before-after-hook/package.json b/sdks/nodejs/node_modules/before-after-hook/package.json deleted file mode 100644 index 07bf873..0000000 --- a/sdks/nodejs/node_modules/before-after-hook/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "before-after-hook", - "type": "module", - "version": "4.0.0", - "description": "asynchronous before/error/after hooks for internal functionality", - "exports": "./index.js", - "types": "./index.d.ts", - "files": [ - "index.js", - "index.d.ts", - "lib" - ], - "scripts": { - "test": "npm run test:code && npm run test:tsc && npm run test:tsd && npm run lint", - "test:code": "c8 --100 --clean node --test", - "test:deno": "deno test --no-check", - "test:tsc": "tsc --allowJs --noEmit --esModuleInterop --skipLibCheck --lib es2020 index.js", - "test:tsd": "tsd", - "lint": "prettier --check \"*.{js,json,ts,md}\" \"test//*.{js,json,ts,md}\" \".github/**/*.yml\"", - "lint:fix": "prettier --write \"*.{js,json,ts,md}\" \"test//*.{js,json,ts,md}\" \".github/**/*.yml\"", - "postcoverage": "open-cli coverage/index.html" - }, - "repository": "github:gr2m/before-after-hook", - "keywords": [ - "hook", - "hooks", - "api" - ], - "author": "Gregor Martynus", - "license": "Apache-2.0", - "devDependencies": { - "@types/node": "^22.15.17", - "c8": "^10.1.3", - "prettier": "^2.0.0", - "tsd": "^0.24.1", - "typescript": "^4.8.4" - }, - "release": { - "branches": [ - "+([0-9]).x", - "main", - "next", - { - "name": "beta", - "prerelease": true - } - ] - }, - "renovate": { - "extends": [ - "github>gr2m/.github" - ] - } -} diff --git a/sdks/nodejs/node_modules/chardet/LICENSE b/sdks/nodejs/node_modules/chardet/LICENSE deleted file mode 100644 index e930d96..0000000 --- a/sdks/nodejs/node_modules/chardet/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2024 Dmitry Shirokov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/chardet/README.md b/sdks/nodejs/node_modules/chardet/README.md deleted file mode 100644 index 21171e6..0000000 --- a/sdks/nodejs/node_modules/chardet/README.md +++ /dev/null @@ -1,121 +0,0 @@ -# chardet - -_Chardet_ is a character detection module written in pure JavaScript (TypeScript). Module uses occurrence analysis to determine the most probable encoding. - -- Packed size is only **22 KB** -- Works in all environments: Node / Browser / Native -- Works on all platforms: Linux / Mac / Windows -- No dependencies -- No native code / bindings -- 100% written in TypeScript -- Extensive code coverage - -## Installation - -``` -npm i chardet -``` - -## Usage - -To return the encoding with the highest confidence: - -```javascript -import chardet from 'chardet'; - -const encoding = chardet.detect(Buffer.from('hello there!')); -// or -const encoding = await chardet.detectFile('/path/to/file'); -// or -const encoding = chardet.detectFileSync('/path/to/file'); -``` - -To return the full list of possible encodings use `analyse` method. - -```javascript -import chardet from 'chardet'; -chardet.analyse(Buffer.from('hello there!')); -``` - -Returned value is an array of objects sorted by confidence value in descending order - -```javascript -[ - { confidence: 90, name: 'UTF-8' }, - { confidence: 20, name: 'windows-1252', lang: 'fr' }, -]; -``` - -In browser, you can use [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) instead of the `Buffer`: - -```javascript -import chardet from 'chardet'; -chardet.analyse(new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0x6f])); -``` - -## Working with large data sets - -Sometimes, when data set is huge and you want to optimize performance (with a trade off of less accuracy), -you can sample only the first N bytes of the buffer: - -```javascript -const encoding = await chardet.detectFile('/path/to/file', { sampleSize: 32 }); -``` - -You can also specify where to begin reading from in the buffer: - -```javascript -const encoding = await chardet.detectFile('/path/to/file', { - sampleSize: 32, - offset: 128, -}); -``` - -## Working with strings - -In both Node.js and browsers, all strings in memory are represented in UTF-16 encoding. This is a fundamental aspect of the JavaScript language specification. Therefore, you cannot use plain strings directly as input for `chardet.analyse()` or `chardet.detect()`. Instead, you need the original string data in the form of a Buffer or Uint8Array. - -In other words, if you receive a piece of data over the network and want to detect its encoding, use the original data payload, not its string representation. By the time you convert data to a string, it will be in UTF-16 encoding. - -Note on [TextEncoder](https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder/TextEncoder): By default, it returns a UTF-8 encoded buffer, which means the buffer will not be in the original encoding of the string. - -## Supported Encodings: - -- UTF-8 -- UTF-16 LE -- UTF-16 BE -- UTF-32 LE -- UTF-32 BE -- ISO-2022-JP -- ISO-2022-KR -- ISO-2022-CN -- Shift_JIS -- Big5 -- EUC-JP -- EUC-KR -- GB18030 -- ISO-8859-1 -- ISO-8859-2 -- ISO-8859-5 -- ISO-8859-6 -- ISO-8859-7 -- ISO-8859-8 -- ISO-8859-9 -- windows-1250 -- windows-1251 -- windows-1252 -- windows-1253 -- windows-1254 -- windows-1255 -- windows-1256 -- KOI8-R - -Currently only these encodings are supported. - -## TypeScript? - -Yes. Type definitions are included. - -### References - -- ICU project http://site.icu-project.org/ diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/ascii.d.ts b/sdks/nodejs/node_modules/chardet/lib/encoding/ascii.d.ts deleted file mode 100644 index b8cc38e..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/ascii.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { Context, Recogniser } from '.'; -import { type EncodingName, type Match } from '../match'; -export default class Ascii implements Recogniser { - name(): EncodingName; - match(det: Context): Match | null; -} diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/ascii.js b/sdks/nodejs/node_modules/chardet/lib/encoding/ascii.js deleted file mode 100644 index 53b728b..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/ascii.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const match_1 = __importDefault(require("../match")); -class Ascii { - name() { - return 'ASCII'; - } - match(det) { - const input = det.rawInput; - for (let i = 0; i < det.rawLen; i++) { - const b = input[i]; - if (b < 32 || b > 126) { - return (0, match_1.default)(det, this, 0); - } - } - return (0, match_1.default)(det, this, 100); - } -} -exports.default = Ascii; -//# sourceMappingURL=ascii.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/ascii.js.map b/sdks/nodejs/node_modules/chardet/lib/encoding/ascii.js.map deleted file mode 100644 index 4d657f4..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/ascii.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ascii.js","sourceRoot":"","sources":["../../src/encoding/ascii.ts"],"names":[],"mappings":";;;;;AACA,qDAAgE;AAEhE,MAAqB,KAAK;IACxB,IAAI;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,GAAY;QAChB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;gBACtB,OAAO,IAAA,eAAK,EAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,IAAA,eAAK,EAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;CACF;AAjBD,wBAiBC"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/index.d.ts b/sdks/nodejs/node_modules/chardet/lib/encoding/index.d.ts deleted file mode 100644 index 3542668..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/index.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { EncodingName, Match } from '../match'; -export interface Recogniser { - match(input: Context): Match | null; - name(input?: Context): EncodingName; - language?(): string | undefined; -} -export interface Context { - byteStats: number[]; - c1Bytes: boolean; - rawInput: Uint8Array; - rawLen: number; - inputBytes: Uint8Array; - inputLen: number; -} diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/index.js b/sdks/nodejs/node_modules/chardet/lib/encoding/index.js deleted file mode 100644 index aa219d8..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/index.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/index.js.map b/sdks/nodejs/node_modules/chardet/lib/encoding/index.js.map deleted file mode 100644 index c598beb..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/encoding/index.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/iso2022.d.ts b/sdks/nodejs/node_modules/chardet/lib/encoding/iso2022.d.ts deleted file mode 100644 index 792ce2d..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/iso2022.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { Context, Recogniser } from '.'; -import { type Match, type EncodingName } from '../match'; -declare class ISO_2022 implements Recogniser { - escapeSequences: number[][]; - name(): EncodingName; - match(det: Context): Match | null; -} -export declare class ISO_2022_JP extends ISO_2022 { - name(): EncodingName; - language(): string; - escapeSequences: number[][]; -} -export declare class ISO_2022_KR extends ISO_2022 { - name(): EncodingName; - language(): string; - escapeSequences: number[][]; -} -export declare class ISO_2022_CN extends ISO_2022 { - name(): EncodingName; - language(): string; - escapeSequences: number[][]; -} -export {}; diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/iso2022.js b/sdks/nodejs/node_modules/chardet/lib/encoding/iso2022.js deleted file mode 100644 index 26e27ce..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/iso2022.js +++ /dev/null @@ -1,114 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ISO_2022_CN = exports.ISO_2022_KR = exports.ISO_2022_JP = void 0; -const match_1 = __importDefault(require("../match")); -class ISO_2022 { - constructor() { - this.escapeSequences = []; - } - name() { - return 'ISO_2022'; - } - match(det) { - let i, j; - let escN; - let hits = 0; - let misses = 0; - let shifts = 0; - let confidence; - const text = det.inputBytes; - const textLen = det.inputLen; - scanInput: for (i = 0; i < textLen; i++) { - if (text[i] == 0x1b) { - checkEscapes: for (escN = 0; escN < this.escapeSequences.length; escN++) { - const seq = this.escapeSequences[escN]; - if (textLen - i < seq.length) - continue checkEscapes; - for (j = 1; j < seq.length; j++) - if (seq[j] != text[i + j]) - continue checkEscapes; - hits++; - i += seq.length - 1; - continue scanInput; - } - misses++; - } - if (text[i] == 0x0e || text[i] == 0x0f) - shifts++; - } - if (hits == 0) - return null; - confidence = (100 * hits - 100 * misses) / (hits + misses); - if (hits + shifts < 5) - confidence -= (5 - (hits + shifts)) * 10; - return confidence <= 0 ? null : (0, match_1.default)(det, this, confidence); - } -} -class ISO_2022_JP extends ISO_2022 { - constructor() { - super(...arguments); - this.escapeSequences = [ - [0x1b, 0x24, 0x28, 0x43], - [0x1b, 0x24, 0x28, 0x44], - [0x1b, 0x24, 0x40], - [0x1b, 0x24, 0x41], - [0x1b, 0x24, 0x42], - [0x1b, 0x26, 0x40], - [0x1b, 0x28, 0x42], - [0x1b, 0x28, 0x48], - [0x1b, 0x28, 0x49], - [0x1b, 0x28, 0x4a], - [0x1b, 0x2e, 0x41], - [0x1b, 0x2e, 0x46], - ]; - } - name() { - return 'ISO-2022-JP'; - } - language() { - return 'ja'; - } -} -exports.ISO_2022_JP = ISO_2022_JP; -class ISO_2022_KR extends ISO_2022 { - constructor() { - super(...arguments); - this.escapeSequences = [[0x1b, 0x24, 0x29, 0x43]]; - } - name() { - return 'ISO-2022-KR'; - } - language() { - return 'kr'; - } -} -exports.ISO_2022_KR = ISO_2022_KR; -class ISO_2022_CN extends ISO_2022 { - constructor() { - super(...arguments); - this.escapeSequences = [ - [0x1b, 0x24, 0x29, 0x41], - [0x1b, 0x24, 0x29, 0x47], - [0x1b, 0x24, 0x2a, 0x48], - [0x1b, 0x24, 0x29, 0x45], - [0x1b, 0x24, 0x2b, 0x49], - [0x1b, 0x24, 0x2b, 0x4a], - [0x1b, 0x24, 0x2b, 0x4b], - [0x1b, 0x24, 0x2b, 0x4c], - [0x1b, 0x24, 0x2b, 0x4d], - [0x1b, 0x4e], - [0x1b, 0x4f], - ]; - } - name() { - return 'ISO-2022-CN'; - } - language() { - return 'zh'; - } -} -exports.ISO_2022_CN = ISO_2022_CN; -//# sourceMappingURL=iso2022.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/iso2022.js.map b/sdks/nodejs/node_modules/chardet/lib/encoding/iso2022.js.map deleted file mode 100644 index 471eb9a..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/iso2022.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"iso2022.js","sourceRoot":"","sources":["../../src/encoding/iso2022.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAQhE,MAAM,QAAQ;IAAd;QACE,oBAAe,GAAe,EAAE,CAAC;IA0EnC,CAAC;IAxEC,IAAI;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,GAAY;QAchB,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,UAAU,CAAC;QAGf,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC;QAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC;QAE7B,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBACpB,YAAY,EAAE,KACZ,IAAI,GAAG,CAAC,EACR,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAClC,IAAI,EAAE,EACN,CAAC;oBACD,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;oBAEvC,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM;wBAAE,SAAS,YAAY,CAAC;oBAEpD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;wBAC7B,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;4BAAE,SAAS,YAAY,CAAC;oBAEnD,IAAI,EAAE,CAAC;oBACP,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;oBACpB,SAAS,SAAS,CAAC;gBACrB,CAAC;gBAED,MAAM,EAAE,CAAC;YACX,CAAC;YAGD,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI;gBAAE,MAAM,EAAE,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAQ3B,UAAU,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;QAK3D,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC;YAAE,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QAEhE,OAAO,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,eAAK,EAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/D,CAAC;CACF;AAED,MAAa,WAAY,SAAQ,QAAQ;IAAzC;;QASE,oBAAe,GAAG;YAChB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACxB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACxB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAClB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAClB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAClB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAClB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAClB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAClB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAClB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAClB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAClB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;SACnB,CAAC;IACJ,CAAC;IAtBC,IAAI;QACF,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;CAgBF;AAvBD,kCAuBC;AAED,MAAa,WAAY,SAAQ,QAAQ;IAAzC;;QAOE,oBAAe,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAPC,IAAI;QACF,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;CAEF;AARD,kCAQC;AAED,MAAa,WAAY,SAAQ,QAAQ;IAAzC;;QAOE,oBAAe,GAAG;YAChB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACxB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACxB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACxB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACxB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACxB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACxB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACxB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACxB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACxB,CAAC,IAAI,EAAE,IAAI,CAAC;YACZ,CAAC,IAAI,EAAE,IAAI,CAAC;SACb,CAAC;IACJ,CAAC;IAnBC,IAAI;QACF,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;CAcF;AApBD,kCAoBC"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/mbcs.d.ts b/sdks/nodejs/node_modules/chardet/lib/encoding/mbcs.d.ts deleted file mode 100644 index e932e12..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/mbcs.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import type { Context, Recogniser } from '.'; -import { type Match, type EncodingName } from '../match'; -declare class IteratedChar { - charValue: number; - index: number; - nextIndex: number; - error: boolean; - done: boolean; - constructor(); - reset(): void; - nextByte(det: Context): number; -} -declare class mbcs implements Recogniser { - commonChars: number[]; - name(): EncodingName; - match(det: Context): Match | null; - nextChar(_iter: IteratedChar, _det: Context): boolean; -} -export declare class sjis extends mbcs { - name(): EncodingName; - language(): string; - commonChars: number[]; - nextChar(iter: IteratedChar, det: Context): boolean; -} -export declare class big5 extends mbcs { - name(): EncodingName; - language(): string; - commonChars: number[]; - nextChar(iter: IteratedChar, det: Context): boolean; -} -declare function eucNextChar(iter: IteratedChar, det: Context): boolean; -export declare class euc_jp extends mbcs { - name(): EncodingName; - language(): string; - commonChars: number[]; - nextChar: typeof eucNextChar; -} -export declare class euc_kr extends mbcs { - name(): EncodingName; - language(): string; - commonChars: number[]; - nextChar: typeof eucNextChar; -} -export declare class gb_18030 extends mbcs { - name(): EncodingName; - language(): string; - nextChar(iter: IteratedChar, det: Context): boolean; - commonChars: number[]; -} -export {}; diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/mbcs.js b/sdks/nodejs/node_modules/chardet/lib/encoding/mbcs.js deleted file mode 100644 index 9524dfa..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/mbcs.js +++ /dev/null @@ -1,347 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.gb_18030 = exports.euc_kr = exports.euc_jp = exports.big5 = exports.sjis = void 0; -const match_1 = __importDefault(require("../match")); -function binarySearch(arr, searchValue) { - const find = (arr, searchValue, left, right) => { - if (right < left) - return -1; - const mid = Math.floor((left + right) >>> 1); - if (searchValue > arr[mid]) - return find(arr, searchValue, mid + 1, right); - if (searchValue < arr[mid]) - return find(arr, searchValue, left, mid - 1); - return mid; - }; - return find(arr, searchValue, 0, arr.length - 1); -} -class IteratedChar { - constructor() { - this.charValue = 0; - this.index = 0; - this.nextIndex = 0; - this.error = false; - this.done = false; - } - reset() { - this.charValue = 0; - this.index = -1; - this.nextIndex = 0; - this.error = false; - this.done = false; - } - nextByte(det) { - if (this.nextIndex >= det.rawLen) { - this.done = true; - return -1; - } - const byteValue = det.rawInput[this.nextIndex++] & 0x00ff; - return byteValue; - } -} -class mbcs { - constructor() { - this.commonChars = []; - } - name() { - return 'mbcs'; - } - match(det) { - let doubleByteCharCount = 0, commonCharCount = 0, badCharCount = 0, totalCharCount = 0, confidence = 0; - const iter = new IteratedChar(); - detectBlock: { - for (iter.reset(); this.nextChar(iter, det);) { - totalCharCount++; - if (iter.error) { - badCharCount++; - } - else { - const cv = iter.charValue & 0xffffffff; - if (cv > 0xff) { - doubleByteCharCount++; - if (this.commonChars != null) { - if (binarySearch(this.commonChars, cv) >= 0) { - commonCharCount++; - } - } - } - } - if (badCharCount >= 2 && badCharCount * 5 >= doubleByteCharCount) { - break detectBlock; - } - } - if (doubleByteCharCount <= 10 && badCharCount == 0) { - if (doubleByteCharCount == 0 && totalCharCount < 10) { - confidence = 0; - } - else { - confidence = 10; - } - break detectBlock; - } - if (doubleByteCharCount < 20 * badCharCount) { - confidence = 0; - break detectBlock; - } - if (this.commonChars == null) { - confidence = 30 + doubleByteCharCount - 20 * badCharCount; - if (confidence > 100) { - confidence = 100; - } - } - else { - const maxVal = Math.log(doubleByteCharCount / 4); - const scaleFactor = 90.0 / maxVal; - confidence = Math.floor(Math.log(commonCharCount + 1) * scaleFactor + 10); - confidence = Math.min(confidence, 100); - } - } - return confidence == 0 ? null : (0, match_1.default)(det, this, confidence); - } - nextChar(_iter, _det) { - return true; - } -} -class sjis extends mbcs { - constructor() { - super(...arguments); - this.commonChars = [ - 0x8140, 0x8141, 0x8142, 0x8145, 0x815b, 0x8169, 0x816a, 0x8175, 0x8176, - 0x82a0, 0x82a2, 0x82a4, 0x82a9, 0x82aa, 0x82ab, 0x82ad, 0x82af, 0x82b1, - 0x82b3, 0x82b5, 0x82b7, 0x82bd, 0x82be, 0x82c1, 0x82c4, 0x82c5, 0x82c6, - 0x82c8, 0x82c9, 0x82cc, 0x82cd, 0x82dc, 0x82e0, 0x82e7, 0x82e8, 0x82e9, - 0x82ea, 0x82f0, 0x82f1, 0x8341, 0x8343, 0x834e, 0x834f, 0x8358, 0x835e, - 0x8362, 0x8367, 0x8375, 0x8376, 0x8389, 0x838a, 0x838b, 0x838d, 0x8393, - 0x8e96, 0x93fa, 0x95aa, - ]; - } - name() { - return 'Shift_JIS'; - } - language() { - return 'ja'; - } - nextChar(iter, det) { - iter.index = iter.nextIndex; - iter.error = false; - const firstByte = (iter.charValue = iter.nextByte(det)); - if (firstByte < 0) - return false; - if (firstByte <= 0x7f || (firstByte > 0xa0 && firstByte <= 0xdf)) - return true; - const secondByte = iter.nextByte(det); - if (secondByte < 0) - return false; - iter.charValue = (firstByte << 8) | secondByte; - if (!((secondByte >= 0x40 && secondByte <= 0x7f) || - (secondByte >= 0x80 && secondByte <= 0xff))) { - iter.error = true; - } - return true; - } -} -exports.sjis = sjis; -class big5 extends mbcs { - constructor() { - super(...arguments); - this.commonChars = [ - 0xa140, 0xa141, 0xa142, 0xa143, 0xa147, 0xa149, 0xa175, 0xa176, 0xa440, - 0xa446, 0xa447, 0xa448, 0xa451, 0xa454, 0xa457, 0xa464, 0xa46a, 0xa46c, - 0xa477, 0xa4a3, 0xa4a4, 0xa4a7, 0xa4c1, 0xa4ce, 0xa4d1, 0xa4df, 0xa4e8, - 0xa4fd, 0xa540, 0xa548, 0xa558, 0xa569, 0xa5cd, 0xa5e7, 0xa657, 0xa661, - 0xa662, 0xa668, 0xa670, 0xa6a8, 0xa6b3, 0xa6b9, 0xa6d3, 0xa6db, 0xa6e6, - 0xa6f2, 0xa740, 0xa751, 0xa759, 0xa7da, 0xa8a3, 0xa8a5, 0xa8ad, 0xa8d1, - 0xa8d3, 0xa8e4, 0xa8fc, 0xa9c0, 0xa9d2, 0xa9f3, 0xaa6b, 0xaaba, 0xaabe, - 0xaacc, 0xaafc, 0xac47, 0xac4f, 0xacb0, 0xacd2, 0xad59, 0xaec9, 0xafe0, - 0xb0ea, 0xb16f, 0xb2b3, 0xb2c4, 0xb36f, 0xb44c, 0xb44e, 0xb54c, 0xb5a5, - 0xb5bd, 0xb5d0, 0xb5d8, 0xb671, 0xb7ed, 0xb867, 0xb944, 0xbad8, 0xbb44, - 0xbba1, 0xbdd1, 0xc2c4, 0xc3b9, 0xc440, 0xc45f, - ]; - } - name() { - return 'Big5'; - } - language() { - return 'zh'; - } - nextChar(iter, det) { - iter.index = iter.nextIndex; - iter.error = false; - const firstByte = (iter.charValue = iter.nextByte(det)); - if (firstByte < 0) - return false; - if (firstByte <= 0x7f || firstByte == 0xff) - return true; - const secondByte = iter.nextByte(det); - if (secondByte < 0) - return false; - iter.charValue = (iter.charValue << 8) | secondByte; - if (secondByte < 0x40 || secondByte == 0x7f || secondByte == 0xff) - iter.error = true; - return true; - } -} -exports.big5 = big5; -function eucNextChar(iter, det) { - iter.index = iter.nextIndex; - iter.error = false; - let firstByte = 0; - let secondByte = 0; - let thirdByte = 0; - buildChar: { - firstByte = iter.charValue = iter.nextByte(det); - if (firstByte < 0) { - iter.done = true; - break buildChar; - } - if (firstByte <= 0x8d) { - break buildChar; - } - secondByte = iter.nextByte(det); - iter.charValue = (iter.charValue << 8) | secondByte; - if (firstByte >= 0xa1 && firstByte <= 0xfe) { - if (secondByte < 0xa1) { - iter.error = true; - } - break buildChar; - } - if (firstByte == 0x8e) { - if (secondByte < 0xa1) { - iter.error = true; - } - break buildChar; - } - if (firstByte == 0x8f) { - thirdByte = iter.nextByte(det); - iter.charValue = (iter.charValue << 8) | thirdByte; - if (thirdByte < 0xa1) { - iter.error = true; - } - } - } - return iter.done == false; -} -class euc_jp extends mbcs { - constructor() { - super(...arguments); - this.commonChars = [ - 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a6, 0xa1bc, 0xa1ca, 0xa1cb, 0xa1d6, 0xa1d7, - 0xa4a2, 0xa4a4, 0xa4a6, 0xa4a8, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4af, - 0xa4b1, 0xa4b3, 0xa4b5, 0xa4b7, 0xa4b9, 0xa4bb, 0xa4bd, 0xa4bf, 0xa4c0, - 0xa4c1, 0xa4c3, 0xa4c4, 0xa4c6, 0xa4c7, 0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, - 0xa4ce, 0xa4cf, 0xa4d0, 0xa4de, 0xa4df, 0xa4e1, 0xa4e2, 0xa4e4, 0xa4e8, - 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ef, 0xa4f2, 0xa4f3, 0xa5a2, 0xa5a3, - 0xa5a4, 0xa5a6, 0xa5a7, 0xa5aa, 0xa5ad, 0xa5af, 0xa5b0, 0xa5b3, 0xa5b5, - 0xa5b7, 0xa5b8, 0xa5b9, 0xa5bf, 0xa5c3, 0xa5c6, 0xa5c7, 0xa5c8, 0xa5c9, - 0xa5cb, 0xa5d0, 0xa5d5, 0xa5d6, 0xa5d7, 0xa5de, 0xa5e0, 0xa5e1, 0xa5e5, - 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5f3, 0xb8a9, 0xb9d4, 0xbaee, - 0xbbc8, 0xbef0, 0xbfb7, 0xc4ea, 0xc6fc, 0xc7bd, 0xcab8, 0xcaf3, 0xcbdc, - 0xcdd1, - ]; - this.nextChar = eucNextChar; - } - name() { - return 'EUC-JP'; - } - language() { - return 'ja'; - } -} -exports.euc_jp = euc_jp; -class euc_kr extends mbcs { - constructor() { - super(...arguments); - this.commonChars = [ - 0xb0a1, 0xb0b3, 0xb0c5, 0xb0cd, 0xb0d4, 0xb0e6, 0xb0ed, 0xb0f8, 0xb0fa, - 0xb0fc, 0xb1b8, 0xb1b9, 0xb1c7, 0xb1d7, 0xb1e2, 0xb3aa, 0xb3bb, 0xb4c2, - 0xb4cf, 0xb4d9, 0xb4eb, 0xb5a5, 0xb5b5, 0xb5bf, 0xb5c7, 0xb5e9, 0xb6f3, - 0xb7af, 0xb7c2, 0xb7ce, 0xb8a6, 0xb8ae, 0xb8b6, 0xb8b8, 0xb8bb, 0xb8e9, - 0xb9ab, 0xb9ae, 0xb9cc, 0xb9ce, 0xb9fd, 0xbab8, 0xbace, 0xbad0, 0xbaf1, - 0xbbe7, 0xbbf3, 0xbbfd, 0xbcad, 0xbcba, 0xbcd2, 0xbcf6, 0xbdba, 0xbdc0, - 0xbdc3, 0xbdc5, 0xbec6, 0xbec8, 0xbedf, 0xbeee, 0xbef8, 0xbefa, 0xbfa1, - 0xbfa9, 0xbfc0, 0xbfe4, 0xbfeb, 0xbfec, 0xbff8, 0xc0a7, 0xc0af, 0xc0b8, - 0xc0ba, 0xc0bb, 0xc0bd, 0xc0c7, 0xc0cc, 0xc0ce, 0xc0cf, 0xc0d6, 0xc0da, - 0xc0e5, 0xc0fb, 0xc0fc, 0xc1a4, 0xc1a6, 0xc1b6, 0xc1d6, 0xc1df, 0xc1f6, - 0xc1f8, 0xc4a1, 0xc5cd, 0xc6ae, 0xc7cf, 0xc7d1, 0xc7d2, 0xc7d8, 0xc7e5, - 0xc8ad, - ]; - this.nextChar = eucNextChar; - } - name() { - return 'EUC-KR'; - } - language() { - return 'ko'; - } -} -exports.euc_kr = euc_kr; -class gb_18030 extends mbcs { - constructor() { - super(...arguments); - this.commonChars = [ - 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1b0, 0xa1b1, 0xa1f1, 0xa1f3, 0xa3a1, - 0xa3ac, 0xa3ba, 0xb1a8, 0xb1b8, 0xb1be, 0xb2bb, 0xb3c9, 0xb3f6, 0xb4f3, - 0xb5bd, 0xb5c4, 0xb5e3, 0xb6af, 0xb6d4, 0xb6e0, 0xb7a2, 0xb7a8, 0xb7bd, - 0xb7d6, 0xb7dd, 0xb8b4, 0xb8df, 0xb8f6, 0xb9ab, 0xb9c9, 0xb9d8, 0xb9fa, - 0xb9fd, 0xbacd, 0xbba7, 0xbbd6, 0xbbe1, 0xbbfa, 0xbcbc, 0xbcdb, 0xbcfe, - 0xbdcc, 0xbecd, 0xbedd, 0xbfb4, 0xbfc6, 0xbfc9, 0xc0b4, 0xc0ed, 0xc1cb, - 0xc2db, 0xc3c7, 0xc4dc, 0xc4ea, 0xc5cc, 0xc6f7, 0xc7f8, 0xc8ab, 0xc8cb, - 0xc8d5, 0xc8e7, 0xc9cf, 0xc9fa, 0xcab1, 0xcab5, 0xcac7, 0xcad0, 0xcad6, - 0xcaf5, 0xcafd, 0xccec, 0xcdf8, 0xceaa, 0xcec4, 0xced2, 0xcee5, 0xcfb5, - 0xcfc2, 0xcfd6, 0xd0c2, 0xd0c5, 0xd0d0, 0xd0d4, 0xd1a7, 0xd2aa, 0xd2b2, - 0xd2b5, 0xd2bb, 0xd2d4, 0xd3c3, 0xd3d0, 0xd3fd, 0xd4c2, 0xd4da, 0xd5e2, - 0xd6d0, - ]; - } - name() { - return 'GB18030'; - } - language() { - return 'zh'; - } - nextChar(iter, det) { - iter.index = iter.nextIndex; - iter.error = false; - let firstByte = 0; - let secondByte = 0; - let thirdByte = 0; - let fourthByte = 0; - buildChar: { - firstByte = iter.charValue = iter.nextByte(det); - if (firstByte < 0) { - iter.done = true; - break buildChar; - } - if (firstByte <= 0x80) { - break buildChar; - } - secondByte = iter.nextByte(det); - iter.charValue = (iter.charValue << 8) | secondByte; - if (firstByte >= 0x81 && firstByte <= 0xfe) { - if ((secondByte >= 0x40 && secondByte <= 0x7e) || - (secondByte >= 80 && secondByte <= 0xfe)) { - break buildChar; - } - if (secondByte >= 0x30 && secondByte <= 0x39) { - thirdByte = iter.nextByte(det); - if (thirdByte >= 0x81 && thirdByte <= 0xfe) { - fourthByte = iter.nextByte(det); - if (fourthByte >= 0x30 && fourthByte <= 0x39) { - iter.charValue = - (iter.charValue << 16) | (thirdByte << 8) | fourthByte; - break buildChar; - } - } - } - iter.error = true; - break buildChar; - } - } - return iter.done == false; - } -} -exports.gb_18030 = gb_18030; -//# sourceMappingURL=mbcs.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/mbcs.js.map b/sdks/nodejs/node_modules/chardet/lib/encoding/mbcs.js.map deleted file mode 100644 index 534c755..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/mbcs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mbcs.js","sourceRoot":"","sources":["../../src/encoding/mbcs.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAKhE,SAAS,YAAY,CAAC,GAAa,EAAE,WAAmB;IACtD,MAAM,IAAI,GAAG,CACX,GAAa,EACb,WAAmB,EACnB,IAAY,EACZ,KAAa,EACL,EAAE;QACV,IAAI,KAAK,GAAG,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAO5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,IAAI,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAE1E,IAAI,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAEzE,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnD,CAAC;AAaD,MAAM,YAAY;IAOhB;QACE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,GAAY;QACnB,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AASD,MAAM,IAAI;IAAV;QACE,gBAAW,GAAa,EAAE,CAAC;IA+G7B,CAAC;IA7GC,IAAI;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAYD,KAAK,CAAC,GAAY;QAChB,IAAI,mBAAmB,GAAG,CAAC,EACzB,eAAe,GAAG,CAAC,EACnB,YAAY,GAAG,CAAC,EAChB,cAAc,GAAG,CAAC,EAClB,UAAU,GAAG,CAAC,CAAC;QAEjB,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;QAEhC,WAAW,EAAE,CAAC;YACZ,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,GAAI,CAAC;gBAC9C,cAAc,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,YAAY,EAAE,CAAC;gBACjB,CAAC;qBAAM,CAAC;oBACN,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;oBAEvC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;wBACd,mBAAmB,EAAE,CAAC;wBACtB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;4BAE7B,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gCAC5C,eAAe,EAAE,CAAC;4BACpB,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,CAAC,IAAI,mBAAmB,EAAE,CAAC;oBAGjE,MAAM,WAAW,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,IAAI,mBAAmB,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;gBAEnD,IAAI,mBAAmB,IAAI,CAAC,IAAI,cAAc,GAAG,EAAE,EAAE,CAAC;oBAIpD,UAAU,GAAG,CAAC,CAAC;gBACjB,CAAC;qBAAM,CAAC;oBAGN,UAAU,GAAG,EAAE,CAAC;gBAClB,CAAC;gBACD,MAAM,WAAW,CAAC;YACpB,CAAC;YAMD,IAAI,mBAAmB,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;gBAC5C,UAAU,GAAG,CAAC,CAAC;gBACf,MAAM,WAAW,CAAC;YACpB,CAAC;YAED,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;gBAI7B,UAAU,GAAG,EAAE,GAAG,mBAAmB,GAAG,EAAE,GAAG,YAAY,CAAC;gBAC1D,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;oBACrB,UAAU,GAAG,GAAG,CAAC;gBACnB,CAAC;YACH,CAAC;iBAAM,CAAC;gBAEN,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;gBACjD,MAAM,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC;gBAClC,UAAU,GAAG,IAAI,CAAC,KAAK,CACrB,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,EAAE,CACjD,CAAC;gBACF,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,OAAO,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,eAAK,EAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/D,CAAC;IAcD,QAAQ,CAAC,KAAmB,EAAE,IAAa;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAKD,MAAa,IAAK,SAAQ,IAAI;IAA9B;;QAYE,gBAAW,GAAG;YACZ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM;SACvB,CAAC;IA2BJ,CAAC;IA9CC,IAAI;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IAeD,QAAQ,CAAC,IAAkB,EAAE,GAAY;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,SAAS,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEhC,IAAI,SAAS,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC;YAC9D,OAAO,IAAI,CAAC;QAEd,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,UAAU,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEjC,IAAI,CAAC,SAAS,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC;QAC/C,IACE,CAAC,CACC,CAAC,UAAU,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC;YAC1C,CAAC,UAAU,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC,CAC3C,EACD,CAAC;YAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA/CD,oBA+CC;AAKD,MAAa,IAAK,SAAQ,IAAI;IAA9B;;QAWE,gBAAW,GAAG;YACZ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;SAC/C,CAAC;IAwBJ,CAAC;IA9CC,IAAI;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IAkBD,QAAQ,CAAC,IAAkB,EAAE,GAAY;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAExD,IAAI,SAAS,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAGhC,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAExD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,UAAU,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEjC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC;QAEpD,IAAI,UAAU,GAAG,IAAI,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI;YAC/D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAEpB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA/CD,oBA+CC;AAWD,SAAS,WAAW,CAAC,IAAkB,EAAE,GAAY;IACnD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;IAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,SAAS,EAAE,CAAC;QACV,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAElB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,MAAM,SAAS,CAAC;QAClB,CAAC;QACD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YAEtB,MAAM,SAAS,CAAC;QAClB,CAAC;QACD,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC;QACpD,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YAE3C,IAAI,UAAU,GAAG,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,MAAM,SAAS,CAAC;QAClB,CAAC;QACD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YAOtB,IAAI,UAAU,GAAG,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,MAAM,SAAS,CAAC;QAClB,CAAC;QACD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YAGtB,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;YACnD,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;AAC5B,CAAC;AAMD,MAAa,MAAO,SAAQ,IAAI;IAAhC;;QAYE,gBAAW,GAAG;YACZ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM;SACP,CAAC;QAEF,aAAQ,GAAG,WAAW,CAAC;IACzB,CAAC;IA3BC,IAAI;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;CAqBF;AA5BD,wBA4BC;AAMD,MAAa,MAAO,SAAQ,IAAI;IAAhC;;QAYE,gBAAW,GAAG;YACZ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM;SACP,CAAC;QAEF,aAAQ,GAAG,WAAW,CAAC;IACzB,CAAC;IA3BC,IAAI;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;CAqBF;AA5BD,wBA4BC;AAKD,MAAa,QAAS,SAAQ,IAAI;IAAlC;;QAiEE,gBAAW,GAAG;YACZ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACtE,MAAM;SACP,CAAC;IACJ,CAAC;IA9EC,IAAI;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IAQD,QAAQ,CAAC,IAAkB,EAAE,GAAY;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,SAAS,EAAE,CAAC;YACV,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAElB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,MAAM,SAAS,CAAC;YAClB,CAAC;YACD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;gBAEtB,MAAM,SAAS,CAAC;YAClB,CAAC;YACD,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC;YACpD,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;gBAE3C,IACE,CAAC,UAAU,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC;oBAC1C,CAAC,UAAU,IAAI,EAAE,IAAI,UAAU,IAAI,IAAI,CAAC,EACxC,CAAC;oBACD,MAAM,SAAS,CAAC;gBAClB,CAAC;gBAED,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;oBAC7C,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAC/B,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;wBAC3C,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;wBAChC,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;4BAC7C,IAAI,CAAC,SAAS;gCACZ,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC;4BACzD,MAAM,SAAS,CAAC;wBAClB,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,MAAM,SAAS,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;IAC5B,CAAC;CAmBF;AA/ED,4BA+EC"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/sbcs.d.ts b/sdks/nodejs/node_modules/chardet/lib/encoding/sbcs.d.ts deleted file mode 100644 index 7f13abc..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/sbcs.d.ts +++ /dev/null @@ -1,75 +0,0 @@ -import type { Context, Recogniser } from '.'; -import { type EncodingName, type Match } from '../match'; -declare class NGramsPlusLang { - fLang: string; - fNGrams: number[]; - constructor(la: string, ng: number[]); -} -declare class sbcs implements Recogniser { - spaceChar: number; - private nGramLang?; - ngrams(): NGramsPlusLang[] | number[]; - byteMap(): number[]; - name(_input: Context): EncodingName; - language(): string | undefined; - match(det: Context): Match | null; -} -export declare class ISO_8859_1 extends sbcs { - byteMap(): number[]; - ngrams(): NGramsPlusLang[]; - name(input: Context): EncodingName; -} -export declare class ISO_8859_2 extends sbcs { - byteMap(): number[]; - ngrams(): NGramsPlusLang[]; - name(det: Context): EncodingName; -} -export declare class ISO_8859_5 extends sbcs { - byteMap(): number[]; - ngrams(): number[]; - name(): EncodingName; - language(): string; -} -export declare class ISO_8859_6 extends sbcs { - byteMap(): number[]; - ngrams(): number[]; - name(): EncodingName; - language(): string; -} -export declare class ISO_8859_7 extends sbcs { - byteMap(): number[]; - ngrams(): number[]; - name(det: Context): EncodingName; - language(): string; -} -export declare class ISO_8859_8 extends sbcs { - byteMap(): number[]; - ngrams(): NGramsPlusLang[]; - name(det: Context): EncodingName; - language(): string; -} -export declare class ISO_8859_9 extends sbcs { - byteMap(): number[]; - ngrams(): number[]; - name(det: Context): EncodingName; - language(): string; -} -export declare class windows_1251 extends sbcs { - byteMap(): number[]; - ngrams(): number[]; - name(): EncodingName; - language(): string; -} -export declare class windows_1256 extends sbcs { - byteMap(): number[]; - ngrams(): number[]; - name(): EncodingName; - language(): string; -} -export declare class KOI8_R extends sbcs { - byteMap(): number[]; - ngrams(): number[]; - name(): EncodingName; - language(): string; -} -export {}; diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/sbcs.js b/sdks/nodejs/node_modules/chardet/lib/encoding/sbcs.js deleted file mode 100644 index 3938b72..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/sbcs.js +++ /dev/null @@ -1,764 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.KOI8_R = exports.windows_1256 = exports.windows_1251 = exports.ISO_8859_9 = exports.ISO_8859_8 = exports.ISO_8859_7 = exports.ISO_8859_6 = exports.ISO_8859_5 = exports.ISO_8859_2 = exports.ISO_8859_1 = void 0; -const match_1 = __importDefault(require("../match")); -const N_GRAM_MASK = 0xffffff; -class NGramParser { - constructor(theNgramList, theByteMap) { - this.byteIndex = 0; - this.ngram = 0; - this.ngramCount = 0; - this.hitCount = 0; - this.spaceChar = 0x20; - this.ngramList = theNgramList; - this.byteMap = theByteMap; - } - search(table, value) { - let index = 0; - if (table[index + 32] <= value) - index += 32; - if (table[index + 16] <= value) - index += 16; - if (table[index + 8] <= value) - index += 8; - if (table[index + 4] <= value) - index += 4; - if (table[index + 2] <= value) - index += 2; - if (table[index + 1] <= value) - index += 1; - if (table[index] > value) - index -= 1; - if (index < 0 || table[index] != value) - return -1; - return index; - } - lookup(thisNgram) { - this.ngramCount += 1; - if (this.search(this.ngramList, thisNgram) >= 0) { - this.hitCount += 1; - } - } - addByte(b) { - this.ngram = ((this.ngram << 8) + (b & 0xff)) & N_GRAM_MASK; - this.lookup(this.ngram); - } - nextByte(det) { - if (this.byteIndex >= det.inputLen) - return -1; - return det.inputBytes[this.byteIndex++] & 0xff; - } - parse(det, spaceCh) { - let b, ignoreSpace = false; - this.spaceChar = spaceCh; - while ((b = this.nextByte(det)) >= 0) { - const mb = this.byteMap[b]; - if (mb != 0) { - if (!(mb == this.spaceChar && ignoreSpace)) { - this.addByte(mb); - } - ignoreSpace = mb == this.spaceChar; - } - } - this.addByte(this.spaceChar); - const rawPercent = this.hitCount / this.ngramCount; - if (rawPercent > 0.33) - return 98; - return Math.floor(rawPercent * 300.0); - } -} -class NGramsPlusLang { - constructor(la, ng) { - this.fLang = la; - this.fNGrams = ng; - } -} -const isFlatNgrams = (val) => Array.isArray(val) && isFinite(val[0]); -class sbcs { - constructor() { - this.spaceChar = 0x20; - this.nGramLang = undefined; - } - ngrams() { - return []; - } - byteMap() { - return []; - } - name(_input) { - return 'sbcs'; - } - language() { - return this.nGramLang; - } - match(det) { - this.nGramLang = undefined; - const ngrams = this.ngrams(); - if (isFlatNgrams(ngrams)) { - const parser = new NGramParser(ngrams, this.byteMap()); - const confidence = parser.parse(det, this.spaceChar); - return confidence <= 0 ? null : (0, match_1.default)(det, this, confidence); - } - let bestConfidence = -1; - for (let i = ngrams.length - 1; i >= 0; i--) { - const ngl = ngrams[i]; - const parser = new NGramParser(ngl.fNGrams, this.byteMap()); - const confidence = parser.parse(det, this.spaceChar); - if (confidence > bestConfidence) { - bestConfidence = confidence; - this.nGramLang = ngl.fLang; - } - } - return bestConfidence <= 0 ? null : (0, match_1.default)(det, this, bestConfidence); - } -} -class ISO_8859_1 extends sbcs { - byteMap() { - return [ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, - 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0xaa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0xb5, 0x20, 0x20, 0x20, 0x20, 0xba, 0x20, 0x20, 0x20, 0x20, 0x20, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, - 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x20, - 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, - 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x20, 0xf8, 0xf9, 0xfa, 0xfb, - 0xfc, 0xfd, 0xfe, 0xff, - ]; - } - ngrams() { - return [ - new NGramsPlusLang('da', [ - 0x206166, 0x206174, 0x206465, 0x20656e, 0x206572, 0x20666f, 0x206861, - 0x206920, 0x206d65, 0x206f67, 0x2070e5, 0x207369, 0x207374, 0x207469, - 0x207669, 0x616620, 0x616e20, 0x616e64, 0x617220, 0x617420, 0x646520, - 0x64656e, 0x646572, 0x646574, 0x652073, 0x656420, 0x656465, 0x656e20, - 0x656e64, 0x657220, 0x657265, 0x657320, 0x657420, 0x666f72, 0x676520, - 0x67656e, 0x676572, 0x696765, 0x696c20, 0x696e67, 0x6b6520, 0x6b6b65, - 0x6c6572, 0x6c6967, 0x6c6c65, 0x6d6564, 0x6e6465, 0x6e6520, 0x6e6720, - 0x6e6765, 0x6f6720, 0x6f6d20, 0x6f7220, 0x70e520, 0x722064, 0x722065, - 0x722073, 0x726520, 0x737465, 0x742073, 0x746520, 0x746572, 0x74696c, - 0x766572, - ]), - new NGramsPlusLang('de', [ - 0x20616e, 0x206175, 0x206265, 0x206461, 0x206465, 0x206469, 0x206569, - 0x206765, 0x206861, 0x20696e, 0x206d69, 0x207363, 0x207365, 0x20756e, - 0x207665, 0x20766f, 0x207765, 0x207a75, 0x626572, 0x636820, 0x636865, - 0x636874, 0x646173, 0x64656e, 0x646572, 0x646965, 0x652064, 0x652073, - 0x65696e, 0x656974, 0x656e20, 0x657220, 0x657320, 0x67656e, 0x68656e, - 0x687420, 0x696368, 0x696520, 0x696e20, 0x696e65, 0x697420, 0x6c6963, - 0x6c6c65, 0x6e2061, 0x6e2064, 0x6e2073, 0x6e6420, 0x6e6465, 0x6e6520, - 0x6e6720, 0x6e6765, 0x6e7465, 0x722064, 0x726465, 0x726569, 0x736368, - 0x737465, 0x742064, 0x746520, 0x74656e, 0x746572, 0x756e64, 0x756e67, - 0x766572, - ]), - new NGramsPlusLang('en', [ - 0x206120, 0x20616e, 0x206265, 0x20636f, 0x20666f, 0x206861, 0x206865, - 0x20696e, 0x206d61, 0x206f66, 0x207072, 0x207265, 0x207361, 0x207374, - 0x207468, 0x20746f, 0x207768, 0x616964, 0x616c20, 0x616e20, 0x616e64, - 0x617320, 0x617420, 0x617465, 0x617469, 0x642061, 0x642074, 0x652061, - 0x652073, 0x652074, 0x656420, 0x656e74, 0x657220, 0x657320, 0x666f72, - 0x686174, 0x686520, 0x686572, 0x696420, 0x696e20, 0x696e67, 0x696f6e, - 0x697320, 0x6e2061, 0x6e2074, 0x6e6420, 0x6e6720, 0x6e7420, 0x6f6620, - 0x6f6e20, 0x6f7220, 0x726520, 0x727320, 0x732061, 0x732074, 0x736169, - 0x737420, 0x742074, 0x746572, 0x746861, 0x746865, 0x74696f, 0x746f20, - 0x747320, - ]), - new NGramsPlusLang('es', [ - 0x206120, 0x206361, 0x20636f, 0x206465, 0x20656c, 0x20656e, 0x206573, - 0x20696e, 0x206c61, 0x206c6f, 0x207061, 0x20706f, 0x207072, 0x207175, - 0x207265, 0x207365, 0x20756e, 0x207920, 0x612063, 0x612064, 0x612065, - 0x61206c, 0x612070, 0x616369, 0x61646f, 0x616c20, 0x617220, 0x617320, - 0x6369f3, 0x636f6e, 0x646520, 0x64656c, 0x646f20, 0x652064, 0x652065, - 0x65206c, 0x656c20, 0x656e20, 0x656e74, 0x657320, 0x657374, 0x69656e, - 0x69f36e, 0x6c6120, 0x6c6f73, 0x6e2065, 0x6e7465, 0x6f2064, 0x6f2065, - 0x6f6e20, 0x6f7220, 0x6f7320, 0x706172, 0x717565, 0x726120, 0x726573, - 0x732064, 0x732065, 0x732070, 0x736520, 0x746520, 0x746f20, 0x756520, - 0xf36e20, - ]), - new NGramsPlusLang('fr', [ - 0x206175, 0x20636f, 0x206461, 0x206465, 0x206475, 0x20656e, 0x206574, - 0x206c61, 0x206c65, 0x207061, 0x20706f, 0x207072, 0x207175, 0x207365, - 0x20736f, 0x20756e, 0x20e020, 0x616e74, 0x617469, 0x636520, 0x636f6e, - 0x646520, 0x646573, 0x647520, 0x652061, 0x652063, 0x652064, 0x652065, - 0x65206c, 0x652070, 0x652073, 0x656e20, 0x656e74, 0x657220, 0x657320, - 0x657420, 0x657572, 0x696f6e, 0x697320, 0x697420, 0x6c6120, 0x6c6520, - 0x6c6573, 0x6d656e, 0x6e2064, 0x6e6520, 0x6e7320, 0x6e7420, 0x6f6e20, - 0x6f6e74, 0x6f7572, 0x717565, 0x72206c, 0x726520, 0x732061, 0x732064, - 0x732065, 0x73206c, 0x732070, 0x742064, 0x746520, 0x74696f, 0x756520, - 0x757220, - ]), - new NGramsPlusLang('it', [ - 0x20616c, 0x206368, 0x20636f, 0x206465, 0x206469, 0x206520, 0x20696c, - 0x20696e, 0x206c61, 0x207065, 0x207072, 0x20756e, 0x612063, 0x612064, - 0x612070, 0x612073, 0x61746f, 0x636865, 0x636f6e, 0x64656c, 0x646920, - 0x652061, 0x652063, 0x652064, 0x652069, 0x65206c, 0x652070, 0x652073, - 0x656c20, 0x656c6c, 0x656e74, 0x657220, 0x686520, 0x692061, 0x692063, - 0x692064, 0x692073, 0x696120, 0x696c20, 0x696e20, 0x696f6e, 0x6c6120, - 0x6c6520, 0x6c6920, 0x6c6c61, 0x6e6520, 0x6e6920, 0x6e6f20, 0x6e7465, - 0x6f2061, 0x6f2064, 0x6f2069, 0x6f2073, 0x6f6e20, 0x6f6e65, 0x706572, - 0x726120, 0x726520, 0x736920, 0x746120, 0x746520, 0x746920, 0x746f20, - 0x7a696f, - ]), - new NGramsPlusLang('nl', [ - 0x20616c, 0x206265, 0x206461, 0x206465, 0x206469, 0x206565, 0x20656e, - 0x206765, 0x206865, 0x20696e, 0x206d61, 0x206d65, 0x206f70, 0x207465, - 0x207661, 0x207665, 0x20766f, 0x207765, 0x207a69, 0x61616e, 0x616172, - 0x616e20, 0x616e64, 0x617220, 0x617420, 0x636874, 0x646520, 0x64656e, - 0x646572, 0x652062, 0x652076, 0x65656e, 0x656572, 0x656e20, 0x657220, - 0x657273, 0x657420, 0x67656e, 0x686574, 0x696520, 0x696e20, 0x696e67, - 0x697320, 0x6e2062, 0x6e2064, 0x6e2065, 0x6e2068, 0x6e206f, 0x6e2076, - 0x6e6465, 0x6e6720, 0x6f6e64, 0x6f6f72, 0x6f7020, 0x6f7220, 0x736368, - 0x737465, 0x742064, 0x746520, 0x74656e, 0x746572, 0x76616e, 0x766572, - 0x766f6f, - ]), - new NGramsPlusLang('no', [ - 0x206174, 0x206176, 0x206465, 0x20656e, 0x206572, 0x20666f, 0x206861, - 0x206920, 0x206d65, 0x206f67, 0x2070e5, 0x207365, 0x20736b, 0x20736f, - 0x207374, 0x207469, 0x207669, 0x20e520, 0x616e64, 0x617220, 0x617420, - 0x646520, 0x64656e, 0x646574, 0x652073, 0x656420, 0x656e20, 0x656e65, - 0x657220, 0x657265, 0x657420, 0x657474, 0x666f72, 0x67656e, 0x696b6b, - 0x696c20, 0x696e67, 0x6b6520, 0x6b6b65, 0x6c6520, 0x6c6c65, 0x6d6564, - 0x6d656e, 0x6e2073, 0x6e6520, 0x6e6720, 0x6e6765, 0x6e6e65, 0x6f6720, - 0x6f6d20, 0x6f7220, 0x70e520, 0x722073, 0x726520, 0x736f6d, 0x737465, - 0x742073, 0x746520, 0x74656e, 0x746572, 0x74696c, 0x747420, 0x747465, - 0x766572, - ]), - new NGramsPlusLang('pt', [ - 0x206120, 0x20636f, 0x206461, 0x206465, 0x20646f, 0x206520, 0x206573, - 0x206d61, 0x206e6f, 0x206f20, 0x207061, 0x20706f, 0x207072, 0x207175, - 0x207265, 0x207365, 0x20756d, 0x612061, 0x612063, 0x612064, 0x612070, - 0x616465, 0x61646f, 0x616c20, 0x617220, 0x617261, 0x617320, 0x636f6d, - 0x636f6e, 0x646120, 0x646520, 0x646f20, 0x646f73, 0x652061, 0x652064, - 0x656d20, 0x656e74, 0x657320, 0x657374, 0x696120, 0x696361, 0x6d656e, - 0x6e7465, 0x6e746f, 0x6f2061, 0x6f2063, 0x6f2064, 0x6f2065, 0x6f2070, - 0x6f7320, 0x706172, 0x717565, 0x726120, 0x726573, 0x732061, 0x732064, - 0x732065, 0x732070, 0x737461, 0x746520, 0x746f20, 0x756520, 0xe36f20, - 0xe7e36f, - ]), - new NGramsPlusLang('sv', [ - 0x206174, 0x206176, 0x206465, 0x20656e, 0x2066f6, 0x206861, 0x206920, - 0x20696e, 0x206b6f, 0x206d65, 0x206f63, 0x2070e5, 0x20736b, 0x20736f, - 0x207374, 0x207469, 0x207661, 0x207669, 0x20e472, 0x616465, 0x616e20, - 0x616e64, 0x617220, 0x617474, 0x636820, 0x646520, 0x64656e, 0x646572, - 0x646574, 0x656420, 0x656e20, 0x657220, 0x657420, 0x66f672, 0x67656e, - 0x696c6c, 0x696e67, 0x6b6120, 0x6c6c20, 0x6d6564, 0x6e2073, 0x6e6120, - 0x6e6465, 0x6e6720, 0x6e6765, 0x6e696e, 0x6f6368, 0x6f6d20, 0x6f6e20, - 0x70e520, 0x722061, 0x722073, 0x726120, 0x736b61, 0x736f6d, 0x742073, - 0x746120, 0x746520, 0x746572, 0x74696c, 0x747420, 0x766172, 0xe47220, - 0xf67220, - ]), - ]; - } - name(input) { - return input && input.c1Bytes ? 'windows-1252' : 'ISO-8859-1'; - } -} -exports.ISO_8859_1 = ISO_8859_1; -class ISO_8859_2 extends sbcs { - byteMap() { - return [ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, - 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0xb1, 0x20, 0xb3, 0x20, 0xb5, 0xb6, 0x20, - 0x20, 0xb9, 0xba, 0xbb, 0xbc, 0x20, 0xbe, 0xbf, 0x20, 0xb1, 0x20, 0xb3, - 0x20, 0xb5, 0xb6, 0xb7, 0x20, 0xb9, 0xba, 0xbb, 0xbc, 0x20, 0xbe, 0xbf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, - 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x20, - 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, - 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x20, 0xf8, 0xf9, 0xfa, 0xfb, - 0xfc, 0xfd, 0xfe, 0x20, - ]; - } - ngrams() { - return [ - new NGramsPlusLang('cs', [ - 0x206120, 0x206279, 0x20646f, 0x206a65, 0x206e61, 0x206e65, 0x206f20, - 0x206f64, 0x20706f, 0x207072, 0x2070f8, 0x20726f, 0x207365, 0x20736f, - 0x207374, 0x20746f, 0x207620, 0x207679, 0x207a61, 0x612070, 0x636520, - 0x636820, 0x652070, 0x652073, 0x652076, 0x656d20, 0x656eed, 0x686f20, - 0x686f64, 0x697374, 0x6a6520, 0x6b7465, 0x6c6520, 0x6c6920, 0x6e6120, - 0x6ee920, 0x6eec20, 0x6eed20, 0x6f2070, 0x6f646e, 0x6f6a69, 0x6f7374, - 0x6f7520, 0x6f7661, 0x706f64, 0x706f6a, 0x70726f, 0x70f865, 0x736520, - 0x736f75, 0x737461, 0x737469, 0x73746e, 0x746572, 0x746eed, 0x746f20, - 0x752070, 0xbe6520, 0xe16eed, 0xe9686f, 0xed2070, 0xed2073, 0xed6d20, - 0xf86564, - ]), - new NGramsPlusLang('hu', [ - 0x206120, 0x20617a, 0x206265, 0x206567, 0x20656c, 0x206665, 0x206861, - 0x20686f, 0x206973, 0x206b65, 0x206b69, 0x206bf6, 0x206c65, 0x206d61, - 0x206d65, 0x206d69, 0x206e65, 0x20737a, 0x207465, 0x20e973, 0x612061, - 0x61206b, 0x61206d, 0x612073, 0x616b20, 0x616e20, 0x617a20, 0x62616e, - 0x62656e, 0x656779, 0x656b20, 0x656c20, 0x656c65, 0x656d20, 0x656e20, - 0x657265, 0x657420, 0x657465, 0x657474, 0x677920, 0x686f67, 0x696e74, - 0x697320, 0x6b2061, 0x6bf67a, 0x6d6567, 0x6d696e, 0x6e2061, 0x6e616b, - 0x6e656b, 0x6e656d, 0x6e7420, 0x6f6779, 0x732061, 0x737a65, 0x737a74, - 0x737ae1, 0x73e967, 0x742061, 0x747420, 0x74e173, 0x7a6572, 0xe16e20, - 0xe97320, - ]), - new NGramsPlusLang('pl', [ - 0x20637a, 0x20646f, 0x206920, 0x206a65, 0x206b6f, 0x206d61, 0x206d69, - 0x206e61, 0x206e69, 0x206f64, 0x20706f, 0x207072, 0x207369, 0x207720, - 0x207769, 0x207779, 0x207a20, 0x207a61, 0x612070, 0x612077, 0x616e69, - 0x636820, 0x637a65, 0x637a79, 0x646f20, 0x647a69, 0x652070, 0x652073, - 0x652077, 0x65207a, 0x65676f, 0x656a20, 0x656d20, 0x656e69, 0x676f20, - 0x696120, 0x696520, 0x69656a, 0x6b6120, 0x6b6920, 0x6b6965, 0x6d6965, - 0x6e6120, 0x6e6961, 0x6e6965, 0x6f2070, 0x6f7761, 0x6f7769, 0x706f6c, - 0x707261, 0x70726f, 0x70727a, 0x727a65, 0x727a79, 0x7369ea, 0x736b69, - 0x737461, 0x776965, 0x796368, 0x796d20, 0x7a6520, 0x7a6965, 0x7a7920, - 0xf37720, - ]), - new NGramsPlusLang('ro', [ - 0x206120, 0x206163, 0x206361, 0x206365, 0x20636f, 0x206375, 0x206465, - 0x206469, 0x206c61, 0x206d61, 0x207065, 0x207072, 0x207365, 0x2073e3, - 0x20756e, 0x20ba69, 0x20ee6e, 0x612063, 0x612064, 0x617265, 0x617420, - 0x617465, 0x617520, 0x636172, 0x636f6e, 0x637520, 0x63e320, 0x646520, - 0x652061, 0x652063, 0x652064, 0x652070, 0x652073, 0x656120, 0x656920, - 0x656c65, 0x656e74, 0x657374, 0x692061, 0x692063, 0x692064, 0x692070, - 0x696520, 0x696920, 0x696e20, 0x6c6120, 0x6c6520, 0x6c6f72, 0x6c7569, - 0x6e6520, 0x6e7472, 0x6f7220, 0x70656e, 0x726520, 0x726561, 0x727520, - 0x73e320, 0x746520, 0x747275, 0x74e320, 0x756920, 0x756c20, 0xba6920, - 0xee6e20, - ]), - ]; - } - name(det) { - return det && det.c1Bytes ? 'windows-1250' : 'ISO-8859-2'; - } -} -exports.ISO_8859_2 = ISO_8859_2; -class ISO_8859_5 extends sbcs { - byteMap() { - return [ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, - 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x20, 0xfe, 0xff, 0xd0, 0xd1, 0xd2, 0xd3, - 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, - 0xec, 0xed, 0xee, 0xef, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, - 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0x20, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, - 0xfc, 0x20, 0xfe, 0xff, - ]; - } - ngrams() { - return [ - 0x20d220, 0x20d2de, 0x20d4de, 0x20d7d0, 0x20d820, 0x20dad0, 0x20dade, - 0x20ddd0, 0x20ddd5, 0x20ded1, 0x20dfde, 0x20dfe0, 0x20e0d0, 0x20e1de, - 0x20e1e2, 0x20e2de, 0x20e7e2, 0x20ede2, 0xd0ddd8, 0xd0e2ec, 0xd3de20, - 0xd5dbec, 0xd5ddd8, 0xd5e1e2, 0xd5e220, 0xd820df, 0xd8d520, 0xd8d820, - 0xd8ef20, 0xdbd5dd, 0xdbd820, 0xdbecdd, 0xddd020, 0xddd520, 0xddd8d5, - 0xddd8ef, 0xddde20, 0xddded2, 0xde20d2, 0xde20df, 0xde20e1, 0xded220, - 0xded2d0, 0xded3de, 0xded920, 0xdedbec, 0xdedc20, 0xdee1e2, 0xdfdedb, - 0xdfe0d5, 0xdfe0d8, 0xdfe0de, 0xe0d0d2, 0xe0d5d4, 0xe1e2d0, 0xe1e2d2, - 0xe1e2d8, 0xe1ef20, 0xe2d5db, 0xe2de20, 0xe2dee0, 0xe2ec20, 0xe7e2de, - 0xebe520, - ]; - } - name() { - return 'ISO-8859-5'; - } - language() { - return 'ru'; - } -} -exports.ISO_8859_5 = ISO_8859_5; -class ISO_8859_6 extends sbcs { - byteMap() { - return [ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, - 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, - 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0x20, 0x20, 0x20, 0x20, 0x20, 0xe0, 0xe1, 0xe2, 0xe3, - 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, - ]; - } - ngrams() { - return [ - 0x20c7e4, 0x20c7e6, 0x20c8c7, 0x20d9e4, 0x20e1ea, 0x20e4e4, 0x20e5e6, - 0x20e8c7, 0xc720c7, 0xc7c120, 0xc7ca20, 0xc7d120, 0xc7e420, 0xc7e4c3, - 0xc7e4c7, 0xc7e4c8, 0xc7e4ca, 0xc7e4cc, 0xc7e4cd, 0xc7e4cf, 0xc7e4d3, - 0xc7e4d9, 0xc7e4e2, 0xc7e4e5, 0xc7e4e8, 0xc7e4ea, 0xc7e520, 0xc7e620, - 0xc7e6ca, 0xc820c7, 0xc920c7, 0xc920e1, 0xc920e4, 0xc920e5, 0xc920e8, - 0xca20c7, 0xcf20c7, 0xcfc920, 0xd120c7, 0xd1c920, 0xd320c7, 0xd920c7, - 0xd9e4e9, 0xe1ea20, 0xe420c7, 0xe4c920, 0xe4e920, 0xe4ea20, 0xe520c7, - 0xe5c720, 0xe5c920, 0xe5e620, 0xe620c7, 0xe720c7, 0xe7c720, 0xe8c7e4, - 0xe8e620, 0xe920c7, 0xea20c7, 0xea20e5, 0xea20e8, 0xeac920, 0xead120, - 0xeae620, - ]; - } - name() { - return 'ISO-8859-6'; - } - language() { - return 'ar'; - } -} -exports.ISO_8859_6 = ISO_8859_6; -class ISO_8859_7 extends sbcs { - byteMap() { - return [ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, - 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0xa1, 0xa2, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0xdc, 0x20, 0xdd, 0xde, 0xdf, 0x20, 0xfc, 0x20, 0xfd, 0xfe, - 0xc0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, - 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0x20, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xfb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, - 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, - 0xfc, 0xfd, 0xfe, 0x20, - ]; - } - ngrams() { - return [ - 0x20e1ed, 0x20e1f0, 0x20e3e9, 0x20e4e9, 0x20e5f0, 0x20e720, 0x20eae1, - 0x20ece5, 0x20ede1, 0x20ef20, 0x20f0e1, 0x20f0ef, 0x20f0f1, 0x20f3f4, - 0x20f3f5, 0x20f4e7, 0x20f4ef, 0xdfe120, 0xe120e1, 0xe120f4, 0xe1e920, - 0xe1ed20, 0xe1f0fc, 0xe1f220, 0xe3e9e1, 0xe5e920, 0xe5f220, 0xe720f4, - 0xe7ed20, 0xe7f220, 0xe920f4, 0xe9e120, 0xe9eade, 0xe9f220, 0xeae1e9, - 0xeae1f4, 0xece520, 0xed20e1, 0xed20e5, 0xed20f0, 0xede120, 0xeff220, - 0xeff520, 0xf0eff5, 0xf0f1ef, 0xf0fc20, 0xf220e1, 0xf220e5, 0xf220ea, - 0xf220f0, 0xf220f4, 0xf3e520, 0xf3e720, 0xf3f4ef, 0xf4e120, 0xf4e1e9, - 0xf4e7ed, 0xf4e7f2, 0xf4e9ea, 0xf4ef20, 0xf4eff5, 0xf4f9ed, 0xf9ed20, - 0xfeed20, - ]; - } - name(det) { - return det && det.c1Bytes ? 'windows-1253' : 'ISO-8859-7'; - } - language() { - return 'el'; - } -} -exports.ISO_8859_7 = ISO_8859_7; -class ISO_8859_8 extends sbcs { - byteMap() { - return [ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, - 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0xb5, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xe0, 0xe1, 0xe2, 0xe3, - 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0x20, - 0x20, 0x20, 0x20, 0x20, - ]; - } - ngrams() { - return [ - new NGramsPlusLang('he', [ - 0x20e0e5, 0x20e0e7, 0x20e0e9, 0x20e0fa, 0x20e1e9, 0x20e1ee, 0x20e4e0, - 0x20e4e5, 0x20e4e9, 0x20e4ee, 0x20e4f2, 0x20e4f9, 0x20e4fa, 0x20ece0, - 0x20ece4, 0x20eee0, 0x20f2ec, 0x20f9ec, 0xe0fa20, 0xe420e0, 0xe420e1, - 0xe420e4, 0xe420ec, 0xe420ee, 0xe420f9, 0xe4e5e0, 0xe5e020, 0xe5ed20, - 0xe5ef20, 0xe5f820, 0xe5fa20, 0xe920e4, 0xe9e420, 0xe9e5fa, 0xe9e9ed, - 0xe9ed20, 0xe9ef20, 0xe9f820, 0xe9fa20, 0xec20e0, 0xec20e4, 0xece020, - 0xece420, 0xed20e0, 0xed20e1, 0xed20e4, 0xed20ec, 0xed20ee, 0xed20f9, - 0xeee420, 0xef20e4, 0xf0e420, 0xf0e920, 0xf0e9ed, 0xf2ec20, 0xf820e4, - 0xf8e9ed, 0xf9ec20, 0xfa20e0, 0xfa20e1, 0xfa20e4, 0xfa20ec, 0xfa20ee, - 0xfa20f9, - ]), - new NGramsPlusLang('he', [ - 0x20e0e5, 0x20e0ec, 0x20e4e9, 0x20e4ec, 0x20e4ee, 0x20e4f0, 0x20e9f0, - 0x20ecf2, 0x20ecf9, 0x20ede5, 0x20ede9, 0x20efe5, 0x20efe9, 0x20f8e5, - 0x20f8e9, 0x20fae0, 0x20fae5, 0x20fae9, 0xe020e4, 0xe020ec, 0xe020ed, - 0xe020fa, 0xe0e420, 0xe0e5e4, 0xe0ec20, 0xe0ee20, 0xe120e4, 0xe120ed, - 0xe120fa, 0xe420e4, 0xe420e9, 0xe420ec, 0xe420ed, 0xe420ef, 0xe420f8, - 0xe420fa, 0xe4ec20, 0xe5e020, 0xe5e420, 0xe7e020, 0xe9e020, 0xe9e120, - 0xe9e420, 0xec20e4, 0xec20ed, 0xec20fa, 0xecf220, 0xecf920, 0xede9e9, - 0xede9f0, 0xede9f8, 0xee20e4, 0xee20ed, 0xee20fa, 0xeee120, 0xeee420, - 0xf2e420, 0xf920e4, 0xf920ed, 0xf920fa, 0xf9e420, 0xfae020, 0xfae420, - 0xfae5e9, - ]), - ]; - } - name(det) { - return det && det.c1Bytes ? 'windows-1255' : 'ISO-8859-8'; - } - language() { - return 'he'; - } -} -exports.ISO_8859_8 = ISO_8859_8; -class ISO_8859_9 extends sbcs { - byteMap() { - return [ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, - 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0xaa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0xb5, 0x20, 0x20, 0x20, 0x20, 0xba, 0x20, 0x20, 0x20, 0x20, 0x20, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, - 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x20, - 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x69, 0xfe, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, - 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x20, 0xf8, 0xf9, 0xfa, 0xfb, - 0xfc, 0xfd, 0xfe, 0xff, - ]; - } - ngrams() { - return [ - 0x206261, 0x206269, 0x206275, 0x206461, 0x206465, 0x206765, 0x206861, - 0x20696c, 0x206b61, 0x206b6f, 0x206d61, 0x206f6c, 0x207361, 0x207461, - 0x207665, 0x207961, 0x612062, 0x616b20, 0x616c61, 0x616d61, 0x616e20, - 0x616efd, 0x617220, 0x617261, 0x6172fd, 0x6173fd, 0x617961, 0x626972, - 0x646120, 0x646520, 0x646920, 0x652062, 0x65206b, 0x656469, 0x656e20, - 0x657220, 0x657269, 0x657369, 0x696c65, 0x696e20, 0x696e69, 0x697220, - 0x6c616e, 0x6c6172, 0x6c6520, 0x6c6572, 0x6e2061, 0x6e2062, 0x6e206b, - 0x6e6461, 0x6e6465, 0x6e6520, 0x6e6920, 0x6e696e, 0x6efd20, 0x72696e, - 0x72fd6e, 0x766520, 0x796120, 0x796f72, 0xfd6e20, 0xfd6e64, 0xfd6efd, - 0xfdf0fd, - ]; - } - name(det) { - return det && det.c1Bytes ? 'windows-1254' : 'ISO-8859-9'; - } - language() { - return 'tr'; - } -} -exports.ISO_8859_9 = ISO_8859_9; -class windows_1251 extends sbcs { - byteMap() { - return [ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, - 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x90, 0x83, 0x20, 0x83, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x9a, 0x20, 0x9c, 0x9d, 0x9e, 0x9f, - 0x90, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x9a, 0x20, - 0x9c, 0x9d, 0x9e, 0x9f, 0x20, 0xa2, 0xa2, 0xbc, 0x20, 0xb4, 0x20, 0x20, - 0xb8, 0x20, 0xba, 0x20, 0x20, 0x20, 0x20, 0xbf, 0x20, 0x20, 0xb3, 0xb3, - 0xb4, 0xb5, 0x20, 0x20, 0xb8, 0x20, 0xba, 0x20, 0xbc, 0xbe, 0xbe, 0xbf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, - 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0xe0, 0xe1, 0xe2, 0xe3, - 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, - 0xfc, 0xfd, 0xfe, 0xff, - ]; - } - ngrams() { - return [ - 0x20e220, 0x20e2ee, 0x20e4ee, 0x20e7e0, 0x20e820, 0x20eae0, 0x20eaee, - 0x20ede0, 0x20ede5, 0x20eee1, 0x20efee, 0x20eff0, 0x20f0e0, 0x20f1ee, - 0x20f1f2, 0x20f2ee, 0x20f7f2, 0x20fdf2, 0xe0ede8, 0xe0f2fc, 0xe3ee20, - 0xe5ebfc, 0xe5ede8, 0xe5f1f2, 0xe5f220, 0xe820ef, 0xe8e520, 0xe8e820, - 0xe8ff20, 0xebe5ed, 0xebe820, 0xebfced, 0xede020, 0xede520, 0xede8e5, - 0xede8ff, 0xedee20, 0xedeee2, 0xee20e2, 0xee20ef, 0xee20f1, 0xeee220, - 0xeee2e0, 0xeee3ee, 0xeee920, 0xeeebfc, 0xeeec20, 0xeef1f2, 0xefeeeb, - 0xeff0e5, 0xeff0e8, 0xeff0ee, 0xf0e0e2, 0xf0e5e4, 0xf1f2e0, 0xf1f2e2, - 0xf1f2e8, 0xf1ff20, 0xf2e5eb, 0xf2ee20, 0xf2eef0, 0xf2fc20, 0xf7f2ee, - 0xfbf520, - ]; - } - name() { - return 'windows-1251'; - } - language() { - return 'ru'; - } -} -exports.windows_1251 = windows_1251; -class windows_1256 extends sbcs { - byteMap() { - return [ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, - 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x81, 0x20, 0x83, - 0x20, 0x20, 0x20, 0x20, 0x88, 0x20, 0x8a, 0x20, 0x9c, 0x8d, 0x8e, 0x8f, - 0x90, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x98, 0x20, 0x9a, 0x20, - 0x9c, 0x20, 0x20, 0x9f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0xaa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0xb5, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, - 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x20, - 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, - 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0x20, 0x20, 0x20, 0x20, 0xf4, 0x20, 0x20, 0x20, 0x20, 0xf9, 0x20, 0xfb, - 0xfc, 0x20, 0x20, 0xff, - ]; - } - ngrams() { - return [ - 0x20c7e1, 0x20c7e4, 0x20c8c7, 0x20dae1, 0x20dded, 0x20e1e1, 0x20e3e4, - 0x20e6c7, 0xc720c7, 0xc7c120, 0xc7ca20, 0xc7d120, 0xc7e120, 0xc7e1c3, - 0xc7e1c7, 0xc7e1c8, 0xc7e1ca, 0xc7e1cc, 0xc7e1cd, 0xc7e1cf, 0xc7e1d3, - 0xc7e1da, 0xc7e1de, 0xc7e1e3, 0xc7e1e6, 0xc7e1ed, 0xc7e320, 0xc7e420, - 0xc7e4ca, 0xc820c7, 0xc920c7, 0xc920dd, 0xc920e1, 0xc920e3, 0xc920e6, - 0xca20c7, 0xcf20c7, 0xcfc920, 0xd120c7, 0xd1c920, 0xd320c7, 0xda20c7, - 0xdae1ec, 0xdded20, 0xe120c7, 0xe1c920, 0xe1ec20, 0xe1ed20, 0xe320c7, - 0xe3c720, 0xe3c920, 0xe3e420, 0xe420c7, 0xe520c7, 0xe5c720, 0xe6c7e1, - 0xe6e420, 0xec20c7, 0xed20c7, 0xed20e3, 0xed20e6, 0xedc920, 0xedd120, - 0xede420, - ]; - } - name() { - return 'windows-1256'; - } - language() { - return 'ar'; - } -} -exports.windows_1256 = windows_1256; -class KOI8_R extends sbcs { - byteMap() { - return [ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, - 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa3, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa3, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, - 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xc0, 0xc1, 0xc2, 0xc3, - 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, - 0xdc, 0xdd, 0xde, 0xdf, - ]; - } - ngrams() { - return [ - 0x20c4cf, 0x20c920, 0x20cbc1, 0x20cbcf, 0x20cec1, 0x20cec5, 0x20cfc2, - 0x20d0cf, 0x20d0d2, 0x20d2c1, 0x20d3cf, 0x20d3d4, 0x20d4cf, 0x20d720, - 0x20d7cf, 0x20dac1, 0x20dcd4, 0x20ded4, 0xc1cec9, 0xc1d4d8, 0xc5ccd8, - 0xc5cec9, 0xc5d3d4, 0xc5d420, 0xc7cf20, 0xc920d0, 0xc9c520, 0xc9c920, - 0xc9d120, 0xccc5ce, 0xccc920, 0xccd8ce, 0xcec120, 0xcec520, 0xcec9c5, - 0xcec9d1, 0xcecf20, 0xcecfd7, 0xcf20d0, 0xcf20d3, 0xcf20d7, 0xcfc7cf, - 0xcfca20, 0xcfccd8, 0xcfcd20, 0xcfd3d4, 0xcfd720, 0xcfd7c1, 0xd0cfcc, - 0xd0d2c5, 0xd0d2c9, 0xd0d2cf, 0xd2c1d7, 0xd2c5c4, 0xd3d120, 0xd3d4c1, - 0xd3d4c9, 0xd3d4d7, 0xd4c5cc, 0xd4cf20, 0xd4cfd2, 0xd4d820, 0xd9c820, - 0xded4cf, - ]; - } - name() { - return 'KOI8-R'; - } - language() { - return 'ru'; - } -} -exports.KOI8_R = KOI8_R; -//# sourceMappingURL=sbcs.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/sbcs.js.map b/sdks/nodejs/node_modules/chardet/lib/encoding/sbcs.js.map deleted file mode 100644 index e79edeb..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/sbcs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sbcs.js","sourceRoot":"","sources":["../../src/encoding/sbcs.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAOhE,MAAM,WAAW,GAAG,QAAQ,CAAC;AAE7B,MAAM,WAAW;IAaf,YAAY,YAAsB,EAAE,UAAoB;QAZxD,cAAS,GAAW,CAAC,CAAC;QACtB,UAAK,GAAW,CAAC,CAAC;QAElB,eAAU,GAAW,CAAC,CAAC;QACvB,aAAQ,GAAW,CAAC,CAAC;QAMrB,cAAS,GAAW,IAAI,CAAC;QAGvB,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;IAC5B,CAAC;IAKD,MAAM,CAAC,KAAe,EAAE,KAAa;QACnC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAI,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,KAAK;YAAE,KAAK,IAAI,EAAE,CAAC;QAC5C,IAAI,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,KAAK;YAAE,KAAK,IAAI,EAAE,CAAC;QAC5C,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK;YAAE,KAAK,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK;YAAE,KAAK,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK;YAAE,KAAK,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK;YAAE,KAAK,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK;YAAE,KAAK,IAAI,CAAC,CAAC;QAErC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;YAAE,OAAO,CAAC,CAAC,CAAC;QAElD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAS;QACf,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,GAAY;QACnB,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAC,CAAC;QAE9C,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,GAAY,EAAE,OAAe;QACjC,IAAI,CAAC,EACH,WAAW,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QAEzB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAG3B,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBACZ,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,CAAC;oBAC3C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACnB,CAAC;gBAED,WAAW,GAAG,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;YACrC,CAAC;QACH,CAAC;QAGD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;QAInD,IAAI,UAAU,GAAG,IAAI;YAAE,OAAO,EAAE,CAAC;QAEjC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAM,cAAc;IAIlB,YAAY,EAAU,EAAE,EAAY;QAClC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;CACF;AAED,MAAM,YAAY,GAAG,CAAC,GAAgC,EAAmB,EAAE,CACzE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAW,CAAC,CAAC;AAEnD,MAAM,IAAI;IAAV;QACE,cAAS,GAAG,IAAI,CAAC;QAET,cAAS,GAAY,SAAS,CAAC;IA+CzC,CAAC;IA7CC,MAAM;QACJ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,MAAe;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,GAAY;QAIhB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE7B,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACrD,OAAO,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,eAAK,EAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;QAExB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAEtB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACrD,IAAI,UAAU,GAAG,cAAc,EAAE,CAAC;gBAChC,cAAc,GAAG,UAAU,CAAC;gBAC5B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,eAAK,EAAC,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACvE,CAAC;CACF;AAED,MAAa,UAAW,SAAQ,IAAI;IAClC,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;YACD,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;YACD,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;YACD,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;YACD,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;YACD,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;YACD,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;YACD,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;YACD,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;YACD,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAc;QACjB,OAAO,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;IAChE,CAAC;CACF;AA1LD,gCA0LC;AAED,MAAa,UAAW,SAAQ,IAAI;IAClC,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;YACD,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;YACD,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;YACD,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAY;QACf,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;IAC5D,CAAC;CACF;AAhGD,gCAgGC;AAED,MAAa,UAAW,SAAQ,IAAI;IAClC,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO;YACL,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,IAAI;QACF,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlDD,gCAkDC;AAED,MAAa,UAAW,SAAQ,IAAI;IAClC,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO;YACL,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,IAAI;QACF,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlDD,gCAkDC;AAED,MAAa,UAAW,SAAQ,IAAI;IAClC,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO;YACL,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAY;QACf,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;IAC5D,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlDD,gCAkDC;AAED,MAAa,UAAW,SAAQ,IAAI;IAClC,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;YACD,IAAI,cAAc,CAChB,IAAI,EACJ;gBACE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBACpE,QAAQ;aACT,CACF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAY;QACf,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;IAC5D,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAtED,gCAsEC;AAED,MAAa,UAAW,SAAQ,IAAI;IAClC,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO;YACL,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAY;QACf,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;IAC5D,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlDD,gCAkDC;AAED,MAAa,YAAa,SAAQ,IAAI;IACpC,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO;YACL,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,IAAI;QACF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlDD,oCAkDC;AAED,MAAa,YAAa,SAAQ,IAAI;IACpC,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO;YACL,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,IAAI;QACF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlDD,oCAkDC;AAED,MAAa,MAAO,SAAQ,IAAI;IAC9B,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO;YACL,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YACpE,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,IAAI;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlDD,wBAkDC"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/unicode.d.ts b/sdks/nodejs/node_modules/chardet/lib/encoding/unicode.d.ts deleted file mode 100644 index 4b24f52..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/unicode.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { Context, Recogniser } from '.'; -import { type Match, type EncodingName } from '../match'; -export declare class UTF_16BE implements Recogniser { - name(): EncodingName; - match(det: Context): Match | null; -} -export declare class UTF_16LE implements Recogniser { - name(): EncodingName; - match(det: Context): Match | null; -} -interface WithGetChar { - getChar(input: Uint8Array, index: number): number; -} -declare class UTF_32 implements Recogniser, WithGetChar { - name(): EncodingName; - getChar(_input: Uint8Array, _index: number): number; - match(det: Context): Match | null; -} -export declare class UTF_32BE extends UTF_32 { - name(): EncodingName; - getChar(input: Uint8Array, index: number): number; -} -export declare class UTF_32LE extends UTF_32 { - name(): EncodingName; - getChar(input: Uint8Array, index: number): number; -} -export {}; diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/unicode.js b/sdks/nodejs/node_modules/chardet/lib/encoding/unicode.js deleted file mode 100644 index 54a4f54..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/unicode.js +++ /dev/null @@ -1,109 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.UTF_32LE = exports.UTF_32BE = exports.UTF_16LE = exports.UTF_16BE = void 0; -const match_1 = __importDefault(require("../match")); -class UTF_16BE { - name() { - return 'UTF-16BE'; - } - match(det) { - const input = det.rawInput; - if (input.length >= 2 && - (input[0] & 0xff) == 0xfe && - (input[1] & 0xff) == 0xff) { - return (0, match_1.default)(det, this, 100); - } - return null; - } -} -exports.UTF_16BE = UTF_16BE; -class UTF_16LE { - name() { - return 'UTF-16LE'; - } - match(det) { - const input = det.rawInput; - if (input.length >= 2 && - (input[0] & 0xff) == 0xff && - (input[1] & 0xff) == 0xfe) { - if (input.length >= 4 && input[2] == 0x00 && input[3] == 0x00) { - return null; - } - return (0, match_1.default)(det, this, 100); - } - return null; - } -} -exports.UTF_16LE = UTF_16LE; -class UTF_32 { - name() { - return 'UTF-32'; - } - getChar(_input, _index) { - return -1; - } - match(det) { - let numValid = 0, numInvalid = 0, hasBOM = false, confidence = 0; - const limit = (det.rawLen / 4) * 4; - const input = det.rawInput; - if (limit == 0) { - return null; - } - if (this.getChar(input, 0) == 0x0000feff) { - hasBOM = true; - } - for (let i = 0; i < limit; i += 4) { - const ch = this.getChar(input, i); - if (ch < 0 || ch >= 0x10ffff || (ch >= 0xd800 && ch <= 0xdfff)) { - numInvalid += 1; - } - else { - numValid += 1; - } - } - if (hasBOM && numInvalid == 0) { - confidence = 100; - } - else if (hasBOM && numValid > numInvalid * 10) { - confidence = 80; - } - else if (numValid > 3 && numInvalid == 0) { - confidence = 100; - } - else if (numValid > 0 && numInvalid == 0) { - confidence = 80; - } - else if (numValid > numInvalid * 10) { - confidence = 25; - } - return confidence == 0 ? null : (0, match_1.default)(det, this, confidence); - } -} -class UTF_32BE extends UTF_32 { - name() { - return 'UTF-32BE'; - } - getChar(input, index) { - return (((input[index + 0] & 0xff) << 24) | - ((input[index + 1] & 0xff) << 16) | - ((input[index + 2] & 0xff) << 8) | - (input[index + 3] & 0xff)); - } -} -exports.UTF_32BE = UTF_32BE; -class UTF_32LE extends UTF_32 { - name() { - return 'UTF-32LE'; - } - getChar(input, index) { - return (((input[index + 3] & 0xff) << 24) | - ((input[index + 2] & 0xff) << 16) | - ((input[index + 1] & 0xff) << 8) | - (input[index + 0] & 0xff)); - } -} -exports.UTF_32LE = UTF_32LE; -//# sourceMappingURL=unicode.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/unicode.js.map b/sdks/nodejs/node_modules/chardet/lib/encoding/unicode.js.map deleted file mode 100644 index 991c015..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/unicode.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"unicode.js","sourceRoot":"","sources":["../../src/encoding/unicode.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAMhE,MAAa,QAAQ;IACnB,IAAI;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,GAAY;QAChB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC;QAE3B,IACE,KAAK,CAAC,MAAM,IAAI,CAAC;YACjB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI;YACzB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,EACzB,CAAC;YACD,OAAO,IAAA,eAAK,EAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;QAGD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAnBD,4BAmBC;AAED,MAAa,QAAQ;IACnB,IAAI;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,GAAY;QAChB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC;QAE3B,IACE,KAAK,CAAC,MAAM,IAAI,CAAC;YACjB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI;YACzB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,EACzB,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBAE9D,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,IAAA,eAAK,EAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;QAGD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAxBD,4BAwBC;AAMD,MAAM,MAAM;IACV,IAAI;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,MAAkB,EAAE,MAAc;QACxC,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,GAAY;QAChB,IAAI,QAAQ,GAAG,CAAC,EACd,UAAU,GAAG,CAAC,EACd,MAAM,GAAG,KAAK,EACd,UAAU,GAAG,CAAC,CAAC;QACjB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC;QAE3B,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;YACzC,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAElC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,QAAQ,IAAI,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC;gBAC/D,UAAU,IAAI,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,QAAQ,IAAI,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QAID,IAAI,MAAM,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YAC9B,UAAU,GAAG,GAAG,CAAC;QACnB,CAAC;aAAM,IAAI,MAAM,IAAI,QAAQ,GAAG,UAAU,GAAG,EAAE,EAAE,CAAC;YAChD,UAAU,GAAG,EAAE,CAAC;QAClB,CAAC;aAAM,IAAI,QAAQ,GAAG,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YAC3C,UAAU,GAAG,GAAG,CAAC;QACnB,CAAC;aAAM,IAAI,QAAQ,GAAG,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YAC3C,UAAU,GAAG,EAAE,CAAC;QAClB,CAAC;aAAM,IAAI,QAAQ,GAAG,UAAU,GAAG,EAAE,EAAE,CAAC;YAEtC,UAAU,GAAG,EAAE,CAAC;QAClB,CAAC;QAGD,OAAO,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,eAAK,EAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/D,CAAC;CACF;AAED,MAAa,QAAS,SAAQ,MAAM;IAClC,IAAI;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,KAAiB,EAAE,KAAa;QACtC,OAAO,CACL,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAC1B,CAAC;IACJ,CAAC;CACF;AAZD,4BAYC;AAED,MAAa,QAAS,SAAQ,MAAM;IAClC,IAAI;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,KAAiB,EAAE,KAAa;QACtC,OAAO,CACL,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAC1B,CAAC;IACJ,CAAC;CACF;AAbD,4BAaC"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/utf8.d.ts b/sdks/nodejs/node_modules/chardet/lib/encoding/utf8.d.ts deleted file mode 100644 index bfcb6c3..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/utf8.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { Context, Recogniser } from '.'; -import { type EncodingName, type Match } from '../match'; -export default class Utf8 implements Recogniser { - name(): EncodingName; - match(det: Context): Match | null; -} diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/utf8.js b/sdks/nodejs/node_modules/chardet/lib/encoding/utf8.js deleted file mode 100644 index 9976a9b..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/utf8.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const match_1 = __importDefault(require("../match")); -class Utf8 { - name() { - return 'UTF-8'; - } - match(det) { - let hasBOM = false, numValid = 0, numInvalid = 0, trailBytes = 0, confidence; - const input = det.rawInput; - if (det.rawLen >= 3 && - (input[0] & 0xff) == 0xef && - (input[1] & 0xff) == 0xbb && - (input[2] & 0xff) == 0xbf) { - hasBOM = true; - } - for (let i = 0; i < det.rawLen; i++) { - const b = input[i]; - if ((b & 0x80) == 0) - continue; - if ((b & 0x0e0) == 0x0c0) { - trailBytes = 1; - } - else if ((b & 0x0f0) == 0x0e0) { - trailBytes = 2; - } - else if ((b & 0x0f8) == 0xf0) { - trailBytes = 3; - } - else { - numInvalid++; - if (numInvalid > 5) - break; - trailBytes = 0; - } - for (;;) { - i++; - if (i >= det.rawLen) - break; - if ((input[i] & 0xc0) != 0x080) { - numInvalid++; - break; - } - if (--trailBytes == 0) { - numValid++; - break; - } - } - } - confidence = 0; - if (hasBOM && numInvalid == 0) - confidence = 100; - else if (hasBOM && numValid > numInvalid * 10) - confidence = 80; - else if (numValid > 3 && numInvalid == 0) - confidence = 100; - else if (numValid > 0 && numInvalid == 0) - confidence = 80; - else if (numValid == 0 && numInvalid == 0) - confidence = 10; - else if (numValid > numInvalid * 10) - confidence = 25; - else - return null; - return (0, match_1.default)(det, this, confidence); - } -} -exports.default = Utf8; -//# sourceMappingURL=utf8.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/encoding/utf8.js.map b/sdks/nodejs/node_modules/chardet/lib/encoding/utf8.js.map deleted file mode 100644 index 8f39dc1..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/encoding/utf8.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utf8.js","sourceRoot":"","sources":["../../src/encoding/utf8.ts"],"names":[],"mappings":";;;;;AACA,qDAAgE;AAEhE,MAAqB,IAAI;IACvB,IAAI;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,GAAY;QAChB,IAAI,MAAM,GAAG,KAAK,EAChB,QAAQ,GAAG,CAAC,EACZ,UAAU,GAAG,CAAC,EACd,UAAU,GAAG,CAAC,EACd,UAAU,CAAC;QACb,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC;QAE3B,IACE,GAAG,CAAC,MAAM,IAAI,CAAC;YACf,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI;YACzB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI;YACzB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,EACzB,CAAC;YACD,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAGD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YAG9B,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;gBACzB,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;gBAChC,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC/B,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,UAAU,EAAE,CAAC;gBACb,IAAI,UAAU,GAAG,CAAC;oBAAE,MAAM;gBAC1B,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC;YAGD,SAAS,CAAC;gBACR,CAAC,EAAE,CAAC;gBACJ,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM;oBAAE,MAAM;gBAE3B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;oBAC/B,UAAU,EAAE,CAAC;oBACb,MAAM;gBACR,CAAC;gBACD,IAAI,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC;oBACtB,QAAQ,EAAE,CAAC;oBACX,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAID,UAAU,GAAG,CAAC,CAAC;QACf,IAAI,MAAM,IAAI,UAAU,IAAI,CAAC;YAAE,UAAU,GAAG,GAAG,CAAC;aAC3C,IAAI,MAAM,IAAI,QAAQ,GAAG,UAAU,GAAG,EAAE;YAAE,UAAU,GAAG,EAAE,CAAC;aAC1D,IAAI,QAAQ,GAAG,CAAC,IAAI,UAAU,IAAI,CAAC;YAAE,UAAU,GAAG,GAAG,CAAC;aACtD,IAAI,QAAQ,GAAG,CAAC,IAAI,UAAU,IAAI,CAAC;YAAE,UAAU,GAAG,EAAE,CAAC;aACrD,IAAI,QAAQ,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC;YAEvC,UAAU,GAAG,EAAE,CAAC;aACb,IAAI,QAAQ,GAAG,UAAU,GAAG,EAAE;YAEjC,UAAU,GAAG,EAAE,CAAC;;YACb,OAAO,IAAI,CAAC;QAEjB,OAAO,IAAA,eAAK,EAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;CACF;AAzED,uBAyEC"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/fs/browser.d.ts b/sdks/nodejs/node_modules/chardet/lib/fs/browser.d.ts deleted file mode 100644 index 6f26fa1..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/fs/browser.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const _default: () => never; -export default _default; diff --git a/sdks/nodejs/node_modules/chardet/lib/fs/browser.js b/sdks/nodejs/node_modules/chardet/lib/fs/browser.js deleted file mode 100644 index 4fffa57..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/fs/browser.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = () => { - throw new Error('File system is not available'); -}; -//# sourceMappingURL=browser.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/fs/browser.js.map b/sdks/nodejs/node_modules/chardet/lib/fs/browser.js.map deleted file mode 100644 index 867c22b..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/fs/browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/fs/browser.ts"],"names":[],"mappings":";;AAAA,kBAAe,GAAG,EAAE;IAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAClD,CAAC,CAAC"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/fs/node.d.ts b/sdks/nodejs/node_modules/chardet/lib/fs/node.d.ts deleted file mode 100644 index 2840c93..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/fs/node.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const _default: () => any; -export default _default; diff --git a/sdks/nodejs/node_modules/chardet/lib/fs/node.js b/sdks/nodejs/node_modules/chardet/lib/fs/node.js deleted file mode 100644 index 80b3b33..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/fs/node.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -let fsModule; -exports.default = () => { - if (typeof module === 'object' && typeof module.exports === 'object') { - fsModule = fsModule ? fsModule : require('fs'); - return fsModule; - } - throw new Error('File system is not available'); -}; -//# sourceMappingURL=node.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/fs/node.js.map b/sdks/nodejs/node_modules/chardet/lib/fs/node.js.map deleted file mode 100644 index be5cc9a..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/fs/node.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/fs/node.ts"],"names":[],"mappings":";;AAAA,IAAI,QAAa,CAAC;AAElB,kBAAe,GAAG,EAAE;IAClB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACrE,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAClD,CAAC,CAAC"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/index.d.ts b/sdks/nodejs/node_modules/chardet/lib/index.d.ts deleted file mode 100644 index 1b9f15d..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/index.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Match } from './match'; -interface FullOptions { - sampleSize: number; - offset: number; -} -export type Options = Partial; -export type AnalyseResult = Match[]; -export type DetectResult = string | null; -export declare const detect: (buffer: Uint8Array) => string | null; -export declare const analyse: (buffer: Uint8Array) => AnalyseResult; -export declare const detectFile: (filepath: string, opts?: Options) => Promise; -export declare const detectFileSync: (filepath: string, opts?: Options) => DetectResult; -declare const _default: { - analyse: (buffer: Uint8Array) => AnalyseResult; - detect: (buffer: Uint8Array) => string | null; - detectFileSync: (filepath: string, opts?: Options) => DetectResult; - detectFile: (filepath: string, opts?: Options) => Promise; -}; -export default _default; -export { Match, EncodingName } from './match'; diff --git a/sdks/nodejs/node_modules/chardet/lib/index.js b/sdks/nodejs/node_modules/chardet/lib/index.js deleted file mode 100644 index bfbd185..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/index.js +++ /dev/null @@ -1,174 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.detectFileSync = exports.detectFile = exports.analyse = exports.detect = void 0; -const node_1 = __importDefault(require("./fs/node")); -const ascii_1 = __importDefault(require("./encoding/ascii")); -const utf8_1 = __importDefault(require("./encoding/utf8")); -const unicode = __importStar(require("./encoding/unicode")); -const mbcs = __importStar(require("./encoding/mbcs")); -const sbcs = __importStar(require("./encoding/sbcs")); -const iso2022 = __importStar(require("./encoding/iso2022")); -const utils_1 = require("./utils"); -const recognisers = [ - new utf8_1.default(), - new unicode.UTF_16BE(), - new unicode.UTF_16LE(), - new unicode.UTF_32BE(), - new unicode.UTF_32LE(), - new mbcs.sjis(), - new mbcs.big5(), - new mbcs.euc_jp(), - new mbcs.euc_kr(), - new mbcs.gb_18030(), - new iso2022.ISO_2022_JP(), - new iso2022.ISO_2022_KR(), - new iso2022.ISO_2022_CN(), - new sbcs.ISO_8859_1(), - new sbcs.ISO_8859_2(), - new sbcs.ISO_8859_5(), - new sbcs.ISO_8859_6(), - new sbcs.ISO_8859_7(), - new sbcs.ISO_8859_8(), - new sbcs.ISO_8859_9(), - new sbcs.windows_1251(), - new sbcs.windows_1256(), - new sbcs.KOI8_R(), - new ascii_1.default(), -]; -const detect = (buffer) => { - const matches = (0, exports.analyse)(buffer); - return matches.length > 0 ? matches[0].name : null; -}; -exports.detect = detect; -const analyse = (buffer) => { - if (!(0, utils_1.isByteArray)(buffer)) { - throw new Error('Input must be a byte array, e.g. Buffer or Uint8Array'); - } - const byteStats = []; - for (let i = 0; i < 256; i++) - byteStats[i] = 0; - for (let i = buffer.length - 1; i >= 0; i--) - byteStats[buffer[i] & 0x00ff]++; - let c1Bytes = false; - for (let i = 0x80; i <= 0x9f; i += 1) { - if (byteStats[i] !== 0) { - c1Bytes = true; - break; - } - } - const context = { - byteStats, - c1Bytes, - rawInput: buffer, - rawLen: buffer.length, - inputBytes: buffer, - inputLen: buffer.length, - }; - const matches = recognisers - .map((rec) => { - return rec.match(context); - }) - .filter((match) => { - return !!match; - }) - .sort((a, b) => { - return b.confidence - a.confidence; - }); - return matches; -}; -exports.analyse = analyse; -const detectFile = (filepath, opts = {}) => new Promise((resolve, reject) => { - let fd; - const fs = (0, node_1.default)(); - const handler = (err, buffer) => { - if (fd) { - fs.closeSync(fd); - } - if (err) { - reject(err); - } - else if (buffer) { - resolve((0, exports.detect)(buffer)); - } - else { - reject(new Error('No error and no buffer received')); - } - }; - const sampleSize = (opts === null || opts === void 0 ? void 0 : opts.sampleSize) || 0; - if (sampleSize > 0) { - fd = fs.openSync(filepath, 'r'); - let sample = Buffer.allocUnsafe(sampleSize); - fs.read(fd, sample, 0, sampleSize, opts.offset, (err, bytesRead) => { - if (err) { - handler(err, null); - } - else { - if (bytesRead < sampleSize) { - sample = sample.subarray(0, bytesRead); - } - handler(null, sample); - } - }); - return; - } - fs.readFile(filepath, handler); -}); -exports.detectFile = detectFile; -const detectFileSync = (filepath, opts = {}) => { - const fs = (0, node_1.default)(); - if (opts && opts.sampleSize) { - const fd = fs.openSync(filepath, 'r'); - let sample = Buffer.allocUnsafe(opts.sampleSize); - const bytesRead = fs.readSync(fd, sample, 0, opts.sampleSize, opts.offset); - if (bytesRead < opts.sampleSize) { - sample = sample.subarray(0, bytesRead); - } - fs.closeSync(fd); - return (0, exports.detect)(sample); - } - return (0, exports.detect)(fs.readFileSync(filepath)); -}; -exports.detectFileSync = detectFileSync; -exports.default = { - analyse: exports.analyse, - detect: exports.detect, - detectFileSync: exports.detectFileSync, - detectFile: exports.detectFile, -}; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/index.js.map b/sdks/nodejs/node_modules/chardet/lib/index.js.map deleted file mode 100644 index 3b2929b..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,qDAA+B;AAE/B,6DAAqC;AACrC,2DAAmC;AACnC,4DAA8C;AAC9C,sDAAwC;AACxC,sDAAwC;AACxC,4DAA8C;AAC9C,mCAAsC;AAStC,MAAM,WAAW,GAAiB;IAChC,IAAI,cAAI,EAAE;IACV,IAAI,OAAO,CAAC,QAAQ,EAAE;IACtB,IAAI,OAAO,CAAC,QAAQ,EAAE;IACtB,IAAI,OAAO,CAAC,QAAQ,EAAE;IACtB,IAAI,OAAO,CAAC,QAAQ,EAAE;IACtB,IAAI,IAAI,CAAC,IAAI,EAAE;IACf,IAAI,IAAI,CAAC,IAAI,EAAE;IACf,IAAI,IAAI,CAAC,MAAM,EAAE;IACjB,IAAI,IAAI,CAAC,MAAM,EAAE;IACjB,IAAI,IAAI,CAAC,QAAQ,EAAE;IACnB,IAAI,OAAO,CAAC,WAAW,EAAE;IACzB,IAAI,OAAO,CAAC,WAAW,EAAE;IACzB,IAAI,OAAO,CAAC,WAAW,EAAE;IACzB,IAAI,IAAI,CAAC,UAAU,EAAE;IACrB,IAAI,IAAI,CAAC,UAAU,EAAE;IACrB,IAAI,IAAI,CAAC,UAAU,EAAE;IACrB,IAAI,IAAI,CAAC,UAAU,EAAE;IACrB,IAAI,IAAI,CAAC,UAAU,EAAE;IACrB,IAAI,IAAI,CAAC,UAAU,EAAE;IACrB,IAAI,IAAI,CAAC,UAAU,EAAE;IACrB,IAAI,IAAI,CAAC,YAAY,EAAE;IACvB,IAAI,IAAI,CAAC,YAAY,EAAE;IACvB,IAAI,IAAI,CAAC,MAAM,EAAE;IACjB,IAAI,eAAK,EAAE;CACZ,CAAC;AAKK,MAAM,MAAM,GAAG,CAAC,MAAkB,EAAiB,EAAE;IAC1D,MAAM,OAAO,GAAY,IAAA,eAAO,EAAC,MAAM,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACrD,CAAC,CAAC;AAHW,QAAA,MAAM,UAGjB;AAEK,MAAM,OAAO,GAAG,CAAC,MAAkB,EAAiB,EAAE;IAC3D,IAAI,CAAC,IAAA,mBAAW,EAAC,MAAM,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAGD,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAE/C,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;IAE7E,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAY;QACvB,SAAS;QACT,OAAO;QACP,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,MAAM,CAAC,MAAM;KACxB,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW;SACxB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,OAAO,CAAE,CAAC,UAAU,GAAG,CAAE,CAAC,UAAU,CAAC;IACvC,CAAC,CAAC,CAAC;IAEL,OAAO,OAAkB,CAAC;AAC5B,CAAC,CAAC;AAxCW,QAAA,OAAO,WAwClB;AAEK,MAAM,UAAU,GAAG,CACxB,QAAgB,EAChB,OAAgB,EAAE,EACK,EAAE,CACzB,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,IAAI,EAAO,CAAC;IACZ,MAAM,EAAE,GAAG,IAAA,cAAM,GAAE,CAAC;IAEpB,MAAM,OAAO,GAAG,CAAC,GAAiB,EAAE,MAAqB,EAAE,EAAE;QAC3D,IAAI,EAAE,EAAE,CAAC;YACP,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QAED,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,IAAA,cAAM,EAAC,MAAM,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,KAAI,CAAC,CAAC;IACzC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAE5C,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,GAAiC,EAAE,SAAiB,EAAE,EAAE;YACvG,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;oBAC3B,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAzCQ,QAAA,UAAU,cAyClB;AAEE,MAAM,cAAc,GAAG,CAC5B,QAAgB,EAChB,OAAgB,EAAE,EACJ,EAAE;IAChB,MAAM,EAAE,GAAG,IAAA,cAAM,GAAE,CAAC;IAEpB,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEjD,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjB,OAAO,IAAA,cAAM,EAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,IAAA,cAAM,EAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAnBW,QAAA,cAAc,kBAmBzB;AAEF,kBAAe;IACb,OAAO,EAAP,eAAO;IACP,MAAM,EAAN,cAAM;IACN,cAAc,EAAd,sBAAc;IACd,UAAU,EAAV,kBAAU;CACX,CAAC"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/match.d.ts b/sdks/nodejs/node_modules/chardet/lib/match.d.ts deleted file mode 100644 index 93daf90..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/match.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Context, Recogniser } from "./encoding"; -export type EncodingName = 'ASCII' | 'Big5' | 'EUC-JP' | 'EUC-KR' | 'GB18030' | 'ISO_2022' | 'ISO-2022-CN' | 'ISO-2022-JP' | 'ISO-2022-KR' | 'ISO-8859-1' | 'ISO-8859-2' | 'ISO-8859-5' | 'ISO-8859-6' | 'ISO-8859-7' | 'ISO-8859-8' | 'ISO-8859-9' | 'ISO-8859-9' | 'KOI8-R' | 'mbcs' | 'sbcs' | 'Shift_JIS' | 'UTF-16BE' | 'UTF-16LE' | 'UTF-32' | 'UTF-32BE' | 'UTF-32LE' | 'UTF-8' | 'windows-1250' | 'windows-1251' | 'windows-1252' | 'windows-1253' | 'windows-1254' | 'windows-1254' | 'windows-1255' | 'windows-1256'; -export interface Match { - confidence: number; - name: EncodingName; - lang?: string; -} -declare const _default: (ctx: Context, rec: Recogniser, confidence: number) => Match; -export default _default; diff --git a/sdks/nodejs/node_modules/chardet/lib/match.js b/sdks/nodejs/node_modules/chardet/lib/match.js deleted file mode 100644 index e17c203..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/match.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = (ctx, rec, confidence) => ({ - confidence, - name: rec.name(ctx), - lang: rec.language ? rec.language() : undefined, -}); -//# sourceMappingURL=match.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/match.js.map b/sdks/nodejs/node_modules/chardet/lib/match.js.map deleted file mode 100644 index 1be8bfc..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/match.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"match.js","sourceRoot":"","sources":["../src/match.ts"],"names":[],"mappings":";;AA6CA,kBAAe,CAAC,GAAY,EAAE,GAAe,EAAE,UAAkB,EAAS,EAAE,CAAC,CAAC;IAC5E,UAAU;IACV,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;CAChD,CAAC,CAAC"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/utils.d.ts b/sdks/nodejs/node_modules/chardet/lib/utils.d.ts deleted file mode 100644 index 2d19a09..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/utils.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const isByteArray: (input: any) => input is Uint8Array; diff --git a/sdks/nodejs/node_modules/chardet/lib/utils.js b/sdks/nodejs/node_modules/chardet/lib/utils.js deleted file mode 100644 index 1c7ba9d..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/utils.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isByteArray = void 0; -const isByteArray = (input) => { - if (input == null || typeof input != 'object') - return false; - return isFinite(input.length) && input.length >= 0; -}; -exports.isByteArray = isByteArray; -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/lib/utils.js.map b/sdks/nodejs/node_modules/chardet/lib/utils.js.map deleted file mode 100644 index 3c5d890..0000000 --- a/sdks/nodejs/node_modules/chardet/lib/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAEO,MAAM,WAAW,GAAG,CAAC,KAAU,EAAuB,EAAE;IAC7D,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5D,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC;AAJW,QAAA,WAAW,eAItB"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/chardet/package.json b/sdks/nodejs/node_modules/chardet/package.json deleted file mode 100644 index ba24fbf..0000000 --- a/sdks/nodejs/node_modules/chardet/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "name": "chardet", - "version": "2.1.1", - "homepage": "https://github.com/runk/node-chardet", - "description": "Character encoding detector", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/runk/node-chardet.git" - }, - "bugs": { - "mail": "deadrunk@gmail.com", - "url": "http://github.com/runk/node-chardet/issues" - }, - "scripts": { - "build": "rm -rf lib/* && tsc", - "format": "prettier --write ./src/**/*.ts", - "format:check": "prettier --list-different ./src/**/*.ts", - "test": "jest", - "prepublish": "npm run build", - "semantic-release": "semantic-release", - "typecheck": "tsc" - }, - "files": [ - "lib" - ], - "main": "lib/index.js", - "typings": "lib/index.d.ts", - "engine": { - "node": ">=4" - }, - "readmeFilename": "README.md", - "directories": { - "test": "test" - }, - "devDependencies": { - "@types/jest": "^30.0.0", - "@types/node": "^22.0.0", - "jest": "^30.0.0", - "prettier": "^3.0.0", - "semantic-release": "^24.0.0", - "ts-jest": "^29.0.0", - "ts-node": "^10.9.1", - "typescript": "^5.0.0" - }, - "keywords": [ - "encoding", - "character", - "utf8", - "detector", - "chardet", - "icu", - "character detection", - "character encoding", - "language", - "iconv", - "iconv-light", - "UTF-8", - "UTF-16", - "UTF-32", - "ISO-2022-JP", - "ISO-2022-KR", - "ISO-2022-CN", - "Shift_JIS", - "Big5", - "EUC-JP", - "EUC-KR", - "GB18030", - "ISO-8859-1", - "ISO-8859-2", - "ISO-8859-5", - "ISO-8859-6", - "ISO-8859-7", - "ISO-8859-8", - "ISO-8859-9", - "windows-1250", - "windows-1251", - "windows-1252", - "windows-1253", - "windows-1254", - "windows-1255", - "windows-1256", - "KOI8-R" - ], - "author": "Dmitry Shirokov ", - "contributors": [ - "@spikying", - "@wtgtybhertgeghgtwtg", - "@suisho", - "@seangarner", - "@zevanty" - ], - "browser": { - "./lib/fs/node.js": "./lib/fs/browser.js" - } -} diff --git a/sdks/nodejs/node_modules/cli-width/LICENSE b/sdks/nodejs/node_modules/cli-width/LICENSE deleted file mode 100644 index 6a937f0..0000000 --- a/sdks/nodejs/node_modules/cli-width/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright (c) 2015, Ilya Radchenko - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, 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. diff --git a/sdks/nodejs/node_modules/cli-width/README.md b/sdks/nodejs/node_modules/cli-width/README.md deleted file mode 100644 index 2714934..0000000 --- a/sdks/nodejs/node_modules/cli-width/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# cli-width - -Get stdout window width, with four fallbacks, `tty`, `output.columns`, a custom environment variable and then a default. - -[![npm version](https://badge.fury.io/js/cli-width.svg)](http://badge.fury.io/js/cli-width) -[![Build Status](https://travis-ci.org/knownasilya/cli-width.svg)](https://travis-ci.org/knownasilya/cli-width) -[![Coverage Status](https://coveralls.io/repos/knownasilya/cli-width/badge.svg?branch=master&service=github)](https://coveralls.io/github/knownasilya/cli-width?branch=master) - -Tested against Node v12 to v20. -Includes TypeScript types. - -## Usage - -``` -npm install --save cli-width -``` - -```js -const cliWidth = require('cli-width'); - -cliWidth(); // maybe 204 :) -``` - -You can also set the `CLI_WIDTH` environment variable. - -If none of the methods are supported, and the environment variable isn't set, -the default width value is going to be `0`, that can be changed using the configurable `options`. - -## API - -### cliWidth([options]) - -`cliWidth` can be configured using an `options` parameter, the possible properties are: - -- **defaultWidth**\ Defines a default value to be used if none of the methods are available, defaults to `0` -- **output**\ A stream to be used to read width values from, defaults to `process.stdout` -- **tty**\ TTY module to try to read width from as a fallback, defaults to `require('tty')` - -### Examples - -Defining both a default width value and a stream output to try to read from: - -```js -const cliWidth = require('cli-width'); -const ttys = require('ttys'); - -cliWidth({ - defaultWidth: 80, - output: ttys.output, -}); -``` - -Defines a different tty module to read width from: - -```js -const cliWidth = require('cli-width'); -const ttys = require('ttys'); - -cliWidth({ - tty: ttys, -}); -``` - -## Tests - -```bash -npm install -npm test -``` - -Coverage can be generated with `npm run coverage`. diff --git a/sdks/nodejs/node_modules/cli-width/index.d.ts b/sdks/nodejs/node_modules/cli-width/index.d.ts deleted file mode 100644 index 4dfa444..0000000 --- a/sdks/nodejs/node_modules/cli-width/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Type definitions for cli-width 4.0 -/// - -import { Stream } from 'stream'; -import tty = require('tty'); - -declare function cliWidth(options?: { - defaultWidth?: number; - output?: Stream; - tty?: typeof tty; -}): number; - -export = cliWidth; diff --git a/sdks/nodejs/node_modules/cli-width/index.js b/sdks/nodejs/node_modules/cli-width/index.js deleted file mode 100644 index c780338..0000000 --- a/sdks/nodejs/node_modules/cli-width/index.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict'; - -module.exports = cliWidth; - -function normalizeOpts(options) { - const defaultOpts = { - defaultWidth: 0, - output: process.stdout, - tty: require('tty'), - }; - - if (!options) { - return defaultOpts; - } - - Object.keys(defaultOpts).forEach(function (key) { - if (!options[key]) { - options[key] = defaultOpts[key]; - } - }); - - return options; -} - -function cliWidth(options) { - const opts = normalizeOpts(options); - - if (opts.output.getWindowSize) { - return opts.output.getWindowSize()[0] || opts.defaultWidth; - } - - if (opts.tty.getWindowSize) { - return opts.tty.getWindowSize()[1] || opts.defaultWidth; - } - - if (opts.output.columns) { - return opts.output.columns; - } - - if (process.env.CLI_WIDTH) { - const width = parseInt(process.env.CLI_WIDTH, 10); - - if (!isNaN(width) && width !== 0) { - return width; - } - } - - return opts.defaultWidth; -} diff --git a/sdks/nodejs/node_modules/cli-width/package.json b/sdks/nodejs/node_modules/cli-width/package.json deleted file mode 100644 index cbd69e5..0000000 --- a/sdks/nodejs/node_modules/cli-width/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "cli-width", - "version": "4.1.0", - "description": "Get stdout window width, with two fallbacks, tty and then a default.", - "main": "index.js", - "scripts": { - "test": "node test | tspec", - "coverage": "nyc node test | tspec", - "coveralls": "npm run coverage -s && coveralls < coverage/lcov.info", - "release": "standard-version" - }, - "repository": { - "type": "git", - "url": "git@github.com:knownasilya/cli-width.git" - }, - "author": "Ilya Radchenko ", - "license": "ISC", - "bugs": { - "url": "https://github.com/knownasilya/cli-width/issues" - }, - "homepage": "https://github.com/knownasilya/cli-width", - "engines": { - "node": ">= 12" - }, - "devDependencies": { - "coveralls": "^3.1.1", - "nyc": "^15.1.0", - "standard-version": "^9.3.2", - "tap-spec": "^5.0.0", - "tape": "^5.5.2" - }, - "volta": { - "node": "12.22.11", - "npm": "8.5.5" - }, - "files": [ - "index.js", - "index.d.ts" - ] -} diff --git a/sdks/nodejs/node_modules/clipanion/README.md b/sdks/nodejs/node_modules/clipanion/README.md deleted file mode 100644 index d0e8bce..0000000 --- a/sdks/nodejs/node_modules/clipanion/README.md +++ /dev/null @@ -1,98 +0,0 @@ -# Clipanion - -> Type-safe CLI library with no runtime dependencies - -[![npm version](https://img.shields.io/npm/v/clipanion.svg)](https://yarnpkg.com/package/clipanion) [![Licence](https://img.shields.io/npm/l/clipanion.svg)](https://github.com/arcanis/clipanion#license-mit) [![Yarn](https://img.shields.io/github/package-json/packageManager/arcanis/clipanion)](https://github.com/yarnpkg/berry) - -## Installation - -```sh -yarn add clipanion -``` - -## Why - -- Clipanion supports advanced typing mechanisms -- Clipanion supports nested commands (`yarn workspaces list`) -- Clipanion supports transparent option proxying without `--` (for example `yarn dlx eslint --fix`) -- Clipanion supports all option types you could think of (including negations, batches, ...) -- Clipanion offers a [Typanion](https://github.com/arcanis/typanion) integration for increased validation capabilities -- Clipanion generates an optimized state machine out of your commands -- Clipanion generates good-looking help pages out of the box -- Clipanion offers common optional command entries out-of-the-box (e.g. version command, help command) - -Clipanion is used in [Yarn](https://github.com/yarnpkg/berry) with great success. - -## Documentation - -Check the website for our documentation: [mael.dev/clipanion](https://mael.dev/clipanion/). - -## Migration - -You can use [`clipanion-v3-codemod`](https://github.com/paul-soporan/clipanion-v3-codemod) to migrate a Clipanion v2 codebase to v3. - -## Overview - -Commands are declared by extending from the `Command` abstract base class, and more specifically by implementing its `execute` method which will then be called by Clipanion. Whatever exit code it returns will then be set as the exit code for the process: - -```ts -class SuccessCommand extends Command { - async execute() { - return 0; - } -} -``` - -Commands can also be exposed via one or many arbitrary paths using the `paths` static property: - -```ts -class FooCommand extends Command { - static paths = [[`foo`]]; - async execute() { - this.context.stdout.write(`Foo\n`); - } -} - -class BarCommand extends Command { - static paths = [[`bar`]]; - async execute() { - this.context.stdout.write(`Bar\n`); - } -} -``` - -Options are defined as regular class properties, annotated by the helpers provided in the `Option` namespace. If you use TypeScript, all property types will then be properly inferred with no extra work required: - -```ts -class HelloCommand extends Command { - // Positional option - name = Option.String(); - - async execute() { - this.context.stdout.write(`Hello ${this.name}!\n`); - } -} -``` - -Option arguments can be validated and coerced using the [Typanion](https://mael.dev/typanion/) library: - -```ts -class AddCommand extends Command { - a = Option.String({required: true, validator: t.isNumber()}); - b = Option.String({required: true, validator: t.isNumber()}); - - async execute() { - this.context.stdout.write(`${this.a + this.b}\n`); - } -} -``` - -## License (MIT) - -> **Copyright © 2019 Mael Nison** -> -> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/Cli.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/Cli.d.ts deleted file mode 100644 index 9a50a9b..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/Cli.d.ts +++ /dev/null @@ -1,299 +0,0 @@ -/// -/// -import { Readable, Writable } from 'stream'; -import { CommandBuilder } from '../core'; -import { ColorFormat } from '../format'; -import { CommandClass, Command, Definition } from './Command'; -import { CommandOption } from './options/utils'; -type MakeOptional = Omit & Partial>; -type VoidIfEmpty = keyof T extends never ? void : never; -/** - * The base context of the CLI. - * - * All Contexts have to extend it. - */ -export type BaseContext = { - /** - * Environment variables. - * - * @default - * process.env - */ - env: Record; - /** - * The input stream of the CLI. - * - * @default - * process.stdin - */ - stdin: Readable; - /** - * The output stream of the CLI. - * - * @default - * process.stdout - */ - stdout: Writable; - /** - * The error stream of the CLI. - * - * @default - * process.stderr - */ - stderr: Writable; - /** - * Whether colors should be enabled. - */ - colorDepth: number; -}; -export type CliContext = { - commandClass: CommandClass; -}; -export type UserContextKeys = Exclude; -export type UserContext = Pick>; -export type PartialContext = UserContextKeys extends never ? Partial> | undefined | void : Partial> & UserContext; -export type RunContext = Partial> & UserContext; -export type RunCommand = Array> | CommandClass; -export type RunCommandNoContext = UserContextKeys extends never ? RunCommand : never; -export type CliOptions = Readonly<{ - /** - * The label of the binary. - * - * Shown at the top of the usage information. - */ - binaryLabel?: string; - /** - * The name of the binary. - * - * Included in the path and the examples of the definitions. - */ - binaryName: string; - /** - * The version of the binary. - * - * Shown at the top of the usage information. - */ - binaryVersion?: string; - /** - * If `true`, the Cli will hook into the process standard streams to catch - * the output produced by console.log and redirect them into the context - * streams. Note: stdin isn't captured at the moment. - * - * @default - * false - */ - enableCapture: boolean; - /** - * If `true`, the Cli will use colors in the output. If `false`, it won't. - * If `undefined`, Clipanion will infer the correct value from the env. - */ - enableColors?: boolean; -}>; -export type MiniCli = CliOptions & { - /** - * Returns an Array representing the definitions of all registered commands. - */ - definitions(): Array; - /** - * Get the definition of a particular command. - */ - definition(command: CommandClass): Definition | null; - /** - * Formats errors using colors. - * - * @param error The error to format. If `error.name` is `'Error'`, it is replaced with `'Internal Error'`. - * @param opts.command The command whose usage will be included in the formatted error. - */ - error(error: Error, opts?: { - command?: Command | null; - }): string; - /** - * Returns a rich color format if colors are enabled, or a plain text format otherwise. - * - * @param colored Forcefully enable or disable colors. - */ - format(colored?: boolean): ColorFormat; - /** - * Compiles a command and its arguments using the `CommandBuilder`. - * - * @param input An array containing the name of the command and its arguments - * - * @returns The compiled `Command`, with its properties populated with the arguments. - */ - process(input: Array, context?: Partial): Command; - /** - * Runs a command. - * - * @param input An array containing the name of the command and its arguments - * @param context Overrides the Context of the main `Cli` instance - * - * @returns The exit code of the command - */ - run(input: Array, context?: Partial): Promise; - /** - * Returns the usage of a command. - * - * @param command The `Command` whose usage will be returned or `null` to return the usage of all commands. - * @param opts.detailed If `true`, the usage of a command will also include its description, details, and examples. Doesn't have any effect if `command` is `null` or doesn't have a `usage` property. - * @param opts.prefix The prefix displayed before each command. Defaults to `$`. - */ - usage(command?: CommandClass | Command | null, opts?: { - detailed?: boolean; - prefix?: string; - }): string; -}; -export type MandatoryContextKeys = keyof MandatoryContext; -export type MandatoryContext = { - [K in Exclude as undefined extends Context[K] ? never : K]: Context[K]; -}; -export type UserProvidedContext = MandatoryContext & Partial>>; -export type MaybeProvidedContext = MandatoryContextKeys extends never ? { - context?: UserProvidedContext; -} : { - context: UserProvidedContext; -}; -export type ProcessOptions = MaybeProvidedContext & { - input: Array; - /** - * @deprecated Experimental setting, exact behavior may change - */ - partial?: boolean; -}; -/** - * An all-in-one helper that simultaneously instantiate a CLI and immediately - * executes it. All parameters are optional except the command classes and - * will be filled by sensible values for the current environment (for example - * the argv argument will default to `process.argv`, etc). - * - * Just like `Cli#runExit`, this function will set the `process.exitCode` value - * before returning. - */ -export declare function runExit(commandClasses: RunCommandNoContext): Promise; -export declare function runExit(commandClasses: RunCommand, context: RunContext): Promise; -export declare function runExit(options: Partial, commandClasses: RunCommandNoContext): Promise; -export declare function runExit(options: Partial, commandClasses: RunCommand, context: RunContext): Promise; -export declare function runExit(commandClasses: RunCommandNoContext, argv: Array): Promise; -export declare function runExit(commandClasses: RunCommand, argv: Array, context: RunContext): Promise; -export declare function runExit(options: Partial, commandClasses: RunCommandNoContext, argv: Array): Promise; -export declare function runExit(options: Partial, commandClasses: RunCommand, argv: Array, context: RunContext): Promise; -/** - * An all-in-one helper that simultaneously instantiate a CLI and immediately - * executes it. All parameters are optional except the command classes and - * will be filled by sensible values for the current environment (for example - * the argv argument will default to `process.argv`, etc). - * - * Unlike `runExit`, this function won't set the `process.exitCode` value - * before returning. - */ -export declare function run(commandClasses: RunCommandNoContext): Promise; -export declare function run(commandClasses: RunCommand, context: RunContext): Promise; -export declare function run(options: Partial, commandClasses: RunCommandNoContext): Promise; -export declare function run(options: Partial, commandClasses: RunCommand, context: RunContext): Promise; -export declare function run(commandClasses: RunCommandNoContext, argv: Array): Promise; -export declare function run(commandClasses: RunCommand, argv: Array, context: RunContext): Promise; -export declare function run(options: Partial, commandClasses: RunCommandNoContext, argv: Array): Promise; -export declare function run(options: Partial, commandClasses: RunCommand, argv: Array, context: RunContext): Promise; -/** - * @template Context The context shared by all commands. Contexts are a set of values, defined when calling the `run`/`runExit` functions from the CLI instance, that will be made available to the commands via `this.context`. - */ -export declare class Cli implements Omit, `process` | `run`> { - /** - * The default context of the CLI. - * - * Contains the stdio of the current `process`. - */ - static defaultContext: { - env: NodeJS.ProcessEnv; - stdin: NodeJS.ReadStream & { - fd: 0; - }; - stdout: NodeJS.WriteStream & { - fd: 1; - }; - stderr: NodeJS.WriteStream & { - fd: 2; - }; - colorDepth: number; - }; - private readonly builder; - protected readonly registrations: Map, { - index: number; - builder: CommandBuilder>; - specs: Map>; - }>; - readonly binaryLabel?: string; - readonly binaryName: string; - readonly binaryVersion?: string; - readonly enableCapture: boolean; - readonly enableColors?: boolean; - /** - * Creates a new Cli and registers all commands passed as parameters. - * - * @param commandClasses The Commands to register - * @returns The created `Cli` instance - */ - static from(commandClasses: RunCommand, options?: Partial): Cli; - constructor({ binaryLabel, binaryName: binaryNameOpt, binaryVersion, enableCapture, enableColors }?: Partial); - /** - * Registers a command inside the CLI. - */ - register(commandClass: CommandClass): void; - process(opts: ProcessOptions): Command; - process(input: Array, context: VoidIfEmpty>): Command; - process(input: Array, context: MakeOptional): Command; - run(input: Command | Array, context: VoidIfEmpty>): Promise; - run(input: Command | Array, context: MakeOptional): Promise; - /** - * Runs a command and exits the current `process` with the exit code returned by the command. - * - * @param input An array containing the name of the command and its arguments. - * - * @example - * cli.runExit(process.argv.slice(2)) - */ - runExit(input: Command | Array, context: VoidIfEmpty>): Promise; - runExit(input: Command | Array, context: MakeOptional): Promise; - definition(commandClass: CommandClass, { colored }?: { - colored?: boolean; - }): Definition | null; - definitions({ colored }?: { - colored?: boolean; - }): Array; - usage(command?: CommandClass | Command | null, { colored, detailed, prefix }?: { - colored?: boolean; - detailed?: boolean; - prefix?: string; - }): string; - error(error: Error | any, { colored, command }?: { - colored?: boolean; - command?: Command | null; - }): string; - format(colored?: boolean): ColorFormat; - protected getUsageByRegistration(klass: CommandClass, opts?: { - detailed?: boolean; - inlineOptions?: boolean; - }): { - usage: string; - options: { - preferredName: string; - nameSet: string[]; - definition: string; - description: string; - required: boolean; - }[]; - }; - protected getUsageByIndex(n: number, opts?: { - detailed?: boolean; - inlineOptions?: boolean; - }): { - usage: string; - options: { - preferredName: string; - nameSet: string[]; - definition: string; - description: string; - required: boolean; - }[]; - }; -} -export {}; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/Cli.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/Cli.js deleted file mode 100644 index 624ca5c..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/Cli.js +++ /dev/null @@ -1,464 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var platform_node = require('../platform/node.js'); -var constants = require('../constants.js'); -var core = require('../core.js'); -var format = require('../format.js'); -var advanced_Command = require('./Command.js'); -var advanced_HelpCommand = require('./HelpCommand.js'); - -const errorCommandSymbol = Symbol(`clipanion/errorCommand`); -async function runExit(...args) { - const { resolvedOptions, resolvedCommandClasses, resolvedArgv, resolvedContext, } = resolveRunParameters(args); - const cli = Cli.from(resolvedCommandClasses, resolvedOptions); - return cli.runExit(resolvedArgv, resolvedContext); -} -async function run(...args) { - const { resolvedOptions, resolvedCommandClasses, resolvedArgv, resolvedContext, } = resolveRunParameters(args); - const cli = Cli.from(resolvedCommandClasses, resolvedOptions); - return cli.run(resolvedArgv, resolvedContext); -} -function resolveRunParameters(args) { - let resolvedOptions; - let resolvedCommandClasses; - let resolvedArgv; - let resolvedContext; - if (typeof process !== `undefined` && typeof process.argv !== `undefined`) - resolvedArgv = process.argv.slice(2); - switch (args.length) { - case 1: - { - resolvedCommandClasses = args[0]; - } - break; - case 2: - { - if (args[0] && (args[0].prototype instanceof advanced_Command.Command) || Array.isArray(args[0])) { - resolvedCommandClasses = args[0]; - if (Array.isArray(args[1])) { - resolvedArgv = args[1]; - } - else { - resolvedContext = args[1]; - } - } - else { - resolvedOptions = args[0]; - resolvedCommandClasses = args[1]; - } - } - break; - case 3: - { - if (Array.isArray(args[2])) { - resolvedOptions = args[0]; - resolvedCommandClasses = args[1]; - resolvedArgv = args[2]; - } - else if (args[0] && (args[0].prototype instanceof advanced_Command.Command) || Array.isArray(args[0])) { - resolvedCommandClasses = args[0]; - resolvedArgv = args[1]; - resolvedContext = args[2]; - } - else { - resolvedOptions = args[0]; - resolvedCommandClasses = args[1]; - resolvedContext = args[2]; - } - } - break; - default: - { - resolvedOptions = args[0]; - resolvedCommandClasses = args[1]; - resolvedArgv = args[2]; - resolvedContext = args[3]; - } - break; - } - if (typeof resolvedArgv === `undefined`) - throw new Error(`The argv parameter must be provided when running Clipanion outside of a Node context`); - return { - resolvedOptions, - resolvedCommandClasses, - resolvedArgv, - resolvedContext, - }; -} -/** - * @template Context The context shared by all commands. Contexts are a set of values, defined when calling the `run`/`runExit` functions from the CLI instance, that will be made available to the commands via `this.context`. - */ -class Cli { - /** - * Creates a new Cli and registers all commands passed as parameters. - * - * @param commandClasses The Commands to register - * @returns The created `Cli` instance - */ - static from(commandClasses, options = {}) { - const cli = new Cli(options); - const resolvedCommandClasses = Array.isArray(commandClasses) - ? commandClasses - : [commandClasses]; - for (const commandClass of resolvedCommandClasses) - cli.register(commandClass); - return cli; - } - constructor({ binaryLabel, binaryName: binaryNameOpt = `...`, binaryVersion, enableCapture = false, enableColors } = {}) { - this.registrations = new Map(); - this.builder = new core.CliBuilder({ binaryName: binaryNameOpt }); - this.binaryLabel = binaryLabel; - this.binaryName = binaryNameOpt; - this.binaryVersion = binaryVersion; - this.enableCapture = enableCapture; - this.enableColors = enableColors; - } - /** - * Registers a command inside the CLI. - */ - register(commandClass) { - var _a; - if (this.registrations.has(commandClass)) - throw new RangeError(`${commandClass.name} has already been registered`); - const specs = new Map(); - const command = new commandClass(); - for (const key in command) { - const value = command[key]; - if (typeof value === `object` && value !== null && value[advanced_Command.Command.isOption]) { - specs.set(key, value); - } - } - const builder = this.builder.command(); - const index = builder.cliIndex; - const paths = (_a = commandClass.paths) !== null && _a !== void 0 ? _a : command.paths; - if (typeof paths !== `undefined`) - for (const path of paths) - builder.addPath(path); - this.registrations.set(commandClass, { specs, builder, index }); - for (const [key, { definition }] of specs.entries()) - definition(builder, key); - builder.setContext({ - commandClass, - }); - } - process(opts, contextArg) { - const { input, context: userContext, partial } = typeof opts === `object` && Array.isArray(opts) - ? { input: opts, context: contextArg } - : opts; - const { contexts, process } = this.builder.compile(); - const state = process(input, { partial }); - const context = { - ...Cli.defaultContext, - ...userContext, - }; - switch (state.selectedIndex) { - case constants.HELP_COMMAND_INDEX: - { - const command = advanced_HelpCommand.HelpCommand.from(state, contexts); - command.context = context; - command.tokens = state.tokens; - return command; - } - default: - { - const { commandClass } = contexts[state.selectedIndex]; - const record = this.registrations.get(commandClass); - if (typeof record === `undefined`) - throw new Error(`Assertion failed: Expected the command class to have been registered.`); - const command = new commandClass(); - command.context = context; - command.tokens = state.tokens; - command.path = state.path; - try { - for (const [key, { transformer }] of record.specs.entries()) - command[key] = transformer(record.builder, key, state, context); - return command; - } - catch (error) { - error[errorCommandSymbol] = command; - throw error; - } - } - break; - } - } - async run(input, userContext) { - var _a, _b; - let command; - const context = { - ...Cli.defaultContext, - ...userContext, - }; - const colored = (_a = this.enableColors) !== null && _a !== void 0 ? _a : context.colorDepth > 1; - if (!Array.isArray(input)) { - command = input; - } - else { - try { - command = this.process(input, context); - } - catch (error) { - context.stdout.write(this.error(error, { colored })); - return 1; - } - } - if (command.help) { - context.stdout.write(this.usage(command, { colored, detailed: true })); - return 0; - } - command.context = context; - command.cli = { - binaryLabel: this.binaryLabel, - binaryName: this.binaryName, - binaryVersion: this.binaryVersion, - enableCapture: this.enableCapture, - enableColors: this.enableColors, - definitions: () => this.definitions(), - definition: command => this.definition(command), - error: (error, opts) => this.error(error, opts), - format: colored => this.format(colored), - process: (input, subContext) => this.process(input, { ...context, ...subContext }), - run: (input, subContext) => this.run(input, { ...context, ...subContext }), - usage: (command, opts) => this.usage(command, opts), - }; - const activate = this.enableCapture - ? (_b = platform_node.getCaptureActivator(context)) !== null && _b !== void 0 ? _b : noopCaptureActivator - : noopCaptureActivator; - let exitCode; - try { - exitCode = await activate(() => command.validateAndExecute().catch(error => command.catch(error).then(() => 0))); - } - catch (error) { - context.stdout.write(this.error(error, { colored, command })); - return 1; - } - return exitCode; - } - async runExit(input, context) { - process.exitCode = await this.run(input, context); - } - definition(commandClass, { colored = false } = {}) { - if (!commandClass.usage) - return null; - const { usage: path } = this.getUsageByRegistration(commandClass, { detailed: false }); - const { usage, options } = this.getUsageByRegistration(commandClass, { detailed: true, inlineOptions: false }); - const category = typeof commandClass.usage.category !== `undefined` - ? format.formatMarkdownish(commandClass.usage.category, { format: this.format(colored), paragraphs: false }) - : undefined; - const description = typeof commandClass.usage.description !== `undefined` - ? format.formatMarkdownish(commandClass.usage.description, { format: this.format(colored), paragraphs: false }) - : undefined; - const details = typeof commandClass.usage.details !== `undefined` - ? format.formatMarkdownish(commandClass.usage.details, { format: this.format(colored), paragraphs: true }) - : undefined; - const examples = typeof commandClass.usage.examples !== `undefined` - ? commandClass.usage.examples.map(([label, cli]) => [format.formatMarkdownish(label, { format: this.format(colored), paragraphs: false }), cli.replace(/\$0/g, this.binaryName)]) - : undefined; - return { path, usage, category, description, details, examples, options }; - } - definitions({ colored = false } = {}) { - const data = []; - for (const commandClass of this.registrations.keys()) { - const usage = this.definition(commandClass, { colored }); - if (!usage) - continue; - data.push(usage); - } - return data; - } - usage(command = null, { colored, detailed = false, prefix = `$ ` } = {}) { - var _a; - // In case the default command is the only one, we can just show the command help rather than the general one - if (command === null) { - for (const commandClass of this.registrations.keys()) { - const paths = commandClass.paths; - const isDocumented = typeof commandClass.usage !== `undefined`; - const isExclusivelyDefault = !paths || paths.length === 0 || (paths.length === 1 && paths[0].length === 0); - const isDefault = isExclusivelyDefault || ((_a = paths === null || paths === void 0 ? void 0 : paths.some(path => path.length === 0)) !== null && _a !== void 0 ? _a : false); - if (isDefault) { - if (command) { - command = null; - break; - } - else { - command = commandClass; - } - } - else { - if (isDocumented) { - command = null; - continue; - } - } - } - if (command) { - detailed = true; - } - } - // @ts-ignore - const commandClass = command !== null && command instanceof advanced_Command.Command - ? command.constructor - : command; - let result = ``; - if (!commandClass) { - const commandsByCategories = new Map(); - for (const [commandClass, { index }] of this.registrations.entries()) { - if (typeof commandClass.usage === `undefined`) - continue; - const category = typeof commandClass.usage.category !== `undefined` - ? format.formatMarkdownish(commandClass.usage.category, { format: this.format(colored), paragraphs: false }) - : null; - let categoryCommands = commandsByCategories.get(category); - if (typeof categoryCommands === `undefined`) - commandsByCategories.set(category, categoryCommands = []); - const { usage } = this.getUsageByIndex(index); - categoryCommands.push({ commandClass, usage }); - } - const categoryNames = Array.from(commandsByCategories.keys()).sort((a, b) => { - if (a === null) - return -1; - if (b === null) - return +1; - return a.localeCompare(b, `en`, { usage: `sort`, caseFirst: `upper` }); - }); - const hasLabel = typeof this.binaryLabel !== `undefined`; - const hasVersion = typeof this.binaryVersion !== `undefined`; - if (hasLabel || hasVersion) { - if (hasLabel && hasVersion) - result += `${this.format(colored).header(`${this.binaryLabel} - ${this.binaryVersion}`)}\n\n`; - else if (hasLabel) - result += `${this.format(colored).header(`${this.binaryLabel}`)}\n`; - else - result += `${this.format(colored).header(`${this.binaryVersion}`)}\n`; - result += ` ${this.format(colored).bold(prefix)}${this.binaryName} \n`; - } - else { - result += `${this.format(colored).bold(prefix)}${this.binaryName} \n`; - } - for (const categoryName of categoryNames) { - const commands = commandsByCategories.get(categoryName).slice().sort((a, b) => { - return a.usage.localeCompare(b.usage, `en`, { usage: `sort`, caseFirst: `upper` }); - }); - const header = categoryName !== null - ? categoryName.trim() - : `General commands`; - result += `\n`; - result += `${this.format(colored).header(`${header}`)}\n`; - for (const { commandClass, usage } of commands) { - const doc = commandClass.usage.description || `undocumented`; - result += `\n`; - result += ` ${this.format(colored).bold(usage)}\n`; - result += ` ${format.formatMarkdownish(doc, { format: this.format(colored), paragraphs: false })}`; - } - } - result += `\n`; - result += format.formatMarkdownish(`You can also print more details about any of these commands by calling them with the \`-h,--help\` flag right after the command name.`, { format: this.format(colored), paragraphs: true }); - } - else { - if (!detailed) { - const { usage } = this.getUsageByRegistration(commandClass); - result += `${this.format(colored).bold(prefix)}${usage}\n`; - } - else { - const { description = ``, details = ``, examples = [], } = commandClass.usage || {}; - if (description !== ``) { - result += format.formatMarkdownish(description, { format: this.format(colored), paragraphs: false }).replace(/^./, $0 => $0.toUpperCase()); - result += `\n`; - } - if (details !== `` || examples.length > 0) { - result += `${this.format(colored).header(`Usage`)}\n`; - result += `\n`; - } - const { usage, options } = this.getUsageByRegistration(commandClass, { inlineOptions: false }); - result += `${this.format(colored).bold(prefix)}${usage}\n`; - if (options.length > 0) { - result += `\n`; - result += `${this.format(colored).header(`Options`)}\n`; - const maxDefinitionLength = options.reduce((length, option) => { - return Math.max(length, option.definition.length); - }, 0); - result += `\n`; - for (const { definition, description } of options) { - result += ` ${this.format(colored).bold(definition.padEnd(maxDefinitionLength))} ${format.formatMarkdownish(description, { format: this.format(colored), paragraphs: false })}`; - } - } - if (details !== ``) { - result += `\n`; - result += `${this.format(colored).header(`Details`)}\n`; - result += `\n`; - result += format.formatMarkdownish(details, { format: this.format(colored), paragraphs: true }); - } - if (examples.length > 0) { - result += `\n`; - result += `${this.format(colored).header(`Examples`)}\n`; - for (const [description, example] of examples) { - result += `\n`; - result += format.formatMarkdownish(description, { format: this.format(colored), paragraphs: false }); - result += `${example - .replace(/^/m, ` ${this.format(colored).bold(prefix)}`) - .replace(/\$0/g, this.binaryName)}\n`; - } - } - } - } - return result; - } - error(error, _a) { - var _b; - var { colored, command = (_b = error[errorCommandSymbol]) !== null && _b !== void 0 ? _b : null } = _a === void 0 ? {} : _a; - if (!error || typeof error !== `object` || !(`stack` in error)) - error = new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(error)})`); - let result = ``; - let name = error.name.replace(/([a-z])([A-Z])/g, `$1 $2`); - if (name === `Error`) - name = `Internal Error`; - result += `${this.format(colored).error(name)}: ${error.message}\n`; - const meta = error.clipanion; - if (typeof meta !== `undefined`) { - if (meta.type === `usage`) { - result += `\n`; - result += this.usage(command); - } - } - else { - if (error.stack) { - result += `${error.stack.replace(/^.*\n/, ``)}\n`; - } - } - return result; - } - format(colored) { - var _a; - return ((_a = colored !== null && colored !== void 0 ? colored : this.enableColors) !== null && _a !== void 0 ? _a : Cli.defaultContext.colorDepth > 1) ? format.richFormat : format.textFormat; - } - getUsageByRegistration(klass, opts) { - const record = this.registrations.get(klass); - if (typeof record === `undefined`) - throw new Error(`Assertion failed: Unregistered command`); - return this.getUsageByIndex(record.index, opts); - } - getUsageByIndex(n, opts) { - return this.builder.getBuilderByIndex(n).usage(opts); - } -} -/** - * The default context of the CLI. - * - * Contains the stdio of the current `process`. - */ -Cli.defaultContext = { - env: process.env, - stdin: process.stdin, - stdout: process.stdout, - stderr: process.stderr, - colorDepth: platform_node.getDefaultColorDepth(), -}; -function noopCaptureActivator(fn) { - return fn(); -} - -exports.Cli = Cli; -exports.run = run; -exports.runExit = runExit; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/Cli.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/Cli.mjs deleted file mode 100644 index 0afdaa2..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/Cli.mjs +++ /dev/null @@ -1,458 +0,0 @@ -import { getDefaultColorDepth, getCaptureActivator } from '../platform/node.mjs'; -import { HELP_COMMAND_INDEX } from '../constants.mjs'; -import { CliBuilder } from '../core.mjs'; -import { formatMarkdownish, richFormat, textFormat } from '../format.mjs'; -import { Command } from './Command.mjs'; -import { HelpCommand } from './HelpCommand.mjs'; - -const errorCommandSymbol = Symbol(`clipanion/errorCommand`); -async function runExit(...args) { - const { resolvedOptions, resolvedCommandClasses, resolvedArgv, resolvedContext, } = resolveRunParameters(args); - const cli = Cli.from(resolvedCommandClasses, resolvedOptions); - return cli.runExit(resolvedArgv, resolvedContext); -} -async function run(...args) { - const { resolvedOptions, resolvedCommandClasses, resolvedArgv, resolvedContext, } = resolveRunParameters(args); - const cli = Cli.from(resolvedCommandClasses, resolvedOptions); - return cli.run(resolvedArgv, resolvedContext); -} -function resolveRunParameters(args) { - let resolvedOptions; - let resolvedCommandClasses; - let resolvedArgv; - let resolvedContext; - if (typeof process !== `undefined` && typeof process.argv !== `undefined`) - resolvedArgv = process.argv.slice(2); - switch (args.length) { - case 1: - { - resolvedCommandClasses = args[0]; - } - break; - case 2: - { - if (args[0] && (args[0].prototype instanceof Command) || Array.isArray(args[0])) { - resolvedCommandClasses = args[0]; - if (Array.isArray(args[1])) { - resolvedArgv = args[1]; - } - else { - resolvedContext = args[1]; - } - } - else { - resolvedOptions = args[0]; - resolvedCommandClasses = args[1]; - } - } - break; - case 3: - { - if (Array.isArray(args[2])) { - resolvedOptions = args[0]; - resolvedCommandClasses = args[1]; - resolvedArgv = args[2]; - } - else if (args[0] && (args[0].prototype instanceof Command) || Array.isArray(args[0])) { - resolvedCommandClasses = args[0]; - resolvedArgv = args[1]; - resolvedContext = args[2]; - } - else { - resolvedOptions = args[0]; - resolvedCommandClasses = args[1]; - resolvedContext = args[2]; - } - } - break; - default: - { - resolvedOptions = args[0]; - resolvedCommandClasses = args[1]; - resolvedArgv = args[2]; - resolvedContext = args[3]; - } - break; - } - if (typeof resolvedArgv === `undefined`) - throw new Error(`The argv parameter must be provided when running Clipanion outside of a Node context`); - return { - resolvedOptions, - resolvedCommandClasses, - resolvedArgv, - resolvedContext, - }; -} -/** - * @template Context The context shared by all commands. Contexts are a set of values, defined when calling the `run`/`runExit` functions from the CLI instance, that will be made available to the commands via `this.context`. - */ -class Cli { - /** - * Creates a new Cli and registers all commands passed as parameters. - * - * @param commandClasses The Commands to register - * @returns The created `Cli` instance - */ - static from(commandClasses, options = {}) { - const cli = new Cli(options); - const resolvedCommandClasses = Array.isArray(commandClasses) - ? commandClasses - : [commandClasses]; - for (const commandClass of resolvedCommandClasses) - cli.register(commandClass); - return cli; - } - constructor({ binaryLabel, binaryName: binaryNameOpt = `...`, binaryVersion, enableCapture = false, enableColors } = {}) { - this.registrations = new Map(); - this.builder = new CliBuilder({ binaryName: binaryNameOpt }); - this.binaryLabel = binaryLabel; - this.binaryName = binaryNameOpt; - this.binaryVersion = binaryVersion; - this.enableCapture = enableCapture; - this.enableColors = enableColors; - } - /** - * Registers a command inside the CLI. - */ - register(commandClass) { - var _a; - if (this.registrations.has(commandClass)) - throw new RangeError(`${commandClass.name} has already been registered`); - const specs = new Map(); - const command = new commandClass(); - for (const key in command) { - const value = command[key]; - if (typeof value === `object` && value !== null && value[Command.isOption]) { - specs.set(key, value); - } - } - const builder = this.builder.command(); - const index = builder.cliIndex; - const paths = (_a = commandClass.paths) !== null && _a !== void 0 ? _a : command.paths; - if (typeof paths !== `undefined`) - for (const path of paths) - builder.addPath(path); - this.registrations.set(commandClass, { specs, builder, index }); - for (const [key, { definition }] of specs.entries()) - definition(builder, key); - builder.setContext({ - commandClass, - }); - } - process(opts, contextArg) { - const { input, context: userContext, partial } = typeof opts === `object` && Array.isArray(opts) - ? { input: opts, context: contextArg } - : opts; - const { contexts, process } = this.builder.compile(); - const state = process(input, { partial }); - const context = { - ...Cli.defaultContext, - ...userContext, - }; - switch (state.selectedIndex) { - case HELP_COMMAND_INDEX: - { - const command = HelpCommand.from(state, contexts); - command.context = context; - command.tokens = state.tokens; - return command; - } - default: - { - const { commandClass } = contexts[state.selectedIndex]; - const record = this.registrations.get(commandClass); - if (typeof record === `undefined`) - throw new Error(`Assertion failed: Expected the command class to have been registered.`); - const command = new commandClass(); - command.context = context; - command.tokens = state.tokens; - command.path = state.path; - try { - for (const [key, { transformer }] of record.specs.entries()) - command[key] = transformer(record.builder, key, state, context); - return command; - } - catch (error) { - error[errorCommandSymbol] = command; - throw error; - } - } - break; - } - } - async run(input, userContext) { - var _a, _b; - let command; - const context = { - ...Cli.defaultContext, - ...userContext, - }; - const colored = (_a = this.enableColors) !== null && _a !== void 0 ? _a : context.colorDepth > 1; - if (!Array.isArray(input)) { - command = input; - } - else { - try { - command = this.process(input, context); - } - catch (error) { - context.stdout.write(this.error(error, { colored })); - return 1; - } - } - if (command.help) { - context.stdout.write(this.usage(command, { colored, detailed: true })); - return 0; - } - command.context = context; - command.cli = { - binaryLabel: this.binaryLabel, - binaryName: this.binaryName, - binaryVersion: this.binaryVersion, - enableCapture: this.enableCapture, - enableColors: this.enableColors, - definitions: () => this.definitions(), - definition: command => this.definition(command), - error: (error, opts) => this.error(error, opts), - format: colored => this.format(colored), - process: (input, subContext) => this.process(input, { ...context, ...subContext }), - run: (input, subContext) => this.run(input, { ...context, ...subContext }), - usage: (command, opts) => this.usage(command, opts), - }; - const activate = this.enableCapture - ? (_b = getCaptureActivator(context)) !== null && _b !== void 0 ? _b : noopCaptureActivator - : noopCaptureActivator; - let exitCode; - try { - exitCode = await activate(() => command.validateAndExecute().catch(error => command.catch(error).then(() => 0))); - } - catch (error) { - context.stdout.write(this.error(error, { colored, command })); - return 1; - } - return exitCode; - } - async runExit(input, context) { - process.exitCode = await this.run(input, context); - } - definition(commandClass, { colored = false } = {}) { - if (!commandClass.usage) - return null; - const { usage: path } = this.getUsageByRegistration(commandClass, { detailed: false }); - const { usage, options } = this.getUsageByRegistration(commandClass, { detailed: true, inlineOptions: false }); - const category = typeof commandClass.usage.category !== `undefined` - ? formatMarkdownish(commandClass.usage.category, { format: this.format(colored), paragraphs: false }) - : undefined; - const description = typeof commandClass.usage.description !== `undefined` - ? formatMarkdownish(commandClass.usage.description, { format: this.format(colored), paragraphs: false }) - : undefined; - const details = typeof commandClass.usage.details !== `undefined` - ? formatMarkdownish(commandClass.usage.details, { format: this.format(colored), paragraphs: true }) - : undefined; - const examples = typeof commandClass.usage.examples !== `undefined` - ? commandClass.usage.examples.map(([label, cli]) => [formatMarkdownish(label, { format: this.format(colored), paragraphs: false }), cli.replace(/\$0/g, this.binaryName)]) - : undefined; - return { path, usage, category, description, details, examples, options }; - } - definitions({ colored = false } = {}) { - const data = []; - for (const commandClass of this.registrations.keys()) { - const usage = this.definition(commandClass, { colored }); - if (!usage) - continue; - data.push(usage); - } - return data; - } - usage(command = null, { colored, detailed = false, prefix = `$ ` } = {}) { - var _a; - // In case the default command is the only one, we can just show the command help rather than the general one - if (command === null) { - for (const commandClass of this.registrations.keys()) { - const paths = commandClass.paths; - const isDocumented = typeof commandClass.usage !== `undefined`; - const isExclusivelyDefault = !paths || paths.length === 0 || (paths.length === 1 && paths[0].length === 0); - const isDefault = isExclusivelyDefault || ((_a = paths === null || paths === void 0 ? void 0 : paths.some(path => path.length === 0)) !== null && _a !== void 0 ? _a : false); - if (isDefault) { - if (command) { - command = null; - break; - } - else { - command = commandClass; - } - } - else { - if (isDocumented) { - command = null; - continue; - } - } - } - if (command) { - detailed = true; - } - } - // @ts-ignore - const commandClass = command !== null && command instanceof Command - ? command.constructor - : command; - let result = ``; - if (!commandClass) { - const commandsByCategories = new Map(); - for (const [commandClass, { index }] of this.registrations.entries()) { - if (typeof commandClass.usage === `undefined`) - continue; - const category = typeof commandClass.usage.category !== `undefined` - ? formatMarkdownish(commandClass.usage.category, { format: this.format(colored), paragraphs: false }) - : null; - let categoryCommands = commandsByCategories.get(category); - if (typeof categoryCommands === `undefined`) - commandsByCategories.set(category, categoryCommands = []); - const { usage } = this.getUsageByIndex(index); - categoryCommands.push({ commandClass, usage }); - } - const categoryNames = Array.from(commandsByCategories.keys()).sort((a, b) => { - if (a === null) - return -1; - if (b === null) - return +1; - return a.localeCompare(b, `en`, { usage: `sort`, caseFirst: `upper` }); - }); - const hasLabel = typeof this.binaryLabel !== `undefined`; - const hasVersion = typeof this.binaryVersion !== `undefined`; - if (hasLabel || hasVersion) { - if (hasLabel && hasVersion) - result += `${this.format(colored).header(`${this.binaryLabel} - ${this.binaryVersion}`)}\n\n`; - else if (hasLabel) - result += `${this.format(colored).header(`${this.binaryLabel}`)}\n`; - else - result += `${this.format(colored).header(`${this.binaryVersion}`)}\n`; - result += ` ${this.format(colored).bold(prefix)}${this.binaryName} \n`; - } - else { - result += `${this.format(colored).bold(prefix)}${this.binaryName} \n`; - } - for (const categoryName of categoryNames) { - const commands = commandsByCategories.get(categoryName).slice().sort((a, b) => { - return a.usage.localeCompare(b.usage, `en`, { usage: `sort`, caseFirst: `upper` }); - }); - const header = categoryName !== null - ? categoryName.trim() - : `General commands`; - result += `\n`; - result += `${this.format(colored).header(`${header}`)}\n`; - for (const { commandClass, usage } of commands) { - const doc = commandClass.usage.description || `undocumented`; - result += `\n`; - result += ` ${this.format(colored).bold(usage)}\n`; - result += ` ${formatMarkdownish(doc, { format: this.format(colored), paragraphs: false })}`; - } - } - result += `\n`; - result += formatMarkdownish(`You can also print more details about any of these commands by calling them with the \`-h,--help\` flag right after the command name.`, { format: this.format(colored), paragraphs: true }); - } - else { - if (!detailed) { - const { usage } = this.getUsageByRegistration(commandClass); - result += `${this.format(colored).bold(prefix)}${usage}\n`; - } - else { - const { description = ``, details = ``, examples = [], } = commandClass.usage || {}; - if (description !== ``) { - result += formatMarkdownish(description, { format: this.format(colored), paragraphs: false }).replace(/^./, $0 => $0.toUpperCase()); - result += `\n`; - } - if (details !== `` || examples.length > 0) { - result += `${this.format(colored).header(`Usage`)}\n`; - result += `\n`; - } - const { usage, options } = this.getUsageByRegistration(commandClass, { inlineOptions: false }); - result += `${this.format(colored).bold(prefix)}${usage}\n`; - if (options.length > 0) { - result += `\n`; - result += `${this.format(colored).header(`Options`)}\n`; - const maxDefinitionLength = options.reduce((length, option) => { - return Math.max(length, option.definition.length); - }, 0); - result += `\n`; - for (const { definition, description } of options) { - result += ` ${this.format(colored).bold(definition.padEnd(maxDefinitionLength))} ${formatMarkdownish(description, { format: this.format(colored), paragraphs: false })}`; - } - } - if (details !== ``) { - result += `\n`; - result += `${this.format(colored).header(`Details`)}\n`; - result += `\n`; - result += formatMarkdownish(details, { format: this.format(colored), paragraphs: true }); - } - if (examples.length > 0) { - result += `\n`; - result += `${this.format(colored).header(`Examples`)}\n`; - for (const [description, example] of examples) { - result += `\n`; - result += formatMarkdownish(description, { format: this.format(colored), paragraphs: false }); - result += `${example - .replace(/^/m, ` ${this.format(colored).bold(prefix)}`) - .replace(/\$0/g, this.binaryName)}\n`; - } - } - } - } - return result; - } - error(error, _a) { - var _b; - var { colored, command = (_b = error[errorCommandSymbol]) !== null && _b !== void 0 ? _b : null } = _a === void 0 ? {} : _a; - if (!error || typeof error !== `object` || !(`stack` in error)) - error = new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(error)})`); - let result = ``; - let name = error.name.replace(/([a-z])([A-Z])/g, `$1 $2`); - if (name === `Error`) - name = `Internal Error`; - result += `${this.format(colored).error(name)}: ${error.message}\n`; - const meta = error.clipanion; - if (typeof meta !== `undefined`) { - if (meta.type === `usage`) { - result += `\n`; - result += this.usage(command); - } - } - else { - if (error.stack) { - result += `${error.stack.replace(/^.*\n/, ``)}\n`; - } - } - return result; - } - format(colored) { - var _a; - return ((_a = colored !== null && colored !== void 0 ? colored : this.enableColors) !== null && _a !== void 0 ? _a : Cli.defaultContext.colorDepth > 1) ? richFormat : textFormat; - } - getUsageByRegistration(klass, opts) { - const record = this.registrations.get(klass); - if (typeof record === `undefined`) - throw new Error(`Assertion failed: Unregistered command`); - return this.getUsageByIndex(record.index, opts); - } - getUsageByIndex(n, opts) { - return this.builder.getBuilderByIndex(n).usage(opts); - } -} -/** - * The default context of the CLI. - * - * Contains the stdio of the current `process`. - */ -Cli.defaultContext = { - env: process.env, - stdin: process.stdin, - stdout: process.stdout, - stderr: process.stderr, - colorDepth: getDefaultColorDepth(), -}; -function noopCaptureActivator(fn) { - return fn(); -} - -export { Cli, run, runExit }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/Command.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/Command.d.ts deleted file mode 100644 index 8d960ec..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/Command.d.ts +++ /dev/null @@ -1,159 +0,0 @@ -import { LooseTest } from 'typanion'; -import { Token } from '../core'; -import { BaseContext, MiniCli } from './Cli'; -import { isOptionSymbol } from './options/utils'; -/** - * The usage of a Command. - */ -export type Usage = { - /** - * The category of the command. - * - * Included in the detailed usage. - */ - category?: string; - /** - * The short description of the command, formatted as Markdown. - * - * Included in the detailed usage. - */ - description?: string; - /** - * The extended details of the command, formatted as Markdown. - * - * Included in the detailed usage. - */ - details?: string; - /** - * Examples of the command represented as an Array of tuples. - * - * The first element of the tuple represents the description of the example. - * - * The second element of the tuple represents the command of the example. - * If present, the leading `$0` is replaced with `cli.binaryName`. - */ - examples?: Array<[string, string]>; -}; -/** - * The definition of a Command. - */ -export type Definition = Usage & { - /** - * The path of the command, starting with `cli.binaryName`. - */ - path: string; - /** - * The detailed usage of the command. - */ - usage: string; - /** - * The various options registered on the command. - */ - options: Array<{ - preferredName: string; - nameSet: Array; - definition: string; - description?: string; - required: boolean; - }>; -}; -export type CommandClass = { - new (): Command; - paths?: Array>; - schema?: Array>; - usage?: Usage; -}; -/** - * Base abstract class for CLI commands. The main thing to remember is to - * declare an async `execute` member function that will be called when the - * command is invoked from the CLI, and optionally a `paths` property to - * declare the set of paths under which the command should be exposed. - */ -export declare abstract class Command { - [`constructor`]: CommandClass; - /** - * @deprecated Do not use this; prefer the static `paths` property instead. - */ - paths?: undefined; - /** - * Defined to prevent a common typo. - */ - static path: never; - /** - * Paths under which the command should be exposed. - */ - static paths?: Array>; - /** - * Defines the usage information for the given command. - */ - static Usage(usage: Usage): Usage; - /** - * Contains the usage information for the command. If undefined, the - * command will be hidden from the general listing. - */ - static usage?: Usage; - /** - * Defines a schema to apply before running the `execute` method. The - * schema is expected to be generated by Typanion. - * - * @see https://github.com/arcanis/typanion - */ - static schema?: Array>; - /** - * Standard function that'll get executed by `Cli#run` and `Cli#runExit`. - * - * Expected to return an exit code or nothing (which Clipanion will treat - * as if 0 had been returned). - */ - abstract execute(): Promise; - /** - * Standard error handler which will simply rethrow the error. Can be used - * to add custom logic to handle errors from the command or simply return - * the parent class error handling. - */ - catch(error: any): Promise; - /** - * Predefined that will be set to true if `-h,--help` has been used, in - * which case `Command#execute` won't be called. - */ - help: boolean; - /** - * Predefined variable that will be populated with a miniature API that can - * be used to query Clipanion and forward commands. - */ - cli: MiniCli; - /** - * Predefined variable that will be populated with the context of the - * application. - */ - context: Context; - /** - * Predefined variable that will be populated with the path that got used - * to access the command currently being executed. - */ - path: Array; - /** - * Predefined variable that will be populated with the tokens found when - * interpreting the command line. - */ - tokens: Array; - validateAndExecute(): Promise; - /** - * Used to detect option definitions. - */ - static isOption: typeof isOptionSymbol; - /** - * Just an helper to use along with the `paths` fields, to make it - * clearer that a command is the default one. - * - * @example - * class MyCommand extends Command { - * static paths = [Command.Default]; - * } - */ - static Default: never[]; -} diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/Command.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/Command.js deleted file mode 100644 index d19d958..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/Command.js +++ /dev/null @@ -1,95 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var advanced_options_utils = require('./options/utils.js'); - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { return e[k]; } - }); - } - }); - } - n["default"] = e; - return Object.freeze(n); -} - -/** - * Base abstract class for CLI commands. The main thing to remember is to - * declare an async `execute` member function that will be called when the - * command is invoked from the CLI, and optionally a `paths` property to - * declare the set of paths under which the command should be exposed. - */ -class Command { - constructor() { - /** - * Predefined that will be set to true if `-h,--help` has been used, in - * which case `Command#execute` won't be called. - */ - this.help = false; - } - /** - * Defines the usage information for the given command. - */ - static Usage(usage) { - return usage; - } - /** - * Standard error handler which will simply rethrow the error. Can be used - * to add custom logic to handle errors from the command or simply return - * the parent class error handling. - */ - async catch(error) { - throw error; - } - async validateAndExecute() { - const commandClass = this.constructor; - const cascade = commandClass.schema; - if (Array.isArray(cascade)) { - const { isDict, isUnknown, applyCascade } = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('typanion')); }); - const schema = applyCascade(isDict(isUnknown()), cascade); - const errors = []; - const coercions = []; - const check = schema(this, { errors, coercions }); - if (!check) - throw advanced_options_utils.formatError(`Invalid option schema`, errors); - for (const [, op] of coercions) { - op(); - } - } - else if (cascade != null) { - throw new Error(`Invalid command schema`); - } - const exitCode = await this.execute(); - if (typeof exitCode !== `undefined`) { - return exitCode; - } - else { - return 0; - } - } -} -/** - * Used to detect option definitions. - */ -Command.isOption = advanced_options_utils.isOptionSymbol; -/** - * Just an helper to use along with the `paths` fields, to make it - * clearer that a command is the default one. - * - * @example - * class MyCommand extends Command { - * static paths = [Command.Default]; - * } - */ -Command.Default = []; - -exports.Command = Command; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/Command.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/Command.mjs deleted file mode 100644 index e377de1..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/Command.mjs +++ /dev/null @@ -1,73 +0,0 @@ -import { formatError, isOptionSymbol } from './options/utils.mjs'; - -/** - * Base abstract class for CLI commands. The main thing to remember is to - * declare an async `execute` member function that will be called when the - * command is invoked from the CLI, and optionally a `paths` property to - * declare the set of paths under which the command should be exposed. - */ -class Command { - constructor() { - /** - * Predefined that will be set to true if `-h,--help` has been used, in - * which case `Command#execute` won't be called. - */ - this.help = false; - } - /** - * Defines the usage information for the given command. - */ - static Usage(usage) { - return usage; - } - /** - * Standard error handler which will simply rethrow the error. Can be used - * to add custom logic to handle errors from the command or simply return - * the parent class error handling. - */ - async catch(error) { - throw error; - } - async validateAndExecute() { - const commandClass = this.constructor; - const cascade = commandClass.schema; - if (Array.isArray(cascade)) { - const { isDict, isUnknown, applyCascade } = await import('typanion'); - const schema = applyCascade(isDict(isUnknown()), cascade); - const errors = []; - const coercions = []; - const check = schema(this, { errors, coercions }); - if (!check) - throw formatError(`Invalid option schema`, errors); - for (const [, op] of coercions) { - op(); - } - } - else if (cascade != null) { - throw new Error(`Invalid command schema`); - } - const exitCode = await this.execute(); - if (typeof exitCode !== `undefined`) { - return exitCode; - } - else { - return 0; - } - } -} -/** - * Used to detect option definitions. - */ -Command.isOption = isOptionSymbol; -/** - * Just an helper to use along with the `paths` fields, to make it - * clearer that a command is the default one. - * - * @example - * class MyCommand extends Command { - * static paths = [Command.Default]; - * } - */ -Command.Default = []; - -export { Command }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/HelpCommand.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/HelpCommand.d.ts deleted file mode 100644 index 83e490d..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/HelpCommand.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { RunState } from '../core'; -import { BaseContext, CliContext } from './Cli'; -import { Command } from './Command'; -export declare class HelpCommand extends Command { - private readonly contexts; - private commands; - private index?; - static from(state: RunState, contexts: Array>): HelpCommand; - constructor(contexts: Array>); - execute(): Promise; -} diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/HelpCommand.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/HelpCommand.js deleted file mode 100644 index 4c94966..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/HelpCommand.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var advanced_Command = require('./Command.js'); - -class HelpCommand extends advanced_Command.Command { - static from(state, contexts) { - const command = new HelpCommand(contexts); - command.path = state.path; - for (const opt of state.options) { - switch (opt.name) { - case `-c`: - { - command.commands.push(Number(opt.value)); - } - break; - case `-i`: - { - command.index = Number(opt.value); - } - break; - } - } - return command; - } - constructor(contexts) { - super(); - this.contexts = contexts; - this.commands = []; - } - async execute() { - let commands = this.commands; - if (typeof this.index !== `undefined` && this.index >= 0 && this.index < commands.length) - commands = [commands[this.index]]; - if (commands.length === 0) { - this.context.stdout.write(this.cli.usage()); - } - else if (commands.length === 1) { - this.context.stdout.write(this.cli.usage(this.contexts[commands[0]].commandClass, { detailed: true })); - } - else if (commands.length > 1) { - this.context.stdout.write(`Multiple commands match your selection:\n`); - this.context.stdout.write(`\n`); - let index = 0; - for (const command of this.commands) - this.context.stdout.write(this.cli.usage(this.contexts[command].commandClass, { prefix: `${index++}. `.padStart(5) })); - this.context.stdout.write(`\n`); - this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands.\n`); - } - } -} - -exports.HelpCommand = HelpCommand; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/HelpCommand.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/HelpCommand.mjs deleted file mode 100644 index 17acfbd..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/HelpCommand.mjs +++ /dev/null @@ -1,50 +0,0 @@ -import { Command } from './Command.mjs'; - -class HelpCommand extends Command { - static from(state, contexts) { - const command = new HelpCommand(contexts); - command.path = state.path; - for (const opt of state.options) { - switch (opt.name) { - case `-c`: - { - command.commands.push(Number(opt.value)); - } - break; - case `-i`: - { - command.index = Number(opt.value); - } - break; - } - } - return command; - } - constructor(contexts) { - super(); - this.contexts = contexts; - this.commands = []; - } - async execute() { - let commands = this.commands; - if (typeof this.index !== `undefined` && this.index >= 0 && this.index < commands.length) - commands = [commands[this.index]]; - if (commands.length === 0) { - this.context.stdout.write(this.cli.usage()); - } - else if (commands.length === 1) { - this.context.stdout.write(this.cli.usage(this.contexts[commands[0]].commandClass, { detailed: true })); - } - else if (commands.length > 1) { - this.context.stdout.write(`Multiple commands match your selection:\n`); - this.context.stdout.write(`\n`); - let index = 0; - for (const command of this.commands) - this.context.stdout.write(this.cli.usage(this.contexts[command].commandClass, { prefix: `${index++}. `.padStart(5) })); - this.context.stdout.write(`\n`); - this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands.\n`); - } - } -} - -export { HelpCommand }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/definitions.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/definitions.d.ts deleted file mode 100644 index 3e2fd2f..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/definitions.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Command } from '../Command'; -/** - * A command that prints the clipanion definitions. - */ -export declare class DefinitionsCommand extends Command { - static paths: string[][]; - execute(): Promise; -} diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/definitions.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/definitions.js deleted file mode 100644 index b5af4a0..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/definitions.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var advanced_Command = require('../Command.js'); - -/** - * A command that prints the clipanion definitions. - */ -class DefinitionsCommand extends advanced_Command.Command { - async execute() { - this.context.stdout.write(`${JSON.stringify(this.cli.definitions(), null, 2)}\n`); - } -} -DefinitionsCommand.paths = [[`--clipanion=definitions`]]; - -exports.DefinitionsCommand = DefinitionsCommand; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/definitions.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/definitions.mjs deleted file mode 100644 index c7ae9c7..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/definitions.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import { Command } from '../Command.mjs'; - -/** - * A command that prints the clipanion definitions. - */ -class DefinitionsCommand extends Command { - async execute() { - this.context.stdout.write(`${JSON.stringify(this.cli.definitions(), null, 2)}\n`); - } -} -DefinitionsCommand.paths = [[`--clipanion=definitions`]]; - -export { DefinitionsCommand }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/help.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/help.d.ts deleted file mode 100644 index bb4e486..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/help.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Command } from '../Command'; -/** - * A command that prints the usage of all commands. - * - * Paths: `-h`, `--help` - */ -export declare class HelpCommand extends Command { - static paths: string[][]; - execute(): Promise; -} diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/help.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/help.js deleted file mode 100644 index 9d8c830..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/help.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var advanced_Command = require('../Command.js'); - -/** - * A command that prints the usage of all commands. - * - * Paths: `-h`, `--help` - */ -class HelpCommand extends advanced_Command.Command { - async execute() { - this.context.stdout.write(this.cli.usage()); - } -} -HelpCommand.paths = [[`-h`], [`--help`]]; - -exports.HelpCommand = HelpCommand; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/help.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/help.mjs deleted file mode 100644 index 1f5acae..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/help.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import { Command } from '../Command.mjs'; - -/** - * A command that prints the usage of all commands. - * - * Paths: `-h`, `--help` - */ -class HelpCommand extends Command { - async execute() { - this.context.stdout.write(this.cli.usage()); - } -} -HelpCommand.paths = [[`-h`], [`--help`]]; - -export { HelpCommand }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/index.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/index.d.ts deleted file mode 100644 index 6722e53..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './definitions'; -export * from './help'; -export * from './tokens'; -export * from './version'; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/index.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/index.js deleted file mode 100644 index e3c0327..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/index.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var advanced_builtins_definitions = require('./definitions.js'); -var advanced_builtins_help = require('./help.js'); -var advanced_builtins_tokens = require('./tokens.js'); -var advanced_builtins_version = require('./version.js'); - - - -exports.DefinitionsCommand = advanced_builtins_definitions.DefinitionsCommand; -exports.HelpCommand = advanced_builtins_help.HelpCommand; -exports.TokensCommand = advanced_builtins_tokens.TokensCommand; -exports.VersionCommand = advanced_builtins_version.VersionCommand; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/index.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/index.mjs deleted file mode 100644 index c107e26..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -export { DefinitionsCommand } from './definitions.mjs'; -export { HelpCommand } from './help.mjs'; -export { TokensCommand } from './tokens.mjs'; -export { VersionCommand } from './version.mjs'; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/tokens.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/tokens.d.ts deleted file mode 100644 index e4cd735..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/tokens.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Command } from '../Command'; -/** - * A command that prints the clipanion tokens. - */ -export declare class TokensCommand extends Command { - static paths: string[][]; - args: string[]; - execute(): Promise; -} diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/tokens.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/tokens.js deleted file mode 100644 index 1faadbe..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/tokens.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var advanced_Command = require('../Command.js'); -var advanced_options_Proxy = require('../options/Proxy.js'); - -/** - * A command that prints the clipanion tokens. - */ -class TokensCommand extends advanced_Command.Command { - constructor() { - super(...arguments); - this.args = advanced_options_Proxy.Proxy(); - } - async execute() { - this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens, null, 2)}\n`); - } -} -TokensCommand.paths = [[`--clipanion=tokens`]]; - -exports.TokensCommand = TokensCommand; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/tokens.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/tokens.mjs deleted file mode 100644 index ee312f4..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/tokens.mjs +++ /dev/null @@ -1,18 +0,0 @@ -import { Command } from '../Command.mjs'; -import { Proxy } from '../options/Proxy.mjs'; - -/** - * A command that prints the clipanion tokens. - */ -class TokensCommand extends Command { - constructor() { - super(...arguments); - this.args = Proxy(); - } - async execute() { - this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens, null, 2)}\n`); - } -} -TokensCommand.paths = [[`--clipanion=tokens`]]; - -export { TokensCommand }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/version.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/version.d.ts deleted file mode 100644 index c3a8d4a..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/version.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Command } from '../Command'; -/** - * A command that prints the version of the binary (`cli.binaryVersion`). - * - * Paths: `-v`, `--version` - */ -export declare class VersionCommand extends Command { - static paths: string[][]; - execute(): Promise; -} diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/version.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/version.js deleted file mode 100644 index 2cab04f..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/version.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var advanced_Command = require('../Command.js'); - -/** - * A command that prints the version of the binary (`cli.binaryVersion`). - * - * Paths: `-v`, `--version` - */ -class VersionCommand extends advanced_Command.Command { - async execute() { - var _a; - this.context.stdout.write(`${(_a = this.cli.binaryVersion) !== null && _a !== void 0 ? _a : ``}\n`); - } -} -VersionCommand.paths = [[`-v`], [`--version`]]; - -exports.VersionCommand = VersionCommand; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/version.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/version.mjs deleted file mode 100644 index d152047..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/builtins/version.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { Command } from '../Command.mjs'; - -/** - * A command that prints the version of the binary (`cli.binaryVersion`). - * - * Paths: `-v`, `--version` - */ -class VersionCommand extends Command { - async execute() { - var _a; - this.context.stdout.write(`${(_a = this.cli.binaryVersion) !== null && _a !== void 0 ? _a : ``}\n`); - } -} -VersionCommand.paths = [[`-v`], [`--version`]]; - -export { VersionCommand }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/index.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/index.d.ts deleted file mode 100644 index 401310d..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export { Command } from './Command'; -export { BaseContext, Cli, RunContext, CliOptions } from './Cli'; -export { CommandClass, Usage, Definition } from './Command'; -export { Token } from '../core'; -export { UsageError, ErrorMeta, ErrorWithMeta } from '../errors'; -export { formatMarkdownish, ColorFormat } from '../format'; -export { run, runExit } from './Cli'; -export * as Builtins from './builtins'; -export * as Option from './options'; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/index.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/index.js deleted file mode 100644 index 09bd200..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/index.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var advanced_Command = require('./Command.js'); -var advanced_Cli = require('./Cli.js'); -var errors = require('../errors.js'); -var format = require('../format.js'); -var advanced_builtins_index = require('./builtins/index.js'); -var advanced_options_index = require('./options/index.js'); - - - -exports.Command = advanced_Command.Command; -exports.Cli = advanced_Cli.Cli; -exports.run = advanced_Cli.run; -exports.runExit = advanced_Cli.runExit; -exports.UsageError = errors.UsageError; -exports.formatMarkdownish = format.formatMarkdownish; -exports.Builtins = advanced_builtins_index; -exports.Option = advanced_options_index; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/index.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/index.mjs deleted file mode 100644 index e9eb4ce..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/index.mjs +++ /dev/null @@ -1,8 +0,0 @@ -export { Command } from './Command.mjs'; -export { Cli, run, runExit } from './Cli.mjs'; -export { UsageError } from '../errors.mjs'; -export { formatMarkdownish } from '../format.mjs'; -import * as advanced_builtins_index from './builtins/index.mjs'; -export { advanced_builtins_index as Builtins }; -import * as advanced_options_index from './options/index.mjs'; -export { advanced_options_index as Option }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Array.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Array.d.ts deleted file mode 100644 index b02ef09..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Array.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { StrictValidator } from "typanion"; -import { GeneralOptionFlags, CommandOptionReturn, WithArity } from "./utils"; -export type ArrayFlags = GeneralOptionFlags & { - arity?: Arity; - validator?: StrictValidator>; -}; -/** - * Used to annotate array options. Such options will be strings unless they - * are provided a schema, which will then be used for coercion. - * - * @example - * --foo hello --foo bar - * ► {"foo": ["hello", "world"]} - */ -export declare function Array(descriptor: string, opts: ArrayFlags & { - required: true; -}): CommandOptionReturn>>; -export declare function Array(descriptor: string, opts?: ArrayFlags): CommandOptionReturn> | undefined>; -export declare function Array(descriptor: string, initialValue: Array>, opts?: Omit, 'required'>): CommandOptionReturn>>; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Array.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Array.js deleted file mode 100644 index 11d492d..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Array.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var advanced_options_utils = require('./utils.js'); - -function Array(descriptor, initialValueBase, optsBase) { - const [initialValue, opts] = advanced_options_utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); - const { arity = 1 } = opts; - const optNames = descriptor.split(`,`); - const nameSet = new Set(optNames); - return advanced_options_utils.makeCommandOption({ - definition(builder) { - builder.addOption({ - names: optNames, - arity, - hidden: opts === null || opts === void 0 ? void 0 : opts.hidden, - description: opts === null || opts === void 0 ? void 0 : opts.description, - required: opts.required, - }); - }, - transformer(builder, key, state) { - let usedName; - let currentValue = typeof initialValue !== `undefined` - ? [...initialValue] - : undefined; - for (const { name, value } of state.options) { - if (!nameSet.has(name)) - continue; - usedName = name; - currentValue = currentValue !== null && currentValue !== void 0 ? currentValue : []; - currentValue.push(value); - } - if (typeof currentValue !== `undefined`) { - return advanced_options_utils.applyValidator(usedName !== null && usedName !== void 0 ? usedName : key, currentValue, opts.validator); - } - else { - return currentValue; - } - }, - }); -} - -exports.Array = Array; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Array.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Array.mjs deleted file mode 100644 index 8013140..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Array.mjs +++ /dev/null @@ -1,40 +0,0 @@ -import { makeCommandOption, applyValidator, rerouteArguments } from './utils.mjs'; - -function Array(descriptor, initialValueBase, optsBase) { - const [initialValue, opts] = rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); - const { arity = 1 } = opts; - const optNames = descriptor.split(`,`); - const nameSet = new Set(optNames); - return makeCommandOption({ - definition(builder) { - builder.addOption({ - names: optNames, - arity, - hidden: opts === null || opts === void 0 ? void 0 : opts.hidden, - description: opts === null || opts === void 0 ? void 0 : opts.description, - required: opts.required, - }); - }, - transformer(builder, key, state) { - let usedName; - let currentValue = typeof initialValue !== `undefined` - ? [...initialValue] - : undefined; - for (const { name, value } of state.options) { - if (!nameSet.has(name)) - continue; - usedName = name; - currentValue = currentValue !== null && currentValue !== void 0 ? currentValue : []; - currentValue.push(value); - } - if (typeof currentValue !== `undefined`) { - return applyValidator(usedName !== null && usedName !== void 0 ? usedName : key, currentValue, opts.validator); - } - else { - return currentValue; - } - }, - }); -} - -export { Array }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Boolean.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Boolean.d.ts deleted file mode 100644 index a389d2b..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Boolean.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { CommandOptionReturn, GeneralOptionFlags } from "./utils"; -export type BooleanFlags = GeneralOptionFlags; -/** - * Used to annotate boolean options. - * - * @example - * --foo --no-bar - * ► {"foo": true, "bar": false} - */ -export declare function Boolean(descriptor: string, opts: BooleanFlags & { - required: true; -}): CommandOptionReturn; -export declare function Boolean(descriptor: string, opts?: BooleanFlags): CommandOptionReturn; -export declare function Boolean(descriptor: string, initialValue: boolean, opts?: Omit): CommandOptionReturn; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Boolean.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Boolean.js deleted file mode 100644 index 352095e..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Boolean.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var advanced_options_utils = require('./utils.js'); - -function Boolean(descriptor, initialValueBase, optsBase) { - const [initialValue, opts] = advanced_options_utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); - const optNames = descriptor.split(`,`); - const nameSet = new Set(optNames); - return advanced_options_utils.makeCommandOption({ - definition(builder) { - builder.addOption({ - names: optNames, - allowBinding: false, - arity: 0, - hidden: opts.hidden, - description: opts.description, - required: opts.required, - }); - }, - transformer(builer, key, state) { - let currentValue = initialValue; - for (const { name, value } of state.options) { - if (!nameSet.has(name)) - continue; - currentValue = value; - } - return currentValue; - }, - }); -} - -exports.Boolean = Boolean; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Boolean.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Boolean.mjs deleted file mode 100644 index de8324d..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Boolean.mjs +++ /dev/null @@ -1,30 +0,0 @@ -import { makeCommandOption, rerouteArguments } from './utils.mjs'; - -function Boolean(descriptor, initialValueBase, optsBase) { - const [initialValue, opts] = rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); - const optNames = descriptor.split(`,`); - const nameSet = new Set(optNames); - return makeCommandOption({ - definition(builder) { - builder.addOption({ - names: optNames, - allowBinding: false, - arity: 0, - hidden: opts.hidden, - description: opts.description, - required: opts.required, - }); - }, - transformer(builer, key, state) { - let currentValue = initialValue; - for (const { name, value } of state.options) { - if (!nameSet.has(name)) - continue; - currentValue = value; - } - return currentValue; - }, - }); -} - -export { Boolean }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Counter.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Counter.d.ts deleted file mode 100644 index 31be3e3..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Counter.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { CommandOptionReturn, GeneralOptionFlags } from "./utils"; -export type CounterFlags = GeneralOptionFlags; -/** - * Used to annotate options whose repeated values are aggregated into a - * single number. - * - * @example - * -vvvvv - * ► {"v": 5} - */ -export declare function Counter(descriptor: string, opts: CounterFlags & { - required: true; -}): CommandOptionReturn; -export declare function Counter(descriptor: string, opts?: CounterFlags): CommandOptionReturn; -export declare function Counter(descriptor: string, initialValue: number, opts?: Omit): CommandOptionReturn; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Counter.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Counter.js deleted file mode 100644 index 5cce554..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Counter.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var advanced_options_utils = require('./utils.js'); - -function Counter(descriptor, initialValueBase, optsBase) { - const [initialValue, opts] = advanced_options_utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); - const optNames = descriptor.split(`,`); - const nameSet = new Set(optNames); - return advanced_options_utils.makeCommandOption({ - definition(builder) { - builder.addOption({ - names: optNames, - allowBinding: false, - arity: 0, - hidden: opts.hidden, - description: opts.description, - required: opts.required, - }); - }, - transformer(builder, key, state) { - let currentValue = initialValue; - for (const { name, value } of state.options) { - if (!nameSet.has(name)) - continue; - currentValue !== null && currentValue !== void 0 ? currentValue : (currentValue = 0); - // Negated options reset the counter - if (!value) { - currentValue = 0; - } - else { - currentValue += 1; - } - } - return currentValue; - }, - }); -} - -exports.Counter = Counter; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Counter.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Counter.mjs deleted file mode 100644 index 592a23d..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Counter.mjs +++ /dev/null @@ -1,37 +0,0 @@ -import { makeCommandOption, rerouteArguments } from './utils.mjs'; - -function Counter(descriptor, initialValueBase, optsBase) { - const [initialValue, opts] = rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); - const optNames = descriptor.split(`,`); - const nameSet = new Set(optNames); - return makeCommandOption({ - definition(builder) { - builder.addOption({ - names: optNames, - allowBinding: false, - arity: 0, - hidden: opts.hidden, - description: opts.description, - required: opts.required, - }); - }, - transformer(builder, key, state) { - let currentValue = initialValue; - for (const { name, value } of state.options) { - if (!nameSet.has(name)) - continue; - currentValue !== null && currentValue !== void 0 ? currentValue : (currentValue = 0); - // Negated options reset the counter - if (!value) { - currentValue = 0; - } - else { - currentValue += 1; - } - } - return currentValue; - }, - }); -} - -export { Counter }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Proxy.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Proxy.d.ts deleted file mode 100644 index 38e9e71..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Proxy.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -export type ProxyFlags = { - name?: string; - required?: number; -}; -/** - * Used to annotate that the command wants to retrieve all trailing - * arguments that cannot be tied to a declared option. - * - * Be careful: this function is order-dependent! Make sure to define it - * after any positional argument you want to declare. - * - * This function is mutually exclusive with Option.Rest. - * - * @example - * yarn run foo hello --foo=bar world - * ► proxy = ["hello", "--foo=bar", "world"] - */ -export declare function Proxy(opts?: ProxyFlags): string[]; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Proxy.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Proxy.js deleted file mode 100644 index df3c8a6..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Proxy.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var advanced_options_utils = require('./utils.js'); - -/** - * Used to annotate that the command wants to retrieve all trailing - * arguments that cannot be tied to a declared option. - * - * Be careful: this function is order-dependent! Make sure to define it - * after any positional argument you want to declare. - * - * This function is mutually exclusive with Option.Rest. - * - * @example - * yarn run foo hello --foo=bar world - * ► proxy = ["hello", "--foo=bar", "world"] - */ -function Proxy(opts = {}) { - return advanced_options_utils.makeCommandOption({ - definition(builder, key) { - var _a; - builder.addProxy({ - name: (_a = opts.name) !== null && _a !== void 0 ? _a : key, - required: opts.required, - }); - }, - transformer(builder, key, state) { - return state.positionals.map(({ value }) => value); - }, - }); -} - -exports.Proxy = Proxy; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Proxy.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Proxy.mjs deleted file mode 100644 index 7df7afe..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Proxy.mjs +++ /dev/null @@ -1,31 +0,0 @@ -import { makeCommandOption } from './utils.mjs'; - -/** - * Used to annotate that the command wants to retrieve all trailing - * arguments that cannot be tied to a declared option. - * - * Be careful: this function is order-dependent! Make sure to define it - * after any positional argument you want to declare. - * - * This function is mutually exclusive with Option.Rest. - * - * @example - * yarn run foo hello --foo=bar world - * ► proxy = ["hello", "--foo=bar", "world"] - */ -function Proxy(opts = {}) { - return makeCommandOption({ - definition(builder, key) { - var _a; - builder.addProxy({ - name: (_a = opts.name) !== null && _a !== void 0 ? _a : key, - required: opts.required, - }); - }, - transformer(builder, key, state) { - return state.positionals.map(({ value }) => value); - }, - }); -} - -export { Proxy }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Rest.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Rest.d.ts deleted file mode 100644 index df22351..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Rest.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -export type RestFlags = { - name?: string; - required?: number; -}; -/** - * Used to annotate that the command supports any number of positional - * arguments. - * - * Be careful: this function is order-dependent! Make sure to define it - * after any positional argument you want to declare. - * - * This function is mutually exclusive with Option.Proxy. - * - * @example - * yarn add hello world - * ► rest = ["hello", "world"] - */ -export declare function Rest(opts?: RestFlags): string[]; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Rest.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Rest.js deleted file mode 100644 index 229daba..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Rest.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var core = require('../../core.js'); -var advanced_options_utils = require('./utils.js'); - -/** - * Used to annotate that the command supports any number of positional - * arguments. - * - * Be careful: this function is order-dependent! Make sure to define it - * after any positional argument you want to declare. - * - * This function is mutually exclusive with Option.Proxy. - * - * @example - * yarn add hello world - * ► rest = ["hello", "world"] - */ -function Rest(opts = {}) { - return advanced_options_utils.makeCommandOption({ - definition(builder, key) { - var _a; - builder.addRest({ - name: (_a = opts.name) !== null && _a !== void 0 ? _a : key, - required: opts.required, - }); - }, - transformer(builder, key, state) { - // The builder's arity.extra will always be NoLimits, - // because it is set when we call registerDefinition - const isRestPositional = (index) => { - const positional = state.positionals[index]; - // A NoLimits extra (i.e. an optional rest argument) - if (positional.extra === core.NoLimits) - return true; - // A leading positional (i.e. a required rest argument) - if (positional.extra === false && index < builder.arity.leading.length) - return true; - return false; - }; - let count = 0; - while (count < state.positionals.length && isRestPositional(count)) - count += 1; - return state.positionals.splice(0, count).map(({ value }) => value); - }, - }); -} - -exports.Rest = Rest; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Rest.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Rest.mjs deleted file mode 100644 index ddaa326..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/Rest.mjs +++ /dev/null @@ -1,47 +0,0 @@ -import { NoLimits } from '../../core.mjs'; -import { makeCommandOption } from './utils.mjs'; - -/** - * Used to annotate that the command supports any number of positional - * arguments. - * - * Be careful: this function is order-dependent! Make sure to define it - * after any positional argument you want to declare. - * - * This function is mutually exclusive with Option.Proxy. - * - * @example - * yarn add hello world - * ► rest = ["hello", "world"] - */ -function Rest(opts = {}) { - return makeCommandOption({ - definition(builder, key) { - var _a; - builder.addRest({ - name: (_a = opts.name) !== null && _a !== void 0 ? _a : key, - required: opts.required, - }); - }, - transformer(builder, key, state) { - // The builder's arity.extra will always be NoLimits, - // because it is set when we call registerDefinition - const isRestPositional = (index) => { - const positional = state.positionals[index]; - // A NoLimits extra (i.e. an optional rest argument) - if (positional.extra === NoLimits) - return true; - // A leading positional (i.e. a required rest argument) - if (positional.extra === false && index < builder.arity.leading.length) - return true; - return false; - }; - let count = 0; - while (count < state.positionals.length && isRestPositional(count)) - count += 1; - return state.positionals.splice(0, count).map(({ value }) => value); - }, - }); -} - -export { Rest }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/String.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/String.d.ts deleted file mode 100644 index 51589fd..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/String.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { StrictValidator } from "typanion"; -import { CommandOptionReturn, GeneralOptionFlags, WithArity } from "./utils"; -export type StringOptionNoBoolean = GeneralOptionFlags & { - env?: string; - validator?: StrictValidator; - tolerateBoolean?: false; - arity?: Arity; -}; -export type StringOptionTolerateBoolean = GeneralOptionFlags & { - env?: string; - validator?: StrictValidator; - tolerateBoolean: boolean; - arity?: 0; -}; -export type StringOption = StringOptionNoBoolean | StringOptionTolerateBoolean; -export type StringPositionalFlags = { - validator?: StrictValidator; - name?: string; - required?: boolean; -}; -/** - * Used to annotate positional options. Such options will be strings - * unless they are provided a schema, which will then be used for coercion. - * - * Be careful: this function is order-dependent! Make sure to define your - * positional options in the same order you expect to find them on the - * command line. - */ -export declare function String(): CommandOptionReturn; -export declare function String(opts: StringPositionalFlags & { - required: false; -}): CommandOptionReturn; -export declare function String(opts: StringPositionalFlags): CommandOptionReturn; -/** - * Used to annotate string options. Such options will be typed as strings - * unless they are provided a schema, which will then be used for coercion. - * - * @example - * --foo=hello --bar world - * ► {"foo": "hello", "bar": "world"} - */ -export declare function String(descriptor: string, opts: StringOptionNoBoolean & { - required: true; -}): CommandOptionReturn>; -export declare function String(descriptor: string, opts?: StringOptionNoBoolean): CommandOptionReturn | undefined>; -export declare function String(descriptor: string, initialValue: WithArity, opts?: Omit, 'required'>): CommandOptionReturn>; -export declare function String(descriptor: string, opts: StringOptionTolerateBoolean & { - required: true; -}): CommandOptionReturn; -export declare function String(descriptor: string, opts: StringOptionTolerateBoolean): CommandOptionReturn; -export declare function String(descriptor: string, initialValue: string | boolean, opts: Omit, 'required'>): CommandOptionReturn; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/String.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/String.js deleted file mode 100644 index 25a8dbf..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/String.js +++ /dev/null @@ -1,88 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var core = require('../../core.js'); -var advanced_options_utils = require('./utils.js'); - -function StringOption(descriptor, initialValueBase, optsBase) { - const [initialValue, opts] = advanced_options_utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); - const { arity = 1 } = opts; - const optNames = descriptor.split(`,`); - const nameSet = new Set(optNames); - return advanced_options_utils.makeCommandOption({ - definition(builder) { - builder.addOption({ - names: optNames, - arity: opts.tolerateBoolean ? 0 : arity, - hidden: opts.hidden, - description: opts.description, - required: opts.required, - }); - }, - transformer(builder, key, state, context) { - let usedName; - let currentValue = initialValue; - if (typeof opts.env !== `undefined` && context.env[opts.env]) { - usedName = opts.env; - currentValue = context.env[opts.env]; - } - for (const { name, value } of state.options) { - if (!nameSet.has(name)) - continue; - usedName = name; - currentValue = value; - } - if (typeof currentValue === `string`) { - return advanced_options_utils.applyValidator(usedName !== null && usedName !== void 0 ? usedName : key, currentValue, opts.validator); - } - else { - return currentValue; - } - }, - }); -} -function StringPositional(opts = {}) { - const { required = true } = opts; - return advanced_options_utils.makeCommandOption({ - definition(builder, key) { - var _a; - builder.addPositional({ - name: (_a = opts.name) !== null && _a !== void 0 ? _a : key, - required: opts.required, - }); - }, - transformer(builder, key, state) { - var _a; - for (let i = 0; i < state.positionals.length; ++i) { - // We skip NoLimits extras. We only care about - // required and optional finite positionals. - if (state.positionals[i].extra === core.NoLimits) - continue; - // We skip optional positionals when we only - // care about required positionals. - if (required && state.positionals[i].extra === true) - continue; - // We skip required positionals when we only - // care about optional positionals. - if (!required && state.positionals[i].extra === false) - continue; - // We remove the positional from the list - const [positional] = state.positionals.splice(i, 1); - return advanced_options_utils.applyValidator((_a = opts.name) !== null && _a !== void 0 ? _a : key, positional.value, opts.validator); - } - return undefined; - }, - }); -} -// This function is badly typed, but it doesn't matter because the overloads provide the true public typings -function String(descriptor, ...args) { - if (typeof descriptor === `string`) { - return StringOption(descriptor, ...args); - } - else { - return StringPositional(descriptor); - } -} - -exports.String = String; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/String.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/String.mjs deleted file mode 100644 index 118d6c5..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/String.mjs +++ /dev/null @@ -1,84 +0,0 @@ -import { NoLimits } from '../../core.mjs'; -import { makeCommandOption, applyValidator, rerouteArguments } from './utils.mjs'; - -function StringOption(descriptor, initialValueBase, optsBase) { - const [initialValue, opts] = rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); - const { arity = 1 } = opts; - const optNames = descriptor.split(`,`); - const nameSet = new Set(optNames); - return makeCommandOption({ - definition(builder) { - builder.addOption({ - names: optNames, - arity: opts.tolerateBoolean ? 0 : arity, - hidden: opts.hidden, - description: opts.description, - required: opts.required, - }); - }, - transformer(builder, key, state, context) { - let usedName; - let currentValue = initialValue; - if (typeof opts.env !== `undefined` && context.env[opts.env]) { - usedName = opts.env; - currentValue = context.env[opts.env]; - } - for (const { name, value } of state.options) { - if (!nameSet.has(name)) - continue; - usedName = name; - currentValue = value; - } - if (typeof currentValue === `string`) { - return applyValidator(usedName !== null && usedName !== void 0 ? usedName : key, currentValue, opts.validator); - } - else { - return currentValue; - } - }, - }); -} -function StringPositional(opts = {}) { - const { required = true } = opts; - return makeCommandOption({ - definition(builder, key) { - var _a; - builder.addPositional({ - name: (_a = opts.name) !== null && _a !== void 0 ? _a : key, - required: opts.required, - }); - }, - transformer(builder, key, state) { - var _a; - for (let i = 0; i < state.positionals.length; ++i) { - // We skip NoLimits extras. We only care about - // required and optional finite positionals. - if (state.positionals[i].extra === NoLimits) - continue; - // We skip optional positionals when we only - // care about required positionals. - if (required && state.positionals[i].extra === true) - continue; - // We skip required positionals when we only - // care about optional positionals. - if (!required && state.positionals[i].extra === false) - continue; - // We remove the positional from the list - const [positional] = state.positionals.splice(i, 1); - return applyValidator((_a = opts.name) !== null && _a !== void 0 ? _a : key, positional.value, opts.validator); - } - return undefined; - }, - }); -} -// This function is badly typed, but it doesn't matter because the overloads provide the true public typings -function String(descriptor, ...args) { - if (typeof descriptor === `string`) { - return StringOption(descriptor, ...args); - } - else { - return StringPositional(descriptor); - } -} - -export { String }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/index.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/index.d.ts deleted file mode 100644 index 6d6fff8..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export * from './Array'; -export * from './Boolean'; -export * from './Counter'; -export * from './Proxy'; -export * from './Rest'; -export * from './String'; -export * from './utils'; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/index.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/index.js deleted file mode 100644 index fc49243..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/index.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var advanced_options_Array = require('./Array.js'); -var advanced_options_Boolean = require('./Boolean.js'); -var advanced_options_Counter = require('./Counter.js'); -var advanced_options_Proxy = require('./Proxy.js'); -var advanced_options_Rest = require('./Rest.js'); -var advanced_options_String = require('./String.js'); -var advanced_options_utils = require('./utils.js'); - - - -exports.Array = advanced_options_Array.Array; -exports.Boolean = advanced_options_Boolean.Boolean; -exports.Counter = advanced_options_Counter.Counter; -exports.Proxy = advanced_options_Proxy.Proxy; -exports.Rest = advanced_options_Rest.Rest; -exports.String = advanced_options_String.String; -exports.applyValidator = advanced_options_utils.applyValidator; -exports.cleanValidationError = advanced_options_utils.cleanValidationError; -exports.formatError = advanced_options_utils.formatError; -exports.isOptionSymbol = advanced_options_utils.isOptionSymbol; -exports.makeCommandOption = advanced_options_utils.makeCommandOption; -exports.rerouteArguments = advanced_options_utils.rerouteArguments; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/index.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/index.mjs deleted file mode 100644 index ebd0320..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/index.mjs +++ /dev/null @@ -1,7 +0,0 @@ -export { Array } from './Array.mjs'; -export { Boolean } from './Boolean.mjs'; -export { Counter } from './Counter.mjs'; -export { Proxy } from './Proxy.mjs'; -export { Rest } from './Rest.mjs'; -export { String } from './String.mjs'; -export { applyValidator, cleanValidationError, formatError, isOptionSymbol, makeCommandOption, rerouteArguments } from './utils.mjs'; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/utils.d.ts b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/utils.d.ts deleted file mode 100644 index 405699a..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/utils.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { StrictValidator } from 'typanion'; -import { CommandBuilder, RunState } from '../../core'; -import { UsageError } from '../../errors'; -import { BaseContext, CliContext } from '../Cli'; -export declare const isOptionSymbol: unique symbol; -export type GeneralOptionFlags = { - description?: string; - hidden?: boolean; - required?: boolean; -}; -export type TupleOf> = Accumulator['length'] extends Arity ? Accumulator : TupleOf; -export type Tuple = Arity extends Arity ? number extends Arity ? Array : TupleOf : never; -export type WithArity = number extends Type['length'] ? Arity extends 0 ? boolean : Arity extends 1 ? Type : number extends Arity ? boolean | Type | Tuple : Tuple : Type; -export type CommandOption = { - [isOptionSymbol]: true; - definition: (builder: CommandBuilder>, key: string) => void; - transformer: (builder: CommandBuilder>, key: string, state: RunState, context: Context) => T; -}; -export type CommandOptionReturn = T; -export declare function makeCommandOption(spec: Omit, typeof isOptionSymbol>): T; -export declare function rerouteArguments(a: A | B, b: B): [Exclude, B]; -export declare function rerouteArguments(a: A | B | undefined, b: B): [Exclude | undefined, B]; -export declare function cleanValidationError(message: string, { mergeName }?: { - mergeName?: boolean; -}): string; -export declare function formatError(message: string, errors: Array): UsageError; -export declare function applyValidator(name: string, value: U, validator?: StrictValidator): U; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/utils.js b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/utils.js deleted file mode 100644 index c1a6d1f..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/utils.js +++ /dev/null @@ -1,65 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var errors = require('../../errors.js'); - -const isOptionSymbol = Symbol(`clipanion/isOption`); -function makeCommandOption(spec) { - // We lie! But it's for the good cause: the cli engine will turn the specs into proper values after instantiation. - return { ...spec, [isOptionSymbol]: true }; -} -function rerouteArguments(a, b) { - if (typeof a === `undefined`) - return [a, b]; - if (typeof a === `object` && a !== null && !Array.isArray(a)) { - return [undefined, a]; - } - else { - return [a, b]; - } -} -function cleanValidationError(message, { mergeName = false } = {}) { - const match = message.match(/^([^:]+): (.*)$/m); - if (!match) - return `validation failed`; - let [, path, line] = match; - if (mergeName) - line = line[0].toLowerCase() + line.slice(1); - line = path !== `.` || !mergeName - ? `${path.replace(/^\.(\[|$)/, `$1`)}: ${line}` - : `: ${line}`; - return line; -} -function formatError(message, errors$1) { - if (errors$1.length === 1) { - return new errors.UsageError(`${message}${cleanValidationError(errors$1[0], { mergeName: true })}`); - } - else { - return new errors.UsageError(`${message}:\n${errors$1.map(error => `\n- ${cleanValidationError(error)}`).join(``)}`); - } -} -function applyValidator(name, value, validator) { - if (typeof validator === `undefined`) - return value; - const errors = []; - const coercions = []; - const coercion = (v) => { - const orig = value; - value = v; - return coercion.bind(null, orig); - }; - const check = validator(value, { errors, coercions, coercion }); - if (!check) - throw formatError(`Invalid value for ${name}`, errors); - for (const [, op] of coercions) - op(); - return value; -} - -exports.applyValidator = applyValidator; -exports.cleanValidationError = cleanValidationError; -exports.formatError = formatError; -exports.isOptionSymbol = isOptionSymbol; -exports.makeCommandOption = makeCommandOption; -exports.rerouteArguments = rerouteArguments; diff --git a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/utils.mjs b/sdks/nodejs/node_modules/clipanion/lib/advanced/options/utils.mjs deleted file mode 100644 index 004b4e1..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/advanced/options/utils.mjs +++ /dev/null @@ -1,56 +0,0 @@ -import { UsageError } from '../../errors.mjs'; - -const isOptionSymbol = Symbol(`clipanion/isOption`); -function makeCommandOption(spec) { - // We lie! But it's for the good cause: the cli engine will turn the specs into proper values after instantiation. - return { ...spec, [isOptionSymbol]: true }; -} -function rerouteArguments(a, b) { - if (typeof a === `undefined`) - return [a, b]; - if (typeof a === `object` && a !== null && !Array.isArray(a)) { - return [undefined, a]; - } - else { - return [a, b]; - } -} -function cleanValidationError(message, { mergeName = false } = {}) { - const match = message.match(/^([^:]+): (.*)$/m); - if (!match) - return `validation failed`; - let [, path, line] = match; - if (mergeName) - line = line[0].toLowerCase() + line.slice(1); - line = path !== `.` || !mergeName - ? `${path.replace(/^\.(\[|$)/, `$1`)}: ${line}` - : `: ${line}`; - return line; -} -function formatError(message, errors) { - if (errors.length === 1) { - return new UsageError(`${message}${cleanValidationError(errors[0], { mergeName: true })}`); - } - else { - return new UsageError(`${message}:\n${errors.map(error => `\n- ${cleanValidationError(error)}`).join(``)}`); - } -} -function applyValidator(name, value, validator) { - if (typeof validator === `undefined`) - return value; - const errors = []; - const coercions = []; - const coercion = (v) => { - const orig = value; - value = v; - return coercion.bind(null, orig); - }; - const check = validator(value, { errors, coercions, coercion }); - if (!check) - throw formatError(`Invalid value for ${name}`, errors); - for (const [, op] of coercions) - op(); - return value; -} - -export { applyValidator, cleanValidationError, formatError, isOptionSymbol, makeCommandOption, rerouteArguments }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/constants.d.ts b/sdks/nodejs/node_modules/clipanion/lib/constants.d.ts deleted file mode 100644 index ccd57a0..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/constants.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -export declare enum SpecialToken { - StartOfInput = "\0", - EndOfInput = "\u0001", - EndOfPartialInput = "\u0002" -} -export declare enum NodeType { - InitialNode = 0, - SuccessNode = 1, - ErrorNode = 2, - CustomNode = 3 -} -export declare const HELP_COMMAND_INDEX = -1; -export declare const HELP_REGEX: RegExp; -export declare const OPTION_REGEX: RegExp; -export declare const BATCH_REGEX: RegExp; -export declare const BINDING_REGEX: RegExp; -export declare const IS_DEBUG: boolean; diff --git a/sdks/nodejs/node_modules/clipanion/lib/constants.js b/sdks/nodejs/node_modules/clipanion/lib/constants.js deleted file mode 100644 index 88583e6..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/constants.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -exports.SpecialToken = void 0; -(function (SpecialToken) { - SpecialToken["StartOfInput"] = "\0"; - SpecialToken["EndOfInput"] = "\u0001"; - SpecialToken["EndOfPartialInput"] = "\u0002"; -})(exports.SpecialToken || (exports.SpecialToken = {})); -exports.NodeType = void 0; -(function (NodeType) { - NodeType[NodeType["InitialNode"] = 0] = "InitialNode"; - NodeType[NodeType["SuccessNode"] = 1] = "SuccessNode"; - NodeType[NodeType["ErrorNode"] = 2] = "ErrorNode"; - NodeType[NodeType["CustomNode"] = 3] = "CustomNode"; -})(exports.NodeType || (exports.NodeType = {})); -const HELP_COMMAND_INDEX = -1; -const HELP_REGEX = /^(-h|--help)(?:=([0-9]+))?$/; -const OPTION_REGEX = /^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/; -const BATCH_REGEX = /^-[a-zA-Z]{2,}$/; -const BINDING_REGEX = /^([^=]+)=([\s\S]*)$/; -const IS_DEBUG = process.env.DEBUG_CLI === `1`; - -exports.BATCH_REGEX = BATCH_REGEX; -exports.BINDING_REGEX = BINDING_REGEX; -exports.HELP_COMMAND_INDEX = HELP_COMMAND_INDEX; -exports.HELP_REGEX = HELP_REGEX; -exports.IS_DEBUG = IS_DEBUG; -exports.OPTION_REGEX = OPTION_REGEX; diff --git a/sdks/nodejs/node_modules/clipanion/lib/constants.mjs b/sdks/nodejs/node_modules/clipanion/lib/constants.mjs deleted file mode 100644 index c5f07c6..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/constants.mjs +++ /dev/null @@ -1,21 +0,0 @@ -var SpecialToken; -(function (SpecialToken) { - SpecialToken["StartOfInput"] = "\0"; - SpecialToken["EndOfInput"] = "\u0001"; - SpecialToken["EndOfPartialInput"] = "\u0002"; -})(SpecialToken || (SpecialToken = {})); -var NodeType; -(function (NodeType) { - NodeType[NodeType["InitialNode"] = 0] = "InitialNode"; - NodeType[NodeType["SuccessNode"] = 1] = "SuccessNode"; - NodeType[NodeType["ErrorNode"] = 2] = "ErrorNode"; - NodeType[NodeType["CustomNode"] = 3] = "CustomNode"; -})(NodeType || (NodeType = {})); -const HELP_COMMAND_INDEX = -1; -const HELP_REGEX = /^(-h|--help)(?:=([0-9]+))?$/; -const OPTION_REGEX = /^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/; -const BATCH_REGEX = /^-[a-zA-Z]{2,}$/; -const BINDING_REGEX = /^([^=]+)=([\s\S]*)$/; -const IS_DEBUG = process.env.DEBUG_CLI === `1`; - -export { BATCH_REGEX, BINDING_REGEX, HELP_COMMAND_INDEX, HELP_REGEX, IS_DEBUG, NodeType, OPTION_REGEX, SpecialToken }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/core.d.ts b/sdks/nodejs/node_modules/clipanion/lib/core.d.ts deleted file mode 100644 index ad2defb..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/core.d.ts +++ /dev/null @@ -1,510 +0,0 @@ -import { NodeType } from './constants'; -export declare function debug(str: string): void; -export type StateMachine = { - nodes: Array; -}; -export type TokenBase = { - segmentIndex: number; -}; -export type PathToken = TokenBase & { - type: `path`; - slice?: undefined; -}; -export type PositionalToken = TokenBase & { - type: `positional`; - slice?: undefined; -}; -export type OptionToken = TokenBase & { - type: `option`; - slice?: [number, number]; - option: string; -}; -export type AssignToken = TokenBase & { - type: `assign`; - slice: [number, number]; -}; -export type ValueToken = TokenBase & { - type: `value`; - slice?: [number, number]; -}; -export type Token = PathToken | PositionalToken | OptionToken | AssignToken | ValueToken; -export type RunState = { - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - options: Array<{ - name: string; - value: any; - }>; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - tokens: Array; -}; -export declare function makeStateMachine(): StateMachine; -export declare function makeAnyOfMachine(inputs: Array): StateMachine; -export declare function injectNode(machine: StateMachine, node: Node): number; -export declare function simplifyMachine(input: StateMachine): void; -export declare function debugMachine(machine: StateMachine, { prefix }?: { - prefix?: string; -}): void; -export declare function runMachineInternal(machine: StateMachine, input: Array, partial?: boolean): { - node: number; - state: RunState; -}[]; -export declare function trimSmallerBranches(branches: Array<{ - node: number; - state: RunState; -}>): { - node: number; - state: RunState; -}[]; -export declare function selectBestState(input: Array, states: Array): RunState; -export declare function aggregateHelpStates(states: Array): RunState[]; -type Transition = { - to: number; - reducer?: Callback; -}; -type Node = { - dynamics: Array<[Callback, Transition]>; - shortcuts: Array; - statics: { - [segment: string]: Array; - }; -}; -export declare function makeNode(): Node; -export declare function isTerminalNode(node: number): boolean; -export declare function cloneTransition(input: Transition, offset?: number): { - to: number; - reducer: "setCandidateState" | "setSelectedIndex" | "pushBatch" | "pushBound" | "pushPath" | "pushPositional" | "pushExtra" | "pushExtraNoLimits" | "pushTrue" | "pushFalse" | "pushUndefined" | "pushStringValue" | "setStringValue" | "inhibateOptions" | "useHelp" | "setError" | "setOptionArityError" | ["setCandidateState" | "setSelectedIndex" | "pushBatch" | "pushBound" | "pushPath" | "pushPositional" | "pushExtra" | "pushExtraNoLimits" | "pushTrue" | "pushFalse" | "pushUndefined" | "pushStringValue" | "setStringValue" | "inhibateOptions" | "useHelp" | "setError" | "setOptionArityError"] | ["setCandidateState" | "setSelectedIndex" | "pushBatch" | "pushBound" | "pushPath" | "pushPositional" | "pushExtra" | "pushExtraNoLimits" | "pushTrue" | "pushFalse" | "pushUndefined" | "pushStringValue" | "setStringValue" | "inhibateOptions" | "useHelp" | "setError" | "setOptionArityError", candidateState: Partial] | ["setCandidateState" | "setSelectedIndex" | "pushBatch" | "pushBound" | "pushPath" | "pushPositional" | "pushExtra" | "pushExtraNoLimits" | "pushTrue" | "pushFalse" | "pushUndefined" | "pushStringValue" | "setStringValue" | "inhibateOptions" | "useHelp" | "setError" | "setOptionArityError", index: number] | ["setCandidateState" | "setSelectedIndex" | "pushBatch" | "pushBound" | "pushPath" | "pushPositional" | "pushExtra" | "pushExtraNoLimits" | "pushTrue" | "pushFalse" | "pushUndefined" | "pushStringValue" | "setStringValue" | "inhibateOptions" | "useHelp" | "setError" | "setOptionArityError", names: Map] | ["setCandidateState" | "setSelectedIndex" | "pushBatch" | "pushBound" | "pushPath" | "pushPositional" | "pushExtra" | "pushExtraNoLimits" | "pushTrue" | "pushFalse" | "pushUndefined" | "pushStringValue" | "setStringValue" | "inhibateOptions" | "useHelp" | "setError" | "setOptionArityError", name: string] | ["setCandidateState" | "setSelectedIndex" | "pushBatch" | "pushBound" | "pushPath" | "pushPositional" | "pushExtra" | "pushExtraNoLimits" | "pushTrue" | "pushFalse" | "pushUndefined" | "pushStringValue" | "setStringValue" | "inhibateOptions" | "useHelp" | "setError" | "setOptionArityError", name: string] | ["setCandidateState" | "setSelectedIndex" | "pushBatch" | "pushBound" | "pushPath" | "pushPositional" | "pushExtra" | "pushExtraNoLimits" | "pushTrue" | "pushFalse" | "pushUndefined" | "pushStringValue" | "setStringValue" | "inhibateOptions" | "useHelp" | "setError" | "setOptionArityError", name: string] | ["setCandidateState" | "setSelectedIndex" | "pushBatch" | "pushBound" | "pushPath" | "pushPositional" | "pushExtra" | "pushExtraNoLimits" | "pushTrue" | "pushFalse" | "pushUndefined" | "pushStringValue" | "setStringValue" | "inhibateOptions" | "useHelp" | "setError" | "setOptionArityError", command: number] | ["setCandidateState" | "setSelectedIndex" | "pushBatch" | "pushBound" | "pushPath" | "pushPositional" | "pushExtra" | "pushExtraNoLimits" | "pushTrue" | "pushFalse" | "pushUndefined" | "pushStringValue" | "setStringValue" | "inhibateOptions" | "useHelp" | "setError" | "setOptionArityError", errorMessage: string] | undefined; -}; -export declare function cloneNode(input: Node, offset?: number): Node; -export declare function registerDynamic(machine: StateMachine, from: NodeType | number, test: Callback, to: NodeType | number, reducer?: Callback): void; -export declare function registerShortcut(machine: StateMachine, from: NodeType | number, to: NodeType | number, reducer?: Callback): void; -export declare function registerStatic(machine: StateMachine, from: NodeType | number, test: string, to: NodeType | number, reducer?: Callback): void; -type UndefinedKeys = { - [P in keyof T]-?: undefined extends T[P] ? P : never; -}[keyof T]; -type UndefinedTupleKeys> = UndefinedKeys>; -type TupleKeys = Exclude; -export type CallbackFn

, R> = (state: RunState, segment: string, segmentIndex: number, ...args: P) => R; -export type CallbackFnParameters> = T extends ((state: RunState, segment: string, segmentIndex: number, ...args: infer P) => any) ? P : never; -export type CallbackStore = Record>; -export type Callback> = [ - TupleKeys> -] extends [UndefinedTupleKeys>] ? (T | [T, ...CallbackFnParameters]) : [T, ...CallbackFnParameters]; -export declare function execute>(store: S, callback: Callback, state: RunState, segment: string, segmentIndex: number): R; -export declare const tests: { - always: () => boolean; - isOptionLike: (state: RunState, segment: string) => boolean; - isNotOptionLike: (state: RunState, segment: string) => boolean; - isOption: (state: RunState, segment: string, segmentIndex: number, name: string) => boolean; - isBatchOption: (state: RunState, segment: string, segmentIndex: number, names: Map) => boolean; - isBoundOption: (state: RunState, segment: string, segmentIndex: number, names: Map, options: Array) => boolean; - isNegatedOption: (state: RunState, segment: string, segmentIndex: number, name: string) => boolean; - isHelp: (state: RunState, segment: string) => boolean; - isUnsupportedOption: (state: RunState, segment: string, segmentIndex: number, names: Map) => boolean; - isInvalidOption: (state: RunState, segment: string) => boolean; -}; -export declare const reducers: { - setCandidateState: (state: RunState, segment: string, segmentIndex: number, candidateState: Partial) => { - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - options: Array<{ - name: string; - value: any; - }>; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - tokens: Array; - }; - setSelectedIndex: (state: RunState, segment: string, segmentIndex: number, index: number) => { - selectedIndex: number; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - options: Array<{ - name: string; - value: any; - }>; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - tokens: Array; - }; - pushBatch: (state: RunState, segment: string, segmentIndex: number, names: Map) => { - options: { - name: string; - value: any; - }[]; - tokens: Token[]; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - }; - pushBound: (state: RunState, segment: string, segmentIndex: number) => { - options: { - name: string; - value: any; - }[]; - tokens: Token[]; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - }; - pushPath: (state: RunState, segment: string, segmentIndex: number) => { - path: string[]; - tokens: Token[]; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - options: Array<{ - name: string; - value: any; - }>; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - }; - pushPositional: (state: RunState, segment: string, segmentIndex: number) => { - positionals: { - value: string; - extra: boolean | typeof NoLimits; - }[]; - tokens: Token[]; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - options: Array<{ - name: string; - value: any; - }>; - path: Array; - remainder: string | null; - selectedIndex: number | null; - }; - pushExtra: (state: RunState, segment: string, segmentIndex: number) => { - positionals: { - value: string; - extra: boolean | typeof NoLimits; - }[]; - tokens: Token[]; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - options: Array<{ - name: string; - value: any; - }>; - path: Array; - remainder: string | null; - selectedIndex: number | null; - }; - pushExtraNoLimits: (state: RunState, segment: string, segmentIndex: number) => { - positionals: { - value: string; - extra: boolean | typeof NoLimits; - }[]; - tokens: Token[]; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - options: Array<{ - name: string; - value: any; - }>; - path: Array; - remainder: string | null; - selectedIndex: number | null; - }; - pushTrue: (state: RunState, segment: string, segmentIndex: number, name: string) => { - options: { - name: string; - value: any; - }[]; - tokens: Token[]; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - }; - pushFalse: (state: RunState, segment: string, segmentIndex: number, name: string) => { - options: { - name: string; - value: any; - }[]; - tokens: Token[]; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - }; - pushUndefined: (state: RunState, segment: string, segmentIndex: number, name: string) => { - options: { - name: string; - value: any; - }[]; - tokens: Token[]; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - }; - pushStringValue: (state: RunState, segment: string, segmentIndex: number) => { - options: { - name: string; - value: any; - }[]; - tokens: Token[]; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - }; - setStringValue: (state: RunState, segment: string, segmentIndex: number) => { - options: { - name: string; - value: any; - }[]; - tokens: Token[]; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - }; - inhibateOptions: (state: RunState) => { - ignoreOptions: boolean; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - options: Array<{ - name: string; - value: any; - }>; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - tokens: Array; - }; - useHelp: (state: RunState, segment: string, segmentIndex: number, command: number) => { - options: { - name: string; - value: string; - }[]; - candidateUsage: string | null; - requiredOptions: Array>; - errorMessage: string | null; - ignoreOptions: boolean; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - tokens: Array; - }; - setError: (state: RunState, segment: string, segmentIndex: number, errorMessage: string) => { - errorMessage: string; - candidateUsage: string | null; - requiredOptions: Array>; - ignoreOptions: boolean; - options: Array<{ - name: string; - value: any; - }>; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - tokens: Array; - }; - setOptionArityError: (state: RunState, segment: string) => { - errorMessage: string; - candidateUsage: string | null; - requiredOptions: Array>; - ignoreOptions: boolean; - options: Array<{ - name: string; - value: any; - }>; - path: Array; - positionals: Array<{ - value: string; - extra: boolean | typeof NoLimits; - }>; - remainder: string | null; - selectedIndex: number | null; - tokens: Array; - }; -}; -export declare const NoLimits: unique symbol; -export type ArityDefinition = { - leading: Array; - extra: Array | typeof NoLimits; - trailing: Array; - proxy: boolean; -}; -export type OptDefinition = { - preferredName: string; - nameSet: Array; - description?: string; - arity: number; - hidden: boolean; - required: boolean; - allowBinding: boolean; -}; -export declare class CommandBuilder { - readonly cliIndex: number; - readonly cliOpts: Readonly; - readonly allOptionNames: Map; - readonly arity: ArityDefinition; - readonly options: Array; - readonly paths: Array>; - private context?; - constructor(cliIndex: number, cliOpts: CliOptions); - addPath(path: Array): void; - setArity({ leading, trailing, extra, proxy }: Partial): void; - addPositional({ name, required }?: { - name?: string; - required?: boolean; - }): void; - addRest({ name, required }?: { - name?: string; - required?: number; - }): void; - addProxy({ required }?: { - name?: string; - required?: number; - }): void; - addOption({ names: nameSet, description, arity, hidden, required, allowBinding }: Partial & { - names: Array; - }): void; - setContext(context: Context): void; - usage({ detailed, inlineOptions }?: { - detailed?: boolean; - inlineOptions?: boolean; - }): { - usage: string; - options: { - preferredName: string; - nameSet: Array; - definition: string; - description: string; - required: boolean; - }[]; - }; - compile(): { - machine: StateMachine; - context: Context & ({} | null); - }; - private registerOptions; -} -export type CliOptions = { - binaryName: string; -}; -export type CliBuilderCallback = (command: CommandBuilder) => CommandBuilder | void; -export declare class CliBuilder { - private readonly opts; - private readonly builders; - static build(cbs: Array>, opts?: Partial): { - machine: StateMachine; - contexts: ((Context & null) | (Context & {}))[]; - process: (input: string[], { partial }?: { - partial?: boolean | undefined; - }) => RunState; - }; - constructor({ binaryName }?: Partial); - getBuilderByIndex(n: number): CommandBuilder; - commands(cbs: Array>): this; - command(): CommandBuilder; - compile(): { - machine: StateMachine; - contexts: ((Context & null) | (Context & {}))[]; - process: (input: Array, { partial }?: { - partial?: boolean | undefined; - }) => RunState; - }; -} -export {}; diff --git a/sdks/nodejs/node_modules/clipanion/lib/core.js b/sdks/nodejs/node_modules/clipanion/lib/core.js deleted file mode 100644 index e03d9da..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/core.js +++ /dev/null @@ -1,804 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var constants = require('./constants.js'); -var errors = require('./errors.js'); - -// ------------------------------------------------------------------------ -function debug(str) { - if (constants.IS_DEBUG) { - console.log(str); - } -} -const basicHelpState = { - candidateUsage: null, - requiredOptions: [], - errorMessage: null, - ignoreOptions: false, - path: [], - positionals: [], - options: [], - remainder: null, - selectedIndex: constants.HELP_COMMAND_INDEX, - tokens: [], -}; -function makeStateMachine() { - const stateMachine = { - nodes: [], - }; - for (let t = 0; t < constants.NodeType.CustomNode; ++t) - stateMachine.nodes.push(makeNode()); - return stateMachine; -} -function makeAnyOfMachine(inputs) { - const output = makeStateMachine(); - const heads = []; - let offset = output.nodes.length; - for (const input of inputs) { - heads.push(offset); - for (let t = 0; t < input.nodes.length; ++t) - if (!isTerminalNode(t)) - output.nodes.push(cloneNode(input.nodes[t], offset)); - offset += input.nodes.length - constants.NodeType.CustomNode + 1; - } - for (const head of heads) - registerShortcut(output, constants.NodeType.InitialNode, head); - return output; -} -function injectNode(machine, node) { - machine.nodes.push(node); - return machine.nodes.length - 1; -} -function simplifyMachine(input) { - const visited = new Set(); - const process = (node) => { - if (visited.has(node)) - return; - visited.add(node); - const nodeDef = input.nodes[node]; - for (const transitions of Object.values(nodeDef.statics)) - for (const { to } of transitions) - process(to); - for (const [, { to }] of nodeDef.dynamics) - process(to); - for (const { to } of nodeDef.shortcuts) - process(to); - const shortcuts = new Set(nodeDef.shortcuts.map(({ to }) => to)); - while (nodeDef.shortcuts.length > 0) { - const { to } = nodeDef.shortcuts.shift(); - const toDef = input.nodes[to]; - for (const [segment, transitions] of Object.entries(toDef.statics)) { - const store = !Object.prototype.hasOwnProperty.call(nodeDef.statics, segment) - ? nodeDef.statics[segment] = [] - : nodeDef.statics[segment]; - for (const transition of transitions) { - if (!store.some(({ to }) => transition.to === to)) { - store.push(transition); - } - } - } - for (const [test, transition] of toDef.dynamics) - if (!nodeDef.dynamics.some(([otherTest, { to }]) => test === otherTest && transition.to === to)) - nodeDef.dynamics.push([test, transition]); - for (const transition of toDef.shortcuts) { - if (!shortcuts.has(transition.to)) { - nodeDef.shortcuts.push(transition); - shortcuts.add(transition.to); - } - } - } - }; - process(constants.NodeType.InitialNode); -} -function debugMachine(machine, { prefix = `` } = {}) { - // Don't iterate unless it's needed - if (constants.IS_DEBUG) { - debug(`${prefix}Nodes are:`); - for (let t = 0; t < machine.nodes.length; ++t) { - debug(`${prefix} ${t}: ${JSON.stringify(machine.nodes[t])}`); - } - } -} -function runMachineInternal(machine, input, partial = false) { - debug(`Running a vm on ${JSON.stringify(input)}`); - let branches = [{ - node: constants.NodeType.InitialNode, - state: { - candidateUsage: null, - requiredOptions: [], - errorMessage: null, - ignoreOptions: false, - options: [], - path: [], - positionals: [], - remainder: null, - selectedIndex: null, - tokens: [], - }, - }]; - debugMachine(machine, { prefix: ` ` }); - const tokens = [constants.SpecialToken.StartOfInput, ...input]; - for (let t = 0; t < tokens.length; ++t) { - const segment = tokens[t]; - const isEOI = segment === constants.SpecialToken.EndOfInput || segment === constants.SpecialToken.EndOfPartialInput; - // The -1 is because we added a START_OF_INPUT token - const segmentIndex = t - 1; - debug(` Processing ${JSON.stringify(segment)}`); - const nextBranches = []; - for (const { node, state } of branches) { - debug(` Current node is ${node}`); - const nodeDef = machine.nodes[node]; - if (node === constants.NodeType.ErrorNode) { - nextBranches.push({ node, state }); - continue; - } - console.assert(nodeDef.shortcuts.length === 0, `Shortcuts should have been eliminated by now`); - const hasExactMatch = Object.prototype.hasOwnProperty.call(nodeDef.statics, segment); - if (!partial || t < tokens.length - 1 || hasExactMatch) { - if (hasExactMatch) { - const transitions = nodeDef.statics[segment]; - for (const { to, reducer } of transitions) { - nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment, segmentIndex) : state }); - debug(` Static transition to ${to} found`); - } - } - else { - debug(` No static transition found`); - } - } - else { - let hasMatches = false; - for (const candidate of Object.keys(nodeDef.statics)) { - if (!candidate.startsWith(segment)) - continue; - if (segment === candidate) { - for (const { to, reducer } of nodeDef.statics[candidate]) { - nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment, segmentIndex) : state }); - debug(` Static transition to ${to} found`); - } - } - else { - for (const { to } of nodeDef.statics[candidate]) { - nextBranches.push({ node: to, state: { ...state, remainder: candidate.slice(segment.length) } }); - debug(` Static transition to ${to} found (partial match)`); - } - } - hasMatches = true; - } - if (!hasMatches) { - debug(` No partial static transition found`); - } - } - if (!isEOI) { - for (const [test, { to, reducer }] of nodeDef.dynamics) { - if (execute(tests, test, state, segment, segmentIndex)) { - nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment, segmentIndex) : state }); - debug(` Dynamic transition to ${to} found (via ${test})`); - } - } - } - } - if (nextBranches.length === 0 && isEOI && input.length === 1) { - return [{ - node: constants.NodeType.InitialNode, - state: basicHelpState, - }]; - } - if (nextBranches.length === 0) { - throw new errors.UnknownSyntaxError(input, branches.filter(({ node }) => { - return node !== constants.NodeType.ErrorNode; - }).map(({ state }) => { - return { usage: state.candidateUsage, reason: null }; - })); - } - if (nextBranches.every(({ node }) => node === constants.NodeType.ErrorNode)) { - throw new errors.UnknownSyntaxError(input, nextBranches.map(({ state }) => { - return { usage: state.candidateUsage, reason: state.errorMessage }; - })); - } - branches = trimSmallerBranches(nextBranches); - } - if (branches.length > 0) { - debug(` Results:`); - for (const branch of branches) { - debug(` - ${branch.node} -> ${JSON.stringify(branch.state)}`); - } - } - else { - debug(` No results`); - } - return branches; -} -function runMachine(machine, input, { endToken = constants.SpecialToken.EndOfInput } = {}) { - const branches = runMachineInternal(machine, [...input, endToken]); - return selectBestState(input, branches.map(({ state }) => { - return state; - })); -} -function trimSmallerBranches(branches) { - let maxPathSize = 0; - for (const { state } of branches) - if (state.path.length > maxPathSize) - maxPathSize = state.path.length; - return branches.filter(({ state }) => { - return state.path.length === maxPathSize; - }); -} -function selectBestState(input, states) { - const terminalStates = states.filter(state => { - return state.selectedIndex !== null; - }); - if (terminalStates.length === 0) - throw new Error(); - const requiredOptionsSetStates = terminalStates.filter(state => state.selectedIndex === constants.HELP_COMMAND_INDEX || state.requiredOptions.every(names => names.some(name => state.options.find(opt => opt.name === name)))); - if (requiredOptionsSetStates.length === 0) { - throw new errors.UnknownSyntaxError(input, terminalStates.map(state => ({ - usage: state.candidateUsage, - reason: null, - }))); - } - let maxPathSize = 0; - for (const state of requiredOptionsSetStates) - if (state.path.length > maxPathSize) - maxPathSize = state.path.length; - const bestPathBranches = requiredOptionsSetStates.filter(state => { - return state.path.length === maxPathSize; - }); - const getPositionalCount = (state) => state.positionals.filter(({ extra }) => { - return !extra; - }).length + state.options.length; - const statesWithPositionalCount = bestPathBranches.map(state => { - return { state, positionalCount: getPositionalCount(state) }; - }); - let maxPositionalCount = 0; - for (const { positionalCount } of statesWithPositionalCount) - if (positionalCount > maxPositionalCount) - maxPositionalCount = positionalCount; - const bestPositionalStates = statesWithPositionalCount.filter(({ positionalCount }) => { - return positionalCount === maxPositionalCount; - }).map(({ state }) => { - return state; - }); - const fixedStates = aggregateHelpStates(bestPositionalStates); - if (fixedStates.length > 1) - throw new errors.AmbiguousSyntaxError(input, fixedStates.map(state => state.candidateUsage)); - return fixedStates[0]; -} -function aggregateHelpStates(states) { - const notHelps = []; - const helps = []; - for (const state of states) { - if (state.selectedIndex === constants.HELP_COMMAND_INDEX) { - helps.push(state); - } - else { - notHelps.push(state); - } - } - if (helps.length > 0) { - notHelps.push({ - ...basicHelpState, - path: findCommonPrefix(...helps.map(state => state.path)), - options: helps.reduce((options, state) => options.concat(state.options), []), - }); - } - return notHelps; -} -function findCommonPrefix(firstPath, secondPath, ...rest) { - if (secondPath === undefined) - return Array.from(firstPath); - return findCommonPrefix(firstPath.filter((segment, i) => segment === secondPath[i]), ...rest); -} -function makeNode() { - return { - dynamics: [], - shortcuts: [], - statics: {}, - }; -} -function isTerminalNode(node) { - return node === constants.NodeType.SuccessNode || node === constants.NodeType.ErrorNode; -} -function cloneTransition(input, offset = 0) { - const to = !isTerminalNode(input.to) - ? input.to >= constants.NodeType.CustomNode - ? input.to + offset - constants.NodeType.CustomNode + 1 - : input.to + offset - : input.to; - return { - to, - reducer: input.reducer, - }; -} -function cloneNode(input, offset = 0) { - const output = makeNode(); - for (const [test, transition] of input.dynamics) - output.dynamics.push([test, cloneTransition(transition, offset)]); - for (const transition of input.shortcuts) - output.shortcuts.push(cloneTransition(transition, offset)); - for (const [segment, transitions] of Object.entries(input.statics)) - output.statics[segment] = transitions.map(transition => cloneTransition(transition, offset)); - return output; -} -function registerDynamic(machine, from, test, to, reducer) { - machine.nodes[from].dynamics.push([ - test, - { to, reducer: reducer }, - ]); -} -function registerShortcut(machine, from, to, reducer) { - machine.nodes[from].shortcuts.push({ to, reducer: reducer }); -} -function registerStatic(machine, from, test, to, reducer) { - const store = !Object.prototype.hasOwnProperty.call(machine.nodes[from].statics, test) - ? machine.nodes[from].statics[test] = [] - : machine.nodes[from].statics[test]; - store.push({ to, reducer: reducer }); -} -function execute(store, callback, state, segment, segmentIndex) { - // TypeScript's control flow can't properly narrow - // generic conditionals for some mysterious reason - if (Array.isArray(callback)) { - const [name, ...args] = callback; - return store[name](state, segment, segmentIndex, ...args); - } - else { - return store[callback](state, segment, segmentIndex); - } -} -const tests = { - always: () => { - return true; - }, - isOptionLike: (state, segment) => { - return !state.ignoreOptions && (segment !== `-` && segment.startsWith(`-`)); - }, - isNotOptionLike: (state, segment) => { - return state.ignoreOptions || segment === `-` || !segment.startsWith(`-`); - }, - isOption: (state, segment, segmentIndex, name) => { - return !state.ignoreOptions && segment === name; - }, - isBatchOption: (state, segment, segmentIndex, names) => { - return !state.ignoreOptions && constants.BATCH_REGEX.test(segment) && [...segment.slice(1)].every(name => names.has(`-${name}`)); - }, - isBoundOption: (state, segment, segmentIndex, names, options) => { - const optionParsing = segment.match(constants.BINDING_REGEX); - return !state.ignoreOptions && !!optionParsing && constants.OPTION_REGEX.test(optionParsing[1]) && names.has(optionParsing[1]) - // Disallow bound options with no arguments (i.e. booleans) - && options.filter(opt => opt.nameSet.includes(optionParsing[1])).every(opt => opt.allowBinding); - }, - isNegatedOption: (state, segment, segmentIndex, name) => { - return !state.ignoreOptions && segment === `--no-${name.slice(2)}`; - }, - isHelp: (state, segment) => { - return !state.ignoreOptions && constants.HELP_REGEX.test(segment); - }, - isUnsupportedOption: (state, segment, segmentIndex, names) => { - return !state.ignoreOptions && segment.startsWith(`-`) && constants.OPTION_REGEX.test(segment) && !names.has(segment); - }, - isInvalidOption: (state, segment) => { - return !state.ignoreOptions && segment.startsWith(`-`) && !constants.OPTION_REGEX.test(segment); - }, -}; -const reducers = { - setCandidateState: (state, segment, segmentIndex, candidateState) => { - return { ...state, ...candidateState }; - }, - setSelectedIndex: (state, segment, segmentIndex, index) => { - return { ...state, selectedIndex: index }; - }, - pushBatch: (state, segment, segmentIndex, names) => { - const options = state.options.slice(); - const tokens = state.tokens.slice(); - for (let t = 1; t < segment.length; ++t) { - const name = names.get(`-${segment[t]}`); - const slice = t === 1 ? [0, 2] : [t, t + 1]; - options.push({ name, value: true }); - tokens.push({ segmentIndex, type: `option`, option: name, slice }); - } - return { ...state, options, tokens }; - }, - pushBound: (state, segment, segmentIndex) => { - const [, name, value] = segment.match(constants.BINDING_REGEX); - const options = state.options.concat({ name, value }); - const tokens = state.tokens.concat([ - { segmentIndex, type: `option`, slice: [0, name.length], option: name }, - { segmentIndex, type: `assign`, slice: [name.length, name.length + 1] }, - { segmentIndex, type: `value`, slice: [name.length + 1, name.length + value.length + 1] }, - ]); - return { ...state, options, tokens }; - }, - pushPath: (state, segment, segmentIndex) => { - const path = state.path.concat(segment); - const tokens = state.tokens.concat({ segmentIndex, type: `path` }); - return { ...state, path, tokens }; - }, - pushPositional: (state, segment, segmentIndex) => { - const positionals = state.positionals.concat({ value: segment, extra: false }); - const tokens = state.tokens.concat({ segmentIndex, type: `positional` }); - return { ...state, positionals, tokens }; - }, - pushExtra: (state, segment, segmentIndex) => { - const positionals = state.positionals.concat({ value: segment, extra: true }); - const tokens = state.tokens.concat({ segmentIndex, type: `positional` }); - return { ...state, positionals, tokens }; - }, - pushExtraNoLimits: (state, segment, segmentIndex) => { - const positionals = state.positionals.concat({ value: segment, extra: NoLimits }); - const tokens = state.tokens.concat({ segmentIndex, type: `positional` }); - return { ...state, positionals, tokens }; - }, - pushTrue: (state, segment, segmentIndex, name) => { - const options = state.options.concat({ name, value: true }); - const tokens = state.tokens.concat({ segmentIndex, type: `option`, option: name }); - return { ...state, options, tokens }; - }, - pushFalse: (state, segment, segmentIndex, name) => { - const options = state.options.concat({ name, value: false }); - const tokens = state.tokens.concat({ segmentIndex, type: `option`, option: name }); - return { ...state, options, tokens }; - }, - pushUndefined: (state, segment, segmentIndex, name) => { - const options = state.options.concat({ name: segment, value: undefined }); - const tokens = state.tokens.concat({ segmentIndex, type: `option`, option: segment }); - return { ...state, options, tokens }; - }, - pushStringValue: (state, segment, segmentIndex) => { - var _a; - const lastOption = state.options[state.options.length - 1]; - const options = state.options.slice(); - const tokens = state.tokens.concat({ segmentIndex, type: `value` }); - lastOption.value = ((_a = lastOption.value) !== null && _a !== void 0 ? _a : []).concat([segment]); - return { ...state, options, tokens }; - }, - setStringValue: (state, segment, segmentIndex) => { - const lastOption = state.options[state.options.length - 1]; - const options = state.options.slice(); - const tokens = state.tokens.concat({ segmentIndex, type: `value` }); - lastOption.value = segment; - return { ...state, options, tokens }; - }, - inhibateOptions: (state) => { - return { ...state, ignoreOptions: true }; - }, - useHelp: (state, segment, segmentIndex, command) => { - const [, /* name */ , index] = segment.match(constants.HELP_REGEX); - if (typeof index !== `undefined`) { - return { ...state, options: [{ name: `-c`, value: String(command) }, { name: `-i`, value: index }] }; - } - else { - return { ...state, options: [{ name: `-c`, value: String(command) }] }; - } - }, - setError: (state, segment, segmentIndex, errorMessage) => { - if (segment === constants.SpecialToken.EndOfInput || segment === constants.SpecialToken.EndOfPartialInput) { - return { ...state, errorMessage: `${errorMessage}.` }; - } - else { - return { ...state, errorMessage: `${errorMessage} ("${segment}").` }; - } - }, - setOptionArityError: (state, segment) => { - const lastOption = state.options[state.options.length - 1]; - return { ...state, errorMessage: `Not enough arguments to option ${lastOption.name}.` }; - }, -}; -// ------------------------------------------------------------------------ -const NoLimits = Symbol(); -class CommandBuilder { - constructor(cliIndex, cliOpts) { - this.allOptionNames = new Map(); - this.arity = { leading: [], trailing: [], extra: [], proxy: false }; - this.options = []; - this.paths = []; - this.cliIndex = cliIndex; - this.cliOpts = cliOpts; - } - addPath(path) { - this.paths.push(path); - } - setArity({ leading = this.arity.leading, trailing = this.arity.trailing, extra = this.arity.extra, proxy = this.arity.proxy }) { - Object.assign(this.arity, { leading, trailing, extra, proxy }); - } - addPositional({ name = `arg`, required = true } = {}) { - if (!required && this.arity.extra === NoLimits) - throw new Error(`Optional parameters cannot be declared when using .rest() or .proxy()`); - if (!required && this.arity.trailing.length > 0) - throw new Error(`Optional parameters cannot be declared after the required trailing positional arguments`); - if (!required && this.arity.extra !== NoLimits) { - this.arity.extra.push(name); - } - else if (this.arity.extra !== NoLimits && this.arity.extra.length === 0) { - this.arity.leading.push(name); - } - else { - this.arity.trailing.push(name); - } - } - addRest({ name = `arg`, required = 0 } = {}) { - if (this.arity.extra === NoLimits) - throw new Error(`Infinite lists cannot be declared multiple times in the same command`); - if (this.arity.trailing.length > 0) - throw new Error(`Infinite lists cannot be declared after the required trailing positional arguments`); - for (let t = 0; t < required; ++t) - this.addPositional({ name }); - this.arity.extra = NoLimits; - } - addProxy({ required = 0 } = {}) { - this.addRest({ required }); - this.arity.proxy = true; - } - addOption({ names: nameSet, description, arity = 0, hidden = false, required = false, allowBinding = true }) { - if (!allowBinding && arity > 1) - throw new Error(`The arity cannot be higher than 1 when the option only supports the --arg=value syntax`); - if (!Number.isInteger(arity)) - throw new Error(`The arity must be an integer, got ${arity}`); - if (arity < 0) - throw new Error(`The arity must be positive, got ${arity}`); - const preferredName = nameSet.reduce((longestName, name) => { - return name.length > longestName.length ? name : longestName; - }, ``); - for (const name of nameSet) - this.allOptionNames.set(name, preferredName); - this.options.push({ preferredName, nameSet, description, arity, hidden, required, allowBinding }); - } - setContext(context) { - this.context = context; - } - usage({ detailed = true, inlineOptions = true } = {}) { - const segments = [this.cliOpts.binaryName]; - const detailedOptionList = []; - if (this.paths.length > 0) - segments.push(...this.paths[0]); - if (detailed) { - for (const { preferredName, nameSet, arity, hidden, description, required } of this.options) { - if (hidden) - continue; - const args = []; - for (let t = 0; t < arity; ++t) - args.push(` #${t}`); - const definition = `${nameSet.join(`,`)}${args.join(``)}`; - if (!inlineOptions && description) { - detailedOptionList.push({ preferredName, nameSet, definition, description, required }); - } - else { - segments.push(required ? `<${definition}>` : `[${definition}]`); - } - } - segments.push(...this.arity.leading.map(name => `<${name}>`)); - if (this.arity.extra === NoLimits) - segments.push(`...`); - else - segments.push(...this.arity.extra.map(name => `[${name}]`)); - segments.push(...this.arity.trailing.map(name => `<${name}>`)); - } - const usage = segments.join(` `); - return { usage, options: detailedOptionList }; - } - compile() { - if (typeof this.context === `undefined`) - throw new Error(`Assertion failed: No context attached`); - const machine = makeStateMachine(); - let firstNode = constants.NodeType.InitialNode; - const candidateUsage = this.usage().usage; - const requiredOptions = this.options - .filter(opt => opt.required) - .map(opt => opt.nameSet); - firstNode = injectNode(machine, makeNode()); - registerStatic(machine, constants.NodeType.InitialNode, constants.SpecialToken.StartOfInput, firstNode, [`setCandidateState`, { candidateUsage, requiredOptions }]); - const positionalArgument = this.arity.proxy - ? `always` - : `isNotOptionLike`; - const paths = this.paths.length > 0 - ? this.paths - : [[]]; - for (const path of paths) { - let lastPathNode = firstNode; - // We allow options to be specified before the path. Note that we - // only do this when there is a path, otherwise there would be - // some redundancy with the options attached later. - if (path.length > 0) { - const optionPathNode = injectNode(machine, makeNode()); - registerShortcut(machine, lastPathNode, optionPathNode); - this.registerOptions(machine, optionPathNode); - lastPathNode = optionPathNode; - } - for (let t = 0; t < path.length; ++t) { - const nextPathNode = injectNode(machine, makeNode()); - registerStatic(machine, lastPathNode, path[t], nextPathNode, `pushPath`); - lastPathNode = nextPathNode; - if (t + 1 < path.length) { - // Allow to pass `-h` (without anything after it) after each part of a path. - // Note that we do not do this for the last part, otherwise there would be - // some redundancy with the `useHelp` attached later. - const helpNode = injectNode(machine, makeNode()); - registerDynamic(machine, lastPathNode, `isHelp`, helpNode, [`useHelp`, this.cliIndex]); - registerStatic(machine, helpNode, constants.SpecialToken.EndOfInput, constants.NodeType.SuccessNode, [`setSelectedIndex`, constants.HELP_COMMAND_INDEX]); - } - } - if (this.arity.leading.length > 0 || !this.arity.proxy) { - const helpNode = injectNode(machine, makeNode()); - registerDynamic(machine, lastPathNode, `isHelp`, helpNode, [`useHelp`, this.cliIndex]); - registerDynamic(machine, helpNode, `always`, helpNode, `pushExtra`); - registerStatic(machine, helpNode, constants.SpecialToken.EndOfInput, constants.NodeType.SuccessNode, [`setSelectedIndex`, constants.HELP_COMMAND_INDEX]); - this.registerOptions(machine, lastPathNode); - } - if (this.arity.leading.length > 0) { - registerStatic(machine, lastPathNode, constants.SpecialToken.EndOfInput, constants.NodeType.ErrorNode, [`setError`, `Not enough positional arguments`]); - registerStatic(machine, lastPathNode, constants.SpecialToken.EndOfPartialInput, constants.NodeType.SuccessNode, [`setSelectedIndex`, this.cliIndex]); - } - let lastLeadingNode = lastPathNode; - for (let t = 0; t < this.arity.leading.length; ++t) { - const nextLeadingNode = injectNode(machine, makeNode()); - if (!this.arity.proxy || t + 1 !== this.arity.leading.length) - this.registerOptions(machine, nextLeadingNode); - if (this.arity.trailing.length > 0 || t + 1 !== this.arity.leading.length) { - registerStatic(machine, nextLeadingNode, constants.SpecialToken.EndOfInput, constants.NodeType.ErrorNode, [`setError`, `Not enough positional arguments`]); - registerStatic(machine, nextLeadingNode, constants.SpecialToken.EndOfPartialInput, constants.NodeType.SuccessNode, [`setSelectedIndex`, this.cliIndex]); - } - registerDynamic(machine, lastLeadingNode, `isNotOptionLike`, nextLeadingNode, `pushPositional`); - lastLeadingNode = nextLeadingNode; - } - let lastExtraNode = lastLeadingNode; - if (this.arity.extra === NoLimits || this.arity.extra.length > 0) { - const extraShortcutNode = injectNode(machine, makeNode()); - registerShortcut(machine, lastLeadingNode, extraShortcutNode); - if (this.arity.extra === NoLimits) { - const extraNode = injectNode(machine, makeNode()); - if (!this.arity.proxy) - this.registerOptions(machine, extraNode); - registerDynamic(machine, lastLeadingNode, positionalArgument, extraNode, `pushExtraNoLimits`); - registerDynamic(machine, extraNode, positionalArgument, extraNode, `pushExtraNoLimits`); - registerShortcut(machine, extraNode, extraShortcutNode); - } - else { - for (let t = 0; t < this.arity.extra.length; ++t) { - const nextExtraNode = injectNode(machine, makeNode()); - if (!this.arity.proxy || t > 0) - this.registerOptions(machine, nextExtraNode); - registerDynamic(machine, lastExtraNode, positionalArgument, nextExtraNode, `pushExtra`); - registerShortcut(machine, nextExtraNode, extraShortcutNode); - lastExtraNode = nextExtraNode; - } - } - lastExtraNode = extraShortcutNode; - } - if (this.arity.trailing.length > 0) { - registerStatic(machine, lastExtraNode, constants.SpecialToken.EndOfInput, constants.NodeType.ErrorNode, [`setError`, `Not enough positional arguments`]); - registerStatic(machine, lastExtraNode, constants.SpecialToken.EndOfPartialInput, constants.NodeType.SuccessNode, [`setSelectedIndex`, this.cliIndex]); - } - let lastTrailingNode = lastExtraNode; - for (let t = 0; t < this.arity.trailing.length; ++t) { - const nextTrailingNode = injectNode(machine, makeNode()); - if (!this.arity.proxy) - this.registerOptions(machine, nextTrailingNode); - if (t + 1 < this.arity.trailing.length) { - registerStatic(machine, nextTrailingNode, constants.SpecialToken.EndOfInput, constants.NodeType.ErrorNode, [`setError`, `Not enough positional arguments`]); - registerStatic(machine, nextTrailingNode, constants.SpecialToken.EndOfPartialInput, constants.NodeType.SuccessNode, [`setSelectedIndex`, this.cliIndex]); - } - registerDynamic(machine, lastTrailingNode, `isNotOptionLike`, nextTrailingNode, `pushPositional`); - lastTrailingNode = nextTrailingNode; - } - registerDynamic(machine, lastTrailingNode, positionalArgument, constants.NodeType.ErrorNode, [`setError`, `Extraneous positional argument`]); - registerStatic(machine, lastTrailingNode, constants.SpecialToken.EndOfInput, constants.NodeType.SuccessNode, [`setSelectedIndex`, this.cliIndex]); - registerStatic(machine, lastTrailingNode, constants.SpecialToken.EndOfPartialInput, constants.NodeType.SuccessNode, [`setSelectedIndex`, this.cliIndex]); - } - return { - machine, - context: this.context, - }; - } - registerOptions(machine, node) { - registerDynamic(machine, node, [`isOption`, `--`], node, `inhibateOptions`); - registerDynamic(machine, node, [`isBatchOption`, this.allOptionNames], node, [`pushBatch`, this.allOptionNames]); - registerDynamic(machine, node, [`isBoundOption`, this.allOptionNames, this.options], node, `pushBound`); - registerDynamic(machine, node, [`isUnsupportedOption`, this.allOptionNames], constants.NodeType.ErrorNode, [`setError`, `Unsupported option name`]); - registerDynamic(machine, node, [`isInvalidOption`], constants.NodeType.ErrorNode, [`setError`, `Invalid option name`]); - for (const option of this.options) { - if (option.arity === 0) { - for (const name of option.nameSet) { - registerDynamic(machine, node, [`isOption`, name], node, [`pushTrue`, option.preferredName]); - if (name.startsWith(`--`) && !name.startsWith(`--no-`)) { - registerDynamic(machine, node, [`isNegatedOption`, name], node, [`pushFalse`, option.preferredName]); - } - } - } - else { - // We inject a new node at the end of the state machine - let lastNode = injectNode(machine, makeNode()); - // We register transitions from the starting node to this new node - for (const name of option.nameSet) - registerDynamic(machine, node, [`isOption`, name], lastNode, [`pushUndefined`, option.preferredName]); - // For each argument, we inject a new node at the end and we - // register a transition from the current node to this new node - for (let t = 0; t < option.arity; ++t) { - const nextNode = injectNode(machine, makeNode()); - // We can provide better errors when another option or EndOfInput is encountered - registerStatic(machine, lastNode, constants.SpecialToken.EndOfInput, constants.NodeType.ErrorNode, `setOptionArityError`); - registerStatic(machine, lastNode, constants.SpecialToken.EndOfPartialInput, constants.NodeType.ErrorNode, `setOptionArityError`); - registerDynamic(machine, lastNode, `isOptionLike`, constants.NodeType.ErrorNode, `setOptionArityError`); - // If the option has a single argument, no need to store it in an array - const action = option.arity === 1 - ? `setStringValue` - : `pushStringValue`; - registerDynamic(machine, lastNode, `isNotOptionLike`, nextNode, action); - lastNode = nextNode; - } - // In the end, we register a shortcut from - // the last node back to the starting node - registerShortcut(machine, lastNode, node); - } - } - } -} -class CliBuilder { - static build(cbs, opts = {}) { - return new CliBuilder(opts).commands(cbs).compile(); - } - constructor({ binaryName = `...` } = {}) { - this.builders = []; - this.opts = { binaryName }; - } - getBuilderByIndex(n) { - if (!(n >= 0 && n < this.builders.length)) - throw new Error(`Assertion failed: Out-of-bound command index (${n})`); - return this.builders[n]; - } - commands(cbs) { - for (const cb of cbs) - cb(this.command()); - return this; - } - command() { - const builder = new CommandBuilder(this.builders.length, this.opts); - this.builders.push(builder); - return builder; - } - compile() { - const machines = []; - const contexts = []; - for (const builder of this.builders) { - const { machine, context } = builder.compile(); - machines.push(machine); - contexts.push(context); - } - const machine = makeAnyOfMachine(machines); - simplifyMachine(machine); - return { - machine, - contexts, - process: (input, { partial } = {}) => { - const endToken = partial - ? constants.SpecialToken.EndOfPartialInput - : constants.SpecialToken.EndOfInput; - return runMachine(machine, input, { endToken }); - }, - }; - } -} - -exports.CliBuilder = CliBuilder; -exports.CommandBuilder = CommandBuilder; -exports.NoLimits = NoLimits; -exports.aggregateHelpStates = aggregateHelpStates; -exports.cloneNode = cloneNode; -exports.cloneTransition = cloneTransition; -exports.debug = debug; -exports.debugMachine = debugMachine; -exports.execute = execute; -exports.injectNode = injectNode; -exports.isTerminalNode = isTerminalNode; -exports.makeAnyOfMachine = makeAnyOfMachine; -exports.makeNode = makeNode; -exports.makeStateMachine = makeStateMachine; -exports.reducers = reducers; -exports.registerDynamic = registerDynamic; -exports.registerShortcut = registerShortcut; -exports.registerStatic = registerStatic; -exports.runMachineInternal = runMachineInternal; -exports.selectBestState = selectBestState; -exports.simplifyMachine = simplifyMachine; -exports.tests = tests; -exports.trimSmallerBranches = trimSmallerBranches; diff --git a/sdks/nodejs/node_modules/clipanion/lib/core.mjs b/sdks/nodejs/node_modules/clipanion/lib/core.mjs deleted file mode 100644 index afae8ac..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/core.mjs +++ /dev/null @@ -1,778 +0,0 @@ -import { IS_DEBUG, NodeType, SpecialToken, HELP_COMMAND_INDEX, BATCH_REGEX, BINDING_REGEX, OPTION_REGEX, HELP_REGEX } from './constants.mjs'; -import { UnknownSyntaxError, AmbiguousSyntaxError } from './errors.mjs'; - -// ------------------------------------------------------------------------ -function debug(str) { - if (IS_DEBUG) { - console.log(str); - } -} -const basicHelpState = { - candidateUsage: null, - requiredOptions: [], - errorMessage: null, - ignoreOptions: false, - path: [], - positionals: [], - options: [], - remainder: null, - selectedIndex: HELP_COMMAND_INDEX, - tokens: [], -}; -function makeStateMachine() { - const stateMachine = { - nodes: [], - }; - for (let t = 0; t < NodeType.CustomNode; ++t) - stateMachine.nodes.push(makeNode()); - return stateMachine; -} -function makeAnyOfMachine(inputs) { - const output = makeStateMachine(); - const heads = []; - let offset = output.nodes.length; - for (const input of inputs) { - heads.push(offset); - for (let t = 0; t < input.nodes.length; ++t) - if (!isTerminalNode(t)) - output.nodes.push(cloneNode(input.nodes[t], offset)); - offset += input.nodes.length - NodeType.CustomNode + 1; - } - for (const head of heads) - registerShortcut(output, NodeType.InitialNode, head); - return output; -} -function injectNode(machine, node) { - machine.nodes.push(node); - return machine.nodes.length - 1; -} -function simplifyMachine(input) { - const visited = new Set(); - const process = (node) => { - if (visited.has(node)) - return; - visited.add(node); - const nodeDef = input.nodes[node]; - for (const transitions of Object.values(nodeDef.statics)) - for (const { to } of transitions) - process(to); - for (const [, { to }] of nodeDef.dynamics) - process(to); - for (const { to } of nodeDef.shortcuts) - process(to); - const shortcuts = new Set(nodeDef.shortcuts.map(({ to }) => to)); - while (nodeDef.shortcuts.length > 0) { - const { to } = nodeDef.shortcuts.shift(); - const toDef = input.nodes[to]; - for (const [segment, transitions] of Object.entries(toDef.statics)) { - const store = !Object.prototype.hasOwnProperty.call(nodeDef.statics, segment) - ? nodeDef.statics[segment] = [] - : nodeDef.statics[segment]; - for (const transition of transitions) { - if (!store.some(({ to }) => transition.to === to)) { - store.push(transition); - } - } - } - for (const [test, transition] of toDef.dynamics) - if (!nodeDef.dynamics.some(([otherTest, { to }]) => test === otherTest && transition.to === to)) - nodeDef.dynamics.push([test, transition]); - for (const transition of toDef.shortcuts) { - if (!shortcuts.has(transition.to)) { - nodeDef.shortcuts.push(transition); - shortcuts.add(transition.to); - } - } - } - }; - process(NodeType.InitialNode); -} -function debugMachine(machine, { prefix = `` } = {}) { - // Don't iterate unless it's needed - if (IS_DEBUG) { - debug(`${prefix}Nodes are:`); - for (let t = 0; t < machine.nodes.length; ++t) { - debug(`${prefix} ${t}: ${JSON.stringify(machine.nodes[t])}`); - } - } -} -function runMachineInternal(machine, input, partial = false) { - debug(`Running a vm on ${JSON.stringify(input)}`); - let branches = [{ - node: NodeType.InitialNode, - state: { - candidateUsage: null, - requiredOptions: [], - errorMessage: null, - ignoreOptions: false, - options: [], - path: [], - positionals: [], - remainder: null, - selectedIndex: null, - tokens: [], - }, - }]; - debugMachine(machine, { prefix: ` ` }); - const tokens = [SpecialToken.StartOfInput, ...input]; - for (let t = 0; t < tokens.length; ++t) { - const segment = tokens[t]; - const isEOI = segment === SpecialToken.EndOfInput || segment === SpecialToken.EndOfPartialInput; - // The -1 is because we added a START_OF_INPUT token - const segmentIndex = t - 1; - debug(` Processing ${JSON.stringify(segment)}`); - const nextBranches = []; - for (const { node, state } of branches) { - debug(` Current node is ${node}`); - const nodeDef = machine.nodes[node]; - if (node === NodeType.ErrorNode) { - nextBranches.push({ node, state }); - continue; - } - console.assert(nodeDef.shortcuts.length === 0, `Shortcuts should have been eliminated by now`); - const hasExactMatch = Object.prototype.hasOwnProperty.call(nodeDef.statics, segment); - if (!partial || t < tokens.length - 1 || hasExactMatch) { - if (hasExactMatch) { - const transitions = nodeDef.statics[segment]; - for (const { to, reducer } of transitions) { - nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment, segmentIndex) : state }); - debug(` Static transition to ${to} found`); - } - } - else { - debug(` No static transition found`); - } - } - else { - let hasMatches = false; - for (const candidate of Object.keys(nodeDef.statics)) { - if (!candidate.startsWith(segment)) - continue; - if (segment === candidate) { - for (const { to, reducer } of nodeDef.statics[candidate]) { - nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment, segmentIndex) : state }); - debug(` Static transition to ${to} found`); - } - } - else { - for (const { to } of nodeDef.statics[candidate]) { - nextBranches.push({ node: to, state: { ...state, remainder: candidate.slice(segment.length) } }); - debug(` Static transition to ${to} found (partial match)`); - } - } - hasMatches = true; - } - if (!hasMatches) { - debug(` No partial static transition found`); - } - } - if (!isEOI) { - for (const [test, { to, reducer }] of nodeDef.dynamics) { - if (execute(tests, test, state, segment, segmentIndex)) { - nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment, segmentIndex) : state }); - debug(` Dynamic transition to ${to} found (via ${test})`); - } - } - } - } - if (nextBranches.length === 0 && isEOI && input.length === 1) { - return [{ - node: NodeType.InitialNode, - state: basicHelpState, - }]; - } - if (nextBranches.length === 0) { - throw new UnknownSyntaxError(input, branches.filter(({ node }) => { - return node !== NodeType.ErrorNode; - }).map(({ state }) => { - return { usage: state.candidateUsage, reason: null }; - })); - } - if (nextBranches.every(({ node }) => node === NodeType.ErrorNode)) { - throw new UnknownSyntaxError(input, nextBranches.map(({ state }) => { - return { usage: state.candidateUsage, reason: state.errorMessage }; - })); - } - branches = trimSmallerBranches(nextBranches); - } - if (branches.length > 0) { - debug(` Results:`); - for (const branch of branches) { - debug(` - ${branch.node} -> ${JSON.stringify(branch.state)}`); - } - } - else { - debug(` No results`); - } - return branches; -} -function runMachine(machine, input, { endToken = SpecialToken.EndOfInput } = {}) { - const branches = runMachineInternal(machine, [...input, endToken]); - return selectBestState(input, branches.map(({ state }) => { - return state; - })); -} -function trimSmallerBranches(branches) { - let maxPathSize = 0; - for (const { state } of branches) - if (state.path.length > maxPathSize) - maxPathSize = state.path.length; - return branches.filter(({ state }) => { - return state.path.length === maxPathSize; - }); -} -function selectBestState(input, states) { - const terminalStates = states.filter(state => { - return state.selectedIndex !== null; - }); - if (terminalStates.length === 0) - throw new Error(); - const requiredOptionsSetStates = terminalStates.filter(state => state.selectedIndex === HELP_COMMAND_INDEX || state.requiredOptions.every(names => names.some(name => state.options.find(opt => opt.name === name)))); - if (requiredOptionsSetStates.length === 0) { - throw new UnknownSyntaxError(input, terminalStates.map(state => ({ - usage: state.candidateUsage, - reason: null, - }))); - } - let maxPathSize = 0; - for (const state of requiredOptionsSetStates) - if (state.path.length > maxPathSize) - maxPathSize = state.path.length; - const bestPathBranches = requiredOptionsSetStates.filter(state => { - return state.path.length === maxPathSize; - }); - const getPositionalCount = (state) => state.positionals.filter(({ extra }) => { - return !extra; - }).length + state.options.length; - const statesWithPositionalCount = bestPathBranches.map(state => { - return { state, positionalCount: getPositionalCount(state) }; - }); - let maxPositionalCount = 0; - for (const { positionalCount } of statesWithPositionalCount) - if (positionalCount > maxPositionalCount) - maxPositionalCount = positionalCount; - const bestPositionalStates = statesWithPositionalCount.filter(({ positionalCount }) => { - return positionalCount === maxPositionalCount; - }).map(({ state }) => { - return state; - }); - const fixedStates = aggregateHelpStates(bestPositionalStates); - if (fixedStates.length > 1) - throw new AmbiguousSyntaxError(input, fixedStates.map(state => state.candidateUsage)); - return fixedStates[0]; -} -function aggregateHelpStates(states) { - const notHelps = []; - const helps = []; - for (const state of states) { - if (state.selectedIndex === HELP_COMMAND_INDEX) { - helps.push(state); - } - else { - notHelps.push(state); - } - } - if (helps.length > 0) { - notHelps.push({ - ...basicHelpState, - path: findCommonPrefix(...helps.map(state => state.path)), - options: helps.reduce((options, state) => options.concat(state.options), []), - }); - } - return notHelps; -} -function findCommonPrefix(firstPath, secondPath, ...rest) { - if (secondPath === undefined) - return Array.from(firstPath); - return findCommonPrefix(firstPath.filter((segment, i) => segment === secondPath[i]), ...rest); -} -function makeNode() { - return { - dynamics: [], - shortcuts: [], - statics: {}, - }; -} -function isTerminalNode(node) { - return node === NodeType.SuccessNode || node === NodeType.ErrorNode; -} -function cloneTransition(input, offset = 0) { - const to = !isTerminalNode(input.to) - ? input.to >= NodeType.CustomNode - ? input.to + offset - NodeType.CustomNode + 1 - : input.to + offset - : input.to; - return { - to, - reducer: input.reducer, - }; -} -function cloneNode(input, offset = 0) { - const output = makeNode(); - for (const [test, transition] of input.dynamics) - output.dynamics.push([test, cloneTransition(transition, offset)]); - for (const transition of input.shortcuts) - output.shortcuts.push(cloneTransition(transition, offset)); - for (const [segment, transitions] of Object.entries(input.statics)) - output.statics[segment] = transitions.map(transition => cloneTransition(transition, offset)); - return output; -} -function registerDynamic(machine, from, test, to, reducer) { - machine.nodes[from].dynamics.push([ - test, - { to, reducer: reducer }, - ]); -} -function registerShortcut(machine, from, to, reducer) { - machine.nodes[from].shortcuts.push({ to, reducer: reducer }); -} -function registerStatic(machine, from, test, to, reducer) { - const store = !Object.prototype.hasOwnProperty.call(machine.nodes[from].statics, test) - ? machine.nodes[from].statics[test] = [] - : machine.nodes[from].statics[test]; - store.push({ to, reducer: reducer }); -} -function execute(store, callback, state, segment, segmentIndex) { - // TypeScript's control flow can't properly narrow - // generic conditionals for some mysterious reason - if (Array.isArray(callback)) { - const [name, ...args] = callback; - return store[name](state, segment, segmentIndex, ...args); - } - else { - return store[callback](state, segment, segmentIndex); - } -} -const tests = { - always: () => { - return true; - }, - isOptionLike: (state, segment) => { - return !state.ignoreOptions && (segment !== `-` && segment.startsWith(`-`)); - }, - isNotOptionLike: (state, segment) => { - return state.ignoreOptions || segment === `-` || !segment.startsWith(`-`); - }, - isOption: (state, segment, segmentIndex, name) => { - return !state.ignoreOptions && segment === name; - }, - isBatchOption: (state, segment, segmentIndex, names) => { - return !state.ignoreOptions && BATCH_REGEX.test(segment) && [...segment.slice(1)].every(name => names.has(`-${name}`)); - }, - isBoundOption: (state, segment, segmentIndex, names, options) => { - const optionParsing = segment.match(BINDING_REGEX); - return !state.ignoreOptions && !!optionParsing && OPTION_REGEX.test(optionParsing[1]) && names.has(optionParsing[1]) - // Disallow bound options with no arguments (i.e. booleans) - && options.filter(opt => opt.nameSet.includes(optionParsing[1])).every(opt => opt.allowBinding); - }, - isNegatedOption: (state, segment, segmentIndex, name) => { - return !state.ignoreOptions && segment === `--no-${name.slice(2)}`; - }, - isHelp: (state, segment) => { - return !state.ignoreOptions && HELP_REGEX.test(segment); - }, - isUnsupportedOption: (state, segment, segmentIndex, names) => { - return !state.ignoreOptions && segment.startsWith(`-`) && OPTION_REGEX.test(segment) && !names.has(segment); - }, - isInvalidOption: (state, segment) => { - return !state.ignoreOptions && segment.startsWith(`-`) && !OPTION_REGEX.test(segment); - }, -}; -const reducers = { - setCandidateState: (state, segment, segmentIndex, candidateState) => { - return { ...state, ...candidateState }; - }, - setSelectedIndex: (state, segment, segmentIndex, index) => { - return { ...state, selectedIndex: index }; - }, - pushBatch: (state, segment, segmentIndex, names) => { - const options = state.options.slice(); - const tokens = state.tokens.slice(); - for (let t = 1; t < segment.length; ++t) { - const name = names.get(`-${segment[t]}`); - const slice = t === 1 ? [0, 2] : [t, t + 1]; - options.push({ name, value: true }); - tokens.push({ segmentIndex, type: `option`, option: name, slice }); - } - return { ...state, options, tokens }; - }, - pushBound: (state, segment, segmentIndex) => { - const [, name, value] = segment.match(BINDING_REGEX); - const options = state.options.concat({ name, value }); - const tokens = state.tokens.concat([ - { segmentIndex, type: `option`, slice: [0, name.length], option: name }, - { segmentIndex, type: `assign`, slice: [name.length, name.length + 1] }, - { segmentIndex, type: `value`, slice: [name.length + 1, name.length + value.length + 1] }, - ]); - return { ...state, options, tokens }; - }, - pushPath: (state, segment, segmentIndex) => { - const path = state.path.concat(segment); - const tokens = state.tokens.concat({ segmentIndex, type: `path` }); - return { ...state, path, tokens }; - }, - pushPositional: (state, segment, segmentIndex) => { - const positionals = state.positionals.concat({ value: segment, extra: false }); - const tokens = state.tokens.concat({ segmentIndex, type: `positional` }); - return { ...state, positionals, tokens }; - }, - pushExtra: (state, segment, segmentIndex) => { - const positionals = state.positionals.concat({ value: segment, extra: true }); - const tokens = state.tokens.concat({ segmentIndex, type: `positional` }); - return { ...state, positionals, tokens }; - }, - pushExtraNoLimits: (state, segment, segmentIndex) => { - const positionals = state.positionals.concat({ value: segment, extra: NoLimits }); - const tokens = state.tokens.concat({ segmentIndex, type: `positional` }); - return { ...state, positionals, tokens }; - }, - pushTrue: (state, segment, segmentIndex, name) => { - const options = state.options.concat({ name, value: true }); - const tokens = state.tokens.concat({ segmentIndex, type: `option`, option: name }); - return { ...state, options, tokens }; - }, - pushFalse: (state, segment, segmentIndex, name) => { - const options = state.options.concat({ name, value: false }); - const tokens = state.tokens.concat({ segmentIndex, type: `option`, option: name }); - return { ...state, options, tokens }; - }, - pushUndefined: (state, segment, segmentIndex, name) => { - const options = state.options.concat({ name: segment, value: undefined }); - const tokens = state.tokens.concat({ segmentIndex, type: `option`, option: segment }); - return { ...state, options, tokens }; - }, - pushStringValue: (state, segment, segmentIndex) => { - var _a; - const lastOption = state.options[state.options.length - 1]; - const options = state.options.slice(); - const tokens = state.tokens.concat({ segmentIndex, type: `value` }); - lastOption.value = ((_a = lastOption.value) !== null && _a !== void 0 ? _a : []).concat([segment]); - return { ...state, options, tokens }; - }, - setStringValue: (state, segment, segmentIndex) => { - const lastOption = state.options[state.options.length - 1]; - const options = state.options.slice(); - const tokens = state.tokens.concat({ segmentIndex, type: `value` }); - lastOption.value = segment; - return { ...state, options, tokens }; - }, - inhibateOptions: (state) => { - return { ...state, ignoreOptions: true }; - }, - useHelp: (state, segment, segmentIndex, command) => { - const [, /* name */ , index] = segment.match(HELP_REGEX); - if (typeof index !== `undefined`) { - return { ...state, options: [{ name: `-c`, value: String(command) }, { name: `-i`, value: index }] }; - } - else { - return { ...state, options: [{ name: `-c`, value: String(command) }] }; - } - }, - setError: (state, segment, segmentIndex, errorMessage) => { - if (segment === SpecialToken.EndOfInput || segment === SpecialToken.EndOfPartialInput) { - return { ...state, errorMessage: `${errorMessage}.` }; - } - else { - return { ...state, errorMessage: `${errorMessage} ("${segment}").` }; - } - }, - setOptionArityError: (state, segment) => { - const lastOption = state.options[state.options.length - 1]; - return { ...state, errorMessage: `Not enough arguments to option ${lastOption.name}.` }; - }, -}; -// ------------------------------------------------------------------------ -const NoLimits = Symbol(); -class CommandBuilder { - constructor(cliIndex, cliOpts) { - this.allOptionNames = new Map(); - this.arity = { leading: [], trailing: [], extra: [], proxy: false }; - this.options = []; - this.paths = []; - this.cliIndex = cliIndex; - this.cliOpts = cliOpts; - } - addPath(path) { - this.paths.push(path); - } - setArity({ leading = this.arity.leading, trailing = this.arity.trailing, extra = this.arity.extra, proxy = this.arity.proxy }) { - Object.assign(this.arity, { leading, trailing, extra, proxy }); - } - addPositional({ name = `arg`, required = true } = {}) { - if (!required && this.arity.extra === NoLimits) - throw new Error(`Optional parameters cannot be declared when using .rest() or .proxy()`); - if (!required && this.arity.trailing.length > 0) - throw new Error(`Optional parameters cannot be declared after the required trailing positional arguments`); - if (!required && this.arity.extra !== NoLimits) { - this.arity.extra.push(name); - } - else if (this.arity.extra !== NoLimits && this.arity.extra.length === 0) { - this.arity.leading.push(name); - } - else { - this.arity.trailing.push(name); - } - } - addRest({ name = `arg`, required = 0 } = {}) { - if (this.arity.extra === NoLimits) - throw new Error(`Infinite lists cannot be declared multiple times in the same command`); - if (this.arity.trailing.length > 0) - throw new Error(`Infinite lists cannot be declared after the required trailing positional arguments`); - for (let t = 0; t < required; ++t) - this.addPositional({ name }); - this.arity.extra = NoLimits; - } - addProxy({ required = 0 } = {}) { - this.addRest({ required }); - this.arity.proxy = true; - } - addOption({ names: nameSet, description, arity = 0, hidden = false, required = false, allowBinding = true }) { - if (!allowBinding && arity > 1) - throw new Error(`The arity cannot be higher than 1 when the option only supports the --arg=value syntax`); - if (!Number.isInteger(arity)) - throw new Error(`The arity must be an integer, got ${arity}`); - if (arity < 0) - throw new Error(`The arity must be positive, got ${arity}`); - const preferredName = nameSet.reduce((longestName, name) => { - return name.length > longestName.length ? name : longestName; - }, ``); - for (const name of nameSet) - this.allOptionNames.set(name, preferredName); - this.options.push({ preferredName, nameSet, description, arity, hidden, required, allowBinding }); - } - setContext(context) { - this.context = context; - } - usage({ detailed = true, inlineOptions = true } = {}) { - const segments = [this.cliOpts.binaryName]; - const detailedOptionList = []; - if (this.paths.length > 0) - segments.push(...this.paths[0]); - if (detailed) { - for (const { preferredName, nameSet, arity, hidden, description, required } of this.options) { - if (hidden) - continue; - const args = []; - for (let t = 0; t < arity; ++t) - args.push(` #${t}`); - const definition = `${nameSet.join(`,`)}${args.join(``)}`; - if (!inlineOptions && description) { - detailedOptionList.push({ preferredName, nameSet, definition, description, required }); - } - else { - segments.push(required ? `<${definition}>` : `[${definition}]`); - } - } - segments.push(...this.arity.leading.map(name => `<${name}>`)); - if (this.arity.extra === NoLimits) - segments.push(`...`); - else - segments.push(...this.arity.extra.map(name => `[${name}]`)); - segments.push(...this.arity.trailing.map(name => `<${name}>`)); - } - const usage = segments.join(` `); - return { usage, options: detailedOptionList }; - } - compile() { - if (typeof this.context === `undefined`) - throw new Error(`Assertion failed: No context attached`); - const machine = makeStateMachine(); - let firstNode = NodeType.InitialNode; - const candidateUsage = this.usage().usage; - const requiredOptions = this.options - .filter(opt => opt.required) - .map(opt => opt.nameSet); - firstNode = injectNode(machine, makeNode()); - registerStatic(machine, NodeType.InitialNode, SpecialToken.StartOfInput, firstNode, [`setCandidateState`, { candidateUsage, requiredOptions }]); - const positionalArgument = this.arity.proxy - ? `always` - : `isNotOptionLike`; - const paths = this.paths.length > 0 - ? this.paths - : [[]]; - for (const path of paths) { - let lastPathNode = firstNode; - // We allow options to be specified before the path. Note that we - // only do this when there is a path, otherwise there would be - // some redundancy with the options attached later. - if (path.length > 0) { - const optionPathNode = injectNode(machine, makeNode()); - registerShortcut(machine, lastPathNode, optionPathNode); - this.registerOptions(machine, optionPathNode); - lastPathNode = optionPathNode; - } - for (let t = 0; t < path.length; ++t) { - const nextPathNode = injectNode(machine, makeNode()); - registerStatic(machine, lastPathNode, path[t], nextPathNode, `pushPath`); - lastPathNode = nextPathNode; - if (t + 1 < path.length) { - // Allow to pass `-h` (without anything after it) after each part of a path. - // Note that we do not do this for the last part, otherwise there would be - // some redundancy with the `useHelp` attached later. - const helpNode = injectNode(machine, makeNode()); - registerDynamic(machine, lastPathNode, `isHelp`, helpNode, [`useHelp`, this.cliIndex]); - registerStatic(machine, helpNode, SpecialToken.EndOfInput, NodeType.SuccessNode, [`setSelectedIndex`, HELP_COMMAND_INDEX]); - } - } - if (this.arity.leading.length > 0 || !this.arity.proxy) { - const helpNode = injectNode(machine, makeNode()); - registerDynamic(machine, lastPathNode, `isHelp`, helpNode, [`useHelp`, this.cliIndex]); - registerDynamic(machine, helpNode, `always`, helpNode, `pushExtra`); - registerStatic(machine, helpNode, SpecialToken.EndOfInput, NodeType.SuccessNode, [`setSelectedIndex`, HELP_COMMAND_INDEX]); - this.registerOptions(machine, lastPathNode); - } - if (this.arity.leading.length > 0) { - registerStatic(machine, lastPathNode, SpecialToken.EndOfInput, NodeType.ErrorNode, [`setError`, `Not enough positional arguments`]); - registerStatic(machine, lastPathNode, SpecialToken.EndOfPartialInput, NodeType.SuccessNode, [`setSelectedIndex`, this.cliIndex]); - } - let lastLeadingNode = lastPathNode; - for (let t = 0; t < this.arity.leading.length; ++t) { - const nextLeadingNode = injectNode(machine, makeNode()); - if (!this.arity.proxy || t + 1 !== this.arity.leading.length) - this.registerOptions(machine, nextLeadingNode); - if (this.arity.trailing.length > 0 || t + 1 !== this.arity.leading.length) { - registerStatic(machine, nextLeadingNode, SpecialToken.EndOfInput, NodeType.ErrorNode, [`setError`, `Not enough positional arguments`]); - registerStatic(machine, nextLeadingNode, SpecialToken.EndOfPartialInput, NodeType.SuccessNode, [`setSelectedIndex`, this.cliIndex]); - } - registerDynamic(machine, lastLeadingNode, `isNotOptionLike`, nextLeadingNode, `pushPositional`); - lastLeadingNode = nextLeadingNode; - } - let lastExtraNode = lastLeadingNode; - if (this.arity.extra === NoLimits || this.arity.extra.length > 0) { - const extraShortcutNode = injectNode(machine, makeNode()); - registerShortcut(machine, lastLeadingNode, extraShortcutNode); - if (this.arity.extra === NoLimits) { - const extraNode = injectNode(machine, makeNode()); - if (!this.arity.proxy) - this.registerOptions(machine, extraNode); - registerDynamic(machine, lastLeadingNode, positionalArgument, extraNode, `pushExtraNoLimits`); - registerDynamic(machine, extraNode, positionalArgument, extraNode, `pushExtraNoLimits`); - registerShortcut(machine, extraNode, extraShortcutNode); - } - else { - for (let t = 0; t < this.arity.extra.length; ++t) { - const nextExtraNode = injectNode(machine, makeNode()); - if (!this.arity.proxy || t > 0) - this.registerOptions(machine, nextExtraNode); - registerDynamic(machine, lastExtraNode, positionalArgument, nextExtraNode, `pushExtra`); - registerShortcut(machine, nextExtraNode, extraShortcutNode); - lastExtraNode = nextExtraNode; - } - } - lastExtraNode = extraShortcutNode; - } - if (this.arity.trailing.length > 0) { - registerStatic(machine, lastExtraNode, SpecialToken.EndOfInput, NodeType.ErrorNode, [`setError`, `Not enough positional arguments`]); - registerStatic(machine, lastExtraNode, SpecialToken.EndOfPartialInput, NodeType.SuccessNode, [`setSelectedIndex`, this.cliIndex]); - } - let lastTrailingNode = lastExtraNode; - for (let t = 0; t < this.arity.trailing.length; ++t) { - const nextTrailingNode = injectNode(machine, makeNode()); - if (!this.arity.proxy) - this.registerOptions(machine, nextTrailingNode); - if (t + 1 < this.arity.trailing.length) { - registerStatic(machine, nextTrailingNode, SpecialToken.EndOfInput, NodeType.ErrorNode, [`setError`, `Not enough positional arguments`]); - registerStatic(machine, nextTrailingNode, SpecialToken.EndOfPartialInput, NodeType.SuccessNode, [`setSelectedIndex`, this.cliIndex]); - } - registerDynamic(machine, lastTrailingNode, `isNotOptionLike`, nextTrailingNode, `pushPositional`); - lastTrailingNode = nextTrailingNode; - } - registerDynamic(machine, lastTrailingNode, positionalArgument, NodeType.ErrorNode, [`setError`, `Extraneous positional argument`]); - registerStatic(machine, lastTrailingNode, SpecialToken.EndOfInput, NodeType.SuccessNode, [`setSelectedIndex`, this.cliIndex]); - registerStatic(machine, lastTrailingNode, SpecialToken.EndOfPartialInput, NodeType.SuccessNode, [`setSelectedIndex`, this.cliIndex]); - } - return { - machine, - context: this.context, - }; - } - registerOptions(machine, node) { - registerDynamic(machine, node, [`isOption`, `--`], node, `inhibateOptions`); - registerDynamic(machine, node, [`isBatchOption`, this.allOptionNames], node, [`pushBatch`, this.allOptionNames]); - registerDynamic(machine, node, [`isBoundOption`, this.allOptionNames, this.options], node, `pushBound`); - registerDynamic(machine, node, [`isUnsupportedOption`, this.allOptionNames], NodeType.ErrorNode, [`setError`, `Unsupported option name`]); - registerDynamic(machine, node, [`isInvalidOption`], NodeType.ErrorNode, [`setError`, `Invalid option name`]); - for (const option of this.options) { - if (option.arity === 0) { - for (const name of option.nameSet) { - registerDynamic(machine, node, [`isOption`, name], node, [`pushTrue`, option.preferredName]); - if (name.startsWith(`--`) && !name.startsWith(`--no-`)) { - registerDynamic(machine, node, [`isNegatedOption`, name], node, [`pushFalse`, option.preferredName]); - } - } - } - else { - // We inject a new node at the end of the state machine - let lastNode = injectNode(machine, makeNode()); - // We register transitions from the starting node to this new node - for (const name of option.nameSet) - registerDynamic(machine, node, [`isOption`, name], lastNode, [`pushUndefined`, option.preferredName]); - // For each argument, we inject a new node at the end and we - // register a transition from the current node to this new node - for (let t = 0; t < option.arity; ++t) { - const nextNode = injectNode(machine, makeNode()); - // We can provide better errors when another option or EndOfInput is encountered - registerStatic(machine, lastNode, SpecialToken.EndOfInput, NodeType.ErrorNode, `setOptionArityError`); - registerStatic(machine, lastNode, SpecialToken.EndOfPartialInput, NodeType.ErrorNode, `setOptionArityError`); - registerDynamic(machine, lastNode, `isOptionLike`, NodeType.ErrorNode, `setOptionArityError`); - // If the option has a single argument, no need to store it in an array - const action = option.arity === 1 - ? `setStringValue` - : `pushStringValue`; - registerDynamic(machine, lastNode, `isNotOptionLike`, nextNode, action); - lastNode = nextNode; - } - // In the end, we register a shortcut from - // the last node back to the starting node - registerShortcut(machine, lastNode, node); - } - } - } -} -class CliBuilder { - static build(cbs, opts = {}) { - return new CliBuilder(opts).commands(cbs).compile(); - } - constructor({ binaryName = `...` } = {}) { - this.builders = []; - this.opts = { binaryName }; - } - getBuilderByIndex(n) { - if (!(n >= 0 && n < this.builders.length)) - throw new Error(`Assertion failed: Out-of-bound command index (${n})`); - return this.builders[n]; - } - commands(cbs) { - for (const cb of cbs) - cb(this.command()); - return this; - } - command() { - const builder = new CommandBuilder(this.builders.length, this.opts); - this.builders.push(builder); - return builder; - } - compile() { - const machines = []; - const contexts = []; - for (const builder of this.builders) { - const { machine, context } = builder.compile(); - machines.push(machine); - contexts.push(context); - } - const machine = makeAnyOfMachine(machines); - simplifyMachine(machine); - return { - machine, - contexts, - process: (input, { partial } = {}) => { - const endToken = partial - ? SpecialToken.EndOfPartialInput - : SpecialToken.EndOfInput; - return runMachine(machine, input, { endToken }); - }, - }; - } -} - -export { CliBuilder, CommandBuilder, NoLimits, aggregateHelpStates, cloneNode, cloneTransition, debug, debugMachine, execute, injectNode, isTerminalNode, makeAnyOfMachine, makeNode, makeStateMachine, reducers, registerDynamic, registerShortcut, registerStatic, runMachineInternal, selectBestState, simplifyMachine, tests, trimSmallerBranches }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/errors.d.ts b/sdks/nodejs/node_modules/clipanion/lib/errors.d.ts deleted file mode 100644 index 43b62e5..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/errors.d.ts +++ /dev/null @@ -1,52 +0,0 @@ -export type ErrorMeta = { - type: `none`; -} | { - type: `usage`; -}; -/** - * An error with metadata telling clipanion how to print it - * - * Errors with this metadata property will have their name and message printed, but not the - * stacktrace. - * - * This should be used for errors where the message is the part that's important but the stacktrace is useless. - * Some examples of where this might be useful are: - * - * - Invalid input by the user (see `UsageError`) - * - A HTTP connection fails, the user is shown "Failed To Fetch Data: Could not connect to server example.com" without stacktrace - * - A command in which the user enters credentials doesn't want to show a stacktract when the user enters invalid credentials - * - ... - */ -export interface ErrorWithMeta extends Error { - /** - * Metadata detailing how clipanion should print this error - */ - readonly clipanion: ErrorMeta; -} -/** - * A generic usage error with the name `UsageError`. - * - * It should be used over `Error` only when it's the user's fault. - */ -export declare class UsageError extends Error { - clipanion: ErrorMeta; - constructor(message: string); -} -export declare class UnknownSyntaxError extends Error { - readonly input: Array; - readonly candidates: Array<{ - usage: string; - reason: string | null; - }>; - clipanion: ErrorMeta; - constructor(input: Array, candidates: Array<{ - usage: string; - reason: string | null; - }>); -} -export declare class AmbiguousSyntaxError extends Error { - readonly input: Array; - readonly usages: Array; - clipanion: ErrorMeta; - constructor(input: Array, usages: Array); -} diff --git a/sdks/nodejs/node_modules/clipanion/lib/errors.js b/sdks/nodejs/node_modules/clipanion/lib/errors.js deleted file mode 100644 index 95a278f..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/errors.js +++ /dev/null @@ -1,70 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var constants = require('./constants.js'); - -/** - * A generic usage error with the name `UsageError`. - * - * It should be used over `Error` only when it's the user's fault. - */ -class UsageError extends Error { - constructor(message) { - super(message); - this.clipanion = { type: `usage` }; - this.name = `UsageError`; - } -} -class UnknownSyntaxError extends Error { - constructor(input, candidates) { - super(); - this.input = input; - this.candidates = candidates; - this.clipanion = { type: `none` }; - this.name = `UnknownSyntaxError`; - if (this.candidates.length === 0) { - this.message = `Command not found, but we're not sure what's the alternative.`; - } - else if (this.candidates.every(candidate => candidate.reason !== null && candidate.reason === candidates[0].reason)) { - const [{ reason }] = this.candidates; - this.message = `${reason}\n\n${this.candidates.map(({ usage }) => `$ ${usage}`).join(`\n`)}`; - } - else if (this.candidates.length === 1) { - const [{ usage }] = this.candidates; - this.message = `Command not found; did you mean:\n\n$ ${usage}\n${whileRunning(input)}`; - } - else { - this.message = `Command not found; did you mean one of:\n\n${this.candidates.map(({ usage }, index) => { - return `${`${index}.`.padStart(4)} ${usage}`; - }).join(`\n`)}\n\n${whileRunning(input)}`; - } - } -} -class AmbiguousSyntaxError extends Error { - constructor(input, usages) { - super(); - this.input = input; - this.usages = usages; - this.clipanion = { type: `none` }; - this.name = `AmbiguousSyntaxError`; - this.message = `Cannot find which to pick amongst the following alternatives:\n\n${this.usages.map((usage, index) => { - return `${`${index}.`.padStart(4)} ${usage}`; - }).join(`\n`)}\n\n${whileRunning(input)}`; - } -} -const whileRunning = (input) => `While running ${input.filter(token => { - return token !== constants.SpecialToken.EndOfInput && token !== constants.SpecialToken.EndOfPartialInput; -}).map(token => { - const json = JSON.stringify(token); - if (token.match(/\s/) || token.length === 0 || json !== `"${token}"`) { - return json; - } - else { - return token; - } -}).join(` `)}`; - -exports.AmbiguousSyntaxError = AmbiguousSyntaxError; -exports.UnknownSyntaxError = UnknownSyntaxError; -exports.UsageError = UsageError; diff --git a/sdks/nodejs/node_modules/clipanion/lib/errors.mjs b/sdks/nodejs/node_modules/clipanion/lib/errors.mjs deleted file mode 100644 index 9befcbf..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/errors.mjs +++ /dev/null @@ -1,64 +0,0 @@ -import { SpecialToken } from './constants.mjs'; - -/** - * A generic usage error with the name `UsageError`. - * - * It should be used over `Error` only when it's the user's fault. - */ -class UsageError extends Error { - constructor(message) { - super(message); - this.clipanion = { type: `usage` }; - this.name = `UsageError`; - } -} -class UnknownSyntaxError extends Error { - constructor(input, candidates) { - super(); - this.input = input; - this.candidates = candidates; - this.clipanion = { type: `none` }; - this.name = `UnknownSyntaxError`; - if (this.candidates.length === 0) { - this.message = `Command not found, but we're not sure what's the alternative.`; - } - else if (this.candidates.every(candidate => candidate.reason !== null && candidate.reason === candidates[0].reason)) { - const [{ reason }] = this.candidates; - this.message = `${reason}\n\n${this.candidates.map(({ usage }) => `$ ${usage}`).join(`\n`)}`; - } - else if (this.candidates.length === 1) { - const [{ usage }] = this.candidates; - this.message = `Command not found; did you mean:\n\n$ ${usage}\n${whileRunning(input)}`; - } - else { - this.message = `Command not found; did you mean one of:\n\n${this.candidates.map(({ usage }, index) => { - return `${`${index}.`.padStart(4)} ${usage}`; - }).join(`\n`)}\n\n${whileRunning(input)}`; - } - } -} -class AmbiguousSyntaxError extends Error { - constructor(input, usages) { - super(); - this.input = input; - this.usages = usages; - this.clipanion = { type: `none` }; - this.name = `AmbiguousSyntaxError`; - this.message = `Cannot find which to pick amongst the following alternatives:\n\n${this.usages.map((usage, index) => { - return `${`${index}.`.padStart(4)} ${usage}`; - }).join(`\n`)}\n\n${whileRunning(input)}`; - } -} -const whileRunning = (input) => `While running ${input.filter(token => { - return token !== SpecialToken.EndOfInput && token !== SpecialToken.EndOfPartialInput; -}).map(token => { - const json = JSON.stringify(token); - if (token.match(/\s/) || token.length === 0 || json !== `"${token}"`) { - return json; - } - else { - return token; - } -}).join(` `)}`; - -export { AmbiguousSyntaxError, UnknownSyntaxError, UsageError }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/format.d.ts b/sdks/nodejs/node_modules/clipanion/lib/format.d.ts deleted file mode 100644 index 998df35..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/format.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -export interface ColorFormat { - header(str: string): string; - bold(str: string): string; - error(str: string): string; - code(str: string): string; -} -export declare const richFormat: ColorFormat; -export declare const textFormat: ColorFormat; -/** - * Formats markdown text to be displayed to the console. Not all markdown features are supported. - * - * @param text The markdown text to format. - * @param opts.format The format to use. - * @param opts.paragraphs Whether to cut the text into paragraphs of 80 characters at most. - */ -export declare function formatMarkdownish(text: string, { format, paragraphs }: { - format: ColorFormat; - paragraphs: boolean; -}): string; diff --git a/sdks/nodejs/node_modules/clipanion/lib/format.js b/sdks/nodejs/node_modules/clipanion/lib/format.js deleted file mode 100644 index ddb250f..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/format.js +++ /dev/null @@ -1,74 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -const MAX_LINE_LENGTH = 80; -const richLine = Array(MAX_LINE_LENGTH).fill(`━`); -for (let t = 0; t <= 24; ++t) - richLine[richLine.length - t] = `\x1b[38;5;${232 + t}m━`; -const richFormat = { - header: str => `\x1b[1m━━━ ${str}${str.length < MAX_LINE_LENGTH - 5 ? ` ${richLine.slice(str.length + 5).join(``)}` : `:`}\x1b[0m`, - bold: str => `\x1b[1m${str}\x1b[22m`, - error: str => `\x1b[31m\x1b[1m${str}\x1b[22m\x1b[39m`, - code: str => `\x1b[36m${str}\x1b[39m`, -}; -const textFormat = { - header: str => str, - bold: str => str, - error: str => str, - code: str => str, -}; -function dedent(text) { - const lines = text.split(`\n`); - const nonEmptyLines = lines.filter(line => line.match(/\S/)); - const indent = nonEmptyLines.length > 0 ? nonEmptyLines.reduce((minLength, line) => Math.min(minLength, line.length - line.trimStart().length), Number.MAX_VALUE) : 0; - return lines - .map(line => line.slice(indent).trimRight()) - .join(`\n`); -} -/** - * Formats markdown text to be displayed to the console. Not all markdown features are supported. - * - * @param text The markdown text to format. - * @param opts.format The format to use. - * @param opts.paragraphs Whether to cut the text into paragraphs of 80 characters at most. - */ -function formatMarkdownish(text, { format, paragraphs }) { - // Enforce \n as newline character - text = text.replace(/\r\n?/g, `\n`); - // Remove the indentation, since it got messed up with the JS indentation - text = dedent(text); - // Remove surrounding newlines, since they got added for JS formatting - text = text.replace(/^\n+|\n+$/g, ``); - // List items always end with at least two newlines (in order to not be collapsed) - text = text.replace(/^(\s*)-([^\n]*?)\n+/gm, `$1-$2\n\n`); - // Single newlines are removed; larger than that are collapsed into one - text = text.replace(/\n(\n)?\n*/g, ($0, $1) => $1 ? $1 : ` `); - if (paragraphs) { - text = text.split(/\n/).map(paragraph => { - // Does the paragraph starts with a list? - const bulletMatch = paragraph.match(/^\s*[*-][\t ]+(.*)/); - if (!bulletMatch) - // No, cut the paragraphs into segments of 80 characters - return paragraph.match(/(.{1,80})(?: |$)/g).join(`\n`); - const indent = paragraph.length - paragraph.trimStart().length; - // Yes, cut the paragraphs into segments of (78 - indent) characters (to account for the prefix) - return bulletMatch[1].match(new RegExp(`(.{1,${78 - indent}})(?: |$)`, `g`)).map((line, index) => { - return ` `.repeat(indent) + (index === 0 ? `- ` : ` `) + line; - }).join(`\n`); - }).join(`\n\n`); - } - // Highlight the code segments - text = text.replace(/(`+)((?:.|[\n])*?)\1/g, ($0, $1, $2) => { - return format.code($1 + $2 + $1); - }); - // Highlight the bold segments - text = text.replace(/(\*\*)((?:.|[\n])*?)\1/g, ($0, $1, $2) => { - return format.bold($1 + $2 + $1); - }); - return text ? `${text}\n` : ``; -} - -exports.formatMarkdownish = formatMarkdownish; -exports.richFormat = richFormat; -exports.textFormat = textFormat; diff --git a/sdks/nodejs/node_modules/clipanion/lib/format.mjs b/sdks/nodejs/node_modules/clipanion/lib/format.mjs deleted file mode 100644 index 457b054..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/format.mjs +++ /dev/null @@ -1,68 +0,0 @@ -const MAX_LINE_LENGTH = 80; -const richLine = Array(MAX_LINE_LENGTH).fill(`━`); -for (let t = 0; t <= 24; ++t) - richLine[richLine.length - t] = `\x1b[38;5;${232 + t}m━`; -const richFormat = { - header: str => `\x1b[1m━━━ ${str}${str.length < MAX_LINE_LENGTH - 5 ? ` ${richLine.slice(str.length + 5).join(``)}` : `:`}\x1b[0m`, - bold: str => `\x1b[1m${str}\x1b[22m`, - error: str => `\x1b[31m\x1b[1m${str}\x1b[22m\x1b[39m`, - code: str => `\x1b[36m${str}\x1b[39m`, -}; -const textFormat = { - header: str => str, - bold: str => str, - error: str => str, - code: str => str, -}; -function dedent(text) { - const lines = text.split(`\n`); - const nonEmptyLines = lines.filter(line => line.match(/\S/)); - const indent = nonEmptyLines.length > 0 ? nonEmptyLines.reduce((minLength, line) => Math.min(minLength, line.length - line.trimStart().length), Number.MAX_VALUE) : 0; - return lines - .map(line => line.slice(indent).trimRight()) - .join(`\n`); -} -/** - * Formats markdown text to be displayed to the console. Not all markdown features are supported. - * - * @param text The markdown text to format. - * @param opts.format The format to use. - * @param opts.paragraphs Whether to cut the text into paragraphs of 80 characters at most. - */ -function formatMarkdownish(text, { format, paragraphs }) { - // Enforce \n as newline character - text = text.replace(/\r\n?/g, `\n`); - // Remove the indentation, since it got messed up with the JS indentation - text = dedent(text); - // Remove surrounding newlines, since they got added for JS formatting - text = text.replace(/^\n+|\n+$/g, ``); - // List items always end with at least two newlines (in order to not be collapsed) - text = text.replace(/^(\s*)-([^\n]*?)\n+/gm, `$1-$2\n\n`); - // Single newlines are removed; larger than that are collapsed into one - text = text.replace(/\n(\n)?\n*/g, ($0, $1) => $1 ? $1 : ` `); - if (paragraphs) { - text = text.split(/\n/).map(paragraph => { - // Does the paragraph starts with a list? - const bulletMatch = paragraph.match(/^\s*[*-][\t ]+(.*)/); - if (!bulletMatch) - // No, cut the paragraphs into segments of 80 characters - return paragraph.match(/(.{1,80})(?: |$)/g).join(`\n`); - const indent = paragraph.length - paragraph.trimStart().length; - // Yes, cut the paragraphs into segments of (78 - indent) characters (to account for the prefix) - return bulletMatch[1].match(new RegExp(`(.{1,${78 - indent}})(?: |$)`, `g`)).map((line, index) => { - return ` `.repeat(indent) + (index === 0 ? `- ` : ` `) + line; - }).join(`\n`); - }).join(`\n\n`); - } - // Highlight the code segments - text = text.replace(/(`+)((?:.|[\n])*?)\1/g, ($0, $1, $2) => { - return format.code($1 + $2 + $1); - }); - // Highlight the bold segments - text = text.replace(/(\*\*)((?:.|[\n])*?)\1/g, ($0, $1, $2) => { - return format.bold($1 + $2 + $1); - }); - return text ? `${text}\n` : ``; -} - -export { formatMarkdownish, richFormat, textFormat }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/platform/browser.d.ts b/sdks/nodejs/node_modules/clipanion/lib/platform/browser.d.ts deleted file mode 100644 index ab3de30..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/platform/browser.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function getDefaultColorDepth(): number; -export declare function getCaptureActivator(): void; diff --git a/sdks/nodejs/node_modules/clipanion/lib/platform/browser.js b/sdks/nodejs/node_modules/clipanion/lib/platform/browser.js deleted file mode 100644 index baaf8b5..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/platform/browser.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -function getDefaultColorDepth() { - return 1; -} -function getCaptureActivator() { - throw new Error(`The enableCapture option cannot be used from within a browser environment`); -} - -exports.getCaptureActivator = getCaptureActivator; -exports.getDefaultColorDepth = getDefaultColorDepth; diff --git a/sdks/nodejs/node_modules/clipanion/lib/platform/browser.mjs b/sdks/nodejs/node_modules/clipanion/lib/platform/browser.mjs deleted file mode 100644 index 69a93fe..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/platform/browser.mjs +++ /dev/null @@ -1,8 +0,0 @@ -function getDefaultColorDepth() { - return 1; -} -function getCaptureActivator() { - throw new Error(`The enableCapture option cannot be used from within a browser environment`); -} - -export { getCaptureActivator, getDefaultColorDepth }; diff --git a/sdks/nodejs/node_modules/clipanion/lib/platform/node.d.ts b/sdks/nodejs/node_modules/clipanion/lib/platform/node.d.ts deleted file mode 100644 index 7905ab3..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/platform/node.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { BaseContext } from '../advanced/Cli'; -export declare function getDefaultColorDepth(): number; -export declare function getCaptureActivator(context: BaseContext): ((fn: () => Promise) => Promise) | null; diff --git a/sdks/nodejs/node_modules/clipanion/lib/platform/node.js b/sdks/nodejs/node_modules/clipanion/lib/platform/node.js deleted file mode 100644 index 48b5e1a..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/platform/node.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var tty = require('tty'); - -function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - -var tty__default = /*#__PURE__*/_interopDefaultLegacy(tty); - -function getDefaultColorDepth() { - if (tty__default["default"] && `getColorDepth` in tty__default["default"].WriteStream.prototype) - return tty__default["default"].WriteStream.prototype.getColorDepth(); - if (process.env.FORCE_COLOR === `0`) - return 1; - if (process.env.FORCE_COLOR === `1`) - return 8; - if (typeof process.stdout !== `undefined` && process.stdout.isTTY) - return 8; - return 1; -} -let gContextStorage; -function getCaptureActivator(context) { - let contextStorage = gContextStorage; - if (typeof contextStorage === `undefined`) { - if (context.stdout === process.stdout && context.stderr === process.stderr) - return null; - const { AsyncLocalStorage: LazyAsyncLocalStorage } = require(`async_hooks`); - contextStorage = gContextStorage = new LazyAsyncLocalStorage(); - const origStdoutWrite = process.stdout._write; - process.stdout._write = function (chunk, encoding, cb) { - const context = contextStorage.getStore(); - if (typeof context === `undefined`) - return origStdoutWrite.call(this, chunk, encoding, cb); - return context.stdout.write(chunk, encoding, cb); - }; - const origStderrWrite = process.stderr._write; - process.stderr._write = function (chunk, encoding, cb) { - const context = contextStorage.getStore(); - if (typeof context === `undefined`) - return origStderrWrite.call(this, chunk, encoding, cb); - return context.stderr.write(chunk, encoding, cb); - }; - } - return (fn) => { - return contextStorage.run(context, fn); - }; -} - -exports.getCaptureActivator = getCaptureActivator; -exports.getDefaultColorDepth = getDefaultColorDepth; diff --git a/sdks/nodejs/node_modules/clipanion/lib/platform/node.mjs b/sdks/nodejs/node_modules/clipanion/lib/platform/node.mjs deleted file mode 100644 index fd21d37..0000000 --- a/sdks/nodejs/node_modules/clipanion/lib/platform/node.mjs +++ /dev/null @@ -1,42 +0,0 @@ -import tty from 'tty'; - -function getDefaultColorDepth() { - if (tty && `getColorDepth` in tty.WriteStream.prototype) - return tty.WriteStream.prototype.getColorDepth(); - if (process.env.FORCE_COLOR === `0`) - return 1; - if (process.env.FORCE_COLOR === `1`) - return 8; - if (typeof process.stdout !== `undefined` && process.stdout.isTTY) - return 8; - return 1; -} -let gContextStorage; -function getCaptureActivator(context) { - let contextStorage = gContextStorage; - if (typeof contextStorage === `undefined`) { - if (context.stdout === process.stdout && context.stderr === process.stderr) - return null; - const { AsyncLocalStorage: LazyAsyncLocalStorage } = require(`async_hooks`); - contextStorage = gContextStorage = new LazyAsyncLocalStorage(); - const origStdoutWrite = process.stdout._write; - process.stdout._write = function (chunk, encoding, cb) { - const context = contextStorage.getStore(); - if (typeof context === `undefined`) - return origStdoutWrite.call(this, chunk, encoding, cb); - return context.stdout.write(chunk, encoding, cb); - }; - const origStderrWrite = process.stderr._write; - process.stderr._write = function (chunk, encoding, cb) { - const context = contextStorage.getStore(); - if (typeof context === `undefined`) - return origStderrWrite.call(this, chunk, encoding, cb); - return context.stderr.write(chunk, encoding, cb); - }; - } - return (fn) => { - return contextStorage.run(context, fn); - }; -} - -export { getCaptureActivator, getDefaultColorDepth }; diff --git a/sdks/nodejs/node_modules/clipanion/package.json b/sdks/nodejs/node_modules/clipanion/package.json deleted file mode 100644 index 731a14c..0000000 --- a/sdks/nodejs/node_modules/clipanion/package.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "name": "clipanion", - "description": "Type-safe CLI library / framework with no runtime dependencies", - "homepage": "https://mael.dev/clipanion/", - "keywords": [ - "cli", - "typescript", - "parser", - "parsing", - "argument", - "args", - "option", - "command" - ], - "version": "4.0.0-rc.4", - "main": "lib/advanced/index", - "exports": { - ".": { - "types": "./lib/advanced/index.d.ts", - "require": "./lib/advanced/index.js", - "import": "./lib/advanced/index.mjs" - }, - "./platform": { - "node": { - "types": "./lib/platform/node.d.ts", - "require": "./lib/platform/node.js", - "import": "./lib/platform/node.mjs" - }, - "browser": { - "types": "./lib/platform/browser.d.ts", - "require": "./lib/platform/browser.js", - "import": "./lib/platform/browser.mjs" - } - }, - "./package.json": "./package.json" - }, - "license": "MIT", - "sideEffects": false, - "repository": { - "url": "https://github.com/arcanis/clipanion", - "type": "git" - }, - "workspaces": [ - "website" - ], - "dependencies": { - "typanion": "^3.8.0" - }, - "peerDependencies": { - "typanion": "*" - }, - "devDependencies": { - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-typescript": "^11.1.6", - "@types/jest": "^29.5.9", - "@types/lodash": "^4.14.179", - "@types/node": "^14.0.13", - "@types/rollup": "^0.54.0", - "@typescript-eslint/eslint-plugin": "^6.19.1", - "@typescript-eslint/parser": "^6.19.1", - "@yarnpkg/core": "^2.3.1", - "@yarnpkg/eslint-config": "yarnpkg/berry#workspace=@yarnpkg/eslint-config", - "@yarnpkg/fslib": "^3.0.1", - "eslint": "^8.56.0", - "eslint-plugin-arca": "^0.16.0", - "eslint-plugin-react": "^7.33.0", - "get-stream": "^5.1.0", - "jest": "^29.7.0", - "lodash": "^4.17.21", - "rollup": "^2.78.0", - "rollup-plugin-multi-input": "^1.3.1", - "ts-jest": "^29.1.1", - "ts-node": "^8.10.2", - "typescript": "^5.3.3" - }, - "scripts": { - "prepack": "rm -rf lib && rollup -c", - "postpack": "rm -rf lib", - "lint": "eslint --max-warnings 0 .", - "test": "jest", - "demo": "node --require ts-node/register demos/advanced.ts" - }, - "publishConfig": { - "main": "lib/advanced/index", - "module": "lib/advanced/index.mjs", - "browser": { - "./lib/platform/node.js": "./lib/platform/browser.js", - "./lib/platform/node.mjs": "./lib/platform/browser.mjs" - }, - "exports": { - ".": { - "types": "./lib/advanced/index.d.ts", - "require": "./lib/advanced/index.js", - "import": "./lib/advanced/index.mjs" - }, - "./platform": { - "node": { - "types": "./lib/platform/node.d.ts", - "require": "./lib/platform/node.js", - "import": "./lib/platform/node.mjs" - }, - "browser": { - "types": "./lib/platform/browser.d.ts", - "require": "./lib/platform/browser.js", - "import": "./lib/platform/browser.mjs" - } - }, - "./package.json": "./package.json" - } - }, - "files": [ - "lib" - ], - "packageManager": "yarn@4.4.1", - "browser": { - "./lib/platform/node.js": "./lib/platform/browser.js", - "./lib/platform/node.mjs": "./lib/platform/browser.mjs" - }, - "module": "lib/advanced/index.mjs" -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/colorette/LICENSE.md b/sdks/nodejs/node_modules/colorette/LICENSE.md deleted file mode 100644 index 6ba7a0f..0000000 --- a/sdks/nodejs/node_modules/colorette/LICENSE.md +++ /dev/null @@ -1,7 +0,0 @@ -Copyright © Jorge Bucaran <> - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/colorette/README.md b/sdks/nodejs/node_modules/colorette/README.md deleted file mode 100644 index 693ae44..0000000 --- a/sdks/nodejs/node_modules/colorette/README.md +++ /dev/null @@ -1,134 +0,0 @@ -# 🌈Colorette - -> Easily set your terminal text color & styles. - -- No dependecies -- Automatic color support detection -- Up to [2x faster](#benchmarks) than alternatives -- TypeScript support -- [`NO_COLOR`](https://no-color.org) friendly -- Node >= `10` - -> [**Upgrading from Colorette `1.x`?**](https://github.com/jorgebucaran/colorette/issues/70) - -## Quickstart - -```js -import { blue, bold, underline } from "colorette" - -console.log( - blue("I'm blue"), - bold(blue("da ba dee")), - underline(bold(blue("da ba daa"))) -) -``` - -Here's an example using [template literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals). - -```js -console.log(` - There's a ${underline(blue("house"))}, - With a ${bold(blue("window"))}, - And a ${blue("corvette")} - And everything is blue -`) -``` - -You can also nest styles without breaking existing color sequences. - -```js -console.log(bold(`I'm ${blue(`da ba ${underline("dee")} da ba`)} daa`)) -``` - -Need to override terminal color detection? You can do that too. - -```js -import { createColors } from "colorette" - -const { blue } = createColors({ useColor: false }) - -console.log(blue("Blue? Nope, nah")) -``` - -## Installation - -```console -npm install colorette -``` - -## API - -### \() - -> See all [supported colors](#supported-colors). - -```js -import { blue } from "colorette" - -blue("I'm blue") //=> \x1b[34mI'm blue\x1b[39m -``` - -### createColors() - -Override terminal color detection via `createColors({ useColor })`. - -```js -import { createColors } from "colorette" - -const { blue } = createColors({ useColor: false }) -``` - -### isColorSupported - -`true` if your terminal supports color, `false` otherwise. Used internally, but exposed for convenience. - -## Environment - -You can override color detection from the CLI by setting the `--no-color` or `--color` flags. - -```console -$ ./example.js --no-color | ./consumer.js -``` - -Or if you can't use CLI flags, by setting the `NO_COLOR=` or `FORCE_COLOR=` environment variables. - -```console -$ NO_COLOR= ./example.js | ./consumer.js -``` - -## Supported colors - -| Colors | Background Colors | Bright Colors | Bright Background Colors | Modifiers | -| ------- | ----------------- | ------------- | ------------------------ | ----------------- | -| black | bgBlack | blackBright | bgBlackBright | dim | -| red | bgRed | redBright | bgRedBright | **bold** | -| green | bgGreen | greenBright | bgGreenBright | hidden | -| yellow | bgYellow | yellowBright | bgYellowBright | _italic_ | -| blue | bgBlue | blueBright | bgBlueBright | underline | -| magenta | bgMagenta | magentaBright | bgMagentaBright | ~~strikethrough~~ | -| cyan | bgCyan | cyanBright | bgCyanBright | reset | -| white | bgWhite | whiteBright | bgWhiteBright | | -| gray | | | | | - -## [Benchmarks](https://github.com/jorgebucaran/colorette/actions/workflows/bench.yml) - -```console -npm --prefix bench start -``` - -```diff - chalk 1,786,703 ops/sec - kleur 1,618,960 ops/sec - colors 646,823 ops/sec - ansi-colors 786,149 ops/sec - picocolors 2,871,758 ops/sec -+ colorette 3,002,751 ops/sec -``` - -## Acknowledgments - -Colorette started out in 2015 by [@jorgebucaran](https://github.com/jorgebucaran) as a lightweight alternative to [Chalk](https://github.com/chalk/chalk) and was introduced originally as [Clor](https://github.com/jorgebucaran/colorette/commit/b01b5b9961ceb7df878583a3002e836fae9e37ce). Our terminal color detection logic borrows heavily from [@sindresorhus](https://github.com/sindresorhus) and [@Qix-](https://github.com/Qix-) work on Chalk. The idea of slicing strings to clear bleeding sequences was adapted from a similar technique used by [@alexeyraspopov](https://github.com/alexeyraspopov) in [picocolors](https://github.com/alexeyraspopov/picocolors). Thank you to all our contributors! <3 - -## License - -[MIT](LICENSE.md) diff --git a/sdks/nodejs/node_modules/colorette/index.cjs b/sdks/nodejs/node_modules/colorette/index.cjs deleted file mode 100644 index baf0e64..0000000 --- a/sdks/nodejs/node_modules/colorette/index.cjs +++ /dev/null @@ -1,218 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var tty = require('tty'); - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { return e[k]; } - }); - } - }); - } - n["default"] = e; - return Object.freeze(n); -} - -var tty__namespace = /*#__PURE__*/_interopNamespace(tty); - -const { - env = {}, - argv = [], - platform = "", -} = typeof process === "undefined" ? {} : process; - -const isDisabled = "NO_COLOR" in env || argv.includes("--no-color"); -const isForced = "FORCE_COLOR" in env || argv.includes("--color"); -const isWindows = platform === "win32"; -const isDumbTerminal = env.TERM === "dumb"; - -const isCompatibleTerminal = - tty__namespace && tty__namespace.isatty && tty__namespace.isatty(1) && env.TERM && !isDumbTerminal; - -const isCI = - "CI" in env && - ("GITHUB_ACTIONS" in env || "GITLAB_CI" in env || "CIRCLECI" in env); - -const isColorSupported = - !isDisabled && - (isForced || (isWindows && !isDumbTerminal) || isCompatibleTerminal || isCI); - -const replaceClose = ( - index, - string, - close, - replace, - head = string.substring(0, index) + replace, - tail = string.substring(index + close.length), - next = tail.indexOf(close) -) => head + (next < 0 ? tail : replaceClose(next, tail, close, replace)); - -const clearBleed = (index, string, open, close, replace) => - index < 0 - ? open + string + close - : open + replaceClose(index, string, close, replace) + close; - -const filterEmpty = - (open, close, replace = open, at = open.length + 1) => - (string) => - string || !(string === "" || string === undefined) - ? clearBleed( - ("" + string).indexOf(close, at), - string, - open, - close, - replace - ) - : ""; - -const init = (open, close, replace) => - filterEmpty(`\x1b[${open}m`, `\x1b[${close}m`, replace); - -const colors = { - reset: init(0, 0), - bold: init(1, 22, "\x1b[22m\x1b[1m"), - dim: init(2, 22, "\x1b[22m\x1b[2m"), - italic: init(3, 23), - underline: init(4, 24), - inverse: init(7, 27), - hidden: init(8, 28), - strikethrough: init(9, 29), - black: init(30, 39), - red: init(31, 39), - green: init(32, 39), - yellow: init(33, 39), - blue: init(34, 39), - magenta: init(35, 39), - cyan: init(36, 39), - white: init(37, 39), - gray: init(90, 39), - bgBlack: init(40, 49), - bgRed: init(41, 49), - bgGreen: init(42, 49), - bgYellow: init(43, 49), - bgBlue: init(44, 49), - bgMagenta: init(45, 49), - bgCyan: init(46, 49), - bgWhite: init(47, 49), - blackBright: init(90, 39), - redBright: init(91, 39), - greenBright: init(92, 39), - yellowBright: init(93, 39), - blueBright: init(94, 39), - magentaBright: init(95, 39), - cyanBright: init(96, 39), - whiteBright: init(97, 39), - bgBlackBright: init(100, 49), - bgRedBright: init(101, 49), - bgGreenBright: init(102, 49), - bgYellowBright: init(103, 49), - bgBlueBright: init(104, 49), - bgMagentaBright: init(105, 49), - bgCyanBright: init(106, 49), - bgWhiteBright: init(107, 49), -}; - -const createColors = ({ useColor = isColorSupported } = {}) => - useColor - ? colors - : Object.keys(colors).reduce( - (colors, key) => ({ ...colors, [key]: String }), - {} - ); - -const { - reset, - bold, - dim, - italic, - underline, - inverse, - hidden, - strikethrough, - black, - red, - green, - yellow, - blue, - magenta, - cyan, - white, - gray, - bgBlack, - bgRed, - bgGreen, - bgYellow, - bgBlue, - bgMagenta, - bgCyan, - bgWhite, - blackBright, - redBright, - greenBright, - yellowBright, - blueBright, - magentaBright, - cyanBright, - whiteBright, - bgBlackBright, - bgRedBright, - bgGreenBright, - bgYellowBright, - bgBlueBright, - bgMagentaBright, - bgCyanBright, - bgWhiteBright, -} = createColors(); - -exports.bgBlack = bgBlack; -exports.bgBlackBright = bgBlackBright; -exports.bgBlue = bgBlue; -exports.bgBlueBright = bgBlueBright; -exports.bgCyan = bgCyan; -exports.bgCyanBright = bgCyanBright; -exports.bgGreen = bgGreen; -exports.bgGreenBright = bgGreenBright; -exports.bgMagenta = bgMagenta; -exports.bgMagentaBright = bgMagentaBright; -exports.bgRed = bgRed; -exports.bgRedBright = bgRedBright; -exports.bgWhite = bgWhite; -exports.bgWhiteBright = bgWhiteBright; -exports.bgYellow = bgYellow; -exports.bgYellowBright = bgYellowBright; -exports.black = black; -exports.blackBright = blackBright; -exports.blue = blue; -exports.blueBright = blueBright; -exports.bold = bold; -exports.createColors = createColors; -exports.cyan = cyan; -exports.cyanBright = cyanBright; -exports.dim = dim; -exports.gray = gray; -exports.green = green; -exports.greenBright = greenBright; -exports.hidden = hidden; -exports.inverse = inverse; -exports.isColorSupported = isColorSupported; -exports.italic = italic; -exports.magenta = magenta; -exports.magentaBright = magentaBright; -exports.red = red; -exports.redBright = redBright; -exports.reset = reset; -exports.strikethrough = strikethrough; -exports.underline = underline; -exports.white = white; -exports.whiteBright = whiteBright; -exports.yellow = yellow; -exports.yellowBright = yellowBright; diff --git a/sdks/nodejs/node_modules/colorette/index.d.ts b/sdks/nodejs/node_modules/colorette/index.d.ts deleted file mode 100644 index ba32c9f..0000000 --- a/sdks/nodejs/node_modules/colorette/index.d.ts +++ /dev/null @@ -1,93 +0,0 @@ -declare module "colorette" { - type Color = (text: string | number) => string - - interface Colorette { - reset: Color - bold: Color - dim: Color - italic: Color - underline: Color - inverse: Color - hidden: Color - strikethrough: Color - black: Color - red: Color - green: Color - yellow: Color - blue: Color - magenta: Color - cyan: Color - white: Color - gray: Color - bgBlack: Color - bgRed: Color - bgGreen: Color - bgYellow: Color - bgBlue: Color - bgMagenta: Color - bgCyan: Color - bgWhite: Color - blackBright: Color - redBright: Color - greenBright: Color - yellowBright: Color - blueBright: Color - magentaBright: Color - cyanBright: Color - whiteBright: Color - bgBlackBright: Color - bgRedBright: Color - bgGreenBright: Color - bgYellowBright: Color - bgBlueBright: Color - bgMagentaBright: Color - bgCyanBright: Color - bgWhiteBright: Color - } - - const reset: Color - const bold: Color - const dim: Color - const italic: Color - const underline: Color - const inverse: Color - const hidden: Color - const strikethrough: Color - const black: Color - const red: Color - const green: Color - const yellow: Color - const blue: Color - const magenta: Color - const cyan: Color - const white: Color - const gray: Color - const bgBlack: Color - const bgRed: Color - const bgGreen: Color - const bgYellow: Color - const bgBlue: Color - const bgMagenta: Color - const bgCyan: Color - const bgWhite: Color - const blackBright: Color - const redBright: Color - const greenBright: Color - const yellowBright: Color - const blueBright: Color - const magentaBright: Color - const cyanBright: Color - const whiteBright: Color - const bgBlackBright: Color - const bgRedBright: Color - const bgGreenBright: Color - const bgYellowBright: Color - const bgBlueBright: Color - const bgMagentaBright: Color - const bgCyanBright: Color - const bgWhiteBright: Color - - const isColorSupported: boolean - - function createColors(options?: { useColor: boolean }): Colorette -} diff --git a/sdks/nodejs/node_modules/colorette/index.js b/sdks/nodejs/node_modules/colorette/index.js deleted file mode 100644 index 0d64e6b..0000000 --- a/sdks/nodejs/node_modules/colorette/index.js +++ /dev/null @@ -1,150 +0,0 @@ -import * as tty from "tty" - -const { - env = {}, - argv = [], - platform = "", -} = typeof process === "undefined" ? {} : process - -const isDisabled = "NO_COLOR" in env || argv.includes("--no-color") -const isForced = "FORCE_COLOR" in env || argv.includes("--color") -const isWindows = platform === "win32" -const isDumbTerminal = env.TERM === "dumb" - -const isCompatibleTerminal = - tty && tty.isatty && tty.isatty(1) && env.TERM && !isDumbTerminal - -const isCI = - "CI" in env && - ("GITHUB_ACTIONS" in env || "GITLAB_CI" in env || "CIRCLECI" in env) - -export const isColorSupported = - !isDisabled && - (isForced || (isWindows && !isDumbTerminal) || isCompatibleTerminal || isCI) - -const replaceClose = ( - index, - string, - close, - replace, - head = string.substring(0, index) + replace, - tail = string.substring(index + close.length), - next = tail.indexOf(close) -) => head + (next < 0 ? tail : replaceClose(next, tail, close, replace)) - -const clearBleed = (index, string, open, close, replace) => - index < 0 - ? open + string + close - : open + replaceClose(index, string, close, replace) + close - -const filterEmpty = - (open, close, replace = open, at = open.length + 1) => - (string) => - string || !(string === "" || string === undefined) - ? clearBleed( - ("" + string).indexOf(close, at), - string, - open, - close, - replace - ) - : "" - -const init = (open, close, replace) => - filterEmpty(`\x1b[${open}m`, `\x1b[${close}m`, replace) - -const colors = { - reset: init(0, 0), - bold: init(1, 22, "\x1b[22m\x1b[1m"), - dim: init(2, 22, "\x1b[22m\x1b[2m"), - italic: init(3, 23), - underline: init(4, 24), - inverse: init(7, 27), - hidden: init(8, 28), - strikethrough: init(9, 29), - black: init(30, 39), - red: init(31, 39), - green: init(32, 39), - yellow: init(33, 39), - blue: init(34, 39), - magenta: init(35, 39), - cyan: init(36, 39), - white: init(37, 39), - gray: init(90, 39), - bgBlack: init(40, 49), - bgRed: init(41, 49), - bgGreen: init(42, 49), - bgYellow: init(43, 49), - bgBlue: init(44, 49), - bgMagenta: init(45, 49), - bgCyan: init(46, 49), - bgWhite: init(47, 49), - blackBright: init(90, 39), - redBright: init(91, 39), - greenBright: init(92, 39), - yellowBright: init(93, 39), - blueBright: init(94, 39), - magentaBright: init(95, 39), - cyanBright: init(96, 39), - whiteBright: init(97, 39), - bgBlackBright: init(100, 49), - bgRedBright: init(101, 49), - bgGreenBright: init(102, 49), - bgYellowBright: init(103, 49), - bgBlueBright: init(104, 49), - bgMagentaBright: init(105, 49), - bgCyanBright: init(106, 49), - bgWhiteBright: init(107, 49), -} - -export const createColors = ({ useColor = isColorSupported } = {}) => - useColor - ? colors - : Object.keys(colors).reduce( - (colors, key) => ({ ...colors, [key]: String }), - {} - ) - -export const { - reset, - bold, - dim, - italic, - underline, - inverse, - hidden, - strikethrough, - black, - red, - green, - yellow, - blue, - magenta, - cyan, - white, - gray, - bgBlack, - bgRed, - bgGreen, - bgYellow, - bgBlue, - bgMagenta, - bgCyan, - bgWhite, - blackBright, - redBright, - greenBright, - yellowBright, - blueBright, - magentaBright, - cyanBright, - whiteBright, - bgBlackBright, - bgRedBright, - bgGreenBright, - bgYellowBright, - bgBlueBright, - bgMagentaBright, - bgCyanBright, - bgWhiteBright, -} = createColors() diff --git a/sdks/nodejs/node_modules/colorette/package.json b/sdks/nodejs/node_modules/colorette/package.json deleted file mode 100644 index d827eee..0000000 --- a/sdks/nodejs/node_modules/colorette/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "colorette", - "version": "2.0.20", - "type": "module", - "main": "index.cjs", - "module": "index.js", - "types": "index.d.ts", - "description": "🌈Easily set your terminal text color & styles.", - "repository": "jorgebucaran/colorette", - "license": "MIT", - "exports": { - "./package.json": "./package.json", - ".": { - "require": "./index.cjs", - "import": "./index.js", - "types": "./index.d.ts" - } - }, - "files": [ - "*.*(c)[tj]s*" - ], - "author": "Jorge Bucaran", - "keywords": [ - "terminal", - "styles", - "color", - "ansi" - ], - "scripts": { - "test": "c8 twist tests/*.js", - "build": "npx rollup --format cjs --input index.js --file index.cjs", - "deploy": "npm test && git commit --all --message $tag && git tag --sign $tag --message $tag && git push && git push --tags", - "release": "tag=$npm_package_version npm run deploy && npm publish --access public", - "prepare": "npm run build" - }, - "devDependencies": { - "c8": "*", - "twist": "*" - } -} diff --git a/sdks/nodejs/node_modules/debug/LICENSE b/sdks/nodejs/node_modules/debug/LICENSE deleted file mode 100644 index 1a9820e..0000000 --- a/sdks/nodejs/node_modules/debug/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -(The MIT License) - -Copyright (c) 2014-2017 TJ Holowaychuk -Copyright (c) 2018-2021 Josh Junon - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software -and associated documentation files (the 'Software'), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/sdks/nodejs/node_modules/debug/README.md b/sdks/nodejs/node_modules/debug/README.md deleted file mode 100644 index 9ebdfbf..0000000 --- a/sdks/nodejs/node_modules/debug/README.md +++ /dev/null @@ -1,481 +0,0 @@ -# debug -[![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) -[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) - - - -A tiny JavaScript debugging utility modelled after Node.js core's debugging -technique. Works in Node.js and web browsers. - -## Installation - -```bash -$ npm install debug -``` - -## Usage - -`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. - -Example [_app.js_](./examples/node/app.js): - -```js -var debug = require('debug')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %o', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); -``` - -Example [_worker.js_](./examples/node/worker.js): - -```js -var a = require('debug')('worker:a') - , b = require('debug')('worker:b'); - -function work() { - a('doing lots of uninteresting work'); - setTimeout(work, Math.random() * 1000); -} - -work(); - -function workb() { - b('doing some work'); - setTimeout(workb, Math.random() * 2000); -} - -workb(); -``` - -The `DEBUG` environment variable is then used to enable these based on space or -comma-delimited names. - -Here are some examples: - -screen shot 2017-08-08 at 12 53 04 pm -screen shot 2017-08-08 at 12 53 38 pm -screen shot 2017-08-08 at 12 53 25 pm - -#### Windows command prompt notes - -##### CMD - -On Windows the environment variable is set using the `set` command. - -```cmd -set DEBUG=*,-not_this -``` - -Example: - -```cmd -set DEBUG=* & node app.js -``` - -##### PowerShell (VS Code default) - -PowerShell uses different syntax to set environment variables. - -```cmd -$env:DEBUG = "*,-not_this" -``` - -Example: - -```cmd -$env:DEBUG='app';node app.js -``` - -Then, run the program to be debugged as usual. - -npm script example: -```js - "windowsDebug": "@powershell -Command $env:DEBUG='*';node app.js", -``` - -## Namespace Colors - -Every debug instance has a color generated for it based on its namespace name. -This helps when visually parsing the debug output to identify which debug instance -a debug line belongs to. - -#### Node.js - -In Node.js, colors are enabled when stderr is a TTY. You also _should_ install -the [`supports-color`](https://npmjs.org/supports-color) module alongside debug, -otherwise debug will only use a small handful of basic colors. - - - -#### Web Browser - -Colors are also enabled on "Web Inspectors" that understand the `%c` formatting -option. These are WebKit web inspectors, Firefox ([since version -31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) -and the Firebug plugin for Firefox (any version). - - - - -## Millisecond diff - -When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - - - -When stdout is not a TTY, `Date#toISOString()` is used, making it more useful for logging the debug information as shown below: - - - - -## Conventions - -If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment variable. You can then use it for normal output as well as debug output. - -## Wildcards - -The `*` character may be used as a wildcard. Suppose for example your library has -debuggers named "connect:bodyParser", "connect:compress", "connect:session", -instead of listing all three with -`DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do -`DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - -You can also exclude specific debuggers by prefixing them with a "-" character. -For example, `DEBUG=*,-connect:*` would include all debuggers except those -starting with "connect:". - -## Environment Variables - -When running through Node.js, you can set a few environment variables that will -change the behavior of the debug logging: - -| Name | Purpose | -|-----------|-------------------------------------------------| -| `DEBUG` | Enables/disables specific debugging namespaces. | -| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY). | -| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | -| `DEBUG_DEPTH` | Object inspection depth. | -| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | - - -__Note:__ The environment variables beginning with `DEBUG_` end up being -converted into an Options object that gets used with `%o`/`%O` formatters. -See the Node.js documentation for -[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) -for the complete list. - -## Formatters - -Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. -Below are the officially supported formatters: - -| Formatter | Representation | -|-----------|----------------| -| `%O` | Pretty-print an Object on multiple lines. | -| `%o` | Pretty-print an Object all on a single line. | -| `%s` | String. | -| `%d` | Number (both integer and float). | -| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | -| `%%` | Single percent sign ('%'). This does not consume an argument. | - - -### Custom formatters - -You can add custom formatters by extending the `debug.formatters` object. -For example, if you wanted to add support for rendering a Buffer as hex with -`%h`, you could do something like: - -```js -const createDebug = require('debug') -createDebug.formatters.h = (v) => { - return v.toString('hex') -} - -// …elsewhere -const debug = createDebug('foo') -debug('this is hex: %h', new Buffer('hello world')) -// foo this is hex: 68656c6c6f20776f726c6421 +0ms -``` - - -## Browser Support - -You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), -or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), -if you don't want to build it yourself. - -Debug's enable state is currently persisted by `localStorage`. -Consider the situation shown below where you have `worker:a` and `worker:b`, -and wish to debug both. You can enable this using `localStorage.debug`: - -```js -localStorage.debug = 'worker:*' -``` - -And then refresh the page. - -```js -a = debug('worker:a'); -b = debug('worker:b'); - -setInterval(function(){ - a('doing some work'); -}, 1000); - -setInterval(function(){ - b('doing some work'); -}, 1200); -``` - -In Chromium-based web browsers (e.g. Brave, Chrome, and Electron), the JavaScript console will—by default—only show messages logged by `debug` if the "Verbose" log level is _enabled_. - - - -## Output streams - - By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: - -Example [_stdout.js_](./examples/node/stdout.js): - -```js -var debug = require('debug'); -var error = debug('app:error'); - -// by default stderr is used -error('goes to stderr!'); - -var log = debug('app:log'); -// set this namespace to log via console.log -log.log = console.log.bind(console); // don't forget to bind to console! -log('goes to stdout'); -error('still goes to stderr!'); - -// set all output to go via console.info -// overrides all per-namespace log settings -debug.log = console.info.bind(console); -error('now goes to stdout via console.info'); -log('still goes to stdout, but via console.info now'); -``` - -## Extend -You can simply extend debugger -```js -const log = require('debug')('auth'); - -//creates new debug instance with extended namespace -const logSign = log.extend('sign'); -const logLogin = log.extend('login'); - -log('hello'); // auth hello -logSign('hello'); //auth:sign hello -logLogin('hello'); //auth:login hello -``` - -## Set dynamically - -You can also enable debug dynamically by calling the `enable()` method : - -```js -let debug = require('debug'); - -console.log(1, debug.enabled('test')); - -debug.enable('test'); -console.log(2, debug.enabled('test')); - -debug.disable(); -console.log(3, debug.enabled('test')); - -``` - -print : -``` -1 false -2 true -3 false -``` - -Usage : -`enable(namespaces)` -`namespaces` can include modes separated by a colon and wildcards. - -Note that calling `enable()` completely overrides previously set DEBUG variable : - -``` -$ DEBUG=foo node -e 'var dbg = require("debug"); dbg.enable("bar"); console.log(dbg.enabled("foo"))' -=> false -``` - -`disable()` - -Will disable all namespaces. The functions returns the namespaces currently -enabled (and skipped). This can be useful if you want to disable debugging -temporarily without knowing what was enabled to begin with. - -For example: - -```js -let debug = require('debug'); -debug.enable('foo:*,-foo:bar'); -let namespaces = debug.disable(); -debug.enable(namespaces); -``` - -Note: There is no guarantee that the string will be identical to the initial -enable string, but semantically they will be identical. - -## Checking whether a debug target is enabled - -After you've created a debug instance, you can determine whether or not it is -enabled by checking the `enabled` property: - -```javascript -const debug = require('debug')('http'); - -if (debug.enabled) { - // do stuff... -} -``` - -You can also manually toggle this property to force the debug instance to be -enabled or disabled. - -## Usage in child processes - -Due to the way `debug` detects if the output is a TTY or not, colors are not shown in child processes when `stderr` is piped. A solution is to pass the `DEBUG_COLORS=1` environment variable to the child process. -For example: - -```javascript -worker = fork(WORKER_WRAP_PATH, [workerPath], { - stdio: [ - /* stdin: */ 0, - /* stdout: */ 'pipe', - /* stderr: */ 'pipe', - 'ipc', - ], - env: Object.assign({}, process.env, { - DEBUG_COLORS: 1 // without this settings, colors won't be shown - }), -}); - -worker.stderr.pipe(process.stderr, { end: false }); -``` - - -## Authors - - - TJ Holowaychuk - - Nathan Rajlich - - Andrew Rhyne - - Josh Junon - -## Backers - -Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Sponsors - -Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## License - -(The MIT License) - -Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca> -Copyright (c) 2018-2021 Josh Junon - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/debug/package.json b/sdks/nodejs/node_modules/debug/package.json deleted file mode 100644 index ee8abb5..0000000 --- a/sdks/nodejs/node_modules/debug/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "debug", - "version": "4.4.3", - "repository": { - "type": "git", - "url": "git://github.com/debug-js/debug.git" - }, - "description": "Lightweight debugging utility for Node.js and the browser", - "keywords": [ - "debug", - "log", - "debugger" - ], - "files": [ - "src", - "LICENSE", - "README.md" - ], - "author": "Josh Junon (https://github.com/qix-)", - "contributors": [ - "TJ Holowaychuk ", - "Nathan Rajlich (http://n8.io)", - "Andrew Rhyne " - ], - "license": "MIT", - "scripts": { - "lint": "xo", - "test": "npm run test:node && npm run test:browser && npm run lint", - "test:node": "mocha test.js test.node.js", - "test:browser": "karma start --single-run", - "test:coverage": "cat ./coverage/lcov.info | coveralls" - }, - "dependencies": { - "ms": "^2.1.3" - }, - "devDependencies": { - "brfs": "^2.0.1", - "browserify": "^16.2.3", - "coveralls": "^3.0.2", - "karma": "^3.1.4", - "karma-browserify": "^6.0.0", - "karma-chrome-launcher": "^2.2.0", - "karma-mocha": "^1.3.0", - "mocha": "^5.2.0", - "mocha-lcov-reporter": "^1.2.0", - "sinon": "^14.0.0", - "xo": "^0.23.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - }, - "main": "./src/index.js", - "browser": "./src/browser.js", - "engines": { - "node": ">=6.0" - }, - "xo": { - "rules": { - "import/extensions": "off" - } - } -} diff --git a/sdks/nodejs/node_modules/debug/src/browser.js b/sdks/nodejs/node_modules/debug/src/browser.js deleted file mode 100644 index 5993451..0000000 --- a/sdks/nodejs/node_modules/debug/src/browser.js +++ /dev/null @@ -1,272 +0,0 @@ -/* eslint-env browser */ - -/** - * This is the web browser implementation of `debug()`. - */ - -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = localstorage(); -exports.destroy = (() => { - let warned = false; - - return () => { - if (!warned) { - warned = true; - console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); - } - }; -})(); - -/** - * Colors. - */ - -exports.colors = [ - '#0000CC', - '#0000FF', - '#0033CC', - '#0033FF', - '#0066CC', - '#0066FF', - '#0099CC', - '#0099FF', - '#00CC00', - '#00CC33', - '#00CC66', - '#00CC99', - '#00CCCC', - '#00CCFF', - '#3300CC', - '#3300FF', - '#3333CC', - '#3333FF', - '#3366CC', - '#3366FF', - '#3399CC', - '#3399FF', - '#33CC00', - '#33CC33', - '#33CC66', - '#33CC99', - '#33CCCC', - '#33CCFF', - '#6600CC', - '#6600FF', - '#6633CC', - '#6633FF', - '#66CC00', - '#66CC33', - '#9900CC', - '#9900FF', - '#9933CC', - '#9933FF', - '#99CC00', - '#99CC33', - '#CC0000', - '#CC0033', - '#CC0066', - '#CC0099', - '#CC00CC', - '#CC00FF', - '#CC3300', - '#CC3333', - '#CC3366', - '#CC3399', - '#CC33CC', - '#CC33FF', - '#CC6600', - '#CC6633', - '#CC9900', - '#CC9933', - '#CCCC00', - '#CCCC33', - '#FF0000', - '#FF0033', - '#FF0066', - '#FF0099', - '#FF00CC', - '#FF00FF', - '#FF3300', - '#FF3333', - '#FF3366', - '#FF3399', - '#FF33CC', - '#FF33FF', - '#FF6600', - '#FF6633', - '#FF9900', - '#FF9933', - '#FFCC00', - '#FFCC33' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -// eslint-disable-next-line complexity -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { - return true; - } - - // Internet Explorer and Edge do not support colors. - if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; - } - - let m; - - // Is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - // eslint-disable-next-line no-return-assign - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // Is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // Is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) || - // Double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs(args) { - args[0] = (this.useColors ? '%c' : '') + - this.namespace + - (this.useColors ? ' %c' : ' ') + - args[0] + - (this.useColors ? '%c ' : ' ') + - '+' + module.exports.humanize(this.diff); - - if (!this.useColors) { - return; - } - - const c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit'); - - // The final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - let index = 0; - let lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, match => { - if (match === '%%') { - return; - } - index++; - if (match === '%c') { - // We only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); -} - -/** - * Invokes `console.debug()` when available. - * No-op when `console.debug` is not a "function". - * If `console.debug` is not available, falls back - * to `console.log`. - * - * @api public - */ -exports.log = console.debug || console.log || (() => {}); - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - try { - if (namespaces) { - exports.storage.setItem('debug', namespaces); - } else { - exports.storage.removeItem('debug'); - } - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ -function load() { - let r; - try { - r = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ; - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } - - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } - - return r; -} - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage() { - try { - // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context - // The Browser also has localStorage in the global context. - return localStorage; - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -module.exports = require('./common')(exports); - -const {formatters} = module.exports; - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -formatters.j = function (v) { - try { - return JSON.stringify(v); - } catch (error) { - return '[UnexpectedJSONParseError]: ' + error.message; - } -}; diff --git a/sdks/nodejs/node_modules/debug/src/common.js b/sdks/nodejs/node_modules/debug/src/common.js deleted file mode 100644 index 141cb57..0000000 --- a/sdks/nodejs/node_modules/debug/src/common.js +++ /dev/null @@ -1,292 +0,0 @@ - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - */ - -function setup(env) { - createDebug.debug = createDebug; - createDebug.default = createDebug; - createDebug.coerce = coerce; - createDebug.disable = disable; - createDebug.enable = enable; - createDebug.enabled = enabled; - createDebug.humanize = require('ms'); - createDebug.destroy = destroy; - - Object.keys(env).forEach(key => { - createDebug[key] = env[key]; - }); - - /** - * The currently active debug mode names, and names to skip. - */ - - createDebug.names = []; - createDebug.skips = []; - - /** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - createDebug.formatters = {}; - - /** - * Selects a color for a debug namespace - * @param {String} namespace The namespace string for the debug instance to be colored - * @return {Number|String} An ANSI color code for the given namespace - * @api private - */ - function selectColor(namespace) { - let hash = 0; - - for (let i = 0; i < namespace.length; i++) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; - } - createDebug.selectColor = selectColor; - - /** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - function createDebug(namespace) { - let prevTime; - let enableOverride = null; - let namespacesCache; - let enabledCache; - - function debug(...args) { - // Disabled? - if (!debug.enabled) { - return; - } - - const self = debug; - - // Set `diff` timestamp - const curr = Number(new Date()); - const ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - args[0] = createDebug.coerce(args[0]); - - if (typeof args[0] !== 'string') { - // Anything else let's inspect with %O - args.unshift('%O'); - } - - // Apply any `formatters` transformations - let index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { - // If we encounter an escaped % then don't increase the array index - if (match === '%%') { - return '%'; - } - index++; - const formatter = createDebug.formatters[format]; - if (typeof formatter === 'function') { - const val = args[index]; - match = formatter.call(self, val); - - // Now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // Apply env-specific formatting (colors, etc.) - createDebug.formatArgs.call(self, args); - - const logFn = self.log || createDebug.log; - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.useColors = createDebug.useColors(); - debug.color = createDebug.selectColor(namespace); - debug.extend = extend; - debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. - - Object.defineProperty(debug, 'enabled', { - enumerable: true, - configurable: false, - get: () => { - if (enableOverride !== null) { - return enableOverride; - } - if (namespacesCache !== createDebug.namespaces) { - namespacesCache = createDebug.namespaces; - enabledCache = createDebug.enabled(namespace); - } - - return enabledCache; - }, - set: v => { - enableOverride = v; - } - }); - - // Env-specific initialization logic for debug instances - if (typeof createDebug.init === 'function') { - createDebug.init(debug); - } - - return debug; - } - - function extend(namespace, delimiter) { - const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); - newDebug.log = this.log; - return newDebug; - } - - /** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - function enable(namespaces) { - createDebug.save(namespaces); - createDebug.namespaces = namespaces; - - createDebug.names = []; - createDebug.skips = []; - - const split = (typeof namespaces === 'string' ? namespaces : '') - .trim() - .replace(/\s+/g, ',') - .split(',') - .filter(Boolean); - - for (const ns of split) { - if (ns[0] === '-') { - createDebug.skips.push(ns.slice(1)); - } else { - createDebug.names.push(ns); - } - } - } - - /** - * Checks if the given string matches a namespace template, honoring - * asterisks as wildcards. - * - * @param {String} search - * @param {String} template - * @return {Boolean} - */ - function matchesTemplate(search, template) { - let searchIndex = 0; - let templateIndex = 0; - let starIndex = -1; - let matchIndex = 0; - - while (searchIndex < search.length) { - if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) { - // Match character or proceed with wildcard - if (template[templateIndex] === '*') { - starIndex = templateIndex; - matchIndex = searchIndex; - templateIndex++; // Skip the '*' - } else { - searchIndex++; - templateIndex++; - } - } else if (starIndex !== -1) { // eslint-disable-line no-negated-condition - // Backtrack to the last '*' and try to match more characters - templateIndex = starIndex + 1; - matchIndex++; - searchIndex = matchIndex; - } else { - return false; // No match - } - } - - // Handle trailing '*' in template - while (templateIndex < template.length && template[templateIndex] === '*') { - templateIndex++; - } - - return templateIndex === template.length; - } - - /** - * Disable debug output. - * - * @return {String} namespaces - * @api public - */ - function disable() { - const namespaces = [ - ...createDebug.names, - ...createDebug.skips.map(namespace => '-' + namespace) - ].join(','); - createDebug.enable(''); - return namespaces; - } - - /** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - function enabled(name) { - for (const skip of createDebug.skips) { - if (matchesTemplate(name, skip)) { - return false; - } - } - - for (const ns of createDebug.names) { - if (matchesTemplate(name, ns)) { - return true; - } - } - - return false; - } - - /** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - function coerce(val) { - if (val instanceof Error) { - return val.stack || val.message; - } - return val; - } - - /** - * XXX DO NOT USE. This is a temporary stub function. - * XXX It WILL be removed in the next major release. - */ - function destroy() { - console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); - } - - createDebug.enable(createDebug.load()); - - return createDebug; -} - -module.exports = setup; diff --git a/sdks/nodejs/node_modules/debug/src/index.js b/sdks/nodejs/node_modules/debug/src/index.js deleted file mode 100644 index bf4c57f..0000000 --- a/sdks/nodejs/node_modules/debug/src/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Detect Electron renderer / nwjs process, which is node, but we should - * treat as a browser. - */ - -if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { - module.exports = require('./browser.js'); -} else { - module.exports = require('./node.js'); -} diff --git a/sdks/nodejs/node_modules/debug/src/node.js b/sdks/nodejs/node_modules/debug/src/node.js deleted file mode 100644 index 715560a..0000000 --- a/sdks/nodejs/node_modules/debug/src/node.js +++ /dev/null @@ -1,263 +0,0 @@ -/** - * Module dependencies. - */ - -const tty = require('tty'); -const util = require('util'); - -/** - * This is the Node.js implementation of `debug()`. - */ - -exports.init = init; -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.destroy = util.deprecate( - () => {}, - 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' -); - -/** - * Colors. - */ - -exports.colors = [6, 2, 3, 4, 5, 1]; - -try { - // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) - // eslint-disable-next-line import/no-extraneous-dependencies - const supportsColor = require('supports-color'); - - if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { - exports.colors = [ - 20, - 21, - 26, - 27, - 32, - 33, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 56, - 57, - 62, - 63, - 68, - 69, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 92, - 93, - 98, - 99, - 112, - 113, - 128, - 129, - 134, - 135, - 148, - 149, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 178, - 179, - 184, - 185, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 214, - 215, - 220, - 221 - ]; - } -} catch (error) { - // Swallow - we only care if `supports-color` is available; it doesn't have to be. -} - -/** - * Build up the default `inspectOpts` object from the environment variables. - * - * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js - */ - -exports.inspectOpts = Object.keys(process.env).filter(key => { - return /^debug_/i.test(key); -}).reduce((obj, key) => { - // Camel-case - const prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, (_, k) => { - return k.toUpperCase(); - }); - - // Coerce string value into JS value - let val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) { - val = true; - } else if (/^(no|off|false|disabled)$/i.test(val)) { - val = false; - } else if (val === 'null') { - val = null; - } else { - val = Number(val); - } - - obj[prop] = val; - return obj; -}, {}); - -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ - -function useColors() { - return 'colors' in exports.inspectOpts ? - Boolean(exports.inspectOpts.colors) : - tty.isatty(process.stderr.fd); -} - -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ - -function formatArgs(args) { - const {namespace: name, useColors} = this; - - if (useColors) { - const c = this.color; - const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); - const prefix = ` ${colorCode};1m${name} \u001B[0m`; - - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); - } else { - args[0] = getDate() + name + ' ' + args[0]; - } -} - -function getDate() { - if (exports.inspectOpts.hideDate) { - return ''; - } - return new Date().toISOString() + ' '; -} - -/** - * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr. - */ - -function log(...args) { - return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n'); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - if (namespaces) { - process.env.DEBUG = namespaces; - } else { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - return process.env.DEBUG; -} - -/** - * Init logic for `debug` instances. - * - * Create a new `inspectOpts` object in case `useColors` is set - * differently for a particular `debug` instance. - */ - -function init(debug) { - debug.inspectOpts = {}; - - const keys = Object.keys(exports.inspectOpts); - for (let i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } -} - -module.exports = require('./common')(exports); - -const {formatters} = module.exports; - -/** - * Map %o to `util.inspect()`, all on a single line. - */ - -formatters.o = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .split('\n') - .map(str => str.trim()) - .join(' '); -}; - -/** - * Map %O to `util.inspect()`, allowing multiple lines if needed. - */ - -formatters.O = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; diff --git a/sdks/nodejs/node_modules/emnapi/CMakeLists.txt b/sdks/nodejs/node_modules/emnapi/CMakeLists.txt deleted file mode 100644 index 2ebfe7b..0000000 --- a/sdks/nodejs/node_modules/emnapi/CMakeLists.txt +++ /dev/null @@ -1,314 +0,0 @@ -cmake_minimum_required(VERSION 3.13) - -project(emnapi LANGUAGES C ASM) - -option(EMNAPI_INSTALL_SRC "EMNAPI_INSTALL_SRC" OFF) -option(EMNAPI_FIND_NODE_ADDON_API "EMNAPI_FIND_NODE_ADDON_API" OFF) - -if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") - set(IS_EMSCRIPTEN ON) -else() - set(IS_EMSCRIPTEN OFF) -endif() - -if((CMAKE_C_COMPILER_TARGET STREQUAL "wasm32") OR (CMAKE_C_COMPILER_TARGET STREQUAL "wasm32-unknown-unknown")) - set(IS_WASM32 ON) -else() - set(IS_WASM32 OFF) -endif() - -if((CMAKE_C_COMPILER_TARGET STREQUAL "wasm32-wasi") OR (CMAKE_C_COMPILER_TARGET STREQUAL "wasm32-wasip1")) - set(IS_WASM32_WASIP1 ON) -else() - set(IS_WASM32_WASIP1 OFF) -endif() - -if((CMAKE_C_COMPILER_TARGET STREQUAL "wasm32-wasi-threads") OR (CMAKE_C_COMPILER_TARGET STREQUAL "wasm32-wasip1-threads")) - set(IS_WASM32_WASIP1_THREADS ON) -else() - set(IS_WASM32_WASIP1_THREADS OFF) -endif() - -set(UV_SRC - "${CMAKE_CURRENT_SOURCE_DIR}/src/uv/uv-common.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/uv/threadpool.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/uv/unix/loop.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/uv/unix/posix-hrtime.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/uv/unix/thread.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/uv/unix/async.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/uv/unix/core.c" -) - -set(ENAPI_BASIC_SRC - "${CMAKE_CURRENT_SOURCE_DIR}/src/js_native_api.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/node_api.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/async_cleanup_hook.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/async_context.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/wasi_wait.c" -) -set(EMNAPI_THREADS_SRC - "${CMAKE_CURRENT_SOURCE_DIR}/src/async_work.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/threadsafe_function.c" -) -set(EMNAPI_SRC ${ENAPI_BASIC_SRC} ${EMNAPI_THREADS_SRC}) - -set(EMNAPI_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/include/node") -set(EMNAPI_DEFINES "BUILDING_NODE_EXTENSION") - -set(EMNAPI_JS_LIB "${CMAKE_CURRENT_SOURCE_DIR}/dist/library_napi.js") - -if(IS_EMSCRIPTEN) - set(EMNAPI_MT_CFLAGS "-pthread" "-sWASM_WORKERS=1") - - # https://github.com/emscripten-core/emscripten/issues/20035 - # https://github.com/emscripten-core/emscripten/pull/20130 - list(APPEND EMNAPI_DEFINES "NAPI_EXTERN=__attribute__((__import_module__(\"env\")))") -else() - set(EMNAPI_MT_CFLAGS "-pthread") -endif() - -set(EMNAPI_BASIC_TARGET_NAME "emnapi-basic") -set(EMNAPI_BASIC_MT_TARGET_NAME "emnapi-basic-mt") -set(EMNAPI_TARGET_NAME "emnapi") -set(EMNAPI_MT_TARGET_NAME "emnapi-mt") - -set(EMNAPI_BASIC_NAPI_RS_MT_TARGET_NAME "emnapi-basic-napi-rs-mt") -set(EMNAPI_NAPI_RS_MT_TARGET_NAME "emnapi-napi-rs-mt") - -set(DLMALLOC_TARGET_NAME "dlmalloc") -set(DLMALLOC_MT_TARGET_NAME "dlmalloc-mt") -set(EMMALLOC_TARGET_NAME "emmalloc") -set(EMMALLOC_MT_TARGET_NAME "emmalloc-mt") - -if(EMNAPI_FIND_NODE_ADDON_API) - execute_process( - COMMAND "node" "-p" "require('node-addon-api').include" - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - OUTPUT_VARIABLE OUTPUT_NAA_INCLUDE_DIR - ERROR_VARIABLE ERROR_NAA_INCLUDE_DIR - ) - if(NOT (ERROR_NAA_INCLUDE_DIR STREQUAL "")) - message(WARNING "Cannot find module 'node-addon-api'") - else() - string(REGEX REPLACE "(\r?\n)|\"" "" OUTPUT_NAA_INCLUDE_DIR "${OUTPUT_NAA_INCLUDE_DIR}") - string(REPLACE "\\" "/" OUTPUT_NAA_INCLUDE_DIR "${OUTPUT_NAA_INCLUDE_DIR}") - list(APPEND EMNAPI_INCLUDE "${OUTPUT_NAA_INCLUDE_DIR}") - endif() -endif() - -if(IS_WASM32) - set(MALLOC_PUBLIC_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/src/malloc/sbrk.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/malloc/memcpy.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/malloc/memset.c" - ) - add_library(${DLMALLOC_TARGET_NAME} STATIC - ${MALLOC_PUBLIC_SOURCES} - "${CMAKE_CURRENT_SOURCE_DIR}/src/malloc/dlmalloc/dlmalloc.c" - ) - target_compile_definitions(${DLMALLOC_TARGET_NAME} PRIVATE "PAGESIZE=65536") - - add_library(${DLMALLOC_MT_TARGET_NAME} STATIC - ${MALLOC_PUBLIC_SOURCES} - "${CMAKE_CURRENT_SOURCE_DIR}/src/malloc/dlmalloc/dlmalloc.c" - ) - target_compile_options(${DLMALLOC_MT_TARGET_NAME} PUBLIC "-matomics" "-mbulk-memory") - target_compile_definitions(${DLMALLOC_MT_TARGET_NAME} PRIVATE "PAGESIZE=65536" "USE_LOCKS=1") - - add_library(${EMMALLOC_TARGET_NAME} STATIC - ${MALLOC_PUBLIC_SOURCES} - "${CMAKE_CURRENT_SOURCE_DIR}/src/malloc/emmalloc/emmalloc.c" - ) - target_compile_options(${EMMALLOC_TARGET_NAME} PRIVATE "-fno-strict-aliasing") - target_compile_definitions(${EMMALLOC_TARGET_NAME} PRIVATE "PAGESIZE=65536") - - add_library(${EMMALLOC_MT_TARGET_NAME} STATIC - ${MALLOC_PUBLIC_SOURCES} - "${CMAKE_CURRENT_SOURCE_DIR}/src/malloc/emmalloc/emmalloc.c" - ) - target_compile_options(${EMMALLOC_MT_TARGET_NAME} PRIVATE "-fno-strict-aliasing") - target_compile_options(${EMMALLOC_MT_TARGET_NAME} PUBLIC "-matomics" "-mbulk-memory") - target_compile_definitions(${EMMALLOC_MT_TARGET_NAME} PRIVATE "PAGESIZE=65536" "__EMSCRIPTEN_SHARED_MEMORY__=1") -endif() - -if(NAPI_VERSION) - add_compile_definitions("NAPI_VERSION=${NAPI_VERSION}") -endif() -if(NAPI_EXPERIMENTAL) - add_compile_definitions("NAPI_EXPERIMENTAL=${NAPI_EXPERIMENTAL}") -endif() -if(NODE_API_EXPERIMENTAL_NO_WARNING) - add_compile_definitions("NODE_API_EXPERIMENTAL_NO_WARNING=${NODE_API_EXPERIMENTAL_NO_WARNING}") -endif() -if(NODE_WANT_INTERNALS) - add_compile_definitions("NODE_WANT_INTERNALS=${NODE_WANT_INTERNALS}") -endif() - -add_library(${EMNAPI_TARGET_NAME} STATIC ${EMNAPI_SRC} ${UV_SRC}) -target_include_directories(${EMNAPI_TARGET_NAME} PUBLIC ${EMNAPI_INCLUDE}) -target_compile_definitions(${EMNAPI_TARGET_NAME} PUBLIC ${EMNAPI_DEFINES}) -if(IS_EMSCRIPTEN) - set_target_properties(${EMNAPI_TARGET_NAME} PROPERTIES INTERFACE_LINK_DEPENDS ${EMNAPI_JS_LIB}) - target_link_options(${EMNAPI_TARGET_NAME} INTERFACE "--js-library=${EMNAPI_JS_LIB}") -endif() - -add_library(${EMNAPI_BASIC_TARGET_NAME} STATIC ${ENAPI_BASIC_SRC}) -target_include_directories(${EMNAPI_BASIC_TARGET_NAME} PUBLIC ${EMNAPI_INCLUDE}) -target_compile_definitions(${EMNAPI_BASIC_TARGET_NAME} - PUBLIC ${EMNAPI_DEFINES} - PRIVATE "EMNAPI_DISABLE_UV" -) -if(IS_EMSCRIPTEN) - set_target_properties(${EMNAPI_BASIC_TARGET_NAME} PROPERTIES INTERFACE_LINK_DEPENDS ${EMNAPI_JS_LIB}) - target_link_options(${EMNAPI_BASIC_TARGET_NAME} INTERFACE "--js-library=${EMNAPI_JS_LIB}") -endif() - -if(IS_WASM32 OR IS_WASM32_WASIP1 OR IS_WASM32_WASIP1_THREADS) - set(EMNAPI_BUILD_BASIC_MT ON) -else() - set(EMNAPI_BUILD_BASIC_MT OFF) -endif() - -if(IS_WASM32_WASIP1_THREADS) - set(EMNAPI_BUILD_FOR_NAPI_RS ON) -else() - set(EMNAPI_BUILD_FOR_NAPI_RS OFF) -endif() - -if(EMNAPI_BUILD_FOR_NAPI_RS) - add_library(${EMNAPI_NAPI_RS_MT_TARGET_NAME} STATIC ${EMNAPI_SRC} ${UV_SRC}) - target_include_directories(${EMNAPI_NAPI_RS_MT_TARGET_NAME} PUBLIC ${EMNAPI_INCLUDE}) - target_compile_definitions(${EMNAPI_NAPI_RS_MT_TARGET_NAME} - PUBLIC ${EMNAPI_DEFINES} "NAPI_EXTERN=__attribute__((__import_module__(\"env\")))" - ) - - add_library(${EMNAPI_BASIC_NAPI_RS_MT_TARGET_NAME} STATIC - ${ENAPI_BASIC_SRC} - "${CMAKE_CURRENT_SOURCE_DIR}/src/thread/async_worker_create.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/thread/async_worker_init.S" - ) - target_include_directories(${EMNAPI_BASIC_NAPI_RS_MT_TARGET_NAME} PUBLIC ${EMNAPI_INCLUDE}) - target_compile_definitions(${EMNAPI_BASIC_NAPI_RS_MT_TARGET_NAME} - PUBLIC ${EMNAPI_DEFINES} "NAPI_EXTERN=__attribute__((__import_module__(\"env\")))" - PRIVATE "EMNAPI_DISABLE_UV" - ) -endif() - -if(EMNAPI_BUILD_BASIC_MT) - add_library(${EMNAPI_BASIC_MT_TARGET_NAME} STATIC - ${ENAPI_BASIC_SRC} - "${CMAKE_CURRENT_SOURCE_DIR}/src/thread/async_worker_create.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/thread/async_worker_init.S" - ) - target_compile_options(${EMNAPI_BASIC_MT_TARGET_NAME} PUBLIC "-matomics" "-mbulk-memory") - target_include_directories(${EMNAPI_BASIC_MT_TARGET_NAME} PUBLIC ${EMNAPI_INCLUDE}) - target_compile_definitions(${EMNAPI_BASIC_MT_TARGET_NAME} - PUBLIC ${EMNAPI_DEFINES} - PRIVATE "EMNAPI_DISABLE_UV" - ) - - if(IS_EMSCRIPTEN) - set_target_properties(${EMNAPI_BASIC_MT_TARGET_NAME} PROPERTIES INTERFACE_LINK_DEPENDS ${EMNAPI_JS_LIB}) - target_link_options(${EMNAPI_BASIC_MT_TARGET_NAME} INTERFACE "--js-library=${EMNAPI_JS_LIB}") - endif() -endif() - -if(IS_EMSCRIPTEN OR IS_WASM32_WASIP1_THREADS) - set(EMNAPI_BUILD_MT ON) -else() - set(EMNAPI_BUILD_MT OFF) -endif() - -if(EMNAPI_BUILD_MT) - add_library(${EMNAPI_MT_TARGET_NAME} STATIC ${EMNAPI_SRC} ${UV_SRC}) - target_compile_options(${EMNAPI_MT_TARGET_NAME} - PUBLIC "-matomics" "-mbulk-memory" - PRIVATE ${EMNAPI_MT_CFLAGS} - ) - target_include_directories(${EMNAPI_MT_TARGET_NAME} PUBLIC ${EMNAPI_INCLUDE}) - target_compile_definitions(${EMNAPI_MT_TARGET_NAME} PUBLIC ${EMNAPI_DEFINES}) - if(IS_EMSCRIPTEN) - set_target_properties(${EMNAPI_MT_TARGET_NAME} PROPERTIES INTERFACE_LINK_DEPENDS ${EMNAPI_JS_LIB}) - target_link_options(${EMNAPI_MT_TARGET_NAME} INTERFACE "--js-library=${EMNAPI_JS_LIB}") - endif() - if(EMNAPI_WORKER_POOL_SIZE) - target_compile_definitions(${EMNAPI_MT_TARGET_NAME} PRIVATE "EMNAPI_WORKER_POOL_SIZE=${EMNAPI_WORKER_POOL_SIZE}") - endif() - if(EMNAPI_NEXTTICK_TYPE) - target_compile_definitions(${EMNAPI_MT_TARGET_NAME} PRIVATE "EMNAPI_NEXTTICK_TYPE=${EMNAPI_NEXTTICK_TYPE}") - endif() - if(EMNAPI_USE_PROXYING) - target_compile_definitions(${EMNAPI_MT_TARGET_NAME} PRIVATE "EMNAPI_USE_PROXYING=${EMNAPI_USE_PROXYING}") - endif() -endif() - -if(IS_EMSCRIPTEN) - set(LIB_ARCH "${CMAKE_LIBRARY_ARCHITECTURE}") -else() - set(LIB_ARCH "${CMAKE_C_COMPILER_TARGET}") -endif() - -# install(TARGETS ${EMNAPI_TARGET_NAME} DESTINATION "lib/${PROJECT_NAME}") -# if(EMNAPI_BUILD_MT) -# install(TARGETS ${EMNAPI_MT_TARGET_NAME} DESTINATION "lib/${PROJECT_NAME}") -# endif() -if(LIB_ARCH) - install(TARGETS ${EMNAPI_TARGET_NAME} DESTINATION "lib/${LIB_ARCH}") - install(TARGETS ${EMNAPI_BASIC_TARGET_NAME} DESTINATION "lib/${LIB_ARCH}") - if(EMNAPI_BUILD_MT) - install(TARGETS ${EMNAPI_MT_TARGET_NAME} DESTINATION "lib/${LIB_ARCH}") - endif() - if(EMNAPI_BUILD_BASIC_MT) - install(TARGETS ${EMNAPI_BASIC_MT_TARGET_NAME} DESTINATION "lib/${LIB_ARCH}") - endif() - if(EMNAPI_BUILD_FOR_NAPI_RS) - install(TARGETS ${EMNAPI_NAPI_RS_MT_TARGET_NAME} DESTINATION "lib/${LIB_ARCH}") - install(TARGETS ${EMNAPI_BASIC_NAPI_RS_MT_TARGET_NAME} DESTINATION "lib/${LIB_ARCH}") - endif() - if(IS_WASM32) - install(TARGETS ${DLMALLOC_TARGET_NAME} DESTINATION "lib/${LIB_ARCH}") - install(TARGETS ${DLMALLOC_MT_TARGET_NAME} DESTINATION "lib/${LIB_ARCH}") - install(TARGETS ${EMMALLOC_TARGET_NAME} DESTINATION "lib/${LIB_ARCH}") - install(TARGETS ${EMMALLOC_MT_TARGET_NAME} DESTINATION "lib/${LIB_ARCH}") - endif() -endif() - -install(FILES - ${CMAKE_CURRENT_SOURCE_DIR}/common.gypi - ${CMAKE_CURRENT_SOURCE_DIR}/emnapi.gyp - DESTINATION ".") - -install(FILES - ${CMAKE_CURRENT_SOURCE_DIR}/include/node/emnapi_common.h - ${CMAKE_CURRENT_SOURCE_DIR}/include/node/emnapi.h - ${CMAKE_CURRENT_SOURCE_DIR}/include/node/js_native_api_types.h - ${CMAKE_CURRENT_SOURCE_DIR}/include/node/js_native_api.h - ${CMAKE_CURRENT_SOURCE_DIR}/include/node/node_api_types.h - ${CMAKE_CURRENT_SOURCE_DIR}/include/node/node_api.h - ${CMAKE_CURRENT_SOURCE_DIR}/include/node/uv.h - ${CMAKE_CURRENT_SOURCE_DIR}/include/node/config.gypi - DESTINATION "include/node") - -install(DIRECTORY - ${CMAKE_CURRENT_SOURCE_DIR}/include/node/uv - DESTINATION "include/node") - -install(FILES - ${CMAKE_CURRENT_SOURCE_DIR}/dist/library_napi.js - DESTINATION "dist") - -if(EMNAPI_INSTALL_SRC) - install(FILES - ${EMNAPI_SRC} - "${CMAKE_CURRENT_SOURCE_DIR}/src/emnapi_internal.h" - DESTINATION "src") - install(DIRECTORY - ${CMAKE_CURRENT_SOURCE_DIR}/src/uv - DESTINATION "src") - install(DIRECTORY - ${CMAKE_CURRENT_SOURCE_DIR}/src/malloc - DESTINATION "src") - install(DIRECTORY - ${CMAKE_CURRENT_SOURCE_DIR}/src/thread - DESTINATION "src") -endif() diff --git a/sdks/nodejs/node_modules/emnapi/LICENSE b/sdks/nodejs/node_modules/emnapi/LICENSE deleted file mode 100644 index 05a5944..0000000 --- a/sdks/nodejs/node_modules/emnapi/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021-present Toyobayashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/emnapi/README.md b/sdks/nodejs/node_modules/emnapi/README.md deleted file mode 100644 index b8a4a5b..0000000 --- a/sdks/nodejs/node_modules/emnapi/README.md +++ /dev/null @@ -1,1124 +0,0 @@ -# emnapi - -

- emnapi logo -

- -## Sponsors - -

- - - -

- -[![Build](https://github.com/toyobayashi/emnapi/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/toyobayashi/emnapi/actions/workflows/main.yml) - -[Node-API](https://nodejs.org/docs/latest/api/n-api.html) implementation for [Emscripten](https://emscripten.org/index.html), [wasi-sdk](https://github.com/WebAssembly/wasi-sdk) and clang with wasm support. - -This project aims to - -- Help users port their or existing Node-API native addons to wasm with code change as less as possible. -- Make runtime behavior matches native Node.js as much as possible. - -This project also powers the WebAssembly feature for [napi-rs](https://github.com/napi-rs/napi-rs), and enables many Node.js native addons to run on [StackBlitz](https://stackblitz.com)'s WebContainer. - -[Node-API changes](https://github.com/nodejs/node/pulls?q=is%3Apr+label%3Anode-api+) will be synchronized into this repo. - -See documentation for more details: -- [https://toyobayashi.github.io/emnapi-docs/guide/](https://toyobayashi.github.io/emnapi-docs/guide/) -- [https://emnapi-docs.vercel.app/guide/](https://emnapi-docs.vercel.app/guide/) - -中文文档: -- [https://toyobayashi.github.io/emnapi-docs/zh/guide/](https://toyobayashi.github.io/emnapi-docs/zh/guide/) -- [https://emnapi-docs.vercel.app/zh/guide/](https://emnapi-docs.vercel.app/zh/guide/) - -[Full API List](https://toyobayashi.github.io/emnapi-docs/reference/list.html) - -[How to build Node-API official examples](https://github.com/toyobayashi/node-addon-examples) - -If you want to deep dive into WebAssembly, highly recommend you to visit [learn-wasm.dev](https://learn-wasm.dev?via=toyobayashi). - -## Prerequests - -You will need to install: - -- Node.js `>= v16.15.0` -- npm `>= v8` -- Emscripten `>= v3.1.9` / wasi-sdk / LLVM clang with wasm support -- (Optional) CMake `>= v3.13` -- (Optional) node-gyp `>= v10.2.0` -- (Optional) ninja -- (Optional) make -- (Optional) [node-addon-api](https://github.com/nodejs/node-addon-api) `>= 6.1.0` - -There are several choices to get `make` for Windows user - -- Install [mingw-w64](https://www.mingw-w64.org/downloads/), then use `mingw32-make` -- Download [MSVC prebuilt binary of GNU make](https://github.com/toyobayashi/make-win-build/releases), add to `%Path%` then rename it to `mingw32-make` -- Install [Visual Studio 2022](https://visualstudio.microsoft.com/) C++ desktop workload, use `nmake` in `Visual Studio Developer Command Prompt` -- Install [Visual C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/), use `nmake` in `Visual Studio Developer Command Prompt` - -Verify your environment: - -```bash -node -v -npm -v -emcc -v - -# clang -v -# clang -print-targets # ensure wasm32 target exists - -cmake --version - -# if you use node-gyp -node-gyp --version - -# if you use ninja -ninja --version - -# if you use make -make -v - -# if you use nmake in Visual Studio Developer Command Prompt -nmake /? -``` - -## Build from source - -You need to set `EMSDK` and `WASI_SDK_PATH` environment variables. - -```bash -git clone https://github.com/toyobayashi/emnapi.git -cd ./emnapi -npm install -g node-gyp -npm install -npm run build # output ./packages/*/dist -node ./script/release.js # output ./out - -# test -npm run rebuild:test -npm test -``` - -See [CONTRIBUTING](https://github.com/toyobayashi/emnapi/blob/main/CONTRIBUTING.md) for more details. - -## Quick Start - -### NPM Install - -```bash -npm install -D emnapi -npm install @emnapi/runtime - -# for non-emscripten -npm install @emnapi/core - -# if you use node-addon-api -npm install node-addon-api -``` - -Each package should match the same version. - -### Using C - -Create `hello.c`. - -```c -#include - -#define NODE_API_CALL(env, the_call) \ - do { \ - if ((the_call) != napi_ok) { \ - const napi_extended_error_info *error_info; \ - napi_get_last_error_info((env), &error_info); \ - bool is_pending; \ - const char* err_message = error_info->error_message; \ - napi_is_exception_pending((env), &is_pending); \ - if (!is_pending) { \ - const char* error_message = err_message != NULL ? \ - err_message : \ - "empty error message"; \ - napi_throw_error((env), NULL, error_message); \ - } \ - return NULL; \ - } \ - } while (0) - -static napi_value js_hello(napi_env env, napi_callback_info info) { - napi_value world; - const char* str = "world"; - NODE_API_CALL(env, napi_create_string_utf8(env, str, NAPI_AUTO_LENGTH, &world)); - return world; -} - -NAPI_MODULE_INIT() { - napi_value hello; - NODE_API_CALL(env, napi_create_function(env, "hello", NAPI_AUTO_LENGTH, - js_hello, NULL, &hello)); - NODE_API_CALL(env, napi_set_named_property(env, exports, "hello", hello)); - return exports; -} -``` - -The C code is equivalant to the following JavaScript: - -```js -module.exports = (function (exports) { - const hello = function hello () { - // native code in js_hello - const world = 'world' - return world - } - - exports.hello = hello - return exports -})(module.exports) -``` - -#### Building - -
-emscripten
- -```bash -emcc -O3 \ - -DBUILDING_NODE_EXTENSION \ - "-DNAPI_EXTERN=__attribute__((__import_module__(\"env\")))" \ - -I./node_modules/emnapi/include/node \ - -L./node_modules/emnapi/lib/wasm32-emscripten \ - --js-library=./node_modules/emnapi/dist/library_napi.js \ - -sEXPORTED_FUNCTIONS="['_malloc','_free','_napi_register_wasm_v1','_node_api_module_get_api_version_v1']" \ - -sEXPORTED_RUNTIME_METHODS=['emnapiInit'] \ - -o hello.js \ - hello.c \ - -lemnapi -``` - -
- -
-wasi-sdk
- -```bash -clang -O3 \ - -DBUILDING_NODE_EXTENSION \ - -I./node_modules/emnapi/include/node \ - -L./node_modules/emnapi/lib/wasm32-wasi \ - --target=wasm32-wasi \ - --sysroot=$WASI_SDK_PATH/share/wasi-sysroot \ - -mexec-model=reactor \ - -Wl,--initial-memory=16777216 \ - -Wl,--export-dynamic \ - -Wl,--export=malloc \ - -Wl,--export=free \ - -Wl,--export=napi_register_wasm_v1 \ - -Wl,--export-if-defined=node_api_module_get_api_version_v1 \ - -Wl,--import-undefined \ - -Wl,--export-table \ - -o hello.wasm \ - hello.c \ - -lemnapi -``` - -
- -
-clang wasm32
- -Choose `libdlmalloc.a` or `libemmalloc.a` for `malloc` and `free`. - -```bash -clang -O3 \ - -DBUILDING_NODE_EXTENSION \ - -I./node_modules/emnapi/include/node \ - -L./node_modules/emnapi/lib/wasm32 \ - --target=wasm32 \ - -nostdlib \ - -Wl,--no-entry \ - -Wl,--initial-memory=16777216 \ - -Wl,--export-dynamic \ - -Wl,--export=malloc \ - -Wl,--export=free \ - -Wl,--export=napi_register_wasm_v1 \ - -Wl,--export-if-defined=node_api_module_get_api_version_v1 \ - -Wl,--import-undefined \ - -Wl,--export-table \ - -o hello.wasm \ - hello.c \ - -lemnapi \ - -ldlmalloc # -lemmalloc -``` - -
- -#### Initialization - -To initialize emnapi, you need to import the emnapi runtime to create a `Context` by `createContext` or `getDefaultContext` first. -Each context owns isolated Node-API object such as `napi_env`, `napi_value`, `napi_ref`. If you have multiple emnapi modules, you should reuse the same `Context` across them. - -```ts -declare namespace emnapi { - // module '@emnapi/runtime' - export class Context { /* ... */ } - /** Create a new context */ - export function createContext (): Context - /** Create or get */ - export function getDefaultContext (): Context - // ... -} -``` - -
-emscripten
- -then call `Module.emnapiInit` after emscripten runtime initialized. -`Module.emnapiInit` only do initialization once, it will always return the same binding exports after successfully initialized. - -```ts -declare namespace Module { - interface EmnapiInitOptions { - context: emnapi.Context - - /** node_api_get_module_file_name */ - filename?: string - - /** - * Support following async_hooks related things - * on Node.js runtime only - * - * napi_async_init, - * napi_async_destroy, - * napi_make_callback, - * async resource parameter of - * napi_create_async_work and napi_create_threadsafe_function - */ - nodeBinding?: typeof import('@emnapi/node-binding') - - /** See Multithread part */ - asyncWorkPoolSize?: number - } - export function emnapiInit (options: EmnapiInitOptions): any -} -``` - -```html - - - -``` - -If you are using `Visual Studio Code` and have `Live Server` extension installed, you can right click the HTML file in Visual Studio Code source tree and click `Open With Live Server`, then you can see the hello world alert! - -Running on Node.js: - -```js -const emnapi = require('@emnapi/runtime') -const Module = require('./hello.js') - -Module.onRuntimeInitialized = function () { - let binding - try { - binding = Module.emnapiInit({ context: emnapi.getDefaultContext() }) - } catch (err) { - console.error(err) - return - } - const msg = `hello ${binding.hello()}` - console.log(msg) -} - -// if -sMODULARIZE=1 -Module({ /* Emscripten module init options */ }).then((Module) => { - const binding = Module.emnapiInit({ context: emnapi.getDefaultContext() }) -}) -``` - -
- -
-wasi-sdk or clang wasm32
- -For non-emscripten, you need to use `@emnapi/core`. The initialization is similar to emscripten. - -```html - - - -``` - -Using WASI on Node.js - -```js -const { instantiateNapiModule } = require('@emnapi/core') -const { getDefaultContext } = require('@emnapi/runtime') -const { WASI } = require('wasi') -const fs = require('fs') - -instantiateNapiModule(fs.promises.readFile('./hello.wasm'), { - wasi: new WASI({ /* ... */ }), - context: getDefaultContext(), - overwriteImports (importObject) { - // importObject.env = { - // ...importObject.env, - // ...importObject.napi, - // ...importObject.emnapi, - // // ... - // } - } -}).then(({ instance, module, napiModule }) => { - const binding = napiModule.exports - // ... -}) -``` - -Using WASI on browser, you can use WASI polyfill in [wasm-util](https://github.com/toyobayashi/wasm-util), -and [memfs-browser](https://github.com/toyobayashi/memfs-browser) - -```js -import { instantiateNapiModule } from '@emnapi/core' -import { getDefaultContext } from '@emnapi/runtime' -import { WASI } from '@tybys/wasm-util' -import { Volume, createFsFromVolume } from 'memfs-browser' - -const fs = createFsFromVolume(Volume.fromJSON({ /* ... */ })) -instantiateNapiModule(fetch('./hello.wasm'), { - wasi: new WASI({ fs, /* ... */ }) - context: getDefaultContext(), - overwriteImports (importObject) { - // importObject.env = { - // ...importObject.env, - // ...importObject.napi, - // ...importObject.emnapi, - // // ... - // } - } -}).then(({ instance, module, napiModule }) => { - const binding = napiModule.exports - // ... -}) -``` - -
- -### Using C++ and node-addon-api - -Require [`node-addon-api`](https://github.com/nodejs/node-addon-api) `>= 6.1.0` - -```bash -npm install node-addon-api -``` - -**Note: C++ wrapper can only be used to target Node.js v14.6.0+ and modern browsers those support `FinalizationRegistry` and `WeakRef` ([v8 engine v8.4+](https://v8.dev/blog/v8-release-84))!** - -Create `hello.cpp`. - -```cpp -#include - -Napi::String Method(const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - return Napi::String::New(env, "world"); -} - -Napi::Object Init(Napi::Env env, Napi::Object exports) { - exports.Set(Napi::String::New(env, "hello"), - Napi::Function::New(env, Method)).Check(); - return exports; -} - -NODE_API_MODULE(NODE_GYP_MODULE_NAME, Init) -``` - -Compile `hello.cpp` using `em++`. C++ exception is disabled by Emscripten default, and not supported by wasi-sdk, so predefine `-DNAPI_DISABLE_CPP_EXCEPTIONS` and `-DNODE_ADDON_API_ENABLE_MAYBE` here. If you would like to enable C++ exception, use `-sDISABLE_EXCEPTION_CATCHING=0` instead and remove `.Check()` call. See official documentation [here](https://github.com/nodejs/node-addon-api/blob/main/doc/error_handling.md). - -#### Building - -
-emscripten
- -```bash -em++ -O3 \ - -DBUILDING_NODE_EXTENSION \ - "-DNAPI_EXTERN=__attribute__((__import_module__(\"env\")))" \ - -DNAPI_DISABLE_CPP_EXCEPTIONS \ - -DNODE_ADDON_API_ENABLE_MAYBE \ - -I./node_modules/emnapi/include/node \ - -I./node_modules/node-addon-api \ - -L./node_modules/emnapi/lib/wasm32-emscripten \ - --js-library=./node_modules/emnapi/dist/library_napi.js \ - -sEXPORTED_FUNCTIONS="['_malloc','_free','_napi_register_wasm_v1','_node_api_module_get_api_version_v1']" \ - -sEXPORTED_RUNTIME_METHODS=['emnapiInit'] \ - -o hello.js \ - hello.cpp \ - -lemnapi -``` - -
- -
-wasi-sdk
- -```bash -clang++ -O3 \ - -DBUILDING_NODE_EXTENSION \ - -DNAPI_DISABLE_CPP_EXCEPTIONS \ - -DNODE_ADDON_API_ENABLE_MAYBE \ - -I./node_modules/emnapi/include/node \ - -I./node_modules/node-addon-api \ - -L./node_modules/emnapi/lib/wasm32-wasi \ - --target=wasm32-wasi \ - --sysroot=$WASI_SDK_PATH/share/wasi-sysroot \ - -fno-exceptions \ - -mexec-model=reactor \ - -Wl,--initial-memory=16777216 \ - -Wl,--export-dynamic \ - -Wl,--export=malloc \ - -Wl,--export=free \ - -Wl,--export=napi_register_wasm_v1 \ - -Wl,--export-if-defined=node_api_module_get_api_version_v1 \ - -Wl,--import-undefined \ - -Wl,--export-table \ - -o hello.wasm \ - hello.cpp \ - -lemnapi -``` - -
- -
-clang wasm32
- -`node-addon-api` is using the C++ standard libraries, so you must use WASI if you are using `node-addon-api`. - -You can still use `wasm32-unknown-unknown` target if you use Node-API C API only in C++. - -```bash -clang++ -O3 \ - -DBUILDING_NODE_EXTENSION \ - -I./node_modules/emnapi/include/node \ - -L./node_modules/emnapi/lib/wasm32 \ - --target=wasm32 \ - -fno-exceptions \ - -nostdlib \ - -Wl,--no-entry \ - -Wl,--initial-memory=16777216 \ - -Wl,--export-dynamic \ - -Wl,--export=malloc \ - -Wl,--export=free \ - -Wl,--export=napi_register_wasm_v1 \ - -Wl,--export-if-defined=node_api_module_get_api_version_v1 \ - -Wl,--import-undefined \ - -Wl,--export-table \ - -o node_api_c_api_only.wasm \ - node_api_c_api_only.cpp \ - -lemnapi \ - -ldlmalloc # -lemmalloc -``` - -`operator new` and `operator delete`. - -```cpp -#include - -extern "C" void* malloc(size_t size); -extern "C" void free(void* p); - -void* operator new(size_t size) { - return malloc(size); -} - -void operator delete(void* p) noexcept { - free(p); -} - -void operator delete(void* p, size_t) noexcept { - free(p); -} -``` - -
- -### Using CMake - -Create `CMakeLists.txt`. - -```cmake -cmake_minimum_required(VERSION 3.13) - -project(emnapiexample) - -add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/node_modules/emnapi") - -add_executable(hello hello.c) - -target_link_libraries(hello emnapi) -if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") - target_link_options(hello PRIVATE - "-sEXPORTED_FUNCTIONS=['_malloc','_free','_napi_register_wasm_v1','_node_api_module_get_api_version_v1']" - "-sEXPORTED_RUNTIME_METHODS=['emnapiInit']" - ) -elseif(CMAKE_SYSTEM_NAME STREQUAL "WASI") - set_target_properties(hello PROPERTIES SUFFIX ".wasm") - target_link_options(hello PRIVATE - "-mexec-model=reactor" - "-Wl,--export=napi_register_wasm_v1" - "-Wl,--export-if-defined=node_api_module_get_api_version_v1" - "-Wl,--initial-memory=16777216,--export-dynamic,--export=malloc,--export=free,--import-undefined,--export-table" - ) -elseif((CMAKE_C_COMPILER_TARGET STREQUAL "wasm32") OR (CMAKE_C_COMPILER_TARGET STREQUAL "wasm32-unknown-unknown")) - set_target_properties(hello PROPERTIES SUFFIX ".wasm") - target_link_options(hello PRIVATE - "-nostdlib" - "-Wl,--export=napi_register_wasm_v1" - "-Wl,--export-if-defined=node_api_module_get_api_version_v1" - "-Wl,--no-entry" - "-Wl,--initial-memory=16777216,--export-dynamic,--export=malloc,--export=free,--import-undefined,--export-table" - ) - target_link_libraries(hello dlmalloc) - # target_link_libraries(hello emmalloc) -endif() -``` - -If you use node-addon-api, you can use `-DEMNAPI_FIND_NODE_ADDON_API=ON` or manually add node-addon-api directory to the include dir via `include_directories()` or `target_include_directories()`. - -```bash -mkdir build - -# emscripten -emcmake cmake -DCMAKE_BUILD_TYPE=Release \ - -DEMNAPI_FIND_NODE_ADDON_API=ON \ - -G Ninja -H. -Bbuild - -# wasi-sdk -cmake -DCMAKE_TOOLCHAIN_FILE=$WASI_SDK_PATH/share/cmake/wasi-sdk.cmake \ - -DWASI_SDK_PREFIX=$WASI_SDK_PATH \ - -DEMNAPI_FIND_NODE_ADDON_API=ON \ - -DCMAKE_BUILD_TYPE=Release \ - -G Ninja -H. -Bbuild - -# wasm32 -cmake -DCMAKE_TOOLCHAIN_FILE=node_modules/emnapi/cmake/wasm32.cmake \ - -DLLVM_PREFIX=$WASI_SDK_PATH \ - -DCMAKE_BUILD_TYPE=Release \ - -G Ninja -H. -Bbuild - -cmake --build build -``` - -Output code can run in recent version modern browsers and Node.js latest LTS. IE is not supported. - -### Using node-gyp (Experimental) - -Require node-gyp `>= 10.2.0` - -See [emnapi-node-gyp-test](https://github.com/toyobayashi/emnapi-node-gyp-test) for examples. - -- Variables - -Arch: `node-gyp configure --arch=` - -```ts -// node-gyp configure -- -Dvariable_name=value - -declare var OS: 'emscripten' | 'wasi' | 'unknown' | 'wasm' | '' - -/** - * Enable async work and threadsafe-functions - * @default 0 - */ -declare var wasm_threads: 0 | 1 - -/** @default 1048576 */ -declare var stack_size: number - -/** @default 16777216 */ -declare var initial_memory: number - -/** @default 2147483648 */ -declare var max_memory: number - -/** @default path.join(path.dirname(commonGypiPath,'./dist/library_napi.js')) */ -declare var emnapi_js_library: string - -/** @default 0 */ -declare var emnapi_manual_linking: 0 | 1 -``` - -- Create `binding.gyp` - - -```py -{ - "targets": [ - { - "target_name": "hello", - "sources": [ - "hello.c" - ], - "conditions": [ - ["OS == 'emscripten'", { - "product_extension": "js", # required - - "cflags": [], - "cflags_c": [], - "cflags_cc": [], - "ldflags": [] - }], - ["OS == 'wasi'", { - # ... - }], - ["OS in ' wasm unknown'", { - # ... - }] - ] - } - ] -} -``` - -- Add the following environment variables. - -```bash -# Linux or macOS -export GYP_CROSSCOMPILE=1 - -# emscripten -export AR_target="$EMSDK/upstream/emscripten/emar" -export CC_target="$EMSDK/upstream/emscripten/emcc" -export CXX_target="$EMSDK/upstream/emscripten/em++" - -# wasi-sdk -export AR_target="$WASI_SDK_PATH/bin/ar" -export CC_target="$WASI_SDK_PATH/bin/clang" -export CXX_target="$WASI_SDK_PATH/bin/clang++" -``` - -```bat -@REM Windows - -set GYP_CROSSCOMPILE=1 - -@REM emscripten -call set AR_target=%%EMSDK:\=/%%/upstream/emscripten/emar.bat -call set CC_target=%%EMSDK:\=/%%/upstream/emscripten/emcc.bat -call set CXX_target=%%EMSDK:\=/%%/upstream/emscripten/em++.bat - -@REM wasi-sdk -call set AR_target=%%WASI_SDK_PATH:\=/%%/bin/ar.exe -call set CC_target=%%WASI_SDK_PATH:\=/%%/bin/clang.exe -call set CXX_target=%%WASI_SDK_PATH:\=/%%/bin/clang++.exe -``` - -- Build - -```bash -# Linux or macOS - -# emscripten -emmake node-gyp rebuild \ - --arch=wasm32 \ - --nodedir=./node_modules/emnapi \ - -- -f make-emscripten # -Dwasm_threads=1 - -# wasi -node-gyp rebuild \ - --arch=wasm32 \ - --nodedir=./node_modules/emnapi \ - -- -f make-wasi # -Dwasm_threads=1 - -# bare wasm32 -node-gyp rebuild \ - --arch=wasm32 \ - --nodedir=./node_modules/emnapi \ - -- -f make-wasm # -Dwasm_threads=1 -``` - -```bat -@REM Use make generator on Windows -@REM Run the bat file in POSIX-like environment (e.g. Cygwin) - -@REM emscripten -call npx.cmd node-gyp configure --arch=wasm32 --nodedir=./node_modules/emnapi -- -f make-emscripten -call emmake.bat make -C %~dp0build - -@REM wasi -call npx.cmd node-gyp configure --arch=wasm32 --nodedir=./node_modules/emnapi -- -f make-wasi -make -C %~dp0build - -@REM bare wasm32 -call npx.cmd node-gyp configure --arch=wasm32 --nodedir=./node_modules/emnapi -- -f make-wasm -make -C %~dp0build -``` - -### Using Rust - -See [napi-rs](https://github.com/napi-rs/napi-rs) - -### Multithread - -Related API: - -- [napi_*_async_work](https://nodejs.org/dist/latest/docs/api/n-api.html#napi_create_async_work) -- [napi_*_threadsafe_function](https://nodejs.org/dist/latest/docs/api/n-api.html#asynchronous-thread-safe-function-calls) - -They are available in emnapi, but you need to know more details before you start to use them. -Now emnapi has 3 implementations of async work and 2 implementations of TSFN: - -- Async work - - A. Libuv threadpool and pthread based implementation in C - - B. Single thread mock in JavaScript - - C. Web worker based implementation in C (stack allocation) and JavaScript -- TSFN - - D. Libuv and pthread based implementation in C - - E. Web worker based implementation in JavaScript - -| | Library to Link | `wasm32-emscripten` | `wasm32` | `wasm32-wasi` | `wasm32-wasi-threads` | -|---|------------------------|---------------------|----------|---------------|-----------------------| -| A | libemnapi-mt.a | ✅ | ❌ | ❌ | ✅ | -| B | libemnapi-basic(-mt).a | ✅ | ✅ | ✅ | ✅ | -| C | libemnapi-basic-mt.a | ❌ | ✅ | ❌ | ✅ | -| D | libemnapi-mt.a | ✅ | ❌ | ❌ | ✅ | -| E | libemnapi-basic(-mt).a | ✅ | ✅ | ✅ | ✅ | - -There are some limitations on browser about wasi-libc's pthread implementation, for example -`pthread_mutex_lock` may call `__builtin_wasm_memory_atomic_wait32`(`memory.atomic.wait32`) -which is disallowed in browser JS main thread. While Emscripten's pthread implementation -has considered usage in browser. This issue can be solved by upgrading `wasi-sdk` to v26+ -and emnapi v1.5.0+ then pass `--export=emnapi_thread_crashed` to the linker. If you need to -run your addon with multithreaded features, we recommend you use A & D or C & E. - -Note: For browsers, all the multithreaded features relying on Web Workers (Emscripten pthread also relying on Web Workers) -require cross-origin isolation to enable `SharedArrayBuffer`. You can make a page cross-origin isolated -by serving the page with these headers: - -``` -Cross-Origin-Embedder-Policy: require-corp -Cross-Origin-Opener-Policy: same-origin -``` - -If you would like to avoid `SharedArrayBuffer` and cross-origin isolation, please use B & E (link against `libemnapi-basic.a`), see the following table for more details. - -#### About Prebuilt Libraries - -Prebuilt libraries can be found in the `lib` directory in `emnapi` npm package. - -| Library | Description | `wasm32-emscripten` | `wasm32` | `wasm32-wasi` | `wasm32-wasi-threads` | -|----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------|----------|---------------|-----------------------------------------| -| libemnapi.a | no atomics feature.

no libuv port.

`napi_*_async_work` and `napi_*_threadsafe_function` always return `napi_generic_failure`. | ✅ | ✅ | ✅ | ✅ | -| libemnapi-mt.a | atomics feature enabled.

`napi_*_async_work` and `napi_*_threadsafe_function` are based on pthread and libuv port. | ✅ | ❌ | ❌ | ✅ | -| libemnapi-basic.a | no atomics feature.

no libuv port.

`napi_*_async_work` and `napi_*_threadsafe_function` are imported from JavaScript land. | ✅ | ✅ | ✅ | ✅ | -| libemnapi-basic-mt.a | atomics feature enabled.

no libuv port.

`napi_*_async_work` and `napi_*_threadsafe_function` are imported from JavaScript land.

include `emnapi_async_worker_create` and `emnapi_async_worker_init` for WebWorker based async work implementation. | ❌ | ✅ | ✅ | ✅ | -| libdlmalloc.a | no atomics feature, no thread safe garanteed. | ❌ | ✅ | ❌ | ❌ | -| libdlmalloc-mt.a | atomics feature enabled, thread safe. | ❌ | ✅ | ❌ | ❌ | -| libemmalloc.a | no atomics feature, no thread safe garanteed. | ❌ | ✅ | ❌ | ❌ | -| libemmalloc-mt.a | atomics feature enabled, thread safe. | ❌ | ✅ | ❌ | ❌ | - -#### Usage - -```cmake -add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/node_modules/emnapi") - -add_executable(hello hello.c) - -if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") - target_link_libraries(hello emnapi-mt) - target_compile_options(hello PRIVATE "-pthread") - target_link_options(hello PRIVATE - "-sALLOW_MEMORY_GROWTH=1" - "-sEXPORTED_FUNCTIONS=['_malloc','_free','_napi_register_wasm_v1','_node_api_module_get_api_version_v1']" - "-sEXPORTED_RUNTIME_METHODS=['emnapiInit']" - "-pthread" - "-sPTHREAD_POOL_SIZE=4" - # try to specify stack size if you experience pthread errors - "-sSTACK_SIZE=2MB" - "-sDEFAULT_PTHREAD_STACK_SIZE=2MB" - ) -elseif(CMAKE_C_COMPILER_TARGET STREQUAL "wasm32-wasi-threads") - target_link_libraries(hello emnapi-mt) - set_target_properties(hello PROPERTIES SUFFIX ".wasm") - target_compile_options(hello PRIVATE "-fno-exceptions" "-pthread") - target_link_options(hello PRIVATE - "-pthread" - "-mexec-model=reactor" - "-Wl,--import-memory" - "-Wl,--max-memory=2147483648" - "-Wl,--export-dynamic" - "-Wl,--export=napi_register_wasm_v1" - "-Wl,--export-if-defined=node_api_module_get_api_version_v1" - "-Wl,--export=malloc" - "-Wl,--export=free" - "-Wl,--export=emnapi_thread_crashed" - "-Wl,--import-undefined" - "-Wl,--export-table" - ) -elseif((CMAKE_C_COMPILER_TARGET STREQUAL "wasm32") OR (CMAKE_C_COMPILER_TARGET STREQUAL "wasm32-unknown-unknown")) - target_link_libraries(hello emnapi-basic-mt) - set_target_properties(hello PROPERTIES SUFFIX ".wasm") - target_compile_options(hello PRIVATE "-fno-exceptions" "-matomics" "-mbulk-memory") - target_link_options(hello PRIVATE - "-nostdlib" - "-Wl,--no-entry" - "-Wl,--export=napi_register_wasm_v1" - "-Wl,--export-if-defined=node_api_module_get_api_version_v1" - "-Wl,--export=emnapi_async_worker_create" - "-Wl,--export=emnapi_async_worker_init" - "-Wl,--import-memory,--shared-memory,--max-memory=2147483648,--import-undefined" - "-Wl,--export-dynamic,--export=malloc,--export=free,--export-table" - ) -endif() -``` - -```bash -# emscripten -emcmake cmake -DCMAKE_BUILD_TYPE=Release \ - -DEMNAPI_FIND_NODE_ADDON_API=ON \ - -DEMNAPI_WORKER_POOL_SIZE=4 \ - -G Ninja -H. -Bbuild - -# wasi-sdk with thread support -cmake -DCMAKE_TOOLCHAIN_FILE=$WASI_SDK_PATH/share/cmake/wasi-sdk-pthread.cmake \ - -DWASI_SDK_PREFIX=$WASI_SDK_PATH \ - -DEMNAPI_FIND_NODE_ADDON_API=ON \ - -DCMAKE_BUILD_TYPE=Release \ - -G Ninja -H. -Bbuild - -cmake -DCMAKE_TOOLCHAIN_FILE=node_modules/emnapi/cmake/wasm32.cmake \ - -DLLVM_PREFIX=$WASI_SDK_PATH \ - -DCMAKE_BUILD_TYPE=Release \ - -G Ninja -H. -Bbuild - -cmake --build build -``` - -And additional work is required during instantiating wasm compiled with non-emscripten. - -```js -// emnapi main thread (could be in a Worker) -instantiateNapiModule(input, { - context: getDefaultContext(), - /** - * emscripten - * 0: no effect - * > 0: the same effect to UV_THREADPOOL_SIZE - * non-emscripten - * 0: single thread mock - * > 0 schedule async work in web worker - */ - asyncWorkPoolSize: 4, // 0: single thread mock, > 0: schedule async work in web worker - wasi: new WASI(/* ... */), - - /** - * Setting this to `true` or a delay (ms) makes - * pthread_create() do not return until worker actually start. - * It will throw error if emnapi runs in browser main thread - * since browser disallow blocking the main thread (Atomics.wait). - * @defaultValue false - */ - waitThreadStart: isNode || (isBrowser && !isBrowserMainThread), - - /** - * Reuse the thread worker after thread exit to avoid re-creatation - * @defaultValue false - */ - reuseWorker: { - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} - */ - size: 0, - - /** - * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} - */ - strict: false - }, - - onCreateWorker () { - return new Worker('./worker.js') - // Node.js - // const { Worker } = require('worker_threads') - // return new Worker(join(__dirname, './worker.js'), { - // env: process.env, - // execArgv: ['--experimental-wasi-unstable-preview1'] - // }) - }, - overwriteImports (importObject) { - importObject.env.memory = new WebAssembly.Memory({ - initial: 16777216 / 65536, - maximum: 2147483648 / 65536, - shared: true - }) - } -}) -``` - -```js -// worker.js -(function () { - let fs, WASI, emnapiCore - - const ENVIRONMENT_IS_NODE = - typeof process === 'object' && process !== null && - typeof process.versions === 'object' && process.versions !== null && - typeof process.versions.node === 'string' - - if (ENVIRONMENT_IS_NODE) { - const nodeWorkerThreads = require('worker_threads') - - const parentPort = nodeWorkerThreads.parentPort - - parentPort.on('message', (data) => { - globalThis.onmessage({ data }) - }) - - fs = require('fs') - - Object.assign(globalThis, { - self: globalThis, - require, - Worker: nodeWorkerThreads.Worker, - importScripts: function (f) { - (0, eval)(fs.readFileSync(f, 'utf8') + '//# sourceURL=' + f) - }, - postMessage: function (msg) { - parentPort.postMessage(msg) - } - }) - - WASI = require('wasi').WASI - emnapiCore = require('@emnapi/core') - } else { - importScripts('./node_modules/memfs-browser/dist/memfs.js') - importScripts('./node_modules/@tybys/wasm-util/dist/wasm-util.min.js') - importScripts('./node_modules/@emnapi/core/dist/emnapi-core.js') - emnapiCore = globalThis.emnapiCore - - const { Volume, createFsFromVolume } = memfs - fs = createFsFromVolume(Volume.fromJSON({ - '/': null - })) - - WASI = globalThis.wasmUtil.WASI - } - - const { instantiateNapiModuleSync, MessageHandler } = emnapiCore - - const handler = new MessageHandler({ - onLoad ({ wasmModule, wasmMemory }) { - const wasi = new WASI({ fs }) - - return instantiateNapiModuleSync(wasmModule, { - childThread: true, - wasi, - overwriteImports (importObject) { - importObject.env.memory = wasmMemory - } - }) - } - }) - - globalThis.onmessage = function (e) { - handler.handle(e) - // handle other messages - } -})() -``` - -## Preprocess Macro Options - -### `-DEMNAPI_WORKER_POOL_SIZE=4` - -This is [`UV_THREADPOOL_SIZE`](http://docs.libuv.org/en/v1.x/threadpool.html?highlight=UV_THREADPOOL_SIZE) equivalent at compile time, if not predefined, emnapi will read `asyncWorkPoolSize` option or `UV_THREADPOOL_SIZE` from Emscripten [environment variable](https://emscripten.org/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html#interacting-with-code-environment-variables) at runtime: - -```js -Module.init({ - // ... - asyncWorkPoolSize: 2 -}) - -// if asyncWorkPoolSize is not specified -Module.preRun = Module.preRun || []; -Module.preRun.push(function () { - if (typeof ENV !== 'undefined') { - ENV.UV_THREADPOOL_SIZE = '2'; - } -}); -``` - -```js -// wasi -instantiateNapiModule({ - // ... - asyncWorkPoolSize: 2 -}) -// if asyncWorkPoolSize is not specified -new WASI({ - env: { - UV_THREADPOOL_SIZE: '2' - } -}) -``` - -It represent max of `EMNAPI_WORKER_POOL_SIZE` async work (`napi_queue_async_work`) can be executed in parallel. Default is not defined. - -You can set both `PTHREAD_POOL_SIZE` and `EMNAPI_WORKER_POOL_SIZE` to `number of CPU cores` in general. -If you use another library function which may create `N` child threads in async work, -then you need to set `PTHREAD_POOL_SIZE` to `EMNAPI_WORKER_POOL_SIZE * (N + 1)`. - -This option only has effect if you use `-pthread`. -Emnapi will create `EMNAPI_WORKER_POOL_SIZE` threads when initializing, -it will throw error if `PTHREAD_POOL_SIZE < EMNAPI_WORKER_POOL_SIZE && PTHREAD_POOL_SIZE_STRICT == 2`. - -See [Issue #8](https://github.com/toyobayashi/emnapi/issues/8) for more detail. - -### `-DEMNAPI_NEXTTICK_TYPE=0` - -This option only has effect if you use `-pthread`, Default is `0`. -Tell emnapi how to delay async work in `uv_async_send` / `uv__async_close`. - -- `0`: Use `setImmediate()` (Node.js native `setImmediate` or browser `MessageChannel` and `port.postMessage`) -- `1`: Use `Promise.resolve().then()` - -### `-DEMNAPI_USE_PROXYING=1` - -This option only has effect if you use emscripten `-pthread`. Default is `1` if emscripten version `>= 3.1.9`, else `0`. - -- `0` - - Use JavaScript implementation to send async work from worker threads, runtime code will access the Emscripten internal `PThread` object to add custom worker message listener. - -- `1`: - - Use Emscripten [proxying API](https://emscripten.org/docs/api_reference/proxying.h.html) to send async work from worker threads in C. If you experience something wrong, you can switch set this to `0` and feel free to create an issue. diff --git a/sdks/nodejs/node_modules/emnapi/cmake/wasm32.cmake b/sdks/nodejs/node_modules/emnapi/cmake/wasm32.cmake deleted file mode 100644 index f38d269..0000000 --- a/sdks/nodejs/node_modules/emnapi/cmake/wasm32.cmake +++ /dev/null @@ -1,34 +0,0 @@ -# Cmake toolchain description file for the Makefile - -# This is arbitrary, AFAIK, for now. -cmake_minimum_required(VERSION 3.4.0) - -set(CMAKE_SYSTEM_NAME WASM) -set(CMAKE_SYSTEM_VERSION 1) -set(CMAKE_SYSTEM_PROCESSOR wasm32) -set(triple wasm32) - -if(WIN32) - set(WASM_HOST_EXE_SUFFIX ".exe") -else() - set(WASM_HOST_EXE_SUFFIX "") -endif() - -set(CMAKE_C_COMPILER ${LLVM_PREFIX}/bin/clang${WASM_HOST_EXE_SUFFIX}) -set(CMAKE_CXX_COMPILER ${LLVM_PREFIX}/bin/clang++${WASM_HOST_EXE_SUFFIX}) -set(CMAKE_ASM_COMPILER ${LLVM_PREFIX}/bin/clang${WASM_HOST_EXE_SUFFIX}) -set(CMAKE_AR ${LLVM_PREFIX}/bin/llvm-ar${WASM_HOST_EXE_SUFFIX}) -set(CMAKE_RANLIB ${LLVM_PREFIX}/bin/llvm-ranlib${WASM_HOST_EXE_SUFFIX}) -set(CMAKE_C_COMPILER_TARGET ${triple}) -set(CMAKE_CXX_COMPILER_TARGET ${triple}) -set(CMAKE_ASM_COMPILER_TARGET ${triple}) - -# Don't look in the sysroot for executables to run during the build -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -# Only look in the sysroot (not in the host paths) for the rest -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - -set(CMAKE_C_COMPILER_WORKS 1) -set(CMAKE_CXX_COMPILER_WORKS 1) diff --git a/sdks/nodejs/node_modules/emnapi/common.gypi b/sdks/nodejs/node_modules/emnapi/common.gypi deleted file mode 100644 index 0818585..0000000 --- a/sdks/nodejs/node_modules/emnapi/common.gypi +++ /dev/null @@ -1,435 +0,0 @@ -# This file is originally created by [RReverser](https://github.com/RReverser) -# in https://github.com/lovell/sharp/pull/3522 -{ - 'variables': { - # OS: 'emscripten' | 'wasi' | 'unknown' | 'wasm' - 'clang': 1, - 'target_arch%': 'wasm32', - 'wasm_threads%': 0, - 'stack_size%': 1048576, - 'initial_memory%': 16777216, - 'max_memory%': 2147483648, - # must be an absolute path - 'emnapi_js_library%': '> 0; - if (emnapiAsyncWorkPoolSize > 1024) { - emnapiAsyncWorkPoolSize = 1024; - } - else if (emnapiAsyncWorkPoolSize < -1024) { - emnapiAsyncWorkPoolSize = -1024; - } - } - var moduleApiVersion = _node_api_module_get_api_version_v1(); - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - var envObject = emnapiModule.envObject || (emnapiModule.envObject = emnapiCtx.createEnv(filename, moduleApiVersion, function (cb) { return {{{ makeDynCall('vppp', 'cb') }}}; }, function (cb) { return {{{ makeDynCall('vp', 'cb') }}}; }, abort, emnapiNodeBinding)); - var scope = emnapiCtx.openScope(envObject); - try { - envObject.callIntoModule(function (_envObject) { - var exports$1 = emnapiModule.exports; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var exportsHandle = scope.add(exports$1); - var napiValue = _napi_register_wasm_v1({{{ to64('_envObject.id') }}}, {{{ to64('exportsHandle.id') }}}); - emnapiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value; - }); - } - catch (err) { - if (err !== 'unwind') { - throw err; - } - } - finally { - emnapiCtx.closeScope(envObject, scope); - } - emnapiModule.loaded = true; - delete emnapiModule.envObject; - return emnapiModule.exports; -} -/** - * @__sig i - */ -function __emnapi_async_work_pool_size() { - return Math.abs(emnapiAsyncWorkPoolSize); -} -/** - * @__sig ipiip - */ -function _napi_set_last_error(env, error_code, engine_error_code, engine_reserved) { - var envObject = emnapiCtx.envStore.get(env); - return envObject.setLastError(error_code, engine_error_code, engine_reserved); -} -/** - * @__sig ip - */ -function _napi_clear_last_error(env) { - var envObject = emnapiCtx.envStore.get(env); - return envObject.clearLastError(); -} -/** - * @__sig vppp - */ -function __emnapi_get_node_version(major, minor, patch) { - {{{ from64('major') }}}; - {{{ from64('minor') }}}; - {{{ from64('patch') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var versions = (typeof process === 'object' && process !== null && - typeof process.versions === 'object' && process.versions !== null && - typeof process.versions.node === 'string') - ? process.versions.node.split('.').map(function (n) { return Number(n); }) - : [0, 0, 0]; - {{{ makeSetValue('major', 0, 'versions[0]', 'u32') }}}; - {{{ makeSetValue('minor', 0, 'versions[1]', 'u32') }}}; - {{{ makeSetValue('patch', 0, 'versions[2]', 'u32') }}}; -} -/** - * @__sig v - * @__deps $runtimeKeepalivePush - */ -function __emnapi_runtime_keepalive_push() { - if (typeof runtimeKeepalivePush === 'function') - runtimeKeepalivePush(); -} -/** - * @__sig v - * @__deps $runtimeKeepalivePop - */ -function __emnapi_runtime_keepalive_pop() { - if (typeof runtimeKeepalivePop === 'function') - runtimeKeepalivePop(); -} -/** - * @__sig vpp - */ -function __emnapi_set_immediate(callback, data) { - emnapiCtx.feature.setImmediate(function () { - {{{ makeDynCall('vp', 'callback') }}}(data); - }); -} -/** - * @__sig vpp - */ -function __emnapi_next_tick(callback, data) { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - Promise.resolve().then(function () { - {{{ makeDynCall('vp', 'callback') }}}(data); - }); -} -/** - * @__sig vipppi - */ -function __emnapi_callback_into_module(forceUncaught, env, callback, data, close_scope_if_throw) { - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - try { - envObject.callbackIntoModule(Boolean(forceUncaught), function () { - {{{ makeDynCall('vpp', 'callback') }}}(env, data); - }); - } - catch (err) { - emnapiCtx.closeScope(envObject, scope); - if (close_scope_if_throw) { - emnapiCtx.closeScope(envObject); - } - throw err; - } - emnapiCtx.closeScope(envObject, scope); -} -/** - * @__sig vipppp - */ -function __emnapi_call_finalizer(forceUncaught, env, callback, data, hint) { - var envObject = emnapiCtx.envStore.get(env); - {{{ from64('callback') }}}; - envObject.callFinalizerInternal(forceUncaught, callback, data, hint); -} -/** - * @__sig v - */ -function __emnapi_ctx_increase_waiting_request_counter() { - emnapiCtx.increaseWaitingRequestCounter(); -} -/** - * @__sig v - */ -function __emnapi_ctx_decrease_waiting_request_counter() { - emnapiCtx.decreaseWaitingRequestCounter(); -} -/** - * @__sig i - */ -function __emnapi_is_main_runtime_thread() { - return ENVIRONMENT_IS_PTHREAD ? 0 : 1; -} -/** - * @__sig i - */ -function __emnapi_is_main_browser_thread() { - return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0; -} -/** - * @__sig v - */ -function __emnapi_unwind() { - // eslint-disable-next-line @typescript-eslint/no-throw-literal - throw 'unwind'; -} -/** - * @__sig d - */ -function __emnapi_get_now() { - return performance.timeOrigin + performance.now(); -} -function emnapiSetValueI64(result, numberValue) { - var tempDouble; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var tempI64 = [ - numberValue >>> 0, - (tempDouble = numberValue, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) - ]; - {{{ makeSetValue('result', 0, 'tempI64[0]', 'i32') }}}; - {{{ makeSetValue('result', 4, 'tempI64[1]', 'i32') }}}; -} -/** - * @__deps $emnapiCtx - * @__sig p - */ -function __emnapi_open_handle_scope() { - return emnapiCtx.openScope().id; -} -/** - * @__deps $emnapiCtx - * @__sig vp - */ -function __emnapi_close_handle_scope(_scope) { - return emnapiCtx.closeScope(); -} -/* eslint-disable eqeqeq */ -/* eslint-disable @typescript-eslint/no-unused-vars */ -/* eslint-disable @typescript-eslint/indent */ -/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */ -/* eslint-disable @typescript-eslint/explicit-function-return-type */ -/** - * @__deps emscripten_resize_heap - * @__sig ipjp - */ -function _napi_adjust_external_memory(env, low, high, adjusted_value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - var change_in_bytes; -#if WASM_BIGINT - if (!high) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - change_in_bytes = Number(low); -#else - if (!adjusted_value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - change_in_bytes = (low >>> 0) + (high * Math.pow(2, 32)); -#endif - if (change_in_bytes < 0) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (change_in_bytes > 0) { - var old_size = wasmMemory.buffer.byteLength; - var new_size = old_size + change_in_bytes; - if (!_emscripten_resize_heap(new_size)) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - } -#if WASM_BIGINT - {{{ from64('high') }}}; - if (emnapiCtx.feature.supportBigInt) { - {{{ makeSetValue('high', 0, 'wasmMemory.buffer.byteLength', 'i64') }}}; - } - else { - emnapiSetValueI64(high, wasmMemory.buffer.byteLength); - } -#else - {{{ from64('adjusted_value') }}}; - {{{ makeSetValue('adjusted_value', 0, 'wasmMemory.buffer.byteLength', 'i64') }}}; -#endif - return envObject.clearLastError(); -} -/** - * @__deps $PThread - * @__sig vp - */ -function __emnapi_worker_unref(pid) { - var worker = PThread.pthreads[pid]; - worker = worker.worker || worker; - if (typeof worker.unref === 'function') { - worker.unref(); - } -} -/** - * if EMNAPI_USE_PROXYING=1 (default is 1 if emscripten version >= 3.1.9), - * the following helpers won't be linked into runtime code - * - * @__deps $PThread - * @__postset - * ``` - * PThread.unusedWorkers.forEach(emnapiAddSendListener); - * PThread.runningWorkers.forEach(emnapiAddSendListener); - * (function () { - * var __original_getNewWorker = PThread.getNewWorker; - * PThread.getNewWorker = function () { - * var r = __original_getNewWorker.apply(this, arguments); - * emnapiAddSendListener(r); - * return r; - * }; - * })(); - * ``` - */ -function emnapiAddSendListener(worker) { - if (!worker) - return false; - if (worker._emnapiSendListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__ && __emnapi__.type === 'async-send') { - if (ENVIRONMENT_IS_PTHREAD) { - postMessage({ __emnapi__: __emnapi__ }); - } - else { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var callback = __emnapi__.payload.callback; - {{{ makeDynCall('vp', 'callback') }}}(__emnapi__.payload.data); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiSendListener; - }; - worker._emnapiSendListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; -} -/** - * @__sig vipp - */ -function __emnapi_async_send_js(type, callback, data) { - if (ENVIRONMENT_IS_PTHREAD) { - postMessage({ - __emnapi__: { - type: 'async-send', - payload: { - callback: callback, - data: data - } - } - }); - } - else { - switch (type) { - case 0: - __emnapi_set_immediate(callback, data); - break; - case 1: - __emnapi_next_tick(callback, data); - break; - default: break; - } - } -} -/** - * @__postset - * ``` - * emnapiAWST.init(); - * ``` - */ -var emnapiAWST = { - idGen: {}, - values: [undefined], - queued: new Set(), - pending: [], - init: function () { - var idGen = { - nextId: 1, - list: [], - generate: function () { - var id; - if (idGen.list.length) { - id = idGen.list.shift(); - } - else { - id = idGen.nextId; - idGen.nextId++; - } - return id; - }, - reuse: function (id) { - idGen.list.push(id); - } - }; - emnapiAWST.idGen = idGen; - emnapiAWST.values = [undefined]; - emnapiAWST.queued = new Set(); - emnapiAWST.pending = []; - }, - create: function (env, resource, resourceName, execute, complete, data) { - var asyncId = 0; - var triggerAsyncId = 0; - if (emnapiNodeBinding) { - var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resourceName, -1); - asyncId = asyncContext.asyncId; - triggerAsyncId = asyncContext.triggerAsyncId; - } - var id = emnapiAWST.idGen.generate(); - emnapiAWST.values[id] = { - env: env, - id: id, - resource: resource, - asyncId: asyncId, - triggerAsyncId: triggerAsyncId, - status: 0, - execute: execute, - complete: complete, - data: data - }; - return id; - }, - callComplete: function (work, status) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var complete = work.complete; - var env = work.env; - var data = work.data; - var callback = function () { - if (!complete) - return; - var envObject = emnapiCtx.envStore.get(env); - var scope = emnapiCtx.openScope(envObject); - try { - envObject.callbackIntoModule(true, function () { - {{{ makeDynCall('vpip', 'complete') }}}(env, status, data); - }); - } - finally { - emnapiCtx.closeScope(envObject, scope); - } - }; - if (emnapiNodeBinding) { - emnapiNodeBinding.node.makeCallback(work.resource, callback, [], { - asyncId: work.asyncId, - triggerAsyncId: work.triggerAsyncId - }); - } - else { - callback(); - } - }, - queue: function (id) { - var work = emnapiAWST.values[id]; - if (!work) - return; - if (work.status === 0) { - work.status = 1; - if (emnapiAWST.queued.size >= (Math.abs(emnapiAsyncWorkPoolSize) || 4)) { - emnapiAWST.pending.push(id); - return; - } - emnapiAWST.queued.add(id); - var env_1 = work.env; - var data_1 = work.data; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var execute = work.execute; - work.status = 2; - emnapiCtx.feature.setImmediate(function () { - {{{ makeDynCall('vpp', 'execute') }}}(env_1, data_1); - emnapiAWST.queued.delete(id); - work.status = 3; - emnapiCtx.feature.setImmediate(function () { - emnapiAWST.callComplete(work, 0 /* napi_status.napi_ok */); - }); - if (emnapiAWST.pending.length > 0) { - var nextWorkId = emnapiAWST.pending.shift(); - emnapiAWST.values[nextWorkId].status = 0; - emnapiAWST.queue(nextWorkId); - } - }); - } - }, - cancel: function (id) { - var index = emnapiAWST.pending.indexOf(id); - if (index !== -1) { - var work_1 = emnapiAWST.values[id]; - if (work_1 && (work_1.status === 1)) { - work_1.status = 4; - emnapiAWST.pending.splice(index, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiAWST.callComplete(work_1, 11 /* napi_status.napi_cancelled */); - }); - return 0 /* napi_status.napi_ok */; - } - else { - return 9 /* napi_status.napi_generic_failure */; - } - } - return 9 /* napi_status.napi_generic_failure */; - }, - remove: function (id) { - var work = emnapiAWST.values[id]; - if (!work) - return; - if (emnapiNodeBinding) { - emnapiNodeBinding.node.emitAsyncDestroy({ - asyncId: work.asyncId, - triggerAsyncId: work.triggerAsyncId - }); - } - emnapiAWST.values[id] = undefined; - emnapiAWST.idGen.reuse(id); - } -}; -/** - * @__sig ippppppp - */ -function _napi_create_async_work(env, resource, resource_name, execute, complete, data, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!execute) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var resourceObject; - if (resource) { - resourceObject = Object(emnapiCtx.handleStore.get(resource).value); - } - else { - resourceObject = {}; - } - if (!resource_name) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var resourceName = String(emnapiCtx.handleStore.get(resource_name).value); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data); - {{{ makeSetValue('result', 0, 'id', '*') }}}; - return envObject.clearLastError(); -} -/** - * @__sig ipp - */ -function _napi_delete_async_work(env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiAWST.remove(work); - return envObject.clearLastError(); -} -/** - * @__sig ipp - */ -function _napi_queue_async_work(env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiAWST.queue(work); - return envObject.clearLastError(); -} -/** - * @__sig ipp - */ -function _napi_cancel_async_work(env, work) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!work) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var status = emnapiAWST.cancel(work); - if (status === 0 /* napi_status.napi_ok */) - return envObject.clearLastError(); - return envObject.setLastError(status); -} -/* eslint-disable @typescript-eslint/indent */ -/** - * @__postset - * ``` - * emnapiString.init(); - * ``` - */ -var emnapiString = { - utf8Decoder: undefined, - utf16Decoder: undefined, - init: function () { -#if !TEXTDECODER || TEXTDECODER == 1 - var fallbackDecoder = { - decode: function (bytes) { - var inputIndex = 0; - var pendingSize = Math.min(0x1000, bytes.length + 1); - var pending = new Uint16Array(pendingSize); - var chunks = []; - var pendingIndex = 0; - for (;;) { - var more = inputIndex < bytes.length; - if (!more || (pendingIndex >= pendingSize - 1)) { - var subarray = pending.subarray(0, pendingIndex); - var arraylike = subarray; - chunks.push(String.fromCharCode.apply(null, arraylike)); - if (!more) { - return chunks.join(''); - } - bytes = bytes.subarray(inputIndex); - inputIndex = 0; - pendingIndex = 0; - } - var byte1 = bytes[inputIndex++]; - if ((byte1 & 0x80) === 0) { - pending[pendingIndex++] = byte1; - } - else if ((byte1 & 0xe0) === 0xc0) { - var byte2 = bytes[inputIndex++] & 0x3f; - pending[pendingIndex++] = ((byte1 & 0x1f) << 6) | byte2; - } - else if ((byte1 & 0xf0) === 0xe0) { - var byte2 = bytes[inputIndex++] & 0x3f; - var byte3 = bytes[inputIndex++] & 0x3f; - pending[pendingIndex++] = ((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3; - } - else if ((byte1 & 0xf8) === 0xf0) { - var byte2 = bytes[inputIndex++] & 0x3f; - var byte3 = bytes[inputIndex++] & 0x3f; - var byte4 = bytes[inputIndex++] & 0x3f; - var codepoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4; - if (codepoint > 0xffff) { - codepoint -= 0x10000; - pending[pendingIndex++] = (codepoint >>> 10) & 0x3ff | 0xd800; - codepoint = 0xdc00 | codepoint & 0x3ff; - } - pending[pendingIndex++] = codepoint; - } - else { - // invalid - } - } - } - }; -#endif - var utf8Decoder; -#if !TEXTDECODER - utf8Decoder = fallbackDecoder; -#elif TEXTDECODER == 1 - utf8Decoder = typeof TextDecoder === 'function' ? new TextDecoder() : fallbackDecoder; -#elif TEXTDECODER == 2 - utf8Decoder = new TextDecoder(); -#endif - emnapiString.utf8Decoder = utf8Decoder; -#if !TEXTDECODER || TEXTDECODER == 1 - var fallbackDecoder2 = { - decode: function (input) { - var bytes = new Uint16Array(input.buffer, input.byteOffset, input.byteLength / 2); - if (bytes.length <= 0x1000) { - return String.fromCharCode.apply(null, bytes); - } - var chunks = []; - var i = 0; - var len = 0; - for (; i < bytes.length; i += len) { - len = Math.min(0x1000, bytes.length - i); - chunks.push(String.fromCharCode.apply(null, bytes.subarray(i, i + len))); - } - return chunks.join(''); - } - }; -#endif - var utf16Decoder; -#if !TEXTDECODER - utf16Decoder = fallbackDecoder2; -#elif TEXTDECODER == 1 - utf16Decoder = typeof TextDecoder === 'function' ? new TextDecoder('utf-16le') : fallbackDecoder2; -#elif TEXTDECODER == 2 - utf16Decoder = new TextDecoder('utf-16le'); -#endif - emnapiString.utf16Decoder = utf16Decoder; - }, - lengthBytesUTF8: function (str) { - var c; - var len = 0; - for (var i = 0; i < str.length; ++i) { - c = str.charCodeAt(i); - if (c <= 0x7F) { - len++; - } - else if (c <= 0x7FF) { - len += 2; - } - else if (c >= 0xD800 && c <= 0xDFFF) { - len += 4; - ++i; - } - else { - len += 3; - } - } - return len; - }, - UTF8ToString: function (ptr, length) { - if (!ptr || !length) - return ''; - ptr >>>= 0; - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - var end = ptr; - if (length === -1) { - for (; HEAPU8[end];) - ++end; - } - else { - end = ptr + (length >>> 0); - } -#if TEXTDECODER != 2 - length = end - ptr; - if (length <= 16) { - var idx = ptr; - var str = ''; - while (idx < end) { - var u0 = HEAPU8[idx++]; - if (!(u0 & 0x80)) { - str += String.fromCharCode(u0); - continue; - } - var u1 = HEAPU8[idx++] & 63; - if ((u0 & 0xE0) === 0xC0) { - str += String.fromCharCode(((u0 & 31) << 6) | u1); - continue; - } - var u2 = HEAPU8[idx++] & 63; - if ((u0 & 0xF0) === 0xE0) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; - } - else { - u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (HEAPU8[idx++] & 63); - } - if (u0 < 0x10000) { - str += String.fromCharCode(u0); - } - else { - var ch = u0 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } - } - return str; - } -#endif - return emnapiString.utf8Decoder.decode({{{ getUnsharedTextDecoderView('HEAPU8', 'ptr', 'end') }}}); - }, - stringToUTF8: function (str, outPtr, maxBytesToWrite) { - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - var outIdx = outPtr; - outIdx >>>= 0; - if (!(maxBytesToWrite > 0)) { - return 0; - } - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i); - if (u >= 0xD800 && u <= 0xDFFF) { - var u1 = str.charCodeAt(++i); - u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); - } - if (u <= 0x7F) { - if (outIdx >= endIdx) - break; - HEAPU8[outIdx++] = u; - } - else if (u <= 0x7FF) { - if (outIdx + 1 >= endIdx) - break; - HEAPU8[outIdx++] = 0xC0 | (u >> 6); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - else if (u <= 0xFFFF) { - if (outIdx + 2 >= endIdx) - break; - HEAPU8[outIdx++] = 0xE0 | (u >> 12); - HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - else { - if (outIdx + 3 >= endIdx) - break; - HEAPU8[outIdx++] = 0xF0 | (u >> 18); - HEAPU8[outIdx++] = 0x80 | ((u >> 12) & 63); - HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); - HEAPU8[outIdx++] = 0x80 | (u & 63); - } - } - HEAPU8[outIdx] = 0; - return outIdx - startIdx; - }, - UTF16ToString: function (ptr, length) { - if (!ptr || !length) - return ''; - ptr >>>= 0; - var end = ptr; - if (length === -1) { - var idx = end >> 1; - var HEAPU16 = new Uint16Array(wasmMemory.buffer); - while (HEAPU16[idx]) - ++idx; - end = idx << 1; - } - else { - end = ptr + (length >>> 0) * 2; - } -#if TEXTDECODER != 2 - length = end - ptr; - if (length <= 32) { - return String.fromCharCode.apply(null, new Uint16Array(wasmMemory.buffer, ptr, length / 2)); - } -#endif - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var HEAPU8 = new Uint8Array(wasmMemory.buffer); - return emnapiString.utf16Decoder.decode({{{ getUnsharedTextDecoderView('HEAPU8', 'ptr', 'end') }}}); - }, - stringToUTF16: function (str, outPtr, maxBytesToWrite) { - if (maxBytesToWrite === undefined) { - maxBytesToWrite = 0x7FFFFFFF; - } - if (maxBytesToWrite < 2) - return 0; - maxBytesToWrite -= 2; - var startPtr = outPtr; - var numCharsToWrite = (maxBytesToWrite < str.length * 2) ? (maxBytesToWrite / 2) : str.length; - for (var i = 0; i < numCharsToWrite; ++i) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var codeUnit = str.charCodeAt(i); - {{{ makeSetValue('outPtr', 0, 'codeUnit', 'i16') }}}; - outPtr += 2; - } - {{{ makeSetValue('outPtr', 0, '0', 'i16') }}}; - return outPtr - startPtr; - }, - newString: function (env, str, length, result, stringMaker) { - {{{ from64('length') }}}; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!str) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!(autoLength || (sizelength <= 2147483647))) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('str') }}}; - var strValue = stringMaker(str, autoLength, sizelength); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(strValue).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); - }, - newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) { - {{{ from64('length') }}}; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!str) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!(autoLength || (sizelength <= 2147483647))) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var status = createApi(env, str, length, result); - if (status === 0 /* napi_status.napi_ok */) { - if (copied) { - {{{ makeSetValue('copied', 0, '1', 'i8') }}}; - } - if (finalize_callback) { - envObject.callFinalizer(finalize_callback, str, finalize_hint); - } - } - return status; - } -}; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -/** - * @__sig ipp - */ -function _emnapi_get_module_object(env, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(Module); - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ippp - */ -function _emnapi_get_module_property(env, utf8name, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!utf8name) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('utf8name') }}}; - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(Module[emnapiString.UTF8ToString(utf8name, -1)]); - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__deps malloc - * @__deps free - * @__postset - * ``` - * emnapiExternalMemory.init(); - * ``` - */ -var emnapiExternalMemory = { - registry: typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free({{{ to64('_pointer') }}}); }) : undefined, - table: new WeakMap(), - wasmMemoryViewTable: new WeakMap(), - init: function () { - emnapiExternalMemory.registry = typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free({{{ to64('_pointer') }}}); }) : undefined; - emnapiExternalMemory.table = new WeakMap(); - emnapiExternalMemory.wasmMemoryViewTable = new WeakMap(); - }, - isSharedArrayBuffer: function (value) { - return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); - }, - isDetachedArrayBuffer: function (arrayBuffer) { - if (arrayBuffer.byteLength === 0) { - try { - // eslint-disable-next-line no-new - new Uint8Array(arrayBuffer); - } - catch (_) { - return true; - } - } - return false; - }, - getArrayBufferPointer: function (arrayBuffer, shouldCopy) { - var _a; - var info = { - address: 0, - ownership: 0 /* ReferenceOwnership.kRuntime */, - runtimeAllocated: 0 - }; - if (arrayBuffer === wasmMemory.buffer) { - return info; - } - var isDetached = emnapiExternalMemory.isDetachedArrayBuffer(arrayBuffer); - if (emnapiExternalMemory.table.has(arrayBuffer)) { - var cachedInfo = emnapiExternalMemory.table.get(arrayBuffer); - if (isDetached) { - cachedInfo.address = 0; - return cachedInfo; - } - if (shouldCopy && cachedInfo.ownership === 0 /* ReferenceOwnership.kRuntime */ && cachedInfo.runtimeAllocated === 1) { - new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), cachedInfo.address); - } - return cachedInfo; - } - if (isDetached || (arrayBuffer.byteLength === 0)) { - return info; - } - if (!shouldCopy) { - return info; - } - var pointer = _malloc({{{ to64('arrayBuffer.byteLength') }}}); - if (!pointer) - throw new Error('Out of memory'); - new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer); - info.address = pointer; - info.ownership = emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */; - info.runtimeAllocated = 1; - emnapiExternalMemory.table.set(arrayBuffer, info); - (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(arrayBuffer, pointer); - return info; - }, - getOrUpdateMemoryView: function (view) { - if (view.buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - emnapiExternalMemory.wasmMemoryViewTable.set(view, { - Ctor: view.constructor, - address: view.byteOffset, - length: view instanceof DataView ? view.byteLength : view.length, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - return view; - } - var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || - ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer)); - if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - var info = emnapiExternalMemory.wasmMemoryViewTable.get(view); - var Ctor = info.Ctor; - var newView = void 0; - var Buffer = emnapiCtx.feature.Buffer; - if (typeof Buffer === 'function' && Ctor === Buffer) { - newView = Buffer.from(wasmMemory.buffer, info.address, info.length); - } - else { - newView = new Ctor(wasmMemory.buffer, info.address, info.length); - } - emnapiExternalMemory.wasmMemoryViewTable.set(newView, info); - return newView; - } - return view; - }, - getViewPointer: function (view, shouldCopy) { - view = emnapiExternalMemory.getOrUpdateMemoryView(view); - if (view.buffer === wasmMemory.buffer) { - if (emnapiExternalMemory.wasmMemoryViewTable.has(view)) { - var _a = emnapiExternalMemory.wasmMemoryViewTable.get(view), address_1 = _a.address, ownership_1 = _a.ownership, runtimeAllocated_1 = _a.runtimeAllocated; - return { address: address_1, ownership: ownership_1, runtimeAllocated: runtimeAllocated_1, view: view }; - } - return { address: view.byteOffset, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0, view: view }; - } - var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated; - return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view }; - } -}; -/** - * @__sig ippp - */ -function _napi_get_array_length(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isArray()) { - return envObject.setLastError(8 /* napi_status.napi_array_expected */); - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = handle.value.length >>> 0; - {{{ makeSetValue('result', 0, 'v', 'u32') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ipppp - */ -function _napi_get_arraybuffer_info(env, arraybuffer, data, byte_length) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (data) { - {{{ from64('data') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address; - {{{ makeSetValue('data', 0, 'p', '*') }}}; - } - if (byte_length) { - {{{ from64('byte_length') }}}; - {{{ makeSetValue('byte_length', 0, 'handle.value.byteLength', SIZE_TYPE) }}}; - } - return envObject.clearLastError(); -} -/** - * @__sig ippp - */ -function _node_api_set_prototype(env, object, value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var obj = emnapiCtx.handleStore.get(object).value; - if (obj == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var type = typeof obj; - var v = void 0; - try { - v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - var val = emnapiCtx.handleStore.get(value).value; - Object.setPrototypeOf(v, val); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ippp - */ -function _napi_get_prototype(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (handle.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = handle.isObject() || handle.isFunction() ? handle.value : Object(handle.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = envObject.ensureHandleId(Object.getPrototypeOf(v)); - {{{ makeSetValue('result', 0, 'p', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ippppppp - */ -function _napi_get_typedarray_info(env, typedarray, type, length, data, arraybuffer, byte_offset) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!typedarray) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(typedarray); - if (!handle.isTypedArray()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v = handle.value; - if (type) { - {{{ from64('type') }}}; - var t = void 0; - if (v instanceof Int8Array) { - t = 0 /* napi_typedarray_type.napi_int8_array */; - } - else if (v instanceof Uint8Array) { - t = 1 /* napi_typedarray_type.napi_uint8_array */; - } - else if (v instanceof Uint8ClampedArray) { - t = 2 /* napi_typedarray_type.napi_uint8_clamped_array */; - } - else if (v instanceof Int16Array) { - t = 3 /* napi_typedarray_type.napi_int16_array */; - } - else if (v instanceof Uint16Array) { - t = 4 /* napi_typedarray_type.napi_uint16_array */; - } - else if (v instanceof Int32Array) { - t = 5 /* napi_typedarray_type.napi_int32_array */; - } - else if (v instanceof Uint32Array) { - t = 6 /* napi_typedarray_type.napi_uint32_array */; - } - else if (typeof Float16Array === 'function' && v instanceof Float16Array) { - t = 11 /* napi_typedarray_type.napi_float16_array */; - } - else if (v instanceof Float32Array) { - t = 7 /* napi_typedarray_type.napi_float32_array */; - } - else if (v instanceof Float64Array) { - t = 8 /* napi_typedarray_type.napi_float64_array */; - } - else if (v instanceof BigInt64Array) { - t = 9 /* napi_typedarray_type.napi_bigint64_array */; - } - else if (v instanceof BigUint64Array) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - t = 10 /* napi_typedarray_type.napi_biguint64_array */; - } - else { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - {{{ makeSetValue('type', 0, 't', 'i32') }}}; - } - if (length) { - {{{ from64('length') }}}; - {{{ makeSetValue('length', 0, 'v.length', SIZE_TYPE) }}}; - } - var buffer; - if (data || arraybuffer) { - buffer = v.buffer; - if (data) { - {{{ from64('data') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = emnapiExternalMemory.getViewPointer(v, true).address; - {{{ makeSetValue('data', 0, 'p', '*') }}}; - } - if (arraybuffer) { - {{{ from64('arraybuffer') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var ab = envObject.ensureHandleId(buffer); - {{{ makeSetValue('arraybuffer', 0, 'ab', '*') }}}; - } - } - if (byte_offset) { - {{{ from64('byte_offset') }}}; - {{{ makeSetValue('byte_offset', 0, 'v.byteOffset', SIZE_TYPE) }}}; - } - return envObject.clearLastError(); -} -/** - * @__sig ipppp - */ -function _napi_get_buffer_info(env, buffer, data, length) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!buffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(buffer); - if (!handle.isBuffer(emnapiCtx.feature.Buffer)) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (handle.isDataView()) { - return _napi_get_dataview_info(env, buffer, length, data, 0, 0); - } - return _napi_get_typedarray_info(env, buffer, 0, length, data, 0, 0); -} -/** - * @__sig ipppppp - */ -function _napi_get_dataview_info(env, dataview, byte_length, data, arraybuffer, byte_offset) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!dataview) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(dataview); - if (!handle.isDataView()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v = handle.value; - if (byte_length) { - {{{ from64('byte_length') }}}; - {{{ makeSetValue('byte_length', 0, 'v.byteLength', SIZE_TYPE) }}}; - } - var buffer; - if (data || arraybuffer) { - buffer = v.buffer; - if (data) { - {{{ from64('data') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = emnapiExternalMemory.getViewPointer(v, true).address; - {{{ makeSetValue('data', 0, 'p', '*') }}}; - } - if (arraybuffer) { - {{{ from64('arraybuffer') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var ab = envObject.ensureHandleId(buffer); - {{{ makeSetValue('arraybuffer', 0, 'ab', '*') }}}; - } - } - if (byte_offset) { - {{{ from64('byte_offset') }}}; - {{{ makeSetValue('byte_offset', 0, 'v.byteOffset', SIZE_TYPE) }}}; - } - return envObject.clearLastError(); -} -/** - * @__sig ippp - */ -function _napi_get_date_value(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isDate()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - {{{ from64('result') }}}; - v = handle.value.valueOf(); - {{{ makeSetValue('result', 0, 'v', 'double') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ippp - */ -function _napi_get_value_bool(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'boolean') { - return envObject.setLastError(7 /* napi_status.napi_boolean_expected */); - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = handle.value ? 1 : 0; - {{{ makeSetValue('result', 0, 'r', 'i8') }}}; - return envObject.clearLastError(); -} -/** - * @__sig ippp - */ -function _napi_get_value_double(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = handle.value; - {{{ makeSetValue('result', 0, 'r', 'double') }}}; - return envObject.clearLastError(); -} -/** - * @__sig ipppp - */ -function _napi_get_value_bigint_int64(env, value, result, lossless) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!lossless) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - var numberValue = handle.value; - if (typeof numberValue !== 'bigint') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - {{{ from64('lossless') }}}; - {{{ from64('result') }}}; - if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) { - {{{ makeSetValue('lossless', 0, '1', 'i8') }}}; - } - else { - {{{ makeSetValue('lossless', 0, '0', 'i8') }}}; - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - if (numberValue >= (BigInt(1) << BigInt(63))) { - numberValue = numberValue - (BigInt(1) << BigInt(64)); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var low = Number(numberValue & BigInt(0xffffffff)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var high = Number(numberValue >> BigInt(32)); - {{{ makeSetValue('result', 0, 'low', 'i32') }}}; - {{{ makeSetValue('result', 4, 'high', 'i32') }}}; - return envObject.clearLastError(); -} -/** - * @__sig ipppp - */ -function _napi_get_value_bigint_uint64(env, value, result, lossless) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!lossless) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - var numberValue = handle.value; - if (typeof numberValue !== 'bigint') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - {{{ from64('lossless') }}}; - {{{ from64('result') }}}; - if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) { - {{{ makeSetValue('lossless', 0, '1', 'i8') }}}; - } - else { - {{{ makeSetValue('lossless', 0, '0', 'i8') }}}; - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var low = Number(numberValue & BigInt(0xffffffff)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var high = Number(numberValue >> BigInt(32)); - {{{ makeSetValue('result', 0, 'low', 'u32') }}}; - {{{ makeSetValue('result', 4, 'high', 'u32') }}}; - return envObject.clearLastError(); -} -/** - * @__sig ippppp - */ -function _napi_get_value_bigint_words(env, value, sign_bit, word_count, words) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!word_count) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isBigInt()) { - return envObject.setLastError(17 /* napi_status.napi_bigint_expected */); - } - var isMinus = handle.value < BigInt(0); - {{{ from64('sign_bit') }}}; - {{{ from64('words') }}}; - {{{ from64('word_count') }}}; - var word_count_int = {{{ makeGetValue('word_count', 0, SIZE_TYPE) }}}; - {{{ from64('word_count_int') }}}; - var wordCount = 0; - var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; - while (bigintValue !== BigInt(0)) { - wordCount++; - bigintValue = bigintValue >> BigInt(64); - } - bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; - if (!sign_bit && !words) { - word_count_int = wordCount; - {{{ makeSetValue('word_count', 0, 'word_count_int', SIZE_TYPE) }}}; - } - else { - if (!sign_bit) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!words) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var wordsArr = []; - while (bigintValue !== BigInt(0)) { - var uint64 = bigintValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - wordsArr.push(uint64); - bigintValue = bigintValue >> BigInt(64); - } - var len = Math.min(word_count_int, wordsArr.length); - for (var i = 0; i < len; i++) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var low = Number(wordsArr[i] & BigInt(0xffffffff)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var high = Number(wordsArr[i] >> BigInt(32)); - {{{ makeSetValue('words', 'i * 8', 'low', 'u32') }}}; - {{{ makeSetValue('words', 'i * 8 + 4', 'high', 'u32') }}}; - } - {{{ makeSetValue('sign_bit', 0, 'isMinus ? 1 : 0', 'i32') }}}; - {{{ makeSetValue('word_count', 0, 'len', SIZE_TYPE) }}}; - } - return envObject.clearLastError(); -} -/** - * @__sig ippp - */ -function _napi_get_value_external(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (!handle.isExternal()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = handle.data(); - {{{ makeSetValue('result', 0, 'p', '*') }}}; - return envObject.clearLastError(); -} -/** - * @__sig ippp - */ -function _napi_get_value_int32(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = new Int32Array([handle.value])[0]; - {{{ makeSetValue('result', 0, 'v', 'i32') }}}; - return envObject.clearLastError(); -} -/** - * @__sig ippp - */ -function _napi_get_value_int64(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - var numberValue = handle.value; - {{{ from64('result') }}}; - if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) { - {{{ makeSetValue('result', 0, '0', 'i32') }}}; - {{{ makeSetValue('result', 4, '0', 'i32') }}}; - } - else if (numberValue < /* INT64_RANGE_NEGATIVE */ -9223372036854776000) { - {{{ makeSetValue('result', 0, '0', 'i32') }}}; - {{{ makeSetValue('result', 4, '0x80000000', 'i32') }}}; - } - else if (numberValue >= /* INT64_RANGE_POSITIVE */ 9223372036854776000) { - {{{ makeSetValue('result', 0, '0xffffffff', 'u32') }}}; - {{{ makeSetValue('result', 4, '0x7fffffff', 'u32') }}}; - } - else { - emnapiSetValueI64(result, Math.trunc(numberValue)); - } - return envObject.clearLastError(); -} -/** - * @__sig ippppp - */ -function _napi_get_value_string_latin1(env, value, buf, buf_size, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - {{{ from64('buf') }}}; - {{{ from64('buf_size') }}}; - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - if (!buf) { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ makeSetValue('result', 0, 'handle.value.length', SIZE_TYPE) }}}; - } - else if (buf_size !== 0) { - var copied = 0; - var v = void 0; - for (var i = 0; i < buf_size - 1; ++i) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = handle.value.charCodeAt(i) & 0xff; - {{{ makeSetValue('buf', 'i', 'v', 'u8') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - copied++; - } - {{{ makeSetValue('buf', 'copied', '0', 'u8') }}}; - if (result) { - {{{ makeSetValue('result', 0, 'copied', SIZE_TYPE) }}}; - } - } - else if (result) { - {{{ makeSetValue('result', 0, '0', SIZE_TYPE) }}}; - } - return envObject.clearLastError(); -} -/** - * @__sig ippppp - */ -function _napi_get_value_string_utf8(env, value, buf, buf_size, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - {{{ from64('buf') }}}; - {{{ from64('buf_size') }}}; - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - if (!buf) { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var strLength = emnapiString.lengthBytesUTF8(handle.value); - {{{ makeSetValue('result', 0, 'strLength', SIZE_TYPE) }}}; - } - else if (buf_size !== 0) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var copied = emnapiString.stringToUTF8(handle.value, buf, buf_size); - if (result) { - {{{ makeSetValue('result', 0, 'copied', SIZE_TYPE) }}}; - } - } - else if (result) { - {{{ makeSetValue('result', 0, '0', SIZE_TYPE) }}}; - } - return envObject.clearLastError(); -} -/** - * @__sig ippppp - */ -function _napi_get_value_string_utf16(env, value, buf, buf_size, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - {{{ from64('buf') }}}; - {{{ from64('buf_size') }}}; - buf_size = buf_size >>> 0; - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - if (!buf) { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ makeSetValue('result', 0, 'handle.value.length', SIZE_TYPE) }}}; - } - else if (buf_size !== 0) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var copied = emnapiString.stringToUTF16(handle.value, buf, buf_size * 2); - if (result) { - {{{ makeSetValue('result', 0, 'copied / 2', SIZE_TYPE) }}}; - } - } - else if (result) { - {{{ makeSetValue('result', 0, '0', SIZE_TYPE) }}}; - } - return envObject.clearLastError(); -} -/** - * @__sig ippp - */ -function _napi_get_value_uint32(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (typeof handle.value !== 'number') { - return envObject.setLastError(6 /* napi_status.napi_number_expected */); - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = new Uint32Array([handle.value])[0]; - {{{ makeSetValue('result', 0, 'v', 'u32') }}}; - return envObject.clearLastError(); -} -/* eslint-disable @typescript-eslint/indent */ -/** - * @__sig ipip - */ -function _napi_create_int32(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(value).id; - {{{ makeSetValue('result', 0, 'v', '*') }}}; - return envObject.clearLastError(); -} -/** - * @__sig ipip - */ -function _napi_create_uint32(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(value >>> 0).id; - {{{ makeSetValue('result', 0, 'v', '*') }}}; - return envObject.clearLastError(); -} -/** - * @__sig ipjp - */ -function _napi_create_int64(env, low, high, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - var value; -#if WASM_BIGINT - if (!high) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - value = Number(low); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v1 = emnapiCtx.addToCurrentScope(value).id; - {{{ from64('high') }}}; - {{{ makeSetValue('high', 0, 'v1', '*') }}}; -#else - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - value = (low >>> 0) + (high * Math.pow(2, 32)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v2 = emnapiCtx.addToCurrentScope(value).id; - {{{ makeSetValue('result', 0, 'v2', '*') }}}; -#endif - return envObject.clearLastError(); -} -/** - * @__sig ipdp - */ -function _napi_create_double(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(value).id; - {{{ makeSetValue('result', 0, 'v', '*') }}}; - return envObject.clearLastError(); -} -/** - * @__sig ipppp - */ -function _napi_create_string_latin1(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str, autoLength, sizeLength) { - var latin1String = ''; - var len = 0; - if (autoLength) { - while (true) { - var ch = {{{ makeGetValue('str', 0, 'u8') }}}; - if (!ch) - break; - latin1String += String.fromCharCode(ch); - str++; - } - } - else { - while (len < sizeLength) { - var ch = {{{ makeGetValue('str', 0, 'u8') }}}; - if (!ch) - break; - latin1String += String.fromCharCode(ch); - len++; - str++; - } - } - return latin1String; - }); -} -/** - * @__sig ipppp - */ -function _napi_create_string_utf16(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str) { - return emnapiString.UTF16ToString(str, length); - }); -} -/** - * @__sig ipppp - */ -function _napi_create_string_utf8(env, str, length, result) { - return emnapiString.newString(env, str, length, result, function (str) { - return emnapiString.UTF8ToString(str, length); - }); -} -/** - * @__sig ippppppp - */ -function _node_api_create_external_string_latin1(env, str, length, finalize_callback, finalize_hint, result, copied) { - return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, _napi_create_string_latin1, undefined); -} -/** - * @__sig ippppppp - */ -function _node_api_create_external_string_utf16(env, str, length, finalize_callback, finalize_hint, result, copied) { - return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, _napi_create_string_utf16, undefined); -} -/** - * @__sig ipppp - */ -function _node_api_create_property_key_latin1(env, str, length, result) { - return _napi_create_string_latin1(env, str, length, result); -} -/** - * @__sig ipppp - */ -function _node_api_create_property_key_utf8(env, str, length, result) { - return _napi_create_string_utf8(env, str, length, result); -} -/** - * @__sig ipppp - */ -function _node_api_create_property_key_utf16(env, str, length, result) { - return _napi_create_string_utf16(env, str, length, result); -} -/** - * @__sig ipjp - */ -function _napi_create_bigint_int64(env, low, high, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - var value; -#if WASM_BIGINT - if (!high) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - value = low; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v1 = emnapiCtx.addToCurrentScope(value).id; - {{{ from64('high') }}}; - {{{ makeSetValue('high', 0, 'v1', '*') }}}; -#else - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - value = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v2 = emnapiCtx.addToCurrentScope(value).id; - {{{ makeSetValue('result', 0, 'v2', '*') }}}; -#endif - return envObject.clearLastError(); -} -/** - * @__sig ipjp - */ -function _napi_create_bigint_uint64(env, low, high, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - var value; -#if WASM_BIGINT - if (!high) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - value = low & ((BigInt(1) << BigInt(64)) - BigInt(1)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v1 = emnapiCtx.addToCurrentScope(value).id; - {{{ from64('high') }}}; - {{{ makeSetValue('high', 0, 'v1', '*') }}}; -#else - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - value = BigInt(low >>> 0) | (BigInt(high >>> 0) << BigInt(32)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v2 = emnapiCtx.addToCurrentScope(value).id; - {{{ makeSetValue('result', 0, 'v2', '*') }}}; -#endif - return envObject.clearLastError(); -} -/** - * @__sig ipippp - */ -function _napi_create_bigint_words(env, sign_bit, word_count, words, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v, i; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!emnapiCtx.feature.supportBigInt) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('words') }}}; - {{{ from64('word_count') }}}; - word_count = word_count >>> 0; - if (word_count > 2147483647) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (word_count > (1024 * 1024 / (4 * 8) / 2)) { - throw new RangeError('Maximum BigInt size exceeded'); - } - var value = BigInt(0); - for (i = 0; i < word_count; i++) { - var low = {{{ makeGetValue('words', 'i * 8', 'u32') }}}; - var high = {{{ makeGetValue('words', 'i * 8 + 4', 'u32') }}}; - var wordi = BigInt(low) | (BigInt(high) << BigInt(32)); - value += wordi << BigInt(64 * i); - } - value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1)); - {{{ from64('result') }}}; - v = emnapiCtx.addToCurrentScope(value).id; - {{{ makeSetValue('result', 0, 'v', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/* eslint-disable @typescript-eslint/indent */ -/* eslint-disable no-new-func */ -/* eslint-disable @typescript-eslint/no-implied-eval */ -function emnapiCreateFunction(envObject, utf8name, length, cb, data) { - {{{ from64('utf8name') }}}; - var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length)); - var f; - var napiCallback = {{{ makeDynCall('ppp', 'cb') }}}; - var callback = function (envObject) { - return napiCallback(envObject.id, envObject.ctx.scopeStore.currentScope.id); - }; - var makeFunction = function (envObject, callback) { - return function () { - 'use strict'; - var scope = envObject.ctx.openScope(envObject); - var callbackInfo = scope.callbackInfo; - callbackInfo.data = data; - callbackInfo.args = arguments; - callbackInfo.thiz = this; - callbackInfo.fn = f; - try { - var napiValue = envObject.callIntoModule(callback); - return (!napiValue) ? undefined : envObject.ctx.handleStore.get(napiValue).value; - } - finally { - callbackInfo.data = 0; - callbackInfo.args = undefined; - callbackInfo.thiz = undefined; - callbackInfo.fn = undefined; - envObject.ctx.closeScope(envObject, scope); - } - }; - }; - if (functionName === '') { - f = makeFunction(envObject, callback); - return { status: 0 /* napi_status.napi_ok */, f: f }; - } - if (!(/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(functionName))) { - return { status: 1 /* napi_status.napi_invalid_arg */, f: undefined }; - } -#if DYNAMIC_EXECUTION - if (emnapiCtx.feature.supportNewFunction) { - var _ = makeFunction(envObject, callback); - try { - f = (new Function('_', 'return function ' + functionName + '(){' + - '"use strict";' + - 'return _.apply(this,arguments);' + - '};'))(_); - } - catch (_err) { - f = makeFunction(envObject, callback); - if (emnapiCtx.feature.canSetFunctionName) - Object.defineProperty(f, 'name', { value: functionName }); - } - } - else { - f = makeFunction(envObject, callback); - if (emnapiCtx.feature.canSetFunctionName) - Object.defineProperty(f, 'name', { value: functionName }); - } -#else - f = makeFunction(envObject, callback); - if (emnapiCtx.feature.canSetFunctionName) - Object.defineProperty(f, 'name', { value: functionName }); -#endif - return { status: 0 /* napi_status.napi_ok */, f: f }; -} -function emnapiDefineProperty(envObject, obj, propertyName, method, getter, setter, value, attributes, data) { - if (getter || setter) { - var localGetter = void 0; - var localSetter = void 0; - if (getter) { - localGetter = emnapiCreateFunction(envObject, 0, 0, getter, data).f; - } - if (setter) { - localSetter = emnapiCreateFunction(envObject, 0, 0, setter, data).f; - } - var desc = { - configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, - enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, - get: localGetter, - set: localSetter - }; - Object.defineProperty(obj, propertyName, desc); - } - else if (method) { - var localMethod = emnapiCreateFunction(envObject, 0, 0, method, data).f; - var desc = { - configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, - enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, - writable: (attributes & 1 /* napi_property_attributes.napi_writable */) !== 0, - value: localMethod - }; - Object.defineProperty(obj, propertyName, desc); - } - else { - var desc = { - configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, - enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, - writable: (attributes & 1 /* napi_property_attributes.napi_writable */) !== 0, - value: emnapiCtx.handleStore.get(value).value - }; - Object.defineProperty(obj, propertyName, desc); - } -} -function emnapiGetHandle(js_object) { - var handle = emnapiCtx.handleStore.get(js_object); - if (!(handle.isObject() || handle.isFunction())) { - return { status: 1 /* napi_status.napi_invalid_arg */ }; - } - if (typeof emnapiExternalMemory !== 'undefined' && ArrayBuffer.isView(handle.value)) { - if (emnapiExternalMemory.wasmMemoryViewTable.has(handle.value)) { - handle = emnapiCtx.addToCurrentScope(emnapiExternalMemory.wasmMemoryViewTable.get(handle.value)); - } - } - return { status: 0 /* napi_status.napi_ok */, handle: handle }; -} -function emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var referenceId; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!emnapiCtx.feature.supportFinalizer) { - if (finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "finalize_cb" must be 0(NULL)'); - } - if (result) { - throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "result" must be 0(NULL)'); - } - } - if (!js_object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handleResult = emnapiGetHandle(js_object); - if (handleResult.status !== 0 /* napi_status.napi_ok */) { - return envObject.setLastError(handleResult.status); - } - var handle = handleResult.handle; - if (envObject.getObjectBinding(handle.value).wrapped !== 0) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var reference = void 0; - if (result) { - if (!finalize_cb) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1 /* ReferenceOwnership.kUserland */, finalize_cb, native_object, finalize_hint); - {{{ from64('result') }}}; - referenceId = reference.id; - {{{ makeSetValue('result', 0, 'referenceId', '*') }}}; - } - else if (finalize_cb) { - reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, native_object, finalize_hint); - } - else { - reference = emnapiCtx.createReferenceWithData(envObject, handle.id, 0, 0 /* ReferenceOwnership.kRuntime */, native_object); - } - envObject.getObjectBinding(handle.value).wrapped = reference.id; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -function emnapiUnwrap(env, js_object, result, action) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var data; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!js_object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (action === 0 /* UnwrapAction.KeepWrap */) { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var value = emnapiCtx.handleStore.get(js_object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var binding = envObject.getObjectBinding(value.value); - var referenceId = binding.wrapped; - var ref = emnapiCtx.refStore.get(referenceId); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (result) { - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - data = ref.data(); - {{{ makeSetValue('result', 0, 'data', '*') }}}; - } - if (action === 1 /* UnwrapAction.RemoveWrap */) { - binding.wrapped = 0; - if (ref.ownership() === 1 /* ReferenceOwnership.kUserland */) { - // When the wrap is been removed, the finalizer should be reset. - ref.resetFinalizer(); - } - else { - ref.dispose(); - } - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ipppppppp - */ -function _napi_define_class(env, utf8name, length, constructor, callback_data, property_count, properties, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var propPtr, valueHandleId, attributes; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!constructor) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('length') }}}; - {{{ from64('properties') }}}; - {{{ from64('property_count') }}}; - property_count = property_count >>> 0; - if (property_count > 0) { - if (!properties) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if ((length < -1) || (length > 2147483647) || (!utf8name)) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data); - if (fresult.status !== 0 /* napi_status.napi_ok */) - return envObject.setLastError(fresult.status); - var F = fresult.f; - var propertyName = void 0; - for (var i = 0; i < property_count; i++) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - propPtr = properties + (i * ({{{ POINTER_SIZE }}} * 8)); - var utf8Name = {{{ makeGetValue('propPtr', 0, '*') }}}; - var name_1 = {{{ makeGetValue('propPtr', POINTER_SIZE, '*') }}}; - var method = {{{ makeGetValue('propPtr', POINTER_SIZE * 2, '*') }}}; - var getter = {{{ makeGetValue('propPtr', POINTER_SIZE * 3, '*') }}}; - var setter = {{{ makeGetValue('propPtr', POINTER_SIZE * 4, '*') }}}; - var value = {{{ makeGetValue('propPtr', POINTER_SIZE * 5, '*') }}}; - attributes = {{{ makeGetValue('propPtr', POINTER_SIZE * 6, POINTER_WASM_TYPE) }}}; - {{{ from64('attributes') }}}; - var data = {{{ makeGetValue('propPtr', POINTER_SIZE * 7, '*') }}}; - if (utf8Name) { - propertyName = emnapiString.UTF8ToString(utf8Name, -1); - } - else { - if (!name_1) { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - propertyName = emnapiCtx.handleStore.get(name_1).value; - if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - } - if ((attributes & 1024 /* napi_property_attributes.napi_static */) !== 0) { - emnapiDefineProperty(envObject, F, propertyName, method, getter, setter, value, attributes, data); - continue; - } - emnapiDefineProperty(envObject, F.prototype, propertyName, method, getter, setter, value, attributes, data); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var valueHandle = emnapiCtx.addToCurrentScope(F); - valueHandleId = valueHandle.id; - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'valueHandleId', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ipppppp - */ -function _napi_wrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { - return emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result); -} -/** - * @__sig ippp - */ -function _napi_unwrap(env, js_object, result) { - return emnapiUnwrap(env, js_object, result, 0 /* UnwrapAction.KeepWrap */); -} -/** - * @__sig ippp - */ -function _napi_remove_wrap(env, js_object, result) { - return emnapiUnwrap(env, js_object, result, 1 /* UnwrapAction.RemoveWrap */); -} -/** - * @__sig ippp - */ -function _napi_type_tag_object(env, object, type_tag) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var value = emnapiCtx.handleStore.get(object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */); - } - {{{ from64('type_tag') }}}; - if (!type_tag) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var binding = envObject.getObjectBinding(value.value); - if (binding.tag !== null) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var tag = new Uint8Array(16); - tag.set(new Uint8Array(wasmMemory.buffer, type_tag, 16)); - binding.tag = new Uint32Array(tag.buffer); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ipppp - */ -function _napi_check_object_type_tag(env, object, type_tag, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars, one-var - var ret = true, i; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var value = emnapiCtx.handleStore.get(object); - if (!(value.isObject() || value.isFunction())) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */); - } - if (!type_tag) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - if (!result) { - return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); - } - var binding = envObject.getObjectBinding(value.value); - if (binding.tag !== null) { - {{{ from64('type_tag') }}}; - var tag = binding.tag; - var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4); - ret = (tag[0] === typeTag[0] && - tag[1] === typeTag[1] && - tag[2] === typeTag[2] && - tag[3] === typeTag[3]); - } - else { - ret = false; - } - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'ret ? 1 : 0', 'i8') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ipppppp - */ -function _napi_add_finalizer(env, js_object, finalize_data, finalize_cb, finalize_hint, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!emnapiCtx.feature.supportFinalizer) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!js_object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!finalize_cb) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handleResult = emnapiGetHandle(js_object); - if (handleResult.status !== 0 /* napi_status.napi_ok */) { - return envObject.setLastError(handleResult.status); - } - var handle = handleResult.handle; - var ownership = !result ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */; - {{{ from64('finalize_data') }}}; - {{{ from64('finalize_cb') }}}; - {{{ from64('finalize_hint') }}}; - var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint); - if (result) { - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var referenceId = reference.id; - {{{ makeSetValue('result', 0, 'referenceId', '*') }}}; - } - return envObject.clearLastError(); -} -/** - * @__sig ipppp - */ -function _node_api_post_finalizer(env, finalize_cb, finalize_data, finalize_hint) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - envObject.enqueueFinalizer(emnapiCtx.createTrackedFinalizer(envObject, finalize_cb, finalize_data, finalize_hint)); - return envObject.clearLastError(); -} -/** - * @__sig ipippppp - */ -function _emnapi_create_memory_view(env, typedarray_type, external_data, byte_length, finalize_cb, finalize_hint, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('byte_length') }}}; - {{{ from64('external_data') }}}; - {{{ from64('result') }}}; - byte_length = byte_length >>> 0; - if (!external_data) { - byte_length = 0; - } - if (byte_length > 2147483647) { - throw new RangeError('Cannot create a memory view larger than 2147483647 bytes'); - } - if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { - throw new RangeError('Memory out of range'); - } - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('emnapi_create_memory_view', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var viewDescriptor = void 0; - switch (typedarray_type) { - case 0 /* emnapi_memory_view_type.emnapi_int8_array */: - viewDescriptor = { Ctor: Int8Array, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 1 /* emnapi_memory_view_type.emnapi_uint8_array */: - viewDescriptor = { Ctor: Uint8Array, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 2 /* emnapi_memory_view_type.emnapi_uint8_clamped_array */: - viewDescriptor = { Ctor: Uint8ClampedArray, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 3 /* emnapi_memory_view_type.emnapi_int16_array */: - viewDescriptor = { Ctor: Int16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 4 /* emnapi_memory_view_type.emnapi_uint16_array */: - viewDescriptor = { Ctor: Uint16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 5 /* emnapi_memory_view_type.emnapi_int32_array */: - viewDescriptor = { Ctor: Int32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 6 /* emnapi_memory_view_type.emnapi_uint32_array */: - viewDescriptor = { Ctor: Uint32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 7 /* emnapi_memory_view_type.emnapi_float32_array */: - viewDescriptor = { Ctor: Float32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 8 /* emnapi_memory_view_type.emnapi_float64_array */: - viewDescriptor = { Ctor: Float64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 9 /* emnapi_memory_view_type.emnapi_bigint64_array */: - viewDescriptor = { Ctor: BigInt64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 10 /* emnapi_memory_view_type.emnapi_biguint64_array */: - viewDescriptor = { Ctor: BigUint64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case -1 /* emnapi_memory_view_type.emnapi_data_view */: - viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case 11 /* emnapi_memory_view_type.emnapi_float16_array */: - if (typeof Float16Array !== 'function') { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - case -2 /* emnapi_memory_view_type.emnapi_buffer */: { - if (!emnapiCtx.feature.Buffer) { - throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', ''); - } - viewDescriptor = { Ctor: emnapiCtx.feature.Buffer, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; - break; - } - default: return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var Ctor = viewDescriptor.Ctor; - var typedArray = typedarray_type === -2 /* emnapi_memory_view_type.emnapi_buffer */ - ? emnapiCtx.feature.Buffer.from(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length) - : new Ctor(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length); - var handle = emnapiCtx.addToCurrentScope(typedArray); - emnapiExternalMemory.wasmMemoryViewTable.set(typedArray, viewDescriptor); - if (finalize_cb) { - var status_1 = _napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, /* NULL */ 0); - if (status_1 === 10 /* napi_status.napi_pending_exception */) { - var err = envObject.tryCatch.extractException(); - envObject.clearLastError(); - throw err; - } - else if (status_1 !== 0 /* napi_status.napi_ok */) { - return envObject.setLastError(status_1); - } - } - value = handle.id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig i - */ -function _emnapi_is_support_weakref() { - return emnapiCtx.feature.supportFinalizer ? 1 : 0; -} -/** - * @__sig i - */ -function _emnapi_is_support_bigint() { - return emnapiCtx.feature.supportBigInt ? 1 : 0; -} -/** - * @__sig i - */ -function _emnapi_is_node_binding_available() { - return emnapiNodeBinding ? 1 : 0; -} -function emnapiSyncMemory(js_to_wasm, arrayBufferOrView, offset, len) { - offset = offset !== null && offset !== void 0 ? offset : 0; - offset = offset >>> 0; - var view; - if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { - var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address; - if (!pointer) - throw new Error('Unknown ArrayBuffer address'); - if (typeof len !== 'number' || len === -1) { - len = arrayBufferOrView.byteLength - offset; - } - len = len >>> 0; - if (len === 0) - return arrayBufferOrView; - view = new Uint8Array(arrayBufferOrView, offset, len); - var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); - if (!js_to_wasm) { - view.set(wasmMemoryU8.subarray(pointer, pointer + len)); - } - else { - wasmMemoryU8.set(view, pointer); - } - return arrayBufferOrView; - } - if (ArrayBuffer.isView(arrayBufferOrView)) { - var viewPointerInfo = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); - var latestView = viewPointerInfo.view; - var pointer = viewPointerInfo.address; - if (!pointer) - throw new Error('Unknown ArrayBuffer address'); - if (typeof len !== 'number' || len === -1) { - len = latestView.byteLength - offset; - } - len = len >>> 0; - if (len === 0) - return latestView; - view = new Uint8Array(latestView.buffer, latestView.byteOffset + offset, len); - var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); - if (!js_to_wasm) { - view.set(wasmMemoryU8.subarray(pointer, pointer + len)); - } - else { - wasmMemoryU8.set(view, pointer); - } - return latestView; - } - throw new TypeError('emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter'); -} -/** - * @__sig ipippp - */ -function _emnapi_sync_memory(env, js_to_wasm, arraybuffer_or_view, offset, len) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer_or_view) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('arraybuffer_or_view') }}}; - {{{ from64('offset') }}}; - {{{ from64('len') }}}; - var handleId = {{{ makeGetValue('arraybuffer_or_view', 0, '*') }}}; - var handle = envObject.ctx.handleStore.get(handleId); - if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var ret = emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len); - if (handle.value !== ret) { - {{{ from64('arraybuffer_or_view') }}}; - v = envObject.ensureHandleId(ret); - {{{ makeSetValue('arraybuffer_or_view', 0, 'v', '*') }}}; - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -function emnapiGetMemoryAddress(arrayBufferOrView) { - var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer; - var isDataView = arrayBufferOrView instanceof DataView; - var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView; - if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { - throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter'); - } - var info; - if (isArrayBuffer) { - info = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false); - } - else { - info = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); - } - return { - address: info.address, - ownership: info.ownership, - runtimeAllocated: info.runtimeAllocated - }; -} -/** - * @__sig ipppp - */ -function _emnapi_get_memory_address(env, arraybuffer_or_view, address, ownership, runtime_allocated) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p, runtimeAllocated, ownershipOut; - var info; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer_or_view) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!address && !ownership && !runtime_allocated) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var handle = envObject.ctx.handleStore.get(arraybuffer_or_view); - info = emnapiGetMemoryAddress(handle.value); - p = info.address; - if (address) { - {{{ from64('address') }}}; - {{{ makeSetValue('address', 0, 'p', '*') }}}; - } - if (ownership) { - {{{ from64('ownership') }}}; - ownershipOut = info.ownership; - {{{ makeSetValue('ownership', 0, 'ownershipOut', 'i32') }}}; - } - if (runtime_allocated) { - {{{ from64('runtime_allocated') }}}; - runtimeAllocated = info.runtimeAllocated; - {{{ makeSetValue('runtime_allocated', 0, 'runtimeAllocated', 'i8') }}}; - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ipp - */ -function _emnapi_get_runtime_version(env, version) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!version) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var runtimeVersion; - try { - runtimeVersion = emnapiCtx.getRuntimeVersions().version; - } - catch (_) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var versions = runtimeVersion.split('.') - .map(function (n) { return Number(n); }); - {{{ from64('version') }}}; - {{{ makeSetValue('version', 0, 'versions[0]', 'u32') }}}; - {{{ makeSetValue('version', 4, 'versions[1]', 'u32') }}}; - {{{ makeSetValue('version', 8, 'versions[2]', 'u32') }}}; - return envObject.clearLastError(); -} -// emnapiImplementHelper('$emnapiSyncMemory', undefined, emnapiSyncMemory, ['$emnapiExternalMemory'], 'syncMemory') -// emnapiImplementHelper('$emnapiGetMemoryAddress', undefined, emnapiGetMemoryAddress, ['$emnapiExternalMemory'], 'getMemoryAddress') -/** - * @__sig ipp - */ -function _napi_create_array(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope([]).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -/** - * @__sig ippp - */ -function _napi_create_array_with_length(env, length, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('length') }}}; - {{{ from64('result') }}}; - length = length >>> 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(new Array(length)).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -function emnapiCreateArrayBuffer(byte_length, data, shared) { - {{{ from64('byte_length') }}}; - byte_length = byte_length >>> 0; - var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length); - if (data) { - {{{ from64('data') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address; - {{{ makeSetValue('data', 0, 'p', '*') }}}; - } - return arrayBuffer; -} -/** - * @__sig ipppp - */ -function _napi_create_arraybuffer(env, byte_length, data, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false); - value = emnapiCtx.addToCurrentScope(arrayBuffer).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ipppp - */ -function _node_api_create_sharedarraybuffer(env, byte_length, data, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true); - value = emnapiCtx.addToCurrentScope(arrayBuffer).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ipdp - */ -function _napi_create_date(env, time, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(new Date(time)).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ippppp - */ -function _napi_create_external(env, data, finalize_cb, finalize_hint, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_create_external', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var externalHandle = emnapiCtx.getCurrentScope().addExternal(data); - if (finalize_cb) { - emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, data, finalize_hint); - } - {{{ from64('result') }}}; - value = externalHandle.id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ipppppp - */ -function _napi_create_external_arraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('byte_length') }}}; - {{{ from64('external_data') }}}; - {{{ from64('result') }}}; - byte_length = byte_length >>> 0; - if (!external_data) { - byte_length = 0; - } - if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { - throw new RangeError('Memory out of range'); - } - if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { - throw emnapiCtx.createNotSupportWeakRefError('napi_create_external_arraybuffer', 'Parameter "finalize_cb" must be 0(NULL)'); - } - var arrayBuffer = new ArrayBuffer(byte_length); - if (byte_length === 0) { - try { - var MessageChannel_1 = emnapiCtx.feature.MessageChannel; - var messageChannel = new MessageChannel_1(); - messageChannel.port1.postMessage(arrayBuffer, [arrayBuffer]); - } - catch (_) { } - } - else { - var u8arr = new Uint8Array(arrayBuffer); - u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length)); - emnapiExternalMemory.table.set(arrayBuffer, { - address: external_data, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - var handle = emnapiCtx.addToCurrentScope(arrayBuffer); - if (finalize_cb) { - var status_1 = _napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, /* NULL */ 0); - if (status_1 === 10 /* napi_status.napi_pending_exception */) { - var err = envObject.tryCatch.extractException(); - envObject.clearLastError(); - throw err; - } - else if (status_1 !== 0 /* napi_status.napi_ok */) { - return envObject.setLastError(status_1); - } - } - value = handle.id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ipp - */ -function _napi_create_object(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope({}).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -/** - * @__sig ipppppp - */ -function _napi_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('property_count') }}}; - property_count = property_count >>> 0; - if (property_count > 0) { - if (!property_names) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!property_values) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v8_prototype_or_null = prototype_or_null - ? emnapiCtx.handleStore.get(prototype_or_null).value - : null; - var properties = {}; - {{{ from64('property_names') }}}; - {{{ from64('property_values') }}}; - for (var i = 0; i < property_count; i++) { - var name_value = emnapiCtx.handleStore.get({{{ makeGetValue('property_names', 'i * ' + POINTER_SIZE, '*') }}}).value; - if (!(typeof name_value === "string" || typeof name_value === "symbol")) - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - properties[name_value] = { - value: emnapiCtx.handleStore.get({{{ makeGetValue('property_values', 'i * ' + POINTER_SIZE, '*') }}}).value, - writable: true, - enumerable: true, - configurable: true - }; - } - var obj; - try { - obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties); - } - catch (_) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(obj).id; - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -/** - * @__sig ippp - */ -function _napi_create_symbol(env, description, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - if (!description) { - // eslint-disable-next-line symbol-description, @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(Symbol()).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - } - else { - var handle = emnapiCtx.handleStore.get(description); - var desc = handle.value; - if (typeof desc !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id; - {{{ makeSetValue('result', 0, 'v', '*') }}}; - } - return envObject.clearLastError(); -} -/** - * @__sig ipipppp - */ -function _napi_create_typedarray(env, type, length, arraybuffer, byte_offset, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var buffer = handle.value; - {{{ from64('byte_offset') }}}; - {{{ from64('length') }}}; - var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) { - var _a; - byte_offset = byte_offset >>> 0; - length = length >>> 0; - if (size_of_element > 1) { - if ((byte_offset) % (size_of_element) !== 0) { - var err = new RangeError("start offset of ".concat((_a = Type.name) !== null && _a !== void 0 ? _a : '', " should be a multiple of ").concat(size_of_element)); - err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT'; - envObject.tryCatch.setError(err); - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - } - if (((length * size_of_element) + byte_offset) > buffer.byteLength) { - var err = new RangeError('Invalid typed array length'); - err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_LENGTH'; - envObject.tryCatch.setError(err); - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - var out = new Type(buffer, byte_offset, length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { - emnapiExternalMemory.wasmMemoryViewTable.set(out, { - Ctor: Type, - address: byte_offset, - length: length, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(out).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - }; - switch (type) { - case 0 /* napi_typedarray_type.napi_int8_array */: - return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length); - case 1 /* napi_typedarray_type.napi_uint8_array */: - return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length); - case 2 /* napi_typedarray_type.napi_uint8_clamped_array */: - return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length); - case 3 /* napi_typedarray_type.napi_int16_array */: - return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length); - case 4 /* napi_typedarray_type.napi_uint16_array */: - return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length); - case 5 /* napi_typedarray_type.napi_int32_array */: - return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length); - case 6 /* napi_typedarray_type.napi_uint32_array */: - return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length); - case 7 /* napi_typedarray_type.napi_float32_array */: - return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length); - case 8 /* napi_typedarray_type.napi_float64_array */: - return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length); - case 9 /* napi_typedarray_type.napi_bigint64_array */: - return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length); - case 10 /* napi_typedarray_type.napi_biguint64_array */: - return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length); - case 11 /* napi_typedarray_type.napi_float16_array */: - if (typeof Float16Array !== 'function') { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length); - default: - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__deps malloc - * @__sig ippp - */ -function _napi_create_buffer(env, size, data, result) { - var _a; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value, pointer; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', ''); - } - {{{ from64('result') }}}; - var buffer = void 0; - {{{ from64('size') }}}; - size = size >>> 0; - if (!data || (size === 0)) { - buffer = Buffer.alloc(size); - value = emnapiCtx.addToCurrentScope(buffer).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - } - else { - pointer = _malloc({{{ to64('size') }}}); - if (!pointer) - throw new Error('Out of memory'); - new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0); - var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size); - var viewDescriptor = { - Ctor: Buffer, - address: pointer, - length: size, - ownership: emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 1 - }; - emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor); - (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer); - value = emnapiCtx.addToCurrentScope(buffer_1).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - {{{ from64('data') }}}; - {{{ makeSetValue('data', 0, 'pointer', '*') }}}; - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ippppp - */ -function _napi_create_buffer_copy(env, length, data, result_data, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', ''); - } - var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false); - var buffer = Buffer.from(arrayBuffer); - {{{ from64('data') }}}; - {{{ from64('length') }}}; - buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length)); - value = emnapiCtx.addToCurrentScope(buffer).id; - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ipppppp - */ -function _napi_create_external_buffer(env, length, data, finalize_cb, finalize_hint, result) { - return _emnapi_create_memory_view(env, -2 /* emnapi_memory_view_type.emnapi_buffer */, data, length, finalize_cb, finalize_hint, result); -} -/** - * @__sig ippppp - */ -function _node_api_create_buffer_from_arraybuffer(env, arraybuffer, byte_offset, byte_length, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('byte_offset') }}}; - {{{ from64('byte_length') }}}; - byte_offset = byte_offset >>> 0; - byte_length = byte_length >>> 0; - var handle = emnapiCtx.handleStore.get(arraybuffer); - if (!handle.isArrayBuffer()) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var buffer = handle.value; - if ((byte_length + byte_offset) > buffer.byteLength) { - var err = new RangeError('The byte offset + length is out of range'); - err.code = 'ERR_OUT_OF_RANGE'; - throw err; - } - var Buffer = emnapiCtx.feature.Buffer; - if (!Buffer) { - throw emnapiCtx.createNotSupportBufferError('node_api_create_buffer_from_arraybuffer', ''); - } - var out = Buffer.from(buffer, byte_offset, byte_length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { - emnapiExternalMemory.wasmMemoryViewTable.set(out, { - Ctor: Buffer, - address: byte_offset, - length: byte_length, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(out).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ippppp - */ -function _napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('byte_length') }}}; - {{{ from64('byte_offset') }}}; - byte_length = byte_length >>> 0; - byte_offset = byte_offset >>> 0; - var value = emnapiCtx.handleStore.get(arraybuffer).value; - var createDataview = function (buffer) { - if ((byte_length + byte_offset) > buffer.byteLength) { - var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in'); - err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS'; - throw err; - } - var dataview = new DataView(buffer, byte_offset, byte_length); - if (buffer === wasmMemory.buffer) { - if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) { - emnapiExternalMemory.wasmMemoryViewTable.set(dataview, { - Ctor: DataView, - address: byte_offset, - length: byte_length, - ownership: 1 /* ReferenceOwnership.kUserland */, - runtimeAllocated: 0 - }); - } - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = emnapiCtx.addToCurrentScope(dataview).id; - {{{ makeSetValue('result', 0, 'v', '*') }}}; - return envObject.getReturnStatus(); - }; - if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) { - return createDataview(value); - } - else { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** - * @__sig ipppp - */ -function _node_api_symbol_for(env, utf8description, length, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('length') }}}; - {{{ from64('utf8description') }}}; - {{{ from64('result') }}}; - var autoLength = length === -1; - var sizelength = length >>> 0; - if (length !== 0) { - if (!utf8description) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!(autoLength || (sizelength <= 2147483647))) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var descriptionString = emnapiString.UTF8ToString(utf8description, length); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -// eslint-disable-next-line @typescript-eslint/no-unused-vars -/** @__sig ipip */ -function _napi_get_boolean(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = value === 0 ? 3 /* GlobalHandle.FALSE */ : 4 /* GlobalHandle.TRUE */; - {{{ makeSetValue('result', 0, 'v', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ipp */ -function _napi_get_global(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = 5 /* GlobalHandle.GLOBAL */; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ipp */ -function _napi_get_null(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = 2 /* GlobalHandle.NULL */; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ipp */ -function _napi_get_undefined(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = 1 /* GlobalHandle.UNDEFINED */; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ipppp */ -function _napi_set_instance_data(env, data, finalize_cb, finalize_hint) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - {{{ from64('data') }}}; - {{{ from64('finalize_cb') }}}; - {{{ from64('finalize_hint') }}}; - envObject.setInstanceData(data, finalize_cb, finalize_hint); - return envObject.clearLastError(); -} -/** @__sig ipp */ -function _napi_get_instance_data(env, data) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!data) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('data') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = envObject.getInstanceData(); - {{{ makeSetValue('data', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig vpppp */ -function __emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) { - {{{ from64('error_code') }}}; - {{{ from64('engine_error_code') }}}; - {{{ from64('engine_reserved') }}}; - var envObject = emnapiCtx.envStore.get(env); - var lastError = envObject.lastError; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var errorCode = lastError.errorCode; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var engineErrorCode = lastError.engineErrorCode >>> 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var engineReserved = lastError.engineReserved; - {{{ from64('engineReserved') }}}; - {{{ makeSetValue('error_code', 0, 'errorCode', 'i32') }}}; - {{{ makeSetValue('engine_error_code', 0, 'engineErrorCode', 'u32') }}}; - {{{ makeSetValue('engine_reserved', 0, 'engineReserved', '*') }}}; -} -/** @__sig ipp */ -function _napi_throw(env, error) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!error) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - envObject.tryCatch.setError(emnapiCtx.handleStore.get(error).value); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippp */ -function _napi_throw_error(env, code, msg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('code') }}}; - {{{ from64('msg') }}}; - var error = new Error(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippp */ -function _napi_throw_type_error(env, code, msg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('code') }}}; - {{{ from64('msg') }}}; - var error = new TypeError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippp */ -function _napi_throw_range_error(env, code, msg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('code') }}}; - {{{ from64('msg') }}}; - var error = new RangeError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippp */ -function _node_api_throw_syntax_error(env, code, msg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('code') }}}; - {{{ from64('msg') }}}; - var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1)); - if (code) - error.code = emnapiString.UTF8ToString(code, -1); - envObject.tryCatch.setError(error); - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipp */ -function _napi_is_exception_pending(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = envObject.tryCatch.hasCaught(); - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'r ? 1 : 0', 'i8') }}}; - return envObject.clearLastError(); -} -/** @__sig ipppp */ -function _napi_create_error(env, code, msg, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var error = new Error(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - error.code = codeValue; - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(error).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ipppp */ -function _napi_create_type_error(env, code, msg, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var error = new TypeError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - error.code = codeValue; - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(error).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ipppp */ -function _napi_create_range_error(env, code, msg, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var error = new RangeError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - error.code = codeValue; - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(error).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ipppp */ -function _node_api_create_syntax_error(env, code, msg, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!msg) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var msgValue = emnapiCtx.handleStore.get(msg).value; - if (typeof msgValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var error = new SyntaxError(msgValue); - if (code) { - var codeValue = emnapiCtx.handleStore.get(code).value; - if (typeof codeValue !== 'string') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - error.code = codeValue; - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = emnapiCtx.addToCurrentScope(error).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ipp */ -function _napi_get_and_clear_last_exception(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - if (!envObject.tryCatch.hasCaught()) { - {{{ makeSetValue('result', 0, '1', '*') }}}; // ID_UNDEFINED - return envObject.clearLastError(); - } - else { - var err = envObject.tryCatch.exception(); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = envObject.ensureHandleId(err); - {{{ makeSetValue('result', 0, 'value', '*') }}}; - envObject.tryCatch.reset(); - } - return envObject.clearLastError(); -} -/** @__sig vpppp */ -function _napi_fatal_error(location, location_len, message, message_len) { - {{{ from64('location') }}}; - {{{ from64('location_len') }}}; - {{{ from64('message') }}}; - {{{ from64('message_len') }}}; - var locationStr = emnapiString.UTF8ToString(location, location_len); - var messageStr = emnapiString.UTF8ToString(message, message_len); - if (emnapiNodeBinding) { - emnapiNodeBinding.napi.fatalError(locationStr, messageStr); - } - else { - abort('FATAL ERROR: ' + locationStr + ' ' + messageStr); - } -} -/** @__sig ipp */ -function _napi_fatal_exception(env, err) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!err) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var error = envObject.ctx.handleStore.get(err); - try { - envObject.triggerFatalException(error.value); - } - catch (_) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipppppp */ -function _napi_create_function(env, utf8name, length, cb, data, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!cb) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('length') }}}; - var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data); - if (fresult.status !== 0 /* napi_status.napi_ok */) - return envObject.setLastError(fresult.status); - var f = fresult.f; - var valueHandle = emnapiCtx.addToCurrentScope(f); - {{{ from64('result') }}}; - value = valueHandle.id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipppppp */ -function _napi_get_cb_info(env, cbinfo, argc, argv, this_arg, data) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!cbinfo) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; - {{{ from64('argc') }}}; - {{{ from64('argv') }}}; - if (argv) { - if (!argc) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var argcValue = {{{ makeGetValue('argc', 0, SIZE_TYPE) }}}; - {{{ from64('argcValue') }}}; - var len = cbinfoValue.args.length; - var arrlen = argcValue < len ? argcValue : len; - var i = 0; - for (; i < arrlen; i++) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var argVal = envObject.ensureHandleId(cbinfoValue.args[i]); - {{{ makeSetValue('argv', 'i * ' + POINTER_SIZE, 'argVal', '*') }}}; - } - if (i < argcValue) { - for (; i < argcValue; i++) { - {{{ makeSetValue('argv', 'i * ' + POINTER_SIZE, '1', '*') }}}; - } - } - } - if (argc) { - {{{ makeSetValue('argc', 0, 'cbinfoValue.args.length', SIZE_TYPE) }}}; - } - if (this_arg) { - {{{ from64('this_arg') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v = envObject.ensureHandleId(cbinfoValue.thiz); - {{{ makeSetValue('this_arg', 0, 'v', '*') }}}; - } - if (data) { - {{{ from64('data') }}}; - {{{ makeSetValue('data', 0, 'cbinfoValue.data', '*') }}}; - } - return envObject.clearLastError(); -} -/** @__sig ipppppp */ -function _napi_call_function(env, recv, func, argc, argv, result) { - var i = 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!recv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('argc') }}}; - {{{ from64('argv') }}}; - {{{ from64('result') }}}; - argc = argc >>> 0; - if (argc > 0) { - if (!argv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v8recv = emnapiCtx.handleStore.get(recv).value; - if (!func) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var v8func = emnapiCtx.handleStore.get(func).value; - if (typeof v8func !== 'function') - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var args = []; - for (; i < argc; i++) { - var argVal = {{{ makeGetValue('argv', 'i * ' + POINTER_SIZE, '*') }}}; - args.push(emnapiCtx.handleStore.get(argVal).value); - } - var ret = v8func.apply(v8recv, args); - if (result) { - v = envObject.ensureHandleId(ret); - {{{ makeSetValue('result', 0, 'v', '*') }}}; - } - return envObject.clearLastError(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippppp */ -function _napi_new_instance(env, constructor, argc, argv, result) { - var i; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!constructor) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('argc') }}}; - {{{ from64('argv') }}}; - {{{ from64('result') }}}; - argc = argc >>> 0; - if (argc > 0) { - if (!argv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var Ctor = emnapiCtx.handleStore.get(constructor).value; - if (typeof Ctor !== 'function') - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var ret = void 0; - if (emnapiCtx.feature.supportReflect) { - var argList = Array(argc); - for (i = 0; i < argc; i++) { - var argVal = {{{ makeGetValue('argv', 'i * ' + POINTER_SIZE, '*') }}}; - argList[i] = emnapiCtx.handleStore.get(argVal).value; - } - ret = Reflect.construct(Ctor, argList, Ctor); - } - else { - var args = Array(argc + 1); - args[0] = undefined; - for (i = 0; i < argc; i++) { - var argVal = {{{ makeGetValue('argv', 'i * ' + POINTER_SIZE, '*') }}}; - args[i + 1] = emnapiCtx.handleStore.get(argVal).value; - } - var BoundCtor = Ctor.bind.apply(Ctor, args); - ret = new BoundCtor(); - } - if (result) { - v = envObject.ensureHandleId(ret); - {{{ makeSetValue('result', 0, 'v', '*') }}}; - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippp */ -function _napi_get_new_target(env, cbinfo, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!cbinfo) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; - var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn; - var value = thiz == null || thiz.constructor == null - ? 0 - : thiz instanceof fn - ? envObject.ensureHandleId(thiz.constructor) - : 0; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ipp */ -function _napi_open_handle_scope(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var scope = emnapiCtx.openScope(envObject); - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'scope.id', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ipp */ -function _napi_close_handle_scope(env, scope) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if ((envObject.openHandleScopes === 0)) { - return 13 /* napi_status.napi_handle_scope_mismatch */; - } - emnapiCtx.closeScope(envObject); - return envObject.clearLastError(); -} -/** @__sig ipp */ -function _napi_open_escapable_handle_scope(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var scope = emnapiCtx.openScope(envObject); - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'scope.id', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ipp */ -function _napi_close_escapable_handle_scope(env, scope) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if ((envObject.openHandleScopes === 0)) { - return 13 /* napi_status.napi_handle_scope_mismatch */; - } - emnapiCtx.closeScope(envObject); - return envObject.clearLastError(); -} -/** @__sig ipppp */ -function _napi_escape_handle(env, scope, escapee, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!scope) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!escapee) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var scopeObject = emnapiCtx.scopeStore.get(scope); - if (!scopeObject.escapeCalled()) { - {{{ from64('escapee') }}}; - {{{ from64('result') }}}; - var newHandle = scopeObject.escape(escapee); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value = newHandle ? newHandle.id : 0; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.clearLastError(); - } - return envObject.setLastError(12 /* napi_status.napi_escape_called_twice */); -} -/** @__sig ippip */ -function _napi_create_reference(env, value, initial_refcount, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (envObject.moduleApiVersion < 10) { - if (!(handle.isObject() || handle.isFunction() || handle.isSymbol())) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1 /* ReferenceOwnership.kUserland */); - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'ref.id', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ipp */ -function _napi_delete_reference(env, ref) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - emnapiCtx.refStore.get(ref).dispose(); - return envObject.clearLastError(); -} -/** @__sig ippp */ -function _napi_reference_ref(env, ref, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var count = emnapiCtx.refStore.get(ref).ref(); - if (result) { - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'count', 'u32') }}}; - } - return envObject.clearLastError(); -} -/** @__sig ippp */ -function _napi_reference_unref(env, ref, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var reference = emnapiCtx.refStore.get(ref); - var refcount = reference.refcount(); - if (refcount === 0) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var count = reference.unref(); - if (result) { - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'count', 'u32') }}}; - } - return envObject.clearLastError(); -} -/** @__sig ippp */ -function _napi_get_reference_value(env, ref, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!ref) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var reference = emnapiCtx.refStore.get(ref); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var handleId = reference.get(envObject); - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'handleId', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ippp */ -function _napi_add_env_cleanup_hook(env, fun, arg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!fun) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('fun') }}}; - {{{ from64('arg') }}}; - emnapiCtx.addCleanupHook(envObject, fun, arg); - return 0 /* napi_status.napi_ok */; -} -/** @__sig ippp */ -function _napi_remove_env_cleanup_hook(env, fun, arg) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!fun) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('fun') }}}; - {{{ from64('arg') }}}; - emnapiCtx.removeCleanupHook(envObject, fun, arg); - return 0 /* napi_status.napi_ok */; -} -/** @__sig vp */ -function __emnapi_env_ref(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.ref(); -} -/** @__sig vp */ -function __emnapi_env_unref(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.unref(); -} -/** @__sig ippi */ -function __emnapi_get_filename(env, buf, len) { - var envObject = emnapiCtx.envStore.get(env); - var filename = envObject.filename; - if (!buf) { - return emnapiString.lengthBytesUTF8(filename); - } - return emnapiString.stringToUTF8(filename, buf, len); -} -/** @__sig vppdp */ -function __emnapi_node_emit_async_init(async_resource, async_resource_name, trigger_async_id, result) { - if (!emnapiNodeBinding) - return; - var resource = emnapiCtx.handleStore.get(async_resource).value; - var resource_name = emnapiCtx.handleStore.get(async_resource_name).value; - var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resource_name, trigger_async_id); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var asyncId = asyncContext.asyncId; - var triggerAsyncId = asyncContext.triggerAsyncId; - if (result) { - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'asyncId', 'double') }}}; - {{{ makeSetValue('result', 8, 'triggerAsyncId', 'double') }}}; - } -} -/** @__sig vdd */ -function __emnapi_node_emit_async_destroy(async_id, trigger_async_id) { - if (!emnapiNodeBinding) - return; - emnapiNodeBinding.node.emitAsyncDestroy({ - asyncId: async_id, - triggerAsyncId: trigger_async_id - }); -} -/* vpddp export function _emnapi_node_open_callback_scope (async_resource: napi_value, async_id: double, trigger_async_id: double, result: Pointer): void { - if (!emnapiNodeBinding || !result) return - const resource = emnapiCtx.handleStore.get(async_resource)!.value - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const nativeCallbackScopePointer = emnapiNodeBinding.node.openCallbackScope(resource, { - asyncId: async_id, - triggerAsyncId: trigger_async_id - }) - - from64('result') - $_TODO_makeSetValue('result', 0, 'nativeCallbackScopePointer', 'i64') -} - -vp -export function _emnapi_node_close_callback_scope (scope: Pointer): void { - if (!emnapiNodeBinding || !scope) return - from64('scope') - const nativeCallbackScopePointer = $_TODO_makeGetValue('scope', 0, 'i64') - emnapiNodeBinding.node.closeCallbackScope(BigInt(nativeCallbackScopePointer)) -} */ -/** @__sig ipppppddp */ -function __emnapi_node_make_callback(env, async_resource, cb, argv, size, async_id, trigger_async_id, result) { - var i = 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!emnapiNodeBinding) - return; - var resource = emnapiCtx.handleStore.get(async_resource).value; - var callback = emnapiCtx.handleStore.get(cb).value; - {{{ from64('argv') }}}; - {{{ from64('size') }}}; - size = size >>> 0; - var arr = Array(size); - for (; i < size; i++) { - var argVal = {{{ makeGetValue('argv', 'i * ' + POINTER_SIZE, '*') }}}; - arr[i] = emnapiCtx.handleStore.get(argVal).value; - } - var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, { - asyncId: async_id, - triggerAsyncId: trigger_async_id - }); - if (result) { - {{{ from64('result') }}}; - var envObject = emnapiCtx.envStore.get(env); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = envObject.ensureHandleId(ret); - {{{ makeSetValue('result', 0, 'v', '*') }}}; - } -} -/** @__sig ippp */ -function __emnapi_async_init_js(async_resource, async_resource_name, result) { - if (!emnapiNodeBinding) { - return 9 /* napi_status.napi_generic_failure */; - } - var resource; - if (async_resource) { - resource = Object(emnapiCtx.handleStore.get(async_resource).value); - } - var name = emnapiCtx.handleStore.get(async_resource_name).value; - var ret = emnapiNodeBinding.napi.asyncInit(resource, name); - if (ret.status !== 0) - return ret.status; - var numberValue = ret.value; - if (!((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63))))) { - numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); - if (numberValue >= (BigInt(1) << BigInt(63))) { - numberValue = numberValue - (BigInt(1) << BigInt(64)); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var low = Number(numberValue & BigInt(0xffffffff)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var high = Number(numberValue >> BigInt(32)); - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'low', 'i32') }}}; - {{{ makeSetValue('result', 4, 'high', 'i32') }}}; - return 0 /* napi_status.napi_ok */; -} -/** @__sig ip */ -function __emnapi_async_destroy_js(async_context) { - if (!emnapiNodeBinding) { - return 9 /* napi_status.napi_generic_failure */; - } - {{{ from64('async_context') }}}; - var low = {{{ makeGetValue('async_context', 0, 'i32') }}}; - var high = {{{ makeGetValue('async_context', 4, 'i32') }}}; - var pointer = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); - var ret = emnapiNodeBinding.napi.asyncDestroy(pointer); - if (ret.status !== 0) - return ret.status; - return 0 /* napi_status.napi_ok */; -} -// https://github.com/nodejs/node-addon-api/pull/1283 -/** @__sig ipppp */ -function _napi_open_callback_scope(env, ignored, async_context_handle, result) { - throw new Error('napi_open_callback_scope has not been implemented yet'); -} -/** @__sig ipp */ -function _napi_close_callback_scope(env, scope) { - throw new Error('napi_close_callback_scope has not been implemented yet'); -} -/** @__sig ippppppp */ -function _napi_make_callback(env, async_context, recv, func, argc, argv, result) { - var i = 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!emnapiNodeBinding) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - if (!recv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (argc > 0) { - if (!argv) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var v8recv = Object(emnapiCtx.handleStore.get(recv).value); - var v8func = emnapiCtx.handleStore.get(func).value; - if (typeof v8func !== 'function') { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - {{{ from64('async_context') }}}; - var low = {{{ makeGetValue('async_context', 0, 'i32') }}}; - var high = {{{ makeGetValue('async_context', 4, 'i32') }}}; - var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); - {{{ from64('argv') }}}; - {{{ from64('argc') }}}; - argc = argc >>> 0; - var arr = Array(argc); - for (; i < argc; i++) { - var argVal = {{{ makeGetValue('argv', 'i * ' + POINTER_SIZE, '*') }}}; - arr[i] = emnapiCtx.handleStore.get(argVal).value; - } - var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr); - if (ret.error) { - throw ret.error; - } - if (ret.status !== 0 /* napi_status.napi_ok */) - return envObject.setLastError(ret.status); - if (result) { - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = envObject.ensureHandleId(ret.value); - {{{ makeSetValue('result', 0, 'v', '*') }}}; - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig vp */ -function __emnapi_env_check_gc_access(env) { - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); -} -/** @__sig ippp */ -function _napi_create_promise(env, deferred, promise) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var deferredObjectId, value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!promise) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var p = new Promise(function (resolve, reject) { - var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject }); - deferredObjectId = deferredObject.id; - {{{ from64('deferred') }}}; - {{{ makeSetValue('deferred', 0, 'deferredObjectId', '*') }}}; - }); - {{{ from64('promise') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(p).id; - {{{ makeSetValue('promise', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippp */ -function _napi_resolve_deferred(env, deferred, resolution) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!resolution) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var deferredObject = emnapiCtx.deferredStore.get(deferred); - deferredObject.resolve(emnapiCtx.handleStore.get(resolution).value); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippp */ -function _napi_reject_deferred(env, deferred, resolution) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!deferred) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!resolution) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var deferredObject = emnapiCtx.deferredStore.get(deferred); - deferredObject.reject(emnapiCtx.handleStore.get(resolution).value); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippp */ -function _napi_is_promise(env, value, is_promise) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!is_promise) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - {{{ from64('is_promise') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isPromise() ? 1 : 0; - {{{ makeSetValue('is_promise', 0, 'r', 'i8') }}}; - return envObject.clearLastError(); -} -/** @__sig ippiiip */ -function _napi_get_all_property_names(env, object, key_mode, key_filter, key_conversion, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var obj = void 0; - try { - obj = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - if (key_mode !== 0 /* napi_key_collection_mode.napi_key_include_prototypes */ && key_mode !== 1 /* napi_key_collection_mode.napi_key_own_only */) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (key_conversion !== 0 /* napi_key_conversion.napi_key_keep_numbers */ && key_conversion !== 1 /* napi_key_conversion.napi_key_numbers_to_strings */) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var props = []; - var names = void 0; - var symbols = void 0; - var i = void 0; - var own = true; - var integerIndiceRegex = /^(0|[1-9][0-9]*)$/; - do { - names = Object.getOwnPropertyNames(obj); - symbols = Object.getOwnPropertySymbols(obj); - for (i = 0; i < names.length; i++) { - props.push({ - name: integerIndiceRegex.test(names[i]) ? Number(names[i]) : names[i], - desc: Object.getOwnPropertyDescriptor(obj, names[i]), - own: own - }); - } - for (i = 0; i < symbols.length; i++) { - props.push({ - name: symbols[i], - desc: Object.getOwnPropertyDescriptor(obj, symbols[i]), - own: own - }); - } - if (key_mode === 1 /* napi_key_collection_mode.napi_key_own_only */) { - break; - } - obj = Object.getPrototypeOf(obj); - own = false; - } while (obj); - var ret = []; - var addName = function (ret, name, key_filter, conversion_mode) { - if (ret.indexOf(name) !== -1) - return; - if (conversion_mode === 0 /* napi_key_conversion.napi_key_keep_numbers */) { - ret.push(name); - } - else if (conversion_mode === 1 /* napi_key_conversion.napi_key_numbers_to_strings */) { - var realName = typeof name === 'number' ? String(name) : name; - if (typeof realName === 'string') { - if (!(key_filter & 8 /* napi_key_filter.napi_key_skip_strings */)) { - ret.push(realName); - } - } - else { - ret.push(realName); - } - } - }; - for (i = 0; i < props.length; i++) { - var prop = props[i]; - var name_1 = prop.name; - var desc = prop.desc; - if (key_filter === 0 /* napi_key_filter.napi_key_all_properties */) { - addName(ret, name_1, key_filter, key_conversion); - } - else { - if (key_filter & 8 /* napi_key_filter.napi_key_skip_strings */ && typeof name_1 === 'string') { - continue; - } - if (key_filter & 16 /* napi_key_filter.napi_key_skip_symbols */ && typeof name_1 === 'symbol') { - continue; - } - var shouldAdd = true; - switch (key_filter & 7) { - case 1 /* napi_key_filter.napi_key_writable */: { - shouldAdd = Boolean(desc.writable); - break; - } - case 2 /* napi_key_filter.napi_key_enumerable */: { - shouldAdd = Boolean(desc.enumerable); - break; - } - case (1 /* napi_key_filter.napi_key_writable */ | 2 /* napi_key_filter.napi_key_enumerable */): { - shouldAdd = Boolean(desc.writable && desc.enumerable); - break; - } - case 4 /* napi_key_filter.napi_key_configurable */: { - shouldAdd = Boolean(desc.configurable); - break; - } - case (4 /* napi_key_filter.napi_key_configurable */ | 1 /* napi_key_filter.napi_key_writable */): { - shouldAdd = Boolean(desc.configurable && desc.writable); - break; - } - case (4 /* napi_key_filter.napi_key_configurable */ | 2 /* napi_key_filter.napi_key_enumerable */): { - shouldAdd = Boolean(desc.configurable && desc.enumerable); - break; - } - case (4 /* napi_key_filter.napi_key_configurable */ | 2 /* napi_key_filter.napi_key_enumerable */ | 1 /* napi_key_filter.napi_key_writable */): { - shouldAdd = Boolean(desc.configurable && desc.enumerable && desc.writable); - break; - } - } - if (shouldAdd) { - addName(ret, name_1, key_filter, key_conversion); - } - } - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = emnapiCtx.addToCurrentScope(ret).id; - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippp */ -function _napi_get_property_names(env, object, result) { - return _napi_get_all_property_names(env, object, 0 /* napi_key_collection_mode.napi_key_include_prototypes */, 2 /* napi_key_filter.napi_key_enumerable */ | 16 /* napi_key_filter.napi_key_skip_symbols */, 1 /* napi_key_conversion.napi_key_numbers_to_strings */, result); -} -/** @__sig ipppp */ -function _napi_set_property(env, object, key, value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - h.value[emnapiCtx.handleStore.get(key).value] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipppp */ -function _napi_has_property(env, object, key, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - {{{ from64('result') }}}; - r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0; - {{{ makeSetValue('result', 0, 'r', 'i8') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipppp */ -function _napi_get_property(env, object, key, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]); - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipppp */ -function _napi_delete_property(env, object, key, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - var propertyKey = emnapiCtx.handleStore.get(key).value; - if (emnapiCtx.feature.supportReflect) { - r = Reflect.deleteProperty(h.value, propertyKey); - } - else { - try { - r = delete h.value[propertyKey]; - } - catch (_) { - r = false; - } - } - if (result) { - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'r ? 1 : 0', 'i8') }}}; - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipppp */ -function _napi_has_own_property(env, object, key, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value, r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!key) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - var prop = emnapiCtx.handleStore.get(key).value; - if (typeof prop !== 'string' && typeof prop !== 'symbol') { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value); - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'r ? 1 : 0', 'i8') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipppp */ -function _napi_set_named_property(env, object, cname, value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - if (!cname) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - {{{ from64('cname') }}}; - emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipppp */ -function _napi_has_named_property(env, object, utf8name, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!utf8name) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - {{{ from64('utf8name') }}}; - {{{ from64('result') }}}; - r = emnapiString.UTF8ToString(utf8name, -1) in v; - {{{ makeSetValue('result', 0, 'r ? 1 : 0', 'i8') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipppp */ -function _napi_get_named_property(env, object, utf8name, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!utf8name) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - {{{ from64('utf8name') }}}; - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]); - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippip */ -function _napi_set_element(env, object, index, value) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - h.value[index >>> 0] = emnapiCtx.handleStore.get(value).value; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippip */ -function _napi_has_element(env, object, index, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - {{{ from64('result') }}}; - r = ((index >>> 0) in v) ? 1 : 0; - {{{ makeSetValue('result', 0, 'r', 'i8') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippip */ -function _napi_get_element(env, object, index, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (h.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var v = void 0; - try { - v = h.isObject() || h.isFunction() ? h.value : Object(h.value); - } - catch (_) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(v[index >>> 0]); - {{{ makeSetValue('result', 0, 'value', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippip */ -function _napi_delete_element(env, object, index, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - if (emnapiCtx.feature.supportReflect) { - r = Reflect.deleteProperty(h.value, index >>> 0); - } - else { - try { - r = delete h.value[index >>> 0]; - } - catch (_) { - r = false; - } - } - if (result) { - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'r ? 1 : 0', 'i8') }}}; - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipppp */ -function _napi_define_properties(env, object, property_count, properties) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var propPtr, attributes; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - {{{ from64('properties') }}}; - {{{ from64('property_count') }}}; - property_count = property_count >>> 0; - if (property_count > 0) { - if (!properties) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - var propertyName = void 0; - for (var i = 0; i < property_count; i++) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - propPtr = properties + (i * ({{{ POINTER_SIZE }}} * 8)); - var utf8Name = {{{ makeGetValue('propPtr', 0, '*') }}}; - var name_2 = {{{ makeGetValue('propPtr', POINTER_SIZE, '*') }}}; - var method = {{{ makeGetValue('propPtr', POINTER_SIZE * 2, '*') }}}; - var getter = {{{ makeGetValue('propPtr', POINTER_SIZE * 3, '*') }}}; - var setter = {{{ makeGetValue('propPtr', POINTER_SIZE * 4, '*') }}}; - var value = {{{ makeGetValue('propPtr', POINTER_SIZE * 5, '*') }}}; - attributes = {{{ makeGetValue('propPtr', POINTER_SIZE * 6, POINTER_WASM_TYPE) }}}; - {{{ from64('attributes') }}}; - var data = {{{ makeGetValue('propPtr', POINTER_SIZE * 7, '*') }}}; - if (utf8Name) { - propertyName = emnapiString.UTF8ToString(utf8Name, -1); - } - else { - if (!name_2) { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - propertyName = emnapiCtx.handleStore.get(name_2).value; - if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { - return envObject.setLastError(4 /* napi_status.napi_name_expected */); - } - } - emnapiDefineProperty(envObject, maybeObject, propertyName, method, getter, setter, value, attributes, data); - } - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipp */ -function _napi_object_freeze(env, object) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - Object.freeze(maybeObject); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipp */ -function _napi_object_seal(env, object) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(object); - var maybeObject = h.value; - if (!(h.isObject() || h.isFunction())) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - Object.seal(maybeObject); - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/* eslint-disable @typescript-eslint/indent */ -/** @__sig ippp */ -function _napi_run_script(env, script, result) { - var status; -#if DYNAMIC_EXECUTION - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var value; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!script) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var v8Script = emnapiCtx.handleStore.get(script); - if (!v8Script.isString()) { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - var g = emnapiCtx.handleStore.get(5 /* GlobalHandle.GLOBAL */).value; - var ret = g.eval(v8Script.value); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - value = envObject.ensureHandleId(ret); - {{{ makeSetValue('result', 0, 'value', '*') }}}; - status = envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -#else - status = _napi_set_last_error(env, 9 /* napi_status.napi_generic_failure */, 0, 0); -#endif - return status; -} -/* eslint-disable @typescript-eslint/indent */ -/** - * @__deps malloc - * @__deps free - * @__postset - * ``` - * emnapiTSFN.init(); - * ``` - */ -var emnapiTSFN = { - offset: { - /* napi_ref */ resource: 0, - /* double */ async_id: 8, - /* double */ trigger_async_id: 16, - /* size_t */ queue_size: 24, - /* void* */ queue: 1 * {{{ POINTER_SIZE }}} + 24, - /* size_t */ thread_count: 2 * {{{ POINTER_SIZE }}} + 24, - /* bool */ is_closing: 3 * {{{ POINTER_SIZE }}} + 24, - /* atomic_uchar */ dispatch_state: 3 * {{{ POINTER_SIZE }}} + 28, - /* void* */ context: 3 * {{{ POINTER_SIZE }}} + 32, - /* size_t */ max_queue_size: 4 * {{{ POINTER_SIZE }}} + 32, - /* napi_ref */ ref: 5 * {{{ POINTER_SIZE }}} + 32, - /* napi_env */ env: 6 * {{{ POINTER_SIZE }}} + 32, - /* void* */ finalize_data: 7 * {{{ POINTER_SIZE }}} + 32, - /* napi_finalize */ finalize_cb: 8 * {{{ POINTER_SIZE }}} + 32, - /* napi_threadsafe_function_call_js */ call_js_cb: 9 * {{{ POINTER_SIZE }}} + 32, - /* bool */ handles_closing: 10 * {{{ POINTER_SIZE }}} + 32, - /* bool */ async_ref: 10 * {{{ POINTER_SIZE }}} + 36, - /* int32_t */ mutex: 10 * {{{ POINTER_SIZE }}} + 40, - /* int32_t */ cond: 10 * {{{ POINTER_SIZE }}} + 44, - end: 10 * {{{ POINTER_SIZE }}} + 48 - }, - init: function () { - if (typeof PThread !== 'undefined') { - PThread.unusedWorkers.forEach(emnapiTSFN.addListener); - PThread.runningWorkers.forEach(emnapiTSFN.addListener); - var __original_getNewWorker_1 = PThread.getNewWorker; - PThread.getNewWorker = function () { - var r = __original_getNewWorker_1.apply(this, arguments); - emnapiTSFN.addListener(r); - return r; - }; - } - }, - addListener: function (worker) { - if (!worker) - return false; - if (worker._emnapiTSFNListener) - return true; - var handler = function (e) { - var data = ENVIRONMENT_IS_NODE ? e : e.data; - var __emnapi__ = data.__emnapi__; - if (__emnapi__) { - var type = __emnapi__.type; - var payload = __emnapi__.payload; - if (type === 'tsfn-send') { - emnapiTSFN.dispatch(payload.tsfn); - } - } - }; - var dispose = function () { - if (ENVIRONMENT_IS_NODE) { - worker.off('message', handler); - } - else { - worker.removeEventListener('message', handler, false); - } - delete worker._emnapiTSFNListener; - }; - worker._emnapiTSFNListener = { handler: handler, dispose: dispose }; - if (ENVIRONMENT_IS_NODE) { - worker.on('message', handler); - } - else { - worker.addEventListener('message', handler, false); - } - return true; - }, - initQueue: function (func) { - var size = 2 * {{{ POINTER_SIZE }}}; - var queue = _malloc({{{ to64('size') }}}); - if (!queue) - return false; - new Uint8Array(wasmMemory.buffer, queue, size).fill(0); - emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false); - return true; - }, - destroyQueue: function (func) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - if (queue) { - _free({{{ to64('queue') }}}); - } - }, - pushQueue: function (func, data) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - var head = emnapiTSFN.loadSizeTypeValue(queue, false); - var tail = emnapiTSFN.loadSizeTypeValue(queue + {{{ POINTER_SIZE }}}, false); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var size = 2 * {{{ POINTER_SIZE }}}; - var node = _malloc({{{ to64('size') }}}); - if (!node) - throw new Error('OOM'); - emnapiTSFN.storeSizeTypeValue(node, data, false); - emnapiTSFN.storeSizeTypeValue(node + {{{ POINTER_SIZE }}}, 0, false); - if (head === 0 && tail === 0) { - emnapiTSFN.storeSizeTypeValue(queue, node, false); - emnapiTSFN.storeSizeTypeValue(queue + {{{ POINTER_SIZE }}}, node, false); - } - else { - emnapiTSFN.storeSizeTypeValue(tail + {{{ POINTER_SIZE }}}, node, false); - emnapiTSFN.storeSizeTypeValue(queue + {{{ POINTER_SIZE }}}, node, false); - } - emnapiTSFN.addQueueSize(func); - }, - shiftQueue: function (func) { - var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); - var head = emnapiTSFN.loadSizeTypeValue(queue, false); - if (head === 0) - return 0; - var node = head; - var next = emnapiTSFN.loadSizeTypeValue(head + {{{ POINTER_SIZE }}}, false); - emnapiTSFN.storeSizeTypeValue(queue, next, false); - if (next === 0) { - emnapiTSFN.storeSizeTypeValue(queue + {{{ POINTER_SIZE }}}, 0, false); - } - emnapiTSFN.storeSizeTypeValue(node + {{{ POINTER_SIZE }}}, 0, false); - var value = emnapiTSFN.loadSizeTypeValue(node, false); - _free({{{ to64('node') }}}); - emnapiTSFN.subQueueSize(func); - return value; - }, - push: function (func, data, mode) { - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - var waitCondition = function () { - var queueSize = emnapiTSFN.getQueueSize(func); - var maxSize = emnapiTSFN.getMaxQueueSize(func); - var isClosing = emnapiTSFN.getIsClosing(func); - return queueSize >= maxSize && maxSize > 0 && !isClosing; - }; - var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; - return mutex.execute(function () { - while (waitCondition()) { - if (mode === 0 /* napi_threadsafe_function_call_mode.napi_tsfn_nonblocking */) { - return 15 /* napi_status.napi_queue_full */; - } - /** - * Browser JS main thread can not use `Atomics.wait` - * - * Related: - * https://github.com/nodejs/node/pull/32689 - * https://github.com/nodejs/node/pull/33453 - */ - if (isBrowserMain) { - return 21 /* napi_status.napi_would_deadlock */; - } - cond.wait(); - } - if (emnapiTSFN.getIsClosing(func)) { - if (emnapiTSFN.getThreadCount(func) === 0) { - return 1 /* napi_status.napi_invalid_arg */; - } - else { - emnapiTSFN.subThreadCount(func); - return 16 /* napi_status.napi_closing */; - } - } - else { - emnapiTSFN.pushQueue(func, data); - emnapiTSFN.send(func); - return 0 /* napi_status.napi_ok */; - } - }); - }, - getMutex: function (func) { - var index = func + emnapiTSFN.offset.mutex; - var mutex = { - lock: function () { - var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - if (isBrowserMain) { - while (true) { - var oldValue = Atomics.compareExchange(i32a, 0, 0, 1); - if (oldValue === 0) { - return; - } - } - } - else { - while (true) { - var oldValue = Atomics.compareExchange(i32a, 0, 0, 1); - if (oldValue === 0) { - return; - } - Atomics.wait(i32a, 0, 1); - } - } - }, - /* lockAsync () { - return new Promise(resolve => { - const again = (): void => { fn() } - const fn = (): void => { - const i32a = new Int32Array(wasmMemory.buffer, index, 1) - const oldValue = Atomics.compareExchange(i32a, 0, 0, 1) - if (oldValue === 0) { - resolve() - return - } - (Atomics as any).waitAsync(i32a, 0, 1).value.then(again) - } - fn() - }) - }, */ - unlock: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - var oldValue = Atomics.compareExchange(i32a, 0, 1, 0); - if (oldValue !== 1) { - throw new Error('Tried to unlock while not holding the mutex'); - } - Atomics.notify(i32a, 0, 1); - }, - execute: function (fn) { - mutex.lock(); - try { - return fn(); - } - finally { - mutex.unlock(); - } - } /* , - executeAsync (fn: () => Promise): Promise { - return mutex.lockAsync().then(() => { - const r = fn() - mutex.unlock() - return r - }, (err) => { - mutex.unlock() - throw err - }) - } */ - }; - return mutex; - }, - getCond: function (func) { - var index = func + emnapiTSFN.offset.cond; - var mutex = emnapiTSFN.getMutex(func); - var cond = { - wait: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - var value = Atomics.load(i32a, 0); - mutex.unlock(); - Atomics.wait(i32a, 0, value); - mutex.lock(); - }, - /* waitAsync () { - const i32a = new Int32Array(wasmMemory.buffer, index, 1) - const value = Atomics.load(i32a, 0) - mutex.unlock() - const lock = (): Promise => mutex.lockAsync() - try { - return (Atomics as any).waitAsync(i32a, 0, value).value.then(lock, lock) - } catch (err) { - return lock() - } - }, */ - signal: function () { - var i32a = new Int32Array(wasmMemory.buffer, index, 1); - Atomics.add(i32a, 0, 1); - Atomics.notify(i32a, 0, 1); - } - }; - return cond; - }, - getQueueSize: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue_size, true); - }, - addQueueSize: function (func) { - var offset = emnapiTSFN.offset.queue_size; - var arr, index; -#if MEMORY64 - arr = new BigUint64Array(wasmMemory.buffer); - index = (func + offset) >> 3; -#else - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; -#endif - Atomics.add(arr, index, {{{ to64('1') }}}); - }, - subQueueSize: function (func) { - var offset = emnapiTSFN.offset.queue_size; - var arr, index; -#if MEMORY64 - arr = new BigUint64Array(wasmMemory.buffer); - index = (func + offset) >> 3; -#else - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; -#endif - Atomics.sub(arr, index, {{{ to64('1') }}}); - }, - getThreadCount: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.thread_count, true); - }, - addThreadCount: function (func) { - var offset = emnapiTSFN.offset.thread_count; - var arr, index; -#if MEMORY64 - arr = new BigUint64Array(wasmMemory.buffer); - index = (func + offset) >> 3; -#else - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; -#endif - Atomics.add(arr, index, {{{ to64('1') }}}); - }, - subThreadCount: function (func) { - var offset = emnapiTSFN.offset.thread_count; - var arr, index; -#if MEMORY64 - arr = new BigUint64Array(wasmMemory.buffer); - index = (func + offset) >> 3; -#else - arr = new Uint32Array(wasmMemory.buffer); - index = (func + offset) >> 2; -#endif - Atomics.sub(arr, index, {{{ to64('1') }}}); - }, - getIsClosing: function (func) { - return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2); - }, - setIsClosing: function (func, value) { - Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value); - }, - getHandlesClosing: function (func) { - return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2); - }, - setHandlesClosing: function (func, value) { - Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value); - }, - getDispatchState: function (func) { - return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2); - }, - getContext: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false); - }, - getMaxQueueSize: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.max_queue_size, true); - }, - getEnv: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.env, false); - }, - getCallJSCb: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.call_js_cb, false); - }, - getRef: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.ref, false); - }, - getResource: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.resource, false); - }, - getFinalizeCb: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_cb, false); - }, - getFinalizeData: function (func) { - return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_data, false); - }, - loadSizeTypeValue: function (offset, unsigned) { - var ret; - var arr; - if (unsigned) { -#if MEMORY64 - arr = new BigUint64Array(wasmMemory.buffer); - ret = Number(Atomics.load(arr, offset >> 3)); -#else - arr = new Uint32Array(wasmMemory.buffer); - ret = Atomics.load(arr, offset >> 2); -#endif - return ret; - } - else { -#if MEMORY64 - arr = new BigInt64Array(wasmMemory.buffer); - ret = Number(Atomics.load(arr, offset >> 3)); -#else - arr = new Int32Array(wasmMemory.buffer); - ret = Atomics.load(arr, offset >> 2); -#endif - return ret; - } - }, - storeSizeTypeValue: function (offset, value, unsigned) { - var arr; - if (unsigned) { -#if MEMORY64 - arr = new BigUint64Array(wasmMemory.buffer); - Atomics.store(arr, offset >> 3, BigInt(value)); -#else - arr = new Uint32Array(wasmMemory.buffer); - Atomics.store(arr, offset >> 2, value); -#endif - return undefined; - } - else { -#if MEMORY64 - arr = new BigInt64Array(wasmMemory.buffer); - Atomics.store(arr, offset >> 3, BigInt(value >>> 0)); -#else - arr = new Int32Array(wasmMemory.buffer); - Atomics.store(arr, offset >> 2, value >>> 0); -#endif - return undefined; - } - }, - destroy: function (func) { - emnapiTSFN.destroyQueue(func); - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - var ref = emnapiTSFN.getRef(func); - if (ref) { - emnapiCtx.refStore.get(ref).dispose(); - } - emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func); - envObject.unref(); - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 0); - __emnapi_runtime_keepalive_pop(); - emnapiCtx.decreaseWaitingRequestCounter(); - } - var resource = emnapiTSFN.getResource(func); - emnapiCtx.refStore.get(resource).dispose(); - if (emnapiNodeBinding) { - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); - var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); - __emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); - } - _free({{{ to64('func') }}}); - }, - emptyQueueAndDelete: function (func) { - var callJsCb = emnapiTSFN.getCallJSCb(func); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var context = emnapiTSFN.getContext(func); - var data; - while (emnapiTSFN.getQueueSize(func) > 0) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - data = emnapiTSFN.shiftQueue(func); - if (callJsCb) { - {{{ makeDynCall('vpppp', 'callJsCb') }}}({{{ to64('0') }}}, {{{ to64('0') }}}, {{{ to64('context') }}}, {{{ to64('data') }}}); - } - } - emnapiTSFN.destroy(func); - }, - finalize: function (func) { - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject); - var finalize = emnapiTSFN.getFinalizeCb(func); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var data = emnapiTSFN.getFinalizeData(func); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var context = emnapiTSFN.getContext(func); - var f = function () { - envObject.callFinalizerInternal(0, {{{ to64('finalize') }}}, {{{ to64('data') }}}, {{{ to64('context') }}}); - }; - try { - if (finalize) { - if (emnapiNodeBinding) { - var resource = emnapiTSFN.getResource(func); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); - var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); - emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { - asyncId: asyncId, - triggerAsyncId: triggerAsyncId - }); - } - else { - f(); - } - } - emnapiTSFN.emptyQueueAndDelete(func); - } - finally { - emnapiCtx.closeScope(envObject); - } - }, - cleanup: function (func) { - emnapiTSFN.closeHandlesAndMaybeDelete(func, 1); - }, - closeHandlesAndMaybeDelete: function (func, set_closing) { - var env = emnapiTSFN.getEnv(func); - var envObject = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject); - try { - if (set_closing) { - emnapiTSFN.getMutex(func).execute(function () { - emnapiTSFN.setIsClosing(func, 1); - if (emnapiTSFN.getMaxQueueSize(func) > 0) { - emnapiTSFN.getCond(func).signal(); - } - }); - } - if (emnapiTSFN.getHandlesClosing(func)) { - return; - } - emnapiTSFN.setHandlesClosing(func, 1); - emnapiCtx.feature.setImmediate(function () { - emnapiTSFN.finalize(func); - }); - } - finally { - emnapiCtx.closeScope(envObject); - } - }, - dispatchOne: function (func) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var data = 0; - var popped_value = false; - var has_more = false; - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - mutex.execute(function () { - if (emnapiTSFN.getIsClosing(func)) { - emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); - } - else { - var size = emnapiTSFN.getQueueSize(func); - if (size > 0) { - data = emnapiTSFN.shiftQueue(func); - popped_value = true; - var maxQueueSize = emnapiTSFN.getMaxQueueSize(func); - if (size === maxQueueSize && maxQueueSize > 0) { - cond.signal(); - } - size--; - } - if (size === 0) { - if (emnapiTSFN.getThreadCount(func) === 0) { - emnapiTSFN.setIsClosing(func, 1); - if (emnapiTSFN.getMaxQueueSize(func) > 0) { - cond.signal(); - } - emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); - } - } - else { - has_more = true; - } - } - }); - if (popped_value) { - var env = emnapiTSFN.getEnv(func); - var envObject_1 = emnapiCtx.envStore.get(env); - emnapiCtx.openScope(envObject_1); - var f = function () { - envObject_1.callbackIntoModule(false, function () { - var callJsCb = emnapiTSFN.getCallJSCb(func); - var ref = emnapiTSFN.getRef(func); - var js_callback = ref ? emnapiCtx.refStore.get(ref).get() : 0; - if (callJsCb) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var context = emnapiTSFN.getContext(func); - {{{ makeDynCall('vpppp', 'callJsCb') }}}({{{ to64('env') }}}, {{{ to64('js_callback') }}}, {{{ to64('context') }}}, {{{ to64('data') }}}); - } - else { - var jsCallback = js_callback ? emnapiCtx.handleStore.get(js_callback).value : null; - if (typeof jsCallback === 'function') { - jsCallback(); - } - } - }); - }; - try { - if (emnapiNodeBinding) { - var resource = emnapiTSFN.getResource(func); - var resource_value = emnapiCtx.refStore.get(resource).get(); - var resourceObject = emnapiCtx.handleStore.get(resource_value).value; - var view = new DataView(wasmMemory.buffer); - emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { - asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true), - triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true) - }); - } - else { - f(); - } - } - finally { - emnapiCtx.closeScope(envObject_1); - } - } - return has_more; - }, - dispatch: function (func) { - var has_more = true; - var iterations_left = 1000; - var ui32a = new Uint32Array(wasmMemory.buffer); - var index = (func + emnapiTSFN.offset.dispatch_state) >> 2; - while (has_more && --iterations_left !== 0) { - Atomics.store(ui32a, index, 1); - has_more = emnapiTSFN.dispatchOne(func); - if (Atomics.exchange(ui32a, index, 0) !== 1) { - has_more = true; - } - } - if (has_more) { - emnapiTSFN.send(func); - } - }, - send: function (func) { - var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1); - if ((current_state & 1) === 1) { - return; - } - if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) { - postMessage({ - __emnapi__: { - type: 'tsfn-send', - payload: { - tsfn: func - } - } - }); - } - else { - emnapiCtx.feature.setImmediate(function () { - emnapiTSFN.dispatch(func); - }); - } - } -}; -/** @__sig ippppppppppp */ -function _napi_create_threadsafe_function(env, func, async_resource, async_resource_name, max_queue_size, initial_thread_count, thread_finalize_data, thread_finalize_cb, context, call_js_cb, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!async_resource_name) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('max_queue_size') }}}; - {{{ from64('initial_thread_count') }}}; - {{{ from64('env') }}}; - {{{ from64('thread_finalize_data') }}}; - {{{ from64('thread_finalize_cb') }}}; - {{{ from64('context') }}}; - {{{ from64('call_js_cb') }}}; - max_queue_size = max_queue_size >>> 0; - initial_thread_count = initial_thread_count >>> 0; - if (initial_thread_count === 0) { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var ref = 0; - {{{ from64('func') }}}; - if (!func) { - if (!call_js_cb) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - else { - var funcValue = emnapiCtx.handleStore.get(func).value; - if (typeof funcValue !== 'function') { - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - ref = emnapiCtx.createReference(envObject, func, 1, 1 /* ReferenceOwnership.kUserland */).id; - } - var asyncResourceObject; - if (async_resource) { - asyncResourceObject = emnapiCtx.handleStore.get(async_resource).value; - if (asyncResourceObject == null) { - return envObject.setLastError(2 /* napi_status.napi_object_expected */); - } - asyncResourceObject = Object(asyncResourceObject); - } - else { - asyncResourceObject = {}; - } - var resource = envObject.ensureHandleId(asyncResourceObject); - var asyncResourceName = emnapiCtx.handleStore.get(async_resource_name).value; - if (typeof asyncResourceName === 'symbol') { - return envObject.setLastError(3 /* napi_status.napi_string_expected */); - } - asyncResourceName = String(asyncResourceName); - var resource_name = envObject.ensureHandleId(asyncResourceName); - // tsfn create - var sizeofTSFN = emnapiTSFN.offset.end; - var tsfn = _malloc({{{ to64('sizeofTSFN') }}}); - if (!tsfn) - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0); - var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* ReferenceOwnership.kUserland */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var resource_ = resourceRef.id; - {{{ makeSetValue('tsfn', 0, 'resource_', '*') }}}; - if (!emnapiTSFN.initQueue(tsfn)) { - _free({{{ to64('tsfn') }}}); - resourceRef.dispose(); - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - __emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id); - {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.thread_count', 'initial_thread_count', SIZE_TYPE) }}}; - {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.context', 'context', '*') }}}; - {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.max_queue_size', 'max_queue_size', SIZE_TYPE) }}}; - {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.ref', 'ref', '*') }}}; - {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.env', 'env', '*') }}}; - {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.finalize_data', 'thread_finalize_data', '*') }}}; - {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.finalize_cb', 'thread_finalize_cb', '*') }}}; - {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.call_js_cb', 'call_js_cb', '*') }}}; - emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn); - envObject.ref(); - __emnapi_runtime_keepalive_push(); - emnapiCtx.increaseWaitingRequestCounter(); - {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.async_ref', '1', 'i32') }}}; - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, 'tsfn', '*') }}}; - return envObject.clearLastError(); -} -/** @__sig ipp */ -function _napi_get_threadsafe_function_context(func, result) { - if (!func || !result) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - {{{ from64('func') }}}; - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var context = emnapiTSFN.getContext(func); - {{{ makeSetValue('result', 0, 'context', '*') }}}; - return 0 /* napi_status.napi_ok */; -} -/** @__sig ippi */ -function _napi_call_threadsafe_function(func, data, mode) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - {{{ from64('func') }}}; - {{{ from64('data') }}}; - return emnapiTSFN.push(func, data, mode); -} -/** @__sig ip */ -function _napi_acquire_threadsafe_function(func) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - {{{ from64('func') }}}; - var mutex = emnapiTSFN.getMutex(func); - return mutex.execute(function () { - if (emnapiTSFN.getIsClosing(func)) { - return 16 /* napi_status.napi_closing */; - } - emnapiTSFN.addThreadCount(func); - return 0 /* napi_status.napi_ok */; - }); -} -/** @__sig ipi */ -function _napi_release_threadsafe_function(func, mode) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - {{{ from64('func') }}}; - var mutex = emnapiTSFN.getMutex(func); - var cond = emnapiTSFN.getCond(func); - return mutex.execute(function () { - if (emnapiTSFN.getThreadCount(func) === 0) { - return 1 /* napi_status.napi_invalid_arg */; - } - emnapiTSFN.subThreadCount(func); - if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) { - var isClosing = emnapiTSFN.getIsClosing(func); - if (!isClosing) { - var isClosingValue = (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) ? 1 : 0; - emnapiTSFN.setIsClosing(func, isClosingValue); - if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) { - cond.signal(); - } - emnapiTSFN.send(func); - } - } - return 0 /* napi_status.napi_ok */; - }); -} -/** @__sig ipp */ -function _napi_unref_threadsafe_function(env, func) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - {{{ from64('func') }}}; - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 0); - __emnapi_runtime_keepalive_pop(); - emnapiCtx.decreaseWaitingRequestCounter(); - } - return 0 /* napi_status.napi_ok */; -} -/** @__sig ipp */ -function _napi_ref_threadsafe_function(env, func) { - if (!func) { - abort(); - return 1 /* napi_status.napi_invalid_arg */; - } - {{{ from64('func') }}}; - var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2; - var arr = new Int32Array(wasmMemory.buffer); - if (!Atomics.load(arr, asyncRefOffset)) { - Atomics.store(arr, asyncRefOffset, 1); - __emnapi_runtime_keepalive_push(); - emnapiCtx.increaseWaitingRequestCounter(); - } - return 0 /* napi_status.napi_ok */; -} -/** @__sig ippp */ -function _napi_typeof(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var v = emnapiCtx.handleStore.get(value); - {{{ from64('result') }}}; - var r; - if (v.isNumber()) { - r = 3 /* napi_valuetype.napi_number */; - } - else if (v.isBigInt()) { - r = 9 /* napi_valuetype.napi_bigint */; - } - else if (v.isString()) { - r = 4 /* napi_valuetype.napi_string */; - } - else if (v.isFunction()) { - // This test has to come before IsObject because IsFunction - // implies IsObject - r = 7 /* napi_valuetype.napi_function */; - } - else if (v.isExternal()) { - // This test has to come before IsObject because IsExternal - // implies IsObject - r = 8 /* napi_valuetype.napi_external */; - } - else if (v.isObject()) { - r = 6 /* napi_valuetype.napi_object */; - } - else if (v.isBoolean()) { - r = 2 /* napi_valuetype.napi_boolean */; - } - else if (v.isUndefined()) { - r = 0 /* napi_valuetype.napi_undefined */; - } - else if (v.isSymbol()) { - r = 5 /* napi_valuetype.napi_symbol */; - } - else if (v.isNull()) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - r = 1 /* napi_valuetype.napi_null */; - } - else { - // Should not get here unless V8 has added some new kind of value. - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - } - {{{ makeSetValue('result', 0, 'r', 'i32') }}}; - return envObject.clearLastError(); -} -/** @__sig ippp */ -function _napi_coerce_to_bool(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - {{{ from64('result') }}}; - v = handle.value ? 4 /* GlobalHandle.TRUE */ : 3 /* GlobalHandle.FALSE */; - {{{ makeSetValue('result', 0, 'v', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippp */ -function _napi_coerce_to_number(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (handle.isBigInt()) { - throw new TypeError('Cannot convert a BigInt value to a number'); - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = emnapiCtx.addToCurrentScope(Number(handle.value)).id; - {{{ makeSetValue('result', 0, 'v', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippp */ -function _napi_coerce_to_object(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (handle.value == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = envObject.ensureHandleId(Object(handle.value)); - {{{ makeSetValue('result', 0, 'v', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippp */ -function _napi_coerce_to_string(env, value, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var v; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var handle = emnapiCtx.handleStore.get(value); - if (handle.isSymbol()) { - throw new TypeError('Cannot convert a Symbol value to a string'); - } - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - v = emnapiCtx.addToCurrentScope(String(handle.value)).id; - {{{ makeSetValue('result', 0, 'v', '*') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipppp */ -function _napi_instanceof(env, object, constructor, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!object) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!constructor) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - {{{ from64('result') }}}; - {{{ makeSetValue('result', 0, '0', 'i8') }}}; - var ctor = emnapiCtx.handleStore.get(constructor); - if (!ctor.isFunction()) { - return envObject.setLastError(5 /* napi_status.napi_function_expected */); - } - var val = emnapiCtx.handleStore.get(object).value; - var ret = val instanceof ctor.value; - r = ret ? 1 : 0; - {{{ makeSetValue('result', 0, 'r', 'i8') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ippp */ -function _napi_is_array(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isArray() ? 1 : 0; - {{{ makeSetValue('result', 0, 'r', 'i8') }}}; - return envObject.clearLastError(); -} -/** @__sig ippp */ -function _napi_is_arraybuffer(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isArrayBuffer() ? 1 : 0; - {{{ makeSetValue('result', 0, 'r', 'i8') }}}; - return envObject.clearLastError(); -} -/** @__sig ippp */ -function _node_api_is_sharedarraybuffer(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) || - (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]')) - ? 1 - : 0; - {{{ makeSetValue('result', 0, 'r', 'i8') }}}; - return envObject.clearLastError(); -} -/** @__sig ippp */ -function _napi_is_date(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isDate() ? 1 : 0; - {{{ makeSetValue('result', 0, 'r', 'i8') }}}; - return envObject.clearLastError(); -} -/** @__sig ippp */ -function _napi_is_error(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var val = emnapiCtx.handleStore.get(value).value; - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = (val instanceof Error) ? 1 : 0; - {{{ makeSetValue('result', 0, 'r', 'i8') }}}; - return envObject.clearLastError(); -} -/** @__sig ippp */ -function _napi_is_typedarray(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isTypedArray() ? 1 : 0; - {{{ makeSetValue('result', 0, 'r', 'i8') }}}; - return envObject.clearLastError(); -} -/** @__sig ippp */ -function _napi_is_buffer(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0; - {{{ makeSetValue('result', 0, 'r', 'i8') }}}; - return envObject.clearLastError(); -} -/** @__sig ippp */ -function _napi_is_dataview(env, value, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!value) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(value); - {{{ from64('result') }}}; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r = h.isDataView() ? 1 : 0; - {{{ makeSetValue('result', 0, 'r', 'i8') }}}; - return envObject.clearLastError(); -} -/** @__sig ipppp */ -function _napi_strict_equals(env, lhs, rhs, result) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var r; - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!lhs) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!rhs) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var lv = emnapiCtx.handleStore.get(lhs).value; - var rv = emnapiCtx.handleStore.get(rhs).value; - {{{ from64('result') }}}; - r = (lv === rv) ? 1 : 0; - {{{ makeSetValue('result', 0, 'r', 'i8') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipp */ -function _napi_detach_arraybuffer(env, arraybuffer) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var value = emnapiCtx.handleStore.get(arraybuffer).value; - if (!(value instanceof ArrayBuffer)) { - if (typeof SharedArrayBuffer === 'function' && (value instanceof SharedArrayBuffer)) { - return envObject.setLastError(20 /* napi_status.napi_detachable_arraybuffer_expected */); - } - return envObject.setLastError(19 /* napi_status.napi_arraybuffer_expected */); - } - try { - var MessageChannel_1 = emnapiCtx.feature.MessageChannel; - var messageChannel = new MessageChannel_1(); - messageChannel.port1.postMessage(value, [value]); - } - catch (_) { - return envObject.setLastError(9 /* napi_status.napi_generic_failure */); - } - return envObject.clearLastError(); -} -/** @__sig ippp */ -function _napi_is_detached_arraybuffer(env, arraybuffer, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - // @ts-expect-error - var envObject = emnapiCtx.envStore.get(env); - envObject.checkGCAccess(); - if (!envObject.tryCatch.isEmpty()) - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - if (!envObject.canCallIntoJs()) - return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); - envObject.clearLastError(); - try { - if (!arraybuffer) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - var h = emnapiCtx.handleStore.get(arraybuffer); - {{{ from64('result') }}}; - if (h.isArrayBuffer() && h.value.byteLength === 0) { - try { - // eslint-disable-next-line no-new - new Uint8Array(h.value); - } - catch (_) { - {{{ makeSetValue('result', 0, '1', 'i8') }}}; - return envObject.getReturnStatus(); - } - } - {{{ makeSetValue('result', 0, '0', 'i8') }}}; - return envObject.getReturnStatus(); - } - catch (err) { - envObject.tryCatch.setError(err); - return envObject.setLastError(10 /* napi_status.napi_pending_exception */); - } -} -/** @__sig ipp */ -function _napi_get_version(env, result) { - if (!env) - return 1 /* napi_status.napi_invalid_arg */; - var envObject = emnapiCtx.envStore.get(env); - if (!result) - return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - var NODE_API_SUPPORTED_VERSION_MAX = 10 /* Version.NODE_API_SUPPORTED_VERSION_MAX */; - {{{ makeSetValue('result', 0, 'NODE_API_SUPPORTED_VERSION_MAX', 'u32') }}}; - return envObject.clearLastError(); -} -(typeof addToLibrary === "function" ? addToLibrary : (...args) => mergeInto(LibraryManager.library, ...args))({ - $emnapiAddSendListener: emnapiAddSendListener, - $emnapiAddSendListener__deps: ["$PThread"], - $emnapiAddSendListener__postset: "PThread.unusedWorkers.forEach(emnapiAddSendListener);\nPThread.runningWorkers.forEach(emnapiAddSendListener);\n(function () {\n var __original_getNewWorker = PThread.getNewWorker;\n PThread.getNewWorker = function () {\n var r = __original_getNewWorker.apply(this, arguments);\n emnapiAddSendListener(r);\n return r;\n };\n})();", - $emnapiAsyncWorkPoolSize: "0", - $emnapiCtx: "undefined", - $emnapiExternalMemory: emnapiExternalMemory, - $emnapiExternalMemory__deps: ["$emnapiCtx", "malloc", "free"], - $emnapiExternalMemory__postset: "emnapiExternalMemory.init();", - $emnapiGetMemoryAddress: emnapiGetMemoryAddress, - $emnapiGetMemoryAddress__deps: ["$emnapiExternalMemory"], - $emnapiModule: emnapiModule, - $emnapiNodeBinding: "undefined", - $emnapiInit: emnapiInit, - $emnapiInit__deps: ["$emnapiModule", "$emnapiCtx", "$emnapiNodeBinding", "$emnapiAsyncWorkPoolSize", "napi_register_wasm_v1", "node_api_module_get_api_version_v1"], - $emnapiSetValueI64: emnapiSetValueI64, - $emnapiSyncMemory: emnapiSyncMemory, - $emnapiSyncMemory__deps: ["$emnapiExternalMemory"], - _emnapi_async_destroy_js: __emnapi_async_destroy_js, - _emnapi_async_destroy_js__deps: ["$emnapiNodeBinding"], - _emnapi_async_destroy_js__sig: "ip", - _emnapi_async_init_js: __emnapi_async_init_js, - _emnapi_async_init_js__deps: ["$emnapiNodeBinding", "$emnapiCtx"], - _emnapi_async_init_js__sig: "ippp", - _emnapi_set_immediate: __emnapi_set_immediate, - _emnapi_set_immediate__deps: ["$emnapiCtx"], - _emnapi_set_immediate__sig: "vpp", - _emnapi_next_tick: __emnapi_next_tick, - _emnapi_next_tick__sig: "vpp", - _emnapi_async_send_js: __emnapi_async_send_js, - _emnapi_async_send_js__deps: ["_emnapi_set_immediate", "_emnapi_next_tick"], - _emnapi_async_send_js__sig: "vipp", - _emnapi_async_work_pool_size: __emnapi_async_work_pool_size, - _emnapi_async_work_pool_size__deps: ["$emnapiAsyncWorkPoolSize"], - _emnapi_async_work_pool_size__sig: "i", - _emnapi_call_finalizer: __emnapi_call_finalizer, - _emnapi_call_finalizer__deps: ["$emnapiCtx"], - _emnapi_call_finalizer__sig: "vipppp", - _emnapi_callback_into_module: __emnapi_callback_into_module, - _emnapi_callback_into_module__deps: ["$emnapiCtx"], - _emnapi_callback_into_module__sig: "vipppi", - _emnapi_close_handle_scope: __emnapi_close_handle_scope, - _emnapi_close_handle_scope__deps: ["$emnapiCtx", "$emnapiCtx"], - _emnapi_close_handle_scope__sig: "vp", - _emnapi_ctx_decrease_waiting_request_counter: __emnapi_ctx_decrease_waiting_request_counter, - _emnapi_ctx_decrease_waiting_request_counter__deps: ["$emnapiCtx"], - _emnapi_ctx_decrease_waiting_request_counter__sig: "v", - _emnapi_ctx_increase_waiting_request_counter: __emnapi_ctx_increase_waiting_request_counter, - _emnapi_ctx_increase_waiting_request_counter__deps: ["$emnapiCtx"], - _emnapi_ctx_increase_waiting_request_counter__sig: "v", - _emnapi_env_check_gc_access: __emnapi_env_check_gc_access, - _emnapi_env_check_gc_access__deps: ["$emnapiCtx"], - _emnapi_env_check_gc_access__sig: "vp", - _emnapi_env_ref: __emnapi_env_ref, - _emnapi_env_ref__deps: ["$emnapiCtx"], - _emnapi_env_ref__sig: "vp", - _emnapi_env_unref: __emnapi_env_unref, - _emnapi_env_unref__deps: ["$emnapiCtx"], - _emnapi_env_unref__sig: "vp", - $emnapiString: emnapiString, - $emnapiString__deps: ["$emnapiCtx"], - $emnapiString__postset: "emnapiString.init();", - _emnapi_get_filename: __emnapi_get_filename, - _emnapi_get_filename__deps: ["$emnapiCtx", "$emnapiString"], - _emnapi_get_filename__sig: "ippi", - _emnapi_get_last_error_info: __emnapi_get_last_error_info, - _emnapi_get_last_error_info__deps: ["$emnapiCtx"], - _emnapi_get_last_error_info__sig: "vpppp", - _emnapi_get_node_version: __emnapi_get_node_version, - _emnapi_get_node_version__sig: "vppp", - _emnapi_get_now: __emnapi_get_now, - _emnapi_get_now__sig: "d", - _emnapi_is_main_browser_thread: __emnapi_is_main_browser_thread, - _emnapi_is_main_browser_thread__sig: "i", - _emnapi_is_main_runtime_thread: __emnapi_is_main_runtime_thread, - _emnapi_is_main_runtime_thread__sig: "i", - _emnapi_node_emit_async_destroy: __emnapi_node_emit_async_destroy, - _emnapi_node_emit_async_destroy__deps: ["$emnapiNodeBinding"], - _emnapi_node_emit_async_destroy__sig: "vdd", - _emnapi_node_emit_async_init: __emnapi_node_emit_async_init, - _emnapi_node_emit_async_init__deps: ["$emnapiNodeBinding", "$emnapiCtx"], - _emnapi_node_emit_async_init__sig: "vppdp", - _emnapi_node_make_callback: __emnapi_node_make_callback, - _emnapi_node_make_callback__deps: ["$emnapiNodeBinding", "$emnapiCtx"], - _emnapi_node_make_callback__sig: "ipppppddp", - _emnapi_open_handle_scope: __emnapi_open_handle_scope, - _emnapi_open_handle_scope__deps: ["$emnapiCtx", "$emnapiCtx"], - _emnapi_open_handle_scope__sig: "p", - _emnapi_runtime_keepalive_pop: __emnapi_runtime_keepalive_pop, - _emnapi_runtime_keepalive_pop__deps: ["$runtimeKeepalivePop"], - _emnapi_runtime_keepalive_pop__sig: "v", - _emnapi_runtime_keepalive_push: __emnapi_runtime_keepalive_push, - _emnapi_runtime_keepalive_push__deps: ["$runtimeKeepalivePush"], - _emnapi_runtime_keepalive_push__sig: "v", - _emnapi_unwind: __emnapi_unwind, - _emnapi_unwind__sig: "v", - _emnapi_worker_unref: __emnapi_worker_unref, - _emnapi_worker_unref__deps: ["$PThread"], - _emnapi_worker_unref__sig: "vp", - $emnapiGetHandle: emnapiGetHandle, - $emnapiGetHandle__deps: ["$emnapiCtx", "$emnapiExternalMemory"], - napi_add_finalizer: _napi_add_finalizer, - napi_add_finalizer__deps: ["$emnapiCtx", "$emnapiGetHandle"], - napi_add_finalizer__sig: "ipppppp", - emnapi_create_memory_view: _emnapi_create_memory_view, - emnapi_create_memory_view__deps: ["$emnapiCtx", "$emnapiExternalMemory", "napi_add_finalizer"], - emnapi_create_memory_view__sig: "ipippppp", - emnapi_get_memory_address: _emnapi_get_memory_address, - emnapi_get_memory_address__deps: ["$emnapiCtx", "$emnapiGetMemoryAddress"], - emnapi_get_memory_address__sig: "ipppp", - emnapi_get_module_object: _emnapi_get_module_object, - emnapi_get_module_object__deps: ["$emnapiCtx"], - emnapi_get_module_object__sig: "ipp", - emnapi_get_module_property: _emnapi_get_module_property, - emnapi_get_module_property__deps: ["$emnapiCtx", "$emnapiString"], - emnapi_get_module_property__sig: "ippp", - emnapi_get_runtime_version: _emnapi_get_runtime_version, - emnapi_get_runtime_version__deps: ["$emnapiCtx"], - emnapi_get_runtime_version__sig: "ipp", - emnapi_is_node_binding_available: _emnapi_is_node_binding_available, - emnapi_is_node_binding_available__deps: ["$emnapiNodeBinding"], - emnapi_is_node_binding_available__sig: "i", - emnapi_is_support_bigint: _emnapi_is_support_bigint, - emnapi_is_support_bigint__deps: ["$emnapiCtx"], - emnapi_is_support_bigint__sig: "i", - emnapi_is_support_weakref: _emnapi_is_support_weakref, - emnapi_is_support_weakref__deps: ["$emnapiCtx"], - emnapi_is_support_weakref__sig: "i", - emnapi_sync_memory: _emnapi_sync_memory, - emnapi_sync_memory__deps: ["$emnapiCtx", "$emnapiExternalMemory", "$emnapiSyncMemory"], - emnapi_sync_memory__sig: "ipippp", - $emnapiTSFN: emnapiTSFN, - $emnapiTSFN__deps: ["$emnapiCtx", "_emnapi_runtime_keepalive_pop", "$emnapiNodeBinding", "_emnapi_node_emit_async_destroy", "malloc", "free"], - $emnapiTSFN__postset: "emnapiTSFN.init();", - napi_acquire_threadsafe_function: _napi_acquire_threadsafe_function, - napi_acquire_threadsafe_function__deps: ["$emnapiTSFN"], - napi_acquire_threadsafe_function__sig: "ip", - napi_add_env_cleanup_hook: _napi_add_env_cleanup_hook, - napi_add_env_cleanup_hook__deps: ["$emnapiCtx"], - napi_add_env_cleanup_hook__sig: "ippp", - napi_adjust_external_memory: _napi_adjust_external_memory, - napi_adjust_external_memory__deps: ["$emnapiCtx", "$emnapiSetValueI64", "emscripten_resize_heap"], - napi_adjust_external_memory__sig: "ipjp", - napi_call_function: _napi_call_function, - napi_call_function__deps: ["$emnapiCtx"], - napi_call_function__sig: "ipppppp", - napi_call_threadsafe_function: _napi_call_threadsafe_function, - napi_call_threadsafe_function__deps: ["$emnapiTSFN"], - napi_call_threadsafe_function__sig: "ippi", - $emnapiAWST: emnapiAWST, - $emnapiAWST__deps: ["$emnapiNodeBinding", "$emnapiCtx", "$emnapiAsyncWorkPoolSize"], - $emnapiAWST__postset: "emnapiAWST.init();", - napi_cancel_async_work: _napi_cancel_async_work, - napi_cancel_async_work__deps: ["$emnapiCtx", "$emnapiAWST"], - napi_cancel_async_work__sig: "ipp", - napi_check_object_type_tag: _napi_check_object_type_tag, - napi_check_object_type_tag__deps: ["$emnapiCtx"], - napi_check_object_type_tag__sig: "ipppp", - napi_clear_last_error: _napi_clear_last_error, - napi_clear_last_error__deps: ["$emnapiCtx"], - napi_clear_last_error__sig: "ip", - napi_close_callback_scope: _napi_close_callback_scope, - napi_close_callback_scope__sig: "ipp", - napi_close_escapable_handle_scope: _napi_close_escapable_handle_scope, - napi_close_escapable_handle_scope__deps: ["$emnapiCtx"], - napi_close_escapable_handle_scope__sig: "ipp", - napi_close_handle_scope: _napi_close_handle_scope, - napi_close_handle_scope__deps: ["$emnapiCtx"], - napi_close_handle_scope__sig: "ipp", - napi_coerce_to_bool: _napi_coerce_to_bool, - napi_coerce_to_bool__deps: ["$emnapiCtx"], - napi_coerce_to_bool__sig: "ippp", - napi_coerce_to_number: _napi_coerce_to_number, - napi_coerce_to_number__deps: ["$emnapiCtx"], - napi_coerce_to_number__sig: "ippp", - napi_coerce_to_object: _napi_coerce_to_object, - napi_coerce_to_object__deps: ["$emnapiCtx"], - napi_coerce_to_object__sig: "ippp", - napi_coerce_to_string: _napi_coerce_to_string, - napi_coerce_to_string__deps: ["$emnapiCtx"], - napi_coerce_to_string__sig: "ippp", - napi_create_array: _napi_create_array, - napi_create_array__deps: ["$emnapiCtx"], - napi_create_array__sig: "ipp", - napi_create_array_with_length: _napi_create_array_with_length, - napi_create_array_with_length__deps: ["$emnapiCtx"], - napi_create_array_with_length__sig: "ippp", - $emnapiCreateArrayBuffer: emnapiCreateArrayBuffer, - $emnapiCreateArrayBuffer__deps: ["$emnapiExternalMemory"], - napi_create_arraybuffer: _napi_create_arraybuffer, - napi_create_arraybuffer__deps: ["$emnapiCtx", "$emnapiCreateArrayBuffer"], - napi_create_arraybuffer__sig: "ipppp", - napi_create_async_work: _napi_create_async_work, - napi_create_async_work__deps: ["$emnapiCtx", "$emnapiAWST"], - napi_create_async_work__sig: "ippppppp", - napi_create_bigint_int64: _napi_create_bigint_int64, - napi_create_bigint_int64__deps: ["$emnapiCtx"], - napi_create_bigint_int64__sig: "ipjp", - napi_create_bigint_uint64: _napi_create_bigint_uint64, - napi_create_bigint_uint64__deps: ["$emnapiCtx"], - napi_create_bigint_uint64__sig: "ipjp", - napi_create_bigint_words: _napi_create_bigint_words, - napi_create_bigint_words__deps: ["$emnapiCtx"], - napi_create_bigint_words__sig: "ipippp", - napi_create_buffer: _napi_create_buffer, - napi_create_buffer__deps: ["$emnapiCtx", "$emnapiExternalMemory", "malloc"], - napi_create_buffer__sig: "ippp", - napi_create_buffer_copy: _napi_create_buffer_copy, - napi_create_buffer_copy__deps: ["$emnapiCtx", "$emnapiCreateArrayBuffer"], - napi_create_buffer_copy__sig: "ippppp", - napi_create_dataview: _napi_create_dataview, - napi_create_dataview__deps: ["$emnapiCtx", "$emnapiExternalMemory"], - napi_create_dataview__sig: "ippppp", - napi_create_date: _napi_create_date, - napi_create_date__deps: ["$emnapiCtx"], - napi_create_date__sig: "ipdp", - napi_create_double: _napi_create_double, - napi_create_double__deps: ["$emnapiCtx"], - napi_create_double__sig: "ipdp", - napi_create_error: _napi_create_error, - napi_create_error__deps: ["$emnapiCtx"], - napi_create_error__sig: "ipppp", - napi_create_external: _napi_create_external, - napi_create_external__deps: ["$emnapiCtx"], - napi_create_external__sig: "ippppp", - napi_create_external_arraybuffer: _napi_create_external_arraybuffer, - napi_create_external_arraybuffer__deps: ["$emnapiCtx", "$emnapiExternalMemory", "napi_add_finalizer"], - napi_create_external_arraybuffer__sig: "ipppppp", - napi_create_external_buffer: _napi_create_external_buffer, - napi_create_external_buffer__deps: ["emnapi_create_memory_view"], - napi_create_external_buffer__sig: "ipppppp", - $emnapiCreateFunction: emnapiCreateFunction, - $emnapiCreateFunction__deps: ["$emnapiString", "$emnapiCtx"], - napi_create_function: _napi_create_function, - napi_create_function__deps: ["$emnapiCtx", "$emnapiCreateFunction"], - napi_create_function__sig: "ipppppp", - napi_create_int32: _napi_create_int32, - napi_create_int32__deps: ["$emnapiCtx"], - napi_create_int32__sig: "ipip", - napi_create_int64: _napi_create_int64, - napi_create_int64__deps: ["$emnapiCtx"], - napi_create_int64__sig: "ipjp", - napi_create_object: _napi_create_object, - napi_create_object__deps: ["$emnapiCtx"], - napi_create_object__sig: "ipp", - napi_create_object_with_properties: _napi_create_object_with_properties, - napi_create_object_with_properties__deps: ["$emnapiCtx"], - napi_create_object_with_properties__sig: "ipppppp", - napi_create_promise: _napi_create_promise, - napi_create_promise__deps: ["$emnapiCtx"], - napi_create_promise__sig: "ippp", - napi_create_range_error: _napi_create_range_error, - napi_create_range_error__deps: ["$emnapiCtx"], - napi_create_range_error__sig: "ipppp", - napi_create_reference: _napi_create_reference, - napi_create_reference__deps: ["$emnapiCtx"], - napi_create_reference__sig: "ippip", - napi_create_string_latin1: _napi_create_string_latin1, - napi_create_string_latin1__deps: ["$emnapiString"], - napi_create_string_latin1__sig: "ipppp", - napi_create_string_utf16: _napi_create_string_utf16, - napi_create_string_utf16__deps: ["$emnapiString"], - napi_create_string_utf16__sig: "ipppp", - napi_create_string_utf8: _napi_create_string_utf8, - napi_create_string_utf8__deps: ["$emnapiString"], - napi_create_string_utf8__sig: "ipppp", - napi_create_symbol: _napi_create_symbol, - napi_create_symbol__deps: ["$emnapiCtx"], - napi_create_symbol__sig: "ippp", - napi_create_threadsafe_function: _napi_create_threadsafe_function, - napi_create_threadsafe_function__deps: ["$emnapiCtx", "$emnapiTSFN", "_emnapi_node_emit_async_init", "_emnapi_runtime_keepalive_push"], - napi_create_threadsafe_function__sig: "ippppppppppp", - napi_create_type_error: _napi_create_type_error, - napi_create_type_error__deps: ["$emnapiCtx"], - napi_create_type_error__sig: "ipppp", - napi_create_typedarray: _napi_create_typedarray, - napi_create_typedarray__deps: ["$emnapiCtx", "$emnapiExternalMemory"], - napi_create_typedarray__sig: "ipipppp", - napi_create_uint32: _napi_create_uint32, - napi_create_uint32__deps: ["$emnapiCtx"], - napi_create_uint32__sig: "ipip", - $emnapiDefineProperty: emnapiDefineProperty, - $emnapiDefineProperty__deps: ["$emnapiCreateFunction", "$emnapiCtx"], - napi_define_class: _napi_define_class, - napi_define_class__deps: ["$emnapiCtx", "$emnapiCreateFunction", "$emnapiString", "$emnapiDefineProperty"], - napi_define_class__sig: "ipppppppp", - napi_define_properties: _napi_define_properties, - napi_define_properties__deps: ["$emnapiCtx", "$emnapiString", "$emnapiDefineProperty"], - napi_define_properties__sig: "ipppp", - napi_delete_async_work: _napi_delete_async_work, - napi_delete_async_work__deps: ["$emnapiCtx", "$emnapiAWST"], - napi_delete_async_work__sig: "ipp", - napi_delete_element: _napi_delete_element, - napi_delete_element__deps: ["$emnapiCtx"], - napi_delete_element__sig: "ippip", - napi_delete_property: _napi_delete_property, - napi_delete_property__deps: ["$emnapiCtx"], - napi_delete_property__sig: "ipppp", - napi_delete_reference: _napi_delete_reference, - napi_delete_reference__deps: ["$emnapiCtx"], - napi_delete_reference__sig: "ipp", - napi_detach_arraybuffer: _napi_detach_arraybuffer, - napi_detach_arraybuffer__deps: ["$emnapiCtx"], - napi_detach_arraybuffer__sig: "ipp", - napi_escape_handle: _napi_escape_handle, - napi_escape_handle__deps: ["$emnapiCtx"], - napi_escape_handle__sig: "ipppp", - napi_fatal_error: _napi_fatal_error, - napi_fatal_error__deps: ["$emnapiString", "$emnapiNodeBinding"], - napi_fatal_error__sig: "vpppp", - napi_fatal_exception: _napi_fatal_exception, - napi_fatal_exception__deps: ["$emnapiCtx"], - napi_fatal_exception__sig: "ipp", - napi_get_all_property_names: _napi_get_all_property_names, - napi_get_all_property_names__deps: ["$emnapiCtx"], - napi_get_all_property_names__sig: "ippiiip", - napi_get_and_clear_last_exception: _napi_get_and_clear_last_exception, - napi_get_and_clear_last_exception__deps: ["$emnapiCtx"], - napi_get_and_clear_last_exception__sig: "ipp", - napi_get_array_length: _napi_get_array_length, - napi_get_array_length__deps: ["$emnapiCtx"], - napi_get_array_length__sig: "ippp", - napi_get_arraybuffer_info: _napi_get_arraybuffer_info, - napi_get_arraybuffer_info__deps: ["$emnapiCtx", "$emnapiExternalMemory"], - napi_get_arraybuffer_info__sig: "ipppp", - napi_get_boolean: _napi_get_boolean, - napi_get_boolean__deps: ["$emnapiCtx"], - napi_get_boolean__sig: "ipip", - napi_get_dataview_info: _napi_get_dataview_info, - napi_get_dataview_info__deps: ["$emnapiCtx", "$emnapiExternalMemory"], - napi_get_dataview_info__sig: "ipppppp", - napi_get_typedarray_info: _napi_get_typedarray_info, - napi_get_typedarray_info__deps: ["$emnapiCtx", "$emnapiExternalMemory"], - napi_get_typedarray_info__sig: "ippppppp", - napi_get_buffer_info: _napi_get_buffer_info, - napi_get_buffer_info__deps: ["$emnapiCtx", "napi_get_dataview_info", "napi_get_typedarray_info"], - napi_get_buffer_info__sig: "ipppp", - napi_get_cb_info: _napi_get_cb_info, - napi_get_cb_info__deps: ["$emnapiCtx"], - napi_get_cb_info__sig: "ipppppp", - napi_get_date_value: _napi_get_date_value, - napi_get_date_value__deps: ["$emnapiCtx"], - napi_get_date_value__sig: "ippp", - napi_get_element: _napi_get_element, - napi_get_element__deps: ["$emnapiCtx"], - napi_get_element__sig: "ippip", - napi_get_global: _napi_get_global, - napi_get_global__deps: ["$emnapiCtx"], - napi_get_global__sig: "ipp", - napi_get_instance_data: _napi_get_instance_data, - napi_get_instance_data__deps: ["$emnapiCtx"], - napi_get_instance_data__sig: "ipp", - napi_get_named_property: _napi_get_named_property, - napi_get_named_property__deps: ["$emnapiCtx", "$emnapiString"], - napi_get_named_property__sig: "ipppp", - napi_get_new_target: _napi_get_new_target, - napi_get_new_target__deps: ["$emnapiCtx"], - napi_get_new_target__sig: "ippp", - napi_get_null: _napi_get_null, - napi_get_null__deps: ["$emnapiCtx"], - napi_get_null__sig: "ipp", - napi_get_property: _napi_get_property, - napi_get_property__deps: ["$emnapiCtx"], - napi_get_property__sig: "ipppp", - napi_get_property_names: _napi_get_property_names, - napi_get_property_names__deps: ["napi_get_all_property_names"], - napi_get_property_names__sig: "ippp", - napi_get_prototype: _napi_get_prototype, - napi_get_prototype__deps: ["$emnapiCtx"], - napi_get_prototype__sig: "ippp", - napi_get_reference_value: _napi_get_reference_value, - napi_get_reference_value__deps: ["$emnapiCtx"], - napi_get_reference_value__sig: "ippp", - napi_get_threadsafe_function_context: _napi_get_threadsafe_function_context, - napi_get_threadsafe_function_context__deps: ["$emnapiTSFN"], - napi_get_threadsafe_function_context__sig: "ipp", - napi_get_undefined: _napi_get_undefined, - napi_get_undefined__deps: ["$emnapiCtx"], - napi_get_undefined__sig: "ipp", - napi_get_value_bigint_int64: _napi_get_value_bigint_int64, - napi_get_value_bigint_int64__deps: ["$emnapiCtx"], - napi_get_value_bigint_int64__sig: "ipppp", - napi_get_value_bigint_uint64: _napi_get_value_bigint_uint64, - napi_get_value_bigint_uint64__deps: ["$emnapiCtx"], - napi_get_value_bigint_uint64__sig: "ipppp", - napi_get_value_bigint_words: _napi_get_value_bigint_words, - napi_get_value_bigint_words__deps: ["$emnapiCtx"], - napi_get_value_bigint_words__sig: "ippppp", - napi_get_value_bool: _napi_get_value_bool, - napi_get_value_bool__deps: ["$emnapiCtx"], - napi_get_value_bool__sig: "ippp", - napi_get_value_double: _napi_get_value_double, - napi_get_value_double__deps: ["$emnapiCtx"], - napi_get_value_double__sig: "ippp", - napi_get_value_external: _napi_get_value_external, - napi_get_value_external__deps: ["$emnapiCtx"], - napi_get_value_external__sig: "ippp", - napi_get_value_int32: _napi_get_value_int32, - napi_get_value_int32__deps: ["$emnapiCtx"], - napi_get_value_int32__sig: "ippp", - napi_get_value_int64: _napi_get_value_int64, - napi_get_value_int64__deps: ["$emnapiCtx", "$emnapiSetValueI64"], - napi_get_value_int64__sig: "ippp", - napi_get_value_string_latin1: _napi_get_value_string_latin1, - napi_get_value_string_latin1__deps: ["$emnapiCtx"], - napi_get_value_string_latin1__sig: "ippppp", - napi_get_value_string_utf16: _napi_get_value_string_utf16, - napi_get_value_string_utf16__deps: ["$emnapiCtx", "$emnapiString"], - napi_get_value_string_utf16__sig: "ippppp", - napi_get_value_string_utf8: _napi_get_value_string_utf8, - napi_get_value_string_utf8__deps: ["$emnapiCtx", "$emnapiString"], - napi_get_value_string_utf8__sig: "ippppp", - napi_get_value_uint32: _napi_get_value_uint32, - napi_get_value_uint32__deps: ["$emnapiCtx"], - napi_get_value_uint32__sig: "ippp", - napi_get_version: _napi_get_version, - napi_get_version__deps: ["$emnapiCtx"], - napi_get_version__sig: "ipp", - napi_has_element: _napi_has_element, - napi_has_element__deps: ["$emnapiCtx"], - napi_has_element__sig: "ippip", - napi_has_named_property: _napi_has_named_property, - napi_has_named_property__deps: ["$emnapiCtx", "$emnapiString"], - napi_has_named_property__sig: "ipppp", - napi_has_own_property: _napi_has_own_property, - napi_has_own_property__deps: ["$emnapiCtx"], - napi_has_own_property__sig: "ipppp", - napi_has_property: _napi_has_property, - napi_has_property__deps: ["$emnapiCtx"], - napi_has_property__sig: "ipppp", - napi_instanceof: _napi_instanceof, - napi_instanceof__deps: ["$emnapiCtx"], - napi_instanceof__sig: "ipppp", - napi_is_array: _napi_is_array, - napi_is_array__deps: ["$emnapiCtx"], - napi_is_array__sig: "ippp", - napi_is_arraybuffer: _napi_is_arraybuffer, - napi_is_arraybuffer__deps: ["$emnapiCtx"], - napi_is_arraybuffer__sig: "ippp", - napi_is_buffer: _napi_is_buffer, - napi_is_buffer__deps: ["$emnapiCtx"], - napi_is_buffer__sig: "ippp", - napi_is_dataview: _napi_is_dataview, - napi_is_dataview__deps: ["$emnapiCtx"], - napi_is_dataview__sig: "ippp", - napi_is_date: _napi_is_date, - napi_is_date__deps: ["$emnapiCtx"], - napi_is_date__sig: "ippp", - napi_is_detached_arraybuffer: _napi_is_detached_arraybuffer, - napi_is_detached_arraybuffer__deps: ["$emnapiCtx"], - napi_is_detached_arraybuffer__sig: "ippp", - napi_is_error: _napi_is_error, - napi_is_error__deps: ["$emnapiCtx"], - napi_is_error__sig: "ippp", - napi_is_exception_pending: _napi_is_exception_pending, - napi_is_exception_pending__deps: ["$emnapiCtx"], - napi_is_exception_pending__sig: "ipp", - napi_is_promise: _napi_is_promise, - napi_is_promise__deps: ["$emnapiCtx"], - napi_is_promise__sig: "ippp", - napi_is_typedarray: _napi_is_typedarray, - napi_is_typedarray__deps: ["$emnapiCtx"], - napi_is_typedarray__sig: "ippp", - napi_make_callback: _napi_make_callback, - napi_make_callback__deps: ["$emnapiCtx", "$emnapiNodeBinding"], - napi_make_callback__sig: "ippppppp", - napi_new_instance: _napi_new_instance, - napi_new_instance__deps: ["$emnapiCtx"], - napi_new_instance__sig: "ippppp", - napi_object_freeze: _napi_object_freeze, - napi_object_freeze__deps: ["$emnapiCtx"], - napi_object_freeze__sig: "ipp", - napi_object_seal: _napi_object_seal, - napi_object_seal__deps: ["$emnapiCtx"], - napi_object_seal__sig: "ipp", - napi_open_callback_scope: _napi_open_callback_scope, - napi_open_callback_scope__sig: "ipppp", - napi_open_escapable_handle_scope: _napi_open_escapable_handle_scope, - napi_open_escapable_handle_scope__deps: ["$emnapiCtx"], - napi_open_escapable_handle_scope__sig: "ipp", - napi_open_handle_scope: _napi_open_handle_scope, - napi_open_handle_scope__deps: ["$emnapiCtx"], - napi_open_handle_scope__sig: "ipp", - napi_queue_async_work: _napi_queue_async_work, - napi_queue_async_work__deps: ["$emnapiCtx", "$emnapiAWST"], - napi_queue_async_work__sig: "ipp", - napi_ref_threadsafe_function: _napi_ref_threadsafe_function, - napi_ref_threadsafe_function__deps: ["$emnapiTSFN", "_emnapi_runtime_keepalive_push", "$emnapiCtx"], - napi_ref_threadsafe_function__sig: "ipp", - napi_reference_ref: _napi_reference_ref, - napi_reference_ref__deps: ["$emnapiCtx"], - napi_reference_ref__sig: "ippp", - napi_reference_unref: _napi_reference_unref, - napi_reference_unref__deps: ["$emnapiCtx"], - napi_reference_unref__sig: "ippp", - napi_reject_deferred: _napi_reject_deferred, - napi_reject_deferred__deps: ["$emnapiCtx"], - napi_reject_deferred__sig: "ippp", - napi_release_threadsafe_function: _napi_release_threadsafe_function, - napi_release_threadsafe_function__deps: ["$emnapiTSFN"], - napi_release_threadsafe_function__sig: "ipi", - napi_remove_env_cleanup_hook: _napi_remove_env_cleanup_hook, - napi_remove_env_cleanup_hook__deps: ["$emnapiCtx"], - napi_remove_env_cleanup_hook__sig: "ippp", - $emnapiUnwrap: emnapiUnwrap, - $emnapiUnwrap__deps: ["$emnapiCtx"], - napi_remove_wrap: _napi_remove_wrap, - napi_remove_wrap__deps: ["$emnapiUnwrap"], - napi_remove_wrap__sig: "ippp", - napi_resolve_deferred: _napi_resolve_deferred, - napi_resolve_deferred__deps: ["$emnapiCtx"], - napi_resolve_deferred__sig: "ippp", - napi_set_last_error: _napi_set_last_error, - napi_set_last_error__deps: ["$emnapiCtx"], - napi_set_last_error__sig: "ipiip", - napi_run_script: _napi_run_script, - napi_run_script__deps: ["$emnapiCtx", "napi_set_last_error"], - napi_run_script__sig: "ippp", - napi_set_element: _napi_set_element, - napi_set_element__deps: ["$emnapiCtx"], - napi_set_element__sig: "ippip", - napi_set_instance_data: _napi_set_instance_data, - napi_set_instance_data__deps: ["$emnapiCtx"], - napi_set_instance_data__sig: "ipppp", - napi_set_named_property: _napi_set_named_property, - napi_set_named_property__deps: ["$emnapiCtx", "$emnapiString"], - napi_set_named_property__sig: "ipppp", - napi_set_property: _napi_set_property, - napi_set_property__deps: ["$emnapiCtx"], - napi_set_property__sig: "ipppp", - napi_strict_equals: _napi_strict_equals, - napi_strict_equals__deps: ["$emnapiCtx"], - napi_strict_equals__sig: "ipppp", - napi_throw: _napi_throw, - napi_throw__deps: ["$emnapiCtx"], - napi_throw__sig: "ipp", - napi_throw_error: _napi_throw_error, - napi_throw_error__deps: ["$emnapiCtx", "$emnapiString"], - napi_throw_error__sig: "ippp", - napi_throw_range_error: _napi_throw_range_error, - napi_throw_range_error__deps: ["$emnapiCtx", "$emnapiString"], - napi_throw_range_error__sig: "ippp", - napi_throw_type_error: _napi_throw_type_error, - napi_throw_type_error__deps: ["$emnapiCtx", "$emnapiString"], - napi_throw_type_error__sig: "ippp", - napi_type_tag_object: _napi_type_tag_object, - napi_type_tag_object__deps: ["$emnapiCtx"], - napi_type_tag_object__sig: "ippp", - napi_typeof: _napi_typeof, - napi_typeof__deps: ["$emnapiCtx"], - napi_typeof__sig: "ippp", - napi_unref_threadsafe_function: _napi_unref_threadsafe_function, - napi_unref_threadsafe_function__deps: ["$emnapiTSFN", "_emnapi_runtime_keepalive_pop", "$emnapiCtx"], - napi_unref_threadsafe_function__sig: "ipp", - napi_unwrap: _napi_unwrap, - napi_unwrap__deps: ["$emnapiUnwrap"], - napi_unwrap__sig: "ippp", - $emnapiWrap: emnapiWrap, - $emnapiWrap__deps: ["$emnapiCtx", "$emnapiGetHandle"], - napi_wrap: _napi_wrap, - napi_wrap__deps: ["$emnapiWrap"], - napi_wrap__sig: "ipppppp", - node_api_create_buffer_from_arraybuffer: _node_api_create_buffer_from_arraybuffer, - node_api_create_buffer_from_arraybuffer__deps: ["$emnapiCtx", "$emnapiExternalMemory"], - node_api_create_buffer_from_arraybuffer__sig: "ippppp", - node_api_create_external_string_latin1: _node_api_create_external_string_latin1, - node_api_create_external_string_latin1__deps: ["$emnapiString", "napi_create_string_latin1"], - node_api_create_external_string_latin1__sig: "ippppppp", - node_api_create_external_string_utf16: _node_api_create_external_string_utf16, - node_api_create_external_string_utf16__deps: ["$emnapiString", "napi_create_string_utf16"], - node_api_create_external_string_utf16__sig: "ippppppp", - node_api_create_property_key_latin1: _node_api_create_property_key_latin1, - node_api_create_property_key_latin1__deps: ["napi_create_string_latin1"], - node_api_create_property_key_latin1__sig: "ipppp", - node_api_create_property_key_utf16: _node_api_create_property_key_utf16, - node_api_create_property_key_utf16__deps: ["napi_create_string_utf16"], - node_api_create_property_key_utf16__sig: "ipppp", - node_api_create_property_key_utf8: _node_api_create_property_key_utf8, - node_api_create_property_key_utf8__deps: ["napi_create_string_utf8"], - node_api_create_property_key_utf8__sig: "ipppp", - node_api_create_sharedarraybuffer: _node_api_create_sharedarraybuffer, - node_api_create_sharedarraybuffer__deps: ["$emnapiCtx", "$emnapiCreateArrayBuffer"], - node_api_create_sharedarraybuffer__sig: "ipppp", - node_api_create_syntax_error: _node_api_create_syntax_error, - node_api_create_syntax_error__deps: ["$emnapiCtx"], - node_api_create_syntax_error__sig: "ipppp", - node_api_is_sharedarraybuffer: _node_api_is_sharedarraybuffer, - node_api_is_sharedarraybuffer__deps: ["$emnapiCtx"], - node_api_is_sharedarraybuffer__sig: "ippp", - node_api_post_finalizer: _node_api_post_finalizer, - node_api_post_finalizer__deps: ["$emnapiCtx"], - node_api_post_finalizer__sig: "ipppp", - node_api_set_prototype: _node_api_set_prototype, - node_api_set_prototype__deps: ["$emnapiCtx"], - node_api_set_prototype__sig: "ippp", - node_api_symbol_for: _node_api_symbol_for, - node_api_symbol_for__deps: ["$emnapiCtx", "$emnapiString"], - node_api_symbol_for__sig: "ipppp", - node_api_throw_syntax_error: _node_api_throw_syntax_error, - node_api_throw_syntax_error__deps: ["$emnapiCtx", "$emnapiString"], - node_api_throw_syntax_error__sig: "ippp" -}); diff --git a/sdks/nodejs/node_modules/emnapi/emnapi.gyp b/sdks/nodejs/node_modules/emnapi/emnapi.gyp deleted file mode 100644 index 43bd1d2..0000000 --- a/sdks/nodejs/node_modules/emnapi/emnapi.gyp +++ /dev/null @@ -1,142 +0,0 @@ -{ - 'targets': [ - { - 'target_name': 'dlmalloc', - 'type': 'static_library', - 'defines': [ - 'PAGESIZE=65536' - ], - 'sources': [ - 'src/malloc/sbrk.c', - 'src/malloc/memcpy.c', - 'src/malloc/memset.c', - 'src/malloc/dlmalloc/dlmalloc.c', - ], - 'conditions': [ - ['wasm_threads != 0', { - 'defines': [ - 'USE_LOCKS=1' - ], - }], - ], - }, - { - 'target_name': 'emmalloc', - 'type': 'static_library', - 'defines': [ - 'PAGESIZE=65536' - ], - 'sources': [ - 'src/malloc/sbrk.c', - 'src/malloc/memcpy.c', - 'src/malloc/memset.c', - 'src/malloc/emmalloc/emmalloc.c', - ], - 'cflags': [ '-fno-strict-aliasing' ], - 'xcode_settings': { - 'GCC_STRICT_ALIASING': 'NO', - }, - 'conditions': [ - ['wasm_threads != 0', { - 'defines': [ - '__EMSCRIPTEN_SHARED_MEMORY__=1' - ], - }], - ], - }, - { - 'target_name': 'emnapi_basic', - 'type': 'static_library', - 'defines': [ - 'EMNAPI_DISABLE_UV' - ], - 'sources': [ - 'src/js_native_api.c', - 'src/node_api.c', - 'src/async_cleanup_hook.c', - 'src/async_context.c', - 'src/wasi_wait.c', - ], - 'link_settings': { - 'target_conditions': [ - ['_type == "executable" and OS == "emscripten"', { - 'libraries': [ - '--js-library=<(emnapi_js_library)', - ] - }], - ] - }, - 'conditions': [ - ['wasm_threads != 0 and OS in " unknown wasm wasi"', { - 'sources': [ - 'src/thread/async_worker_create.c', - 'src/thread/async_worker_init.S', - ], - 'link_settings': { - 'target_conditions': [ - ['_type == "executable"', { - 'ldflags': [ - '-Wl,--export=emnapi_async_worker_create', - '-Wl,--export=emnapi_async_worker_init', - ], - 'xcode_settings': { - 'OTHER_LDFLAGS': [ - '-Wl,--export=emnapi_async_worker_create', - '-Wl,--export=emnapi_async_worker_init', - ], - }, - }], - ] - }, - }], - ['OS == "wasi"', { - 'link_settings': { - 'target_conditions': [ - ['_type == "executable"', { - 'ldflags': [ - '-Wl,--export=emnapi_thread_crashed', - ], - 'xcode_settings': { - 'OTHER_LDFLAGS': [ - '-Wl,--export=emnapi_thread_crashed', - ], - }, - }], - ] - }, - }], - ] - }, - { - 'target_name': 'emnapi', - 'type': 'static_library', - 'sources': [ - 'src/js_native_api.c', - 'src/node_api.c', - 'src/async_cleanup_hook.c', - 'src/async_context.c', - 'src/wasi_wait.c', - - 'src/uv/uv-common.c', - 'src/uv/threadpool.c', - 'src/uv/unix/loop.c', - 'src/uv/unix/posix-hrtime.c', - 'src/uv/unix/thread.c', - 'src/uv/unix/async.c', - 'src/uv/unix/core.c', - - 'src/async_work.c', - 'src/threadsafe_function.c', - ], - 'link_settings': { - 'target_conditions': [ - ['_type == "executable" and OS == "emscripten"', { - 'libraries': [ - '--js-library=<(emnapi_js_library)', - ] - }], - ] - }, - } - ] -} diff --git a/sdks/nodejs/node_modules/emnapi/include/node/config.gypi b/sdks/nodejs/node_modules/emnapi/include/node/config.gypi deleted file mode 100644 index c363c3a..0000000 --- a/sdks/nodejs/node_modules/emnapi/include/node/config.gypi +++ /dev/null @@ -1,5 +0,0 @@ -{ - 'variables': { - 'napi_build_version': '9' - } -} diff --git a/sdks/nodejs/node_modules/emnapi/include/node/emnapi.h b/sdks/nodejs/node_modules/emnapi/include/node/emnapi.h deleted file mode 100644 index 215b614..0000000 --- a/sdks/nodejs/node_modules/emnapi/include/node/emnapi.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef EMNAPI_INCLUDE_EMNAPI_H_ -#define EMNAPI_INCLUDE_EMNAPI_H_ - -#include -#include "js_native_api_types.h" -#include "emnapi_common.h" - -#define EMNAPI_MAJOR_VERSION 1 -#define EMNAPI_MINOR_VERSION 8 -#define EMNAPI_PATCH_VERSION 1 - -typedef enum { - emnapi_runtime, - emnapi_userland, -} emnapi_ownership; - -typedef enum { - emnapi_int8_array, - emnapi_uint8_array, - emnapi_uint8_clamped_array, - emnapi_int16_array, - emnapi_uint16_array, - emnapi_int32_array, - emnapi_uint32_array, - emnapi_float32_array, - emnapi_float64_array, - emnapi_bigint64_array, - emnapi_biguint64_array, - emnapi_float16_array, - emnapi_data_view = -1, - emnapi_buffer = -2, -} emnapi_memory_view_type; - -EXTERN_C_START - -EMNAPI_EXTERN int emnapi_is_support_weakref(); -EMNAPI_EXTERN int emnapi_is_support_bigint(); -EMNAPI_EXTERN int emnapi_is_node_binding_available(); - -#ifdef __EMSCRIPTEN__ -EMNAPI_EXTERN -napi_status emnapi_get_module_object(napi_env env, - napi_value* result); - -EMNAPI_EXTERN -napi_status emnapi_get_module_property(napi_env env, - const char* utf8name, - napi_value* result); -#endif - -typedef struct { - uint32_t major; - uint32_t minor; - uint32_t patch; -} emnapi_runtime_version; - -EMNAPI_EXTERN -napi_status emnapi_get_runtime_version(napi_env env, - emnapi_runtime_version* version); - -EMNAPI_EXTERN -napi_status emnapi_create_memory_view(napi_env env, - emnapi_memory_view_type type, - void* external_data, - size_t byte_length, - napi_finalize finalize_cb, - void* finalize_hint, - napi_value* result); - - -EMNAPI_EXTERN -napi_status emnapi_sync_memory(napi_env env, - bool js_to_wasm, - napi_value* arraybuffer_or_view, - size_t byte_offset, - size_t length); - -EMNAPI_EXTERN -napi_status emnapi_get_memory_address(napi_env env, - napi_value arraybuffer_or_view, - void** address, - emnapi_ownership* ownership, - bool* runtime_allocated); - -EXTERN_C_END - -#endif diff --git a/sdks/nodejs/node_modules/emnapi/include/node/emnapi_common.h b/sdks/nodejs/node_modules/emnapi/include/node/emnapi_common.h deleted file mode 100644 index 58c541d..0000000 --- a/sdks/nodejs/node_modules/emnapi/include/node/emnapi_common.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef EMNAPI_INCLUDE_COMMON_H_ -#define EMNAPI_INCLUDE_COMMON_H_ - -#ifdef __EMSCRIPTEN__ -#define EMNAPI_EXTERN __attribute__((__import_module__("env"))) -#else -#define EMNAPI_EXTERN __attribute__((__import_module__("emnapi"))) -#endif - -#define EMNAPI_INTERNAL_EXTERN __attribute__((__import_module__("env"))) - -#ifdef __cplusplus -#ifndef EXTERN_C_START -#define EXTERN_C_START extern "C" { -#endif - -#ifndef EXTERN_C_END -#define EXTERN_C_END } -#endif -#else -#ifndef EXTERN_C_START -#define EXTERN_C_START -#endif - -#ifndef EXTERN_C_END -#define EXTERN_C_END -#endif -#endif - -#endif diff --git a/sdks/nodejs/node_modules/emnapi/include/node/js_native_api.h b/sdks/nodejs/node_modules/emnapi/include/node/js_native_api.h deleted file mode 100644 index 0fdc31a..0000000 --- a/sdks/nodejs/node_modules/emnapi/include/node/js_native_api.h +++ /dev/null @@ -1,630 +0,0 @@ -#ifndef SRC_JS_NATIVE_API_H_ -#define SRC_JS_NATIVE_API_H_ - -// This file needs to be compatible with C compilers. -#include // NOLINT(modernize-deprecated-headers) -#include // NOLINT(modernize-deprecated-headers) - -#ifndef EMNAPI_UNMODIFIED_UPSTREAM -#if !defined(NAPI_EXTERN) && defined(__EMSCRIPTEN__) -#define NAPI_EXTERN __attribute__((__import_module__("env"))) -#endif -#endif - -#include "js_native_api_types.h" - -// If you need __declspec(dllimport), either include instead, or -// define NAPI_EXTERN as __declspec(dllimport) on the compiler's command line. -#ifndef NAPI_EXTERN -#ifdef _WIN32 -#define NAPI_EXTERN __declspec(dllexport) -#elif defined(__wasm__) -#define NAPI_EXTERN \ - __attribute__((visibility("default"))) \ - __attribute__((__import_module__("napi"))) -#else -#define NAPI_EXTERN __attribute__((visibility("default"))) -#endif -#endif - -#define NAPI_AUTO_LENGTH SIZE_MAX - -#ifdef __cplusplus -#define EXTERN_C_START extern "C" { -#define EXTERN_C_END } -#else -#define EXTERN_C_START -#define EXTERN_C_END -#endif - -EXTERN_C_START - -NAPI_EXTERN napi_status NAPI_CDECL napi_get_last_error_info( - node_api_basic_env env, const napi_extended_error_info** result); - -// Getters for defined singletons -NAPI_EXTERN napi_status NAPI_CDECL napi_get_undefined(napi_env env, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_null(napi_env env, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_global(napi_env env, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_boolean(napi_env env, - bool value, - napi_value* result); - -// Methods to create Primitive types/Objects -NAPI_EXTERN napi_status NAPI_CDECL napi_create_object(napi_env env, - napi_value* result); -#ifdef NAPI_EXPERIMENTAL -#define NODE_API_EXPERIMENTAL_HAS_CREATE_OBJECT_WITH_PROPERTIES -NAPI_EXTERN napi_status NAPI_CDECL -napi_create_object_with_properties(napi_env env, - napi_value prototype_or_null, - napi_value* property_names, - napi_value* property_values, - size_t property_count, - napi_value* result); -#endif // NAPI_EXPERIMENTAL - -NAPI_EXTERN napi_status NAPI_CDECL napi_create_array(napi_env env, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL -napi_create_array_with_length(napi_env env, size_t length, napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_create_double(napi_env env, - double value, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_create_int32(napi_env env, - int32_t value, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_create_uint32(napi_env env, - uint32_t value, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_create_int64(napi_env env, - int64_t value, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_create_string_latin1( - napi_env env, const char* str, size_t length, napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_create_string_utf8(napi_env env, - const char* str, - size_t length, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_create_string_utf16(napi_env env, - const char16_t* str, - size_t length, - napi_value* result); -#if NAPI_VERSION >= 10 -NAPI_EXTERN napi_status NAPI_CDECL node_api_create_external_string_latin1( - napi_env env, - char* str, - size_t length, - node_api_basic_finalize finalize_callback, - void* finalize_hint, - napi_value* result, - bool* copied); -NAPI_EXTERN napi_status NAPI_CDECL -node_api_create_external_string_utf16(napi_env env, - char16_t* str, - size_t length, - node_api_basic_finalize finalize_callback, - void* finalize_hint, - napi_value* result, - bool* copied); - -NAPI_EXTERN napi_status NAPI_CDECL node_api_create_property_key_latin1( - napi_env env, const char* str, size_t length, napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL node_api_create_property_key_utf8( - napi_env env, const char* str, size_t length, napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL node_api_create_property_key_utf16( - napi_env env, const char16_t* str, size_t length, napi_value* result); -#endif // NAPI_VERSION >= 10 - -NAPI_EXTERN napi_status NAPI_CDECL napi_create_symbol(napi_env env, - napi_value description, - napi_value* result); -#if NAPI_VERSION >= 9 -NAPI_EXTERN napi_status NAPI_CDECL -node_api_symbol_for(napi_env env, - const char* utf8description, - size_t length, - napi_value* result); -#endif // NAPI_VERSION >= 9 -NAPI_EXTERN napi_status NAPI_CDECL napi_create_function(napi_env env, - const char* utf8name, - size_t length, - napi_callback cb, - void* data, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_create_error(napi_env env, - napi_value code, - napi_value msg, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_create_type_error(napi_env env, - napi_value code, - napi_value msg, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_create_range_error(napi_env env, - napi_value code, - napi_value msg, - napi_value* result); -#if NAPI_VERSION >= 9 -NAPI_EXTERN napi_status NAPI_CDECL node_api_create_syntax_error( - napi_env env, napi_value code, napi_value msg, napi_value* result); -#endif // NAPI_VERSION >= 9 - -// Methods to get the native napi_value from Primitive type -NAPI_EXTERN napi_status NAPI_CDECL napi_typeof(napi_env env, - napi_value value, - napi_valuetype* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_double(napi_env env, - napi_value value, - double* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_int32(napi_env env, - napi_value value, - int32_t* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_uint32(napi_env env, - napi_value value, - uint32_t* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_int64(napi_env env, - napi_value value, - int64_t* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_bool(napi_env env, - napi_value value, - bool* result); - -// Copies LATIN-1 encoded bytes from a string into a buffer. -NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_string_latin1( - napi_env env, napi_value value, char* buf, size_t bufsize, size_t* result); - -// Copies UTF-8 encoded bytes from a string into a buffer. -NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_string_utf8( - napi_env env, napi_value value, char* buf, size_t bufsize, size_t* result); - -// Copies UTF-16 encoded bytes from a string into a buffer. -NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_string_utf16(napi_env env, - napi_value value, - char16_t* buf, - size_t bufsize, - size_t* result); - -// Methods to coerce values -// These APIs may execute user scripts -NAPI_EXTERN napi_status NAPI_CDECL napi_coerce_to_bool(napi_env env, - napi_value value, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_coerce_to_number(napi_env env, - napi_value value, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_coerce_to_object(napi_env env, - napi_value value, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_coerce_to_string(napi_env env, - napi_value value, - napi_value* result); - -// Methods to work with Objects -#ifdef NAPI_EXPERIMENTAL -#define NODE_API_EXPERIMENTAL_HAS_SET_PROTOTYPE -NAPI_EXTERN napi_status NAPI_CDECL node_api_set_prototype(napi_env env, - napi_value object, - napi_value value); -#endif -NAPI_EXTERN napi_status NAPI_CDECL napi_get_prototype(napi_env env, - napi_value object, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_property_names(napi_env env, - napi_value object, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_set_property(napi_env env, - napi_value object, - napi_value key, - napi_value value); -NAPI_EXTERN napi_status NAPI_CDECL napi_has_property(napi_env env, - napi_value object, - napi_value key, - bool* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_property(napi_env env, - napi_value object, - napi_value key, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_delete_property(napi_env env, - napi_value object, - napi_value key, - bool* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_has_own_property(napi_env env, - napi_value object, - napi_value key, - bool* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_set_named_property(napi_env env, - napi_value object, - const char* utf8name, - napi_value value); -NAPI_EXTERN napi_status NAPI_CDECL napi_has_named_property(napi_env env, - napi_value object, - const char* utf8name, - bool* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_named_property(napi_env env, - napi_value object, - const char* utf8name, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_set_element(napi_env env, - napi_value object, - uint32_t index, - napi_value value); -NAPI_EXTERN napi_status NAPI_CDECL napi_has_element(napi_env env, - napi_value object, - uint32_t index, - bool* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_element(napi_env env, - napi_value object, - uint32_t index, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_delete_element(napi_env env, - napi_value object, - uint32_t index, - bool* result); -NAPI_EXTERN napi_status NAPI_CDECL -napi_define_properties(napi_env env, - napi_value object, - size_t property_count, - const napi_property_descriptor* properties); - -// Methods to work with Arrays -NAPI_EXTERN napi_status NAPI_CDECL napi_is_array(napi_env env, - napi_value value, - bool* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_array_length(napi_env env, - napi_value value, - uint32_t* result); - -// Methods to compare values -NAPI_EXTERN napi_status NAPI_CDECL napi_strict_equals(napi_env env, - napi_value lhs, - napi_value rhs, - bool* result); - -// Methods to work with Functions -NAPI_EXTERN napi_status NAPI_CDECL napi_call_function(napi_env env, - napi_value recv, - napi_value func, - size_t argc, - const napi_value* argv, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_new_instance(napi_env env, - napi_value constructor, - size_t argc, - const napi_value* argv, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_instanceof(napi_env env, - napi_value object, - napi_value constructor, - bool* result); - -// Methods to work with napi_callbacks - -// Gets all callback info in a single call. (Ugly, but faster.) -NAPI_EXTERN napi_status NAPI_CDECL napi_get_cb_info( - napi_env env, // [in] Node-API environment handle - napi_callback_info cbinfo, // [in] Opaque callback-info handle - size_t* argc, // [in-out] Specifies the size of the provided argv array - // and receives the actual count of args. - napi_value* argv, // [out] Array of values - napi_value* this_arg, // [out] Receives the JS 'this' arg for the call - void** data); // [out] Receives the data pointer for the callback. - -NAPI_EXTERN napi_status NAPI_CDECL napi_get_new_target( - napi_env env, napi_callback_info cbinfo, napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL -napi_define_class(napi_env env, - const char* utf8name, - size_t length, - napi_callback constructor, - void* data, - size_t property_count, - const napi_property_descriptor* properties, - napi_value* result); - -// Methods to work with external data objects -NAPI_EXTERN napi_status NAPI_CDECL -napi_wrap(napi_env env, - napi_value js_object, - void* native_object, - node_api_basic_finalize finalize_cb, - void* finalize_hint, - napi_ref* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_unwrap(napi_env env, - napi_value js_object, - void** result); -NAPI_EXTERN napi_status NAPI_CDECL napi_remove_wrap(napi_env env, - napi_value js_object, - void** result); -NAPI_EXTERN napi_status NAPI_CDECL -napi_create_external(napi_env env, - void* data, - node_api_basic_finalize finalize_cb, - void* finalize_hint, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_external(napi_env env, - napi_value value, - void** result); - -// Methods to control object lifespan - -// Set initial_refcount to 0 for a weak reference, >0 for a strong reference. -NAPI_EXTERN napi_status NAPI_CDECL -napi_create_reference(napi_env env, - napi_value value, - uint32_t initial_refcount, - napi_ref* result); - -// Deletes a reference. The referenced value is released, and may -// be GC'd unless there are other references to it. -NAPI_EXTERN napi_status NAPI_CDECL napi_delete_reference(node_api_basic_env env, - napi_ref ref); - -// Increments the reference count, optionally returning the resulting count. -// After this call the reference will be a strong reference because its -// refcount is >0, and the referenced object is effectively "pinned". -// Calling this when the refcount is 0 and the object is unavailable -// results in an error. -NAPI_EXTERN napi_status NAPI_CDECL napi_reference_ref(napi_env env, - napi_ref ref, - uint32_t* result); - -// Decrements the reference count, optionally returning the resulting count. -// If the result is 0 the reference is now weak and the object may be GC'd -// at any time if there are no other references. Calling this when the -// refcount is already 0 results in an error. -NAPI_EXTERN napi_status NAPI_CDECL napi_reference_unref(napi_env env, - napi_ref ref, - uint32_t* result); - -// Attempts to get a referenced value. If the reference is weak, -// the value might no longer be available, in that case the call -// is still successful but the result is NULL. -NAPI_EXTERN napi_status NAPI_CDECL napi_get_reference_value(napi_env env, - napi_ref ref, - napi_value* result); - -NAPI_EXTERN napi_status NAPI_CDECL -napi_open_handle_scope(napi_env env, napi_handle_scope* result); -NAPI_EXTERN napi_status NAPI_CDECL -napi_close_handle_scope(napi_env env, napi_handle_scope scope); -NAPI_EXTERN napi_status NAPI_CDECL napi_open_escapable_handle_scope( - napi_env env, napi_escapable_handle_scope* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_close_escapable_handle_scope( - napi_env env, napi_escapable_handle_scope scope); - -NAPI_EXTERN napi_status NAPI_CDECL -napi_escape_handle(napi_env env, - napi_escapable_handle_scope scope, - napi_value escapee, - napi_value* result); - -// Methods to support error handling -NAPI_EXTERN napi_status NAPI_CDECL napi_throw(napi_env env, napi_value error); -NAPI_EXTERN napi_status NAPI_CDECL napi_throw_error(napi_env env, - const char* code, - const char* msg); -NAPI_EXTERN napi_status NAPI_CDECL napi_throw_type_error(napi_env env, - const char* code, - const char* msg); -NAPI_EXTERN napi_status NAPI_CDECL napi_throw_range_error(napi_env env, - const char* code, - const char* msg); -#if NAPI_VERSION >= 9 -NAPI_EXTERN napi_status NAPI_CDECL node_api_throw_syntax_error(napi_env env, - const char* code, - const char* msg); -#endif // NAPI_VERSION >= 9 -NAPI_EXTERN napi_status NAPI_CDECL napi_is_error(napi_env env, - napi_value value, - bool* result); - -// Methods to support catching exceptions -NAPI_EXTERN napi_status NAPI_CDECL napi_is_exception_pending(napi_env env, - bool* result); -NAPI_EXTERN napi_status NAPI_CDECL -napi_get_and_clear_last_exception(napi_env env, napi_value* result); - -// Methods to work with array buffers and typed arrays -NAPI_EXTERN napi_status NAPI_CDECL napi_is_arraybuffer(napi_env env, - napi_value value, - bool* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_create_arraybuffer(napi_env env, - size_t byte_length, - void** data, - napi_value* result); -#ifndef NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED -NAPI_EXTERN napi_status NAPI_CDECL -napi_create_external_arraybuffer(napi_env env, - void* external_data, - size_t byte_length, - node_api_basic_finalize finalize_cb, - void* finalize_hint, - napi_value* result); -#endif // NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED -NAPI_EXTERN napi_status NAPI_CDECL napi_get_arraybuffer_info( - napi_env env, napi_value arraybuffer, void** data, size_t* byte_length); -NAPI_EXTERN napi_status NAPI_CDECL napi_is_typedarray(napi_env env, - napi_value value, - bool* result); -NAPI_EXTERN napi_status NAPI_CDECL -napi_create_typedarray(napi_env env, - napi_typedarray_type type, - size_t length, - napi_value arraybuffer, - size_t byte_offset, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL -napi_get_typedarray_info(napi_env env, - napi_value typedarray, - napi_typedarray_type* type, - size_t* length, - void** data, - napi_value* arraybuffer, - size_t* byte_offset); - -NAPI_EXTERN napi_status NAPI_CDECL napi_create_dataview(napi_env env, - size_t length, - napi_value arraybuffer, - size_t byte_offset, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_is_dataview(napi_env env, - napi_value value, - bool* result); -NAPI_EXTERN napi_status NAPI_CDECL -napi_get_dataview_info(napi_env env, - napi_value dataview, - size_t* bytelength, - void** data, - napi_value* arraybuffer, - size_t* byte_offset); - -#ifdef NAPI_EXPERIMENTAL -#define NODE_API_EXPERIMENTAL_HAS_SHAREDARRAYBUFFER -NAPI_EXTERN napi_status NAPI_CDECL -node_api_is_sharedarraybuffer(napi_env env, napi_value value, bool* result); -NAPI_EXTERN napi_status NAPI_CDECL node_api_create_sharedarraybuffer( - napi_env env, size_t byte_length, void** data, napi_value* result); -#endif // NAPI_EXPERIMENTAL - -// version management -NAPI_EXTERN napi_status NAPI_CDECL napi_get_version(node_api_basic_env env, - uint32_t* result); - -// Promises -NAPI_EXTERN napi_status NAPI_CDECL napi_create_promise(napi_env env, - napi_deferred* deferred, - napi_value* promise); -NAPI_EXTERN napi_status NAPI_CDECL napi_resolve_deferred(napi_env env, - napi_deferred deferred, - napi_value resolution); -NAPI_EXTERN napi_status NAPI_CDECL napi_reject_deferred(napi_env env, - napi_deferred deferred, - napi_value rejection); -NAPI_EXTERN napi_status NAPI_CDECL napi_is_promise(napi_env env, - napi_value value, - bool* is_promise); - -// Running a script -NAPI_EXTERN napi_status NAPI_CDECL napi_run_script(napi_env env, - napi_value script, - napi_value* result); - -// Memory management -NAPI_EXTERN napi_status NAPI_CDECL napi_adjust_external_memory( - node_api_basic_env env, int64_t change_in_bytes, int64_t* adjusted_value); - -#if NAPI_VERSION >= 5 - -// Dates -NAPI_EXTERN napi_status NAPI_CDECL napi_create_date(napi_env env, - double time, - napi_value* result); - -NAPI_EXTERN napi_status NAPI_CDECL napi_is_date(napi_env env, - napi_value value, - bool* is_date); - -NAPI_EXTERN napi_status NAPI_CDECL napi_get_date_value(napi_env env, - napi_value value, - double* result); - -// Add finalizer for pointer -NAPI_EXTERN napi_status NAPI_CDECL -napi_add_finalizer(napi_env env, - napi_value js_object, - void* finalize_data, - node_api_basic_finalize finalize_cb, - void* finalize_hint, - napi_ref* result); - -#endif // NAPI_VERSION >= 5 - -#ifdef NAPI_EXPERIMENTAL -#define NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER - -NAPI_EXTERN napi_status NAPI_CDECL -node_api_post_finalizer(node_api_basic_env env, - napi_finalize finalize_cb, - void* finalize_data, - void* finalize_hint); - -#endif // NAPI_EXPERIMENTAL - -#if NAPI_VERSION >= 6 - -// BigInt -NAPI_EXTERN napi_status NAPI_CDECL napi_create_bigint_int64(napi_env env, - int64_t value, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL -napi_create_bigint_uint64(napi_env env, uint64_t value, napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL -napi_create_bigint_words(napi_env env, - int sign_bit, - size_t word_count, - const uint64_t* words, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_bigint_int64(napi_env env, - napi_value value, - int64_t* result, - bool* lossless); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_bigint_uint64( - napi_env env, napi_value value, uint64_t* result, bool* lossless); -NAPI_EXTERN napi_status NAPI_CDECL -napi_get_value_bigint_words(napi_env env, - napi_value value, - int* sign_bit, - size_t* word_count, - uint64_t* words); - -// Object -NAPI_EXTERN napi_status NAPI_CDECL -napi_get_all_property_names(napi_env env, - napi_value object, - napi_key_collection_mode key_mode, - napi_key_filter key_filter, - napi_key_conversion key_conversion, - napi_value* result); - -// Instance data -NAPI_EXTERN napi_status NAPI_CDECL -napi_set_instance_data(node_api_basic_env env, - void* data, - napi_finalize finalize_cb, - void* finalize_hint); - -NAPI_EXTERN napi_status NAPI_CDECL -napi_get_instance_data(node_api_basic_env env, void** data); -#endif // NAPI_VERSION >= 6 - -#if NAPI_VERSION >= 7 -// ArrayBuffer detaching -NAPI_EXTERN napi_status NAPI_CDECL -napi_detach_arraybuffer(napi_env env, napi_value arraybuffer); - -NAPI_EXTERN napi_status NAPI_CDECL -napi_is_detached_arraybuffer(napi_env env, napi_value value, bool* result); -#endif // NAPI_VERSION >= 7 - -#if NAPI_VERSION >= 8 -// Type tagging -NAPI_EXTERN napi_status NAPI_CDECL napi_type_tag_object( - napi_env env, napi_value value, const napi_type_tag* type_tag); - -NAPI_EXTERN napi_status NAPI_CDECL -napi_check_object_type_tag(napi_env env, - napi_value value, - const napi_type_tag* type_tag, - bool* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_object_freeze(napi_env env, - napi_value object); -NAPI_EXTERN napi_status NAPI_CDECL napi_object_seal(napi_env env, - napi_value object); -#endif // NAPI_VERSION >= 8 - -EXTERN_C_END - -#endif // SRC_JS_NATIVE_API_H_ diff --git a/sdks/nodejs/node_modules/emnapi/include/node/js_native_api_types.h b/sdks/nodejs/node_modules/emnapi/include/node/js_native_api_types.h deleted file mode 100644 index 9642db6..0000000 --- a/sdks/nodejs/node_modules/emnapi/include/node/js_native_api_types.h +++ /dev/null @@ -1,241 +0,0 @@ -#ifndef SRC_JS_NATIVE_API_TYPES_H_ -#define SRC_JS_NATIVE_API_TYPES_H_ - -// Use INT_MAX, this should only be consumed by the pre-processor anyway. -#define NAPI_VERSION_EXPERIMENTAL 2147483647 -#ifndef NAPI_VERSION -#ifdef NAPI_EXPERIMENTAL -#define NAPI_VERSION NAPI_VERSION_EXPERIMENTAL -#else -// The baseline version for N-API. -// The NAPI_VERSION controls which version will be used by default when -// compilling a native addon. If the addon developer specifically wants to use -// functions available in a new version of N-API that is not yet ported in all -// LTS versions, they can set NAPI_VERSION knowing that they have specifically -// depended on that version. -#define NAPI_VERSION 8 -#endif -#endif - -#if defined(NAPI_EXPERIMENTAL) && \ - !defined(NODE_API_EXPERIMENTAL_NO_WARNING) && \ - !defined(NODE_WANT_INTERNALS) -#ifdef _MSC_VER -#pragma message("NAPI_EXPERIMENTAL is enabled. " \ - "Experimental features may be unstable.") -#else -#warning "NAPI_EXPERIMENTAL is enabled. " \ - "Experimental features may be unstable." -#endif -#endif - -// This file needs to be compatible with C compilers. -// This is a public include file, and these includes have essentially -// became part of it's API. -#include // NOLINT(modernize-deprecated-headers) -#include // NOLINT(modernize-deprecated-headers) - -#if !defined __cplusplus || (defined(_MSC_VER) && _MSC_VER < 1900) -typedef uint16_t char16_t; -#endif - -#ifndef NAPI_CDECL -#ifdef _WIN32 -#define NAPI_CDECL __cdecl -#else -#define NAPI_CDECL -#endif -#endif - -// JSVM API types are all opaque pointers for ABI stability -// typedef undefined structs instead of void* for compile time type safety -typedef struct napi_env__* napi_env; - -// We need to mark APIs which can be called during garbage collection (GC), -// meaning that they do not affect the state of the JS engine, and can -// therefore be called synchronously from a finalizer that itself runs -// synchronously during GC. Such APIs can receive either a `napi_env` or a -// `node_api_basic_env` as their first parameter, because we should be able to -// also call them during normal, non-garbage-collecting operations, whereas -// APIs that affect the state of the JS engine can only receive a `napi_env` as -// their first parameter, because we must not call them during GC. In lieu of -// inheritance, we use the properties of the const qualifier to accomplish -// this, because both a const and a non-const value can be passed to an API -// expecting a const value, but only a non-const value can be passed to an API -// expecting a non-const value. -// -// In conjunction with appropriate CFLAGS to warn us if we're passing a const -// (basic) environment into an API that expects a non-const environment, and -// the definition of basic finalizer function pointer types below, which -// receive a basic environment as their first parameter, and can thus only call -// basic APIs (unless the user explicitly casts the environment), we achieve -// the ability to ensure at compile time that we do not call APIs that affect -// the state of the JS engine from a synchronous (basic) finalizer. -#if !defined(NAPI_EXPERIMENTAL) || \ - (defined(NAPI_EXPERIMENTAL) && \ - (defined(NODE_API_EXPERIMENTAL_NOGC_ENV_OPT_OUT) || \ - defined(NODE_API_EXPERIMENTAL_BASIC_ENV_OPT_OUT))) -typedef struct napi_env__* node_api_nogc_env; -#else -typedef const struct napi_env__* node_api_nogc_env; -#endif -typedef node_api_nogc_env node_api_basic_env; - -typedef struct napi_value__* napi_value; -typedef struct napi_ref__* napi_ref; -typedef struct napi_handle_scope__* napi_handle_scope; -typedef struct napi_escapable_handle_scope__* napi_escapable_handle_scope; -typedef struct napi_callback_info__* napi_callback_info; -typedef struct napi_deferred__* napi_deferred; - -typedef enum { - napi_default = 0, - napi_writable = 1 << 0, - napi_enumerable = 1 << 1, - napi_configurable = 1 << 2, - - // Used with napi_define_class to distinguish static properties - // from instance properties. Ignored by napi_define_properties. - napi_static = 1 << 10, - -#if NAPI_VERSION >= 8 - // Default for class methods. - napi_default_method = napi_writable | napi_configurable, - - // Default for object properties, like in JS obj[prop]. - napi_default_jsproperty = napi_writable | napi_enumerable | napi_configurable, -#endif // NAPI_VERSION >= 8 -} napi_property_attributes; - -typedef enum { - // ES6 types (corresponds to typeof) - napi_undefined, - napi_null, - napi_boolean, - napi_number, - napi_string, - napi_symbol, - napi_object, - napi_function, - napi_external, - napi_bigint, -} napi_valuetype; - -typedef enum { - napi_int8_array, - napi_uint8_array, - napi_uint8_clamped_array, - napi_int16_array, - napi_uint16_array, - napi_int32_array, - napi_uint32_array, - napi_float32_array, - napi_float64_array, - napi_bigint64_array, - napi_biguint64_array, -#define NODE_API_HAS_FLOAT16_ARRAY - napi_float16_array, -} napi_typedarray_type; - -typedef enum { - napi_ok, - napi_invalid_arg, - napi_object_expected, - napi_string_expected, - napi_name_expected, - napi_function_expected, - napi_number_expected, - napi_boolean_expected, - napi_array_expected, - napi_generic_failure, - napi_pending_exception, - napi_cancelled, - napi_escape_called_twice, - napi_handle_scope_mismatch, - napi_callback_scope_mismatch, - napi_queue_full, - napi_closing, - napi_bigint_expected, - napi_date_expected, - napi_arraybuffer_expected, - napi_detachable_arraybuffer_expected, - napi_would_deadlock, // unused - napi_no_external_buffers_allowed, - napi_cannot_run_js, -} napi_status; -// Note: when adding a new enum value to `napi_status`, please also update -// * `const int last_status` in the definition of `napi_get_last_error_info()' -// in file js_native_api_v8.cc. -// * `const char* error_messages[]` in file js_native_api_v8.cc with a brief -// message explaining the error. -// * the definition of `napi_status` in doc/api/n-api.md to reflect the newly -// added value(s). - -typedef napi_value(NAPI_CDECL* napi_callback)(napi_env env, - napi_callback_info info); -typedef void(NAPI_CDECL* napi_finalize)(napi_env env, - void* finalize_data, - void* finalize_hint); - -#if !defined(NAPI_EXPERIMENTAL) || \ - (defined(NAPI_EXPERIMENTAL) && \ - (defined(NODE_API_EXPERIMENTAL_NOGC_ENV_OPT_OUT) || \ - defined(NODE_API_EXPERIMENTAL_BASIC_ENV_OPT_OUT))) -typedef napi_finalize node_api_nogc_finalize; -#else -typedef void(NAPI_CDECL* node_api_nogc_finalize)(node_api_nogc_env env, - void* finalize_data, - void* finalize_hint); -#endif -typedef node_api_nogc_finalize node_api_basic_finalize; - -typedef struct { - // One of utf8name or name should be NULL. - const char* utf8name; - napi_value name; - - napi_callback method; - napi_callback getter; - napi_callback setter; - napi_value value; - - napi_property_attributes attributes; - void* data; -} napi_property_descriptor; - -typedef struct { - const char* error_message; - void* engine_reserved; - uint32_t engine_error_code; - napi_status error_code; -} napi_extended_error_info; - -#if NAPI_VERSION >= 6 -typedef enum { - napi_key_include_prototypes, - napi_key_own_only -} napi_key_collection_mode; - -typedef enum { - napi_key_all_properties = 0, - napi_key_writable = 1, - napi_key_enumerable = 1 << 1, - napi_key_configurable = 1 << 2, - napi_key_skip_strings = 1 << 3, - napi_key_skip_symbols = 1 << 4 -} napi_key_filter; - -typedef enum { - napi_key_keep_numbers, - napi_key_numbers_to_strings -} napi_key_conversion; -#endif // NAPI_VERSION >= 6 - -#if NAPI_VERSION >= 8 -typedef struct { - uint64_t lower; - uint64_t upper; -} napi_type_tag; -#endif // NAPI_VERSION >= 8 - -#endif // SRC_JS_NATIVE_API_TYPES_H_ diff --git a/sdks/nodejs/node_modules/emnapi/include/node/node_api.h b/sdks/nodejs/node_modules/emnapi/include/node/node_api.h deleted file mode 100644 index d991b19..0000000 --- a/sdks/nodejs/node_modules/emnapi/include/node/node_api.h +++ /dev/null @@ -1,275 +0,0 @@ -#ifndef SRC_NODE_API_H_ -#define SRC_NODE_API_H_ - -#ifndef EMNAPI_UNMODIFIED_UPSTREAM -#ifndef BUILDING_NODE_EXTENSION -#define BUILDING_NODE_EXTENSION -#endif - -#if !defined(NAPI_EXTERN) && defined(__EMSCRIPTEN__) -#define NAPI_EXTERN __attribute__((__import_module__("env"))) -#endif -#endif - -#if defined(BUILDING_NODE_EXTENSION) && !defined(NAPI_EXTERN) -#ifdef _WIN32 -// Building native addon against node -#define NAPI_EXTERN __declspec(dllimport) -#elif defined(__wasm__) -#define NAPI_EXTERN __attribute__((__import_module__("napi"))) -#endif -#endif -#include "js_native_api.h" -#include "node_api_types.h" - -struct uv_loop_s; // Forward declaration. - -#ifdef _WIN32 -#define NAPI_MODULE_EXPORT __declspec(dllexport) -#else -#ifdef __EMSCRIPTEN__ -#define NAPI_MODULE_EXPORT \ - __attribute__((visibility("default"))) __attribute__((used)) -#else -#define NAPI_MODULE_EXPORT __attribute__((visibility("default"))) -#endif -#endif - -#if defined(__GNUC__) -#define NAPI_NO_RETURN __attribute__((noreturn)) -#elif defined(_WIN32) -#define NAPI_NO_RETURN __declspec(noreturn) -#else -#define NAPI_NO_RETURN -#endif - -// Used by deprecated registration method napi_module_register. -typedef struct napi_module { - int nm_version; - unsigned int nm_flags; - const char* nm_filename; - napi_addon_register_func nm_register_func; - const char* nm_modname; - void* nm_priv; - void* reserved[4]; -} napi_module; - -#define NAPI_MODULE_VERSION 1 - -#define NAPI_MODULE_INITIALIZER_X(base, version) \ - NAPI_MODULE_INITIALIZER_X_HELPER(base, version) -#define NAPI_MODULE_INITIALIZER_X_HELPER(base, version) base##version - -#ifdef __wasm__ -#define NAPI_MODULE_INITIALIZER_BASE napi_register_wasm_v -#else -#define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v -#endif - -#define NODE_API_MODULE_GET_API_VERSION_BASE node_api_module_get_api_version_v - -#define NAPI_MODULE_INITIALIZER \ - NAPI_MODULE_INITIALIZER_X(NAPI_MODULE_INITIALIZER_BASE, NAPI_MODULE_VERSION) - -#define NODE_API_MODULE_GET_API_VERSION \ - NAPI_MODULE_INITIALIZER_X(NODE_API_MODULE_GET_API_VERSION_BASE, \ - NAPI_MODULE_VERSION) - -#define NAPI_MODULE_INIT() \ - EXTERN_C_START \ - NAPI_MODULE_EXPORT int32_t NODE_API_MODULE_GET_API_VERSION(void) { \ - return NAPI_VERSION; \ - } \ - NAPI_MODULE_EXPORT napi_value NAPI_MODULE_INITIALIZER(napi_env env, \ - napi_value exports); \ - EXTERN_C_END \ - napi_value NAPI_MODULE_INITIALIZER(napi_env env, napi_value exports) - -#define NAPI_MODULE(modname, regfunc) \ - NAPI_MODULE_INIT() { return regfunc(env, exports); } - -// Deprecated. Use NAPI_MODULE. -#define NAPI_MODULE_X(modname, regfunc, priv, flags) \ - NAPI_MODULE(modname, regfunc) - -EXTERN_C_START - -// Deprecated. Replaced by symbol-based registration defined by NAPI_MODULE -// and NAPI_MODULE_INIT macros. -NAPI_EXTERN void NAPI_CDECL -napi_module_register(napi_module* mod); - -NAPI_EXTERN NAPI_NO_RETURN void NAPI_CDECL -napi_fatal_error(const char* location, - size_t location_len, - const char* message, - size_t message_len); - -// Methods for custom handling of async operations -NAPI_EXTERN napi_status NAPI_CDECL -napi_async_init(napi_env env, - napi_value async_resource, - napi_value async_resource_name, - napi_async_context* result); - -NAPI_EXTERN napi_status NAPI_CDECL -napi_async_destroy(napi_env env, napi_async_context async_context); - -NAPI_EXTERN napi_status NAPI_CDECL -napi_make_callback(napi_env env, - napi_async_context async_context, - napi_value recv, - napi_value func, - size_t argc, - const napi_value* argv, - napi_value* result); - -// Methods to provide node::Buffer functionality with napi types -NAPI_EXTERN napi_status NAPI_CDECL napi_create_buffer(napi_env env, - size_t length, - void** data, - napi_value* result); -#ifndef NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED -NAPI_EXTERN napi_status NAPI_CDECL -napi_create_external_buffer(napi_env env, - size_t length, - void* data, - node_api_basic_finalize finalize_cb, - void* finalize_hint, - napi_value* result); -#endif // NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED - -#if NAPI_VERSION >= 10 - -NAPI_EXTERN napi_status NAPI_CDECL -node_api_create_buffer_from_arraybuffer(napi_env env, - napi_value arraybuffer, - size_t byte_offset, - size_t byte_length, - napi_value* result); -#endif // NAPI_VERSION >= 10 - -NAPI_EXTERN napi_status NAPI_CDECL napi_create_buffer_copy(napi_env env, - size_t length, - const void* data, - void** result_data, - napi_value* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_is_buffer(napi_env env, - napi_value value, - bool* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_get_buffer_info(napi_env env, - napi_value value, - void** data, - size_t* length); - -// Methods to manage simple async operations -NAPI_EXTERN napi_status NAPI_CDECL -napi_create_async_work(napi_env env, - napi_value async_resource, - napi_value async_resource_name, - napi_async_execute_callback execute, - napi_async_complete_callback complete, - void* data, - napi_async_work* result); -NAPI_EXTERN napi_status NAPI_CDECL napi_delete_async_work(napi_env env, - napi_async_work work); -NAPI_EXTERN napi_status NAPI_CDECL napi_queue_async_work(node_api_basic_env env, - napi_async_work work); -NAPI_EXTERN napi_status NAPI_CDECL -napi_cancel_async_work(node_api_basic_env env, napi_async_work work); - -// version management -NAPI_EXTERN napi_status NAPI_CDECL napi_get_node_version( - node_api_basic_env env, const napi_node_version** version); - -#if NAPI_VERSION >= 2 - -// Return the current libuv event loop for a given environment -NAPI_EXTERN napi_status NAPI_CDECL -napi_get_uv_event_loop(node_api_basic_env env, struct uv_loop_s** loop); - -#endif // NAPI_VERSION >= 2 - -#if NAPI_VERSION >= 3 - -NAPI_EXTERN napi_status NAPI_CDECL napi_fatal_exception(napi_env env, - napi_value err); - -NAPI_EXTERN napi_status NAPI_CDECL napi_add_env_cleanup_hook( - node_api_basic_env env, napi_cleanup_hook fun, void* arg); - -NAPI_EXTERN napi_status NAPI_CDECL napi_remove_env_cleanup_hook( - node_api_basic_env env, napi_cleanup_hook fun, void* arg); - -NAPI_EXTERN napi_status NAPI_CDECL -napi_open_callback_scope(napi_env env, - napi_value resource_object, - napi_async_context context, - napi_callback_scope* result); - -NAPI_EXTERN napi_status NAPI_CDECL -napi_close_callback_scope(napi_env env, napi_callback_scope scope); - -#endif // NAPI_VERSION >= 3 - -#if NAPI_VERSION >= 4 - -// Calling into JS from other threads -NAPI_EXTERN napi_status NAPI_CDECL -napi_create_threadsafe_function(napi_env env, - napi_value func, - napi_value async_resource, - napi_value async_resource_name, - size_t max_queue_size, - size_t initial_thread_count, - void* thread_finalize_data, - napi_finalize thread_finalize_cb, - void* context, - napi_threadsafe_function_call_js call_js_cb, - napi_threadsafe_function* result); - -NAPI_EXTERN napi_status NAPI_CDECL napi_get_threadsafe_function_context( - napi_threadsafe_function func, void** result); - -NAPI_EXTERN napi_status NAPI_CDECL -napi_call_threadsafe_function(napi_threadsafe_function func, - void* data, - napi_threadsafe_function_call_mode is_blocking); - -NAPI_EXTERN napi_status NAPI_CDECL -napi_acquire_threadsafe_function(napi_threadsafe_function func); - -NAPI_EXTERN napi_status NAPI_CDECL napi_release_threadsafe_function( - napi_threadsafe_function func, napi_threadsafe_function_release_mode mode); - -NAPI_EXTERN napi_status NAPI_CDECL napi_unref_threadsafe_function( - node_api_basic_env env, napi_threadsafe_function func); - -NAPI_EXTERN napi_status NAPI_CDECL napi_ref_threadsafe_function( - node_api_basic_env env, napi_threadsafe_function func); - -#endif // NAPI_VERSION >= 4 - -#if NAPI_VERSION >= 8 - -NAPI_EXTERN napi_status NAPI_CDECL -napi_add_async_cleanup_hook(node_api_basic_env env, - napi_async_cleanup_hook hook, - void* arg, - napi_async_cleanup_hook_handle* remove_handle); - -NAPI_EXTERN napi_status NAPI_CDECL -napi_remove_async_cleanup_hook(napi_async_cleanup_hook_handle remove_handle); - -#endif // NAPI_VERSION >= 8 - -#if NAPI_VERSION >= 9 - -NAPI_EXTERN napi_status NAPI_CDECL -node_api_get_module_file_name(node_api_basic_env env, const char** result); - -#endif // NAPI_VERSION >= 9 - -EXTERN_C_END - -#endif // SRC_NODE_API_H_ diff --git a/sdks/nodejs/node_modules/emnapi/include/node/node_api_types.h b/sdks/nodejs/node_modules/emnapi/include/node/node_api_types.h deleted file mode 100644 index 2580f15..0000000 --- a/sdks/nodejs/node_modules/emnapi/include/node/node_api_types.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef SRC_NODE_API_TYPES_H_ -#define SRC_NODE_API_TYPES_H_ - -#include "js_native_api_types.h" - -typedef napi_value(NAPI_CDECL* napi_addon_register_func)(napi_env env, - napi_value exports); -typedef int32_t(NAPI_CDECL* node_api_addon_get_api_version_func)(void); - -typedef struct napi_callback_scope__* napi_callback_scope; -typedef struct napi_async_context__* napi_async_context; -typedef struct napi_async_work__* napi_async_work; - -#if NAPI_VERSION >= 3 -typedef void(NAPI_CDECL* napi_cleanup_hook)(void* arg); -#endif // NAPI_VERSION >= 3 - -#if NAPI_VERSION >= 4 -typedef struct napi_threadsafe_function__* napi_threadsafe_function; -#endif // NAPI_VERSION >= 4 - -#if NAPI_VERSION >= 4 -typedef enum { - napi_tsfn_release, - napi_tsfn_abort -} napi_threadsafe_function_release_mode; - -typedef enum { - napi_tsfn_nonblocking, - napi_tsfn_blocking -} napi_threadsafe_function_call_mode; -#endif // NAPI_VERSION >= 4 - -typedef void(NAPI_CDECL* napi_async_execute_callback)(napi_env env, void* data); -typedef void(NAPI_CDECL* napi_async_complete_callback)(napi_env env, - napi_status status, - void* data); -#if NAPI_VERSION >= 4 -typedef void(NAPI_CDECL* napi_threadsafe_function_call_js)( - napi_env env, napi_value js_callback, void* context, void* data); -#endif // NAPI_VERSION >= 4 - -typedef struct { - uint32_t major; - uint32_t minor; - uint32_t patch; - const char* release; -} napi_node_version; - -#if NAPI_VERSION >= 8 -typedef struct napi_async_cleanup_hook_handle__* napi_async_cleanup_hook_handle; -typedef void(NAPI_CDECL* napi_async_cleanup_hook)( - napi_async_cleanup_hook_handle handle, void* data); -#endif // NAPI_VERSION >= 8 - -#endif // SRC_NODE_API_TYPES_H_ diff --git a/sdks/nodejs/node_modules/emnapi/include/node/uv.h b/sdks/nodejs/node_modules/emnapi/include/node/uv.h deleted file mode 100644 index 3be4c4f..0000000 --- a/sdks/nodejs/node_modules/emnapi/include/node/uv.h +++ /dev/null @@ -1,197 +0,0 @@ -#ifndef UV_H -#define UV_H - -#if defined(__EMSCRIPTEN_PTHREADS__) || defined(_REENTRANT) - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/* Internal type, do not use. */ -struct uv__queue { - struct uv__queue* next; - struct uv__queue* prev; -}; - -#include "uv/unix.h" - -#define UV_EXTERN /* nothing */ - -typedef enum { - UV_UNKNOWN_REQ = 0, - UV_WORK = 7, - UV_REQ_TYPE_MAX = 19 -} uv_req_type; - -typedef enum { - UV_UNKNOWN_HANDLE = 0, - UV_ASYNC = 1 -} uv_handle_type; - -typedef struct uv_loop_s uv_loop_t; -typedef struct uv_req_s uv_req_t; -typedef struct uv_work_s uv_work_t; -typedef struct uv_handle_s uv_handle_t; -typedef struct uv_async_s uv_async_t; - -typedef struct uv_metrics_s uv_metrics_t; - -typedef void (*uv_work_cb)(uv_work_t* req); -typedef void (*uv_after_work_cb)(uv_work_t* req, int status); - -#define UV_REQ_FIELDS \ - void* data; \ - uv_req_type type; \ - -struct uv_req_s { - UV_REQ_FIELDS -}; - -typedef void* (*uv_malloc_func)(size_t size); -typedef void* (*uv_realloc_func)(void* ptr, size_t size); -typedef void* (*uv_calloc_func)(size_t count, size_t size); -typedef void (*uv_free_func)(void* ptr); - -UV_EXTERN void uv_library_shutdown(void); - -UV_EXTERN int uv_replace_allocator(uv_malloc_func malloc_func, - uv_realloc_func realloc_func, - uv_calloc_func calloc_func, - uv_free_func free_func); - -UV_EXTERN uv_loop_t* uv_default_loop(void); -UV_EXTERN int uv_loop_init(uv_loop_t* loop); -UV_EXTERN int uv_loop_close(uv_loop_t* loop); -UV_EXTERN uint64_t uv_hrtime(void); -UV_EXTERN void uv_sleep(unsigned int msec); - -UV_EXTERN int uv_sem_init(uv_sem_t* sem, unsigned int value); -UV_EXTERN void uv_sem_destroy(uv_sem_t* sem); -UV_EXTERN void uv_sem_post(uv_sem_t* sem); -UV_EXTERN void uv_sem_wait(uv_sem_t* sem); - -UV_EXTERN int uv_cond_init(uv_cond_t* cond); -UV_EXTERN void uv_cond_signal(uv_cond_t* cond); -UV_EXTERN void uv_cond_wait(uv_cond_t* cond, uv_mutex_t* mutex); -UV_EXTERN void uv_cond_destroy(uv_cond_t* cond); - -UV_EXTERN void uv_once(uv_once_t* guard, void (*callback)(void)); - -struct uv_work_s { - UV_REQ_FIELDS - uv_loop_t* loop; - uv_work_cb work_cb; - uv_after_work_cb after_work_cb; - struct uv__work work_req; -}; - -UV_EXTERN int uv_queue_work(uv_loop_t* loop, - uv_work_t* req, - uv_work_cb work_cb, - uv_after_work_cb after_work_cb); - -UV_EXTERN int uv_cancel(uv_req_t* req); - -UV_EXTERN int uv_mutex_init(uv_mutex_t* mutex); -UV_EXTERN void uv_mutex_destroy(uv_mutex_t* handle); -UV_EXTERN void uv_mutex_lock(uv_mutex_t* handle); -UV_EXTERN void uv_mutex_unlock(uv_mutex_t* handle); -UV_EXTERN void uv_mutex_destroy(uv_mutex_t* cond); - -typedef void (*uv_thread_cb)(void* arg); - -UV_EXTERN int uv_thread_create(uv_thread_t* tid, uv_thread_cb entry, void* arg); -UV_EXTERN int uv_thread_join(uv_thread_t *tid); - -typedef enum { - UV_THREAD_NO_FLAGS = 0x00, - UV_THREAD_HAS_STACK_SIZE = 0x01 -} uv_thread_create_flags; - -struct uv_thread_options_s { - unsigned int flags; - size_t stack_size; -}; - -typedef struct uv_thread_options_s uv_thread_options_t; - -UV_EXTERN int uv_thread_create_ex(uv_thread_t* tid, - const uv_thread_options_t* params, - uv_thread_cb entry, - void* arg); - -typedef void (*uv_close_cb)(uv_handle_t* handle); -typedef void (*uv_async_cb)(uv_async_t* handle); - -#define UV_HANDLE_FIELDS \ - /* public */ \ - void* data; \ - /* read-only */ \ - uv_loop_t* loop; \ - uv_handle_type type; \ - uv_close_cb close_cb; \ - struct uv__queue handle_queue; \ - union { \ - int fd; \ - void* reserved[4]; \ - } u; \ - UV_HANDLE_PRIVATE_FIELDS \ - -struct uv_handle_s { - UV_HANDLE_FIELDS -}; - -struct uv_async_s { - UV_HANDLE_FIELDS - uv_async_cb async_cb; - struct uv__queue queue; - int pending; -}; - -UV_EXTERN int uv_async_init(uv_loop_t*, - uv_async_t* async, - uv_async_cb async_cb); -UV_EXTERN int uv_async_send(uv_async_t* async); - -UV_EXTERN void uv_close(uv_handle_t* handle, uv_close_cb close_cb); -UV_EXTERN int uv_is_closing(const uv_handle_t* handle); - -struct uv_metrics_s { - uint64_t loop_count; - uint64_t events; - uint64_t events_waiting; - /* private */ - uint64_t* reserved[13]; -}; - -UV_EXTERN int uv_metrics_info(uv_loop_t* loop, uv_metrics_t* metrics); -UV_EXTERN uint64_t uv_metrics_idle_time(uv_loop_t* loop); - -struct uv_loop_s { - void* data; - unsigned int active_handles; - struct uv__queue handle_queue; - union { - void* unused; - unsigned int count; - } active_reqs; - void* internal_fields; - - struct uv__queue wq; - uv_mutex_t wq_mutex; - uv_async_t wq_async; - struct uv__queue async_handles; - void* em_queue; -}; - -#undef UV_REQ_FIELDS - -#ifdef __cplusplus -} -#endif - -#endif -#endif /* UV_H */ diff --git a/sdks/nodejs/node_modules/emnapi/include/node/uv/threadpool.h b/sdks/nodejs/node_modules/emnapi/include/node/uv/threadpool.h deleted file mode 100644 index 6a65356..0000000 --- a/sdks/nodejs/node_modules/emnapi/include/node/uv/threadpool.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/* - * This file is private to libuv. It provides common functionality to both - * Windows and Unix backends. - */ - -#ifndef UV_THREADPOOL_H_ -#define UV_THREADPOOL_H_ - -#if defined(__EMSCRIPTEN_PTHREADS__) || defined(_REENTRANT) - -struct uv__work { - void (*work)(struct uv__work *w); - void (*done)(struct uv__work *w, int status); - struct uv_loop_s* loop; - struct uv__queue wq; -}; - -#endif - -#endif /* UV_THREADPOOL_H_ */ diff --git a/sdks/nodejs/node_modules/emnapi/include/node/uv/unix.h b/sdks/nodejs/node_modules/emnapi/include/node/uv/unix.h deleted file mode 100644 index 8e3a3dc..0000000 --- a/sdks/nodejs/node_modules/emnapi/include/node/uv/unix.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef UV_UNIX_H -#define UV_UNIX_H - -#if defined(__EMSCRIPTEN_PTHREADS__) || defined(_REENTRANT) - -#include -#include - -#include "threadpool.h" - -#define UV_ONCE_INIT PTHREAD_ONCE_INIT - -typedef pthread_once_t uv_once_t; -typedef pthread_t uv_thread_t; -typedef pthread_mutex_t uv_mutex_t; -typedef sem_t uv_sem_t; -typedef pthread_cond_t uv_cond_t; - -#endif - -#define UV_HANDLE_PRIVATE_FIELDS \ - uv_handle_t* next_closing; \ - unsigned int flags; \ - -#endif /* UV_UNIX_H */ diff --git a/sdks/nodejs/node_modules/emnapi/index.d.ts b/sdks/nodejs/node_modules/emnapi/index.d.ts deleted file mode 100644 index 76055a0..0000000 --- a/sdks/nodejs/node_modules/emnapi/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const include: string -export const include_dir: string -export const js_library: string -export const sources: string[] diff --git a/sdks/nodejs/node_modules/emnapi/index.js b/sdks/nodejs/node_modules/emnapi/index.js deleted file mode 100644 index 1d2aa92..0000000 --- a/sdks/nodejs/node_modules/emnapi/index.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict' -Object.defineProperty(exports, '__esModule', { value: true }) - -const path = require('path') - -const include = path.join(__dirname, 'include/node') -const includeDir = path.relative(process.cwd(), include) -const jsLibrary = path.join(__dirname, './dist/library_napi.js').replace(/\\|\\\\/g, '/') -const sources = [ - path.join(__dirname, './src/js_native_api.c'), - path.join(__dirname, './src/node_api.c'), - path.join(__dirname, './src/async_cleanup_hook.c'), - path.join(__dirname, './src/async_context.c'), - path.join(__dirname, './src/async_work.c'), - path.join(__dirname, './src/threadsafe_function.c'), - path.join(__dirname, './src/uv/uv-common.c'), - path.join(__dirname, './src/uv/threadpool.c'), - path.join(__dirname, './src/uv/unix/loop.c'), - path.join(__dirname, './src/uv/unix/posix-hrtime.c'), - path.join(__dirname, './src/uv/unix/thread.c'), - path.join(__dirname, './src/uv/unix/async.c'), - path.join(__dirname, './src/uv/unix/core.c') -] -const targets = path.relative(process.cwd(), path.join(__dirname, 'emnapi.gyp')) - -exports.include = include -exports.include_dir = includeDir -exports.js_library = jsLibrary -exports.sources = sources -exports.targets = targets diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-emscripten/libemnapi-basic.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-emscripten/libemnapi-basic.a deleted file mode 100644 index 1cdbe2c..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-emscripten/libemnapi-basic.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-emscripten/libemnapi-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-emscripten/libemnapi-mt.a deleted file mode 100644 index e30de83..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-emscripten/libemnapi-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-emscripten/libemnapi.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-emscripten/libemnapi.a deleted file mode 100644 index 9f18ea0..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-emscripten/libemnapi.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-basic-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-basic-mt.a deleted file mode 100644 index acccb30..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-basic-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-basic-napi-rs-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-basic-napi-rs-mt.a deleted file mode 100644 index afd39ae..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-basic-napi-rs-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-basic.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-basic.a deleted file mode 100644 index f38af07..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-basic.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-mt.a deleted file mode 100644 index 796b8cc..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-napi-rs-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-napi-rs-mt.a deleted file mode 100644 index ed0bfbe..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi-napi-rs-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi.a deleted file mode 100644 index 796b8cc..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi-threads/libemnapi.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi/libemnapi-basic-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi/libemnapi-basic-mt.a deleted file mode 100644 index acccb30..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi/libemnapi-basic-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi/libemnapi-basic.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi/libemnapi-basic.a deleted file mode 100644 index 22ecad7..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi/libemnapi-basic.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi/libemnapi.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi/libemnapi.a deleted file mode 100644 index 36e87dc..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasi/libemnapi.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-basic-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-basic-mt.a deleted file mode 100644 index acccb30..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-basic-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-basic-napi-rs-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-basic-napi-rs-mt.a deleted file mode 100644 index afd39ae..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-basic-napi-rs-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-basic.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-basic.a deleted file mode 100644 index f38af07..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-basic.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-mt.a deleted file mode 100644 index 796b8cc..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-napi-rs-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-napi-rs-mt.a deleted file mode 100644 index ed0bfbe..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi-napi-rs-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi.a deleted file mode 100644 index 796b8cc..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1-threads/libemnapi.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1/libemnapi-basic-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1/libemnapi-basic-mt.a deleted file mode 100644 index acccb30..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1/libemnapi-basic-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1/libemnapi-basic.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1/libemnapi-basic.a deleted file mode 100644 index 22ecad7..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1/libemnapi-basic.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1/libemnapi.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1/libemnapi.a deleted file mode 100644 index 36e87dc..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32-wasip1/libemnapi.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libdlmalloc-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32/libdlmalloc-mt.a deleted file mode 100644 index 7d76e5a..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libdlmalloc-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libdlmalloc.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32/libdlmalloc.a deleted file mode 100644 index 5926f8a..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libdlmalloc.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemmalloc-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemmalloc-mt.a deleted file mode 100644 index 11742f2..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemmalloc-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemmalloc.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemmalloc.a deleted file mode 100644 index cd77151..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemmalloc.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemnapi-basic-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemnapi-basic-mt.a deleted file mode 100644 index 2aa7ce8..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemnapi-basic-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemnapi-basic.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemnapi-basic.a deleted file mode 100644 index f145e53..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemnapi-basic.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemnapi.a b/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemnapi.a deleted file mode 100644 index 7d34a35..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm32/libemnapi.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm64-emscripten/libemnapi-basic.a b/sdks/nodejs/node_modules/emnapi/lib/wasm64-emscripten/libemnapi-basic.a deleted file mode 100644 index 2c01375..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm64-emscripten/libemnapi-basic.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm64-emscripten/libemnapi-mt.a b/sdks/nodejs/node_modules/emnapi/lib/wasm64-emscripten/libemnapi-mt.a deleted file mode 100644 index f3eb0be..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm64-emscripten/libemnapi-mt.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/lib/wasm64-emscripten/libemnapi.a b/sdks/nodejs/node_modules/emnapi/lib/wasm64-emscripten/libemnapi.a deleted file mode 100644 index 6d45287..0000000 Binary files a/sdks/nodejs/node_modules/emnapi/lib/wasm64-emscripten/libemnapi.a and /dev/null differ diff --git a/sdks/nodejs/node_modules/emnapi/package.json b/sdks/nodejs/node_modules/emnapi/package.json deleted file mode 100644 index 3c1e860..0000000 --- a/sdks/nodejs/node_modules/emnapi/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "emnapi", - "version": "1.8.1", - "description": "Node-API implementation for Emscripten", - "main": "index.js", - "gypfile": false, - "peerDependencies": { - "node-addon-api": ">= 6.1.0" - }, - "peerDependenciesMeta": { - "node-addon-api": { - "optional": true - } - }, - "scripts": { - "build": "node ./script/build.js", - "version": "node ./script/version.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/toyobayashi/emnapi.git" - }, - "keywords": [ - "emscripten", - "wasm", - "emcc", - "webassembly", - "binding", - "clang", - "c", - "c++", - "cpp", - "n-api", - "napi", - "node-addon-api", - "napi-rs", - "rust", - "wasi-sdk", - "wasi" - ], - "author": "toyobayashi", - "license": "MIT", - "bugs": { - "url": "https://github.com/toyobayashi/emnapi/issues" - }, - "homepage": "https://github.com/toyobayashi/emnapi#readme", - "publishConfig": { - "access": "public" - } -} diff --git a/sdks/nodejs/node_modules/emnapi/src/async_cleanup_hook.c b/sdks/nodejs/node_modules/emnapi/src/async_cleanup_hook.c deleted file mode 100644 index e965b73..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/async_cleanup_hook.c +++ /dev/null @@ -1,130 +0,0 @@ -#include "node_api.h" -#include "emnapi_internal.h" - -#if NAPI_VERSION >= 8 - -EXTERN_C_START - -typedef void (*async_cleanup_hook)(void* arg, void(*)(void*), void*); - -struct async_cleanup_hook_info { - napi_env env; - async_cleanup_hook fun; - void* arg; - bool started; -}; - -struct napi_async_cleanup_hook_handle__ { - struct async_cleanup_hook_info* handle_; - napi_env env_; - napi_async_cleanup_hook user_hook_; - void* user_data_; - void (*done_cb_)(void*); - void* done_data_; -}; - -static void _emnapi_ach_handle_hook(void* data, void (*done_cb)(void*), void* done_data) { - napi_async_cleanup_hook_handle handle = - (napi_async_cleanup_hook_handle) (data); - handle->done_cb_ = done_cb; - handle->done_data_ = done_data; - handle->user_hook_(handle, handle->user_data_); -} - -static void _emnapi_finish_async_cleanup_hook(void* arg) { - // struct async_cleanup_hook_info* info = (struct async_cleanup_hook_info*) (arg); - EMNAPI_KEEPALIVE_POP(); - _emnapi_ctx_decrease_waiting_request_counter(); -} - -static void _emnapi_run_async_cleanup_hook(void* arg) { - struct async_cleanup_hook_info* info = (struct async_cleanup_hook_info*) (arg); - EMNAPI_KEEPALIVE_PUSH(); - _emnapi_ctx_increase_waiting_request_counter(); - info->started = true; - info->fun(info->arg, _emnapi_finish_async_cleanup_hook, info); -} - -static struct async_cleanup_hook_info* -_emnapi_add_async_environment_cleanup_hook(napi_env env, - async_cleanup_hook fun, - void* arg) { - struct async_cleanup_hook_info* info = - (struct async_cleanup_hook_info*) malloc(sizeof(struct async_cleanup_hook_info)); - info->env = env; - info->fun = fun; - info->arg = arg; - info->started = false; - - EMNAPI_ASSERT_CALL(napi_add_env_cleanup_hook(env, _emnapi_run_async_cleanup_hook, info)); - - return info; -} - -static void _emnapi_remove_async_environment_cleanup_hook( - struct async_cleanup_hook_info* info) { - if (info->started) return; - EMNAPI_ASSERT_CALL(napi_remove_env_cleanup_hook(info->env, _emnapi_run_async_cleanup_hook, info)); -} - -static napi_async_cleanup_hook_handle -_emnapi_ach_handle_create(napi_env env, - napi_async_cleanup_hook user_hook, - void* user_data) { - napi_async_cleanup_hook_handle handle = - (napi_async_cleanup_hook_handle) calloc(1, sizeof(struct napi_async_cleanup_hook_handle__)); - handle->env_ = env; - handle->user_hook_ = user_hook; - handle->user_data_ = user_data; - handle->handle_ = _emnapi_add_async_environment_cleanup_hook(env, _emnapi_ach_handle_hook, handle); - _emnapi_env_ref(env); - - return handle; -} - -EMNAPI_INTERNAL_EXTERN void _emnapi_set_immediate(void (*callback)(void*), void* data); - -static void _emnapi_ach_handle_env_unref(void* arg) { - napi_env env = (napi_env) arg; - _emnapi_env_unref(env); -} - -static void -_emnapi_ach_handle_delete(napi_async_cleanup_hook_handle handle) { - _emnapi_remove_async_environment_cleanup_hook(handle->handle_); - if (handle->done_cb_ != NULL) handle->done_cb_(handle->done_data_); - - _emnapi_set_immediate(_emnapi_ach_handle_env_unref, handle->env_); - - free(handle->handle_); - free(handle); -} - -napi_status -napi_add_async_cleanup_hook(node_api_basic_env env, - napi_async_cleanup_hook hook, - void* arg, - napi_async_cleanup_hook_handle* remove_handle) { - CHECK_ENV(env); - CHECK_ARG(env, hook); - - napi_async_cleanup_hook_handle handle = - _emnapi_ach_handle_create(env, hook, arg); - - if (remove_handle != NULL) *remove_handle = handle; - - return napi_clear_last_error(env); -} - -napi_status -napi_remove_async_cleanup_hook(napi_async_cleanup_hook_handle remove_handle) { - if (remove_handle == NULL) return napi_invalid_arg; - - _emnapi_ach_handle_delete(remove_handle); - - return napi_ok; -} - -EXTERN_C_END - -#endif diff --git a/sdks/nodejs/node_modules/emnapi/src/async_context.c b/sdks/nodejs/node_modules/emnapi/src/async_context.c deleted file mode 100644 index a0219b6..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/async_context.c +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include "emnapi_internal.h" - -EXTERN_C_START - -struct napi_async_context__ { - int32_t low; - int32_t high; -}; - -EMNAPI_INTERNAL_EXTERN napi_status -_emnapi_async_init_js(napi_value async_resource, - napi_value async_resource_name, - napi_async_context result); -EMNAPI_INTERNAL_EXTERN napi_status -_emnapi_async_destroy_js(napi_async_context async_context); - -napi_status -napi_async_init(napi_env env, - napi_value async_resource, - napi_value async_resource_name, - napi_async_context* result) { - CHECK_ENV_NOT_IN_GC(env); - CHECK_ARG(env, async_resource_name); - CHECK_ARG(env, result); - - napi_async_context ret = (napi_async_context) malloc(sizeof(struct napi_async_context__)); - - napi_status status = _emnapi_async_init_js(async_resource, async_resource_name, ret); - if (status != napi_ok) { - free(ret); - return napi_set_last_error(env, status, 0, NULL); - } - - *result = ret; - return napi_clear_last_error(env); -} - -napi_status napi_async_destroy(napi_env env, - napi_async_context async_context) { - CHECK_ENV_NOT_IN_GC(env); - CHECK_ARG(env, async_context); - - napi_status status = _emnapi_async_destroy_js(async_context); - if (status != napi_ok) { - return napi_set_last_error(env, status, 0, NULL); - } - free(async_context); - - return napi_clear_last_error(env); -} - -EXTERN_C_END diff --git a/sdks/nodejs/node_modules/emnapi/src/async_work.c b/sdks/nodejs/node_modules/emnapi/src/async_work.c deleted file mode 100644 index 91bcba9..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/async_work.c +++ /dev/null @@ -1,236 +0,0 @@ -#include "node_api.h" -#include "emnapi_internal.h" - -#if EMNAPI_HAVE_THREADS - -#include -#include -#include "uv.h" - -EXTERN_C_START - -struct napi_async_work__ { - ASYNC_RESOURCE_FIELD - uv_work_t work_req_; - napi_env env; - void* data; - napi_async_execute_callback execute; - napi_async_complete_callback complete; -}; - -static napi_async_work async_work_init( - napi_env env, - napi_value async_resource, - napi_value async_resource_name, - napi_async_execute_callback execute, - napi_async_complete_callback complete, - void* data -) { - napi_async_work work = (napi_async_work)calloc(1, sizeof(struct napi_async_work__)); - if (work == NULL) return NULL; - EMNAPI_ASYNC_RESOURCE_CTOR(env, async_resource, async_resource_name, (emnapi_async_resource*)work); - work->env = env; - work->execute = execute; - work->complete = complete; - work->data = data; - return work; -} - -static void async_work_delete(napi_async_work work) { - EMNAPI_ASYNC_RESOURCE_DTOR(work->env, (emnapi_async_resource*)work); - free(work); -} - -static void async_work_do_thread_pool_work(napi_async_work work) { - work->execute(work->env, work->data); -} - -typedef struct complete_wrap_s { - int status; - napi_async_work work; -} complete_wrap_t; - -static napi_status convert_error_code(int code) { - switch (code) { - case 0: - return napi_ok; - case EINVAL: - return napi_invalid_arg; - case ECANCELED: - return napi_cancelled; - default: - return napi_generic_failure; - } -} - -static void async_work_on_complete(napi_env env, void* args) { - complete_wrap_t* wrap = (complete_wrap_t*) args; - napi_status status = convert_error_code(wrap->status); - napi_async_work work = wrap->work; - free(wrap); - napi_env _env = work->env; - void* data = work->data; - work->complete(_env, status, data); -} - -static napi_value async_work_after_cb(napi_env env, napi_callback_info info) { - void* data = NULL; - EMNAPI_ASSERT_CALL(napi_get_cb_info(env, info, NULL, NULL, NULL, &data)); - complete_wrap_t* wrap = (complete_wrap_t*) data; - _emnapi_callback_into_module(1, env, async_work_on_complete, wrap, 1); - return NULL; -} - -static void async_work_after_thread_pool_work(napi_async_work work, int status) { - if (work->complete == NULL) return; - napi_handle_scope scope; - napi_value resource, cb; - napi_env env = work->env; - EMNAPI_ASSERT_CALL(napi_open_handle_scope(env, &scope)); - EMNAPI_ASSERT_CALL(napi_get_reference_value(env, work->resource_, &resource)); - complete_wrap_t* wrap = (complete_wrap_t*) malloc(sizeof(complete_wrap_t)); - assert(wrap != NULL); - wrap->status = status; - wrap->work = work; - if (emnapi_is_node_binding_available()) { - EMNAPI_ASSERT_CALL(napi_create_function(env, NULL, 0, async_work_after_cb, wrap, &cb)); - _emnapi_node_make_callback(env, - resource, - cb, - NULL, - 0, - work->async_context_.async_id, - work->async_context_.trigger_async_id, - NULL); - } else { - _emnapi_callback_into_module(1, env, async_work_on_complete, wrap, 1); - } - EMNAPI_ASSERT_CALL(napi_close_handle_scope(env, scope)); -} - -static void async_work_schedule_work_on_execute(uv_work_t* req) { - napi_async_work self = container_of(req, struct napi_async_work__, work_req_); - async_work_do_thread_pool_work(self); -} - -static void async_work_schedule_work_on_complete(uv_work_t* req, int status) { - napi_async_work self = container_of(req, struct napi_async_work__, work_req_); - EMNAPI_KEEPALIVE_POP(); - _emnapi_ctx_decrease_waiting_request_counter(); - async_work_after_thread_pool_work(self, status); -} - -static void async_work_schedule_work(napi_async_work work) { - EMNAPI_KEEPALIVE_PUSH(); - _emnapi_ctx_increase_waiting_request_counter(); - int status = uv_queue_work(uv_default_loop(), - &work->work_req_, - async_work_schedule_work_on_execute, - async_work_schedule_work_on_complete); - CHECK_EQ(status, 0); -} - -static int async_work_cancel_work(napi_async_work work) { - return uv_cancel((uv_req_t*)&work->work_req_); -} - -EXTERN_C_END - -#endif - -EXTERN_C_START - -napi_status napi_create_async_work(napi_env env, - napi_value async_resource, - napi_value async_resource_name, - napi_async_execute_callback execute, - napi_async_complete_callback complete, - void* data, - napi_async_work* result) { -#if EMNAPI_HAVE_THREADS - CHECK_ENV_NOT_IN_GC(env); - CHECK_ARG(env, execute); - CHECK_ARG(env, result); - - napi_status status; - napi_value resource; - napi_value resource_name; - if (async_resource != NULL) { - status = napi_coerce_to_object(env, async_resource, &resource); - if (status != napi_ok) return status; - } else { - status = napi_create_object(env, &resource); - if (status != napi_ok) return status; - } - - CHECK_ARG(env, async_resource_name); - status = napi_coerce_to_string(env, async_resource_name, &resource_name); - if (status != napi_ok) return status; - - napi_async_work work = async_work_init(env, - resource, - resource_name, - execute, - complete, - data); - if (work == NULL) { - return napi_set_last_error(env, napi_generic_failure, 0, NULL); - } - - *result = work; - - return napi_clear_last_error(env); -#else - return napi_set_last_error(env, napi_generic_failure, 0, NULL); -#endif -} - -napi_status napi_delete_async_work(napi_env env, napi_async_work work) { -#if EMNAPI_HAVE_THREADS - CHECK_ENV_NOT_IN_GC(env); - CHECK_ARG(env, work); - - async_work_delete(work); - - return napi_clear_last_error(env); -#else - return napi_set_last_error(env, napi_generic_failure, 0, NULL); -#endif -} - -napi_status napi_queue_async_work(node_api_basic_env env, napi_async_work work) { -#if EMNAPI_HAVE_THREADS - CHECK_ENV(env); - CHECK_ARG(env, work); - - async_work_schedule_work(work); - - return napi_clear_last_error(env); -#else - return napi_set_last_error(env, napi_generic_failure, 0, NULL); -#endif -} - -#define CALL_UV(env, condition) \ - do { \ - int result = (condition); \ - napi_status status = convert_error_code(result); \ - if (status != napi_ok) { \ - return napi_set_last_error(env, status, result, NULL); \ - } \ - } while (0) - -napi_status napi_cancel_async_work(node_api_basic_env env, napi_async_work work) { -#if EMNAPI_HAVE_THREADS - CHECK_ENV(env); - CHECK_ARG(env, work); - - CALL_UV(env, async_work_cancel_work(work)); - - return napi_clear_last_error(env); -#else - return napi_set_last_error(env, napi_generic_failure, 0, NULL); -#endif -} - -EXTERN_C_END diff --git a/sdks/nodejs/node_modules/emnapi/src/emnapi_internal.h b/sdks/nodejs/node_modules/emnapi/src/emnapi_internal.h deleted file mode 100644 index fa72eb7..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/emnapi_internal.h +++ /dev/null @@ -1,188 +0,0 @@ -#include "emnapi.h" - -#if defined(__EMSCRIPTEN__) || defined(__wasi__) -#include -#include -#else -#if __STDC_VERSION__ >= 201112L && !defined(__cplusplus) -#define static_assert _Static_assert -#endif - -#include - -EXTERN_C_START -void* malloc(size_t size); -void* calloc(size_t count, size_t size); -void free(void* p); -EXTERN_C_END -#endif - -#ifdef __EMSCRIPTEN__ -#include - -#if __EMSCRIPTEN_major__ * 10000 + __EMSCRIPTEN_minor__ * 100 + __EMSCRIPTEN_tiny__ >= 30114 // NOLINT -#include -#endif -#endif - -#ifdef NDEBUG - #define EMNAPI_ASSERT_CALL(the_call) (the_call) -#else - #if defined(__EMSCRIPTEN__) || defined(__wasi__) - #define EMNAPI_ASSERT_CALL(the_call) (assert(napi_ok == (the_call))) - #else - #define EMNAPI_ASSERT_CALL(the_call) (the_call) - #endif -#endif - -#define CHECK_ENV(env) \ - do { \ - if ((env) == NULL) { \ - return napi_invalid_arg; \ - } \ - } while (0) - -#define RETURN_STATUS_IF_FALSE(env, condition, status) \ - do { \ - if (!(condition)) { \ - return napi_set_last_error((env), (status), 0, NULL); \ - } \ - } while (0) - -#define CHECK_ARG(env, arg) \ - RETURN_STATUS_IF_FALSE((env), ((arg) != NULL), napi_invalid_arg) - -#define CHECK_ENV_NOT_IN_GC(env) \ - do { \ - CHECK_ENV((env)); \ - _emnapi_env_check_gc_access((env)); \ - } while (0) - -#define CHECK(expr) \ - do { \ - if (!(expr)) { \ - __builtin_trap(); \ - } \ - } while (0) - -#define CHECK_NOT_NULL(val) CHECK((val) != NULL) - -#define CHECK_EQ(a, b) CHECK((a) == (b)) -#define CHECK_LE(a, b) CHECK((a) <= (b)) - -EXTERN_C_START - -EMNAPI_INTERNAL_EXTERN napi_status napi_set_last_error(node_api_basic_env env, - napi_status error_code, - uint32_t engine_error_code, - void* engine_reserved); -EMNAPI_INTERNAL_EXTERN napi_status napi_clear_last_error(node_api_basic_env env); - -#ifdef __EMSCRIPTEN__ -#if __EMSCRIPTEN_major__ * 10000 + __EMSCRIPTEN_minor__ * 100 + __EMSCRIPTEN_tiny__ >= 30114 // NOLINT -#define EMNAPI_KEEPALIVE_PUSH emscripten_runtime_keepalive_push -#define EMNAPI_KEEPALIVE_POP emscripten_runtime_keepalive_pop -#else - -EMNAPI_INTERNAL_EXTERN void _emnapi_runtime_keepalive_push(); -EMNAPI_INTERNAL_EXTERN void _emnapi_runtime_keepalive_pop(); - -#define EMNAPI_KEEPALIVE_PUSH _emnapi_runtime_keepalive_push -#define EMNAPI_KEEPALIVE_POP _emnapi_runtime_keepalive_pop -#endif -#else -EMNAPI_INTERNAL_EXTERN void _emnapi_runtime_keepalive_push(); -EMNAPI_INTERNAL_EXTERN void _emnapi_runtime_keepalive_pop(); - -#define EMNAPI_KEEPALIVE_PUSH _emnapi_runtime_keepalive_push -#define EMNAPI_KEEPALIVE_POP _emnapi_runtime_keepalive_pop -#endif - -EMNAPI_INTERNAL_EXTERN napi_handle_scope _emnapi_open_handle_scope(); -EMNAPI_INTERNAL_EXTERN void _emnapi_close_handle_scope(napi_handle_scope scope); -EMNAPI_INTERNAL_EXTERN void _emnapi_env_ref(napi_env env); -EMNAPI_INTERNAL_EXTERN void _emnapi_env_unref(napi_env env); -EMNAPI_INTERNAL_EXTERN void _emnapi_ctx_increase_waiting_request_counter(); -EMNAPI_INTERNAL_EXTERN void _emnapi_ctx_decrease_waiting_request_counter(); - -EMNAPI_INTERNAL_EXTERN int _emnapi_is_main_browser_thread(); -EMNAPI_INTERNAL_EXTERN int _emnapi_is_main_runtime_thread(); -EMNAPI_INTERNAL_EXTERN double _emnapi_get_now(); -EMNAPI_INTERNAL_EXTERN void _emnapi_unwind(); - -#if defined(__EMSCRIPTEN_PTHREADS__) || defined(_REENTRANT) -#define EMNAPI_HAVE_THREADS 1 -#else -#define EMNAPI_HAVE_THREADS 0 -#endif - -#if EMNAPI_HAVE_THREADS - -#define container_of(ptr, type, member) \ - ((type *) ((char *) (ptr) - offsetof(type, member))) - -typedef void (*_emnapi_call_into_module_callback)(napi_env env, void* args); -EMNAPI_INTERNAL_EXTERN -void _emnapi_callback_into_module(int force_uncaught, - napi_env env, - _emnapi_call_into_module_callback callback, - void* args, - int close_scope_if_throw); - -#endif - -typedef double async_id_t; -typedef struct async_context { - async_id_t async_id; - async_id_t trigger_async_id; -} async_context; - -#define ASYNC_RESOURCE_FIELD \ - napi_ref resource_; \ - async_context async_context_; - -typedef struct emnapi_async_resource { - ASYNC_RESOURCE_FIELD -} emnapi_async_resource; - -// call node::EmitAsyncInit -EMNAPI_INTERNAL_EXTERN -void _emnapi_node_emit_async_init(napi_value async_resource, - napi_value async_resource_name, - async_id_t trigger_async_id, - async_context* result); -// call node::EmitAsyncDestroy -EMNAPI_INTERNAL_EXTERN -void _emnapi_node_emit_async_destroy(async_id_t id, async_id_t trigger_async_id); - -// EMNAPI_INTERNAL_EXTERN void _emnapi_node_open_callback_scope(napi_value async_resource, async_id_t id, async_id_t trigger_async_id, int64_t* result); -// EMNAPI_INTERNAL_EXTERN void _emnapi_node_close_callback_scope(int64_t* scope); - -// call node:MakeCallback -EMNAPI_INTERNAL_EXTERN -napi_status _emnapi_node_make_callback(napi_env env, - napi_value async_resource, - napi_value cb, - napi_value* argv, - size_t size, - double async_id, - double trigger_async_id, - napi_value* result); - -EMNAPI_INTERNAL_EXTERN -void _emnapi_env_check_gc_access(napi_env env); - -#define EMNAPI_ASYNC_RESOURCE_CTOR(env, res, name, ar) \ - do { \ - EMNAPI_ASSERT_CALL(napi_create_reference((env), (res), 1, &(ar)->resource_)); \ - _emnapi_node_emit_async_init((res), (name), -1.0, &(ar)->async_context_); \ - } while (0) - -#define EMNAPI_ASYNC_RESOURCE_DTOR(env, ar) \ - do { \ - EMNAPI_ASSERT_CALL(napi_delete_reference((env), (ar)->resource_)); \ - _emnapi_node_emit_async_destroy((ar)->async_context_.async_id, \ - (ar)->async_context_.trigger_async_id); \ - } while (0) - -EXTERN_C_END diff --git a/sdks/nodejs/node_modules/emnapi/src/js_native_api.c b/sdks/nodejs/node_modules/emnapi/src/js_native_api.c deleted file mode 100644 index 0aa38ce..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/js_native_api.c +++ /dev/null @@ -1,69 +0,0 @@ -#include "emnapi_internal.h" - -EXTERN_C_START - -static const char* emnapi_error_messages[] = { - NULL, - "Invalid argument", - "An object was expected", - "A string was expected", - "A string or symbol was expected", - "A function was expected", - "A number was expected", - "A boolean was expected", - "An array was expected", - "Unknown failure", - "An exception is pending", - "The async work item was cancelled", - "napi_escape_handle already called on scope", - "Invalid handle scope usage", - "Invalid callback scope usage", - "Thread-safe function queue is full", - "Thread-safe function handle is closing", - "A bigint was expected", - "A date was expected", - "An arraybuffer was expected", - "A detachable arraybuffer was expected", - "Main thread would deadlock", - "External buffers are not allowed", - "Cannot run JavaScript", -}; - -EMNAPI_INTERNAL_EXTERN void _emnapi_get_last_error_info(napi_env env, - napi_status* error_code, - uint32_t* engine_error_code, - void** engine_reserved); - -napi_status napi_get_last_error_info( - node_api_basic_env basic_env, const napi_extended_error_info** result) { - static napi_extended_error_info last_error; - napi_env env = (napi_env) basic_env; - CHECK_ENV(env); - CHECK_ARG(env, result); - - const int last_status = napi_cannot_run_js; - -#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || defined(__cplusplus) - static_assert((sizeof(emnapi_error_messages) / sizeof(const char*)) == napi_cannot_run_js + 1, - "Count of error messages must match count of error values"); -#endif - - _emnapi_get_last_error_info(env, - &last_error.error_code, - &last_error.engine_error_code, - &last_error.engine_reserved); - - CHECK_LE(last_error.error_code, last_status); - - last_error.error_message = emnapi_error_messages[last_error.error_code]; - - if (last_error.error_code == napi_ok) { - napi_clear_last_error(env); - last_error.engine_error_code = 0; - last_error.engine_reserved = NULL; - } - *result = &last_error; - return napi_ok; -} - -EXTERN_C_END diff --git a/sdks/nodejs/node_modules/emnapi/src/malloc/dlmalloc/dlmalloc.c b/sdks/nodejs/node_modules/emnapi/src/malloc/dlmalloc/dlmalloc.c deleted file mode 100644 index 973e21e..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/malloc/dlmalloc/dlmalloc.c +++ /dev/null @@ -1,92 +0,0 @@ -// This file is a wrapper around malloc.c, which is the upstream source file. -// It sets configuration flags and controls which symbols are exported. - -#include - -// Define configuration macros for dlmalloc. - -// WebAssembly doesn't have mmap-style memory allocation. -#define HAVE_MMAP 0 - -// WebAssembly doesn't support shrinking linear memory. -#define MORECORE_CANNOT_TRIM 1 - -// Disable sanity checks to reduce code size. -#define ABORT __builtin_unreachable() - -// If threads are enabled, enable support for threads. -#ifdef _REENTRANT -#define USE_LOCKS 1 -#endif - -// Make malloc deterministic. -#define LACKS_TIME_H 1 - -// Disable malloc statistics generation to reduce code size. -#define NO_MALLINFO 1 -#define NO_MALLOC_STATS 1 - -// Align malloc regions to 16, to avoid unaligned SIMD accesses. -#define MALLOC_ALIGNMENT 16 - -// Declare errno values used by dlmalloc. We define them like this to avoid -// putting specific errno values in the ABI. -extern const int __ENOMEM; -#define ENOMEM __ENOMEM -extern const int __EINVAL; -#define EINVAL __EINVAL - -// Define USE_DL_PREFIX so that we leave dlmalloc's names prefixed with 'dl'. -// We define them as "static", and we wrap them with public names below. This -// serves two purposes: -// -// One is to make it easy to control which symbols are exported; dlmalloc -// defines several non-standard functions and we wish to explicitly control -// which functions are part of our public-facing interface. -// -// The other is to protect against compilers optimizing based on the assumption -// that they know what functions with names like "malloc" do. Code in the -// implementation will call functions like "dlmalloc" and assume it can use -// the resulting pointers to access the metadata outside of the nominally -// allocated objects. However, if the function were named "malloc", compilers -// might see code like that and assume it has undefined behavior and can be -// optimized away. By using "dlmalloc" in the implementation, we don't need -// -fno-builtin to avoid this problem. -#define USE_DL_PREFIX 1 -#define DLMALLOC_EXPORT static inline - -// This isn't declared with DLMALLOC_EXPORT so make it static explicitly. -static size_t dlmalloc_usable_size(void*); - -// Include the upstream dlmalloc's malloc.c. -#include "malloc.c" - -// Export the public names. - -void *malloc(size_t size) { - return dlmalloc(size); -} - -void free(void *ptr) { - dlfree(ptr); -} - -void *calloc(size_t nmemb, size_t size) { - return dlcalloc(nmemb, size); -} - -void *realloc(void *ptr, size_t size) { - return dlrealloc(ptr, size); -} - -int posix_memalign(void **memptr, size_t alignment, size_t size) { - return dlposix_memalign(memptr, alignment, size); -} - -void* aligned_alloc(size_t alignment, size_t bytes) { - return dlmemalign(alignment, bytes); -} - -size_t malloc_usable_size(void *ptr) { - return dlmalloc_usable_size(ptr); -} diff --git a/sdks/nodejs/node_modules/emnapi/src/malloc/dlmalloc/malloc.c b/sdks/nodejs/node_modules/emnapi/src/malloc/dlmalloc/malloc.c deleted file mode 100644 index 5c4683e..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/malloc/dlmalloc/malloc.c +++ /dev/null @@ -1,6390 +0,0 @@ -/* - This is a version (aka dlmalloc) of malloc/free/realloc written by - Doug Lea and released to the public domain, as explained at - http://creativecommons.org/publicdomain/zero/1.0/ Send questions, - comments, complaints, performance data, etc to dl@cs.oswego.edu - -* Version 2.8.6 Wed Aug 29 06:57:58 2012 Doug Lea - Note: There may be an updated version of this malloc obtainable at - ftp://gee.cs.oswego.edu/pub/misc/malloc.c - Check before installing! - -* Quickstart - - This library is all in one file to simplify the most common usage: - ftp it, compile it (-O3), and link it into another program. All of - the compile-time options default to reasonable values for use on - most platforms. You might later want to step through various - compile-time and dynamic tuning options. - - For convenience, an include file for code using this malloc is at: - ftp://gee.cs.oswego.edu/pub/misc/malloc-2.8.6.h - You don't really need this .h file unless you call functions not - defined in your system include files. The .h file contains only the - excerpts from this file needed for using this malloc on ANSI C/C++ - systems, so long as you haven't changed compile-time options about - naming and tuning parameters. If you do, then you can create your - own malloc.h that does include all settings by cutting at the point - indicated below. Note that you may already by default be using a C - library containing a malloc that is based on some version of this - malloc (for example in linux). You might still want to use the one - in this file to customize settings or to avoid overheads associated - with library versions. - -* Vital statistics: - - Supported pointer/size_t representation: 4 or 8 bytes - size_t MUST be an unsigned type of the same width as - pointers. (If you are using an ancient system that declares - size_t as a signed type, or need it to be a different width - than pointers, you can use a previous release of this malloc - (e.g. 2.7.2) supporting these.) - - Alignment: 8 bytes (minimum) - This suffices for nearly all current machines and C compilers. - However, you can define MALLOC_ALIGNMENT to be wider than this - if necessary (up to 128bytes), at the expense of using more space. - - Minimum overhead per allocated chunk: 4 or 8 bytes (if 4byte sizes) - 8 or 16 bytes (if 8byte sizes) - Each malloced chunk has a hidden word of overhead holding size - and status information, and additional cross-check word - if FOOTERS is defined. - - Minimum allocated size: 4-byte ptrs: 16 bytes (including overhead) - 8-byte ptrs: 32 bytes (including overhead) - - Even a request for zero bytes (i.e., malloc(0)) returns a - pointer to something of the minimum allocatable size. - The maximum overhead wastage (i.e., number of extra bytes - allocated than were requested in malloc) is less than or equal - to the minimum size, except for requests >= mmap_threshold that - are serviced via mmap(), where the worst case wastage is about - 32 bytes plus the remainder from a system page (the minimal - mmap unit); typically 4096 or 8192 bytes. - - Security: static-safe; optionally more or less - The "security" of malloc refers to the ability of malicious - code to accentuate the effects of errors (for example, freeing - space that is not currently malloc'ed or overwriting past the - ends of chunks) in code that calls malloc. This malloc - guarantees not to modify any memory locations below the base of - heap, i.e., static variables, even in the presence of usage - errors. The routines additionally detect most improper frees - and reallocs. All this holds as long as the static bookkeeping - for malloc itself is not corrupted by some other means. This - is only one aspect of security -- these checks do not, and - cannot, detect all possible programming errors. - - If FOOTERS is defined nonzero, then each allocated chunk - carries an additional check word to verify that it was malloced - from its space. These check words are the same within each - execution of a program using malloc, but differ across - executions, so externally crafted fake chunks cannot be - freed. This improves security by rejecting frees/reallocs that - could corrupt heap memory, in addition to the checks preventing - writes to statics that are always on. This may further improve - security at the expense of time and space overhead. (Note that - FOOTERS may also be worth using with MSPACES.) - - By default detected errors cause the program to abort (calling - "abort()"). You can override this to instead proceed past - errors by defining PROCEED_ON_ERROR. In this case, a bad free - has no effect, and a malloc that encounters a bad address - caused by user overwrites will ignore the bad address by - dropping pointers and indices to all known memory. This may - be appropriate for programs that should continue if at all - possible in the face of programming errors, although they may - run out of memory because dropped memory is never reclaimed. - - If you don't like either of these options, you can define - CORRUPTION_ERROR_ACTION and USAGE_ERROR_ACTION to do anything - else. And if if you are sure that your program using malloc has - no errors or vulnerabilities, you can define INSECURE to 1, - which might (or might not) provide a small performance improvement. - - It is also possible to limit the maximum total allocatable - space, using malloc_set_footprint_limit. This is not - designed as a security feature in itself (calls to set limits - are not screened or privileged), but may be useful as one - aspect of a secure implementation. - - Thread-safety: NOT thread-safe unless USE_LOCKS defined non-zero - When USE_LOCKS is defined, each public call to malloc, free, - etc is surrounded with a lock. By default, this uses a plain - pthread mutex, win32 critical section, or a spin-lock if if - available for the platform and not disabled by setting - USE_SPIN_LOCKS=0. However, if USE_RECURSIVE_LOCKS is defined, - recursive versions are used instead (which are not required for - base functionality but may be needed in layered extensions). - Using a global lock is not especially fast, and can be a major - bottleneck. It is designed only to provide minimal protection - in concurrent environments, and to provide a basis for - extensions. If you are using malloc in a concurrent program, - consider instead using nedmalloc - (http://www.nedprod.com/programs/portable/nedmalloc/) or - ptmalloc (See http://www.malloc.de), which are derived from - versions of this malloc. - - System requirements: Any combination of MORECORE and/or MMAP/MUNMAP - This malloc can use unix sbrk or any emulation (invoked using - the CALL_MORECORE macro) and/or mmap/munmap or any emulation - (invoked using CALL_MMAP/CALL_MUNMAP) to get and release system - memory. On most unix systems, it tends to work best if both - MORECORE and MMAP are enabled. On Win32, it uses emulations - based on VirtualAlloc. It also uses common C library functions - like memset. - - Compliance: I believe it is compliant with the Single Unix Specification - (See http://www.unix.org). Also SVID/XPG, ANSI C, and probably - others as well. - -* Overview of algorithms - - This is not the fastest, most space-conserving, most portable, or - most tunable malloc ever written. However it is among the fastest - while also being among the most space-conserving, portable and - tunable. Consistent balance across these factors results in a good - general-purpose allocator for malloc-intensive programs. - - In most ways, this malloc is a best-fit allocator. Generally, it - chooses the best-fitting existing chunk for a request, with ties - broken in approximately least-recently-used order. (This strategy - normally maintains low fragmentation.) However, for requests less - than 256bytes, it deviates from best-fit when there is not an - exactly fitting available chunk by preferring to use space adjacent - to that used for the previous small request, as well as by breaking - ties in approximately most-recently-used order. (These enhance - locality of series of small allocations.) And for very large requests - (>= 256Kb by default), it relies on system memory mapping - facilities, if supported. (This helps avoid carrying around and - possibly fragmenting memory used only for large chunks.) - - All operations (except malloc_stats and mallinfo) have execution - times that are bounded by a constant factor of the number of bits in - a size_t, not counting any clearing in calloc or copying in realloc, - or actions surrounding MORECORE and MMAP that have times - proportional to the number of non-contiguous regions returned by - system allocation routines, which is often just 1. In real-time - applications, you can optionally suppress segment traversals using - NO_SEGMENT_TRAVERSAL, which assures bounded execution even when - system allocators return non-contiguous spaces, at the typical - expense of carrying around more memory and increased fragmentation. - - The implementation is not very modular and seriously overuses - macros. Perhaps someday all C compilers will do as good a job - inlining modular code as can now be done by brute-force expansion, - but now, enough of them seem not to. - - Some compilers issue a lot of warnings about code that is - dead/unreachable only on some platforms, and also about intentional - uses of negation on unsigned types. All known cases of each can be - ignored. - - For a longer but out of date high-level description, see - http://gee.cs.oswego.edu/dl/html/malloc.html - -* MSPACES - If MSPACES is defined, then in addition to malloc, free, etc., - this file also defines mspace_malloc, mspace_free, etc. These - are versions of malloc routines that take an "mspace" argument - obtained using create_mspace, to control all internal bookkeeping. - If ONLY_MSPACES is defined, only these versions are compiled. - So if you would like to use this allocator for only some allocations, - and your system malloc for others, you can compile with - ONLY_MSPACES and then do something like... - static mspace mymspace = create_mspace(0,0); // for example - #define mymalloc(bytes) mspace_malloc(mymspace, bytes) - - (Note: If you only need one instance of an mspace, you can instead - use "USE_DL_PREFIX" to relabel the global malloc.) - - You can similarly create thread-local allocators by storing - mspaces as thread-locals. For example: - static __thread mspace tlms = 0; - void* tlmalloc(size_t bytes) { - if (tlms == 0) tlms = create_mspace(0, 0); - return mspace_malloc(tlms, bytes); - } - void tlfree(void* mem) { mspace_free(tlms, mem); } - - Unless FOOTERS is defined, each mspace is completely independent. - You cannot allocate from one and free to another (although - conformance is only weakly checked, so usage errors are not always - caught). If FOOTERS is defined, then each chunk carries around a tag - indicating its originating mspace, and frees are directed to their - originating spaces. Normally, this requires use of locks. - - ------------------------- Compile-time options --------------------------- - -Be careful in setting #define values for numerical constants of type -size_t. On some systems, literal values are not automatically extended -to size_t precision unless they are explicitly casted. You can also -use the symbolic values MAX_SIZE_T, SIZE_T_ONE, etc below. - -WIN32 default: defined if _WIN32 defined - Defining WIN32 sets up defaults for MS environment and compilers. - Otherwise defaults are for unix. Beware that there seem to be some - cases where this malloc might not be a pure drop-in replacement for - Win32 malloc: Random-looking failures from Win32 GDI API's (eg; - SetDIBits()) may be due to bugs in some video driver implementations - when pixel buffers are malloc()ed, and the region spans more than - one VirtualAlloc()ed region. Because dlmalloc uses a small (64Kb) - default granularity, pixel buffers may straddle virtual allocation - regions more often than when using the Microsoft allocator. You can - avoid this by using VirtualAlloc() and VirtualFree() for all pixel - buffers rather than using malloc(). If this is not possible, - recompile this malloc with a larger DEFAULT_GRANULARITY. Note: - in cases where MSC and gcc (cygwin) are known to differ on WIN32, - conditions use _MSC_VER to distinguish them. - -DLMALLOC_EXPORT default: extern - Defines how public APIs are declared. If you want to export via a - Windows DLL, you might define this as - #define DLMALLOC_EXPORT extern __declspec(dllexport) - If you want a POSIX ELF shared object, you might use - #define DLMALLOC_EXPORT extern __attribute__((visibility("default"))) - -MALLOC_ALIGNMENT default: (size_t)(2 * sizeof(void *)) - Controls the minimum alignment for malloc'ed chunks. It must be a - power of two and at least 8, even on machines for which smaller - alignments would suffice. It may be defined as larger than this - though. Note however that code and data structures are optimized for - the case of 8-byte alignment. - -MSPACES default: 0 (false) - If true, compile in support for independent allocation spaces. - This is only supported if HAVE_MMAP is true. - -ONLY_MSPACES default: 0 (false) - If true, only compile in mspace versions, not regular versions. - -USE_LOCKS default: 0 (false) - Causes each call to each public routine to be surrounded with - pthread or WIN32 mutex lock/unlock. (If set true, this can be - overridden on a per-mspace basis for mspace versions.) If set to a - non-zero value other than 1, locks are used, but their - implementation is left out, so lock functions must be supplied manually, - as described below. - -USE_SPIN_LOCKS default: 1 iff USE_LOCKS and spin locks available - If true, uses custom spin locks for locking. This is currently - supported only gcc >= 4.1, older gccs on x86 platforms, and recent - MS compilers. Otherwise, posix locks or win32 critical sections are - used. - -USE_RECURSIVE_LOCKS default: not defined - If defined nonzero, uses recursive (aka reentrant) locks, otherwise - uses plain mutexes. This is not required for malloc proper, but may - be needed for layered allocators such as nedmalloc. - -LOCK_AT_FORK default: not defined - If defined nonzero, performs pthread_atfork upon initialization - to initialize child lock while holding parent lock. The implementation - assumes that pthread locks (not custom locks) are being used. In other - cases, you may need to customize the implementation. - -FOOTERS default: 0 - If true, provide extra checking and dispatching by placing - information in the footers of allocated chunks. This adds - space and time overhead. - -INSECURE default: 0 - If true, omit checks for usage errors and heap space overwrites. - -USE_DL_PREFIX default: NOT defined - Causes compiler to prefix all public routines with the string 'dl'. - This can be useful when you only want to use this malloc in one part - of a program, using your regular system malloc elsewhere. - -MALLOC_INSPECT_ALL default: NOT defined - If defined, compiles malloc_inspect_all and mspace_inspect_all, that - perform traversal of all heap space. Unless access to these - functions is otherwise restricted, you probably do not want to - include them in secure implementations. - -ABORT default: defined as abort() - Defines how to abort on failed checks. On most systems, a failed - check cannot die with an "assert" or even print an informative - message, because the underlying print routines in turn call malloc, - which will fail again. Generally, the best policy is to simply call - abort(). It's not very useful to do more than this because many - errors due to overwriting will show up as address faults (null, odd - addresses etc) rather than malloc-triggered checks, so will also - abort. Also, most compilers know that abort() does not return, so - can better optimize code conditionally calling it. - -PROCEED_ON_ERROR default: defined as 0 (false) - Controls whether detected bad addresses cause them to bypassed - rather than aborting. If set, detected bad arguments to free and - realloc are ignored. And all bookkeeping information is zeroed out - upon a detected overwrite of freed heap space, thus losing the - ability to ever return it from malloc again, but enabling the - application to proceed. If PROCEED_ON_ERROR is defined, the - static variable malloc_corruption_error_count is compiled in - and can be examined to see if errors have occurred. This option - generates slower code than the default abort policy. - -DEBUG default: NOT defined - The DEBUG setting is mainly intended for people trying to modify - this code or diagnose problems when porting to new platforms. - However, it may also be able to better isolate user errors than just - using runtime checks. The assertions in the check routines spell - out in more detail the assumptions and invariants underlying the - algorithms. The checking is fairly extensive, and will slow down - execution noticeably. Calling malloc_stats or mallinfo with DEBUG - set will attempt to check every non-mmapped allocated and free chunk - in the course of computing the summaries. - -ABORT_ON_ASSERT_FAILURE default: defined as 1 (true) - Debugging assertion failures can be nearly impossible if your - version of the assert macro causes malloc to be called, which will - lead to a cascade of further failures, blowing the runtime stack. - ABORT_ON_ASSERT_FAILURE cause assertions failures to call abort(), - which will usually make debugging easier. - -MALLOC_FAILURE_ACTION default: sets errno to ENOMEM, or no-op on win32 - The action to take before "return 0" when malloc fails to be able to - return memory because there is none available. - -HAVE_MORECORE default: 1 (true) unless win32 or ONLY_MSPACES - True if this system supports sbrk or an emulation of it. - -MORECORE default: sbrk - The name of the sbrk-style system routine to call to obtain more - memory. See below for guidance on writing custom MORECORE - functions. The type of the argument to sbrk/MORECORE varies across - systems. It cannot be size_t, because it supports negative - arguments, so it is normally the signed type of the same width as - size_t (sometimes declared as "intptr_t"). It doesn't much matter - though. Internally, we only call it with arguments less than half - the max value of a size_t, which should work across all reasonable - possibilities, although sometimes generating compiler warnings. - -MORECORE_CONTIGUOUS default: 1 (true) if HAVE_MORECORE - If true, take advantage of fact that consecutive calls to MORECORE - with positive arguments always return contiguous increasing - addresses. This is true of unix sbrk. It does not hurt too much to - set it true anyway, since malloc copes with non-contiguities. - Setting it false when definitely non-contiguous saves time - and possibly wasted space it would take to discover this though. - -MORECORE_CANNOT_TRIM default: NOT defined - True if MORECORE cannot release space back to the system when given - negative arguments. This is generally necessary only if you are - using a hand-crafted MORECORE function that cannot handle negative - arguments. - -NO_SEGMENT_TRAVERSAL default: 0 - If non-zero, suppresses traversals of memory segments - returned by either MORECORE or CALL_MMAP. This disables - merging of segments that are contiguous, and selectively - releasing them to the OS if unused, but bounds execution times. - -HAVE_MMAP default: 1 (true) - True if this system supports mmap or an emulation of it. If so, and - HAVE_MORECORE is not true, MMAP is used for all system - allocation. If set and HAVE_MORECORE is true as well, MMAP is - primarily used to directly allocate very large blocks. It is also - used as a backup strategy in cases where MORECORE fails to provide - space from system. Note: A single call to MUNMAP is assumed to be - able to unmap memory that may have be allocated using multiple calls - to MMAP, so long as they are adjacent. - -HAVE_MREMAP default: 1 on linux, else 0 - If true realloc() uses mremap() to re-allocate large blocks and - extend or shrink allocation spaces. - -MMAP_CLEARS default: 1 except on WINCE. - True if mmap clears memory so calloc doesn't need to. This is true - for standard unix mmap using /dev/zero and on WIN32 except for WINCE. - -USE_BUILTIN_FFS default: 0 (i.e., not used) - Causes malloc to use the builtin ffs() function to compute indices. - Some compilers may recognize and intrinsify ffs to be faster than the - supplied C version. Also, the case of x86 using gcc is special-cased - to an asm instruction, so is already as fast as it can be, and so - this setting has no effect. Similarly for Win32 under recent MS compilers. - (On most x86s, the asm version is only slightly faster than the C version.) - -malloc_getpagesize default: derive from system includes, or 4096. - The system page size. To the extent possible, this malloc manages - memory from the system in page-size units. This may be (and - usually is) a function rather than a constant. This is ignored - if WIN32, where page size is determined using getSystemInfo during - initialization. - -USE_DEV_RANDOM default: 0 (i.e., not used) - Causes malloc to use /dev/random to initialize secure magic seed for - stamping footers. Otherwise, the current time is used. - -NO_MALLINFO default: 0 - If defined, don't compile "mallinfo". This can be a simple way - of dealing with mismatches between system declarations and - those in this file. - -MALLINFO_FIELD_TYPE default: size_t - The type of the fields in the mallinfo struct. This was originally - defined as "int" in SVID etc, but is more usefully defined as - size_t. The value is used only if HAVE_USR_INCLUDE_MALLOC_H is not set - -NO_MALLOC_STATS default: 0 - If defined, don't compile "malloc_stats". This avoids calls to - fprintf and bringing in stdio dependencies you might not want. - -REALLOC_ZERO_BYTES_FREES default: not defined - This should be set if a call to realloc with zero bytes should - be the same as a call to free. Some people think it should. Otherwise, - since this malloc returns a unique pointer for malloc(0), so does - realloc(p, 0). - -LACKS_UNISTD_H, LACKS_FCNTL_H, LACKS_SYS_PARAM_H, LACKS_SYS_MMAN_H -LACKS_STRINGS_H, LACKS_STRING_H, LACKS_SYS_TYPES_H, LACKS_ERRNO_H -LACKS_STDLIB_H LACKS_SCHED_H LACKS_TIME_H default: NOT defined unless on WIN32 - Define these if your system does not have these header files. - You might need to manually insert some of the declarations they provide. - -DEFAULT_GRANULARITY default: page size if MORECORE_CONTIGUOUS, - system_info.dwAllocationGranularity in WIN32, - otherwise 64K. - Also settable using mallopt(M_GRANULARITY, x) - The unit for allocating and deallocating memory from the system. On - most systems with contiguous MORECORE, there is no reason to - make this more than a page. However, systems with MMAP tend to - either require or encourage larger granularities. You can increase - this value to prevent system allocation functions to be called so - often, especially if they are slow. The value must be at least one - page and must be a power of two. Setting to 0 causes initialization - to either page size or win32 region size. (Note: In previous - versions of malloc, the equivalent of this option was called - "TOP_PAD") - -DEFAULT_TRIM_THRESHOLD default: 2MB - Also settable using mallopt(M_TRIM_THRESHOLD, x) - The maximum amount of unused top-most memory to keep before - releasing via malloc_trim in free(). Automatic trimming is mainly - useful in long-lived programs using contiguous MORECORE. Because - trimming via sbrk can be slow on some systems, and can sometimes be - wasteful (in cases where programs immediately afterward allocate - more large chunks) the value should be high enough so that your - overall system performance would improve by releasing this much - memory. As a rough guide, you might set to a value close to the - average size of a process (program) running on your system. - Releasing this much memory would allow such a process to run in - memory. Generally, it is worth tuning trim thresholds when a - program undergoes phases where several large chunks are allocated - and released in ways that can reuse each other's storage, perhaps - mixed with phases where there are no such chunks at all. The trim - value must be greater than page size to have any useful effect. To - disable trimming completely, you can set to MAX_SIZE_T. Note that the trick - some people use of mallocing a huge space and then freeing it at - program startup, in an attempt to reserve system memory, doesn't - have the intended effect under automatic trimming, since that memory - will immediately be returned to the system. - -DEFAULT_MMAP_THRESHOLD default: 256K - Also settable using mallopt(M_MMAP_THRESHOLD, x) - The request size threshold for using MMAP to directly service a - request. Requests of at least this size that cannot be allocated - using already-existing space will be serviced via mmap. (If enough - normal freed space already exists it is used instead.) Using mmap - segregates relatively large chunks of memory so that they can be - individually obtained and released from the host system. A request - serviced through mmap is never reused by any other request (at least - not directly; the system may just so happen to remap successive - requests to the same locations). Segregating space in this way has - the benefits that: Mmapped space can always be individually released - back to the system, which helps keep the system level memory demands - of a long-lived program low. Also, mapped memory doesn't become - `locked' between other chunks, as can happen with normally allocated - chunks, which means that even trimming via malloc_trim would not - release them. However, it has the disadvantage that the space - cannot be reclaimed, consolidated, and then used to service later - requests, as happens with normal chunks. The advantages of mmap - nearly always outweigh disadvantages for "large" chunks, but the - value of "large" may vary across systems. The default is an - empirically derived value that works well in most systems. You can - disable mmap by setting to MAX_SIZE_T. - -MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP - The number of consolidated frees between checks to release - unused segments when freeing. When using non-contiguous segments, - especially with multiple mspaces, checking only for topmost space - doesn't always suffice to trigger trimming. To compensate for this, - free() will, with a period of MAX_RELEASE_CHECK_RATE (or the - current number of segments, if greater) try to release unused - segments to the OS when freeing chunks that result in - consolidation. The best value for this parameter is a compromise - between slowing down frees with relatively costly checks that - rarely trigger versus holding on to unused memory. To effectively - disable, set to MAX_SIZE_T. This may lead to a very slight speed - improvement at the expense of carrying around more memory. -*/ - -/* Version identifier to allow people to support multiple versions */ -#ifndef DLMALLOC_VERSION -#define DLMALLOC_VERSION 20806 -#endif /* DLMALLOC_VERSION */ - -#ifndef DLMALLOC_EXPORT -#define DLMALLOC_EXPORT extern -#endif - -#ifndef WIN32 -#ifdef _WIN32 -#define WIN32 1 -#endif /* _WIN32 */ -#ifdef _WIN32_WCE -#define LACKS_FCNTL_H -#define WIN32 1 -#endif /* _WIN32_WCE */ -#endif /* WIN32 */ -#ifdef WIN32 -#define WIN32_LEAN_AND_MEAN -#include -#include -#define HAVE_MMAP 1 -#define HAVE_MORECORE 0 -#define LACKS_UNISTD_H -#define LACKS_SYS_PARAM_H -#define LACKS_SYS_MMAN_H -#define LACKS_STRING_H -#define LACKS_STRINGS_H -#define LACKS_SYS_TYPES_H -#define LACKS_ERRNO_H -#define LACKS_SCHED_H -#ifndef MALLOC_FAILURE_ACTION -#define MALLOC_FAILURE_ACTION -#endif /* MALLOC_FAILURE_ACTION */ -#ifndef MMAP_CLEARS -#ifdef _WIN32_WCE /* WINCE reportedly does not clear */ -#define MMAP_CLEARS 0 -#else -#define MMAP_CLEARS 1 -#endif /* _WIN32_WCE */ -#endif /*MMAP_CLEARS */ -#endif /* WIN32 */ - -#if defined(__wasm__) && !defined(__EMSCRIPTEN__) && !defined(__wasi__) -#define LACKS_UNISTD_H -#define LACKS_SYS_PARAM_H -#define LACKS_SYS_MMAN_H -#define LACKS_STRING_H -#define LACKS_STRINGS_H -#define LACKS_SYS_TYPES_H -#define LACKS_ERRNO_H -#define LACKS_SCHED_H -#define LACKS_STDLIB_H -#define NO_MALLOC_STATS 1 - -void *memset(void *dst, int c, size_t n); -void *memcpy(void *dst, const void* src, size_t n); -#endif - -#if defined(DARWIN) || defined(_DARWIN) -/* Mac OSX docs advise not to use sbrk; it seems better to use mmap */ -#ifndef HAVE_MORECORE -#define HAVE_MORECORE 0 -#define HAVE_MMAP 1 -/* OSX allocators provide 16 byte alignment */ -#ifndef MALLOC_ALIGNMENT -#define MALLOC_ALIGNMENT ((size_t)16U) -#endif -#endif /* HAVE_MORECORE */ -#endif /* DARWIN */ - -#ifndef LACKS_SYS_TYPES_H -#include /* For size_t */ -#endif /* LACKS_SYS_TYPES_H */ - -/* The maximum possible size_t value has all bits set */ -#define MAX_SIZE_T (~(size_t)0) - -#ifndef USE_LOCKS /* ensure true if spin or recursive locks set */ -#if 0 -#define USE_LOCKS ((defined(USE_SPIN_LOCKS) && USE_SPIN_LOCKS != 0) || \ - (defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0)) -#else -/* Avoid a -Wexpansion-to-defined compiler warning. */ -#if (defined(USE_SPIN_LOCKS) && USE_SPIN_LOCKS != 0) || \ - (defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0) -#define USE_LOCKS 1 -#else -#define USE_LOCKS 0 -#endif -#endif -#endif /* USE_LOCKS */ - -#if USE_LOCKS /* Spin locks for gcc >= 4.1, older gcc on x86, MSC >= 1310 */ -#if ((defined(__GNUC__) && \ - ((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) || \ - defined(__i386__) || defined(__x86_64__))) || \ - (defined(_MSC_VER) && _MSC_VER>=1310)) -#ifndef USE_SPIN_LOCKS -#define USE_SPIN_LOCKS 1 -#endif /* USE_SPIN_LOCKS */ -#elif USE_SPIN_LOCKS -#error "USE_SPIN_LOCKS defined without implementation" -#endif /* ... locks available... */ -#elif !defined(USE_SPIN_LOCKS) -#define USE_SPIN_LOCKS 0 -#endif /* USE_LOCKS */ - -#ifndef ONLY_MSPACES -#define ONLY_MSPACES 0 -#endif /* ONLY_MSPACES */ -#ifndef MSPACES -#if ONLY_MSPACES -#define MSPACES 1 -#else /* ONLY_MSPACES */ -#define MSPACES 0 -#endif /* ONLY_MSPACES */ -#endif /* MSPACES */ -#ifndef MALLOC_ALIGNMENT -#define MALLOC_ALIGNMENT ((size_t)(2 * sizeof(void *))) -#endif /* MALLOC_ALIGNMENT */ -#ifndef FOOTERS -#define FOOTERS 0 -#endif /* FOOTERS */ -#ifndef ABORT -#define ABORT abort() -#endif /* ABORT */ -#ifndef ABORT_ON_ASSERT_FAILURE -#define ABORT_ON_ASSERT_FAILURE 1 -#endif /* ABORT_ON_ASSERT_FAILURE */ -#ifndef PROCEED_ON_ERROR -#define PROCEED_ON_ERROR 0 -#endif /* PROCEED_ON_ERROR */ - -#ifndef INSECURE -#define INSECURE 0 -#endif /* INSECURE */ -#ifndef MALLOC_INSPECT_ALL -#define MALLOC_INSPECT_ALL 0 -#endif /* MALLOC_INSPECT_ALL */ -#ifndef HAVE_MMAP -#define HAVE_MMAP 1 -#endif /* HAVE_MMAP */ -#ifndef MMAP_CLEARS -#define MMAP_CLEARS 1 -#endif /* MMAP_CLEARS */ -#ifndef HAVE_MREMAP -#ifdef linux -#define HAVE_MREMAP 1 -#define _GNU_SOURCE /* Turns on mremap() definition */ -#else /* linux */ -#define HAVE_MREMAP 0 -#endif /* linux */ -#endif /* HAVE_MREMAP */ -#ifndef MALLOC_FAILURE_ACTION -#ifdef __wasi__ -#define MALLOC_FAILURE_ACTION errno = ENOMEM; -#else -#define MALLOC_FAILURE_ACTION -#endif -#endif /* MALLOC_FAILURE_ACTION */ -#ifndef HAVE_MORECORE -#if ONLY_MSPACES -#define HAVE_MORECORE 0 -#else /* ONLY_MSPACES */ -#define HAVE_MORECORE 1 -#endif /* ONLY_MSPACES */ -#endif /* HAVE_MORECORE */ -#if !HAVE_MORECORE -#define MORECORE_CONTIGUOUS 0 -#else /* !HAVE_MORECORE */ -#define MORECORE_DEFAULT sbrk -#ifndef MORECORE_CONTIGUOUS -#define MORECORE_CONTIGUOUS 1 -#endif /* MORECORE_CONTIGUOUS */ -#endif /* HAVE_MORECORE */ -#ifndef DEFAULT_GRANULARITY -#if (MORECORE_CONTIGUOUS || defined(WIN32)) -#define DEFAULT_GRANULARITY (0) /* 0 means to compute in init_mparams */ -#else /* MORECORE_CONTIGUOUS */ -#define DEFAULT_GRANULARITY ((size_t)64U * (size_t)1024U) -#endif /* MORECORE_CONTIGUOUS */ -#endif /* DEFAULT_GRANULARITY */ -#ifndef DEFAULT_TRIM_THRESHOLD -#ifndef MORECORE_CANNOT_TRIM -#define DEFAULT_TRIM_THRESHOLD ((size_t)2U * (size_t)1024U * (size_t)1024U) -#else /* MORECORE_CANNOT_TRIM */ -#define DEFAULT_TRIM_THRESHOLD MAX_SIZE_T -#endif /* MORECORE_CANNOT_TRIM */ -#endif /* DEFAULT_TRIM_THRESHOLD */ -#ifndef DEFAULT_MMAP_THRESHOLD -#if HAVE_MMAP -#define DEFAULT_MMAP_THRESHOLD ((size_t)256U * (size_t)1024U) -#else /* HAVE_MMAP */ -#define DEFAULT_MMAP_THRESHOLD MAX_SIZE_T -#endif /* HAVE_MMAP */ -#endif /* DEFAULT_MMAP_THRESHOLD */ -#ifndef MAX_RELEASE_CHECK_RATE -#if HAVE_MMAP -#define MAX_RELEASE_CHECK_RATE 4095 -#else -#define MAX_RELEASE_CHECK_RATE MAX_SIZE_T -#endif /* HAVE_MMAP */ -#endif /* MAX_RELEASE_CHECK_RATE */ -#ifndef USE_BUILTIN_FFS -#define USE_BUILTIN_FFS 0 -#endif /* USE_BUILTIN_FFS */ -#ifndef USE_DEV_RANDOM -#define USE_DEV_RANDOM 0 -#endif /* USE_DEV_RANDOM */ -#ifndef NO_MALLINFO -#define NO_MALLINFO 0 -#endif /* NO_MALLINFO */ -#ifndef MALLINFO_FIELD_TYPE -#define MALLINFO_FIELD_TYPE size_t -#endif /* MALLINFO_FIELD_TYPE */ -#ifndef NO_MALLOC_STATS -#define NO_MALLOC_STATS 0 -#endif /* NO_MALLOC_STATS */ -#ifndef NO_SEGMENT_TRAVERSAL -#define NO_SEGMENT_TRAVERSAL 0 -#endif /* NO_SEGMENT_TRAVERSAL */ - -/* - mallopt tuning options. SVID/XPG defines four standard parameter - numbers for mallopt, normally defined in malloc.h. None of these - are used in this malloc, so setting them has no effect. But this - malloc does support the following options. -*/ - -#define M_TRIM_THRESHOLD (-1) -#define M_GRANULARITY (-2) -#define M_MMAP_THRESHOLD (-3) - -/* ------------------------ Mallinfo declarations ------------------------ */ - -#if !NO_MALLINFO -/* - This version of malloc supports the standard SVID/XPG mallinfo - routine that returns a struct containing usage properties and - statistics. It should work on any system that has a - /usr/include/malloc.h defining struct mallinfo. The main - declaration needed is the mallinfo struct that is returned (by-copy) - by mallinfo(). The malloinfo struct contains a bunch of fields that - are not even meaningful in this version of malloc. These fields are - are instead filled by mallinfo() with other numbers that might be of - interest. - - HAVE_USR_INCLUDE_MALLOC_H should be set if you have a - /usr/include/malloc.h file that includes a declaration of struct - mallinfo. If so, it is included; else a compliant version is - declared below. These must be precisely the same for mallinfo() to - work. The original SVID version of this struct, defined on most - systems with mallinfo, declares all fields as ints. But some others - define as unsigned long. If your system defines the fields using a - type of different width than listed here, you MUST #include your - system version and #define HAVE_USR_INCLUDE_MALLOC_H. -*/ - -/* #define HAVE_USR_INCLUDE_MALLOC_H */ - -#ifdef HAVE_USR_INCLUDE_MALLOC_H -#include "/usr/include/malloc.h" -#else /* HAVE_USR_INCLUDE_MALLOC_H */ -#ifndef STRUCT_MALLINFO_DECLARED -/* HP-UX (and others?) redefines mallinfo unless _STRUCT_MALLINFO is defined */ -#define _STRUCT_MALLINFO -#define STRUCT_MALLINFO_DECLARED 1 -struct mallinfo { - MALLINFO_FIELD_TYPE arena; /* non-mmapped space allocated from system */ - MALLINFO_FIELD_TYPE ordblks; /* number of free chunks */ - MALLINFO_FIELD_TYPE smblks; /* always 0 */ - MALLINFO_FIELD_TYPE hblks; /* always 0 */ - MALLINFO_FIELD_TYPE hblkhd; /* space in mmapped regions */ - MALLINFO_FIELD_TYPE usmblks; /* maximum total allocated space */ - MALLINFO_FIELD_TYPE fsmblks; /* always 0 */ - MALLINFO_FIELD_TYPE uordblks; /* total allocated space */ - MALLINFO_FIELD_TYPE fordblks; /* total free space */ - MALLINFO_FIELD_TYPE keepcost; /* releasable (via malloc_trim) space */ -}; -#endif /* STRUCT_MALLINFO_DECLARED */ -#endif /* HAVE_USR_INCLUDE_MALLOC_H */ -#endif /* NO_MALLINFO */ - -/* - Try to persuade compilers to inline. The most critical functions for - inlining are defined as macros, so these aren't used for them. -*/ - -#ifndef FORCEINLINE - #if defined(__GNUC__) -#define FORCEINLINE __inline __attribute__ ((always_inline)) - #elif defined(_MSC_VER) - #define FORCEINLINE __forceinline - #endif -#endif -#ifndef NOINLINE - #if defined(__GNUC__) - #define NOINLINE __attribute__ ((noinline)) - #elif defined(_MSC_VER) - #define NOINLINE __declspec(noinline) - #else - #define NOINLINE - #endif -#endif - -#ifdef __cplusplus -extern "C" { -#ifndef FORCEINLINE - #define FORCEINLINE inline -#endif -#endif /* __cplusplus */ -#ifndef FORCEINLINE - #define FORCEINLINE -#endif - -#if !ONLY_MSPACES - -/* ------------------- Declarations of public routines ------------------- */ - -#ifndef USE_DL_PREFIX -#define dlcalloc calloc -#define dlfree free -#define dlmalloc malloc -#define dlmemalign memalign -#define dlposix_memalign posix_memalign -#define dlrealloc realloc -#define dlrealloc_in_place realloc_in_place -#define dlvalloc valloc -#define dlpvalloc pvalloc -#define dlmallinfo mallinfo -#define dlmallopt mallopt -#define dlmalloc_trim malloc_trim -#define dlmalloc_stats malloc_stats -#define dlmalloc_usable_size malloc_usable_size -#define dlmalloc_footprint malloc_footprint -#define dlmalloc_max_footprint malloc_max_footprint -#define dlmalloc_footprint_limit malloc_footprint_limit -#define dlmalloc_set_footprint_limit malloc_set_footprint_limit -#define dlmalloc_inspect_all malloc_inspect_all -#define dlindependent_calloc independent_calloc -#define dlindependent_comalloc independent_comalloc -#define dlbulk_free bulk_free -#endif /* USE_DL_PREFIX */ - -/* - malloc(size_t n) - Returns a pointer to a newly allocated chunk of at least n bytes, or - null if no space is available, in which case errno is set to ENOMEM - on ANSI C systems. - - If n is zero, malloc returns a minimum-sized chunk. (The minimum - size is 16 bytes on most 32bit systems, and 32 bytes on 64bit - systems.) Note that size_t is an unsigned type, so calls with - arguments that would be negative if signed are interpreted as - requests for huge amounts of space, which will often fail. The - maximum supported value of n differs across systems, but is in all - cases less than the maximum representable value of a size_t. -*/ -DLMALLOC_EXPORT void* dlmalloc(size_t); - -/* - free(void* p) - Releases the chunk of memory pointed to by p, that had been previously - allocated using malloc or a related routine such as realloc. - It has no effect if p is null. If p was not malloced or already - freed, free(p) will by default cause the current program to abort. -*/ -DLMALLOC_EXPORT void dlfree(void*); - -/* - calloc(size_t n_elements, size_t element_size); - Returns a pointer to n_elements * element_size bytes, with all locations - set to zero. -*/ -DLMALLOC_EXPORT void* dlcalloc(size_t, size_t); - -/* - realloc(void* p, size_t n) - Returns a pointer to a chunk of size n that contains the same data - as does chunk p up to the minimum of (n, p's size) bytes, or null - if no space is available. - - The returned pointer may or may not be the same as p. The algorithm - prefers extending p in most cases when possible, otherwise it - employs the equivalent of a malloc-copy-free sequence. - - If p is null, realloc is equivalent to malloc. - - If space is not available, realloc returns null, errno is set (if on - ANSI) and p is NOT freed. - - if n is for fewer bytes than already held by p, the newly unused - space is lopped off and freed if possible. realloc with a size - argument of zero (re)allocates a minimum-sized chunk. - - The old unix realloc convention of allowing the last-free'd chunk - to be used as an argument to realloc is not supported. -*/ -DLMALLOC_EXPORT void* dlrealloc(void*, size_t); - -/* - realloc_in_place(void* p, size_t n) - Resizes the space allocated for p to size n, only if this can be - done without moving p (i.e., only if there is adjacent space - available if n is greater than p's current allocated size, or n is - less than or equal to p's size). This may be used instead of plain - realloc if an alternative allocation strategy is needed upon failure - to expand space; for example, reallocation of a buffer that must be - memory-aligned or cleared. You can use realloc_in_place to trigger - these alternatives only when needed. - - Returns p if successful; otherwise null. -*/ -DLMALLOC_EXPORT void* dlrealloc_in_place(void*, size_t); - -/* - memalign(size_t alignment, size_t n); - Returns a pointer to a newly allocated chunk of n bytes, aligned - in accord with the alignment argument. - - The alignment argument should be a power of two. If the argument is - not a power of two, the nearest greater power is used. - 8-byte alignment is guaranteed by normal malloc calls, so don't - bother calling memalign with an argument of 8 or less. - - Overreliance on memalign is a sure way to fragment space. -*/ -DLMALLOC_EXPORT void* dlmemalign(size_t, size_t); - -/* - int posix_memalign(void** pp, size_t alignment, size_t n); - Allocates a chunk of n bytes, aligned in accord with the alignment - argument. Differs from memalign only in that it (1) assigns the - allocated memory to *pp rather than returning it, (2) fails and - returns EINVAL if the alignment is not a power of two (3) fails and - returns ENOMEM if memory cannot be allocated. -*/ -DLMALLOC_EXPORT int dlposix_memalign(void**, size_t, size_t); - -/* - valloc(size_t n); - Equivalent to memalign(pagesize, n), where pagesize is the page - size of the system. If the pagesize is unknown, 4096 is used. -*/ -DLMALLOC_EXPORT void* dlvalloc(size_t); - -/* - mallopt(int parameter_number, int parameter_value) - Sets tunable parameters The format is to provide a - (parameter-number, parameter-value) pair. mallopt then sets the - corresponding parameter to the argument value if it can (i.e., so - long as the value is meaningful), and returns 1 if successful else - 0. To workaround the fact that mallopt is specified to use int, - not size_t parameters, the value -1 is specially treated as the - maximum unsigned size_t value. - - SVID/XPG/ANSI defines four standard param numbers for mallopt, - normally defined in malloc.h. None of these are use in this malloc, - so setting them has no effect. But this malloc also supports other - options in mallopt. See below for details. Briefly, supported - parameters are as follows (listed defaults are for "typical" - configurations). - - Symbol param # default allowed param values - M_TRIM_THRESHOLD -1 2*1024*1024 any (-1 disables) - M_GRANULARITY -2 page size any power of 2 >= page size - M_MMAP_THRESHOLD -3 256*1024 any (or 0 if no MMAP support) -*/ -DLMALLOC_EXPORT int dlmallopt(int, int); - -/* - malloc_footprint(); - Returns the number of bytes obtained from the system. The total - number of bytes allocated by malloc, realloc etc., is less than this - value. Unlike mallinfo, this function returns only a precomputed - result, so can be called frequently to monitor memory consumption. - Even if locks are otherwise defined, this function does not use them, - so results might not be up to date. -*/ -DLMALLOC_EXPORT size_t dlmalloc_footprint(void); - -/* - malloc_max_footprint(); - Returns the maximum number of bytes obtained from the system. This - value will be greater than current footprint if deallocated space - has been reclaimed by the system. The peak number of bytes allocated - by malloc, realloc etc., is less than this value. Unlike mallinfo, - this function returns only a precomputed result, so can be called - frequently to monitor memory consumption. Even if locks are - otherwise defined, this function does not use them, so results might - not be up to date. -*/ -DLMALLOC_EXPORT size_t dlmalloc_max_footprint(void); - -/* - malloc_footprint_limit(); - Returns the number of bytes that the heap is allowed to obtain from - the system, returning the last value returned by - malloc_set_footprint_limit, or the maximum size_t value if - never set. The returned value reflects a permission. There is no - guarantee that this number of bytes can actually be obtained from - the system. -*/ -DLMALLOC_EXPORT size_t dlmalloc_footprint_limit(); - -/* - malloc_set_footprint_limit(); - Sets the maximum number of bytes to obtain from the system, causing - failure returns from malloc and related functions upon attempts to - exceed this value. The argument value may be subject to page - rounding to an enforceable limit; this actual value is returned. - Using an argument of the maximum possible size_t effectively - disables checks. If the argument is less than or equal to the - current malloc_footprint, then all future allocations that require - additional system memory will fail. However, invocation cannot - retroactively deallocate existing used memory. -*/ -DLMALLOC_EXPORT size_t dlmalloc_set_footprint_limit(size_t bytes); - -#if MALLOC_INSPECT_ALL -/* - malloc_inspect_all(void(*handler)(void *start, - void *end, - size_t used_bytes, - void* callback_arg), - void* arg); - Traverses the heap and calls the given handler for each managed - region, skipping all bytes that are (or may be) used for bookkeeping - purposes. Traversal does not include include chunks that have been - directly memory mapped. Each reported region begins at the start - address, and continues up to but not including the end address. The - first used_bytes of the region contain allocated data. If - used_bytes is zero, the region is unallocated. The handler is - invoked with the given callback argument. If locks are defined, they - are held during the entire traversal. It is a bad idea to invoke - other malloc functions from within the handler. - - For example, to count the number of in-use chunks with size greater - than 1000, you could write: - static int count = 0; - void count_chunks(void* start, void* end, size_t used, void* arg) { - if (used >= 1000) ++count; - } - then: - malloc_inspect_all(count_chunks, NULL); - - malloc_inspect_all is compiled only if MALLOC_INSPECT_ALL is defined. -*/ -DLMALLOC_EXPORT void dlmalloc_inspect_all(void(*handler)(void*, void *, size_t, void*), - void* arg); - -#endif /* MALLOC_INSPECT_ALL */ - -#if !NO_MALLINFO -/* - mallinfo() - Returns (by copy) a struct containing various summary statistics: - - arena: current total non-mmapped bytes allocated from system - ordblks: the number of free chunks - smblks: always zero. - hblks: current number of mmapped regions - hblkhd: total bytes held in mmapped regions - usmblks: the maximum total allocated space. This will be greater - than current total if trimming has occurred. - fsmblks: always zero - uordblks: current total allocated space (normal or mmapped) - fordblks: total free space - keepcost: the maximum number of bytes that could ideally be released - back to system via malloc_trim. ("ideally" means that - it ignores page restrictions etc.) - - Because these fields are ints, but internal bookkeeping may - be kept as longs, the reported values may wrap around zero and - thus be inaccurate. -*/ -DLMALLOC_EXPORT struct mallinfo dlmallinfo(void); -#endif /* NO_MALLINFO */ - -/* - independent_calloc(size_t n_elements, size_t element_size, void* chunks[]); - - independent_calloc is similar to calloc, but instead of returning a - single cleared space, it returns an array of pointers to n_elements - independent elements that can hold contents of size elem_size, each - of which starts out cleared, and can be independently freed, - realloc'ed etc. The elements are guaranteed to be adjacently - allocated (this is not guaranteed to occur with multiple callocs or - mallocs), which may also improve cache locality in some - applications. - - The "chunks" argument is optional (i.e., may be null, which is - probably the most typical usage). If it is null, the returned array - is itself dynamically allocated and should also be freed when it is - no longer needed. Otherwise, the chunks array must be of at least - n_elements in length. It is filled in with the pointers to the - chunks. - - In either case, independent_calloc returns this pointer array, or - null if the allocation failed. If n_elements is zero and "chunks" - is null, it returns a chunk representing an array with zero elements - (which should be freed if not wanted). - - Each element must be freed when it is no longer needed. This can be - done all at once using bulk_free. - - independent_calloc simplifies and speeds up implementations of many - kinds of pools. It may also be useful when constructing large data - structures that initially have a fixed number of fixed-sized nodes, - but the number is not known at compile time, and some of the nodes - may later need to be freed. For example: - - struct Node { int item; struct Node* next; }; - - struct Node* build_list() { - struct Node** pool; - int n = read_number_of_nodes_needed(); - if (n <= 0) return 0; - pool = (struct Node**)(independent_calloc(n, sizeof(struct Node), 0); - if (pool == 0) die(); - // organize into a linked list... - struct Node* first = pool[0]; - for (i = 0; i < n-1; ++i) - pool[i]->next = pool[i+1]; - free(pool); // Can now free the array (or not, if it is needed later) - return first; - } -*/ -DLMALLOC_EXPORT void** dlindependent_calloc(size_t, size_t, void**); - -/* - independent_comalloc(size_t n_elements, size_t sizes[], void* chunks[]); - - independent_comalloc allocates, all at once, a set of n_elements - chunks with sizes indicated in the "sizes" array. It returns - an array of pointers to these elements, each of which can be - independently freed, realloc'ed etc. The elements are guaranteed to - be adjacently allocated (this is not guaranteed to occur with - multiple callocs or mallocs), which may also improve cache locality - in some applications. - - The "chunks" argument is optional (i.e., may be null). If it is null - the returned array is itself dynamically allocated and should also - be freed when it is no longer needed. Otherwise, the chunks array - must be of at least n_elements in length. It is filled in with the - pointers to the chunks. - - In either case, independent_comalloc returns this pointer array, or - null if the allocation failed. If n_elements is zero and chunks is - null, it returns a chunk representing an array with zero elements - (which should be freed if not wanted). - - Each element must be freed when it is no longer needed. This can be - done all at once using bulk_free. - - independent_comallac differs from independent_calloc in that each - element may have a different size, and also that it does not - automatically clear elements. - - independent_comalloc can be used to speed up allocation in cases - where several structs or objects must always be allocated at the - same time. For example: - - struct Head { ... } - struct Foot { ... } - - void send_message(char* msg) { - int msglen = strlen(msg); - size_t sizes[3] = { sizeof(struct Head), msglen, sizeof(struct Foot) }; - void* chunks[3]; - if (independent_comalloc(3, sizes, chunks) == 0) - die(); - struct Head* head = (struct Head*)(chunks[0]); - char* body = (char*)(chunks[1]); - struct Foot* foot = (struct Foot*)(chunks[2]); - // ... - } - - In general though, independent_comalloc is worth using only for - larger values of n_elements. For small values, you probably won't - detect enough difference from series of malloc calls to bother. - - Overuse of independent_comalloc can increase overall memory usage, - since it cannot reuse existing noncontiguous small chunks that - might be available for some of the elements. -*/ -DLMALLOC_EXPORT void** dlindependent_comalloc(size_t, size_t*, void**); - -/* - bulk_free(void* array[], size_t n_elements) - Frees and clears (sets to null) each non-null pointer in the given - array. This is likely to be faster than freeing them one-by-one. - If footers are used, pointers that have been allocated in different - mspaces are not freed or cleared, and the count of all such pointers - is returned. For large arrays of pointers with poor locality, it - may be worthwhile to sort this array before calling bulk_free. -*/ -DLMALLOC_EXPORT size_t dlbulk_free(void**, size_t n_elements); - -/* - pvalloc(size_t n); - Equivalent to valloc(minimum-page-that-holds(n)), that is, - round up n to nearest pagesize. - */ -DLMALLOC_EXPORT void* dlpvalloc(size_t); - -/* - malloc_trim(size_t pad); - - If possible, gives memory back to the system (via negative arguments - to sbrk) if there is unused memory at the `high' end of the malloc - pool or in unused MMAP segments. You can call this after freeing - large blocks of memory to potentially reduce the system-level memory - requirements of a program. However, it cannot guarantee to reduce - memory. Under some allocation patterns, some large free blocks of - memory will be locked between two used chunks, so they cannot be - given back to the system. - - The `pad' argument to malloc_trim represents the amount of free - trailing space to leave untrimmed. If this argument is zero, only - the minimum amount of memory to maintain internal data structures - will be left. Non-zero arguments can be supplied to maintain enough - trailing space to service future expected allocations without having - to re-obtain memory from the system. - - Malloc_trim returns 1 if it actually released any memory, else 0. -*/ -DLMALLOC_EXPORT int dlmalloc_trim(size_t); - -/* - malloc_stats(); - Prints on stderr the amount of space obtained from the system (both - via sbrk and mmap), the maximum amount (which may be more than - current if malloc_trim and/or munmap got called), and the current - number of bytes allocated via malloc (or realloc, etc) but not yet - freed. Note that this is the number of bytes allocated, not the - number requested. It will be larger than the number requested - because of alignment and bookkeeping overhead. Because it includes - alignment wastage as being in use, this figure may be greater than - zero even when no user-level chunks are allocated. - - The reported current and maximum system memory can be inaccurate if - a program makes other calls to system memory allocation functions - (normally sbrk) outside of malloc. - - malloc_stats prints only the most commonly interesting statistics. - More information can be obtained by calling mallinfo. -*/ -DLMALLOC_EXPORT void dlmalloc_stats(void); - -/* - malloc_usable_size(void* p); - - Returns the number of bytes you can actually use in - an allocated chunk, which may be more than you requested (although - often not) due to alignment and minimum size constraints. - You can use this many bytes without worrying about - overwriting other allocated objects. This is not a particularly great - programming practice. malloc_usable_size can be more useful in - debugging and assertions, for example: - - p = malloc(n); - assert(malloc_usable_size(p) >= 256); -*/ -size_t dlmalloc_usable_size(void*); - -#endif /* ONLY_MSPACES */ - -#if MSPACES - -/* - mspace is an opaque type representing an independent - region of space that supports mspace_malloc, etc. -*/ -typedef void* mspace; - -/* - create_mspace creates and returns a new independent space with the - given initial capacity, or, if 0, the default granularity size. It - returns null if there is no system memory available to create the - space. If argument locked is non-zero, the space uses a separate - lock to control access. The capacity of the space will grow - dynamically as needed to service mspace_malloc requests. You can - control the sizes of incremental increases of this space by - compiling with a different DEFAULT_GRANULARITY or dynamically - setting with mallopt(M_GRANULARITY, value). -*/ -DLMALLOC_EXPORT mspace create_mspace(size_t capacity, int locked); - -/* - destroy_mspace destroys the given space, and attempts to return all - of its memory back to the system, returning the total number of - bytes freed. After destruction, the results of access to all memory - used by the space become undefined. -*/ -DLMALLOC_EXPORT size_t destroy_mspace(mspace msp); - -/* - create_mspace_with_base uses the memory supplied as the initial base - of a new mspace. Part (less than 128*sizeof(size_t) bytes) of this - space is used for bookkeeping, so the capacity must be at least this - large. (Otherwise 0 is returned.) When this initial space is - exhausted, additional memory will be obtained from the system. - Destroying this space will deallocate all additionally allocated - space (if possible) but not the initial base. -*/ -DLMALLOC_EXPORT mspace create_mspace_with_base(void* base, size_t capacity, int locked); - -/* - mspace_track_large_chunks controls whether requests for large chunks - are allocated in their own untracked mmapped regions, separate from - others in this mspace. By default large chunks are not tracked, - which reduces fragmentation. However, such chunks are not - necessarily released to the system upon destroy_mspace. Enabling - tracking by setting to true may increase fragmentation, but avoids - leakage when relying on destroy_mspace to release all memory - allocated using this space. The function returns the previous - setting. -*/ -DLMALLOC_EXPORT int mspace_track_large_chunks(mspace msp, int enable); - - -/* - mspace_malloc behaves as malloc, but operates within - the given space. -*/ -DLMALLOC_EXPORT void* mspace_malloc(mspace msp, size_t bytes); - -/* - mspace_free behaves as free, but operates within - the given space. - - If compiled with FOOTERS==1, mspace_free is not actually needed. - free may be called instead of mspace_free because freed chunks from - any space are handled by their originating spaces. -*/ -DLMALLOC_EXPORT void mspace_free(mspace msp, void* mem); - -/* - mspace_realloc behaves as realloc, but operates within - the given space. - - If compiled with FOOTERS==1, mspace_realloc is not actually - needed. realloc may be called instead of mspace_realloc because - realloced chunks from any space are handled by their originating - spaces. -*/ -DLMALLOC_EXPORT void* mspace_realloc(mspace msp, void* mem, size_t newsize); - -/* - mspace_calloc behaves as calloc, but operates within - the given space. -*/ -DLMALLOC_EXPORT void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size); - -/* - mspace_memalign behaves as memalign, but operates within - the given space. -*/ -DLMALLOC_EXPORT void* mspace_memalign(mspace msp, size_t alignment, size_t bytes); - -/* - mspace_independent_calloc behaves as independent_calloc, but - operates within the given space. -*/ -DLMALLOC_EXPORT void** mspace_independent_calloc(mspace msp, size_t n_elements, - size_t elem_size, void* chunks[]); - -/* - mspace_independent_comalloc behaves as independent_comalloc, but - operates within the given space. -*/ -DLMALLOC_EXPORT void** mspace_independent_comalloc(mspace msp, size_t n_elements, - size_t sizes[], void* chunks[]); - -/* - mspace_footprint() returns the number of bytes obtained from the - system for this space. -*/ -DLMALLOC_EXPORT size_t mspace_footprint(mspace msp); - -/* - mspace_max_footprint() returns the peak number of bytes obtained from the - system for this space. -*/ -DLMALLOC_EXPORT size_t mspace_max_footprint(mspace msp); - - -#if !NO_MALLINFO -/* - mspace_mallinfo behaves as mallinfo, but reports properties of - the given space. -*/ -DLMALLOC_EXPORT struct mallinfo mspace_mallinfo(mspace msp); -#endif /* NO_MALLINFO */ - -/* - malloc_usable_size(void* p) behaves the same as malloc_usable_size; -*/ -DLMALLOC_EXPORT size_t mspace_usable_size(const void* mem); - -/* - mspace_malloc_stats behaves as malloc_stats, but reports - properties of the given space. -*/ -DLMALLOC_EXPORT void mspace_malloc_stats(mspace msp); - -/* - mspace_trim behaves as malloc_trim, but - operates within the given space. -*/ -DLMALLOC_EXPORT int mspace_trim(mspace msp, size_t pad); - -/* - An alias for mallopt. -*/ -DLMALLOC_EXPORT int mspace_mallopt(int, int); - -#endif /* MSPACES */ - -#ifdef __cplusplus -} /* end of extern "C" */ -#endif /* __cplusplus */ - -/* - ======================================================================== - To make a fully customizable malloc.h header file, cut everything - above this line, put into file malloc.h, edit to suit, and #include it - on the next line, as well as in programs that use this malloc. - ======================================================================== -*/ - -/* #include "malloc.h" */ - -/*------------------------------ internal #includes ---------------------- */ - -#ifdef _MSC_VER -#pragma warning( disable : 4146 ) /* no "unsigned" warnings */ -#endif /* _MSC_VER */ -#if !NO_MALLOC_STATS -#include /* for printing in malloc_stats */ -#endif /* NO_MALLOC_STATS */ -#ifndef LACKS_ERRNO_H -#include /* for MALLOC_FAILURE_ACTION */ -#endif /* LACKS_ERRNO_H */ -#ifdef DEBUG -#if ABORT_ON_ASSERT_FAILURE -#undef assert -#define assert(x) if(!(x)) ABORT -#else /* ABORT_ON_ASSERT_FAILURE */ -#include -#endif /* ABORT_ON_ASSERT_FAILURE */ -#else /* DEBUG */ -#ifndef assert -#define assert(x) -#endif -#define DEBUG 0 -#endif /* DEBUG */ -#if !defined(WIN32) && !defined(LACKS_TIME_H) -#include /* for magic initialization */ -#endif /* WIN32 */ -#ifndef LACKS_STDLIB_H -#include /* for abort() */ -#endif /* LACKS_STDLIB_H */ -#ifndef LACKS_STRING_H -#include /* for memset etc */ -#endif /* LACKS_STRING_H */ -#if USE_BUILTIN_FFS -#ifndef LACKS_STRINGS_H -#include /* for ffs */ -#endif /* LACKS_STRINGS_H */ -#endif /* USE_BUILTIN_FFS */ -#if HAVE_MMAP -#ifndef LACKS_SYS_MMAN_H -/* On some versions of linux, mremap decl in mman.h needs __USE_GNU set */ -#if (defined(linux) && !defined(__USE_GNU)) -#define __USE_GNU 1 -#include /* for mmap */ -#undef __USE_GNU -#else -#include /* for mmap */ -#endif /* linux */ -#endif /* LACKS_SYS_MMAN_H */ -#ifndef LACKS_FCNTL_H -#include -#endif /* LACKS_FCNTL_H */ -#endif /* HAVE_MMAP */ -#ifndef LACKS_UNISTD_H -#include /* for sbrk, sysconf */ -#else /* LACKS_UNISTD_H */ -#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) -extern void* sbrk(ptrdiff_t); -#endif /* FreeBSD etc */ -#endif /* LACKS_UNISTD_H */ - -/* Declarations for locking */ -#if USE_LOCKS -#ifndef WIN32 -#if defined (__SVR4) && defined (__sun) /* solaris */ -#include -#elif !defined(LACKS_SCHED_H) -#include -#endif /* solaris or LACKS_SCHED_H */ -#if (defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0) || !USE_SPIN_LOCKS -#include -#endif /* USE_RECURSIVE_LOCKS ... */ -#elif defined(_MSC_VER) -#ifndef _M_AMD64 -/* These are already defined on AMD64 builds */ -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ -LONG __cdecl _InterlockedCompareExchange(LONG volatile *Dest, LONG Exchange, LONG Comp); -LONG __cdecl _InterlockedExchange(LONG volatile *Target, LONG Value); -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#endif /* _M_AMD64 */ -#pragma intrinsic (_InterlockedCompareExchange) -#pragma intrinsic (_InterlockedExchange) -#define interlockedcompareexchange _InterlockedCompareExchange -#define interlockedexchange _InterlockedExchange -#elif defined(WIN32) && defined(__GNUC__) -#define interlockedcompareexchange(a, b, c) __sync_val_compare_and_swap(a, c, b) -#define interlockedexchange __sync_lock_test_and_set -#endif /* Win32 */ -#else /* USE_LOCKS */ -#endif /* USE_LOCKS */ - -#ifndef LOCK_AT_FORK -#define LOCK_AT_FORK 0 -#endif - -/* Declarations for bit scanning on win32 */ -#if defined(_MSC_VER) && _MSC_VER>=1300 -#ifndef BitScanForward /* Try to avoid pulling in WinNT.h */ -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ -unsigned char _BitScanForward(unsigned long *index, unsigned long mask); -unsigned char _BitScanReverse(unsigned long *index, unsigned long mask); -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#define BitScanForward _BitScanForward -#define BitScanReverse _BitScanReverse -#pragma intrinsic(_BitScanForward) -#pragma intrinsic(_BitScanReverse) -#endif /* BitScanForward */ -#endif /* defined(_MSC_VER) && _MSC_VER>=1300 */ - -#ifndef WIN32 -#ifndef malloc_getpagesize -# ifdef _SC_PAGESIZE /* some SVR4 systems omit an underscore */ -# ifndef _SC_PAGE_SIZE -# define _SC_PAGE_SIZE _SC_PAGESIZE -# endif -# endif -# ifdef _SC_PAGE_SIZE -# define malloc_getpagesize sysconf(_SC_PAGE_SIZE) -# else -# if defined(BSD) || defined(DGUX) || defined(HAVE_GETPAGESIZE) - extern size_t getpagesize(); -# define malloc_getpagesize getpagesize() -# else -# ifdef WIN32 /* use supplied emulation of getpagesize */ -# define malloc_getpagesize getpagesize() -# else -# ifndef LACKS_SYS_PARAM_H -# include -# endif -# ifdef EXEC_PAGESIZE -# define malloc_getpagesize EXEC_PAGESIZE -# else -# ifdef NBPG -# ifndef CLSIZE -# define malloc_getpagesize NBPG -# else -# define malloc_getpagesize (NBPG * CLSIZE) -# endif -# else -# ifdef NBPC -# define malloc_getpagesize NBPC -# else -# ifdef PAGESIZE -# define malloc_getpagesize PAGESIZE -# else /* just guess */ -# define malloc_getpagesize ((size_t)4096U) -# endif -# endif -# endif -# endif -# endif -# endif -# endif -#endif -#endif - -/* ------------------- size_t and alignment properties -------------------- */ - -/* The byte and bit size of a size_t */ -#define SIZE_T_SIZE (sizeof(size_t)) -#define SIZE_T_BITSIZE (sizeof(size_t) << 3) - -/* Some constants coerced to size_t */ -/* Annoying but necessary to avoid errors on some platforms */ -#define SIZE_T_ZERO ((size_t)0) -#define SIZE_T_ONE ((size_t)1) -#define SIZE_T_TWO ((size_t)2) -#define SIZE_T_FOUR ((size_t)4) -#define TWO_SIZE_T_SIZES (SIZE_T_SIZE<<1) -#define FOUR_SIZE_T_SIZES (SIZE_T_SIZE<<2) -#define SIX_SIZE_T_SIZES (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES) -#define HALF_MAX_SIZE_T (MAX_SIZE_T / 2U) - -/* The bit mask value corresponding to MALLOC_ALIGNMENT */ -#define CHUNK_ALIGN_MASK (MALLOC_ALIGNMENT - SIZE_T_ONE) - -/* True if address a has acceptable alignment */ -#define is_aligned(A) (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0) - -/* the number of bytes to offset an address to align it */ -#define align_offset(A)\ - ((((size_t)(A) & CHUNK_ALIGN_MASK) == 0)? 0 :\ - ((MALLOC_ALIGNMENT - ((size_t)(A) & CHUNK_ALIGN_MASK)) & CHUNK_ALIGN_MASK)) - -/* -------------------------- MMAP preliminaries ------------------------- */ - -/* - If HAVE_MORECORE or HAVE_MMAP are false, we just define calls and - checks to fail so compiler optimizer can delete code rather than - using so many "#if"s. -*/ - - -/* MORECORE and MMAP must return MFAIL on failure */ -#define MFAIL ((void*)(MAX_SIZE_T)) -#define CMFAIL ((char*)(MFAIL)) /* defined for convenience */ - -#if HAVE_MMAP - -#ifndef WIN32 -#define MUNMAP_DEFAULT(a, s) munmap((a), (s)) -#define MMAP_PROT (PROT_READ|PROT_WRITE) -#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) -#define MAP_ANONYMOUS MAP_ANON -#endif /* MAP_ANON */ -#ifdef MAP_ANONYMOUS -#define MMAP_FLAGS (MAP_PRIVATE|MAP_ANONYMOUS) -#define MMAP_DEFAULT(s) mmap(0, (s), MMAP_PROT, MMAP_FLAGS, -1, 0) -#else /* MAP_ANONYMOUS */ -/* - Nearly all versions of mmap support MAP_ANONYMOUS, so the following - is unlikely to be needed, but is supplied just in case. -*/ -#define MMAP_FLAGS (MAP_PRIVATE) -static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */ -#define MMAP_DEFAULT(s) ((dev_zero_fd < 0) ? \ - (dev_zero_fd = open("/dev/zero", O_RDWR), \ - mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) : \ - mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) -#endif /* MAP_ANONYMOUS */ - -#define DIRECT_MMAP_DEFAULT(s) MMAP_DEFAULT(s) - -#else /* WIN32 */ - -/* Win32 MMAP via VirtualAlloc */ -static FORCEINLINE void* win32mmap(size_t size) { - void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE); - return (ptr != 0)? ptr: MFAIL; -} - -/* For direct MMAP, use MEM_TOP_DOWN to minimize interference */ -static FORCEINLINE void* win32direct_mmap(size_t size) { - void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN, - PAGE_READWRITE); - return (ptr != 0)? ptr: MFAIL; -} - -/* This function supports releasing coalesed segments */ -static FORCEINLINE int win32munmap(void* ptr, size_t size) { - MEMORY_BASIC_INFORMATION minfo; - char* cptr = (char*)ptr; - while (size) { - if (VirtualQuery(cptr, &minfo, sizeof(minfo)) == 0) - return -1; - if (minfo.BaseAddress != cptr || minfo.AllocationBase != cptr || - minfo.State != MEM_COMMIT || minfo.RegionSize > size) - return -1; - if (VirtualFree(cptr, 0, MEM_RELEASE) == 0) - return -1; - cptr += minfo.RegionSize; - size -= minfo.RegionSize; - } - return 0; -} - -#define MMAP_DEFAULT(s) win32mmap(s) -#define MUNMAP_DEFAULT(a, s) win32munmap((a), (s)) -#define DIRECT_MMAP_DEFAULT(s) win32direct_mmap(s) -#endif /* WIN32 */ -#endif /* HAVE_MMAP */ - -#if HAVE_MREMAP -#ifndef WIN32 -#define MREMAP_DEFAULT(addr, osz, nsz, mv) mremap((addr), (osz), (nsz), (mv)) -#endif /* WIN32 */ -#endif /* HAVE_MREMAP */ - -/** - * Define CALL_MORECORE - */ -#if HAVE_MORECORE - #ifdef MORECORE - #define CALL_MORECORE(S) MORECORE(S) - #else /* MORECORE */ - #define CALL_MORECORE(S) MORECORE_DEFAULT(S) - #endif /* MORECORE */ -#else /* HAVE_MORECORE */ - #define CALL_MORECORE(S) MFAIL -#endif /* HAVE_MORECORE */ - -/** - * Define CALL_MMAP/CALL_MUNMAP/CALL_DIRECT_MMAP - */ -#if HAVE_MMAP - #define USE_MMAP_BIT (SIZE_T_ONE) - - #ifdef MMAP - #define CALL_MMAP(s) MMAP(s) - #else /* MMAP */ - #define CALL_MMAP(s) MMAP_DEFAULT(s) - #endif /* MMAP */ - #ifdef MUNMAP - #define CALL_MUNMAP(a, s) MUNMAP((a), (s)) - #else /* MUNMAP */ - #define CALL_MUNMAP(a, s) MUNMAP_DEFAULT((a), (s)) - #endif /* MUNMAP */ - #ifdef DIRECT_MMAP - #define CALL_DIRECT_MMAP(s) DIRECT_MMAP(s) - #else /* DIRECT_MMAP */ - #define CALL_DIRECT_MMAP(s) DIRECT_MMAP_DEFAULT(s) - #endif /* DIRECT_MMAP */ -#else /* HAVE_MMAP */ - #define USE_MMAP_BIT (SIZE_T_ZERO) - - #define MMAP(s) MFAIL - #define MUNMAP(a, s) (-1) - #define DIRECT_MMAP(s) MFAIL - #define CALL_DIRECT_MMAP(s) DIRECT_MMAP(s) - #define CALL_MMAP(s) MMAP(s) - #define CALL_MUNMAP(a, s) MUNMAP((a), (s)) -#endif /* HAVE_MMAP */ - -/** - * Define CALL_MREMAP - */ -#if HAVE_MMAP && HAVE_MREMAP - #ifdef MREMAP - #define CALL_MREMAP(addr, osz, nsz, mv) MREMAP((addr), (osz), (nsz), (mv)) - #else /* MREMAP */ - #define CALL_MREMAP(addr, osz, nsz, mv) MREMAP_DEFAULT((addr), (osz), (nsz), (mv)) - #endif /* MREMAP */ -#else /* HAVE_MMAP && HAVE_MREMAP */ - #define CALL_MREMAP(addr, osz, nsz, mv) MFAIL -#endif /* HAVE_MMAP && HAVE_MREMAP */ - -/* mstate bit set if continguous morecore disabled or failed */ -#define USE_NONCONTIGUOUS_BIT (4U) - -/* segment bit set in create_mspace_with_base */ -#define EXTERN_BIT (8U) - - -/* --------------------------- Lock preliminaries ------------------------ */ - -/* - When locks are defined, there is one global lock, plus - one per-mspace lock. - - The global lock_ensures that mparams.magic and other unique - mparams values are initialized only once. It also protects - sequences of calls to MORECORE. In many cases sys_alloc requires - two calls, that should not be interleaved with calls by other - threads. This does not protect against direct calls to MORECORE - by other threads not using this lock, so there is still code to - cope the best we can on interference. - - Per-mspace locks surround calls to malloc, free, etc. - By default, locks are simple non-reentrant mutexes. - - Because lock-protected regions generally have bounded times, it is - OK to use the supplied simple spinlocks. Spinlocks are likely to - improve performance for lightly contended applications, but worsen - performance under heavy contention. - - If USE_LOCKS is > 1, the definitions of lock routines here are - bypassed, in which case you will need to define the type MLOCK_T, - and at least INITIAL_LOCK, DESTROY_LOCK, ACQUIRE_LOCK, RELEASE_LOCK - and TRY_LOCK. You must also declare a - static MLOCK_T malloc_global_mutex = { initialization values };. - -*/ - -#if !USE_LOCKS -#define USE_LOCK_BIT (0U) -#define INITIAL_LOCK(l) (0) -#define DESTROY_LOCK(l) (0) -#define ACQUIRE_MALLOC_GLOBAL_LOCK() -#define RELEASE_MALLOC_GLOBAL_LOCK() - -#else -#if USE_LOCKS > 1 -/* ----------------------- User-defined locks ------------------------ */ -/* Define your own lock implementation here */ -/* #define INITIAL_LOCK(lk) ... */ -/* #define DESTROY_LOCK(lk) ... */ -/* #define ACQUIRE_LOCK(lk) ... */ -/* #define RELEASE_LOCK(lk) ... */ -/* #define TRY_LOCK(lk) ... */ -/* static MLOCK_T malloc_global_mutex = ... */ - -#elif USE_SPIN_LOCKS - -/* First, define CAS_LOCK and CLEAR_LOCK on ints */ -/* Note CAS_LOCK defined to return 0 on success */ - -#if defined(__GNUC__)&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) -#define CAS_LOCK(sl) __sync_lock_test_and_set(sl, 1) -#define CLEAR_LOCK(sl) __sync_lock_release(sl) - -#elif (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))) -/* Custom spin locks for older gcc on x86 */ -static FORCEINLINE int x86_cas_lock(int *sl) { - int ret; - int val = 1; - int cmp = 0; - __asm__ __volatile__ ("lock; cmpxchgl %1, %2" - : "=a" (ret) - : "r" (val), "m" (*(sl)), "0"(cmp) - : "memory", "cc"); - return ret; -} - -static FORCEINLINE void x86_clear_lock(int* sl) { - assert(*sl != 0); - int prev = 0; - int ret; - __asm__ __volatile__ ("lock; xchgl %0, %1" - : "=r" (ret) - : "m" (*(sl)), "0"(prev) - : "memory"); -} - -#define CAS_LOCK(sl) x86_cas_lock(sl) -#define CLEAR_LOCK(sl) x86_clear_lock(sl) - -#else /* Win32 MSC */ -#define CAS_LOCK(sl) interlockedexchange(sl, (LONG)1) -#define CLEAR_LOCK(sl) interlockedexchange (sl, (LONG)0) - -#endif /* ... gcc spins locks ... */ - -/* How to yield for a spin lock */ -#define SPINS_PER_YIELD 63 -#if defined(_MSC_VER) -#define SLEEP_EX_DURATION 50 /* delay for yield/sleep */ -#define SPIN_LOCK_YIELD SleepEx(SLEEP_EX_DURATION, FALSE) -#elif defined (__SVR4) && defined (__sun) /* solaris */ -#define SPIN_LOCK_YIELD thr_yield(); -#elif !defined(LACKS_SCHED_H) -#define SPIN_LOCK_YIELD sched_yield(); -#else -#define SPIN_LOCK_YIELD -#endif /* ... yield ... */ - -#if !defined(USE_RECURSIVE_LOCKS) || USE_RECURSIVE_LOCKS == 0 -/* Plain spin locks use single word (embedded in malloc_states) */ -static int spin_acquire_lock(int *sl) { - int spins = 0; - while (*(volatile int *)sl != 0 || CAS_LOCK(sl)) { - if ((++spins & SPINS_PER_YIELD) == 0) { - SPIN_LOCK_YIELD; - } - } - return 0; -} - -#define MLOCK_T int -#define TRY_LOCK(sl) !CAS_LOCK(sl) -#define RELEASE_LOCK(sl) CLEAR_LOCK(sl) -#define ACQUIRE_LOCK(sl) (CAS_LOCK(sl)? spin_acquire_lock(sl) : 0) -#define INITIAL_LOCK(sl) (*sl = 0) -#define DESTROY_LOCK(sl) (0) -static MLOCK_T malloc_global_mutex = 0; - -#else /* USE_RECURSIVE_LOCKS */ -/* types for lock owners */ -#ifdef WIN32 -#define THREAD_ID_T DWORD -#define CURRENT_THREAD GetCurrentThreadId() -#define EQ_OWNER(X,Y) ((X) == (Y)) -#else -/* - Note: the following assume that pthread_t is a type that can be - initialized to (casted) zero. If this is not the case, you will need to - somehow redefine these or not use spin locks. -*/ -#define THREAD_ID_T pthread_t -#define CURRENT_THREAD pthread_self() -#define EQ_OWNER(X,Y) pthread_equal(X, Y) -#endif - -struct malloc_recursive_lock { - int sl; - unsigned int c; - THREAD_ID_T threadid; -}; - -#define MLOCK_T struct malloc_recursive_lock -static MLOCK_T malloc_global_mutex = { 0, 0, (THREAD_ID_T)0}; - -static FORCEINLINE void recursive_release_lock(MLOCK_T *lk) { - assert(lk->sl != 0); - if (--lk->c == 0) { - CLEAR_LOCK(&lk->sl); - } -} - -static FORCEINLINE int recursive_acquire_lock(MLOCK_T *lk) { - THREAD_ID_T mythreadid = CURRENT_THREAD; - int spins = 0; - for (;;) { - if (*((volatile int *)(&lk->sl)) == 0) { - if (!CAS_LOCK(&lk->sl)) { - lk->threadid = mythreadid; - lk->c = 1; - return 0; - } - } - else if (EQ_OWNER(lk->threadid, mythreadid)) { - ++lk->c; - return 0; - } - if ((++spins & SPINS_PER_YIELD) == 0) { - SPIN_LOCK_YIELD; - } - } -} - -static FORCEINLINE int recursive_try_lock(MLOCK_T *lk) { - THREAD_ID_T mythreadid = CURRENT_THREAD; - if (*((volatile int *)(&lk->sl)) == 0) { - if (!CAS_LOCK(&lk->sl)) { - lk->threadid = mythreadid; - lk->c = 1; - return 1; - } - } - else if (EQ_OWNER(lk->threadid, mythreadid)) { - ++lk->c; - return 1; - } - return 0; -} - -#define RELEASE_LOCK(lk) recursive_release_lock(lk) -#define TRY_LOCK(lk) recursive_try_lock(lk) -#define ACQUIRE_LOCK(lk) recursive_acquire_lock(lk) -#define INITIAL_LOCK(lk) ((lk)->threadid = (THREAD_ID_T)0, (lk)->sl = 0, (lk)->c = 0) -#define DESTROY_LOCK(lk) (0) -#endif /* USE_RECURSIVE_LOCKS */ - -#elif defined(WIN32) /* Win32 critical sections */ -#define MLOCK_T CRITICAL_SECTION -#define ACQUIRE_LOCK(lk) (EnterCriticalSection(lk), 0) -#define RELEASE_LOCK(lk) LeaveCriticalSection(lk) -#define TRY_LOCK(lk) TryEnterCriticalSection(lk) -#define INITIAL_LOCK(lk) (!InitializeCriticalSectionAndSpinCount((lk), 0x80000000|4000)) -#define DESTROY_LOCK(lk) (DeleteCriticalSection(lk), 0) -#define NEED_GLOBAL_LOCK_INIT - -static MLOCK_T malloc_global_mutex; -static volatile LONG malloc_global_mutex_status; - -/* Use spin loop to initialize global lock */ -static void init_malloc_global_mutex() { - for (;;) { - long stat = malloc_global_mutex_status; - if (stat > 0) - return; - /* transition to < 0 while initializing, then to > 0) */ - if (stat == 0 && - interlockedcompareexchange(&malloc_global_mutex_status, (LONG)-1, (LONG)0) == 0) { - InitializeCriticalSection(&malloc_global_mutex); - interlockedexchange(&malloc_global_mutex_status, (LONG)1); - return; - } - SleepEx(0, FALSE); - } -} - -#else /* pthreads-based locks */ -#define MLOCK_T pthread_mutex_t -#define ACQUIRE_LOCK(lk) pthread_mutex_lock(lk) -#define RELEASE_LOCK(lk) pthread_mutex_unlock(lk) -#define TRY_LOCK(lk) (!pthread_mutex_trylock(lk)) -#define INITIAL_LOCK(lk) pthread_init_lock(lk) -#define DESTROY_LOCK(lk) pthread_mutex_destroy(lk) - -#if defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0 && defined(linux) && !defined(PTHREAD_MUTEX_RECURSIVE) -/* Cope with old-style linux recursive lock initialization by adding */ -/* skipped internal declaration from pthread.h */ -extern int pthread_mutexattr_setkind_np __P ((pthread_mutexattr_t *__attr, - int __kind)); -#define PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP -#define pthread_mutexattr_settype(x,y) pthread_mutexattr_setkind_np(x,y) -#endif /* USE_RECURSIVE_LOCKS ... */ - -static MLOCK_T malloc_global_mutex = PTHREAD_MUTEX_INITIALIZER; - -static int pthread_init_lock (MLOCK_T *lk) { - pthread_mutexattr_t attr; - if (pthread_mutexattr_init(&attr)) return 1; -#if defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0 - if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE)) return 1; -#endif - if (pthread_mutex_init(lk, &attr)) return 1; - if (pthread_mutexattr_destroy(&attr)) return 1; - return 0; -} - -#endif /* ... lock types ... */ - -/* Common code for all lock types */ -#define USE_LOCK_BIT (2U) - -#ifndef ACQUIRE_MALLOC_GLOBAL_LOCK -#define ACQUIRE_MALLOC_GLOBAL_LOCK() ACQUIRE_LOCK(&malloc_global_mutex); -#endif - -#ifndef RELEASE_MALLOC_GLOBAL_LOCK -#define RELEASE_MALLOC_GLOBAL_LOCK() RELEASE_LOCK(&malloc_global_mutex); -#endif - -#endif /* USE_LOCKS */ - -/* ----------------------- Chunk representations ------------------------ */ - -/* - (The following includes lightly edited explanations by Colin Plumb.) - - The malloc_chunk declaration below is misleading (but accurate and - necessary). It declares a "view" into memory allowing access to - necessary fields at known offsets from a given base. - - Chunks of memory are maintained using a `boundary tag' method as - originally described by Knuth. (See the paper by Paul Wilson - ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps for a survey of such - techniques.) Sizes of free chunks are stored both in the front of - each chunk and at the end. This makes consolidating fragmented - chunks into bigger chunks fast. The head fields also hold bits - representing whether chunks are free or in use. - - Here are some pictures to make it clearer. They are "exploded" to - show that the state of a chunk can be thought of as extending from - the high 31 bits of the head field of its header through the - prev_foot and PINUSE_BIT bit of the following chunk header. - - A chunk that's in use looks like: - - chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Size of previous chunk (if P = 0) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| - | Size of this chunk 1| +-+ - mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - +- -+ - | | - +- -+ - | : - +- size - sizeof(size_t) available payload bytes -+ - : | - chunk-> +- -+ - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1| - | Size of next chunk (may or may not be in use) | +-+ - mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - And if it's free, it looks like this: - - chunk-> +- -+ - | User payload (must be in use, or we would have merged!) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| - | Size of this chunk 0| +-+ - mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Next pointer | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Prev pointer | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | : - +- size - sizeof(struct chunk) unused bytes -+ - : | - chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Size of this chunk | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0| - | Size of next chunk (must be in use, or we would have merged)| +-+ - mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | : - +- User payload -+ - : | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |0| - +-+ - Note that since we always merge adjacent free chunks, the chunks - adjacent to a free chunk must be in use. - - Given a pointer to a chunk (which can be derived trivially from the - payload pointer) we can, in O(1) time, find out whether the adjacent - chunks are free, and if so, unlink them from the lists that they - are on and merge them with the current chunk. - - Chunks always begin on even word boundaries, so the mem portion - (which is returned to the user) is also on an even word boundary, and - thus at least double-word aligned. - - The P (PINUSE_BIT) bit, stored in the unused low-order bit of the - chunk size (which is always a multiple of two words), is an in-use - bit for the *previous* chunk. If that bit is *clear*, then the - word before the current chunk size contains the previous chunk - size, and can be used to find the front of the previous chunk. - The very first chunk allocated always has this bit set, preventing - access to non-existent (or non-owned) memory. If pinuse is set for - any given chunk, then you CANNOT determine the size of the - previous chunk, and might even get a memory addressing fault when - trying to do so. - - The C (CINUSE_BIT) bit, stored in the unused second-lowest bit of - the chunk size redundantly records whether the current chunk is - inuse (unless the chunk is mmapped). This redundancy enables usage - checks within free and realloc, and reduces indirection when freeing - and consolidating chunks. - - Each freshly allocated chunk must have both cinuse and pinuse set. - That is, each allocated chunk borders either a previously allocated - and still in-use chunk, or the base of its memory arena. This is - ensured by making all allocations from the `lowest' part of any - found chunk. Further, no free chunk physically borders another one, - so each free chunk is known to be preceded and followed by either - inuse chunks or the ends of memory. - - Note that the `foot' of the current chunk is actually represented - as the prev_foot of the NEXT chunk. This makes it easier to - deal with alignments etc but can be very confusing when trying - to extend or adapt this code. - - The exceptions to all this are - - 1. The special chunk `top' is the top-most available chunk (i.e., - the one bordering the end of available memory). It is treated - specially. Top is never included in any bin, is used only if - no other chunk is available, and is released back to the - system if it is very large (see M_TRIM_THRESHOLD). In effect, - the top chunk is treated as larger (and thus less well - fitting) than any other available chunk. The top chunk - doesn't update its trailing size field since there is no next - contiguous chunk that would have to index off it. However, - space is still allocated for it (TOP_FOOT_SIZE) to enable - separation or merging when space is extended. - - 3. Chunks allocated via mmap, have both cinuse and pinuse bits - cleared in their head fields. Because they are allocated - one-by-one, each must carry its own prev_foot field, which is - also used to hold the offset this chunk has within its mmapped - region, which is needed to preserve alignment. Each mmapped - chunk is trailed by the first two fields of a fake next-chunk - for sake of usage checks. - -*/ - -struct malloc_chunk { - size_t prev_foot; /* Size of previous chunk (if free). */ - size_t head; /* Size and inuse bits. */ - struct malloc_chunk* fd; /* double links -- used only if free. */ - struct malloc_chunk* bk; -}; - -typedef struct malloc_chunk mchunk; -typedef struct malloc_chunk* mchunkptr; -typedef struct malloc_chunk* sbinptr; /* The type of bins of chunks */ -typedef unsigned int bindex_t; /* Described below */ -typedef unsigned int binmap_t; /* Described below */ -typedef unsigned int flag_t; /* The type of various bit flag sets */ - -/* ------------------- Chunks sizes and alignments ----------------------- */ - -#define MCHUNK_SIZE (sizeof(mchunk)) - -#if FOOTERS -#define CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) -#else /* FOOTERS */ -#define CHUNK_OVERHEAD (SIZE_T_SIZE) -#endif /* FOOTERS */ - -/* MMapped chunks need a second word of overhead ... */ -#define MMAP_CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) -/* ... and additional padding for fake next-chunk at foot */ -#define MMAP_FOOT_PAD (FOUR_SIZE_T_SIZES) - -/* The smallest size we can malloc is an aligned minimal chunk */ -#define MIN_CHUNK_SIZE\ - ((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) - -/* conversion from malloc headers to user pointers, and back */ -#define chunk2mem(p) ((void*)((char*)(p) + TWO_SIZE_T_SIZES)) -#define mem2chunk(mem) ((mchunkptr)((char*)(mem) - TWO_SIZE_T_SIZES)) -/* chunk associated with aligned address A */ -#define align_as_chunk(A) (mchunkptr)((A) + align_offset(chunk2mem(A))) - -/* Bounds on request (not chunk) sizes. */ -#define MAX_REQUEST ((-MIN_CHUNK_SIZE) << 2) -#define MIN_REQUEST (MIN_CHUNK_SIZE - CHUNK_OVERHEAD - SIZE_T_ONE) - -/* pad request bytes into a usable size */ -#define pad_request(req) \ - (((req) + CHUNK_OVERHEAD + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) - -/* pad request, checking for minimum (but not maximum) */ -#define request2size(req) \ - (((req) < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(req)) - - -/* ------------------ Operations on head and foot fields ----------------- */ - -/* - The head field of a chunk is or'ed with PINUSE_BIT when previous - adjacent chunk in use, and or'ed with CINUSE_BIT if this chunk is in - use, unless mmapped, in which case both bits are cleared. - - FLAG4_BIT is not used by this malloc, but might be useful in extensions. -*/ - -#define PINUSE_BIT (SIZE_T_ONE) -#define CINUSE_BIT (SIZE_T_TWO) -#define FLAG4_BIT (SIZE_T_FOUR) -#define INUSE_BITS (PINUSE_BIT|CINUSE_BIT) -#define FLAG_BITS (PINUSE_BIT|CINUSE_BIT|FLAG4_BIT) - -/* Head value for fenceposts */ -#define FENCEPOST_HEAD (INUSE_BITS|SIZE_T_SIZE) - -/* extraction of fields from head words */ -#define cinuse(p) ((p)->head & CINUSE_BIT) -#define pinuse(p) ((p)->head & PINUSE_BIT) -#define flag4inuse(p) ((p)->head & FLAG4_BIT) -#define is_inuse(p) (((p)->head & INUSE_BITS) != PINUSE_BIT) -#define is_mmapped(p) (((p)->head & INUSE_BITS) == 0) - -#define chunksize(p) ((p)->head & ~(FLAG_BITS)) - -#define clear_pinuse(p) ((p)->head &= ~PINUSE_BIT) -#define set_flag4(p) ((p)->head |= FLAG4_BIT) -#define clear_flag4(p) ((p)->head &= ~FLAG4_BIT) - -/* Treat space at ptr +/- offset as a chunk */ -#define chunk_plus_offset(p, s) ((mchunkptr)(((char*)(p)) + (s))) -#define chunk_minus_offset(p, s) ((mchunkptr)(((char*)(p)) - (s))) - -/* Ptr to next or previous physical malloc_chunk. */ -#define next_chunk(p) ((mchunkptr)( ((char*)(p)) + ((p)->head & ~FLAG_BITS))) -#define prev_chunk(p) ((mchunkptr)( ((char*)(p)) - ((p)->prev_foot) )) - -/* extract next chunk's pinuse bit */ -#define next_pinuse(p) ((next_chunk(p)->head) & PINUSE_BIT) - -/* Get/set size at footer */ -#define get_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_foot) -#define set_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_foot = (s)) - -/* Set size, pinuse bit, and foot */ -#define set_size_and_pinuse_of_free_chunk(p, s)\ - ((p)->head = (s|PINUSE_BIT), set_foot(p, s)) - -/* Set size, pinuse bit, foot, and clear next pinuse */ -#define set_free_with_pinuse(p, s, n)\ - (clear_pinuse(n), set_size_and_pinuse_of_free_chunk(p, s)) - -/* Get the internal overhead associated with chunk p */ -#define overhead_for(p)\ - (is_mmapped(p)? MMAP_CHUNK_OVERHEAD : CHUNK_OVERHEAD) - -/* Return true if malloced space is not necessarily cleared */ -#if MMAP_CLEARS -#define calloc_must_clear(p) (!is_mmapped(p)) -#else /* MMAP_CLEARS */ -#define calloc_must_clear(p) (1) -#endif /* MMAP_CLEARS */ - -/* ---------------------- Overlaid data structures ----------------------- */ - -/* - When chunks are not in use, they are treated as nodes of either - lists or trees. - - "Small" chunks are stored in circular doubly-linked lists, and look - like this: - - chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Size of previous chunk | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - `head:' | Size of chunk, in bytes |P| - mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Forward pointer to next chunk in list | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Back pointer to previous chunk in list | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Unused space (may be 0 bytes long) . - . . - . | -nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - `foot:' | Size of chunk, in bytes | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Larger chunks are kept in a form of bitwise digital trees (aka - tries) keyed on chunksizes. Because malloc_tree_chunks are only for - free chunks greater than 256 bytes, their size doesn't impose any - constraints on user chunk sizes. Each node looks like: - - chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Size of previous chunk | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - `head:' | Size of chunk, in bytes |P| - mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Forward pointer to next chunk of same size | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Back pointer to previous chunk of same size | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Pointer to left child (child[0]) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Pointer to right child (child[1]) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Pointer to parent | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | bin index of this chunk | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Unused space . - . | -nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - `foot:' | Size of chunk, in bytes | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Each tree holding treenodes is a tree of unique chunk sizes. Chunks - of the same size are arranged in a circularly-linked list, with only - the oldest chunk (the next to be used, in our FIFO ordering) - actually in the tree. (Tree members are distinguished by a non-null - parent pointer.) If a chunk with the same size an an existing node - is inserted, it is linked off the existing node using pointers that - work in the same way as fd/bk pointers of small chunks. - - Each tree contains a power of 2 sized range of chunk sizes (the - smallest is 0x100 <= x < 0x180), which is is divided in half at each - tree level, with the chunks in the smaller half of the range (0x100 - <= x < 0x140 for the top nose) in the left subtree and the larger - half (0x140 <= x < 0x180) in the right subtree. This is, of course, - done by inspecting individual bits. - - Using these rules, each node's left subtree contains all smaller - sizes than its right subtree. However, the node at the root of each - subtree has no particular ordering relationship to either. (The - dividing line between the subtree sizes is based on trie relation.) - If we remove the last chunk of a given size from the interior of the - tree, we need to replace it with a leaf node. The tree ordering - rules permit a node to be replaced by any leaf below it. - - The smallest chunk in a tree (a common operation in a best-fit - allocator) can be found by walking a path to the leftmost leaf in - the tree. Unlike a usual binary tree, where we follow left child - pointers until we reach a null, here we follow the right child - pointer any time the left one is null, until we reach a leaf with - both child pointers null. The smallest chunk in the tree will be - somewhere along that path. - - The worst case number of steps to add, find, or remove a node is - bounded by the number of bits differentiating chunks within - bins. Under current bin calculations, this ranges from 6 up to 21 - (for 32 bit sizes) or up to 53 (for 64 bit sizes). The typical case - is of course much better. -*/ - -struct malloc_tree_chunk { - /* The first four fields must be compatible with malloc_chunk */ - size_t prev_foot; - size_t head; - struct malloc_tree_chunk* fd; - struct malloc_tree_chunk* bk; - - struct malloc_tree_chunk* child[2]; - struct malloc_tree_chunk* parent; - bindex_t index; -}; - -typedef struct malloc_tree_chunk tchunk; -typedef struct malloc_tree_chunk* tchunkptr; -typedef struct malloc_tree_chunk* tbinptr; /* The type of bins of trees */ - -/* A little helper macro for trees */ -#define leftmost_child(t) ((t)->child[0] != 0? (t)->child[0] : (t)->child[1]) - -/* ----------------------------- Segments -------------------------------- */ - -/* - Each malloc space may include non-contiguous segments, held in a - list headed by an embedded malloc_segment record representing the - top-most space. Segments also include flags holding properties of - the space. Large chunks that are directly allocated by mmap are not - included in this list. They are instead independently created and - destroyed without otherwise keeping track of them. - - Segment management mainly comes into play for spaces allocated by - MMAP. Any call to MMAP might or might not return memory that is - adjacent to an existing segment. MORECORE normally contiguously - extends the current space, so this space is almost always adjacent, - which is simpler and faster to deal with. (This is why MORECORE is - used preferentially to MMAP when both are available -- see - sys_alloc.) When allocating using MMAP, we don't use any of the - hinting mechanisms (inconsistently) supported in various - implementations of unix mmap, or distinguish reserving from - committing memory. Instead, we just ask for space, and exploit - contiguity when we get it. It is probably possible to do - better than this on some systems, but no general scheme seems - to be significantly better. - - Management entails a simpler variant of the consolidation scheme - used for chunks to reduce fragmentation -- new adjacent memory is - normally prepended or appended to an existing segment. However, - there are limitations compared to chunk consolidation that mostly - reflect the fact that segment processing is relatively infrequent - (occurring only when getting memory from system) and that we - don't expect to have huge numbers of segments: - - * Segments are not indexed, so traversal requires linear scans. (It - would be possible to index these, but is not worth the extra - overhead and complexity for most programs on most platforms.) - * New segments are only appended to old ones when holding top-most - memory; if they cannot be prepended to others, they are held in - different segments. - - Except for the top-most segment of an mstate, each segment record - is kept at the tail of its segment. Segments are added by pushing - segment records onto the list headed by &mstate.seg for the - containing mstate. - - Segment flags control allocation/merge/deallocation policies: - * If EXTERN_BIT set, then we did not allocate this segment, - and so should not try to deallocate or merge with others. - (This currently holds only for the initial segment passed - into create_mspace_with_base.) - * If USE_MMAP_BIT set, the segment may be merged with - other surrounding mmapped segments and trimmed/de-allocated - using munmap. - * If neither bit is set, then the segment was obtained using - MORECORE so can be merged with surrounding MORECORE'd segments - and deallocated/trimmed using MORECORE with negative arguments. -*/ - -struct malloc_segment { - char* base; /* base address */ - size_t size; /* allocated size */ - struct malloc_segment* next; /* ptr to next segment */ - flag_t sflags; /* mmap and extern flag */ -}; - -#define is_mmapped_segment(S) ((S)->sflags & USE_MMAP_BIT) -#define is_extern_segment(S) ((S)->sflags & EXTERN_BIT) - -typedef struct malloc_segment msegment; -typedef struct malloc_segment* msegmentptr; - -/* ---------------------------- malloc_state ----------------------------- */ - -/* - A malloc_state holds all of the bookkeeping for a space. - The main fields are: - - Top - The topmost chunk of the currently active segment. Its size is - cached in topsize. The actual size of topmost space is - topsize+TOP_FOOT_SIZE, which includes space reserved for adding - fenceposts and segment records if necessary when getting more - space from the system. The size at which to autotrim top is - cached from mparams in trim_check, except that it is disabled if - an autotrim fails. - - Designated victim (dv) - This is the preferred chunk for servicing small requests that - don't have exact fits. It is normally the chunk split off most - recently to service another small request. Its size is cached in - dvsize. The link fields of this chunk are not maintained since it - is not kept in a bin. - - SmallBins - An array of bin headers for free chunks. These bins hold chunks - with sizes less than MIN_LARGE_SIZE bytes. Each bin contains - chunks of all the same size, spaced 8 bytes apart. To simplify - use in double-linked lists, each bin header acts as a malloc_chunk - pointing to the real first node, if it exists (else pointing to - itself). This avoids special-casing for headers. But to avoid - waste, we allocate only the fd/bk pointers of bins, and then use - repositioning tricks to treat these as the fields of a chunk. - - TreeBins - Treebins are pointers to the roots of trees holding a range of - sizes. There are 2 equally spaced treebins for each power of two - from TREE_SHIFT to TREE_SHIFT+16. The last bin holds anything - larger. - - Bin maps - There is one bit map for small bins ("smallmap") and one for - treebins ("treemap). Each bin sets its bit when non-empty, and - clears the bit when empty. Bit operations are then used to avoid - bin-by-bin searching -- nearly all "search" is done without ever - looking at bins that won't be selected. The bit maps - conservatively use 32 bits per map word, even if on 64bit system. - For a good description of some of the bit-based techniques used - here, see Henry S. Warren Jr's book "Hacker's Delight" (and - supplement at http://hackersdelight.org/). Many of these are - intended to reduce the branchiness of paths through malloc etc, as - well as to reduce the number of memory locations read or written. - - Segments - A list of segments headed by an embedded malloc_segment record - representing the initial space. - - Address check support - The least_addr field is the least address ever obtained from - MORECORE or MMAP. Attempted frees and reallocs of any address less - than this are trapped (unless INSECURE is defined). - - Magic tag - A cross-check field that should always hold same value as mparams.magic. - - Max allowed footprint - The maximum allowed bytes to allocate from system (zero means no limit) - - Flags - Bits recording whether to use MMAP, locks, or contiguous MORECORE - - Statistics - Each space keeps track of current and maximum system memory - obtained via MORECORE or MMAP. - - Trim support - Fields holding the amount of unused topmost memory that should trigger - trimming, and a counter to force periodic scanning to release unused - non-topmost segments. - - Locking - If USE_LOCKS is defined, the "mutex" lock is acquired and released - around every public call using this mspace. - - Extension support - A void* pointer and a size_t field that can be used to help implement - extensions to this malloc. -*/ - -/* Bin types, widths and sizes */ -#define NSMALLBINS (32U) -#define NTREEBINS (32U) -#define SMALLBIN_SHIFT (3U) -#define SMALLBIN_WIDTH (SIZE_T_ONE << SMALLBIN_SHIFT) -#define TREEBIN_SHIFT (8U) -#define MIN_LARGE_SIZE (SIZE_T_ONE << TREEBIN_SHIFT) -#define MAX_SMALL_SIZE (MIN_LARGE_SIZE - SIZE_T_ONE) -#define MAX_SMALL_REQUEST (MAX_SMALL_SIZE - CHUNK_ALIGN_MASK - CHUNK_OVERHEAD) - -struct malloc_state { - binmap_t smallmap; - binmap_t treemap; - size_t dvsize; - size_t topsize; - char* least_addr; - mchunkptr dv; - mchunkptr top; - size_t trim_check; - size_t release_checks; - size_t magic; - mchunkptr smallbins[(NSMALLBINS+1)*2]; - tbinptr treebins[NTREEBINS]; - size_t footprint; - size_t max_footprint; - size_t footprint_limit; /* zero means no limit */ - flag_t mflags; -#if USE_LOCKS - MLOCK_T mutex; /* locate lock among fields that rarely change */ -#endif /* USE_LOCKS */ - msegment seg; - void* extp; /* Unused but available for extensions */ - size_t exts; -}; - -typedef struct malloc_state* mstate; - -/* ------------- Global malloc_state and malloc_params ------------------- */ - -/* - malloc_params holds global properties, including those that can be - dynamically set using mallopt. There is a single instance, mparams, - initialized in init_mparams. Note that the non-zeroness of "magic" - also serves as an initialization flag. -*/ - -struct malloc_params { - size_t magic; - size_t page_size; - size_t granularity; - size_t mmap_threshold; - size_t trim_threshold; - flag_t default_mflags; -}; - -static struct malloc_params mparams; - -/* Ensure mparams initialized */ -#define ensure_initialization() (void)(mparams.magic != 0 || init_mparams()) - -#if !ONLY_MSPACES - -/* The global malloc_state used for all non-"mspace" calls */ -static struct malloc_state _gm_; -#define gm (&_gm_) -#define is_global(M) ((M) == &_gm_) - -#endif /* !ONLY_MSPACES */ - -#define is_initialized(M) ((M)->top != 0) - -/* -------------------------- system alloc setup ------------------------- */ - -/* Operations on mflags */ - -#define use_lock(M) ((M)->mflags & USE_LOCK_BIT) -#define enable_lock(M) ((M)->mflags |= USE_LOCK_BIT) -#if USE_LOCKS -#define disable_lock(M) ((M)->mflags &= ~USE_LOCK_BIT) -#else -#define disable_lock(M) -#endif - -#define use_mmap(M) ((M)->mflags & USE_MMAP_BIT) -#define enable_mmap(M) ((M)->mflags |= USE_MMAP_BIT) -#if HAVE_MMAP -#define disable_mmap(M) ((M)->mflags &= ~USE_MMAP_BIT) -#else -#define disable_mmap(M) -#endif - -#define use_noncontiguous(M) ((M)->mflags & USE_NONCONTIGUOUS_BIT) -#define disable_contiguous(M) ((M)->mflags |= USE_NONCONTIGUOUS_BIT) - -#define set_lock(M,L)\ - ((M)->mflags = (L)?\ - ((M)->mflags | USE_LOCK_BIT) :\ - ((M)->mflags & ~USE_LOCK_BIT)) - -/* page-align a size */ -#define page_align(S)\ - (((S) + (mparams.page_size - SIZE_T_ONE)) & ~(mparams.page_size - SIZE_T_ONE)) - -/* granularity-align a size */ -#define granularity_align(S)\ - (((S) + (mparams.granularity - SIZE_T_ONE))\ - & ~(mparams.granularity - SIZE_T_ONE)) - - -/* For mmap, use granularity alignment on windows, else page-align */ -#ifdef WIN32 -#define mmap_align(S) granularity_align(S) -#else -#define mmap_align(S) page_align(S) -#endif - -/* For sys_alloc, enough padding to ensure can malloc request on success */ -#define SYS_ALLOC_PADDING (TOP_FOOT_SIZE + MALLOC_ALIGNMENT) - -#define is_page_aligned(S)\ - (((size_t)(S) & (mparams.page_size - SIZE_T_ONE)) == 0) -#define is_granularity_aligned(S)\ - (((size_t)(S) & (mparams.granularity - SIZE_T_ONE)) == 0) - -/* True if segment S holds address A */ -#define segment_holds(S, A)\ - ((char*)(A) >= S->base && (char*)(A) < S->base + S->size) - -/* Return segment holding given address */ -static msegmentptr segment_holding(mstate m, char* addr) { - msegmentptr sp = &m->seg; - for (;;) { - if (addr >= sp->base && addr < sp->base + sp->size) - return sp; - if ((sp = sp->next) == 0) - return 0; - } -} - -/* Return true if segment contains a segment link */ -static int has_segment_link(mstate m, msegmentptr ss) { - msegmentptr sp = &m->seg; - for (;;) { - if ((char*)sp >= ss->base && (char*)sp < ss->base + ss->size) - return 1; - if ((sp = sp->next) == 0) - return 0; - } -} - -#ifndef MORECORE_CANNOT_TRIM -#define should_trim(M,s) ((s) > (M)->trim_check) -#else /* MORECORE_CANNOT_TRIM */ -#define should_trim(M,s) (0) -#endif /* MORECORE_CANNOT_TRIM */ - -/* - TOP_FOOT_SIZE is padding at the end of a segment, including space - that may be needed to place segment records and fenceposts when new - noncontiguous segments are added. -*/ -#define TOP_FOOT_SIZE\ - (align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE) - - -/* ------------------------------- Hooks -------------------------------- */ - -/* - PREACTION should be defined to return 0 on success, and nonzero on - failure. If you are not using locking, you can redefine these to do - anything you like. -*/ - -#if USE_LOCKS -#define PREACTION(M) ((use_lock(M))? ACQUIRE_LOCK(&(M)->mutex) : 0) -#define POSTACTION(M) { if (use_lock(M)) RELEASE_LOCK(&(M)->mutex); } -#else /* USE_LOCKS */ - -#ifndef PREACTION -#define PREACTION(M) (0) -#endif /* PREACTION */ - -#ifndef POSTACTION -#define POSTACTION(M) -#endif /* POSTACTION */ - -#endif /* USE_LOCKS */ - -/* - CORRUPTION_ERROR_ACTION is triggered upon detected bad addresses. - USAGE_ERROR_ACTION is triggered on detected bad frees and - reallocs. The argument p is an address that might have triggered the - fault. It is ignored by the two predefined actions, but might be - useful in custom actions that try to help diagnose errors. -*/ - -#if PROCEED_ON_ERROR - -/* A count of the number of corruption errors causing resets */ -int malloc_corruption_error_count; - -/* default corruption action */ -static void reset_on_error(mstate m); - -#define CORRUPTION_ERROR_ACTION(m) reset_on_error(m) -#define USAGE_ERROR_ACTION(m, p) - -#else /* PROCEED_ON_ERROR */ - -#ifndef CORRUPTION_ERROR_ACTION -#define CORRUPTION_ERROR_ACTION(m) ABORT -#endif /* CORRUPTION_ERROR_ACTION */ - -#ifndef USAGE_ERROR_ACTION -#define USAGE_ERROR_ACTION(m,p) ABORT -#endif /* USAGE_ERROR_ACTION */ - -#endif /* PROCEED_ON_ERROR */ - - -/* -------------------------- Debugging setup ---------------------------- */ - -#if ! DEBUG - -#define check_free_chunk(M,P) -#define check_inuse_chunk(M,P) -#define check_malloced_chunk(M,P,N) -#define check_mmapped_chunk(M,P) -#define check_malloc_state(M) -#define check_top_chunk(M,P) - -#else /* DEBUG */ -#define check_free_chunk(M,P) do_check_free_chunk(M,P) -#define check_inuse_chunk(M,P) do_check_inuse_chunk(M,P) -#define check_top_chunk(M,P) do_check_top_chunk(M,P) -#define check_malloced_chunk(M,P,N) do_check_malloced_chunk(M,P,N) -#define check_mmapped_chunk(M,P) do_check_mmapped_chunk(M,P) -#define check_malloc_state(M) do_check_malloc_state(M) - -static void do_check_any_chunk(mstate m, mchunkptr p); -static void do_check_top_chunk(mstate m, mchunkptr p); -static void do_check_mmapped_chunk(mstate m, mchunkptr p); -static void do_check_inuse_chunk(mstate m, mchunkptr p); -static void do_check_free_chunk(mstate m, mchunkptr p); -static void do_check_malloced_chunk(mstate m, void* mem, size_t s); -static void do_check_tree(mstate m, tchunkptr t); -static void do_check_treebin(mstate m, bindex_t i); -static void do_check_smallbin(mstate m, bindex_t i); -static void do_check_malloc_state(mstate m); -static int bin_find(mstate m, mchunkptr x); -static size_t traverse_and_check(mstate m); -#endif /* DEBUG */ - -/* ---------------------------- Indexing Bins ---------------------------- */ - -#define is_small(s) (((s) >> SMALLBIN_SHIFT) < NSMALLBINS) -#define small_index(s) (bindex_t)((s) >> SMALLBIN_SHIFT) -#define small_index2size(i) ((i) << SMALLBIN_SHIFT) -#define MIN_SMALL_INDEX (small_index(MIN_CHUNK_SIZE)) - -/* addressing by index. See above about smallbin repositioning */ -#define smallbin_at(M, i) ((sbinptr)((char*)&((M)->smallbins[(i)<<1]))) -#define treebin_at(M,i) (&((M)->treebins[i])) - -/* assign tree index for size S to variable I. Use x86 asm if possible */ -#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__) || defined(__wasm__)) -#define compute_tree_index(S, I)\ -{\ - unsigned int X = S >> TREEBIN_SHIFT;\ - if (X == 0)\ - I = 0;\ - else if (X > 0xFFFF)\ - I = NTREEBINS-1;\ - else {\ - unsigned int K = (unsigned) sizeof(X)*__CHAR_BIT__ - 1 - (unsigned) __builtin_clz(X); \ - I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ - }\ -} - -#elif defined (__INTEL_COMPILER) -#define compute_tree_index(S, I)\ -{\ - size_t X = S >> TREEBIN_SHIFT;\ - if (X == 0)\ - I = 0;\ - else if (X > 0xFFFF)\ - I = NTREEBINS-1;\ - else {\ - unsigned int K = _bit_scan_reverse (X); \ - I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ - }\ -} - -#elif defined(_MSC_VER) && _MSC_VER>=1300 -#define compute_tree_index(S, I)\ -{\ - size_t X = S >> TREEBIN_SHIFT;\ - if (X == 0)\ - I = 0;\ - else if (X > 0xFFFF)\ - I = NTREEBINS-1;\ - else {\ - unsigned int K;\ - _BitScanReverse((DWORD *) &K, (DWORD) X);\ - I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ - }\ -} - -#else /* GNUC */ -#define compute_tree_index(S, I)\ -{\ - size_t X = S >> TREEBIN_SHIFT;\ - if (X == 0)\ - I = 0;\ - else if (X > 0xFFFF)\ - I = NTREEBINS-1;\ - else {\ - unsigned int Y = (unsigned int)X;\ - unsigned int N = ((Y - 0x100) >> 16) & 8;\ - unsigned int K = (((Y <<= N) - 0x1000) >> 16) & 4;\ - N += K;\ - N += K = (((Y <<= K) - 0x4000) >> 16) & 2;\ - K = 14 - N + ((Y <<= K) >> 15);\ - I = (K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1));\ - }\ -} -#endif /* GNUC */ - -/* Bit representing maximum resolved size in a treebin at i */ -#define bit_for_tree_index(i) \ - (i == NTREEBINS-1)? (SIZE_T_BITSIZE-1) : (((i) >> 1) + TREEBIN_SHIFT - 2) - -/* Shift placing maximum resolved bit in a treebin at i as sign bit */ -#define leftshift_for_tree_index(i) \ - ((i == NTREEBINS-1)? 0 : \ - ((SIZE_T_BITSIZE-SIZE_T_ONE) - (((i) >> 1) + TREEBIN_SHIFT - 2))) - -/* The size of the smallest chunk held in bin with index i */ -#define minsize_for_tree_index(i) \ - ((SIZE_T_ONE << (((i) >> 1) + TREEBIN_SHIFT)) | \ - (((size_t)((i) & SIZE_T_ONE)) << (((i) >> 1) + TREEBIN_SHIFT - 1))) - - -/* ------------------------ Operations on bin maps ----------------------- */ - -/* bit corresponding to given index */ -#define idx2bit(i) ((binmap_t)(1) << (i)) - -/* Mark/Clear bits with given index */ -#define mark_smallmap(M,i) ((M)->smallmap |= idx2bit(i)) -#define clear_smallmap(M,i) ((M)->smallmap &= ~idx2bit(i)) -#define smallmap_is_marked(M,i) ((M)->smallmap & idx2bit(i)) - -#define mark_treemap(M,i) ((M)->treemap |= idx2bit(i)) -#define clear_treemap(M,i) ((M)->treemap &= ~idx2bit(i)) -#define treemap_is_marked(M,i) ((M)->treemap & idx2bit(i)) - -/* isolate the least set bit of a bitmap */ -#define least_bit(x) ((x) & -(x)) - -/* mask with all bits to left of least bit of x on */ -#define left_bits(x) ((x<<1) | -(x<<1)) - -/* mask with all bits to left of or equal to least bit of x on */ -#define same_or_left_bits(x) ((x) | -(x)) - -/* index corresponding to given bit. Use x86 asm if possible */ - -#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__) || defined(__wasm__)) -#define compute_bit2idx(X, I)\ -{\ - unsigned int J;\ - J = __builtin_ctz(X); \ - I = (bindex_t)J;\ -} - -#elif defined (__INTEL_COMPILER) -#define compute_bit2idx(X, I)\ -{\ - unsigned int J;\ - J = _bit_scan_forward (X); \ - I = (bindex_t)J;\ -} - -#elif defined(_MSC_VER) && _MSC_VER>=1300 -#define compute_bit2idx(X, I)\ -{\ - unsigned int J;\ - _BitScanForward((DWORD *) &J, X);\ - I = (bindex_t)J;\ -} - -#elif USE_BUILTIN_FFS -#define compute_bit2idx(X, I) I = ffs(X)-1 - -#else -#define compute_bit2idx(X, I)\ -{\ - unsigned int Y = X - 1;\ - unsigned int K = Y >> (16-4) & 16;\ - unsigned int N = K; Y >>= K;\ - N += K = Y >> (8-3) & 8; Y >>= K;\ - N += K = Y >> (4-2) & 4; Y >>= K;\ - N += K = Y >> (2-1) & 2; Y >>= K;\ - N += K = Y >> (1-0) & 1; Y >>= K;\ - I = (bindex_t)(N + Y);\ -} -#endif /* GNUC */ - - -/* ----------------------- Runtime Check Support ------------------------- */ - -/* - For security, the main invariant is that malloc/free/etc never - writes to a static address other than malloc_state, unless static - malloc_state itself has been corrupted, which cannot occur via - malloc (because of these checks). In essence this means that we - believe all pointers, sizes, maps etc held in malloc_state, but - check all of those linked or offsetted from other embedded data - structures. These checks are interspersed with main code in a way - that tends to minimize their run-time cost. - - When FOOTERS is defined, in addition to range checking, we also - verify footer fields of inuse chunks, which can be used guarantee - that the mstate controlling malloc/free is intact. This is a - streamlined version of the approach described by William Robertson - et al in "Run-time Detection of Heap-based Overflows" LISA'03 - http://www.usenix.org/events/lisa03/tech/robertson.html The footer - of an inuse chunk holds the xor of its mstate and a random seed, - that is checked upon calls to free() and realloc(). This is - (probabalistically) unguessable from outside the program, but can be - computed by any code successfully malloc'ing any chunk, so does not - itself provide protection against code that has already broken - security through some other means. Unlike Robertson et al, we - always dynamically check addresses of all offset chunks (previous, - next, etc). This turns out to be cheaper than relying on hashes. -*/ - -#if !INSECURE -/* Check if address a is at least as high as any from MORECORE or MMAP */ -#define ok_address(M, a) ((char*)(a) >= (M)->least_addr) -/* Check if address of next chunk n is higher than base chunk p */ -#define ok_next(p, n) ((char*)(p) < (char*)(n)) -/* Check if p has inuse status */ -#define ok_inuse(p) is_inuse(p) -/* Check if p has its pinuse bit on */ -#define ok_pinuse(p) pinuse(p) - -#else /* !INSECURE */ -#define ok_address(M, a) (1) -#define ok_next(b, n) (1) -#define ok_inuse(p) (1) -#define ok_pinuse(p) (1) -#endif /* !INSECURE */ - -#if (FOOTERS && !INSECURE) -/* Check if (alleged) mstate m has expected magic field */ -#define ok_magic(M) ((M)->magic == mparams.magic) -#else /* (FOOTERS && !INSECURE) */ -#define ok_magic(M) (1) -#endif /* (FOOTERS && !INSECURE) */ - -/* In gcc, use __builtin_expect to minimize impact of checks */ -#if !INSECURE -#if defined(__GNUC__) && __GNUC__ >= 3 -#define RTCHECK(e) __builtin_expect(e, 1) -#else /* GNUC */ -#define RTCHECK(e) (e) -#endif /* GNUC */ -#else /* !INSECURE */ -#define RTCHECK(e) (1) -#endif /* !INSECURE */ - -/* macros to set up inuse chunks with or without footers */ - -#if !FOOTERS - -#define mark_inuse_foot(M,p,s) - -/* Macros for setting head/foot of non-mmapped chunks */ - -/* Set cinuse bit and pinuse bit of next chunk */ -#define set_inuse(M,p,s)\ - ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ - ((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) - -/* Set cinuse and pinuse of this chunk and pinuse of next chunk */ -#define set_inuse_and_pinuse(M,p,s)\ - ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ - ((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) - -/* Set size, cinuse and pinuse bit of this chunk */ -#define set_size_and_pinuse_of_inuse_chunk(M, p, s)\ - ((p)->head = (s|PINUSE_BIT|CINUSE_BIT)) - -#else /* FOOTERS */ - -/* Set foot of inuse chunk to be xor of mstate and seed */ -#define mark_inuse_foot(M,p,s)\ - (((mchunkptr)((char*)(p) + (s)))->prev_foot = ((size_t)(M) ^ mparams.magic)) - -#define get_mstate_for(p)\ - ((mstate)(((mchunkptr)((char*)(p) +\ - (chunksize(p))))->prev_foot ^ mparams.magic)) - -#define set_inuse(M,p,s)\ - ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ - (((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT), \ - mark_inuse_foot(M,p,s)) - -#define set_inuse_and_pinuse(M,p,s)\ - ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ - (((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT),\ - mark_inuse_foot(M,p,s)) - -#define set_size_and_pinuse_of_inuse_chunk(M, p, s)\ - ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ - mark_inuse_foot(M, p, s)) - -#endif /* !FOOTERS */ - -/* ---------------------------- setting mparams -------------------------- */ - -#if LOCK_AT_FORK -static void pre_fork(void) { ACQUIRE_LOCK(&(gm)->mutex); } -static void post_fork_parent(void) { RELEASE_LOCK(&(gm)->mutex); } -static void post_fork_child(void) { INITIAL_LOCK(&(gm)->mutex); } -#endif /* LOCK_AT_FORK */ - -/* Initialize mparams */ -static int init_mparams(void) { -#ifdef NEED_GLOBAL_LOCK_INIT - if (malloc_global_mutex_status <= 0) - init_malloc_global_mutex(); -#endif - - ACQUIRE_MALLOC_GLOBAL_LOCK(); - if (mparams.magic == 0) { - size_t magic; - size_t psize; - size_t gsize; - -#ifndef WIN32 - psize = malloc_getpagesize; - gsize = ((DEFAULT_GRANULARITY != 0)? DEFAULT_GRANULARITY : psize); -#else /* WIN32 */ - { - SYSTEM_INFO system_info; - GetSystemInfo(&system_info); - psize = system_info.dwPageSize; - gsize = ((DEFAULT_GRANULARITY != 0)? - DEFAULT_GRANULARITY : system_info.dwAllocationGranularity); - } -#endif /* WIN32 */ - - /* Sanity-check configuration: - size_t must be unsigned and as wide as pointer type. - ints must be at least 4 bytes. - alignment must be at least 8. - Alignment, min chunk size, and page size must all be powers of 2. - */ - if ((sizeof(size_t) != sizeof(char*)) || - (MAX_SIZE_T < MIN_CHUNK_SIZE) || - (sizeof(int) < 4) || - (MALLOC_ALIGNMENT < (size_t)8U) || - ((MALLOC_ALIGNMENT & (MALLOC_ALIGNMENT-SIZE_T_ONE)) != 0) || - ((MCHUNK_SIZE & (MCHUNK_SIZE-SIZE_T_ONE)) != 0) || - ((gsize & (gsize-SIZE_T_ONE)) != 0) || - ((psize & (psize-SIZE_T_ONE)) != 0)) - ABORT; - mparams.granularity = gsize; - mparams.page_size = psize; - mparams.mmap_threshold = DEFAULT_MMAP_THRESHOLD; - mparams.trim_threshold = DEFAULT_TRIM_THRESHOLD; -#if MORECORE_CONTIGUOUS - mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT; -#else /* MORECORE_CONTIGUOUS */ - mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT|USE_NONCONTIGUOUS_BIT; -#endif /* MORECORE_CONTIGUOUS */ - -#if !ONLY_MSPACES - /* Set up lock for main malloc area */ - gm->mflags = mparams.default_mflags; - (void)INITIAL_LOCK(&gm->mutex); -#endif -#if LOCK_AT_FORK - pthread_atfork(&pre_fork, &post_fork_parent, &post_fork_child); -#endif - - { -#if USE_DEV_RANDOM - int fd; - unsigned char buf[sizeof(size_t)]; - /* Try to use /dev/urandom, else fall back on using time */ - if ((fd = open("/dev/urandom", O_RDONLY)) >= 0 && - read(fd, buf, sizeof(buf)) == sizeof(buf)) { - magic = *((size_t *) buf); - close(fd); - } - else -#endif /* USE_DEV_RANDOM */ -#ifdef WIN32 - magic = (size_t)(GetTickCount() ^ (size_t)0x55555555U); -#elif defined(LACKS_TIME_H) - magic = (size_t)&magic ^ (size_t)0x55555555U; -#else - magic = (size_t)(time(0) ^ (size_t)0x55555555U); -#endif - magic |= (size_t)8U; /* ensure nonzero */ - magic &= ~(size_t)7U; /* improve chances of fault for bad values */ - /* Until memory modes commonly available, use volatile-write */ - (*(volatile size_t *)(&(mparams.magic))) = magic; - } - } - - RELEASE_MALLOC_GLOBAL_LOCK(); - return 1; -} - -/* support for mallopt */ -static int change_mparam(int param_number, int value) { - size_t val; - ensure_initialization(); - val = (value == -1)? MAX_SIZE_T : (size_t)value; - switch(param_number) { - case M_TRIM_THRESHOLD: - mparams.trim_threshold = val; - return 1; - case M_GRANULARITY: - if (val >= mparams.page_size && ((val & (val-1)) == 0)) { - mparams.granularity = val; - return 1; - } - else - return 0; - case M_MMAP_THRESHOLD: - mparams.mmap_threshold = val; - return 1; - default: - return 0; - } -} - -#if DEBUG -/* ------------------------- Debugging Support --------------------------- */ - -/* Check properties of any chunk, whether free, inuse, mmapped etc */ -static void do_check_any_chunk(mstate m, mchunkptr p) { - assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); - assert(ok_address(m, p)); -} - -/* Check properties of top chunk */ -static void do_check_top_chunk(mstate m, mchunkptr p) { - msegmentptr sp = segment_holding(m, (char*)p); - size_t sz = p->head & ~INUSE_BITS; /* third-lowest bit can be set! */ - assert(sp != 0); - assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); - assert(ok_address(m, p)); - assert(sz == m->topsize); - assert(sz > 0); - assert(sz == ((sp->base + sp->size) - (char*)p) - TOP_FOOT_SIZE); - assert(pinuse(p)); - assert(!pinuse(chunk_plus_offset(p, sz))); -} - -/* Check properties of (inuse) mmapped chunks */ -static void do_check_mmapped_chunk(mstate m, mchunkptr p) { - size_t sz = chunksize(p); - size_t len = (sz + (p->prev_foot) + MMAP_FOOT_PAD); - assert(is_mmapped(p)); - assert(use_mmap(m)); - assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); - assert(ok_address(m, p)); - assert(!is_small(sz)); - assert((len & (mparams.page_size-SIZE_T_ONE)) == 0); - assert(chunk_plus_offset(p, sz)->head == FENCEPOST_HEAD); - assert(chunk_plus_offset(p, sz+SIZE_T_SIZE)->head == 0); -} - -/* Check properties of inuse chunks */ -static void do_check_inuse_chunk(mstate m, mchunkptr p) { - do_check_any_chunk(m, p); - assert(is_inuse(p)); - assert(next_pinuse(p)); - /* If not pinuse and not mmapped, previous chunk has OK offset */ - assert(is_mmapped(p) || pinuse(p) || next_chunk(prev_chunk(p)) == p); - if (is_mmapped(p)) - do_check_mmapped_chunk(m, p); -} - -/* Check properties of free chunks */ -static void do_check_free_chunk(mstate m, mchunkptr p) { - size_t sz = chunksize(p); - mchunkptr next = chunk_plus_offset(p, sz); - do_check_any_chunk(m, p); - assert(!is_inuse(p)); - assert(!next_pinuse(p)); - assert (!is_mmapped(p)); - if (p != m->dv && p != m->top) { - if (sz >= MIN_CHUNK_SIZE) { - assert((sz & CHUNK_ALIGN_MASK) == 0); - assert(is_aligned(chunk2mem(p))); - assert(next->prev_foot == sz); - assert(pinuse(p)); - assert (next == m->top || is_inuse(next)); - assert(p->fd->bk == p); - assert(p->bk->fd == p); - } - else /* markers are always of size SIZE_T_SIZE */ - assert(sz == SIZE_T_SIZE); - } -} - -/* Check properties of malloced chunks at the point they are malloced */ -static void do_check_malloced_chunk(mstate m, void* mem, size_t s) { - if (mem != 0) { - mchunkptr p = mem2chunk(mem); - size_t sz = p->head & ~INUSE_BITS; - do_check_inuse_chunk(m, p); - assert((sz & CHUNK_ALIGN_MASK) == 0); - assert(sz >= MIN_CHUNK_SIZE); - assert(sz >= s); - /* unless mmapped, size is less than MIN_CHUNK_SIZE more than request */ - assert(is_mmapped(p) || sz < (s + MIN_CHUNK_SIZE)); - } -} - -/* Check a tree and its subtrees. */ -static void do_check_tree(mstate m, tchunkptr t) { - tchunkptr head = 0; - tchunkptr u = t; - bindex_t tindex = t->index; - size_t tsize = chunksize(t); - bindex_t idx; - compute_tree_index(tsize, idx); - assert(tindex == idx); - assert(tsize >= MIN_LARGE_SIZE); - assert(tsize >= minsize_for_tree_index(idx)); - assert((idx == NTREEBINS-1) || (tsize < minsize_for_tree_index((idx+1)))); - - do { /* traverse through chain of same-sized nodes */ - do_check_any_chunk(m, ((mchunkptr)u)); - assert(u->index == tindex); - assert(chunksize(u) == tsize); - assert(!is_inuse(u)); - assert(!next_pinuse(u)); - assert(u->fd->bk == u); - assert(u->bk->fd == u); - if (u->parent == 0) { - assert(u->child[0] == 0); - assert(u->child[1] == 0); - } - else { - assert(head == 0); /* only one node on chain has parent */ - head = u; - assert(u->parent != u); - assert (u->parent->child[0] == u || - u->parent->child[1] == u || - *((tbinptr*)(u->parent)) == u); - if (u->child[0] != 0) { - assert(u->child[0]->parent == u); - assert(u->child[0] != u); - do_check_tree(m, u->child[0]); - } - if (u->child[1] != 0) { - assert(u->child[1]->parent == u); - assert(u->child[1] != u); - do_check_tree(m, u->child[1]); - } - if (u->child[0] != 0 && u->child[1] != 0) { - assert(chunksize(u->child[0]) < chunksize(u->child[1])); - } - } - u = u->fd; - } while (u != t); - assert(head != 0); -} - -/* Check all the chunks in a treebin. */ -static void do_check_treebin(mstate m, bindex_t i) { - tbinptr* tb = treebin_at(m, i); - tchunkptr t = *tb; - int empty = (m->treemap & (1U << i)) == 0; - if (t == 0) - assert(empty); - if (!empty) - do_check_tree(m, t); -} - -/* Check all the chunks in a smallbin. */ -static void do_check_smallbin(mstate m, bindex_t i) { - sbinptr b = smallbin_at(m, i); - mchunkptr p = b->bk; - unsigned int empty = (m->smallmap & (1U << i)) == 0; - if (p == b) - assert(empty); - if (!empty) { - for (; p != b; p = p->bk) { - size_t size = chunksize(p); - mchunkptr q; - /* each chunk claims to be free */ - do_check_free_chunk(m, p); - /* chunk belongs in bin */ - assert(small_index(size) == i); - assert(p->bk == b || chunksize(p->bk) == chunksize(p)); - /* chunk is followed by an inuse chunk */ - q = next_chunk(p); - if (q->head != FENCEPOST_HEAD) - do_check_inuse_chunk(m, q); - } - } -} - -/* Find x in a bin. Used in other check functions. */ -static int bin_find(mstate m, mchunkptr x) { - size_t size = chunksize(x); - if (is_small(size)) { - bindex_t sidx = small_index(size); - sbinptr b = smallbin_at(m, sidx); - if (smallmap_is_marked(m, sidx)) { - mchunkptr p = b; - do { - if (p == x) - return 1; - } while ((p = p->fd) != b); - } - } - else { - bindex_t tidx; - compute_tree_index(size, tidx); - if (treemap_is_marked(m, tidx)) { - tchunkptr t = *treebin_at(m, tidx); - size_t sizebits = size << leftshift_for_tree_index(tidx); - while (t != 0 && chunksize(t) != size) { - t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; - sizebits <<= 1; - } - if (t != 0) { - tchunkptr u = t; - do { - if (u == (tchunkptr)x) - return 1; - } while ((u = u->fd) != t); - } - } - } - return 0; -} - -/* Traverse each chunk and check it; return total */ -static size_t traverse_and_check(mstate m) { - size_t sum = 0; - if (is_initialized(m)) { - msegmentptr s = &m->seg; - sum += m->topsize + TOP_FOOT_SIZE; - while (s != 0) { - mchunkptr q = align_as_chunk(s->base); - mchunkptr lastq = 0; - assert(pinuse(q)); - while (segment_holds(s, q) && - q != m->top && q->head != FENCEPOST_HEAD) { - sum += chunksize(q); - if (is_inuse(q)) { - assert(!bin_find(m, q)); - do_check_inuse_chunk(m, q); - } - else { - assert(q == m->dv || bin_find(m, q)); - assert(lastq == 0 || is_inuse(lastq)); /* Not 2 consecutive free */ - do_check_free_chunk(m, q); - } - lastq = q; - q = next_chunk(q); - } - s = s->next; - } - } - return sum; -} - - -/* Check all properties of malloc_state. */ -static void do_check_malloc_state(mstate m) { - bindex_t i; - size_t total; - /* check bins */ - for (i = 0; i < NSMALLBINS; ++i) - do_check_smallbin(m, i); - for (i = 0; i < NTREEBINS; ++i) - do_check_treebin(m, i); - - if (m->dvsize != 0) { /* check dv chunk */ - do_check_any_chunk(m, m->dv); - assert(m->dvsize == chunksize(m->dv)); - assert(m->dvsize >= MIN_CHUNK_SIZE); - assert(bin_find(m, m->dv) == 0); - } - - if (m->top != 0) { /* check top chunk */ - do_check_top_chunk(m, m->top); - /*assert(m->topsize == chunksize(m->top)); redundant */ - assert(m->topsize > 0); - assert(bin_find(m, m->top) == 0); - } - - total = traverse_and_check(m); - assert(total <= m->footprint); - assert(m->footprint <= m->max_footprint); -} -#endif /* DEBUG */ - -/* ----------------------------- statistics ------------------------------ */ - -#if !NO_MALLINFO -static struct mallinfo internal_mallinfo(mstate m) { - struct mallinfo nm = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - ensure_initialization(); - if (!PREACTION(m)) { - check_malloc_state(m); - if (is_initialized(m)) { - size_t nfree = SIZE_T_ONE; /* top always free */ - size_t mfree = m->topsize + TOP_FOOT_SIZE; - size_t sum = mfree; - msegmentptr s = &m->seg; - while (s != 0) { - mchunkptr q = align_as_chunk(s->base); - while (segment_holds(s, q) && - q != m->top && q->head != FENCEPOST_HEAD) { - size_t sz = chunksize(q); - sum += sz; - if (!is_inuse(q)) { - mfree += sz; - ++nfree; - } - q = next_chunk(q); - } - s = s->next; - } - - nm.arena = sum; - nm.ordblks = nfree; - nm.hblkhd = m->footprint - sum; - nm.usmblks = m->max_footprint; - nm.uordblks = m->footprint - mfree; - nm.fordblks = mfree; - nm.keepcost = m->topsize; - } - - POSTACTION(m); - } - return nm; -} -#endif /* !NO_MALLINFO */ - -#if !NO_MALLOC_STATS -static void internal_malloc_stats(mstate m) { - ensure_initialization(); - if (!PREACTION(m)) { - size_t maxfp = 0; - size_t fp = 0; - size_t used = 0; - check_malloc_state(m); - if (is_initialized(m)) { - msegmentptr s = &m->seg; - maxfp = m->max_footprint; - fp = m->footprint; - used = fp - (m->topsize + TOP_FOOT_SIZE); - - while (s != 0) { - mchunkptr q = align_as_chunk(s->base); - while (segment_holds(s, q) && - q != m->top && q->head != FENCEPOST_HEAD) { - if (!is_inuse(q)) - used -= chunksize(q); - q = next_chunk(q); - } - s = s->next; - } - } - POSTACTION(m); /* drop lock */ - fprintf(stderr, "max system bytes = %10lu\n", (unsigned long)(maxfp)); - fprintf(stderr, "system bytes = %10lu\n", (unsigned long)(fp)); - fprintf(stderr, "in use bytes = %10lu\n", (unsigned long)(used)); - } -} -#endif /* NO_MALLOC_STATS */ - -/* ----------------------- Operations on smallbins ----------------------- */ - -/* - Various forms of linking and unlinking are defined as macros. Even - the ones for trees, which are very long but have very short typical - paths. This is ugly but reduces reliance on inlining support of - compilers. -*/ - -/* Link a free chunk into a smallbin */ -#define insert_small_chunk(M, P, S) {\ - bindex_t I = small_index(S);\ - mchunkptr B = smallbin_at(M, I);\ - mchunkptr F = B;\ - assert(S >= MIN_CHUNK_SIZE);\ - if (!smallmap_is_marked(M, I))\ - mark_smallmap(M, I);\ - else if (RTCHECK(ok_address(M, B->fd)))\ - F = B->fd;\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - }\ - B->fd = P;\ - F->bk = P;\ - P->fd = F;\ - P->bk = B;\ -} - -/* Unlink a chunk from a smallbin */ -#define unlink_small_chunk(M, P, S) {\ - mchunkptr F = P->fd;\ - mchunkptr B = P->bk;\ - bindex_t I = small_index(S);\ - assert(P != B);\ - assert(P != F);\ - assert(chunksize(P) == small_index2size(I));\ - if (RTCHECK(F == smallbin_at(M,I) || (ok_address(M, F) && F->bk == P))) { \ - if (B == F) {\ - clear_smallmap(M, I);\ - }\ - else if (RTCHECK(B == smallbin_at(M,I) ||\ - (ok_address(M, B) && B->fd == P))) {\ - F->bk = B;\ - B->fd = F;\ - }\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - }\ - }\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - }\ -} - -/* Unlink the first chunk from a smallbin */ -#define unlink_first_small_chunk(M, B, P, I) {\ - mchunkptr F = P->fd;\ - assert(P != B);\ - assert(P != F);\ - assert(chunksize(P) == small_index2size(I));\ - if (B == F) {\ - clear_smallmap(M, I);\ - }\ - else if (RTCHECK(ok_address(M, F) && F->bk == P)) {\ - F->bk = B;\ - B->fd = F;\ - }\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - }\ -} - -/* Replace dv node, binning the old one */ -/* Used only when dvsize known to be small */ -#define replace_dv(M, P, S) {\ - size_t DVS = M->dvsize;\ - assert(is_small(DVS));\ - if (DVS != 0) {\ - mchunkptr DV = M->dv;\ - insert_small_chunk(M, DV, DVS);\ - }\ - M->dvsize = S;\ - M->dv = P;\ -} - -/* ------------------------- Operations on trees ------------------------- */ - -/* Insert chunk into tree */ -#define insert_large_chunk(M, X, S) {\ - tbinptr* H;\ - bindex_t I;\ - compute_tree_index(S, I);\ - H = treebin_at(M, I);\ - X->index = I;\ - X->child[0] = X->child[1] = 0;\ - if (!treemap_is_marked(M, I)) {\ - mark_treemap(M, I);\ - *H = X;\ - X->parent = (tchunkptr)H;\ - X->fd = X->bk = X;\ - }\ - else {\ - tchunkptr T = *H;\ - size_t K = S << leftshift_for_tree_index(I);\ - for (;;) {\ - if (chunksize(T) != S) {\ - tchunkptr* C = &(T->child[(K >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]);\ - K <<= 1;\ - if (*C != 0)\ - T = *C;\ - else if (RTCHECK(ok_address(M, C))) {\ - *C = X;\ - X->parent = T;\ - X->fd = X->bk = X;\ - break;\ - }\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - break;\ - }\ - }\ - else {\ - tchunkptr F = T->fd;\ - if (RTCHECK(ok_address(M, T) && ok_address(M, F))) {\ - T->fd = F->bk = X;\ - X->fd = F;\ - X->bk = T;\ - X->parent = 0;\ - break;\ - }\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - break;\ - }\ - }\ - }\ - }\ -} - -/* - Unlink steps: - - 1. If x is a chained node, unlink it from its same-sized fd/bk links - and choose its bk node as its replacement. - 2. If x was the last node of its size, but not a leaf node, it must - be replaced with a leaf node (not merely one with an open left or - right), to make sure that lefts and rights of descendents - correspond properly to bit masks. We use the rightmost descendent - of x. We could use any other leaf, but this is easy to locate and - tends to counteract removal of leftmosts elsewhere, and so keeps - paths shorter than minimally guaranteed. This doesn't loop much - because on average a node in a tree is near the bottom. - 3. If x is the base of a chain (i.e., has parent links) relink - x's parent and children to x's replacement (or null if none). -*/ - -#define unlink_large_chunk(M, X) {\ - tchunkptr XP = X->parent;\ - tchunkptr R;\ - if (X->bk != X) {\ - tchunkptr F = X->fd;\ - R = X->bk;\ - if (RTCHECK(ok_address(M, F) && F->bk == X && R->fd == X)) {\ - F->bk = R;\ - R->fd = F;\ - }\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - }\ - }\ - else {\ - tchunkptr* RP;\ - if (((R = *(RP = &(X->child[1]))) != 0) ||\ - ((R = *(RP = &(X->child[0]))) != 0)) {\ - tchunkptr* CP;\ - while ((*(CP = &(R->child[1])) != 0) ||\ - (*(CP = &(R->child[0])) != 0)) {\ - R = *(RP = CP);\ - }\ - if (RTCHECK(ok_address(M, RP)))\ - *RP = 0;\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - }\ - }\ - }\ - if (XP != 0) {\ - tbinptr* H = treebin_at(M, X->index);\ - if (X == *H) {\ - if ((*H = R) == 0) \ - clear_treemap(M, X->index);\ - }\ - else if (RTCHECK(ok_address(M, XP))) {\ - if (XP->child[0] == X) \ - XP->child[0] = R;\ - else \ - XP->child[1] = R;\ - }\ - else\ - CORRUPTION_ERROR_ACTION(M);\ - if (R != 0) {\ - if (RTCHECK(ok_address(M, R))) {\ - tchunkptr C0, C1;\ - R->parent = XP;\ - if ((C0 = X->child[0]) != 0) {\ - if (RTCHECK(ok_address(M, C0))) {\ - R->child[0] = C0;\ - C0->parent = R;\ - }\ - else\ - CORRUPTION_ERROR_ACTION(M);\ - }\ - if ((C1 = X->child[1]) != 0) {\ - if (RTCHECK(ok_address(M, C1))) {\ - R->child[1] = C1;\ - C1->parent = R;\ - }\ - else\ - CORRUPTION_ERROR_ACTION(M);\ - }\ - }\ - else\ - CORRUPTION_ERROR_ACTION(M);\ - }\ - }\ -} - -/* Relays to large vs small bin operations */ - -#define insert_chunk(M, P, S)\ - if (is_small(S)) insert_small_chunk(M, P, S)\ - else { tchunkptr TP = (tchunkptr)(P); insert_large_chunk(M, TP, S); } - -#define unlink_chunk(M, P, S)\ - if (is_small(S)) unlink_small_chunk(M, P, S)\ - else { tchunkptr TP = (tchunkptr)(P); unlink_large_chunk(M, TP); } - - -/* Relays to internal calls to malloc/free from realloc, memalign etc */ - -#if ONLY_MSPACES -#define internal_malloc(m, b) mspace_malloc(m, b) -#define internal_free(m, mem) mspace_free(m,mem); -#else /* ONLY_MSPACES */ -#if MSPACES -#define internal_malloc(m, b)\ - ((m == gm)? dlmalloc(b) : mspace_malloc(m, b)) -#define internal_free(m, mem)\ - if (m == gm) dlfree(mem); else mspace_free(m,mem); -#else /* MSPACES */ -#define internal_malloc(m, b) dlmalloc(b) -#define internal_free(m, mem) dlfree(mem) -#endif /* MSPACES */ -#endif /* ONLY_MSPACES */ - -/* ----------------------- Direct-mmapping chunks ----------------------- */ - -/* - Directly mmapped chunks are set up with an offset to the start of - the mmapped region stored in the prev_foot field of the chunk. This - allows reconstruction of the required argument to MUNMAP when freed, - and also allows adjustment of the returned chunk to meet alignment - requirements (especially in memalign). -*/ - -/* Malloc using mmap */ -static void* mmap_alloc(mstate m, size_t nb) { - size_t mmsize = mmap_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK); - if (m->footprint_limit != 0) { - size_t fp = m->footprint + mmsize; - if (fp <= m->footprint || fp > m->footprint_limit) - return 0; - } - if (mmsize > nb) { /* Check for wrap around 0 */ - char* mm = (char*)(CALL_DIRECT_MMAP(mmsize)); - if (mm != CMFAIL) { - size_t offset = align_offset(chunk2mem(mm)); - size_t psize = mmsize - offset - MMAP_FOOT_PAD; - mchunkptr p = (mchunkptr)(mm + offset); - p->prev_foot = offset; - p->head = psize; - mark_inuse_foot(m, p, psize); - chunk_plus_offset(p, psize)->head = FENCEPOST_HEAD; - chunk_plus_offset(p, psize+SIZE_T_SIZE)->head = 0; - - if (m->least_addr == 0 || mm < m->least_addr) - m->least_addr = mm; - if ((m->footprint += mmsize) > m->max_footprint) - m->max_footprint = m->footprint; - assert(is_aligned(chunk2mem(p))); - check_mmapped_chunk(m, p); - return chunk2mem(p); - } - } - return 0; -} - -/* Realloc using mmap */ -static mchunkptr mmap_resize(mstate m, mchunkptr oldp, size_t nb, int flags) { - size_t oldsize = chunksize(oldp); - (void)flags; /* placate people compiling -Wunused */ - if (is_small(nb)) /* Can't shrink mmap regions below small size */ - return 0; - /* Keep old chunk if big enough but not too big */ - if (oldsize >= nb + SIZE_T_SIZE && - (oldsize - nb) <= (mparams.granularity << 1)) - return oldp; - else { - size_t offset = oldp->prev_foot; - size_t oldmmsize = oldsize + offset + MMAP_FOOT_PAD; - size_t newmmsize = mmap_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK); - char* cp = (char*)CALL_MREMAP((char*)oldp - offset, - oldmmsize, newmmsize, flags); - if (cp != CMFAIL) { - mchunkptr newp = (mchunkptr)(cp + offset); - size_t psize = newmmsize - offset - MMAP_FOOT_PAD; - newp->head = psize; - mark_inuse_foot(m, newp, psize); - chunk_plus_offset(newp, psize)->head = FENCEPOST_HEAD; - chunk_plus_offset(newp, psize+SIZE_T_SIZE)->head = 0; - - if (cp < m->least_addr) - m->least_addr = cp; - if ((m->footprint += newmmsize - oldmmsize) > m->max_footprint) - m->max_footprint = m->footprint; - check_mmapped_chunk(m, newp); - return newp; - } - } - return 0; -} - - -/* -------------------------- mspace management -------------------------- */ - -/* Initialize top chunk and its size */ -static void init_top(mstate m, mchunkptr p, size_t psize) { - /* Ensure alignment */ - size_t offset = align_offset(chunk2mem(p)); - p = (mchunkptr)((char*)p + offset); - psize -= offset; - - m->top = p; - m->topsize = psize; - p->head = psize | PINUSE_BIT; - /* set size of fake trailing chunk holding overhead space only once */ - chunk_plus_offset(p, psize)->head = TOP_FOOT_SIZE; - m->trim_check = mparams.trim_threshold; /* reset on each update */ -} - -/* Initialize bins for a new mstate that is otherwise zeroed out */ -static void init_bins(mstate m) { - /* Establish circular links for smallbins */ - bindex_t i; - for (i = 0; i < NSMALLBINS; ++i) { - sbinptr bin = smallbin_at(m,i); - bin->fd = bin->bk = bin; - } -} - -#if PROCEED_ON_ERROR - -/* default corruption action */ -static void reset_on_error(mstate m) { - int i; - ++malloc_corruption_error_count; - /* Reinitialize fields to forget about all memory */ - m->smallmap = m->treemap = 0; - m->dvsize = m->topsize = 0; - m->seg.base = 0; - m->seg.size = 0; - m->seg.next = 0; - m->top = m->dv = 0; - for (i = 0; i < NTREEBINS; ++i) - *treebin_at(m, i) = 0; - init_bins(m); -} -#endif /* PROCEED_ON_ERROR */ - -/* Allocate chunk and prepend remainder with chunk in successor base. */ -static void* prepend_alloc(mstate m, char* newbase, char* oldbase, - size_t nb) { - mchunkptr p = align_as_chunk(newbase); - mchunkptr oldfirst = align_as_chunk(oldbase); - size_t psize = (char*)oldfirst - (char*)p; - mchunkptr q = chunk_plus_offset(p, nb); - size_t qsize = psize - nb; - set_size_and_pinuse_of_inuse_chunk(m, p, nb); - - assert((char*)oldfirst > (char*)q); - assert(pinuse(oldfirst)); - assert(qsize >= MIN_CHUNK_SIZE); - - /* consolidate remainder with first chunk of old base */ - if (oldfirst == m->top) { - size_t tsize = m->topsize += qsize; - m->top = q; - q->head = tsize | PINUSE_BIT; - check_top_chunk(m, q); - } - else if (oldfirst == m->dv) { - size_t dsize = m->dvsize += qsize; - m->dv = q; - set_size_and_pinuse_of_free_chunk(q, dsize); - } - else { - if (!is_inuse(oldfirst)) { - size_t nsize = chunksize(oldfirst); - unlink_chunk(m, oldfirst, nsize); - oldfirst = chunk_plus_offset(oldfirst, nsize); - qsize += nsize; - } - set_free_with_pinuse(q, qsize, oldfirst); - insert_chunk(m, q, qsize); - check_free_chunk(m, q); - } - - check_malloced_chunk(m, chunk2mem(p), nb); - return chunk2mem(p); -} - -/* Add a segment to hold a new noncontiguous region */ -static void add_segment(mstate m, char* tbase, size_t tsize, flag_t mmapped) { - /* Determine locations and sizes of segment, fenceposts, old top */ - char* old_top = (char*)m->top; - msegmentptr oldsp = segment_holding(m, old_top); - char* old_end = oldsp->base + oldsp->size; - size_t ssize = pad_request(sizeof(struct malloc_segment)); - char* rawsp = old_end - (ssize + FOUR_SIZE_T_SIZES + CHUNK_ALIGN_MASK); - size_t offset = align_offset(chunk2mem(rawsp)); - char* asp = rawsp + offset; - char* csp = (asp < (old_top + MIN_CHUNK_SIZE))? old_top : asp; - mchunkptr sp = (mchunkptr)csp; - msegmentptr ss = (msegmentptr)(chunk2mem(sp)); - mchunkptr tnext = chunk_plus_offset(sp, ssize); - mchunkptr p = tnext; -#if DEBUG - int nfences = 0; -#endif - - /* reset top to new space */ - init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); - - /* Set up segment record */ - assert(is_aligned(ss)); - set_size_and_pinuse_of_inuse_chunk(m, sp, ssize); - *ss = m->seg; /* Push current record */ - m->seg.base = tbase; - m->seg.size = tsize; - m->seg.sflags = mmapped; - m->seg.next = ss; - - /* Insert trailing fenceposts */ - for (;;) { - mchunkptr nextp = chunk_plus_offset(p, SIZE_T_SIZE); - p->head = FENCEPOST_HEAD; -#if DEBUG - ++nfences; -#endif - if ((char*)(&(nextp->head)) < old_end) - p = nextp; - else - break; - } -#if DEBUG - assert(nfences >= 2); -#endif - - /* Insert the rest of old top into a bin as an ordinary free chunk */ - if (csp != old_top) { - mchunkptr q = (mchunkptr)old_top; - size_t psize = csp - old_top; - mchunkptr tn = chunk_plus_offset(q, psize); - set_free_with_pinuse(q, psize, tn); - insert_chunk(m, q, psize); - } - - check_top_chunk(m, m->top); -} - -/* -------------------------- System allocation -------------------------- */ - -/* Get memory from system using MORECORE or MMAP */ -static void* sys_alloc(mstate m, size_t nb) { - char* tbase = CMFAIL; - size_t tsize = 0; - flag_t mmap_flag = 0; - size_t asize; /* allocation size */ - - ensure_initialization(); - - /* Directly map large chunks, but only if already initialized */ - if (use_mmap(m) && nb >= mparams.mmap_threshold && m->topsize != 0) { - void* mem = mmap_alloc(m, nb); - if (mem != 0) - return mem; - } - - asize = granularity_align(nb + SYS_ALLOC_PADDING); -#ifdef __wasilibc_unmodified_upstream // Bug fix: set ENOMEM on size overflow - if (asize <= nb) - return 0; /* wraparound */ -#else - if (asize <= nb) { - MALLOC_FAILURE_ACTION; - return 0; /* wraparound */ - } -#endif - if (m->footprint_limit != 0) { - size_t fp = m->footprint + asize; -#ifdef __wasilibc_unmodified_upstream // Bug fix: set ENOMEM on footprint overrun - if (fp <= m->footprint || fp > m->footprint_limit) - return 0; -#else - if (fp <= m->footprint || fp > m->footprint_limit) { - MALLOC_FAILURE_ACTION; - return 0; - } -#endif - } - - /* - Try getting memory in any of three ways (in most-preferred to - least-preferred order): - 1. A call to MORECORE that can normally contiguously extend memory. - (disabled if not MORECORE_CONTIGUOUS or not HAVE_MORECORE or - or main space is mmapped or a previous contiguous call failed) - 2. A call to MMAP new space (disabled if not HAVE_MMAP). - Note that under the default settings, if MORECORE is unable to - fulfill a request, and HAVE_MMAP is true, then mmap is - used as a noncontiguous system allocator. This is a useful backup - strategy for systems with holes in address spaces -- in this case - sbrk cannot contiguously expand the heap, but mmap may be able to - find space. - 3. A call to MORECORE that cannot usually contiguously extend memory. - (disabled if not HAVE_MORECORE) - - In all cases, we need to request enough bytes from system to ensure - we can malloc nb bytes upon success, so pad with enough space for - top_foot, plus alignment-pad to make sure we don't lose bytes if - not on boundary, and round this up to a granularity unit. - */ - - if (MORECORE_CONTIGUOUS && !use_noncontiguous(m)) { - char* br = CMFAIL; - size_t ssize = asize; /* sbrk call size */ - msegmentptr ss = (m->top == 0)? 0 : segment_holding(m, (char*)m->top); - ACQUIRE_MALLOC_GLOBAL_LOCK(); - - if (ss == 0) { /* First time through or recovery */ - char* base = (char*)CALL_MORECORE(0); - if (base != CMFAIL) { - size_t fp; - /* Adjust to end on a page boundary */ - if (!is_page_aligned(base)) - ssize += (page_align((size_t)base) - (size_t)base); - fp = m->footprint + ssize; /* recheck limits */ - if (ssize > nb && ssize < HALF_MAX_SIZE_T && - (m->footprint_limit == 0 || - (fp > m->footprint && fp <= m->footprint_limit)) && - (br = (char*)(CALL_MORECORE(ssize))) == base) { - tbase = base; - tsize = ssize; - } - } - } - else { - /* Subtract out existing available top space from MORECORE request. */ - ssize = granularity_align(nb - m->topsize + SYS_ALLOC_PADDING); - /* Use mem here only if it did continuously extend old space */ - if (ssize < HALF_MAX_SIZE_T && - (br = (char*)(CALL_MORECORE(ssize))) == ss->base+ss->size) { - tbase = br; - tsize = ssize; - } - } - - if (tbase == CMFAIL) { /* Cope with partial failure */ - if (br != CMFAIL) { /* Try to use/extend the space we did get */ - if (ssize < HALF_MAX_SIZE_T && - ssize < nb + SYS_ALLOC_PADDING) { - size_t esize = granularity_align(nb + SYS_ALLOC_PADDING - ssize); - if (esize < HALF_MAX_SIZE_T) { - char* end = (char*)CALL_MORECORE(esize); - if (end != CMFAIL) - ssize += esize; - else { /* Can't use; try to release */ - (void) CALL_MORECORE(-ssize); - br = CMFAIL; - } - } - } - } - if (br != CMFAIL) { /* Use the space we did get */ - tbase = br; - tsize = ssize; - } - else - disable_contiguous(m); /* Don't try contiguous path in the future */ - } - - RELEASE_MALLOC_GLOBAL_LOCK(); - } - - if (HAVE_MMAP && tbase == CMFAIL) { /* Try MMAP */ - char* mp = (char*)(CALL_MMAP(asize)); - if (mp != CMFAIL) { - tbase = mp; - tsize = asize; - mmap_flag = USE_MMAP_BIT; - } - } - - if (HAVE_MORECORE && tbase == CMFAIL) { /* Try noncontiguous MORECORE */ - if (asize < HALF_MAX_SIZE_T) { - char* br = CMFAIL; - char* end = CMFAIL; - ACQUIRE_MALLOC_GLOBAL_LOCK(); - br = (char*)(CALL_MORECORE(asize)); - end = (char*)(CALL_MORECORE(0)); - RELEASE_MALLOC_GLOBAL_LOCK(); - if (br != CMFAIL && end != CMFAIL && br < end) { - size_t ssize = end - br; - if (ssize > nb + TOP_FOOT_SIZE) { - tbase = br; - tsize = ssize; - } - } - } - } - - if (tbase != CMFAIL) { - - if ((m->footprint += tsize) > m->max_footprint) - m->max_footprint = m->footprint; - - if (!is_initialized(m)) { /* first-time initialization */ - if (m->least_addr == 0 || tbase < m->least_addr) - m->least_addr = tbase; - m->seg.base = tbase; - m->seg.size = tsize; - m->seg.sflags = mmap_flag; - m->magic = mparams.magic; - m->release_checks = MAX_RELEASE_CHECK_RATE; - init_bins(m); -#if !ONLY_MSPACES - if (is_global(m)) - init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); - else -#endif - { - /* Offset top by embedded malloc_state */ - mchunkptr mn = next_chunk(mem2chunk(m)); - init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) -TOP_FOOT_SIZE); - } - } - - else { - /* Try to merge with an existing segment */ - msegmentptr sp = &m->seg; - /* Only consider most recent segment if traversal suppressed */ - while (sp != 0 && tbase != sp->base + sp->size) - sp = (NO_SEGMENT_TRAVERSAL) ? 0 : sp->next; - if (sp != 0 && - !is_extern_segment(sp) && - (sp->sflags & USE_MMAP_BIT) == mmap_flag && - segment_holds(sp, m->top)) { /* append */ - sp->size += tsize; - init_top(m, m->top, m->topsize + tsize); - } - else { - if (tbase < m->least_addr) - m->least_addr = tbase; - sp = &m->seg; - while (sp != 0 && sp->base != tbase + tsize) - sp = (NO_SEGMENT_TRAVERSAL) ? 0 : sp->next; - if (sp != 0 && - !is_extern_segment(sp) && - (sp->sflags & USE_MMAP_BIT) == mmap_flag) { - char* oldbase = sp->base; - sp->base = tbase; - sp->size += tsize; - return prepend_alloc(m, tbase, oldbase, nb); - } - else - add_segment(m, tbase, tsize, mmap_flag); - } - } - - if (nb < m->topsize) { /* Allocate from new or extended top space */ - size_t rsize = m->topsize -= nb; - mchunkptr p = m->top; - mchunkptr r = m->top = chunk_plus_offset(p, nb); - r->head = rsize | PINUSE_BIT; - set_size_and_pinuse_of_inuse_chunk(m, p, nb); - check_top_chunk(m, m->top); - check_malloced_chunk(m, chunk2mem(p), nb); - return chunk2mem(p); - } - } - - MALLOC_FAILURE_ACTION; - return 0; -} - -/* ----------------------- system deallocation -------------------------- */ - -/* Unmap and unlink any mmapped segments that don't contain used chunks */ -static size_t release_unused_segments(mstate m) { - size_t released = 0; - int nsegs = 0; - msegmentptr pred = &m->seg; - msegmentptr sp = pred->next; - while (sp != 0) { - char* base = sp->base; - size_t size = sp->size; - msegmentptr next = sp->next; - ++nsegs; - if (is_mmapped_segment(sp) && !is_extern_segment(sp)) { - mchunkptr p = align_as_chunk(base); - size_t psize = chunksize(p); - /* Can unmap if first chunk holds entire segment and not pinned */ - if (!is_inuse(p) && (char*)p + psize >= base + size - TOP_FOOT_SIZE) { - tchunkptr tp = (tchunkptr)p; - assert(segment_holds(sp, (char*)sp)); - if (p == m->dv) { - m->dv = 0; - m->dvsize = 0; - } - else { - unlink_large_chunk(m, tp); - } - if (CALL_MUNMAP(base, size) == 0) { - released += size; - m->footprint -= size; - /* unlink obsoleted record */ - sp = pred; - sp->next = next; - } - else { /* back out if cannot unmap */ - insert_large_chunk(m, tp, psize); - } - } - } - if (NO_SEGMENT_TRAVERSAL) /* scan only first segment */ - break; - pred = sp; - sp = next; - } - /* Reset check counter */ - m->release_checks = (((size_t) nsegs > (size_t) MAX_RELEASE_CHECK_RATE)? - (size_t) nsegs : (size_t) MAX_RELEASE_CHECK_RATE); - return released; -} - -static int sys_trim(mstate m, size_t pad) { - size_t released = 0; - ensure_initialization(); - if (pad < MAX_REQUEST && is_initialized(m)) { - pad += TOP_FOOT_SIZE; /* ensure enough room for segment overhead */ - - if (m->topsize > pad) { - /* Shrink top space in granularity-size units, keeping at least one */ - size_t unit = mparams.granularity; - size_t extra = ((m->topsize - pad + (unit - SIZE_T_ONE)) / unit - - SIZE_T_ONE) * unit; - msegmentptr sp = segment_holding(m, (char*)m->top); - - if (!is_extern_segment(sp)) { - if (is_mmapped_segment(sp)) { - if (HAVE_MMAP && - sp->size >= extra && - !has_segment_link(m, sp)) { /* can't shrink if pinned */ - size_t newsize = sp->size - extra; - (void)newsize; /* placate people compiling -Wunused-variable */ - /* Prefer mremap, fall back to munmap */ - if ((CALL_MREMAP(sp->base, sp->size, newsize, 0) != MFAIL) || - (CALL_MUNMAP(sp->base + newsize, extra) == 0)) { - released = extra; - } - } - } - else if (HAVE_MORECORE) { - if (extra >= HALF_MAX_SIZE_T) /* Avoid wrapping negative */ - extra = (HALF_MAX_SIZE_T) + SIZE_T_ONE - unit; - ACQUIRE_MALLOC_GLOBAL_LOCK(); - { - /* Make sure end of memory is where we last set it. */ - char* old_br = (char*)(CALL_MORECORE(0)); - if (old_br == sp->base + sp->size) { - char* rel_br = (char*)(CALL_MORECORE(-extra)); - char* new_br = (char*)(CALL_MORECORE(0)); - if (rel_br != CMFAIL && new_br < old_br) - released = old_br - new_br; - } - } - RELEASE_MALLOC_GLOBAL_LOCK(); - } - } - - if (released != 0) { - sp->size -= released; - m->footprint -= released; - init_top(m, m->top, m->topsize - released); - check_top_chunk(m, m->top); - } - } - - /* Unmap any unused mmapped segments */ - if (HAVE_MMAP) - released += release_unused_segments(m); - - /* On failure, disable autotrim to avoid repeated failed future calls */ - if (released == 0 && m->topsize > m->trim_check) - m->trim_check = MAX_SIZE_T; - } - - return (released != 0)? 1 : 0; -} - -/* Consolidate and bin a chunk. Differs from exported versions - of free mainly in that the chunk need not be marked as inuse. -*/ -static void dispose_chunk(mstate m, mchunkptr p, size_t psize) { - mchunkptr next = chunk_plus_offset(p, psize); - if (!pinuse(p)) { - mchunkptr prev; - size_t prevsize = p->prev_foot; - if (is_mmapped(p)) { - psize += prevsize + MMAP_FOOT_PAD; - if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) - m->footprint -= psize; - return; - } - prev = chunk_minus_offset(p, prevsize); - psize += prevsize; - p = prev; - if (RTCHECK(ok_address(m, prev))) { /* consolidate backward */ - if (p != m->dv) { - unlink_chunk(m, p, prevsize); - } - else if ((next->head & INUSE_BITS) == INUSE_BITS) { - m->dvsize = psize; - set_free_with_pinuse(p, psize, next); - return; - } - } - else { - CORRUPTION_ERROR_ACTION(m); - return; - } - } - if (RTCHECK(ok_address(m, next))) { - if (!cinuse(next)) { /* consolidate forward */ - if (next == m->top) { - size_t tsize = m->topsize += psize; - m->top = p; - p->head = tsize | PINUSE_BIT; - if (p == m->dv) { - m->dv = 0; - m->dvsize = 0; - } - return; - } - else if (next == m->dv) { - size_t dsize = m->dvsize += psize; - m->dv = p; - set_size_and_pinuse_of_free_chunk(p, dsize); - return; - } - else { - size_t nsize = chunksize(next); - psize += nsize; - unlink_chunk(m, next, nsize); - set_size_and_pinuse_of_free_chunk(p, psize); - if (p == m->dv) { - m->dvsize = psize; - return; - } - } - } - else { - set_free_with_pinuse(p, psize, next); - } - insert_chunk(m, p, psize); - } - else { - CORRUPTION_ERROR_ACTION(m); - } -} - -/* ---------------------------- malloc --------------------------- */ - -/* allocate a large request from the best fitting chunk in a treebin */ -static void* tmalloc_large(mstate m, size_t nb) { - tchunkptr v = 0; - size_t rsize = -nb; /* Unsigned negation */ - tchunkptr t; - bindex_t idx; - compute_tree_index(nb, idx); - if ((t = *treebin_at(m, idx)) != 0) { - /* Traverse tree for this bin looking for node with size == nb */ - size_t sizebits = nb << leftshift_for_tree_index(idx); - tchunkptr rst = 0; /* The deepest untaken right subtree */ - for (;;) { - tchunkptr rt; - size_t trem = chunksize(t) - nb; - if (trem < rsize) { - v = t; - if ((rsize = trem) == 0) - break; - } - rt = t->child[1]; - t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; - if (rt != 0 && rt != t) - rst = rt; - if (t == 0) { - t = rst; /* set t to least subtree holding sizes > nb */ - break; - } - sizebits <<= 1; - } - } - if (t == 0 && v == 0) { /* set t to root of next non-empty treebin */ - binmap_t leftbits = left_bits(idx2bit(idx)) & m->treemap; - if (leftbits != 0) { - bindex_t i; - binmap_t leastbit = least_bit(leftbits); - compute_bit2idx(leastbit, i); - t = *treebin_at(m, i); - } - } - - while (t != 0) { /* find smallest of tree or subtree */ - size_t trem = chunksize(t) - nb; - if (trem < rsize) { - rsize = trem; - v = t; - } - t = leftmost_child(t); - } - - /* If dv is a better fit, return 0 so malloc will use it */ - if (v != 0 && rsize < (size_t)(m->dvsize - nb)) { - if (RTCHECK(ok_address(m, v))) { /* split */ - mchunkptr r = chunk_plus_offset(v, nb); - assert(chunksize(v) == rsize + nb); - if (RTCHECK(ok_next(v, r))) { - unlink_large_chunk(m, v); - if (rsize < MIN_CHUNK_SIZE) - set_inuse_and_pinuse(m, v, (rsize + nb)); - else { - set_size_and_pinuse_of_inuse_chunk(m, v, nb); - set_size_and_pinuse_of_free_chunk(r, rsize); - insert_chunk(m, r, rsize); - } - return chunk2mem(v); - } - } - CORRUPTION_ERROR_ACTION(m); - } - return 0; -} - -/* allocate a small request from the best fitting chunk in a treebin */ -static void* tmalloc_small(mstate m, size_t nb) { - tchunkptr t, v; - size_t rsize; - bindex_t i; - binmap_t leastbit = least_bit(m->treemap); - compute_bit2idx(leastbit, i); - v = t = *treebin_at(m, i); - rsize = chunksize(t) - nb; - - while ((t = leftmost_child(t)) != 0) { - size_t trem = chunksize(t) - nb; - if (trem < rsize) { - rsize = trem; - v = t; - } - } - - if (RTCHECK(ok_address(m, v))) { - mchunkptr r = chunk_plus_offset(v, nb); - assert(chunksize(v) == rsize + nb); - if (RTCHECK(ok_next(v, r))) { - unlink_large_chunk(m, v); - if (rsize < MIN_CHUNK_SIZE) - set_inuse_and_pinuse(m, v, (rsize + nb)); - else { - set_size_and_pinuse_of_inuse_chunk(m, v, nb); - set_size_and_pinuse_of_free_chunk(r, rsize); - replace_dv(m, r, rsize); - } - return chunk2mem(v); - } - } - - CORRUPTION_ERROR_ACTION(m); - return 0; -} - -#if !ONLY_MSPACES - -#if __wasilibc_unmodified_upstream // Forward declaration of try_init_allocator. -#else -static void try_init_allocator(void); -#endif - -void* dlmalloc(size_t bytes) { - /* - Basic algorithm: - If a small request (< 256 bytes minus per-chunk overhead): - 1. If one exists, use a remainderless chunk in associated smallbin. - (Remainderless means that there are too few excess bytes to - represent as a chunk.) - 2. If it is big enough, use the dv chunk, which is normally the - chunk adjacent to the one used for the most recent small request. - 3. If one exists, split the smallest available chunk in a bin, - saving remainder in dv. - 4. If it is big enough, use the top chunk. - 5. If available, get memory from system and use it - Otherwise, for a large request: - 1. Find the smallest available binned chunk that fits, and use it - if it is better fitting than dv chunk, splitting if necessary. - 2. If better fitting than any binned chunk, use the dv chunk. - 3. If it is big enough, use the top chunk. - 4. If request size >= mmap threshold, try to directly mmap this chunk. - 5. If available, get memory from system and use it - - The ugly goto's here ensure that postaction occurs along all paths. - */ - -#if USE_LOCKS - ensure_initialization(); /* initialize in sys_alloc if not using locks */ -#endif - - if (!PREACTION(gm)) { -#if __wasilibc_unmodified_upstream // Try to initialize the allocator. -#else - if (!is_initialized(gm)) { - try_init_allocator(); - } -#endif - - void* mem; - size_t nb; - if (bytes <= MAX_SMALL_REQUEST) { - bindex_t idx; - binmap_t smallbits; - nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); - idx = small_index(nb); - smallbits = gm->smallmap >> idx; - - if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ - mchunkptr b, p; - idx += ~smallbits & 1; /* Uses next bin if idx empty */ - b = smallbin_at(gm, idx); - p = b->fd; - assert(chunksize(p) == small_index2size(idx)); - unlink_first_small_chunk(gm, b, p, idx); - set_inuse_and_pinuse(gm, p, small_index2size(idx)); - mem = chunk2mem(p); - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - - else if (nb > gm->dvsize) { - if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ - mchunkptr b, p, r; - size_t rsize; - bindex_t i; - binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); - binmap_t leastbit = least_bit(leftbits); - compute_bit2idx(leastbit, i); - b = smallbin_at(gm, i); - p = b->fd; - assert(chunksize(p) == small_index2size(i)); - unlink_first_small_chunk(gm, b, p, i); - rsize = small_index2size(i) - nb; - /* Fit here cannot be remainderless if 4byte sizes */ - if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) - set_inuse_and_pinuse(gm, p, small_index2size(i)); - else { - set_size_and_pinuse_of_inuse_chunk(gm, p, nb); - r = chunk_plus_offset(p, nb); - set_size_and_pinuse_of_free_chunk(r, rsize); - replace_dv(gm, r, rsize); - } - mem = chunk2mem(p); - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - - else if (gm->treemap != 0 && (mem = tmalloc_small(gm, nb)) != 0) { - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - } - } - else if (bytes >= MAX_REQUEST) - nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ - else { - nb = pad_request(bytes); - if (gm->treemap != 0 && (mem = tmalloc_large(gm, nb)) != 0) { - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - } - - if (nb <= gm->dvsize) { - size_t rsize = gm->dvsize - nb; - mchunkptr p = gm->dv; - if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ - mchunkptr r = gm->dv = chunk_plus_offset(p, nb); - gm->dvsize = rsize; - set_size_and_pinuse_of_free_chunk(r, rsize); - set_size_and_pinuse_of_inuse_chunk(gm, p, nb); - } - else { /* exhaust dv */ - size_t dvs = gm->dvsize; - gm->dvsize = 0; - gm->dv = 0; - set_inuse_and_pinuse(gm, p, dvs); - } - mem = chunk2mem(p); - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - - else if (nb < gm->topsize) { /* Split top */ - size_t rsize = gm->topsize -= nb; - mchunkptr p = gm->top; - mchunkptr r = gm->top = chunk_plus_offset(p, nb); - r->head = rsize | PINUSE_BIT; - set_size_and_pinuse_of_inuse_chunk(gm, p, nb); - mem = chunk2mem(p); - check_top_chunk(gm, gm->top); - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - - mem = sys_alloc(gm, nb); - - postaction: - POSTACTION(gm); - return mem; - } - - return 0; -} - -/* ---------------------------- free --------------------------- */ - -void dlfree(void* mem) { - /* - Consolidate freed chunks with preceeding or succeeding bordering - free chunks, if they exist, and then place in a bin. Intermixed - with special cases for top, dv, mmapped chunks, and usage errors. - */ - - if (mem != 0) { - mchunkptr p = mem2chunk(mem); -#if FOOTERS - mstate fm = get_mstate_for(p); - if (!ok_magic(fm)) { - USAGE_ERROR_ACTION(fm, p); - return; - } -#else /* FOOTERS */ -#define fm gm -#endif /* FOOTERS */ - if (!PREACTION(fm)) { - check_inuse_chunk(fm, p); - if (RTCHECK(ok_address(fm, p) && ok_inuse(p))) { - size_t psize = chunksize(p); - mchunkptr next = chunk_plus_offset(p, psize); - if (!pinuse(p)) { - size_t prevsize = p->prev_foot; - if (is_mmapped(p)) { - psize += prevsize + MMAP_FOOT_PAD; - if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) - fm->footprint -= psize; - goto postaction; - } - else { - mchunkptr prev = chunk_minus_offset(p, prevsize); - psize += prevsize; - p = prev; - if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ - if (p != fm->dv) { - unlink_chunk(fm, p, prevsize); - } - else if ((next->head & INUSE_BITS) == INUSE_BITS) { - fm->dvsize = psize; - set_free_with_pinuse(p, psize, next); - goto postaction; - } - } - else - goto erroraction; - } - } - - if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { - if (!cinuse(next)) { /* consolidate forward */ - if (next == fm->top) { - size_t tsize = fm->topsize += psize; - fm->top = p; - p->head = tsize | PINUSE_BIT; - if (p == fm->dv) { - fm->dv = 0; - fm->dvsize = 0; - } - if (should_trim(fm, tsize)) - sys_trim(fm, 0); - goto postaction; - } - else if (next == fm->dv) { - size_t dsize = fm->dvsize += psize; - fm->dv = p; - set_size_and_pinuse_of_free_chunk(p, dsize); - goto postaction; - } - else { - size_t nsize = chunksize(next); - psize += nsize; - unlink_chunk(fm, next, nsize); - set_size_and_pinuse_of_free_chunk(p, psize); - if (p == fm->dv) { - fm->dvsize = psize; - goto postaction; - } - } - } - else - set_free_with_pinuse(p, psize, next); - - if (is_small(psize)) { - insert_small_chunk(fm, p, psize); - check_free_chunk(fm, p); - } - else { - tchunkptr tp = (tchunkptr)p; - insert_large_chunk(fm, tp, psize); - check_free_chunk(fm, p); - if (--fm->release_checks == 0) - release_unused_segments(fm); - } - goto postaction; - } - } - erroraction: - USAGE_ERROR_ACTION(fm, p); - postaction: - POSTACTION(fm); - } - } -#if !FOOTERS -#undef fm -#endif /* FOOTERS */ -} - -void* dlcalloc(size_t n_elements, size_t elem_size) { - void* mem; - size_t req = 0; - if (n_elements != 0) { - req = n_elements * elem_size; - if (((n_elements | elem_size) & ~(size_t)0xffff) && - (req / n_elements != elem_size)) - req = MAX_SIZE_T; /* force downstream failure on overflow */ - } - mem = dlmalloc(req); - if (mem != 0 && calloc_must_clear(mem2chunk(mem))) - memset(mem, 0, req); - return mem; -} - -#endif /* !ONLY_MSPACES */ - -/* ------------ Internal support for realloc, memalign, etc -------------- */ - -/* Try to realloc; only in-place unless can_move true */ -static mchunkptr try_realloc_chunk(mstate m, mchunkptr p, size_t nb, - int can_move) { - mchunkptr newp = 0; - size_t oldsize = chunksize(p); - mchunkptr next = chunk_plus_offset(p, oldsize); - if (RTCHECK(ok_address(m, p) && ok_inuse(p) && - ok_next(p, next) && ok_pinuse(next))) { - if (is_mmapped(p)) { - newp = mmap_resize(m, p, nb, can_move); - } - else if (oldsize >= nb) { /* already big enough */ - size_t rsize = oldsize - nb; - if (rsize >= MIN_CHUNK_SIZE) { /* split off remainder */ - mchunkptr r = chunk_plus_offset(p, nb); - set_inuse(m, p, nb); - set_inuse(m, r, rsize); - dispose_chunk(m, r, rsize); - } - newp = p; - } - else if (next == m->top) { /* extend into top */ - if (oldsize + m->topsize > nb) { - size_t newsize = oldsize + m->topsize; - size_t newtopsize = newsize - nb; - mchunkptr newtop = chunk_plus_offset(p, nb); - set_inuse(m, p, nb); - newtop->head = newtopsize |PINUSE_BIT; - m->top = newtop; - m->topsize = newtopsize; - newp = p; - } - } - else if (next == m->dv) { /* extend into dv */ - size_t dvs = m->dvsize; - if (oldsize + dvs >= nb) { - size_t dsize = oldsize + dvs - nb; - if (dsize >= MIN_CHUNK_SIZE) { - mchunkptr r = chunk_plus_offset(p, nb); - mchunkptr n = chunk_plus_offset(r, dsize); - set_inuse(m, p, nb); - set_size_and_pinuse_of_free_chunk(r, dsize); - clear_pinuse(n); - m->dvsize = dsize; - m->dv = r; - } - else { /* exhaust dv */ - size_t newsize = oldsize + dvs; - set_inuse(m, p, newsize); - m->dvsize = 0; - m->dv = 0; - } - newp = p; - } - } - else if (!cinuse(next)) { /* extend into next free chunk */ - size_t nextsize = chunksize(next); - if (oldsize + nextsize >= nb) { - size_t rsize = oldsize + nextsize - nb; - unlink_chunk(m, next, nextsize); - if (rsize < MIN_CHUNK_SIZE) { - size_t newsize = oldsize + nextsize; - set_inuse(m, p, newsize); - } - else { - mchunkptr r = chunk_plus_offset(p, nb); - set_inuse(m, p, nb); - set_inuse(m, r, rsize); - dispose_chunk(m, r, rsize); - } - newp = p; - } - } - } - else { - USAGE_ERROR_ACTION(m, chunk2mem(p)); - } - return newp; -} - -static void* internal_memalign(mstate m, size_t alignment, size_t bytes) { - void* mem = 0; - if (alignment < MIN_CHUNK_SIZE) /* must be at least a minimum chunk size */ - alignment = MIN_CHUNK_SIZE; - if ((alignment & (alignment-SIZE_T_ONE)) != 0) {/* Ensure a power of 2 */ - size_t a = MALLOC_ALIGNMENT << 1; - while (a < alignment) a <<= 1; - alignment = a; - } - if (bytes >= MAX_REQUEST - alignment) { - if (m != 0) { /* Test isn't needed but avoids compiler warning */ - MALLOC_FAILURE_ACTION; - } - } - else { - size_t nb = request2size(bytes); - size_t req = nb + alignment + MIN_CHUNK_SIZE - CHUNK_OVERHEAD; - mem = internal_malloc(m, req); - if (mem != 0) { - mchunkptr p = mem2chunk(mem); - if (PREACTION(m)) - return 0; - if ((((size_t)(mem)) & (alignment - 1)) != 0) { /* misaligned */ - /* - Find an aligned spot inside chunk. Since we need to give - back leading space in a chunk of at least MIN_CHUNK_SIZE, if - the first calculation places us at a spot with less than - MIN_CHUNK_SIZE leader, we can move to the next aligned spot. - We've allocated enough total room so that this is always - possible. - */ - char* br = (char*)mem2chunk((size_t)(((size_t)((char*)mem + alignment - - SIZE_T_ONE)) & - -alignment)); - char* pos = ((size_t)(br - (char*)(p)) >= MIN_CHUNK_SIZE)? - br : br+alignment; - mchunkptr newp = (mchunkptr)pos; - size_t leadsize = pos - (char*)(p); - size_t newsize = chunksize(p) - leadsize; - - if (is_mmapped(p)) { /* For mmapped chunks, just adjust offset */ - newp->prev_foot = p->prev_foot + leadsize; - newp->head = newsize; - } - else { /* Otherwise, give back leader, use the rest */ - set_inuse(m, newp, newsize); - set_inuse(m, p, leadsize); - dispose_chunk(m, p, leadsize); - } - p = newp; - } - - /* Give back spare room at the end */ - if (!is_mmapped(p)) { - size_t size = chunksize(p); - if (size > nb + MIN_CHUNK_SIZE) { - size_t remainder_size = size - nb; - mchunkptr remainder = chunk_plus_offset(p, nb); - set_inuse(m, p, nb); - set_inuse(m, remainder, remainder_size); - dispose_chunk(m, remainder, remainder_size); - } - } - - mem = chunk2mem(p); - assert (chunksize(p) >= nb); - assert(((size_t)mem & (alignment - 1)) == 0); - check_inuse_chunk(m, p); - POSTACTION(m); - } - } - return mem; -} - -/* - Common support for independent_X routines, handling - all of the combinations that can result. - The opts arg has: - bit 0 set if all elements are same size (using sizes[0]) - bit 1 set if elements should be zeroed -*/ -static void** ialloc(mstate m, - size_t n_elements, - size_t* sizes, - int opts, - void* chunks[]) { - - size_t element_size; /* chunksize of each element, if all same */ - size_t contents_size; /* total size of elements */ - size_t array_size; /* request size of pointer array */ - void* mem; /* malloced aggregate space */ - mchunkptr p; /* corresponding chunk */ - size_t remainder_size; /* remaining bytes while splitting */ - void** marray; /* either "chunks" or malloced ptr array */ - mchunkptr array_chunk; /* chunk for malloced ptr array */ - flag_t was_enabled; /* to disable mmap */ - size_t size; - size_t i; - - ensure_initialization(); - /* compute array length, if needed */ - if (chunks != 0) { - if (n_elements == 0) - return chunks; /* nothing to do */ - marray = chunks; - array_size = 0; - } - else { - /* if empty req, must still return chunk representing empty array */ - if (n_elements == 0) - return (void**)internal_malloc(m, 0); - marray = 0; - array_size = request2size(n_elements * (sizeof(void*))); - } - - /* compute total element size */ - if (opts & 0x1) { /* all-same-size */ - element_size = request2size(*sizes); - contents_size = n_elements * element_size; - } - else { /* add up all the sizes */ - element_size = 0; - contents_size = 0; - for (i = 0; i != n_elements; ++i) - contents_size += request2size(sizes[i]); - } - - size = contents_size + array_size; - - /* - Allocate the aggregate chunk. First disable direct-mmapping so - malloc won't use it, since we would not be able to later - free/realloc space internal to a segregated mmap region. - */ - was_enabled = use_mmap(m); - disable_mmap(m); - mem = internal_malloc(m, size - CHUNK_OVERHEAD); - if (was_enabled) - enable_mmap(m); - if (mem == 0) - return 0; - - if (PREACTION(m)) return 0; - p = mem2chunk(mem); - remainder_size = chunksize(p); - - assert(!is_mmapped(p)); - - if (opts & 0x2) { /* optionally clear the elements */ - memset((size_t*)mem, 0, remainder_size - SIZE_T_SIZE - array_size); - } - - /* If not provided, allocate the pointer array as final part of chunk */ - if (marray == 0) { - size_t array_chunk_size; - array_chunk = chunk_plus_offset(p, contents_size); - array_chunk_size = remainder_size - contents_size; - marray = (void**) (chunk2mem(array_chunk)); - set_size_and_pinuse_of_inuse_chunk(m, array_chunk, array_chunk_size); - remainder_size = contents_size; - } - - /* split out elements */ - for (i = 0; ; ++i) { - marray[i] = chunk2mem(p); - if (i != n_elements-1) { - if (element_size != 0) - size = element_size; - else - size = request2size(sizes[i]); - remainder_size -= size; - set_size_and_pinuse_of_inuse_chunk(m, p, size); - p = chunk_plus_offset(p, size); - } - else { /* the final element absorbs any overallocation slop */ - set_size_and_pinuse_of_inuse_chunk(m, p, remainder_size); - break; - } - } - -#if DEBUG - if (marray != chunks) { - /* final element must have exactly exhausted chunk */ - if (element_size != 0) { - assert(remainder_size == element_size); - } - else { - assert(remainder_size == request2size(sizes[i])); - } - check_inuse_chunk(m, mem2chunk(marray)); - } - for (i = 0; i != n_elements; ++i) - check_inuse_chunk(m, mem2chunk(marray[i])); - -#endif /* DEBUG */ - - POSTACTION(m); - return marray; -} - -/* Try to free all pointers in the given array. - Note: this could be made faster, by delaying consolidation, - at the price of disabling some user integrity checks, We - still optimize some consolidations by combining adjacent - chunks before freeing, which will occur often if allocated - with ialloc or the array is sorted. -*/ -static size_t internal_bulk_free(mstate m, void* array[], size_t nelem) { - size_t unfreed = 0; - if (!PREACTION(m)) { - void** a; - void** fence = &(array[nelem]); - for (a = array; a != fence; ++a) { - void* mem = *a; - if (mem != 0) { - mchunkptr p = mem2chunk(mem); - size_t psize = chunksize(p); -#if FOOTERS - if (get_mstate_for(p) != m) { - ++unfreed; - continue; - } -#endif - check_inuse_chunk(m, p); - *a = 0; - if (RTCHECK(ok_address(m, p) && ok_inuse(p))) { - void ** b = a + 1; /* try to merge with next chunk */ - mchunkptr next = next_chunk(p); - if (b != fence && *b == chunk2mem(next)) { - size_t newsize = chunksize(next) + psize; - set_inuse(m, p, newsize); - *b = chunk2mem(p); - } - else - dispose_chunk(m, p, psize); - } - else { - CORRUPTION_ERROR_ACTION(m); - break; - } - } - } - if (should_trim(m, m->topsize)) - sys_trim(m, 0); - POSTACTION(m); - } - return unfreed; -} - -/* Traversal */ -#if MALLOC_INSPECT_ALL -static void internal_inspect_all(mstate m, - void(*handler)(void *start, - void *end, - size_t used_bytes, - void* callback_arg), - void* arg) { - if (is_initialized(m)) { - mchunkptr top = m->top; - msegmentptr s; - for (s = &m->seg; s != 0; s = s->next) { - mchunkptr q = align_as_chunk(s->base); - while (segment_holds(s, q) && q->head != FENCEPOST_HEAD) { - mchunkptr next = next_chunk(q); - size_t sz = chunksize(q); - size_t used; - void* start; - if (is_inuse(q)) { - used = sz - CHUNK_OVERHEAD; /* must not be mmapped */ - start = chunk2mem(q); - } - else { - used = 0; - if (is_small(sz)) { /* offset by possible bookkeeping */ - start = (void*)((char*)q + sizeof(struct malloc_chunk)); - } - else { - start = (void*)((char*)q + sizeof(struct malloc_tree_chunk)); - } - } - if (start < (void*)next) /* skip if all space is bookkeeping */ - handler(start, next, used, arg); - if (q == top) - break; - q = next; - } - } - } -} -#endif /* MALLOC_INSPECT_ALL */ - -#ifdef __wasilibc_unmodified_upstream // Define a function that initializes the initial state of dlmalloc. -#else -/* ------------------ Exported try_init_allocator -------------------- */ - -/* Symbol marking the end of data, bss and explicit stack, provided by wasm-ld. */ -extern char __heap_base; -extern char __heap_end; - -/* Initialize the initial state of dlmalloc to be able to use free memory between __heap_base and initial. */ -static void try_init_allocator(void) { - /* Check that it is a first-time initialization. */ - assert(!is_initialized(gm)); - - /* Initialize mstate. */ - ensure_initialization(); - - char *base = &__heap_base; - // Try to use the linker pseudo-symbol `__heap_end` for the initial size of - // the heap. - char *end = &__heap_end; - if (end < base) { - // "end" can be NULL when 1. you are using an old wasm-ld which doesn't - // provide `__heap_end` (< 15.0.7) and 2. something (other libraries - // or maybe your app?) includes a weak reference to `__heap_end` and - // 3. the weak reference is found by the linker before this strong - // reference. - // - // Note: This is a linker bug: https://github.com/llvm/llvm-project/issues/60829 - __builtin_trap(); - } - size_t initial_heap_size = end - base; - - /* Check that initial heap is long enough to serve a minimal allocation request. */ - if (initial_heap_size <= MIN_CHUNK_SIZE + TOP_FOOT_SIZE + MALLOC_ALIGNMENT) { - return; - } - - /* Initialize the dlmalloc internal state. */ - gm->least_addr = base; - gm->seg.base = base; - gm->seg.size = initial_heap_size; - gm->magic = mparams.magic; - gm->release_checks = MAX_RELEASE_CHECK_RATE; - init_bins(gm); - init_top(gm, (mchunkptr)base, initial_heap_size - TOP_FOOT_SIZE); -} -#endif - -/* ------------------ Exported realloc, memalign, etc -------------------- */ - -#if !ONLY_MSPACES - -void* dlrealloc(void* oldmem, size_t bytes) { - void* mem = 0; - if (oldmem == 0) { - mem = dlmalloc(bytes); - } - else if (bytes >= MAX_REQUEST) { - MALLOC_FAILURE_ACTION; - } -#ifdef REALLOC_ZERO_BYTES_FREES - else if (bytes == 0) { - dlfree(oldmem); - } -#endif /* REALLOC_ZERO_BYTES_FREES */ - else { - size_t nb = request2size(bytes); - mchunkptr oldp = mem2chunk(oldmem); -#if ! FOOTERS - mstate m = gm; -#else /* FOOTERS */ - mstate m = get_mstate_for(oldp); - if (!ok_magic(m)) { - USAGE_ERROR_ACTION(m, oldmem); - return 0; - } -#endif /* FOOTERS */ - if (!PREACTION(m)) { - mchunkptr newp = try_realloc_chunk(m, oldp, nb, 1); - POSTACTION(m); - if (newp != 0) { - check_inuse_chunk(m, newp); - mem = chunk2mem(newp); - } - else { - mem = internal_malloc(m, bytes); - if (mem != 0) { - size_t oc = chunksize(oldp) - overhead_for(oldp); - memcpy(mem, oldmem, (oc < bytes)? oc : bytes); - internal_free(m, oldmem); - } - } - } - } - return mem; -} - -void* dlrealloc_in_place(void* oldmem, size_t bytes) { - void* mem = 0; - if (oldmem != 0) { - if (bytes >= MAX_REQUEST) { - MALLOC_FAILURE_ACTION; - } - else { - size_t nb = request2size(bytes); - mchunkptr oldp = mem2chunk(oldmem); -#if ! FOOTERS - mstate m = gm; -#else /* FOOTERS */ - mstate m = get_mstate_for(oldp); - if (!ok_magic(m)) { - USAGE_ERROR_ACTION(m, oldmem); - return 0; - } -#endif /* FOOTERS */ - if (!PREACTION(m)) { - mchunkptr newp = try_realloc_chunk(m, oldp, nb, 0); - POSTACTION(m); - if (newp == oldp) { - check_inuse_chunk(m, newp); - mem = oldmem; - } - } - } - } - return mem; -} - -void* dlmemalign(size_t alignment, size_t bytes) { - if (alignment <= MALLOC_ALIGNMENT) { - return dlmalloc(bytes); - } - return internal_memalign(gm, alignment, bytes); -} - -int dlposix_memalign(void** pp, size_t alignment, size_t bytes) { - void* mem = 0; - if (alignment == MALLOC_ALIGNMENT) - mem = dlmalloc(bytes); - else { - size_t d = alignment / sizeof(void*); - size_t r = alignment % sizeof(void*); - if (r != 0 || d == 0 || (d & (d-SIZE_T_ONE)) != 0) - return EINVAL; - else if (bytes <= MAX_REQUEST - alignment) { - if (alignment < MIN_CHUNK_SIZE) - alignment = MIN_CHUNK_SIZE; - mem = internal_memalign(gm, alignment, bytes); - } - } - if (mem == 0) - return ENOMEM; - else { - *pp = mem; - return 0; - } -} - -void* dlvalloc(size_t bytes) { - size_t pagesz; - ensure_initialization(); - pagesz = mparams.page_size; - return dlmemalign(pagesz, bytes); -} - -void* dlpvalloc(size_t bytes) { - size_t pagesz; - ensure_initialization(); - pagesz = mparams.page_size; - return dlmemalign(pagesz, (bytes + pagesz - SIZE_T_ONE) & ~(pagesz - SIZE_T_ONE)); -} - -void** dlindependent_calloc(size_t n_elements, size_t elem_size, - void* chunks[]) { - size_t sz = elem_size; /* serves as 1-element array */ - return ialloc(gm, n_elements, &sz, 3, chunks); -} - -void** dlindependent_comalloc(size_t n_elements, size_t sizes[], - void* chunks[]) { - return ialloc(gm, n_elements, sizes, 0, chunks); -} - -size_t dlbulk_free(void* array[], size_t nelem) { - return internal_bulk_free(gm, array, nelem); -} - -#if MALLOC_INSPECT_ALL -void dlmalloc_inspect_all(void(*handler)(void *start, - void *end, - size_t used_bytes, - void* callback_arg), - void* arg) { - ensure_initialization(); - if (!PREACTION(gm)) { - internal_inspect_all(gm, handler, arg); - POSTACTION(gm); - } -} -#endif /* MALLOC_INSPECT_ALL */ - -int dlmalloc_trim(size_t pad) { - int result = 0; - ensure_initialization(); - if (!PREACTION(gm)) { - result = sys_trim(gm, pad); - POSTACTION(gm); - } - return result; -} - -size_t dlmalloc_footprint(void) { - return gm->footprint; -} - -size_t dlmalloc_max_footprint(void) { - return gm->max_footprint; -} - -size_t dlmalloc_footprint_limit(void) { - size_t maf = gm->footprint_limit; - return maf == 0 ? MAX_SIZE_T : maf; -} - -size_t dlmalloc_set_footprint_limit(size_t bytes) { - size_t result; /* invert sense of 0 */ - if (bytes == 0) - result = granularity_align(1); /* Use minimal size */ - if (bytes == MAX_SIZE_T) - result = 0; /* disable */ - else - result = granularity_align(bytes); - return gm->footprint_limit = result; -} - -#if !NO_MALLINFO -struct mallinfo dlmallinfo(void) { - return internal_mallinfo(gm); -} -#endif /* NO_MALLINFO */ - -#if !NO_MALLOC_STATS -void dlmalloc_stats() { - internal_malloc_stats(gm); -} -#endif /* NO_MALLOC_STATS */ - -int dlmallopt(int param_number, int value) { - return change_mparam(param_number, value); -} - -size_t dlmalloc_usable_size(void* mem) { - if (mem != 0) { - mchunkptr p = mem2chunk(mem); - if (is_inuse(p)) - return chunksize(p) - overhead_for(p); - } - return 0; -} - -#endif /* !ONLY_MSPACES */ - -/* ----------------------------- user mspaces ---------------------------- */ - -#if MSPACES - -static mstate init_user_mstate(char* tbase, size_t tsize) { - size_t msize = pad_request(sizeof(struct malloc_state)); - mchunkptr mn; - mchunkptr msp = align_as_chunk(tbase); - mstate m = (mstate)(chunk2mem(msp)); - memset(m, 0, msize); - (void)INITIAL_LOCK(&m->mutex); - msp->head = (msize|INUSE_BITS); - m->seg.base = m->least_addr = tbase; - m->seg.size = m->footprint = m->max_footprint = tsize; - m->magic = mparams.magic; - m->release_checks = MAX_RELEASE_CHECK_RATE; - m->mflags = mparams.default_mflags; - m->extp = 0; - m->exts = 0; - disable_contiguous(m); - init_bins(m); - mn = next_chunk(mem2chunk(m)); - init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) - TOP_FOOT_SIZE); - check_top_chunk(m, m->top); - return m; -} - -mspace create_mspace(size_t capacity, int locked) { - mstate m = 0; - size_t msize; - ensure_initialization(); - msize = pad_request(sizeof(struct malloc_state)); - if (capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { - size_t rs = ((capacity == 0)? mparams.granularity : - (capacity + TOP_FOOT_SIZE + msize)); - size_t tsize = granularity_align(rs); - char* tbase = (char*)(CALL_MMAP(tsize)); - if (tbase != CMFAIL) { - m = init_user_mstate(tbase, tsize); - m->seg.sflags = USE_MMAP_BIT; - set_lock(m, locked); - } - } - return (mspace)m; -} - -mspace create_mspace_with_base(void* base, size_t capacity, int locked) { - mstate m = 0; - size_t msize; - ensure_initialization(); - msize = pad_request(sizeof(struct malloc_state)); - if (capacity > msize + TOP_FOOT_SIZE && - capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { - m = init_user_mstate((char*)base, capacity); - m->seg.sflags = EXTERN_BIT; - set_lock(m, locked); - } - return (mspace)m; -} - -int mspace_track_large_chunks(mspace msp, int enable) { - int ret = 0; - mstate ms = (mstate)msp; - if (!PREACTION(ms)) { - if (!use_mmap(ms)) { - ret = 1; - } - if (!enable) { - enable_mmap(ms); - } else { - disable_mmap(ms); - } - POSTACTION(ms); - } - return ret; -} - -size_t destroy_mspace(mspace msp) { - size_t freed = 0; - mstate ms = (mstate)msp; - if (ok_magic(ms)) { - msegmentptr sp = &ms->seg; - (void)DESTROY_LOCK(&ms->mutex); /* destroy before unmapped */ - while (sp != 0) { - char* base = sp->base; - size_t size = sp->size; - flag_t flag = sp->sflags; - (void)base; /* placate people compiling -Wunused-variable */ - sp = sp->next; - if ((flag & USE_MMAP_BIT) && !(flag & EXTERN_BIT) && - CALL_MUNMAP(base, size) == 0) - freed += size; - } - } - else { - USAGE_ERROR_ACTION(ms,ms); - } - return freed; -} - -/* - mspace versions of routines are near-clones of the global - versions. This is not so nice but better than the alternatives. -*/ - -void* mspace_malloc(mspace msp, size_t bytes) { - mstate ms = (mstate)msp; - if (!ok_magic(ms)) { - USAGE_ERROR_ACTION(ms,ms); - return 0; - } - if (!PREACTION(ms)) { - void* mem; - size_t nb; - if (bytes <= MAX_SMALL_REQUEST) { - bindex_t idx; - binmap_t smallbits; - nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); - idx = small_index(nb); - smallbits = ms->smallmap >> idx; - - if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ - mchunkptr b, p; - idx += ~smallbits & 1; /* Uses next bin if idx empty */ - b = smallbin_at(ms, idx); - p = b->fd; - assert(chunksize(p) == small_index2size(idx)); - unlink_first_small_chunk(ms, b, p, idx); - set_inuse_and_pinuse(ms, p, small_index2size(idx)); - mem = chunk2mem(p); - check_malloced_chunk(ms, mem, nb); - goto postaction; - } - - else if (nb > ms->dvsize) { - if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ - mchunkptr b, p, r; - size_t rsize; - bindex_t i; - binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); - binmap_t leastbit = least_bit(leftbits); - compute_bit2idx(leastbit, i); - b = smallbin_at(ms, i); - p = b->fd; - assert(chunksize(p) == small_index2size(i)); - unlink_first_small_chunk(ms, b, p, i); - rsize = small_index2size(i) - nb; - /* Fit here cannot be remainderless if 4byte sizes */ - if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) - set_inuse_and_pinuse(ms, p, small_index2size(i)); - else { - set_size_and_pinuse_of_inuse_chunk(ms, p, nb); - r = chunk_plus_offset(p, nb); - set_size_and_pinuse_of_free_chunk(r, rsize); - replace_dv(ms, r, rsize); - } - mem = chunk2mem(p); - check_malloced_chunk(ms, mem, nb); - goto postaction; - } - - else if (ms->treemap != 0 && (mem = tmalloc_small(ms, nb)) != 0) { - check_malloced_chunk(ms, mem, nb); - goto postaction; - } - } - } - else if (bytes >= MAX_REQUEST) - nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ - else { - nb = pad_request(bytes); - if (ms->treemap != 0 && (mem = tmalloc_large(ms, nb)) != 0) { - check_malloced_chunk(ms, mem, nb); - goto postaction; - } - } - - if (nb <= ms->dvsize) { - size_t rsize = ms->dvsize - nb; - mchunkptr p = ms->dv; - if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ - mchunkptr r = ms->dv = chunk_plus_offset(p, nb); - ms->dvsize = rsize; - set_size_and_pinuse_of_free_chunk(r, rsize); - set_size_and_pinuse_of_inuse_chunk(ms, p, nb); - } - else { /* exhaust dv */ - size_t dvs = ms->dvsize; - ms->dvsize = 0; - ms->dv = 0; - set_inuse_and_pinuse(ms, p, dvs); - } - mem = chunk2mem(p); - check_malloced_chunk(ms, mem, nb); - goto postaction; - } - - else if (nb < ms->topsize) { /* Split top */ - size_t rsize = ms->topsize -= nb; - mchunkptr p = ms->top; - mchunkptr r = ms->top = chunk_plus_offset(p, nb); - r->head = rsize | PINUSE_BIT; - set_size_and_pinuse_of_inuse_chunk(ms, p, nb); - mem = chunk2mem(p); - check_top_chunk(ms, ms->top); - check_malloced_chunk(ms, mem, nb); - goto postaction; - } - - mem = sys_alloc(ms, nb); - - postaction: - POSTACTION(ms); - return mem; - } - - return 0; -} - -void mspace_free(mspace msp, void* mem) { - if (mem != 0) { - mchunkptr p = mem2chunk(mem); -#if FOOTERS - mstate fm = get_mstate_for(p); - (void)msp; /* placate people compiling -Wunused */ -#else /* FOOTERS */ - mstate fm = (mstate)msp; -#endif /* FOOTERS */ - if (!ok_magic(fm)) { - USAGE_ERROR_ACTION(fm, p); - return; - } - if (!PREACTION(fm)) { - check_inuse_chunk(fm, p); - if (RTCHECK(ok_address(fm, p) && ok_inuse(p))) { - size_t psize = chunksize(p); - mchunkptr next = chunk_plus_offset(p, psize); - if (!pinuse(p)) { - size_t prevsize = p->prev_foot; - if (is_mmapped(p)) { - psize += prevsize + MMAP_FOOT_PAD; - if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) - fm->footprint -= psize; - goto postaction; - } - else { - mchunkptr prev = chunk_minus_offset(p, prevsize); - psize += prevsize; - p = prev; - if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ - if (p != fm->dv) { - unlink_chunk(fm, p, prevsize); - } - else if ((next->head & INUSE_BITS) == INUSE_BITS) { - fm->dvsize = psize; - set_free_with_pinuse(p, psize, next); - goto postaction; - } - } - else - goto erroraction; - } - } - - if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { - if (!cinuse(next)) { /* consolidate forward */ - if (next == fm->top) { - size_t tsize = fm->topsize += psize; - fm->top = p; - p->head = tsize | PINUSE_BIT; - if (p == fm->dv) { - fm->dv = 0; - fm->dvsize = 0; - } - if (should_trim(fm, tsize)) - sys_trim(fm, 0); - goto postaction; - } - else if (next == fm->dv) { - size_t dsize = fm->dvsize += psize; - fm->dv = p; - set_size_and_pinuse_of_free_chunk(p, dsize); - goto postaction; - } - else { - size_t nsize = chunksize(next); - psize += nsize; - unlink_chunk(fm, next, nsize); - set_size_and_pinuse_of_free_chunk(p, psize); - if (p == fm->dv) { - fm->dvsize = psize; - goto postaction; - } - } - } - else - set_free_with_pinuse(p, psize, next); - - if (is_small(psize)) { - insert_small_chunk(fm, p, psize); - check_free_chunk(fm, p); - } - else { - tchunkptr tp = (tchunkptr)p; - insert_large_chunk(fm, tp, psize); - check_free_chunk(fm, p); - if (--fm->release_checks == 0) - release_unused_segments(fm); - } - goto postaction; - } - } - erroraction: - USAGE_ERROR_ACTION(fm, p); - postaction: - POSTACTION(fm); - } - } -} - -void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size) { - void* mem; - size_t req = 0; - mstate ms = (mstate)msp; - if (!ok_magic(ms)) { - USAGE_ERROR_ACTION(ms,ms); - return 0; - } - if (n_elements != 0) { - req = n_elements * elem_size; - if (((n_elements | elem_size) & ~(size_t)0xffff) && - (req / n_elements != elem_size)) - req = MAX_SIZE_T; /* force downstream failure on overflow */ - } - mem = internal_malloc(ms, req); - if (mem != 0 && calloc_must_clear(mem2chunk(mem))) - memset(mem, 0, req); - return mem; -} - -void* mspace_realloc(mspace msp, void* oldmem, size_t bytes) { - void* mem = 0; - if (oldmem == 0) { - mem = mspace_malloc(msp, bytes); - } - else if (bytes >= MAX_REQUEST) { - MALLOC_FAILURE_ACTION; - } -#ifdef REALLOC_ZERO_BYTES_FREES - else if (bytes == 0) { - mspace_free(msp, oldmem); - } -#endif /* REALLOC_ZERO_BYTES_FREES */ - else { - size_t nb = request2size(bytes); - mchunkptr oldp = mem2chunk(oldmem); -#if ! FOOTERS - mstate m = (mstate)msp; -#else /* FOOTERS */ - mstate m = get_mstate_for(oldp); - if (!ok_magic(m)) { - USAGE_ERROR_ACTION(m, oldmem); - return 0; - } -#endif /* FOOTERS */ - if (!PREACTION(m)) { - mchunkptr newp = try_realloc_chunk(m, oldp, nb, 1); - POSTACTION(m); - if (newp != 0) { - check_inuse_chunk(m, newp); - mem = chunk2mem(newp); - } - else { - mem = mspace_malloc(m, bytes); - if (mem != 0) { - size_t oc = chunksize(oldp) - overhead_for(oldp); - memcpy(mem, oldmem, (oc < bytes)? oc : bytes); - mspace_free(m, oldmem); - } - } - } - } - return mem; -} - -void* mspace_realloc_in_place(mspace msp, void* oldmem, size_t bytes) { - void* mem = 0; - if (oldmem != 0) { - if (bytes >= MAX_REQUEST) { - MALLOC_FAILURE_ACTION; - } - else { - size_t nb = request2size(bytes); - mchunkptr oldp = mem2chunk(oldmem); -#if ! FOOTERS - mstate m = (mstate)msp; -#else /* FOOTERS */ - mstate m = get_mstate_for(oldp); - (void)msp; /* placate people compiling -Wunused */ - if (!ok_magic(m)) { - USAGE_ERROR_ACTION(m, oldmem); - return 0; - } -#endif /* FOOTERS */ - if (!PREACTION(m)) { - mchunkptr newp = try_realloc_chunk(m, oldp, nb, 0); - POSTACTION(m); - if (newp == oldp) { - check_inuse_chunk(m, newp); - mem = oldmem; - } - } - } - } - return mem; -} - -void* mspace_memalign(mspace msp, size_t alignment, size_t bytes) { - mstate ms = (mstate)msp; - if (!ok_magic(ms)) { - USAGE_ERROR_ACTION(ms,ms); - return 0; - } - if (alignment <= MALLOC_ALIGNMENT) - return mspace_malloc(msp, bytes); - return internal_memalign(ms, alignment, bytes); -} - -void** mspace_independent_calloc(mspace msp, size_t n_elements, - size_t elem_size, void* chunks[]) { - size_t sz = elem_size; /* serves as 1-element array */ - mstate ms = (mstate)msp; - if (!ok_magic(ms)) { - USAGE_ERROR_ACTION(ms,ms); - return 0; - } - return ialloc(ms, n_elements, &sz, 3, chunks); -} - -void** mspace_independent_comalloc(mspace msp, size_t n_elements, - size_t sizes[], void* chunks[]) { - mstate ms = (mstate)msp; - if (!ok_magic(ms)) { - USAGE_ERROR_ACTION(ms,ms); - return 0; - } - return ialloc(ms, n_elements, sizes, 0, chunks); -} - -size_t mspace_bulk_free(mspace msp, void* array[], size_t nelem) { - return internal_bulk_free((mstate)msp, array, nelem); -} - -#if MALLOC_INSPECT_ALL -void mspace_inspect_all(mspace msp, - void(*handler)(void *start, - void *end, - size_t used_bytes, - void* callback_arg), - void* arg) { - mstate ms = (mstate)msp; - if (ok_magic(ms)) { - if (!PREACTION(ms)) { - internal_inspect_all(ms, handler, arg); - POSTACTION(ms); - } - } - else { - USAGE_ERROR_ACTION(ms,ms); - } -} -#endif /* MALLOC_INSPECT_ALL */ - -int mspace_trim(mspace msp, size_t pad) { - int result = 0; - mstate ms = (mstate)msp; - if (ok_magic(ms)) { - if (!PREACTION(ms)) { - result = sys_trim(ms, pad); - POSTACTION(ms); - } - } - else { - USAGE_ERROR_ACTION(ms,ms); - } - return result; -} - -#if !NO_MALLOC_STATS -void mspace_malloc_stats(mspace msp) { - mstate ms = (mstate)msp; - if (ok_magic(ms)) { - internal_malloc_stats(ms); - } - else { - USAGE_ERROR_ACTION(ms,ms); - } -} -#endif /* NO_MALLOC_STATS */ - -size_t mspace_footprint(mspace msp) { - size_t result = 0; - mstate ms = (mstate)msp; - if (ok_magic(ms)) { - result = ms->footprint; - } - else { - USAGE_ERROR_ACTION(ms,ms); - } - return result; -} - -size_t mspace_max_footprint(mspace msp) { - size_t result = 0; - mstate ms = (mstate)msp; - if (ok_magic(ms)) { - result = ms->max_footprint; - } - else { - USAGE_ERROR_ACTION(ms,ms); - } - return result; -} - -size_t mspace_footprint_limit(mspace msp) { - size_t result = 0; - mstate ms = (mstate)msp; - if (ok_magic(ms)) { - size_t maf = ms->footprint_limit; - result = (maf == 0) ? MAX_SIZE_T : maf; - } - else { - USAGE_ERROR_ACTION(ms,ms); - } - return result; -} - -size_t mspace_set_footprint_limit(mspace msp, size_t bytes) { - size_t result = 0; - mstate ms = (mstate)msp; - if (ok_magic(ms)) { - if (bytes == 0) - result = granularity_align(1); /* Use minimal size */ - if (bytes == MAX_SIZE_T) - result = 0; /* disable */ - else - result = granularity_align(bytes); - ms->footprint_limit = result; - } - else { - USAGE_ERROR_ACTION(ms,ms); - } - return result; -} - -#if !NO_MALLINFO -struct mallinfo mspace_mallinfo(mspace msp) { - mstate ms = (mstate)msp; - if (!ok_magic(ms)) { - USAGE_ERROR_ACTION(ms,ms); - } - return internal_mallinfo(ms); -} -#endif /* NO_MALLINFO */ - -size_t mspace_usable_size(const void* mem) { - if (mem != 0) { - mchunkptr p = mem2chunk(mem); - if (is_inuse(p)) - return chunksize(p) - overhead_for(p); - } - return 0; -} - -int mspace_mallopt(int param_number, int value) { - return change_mparam(param_number, value); -} - -#endif /* MSPACES */ - - -/* -------------------- Alternative MORECORE functions ------------------- */ - -/* - Guidelines for creating a custom version of MORECORE: - - * For best performance, MORECORE should allocate in multiples of pagesize. - * MORECORE may allocate more memory than requested. (Or even less, - but this will usually result in a malloc failure.) - * MORECORE must not allocate memory when given argument zero, but - instead return one past the end address of memory from previous - nonzero call. - * For best performance, consecutive calls to MORECORE with positive - arguments should return increasing addresses, indicating that - space has been contiguously extended. - * Even though consecutive calls to MORECORE need not return contiguous - addresses, it must be OK for malloc'ed chunks to span multiple - regions in those cases where they do happen to be contiguous. - * MORECORE need not handle negative arguments -- it may instead - just return MFAIL when given negative arguments. - Negative arguments are always multiples of pagesize. MORECORE - must not misinterpret negative args as large positive unsigned - args. You can suppress all such calls from even occurring by defining - MORECORE_CANNOT_TRIM, - - As an example alternative MORECORE, here is a custom allocator - kindly contributed for pre-OSX macOS. It uses virtually but not - necessarily physically contiguous non-paged memory (locked in, - present and won't get swapped out). You can use it by uncommenting - this section, adding some #includes, and setting up the appropriate - defines above: - - #define MORECORE osMoreCore - - There is also a shutdown routine that should somehow be called for - cleanup upon program exit. - - #define MAX_POOL_ENTRIES 100 - #define MINIMUM_MORECORE_SIZE (64 * 1024U) - static int next_os_pool; - void *our_os_pools[MAX_POOL_ENTRIES]; - - void *osMoreCore(int size) - { - void *ptr = 0; - static void *sbrk_top = 0; - - if (size > 0) - { - if (size < MINIMUM_MORECORE_SIZE) - size = MINIMUM_MORECORE_SIZE; - if (CurrentExecutionLevel() == kTaskLevel) - ptr = PoolAllocateResident(size + RM_PAGE_SIZE, 0); - if (ptr == 0) - { - return (void *) MFAIL; - } - // save ptrs so they can be freed during cleanup - our_os_pools[next_os_pool] = ptr; - next_os_pool++; - ptr = (void *) ((((size_t) ptr) + RM_PAGE_MASK) & ~RM_PAGE_MASK); - sbrk_top = (char *) ptr + size; - return ptr; - } - else if (size < 0) - { - // we don't currently support shrink behavior - return (void *) MFAIL; - } - else - { - return sbrk_top; - } - } - - // cleanup any allocated memory pools - // called as last thing before shutting down driver - - void osCleanupMem(void) - { - void **ptr; - - for (ptr = our_os_pools; ptr < &our_os_pools[MAX_POOL_ENTRIES]; ptr++) - if (*ptr) - { - PoolDeallocate(*ptr); - *ptr = 0; - } - } - -*/ - - -/* ----------------------------------------------------------------------- -History: - v2.8.6 Wed Aug 29 06:57:58 2012 Doug Lea - * fix bad comparison in dlposix_memalign - * don't reuse adjusted asize in sys_alloc - * add LOCK_AT_FORK -- thanks to Kirill Artamonov for the suggestion - * reduce compiler warnings -- thanks to all who reported/suggested these - - v2.8.5 Sun May 22 10:26:02 2011 Doug Lea (dl at gee) - * Always perform unlink checks unless INSECURE - * Add posix_memalign. - * Improve realloc to expand in more cases; expose realloc_in_place. - Thanks to Peter Buhr for the suggestion. - * Add footprint_limit, inspect_all, bulk_free. Thanks - to Barry Hayes and others for the suggestions. - * Internal refactorings to avoid calls while holding locks - * Use non-reentrant locks by default. Thanks to Roland McGrath - for the suggestion. - * Small fixes to mspace_destroy, reset_on_error. - * Various configuration extensions/changes. Thanks - to all who contributed these. - - V2.8.4a Thu Apr 28 14:39:43 2011 (dl at gee.cs.oswego.edu) - * Update Creative Commons URL - - V2.8.4 Wed May 27 09:56:23 2009 Doug Lea (dl at gee) - * Use zeros instead of prev foot for is_mmapped - * Add mspace_track_large_chunks; thanks to Jean Brouwers - * Fix set_inuse in internal_realloc; thanks to Jean Brouwers - * Fix insufficient sys_alloc padding when using 16byte alignment - * Fix bad error check in mspace_footprint - * Adaptations for ptmalloc; thanks to Wolfram Gloger. - * Reentrant spin locks; thanks to Earl Chew and others - * Win32 improvements; thanks to Niall Douglas and Earl Chew - * Add NO_SEGMENT_TRAVERSAL and MAX_RELEASE_CHECK_RATE options - * Extension hook in malloc_state - * Various small adjustments to reduce warnings on some compilers - * Various configuration extensions/changes for more platforms. Thanks - to all who contributed these. - - V2.8.3 Thu Sep 22 11:16:32 2005 Doug Lea (dl at gee) - * Add max_footprint functions - * Ensure all appropriate literals are size_t - * Fix conditional compilation problem for some #define settings - * Avoid concatenating segments with the one provided - in create_mspace_with_base - * Rename some variables to avoid compiler shadowing warnings - * Use explicit lock initialization. - * Better handling of sbrk interference. - * Simplify and fix segment insertion, trimming and mspace_destroy - * Reinstate REALLOC_ZERO_BYTES_FREES option from 2.7.x - * Thanks especially to Dennis Flanagan for help on these. - - V2.8.2 Sun Jun 12 16:01:10 2005 Doug Lea (dl at gee) - * Fix memalign brace error. - - V2.8.1 Wed Jun 8 16:11:46 2005 Doug Lea (dl at gee) - * Fix improper #endif nesting in C++ - * Add explicit casts needed for C++ - - V2.8.0 Mon May 30 14:09:02 2005 Doug Lea (dl at gee) - * Use trees for large bins - * Support mspaces - * Use segments to unify sbrk-based and mmap-based system allocation, - removing need for emulation on most platforms without sbrk. - * Default safety checks - * Optional footer checks. Thanks to William Robertson for the idea. - * Internal code refactoring - * Incorporate suggestions and platform-specific changes. - Thanks to Dennis Flanagan, Colin Plumb, Niall Douglas, - Aaron Bachmann, Emery Berger, and others. - * Speed up non-fastbin processing enough to remove fastbins. - * Remove useless cfree() to avoid conflicts with other apps. - * Remove internal memcpy, memset. Compilers handle builtins better. - * Remove some options that no one ever used and rename others. - - V2.7.2 Sat Aug 17 09:07:30 2002 Doug Lea (dl at gee) - * Fix malloc_state bitmap array misdeclaration - - V2.7.1 Thu Jul 25 10:58:03 2002 Doug Lea (dl at gee) - * Allow tuning of FIRST_SORTED_BIN_SIZE - * Use PTR_UINT as type for all ptr->int casts. Thanks to John Belmonte. - * Better detection and support for non-contiguousness of MORECORE. - Thanks to Andreas Mueller, Conal Walsh, and Wolfram Gloger - * Bypass most of malloc if no frees. Thanks To Emery Berger. - * Fix freeing of old top non-contiguous chunk im sysmalloc. - * Raised default trim and map thresholds to 256K. - * Fix mmap-related #defines. Thanks to Lubos Lunak. - * Fix copy macros; added LACKS_FCNTL_H. Thanks to Neal Walfield. - * Branch-free bin calculation - * Default trim and mmap thresholds now 256K. - - V2.7.0 Sun Mar 11 14:14:06 2001 Doug Lea (dl at gee) - * Introduce independent_comalloc and independent_calloc. - Thanks to Michael Pachos for motivation and help. - * Make optional .h file available - * Allow > 2GB requests on 32bit systems. - * new WIN32 sbrk, mmap, munmap, lock code from . - Thanks also to Andreas Mueller , - and Anonymous. - * Allow override of MALLOC_ALIGNMENT (Thanks to Ruud Waij for - helping test this.) - * memalign: check alignment arg - * realloc: don't try to shift chunks backwards, since this - leads to more fragmentation in some programs and doesn't - seem to help in any others. - * Collect all cases in malloc requiring system memory into sysmalloc - * Use mmap as backup to sbrk - * Place all internal state in malloc_state - * Introduce fastbins (although similar to 2.5.1) - * Many minor tunings and cosmetic improvements - * Introduce USE_PUBLIC_MALLOC_WRAPPERS, USE_MALLOC_LOCK - * Introduce MALLOC_FAILURE_ACTION, MORECORE_CONTIGUOUS - Thanks to Tony E. Bennett and others. - * Include errno.h to support default failure action. - - V2.6.6 Sun Dec 5 07:42:19 1999 Doug Lea (dl at gee) - * return null for negative arguments - * Added Several WIN32 cleanups from Martin C. Fong - * Add 'LACKS_SYS_PARAM_H' for those systems without 'sys/param.h' - (e.g. WIN32 platforms) - * Cleanup header file inclusion for WIN32 platforms - * Cleanup code to avoid Microsoft Visual C++ compiler complaints - * Add 'USE_DL_PREFIX' to quickly allow co-existence with existing - memory allocation routines - * Set 'malloc_getpagesize' for WIN32 platforms (needs more work) - * Use 'assert' rather than 'ASSERT' in WIN32 code to conform to - usage of 'assert' in non-WIN32 code - * Improve WIN32 'sbrk()' emulation's 'findRegion()' routine to - avoid infinite loop - * Always call 'fREe()' rather than 'free()' - - V2.6.5 Wed Jun 17 15:57:31 1998 Doug Lea (dl at gee) - * Fixed ordering problem with boundary-stamping - - V2.6.3 Sun May 19 08:17:58 1996 Doug Lea (dl at gee) - * Added pvalloc, as recommended by H.J. Liu - * Added 64bit pointer support mainly from Wolfram Gloger - * Added anonymously donated WIN32 sbrk emulation - * Malloc, calloc, getpagesize: add optimizations from Raymond Nijssen - * malloc_extend_top: fix mask error that caused wastage after - foreign sbrks - * Add linux mremap support code from HJ Liu - - V2.6.2 Tue Dec 5 06:52:55 1995 Doug Lea (dl at gee) - * Integrated most documentation with the code. - * Add support for mmap, with help from - Wolfram Gloger (Gloger@lrz.uni-muenchen.de). - * Use last_remainder in more cases. - * Pack bins using idea from colin@nyx10.cs.du.edu - * Use ordered bins instead of best-fit threshhold - * Eliminate block-local decls to simplify tracing and debugging. - * Support another case of realloc via move into top - * Fix error occuring when initial sbrk_base not word-aligned. - * Rely on page size for units instead of SBRK_UNIT to - avoid surprises about sbrk alignment conventions. - * Add mallinfo, mallopt. Thanks to Raymond Nijssen - (raymond@es.ele.tue.nl) for the suggestion. - * Add `pad' argument to malloc_trim and top_pad mallopt parameter. - * More precautions for cases where other routines call sbrk, - courtesy of Wolfram Gloger (Gloger@lrz.uni-muenchen.de). - * Added macros etc., allowing use in linux libc from - H.J. Lu (hjl@gnu.ai.mit.edu) - * Inverted this history list - - V2.6.1 Sat Dec 2 14:10:57 1995 Doug Lea (dl at gee) - * Re-tuned and fixed to behave more nicely with V2.6.0 changes. - * Removed all preallocation code since under current scheme - the work required to undo bad preallocations exceeds - the work saved in good cases for most test programs. - * No longer use return list or unconsolidated bins since - no scheme using them consistently outperforms those that don't - given above changes. - * Use best fit for very large chunks to prevent some worst-cases. - * Added some support for debugging - - V2.6.0 Sat Nov 4 07:05:23 1995 Doug Lea (dl at gee) - * Removed footers when chunks are in use. Thanks to - Paul Wilson (wilson@cs.texas.edu) for the suggestion. - - V2.5.4 Wed Nov 1 07:54:51 1995 Doug Lea (dl at gee) - * Added malloc_trim, with help from Wolfram Gloger - (wmglo@Dent.MED.Uni-Muenchen.DE). - - V2.5.3 Tue Apr 26 10:16:01 1994 Doug Lea (dl at g) - - V2.5.2 Tue Apr 5 16:20:40 1994 Doug Lea (dl at g) - * realloc: try to expand in both directions - * malloc: swap order of clean-bin strategy; - * realloc: only conditionally expand backwards - * Try not to scavenge used bins - * Use bin counts as a guide to preallocation - * Occasionally bin return list chunks in first scan - * Add a few optimizations from colin@nyx10.cs.du.edu - - V2.5.1 Sat Aug 14 15:40:43 1993 Doug Lea (dl at g) - * faster bin computation & slightly different binning - * merged all consolidations to one part of malloc proper - (eliminating old malloc_find_space & malloc_clean_bin) - * Scan 2 returns chunks (not just 1) - * Propagate failure in realloc if malloc returns 0 - * Add stuff to allow compilation on non-ANSI compilers - from kpv@research.att.com - - V2.5 Sat Aug 7 07:41:59 1993 Doug Lea (dl at g.oswego.edu) - * removed potential for odd address access in prev_chunk - * removed dependency on getpagesize.h - * misc cosmetics and a bit more internal documentation - * anticosmetics: mangled names in macros to evade debugger strangeness - * tested on sparc, hp-700, dec-mips, rs6000 - with gcc & native cc (hp, dec only) allowing - Detlefs & Zorn comparison study (in SIGPLAN Notices.) - - Trial version Fri Aug 28 13:14:29 1992 Doug Lea (dl at g.oswego.edu) - * Based loosely on libg++-1.2X malloc. (It retains some of the overall - structure of old version, but most details differ.) - -*/ diff --git a/sdks/nodejs/node_modules/emnapi/src/malloc/emmalloc/emmalloc.c b/sdks/nodejs/node_modules/emnapi/src/malloc/emmalloc/emmalloc.c deleted file mode 100644 index 62c21dd..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/malloc/emmalloc/emmalloc.c +++ /dev/null @@ -1,1556 +0,0 @@ -/* - * Copyright 2018 The Emscripten Authors. All rights reserved. - * Emscripten is available under two separate licenses, the MIT license and the - * University of Illinois/NCSA Open Source License. Both these licenses can be - * found in the LICENSE file. - * - * Simple minimalistic but efficient sbrk()-based malloc/free that works in - * singlethreaded and multithreaded builds. - * - * Assumptions: - * - * - sbrk() is used to claim new memory (sbrk handles geometric/linear - * - overallocation growth) - * - sbrk() can be used by other code outside emmalloc. - * - sbrk() is very fast in most cases (internal wasm call). - * - sbrk() returns pointers with an alignment of alignof(max_align_t) - * - * Invariants: - * - * - Per-allocation header overhead is 8 bytes, smallest allocated payload - * amount is 8 bytes, and a multiple of 4 bytes. - * - Acquired memory blocks are subdivided into disjoint regions that lie - * next to each other. - * - A region is either in used or free. - * Used regions may be adjacent, and a used and unused region - * may be adjacent, but not two unused ones - they would be - * merged. - * - Memory allocation takes constant time, unless the alloc needs to sbrk() - * or memory is very close to being exhausted. - * - * Debugging: - * - * - If not NDEBUG, runtime assert()s are in use. - * - If EMMALLOC_MEMVALIDATE is defined, a large amount of extra checks are done. - * - If EMMALLOC_VERBOSE is defined, a lot of operations are logged - * out, in addition to EMMALLOC_MEMVALIDATE. - * - Debugging and logging directly uses console.log via uses EM_ASM, not - * printf etc., to minimize any risk of debugging or logging depending on - * malloc. - */ - -#include -#include -#include -#include -// #include -// #include -// #include -// #include -#include -// #include - -void* sbrk(ptrdiff_t); -void *memset(void *dst, int c, size_t n); -void *memcpy(void *dst, const void* src, size_t n); -#undef assert - -#ifdef NDEBUG -#define assert(x) (void)0 -#else -#define assert(x) ((void)((x) || (__assert_fail(#x, __FILE__, __LINE__, __func__),0))) -#endif -#if __STDC_VERSION__ >= 201112L && !defined(__cplusplus) -#define static_assert _Static_assert -#endif - -#ifndef NDEBUG -_Noreturn void __assert_fail(const char *expr, const char *file, int line, const char *func) -{ - __builtin_trap(); -} -#endif - -#ifdef __EMSCRIPTEN_TRACING__ -#include -#endif - -// Defind by the linker to have the address of the start of the heap. -extern unsigned char __heap_base; -extern unsigned char __heap_end; - -// Behavior of right shifting a signed integer is compiler implementation defined. -static_assert((((int32_t)0x80000000U) >> 31) == -1, "This malloc implementation requires that right-shifting a signed integer produces a sign-extending (arithmetic) shift!"); - -// Configuration: specifies the minimum alignment that malloc()ed memory outputs. Allocation requests with smaller alignment -// than this will yield an allocation with this much alignment. -#define MALLOC_ALIGNMENT alignof(max_align_t) -static_assert(alignof(max_align_t) == 16, "max_align_t must be correct"); - -#define EMMALLOC_EXPORT __attribute__((weak)) - -#define MIN(x, y) ((x) < (y) ? (x) : (y)) -#define MAX(x, y) ((x) > (y) ? (x) : (y)) - -#define NUM_FREE_BUCKETS 64 -#define BUCKET_BITMASK_T uint64_t - -// Dynamic memory is subdivided into regions, in the format - -// ..... | ..... | ..... | ..... - -// That is, at the bottom and top end of each memory region, the size of that region is stored. That allows traversing the -// memory regions backwards and forwards. Because each allocation must be at least a multiple of 4 bytes, the lowest two bits of -// each size field is unused. Free regions are distinguished by used regions by having the FREE_REGION_FLAG bit present -// in the size field. I.e. for free regions, the size field is odd, and for used regions, the size field reads even. -#define FREE_REGION_FLAG 0x1u - -// Attempts to malloc() more than this many bytes would cause an overflow when calculating the size of a region, -// therefore allocations larger than this are short-circuited immediately on entry. -#define MAX_ALLOC_SIZE 0xFFFFFFC7u - -// A free region has the following structure: -// ... - -typedef struct Region -{ - size_t size; - // Use a circular doubly linked list to represent free region data. - struct Region *prev, *next; - // ... N bytes of free data - size_t _at_the_end_of_this_struct_size; // do not dereference, this is present for convenient struct sizeof() computation only -} Region; - -// Each memory block starts with a RootRegion at the beginning. -// The RootRegion specifies the size of the region block, and forms a linked -// list of all RootRegions in the program, starting with `listOfAllRegions` -// below. -typedef struct RootRegion -{ - uint32_t size; - struct RootRegion *next; - uint8_t* endPtr; -} RootRegion; - -#ifdef __EMSCRIPTEN_SHARED_MEMORY__ -// In multithreaded builds, use a simple global spinlock strategy to acquire/release access to the memory allocator. -static volatile uint8_t multithreadingLock = 0; -#define MALLOC_ACQUIRE() while(__sync_lock_test_and_set(&multithreadingLock, 1)) { while(multithreadingLock) { /*nop*/ } } -#define MALLOC_RELEASE() __sync_lock_release(&multithreadingLock) -// Test code to ensure we have tight malloc acquire/release guards in place. -#define ASSERT_MALLOC_IS_ACQUIRED() assert(multithreadingLock == 1) -#else -// In singlethreaded builds, no need for locking. -#define MALLOC_ACQUIRE() ((void)0) -#define MALLOC_RELEASE() ((void)0) -#define ASSERT_MALLOC_IS_ACQUIRED() ((void)0) -#endif - -#define IS_POWER_OF_2(val) (((val) & ((val)-1)) == 0) -#define ALIGN_UP(ptr, alignment) ((uint8_t*)((((uintptr_t)(ptr)) + ((alignment)-1)) & ~((alignment)-1))) -#define HAS_ALIGNMENT(ptr, alignment) ((((uintptr_t)(ptr)) & ((alignment)-1)) == 0) - -static_assert(IS_POWER_OF_2(MALLOC_ALIGNMENT), "MALLOC_ALIGNMENT must be a power of two value!"); -static_assert(MALLOC_ALIGNMENT >= 4, "Smallest possible MALLOC_ALIGNMENT if 4!"); - -// A region that contains as payload a single forward linked list of pointers to -// root regions of each disjoint region blocks. -static RootRegion *listOfAllRegions = NULL; - -// For each of the buckets, maintain a linked list head node. The head node for each -// free region is a sentinel node that does not actually represent any free space, but -// the sentinel is used to avoid awkward testing against (if node == freeRegionHeadNode) -// when adding and removing elements from the linked list, i.e. we are guaranteed that -// the sentinel node is always fixed and there, and the actual free region list elements -// start at freeRegionBuckets[i].next each. -static Region freeRegionBuckets[NUM_FREE_BUCKETS] = { - { .prev = &freeRegionBuckets[0], .next = &freeRegionBuckets[0] }, - { .prev = &freeRegionBuckets[1], .next = &freeRegionBuckets[1] }, - { .prev = &freeRegionBuckets[2], .next = &freeRegionBuckets[2] }, - { .prev = &freeRegionBuckets[3], .next = &freeRegionBuckets[3] }, - { .prev = &freeRegionBuckets[4], .next = &freeRegionBuckets[4] }, - { .prev = &freeRegionBuckets[5], .next = &freeRegionBuckets[5] }, - { .prev = &freeRegionBuckets[6], .next = &freeRegionBuckets[6] }, - { .prev = &freeRegionBuckets[7], .next = &freeRegionBuckets[7] }, - { .prev = &freeRegionBuckets[8], .next = &freeRegionBuckets[8] }, - { .prev = &freeRegionBuckets[9], .next = &freeRegionBuckets[9] }, - { .prev = &freeRegionBuckets[10], .next = &freeRegionBuckets[10] }, - { .prev = &freeRegionBuckets[11], .next = &freeRegionBuckets[11] }, - { .prev = &freeRegionBuckets[12], .next = &freeRegionBuckets[12] }, - { .prev = &freeRegionBuckets[13], .next = &freeRegionBuckets[13] }, - { .prev = &freeRegionBuckets[14], .next = &freeRegionBuckets[14] }, - { .prev = &freeRegionBuckets[15], .next = &freeRegionBuckets[15] }, - { .prev = &freeRegionBuckets[16], .next = &freeRegionBuckets[16] }, - { .prev = &freeRegionBuckets[17], .next = &freeRegionBuckets[17] }, - { .prev = &freeRegionBuckets[18], .next = &freeRegionBuckets[18] }, - { .prev = &freeRegionBuckets[19], .next = &freeRegionBuckets[19] }, - { .prev = &freeRegionBuckets[20], .next = &freeRegionBuckets[20] }, - { .prev = &freeRegionBuckets[21], .next = &freeRegionBuckets[21] }, - { .prev = &freeRegionBuckets[22], .next = &freeRegionBuckets[22] }, - { .prev = &freeRegionBuckets[23], .next = &freeRegionBuckets[23] }, - { .prev = &freeRegionBuckets[24], .next = &freeRegionBuckets[24] }, - { .prev = &freeRegionBuckets[25], .next = &freeRegionBuckets[25] }, - { .prev = &freeRegionBuckets[26], .next = &freeRegionBuckets[26] }, - { .prev = &freeRegionBuckets[27], .next = &freeRegionBuckets[27] }, - { .prev = &freeRegionBuckets[28], .next = &freeRegionBuckets[28] }, - { .prev = &freeRegionBuckets[29], .next = &freeRegionBuckets[29] }, - { .prev = &freeRegionBuckets[30], .next = &freeRegionBuckets[30] }, - { .prev = &freeRegionBuckets[31], .next = &freeRegionBuckets[31] }, - { .prev = &freeRegionBuckets[32], .next = &freeRegionBuckets[32] }, - { .prev = &freeRegionBuckets[33], .next = &freeRegionBuckets[33] }, - { .prev = &freeRegionBuckets[34], .next = &freeRegionBuckets[34] }, - { .prev = &freeRegionBuckets[35], .next = &freeRegionBuckets[35] }, - { .prev = &freeRegionBuckets[36], .next = &freeRegionBuckets[36] }, - { .prev = &freeRegionBuckets[37], .next = &freeRegionBuckets[37] }, - { .prev = &freeRegionBuckets[38], .next = &freeRegionBuckets[38] }, - { .prev = &freeRegionBuckets[39], .next = &freeRegionBuckets[39] }, - { .prev = &freeRegionBuckets[40], .next = &freeRegionBuckets[40] }, - { .prev = &freeRegionBuckets[41], .next = &freeRegionBuckets[41] }, - { .prev = &freeRegionBuckets[42], .next = &freeRegionBuckets[42] }, - { .prev = &freeRegionBuckets[43], .next = &freeRegionBuckets[43] }, - { .prev = &freeRegionBuckets[44], .next = &freeRegionBuckets[44] }, - { .prev = &freeRegionBuckets[45], .next = &freeRegionBuckets[45] }, - { .prev = &freeRegionBuckets[46], .next = &freeRegionBuckets[46] }, - { .prev = &freeRegionBuckets[47], .next = &freeRegionBuckets[47] }, - { .prev = &freeRegionBuckets[48], .next = &freeRegionBuckets[48] }, - { .prev = &freeRegionBuckets[49], .next = &freeRegionBuckets[49] }, - { .prev = &freeRegionBuckets[50], .next = &freeRegionBuckets[50] }, - { .prev = &freeRegionBuckets[51], .next = &freeRegionBuckets[51] }, - { .prev = &freeRegionBuckets[52], .next = &freeRegionBuckets[52] }, - { .prev = &freeRegionBuckets[53], .next = &freeRegionBuckets[53] }, - { .prev = &freeRegionBuckets[54], .next = &freeRegionBuckets[54] }, - { .prev = &freeRegionBuckets[55], .next = &freeRegionBuckets[55] }, - { .prev = &freeRegionBuckets[56], .next = &freeRegionBuckets[56] }, - { .prev = &freeRegionBuckets[57], .next = &freeRegionBuckets[57] }, - { .prev = &freeRegionBuckets[58], .next = &freeRegionBuckets[58] }, - { .prev = &freeRegionBuckets[59], .next = &freeRegionBuckets[59] }, - { .prev = &freeRegionBuckets[60], .next = &freeRegionBuckets[60] }, - { .prev = &freeRegionBuckets[61], .next = &freeRegionBuckets[61] }, - { .prev = &freeRegionBuckets[62], .next = &freeRegionBuckets[62] }, - { .prev = &freeRegionBuckets[63], .next = &freeRegionBuckets[63] }, -}; - -// A bitmask that tracks the population status for each of the 64 distinct memory regions: -// a zero at bit position i means that the free list bucket i is empty. This bitmask is -// used to avoid redundant scanning of the 64 different free region buckets: instead by -// looking at the bitmask we can find in constant time an index to a free region bucket -// that contains free memory of desired size. -static BUCKET_BITMASK_T freeRegionBucketsUsed = 0; - -// Amount of bytes taken up by allocation header data -#define REGION_HEADER_SIZE (2*sizeof(size_t)) - -// Smallest allocation size that is possible is 2*pointer size, since payload of each region must at least contain space -// to store the free region linked list prev and next pointers. An allocation size smaller than this will be rounded up -// to this size. -#define SMALLEST_ALLOCATION_SIZE (2*sizeof(void*)) - -/* Subdivide regions of free space into distinct circular doubly linked lists, where each linked list -represents a range of free space blocks. The following function compute_free_list_bucket() converts -an allocation size to the bucket index that should be looked at. The buckets are grouped as follows: - - Bucket 0: [8, 15], range size=8 - Bucket 1: [16, 23], range size=8 - Bucket 2: [24, 31], range size=8 - Bucket 3: [32, 39], range size=8 - Bucket 4: [40, 47], range size=8 - Bucket 5: [48, 55], range size=8 - Bucket 6: [56, 63], range size=8 - Bucket 7: [64, 71], range size=8 - Bucket 8: [72, 79], range size=8 - Bucket 9: [80, 87], range size=8 - Bucket 10: [88, 95], range size=8 - Bucket 11: [96, 103], range size=8 - Bucket 12: [104, 111], range size=8 - Bucket 13: [112, 119], range size=8 - Bucket 14: [120, 159], range size=40 - Bucket 15: [160, 191], range size=32 - Bucket 16: [192, 223], range size=32 - Bucket 17: [224, 255], range size=32 - Bucket 18: [256, 319], range size=64 - Bucket 19: [320, 383], range size=64 - Bucket 20: [384, 447], range size=64 - Bucket 21: [448, 511], range size=64 - Bucket 22: [512, 639], range size=128 - Bucket 23: [640, 767], range size=128 - Bucket 24: [768, 895], range size=128 - Bucket 25: [896, 1023], range size=128 - Bucket 26: [1024, 1279], range size=256 - Bucket 27: [1280, 1535], range size=256 - Bucket 28: [1536, 1791], range size=256 - Bucket 29: [1792, 2047], range size=256 - Bucket 30: [2048, 2559], range size=512 - Bucket 31: [2560, 3071], range size=512 - Bucket 32: [3072, 3583], range size=512 - Bucket 33: [3584, 6143], range size=2560 - Bucket 34: [6144, 8191], range size=2048 - Bucket 35: [8192, 12287], range size=4096 - Bucket 36: [12288, 16383], range size=4096 - Bucket 37: [16384, 24575], range size=8192 - Bucket 38: [24576, 32767], range size=8192 - Bucket 39: [32768, 49151], range size=16384 - Bucket 40: [49152, 65535], range size=16384 - Bucket 41: [65536, 98303], range size=32768 - Bucket 42: [98304, 131071], range size=32768 - Bucket 43: [131072, 196607], range size=65536 - Bucket 44: [196608, 262143], range size=65536 - Bucket 45: [262144, 393215], range size=131072 - Bucket 46: [393216, 524287], range size=131072 - Bucket 47: [524288, 786431], range size=262144 - Bucket 48: [786432, 1048575], range size=262144 - Bucket 49: [1048576, 1572863], range size=524288 - Bucket 50: [1572864, 2097151], range size=524288 - Bucket 51: [2097152, 3145727], range size=1048576 - Bucket 52: [3145728, 4194303], range size=1048576 - Bucket 53: [4194304, 6291455], range size=2097152 - Bucket 54: [6291456, 8388607], range size=2097152 - Bucket 55: [8388608, 12582911], range size=4194304 - Bucket 56: [12582912, 16777215], range size=4194304 - Bucket 57: [16777216, 25165823], range size=8388608 - Bucket 58: [25165824, 33554431], range size=8388608 - Bucket 59: [33554432, 50331647], range size=16777216 - Bucket 60: [50331648, 67108863], range size=16777216 - Bucket 61: [67108864, 100663295], range size=33554432 - Bucket 62: [100663296, 134217727], range size=33554432 - Bucket 63: 134217728 bytes and larger. */ -static_assert(NUM_FREE_BUCKETS == 64, "Following function is tailored specifically for NUM_FREE_BUCKETS == 64 case"); -static int compute_free_list_bucket(size_t allocSize) -{ - if (allocSize < 128) return (allocSize >> 3) - 1; - int clz = __builtin_clz(allocSize); - int bucketIndex = (clz > 19) ? 110 - (clz<<2) + ((allocSize >> (29-clz)) ^ 4) : MIN(71 - (clz<<1) + ((allocSize >> (30-clz)) ^ 2), NUM_FREE_BUCKETS-1); - assert(bucketIndex >= 0); - assert(bucketIndex < NUM_FREE_BUCKETS); - return bucketIndex; -} - -#define DECODE_CEILING_SIZE(size) ((size_t)((size) & ~FREE_REGION_FLAG)) - -static Region *prev_region(Region *region) -{ - size_t prevRegionSize = ((size_t*)region)[-1]; - prevRegionSize = DECODE_CEILING_SIZE(prevRegionSize); - return (Region*)((uint8_t*)region - prevRegionSize); -} - -static Region *next_region(Region *region) -{ - return (Region*)((uint8_t*)region + region->size); -} - -static size_t region_ceiling_size(Region *region) -{ - return ((size_t*)((uint8_t*)region + region->size))[-1]; -} - -static bool region_is_free(Region *r) -{ - return region_ceiling_size(r) & FREE_REGION_FLAG; -} - -static bool region_is_in_use(Region *r) -{ - return r->size == region_ceiling_size(r); -} - -static size_t size_of_region_from_ceiling(Region *r) -{ - size_t size = region_ceiling_size(r); - return DECODE_CEILING_SIZE(size); -} - -static bool debug_region_is_consistent(Region *r) -{ - assert(r); - size_t sizeAtBottom = r->size; - size_t sizeAtCeiling = size_of_region_from_ceiling(r); - return sizeAtBottom == sizeAtCeiling; -} - -static uint8_t *region_payload_start_ptr(Region *region) -{ - return (uint8_t*)region + sizeof(size_t); -} - -static uint8_t *region_payload_end_ptr(Region *region) -{ - return (uint8_t*)region + region->size - sizeof(size_t); -} - -static void create_used_region(void *ptr, size_t size) -{ - assert(ptr); - assert(HAS_ALIGNMENT(ptr, sizeof(size_t))); - assert(HAS_ALIGNMENT(size, sizeof(size_t))); - assert(size >= sizeof(Region)); - *(size_t*)ptr = size; - ((size_t*)ptr)[(size/sizeof(size_t))-1] = size; -} - -static void create_free_region(void *ptr, size_t size) -{ - assert(ptr); - assert(HAS_ALIGNMENT(ptr, sizeof(size_t))); - assert(HAS_ALIGNMENT(size, sizeof(size_t))); - assert(size >= sizeof(Region)); - Region *freeRegion = (Region*)ptr; - freeRegion->size = size; - ((size_t*)ptr)[(size/sizeof(size_t))-1] = size | FREE_REGION_FLAG; -} - -static void prepend_to_free_list(Region *region, Region *prependTo) -{ - assert(region); - assert(prependTo); - // N.b. the region we are prepending to is always the sentinel node, - // which represents a dummy node that is technically not a free node, so - // region_is_free(prependTo) does not hold. - assert(region_is_free((Region*)region)); - region->next = prependTo; - region->prev = prependTo->prev; - assert(region->prev); - prependTo->prev = region; - region->prev->next = region; -} - -static void unlink_from_free_list(Region *region) -{ - assert(region); - assert(region_is_free((Region*)region)); - assert(region->prev); - assert(region->next); - region->prev->next = region->next; - region->next->prev = region->prev; -} - -static void link_to_free_list(Region *freeRegion) -{ - assert(freeRegion); - assert(freeRegion->size >= sizeof(Region)); - int bucketIndex = compute_free_list_bucket(freeRegion->size-REGION_HEADER_SIZE); - Region *freeListHead = freeRegionBuckets + bucketIndex; - freeRegion->prev = freeListHead; - freeRegion->next = freeListHead->next; - assert(freeRegion->next); - freeListHead->next = freeRegion; - freeRegion->next->prev = freeRegion; - freeRegionBucketsUsed |= ((BUCKET_BITMASK_T)1) << bucketIndex; -} - -#if 0 -static void dump_memory_regions() -{ - ASSERT_MALLOC_IS_ACQUIRED(); - RootRegion *root = listOfAllRegions; - MAIN_THREAD_ASYNC_EM_ASM(console.log('All memory regions:')); - while(root) - { - Region *r = (Region*)root; - assert(debug_region_is_consistent(r)); - uint8_t *lastRegionEnd = root->endPtr; - MAIN_THREAD_ASYNC_EM_ASM(console.log('Region block 0x'+($0>>>0).toString(16)+' - 0x'+($1>>>0).toString(16)+ ' ('+($2>>>0)+' bytes):'), - r, lastRegionEnd, lastRegionEnd-(uint8_t*)r); - while((uint8_t*)r < lastRegionEnd) - { - MAIN_THREAD_ASYNC_EM_ASM(console.log('Region 0x'+($0>>>0).toString(16)+', size: '+($1>>>0)+' ('+($2?"used":"--FREE--")+')'), - r, r->size, region_ceiling_size(r) == r->size); - - assert(debug_region_is_consistent(r)); - size_t sizeFromCeiling = size_of_region_from_ceiling(r); - if (sizeFromCeiling != r->size) - MAIN_THREAD_ASYNC_EM_ASM(console.log('Corrupt region! Size marker at the end of the region does not match: '+($0>>>0)), sizeFromCeiling); - if (r->size == 0) - break; - r = next_region(r); - } - root = root->next; - MAIN_THREAD_ASYNC_EM_ASM(console.log("")); - } - MAIN_THREAD_ASYNC_EM_ASM(console.log('Free regions:')); - for(int i = 0; i < NUM_FREE_BUCKETS; ++i) - { - Region *prev = &freeRegionBuckets[i]; - Region *fr = freeRegionBuckets[i].next; - while(fr != &freeRegionBuckets[i]) - { - MAIN_THREAD_ASYNC_EM_ASM(console.log('In bucket '+$0+', free region 0x'+($1>>>0).toString(16)+', size: ' + ($2>>>0) + ' (size at ceiling: '+($3>>>0)+'), prev: 0x' + ($4>>>0).toString(16) + ', next: 0x' + ($5>>>0).toString(16)), - i, fr, fr->size, size_of_region_from_ceiling(fr), fr->prev, fr->next); - assert(debug_region_is_consistent(fr)); - assert(region_is_free(fr)); - assert(fr->prev == prev); - prev = fr; - assert(fr->next != fr); - assert(fr->prev != fr); - fr = fr->next; - } - } - MAIN_THREAD_ASYNC_EM_ASM(console.log('Free bucket index map: ' + ($0>>>0).toString(2) + ' ' + ($1>>>0).toString(2)), (uint32_t)(freeRegionBucketsUsed >> 32), (uint32_t)freeRegionBucketsUsed); - MAIN_THREAD_ASYNC_EM_ASM(console.log("")); -} - -void emmalloc_dump_memory_regions() -{ - MALLOC_ACQUIRE(); - dump_memory_regions(); - MALLOC_RELEASE(); -} - -static int validate_memory_regions() -{ - ASSERT_MALLOC_IS_ACQUIRED(); - RootRegion *root = listOfAllRegions; - while(root) - { - Region *r = (Region*)root; - if (!debug_region_is_consistent(r)) - { - MAIN_THREAD_ASYNC_EM_ASM(console.error('Used region 0x'+($0>>>0).toString(16)+', size: '+($1>>>0)+' ('+($2?"used":"--FREE--")+') is corrupt (size markers in the beginning and at the end of the region do not match!)'), - r, r->size, region_ceiling_size(r) == r->size); - return 1; - } - uint8_t *lastRegionEnd = root->endPtr; - while((uint8_t*)r < lastRegionEnd) - { - if (!debug_region_is_consistent(r)) - { - MAIN_THREAD_ASYNC_EM_ASM(console.error('Used region 0x'+($0>>>0).toString(16)+', size: '+($1>>>0)+' ('+($2?"used":"--FREE--")+') is corrupt (size markers in the beginning and at the end of the region do not match!)'), - r, r->size, region_ceiling_size(r) == r->size); - return 1; - } - if (r->size == 0) - break; - r = next_region(r); - } - root = root->next; - } - for(int i = 0; i < NUM_FREE_BUCKETS; ++i) - { - Region *prev = &freeRegionBuckets[i]; - Region *fr = freeRegionBuckets[i].next; - while(fr != &freeRegionBuckets[i]) - { - if (!debug_region_is_consistent(fr) || !region_is_free(fr) || fr->prev != prev || fr->next == fr || fr->prev == fr) - { - MAIN_THREAD_ASYNC_EM_ASM(console.log('In bucket '+$0+', free region 0x'+($1>>>0).toString(16)+', size: ' + ($2>>>0) + ' (size at ceiling: '+($3>>>0)+'), prev: 0x' + ($4>>>0).toString(16) + ', next: 0x' + ($5>>>0).toString(16) + ' is corrupt!'), - i, fr, fr->size, size_of_region_from_ceiling(fr), fr->prev, fr->next); - return 1; - } - prev = fr; - fr = fr->next; - } - } - return 0; -} - -int emmalloc_validate_memory_regions() -{ - MALLOC_ACQUIRE(); - int memoryError = validate_memory_regions(); - MALLOC_RELEASE(); - return memoryError; -} -#endif - -static bool claim_more_memory(size_t numBytes) -{ -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('claim_more_memory(numBytes='+($0>>>0)+ ')'), numBytes); -#endif - -#ifdef EMMALLOC_MEMVALIDATE - validate_memory_regions(); -#endif - - uint8_t *startPtr; - uint8_t *endPtr; - do { - // If this is the first time we're called, see if we can use - // the initial heap memory set up by wasm-ld. - if (!listOfAllRegions) { - unsigned char *heap_base = &__heap_base; - unsigned char *heap_end = &__heap_end; - if (heap_end < heap_base) { - __builtin_trap(); - } - if (numBytes <= (size_t)(heap_end - heap_base)) { - startPtr = heap_base; - endPtr = heap_end; - break; - } - } - - // Round numBytes up to the nearest page size. - numBytes = (numBytes + (PAGESIZE-1)) & -PAGESIZE; - - // Claim memory via sbrk - startPtr = (uint8_t*)sbrk(numBytes); - if ((intptr_t)startPtr == -1) - { -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.error('claim_more_memory: sbrk failed!')); -#endif - return false; - } -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('claim_more_memory: claimed 0x' + ($0>>>0).toString(16) + ' - 0x' + ($1>>>0).toString(16) + ' (' + ($2>>>0) + ' bytes) via sbrk()'), startPtr, startPtr + numBytes, numBytes); -#endif - assert(HAS_ALIGNMENT(startPtr, alignof(size_t))); - endPtr = startPtr + numBytes; - } while (0); - - // Create a sentinel region at the end of the new heap block - Region *endSentinelRegion = (Region*)(endPtr - sizeof(Region)); - create_used_region(endSentinelRegion, sizeof(Region)); - - // If we are the sole user of sbrk(), it will feed us continuous/consecutive memory addresses - take advantage - // of that if so: instead of creating two disjoint memory regions blocks, expand the previous one to a larger size. - uint8_t *previousSbrkEndAddress = listOfAllRegions ? listOfAllRegions->endPtr : 0; - if (startPtr == previousSbrkEndAddress) - { - Region *prevEndSentinel = prev_region((Region*)startPtr); - assert(debug_region_is_consistent(prevEndSentinel)); - assert(region_is_in_use(prevEndSentinel)); - Region *prevRegion = prev_region(prevEndSentinel); - assert(debug_region_is_consistent(prevRegion)); - - listOfAllRegions->endPtr = endPtr; - - // Two scenarios, either the last region of the previous block was in use, in which case we need to create - // a new free region in the newly allocated space; or it was free, in which case we can extend that region - // to cover a larger size. - if (region_is_free(prevRegion)) - { - size_t newFreeRegionSize = (uint8_t*)endSentinelRegion - (uint8_t*)prevRegion; - unlink_from_free_list(prevRegion); - create_free_region(prevRegion, newFreeRegionSize); - link_to_free_list(prevRegion); - return true; - } - // else: last region of the previous block was in use. Since we are joining two consecutive sbrk() blocks, - // we can swallow the end sentinel of the previous block away. - startPtr -= sizeof(Region); - } - else - { - // Create a root region at the start of the heap block - create_used_region(startPtr, sizeof(Region)); - - // Dynamic heap start region: - RootRegion *newRegionBlock = (RootRegion*)startPtr; - newRegionBlock->next = listOfAllRegions; // Pointer to next region block head - newRegionBlock->endPtr = endPtr; // Pointer to the end address of this region block - listOfAllRegions = newRegionBlock; - startPtr += sizeof(Region); - } - - // Create a new memory region for the new claimed free space. - create_free_region(startPtr, (uint8_t*)endSentinelRegion - startPtr); - link_to_free_list((Region*)startPtr); - return true; -} - -#if 0 -// Initialize emmalloc during static initialization. -// See system/lib/README.md for static constructor ordering. -__attribute__((constructor(47))) -static void initialize_emmalloc_heap() -{ - // Initialize circular doubly linked lists representing free space - // Never useful to unroll this for loop, just takes up code size. -#pragma clang loop unroll(disable) - for(int i = 0; i < NUM_FREE_BUCKETS; ++i) - freeRegionBuckets[i].prev = freeRegionBuckets[i].next = &freeRegionBuckets[i]; - -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('initialize_emmalloc_heap()')); -#endif - - // Start with a tiny dynamic region. - claim_more_memory(3*sizeof(Region)); -} - -void emmalloc_blank_slate_from_orbit() -{ - MALLOC_ACQUIRE(); - listOfAllRegions = NULL; - freeRegionBucketsUsed = 0; - initialize_emmalloc_heap(); - MALLOC_RELEASE(); -} -#endif - -static void *attempt_allocate(Region *freeRegion, size_t alignment, size_t size) -{ - ASSERT_MALLOC_IS_ACQUIRED(); - assert(freeRegion); - // Look at the next potential free region to allocate into. - // First, we should check if the free region has enough of payload bytes contained - // in it to accommodate the new allocation. This check needs to take account the - // requested allocation alignment, so the payload memory area needs to be rounded - // upwards to the desired alignment. - uint8_t *payloadStartPtr = region_payload_start_ptr(freeRegion); - uint8_t *payloadStartPtrAligned = ALIGN_UP(payloadStartPtr, alignment); - uint8_t *payloadEndPtr = region_payload_end_ptr(freeRegion); - - // Do we have enough free space, taking into account alignment? - if (payloadStartPtrAligned + size > payloadEndPtr) - return NULL; - - // We have enough free space, so the memory allocation will be made into this region. Remove this free region - // from the list of free regions: whatever slop remains will be later added back to the free region pool. - unlink_from_free_list(freeRegion); - - // Before we proceed further, fix up the boundary between this and the preceding region, - // so that the boundary between the two regions happens at a right spot for the payload to be aligned. - if (payloadStartPtr != payloadStartPtrAligned) - { - Region *prevRegion = prev_region((Region*)freeRegion); - // We never have two free regions adjacent to each other, so the region before this free - // region should be in use. - assert(region_is_in_use(prevRegion)); - size_t regionBoundaryBumpAmount = payloadStartPtrAligned - payloadStartPtr; - size_t newThisRegionSize = freeRegion->size - regionBoundaryBumpAmount; - create_used_region(prevRegion, prevRegion->size + regionBoundaryBumpAmount); - freeRegion = (Region *)((uint8_t*)freeRegion + regionBoundaryBumpAmount); - freeRegion->size = newThisRegionSize; - } - // Next, we need to decide whether this region is so large that it should be split into two regions, - // one representing the newly used memory area, and at the high end a remaining leftover free area. - // This splitting to two is done always if there is enough space for the high end to fit a region. - // Carve 'size' bytes of payload off this region. So, - // [sz prev next sz] - // becomes - // [sz payload sz] [sz prev next sz] - if (sizeof(Region) + REGION_HEADER_SIZE + size <= freeRegion->size) - { - // There is enough space to keep a free region at the end of the carved out block - // -> construct the new block - Region *newFreeRegion = (Region *)((uint8_t*)freeRegion + REGION_HEADER_SIZE + size); - create_free_region(newFreeRegion, freeRegion->size - size - REGION_HEADER_SIZE); - link_to_free_list(newFreeRegion); - - // Recreate the resized Region under its new size. - create_used_region(freeRegion, size + REGION_HEADER_SIZE); - } - else - { - // There is not enough space to split the free memory region into used+free parts, so consume the whole - // region as used memory, not leaving a free memory region behind. - // Initialize the free region as used by resetting the ceiling size to the same value as the size at bottom. - ((size_t*)((uint8_t*)freeRegion + freeRegion->size))[-1] = freeRegion->size; - } - -#ifdef __EMSCRIPTEN_TRACING__ - emscripten_trace_record_allocation(freeRegion, freeRegion->size); -#endif - -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('attempt_allocate - succeeded allocating memory, region ptr=0x' + ($0>>>0).toString(16) + ', align=' + $1 + ', payload size=' + ($2>>>0) + ' bytes)'), freeRegion, alignment, size); -#endif - - return (uint8_t*)freeRegion + sizeof(size_t); -} - -static size_t validate_alloc_alignment(size_t alignment) -{ - // Cannot perform allocations that are less than 4 byte aligned, because the Region - // control structures need to be aligned. Also round up to minimum outputted alignment. - alignment = MAX(alignment, MALLOC_ALIGNMENT); - // Arbitrary upper limit on alignment - very likely a programming bug if alignment is higher than this. - assert(alignment <= 1024*1024); - return alignment; -} - -static size_t validate_alloc_size(size_t size) -{ - assert(size + REGION_HEADER_SIZE > size); - - // Allocation sizes must be a multiple of pointer sizes, and at least 2*sizeof(pointer). - size_t validatedSize = size > SMALLEST_ALLOCATION_SIZE ? (size_t)ALIGN_UP(size, sizeof(Region*)) : SMALLEST_ALLOCATION_SIZE; - assert(validatedSize >= size); // 32-bit wraparound should not occur, too large sizes should be stopped before - - return validatedSize; -} - -static void *allocate_memory(size_t alignment, size_t size) -{ - ASSERT_MALLOC_IS_ACQUIRED(); - -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('allocate_memory(align=' + $0 + ', size=' + ($1>>>0) + ' bytes)'), alignment, size); -#endif - -#ifdef EMMALLOC_MEMVALIDATE - validate_memory_regions(); -#endif - - if (!IS_POWER_OF_2(alignment)) - { -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('Allocation failed: alignment not power of 2!')); -#endif - return 0; - } - - if (size > MAX_ALLOC_SIZE) - { -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('Allocation failed: attempted allocation size is too large: ' + ($0 >>> 0) + 'bytes! (negative integer wraparound?)'), size); -#endif - return 0; - } - - alignment = validate_alloc_alignment(alignment); - size = validate_alloc_size(size); - - // Attempt to allocate memory starting from smallest bucket that can contain the required amount of memory. - // Under normal alignment conditions this should always be the first or second bucket we look at, but if - // performing an allocation with complex alignment, we may need to look at multiple buckets. - int bucketIndex = compute_free_list_bucket(size); - BUCKET_BITMASK_T bucketMask = freeRegionBucketsUsed >> bucketIndex; - - // Loop through each bucket that has free regions in it, based on bits set in freeRegionBucketsUsed bitmap. - while(bucketMask) - { - BUCKET_BITMASK_T indexAdd = __builtin_ctzll(bucketMask); - bucketIndex += indexAdd; - bucketMask >>= indexAdd; - assert(bucketIndex >= 0); - assert(bucketIndex <= NUM_FREE_BUCKETS-1); - assert(freeRegionBucketsUsed & (((BUCKET_BITMASK_T)1) << bucketIndex)); - - Region *freeRegion = freeRegionBuckets[bucketIndex].next; - assert(freeRegion); - if (freeRegion != &freeRegionBuckets[bucketIndex]) - { - void *ptr = attempt_allocate(freeRegion, alignment, size); - if (ptr) - return ptr; - - // We were not able to allocate from the first region found in this bucket, so penalize - // the region by cycling it to the end of the doubly circular linked list. (constant time) - // This provides a randomized guarantee that when performing allocations of size k to a - // bucket of [k-something, k+something] range, we will not always attempt to satisfy the - // allocation from the same available region at the front of the list, but we try each - // region in turn. - unlink_from_free_list(freeRegion); - prepend_to_free_list(freeRegion, &freeRegionBuckets[bucketIndex]); - // But do not stick around to attempt to look at other regions in this bucket - move - // to search the next populated bucket index if this did not fit. This gives a practical - // "allocation in constant time" guarantee, since the next higher bucket will only have - // regions that are all of strictly larger size than the requested allocation. Only if - // there is a difficult alignment requirement we may fail to perform the allocation from - // a region in the next bucket, and if so, we keep trying higher buckets until one of them - // works. - ++bucketIndex; - bucketMask >>= 1; - } - else - { - // This bucket was not populated after all with any regions, - // but we just had a stale bit set to mark a populated bucket. - // Reset the bit to update latest status so that we do not - // redundantly look at this bucket again. - freeRegionBucketsUsed &= ~(((BUCKET_BITMASK_T)1) << bucketIndex); - bucketMask ^= 1; - } - // Instead of recomputing bucketMask from scratch at the end of each loop, it is updated as we go, - // to avoid undefined behavior with (x >> 32)/(x >> 64) when bucketIndex reaches 32/64, (the shift would come out as a no-op instead of 0). - assert((bucketIndex == NUM_FREE_BUCKETS && bucketMask == 0) || (bucketMask == freeRegionBucketsUsed >> bucketIndex)); - } - - // None of the buckets were able to accommodate an allocation. If this happens we are almost out of memory. - // The largest bucket might contain some suitable regions, but we only looked at one region in that bucket, so - // as a last resort, loop through more free regions in the bucket that represents the largest allocations available. - // But only if the bucket representing largest allocations available is not any of the first thirty buckets, - // these represent allocatable areas less than <1024 bytes - which could be a lot of scrap. - // In such case, prefer to sbrk() in more memory right away. - int largestBucketIndex = NUM_FREE_BUCKETS - 1 - __builtin_clzll(freeRegionBucketsUsed); - // freeRegion will be null if there is absolutely no memory left. (all buckets are 100% used) - Region *freeRegion = freeRegionBucketsUsed ? freeRegionBuckets[largestBucketIndex].next : 0; - // The 30 first free region buckets cover memory blocks < 2048 bytes, so skip looking at those here (too small) - if (freeRegionBucketsUsed >> 30) - { - // Look only at a constant number of regions in this bucket max, to avoid bad worst case behavior. - // If this many regions cannot find free space, we give up and prefer to sbrk() more instead. - const int maxRegionsToTryBeforeGivingUp = 99; - int numTriesLeft = maxRegionsToTryBeforeGivingUp; - while(freeRegion != &freeRegionBuckets[largestBucketIndex] && numTriesLeft-- > 0) - { - void *ptr = attempt_allocate(freeRegion, alignment, size); - if (ptr) - return ptr; - freeRegion = freeRegion->next; - } - } - - // We were unable to find a free memory region. Must sbrk() in more memory! - size_t numBytesToClaim = size+sizeof(Region)*3; - assert(numBytesToClaim > size); // 32-bit wraparound should not happen here, allocation size has been validated above! - bool success = claim_more_memory(numBytesToClaim); - if (success) - return allocate_memory(alignment, size); // Recurse back to itself to try again - - // also sbrk() failed, we are really really constrained :( As a last resort, go back to looking at the - // bucket we already looked at above, continuing where the above search left off - perhaps there are - // regions we overlooked the first time that might be able to satisfy the allocation. - if (freeRegion) - { - while(freeRegion != &freeRegionBuckets[largestBucketIndex]) - { - void *ptr = attempt_allocate(freeRegion, alignment, size); - if (ptr) - return ptr; - freeRegion = freeRegion->next; - } - } - -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('Could not find a free memory block!')); -#endif - - return 0; -} - -static -void *emmalloc_memalign(size_t alignment, size_t size) -{ - MALLOC_ACQUIRE(); - void *ptr = allocate_memory(alignment, size); - MALLOC_RELEASE(); - return ptr; -} - -#if 0 -void * EMMALLOC_EXPORT memalign(size_t alignment, size_t size) -{ - return emmalloc_memalign(alignment, size); -} -#endif - -void * EMMALLOC_EXPORT aligned_alloc(size_t alignment, size_t size) -{ - if ((alignment % sizeof(void *) != 0) || (size % alignment) != 0) - return 0; - return emmalloc_memalign(alignment, size); -} - -static -void *emmalloc_malloc(size_t size) -{ - return emmalloc_memalign(MALLOC_ALIGNMENT, size); -} - -void * EMMALLOC_EXPORT malloc(size_t size) -{ - return emmalloc_malloc(size); -} - -static -size_t emmalloc_usable_size(void *ptr) -{ - if (!ptr) - return 0; - - uint8_t *regionStartPtr = (uint8_t*)ptr - sizeof(size_t); - Region *region = (Region*)(regionStartPtr); - assert(HAS_ALIGNMENT(region, sizeof(size_t))); - - MALLOC_ACQUIRE(); - - size_t size = region->size; - assert(size >= sizeof(Region)); - assert(region_is_in_use(region)); - - MALLOC_RELEASE(); - - return size - REGION_HEADER_SIZE; -} - -size_t EMMALLOC_EXPORT malloc_usable_size(void *ptr) -{ - return emmalloc_usable_size(ptr); -} - -static -void emmalloc_free(void *ptr) -{ -#ifdef EMMALLOC_MEMVALIDATE - emmalloc_validate_memory_regions(); -#endif - - if (!ptr) - return; - -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('free(ptr=0x'+($0>>>0).toString(16)+')'), ptr); -#endif - - uint8_t *regionStartPtr = (uint8_t*)ptr - sizeof(size_t); - Region *region = (Region*)(regionStartPtr); - assert(HAS_ALIGNMENT(region, sizeof(size_t))); - - MALLOC_ACQUIRE(); - - size_t size = region->size; -#ifdef EMMALLOC_VERBOSE - if (size < sizeof(Region) || !region_is_in_use(region)) - { - if (debug_region_is_consistent(region)) - // LLVM wasm backend bug: cannot use MAIN_THREAD_ASYNC_EM_ASM() here, that generates internal compiler error - // Reproducible by running e.g. other.test_alloc_3GB - EM_ASM(console.error('Double free at region ptr 0x' + ($0>>>0).toString(16) + ', region->size: 0x' + ($1>>>0).toString(16) + ', region->sizeAtCeiling: 0x' + ($2>>>0).toString(16) + ')'), region, size, region_ceiling_size(region)); - else - MAIN_THREAD_ASYNC_EM_ASM(console.error('Corrupt region at region ptr 0x' + ($0>>>0).toString(16) + ' region->size: 0x' + ($1>>>0).toString(16) + ', region->sizeAtCeiling: 0x' + ($2>>>0).toString(16) + ')'), region, size, region_ceiling_size(region)); - } -#endif - assert(size >= sizeof(Region)); - assert(region_is_in_use(region)); - -#ifdef __EMSCRIPTEN_TRACING__ - emscripten_trace_record_free(region); -#endif - - // Check merging with left side - size_t prevRegionSizeField = ((size_t*)region)[-1]; - size_t prevRegionSize = prevRegionSizeField & ~FREE_REGION_FLAG; - if (prevRegionSizeField != prevRegionSize) // Previous region is free? - { - Region *prevRegion = (Region*)((uint8_t*)region - prevRegionSize); - assert(debug_region_is_consistent(prevRegion)); - unlink_from_free_list(prevRegion); - regionStartPtr = (uint8_t*)prevRegion; - size += prevRegionSize; - } - - // Check merging with right side - Region *nextRegion = next_region(region); - assert(debug_region_is_consistent(nextRegion)); - size_t sizeAtEnd = *(size_t*)region_payload_end_ptr(nextRegion); - if (nextRegion->size != sizeAtEnd) - { - unlink_from_free_list(nextRegion); - size += nextRegion->size; - } - - create_free_region(regionStartPtr, size); - link_to_free_list((Region*)regionStartPtr); - - MALLOC_RELEASE(); - -#ifdef EMMALLOC_MEMVALIDATE - emmalloc_validate_memory_regions(); -#endif -} - -void EMMALLOC_EXPORT free(void *ptr) -{ - emmalloc_free(ptr); -} - -// Can be called to attempt to increase or decrease the size of the given region -// to a new size (in-place). Returns 1 if resize succeeds, and 0 on failure. -static int attempt_region_resize(Region *region, size_t size) -{ - ASSERT_MALLOC_IS_ACQUIRED(); - assert(size > 0); - assert(HAS_ALIGNMENT(size, sizeof(size_t))); - -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('attempt_region_resize(region=0x' + ($0>>>0).toString(16) + ', size=' + ($1>>>0) + ' bytes)'), region, size); -#endif - - // First attempt to resize this region, if the next region that follows this one - // is a free region. - Region *nextRegion = next_region(region); - uint8_t *nextRegionEndPtr = (uint8_t*)nextRegion + nextRegion->size; - size_t sizeAtCeiling = ((size_t*)nextRegionEndPtr)[-1]; - if (nextRegion->size != sizeAtCeiling) // Next region is free? - { - assert(region_is_free(nextRegion)); - uint8_t *newNextRegionStartPtr = (uint8_t*)region + size; - assert(HAS_ALIGNMENT(newNextRegionStartPtr, sizeof(size_t))); - // Next region does not shrink to too small size? - if (newNextRegionStartPtr + sizeof(Region) <= nextRegionEndPtr) - { - unlink_from_free_list(nextRegion); - create_free_region(newNextRegionStartPtr, nextRegionEndPtr - newNextRegionStartPtr); - link_to_free_list((Region*)newNextRegionStartPtr); - create_used_region(region, newNextRegionStartPtr - (uint8_t*)region); - return 1; - } - // If we remove the next region altogether, allocation is satisfied? - if (newNextRegionStartPtr <= nextRegionEndPtr) - { - unlink_from_free_list(nextRegion); - create_used_region(region, region->size + nextRegion->size); - return 1; - } - } - else - { - // Next region is an used region - we cannot change its starting address. However if we are shrinking the - // size of this region, we can create a new free region between this and the next used region. - if (size + sizeof(Region) <= region->size) - { - size_t freeRegionSize = region->size - size; - create_used_region(region, size); - Region *freeRegion = (Region *)((uint8_t*)region + size); - create_free_region(freeRegion, freeRegionSize); - link_to_free_list(freeRegion); - return 1; - } - else if (size <= region->size) - { - // Caller was asking to shrink the size, but due to not being able to fit a full Region in the shrunk - // area, we cannot actually do anything. This occurs if the shrink amount is really small. In such case, - // just call it success without doing any work. - return 1; - } - } -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('attempt_region_resize failed.')); -#endif - return 0; -} - -static int acquire_and_attempt_region_resize(Region *region, size_t size) -{ - MALLOC_ACQUIRE(); - int success = attempt_region_resize(region, size); - MALLOC_RELEASE(); - return success; -} - -static -void *emmalloc_aligned_realloc(void *ptr, size_t alignment, size_t size) -{ -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('aligned_realloc(ptr=0x' + ($0>>>0).toString(16) + ', alignment=' + $1 + ', size=' + ($2>>>0)), ptr, alignment, size); -#endif - - if (!ptr) - return emmalloc_memalign(alignment, size); - - if (size == 0) - { - free(ptr); - return 0; - } - - if (size > MAX_ALLOC_SIZE) - { -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('Allocation failed: attempted allocation size is too large: ' + ($0 >>> 0) + 'bytes! (negative integer wraparound?)'), size); -#endif - return 0; - } - - assert(IS_POWER_OF_2(alignment)); - // aligned_realloc() cannot be used to ask to change the alignment of a pointer. - assert(HAS_ALIGNMENT(ptr, alignment)); - size = validate_alloc_size(size); - - // Calculate the region start address of the original allocation - Region *region = (Region*)((uint8_t*)ptr - sizeof(size_t)); - - // First attempt to resize the given region to avoid having to copy memory around - if (acquire_and_attempt_region_resize(region, size + REGION_HEADER_SIZE)) - { -#ifdef __EMSCRIPTEN_TRACING__ - emscripten_trace_record_reallocation(ptr, ptr, size); -#endif - return ptr; - } - - // If resize failed, we must allocate a new region, copy the data over, and then - // free the old region. - void *newptr = emmalloc_memalign(alignment, size); - if (newptr) - { - memcpy(newptr, ptr, MIN(size, region->size - REGION_HEADER_SIZE)); - free(ptr); - } - // N.B. If there is not enough memory, the old memory block should not be freed and - // null pointer is returned. - return newptr; -} - -#if 0 -void * EMMALLOC_EXPORT aligned_realloc(void *ptr, size_t alignment, size_t size) -{ - return emmalloc_aligned_realloc(ptr, alignment, size); -} -#endif - -#if 0 -// realloc_try() is like realloc(), but only attempts to try to resize the existing memory -// area. If resizing the existing memory area fails, then realloc_try() will return 0 -// (the original memory block is not freed or modified). If resizing succeeds, previous -// memory contents will be valid up to min(old length, new length) bytes. -void *emmalloc_realloc_try(void *ptr, size_t size) -{ - if (!ptr) - return 0; - - if (size == 0) - { - free(ptr); - return 0; - } - - if (size > MAX_ALLOC_SIZE) - { -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('Allocation failed: attempted allocation size is too large: ' + ($0 >>> 0) + 'bytes! (negative integer wraparound?)'), size); -#endif - return 0; - } - - size = validate_alloc_size(size); - - // Calculate the region start address of the original allocation - Region *region = (Region*)((uint8_t*)ptr - sizeof(size_t)); - - // Attempt to resize the given region to avoid having to copy memory around - int success = acquire_and_attempt_region_resize(region, size + REGION_HEADER_SIZE); -#ifdef __EMSCRIPTEN_TRACING__ - if (success) - emscripten_trace_record_reallocation(ptr, ptr, size); -#endif - return success ? ptr : 0; -} - -// emmalloc_aligned_realloc_uninitialized() is like aligned_realloc(), but old memory contents -// will be undefined after reallocation. (old memory is not preserved in any case) -void *emmalloc_aligned_realloc_uninitialized(void *ptr, size_t alignment, size_t size) -{ - if (!ptr) - return emmalloc_memalign(alignment, size); - - if (size == 0) - { - free(ptr); - return 0; - } - - if (size > MAX_ALLOC_SIZE) - { -#ifdef EMMALLOC_VERBOSE - MAIN_THREAD_ASYNC_EM_ASM(console.log('Allocation failed: attempted allocation size is too large: ' + ($0 >>> 0) + 'bytes! (negative integer wraparound?)'), size); -#endif - return 0; - } - - size = validate_alloc_size(size); - - // Calculate the region start address of the original allocation - Region *region = (Region*)((uint8_t*)ptr - sizeof(size_t)); - - // First attempt to resize the given region to avoid having to copy memory around - if (acquire_and_attempt_region_resize(region, size + REGION_HEADER_SIZE)) - { -#ifdef __EMSCRIPTEN_TRACING__ - emscripten_trace_record_reallocation(ptr, ptr, size); -#endif - return ptr; - } - - // If resize failed, drop the old region and allocate a new region. Memory is not - // copied over - free(ptr); - return emmalloc_memalign(alignment, size); -} -#endif - -static -void *emmalloc_realloc(void *ptr, size_t size) -{ - return emmalloc_aligned_realloc(ptr, MALLOC_ALIGNMENT, size); -} - -void * EMMALLOC_EXPORT realloc(void *ptr, size_t size) -{ - return emmalloc_realloc(ptr, size); -} - -#if 0 -// realloc_uninitialized() is like realloc(), but old memory contents -// will be undefined after reallocation. (old memory is not preserved in any case) -void *emmalloc_realloc_uninitialized(void *ptr, size_t size) -{ - return emmalloc_aligned_realloc_uninitialized(ptr, MALLOC_ALIGNMENT, size); -} -#endif - -static -int emmalloc_posix_memalign(void **memptr, size_t alignment, size_t size) -{ - assert(memptr); - if (alignment % sizeof(void *) != 0) - return 22/* EINVAL*/; - *memptr = emmalloc_memalign(alignment, size); - return *memptr ? 0 : 12/*ENOMEM*/; -} - -int EMMALLOC_EXPORT posix_memalign(void **memptr, size_t alignment, size_t size) -{ - return emmalloc_posix_memalign(memptr, alignment, size); -} - -static -void *emmalloc_calloc(size_t num, size_t size) -{ - size_t bytes = num*size; - void *ptr = emmalloc_memalign(MALLOC_ALIGNMENT, bytes); - if (ptr) - memset(ptr, 0, bytes); - return ptr; -} - -void * EMMALLOC_EXPORT calloc(size_t num, size_t size) -{ - return emmalloc_calloc(num, size); -} - -#if 0 -static int count_linked_list_size(Region *list) -{ - int size = 1; - for(Region *i = list->next; i != list; list = list->next) - ++size; - return size; -} - -static size_t count_linked_list_space(Region *list) -{ - size_t space = 0; - for(Region *i = list->next; i != list; list = list->next) - space += region_payload_end_ptr(i) - region_payload_start_ptr(i); - return space; -} - -struct mallinfo emmalloc_mallinfo() -{ - MALLOC_ACQUIRE(); - - struct mallinfo info; - // Non-mmapped space allocated (bytes): For emmalloc, - // let's define this as the difference between heap size and dynamic top end. - info.arena = emscripten_get_heap_size() - (size_t)sbrk(0); - // Number of "ordinary" blocks. Let's define this as the number of highest - // size blocks. (subtract one from each, since there is a sentinel node in each list) - info.ordblks = count_linked_list_size(&freeRegionBuckets[NUM_FREE_BUCKETS-1])-1; - // Number of free "fastbin" blocks. For emmalloc, define this as the number - // of blocks that are not in the largest pristine block. - info.smblks = 0; - // The total number of bytes in free "fastbin" blocks. - info.fsmblks = 0; - for(int i = 0; i < NUM_FREE_BUCKETS-1; ++i) - { - info.smblks += count_linked_list_size(&freeRegionBuckets[i])-1; - info.fsmblks += count_linked_list_space(&freeRegionBuckets[i]); - } - - info.hblks = 0; // Number of mmapped regions: always 0. (no mmap support) - info.hblkhd = 0; // Amount of bytes in mmapped regions: always 0. (no mmap support) - - // Walk through all the heap blocks to report the following data: - // The "highwater mark" for allocated space—that is, the maximum amount of - // space that was ever allocated. Emmalloc does not want to pay code to - // track this, so this is only reported from current allocation data, and - // may not be accurate. - info.usmblks = 0; - info.uordblks = 0; // The total number of bytes used by in-use allocations. - info.fordblks = 0; // The total number of bytes in free blocks. - // The total amount of releasable free space at the top of the heap. - // This is the maximum number of bytes that could ideally be released by malloc_trim(3). - Region *lastActualRegion = prev_region((Region*)(listOfAllRegions->endPtr - sizeof(Region))); - info.keepcost = region_is_free(lastActualRegion) ? lastActualRegion->size : 0; - - RootRegion *root = listOfAllRegions; - while(root) - { - Region *r = (Region*)root; - assert(debug_region_is_consistent(r)); - uint8_t *lastRegionEnd = root->endPtr; - while((uint8_t*)r < lastRegionEnd) - { - assert(debug_region_is_consistent(r)); - - if (region_is_free(r)) - { - // Count only the payload of the free block towards free memory. - info.fordblks += region_payload_end_ptr(r) - region_payload_start_ptr(r); - // But the header data of the free block goes towards used memory. - info.uordblks += REGION_HEADER_SIZE; - } - else - { - info.uordblks += r->size; - } - // Update approximate watermark data - info.usmblks = MAX(info.usmblks, (intptr_t)r + r->size); - - if (r->size == 0) - break; - r = next_region(r); - } - root = root->next; - } - - MALLOC_RELEASE(); - return info; -} - -struct mallinfo EMMALLOC_EXPORT mallinfo() -{ - return emmalloc_mallinfo(); -} - -// Note! This function is not fully multithreadin safe: while this function is running, other threads should not be -// allowed to call sbrk()! -static int trim_dynamic_heap_reservation(size_t pad) -{ - ASSERT_MALLOC_IS_ACQUIRED(); - - if (!listOfAllRegions) - return 0; // emmalloc is not controlling any dynamic memory at all - cannot release memory. - uint8_t *previousSbrkEndAddress = listOfAllRegions->endPtr; - assert(sbrk(0) == previousSbrkEndAddress); - size_t lastMemoryRegionSize = ((size_t*)previousSbrkEndAddress)[-1]; - assert(lastMemoryRegionSize == 16); // // The last memory region should be a sentinel node of exactly 16 bytes in size. - Region *endSentinelRegion = (Region*)(previousSbrkEndAddress - sizeof(Region)); - Region *lastActualRegion = prev_region(endSentinelRegion); - - // Round padding up to multiple of 4 bytes to keep sbrk() and memory region alignment intact. - // Also have at least 8 bytes of payload so that we can form a full free region. - size_t newRegionSize = (size_t)ALIGN_UP(pad, 4); - if (pad > 0) - newRegionSize += sizeof(Region) - (newRegionSize - pad); - - if (!region_is_free(lastActualRegion) || lastActualRegion->size <= newRegionSize) - return 0; // Last actual region is in use, or caller desired to leave more free memory intact than there is. - - // This many bytes will be shrunk away. - size_t shrinkAmount = lastActualRegion->size - newRegionSize; - assert(HAS_ALIGNMENT(shrinkAmount, 4)); - - unlink_from_free_list(lastActualRegion); - // If pad == 0, we should delete the last free region altogether. If pad > 0, - // shrink the last free region to the desired size. - if (newRegionSize > 0) - { - create_free_region(lastActualRegion, newRegionSize); - link_to_free_list(lastActualRegion); - } - - // Recreate the sentinel region at the end of the last free region - endSentinelRegion = (Region*)((uint8_t*)lastActualRegion + newRegionSize); - create_used_region(endSentinelRegion, sizeof(Region)); - - // And update the size field of the whole region block. - listOfAllRegions->endPtr = (uint8_t*)endSentinelRegion + sizeof(Region); - - // Finally call sbrk() to shrink the memory area. - void *oldSbrk = sbrk(-(intptr_t)shrinkAmount); - assert((intptr_t)oldSbrk != -1); // Shrinking with sbrk() should never fail. - assert(oldSbrk == previousSbrkEndAddress); // Another thread should not have raced to increase sbrk() on us! - - // All successful, and we actually trimmed memory! - return 1; -} - -int emmalloc_trim(size_t pad) -{ - MALLOC_ACQUIRE(); - int success = trim_dynamic_heap_reservation(pad); - MALLOC_RELEASE(); - return success; -} - -int EMMALLOC_EXPORT malloc_trim(size_t pad) -{ - return emmalloc_trim(pad); -} - -size_t emmalloc_dynamic_heap_size() -{ - size_t dynamicHeapSize = 0; - - MALLOC_ACQUIRE(); - RootRegion *root = listOfAllRegions; - while(root) - { - dynamicHeapSize += root->endPtr - (uint8_t*)root; - root = root->next; - } - MALLOC_RELEASE(); - return dynamicHeapSize; -} - -size_t emmalloc_free_dynamic_memory() -{ - size_t freeDynamicMemory = 0; - - int bucketIndex = 0; - - MALLOC_ACQUIRE(); - BUCKET_BITMASK_T bucketMask = freeRegionBucketsUsed; - - // Loop through each bucket that has free regions in it, based on bits set in freeRegionBucketsUsed bitmap. - while(bucketMask) - { - BUCKET_BITMASK_T indexAdd = __builtin_ctzll(bucketMask); - bucketIndex += indexAdd; - bucketMask >>= indexAdd; - for(Region *freeRegion = freeRegionBuckets[bucketIndex].next; - freeRegion != &freeRegionBuckets[bucketIndex]; - freeRegion = freeRegion->next) - { - freeDynamicMemory += freeRegion->size - REGION_HEADER_SIZE; - } - ++bucketIndex; - bucketMask >>= 1; - } - MALLOC_RELEASE(); - return freeDynamicMemory; -} - -size_t emmalloc_compute_free_dynamic_memory_fragmentation_map(size_t freeMemorySizeMap[32]) -{ - memset((void*)freeMemorySizeMap, 0, sizeof(freeMemorySizeMap[0])*32); - - size_t numFreeMemoryRegions = 0; - int bucketIndex = 0; - MALLOC_ACQUIRE(); - BUCKET_BITMASK_T bucketMask = freeRegionBucketsUsed; - - // Loop through each bucket that has free regions in it, based on bits set in freeRegionBucketsUsed bitmap. - while(bucketMask) - { - BUCKET_BITMASK_T indexAdd = __builtin_ctzll(bucketMask); - bucketIndex += indexAdd; - bucketMask >>= indexAdd; - for(Region *freeRegion = freeRegionBuckets[bucketIndex].next; - freeRegion != &freeRegionBuckets[bucketIndex]; - freeRegion = freeRegion->next) - { - ++numFreeMemoryRegions; - size_t freeDynamicMemory = freeRegion->size - REGION_HEADER_SIZE; - if (freeDynamicMemory > 0) - ++freeMemorySizeMap[31-__builtin_clz(freeDynamicMemory)]; - else - ++freeMemorySizeMap[0]; - } - ++bucketIndex; - bucketMask >>= 1; - } - MALLOC_RELEASE(); - return numFreeMemoryRegions; -} - -size_t emmalloc_unclaimed_heap_memory(void) { - return emscripten_get_heap_max() - (size_t)sbrk(0); -} -#endif diff --git a/sdks/nodejs/node_modules/emnapi/src/malloc/memcpy.c b/sdks/nodejs/node_modules/emnapi/src/malloc/memcpy.c deleted file mode 100644 index 21249b4..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/malloc/memcpy.c +++ /dev/null @@ -1,136 +0,0 @@ -#include -#include - -#ifdef __GNUC__ -#define __BYTE_ORDER __BYTE_ORDER__ -#define __LITTLE_ENDIAN 1234 -#endif - -#ifndef BULK_MEMORY_THRESHOLD -#define BULK_MEMORY_THRESHOLD 32 -#endif - -void *memcpy(void *restrict dest, const void *restrict src, size_t n) -{ -#if defined(__wasm_bulk_memory__) - if (n > BULK_MEMORY_THRESHOLD) - return __builtin_memcpy(dest, src, n); -#endif - unsigned char *d = dest; - const unsigned char *s = src; - -#ifdef __GNUC__ - -#if __BYTE_ORDER == __LITTLE_ENDIAN -#define LS >> -#define RS << -#else -#define LS << -#define RS >> -#endif - - typedef uint32_t __attribute__((__may_alias__)) u32; - uint32_t w, x; - - for (; (uintptr_t)s % 4 && n; n--) *d++ = *s++; - - if ((uintptr_t)d % 4 == 0) { - for (; n>=16; s+=16, d+=16, n-=16) { - *(u32 *)(d+0) = *(u32 *)(s+0); - *(u32 *)(d+4) = *(u32 *)(s+4); - *(u32 *)(d+8) = *(u32 *)(s+8); - *(u32 *)(d+12) = *(u32 *)(s+12); - } - if (n&8) { - *(u32 *)(d+0) = *(u32 *)(s+0); - *(u32 *)(d+4) = *(u32 *)(s+4); - d += 8; s += 8; - } - if (n&4) { - *(u32 *)(d+0) = *(u32 *)(s+0); - d += 4; s += 4; - } - if (n&2) { - *d++ = *s++; *d++ = *s++; - } - if (n&1) { - *d = *s; - } - return dest; - } - - if (n >= 32) switch ((uintptr_t)d % 4) { - case 1: - w = *(u32 *)s; - *d++ = *s++; - *d++ = *s++; - *d++ = *s++; - n -= 3; - for (; n>=17; s+=16, d+=16, n-=16) { - x = *(u32 *)(s+1); - *(u32 *)(d+0) = (w LS 24) | (x RS 8); - w = *(u32 *)(s+5); - *(u32 *)(d+4) = (x LS 24) | (w RS 8); - x = *(u32 *)(s+9); - *(u32 *)(d+8) = (w LS 24) | (x RS 8); - w = *(u32 *)(s+13); - *(u32 *)(d+12) = (x LS 24) | (w RS 8); - } - break; - case 2: - w = *(u32 *)s; - *d++ = *s++; - *d++ = *s++; - n -= 2; - for (; n>=18; s+=16, d+=16, n-=16) { - x = *(u32 *)(s+2); - *(u32 *)(d+0) = (w LS 16) | (x RS 16); - w = *(u32 *)(s+6); - *(u32 *)(d+4) = (x LS 16) | (w RS 16); - x = *(u32 *)(s+10); - *(u32 *)(d+8) = (w LS 16) | (x RS 16); - w = *(u32 *)(s+14); - *(u32 *)(d+12) = (x LS 16) | (w RS 16); - } - break; - case 3: - w = *(u32 *)s; - *d++ = *s++; - n -= 1; - for (; n>=19; s+=16, d+=16, n-=16) { - x = *(u32 *)(s+3); - *(u32 *)(d+0) = (w LS 8) | (x RS 24); - w = *(u32 *)(s+7); - *(u32 *)(d+4) = (x LS 8) | (w RS 24); - x = *(u32 *)(s+11); - *(u32 *)(d+8) = (w LS 8) | (x RS 24); - w = *(u32 *)(s+15); - *(u32 *)(d+12) = (x LS 8) | (w RS 24); - } - break; - } - if (n&16) { - *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; - *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; - *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; - *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; - } - if (n&8) { - *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; - *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; - } - if (n&4) { - *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; - } - if (n&2) { - *d++ = *s++; *d++ = *s++; - } - if (n&1) { - *d = *s; - } - return dest; -#endif - - for (; n; n--) *d++ = *s++; - return dest; -} diff --git a/sdks/nodejs/node_modules/emnapi/src/malloc/memset.c b/sdks/nodejs/node_modules/emnapi/src/malloc/memset.c deleted file mode 100644 index 9e7be4d..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/malloc/memset.c +++ /dev/null @@ -1,98 +0,0 @@ -#include -#include - -#ifndef BULK_MEMORY_THRESHOLD -#define BULK_MEMORY_THRESHOLD 32 -#endif - -void *memset(void *dest, int c, size_t n) -{ -#if defined(__wasm_bulk_memory__) - if (n > BULK_MEMORY_THRESHOLD) - return __builtin_memset(dest, c, n); -#endif - unsigned char *s = dest; - size_t k; - - /* Fill head and tail with minimal branching. Each - * conditional ensures that all the subsequently used - * offsets are well-defined and in the dest region. */ - - if (!n) return dest; - s[0] = c; - s[n-1] = c; - if (n <= 2) return dest; - s[1] = c; - s[2] = c; - s[n-2] = c; - s[n-3] = c; - if (n <= 6) return dest; - s[3] = c; - s[n-4] = c; - if (n <= 8) return dest; - - /* Advance pointer to align it at a 4-byte boundary, - * and truncate n to a multiple of 4. The previous code - * already took care of any head/tail that get cut off - * by the alignment. */ - - k = -(uintptr_t)s & 3; - s += k; - n -= k; - n &= -4; - -#ifdef __GNUC__ - typedef uint32_t __attribute__((__may_alias__)) u32; - typedef uint64_t __attribute__((__may_alias__)) u64; - - u32 c32 = ((u32)-1)/255 * (unsigned char)c; - - /* In preparation to copy 32 bytes at a time, aligned on - * an 8-byte bounary, fill head/tail up to 28 bytes each. - * As in the initial byte-based head/tail fill, each - * conditional below ensures that the subsequent offsets - * are valid (e.g. !(n<=24) implies n>=28). */ - - *(u32 *)(s+0) = c32; - *(u32 *)(s+n-4) = c32; - if (n <= 8) return dest; - *(u32 *)(s+4) = c32; - *(u32 *)(s+8) = c32; - *(u32 *)(s+n-12) = c32; - *(u32 *)(s+n-8) = c32; - if (n <= 24) return dest; - *(u32 *)(s+12) = c32; - *(u32 *)(s+16) = c32; - *(u32 *)(s+20) = c32; - *(u32 *)(s+24) = c32; - *(u32 *)(s+n-28) = c32; - *(u32 *)(s+n-24) = c32; - *(u32 *)(s+n-20) = c32; - *(u32 *)(s+n-16) = c32; - - /* Align to a multiple of 8 so we can fill 64 bits at a time, - * and avoid writing the same bytes twice as much as is - * practical without introducing additional branching. */ - - k = 24 + ((uintptr_t)s & 4); - s += k; - n -= k; - - /* If this loop is reached, 28 tail bytes have already been - * filled, so any remainder when n drops below 32 can be - * safely ignored. */ - - u64 c64 = c32 | ((u64)c32 << 32); - for (; n >= 32; n-=32, s+=32) { - *(u64 *)(s+0) = c64; - *(u64 *)(s+8) = c64; - *(u64 *)(s+16) = c64; - *(u64 *)(s+24) = c64; - } -#else - /* Pure C fallback with no aliasing violations. */ - for (; n; n--, s++) *s = c; -#endif - - return dest; -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/emnapi/src/malloc/sbrk.c b/sdks/nodejs/node_modules/emnapi/src/malloc/sbrk.c deleted file mode 100644 index f425ecb..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/malloc/sbrk.c +++ /dev/null @@ -1,29 +0,0 @@ -#include - -#define SIZE_MAX -1 - -void *sbrk(ptrdiff_t increment) { - // sbrk(0) returns the current memory size. - if (increment == 0) { - // The wasm spec doesn't guarantee that memory.grow of 0 always succeeds. - return (void *)(__builtin_wasm_memory_size(0) * PAGESIZE); - } - - // We only support page-size increments. - if (increment % PAGESIZE != 0) { - __builtin_trap(); - } - - // WebAssembly doesn't support shrinking linear memory. - if (increment < 0) { - __builtin_trap(); - } - - ptrdiff_t old = __builtin_wasm_memory_grow(0, (ptrdiff_t)increment / PAGESIZE); - - if (old == SIZE_MAX) { - return (void *)-1; - } - - return (void *)(old * PAGESIZE); -} diff --git a/sdks/nodejs/node_modules/emnapi/src/node_api.c b/sdks/nodejs/node_modules/emnapi/src/node_api.c deleted file mode 100644 index 56a064e..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/node_api.c +++ /dev/null @@ -1,73 +0,0 @@ -#include "node_api.h" -#include "emnapi_internal.h" - -#if EMNAPI_HAVE_THREADS && !defined(EMNAPI_DISABLE_UV) -#include "uv.h" -#endif - -EXTERN_C_START - -EMNAPI_INTERNAL_EXTERN void _emnapi_get_node_version(uint32_t* major, - uint32_t* minor, - uint32_t* patch); - -napi_status -napi_get_node_version(node_api_basic_env env, - const napi_node_version** version) { - CHECK_ENV(env); - CHECK_ARG(env, version); - static napi_node_version node_version = { - 0, - 0, - 0, - "node" - }; - _emnapi_get_node_version(&node_version.major, - &node_version.minor, - &node_version.patch); - *version = &node_version; - return napi_clear_last_error(env); -} - -napi_status napi_get_uv_event_loop(node_api_basic_env env, - struct uv_loop_s** loop) { -#if EMNAPI_HAVE_THREADS && !defined(EMNAPI_DISABLE_UV) - CHECK_ENV(env); - CHECK_ARG(env, loop); - // Though this is fake libuv loop - *loop = uv_default_loop(); - return napi_clear_last_error(env); -#else - return napi_set_last_error(env, napi_generic_failure, 0, NULL); -#endif -} - -EMNAPI_INTERNAL_EXTERN int _emnapi_get_filename(napi_env env, char* buf, int len); - -napi_status node_api_get_module_file_name(node_api_basic_env env, - const char** result) { - CHECK_ENV(env); - CHECK_ARG(env, result); - - static char* filename = NULL; - static const char* empty_string = ""; - - if (filename != NULL) { - free(filename); - filename = NULL; - } - - int len = _emnapi_get_filename(env, NULL, 0); - if (len == 0) { - *result = empty_string; - } else { - filename = (char*) malloc(len + 1); - len = _emnapi_get_filename(env, filename, len + 1); - *(filename + len) = '\0'; - *result = filename; - } - - return napi_clear_last_error(env); -} - -EXTERN_C_END diff --git a/sdks/nodejs/node_modules/emnapi/src/thread/async_worker_create.c b/sdks/nodejs/node_modules/emnapi/src/thread/async_worker_create.c deleted file mode 100644 index 578df4d..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/thread/async_worker_create.c +++ /dev/null @@ -1,77 +0,0 @@ -#include -#include - -void* calloc(size_t n, size_t size); - -extern unsigned char __heap_base; -extern unsigned char __data_end; -extern unsigned char __global_base; -extern __attribute__((__weak__)) unsigned char __stack_high; -extern __attribute__((__weak__)) unsigned char __stack_low; - -#define ROUND_UP(x, ALIGNMENT) (((x)+ALIGNMENT-1)&-ALIGNMENT) -#define STACK_ALIGN 16 -#define DEFAULT_STACK_MAX (8<<20) - -struct worker_args { - void* stack_base; - void* tls_base; -}; - -extern void __wasm_init_tls(void*); - -__attribute__((__weak__)) -void* __copy_tls(unsigned char *mem) { - size_t tls_align = __builtin_wasm_tls_align(); - volatile void* tls_base = __builtin_wasm_tls_base(); - mem += tls_align; - mem -= (uintptr_t)mem & (tls_align-1); - __wasm_init_tls(mem); - __asm__("local.get %0\n" - "global.set __tls_base\n" - :: "r"(tls_base)); - return mem; -} - -__attribute__((visibility("default"))) -void* emnapi_async_worker_create() { - size_t args_size = sizeof(struct worker_args); - size_t size = args_size; - - size_t tls_size = __builtin_wasm_tls_size(); - - size_t tls_block_size = 0; - if (tls_size) { - size_t tls_align = __builtin_wasm_tls_align(); - tls_block_size = ROUND_UP(tls_size + tls_align - 1, tls_align); - size += tls_block_size; - } - - ptrdiff_t stack_size = 0; - if (&__stack_high) { - stack_size = &__stack_high - &__stack_low; - } else { - unsigned char *sp; - __asm__( - ".globaltype __stack_pointer, i32\n" - "global.get __stack_pointer\n" - "local.set %0\n" - : "=r"(sp)); - stack_size = sp > &__global_base ? &__heap_base - &__data_end : (ptrdiff_t)&__global_base; - } - - stack_size = ROUND_UP(stack_size, STACK_ALIGN); - stack_size = stack_size < DEFAULT_STACK_MAX ? stack_size : DEFAULT_STACK_MAX; - size += stack_size; - - void* block = calloc(1, size); - if (!block) return 0; - - void* tls_base = tls_size ? __copy_tls(block + args_size) : 0; - - struct worker_args* args = (struct worker_args*)block; - - args->stack_base = block + args_size + tls_block_size + stack_size; - args->tls_base = tls_base; - return block; -} diff --git a/sdks/nodejs/node_modules/emnapi/src/thread/async_worker_init.S b/sdks/nodejs/node_modules/emnapi/src/thread/async_worker_init.S deleted file mode 100644 index 9633b5c..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/thread/async_worker_init.S +++ /dev/null @@ -1,33 +0,0 @@ -#ifdef __wasm64__ -#define PTR i64 -#else -#define PTR i32 -#endif - - .text - - .export_name emnapi_async_worker_init, emnapi_async_worker_init - - .globaltype __stack_pointer, PTR - .globaltype __tls_base, PTR - - .hidden emnapi_async_worker_init - .globl emnapi_async_worker_init - .type emnapi_async_worker_init,@function - -emnapi_async_worker_init: - .functype emnapi_async_worker_init (PTR) -> () - - local.get 0 - PTR.load 0 - global.set __stack_pointer - - local.get 0 -#ifdef __wasm64__ - PTR.load 8 -#else - PTR.load 4 -#endif - global.set __tls_base - - end_function diff --git a/sdks/nodejs/node_modules/emnapi/src/threadsafe_function.c b/sdks/nodejs/node_modules/emnapi/src/threadsafe_function.c deleted file mode 100644 index 1035b94..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/threadsafe_function.c +++ /dev/null @@ -1,615 +0,0 @@ -#include "node_api.h" -#include "emnapi_internal.h" - -#if NAPI_VERSION >= 4 && EMNAPI_HAVE_THREADS -#include -#include -#include -#include "uv.h" -#include "uv/queue.h" - -EXTERN_C_START - -EMNAPI_INTERNAL_EXTERN void _emnapi_call_finalizer(int force_uncaught, napi_env env, napi_finalize cb, void* data, void* hint); - -static const unsigned char kDispatchIdle = 0; -static const unsigned char kDispatchRunning = 1 << 0; -static const unsigned char kDispatchPending = 1 << 1; - -static const unsigned int kMaxIterationCount = 1000; - -struct data_queue_node { - void* data; - struct uv__queue q; -}; - -struct napi_threadsafe_function__ { - ASYNC_RESOURCE_FIELD - // These are variables protected by the mutex. - pthread_mutex_t mutex; - pthread_cond_t* cond; - size_t queue_size; - struct uv__queue queue; - uv_async_t async; - size_t thread_count; - bool is_closing; - atomic_uchar dispatch_state; - - // These are variables set once, upon creation, and then never again, which - // means we don't need the mutex to read them. - void* context; - size_t max_queue_size; - - // These are variables accessed only from the loop thread. - napi_ref ref; - napi_env env; - void* finalize_data; - napi_finalize finalize_cb; - napi_threadsafe_function_call_js call_js_cb; - bool handles_closing; - bool async_ref; -}; - -static void _emnapi_tsfn_default_call_js(napi_env env, napi_value cb, void* context, void* data) { - if (!(env == NULL || cb == NULL)) { - napi_value recv; - napi_status status; - - status = napi_get_undefined(env, &recv); - if (status != napi_ok) { - napi_throw_error(env, "ERR_NAPI_TSFN_GET_UNDEFINED", - "Failed to retrieve undefined value"); - return; - } - - status = napi_call_function(env, recv, cb, 0, NULL, NULL); - if (status != napi_ok && status != napi_pending_exception) { - napi_throw_error(env, "ERR_NAPI_TSFN_CALL_JS", - "Failed to call JS callback"); - return; - } - } -} - -static void _emnapi_tsfn_cleanup(void* data); - -static napi_threadsafe_function -_emnapi_tsfn_create(napi_env env, - napi_ref ref, - napi_value async_resource, - napi_value async_resource_name, - size_t max_queue_size, - size_t initial_thread_count, - void* thread_finalize_data, - napi_finalize thread_finalize_cb, - void* context, - napi_threadsafe_function_call_js call_js_cb) { - napi_threadsafe_function ts_fn = - (napi_threadsafe_function) calloc(1, sizeof(struct napi_threadsafe_function__)); - if (ts_fn == NULL) return NULL; - EMNAPI_ASYNC_RESOURCE_CTOR(env, async_resource, async_resource_name, (emnapi_async_resource*) ts_fn); - pthread_mutex_init(&ts_fn->mutex, NULL); - ts_fn->cond = NULL; - ts_fn->queue_size = 0; - uv__queue_init(&ts_fn->queue); - ts_fn->thread_count = initial_thread_count; - ts_fn->is_closing = false; - ts_fn->dispatch_state = kDispatchIdle; - - ts_fn->context = context; - ts_fn->max_queue_size = max_queue_size; - - ts_fn->ref = ref; - ts_fn->env = env; - ts_fn->finalize_data = thread_finalize_data; - ts_fn->finalize_cb = thread_finalize_cb; - ts_fn->call_js_cb = call_js_cb; - ts_fn->handles_closing = false; - - EMNAPI_ASSERT_CALL(napi_add_env_cleanup_hook(env, _emnapi_tsfn_cleanup, ts_fn)); - _emnapi_env_ref(env); - - EMNAPI_KEEPALIVE_PUSH(); - _emnapi_ctx_increase_waiting_request_counter(); - ts_fn->async_ref = true; - return ts_fn; -} - -static void _emnapi_tsfn_destroy(napi_threadsafe_function func) { - if (func == NULL) return; - pthread_mutex_destroy(&func->mutex); - if (func->cond) { - pthread_cond_destroy(func->cond); - free(func->cond); - func->cond = NULL; - } - - struct uv__queue* tmp; - struct data_queue_node* node; - uv__queue_foreach(tmp, &func->queue) { - node = uv__queue_data(tmp, struct data_queue_node, q); - free(node); - } - uv__queue_init(&func->queue); - - if (func->ref != NULL) { - EMNAPI_ASSERT_CALL(napi_delete_reference(func->env, func->ref)); - } - - EMNAPI_ASYNC_RESOURCE_DTOR(func->env, (emnapi_async_resource*) func); - - EMNAPI_ASSERT_CALL(napi_remove_env_cleanup_hook(func->env, _emnapi_tsfn_cleanup, func)); - _emnapi_env_unref(func->env); - if (func->async_ref) { - EMNAPI_KEEPALIVE_POP(); - _emnapi_ctx_decrease_waiting_request_counter(); - func->async_ref = false; - } - - free(func); -} - -static void _emnapi_tsfn_do_destroy(uv_handle_t* data) { - napi_threadsafe_function func = container_of(data, struct napi_threadsafe_function__, async); - _emnapi_tsfn_destroy(func); -} - -static void _emnapi_tsfn_dispatch(napi_threadsafe_function func); - -// only main thread -static void _emnapi_tsfn_async_cb(uv_async_t* data) { - napi_threadsafe_function tsfn = container_of(data, struct napi_threadsafe_function__, async); - _emnapi_tsfn_dispatch(tsfn); -} - -// only main thread -static napi_status _emnapi_tsfn_init(napi_threadsafe_function func) { - uv_loop_t* loop = uv_default_loop(); - if (uv_async_init(loop, &func->async, _emnapi_tsfn_async_cb) == 0) { - int r; - if (func->max_queue_size > 0) { - func->cond = (pthread_cond_t*) malloc(sizeof(pthread_cond_t)); - if (func->cond != NULL) { - r = pthread_cond_init(func->cond, NULL); - if (r != 0) { - free(func->cond); - func->cond = NULL; - } - } - } - if (func->max_queue_size == 0 || func->cond) { - return napi_ok; - } - uv_close((uv_handle_t*) &func->async, _emnapi_tsfn_do_destroy); - } - _emnapi_tsfn_destroy(func); - return napi_generic_failure; -} - -static void _emnapi_tsfn_empty_queue_and_delete(napi_threadsafe_function func) { - while (!uv__queue_empty(&func->queue)) { - struct uv__queue* q = uv__queue_head(&func->queue); - struct data_queue_node* node = uv__queue_data(q, struct data_queue_node, q); - - func->call_js_cb(NULL, NULL, func->context, node->data); - - uv__queue_remove(q); - uv__queue_init(q); - func->queue_size--; - free(node); - } - _emnapi_tsfn_destroy(func); -} - -static napi_value _emnapi_tsfn_finalize_in_callback_scope(napi_env env, napi_callback_info info) { - void* data = NULL; - EMNAPI_ASSERT_CALL(napi_get_cb_info(env, info, NULL, NULL, NULL, &data)); - napi_threadsafe_function func = (napi_threadsafe_function) data; - _emnapi_call_finalizer(0, func->env, func->finalize_cb, func->finalize_data, func->context); - return NULL; -} - -static void _emnapi_tsfn_finalize(napi_threadsafe_function func) { - napi_handle_scope scope = _emnapi_open_handle_scope(); - if (func->finalize_cb) { - if (emnapi_is_node_binding_available()) { - napi_value resource, cb; - EMNAPI_ASSERT_CALL(napi_get_reference_value(func->env, func->resource_, &resource)); - EMNAPI_ASSERT_CALL(napi_create_function(func->env, NULL, 0, _emnapi_tsfn_finalize_in_callback_scope, func, &cb)); - _emnapi_node_make_callback(func->env, - resource, - cb, - NULL, - 0, - func->async_context_.async_id, - func->async_context_.trigger_async_id, - NULL); - } else { - _emnapi_call_finalizer(0, func->env, func->finalize_cb, func->finalize_data, func->context); - } - } - _emnapi_tsfn_empty_queue_and_delete(func); - _emnapi_close_handle_scope(scope); -} - -static void _emnapi_tsfn_do_finalize(uv_handle_t* data) { - napi_threadsafe_function func = container_of(data, struct napi_threadsafe_function__, async); - _emnapi_tsfn_finalize(func); -} - -static void _emnapi_tsfn_close_handles_and_maybe_delete( - napi_threadsafe_function func, bool set_closing) { - napi_handle_scope scope; - EMNAPI_ASSERT_CALL(napi_open_handle_scope(func->env, &scope)); - - if (set_closing) { - pthread_mutex_lock(&func->mutex); - func->is_closing = true; - if (func->max_queue_size > 0) { - pthread_cond_signal(func->cond); - } - pthread_mutex_unlock(&func->mutex); - } - if (func->handles_closing) { - return; - } - func->handles_closing = true; - uv_close((uv_handle_t*)&func->async, _emnapi_tsfn_do_finalize); - - EMNAPI_ASSERT_CALL(napi_close_handle_scope(func->env, scope)); -} - -static void _emnapi_tsfn_cleanup(void* data) { - _emnapi_tsfn_close_handles_and_maybe_delete((napi_threadsafe_function) data, true); -} - -static void _emnapi_tsfn_call_js_cb(napi_env env, void* arg) { - void** args = (void**) arg; - napi_threadsafe_function func = (napi_threadsafe_function) *args; - napi_value js_callback = (napi_value) *(args + 1); - void* data = *(args + 2); - func->call_js_cb(func->env, js_callback, func->context, data); -} - -static napi_value _emnapi_tsfn_call_js_cb_in_callback_scope(napi_env env, napi_callback_info info) { - void* data = NULL; - EMNAPI_ASSERT_CALL(napi_get_cb_info(env, info, NULL, NULL, NULL, &data)); - _emnapi_callback_into_module(0, env, _emnapi_tsfn_call_js_cb, data, 1); - return NULL; -} - -// static void _emnapi_tsfn_ - -// only main thread -static bool _emnapi_tsfn_dispatch_one(napi_threadsafe_function func) { - void* data = NULL; - bool popped_value = false; - bool has_more = false; - - { - pthread_mutex_lock(&func->mutex); - - if (func->is_closing) { - _emnapi_tsfn_close_handles_and_maybe_delete(func, false); - } else { - size_t size = func->queue_size; - if (size > 0) { - struct uv__queue* q = uv__queue_head(&func->queue); - struct data_queue_node* node = uv__queue_data(q, struct data_queue_node, q); - uv__queue_remove(q); - uv__queue_init(q); - func->queue_size--; - data = node->data; - free(node); - popped_value = true; - if (size == func->max_queue_size && func->max_queue_size > 0) { - pthread_cond_signal(func->cond); - } - size--; - } - - if (size == 0) { - if (func->thread_count == 0) { - func->is_closing = true; - if (func->max_queue_size > 0) { - pthread_cond_signal(func->cond); - } - _emnapi_tsfn_close_handles_and_maybe_delete(func, false); - } - } else { - has_more = true; - } - } - pthread_mutex_unlock(&func->mutex); - } - - if (popped_value) { - napi_handle_scope scope; - EMNAPI_ASSERT_CALL(napi_open_handle_scope(func->env, &scope)); - napi_value js_callback = NULL; - void* jscb_data[3] = { (void*)(func), NULL, data }; - if (func->ref != NULL) { - EMNAPI_ASSERT_CALL(napi_get_reference_value(func->env, func->ref, &js_callback)); - jscb_data[1] = (void*)js_callback; - } - - if (emnapi_is_node_binding_available()) { - napi_value resource, cb; - EMNAPI_ASSERT_CALL(napi_get_reference_value(func->env, func->resource_, &resource)); - EMNAPI_ASSERT_CALL(napi_create_function(func->env, NULL, 0, _emnapi_tsfn_call_js_cb_in_callback_scope, jscb_data, &cb)); - _emnapi_node_make_callback(func->env, - resource, - cb, - NULL, - 0, - func->async_context_.async_id, - func->async_context_.trigger_async_id, - NULL); - } else { - _emnapi_callback_into_module(0, func->env, _emnapi_tsfn_call_js_cb, jscb_data, 1); - } - EMNAPI_ASSERT_CALL(napi_close_handle_scope(func->env, scope)); - } - - return has_more; -} - -// all threads -static void _emnapi_tsfn_send(napi_threadsafe_function func) { - unsigned char current_state = - atomic_fetch_or(&func->dispatch_state, kDispatchPending); - if ((current_state & kDispatchRunning) == kDispatchRunning) { - return; - } - CHECK_EQ(0, uv_async_send(&func->async)); -} - -// only main thread -static void _emnapi_tsfn_dispatch(napi_threadsafe_function func) { - bool has_more = true; - - // Limit maximum synchronous iteration count to prevent event loop - // starvation. See `src/node_messaging.cc` for an inspiration. - unsigned int iterations_left = kMaxIterationCount; - while (has_more && --iterations_left != 0) { - atomic_store(&func->dispatch_state, kDispatchRunning); - has_more = _emnapi_tsfn_dispatch_one(func); - - // Send() was called while we were executing the JS function - if (atomic_exchange(&func->dispatch_state, kDispatchIdle) != kDispatchRunning) { - has_more = true; - } - } - - if (has_more) { - _emnapi_tsfn_send(func); - } -} - -EXTERN_C_END - -#endif - -#if NAPI_VERSION >= 4 - -EXTERN_C_START - -napi_status -napi_create_threadsafe_function(napi_env env, - napi_value func, - napi_value async_resource, - napi_value async_resource_name, - size_t max_queue_size, - size_t initial_thread_count, - void* thread_finalize_data, - napi_finalize thread_finalize_cb, - void* context, - napi_threadsafe_function_call_js call_js_cb, - napi_threadsafe_function* result) { -#if EMNAPI_HAVE_THREADS - CHECK_ENV_NOT_IN_GC(env); - CHECK_ARG(env, async_resource_name); - RETURN_STATUS_IF_FALSE(env, initial_thread_count > 0, napi_invalid_arg); - CHECK_ARG(env, result); - - napi_status status = napi_ok; - napi_ref ref = NULL; - - if (func == NULL) { - CHECK_ARG(env, call_js_cb); - } else { - napi_valuetype type; - status = napi_typeof(env, func, &type); - if (status != napi_ok) return napi_set_last_error(env, status, 0, NULL); - if (type != napi_function) { - return napi_set_last_error(env, napi_invalid_arg, 0, NULL); - } - status = napi_create_reference(env, func, 1, &ref); - if (status != napi_ok) return napi_set_last_error(env, status, 0, NULL); - } - - napi_value resource; - napi_value resource_name; - if (async_resource != NULL) { - status = napi_coerce_to_object(env, async_resource, &resource); - if (status != napi_ok) return status; - } else { - status = napi_create_object(env, &resource); - if (status != napi_ok) return status; - } - - status = napi_coerce_to_string(env, async_resource_name, &resource_name); - if (status != napi_ok) return status; - - napi_threadsafe_function ts_fn = _emnapi_tsfn_create( - env, - ref, - resource, - resource_name, - max_queue_size, - initial_thread_count, - thread_finalize_data, - thread_finalize_cb, - context, - call_js_cb != NULL ? call_js_cb : _emnapi_tsfn_default_call_js); - - if (ts_fn == NULL) { - status = napi_generic_failure; - } else { - // Init deletes ts_fn upon failure. - status = _emnapi_tsfn_init(ts_fn); - if (status == napi_ok) { - *result = ts_fn; - } - } - - return napi_set_last_error(env, status, 0, NULL); -#else - return napi_set_last_error(env, napi_generic_failure, 0, NULL); -#endif -} - -napi_status -napi_get_threadsafe_function_context(napi_threadsafe_function func, - void** result) { -#if EMNAPI_HAVE_THREADS - CHECK_NOT_NULL(func); - CHECK_NOT_NULL(result); - - *result = func->context; - - return napi_ok; -#else - return napi_generic_failure; -#endif -} - -napi_status -napi_call_threadsafe_function(napi_threadsafe_function func, - void* data, - napi_threadsafe_function_call_mode mode) { -#if EMNAPI_HAVE_THREADS - CHECK_NOT_NULL(func); - pthread_mutex_lock(&func->mutex); - - while (func->queue_size >= func->max_queue_size && - func->max_queue_size > 0 && - !func->is_closing) { - if (mode == napi_tsfn_nonblocking) { - pthread_mutex_unlock(&func->mutex); - return napi_queue_full; - } - pthread_cond_wait(func->cond, &func->mutex); - } - - if (func->is_closing) { - if (func->thread_count == 0) { - pthread_mutex_unlock(&func->mutex); - return napi_invalid_arg; - } else { - func->thread_count--; - pthread_mutex_unlock(&func->mutex); - return napi_closing; - } - } else { - struct data_queue_node* queue_node = (struct data_queue_node*) malloc(sizeof(struct data_queue_node)); - if (queue_node == NULL) { - pthread_mutex_unlock(&func->mutex); - return napi_generic_failure; - } - queue_node->data = data; - uv__queue_insert_tail(&func->queue, &queue_node->q); - func->queue_size++; - _emnapi_tsfn_send(func); - pthread_mutex_unlock(&func->mutex); - return napi_ok; - } -#else - return napi_generic_failure; -#endif -} - -napi_status -napi_acquire_threadsafe_function(napi_threadsafe_function func) { -#if EMNAPI_HAVE_THREADS - CHECK_NOT_NULL(func); - pthread_mutex_lock(&func->mutex); - - if (func->is_closing) { - pthread_mutex_unlock(&func->mutex); - return napi_closing; - } - - func->thread_count++; - - pthread_mutex_unlock(&func->mutex); - return napi_ok; -#else - return napi_generic_failure; -#endif -} - -napi_status -napi_release_threadsafe_function(napi_threadsafe_function func, - napi_threadsafe_function_release_mode mode) { -#if EMNAPI_HAVE_THREADS - CHECK_NOT_NULL(func); - pthread_mutex_lock(&func->mutex); - - if (func->thread_count == 0) { - pthread_mutex_unlock(&func->mutex); - return napi_invalid_arg; - } - - func->thread_count--; - - if (func->thread_count == 0 || mode == napi_tsfn_abort) { - if (!func->is_closing) { - func->is_closing = (mode == napi_tsfn_abort); - if (func->is_closing && func->max_queue_size > 0) { - pthread_cond_signal(func->cond); - } - - _emnapi_tsfn_send(func); - } - } - - pthread_mutex_unlock(&func->mutex); - - return napi_ok; -#else - return napi_generic_failure; -#endif -} - -napi_status -napi_unref_threadsafe_function(node_api_basic_env env, napi_threadsafe_function func) { -#if EMNAPI_HAVE_THREADS - if (func->async_ref) { - EMNAPI_KEEPALIVE_POP(); - _emnapi_ctx_decrease_waiting_request_counter(); - func->async_ref = false; - } - return napi_ok; -#else - return napi_generic_failure; -#endif -} - -napi_status -napi_ref_threadsafe_function(node_api_basic_env env, napi_threadsafe_function func) { -#if EMNAPI_HAVE_THREADS - if (!func->async_ref) { - EMNAPI_KEEPALIVE_PUSH(); - _emnapi_ctx_increase_waiting_request_counter(); - func->async_ref = true; - } - return napi_ok; -#else - return napi_generic_failure; -#endif -} - -EXTERN_C_END - -#endif diff --git a/sdks/nodejs/node_modules/emnapi/src/uv/queue.h b/sdks/nodejs/node_modules/emnapi/src/uv/queue.h deleted file mode 100644 index 5f8489e..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/uv/queue.h +++ /dev/null @@ -1,90 +0,0 @@ -/* Copyright (c) 2013, Ben Noordhuis - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, 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. - */ - -#ifndef QUEUE_H_ -#define QUEUE_H_ - -#include - -#define uv__queue_data(pointer, type, field) \ - ((type*) ((char*) (pointer) - offsetof(type, field))) - -#define uv__queue_foreach(q, h) \ - for ((q) = (h)->next; (q) != (h); (q) = (q)->next) - -static inline void uv__queue_init(struct uv__queue* q) { - q->next = q; - q->prev = q; -} - -static inline int uv__queue_empty(const struct uv__queue* q) { - return q == q->next; -} - -static inline struct uv__queue* uv__queue_head(const struct uv__queue* q) { - return q->next; -} - -static inline struct uv__queue* uv__queue_next(const struct uv__queue* q) { - return q->next; -} - -static inline void uv__queue_add(struct uv__queue* h, struct uv__queue* n) { - h->prev->next = n->next; - n->next->prev = h->prev; - h->prev = n->prev; - h->prev->next = h; -} - -static inline void uv__queue_split(struct uv__queue* h, - struct uv__queue* q, - struct uv__queue* n) { - n->prev = h->prev; - n->prev->next = n; - n->next = q; - h->prev = q->prev; - h->prev->next = h; - q->prev = n; -} - -static inline void uv__queue_move(struct uv__queue* h, struct uv__queue* n) { - if (uv__queue_empty(h)) - uv__queue_init(n); - else - uv__queue_split(h, h->next, n); -} - -static inline void uv__queue_insert_head(struct uv__queue* h, - struct uv__queue* q) { - q->next = h->next; - q->prev = h; - q->next->prev = q; - h->next = q; -} - -static inline void uv__queue_insert_tail(struct uv__queue* h, - struct uv__queue* q) { - q->next = h; - q->prev = h->prev; - q->prev->next = q; - h->prev = q; -} - -static inline void uv__queue_remove(struct uv__queue* q) { - q->prev->next = q->next; - q->next->prev = q->prev; -} - -#endif /* QUEUE_H_ */ diff --git a/sdks/nodejs/node_modules/emnapi/src/uv/threadpool.c b/sdks/nodejs/node_modules/emnapi/src/uv/threadpool.c deleted file mode 100644 index 12c15b8..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/uv/threadpool.c +++ /dev/null @@ -1,470 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -// from libuv 1.48.0 - -#if defined(__EMSCRIPTEN_PTHREADS__) || defined(_REENTRANT) - -#include -#include -#include -#include "uv-common.h" -#include "emnapi_common.h" - -#if defined(__wasi__) && defined(_REENTRANT) -#define __EMNAPI_WASI_THREADS__ -#endif - -#define MAX_THREADPOOL_SIZE 1024 - -static uv_once_t once = UV_ONCE_INIT; -static uv_cond_t cond; -static uv_mutex_t mutex; -static unsigned int idle_threads; -static unsigned int slow_io_work_running; -static unsigned int nthreads; -static uv_thread_t* threads; -static uv_thread_t default_threads[4]; -static struct uv__queue exit_message; -static struct uv__queue wq; -static struct uv__queue run_slow_work_message; -static struct uv__queue slow_io_pending_wq; - -static unsigned int slow_work_thread_threshold(void) { - return (nthreads + 1) / 2; -} - -static void uv__cancelled(struct uv__work* w) { - abort(); -} - -EMNAPI_INTERNAL_EXTERN void _emnapi_worker_unref(uv_thread_t pid); - -#ifdef __EMNAPI_WASI_THREADS__ -EMNAPI_INTERNAL_EXTERN -void _emnapi_after_uvthreadpool_ready(void (*callback)(struct uv__queue* w, enum uv__work_kind kind), - struct uv__queue* w, - enum uv__work_kind kind); -EMNAPI_INTERNAL_EXTERN void _emnapi_tell_js_uvthreadpool(uv_thread_t* threads, unsigned int n); -EMNAPI_INTERNAL_EXTERN void _emnapi_emit_async_thread_ready(); -#endif - -/* To avoid deadlock with uv_cancel() it's crucial that the worker - * never holds the global mutex and the loop-local mutex at the same time. - */ -static void* worker(void* arg) { - struct uv__work* w; - struct uv__queue* q; - int is_slow_work; -#ifndef __EMNAPI_WASI_THREADS__ - uv_sem_post((uv_sem_t*) arg); -#else - _emnapi_emit_async_thread_ready(); -#endif - arg = NULL; - - uv_mutex_lock(&mutex); - for (;;) { - /* `mutex` should always be locked at this point. */ - - /* Keep waiting while either no work is present or only slow I/O - and we're at the threshold for that. */ - while (uv__queue_empty(&wq) || - (uv__queue_head(&wq) == &run_slow_work_message && - uv__queue_next(&run_slow_work_message) == &wq && - slow_io_work_running >= slow_work_thread_threshold())) { - idle_threads += 1; - uv_cond_wait(&cond, &mutex); - idle_threads -= 1; - } - - q = uv__queue_head(&wq); - if (q == &exit_message) { - uv_cond_signal(&cond); - uv_mutex_unlock(&mutex); - break; - } - - uv__queue_remove(q); - uv__queue_init(q); /* Signal uv_cancel() that the work req is executing. */ - - is_slow_work = 0; - if (q == &run_slow_work_message) { - /* If we're at the slow I/O threshold, re-schedule until after all - other work in the queue is done. */ - if (slow_io_work_running >= slow_work_thread_threshold()) { - uv__queue_insert_tail(&wq, q); - continue; - } - - /* If we encountered a request to run slow I/O work but there is none - to run, that means it's cancelled => Start over. */ - if (uv__queue_empty(&slow_io_pending_wq)) - continue; - - is_slow_work = 1; - slow_io_work_running++; - - q = uv__queue_head(&slow_io_pending_wq); - uv__queue_remove(q); - uv__queue_init(q); - - /* If there is more slow I/O work, schedule it to be run as well. */ - if (!uv__queue_empty(&slow_io_pending_wq)) { - uv__queue_insert_tail(&wq, &run_slow_work_message); - if (idle_threads > 0) - uv_cond_signal(&cond); - } - } - - uv_mutex_unlock(&mutex); - - w = uv__queue_data(q, struct uv__work, wq); - w->work(w); - - uv_mutex_lock(&w->loop->wq_mutex); - w->work = NULL; /* Signal uv_cancel() that the work req is done - executing. */ - uv__queue_insert_tail(&w->loop->wq, &w->wq); - uv_async_send(&w->loop->wq_async); - uv_mutex_unlock(&w->loop->wq_mutex); - - /* Lock `mutex` since that is expected at the start of the next - * iteration. */ - uv_mutex_lock(&mutex); - if (is_slow_work) { - /* `slow_io_work_running` is protected by `mutex`. */ - slow_io_work_running--; - } - } - return NULL; -} - - -static void post(struct uv__queue* q, enum uv__work_kind kind) { - uv_mutex_lock(&mutex); - // if (kind == UV__WORK_SLOW_IO) { - // /* Insert into a separate queue. */ - // uv__queue_insert_tail(&slow_io_pending_wq, q); - // if (!uv__queue_empty(&run_slow_work_message)) { - // /* Running slow I/O tasks is already scheduled => Nothing to do here. - // The worker that runs said other task will schedule this one as well. */ - // uv_mutex_unlock(&mutex); - // return; - // } - // q = &run_slow_work_message; - // } - - uv__queue_insert_tail(&wq, q); - if (idle_threads > 0) - uv_cond_signal(&cond); - uv_mutex_unlock(&mutex); -} - - -#ifdef __MVS__ -/* TODO(itodorov) - zos: revisit when Woz compiler is available. */ -__attribute__((destructor)) -#endif -void uv__threadpool_cleanup(void) { - unsigned int i; - - if (nthreads == 0) - return; - -#ifndef __MVS__ - /* TODO(gabylb) - zos: revisit when Woz compiler is available. */ - post(&exit_message, UV__WORK_CPU); -#endif - - for (i = 0; i < nthreads; i++) - if (uv_thread_join(threads + i)) - abort(); - - if (threads != default_threads) - free(threads); - - uv_mutex_destroy(&mutex); - uv_cond_destroy(&cond); - - threads = NULL; - nthreads = 0; -} - -EMNAPI_INTERNAL_EXTERN int _emnapi_async_work_pool_size(); - -static void init_threads(void) { - uv_thread_options_t config; - unsigned int i; -#if !defined(EMNAPI_WORKER_POOL_SIZE) || !(EMNAPI_WORKER_POOL_SIZE > 0) - const char* val; -#endif -#ifndef __EMNAPI_WASI_THREADS__ - uv_sem_t sem; -#endif - -#if defined(EMNAPI_WORKER_POOL_SIZE) && EMNAPI_WORKER_POOL_SIZE > 0 - nthreads = EMNAPI_WORKER_POOL_SIZE; -#else - nthreads = ARRAY_SIZE(default_threads); - int async_work_pool_size = _emnapi_async_work_pool_size(); - if (async_work_pool_size > 0) { - nthreads = (unsigned int) async_work_pool_size; - } else { - val = getenv("UV_THREADPOOL_SIZE"); - if (val != NULL) - nthreads = atoi(val); - } -#endif - if (nthreads == 0) - nthreads = 1; - if (nthreads > MAX_THREADPOOL_SIZE) - nthreads = MAX_THREADPOOL_SIZE; - - threads = default_threads; - if (nthreads > ARRAY_SIZE(default_threads)) { - threads = (uv_thread_t *)malloc(nthreads * sizeof(threads[0])); - if (threads == NULL) { - nthreads = ARRAY_SIZE(default_threads); - threads = default_threads; - } - } - - if (uv_cond_init(&cond)) - abort(); - - if (uv_mutex_init(&mutex)) - abort(); - - uv__queue_init(&wq); - uv__queue_init(&slow_io_pending_wq); - uv__queue_init(&run_slow_work_message); - -#ifndef __EMNAPI_WASI_THREADS__ - if (uv_sem_init(&sem, 0)) - abort(); -#endif - - // config.flags = UV_THREAD_HAS_STACK_SIZE; - // config.stack_size = 8u << 20; /* 8 MB */ - - // use DEFAULT_PTHREAD_STACK_SIZE - config.flags = UV_THREAD_NO_FLAGS; - - for (i = 0; i < nthreads; i++) -#ifndef __EMNAPI_WASI_THREADS__ - if (uv_thread_create_ex(threads + i, &config, (uv_thread_cb) worker, &sem)) -#else - if (uv_thread_create_ex(threads + i, &config, (uv_thread_cb) worker, NULL)) -#endif - abort(); - -#ifndef __EMNAPI_WASI_THREADS__ - for (i = 0; i < nthreads; i++) - uv_sem_wait(&sem); - - uv_sem_destroy(&sem); - for (i = 0; i < nthreads; i++) - _emnapi_worker_unref(*(threads + i)); -#else - _emnapi_tell_js_uvthreadpool(threads, nthreads); -#endif -} - - -#if !defined(_WIN32) && !defined(__wasi__) -static void reset_once(void) { - uv_once_t child_once = UV_ONCE_INIT; - memcpy(&once, &child_once, sizeof(child_once)); -} -#endif - - -static void init_once(void) { -#if !defined(_WIN32) && !defined(__wasi__) - /* Re-initialize the threadpool after fork. - * Note that this discards the global mutex and condition as well - * as the work queue. - */ - if (pthread_atfork(NULL, NULL, &reset_once)) - abort(); -#endif - init_threads(); -} - - -void uv__work_submit(uv_loop_t* loop, - struct uv__work* w, - enum uv__work_kind kind, - void (*work)(struct uv__work* w), - void (*done)(struct uv__work* w, int status)) { - uv_once(&once, init_once); - w->loop = loop; - w->work = work; - w->done = done; -// #ifdef __EMNAPI_WASI_THREADS__ -// _emnapi_after_uvthreadpool_ready(post, &w->wq, kind); -// #else - post(&w->wq, kind); -// #endif -} - - -static int uv__work_cancel(uv_loop_t* loop, uv_req_t* req, struct uv__work* w) { - int cancelled; - - uv_once(&once, init_once); /* Ensure |mutex| is initialized. */ - uv_mutex_lock(&mutex); - uv_mutex_lock(&w->loop->wq_mutex); - - cancelled = !uv__queue_empty(&w->wq) && w->work != NULL; - if (cancelled) - uv__queue_remove(&w->wq); - - uv_mutex_unlock(&w->loop->wq_mutex); - uv_mutex_unlock(&mutex); - - if (!cancelled) - return EBUSY; - - w->work = uv__cancelled; - uv_mutex_lock(&loop->wq_mutex); - uv__queue_insert_tail(&loop->wq, &w->wq); - uv_async_send(&loop->wq_async); - uv_mutex_unlock(&loop->wq_mutex); - - return 0; -} - - -void uv__work_done(uv_async_t* handle) { - struct uv__work* w; - uv_loop_t* loop; - struct uv__queue* q; - struct uv__queue wq; - int err; - int nevents; - - loop = container_of(handle, uv_loop_t, wq_async); - uv_mutex_lock(&loop->wq_mutex); - uv__queue_move(&loop->wq, &wq); - uv_mutex_unlock(&loop->wq_mutex); - - nevents = 0; - - while (!uv__queue_empty(&wq)) { - q = uv__queue_head(&wq); - uv__queue_remove(q); - - w = container_of(q, struct uv__work, wq); - err = (w->work == uv__cancelled) ? ECANCELED : 0; - w->done(w, err); - nevents++; - } - - /* This check accomplishes 2 things: - * 1. Even if the queue was empty, the call to uv__work_done() should count - * as an event. Which will have been added by the event loop when - * calling this callback. - * 2. Prevents accidental wrap around in case nevents == 0 events == 0. - */ - if (nevents > 1) { - /* Subtract 1 to counter the call to uv__work_done(). */ - uv__metrics_inc_events(loop, nevents - 1); - if (uv__get_internal_fields(loop)->current_timeout == 0) - uv__metrics_inc_events_waiting(loop, nevents - 1); - } -} - - -static void uv__queue_work(struct uv__work* w) { - uv_work_t* req = container_of(w, uv_work_t, work_req); - - req->work_cb(req); -} - - -static void uv__queue_done(struct uv__work* w, int err) { - uv_work_t* req; - - req = container_of(w, uv_work_t, work_req); - uv__req_unregister(req->loop); - - if (req->after_work_cb == NULL) - return; - - req->after_work_cb(req, err); -} - - -int uv_queue_work(uv_loop_t* loop, - uv_work_t* req, - uv_work_cb work_cb, - uv_after_work_cb after_work_cb) { - if (work_cb == NULL) - return EINVAL; - - uv__req_init(loop, req, UV_WORK); - req->loop = loop; - req->work_cb = work_cb; - req->after_work_cb = after_work_cb; - uv__work_submit(loop, - &req->work_req, - UV__WORK_CPU, - uv__queue_work, - uv__queue_done); - return 0; -} - - -int uv_cancel(uv_req_t* req) { - struct uv__work* wreq; - uv_loop_t* loop; - - switch (req->type) { - // case UV_FS: - // loop = ((uv_fs_t*) req)->loop; - // wreq = &((uv_fs_t*) req)->work_req; - // break; - // case UV_GETADDRINFO: - // loop = ((uv_getaddrinfo_t*) req)->loop; - // wreq = &((uv_getaddrinfo_t*) req)->work_req; - // break; - // case UV_GETNAMEINFO: - // loop = ((uv_getnameinfo_t*) req)->loop; - // wreq = &((uv_getnameinfo_t*) req)->work_req; - // break; - // case UV_RANDOM: - // loop = ((uv_random_t*) req)->loop; - // wreq = &((uv_random_t*) req)->work_req; - // break; - case UV_WORK: - loop = ((uv_work_t*) req)->loop; - wreq = &((uv_work_t*) req)->work_req; - break; - default: - return EINVAL; - } - - return uv__work_cancel(loop, req, wreq); -} - -#endif diff --git a/sdks/nodejs/node_modules/emnapi/src/uv/unix/async.c b/sdks/nodejs/node_modules/emnapi/src/uv/unix/async.c deleted file mode 100644 index e3b5900..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/uv/unix/async.c +++ /dev/null @@ -1,225 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/* This file contains both the uv__async internal infrastructure and the - * user-facing uv_async_t functions. - */ - -#if defined(__EMSCRIPTEN_PTHREADS__) || defined(_REENTRANT) - -#include "uv.h" -#include "internal.h" - -#include -#include -#include -#include "emnapi_common.h" - -#if EMNAPI_USE_PROXYING -#include -#include -#include - -int _emnapi_create_proxying_queue(uv_loop_t* loop) { - em_proxying_queue* queue = em_proxying_queue_create(); - loop->em_queue = queue; - if (queue == NULL) return ENOMEM; - return 0; -} - -void _emnapi_destroy_proxying_queue(uv_loop_t* loop) { - if (loop->em_queue != NULL) { - em_proxying_queue_destroy(loop->em_queue); - } -} - -#else -EMNAPI_INTERNAL_EXTERN void _emnapi_async_send_js(int type, - void (*callback)(void*), - void* data); - -int _emnapi_create_proxying_queue(uv_loop_t* loop) { - loop->em_queue = NULL; - return 0; -} - -void _emnapi_destroy_proxying_queue(uv_loop_t* loop) {} - -#endif - -static void uv__async_send(uv_loop_t* loop); -static void uv__cpu_relax(void); - -int uv_async_init(uv_loop_t* loop, uv_async_t* handle, uv_async_cb async_cb) { - uv__handle_init(loop, (uv_handle_t*)handle, UV_ASYNC); - handle->async_cb = async_cb; - handle->pending = 0; - handle->u.fd = 0; /* This will be used as a busy flag. */ - - uv__queue_insert_tail(&loop->async_handles, &handle->queue); - uv__handle_start(handle); - return 0; -} - -/* Only call this from the event loop thread. */ -static void uv__async_spin(uv_async_t* handle) { - _Atomic int* pending; - _Atomic int* busy; - int i; - - pending = (_Atomic int*) &handle->pending; - busy = (_Atomic int*) &handle->u.fd; - - /* Set the pending flag first, so no new events will be added by other - * threads after this function returns. */ - atomic_store(pending, 1); - - for (;;) { - /* 997 is not completely chosen at random. It's a prime number, acyclic by - * nature, and should therefore hopefully dampen sympathetic resonance. - */ - for (i = 0; i < 997; i++) { - if (atomic_load(busy) == 0) - return; - - /* Other thread is busy with this handle, spin until it's done. */ - uv__cpu_relax(); - } - - /* Yield the CPU. We may have preempted the other thread while it's - * inside the critical section and if it's running on the same CPU - * as us, we'll just burn CPU cycles until the end of our time slice. - */ - sched_yield(); - } -} - -static void uv__async_io(uv_loop_t* loop) { - struct uv__queue queue; - struct uv__queue* q; - uv_async_t* h; - _Atomic int *pending; - - uv__queue_move(&loop->async_handles, &queue); - while (!uv__queue_empty(&queue)) { - q = uv__queue_head(&queue); - h = uv__queue_data(q, uv_async_t, queue); - - uv__queue_remove(q); - uv__queue_insert_tail(&loop->async_handles, q); - - /* Atomically fetch and clear pending flag */ - pending = (_Atomic int*) &h->pending; - if (atomic_exchange(pending, 0) == 0) - continue; - - if (h->async_cb == NULL) - continue; - - h->async_cb(h); - } -} - -#if EMNAPI_USE_PROXYING - -#undef emscripten_main_browser_thread_id - -__attribute__((weak)) -pthread_t emscripten_main_browser_thread_id(void) { - return NULL; -} - -__attribute__((weak)) -pthread_t emscripten_main_runtime_thread_id(void) { - return emscripten_main_browser_thread_id(); -} -#endif - -static void uv__async_send(uv_loop_t* loop) { -#if EMNAPI_USE_PROXYING - pthread_t main_thread = emscripten_main_runtime_thread_id(); - assert(main_thread != NULL); - if (pthread_equal(main_thread, pthread_self())) { - NEXT_TICK((void (*)(void *))uv__async_io, loop); - } else { - // Neither emscripten_dispatch_to_thread_async nor MAIN_THREAD_ASYNC_EM_ASM - // invoke the async_cb callback if there is a printf() in worker thread. - // Using emscripten_proxy_async(emscripten_proxy_get_system_queue(), ...) - // also has the same problem. Not sure what happens. - // But creating a new queue is all ok. - if (!emscripten_proxy_async(loop->em_queue, - main_thread, - (void (*)(void *))uv__async_io, - loop)) { - abort(); - } - } -#else - _emnapi_async_send_js(EMNAPI_NEXTTICK_TYPE, - (void (*)(void *))uv__async_io, - loop); -#endif -} - -#define ACCESS_ONCE(type, var) (*(volatile type*) &(var)) - -int uv_async_send(uv_async_t* handle) { - _Atomic int* pending; - _Atomic int* busy; - - pending = (_Atomic int*) &handle->pending; - busy = (_Atomic int*) &handle->u.fd; - - /* Do a cheap read first. */ - if (atomic_load_explicit(pending, memory_order_relaxed) != 0) - return 0; - - /* Set the loop to busy. */ - atomic_fetch_add(busy, 1); - - /* Wake up the other thread's event loop. */ - if (atomic_exchange(pending, 1) == 0) - uv__async_send(handle->loop); - - /* Set the loop to not-busy. */ - atomic_fetch_add(busy, -1); - - return 0; -} - -void uv__async_close(uv_async_t* handle) { - uv__async_spin(handle); - uv__queue_remove(&handle->queue); - uv__handle_stop(handle); -} - -static void uv__cpu_relax(void) { -#if defined(__i386__) || defined(__x86_64__) - __asm__ __volatile__ ("rep; nop" ::: "memory"); /* a.k.a. PAUSE */ -#elif (defined(__arm__) && __ARM_ARCH >= 7) || defined(__aarch64__) - __asm__ __volatile__ ("yield" ::: "memory"); -#elif (defined(__ppc__) || defined(__ppc64__)) && defined(__APPLE__) - __asm volatile ("" : : : "memory"); -#elif !defined(__APPLE__) && (defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__)) - __asm__ __volatile__ ("or 1,1,1; or 2,2,2" ::: "memory"); -#endif -} - -#endif diff --git a/sdks/nodejs/node_modules/emnapi/src/uv/unix/core.c b/sdks/nodejs/node_modules/emnapi/src/uv/unix/core.c deleted file mode 100644 index 9c9bf4e..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/uv/unix/core.c +++ /dev/null @@ -1,70 +0,0 @@ -#if defined(__EMSCRIPTEN_PTHREADS__) || defined(_REENTRANT) - -#include "uv.h" -#include "internal.h" -#include -#include - -uint64_t uv_hrtime(void) { - return uv__hrtime(UV_CLOCK_PRECISE); -} - -void uv_close(uv_handle_t* handle, uv_close_cb close_cb) { - assert(!uv__is_closing(handle)); - - handle->flags |= UV_HANDLE_CLOSING; - handle->close_cb = close_cb; - - switch (handle->type) { - case UV_ASYNC: - uv__async_close((uv_async_t*)handle); - break; - default: - assert(0); - } - - uv__make_close_pending(handle); -} - -static void uv__finish_close(uv_handle_t* handle) { - assert(handle->flags & UV_HANDLE_CLOSING); - assert(!(handle->flags & UV_HANDLE_CLOSED)); - handle->flags |= UV_HANDLE_CLOSED; - - uv__handle_unref(handle); - uv__queue_remove(&handle->handle_queue); - - if (handle->close_cb) { - handle->close_cb(handle); - } -} - -void uv__make_close_pending(uv_handle_t* handle) { - assert(handle->flags & UV_HANDLE_CLOSING); - assert(!(handle->flags & UV_HANDLE_CLOSED)); - // handle->next_closing = handle->loop->closing_handles; - // handle->loop->closing_handles = handle; - NEXT_TICK(((void (*)(void *))uv__finish_close), handle); -} - -int uv_is_closing(const uv_handle_t* handle) { - return uv__is_closing(handle); -} - -int nanosleep(const struct timespec *, struct timespec *); - -void uv_sleep(unsigned int msec) { - struct timespec timeout; - int rc; - - timeout.tv_sec = msec / 1000; - timeout.tv_nsec = (msec % 1000) * 1000 * 1000; - - do - rc = nanosleep(&timeout, &timeout); - while (rc == -1 && errno == EINTR); - - assert(rc == 0); -} - -#endif diff --git a/sdks/nodejs/node_modules/emnapi/src/uv/unix/internal.h b/sdks/nodejs/node_modules/emnapi/src/uv/unix/internal.h deleted file mode 100644 index fc20c11..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/uv/unix/internal.h +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef UV_UNIX_INTERNAL_H_ -#define UV_UNIX_INTERNAL_H_ - -#include "../uv-common.h" -#include "emnapi_common.h" -#include - -#ifndef EMNAPI_NEXTTICK_TYPE -#define EMNAPI_NEXTTICK_TYPE 0 -#endif -#if EMNAPI_NEXTTICK_TYPE == 0 -EMNAPI_INTERNAL_EXTERN void _emnapi_set_immediate(void (*callback)(void*), void* data); -#define NEXT_TICK(callback, data) _emnapi_set_immediate((callback), (data)) -#elif EMNAPI_NEXTTICK_TYPE == 1 -EMNAPI_INTERNAL_EXTERN void _emnapi_next_tick(void (*callback)(void*), void* data); -#define NEXT_TICK(callback, data) _emnapi_next_tick((callback), (data)) -#else -#error "Invalid EMNAPI_NEXTTICK_TYPE" -#endif - -typedef enum { - UV_CLOCK_PRECISE = 0, /* Use the highest resolution clock available. */ - UV_CLOCK_FAST = 1 /* Use the fastest clock with <= 1ms granularity. */ -} uv_clocktype_t; - -uint64_t uv__hrtime(uv_clocktype_t type); - -#if defined(__EMSCRIPTEN_PTHREADS__) || defined(_REENTRANT) -void uv__async_close(uv_async_t* handle); -void uv__make_close_pending(uv_handle_t* handle); -#endif - -#endif /* UV_UNIX_INTERNAL_H_ */ diff --git a/sdks/nodejs/node_modules/emnapi/src/uv/unix/loop.c b/sdks/nodejs/node_modules/emnapi/src/uv/unix/loop.c deleted file mode 100644 index eec60e8..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/uv/unix/loop.c +++ /dev/null @@ -1,72 +0,0 @@ -#if defined(__EMSCRIPTEN_PTHREADS__) || defined(_REENTRANT) - -#include "../uv-common.h" -#include -#include - -int _emnapi_create_proxying_queue(uv_loop_t* loop); -void _emnapi_destroy_proxying_queue(uv_loop_t* loop); - -int uv_loop_init(uv_loop_t* loop) { - uv__loop_internal_fields_t* lfields; - void* saved_data; - int err; - - saved_data = loop->data; - memset(loop, 0, sizeof(*loop)); - loop->data = saved_data; - - lfields = (uv__loop_internal_fields_t*) uv__calloc(1, sizeof(*lfields)); - if (lfields == NULL) - return ENOMEM; - loop->internal_fields = lfields; - - err = uv_mutex_init(&lfields->loop_metrics.lock); - if (err) - goto fail_metrics_mutex_init; - memset(&lfields->loop_metrics.metrics, - 0, - sizeof(lfields->loop_metrics.metrics)); - - uv__queue_init(&loop->wq); - uv__queue_init(&loop->async_handles); - uv__queue_init(&loop->handle_queue); - err = _emnapi_create_proxying_queue(loop); - if (err) goto fail_proxying_queue_init; - err = uv_mutex_init(&loop->wq_mutex); - if (err) goto fail_mutex_init; - err = uv_async_init(loop, &loop->wq_async, uv__work_done); - if (err) goto fail_async_init; - return 0; - -fail_async_init: - uv_mutex_destroy(&loop->wq_mutex); - -fail_mutex_init: - -fail_proxying_queue_init: - -fail_metrics_mutex_init: - uv__free(lfields); - loop->internal_fields = NULL; - - return err; -} - -void uv__loop_close(uv_loop_t* loop) { - uv__loop_internal_fields_t* lfields; - - uv_mutex_lock(&loop->wq_mutex); - assert(uv__queue_empty(&loop->wq) && "thread pool work queue not empty!"); - assert(!uv__has_active_reqs(loop)); - _emnapi_destroy_proxying_queue(loop); - uv_mutex_unlock(&loop->wq_mutex); - uv_mutex_destroy(&loop->wq_mutex); - - lfields = uv__get_internal_fields(loop); - uv_mutex_destroy(&lfields->loop_metrics.lock); - uv__free(lfields); - loop->internal_fields = NULL; -} - -#endif diff --git a/sdks/nodejs/node_modules/emnapi/src/uv/unix/posix-hrtime.c b/sdks/nodejs/node_modules/emnapi/src/uv/unix/posix-hrtime.c deleted file mode 100644 index aec918f..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/uv/unix/posix-hrtime.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright libuv project contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#if !defined(__wasm__) || (defined(__EMSCRIPTEN__) || defined(__wasi__)) - -#include "uv.h" -#include "internal.h" - -#include -#include -#include - -uint64_t uv__hrtime(uv_clocktype_t type) { - struct timespec t; - - if (clock_gettime(CLOCK_MONOTONIC, &t)) - abort(); - - return t.tv_sec * (uint64_t) 1e9 + t.tv_nsec; -} - -#endif diff --git a/sdks/nodejs/node_modules/emnapi/src/uv/unix/thread.c b/sdks/nodejs/node_modules/emnapi/src/uv/unix/thread.c deleted file mode 100644 index 878eecc..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/uv/unix/thread.c +++ /dev/null @@ -1,191 +0,0 @@ -#if defined(__EMSCRIPTEN_PTHREADS__) || defined(_REENTRANT) - -#include -#include -#include -#include -#include "uv.h" - -// #define CHECK_RET(the_call) \ -// do { \ -// int r = (the_call); \ -// if (r) { \ -// fprintf(stderr, #the_call ": %d\n", r); \ -// abort(); \ -// } \ -// } while (0) - -static size_t uv__min_stack_size(void) { - static const size_t min = 8192; - -#ifdef PTHREAD_STACK_MIN /* Not defined on NetBSD. */ - if (min < (size_t) PTHREAD_STACK_MIN) - return PTHREAD_STACK_MIN; -#endif /* PTHREAD_STACK_MIN */ - - return min; -} - -static size_t uv__default_stack_size(void) { -#if !defined(__linux__) - return 0; -#elif defined(__PPC__) || defined(__ppc__) || defined(__powerpc__) - return 4 << 20; /* glibc default. */ -#else - return 2 << 20; /* glibc default. */ -#endif -} - -size_t uv__thread_stack_size(void) { - return uv__default_stack_size(); -} - -void uv_sem_post(sem_t* sem) { - if (sem_post(sem)) - abort(); -} - -int uv_sem_init(sem_t* sem, unsigned int value) { - if (sem_init(sem, 0, value)) - return errno; - return 0; -} - -void uv_sem_wait(sem_t* sem) { - int r; - - do { - r = sem_wait(sem); - } while (r == -1 && errno == EINTR); - - if (r) - abort(); -} - -void uv_sem_destroy(sem_t* sem) { - if (sem_destroy(sem)) - abort(); -} - -void uv_once(pthread_once_t* guard, void (*callback)(void)) { - if (pthread_once(guard, callback)) - abort(); -} - -int uv_mutex_init(uv_mutex_t* mutex) { -#if defined(__wasi__) || defined(NDEBUG) || !defined(PTHREAD_MUTEX_ERRORCHECK) - return pthread_mutex_init(mutex, NULL); -#else - pthread_mutexattr_t attr; - int err; - - if (pthread_mutexattr_init(&attr)) - abort(); - - if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK)) - abort(); - - err = pthread_mutex_init(mutex, &attr); - - if (pthread_mutexattr_destroy(&attr)) - abort(); - - return err; -#endif -} - -void uv_mutex_destroy(uv_mutex_t* mutex) { - if (pthread_mutex_destroy(mutex)) - abort(); -} - -void uv_mutex_lock(uv_mutex_t* mutex) { - if (pthread_mutex_lock(mutex)) - abort(); -} - -void uv_mutex_unlock(uv_mutex_t* mutex) { - if (pthread_mutex_unlock(mutex)) - abort(); -} - -int uv_cond_init(uv_cond_t* cond) { - return pthread_cond_init(cond, NULL); -} - -void uv_cond_signal(uv_cond_t* cond) { - if (pthread_cond_signal(cond)) - abort(); -} - -void uv_cond_wait(uv_cond_t* cond, uv_mutex_t* mutex) { - if (pthread_cond_wait(cond, mutex)) - abort(); -} - -void uv_cond_destroy(uv_cond_t* cond) { - if (pthread_cond_destroy(cond)) - abort(); -} - -int uv_thread_create_ex(uv_thread_t* tid, - const uv_thread_options_t* params, - void (*entry)(void *arg), - void *arg) { - int err; - pthread_attr_t* attr; - pthread_attr_t attr_storage; - size_t pagesize; - size_t stack_size; - size_t min_stack_size; - - /* Used to squelch a -Wcast-function-type warning. */ - union { - void (*in)(void*); - void* (*out)(void*); - } f; - - stack_size = - params->flags & UV_THREAD_HAS_STACK_SIZE ? params->stack_size : 0; - - attr = NULL; - if (stack_size == 0) { - stack_size = uv__thread_stack_size(); - } else { - pagesize = 65536; - stack_size = (stack_size + pagesize - 1) &~ (pagesize - 1); - min_stack_size = uv__min_stack_size(); - if (stack_size < min_stack_size) - stack_size = min_stack_size; - } - - if (stack_size > 0) { - attr = &attr_storage; - - if (pthread_attr_init(attr)) - abort(); - - if (pthread_attr_setstacksize(attr, stack_size)) - abort(); - } - - f.in = entry; - err = pthread_create(tid, attr, f.out, arg); - - if (attr != NULL) - pthread_attr_destroy(attr); - - return err; -} - -int uv_thread_create(uv_thread_t *tid, void (*entry)(void *arg), void *arg) { - uv_thread_options_t params; - params.flags = UV_THREAD_NO_FLAGS; - return uv_thread_create_ex(tid, ¶ms, entry, arg); -} - -int uv_thread_join(uv_thread_t *tid) { - return pthread_join(*tid, NULL); -} - -#endif diff --git a/sdks/nodejs/node_modules/emnapi/src/uv/uv-common.c b/sdks/nodejs/node_modules/emnapi/src/uv/uv-common.c deleted file mode 100644 index 2cc4eb2..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/uv/uv-common.c +++ /dev/null @@ -1,186 +0,0 @@ -#if defined(__EMSCRIPTEN_PTHREADS__) || defined(_REENTRANT) - -#include -#include -#include -#include -#include "uv-common.h" - -typedef struct { - uv_malloc_func local_malloc; - uv_realloc_func local_realloc; - uv_calloc_func local_calloc; - uv_free_func local_free; -} uv__allocator_t; - -static uv__allocator_t uv__allocator = { - malloc, - realloc, - calloc, - free, -}; - -char* uv__strdup(const char* s) { - size_t len = strlen(s) + 1; - char* m = uv__malloc(len); - if (m == NULL) - return NULL; - return memcpy(m, s, len); -} - -char* uv__strndup(const char* s, size_t n) { - char* m; - size_t len = strlen(s); - if (n < len) - len = n; - m = uv__malloc(len + 1); - if (m == NULL) - return NULL; - m[len] = '\0'; - return memcpy(m, s, len); -} - -void* uv__malloc(size_t size) { - if (size > 0) - return uv__allocator.local_malloc(size); - return NULL; -} - -void uv__free(void* ptr) { - int saved_errno; - - /* Libuv expects that free() does not clobber errno. The system allocator - * honors that assumption but custom allocators may not be so careful. - */ - saved_errno = errno; - uv__allocator.local_free(ptr); - errno = saved_errno; -} - -void* uv__calloc(size_t count, size_t size) { - return uv__allocator.local_calloc(count, size); -} - -void* uv__realloc(void* ptr, size_t size) { - if (size > 0) - return uv__allocator.local_realloc(ptr, size); - uv__free(ptr); - return NULL; -} - -void* uv__reallocf(void* ptr, size_t size) { - void* newptr; - - newptr = uv__realloc(ptr, size); - if (newptr == NULL) - if (size > 0) - uv__free(ptr); - - return newptr; -} - -int uv_replace_allocator(uv_malloc_func malloc_func, - uv_realloc_func realloc_func, - uv_calloc_func calloc_func, - uv_free_func free_func) { - if (malloc_func == NULL || realloc_func == NULL || - calloc_func == NULL || free_func == NULL) { - return EINVAL; - } - - uv__allocator.local_malloc = malloc_func; - uv__allocator.local_realloc = realloc_func; - uv__allocator.local_calloc = calloc_func; - uv__allocator.local_free = free_func; - - return 0; -} - -static uv_loop_t default_loop_struct; -static uv_loop_t* default_loop_ptr; - - -uv_loop_t* uv_default_loop(void) { - if (default_loop_ptr != NULL) - return default_loop_ptr; - - if (uv_loop_init(&default_loop_struct)) - return NULL; - - default_loop_ptr = &default_loop_struct; - return default_loop_ptr; -} - -int uv_loop_close(uv_loop_t* loop) { - struct uv__queue* q; - uv_handle_t* h; -#ifndef NDEBUG - void* saved_data; -#endif - - if (uv__has_active_reqs(loop)) - return EBUSY; - - uv__queue_foreach(q, &loop->handle_queue) { - h = uv__queue_data(q, uv_handle_t, handle_queue); - if (!(h->flags & UV_HANDLE_INTERNAL)) - return EBUSY; - } - - uv__loop_close(loop); - -#ifndef NDEBUG - saved_data = loop->data; - memset(loop, -1, sizeof(*loop)); - loop->data = saved_data; -#endif - if (loop == default_loop_ptr) - default_loop_ptr = NULL; - - return 0; -} - -#if defined(__GNUC__) && !defined(_WIN32) -__attribute__((destructor)) -#endif -void uv_library_shutdown(void) { - static int was_shutdown; - - if (uv__exchange_int_relaxed(&was_shutdown, 1)) - return; - -// uv__process_title_cleanup(); -// uv__signal_cleanup(); -// #ifdef __MVS__ -// /* TODO(itodorov) - zos: revisit when Woz compiler is available. */ -// uv__os390_cleanup(); -// #else - uv__threadpool_cleanup(); -// #endif -} - -int uv_metrics_info(uv_loop_t* loop, uv_metrics_t* metrics) { - memcpy(metrics, - &uv__get_loop_metrics(loop)->metrics, - sizeof(*metrics)); - - return 0; -} - -uint64_t uv_metrics_idle_time(uv_loop_t* loop) { - uv__loop_metrics_t* loop_metrics; - uint64_t entry_time; - uint64_t idle_time; - - loop_metrics = uv__get_loop_metrics(loop); - uv_mutex_lock(&loop_metrics->lock); - idle_time = loop_metrics->provider_idle_time; - entry_time = loop_metrics->provider_entry_time; - uv_mutex_unlock(&loop_metrics->lock); - - if (entry_time > 0) - idle_time += uv_hrtime() - entry_time; - return idle_time; -} - -#endif diff --git a/sdks/nodejs/node_modules/emnapi/src/uv/uv-common.h b/sdks/nodejs/node_modules/emnapi/src/uv/uv-common.h deleted file mode 100644 index 5c8f1d6..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/uv/uv-common.h +++ /dev/null @@ -1,203 +0,0 @@ -#ifndef UV_COMMON_H_ -#define UV_COMMON_H_ - -#if defined(__EMSCRIPTEN__) - #ifndef EMNAPI_USE_PROXYING - #include /* version.h */ - #if __EMSCRIPTEN_major__ * 10000 + __EMSCRIPTEN_minor__ * 100 + __EMSCRIPTEN_tiny__ >= 30109 - #define EMNAPI_USE_PROXYING 1 - #else - #define EMNAPI_USE_PROXYING 0 - #endif - #endif -#else - #define EMNAPI_USE_PROXYING 0 -#endif - -#if defined(__EMSCRIPTEN_PTHREADS__) || defined(_REENTRANT) -#include -#include "uv.h" -#include "queue.h" -#ifndef _MSC_VER -# include -#endif - -#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) -// #define offsetof(s, m) __builtin_offsetof(s, m) -#define container_of(ptr, type, member) \ - ((type *) ((char *) (ptr) - offsetof(type, member))) - -/* Handle flags. Some flags are specific to Windows or UNIX. */ -enum { - /* Used by all handles. */ - UV_HANDLE_CLOSING = 0x00000001, - UV_HANDLE_CLOSED = 0x00000002, - UV_HANDLE_ACTIVE = 0x00000004, - UV_HANDLE_REF = 0x00000008, - UV_HANDLE_INTERNAL = 0x00000010, - UV_HANDLE_ENDGAME_QUEUED = 0x00000020 -}; - -#define uv__has_active_reqs(loop) \ - ((loop)->active_reqs.count > 0) - -#define uv__req_register(loop) \ - do { \ - (loop)->active_reqs.count++; \ - } \ - while (0) - -#define uv__req_unregister(loop) \ - do { \ - assert(uv__has_active_reqs(loop)); \ - (loop)->active_reqs.count--; \ - } \ - while (0) - -#define uv__has_active_handles(loop) \ - ((loop)->active_handles > 0) - -#define uv__active_handle_add(h) \ - do { \ - (h)->loop->active_handles++; \ - } \ - while (0) - -#define uv__active_handle_rm(h) \ - do { \ - (h)->loop->active_handles--; \ - } \ - while (0) - -#define uv__is_active(h) \ - (((h)->flags & UV_HANDLE_ACTIVE) != 0) - -#define uv__is_closing(h) \ - (((h)->flags & (UV_HANDLE_CLOSING | UV_HANDLE_CLOSED)) != 0) -#define uv__handle_start(h) \ - do { \ - if (((h)->flags & UV_HANDLE_ACTIVE) != 0) break; \ - (h)->flags |= UV_HANDLE_ACTIVE; \ - if (((h)->flags & UV_HANDLE_REF) != 0) uv__active_handle_add(h); \ - } \ - while (0) - -#define uv__handle_stop(h) \ - do { \ - if (((h)->flags & UV_HANDLE_ACTIVE) == 0) break; \ - (h)->flags &= ~UV_HANDLE_ACTIVE; \ - if (((h)->flags & UV_HANDLE_REF) != 0) uv__active_handle_rm(h); \ - } \ - while (0) - -#define uv__handle_ref(h) \ - do { \ - if (((h)->flags & UV_HANDLE_REF) != 0) break; \ - (h)->flags |= UV_HANDLE_REF; \ - if (((h)->flags & UV_HANDLE_CLOSING) != 0) break; \ - if (((h)->flags & UV_HANDLE_ACTIVE) != 0) uv__active_handle_add(h); \ - } \ - while (0) - -#define uv__handle_unref(h) \ - do { \ - if (((h)->flags & UV_HANDLE_REF) == 0) break; \ - (h)->flags &= ~UV_HANDLE_REF; \ - if (((h)->flags & UV_HANDLE_CLOSING) != 0) break; \ - if (((h)->flags & UV_HANDLE_ACTIVE) != 0) uv__active_handle_rm(h); \ - } \ - while (0) - -#define uv__has_ref(h) \ - (((h)->flags & UV_HANDLE_REF) != 0) - -#if defined(_WIN32) -# define uv__handle_platform_init(h) ((h)->u.fd = -1) -#else -# define uv__handle_platform_init(h) ((h)->next_closing = NULL) -#endif - -#define uv__handle_init(loop_, h, type_) \ - do { \ - (h)->loop = (loop_); \ - (h)->type = (type_); \ - (h)->flags = UV_HANDLE_REF; /* Ref the loop when active. */ \ - uv__queue_insert_tail(&(loop_)->handle_queue, &(h)->handle_queue); \ - uv__handle_platform_init(h); \ - } \ - while (0) - -#define UV_REQ_INIT(req, typ) \ - do { \ - (req)->type = (typ); \ - } \ - while (0) - -#define uv__req_init(loop, req, typ) \ - do { \ - UV_REQ_INIT(req, typ); \ - uv__req_register(loop); \ - } \ - while (0) - -#define uv__get_internal_fields(loop) \ - ((uv__loop_internal_fields_t*) loop->internal_fields) - -#define uv__get_loop_metrics(loop) \ - (&uv__get_internal_fields(loop)->loop_metrics) - -#define uv__metrics_inc_loop_count(loop) \ - do { \ - uv__get_loop_metrics(loop)->metrics.loop_count++; \ - } while (0) - -#define uv__metrics_inc_events(loop, e) \ - do { \ - uv__get_loop_metrics(loop)->metrics.events += (e); \ - } while (0) - -#define uv__metrics_inc_events_waiting(loop, e) \ - do { \ - uv__get_loop_metrics(loop)->metrics.events_waiting += (e); \ - } while (0) - -#define uv__exchange_int_relaxed(p, v) \ - atomic_exchange_explicit((_Atomic int*)(p), v, memory_order_relaxed) - -enum uv__work_kind { - UV__WORK_CPU, - UV__WORK_FAST_IO, - UV__WORK_SLOW_IO -}; - -void uv__threadpool_cleanup(void); -void uv__work_done(uv_async_t* handle); -void uv__loop_close(uv_loop_t* loop); - -void *uv__calloc(size_t count, size_t size); -char *uv__strdup(const char* s); -char *uv__strndup(const char* s, size_t n); -void* uv__malloc(size_t size); -void uv__free(void* ptr); -void* uv__realloc(void* ptr, size_t size); -void* uv__reallocf(void* ptr, size_t size); - -typedef struct uv__loop_metrics_s uv__loop_metrics_t; -typedef struct uv__loop_internal_fields_s uv__loop_internal_fields_t; - -struct uv__loop_metrics_s { - uv_metrics_t metrics; - uint64_t provider_entry_time; - uint64_t provider_idle_time; - uv_mutex_t lock; -}; - -struct uv__loop_internal_fields_s { - unsigned int flags; - uv__loop_metrics_t loop_metrics; - int current_timeout; -}; - -#endif - -#endif /* UV_COMMON_H_ */ diff --git a/sdks/nodejs/node_modules/emnapi/src/wasi_wait.c b/sdks/nodejs/node_modules/emnapi/src/wasi_wait.c deleted file mode 100644 index a0340c8..0000000 --- a/sdks/nodejs/node_modules/emnapi/src/wasi_wait.c +++ /dev/null @@ -1,106 +0,0 @@ -#if defined(__wasi__) - -#include -#include -#include -#include -#include "emnapi_internal.h" - -struct __pthread { - unsigned char _[32]; - volatile int cancel; - volatile unsigned char canceldisable, cancelasync; - unsigned char tsd_used:1; - unsigned char dlerror_flag:1; - unsigned char __[68]; -}; - -#define INFINITY __builtin_inff() - -int __wasilibc_futex_wait_atomic_wait(volatile void *addr, int op, int val, int64_t max_wait_ns); - -static _Atomic pthread_t crashed_thread_id = NULL; - -__attribute__((visibility("default"))) -void emnapi_thread_crashed() { - crashed_thread_id = pthread_self(); -} - -void _emnapi_yield() { - if (crashed_thread_id) { - _emnapi_runtime_keepalive_push(); - _emnapi_unwind(); - } -} - -static int _emnapi_wait_main_browser_thread(int is_runtime_thread, volatile void *addr, int op, int val, double max_wait_ms) { - double now = _emnapi_get_now(); - double end = now + max_wait_ms; - - while (1) { - now = _emnapi_get_now(); - if (now >= end) { - return -ETIMEDOUT; - } - - if (is_runtime_thread) { - _emnapi_yield(); - } - - if (__c11_atomic_load((_Atomic int *)addr, __ATOMIC_SEQ_CST) != val) { - break; - } - } - - return 0; -} - -int _emnapi_wait(int is_runtime_thread, volatile void *addr, int op, int val, double max_wait_ms) { - if (is_runtime_thread) { - _emnapi_yield(); - } - - // https://github.com/WebAssembly/wasi-libc/blob/3f7eb4c7d6ede4dde3c4bffa6ed14e8d656fe93f/libc-top-half/musl/src/thread/wasm32/__wasilibc_busywait.c#L42 - if (!_emnapi_is_main_browser_thread()) { - int64_t max_wait_ns = -1; - if (max_wait_ms != INFINITY) { - max_wait_ns = (int64_t)(max_wait_ms*1000*1000); - } - return __wasilibc_futex_wait_atomic_wait(addr, op, val, max_wait_ns); - } - - return _emnapi_wait_main_browser_thread(is_runtime_thread, addr, op, val, max_wait_ms); -} - -int __wasilibc_futex_wait_maybe_busy(volatile void *addr, int op, int val, int64_t max_wait_ns) { - // https://github.com/emscripten-core/emscripten/blob/89ce854a99238d04116a3d9b5afe241eec90c6c3/system/lib/libc/musl/src/thread/__timedwait.c#L60 - int r = 0; - double msecsToSleep = max_wait_ns >= 0 ? (max_wait_ns / 1000000.0) : INFINITY; - int is_runtime_thread = _emnapi_is_main_runtime_thread(); - double max_ms_slice_to_sleep = is_runtime_thread ? 1 : 100; - - if (is_runtime_thread || - pthread_self()->canceldisable != PTHREAD_CANCEL_DISABLE || - pthread_self()->cancelasync) { - double sleepUntilTime = _emnapi_get_now() + msecsToSleep; - do { - if (pthread_self()->cancel) { - pthread_testcancel(); - return ECANCELED; - } - msecsToSleep = sleepUntilTime - _emnapi_get_now(); - if (msecsToSleep <= 0) { - r = ETIMEDOUT; - break; - } - if (msecsToSleep > max_ms_slice_to_sleep) - msecsToSleep = max_ms_slice_to_sleep; - r = -_emnapi_wait(is_runtime_thread, (void*)addr, op, val, msecsToSleep); - } while (r == ETIMEDOUT); - } else { - r = -_emnapi_wait(is_runtime_thread, (void*)addr, op, val, msecsToSleep); - } - return r; -} - -#endif diff --git a/sdks/nodejs/node_modules/es-toolkit/CHANGELOG.md b/sdks/nodejs/node_modules/es-toolkit/CHANGELOG.md deleted file mode 100644 index df9bcb1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/CHANGELOG.md +++ /dev/null @@ -1,763 +0,0 @@ -# es-toolkit Changelog - -## Version v1.44.0 - -Released on January 16th, 2026. - -- Added `shouldRetry` option to `retry` function. ([#1585]) -- Added `isEmptyObject` predicate function. ([#1584]) -- Added `isNumber` predicate function. -- Enhanced error cloning to support `AggregateError`. ([#1563]) -- Implemented collection methods for Maps and Sets. -- Added bundle size analysis and visualization components to docs. ([#1564]) -- Fixed `flattenObject` to retain empty objects and arrays. -- Enhanced type safety for `clone` function. -- Fixed `clone` error when cloning object with null prototype. ([#1570]) -- Fixed array function callbacks to include index and array parameters. ([#1561]) -- Fixed `compat/cloneDeep` and `cloneDeepWith` to clone null-prototype objects as regular objects. ([#1562]) -- Fixed `compat/clamp` to ensure consistency with lodash. ([#1555]) -- Simplified `intersection` filter callback for consistency. ([#1582]) -- Fixed incorrect function names and output in `cloneDeep` JSDoc examples. ([#1583]) - -We sincerely thank @raon0211, @dayongkr, @eunwoo-levi, @matt-oakes, @T3sT3ro, and @D-Sketon for their contributions. We appreciate your great efforts! - -## Version v1.43.0 - -Released on December 12th, 2025. - -- Enhanced `merge` to handle arrays and objects consistently, and to match lodash's behavior with date values and array-like objects. ([#1553], [#1542], [#1548]) -- Fixed `isMatch` and `isMatchWith` to match lodash's behavior. -- Fixed `intersectionBy` implementation and removed duplicates when the mapper produces the same values. ([#1528]) -- Fixed `throttle` working like debounce. -- Fixed type inference in `toSnakeCaseKeys`, `toCamelCaseKeys` for edge cases and improved type inference for uppercase keys. ([#1538]) -- Fixed casing utilities (`camelCase`, `kebabCase`, `lowerCase`, `snakeCase`, `startCase`, `upperCase`) to match lodash's behavior. ([#1525]) -- Fixed `compat/template` to disable ES interpolation when custom `interpolate` is provided. ([#1527]) -- Fixed incorrect example in `differenceBy` documentation. ([#1543]) -- Performance improvement: updated `deburr` to use arrays to construct the deburrMap. ([#1526]) - -We sincerely thank @dayongkr, @raon0211, @wo-o29, @Yeom-JinHo, @Copilot, @oshosh, @vbfox, @sukvvon, @sankeyangshu, @D-Sketon, @seo-rii for their contributions. We appreciate your great efforts! - -## Version v1.42.0 - -Released on November 17th, 2025. - -- Added new async utilities: `filterAsync`, `flatMapAsync`, `forEachAsync`, `mapAsync`, `reduceAsync`, and `limitAsync` for handling asynchronous operations. -- Exported `ThrottleOptions` and `DebounceOptions` interfaces for better type support. -- Fixed `isFinite` to implement type predicate to narrow type to number. -- Fixed `isSafeInteger` to implement type predicate to narrow type to number. -- Fixed `omit` to prevent adding index properties to array-like objects. -- Fixed `mergeWith` to remove unnecessary nullish coalescing for 100% branch coverage. -- Fixed `compat/updateWith` to remove unreachable code and add prototype pollution test. -- Updated documentation headings for consistency. -- Improved test coverage for `compat/mergeWith`, `compat/unset`, `get`, `toMerged`, `mergeWith`, and `compat/intersectionBy` with additional edge cases and security tests. - -We sincerely thank @Debbl, @wo-o29, @raon0211, @Yeom-JinHo, @sukvvon, and @D-Sketon for their contributions. We appreciate your great efforts! - -## Version v1.41.0 - -Released on October 24th, 2025. - -- Enhanced `throttle` to preserve `this` context when called as a method. -- Added type guard support for `partition` function. -- Fixed `omit` to support runtime-determined key arrays with proper overloads. -- Fixed `defaults` in compatibility layer to properly handle undefined and null sources. -- Fixed `toSnakeCaseKeys` and `toCamelCaseKeys` to correctly return types for non-plain objects. -- Fixed `toMerged` and `mergeWith` to properly handle shared objects in merge logic. -- Fixed `compat/union` to support array-like objects. -- Fixed `compat/updateWith` to use `get` for value retrieval in updater function. -- Fixed circular import between `isMatch` and `isMatchWith`. -- Fixed `find` and `findLast` by simplifying logic and removing unnecessary checks. -- Fixed `takeRight` by improving test coverage and removing redundant checks. -- Fixed `curry` and `curryRight` by removing unnecessary type assertions. -- Fixed `isEqualWith` and `mapKeys` by removing unnecessary type assertions. -- Improved performance for `meanBy` by removing intermediate array creation. -- Updated build system to use UMD format instead of IIFE for browser builds. -- Fixed numerous documentation examples across compat modules. -- Improved test coverage with additional test cases for edge cases and compatibility. - -We sincerely thank @the5thbeatle, @wo-o29, @hwibaski, @manudeli, @raon0211, @dayongkr, @D-Sketon, @yoouungyoung, @Dohun-choi, @sukvvon, @zoulou00, and @sen2y for their contributions. We appreciate your great efforts! - -## Version v1.40.0 - -Released on October 8th, 2025. - -- Enhanced `sumBy` to pass the element index to the `getValue` callback function. -- Improved performance for `uniq` function. -- Fixed `cloneDeepWith` to handle runtime errors in environments without Blob support and correctly clone Boolean, Number, and String objects. -- Fixed `omit` to avoid unnecessary deep cloning, improving performance. -- Fixed `toCamelCaseKeys` to properly handle PascalCase type conversion. -- Fixed `toPath` to correctly handle arrays and non-string inputs. -- Fixed `repeat` to validate and handle invalid repeat counts. -- Fixed `sortedIndexBy` to properly handle default iteratee. -- Fixed `some` predicate check to correctly handle null and undefined cases. -- Fixed compatibility issue in `compat/unset` with nonexistent paths. -- Fixed several JSDoc issues across multiple functions including return types, parameter descriptions, and method names. -- Improved documentation clarity and consistency across multiple functions. -- Enhanced test coverage with additional test cases for compat functions and edge cases. -- Updated build configuration and CI workflows. - -We sincerely thank @wo-o29, @D-Sketon, @HidenLee, @yoouung, @manudeli, @dayongkr, @Li13, @nicklemmon, @sen2y, @miinhho, @raon0211, @joshkel, @jgjgill, @mlnwns, @Dohun-choi, @PinkChampagne17, @sukvvon, @YOUNGHO8762, @caseBread, @Jeongeun-Choi, @artechventure and hoyyChoi for their contributions. We appreciate your great efforts! - -## Version v1.39.10 - -Released on August 17th, 2025. - -- Fixed `defaultsDeep` to properly handle deep merging of objects in arrays -- Fixed several documentation issues and examples across multiple functions - -We sincerely thank @wo-o29, @thwlckd, @kilimandzharov, and @dayongkr for their contributions. We appreciate your great efforts! - -## Version v1.39.9 - -Released on August 10th, 2025. - -- Fixed `mergeWith` to properly handle null values returned from customizer function. -- Fixed `cloneDeepWith` to properly handle customizer returning null values. -- Fixed some of the documentation issues. - -We sincerely thank @raon0211, @joshkel, and @Najeong-Kim for their contributions. We appreciate your great efforts! - -## Version v1.39.8 - -Released on July 25th, 2025. - -- Aligned the types of `fill`, `pullAll`, `pullAllBy`, `pullAllWith`, `pullAt`, `remove`, and `reverse` in our compatibility library with the latest Lodash types (`@types/lodash` v4.17.20). - -## Version v1.39.7 - -Released on July 9th, 2025. - -- Fixed a compatibility issue with Lodash's `debounce` and `throttle` functions. -- Remove useless source map for reduce bundle size. -- Fix some of the documentation issues. - -We sincerely thank @dayongkr, @cobocho, @raon0211, and @D-Sketon for their contributions. We appreciate your great efforts! - -## Version v1.39.6 - -Released on July 2th, 2025. - -- Fixed handling of null/undefined values in `values` function. -- Fixed type safety in `compat/get` by adding GetFieldType utility type. - -We sincerely thank @raon0211, @dayongkr, @yhb-flydream, @ssi02014, @JeongHwan-dev, and @guesung for their contributions. We appreciate your great efforts! - -## Version v1.39.5 - -Released on June 24th, 2025. - -- Fixed type compatibility issues between `es-toolkit/compat` and `@types/lodash`. -- Improved documentation. - -We thank @raon0211, @dayongkr, @sukvvon, and @yhb-flydream for their contributions. - -## Version v1.39.4 - -Released on June 21st, 2025. - -- Fixed prototype pollution issue in es-toolkit to enhance security. -- Enhanced build system to provide compat/\* functions in CommonJS format by default. - -We thank @raon0211, and @dayongkr for their contributions. - -## Version v1.39.3 - -Released on June 7th, 2025. - -- Fixed postbuild script to ensure compat function categorization aligns with src directory structure. - -## Version v1.39.2 - -Released on June 7th, 2025. - -- Added dual package export support for individual compat functions (e.g., `es-toolkit/compat/add`). - -## Version v1.39.1 - -Released on June 6th, 2025. - -- Resolved mismatch between named and default exports in compat .d.ts and .js files to improve TypeScript integration. - -## Version v1.39.0 - -🎉 Released on June 5th, 2025. 🎉 - -We're thrilled to announce that `es-toolkit/compat` has achieved full compatibility with Lodash! 🎉 - -A huge thank you to all our contributors who made this possible. - -- Introduced compatibility functions for [defaultsDeep](https://es-toolkit.slash.page/reference/compat/object/defaultsDeep.html), [isMatchWith](https://es-toolkit.slash.page/reference/compat/predicate/isMatchWith.html), [flatMapDepth](https://es-toolkit.slash.page/reference/compat/array/flatMapDepth.html), [flatMapDeep](https://es-toolkit.slash.page/reference/compat/array/flatMapDeep.html), [overArgs](https://es-toolkit.slash.page/reference/compat/function/overArgs.html), [findLastKey](https://es-toolkit.slash.page/reference/compat/object/findLastKey.html) and [truncate](https://es-toolkit.slash.page/reference/compat/string/truncate.html). -- Enhanced build system to support `es-toolkit/compat/*` module imports. -- Fixed special functions like `each` to ensure proper functionality. -- Fixed Deno compatibility issues for `defaultsDeep` function. -- Fixed import paths in Deno environment. -- Added benchmark comparing es-toolkit and lodash `identity` function performance. -- Improved documentation and test coverage for various functions. - -We sincerely thank @raon0211, @dayongkr, @mreiden, @hwibaski, @shren207, @jiji-hoon96, and @myungjuice for their contributions. We appreciate your great efforts! - -### ⭐️ Special Thanks to Our Amazing Contributors Who Made 100% Compatibility Possible ⭐️ - -@raon0211, @dayongkr, @D-Sketon, @mass2527, @ssi02014, @shren207, @chhw130, @haejunejung, @jsparkdev, @manudeli, @jgjgill, @hyesungoh, @kaehehehe, @filipsobol, @fvsch, @wondonghwi, @seungrodotlee, @bertyhell, @minchodang, @Jeong-Rae, @kangju2000, @juno7803, @wojtekmaj, @mattiacoll, @changwoolab, @po4tion, @gyumong, @choi2021, @mancuoj, @de-novo, @eunhyulkim, @kim-sung-jee, @gs18004, @Hanna922, @Na-hyunwoo, @aken-you, @tanggd, @ho991217, @piquark6046, @jiji-hoon96, @seonghun0828, @pkovzz, @nnnnoel, @noelkim-prestolabs, @minsoo-web, @hautest, @scato3, @l2hyunwoo, @WooWan, @VVSOGI, @k-jeonghee, @knott11, @lukaszkowalik2, @moonheekim0118, @sadobass, @minjongbaek, @umsungjun, @sossost, @sunrabbit123, @Seung-wan, @cruelladevil, @iDevGon, @oror-sine, @1eeminhyeong, @benzyminzy, @BlackWhite2000, @tooooo1, @L2HYUNN, @DonghyunKim98, @dasom-jo, @guesung, @uniqueeest, @KiKoS0, @myungjuice, @seung-juv, @Collection50, @nowethan, @coding-honey, @ariandel-dev, @apeltop, @jch1223, @yhay81, @milooy, @raviqqe, @youznn, @BinskLee, @YEONDG, @shinwonse, @willmanduffy, @vjo, @touhidrahman, @T3sT3ro, @belgattitude, @WISUNGWON, @anaclumos, @hsskey, @BasixKOR, @Kyujenius, @Dohun-choi, @dngur9801, @sanginchun, @westofsky, @DONG-8, @yhmpc, @pbstar, @MoXiaoluo, @uussong, @tuhm1, @tisou1, @spookyuser, @sa02045, @Hotanya, @nia3y, @mreiden, @kms0219kms, @IkumaTadokoro, @hansolbangul, @hainan-612, @hwibaski, @jeongshin, @HoberMin, @ohprettyhak, @gweesin, @FengBuPi, @kyvg, @evan-moon, @chldmsqls34, @kimpuro, @dogagenc, @Duck-98, @redd97, @faner11, @bhollis, @jaehunn, @babay123, @beomxtone, @ankitjha420, @shan-mx, @2skydev, @StyleShit, @confidential-nt, @siddsarkar, @seongminn, @healtheloper, @pnodet, @Gaic4o, @leeminhee119, @leehj322, @kristian240, @kingston, @kim-dongho, @jungwoo3490, @joris-gallot, @jonganebski, @jiwooproity, @moshuying, @jakvbs, @therealjamesjung, @SaeWooKKang and @HyeokjaeLee - -## Version v1.38.0 - -Released on May 18th, 2025. - -- Added compatibility functions for [bindAll](https://es-toolkit.slash.page/reference/compat/util/bindAll.html), [setWith](https://es-toolkit.slash.page/reference/compat/object/setWith.html), [memoize](https://es-toolkit.slash.page/reference/function/memoize.html), [isNative](https://es-toolkit.slash.page/reference/compat/predicate/isNative.html), [invokeMap](https://es-toolkit.slash.page/reference/compat/array/invokeMap.html), [clone](https://es-toolkit.slash.page/reference/object/clone.html), [cloneWith](https://es-toolkit.slash.page/reference/compat/object/cloneWith.html), and [sortedLastIndexOf](https://es-toolkit.slash.page/reference/compat/array/sortedLastIndexOf.html). -- Enhanced [invariant](https://es-toolkit.slash.page/reference/util/invariant.html) function to accept Error instances and added [assert](https://es-toolkit.slash.page/reference/util/assert.html) alias. -- Fixed type definitions and empty array handling in [maxBy](https://es-toolkit.slash.page/reference/array/maxBy.html) and [minBy](https://es-toolkit.slash.page/reference/array/minBy.html). -- Fixed typo 'Partail' to 'Partial' in [findKey](https://es-toolkit.slash.page/reference/object/findKey.html) type annotation. -- Enhanced [max](https://es-toolkit.slash.page/reference/math/max.html) and [min](https://es-toolkit.slash.page/reference/math/min.html) functions to skip NaN, symbol, and null values, and return undefined when all values are skipped. -- Fixed sparse array handling in compat functions to match Lodash's behavior. -- Improved test coverage and documentation for various functions. -- Fixed various documentation issues and typos. - -We sincerely thank @myungjuice, @scato3, @uniqueeest, @YEONDG, @shren207, @hyesungoh, @kms0219kms, @minjongbaek, @kristian240, @D-Sketon, @Seung-wan, @jiji-hoon96, @raon0211, and @dayongkr for their contributions. We appreciate your great efforts! - -## Version v1.37.2 - -Released on May 4th, 2025. - -- Fixed an issue in `es-toolkit/compat`'s `throttle` function to match Lodash's behavior by immediately invoking the throttled function when wait time is zero. - -## Version v1.37.1 - -Released on May 3rd, 2025. - -- Fixed a bug in JSR's `@es-toolkit/es-toolkit` package that prevented importing the `camelCase` function in Deno. - -## Version v1.37.0 - -Released on May 3rd, 2025. - -- Introduced compatibility functions for [result](https://es-toolkit.slash.page/reference/compat/object/result.html), [omitBy](https://es-toolkit.slash.page/reference/object/omitBy.html), [xorBy](https://es-toolkit.slash.page/reference/array/xorBy.html), [xorWith](https://es-toolkit.slash.page/reference/array/xorWith.html), [unzipWith](https://es-toolkit.slash.page/reference/array/unzipWith.html), [sampleSize](https://es-toolkit.slash.page/reference/array/sampleSize.html), [transform](https://es-toolkit.slash.page/reference/compat/object/transform.html), [wrap](https://es-toolkit.slash.page/reference/compat/function/wrap.html), [countBy](https://es-toolkit.slash.page/reference/array/countBy.html), and [xor](https://es-toolkit.slash.page/reference/array/xor.html). -- Added vitest benchmark for [ary](https://es-toolkit.slash.page/reference/function/ary.html) function. -- Fixed string comparison in [sortBy](https://es-toolkit.slash.page/reference/array/sortBy.html) and [orderBy](https://es-toolkit.slash.page/reference/array/orderBy.html) by removing locale comparison and using ASCII code instead. -- Fixed type definition in [isBuffer](https://es-toolkit.slash.page/reference/predicate/isBuffer.html). -- Fixed internal documentation links for Korean and Japanese headings. -- Improved code readability and documentation for various functions. -- Prevented circular dependencies by updating import paths in [toCamelCaseKeys](https://es-toolkit.slash.page/reference/object/toCamelCaseKeys.html) and [toSnakeCaseKeys](https://es-toolkit.slash.page/reference/object/toSnakeCaseKeys.html). - -We sincerely thank @chldmsqls34, @umsungjun, @raon0211, @dayongkr, @shren207, @oror-sine, @L2HYUNN, @D-Sketon, @ariandel-dev, @Jeong-Rae, and @beomxtone for their contributions. We appreciate your great efforts! - -## Version v1.36.0 - -Released on April 24th, 2025. - -- Introduced compatibility functions for [groupBy](https://es-toolkit.slash.page/reference/array/groupBy.html), [partial](https://es-toolkit.slash.page/reference/function/partial.html), [partialRight](https://es-toolkit.slash.page/reference/function/partialRight.html), [forEachRight](https://es-toolkit.slash.page/reference/array/forEachRight.html), [forOwnRight](https://es-toolkit.slash.page/reference/compat/object/forOwnRight.html), [forIn](https://es-toolkit.slash.page/reference/compat/object/forIn.html), [forInRight](https://es-toolkit.slash.page/reference/compat/object/forInRight.html), [overEvery](https://es-toolkit.slash.page/reference/compat/util/overEvery.html), [hasIn](https://es-toolkit.slash.page/reference/compat/object/hasIn.html), [pullAt](https://es-toolkit.slash.page/reference/array/pullAt.html), [forOwn](https://es-toolkit.slash.page/reference/compat/object/forOwn.html), [pullAllWith](https://es-toolkit.slash.page/reference/compat/array/pullAllWith.html), [overSome](https://es-toolkit.slash.page/reference/compat/util/overSome.html), [partition](https://es-toolkit.slash.page/reference/array/partition.html), and [flatMap](https://es-toolkit.slash.page/reference/array/flatMap.html). -- Fixed compatibility issues in [take](https://es-toolkit.slash.page/reference/array/take.html), [takeRight](https://es-toolkit.slash.page/reference/array/takeRight.html), [defaults](https://es-toolkit.slash.page/reference/compat/object/defaults.html), [repeat](https://es-toolkit.slash.page/reference/compat/string/repeat.html), and [words](https://es-toolkit.slash.page/reference/string/words.html) by adding proper guards. -- Fixed [throttle](https://es-toolkit.slash.page/reference/function/throttle.html) behavior when both leading and trailing options are enabled. -- Improved performance for [find](https://es-toolkit.slash.page/reference/compat/array/find.html) by removing unnecessary slice operations. -- Enhanced performance of [toPairs](https://es-toolkit.slash.page/reference/compat/object/toPairs.html) by pre-allocating arrays and using iterator values. -- Simplified implementation and aligned types with Lodash for [partition](https://es-toolkit.slash.page/reference/array/partition.html). - -We sincerely thank @D-Sketon, @raon0211, @dayongkr, @minjongbaek, @seungrodotlee, @mass2527, @uniqueeest, @leehj322, @cruelladevil, @shren207, and @ssi02014 for their contributions. We appreciate your great efforts! - -## Version v1.35.0 - -Released on April 16th, 2025. - -- Added support for [toCamelCaseKeys](https://es-toolkit.slash.page/reference/object/toCamelCaseKeys.html) and [toSnakeCaseKeys](https://es-toolkit.slash.page/reference/object/toSnakeCaseKeys.html). -- Added support for custom delay function based on attempts in [retry](https://es-toolkit.slash.page/reference/function/retry.html). -- Introduced compatibility functions for [at](https://es-toolkit.slash.page/reference/array/at.html) (array), [split](https://es-toolkit.slash.page/reference/compat/string/split.html), [shuffle](https://es-toolkit.slash.page/reference/array/shuffle.html), [zipWith](https://es-toolkit.slash.page/reference/array/zipWith.html), [zipObject](https://es-toolkit.slash.page/reference/array/zipObject.html), [keyBy](https://es-toolkit.slash.page/reference/array/keyBy.html), [assign](https://es-toolkit.slash.page/reference/compat/object/assign.html), [assignInWith](https://es-toolkit.slash.page/reference/compat/object/assignInWith.html), [assignWith](https://es-toolkit.slash.page/reference/compat/object/assignWith.html), [update](https://es-toolkit.slash.page/reference/compat/object/update.html), [updateWith](https://es-toolkit.slash.page/reference/compat/object/updateWith.html), [uniqWith](https://es-toolkit.slash.page/reference/array/uniqWith.html), [unionBy](https://es-toolkit.slash.page/reference/array/unionBy.html), [unionWith](https://es-toolkit.slash.page/reference/array/unionWith.html), [takeWhile](https://es-toolkit.slash.page/reference/array/takeWhile.html), [sortedLastIndex](https://es-toolkit.slash.page/reference/compat/array/sortedLastIndex.html), [sortedLastIndexBy](https://es-toolkit.slash.page/reference/compat/array/sortedLastIndexBy.html), [toPairs](https://es-toolkit.slash.page/reference/compat/object/toPairs.html), [toPairsIn](https://es-toolkit.slash.page/reference/compat/object/toPairsIn.html), [cond](https://es-toolkit.slash.page/reference/compat/util/cond.html), [over](https://es-toolkit.slash.page/reference/compat/util/over.html), [functions](https://es-toolkit.slash.page/reference/compat/object/functions.html), and [create](https://es-toolkit.slash.page/reference/compat/object/create.html) in `es-toolkit/compat`. -- Fixed Lodash compatibility issues in [pick](https://es-toolkit.slash.page/reference/object/pick.html) and [pickBy](https://es-toolkit.slash.page/reference/object/pickBy.html). - -We sincerely thank @shren207, @kim-sung-jee, @HyeokjaeLee, @Jeong-Rae, @D-Sketon, @jsparkdev, @wojtekmaj, @FengBuPi, @oror-sine, @L2HYUNN, @gs18004, @ohprettyhak, and @kimpuro for their contributions. We appreciate your great efforts! - -## Version v1.34.1 - -Released on March 27th, 2025. - -- Fixed a bug in [isBrowser](https://es-toolkit.slash.page/reference/predicate/isBrowser.html) and [isNode](https://es-toolkit.slash.page/reference/predicate/isNode.html) that caused them to not work properly in Deno environments. - -## Version v1.34.0 - -Released on March 27th, 2025. - -- Added support for [isBrowser](https://es-toolkit.slash.page/reference/predicate/isBrowser.html), [isNode](https://es-toolkit.slash.page/reference/predicate/isNode.html), [attempt](https://es-toolkit.slash.page/reference/util/attempt.html), [attemptAsync](https://es-toolkit.slash.page/reference/util/attemptAsync.html). -- Introduced compatibility functions for [functionsIn](https://es-toolkit.slash.page/reference/compat/object/functionsIn.html), [meanBy](https://es-toolkit.slash.page/reference/math/meanBy.html), [minBy](https://es-toolkit.slash.page/reference/math/minBy.html), [mean](https://es-toolkit.slash.page/reference/math/mean.html), [sortedIndexOf](https://es-toolkit.slash.page/reference/compat/array/sortedIndexOf.html). -- Fixed compatibility with lodash for [set](https://es-toolkit.slash.page/reference/compat/object/set.html), [add](https://es-toolkit.slash.page/reference/compat/math/add.html), [subtract](https://es-toolkit.slash.page/reference/compat/math/subtract.html). - -We sincerely thank @dayongkr, @D-Sketon, @seongminn, @Kyujenius for their contributions. We appreciate your great efforts! - -## Version v1.33.0 - -Released on March 9th, 2025. - -- Added support for [reverseString](https://es-toolkit.slash.page/reference/string/reverseString.html) and [isJSON](https://es-toolkit.slash.page/reference/predicate/isJSON.html). -- Introduced compatibility functions for [pullAllBy](https://es-toolkit.slash.page/reference/compat/array/pullAllBy.html), [intersectionWith](https://es-toolkit.slash.page/reference/array/intersectionWith.html), [findLast](https://es-toolkit.slash.page/reference/compat/array/findLast.html), [reduce](https://es-toolkit.slash.page/reference/compat/array/reduce.html), [reduceRight](https://es-toolkit.slash.page/reference/compat/array/reduceRight.html), [divide](https://es-toolkit.slash.page/reference/compat/math/divide.html), [values](https://es-toolkit.slash.page/reference/compat/object/values.html), [valuesIn](https://es-toolkit.slash.page/reference/compat/object/valuesIn.html), [maxBy](https://es-toolkit.slash.page/reference/compat/math/maxBy.html), and [pickBy](https://es-toolkit.slash.page/reference/compat/object/pickBy.html). -- Fixed package exports on React Native so that `es-toolkit` can be used in React Native projects. -- Fixed a bug in [sum](https://es-toolkit.slash.page/reference/math/sum.html) where passing `undefined` values like `sum([undefined, 1, 2, 3])` resulted in `NaN`, which was different from lodash. -- Fixed a bug in [assignIn](https://es-toolkit.slash.page/reference/compat/object/assignIn.html) that didn't assign keys with undefined values. - -## Version v1.32.0 - -Released on January 30th, 2025. - -- Added support for [Semaphore](https://es-toolkit.slash.page/reference/promise/Semaphore.html), [Mutex](https://es-toolkit.slash.page/reference/promise/Mutex.html), [isPromise](https://es-toolkit.slash.page/reference/predicate/isPromise.html), and [retry](https://es-toolkit.slash.page/reference/function/retry.html). -- Introduced compatibility functions for [multiply](https://es-toolkit.slash.page/reference/compat/math/multiply.html), [sortedIndex](https://es-toolkit.slash.page/reference/compat/array/sortedIndex.html), and [sortedIndexBy](https://es-toolkit.slash.page/reference/compat/array/sortedIndexBy.html). -- Added support for custom delimiters in [flattenObject](https://es-toolkit.slash.page/reference/object/flattenObject.html). -- Added support for `fromIndex` parameters in [find](https://es-toolkit.slash.page/reference/compat/array/find.html). -- Fixed a bug in [cloneDeep](https://es-toolkit.slash.page/reference/object/cloneDeep.html) and [cloneDeepWith](https://es-toolkit.slash.page/reference/object/cloneDeepWith.html) that cloned uncloneable objects. - -## Version v1.31.0 - -Released on December 27th, 2024. - -- Added support for the [windowed](https://es-toolkit.slash.page/reference/array/windowed.html), [remove](https://es-toolkit.slash.page/reference/array/remove.html) and [asyncNoop](https://es-toolkit.slash.page/reference/function/asyncNoop.html) functions. -- Introduced compatibility functions for [pullAll](https://es-toolkit.slash.page/reference/compat/array/pullAll.html), [subtract](https://es-toolkit.slash.page/reference/compat/math/subtract.html), [isBuffer](https://es-toolkit.slash.page/reference/predicate/isBuffer.html), and [methodOf](https://es-toolkit.slash.page/reference/compat/util/methodOf.html). -- Enhanced the performance of [pull](https://es-toolkit.slash.page/reference/array/pull.html) when working with large arrays. -- Resolved an issue where [reverse](https://es-toolkit.slash.page/reference/compat/array/reverse.html) was not being exported in our compatibility library. -- Updated [groupBy](https://es-toolkit.slash.page/reference/array/groupBy.html) to properly handle keys like `toString` or `valueOf`. -- Fixed [merge](https://es-toolkit.slash.page/reference/object/merge.html) to correctly merge values when `target` or any of its values are `null` or `undefined`. - -We sincerely thank @T3sT3ro, @D-Sketon, @tuhm1, @willmanduffy, @apeltop, @aken-you, @SaeWooKKang, and @ssi02014 for their contributions. We appreciate your great efforts! - -## Version v1.30.1 - -Released on December 14th, 2024. - -- Fixed [uniqueId](https://es-toolkit.slash.page/reference/compat/util/uniqueId.html) not being exported in our compatibility library. - -We sincerely thank @redd97 for their contributions. We appreciate your great efforts! - -## Version v1.30.0 - -Released on December 13th, 2024. - -- Introduced support for [pull](https://es-toolkit.slash.page/reference/array/pull.html). -- Added compatibility functions for [map](https://es-toolkit.slash.page/reference/compat/array/map.html), [range](https://es-toolkit.slash.page/reference/math/range.html), [rangeRight](https://es-toolkit.slash.page/reference/math/rangeRight.html), [differenceWith](https://es-toolkit.slash.page/reference/array/differenceWith.html), [nth](https://es-toolkit.slash.page/reference/compat/array/nth.html), [noop](https://es-toolkit.slash.page/reference/function/noop.html), [identity](https://es-toolkit.slash.page/reference/function/identity.html), [keys](https://es-toolkit.slash.page/reference/compat/object/keys.html), [propertyOf](https://es-toolkit.slash.page/reference/compat/object/propertyOf.html), [nthArg](https://es-toolkit.slash.page/reference/compat/function/nthArg.html), [delay](https://es-toolkit.slash.page/reference/promise/delay.html), [toPlainObject](https://es-toolkit.slash.page/reference/compat/util/toPlainObject.html), [unary](https://es-toolkit.slash.page/reference/function/unary.html), [once](https://es-toolkit.slash.page/reference/function/once.html), [after](https://es-toolkit.slash.page/reference/function/after.html), [takeRightWhile](https://es-toolkit.slash.page/reference/array/takeRightWhile.html), [escapeRegExp](https://es-toolkit.slash.page/reference/string/escapeRegExp.html), [unescape](https://es-toolkit.slash.page/reference/string/unescape.html), [upperFirst](https://es-toolkit.slash.page/reference/string/upperFirst.html), [lowerFirst](https://es-toolkit.slash.page/reference/string/lowerFirst.html), [deburr](https://es-toolkit.slash.page/reference/string/deburr.html), [lt](https://es-toolkit.slash.page/reference/util/lt.html), [lte](https://es-toolkit.slash.page/reference/util/lte.html), [toLower](https://es-toolkit.slash.page/reference/compat/string/toLower.html), [invoke](https://es-toolkit.slash.page/reference/compat/util/invoke.html), [method](https://es-toolkit.slash.page/reference/compat/util/method.html), [reverse](https://es-toolkit.slash.page/reference/compat/array/reverse.html), [now](https://es-toolkit.slash.page/reference/compat/util/now.html), [findKey](https://es-toolkit.slash.page/reference/object/findKey.html), [stubArray](https://es-toolkit.slash.page/reference/compat/util/stubArray.html), [stubFalse](https://es-toolkit.slash.page/reference/compat/util/stubFalse.html), [stubObject](https://es-toolkit.slash.page/reference/compat/util/stubObject.html), [stubString](https://es-toolkit.slash.page/reference/compat/util/stubString.html), and [stubTrue](https://es-toolkit.slash.page/reference/compat/util/stubTrue.html). - -We sincerely thank @healtheloper, @mass2527, @D-Sketon, @eunhyulkim, @scato3, @Na-hyunwoo, and @dasom-jo for their contributions. We appreciate your great efforts! - -## Version v1.29.0 - -Released on December 1st, 2024. - -- Introduced support for [cloneDeepWith](https://es-toolkit.slash.page/reference/object/cloneDeepWith.html). -- Added a compatibility function for [lastIndexOf](https://es-toolkit.slash.page/reference/compat/array/lastIndexOf.html). -- Fixed an issue in [flattenObject](https://es-toolkit.slash.page/reference/object/flattenObject.html) where nested objects in arrays were not flattened correctly. - -We sincerely thank @nnnnoel and @evan-moon for their contributions. We appreciate your great efforts! - -## Version v1.28.0 - -Released on November 30th, 2024. - -- Added compatibility functions for [gt](https://es-toolkit.slash.page/reference/compat/util/gt.html), [gte](https://es-toolkit.slash.page/reference/compat/util/gte.html), [toArray](https://es-toolkit.slash.page/reference/compat/util/toArray.html), [toUpper](https://es-toolkit.slash.page/reference/compat/string/toUpper.html), [add](https://es-toolkit.slash.page/reference/compat/math/add.html), [assignIn](https://es-toolkit.slash.page/reference/compat/object/assignIn.html) ([extend](https://es-toolkit.slash.page/reference/compat/object/extend.html)), and [isElement](https://es-toolkit.slash.page/reference/compat/predicate/isElement.html). -- Introduced new compatibility types for `DebouncedFunc`. -- Enhanced our function types to accept `PropertyKey` instead of just `string` for property keys. -- Corrected [flatMap](https://es-toolkit.slash.page/reference/array/flatMap.html) to accurately infer return types when the `depth` parameter is omitted. -- Resolved issues with incorrect types for [partial](https://es-toolkit.slash.page/reference/function/partial.html) and [partialRight](https://es-toolkit.slash.page/reference/function/partialRight.html). -- Fixed [intersectionBy](https://es-toolkit.slash.page/reference/array/intersectionBy.html), [differenceBy](https://es-toolkit.slash.page/reference/array/differenceBy.html), and [differenceWith](https://es-toolkit.slash.page/reference/array/differenceWith.html) to properly calculate differences between various element types. -- Ensured that [words](https://es-toolkit.slash.page/reference/string/words.html) is now correctly exported in our compatibility library. - -We sincerely thank @D-Sketon, @mass2527, @1eeminhyeong, @chhw130, @DONG-8, @filipsobol, @kim-dongho, @nnnnoel, @pbstar, and @jsparkdev for their contributions. We appreciate your great efforts! - -## Version v1.27.0 - -Released on November 10th, 2024. - -- Added support for [findKey](https://es-toolkit.slash.page/reference/object/findKey.html) and [isSubsetWith](https://es-toolkit.slash.page/reference/array/isSubsetWith.html). -- Introduced compatibility functions for [words](https://es-toolkit.slash.page/reference/string/words.html), [at](https://es-toolkit.slash.page/reference/array/at.html), [differenceBy](https://es-toolkit.slash.page/reference/array/differenceBy.html), [uniqBy](https://es-toolkit.slash.page/reference/array/uniqBy.html), [forEach](https://es-toolkit.slash.page/reference/compat/array/forEach.html), [each](https://es-toolkit.slash.page/reference/compat/array/each.html), [sum](https://es-toolkit.slash.page/reference/math/sum.html), [sumBy](https://es-toolkit.slash.page/reference/array/sumBy.html), [union](https://es-toolkit.slash.page/reference/array/union.html), [zip](https://es-toolkit.slash.page/reference/array/zip.html), [unzip](https://es-toolkit.slash.page/reference/array/unzip.html), [iteratee](https://es-toolkit.slash.page/reference/compat/util/iteratee.html), [isEmpty](https://es-toolkit.slash.page/reference/compat/predicate/isEmpty.html), and [replace](https://es-toolkit.slash.page/reference/compat/string/replace.html). -- Fixed a bug in [cloneDeep](https://es-toolkit.slash.page/reference/object/cloneDeep.html) that prevented it from correctly cloning object prototypes. -- Improved performance for [at](https://es-toolkit.slash.page/reference/array/at.html). -- Enhanced performance for [toPath](https://es-toolkit.slash.page/reference/compat/util/toPath.html), [get](https://es-toolkit.slash.page/reference/compat/object/get.html), [set](https://es-toolkit.slash.page/reference/compat/object/set.html), [unset](https://es-toolkit.slash.page/reference/compat/object/unset.html), [has](https://es-toolkit.slash.page/reference/compat/object/has.html), [orderBy](https://es-toolkit.slash.page/reference/array/orderBy.html), [chunk](https://es-toolkit.slash.page/reference/array/chunk.html), [difference](https://es-toolkit.slash.page/reference/array/difference.html), [drop](https://es-toolkit.slash.page/reference/array/drop.html), [dropRight](https://es-toolkit.slash.page/reference/array/dropRight.html), [dropWhile](https://es-toolkit.slash.page/reference/array/dropWhile.html), [findLastIndex](https://es-toolkit.slash.page/reference/compat/array/findLastIndex.html), [head](https://es-toolkit.slash.page/reference/array/head.html), [last](https://es-toolkit.slash.page/reference/array/last.html), [sample](https://es-toolkit.slash.page/reference/array/sample.html), [tail](https://es-toolkit.slash.page/reference/array/tail.html), [take](https://es-toolkit.slash.page/reference/array/take.html), and [takeRight](https://es-toolkit.slash.page/reference/array/takeRight.html) in our compatibility library. - -We sincerely thank @scato3, @ssi02014, @filipsobol, @mass2527, @Gyumong, @D-Sketon, @dayongkr, @kyvg, @Na-hyunwoo, @kaehehehe, and @bhollis for their contributions. Special thanks to @cruelladevil for improving the documentation. We appreciate your great efforts! - -## Version v1.26.1 - -Released on October 25th, 2024. - -- Fixed a bug in [isMatch](https://es-toolkit.slash.page/reference/compat/predicate/isMatch.html) that did not strictly compare `null` in objects. - -This version includes contributions from @D-Sketon. Thank you for your valuable contributions! - -## Version v1.26.0 - -Released on October 24th, 2024. - -- Added support for [invariant](https://es-toolkit.slash.page/reference/util/invariant.html), [identity](https://es-toolkit.slash.page/reference/function/identity.html), [median](https://es-toolkit.slash.page/reference/math/median.html), and [medianBy](https://es-toolkit.slash.page/reference/math/medianBy.html). -- Added compatibility functions for [template](https://es-toolkit.slash.page/reference/compat/string/template.html), [uniqueId](https://es-toolkit.slash.page/reference/compat/util/uniqueId.html), [intersectionBy](https://es-toolkit.slash.page/reference/array/intersectionBy.html), [orderBy](https://es-toolkit.slash.page/reference/array/orderBy.html), [sortBy](https://es-toolkit.slash.page/reference/array/sortBy.html), and [some](https://es-toolkit.slash.page/reference/array/some.html). -- Made it possible to use [drop](https://es-toolkit.slash.page/reference/array/drop.html), [dropRight](https://es-toolkit.slash.page/reference/array/dropRight.html), [every](https://es-toolkit.slash.page/reference/compat/array/every.html), [take](https://es-toolkit.slash.page/reference/array/take.html), and [takeRight](https://es-toolkit.slash.page/reference/array/takeRight.html) directly as iteratees, allowing for usage like `arr.map(drop)`. -- Corrected [merge](https://es-toolkit.slash.page/reference/object/merge.html) to disallow primitive values such as numbers or strings. - -This version includes contributions from @dayongkr, @Na-hyunwoo, @ssi02014, @kaehehehe, @jakvbs, @D-Sketon, and @seonghun0828. Thank you for your valuable contributions! - -## Version v1.25.2 - -Released on October 16th, 2024. - -- Fixed a problem with [isJSONValue](https://es-toolkit.slash.page/reference/predicate/isJSONValue.html), [isJSONArray](https://es-toolkit.slash.page/reference/predicate/isJSONArray.html), and [isJSONObject](https://es-toolkit.slash.page/reference/predicate/isJSONObject.html) that led to circular dependencies. -- Enhanced [flatten](https://es-toolkit.slash.page/reference/array/flatten.html), [flattenDeep](https://es-toolkit.slash.page/reference/array/flattenDeep.html), [flattenDepth](https://es-toolkit.slash.page/reference/compat/array/flattenDepth.html#flattendepth), [slice](https://es-toolkit.slash.page/reference/compat/array/slice.html), and [zipObjectDeep](https://es-toolkit.slash.page/reference/compat/array/zipObjectDeep.html) to work with array-like objects in our compatibility library, ensuring they are fully compatible with lodash. - -This version includes contributions from @D-Sketon. Thank you for your valuable contributions! - -## Version v1.25.1 - -Released on October 15th, 2024. - -- Resolved an issue in [cloneDeep](https://es-toolkit.slash.page/reference/object/cloneDeep.html) that incorrectly copied properties from the `target` when they were read-only. -- Updated [every](https://es-toolkit.slash.page/reference/compat/array/every.html), [filter](https://es-toolkit.slash.page/reference/compat/array/filter.html), [find](https://es-toolkit.slash.page/reference/compat/array/find.html), [findIndex](https://es-toolkit.slash.page/reference/compat/array/findIndex.html), [findLastIndex](https://es-toolkit.slash.page/reference/compat/array/findLastIndex.html), [indexOf](https://es-toolkit.slash.page/reference/compat/array/indexOf.html), and [join](https://es-toolkit.slash.page/reference/compat/array/join.html) to now accept array-like objects and a `fromIndex` parameter, making them compatible with lodash. - -This version includes contributions from @D-Sketon. Thank you for your valuable contributions! - -## Version v1.25.0 - -Released on October 14th, 2024. - -- Added support for [isFile](https://es-toolkit.slash.page/reference/predicate/isFile.html). -- Added compatibility functions for [escape](https://es-toolkit.slash.page/reference/string/escape.html), [toSafeInteger](https://es-toolkit.slash.page/reference/compat/util/toSafeInteger.html), [intersection](https://es-toolkit.slash.page/reference/array/intersection.html), [sample](https://es-toolkit.slash.page/reference/array/sample.html), [chunk](https://es-toolkit.slash.page/reference/array/chunk.html), [compact](https://es-toolkit.slash.page/reference/array/compact.html), [head](https://es-toolkit.slash.page/reference/array/head.html), [initial](https://es-toolkit.slash.page/reference/array/initial.html), [last](https://es-toolkit.slash.page/reference/array/last.html), [tail](https://es-toolkit.slash.page/reference/array/tail.html), [take](https://es-toolkit.slash.page/reference/array/take.html), [takeRight](https://es-toolkit.slash.page/reference/array/takeRight.html), [uniq](https://es-toolkit.slash.page/reference/array/uniq.html), and [without](https://es-toolkit.slash.page/reference/array/without.html). -- Enhanced performance for [at](https://es-toolkit.slash.page/reference/array/at.html) and [isPlainObject](https://es-toolkit.slash.page/reference/predicate/isPlainObject.html). -- Resolved an issue in [cloneDeep](https://es-toolkit.slash.page/reference/object/cloneDeep.html) that prevented it from cloning symbol properties and read-only properties of objects. -- Fixed a problem in [pick](https://es-toolkit.slash.page/reference/object/pick.html) within our compatibility library that incorrectly added `undefined` for keys that do not exist. - -This version includes contributions from @D-Sketon, @mass2527, @dayongkr, @lukaszkowalik2, @Gyumong, @Dohun-choi, @belgattitude, and @chhw130. Thank you for your valuable contributions! - -## Version v1.24.0 - -Released on October 7th, 2024. - -- Added support for [isBlob](https://es-toolkit.slash.page/reference/predicate/isBlob.html) and [isDate](https://es-toolkit.slash.page/reference/predicate/isDate.html). -- Added compatibility functions for [invertBy](https://es-toolkit.slash.page/reference/compat/object/invertBy.html), [times](https://es-toolkit.slash.page/reference/compat/util/times.html), [constant](https://es-toolkit.slash.page/reference/compat/util/constant.html), [slice](https://es-toolkit.slash.page/reference/compat/array/slice.html), [toLength](https://es-toolkit.slash.page/reference/compat/util/toLength.html), [defaultTo](https://es-toolkit.slash.page/reference/compat/util/defaultTo.html), [dropRightWhile](https://es-toolkit.slash.page/reference/array/dropRightWhile.html), [curryRight](https://es-toolkit.slash.page/reference/function/curryRight.html), [rangeRight](https://es-toolkit.slash.page/reference/math/rangeRight.html), [before](https://es-toolkit.slash.page/reference/function/before.html), [eq](https://es-toolkit.slash.page/reference/compat/util/eq.html), [defaults](https://es-toolkit.slash.page/reference/compat/object/defaults.html), [toDefaulted](https://es-toolkit.slash.page/reference/compat/object/toDefaulted.html), [isArrayBuffer](https://es-toolkit.slash.page/reference/predicate/isArrayBuffer.html), [isSet](https://es-toolkit.slash.page/reference/predicate/isSet.html), and [isMap](https://es-toolkit.slash.page/reference/predicate/isMap.html). -- Enhanced [difference](https://es-toolkit.slash.page/reference/array/difference.html) to work with Array-like objects, aligning its functionality with lodash's behavior. -- Improved performance for [pickBy](https://es-toolkit.slash.page/reference/object/pickBy.html) and [omitBy](https://es-toolkit.slash.page/reference/object/omitBy.html). - -## Version v1.23.0 - -Released on October 1st, 2024. - -- Added support for [isEqualWith](https://es-toolkit.slash.page/reference/predicate/isEqualWith.html), [isArrayBuffer](https://es-toolkit.slash.page/reference/predicate/isArrayBuffer.html), [curryRight](https://es-toolkit.slash.page/reference/function/curryRight.html), [isJSONValue](https://es-toolkit.slash.page/reference/predicate/isJSONValue.html), [isJSONObject](https://es-toolkit.slash.page/reference/predicate/isJSONObject.html), [isJSONArray](https://es-toolkit.slash.page/reference/predicate/isJSONArray.html). -- Fixed a bug in [merge](https://es-toolkit.slash.page/reference/object/merge.html) that copied the reference from the `source` object to the `target` object. -- Fixed a bug in [includes](https://es-toolkit.slash.page/reference/compat/array/includes.html) that returned `true` for inherited properties. -- Fixed a bug in [startCase](https://es-toolkit.slash.page/reference/string/startCase.html) and other string methods that did not correctly split the words when using accented letters. -- Fixed a bug in [filter](https://es-toolkit.slash.page/reference/compat/array/filter.html) that did not provide correct arguments to the predicate function. -- Fixed a bug in [isMatch](https://es-toolkit.slash.page/reference/compat/predicate/isMatch.html) that did not strictly compare primitive falsy values. - -This version includes contributions from @D-Sketon, @wojtekmaj, @mass2527, @chhw130, and @knott11. Thank you for your valuable contributions! - -## Version v1.22.0 - -Released on September 28th, 2024. - -- Added support for [flow](https://es-toolkit.slash.page/reference/function/flow.html), [flowRight](https://es-toolkit.slash.page/reference/function/flowRight.html), [isMap](https://es-toolkit.slash.page/reference/predicate/isMap.html), and [isSet](https://es-toolkit.slash.page/reference/predicate/isSet.html). -- Added compatibility functions for [filter](https://es-toolkit.slash.page/reference/compat/array/filter.html), [includes](https://es-toolkit.slash.page/reference/compat/array/includes.html), [every](https://es-toolkit.slash.page/reference/compat/array/every.html), [flip](https://es-toolkit.slash.page/reference/compat/function/flip.html), and [dropWhile](https://es-toolkit.slash.page/reference/array/dropWhile.html). - -- Fixed a bug in [throttle](https://es-toolkit.slash.page/reference/function/throttle.html) that prevented it from throttling after the initial `throttleMs`. -- Fixed a bug in [cloneDeep](https://es-toolkit.slash.page/reference/object/cloneDeep.html) that caused it to not clone the offset and length of `DataView`. -- Fixed a bug in [clone](https://es-toolkit.slash.page/reference/object/clone.html) that threw an error if `SharedArrayBuffer` is unavailable. - -This version includes contributions from @dayongkr, @k-jeonghee, @D-Sketon, @iDevGon, @mass2527, @wojtekmaj, @jonganebski, @hyesungoh, and @chhw130. Thank you for your valuable contributions! - -## Version v1.21.0 - -Released on September 25th, 2024. - -- Added support for [constantCase](https://es-toolkit.slash.page/reference/string/constantCase.html) and [isError](https://es-toolkit.slash.page/reference/predicate/isError.html). -- Added compatibility functions for [pad](https://es-toolkit.slash.page/reference/compat/string/pad.html), [padStart](https://es-toolkit.slash.page/reference/compat/string/padStart.html), [padEnd](https://es-toolkit.slash.page/reference/compat/string/padEnd.html), [defer](https://es-toolkit.slash.page/reference/compat/function/defer.html), [isFinite](https://es-toolkit.slash.page/reference/compat/predicate/isFinite.html), [toNumber](https://es-toolkit.slash.page/reference/compat/math/toNumber.html), [toFinite](https://es-toolkit.slash.page/reference/compat/math/toFinite.html), and [toInteger](https://es-toolkit.slash.page/reference/compat/math/toInteger.html). -- Improved performance for [flatten](https://es-toolkit.slash.page/reference/array/flatten.html), [isNumber](https://es-toolkit.slash.page/reference/predicate/isNumber.html), [isString](https://es-toolkit.slash.page/reference/predicate/isString.html), [isSymbol](https://es-toolkit.slash.page/reference/predicate/isSymbol.html), [isRegExp](https://es-toolkit.slash.page/reference/predicate/isRegExp.html), and [isBoolean](https://es-toolkit.slash.page/reference/predicate/isBoolean.html). -- Fixed [compact](https://es-toolkit.slash.page/reference/array/compact.html) to correctly exclude `0n` as a falsey value. -- Fixed [pick](https://es-toolkit.slash.page/reference/object/pick.html) to not pick nonexistent keys from the original object. -- Fixed [omit](https://es-toolkit.slash.page/reference/object/omit.html) to accept readonly arrays. - -This version includes contributions from @hyesungoh, @D-Sketon, @mass2527, @gweesin, @VVSOGI, @coding-honey, @seonghun0828, and @jsparkdev. Thank you for your valuable contributions! - -## Version v1.20.0 - -Released on September 20th, 2024. - -- Added support for function invocation on leading and trailing edges for [debounce](https://es-toolkit.slash.page/reference/function/debounce.html) and [throttle](https://es-toolkit.slash.page/reference/function/throttle.html). -- Added compatibility functions for [debounce](https://es-toolkit.slash.page/reference/function/debounce.html), [throttle](https://es-toolkit.slash.page/reference/function/throttle.html), [curry](https://es-toolkit.slash.page/reference/function/curry.html), [isNumber](https://es-toolkit.slash.page/reference/compat/predicate/isNumber.html), and [isNaN](https://es-toolkit.slash.page/reference/compat/predicate/isNaN.html). -- Improved performance for [at](https://es-toolkit.slash.page/reference/array/at.html), [zip](https://es-toolkit.slash.page/reference/array/zip.html), [zipWith](https://es-toolkit.slash.page/reference/array/zipWith.html), and [drop](https://es-toolkit.slash.page/reference/array/drop.html). - -## Version v1.19.0 - -Released on September 14th, 2024. - -- Added support for [isDate](https://es-toolkit.slash.page/reference/predicate/isDate.html), [curry](https://es-toolkit.slash.page/reference/function/curry.html), [upperCase](https://es-toolkit.slash.page/reference/string/upperCase.html). -- Added compatibility functions for [pick](https://es-toolkit.slash.page/reference/object/pick.html), [omit](https://es-toolkit.slash.page/reference/object/omit.html), [unset](https://es-toolkit.slash.page/reference/compat/object/unset.html), [toPath](https://es-toolkit.slash.page/reference/compat/util/toPath.html), [trim](https://es-toolkit.slash.page/reference/compat/string/trim.html), [trimStart](https://es-toolkit.slash.page/reference/compat/string/trimStart.html), [trimEnd](https://es-toolkit.slash.page/reference/compat/string/trimEnd.html), [isInteger](https://es-toolkit.slash.page/reference/compat/predicate/isInteger.html), [isSafeInteger](https://es-toolkit.slash.page/reference/compat/predicate/isSafeInteger.html), [snakeCase](https://es-toolkit.slash.page/reference/string/snakeCase.html), [startCase](https://es-toolkit.slash.page/reference/string/startCase.html), [lowerCase](https://es-toolkit.slash.page/reference/string/lowerCase.html), [kebabCase](https://es-toolkit.slash.page/reference/string/kebabCase.html), [ceil](https://es-toolkit.slash.page/reference/compat/math/ceil.html), [floor](https://es-toolkit.slash.page/reference/compat/math/floor.html), [round](https://es-toolkit.slash.page/reference/math/round.html). -- Enhanced [clone](https://es-toolkit.slash.page/reference/object/clone.html) to handle `Buffer`s, `SharedArrayBuffer`s, `File`s, `Blob`s, `TypedArray`s, and `Error`s. -- Fixed a bug where [mergeWith](https://es-toolkit.slash.page/reference/object/mergeWith.html) did not preserve the original properties of the `target` object. -- Fixed a bug where [groupBy](https://es-toolkit.slash.page/reference/array/groupBy.html) couldn't group with keys like `toString` and `indexOf`. -- Improved performance for [has](https://es-toolkit.slash.page/reference/compat/object/has.html) and [get](https://es-toolkit.slash.page/reference/compat/object/get.html). - -## Version v1.18.0 - -Released on September 12th, 2024. - -- Added support for [isObject](https://es-toolkit.slash.page/reference/compat/predicate/isObject.html), [findLastIndex](https://es-toolkit.slash.page/reference/compat/array/findLastIndex.html), [parseInt](https://es-toolkit.slash.page/reference/compat/math/parseInt.html), [rearg](https://es-toolkit.slash.page/reference/compat/function/rearg.html), [conforms](https://es-toolkit.slash.page/reference/compat/predicate/conforms.html), [conformsTo](https://es-toolkit.slash.page/reference/compat/predicate/conformsTo.html), [bindKey](https://es-toolkit.slash.page/reference/compat/function/bindKey.html), [some](https://es-toolkit.slash.page/reference/compat/array/some.html), [fromPairs](https://es-toolkit.slash.page/reference/compat/object/fromPairs.html), [isArrayLikeObject](https://es-toolkit.slash.page/reference/compat/predicate/isArrayLikeObject.html), [escapeRegExp](https://es-toolkit.slash.page/reference/string/escapeRegExp.html), [sortBy](https://es-toolkit.slash.page/reference/array/sortBy.html), [isWeakSet](https://es-toolkit.slash.page/reference/predicate/isWeakSet.html), [isWeakMap](https://es-toolkit.slash.page/reference/predicate/isWeakMap.html), [flatMapDeep](https://es-toolkit.slash.page/reference/array/flatMapDeep.html), [escape](https://es-toolkit.slash.page/reference/string/escape.html), [unescape](https://es-toolkit.slash.page/reference/string/unescape.html), [repeat](https://es-toolkit.slash.page/reference/compat/string/repeat.html), [pad](https://es-toolkit.slash.page/reference/compat/string/pad.html), [join](https://es-toolkit.slash.page/reference/compat/array/join.html), and [spread](https://es-toolkit.slash.page/reference/compat/function/spread.html). -- Improved performance for [deburr](https://es-toolkit.slash.page/reference/string/deburr.html). - -## Version v1.17.0 - -Released on August 31st, 2024. - -### New Features - -- Added support for new functions: [at](https://es-toolkit.slash.page/reference/array/at.html), [pullAt](https://es-toolkit.slash.page/reference/array/pullAt.html), [deburr](https://es-toolkit.slash.page/reference/string/deburr.html), [lowerFirst](https://es-toolkit.slash.page/reference/string/lowerFirst.html), [upperFirst](https://es-toolkit.slash.page/reference/string/upperFirst.html), and [isRegExp](https://es-toolkit.slash.page/reference/predicate/isRegExp.html). -- Enhanced [orderBy](https://es-toolkit.slash.page/reference/array/orderBy.html) and [sortBy](https://es-toolkit.slash.page/reference/array/sortBy.html) to support function criteria. -- [countBy](https://es-toolkit.slash.page/reference/array/countBy.html) now supports numeric and symbol keys. - -#### Bug Fixes - -- Updated type definitions for [throttle](https://es-toolkit.slash.page/reference/function/throttle.html) and [debounce](https://es-toolkit.slash.page/reference/function/debounce.html). -- (`es-toolkit/compat`) Fixed [orderBy](https://es-toolkit.slash.page/reference/array/orderBy.html) to correctly handle deep keys even when object shapes differ ([#427](https://github.com/toss/es-toolkit/pull/427)). - -## Version v1.16.0 - -Released on August 15th, 2024. - -- Added support for [memoize](https://es-toolkit.slash.page/reference/function/memoize.html), [find](https://es-toolkit.slash.page/reference/compat/array/find.html), [findIndex](https://es-toolkit.slash.page/reference/compat/array/findIndex.html), [has](https://es-toolkit.slash.page/reference/compat/object/has.html), [partial](https://es-toolkit.slash.page/reference/function/partial.html), [partialRight](https://es-toolkit.slash.page/reference/function/partialRight.html), [sortBy](https://es-toolkit.slash.page/reference/array/sortBy.html), [isString](https://es-toolkit.slash.page/reference/predicate/isString.html), [rest](https://es-toolkit.slash.page/reference/function/rest.html), [padEnd](https://es-toolkit.slash.page/reference/compat/string/padEnd.html). - -## Version v1.15.1 - -Released on August 10th, 2024. - -- Disabled implicit conversion of values in [orderBy](https://es-toolkit.slash.page/reference/array/orderBy.html) for performance and simplicity. - -## Version v1.15.0 - -Released on August 10th, 2024. - -- Added support for [merge](https://es-toolkit.slash.page/reference/object/merge.html), [mergeWith](https://es-toolkit.slash.page/reference/object/mergeWith.html), [toMerged](https://es-toolkit.slash.page/reference/object/toMerged.html), [isSymbol](https://es-toolkit.slash.page/reference/predicate/isSymbol.html), [pascalCase](https://es-toolkit.slash.page/reference/string/pascalCase.html). -- Added compatibility tests with lodash for [orderBy](https://es-toolkit.slash.page/reference/array/orderBy.html). - -## Version v1.14.0 - -Released on August 9th, 2024. - -- (`es-toolkit`) Added support for [mapKeys](https://es-toolkit.slash.page/reference/object/mapKeys.html), [mapValues](https://es-toolkit.slash.page/reference/object/mapValues.html), [cloneDeep](https://es-toolkit.slash.page/reference/object/cloneDeep.html), [before](https://es-toolkit.slash.page/reference/function/before.html), [after](https://es-toolkit.slash.page/reference/function/after.html), [isSubset](https://es-toolkit.slash.page/reference/array/isSubset.html), [ary](https://es-toolkit.slash.page/reference/function/ary.html), [unary](https://es-toolkit.slash.page/reference/function/unary.html), [flattenDeep](https://es-toolkit.slash.page/reference/array/flattenDeep.html), [isEqual](https://es-toolkit.slash.page/reference/predicate/isEqual.html), [isFunction](https://es-toolkit.slash.page/reference/predicate/isFunction.html), [isBoolean](https://es-toolkit.slash.page/reference/predicate/isBoolean.html), [isPrimitive](https://es-toolkit.slash.page/reference/predicate/isPrimitive.html), and [isTypedArray](https://es-toolkit.slash.page/reference/predicate/isTypedArray.html). -- (`es-toolkit/compat`) Added support for [matches](https://es-toolkit.slash.page/reference/compat/predicate/matches.html), [isMatch](https://es-toolkit.slash.page/reference/compat/predicate/isMatch.html), [isArray](https://es-toolkit.slash.page/reference/compat/predicate/isArray.html), [isArrayLike](https://es-toolkit.slash.page/reference/compat/predicate/isArrayLike.html), [isObjectLike](https://es-toolkit.slash.page/reference/compat/predicate/isObjectLike.html), [isArguments](https://es-toolkit.slash.page/reference/compat/predicate/isArguments.html), [size](https://es-toolkit.slash.page/reference/compat/array/size.html), [bind](https://es-toolkit.slash.page/reference/compat/function/bind.html), [flattenDepth](https://es-toolkit.slash.page/reference/array/flatten.html), and [padStart](https://es-toolkit.slash.page/reference/compat/string/padStart.html). -- Added compatibility tests with lodash for many functions like [initial](https://es-toolkit.slash.page/reference/array/initial.html), [last](https://es-toolkit.slash.page/reference/array/last.html), [takeRight](https://es-toolkit.slash.page/reference/array/takeRight.html), [without](https://es-toolkit.slash.page/reference/array/without.html), [uniq](https://es-toolkit.slash.page/reference/array/uniq.html), [invert](https://es-toolkit.slash.page/reference/object/invert.html), [isNull](https://es-toolkit.slash.page/reference/predicate/isNull.html), [isUndefined](https://es-toolkit.slash.page/reference/predicate/isUndefined.html), and [isNil](https://es-toolkit.slash.page/reference/predicate/isNil.html). - -## Version v1.13.1 - -Released on July 20th, 2024. - -- Use the compatibility layer `es-toolkit/compat` in legacy CDN builds. - -## Version v1.13.0 - -Released on July 20th, 2024. - -`es-toolkit` can now be used in various CDNs, like [unpkg](https://unpkg.com) and [jsdelivr](https://www.jsdelivr.com). See more in our [usage docs](https://es-toolkit.slash.page/usage.html) - -### Features - -- Added support for [flattenObject](https://es-toolkit.slash.page/reference/object/flattenObject.html), [isPlainObject](https://es-toolkit.slash.page/reference/predicate/isPlainObject.html), [isLength](https://es-toolkit.slash.page/reference/predicate/isLength.html). ([3e60443](https://github.com/toss/es-toolkit/commit/3e60443a408d3296e4a18a1601a16f5953d414f9), [3764993](https://github.com/toss/es-toolkit/commit/376499351f347c269400ee0eeb5145ad041c7c06), [#245](https://github.com/toss/es-toolkit/pull/245)) -- Added support for [concat](https://es-toolkit.slash.page/reference/compat/array/concat.html) in our compatibility layer `es-toolkit/compat`. ([e09517f](https://github.com/toss/es-toolkit/commit/e09517f05c180b43e0f2b0b0fa44167f9c4832f3)) - -### Lodash Compatibility - -- Ensured compatibility with [difference](https://es-toolkit.slash.page/reference/array/difference.html) and [take](https://es-toolkit.slash.page/reference/compat/array/take.html) - -## Version v1.12.0 - -Released on July 19th, 2024. - -- Fixed a bug where `es-toolkit/compat` was not available in modern Node.js environments. -- Added support for [max](https://es-toolkit.slash.page/reference/compat/math/max.html) and [min](https://es-toolkit.slash.page/reference/compat/math/min.html) in our compatibility layer `es-toolkit/compat`. ([e1e6e38](https://github.com/toss/es-toolkit/commit/e1e6e38206750fb90f5b99cace9196635288e21c)) - -## Version v1.11.0 - -Released on July 18th, 2024. - -### Introducing `es-toolkit/compat` - -We're introducing `es-toolkit/compat`, a new module designed as a drop-in replacement for lodash. It replicates lodash's API, making it easier to switch between the two libraries. - -`es-toolkit/compat` is undergoing rigorous testing using real `lodash` test cases. Initial benchmarks suggest it's typically 5% slower and increases bundle size by 10% compared to the original `es-toolkit`. - -This module is intended to facilitate a smooth transition and should be replaced with the original `es-toolkit` for optimal performance once migration is complete. - -For more information, see our [compatibility documentation](https://es-toolkit.slash.page/compatibility.html). - -### Features - -- Added support for [get](https://es-toolkit.slash.page/reference/compat/object/get.html) and [set](https://es-toolkit.slash.page/reference/compat/object/set.html) in our compatibility layer `es-toolkit/compat`. (https://github.com/toss/es-toolkit/pull/232, https://github.com/toss/es-toolkit/pull/223) -- Added support for [zipObjectDeep](https://es-toolkit.slash.page/reference/compat/array/zipObjectDeep.html) in our compatibility layer `es-toolkit/compat`. (https://github.com/toss/es-toolkit/pull/150) -- Added support for [flatMap](https://es-toolkit.slash.page/reference/compat/array/flatMap.html). (https://github.com/toss/es-toolkit/pull/209) -- Added support for [startCase](https://es-toolkit.slash.page/reference/string/startCase.html), [startsWith](https://es-toolkit.slash.page/reference/string/startsWith.html), and [endsWith](https://es-toolkit.slash.page/reference/string/endsWith.html). (https://github.com/toss/es-toolkit/pull/224). -- Added support for [withTimeout](https://es-toolkit.slash.page/reference/promise/withTimeout.html). (https://github.com/toss/es-toolkit/pull/210) - -### Bug fixes - -- Fixed `drop` and `dropRight` incorrectly accepting negative integers. (https://github.com/toss/es-toolkit/pull/218) -- Fixed `invert` not to invert inherited properties. (https://github.com/toss/es-toolkit/pull/221) - -### Performance Improvements - -- Improved performance for `dropRightWhile`. (https://github.com/toss/es-toolkit/pull/220) - -## Version v1.10.1 - -Released on July 15th, 2024. - -- Fixed [camelCase](https://es-toolkit.slash.page/reference/string/camelCase.html) using `capitalize` from incorrect import. ([8dda135](https://github.com/toss/es-toolkit/commit/8dda135fa339ae4953908a74b2e6eeca9f163a20)) - -## Version v1.10.0 - -Released on July 14th, 2024. - -### Features - -- Add support for [capitalize](https://es-toolkit.slash.page/reference/string/capitalize.html), [snakeCase](https://es-toolkit.slash.page/reference/string/snakeCase.html), [kebabCase](https://es-toolkit.slash.page/reference/string/kebabCase.html), [camelCase](https://es-toolkit.slash.page/reference/string/camelCase.html) and [lowerCase](https://es-toolkit.slash.page/reference/string/lowerCase.html). (https://github.com/toss/es-toolkit/pull/152, https://github.com/toss/es-toolkit/pull/161, https://github.com/toss/es-toolkit/pull/162, https://github.com/toss/es-toolkit/pull/166, [21d6530](https://github.com/toss/es-toolkit/commit/21d6530e16471d596410d57d59fd3ced8fc5569f)). -- Add support for [negate](https://es-toolkit.slash.page/reference/function/negate.html). (https://github.com/toss/es-toolkit/pull/177) -- Add support for [isEqual](https://es-toolkit.slash.page/reference/predicate/isEqual.html). (https://github.com/toss/es-toolkit/pull/174) -- Add support for [clone](https://es-toolkit.slash.page/reference/object/clone.html). (https://github.com/toss/es-toolkit/pull/155) -- Add support for [toFilled](https://es-toolkit.slash.page/reference/array/toFilled.html). (https://github.com/toss/es-toolkit/pull/154) -- Add support for [initial](https://es-toolkit.slash.page/reference/array/initial.html) and [last](https://es-toolkit.slash.page/reference/array/last.html). (https://github.com/toss/es-toolkit/pull/188, https://github.com/toss/es-toolkit/pull/149) -- Add support for [flattenDeep](https://es-toolkit.slash.page/reference/array/flattenDeep.html). (https://github.com/toss/es-toolkit/pull/160) - -### Performance Improvements - -- Optimize the performance of [isNil](https://es-toolkit.slash.page/reference/predicate/isNil.html) by simplifying its check. ([489ac76](https://github.com/toss/es-toolkit/commit/489ac76fc62f97cbfa3ca9eec2e0a4c03c4f5b1c)) -- Optimize the performance of [sum](https://es-toolkit.slash.page/reference/array/sum.html). (https://github.com/toss/es-toolkit/pull/155) - -## Version v1.9.0 - -Released on July 10th, 2024. - -- Add support for [head](https://es-toolkit.slash.page/reference/array/head.html) and [tail](https://es-toolkit.slash.page/reference/array/tail.html). (https://github.com/toss/es-toolkit/pull/131, https://github.com/toss/es-toolkit/pull/143). -- Add support for [unzip](https://es-toolkit.slash.page/reference/array/unzip.html). (https://github.com/toss/es-toolkit/pull/130) -- Add support for [flatten](https://es-toolkit.slash.page/reference/array/flatten.html), which is six times faster than `Array#flat`. (https://github.com/toss/es-toolkit/pull/147) - -## Version v1.8.0 - -Released on July 5th, 2024. - -- Add support for [orderBy](https://es-toolkit.slash.page/reference/array/orderBy.html). (https://github.com/toss/es-toolkit/pull/123) -- Add support for [invert](https://es-toolkit.slash.page/reference/array/invert.html). (https://github.com/toss/es-toolkit/pull/125) -- Add support for [inRange](https://es-toolkit.slash.page/reference/array/inRange.html). (https://github.com/toss/es-toolkit/pull/124) - -## Version v1.7.1 - -Released on July 3rd, 2024. - -- Add support for [unzipWith](https://es-toolkit.slash.page/reference/array/unzipWith.html). (https://github.com/toss/es-toolkit/pull/113) -- Add support for [forEachRight](https://es-toolkit.slash.page/reference/array/forEachRight.html). (https://github.com/toss/es-toolkit/pull/119) -- Add support for [countBy](https://es-toolkit.slash.page/reference/array/countBy.html). (https://github.com/toss/es-toolkit/pull/117) -- Add support for [without](https://es-toolkit.slash.page/reference/array/without.html). (https://github.com/toss/es-toolkit/pull/115) -- Add support for [fill](https://es-toolkit.slash.page/reference/array/fill.html). (https://github.com/toss/es-toolkit/pull/109) -- Add support for [sampleSize](https://es-toolkit.slash.page/reference/array/sampleSize.html). (https://github.com/toss/es-toolkit/pull/101) -- Add support for [meanBy](https://es-toolkit.slash.page/reference/math/meanBy.html). (https://github.com/toss/es-toolkit/pull/104) -- Accept number and symbol keys in [keyBy](https://es-toolkit.slash.page/reference/array/keyBy.html) and [groupBy](https://es-toolkit.slash.page/reference/array/groupBy.html) (https://github.com/toss/es-toolkit/pull/98, https://github.com/toss/es-toolkit/pull/99) - -## Version v1.6.1 - -Released on June 30th, 2024. - -- Publish package on [JSR](https://jsr.io/@es-toolkit/es-toolkit). - -## Version v1.6.0 - -Released on June 30th, 2024. - -### Features - -- Add support for [keyBy](https://es-toolkit.slash.page/reference/array/keyBy.html). (https://github.com/toss/es-toolkit/pull/93). -- Add support for [zipObject](https://es-toolkit.slash.page/reference/array/zipObject.html). (https://github.com/toss/es-toolkit/pull/92). -- Add support for [compact](https://es-toolkit.slash.page/reference/array/compact.html). ([60ae59b](https://github.com/toss/es-toolkit/commit/60ae59bcfee69992e5447322e1da9cb7631c5745)) -- Add support for [mean](https://es-toolkit.slash.page/reference/math/mean.html). ([715bc60](https://github.com/toss/es-toolkit/commit/715bc60b26bb24ad490b8befe16204050699f0c0)) - -## Version v1.5.0 - -Released on June 28th, 2024. - -### Features - -- Add support for [range](https://es-toolkit.slash.page/reference/math/range.html). (https://github.com/toss/es-toolkit/pull/77, [2db11d8](https://github.com/toss/es-toolkit/commit/2db11d8882f6d7b0b53271c76f4c5007b6a9181e)). -- Add support for [minBy](https://es-toolkit.slash.page/reference/math/minBy.html) (https://github.com/toss/es-toolkit/pull/71). -- Add support for [maxBy](https://es-toolkit.slash.page/reference/math/maxBy.html) (https://github.com/toss/es-toolkit/pull/64). - -### Bug fixes - -- Enforce stricter argument types in `pickBy` and `omitBy`. (https://github.com/toss/es-toolkit/pull/60) -- Fix a bug in `difference` where one array parameter was not readonly. (https://github.com/toss/es-toolkit/pull/83) -- Fix a bug in `round` where it incorrectly accepts floating-point numbers as `precision`. (https://github.com/toss/es-toolkit/pull/79) - -## Version v1.4.0 - -Released on June 15th, 2024. - -### Features - -- Add support for [random](https://es-toolkit.slash.page/reference/math/random.html). (https://github.com/toss/es-toolkit/pull/53) -- Add support for [randomInt](https://es-toolkit.slash.page/reference/math/randomInt.html). ([99a34e4](https://github.com/toss/es-toolkit/commit/99a34e4e9944c1b843e9d97dff0b5ff4e5eec260)) -- Add support for using AbortSignals to cancel the `Promise` returned by `delay`. (https://github.com/toss/es-toolkit/pull/52) - -### Performance Optimizations - -- Optimized `uniqBy`. ([60e7974](https://github.com/toss/es-toolkit/commit/60e79741271e645bfa551f708466e43b136f69b1)) - -## Version v1.3.1 - -Released on June 15th, 2024. - -- Fixed a bug in `dropWhile` where it incorrectly returned the entire array when no elements matched the predicate. (https://github.com/toss/es-toolkit/pull/49) - -## Version v1.3.0 - -Released on June 14th, 2024. - -### Features - -- Add support for using AbortSignals to cancel `debounce`d functions. (https://github.com/toss/es-toolkit/pull/45) - -### Performance Optimizations - -- Optimize the time complexity of `intersection`. (https://github.com/toss/es-toolkit/pull/47) - -## Version v1.2.2 - -Released on June 13th, 2024. - -- Add support for `readonly` arrays in array utilities. (https://github.com/toss/es-toolkit/pull/32, [e595e5e](https://github.com/toss/es-toolkit/commit/e595e5e017e1f2cb138b1ad3d708635efc5e289e)) -- Optimize the time complexity of `uniq`. (https://github.com/toss/es-toolkit/pull/40) -- Optimize the time complexity of `intersectionBy`. (https://github.com/toss/es-toolkit/pull/44) - -## Version v1.2.1 - -Released on June 13th, 2024. - -- Ensure that the `omit` and `pick` functions only accept plain JavaScript objects as arguments. (https://github.com/toss/es-toolkit/pull/35) - -## Version v1.2.0 - -Released on June 8th, 2024. - -### Features - -- Added the `noop` function. (https://github.com/toss/es-toolkit/commit/678028dd3d60509b99dfec47aed7f1088140d19d) - -### Performance Improvements - -- Optimized the `difference` and `differenceBy` functions for better performance with large arrays. (https://github.com/toss/es-toolkit/pull/27, https://github.com/toss/es-toolkit/pull/28) - -### Bug fixes - -- Fixed `shuffle` to ensure it does not modify the original array. (https://github.com/toss/es-toolkit/pull/29) - -## Version v1.1.0 - -Released on June 5th, 2024. - -- Support passing arguments to throttled and debounced functions. (https://github.com/toss/es-toolkit/pull/26) - -## Version v1.0.4 - -Released on June 4th, 2024. - -- Provide correct type declarations for ECMAScript Modules. (https://github.com/toss/es-toolkit/pull/21) - -## Version v1.0.3 - -Released on June 3rd, 2024. - -- Provide correct types for `"module": "Node"`, ` "Node10"`, and `"Node16"`. (https://github.com/toss/es-toolkit/pull/16) - -## Version v1.0.2 - -Initial release. Released on May 31th, 2024. diff --git a/sdks/nodejs/node_modules/es-toolkit/LICENSE b/sdks/nodejs/node_modules/es-toolkit/LICENSE deleted file mode 100644 index 4f8206b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -MIT License - -Copyright (c) 2024 Viva Republica, Inc - -Copyright OpenJS Foundation and other contributors - -Parts of the test suite and compatibility layer in `es-toolkit/compat` are derived from Lodash (https://github.com/lodash/lodash) by the OpenJS Foundation (https://openjsf.org/) and Underscore.js by Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors (http://underscorejs.org/) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/es-toolkit/README.md b/sdks/nodejs/node_modules/es-toolkit/README.md deleted file mode 100644 index d90b1cc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/README.md +++ /dev/null @@ -1,52 +0,0 @@ -![](./docs/public/og.png) - -# es-toolkit · [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/toss/slash/blob/main/LICENSE) [![codecov](https://codecov.io/gh/toss/es-toolkit/graph/badge.svg?token=8N5S3AR3C7)](https://codecov.io/gh/toss/es-toolkit) [![NPM badge](https://img.shields.io/npm/v/es-toolkit?logo=npm)](https://www.npmjs.com/package/es-toolkit) [![JSR badge](https://jsr.io/badges/@es-toolkit/es-toolkit)](https://jsr.io/@es-toolkit/es-toolkit) [![Discord Badge](https://discord.com/api/guilds/1281071127052943361/widget.png?style=shield)](https://discord.gg/vGXbVjP2nY) - -English | [한국어](https://github.com/toss/es-toolkit/blob/main/README-ko_kr.md) | [简体中文](https://github.com/toss/es-toolkit/blob/main/README-zh_hans.md) | [日本語](https://github.com/toss/es-toolkit/blob/main/README-ja_jp.md) - -es-toolkit is a state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations. - -- es-toolkit offers a variety of everyday utility functions with modern implementations, such as [debounce](https://es-toolkit.dev/reference/function/debounce.html), [delay](https://es-toolkit.dev/reference/promise/delay.html), [chunk](https://es-toolkit.dev/reference/array/chunk.html), [sum](https://es-toolkit.dev/reference/math/sum.html), and [pick](https://es-toolkit.dev/reference/object/pick.html). -- Designed with performance in mind, es-toolkit achieves [2-3× better performance](https://es-toolkit.dev/performance.html) in modern JavaScript environments. -- es-toolkit supports tree shaking out of the box, and [reduces JavaScript code by up to 97%](https://es-toolkit.dev/bundle-size.html) compared to other libraries. -- es-toolkit offers a complete compatibility layer to seamlessly replace lodash, available as [es-toolkit/compat](https://es-toolkit.dev/compatibility.html). -- es-toolkit includes built-in TypeScript support, with straightforward yet robust types. It also provides useful type guards such as [isNotNil](https://es-toolkit.dev/reference/predicate/isNotNil.html). -- es-toolkit is trusted and used by popular open-source projects like [Storybook](https://github.com/storybookjs/storybook/blob/9d862798d666678cc4822e857c00bbd744169ced/code/core/package.json#L358), Recharts, ink, and CKEditor. -- es-toolkit is battle-tested with 100% test coverage, ensuring reliability and robustness. - -## Examples - -```tsx -// import from '@es-toolkit/es-toolkit' in jsr. -import { chunk, debounce } from 'es-toolkit'; - -const debouncedLog = debounce(message => { - console.log(message); -}, 300); - -// This call will be debounced -debouncedLog('Hello, world!'); - -const array = [1, 2, 3, 4, 5, 6]; -const chunkedArray = chunk(array, 2); - -console.log(chunkedArray); -// Output: [[1, 2], [3, 4], [5, 6]] -``` - -## Contributing - -We welcome contribution from everyone in the community. Read below for detailed contribution guide. - -[CONTRIBUTING](https://github.com/toss/es-toolkit/blob/main/.github/CONTRIBUTING.md) - -## License - -MIT © Viva Republica, Inc. See [LICENSE](./LICENSE) for details. - - - - - Toss - - diff --git a/sdks/nodejs/node_modules/es-toolkit/array.d.ts b/sdks/nodejs/node_modules/es-toolkit/array.d.ts deleted file mode 100644 index 0453fca..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/array.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/array'; diff --git a/sdks/nodejs/node_modules/es-toolkit/array.js b/sdks/nodejs/node_modules/es-toolkit/array.js deleted file mode 100644 index 938b944..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/array.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/array'); diff --git a/sdks/nodejs/node_modules/es-toolkit/compat.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat.d.ts deleted file mode 100644 index da697ab..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/compat'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat.js b/sdks/nodejs/node_modules/es-toolkit/compat.js deleted file mode 100644 index 347ee5d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/compat'); diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/add.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/add.d.ts deleted file mode 100644 index aed6f11..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/add.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { add as default } from '../dist/compat/math/add.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/add.js b/sdks/nodejs/node_modules/es-toolkit/compat/add.js deleted file mode 100644 index c4c7e4f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/add.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/add.js').add; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/after.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/after.d.ts deleted file mode 100644 index b2ad948..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/after.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { after as default } from '../dist/compat/function/after.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/after.js b/sdks/nodejs/node_modules/es-toolkit/compat/after.js deleted file mode 100644 index 3194520..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/after.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/after.js').after; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/ary.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/ary.d.ts deleted file mode 100644 index f1d007d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/ary.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { ary as default } from '../dist/compat/function/ary.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/ary.js b/sdks/nodejs/node_modules/es-toolkit/compat/ary.js deleted file mode 100644 index 5e925b2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/ary.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/ary.js').ary; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/assign.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/assign.d.ts deleted file mode 100644 index da3dc48..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/assign.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { assign as default } from '../dist/compat/object/assign.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/assign.js b/sdks/nodejs/node_modules/es-toolkit/compat/assign.js deleted file mode 100644 index a836585..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/assign.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/assign.js').assign; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/assignIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/assignIn.d.ts deleted file mode 100644 index c31a77b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/assignIn.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { assignIn as default } from '../dist/compat/object/assignIn.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/assignIn.js b/sdks/nodejs/node_modules/es-toolkit/compat/assignIn.js deleted file mode 100644 index a411e8d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/assignIn.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/assignIn.js').assignIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/assignInWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/assignInWith.d.ts deleted file mode 100644 index 843bf40..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/assignInWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { assignInWith as default } from '../dist/compat/object/assignInWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/assignInWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/assignInWith.js deleted file mode 100644 index cce46d7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/assignInWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/assignInWith.js').assignInWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/assignWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/assignWith.d.ts deleted file mode 100644 index 7ae31de..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/assignWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { assignWith as default } from '../dist/compat/object/assignWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/assignWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/assignWith.js deleted file mode 100644 index aa8fb1a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/assignWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/assignWith.js').assignWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/at.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/at.d.ts deleted file mode 100644 index 2dd93be..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/at.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { at as default } from '../dist/compat/object/at.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/at.js b/sdks/nodejs/node_modules/es-toolkit/compat/at.js deleted file mode 100644 index 6f3860e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/at.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/at.js').at; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/attempt.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/attempt.d.ts deleted file mode 100644 index 1fb5051..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/attempt.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { attempt as default } from '../dist/compat/function/attempt.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/attempt.js b/sdks/nodejs/node_modules/es-toolkit/compat/attempt.js deleted file mode 100644 index 3afaaeb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/attempt.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/attempt.js').attempt; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/before.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/before.d.ts deleted file mode 100644 index 3ddef8f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/before.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { before as default } from '../dist/compat/function/before.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/before.js b/sdks/nodejs/node_modules/es-toolkit/compat/before.js deleted file mode 100644 index 27f73ad..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/before.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/before.js').before; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/bind.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/bind.d.ts deleted file mode 100644 index c119ba3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/bind.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { bind as default } from '../dist/compat/function/bind.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/bind.js b/sdks/nodejs/node_modules/es-toolkit/compat/bind.js deleted file mode 100644 index 918fece..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/bind.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/bind.js').bind; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/bindAll.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/bindAll.d.ts deleted file mode 100644 index b4c7241..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/bindAll.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { bindAll as default } from '../dist/compat/util/bindAll.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/bindAll.js b/sdks/nodejs/node_modules/es-toolkit/compat/bindAll.js deleted file mode 100644 index adecde2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/bindAll.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/bindAll.js').bindAll; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/bindKey.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/bindKey.d.ts deleted file mode 100644 index 76e2788..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/bindKey.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { bindKey as default } from '../dist/compat/function/bindKey.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/bindKey.js b/sdks/nodejs/node_modules/es-toolkit/compat/bindKey.js deleted file mode 100644 index b653b15..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/bindKey.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/bindKey.js').bindKey; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/camelCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/camelCase.d.ts deleted file mode 100644 index bc729ed..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/camelCase.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { camelCase as default } from '../dist/compat/string/camelCase.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/camelCase.js b/sdks/nodejs/node_modules/es-toolkit/compat/camelCase.js deleted file mode 100644 index 97c712c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/camelCase.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/camelCase.js').camelCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/capitalize.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/capitalize.d.ts deleted file mode 100644 index f9d6214..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/capitalize.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { capitalize as default } from '../dist/string/capitalize.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/capitalize.js b/sdks/nodejs/node_modules/es-toolkit/compat/capitalize.js deleted file mode 100644 index d59b7a5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/capitalize.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/string/capitalize.js').capitalize; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/castArray.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/castArray.d.ts deleted file mode 100644 index 0db37bd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/castArray.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { castArray as default } from '../dist/compat/array/castArray.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/castArray.js b/sdks/nodejs/node_modules/es-toolkit/compat/castArray.js deleted file mode 100644 index ec5a4e0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/castArray.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/castArray.js').castArray; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/ceil.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/ceil.d.ts deleted file mode 100644 index 1709c17..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/ceil.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { ceil as default } from '../dist/compat/math/ceil.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/ceil.js b/sdks/nodejs/node_modules/es-toolkit/compat/ceil.js deleted file mode 100644 index 4b800e0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/ceil.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/ceil.js').ceil; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/chunk.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/chunk.d.ts deleted file mode 100644 index d1998b8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/chunk.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { chunk as default } from '../dist/compat/array/chunk.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/chunk.js b/sdks/nodejs/node_modules/es-toolkit/compat/chunk.js deleted file mode 100644 index 93f399c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/chunk.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/chunk.js').chunk; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/clamp.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/clamp.d.ts deleted file mode 100644 index 95ace92..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/clamp.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { clamp as default } from '../dist/compat/math/clamp.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/clamp.js b/sdks/nodejs/node_modules/es-toolkit/compat/clamp.js deleted file mode 100644 index 7439d11..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/clamp.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/clamp.js').clamp; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/clone.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/clone.d.ts deleted file mode 100644 index 43f4ded..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/clone.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { clone as default } from '../dist/compat/object/clone.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/clone.js b/sdks/nodejs/node_modules/es-toolkit/compat/clone.js deleted file mode 100644 index 58194d5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/clone.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/clone.js').clone; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/cloneDeep.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/cloneDeep.d.ts deleted file mode 100644 index 0ec6811..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/cloneDeep.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { cloneDeep as default } from '../dist/compat/object/cloneDeep.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/cloneDeep.js b/sdks/nodejs/node_modules/es-toolkit/compat/cloneDeep.js deleted file mode 100644 index fdb63f4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/cloneDeep.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/cloneDeep.js').cloneDeep; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/cloneDeepWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/cloneDeepWith.d.ts deleted file mode 100644 index 41dcef2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/cloneDeepWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { cloneDeepWith as default } from '../dist/compat/object/cloneDeepWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/cloneDeepWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/cloneDeepWith.js deleted file mode 100644 index cb5ff1b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/cloneDeepWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/cloneDeepWith.js').cloneDeepWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/cloneWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/cloneWith.d.ts deleted file mode 100644 index aafe6e5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/cloneWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { cloneWith as default } from '../dist/compat/object/cloneWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/cloneWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/cloneWith.js deleted file mode 100644 index fe57b49..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/cloneWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/cloneWith.js').cloneWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/compact.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/compact.d.ts deleted file mode 100644 index 385a84d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/compact.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { compact as default } from '../dist/compat/array/compact.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/compact.js b/sdks/nodejs/node_modules/es-toolkit/compat/compact.js deleted file mode 100644 index 1285e33..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/compact.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/compact.js').compact; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/concat.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/concat.d.ts deleted file mode 100644 index dada7cc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/concat.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { concat as default } from '../dist/compat/array/concat.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/concat.js b/sdks/nodejs/node_modules/es-toolkit/compat/concat.js deleted file mode 100644 index dbe943d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/concat.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/concat.js').concat; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/cond.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/cond.d.ts deleted file mode 100644 index dcab94a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/cond.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { cond as default } from '../dist/compat/util/cond.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/cond.js b/sdks/nodejs/node_modules/es-toolkit/compat/cond.js deleted file mode 100644 index 45b0db2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/cond.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/cond.js').cond; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/conforms.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/conforms.d.ts deleted file mode 100644 index 48fc11b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/conforms.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { conforms as default } from '../dist/compat/predicate/conforms.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/conforms.js b/sdks/nodejs/node_modules/es-toolkit/compat/conforms.js deleted file mode 100644 index 914a624..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/conforms.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/conforms.js').conforms; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/conformsTo.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/conformsTo.d.ts deleted file mode 100644 index 96c29ba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/conformsTo.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { conformsTo as default } from '../dist/compat/predicate/conformsTo.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/conformsTo.js b/sdks/nodejs/node_modules/es-toolkit/compat/conformsTo.js deleted file mode 100644 index 33b9424..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/conformsTo.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/conformsTo.js').conformsTo; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/constant.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/constant.d.ts deleted file mode 100644 index a19a38d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/constant.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { constant as default } from '../dist/compat/util/constant.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/constant.js b/sdks/nodejs/node_modules/es-toolkit/compat/constant.js deleted file mode 100644 index 374084c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/constant.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/constant.js').constant; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/countBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/countBy.d.ts deleted file mode 100644 index 327daeb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/countBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { countBy as default } from '../dist/compat/array/countBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/countBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/countBy.js deleted file mode 100644 index 6273a94..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/countBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/countBy.js').countBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/create.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/create.d.ts deleted file mode 100644 index 8ceff3f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/create.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { create as default } from '../dist/compat/object/create.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/create.js b/sdks/nodejs/node_modules/es-toolkit/compat/create.js deleted file mode 100644 index f94268f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/create.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/create.js').create; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/curry.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/curry.d.ts deleted file mode 100644 index fbf61a0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/curry.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { curry as default } from '../dist/compat/function/curry.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/curry.js b/sdks/nodejs/node_modules/es-toolkit/compat/curry.js deleted file mode 100644 index 262e5d1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/curry.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/curry.js').curry; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/curryRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/curryRight.d.ts deleted file mode 100644 index cb0f644..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/curryRight.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { curryRight as default } from '../dist/compat/function/curryRight.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/curryRight.js b/sdks/nodejs/node_modules/es-toolkit/compat/curryRight.js deleted file mode 100644 index fb4dd36..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/curryRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/curryRight.js').curryRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/debounce.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/debounce.d.ts deleted file mode 100644 index 59cc71b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/debounce.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { debounce as default } from '../dist/compat/function/debounce.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/debounce.js b/sdks/nodejs/node_modules/es-toolkit/compat/debounce.js deleted file mode 100644 index 479c643..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/debounce.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/debounce.js').debounce; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/deburr.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/deburr.d.ts deleted file mode 100644 index 6ef93b1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/deburr.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { deburr as default } from '../dist/compat/string/deburr.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/deburr.js b/sdks/nodejs/node_modules/es-toolkit/compat/deburr.js deleted file mode 100644 index 8d6725f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/deburr.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/deburr.js').deburr; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/defaultTo.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/defaultTo.d.ts deleted file mode 100644 index 28e4866..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/defaultTo.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { defaultTo as default } from '../dist/compat/util/defaultTo.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/defaultTo.js b/sdks/nodejs/node_modules/es-toolkit/compat/defaultTo.js deleted file mode 100644 index fea096b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/defaultTo.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/defaultTo.js').defaultTo; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/defaults.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/defaults.d.ts deleted file mode 100644 index 4d7afa8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/defaults.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { defaults as default } from '../dist/compat/object/defaults.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/defaults.js b/sdks/nodejs/node_modules/es-toolkit/compat/defaults.js deleted file mode 100644 index 8530056..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/defaults.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/defaults.js').defaults; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/defaultsDeep.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/defaultsDeep.d.ts deleted file mode 100644 index 3e06c37..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/defaultsDeep.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { defaultsDeep as default } from '../dist/compat/object/defaultsDeep.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/defaultsDeep.js b/sdks/nodejs/node_modules/es-toolkit/compat/defaultsDeep.js deleted file mode 100644 index 6241e83..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/defaultsDeep.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/defaultsDeep.js').defaultsDeep; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/defer.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/defer.d.ts deleted file mode 100644 index 7bc1ac7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/defer.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { defer as default } from '../dist/compat/function/defer.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/defer.js b/sdks/nodejs/node_modules/es-toolkit/compat/defer.js deleted file mode 100644 index 986cf62..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/defer.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/defer.js').defer; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/delay.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/delay.d.ts deleted file mode 100644 index c7a166f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/delay.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { delay as default } from '../dist/compat/function/delay.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/delay.js b/sdks/nodejs/node_modules/es-toolkit/compat/delay.js deleted file mode 100644 index 46b271e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/delay.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/delay.js').delay; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/difference.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/difference.d.ts deleted file mode 100644 index 6fd7a34..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/difference.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { difference as default } from '../dist/compat/array/difference.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/difference.js b/sdks/nodejs/node_modules/es-toolkit/compat/difference.js deleted file mode 100644 index f4d3ccc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/difference.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/difference.js').difference; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/differenceBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/differenceBy.d.ts deleted file mode 100644 index 09bc594..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/differenceBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { differenceBy as default } from '../dist/compat/array/differenceBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/differenceBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/differenceBy.js deleted file mode 100644 index 73e4f14..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/differenceBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/differenceBy.js').differenceBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/differenceWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/differenceWith.d.ts deleted file mode 100644 index e14bd62..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/differenceWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { differenceWith as default } from '../dist/compat/array/differenceWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/differenceWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/differenceWith.js deleted file mode 100644 index 39598b1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/differenceWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/differenceWith.js').differenceWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/divide.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/divide.d.ts deleted file mode 100644 index 10199d1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/divide.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { divide as default } from '../dist/compat/math/divide.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/divide.js b/sdks/nodejs/node_modules/es-toolkit/compat/divide.js deleted file mode 100644 index 6ca48b9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/divide.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/divide.js').divide; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/drop.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/drop.d.ts deleted file mode 100644 index 89a6bd6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/drop.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { drop as default } from '../dist/compat/array/drop.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/drop.js b/sdks/nodejs/node_modules/es-toolkit/compat/drop.js deleted file mode 100644 index 1aa1727..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/drop.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/drop.js').drop; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/dropRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/dropRight.d.ts deleted file mode 100644 index db31a85..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/dropRight.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { dropRight as default } from '../dist/compat/array/dropRight.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/dropRight.js b/sdks/nodejs/node_modules/es-toolkit/compat/dropRight.js deleted file mode 100644 index 901656c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/dropRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/dropRight.js').dropRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/dropRightWhile.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/dropRightWhile.d.ts deleted file mode 100644 index 20ed97e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/dropRightWhile.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { dropRightWhile as default } from '../dist/compat/array/dropRightWhile.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/dropRightWhile.js b/sdks/nodejs/node_modules/es-toolkit/compat/dropRightWhile.js deleted file mode 100644 index 6514b84..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/dropRightWhile.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/dropRightWhile.js').dropRightWhile; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/dropWhile.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/dropWhile.d.ts deleted file mode 100644 index 9b3cbe5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/dropWhile.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { dropWhile as default } from '../dist/compat/array/dropWhile.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/dropWhile.js b/sdks/nodejs/node_modules/es-toolkit/compat/dropWhile.js deleted file mode 100644 index fd30c6d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/dropWhile.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/dropWhile.js').dropWhile; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/each.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/each.d.ts deleted file mode 100644 index dd1c03b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/each.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { forEach as default } from '../dist/compat/array/forEach.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/each.js b/sdks/nodejs/node_modules/es-toolkit/compat/each.js deleted file mode 100644 index 37d00c7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/each.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/forEach.js').forEach; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/eachRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/eachRight.d.ts deleted file mode 100644 index ed4e63d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/eachRight.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { forEachRight as default } from '../dist/compat/array/forEachRight.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/eachRight.js b/sdks/nodejs/node_modules/es-toolkit/compat/eachRight.js deleted file mode 100644 index 4a53c47..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/eachRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/forEachRight.js').forEachRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/endsWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/endsWith.d.ts deleted file mode 100644 index 1e2d40c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/endsWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { endsWith as default } from '../dist/compat/string/endsWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/endsWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/endsWith.js deleted file mode 100644 index 2f84910..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/endsWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/endsWith.js').endsWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/eq.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/eq.d.ts deleted file mode 100644 index 5f3bbab..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/eq.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { eq as default } from '../dist/compat/util/eq.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/eq.js b/sdks/nodejs/node_modules/es-toolkit/compat/eq.js deleted file mode 100644 index e43640f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/eq.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/eq.js').eq; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/escape.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/escape.d.ts deleted file mode 100644 index 97eea5a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/escape.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { escape as default } from '../dist/compat/string/escape.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/escape.js b/sdks/nodejs/node_modules/es-toolkit/compat/escape.js deleted file mode 100644 index 5e8b396..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/escape.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/escape.js').escape; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/escapeRegExp.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/escapeRegExp.d.ts deleted file mode 100644 index af8943c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/escapeRegExp.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { escapeRegExp as default } from '../dist/compat/string/escapeRegExp.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/escapeRegExp.js b/sdks/nodejs/node_modules/es-toolkit/compat/escapeRegExp.js deleted file mode 100644 index a9f62ef..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/escapeRegExp.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/escapeRegExp.js').escapeRegExp; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/every.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/every.d.ts deleted file mode 100644 index 9be354d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/every.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { every as default } from '../dist/compat/array/every.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/every.js b/sdks/nodejs/node_modules/es-toolkit/compat/every.js deleted file mode 100644 index b6041cc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/every.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/every.js').every; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/extend.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/extend.d.ts deleted file mode 100644 index c31a77b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/extend.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { assignIn as default } from '../dist/compat/object/assignIn.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/extend.js b/sdks/nodejs/node_modules/es-toolkit/compat/extend.js deleted file mode 100644 index a411e8d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/extend.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/assignIn.js').assignIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/extendWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/extendWith.d.ts deleted file mode 100644 index 843bf40..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/extendWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { assignInWith as default } from '../dist/compat/object/assignInWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/extendWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/extendWith.js deleted file mode 100644 index cce46d7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/extendWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/assignInWith.js').assignInWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/fill.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/fill.d.ts deleted file mode 100644 index 4697bf6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/fill.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { fill as default } from '../dist/compat/array/fill.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/fill.js b/sdks/nodejs/node_modules/es-toolkit/compat/fill.js deleted file mode 100644 index ed44d7f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/fill.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/fill.js').fill; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/filter.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/filter.d.ts deleted file mode 100644 index 1503aa4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/filter.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { filter as default } from '../dist/compat/array/filter.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/filter.js b/sdks/nodejs/node_modules/es-toolkit/compat/filter.js deleted file mode 100644 index 3212c06..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/filter.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/filter.js').filter; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/find.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/find.d.ts deleted file mode 100644 index cc2e053..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/find.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { find as default } from '../dist/compat/array/find.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/find.js b/sdks/nodejs/node_modules/es-toolkit/compat/find.js deleted file mode 100644 index b69850b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/find.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/find.js').find; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/findIndex.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/findIndex.d.ts deleted file mode 100644 index be2ece7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/findIndex.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { findIndex as default } from '../dist/compat/array/findIndex.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/findIndex.js b/sdks/nodejs/node_modules/es-toolkit/compat/findIndex.js deleted file mode 100644 index 8b724b2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/findIndex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/findIndex.js').findIndex; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/findKey.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/findKey.d.ts deleted file mode 100644 index feaba37..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/findKey.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { findKey as default } from '../dist/compat/object/findKey.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/findKey.js b/sdks/nodejs/node_modules/es-toolkit/compat/findKey.js deleted file mode 100644 index 1510309..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/findKey.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/findKey.js').findKey; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/findLast.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/findLast.d.ts deleted file mode 100644 index d9dc4a7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/findLast.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { findLast as default } from '../dist/compat/array/findLast.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/findLast.js b/sdks/nodejs/node_modules/es-toolkit/compat/findLast.js deleted file mode 100644 index 53d58d4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/findLast.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/findLast.js').findLast; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/findLastIndex.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/findLastIndex.d.ts deleted file mode 100644 index 2a14a9d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/findLastIndex.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { findLastIndex as default } from '../dist/compat/array/findLastIndex.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/findLastIndex.js b/sdks/nodejs/node_modules/es-toolkit/compat/findLastIndex.js deleted file mode 100644 index a4ea0cd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/findLastIndex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/findLastIndex.js').findLastIndex; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/findLastKey.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/findLastKey.d.ts deleted file mode 100644 index 6244017..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/findLastKey.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { findLastKey as default } from '../dist/compat/object/findLastKey.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/findLastKey.js b/sdks/nodejs/node_modules/es-toolkit/compat/findLastKey.js deleted file mode 100644 index c34b46d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/findLastKey.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/findLastKey.js').findLastKey; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/first.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/first.d.ts deleted file mode 100644 index 139ab2a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/first.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { head as default } from '../dist/compat/array/head.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/first.js b/sdks/nodejs/node_modules/es-toolkit/compat/first.js deleted file mode 100644 index b4aea9b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/first.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/head.js').head; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flatMap.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/flatMap.d.ts deleted file mode 100644 index b235e59..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flatMap.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { flatMap as default } from '../dist/compat/array/flatMap.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flatMap.js b/sdks/nodejs/node_modules/es-toolkit/compat/flatMap.js deleted file mode 100644 index 0f03274..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flatMap.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/flatMap.js').flatMap; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flatMapDeep.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/flatMapDeep.d.ts deleted file mode 100644 index 0661244..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flatMapDeep.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { flatMapDeep as default } from '../dist/compat/array/flatMapDeep.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flatMapDeep.js b/sdks/nodejs/node_modules/es-toolkit/compat/flatMapDeep.js deleted file mode 100644 index 6c78363..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flatMapDeep.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/flatMapDeep.js').flatMapDeep; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flatMapDepth.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/flatMapDepth.d.ts deleted file mode 100644 index 9bc53a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flatMapDepth.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { flatMapDepth as default } from '../dist/compat/array/flatMapDepth.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flatMapDepth.js b/sdks/nodejs/node_modules/es-toolkit/compat/flatMapDepth.js deleted file mode 100644 index b6ac67e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flatMapDepth.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/flatMapDepth.js').flatMapDepth; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flatten.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/flatten.d.ts deleted file mode 100644 index da250b0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flatten.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { flatten as default } from '../dist/compat/array/flatten.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flatten.js b/sdks/nodejs/node_modules/es-toolkit/compat/flatten.js deleted file mode 100644 index 773dbfc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flatten.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/flatten.js').flatten; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flattenDeep.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/flattenDeep.d.ts deleted file mode 100644 index ff64384..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flattenDeep.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { flattenDeep as default } from '../dist/compat/array/flattenDeep.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flattenDeep.js b/sdks/nodejs/node_modules/es-toolkit/compat/flattenDeep.js deleted file mode 100644 index 9fa3f77..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flattenDeep.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/flattenDeep.js').flattenDeep; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flattenDepth.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/flattenDepth.d.ts deleted file mode 100644 index 602d5b2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flattenDepth.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { flattenDepth as default } from '../dist/compat/array/flattenDepth.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flattenDepth.js b/sdks/nodejs/node_modules/es-toolkit/compat/flattenDepth.js deleted file mode 100644 index 9b0dd0a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flattenDepth.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/flattenDepth.js').flattenDepth; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flip.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/flip.d.ts deleted file mode 100644 index 69cc5ac..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flip.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { flip as default } from '../dist/compat/function/flip.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flip.js b/sdks/nodejs/node_modules/es-toolkit/compat/flip.js deleted file mode 100644 index 1d46f54..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flip.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/flip.js').flip; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/floor.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/floor.d.ts deleted file mode 100644 index 62bcb97..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/floor.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { floor as default } from '../dist/compat/math/floor.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/floor.js b/sdks/nodejs/node_modules/es-toolkit/compat/floor.js deleted file mode 100644 index 5b521d0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/floor.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/floor.js').floor; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flow.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/flow.d.ts deleted file mode 100644 index 86f4823..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flow.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { flow as default } from '../dist/compat/function/flow.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flow.js b/sdks/nodejs/node_modules/es-toolkit/compat/flow.js deleted file mode 100644 index bfacb9e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flow.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/flow.js').flow; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flowRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/flowRight.d.ts deleted file mode 100644 index 9126d01..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flowRight.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { flowRight as default } from '../dist/compat/function/flowRight.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/flowRight.js b/sdks/nodejs/node_modules/es-toolkit/compat/flowRight.js deleted file mode 100644 index 8406d26..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/flowRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/flowRight.js').flowRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/forEach.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/forEach.d.ts deleted file mode 100644 index dd1c03b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/forEach.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { forEach as default } from '../dist/compat/array/forEach.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/forEach.js b/sdks/nodejs/node_modules/es-toolkit/compat/forEach.js deleted file mode 100644 index 37d00c7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/forEach.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/forEach.js').forEach; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/forEachRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/forEachRight.d.ts deleted file mode 100644 index ed4e63d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/forEachRight.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { forEachRight as default } from '../dist/compat/array/forEachRight.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/forEachRight.js b/sdks/nodejs/node_modules/es-toolkit/compat/forEachRight.js deleted file mode 100644 index 4a53c47..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/forEachRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/forEachRight.js').forEachRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/forIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/forIn.d.ts deleted file mode 100644 index 8eec8ba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/forIn.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { forIn as default } from '../dist/compat/object/forIn.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/forIn.js b/sdks/nodejs/node_modules/es-toolkit/compat/forIn.js deleted file mode 100644 index 3580b54..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/forIn.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/forIn.js').forIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/forInRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/forInRight.d.ts deleted file mode 100644 index b4e66c2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/forInRight.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { forInRight as default } from '../dist/compat/object/forInRight.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/forInRight.js b/sdks/nodejs/node_modules/es-toolkit/compat/forInRight.js deleted file mode 100644 index bdecb29..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/forInRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/forInRight.js').forInRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/forOwn.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/forOwn.d.ts deleted file mode 100644 index 36c7f5e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/forOwn.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { forOwn as default } from '../dist/compat/object/forOwn.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/forOwn.js b/sdks/nodejs/node_modules/es-toolkit/compat/forOwn.js deleted file mode 100644 index f11de3d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/forOwn.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/forOwn.js').forOwn; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/forOwnRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/forOwnRight.d.ts deleted file mode 100644 index 0491044..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/forOwnRight.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { forOwnRight as default } from '../dist/compat/object/forOwnRight.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/forOwnRight.js b/sdks/nodejs/node_modules/es-toolkit/compat/forOwnRight.js deleted file mode 100644 index e7bbd91..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/forOwnRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/forOwnRight.js').forOwnRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/fromPairs.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/fromPairs.d.ts deleted file mode 100644 index ad4dd8c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/fromPairs.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { fromPairs as default } from '../dist/compat/object/fromPairs.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/fromPairs.js b/sdks/nodejs/node_modules/es-toolkit/compat/fromPairs.js deleted file mode 100644 index 759e930..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/fromPairs.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/fromPairs.js').fromPairs; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/functions.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/functions.d.ts deleted file mode 100644 index 0e6afb6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/functions.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { functions as default } from '../dist/compat/object/functions.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/functions.js b/sdks/nodejs/node_modules/es-toolkit/compat/functions.js deleted file mode 100644 index 46de3be..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/functions.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/functions.js').functions; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/functionsIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/functionsIn.d.ts deleted file mode 100644 index 9ea8555..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/functionsIn.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { functionsIn as default } from '../dist/compat/object/functionsIn.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/functionsIn.js b/sdks/nodejs/node_modules/es-toolkit/compat/functionsIn.js deleted file mode 100644 index ea89ee1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/functionsIn.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/functionsIn.js').functionsIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/get.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/get.d.ts deleted file mode 100644 index 5fefe0d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/get.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { get as default } from '../dist/compat/object/get.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/get.js b/sdks/nodejs/node_modules/es-toolkit/compat/get.js deleted file mode 100644 index 559ecea..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/get.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/get.js').get; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/groupBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/groupBy.d.ts deleted file mode 100644 index febaa60..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/groupBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { groupBy as default } from '../dist/compat/array/groupBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/groupBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/groupBy.js deleted file mode 100644 index 41aa5e0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/groupBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/groupBy.js').groupBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/gt.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/gt.d.ts deleted file mode 100644 index d520088..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/gt.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { gt as default } from '../dist/compat/util/gt.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/gt.js b/sdks/nodejs/node_modules/es-toolkit/compat/gt.js deleted file mode 100644 index d978901..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/gt.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/gt.js').gt; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/gte.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/gte.d.ts deleted file mode 100644 index ba2f475..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/gte.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { gte as default } from '../dist/compat/util/gte.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/gte.js b/sdks/nodejs/node_modules/es-toolkit/compat/gte.js deleted file mode 100644 index f065c45..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/gte.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/gte.js').gte; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/has.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/has.d.ts deleted file mode 100644 index b802b21..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/has.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { has as default } from '../dist/compat/object/has.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/has.js b/sdks/nodejs/node_modules/es-toolkit/compat/has.js deleted file mode 100644 index 10c564e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/has.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/has.js').has; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/hasIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/hasIn.d.ts deleted file mode 100644 index 53746f5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/hasIn.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { hasIn as default } from '../dist/compat/object/hasIn.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/hasIn.js b/sdks/nodejs/node_modules/es-toolkit/compat/hasIn.js deleted file mode 100644 index 6f36317..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/hasIn.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/hasIn.js').hasIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/head.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/head.d.ts deleted file mode 100644 index 139ab2a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/head.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { head as default } from '../dist/compat/array/head.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/head.js b/sdks/nodejs/node_modules/es-toolkit/compat/head.js deleted file mode 100644 index b4aea9b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/head.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/head.js').head; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/identity.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/identity.d.ts deleted file mode 100644 index 6f31000..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/identity.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { identity as default } from '../dist/function/identity.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/identity.js b/sdks/nodejs/node_modules/es-toolkit/compat/identity.js deleted file mode 100644 index ed240aa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/identity.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/function/identity.js').identity; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/inRange.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/inRange.d.ts deleted file mode 100644 index 4f95da9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/inRange.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { inRange as default } from '../dist/compat/math/inRange.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/inRange.js b/sdks/nodejs/node_modules/es-toolkit/compat/inRange.js deleted file mode 100644 index 46321fc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/inRange.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/inRange.js').inRange; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/includes.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/includes.d.ts deleted file mode 100644 index 4fadfc7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/includes.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { includes as default } from '../dist/compat/array/includes.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/includes.js b/sdks/nodejs/node_modules/es-toolkit/compat/includes.js deleted file mode 100644 index c496ad6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/includes.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/includes.js').includes; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/indexOf.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/indexOf.d.ts deleted file mode 100644 index 40c782a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/indexOf.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { indexOf as default } from '../dist/compat/array/indexOf.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/indexOf.js b/sdks/nodejs/node_modules/es-toolkit/compat/indexOf.js deleted file mode 100644 index 6770050..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/indexOf.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/indexOf.js').indexOf; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/initial.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/initial.d.ts deleted file mode 100644 index ebc3cb7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/initial.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { initial as default } from '../dist/compat/array/initial.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/initial.js b/sdks/nodejs/node_modules/es-toolkit/compat/initial.js deleted file mode 100644 index 968b285..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/initial.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/initial.js').initial; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/intersection.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/intersection.d.ts deleted file mode 100644 index 01430d7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/intersection.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { intersection as default } from '../dist/compat/array/intersection.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/intersection.js b/sdks/nodejs/node_modules/es-toolkit/compat/intersection.js deleted file mode 100644 index 43334eb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/intersection.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/intersection.js').intersection; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/intersectionBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/intersectionBy.d.ts deleted file mode 100644 index 3efa12e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/intersectionBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { intersectionBy as default } from '../dist/compat/array/intersectionBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/intersectionBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/intersectionBy.js deleted file mode 100644 index 3e8e6f0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/intersectionBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/intersectionBy.js').intersectionBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/intersectionWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/intersectionWith.d.ts deleted file mode 100644 index 4f25474..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/intersectionWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { intersectionWith as default } from '../dist/compat/array/intersectionWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/intersectionWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/intersectionWith.js deleted file mode 100644 index db618b9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/intersectionWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/intersectionWith.js').intersectionWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/invert.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/invert.d.ts deleted file mode 100644 index ea8cade..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/invert.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { invert as default } from '../dist/object/invert.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/invert.js b/sdks/nodejs/node_modules/es-toolkit/compat/invert.js deleted file mode 100644 index b6662ff..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/invert.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/object/invert.js').invert; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/invertBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/invertBy.d.ts deleted file mode 100644 index 1149756..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/invertBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { invertBy as default } from '../dist/compat/object/invertBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/invertBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/invertBy.js deleted file mode 100644 index d593cd2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/invertBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/invertBy.js').invertBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/invoke.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/invoke.d.ts deleted file mode 100644 index 68a6ed9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/invoke.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { invoke as default } from '../dist/compat/util/invoke.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/invoke.js b/sdks/nodejs/node_modules/es-toolkit/compat/invoke.js deleted file mode 100644 index 2b82372..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/invoke.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/invoke.js').invoke; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/invokeMap.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/invokeMap.d.ts deleted file mode 100644 index 2624131..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/invokeMap.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { invokeMap as default } from '../dist/compat/array/invokeMap.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/invokeMap.js b/sdks/nodejs/node_modules/es-toolkit/compat/invokeMap.js deleted file mode 100644 index 48736e1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/invokeMap.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/invokeMap.js').invokeMap; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isArguments.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isArguments.d.ts deleted file mode 100644 index 4bcd212..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isArguments.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isArguments as default } from '../dist/compat/predicate/isArguments.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isArguments.js b/sdks/nodejs/node_modules/es-toolkit/compat/isArguments.js deleted file mode 100644 index 58307bd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isArguments.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isArguments.js').isArguments; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isArray.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isArray.d.ts deleted file mode 100644 index a6ac0fb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isArray.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isArray as default } from '../dist/compat/predicate/isArray.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isArray.js b/sdks/nodejs/node_modules/es-toolkit/compat/isArray.js deleted file mode 100644 index 84d1ea8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isArray.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isArray.js').isArray; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isArrayBuffer.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isArrayBuffer.d.ts deleted file mode 100644 index 8721922..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isArrayBuffer.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isArrayBuffer as default } from '../dist/compat/predicate/isArrayBuffer.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isArrayBuffer.js b/sdks/nodejs/node_modules/es-toolkit/compat/isArrayBuffer.js deleted file mode 100644 index 9ea5bb8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isArrayBuffer.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isArrayBuffer.js').isArrayBuffer; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isArrayLike.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isArrayLike.d.ts deleted file mode 100644 index 91abd02..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isArrayLike.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isArrayLike as default } from '../dist/compat/predicate/isArrayLike.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isArrayLike.js b/sdks/nodejs/node_modules/es-toolkit/compat/isArrayLike.js deleted file mode 100644 index e4d7c70..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isArrayLike.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isArrayLike.js').isArrayLike; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isArrayLikeObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isArrayLikeObject.d.ts deleted file mode 100644 index fb8010a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isArrayLikeObject.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isArrayLikeObject as default } from '../dist/compat/predicate/isArrayLikeObject.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isArrayLikeObject.js b/sdks/nodejs/node_modules/es-toolkit/compat/isArrayLikeObject.js deleted file mode 100644 index 8bbee72..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isArrayLikeObject.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isArrayLikeObject.js').isArrayLikeObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isBoolean.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isBoolean.d.ts deleted file mode 100644 index 105c35d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isBoolean.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isBoolean as default } from '../dist/compat/predicate/isBoolean.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isBoolean.js b/sdks/nodejs/node_modules/es-toolkit/compat/isBoolean.js deleted file mode 100644 index ed0ff77..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isBoolean.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isBoolean.js').isBoolean; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isBuffer.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isBuffer.d.ts deleted file mode 100644 index 139dab8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isBuffer.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isBuffer as default } from '../dist/compat/predicate/isBuffer.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isBuffer.js b/sdks/nodejs/node_modules/es-toolkit/compat/isBuffer.js deleted file mode 100644 index 372af79..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isBuffer.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isBuffer.js').isBuffer; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isDate.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isDate.d.ts deleted file mode 100644 index 5c5214a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isDate.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isDate as default } from '../dist/compat/predicate/isDate.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isDate.js b/sdks/nodejs/node_modules/es-toolkit/compat/isDate.js deleted file mode 100644 index a2fde9b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isDate.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isDate.js').isDate; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isElement.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isElement.d.ts deleted file mode 100644 index d743869..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isElement.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isElement as default } from '../dist/compat/predicate/isElement.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isElement.js b/sdks/nodejs/node_modules/es-toolkit/compat/isElement.js deleted file mode 100644 index 36af228..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isElement.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isElement.js').isElement; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isEmpty.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isEmpty.d.ts deleted file mode 100644 index 9af3a75..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isEmpty.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isEmpty as default } from '../dist/compat/predicate/isEmpty.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isEmpty.js b/sdks/nodejs/node_modules/es-toolkit/compat/isEmpty.js deleted file mode 100644 index 6ab15a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isEmpty.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isEmpty.js').isEmpty; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isEqual.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isEqual.d.ts deleted file mode 100644 index 9e0ff0e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isEqual.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isEqual as default } from '../dist/predicate/isEqual.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isEqual.js b/sdks/nodejs/node_modules/es-toolkit/compat/isEqual.js deleted file mode 100644 index 5cb45f3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isEqual.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/predicate/isEqual.js').isEqual; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isEqualWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isEqualWith.d.ts deleted file mode 100644 index 20c4829..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isEqualWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isEqualWith as default } from '../dist/compat/predicate/isEqualWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isEqualWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/isEqualWith.js deleted file mode 100644 index cc8f8e2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isEqualWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isEqualWith.js').isEqualWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isError.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isError.d.ts deleted file mode 100644 index e2fd197..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isError.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isError as default } from '../dist/compat/predicate/isError.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isError.js b/sdks/nodejs/node_modules/es-toolkit/compat/isError.js deleted file mode 100644 index f7fc01f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isError.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isError.js').isError; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isFinite.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isFinite.d.ts deleted file mode 100644 index 28006a1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isFinite.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isFinite as default } from '../dist/compat/predicate/isFinite.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isFinite.js b/sdks/nodejs/node_modules/es-toolkit/compat/isFinite.js deleted file mode 100644 index 58856e5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isFinite.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isFinite.js').isFinite; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isFunction.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isFunction.d.ts deleted file mode 100644 index fb4e485..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isFunction.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isFunction as default } from '../dist/predicate/isFunction.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isFunction.js b/sdks/nodejs/node_modules/es-toolkit/compat/isFunction.js deleted file mode 100644 index 2234cec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isFunction.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/predicate/isFunction.js').isFunction; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isInteger.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isInteger.d.ts deleted file mode 100644 index 8f276a0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isInteger.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isInteger as default } from '../dist/compat/predicate/isInteger.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isInteger.js b/sdks/nodejs/node_modules/es-toolkit/compat/isInteger.js deleted file mode 100644 index 141ed8c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isInteger.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isInteger.js').isInteger; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isLength.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isLength.d.ts deleted file mode 100644 index cf7d3fc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isLength.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isLength as default } from '../dist/predicate/isLength.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isLength.js b/sdks/nodejs/node_modules/es-toolkit/compat/isLength.js deleted file mode 100644 index 36226bc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isLength.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/predicate/isLength.js').isLength; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isMap.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isMap.d.ts deleted file mode 100644 index bfe8598..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isMap.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isMap as default } from '../dist/compat/predicate/isMap.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isMap.js b/sdks/nodejs/node_modules/es-toolkit/compat/isMap.js deleted file mode 100644 index c2e9969..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isMap.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isMap.js').isMap; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isMatch.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isMatch.d.ts deleted file mode 100644 index 7b83dcb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isMatch.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isMatch as default } from '../dist/compat/predicate/isMatch.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isMatch.js b/sdks/nodejs/node_modules/es-toolkit/compat/isMatch.js deleted file mode 100644 index 9d44e67..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isMatch.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isMatch.js').isMatch; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isMatchWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isMatchWith.d.ts deleted file mode 100644 index 4183080..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isMatchWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isMatchWith as default } from '../dist/compat/predicate/isMatchWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isMatchWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/isMatchWith.js deleted file mode 100644 index 960cab1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isMatchWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isMatchWith.js').isMatchWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isNaN.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isNaN.d.ts deleted file mode 100644 index 8ca3741..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isNaN.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isNaN as default } from '../dist/compat/predicate/isNaN.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isNaN.js b/sdks/nodejs/node_modules/es-toolkit/compat/isNaN.js deleted file mode 100644 index 20074c3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isNaN.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isNaN.js').isNaN; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isNative.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isNative.d.ts deleted file mode 100644 index a24c82b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isNative.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isNative as default } from '../dist/compat/predicate/isNative.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isNative.js b/sdks/nodejs/node_modules/es-toolkit/compat/isNative.js deleted file mode 100644 index cf7cf13..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isNative.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isNative.js').isNative; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isNil.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isNil.d.ts deleted file mode 100644 index 4fe5ed4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isNil.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isNil as default } from '../dist/compat/predicate/isNil.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isNil.js b/sdks/nodejs/node_modules/es-toolkit/compat/isNil.js deleted file mode 100644 index 6cd495b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isNil.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isNil.js').isNil; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isNull.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isNull.d.ts deleted file mode 100644 index fa4fa64..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isNull.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isNull as default } from '../dist/predicate/isNull.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isNull.js b/sdks/nodejs/node_modules/es-toolkit/compat/isNull.js deleted file mode 100644 index 927223a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isNull.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/predicate/isNull.js').isNull; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isNumber.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isNumber.d.ts deleted file mode 100644 index b83bb62..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isNumber.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isNumber as default } from '../dist/compat/predicate/isNumber.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isNumber.js b/sdks/nodejs/node_modules/es-toolkit/compat/isNumber.js deleted file mode 100644 index 69da17b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isNumber.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isNumber.js').isNumber; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isObject.d.ts deleted file mode 100644 index 6f1fdd2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isObject.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isObject as default } from '../dist/compat/predicate/isObject.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isObject.js b/sdks/nodejs/node_modules/es-toolkit/compat/isObject.js deleted file mode 100644 index 35ecb47..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isObject.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isObject.js').isObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isObjectLike.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isObjectLike.d.ts deleted file mode 100644 index 95c1b2a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isObjectLike.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isObjectLike as default } from '../dist/compat/predicate/isObjectLike.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isObjectLike.js b/sdks/nodejs/node_modules/es-toolkit/compat/isObjectLike.js deleted file mode 100644 index 2466f3b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isObjectLike.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isObjectLike.js').isObjectLike; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isPlainObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isPlainObject.d.ts deleted file mode 100644 index d368c9a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isPlainObject.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isPlainObject as default } from '../dist/compat/predicate/isPlainObject.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isPlainObject.js b/sdks/nodejs/node_modules/es-toolkit/compat/isPlainObject.js deleted file mode 100644 index 825f15c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isPlainObject.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isPlainObject.js').isPlainObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isRegExp.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isRegExp.d.ts deleted file mode 100644 index a96a56e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isRegExp.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isRegExp as default } from '../dist/compat/predicate/isRegExp.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isRegExp.js b/sdks/nodejs/node_modules/es-toolkit/compat/isRegExp.js deleted file mode 100644 index 2d7a1f0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isRegExp.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isRegExp.js').isRegExp; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isSafeInteger.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isSafeInteger.d.ts deleted file mode 100644 index 719024e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isSafeInteger.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isSafeInteger as default } from '../dist/compat/predicate/isSafeInteger.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isSafeInteger.js b/sdks/nodejs/node_modules/es-toolkit/compat/isSafeInteger.js deleted file mode 100644 index 21f23cd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isSafeInteger.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isSafeInteger.js').isSafeInteger; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isSet.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isSet.d.ts deleted file mode 100644 index 0253d5a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isSet.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isSet as default } from '../dist/compat/predicate/isSet.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isSet.js b/sdks/nodejs/node_modules/es-toolkit/compat/isSet.js deleted file mode 100644 index 7ee21e6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isSet.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isSet.js').isSet; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isString.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isString.d.ts deleted file mode 100644 index 3a5e723..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isString.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isString as default } from '../dist/compat/predicate/isString.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isString.js b/sdks/nodejs/node_modules/es-toolkit/compat/isString.js deleted file mode 100644 index 6524ced..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isString.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isString.js').isString; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isSymbol.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isSymbol.d.ts deleted file mode 100644 index 7030188..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isSymbol.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isSymbol as default } from '../dist/compat/predicate/isSymbol.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isSymbol.js b/sdks/nodejs/node_modules/es-toolkit/compat/isSymbol.js deleted file mode 100644 index 18d1152..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isSymbol.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isSymbol.js').isSymbol; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isTypedArray.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isTypedArray.d.ts deleted file mode 100644 index 4e4f493..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isTypedArray.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isTypedArray as default } from '../dist/compat/predicate/isTypedArray.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isTypedArray.js b/sdks/nodejs/node_modules/es-toolkit/compat/isTypedArray.js deleted file mode 100644 index 79bd921..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isTypedArray.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isTypedArray.js').isTypedArray; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isUndefined.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isUndefined.d.ts deleted file mode 100644 index 5bc15d1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isUndefined.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isUndefined as default } from '../dist/predicate/isUndefined.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isUndefined.js b/sdks/nodejs/node_modules/es-toolkit/compat/isUndefined.js deleted file mode 100644 index db7e35c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isUndefined.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/predicate/isUndefined.js').isUndefined; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isWeakMap.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isWeakMap.d.ts deleted file mode 100644 index 90e6fa7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isWeakMap.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isWeakMap as default } from '../dist/compat/predicate/isWeakMap.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isWeakMap.js b/sdks/nodejs/node_modules/es-toolkit/compat/isWeakMap.js deleted file mode 100644 index 35e0048..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isWeakMap.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isWeakMap.js').isWeakMap; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isWeakSet.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/isWeakSet.d.ts deleted file mode 100644 index de8b80e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isWeakSet.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { isWeakSet as default } from '../dist/compat/predicate/isWeakSet.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/isWeakSet.js b/sdks/nodejs/node_modules/es-toolkit/compat/isWeakSet.js deleted file mode 100644 index 3af817d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/isWeakSet.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/isWeakSet.js').isWeakSet; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/iteratee.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/iteratee.d.ts deleted file mode 100644 index 48d0a7b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/iteratee.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { iteratee as default } from '../dist/compat/util/iteratee.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/iteratee.js b/sdks/nodejs/node_modules/es-toolkit/compat/iteratee.js deleted file mode 100644 index 271bc39..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/iteratee.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/iteratee.js').iteratee; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/join.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/join.d.ts deleted file mode 100644 index e228612..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/join.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { join as default } from '../dist/compat/array/join.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/join.js b/sdks/nodejs/node_modules/es-toolkit/compat/join.js deleted file mode 100644 index 43cb4fc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/join.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/join.js').join; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/kebabCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/kebabCase.d.ts deleted file mode 100644 index 2e6a3de..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/kebabCase.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { kebabCase as default } from '../dist/compat/string/kebabCase.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/kebabCase.js b/sdks/nodejs/node_modules/es-toolkit/compat/kebabCase.js deleted file mode 100644 index fe516ca..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/kebabCase.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/kebabCase.js').kebabCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/keyBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/keyBy.d.ts deleted file mode 100644 index 3b31d23..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/keyBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { keyBy as default } from '../dist/compat/array/keyBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/keyBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/keyBy.js deleted file mode 100644 index b512ce5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/keyBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/keyBy.js').keyBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/keys.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/keys.d.ts deleted file mode 100644 index d50c166..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/keys.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { keys as default } from '../dist/compat/object/keys.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/keys.js b/sdks/nodejs/node_modules/es-toolkit/compat/keys.js deleted file mode 100644 index 2724192..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/keys.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/keys.js').keys; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/keysIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/keysIn.d.ts deleted file mode 100644 index 2534b93..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/keysIn.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { keysIn as default } from '../dist/compat/object/keysIn.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/keysIn.js b/sdks/nodejs/node_modules/es-toolkit/compat/keysIn.js deleted file mode 100644 index ed0d3b2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/keysIn.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/keysIn.js').keysIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/last.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/last.d.ts deleted file mode 100644 index a965b6c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/last.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { last as default } from '../dist/compat/array/last.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/last.js b/sdks/nodejs/node_modules/es-toolkit/compat/last.js deleted file mode 100644 index d692cad..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/last.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/last.js').last; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/lastIndexOf.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/lastIndexOf.d.ts deleted file mode 100644 index b62fd33..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/lastIndexOf.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { lastIndexOf as default } from '../dist/compat/array/lastIndexOf.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/lastIndexOf.js b/sdks/nodejs/node_modules/es-toolkit/compat/lastIndexOf.js deleted file mode 100644 index 1c51d42..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/lastIndexOf.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/lastIndexOf.js').lastIndexOf; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/lowerCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/lowerCase.d.ts deleted file mode 100644 index c94febe..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/lowerCase.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { lowerCase as default } from '../dist/compat/string/lowerCase.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/lowerCase.js b/sdks/nodejs/node_modules/es-toolkit/compat/lowerCase.js deleted file mode 100644 index 6f3c7e0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/lowerCase.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/lowerCase.js').lowerCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/lowerFirst.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/lowerFirst.d.ts deleted file mode 100644 index 9028a16..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/lowerFirst.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { lowerFirst as default } from '../dist/compat/string/lowerFirst.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/lowerFirst.js b/sdks/nodejs/node_modules/es-toolkit/compat/lowerFirst.js deleted file mode 100644 index 40c6036..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/lowerFirst.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/lowerFirst.js').lowerFirst; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/lt.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/lt.d.ts deleted file mode 100644 index 47de8c9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/lt.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { lt as default } from '../dist/compat/util/lt.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/lt.js b/sdks/nodejs/node_modules/es-toolkit/compat/lt.js deleted file mode 100644 index a4fed02..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/lt.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/lt.js').lt; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/lte.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/lte.d.ts deleted file mode 100644 index ea87cf3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/lte.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { lte as default } from '../dist/compat/util/lte.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/lte.js b/sdks/nodejs/node_modules/es-toolkit/compat/lte.js deleted file mode 100644 index 8af30f1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/lte.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/lte.js').lte; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/map.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/map.d.ts deleted file mode 100644 index 64dad44..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/map.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { map as default } from '../dist/compat/array/map.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/map.js b/sdks/nodejs/node_modules/es-toolkit/compat/map.js deleted file mode 100644 index a18a00e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/map.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/map.js').map; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/mapKeys.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/mapKeys.d.ts deleted file mode 100644 index 714cf3b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/mapKeys.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { mapKeys as default } from '../dist/compat/object/mapKeys.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/mapKeys.js b/sdks/nodejs/node_modules/es-toolkit/compat/mapKeys.js deleted file mode 100644 index 83cdfd7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/mapKeys.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/mapKeys.js').mapKeys; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/mapValues.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/mapValues.d.ts deleted file mode 100644 index 5f7c236..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/mapValues.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { mapValues as default } from '../dist/compat/object/mapValues.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/mapValues.js b/sdks/nodejs/node_modules/es-toolkit/compat/mapValues.js deleted file mode 100644 index 47bff7a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/mapValues.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/mapValues.js').mapValues; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/matches.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/matches.d.ts deleted file mode 100644 index 7db01ab..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/matches.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { matches as default } from '../dist/compat/predicate/matches.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/matches.js b/sdks/nodejs/node_modules/es-toolkit/compat/matches.js deleted file mode 100644 index 2e41870..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/matches.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/matches.js').matches; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/matchesProperty.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/matchesProperty.d.ts deleted file mode 100644 index 6499c83..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/matchesProperty.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { matchesProperty as default } from '../dist/compat/predicate/matchesProperty.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/matchesProperty.js b/sdks/nodejs/node_modules/es-toolkit/compat/matchesProperty.js deleted file mode 100644 index afc34d0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/matchesProperty.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/predicate/matchesProperty.js').matchesProperty; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/max.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/max.d.ts deleted file mode 100644 index 93be531..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/max.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { max as default } from '../dist/compat/math/max.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/max.js b/sdks/nodejs/node_modules/es-toolkit/compat/max.js deleted file mode 100644 index 51297d7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/max.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/max.js').max; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/maxBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/maxBy.d.ts deleted file mode 100644 index 9d9a904..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/maxBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { maxBy as default } from '../dist/compat/math/maxBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/maxBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/maxBy.js deleted file mode 100644 index 6d76ad3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/maxBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/maxBy.js').maxBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/mean.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/mean.d.ts deleted file mode 100644 index af5f41f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/mean.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { mean as default } from '../dist/compat/math/mean.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/mean.js b/sdks/nodejs/node_modules/es-toolkit/compat/mean.js deleted file mode 100644 index fe8f77f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/mean.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/mean.js').mean; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/meanBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/meanBy.d.ts deleted file mode 100644 index 0245ad6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/meanBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { meanBy as default } from '../dist/compat/math/meanBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/meanBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/meanBy.js deleted file mode 100644 index f59da9c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/meanBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/meanBy.js').meanBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/memoize.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/memoize.d.ts deleted file mode 100644 index 3b87702..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/memoize.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { memoize as default } from '../dist/compat/function/memoize.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/memoize.js b/sdks/nodejs/node_modules/es-toolkit/compat/memoize.js deleted file mode 100644 index 4d1bb9a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/memoize.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/memoize.js').memoize; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/merge.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/merge.d.ts deleted file mode 100644 index 5f28af2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/merge.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { merge as default } from '../dist/compat/object/merge.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/merge.js b/sdks/nodejs/node_modules/es-toolkit/compat/merge.js deleted file mode 100644 index 0bfbba5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/merge.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/merge.js').merge; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/mergeWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/mergeWith.d.ts deleted file mode 100644 index 185c9a3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/mergeWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { mergeWith as default } from '../dist/compat/object/mergeWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/mergeWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/mergeWith.js deleted file mode 100644 index 61e91c9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/mergeWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/mergeWith.js').mergeWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/method.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/method.d.ts deleted file mode 100644 index b5ece0d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/method.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { method as default } from '../dist/compat/util/method.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/method.js b/sdks/nodejs/node_modules/es-toolkit/compat/method.js deleted file mode 100644 index 70fdd18..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/method.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/method.js').method; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/methodOf.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/methodOf.d.ts deleted file mode 100644 index 3c60364..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/methodOf.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { methodOf as default } from '../dist/compat/util/methodOf.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/methodOf.js b/sdks/nodejs/node_modules/es-toolkit/compat/methodOf.js deleted file mode 100644 index e938636..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/methodOf.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/methodOf.js').methodOf; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/min.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/min.d.ts deleted file mode 100644 index 07137c6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/min.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { min as default } from '../dist/compat/math/min.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/min.js b/sdks/nodejs/node_modules/es-toolkit/compat/min.js deleted file mode 100644 index 104a892..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/min.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/min.js').min; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/minBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/minBy.d.ts deleted file mode 100644 index 35c21ed..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/minBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { minBy as default } from '../dist/compat/math/minBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/minBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/minBy.js deleted file mode 100644 index eee9387..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/minBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/minBy.js').minBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/multiply.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/multiply.d.ts deleted file mode 100644 index fd48756..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/multiply.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { multiply as default } from '../dist/compat/math/multiply.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/multiply.js b/sdks/nodejs/node_modules/es-toolkit/compat/multiply.js deleted file mode 100644 index 6f5e6bd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/multiply.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/multiply.js').multiply; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/negate.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/negate.d.ts deleted file mode 100644 index 942a6e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/negate.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { negate as default } from '../dist/compat/function/negate.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/negate.js b/sdks/nodejs/node_modules/es-toolkit/compat/negate.js deleted file mode 100644 index 4b11fa3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/negate.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/negate.js').negate; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/noop.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/noop.d.ts deleted file mode 100644 index c4ce7b4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/noop.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { noop as default } from '../dist/function/noop.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/noop.js b/sdks/nodejs/node_modules/es-toolkit/compat/noop.js deleted file mode 100644 index 2e1fa8d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/noop.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/function/noop.js').noop; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/now.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/now.d.ts deleted file mode 100644 index 9ab491c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/now.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { now as default } from '../dist/compat/util/now.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/now.js b/sdks/nodejs/node_modules/es-toolkit/compat/now.js deleted file mode 100644 index 386ba47..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/now.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/now.js').now; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/nth.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/nth.d.ts deleted file mode 100644 index fea35df..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/nth.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { nth as default } from '../dist/compat/array/nth.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/nth.js b/sdks/nodejs/node_modules/es-toolkit/compat/nth.js deleted file mode 100644 index 2f83fd3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/nth.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/nth.js').nth; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/nthArg.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/nthArg.d.ts deleted file mode 100644 index 856129f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/nthArg.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { nthArg as default } from '../dist/compat/function/nthArg.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/nthArg.js b/sdks/nodejs/node_modules/es-toolkit/compat/nthArg.js deleted file mode 100644 index 16a4fba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/nthArg.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/nthArg.js').nthArg; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/omit.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/omit.d.ts deleted file mode 100644 index 6fd0987..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/omit.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { omit as default } from '../dist/compat/object/omit.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/omit.js b/sdks/nodejs/node_modules/es-toolkit/compat/omit.js deleted file mode 100644 index 4bcf211..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/omit.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/omit.js').omit; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/omitBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/omitBy.d.ts deleted file mode 100644 index 160cc47..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/omitBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { omitBy as default } from '../dist/compat/object/omitBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/omitBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/omitBy.js deleted file mode 100644 index 8aa1417..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/omitBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/omitBy.js').omitBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/once.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/once.d.ts deleted file mode 100644 index ae057a1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/once.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { once as default } from '../dist/function/once.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/once.js b/sdks/nodejs/node_modules/es-toolkit/compat/once.js deleted file mode 100644 index f8e9b76..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/once.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/function/once.js').once; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/orderBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/orderBy.d.ts deleted file mode 100644 index fc3dac3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/orderBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { orderBy as default } from '../dist/compat/array/orderBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/orderBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/orderBy.js deleted file mode 100644 index 1586f48..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/orderBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/orderBy.js').orderBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/over.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/over.d.ts deleted file mode 100644 index 40b9a1c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/over.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { over as default } from '../dist/compat/util/over.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/over.js b/sdks/nodejs/node_modules/es-toolkit/compat/over.js deleted file mode 100644 index 29f30bc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/over.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/over.js').over; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/overArgs.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/overArgs.d.ts deleted file mode 100644 index 6abaf97..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/overArgs.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { overArgs as default } from '../dist/compat/function/overArgs.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/overArgs.js b/sdks/nodejs/node_modules/es-toolkit/compat/overArgs.js deleted file mode 100644 index 95faee1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/overArgs.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/overArgs.js').overArgs; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/overEvery.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/overEvery.d.ts deleted file mode 100644 index 6a9919a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/overEvery.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { overEvery as default } from '../dist/compat/util/overEvery.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/overEvery.js b/sdks/nodejs/node_modules/es-toolkit/compat/overEvery.js deleted file mode 100644 index 42c32f4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/overEvery.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/overEvery.js').overEvery; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/overSome.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/overSome.d.ts deleted file mode 100644 index d43a266..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/overSome.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { overSome as default } from '../dist/compat/util/overSome.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/overSome.js b/sdks/nodejs/node_modules/es-toolkit/compat/overSome.js deleted file mode 100644 index d9bae69..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/overSome.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/overSome.js').overSome; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pad.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/pad.d.ts deleted file mode 100644 index 2cbe7b0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pad.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { pad as default } from '../dist/compat/string/pad.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pad.js b/sdks/nodejs/node_modules/es-toolkit/compat/pad.js deleted file mode 100644 index 459dd97..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pad.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/pad.js').pad; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/padEnd.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/padEnd.d.ts deleted file mode 100644 index 132d7b0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/padEnd.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { padEnd as default } from '../dist/compat/string/padEnd.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/padEnd.js b/sdks/nodejs/node_modules/es-toolkit/compat/padEnd.js deleted file mode 100644 index 14baa9b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/padEnd.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/padEnd.js').padEnd; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/padStart.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/padStart.d.ts deleted file mode 100644 index f5cb9f0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/padStart.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { padStart as default } from '../dist/compat/string/padStart.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/padStart.js b/sdks/nodejs/node_modules/es-toolkit/compat/padStart.js deleted file mode 100644 index 2653e7b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/padStart.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/padStart.js').padStart; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/parseInt.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/parseInt.d.ts deleted file mode 100644 index bb69bbc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/parseInt.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { parseInt as default } from '../dist/compat/math/parseInt.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/parseInt.js b/sdks/nodejs/node_modules/es-toolkit/compat/parseInt.js deleted file mode 100644 index 9dd1428..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/parseInt.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/parseInt.js').parseInt; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/partial.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/partial.d.ts deleted file mode 100644 index c2d3c66..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/partial.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { partial as default } from '../dist/compat/function/partial.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/partial.js b/sdks/nodejs/node_modules/es-toolkit/compat/partial.js deleted file mode 100644 index 87a33d1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/partial.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/partial.js').partial; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/partialRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/partialRight.d.ts deleted file mode 100644 index 428c6f1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/partialRight.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { partialRight as default } from '../dist/compat/function/partialRight.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/partialRight.js b/sdks/nodejs/node_modules/es-toolkit/compat/partialRight.js deleted file mode 100644 index 2581d82..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/partialRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/partialRight.js').partialRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/partition.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/partition.d.ts deleted file mode 100644 index 7d70e2e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/partition.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { partition as default } from '../dist/compat/array/partition.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/partition.js b/sdks/nodejs/node_modules/es-toolkit/compat/partition.js deleted file mode 100644 index a048575..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/partition.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/partition.js').partition; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pick.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/pick.d.ts deleted file mode 100644 index 96990ad..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pick.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { pick as default } from '../dist/compat/object/pick.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pick.js b/sdks/nodejs/node_modules/es-toolkit/compat/pick.js deleted file mode 100644 index cbce86b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pick.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/pick.js').pick; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pickBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/pickBy.d.ts deleted file mode 100644 index 87aed15..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pickBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { pickBy as default } from '../dist/compat/object/pickBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pickBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/pickBy.js deleted file mode 100644 index 37844ad..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pickBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/pickBy.js').pickBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/property.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/property.d.ts deleted file mode 100644 index 92bcf62..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/property.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { property as default } from '../dist/compat/object/property.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/property.js b/sdks/nodejs/node_modules/es-toolkit/compat/property.js deleted file mode 100644 index 0979691..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/property.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/property.js').property; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/propertyOf.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/propertyOf.d.ts deleted file mode 100644 index 9399176..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/propertyOf.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { propertyOf as default } from '../dist/compat/object/propertyOf.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/propertyOf.js b/sdks/nodejs/node_modules/es-toolkit/compat/propertyOf.js deleted file mode 100644 index cec8000..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/propertyOf.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/propertyOf.js').propertyOf; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pull.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/pull.d.ts deleted file mode 100644 index 513e14f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pull.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { pull as default } from '../dist/compat/array/pull.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pull.js b/sdks/nodejs/node_modules/es-toolkit/compat/pull.js deleted file mode 100644 index 6d7b562..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pull.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/pull.js').pull; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pullAll.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/pullAll.d.ts deleted file mode 100644 index f782bb8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pullAll.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { pullAll as default } from '../dist/compat/array/pullAll.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pullAll.js b/sdks/nodejs/node_modules/es-toolkit/compat/pullAll.js deleted file mode 100644 index 74b7119..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pullAll.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/pullAll.js').pullAll; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pullAllBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/pullAllBy.d.ts deleted file mode 100644 index 7c5f977..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pullAllBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { pullAllBy as default } from '../dist/compat/array/pullAllBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pullAllBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/pullAllBy.js deleted file mode 100644 index 67cbbc5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pullAllBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/pullAllBy.js').pullAllBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pullAllWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/pullAllWith.d.ts deleted file mode 100644 index 405f773..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pullAllWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { pullAllWith as default } from '../dist/compat/array/pullAllWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pullAllWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/pullAllWith.js deleted file mode 100644 index 21f2d67..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pullAllWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/pullAllWith.js').pullAllWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pullAt.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/pullAt.d.ts deleted file mode 100644 index 3e89b0e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pullAt.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { pullAt as default } from '../dist/compat/array/pullAt.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/pullAt.js b/sdks/nodejs/node_modules/es-toolkit/compat/pullAt.js deleted file mode 100644 index 165f560..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/pullAt.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/pullAt.js').pullAt; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/random.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/random.d.ts deleted file mode 100644 index bd03d9d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/random.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { random as default } from '../dist/compat/math/random.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/random.js b/sdks/nodejs/node_modules/es-toolkit/compat/random.js deleted file mode 100644 index 0311ff2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/random.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/random.js').random; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/range.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/range.d.ts deleted file mode 100644 index 57c0bf0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/range.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { range as default } from '../dist/compat/math/range.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/range.js b/sdks/nodejs/node_modules/es-toolkit/compat/range.js deleted file mode 100644 index 11df130..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/range.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/range.js').range; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/rangeRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/rangeRight.d.ts deleted file mode 100644 index beb5a7c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/rangeRight.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { rangeRight as default } from '../dist/compat/math/rangeRight.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/rangeRight.js b/sdks/nodejs/node_modules/es-toolkit/compat/rangeRight.js deleted file mode 100644 index e78efb8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/rangeRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/rangeRight.js').rangeRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/rearg.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/rearg.d.ts deleted file mode 100644 index 3da0599..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/rearg.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { rearg as default } from '../dist/compat/function/rearg.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/rearg.js b/sdks/nodejs/node_modules/es-toolkit/compat/rearg.js deleted file mode 100644 index 4e626c5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/rearg.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/rearg.js').rearg; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/reduce.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/reduce.d.ts deleted file mode 100644 index 18af964..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/reduce.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { reduce as default } from '../dist/compat/array/reduce.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/reduce.js b/sdks/nodejs/node_modules/es-toolkit/compat/reduce.js deleted file mode 100644 index 3efd4e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/reduce.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/reduce.js').reduce; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/reduceRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/reduceRight.d.ts deleted file mode 100644 index bf94a64..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/reduceRight.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { reduceRight as default } from '../dist/compat/array/reduceRight.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/reduceRight.js b/sdks/nodejs/node_modules/es-toolkit/compat/reduceRight.js deleted file mode 100644 index a4ac529..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/reduceRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/reduceRight.js').reduceRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/reject.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/reject.d.ts deleted file mode 100644 index c04da12..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/reject.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { reject as default } from '../dist/compat/array/reject.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/reject.js b/sdks/nodejs/node_modules/es-toolkit/compat/reject.js deleted file mode 100644 index d70874d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/reject.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/reject.js').reject; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/remove.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/remove.d.ts deleted file mode 100644 index 064fa3f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/remove.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { remove as default } from '../dist/compat/array/remove.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/remove.js b/sdks/nodejs/node_modules/es-toolkit/compat/remove.js deleted file mode 100644 index dbf3a15..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/remove.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/remove.js').remove; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/repeat.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/repeat.d.ts deleted file mode 100644 index e29fe3a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/repeat.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { repeat as default } from '../dist/compat/string/repeat.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/repeat.js b/sdks/nodejs/node_modules/es-toolkit/compat/repeat.js deleted file mode 100644 index 455a103..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/repeat.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/repeat.js').repeat; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/replace.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/replace.d.ts deleted file mode 100644 index a47c96c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/replace.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { replace as default } from '../dist/compat/string/replace.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/replace.js b/sdks/nodejs/node_modules/es-toolkit/compat/replace.js deleted file mode 100644 index cb7b356..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/replace.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/replace.js').replace; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/rest.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/rest.d.ts deleted file mode 100644 index c862f95..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/rest.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { rest as default } from '../dist/compat/function/rest.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/rest.js b/sdks/nodejs/node_modules/es-toolkit/compat/rest.js deleted file mode 100644 index f306f6a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/rest.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/rest.js').rest; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/result.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/result.d.ts deleted file mode 100644 index 3a974e1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/result.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { result as default } from '../dist/compat/object/result.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/result.js b/sdks/nodejs/node_modules/es-toolkit/compat/result.js deleted file mode 100644 index 257a89f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/result.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/result.js').result; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/reverse.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/reverse.d.ts deleted file mode 100644 index 72980fa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/reverse.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { reverse as default } from '../dist/compat/array/reverse.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/reverse.js b/sdks/nodejs/node_modules/es-toolkit/compat/reverse.js deleted file mode 100644 index d4bcc90..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/reverse.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/reverse.js').reverse; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/round.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/round.d.ts deleted file mode 100644 index bc3ffc2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/round.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { round as default } from '../dist/compat/math/round.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/round.js b/sdks/nodejs/node_modules/es-toolkit/compat/round.js deleted file mode 100644 index a677137..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/round.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/round.js').round; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sample.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/sample.d.ts deleted file mode 100644 index 982693f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sample.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { sample as default } from '../dist/compat/array/sample.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sample.js b/sdks/nodejs/node_modules/es-toolkit/compat/sample.js deleted file mode 100644 index 303d021..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sample.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/sample.js').sample; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sampleSize.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/sampleSize.d.ts deleted file mode 100644 index c72b45e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sampleSize.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { sampleSize as default } from '../dist/compat/array/sampleSize.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sampleSize.js b/sdks/nodejs/node_modules/es-toolkit/compat/sampleSize.js deleted file mode 100644 index 3d7cb5d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sampleSize.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/sampleSize.js').sampleSize; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/set.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/set.d.ts deleted file mode 100644 index 2331a9d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/set.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { set as default } from '../dist/compat/object/set.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/set.js b/sdks/nodejs/node_modules/es-toolkit/compat/set.js deleted file mode 100644 index d81682b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/set.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/set.js').set; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/setWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/setWith.d.ts deleted file mode 100644 index f48f114..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/setWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { setWith as default } from '../dist/compat/object/setWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/setWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/setWith.js deleted file mode 100644 index 40c536e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/setWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/setWith.js').setWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/shuffle.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/shuffle.d.ts deleted file mode 100644 index 7b0a941..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/shuffle.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { shuffle as default } from '../dist/compat/array/shuffle.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/shuffle.js b/sdks/nodejs/node_modules/es-toolkit/compat/shuffle.js deleted file mode 100644 index 2f8edfd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/shuffle.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/shuffle.js').shuffle; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/size.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/size.d.ts deleted file mode 100644 index 9ff6f60..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/size.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { size as default } from '../dist/compat/array/size.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/size.js b/sdks/nodejs/node_modules/es-toolkit/compat/size.js deleted file mode 100644 index 37d2a74..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/size.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/size.js').size; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/slice.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/slice.d.ts deleted file mode 100644 index f93c7b9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/slice.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { slice as default } from '../dist/compat/array/slice.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/slice.js b/sdks/nodejs/node_modules/es-toolkit/compat/slice.js deleted file mode 100644 index 43f7c0c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/slice.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/slice.js').slice; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/snakeCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/snakeCase.d.ts deleted file mode 100644 index 6ae9fd1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/snakeCase.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { snakeCase as default } from '../dist/compat/string/snakeCase.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/snakeCase.js b/sdks/nodejs/node_modules/es-toolkit/compat/snakeCase.js deleted file mode 100644 index e681348..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/snakeCase.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/snakeCase.js').snakeCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/some.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/some.d.ts deleted file mode 100644 index cd7a126..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/some.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { some as default } from '../dist/compat/array/some.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/some.js b/sdks/nodejs/node_modules/es-toolkit/compat/some.js deleted file mode 100644 index 2fd9a06..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/some.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/some.js').some; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/sortBy.d.ts deleted file mode 100644 index 19bb251..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { sortBy as default } from '../dist/compat/array/sortBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/sortBy.js deleted file mode 100644 index c7b8c8c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/sortBy.js').sortBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndex.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndex.d.ts deleted file mode 100644 index 2977e1e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndex.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { sortedIndex as default } from '../dist/compat/array/sortedIndex.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndex.js b/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndex.js deleted file mode 100644 index a24030d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/sortedIndex.js').sortedIndex; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndexBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndexBy.d.ts deleted file mode 100644 index d74ccf4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndexBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { sortedIndexBy as default } from '../dist/compat/array/sortedIndexBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndexBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndexBy.js deleted file mode 100644 index 1417ca1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndexBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/sortedIndexBy.js').sortedIndexBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndexOf.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndexOf.d.ts deleted file mode 100644 index 695468b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndexOf.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { sortedIndexOf as default } from '../dist/compat/array/sortedIndexOf.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndexOf.js b/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndexOf.js deleted file mode 100644 index 89784a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortedIndexOf.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/sortedIndexOf.js').sortedIndexOf; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndex.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndex.d.ts deleted file mode 100644 index 59c4ee0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndex.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { sortedLastIndex as default } from '../dist/compat/array/sortedLastIndex.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndex.js b/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndex.js deleted file mode 100644 index b0028c3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/sortedLastIndex.js').sortedLastIndex; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndexBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndexBy.d.ts deleted file mode 100644 index 7b4d677..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndexBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { sortedLastIndexBy as default } from '../dist/compat/array/sortedLastIndexBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndexBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndexBy.js deleted file mode 100644 index d86c26b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndexBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/sortedLastIndexBy.js').sortedLastIndexBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndexOf.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndexOf.d.ts deleted file mode 100644 index 73a7796..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndexOf.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { sortedLastIndexOf as default } from '../dist/compat/array/sortedLastIndexOf.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndexOf.js b/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndexOf.js deleted file mode 100644 index 3a99b19..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sortedLastIndexOf.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/sortedLastIndexOf.js').sortedLastIndexOf; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/split.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/split.d.ts deleted file mode 100644 index ea83627..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/split.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { split as default } from '../dist/compat/string/split.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/split.js b/sdks/nodejs/node_modules/es-toolkit/compat/split.js deleted file mode 100644 index 9d23ed3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/split.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/split.js').split; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/spread.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/spread.d.ts deleted file mode 100644 index 8f4125d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/spread.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { spread as default } from '../dist/compat/function/spread.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/spread.js b/sdks/nodejs/node_modules/es-toolkit/compat/spread.js deleted file mode 100644 index 9e7d58e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/spread.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/spread.js').spread; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/startCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/startCase.d.ts deleted file mode 100644 index 0a0ff2e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/startCase.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { startCase as default } from '../dist/compat/string/startCase.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/startCase.js b/sdks/nodejs/node_modules/es-toolkit/compat/startCase.js deleted file mode 100644 index 4a4f6da..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/startCase.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/startCase.js').startCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/startsWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/startsWith.d.ts deleted file mode 100644 index 045ba5a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/startsWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { startsWith as default } from '../dist/compat/string/startsWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/startsWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/startsWith.js deleted file mode 100644 index 955b1c9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/startsWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/startsWith.js').startsWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/stubArray.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/stubArray.d.ts deleted file mode 100644 index 2ca7bfc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/stubArray.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { stubArray as default } from '../dist/compat/util/stubArray.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/stubArray.js b/sdks/nodejs/node_modules/es-toolkit/compat/stubArray.js deleted file mode 100644 index c7ab651..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/stubArray.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/stubArray.js').stubArray; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/stubFalse.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/stubFalse.d.ts deleted file mode 100644 index 34d79bf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/stubFalse.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { stubFalse as default } from '../dist/compat/util/stubFalse.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/stubFalse.js b/sdks/nodejs/node_modules/es-toolkit/compat/stubFalse.js deleted file mode 100644 index e8729a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/stubFalse.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/stubFalse.js').stubFalse; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/stubObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/stubObject.d.ts deleted file mode 100644 index 7f7022a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/stubObject.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { stubObject as default } from '../dist/compat/util/stubObject.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/stubObject.js b/sdks/nodejs/node_modules/es-toolkit/compat/stubObject.js deleted file mode 100644 index e9cfc7e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/stubObject.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/stubObject.js').stubObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/stubString.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/stubString.d.ts deleted file mode 100644 index 80d7ed5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/stubString.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { stubString as default } from '../dist/compat/util/stubString.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/stubString.js b/sdks/nodejs/node_modules/es-toolkit/compat/stubString.js deleted file mode 100644 index de98be9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/stubString.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/stubString.js').stubString; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/stubTrue.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/stubTrue.d.ts deleted file mode 100644 index dac1d68..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/stubTrue.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { stubTrue as default } from '../dist/compat/util/stubTrue.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/stubTrue.js b/sdks/nodejs/node_modules/es-toolkit/compat/stubTrue.js deleted file mode 100644 index 283b3b2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/stubTrue.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/stubTrue.js').stubTrue; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/subtract.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/subtract.d.ts deleted file mode 100644 index f7d1288..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/subtract.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { subtract as default } from '../dist/compat/math/subtract.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/subtract.js b/sdks/nodejs/node_modules/es-toolkit/compat/subtract.js deleted file mode 100644 index 797b728..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/subtract.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/subtract.js').subtract; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sum.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/sum.d.ts deleted file mode 100644 index 986fe02..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sum.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { sum as default } from '../dist/compat/math/sum.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sum.js b/sdks/nodejs/node_modules/es-toolkit/compat/sum.js deleted file mode 100644 index cbabc91..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sum.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/sum.js').sum; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sumBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/sumBy.d.ts deleted file mode 100644 index 04a679c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sumBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { sumBy as default } from '../dist/compat/math/sumBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/sumBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/sumBy.js deleted file mode 100644 index 3bb12d4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/sumBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/math/sumBy.js').sumBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/tail.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/tail.d.ts deleted file mode 100644 index bb2a11e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/tail.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { tail as default } from '../dist/compat/array/tail.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/tail.js b/sdks/nodejs/node_modules/es-toolkit/compat/tail.js deleted file mode 100644 index 857cae4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/tail.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/tail.js').tail; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/take.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/take.d.ts deleted file mode 100644 index 39eef6d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/take.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { take as default } from '../dist/compat/array/take.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/take.js b/sdks/nodejs/node_modules/es-toolkit/compat/take.js deleted file mode 100644 index e839acf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/take.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/take.js').take; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/takeRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/takeRight.d.ts deleted file mode 100644 index 166a8af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/takeRight.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { takeRight as default } from '../dist/compat/array/takeRight.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/takeRight.js b/sdks/nodejs/node_modules/es-toolkit/compat/takeRight.js deleted file mode 100644 index 159f9f3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/takeRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/takeRight.js').takeRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/takeRightWhile.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/takeRightWhile.d.ts deleted file mode 100644 index b47c1db..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/takeRightWhile.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { takeRightWhile as default } from '../dist/compat/array/takeRightWhile.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/takeRightWhile.js b/sdks/nodejs/node_modules/es-toolkit/compat/takeRightWhile.js deleted file mode 100644 index d8a8c1e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/takeRightWhile.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/takeRightWhile.js').takeRightWhile; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/takeWhile.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/takeWhile.d.ts deleted file mode 100644 index 286e83b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/takeWhile.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { takeWhile as default } from '../dist/compat/array/takeWhile.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/takeWhile.js b/sdks/nodejs/node_modules/es-toolkit/compat/takeWhile.js deleted file mode 100644 index 77ccab6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/takeWhile.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/takeWhile.js').takeWhile; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/template.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/template.d.ts deleted file mode 100644 index b9fe5e3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/template.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { template as default } from '../dist/compat/string/template.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/template.js b/sdks/nodejs/node_modules/es-toolkit/compat/template.js deleted file mode 100644 index b14c31e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/template.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/template.js').template; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/templateSettings.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/templateSettings.d.ts deleted file mode 100644 index 0ef9564..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/templateSettings.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { templateSettings as default } from '../dist/compat/string/templateSettings.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/templateSettings.js b/sdks/nodejs/node_modules/es-toolkit/compat/templateSettings.js deleted file mode 100644 index 358d712..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/templateSettings.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/templateSettings.js').templateSettings; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/throttle.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/throttle.d.ts deleted file mode 100644 index d541b24..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/throttle.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { throttle as default } from '../dist/compat/function/throttle.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/throttle.js b/sdks/nodejs/node_modules/es-toolkit/compat/throttle.js deleted file mode 100644 index 1bde2c2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/throttle.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/throttle.js').throttle; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/times.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/times.d.ts deleted file mode 100644 index d3ecd94..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/times.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { times as default } from '../dist/compat/util/times.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/times.js b/sdks/nodejs/node_modules/es-toolkit/compat/times.js deleted file mode 100644 index 6bc05c0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/times.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/times.js').times; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toArray.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toArray.d.ts deleted file mode 100644 index 6d4e0cd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toArray.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toArray as default } from '../dist/compat/util/toArray.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toArray.js b/sdks/nodejs/node_modules/es-toolkit/compat/toArray.js deleted file mode 100644 index b4a4888..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toArray.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/toArray.js').toArray; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toDefaulted.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toDefaulted.d.ts deleted file mode 100644 index 428c120..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toDefaulted.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toDefaulted as default } from '../dist/compat/object/toDefaulted.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toDefaulted.js b/sdks/nodejs/node_modules/es-toolkit/compat/toDefaulted.js deleted file mode 100644 index a68c209..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toDefaulted.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/toDefaulted.js').toDefaulted; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toFinite.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toFinite.d.ts deleted file mode 100644 index 6117405..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toFinite.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toFinite as default } from '../dist/compat/util/toFinite.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toFinite.js b/sdks/nodejs/node_modules/es-toolkit/compat/toFinite.js deleted file mode 100644 index eadf074..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toFinite.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/toFinite.js').toFinite; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toInteger.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toInteger.d.ts deleted file mode 100644 index aa2a021..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toInteger.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toInteger as default } from '../dist/compat/util/toInteger.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toInteger.js b/sdks/nodejs/node_modules/es-toolkit/compat/toInteger.js deleted file mode 100644 index 74b23b1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toInteger.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/toInteger.js').toInteger; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toLength.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toLength.d.ts deleted file mode 100644 index e7de8e6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toLength.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toLength as default } from '../dist/compat/util/toLength.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toLength.js b/sdks/nodejs/node_modules/es-toolkit/compat/toLength.js deleted file mode 100644 index ad7c11d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toLength.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/toLength.js').toLength; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toLower.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toLower.d.ts deleted file mode 100644 index 1f3e5df..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toLower.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toLower as default } from '../dist/compat/string/toLower.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toLower.js b/sdks/nodejs/node_modules/es-toolkit/compat/toLower.js deleted file mode 100644 index 283e933..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toLower.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/toLower.js').toLower; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toNumber.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toNumber.d.ts deleted file mode 100644 index 24db69c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toNumber.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toNumber as default } from '../dist/compat/util/toNumber.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toNumber.js b/sdks/nodejs/node_modules/es-toolkit/compat/toNumber.js deleted file mode 100644 index 483474a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toNumber.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/toNumber.js').toNumber; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toPairs.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toPairs.d.ts deleted file mode 100644 index 3feec39..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toPairs.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toPairs as default } from '../dist/compat/object/toPairs.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toPairs.js b/sdks/nodejs/node_modules/es-toolkit/compat/toPairs.js deleted file mode 100644 index 71b15c2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toPairs.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/toPairs.js').toPairs; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toPairsIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toPairsIn.d.ts deleted file mode 100644 index c06db4f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toPairsIn.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toPairsIn as default } from '../dist/compat/object/toPairsIn.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toPairsIn.js b/sdks/nodejs/node_modules/es-toolkit/compat/toPairsIn.js deleted file mode 100644 index 1308fa7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toPairsIn.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/toPairsIn.js').toPairsIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toPath.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toPath.d.ts deleted file mode 100644 index 84192bf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toPath.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toPath as default } from '../dist/compat/util/toPath.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toPath.js b/sdks/nodejs/node_modules/es-toolkit/compat/toPath.js deleted file mode 100644 index 4dfb79e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toPath.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/toPath.js').toPath; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toPlainObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toPlainObject.d.ts deleted file mode 100644 index 527bf05..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toPlainObject.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toPlainObject as default } from '../dist/compat/util/toPlainObject.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toPlainObject.js b/sdks/nodejs/node_modules/es-toolkit/compat/toPlainObject.js deleted file mode 100644 index 7a3b508..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toPlainObject.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/toPlainObject.js').toPlainObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toSafeInteger.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toSafeInteger.d.ts deleted file mode 100644 index 1ec10a2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toSafeInteger.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toSafeInteger as default } from '../dist/compat/util/toSafeInteger.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toSafeInteger.js b/sdks/nodejs/node_modules/es-toolkit/compat/toSafeInteger.js deleted file mode 100644 index bdd137e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toSafeInteger.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/toSafeInteger.js').toSafeInteger; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toString.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toString.d.ts deleted file mode 100644 index ab6ad7c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toString.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toString as default } from '../dist/compat/util/toString.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toString.js b/sdks/nodejs/node_modules/es-toolkit/compat/toString.js deleted file mode 100644 index 8ec882c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toString.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/toString.js').toString; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toUpper.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/toUpper.d.ts deleted file mode 100644 index 13e0881..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toUpper.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { toUpper as default } from '../dist/compat/string/toUpper.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/toUpper.js b/sdks/nodejs/node_modules/es-toolkit/compat/toUpper.js deleted file mode 100644 index 84d109d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/toUpper.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/toUpper.js').toUpper; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/transform.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/transform.d.ts deleted file mode 100644 index 33e10e4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/transform.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { transform as default } from '../dist/compat/object/transform.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/transform.js b/sdks/nodejs/node_modules/es-toolkit/compat/transform.js deleted file mode 100644 index b9388ae..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/transform.js').transform; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/trim.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/trim.d.ts deleted file mode 100644 index b81263e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/trim.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { trim as default } from '../dist/compat/string/trim.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/trim.js b/sdks/nodejs/node_modules/es-toolkit/compat/trim.js deleted file mode 100644 index 8888b16..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/trim.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/trim.js').trim; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/trimEnd.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/trimEnd.d.ts deleted file mode 100644 index 16181de..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/trimEnd.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { trimEnd as default } from '../dist/compat/string/trimEnd.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/trimEnd.js b/sdks/nodejs/node_modules/es-toolkit/compat/trimEnd.js deleted file mode 100644 index 8fedeaa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/trimEnd.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/trimEnd.js').trimEnd; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/trimStart.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/trimStart.d.ts deleted file mode 100644 index ceb2b5e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/trimStart.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { trimStart as default } from '../dist/compat/string/trimStart.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/trimStart.js b/sdks/nodejs/node_modules/es-toolkit/compat/trimStart.js deleted file mode 100644 index a1a65f4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/trimStart.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/trimStart.js').trimStart; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/truncate.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/truncate.d.ts deleted file mode 100644 index 9302a1c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/truncate.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { truncate as default } from '../dist/compat/string/truncate.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/truncate.js b/sdks/nodejs/node_modules/es-toolkit/compat/truncate.js deleted file mode 100644 index 0edd2eb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/truncate.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/truncate.js').truncate; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unary.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/unary.d.ts deleted file mode 100644 index 35b078c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unary.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { unary as default } from '../dist/function/unary.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unary.js b/sdks/nodejs/node_modules/es-toolkit/compat/unary.js deleted file mode 100644 index 4f101f7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unary.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/function/unary.js').unary; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unescape.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/unescape.d.ts deleted file mode 100644 index 964a324..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unescape.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { unescape as default } from '../dist/compat/string/unescape.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unescape.js b/sdks/nodejs/node_modules/es-toolkit/compat/unescape.js deleted file mode 100644 index 334b158..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unescape.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/unescape.js').unescape; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/union.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/union.d.ts deleted file mode 100644 index ee0ac07..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/union.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { union as default } from '../dist/compat/array/union.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/union.js b/sdks/nodejs/node_modules/es-toolkit/compat/union.js deleted file mode 100644 index 23e4423..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/union.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/union.js').union; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unionBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/unionBy.d.ts deleted file mode 100644 index d80ecdf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unionBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { unionBy as default } from '../dist/compat/array/unionBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unionBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/unionBy.js deleted file mode 100644 index 59ee26c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unionBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/unionBy.js').unionBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unionWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/unionWith.d.ts deleted file mode 100644 index aae589b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unionWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { unionWith as default } from '../dist/compat/array/unionWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unionWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/unionWith.js deleted file mode 100644 index 7e486ac..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unionWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/unionWith.js').unionWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/uniq.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/uniq.d.ts deleted file mode 100644 index c614482..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/uniq.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { uniq as default } from '../dist/compat/array/uniq.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/uniq.js b/sdks/nodejs/node_modules/es-toolkit/compat/uniq.js deleted file mode 100644 index fe9cf67..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/uniq.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/uniq.js').uniq; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/uniqBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/uniqBy.d.ts deleted file mode 100644 index 7e470eb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/uniqBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { uniqBy as default } from '../dist/compat/array/uniqBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/uniqBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/uniqBy.js deleted file mode 100644 index 9f1174d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/uniqBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/uniqBy.js').uniqBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/uniqWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/uniqWith.d.ts deleted file mode 100644 index a0271c1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/uniqWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { uniqWith as default } from '../dist/compat/array/uniqWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/uniqWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/uniqWith.js deleted file mode 100644 index 158a67a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/uniqWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/uniqWith.js').uniqWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/uniqueId.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/uniqueId.d.ts deleted file mode 100644 index 1635f8a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/uniqueId.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { uniqueId as default } from '../dist/compat/util/uniqueId.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/uniqueId.js b/sdks/nodejs/node_modules/es-toolkit/compat/uniqueId.js deleted file mode 100644 index 71b7525..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/uniqueId.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/util/uniqueId.js').uniqueId; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unset.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/unset.d.ts deleted file mode 100644 index b83b5d5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unset.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { unset as default } from '../dist/compat/object/unset.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unset.js b/sdks/nodejs/node_modules/es-toolkit/compat/unset.js deleted file mode 100644 index 88e734e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unset.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/unset.js').unset; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unzip.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/unzip.d.ts deleted file mode 100644 index b104cd1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unzip.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { unzip as default } from '../dist/compat/array/unzip.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unzip.js b/sdks/nodejs/node_modules/es-toolkit/compat/unzip.js deleted file mode 100644 index 6ed37e2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unzip.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/unzip.js').unzip; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unzipWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/unzipWith.d.ts deleted file mode 100644 index bcdbfa9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unzipWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { unzipWith as default } from '../dist/compat/array/unzipWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/unzipWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/unzipWith.js deleted file mode 100644 index 9fefaba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/unzipWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/unzipWith.js').unzipWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/update.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/update.d.ts deleted file mode 100644 index 01f5ff7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/update.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { update as default } from '../dist/compat/object/update.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/update.js b/sdks/nodejs/node_modules/es-toolkit/compat/update.js deleted file mode 100644 index 96cf555..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/update.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/update.js').update; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/updateWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/updateWith.d.ts deleted file mode 100644 index ccc99cb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/updateWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { updateWith as default } from '../dist/compat/object/updateWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/updateWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/updateWith.js deleted file mode 100644 index 6f43bab..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/updateWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/updateWith.js').updateWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/upperCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/upperCase.d.ts deleted file mode 100644 index 67cbbca..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/upperCase.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { upperCase as default } from '../dist/compat/string/upperCase.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/upperCase.js b/sdks/nodejs/node_modules/es-toolkit/compat/upperCase.js deleted file mode 100644 index bfa4d7f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/upperCase.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/upperCase.js').upperCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/upperFirst.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/upperFirst.d.ts deleted file mode 100644 index a596033..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/upperFirst.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { upperFirst as default } from '../dist/compat/string/upperFirst.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/upperFirst.js b/sdks/nodejs/node_modules/es-toolkit/compat/upperFirst.js deleted file mode 100644 index f463822..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/upperFirst.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/upperFirst.js').upperFirst; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/values.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/values.d.ts deleted file mode 100644 index 165db9d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/values.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { values as default } from '../dist/compat/object/values.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/values.js b/sdks/nodejs/node_modules/es-toolkit/compat/values.js deleted file mode 100644 index 1b74667..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/values.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/values.js').values; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/valuesIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/valuesIn.d.ts deleted file mode 100644 index 83134af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/valuesIn.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { valuesIn as default } from '../dist/compat/object/valuesIn.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/valuesIn.js b/sdks/nodejs/node_modules/es-toolkit/compat/valuesIn.js deleted file mode 100644 index ad9dc4c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/valuesIn.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/object/valuesIn.js').valuesIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/without.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/without.d.ts deleted file mode 100644 index 7c6fbeb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/without.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { without as default } from '../dist/compat/array/without.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/without.js b/sdks/nodejs/node_modules/es-toolkit/compat/without.js deleted file mode 100644 index bbc76e0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/without.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/without.js').without; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/words.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/words.d.ts deleted file mode 100644 index e9aeaf6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/words.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { words as default } from '../dist/compat/string/words.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/words.js b/sdks/nodejs/node_modules/es-toolkit/compat/words.js deleted file mode 100644 index 692d4ee..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/words.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/string/words.js').words; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/wrap.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/wrap.d.ts deleted file mode 100644 index 3d4ecdb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/wrap.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { wrap as default } from '../dist/compat/function/wrap.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/wrap.js b/sdks/nodejs/node_modules/es-toolkit/compat/wrap.js deleted file mode 100644 index 72186d9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/wrap.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/function/wrap.js').wrap; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/xor.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/xor.d.ts deleted file mode 100644 index 0df42f8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/xor.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { xor as default } from '../dist/compat/array/xor.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/xor.js b/sdks/nodejs/node_modules/es-toolkit/compat/xor.js deleted file mode 100644 index b678b10..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/xor.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/xor.js').xor; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/xorBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/xorBy.d.ts deleted file mode 100644 index b971238..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/xorBy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { xorBy as default } from '../dist/compat/array/xorBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/xorBy.js b/sdks/nodejs/node_modules/es-toolkit/compat/xorBy.js deleted file mode 100644 index 24e7647..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/xorBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/xorBy.js').xorBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/xorWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/xorWith.d.ts deleted file mode 100644 index ae202d5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/xorWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { xorWith as default } from '../dist/compat/array/xorWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/xorWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/xorWith.js deleted file mode 100644 index 32bf76f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/xorWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/xorWith.js').xorWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/zip.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/zip.d.ts deleted file mode 100644 index 6598138..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/zip.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { zip as default } from '../dist/compat/array/zip.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/zip.js b/sdks/nodejs/node_modules/es-toolkit/compat/zip.js deleted file mode 100644 index d928433..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/zip.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/zip.js').zip; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/zipObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/zipObject.d.ts deleted file mode 100644 index e9dd14a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/zipObject.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { zipObject as default } from '../dist/compat/array/zipObject.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/zipObject.js b/sdks/nodejs/node_modules/es-toolkit/compat/zipObject.js deleted file mode 100644 index 679828d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/zipObject.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/zipObject.js').zipObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/zipObjectDeep.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/zipObjectDeep.d.ts deleted file mode 100644 index b0ad24d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/zipObjectDeep.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { zipObjectDeep as default } from '../dist/compat/array/zipObjectDeep.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/zipObjectDeep.js b/sdks/nodejs/node_modules/es-toolkit/compat/zipObjectDeep.js deleted file mode 100644 index b9cfe4c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/zipObjectDeep.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/zipObjectDeep.js').zipObjectDeep; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/zipWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/compat/zipWith.d.ts deleted file mode 100644 index 808a89b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/zipWith.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { zipWith as default } from '../dist/compat/array/zipWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/compat/zipWith.js b/sdks/nodejs/node_modules/es-toolkit/compat/zipWith.js deleted file mode 100644 index 03f2f8c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/compat/zipWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../dist/compat/array/zipWith.js').zipWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/compareValues.js b/sdks/nodejs/node_modules/es-toolkit/dist/_internal/compareValues.js deleted file mode 100644 index bd24cd4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/compareValues.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function compareValues(a, b, order) { - if (a < b) { - return order === 'asc' ? -1 : 1; - } - if (a > b) { - return order === 'asc' ? 1 : -1; - } - return 0; -} - -exports.compareValues = compareValues; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/compareValues.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/_internal/compareValues.mjs deleted file mode 100644 index f4ca391..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/compareValues.mjs +++ /dev/null @@ -1,11 +0,0 @@ -function compareValues(a, b, order) { - if (a < b) { - return order === 'asc' ? -1 : 1; - } - if (a > b) { - return order === 'asc' ? 1 : -1; - } - return 0; -} - -export { compareValues }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.d.mts deleted file mode 100644 index a5d40a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Performs a `SameValueZero` comparison between two values to determine if they are equivalent. - * - * @param {any} value - The value to compare. - * @param {any} other - The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * - * @example - * eq(1, 1); // true - * eq(0, -0); // true - * eq(NaN, NaN); // true - * eq('a', Object('a')); // false - */ -declare function isEqualsSameValueZero(value: any, other: any): boolean; - -export { isEqualsSameValueZero }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.d.ts deleted file mode 100644 index a5d40a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Performs a `SameValueZero` comparison between two values to determine if they are equivalent. - * - * @param {any} value - The value to compare. - * @param {any} other - The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * - * @example - * eq(1, 1); // true - * eq(0, -0); // true - * eq(NaN, NaN); // true - * eq('a', Object('a')); // false - */ -declare function isEqualsSameValueZero(value: any, other: any): boolean; - -export { isEqualsSameValueZero }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.js b/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.js deleted file mode 100644 index cf50417..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isEqualsSameValueZero(value, other) { - return value === other || (Number.isNaN(value) && Number.isNaN(other)); -} - -exports.isEqualsSameValueZero = isEqualsSameValueZero; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.mjs deleted file mode 100644 index ca61076..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isEqualsSameValueZero(value, other) { - return value === other || (Number.isNaN(value) && Number.isNaN(other)); -} - -export { isEqualsSameValueZero }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js b/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js deleted file mode 100644 index 851e66a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isUnsafeProperty(key) { - return key === '__proto__'; -} - -exports.isUnsafeProperty = isUnsafeProperty; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.mjs deleted file mode 100644 index 1d19806..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isUnsafeProperty(key) { - return key === '__proto__'; -} - -export { isUnsafeProperty }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/at.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/at.d.mts deleted file mode 100644 index 17bca14..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/at.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Retrieves elements from an array at the specified indices. - * - * This function supports negative indices, which count from the end of the array. - * - * @template T - * @param {readonly T[]} arr - The array to retrieve elements from. - * @param {number[]} indices - An array of indices specifying the positions of elements to retrieve. - * @returns {T[]} A new array containing the elements at the specified indices. - * - * @example - * const numbers = [10, 20, 30, 40, 50]; - * const result = at(numbers, [1, 3, 4]); - * console.log(result); // [20, 40, 50] - */ -declare function at(arr: readonly T[], indices: number[]): T[]; - -export { at }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/at.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/at.d.ts deleted file mode 100644 index 17bca14..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/at.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Retrieves elements from an array at the specified indices. - * - * This function supports negative indices, which count from the end of the array. - * - * @template T - * @param {readonly T[]} arr - The array to retrieve elements from. - * @param {number[]} indices - An array of indices specifying the positions of elements to retrieve. - * @returns {T[]} A new array containing the elements at the specified indices. - * - * @example - * const numbers = [10, 20, 30, 40, 50]; - * const result = at(numbers, [1, 3, 4]); - * console.log(result); // [20, 40, 50] - */ -declare function at(arr: readonly T[], indices: number[]): T[]; - -export { at }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/at.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/at.js deleted file mode 100644 index 052c833..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/at.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function at(arr, indices) { - const result = new Array(indices.length); - const length = arr.length; - for (let i = 0; i < indices.length; i++) { - let index = indices[i]; - index = Number.isInteger(index) ? index : Math.trunc(index) || 0; - if (index < 0) { - index += length; - } - result[i] = arr[index]; - } - return result; -} - -exports.at = at; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/at.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/at.mjs deleted file mode 100644 index ca75278..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/at.mjs +++ /dev/null @@ -1,15 +0,0 @@ -function at(arr, indices) { - const result = new Array(indices.length); - const length = arr.length; - for (let i = 0; i < indices.length; i++) { - let index = indices[i]; - index = Number.isInteger(index) ? index : Math.trunc(index) || 0; - if (index < 0) { - index += length; - } - result[i] = arr[index]; - } - return result; -} - -export { at }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/chunk.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/chunk.d.mts deleted file mode 100644 index 57f8e6f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/chunk.d.mts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Splits an array into smaller arrays of a specified length. - * - * This function takes an input array and divides it into multiple smaller arrays, - * each of a specified length. If the input array cannot be evenly divided, - * the final sub-array will contain the remaining elements. - * - * @template T The type of elements in the array. - * @param {T[]} arr - The array to be chunked into smaller arrays. - * @param {number} size - The size of each smaller array. Must be a positive integer. - * @returns {T[][]} A two-dimensional array where each sub-array has a maximum length of `size`. - * @throws {Error} Throws an error if `size` is not a positive integer. - * - * @example - * // Splits an array of numbers into sub-arrays of length 2 - * chunk([1, 2, 3, 4, 5], 2); - * // Returns: [[1, 2], [3, 4], [5]] - * - * @example - * // Splits an array of strings into sub-arrays of length 3 - * chunk(['a', 'b', 'c', 'd', 'e', 'f', 'g'], 3); - * // Returns: [['a', 'b', 'c'], ['d', 'e', 'f'], ['g']] - */ -declare function chunk(arr: readonly T[], size: number): T[][]; - -export { chunk }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/chunk.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/chunk.d.ts deleted file mode 100644 index 57f8e6f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/chunk.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Splits an array into smaller arrays of a specified length. - * - * This function takes an input array and divides it into multiple smaller arrays, - * each of a specified length. If the input array cannot be evenly divided, - * the final sub-array will contain the remaining elements. - * - * @template T The type of elements in the array. - * @param {T[]} arr - The array to be chunked into smaller arrays. - * @param {number} size - The size of each smaller array. Must be a positive integer. - * @returns {T[][]} A two-dimensional array where each sub-array has a maximum length of `size`. - * @throws {Error} Throws an error if `size` is not a positive integer. - * - * @example - * // Splits an array of numbers into sub-arrays of length 2 - * chunk([1, 2, 3, 4, 5], 2); - * // Returns: [[1, 2], [3, 4], [5]] - * - * @example - * // Splits an array of strings into sub-arrays of length 3 - * chunk(['a', 'b', 'c', 'd', 'e', 'f', 'g'], 3); - * // Returns: [['a', 'b', 'c'], ['d', 'e', 'f'], ['g']] - */ -declare function chunk(arr: readonly T[], size: number): T[][]; - -export { chunk }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/chunk.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/chunk.js deleted file mode 100644 index 663a2f5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/chunk.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function chunk(arr, size) { - if (!Number.isInteger(size) || size <= 0) { - throw new Error('Size must be an integer greater than zero.'); - } - const chunkLength = Math.ceil(arr.length / size); - const result = Array(chunkLength); - for (let index = 0; index < chunkLength; index++) { - const start = index * size; - const end = start + size; - result[index] = arr.slice(start, end); - } - return result; -} - -exports.chunk = chunk; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/chunk.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/chunk.mjs deleted file mode 100644 index 3e4ac5b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/chunk.mjs +++ /dev/null @@ -1,15 +0,0 @@ -function chunk(arr, size) { - if (!Number.isInteger(size) || size <= 0) { - throw new Error('Size must be an integer greater than zero.'); - } - const chunkLength = Math.ceil(arr.length / size); - const result = Array(chunkLength); - for (let index = 0; index < chunkLength; index++) { - const start = index * size; - const end = start + size; - result[index] = arr.slice(start, end); - } - return result; -} - -export { chunk }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/compact.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/compact.d.mts deleted file mode 100644 index 0d99194..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/compact.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -type NotFalsey = Exclude; -/** - * Removes falsey values (false, null, 0, -0, 0n, '', undefined, NaN) from an array. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The input array to remove falsey values. - * @returns {Array>} - A new array with all falsey values removed. - * - * @example - * compact([0, -0, 0n, 1, false, 2, '', 3, null, undefined, 4, NaN, 5]); - * Returns: [1, 2, 3, 4, 5] - */ -declare function compact(arr: readonly T[]): Array>; - -export { compact }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/compact.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/compact.d.ts deleted file mode 100644 index 0d99194..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/compact.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -type NotFalsey = Exclude; -/** - * Removes falsey values (false, null, 0, -0, 0n, '', undefined, NaN) from an array. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The input array to remove falsey values. - * @returns {Array>} - A new array with all falsey values removed. - * - * @example - * compact([0, -0, 0n, 1, false, 2, '', 3, null, undefined, 4, NaN, 5]); - * Returns: [1, 2, 3, 4, 5] - */ -declare function compact(arr: readonly T[]): Array>; - -export { compact }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/compact.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/compact.js deleted file mode 100644 index c4eb60e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/compact.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function compact(arr) { - const result = []; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - if (item) { - result.push(item); - } - } - return result; -} - -exports.compact = compact; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/compact.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/compact.mjs deleted file mode 100644 index 6a572ce..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/compact.mjs +++ /dev/null @@ -1,12 +0,0 @@ -function compact(arr) { - const result = []; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - if (item) { - result.push(item); - } - } - return result; -} - -export { compact }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/countBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/countBy.d.mts deleted file mode 100644 index 3945b94..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/countBy.d.mts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Count the occurrences of each item in an array - * based on a transformation function. - * - * This function takes an array and a transformation function - * that converts each item in the array to a key. It then - * counts the occurrences of each transformed item and returns - * an object with the transformed items as keys and the counts - * as values. - * - * @template T - The type of the items in the input array. - * @template K - The type of keys. - * @param {T[]} arr - The input array to count occurrences. - * @param {(item: T, index: number, array: readonly T[]) => K} mapper - The transformation function that maps each item, its index, and the array to a key. - * @returns {Record} An object containing the transformed items as keys and the - * counts as values. - * - * @example - * const array = ['a', 'b', 'c', 'a', 'b', 'a']; - * const result = countBy(array, x => x); - * // result will be { a: 3, b: 2, c: 1 } - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = countBy(array, item => item % 2 === 0 ? 'even' : 'odd'); - * // result will be { odd: 3, even: 2 } - * - * @example - * // Using index parameter - * const array = ['a', 'b', 'c', 'd']; - * const result = countBy(array, (item, index) => index < 2 ? 'first' : 'rest'); - * // result will be { first: 2, rest: 2 } - */ -declare function countBy(arr: readonly T[], mapper: (item: T, index: number, array: readonly T[]) => K): Record; - -export { countBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/countBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/countBy.d.ts deleted file mode 100644 index 3945b94..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/countBy.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Count the occurrences of each item in an array - * based on a transformation function. - * - * This function takes an array and a transformation function - * that converts each item in the array to a key. It then - * counts the occurrences of each transformed item and returns - * an object with the transformed items as keys and the counts - * as values. - * - * @template T - The type of the items in the input array. - * @template K - The type of keys. - * @param {T[]} arr - The input array to count occurrences. - * @param {(item: T, index: number, array: readonly T[]) => K} mapper - The transformation function that maps each item, its index, and the array to a key. - * @returns {Record} An object containing the transformed items as keys and the - * counts as values. - * - * @example - * const array = ['a', 'b', 'c', 'a', 'b', 'a']; - * const result = countBy(array, x => x); - * // result will be { a: 3, b: 2, c: 1 } - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = countBy(array, item => item % 2 === 0 ? 'even' : 'odd'); - * // result will be { odd: 3, even: 2 } - * - * @example - * // Using index parameter - * const array = ['a', 'b', 'c', 'd']; - * const result = countBy(array, (item, index) => index < 2 ? 'first' : 'rest'); - * // result will be { first: 2, rest: 2 } - */ -declare function countBy(arr: readonly T[], mapper: (item: T, index: number, array: readonly T[]) => K): Record; - -export { countBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/countBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/countBy.js deleted file mode 100644 index aec17d0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/countBy.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function countBy(arr, mapper) { - const result = {}; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - const key = mapper(item, i, arr); - result[key] = (result[key] ?? 0) + 1; - } - return result; -} - -exports.countBy = countBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/countBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/countBy.mjs deleted file mode 100644 index 83464e6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/countBy.mjs +++ /dev/null @@ -1,11 +0,0 @@ -function countBy(arr, mapper) { - const result = {}; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - const key = mapper(item, i, arr); - result[key] = (result[key] ?? 0) + 1; - } - return result; -} - -export { countBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/difference.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/difference.d.mts deleted file mode 100644 index 5088392..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/difference.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Computes the difference between two arrays. - * - * This function takes two arrays and returns a new array containing the elements - * that are present in the first array but not in the second array. It effectively - * filters out any elements from the first array that also appear in the second array. - * - * @template T - * @param {T[]} firstArr - The array from which to derive the difference. This is the primary array - * from which elements will be compared and filtered. - * @param {T[]} secondArr - The array containing elements to be excluded from the first array. - * Each element in this array will be checked against the first array, and if a match is found, - * that element will be excluded from the result. - * @returns {T[]} A new array containing the elements that are present in the first array but not - * in the second array. - * - * @example - * const array1 = [1, 2, 3, 4, 5]; - * const array2 = [2, 4]; - * const result = difference(array1, array2); - * // result will be [1, 3, 5] since 2 and 4 are in both arrays and are excluded from the result. - */ -declare function difference(firstArr: readonly T[], secondArr: readonly T[]): T[]; - -export { difference }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/difference.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/difference.d.ts deleted file mode 100644 index 5088392..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/difference.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Computes the difference between two arrays. - * - * This function takes two arrays and returns a new array containing the elements - * that are present in the first array but not in the second array. It effectively - * filters out any elements from the first array that also appear in the second array. - * - * @template T - * @param {T[]} firstArr - The array from which to derive the difference. This is the primary array - * from which elements will be compared and filtered. - * @param {T[]} secondArr - The array containing elements to be excluded from the first array. - * Each element in this array will be checked against the first array, and if a match is found, - * that element will be excluded from the result. - * @returns {T[]} A new array containing the elements that are present in the first array but not - * in the second array. - * - * @example - * const array1 = [1, 2, 3, 4, 5]; - * const array2 = [2, 4]; - * const result = difference(array1, array2); - * // result will be [1, 3, 5] since 2 and 4 are in both arrays and are excluded from the result. - */ -declare function difference(firstArr: readonly T[], secondArr: readonly T[]): T[]; - -export { difference }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/difference.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/difference.js deleted file mode 100644 index c8209bb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/difference.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function difference(firstArr, secondArr) { - const secondSet = new Set(secondArr); - return firstArr.filter(item => !secondSet.has(item)); -} - -exports.difference = difference; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/difference.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/difference.mjs deleted file mode 100644 index c3e0eb4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/difference.mjs +++ /dev/null @@ -1,6 +0,0 @@ -function difference(firstArr, secondArr) { - const secondSet = new Set(secondArr); - return firstArr.filter(item => !secondSet.has(item)); -} - -export { difference }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceBy.d.mts deleted file mode 100644 index 1580925..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceBy.d.mts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Computes the difference between two arrays after mapping their elements through a provided function. - * - * This function takes two arrays and a mapper function. It returns a new array containing the elements - * that are present in the first array but not in the second array, based on the identity calculated - * by the mapper function. - * - * Essentially, it filters out any elements from the first array that, when - * mapped, match an element in the mapped version of the second array. - * - * @template T, U - * @param {T[]} firstArr - The primary array from which to derive the difference. - * @param {U[]} secondArr - The array containing elements to be excluded from the first array. - * @param {(value: T | U) => unknown} mapper - The function to map the elements of both arrays. This function - * is applied to each element in both arrays, and the comparison is made based on the mapped values. - * @returns {T[]} A new array containing the elements from the first array that do not have a corresponding - * mapped identity in the second array. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const array2 = [{ id: 2 }, { id: 4 }]; - * const mapper = item => item.id; - * const result = differenceBy(array1, array2, mapper); - * // result will be [{ id: 1 }, { id: 3 }] since the elements with id 2 are in both arrays and are excluded from the result. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const array2 = [2, 4]; - * const mapper = item => (typeof item === 'object' ? item.id : item); - * const result = differenceBy(array1, array2, mapper); - * // result will be [{ id: 1 }, { id: 3 }] since 2 is present in both arrays after mapping, and is excluded from the result. - */ -declare function differenceBy(firstArr: readonly T[], secondArr: readonly U[], mapper: (value: T | U) => unknown): T[]; - -export { differenceBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceBy.d.ts deleted file mode 100644 index 1580925..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceBy.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Computes the difference between two arrays after mapping their elements through a provided function. - * - * This function takes two arrays and a mapper function. It returns a new array containing the elements - * that are present in the first array but not in the second array, based on the identity calculated - * by the mapper function. - * - * Essentially, it filters out any elements from the first array that, when - * mapped, match an element in the mapped version of the second array. - * - * @template T, U - * @param {T[]} firstArr - The primary array from which to derive the difference. - * @param {U[]} secondArr - The array containing elements to be excluded from the first array. - * @param {(value: T | U) => unknown} mapper - The function to map the elements of both arrays. This function - * is applied to each element in both arrays, and the comparison is made based on the mapped values. - * @returns {T[]} A new array containing the elements from the first array that do not have a corresponding - * mapped identity in the second array. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const array2 = [{ id: 2 }, { id: 4 }]; - * const mapper = item => item.id; - * const result = differenceBy(array1, array2, mapper); - * // result will be [{ id: 1 }, { id: 3 }] since the elements with id 2 are in both arrays and are excluded from the result. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const array2 = [2, 4]; - * const mapper = item => (typeof item === 'object' ? item.id : item); - * const result = differenceBy(array1, array2, mapper); - * // result will be [{ id: 1 }, { id: 3 }] since 2 is present in both arrays after mapping, and is excluded from the result. - */ -declare function differenceBy(firstArr: readonly T[], secondArr: readonly U[], mapper: (value: T | U) => unknown): T[]; - -export { differenceBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceBy.js deleted file mode 100644 index 19d0ab5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceBy.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function differenceBy(firstArr, secondArr, mapper) { - const mappedSecondSet = new Set(secondArr.map(item => mapper(item))); - return firstArr.filter(item => { - return !mappedSecondSet.has(mapper(item)); - }); -} - -exports.differenceBy = differenceBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceBy.mjs deleted file mode 100644 index fa92712..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceBy.mjs +++ /dev/null @@ -1,8 +0,0 @@ -function differenceBy(firstArr, secondArr, mapper) { - const mappedSecondSet = new Set(secondArr.map(item => mapper(item))); - return firstArr.filter(item => { - return !mappedSecondSet.has(mapper(item)); - }); -} - -export { differenceBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceWith.d.mts deleted file mode 100644 index 67de1b2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceWith.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Computes the difference between two arrays based on a custom equality function. - * - * This function takes two arrays and a custom comparison function. It returns a new array containing - * the elements that are present in the first array but not in the second array. The comparison to determine - * if elements are equal is made using the provided custom function. - * - * @template T, U - * @param {T[]} firstArr - The array from which to get the difference. - * @param {U[]} secondArr - The array containing elements to exclude from the first array. - * @param {(x: T, y: U) => boolean} areItemsEqual - A function to determine if two items are equal. - * @returns {T[]} A new array containing the elements from the first array that do not match any elements in the second array - * according to the custom equality function. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const array2 = [{ id: 2 }, { id: 4 }]; - * const areItemsEqual = (a, b) => a.id === b.id; - * const result = differenceWith(array1, array2, areItemsEqual); - * // result will be [{ id: 1 }, { id: 3 }] since the elements with id 2 are considered equal and are excluded from the result. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const array2 = [2, 4]; - * const areItemsEqual = (a, b) => a.id === b; - * const result = differenceWith(array1, array2, areItemsEqual); - * // result will be [{ id: 1 }, { id: 3 }] since the element with id 2 is considered equal to the second array's element and is excluded from the result. - */ -declare function differenceWith(firstArr: readonly T[], secondArr: readonly U[], areItemsEqual: (x: T, y: U) => boolean): T[]; - -export { differenceWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceWith.d.ts deleted file mode 100644 index 67de1b2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceWith.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Computes the difference between two arrays based on a custom equality function. - * - * This function takes two arrays and a custom comparison function. It returns a new array containing - * the elements that are present in the first array but not in the second array. The comparison to determine - * if elements are equal is made using the provided custom function. - * - * @template T, U - * @param {T[]} firstArr - The array from which to get the difference. - * @param {U[]} secondArr - The array containing elements to exclude from the first array. - * @param {(x: T, y: U) => boolean} areItemsEqual - A function to determine if two items are equal. - * @returns {T[]} A new array containing the elements from the first array that do not match any elements in the second array - * according to the custom equality function. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const array2 = [{ id: 2 }, { id: 4 }]; - * const areItemsEqual = (a, b) => a.id === b.id; - * const result = differenceWith(array1, array2, areItemsEqual); - * // result will be [{ id: 1 }, { id: 3 }] since the elements with id 2 are considered equal and are excluded from the result. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const array2 = [2, 4]; - * const areItemsEqual = (a, b) => a.id === b; - * const result = differenceWith(array1, array2, areItemsEqual); - * // result will be [{ id: 1 }, { id: 3 }] since the element with id 2 is considered equal to the second array's element and is excluded from the result. - */ -declare function differenceWith(firstArr: readonly T[], secondArr: readonly U[], areItemsEqual: (x: T, y: U) => boolean): T[]; - -export { differenceWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceWith.js deleted file mode 100644 index 3794a2a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceWith.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function differenceWith(firstArr, secondArr, areItemsEqual) { - return firstArr.filter(firstItem => { - return secondArr.every(secondItem => { - return !areItemsEqual(firstItem, secondItem); - }); - }); -} - -exports.differenceWith = differenceWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceWith.mjs deleted file mode 100644 index 79622c9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/differenceWith.mjs +++ /dev/null @@ -1,9 +0,0 @@ -function differenceWith(firstArr, secondArr, areItemsEqual) { - return firstArr.filter(firstItem => { - return secondArr.every(secondItem => { - return !areItemsEqual(firstItem, secondItem); - }); - }); -} - -export { differenceWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/drop.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/drop.d.mts deleted file mode 100644 index 10f2754..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/drop.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes a specified number of elements from the beginning of an array and returns the rest. - * - * This function takes an array and a number, and returns a new array with the specified number - * of elements removed from the start. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array from which to drop elements. - * @param {number} itemsCount - The number of elements to drop from the beginning of the array. - * @returns {T[]} A new array with the specified number of elements removed from the start. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = drop(array, 2); - * // result will be [3, 4, 5] since the first two elements are dropped. - */ -declare function drop(arr: readonly T[], itemsCount: number): T[]; - -export { drop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/drop.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/drop.d.ts deleted file mode 100644 index 10f2754..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/drop.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes a specified number of elements from the beginning of an array and returns the rest. - * - * This function takes an array and a number, and returns a new array with the specified number - * of elements removed from the start. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array from which to drop elements. - * @param {number} itemsCount - The number of elements to drop from the beginning of the array. - * @returns {T[]} A new array with the specified number of elements removed from the start. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = drop(array, 2); - * // result will be [3, 4, 5] since the first two elements are dropped. - */ -declare function drop(arr: readonly T[], itemsCount: number): T[]; - -export { drop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/drop.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/drop.js deleted file mode 100644 index dc08ad4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/drop.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function drop(arr, itemsCount) { - itemsCount = Math.max(itemsCount, 0); - return arr.slice(itemsCount); -} - -exports.drop = drop; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/drop.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/drop.mjs deleted file mode 100644 index cfc979e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/drop.mjs +++ /dev/null @@ -1,6 +0,0 @@ -function drop(arr, itemsCount) { - itemsCount = Math.max(itemsCount, 0); - return arr.slice(itemsCount); -} - -export { drop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRight.d.mts deleted file mode 100644 index c70bdb2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRight.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes a specified number of elements from the end of an array and returns the rest. - * - * This function takes an array and a number, and returns a new array with the specified number - * of elements removed from the end. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array from which to drop elements. - * @param {number} itemsCount - The number of elements to drop from the end of the array. - * @returns {T[]} A new array with the specified number of elements removed from the end. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = dropRight(array, 2); - * // result will be [1, 2, 3] since the last two elements are dropped. - */ -declare function dropRight(arr: readonly T[], itemsCount: number): T[]; - -export { dropRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRight.d.ts deleted file mode 100644 index c70bdb2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRight.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes a specified number of elements from the end of an array and returns the rest. - * - * This function takes an array and a number, and returns a new array with the specified number - * of elements removed from the end. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array from which to drop elements. - * @param {number} itemsCount - The number of elements to drop from the end of the array. - * @returns {T[]} A new array with the specified number of elements removed from the end. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = dropRight(array, 2); - * // result will be [1, 2, 3] since the last two elements are dropped. - */ -declare function dropRight(arr: readonly T[], itemsCount: number): T[]; - -export { dropRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRight.js deleted file mode 100644 index 53fc531..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRight.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function dropRight(arr, itemsCount) { - itemsCount = Math.min(-itemsCount, 0); - if (itemsCount === 0) { - return arr.slice(); - } - return arr.slice(0, itemsCount); -} - -exports.dropRight = dropRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRight.mjs deleted file mode 100644 index ceec852..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRight.mjs +++ /dev/null @@ -1,9 +0,0 @@ -function dropRight(arr, itemsCount) { - itemsCount = Math.min(-itemsCount, 0); - if (itemsCount === 0) { - return arr.slice(); - } - return arr.slice(0, itemsCount); -} - -export { dropRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRightWhile.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRightWhile.d.mts deleted file mode 100644 index 48bca56..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRightWhile.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Removes elements from the end of an array until the predicate returns false. - * - * This function iterates over an array from the end and drops elements until the provided - * predicate function returns false. It then returns a new array with the remaining elements. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array from which to drop elements. - * @param {(item: T, index: number, arr: T[]) => boolean} canContinueDropping - A predicate function that determines - * whether to continue dropping elements. The function is called with each element from the end, - * and dropping continues as long as it returns true. - * @returns {T[]} A new array with the elements remaining after the predicate returns false. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = dropRightWhile(array, x => x > 3); - * // result will be [1, 2, 3] since elements greater than 3 are dropped from the end. - */ -declare function dropRightWhile(arr: readonly T[], canContinueDropping: (item: T, index: number, arr: readonly T[]) => boolean): T[]; - -export { dropRightWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRightWhile.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRightWhile.d.ts deleted file mode 100644 index 48bca56..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRightWhile.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Removes elements from the end of an array until the predicate returns false. - * - * This function iterates over an array from the end and drops elements until the provided - * predicate function returns false. It then returns a new array with the remaining elements. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array from which to drop elements. - * @param {(item: T, index: number, arr: T[]) => boolean} canContinueDropping - A predicate function that determines - * whether to continue dropping elements. The function is called with each element from the end, - * and dropping continues as long as it returns true. - * @returns {T[]} A new array with the elements remaining after the predicate returns false. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = dropRightWhile(array, x => x > 3); - * // result will be [1, 2, 3] since elements greater than 3 are dropped from the end. - */ -declare function dropRightWhile(arr: readonly T[], canContinueDropping: (item: T, index: number, arr: readonly T[]) => boolean): T[]; - -export { dropRightWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRightWhile.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRightWhile.js deleted file mode 100644 index c0c57e3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRightWhile.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function dropRightWhile(arr, canContinueDropping) { - for (let i = arr.length - 1; i >= 0; i--) { - if (!canContinueDropping(arr[i], i, arr)) { - return arr.slice(0, i + 1); - } - } - return []; -} - -exports.dropRightWhile = dropRightWhile; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRightWhile.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRightWhile.mjs deleted file mode 100644 index 4999b9b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropRightWhile.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function dropRightWhile(arr, canContinueDropping) { - for (let i = arr.length - 1; i >= 0; i--) { - if (!canContinueDropping(arr[i], i, arr)) { - return arr.slice(0, i + 1); - } - } - return []; -} - -export { dropRightWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropWhile.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/dropWhile.d.mts deleted file mode 100644 index 182cbde..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropWhile.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Removes elements from the beginning of an array until the predicate returns false. - * - * This function iterates over an array and drops elements from the start until the provided - * predicate function returns false. It then returns a new array with the remaining elements. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array from which to drop elements. - * @param {(item: T, index: number, arr: T[]) => boolean} canContinueDropping - A predicate function that determines - * whether to continue dropping elements. The function is called with each element, and dropping - * continues as long as it returns true. - * @returns {T[]} A new array with the elements remaining after the predicate returns false. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = dropWhile(array, x => x < 3); - * // result will be [3, 4, 5] since elements less than 3 are dropped. - */ -declare function dropWhile(arr: readonly T[], canContinueDropping: (item: T, index: number, arr: readonly T[]) => boolean): T[]; - -export { dropWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropWhile.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/dropWhile.d.ts deleted file mode 100644 index 182cbde..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropWhile.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Removes elements from the beginning of an array until the predicate returns false. - * - * This function iterates over an array and drops elements from the start until the provided - * predicate function returns false. It then returns a new array with the remaining elements. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array from which to drop elements. - * @param {(item: T, index: number, arr: T[]) => boolean} canContinueDropping - A predicate function that determines - * whether to continue dropping elements. The function is called with each element, and dropping - * continues as long as it returns true. - * @returns {T[]} A new array with the elements remaining after the predicate returns false. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = dropWhile(array, x => x < 3); - * // result will be [3, 4, 5] since elements less than 3 are dropped. - */ -declare function dropWhile(arr: readonly T[], canContinueDropping: (item: T, index: number, arr: readonly T[]) => boolean): T[]; - -export { dropWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropWhile.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/dropWhile.js deleted file mode 100644 index 698ed17..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropWhile.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function dropWhile(arr, canContinueDropping) { - const dropEndIndex = arr.findIndex((item, index, arr) => !canContinueDropping(item, index, arr)); - if (dropEndIndex === -1) { - return []; - } - return arr.slice(dropEndIndex); -} - -exports.dropWhile = dropWhile; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropWhile.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/dropWhile.mjs deleted file mode 100644 index 5197c21..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/dropWhile.mjs +++ /dev/null @@ -1,9 +0,0 @@ -function dropWhile(arr, canContinueDropping) { - const dropEndIndex = arr.findIndex((item, index, arr) => !canContinueDropping(item, index, arr)); - if (dropEndIndex === -1) { - return []; - } - return arr.slice(dropEndIndex); -} - -export { dropWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/fill.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/fill.d.mts deleted file mode 100644 index fd57b69..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/fill.d.mts +++ /dev/null @@ -1,88 +0,0 @@ -/** - * Fills the whole array with a specified value. - * - * This function mutates the original array and replaces its elements with the provided value, starting from the specified - * start index up to the end index (non-inclusive). If the start or end indices are not provided, it defaults to filling the - * entire array. - * - * @template T - The type of the value to fill the array with. - * @param {unknown[]} array - The array to fill. - * @param {T} value - The value to fill the array with. - * @returns {T[]} The array with the filled values. - * - * @example - * const array = [1, 2, 3]; - * const result = fill(array, 'a'); - * // => ['a', 'a', 'a'] - * - * const result = fill(Array(3), 2); - * // => [2, 2, 2] - * - * const result = fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - * - * const result = fill(array, '*', -2, -1); - * // => [1, '*', 3] - */ -declare function fill(array: unknown[], value: T): T[]; -/** - * Fills elements of an array with a specified value from the start position up to the end of the array. - * - * This function mutates the original array and replaces its elements with the provided value, starting from the specified - * start index up to the end index (non-inclusive). If the start or end indices are not provided, it defaults to filling the - * entire array. - * - * @template T - The type of elements in the original array. - * @template U - The type of the value to fill the array with. - * @param {Array} array - The array to fill. - * @param {U} value - The value to fill the array with. - * @param {number} [start=0] - The start position. Defaults to 0. - * @returns {Array} The array with the filled values. - * - * @example - * const array = [1, 2, 3]; - * const result = fill(array, 'a'); - * // => ['a', 'a', 'a'] - * - * const result = fill(Array(3), 2); - * // => [2, 2, 2] - * - * const result = fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - * - * const result = fill(array, '*', -2, -1); - * // => [1, '*', 3] - */ -declare function fill(array: Array, value: U, start: number): Array; -/** - * Fills elements of an array with a specified value from the start position up to, but not including, the end position. - * - * This function mutates the original array and replaces its elements with the provided value, starting from the specified - * start index up to the end index (non-inclusive). If the start or end indices are not provided, it defaults to filling the - * entire array. - * - * @template T - The type of elements in the original array. - * @template U - The type of the value to fill the array with. - * @param {Array} array - The array to fill. - * @param {U} value - The value to fill the array with. - * @param {number} [start=0] - The start position. Defaults to 0. - * @param {number} [end=arr.length] - The end position. Defaults to the array's length. - * @returns {Array} The array with the filled values. - * - * @example - * const array = [1, 2, 3]; - * const result = fill(array, 'a'); - * // => ['a', 'a', 'a'] - * - * const result = fill(Array(3), 2); - * // => [2, 2, 2] - * - * const result = fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - * - * const result = fill(array, '*', -2, -1); - * // => [1, '*', 3] - */ -declare function fill(array: Array, value: U, start: number, end: number): Array; - -export { fill }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/fill.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/fill.d.ts deleted file mode 100644 index fd57b69..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/fill.d.ts +++ /dev/null @@ -1,88 +0,0 @@ -/** - * Fills the whole array with a specified value. - * - * This function mutates the original array and replaces its elements with the provided value, starting from the specified - * start index up to the end index (non-inclusive). If the start or end indices are not provided, it defaults to filling the - * entire array. - * - * @template T - The type of the value to fill the array with. - * @param {unknown[]} array - The array to fill. - * @param {T} value - The value to fill the array with. - * @returns {T[]} The array with the filled values. - * - * @example - * const array = [1, 2, 3]; - * const result = fill(array, 'a'); - * // => ['a', 'a', 'a'] - * - * const result = fill(Array(3), 2); - * // => [2, 2, 2] - * - * const result = fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - * - * const result = fill(array, '*', -2, -1); - * // => [1, '*', 3] - */ -declare function fill(array: unknown[], value: T): T[]; -/** - * Fills elements of an array with a specified value from the start position up to the end of the array. - * - * This function mutates the original array and replaces its elements with the provided value, starting from the specified - * start index up to the end index (non-inclusive). If the start or end indices are not provided, it defaults to filling the - * entire array. - * - * @template T - The type of elements in the original array. - * @template U - The type of the value to fill the array with. - * @param {Array} array - The array to fill. - * @param {U} value - The value to fill the array with. - * @param {number} [start=0] - The start position. Defaults to 0. - * @returns {Array} The array with the filled values. - * - * @example - * const array = [1, 2, 3]; - * const result = fill(array, 'a'); - * // => ['a', 'a', 'a'] - * - * const result = fill(Array(3), 2); - * // => [2, 2, 2] - * - * const result = fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - * - * const result = fill(array, '*', -2, -1); - * // => [1, '*', 3] - */ -declare function fill(array: Array, value: U, start: number): Array; -/** - * Fills elements of an array with a specified value from the start position up to, but not including, the end position. - * - * This function mutates the original array and replaces its elements with the provided value, starting from the specified - * start index up to the end index (non-inclusive). If the start or end indices are not provided, it defaults to filling the - * entire array. - * - * @template T - The type of elements in the original array. - * @template U - The type of the value to fill the array with. - * @param {Array} array - The array to fill. - * @param {U} value - The value to fill the array with. - * @param {number} [start=0] - The start position. Defaults to 0. - * @param {number} [end=arr.length] - The end position. Defaults to the array's length. - * @returns {Array} The array with the filled values. - * - * @example - * const array = [1, 2, 3]; - * const result = fill(array, 'a'); - * // => ['a', 'a', 'a'] - * - * const result = fill(Array(3), 2); - * // => [2, 2, 2] - * - * const result = fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - * - * const result = fill(array, '*', -2, -1); - * // => [1, '*', 3] - */ -declare function fill(array: Array, value: U, start: number, end: number): Array; - -export { fill }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/fill.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/fill.js deleted file mode 100644 index 2d77244..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/fill.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function fill(array, value, start = 0, end = array.length) { - const length = array.length; - const finalStart = Math.max(start >= 0 ? start : length + start, 0); - const finalEnd = Math.min(end >= 0 ? end : length + end, length); - for (let i = finalStart; i < finalEnd; i++) { - array[i] = value; - } - return array; -} - -exports.fill = fill; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/fill.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/fill.mjs deleted file mode 100644 index fae3b22..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/fill.mjs +++ /dev/null @@ -1,11 +0,0 @@ -function fill(array, value, start = 0, end = array.length) { - const length = array.length; - const finalStart = Math.max(start >= 0 ? start : length + start, 0); - const finalEnd = Math.min(end >= 0 ? end : length + end, length); - for (let i = finalStart; i < finalEnd; i++) { - array[i] = value; - } - return array; -} - -export { fill }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/filterAsync.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/filterAsync.d.mts deleted file mode 100644 index af9ecb7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/filterAsync.d.mts +++ /dev/null @@ -1,35 +0,0 @@ -interface FilterAsyncOptions { - concurrency?: number; -} -/** - * Filters an array asynchronously using an async predicate function. - * - * Returns a promise that resolves to a new array containing only the elements - * for which the predicate function returns a truthy value. - * - * @template T - The type of elements in the array. - * @param {readonly T[]} array The array to filter. - * @param {(item: T, index: number, array: readonly T[]) => Promise} predicate An async function that tests each element. - * @param {FilterAsyncOptions} [options] Optional configuration object. - * @param {number} [options.concurrency] Maximum number of concurrent async operations. If not specified, all operations run concurrently. - * @returns {Promise} A promise that resolves to the filtered array. - * @example - * const users = [{ id: 1, active: true }, { id: 2, active: false }, { id: 3, active: true }]; - * const activeUsers = await filterAsync(users, async (user) => { - * return await checkUserStatus(user.id); - * }); - * // Returns: [{ id: 1, active: true }, { id: 3, active: true }] - * - * @example - * // With concurrency limit - * const numbers = [1, 2, 3, 4, 5]; - * const evenNumbers = await filterAsync( - * numbers, - * async (n) => await isEvenAsync(n), - * { concurrency: 2 } - * ); - * // Processes at most 2 operations concurrently - */ -declare function filterAsync(array: readonly T[], predicate: (item: T, index: number, array: readonly T[]) => Promise, options?: FilterAsyncOptions): Promise; - -export { filterAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/filterAsync.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/filterAsync.d.ts deleted file mode 100644 index af9ecb7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/filterAsync.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -interface FilterAsyncOptions { - concurrency?: number; -} -/** - * Filters an array asynchronously using an async predicate function. - * - * Returns a promise that resolves to a new array containing only the elements - * for which the predicate function returns a truthy value. - * - * @template T - The type of elements in the array. - * @param {readonly T[]} array The array to filter. - * @param {(item: T, index: number, array: readonly T[]) => Promise} predicate An async function that tests each element. - * @param {FilterAsyncOptions} [options] Optional configuration object. - * @param {number} [options.concurrency] Maximum number of concurrent async operations. If not specified, all operations run concurrently. - * @returns {Promise} A promise that resolves to the filtered array. - * @example - * const users = [{ id: 1, active: true }, { id: 2, active: false }, { id: 3, active: true }]; - * const activeUsers = await filterAsync(users, async (user) => { - * return await checkUserStatus(user.id); - * }); - * // Returns: [{ id: 1, active: true }, { id: 3, active: true }] - * - * @example - * // With concurrency limit - * const numbers = [1, 2, 3, 4, 5]; - * const evenNumbers = await filterAsync( - * numbers, - * async (n) => await isEvenAsync(n), - * { concurrency: 2 } - * ); - * // Processes at most 2 operations concurrently - */ -declare function filterAsync(array: readonly T[], predicate: (item: T, index: number, array: readonly T[]) => Promise, options?: FilterAsyncOptions): Promise; - -export { filterAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/filterAsync.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/filterAsync.js deleted file mode 100644 index 8c7c9ca..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/filterAsync.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const limitAsync = require('./limitAsync.js'); - -async function filterAsync(array, predicate, options) { - if (options?.concurrency != null) { - predicate = limitAsync.limitAsync(predicate, options.concurrency); - } - const results = await Promise.all(array.map(predicate)); - return array.filter((_, index) => results[index]); -} - -exports.filterAsync = filterAsync; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/filterAsync.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/filterAsync.mjs deleted file mode 100644 index 28913c6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/filterAsync.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { limitAsync } from './limitAsync.mjs'; - -async function filterAsync(array, predicate, options) { - if (options?.concurrency != null) { - predicate = limitAsync(predicate, options.concurrency); - } - const results = await Promise.all(array.map(predicate)); - return array.filter((_, index) => results[index]); -} - -export { filterAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMap.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMap.d.mts deleted file mode 100644 index 9c2548c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMap.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Maps each element in the array using the iteratee function and flattens the result up to the specified depth. - * - * @template T - The type of elements within the array. - * @template U - The type of elements within the returned array from the iteratee function. - * @template D - The depth to which the array should be flattened. - * @param {T[]} arr - The array to flatten. - * @param {(item: T, index: number, array: readonly T[]) => U} iteratee - The function that produces the new array elements. It receives the element, its index, and the array. - * @param {D} depth - The depth level specifying how deep a nested array structure should be flattened. Defaults to 1. - * @returns {Array>} The new array with the mapped and flattened elements. - * - * @example - * const arr = [1, 2, 3]; - * - * flatMap(arr, (item: number) => [item, item]); - * // [1, 1, 2, 2, 3, 3] - * - * flatMap(arr, (item: number) => [[item, item]], 2); - * // [1, 1, 2, 2, 3, 3] - */ -declare function flatMap(arr: readonly T[], iteratee: (item: T, index: number, array: readonly T[]) => U, depth?: D): Array>; - -export { flatMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMap.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMap.d.ts deleted file mode 100644 index 9c2548c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMap.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Maps each element in the array using the iteratee function and flattens the result up to the specified depth. - * - * @template T - The type of elements within the array. - * @template U - The type of elements within the returned array from the iteratee function. - * @template D - The depth to which the array should be flattened. - * @param {T[]} arr - The array to flatten. - * @param {(item: T, index: number, array: readonly T[]) => U} iteratee - The function that produces the new array elements. It receives the element, its index, and the array. - * @param {D} depth - The depth level specifying how deep a nested array structure should be flattened. Defaults to 1. - * @returns {Array>} The new array with the mapped and flattened elements. - * - * @example - * const arr = [1, 2, 3]; - * - * flatMap(arr, (item: number) => [item, item]); - * // [1, 1, 2, 2, 3, 3] - * - * flatMap(arr, (item: number) => [[item, item]], 2); - * // [1, 1, 2, 2, 3, 3] - */ -declare function flatMap(arr: readonly T[], iteratee: (item: T, index: number, array: readonly T[]) => U, depth?: D): Array>; - -export { flatMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMap.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMap.js deleted file mode 100644 index ca0b421..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMap.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flatten = require('./flatten.js'); - -function flatMap(arr, iteratee, depth = 1) { - return flatten.flatten(arr.map((item, index) => iteratee(item, index, arr)), depth); -} - -exports.flatMap = flatMap; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMap.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMap.mjs deleted file mode 100644 index 13c09b8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMap.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { flatten } from './flatten.mjs'; - -function flatMap(arr, iteratee, depth = 1) { - return flatten(arr.map((item, index) => iteratee(item, index, arr)), depth); -} - -export { flatMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapAsync.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapAsync.d.mts deleted file mode 100644 index b3ee5bc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapAsync.d.mts +++ /dev/null @@ -1,37 +0,0 @@ -interface FlatMapAsyncOptions { - concurrency?: number; -} -/** - * Maps each element in an array using an async callback function and flattens the result by one level. - * - * This is equivalent to calling `mapAsync` followed by `flat(1)`, but more efficient. - * Each callback should return an array, and all returned arrays are concatenated into - * a single output array. - * - * @template T - The type of elements in the input array. - * @template R - The type of elements in the arrays returned by the callback. - * @param {readonly T[]} array The array to transform. - * @param {(item: T, index: number, array: readonly T[]) => Promise} callback An async function that transforms each element into an array. - * @param {FlatMapAsyncOptions} [options] Optional configuration object. - * @param {number} [options.concurrency] Maximum number of concurrent async operations. If not specified, all operations run concurrently. - * @returns {Promise} A promise that resolves to a flattened array of transformed values. - * @example - * const users = [{ id: 1 }, { id: 2 }]; - * const allPosts = await flatMapAsync(users, async (user) => { - * return await fetchUserPosts(user.id); - * }); - * // Returns: [post1, post2, post3, ...] (all posts from all users) - * - * @example - * // With concurrency limit - * const numbers = [1, 2, 3]; - * const results = await flatMapAsync( - * numbers, - * async (n) => await fetchRelatedItems(n), - * { concurrency: 2 } - * ); - * // Processes at most 2 operations concurrently - */ -declare function flatMapAsync(array: readonly T[], callback: (item: T, index: number, array: readonly T[]) => Promise, options?: FlatMapAsyncOptions): Promise; - -export { flatMapAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapAsync.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapAsync.d.ts deleted file mode 100644 index b3ee5bc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapAsync.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -interface FlatMapAsyncOptions { - concurrency?: number; -} -/** - * Maps each element in an array using an async callback function and flattens the result by one level. - * - * This is equivalent to calling `mapAsync` followed by `flat(1)`, but more efficient. - * Each callback should return an array, and all returned arrays are concatenated into - * a single output array. - * - * @template T - The type of elements in the input array. - * @template R - The type of elements in the arrays returned by the callback. - * @param {readonly T[]} array The array to transform. - * @param {(item: T, index: number, array: readonly T[]) => Promise} callback An async function that transforms each element into an array. - * @param {FlatMapAsyncOptions} [options] Optional configuration object. - * @param {number} [options.concurrency] Maximum number of concurrent async operations. If not specified, all operations run concurrently. - * @returns {Promise} A promise that resolves to a flattened array of transformed values. - * @example - * const users = [{ id: 1 }, { id: 2 }]; - * const allPosts = await flatMapAsync(users, async (user) => { - * return await fetchUserPosts(user.id); - * }); - * // Returns: [post1, post2, post3, ...] (all posts from all users) - * - * @example - * // With concurrency limit - * const numbers = [1, 2, 3]; - * const results = await flatMapAsync( - * numbers, - * async (n) => await fetchRelatedItems(n), - * { concurrency: 2 } - * ); - * // Processes at most 2 operations concurrently - */ -declare function flatMapAsync(array: readonly T[], callback: (item: T, index: number, array: readonly T[]) => Promise, options?: FlatMapAsyncOptions): Promise; - -export { flatMapAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapAsync.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapAsync.js deleted file mode 100644 index 3f109a0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapAsync.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flatten = require('./flatten.js'); -const limitAsync = require('./limitAsync.js'); - -async function flatMapAsync(array, callback, options) { - if (options?.concurrency != null) { - callback = limitAsync.limitAsync(callback, options.concurrency); - } - const results = await Promise.all(array.map(callback)); - return flatten.flatten(results); -} - -exports.flatMapAsync = flatMapAsync; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapAsync.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapAsync.mjs deleted file mode 100644 index c646eff..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapAsync.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { flatten } from './flatten.mjs'; -import { limitAsync } from './limitAsync.mjs'; - -async function flatMapAsync(array, callback, options) { - if (options?.concurrency != null) { - callback = limitAsync(callback, options.concurrency); - } - const results = await Promise.all(array.map(callback)); - return flatten(results); -} - -export { flatMapAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapDeep.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapDeep.d.mts deleted file mode 100644 index e36124e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapDeep.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -import { ExtractNestedArrayType } from './flattenDeep.mjs'; - -/** - * Recursively maps each element in an array using a provided iteratee function and then deeply flattens the resulting array. - * - * @template T - The type of elements within the array. - * @template U - The type of elements within the returned array from the iteratee function. - * @param {T[]} arr - The array to flatten. - * @param {(item: T, index: number, array: readonly T[]) => U} iteratee - The function that produces the new array elements. It receives the element, its index, and the array. - * @returns {Array>} A new array that has been flattened. - * - * @example - * const result = flatMapDeep([1, 2, 3], n => [[n, n]]); - * // [1, 1, 2, 2, 3, 3] - */ -declare function flatMapDeep(arr: readonly T[], iteratee: (item: T, index: number, array: readonly T[]) => U): Array>; - -export { flatMapDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapDeep.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapDeep.d.ts deleted file mode 100644 index ad6fb28..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapDeep.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ExtractNestedArrayType } from './flattenDeep.js'; - -/** - * Recursively maps each element in an array using a provided iteratee function and then deeply flattens the resulting array. - * - * @template T - The type of elements within the array. - * @template U - The type of elements within the returned array from the iteratee function. - * @param {T[]} arr - The array to flatten. - * @param {(item: T, index: number, array: readonly T[]) => U} iteratee - The function that produces the new array elements. It receives the element, its index, and the array. - * @returns {Array>} A new array that has been flattened. - * - * @example - * const result = flatMapDeep([1, 2, 3], n => [[n, n]]); - * // [1, 1, 2, 2, 3, 3] - */ -declare function flatMapDeep(arr: readonly T[], iteratee: (item: T, index: number, array: readonly T[]) => U): Array>; - -export { flatMapDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapDeep.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapDeep.js deleted file mode 100644 index 3fed67b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapDeep.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flattenDeep = require('./flattenDeep.js'); - -function flatMapDeep(arr, iteratee) { - return flattenDeep.flattenDeep(arr.map((item, index) => iteratee(item, index, arr))); -} - -exports.flatMapDeep = flatMapDeep; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapDeep.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapDeep.mjs deleted file mode 100644 index 75a15a3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatMapDeep.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { flattenDeep } from './flattenDeep.mjs'; - -function flatMapDeep(arr, iteratee) { - return flattenDeep(arr.map((item, index) => iteratee(item, index, arr))); -} - -export { flatMapDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatten.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatten.d.mts deleted file mode 100644 index ed9c632..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatten.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Flattens an array up to the specified depth. - * - * @template T - The type of elements within the array. - * @template D - The depth to which the array should be flattened. - * @param {T[]} arr - The array to flatten. - * @param {D} depth - The depth level specifying how deep a nested array structure should be flattened. Defaults to 1. - * @returns {Array>} A new array that has been flattened. - * - * @example - * const arr = flatten([1, [2, 3], [4, [5, 6]]], 1); - * // Returns: [1, 2, 3, 4, [5, 6]] - * - * const arr = flatten([1, [2, 3], [4, [5, 6]]], 2); - * // Returns: [1, 2, 3, 4, 5, 6] - */ -declare function flatten(arr: readonly T[], depth?: D): Array>; - -export { flatten }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatten.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatten.d.ts deleted file mode 100644 index ed9c632..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatten.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Flattens an array up to the specified depth. - * - * @template T - The type of elements within the array. - * @template D - The depth to which the array should be flattened. - * @param {T[]} arr - The array to flatten. - * @param {D} depth - The depth level specifying how deep a nested array structure should be flattened. Defaults to 1. - * @returns {Array>} A new array that has been flattened. - * - * @example - * const arr = flatten([1, [2, 3], [4, [5, 6]]], 1); - * // Returns: [1, 2, 3, 4, [5, 6]] - * - * const arr = flatten([1, [2, 3], [4, [5, 6]]], 2); - * // Returns: [1, 2, 3, 4, 5, 6] - */ -declare function flatten(arr: readonly T[], depth?: D): Array>; - -export { flatten }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatten.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatten.js deleted file mode 100644 index 363f9b5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatten.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function flatten(arr, depth = 1) { - const result = []; - const flooredDepth = Math.floor(depth); - const recursive = (arr, currentDepth) => { - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - if (Array.isArray(item) && currentDepth < flooredDepth) { - recursive(item, currentDepth + 1); - } - else { - result.push(item); - } - } - }; - recursive(arr, 0); - return result; -} - -exports.flatten = flatten; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatten.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/flatten.mjs deleted file mode 100644 index 9f93891..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flatten.mjs +++ /dev/null @@ -1,19 +0,0 @@ -function flatten(arr, depth = 1) { - const result = []; - const flooredDepth = Math.floor(depth); - const recursive = (arr, currentDepth) => { - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - if (Array.isArray(item) && currentDepth < flooredDepth) { - recursive(item, currentDepth + 1); - } - else { - result.push(item); - } - } - }; - recursive(arr, 0); - return result; -} - -export { flatten }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flattenDeep.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/flattenDeep.d.mts deleted file mode 100644 index b41a0e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flattenDeep.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Utility type for recursively unpacking nested array types to extract the type of the innermost element - * - * @example - * ExtractNestedArrayType<(number | (number | number[])[])[]> - * // number - * - * ExtractNestedArrayType<(boolean | (string | number[])[])[]> - * // string | number | boolean - */ -type ExtractNestedArrayType = T extends ReadonlyArray ? ExtractNestedArrayType : T; -/** - * Flattens all depths of a nested array. - * - * @template T - The type of elements within the array. - * @param {T[]} arr - The array to flatten. - * @returns {Array>} A new array that has been flattened. - * - * @example - * const arr = flattenDeep([1, [2, [3]], [4, [5, 6]]]); - * // Returns: [1, 2, 3, 4, 5, 6] - */ -declare function flattenDeep(arr: readonly T[]): Array>; - -export { type ExtractNestedArrayType, flattenDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flattenDeep.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/flattenDeep.d.ts deleted file mode 100644 index b41a0e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flattenDeep.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Utility type for recursively unpacking nested array types to extract the type of the innermost element - * - * @example - * ExtractNestedArrayType<(number | (number | number[])[])[]> - * // number - * - * ExtractNestedArrayType<(boolean | (string | number[])[])[]> - * // string | number | boolean - */ -type ExtractNestedArrayType = T extends ReadonlyArray ? ExtractNestedArrayType : T; -/** - * Flattens all depths of a nested array. - * - * @template T - The type of elements within the array. - * @param {T[]} arr - The array to flatten. - * @returns {Array>} A new array that has been flattened. - * - * @example - * const arr = flattenDeep([1, [2, [3]], [4, [5, 6]]]); - * // Returns: [1, 2, 3, 4, 5, 6] - */ -declare function flattenDeep(arr: readonly T[]): Array>; - -export { type ExtractNestedArrayType, flattenDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flattenDeep.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/flattenDeep.js deleted file mode 100644 index 4067e75..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flattenDeep.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flatten = require('./flatten.js'); - -function flattenDeep(arr) { - return flatten.flatten(arr, Infinity); -} - -exports.flattenDeep = flattenDeep; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/flattenDeep.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/flattenDeep.mjs deleted file mode 100644 index fc98092..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/flattenDeep.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { flatten } from './flatten.mjs'; - -function flattenDeep(arr) { - return flatten(arr, Infinity); -} - -export { flattenDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachAsync.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachAsync.d.mts deleted file mode 100644 index d74e041..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachAsync.d.mts +++ /dev/null @@ -1,35 +0,0 @@ -interface ForEachAsyncOptions { - concurrency?: number; -} -/** - * Executes an async callback function for each element in an array. - * - * Unlike the native `forEach`, this function returns a promise that resolves - * when all async operations complete. It supports optional concurrency limiting. - * - * @template T - The type of elements in the array. - * @param {readonly T[]} array The array to iterate over. - * @param {(item: T, index: number, array: readonly T[]) => Promise} callback An async function to execute for each element. - * @param {ForEachAsyncOptions} [options] Optional configuration object. - * @param {number} [options.concurrency] Maximum number of concurrent async operations. If not specified, all operations run concurrently. - * @returns {Promise} A promise that resolves when all operations complete. - * @example - * const users = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * await forEachAsync(users, async (user) => { - * await updateUser(user.id); - * }); - * // All users have been updated - * - * @example - * // With concurrency limit - * const items = [1, 2, 3, 4, 5]; - * await forEachAsync( - * items, - * async (item) => await processItem(item), - * { concurrency: 2 } - * ); - * // Processes at most 2 items concurrently - */ -declare function forEachAsync(array: readonly T[], callback: (item: T, index: number, array: readonly T[]) => Promise, options?: ForEachAsyncOptions): Promise; - -export { forEachAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachAsync.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachAsync.d.ts deleted file mode 100644 index d74e041..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachAsync.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -interface ForEachAsyncOptions { - concurrency?: number; -} -/** - * Executes an async callback function for each element in an array. - * - * Unlike the native `forEach`, this function returns a promise that resolves - * when all async operations complete. It supports optional concurrency limiting. - * - * @template T - The type of elements in the array. - * @param {readonly T[]} array The array to iterate over. - * @param {(item: T, index: number, array: readonly T[]) => Promise} callback An async function to execute for each element. - * @param {ForEachAsyncOptions} [options] Optional configuration object. - * @param {number} [options.concurrency] Maximum number of concurrent async operations. If not specified, all operations run concurrently. - * @returns {Promise} A promise that resolves when all operations complete. - * @example - * const users = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * await forEachAsync(users, async (user) => { - * await updateUser(user.id); - * }); - * // All users have been updated - * - * @example - * // With concurrency limit - * const items = [1, 2, 3, 4, 5]; - * await forEachAsync( - * items, - * async (item) => await processItem(item), - * { concurrency: 2 } - * ); - * // Processes at most 2 items concurrently - */ -declare function forEachAsync(array: readonly T[], callback: (item: T, index: number, array: readonly T[]) => Promise, options?: ForEachAsyncOptions): Promise; - -export { forEachAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachAsync.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachAsync.js deleted file mode 100644 index baa5b43..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachAsync.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const limitAsync = require('./limitAsync.js'); - -async function forEachAsync(array, callback, options) { - if (options?.concurrency != null) { - callback = limitAsync.limitAsync(callback, options.concurrency); - } - await Promise.all(array.map(callback)); -} - -exports.forEachAsync = forEachAsync; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachAsync.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachAsync.mjs deleted file mode 100644 index cce3f3e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachAsync.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { limitAsync } from './limitAsync.mjs'; - -async function forEachAsync(array, callback, options) { - if (options?.concurrency != null) { - callback = limitAsync(callback, options.concurrency); - } - await Promise.all(array.map(callback)); -} - -export { forEachAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachRight.d.mts deleted file mode 100644 index f3ccbf7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachRight.d.mts +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Iterates over elements of 'arr' from right to left and invokes 'callback' for each element. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to iterate over. - * @param {(value: T, index: number, arr: T[]) => void} callback - The function invoked per iteration. - * The callback function receives three arguments: - * - 'value': The current element being processed in the array. - * - 'index': The index of the current element being processed in the array. - * - 'arr': The array 'forEachRight' was called upon. - * - * @example - * const array = [1, 2, 3]; - * const result: number[] = []; - * - * // Use the forEachRight function to iterate through the array and add each element to the result array. - * forEachRight(array, (value) => { - * result.push(value); - * }) - * - * console.log(result) // Output: [3, 2, 1] - */ -declare function forEachRight(arr: T[], callback: (value: T, index: number, arr: T[]) => void): void; -/** - * Iterates over elements of 'arr' from right to left and invokes 'callback' for each element. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to iterate over. - * @param {(value: T, index: number, arr: T[]) => void} callback - The function invoked per iteration. - * The callback function receives three arguments: - * - 'value': The current element being processed in the array. - * - 'index': The index of the current element being processed in the array. - * - 'arr': The array 'forEachRight' was called upon. - * - * @example - * const array = [1, 2, 3]; - * const result: number[] = []; - * - * // Use the forEachRight function to iterate through the array and add each element to the result array. - * forEachRight(array, (value) => { - * result.push(value); - * }) - * - * console.log(result) // Output: [3, 2, 1] - */ -declare function forEachRight(arr: readonly T[], callback: (value: T, index: number, arr: readonly T[]) => void): void; - -export { forEachRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachRight.d.ts deleted file mode 100644 index f3ccbf7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachRight.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Iterates over elements of 'arr' from right to left and invokes 'callback' for each element. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to iterate over. - * @param {(value: T, index: number, arr: T[]) => void} callback - The function invoked per iteration. - * The callback function receives three arguments: - * - 'value': The current element being processed in the array. - * - 'index': The index of the current element being processed in the array. - * - 'arr': The array 'forEachRight' was called upon. - * - * @example - * const array = [1, 2, 3]; - * const result: number[] = []; - * - * // Use the forEachRight function to iterate through the array and add each element to the result array. - * forEachRight(array, (value) => { - * result.push(value); - * }) - * - * console.log(result) // Output: [3, 2, 1] - */ -declare function forEachRight(arr: T[], callback: (value: T, index: number, arr: T[]) => void): void; -/** - * Iterates over elements of 'arr' from right to left and invokes 'callback' for each element. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to iterate over. - * @param {(value: T, index: number, arr: T[]) => void} callback - The function invoked per iteration. - * The callback function receives three arguments: - * - 'value': The current element being processed in the array. - * - 'index': The index of the current element being processed in the array. - * - 'arr': The array 'forEachRight' was called upon. - * - * @example - * const array = [1, 2, 3]; - * const result: number[] = []; - * - * // Use the forEachRight function to iterate through the array and add each element to the result array. - * forEachRight(array, (value) => { - * result.push(value); - * }) - * - * console.log(result) // Output: [3, 2, 1] - */ -declare function forEachRight(arr: readonly T[], callback: (value: T, index: number, arr: readonly T[]) => void): void; - -export { forEachRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachRight.js deleted file mode 100644 index 2e3386f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachRight.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function forEachRight(arr, callback) { - for (let i = arr.length - 1; i >= 0; i--) { - const element = arr[i]; - callback(element, i, arr); - } -} - -exports.forEachRight = forEachRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachRight.mjs deleted file mode 100644 index f5d7176..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/forEachRight.mjs +++ /dev/null @@ -1,8 +0,0 @@ -function forEachRight(arr, callback) { - for (let i = arr.length - 1; i >= 0; i--) { - const element = arr[i]; - callback(element, i, arr); - } -} - -export { forEachRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/groupBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/groupBy.d.mts deleted file mode 100644 index 178a47c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/groupBy.d.mts +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Groups the elements of an array based on a provided key-generating function. - * - * This function takes an array and a function that generates a key from each element. It returns - * an object where the keys are the generated keys and the values are arrays of elements that share - * the same key. - * - * @template T - The type of elements in the array. - * @template K - The type of keys. - * @param {T[]} arr - The array to group. - * @param {(item: T, index: number, array: readonly T[]) => K} getKeyFromItem - A function that generates a key from an element, its index, and the array. - * @returns {Record} An object where each key is associated with an array of elements that - * share that key. - * - * @example - * const array = [ - * { category: 'fruit', name: 'apple' }, - * { category: 'fruit', name: 'banana' }, - * { category: 'vegetable', name: 'carrot' } - * ]; - * const result = groupBy(array, item => item.category); - * // result will be: - * // { - * // fruit: [ - * // { category: 'fruit', name: 'apple' }, - * // { category: 'fruit', name: 'banana' } - * // ], - * // vegetable: [ - * // { category: 'vegetable', name: 'carrot' } - * // ] - * // } - * - * @example - * // Using index parameter - * const items = ['a', 'b', 'c', 'd']; - * const result = groupBy(items, (item, index) => index % 2 === 0 ? 'even' : 'odd'); - * // result will be: { even: ['a', 'c'], odd: ['b', 'd'] } - */ -declare function groupBy(arr: readonly T[], getKeyFromItem: (item: T, index: number, array: readonly T[]) => K): Record; - -export { groupBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/groupBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/groupBy.d.ts deleted file mode 100644 index 178a47c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/groupBy.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Groups the elements of an array based on a provided key-generating function. - * - * This function takes an array and a function that generates a key from each element. It returns - * an object where the keys are the generated keys and the values are arrays of elements that share - * the same key. - * - * @template T - The type of elements in the array. - * @template K - The type of keys. - * @param {T[]} arr - The array to group. - * @param {(item: T, index: number, array: readonly T[]) => K} getKeyFromItem - A function that generates a key from an element, its index, and the array. - * @returns {Record} An object where each key is associated with an array of elements that - * share that key. - * - * @example - * const array = [ - * { category: 'fruit', name: 'apple' }, - * { category: 'fruit', name: 'banana' }, - * { category: 'vegetable', name: 'carrot' } - * ]; - * const result = groupBy(array, item => item.category); - * // result will be: - * // { - * // fruit: [ - * // { category: 'fruit', name: 'apple' }, - * // { category: 'fruit', name: 'banana' } - * // ], - * // vegetable: [ - * // { category: 'vegetable', name: 'carrot' } - * // ] - * // } - * - * @example - * // Using index parameter - * const items = ['a', 'b', 'c', 'd']; - * const result = groupBy(items, (item, index) => index % 2 === 0 ? 'even' : 'odd'); - * // result will be: { even: ['a', 'c'], odd: ['b', 'd'] } - */ -declare function groupBy(arr: readonly T[], getKeyFromItem: (item: T, index: number, array: readonly T[]) => K): Record; - -export { groupBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/groupBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/groupBy.js deleted file mode 100644 index 51d0722..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/groupBy.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function groupBy(arr, getKeyFromItem) { - const result = {}; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - const key = getKeyFromItem(item, i, arr); - if (!Object.hasOwn(result, key)) { - result[key] = []; - } - result[key].push(item); - } - return result; -} - -exports.groupBy = groupBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/groupBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/groupBy.mjs deleted file mode 100644 index d50b0da..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/groupBy.mjs +++ /dev/null @@ -1,14 +0,0 @@ -function groupBy(arr, getKeyFromItem) { - const result = {}; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - const key = getKeyFromItem(item, i, arr); - if (!Object.hasOwn(result, key)) { - result[key] = []; - } - result[key].push(item); - } - return result; -} - -export { groupBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/head.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/head.d.mts deleted file mode 100644 index 8479a81..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/head.d.mts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Returns the first element of an array. - * - * This function takes an array and returns the first element of the array. - * If the array is empty, the function returns `undefined`. - * - * @template T - The type of elements in the array. - * @param {[T, ...T[]]} arr - A non-empty array from which to get the first element. - * @returns {T} The first element of the array. - * - * @example - * const arr = [1, 2, 3]; - * const firstElement = head(arr); - * // firstElement will be 1 - */ -declare function head(arr: readonly [T, ...T[]]): T; -/** - * Returns the first element of an array or `undefined` if the array is empty. - * - * This function takes an array and returns the first element of the array. - * If the array is empty, the function returns `undefined`. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array from which to get the first element. - * @returns {T | undefined} The first element of the array, or `undefined` if the array is empty. - * - * @example - * const emptyArr: number[] = []; - * const noElement = head(emptyArr); - * // noElement will be undefined - */ -declare function head(arr: readonly T[]): T | undefined; - -export { head }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/head.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/head.d.ts deleted file mode 100644 index 8479a81..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/head.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Returns the first element of an array. - * - * This function takes an array and returns the first element of the array. - * If the array is empty, the function returns `undefined`. - * - * @template T - The type of elements in the array. - * @param {[T, ...T[]]} arr - A non-empty array from which to get the first element. - * @returns {T} The first element of the array. - * - * @example - * const arr = [1, 2, 3]; - * const firstElement = head(arr); - * // firstElement will be 1 - */ -declare function head(arr: readonly [T, ...T[]]): T; -/** - * Returns the first element of an array or `undefined` if the array is empty. - * - * This function takes an array and returns the first element of the array. - * If the array is empty, the function returns `undefined`. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array from which to get the first element. - * @returns {T | undefined} The first element of the array, or `undefined` if the array is empty. - * - * @example - * const emptyArr: number[] = []; - * const noElement = head(emptyArr); - * // noElement will be undefined - */ -declare function head(arr: readonly T[]): T | undefined; - -export { head }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/head.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/head.js deleted file mode 100644 index 4b0cfa2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/head.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function head(arr) { - return arr[0]; -} - -exports.head = head; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/head.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/head.mjs deleted file mode 100644 index d99ca36..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/head.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function head(arr) { - return arr[0]; -} - -export { head }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/index.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/index.d.mts deleted file mode 100644 index 1b809f0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/index.d.mts +++ /dev/null @@ -1,66 +0,0 @@ -export { at } from './at.mjs'; -export { chunk } from './chunk.mjs'; -export { compact } from './compact.mjs'; -export { countBy } from './countBy.mjs'; -export { difference } from './difference.mjs'; -export { differenceBy } from './differenceBy.mjs'; -export { differenceWith } from './differenceWith.mjs'; -export { drop } from './drop.mjs'; -export { dropRight } from './dropRight.mjs'; -export { dropRightWhile } from './dropRightWhile.mjs'; -export { dropWhile } from './dropWhile.mjs'; -export { fill } from './fill.mjs'; -export { filterAsync } from './filterAsync.mjs'; -export { flatMap } from './flatMap.mjs'; -export { flatMapAsync } from './flatMapAsync.mjs'; -export { flatMapDeep } from './flatMapDeep.mjs'; -export { flatten } from './flatten.mjs'; -export { flattenDeep } from './flattenDeep.mjs'; -export { forEachAsync } from './forEachAsync.mjs'; -export { forEachRight } from './forEachRight.mjs'; -export { groupBy } from './groupBy.mjs'; -export { head } from './head.mjs'; -export { initial } from './initial.mjs'; -export { intersection } from './intersection.mjs'; -export { intersectionBy } from './intersectionBy.mjs'; -export { intersectionWith } from './intersectionWith.mjs'; -export { isSubset } from './isSubset.mjs'; -export { isSubsetWith } from './isSubsetWith.mjs'; -export { keyBy } from './keyBy.mjs'; -export { last } from './last.mjs'; -export { limitAsync } from './limitAsync.mjs'; -export { mapAsync } from './mapAsync.mjs'; -export { maxBy } from './maxBy.mjs'; -export { minBy } from './minBy.mjs'; -export { orderBy } from './orderBy.mjs'; -export { partition } from './partition.mjs'; -export { pull } from './pull.mjs'; -export { pullAt } from './pullAt.mjs'; -export { reduceAsync } from './reduceAsync.mjs'; -export { remove } from './remove.mjs'; -export { sample } from './sample.mjs'; -export { sampleSize } from './sampleSize.mjs'; -export { shuffle } from './shuffle.mjs'; -export { sortBy } from './sortBy.mjs'; -export { tail } from './tail.mjs'; -export { take } from './take.mjs'; -export { takeRight } from './takeRight.mjs'; -export { takeRightWhile } from './takeRightWhile.mjs'; -export { takeWhile } from './takeWhile.mjs'; -export { toFilled } from './toFilled.mjs'; -export { union } from './union.mjs'; -export { unionBy } from './unionBy.mjs'; -export { unionWith } from './unionWith.mjs'; -export { uniq } from './uniq.mjs'; -export { uniqBy } from './uniqBy.mjs'; -export { uniqWith } from './uniqWith.mjs'; -export { unzip } from './unzip.mjs'; -export { unzipWith } from './unzipWith.mjs'; -export { windowed } from './windowed.mjs'; -export { without } from './without.mjs'; -export { xor } from './xor.mjs'; -export { xorBy } from './xorBy.mjs'; -export { xorWith } from './xorWith.mjs'; -export { zip } from './zip.mjs'; -export { zipObject } from './zipObject.mjs'; -export { zipWith } from './zipWith.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/index.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/index.d.ts deleted file mode 100644 index f19a0e5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/index.d.ts +++ /dev/null @@ -1,66 +0,0 @@ -export { at } from './at.js'; -export { chunk } from './chunk.js'; -export { compact } from './compact.js'; -export { countBy } from './countBy.js'; -export { difference } from './difference.js'; -export { differenceBy } from './differenceBy.js'; -export { differenceWith } from './differenceWith.js'; -export { drop } from './drop.js'; -export { dropRight } from './dropRight.js'; -export { dropRightWhile } from './dropRightWhile.js'; -export { dropWhile } from './dropWhile.js'; -export { fill } from './fill.js'; -export { filterAsync } from './filterAsync.js'; -export { flatMap } from './flatMap.js'; -export { flatMapAsync } from './flatMapAsync.js'; -export { flatMapDeep } from './flatMapDeep.js'; -export { flatten } from './flatten.js'; -export { flattenDeep } from './flattenDeep.js'; -export { forEachAsync } from './forEachAsync.js'; -export { forEachRight } from './forEachRight.js'; -export { groupBy } from './groupBy.js'; -export { head } from './head.js'; -export { initial } from './initial.js'; -export { intersection } from './intersection.js'; -export { intersectionBy } from './intersectionBy.js'; -export { intersectionWith } from './intersectionWith.js'; -export { isSubset } from './isSubset.js'; -export { isSubsetWith } from './isSubsetWith.js'; -export { keyBy } from './keyBy.js'; -export { last } from './last.js'; -export { limitAsync } from './limitAsync.js'; -export { mapAsync } from './mapAsync.js'; -export { maxBy } from './maxBy.js'; -export { minBy } from './minBy.js'; -export { orderBy } from './orderBy.js'; -export { partition } from './partition.js'; -export { pull } from './pull.js'; -export { pullAt } from './pullAt.js'; -export { reduceAsync } from './reduceAsync.js'; -export { remove } from './remove.js'; -export { sample } from './sample.js'; -export { sampleSize } from './sampleSize.js'; -export { shuffle } from './shuffle.js'; -export { sortBy } from './sortBy.js'; -export { tail } from './tail.js'; -export { take } from './take.js'; -export { takeRight } from './takeRight.js'; -export { takeRightWhile } from './takeRightWhile.js'; -export { takeWhile } from './takeWhile.js'; -export { toFilled } from './toFilled.js'; -export { union } from './union.js'; -export { unionBy } from './unionBy.js'; -export { unionWith } from './unionWith.js'; -export { uniq } from './uniq.js'; -export { uniqBy } from './uniqBy.js'; -export { uniqWith } from './uniqWith.js'; -export { unzip } from './unzip.js'; -export { unzipWith } from './unzipWith.js'; -export { windowed } from './windowed.js'; -export { without } from './without.js'; -export { xor } from './xor.js'; -export { xorBy } from './xorBy.js'; -export { xorWith } from './xorWith.js'; -export { zip } from './zip.js'; -export { zipObject } from './zipObject.js'; -export { zipWith } from './zipWith.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/index.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/index.js deleted file mode 100644 index 6da4ac7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/index.js +++ /dev/null @@ -1,139 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const at = require('./at.js'); -const chunk = require('./chunk.js'); -const compact = require('./compact.js'); -const countBy = require('./countBy.js'); -const difference = require('./difference.js'); -const differenceBy = require('./differenceBy.js'); -const differenceWith = require('./differenceWith.js'); -const drop = require('./drop.js'); -const dropRight = require('./dropRight.js'); -const dropRightWhile = require('./dropRightWhile.js'); -const dropWhile = require('./dropWhile.js'); -const fill = require('./fill.js'); -const filterAsync = require('./filterAsync.js'); -const flatMap = require('./flatMap.js'); -const flatMapAsync = require('./flatMapAsync.js'); -const flatMapDeep = require('./flatMapDeep.js'); -const flatten = require('./flatten.js'); -const flattenDeep = require('./flattenDeep.js'); -const forEachAsync = require('./forEachAsync.js'); -const forEachRight = require('./forEachRight.js'); -const groupBy = require('./groupBy.js'); -const head = require('./head.js'); -const initial = require('./initial.js'); -const intersection = require('./intersection.js'); -const intersectionBy = require('./intersectionBy.js'); -const intersectionWith = require('./intersectionWith.js'); -const isSubset = require('./isSubset.js'); -const isSubsetWith = require('./isSubsetWith.js'); -const keyBy = require('./keyBy.js'); -const last = require('./last.js'); -const limitAsync = require('./limitAsync.js'); -const mapAsync = require('./mapAsync.js'); -const maxBy = require('./maxBy.js'); -const minBy = require('./minBy.js'); -const orderBy = require('./orderBy.js'); -const partition = require('./partition.js'); -const pull = require('./pull.js'); -const pullAt = require('./pullAt.js'); -const reduceAsync = require('./reduceAsync.js'); -const remove = require('./remove.js'); -const sample = require('./sample.js'); -const sampleSize = require('./sampleSize.js'); -const shuffle = require('./shuffle.js'); -const sortBy = require('./sortBy.js'); -const tail = require('./tail.js'); -const take = require('./take.js'); -const takeRight = require('./takeRight.js'); -const takeRightWhile = require('./takeRightWhile.js'); -const takeWhile = require('./takeWhile.js'); -const toFilled = require('./toFilled.js'); -const union = require('./union.js'); -const unionBy = require('./unionBy.js'); -const unionWith = require('./unionWith.js'); -const uniq = require('./uniq.js'); -const uniqBy = require('./uniqBy.js'); -const uniqWith = require('./uniqWith.js'); -const unzip = require('./unzip.js'); -const unzipWith = require('./unzipWith.js'); -const windowed = require('./windowed.js'); -const without = require('./without.js'); -const xor = require('./xor.js'); -const xorBy = require('./xorBy.js'); -const xorWith = require('./xorWith.js'); -const zip = require('./zip.js'); -const zipObject = require('./zipObject.js'); -const zipWith = require('./zipWith.js'); - - - -exports.at = at.at; -exports.chunk = chunk.chunk; -exports.compact = compact.compact; -exports.countBy = countBy.countBy; -exports.difference = difference.difference; -exports.differenceBy = differenceBy.differenceBy; -exports.differenceWith = differenceWith.differenceWith; -exports.drop = drop.drop; -exports.dropRight = dropRight.dropRight; -exports.dropRightWhile = dropRightWhile.dropRightWhile; -exports.dropWhile = dropWhile.dropWhile; -exports.fill = fill.fill; -exports.filterAsync = filterAsync.filterAsync; -exports.flatMap = flatMap.flatMap; -exports.flatMapAsync = flatMapAsync.flatMapAsync; -exports.flatMapDeep = flatMapDeep.flatMapDeep; -exports.flatten = flatten.flatten; -exports.flattenDeep = flattenDeep.flattenDeep; -exports.forEachAsync = forEachAsync.forEachAsync; -exports.forEachRight = forEachRight.forEachRight; -exports.groupBy = groupBy.groupBy; -exports.head = head.head; -exports.initial = initial.initial; -exports.intersection = intersection.intersection; -exports.intersectionBy = intersectionBy.intersectionBy; -exports.intersectionWith = intersectionWith.intersectionWith; -exports.isSubset = isSubset.isSubset; -exports.isSubsetWith = isSubsetWith.isSubsetWith; -exports.keyBy = keyBy.keyBy; -exports.last = last.last; -exports.limitAsync = limitAsync.limitAsync; -exports.mapAsync = mapAsync.mapAsync; -exports.maxBy = maxBy.maxBy; -exports.minBy = minBy.minBy; -exports.orderBy = orderBy.orderBy; -exports.partition = partition.partition; -exports.pull = pull.pull; -exports.pullAt = pullAt.pullAt; -exports.reduceAsync = reduceAsync.reduceAsync; -exports.remove = remove.remove; -exports.sample = sample.sample; -exports.sampleSize = sampleSize.sampleSize; -exports.shuffle = shuffle.shuffle; -exports.sortBy = sortBy.sortBy; -exports.tail = tail.tail; -exports.take = take.take; -exports.takeRight = takeRight.takeRight; -exports.takeRightWhile = takeRightWhile.takeRightWhile; -exports.takeWhile = takeWhile.takeWhile; -exports.toFilled = toFilled.toFilled; -exports.union = union.union; -exports.unionBy = unionBy.unionBy; -exports.unionWith = unionWith.unionWith; -exports.uniq = uniq.uniq; -exports.uniqBy = uniqBy.uniqBy; -exports.uniqWith = uniqWith.uniqWith; -exports.unzip = unzip.unzip; -exports.unzipWith = unzipWith.unzipWith; -exports.windowed = windowed.windowed; -exports.without = without.without; -exports.xor = xor.xor; -exports.xorBy = xorBy.xorBy; -exports.xorWith = xorWith.xorWith; -exports.zip = zip.zip; -exports.zipObject = zipObject.zipObject; -exports.zipWith = zipWith.zipWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/index.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/index.mjs deleted file mode 100644 index 1b809f0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/index.mjs +++ /dev/null @@ -1,66 +0,0 @@ -export { at } from './at.mjs'; -export { chunk } from './chunk.mjs'; -export { compact } from './compact.mjs'; -export { countBy } from './countBy.mjs'; -export { difference } from './difference.mjs'; -export { differenceBy } from './differenceBy.mjs'; -export { differenceWith } from './differenceWith.mjs'; -export { drop } from './drop.mjs'; -export { dropRight } from './dropRight.mjs'; -export { dropRightWhile } from './dropRightWhile.mjs'; -export { dropWhile } from './dropWhile.mjs'; -export { fill } from './fill.mjs'; -export { filterAsync } from './filterAsync.mjs'; -export { flatMap } from './flatMap.mjs'; -export { flatMapAsync } from './flatMapAsync.mjs'; -export { flatMapDeep } from './flatMapDeep.mjs'; -export { flatten } from './flatten.mjs'; -export { flattenDeep } from './flattenDeep.mjs'; -export { forEachAsync } from './forEachAsync.mjs'; -export { forEachRight } from './forEachRight.mjs'; -export { groupBy } from './groupBy.mjs'; -export { head } from './head.mjs'; -export { initial } from './initial.mjs'; -export { intersection } from './intersection.mjs'; -export { intersectionBy } from './intersectionBy.mjs'; -export { intersectionWith } from './intersectionWith.mjs'; -export { isSubset } from './isSubset.mjs'; -export { isSubsetWith } from './isSubsetWith.mjs'; -export { keyBy } from './keyBy.mjs'; -export { last } from './last.mjs'; -export { limitAsync } from './limitAsync.mjs'; -export { mapAsync } from './mapAsync.mjs'; -export { maxBy } from './maxBy.mjs'; -export { minBy } from './minBy.mjs'; -export { orderBy } from './orderBy.mjs'; -export { partition } from './partition.mjs'; -export { pull } from './pull.mjs'; -export { pullAt } from './pullAt.mjs'; -export { reduceAsync } from './reduceAsync.mjs'; -export { remove } from './remove.mjs'; -export { sample } from './sample.mjs'; -export { sampleSize } from './sampleSize.mjs'; -export { shuffle } from './shuffle.mjs'; -export { sortBy } from './sortBy.mjs'; -export { tail } from './tail.mjs'; -export { take } from './take.mjs'; -export { takeRight } from './takeRight.mjs'; -export { takeRightWhile } from './takeRightWhile.mjs'; -export { takeWhile } from './takeWhile.mjs'; -export { toFilled } from './toFilled.mjs'; -export { union } from './union.mjs'; -export { unionBy } from './unionBy.mjs'; -export { unionWith } from './unionWith.mjs'; -export { uniq } from './uniq.mjs'; -export { uniqBy } from './uniqBy.mjs'; -export { uniqWith } from './uniqWith.mjs'; -export { unzip } from './unzip.mjs'; -export { unzipWith } from './unzipWith.mjs'; -export { windowed } from './windowed.mjs'; -export { without } from './without.mjs'; -export { xor } from './xor.mjs'; -export { xorBy } from './xorBy.mjs'; -export { xorWith } from './xorWith.mjs'; -export { zip } from './zip.mjs'; -export { zipObject } from './zipObject.mjs'; -export { zipWith } from './zipWith.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/initial.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/initial.d.mts deleted file mode 100644 index b29c9e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/initial.d.mts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Returns an empty array when the input is a tuple containing exactly one element. - * - * @template T The type of the single element. - * @param {[T]} arr - A tuple containing exactly one element. - * @returns {[]} An empty array since there is only one element. - * - * @example - * const array = [100] as const; - * const result = initial(array); - * // result will be [] - */ -declare function initial(arr: readonly [T]): []; -/** - * Returns an empty array when the input array is empty. - * - * @returns {[]} Always returns an empty array for an empty input. - * - * @example - * const array = [] as const; - * const result = initial(array); - * // result will be [] - */ -declare function initial(arr: readonly []): []; -/** - * Returns a new array containing all elements except the last one from a tuple with multiple elements. - * - * @template T The types of the initial elements. - * @template U The type of the last element in the tuple. - * @param {[...T[], U]} arr - A tuple with one or more elements. - * @returns {T[]} A new array containing all but the last element of the tuple. - * - * @example - * const array = ['apple', 'banana', 'cherry'] as const; - * const result = initial(array); - * // result will be ['apple', 'banana'] - */ -declare function initial(arr: readonly [...T[], U]): T[]; -/** - * Returns a new array containing all elements except the last one from the input array. - * If the input array is empty or has only one element, the function returns an empty array. - * - * @template T The type of elements in the array. - * @param {T[]} arr - The input array. - * @returns {T[]} A new array containing all but the last element of the input array. - * - * @example - * const arr = [1, 2, 3, 4]; - * const result = initial(arr); - * // result will be [1, 2, 3] - */ -declare function initial(arr: readonly T[]): T[]; - -export { initial }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/initial.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/initial.d.ts deleted file mode 100644 index b29c9e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/initial.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Returns an empty array when the input is a tuple containing exactly one element. - * - * @template T The type of the single element. - * @param {[T]} arr - A tuple containing exactly one element. - * @returns {[]} An empty array since there is only one element. - * - * @example - * const array = [100] as const; - * const result = initial(array); - * // result will be [] - */ -declare function initial(arr: readonly [T]): []; -/** - * Returns an empty array when the input array is empty. - * - * @returns {[]} Always returns an empty array for an empty input. - * - * @example - * const array = [] as const; - * const result = initial(array); - * // result will be [] - */ -declare function initial(arr: readonly []): []; -/** - * Returns a new array containing all elements except the last one from a tuple with multiple elements. - * - * @template T The types of the initial elements. - * @template U The type of the last element in the tuple. - * @param {[...T[], U]} arr - A tuple with one or more elements. - * @returns {T[]} A new array containing all but the last element of the tuple. - * - * @example - * const array = ['apple', 'banana', 'cherry'] as const; - * const result = initial(array); - * // result will be ['apple', 'banana'] - */ -declare function initial(arr: readonly [...T[], U]): T[]; -/** - * Returns a new array containing all elements except the last one from the input array. - * If the input array is empty or has only one element, the function returns an empty array. - * - * @template T The type of elements in the array. - * @param {T[]} arr - The input array. - * @returns {T[]} A new array containing all but the last element of the input array. - * - * @example - * const arr = [1, 2, 3, 4]; - * const result = initial(arr); - * // result will be [1, 2, 3] - */ -declare function initial(arr: readonly T[]): T[]; - -export { initial }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/initial.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/initial.js deleted file mode 100644 index 73a8fe0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/initial.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function initial(arr) { - return arr.slice(0, -1); -} - -exports.initial = initial; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/initial.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/initial.mjs deleted file mode 100644 index a5cd45f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/initial.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function initial(arr) { - return arr.slice(0, -1); -} - -export { initial }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersection.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/intersection.d.mts deleted file mode 100644 index 2164a6b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersection.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Returns the intersection of two arrays. - * - * This function takes two arrays and returns a new array containing the elements that are - * present in both arrays. It effectively filters out any elements from the first array that - * are not found in the second array. - * - * @template T - The type of elements in the array. - * @param {T[]} firstArr - The first array to compare. - * @param {T[]} secondArr - The second array to compare. - * @returns {T[]} A new array containing the elements that are present in both arrays. - * - * @example - * const array1 = [1, 2, 3, 4, 5]; - * const array2 = [3, 4, 5, 6, 7]; - * const result = intersection(array1, array2); - * // result will be [3, 4, 5] since these elements are in both arrays. - */ -declare function intersection(firstArr: readonly T[], secondArr: readonly T[]): T[]; - -export { intersection }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersection.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/intersection.d.ts deleted file mode 100644 index 2164a6b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersection.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Returns the intersection of two arrays. - * - * This function takes two arrays and returns a new array containing the elements that are - * present in both arrays. It effectively filters out any elements from the first array that - * are not found in the second array. - * - * @template T - The type of elements in the array. - * @param {T[]} firstArr - The first array to compare. - * @param {T[]} secondArr - The second array to compare. - * @returns {T[]} A new array containing the elements that are present in both arrays. - * - * @example - * const array1 = [1, 2, 3, 4, 5]; - * const array2 = [3, 4, 5, 6, 7]; - * const result = intersection(array1, array2); - * // result will be [3, 4, 5] since these elements are in both arrays. - */ -declare function intersection(firstArr: readonly T[], secondArr: readonly T[]): T[]; - -export { intersection }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersection.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/intersection.js deleted file mode 100644 index bb3cdc3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersection.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function intersection(firstArr, secondArr) { - const secondSet = new Set(secondArr); - return firstArr.filter(item => secondSet.has(item)); -} - -exports.intersection = intersection; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersection.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/intersection.mjs deleted file mode 100644 index ef02591..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersection.mjs +++ /dev/null @@ -1,6 +0,0 @@ -function intersection(firstArr, secondArr) { - const secondSet = new Set(secondArr); - return firstArr.filter(item => secondSet.has(item)); -} - -export { intersection }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionBy.d.mts deleted file mode 100644 index 0ddb0ee..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionBy.d.mts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Returns the intersection of two arrays based on a mapping function. - * - * This function takes two arrays and a mapping function. It returns a new array containing - * the elements from the first array that, when mapped using the provided function, have matching - * mapped elements in the second array. It effectively filters out any elements from the first array - * that do not have corresponding mapped values in the second array. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @param {T[]} firstArr - The first array to compare. - * @param {U[]} secondArr - The second array to compare. - * @param {(item: T | U) => unknown} mapper - A function to map the elements of both arrays for comparison. - * @returns {T[]} A new array containing the elements from the first array that have corresponding mapped values in the second array. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const array2 = [{ id: 2 }, { id: 4 }]; - * const mapper = item => item.id; - * const result = intersectionBy(array1, array2, mapper); - * // result will be [{ id: 2 }] since only this element has a matching id in both arrays. - * - * @example - * const array1 = [ - * { id: 1, name: 'jane' }, - * { id: 2, name: 'amy' }, - * { id: 3, name: 'michael' }, - * ]; - * const array2 = [2, 4]; - * const mapper = item => (typeof item === 'object' ? item.id : item); - * const result = intersectionBy(array1, array2, mapper); - * // result will be [{ id: 2, name: 'amy' }] since only this element has a matching id that is equal to seconds array's element. - */ -declare function intersectionBy(firstArr: readonly T[], secondArr: readonly U[], mapper: (item: T | U) => unknown): T[]; - -export { intersectionBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionBy.d.ts deleted file mode 100644 index 0ddb0ee..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionBy.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Returns the intersection of two arrays based on a mapping function. - * - * This function takes two arrays and a mapping function. It returns a new array containing - * the elements from the first array that, when mapped using the provided function, have matching - * mapped elements in the second array. It effectively filters out any elements from the first array - * that do not have corresponding mapped values in the second array. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @param {T[]} firstArr - The first array to compare. - * @param {U[]} secondArr - The second array to compare. - * @param {(item: T | U) => unknown} mapper - A function to map the elements of both arrays for comparison. - * @returns {T[]} A new array containing the elements from the first array that have corresponding mapped values in the second array. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const array2 = [{ id: 2 }, { id: 4 }]; - * const mapper = item => item.id; - * const result = intersectionBy(array1, array2, mapper); - * // result will be [{ id: 2 }] since only this element has a matching id in both arrays. - * - * @example - * const array1 = [ - * { id: 1, name: 'jane' }, - * { id: 2, name: 'amy' }, - * { id: 3, name: 'michael' }, - * ]; - * const array2 = [2, 4]; - * const mapper = item => (typeof item === 'object' ? item.id : item); - * const result = intersectionBy(array1, array2, mapper); - * // result will be [{ id: 2, name: 'amy' }] since only this element has a matching id that is equal to seconds array's element. - */ -declare function intersectionBy(firstArr: readonly T[], secondArr: readonly U[], mapper: (item: T | U) => unknown): T[]; - -export { intersectionBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionBy.js deleted file mode 100644 index 9dd44e2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionBy.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function intersectionBy(firstArr, secondArr, mapper) { - const result = []; - const mappedSecondSet = new Set(secondArr.map(mapper)); - for (let i = 0; i < firstArr.length; i++) { - const item = firstArr[i]; - const mappedItem = mapper(item); - if (mappedSecondSet.has(mappedItem)) { - result.push(item); - mappedSecondSet.delete(mappedItem); - } - } - return result; -} - -exports.intersectionBy = intersectionBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionBy.mjs deleted file mode 100644 index c40fb8c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionBy.mjs +++ /dev/null @@ -1,15 +0,0 @@ -function intersectionBy(firstArr, secondArr, mapper) { - const result = []; - const mappedSecondSet = new Set(secondArr.map(mapper)); - for (let i = 0; i < firstArr.length; i++) { - const item = firstArr[i]; - const mappedItem = mapper(item); - if (mappedSecondSet.has(mappedItem)) { - result.push(item); - mappedSecondSet.delete(mappedItem); - } - } - return result; -} - -export { intersectionBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionWith.d.mts deleted file mode 100644 index e5c6f5c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionWith.d.mts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Returns the intersection of two arrays based on a custom equality function. - * - * This function takes two arrays and a custom equality function. It returns a new array containing - * the elements from the first array that have matching elements in the second array, as determined - * by the custom equality function. It effectively filters out any elements from the first array that - * do not have corresponding matches in the second array according to the equality function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @param {T[]} firstArr - The first array to compare. - * @param {U[]} secondArr - The second array to compare. - * @param {(x: T, y: U) => boolean} areItemsEqual - A custom function to determine if two elements are equal. - * This function takes two arguments, one from each array, and returns `true` if the elements are considered equal, and `false` otherwise. - * @returns {T[]} A new array containing the elements from the first array that have corresponding matches in the second array according to the custom equality function. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const array2 = [{ id: 2 }, { id: 4 }]; - * const areItemsEqual = (a, b) => a.id === b.id; - * const result = intersectionWith(array1, array2, areItemsEqual); - * // result will be [{ id: 2 }] since this element has a matching id in both arrays. - * - * @example - * const array1 = [ - * { id: 1, name: 'jane' }, - * { id: 2, name: 'amy' }, - * { id: 3, name: 'michael' }, - * ]; - * const array2 = [2, 4]; - * const areItemsEqual = (a, b) => a.id === b; - * const result = intersectionWith(array1, array2, areItemsEqual); - * // result will be [{ id: 2, name: 'amy' }] since this element has a matching id that is equal to seconds array's element. - */ -declare function intersectionWith(firstArr: readonly T[], secondArr: readonly U[], areItemsEqual: (x: T, y: U) => boolean): T[]; - -export { intersectionWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionWith.d.ts deleted file mode 100644 index e5c6f5c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionWith.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Returns the intersection of two arrays based on a custom equality function. - * - * This function takes two arrays and a custom equality function. It returns a new array containing - * the elements from the first array that have matching elements in the second array, as determined - * by the custom equality function. It effectively filters out any elements from the first array that - * do not have corresponding matches in the second array according to the equality function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @param {T[]} firstArr - The first array to compare. - * @param {U[]} secondArr - The second array to compare. - * @param {(x: T, y: U) => boolean} areItemsEqual - A custom function to determine if two elements are equal. - * This function takes two arguments, one from each array, and returns `true` if the elements are considered equal, and `false` otherwise. - * @returns {T[]} A new array containing the elements from the first array that have corresponding matches in the second array according to the custom equality function. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const array2 = [{ id: 2 }, { id: 4 }]; - * const areItemsEqual = (a, b) => a.id === b.id; - * const result = intersectionWith(array1, array2, areItemsEqual); - * // result will be [{ id: 2 }] since this element has a matching id in both arrays. - * - * @example - * const array1 = [ - * { id: 1, name: 'jane' }, - * { id: 2, name: 'amy' }, - * { id: 3, name: 'michael' }, - * ]; - * const array2 = [2, 4]; - * const areItemsEqual = (a, b) => a.id === b; - * const result = intersectionWith(array1, array2, areItemsEqual); - * // result will be [{ id: 2, name: 'amy' }] since this element has a matching id that is equal to seconds array's element. - */ -declare function intersectionWith(firstArr: readonly T[], secondArr: readonly U[], areItemsEqual: (x: T, y: U) => boolean): T[]; - -export { intersectionWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionWith.js deleted file mode 100644 index 721c210..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionWith.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function intersectionWith(firstArr, secondArr, areItemsEqual) { - return firstArr.filter(firstItem => { - return secondArr.some(secondItem => { - return areItemsEqual(firstItem, secondItem); - }); - }); -} - -exports.intersectionWith = intersectionWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionWith.mjs deleted file mode 100644 index 5c7a5c2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/intersectionWith.mjs +++ /dev/null @@ -1,9 +0,0 @@ -function intersectionWith(firstArr, secondArr, areItemsEqual) { - return firstArr.filter(firstItem => { - return secondArr.some(secondItem => { - return areItemsEqual(firstItem, secondItem); - }); - }); -} - -export { intersectionWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubset.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubset.d.mts deleted file mode 100644 index 0c52f72..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubset.d.mts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Checks if the `subset` array is entirely contained within the `superset` array. - * - * - * @template T - The type of elements contained in the arrays. - * @param {T[]} superset - The array that may contain all elements of the subset. - * @param {T[]} subset - The array to check against the superset. - * @returns {boolean} - Returns `true` if all elements of the `subset` are present in the `superset`, otherwise returns `false`. - * - * @example - * ```typescript - * const superset = [1, 2, 3, 4, 5]; - * const subset = [2, 3, 4]; - * isSubset(superset, subset); // true - * ``` - * - * @example - * ```typescript - * const superset = ['a', 'b', 'c']; - * const subset = ['a', 'd']; - * isSubset(superset, subset); // false - * ``` - */ -declare function isSubset(superset: readonly T[], subset: readonly T[]): boolean; - -export { isSubset }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubset.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubset.d.ts deleted file mode 100644 index 0c52f72..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubset.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Checks if the `subset` array is entirely contained within the `superset` array. - * - * - * @template T - The type of elements contained in the arrays. - * @param {T[]} superset - The array that may contain all elements of the subset. - * @param {T[]} subset - The array to check against the superset. - * @returns {boolean} - Returns `true` if all elements of the `subset` are present in the `superset`, otherwise returns `false`. - * - * @example - * ```typescript - * const superset = [1, 2, 3, 4, 5]; - * const subset = [2, 3, 4]; - * isSubset(superset, subset); // true - * ``` - * - * @example - * ```typescript - * const superset = ['a', 'b', 'c']; - * const subset = ['a', 'd']; - * isSubset(superset, subset); // false - * ``` - */ -declare function isSubset(superset: readonly T[], subset: readonly T[]): boolean; - -export { isSubset }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubset.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubset.js deleted file mode 100644 index 1cd0f23..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubset.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const difference = require('./difference.js'); - -function isSubset(superset, subset) { - return difference.difference(subset, superset).length === 0; -} - -exports.isSubset = isSubset; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubset.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubset.mjs deleted file mode 100644 index 5b54581..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubset.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { difference } from './difference.mjs'; - -function isSubset(superset, subset) { - return difference(subset, superset).length === 0; -} - -export { isSubset }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubsetWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubsetWith.d.mts deleted file mode 100644 index 0a2fc20..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubsetWith.d.mts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Checks if the `subset` array is entirely contained within the `superset` array based on a custom equality function. - * - * This function takes two arrays and a custom comparison function. It returns a boolean indicating - * whether all elements in the subset array are present in the superset array, as determined by the provided - * custom equality function. - * - * @template T - The type of elements contained in the arrays. - * @param {T[]} superset - The array that may contain all elements of the subset. - * @param {T[]} subset - The array to check against the superset. - * @param {(x: T, y: T) => boolean} areItemsEqual - A function to determine if two items are equal. - * @returns {boolean} - Returns `true` if all elements of the subset are present in the superset - * according to the custom equality function, otherwise returns `false`. - * - * @example - * ```typescript - * const superset = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const subset = [{ id: 2 }, { id: 1 }]; - * const areItemsEqual = (a, b) => a.id === b.id; - * isSubsetWith(superset, subset, areItemsEqual); // true - * ``` - * - * @example - * ```typescript - * const superset = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const subset = [{ id: 4 }]; - * const areItemsEqual = (a, b) => a.id === b.id; - * isSubsetWith(superset, subset, areItemsEqual); // false - * ``` - */ -declare function isSubsetWith(superset: readonly T[], subset: readonly T[], areItemsEqual: (x: T, y: T) => boolean): boolean; - -export { isSubsetWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubsetWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubsetWith.d.ts deleted file mode 100644 index 0a2fc20..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubsetWith.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Checks if the `subset` array is entirely contained within the `superset` array based on a custom equality function. - * - * This function takes two arrays and a custom comparison function. It returns a boolean indicating - * whether all elements in the subset array are present in the superset array, as determined by the provided - * custom equality function. - * - * @template T - The type of elements contained in the arrays. - * @param {T[]} superset - The array that may contain all elements of the subset. - * @param {T[]} subset - The array to check against the superset. - * @param {(x: T, y: T) => boolean} areItemsEqual - A function to determine if two items are equal. - * @returns {boolean} - Returns `true` if all elements of the subset are present in the superset - * according to the custom equality function, otherwise returns `false`. - * - * @example - * ```typescript - * const superset = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const subset = [{ id: 2 }, { id: 1 }]; - * const areItemsEqual = (a, b) => a.id === b.id; - * isSubsetWith(superset, subset, areItemsEqual); // true - * ``` - * - * @example - * ```typescript - * const superset = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const subset = [{ id: 4 }]; - * const areItemsEqual = (a, b) => a.id === b.id; - * isSubsetWith(superset, subset, areItemsEqual); // false - * ``` - */ -declare function isSubsetWith(superset: readonly T[], subset: readonly T[], areItemsEqual: (x: T, y: T) => boolean): boolean; - -export { isSubsetWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubsetWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubsetWith.js deleted file mode 100644 index 82051ff..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubsetWith.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const differenceWith = require('./differenceWith.js'); - -function isSubsetWith(superset, subset, areItemsEqual) { - return differenceWith.differenceWith(subset, superset, areItemsEqual).length === 0; -} - -exports.isSubsetWith = isSubsetWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubsetWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubsetWith.mjs deleted file mode 100644 index 3e39bcb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/isSubsetWith.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { differenceWith } from './differenceWith.mjs'; - -function isSubsetWith(superset, subset, areItemsEqual) { - return differenceWith(subset, superset, areItemsEqual).length === 0; -} - -export { isSubsetWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/keyBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/keyBy.d.mts deleted file mode 100644 index df84f4f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/keyBy.d.mts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Maps each element of an array based on a provided key-generating function. - * - * This function takes an array and a function that generates a key from each element. It returns - * an object where the keys are the generated keys and the values are the corresponding elements. - * If there are multiple elements generating the same key, the last element among them is used - * as the value. - * - * @template T - The type of elements in the array. - * @template K - The type of keys. - * @param {T[]} arr - The array of elements to be mapped. - * @param {(item: T, index: number, array: readonly T[]) => K} getKeyFromItem - A function that generates a key from an element, its index, and the array. - * @returns {Record} An object where keys are mapped to each element of an array. - * - * @example - * const array = [ - * { category: 'fruit', name: 'apple' }, - * { category: 'fruit', name: 'banana' }, - * { category: 'vegetable', name: 'carrot' } - * ]; - * const result = keyBy(array, item => item.category); - * // result will be: - * // { - * // fruit: { category: 'fruit', name: 'banana' }, - * // vegetable: { category: 'vegetable', name: 'carrot' } - * // } - * - * @example - * // Using index parameter - * const items = ['a', 'b', 'c']; - * const result = keyBy(items, (item, index) => index); - * // result will be: { 0: 'a', 1: 'b', 2: 'c' } - */ -declare function keyBy(arr: readonly T[], getKeyFromItem: (item: T, index: number, array: readonly T[]) => K): Record; - -export { keyBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/keyBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/keyBy.d.ts deleted file mode 100644 index df84f4f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/keyBy.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Maps each element of an array based on a provided key-generating function. - * - * This function takes an array and a function that generates a key from each element. It returns - * an object where the keys are the generated keys and the values are the corresponding elements. - * If there are multiple elements generating the same key, the last element among them is used - * as the value. - * - * @template T - The type of elements in the array. - * @template K - The type of keys. - * @param {T[]} arr - The array of elements to be mapped. - * @param {(item: T, index: number, array: readonly T[]) => K} getKeyFromItem - A function that generates a key from an element, its index, and the array. - * @returns {Record} An object where keys are mapped to each element of an array. - * - * @example - * const array = [ - * { category: 'fruit', name: 'apple' }, - * { category: 'fruit', name: 'banana' }, - * { category: 'vegetable', name: 'carrot' } - * ]; - * const result = keyBy(array, item => item.category); - * // result will be: - * // { - * // fruit: { category: 'fruit', name: 'banana' }, - * // vegetable: { category: 'vegetable', name: 'carrot' } - * // } - * - * @example - * // Using index parameter - * const items = ['a', 'b', 'c']; - * const result = keyBy(items, (item, index) => index); - * // result will be: { 0: 'a', 1: 'b', 2: 'c' } - */ -declare function keyBy(arr: readonly T[], getKeyFromItem: (item: T, index: number, array: readonly T[]) => K): Record; - -export { keyBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/keyBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/keyBy.js deleted file mode 100644 index cf7eb18..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/keyBy.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function keyBy(arr, getKeyFromItem) { - const result = {}; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - const key = getKeyFromItem(item, i, arr); - result[key] = item; - } - return result; -} - -exports.keyBy = keyBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/keyBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/keyBy.mjs deleted file mode 100644 index 6efc6f5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/keyBy.mjs +++ /dev/null @@ -1,11 +0,0 @@ -function keyBy(arr, getKeyFromItem) { - const result = {}; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - const key = getKeyFromItem(item, i, arr); - result[key] = item; - } - return result; -} - -export { keyBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/last.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/last.d.mts deleted file mode 100644 index 5ae9e0a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/last.d.mts +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Returns the last element of an array. - * - * This function takes an array and returns the last element of the array. - * If the array is empty, the function returns `undefined`. - * - * Unlike some implementations, this function is optimized for performance - * by directly accessing the last index of the array. - * - * @template T - The type of elements in the array. - * @param {[...T[], T]} arr - The array from which to get the last element. - * @returns {T} The last element of the array, or `undefined` if the array is empty. - * - * @example - * const arr = [1, 2, 3]; - * const lastElement = last(arr); - * // lastElement will be 3 - * - * const emptyArr: number[] = []; - * const noElement = last(emptyArr); - * // noElement will be undefined - */ -declare function last(arr: readonly [...T[], T]): T; -/** - * Returns the last element of an array. - * - * This function takes an array and returns the last element of the array. - * If the array is empty, the function returns `undefined`. - * - * Unlike some implementations, this function is optimized for performance - * by directly accessing the last index of the array. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array from which to get the last element. - * @returns {T | undefined} The last element of the array, or `undefined` if the array is empty. - * - * @example - * const arr = [1, 2, 3]; - * const lastElement = last(arr); - * // lastElement will be 3 - * - * const emptyArr: number[] = []; - * const noElement = last(emptyArr); - * // noElement will be undefined - */ -declare function last(arr: readonly T[]): T | undefined; - -export { last }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/last.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/last.d.ts deleted file mode 100644 index 5ae9e0a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/last.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Returns the last element of an array. - * - * This function takes an array and returns the last element of the array. - * If the array is empty, the function returns `undefined`. - * - * Unlike some implementations, this function is optimized for performance - * by directly accessing the last index of the array. - * - * @template T - The type of elements in the array. - * @param {[...T[], T]} arr - The array from which to get the last element. - * @returns {T} The last element of the array, or `undefined` if the array is empty. - * - * @example - * const arr = [1, 2, 3]; - * const lastElement = last(arr); - * // lastElement will be 3 - * - * const emptyArr: number[] = []; - * const noElement = last(emptyArr); - * // noElement will be undefined - */ -declare function last(arr: readonly [...T[], T]): T; -/** - * Returns the last element of an array. - * - * This function takes an array and returns the last element of the array. - * If the array is empty, the function returns `undefined`. - * - * Unlike some implementations, this function is optimized for performance - * by directly accessing the last index of the array. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array from which to get the last element. - * @returns {T | undefined} The last element of the array, or `undefined` if the array is empty. - * - * @example - * const arr = [1, 2, 3]; - * const lastElement = last(arr); - * // lastElement will be 3 - * - * const emptyArr: number[] = []; - * const noElement = last(emptyArr); - * // noElement will be undefined - */ -declare function last(arr: readonly T[]): T | undefined; - -export { last }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/last.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/last.js deleted file mode 100644 index 7567438..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/last.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function last(arr) { - return arr[arr.length - 1]; -} - -exports.last = last; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/last.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/last.mjs deleted file mode 100644 index 22cf184..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/last.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function last(arr) { - return arr[arr.length - 1]; -} - -export { last }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/limitAsync.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/limitAsync.d.mts deleted file mode 100644 index 0605d33..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/limitAsync.d.mts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Wraps an async function to limit the number of concurrent executions. - * - * This function creates a wrapper around an async callback that ensures at most - * `concurrency` number of executions can run simultaneously. Additional calls will - * wait until a slot becomes available. - * - * @template F - The type of the async function to wrap. - * @param {F} callback The async function to wrap with concurrency control. - * @param {number} concurrency Maximum number of concurrent executions allowed. - * @returns {F} A wrapped version of the callback with concurrency limiting. - * @example - * const limitedFetch = limitAsync(async (url) => { - * return await fetch(url); - * }, 3); - * - * // Only 3 fetches will run concurrently - * const urls = ['url1', 'url2', 'url3', 'url4', 'url5']; - * await Promise.all(urls.map(url => limitedFetch(url))); - * - * @example - * const processItem = async (item) => { - * // Expensive async operation - * return await heavyComputation(item); - * }; - * - * const limitedProcess = limitAsync(processItem, 2); - * const items = [1, 2, 3, 4, 5]; - * // At most 2 items will be processed concurrently - * await Promise.all(items.map(item => limitedProcess(item))); - */ -declare function limitAsync Promise>(callback: F, concurrency: number): F; - -export { limitAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/limitAsync.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/limitAsync.d.ts deleted file mode 100644 index 0605d33..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/limitAsync.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Wraps an async function to limit the number of concurrent executions. - * - * This function creates a wrapper around an async callback that ensures at most - * `concurrency` number of executions can run simultaneously. Additional calls will - * wait until a slot becomes available. - * - * @template F - The type of the async function to wrap. - * @param {F} callback The async function to wrap with concurrency control. - * @param {number} concurrency Maximum number of concurrent executions allowed. - * @returns {F} A wrapped version of the callback with concurrency limiting. - * @example - * const limitedFetch = limitAsync(async (url) => { - * return await fetch(url); - * }, 3); - * - * // Only 3 fetches will run concurrently - * const urls = ['url1', 'url2', 'url3', 'url4', 'url5']; - * await Promise.all(urls.map(url => limitedFetch(url))); - * - * @example - * const processItem = async (item) => { - * // Expensive async operation - * return await heavyComputation(item); - * }; - * - * const limitedProcess = limitAsync(processItem, 2); - * const items = [1, 2, 3, 4, 5]; - * // At most 2 items will be processed concurrently - * await Promise.all(items.map(item => limitedProcess(item))); - */ -declare function limitAsync Promise>(callback: F, concurrency: number): F; - -export { limitAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/limitAsync.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/limitAsync.js deleted file mode 100644 index 530181e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/limitAsync.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const semaphore = require('../promise/semaphore.js'); - -function limitAsync(callback, concurrency) { - const semaphore$1 = new semaphore.Semaphore(concurrency); - return async function (...args) { - try { - await semaphore$1.acquire(); - return await callback.apply(this, args); - } - finally { - semaphore$1.release(); - } - }; -} - -exports.limitAsync = limitAsync; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/limitAsync.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/limitAsync.mjs deleted file mode 100644 index 9926e36..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/limitAsync.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { Semaphore } from '../promise/semaphore.mjs'; - -function limitAsync(callback, concurrency) { - const semaphore = new Semaphore(concurrency); - return async function (...args) { - try { - await semaphore.acquire(); - return await callback.apply(this, args); - } - finally { - semaphore.release(); - } - }; -} - -export { limitAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/mapAsync.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/mapAsync.d.mts deleted file mode 100644 index b6f23d5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/mapAsync.d.mts +++ /dev/null @@ -1,34 +0,0 @@ -interface MapAsyncOptions { - concurrency?: number; -} -/** - * Transforms each element in an array using an async callback function and returns - * a promise that resolves to an array of transformed values. - * - * @template T - The type of elements in the input array. - * @template R - The type of elements in the output array. - * @param {readonly T[]} array The array to transform. - * @param {(item: T, index: number, array: readonly T[]) => Promise} callback An async function that transforms each element. - * @param {MapAsyncOptions} [options] Optional configuration object. - * @param {number} [options.concurrency] Maximum number of concurrent async operations. If not specified, all operations run concurrently. - * @returns {Promise} A promise that resolves to an array of transformed values. - * @example - * const users = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const userDetails = await mapAsync(users, async (user) => { - * return await fetchUserDetails(user.id); - * }); - * // Returns: [{ id: 1, name: '...' }, { id: 2, name: '...' }, { id: 3, name: '...' }] - * - * @example - * // With concurrency limit - * const numbers = [1, 2, 3, 4, 5]; - * const results = await mapAsync( - * numbers, - * async (n) => await slowOperation(n), - * { concurrency: 2 } - * ); - * // Processes at most 2 operations concurrently - */ -declare function mapAsync(array: readonly T[], callback: (item: T, index: number, array: readonly T[]) => Promise, options?: MapAsyncOptions): Promise; - -export { mapAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/mapAsync.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/mapAsync.d.ts deleted file mode 100644 index b6f23d5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/mapAsync.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -interface MapAsyncOptions { - concurrency?: number; -} -/** - * Transforms each element in an array using an async callback function and returns - * a promise that resolves to an array of transformed values. - * - * @template T - The type of elements in the input array. - * @template R - The type of elements in the output array. - * @param {readonly T[]} array The array to transform. - * @param {(item: T, index: number, array: readonly T[]) => Promise} callback An async function that transforms each element. - * @param {MapAsyncOptions} [options] Optional configuration object. - * @param {number} [options.concurrency] Maximum number of concurrent async operations. If not specified, all operations run concurrently. - * @returns {Promise} A promise that resolves to an array of transformed values. - * @example - * const users = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const userDetails = await mapAsync(users, async (user) => { - * return await fetchUserDetails(user.id); - * }); - * // Returns: [{ id: 1, name: '...' }, { id: 2, name: '...' }, { id: 3, name: '...' }] - * - * @example - * // With concurrency limit - * const numbers = [1, 2, 3, 4, 5]; - * const results = await mapAsync( - * numbers, - * async (n) => await slowOperation(n), - * { concurrency: 2 } - * ); - * // Processes at most 2 operations concurrently - */ -declare function mapAsync(array: readonly T[], callback: (item: T, index: number, array: readonly T[]) => Promise, options?: MapAsyncOptions): Promise; - -export { mapAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/mapAsync.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/mapAsync.js deleted file mode 100644 index 2476b2d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/mapAsync.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const limitAsync = require('./limitAsync.js'); - -function mapAsync(array, callback, options) { - if (options?.concurrency != null) { - callback = limitAsync.limitAsync(callback, options.concurrency); - } - return Promise.all(array.map(callback)); -} - -exports.mapAsync = mapAsync; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/mapAsync.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/mapAsync.mjs deleted file mode 100644 index 1301397..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/mapAsync.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { limitAsync } from './limitAsync.mjs'; - -function mapAsync(array, callback, options) { - if (options?.concurrency != null) { - callback = limitAsync(callback, options.concurrency); - } - return Promise.all(array.map(callback)); -} - -export { mapAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/maxBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/maxBy.d.mts deleted file mode 100644 index 3d113db..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/maxBy.d.mts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Finds the element in an array that has the maximum value when applying - * the `getValue` function to each element. - * - * @template T - The type of elements in the array. - * @param {[T, ...T[]]} items The nonempty array of elements to search. - * @param {(element: T) => number} getValue A function that selects a numeric value from each element. - * @returns {T} The element with the maximum value as determined by the `getValue` function. - * @example - * maxBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 3 } - * maxBy([], x => x.a); // Returns: undefined - * maxBy( - * [ - * { name: 'john', age: 30 }, - * { name: 'jane', age: 28 }, - * { name: 'joe', age: 26 }, - * ], - * x => x.age - * ); // Returns: { name: 'john', age: 30 } - */ -declare function maxBy(items: readonly [T, ...T[]], getValue: (element: T, index: number, array: readonly T[]) => number): T; -/** - * Finds the element in an array that has the maximum value when applying - * the `getValue` function to each element. - * - * @template T - The type of elements in the array. - * @param {T[]} items The array of elements to search. - * @param {(element: T, index: number, array: readonly T[]) => number} getValue A function that selects a numeric value from each element. - * @returns {T | undefined} The element with the maximum value as determined by the `getValue` function, - * or `undefined` if the array is empty. - * @example - * maxBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 3 } - * maxBy([], x => x.a); // Returns: undefined - * maxBy( - * [ - * { name: 'john', age: 30 }, - * { name: 'jane', age: 28 }, - * { name: 'joe', age: 26 }, - * ], - * x => x.age - * ); // Returns: { name: 'john', age: 30 } - */ -declare function maxBy(items: readonly T[], getValue: (element: T, index: number, array: readonly T[]) => number): T | undefined; - -export { maxBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/maxBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/maxBy.d.ts deleted file mode 100644 index 3d113db..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/maxBy.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Finds the element in an array that has the maximum value when applying - * the `getValue` function to each element. - * - * @template T - The type of elements in the array. - * @param {[T, ...T[]]} items The nonempty array of elements to search. - * @param {(element: T) => number} getValue A function that selects a numeric value from each element. - * @returns {T} The element with the maximum value as determined by the `getValue` function. - * @example - * maxBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 3 } - * maxBy([], x => x.a); // Returns: undefined - * maxBy( - * [ - * { name: 'john', age: 30 }, - * { name: 'jane', age: 28 }, - * { name: 'joe', age: 26 }, - * ], - * x => x.age - * ); // Returns: { name: 'john', age: 30 } - */ -declare function maxBy(items: readonly [T, ...T[]], getValue: (element: T, index: number, array: readonly T[]) => number): T; -/** - * Finds the element in an array that has the maximum value when applying - * the `getValue` function to each element. - * - * @template T - The type of elements in the array. - * @param {T[]} items The array of elements to search. - * @param {(element: T, index: number, array: readonly T[]) => number} getValue A function that selects a numeric value from each element. - * @returns {T | undefined} The element with the maximum value as determined by the `getValue` function, - * or `undefined` if the array is empty. - * @example - * maxBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 3 } - * maxBy([], x => x.a); // Returns: undefined - * maxBy( - * [ - * { name: 'john', age: 30 }, - * { name: 'jane', age: 28 }, - * { name: 'joe', age: 26 }, - * ], - * x => x.age - * ); // Returns: { name: 'john', age: 30 } - */ -declare function maxBy(items: readonly T[], getValue: (element: T, index: number, array: readonly T[]) => number): T | undefined; - -export { maxBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/maxBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/maxBy.js deleted file mode 100644 index fe7349d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/maxBy.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function maxBy(items, getValue) { - if (items.length === 0) { - return undefined; - } - let maxElement = items[0]; - let max = getValue(maxElement, 0, items); - for (let i = 1; i < items.length; i++) { - const element = items[i]; - const value = getValue(element, i, items); - if (value > max) { - max = value; - maxElement = element; - } - } - return maxElement; -} - -exports.maxBy = maxBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/maxBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/maxBy.mjs deleted file mode 100644 index 4e54e8b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/maxBy.mjs +++ /dev/null @@ -1,18 +0,0 @@ -function maxBy(items, getValue) { - if (items.length === 0) { - return undefined; - } - let maxElement = items[0]; - let max = getValue(maxElement, 0, items); - for (let i = 1; i < items.length; i++) { - const element = items[i]; - const value = getValue(element, i, items); - if (value > max) { - max = value; - maxElement = element; - } - } - return maxElement; -} - -export { maxBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/minBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/minBy.d.mts deleted file mode 100644 index 481adb6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/minBy.d.mts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Finds the element in an array that has the minimum value when applying - * the `getValue` function to each element. - * - * @template T - The type of elements in the array. - * @param {[T, ...T[]]} items The nonempty array of elements to search. - * @param {(element: T) => number} getValue A function that selects a numeric value from each element. - * @returns {T} The element with the minimum value as determined by the `getValue` function. - * @example - * minBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 1 } - * minBy([], x => x.a); // Returns: undefined - * minBy( - * [ - * { name: 'john', age: 30 }, - * { name: 'jane', age: 28 }, - * { name: 'joe', age: 26 }, - * ], - * x => x.age - * ); // Returns: { name: 'joe', age: 26 } - */ -declare function minBy(items: readonly [T, ...T[]], getValue: (element: T, index: number, array: readonly T[]) => number): T; -/** - * Finds the element in an array that has the minimum value when applying - * the `getValue` function to each element. - * - * @template T - The type of elements in the array. - * @param {T[]} items The array of elements to search. - * @param {(element: T, index: number, array: readonly T[]) => number} getValue A function that selects a numeric value from each element. - * @returns {T | undefined} The element with the minimum value as determined by the `getValue` function, - * or `undefined` if the array is empty. - * @example - * minBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 1 } - * minBy([], x => x.a); // Returns: undefined - * minBy( - * [ - * { name: 'john', age: 30 }, - * { name: 'jane', age: 28 }, - * { name: 'joe', age: 26 }, - * ], - * x => x.age - * ); // Returns: { name: 'joe', age: 26 } - */ -declare function minBy(items: readonly T[], getValue: (element: T, index: number, array: readonly T[]) => number): T | undefined; - -export { minBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/minBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/minBy.d.ts deleted file mode 100644 index 481adb6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/minBy.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Finds the element in an array that has the minimum value when applying - * the `getValue` function to each element. - * - * @template T - The type of elements in the array. - * @param {[T, ...T[]]} items The nonempty array of elements to search. - * @param {(element: T) => number} getValue A function that selects a numeric value from each element. - * @returns {T} The element with the minimum value as determined by the `getValue` function. - * @example - * minBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 1 } - * minBy([], x => x.a); // Returns: undefined - * minBy( - * [ - * { name: 'john', age: 30 }, - * { name: 'jane', age: 28 }, - * { name: 'joe', age: 26 }, - * ], - * x => x.age - * ); // Returns: { name: 'joe', age: 26 } - */ -declare function minBy(items: readonly [T, ...T[]], getValue: (element: T, index: number, array: readonly T[]) => number): T; -/** - * Finds the element in an array that has the minimum value when applying - * the `getValue` function to each element. - * - * @template T - The type of elements in the array. - * @param {T[]} items The array of elements to search. - * @param {(element: T, index: number, array: readonly T[]) => number} getValue A function that selects a numeric value from each element. - * @returns {T | undefined} The element with the minimum value as determined by the `getValue` function, - * or `undefined` if the array is empty. - * @example - * minBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 1 } - * minBy([], x => x.a); // Returns: undefined - * minBy( - * [ - * { name: 'john', age: 30 }, - * { name: 'jane', age: 28 }, - * { name: 'joe', age: 26 }, - * ], - * x => x.age - * ); // Returns: { name: 'joe', age: 26 } - */ -declare function minBy(items: readonly T[], getValue: (element: T, index: number, array: readonly T[]) => number): T | undefined; - -export { minBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/minBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/minBy.js deleted file mode 100644 index 0f480d0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/minBy.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function minBy(items, getValue) { - if (items.length === 0) { - return undefined; - } - let minElement = items[0]; - let min = getValue(minElement, 0, items); - for (let i = 1; i < items.length; i++) { - const element = items[i]; - const value = getValue(element, i, items); - if (value < min) { - min = value; - minElement = element; - } - } - return minElement; -} - -exports.minBy = minBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/minBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/minBy.mjs deleted file mode 100644 index b1fba37..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/minBy.mjs +++ /dev/null @@ -1,18 +0,0 @@ -function minBy(items, getValue) { - if (items.length === 0) { - return undefined; - } - let minElement = items[0]; - let min = getValue(minElement, 0, items); - for (let i = 1; i < items.length; i++) { - const element = items[i]; - const value = getValue(element, i, items); - if (value < min) { - min = value; - minElement = element; - } - } - return minElement; -} - -export { minBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/orderBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/orderBy.d.mts deleted file mode 100644 index f661f59..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/orderBy.d.mts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Sorts an array of objects based on the given `criteria` and their corresponding order directions. - * - * - If you provide keys, it sorts the objects by the values of those keys. - * - If you provide functions, it sorts based on the values returned by those functions. - * - * The function returns the array of objects sorted in corresponding order directions. - * If two objects have the same value for the current criterion, it uses the next criterion to determine their order. - * If the number of orders is less than the number of criteria, it uses the last order for the rest of the criteria. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array of objects to be sorted. - * @param {Array<((item: T) => unknown) | keyof T>} criteria - The criteria for sorting. This can be an array of object keys or functions that return values used for sorting. - * @param {Array<'asc' | 'desc'>} orders - An array of order directions ('asc' for ascending or 'desc' for descending). - * @returns {T[]} - The sorted array. - * - * @example - * // Sort an array of objects by 'user' in ascending order and 'age' in descending order. - * const users = [ - * { user: 'fred', age: 48 }, - * { user: 'barney', age: 34 }, - * { user: 'fred', age: 40 }, - * { user: 'barney', age: 36 }, - * ]; - * - * const result = orderBy(users, [obj => obj.user, 'age'], ['asc', 'desc']); - * // result will be: - * // [ - * // { user: 'barney', age: 36 }, - * // { user: 'barney', age: 34 }, - * // { user: 'fred', age: 48 }, - * // { user: 'fred', age: 40 }, - * // ] - */ -declare function orderBy(arr: readonly T[], criteria: Array<((item: T) => unknown) | keyof T>, orders: Array<'asc' | 'desc'>): T[]; - -export { orderBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/orderBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/orderBy.d.ts deleted file mode 100644 index f661f59..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/orderBy.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Sorts an array of objects based on the given `criteria` and their corresponding order directions. - * - * - If you provide keys, it sorts the objects by the values of those keys. - * - If you provide functions, it sorts based on the values returned by those functions. - * - * The function returns the array of objects sorted in corresponding order directions. - * If two objects have the same value for the current criterion, it uses the next criterion to determine their order. - * If the number of orders is less than the number of criteria, it uses the last order for the rest of the criteria. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array of objects to be sorted. - * @param {Array<((item: T) => unknown) | keyof T>} criteria - The criteria for sorting. This can be an array of object keys or functions that return values used for sorting. - * @param {Array<'asc' | 'desc'>} orders - An array of order directions ('asc' for ascending or 'desc' for descending). - * @returns {T[]} - The sorted array. - * - * @example - * // Sort an array of objects by 'user' in ascending order and 'age' in descending order. - * const users = [ - * { user: 'fred', age: 48 }, - * { user: 'barney', age: 34 }, - * { user: 'fred', age: 40 }, - * { user: 'barney', age: 36 }, - * ]; - * - * const result = orderBy(users, [obj => obj.user, 'age'], ['asc', 'desc']); - * // result will be: - * // [ - * // { user: 'barney', age: 36 }, - * // { user: 'barney', age: 34 }, - * // { user: 'fred', age: 48 }, - * // { user: 'fred', age: 40 }, - * // ] - */ -declare function orderBy(arr: readonly T[], criteria: Array<((item: T) => unknown) | keyof T>, orders: Array<'asc' | 'desc'>): T[]; - -export { orderBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/orderBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/orderBy.js deleted file mode 100644 index 1222952..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/orderBy.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const compareValues = require('../_internal/compareValues.js'); - -function orderBy(arr, criteria, orders) { - return arr.slice().sort((a, b) => { - const ordersLength = orders.length; - for (let i = 0; i < criteria.length; i++) { - const order = ordersLength > i ? orders[i] : orders[ordersLength - 1]; - const criterion = criteria[i]; - const criterionIsFunction = typeof criterion === 'function'; - const valueA = criterionIsFunction ? criterion(a) : a[criterion]; - const valueB = criterionIsFunction ? criterion(b) : b[criterion]; - const result = compareValues.compareValues(valueA, valueB, order); - if (result !== 0) { - return result; - } - } - return 0; - }); -} - -exports.orderBy = orderBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/orderBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/orderBy.mjs deleted file mode 100644 index 38a3d0f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/orderBy.mjs +++ /dev/null @@ -1,21 +0,0 @@ -import { compareValues } from '../_internal/compareValues.mjs'; - -function orderBy(arr, criteria, orders) { - return arr.slice().sort((a, b) => { - const ordersLength = orders.length; - for (let i = 0; i < criteria.length; i++) { - const order = ordersLength > i ? orders[i] : orders[ordersLength - 1]; - const criterion = criteria[i]; - const criterionIsFunction = typeof criterion === 'function'; - const valueA = criterionIsFunction ? criterion(a) : a[criterion]; - const valueB = criterionIsFunction ? criterion(b) : b[criterion]; - const result = compareValues(valueA, valueB, order); - if (result !== 0) { - return result; - } - } - return 0; - }); -} - -export { orderBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/partition.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/partition.d.mts deleted file mode 100644 index 9d7b376..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/partition.d.mts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Splits an array into two groups based on a predicate function. - * - * This function takes an array and a predicate function. It returns a tuple of two arrays: - * the first array contains elements for which the predicate function returns true, and - * the second array contains elements for which the predicate function returns false. - * - * @template T - The type of elements in the array. - * @template {T} U - The type being filtered for. - * @param {T[]} arr - The array to partition. - * @param {(value: T, index: number, array: readonly T[]) => value is U} isInTruthy - A type guard that determines whether an - * element should be placed in the truthy array. The function is called with each element - * of the array and its index. - * @returns {[U[], Exclude[]]} A tuple containing two arrays: the first array contains elements for - * which the predicate returned true, and the second array contains elements for which the - * predicate returned false. - * - * @example - * const array = [1, 2, 3, 4] as const; - * const isEven = (x: number): x is 2 | 4 => x % 2 === 0; - * const [even, odd]: [(2 | 4)[], (2 | 4)[]] = partition(array, isEven); - * // even will be [2, 4], and odd will be [1, 3] - */ -declare function partition(arr: readonly T[], isInTruthy: (value: T, index: number, array: readonly T[]) => value is U): [truthy: U[], falsy: Array>]; -/** - * Splits an array into two groups based on a predicate function. - * - * This function takes an array and a predicate function. It returns a tuple of two arrays: - * the first array contains elements for which the predicate function returns true, and - * the second array contains elements for which the predicate function returns false. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to partition. - * @param {(value: T, index: number) => boolean} isInTruthy - A predicate function that determines - * whether an element should be placed in the truthy array. The function is called with each - * element of the array and its index. - * @returns {[T[], T[]]} A tuple containing two arrays: the first array contains elements for - * which the predicate returned true, and the second array contains elements for which the - * predicate returned false. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const isEven = x => x % 2 === 0; - * const [even, odd] = partition(array, isEven); - * // even will be [2, 4], and odd will be [1, 3, 5] - */ -declare function partition(arr: readonly T[], isInTruthy: (value: T, index: number, array: readonly T[]) => boolean): [truthy: T[], falsy: T[]]; - -export { partition }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/partition.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/partition.d.ts deleted file mode 100644 index 9d7b376..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/partition.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Splits an array into two groups based on a predicate function. - * - * This function takes an array and a predicate function. It returns a tuple of two arrays: - * the first array contains elements for which the predicate function returns true, and - * the second array contains elements for which the predicate function returns false. - * - * @template T - The type of elements in the array. - * @template {T} U - The type being filtered for. - * @param {T[]} arr - The array to partition. - * @param {(value: T, index: number, array: readonly T[]) => value is U} isInTruthy - A type guard that determines whether an - * element should be placed in the truthy array. The function is called with each element - * of the array and its index. - * @returns {[U[], Exclude[]]} A tuple containing two arrays: the first array contains elements for - * which the predicate returned true, and the second array contains elements for which the - * predicate returned false. - * - * @example - * const array = [1, 2, 3, 4] as const; - * const isEven = (x: number): x is 2 | 4 => x % 2 === 0; - * const [even, odd]: [(2 | 4)[], (2 | 4)[]] = partition(array, isEven); - * // even will be [2, 4], and odd will be [1, 3] - */ -declare function partition(arr: readonly T[], isInTruthy: (value: T, index: number, array: readonly T[]) => value is U): [truthy: U[], falsy: Array>]; -/** - * Splits an array into two groups based on a predicate function. - * - * This function takes an array and a predicate function. It returns a tuple of two arrays: - * the first array contains elements for which the predicate function returns true, and - * the second array contains elements for which the predicate function returns false. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to partition. - * @param {(value: T, index: number) => boolean} isInTruthy - A predicate function that determines - * whether an element should be placed in the truthy array. The function is called with each - * element of the array and its index. - * @returns {[T[], T[]]} A tuple containing two arrays: the first array contains elements for - * which the predicate returned true, and the second array contains elements for which the - * predicate returned false. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const isEven = x => x % 2 === 0; - * const [even, odd] = partition(array, isEven); - * // even will be [2, 4], and odd will be [1, 3, 5] - */ -declare function partition(arr: readonly T[], isInTruthy: (value: T, index: number, array: readonly T[]) => boolean): [truthy: T[], falsy: T[]]; - -export { partition }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/partition.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/partition.js deleted file mode 100644 index 5a4fe87..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/partition.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function partition(arr, isInTruthy) { - const truthy = []; - const falsy = []; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - if (isInTruthy(item, i, arr)) { - truthy.push(item); - } - else { - falsy.push(item); - } - } - return [truthy, falsy]; -} - -exports.partition = partition; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/partition.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/partition.mjs deleted file mode 100644 index 4517b5d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/partition.mjs +++ /dev/null @@ -1,16 +0,0 @@ -function partition(arr, isInTruthy) { - const truthy = []; - const falsy = []; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - if (isInTruthy(item, i, arr)) { - truthy.push(item); - } - else { - falsy.push(item); - } - } - return [truthy, falsy]; -} - -export { partition }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/pull.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/pull.d.mts deleted file mode 100644 index c60c876..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/pull.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes all specified values from an array. - * - * This function changes `arr` in place. - * If you want to remove values without modifying the original array, use `difference`. - * - * @template T, U - * @param {T[]} arr - The array to modify. - * @param {unknown[]} valuesToRemove - The values to remove from the array. - * @returns {T[]} The modified array with the specified values removed. - * - * @example - * const numbers = [1, 2, 3, 4, 5, 2, 4]; - * pull(numbers, [2, 4]); - * console.log(numbers); // [1, 3, 5] - */ -declare function pull(arr: T[], valuesToRemove: readonly unknown[]): T[]; - -export { pull }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/pull.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/pull.d.ts deleted file mode 100644 index c60c876..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/pull.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes all specified values from an array. - * - * This function changes `arr` in place. - * If you want to remove values without modifying the original array, use `difference`. - * - * @template T, U - * @param {T[]} arr - The array to modify. - * @param {unknown[]} valuesToRemove - The values to remove from the array. - * @returns {T[]} The modified array with the specified values removed. - * - * @example - * const numbers = [1, 2, 3, 4, 5, 2, 4]; - * pull(numbers, [2, 4]); - * console.log(numbers); // [1, 3, 5] - */ -declare function pull(arr: T[], valuesToRemove: readonly unknown[]): T[]; - -export { pull }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/pull.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/pull.js deleted file mode 100644 index 2f40b44..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/pull.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function pull(arr, valuesToRemove) { - const valuesSet = new Set(valuesToRemove); - let resultIndex = 0; - for (let i = 0; i < arr.length; i++) { - if (valuesSet.has(arr[i])) { - continue; - } - if (!Object.hasOwn(arr, i)) { - delete arr[resultIndex++]; - continue; - } - arr[resultIndex++] = arr[i]; - } - arr.length = resultIndex; - return arr; -} - -exports.pull = pull; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/pull.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/pull.mjs deleted file mode 100644 index 14b7c77..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/pull.mjs +++ /dev/null @@ -1,18 +0,0 @@ -function pull(arr, valuesToRemove) { - const valuesSet = new Set(valuesToRemove); - let resultIndex = 0; - for (let i = 0; i < arr.length; i++) { - if (valuesSet.has(arr[i])) { - continue; - } - if (!Object.hasOwn(arr, i)) { - delete arr[resultIndex++]; - continue; - } - arr[resultIndex++] = arr[i]; - } - arr.length = resultIndex; - return arr; -} - -export { pull }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/pullAt.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/pullAt.d.mts deleted file mode 100644 index a4d8298..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/pullAt.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes elements from an array at specified indices and returns the removed elements. - * - * This function supports negative indices, which count from the end of the array. - * - * @template T - * @param {T[]} arr - The array from which elements will be removed. - * @param {number[]} indicesToRemove - An array of indices specifying the positions of elements to remove. - * @returns {Array} An array containing the elements that were removed from the original array. - * - * @example - * const numbers = [10, 20, 30, 40, 50]; - * const removed = pullAt(numbers, [1, 3, 4]); - * console.log(removed); // [20, 40, 50] - * console.log(numbers); // [10, 30] - */ -declare function pullAt(arr: T[], indicesToRemove: number[]): T[]; - -export { pullAt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/pullAt.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/pullAt.d.ts deleted file mode 100644 index a4d8298..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/pullAt.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes elements from an array at specified indices and returns the removed elements. - * - * This function supports negative indices, which count from the end of the array. - * - * @template T - * @param {T[]} arr - The array from which elements will be removed. - * @param {number[]} indicesToRemove - An array of indices specifying the positions of elements to remove. - * @returns {Array} An array containing the elements that were removed from the original array. - * - * @example - * const numbers = [10, 20, 30, 40, 50]; - * const removed = pullAt(numbers, [1, 3, 4]); - * console.log(removed); // [20, 40, 50] - * console.log(numbers); // [10, 30] - */ -declare function pullAt(arr: T[], indicesToRemove: number[]): T[]; - -export { pullAt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/pullAt.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/pullAt.js deleted file mode 100644 index 317125c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/pullAt.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const at = require('./at.js'); - -function pullAt(arr, indicesToRemove) { - const removed = at.at(arr, indicesToRemove); - const indices = new Set(indicesToRemove.slice().sort((x, y) => y - x)); - for (const index of indices) { - arr.splice(index, 1); - } - return removed; -} - -exports.pullAt = pullAt; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/pullAt.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/pullAt.mjs deleted file mode 100644 index c696907..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/pullAt.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { at } from './at.mjs'; - -function pullAt(arr, indicesToRemove) { - const removed = at(arr, indicesToRemove); - const indices = new Set(indicesToRemove.slice().sort((x, y) => y - x)); - for (const index of indices) { - arr.splice(index, 1); - } - return removed; -} - -export { pullAt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/reduceAsync.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/reduceAsync.d.mts deleted file mode 100644 index ad548c6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/reduceAsync.d.mts +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Reduces an array to a single value using an async reducer function. - * - * Applies the reducer function sequentially to each element (left to right), - * carrying an accumulated result from one call to the next. Unlike other async - * array methods, reduce must process elements sequentially and does not support - * concurrency limiting. - * - * @template T - The type of elements in the array. - * @template U - The type of the accumulated result. - * @param {readonly T[]} array The array to reduce. - * @param {(accumulator: U, currentValue: T, currentIndex: number, array: readonly T[]) => Promise} reducer An async function that processes each element. - * @param {U} initialValue The initial value of the accumulator. - * @returns {Promise} A promise that resolves to the final accumulated value. - * @example - * const numbers = [1, 2, 3, 4, 5]; - * const sum = await reduceAsync( - * numbers, - * async (acc, n) => acc + await fetchValue(n), - * 0 - * ); - * // Returns: sum of all fetched values - * - * @example - * const users = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const userMap = await reduceAsync( - * users, - * async (acc, user) => { - * const details = await fetchUserDetails(user.id); - * acc[user.id] = details; - * return acc; - * }, - * {} as Record - * ); - * // Returns: { 1: {...}, 2: {...}, 3: {...} } - */ -declare function reduceAsync(array: readonly T[], reducer: (accumulator: U, currentValue: T, currentIndex: number, array: readonly T[]) => Promise, initialValue: U): Promise; -/** - * Reduces an array to a single value using an async reducer function. - * - * Applies the reducer function sequentially to each element (left to right), - * carrying an accumulated result from one call to the next. Unlike other async - * array methods, reduce must process elements sequentially and does not support - * concurrency limiting. - * - * When no initial value is provided, the first element of the array is used as - * the initial value and the reduction starts from the second element. - * - * @template T - The type of elements in the array. - * @param {readonly T[]} array The array to reduce. - * @param {(accumulator: T, currentValue: T, currentIndex: number, array: readonly T[]) => Promise} reducer An async function that processes each element. - * @returns {Promise} A promise that resolves to the final accumulated value, or undefined if the array is empty. - * @example - * const numbers = [1, 2, 3, 4, 5]; - * const sum = await reduceAsync( - * numbers, - * async (acc, n) => acc + n - * ); - * // Returns: 15 - * - * @example - * const emptyArray: number[] = []; - * const result = await reduceAsync( - * emptyArray, - * async (acc, n) => acc + n - * ); - * // Returns: undefined - */ -declare function reduceAsync(array: readonly T[], reducer: (accumulator: T, currentValue: T, currentIndex: number, array: readonly T[]) => Promise): Promise; - -export { reduceAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/reduceAsync.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/reduceAsync.d.ts deleted file mode 100644 index ad548c6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/reduceAsync.d.ts +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Reduces an array to a single value using an async reducer function. - * - * Applies the reducer function sequentially to each element (left to right), - * carrying an accumulated result from one call to the next. Unlike other async - * array methods, reduce must process elements sequentially and does not support - * concurrency limiting. - * - * @template T - The type of elements in the array. - * @template U - The type of the accumulated result. - * @param {readonly T[]} array The array to reduce. - * @param {(accumulator: U, currentValue: T, currentIndex: number, array: readonly T[]) => Promise} reducer An async function that processes each element. - * @param {U} initialValue The initial value of the accumulator. - * @returns {Promise} A promise that resolves to the final accumulated value. - * @example - * const numbers = [1, 2, 3, 4, 5]; - * const sum = await reduceAsync( - * numbers, - * async (acc, n) => acc + await fetchValue(n), - * 0 - * ); - * // Returns: sum of all fetched values - * - * @example - * const users = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const userMap = await reduceAsync( - * users, - * async (acc, user) => { - * const details = await fetchUserDetails(user.id); - * acc[user.id] = details; - * return acc; - * }, - * {} as Record - * ); - * // Returns: { 1: {...}, 2: {...}, 3: {...} } - */ -declare function reduceAsync(array: readonly T[], reducer: (accumulator: U, currentValue: T, currentIndex: number, array: readonly T[]) => Promise, initialValue: U): Promise; -/** - * Reduces an array to a single value using an async reducer function. - * - * Applies the reducer function sequentially to each element (left to right), - * carrying an accumulated result from one call to the next. Unlike other async - * array methods, reduce must process elements sequentially and does not support - * concurrency limiting. - * - * When no initial value is provided, the first element of the array is used as - * the initial value and the reduction starts from the second element. - * - * @template T - The type of elements in the array. - * @param {readonly T[]} array The array to reduce. - * @param {(accumulator: T, currentValue: T, currentIndex: number, array: readonly T[]) => Promise} reducer An async function that processes each element. - * @returns {Promise} A promise that resolves to the final accumulated value, or undefined if the array is empty. - * @example - * const numbers = [1, 2, 3, 4, 5]; - * const sum = await reduceAsync( - * numbers, - * async (acc, n) => acc + n - * ); - * // Returns: 15 - * - * @example - * const emptyArray: number[] = []; - * const result = await reduceAsync( - * emptyArray, - * async (acc, n) => acc + n - * ); - * // Returns: undefined - */ -declare function reduceAsync(array: readonly T[], reducer: (accumulator: T, currentValue: T, currentIndex: number, array: readonly T[]) => Promise): Promise; - -export { reduceAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/reduceAsync.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/reduceAsync.js deleted file mode 100644 index 796a96c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/reduceAsync.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -async function reduceAsync(array, reducer, initialValue) { - let startIndex = 0; - if (initialValue == null) { - initialValue = array[0]; - startIndex = 1; - } - let accumulator = initialValue; - for (let i = startIndex; i < array.length; i++) { - accumulator = await reducer(accumulator, array[i], i, array); - } - return accumulator; -} - -exports.reduceAsync = reduceAsync; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/reduceAsync.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/reduceAsync.mjs deleted file mode 100644 index f18eacf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/reduceAsync.mjs +++ /dev/null @@ -1,14 +0,0 @@ -async function reduceAsync(array, reducer, initialValue) { - let startIndex = 0; - if (initialValue == null) { - initialValue = array[0]; - startIndex = 1; - } - let accumulator = initialValue; - for (let i = startIndex; i < array.length; i++) { - accumulator = await reducer(accumulator, array[i], i, array); - } - return accumulator; -} - -export { reduceAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/remove.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/remove.d.mts deleted file mode 100644 index 86b54b5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/remove.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes elements from an array based on a predicate function. - * - * This function changes `arr` in place. - * If you want to remove elements without modifying the original array, use `filter`. - * - * @template T - * @param {T[]} arr - The array to modify. - * @param {(value: T, index: number, array: T[]) => boolean} shouldRemoveElement - The function invoked per iteration to determine if an element should be removed. - * @returns {T[]} The modified array with the specified elements removed. - * - * @example - * const numbers = [1, 2, 3, 4, 5]; - * remove(numbers, (value) => value % 2 === 0); - * console.log(numbers); // [1, 3, 5] - */ -declare function remove(arr: T[], shouldRemoveElement: (value: T, index: number, array: T[]) => boolean): T[]; - -export { remove }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/remove.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/remove.d.ts deleted file mode 100644 index 86b54b5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/remove.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes elements from an array based on a predicate function. - * - * This function changes `arr` in place. - * If you want to remove elements without modifying the original array, use `filter`. - * - * @template T - * @param {T[]} arr - The array to modify. - * @param {(value: T, index: number, array: T[]) => boolean} shouldRemoveElement - The function invoked per iteration to determine if an element should be removed. - * @returns {T[]} The modified array with the specified elements removed. - * - * @example - * const numbers = [1, 2, 3, 4, 5]; - * remove(numbers, (value) => value % 2 === 0); - * console.log(numbers); // [1, 3, 5] - */ -declare function remove(arr: T[], shouldRemoveElement: (value: T, index: number, array: T[]) => boolean): T[]; - -export { remove }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/remove.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/remove.js deleted file mode 100644 index b5a5a31..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/remove.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function remove(arr, shouldRemoveElement) { - const originalArr = arr.slice(); - const removed = []; - let resultIndex = 0; - for (let i = 0; i < arr.length; i++) { - if (shouldRemoveElement(arr[i], i, originalArr)) { - removed.push(arr[i]); - continue; - } - if (!Object.hasOwn(arr, i)) { - delete arr[resultIndex++]; - continue; - } - arr[resultIndex++] = arr[i]; - } - arr.length = resultIndex; - return removed; -} - -exports.remove = remove; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/remove.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/remove.mjs deleted file mode 100644 index 9454402..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/remove.mjs +++ /dev/null @@ -1,20 +0,0 @@ -function remove(arr, shouldRemoveElement) { - const originalArr = arr.slice(); - const removed = []; - let resultIndex = 0; - for (let i = 0; i < arr.length; i++) { - if (shouldRemoveElement(arr[i], i, originalArr)) { - removed.push(arr[i]); - continue; - } - if (!Object.hasOwn(arr, i)) { - delete arr[resultIndex++]; - continue; - } - arr[resultIndex++] = arr[i]; - } - arr.length = resultIndex; - return removed; -} - -export { remove }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/sample.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/sample.d.mts deleted file mode 100644 index 94acdb5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/sample.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Returns a random element from an array. - * - * This function takes an array and returns a single element selected randomly from the array. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to sample from. - * @returns {T} A random element from the array. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const randomElement = sample(array); - * // randomElement will be one of the elements from the array, selected randomly. - */ -declare function sample(arr: readonly T[]): T; - -export { sample }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/sample.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/sample.d.ts deleted file mode 100644 index 94acdb5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/sample.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Returns a random element from an array. - * - * This function takes an array and returns a single element selected randomly from the array. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to sample from. - * @returns {T} A random element from the array. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const randomElement = sample(array); - * // randomElement will be one of the elements from the array, selected randomly. - */ -declare function sample(arr: readonly T[]): T; - -export { sample }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/sample.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/sample.js deleted file mode 100644 index 53706b0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/sample.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function sample(arr) { - const randomIndex = Math.floor(Math.random() * arr.length); - return arr[randomIndex]; -} - -exports.sample = sample; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/sample.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/sample.mjs deleted file mode 100644 index 6992788..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/sample.mjs +++ /dev/null @@ -1,6 +0,0 @@ -function sample(arr) { - const randomIndex = Math.floor(Math.random() * arr.length); - return arr[randomIndex]; -} - -export { sample }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/sampleSize.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/sampleSize.d.mts deleted file mode 100644 index b72eb8c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/sampleSize.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Returns a sample element array of a specified `size`. - * - * This function takes an array and a number, and returns an array containing the sampled elements using Floyd's algorithm. - * - * {@link https://www.nowherenearithaca.com/2013/05/robert-floyds-tiny-and-beautiful.html Floyd's algorithm} - * - * @template T - The type of elements in the array. - * @param {T[]} array - The array to sample from. - * @param {number} size - The size of sample. - * @returns {T[]} A new array with sample size applied. - * @throws {Error} Throws an error if `size` is greater than the length of `array`. - * - * @example - * const result = sampleSize([1, 2, 3], 2) - * // result will be an array containing two of the elements from the array. - * // [1, 2] or [1, 3] or [2, 3] - */ -declare function sampleSize(array: readonly T[], size: number): T[]; - -export { sampleSize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/sampleSize.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/sampleSize.d.ts deleted file mode 100644 index b72eb8c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/sampleSize.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Returns a sample element array of a specified `size`. - * - * This function takes an array and a number, and returns an array containing the sampled elements using Floyd's algorithm. - * - * {@link https://www.nowherenearithaca.com/2013/05/robert-floyds-tiny-and-beautiful.html Floyd's algorithm} - * - * @template T - The type of elements in the array. - * @param {T[]} array - The array to sample from. - * @param {number} size - The size of sample. - * @returns {T[]} A new array with sample size applied. - * @throws {Error} Throws an error if `size` is greater than the length of `array`. - * - * @example - * const result = sampleSize([1, 2, 3], 2) - * // result will be an array containing two of the elements from the array. - * // [1, 2] or [1, 3] or [2, 3] - */ -declare function sampleSize(array: readonly T[], size: number): T[]; - -export { sampleSize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/sampleSize.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/sampleSize.js deleted file mode 100644 index dfd15bb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/sampleSize.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const randomInt = require('../math/randomInt.js'); - -function sampleSize(array, size) { - if (size > array.length) { - throw new Error('Size must be less than or equal to the length of array.'); - } - const result = new Array(size); - const selected = new Set(); - for (let step = array.length - size, resultIndex = 0; step < array.length; step++, resultIndex++) { - let index = randomInt.randomInt(0, step + 1); - if (selected.has(index)) { - index = step; - } - selected.add(index); - result[resultIndex] = array[index]; - } - return result; -} - -exports.sampleSize = sampleSize; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/sampleSize.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/sampleSize.mjs deleted file mode 100644 index b48928e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/sampleSize.mjs +++ /dev/null @@ -1,20 +0,0 @@ -import { randomInt } from '../math/randomInt.mjs'; - -function sampleSize(array, size) { - if (size > array.length) { - throw new Error('Size must be less than or equal to the length of array.'); - } - const result = new Array(size); - const selected = new Set(); - for (let step = array.length - size, resultIndex = 0; step < array.length; step++, resultIndex++) { - let index = randomInt(0, step + 1); - if (selected.has(index)) { - index = step; - } - selected.add(index); - result[resultIndex] = array[index]; - } - return result; -} - -export { sampleSize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/shuffle.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/shuffle.d.mts deleted file mode 100644 index 783f1f0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/shuffle.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Randomizes the order of elements in an array using the Fisher-Yates algorithm. - * - * This function takes an array and returns a new array with its elements shuffled in a random order. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to shuffle. - * @returns {T[]} A new array with its elements shuffled in random order. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const shuffledArray = shuffle(array); - * // shuffledArray will be a new array with elements of array in random order, e.g., [3, 1, 4, 5, 2] - */ -declare function shuffle(arr: readonly T[]): T[]; - -export { shuffle }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/shuffle.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/shuffle.d.ts deleted file mode 100644 index 783f1f0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/shuffle.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Randomizes the order of elements in an array using the Fisher-Yates algorithm. - * - * This function takes an array and returns a new array with its elements shuffled in a random order. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to shuffle. - * @returns {T[]} A new array with its elements shuffled in random order. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const shuffledArray = shuffle(array); - * // shuffledArray will be a new array with elements of array in random order, e.g., [3, 1, 4, 5, 2] - */ -declare function shuffle(arr: readonly T[]): T[]; - -export { shuffle }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/shuffle.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/shuffle.js deleted file mode 100644 index 16701a8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/shuffle.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function shuffle(arr) { - const result = arr.slice(); - for (let i = result.length - 1; i >= 1; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [result[i], result[j]] = [result[j], result[i]]; - } - return result; -} - -exports.shuffle = shuffle; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/shuffle.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/shuffle.mjs deleted file mode 100644 index be8732d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/shuffle.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function shuffle(arr) { - const result = arr.slice(); - for (let i = result.length - 1; i >= 1; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [result[i], result[j]] = [result[j], result[i]]; - } - return result; -} - -export { shuffle }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/sortBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/sortBy.d.mts deleted file mode 100644 index 3b63eb2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/sortBy.d.mts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Sorts an array of objects based on the given `criteria`. - * - * - If you provide keys, it sorts the objects by the values of those keys. - * - If you provide functions, it sorts based on the values returned by those functions. - * - * The function returns the array of objects sorted in ascending order. - * If two objects have the same value for the current criterion, it uses the next criterion to determine their order. - * - * @template T - The type of the objects in the array. - * @param {T[]} arr - The array of objects to be sorted. - * @param {Array<((item: T) => unknown) | keyof T>} criteria - The criteria for sorting. This can be an array of object keys or functions that return values used for sorting. - * @returns {T[]} - The sorted array. - * - * @example - * const users = [ - * { user: 'foo', age: 24 }, - * { user: 'bar', age: 7 }, - * { user: 'foo', age: 8 }, - * { user: 'bar', age: 29 }, - * ]; - * - * sortBy(users, ['user', 'age']); - * sortBy(users, [obj => obj.user, 'age']); - * // results will be: - * // [ - * // { user : 'bar', age: 7 }, - * // { user : 'bar', age: 29 }, - * // { user : 'foo', age: 8 }, - * // { user : 'foo', age: 24 }, - * // ] - */ -declare function sortBy(arr: readonly T[], criteria: Array<((item: T) => unknown) | keyof T>): T[]; - -export { sortBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/sortBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/sortBy.d.ts deleted file mode 100644 index 3b63eb2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/sortBy.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Sorts an array of objects based on the given `criteria`. - * - * - If you provide keys, it sorts the objects by the values of those keys. - * - If you provide functions, it sorts based on the values returned by those functions. - * - * The function returns the array of objects sorted in ascending order. - * If two objects have the same value for the current criterion, it uses the next criterion to determine their order. - * - * @template T - The type of the objects in the array. - * @param {T[]} arr - The array of objects to be sorted. - * @param {Array<((item: T) => unknown) | keyof T>} criteria - The criteria for sorting. This can be an array of object keys or functions that return values used for sorting. - * @returns {T[]} - The sorted array. - * - * @example - * const users = [ - * { user: 'foo', age: 24 }, - * { user: 'bar', age: 7 }, - * { user: 'foo', age: 8 }, - * { user: 'bar', age: 29 }, - * ]; - * - * sortBy(users, ['user', 'age']); - * sortBy(users, [obj => obj.user, 'age']); - * // results will be: - * // [ - * // { user : 'bar', age: 7 }, - * // { user : 'bar', age: 29 }, - * // { user : 'foo', age: 8 }, - * // { user : 'foo', age: 24 }, - * // ] - */ -declare function sortBy(arr: readonly T[], criteria: Array<((item: T) => unknown) | keyof T>): T[]; - -export { sortBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/sortBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/sortBy.js deleted file mode 100644 index f834bb7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/sortBy.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const orderBy = require('./orderBy.js'); - -function sortBy(arr, criteria) { - return orderBy.orderBy(arr, criteria, ['asc']); -} - -exports.sortBy = sortBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/sortBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/sortBy.mjs deleted file mode 100644 index b9ebe38..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/sortBy.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { orderBy } from './orderBy.mjs'; - -function sortBy(arr, criteria) { - return orderBy(arr, criteria, ['asc']); -} - -export { sortBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/tail.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/tail.d.mts deleted file mode 100644 index d38cca8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/tail.d.mts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Returns an empty array when the input is a single-element array. - * - * @template T - The type of the single element in the array. - * @param {[T]} arr - The single-element array to process. - * @returns {[]} An empty array. - * - * @example - * const arr = [1]; - * const result = tail(arr); - * // result will be [] - */ -declare function tail(arr: readonly [T]): []; -/** - * Returns an empty array when the input is an empty array. - * - * @template T - The type of elements in the array. - * @param {[]} arr - The empty array to process. - * @returns {[]} An empty array. - * - * @example - * const arr = []; - * const result = tail(arr); - * // result will be [] - */ -declare function tail(arr: readonly []): []; -/** - * Returns a new array with all elements except for the first when the input is a tuple array. - * - * @template T - The type of the first element in the tuple array. - * @template U - The type of the remaining elements in the tuple array. - * @param {[T, ...U[]]} arr - The tuple array to process. - * @returns {U[]} A new array containing all elements of the input array except for the first one. - * - * @example - * const arr = [1, 2, 3]; - * const result = tail(arr); - * // result will be [2, 3] - */ -declare function tail(arr: readonly [T, ...U[]]): U[]; -/** - * Returns a new array with all elements except for the first. - * - * This function takes an array and returns a new array containing all the elements - * except for the first one. If the input array is empty or has only one element, - * an empty array is returned. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to get the tail of. - * @returns {T[]} A new array containing all elements of the input array except for the first one. - * - * @example - * const arr1 = [1, 2, 3]; - * const result = tail(arr1); - * // result will be [2, 3] - * - * const arr2 = [1]; - * const result2 = tail(arr2); - * // result2 will be [] - * - * const arr3 = []; - * const result3 = tail(arr3); - * // result3 will be [] - */ -declare function tail(arr: readonly T[]): T[]; - -export { tail }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/tail.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/tail.d.ts deleted file mode 100644 index d38cca8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/tail.d.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Returns an empty array when the input is a single-element array. - * - * @template T - The type of the single element in the array. - * @param {[T]} arr - The single-element array to process. - * @returns {[]} An empty array. - * - * @example - * const arr = [1]; - * const result = tail(arr); - * // result will be [] - */ -declare function tail(arr: readonly [T]): []; -/** - * Returns an empty array when the input is an empty array. - * - * @template T - The type of elements in the array. - * @param {[]} arr - The empty array to process. - * @returns {[]} An empty array. - * - * @example - * const arr = []; - * const result = tail(arr); - * // result will be [] - */ -declare function tail(arr: readonly []): []; -/** - * Returns a new array with all elements except for the first when the input is a tuple array. - * - * @template T - The type of the first element in the tuple array. - * @template U - The type of the remaining elements in the tuple array. - * @param {[T, ...U[]]} arr - The tuple array to process. - * @returns {U[]} A new array containing all elements of the input array except for the first one. - * - * @example - * const arr = [1, 2, 3]; - * const result = tail(arr); - * // result will be [2, 3] - */ -declare function tail(arr: readonly [T, ...U[]]): U[]; -/** - * Returns a new array with all elements except for the first. - * - * This function takes an array and returns a new array containing all the elements - * except for the first one. If the input array is empty or has only one element, - * an empty array is returned. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to get the tail of. - * @returns {T[]} A new array containing all elements of the input array except for the first one. - * - * @example - * const arr1 = [1, 2, 3]; - * const result = tail(arr1); - * // result will be [2, 3] - * - * const arr2 = [1]; - * const result2 = tail(arr2); - * // result2 will be [] - * - * const arr3 = []; - * const result3 = tail(arr3); - * // result3 will be [] - */ -declare function tail(arr: readonly T[]): T[]; - -export { tail }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/tail.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/tail.js deleted file mode 100644 index 573dae0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/tail.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function tail(arr) { - return arr.slice(1); -} - -exports.tail = tail; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/tail.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/tail.mjs deleted file mode 100644 index 870853b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/tail.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function tail(arr) { - return arr.slice(1); -} - -export { tail }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/take.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/take.d.mts deleted file mode 100644 index 707d30e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/take.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Returns a new array containing the first `count` elements from the input array `arr`. - * If `count` is greater than the length of `arr`, the entire array is returned. - * - * @template T - Type of elements in the input array. - * - * @param {T[]} arr - The array to take elements from. - * @param {number} count - The number of elements to take. - * @param {unknown} guard - If truthy, ignores `count` and defaults to 1. - * @returns {T[]} A new array containing the first `count` elements from `arr`. - * - * @example - * // Returns [1, 2, 3] - * take([1, 2, 3, 4, 5], 3); - * - * @example - * // Returns ['a', 'b'] - * take(['a', 'b', 'c'], 2); - * - * @example - * // Returns [1, 2, 3] - * take([1, 2, 3], 5); - * - * @example - * // Returns [[1], [1], [1]] - * const arr = [1, 2, 3]; - * const result = arr.map((v, i, array) => take(array, i, true)); - */ -declare function take(arr: readonly T[], count?: number, guard?: unknown): T[]; - -export { take }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/take.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/take.d.ts deleted file mode 100644 index 707d30e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/take.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Returns a new array containing the first `count` elements from the input array `arr`. - * If `count` is greater than the length of `arr`, the entire array is returned. - * - * @template T - Type of elements in the input array. - * - * @param {T[]} arr - The array to take elements from. - * @param {number} count - The number of elements to take. - * @param {unknown} guard - If truthy, ignores `count` and defaults to 1. - * @returns {T[]} A new array containing the first `count` elements from `arr`. - * - * @example - * // Returns [1, 2, 3] - * take([1, 2, 3, 4, 5], 3); - * - * @example - * // Returns ['a', 'b'] - * take(['a', 'b', 'c'], 2); - * - * @example - * // Returns [1, 2, 3] - * take([1, 2, 3], 5); - * - * @example - * // Returns [[1], [1], [1]] - * const arr = [1, 2, 3]; - * const result = arr.map((v, i, array) => take(array, i, true)); - */ -declare function take(arr: readonly T[], count?: number, guard?: unknown): T[]; - -export { take }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/take.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/take.js deleted file mode 100644 index 80afda4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/take.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toInteger = require('../compat/util/toInteger.js'); - -function take(arr, count, guard) { - count = guard || count === undefined ? 1 : toInteger.toInteger(count); - return arr.slice(0, count); -} - -exports.take = take; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/take.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/take.mjs deleted file mode 100644 index dfe7a84..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/take.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { toInteger } from '../compat/util/toInteger.mjs'; - -function take(arr, count, guard) { - count = guard || count === undefined ? 1 : toInteger(count); - return arr.slice(0, count); -} - -export { take }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRight.d.mts deleted file mode 100644 index 2cb7060..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRight.d.mts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Returns a new array containing the last `count` elements from the input array `arr`. - * If `count` is greater than the length of `arr`, the entire array is returned. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to take elements from. - * @param {number} [count=1] - The number of elements to take. - * @returns {T[]} A new array containing the last `count` elements from `arr`. - * - * @example - * // Returns [4, 5] - * takeRight([1, 2, 3, 4, 5], 2); - * - * @example - * // Returns ['b', 'c'] - * takeRight(['a', 'b', 'c'], 2); - * - * @example - * // Returns [1, 2, 3] - * takeRight([1, 2, 3], 5); - */ -declare function takeRight(arr: readonly T[], count?: number, guard?: unknown): T[]; - -export { takeRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRight.d.ts deleted file mode 100644 index 2cb7060..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRight.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Returns a new array containing the last `count` elements from the input array `arr`. - * If `count` is greater than the length of `arr`, the entire array is returned. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to take elements from. - * @param {number} [count=1] - The number of elements to take. - * @returns {T[]} A new array containing the last `count` elements from `arr`. - * - * @example - * // Returns [4, 5] - * takeRight([1, 2, 3, 4, 5], 2); - * - * @example - * // Returns ['b', 'c'] - * takeRight(['a', 'b', 'c'], 2); - * - * @example - * // Returns [1, 2, 3] - * takeRight([1, 2, 3], 5); - */ -declare function takeRight(arr: readonly T[], count?: number, guard?: unknown): T[]; - -export { takeRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRight.js deleted file mode 100644 index 81d18df..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRight.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toInteger = require('../compat/util/toInteger.js'); - -function takeRight(arr, count, guard) { - count = guard || count === undefined ? 1 : toInteger.toInteger(count); - if (count <= 0 || arr.length === 0) { - return []; - } - return arr.slice(-count); -} - -exports.takeRight = takeRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRight.mjs deleted file mode 100644 index dd265fb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRight.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { toInteger } from '../compat/util/toInteger.mjs'; - -function takeRight(arr, count, guard) { - count = guard || count === undefined ? 1 : toInteger(count); - if (count <= 0 || arr.length === 0) { - return []; - } - return arr.slice(-count); -} - -export { takeRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRightWhile.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRightWhile.d.mts deleted file mode 100644 index 23c35d7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRightWhile.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Takes elements from the end of the array while the predicate function returns `true`. - * - * @template T - Type of elements in the input array. - * - * @param {T[]} arr - The array to take elements from. - * @param {(item: T, index: number, array: readonly T[]) => boolean} shouldContinueTaking - The function invoked per element with the item, its index, and the array. - * @returns {T[]} A new array containing the elements taken from the end while the predicate returns `true`. - * - * @example - * // Returns [3, 2, 1] - * takeRightWhile([5, 4, 3, 2, 1], n => n < 4); - * - * @example - * // Returns [] - * takeRightWhile([1, 2, 3], n => n > 3); - * - * @example - * // Using index parameter - * takeRightWhile([10, 20, 30, 40], (x, index) => index > 1); - * // Returns: [30, 40] - */ -declare function takeRightWhile(arr: readonly T[], shouldContinueTaking: (item: T, index: number, array: readonly T[]) => boolean): T[]; - -export { takeRightWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRightWhile.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRightWhile.d.ts deleted file mode 100644 index 23c35d7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRightWhile.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Takes elements from the end of the array while the predicate function returns `true`. - * - * @template T - Type of elements in the input array. - * - * @param {T[]} arr - The array to take elements from. - * @param {(item: T, index: number, array: readonly T[]) => boolean} shouldContinueTaking - The function invoked per element with the item, its index, and the array. - * @returns {T[]} A new array containing the elements taken from the end while the predicate returns `true`. - * - * @example - * // Returns [3, 2, 1] - * takeRightWhile([5, 4, 3, 2, 1], n => n < 4); - * - * @example - * // Returns [] - * takeRightWhile([1, 2, 3], n => n > 3); - * - * @example - * // Using index parameter - * takeRightWhile([10, 20, 30, 40], (x, index) => index > 1); - * // Returns: [30, 40] - */ -declare function takeRightWhile(arr: readonly T[], shouldContinueTaking: (item: T, index: number, array: readonly T[]) => boolean): T[]; - -export { takeRightWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRightWhile.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRightWhile.js deleted file mode 100644 index 2569c94..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRightWhile.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function takeRightWhile(arr, shouldContinueTaking) { - for (let i = arr.length - 1; i >= 0; i--) { - if (!shouldContinueTaking(arr[i], i, arr)) { - return arr.slice(i + 1); - } - } - return arr.slice(); -} - -exports.takeRightWhile = takeRightWhile; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRightWhile.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRightWhile.mjs deleted file mode 100644 index 68e1195..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeRightWhile.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function takeRightWhile(arr, shouldContinueTaking) { - for (let i = arr.length - 1; i >= 0; i--) { - if (!shouldContinueTaking(arr[i], i, arr)) { - return arr.slice(i + 1); - } - } - return arr.slice(); -} - -export { takeRightWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeWhile.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/takeWhile.d.mts deleted file mode 100644 index 1d28e7b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeWhile.d.mts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Returns a new array containing the leading elements of the provided array - * that satisfy the provided predicate function. It stops taking elements as soon - * as an element does not satisfy the predicate. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to process. - * @param {(element: T, index: number, array: readonly T[]) => boolean} shouldContinueTaking - The predicate function that is called with each element, its index, and the array. Elements are included in the result as long as this function returns true. - * @returns {T[]} A new array containing the leading elements that satisfy the predicate. - * - * @example - * // Returns [1, 2] - * takeWhile([1, 2, 3, 4], x => x < 3); - * - * @example - * // Returns [] - * takeWhile([1, 2, 3, 4], x => x > 3); - * - * @example - * // Using index parameter - * takeWhile([10, 20, 30, 40], (x, index) => index < 2); - * // Returns: [10, 20] - */ -declare function takeWhile(arr: readonly T[], shouldContinueTaking: (element: T, index: number, array: readonly T[]) => boolean): T[]; - -export { takeWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeWhile.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/takeWhile.d.ts deleted file mode 100644 index 1d28e7b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeWhile.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Returns a new array containing the leading elements of the provided array - * that satisfy the provided predicate function. It stops taking elements as soon - * as an element does not satisfy the predicate. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to process. - * @param {(element: T, index: number, array: readonly T[]) => boolean} shouldContinueTaking - The predicate function that is called with each element, its index, and the array. Elements are included in the result as long as this function returns true. - * @returns {T[]} A new array containing the leading elements that satisfy the predicate. - * - * @example - * // Returns [1, 2] - * takeWhile([1, 2, 3, 4], x => x < 3); - * - * @example - * // Returns [] - * takeWhile([1, 2, 3, 4], x => x > 3); - * - * @example - * // Using index parameter - * takeWhile([10, 20, 30, 40], (x, index) => index < 2); - * // Returns: [10, 20] - */ -declare function takeWhile(arr: readonly T[], shouldContinueTaking: (element: T, index: number, array: readonly T[]) => boolean): T[]; - -export { takeWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeWhile.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/takeWhile.js deleted file mode 100644 index bd37f39..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeWhile.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function takeWhile(arr, shouldContinueTaking) { - const result = []; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - if (!shouldContinueTaking(item, i, arr)) { - break; - } - result.push(item); - } - return result; -} - -exports.takeWhile = takeWhile; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeWhile.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/takeWhile.mjs deleted file mode 100644 index 614af2b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/takeWhile.mjs +++ /dev/null @@ -1,13 +0,0 @@ -function takeWhile(arr, shouldContinueTaking) { - const result = []; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - if (!shouldContinueTaking(item, i, arr)) { - break; - } - result.push(item); - } - return result; -} - -export { takeWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/toFilled.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/toFilled.d.mts deleted file mode 100644 index c2f3108..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/toFilled.d.mts +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Creates a new array filled with the specified value from the start position up to, but not including, the end position. - * This function does not mutate the original array. - * - * @template T - The type of elements in the original array. - * @template U - The type of the value to fill the new array with. - * @param {Array} arr - The array to base the new array on. - * @param {U} value - The value to fill the new array with. - * @returns {Array} The new array with the filled values. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * let result = toFilled(array, '*', 2); - * console.log(result); // [1, 2, '*', '*', '*'] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*', 1, 4); - * console.log(result); // [1, '*', '*', '*', 5] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*'); - * console.log(result); // ['*', '*', '*', '*', '*'] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*', -4, -1); - * console.log(result); // [1, '*', '*', '*', 5] - * console.log(array); // [1, 2, 3, 4, 5] - */ -declare function toFilled(arr: readonly T[], value: U): Array; -/** - * Creates a new array filled with the specified value from the start position up to, but not including, the end position. - * This function does not mutate the original array. - * - * @template T - The type of elements in the original array. - * @template U - The type of the value to fill the new array with. - * @param {Array} arr - The array to base the new array on. - * @param {U} value - The value to fill the new array with. - * @param {number} [start=0] - The start position. Defaults to 0. - * @returns {Array} The new array with the filled values. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * let result = toFilled(array, '*', 2); - * console.log(result); // [1, 2, '*', '*', '*'] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*', 1, 4); - * console.log(result); // [1, '*', '*', '*', 5] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*'); - * console.log(result); // ['*', '*', '*', '*', '*'] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*', -4, -1); - * console.log(result); // [1, '*', '*', '*', 5] - * console.log(array); // [1, 2, 3, 4, 5] - */ -declare function toFilled(arr: readonly T[], value: U, start: number): Array; -/** - * Creates a new array filled with the specified value from the start position up to, but not including, the end position. - * This function does not mutate the original array. - * - * @template T - The type of elements in the original array. - * @template U - The type of the value to fill the new array with. - * @param {Array} arr - The array to base the new array on. - * @param {U} value - The value to fill the new array with. - * @param {number} [start=0] - The start position. Defaults to 0. - * @param {number} [end=arr.length] - The end position. Defaults to the array's length. - * @returns {Array} The new array with the filled values. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * let result = toFilled(array, '*', 2); - * console.log(result); // [1, 2, '*', '*', '*'] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*', 1, 4); - * console.log(result); // [1, '*', '*', '*', 5] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*'); - * console.log(result); // ['*', '*', '*', '*', '*'] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*', -4, -1); - * console.log(result); // [1, '*', '*', '*', 5] - * console.log(array); // [1, 2, 3, 4, 5] - */ -declare function toFilled(arr: readonly T[], value: U, start: number, end: number): Array; - -export { toFilled }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/toFilled.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/toFilled.d.ts deleted file mode 100644 index c2f3108..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/toFilled.d.ts +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Creates a new array filled with the specified value from the start position up to, but not including, the end position. - * This function does not mutate the original array. - * - * @template T - The type of elements in the original array. - * @template U - The type of the value to fill the new array with. - * @param {Array} arr - The array to base the new array on. - * @param {U} value - The value to fill the new array with. - * @returns {Array} The new array with the filled values. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * let result = toFilled(array, '*', 2); - * console.log(result); // [1, 2, '*', '*', '*'] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*', 1, 4); - * console.log(result); // [1, '*', '*', '*', 5] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*'); - * console.log(result); // ['*', '*', '*', '*', '*'] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*', -4, -1); - * console.log(result); // [1, '*', '*', '*', 5] - * console.log(array); // [1, 2, 3, 4, 5] - */ -declare function toFilled(arr: readonly T[], value: U): Array; -/** - * Creates a new array filled with the specified value from the start position up to, but not including, the end position. - * This function does not mutate the original array. - * - * @template T - The type of elements in the original array. - * @template U - The type of the value to fill the new array with. - * @param {Array} arr - The array to base the new array on. - * @param {U} value - The value to fill the new array with. - * @param {number} [start=0] - The start position. Defaults to 0. - * @returns {Array} The new array with the filled values. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * let result = toFilled(array, '*', 2); - * console.log(result); // [1, 2, '*', '*', '*'] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*', 1, 4); - * console.log(result); // [1, '*', '*', '*', 5] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*'); - * console.log(result); // ['*', '*', '*', '*', '*'] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*', -4, -1); - * console.log(result); // [1, '*', '*', '*', 5] - * console.log(array); // [1, 2, 3, 4, 5] - */ -declare function toFilled(arr: readonly T[], value: U, start: number): Array; -/** - * Creates a new array filled with the specified value from the start position up to, but not including, the end position. - * This function does not mutate the original array. - * - * @template T - The type of elements in the original array. - * @template U - The type of the value to fill the new array with. - * @param {Array} arr - The array to base the new array on. - * @param {U} value - The value to fill the new array with. - * @param {number} [start=0] - The start position. Defaults to 0. - * @param {number} [end=arr.length] - The end position. Defaults to the array's length. - * @returns {Array} The new array with the filled values. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * let result = toFilled(array, '*', 2); - * console.log(result); // [1, 2, '*', '*', '*'] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*', 1, 4); - * console.log(result); // [1, '*', '*', '*', 5] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*'); - * console.log(result); // ['*', '*', '*', '*', '*'] - * console.log(array); // [1, 2, 3, 4, 5] - * - * result = toFilled(array, '*', -4, -1); - * console.log(result); // [1, '*', '*', '*', 5] - * console.log(array); // [1, 2, 3, 4, 5] - */ -declare function toFilled(arr: readonly T[], value: U, start: number, end: number): Array; - -export { toFilled }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/toFilled.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/toFilled.js deleted file mode 100644 index ec00e0b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/toFilled.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function toFilled(arr, value, start = 0, end = arr.length) { - const length = arr.length; - const finalStart = Math.max(start >= 0 ? start : length + start, 0); - const finalEnd = Math.min(end >= 0 ? end : length + end, length); - const newArr = arr.slice(); - for (let i = finalStart; i < finalEnd; i++) { - newArr[i] = value; - } - return newArr; -} - -exports.toFilled = toFilled; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/toFilled.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/toFilled.mjs deleted file mode 100644 index 3b099e3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/toFilled.mjs +++ /dev/null @@ -1,12 +0,0 @@ -function toFilled(arr, value, start = 0, end = arr.length) { - const length = arr.length; - const finalStart = Math.max(start >= 0 ? start : length + start, 0); - const finalEnd = Math.min(end >= 0 ? end : length + end, length); - const newArr = arr.slice(); - for (let i = finalStart; i < finalEnd; i++) { - newArr[i] = value; - } - return newArr; -} - -export { toFilled }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/union.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/union.d.mts deleted file mode 100644 index 005b0a7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/union.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Creates an array of unique values from all given arrays. - * - * This function takes two arrays, merges them into a single array, and returns a new array - * containing only the unique values from the merged array. - * - * @template T - The type of elements in the array. - * @param {T[]} arr1 - The first array to merge and filter for unique values. - * @param {T[]} arr2 - The second array to merge and filter for unique values. - * @returns {T[]} A new array of unique values. - * - * @example - * const array1 = [1, 2, 3]; - * const array2 = [3, 4, 5]; - * const result = union(array1, array2); - * // result will be [1, 2, 3, 4, 5] - */ -declare function union(arr1: readonly T[], arr2: readonly T[]): T[]; - -export { union }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/union.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/union.d.ts deleted file mode 100644 index 005b0a7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/union.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Creates an array of unique values from all given arrays. - * - * This function takes two arrays, merges them into a single array, and returns a new array - * containing only the unique values from the merged array. - * - * @template T - The type of elements in the array. - * @param {T[]} arr1 - The first array to merge and filter for unique values. - * @param {T[]} arr2 - The second array to merge and filter for unique values. - * @returns {T[]} A new array of unique values. - * - * @example - * const array1 = [1, 2, 3]; - * const array2 = [3, 4, 5]; - * const result = union(array1, array2); - * // result will be [1, 2, 3, 4, 5] - */ -declare function union(arr1: readonly T[], arr2: readonly T[]): T[]; - -export { union }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/union.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/union.js deleted file mode 100644 index e415fb7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/union.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const uniq = require('./uniq.js'); - -function union(arr1, arr2) { - return uniq.uniq(arr1.concat(arr2)); -} - -exports.union = union; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/union.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/union.mjs deleted file mode 100644 index c63152a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/union.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { uniq } from './uniq.mjs'; - -function union(arr1, arr2) { - return uniq(arr1.concat(arr2)); -} - -export { union }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/unionBy.d.mts deleted file mode 100644 index 6593b4b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionBy.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Creates an array of unique values, in order, from all given arrays using a provided mapping function to determine equality. - * - * @template T - The type of elements in the array. - * @template U - The type of mapped elements. - * @param {T[]} arr1 - The first array. - * @param {T[]} arr2 - The second array. - * @param {(item: T) => U} mapper - The function to map array elements to comparison values. - * @returns {T[]} A new array containing the union of unique elements from `arr1` and `arr2`, based on the values returned by the mapping function. - * - * @example - * // Custom mapping function for numbers (modulo comparison) - * const moduloMapper = (x) => x % 3; - * unionBy([1, 2, 3], [4, 5, 6], moduloMapper); - * // Returns [1, 2, 3] - * - * @example - * // Custom mapping function for objects with an 'id' property - * const idMapper = (obj) => obj.id; - * unionBy([{ id: 1 }, { id: 2 }], [{ id: 2 }, { id: 3 }], idMapper); - * // Returns [{ id: 1 }, { id: 2 }, { id: 3 }] - */ -declare function unionBy(arr1: readonly T[], arr2: readonly T[], mapper: (item: T) => U): T[]; - -export { unionBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/unionBy.d.ts deleted file mode 100644 index 6593b4b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionBy.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Creates an array of unique values, in order, from all given arrays using a provided mapping function to determine equality. - * - * @template T - The type of elements in the array. - * @template U - The type of mapped elements. - * @param {T[]} arr1 - The first array. - * @param {T[]} arr2 - The second array. - * @param {(item: T) => U} mapper - The function to map array elements to comparison values. - * @returns {T[]} A new array containing the union of unique elements from `arr1` and `arr2`, based on the values returned by the mapping function. - * - * @example - * // Custom mapping function for numbers (modulo comparison) - * const moduloMapper = (x) => x % 3; - * unionBy([1, 2, 3], [4, 5, 6], moduloMapper); - * // Returns [1, 2, 3] - * - * @example - * // Custom mapping function for objects with an 'id' property - * const idMapper = (obj) => obj.id; - * unionBy([{ id: 1 }, { id: 2 }], [{ id: 2 }, { id: 3 }], idMapper); - * // Returns [{ id: 1 }, { id: 2 }, { id: 3 }] - */ -declare function unionBy(arr1: readonly T[], arr2: readonly T[], mapper: (item: T) => U): T[]; - -export { unionBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/unionBy.js deleted file mode 100644 index f3854bd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionBy.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const uniqBy = require('./uniqBy.js'); - -function unionBy(arr1, arr2, mapper) { - return uniqBy.uniqBy(arr1.concat(arr2), mapper); -} - -exports.unionBy = unionBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/unionBy.mjs deleted file mode 100644 index 013bb9b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionBy.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { uniqBy } from './uniqBy.mjs'; - -function unionBy(arr1, arr2, mapper) { - return uniqBy(arr1.concat(arr2), mapper); -} - -export { unionBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/unionWith.d.mts deleted file mode 100644 index 4ed2495..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionWith.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Creates an array of unique values from two given arrays based on a custom equality function. - * - * This function takes two arrays and a custom equality function, merges the arrays, and returns - * a new array containing only the unique values as determined by the custom equality function. - * - * @template T - The type of elements in the array. - * @param {T[]} arr1 - The first array to merge and filter for unique values. - * @param {T[]} arr2 - The second array to merge and filter for unique values. - * @param {(item1: T, item2: T) => boolean} areItemsEqual - A custom function to determine if two elements are equal. - * It takes two arguments and returns `true` if the elements are considered equal, and `false` otherwise. - * @returns {T[]} A new array of unique values based on the custom equality function. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }]; - * const array2 = [{ id: 2 }, { id: 3 }]; - * const areItemsEqual = (a, b) => a.id === b.id; - * const result = unionWith(array1, array2, areItemsEqual); - * // result will be [{ id: 1 }, { id: 2 }, { id: 3 }] since { id: 2 } is considered equal in both arrays - */ -declare function unionWith(arr1: readonly T[], arr2: readonly T[], areItemsEqual: (item1: T, item2: T) => boolean): T[]; - -export { unionWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/unionWith.d.ts deleted file mode 100644 index 4ed2495..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionWith.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Creates an array of unique values from two given arrays based on a custom equality function. - * - * This function takes two arrays and a custom equality function, merges the arrays, and returns - * a new array containing only the unique values as determined by the custom equality function. - * - * @template T - The type of elements in the array. - * @param {T[]} arr1 - The first array to merge and filter for unique values. - * @param {T[]} arr2 - The second array to merge and filter for unique values. - * @param {(item1: T, item2: T) => boolean} areItemsEqual - A custom function to determine if two elements are equal. - * It takes two arguments and returns `true` if the elements are considered equal, and `false` otherwise. - * @returns {T[]} A new array of unique values based on the custom equality function. - * - * @example - * const array1 = [{ id: 1 }, { id: 2 }]; - * const array2 = [{ id: 2 }, { id: 3 }]; - * const areItemsEqual = (a, b) => a.id === b.id; - * const result = unionWith(array1, array2, areItemsEqual); - * // result will be [{ id: 1 }, { id: 2 }, { id: 3 }] since { id: 2 } is considered equal in both arrays - */ -declare function unionWith(arr1: readonly T[], arr2: readonly T[], areItemsEqual: (item1: T, item2: T) => boolean): T[]; - -export { unionWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/unionWith.js deleted file mode 100644 index 1485749..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionWith.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const uniqWith = require('./uniqWith.js'); - -function unionWith(arr1, arr2, areItemsEqual) { - return uniqWith.uniqWith(arr1.concat(arr2), areItemsEqual); -} - -exports.unionWith = unionWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/unionWith.mjs deleted file mode 100644 index 7c00c07..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unionWith.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { uniqWith } from './uniqWith.mjs'; - -function unionWith(arr1, arr2, areItemsEqual) { - return uniqWith(arr1.concat(arr2), areItemsEqual); -} - -export { unionWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniq.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/uniq.d.mts deleted file mode 100644 index 63ec962..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniq.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Creates a duplicate-free version of an array. - * - * This function takes an array and returns a new array containing only the unique values - * from the original array, preserving the order of first occurrence. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to process. - * @returns {T[]} A new array with only unique values from the original array. - * - * @example - * const array = [1, 2, 2, 3, 4, 4, 5]; - * const result = uniq(array); - * // result will be [1, 2, 3, 4, 5] - */ -declare function uniq(arr: readonly T[]): T[]; - -export { uniq }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniq.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/uniq.d.ts deleted file mode 100644 index 63ec962..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniq.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Creates a duplicate-free version of an array. - * - * This function takes an array and returns a new array containing only the unique values - * from the original array, preserving the order of first occurrence. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to process. - * @returns {T[]} A new array with only unique values from the original array. - * - * @example - * const array = [1, 2, 2, 3, 4, 4, 5]; - * const result = uniq(array); - * // result will be [1, 2, 3, 4, 5] - */ -declare function uniq(arr: readonly T[]): T[]; - -export { uniq }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniq.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/uniq.js deleted file mode 100644 index 91a1d34..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniq.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function uniq(arr) { - return [...new Set(arr)]; -} - -exports.uniq = uniq; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniq.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/uniq.mjs deleted file mode 100644 index 0d2be28..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniq.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function uniq(arr) { - return [...new Set(arr)]; -} - -export { uniq }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqBy.d.mts deleted file mode 100644 index 1c4763a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqBy.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Returns a new array containing only the unique elements from the original array, - * based on the values returned by the mapper function. - * - * When duplicates are found, the first occurrence is kept and the rest are discarded. - * - * @template T - The type of elements in the array. - * @template U - The type of mapped elements. - * @param {T[]} arr - The array to process. - * @param {(item: T) => U} mapper - The function used to convert the array elements. - * @returns {T[]} A new array containing only the unique elements from the original array, based on the values returned by the mapper function. - * - * @example - * ```ts - * uniqBy([1.2, 1.5, 2.1, 3.2, 5.7, 5.3, 7.19], Math.floor); - * // [1.2, 2.1, 3.2, 5.7, 7.19] - * ``` - * - * @example - * const array = [ - * { category: 'fruit', name: 'apple' }, - * { category: 'fruit', name: 'banana' }, - * { category: 'vegetable', name: 'carrot' }, - * ]; - * uniqBy(array, item => item.category).length - * // 2 - * ``` - */ -declare function uniqBy(arr: readonly T[], mapper: (item: T, index: number, array: readonly T[]) => U): T[]; - -export { uniqBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqBy.d.ts deleted file mode 100644 index 1c4763a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqBy.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Returns a new array containing only the unique elements from the original array, - * based on the values returned by the mapper function. - * - * When duplicates are found, the first occurrence is kept and the rest are discarded. - * - * @template T - The type of elements in the array. - * @template U - The type of mapped elements. - * @param {T[]} arr - The array to process. - * @param {(item: T) => U} mapper - The function used to convert the array elements. - * @returns {T[]} A new array containing only the unique elements from the original array, based on the values returned by the mapper function. - * - * @example - * ```ts - * uniqBy([1.2, 1.5, 2.1, 3.2, 5.7, 5.3, 7.19], Math.floor); - * // [1.2, 2.1, 3.2, 5.7, 7.19] - * ``` - * - * @example - * const array = [ - * { category: 'fruit', name: 'apple' }, - * { category: 'fruit', name: 'banana' }, - * { category: 'vegetable', name: 'carrot' }, - * ]; - * uniqBy(array, item => item.category).length - * // 2 - * ``` - */ -declare function uniqBy(arr: readonly T[], mapper: (item: T, index: number, array: readonly T[]) => U): T[]; - -export { uniqBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqBy.js deleted file mode 100644 index a0b4510..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqBy.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function uniqBy(arr, mapper) { - const map = new Map(); - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - const key = mapper(item, i, arr); - if (!map.has(key)) { - map.set(key, item); - } - } - return Array.from(map.values()); -} - -exports.uniqBy = uniqBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqBy.mjs deleted file mode 100644 index 40a3c9d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqBy.mjs +++ /dev/null @@ -1,13 +0,0 @@ -function uniqBy(arr, mapper) { - const map = new Map(); - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - const key = mapper(item, i, arr); - if (!map.has(key)) { - map.set(key, item); - } - } - return Array.from(map.values()); -} - -export { uniqBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqWith.d.mts deleted file mode 100644 index 1256b39..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqWith.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Returns a new array containing only the unique elements from the original array, - * based on the values returned by the comparator function. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to process. - * @param {(item1: T, item2: T) => boolean} areItemsEqual - The function used to compare the array elements. - * @returns {T[]} A new array containing only the unique elements from the original array, based on the values returned by the comparator function. - * - * @example - * ```ts - * uniqWith([1.2, 1.5, 2.1, 3.2, 5.7, 5.3, 7.19], (a, b) => Math.abs(a - b) < 1); - * // [1.2, 3.2, 5.7, 7.19] - * ``` - */ -declare function uniqWith(arr: readonly T[], areItemsEqual: (item1: T, item2: T) => boolean): T[]; - -export { uniqWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqWith.d.ts deleted file mode 100644 index 1256b39..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqWith.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Returns a new array containing only the unique elements from the original array, - * based on the values returned by the comparator function. - * - * @template T - The type of elements in the array. - * @param {T[]} arr - The array to process. - * @param {(item1: T, item2: T) => boolean} areItemsEqual - The function used to compare the array elements. - * @returns {T[]} A new array containing only the unique elements from the original array, based on the values returned by the comparator function. - * - * @example - * ```ts - * uniqWith([1.2, 1.5, 2.1, 3.2, 5.7, 5.3, 7.19], (a, b) => Math.abs(a - b) < 1); - * // [1.2, 3.2, 5.7, 7.19] - * ``` - */ -declare function uniqWith(arr: readonly T[], areItemsEqual: (item1: T, item2: T) => boolean): T[]; - -export { uniqWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqWith.js deleted file mode 100644 index 6036a0c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqWith.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function uniqWith(arr, areItemsEqual) { - const result = []; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - const isUniq = result.every(v => !areItemsEqual(v, item)); - if (isUniq) { - result.push(item); - } - } - return result; -} - -exports.uniqWith = uniqWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqWith.mjs deleted file mode 100644 index f8e9f36..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/uniqWith.mjs +++ /dev/null @@ -1,13 +0,0 @@ -function uniqWith(arr, areItemsEqual) { - const result = []; - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - const isUniq = result.every(v => !areItemsEqual(v, item)); - if (isUniq) { - result.push(item); - } - } - return result; -} - -export { uniqWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzip.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/unzip.d.mts deleted file mode 100644 index 9b096af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzip.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Gathers elements in the same position in an internal array - * from a grouped array of elements and returns them as a new array. - * - * @template T - The type of elements in the nested array. - * @param {Array<[...T]>} zipped - The nested array to unzip. - * @returns {Unzip} A new array of unzipped elements. - * - * @example - * const zipped = [['a', true, 1],['b', false, 2]]; - * const result = unzip(zipped); - * // result will be [['a', 'b'], [true, false], [1, 2]] - */ -declare function unzip(zipped: ReadonlyArray<[...T]>): Unzip; -type Unzip = { - [I in keyof K]: Array; -}; - -export { unzip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzip.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/unzip.d.ts deleted file mode 100644 index 9b096af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzip.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Gathers elements in the same position in an internal array - * from a grouped array of elements and returns them as a new array. - * - * @template T - The type of elements in the nested array. - * @param {Array<[...T]>} zipped - The nested array to unzip. - * @returns {Unzip} A new array of unzipped elements. - * - * @example - * const zipped = [['a', true, 1],['b', false, 2]]; - * const result = unzip(zipped); - * // result will be [['a', 'b'], [true, false], [1, 2]] - */ -declare function unzip(zipped: ReadonlyArray<[...T]>): Unzip; -type Unzip = { - [I in keyof K]: Array; -}; - -export { unzip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzip.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/unzip.js deleted file mode 100644 index 91fba16..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzip.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function unzip(zipped) { - let maxLen = 0; - for (let i = 0; i < zipped.length; i++) { - if (zipped[i].length > maxLen) { - maxLen = zipped[i].length; - } - } - const result = new Array(maxLen); - for (let i = 0; i < maxLen; i++) { - result[i] = new Array(zipped.length); - for (let j = 0; j < zipped.length; j++) { - result[i][j] = zipped[j][i]; - } - } - return result; -} - -exports.unzip = unzip; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzip.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/unzip.mjs deleted file mode 100644 index 29b64b1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzip.mjs +++ /dev/null @@ -1,18 +0,0 @@ -function unzip(zipped) { - let maxLen = 0; - for (let i = 0; i < zipped.length; i++) { - if (zipped[i].length > maxLen) { - maxLen = zipped[i].length; - } - } - const result = new Array(maxLen); - for (let i = 0; i < maxLen; i++) { - result[i] = new Array(zipped.length); - for (let j = 0; j < zipped.length; j++) { - result[i][j] = zipped[j][i]; - } - } - return result; -} - -export { unzip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzipWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/unzipWith.d.mts deleted file mode 100644 index 4bd635f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzipWith.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Unzips an array of arrays, applying an `iteratee` function to regrouped elements. - * - * @template T, R - * @param {T[][]} target - The nested array to unzip. This is an array of arrays, - * where each inner array contains elements to be unzipped. - * @param {(...args: T[]) => R} iteratee - A function to transform the unzipped elements. - * @returns {R[]} A new array of unzipped and transformed elements. - * - * @example - * const nestedArray = [[1, 2], [3, 4], [5, 6]]; - * const result = unzipWith(nestedArray, (item, item2, item3) => item + item2 + item3); - * // result will be [9, 12] - */ -declare function unzipWith(target: readonly T[][], iteratee: (...args: T[]) => R): R[]; - -export { unzipWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzipWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/unzipWith.d.ts deleted file mode 100644 index 4bd635f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzipWith.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Unzips an array of arrays, applying an `iteratee` function to regrouped elements. - * - * @template T, R - * @param {T[][]} target - The nested array to unzip. This is an array of arrays, - * where each inner array contains elements to be unzipped. - * @param {(...args: T[]) => R} iteratee - A function to transform the unzipped elements. - * @returns {R[]} A new array of unzipped and transformed elements. - * - * @example - * const nestedArray = [[1, 2], [3, 4], [5, 6]]; - * const result = unzipWith(nestedArray, (item, item2, item3) => item + item2 + item3); - * // result will be [9, 12] - */ -declare function unzipWith(target: readonly T[][], iteratee: (...args: T[]) => R): R[]; - -export { unzipWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzipWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/unzipWith.js deleted file mode 100644 index c41afb6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzipWith.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function unzipWith(target, iteratee) { - const maxLength = Math.max(...target.map(innerArray => innerArray.length)); - const result = new Array(maxLength); - for (let i = 0; i < maxLength; i++) { - const group = new Array(target.length); - for (let j = 0; j < target.length; j++) { - group[j] = target[j][i]; - } - result[i] = iteratee(...group); - } - return result; -} - -exports.unzipWith = unzipWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzipWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/unzipWith.mjs deleted file mode 100644 index 23810f4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/unzipWith.mjs +++ /dev/null @@ -1,14 +0,0 @@ -function unzipWith(target, iteratee) { - const maxLength = Math.max(...target.map(innerArray => innerArray.length)); - const result = new Array(maxLength); - for (let i = 0; i < maxLength; i++) { - const group = new Array(target.length); - for (let j = 0; j < target.length; j++) { - group[j] = target[j][i]; - } - result[i] = iteratee(...group); - } - return result; -} - -export { unzipWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/windowed.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/windowed.d.mts deleted file mode 100644 index dfd2120..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/windowed.d.mts +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Options for the windowed function. - * - * @interface WindowedOptions - * @property {boolean} [partialWindows=false] - Whether to include partial windows at the end of the array. - */ -interface WindowedOptions { - /** - * Whether to include partial windows at the end of the array. - * - * By default, `windowed` only includes full windows in the result, - * ignoring any leftover elements that can't form a full window. - * - * If `partialWindows` is true, the function will also include these smaller, partial windows at the end of the result. - */ - partialWindows?: boolean; -} -/** - * Creates an array of sub-arrays (windows) from the input array, each of the specified size. - * The windows can overlap depending on the step size provided. - * - * By default, only full windows are included in the result, and any leftover elements that can't form a full window are ignored. - * - * If the `partialWindows` option is set to true in the options object, the function will also include partial windows at the end of the result. - * Partial windows are smaller sub-arrays created when there aren't enough elements left in the input array to form a full window. - * - * @template T - * @param {readonly T[]} arr - The input array to create windows from. - * @param {number} size - The size of each window. Must be a positive integer. - * @param {number} [step=1] - The step size between the start of each window. Must be a positive integer. - * @param {WindowedOptions} [options={}] - Options object to configure the behavior of the function. - * @param {boolean} [options.partialWindows=false] - Whether to include partial windows at the end of the array. - * @returns {T[][]} An array of windows (sub-arrays) created from the input array. - * @throws {Error} If the size or step is not a positive integer. - * - * @example - * windowed([1, 2, 3, 4], 2); - * // => [[1, 2], [2, 3], [3, 4]] - * - * @example - * windowed([1, 2, 3, 4, 5, 6], 3, 2); - * // => [[1, 2, 3], [3, 4, 5]] - * - * @example - * windowed([1, 2, 3, 4, 5, 6], 3, 2, { partialWindows: true }); - * // => [[1, 2, 3], [3, 4, 5], [5, 6]] - */ -declare function windowed(arr: readonly T[], size: number, step?: number, { partialWindows }?: WindowedOptions): T[][]; - -export { type WindowedOptions, windowed }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/windowed.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/windowed.d.ts deleted file mode 100644 index dfd2120..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/windowed.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Options for the windowed function. - * - * @interface WindowedOptions - * @property {boolean} [partialWindows=false] - Whether to include partial windows at the end of the array. - */ -interface WindowedOptions { - /** - * Whether to include partial windows at the end of the array. - * - * By default, `windowed` only includes full windows in the result, - * ignoring any leftover elements that can't form a full window. - * - * If `partialWindows` is true, the function will also include these smaller, partial windows at the end of the result. - */ - partialWindows?: boolean; -} -/** - * Creates an array of sub-arrays (windows) from the input array, each of the specified size. - * The windows can overlap depending on the step size provided. - * - * By default, only full windows are included in the result, and any leftover elements that can't form a full window are ignored. - * - * If the `partialWindows` option is set to true in the options object, the function will also include partial windows at the end of the result. - * Partial windows are smaller sub-arrays created when there aren't enough elements left in the input array to form a full window. - * - * @template T - * @param {readonly T[]} arr - The input array to create windows from. - * @param {number} size - The size of each window. Must be a positive integer. - * @param {number} [step=1] - The step size between the start of each window. Must be a positive integer. - * @param {WindowedOptions} [options={}] - Options object to configure the behavior of the function. - * @param {boolean} [options.partialWindows=false] - Whether to include partial windows at the end of the array. - * @returns {T[][]} An array of windows (sub-arrays) created from the input array. - * @throws {Error} If the size or step is not a positive integer. - * - * @example - * windowed([1, 2, 3, 4], 2); - * // => [[1, 2], [2, 3], [3, 4]] - * - * @example - * windowed([1, 2, 3, 4, 5, 6], 3, 2); - * // => [[1, 2, 3], [3, 4, 5]] - * - * @example - * windowed([1, 2, 3, 4, 5, 6], 3, 2, { partialWindows: true }); - * // => [[1, 2, 3], [3, 4, 5], [5, 6]] - */ -declare function windowed(arr: readonly T[], size: number, step?: number, { partialWindows }?: WindowedOptions): T[][]; - -export { type WindowedOptions, windowed }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/windowed.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/windowed.js deleted file mode 100644 index b565b66..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/windowed.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function windowed(arr, size, step = 1, { partialWindows = false } = {}) { - if (size <= 0 || !Number.isInteger(size)) { - throw new Error('Size must be a positive integer.'); - } - if (step <= 0 || !Number.isInteger(step)) { - throw new Error('Step must be a positive integer.'); - } - const result = []; - const end = partialWindows ? arr.length : arr.length - size + 1; - for (let i = 0; i < end; i += step) { - result.push(arr.slice(i, i + size)); - } - return result; -} - -exports.windowed = windowed; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/windowed.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/windowed.mjs deleted file mode 100644 index d476e5d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/windowed.mjs +++ /dev/null @@ -1,16 +0,0 @@ -function windowed(arr, size, step = 1, { partialWindows = false } = {}) { - if (size <= 0 || !Number.isInteger(size)) { - throw new Error('Size must be a positive integer.'); - } - if (step <= 0 || !Number.isInteger(step)) { - throw new Error('Step must be a positive integer.'); - } - const result = []; - const end = partialWindows ? arr.length : arr.length - size + 1; - for (let i = 0; i < end; i += step) { - result.push(arr.slice(i, i + size)); - } - return result; -} - -export { windowed }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/without.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/without.d.mts deleted file mode 100644 index 8824307..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/without.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Creates an array that excludes all specified values. - * - * It correctly excludes `NaN`, as it compares values using [SameValueZero](https://tc39.es/ecma262/multipage/abstract-operations.html#sec-samevaluezero). - * - * @template T The type of elements in the array. - * @param {T[]} array - The array to filter. - * @param {...T[]} values - The values to exclude. - * @returns {T[]} A new array without the specified values. - * - * @example - * // Removes the specified values from the array - * without([1, 2, 3, 4, 5], 2, 4); - * // Returns: [1, 3, 5] - * - * @example - * // Removes specified string values from the array - * without(['a', 'b', 'c', 'a'], 'a'); - * // Returns: ['b', 'c'] - */ -declare function without(array: readonly T[], ...values: T[]): T[]; - -export { without }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/without.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/without.d.ts deleted file mode 100644 index 8824307..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/without.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Creates an array that excludes all specified values. - * - * It correctly excludes `NaN`, as it compares values using [SameValueZero](https://tc39.es/ecma262/multipage/abstract-operations.html#sec-samevaluezero). - * - * @template T The type of elements in the array. - * @param {T[]} array - The array to filter. - * @param {...T[]} values - The values to exclude. - * @returns {T[]} A new array without the specified values. - * - * @example - * // Removes the specified values from the array - * without([1, 2, 3, 4, 5], 2, 4); - * // Returns: [1, 3, 5] - * - * @example - * // Removes specified string values from the array - * without(['a', 'b', 'c', 'a'], 'a'); - * // Returns: ['b', 'c'] - */ -declare function without(array: readonly T[], ...values: T[]): T[]; - -export { without }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/without.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/without.js deleted file mode 100644 index 35a381c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/without.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const difference = require('./difference.js'); - -function without(array, ...values) { - return difference.difference(array, values); -} - -exports.without = without; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/without.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/without.mjs deleted file mode 100644 index 1ba1bc4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/without.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { difference } from './difference.mjs'; - -function without(array, ...values) { - return difference(array, values); -} - -export { without }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/xor.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/xor.d.mts deleted file mode 100644 index e402516..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/xor.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Computes the symmetric difference between two arrays. The symmetric difference is the set of elements - * which are in either of the arrays, but not in their intersection. - * - * @template T - The type of elements in the array. - * @param {T[]} arr1 - The first array. - * @param {T[]} arr2 - The second array. - * @returns {T[]} An array containing the elements that are present in either `arr1` or `arr2` but not in both. - * - * @example - * // Returns [1, 2, 5, 6] - * xor([1, 2, 3, 4], [3, 4, 5, 6]); - * - * @example - * // Returns ['a', 'c'] - * xor(['a', 'b'], ['b', 'c']); - */ -declare function xor(arr1: readonly T[], arr2: readonly T[]): T[]; - -export { xor }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/xor.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/xor.d.ts deleted file mode 100644 index e402516..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/xor.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Computes the symmetric difference between two arrays. The symmetric difference is the set of elements - * which are in either of the arrays, but not in their intersection. - * - * @template T - The type of elements in the array. - * @param {T[]} arr1 - The first array. - * @param {T[]} arr2 - The second array. - * @returns {T[]} An array containing the elements that are present in either `arr1` or `arr2` but not in both. - * - * @example - * // Returns [1, 2, 5, 6] - * xor([1, 2, 3, 4], [3, 4, 5, 6]); - * - * @example - * // Returns ['a', 'c'] - * xor(['a', 'b'], ['b', 'c']); - */ -declare function xor(arr1: readonly T[], arr2: readonly T[]): T[]; - -export { xor }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/xor.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/xor.js deleted file mode 100644 index 027340f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/xor.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const difference = require('./difference.js'); -const intersection = require('./intersection.js'); -const union = require('./union.js'); - -function xor(arr1, arr2) { - return difference.difference(union.union(arr1, arr2), intersection.intersection(arr1, arr2)); -} - -exports.xor = xor; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/xor.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/xor.mjs deleted file mode 100644 index 9632ea3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/xor.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { difference } from './difference.mjs'; -import { intersection } from './intersection.mjs'; -import { union } from './union.mjs'; - -function xor(arr1, arr2) { - return difference(union(arr1, arr2), intersection(arr1, arr2)); -} - -export { xor }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/xorBy.d.mts deleted file mode 100644 index 7375e7e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorBy.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Computes the symmetric difference between two arrays using a custom mapping function. - * The symmetric difference is the set of elements which are in either of the arrays, - * but not in their intersection, determined by the result of the mapping function. - * - * @template T - Type of elements in the input arrays. - * @template U - Type of the values returned by the mapping function. - * - * @param {T[]} arr1 - The first array. - * @param {T[]} arr2 - The second array. - * @param {(item: T) => U} mapper - The function to map array elements to comparison values. - * @returns {T[]} An array containing the elements that are present in either `arr1` or `arr2` but not in both, based on the values returned by the mapping function. - * - * @example - * // Custom mapping function for objects with an 'id' property - * const idMapper = obj => obj.id; - * xorBy([{ id: 1 }, { id: 2 }], [{ id: 2 }, { id: 3 }], idMapper); - * // Returns [{ id: 1 }, { id: 3 }] - */ -declare function xorBy(arr1: readonly T[], arr2: readonly T[], mapper: (item: T) => U): T[]; - -export { xorBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/xorBy.d.ts deleted file mode 100644 index 7375e7e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorBy.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Computes the symmetric difference between two arrays using a custom mapping function. - * The symmetric difference is the set of elements which are in either of the arrays, - * but not in their intersection, determined by the result of the mapping function. - * - * @template T - Type of elements in the input arrays. - * @template U - Type of the values returned by the mapping function. - * - * @param {T[]} arr1 - The first array. - * @param {T[]} arr2 - The second array. - * @param {(item: T) => U} mapper - The function to map array elements to comparison values. - * @returns {T[]} An array containing the elements that are present in either `arr1` or `arr2` but not in both, based on the values returned by the mapping function. - * - * @example - * // Custom mapping function for objects with an 'id' property - * const idMapper = obj => obj.id; - * xorBy([{ id: 1 }, { id: 2 }], [{ id: 2 }, { id: 3 }], idMapper); - * // Returns [{ id: 1 }, { id: 3 }] - */ -declare function xorBy(arr1: readonly T[], arr2: readonly T[], mapper: (item: T) => U): T[]; - -export { xorBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/xorBy.js deleted file mode 100644 index baf516b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorBy.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const differenceBy = require('./differenceBy.js'); -const intersectionBy = require('./intersectionBy.js'); -const unionBy = require('./unionBy.js'); - -function xorBy(arr1, arr2, mapper) { - const union = unionBy.unionBy(arr1, arr2, mapper); - const intersection = intersectionBy.intersectionBy(arr1, arr2, mapper); - return differenceBy.differenceBy(union, intersection, mapper); -} - -exports.xorBy = xorBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/xorBy.mjs deleted file mode 100644 index d379858..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorBy.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { differenceBy } from './differenceBy.mjs'; -import { intersectionBy } from './intersectionBy.mjs'; -import { unionBy } from './unionBy.mjs'; - -function xorBy(arr1, arr2, mapper) { - const union = unionBy(arr1, arr2, mapper); - const intersection = intersectionBy(arr1, arr2, mapper); - return differenceBy(union, intersection, mapper); -} - -export { xorBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/xorWith.d.mts deleted file mode 100644 index 1aff58f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorWith.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Computes the symmetric difference between two arrays using a custom equality function. - * The symmetric difference is the set of elements which are in either of the arrays, - * but not in their intersection. - * - * @template T - Type of elements in the input arrays. - * - * @param {T[]} arr1 - The first array. - * @param {T[]} arr2 - The second array. - * @param {(item1: T, item2: T) => boolean} areElementsEqual - The custom equality function to compare elements. - * @returns {T[]} An array containing the elements that are present in either `arr1` or `arr2` but not in both, based on the custom equality function. - * - * @example - * // Custom equality function for objects with an 'id' property - * const areObjectsEqual = (a, b) => a.id === b.id; - * xorWith([{ id: 1 }, { id: 2 }], [{ id: 2 }, { id: 3 }], areObjectsEqual); - * // Returns [{ id: 1 }, { id: 3 }] - */ -declare function xorWith(arr1: readonly T[], arr2: readonly T[], areElementsEqual: (item1: T, item2: T) => boolean): T[]; - -export { xorWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/xorWith.d.ts deleted file mode 100644 index 1aff58f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorWith.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Computes the symmetric difference between two arrays using a custom equality function. - * The symmetric difference is the set of elements which are in either of the arrays, - * but not in their intersection. - * - * @template T - Type of elements in the input arrays. - * - * @param {T[]} arr1 - The first array. - * @param {T[]} arr2 - The second array. - * @param {(item1: T, item2: T) => boolean} areElementsEqual - The custom equality function to compare elements. - * @returns {T[]} An array containing the elements that are present in either `arr1` or `arr2` but not in both, based on the custom equality function. - * - * @example - * // Custom equality function for objects with an 'id' property - * const areObjectsEqual = (a, b) => a.id === b.id; - * xorWith([{ id: 1 }, { id: 2 }], [{ id: 2 }, { id: 3 }], areObjectsEqual); - * // Returns [{ id: 1 }, { id: 3 }] - */ -declare function xorWith(arr1: readonly T[], arr2: readonly T[], areElementsEqual: (item1: T, item2: T) => boolean): T[]; - -export { xorWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/xorWith.js deleted file mode 100644 index 54f7264..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorWith.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const differenceWith = require('./differenceWith.js'); -const intersectionWith = require('./intersectionWith.js'); -const unionWith = require('./unionWith.js'); - -function xorWith(arr1, arr2, areElementsEqual) { - const union = unionWith.unionWith(arr1, arr2, areElementsEqual); - const intersection = intersectionWith.intersectionWith(arr1, arr2, areElementsEqual); - return differenceWith.differenceWith(union, intersection, areElementsEqual); -} - -exports.xorWith = xorWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/xorWith.mjs deleted file mode 100644 index a6b316b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/xorWith.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { differenceWith } from './differenceWith.mjs'; -import { intersectionWith } from './intersectionWith.mjs'; -import { unionWith } from './unionWith.mjs'; - -function xorWith(arr1, arr2, areElementsEqual) { - const union = unionWith(arr1, arr2, areElementsEqual); - const intersection = intersectionWith(arr1, arr2, areElementsEqual); - return differenceWith(union, intersection, areElementsEqual); -} - -export { xorWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/zip.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/zip.d.mts deleted file mode 100644 index c306f95..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/zip.d.mts +++ /dev/null @@ -1,106 +0,0 @@ -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T - * @param {T[]} arr1 - The first array to zip. - * @returns {Array<[T]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const result = zip(arr1); - * // result will be [[1], [2], [3]] - */ -declare function zip(arr1: readonly T[]): Array<[T]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U - * @param {T[]} arr1 - The first array to zip. - * @param {U[]} arr2 - The second array to zip. - * @returns {Array<[T, U]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const result = zip(arr1, arr2); - * // result will be [[1, 'a'], [2, 'b'], [3, 'c']] - */ -declare function zip(arr1: readonly T[], arr2: readonly U[]): Array<[T, U]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U, V - * @param {T[]} arr1 - The first array to zip. - * @param {U[]} arr2 - The second array to zip. - * @param {V[]} arr3 - The third array to zip. - * @returns {Array<[T, U, V]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const result = zip(arr1, arr2, arr3); - * // result will be [[1, 'a', true], [2, 'b', false], [3, 'c', undefined]] - */ -declare function zip(arr1: readonly T[], arr2: readonly U[], arr3: readonly V[]): Array<[T, U, V]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U, V, W - * @param {T[]} arr1 - The first array to zip. - * @param {U[]} arr2 - The second array to zip. - * @param {V[]} arr3 - The third array to zip. - * @param {W[]} arr4 - The fourth array to zip. - * @returns {Array<[T, U, V, W]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const arr4 = [null, null, null]; - * const result = zip(arr1, arr2, arr3, arr4); - * // result will be [[1, 'a', true, null], [2, 'b', false, null], [3, 'c', undefined, null]] - */ -declare function zip(arr1: readonly T[], arr2: readonly U[], arr3: readonly V[], arr4: readonly W[]): Array<[T, U, V, W]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T - * @param {...Array} arrs - The arrays to zip together. - * @returns {T[][]} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const result = zip(arr1, arr2, arr3); - * // result will be [[1, 'a', true], [2, 'b', false], [3, 'c', undefined]] - */ -declare function zip(...arrs: Array): T[][]; - -export { zip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/zip.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/zip.d.ts deleted file mode 100644 index c306f95..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/zip.d.ts +++ /dev/null @@ -1,106 +0,0 @@ -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T - * @param {T[]} arr1 - The first array to zip. - * @returns {Array<[T]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const result = zip(arr1); - * // result will be [[1], [2], [3]] - */ -declare function zip(arr1: readonly T[]): Array<[T]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U - * @param {T[]} arr1 - The first array to zip. - * @param {U[]} arr2 - The second array to zip. - * @returns {Array<[T, U]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const result = zip(arr1, arr2); - * // result will be [[1, 'a'], [2, 'b'], [3, 'c']] - */ -declare function zip(arr1: readonly T[], arr2: readonly U[]): Array<[T, U]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U, V - * @param {T[]} arr1 - The first array to zip. - * @param {U[]} arr2 - The second array to zip. - * @param {V[]} arr3 - The third array to zip. - * @returns {Array<[T, U, V]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const result = zip(arr1, arr2, arr3); - * // result will be [[1, 'a', true], [2, 'b', false], [3, 'c', undefined]] - */ -declare function zip(arr1: readonly T[], arr2: readonly U[], arr3: readonly V[]): Array<[T, U, V]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U, V, W - * @param {T[]} arr1 - The first array to zip. - * @param {U[]} arr2 - The second array to zip. - * @param {V[]} arr3 - The third array to zip. - * @param {W[]} arr4 - The fourth array to zip. - * @returns {Array<[T, U, V, W]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const arr4 = [null, null, null]; - * const result = zip(arr1, arr2, arr3, arr4); - * // result will be [[1, 'a', true, null], [2, 'b', false, null], [3, 'c', undefined, null]] - */ -declare function zip(arr1: readonly T[], arr2: readonly U[], arr3: readonly V[], arr4: readonly W[]): Array<[T, U, V, W]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T - * @param {...Array} arrs - The arrays to zip together. - * @returns {T[][]} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const result = zip(arr1, arr2, arr3); - * // result will be [[1, 'a', true], [2, 'b', false], [3, 'c', undefined]] - */ -declare function zip(...arrs: Array): T[][]; - -export { zip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/zip.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/zip.js deleted file mode 100644 index 19d7b44..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/zip.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function zip(...arrs) { - let rowCount = 0; - for (let i = 0; i < arrs.length; i++) { - if (arrs[i].length > rowCount) { - rowCount = arrs[i].length; - } - } - const columnCount = arrs.length; - const result = Array(rowCount); - for (let i = 0; i < rowCount; ++i) { - const row = Array(columnCount); - for (let j = 0; j < columnCount; ++j) { - row[j] = arrs[j][i]; - } - result[i] = row; - } - return result; -} - -exports.zip = zip; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/zip.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/zip.mjs deleted file mode 100644 index 60ece21..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/zip.mjs +++ /dev/null @@ -1,20 +0,0 @@ -function zip(...arrs) { - let rowCount = 0; - for (let i = 0; i < arrs.length; i++) { - if (arrs[i].length > rowCount) { - rowCount = arrs[i].length; - } - } - const columnCount = arrs.length; - const result = Array(rowCount); - for (let i = 0; i < rowCount; ++i) { - const row = Array(columnCount); - for (let j = 0; j < columnCount; ++j) { - row[j] = arrs[j][i]; - } - result[i] = row; - } - return result; -} - -export { zip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipObject.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/zipObject.d.mts deleted file mode 100644 index f761a01..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipObject.d.mts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Combines two arrays, one of property names and one of corresponding values, into a single object. - * - * This function takes two arrays: one containing property names and another containing corresponding values. - * It returns a new object where the property names from the first array are keys, and the corresponding elements - * from the second array are values. If the `keys` array is longer than the `values` array, the remaining keys will - * have `undefined` as their values. - * - * @template P - The type of elements in the array. - * @template V - The type of elements in the array. - * @param {P[]} keys - An array of property names. - * @param {V[]} values - An array of values corresponding to the property names. - * @returns {Record} - A new object composed of the given property names and values. - * - * @example - * const keys = ['a', 'b', 'c']; - * const values = [1, 2, 3]; - * const result = zipObject(keys, values); - * // result will be { a: 1, b: 2, c: 3 } - * - * const keys2 = ['a', 'b', 'c']; - * const values2 = [1, 2]; - * const result2 = zipObject(keys2, values2); - * // result2 will be { a: 1, b: 2, c: undefined } - * - * const keys2 = ['a', 'b']; - * const values2 = [1, 2, 3]; - * const result2 = zipObject(keys2, values2); - * // result2 will be { a: 1, b: 2 } - */ -declare function zipObject

(keys: readonly P[], values: readonly V[]): Record; - -export { zipObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/zipObject.d.ts deleted file mode 100644 index f761a01..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipObject.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Combines two arrays, one of property names and one of corresponding values, into a single object. - * - * This function takes two arrays: one containing property names and another containing corresponding values. - * It returns a new object where the property names from the first array are keys, and the corresponding elements - * from the second array are values. If the `keys` array is longer than the `values` array, the remaining keys will - * have `undefined` as their values. - * - * @template P - The type of elements in the array. - * @template V - The type of elements in the array. - * @param {P[]} keys - An array of property names. - * @param {V[]} values - An array of values corresponding to the property names. - * @returns {Record} - A new object composed of the given property names and values. - * - * @example - * const keys = ['a', 'b', 'c']; - * const values = [1, 2, 3]; - * const result = zipObject(keys, values); - * // result will be { a: 1, b: 2, c: 3 } - * - * const keys2 = ['a', 'b', 'c']; - * const values2 = [1, 2]; - * const result2 = zipObject(keys2, values2); - * // result2 will be { a: 1, b: 2, c: undefined } - * - * const keys2 = ['a', 'b']; - * const values2 = [1, 2, 3]; - * const result2 = zipObject(keys2, values2); - * // result2 will be { a: 1, b: 2 } - */ -declare function zipObject

(keys: readonly P[], values: readonly V[]): Record; - -export { zipObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipObject.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/zipObject.js deleted file mode 100644 index 4ff4c8c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipObject.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function zipObject(keys, values) { - const result = {}; - for (let i = 0; i < keys.length; i++) { - result[keys[i]] = values[i]; - } - return result; -} - -exports.zipObject = zipObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipObject.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/zipObject.mjs deleted file mode 100644 index 0de346d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipObject.mjs +++ /dev/null @@ -1,9 +0,0 @@ -function zipObject(keys, values) { - const result = {}; - for (let i = 0; i < keys.length; i++) { - result[keys[i]] = values[i]; - } - return result; -} - -export { zipObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/array/zipWith.d.mts deleted file mode 100644 index d28f3fc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipWith.d.mts +++ /dev/null @@ -1,72 +0,0 @@ -/** - * Combines multiple arrays into a single array using a custom combiner function. - * - * This function takes multiple arrays and a combiner function, and returns a new array where each element - * is the result of applying the combiner function to the corresponding elements of the input arrays. - * - * @template T - The type of elements in the first array. - * @template R - The type of elements in the resulting array. - * @param {T[]} arr1 - The first array to zip. - * @param {(item: T, index: number) => R} combine - The combiner function that takes corresponding elements from each array, their index, and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - * - * @example - * // Example usage with two arrays: - * const arr1 = [1, 2, 3]; - * const arr2 = [4, 5, 6]; - * const result = zipWith(arr1, arr2, (a, b) => a + b); - * // result will be [5, 7, 9] - * - * @example - * // Example usage with three arrays: - * const arr1 = [1, 2]; - * const arr2 = [3, 4]; - * const arr3 = [5, 6]; - * const result = zipWith(arr1, arr2, arr3, (a, b, c) => `${a}${b}${c}`); - * // result will be [`135`, `246`] - */ -declare function zipWith(arr1: readonly T[], combine: (item: T, index: number) => R): R[]; -/** - * Combines two arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template R - The type of elements in the resulting array. - * @param {T[]} arr1 - The first array to zip. - * @param {U[]} arr2 - The second array to zip. - * @param {(item1: T, item2: U, index: number) => R} combine - The combiner function that takes corresponding elements from each array, their index, and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: readonly T[], arr2: readonly U[], combine: (item1: T, item2: U, index: number) => R): R[]; -/** - * Combines three arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template V - The type of elements in the third array. - * @template R - The type of elements in the resulting array. - * @param {T[]} arr1 - The first array to zip. - * @param {U[]} arr2 - The second array to zip. - * @param {V[]} arr3 - The third array to zip. - * @param {(item1: T, item2: U, item3: V, index: number) => R} combine - The combiner function that takes corresponding elements from each array, their index, and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: readonly T[], arr2: readonly U[], arr3: readonly V[], combine: (item1: T, item2: U, item3: V, index: number) => R): R[]; -/** - * Combines four arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template V - The type of elements in the third array. - * @template W - The type of elements in the fourth array. - * @template R - The type of elements in the resulting array. - * @param {T[]} arr1 - The first array to zip. - * @param {U[]} arr2 - The second array to zip. - * @param {V[]} arr3 - The third array to zip. - * @param {W[]} arr4 - The fourth array to zip. - * @param {(item1: T, item2: U, item3: V, item4: W, index: number) => R} combine - The combiner function that takes corresponding elements from each array, their index, and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: readonly T[], arr2: readonly U[], arr3: readonly V[], arr4: readonly W[], combine: (item1: T, item2: U, item3: V, item4: W, index: number) => R): R[]; - -export { zipWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/array/zipWith.d.ts deleted file mode 100644 index d28f3fc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipWith.d.ts +++ /dev/null @@ -1,72 +0,0 @@ -/** - * Combines multiple arrays into a single array using a custom combiner function. - * - * This function takes multiple arrays and a combiner function, and returns a new array where each element - * is the result of applying the combiner function to the corresponding elements of the input arrays. - * - * @template T - The type of elements in the first array. - * @template R - The type of elements in the resulting array. - * @param {T[]} arr1 - The first array to zip. - * @param {(item: T, index: number) => R} combine - The combiner function that takes corresponding elements from each array, their index, and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - * - * @example - * // Example usage with two arrays: - * const arr1 = [1, 2, 3]; - * const arr2 = [4, 5, 6]; - * const result = zipWith(arr1, arr2, (a, b) => a + b); - * // result will be [5, 7, 9] - * - * @example - * // Example usage with three arrays: - * const arr1 = [1, 2]; - * const arr2 = [3, 4]; - * const arr3 = [5, 6]; - * const result = zipWith(arr1, arr2, arr3, (a, b, c) => `${a}${b}${c}`); - * // result will be [`135`, `246`] - */ -declare function zipWith(arr1: readonly T[], combine: (item: T, index: number) => R): R[]; -/** - * Combines two arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template R - The type of elements in the resulting array. - * @param {T[]} arr1 - The first array to zip. - * @param {U[]} arr2 - The second array to zip. - * @param {(item1: T, item2: U, index: number) => R} combine - The combiner function that takes corresponding elements from each array, their index, and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: readonly T[], arr2: readonly U[], combine: (item1: T, item2: U, index: number) => R): R[]; -/** - * Combines three arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template V - The type of elements in the third array. - * @template R - The type of elements in the resulting array. - * @param {T[]} arr1 - The first array to zip. - * @param {U[]} arr2 - The second array to zip. - * @param {V[]} arr3 - The third array to zip. - * @param {(item1: T, item2: U, item3: V, index: number) => R} combine - The combiner function that takes corresponding elements from each array, their index, and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: readonly T[], arr2: readonly U[], arr3: readonly V[], combine: (item1: T, item2: U, item3: V, index: number) => R): R[]; -/** - * Combines four arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template V - The type of elements in the third array. - * @template W - The type of elements in the fourth array. - * @template R - The type of elements in the resulting array. - * @param {T[]} arr1 - The first array to zip. - * @param {U[]} arr2 - The second array to zip. - * @param {V[]} arr3 - The third array to zip. - * @param {W[]} arr4 - The fourth array to zip. - * @param {(item1: T, item2: U, item3: V, item4: W, index: number) => R} combine - The combiner function that takes corresponding elements from each array, their index, and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: readonly T[], arr2: readonly U[], arr3: readonly V[], arr4: readonly W[], combine: (item1: T, item2: U, item3: V, item4: W, index: number) => R): R[]; - -export { zipWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/array/zipWith.js deleted file mode 100644 index 9d869cf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipWith.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function zipWith(arr1, ...rest) { - const arrs = [arr1, ...rest.slice(0, -1)]; - const combine = rest[rest.length - 1]; - const maxIndex = Math.max(...arrs.map(arr => arr.length)); - const result = Array(maxIndex); - for (let i = 0; i < maxIndex; i++) { - const elements = arrs.map(arr => arr[i]); - result[i] = combine(...elements, i); - } - return result; -} - -exports.zipWith = zipWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/array/zipWith.mjs deleted file mode 100644 index 65575cb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/array/zipWith.mjs +++ /dev/null @@ -1,13 +0,0 @@ -function zipWith(arr1, ...rest) { - const arrs = [arr1, ...rest.slice(0, -1)]; - const combine = rest[rest.length - 1]; - const maxIndex = Math.max(...arrs.map(arr => arr.length)); - const result = Array(maxIndex); - for (let i = 0; i < maxIndex; i++) { - const elements = arrs.map(arr => arr[i]); - result[i] = combine(...elements, i); - } - return result; -} - -export { zipWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/browser.global.js b/sdks/nodejs/node_modules/es-toolkit/dist/browser.global.js deleted file mode 100644 index 5065873..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/browser.global.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)._={})}(this,(function(e){"use strict";function castArray(e){return 0===arguments.length?[]:Array.isArray(e)?e:[e]}function toArray$1(e){return Array.isArray(e)?e:Array.from(e)}function isArrayLike(e){return null!=e&&"function"!=typeof e&&function isLength$1(e){return Number.isSafeInteger(e)&&e>=0}(e.length)}function chunk(e,t=1){return 0!==(t=Math.max(Math.floor(t),0))&&isArrayLike(e)?function chunk$1(e,t){if(!Number.isInteger(t)||t<=0)throw new Error("Size must be an integer greater than zero.");const n=Math.ceil(e.length/t),r=Array(n);for(let i=0;i{for(let i=0;i{})):isMatchWithInternal(e,t,(function doesMatch(e,t,r,i,o,s){const u=n(e,t,r,i,o,s);return void 0!==u?Boolean(u):isMatchWithInternal(e,t,doesMatch,s)}),new Map)}function isMatchWithInternal(e,t,n,r){if(t===e)return!0;switch(typeof t){case"object":return function isObjectMatch(e,t,n,r){if(null==t)return!0;if(Array.isArray(t))return isArrayMatch(e,t,n,r);if(t instanceof Map)return function isMapMatch(e,t,n,r){if(0===t.size)return!0;if(!(e instanceof Map))return!1;for(const[i,o]of t.entries()){if(!1===n(e.get(i),o,i,e,t,r))return!1}return!0}(e,t,n,r);if(t instanceof Set)return function isSetMatch(e,t,n,r){if(0===t.size)return!0;if(!(e instanceof Set))return!1;return isArrayMatch([...e],[...t],n,r)}(e,t,n,r);const i=Object.keys(t);if(null==e||isPrimitive(e))return 0===i.length;if(0===i.length)return!0;if(r?.has(t))return r.get(t)===e;r?.set(t,e);try{for(let o=0;o0?isMatchWithInternal(e,{...t},n,r):isEqualsSameValueZero(e,t);default:return isObject(e)?"string"!=typeof t||""===t:isEqualsSameValueZero(e,t)}}function isArrayMatch(e,t,n,r){if(0===t.length)return!0;if(!Array.isArray(e))return!1;const i=new Set;for(let o=0;o{}))}function getSymbols(e){return Object.getOwnPropertySymbols(e).filter((t=>Object.prototype.propertyIsEnumerable.call(e,t)))}function getTag(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}const t="[object RegExp]",n="[object String]",r="[object Number]",i="[object Boolean]",o="[object Arguments]",s="[object Symbol]",u="[object Date]",a="[object Map]",c="[object Set]",l="[object Array]",f="[object Function]",p="[object ArrayBuffer]",y="[object Object]",h="[object Error]",g="[object DataView]",d="[object Uint8Array]",m="[object Uint8ClampedArray]",b="[object Uint16Array]",A="[object Uint32Array]",O="[object BigUint64Array]",$="[object Int8Array]",j="[object Int16Array]",w="[object Int32Array]",k="[object BigInt64Array]",I="[object Float32Array]",v="[object Float64Array]";function isTypedArray$1(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function cloneDeepWithImpl(e,f,h,O=new Map,k=void 0){const S=k?.(e,f,h,O);if(void 0!==S)return S;if(isPrimitive(e))return e;if(O.has(e))return O.get(e);if(Array.isArray(e)){const t=new Array(e.length);O.set(e,t);for(let n=0;nisMatch(t,e)}function cloneDeepWith(e,t){return function cloneDeepWith$1(e,t){return cloneDeepWithImpl(e,void 0,e,new Map,t)}(e,((s,u,a,c)=>{const l=t?.(s,u,a,c);if(void 0!==l)return l;if("object"==typeof e){if(getTag(e)===y&&"function"!=typeof e.constructor){const t={};c.set(e,t);copyProperties(t,e,a,c);return t}switch(Object.prototype.toString.call(e)){case r:case n:case i:{const t=new e.constructor(e?.valueOf());copyProperties(t,e);return t}case o:{const t={};copyProperties(t,e);t.length=e.length;t[Symbol.iterator]=e[Symbol.iterator];return t}default:return}}}))}function cloneDeep(e){return cloneDeepWith(e)}const S=/^(?:0|[1-9]\d*)$/;function isIndex(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e!n.has(e)))}function isObjectLike(e){return"object"==typeof e&&null!==e}function isArrayLikeObject(e){return isObjectLike(e)&&isArrayLike(e)}function difference(e,...t){if(!isArrayLikeObject(e))return[];const n=toArray$1(e),r=[];for(let e=0;en(e))));return e.filter((e=>!r.has(n(e))))}(Array.from(e),r,iteratee(n))}function differenceWith(e,...t){if(!isArrayLikeObject(e))return[];const n=last(t),r=flattenArrayLike(t);return"function"==typeof n?function differenceWith$1(e,t,n){return e.filter((e=>t.every((t=>!n(e,t)))))}(Array.from(e),r,n):difference$1(Array.from(e),r)}function isSymbol$1(e){return"symbol"==typeof e||e instanceof Symbol}function toNumber(e){return isSymbol$1(e)?NaN:Number(e)}function toFinite(e){if(!e)return 0===e?e:0;if((e=toNumber(e))===1/0||e===-1/0){return(e<0?-1:1)*Number.MAX_VALUE}return e==e?e:0}function toInteger(e){const t=toFinite(e),n=t%1;return n?t-n:t}function drop(e,t=1,n){if(!isArrayLike(e))return[];t=n?1:toInteger(t);return function drop$1(e,t){t=Math.max(t,0);return e.slice(t)}(toArray$1(e),t)}function dropRight(e,t=1,n){if(!isArrayLike(e))return[];t=n?1:toInteger(t);return function dropRight$1(e,t){return 0===(t=Math.min(-t,0))?e.slice():e.slice(0,t)}(toArray$1(e),t)}function dropRightWhile$1(e,t){for(let n=e.length-1;n>=0;n--)if(!t(e[n],n,e))return e.slice(0,n+1);return[]}function dropRightWhile(e,t=identity$1){return isArrayLike(e)?function dropRightWhileImpl(e,t){switch(typeof t){case"function":return dropRightWhile$1(e,((e,n,r)=>Boolean(t(e,n,r))));case"object":if(Array.isArray(t)&&2===t.length){return dropRightWhile$1(e,matchesProperty(t[0],t[1]))}return dropRightWhile$1(e,matches(t));case"symbol":case"number":case"string":return dropRightWhile$1(e,property(t))}}(Array.from(e),t):[]}function dropWhile$1(e,t){const n=e.findIndex(((e,n,r)=>!t(e,n,r)));return-1===n?[]:e.slice(n)}function dropWhile(e,t=identity$1){return isArrayLike(e)?function dropWhileImpl(e,t){switch(typeof t){case"function":return dropWhile$1(e,((e,n,r)=>Boolean(t(e,n,r))));case"object":if(Array.isArray(t)&&2===t.length){return dropWhile$1(e,matchesProperty(t[0],t[1]))}return dropWhile$1(e,matches(t));case"number":case"symbol":case"string":return dropWhile$1(e,property(t))}}(toArray$1(e),t):[]}function range$1(e,t,n=1){if(null==t){t=e;e=0}if(!Number.isInteger(n)||0===n)throw new Error("The step value must be a non-zero integer.");const r=Math.max(Math.ceil((t-e)/n),0),i=new Array(r);for(let t=0;t=0;r--){const i=n[r];if(!1===t(e[i],i,e))break}return e}function isIterateeCall(e,t,n){return!!isObject(n)&&(!!("number"==typeof t&&isArrayLike(n)&&isIndex(t)&&t=0?n:i+n,0),s=Math.min(r>=0?r:i+r,i);for(let n=o;n=0;r--){const n=t[r],o=e[n];if(i(o,n,e))return o}}}function findLastIndex(e,t=identity$1,n=(e?e.length-1:0)){if(!e)return-1;n=n<0?Math.max(e.length+n,0):Math.min(n,e.length-1);const r=toArray$1(e).slice(0,n+1);switch(typeof t){case"function":return r.findLastIndex(t);case"object":if(Array.isArray(t)&&2===t.length){const e=t[0],n=t[1];return r.findLastIndex(matchesProperty(e,n))}return r.findLastIndex(matches(t));case"number":case"symbol":case"string":return r.findLastIndex(property(t))}}function head(e){if(isArrayLike(e))return function head$1(e){return e[0]}(toArray$1(e))}function flatten(e,t=1){const n=[],r=Math.floor(t);if(!isArrayLike(e))return n;const recursive=(e,t)=>{for(let i=0;ie.length||t instanceof RegExp)return!1;n<0&&(n=Math.max(0,e.length+n));return e.includes(t,n)}if(Array.isArray(e))return e.includes(t,n);const i=Object.keys(e);n<0&&(n=Math.max(0,i.length+n));for(let r=n;rn.has(e)))}function uniq$1(e){return[...new Set(e)]}function intersection(...e){if(0===e.length)return[];if(!isArrayLikeObject(e[0]))return[];let t=uniq$1(Array.from(e[0]));for(let n=1;nn(e))):"string"==typeof n&&(r=intersectionBy$1(r,Array.from(i),property(n)))}return r}function intersectionWith$1(e,t,n){return e.filter((e=>t.some((t=>n(e,t)))))}function uniq(e){return isArrayLike(e)?uniq$1(Array.from(e)):[]}function intersectionWith(e,...t){if(null==e)return[];const n=last(t);let r=isEqualsSameValueZero,i=uniq;if("function"==typeof n){r=n;i=uniqPreserve0;t.pop()}let o=i(Array.from(e));for(let e=0;eisEqualWithImpl(i,t,void 0,e,S,W,x)));if(-1===o)return!1;n.splice(o,1)}return!0}case l:case d:case m:case b:case A:case O:case $:case j:case w:case k:case I:case v:if("undefined"!=typeof Buffer&&Buffer.isBuffer(e)!==Buffer.isBuffer(S))return!1;if(e.length!==S.length)return!1;for(let t=0;t0&&(u=get(o,e))}else if("string"==typeof t&&t.includes(".")){u=get(o,t.split(".").slice(0,-1).join("."))}i.push(null==s?void 0:s.apply(u,n))}return i}function join(e,t){return isArrayLike(e)?Array.from(e).join(t):""}function reduce(e,t=identity$1,n){if(!e)return n;let r,i=0;if(isArrayLike(e)){r=range$1(0,e.length);if(null==n&&e.length>0){n=e[0];i+=1}}else{r=Object.keys(e);if(null==n){n=e[r[0]];i+=1}}for(let o=i;o{e[n(t)]=t;return e}),{})}function lastIndexOf(e,t,n){if(!isArrayLike(e)||0===e.length)return-1;const r=e.length;let i=n??r-1;null!=n&&(i=i<0?Math.max(r+i,0):Math.min(i,r-1));if(Number.isNaN(t))for(let t=i;t>=0;t--)if(Number.isNaN(e[t]))return t;return Array.from(e).lastIndexOf(t,i)}function nth(e,t=0){if(isArrayLikeObject(e)&&0!==e.length){(t=toInteger(t))<0&&(t+=e.length);return e[t]}}function getPriority(e){return"symbol"==typeof e?1:null===e?2:void 0===e?3:e!=e?4:0}const compareValues=(e,t,n)=>{if(e!==t){const r=getPriority(e),i=getPriority(t);if(r===i&&0===r){if(et)return"desc"===n?-1:1}return"desc"===n?i-r:r-i}return 0},W=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,x=/^\w*$/;function isKey(e,t){return!Array.isArray(e)&&(!("number"!=typeof e&&"boolean"!=typeof e&&null!=e&&!isSymbol$1(e))||("string"==typeof e&&(x.test(e)||!W.test(e))||null!=t&&Object.hasOwn(t,e)))}function orderBy(e,t,n,r){if(null==e)return[];n=r?void 0:n;Array.isArray(e)||(e=Object.values(e));Array.isArray(t)||(t=null==t?[null]:[t]);0===t.length&&(t=[null]);Array.isArray(n)||(n=null==n?[]:[n]);n=n.map((e=>String(e)));const getValueByNestedPath=(e,t)=>{let n=e;for(let e=0;e{Array.isArray(e)&&1===e.length&&(e=e[0]);return null==e||"function"==typeof e||Array.isArray(e)||isKey(e)?e:{key:e,path:toPath(e)}}));return e.map((e=>({original:e,criteria:i.map((t=>((e,t)=>null==t||null==e?t:"object"==typeof e&&"key"in e?Object.hasOwn(t,e.key)?t[e.key]:getValueByNestedPath(t,e.path):"function"==typeof e?e(t):Array.isArray(e)?getValueByNestedPath(t,e):"object"==typeof t?t[e]:t)(t,e)))}))).slice().sort(((e,t)=>{for(let r=0;re.original))}function partition(e,t=identity$1){if(!e)return[[],[]];const n=isArrayLike(e)?e:Object.values(e);t=iteratee(t);const r=[],i=[];for(let e=0;er(e))));let o=0;for(let t=0;tisEqualsSameValueZero(e,t));const i=Array.isArray(t)?t:Array.from(t),o=i.includes(void 0);for(let t=0;tn(e[t],r)))||(e[r++]=e[t])}else o||delete e[r++];e.length=r;return e}function at(e,...t){if(0===t.length)return[];const n=[];for(let e=0;eisIndex(t,e.length)?Number(t):t)).sort(((e,t)=>t-e));for(const t of new Set(i)){if(isIndex(t,e.length)){Array.prototype.splice.call(e,t,1);continue}if(isKey(t,e)){delete e[toKey(t)];continue}const n=isArray(t)?t:toPath(t);unset(e,n)}return r}function reduceRight(e,t=identity$1,n){if(!e)return n;let r,i;if(isArrayLike(e)){r=range$1(0,e.length).reverse();if(null==n&&e.length>0){n=e[e.length-1];i=1}else i=0}else{r=Object.keys(e).reverse();if(null==n){n=e[r[0]];i=1}else i=0}for(let o=i;o=t)throw new Error("Invalid input: The maximum value must be greater than the minimum value.");return Math.random()*(t-e)+e}function randomInt(e,t){return Math.floor(random$1(e,t))}function clamp(e,t,n){if(void 0===n){n=t;t=void 0}if(void 0!==n){n=toNumber(n);e=Math.min(e,Number.isNaN(n)?0:n)}if(void 0!==t){t=toNumber(t);e=Math.max(e,Number.isNaN(t)?0:t)}return e}function isMap(e){return function isMap$1(e){return e instanceof Map}(e)}function toArray(e){return null==e?[]:isArrayLike(e)||isMap(e)?Array.from(e):"object"==typeof e?Object.values(e):[]}function sampleSize(e,t,n){const r=toArray(e);return function sampleSize$1(e,t){if(t>e.length)throw new Error("Size must be less than or equal to the length of array.");const n=new Array(t),r=new Set;for(let i=e.length-t,o=0;i=1;e--){const n=Math.floor(Math.random()*(e+1));[t[e],t[n]]=[t[n],t[e]]}return t}function values(e){return null==e?[]:Object.values(e)}function isNil(e){return null==e}function shuffle(e){return isNil(e)?[]:isArray(e)?shuffle$1(e):isArrayLike(e)?shuffle$1(Array.from(e)):isObjectLike(e)?shuffle$1(values(e)):[]}function size(e){return isNil$1(e)?0:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function slice(e,t,n){if(!isArrayLike(e))return[];const r=e.length;if(void 0===n)n=r;else if("number"!=typeof n&&isIterateeCall(e,t,n)){t=0;n=r}t=toInteger(t);n=toInteger(n);t=t<0?Math.max(r+t,0):Math.min(t,r);n=n<0?Math.max(r+n,0):Math.min(n,r);const i=Math.max(n-t,0),o=new Array(i);for(let n=0;n1&&isIterateeCall(e,t[0],t[1])?t=[]:n>2&&isIterateeCall(t[0],t[1],t[2])&&(t=[t[0]]);return orderBy(e,flatten$1(t),["asc"])}function identity(e){return e}function isNaN(e){return Number.isNaN(e)}const E=4294967294;function sortedIndexBy(e,t,n=identity,r){if(isNil(e)||0===e.length)return 0;let i=0,o=e.length;const s=iteratee(n),u=s(t),a=isNaN(u),c=isNull$1(u),l=isSymbol$1(u),f=isUndefined$1(u);for(;i>>1,o=e[i];!isNull$1(o)&&!isSymbol(o)&&oe))}function sortedIndexOf(e,t){if(!e?.length)return-1;const n=sortedIndex(e,t);return nL)return sortedLastIndexBy(e,t,(e=>e));let r=0;for(;r>>1,o=e[i];!isNull$1(o)&&!isSymbol(o)&&o<=t?r=i+1:n=i}return n}function sortedLastIndexOf(e,t){if(!e?.length)return-1;const n=sortedLastIndex(e,t)-1;return n>=0&&isEqualsSameValueZero(e[n],t)?n:-1}function tail(e){return isArrayLike(e)?function tail$1(e){return e.slice(1)}(toArray$1(e)):[]}function take(e,t=1,n){return(t=n?1:toInteger(t))<1||!isArrayLike(e)?[]:function take$1(e,t,n){t=void 0===t?1:toInteger(t);return e.slice(0,t)}(toArray$1(e),t)}function takeRight(e,t=1,n){return(t=n?1:toInteger(t))<=0||!isArrayLike(e)?[]:function takeRight$1(e,t,n){return(t=void 0===t?1:toInteger(t))<=0||0===e.length?[]:e.slice(-t)}(toArray$1(e),t)}function takeRightWhile(e,t){if(!isArrayLikeObject(e))return[];const n=toArray$1(e),r=n.findLastIndex(function negate(e){return(...t)=>!e(...t)}(iteratee(t??identity$1)));return n.slice(r+1)}function takeWhile(e,t){if(!isArrayLikeObject(e))return[];const n=toArray$1(e),r=n.findIndex(negate$1(iteratee(t??identity)));return-1===r?n:n.slice(0,r)}function union(...e){return uniq$1(flatMapDepth(e.filter(isArrayLikeObject),(e=>Array.from(e)),1))}function uniqBy$1(e,t){const n=new Map;for(let r=0;r!t(e,i)))&&n.push(i)}return n}function unionWith(...e){const t=last$1(e),n=flattenArrayLike(e);return isArrayLikeObject(t)||null==t?uniq$1(n):uniqWith$1(n,t)}function uniqBy(e,t=identity$1){return isArrayLikeObject(e)?uniqBy$1(Array.from(e),ary$1(iteratee(t),1)):[]}function uniqWith(e,t){return isArrayLike(e)?"function"==typeof t?uniqWith$1(Array.from(e),t):uniq(Array.from(e)):[]}function unzip$1(e){let t=0;for(let n=0;nt&&(t=e[n].length);const n=new Array(t);for(let r=0;risArrayLikeObject(e)))):[]}function unzipWith(e,t){if(!isArrayLikeObject(e)||!e.length)return[];const n=isArray(e)?unzip$1(e):unzip$1(Array.from(e,(e=>Array.from(e))));if(!t)return n;const r=new Array(n.length);for(let e=0;eintersectionBy(e,t,n))),n),n)}function xorWith(...e){const t=last(e);let comparator=(e,t)=>e===t;if("function"==typeof t){comparator=t;e=e.slice(0,-1)}const n=e.filter(isArrayLikeObject);return differenceWith(unionWith(...n,comparator),unionWith(...windowed(n,2).map((([e,t])=>intersectionWith(e,t,comparator))),comparator),comparator)}function zip$1(...e){let t=0;for(let n=0;nt&&(t=e[n].length);const n=e.length,r=Array(t);for(let i=0;iisArrayLikeObject(e)))):[]}const assignValue=(e,t,n)=>{const r=e[t];Object.hasOwn(e,t)&&isEqualsSameValueZero(r,n)&&(void 0!==n||t in e)||(e[t]=n)};function zipObject(e=[],t=[]){const n={};for(let r=0;rn),(()=>{}))}function zipObjectDeep(e,t){const n={};if(!isArrayLike(e))return n;isArrayLike(t)||(t=[]);const r=zip$1(Array.from(e),Array.from(t));for(let e=0;et(...e)))}function after$1(e,t){if("function"!=typeof t)throw new TypeError("Expected a function");e=toInteger(e);return function(...n){if(--e<1)return t.apply(this,n)}}function ary(e,t=e.length,n){n&&(t=e.length);(Number.isNaN(t)||t<0)&&(t=0);return ary$1(e,t)}function attempt(e,...t){try{return e(...t)}catch(e){return e instanceof Error?e:new Error(e)}}function before(e,t){if("function"!=typeof t)throw new TypeError("Expected a function");let n;e=toInteger(e);return function(...r){--e>0&&(n=t.apply(this,r));e<=1&&t&&(t=void 0);return n}}function bind(e,t,...n){const bound=function(...r){const i=[];let o=0;for(let e=0;ee===curry.placeholder)),i=n.length-r.length;return ie===curry.placeholder)),o=r.length-i.length;r=function composeArgs$1(e,t){const n=[];let r=0;for(let i=0;ie===curryRight.placeholder)),i=n.length-r.length;return ie===curryRight.placeholder)),o=r.length-i.length;r=function composeArgs(e,t){const n=t.filter((e=>e===curryRight.placeholder)).length,r=Math.max(e.length-n,0),i=[];let o=0;for(let t=0;t{if(null!==o){e.apply(i,o);i=void 0;o=null}};let a=null;const schedule=()=>{null!=a&&clearTimeout(a);a=setTimeout((()=>{a=null;(()=>{u&&invoke();cancel()})()}),t)},cancel=()=>{(()=>{if(null!==a){clearTimeout(a);a=null}})();i=void 0;o=null},debounced=function(...e){if(n?.aborted)return;i=this;o=e;const t=null==a;schedule();s&&t&&invoke()};debounced.schedule=schedule;debounced.cancel=cancel;debounced.flush=()=>{invoke()};n?.addEventListener("abort",cancel,{once:!0});return debounced}function debounce(e,t=0,n={}){"object"!=typeof n&&(n={});const{leading:r=!1,trailing:i=!0,maxWait:o}=n,s=Array(2);r&&(s[0]="leading");i&&(s[1]="trailing");let u,a=null;const c=debounce$1((function(...t){u=e.apply(this,t);a=null}),t,{edges:s}),debounced=function(...t){if(null!=o){null===a&&(a=Date.now());if(Date.now()-a>=o){u=e.apply(this,t);a=Date.now();c.cancel();c.schedule();return u}}c.apply(this,t);return u};debounced.cancel=c.cancel;debounced.flush=()=>{c.flush();return u};return debounced}function defer(e,...t){if("function"!=typeof e)throw new TypeError("Expected a function");return setTimeout(e,1,...t)}function delay(e,t,...n){if("function"!=typeof e)throw new TypeError("Expected a function");return setTimeout(e,toNumber(t)||0,...n)}function flip(e){return function(...t){return e.apply(this,t.reverse())}}function flow$1(...e){return function(...t){let n=e.length?e[0].apply(this,t):t[0];for(let t=1;t"function"!=typeof e)))throw new TypeError("Expected a function");return flow$1(...t)}function flowRight(...e){const t=flatten$1(e,1);if(t.some((e=>"function"!=typeof e)))throw new TypeError("Expected a function");return function flowRight$1(...e){return flow$1(...e.reverse())}(...t)}function memoize(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");const memoized=function(...n){const r=t?t.apply(this,n):n[0],i=memoized.cache;if(i.has(r))return i.get(r);const o=e.apply(this,n);memoized.cache=i.set(r,o)||i;return o},n=memoize.Cache||Map;memoized.cache=new n;return memoized}memoize.Cache=Map;function nthArg(e=0){return function(...t){return t.at(toInteger(e))}}function once(e){return function once$1(e){let t,n=!1;return function(...r){if(!n){n=!0;t=e(...r)}return t}}(e)}function overArgs(e,...t){if("function"!=typeof e)throw new TypeError("Expected a function");const n=t.flat();return function(...t){const r=Math.min(t.length,n.length),i=[...t];for(let e=0;ee===t?r[i++]:e)),s=r.slice(i);return e.apply(this,o.concat(s))};e.prototype&&(partialed.prototype=Object.create(e.prototype));return partialed}(e,partial.placeholder,...t)}partial.placeholder=Symbol("compat.partial.placeholder");function partialRight(e,...t){return function partialRightImpl(e,t,...n){const partialedRight=function(...r){const i=n.filter((e=>e===t)).length,o=Math.max(r.length-i,0),s=r.slice(0,o);let u=o;const a=n.slice().map((e=>e===t?r[u++]:e));return e.apply(this,s.concat(a))};e.prototype&&(partialedRight.prototype=Object.create(e.prototype));return partialedRight}(e,partialRight.placeholder,...t)}partialRight.placeholder=Symbol("compat.partialRight.placeholder");function rearg(e,...t){const n=flatten(t);return function(...t){const r=n.map((e=>t[e])).slice(0,t.length);for(let e=r.length;en&&([t,n]=[n,t]);return t!==n&&function inRange$1(e,t,n){if(null==n){n=t;t=0}if(t>=n)throw new Error("The maximum value must be greater than the minimum value.");return t<=e&&et)&&(t=r)}return t}function maxBy(e,t){if(null!=e)return function maxBy$1(e,t){if(0===e.length)return;let n=e[0],r=t(n,0,e);for(let i=1;ir){r=s;n=o}}return n}(Array.from(e),iteratee(t??identity$1))}function sumBy$1(e,t){if(!e||!e.length)return 0;null!=t&&(t=iteratee(t));let n;for(let r=0;rt(e)))/e.length}(Array.from(e),iteratee(t??identity$1))}function min(e){if(!e||0===e.length)return;let t;for(let n=0;nn&&([t,n]=[n,t]);t=clamp(t,-Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);n=clamp(n,-Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);return t===n?t:r?random$1(t,n+1):randomInt(t,n+1)}function range(e,t,n){n&&"number"!=typeof n&&isIterateeCall(e,t,n)&&(t=n=void 0);e=toFinite(e);if(void 0===t){t=e;e=0}else t=toFinite(t);n=void 0===n?e=0;t--){i[t]=e;e+=n}return i}function round(e,t=0){return decimalAdjust("round",e,t)}function subtract(e,t){if(void 0===e&&void 0===t)return 0;if(void 0===e||void 0===t)return e??t;if("string"==typeof e||"string"==typeof t){e=toString(e);t=toString(t)}else{e=toNumber(e);t=toNumber(t)}return e-t}function noop(...e){}function isPrototype(e){const t=e?.constructor;return e===("function"==typeof t?t.prototype:Object.prototype)}function isTypedArray(e){return isTypedArray$1(e)}function times(e,t){if((e=toInteger(e))<1||!Number.isSafeInteger(e))return[];const n=new Array(e);for(let r=0;r`${e}`)),n=new Set(t);if(isBuffer$1(e)){n.add("offset");n.add("parent")}if(isTypedArray(e)){n.add("buffer");n.add("byteLength");n.add("byteOffset")}const r=Object.keys(e).filter((e=>!n.has(e)));if(Array.isArray(e))return[...t,...r];return[...t.filter((t=>Object.hasOwn(e,t))),...r]}(e);const t=Object.keys(Object(e));return isPrototype(e)?t.filter((e=>"constructor"!==e)):t}function assign(e,...t){for(let n=0;n`${e}`)),n=new Set(t);if(isBuffer$1(e)){n.add("offset");n.add("parent")}if(isTypedArray(e)){n.add("buffer");n.add("byteLength");n.add("byteOffset")}const r=keysInImpl(e).filter((e=>!n.has(e)));if(Array.isArray(e))return[...t,...r];return[...t.filter((t=>Object.hasOwn(e,t))),...r]}(e):isPrototype(e)?function prototypeKeysIn(e){const t=keysInImpl(e);return t.filter((e=>"constructor"!==e))}(e):keysInImpl(e);default:return keysInImpl(Object(e))}}function keysInImpl(e){const t=[];for(const n in e)t.push(n);return t}function assignIn(e,...t){for(let n=0;n0&&"string"==typeof e[0]&&Object.hasOwn(e,"index")){t.index=e.index;t.input=e.input}return t}if(isTypedArray(e)){const t=e;return new(0,t.constructor)(t.buffer,t.byteOffset,t.length)}if(f===p)return new ArrayBuffer(e.byteLength);if(f===g){const t=e,n=t.buffer,r=t.byteOffset,i=t.byteLength,o=new ArrayBuffer(i),s=new Uint8Array(n,r,i);new Uint8Array(o).set(s);return new DataView(o)}if(f===i||f===r||f===n){const t=new(0,e.constructor)(e.valueOf());f===n?function cloneStringObjectProperties(e,t){const n=t.valueOf().length;for(const r in t)Object.hasOwn(t,r)&&(Number.isNaN(Number(r))||Number(r)>=n)&&(e[r]=t[r])}(t,e):copyOwnProperties(t,e);return t}if(f===u)return new Date(Number(e));if(f===t){const t=e,n=new RegExp(t.source,t.flags);n.lastIndex=t.lastIndex;return n}if(f===s)return Object(Symbol.prototype.valueOf.call(e));if(f===a){const t=e,n=new Map;t.forEach(((e,t)=>{n.set(t,e)}));return n}if(f===c){const t=e,n=new Set;t.forEach((e=>{n.add(e)}));return n}if(f===o){const t=e,n={};copyOwnProperties(n,t);n.length=t.length;n[Symbol.iterator]=t[Symbol.iterator];return n}const h={};!function copyPrototype(e,t){const n=Object.getPrototypeOf(t);if(null!==n){"function"==typeof t.constructor&&Object.setPrototypeOf(e,n)}}(h,e);copyOwnProperties(h,e);!function copySymbolProperties(e,t){const n=Object.getOwnPropertySymbols(t);for(let r=0;r2?t[2]:void 0;i&&isIterateeCall(t[0],t[1],i)&&(r=1);for(let i=0;it(e[n],n,e)))}(e,iteratee(t??identity))}function findLastKey(e,t){if(!isObject(e))return;const n=iteratee(t??identity);return Object.keys(e).findLast((t=>n(e[t],t,e)))}function forIn(e,t=identity$1){if(null==e)return e;for(const n in e){if(!1===t(e[n],n,e))break}return e}function forInRight(e,t=identity$1){if(null==e)return e;const n=[];for(const t in e)n.push(t);for(let r=n.length-1;r>=0;r--){const i=n[r];if(!1===t(e[i],i,e))break}return e}function forOwn(e,t=identity$1){if(null==e)return e;const n=Object(e),r=keys(e);for(let e=0;e=0;--e){const i=r[e];if(!1===t(n[i],i,n))break}return e}function fromPairs(e){if(!isArrayLike(e))return{};const t={};for(let n=0;n"function"==typeof e[t]))}function functionsIn(e){if(null==e)return[];const t=[];for(const n in e)isFunction$1(e[n])&&t.push(n);return t}function hasIn(e,t){if(null==e)return!1;let n;n=Array.isArray(t)?t:"string"==typeof t&&isDeepKey(t)&&null==e[t]?toPath(t):[t];if(0===n.length)return!1;let r=e;for(let e=0;eArray.isArray(e)||isDeepKey(e)));if(n)return function deepCloneInOmit(e){const t={},n=[...keysIn(e),...getSymbolsIn(e)];for(let r=0;r{if(!isPlainObject(e))return e}))}return t}(e);return function shallowCloneInOmit(e){const t={},n=[...keysIn(e),...getSymbolsIn(e)];for(let r=0;r{};return updateWith(e,t,(()=>n),i)}function toDefaulted(e,...t){return defaults(cloneDeep(e),...t)}function mapToEntries(e){const t=new Array(e.size),n=e.keys(),r=e.values();for(let e=0;et(n,e,r,i)));return n}function update(e,t,n){return updateWith(e,t,n,(()=>{}))}function valuesIn(e){const t=keysIn(e),n=new Array(t.length);for(let r=0;r=0}const D=Function.prototype.toString,z=RegExp(`^${D.call(Object.prototype.hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")}$`);function isNative(e){if("function"!=typeof e)return!1;if(null!=globalThis?.["__core-js_shared__"])throw new Error("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return z.test(D.call(e))}function isNull(e){return null===e}function isUndefined(e){return isUndefined$1(e)}function conformsTo(e,t){if(null==t)return!0;if(null==e)return 0===Object.keys(t).length;const n=Object.keys(t);for(let r=0;r"constructor"!==e)).length:0===t.length}return!0}function after(e,t){if(!Number.isInteger(e)||e<0)throw new Error("n must be a non-negative integer.");let n=0;return(...r)=>{if(++n>=e)return t(...r)}}function isEqualWith(e,t,n){"function"!=typeof n&&(n=()=>{});return isEqualWith$1(e,t,((...r)=>{const i=n(...r);return void 0!==i?Boolean(i):e instanceof Map&&t instanceof Map||e instanceof Set&&t instanceof Set?isEqualWith(Array.from(e),Array.from(t),after(2,n)):void 0}))}function isError(e){return"[object Error]"===getTag(e)}function isFinite(e){return Number.isFinite(e)}function isInteger(e){return Number.isInteger(e)}function isRegExp(e){return function isRegExp$1(e){return e instanceof RegExp}(e)}function isSafeInteger(e){return Number.isSafeInteger(e)}function isSet(e){return function isSet$1(e){return e instanceof Set}(e)}function isWeakMap(e){return function isWeakMap$1(e){return e instanceof WeakMap}(e)}function isWeakSet(e){return function isWeakSet$1(e){return e instanceof WeakSet}(e)}function capitalize$1(e){return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function capitalize(e){return capitalize$1(toString(e))}function bindAll(e,...t){if(null==e)return e;if(!isObject(e))return e;if(isArray(e)&&0===t.length)return e;const n=[];for(let e=0;e="̀"&&r<="ͯ"||r>="︠"&&r<="︣"||(t+=q.get(r)??r)}return t}(toString(e))}const T=/\p{Lu}?\p{Ll}+|[0-9]+|\p{Lu}+(?!\p{Ll})|\p{Emoji_Presentation}|\p{Extended_Pictographic}|\p{L}+/gu;function words$1(e){return Array.from(e.match(T)??[])}function normalizeForCase(e){"string"!=typeof e&&(e=toString(e));return e.replace(/['\u2019]/g,"")}function camelCase(e){return function camelCase$1(e){const t=words$1(e);if(0===t.length)return"";const[n,...r]=t;return`${n.toLowerCase()}${r.map((e=>capitalize$1(e))).join("")}`}(normalizeForCase(deburr(e)))}function endsWith(e,t,n){if(null==e||null==t)return!1;null==n&&(n=e.length);return e.endsWith(t,n)}const C={"&":"&","<":"<",">":">",'"':""","'":"'"};function escape(e){return function escape$1(e){return e.replace(/[&<>"']/g,(e=>C[e]))}(toString(e))}function escapeRegExp(e){return function escapeRegExp$1(e){return e.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&")}(toString(e))}function kebabCase(e){return function kebabCase$1(e){return words$1(e).map((e=>e.toLowerCase())).join("-")}(normalizeForCase(deburr(e)))}function lowerCase(e){return function lowerCase$1(e){return words$1(e).map((e=>e.toLowerCase())).join(" ")}(normalizeForCase(deburr(e)))}function lowerFirst(e){return function lowerFirst$1(e){return e.substring(0,1).toLowerCase()+e.substring(1)}(toString(e))}function pad(e,t,n){return function pad$1(e,t,n=" "){return e.padStart(Math.floor((t-e.length)/2)+e.length,n).padEnd(t,n)}(toString(e),t,n)}function padEnd(e,t=0,n=" "){return toString(e).padEnd(t,n)}function padStart(e,t=0,n=" "){return toString(e).padStart(t,n)}const F=Number.MAX_SAFE_INTEGER;function repeat(e,t,n){return(t=(n?isIterateeCall(e,t,n):void 0===t)?1:toInteger(t))<1||t>F?"":toString(e).repeat(t)}function replace(e,t,n){return arguments.length<3?toString(e):toString(e).replace(t,n)}function snakeCase(e){return function snakeCase$1(e){return words$1(e).map((e=>e.toLowerCase())).join("_")}(normalizeForCase(deburr(e)))}function split(e,t,n){return toString(e).split(t,n)}function startCase(e){const t=words$1(normalizeForCase(deburr(e)).trim());let n="";for(let e=0;e/g,X={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:Z,variable:"",imports:{_:{escape,template}}};function template(e,t,n){e=toString(e);n&&(t=X);t=defaults({...t},X);const r=new RegExp([t.escape?.source??U.source,t.interpolate?.source??U.source,t.interpolate===Z?_.source:U.source,t.evaluate?.source??U.source,"$"].join("|"),"g");let i=0,o=!1,s="__p += ''";for(const t of e.matchAll(r)){const[n,r,u,a,c]=t,{index:l}=t;s+=` + '${e.slice(i,l).replace(K,escapeString)}'`;r&&(s+=` + _.escape(${r})`);u?s+=` + ((${u}) == null ? '' : ${u})`:a&&(s+=` + ((${a}) == null ? '' : ${a})`);if(c){s+=`;\n${c};\n __p += ''`;o=!0}i=l+n.length}const u=defaults({...t.imports},X.imports),a=Object.keys(u),c=Object.values(u),l=`//# sourceURL=${t.sourceURL?String(t.sourceURL).replace(/[\r\n]/g," "):`es-toolkit.templateSource[${Date.now()}]`}\n`,f=`function(${t.variable||"obj"}) {\n let __p = '';\n ${t.variable?"":"if (obj == null) { obj = {}; }"}\n ${o?"function print() { __p += Array.prototype.join.call(arguments, ''); }":""}\n ${t.variable?s:`with(obj) {\n${s}\n}`}\n return __p;\n }`,p=attempt((()=>new Function(...a,`${l}return ${f}`)(...c)));p.source=f;if(p instanceof Error)throw p;return p}function toLower(e){return toString(e).toLowerCase()}function toUpper(e){return toString(e).toUpperCase()}function trimEnd$1(e,t){if(void 0===t)return e.trimEnd();let n=e.length;switch(typeof t){case"string":if(1!==t.length)throw new Error("The 'chars' parameter should be a single character string.");for(;n>0&&e[n-1]===t;)n--;break;case"object":for(;n>0&&t.includes(e[n-1]);)n--}return e.substring(0,n)}function trimStart$1(e,t){if(void 0===t)return e.trimStart();let n=0;switch(typeof t){case"string":for(;ne.toString().split("")))):trim$1(e,t.toString().split(""))}function trimEnd(e,t,n){return null==e?"":null!=n||null==t?e.toString().trimEnd():trimEnd$1(e,t.toString().split(""))}function trimStart(e,t,n){return null==e?"":null!=n||null==t?e.toString().trimStart():trimStart$1(e,t.toString().split(""))}const G=/[\u200d\ud800-\udfff\u0300-\u036f\ufe20-\ufe2f\u20d0-\u20ff\ufe0e\ufe0f]/;function truncate(e,t){e=null!=e?`${e}`:"";let n=30,r="...";if(isObject(t)){n=function parseLength(e){if(null==e)return 30;if(e<=0)return 0;return e}(t.length);r="omission"in t?`${t.omission}`:"..."}let i=e.length;const o=Array.from(r).length,s=Math.max(n-o,0);let u;if(G.test(e)){u=Array.from(e);i=u.length}if(n>=i)return e;if(i<=o)return r;let a=void 0===u?e.slice(0,s):u?.slice(0,s).join("");const c=t?.separator;if(!c){a+=r;return a}const l=c instanceof RegExp?c.source:c,f="u"+(c instanceof RegExp?c.flags.replace("u",""):""),p=new RegExp(`(?.*(?:(?!${l}).))(?:${l})`,f).exec(a);return(p?.groups?p.groups.result:a)+r}const H={"&":"&","<":"<",">":">",""":'"',"'":"'"};function unescape(e){return function unescape$1(e){return e.replace(/&(?:amp|lt|gt|quot|#(0+)?39);/g,(e=>H[e]||"'"))}(toString(e))}function upperCase(e){return function upperCase$1(e){const t=words$1(e);let n="";for(let e=0;e""!==e))}function cond(e){const t=e.length,n=e.map((e=>{const t=e[0],n=e[1];if(!isFunction$1(n))throw new TypeError("Expected a function");return[iteratee(t),n]}));return function(...e){for(let r=0;re}function defaultTo(e,t){return null==e||Number.isNaN(e)?t:e}function gt(e,t){return"string"==typeof e&&"string"==typeof t?e>t:toNumber(e)>toNumber(t)}function gte(e,t){return"string"==typeof e&&"string"==typeof t?e>=t:toNumber(e)>=toNumber(t)}function invoke(e,t,...n){n=n.flat(1);if(null!=e)switch(typeof t){case"string":return"object"==typeof e&&Object.hasOwn(e,t)?invokeImpl(e,[t],n):invokeImpl(e,toPath(t),n);case"number":case"symbol":return invokeImpl(e,[t],n);default:return Array.isArray(t)?invokeImpl(e,t,n):invokeImpl(e,[t],n)}}function invokeImpl(e,t,n){const r=get(e,t.slice(0,-1),e);if(null==r)return;let i=last(t);const o=i?.valueOf();i="number"==typeof o?toKey(o):String(i);const s=get(r,i);return s?.apply(r,n)}function lt(e,t){return"string"==typeof e&&"string"==typeof t?eiteratee(e)));return function(...e){return t.map((t=>t.apply(this,e)))}}function overEvery(...e){return function(...t){for(let n=0;ne;Object.assign(toolkit,ue);toolkit.partial.placeholder=toolkit;toolkit.partialRight.placeholder=toolkit;e.add=add;e.after=after$1;e.ary=ary;e.assign=assign;e.assignIn=assignIn;e.assignInWith=assignInWith;e.assignWith=assignWith;e.at=at;e.attempt=attempt;e.before=before;e.bind=bind;e.bindAll=bindAll;e.bindKey=bindKey;e.camelCase=camelCase;e.capitalize=capitalize;e.castArray=castArray;e.ceil=ceil;e.chunk=chunk;e.clamp=clamp;e.clone=clone$1;e.cloneDeep=cloneDeep;e.cloneDeepWith=cloneDeepWith;e.cloneWith=cloneWith;e.compact=compact;e.concat=concat;e.cond=cond;e.conforms=conforms;e.conformsTo=conformsTo;e.constant=constant;e.countBy=countBy;e.create=create;e.curry=curry;e.curryRight=curryRight;e.debounce=debounce;e.deburr=deburr;e.default=toolkit;e.defaultTo=defaultTo;e.defaults=defaults;e.defaultsDeep=defaultsDeep;e.defer=defer;e.delay=delay;e.difference=difference;e.differenceBy=differenceBy;e.differenceWith=differenceWith;e.divide=divide;e.drop=drop;e.dropRight=dropRight;e.dropRightWhile=dropRightWhile;e.dropWhile=dropWhile;e.each=forEach;e.eachRight=forEachRight;e.endsWith=endsWith;e.eq=isEqualsSameValueZero;e.escape=escape;e.escapeRegExp=escapeRegExp;e.every=every;e.extend=assignIn;e.extendWith=assignInWith;e.fill=fill;e.filter=filter;e.find=find;e.findIndex=findIndex;e.findKey=findKey;e.findLast=findLast;e.findLastIndex=findLastIndex;e.findLastKey=findLastKey;e.first=head;e.flatMap=flatMap;e.flatMapDeep=flatMapDeep;e.flatMapDepth=flatMapDepth;e.flatten=flatten;e.flattenDeep=flattenDeep;e.flattenDepth=flattenDepth;e.flip=flip;e.floor=floor;e.flow=flow;e.flowRight=flowRight;e.forEach=forEach;e.forEachRight=forEachRight;e.forIn=forIn;e.forInRight=forInRight;e.forOwn=forOwn;e.forOwnRight=forOwnRight;e.fromPairs=fromPairs;e.functions=functions;e.functionsIn=functionsIn;e.get=get;e.groupBy=groupBy;e.gt=gt;e.gte=gte;e.has=has;e.hasIn=hasIn;e.head=head;e.identity=identity;e.inRange=inRange;e.includes=includes;e.indexOf=indexOf;e.initial=initial;e.intersection=intersection;e.intersectionBy=intersectionBy;e.intersectionWith=intersectionWith;e.invert=invert;e.invertBy=invertBy;e.invoke=invoke;e.invokeMap=invokeMap;e.isArguments=isArguments;e.isArray=isArray;e.isArrayBuffer=isArrayBuffer;e.isArrayLike=isArrayLike;e.isArrayLikeObject=isArrayLikeObject;e.isBoolean=isBoolean;e.isBuffer=isBuffer;e.isDate=isDate;e.isElement=isElement;e.isEmpty=isEmpty;e.isEqual=isEqual;e.isEqualWith=isEqualWith;e.isError=isError;e.isFinite=isFinite;e.isFunction=isFunction;e.isInteger=isInteger;e.isLength=isLength;e.isMap=isMap;e.isMatch=isMatch;e.isMatchWith=isMatchWith;e.isNaN=isNaN;e.isNative=isNative;e.isNil=isNil;e.isNull=isNull;e.isNumber=isNumber;e.isObject=isObject;e.isObjectLike=isObjectLike;e.isPlainObject=isPlainObject;e.isRegExp=isRegExp;e.isSafeInteger=isSafeInteger;e.isSet=isSet;e.isString=isString;e.isSymbol=isSymbol$1;e.isTypedArray=isTypedArray;e.isUndefined=isUndefined;e.isWeakMap=isWeakMap;e.isWeakSet=isWeakSet;e.iteratee=iteratee;e.join=join;e.kebabCase=kebabCase;e.keyBy=keyBy;e.keys=keys;e.keysIn=keysIn;e.last=last;e.lastIndexOf=lastIndexOf;e.lowerCase=lowerCase;e.lowerFirst=lowerFirst;e.lt=lt;e.lte=lte;e.map=map;e.mapKeys=mapKeys;e.mapValues=mapValues;e.matches=matches;e.matchesProperty=matchesProperty;e.max=max;e.maxBy=maxBy;e.mean=mean;e.meanBy=meanBy;e.memoize=memoize;e.merge=merge;e.mergeWith=mergeWith;e.method=method;e.methodOf=methodOf;e.min=min;e.minBy=minBy;e.multiply=multiply;e.negate=negate$1;e.noop=noop;e.now=now;e.nth=nth;e.nthArg=nthArg;e.omit=omit;e.omitBy=omitBy;e.once=once;e.orderBy=orderBy;e.over=over;e.overArgs=overArgs;e.overEvery=overEvery;e.overSome=overSome;e.pad=pad;e.padEnd=padEnd;e.padStart=padStart;e.parseInt=parseInt;e.partial=partial;e.partialRight=partialRight;e.partition=partition;e.pick=pick;e.pickBy=pickBy;e.property=property;e.propertyOf=propertyOf;e.pull=pull;e.pullAll=pullAll;e.pullAllBy=pullAllBy;e.pullAllWith=pullAllWith;e.pullAt=pullAt;e.random=random;e.range=range;e.rangeRight=rangeRight;e.rearg=rearg;e.reduce=reduce;e.reduceRight=reduceRight;e.reject=reject;e.remove=remove;e.repeat=repeat;e.replace=replace;e.rest=rest;e.result=result;e.reverse=reverse;e.round=round;e.sample=sample;e.sampleSize=sampleSize;e.set=set;e.setWith=setWith;e.shuffle=shuffle;e.size=size;e.slice=slice;e.snakeCase=snakeCase;e.some=some;e.sortBy=sortBy;e.sortedIndex=sortedIndex;e.sortedIndexBy=sortedIndexBy;e.sortedIndexOf=sortedIndexOf;e.sortedLastIndex=sortedLastIndex;e.sortedLastIndexBy=sortedLastIndexBy;e.sortedLastIndexOf=sortedLastIndexOf;e.split=split;e.spread=spread;e.startCase=startCase;e.startsWith=startsWith;e.stubArray=stubArray;e.stubFalse=stubFalse;e.stubObject=stubObject;e.stubString=stubString;e.stubTrue=stubTrue;e.subtract=subtract;e.sum=sum;e.sumBy=sumBy$1;e.tail=tail;e.take=take;e.takeRight=takeRight;e.takeRightWhile=takeRightWhile;e.takeWhile=takeWhile;e.template=template;e.templateSettings=X;e.throttle=throttle;e.times=times;e.toArray=toArray;e.toDefaulted=toDefaulted;e.toFinite=toFinite;e.toInteger=toInteger;e.toLength=toLength;e.toLower=toLower;e.toNumber=toNumber;e.toPairs=toPairs;e.toPairsIn=toPairsIn;e.toPath=toPath;e.toPlainObject=toPlainObject;e.toSafeInteger=toSafeInteger;e.toString=toString;e.toUpper=toUpper;e.transform=transform;e.trim=trim;e.trimEnd=trimEnd;e.trimStart=trimStart;e.truncate=truncate;e.unary=unary;e.unescape=unescape;e.union=union;e.unionBy=unionBy;e.unionWith=unionWith;e.uniq=uniq;e.uniqBy=uniqBy;e.uniqWith=uniqWith;e.uniqueId=uniqueId;e.unset=unset;e.unzip=unzip;e.unzipWith=unzipWith;e.update=update;e.updateWith=updateWith;e.upperCase=upperCase;e.upperFirst=upperFirst;e.values=values;e.valuesIn=valuesIn;e.without=without;e.words=words;e.wrap=wrap;e.xor=xor;e.xorBy=xorBy;e.xorWith=xorWith;e.zip=zip;e.zipObject=zipObject;e.zipObjectDeep=zipObjectDeep;e.zipWith=zipWith;Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})})); diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ArrayIterator.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ArrayIterator.d.mts deleted file mode 100644 index cef4fdd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ArrayIterator.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -type ArrayIterator = (value: T, index: number, collection: T[]) => R; - -export type { ArrayIterator }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ArrayIterator.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ArrayIterator.d.ts deleted file mode 100644 index cef4fdd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ArrayIterator.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -type ArrayIterator = (value: T, index: number, collection: T[]) => R; - -export type { ArrayIterator }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ConformsPredicateObject.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ConformsPredicateObject.d.mts deleted file mode 100644 index bac85d8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ConformsPredicateObject.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -type ConformsPredicateObject = { - [P in keyof T]: T[P] extends (arg: infer A) => any ? A : any; -}; - -export type { ConformsPredicateObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ConformsPredicateObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ConformsPredicateObject.d.ts deleted file mode 100644 index bac85d8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ConformsPredicateObject.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -type ConformsPredicateObject = { - [P in keyof T]: T[P] extends (arg: infer A) => any ? A : any; -}; - -export type { ConformsPredicateObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/EmptyObjectOf.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/EmptyObjectOf.d.mts deleted file mode 100644 index 9b370c0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/EmptyObjectOf.d.mts +++ /dev/null @@ -1,6 +0,0 @@ -type EmptyObject = { - [K in keyof T]?: never; -}; -type EmptyObjectOf = EmptyObject extends T ? EmptyObject : never; - -export type { EmptyObjectOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/EmptyObjectOf.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/EmptyObjectOf.d.ts deleted file mode 100644 index 9b370c0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/EmptyObjectOf.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -type EmptyObject = { - [K in keyof T]?: never; -}; -type EmptyObjectOf = EmptyObject extends T ? EmptyObject : never; - -export type { EmptyObjectOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/Equals.d.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/Equals.d.d.mts deleted file mode 100644 index eccaa96..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/Equals.d.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -type Equals = (() => X extends T ? 1 : 2) extends () => X extends U ? 1 : 2 ? true : false; - -export type { Equals }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/Equals.d.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/Equals.d.d.ts deleted file mode 100644 index eccaa96..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/Equals.d.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -type Equals = (() => X extends T ? 1 : 2) extends () => X extends U ? 1 : 2 ? true : false; - -export type { Equals }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/GetFieldType.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/GetFieldType.d.mts deleted file mode 100644 index 4ccf8df..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/GetFieldType.d.mts +++ /dev/null @@ -1,12 +0,0 @@ -type GetFieldTypeOfArrayLikeByKey = K extends number ? T[K] : K extends `${infer N extends number}` ? T[N] : K extends keyof T ? T[K] : undefined; -type GetFieldTypeOfStringByKey = K extends number ? T[K] : K extends `${infer N extends number}` ? T[N] : K extends keyof T ? T[K] : undefined; -type GetFieldTypeOfNarrowedByKey = T extends unknown[] ? GetFieldTypeOfArrayLikeByKey : T extends string ? GetFieldTypeOfStringByKey : K extends keyof T ? T[K] : K extends number ? `${K}` extends keyof T ? T[`${K}`] : undefined : K extends `${infer N extends number}` ? N extends keyof T ? T[N] : undefined : undefined; -type GetFieldTypeOfNarrowedByDotPath = P extends `${infer L}.${infer R}` ? GetFieldType, R, 'DotPath'> : GetFieldTypeOfNarrowedByKey; -type GetFieldTypeOfNarrowedByLcKR = '' extends R ? GetFieldType, K, 'Key'> : R extends `.${infer Rc}` ? GetFieldType, K, 'Key'>, Rc> : GetFieldType, K, 'Key'>, R>; -type GetFieldTypeOfNarrowedByLKR = '' extends L ? '' extends R ? GetFieldTypeOfNarrowedByKey : R extends `.${infer Rc}` ? GetFieldType, Rc> : GetFieldType, R> : L extends `${infer Lc}.` ? GetFieldTypeOfNarrowedByLcKR : GetFieldTypeOfNarrowedByLcKR; -type GetFieldTypeOfNarrowed = XT extends 'Key' ? GetFieldTypeOfNarrowedByKey : XT extends 'DotPath' ? GetFieldTypeOfNarrowedByDotPath : X extends `${infer L}['${infer K}']${infer R}` ? GetFieldTypeOfNarrowedByLKR : X extends `${infer L}["${infer K}"]${infer R}` ? GetFieldTypeOfNarrowedByLKR : X extends `${infer L}[${infer K}]${infer R}` ? GetFieldTypeOfNarrowedByLKR : GetFieldTypeOfNarrowedByDotPath; -type GetFieldTypeOfObject = Extract extends never ? GetFieldTypeOfNarrowed : GetFieldTypeOfNarrowed, X, XT> | GetFieldTypeOfNarrowed, X, XT>; -type GetFieldTypeOfPrimitive = Extract extends never ? T extends never ? never : undefined : (Exclude extends never ? never : undefined) | GetFieldTypeOfNarrowed, X, XT>; -type GetFieldType = Extract extends never ? GetFieldTypeOfPrimitive : GetFieldTypeOfPrimitive, X, XT> | GetFieldTypeOfObject, X, XT>; - -export type { GetFieldType }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/GetFieldType.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/GetFieldType.d.ts deleted file mode 100644 index 4ccf8df..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/GetFieldType.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -type GetFieldTypeOfArrayLikeByKey = K extends number ? T[K] : K extends `${infer N extends number}` ? T[N] : K extends keyof T ? T[K] : undefined; -type GetFieldTypeOfStringByKey = K extends number ? T[K] : K extends `${infer N extends number}` ? T[N] : K extends keyof T ? T[K] : undefined; -type GetFieldTypeOfNarrowedByKey = T extends unknown[] ? GetFieldTypeOfArrayLikeByKey : T extends string ? GetFieldTypeOfStringByKey : K extends keyof T ? T[K] : K extends number ? `${K}` extends keyof T ? T[`${K}`] : undefined : K extends `${infer N extends number}` ? N extends keyof T ? T[N] : undefined : undefined; -type GetFieldTypeOfNarrowedByDotPath = P extends `${infer L}.${infer R}` ? GetFieldType, R, 'DotPath'> : GetFieldTypeOfNarrowedByKey; -type GetFieldTypeOfNarrowedByLcKR = '' extends R ? GetFieldType, K, 'Key'> : R extends `.${infer Rc}` ? GetFieldType, K, 'Key'>, Rc> : GetFieldType, K, 'Key'>, R>; -type GetFieldTypeOfNarrowedByLKR = '' extends L ? '' extends R ? GetFieldTypeOfNarrowedByKey : R extends `.${infer Rc}` ? GetFieldType, Rc> : GetFieldType, R> : L extends `${infer Lc}.` ? GetFieldTypeOfNarrowedByLcKR : GetFieldTypeOfNarrowedByLcKR; -type GetFieldTypeOfNarrowed = XT extends 'Key' ? GetFieldTypeOfNarrowedByKey : XT extends 'DotPath' ? GetFieldTypeOfNarrowedByDotPath : X extends `${infer L}['${infer K}']${infer R}` ? GetFieldTypeOfNarrowedByLKR : X extends `${infer L}["${infer K}"]${infer R}` ? GetFieldTypeOfNarrowedByLKR : X extends `${infer L}[${infer K}]${infer R}` ? GetFieldTypeOfNarrowedByLKR : GetFieldTypeOfNarrowedByDotPath; -type GetFieldTypeOfObject = Extract extends never ? GetFieldTypeOfNarrowed : GetFieldTypeOfNarrowed, X, XT> | GetFieldTypeOfNarrowed, X, XT>; -type GetFieldTypeOfPrimitive = Extract extends never ? T extends never ? never : undefined : (Exclude extends never ? never : undefined) | GetFieldTypeOfNarrowed, X, XT>; -type GetFieldType = Extract extends never ? GetFieldTypeOfPrimitive : GetFieldTypeOfPrimitive, X, XT> | GetFieldTypeOfObject, X, XT>; - -export type { GetFieldType }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsEqualCustomizer.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsEqualCustomizer.d.mts deleted file mode 100644 index ab00e63..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsEqualCustomizer.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -type IsEqualCustomizer = (value: any, other: any, indexOrKey: PropertyKey | undefined, parent: any, otherParent: any, stack: any) => boolean | undefined; - -export type { IsEqualCustomizer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsEqualCustomizer.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsEqualCustomizer.d.ts deleted file mode 100644 index ab00e63..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsEqualCustomizer.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -type IsEqualCustomizer = (value: any, other: any, indexOrKey: PropertyKey | undefined, parent: any, otherParent: any, stack: any) => boolean | undefined; - -export type { IsEqualCustomizer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsMatchWithCustomizer.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsMatchWithCustomizer.d.mts deleted file mode 100644 index 166966d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsMatchWithCustomizer.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -type IsMatchWithCustomizer = (value: any, other: any, indexOrKey: PropertyKey, object: object, source: object) => boolean | undefined; - -export type { IsMatchWithCustomizer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsMatchWithCustomizer.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsMatchWithCustomizer.d.ts deleted file mode 100644 index 166966d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsMatchWithCustomizer.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -type IsMatchWithCustomizer = (value: any, other: any, indexOrKey: PropertyKey, object: object, source: object) => boolean | undefined; - -export type { IsMatchWithCustomizer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsWritable.d.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsWritable.d.d.mts deleted file mode 100644 index c9bfd8d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsWritable.d.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -import { Equals } from './Equals.d.mjs'; - -type IsWritable = Equals<{ [K in keyof T]: T[K] }, { -readonly [K in keyof T]: T[K] }>; - -export type { IsWritable }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsWritable.d.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsWritable.d.d.ts deleted file mode 100644 index b283243..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IsWritable.d.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Equals } from './Equals.d.js'; - -type IsWritable = Equals<{ [K in keyof T]: T[K] }, { -readonly [K in keyof T]: T[K] }>; - -export type { IsWritable }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IterateeShorthand.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IterateeShorthand.d.mts deleted file mode 100644 index 767ed7d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IterateeShorthand.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -import { PartialShallow } from './PartialShallow.mjs'; - -type IterateeShorthand = PropertyKey | [PropertyKey, any] | PartialShallow; - -export type { IterateeShorthand }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IterateeShorthand.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IterateeShorthand.d.ts deleted file mode 100644 index bd0c192..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/IterateeShorthand.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { PartialShallow } from './PartialShallow.js'; - -type IterateeShorthand = PropertyKey | [PropertyKey, any] | PartialShallow; - -export type { IterateeShorthand }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIteratee.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIteratee.d.mts deleted file mode 100644 index 5e7b3d8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIteratee.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -import { PartialShallow } from './PartialShallow.mjs'; - -type ListIteratee = ((value: T, index: number, collection: ArrayLike) => unknown) | (PropertyKey | [PropertyKey, any] | PartialShallow); - -export type { ListIteratee }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIteratee.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIteratee.d.ts deleted file mode 100644 index bf58eec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIteratee.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { PartialShallow } from './PartialShallow.js'; - -type ListIteratee = ((value: T, index: number, collection: ArrayLike) => unknown) | (PropertyKey | [PropertyKey, any] | PartialShallow); - -export type { ListIteratee }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIterateeCustom.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIterateeCustom.d.mts deleted file mode 100644 index 85f5163..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIterateeCustom.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -import { PartialShallow } from './PartialShallow.mjs'; - -type ListIterateeCustom = ((value: T, index: number, collection: ArrayLike) => R) | (PropertyKey | [PropertyKey, any] | PartialShallow); - -export type { ListIterateeCustom }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIterateeCustom.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIterateeCustom.d.ts deleted file mode 100644 index 8ae6916..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIterateeCustom.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { PartialShallow } from './PartialShallow.js'; - -type ListIterateeCustom = ((value: T, index: number, collection: ArrayLike) => R) | (PropertyKey | [PropertyKey, any] | PartialShallow); - -export type { ListIterateeCustom }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIterator.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIterator.d.mts deleted file mode 100644 index 56340df..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIterator.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -type ListIterator = (value: T, index: number, collection: ArrayLike) => R; - -export type { ListIterator }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIterator.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIterator.d.ts deleted file mode 100644 index 56340df..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIterator.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -type ListIterator = (value: T, index: number, collection: ArrayLike) => R; - -export type { ListIterator }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIteratorTypeGuard.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIteratorTypeGuard.d.mts deleted file mode 100644 index 78a872e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIteratorTypeGuard.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -type ListIteratorTypeGuard = (value: T, index: number, collection: ArrayLike) => value is S; - -export type { ListIteratorTypeGuard }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIteratorTypeGuard.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIteratorTypeGuard.d.ts deleted file mode 100644 index 78a872e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListIteratorTypeGuard.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -type ListIteratorTypeGuard = (value: T, index: number, collection: ArrayLike) => value is S; - -export type { ListIteratorTypeGuard }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListOfRecursiveArraysOrValues.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListOfRecursiveArraysOrValues.d.mts deleted file mode 100644 index cd1e1d2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListOfRecursiveArraysOrValues.d.mts +++ /dev/null @@ -1,6 +0,0 @@ -import { RecursiveArray } from './RecursiveArray.mjs'; - -interface ListOfRecursiveArraysOrValues extends ArrayLike> { -} - -export type { ListOfRecursiveArraysOrValues }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListOfRecursiveArraysOrValues.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListOfRecursiveArraysOrValues.d.ts deleted file mode 100644 index f23a76d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ListOfRecursiveArraysOrValues.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { RecursiveArray } from './RecursiveArray.js'; - -interface ListOfRecursiveArraysOrValues extends ArrayLike> { -} - -export type { ListOfRecursiveArraysOrValues }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MAX_ARRAY_LENGTH.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MAX_ARRAY_LENGTH.js deleted file mode 100644 index e135b1c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MAX_ARRAY_LENGTH.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const MAX_ARRAY_LENGTH = 4_294_967_295; - -exports.MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MAX_ARRAY_LENGTH.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MAX_ARRAY_LENGTH.mjs deleted file mode 100644 index 6673a50..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MAX_ARRAY_LENGTH.mjs +++ /dev/null @@ -1,3 +0,0 @@ -const MAX_ARRAY_LENGTH = 4_294_967_295; - -export { MAX_ARRAY_LENGTH }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MAX_SAFE_INTEGER.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MAX_SAFE_INTEGER.js deleted file mode 100644 index f6c837c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MAX_SAFE_INTEGER.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER; - -exports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MAX_SAFE_INTEGER.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MAX_SAFE_INTEGER.mjs deleted file mode 100644 index 63706aa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MAX_SAFE_INTEGER.mjs +++ /dev/null @@ -1,3 +0,0 @@ -const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER; - -export { MAX_SAFE_INTEGER }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/Many.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/Many.d.mts deleted file mode 100644 index 5620f6a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/Many.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -type Many = T | readonly T[]; - -export type { Many }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/Many.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/Many.d.ts deleted file mode 100644 index 5620f6a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/Many.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -type Many = T | readonly T[]; - -export type { Many }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MemoListIterator.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MemoListIterator.d.mts deleted file mode 100644 index cf4b27c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MemoListIterator.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -type MemoListIterator = (prev: R, curr: T, index: number, list: A) => R; - -export type { MemoListIterator }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MemoListIterator.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MemoListIterator.d.ts deleted file mode 100644 index cf4b27c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MemoListIterator.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -type MemoListIterator = (prev: R, curr: T, index: number, list: A) => R; - -export type { MemoListIterator }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MemoObjectIterator.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MemoObjectIterator.d.mts deleted file mode 100644 index 64a21c5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MemoObjectIterator.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -type MemoObjectIterator = (prev: R, curr: T, key: string, list: A) => R; - -export type { MemoObjectIterator }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MemoObjectIterator.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MemoObjectIterator.d.ts deleted file mode 100644 index 64a21c5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MemoObjectIterator.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -type MemoObjectIterator = (prev: R, curr: T, key: string, list: A) => R; - -export type { MemoObjectIterator }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MutableList.d.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MutableList.d.d.mts deleted file mode 100644 index 7f41af7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MutableList.d.d.mts +++ /dev/null @@ -1,6 +0,0 @@ -interface MutableList { - length: number; - [k: number]: T; -} - -export type { MutableList }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MutableList.d.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MutableList.d.d.ts deleted file mode 100644 index 7f41af7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/MutableList.d.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -interface MutableList { - length: number; - [k: number]: T; -} - -export type { MutableList }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ObjectIteratee.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ObjectIteratee.d.mts deleted file mode 100644 index 18a1c9a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ObjectIteratee.d.mts +++ /dev/null @@ -1,7 +0,0 @@ -import { IterateeShorthand } from './IterateeShorthand.mjs'; -import { ObjectIterator } from './ObjectIterator.mjs'; - -type ObjectIteratee = ObjectIterator | IterateeShorthand; -type ObjectIterateeCustom = ObjectIterator | IterateeShorthand; - -export type { ObjectIteratee, ObjectIterateeCustom }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ObjectIteratee.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ObjectIteratee.d.ts deleted file mode 100644 index 4c94911..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ObjectIteratee.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { IterateeShorthand } from './IterateeShorthand.js'; -import { ObjectIterator } from './ObjectIterator.js'; - -type ObjectIteratee = ObjectIterator | IterateeShorthand; -type ObjectIterateeCustom = ObjectIterator | IterateeShorthand; - -export type { ObjectIteratee, ObjectIterateeCustom }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ObjectIterator.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ObjectIterator.d.mts deleted file mode 100644 index e06da40..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ObjectIterator.d.mts +++ /dev/null @@ -1,4 +0,0 @@ -type ObjectIterator = (value: T[keyof T], key: string, collection: T) => R; -type ObjectIteratorTypeGuard = (value: T[keyof T], key: string, collection: T) => value is U; - -export type { ObjectIterator, ObjectIteratorTypeGuard }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ObjectIterator.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ObjectIterator.d.ts deleted file mode 100644 index e06da40..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ObjectIterator.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -type ObjectIterator = (value: T[keyof T], key: string, collection: T) => R; -type ObjectIteratorTypeGuard = (value: T[keyof T], key: string, collection: T) => value is U; - -export type { ObjectIterator, ObjectIteratorTypeGuard }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/PartialShallow.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/PartialShallow.d.mts deleted file mode 100644 index a728158..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/PartialShallow.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -type PartialShallow = { - [P in keyof T]?: T[P] extends object ? object : T[P]; -}; - -export type { PartialShallow }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/PartialShallow.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/PartialShallow.d.ts deleted file mode 100644 index a728158..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/PartialShallow.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -type PartialShallow = { - [P in keyof T]?: T[P] extends object ? object : T[P]; -}; - -export type { PartialShallow }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/PropertyPath.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/PropertyPath.d.mts deleted file mode 100644 index a9f4a38..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/PropertyPath.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -import { Many } from './Many.mjs'; - -type PropertyPath = Many; - -export type { PropertyPath }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/PropertyPath.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/PropertyPath.d.ts deleted file mode 100644 index 9445696..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/PropertyPath.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Many } from './Many.js'; - -type PropertyPath = Many; - -export type { PropertyPath }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/RecursiveArray.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/RecursiveArray.d.mts deleted file mode 100644 index 8b29965..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/RecursiveArray.d.mts +++ /dev/null @@ -1,4 +0,0 @@ -interface RecursiveArray extends Array> { -} - -export type { RecursiveArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/RecursiveArray.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/RecursiveArray.d.ts deleted file mode 100644 index 8b29965..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/RecursiveArray.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -interface RecursiveArray extends Array> { -} - -export type { RecursiveArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/RejectReadonly.d.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/RejectReadonly.d.d.mts deleted file mode 100644 index 6a7f9d0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/RejectReadonly.d.d.mts +++ /dev/null @@ -1,6 +0,0 @@ -import { IsWritable } from './IsWritable.d.mjs'; -import { MutableList } from './MutableList.d.mjs'; - -type RejectReadonly> = IsWritable extends true ? T : never; - -export type { RejectReadonly }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/RejectReadonly.d.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/RejectReadonly.d.d.ts deleted file mode 100644 index bf53268..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/RejectReadonly.d.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { IsWritable } from './IsWritable.d.js'; -import { MutableList } from './MutableList.d.js'; - -type RejectReadonly> = IsWritable extends true ? T : never; - -export type { RejectReadonly }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/StringIterator.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/StringIterator.d.mts deleted file mode 100644 index 9d52528..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/StringIterator.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -type StringIterator = (char: string, index: number, string: string) => R; - -export type { StringIterator }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/StringIterator.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/StringIterator.d.ts deleted file mode 100644 index 9d52528..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/StringIterator.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -type StringIterator = (char: string, index: number, string: string) => R; - -export type { StringIterator }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/TupleIterator.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/TupleIterator.d.mts deleted file mode 100644 index e558e56..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/TupleIterator.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -type TupleIterator = (value: T[number], index: T extends `${infer N extends number}` ? N : never, collection: T) => TResult; - -export type { TupleIterator }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/TupleIterator.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/TupleIterator.d.ts deleted file mode 100644 index e558e56..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/TupleIterator.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -type TupleIterator = (value: T[number], index: T extends `${infer N extends number}` ? N : never, collection: T) => TResult; - -export type { TupleIterator }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIteratee.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIteratee.d.mts deleted file mode 100644 index f2050bc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIteratee.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -import { PartialShallow } from './PartialShallow.mjs'; - -type ValueIteratee = ((value: T) => unknown) | (PropertyKey | [PropertyKey, any] | PartialShallow); - -export type { ValueIteratee }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIteratee.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIteratee.d.ts deleted file mode 100644 index dc3966f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIteratee.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { PartialShallow } from './PartialShallow.js'; - -type ValueIteratee = ((value: T) => unknown) | (PropertyKey | [PropertyKey, any] | PartialShallow); - -export type { ValueIteratee }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIterateeCustom.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIterateeCustom.d.mts deleted file mode 100644 index ce625a0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIterateeCustom.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -import { IterateeShorthand } from './IterateeShorthand.mjs'; - -type ValueIterateeCustom = ((value: T) => TResult) | IterateeShorthand; - -export type { ValueIterateeCustom }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIterateeCustom.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIterateeCustom.d.ts deleted file mode 100644 index c2251aa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIterateeCustom.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { IterateeShorthand } from './IterateeShorthand.js'; - -type ValueIterateeCustom = ((value: T) => TResult) | IterateeShorthand; - -export type { ValueIterateeCustom }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIteratorTypeGuard.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIteratorTypeGuard.d.mts deleted file mode 100644 index 051e216..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIteratorTypeGuard.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -type ValueIteratorTypeGuard = (value: T) => value is S; - -export type { ValueIteratorTypeGuard }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIteratorTypeGuard.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIteratorTypeGuard.d.ts deleted file mode 100644 index 051e216..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueIteratorTypeGuard.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -type ValueIteratorTypeGuard = (value: T) => value is S; - -export type { ValueIteratorTypeGuard }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueKeyIteratee.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueKeyIteratee.d.mts deleted file mode 100644 index c04a92e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueKeyIteratee.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -import { IterateeShorthand } from './IterateeShorthand.mjs'; - -type ValueKeyIteratee = ((value: T, key: string) => unknown) | IterateeShorthand; - -export type { ValueKeyIteratee }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueKeyIteratee.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueKeyIteratee.d.ts deleted file mode 100644 index 88b03a8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueKeyIteratee.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { IterateeShorthand } from './IterateeShorthand.js'; - -type ValueKeyIteratee = ((value: T, key: string) => unknown) | IterateeShorthand; - -export type { ValueKeyIteratee }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueKeyIterateeTypeGuard.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueKeyIterateeTypeGuard.d.mts deleted file mode 100644 index 943ce0e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueKeyIterateeTypeGuard.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -type ValueKeyIterateeTypeGuard = (value: T, key: string) => value is S; - -export type { ValueKeyIterateeTypeGuard }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueKeyIterateeTypeGuard.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueKeyIterateeTypeGuard.d.ts deleted file mode 100644 index 943ce0e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/ValueKeyIterateeTypeGuard.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -type ValueKeyIterateeTypeGuard = (value: T, key: string) => value is S; - -export type { ValueKeyIterateeTypeGuard }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/assignValue.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/assignValue.js deleted file mode 100644 index 1ee2681..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/assignValue.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js'); - -const assignValue = (object, key, value) => { - const objValue = object[key]; - if (!(Object.hasOwn(object, key) && isEqualsSameValueZero.isEqualsSameValueZero(objValue, value)) || (value === undefined && !(key in object))) { - object[key] = value; - } -}; - -exports.assignValue = assignValue; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/assignValue.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/assignValue.mjs deleted file mode 100644 index 500545b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/assignValue.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs'; - -const assignValue = (object, key, value) => { - const objValue = object[key]; - if (!(Object.hasOwn(object, key) && isEqualsSameValueZero(objValue, value)) || (value === undefined && !(key in object))) { - object[key] = value; - } -}; - -export { assignValue }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/compareValues.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/compareValues.js deleted file mode 100644 index ebbad39..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/compareValues.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function getPriority(a) { - if (typeof a === 'symbol') { - return 1; - } - if (a === null) { - return 2; - } - if (a === undefined) { - return 3; - } - if (a !== a) { - return 4; - } - return 0; -} -const compareValues = (a, b, order) => { - if (a !== b) { - const aPriority = getPriority(a); - const bPriority = getPriority(b); - if (aPriority === bPriority && aPriority === 0) { - if (a < b) { - return order === 'desc' ? 1 : -1; - } - if (a > b) { - return order === 'desc' ? -1 : 1; - } - } - return order === 'desc' ? bPriority - aPriority : aPriority - bPriority; - } - return 0; -}; - -exports.compareValues = compareValues; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/compareValues.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/compareValues.mjs deleted file mode 100644 index 935b06f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/compareValues.mjs +++ /dev/null @@ -1,33 +0,0 @@ -function getPriority(a) { - if (typeof a === 'symbol') { - return 1; - } - if (a === null) { - return 2; - } - if (a === undefined) { - return 3; - } - if (a !== a) { - return 4; - } - return 0; -} -const compareValues = (a, b, order) => { - if (a !== b) { - const aPriority = getPriority(a); - const bPriority = getPriority(b); - if (aPriority === bPriority && aPriority === 0) { - if (a < b) { - return order === 'desc' ? 1 : -1; - } - if (a > b) { - return order === 'desc' ? -1 : 1; - } - } - return order === 'desc' ? bPriority - aPriority : aPriority - bPriority; - } - return 0; -}; - -export { compareValues }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/copyArray.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/copyArray.js deleted file mode 100644 index 813c159..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/copyArray.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -function copyArray(source, array) { - const length = source.length; - if (array == null) { - array = Array(length); - } - for (let i = 0; i < length; i++) { - array[i] = source[i]; - } - return array; -} - -module.exports = copyArray; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/copyArray.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/copyArray.mjs deleted file mode 100644 index f6c1585..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/copyArray.mjs +++ /dev/null @@ -1,12 +0,0 @@ -function copyArray(source, array) { - const length = source.length; - if (array == null) { - array = Array(length); - } - for (let i = 0; i < length; i++) { - array[i] = source[i]; - } - return array; -} - -export { copyArray as default }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/decimalAdjust.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/decimalAdjust.js deleted file mode 100644 index a3fe28c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/decimalAdjust.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function decimalAdjust(type, number, precision = 0) { - number = Number(number); - if (Object.is(number, -0)) { - number = '-0'; - } - precision = Math.min(Number.parseInt(precision, 10), 292); - if (precision) { - const [magnitude, exponent = 0] = number.toString().split('e'); - let adjustedValue = Math[type](Number(`${magnitude}e${Number(exponent) + precision}`)); - if (Object.is(adjustedValue, -0)) { - adjustedValue = '-0'; - } - const [newMagnitude, newExponent = 0] = adjustedValue.toString().split('e'); - return Number(`${newMagnitude}e${Number(newExponent) - precision}`); - } - return Math[type](Number(number)); -} - -exports.decimalAdjust = decimalAdjust; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/decimalAdjust.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/decimalAdjust.mjs deleted file mode 100644 index 5a4409f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/decimalAdjust.mjs +++ /dev/null @@ -1,19 +0,0 @@ -function decimalAdjust(type, number, precision = 0) { - number = Number(number); - if (Object.is(number, -0)) { - number = '-0'; - } - precision = Math.min(Number.parseInt(precision, 10), 292); - if (precision) { - const [magnitude, exponent = 0] = number.toString().split('e'); - let adjustedValue = Math[type](Number(`${magnitude}e${Number(exponent) + precision}`)); - if (Object.is(adjustedValue, -0)) { - adjustedValue = '-0'; - } - const [newMagnitude, newExponent = 0] = adjustedValue.toString().split('e'); - return Number(`${newMagnitude}e${Number(newExponent) - precision}`); - } - return Math[type](Number(number)); -} - -export { decimalAdjust }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/flattenArrayLike.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/flattenArrayLike.js deleted file mode 100644 index b0d52a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/flattenArrayLike.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); - -function flattenArrayLike(values) { - const result = []; - for (let i = 0; i < values.length; i++) { - const arrayLike = values[i]; - if (!isArrayLikeObject.isArrayLikeObject(arrayLike)) { - continue; - } - for (let j = 0; j < arrayLike.length; j++) { - result.push(arrayLike[j]); - } - } - return result; -} - -exports.flattenArrayLike = flattenArrayLike; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/flattenArrayLike.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/flattenArrayLike.mjs deleted file mode 100644 index def5299..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/flattenArrayLike.mjs +++ /dev/null @@ -1,17 +0,0 @@ -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; - -function flattenArrayLike(values) { - const result = []; - for (let i = 0; i < values.length; i++) { - const arrayLike = values[i]; - if (!isArrayLikeObject(arrayLike)) { - continue; - } - for (let j = 0; j < arrayLike.length; j++) { - result.push(arrayLike[j]); - } - } - return result; -} - -export { flattenArrayLike }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js deleted file mode 100644 index cddadbd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function getSymbols(object) { - return Object.getOwnPropertySymbols(object).filter(symbol => Object.prototype.propertyIsEnumerable.call(object, symbol)); -} - -exports.getSymbols = getSymbols; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getSymbols.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getSymbols.mjs deleted file mode 100644 index d15be75..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getSymbols.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function getSymbols(object) { - return Object.getOwnPropertySymbols(object).filter(symbol => Object.prototype.propertyIsEnumerable.call(object, symbol)); -} - -export { getSymbols }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getSymbolsIn.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getSymbolsIn.js deleted file mode 100644 index 16ebc37..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getSymbolsIn.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const getSymbols = require('./getSymbols.js'); - -function getSymbolsIn(object) { - const result = []; - while (object) { - result.push(...getSymbols.getSymbols(object)); - object = Object.getPrototypeOf(object); - } - return result; -} - -exports.getSymbolsIn = getSymbolsIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getSymbolsIn.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getSymbolsIn.mjs deleted file mode 100644 index 7dc64ba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getSymbolsIn.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { getSymbols } from './getSymbols.mjs'; - -function getSymbolsIn(object) { - const result = []; - while (object) { - result.push(...getSymbols(object)); - object = Object.getPrototypeOf(object); - } - return result; -} - -export { getSymbolsIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getTag.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getTag.js deleted file mode 100644 index 13ebb55..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getTag.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function getTag(value) { - if (value == null) { - return value === undefined ? '[object Undefined]' : '[object Null]'; - } - return Object.prototype.toString.call(value); -} - -exports.getTag = getTag; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getTag.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getTag.mjs deleted file mode 100644 index 5302f4f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/getTag.mjs +++ /dev/null @@ -1,8 +0,0 @@ -function getTag(value) { - if (value == null) { - return value === undefined ? '[object Undefined]' : '[object Null]'; - } - return Object.prototype.toString.call(value); -} - -export { getTag }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js deleted file mode 100644 index 52052f7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isDeepKey(key) { - switch (typeof key) { - case 'number': - case 'symbol': { - return false; - } - case 'string': { - return key.includes('.') || key.includes('[') || key.includes(']'); - } - } -} - -exports.isDeepKey = isDeepKey; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.mjs deleted file mode 100644 index e06007b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.mjs +++ /dev/null @@ -1,13 +0,0 @@ -function isDeepKey(key) { - switch (typeof key) { - case 'number': - case 'symbol': { - return false; - } - case 'string': { - return key.includes('.') || key.includes('[') || key.includes(']'); - } - } -} - -export { isDeepKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isIndex.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isIndex.js deleted file mode 100644 index 831387a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isIndex.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const IS_UNSIGNED_INTEGER = /^(?:0|[1-9]\d*)$/; -function isIndex(value, length = Number.MAX_SAFE_INTEGER) { - switch (typeof value) { - case 'number': { - return Number.isInteger(value) && value >= 0 && value < length; - } - case 'symbol': { - return false; - } - case 'string': { - return IS_UNSIGNED_INTEGER.test(value); - } - } -} - -exports.isIndex = isIndex; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isIndex.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isIndex.mjs deleted file mode 100644 index 66c5871..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isIndex.mjs +++ /dev/null @@ -1,16 +0,0 @@ -const IS_UNSIGNED_INTEGER = /^(?:0|[1-9]\d*)$/; -function isIndex(value, length = Number.MAX_SAFE_INTEGER) { - switch (typeof value) { - case 'number': { - return Number.isInteger(value) && value >= 0 && value < length; - } - case 'symbol': { - return false; - } - case 'string': { - return IS_UNSIGNED_INTEGER.test(value); - } - } -} - -export { isIndex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isIterateeCall.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isIterateeCall.js deleted file mode 100644 index e5e7519..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isIterateeCall.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isIndex = require('./isIndex.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const isObject = require('../predicate/isObject.js'); -const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js'); - -function isIterateeCall(value, index, object) { - if (!isObject.isObject(object)) { - return false; - } - if ((typeof index === 'number' && isArrayLike.isArrayLike(object) && isIndex.isIndex(index) && index < object.length) || - (typeof index === 'string' && index in object)) { - return isEqualsSameValueZero.isEqualsSameValueZero(object[index], value); - } - return false; -} - -exports.isIterateeCall = isIterateeCall; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isIterateeCall.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isIterateeCall.mjs deleted file mode 100644 index b291e7a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isIterateeCall.mjs +++ /dev/null @@ -1,17 +0,0 @@ -import { isIndex } from './isIndex.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { isObject } from '../predicate/isObject.mjs'; -import { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs'; - -function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - if ((typeof index === 'number' && isArrayLike(object) && isIndex(index) && index < object.length) || - (typeof index === 'string' && index in object)) { - return isEqualsSameValueZero(object[index], value); - } - return false; -} - -export { isIterateeCall }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isKey.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isKey.js deleted file mode 100644 index e6c1aa2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isKey.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isSymbol = require('../predicate/isSymbol.js'); - -const regexIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/; -const regexIsPlainProp = /^\w*$/; -function isKey(value, object) { - if (Array.isArray(value)) { - return false; - } - if (typeof value === 'number' || typeof value === 'boolean' || value == null || isSymbol.isSymbol(value)) { - return true; - } - return ((typeof value === 'string' && (regexIsPlainProp.test(value) || !regexIsDeepProp.test(value))) || - (object != null && Object.hasOwn(object, value))); -} - -exports.isKey = isKey; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isKey.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isKey.mjs deleted file mode 100644 index 9b12177..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isKey.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { isSymbol } from '../predicate/isSymbol.mjs'; - -const regexIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/; -const regexIsPlainProp = /^\w*$/; -function isKey(value, object) { - if (Array.isArray(value)) { - return false; - } - if (typeof value === 'number' || typeof value === 'boolean' || value == null || isSymbol(value)) { - return true; - } - return ((typeof value === 'string' && (regexIsPlainProp.test(value) || !regexIsDeepProp.test(value))) || - (object != null && Object.hasOwn(object, value))); -} - -export { isKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js deleted file mode 100644 index 17ca3e2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isPrototype(value) { - const constructor = value?.constructor; - const prototype = typeof constructor === 'function' ? constructor.prototype : Object.prototype; - return value === prototype; -} - -exports.isPrototype = isPrototype; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isPrototype.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isPrototype.mjs deleted file mode 100644 index 7ef49c3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/isPrototype.mjs +++ /dev/null @@ -1,7 +0,0 @@ -function isPrototype(value) { - const constructor = value?.constructor; - const prototype = typeof constructor === 'function' ? constructor.prototype : Object.prototype; - return value === prototype; -} - -export { isPrototype }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/mapToEntries.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/mapToEntries.js deleted file mode 100644 index fedc977..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/mapToEntries.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function mapToEntries(map) { - const arr = new Array(map.size); - const keys = map.keys(); - const values = map.values(); - for (let i = 0; i < arr.length; i++) { - arr[i] = [keys.next().value, values.next().value]; - } - return arr; -} - -exports.mapToEntries = mapToEntries; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/mapToEntries.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/mapToEntries.mjs deleted file mode 100644 index c229ec0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/mapToEntries.mjs +++ /dev/null @@ -1,11 +0,0 @@ -function mapToEntries(map) { - const arr = new Array(map.size); - const keys = map.keys(); - const values = map.values(); - for (let i = 0; i < arr.length; i++) { - arr[i] = [keys.next().value, values.next().value]; - } - return arr; -} - -export { mapToEntries }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/normalizeForCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/normalizeForCase.js deleted file mode 100644 index b2a0dde..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/normalizeForCase.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toString = require('../util/toString.js'); - -function normalizeForCase(str) { - if (typeof str !== 'string') { - str = toString.toString(str); - } - return str.replace(/['\u2019]/g, ''); -} - -exports.normalizeForCase = normalizeForCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/normalizeForCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/normalizeForCase.mjs deleted file mode 100644 index 8cb14a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/normalizeForCase.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { toString } from '../util/toString.mjs'; - -function normalizeForCase(str) { - if (typeof str !== 'string') { - str = toString(str); - } - return str.replace(/['\u2019]/g, ''); -} - -export { normalizeForCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/setToEntries.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/setToEntries.js deleted file mode 100644 index 9d6563d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/setToEntries.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function setToEntries(set) { - const arr = new Array(set.size); - const values = set.values(); - for (let i = 0; i < arr.length; i++) { - const value = values.next().value; - arr[i] = [value, value]; - } - return arr; -} - -exports.setToEntries = setToEntries; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/setToEntries.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/setToEntries.mjs deleted file mode 100644 index 463002f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/setToEntries.mjs +++ /dev/null @@ -1,11 +0,0 @@ -function setToEntries(set) { - const arr = new Array(set.size); - const values = set.values(); - for (let i = 0; i < arr.length; i++) { - const value = values.next().value; - arr[i] = [value, value]; - } - return arr; -} - -export { setToEntries }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/tags.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/tags.js deleted file mode 100644 index 5a281e3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/tags.js +++ /dev/null @@ -1,57 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const regexpTag = '[object RegExp]'; -const stringTag = '[object String]'; -const numberTag = '[object Number]'; -const booleanTag = '[object Boolean]'; -const argumentsTag = '[object Arguments]'; -const symbolTag = '[object Symbol]'; -const dateTag = '[object Date]'; -const mapTag = '[object Map]'; -const setTag = '[object Set]'; -const arrayTag = '[object Array]'; -const functionTag = '[object Function]'; -const arrayBufferTag = '[object ArrayBuffer]'; -const objectTag = '[object Object]'; -const errorTag = '[object Error]'; -const dataViewTag = '[object DataView]'; -const uint8ArrayTag = '[object Uint8Array]'; -const uint8ClampedArrayTag = '[object Uint8ClampedArray]'; -const uint16ArrayTag = '[object Uint16Array]'; -const uint32ArrayTag = '[object Uint32Array]'; -const bigUint64ArrayTag = '[object BigUint64Array]'; -const int8ArrayTag = '[object Int8Array]'; -const int16ArrayTag = '[object Int16Array]'; -const int32ArrayTag = '[object Int32Array]'; -const bigInt64ArrayTag = '[object BigInt64Array]'; -const float32ArrayTag = '[object Float32Array]'; -const float64ArrayTag = '[object Float64Array]'; - -exports.argumentsTag = argumentsTag; -exports.arrayBufferTag = arrayBufferTag; -exports.arrayTag = arrayTag; -exports.bigInt64ArrayTag = bigInt64ArrayTag; -exports.bigUint64ArrayTag = bigUint64ArrayTag; -exports.booleanTag = booleanTag; -exports.dataViewTag = dataViewTag; -exports.dateTag = dateTag; -exports.errorTag = errorTag; -exports.float32ArrayTag = float32ArrayTag; -exports.float64ArrayTag = float64ArrayTag; -exports.functionTag = functionTag; -exports.int16ArrayTag = int16ArrayTag; -exports.int32ArrayTag = int32ArrayTag; -exports.int8ArrayTag = int8ArrayTag; -exports.mapTag = mapTag; -exports.numberTag = numberTag; -exports.objectTag = objectTag; -exports.regexpTag = regexpTag; -exports.setTag = setTag; -exports.stringTag = stringTag; -exports.symbolTag = symbolTag; -exports.uint16ArrayTag = uint16ArrayTag; -exports.uint32ArrayTag = uint32ArrayTag; -exports.uint8ArrayTag = uint8ArrayTag; -exports.uint8ClampedArrayTag = uint8ClampedArrayTag; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/tags.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/tags.mjs deleted file mode 100644 index 27c7c1f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/tags.mjs +++ /dev/null @@ -1,28 +0,0 @@ -const regexpTag = '[object RegExp]'; -const stringTag = '[object String]'; -const numberTag = '[object Number]'; -const booleanTag = '[object Boolean]'; -const argumentsTag = '[object Arguments]'; -const symbolTag = '[object Symbol]'; -const dateTag = '[object Date]'; -const mapTag = '[object Map]'; -const setTag = '[object Set]'; -const arrayTag = '[object Array]'; -const functionTag = '[object Function]'; -const arrayBufferTag = '[object ArrayBuffer]'; -const objectTag = '[object Object]'; -const errorTag = '[object Error]'; -const dataViewTag = '[object DataView]'; -const uint8ArrayTag = '[object Uint8Array]'; -const uint8ClampedArrayTag = '[object Uint8ClampedArray]'; -const uint16ArrayTag = '[object Uint16Array]'; -const uint32ArrayTag = '[object Uint32Array]'; -const bigUint64ArrayTag = '[object BigUint64Array]'; -const int8ArrayTag = '[object Int8Array]'; -const int16ArrayTag = '[object Int16Array]'; -const int32ArrayTag = '[object Int32Array]'; -const bigInt64ArrayTag = '[object BigInt64Array]'; -const float32ArrayTag = '[object Float32Array]'; -const float64ArrayTag = '[object Float64Array]'; - -export { argumentsTag, arrayBufferTag, arrayTag, bigInt64ArrayTag, bigUint64ArrayTag, booleanTag, dataViewTag, dateTag, errorTag, float32ArrayTag, float64ArrayTag, functionTag, int16ArrayTag, int32ArrayTag, int8ArrayTag, mapTag, numberTag, objectTag, regexpTag, setTag, stringTag, symbolTag, uint16ArrayTag, uint32ArrayTag, uint8ArrayTag, uint8ClampedArrayTag }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/toArray.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/toArray.js deleted file mode 100644 index f61cfdc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/toArray.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function toArray(value) { - return Array.isArray(value) ? value : Array.from(value); -} - -exports.toArray = toArray; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/toArray.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/toArray.mjs deleted file mode 100644 index cd80916..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/toArray.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function toArray(value) { - return Array.isArray(value) ? value : Array.from(value); -} - -export { toArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/toKey.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/toKey.js deleted file mode 100644 index 97b66e3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/toKey.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function toKey(value) { - if (typeof value === 'string' || typeof value === 'symbol') { - return value; - } - if (Object.is(value?.valueOf?.(), -0)) { - return '-0'; - } - return String(value); -} - -exports.toKey = toKey; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/toKey.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/toKey.mjs deleted file mode 100644 index 74a5699..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/_internal/toKey.mjs +++ /dev/null @@ -1,11 +0,0 @@ -function toKey(value) { - if (typeof value === 'string' || typeof value === 'symbol') { - return value; - } - if (Object.is(value?.valueOf?.(), -0)) { - return '-0'; - } - return String(value); -} - -export { toKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/castArray.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/castArray.d.mts deleted file mode 100644 index 1b6da5b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/castArray.d.mts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Casts value as an array if it's not one. - * - * @template T The type of elements in the array. - * @param {T | T[]} value The value to be cast to an array. - * @returns {T[]} An array containing the input value if it wasn't an array, or the original array if it was. - * - * @example - * const arr1 = castArray(1); - * // Returns: [1] - * - * const arr2 = castArray([1]); - * // Returns: [1] - * - * const arr3 = castArray({'a': 1}); - * // Returns: [{'a': 1}] - * - * const arr4 = castArray(null); - * // Returns: [null] - * - * const arr5 = castArray(undefined); - * // Returns: [undefined] - * - * const arr6 = castArray(); - * // Returns: [] - */ -declare function castArray(value?: T | readonly T[]): T[]; - -export { castArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/castArray.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/castArray.d.ts deleted file mode 100644 index 1b6da5b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/castArray.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Casts value as an array if it's not one. - * - * @template T The type of elements in the array. - * @param {T | T[]} value The value to be cast to an array. - * @returns {T[]} An array containing the input value if it wasn't an array, or the original array if it was. - * - * @example - * const arr1 = castArray(1); - * // Returns: [1] - * - * const arr2 = castArray([1]); - * // Returns: [1] - * - * const arr3 = castArray({'a': 1}); - * // Returns: [{'a': 1}] - * - * const arr4 = castArray(null); - * // Returns: [null] - * - * const arr5 = castArray(undefined); - * // Returns: [undefined] - * - * const arr6 = castArray(); - * // Returns: [] - */ -declare function castArray(value?: T | readonly T[]): T[]; - -export { castArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/castArray.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/castArray.js deleted file mode 100644 index 845d59f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/castArray.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function castArray(value) { - if (arguments.length === 0) { - return []; - } - return Array.isArray(value) ? value : [value]; -} - -exports.castArray = castArray; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/castArray.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/castArray.mjs deleted file mode 100644 index 1487344..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/castArray.mjs +++ /dev/null @@ -1,8 +0,0 @@ -function castArray(value) { - if (arguments.length === 0) { - return []; - } - return Array.isArray(value) ? value : [value]; -} - -export { castArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/chunk.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/chunk.d.mts deleted file mode 100644 index 947deec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/chunk.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Splits an array into smaller arrays of a specified length. - * - * This function takes an input array and divides it into multiple smaller arrays, - * each of a specified length. If the input array cannot be evenly divided, - * the final sub-array will contain the remaining elements. - * - * @template T The type of elements in the array. - * @param {ArrayLike | null | undefined} arr - The array to be chunked into smaller arrays. - * @param {number} size - The size of each smaller array. Must be a positive integer. - * @returns {T[][]} A two-dimensional array where each sub-array has a maximum length of `size`. - * - * @example - * // Splits an array of numbers into sub-arrays of length 2 - * chunk([1, 2, 3, 4, 5], 2); - * // Returns: [[1, 2], [3, 4], [5]] - * - * @example - * // Splits an array of strings into sub-arrays of length 3 - * chunk(['a', 'b', 'c', 'd', 'e', 'f', 'g'], 3); - * // Returns: [['a', 'b', 'c'], ['d', 'e', 'f'], ['g']] - */ -declare function chunk(arr: ArrayLike | null | undefined, size?: number): T[][]; - -export { chunk }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/chunk.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/chunk.d.ts deleted file mode 100644 index 947deec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/chunk.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Splits an array into smaller arrays of a specified length. - * - * This function takes an input array and divides it into multiple smaller arrays, - * each of a specified length. If the input array cannot be evenly divided, - * the final sub-array will contain the remaining elements. - * - * @template T The type of elements in the array. - * @param {ArrayLike | null | undefined} arr - The array to be chunked into smaller arrays. - * @param {number} size - The size of each smaller array. Must be a positive integer. - * @returns {T[][]} A two-dimensional array where each sub-array has a maximum length of `size`. - * - * @example - * // Splits an array of numbers into sub-arrays of length 2 - * chunk([1, 2, 3, 4, 5], 2); - * // Returns: [[1, 2], [3, 4], [5]] - * - * @example - * // Splits an array of strings into sub-arrays of length 3 - * chunk(['a', 'b', 'c', 'd', 'e', 'f', 'g'], 3); - * // Returns: [['a', 'b', 'c'], ['d', 'e', 'f'], ['g']] - */ -declare function chunk(arr: ArrayLike | null | undefined, size?: number): T[][]; - -export { chunk }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/chunk.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/chunk.js deleted file mode 100644 index d84b8a5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/chunk.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const chunk$1 = require('../../array/chunk.js'); -const toArray = require('../_internal/toArray.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function chunk(arr, size = 1) { - size = Math.max(Math.floor(size), 0); - if (size === 0 || !isArrayLike.isArrayLike(arr)) { - return []; - } - return chunk$1.chunk(toArray.toArray(arr), size); -} - -exports.chunk = chunk; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/chunk.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/chunk.mjs deleted file mode 100644 index edb6a0a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/chunk.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import { chunk as chunk$1 } from '../../array/chunk.mjs'; -import { toArray } from '../_internal/toArray.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function chunk(arr, size = 1) { - size = Math.max(Math.floor(size), 0); - if (size === 0 || !isArrayLike(arr)) { - return []; - } - return chunk$1(toArray(arr), size); -} - -export { chunk }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/compact.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/compact.d.mts deleted file mode 100644 index 81dc867..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/compact.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -type Falsey = false | null | 0 | 0n | '' | undefined; -/** - * Removes falsey values (false, null, 0, 0n, '', undefined, NaN) from an array. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} arr - The input array to remove falsey values. - * @returns {Array>} - A new array with all falsey values removed. - * - * @example - * compact([0, 0n, 1, false, 2, '', 3, null, undefined, 4, NaN, 5]); - * Returns: [1, 2, 3, 4, 5] - */ -declare function compact(arr: ArrayLike | null | undefined): T[]; - -export { compact }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/compact.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/compact.d.ts deleted file mode 100644 index 81dc867..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/compact.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -type Falsey = false | null | 0 | 0n | '' | undefined; -/** - * Removes falsey values (false, null, 0, 0n, '', undefined, NaN) from an array. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} arr - The input array to remove falsey values. - * @returns {Array>} - A new array with all falsey values removed. - * - * @example - * compact([0, 0n, 1, false, 2, '', 3, null, undefined, 4, NaN, 5]); - * Returns: [1, 2, 3, 4, 5] - */ -declare function compact(arr: ArrayLike | null | undefined): T[]; - -export { compact }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/compact.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/compact.js deleted file mode 100644 index b13de06..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/compact.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const compact$1 = require('../../array/compact.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function compact(arr) { - if (!isArrayLike.isArrayLike(arr)) { - return []; - } - return compact$1.compact(Array.from(arr)); -} - -exports.compact = compact; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/compact.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/compact.mjs deleted file mode 100644 index a9a4cd5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/compact.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { compact as compact$1 } from '../../array/compact.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function compact(arr) { - if (!isArrayLike(arr)) { - return []; - } - return compact$1(Array.from(arr)); -} - -export { compact }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/concat.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/concat.d.mts deleted file mode 100644 index 3378414..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/concat.d.mts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Concatenates multiple arrays and values into a single array. - * - * @template T The type of elements in the array. - * @param {...(T | T[])} values - The values and/or arrays to concatenate. - * @returns {T[]} A new array containing all the input values. - * - * @example - * // Concatenate individual values - * concat(1, 2, 3); - * // returns [1, 2, 3] - * - * @example - * // Concatenate arrays of values - * concat([1, 2], [3, 4]); - * // returns [1, 2, 3, 4] - * - * @example - * // Concatenate a mix of individual values and arrays - * concat(1, [2, 3], 4); - * // returns [1, 2, 3, 4] - * - * @example - * // Concatenate nested arrays - * concat([1, [2, 3]], 4); - * // returns [1, [2, 3], 4] - */ -declare function concat(...values: Array): T[]; - -export { concat }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/concat.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/concat.d.ts deleted file mode 100644 index 3378414..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/concat.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Concatenates multiple arrays and values into a single array. - * - * @template T The type of elements in the array. - * @param {...(T | T[])} values - The values and/or arrays to concatenate. - * @returns {T[]} A new array containing all the input values. - * - * @example - * // Concatenate individual values - * concat(1, 2, 3); - * // returns [1, 2, 3] - * - * @example - * // Concatenate arrays of values - * concat([1, 2], [3, 4]); - * // returns [1, 2, 3, 4] - * - * @example - * // Concatenate a mix of individual values and arrays - * concat(1, [2, 3], 4); - * // returns [1, 2, 3, 4] - * - * @example - * // Concatenate nested arrays - * concat([1, [2, 3]], 4); - * // returns [1, [2, 3], 4] - */ -declare function concat(...values: Array): T[]; - -export { concat }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/concat.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/concat.js deleted file mode 100644 index 669b4bc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/concat.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flatten = require('../../array/flatten.js'); - -function concat(...values) { - return flatten.flatten(values); -} - -exports.concat = concat; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/concat.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/concat.mjs deleted file mode 100644 index 79f7a67..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/concat.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { flatten } from '../../array/flatten.mjs'; - -function concat(...values) { - return flatten(values); -} - -export { concat }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/countBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/countBy.d.mts deleted file mode 100644 index 93ae774..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/countBy.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * Creates an object composed of keys generated from the results of running each element of collection through - * iteratee. The corresponding value of each key is the number of times the key was returned by iteratee. The - * iteratee is invoked with one argument: (value). - * - * @param collection The collection to iterate over. - * @param iteratee The function invoked per iteration. - * @return Returns the composed aggregate object. - * - * @example - * countBy([6.1, 4.2, 6.3], Math.floor); // => { '4': 1, '6': 2 } - * countBy(['one', 'two', 'three'], 'length'); // => { '3': 2, '5': 1 } - */ -declare function countBy(collection: ArrayLike | null | undefined, iteratee?: ValueIteratee): Record; -declare function countBy(collection: T | null | undefined, iteratee?: ValueIteratee): Record; - -export { countBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/countBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/countBy.d.ts deleted file mode 100644 index 8ed87f6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/countBy.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * Creates an object composed of keys generated from the results of running each element of collection through - * iteratee. The corresponding value of each key is the number of times the key was returned by iteratee. The - * iteratee is invoked with one argument: (value). - * - * @param collection The collection to iterate over. - * @param iteratee The function invoked per iteration. - * @return Returns the composed aggregate object. - * - * @example - * countBy([6.1, 4.2, 6.3], Math.floor); // => { '4': 1, '6': 2 } - * countBy(['one', 'two', 'three'], 'length'); // => { '3': 2, '5': 1 } - */ -declare function countBy(collection: ArrayLike | null | undefined, iteratee?: ValueIteratee): Record; -declare function countBy(collection: T | null | undefined, iteratee?: ValueIteratee): Record; - -export { countBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/countBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/countBy.js deleted file mode 100644 index 63a6b1b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/countBy.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArrayLike = require('../predicate/isArrayLike.js'); -const iteratee = require('../util/iteratee.js'); - -function countBy(collection, iteratee$1) { - if (collection == null) { - return {}; - } - const array = isArrayLike.isArrayLike(collection) ? Array.from(collection) : Object.values(collection); - const mapper = iteratee.iteratee(iteratee$1 ?? undefined); - const result = Object.create(null); - for (let i = 0; i < array.length; i++) { - const item = array[i]; - const key = mapper(item); - result[key] = (result[key] ?? 0) + 1; - } - return result; -} - -exports.countBy = countBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/countBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/countBy.mjs deleted file mode 100644 index a2b8a7c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/countBy.mjs +++ /dev/null @@ -1,19 +0,0 @@ -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function countBy(collection, iteratee$1) { - if (collection == null) { - return {}; - } - const array = isArrayLike(collection) ? Array.from(collection) : Object.values(collection); - const mapper = iteratee(iteratee$1 ?? undefined); - const result = Object.create(null); - for (let i = 0; i < array.length; i++) { - const item = array[i]; - const key = mapper(item); - result[key] = (result[key] ?? 0) + 1; - } - return result; -} - -export { countBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/difference.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/difference.d.mts deleted file mode 100644 index fa93087..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/difference.d.mts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Computes the difference between an array and multiple arrays. - * - * @template T - * @param {ArrayLike | undefined | null} arr - The primary array from which to derive the difference. This is the main array - * from which elements will be compared and filtered. - * @param {Array>} values - Multiple arrays containing elements to be excluded from the primary array. - * These arrays will be flattened into a single array, and each element in this array will be checked against the primary array. - * If a match is found, that element will be excluded from the result. - * @returns {T[]} A new array containing the elements that are present in the primary array but not - * in the flattened array. - * - * @example - * const array1 = [1, 2, 3, 4, 5]; - * const array2 = [2, 4]; - * const array3 = [5, 6]; - * const result = difference(array1, array2, array3); - * // result will be [1, 3] since 2, 4, and 5 are in the other arrays and are excluded from the result. - * - * @example - * const arrayLike1 = { 0: 1, 1: 2, 2: 3, length: 3 }; - * const arrayLike2 = { 0: 2, 1: 4, length: 2 }; - * const result = difference(arrayLike1, arrayLike2); - * // result will be [1, 3] since 2 is in both array-like objects and is excluded from the result. - */ -declare function difference(arr: ArrayLike | undefined | null, ...values: Array>): T[]; - -export { difference }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/difference.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/difference.d.ts deleted file mode 100644 index fa93087..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/difference.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Computes the difference between an array and multiple arrays. - * - * @template T - * @param {ArrayLike | undefined | null} arr - The primary array from which to derive the difference. This is the main array - * from which elements will be compared and filtered. - * @param {Array>} values - Multiple arrays containing elements to be excluded from the primary array. - * These arrays will be flattened into a single array, and each element in this array will be checked against the primary array. - * If a match is found, that element will be excluded from the result. - * @returns {T[]} A new array containing the elements that are present in the primary array but not - * in the flattened array. - * - * @example - * const array1 = [1, 2, 3, 4, 5]; - * const array2 = [2, 4]; - * const array3 = [5, 6]; - * const result = difference(array1, array2, array3); - * // result will be [1, 3] since 2, 4, and 5 are in the other arrays and are excluded from the result. - * - * @example - * const arrayLike1 = { 0: 1, 1: 2, 2: 3, length: 3 }; - * const arrayLike2 = { 0: 2, 1: 4, length: 2 }; - * const result = difference(arrayLike1, arrayLike2); - * // result will be [1, 3] since 2 is in both array-like objects and is excluded from the result. - */ -declare function difference(arr: ArrayLike | undefined | null, ...values: Array>): T[]; - -export { difference }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/difference.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/difference.js deleted file mode 100644 index daa965e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/difference.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const difference$1 = require('../../array/difference.js'); -const toArray = require('../_internal/toArray.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); - -function difference(arr, ...values) { - if (!isArrayLikeObject.isArrayLikeObject(arr)) { - return []; - } - const arr1 = toArray.toArray(arr); - const arr2 = []; - for (let i = 0; i < values.length; i++) { - const value = values[i]; - if (isArrayLikeObject.isArrayLikeObject(value)) { - arr2.push(...Array.from(value)); - } - } - return difference$1.difference(arr1, arr2); -} - -exports.difference = difference; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/difference.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/difference.mjs deleted file mode 100644 index ef43c24..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/difference.mjs +++ /dev/null @@ -1,20 +0,0 @@ -import { difference as difference$1 } from '../../array/difference.mjs'; -import { toArray } from '../_internal/toArray.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; - -function difference(arr, ...values) { - if (!isArrayLikeObject(arr)) { - return []; - } - const arr1 = toArray(arr); - const arr2 = []; - for (let i = 0; i < values.length; i++) { - const value = values[i]; - if (isArrayLikeObject(value)) { - arr2.push(...Array.from(value)); - } - } - return difference$1(arr1, arr2); -} - -export { difference }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceBy.d.mts deleted file mode 100644 index c2a1a1c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceBy.d.mts +++ /dev/null @@ -1,108 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * Creates an array of array values not included in the other given arrays using an iteratee function. - * - * @template T1, T2 - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {ArrayLike} values The values to exclude - * @param {ValueIteratee} iteratee The iteratee invoked per element - * @returns {T1[]} Returns the new array of filtered values - * @example - * differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor) - * // => [1.2] - */ -declare function differenceBy(array: ArrayLike | null | undefined, values: ArrayLike, iteratee: ValueIteratee): T1[]; -/** - * Creates an array of array values not included in the other given arrays using an iteratee function. - * - * @template T1, T2, T3 - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {ArrayLike} values1 The first array of values to exclude - * @param {ArrayLike} values2 The second array of values to exclude - * @param {ValueIteratee} iteratee The iteratee invoked per element - * @returns {T1[]} Returns the new array of filtered values - * @example - * differenceBy([2.1, 1.2], [2.3], [1.4], Math.floor) - * // => [] - */ -declare function differenceBy(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, iteratee: ValueIteratee): T1[]; -/** - * Creates an array of array values not included in the other given arrays using an iteratee function. - * - * @template T1, T2, T3, T4 - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {ArrayLike} values1 The first array of values to exclude - * @param {ArrayLike} values2 The second array of values to exclude - * @param {ArrayLike} values3 The third array of values to exclude - * @param {ValueIteratee} iteratee The iteratee invoked per element - * @returns {T1[]} Returns the new array of filtered values - * @example - * differenceBy([2.1, 1.2, 3.5], [2.3], [1.4], [3.2], Math.floor) - * // => [] - */ -declare function differenceBy(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, values3: ArrayLike, iteratee: ValueIteratee): T1[]; -/** - * Creates an array of array values not included in the other given arrays using an iteratee function. - * - * @template T1, T2, T3, T4, T5 - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {ArrayLike} values1 The first array of values to exclude - * @param {ArrayLike} values2 The second array of values to exclude - * @param {ArrayLike} values3 The third array of values to exclude - * @param {ArrayLike} values4 The fourth array of values to exclude - * @param {ValueIteratee} iteratee The iteratee invoked per element - * @returns {T1[]} Returns the new array of filtered values - * @example - * differenceBy([2.1, 1.2, 3.5, 4.8], [2.3], [1.4], [3.2], [4.1], Math.floor) - * // => [] - */ -declare function differenceBy(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, values3: ArrayLike, values4: ArrayLike, iteratee: ValueIteratee): T1[]; -/** - * Creates an array of array values not included in the other given arrays using an iteratee function. - * - * @template T1, T2, T3, T4, T5, T6 - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {ArrayLike} values1 The first array of values to exclude - * @param {ArrayLike} values2 The second array of values to exclude - * @param {ArrayLike} values3 The third array of values to exclude - * @param {ArrayLike} values4 The fourth array of values to exclude - * @param {ArrayLike} values5 The fifth array of values to exclude - * @param {ValueIteratee} iteratee The iteratee invoked per element - * @returns {T1[]} Returns the new array of filtered values - * @example - * differenceBy([2.1, 1.2, 3.5, 4.8, 5.3], [2.3], [1.4], [3.2], [4.1], [5.8], Math.floor) - * // => [] - */ -declare function differenceBy(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, values3: ArrayLike, values4: ArrayLike, values5: ArrayLike, iteratee: ValueIteratee): T1[]; -/** - * Creates an array of array values not included in the other given arrays using an iteratee function. - * - * @template T1, T2, T3, T4, T5, T6, T7 - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {ArrayLike} values1 The first array of values to exclude - * @param {ArrayLike} values2 The second array of values to exclude - * @param {ArrayLike} values3 The third array of values to exclude - * @param {ArrayLike} values4 The fourth array of values to exclude - * @param {ArrayLike} values5 The fifth array of values to exclude - * @param {...(ArrayLike | ValueIteratee)[]} values Additional arrays of values to exclude and iteratee - * @returns {T1[]} Returns the new array of filtered values - * @example - * differenceBy([2.1, 1.2, 3.5, 4.8, 5.3, 6.7], [2.3], [1.4], [3.2], [4.1], [5.8], [6.2], Math.floor) - * // => [] - */ -declare function differenceBy(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, values3: ArrayLike, values4: ArrayLike, values5: ArrayLike, ...values: Array | ValueIteratee>): T1[]; -/** - * Creates an array of array values not included in the other given arrays. - * - * @template T - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {...Array>} values The arrays of values to exclude - * @returns {T[]} Returns the new array of filtered values - * @example - * differenceBy([2, 1], [2, 3]) - * // => [1] - */ -declare function differenceBy(array: ArrayLike | null | undefined, ...values: Array>): T[]; - -export { differenceBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceBy.d.ts deleted file mode 100644 index 773fbf7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceBy.d.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * Creates an array of array values not included in the other given arrays using an iteratee function. - * - * @template T1, T2 - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {ArrayLike} values The values to exclude - * @param {ValueIteratee} iteratee The iteratee invoked per element - * @returns {T1[]} Returns the new array of filtered values - * @example - * differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor) - * // => [1.2] - */ -declare function differenceBy(array: ArrayLike | null | undefined, values: ArrayLike, iteratee: ValueIteratee): T1[]; -/** - * Creates an array of array values not included in the other given arrays using an iteratee function. - * - * @template T1, T2, T3 - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {ArrayLike} values1 The first array of values to exclude - * @param {ArrayLike} values2 The second array of values to exclude - * @param {ValueIteratee} iteratee The iteratee invoked per element - * @returns {T1[]} Returns the new array of filtered values - * @example - * differenceBy([2.1, 1.2], [2.3], [1.4], Math.floor) - * // => [] - */ -declare function differenceBy(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, iteratee: ValueIteratee): T1[]; -/** - * Creates an array of array values not included in the other given arrays using an iteratee function. - * - * @template T1, T2, T3, T4 - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {ArrayLike} values1 The first array of values to exclude - * @param {ArrayLike} values2 The second array of values to exclude - * @param {ArrayLike} values3 The third array of values to exclude - * @param {ValueIteratee} iteratee The iteratee invoked per element - * @returns {T1[]} Returns the new array of filtered values - * @example - * differenceBy([2.1, 1.2, 3.5], [2.3], [1.4], [3.2], Math.floor) - * // => [] - */ -declare function differenceBy(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, values3: ArrayLike, iteratee: ValueIteratee): T1[]; -/** - * Creates an array of array values not included in the other given arrays using an iteratee function. - * - * @template T1, T2, T3, T4, T5 - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {ArrayLike} values1 The first array of values to exclude - * @param {ArrayLike} values2 The second array of values to exclude - * @param {ArrayLike} values3 The third array of values to exclude - * @param {ArrayLike} values4 The fourth array of values to exclude - * @param {ValueIteratee} iteratee The iteratee invoked per element - * @returns {T1[]} Returns the new array of filtered values - * @example - * differenceBy([2.1, 1.2, 3.5, 4.8], [2.3], [1.4], [3.2], [4.1], Math.floor) - * // => [] - */ -declare function differenceBy(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, values3: ArrayLike, values4: ArrayLike, iteratee: ValueIteratee): T1[]; -/** - * Creates an array of array values not included in the other given arrays using an iteratee function. - * - * @template T1, T2, T3, T4, T5, T6 - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {ArrayLike} values1 The first array of values to exclude - * @param {ArrayLike} values2 The second array of values to exclude - * @param {ArrayLike} values3 The third array of values to exclude - * @param {ArrayLike} values4 The fourth array of values to exclude - * @param {ArrayLike} values5 The fifth array of values to exclude - * @param {ValueIteratee} iteratee The iteratee invoked per element - * @returns {T1[]} Returns the new array of filtered values - * @example - * differenceBy([2.1, 1.2, 3.5, 4.8, 5.3], [2.3], [1.4], [3.2], [4.1], [5.8], Math.floor) - * // => [] - */ -declare function differenceBy(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, values3: ArrayLike, values4: ArrayLike, values5: ArrayLike, iteratee: ValueIteratee): T1[]; -/** - * Creates an array of array values not included in the other given arrays using an iteratee function. - * - * @template T1, T2, T3, T4, T5, T6, T7 - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {ArrayLike} values1 The first array of values to exclude - * @param {ArrayLike} values2 The second array of values to exclude - * @param {ArrayLike} values3 The third array of values to exclude - * @param {ArrayLike} values4 The fourth array of values to exclude - * @param {ArrayLike} values5 The fifth array of values to exclude - * @param {...(ArrayLike | ValueIteratee)[]} values Additional arrays of values to exclude and iteratee - * @returns {T1[]} Returns the new array of filtered values - * @example - * differenceBy([2.1, 1.2, 3.5, 4.8, 5.3, 6.7], [2.3], [1.4], [3.2], [4.1], [5.8], [6.2], Math.floor) - * // => [] - */ -declare function differenceBy(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, values3: ArrayLike, values4: ArrayLike, values5: ArrayLike, ...values: Array | ValueIteratee>): T1[]; -/** - * Creates an array of array values not included in the other given arrays. - * - * @template T - * @param {ArrayLike | null | undefined} array The array to inspect - * @param {...Array>} values The arrays of values to exclude - * @returns {T[]} Returns the new array of filtered values - * @example - * differenceBy([2, 1], [2, 3]) - * // => [1] - */ -declare function differenceBy(array: ArrayLike | null | undefined, ...values: Array>): T[]; - -export { differenceBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceBy.js deleted file mode 100644 index 8f9f57e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceBy.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const last = require('./last.js'); -const difference = require('../../array/difference.js'); -const differenceBy$1 = require('../../array/differenceBy.js'); -const flattenArrayLike = require('../_internal/flattenArrayLike.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); -const iteratee = require('../util/iteratee.js'); - -function differenceBy(arr, ..._values) { - if (!isArrayLikeObject.isArrayLikeObject(arr)) { - return []; - } - const iteratee$1 = last.last(_values); - const values = flattenArrayLike.flattenArrayLike(_values); - if (isArrayLikeObject.isArrayLikeObject(iteratee$1)) { - return difference.difference(Array.from(arr), values); - } - return differenceBy$1.differenceBy(Array.from(arr), values, iteratee.iteratee(iteratee$1)); -} - -exports.differenceBy = differenceBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceBy.mjs deleted file mode 100644 index e69b8a5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceBy.mjs +++ /dev/null @@ -1,20 +0,0 @@ -import { last } from './last.mjs'; -import { difference } from '../../array/difference.mjs'; -import { differenceBy as differenceBy$1 } from '../../array/differenceBy.mjs'; -import { flattenArrayLike } from '../_internal/flattenArrayLike.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function differenceBy(arr, ..._values) { - if (!isArrayLikeObject(arr)) { - return []; - } - const iteratee$1 = last(_values); - const values = flattenArrayLike(_values); - if (isArrayLikeObject(iteratee$1)) { - return difference(Array.from(arr), values); - } - return differenceBy$1(Array.from(arr), values, iteratee(iteratee$1)); -} - -export { differenceBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceWith.d.mts deleted file mode 100644 index 952d84f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceWith.d.mts +++ /dev/null @@ -1,91 +0,0 @@ -/** - * Computes the difference between the primary array and another array using a comparator function. - * - * @template T1, T2 - * @param {ArrayLike | null | undefined} array - The primary array to compare elements against. - * @param {ArrayLike} values - The array containing elements to compare with the primary array. - * @param {(a: T1, b: T2) => boolean} comparator - A function to determine if two elements are considered equal. - * @returns {T1[]} A new array containing the elements from the primary array that do not match any elements in `values` based on the comparator. - * - * @example - * const array = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const values = [{ id: 2 }]; - * const comparator = (a, b) => a.id === b.id; - * - * const result = differenceWith(array, values, comparator); - * // result will be [{ id: 1 }, { id: 3 }] - */ -declare function differenceWith(array: ArrayLike | null | undefined, values: ArrayLike, comparator: (a: T1, b: T2) => boolean): T1[]; -/** - * Computes the difference between the primary array and two arrays using a comparator function. - * - * @template T1, T2, T3 - * @param {ArrayLike | null | undefined} array - The primary array to compare elements against. - * @param {ArrayLike} values1 - The first array containing elements to compare with the primary array. - * @param {ArrayLike} values2 - The second array containing elements to compare with the primary array. - * @param {(a: T1, b: T2 | T3) => boolean} comparator - A function to determine if two elements are considered equal. - * @returns {T1[]} A new array containing the elements from the primary array that do not match any elements in `values1` or `values2` based on the comparator. - * - * @example - * const array = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const values1 = [{ id: 2 }]; - * const values2 = [{ id: 3 }]; - * const comparator = (a, b) => a.id === b.id; - * - * const result = differenceWith(array, values1, values2, comparator); - * // result will be [{ id: 1 }] - */ -declare function differenceWith(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, comparator: (a: T1, b: T2 | T3) => boolean): T1[]; -/** - * Computes the difference between the primary array and multiple arrays using a comparator function. - * - * @template T1, T2, T3, T4 - * @param {ArrayLike | null | undefined} array - The primary array to compare elements against. - * @param {ArrayLike} values1 - The first array containing elements to compare with the primary array. - * @param {ArrayLike} values2 - The second array containing elements to compare with the primary array. - * @param {...Array | ((a: T1, b: T2 | T3 | T4) => boolean)>} values - Additional arrays and an optional comparator function to determine if two elements are considered equal. - * @returns {T1[]} A new array containing the elements from the primary array that do not match any elements - * in `values1`, `values2`, or subsequent arrays. If a comparator function is provided, it will be used to compare elements; - * otherwise, [SameValueZero](https://tc39.es/ecma262/multipage/abstract-operations.html#sec-samevaluezero) algorithm will be used. - * - * @example - * // Example with comparator function - * const array = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }]; - * const values1 = [{ id: 2 }]; - * const values2 = [{ id: 3 }]; - * const values3 = [{ id: 4 }]; - * const comparator = (a, b) => a.id === b.id; - * - * const result = differenceWith(array, values1, values2, values3, comparator); - * // result will be [{ id: 1 }] - * - * @example - * // Example without comparator function (behaves like `difference`) - * const array = [1, 2, 3, 4]; - * const values1 = [2]; - * const values2 = [3]; - * const values3 = [4]; - * - * const result = differenceWith(array, values1, values2, values3); - * // result will be [1] - */ -declare function differenceWith(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, ...values: Array | ((a: T1, b: T2 | T3 | T4) => boolean)>): T1[]; -/** - * Computes the difference between the primary array and one or more arrays without using a comparator function. - * - * @template T - * @param {ArrayLike | null | undefined} array - The primary array to compare elements against. - * @param {...Array>} values - One or more arrays containing elements to compare with the primary array. - * @returns {T[]} A new array containing the elements from the primary array that do not match any elements in the provided arrays. - * - * @example - * const array = [1, 2, 3]; - * const values1 = [2]; - * const values2 = [3]; - * - * const result = differenceWith(array, values1, values2); - * // result will be [1] - */ -declare function differenceWith(array: ArrayLike | null | undefined, ...values: Array>): T[]; - -export { differenceWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceWith.d.ts deleted file mode 100644 index 952d84f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceWith.d.ts +++ /dev/null @@ -1,91 +0,0 @@ -/** - * Computes the difference between the primary array and another array using a comparator function. - * - * @template T1, T2 - * @param {ArrayLike | null | undefined} array - The primary array to compare elements against. - * @param {ArrayLike} values - The array containing elements to compare with the primary array. - * @param {(a: T1, b: T2) => boolean} comparator - A function to determine if two elements are considered equal. - * @returns {T1[]} A new array containing the elements from the primary array that do not match any elements in `values` based on the comparator. - * - * @example - * const array = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const values = [{ id: 2 }]; - * const comparator = (a, b) => a.id === b.id; - * - * const result = differenceWith(array, values, comparator); - * // result will be [{ id: 1 }, { id: 3 }] - */ -declare function differenceWith(array: ArrayLike | null | undefined, values: ArrayLike, comparator: (a: T1, b: T2) => boolean): T1[]; -/** - * Computes the difference between the primary array and two arrays using a comparator function. - * - * @template T1, T2, T3 - * @param {ArrayLike | null | undefined} array - The primary array to compare elements against. - * @param {ArrayLike} values1 - The first array containing elements to compare with the primary array. - * @param {ArrayLike} values2 - The second array containing elements to compare with the primary array. - * @param {(a: T1, b: T2 | T3) => boolean} comparator - A function to determine if two elements are considered equal. - * @returns {T1[]} A new array containing the elements from the primary array that do not match any elements in `values1` or `values2` based on the comparator. - * - * @example - * const array = [{ id: 1 }, { id: 2 }, { id: 3 }]; - * const values1 = [{ id: 2 }]; - * const values2 = [{ id: 3 }]; - * const comparator = (a, b) => a.id === b.id; - * - * const result = differenceWith(array, values1, values2, comparator); - * // result will be [{ id: 1 }] - */ -declare function differenceWith(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, comparator: (a: T1, b: T2 | T3) => boolean): T1[]; -/** - * Computes the difference between the primary array and multiple arrays using a comparator function. - * - * @template T1, T2, T3, T4 - * @param {ArrayLike | null | undefined} array - The primary array to compare elements against. - * @param {ArrayLike} values1 - The first array containing elements to compare with the primary array. - * @param {ArrayLike} values2 - The second array containing elements to compare with the primary array. - * @param {...Array | ((a: T1, b: T2 | T3 | T4) => boolean)>} values - Additional arrays and an optional comparator function to determine if two elements are considered equal. - * @returns {T1[]} A new array containing the elements from the primary array that do not match any elements - * in `values1`, `values2`, or subsequent arrays. If a comparator function is provided, it will be used to compare elements; - * otherwise, [SameValueZero](https://tc39.es/ecma262/multipage/abstract-operations.html#sec-samevaluezero) algorithm will be used. - * - * @example - * // Example with comparator function - * const array = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }]; - * const values1 = [{ id: 2 }]; - * const values2 = [{ id: 3 }]; - * const values3 = [{ id: 4 }]; - * const comparator = (a, b) => a.id === b.id; - * - * const result = differenceWith(array, values1, values2, values3, comparator); - * // result will be [{ id: 1 }] - * - * @example - * // Example without comparator function (behaves like `difference`) - * const array = [1, 2, 3, 4]; - * const values1 = [2]; - * const values2 = [3]; - * const values3 = [4]; - * - * const result = differenceWith(array, values1, values2, values3); - * // result will be [1] - */ -declare function differenceWith(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, ...values: Array | ((a: T1, b: T2 | T3 | T4) => boolean)>): T1[]; -/** - * Computes the difference between the primary array and one or more arrays without using a comparator function. - * - * @template T - * @param {ArrayLike | null | undefined} array - The primary array to compare elements against. - * @param {...Array>} values - One or more arrays containing elements to compare with the primary array. - * @returns {T[]} A new array containing the elements from the primary array that do not match any elements in the provided arrays. - * - * @example - * const array = [1, 2, 3]; - * const values1 = [2]; - * const values2 = [3]; - * - * const result = differenceWith(array, values1, values2); - * // result will be [1] - */ -declare function differenceWith(array: ArrayLike | null | undefined, ...values: Array>): T[]; - -export { differenceWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceWith.js deleted file mode 100644 index 2ce5799..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceWith.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const last = require('./last.js'); -const difference = require('../../array/difference.js'); -const differenceWith$1 = require('../../array/differenceWith.js'); -const flattenArrayLike = require('../_internal/flattenArrayLike.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); - -function differenceWith(array, ...values) { - if (!isArrayLikeObject.isArrayLikeObject(array)) { - return []; - } - const comparator = last.last(values); - const flattenedValues = flattenArrayLike.flattenArrayLike(values); - if (typeof comparator === 'function') { - return differenceWith$1.differenceWith(Array.from(array), flattenedValues, comparator); - } - return difference.difference(Array.from(array), flattenedValues); -} - -exports.differenceWith = differenceWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceWith.mjs deleted file mode 100644 index c0ebece..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/differenceWith.mjs +++ /dev/null @@ -1,19 +0,0 @@ -import { last } from './last.mjs'; -import { difference } from '../../array/difference.mjs'; -import { differenceWith as differenceWith$1 } from '../../array/differenceWith.mjs'; -import { flattenArrayLike } from '../_internal/flattenArrayLike.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; - -function differenceWith(array, ...values) { - if (!isArrayLikeObject(array)) { - return []; - } - const comparator = last(values); - const flattenedValues = flattenArrayLike(values); - if (typeof comparator === 'function') { - return differenceWith$1(Array.from(array), flattenedValues, comparator); - } - return difference(Array.from(array), flattenedValues); -} - -export { differenceWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/drop.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/drop.d.mts deleted file mode 100644 index 8c2ebc3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/drop.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Removes a specified number of elements from the beginning of an array and returns the rest. - * - * This function takes an array and a number, and returns a new array with the specified number - * of elements removed from the start. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} collection - The array from which to drop elements. - * @param {number} itemsCount - The number of elements to drop from the beginning of the array. - * @param {unknown} [guard] - Enables use as an iteratee for methods like `_.map`. - * @returns {T[]} A new array with the specified number of elements removed from the start. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = drop(array, 2); - * result will be [3, 4, 5] since the first two elements are dropped. - */ -declare function drop(array: ArrayLike | null | undefined, n?: number): T[]; - -export { drop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/drop.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/drop.d.ts deleted file mode 100644 index 8c2ebc3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/drop.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Removes a specified number of elements from the beginning of an array and returns the rest. - * - * This function takes an array and a number, and returns a new array with the specified number - * of elements removed from the start. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} collection - The array from which to drop elements. - * @param {number} itemsCount - The number of elements to drop from the beginning of the array. - * @param {unknown} [guard] - Enables use as an iteratee for methods like `_.map`. - * @returns {T[]} A new array with the specified number of elements removed from the start. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = drop(array, 2); - * result will be [3, 4, 5] since the first two elements are dropped. - */ -declare function drop(array: ArrayLike | null | undefined, n?: number): T[]; - -export { drop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/drop.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/drop.js deleted file mode 100644 index a7fb13f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/drop.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const drop$1 = require('../../array/drop.js'); -const toArray = require('../_internal/toArray.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const toInteger = require('../util/toInteger.js'); - -function drop(collection, itemsCount = 1, guard) { - if (!isArrayLike.isArrayLike(collection)) { - return []; - } - itemsCount = guard ? 1 : toInteger.toInteger(itemsCount); - return drop$1.drop(toArray.toArray(collection), itemsCount); -} - -exports.drop = drop; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/drop.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/drop.mjs deleted file mode 100644 index 6443ac7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/drop.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { drop as drop$1 } from '../../array/drop.mjs'; -import { toArray } from '../_internal/toArray.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { toInteger } from '../util/toInteger.mjs'; - -function drop(collection, itemsCount = 1, guard) { - if (!isArrayLike(collection)) { - return []; - } - itemsCount = guard ? 1 : toInteger(itemsCount); - return drop$1(toArray(collection), itemsCount); -} - -export { drop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRight.d.mts deleted file mode 100644 index 7f2a126..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRight.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Removes a specified number of elements from the end of an array and returns the rest. - * - * This function takes an array and a number, and returns a new array with the specified number - * of elements removed from the end. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} collection - The array from which to drop elements. - * @param {number} itemsCount - The number of elements to drop from the end of the array. - * @param {unknown} [guard] - Enables use as an iteratee for methods like `_.map`. - * @returns {T[]} A new array with the specified number of elements removed from the end. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = dropRight(array, 2); - * // result will be [1, 2, 3] since the last two elements are dropped. - */ -declare function dropRight(array: ArrayLike | null | undefined, n?: number): T[]; - -export { dropRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRight.d.ts deleted file mode 100644 index 7f2a126..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRight.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Removes a specified number of elements from the end of an array and returns the rest. - * - * This function takes an array and a number, and returns a new array with the specified number - * of elements removed from the end. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} collection - The array from which to drop elements. - * @param {number} itemsCount - The number of elements to drop from the end of the array. - * @param {unknown} [guard] - Enables use as an iteratee for methods like `_.map`. - * @returns {T[]} A new array with the specified number of elements removed from the end. - * - * @example - * const array = [1, 2, 3, 4, 5]; - * const result = dropRight(array, 2); - * // result will be [1, 2, 3] since the last two elements are dropped. - */ -declare function dropRight(array: ArrayLike | null | undefined, n?: number): T[]; - -export { dropRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRight.js deleted file mode 100644 index bd3396e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRight.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const dropRight$1 = require('../../array/dropRight.js'); -const toArray = require('../_internal/toArray.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const toInteger = require('../util/toInteger.js'); - -function dropRight(collection, itemsCount = 1, guard) { - if (!isArrayLike.isArrayLike(collection)) { - return []; - } - itemsCount = guard ? 1 : toInteger.toInteger(itemsCount); - return dropRight$1.dropRight(toArray.toArray(collection), itemsCount); -} - -exports.dropRight = dropRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRight.mjs deleted file mode 100644 index dd93fd2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRight.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { dropRight as dropRight$1 } from '../../array/dropRight.mjs'; -import { toArray } from '../_internal/toArray.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { toInteger } from '../util/toInteger.mjs'; - -function dropRight(collection, itemsCount = 1, guard) { - if (!isArrayLike(collection)) { - return []; - } - itemsCount = guard ? 1 : toInteger(itemsCount); - return dropRight$1(toArray(collection), itemsCount); -} - -export { dropRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRightWhile.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRightWhile.d.mts deleted file mode 100644 index 54046fd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRightWhile.d.mts +++ /dev/null @@ -1,37 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.mjs'; - -/** - * Creates a slice of array excluding elements dropped from the end until predicate returns falsey. - * The predicate is invoked with three arguments: (value, index, array). - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} array - The array to query. - * @param {ListIteratee} [predicate] - The function invoked per iteration. - * @returns {T[]} Returns the slice of array. - * @example - * - * const users = [ - * { user: 'barney', active: true }, - * { user: 'fred', active: false }, - * { user: 'pebbles', active: false } - * ]; - * - * // Using function predicate - * dropRightWhile(users, user => !user.active); - * // => [{ user: 'barney', active: true }] - * - * // Using matches shorthand - * dropRightWhile(users, { user: 'pebbles', active: false }); - * // => [{ user: 'barney', active: true }, { user: 'fred', active: false }] - * - * // Using matchesProperty shorthand - * dropRightWhile(users, ['active', false]); - * // => [{ user: 'barney', active: true }] - * - * // Using property shorthand - * dropRightWhile(users, 'active'); - * // => [{ user: 'barney', active: true }] - */ -declare function dropRightWhile(array: ArrayLike | null | undefined, predicate?: ListIteratee): T[]; - -export { dropRightWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRightWhile.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRightWhile.d.ts deleted file mode 100644 index ee40728..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRightWhile.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.js'; - -/** - * Creates a slice of array excluding elements dropped from the end until predicate returns falsey. - * The predicate is invoked with three arguments: (value, index, array). - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} array - The array to query. - * @param {ListIteratee} [predicate] - The function invoked per iteration. - * @returns {T[]} Returns the slice of array. - * @example - * - * const users = [ - * { user: 'barney', active: true }, - * { user: 'fred', active: false }, - * { user: 'pebbles', active: false } - * ]; - * - * // Using function predicate - * dropRightWhile(users, user => !user.active); - * // => [{ user: 'barney', active: true }] - * - * // Using matches shorthand - * dropRightWhile(users, { user: 'pebbles', active: false }); - * // => [{ user: 'barney', active: true }, { user: 'fred', active: false }] - * - * // Using matchesProperty shorthand - * dropRightWhile(users, ['active', false]); - * // => [{ user: 'barney', active: true }] - * - * // Using property shorthand - * dropRightWhile(users, 'active'); - * // => [{ user: 'barney', active: true }] - */ -declare function dropRightWhile(array: ArrayLike | null | undefined, predicate?: ListIteratee): T[]; - -export { dropRightWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRightWhile.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRightWhile.js deleted file mode 100644 index 99f5b70..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRightWhile.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const dropRightWhile$1 = require('../../array/dropRightWhile.js'); -const identity = require('../../function/identity.js'); -const property = require('../object/property.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const matches = require('../predicate/matches.js'); -const matchesProperty = require('../predicate/matchesProperty.js'); - -function dropRightWhile(arr, predicate = identity.identity) { - if (!isArrayLike.isArrayLike(arr)) { - return []; - } - return dropRightWhileImpl(Array.from(arr), predicate); -} -function dropRightWhileImpl(arr, predicate) { - switch (typeof predicate) { - case 'function': { - return dropRightWhile$1.dropRightWhile(arr, (item, index, arr) => Boolean(predicate(item, index, arr))); - } - case 'object': { - if (Array.isArray(predicate) && predicate.length === 2) { - const key = predicate[0]; - const value = predicate[1]; - return dropRightWhile$1.dropRightWhile(arr, matchesProperty.matchesProperty(key, value)); - } - else { - return dropRightWhile$1.dropRightWhile(arr, matches.matches(predicate)); - } - } - case 'symbol': - case 'number': - case 'string': { - return dropRightWhile$1.dropRightWhile(arr, property.property(predicate)); - } - } -} - -exports.dropRightWhile = dropRightWhile; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRightWhile.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRightWhile.mjs deleted file mode 100644 index 2b3dd23..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropRightWhile.mjs +++ /dev/null @@ -1,37 +0,0 @@ -import { dropRightWhile as dropRightWhile$1 } from '../../array/dropRightWhile.mjs'; -import { identity } from '../../function/identity.mjs'; -import { property } from '../object/property.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { matches } from '../predicate/matches.mjs'; -import { matchesProperty } from '../predicate/matchesProperty.mjs'; - -function dropRightWhile(arr, predicate = identity) { - if (!isArrayLike(arr)) { - return []; - } - return dropRightWhileImpl(Array.from(arr), predicate); -} -function dropRightWhileImpl(arr, predicate) { - switch (typeof predicate) { - case 'function': { - return dropRightWhile$1(arr, (item, index, arr) => Boolean(predicate(item, index, arr))); - } - case 'object': { - if (Array.isArray(predicate) && predicate.length === 2) { - const key = predicate[0]; - const value = predicate[1]; - return dropRightWhile$1(arr, matchesProperty(key, value)); - } - else { - return dropRightWhile$1(arr, matches(predicate)); - } - } - case 'symbol': - case 'number': - case 'string': { - return dropRightWhile$1(arr, property(predicate)); - } - } -} - -export { dropRightWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropWhile.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropWhile.d.mts deleted file mode 100644 index 0e3c0a6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropWhile.d.mts +++ /dev/null @@ -1,28 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.mjs'; - -/** - * Creates a slice of array excluding elements dropped from the beginning. - * Elements are dropped until predicate returns falsey. - * The predicate is invoked with three arguments: (value, index, array). - * - * @template T - The type of elements in the array - * @param {ArrayLike | null | undefined} arr - The array to query - * @param {ListIteratee} [predicate=identity] - The function invoked per iteration - * @returns {T[]} Returns the slice of array - * - * @example - * dropWhile([1, 2, 3], n => n < 3) - * // => [3] - * - * dropWhile([{ a: 1, b: 2 }, { a: 1, b: 3 }], { a: 1 }) - * // => [{ a: 1, b: 3 }] - * - * dropWhile([{ a: 1, b: 2 }, { a: 1, b: 3 }], ['a', 1]) - * // => [{ a: 1, b: 3 }] - * - * dropWhile([{ a: 1, b: 2 }, { a: 1, b: 3 }], 'a') - * // => [] - */ -declare function dropWhile(arr: ArrayLike | null | undefined, predicate?: ListIteratee): T[]; - -export { dropWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropWhile.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropWhile.d.ts deleted file mode 100644 index 1ace427..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropWhile.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.js'; - -/** - * Creates a slice of array excluding elements dropped from the beginning. - * Elements are dropped until predicate returns falsey. - * The predicate is invoked with three arguments: (value, index, array). - * - * @template T - The type of elements in the array - * @param {ArrayLike | null | undefined} arr - The array to query - * @param {ListIteratee} [predicate=identity] - The function invoked per iteration - * @returns {T[]} Returns the slice of array - * - * @example - * dropWhile([1, 2, 3], n => n < 3) - * // => [3] - * - * dropWhile([{ a: 1, b: 2 }, { a: 1, b: 3 }], { a: 1 }) - * // => [{ a: 1, b: 3 }] - * - * dropWhile([{ a: 1, b: 2 }, { a: 1, b: 3 }], ['a', 1]) - * // => [{ a: 1, b: 3 }] - * - * dropWhile([{ a: 1, b: 2 }, { a: 1, b: 3 }], 'a') - * // => [] - */ -declare function dropWhile(arr: ArrayLike | null | undefined, predicate?: ListIteratee): T[]; - -export { dropWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropWhile.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropWhile.js deleted file mode 100644 index 5046231..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropWhile.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const dropWhile$1 = require('../../array/dropWhile.js'); -const identity = require('../../function/identity.js'); -const toArray = require('../_internal/toArray.js'); -const property = require('../object/property.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const matches = require('../predicate/matches.js'); -const matchesProperty = require('../predicate/matchesProperty.js'); - -function dropWhile(arr, predicate = identity.identity) { - if (!isArrayLike.isArrayLike(arr)) { - return []; - } - return dropWhileImpl(toArray.toArray(arr), predicate); -} -function dropWhileImpl(arr, predicate) { - switch (typeof predicate) { - case 'function': { - return dropWhile$1.dropWhile(arr, (item, index, arr) => Boolean(predicate(item, index, arr))); - } - case 'object': { - if (Array.isArray(predicate) && predicate.length === 2) { - const key = predicate[0]; - const value = predicate[1]; - return dropWhile$1.dropWhile(arr, matchesProperty.matchesProperty(key, value)); - } - else { - return dropWhile$1.dropWhile(arr, matches.matches(predicate)); - } - } - case 'number': - case 'symbol': - case 'string': { - return dropWhile$1.dropWhile(arr, property.property(predicate)); - } - } -} - -exports.dropWhile = dropWhile; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropWhile.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropWhile.mjs deleted file mode 100644 index e06f83c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/dropWhile.mjs +++ /dev/null @@ -1,38 +0,0 @@ -import { dropWhile as dropWhile$1 } from '../../array/dropWhile.mjs'; -import { identity } from '../../function/identity.mjs'; -import { toArray } from '../_internal/toArray.mjs'; -import { property } from '../object/property.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { matches } from '../predicate/matches.mjs'; -import { matchesProperty } from '../predicate/matchesProperty.mjs'; - -function dropWhile(arr, predicate = identity) { - if (!isArrayLike(arr)) { - return []; - } - return dropWhileImpl(toArray(arr), predicate); -} -function dropWhileImpl(arr, predicate) { - switch (typeof predicate) { - case 'function': { - return dropWhile$1(arr, (item, index, arr) => Boolean(predicate(item, index, arr))); - } - case 'object': { - if (Array.isArray(predicate) && predicate.length === 2) { - const key = predicate[0]; - const value = predicate[1]; - return dropWhile$1(arr, matchesProperty(key, value)); - } - else { - return dropWhile$1(arr, matches(predicate)); - } - } - case 'number': - case 'symbol': - case 'string': { - return dropWhile$1(arr, property(predicate)); - } - } -} - -export { dropWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/every.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/every.d.mts deleted file mode 100644 index 039a7a0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/every.d.mts +++ /dev/null @@ -1,64 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.mjs'; -import { ObjectIterateeCustom } from '../_internal/ObjectIteratee.mjs'; - -/** - * Checks if all elements in a collection pass the predicate check. - * The predicate is invoked with three arguments: (value, index|key, collection). - * - * @template T - The type of elements in the collection - * @param {ArrayLike | null | undefined} collection - The collection to iterate over - * @param {ListIterateeCustom} [predicate=identity] - The function invoked per iteration - * @returns {boolean} Returns true if all elements pass the predicate check, else false - * - * @example - * // Using a function predicate - * every([true, 1, null, 'yes'], Boolean) - * // => false - * - * // Using property shorthand - * const users = [{ user: 'barney', age: 36 }, { user: 'fred', age: 40 }] - * every(users, 'age') - * // => true - * - * // Using matches shorthand - * every(users, { age: 36 }) - * // => false - * - * // Using matchesProperty shorthand - * every(users, ['age', 36]) - * // => false - */ -declare function every(collection: ArrayLike | null | undefined, predicate?: ListIterateeCustom): boolean; -/** - * Checks if all elements in an object pass the predicate check. - * The predicate is invoked with three arguments: (value, key, object). - * - * @template T - The type of the object - * @param {T | null | undefined} collection - The object to iterate over - * @param {ObjectIterateeCustom} [predicate=identity] - The function invoked per iteration - * @returns {boolean} Returns true if all elements pass the predicate check, else false - * - * @example - * // Using a function predicate - * every({ a: true, b: 1, c: null }, Boolean) - * // => false - * - * // Using property shorthand - * const users = { - * barney: { active: true, age: 36 }, - * fred: { active: true, age: 40 } - * } - * every(users, 'active') - * // => true - * - * // Using matches shorthand - * every(users, { active: true }) - * // => true - * - * // Using matchesProperty shorthand - * every(users, ['age', 36]) - * // => false - */ -declare function every(collection: T | null | undefined, predicate?: ObjectIterateeCustom): boolean; - -export { every }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/every.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/every.d.ts deleted file mode 100644 index 33e941c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/every.d.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.js'; -import { ObjectIterateeCustom } from '../_internal/ObjectIteratee.js'; - -/** - * Checks if all elements in a collection pass the predicate check. - * The predicate is invoked with three arguments: (value, index|key, collection). - * - * @template T - The type of elements in the collection - * @param {ArrayLike | null | undefined} collection - The collection to iterate over - * @param {ListIterateeCustom} [predicate=identity] - The function invoked per iteration - * @returns {boolean} Returns true if all elements pass the predicate check, else false - * - * @example - * // Using a function predicate - * every([true, 1, null, 'yes'], Boolean) - * // => false - * - * // Using property shorthand - * const users = [{ user: 'barney', age: 36 }, { user: 'fred', age: 40 }] - * every(users, 'age') - * // => true - * - * // Using matches shorthand - * every(users, { age: 36 }) - * // => false - * - * // Using matchesProperty shorthand - * every(users, ['age', 36]) - * // => false - */ -declare function every(collection: ArrayLike | null | undefined, predicate?: ListIterateeCustom): boolean; -/** - * Checks if all elements in an object pass the predicate check. - * The predicate is invoked with three arguments: (value, key, object). - * - * @template T - The type of the object - * @param {T | null | undefined} collection - The object to iterate over - * @param {ObjectIterateeCustom} [predicate=identity] - The function invoked per iteration - * @returns {boolean} Returns true if all elements pass the predicate check, else false - * - * @example - * // Using a function predicate - * every({ a: true, b: 1, c: null }, Boolean) - * // => false - * - * // Using property shorthand - * const users = { - * barney: { active: true, age: 36 }, - * fred: { active: true, age: 40 } - * } - * every(users, 'active') - * // => true - * - * // Using matches shorthand - * every(users, { active: true }) - * // => true - * - * // Using matchesProperty shorthand - * every(users, ['age', 36]) - * // => false - */ -declare function every(collection: T | null | undefined, predicate?: ObjectIterateeCustom): boolean; - -export { every }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/every.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/every.js deleted file mode 100644 index 13d99d7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/every.js +++ /dev/null @@ -1,64 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const isIterateeCall = require('../_internal/isIterateeCall.js'); -const property = require('../object/property.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const matches = require('../predicate/matches.js'); -const matchesProperty = require('../predicate/matchesProperty.js'); - -function every(source, doesMatch, guard) { - if (!source) { - return true; - } - if (guard && isIterateeCall.isIterateeCall(source, doesMatch, guard)) { - doesMatch = undefined; - } - if (!doesMatch) { - doesMatch = identity.identity; - } - let predicate; - switch (typeof doesMatch) { - case 'function': { - predicate = doesMatch; - break; - } - case 'object': { - if (Array.isArray(doesMatch) && doesMatch.length === 2) { - const key = doesMatch[0]; - const value = doesMatch[1]; - predicate = matchesProperty.matchesProperty(key, value); - } - else { - predicate = matches.matches(doesMatch); - } - break; - } - case 'symbol': - case 'number': - case 'string': { - predicate = property.property(doesMatch); - } - } - if (!isArrayLike.isArrayLike(source)) { - const keys = Object.keys(source); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = source[key]; - if (!predicate(value, key, source)) { - return false; - } - } - return true; - } - for (let i = 0; i < source.length; i++) { - if (!predicate(source[i], i, source)) { - return false; - } - } - return true; -} - -exports.every = every; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/every.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/every.mjs deleted file mode 100644 index 2b9fd8e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/every.mjs +++ /dev/null @@ -1,60 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { isIterateeCall } from '../_internal/isIterateeCall.mjs'; -import { property } from '../object/property.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { matches } from '../predicate/matches.mjs'; -import { matchesProperty } from '../predicate/matchesProperty.mjs'; - -function every(source, doesMatch, guard) { - if (!source) { - return true; - } - if (guard && isIterateeCall(source, doesMatch, guard)) { - doesMatch = undefined; - } - if (!doesMatch) { - doesMatch = identity; - } - let predicate; - switch (typeof doesMatch) { - case 'function': { - predicate = doesMatch; - break; - } - case 'object': { - if (Array.isArray(doesMatch) && doesMatch.length === 2) { - const key = doesMatch[0]; - const value = doesMatch[1]; - predicate = matchesProperty(key, value); - } - else { - predicate = matches(doesMatch); - } - break; - } - case 'symbol': - case 'number': - case 'string': { - predicate = property(doesMatch); - } - } - if (!isArrayLike(source)) { - const keys = Object.keys(source); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = source[key]; - if (!predicate(value, key, source)) { - return false; - } - } - return true; - } - for (let i = 0; i < source.length; i++) { - if (!predicate(source[i], i, source)) { - return false; - } - } - return true; -} - -export { every }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/fill.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/fill.d.mts deleted file mode 100644 index c8e94ca..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/fill.d.mts +++ /dev/null @@ -1,53 +0,0 @@ -import { MutableList } from '../_internal/MutableList.d.mjs'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.mjs'; - -/** - * Fills an array with a value. - * @template T - * @param {any[] | null | undefined} array - The array to fill - * @param {T} value - The value to fill array with - * @returns {T[]} Returns the filled array - * @example - * fill([1, 2, 3], 'a') - * // => ['a', 'a', 'a'] - */ -declare function fill(array: any[] | null | undefined, value: T): T[]; -/** - * Fills an array-like object with a value. - * @template T, AL - * @param {RejectReadonly | null | undefined} array - The array-like object to fill - * @param {T} value - The value to fill array with - * @returns {ArrayLike} Returns the filled array-like object - * @example - * fill({ length: 3 }, 2) - * // => { 0: 2, 1: 2, 2: 2, length: 3 } - */ -declare function fill>(array: RejectReadonly | null | undefined, value: T): ArrayLike; -/** - * Fills an array with a value from start up to end. - * @template T, U - * @param {U[] | null | undefined} array - The array to fill - * @param {T} value - The value to fill array with - * @param {number} [start=0] - The start position - * @param {number} [end=array.length] - The end position - * @returns {Array} Returns the filled array - * @example - * fill([1, 2, 3], 'a', 1, 2) - * // => [1, 'a', 3] - */ -declare function fill(array: U[] | null | undefined, value: T, start?: number, end?: number): Array; -/** - * Fills an array-like object with a value from start up to end. - * @template T, U - * @param {U extends readonly any[] ? never : U | null | undefined} array - The array-like object to fill - * @param {T} value - The value to fill array with - * @param {number} [start=0] - The start position - * @param {number} [end=array.length] - The end position - * @returns {ArrayLike} Returns the filled array-like object - * @example - * fill({ 0: 1, 1: 2, 2: 3, length: 3 }, 'a', 1, 2) - * // => { 0: 1, 1: 'a', 2: 3, length: 3 } - */ -declare function fill>(array: RejectReadonly | null | undefined, value: T, start?: number, end?: number): ArrayLike; - -export { fill }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/fill.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/fill.d.ts deleted file mode 100644 index 5835d48..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/fill.d.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { MutableList } from '../_internal/MutableList.d.js'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.js'; - -/** - * Fills an array with a value. - * @template T - * @param {any[] | null | undefined} array - The array to fill - * @param {T} value - The value to fill array with - * @returns {T[]} Returns the filled array - * @example - * fill([1, 2, 3], 'a') - * // => ['a', 'a', 'a'] - */ -declare function fill(array: any[] | null | undefined, value: T): T[]; -/** - * Fills an array-like object with a value. - * @template T, AL - * @param {RejectReadonly | null | undefined} array - The array-like object to fill - * @param {T} value - The value to fill array with - * @returns {ArrayLike} Returns the filled array-like object - * @example - * fill({ length: 3 }, 2) - * // => { 0: 2, 1: 2, 2: 2, length: 3 } - */ -declare function fill>(array: RejectReadonly | null | undefined, value: T): ArrayLike; -/** - * Fills an array with a value from start up to end. - * @template T, U - * @param {U[] | null | undefined} array - The array to fill - * @param {T} value - The value to fill array with - * @param {number} [start=0] - The start position - * @param {number} [end=array.length] - The end position - * @returns {Array} Returns the filled array - * @example - * fill([1, 2, 3], 'a', 1, 2) - * // => [1, 'a', 3] - */ -declare function fill(array: U[] | null | undefined, value: T, start?: number, end?: number): Array; -/** - * Fills an array-like object with a value from start up to end. - * @template T, U - * @param {U extends readonly any[] ? never : U | null | undefined} array - The array-like object to fill - * @param {T} value - The value to fill array with - * @param {number} [start=0] - The start position - * @param {number} [end=array.length] - The end position - * @returns {ArrayLike} Returns the filled array-like object - * @example - * fill({ 0: 1, 1: 2, 2: 3, length: 3 }, 'a', 1, 2) - * // => { 0: 1, 1: 'a', 2: 3, length: 3 } - */ -declare function fill>(array: RejectReadonly | null | undefined, value: T, start?: number, end?: number): ArrayLike; - -export { fill }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/fill.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/fill.js deleted file mode 100644 index 95711da..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/fill.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const fill$1 = require('../../array/fill.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const isString = require('../predicate/isString.js'); - -function fill(array, value, start = 0, end = array ? array.length : 0) { - if (!isArrayLike.isArrayLike(array)) { - return []; - } - if (isString.isString(array)) { - return array; - } - start = Math.floor(start); - end = Math.floor(end); - if (!start) { - start = 0; - } - if (!end) { - end = 0; - } - return fill$1.fill(array, value, start, end); -} - -exports.fill = fill; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/fill.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/fill.mjs deleted file mode 100644 index a145e4e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/fill.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import { fill as fill$1 } from '../../array/fill.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { isString } from '../predicate/isString.mjs'; - -function fill(array, value, start = 0, end = array ? array.length : 0) { - if (!isArrayLike(array)) { - return []; - } - if (isString(array)) { - return array; - } - start = Math.floor(start); - end = Math.floor(end); - if (!start) { - start = 0; - } - if (!end) { - end = 0; - } - return fill$1(array, value, start, end); -} - -export { fill }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/filter.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/filter.d.mts deleted file mode 100644 index 5ea7530..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/filter.d.mts +++ /dev/null @@ -1,74 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.mjs'; -import { ListIteratorTypeGuard } from '../_internal/ListIteratorTypeGuard.mjs'; -import { ObjectIterateeCustom } from '../_internal/ObjectIteratee.mjs'; -import { ObjectIteratorTypeGuard } from '../_internal/ObjectIterator.mjs'; -import { StringIterator } from '../_internal/StringIterator.mjs'; - -/** - * Filters characters in a string based on the predicate function. - * - * @param collection - The string to filter - * @param predicate - The function to test each character - * @returns An array of characters that pass the predicate test - * - * @example - * filter('123', char => char === '2') - * // => ['2'] - */ -declare function filter(collection: string | null | undefined, predicate?: StringIterator): string[]; -/** - * Filters elements in an array-like object using a type guard predicate. - * - * @param collection - The array-like object to filter - * @param predicate - The type guard function to test each element - * @returns An array of elements that are of type U - * - * @example - * filter([1, '2', 3], (x): x is number => typeof x === 'number') - * // => [1, 3] - */ -declare function filter(collection: ArrayLike | null | undefined, predicate: ListIteratorTypeGuard): U[]; -/** - * Filters elements in an array-like object based on the predicate. - * - * @param collection - The array-like object to filter - * @param predicate - The function or shorthand to test each element - * @returns An array of elements that pass the predicate test - * - * @example - * filter([1, 2, 3], x => x > 1) - * // => [2, 3] - * - * filter([{ a: 1 }, { a: 2 }], { a: 1 }) - * // => [{ a: 1 }] - */ -declare function filter(collection: ArrayLike | null | undefined, predicate?: ListIterateeCustom): T[]; -/** - * Filters values in an object using a type guard predicate. - * - * @param collection - The object to filter - * @param predicate - The type guard function to test each value - * @returns An array of values that are of type U - * - * @example - * filter({ a: 1, b: '2', c: 3 }, (x): x is number => typeof x === 'number') - * // => [1, 3] - */ -declare function filter(collection: T | null | undefined, predicate: ObjectIteratorTypeGuard): U[]; -/** - * Filters values in an object based on the predicate. - * - * @param collection - The object to filter - * @param predicate - The function or shorthand to test each value - * @returns An array of values that pass the predicate test - * - * @example - * filter({ a: 1, b: 2 }, x => x > 1) - * // => [2] - * - * filter({ a: { x: 1 }, b: { x: 2 } }, { x: 1 }) - * // => [{ x: 1 }] - */ -declare function filter(collection: T | null | undefined, predicate?: ObjectIterateeCustom): Array; - -export { filter }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/filter.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/filter.d.ts deleted file mode 100644 index 79589aa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/filter.d.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.js'; -import { ListIteratorTypeGuard } from '../_internal/ListIteratorTypeGuard.js'; -import { ObjectIterateeCustom } from '../_internal/ObjectIteratee.js'; -import { ObjectIteratorTypeGuard } from '../_internal/ObjectIterator.js'; -import { StringIterator } from '../_internal/StringIterator.js'; - -/** - * Filters characters in a string based on the predicate function. - * - * @param collection - The string to filter - * @param predicate - The function to test each character - * @returns An array of characters that pass the predicate test - * - * @example - * filter('123', char => char === '2') - * // => ['2'] - */ -declare function filter(collection: string | null | undefined, predicate?: StringIterator): string[]; -/** - * Filters elements in an array-like object using a type guard predicate. - * - * @param collection - The array-like object to filter - * @param predicate - The type guard function to test each element - * @returns An array of elements that are of type U - * - * @example - * filter([1, '2', 3], (x): x is number => typeof x === 'number') - * // => [1, 3] - */ -declare function filter(collection: ArrayLike | null | undefined, predicate: ListIteratorTypeGuard): U[]; -/** - * Filters elements in an array-like object based on the predicate. - * - * @param collection - The array-like object to filter - * @param predicate - The function or shorthand to test each element - * @returns An array of elements that pass the predicate test - * - * @example - * filter([1, 2, 3], x => x > 1) - * // => [2, 3] - * - * filter([{ a: 1 }, { a: 2 }], { a: 1 }) - * // => [{ a: 1 }] - */ -declare function filter(collection: ArrayLike | null | undefined, predicate?: ListIterateeCustom): T[]; -/** - * Filters values in an object using a type guard predicate. - * - * @param collection - The object to filter - * @param predicate - The type guard function to test each value - * @returns An array of values that are of type U - * - * @example - * filter({ a: 1, b: '2', c: 3 }, (x): x is number => typeof x === 'number') - * // => [1, 3] - */ -declare function filter(collection: T | null | undefined, predicate: ObjectIteratorTypeGuard): U[]; -/** - * Filters values in an object based on the predicate. - * - * @param collection - The object to filter - * @param predicate - The function or shorthand to test each value - * @returns An array of values that pass the predicate test - * - * @example - * filter({ a: 1, b: 2 }, x => x > 1) - * // => [2] - * - * filter({ a: { x: 1 }, b: { x: 2 } }, { x: 1 }) - * // => [{ x: 1 }] - */ -declare function filter(collection: T | null | undefined, predicate?: ObjectIterateeCustom): Array; - -export { filter }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/filter.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/filter.js deleted file mode 100644 index 5faf659..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/filter.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const iteratee = require('../util/iteratee.js'); - -function filter(source, predicate = identity.identity) { - if (!source) { - return []; - } - predicate = iteratee.iteratee(predicate); - if (!Array.isArray(source)) { - const result = []; - const keys = Object.keys(source); - const length = isArrayLike.isArrayLike(source) ? source.length : keys.length; - for (let i = 0; i < length; i++) { - const key = keys[i]; - const value = source[key]; - if (predicate(value, key, source)) { - result.push(value); - } - } - return result; - } - const result = []; - const length = source.length; - for (let i = 0; i < length; i++) { - const value = source[i]; - if (predicate(value, i, source)) { - result.push(value); - } - } - return result; -} - -exports.filter = filter; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/filter.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/filter.mjs deleted file mode 100644 index edd149d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/filter.mjs +++ /dev/null @@ -1,34 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function filter(source, predicate = identity) { - if (!source) { - return []; - } - predicate = iteratee(predicate); - if (!Array.isArray(source)) { - const result = []; - const keys = Object.keys(source); - const length = isArrayLike(source) ? source.length : keys.length; - for (let i = 0; i < length; i++) { - const key = keys[i]; - const value = source[key]; - if (predicate(value, key, source)) { - result.push(value); - } - } - return result; - } - const result = []; - const length = source.length; - for (let i = 0; i < length; i++) { - const value = source[i]; - if (predicate(value, i, source)) { - result.push(value); - } - } - return result; -} - -export { filter }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/find.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/find.d.mts deleted file mode 100644 index a5f95a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/find.d.mts +++ /dev/null @@ -1,65 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.mjs'; -import { ListIteratorTypeGuard } from '../_internal/ListIteratorTypeGuard.mjs'; -import { ObjectIterateeCustom } from '../_internal/ObjectIteratee.mjs'; -import { ObjectIteratorTypeGuard } from '../_internal/ObjectIterator.mjs'; - -/** - * Finds the first element in an array-like object that matches a type guard predicate. - * - * @param collection - The array-like object to search - * @param predicate - The type guard function to test each element - * @param fromIndex - The index to start searching from - * @returns The first element that matches the type guard, or undefined if none found - * - * @example - * find([1, '2', 3], (x): x is number => typeof x === 'number') - * // => 1 - */ -declare function find(collection: ArrayLike | null | undefined, predicate: ListIteratorTypeGuard, fromIndex?: number): U | undefined; -/** - * Finds the first element in an array-like object that matches a predicate. - * - * @param collection - The array-like object to search - * @param predicate - The function or shorthand to test each element - * @param fromIndex - The index to start searching from - * @returns The first matching element, or undefined if none found - * - * @example - * find([1, 2, 3], x => x > 2) - * // => 3 - * - * find([{ a: 1 }, { a: 2 }], { a: 2 }) - * // => { a: 2 } - */ -declare function find(collection: ArrayLike | null | undefined, predicate?: ListIterateeCustom, fromIndex?: number): T | undefined; -/** - * Finds the first value in an object that matches a type guard predicate. - * - * @param collection - The object to search - * @param predicate - The type guard function to test each value - * @param fromIndex - The index to start searching from - * @returns The first value that matches the type guard, or undefined if none found - * - * @example - * find({ a: 1, b: '2', c: 3 }, (x): x is number => typeof x === 'number') - * // => 1 - */ -declare function find(collection: T | null | undefined, predicate: ObjectIteratorTypeGuard, fromIndex?: number): U | undefined; -/** - * Finds the first value in an object that matches a predicate. - * - * @param collection - The object to search - * @param predicate - The function or shorthand to test each value - * @param fromIndex - The index to start searching from - * @returns The first matching value, or undefined if none found - * - * @example - * find({ a: 1, b: 2 }, x => x > 1) - * // => 2 - * - * find({ a: { x: 1 }, b: { x: 2 } }, { x: 2 }) - * // => { x: 2 } - */ -declare function find(collection: T | null | undefined, predicate?: ObjectIterateeCustom, fromIndex?: number): T[keyof T] | undefined; - -export { find }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/find.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/find.d.ts deleted file mode 100644 index b2bd266..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/find.d.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.js'; -import { ListIteratorTypeGuard } from '../_internal/ListIteratorTypeGuard.js'; -import { ObjectIterateeCustom } from '../_internal/ObjectIteratee.js'; -import { ObjectIteratorTypeGuard } from '../_internal/ObjectIterator.js'; - -/** - * Finds the first element in an array-like object that matches a type guard predicate. - * - * @param collection - The array-like object to search - * @param predicate - The type guard function to test each element - * @param fromIndex - The index to start searching from - * @returns The first element that matches the type guard, or undefined if none found - * - * @example - * find([1, '2', 3], (x): x is number => typeof x === 'number') - * // => 1 - */ -declare function find(collection: ArrayLike | null | undefined, predicate: ListIteratorTypeGuard, fromIndex?: number): U | undefined; -/** - * Finds the first element in an array-like object that matches a predicate. - * - * @param collection - The array-like object to search - * @param predicate - The function or shorthand to test each element - * @param fromIndex - The index to start searching from - * @returns The first matching element, or undefined if none found - * - * @example - * find([1, 2, 3], x => x > 2) - * // => 3 - * - * find([{ a: 1 }, { a: 2 }], { a: 2 }) - * // => { a: 2 } - */ -declare function find(collection: ArrayLike | null | undefined, predicate?: ListIterateeCustom, fromIndex?: number): T | undefined; -/** - * Finds the first value in an object that matches a type guard predicate. - * - * @param collection - The object to search - * @param predicate - The type guard function to test each value - * @param fromIndex - The index to start searching from - * @returns The first value that matches the type guard, or undefined if none found - * - * @example - * find({ a: 1, b: '2', c: 3 }, (x): x is number => typeof x === 'number') - * // => 1 - */ -declare function find(collection: T | null | undefined, predicate: ObjectIteratorTypeGuard, fromIndex?: number): U | undefined; -/** - * Finds the first value in an object that matches a predicate. - * - * @param collection - The object to search - * @param predicate - The function or shorthand to test each value - * @param fromIndex - The index to start searching from - * @returns The first matching value, or undefined if none found - * - * @example - * find({ a: 1, b: 2 }, x => x > 1) - * // => 2 - * - * find({ a: { x: 1 }, b: { x: 2 } }, { x: 2 }) - * // => { x: 2 } - */ -declare function find(collection: T | null | undefined, predicate?: ObjectIterateeCustom, fromIndex?: number): T[keyof T] | undefined; - -export { find }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/find.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/find.js deleted file mode 100644 index f756fa7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/find.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const iteratee = require('../util/iteratee.js'); - -function find(source, _doesMatch = identity.identity, fromIndex = 0) { - if (!source) { - return undefined; - } - if (fromIndex < 0) { - fromIndex = Math.max(source.length + fromIndex, 0); - } - const doesMatch = iteratee.iteratee(_doesMatch); - if (!Array.isArray(source)) { - const keys = Object.keys(source); - for (let i = fromIndex; i < keys.length; i++) { - const key = keys[i]; - const value = source[key]; - if (doesMatch(value, key, source)) { - return value; - } - } - return undefined; - } - return source.slice(fromIndex).find(doesMatch); -} - -exports.find = find; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/find.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/find.mjs deleted file mode 100644 index eb33144..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/find.mjs +++ /dev/null @@ -1,26 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function find(source, _doesMatch = identity, fromIndex = 0) { - if (!source) { - return undefined; - } - if (fromIndex < 0) { - fromIndex = Math.max(source.length + fromIndex, 0); - } - const doesMatch = iteratee(_doesMatch); - if (!Array.isArray(source)) { - const keys = Object.keys(source); - for (let i = fromIndex; i < keys.length; i++) { - const key = keys[i]; - const value = source[key]; - if (doesMatch(value, key, source)) { - return value; - } - } - return undefined; - } - return source.slice(fromIndex).find(doesMatch); -} - -export { find }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findIndex.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findIndex.d.mts deleted file mode 100644 index 69e3aaa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findIndex.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.mjs'; - -/** - * Finds the index of the first item in an array that has a specific property, where the property name is provided as a PropertyKey. - * - * @template T - * @param {ArrayLike | null | undefined} arr - The array to search through. - * @param {((item: T, index: number, arr: any) => unknown) | Partial | [keyof T, unknown] | PropertyKey} doesMatch - The criteria to match against the items in the array. This can be a function, a partial object, a key-value pair, or a property name. - * @param {PropertyKey} propertyToCheck - The property name to check for in the items of the array. - * @param {number} [fromIndex=0] - The index to start the search from, defaults to 0. - * @returns {number} - The index of the first item that has the specified property, or `-1` if no match is found. - * - * @example - * // Using a property name - * const items = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]; - * const result = findIndex(items, 'name'); - * console.log(result); // 0 - */ -declare function findIndex(arr: ArrayLike | null | undefined, doesMatch?: ListIterateeCustom, fromIndex?: number): number; - -export { findIndex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findIndex.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findIndex.d.ts deleted file mode 100644 index 9615264..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findIndex.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.js'; - -/** - * Finds the index of the first item in an array that has a specific property, where the property name is provided as a PropertyKey. - * - * @template T - * @param {ArrayLike | null | undefined} arr - The array to search through. - * @param {((item: T, index: number, arr: any) => unknown) | Partial | [keyof T, unknown] | PropertyKey} doesMatch - The criteria to match against the items in the array. This can be a function, a partial object, a key-value pair, or a property name. - * @param {PropertyKey} propertyToCheck - The property name to check for in the items of the array. - * @param {number} [fromIndex=0] - The index to start the search from, defaults to 0. - * @returns {number} - The index of the first item that has the specified property, or `-1` if no match is found. - * - * @example - * // Using a property name - * const items = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]; - * const result = findIndex(items, 'name'); - * console.log(result); // 0 - */ -declare function findIndex(arr: ArrayLike | null | undefined, doesMatch?: ListIterateeCustom, fromIndex?: number): number; - -export { findIndex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findIndex.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findIndex.js deleted file mode 100644 index 991da80..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findIndex.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const property = require('../object/property.js'); -const matches = require('../predicate/matches.js'); -const matchesProperty = require('../predicate/matchesProperty.js'); - -function findIndex(arr, doesMatch, fromIndex = 0) { - if (!arr) { - return -1; - } - if (fromIndex < 0) { - fromIndex = Math.max(arr.length + fromIndex, 0); - } - const subArray = Array.from(arr).slice(fromIndex); - let index = -1; - switch (typeof doesMatch) { - case 'function': { - index = subArray.findIndex(doesMatch); - break; - } - case 'object': { - if (Array.isArray(doesMatch) && doesMatch.length === 2) { - const key = doesMatch[0]; - const value = doesMatch[1]; - index = subArray.findIndex(matchesProperty.matchesProperty(key, value)); - } - else { - index = subArray.findIndex(matches.matches(doesMatch)); - } - break; - } - case 'number': - case 'symbol': - case 'string': { - index = subArray.findIndex(property.property(doesMatch)); - } - } - return index === -1 ? -1 : index + fromIndex; -} - -exports.findIndex = findIndex; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findIndex.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findIndex.mjs deleted file mode 100644 index 340e65a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findIndex.mjs +++ /dev/null @@ -1,39 +0,0 @@ -import { property } from '../object/property.mjs'; -import { matches } from '../predicate/matches.mjs'; -import { matchesProperty } from '../predicate/matchesProperty.mjs'; - -function findIndex(arr, doesMatch, fromIndex = 0) { - if (!arr) { - return -1; - } - if (fromIndex < 0) { - fromIndex = Math.max(arr.length + fromIndex, 0); - } - const subArray = Array.from(arr).slice(fromIndex); - let index = -1; - switch (typeof doesMatch) { - case 'function': { - index = subArray.findIndex(doesMatch); - break; - } - case 'object': { - if (Array.isArray(doesMatch) && doesMatch.length === 2) { - const key = doesMatch[0]; - const value = doesMatch[1]; - index = subArray.findIndex(matchesProperty(key, value)); - } - else { - index = subArray.findIndex(matches(doesMatch)); - } - break; - } - case 'number': - case 'symbol': - case 'string': { - index = subArray.findIndex(property(doesMatch)); - } - } - return index === -1 ? -1 : index + fromIndex; -} - -export { findIndex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLast.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLast.d.mts deleted file mode 100644 index da4e811..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLast.d.mts +++ /dev/null @@ -1,82 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.mjs'; -import { ListIteratorTypeGuard } from '../_internal/ListIteratorTypeGuard.mjs'; -import { ObjectIterateeCustom } from '../_internal/ObjectIteratee.mjs'; -import { ObjectIteratorTypeGuard } from '../_internal/ObjectIterator.mjs'; - -/** - * Finds the last element in a collection that satisfies the predicate. - * - * @template T, S - * @param {ArrayLike | null | undefined} collection - The collection to search. - * @param {ListIteratorTypeGuard} predicate - The predicate function with type guard. - * @param {number} [fromIndex] - The index to start searching from. - * @returns {S | undefined} The last element that satisfies the predicate. - * - * @example - * const users = [{ user: 'barney', age: 36 }, { user: 'fred', age: 40 }, { user: 'pebbles', age: 18 }]; - * findLast(users, (o): o is { user: string; age: number } => o.age < 40); - * // => { user: 'pebbles', age: 18 } - */ -declare function findLast(collection: ArrayLike | null | undefined, predicate: ListIteratorTypeGuard, fromIndex?: number): S | undefined; -/** - * Finds the last element in a collection that satisfies the predicate. - * - * @template T - * @param {ArrayLike | null | undefined} collection - The collection to search. - * @param {ListIterateeCustom} [predicate] - The predicate function, partial object, property-value pair, or property name. - * @param {number} [fromIndex] - The index to start searching from. - * @returns {T | undefined} The last element that satisfies the predicate. - * - * @example - * const users = [{ user: 'barney', age: 36 }, { user: 'fred', age: 40 }, { user: 'pebbles', age: 18 }]; - * findLast(users, o => o.age < 40); - * // => { user: 'pebbles', age: 18 } - * - * findLast(users, { age: 36 }); - * // => { user: 'barney', age: 36 } - * - * findLast(users, ['age', 18]); - * // => { user: 'pebbles', age: 18 } - * - * findLast(users, 'age'); - * // => { user: 'fred', age: 40 } - */ -declare function findLast(collection: ArrayLike | null | undefined, predicate?: ListIterateeCustom, fromIndex?: number): T | undefined; -/** - * Finds the last element in an object that satisfies the predicate with type guard. - * - * @template T, S - * @param {T | null | undefined} collection - The object to search. - * @param {ObjectIteratorTypeGuard} predicate - The predicate function with type guard. - * @param {number} [fromIndex] - The index to start searching from. - * @returns {S | undefined} The last element that satisfies the predicate. - * - * @example - * const obj = { a: 1, b: 'hello', c: 3 }; - * findLast(obj, (value): value is string => typeof value === 'string'); - * // => 'hello' - */ -declare function findLast(collection: T | null | undefined, predicate: ObjectIteratorTypeGuard, fromIndex?: number): S | undefined; -/** - * Finds the last element in an object that satisfies the predicate. - * - * @template T - * @param {T | null | undefined} collection - The object to search. - * @param {ObjectIterateeCustom} [predicate] - The predicate function, partial object, property-value pair, or property name. - * @param {number} [fromIndex] - The index to start searching from. - * @returns {T[keyof T] | undefined} The last element that satisfies the predicate. - * - * @example - * const obj = { a: { id: 1, name: 'Alice' }, b: { id: 2 }, c: { id: 3, name: 'Bob' } }; - * findLast(obj, o => o.id > 1); - * // => { id: 3, name: 'Bob' } - * - * findLast(obj, { name: 'Bob' }); - * // => { id: 3, name: 'Bob' } - * - * findLast(obj, 'name'); - * // => { id: 3, name: 'Bob' } - */ -declare function findLast(collection: T | null | undefined, predicate?: ObjectIterateeCustom, fromIndex?: number): T[keyof T] | undefined; - -export { findLast }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLast.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLast.d.ts deleted file mode 100644 index 428bd8a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLast.d.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.js'; -import { ListIteratorTypeGuard } from '../_internal/ListIteratorTypeGuard.js'; -import { ObjectIterateeCustom } from '../_internal/ObjectIteratee.js'; -import { ObjectIteratorTypeGuard } from '../_internal/ObjectIterator.js'; - -/** - * Finds the last element in a collection that satisfies the predicate. - * - * @template T, S - * @param {ArrayLike | null | undefined} collection - The collection to search. - * @param {ListIteratorTypeGuard} predicate - The predicate function with type guard. - * @param {number} [fromIndex] - The index to start searching from. - * @returns {S | undefined} The last element that satisfies the predicate. - * - * @example - * const users = [{ user: 'barney', age: 36 }, { user: 'fred', age: 40 }, { user: 'pebbles', age: 18 }]; - * findLast(users, (o): o is { user: string; age: number } => o.age < 40); - * // => { user: 'pebbles', age: 18 } - */ -declare function findLast(collection: ArrayLike | null | undefined, predicate: ListIteratorTypeGuard, fromIndex?: number): S | undefined; -/** - * Finds the last element in a collection that satisfies the predicate. - * - * @template T - * @param {ArrayLike | null | undefined} collection - The collection to search. - * @param {ListIterateeCustom} [predicate] - The predicate function, partial object, property-value pair, or property name. - * @param {number} [fromIndex] - The index to start searching from. - * @returns {T | undefined} The last element that satisfies the predicate. - * - * @example - * const users = [{ user: 'barney', age: 36 }, { user: 'fred', age: 40 }, { user: 'pebbles', age: 18 }]; - * findLast(users, o => o.age < 40); - * // => { user: 'pebbles', age: 18 } - * - * findLast(users, { age: 36 }); - * // => { user: 'barney', age: 36 } - * - * findLast(users, ['age', 18]); - * // => { user: 'pebbles', age: 18 } - * - * findLast(users, 'age'); - * // => { user: 'fred', age: 40 } - */ -declare function findLast(collection: ArrayLike | null | undefined, predicate?: ListIterateeCustom, fromIndex?: number): T | undefined; -/** - * Finds the last element in an object that satisfies the predicate with type guard. - * - * @template T, S - * @param {T | null | undefined} collection - The object to search. - * @param {ObjectIteratorTypeGuard} predicate - The predicate function with type guard. - * @param {number} [fromIndex] - The index to start searching from. - * @returns {S | undefined} The last element that satisfies the predicate. - * - * @example - * const obj = { a: 1, b: 'hello', c: 3 }; - * findLast(obj, (value): value is string => typeof value === 'string'); - * // => 'hello' - */ -declare function findLast(collection: T | null | undefined, predicate: ObjectIteratorTypeGuard, fromIndex?: number): S | undefined; -/** - * Finds the last element in an object that satisfies the predicate. - * - * @template T - * @param {T | null | undefined} collection - The object to search. - * @param {ObjectIterateeCustom} [predicate] - The predicate function, partial object, property-value pair, or property name. - * @param {number} [fromIndex] - The index to start searching from. - * @returns {T[keyof T] | undefined} The last element that satisfies the predicate. - * - * @example - * const obj = { a: { id: 1, name: 'Alice' }, b: { id: 2 }, c: { id: 3, name: 'Bob' } }; - * findLast(obj, o => o.id > 1); - * // => { id: 3, name: 'Bob' } - * - * findLast(obj, { name: 'Bob' }); - * // => { id: 3, name: 'Bob' } - * - * findLast(obj, 'name'); - * // => { id: 3, name: 'Bob' } - */ -declare function findLast(collection: T | null | undefined, predicate?: ObjectIterateeCustom, fromIndex?: number): T[keyof T] | undefined; - -export { findLast }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLast.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLast.js deleted file mode 100644 index bba9369..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLast.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const iteratee = require('../util/iteratee.js'); -const toInteger = require('../util/toInteger.js'); - -function findLast(source, _doesMatch = identity.identity, fromIndex) { - if (!source) { - return undefined; - } - const length = Array.isArray(source) ? source.length : Object.keys(source).length; - fromIndex = toInteger.toInteger(fromIndex ?? length - 1); - if (fromIndex < 0) { - fromIndex = Math.max(length + fromIndex, 0); - } - else { - fromIndex = Math.min(fromIndex, length - 1); - } - const doesMatch = iteratee.iteratee(_doesMatch); - if (!Array.isArray(source)) { - const keys = Object.keys(source); - for (let i = fromIndex; i >= 0; i--) { - const key = keys[i]; - const value = source[key]; - if (doesMatch(value, key, source)) { - return value; - } - } - return undefined; - } - return source.slice(0, fromIndex + 1).findLast(doesMatch); -} - -exports.findLast = findLast; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLast.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLast.mjs deleted file mode 100644 index df1ae76..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLast.mjs +++ /dev/null @@ -1,32 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { iteratee } from '../util/iteratee.mjs'; -import { toInteger } from '../util/toInteger.mjs'; - -function findLast(source, _doesMatch = identity, fromIndex) { - if (!source) { - return undefined; - } - const length = Array.isArray(source) ? source.length : Object.keys(source).length; - fromIndex = toInteger(fromIndex ?? length - 1); - if (fromIndex < 0) { - fromIndex = Math.max(length + fromIndex, 0); - } - else { - fromIndex = Math.min(fromIndex, length - 1); - } - const doesMatch = iteratee(_doesMatch); - if (!Array.isArray(source)) { - const keys = Object.keys(source); - for (let i = fromIndex; i >= 0; i--) { - const key = keys[i]; - const value = source[key]; - if (doesMatch(value, key, source)) { - return value; - } - } - return undefined; - } - return source.slice(0, fromIndex + 1).findLast(doesMatch); -} - -export { findLast }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLastIndex.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLastIndex.d.mts deleted file mode 100644 index cbabf71..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLastIndex.d.mts +++ /dev/null @@ -1,33 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.mjs'; - -/** - * Finds the index of the last element in the array that satisfies the predicate. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to search through. - * @param {ListIterateeCustom} [predicate] - The predicate function, partial object, property-value pair, or property name. - * @param {number} [fromIndex] - The index to start searching from. - * @returns {number} The index of the last matching element, or -1 if not found. - * - * @example - * const users = [ - * { user: 'barney', active: true }, - * { user: 'fred', active: false }, - * { user: 'pebbles', active: false } - * ]; - * - * findLastIndex(users, o => o.user === 'pebbles'); - * // => 2 - * - * findLastIndex(users, { user: 'barney', active: true }); - * // => 0 - * - * findLastIndex(users, ['active', false]); - * // => 2 - * - * findLastIndex(users, 'active'); - * // => 0 - */ -declare function findLastIndex(array: ArrayLike | null | undefined, predicate?: ListIterateeCustom, fromIndex?: number): number; - -export { findLastIndex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLastIndex.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLastIndex.d.ts deleted file mode 100644 index e886498..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLastIndex.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.js'; - -/** - * Finds the index of the last element in the array that satisfies the predicate. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to search through. - * @param {ListIterateeCustom} [predicate] - The predicate function, partial object, property-value pair, or property name. - * @param {number} [fromIndex] - The index to start searching from. - * @returns {number} The index of the last matching element, or -1 if not found. - * - * @example - * const users = [ - * { user: 'barney', active: true }, - * { user: 'fred', active: false }, - * { user: 'pebbles', active: false } - * ]; - * - * findLastIndex(users, o => o.user === 'pebbles'); - * // => 2 - * - * findLastIndex(users, { user: 'barney', active: true }); - * // => 0 - * - * findLastIndex(users, ['active', false]); - * // => 2 - * - * findLastIndex(users, 'active'); - * // => 0 - */ -declare function findLastIndex(array: ArrayLike | null | undefined, predicate?: ListIterateeCustom, fromIndex?: number): number; - -export { findLastIndex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLastIndex.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLastIndex.js deleted file mode 100644 index f9949bf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLastIndex.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const toArray = require('../_internal/toArray.js'); -const property = require('../object/property.js'); -const matches = require('../predicate/matches.js'); -const matchesProperty = require('../predicate/matchesProperty.js'); - -function findLastIndex(arr, doesMatch = identity.identity, fromIndex = arr ? arr.length - 1 : 0) { - if (!arr) { - return -1; - } - if (fromIndex < 0) { - fromIndex = Math.max(arr.length + fromIndex, 0); - } - else { - fromIndex = Math.min(fromIndex, arr.length - 1); - } - const subArray = toArray.toArray(arr).slice(0, fromIndex + 1); - switch (typeof doesMatch) { - case 'function': { - return subArray.findLastIndex(doesMatch); - } - case 'object': { - if (Array.isArray(doesMatch) && doesMatch.length === 2) { - const key = doesMatch[0]; - const value = doesMatch[1]; - return subArray.findLastIndex(matchesProperty.matchesProperty(key, value)); - } - else { - return subArray.findLastIndex(matches.matches(doesMatch)); - } - } - case 'number': - case 'symbol': - case 'string': { - return subArray.findLastIndex(property.property(doesMatch)); - } - } -} - -exports.findLastIndex = findLastIndex; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLastIndex.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLastIndex.mjs deleted file mode 100644 index 5a4f7f6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/findLastIndex.mjs +++ /dev/null @@ -1,40 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { toArray } from '../_internal/toArray.mjs'; -import { property } from '../object/property.mjs'; -import { matches } from '../predicate/matches.mjs'; -import { matchesProperty } from '../predicate/matchesProperty.mjs'; - -function findLastIndex(arr, doesMatch = identity, fromIndex = arr ? arr.length - 1 : 0) { - if (!arr) { - return -1; - } - if (fromIndex < 0) { - fromIndex = Math.max(arr.length + fromIndex, 0); - } - else { - fromIndex = Math.min(fromIndex, arr.length - 1); - } - const subArray = toArray(arr).slice(0, fromIndex + 1); - switch (typeof doesMatch) { - case 'function': { - return subArray.findLastIndex(doesMatch); - } - case 'object': { - if (Array.isArray(doesMatch) && doesMatch.length === 2) { - const key = doesMatch[0]; - const value = doesMatch[1]; - return subArray.findLastIndex(matchesProperty(key, value)); - } - else { - return subArray.findLastIndex(matches(doesMatch)); - } - } - case 'number': - case 'symbol': - case 'string': { - return subArray.findLastIndex(property(doesMatch)); - } - } -} - -export { findLastIndex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMap.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMap.d.mts deleted file mode 100644 index 531f6b3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMap.d.mts +++ /dev/null @@ -1,93 +0,0 @@ -import { ListIterator } from '../_internal/ListIterator.mjs'; -import { Many } from '../_internal/Many.mjs'; -import { ObjectIterator } from '../_internal/ObjectIterator.mjs'; - -/** - * Creates a flattened array of values by running each element in collection through iteratee and flattening the mapped results. - * - * @template T - * @param {Record> | Record> | null | undefined} collection - The collection to iterate over. - * @returns {T[]} Returns the new flattened array. - * - * @example - * const obj = { a: [1, 2], b: [3, 4] }; - * flatMap(obj); - * // => [1, 2, 3, 4] - */ -declare function flatMap(collection: Record> | Record> | null | undefined): T[]; -/** - * Creates a flattened array of values by running each element in collection through iteratee and flattening the mapped results. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @returns {any[]} Returns the new flattened array. - * - * @example - * flatMap({ a: 1, b: 2 }); - * // => [1, 2] - */ -declare function flatMap(collection: object | null | undefined): any[]; -/** - * Creates a flattened array of values by running each element in collection through iteratee and flattening the mapped results. - * - * @template T, R - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {ListIterator>} iteratee - The function invoked per iteration. - * @returns {R[]} Returns the new flattened array. - * - * @example - * function duplicate(n) { - * return [n, n]; - * } - * - * flatMap([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ -declare function flatMap(collection: ArrayLike | null | undefined, iteratee: ListIterator>): R[]; -/** - * Creates a flattened array of values by running each element in collection through iteratee and flattening the mapped results. - * - * @template T, R - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ObjectIterator>} iteratee - The function invoked per iteration. - * @returns {R[]} Returns the new flattened array. - * - * @example - * const obj = { a: 1, b: 2 }; - * flatMap(obj, (value, key) => [key, value]); - * // => ['a', 1, 'b', 2] - */ -declare function flatMap(collection: T | null | undefined, iteratee: ObjectIterator>): R[]; -/** - * Creates a flattened array of values by running each element in collection through iteratee and flattening the mapped results. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {string} iteratee - The property name to use as iteratee. - * @returns {any[]} Returns the new flattened array. - * - * @example - * const users = [ - * { user: 'barney', hobbies: ['hiking', 'coding'] }, - * { user: 'fred', hobbies: ['reading'] } - * ]; - * flatMap(users, 'hobbies'); - * // => ['hiking', 'coding', 'reading'] - */ -declare function flatMap(collection: object | null | undefined, iteratee: string): any[]; -/** - * Creates a flattened array of values by running each element in collection through iteratee and flattening the mapped results. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {object} iteratee - The object properties to match. - * @returns {boolean[]} Returns the new flattened array. - * - * @example - * const users = [ - * { user: 'barney', age: 36, active: true }, - * { user: 'fred', age: 40, active: false } - * ]; - * flatMap(users, { active: false }); - * // => [false] - */ -declare function flatMap(collection: object | null | undefined, iteratee: object): boolean[]; - -export { flatMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMap.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMap.d.ts deleted file mode 100644 index 0c435c0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMap.d.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { ListIterator } from '../_internal/ListIterator.js'; -import { Many } from '../_internal/Many.js'; -import { ObjectIterator } from '../_internal/ObjectIterator.js'; - -/** - * Creates a flattened array of values by running each element in collection through iteratee and flattening the mapped results. - * - * @template T - * @param {Record> | Record> | null | undefined} collection - The collection to iterate over. - * @returns {T[]} Returns the new flattened array. - * - * @example - * const obj = { a: [1, 2], b: [3, 4] }; - * flatMap(obj); - * // => [1, 2, 3, 4] - */ -declare function flatMap(collection: Record> | Record> | null | undefined): T[]; -/** - * Creates a flattened array of values by running each element in collection through iteratee and flattening the mapped results. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @returns {any[]} Returns the new flattened array. - * - * @example - * flatMap({ a: 1, b: 2 }); - * // => [1, 2] - */ -declare function flatMap(collection: object | null | undefined): any[]; -/** - * Creates a flattened array of values by running each element in collection through iteratee and flattening the mapped results. - * - * @template T, R - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {ListIterator>} iteratee - The function invoked per iteration. - * @returns {R[]} Returns the new flattened array. - * - * @example - * function duplicate(n) { - * return [n, n]; - * } - * - * flatMap([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ -declare function flatMap(collection: ArrayLike | null | undefined, iteratee: ListIterator>): R[]; -/** - * Creates a flattened array of values by running each element in collection through iteratee and flattening the mapped results. - * - * @template T, R - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ObjectIterator>} iteratee - The function invoked per iteration. - * @returns {R[]} Returns the new flattened array. - * - * @example - * const obj = { a: 1, b: 2 }; - * flatMap(obj, (value, key) => [key, value]); - * // => ['a', 1, 'b', 2] - */ -declare function flatMap(collection: T | null | undefined, iteratee: ObjectIterator>): R[]; -/** - * Creates a flattened array of values by running each element in collection through iteratee and flattening the mapped results. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {string} iteratee - The property name to use as iteratee. - * @returns {any[]} Returns the new flattened array. - * - * @example - * const users = [ - * { user: 'barney', hobbies: ['hiking', 'coding'] }, - * { user: 'fred', hobbies: ['reading'] } - * ]; - * flatMap(users, 'hobbies'); - * // => ['hiking', 'coding', 'reading'] - */ -declare function flatMap(collection: object | null | undefined, iteratee: string): any[]; -/** - * Creates a flattened array of values by running each element in collection through iteratee and flattening the mapped results. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {object} iteratee - The object properties to match. - * @returns {boolean[]} Returns the new flattened array. - * - * @example - * const users = [ - * { user: 'barney', age: 36, active: true }, - * { user: 'fred', age: 40, active: false } - * ]; - * flatMap(users, { active: false }); - * // => [false] - */ -declare function flatMap(collection: object | null | undefined, iteratee: object): boolean[]; - -export { flatMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMap.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMap.js deleted file mode 100644 index 42fb511..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMap.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flattenDepth = require('./flattenDepth.js'); -const map = require('./map.js'); -const isNil = require('../../predicate/isNil.js'); - -function flatMap(collection, iteratee) { - if (isNil.isNil(collection)) { - return []; - } - const mapped = isNil.isNil(iteratee) ? map.map(collection) : map.map(collection, iteratee); - return flattenDepth.flattenDepth(mapped, 1); -} - -exports.flatMap = flatMap; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMap.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMap.mjs deleted file mode 100644 index 1275f0a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMap.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import { flattenDepth } from './flattenDepth.mjs'; -import { map } from './map.mjs'; -import { isNil } from '../../predicate/isNil.mjs'; - -function flatMap(collection, iteratee) { - if (isNil(collection)) { - return []; - } - const mapped = isNil(iteratee) ? map(collection) : map(collection, iteratee); - return flattenDepth(mapped, 1); -} - -export { flatMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDeep.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDeep.d.mts deleted file mode 100644 index 8ef3d56..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDeep.d.mts +++ /dev/null @@ -1,82 +0,0 @@ -import { ListIterator } from '../_internal/ListIterator.mjs'; -import { ListOfRecursiveArraysOrValues } from '../_internal/ListOfRecursiveArraysOrValues.mjs'; -import { ObjectIterator } from '../_internal/ObjectIterator.mjs'; - -/** - * Creates a flattened array of values by running each element through iteratee and recursively flattening the mapped results. - * - * @template T - * @param {Record | T> | Record | T> | null | undefined} collection - The collection to iterate over. - * @returns {T[]} Returns the new deeply flattened array. - * - * @example - * const obj = { a: [[1, 2]], b: [[[3]]] }; - * flatMapDeep(obj); - * // => [1, 2, 3] - */ -declare function flatMapDeep(collection: Record | T> | Record | T> | null | undefined): T[]; -/** - * Creates a flattened array of values by running each element through iteratee and recursively flattening the mapped results. - * - * @template T, R - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {ListIterator | R>} iteratee - The function invoked per iteration. - * @returns {R[]} Returns the new deeply flattened array. - * - * @example - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * flatMapDeep([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ -declare function flatMapDeep(collection: ArrayLike | null | undefined, iteratee: ListIterator | R>): R[]; -/** - * Creates a flattened array of values by running each element through iteratee and recursively flattening the mapped results. - * - * @template T, R - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ObjectIterator | R>} iteratee - The function invoked per iteration. - * @returns {R[]} Returns the new deeply flattened array. - * - * @example - * const obj = { a: 1, b: 2 }; - * flatMapDeep(obj, (value, key) => [[[key, value]]]); - * // => ['a', 1, 'b', 2] - */ -declare function flatMapDeep(collection: T | null | undefined, iteratee: ObjectIterator | R>): R[]; -/** - * Creates a flattened array of values by running each element through iteratee and recursively flattening the mapped results. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {string} iteratee - The property name to use as iteratee. - * @returns {any[]} Returns the new deeply flattened array. - * - * @example - * const users = [ - * { user: 'barney', hobbies: [['hiking', 'coding']] }, - * { user: 'fred', hobbies: [['reading']] } - * ]; - * flatMapDeep(users, 'hobbies'); - * // => ['hiking', 'coding', 'reading'] - */ -declare function flatMapDeep(collection: object | null | undefined, iteratee: string): any[]; -/** - * Creates a flattened array of values by running each element through iteratee and recursively flattening the mapped results. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {object} iteratee - The object properties to match. - * @returns {boolean[]} Returns the new deeply flattened array. - * - * @example - * const users = [ - * { user: 'barney', active: [true, false] }, - * { user: 'fred', active: [false] } - * ]; - * flatMapDeep(users, { active: [false] }); - * // => [false] - */ -declare function flatMapDeep(collection: object | null | undefined, iteratee: object): boolean[]; - -export { flatMapDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDeep.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDeep.d.ts deleted file mode 100644 index 6dc6921..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDeep.d.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { ListIterator } from '../_internal/ListIterator.js'; -import { ListOfRecursiveArraysOrValues } from '../_internal/ListOfRecursiveArraysOrValues.js'; -import { ObjectIterator } from '../_internal/ObjectIterator.js'; - -/** - * Creates a flattened array of values by running each element through iteratee and recursively flattening the mapped results. - * - * @template T - * @param {Record | T> | Record | T> | null | undefined} collection - The collection to iterate over. - * @returns {T[]} Returns the new deeply flattened array. - * - * @example - * const obj = { a: [[1, 2]], b: [[[3]]] }; - * flatMapDeep(obj); - * // => [1, 2, 3] - */ -declare function flatMapDeep(collection: Record | T> | Record | T> | null | undefined): T[]; -/** - * Creates a flattened array of values by running each element through iteratee and recursively flattening the mapped results. - * - * @template T, R - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {ListIterator | R>} iteratee - The function invoked per iteration. - * @returns {R[]} Returns the new deeply flattened array. - * - * @example - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * flatMapDeep([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ -declare function flatMapDeep(collection: ArrayLike | null | undefined, iteratee: ListIterator | R>): R[]; -/** - * Creates a flattened array of values by running each element through iteratee and recursively flattening the mapped results. - * - * @template T, R - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ObjectIterator | R>} iteratee - The function invoked per iteration. - * @returns {R[]} Returns the new deeply flattened array. - * - * @example - * const obj = { a: 1, b: 2 }; - * flatMapDeep(obj, (value, key) => [[[key, value]]]); - * // => ['a', 1, 'b', 2] - */ -declare function flatMapDeep(collection: T | null | undefined, iteratee: ObjectIterator | R>): R[]; -/** - * Creates a flattened array of values by running each element through iteratee and recursively flattening the mapped results. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {string} iteratee - The property name to use as iteratee. - * @returns {any[]} Returns the new deeply flattened array. - * - * @example - * const users = [ - * { user: 'barney', hobbies: [['hiking', 'coding']] }, - * { user: 'fred', hobbies: [['reading']] } - * ]; - * flatMapDeep(users, 'hobbies'); - * // => ['hiking', 'coding', 'reading'] - */ -declare function flatMapDeep(collection: object | null | undefined, iteratee: string): any[]; -/** - * Creates a flattened array of values by running each element through iteratee and recursively flattening the mapped results. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {object} iteratee - The object properties to match. - * @returns {boolean[]} Returns the new deeply flattened array. - * - * @example - * const users = [ - * { user: 'barney', active: [true, false] }, - * { user: 'fred', active: [false] } - * ]; - * flatMapDeep(users, { active: [false] }); - * // => [false] - */ -declare function flatMapDeep(collection: object | null | undefined, iteratee: object): boolean[]; - -export { flatMapDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDeep.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDeep.js deleted file mode 100644 index 55ac2e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDeep.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flatMapDepth = require('./flatMapDepth.js'); - -function flatMapDeep(collection, iteratee) { - return flatMapDepth.flatMapDepth(collection, iteratee, Infinity); -} - -exports.flatMapDeep = flatMapDeep; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDeep.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDeep.mjs deleted file mode 100644 index 55e88b9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDeep.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { flatMapDepth } from './flatMapDepth.mjs'; - -function flatMapDeep(collection, iteratee) { - return flatMapDepth(collection, iteratee, Infinity); -} - -export { flatMapDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDepth.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDepth.d.mts deleted file mode 100644 index ae73aa0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDepth.d.mts +++ /dev/null @@ -1,86 +0,0 @@ -import { ListIterator } from '../_internal/ListIterator.mjs'; -import { ListOfRecursiveArraysOrValues } from '../_internal/ListOfRecursiveArraysOrValues.mjs'; -import { ObjectIterator } from '../_internal/ObjectIterator.mjs'; - -/** - * Creates a flattened array of values by running each element through iteratee and flattening the mapped results up to depth times. - * - * @template T - * @param {Record | T> | Record | T> | null | undefined} collection - The collection to iterate over. - * @returns {T[]} Returns the new flattened array. - * - * @example - * const obj = { a: [[1, 2]], b: [[[3]]] }; - * flatMapDepth(obj); - * // => [1, 2, [3]] - */ -declare function flatMapDepth(collection: Record | T> | Record | T> | null | undefined): T[]; -/** - * Creates a flattened array of values by running each element through iteratee and flattening the mapped results up to depth times. - * - * @template T, R - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {ListIterator | R>} iteratee - The function invoked per iteration. - * @param {number} [depth=1] - The maximum recursion depth. - * @returns {R[]} Returns the new flattened array. - * - * @example - * function duplicate(n) { - * return [[n, n]]; - * } - * - * flatMapDepth([1, 2], duplicate, 2); - * // => [1, 1, 2, 2] - */ -declare function flatMapDepth(collection: ArrayLike | null | undefined, iteratee: ListIterator | R>, depth?: number): R[]; -/** - * Creates a flattened array of values by running each element through iteratee and flattening the mapped results up to depth times. - * - * @template T, R - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ObjectIterator | R>} iteratee - The function invoked per iteration. - * @param {number} [depth=1] - The maximum recursion depth. - * @returns {R[]} Returns the new flattened array. - * - * @example - * const obj = { a: 1, b: 2 }; - * flatMapDepth(obj, (value, key) => [[key, value]], 2); - * // => ['a', 1, 'b', 2] - */ -declare function flatMapDepth(collection: T | null | undefined, iteratee: ObjectIterator | R>, depth?: number): R[]; -/** - * Creates a flattened array of values by running each element through iteratee and flattening the mapped results up to depth times. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {string} iteratee - The property name to use as iteratee. - * @param {number} [depth=1] - The maximum recursion depth. - * @returns {any[]} Returns the new flattened array. - * - * @example - * const users = [ - * { user: 'barney', hobbies: [['hiking'], ['coding']] }, - * { user: 'fred', hobbies: [['reading']] } - * ]; - * flatMapDepth(users, 'hobbies', 2); - * // => ['hiking', 'coding', 'reading'] - */ -declare function flatMapDepth(collection: object | null | undefined, iteratee: string, depth?: number): any[]; -/** - * Creates a flattened array of values by running each element through iteratee and flattening the mapped results up to depth times. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {object} iteratee - The object properties to match. - * @param {number} [depth=1] - The maximum recursion depth. - * @returns {boolean[]} Returns the new flattened array. - * - * @example - * const users = [ - * { user: 'barney', active: [[true], [false]] }, - * { user: 'fred', active: [[false]] } - * ]; - * flatMapDepth(users, { active: [[false]] }); - * // => [false] - */ -declare function flatMapDepth(collection: object | null | undefined, iteratee: object, depth?: number): boolean[]; - -export { flatMapDepth }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDepth.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDepth.d.ts deleted file mode 100644 index f590567..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDepth.d.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { ListIterator } from '../_internal/ListIterator.js'; -import { ListOfRecursiveArraysOrValues } from '../_internal/ListOfRecursiveArraysOrValues.js'; -import { ObjectIterator } from '../_internal/ObjectIterator.js'; - -/** - * Creates a flattened array of values by running each element through iteratee and flattening the mapped results up to depth times. - * - * @template T - * @param {Record | T> | Record | T> | null | undefined} collection - The collection to iterate over. - * @returns {T[]} Returns the new flattened array. - * - * @example - * const obj = { a: [[1, 2]], b: [[[3]]] }; - * flatMapDepth(obj); - * // => [1, 2, [3]] - */ -declare function flatMapDepth(collection: Record | T> | Record | T> | null | undefined): T[]; -/** - * Creates a flattened array of values by running each element through iteratee and flattening the mapped results up to depth times. - * - * @template T, R - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {ListIterator | R>} iteratee - The function invoked per iteration. - * @param {number} [depth=1] - The maximum recursion depth. - * @returns {R[]} Returns the new flattened array. - * - * @example - * function duplicate(n) { - * return [[n, n]]; - * } - * - * flatMapDepth([1, 2], duplicate, 2); - * // => [1, 1, 2, 2] - */ -declare function flatMapDepth(collection: ArrayLike | null | undefined, iteratee: ListIterator | R>, depth?: number): R[]; -/** - * Creates a flattened array of values by running each element through iteratee and flattening the mapped results up to depth times. - * - * @template T, R - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ObjectIterator | R>} iteratee - The function invoked per iteration. - * @param {number} [depth=1] - The maximum recursion depth. - * @returns {R[]} Returns the new flattened array. - * - * @example - * const obj = { a: 1, b: 2 }; - * flatMapDepth(obj, (value, key) => [[key, value]], 2); - * // => ['a', 1, 'b', 2] - */ -declare function flatMapDepth(collection: T | null | undefined, iteratee: ObjectIterator | R>, depth?: number): R[]; -/** - * Creates a flattened array of values by running each element through iteratee and flattening the mapped results up to depth times. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {string} iteratee - The property name to use as iteratee. - * @param {number} [depth=1] - The maximum recursion depth. - * @returns {any[]} Returns the new flattened array. - * - * @example - * const users = [ - * { user: 'barney', hobbies: [['hiking'], ['coding']] }, - * { user: 'fred', hobbies: [['reading']] } - * ]; - * flatMapDepth(users, 'hobbies', 2); - * // => ['hiking', 'coding', 'reading'] - */ -declare function flatMapDepth(collection: object | null | undefined, iteratee: string, depth?: number): any[]; -/** - * Creates a flattened array of values by running each element through iteratee and flattening the mapped results up to depth times. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {object} iteratee - The object properties to match. - * @param {number} [depth=1] - The maximum recursion depth. - * @returns {boolean[]} Returns the new flattened array. - * - * @example - * const users = [ - * { user: 'barney', active: [[true], [false]] }, - * { user: 'fred', active: [[false]] } - * ]; - * flatMapDepth(users, { active: [[false]] }); - * // => [false] - */ -declare function flatMapDepth(collection: object | null | undefined, iteratee: object, depth?: number): boolean[]; - -export { flatMapDepth }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDepth.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDepth.js deleted file mode 100644 index 0e854eb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDepth.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flatten = require('./flatten.js'); -const map = require('./map.js'); -const identity = require('../../function/identity.js'); -const iteratee = require('../util/iteratee.js'); - -function flatMapDepth(collection, iteratee$1 = identity.identity, depth = 1) { - if (collection == null) { - return []; - } - const iterateeFn = iteratee.iteratee(iteratee$1); - const mapped = map.map(collection, iterateeFn); - return flatten.flatten(mapped, depth); -} - -exports.flatMapDepth = flatMapDepth; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDepth.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDepth.mjs deleted file mode 100644 index 0244082..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatMapDepth.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import { flatten } from './flatten.mjs'; -import { map } from './map.mjs'; -import { identity } from '../../function/identity.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function flatMapDepth(collection, iteratee$1 = identity, depth = 1) { - if (collection == null) { - return []; - } - const iterateeFn = iteratee(iteratee$1); - const mapped = map(collection, iterateeFn); - return flatten(mapped, depth); -} - -export { flatMapDepth }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatten.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatten.d.mts deleted file mode 100644 index 1ff4c12..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatten.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Flattens array up to depth times. - * - * @template T - * @param {ArrayLike | null | undefined} value - The array to flatten. - * @param {number} depth - The maximum recursion depth. - * @returns {any[]} Returns the new flattened array. - * - * @example - * flatten([1, [2, [3, [4]], 5]], 2); - * // => [1, 2, 3, [4], 5] - */ -declare function flatten(value: ArrayLike | null | undefined): T[]; - -export { flatten }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatten.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatten.d.ts deleted file mode 100644 index 1ff4c12..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatten.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Flattens array up to depth times. - * - * @template T - * @param {ArrayLike | null | undefined} value - The array to flatten. - * @param {number} depth - The maximum recursion depth. - * @returns {any[]} Returns the new flattened array. - * - * @example - * flatten([1, [2, [3, [4]], 5]], 2); - * // => [1, 2, 3, [4], 5] - */ -declare function flatten(value: ArrayLike | null | undefined): T[]; - -export { flatten }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatten.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatten.js deleted file mode 100644 index 10668a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatten.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArrayLike = require('../predicate/isArrayLike.js'); - -function flatten(value, depth = 1) { - const result = []; - const flooredDepth = Math.floor(depth); - if (!isArrayLike.isArrayLike(value)) { - return result; - } - const recursive = (arr, currentDepth) => { - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - if (currentDepth < flooredDepth && - (Array.isArray(item) || - Boolean(item?.[Symbol.isConcatSpreadable]) || - (item !== null && typeof item === 'object' && Object.prototype.toString.call(item) === '[object Arguments]'))) { - if (Array.isArray(item)) { - recursive(item, currentDepth + 1); - } - else { - recursive(Array.from(item), currentDepth + 1); - } - } - else { - result.push(item); - } - } - }; - recursive(Array.from(value), 0); - return result; -} - -exports.flatten = flatten; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatten.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatten.mjs deleted file mode 100644 index 243d21e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flatten.mjs +++ /dev/null @@ -1,32 +0,0 @@ -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function flatten(value, depth = 1) { - const result = []; - const flooredDepth = Math.floor(depth); - if (!isArrayLike(value)) { - return result; - } - const recursive = (arr, currentDepth) => { - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - if (currentDepth < flooredDepth && - (Array.isArray(item) || - Boolean(item?.[Symbol.isConcatSpreadable]) || - (item !== null && typeof item === 'object' && Object.prototype.toString.call(item) === '[object Arguments]'))) { - if (Array.isArray(item)) { - recursive(item, currentDepth + 1); - } - else { - recursive(Array.from(item), currentDepth + 1); - } - } - else { - result.push(item); - } - } - }; - recursive(Array.from(value), 0); - return result; -} - -export { flatten }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDeep.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDeep.d.mts deleted file mode 100644 index f50f887..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDeep.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -import { ListOfRecursiveArraysOrValues } from '../_internal/ListOfRecursiveArraysOrValues.mjs'; - -/** - * Recursively flattens array. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to flatten. - * @returns {Array>} Returns the new flattened array. - * - * @example - * flattenDeep([1, [2, [3, [4]], 5]]); - * // => [1, 2, 3, 4, 5] - */ -declare function flattenDeep(value: ListOfRecursiveArraysOrValues | null | undefined): Array ? never : T>; - -export { flattenDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDeep.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDeep.d.ts deleted file mode 100644 index bf1db0d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDeep.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ListOfRecursiveArraysOrValues } from '../_internal/ListOfRecursiveArraysOrValues.js'; - -/** - * Recursively flattens array. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to flatten. - * @returns {Array>} Returns the new flattened array. - * - * @example - * flattenDeep([1, [2, [3, [4]], 5]]); - * // => [1, 2, 3, 4, 5] - */ -declare function flattenDeep(value: ListOfRecursiveArraysOrValues | null | undefined): Array ? never : T>; - -export { flattenDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDeep.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDeep.js deleted file mode 100644 index 3727b21..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDeep.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flattenDepth = require('./flattenDepth.js'); - -function flattenDeep(value) { - return flattenDepth.flattenDepth(value, Infinity); -} - -exports.flattenDeep = flattenDeep; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDeep.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDeep.mjs deleted file mode 100644 index 5789b16..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDeep.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { flattenDepth } from './flattenDepth.mjs'; - -function flattenDeep(value) { - return flattenDepth(value, Infinity); -} - -export { flattenDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDepth.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDepth.d.mts deleted file mode 100644 index 3301bb1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDepth.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -import { ListOfRecursiveArraysOrValues } from '../_internal/ListOfRecursiveArraysOrValues.mjs'; - -/** - * Recursively flattens array up to depth times. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to flatten. - * @param {number} [depth=1] - The maximum recursion depth. - * @returns {T[]} Returns the new flattened array. - * - * @example - * const array = [1, [2, [3, [4]], 5]]; - * - * flattenDepth(array, 1); - * // => [1, 2, [3, [4]], 5] - * - * flattenDepth(array, 2); - * // => [1, 2, 3, [4], 5] - */ -declare function flattenDepth(array: ListOfRecursiveArraysOrValues | null | undefined, depth?: number): T[]; - -export { flattenDepth }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDepth.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDepth.d.ts deleted file mode 100644 index 3285e63..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDepth.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ListOfRecursiveArraysOrValues } from '../_internal/ListOfRecursiveArraysOrValues.js'; - -/** - * Recursively flattens array up to depth times. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to flatten. - * @param {number} [depth=1] - The maximum recursion depth. - * @returns {T[]} Returns the new flattened array. - * - * @example - * const array = [1, [2, [3, [4]], 5]]; - * - * flattenDepth(array, 1); - * // => [1, 2, [3, [4]], 5] - * - * flattenDepth(array, 2); - * // => [1, 2, 3, [4], 5] - */ -declare function flattenDepth(array: ListOfRecursiveArraysOrValues | null | undefined, depth?: number): T[]; - -export { flattenDepth }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDepth.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDepth.js deleted file mode 100644 index 4848f71..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDepth.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flatten = require('./flatten.js'); - -function flattenDepth(array, depth = 1) { - return flatten.flatten(array, depth); -} - -exports.flattenDepth = flattenDepth; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDepth.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDepth.mjs deleted file mode 100644 index ea2c097..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/flattenDepth.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { flatten } from './flatten.mjs'; - -function flattenDepth(array, depth = 1) { - return flatten(array, depth); -} - -export { flattenDepth }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEach.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEach.d.mts deleted file mode 100644 index e2ef3d9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEach.d.mts +++ /dev/null @@ -1,110 +0,0 @@ -import { ArrayIterator } from '../_internal/ArrayIterator.mjs'; -import { ListIterator } from '../_internal/ListIterator.mjs'; -import { ObjectIterator } from '../_internal/ObjectIterator.mjs'; -import { StringIterator } from '../_internal/StringIterator.mjs'; - -/** - * Iterates over elements of array and invokes iteratee for each element. - * - * @template T - * @param {T[]} collection - The array to iterate over. - * @param {ArrayIterator} [iteratee] - The function invoked per iteration. - * @returns {T[]} Returns array. - * - * @example - * forEach([1, 2], value => console.log(value)); - * // => Logs `1` then `2`. - */ -declare function forEach(collection: T[], iteratee?: ArrayIterator): T[]; -/** - * Iterates over characters of string and invokes iteratee for each character. - * - * @param {string} collection - The string to iterate over. - * @param {StringIterator} [iteratee] - The function invoked per iteration. - * @returns {string} Returns string. - * - * @example - * forEach('abc', char => console.log(char)); - * // => Logs 'a', 'b', then 'c'. - */ -declare function forEach(collection: string, iteratee?: StringIterator): string; -/** - * Iterates over elements of collection and invokes iteratee for each element. - * - * @template T - * @param {ArrayLike} collection - The collection to iterate over. - * @param {ListIterator} [iteratee] - The function invoked per iteration. - * @returns {ArrayLike} Returns collection. - * - * @example - * forEach({ 0: 'a', 1: 'b', length: 2 }, value => console.log(value)); - * // => Logs 'a' then 'b'. - */ -declare function forEach(collection: ArrayLike, iteratee?: ListIterator): ArrayLike; -/** - * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property. - * - * @template T - * @param {T} collection - The object to iterate over. - * @param {ObjectIterator} [iteratee] - The function invoked per iteration. - * @returns {T} Returns object. - * - * @example - * forEach({ a: 1, b: 2 }, (value, key) => console.log(key)); - * // => Logs 'a' then 'b'. - */ -declare function forEach(collection: T, iteratee?: ObjectIterator): T; -/** - * Iterates over elements of array and invokes iteratee for each element. - * - * @template T, U - * @param {U & (T[] | null | undefined)} collection - The array to iterate over. - * @param {ArrayIterator} [iteratee] - The function invoked per iteration. - * @returns {U} Returns the array. - * - * @example - * forEach([1, 2], value => console.log(value)); - * // => Logs `1` then `2`. - */ -declare function forEach(collection: U & (T[] | null | undefined), iteratee?: ArrayIterator): U; -/** - * Iterates over characters of string and invokes iteratee for each character. - * - * @template T - * @param {T} collection - The string to iterate over. - * @param {StringIterator} [iteratee] - The function invoked per iteration. - * @returns {T} Returns the string. - * - * @example - * forEach('abc', char => console.log(char)); - * // => Logs 'a', 'b', then 'c'. - */ -declare function forEach(collection: T, iteratee?: StringIterator): T; -/** - * Iterates over elements of collection and invokes iteratee for each element. - * - * @template T, L - * @param {L & (ArrayLike | null | undefined)} collection - The collection to iterate over. - * @param {ListIterator} [iteratee] - The function invoked per iteration. - * @returns {L} Returns the collection. - * - * @example - * forEach({ 0: 'a', 1: 'b', length: 2 }, value => console.log(value)); - * // => Logs 'a' then 'b'. - */ -declare function forEach | null | undefined>(collection: L & (ArrayLike | null | undefined), iteratee?: ListIterator): L; -/** - * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property. - * - * @template T - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ObjectIterator} [iteratee] - The function invoked per iteration. - * @returns {T | null | undefined} Returns the object. - * - * @example - * forEach({ a: 1, b: 2 }, (value, key) => console.log(key)); - * // => Logs 'a' then 'b'. - */ -declare function forEach(collection: T | null | undefined, iteratee?: ObjectIterator): T | null | undefined; - -export { forEach }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEach.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEach.d.ts deleted file mode 100644 index d8e3cae..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEach.d.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { ArrayIterator } from '../_internal/ArrayIterator.js'; -import { ListIterator } from '../_internal/ListIterator.js'; -import { ObjectIterator } from '../_internal/ObjectIterator.js'; -import { StringIterator } from '../_internal/StringIterator.js'; - -/** - * Iterates over elements of array and invokes iteratee for each element. - * - * @template T - * @param {T[]} collection - The array to iterate over. - * @param {ArrayIterator} [iteratee] - The function invoked per iteration. - * @returns {T[]} Returns array. - * - * @example - * forEach([1, 2], value => console.log(value)); - * // => Logs `1` then `2`. - */ -declare function forEach(collection: T[], iteratee?: ArrayIterator): T[]; -/** - * Iterates over characters of string and invokes iteratee for each character. - * - * @param {string} collection - The string to iterate over. - * @param {StringIterator} [iteratee] - The function invoked per iteration. - * @returns {string} Returns string. - * - * @example - * forEach('abc', char => console.log(char)); - * // => Logs 'a', 'b', then 'c'. - */ -declare function forEach(collection: string, iteratee?: StringIterator): string; -/** - * Iterates over elements of collection and invokes iteratee for each element. - * - * @template T - * @param {ArrayLike} collection - The collection to iterate over. - * @param {ListIterator} [iteratee] - The function invoked per iteration. - * @returns {ArrayLike} Returns collection. - * - * @example - * forEach({ 0: 'a', 1: 'b', length: 2 }, value => console.log(value)); - * // => Logs 'a' then 'b'. - */ -declare function forEach(collection: ArrayLike, iteratee?: ListIterator): ArrayLike; -/** - * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property. - * - * @template T - * @param {T} collection - The object to iterate over. - * @param {ObjectIterator} [iteratee] - The function invoked per iteration. - * @returns {T} Returns object. - * - * @example - * forEach({ a: 1, b: 2 }, (value, key) => console.log(key)); - * // => Logs 'a' then 'b'. - */ -declare function forEach(collection: T, iteratee?: ObjectIterator): T; -/** - * Iterates over elements of array and invokes iteratee for each element. - * - * @template T, U - * @param {U & (T[] | null | undefined)} collection - The array to iterate over. - * @param {ArrayIterator} [iteratee] - The function invoked per iteration. - * @returns {U} Returns the array. - * - * @example - * forEach([1, 2], value => console.log(value)); - * // => Logs `1` then `2`. - */ -declare function forEach(collection: U & (T[] | null | undefined), iteratee?: ArrayIterator): U; -/** - * Iterates over characters of string and invokes iteratee for each character. - * - * @template T - * @param {T} collection - The string to iterate over. - * @param {StringIterator} [iteratee] - The function invoked per iteration. - * @returns {T} Returns the string. - * - * @example - * forEach('abc', char => console.log(char)); - * // => Logs 'a', 'b', then 'c'. - */ -declare function forEach(collection: T, iteratee?: StringIterator): T; -/** - * Iterates over elements of collection and invokes iteratee for each element. - * - * @template T, L - * @param {L & (ArrayLike | null | undefined)} collection - The collection to iterate over. - * @param {ListIterator} [iteratee] - The function invoked per iteration. - * @returns {L} Returns the collection. - * - * @example - * forEach({ 0: 'a', 1: 'b', length: 2 }, value => console.log(value)); - * // => Logs 'a' then 'b'. - */ -declare function forEach | null | undefined>(collection: L & (ArrayLike | null | undefined), iteratee?: ListIterator): L; -/** - * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property. - * - * @template T - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ObjectIterator} [iteratee] - The function invoked per iteration. - * @returns {T | null | undefined} Returns the object. - * - * @example - * forEach({ a: 1, b: 2 }, (value, key) => console.log(key)); - * // => Logs 'a' then 'b'. - */ -declare function forEach(collection: T | null | undefined, iteratee?: ObjectIterator): T | null | undefined; - -export { forEach }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEach.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEach.js deleted file mode 100644 index ae954d1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEach.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const range = require('../../math/range.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function forEach(collection, callback = identity.identity) { - if (!collection) { - return collection; - } - const keys = isArrayLike.isArrayLike(collection) || Array.isArray(collection) ? range.range(0, collection.length) : Object.keys(collection); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = collection[key]; - const result = callback(value, key, collection); - if (result === false) { - break; - } - } - return collection; -} - -exports.forEach = forEach; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEach.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEach.mjs deleted file mode 100644 index e2713cd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEach.mjs +++ /dev/null @@ -1,21 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { range } from '../../math/range.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function forEach(collection, callback = identity) { - if (!collection) { - return collection; - } - const keys = isArrayLike(collection) || Array.isArray(collection) ? range(0, collection.length) : Object.keys(collection); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = collection[key]; - const result = callback(value, key, collection); - if (result === false) { - break; - } - } - return collection; -} - -export { forEach }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEachRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEachRight.d.mts deleted file mode 100644 index 6be227e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEachRight.d.mts +++ /dev/null @@ -1,110 +0,0 @@ -import { ArrayIterator } from '../_internal/ArrayIterator.mjs'; -import { ListIterator } from '../_internal/ListIterator.mjs'; -import { ObjectIterator } from '../_internal/ObjectIterator.mjs'; -import { StringIterator } from '../_internal/StringIterator.mjs'; - -/** - * Iterates over elements of array from right to left and invokes iteratee for each element. - * - * @template T - * @param {T[]} collection - The array to iterate over. - * @param {ArrayIterator} [iteratee] - The function invoked per iteration. - * @returns {T[]} Returns array. - * - * @example - * forEachRight([1, 2], value => console.log(value)); - * // => Logs `2` then `1`. - */ -declare function forEachRight(collection: T[], iteratee?: ArrayIterator): T[]; -/** - * Iterates over characters of string from right to left and invokes iteratee for each character. - * - * @param {string} collection - The string to iterate over. - * @param {StringIterator} [iteratee] - The function invoked per iteration. - * @returns {string} Returns string. - * - * @example - * forEachRight('abc', char => console.log(char)); - * // => Logs 'c', 'b', then 'a'. - */ -declare function forEachRight(collection: string, iteratee?: StringIterator): string; -/** - * Iterates over elements of collection from right to left and invokes iteratee for each element. - * - * @template T - * @param {ArrayLike} collection - The collection to iterate over. - * @param {ListIterator} [iteratee] - The function invoked per iteration. - * @returns {ArrayLike} Returns collection. - * - * @example - * forEachRight({ 0: 'a', 1: 'b', length: 2 }, value => console.log(value)); - * // => Logs 'b' then 'a'. - */ -declare function forEachRight(collection: ArrayLike, iteratee?: ListIterator): ArrayLike; -/** - * Iterates over own enumerable string keyed properties of an object from right to left and invokes iteratee for each property. - * - * @template T - * @param {T} collection - The object to iterate over. - * @param {ObjectIterator} [iteratee] - The function invoked per iteration. - * @returns {T} Returns object. - * - * @example - * forEachRight({ a: 1, b: 2 }, (value, key) => console.log(key)); - * // => Logs 'b' then 'a'. - */ -declare function forEachRight(collection: T, iteratee?: ObjectIterator): T; -/** - * Iterates over elements of array from right to left and invokes iteratee for each element. - * - * @template T, U - * @param {U & (T[] | null | undefined)} collection - The array to iterate over. - * @param {ArrayIterator} [iteratee] - The function invoked per iteration. - * @returns {U} Returns the array. - * - * @example - * forEachRight([1, 2], value => console.log(value)); - * // => Logs `2` then `1`. - */ -declare function forEachRight(collection: U & (T[] | null | undefined), iteratee?: ArrayIterator): U; -/** - * Iterates over characters of string from right to left and invokes iteratee for each character. - * - * @template T - * @param {T} collection - The string to iterate over. - * @param {StringIterator} [iteratee] - The function invoked per iteration. - * @returns {T} Returns the string. - * - * @example - * forEachRight('abc', char => console.log(char)); - * // => Logs 'c', 'b', then 'a'. - */ -declare function forEachRight(collection: T, iteratee?: StringIterator): T; -/** - * Iterates over elements of collection from right to left and invokes iteratee for each element. - * - * @template T, L - * @param {L & (ArrayLike | null | undefined)} collection - The collection to iterate over. - * @param {ListIterator} [iteratee] - The function invoked per iteration. - * @returns {L} Returns the collection. - * - * @example - * forEachRight({ 0: 'a', 1: 'b', length: 2 }, value => console.log(value)); - * // => Logs 'b' then 'a'. - */ -declare function forEachRight | null | undefined>(collection: L & (ArrayLike | null | undefined), iteratee?: ListIterator): L; -/** - * Iterates over own enumerable string keyed properties of an object from right to left and invokes iteratee for each property. - * - * @template T - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ObjectIterator} [iteratee] - The function invoked per iteration. - * @returns {T | null | undefined} Returns the object. - * - * @example - * forEachRight({ a: 1, b: 2 }, (value, key) => console.log(key)); - * // => Logs 'b' then 'a'. - */ -declare function forEachRight(collection: T | null | undefined, iteratee?: ObjectIterator): T | null | undefined; - -export { forEachRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEachRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEachRight.d.ts deleted file mode 100644 index 7a4d452..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEachRight.d.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { ArrayIterator } from '../_internal/ArrayIterator.js'; -import { ListIterator } from '../_internal/ListIterator.js'; -import { ObjectIterator } from '../_internal/ObjectIterator.js'; -import { StringIterator } from '../_internal/StringIterator.js'; - -/** - * Iterates over elements of array from right to left and invokes iteratee for each element. - * - * @template T - * @param {T[]} collection - The array to iterate over. - * @param {ArrayIterator} [iteratee] - The function invoked per iteration. - * @returns {T[]} Returns array. - * - * @example - * forEachRight([1, 2], value => console.log(value)); - * // => Logs `2` then `1`. - */ -declare function forEachRight(collection: T[], iteratee?: ArrayIterator): T[]; -/** - * Iterates over characters of string from right to left and invokes iteratee for each character. - * - * @param {string} collection - The string to iterate over. - * @param {StringIterator} [iteratee] - The function invoked per iteration. - * @returns {string} Returns string. - * - * @example - * forEachRight('abc', char => console.log(char)); - * // => Logs 'c', 'b', then 'a'. - */ -declare function forEachRight(collection: string, iteratee?: StringIterator): string; -/** - * Iterates over elements of collection from right to left and invokes iteratee for each element. - * - * @template T - * @param {ArrayLike} collection - The collection to iterate over. - * @param {ListIterator} [iteratee] - The function invoked per iteration. - * @returns {ArrayLike} Returns collection. - * - * @example - * forEachRight({ 0: 'a', 1: 'b', length: 2 }, value => console.log(value)); - * // => Logs 'b' then 'a'. - */ -declare function forEachRight(collection: ArrayLike, iteratee?: ListIterator): ArrayLike; -/** - * Iterates over own enumerable string keyed properties of an object from right to left and invokes iteratee for each property. - * - * @template T - * @param {T} collection - The object to iterate over. - * @param {ObjectIterator} [iteratee] - The function invoked per iteration. - * @returns {T} Returns object. - * - * @example - * forEachRight({ a: 1, b: 2 }, (value, key) => console.log(key)); - * // => Logs 'b' then 'a'. - */ -declare function forEachRight(collection: T, iteratee?: ObjectIterator): T; -/** - * Iterates over elements of array from right to left and invokes iteratee for each element. - * - * @template T, U - * @param {U & (T[] | null | undefined)} collection - The array to iterate over. - * @param {ArrayIterator} [iteratee] - The function invoked per iteration. - * @returns {U} Returns the array. - * - * @example - * forEachRight([1, 2], value => console.log(value)); - * // => Logs `2` then `1`. - */ -declare function forEachRight(collection: U & (T[] | null | undefined), iteratee?: ArrayIterator): U; -/** - * Iterates over characters of string from right to left and invokes iteratee for each character. - * - * @template T - * @param {T} collection - The string to iterate over. - * @param {StringIterator} [iteratee] - The function invoked per iteration. - * @returns {T} Returns the string. - * - * @example - * forEachRight('abc', char => console.log(char)); - * // => Logs 'c', 'b', then 'a'. - */ -declare function forEachRight(collection: T, iteratee?: StringIterator): T; -/** - * Iterates over elements of collection from right to left and invokes iteratee for each element. - * - * @template T, L - * @param {L & (ArrayLike | null | undefined)} collection - The collection to iterate over. - * @param {ListIterator} [iteratee] - The function invoked per iteration. - * @returns {L} Returns the collection. - * - * @example - * forEachRight({ 0: 'a', 1: 'b', length: 2 }, value => console.log(value)); - * // => Logs 'b' then 'a'. - */ -declare function forEachRight | null | undefined>(collection: L & (ArrayLike | null | undefined), iteratee?: ListIterator): L; -/** - * Iterates over own enumerable string keyed properties of an object from right to left and invokes iteratee for each property. - * - * @template T - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ObjectIterator} [iteratee] - The function invoked per iteration. - * @returns {T | null | undefined} Returns the object. - * - * @example - * forEachRight({ a: 1, b: 2 }, (value, key) => console.log(key)); - * // => Logs 'b' then 'a'. - */ -declare function forEachRight(collection: T | null | undefined, iteratee?: ObjectIterator): T | null | undefined; - -export { forEachRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEachRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEachRight.js deleted file mode 100644 index 8cf57ba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEachRight.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const range = require('../../math/range.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function forEachRight(collection, callback = identity.identity) { - if (!collection) { - return collection; - } - const keys = isArrayLike.isArrayLike(collection) ? range.range(0, collection.length) : Object.keys(collection); - for (let i = keys.length - 1; i >= 0; i--) { - const key = keys[i]; - const value = collection[key]; - const result = callback(value, key, collection); - if (result === false) { - break; - } - } - return collection; -} - -exports.forEachRight = forEachRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEachRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEachRight.mjs deleted file mode 100644 index 33752e0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/forEachRight.mjs +++ /dev/null @@ -1,21 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { range } from '../../math/range.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function forEachRight(collection, callback = identity) { - if (!collection) { - return collection; - } - const keys = isArrayLike(collection) ? range(0, collection.length) : Object.keys(collection); - for (let i = keys.length - 1; i >= 0; i--) { - const key = keys[i]; - const value = collection[key]; - const result = callback(value, key, collection); - if (result === false) { - break; - } - } - return collection; -} - -export { forEachRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/groupBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/groupBy.d.mts deleted file mode 100644 index 2d3403b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/groupBy.d.mts +++ /dev/null @@ -1,35 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * Creates an object composed of keys generated from the results of running each element of collection through iteratee. - * The order of grouped values is determined by the order they occur in collection. - * - * @template T - The type of elements in the array-like collection - * @param {ArrayLike | null | undefined} collection - The collection to iterate over - * @param {ValueIteratee} [iteratee=identity] - The iteratee to transform keys - * @returns {Record} Returns the composed aggregate object - * - * @example - * groupBy([6.1, 4.2, 6.3], Math.floor) - * // => { '4': [4.2], '6': [6.1, 6.3] } - * - * groupBy(['one', 'two', 'three'], 'length') - * // => { '3': ['one', 'two'], '5': ['three'] } - */ -declare function groupBy(collection: ArrayLike | null | undefined, iteratee?: ValueIteratee): Record; -/** - * Creates an object composed of keys generated from the results of running each element of collection through iteratee. - * The order of grouped values is determined by the order they occur in collection. - * - * @template T - The type of the object - * @param {T | null | undefined} collection - The object to iterate over - * @param {ValueIteratee} [iteratee=identity] - The iteratee to transform keys - * @returns {Record>} Returns the composed aggregate object - * - * @example - * groupBy({ a: 6.1, b: 4.2, c: 6.3 }, Math.floor) - * // => { '4': [4.2], '6': [6.1, 6.3] } - */ -declare function groupBy(collection: T | null | undefined, iteratee?: ValueIteratee): Record>; - -export { groupBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/groupBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/groupBy.d.ts deleted file mode 100644 index f5272fd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/groupBy.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * Creates an object composed of keys generated from the results of running each element of collection through iteratee. - * The order of grouped values is determined by the order they occur in collection. - * - * @template T - The type of elements in the array-like collection - * @param {ArrayLike | null | undefined} collection - The collection to iterate over - * @param {ValueIteratee} [iteratee=identity] - The iteratee to transform keys - * @returns {Record} Returns the composed aggregate object - * - * @example - * groupBy([6.1, 4.2, 6.3], Math.floor) - * // => { '4': [4.2], '6': [6.1, 6.3] } - * - * groupBy(['one', 'two', 'three'], 'length') - * // => { '3': ['one', 'two'], '5': ['three'] } - */ -declare function groupBy(collection: ArrayLike | null | undefined, iteratee?: ValueIteratee): Record; -/** - * Creates an object composed of keys generated from the results of running each element of collection through iteratee. - * The order of grouped values is determined by the order they occur in collection. - * - * @template T - The type of the object - * @param {T | null | undefined} collection - The object to iterate over - * @param {ValueIteratee} [iteratee=identity] - The iteratee to transform keys - * @returns {Record>} Returns the composed aggregate object - * - * @example - * groupBy({ a: 6.1, b: 4.2, c: 6.3 }, Math.floor) - * // => { '4': [4.2], '6': [6.1, 6.3] } - */ -declare function groupBy(collection: T | null | undefined, iteratee?: ValueIteratee): Record>; - -export { groupBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/groupBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/groupBy.js deleted file mode 100644 index 5dbecbd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/groupBy.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const groupBy$1 = require('../../array/groupBy.js'); -const identity = require('../../function/identity.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const iteratee = require('../util/iteratee.js'); - -function groupBy(source, _getKeyFromItem) { - if (source == null) { - return {}; - } - const items = isArrayLike.isArrayLike(source) ? Array.from(source) : Object.values(source); - const getKeyFromItem = iteratee.iteratee(_getKeyFromItem ?? identity.identity); - return groupBy$1.groupBy(items, getKeyFromItem); -} - -exports.groupBy = groupBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/groupBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/groupBy.mjs deleted file mode 100644 index 9945a91..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/groupBy.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import { groupBy as groupBy$1 } from '../../array/groupBy.mjs'; -import { identity } from '../../function/identity.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function groupBy(source, _getKeyFromItem) { - if (source == null) { - return {}; - } - const items = isArrayLike(source) ? Array.from(source) : Object.values(source); - const getKeyFromItem = iteratee(_getKeyFromItem ?? identity); - return groupBy$1(items, getKeyFromItem); -} - -export { groupBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/head.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/head.d.mts deleted file mode 100644 index 0b59f8a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/head.d.mts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Returns the first element of an array or `undefined` if the array is empty. - * - * @template T - The type of elements in the array. - * @param {readonly [T, ...unknown[]]} array - A non-empty tuple with at least one element. - * @returns {T} The first element of the array. - * - * @example - * const arr = [1, 2, 3] as const; - * const first = head(arr); - * // first will be 1 - */ -declare function head(array: readonly [T, ...unknown[]]): T; -/** - * Returns the first element of an array or `undefined` if the array is empty. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} array - The array from which to get the first element. - * @returns {T | undefined} The first element of the array, or `undefined` if the array is empty/null/undefined. - * - * @example - * const arr = [1, 2, 3]; - * const first = head(arr); - * // first will be 1 - * - * const emptyArr: number[] = []; - * const noElement = head(emptyArr); - * // noElement will be undefined - */ -declare function head(array: ArrayLike | null | undefined): T | undefined; - -export { head }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/head.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/head.d.ts deleted file mode 100644 index 0b59f8a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/head.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Returns the first element of an array or `undefined` if the array is empty. - * - * @template T - The type of elements in the array. - * @param {readonly [T, ...unknown[]]} array - A non-empty tuple with at least one element. - * @returns {T} The first element of the array. - * - * @example - * const arr = [1, 2, 3] as const; - * const first = head(arr); - * // first will be 1 - */ -declare function head(array: readonly [T, ...unknown[]]): T; -/** - * Returns the first element of an array or `undefined` if the array is empty. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} array - The array from which to get the first element. - * @returns {T | undefined} The first element of the array, or `undefined` if the array is empty/null/undefined. - * - * @example - * const arr = [1, 2, 3]; - * const first = head(arr); - * // first will be 1 - * - * const emptyArr: number[] = []; - * const noElement = head(emptyArr); - * // noElement will be undefined - */ -declare function head(array: ArrayLike | null | undefined): T | undefined; - -export { head }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/head.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/head.js deleted file mode 100644 index 5e333ea..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/head.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const head$1 = require('../../array/head.js'); -const toArray = require('../_internal/toArray.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function head(arr) { - if (!isArrayLike.isArrayLike(arr)) { - return undefined; - } - return head$1.head(toArray.toArray(arr)); -} - -exports.head = head; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/head.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/head.mjs deleted file mode 100644 index 5306996..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/head.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { head as head$1 } from '../../array/head.mjs'; -import { toArray } from '../_internal/toArray.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function head(arr) { - if (!isArrayLike(arr)) { - return undefined; - } - return head$1(toArray(arr)); -} - -export { head }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/includes.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/includes.d.mts deleted file mode 100644 index 2f73348..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/includes.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Checks if a specified value exists within a given array-like collection. - * - * The comparison uses SameValueZero to check for inclusion. - * - * @template T The type of elements in the collection - * @param collection The array-like collection to search in - * @param target The value to search for in the collection - * @param [fromIndex=0] The index to start searching from. If negative, it is treated as an offset from the end - * @returns `true` if the value is found in the collection, `false` otherwise - * - * @example - * includes([1, 2, 3], 2); // true - * includes([1, 2, 3], 4); // false - * includes('hello', 'e'); // true - * includes(null, 1); // false - * includes([1, 2, 3], 2, 2); // false - * includes([1, 2, 3], 2, -2); // true - */ -declare function includes(collection: Record | Record | null | undefined, target: T, fromIndex?: number): boolean; - -export { includes }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/includes.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/includes.d.ts deleted file mode 100644 index 2f73348..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/includes.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Checks if a specified value exists within a given array-like collection. - * - * The comparison uses SameValueZero to check for inclusion. - * - * @template T The type of elements in the collection - * @param collection The array-like collection to search in - * @param target The value to search for in the collection - * @param [fromIndex=0] The index to start searching from. If negative, it is treated as an offset from the end - * @returns `true` if the value is found in the collection, `false` otherwise - * - * @example - * includes([1, 2, 3], 2); // true - * includes([1, 2, 3], 4); // false - * includes('hello', 'e'); // true - * includes(null, 1); // false - * includes([1, 2, 3], 2, 2); // false - * includes([1, 2, 3], 2, -2); // true - */ -declare function includes(collection: Record | Record | null | undefined, target: T, fromIndex?: number): boolean; - -export { includes }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/includes.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/includes.js deleted file mode 100644 index 2f602bc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/includes.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isString = require('../predicate/isString.js'); -const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js'); -const toInteger = require('../util/toInteger.js'); - -function includes(source, target, fromIndex, guard) { - if (source == null) { - return false; - } - if (guard || !fromIndex) { - fromIndex = 0; - } - else { - fromIndex = toInteger.toInteger(fromIndex); - } - if (isString.isString(source)) { - if (fromIndex > source.length || target instanceof RegExp) { - return false; - } - if (fromIndex < 0) { - fromIndex = Math.max(0, source.length + fromIndex); - } - return source.includes(target, fromIndex); - } - if (Array.isArray(source)) { - return source.includes(target, fromIndex); - } - const keys = Object.keys(source); - if (fromIndex < 0) { - fromIndex = Math.max(0, keys.length + fromIndex); - } - for (let i = fromIndex; i < keys.length; i++) { - const value = Reflect.get(source, keys[i]); - if (isEqualsSameValueZero.isEqualsSameValueZero(value, target)) { - return true; - } - } - return false; -} - -exports.includes = includes; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/includes.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/includes.mjs deleted file mode 100644 index 859fd8c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/includes.mjs +++ /dev/null @@ -1,40 +0,0 @@ -import { isString } from '../predicate/isString.mjs'; -import { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs'; -import { toInteger } from '../util/toInteger.mjs'; - -function includes(source, target, fromIndex, guard) { - if (source == null) { - return false; - } - if (guard || !fromIndex) { - fromIndex = 0; - } - else { - fromIndex = toInteger(fromIndex); - } - if (isString(source)) { - if (fromIndex > source.length || target instanceof RegExp) { - return false; - } - if (fromIndex < 0) { - fromIndex = Math.max(0, source.length + fromIndex); - } - return source.includes(target, fromIndex); - } - if (Array.isArray(source)) { - return source.includes(target, fromIndex); - } - const keys = Object.keys(source); - if (fromIndex < 0) { - fromIndex = Math.max(0, keys.length + fromIndex); - } - for (let i = fromIndex; i < keys.length; i++) { - const value = Reflect.get(source, keys[i]); - if (isEqualsSameValueZero(value, target)) { - return true; - } - } - return false; -} - -export { includes }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/indexOf.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/indexOf.d.mts deleted file mode 100644 index b661748..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/indexOf.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Finds the index of the first occurrence of a value in an array. - * - * This method is similar to `Array.prototype.indexOf`, but it also finds `NaN` values. - * It uses strict equality (`===`) to compare elements. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} array - The array to search. - * @param {T} searchElement - The value to search for. - * @param {number} [fromIndex] - The index to start the search at. - * @returns {number} The index (zero-based) of the first occurrence of the value in the array, or `-1` if the value is not found. - * - * @example - * const array = [1, 2, 3, NaN]; - * indexOf(array, 3); // => 2 - * indexOf(array, NaN); // => 3 - */ -declare function indexOf(array: ArrayLike | null | undefined, searchElement: T, fromIndex?: number): number; - -export { indexOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/indexOf.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/indexOf.d.ts deleted file mode 100644 index b661748..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/indexOf.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Finds the index of the first occurrence of a value in an array. - * - * This method is similar to `Array.prototype.indexOf`, but it also finds `NaN` values. - * It uses strict equality (`===`) to compare elements. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} array - The array to search. - * @param {T} searchElement - The value to search for. - * @param {number} [fromIndex] - The index to start the search at. - * @returns {number} The index (zero-based) of the first occurrence of the value in the array, or `-1` if the value is not found. - * - * @example - * const array = [1, 2, 3, NaN]; - * indexOf(array, 3); // => 2 - * indexOf(array, NaN); // => 3 - */ -declare function indexOf(array: ArrayLike | null | undefined, searchElement: T, fromIndex?: number): number; - -export { indexOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/indexOf.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/indexOf.js deleted file mode 100644 index beb85f2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/indexOf.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArrayLike = require('../predicate/isArrayLike.js'); - -function indexOf(array, searchElement, fromIndex) { - if (!isArrayLike.isArrayLike(array)) { - return -1; - } - if (Number.isNaN(searchElement)) { - fromIndex = fromIndex ?? 0; - if (fromIndex < 0) { - fromIndex = Math.max(0, array.length + fromIndex); - } - for (let i = fromIndex; i < array.length; i++) { - if (Number.isNaN(array[i])) { - return i; - } - } - return -1; - } - return Array.from(array).indexOf(searchElement, fromIndex); -} - -exports.indexOf = indexOf; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/indexOf.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/indexOf.mjs deleted file mode 100644 index 4c3a4ca..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/indexOf.mjs +++ /dev/null @@ -1,22 +0,0 @@ -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function indexOf(array, searchElement, fromIndex) { - if (!isArrayLike(array)) { - return -1; - } - if (Number.isNaN(searchElement)) { - fromIndex = fromIndex ?? 0; - if (fromIndex < 0) { - fromIndex = Math.max(0, array.length + fromIndex); - } - for (let i = fromIndex; i < array.length; i++) { - if (Number.isNaN(array[i])) { - return i; - } - } - return -1; - } - return Array.from(array).indexOf(searchElement, fromIndex); -} - -export { indexOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/initial.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/initial.d.mts deleted file mode 100644 index 115b5bd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/initial.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Returns a new array containing all elements except the last one from the input array. - * If the input array is empty or has only one element, the function returns an empty array. - * - * @template T The type of elements in the array. - * @param {ArrayLike | null | undefined} arr - The input array. - * @returns {T[]} A new array containing all but the last element of the input array. - * - * @example - * const arr = [1, 2, 3, 4]; - * const result = initial(arr); - * // result will be [1, 2, 3] - */ -declare function initial(arr: ArrayLike | null | undefined): T[]; - -export { initial }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/initial.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/initial.d.ts deleted file mode 100644 index 115b5bd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/initial.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Returns a new array containing all elements except the last one from the input array. - * If the input array is empty or has only one element, the function returns an empty array. - * - * @template T The type of elements in the array. - * @param {ArrayLike | null | undefined} arr - The input array. - * @returns {T[]} A new array containing all but the last element of the input array. - * - * @example - * const arr = [1, 2, 3, 4]; - * const result = initial(arr); - * // result will be [1, 2, 3] - */ -declare function initial(arr: ArrayLike | null | undefined): T[]; - -export { initial }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/initial.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/initial.js deleted file mode 100644 index 9e5bf9a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/initial.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const initial$1 = require('../../array/initial.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function initial(arr) { - if (!isArrayLike.isArrayLike(arr)) { - return []; - } - return initial$1.initial(Array.from(arr)); -} - -exports.initial = initial; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/initial.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/initial.mjs deleted file mode 100644 index 7725ca9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/initial.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { initial as initial$1 } from '../../array/initial.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function initial(arr) { - if (!isArrayLike(arr)) { - return []; - } - return initial$1(Array.from(arr)); -} - -export { initial }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersection.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersection.d.mts deleted file mode 100644 index 9812184..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersection.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Returns the intersection of multiple arrays. - * - * This function takes multiple arrays and returns a new array containing the elements that are - * present in all provided arrays. It effectively filters out any elements that are not found - * in every array. - * - * @template T - The type of elements in the arrays. - * @param {...(ArrayLike | null | undefined)} arrays - The arrays to compare. - * @returns {T[]} A new array containing the elements that are present in all arrays. - * - * @example - * const array1 = [1, 2, 3, 4, 5]; - * const array2 = [3, 4, 5, 6, 7]; - * const result = intersection(array1, array2); - * // result will be [3, 4, 5] since these elements are in both arrays. - */ -declare function intersection(...arrays: Array | null | undefined>): T[]; - -export { intersection }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersection.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersection.d.ts deleted file mode 100644 index 9812184..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersection.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Returns the intersection of multiple arrays. - * - * This function takes multiple arrays and returns a new array containing the elements that are - * present in all provided arrays. It effectively filters out any elements that are not found - * in every array. - * - * @template T - The type of elements in the arrays. - * @param {...(ArrayLike | null | undefined)} arrays - The arrays to compare. - * @returns {T[]} A new array containing the elements that are present in all arrays. - * - * @example - * const array1 = [1, 2, 3, 4, 5]; - * const array2 = [3, 4, 5, 6, 7]; - * const result = intersection(array1, array2); - * // result will be [3, 4, 5] since these elements are in both arrays. - */ -declare function intersection(...arrays: Array | null | undefined>): T[]; - -export { intersection }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersection.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersection.js deleted file mode 100644 index 598f4e2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersection.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const intersection$1 = require('../../array/intersection.js'); -const uniq = require('../../array/uniq.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); - -function intersection(...arrays) { - if (arrays.length === 0) { - return []; - } - if (!isArrayLikeObject.isArrayLikeObject(arrays[0])) { - return []; - } - let result = uniq.uniq(Array.from(arrays[0])); - for (let i = 1; i < arrays.length; i++) { - const array = arrays[i]; - if (!isArrayLikeObject.isArrayLikeObject(array)) { - return []; - } - result = intersection$1.intersection(result, Array.from(array)); - } - return result; -} - -exports.intersection = intersection; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersection.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersection.mjs deleted file mode 100644 index feae1f0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersection.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import { intersection as intersection$1 } from '../../array/intersection.mjs'; -import { uniq } from '../../array/uniq.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; - -function intersection(...arrays) { - if (arrays.length === 0) { - return []; - } - if (!isArrayLikeObject(arrays[0])) { - return []; - } - let result = uniq(Array.from(arrays[0])); - for (let i = 1; i < arrays.length; i++) { - const array = arrays[i]; - if (!isArrayLikeObject(array)) { - return []; - } - result = intersection$1(result, Array.from(array)); - } - return result; -} - -export { intersection }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionBy.d.mts deleted file mode 100644 index 4473a87..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionBy.d.mts +++ /dev/null @@ -1,73 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * Creates an array of unique values that are included in all given arrays, using an iteratee to compute equality. - * - * @template T, U - * @param {ArrayLike | null} array - The array to inspect. - * @param {ArrayLike} values - The values to compare. - * @param {ValueIteratee} iteratee - The iteratee invoked per element. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [2.1] - */ -declare function intersectionBy(array: ArrayLike | null, values: ArrayLike, iteratee: ValueIteratee): T[]; -/** - * Creates an array of unique values that are included in all given arrays, using an iteratee to compute equality. - * - * @template T, U, V - * @param {ArrayLike | null} array - The array to inspect. - * @param {ArrayLike} values1 - The first values to compare. - * @param {ArrayLike} values2 - The second values to compare. - * @param {ValueIteratee} iteratee - The iteratee invoked per element. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * intersectionBy([2.1, 1.2], [2.3, 3.4], [2.5], Math.floor); - * // => [2.1] - */ -declare function intersectionBy(array: ArrayLike | null, values1: ArrayLike, values2: ArrayLike, iteratee: ValueIteratee): T[]; -/** - * Creates an array of unique values that are included in all given arrays, using an iteratee to compute equality. - * - * @template T, U, V, W - * @param {ArrayLike | null | undefined} array - The array to inspect. - * @param {ArrayLike} values1 - The first values to compare. - * @param {ArrayLike} values2 - The second values to compare. - * @param {...Array | ValueIteratee>} values - The other arrays to compare, and the iteratee to use. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * intersectionBy([2.1, 1.2], [2.3, 3.4], [2.5], [2.6, 1.7], Math.floor); - * // => [2.1] - */ -declare function intersectionBy(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, ...values: Array | ValueIteratee>): T[]; -/** - * Creates an array of unique values that are included in all given arrays. - * - * @template T - * @param {ArrayLike | null} [array] - The array to inspect. - * @param {...Array>} values - The values to compare. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * intersectionBy([2, 1], [2, 3]); - * // => [2] - */ -declare function intersectionBy(array?: ArrayLike | null, ...values: Array>): T[]; -/** - * Creates an array of unique values that are included in all given arrays, using an iteratee to compute equality. - * - * @template T - * @param {...Array | ValueIteratee>} values - The arrays to compare and the iteratee to use. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [2.1] - */ -declare function intersectionBy(...values: Array | ValueIteratee>): T[]; - -export { intersectionBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionBy.d.ts deleted file mode 100644 index 79057e6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionBy.d.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * Creates an array of unique values that are included in all given arrays, using an iteratee to compute equality. - * - * @template T, U - * @param {ArrayLike | null} array - The array to inspect. - * @param {ArrayLike} values - The values to compare. - * @param {ValueIteratee} iteratee - The iteratee invoked per element. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [2.1] - */ -declare function intersectionBy(array: ArrayLike | null, values: ArrayLike, iteratee: ValueIteratee): T[]; -/** - * Creates an array of unique values that are included in all given arrays, using an iteratee to compute equality. - * - * @template T, U, V - * @param {ArrayLike | null} array - The array to inspect. - * @param {ArrayLike} values1 - The first values to compare. - * @param {ArrayLike} values2 - The second values to compare. - * @param {ValueIteratee} iteratee - The iteratee invoked per element. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * intersectionBy([2.1, 1.2], [2.3, 3.4], [2.5], Math.floor); - * // => [2.1] - */ -declare function intersectionBy(array: ArrayLike | null, values1: ArrayLike, values2: ArrayLike, iteratee: ValueIteratee): T[]; -/** - * Creates an array of unique values that are included in all given arrays, using an iteratee to compute equality. - * - * @template T, U, V, W - * @param {ArrayLike | null | undefined} array - The array to inspect. - * @param {ArrayLike} values1 - The first values to compare. - * @param {ArrayLike} values2 - The second values to compare. - * @param {...Array | ValueIteratee>} values - The other arrays to compare, and the iteratee to use. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * intersectionBy([2.1, 1.2], [2.3, 3.4], [2.5], [2.6, 1.7], Math.floor); - * // => [2.1] - */ -declare function intersectionBy(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, ...values: Array | ValueIteratee>): T[]; -/** - * Creates an array of unique values that are included in all given arrays. - * - * @template T - * @param {ArrayLike | null} [array] - The array to inspect. - * @param {...Array>} values - The values to compare. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * intersectionBy([2, 1], [2, 3]); - * // => [2] - */ -declare function intersectionBy(array?: ArrayLike | null, ...values: Array>): T[]; -/** - * Creates an array of unique values that are included in all given arrays, using an iteratee to compute equality. - * - * @template T - * @param {...Array | ValueIteratee>} values - The arrays to compare and the iteratee to use. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [2.1] - */ -declare function intersectionBy(...values: Array | ValueIteratee>): T[]; - -export { intersectionBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionBy.js deleted file mode 100644 index 9edba43..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionBy.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const intersectionBy$1 = require('../../array/intersectionBy.js'); -const last = require('../../array/last.js'); -const uniq = require('../../array/uniq.js'); -const identity = require('../../function/identity.js'); -const property = require('../object/property.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); - -function intersectionBy(array, ...values) { - if (!isArrayLikeObject.isArrayLikeObject(array)) { - return []; - } - const lastValue = last.last(values); - if (lastValue === undefined) { - return Array.from(array); - } - let result = uniq.uniq(Array.from(array)); - const count = isArrayLikeObject.isArrayLikeObject(lastValue) ? values.length : values.length - 1; - for (let i = 0; i < count; ++i) { - const value = values[i]; - if (!isArrayLikeObject.isArrayLikeObject(value)) { - return []; - } - if (isArrayLikeObject.isArrayLikeObject(lastValue)) { - result = intersectionBy$1.intersectionBy(result, Array.from(value), identity.identity); - } - else if (typeof lastValue === 'function') { - result = intersectionBy$1.intersectionBy(result, Array.from(value), value => lastValue(value)); - } - else if (typeof lastValue === 'string') { - result = intersectionBy$1.intersectionBy(result, Array.from(value), property.property(lastValue)); - } - } - return result; -} - -exports.intersectionBy = intersectionBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionBy.mjs deleted file mode 100644 index d02762b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionBy.mjs +++ /dev/null @@ -1,36 +0,0 @@ -import { intersectionBy as intersectionBy$1 } from '../../array/intersectionBy.mjs'; -import { last } from '../../array/last.mjs'; -import { uniq } from '../../array/uniq.mjs'; -import { identity } from '../../function/identity.mjs'; -import { property } from '../object/property.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; - -function intersectionBy(array, ...values) { - if (!isArrayLikeObject(array)) { - return []; - } - const lastValue = last(values); - if (lastValue === undefined) { - return Array.from(array); - } - let result = uniq(Array.from(array)); - const count = isArrayLikeObject(lastValue) ? values.length : values.length - 1; - for (let i = 0; i < count; ++i) { - const value = values[i]; - if (!isArrayLikeObject(value)) { - return []; - } - if (isArrayLikeObject(lastValue)) { - result = intersectionBy$1(result, Array.from(value), identity); - } - else if (typeof lastValue === 'function') { - result = intersectionBy$1(result, Array.from(value), value => lastValue(value)); - } - else if (typeof lastValue === 'string') { - result = intersectionBy$1(result, Array.from(value), property(lastValue)); - } - } - return result; -} - -export { intersectionBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionWith.d.mts deleted file mode 100644 index f50211a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionWith.d.mts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * Creates an array of unique values that are included in all given arrays, using a comparator function for equality comparisons. - * - * @template T, U - * @param {ArrayLike | null | undefined} array - The array to inspect. - * @param {ArrayLike} values - The values to compare. - * @param {(a: T, b: T | U) => boolean} comparator - The comparator invoked per element. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * const objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * const others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * intersectionWith(objects, others, (a, b) => a.x === b.x && a.y === b.y); - * // => [{ 'x': 1, 'y': 2 }] - */ -declare function intersectionWith(array: ArrayLike | null | undefined, values: ArrayLike, comparator: (a: T, b: T | U) => boolean): T[]; -/** - * Creates an array of unique values that are included in all given arrays, using a comparator function for equality comparisons. - * - * @template T, U, V - * @param {ArrayLike | null | undefined} array - The array to inspect. - * @param {ArrayLike} values1 - The first values to compare. - * @param {ArrayLike} values2 - The second values to compare. - * @param {(a: T, b: T | U | V) => boolean} comparator - The comparator invoked per element. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * const objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * const others1 = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * const others2 = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }]; - * intersectionWith(objects, others1, others2, (a, b) => a.x === b.x && a.y === b.y); - * // => [{ 'x': 1, 'y': 2 }] - */ -declare function intersectionWith(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, comparator: (a: T, b: T | U | V) => boolean): T[]; -/** - * Creates an array of unique values that are included in all given arrays, using a comparator function for equality comparisons. - * - * @template T, U, V, W - * @param {ArrayLike | null | undefined} array - The array to inspect. - * @param {ArrayLike} values1 - The first values to compare. - * @param {ArrayLike} values2 - The second values to compare. - * @param {...Array | (a: T, b: T | U | V | W) => boolean>} values - The other arrays to compare, and the comparator to use. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * const objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * const others1 = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * const others2 = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }]; - * const others3 = [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]; - * intersectionWith(objects, others1, others2, others3, (a, b) => a.x === b.x && a.y === b.y); - * // => [{ 'x': 1, 'y': 2 }] - */ -declare function intersectionWith(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, ...values: Array | ((a: T, b: T | U | V | W) => boolean)>): T[]; -/** - * Creates an array of unique values that are included in all given arrays. - * - * @template T - * @param {ArrayLike | null} [array] - The array to inspect. - * @param {...Array | (a: T, b: never) => boolean>} values - The values to compare. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * intersectionWith([2, 1], [2, 3]); - * // => [2] - */ -declare function intersectionWith(array?: ArrayLike | null, ...values: Array | ((a: T, b: never) => boolean)>): T[]; - -export { intersectionWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionWith.d.ts deleted file mode 100644 index f50211a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionWith.d.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * Creates an array of unique values that are included in all given arrays, using a comparator function for equality comparisons. - * - * @template T, U - * @param {ArrayLike | null | undefined} array - The array to inspect. - * @param {ArrayLike} values - The values to compare. - * @param {(a: T, b: T | U) => boolean} comparator - The comparator invoked per element. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * const objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * const others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * intersectionWith(objects, others, (a, b) => a.x === b.x && a.y === b.y); - * // => [{ 'x': 1, 'y': 2 }] - */ -declare function intersectionWith(array: ArrayLike | null | undefined, values: ArrayLike, comparator: (a: T, b: T | U) => boolean): T[]; -/** - * Creates an array of unique values that are included in all given arrays, using a comparator function for equality comparisons. - * - * @template T, U, V - * @param {ArrayLike | null | undefined} array - The array to inspect. - * @param {ArrayLike} values1 - The first values to compare. - * @param {ArrayLike} values2 - The second values to compare. - * @param {(a: T, b: T | U | V) => boolean} comparator - The comparator invoked per element. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * const objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * const others1 = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * const others2 = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }]; - * intersectionWith(objects, others1, others2, (a, b) => a.x === b.x && a.y === b.y); - * // => [{ 'x': 1, 'y': 2 }] - */ -declare function intersectionWith(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, comparator: (a: T, b: T | U | V) => boolean): T[]; -/** - * Creates an array of unique values that are included in all given arrays, using a comparator function for equality comparisons. - * - * @template T, U, V, W - * @param {ArrayLike | null | undefined} array - The array to inspect. - * @param {ArrayLike} values1 - The first values to compare. - * @param {ArrayLike} values2 - The second values to compare. - * @param {...Array | (a: T, b: T | U | V | W) => boolean>} values - The other arrays to compare, and the comparator to use. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * const objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * const others1 = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * const others2 = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }]; - * const others3 = [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]; - * intersectionWith(objects, others1, others2, others3, (a, b) => a.x === b.x && a.y === b.y); - * // => [{ 'x': 1, 'y': 2 }] - */ -declare function intersectionWith(array: ArrayLike | null | undefined, values1: ArrayLike, values2: ArrayLike, ...values: Array | ((a: T, b: T | U | V | W) => boolean)>): T[]; -/** - * Creates an array of unique values that are included in all given arrays. - * - * @template T - * @param {ArrayLike | null} [array] - The array to inspect. - * @param {...Array | (a: T, b: never) => boolean>} values - The values to compare. - * @returns {T[]} Returns the new array of intersecting values. - * - * @example - * intersectionWith([2, 1], [2, 3]); - * // => [2] - */ -declare function intersectionWith(array?: ArrayLike | null, ...values: Array | ((a: T, b: never) => boolean)>): T[]; - -export { intersectionWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionWith.js deleted file mode 100644 index 369590f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionWith.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const last = require('./last.js'); -const intersectionWith$1 = require('../../array/intersectionWith.js'); -const uniq = require('./uniq.js'); -const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js'); - -function intersectionWith(firstArr, ...otherArrs) { - if (firstArr == null) { - return []; - } - const _comparator = last.last(otherArrs); - let comparator = isEqualsSameValueZero.isEqualsSameValueZero; - let uniq$1 = uniq.uniq; - if (typeof _comparator === 'function') { - comparator = _comparator; - uniq$1 = uniqPreserve0; - otherArrs.pop(); - } - let result = uniq$1(Array.from(firstArr)); - for (let i = 0; i < otherArrs.length; ++i) { - const otherArr = otherArrs[i]; - if (otherArr == null) { - return []; - } - result = intersectionWith$1.intersectionWith(result, Array.from(otherArr), comparator); - } - return result; -} -function uniqPreserve0(arr) { - const result = []; - const added = new Set(); - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - if (added.has(item)) { - continue; - } - result.push(item); - added.add(item); - } - return result; -} - -exports.intersectionWith = intersectionWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionWith.mjs deleted file mode 100644 index c2ed16a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/intersectionWith.mjs +++ /dev/null @@ -1,42 +0,0 @@ -import { last } from './last.mjs'; -import { intersectionWith as intersectionWith$1 } from '../../array/intersectionWith.mjs'; -import { uniq } from './uniq.mjs'; -import { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs'; - -function intersectionWith(firstArr, ...otherArrs) { - if (firstArr == null) { - return []; - } - const _comparator = last(otherArrs); - let comparator = isEqualsSameValueZero; - let uniq$1 = uniq; - if (typeof _comparator === 'function') { - comparator = _comparator; - uniq$1 = uniqPreserve0; - otherArrs.pop(); - } - let result = uniq$1(Array.from(firstArr)); - for (let i = 0; i < otherArrs.length; ++i) { - const otherArr = otherArrs[i]; - if (otherArr == null) { - return []; - } - result = intersectionWith$1(result, Array.from(otherArr), comparator); - } - return result; -} -function uniqPreserve0(arr) { - const result = []; - const added = new Set(); - for (let i = 0; i < arr.length; i++) { - const item = arr[i]; - if (added.has(item)) { - continue; - } - result.push(item); - added.add(item); - } - return result; -} - -export { intersectionWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/invokeMap.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/invokeMap.d.mts deleted file mode 100644 index fa3234e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/invokeMap.d.mts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Invokes the method at path of each element in collection. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {string} methodName - The name of the method to invoke. - * @param {...any[]} args - The arguments to invoke each method with. - * @returns {any[]} Returns the array of results. - * - * @example - * invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * invokeMap([123, 456], 'toString', 2); - * // => ['1111011', '111001000'] - */ -declare function invokeMap(collection: object | null | undefined, methodName: string, ...args: any[]): any[]; -/** - * Invokes the method at path of each element in collection. - * - * @template R - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {(...args: any[]) => R} method - The method to invoke. - * @param {...any[]} args - The arguments to invoke each method with. - * @returns {R[]} Returns the array of results. - * - * @example - * invokeMap([5, 1, 7], Array.prototype.slice, 1); - * // => [[], [], []] - */ -declare function invokeMap(collection: object | null | undefined, method: (...args: any[]) => R, ...args: any[]): R[]; - -export { invokeMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/invokeMap.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/invokeMap.d.ts deleted file mode 100644 index fa3234e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/invokeMap.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Invokes the method at path of each element in collection. - * - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {string} methodName - The name of the method to invoke. - * @param {...any[]} args - The arguments to invoke each method with. - * @returns {any[]} Returns the array of results. - * - * @example - * invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * invokeMap([123, 456], 'toString', 2); - * // => ['1111011', '111001000'] - */ -declare function invokeMap(collection: object | null | undefined, methodName: string, ...args: any[]): any[]; -/** - * Invokes the method at path of each element in collection. - * - * @template R - * @param {object | null | undefined} collection - The collection to iterate over. - * @param {(...args: any[]) => R} method - The method to invoke. - * @param {...any[]} args - The arguments to invoke each method with. - * @returns {R[]} Returns the array of results. - * - * @example - * invokeMap([5, 1, 7], Array.prototype.slice, 1); - * // => [[], [], []] - */ -declare function invokeMap(collection: object | null | undefined, method: (...args: any[]) => R, ...args: any[]): R[]; - -export { invokeMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/invokeMap.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/invokeMap.js deleted file mode 100644 index 14762e6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/invokeMap.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isFunction = require('../../predicate/isFunction.js'); -const isNil = require('../../predicate/isNil.js'); -const get = require('../object/get.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function invokeMap(collection, path, ...args) { - if (isNil.isNil(collection)) { - return []; - } - const values = isArrayLike.isArrayLike(collection) ? Array.from(collection) : Object.values(collection); - const result = []; - for (let i = 0; i < values.length; i++) { - const value = values[i]; - if (isFunction.isFunction(path)) { - result.push(path.apply(value, args)); - continue; - } - const method = get.get(value, path); - let thisContext = value; - if (Array.isArray(path)) { - const pathExceptLast = path.slice(0, -1); - if (pathExceptLast.length > 0) { - thisContext = get.get(value, pathExceptLast); - } - } - else if (typeof path === 'string' && path.includes('.')) { - const parts = path.split('.'); - const pathExceptLast = parts.slice(0, -1).join('.'); - thisContext = get.get(value, pathExceptLast); - } - result.push(method == null ? undefined : method.apply(thisContext, args)); - } - return result; -} - -exports.invokeMap = invokeMap; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/invokeMap.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/invokeMap.mjs deleted file mode 100644 index 41b2897..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/invokeMap.mjs +++ /dev/null @@ -1,36 +0,0 @@ -import { isFunction } from '../../predicate/isFunction.mjs'; -import { isNil } from '../../predicate/isNil.mjs'; -import { get } from '../object/get.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function invokeMap(collection, path, ...args) { - if (isNil(collection)) { - return []; - } - const values = isArrayLike(collection) ? Array.from(collection) : Object.values(collection); - const result = []; - for (let i = 0; i < values.length; i++) { - const value = values[i]; - if (isFunction(path)) { - result.push(path.apply(value, args)); - continue; - } - const method = get(value, path); - let thisContext = value; - if (Array.isArray(path)) { - const pathExceptLast = path.slice(0, -1); - if (pathExceptLast.length > 0) { - thisContext = get(value, pathExceptLast); - } - } - else if (typeof path === 'string' && path.includes('.')) { - const parts = path.split('.'); - const pathExceptLast = parts.slice(0, -1).join('.'); - thisContext = get(value, pathExceptLast); - } - result.push(method == null ? undefined : method.apply(thisContext, args)); - } - return result; -} - -export { invokeMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/join.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/join.d.mts deleted file mode 100644 index 45dd93c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/join.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Joins elements of an array into a string. - * - * @param {ArrayLike | null | undefined} array - The array to join. - * @param {string} [separator=','] - The separator used to join the elements, default is common separator `,`. - * @returns {string} - Returns a string containing all elements of the array joined by the specified separator. - * - * @example - * const arr = ["a", "b", "c"]; - * const result = join(arr, "~"); - * console.log(result); // Output: "a~b~c" - */ -declare function join(array: ArrayLike | null | undefined, separator?: string): string; - -export { join }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/join.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/join.d.ts deleted file mode 100644 index 45dd93c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/join.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Joins elements of an array into a string. - * - * @param {ArrayLike | null | undefined} array - The array to join. - * @param {string} [separator=','] - The separator used to join the elements, default is common separator `,`. - * @returns {string} - Returns a string containing all elements of the array joined by the specified separator. - * - * @example - * const arr = ["a", "b", "c"]; - * const result = join(arr, "~"); - * console.log(result); // Output: "a~b~c" - */ -declare function join(array: ArrayLike | null | undefined, separator?: string): string; - -export { join }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/join.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/join.js deleted file mode 100644 index 2daf7fb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/join.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArrayLike = require('../predicate/isArrayLike.js'); - -function join(array, separator) { - if (!isArrayLike.isArrayLike(array)) { - return ''; - } - return Array.from(array).join(separator); -} - -exports.join = join; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/join.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/join.mjs deleted file mode 100644 index ba96340..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/join.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function join(array, separator) { - if (!isArrayLike(array)) { - return ''; - } - return Array.from(array).join(separator); -} - -export { join }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/keyBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/keyBy.d.mts deleted file mode 100644 index 0391799..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/keyBy.d.mts +++ /dev/null @@ -1,39 +0,0 @@ -import { ValueIterateeCustom } from '../_internal/ValueIterateeCustom.mjs'; - -/** - * Creates an object composed of keys generated from the results of running each element of collection thru iteratee. - * - * @template T - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {ValueIterateeCustom} [iteratee] - The iteratee to transform keys. - * @returns {Record} Returns the composed aggregate object. - * - * @example - * const array = [ - * { dir: 'left', code: 97 }, - * { dir: 'right', code: 100 } - * ]; - * - * keyBy(array, o => String.fromCharCode(o.code)); - * // => { a: { dir: 'left', code: 97 }, d: { dir: 'right', code: 100 } } - * - * keyBy(array, 'dir'); - * // => { left: { dir: 'left', code: 97 }, right: { dir: 'right', code: 100 } } - */ -declare function keyBy(collection: ArrayLike | null | undefined, iteratee?: ValueIterateeCustom): Record; -/** - * Creates an object composed of keys generated from the results of running each element of collection thru iteratee. - * - * @template T - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ValueIterateeCustom} [iteratee] - The iteratee to transform keys. - * @returns {Record} Returns the composed aggregate object. - * - * @example - * const obj = { a: { dir: 'left', code: 97 }, b: { dir: 'right', code: 100 } }; - * keyBy(obj, o => String.fromCharCode(o.code)); - * // => { a: { dir: 'left', code: 97 }, d: { dir: 'right', code: 100 } } - */ -declare function keyBy(collection: T | null | undefined, iteratee?: ValueIterateeCustom): Record; - -export { keyBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/keyBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/keyBy.d.ts deleted file mode 100644 index 4b38967..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/keyBy.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { ValueIterateeCustom } from '../_internal/ValueIterateeCustom.js'; - -/** - * Creates an object composed of keys generated from the results of running each element of collection thru iteratee. - * - * @template T - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {ValueIterateeCustom} [iteratee] - The iteratee to transform keys. - * @returns {Record} Returns the composed aggregate object. - * - * @example - * const array = [ - * { dir: 'left', code: 97 }, - * { dir: 'right', code: 100 } - * ]; - * - * keyBy(array, o => String.fromCharCode(o.code)); - * // => { a: { dir: 'left', code: 97 }, d: { dir: 'right', code: 100 } } - * - * keyBy(array, 'dir'); - * // => { left: { dir: 'left', code: 97 }, right: { dir: 'right', code: 100 } } - */ -declare function keyBy(collection: ArrayLike | null | undefined, iteratee?: ValueIterateeCustom): Record; -/** - * Creates an object composed of keys generated from the results of running each element of collection thru iteratee. - * - * @template T - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ValueIterateeCustom} [iteratee] - The iteratee to transform keys. - * @returns {Record} Returns the composed aggregate object. - * - * @example - * const obj = { a: { dir: 'left', code: 97 }, b: { dir: 'right', code: 100 } }; - * keyBy(obj, o => String.fromCharCode(o.code)); - * // => { a: { dir: 'left', code: 97 }, d: { dir: 'right', code: 100 } } - */ -declare function keyBy(collection: T | null | undefined, iteratee?: ValueIterateeCustom): Record; - -export { keyBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/keyBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/keyBy.js deleted file mode 100644 index e935e14..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/keyBy.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const reduce = require('./reduce.js'); -const identity = require('../../function/identity.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const isObjectLike = require('../predicate/isObjectLike.js'); -const iteratee = require('../util/iteratee.js'); - -function keyBy(collection, iteratee$1) { - if (!isArrayLike.isArrayLike(collection) && !isObjectLike.isObjectLike(collection)) { - return {}; - } - const keyFn = iteratee.iteratee(iteratee$1 ?? identity.identity); - return reduce.reduce(collection, (result, value) => { - const key = keyFn(value); - result[key] = value; - return result; - }, {}); -} - -exports.keyBy = keyBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/keyBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/keyBy.mjs deleted file mode 100644 index 410ff2a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/keyBy.mjs +++ /dev/null @@ -1,19 +0,0 @@ -import { reduce } from './reduce.mjs'; -import { identity } from '../../function/identity.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { isObjectLike } from '../predicate/isObjectLike.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function keyBy(collection, iteratee$1) { - if (!isArrayLike(collection) && !isObjectLike(collection)) { - return {}; - } - const keyFn = iteratee(iteratee$1 ?? identity); - return reduce(collection, (result, value) => { - const key = keyFn(value); - result[key] = value; - return result; - }, {}); -} - -export { keyBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/last.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/last.d.mts deleted file mode 100644 index 4270a80..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/last.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Returns the last element of an array. - * - * This function takes an array and returns the last element of the array. - * If the array is empty, the function returns `undefined`. - * - * Unlike some implementations, this function is optimized for performance - * by directly accessing the last index of the array. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} arr - The array from which to get the last element. - * @returns {T | undefined} The last element of the array, or `undefined` if the array is empty. - * - * @example - * const arr = [1, 2, 3]; - * const lastElement = last(arr); - * // lastElement will be 3 - * - * const emptyArr: number[] = []; - * const noElement = last(emptyArr); - * // noElement will be undefined - */ -declare function last(array: ArrayLike | null | undefined): T | undefined; - -export { last }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/last.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/last.d.ts deleted file mode 100644 index 4270a80..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/last.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Returns the last element of an array. - * - * This function takes an array and returns the last element of the array. - * If the array is empty, the function returns `undefined`. - * - * Unlike some implementations, this function is optimized for performance - * by directly accessing the last index of the array. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} arr - The array from which to get the last element. - * @returns {T | undefined} The last element of the array, or `undefined` if the array is empty. - * - * @example - * const arr = [1, 2, 3]; - * const lastElement = last(arr); - * // lastElement will be 3 - * - * const emptyArr: number[] = []; - * const noElement = last(emptyArr); - * // noElement will be undefined - */ -declare function last(array: ArrayLike | null | undefined): T | undefined; - -export { last }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/last.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/last.js deleted file mode 100644 index 85a596f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/last.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const last$1 = require('../../array/last.js'); -const toArray = require('../_internal/toArray.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function last(array) { - if (!isArrayLike.isArrayLike(array)) { - return undefined; - } - return last$1.last(toArray.toArray(array)); -} - -exports.last = last; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/last.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/last.mjs deleted file mode 100644 index e7aa26f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/last.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { last as last$1 } from '../../array/last.mjs'; -import { toArray } from '../_internal/toArray.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function last(array) { - if (!isArrayLike(array)) { - return undefined; - } - return last$1(toArray(array)); -} - -export { last }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/lastIndexOf.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/lastIndexOf.d.mts deleted file mode 100644 index bcb4d37..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/lastIndexOf.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Gets the index at which the last occurrence of value is found in array. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to inspect. - * @param {T} value - The value to search for. - * @param {true | number} [fromIndex] - The index to search from or true to search from the end. - * @returns {number} Returns the index of the matched value, else -1. - * - * @example - * lastIndexOf([1, 2, 1, 2], 2); - * // => 3 - * - * lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 - * - * lastIndexOf([1, 2, 1, 2], 2, true); - * // => 3 - */ -declare function lastIndexOf(array: ArrayLike | null | undefined, searchElement: T, fromIndex?: true | number): number; - -export { lastIndexOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/lastIndexOf.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/lastIndexOf.d.ts deleted file mode 100644 index bcb4d37..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/lastIndexOf.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Gets the index at which the last occurrence of value is found in array. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to inspect. - * @param {T} value - The value to search for. - * @param {true | number} [fromIndex] - The index to search from or true to search from the end. - * @returns {number} Returns the index of the matched value, else -1. - * - * @example - * lastIndexOf([1, 2, 1, 2], 2); - * // => 3 - * - * lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 - * - * lastIndexOf([1, 2, 1, 2], 2, true); - * // => 3 - */ -declare function lastIndexOf(array: ArrayLike | null | undefined, searchElement: T, fromIndex?: true | number): number; - -export { lastIndexOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/lastIndexOf.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/lastIndexOf.js deleted file mode 100644 index 1868157..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/lastIndexOf.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArrayLike = require('../predicate/isArrayLike.js'); - -function lastIndexOf(array, searchElement, fromIndex) { - if (!isArrayLike.isArrayLike(array) || array.length === 0) { - return -1; - } - const length = array.length; - let index = fromIndex ?? length - 1; - if (fromIndex != null) { - index = index < 0 ? Math.max(length + index, 0) : Math.min(index, length - 1); - } - if (Number.isNaN(searchElement)) { - for (let i = index; i >= 0; i--) { - if (Number.isNaN(array[i])) { - return i; - } - } - } - return Array.from(array).lastIndexOf(searchElement, index); -} - -exports.lastIndexOf = lastIndexOf; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/lastIndexOf.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/lastIndexOf.mjs deleted file mode 100644 index 887ea40..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/lastIndexOf.mjs +++ /dev/null @@ -1,22 +0,0 @@ -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function lastIndexOf(array, searchElement, fromIndex) { - if (!isArrayLike(array) || array.length === 0) { - return -1; - } - const length = array.length; - let index = fromIndex ?? length - 1; - if (fromIndex != null) { - index = index < 0 ? Math.max(length + index, 0) : Math.min(index, length - 1); - } - if (Number.isNaN(searchElement)) { - for (let i = index; i >= 0; i--) { - if (Number.isNaN(array[i])) { - return i; - } - } - } - return Array.from(array).lastIndexOf(searchElement, index); -} - -export { lastIndexOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/map.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/map.d.mts deleted file mode 100644 index bf3fb72..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/map.d.mts +++ /dev/null @@ -1,112 +0,0 @@ -import { ArrayIterator } from '../_internal/ArrayIterator.mjs'; -import { ListIterator } from '../_internal/ListIterator.mjs'; -import { ObjectIterator } from '../_internal/ObjectIterator.mjs'; -import { TupleIterator } from '../_internal/TupleIterator.mjs'; - -/** - * Maps each element in a tuple to a new tuple of values using an iteratee. - * - * @param {T} collection - The tuple to iterate over - * @param {TupleIterator} iteratee - The function invoked per iteration - * @returns {{ [K in keyof T]: U }} - Returns the new mapped tuple - * - * @example - * // Using a transformation function on a tuple - * const tuple = [1, 'hello', true] as const; - * map(tuple, value => String(value)); // => ['1', 'hello', 'true'] - */ -declare function map(collection: T, iteratee: TupleIterator): { - [K in keyof T]: U; -}; -/** - * Maps each element in an array to a new array using an iteratee. - * - * @param {T[] | null | undefined} collection - The array to iterate over - * @param {ArrayIterator} iteratee - The function invoked per iteration - * @returns {U[]} - Returns the new mapped array - * - * @example - * // Using a transformation function on an array - * const array = [1, 2, 3]; - * map(array, x => x * 2); // => [2, 4, 6] - */ -declare function map(collection: T[] | null | undefined, iteratee: ArrayIterator): U[]; -/** - * Maps each element in an array-like object to a new array using an iteratee. - * - * @param {ArrayLike | null | undefined} collection - The array-like object to iterate over - * @param {ListIterator} iteratee - The function invoked per iteration - * @returns {U[]} - Returns the new mapped array - * - * @example - * // Using a transformation function on an array-like object - * const arrayLike = { length: 2, 0: 'a', 1: 'b' }; - * map(arrayLike, x => x.toUpperCase()); // => ['A', 'B'] - */ -declare function map(collection: ArrayLike | null | undefined, iteratee: ListIterator): U[]; -/** - * Maps each value in an object to a new array. - * - * @param {Record | Record | null | undefined} collection - The object to iterate over - * @returns {T[]} - Returns an array of the object's values - * - * @example - * // Converting an object's values to an array - * const obj = { a: 1, b: 2, c: 3 }; - * map(obj); // => [1, 2, 3] - */ -declare function map(collection: Record | Record | null | undefined): T[]; -/** - * Maps each element in an object to a new array using an iteratee. - * - * @param {T | null | undefined} collection - The object to iterate over - * @param {ObjectIterator} iteratee - The function invoked per iteration - * @returns {U[]} - Returns the new mapped array - * - * @example - * // Using a transformation function on an object - * const obj = { a: 1, b: 2 }; - * map(obj, (value, key) => `${key}:${value}`); // => ['a:1', 'b:2'] - */ -declare function map(collection: T | null | undefined, iteratee: ObjectIterator): U[]; -/** - * Maps each element in an object to a new array by plucking the specified property. - * - * @param {Record | Record | null | undefined} collection - The object to iterate over - * @param {K} iteratee - The property to pluck from each element - * @returns {Array} - Returns the new array of plucked values - * - * @example - * // Plucking a property from each object - * const users = [{ name: 'John', age: 30 }, { name: 'Jane', age: 25 }]; - * map(users, 'name'); // => ['John', 'Jane'] - */ -declare function map(collection: Record | Record | null | undefined, iteratee: K): Array; -/** - * Maps each element in an object to a new array by plucking the specified string property. - * - * @param {Record | Record | null | undefined} collection - The object to iterate over - * @param {string} [iteratee] - The string property to pluck from each element - * @returns {any[]} - Returns the new array of plucked values - * - * @example - * // Plucking a nested property - * const users = [{ info: { name: 'John' } }, { info: { name: 'Jane' } }]; - * map(users, 'info.name'); // => ['John', 'Jane'] - */ -declare function map(collection: Record | Record | null | undefined, iteratee?: string): any[]; -/** - * Maps each element in an object to a new array by matching against a source object. - * - * @param {Record | Record | null | undefined} collection - The object to iterate over - * @param {object} [iteratee] - The object to match against - * @returns {boolean[]} - Returns an array of boolean values indicating matches - * - * @example - * // Matching against a source object - * const users = [{ name: 'John', age: 30 }, { name: 'Jane', age: 25 }]; - * map(users, { age: 30 }); // => [true, false] - */ -declare function map(collection: Record | Record | null | undefined, iteratee?: object): boolean[]; - -export { map }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/map.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/map.d.ts deleted file mode 100644 index 6be6989..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/map.d.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { ArrayIterator } from '../_internal/ArrayIterator.js'; -import { ListIterator } from '../_internal/ListIterator.js'; -import { ObjectIterator } from '../_internal/ObjectIterator.js'; -import { TupleIterator } from '../_internal/TupleIterator.js'; - -/** - * Maps each element in a tuple to a new tuple of values using an iteratee. - * - * @param {T} collection - The tuple to iterate over - * @param {TupleIterator} iteratee - The function invoked per iteration - * @returns {{ [K in keyof T]: U }} - Returns the new mapped tuple - * - * @example - * // Using a transformation function on a tuple - * const tuple = [1, 'hello', true] as const; - * map(tuple, value => String(value)); // => ['1', 'hello', 'true'] - */ -declare function map(collection: T, iteratee: TupleIterator): { - [K in keyof T]: U; -}; -/** - * Maps each element in an array to a new array using an iteratee. - * - * @param {T[] | null | undefined} collection - The array to iterate over - * @param {ArrayIterator} iteratee - The function invoked per iteration - * @returns {U[]} - Returns the new mapped array - * - * @example - * // Using a transformation function on an array - * const array = [1, 2, 3]; - * map(array, x => x * 2); // => [2, 4, 6] - */ -declare function map(collection: T[] | null | undefined, iteratee: ArrayIterator): U[]; -/** - * Maps each element in an array-like object to a new array using an iteratee. - * - * @param {ArrayLike | null | undefined} collection - The array-like object to iterate over - * @param {ListIterator} iteratee - The function invoked per iteration - * @returns {U[]} - Returns the new mapped array - * - * @example - * // Using a transformation function on an array-like object - * const arrayLike = { length: 2, 0: 'a', 1: 'b' }; - * map(arrayLike, x => x.toUpperCase()); // => ['A', 'B'] - */ -declare function map(collection: ArrayLike | null | undefined, iteratee: ListIterator): U[]; -/** - * Maps each value in an object to a new array. - * - * @param {Record | Record | null | undefined} collection - The object to iterate over - * @returns {T[]} - Returns an array of the object's values - * - * @example - * // Converting an object's values to an array - * const obj = { a: 1, b: 2, c: 3 }; - * map(obj); // => [1, 2, 3] - */ -declare function map(collection: Record | Record | null | undefined): T[]; -/** - * Maps each element in an object to a new array using an iteratee. - * - * @param {T | null | undefined} collection - The object to iterate over - * @param {ObjectIterator} iteratee - The function invoked per iteration - * @returns {U[]} - Returns the new mapped array - * - * @example - * // Using a transformation function on an object - * const obj = { a: 1, b: 2 }; - * map(obj, (value, key) => `${key}:${value}`); // => ['a:1', 'b:2'] - */ -declare function map(collection: T | null | undefined, iteratee: ObjectIterator): U[]; -/** - * Maps each element in an object to a new array by plucking the specified property. - * - * @param {Record | Record | null | undefined} collection - The object to iterate over - * @param {K} iteratee - The property to pluck from each element - * @returns {Array} - Returns the new array of plucked values - * - * @example - * // Plucking a property from each object - * const users = [{ name: 'John', age: 30 }, { name: 'Jane', age: 25 }]; - * map(users, 'name'); // => ['John', 'Jane'] - */ -declare function map(collection: Record | Record | null | undefined, iteratee: K): Array; -/** - * Maps each element in an object to a new array by plucking the specified string property. - * - * @param {Record | Record | null | undefined} collection - The object to iterate over - * @param {string} [iteratee] - The string property to pluck from each element - * @returns {any[]} - Returns the new array of plucked values - * - * @example - * // Plucking a nested property - * const users = [{ info: { name: 'John' } }, { info: { name: 'Jane' } }]; - * map(users, 'info.name'); // => ['John', 'Jane'] - */ -declare function map(collection: Record | Record | null | undefined, iteratee?: string): any[]; -/** - * Maps each element in an object to a new array by matching against a source object. - * - * @param {Record | Record | null | undefined} collection - The object to iterate over - * @param {object} [iteratee] - The object to match against - * @returns {boolean[]} - Returns an array of boolean values indicating matches - * - * @example - * // Matching against a source object - * const users = [{ name: 'John', age: 30 }, { name: 'Jane', age: 25 }]; - * map(users, { age: 30 }); // => [true, false] - */ -declare function map(collection: Record | Record | null | undefined, iteratee?: object): boolean[]; - -export { map }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/map.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/map.js deleted file mode 100644 index 4006eec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/map.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const range = require('../../math/range.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const iteratee = require('../util/iteratee.js'); - -function map(collection, _iteratee) { - if (!collection) { - return []; - } - const keys = isArrayLike.isArrayLike(collection) || Array.isArray(collection) ? range.range(0, collection.length) : Object.keys(collection); - const iteratee$1 = iteratee.iteratee(_iteratee ?? identity.identity); - const result = new Array(keys.length); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = collection[key]; - result[i] = iteratee$1(value, key, collection); - } - return result; -} - -exports.map = map; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/map.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/map.mjs deleted file mode 100644 index e8b12f7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/map.mjs +++ /dev/null @@ -1,21 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { range } from '../../math/range.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function map(collection, _iteratee) { - if (!collection) { - return []; - } - const keys = isArrayLike(collection) || Array.isArray(collection) ? range(0, collection.length) : Object.keys(collection); - const iteratee$1 = iteratee(_iteratee ?? identity); - const result = new Array(keys.length); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = collection[key]; - result[i] = iteratee$1(value, key, collection); - } - return result; -} - -export { map }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/nth.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/nth.d.mts deleted file mode 100644 index 5e5e381..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/nth.d.mts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Gets the element at index `n` of `array`. If `n` is negative, the nth element from the end is returned. - * - * @param {ArrayLike | null | undefined} array - The array to query. - * @param {number} [n=0] - The index of the element to return. - * @return {T | undefined} Returns the nth element of `array`. - * - * @example - * nth([1, 2, 3], 1); // => 2 - * nth([1, 2, 3], -1); // => 3 - */ -declare function nth(array: ArrayLike | null | undefined, n?: number): T | undefined; - -export { nth }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/nth.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/nth.d.ts deleted file mode 100644 index 5e5e381..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/nth.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Gets the element at index `n` of `array`. If `n` is negative, the nth element from the end is returned. - * - * @param {ArrayLike | null | undefined} array - The array to query. - * @param {number} [n=0] - The index of the element to return. - * @return {T | undefined} Returns the nth element of `array`. - * - * @example - * nth([1, 2, 3], 1); // => 2 - * nth([1, 2, 3], -1); // => 3 - */ -declare function nth(array: ArrayLike | null | undefined, n?: number): T | undefined; - -export { nth }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/nth.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/nth.js deleted file mode 100644 index 611900c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/nth.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); -const toInteger = require('../util/toInteger.js'); - -function nth(array, n = 0) { - if (!isArrayLikeObject.isArrayLikeObject(array) || array.length === 0) { - return undefined; - } - n = toInteger.toInteger(n); - if (n < 0) { - n += array.length; - } - return array[n]; -} - -exports.nth = nth; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/nth.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/nth.mjs deleted file mode 100644 index 4ab81f8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/nth.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; -import { toInteger } from '../util/toInteger.mjs'; - -function nth(array, n = 0) { - if (!isArrayLikeObject(array) || array.length === 0) { - return undefined; - } - n = toInteger(n); - if (n < 0) { - n += array.length; - } - return array[n]; -} - -export { nth }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/orderBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/orderBy.d.mts deleted file mode 100644 index 8136918..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/orderBy.d.mts +++ /dev/null @@ -1,84 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.mjs'; -import { ListIterator } from '../_internal/ListIterator.mjs'; -import { Many } from '../_internal/Many.mjs'; -import { ObjectIteratee } from '../_internal/ObjectIteratee.mjs'; -import { ObjectIterator } from '../_internal/ObjectIterator.mjs'; - -/** - * Sorts an array of elements based on multiple iteratee functions and their corresponding order directions. - * - * @template T The type of elements in the array - * @param {ArrayLike | null | undefined} collection The array to sort - * @param {Many>} iteratees The iteratee functions to sort by - * @param {Many} orders The sort orders - * @returns {T[]} Returns the new sorted array - * @example - * const users = [ - * { name: 'fred', age: 48 }, - * { name: 'barney', age: 34 } - * ]; - * - * // Sort by age in ascending order - * orderBy(users, [(user) => user.age], ['asc']); - * // => [{ name: 'barney', age: 34 }, { name: 'fred', age: 48 }] - */ -declare function orderBy(collection: ArrayLike | null | undefined, iteratees?: Many>, orders?: Many): T[]; -/** - * Sorts an array of elements based on multiple property names/paths and their corresponding order directions. - * - * @template T The type of elements in the array - * @param {ArrayLike | null | undefined} collection The array to sort - * @param {Many>} iteratees The property names/paths to sort by - * @param {Many} orders The sort orders - * @returns {T[]} Returns the new sorted array - * @example - * const users = [ - * { name: 'fred', age: 48 }, - * { name: 'barney', age: 34 } - * ]; - * - * // Sort by name in ascending order - * orderBy(users, ['name'], ['asc']); - * // => [{ name: 'barney', age: 34 }, { name: 'fred', age: 48 }] - */ -declare function orderBy(collection: ArrayLike | null | undefined, iteratees?: Many>, orders?: Many): T[]; -/** - * Sorts an object's values based on multiple iteratee functions and their corresponding order directions. - * - * @template T The object type - * @param {T | null | undefined} collection The object to sort values from - * @param {Many>} iteratees The iteratee functions to sort by - * @param {Many} orders The sort orders - * @returns {Array} Returns the new sorted array - * @example - * const obj = { - * a: { name: 'fred', age: 48 }, - * b: { name: 'barney', age: 34 } - * }; - * - * // Sort by age in ascending order - * orderBy(obj, [(user) => user.age], ['asc']); - * // => [{ name: 'barney', age: 34 }, { name: 'fred', age: 48 }] - */ -declare function orderBy(collection: T | null | undefined, iteratees?: Many>, orders?: Many): Array; -/** - * Sorts an object's values based on multiple property names/paths and their corresponding order directions. - * - * @template T The object type - * @param {T | null | undefined} collection The object to sort values from - * @param {Many>} iteratees The property names/paths to sort by - * @param {Many} orders The sort orders - * @returns {Array} Returns the new sorted array - * @example - * const obj = { - * a: { name: 'fred', age: 48 }, - * b: { name: 'barney', age: 34 } - * }; - * - * // Sort by name in ascending order - * orderBy(obj, ['name'], ['asc']); - * // => [{ name: 'barney', age: 34 }, { name: 'fred', age: 48 }] - */ -declare function orderBy(collection: T | null | undefined, iteratees?: Many>, orders?: Many): Array; - -export { orderBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/orderBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/orderBy.d.ts deleted file mode 100644 index 86bb981..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/orderBy.d.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.js'; -import { ListIterator } from '../_internal/ListIterator.js'; -import { Many } from '../_internal/Many.js'; -import { ObjectIteratee } from '../_internal/ObjectIteratee.js'; -import { ObjectIterator } from '../_internal/ObjectIterator.js'; - -/** - * Sorts an array of elements based on multiple iteratee functions and their corresponding order directions. - * - * @template T The type of elements in the array - * @param {ArrayLike | null | undefined} collection The array to sort - * @param {Many>} iteratees The iteratee functions to sort by - * @param {Many} orders The sort orders - * @returns {T[]} Returns the new sorted array - * @example - * const users = [ - * { name: 'fred', age: 48 }, - * { name: 'barney', age: 34 } - * ]; - * - * // Sort by age in ascending order - * orderBy(users, [(user) => user.age], ['asc']); - * // => [{ name: 'barney', age: 34 }, { name: 'fred', age: 48 }] - */ -declare function orderBy(collection: ArrayLike | null | undefined, iteratees?: Many>, orders?: Many): T[]; -/** - * Sorts an array of elements based on multiple property names/paths and their corresponding order directions. - * - * @template T The type of elements in the array - * @param {ArrayLike | null | undefined} collection The array to sort - * @param {Many>} iteratees The property names/paths to sort by - * @param {Many} orders The sort orders - * @returns {T[]} Returns the new sorted array - * @example - * const users = [ - * { name: 'fred', age: 48 }, - * { name: 'barney', age: 34 } - * ]; - * - * // Sort by name in ascending order - * orderBy(users, ['name'], ['asc']); - * // => [{ name: 'barney', age: 34 }, { name: 'fred', age: 48 }] - */ -declare function orderBy(collection: ArrayLike | null | undefined, iteratees?: Many>, orders?: Many): T[]; -/** - * Sorts an object's values based on multiple iteratee functions and their corresponding order directions. - * - * @template T The object type - * @param {T | null | undefined} collection The object to sort values from - * @param {Many>} iteratees The iteratee functions to sort by - * @param {Many} orders The sort orders - * @returns {Array} Returns the new sorted array - * @example - * const obj = { - * a: { name: 'fred', age: 48 }, - * b: { name: 'barney', age: 34 } - * }; - * - * // Sort by age in ascending order - * orderBy(obj, [(user) => user.age], ['asc']); - * // => [{ name: 'barney', age: 34 }, { name: 'fred', age: 48 }] - */ -declare function orderBy(collection: T | null | undefined, iteratees?: Many>, orders?: Many): Array; -/** - * Sorts an object's values based on multiple property names/paths and their corresponding order directions. - * - * @template T The object type - * @param {T | null | undefined} collection The object to sort values from - * @param {Many>} iteratees The property names/paths to sort by - * @param {Many} orders The sort orders - * @returns {Array} Returns the new sorted array - * @example - * const obj = { - * a: { name: 'fred', age: 48 }, - * b: { name: 'barney', age: 34 } - * }; - * - * // Sort by name in ascending order - * orderBy(obj, ['name'], ['asc']); - * // => [{ name: 'barney', age: 34 }, { name: 'fred', age: 48 }] - */ -declare function orderBy(collection: T | null | undefined, iteratees?: Many>, orders?: Many): Array; - -export { orderBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/orderBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/orderBy.js deleted file mode 100644 index b9a474d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/orderBy.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const compareValues = require('../_internal/compareValues.js'); -const isKey = require('../_internal/isKey.js'); -const toPath = require('../util/toPath.js'); - -function orderBy(collection, criteria, orders, guard) { - if (collection == null) { - return []; - } - orders = guard ? undefined : orders; - if (!Array.isArray(collection)) { - collection = Object.values(collection); - } - if (!Array.isArray(criteria)) { - criteria = criteria == null ? [null] : [criteria]; - } - if (criteria.length === 0) { - criteria = [null]; - } - if (!Array.isArray(orders)) { - orders = orders == null ? [] : [orders]; - } - orders = orders.map(order => String(order)); - const getValueByNestedPath = (object, path) => { - let target = object; - for (let i = 0; i < path.length && target != null; ++i) { - target = target[path[i]]; - } - return target; - }; - const getValueByCriterion = (criterion, object) => { - if (object == null || criterion == null) { - return object; - } - if (typeof criterion === 'object' && 'key' in criterion) { - if (Object.hasOwn(object, criterion.key)) { - return object[criterion.key]; - } - return getValueByNestedPath(object, criterion.path); - } - if (typeof criterion === 'function') { - return criterion(object); - } - if (Array.isArray(criterion)) { - return getValueByNestedPath(object, criterion); - } - if (typeof object === 'object') { - return object[criterion]; - } - return object; - }; - const preparedCriteria = criteria.map((criterion) => { - if (Array.isArray(criterion) && criterion.length === 1) { - criterion = criterion[0]; - } - if (criterion == null || typeof criterion === 'function' || Array.isArray(criterion) || isKey.isKey(criterion)) { - return criterion; - } - return { key: criterion, path: toPath.toPath(criterion) }; - }); - const preparedCollection = collection.map(item => ({ - original: item, - criteria: preparedCriteria.map((criterion) => getValueByCriterion(criterion, item)), - })); - return preparedCollection - .slice() - .sort((a, b) => { - for (let i = 0; i < preparedCriteria.length; i++) { - const comparedResult = compareValues.compareValues(a.criteria[i], b.criteria[i], orders[i]); - if (comparedResult !== 0) { - return comparedResult; - } - } - return 0; - }) - .map(item => item.original); -} - -exports.orderBy = orderBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/orderBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/orderBy.mjs deleted file mode 100644 index 3ec5653..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/orderBy.mjs +++ /dev/null @@ -1,78 +0,0 @@ -import { compareValues } from '../_internal/compareValues.mjs'; -import { isKey } from '../_internal/isKey.mjs'; -import { toPath } from '../util/toPath.mjs'; - -function orderBy(collection, criteria, orders, guard) { - if (collection == null) { - return []; - } - orders = guard ? undefined : orders; - if (!Array.isArray(collection)) { - collection = Object.values(collection); - } - if (!Array.isArray(criteria)) { - criteria = criteria == null ? [null] : [criteria]; - } - if (criteria.length === 0) { - criteria = [null]; - } - if (!Array.isArray(orders)) { - orders = orders == null ? [] : [orders]; - } - orders = orders.map(order => String(order)); - const getValueByNestedPath = (object, path) => { - let target = object; - for (let i = 0; i < path.length && target != null; ++i) { - target = target[path[i]]; - } - return target; - }; - const getValueByCriterion = (criterion, object) => { - if (object == null || criterion == null) { - return object; - } - if (typeof criterion === 'object' && 'key' in criterion) { - if (Object.hasOwn(object, criterion.key)) { - return object[criterion.key]; - } - return getValueByNestedPath(object, criterion.path); - } - if (typeof criterion === 'function') { - return criterion(object); - } - if (Array.isArray(criterion)) { - return getValueByNestedPath(object, criterion); - } - if (typeof object === 'object') { - return object[criterion]; - } - return object; - }; - const preparedCriteria = criteria.map((criterion) => { - if (Array.isArray(criterion) && criterion.length === 1) { - criterion = criterion[0]; - } - if (criterion == null || typeof criterion === 'function' || Array.isArray(criterion) || isKey(criterion)) { - return criterion; - } - return { key: criterion, path: toPath(criterion) }; - }); - const preparedCollection = collection.map(item => ({ - original: item, - criteria: preparedCriteria.map((criterion) => getValueByCriterion(criterion, item)), - })); - return preparedCollection - .slice() - .sort((a, b) => { - for (let i = 0; i < preparedCriteria.length; i++) { - const comparedResult = compareValues(a.criteria[i], b.criteria[i], orders[i]); - if (comparedResult !== 0) { - return comparedResult; - } - } - return 0; - }) - .map(item => item.original); -} - -export { orderBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/partition.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/partition.d.mts deleted file mode 100644 index ffad3fb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/partition.d.mts +++ /dev/null @@ -1,50 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; -import { ValueIteratorTypeGuard } from '../_internal/ValueIteratorTypeGuard.mjs'; - -/** - * Creates an array of elements split into two groups, the first of which contains elements - * predicate returns truthy for, while the second of which contains elements predicate returns falsey for. - * The predicate is invoked with one argument: (value). - * - * @template T, U - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {(value: T) => value is U} callback - The function invoked per iteration. - * @returns {[U[], Array>]} Returns the array of grouped elements. - * - * @example - * partition([1, 2, 3, 4], n => n % 2 === 0); - * // => [[2, 4], [1, 3]] - */ -declare function partition(collection: ArrayLike | null | undefined, callback: ValueIteratorTypeGuard): [U[], Array>]; -/** - * Creates an array of elements split into two groups, the first of which contains elements - * predicate returns truthy for, while the second of which contains elements predicate returns falsey for. - * The predicate is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {((value: T) => unknown) | PropertyKey | [PropertyKey, any] | Partial} callback - The function invoked per iteration. - * @returns {[T[], T[]]} Returns the array of grouped elements. - * - * @example - * partition([1, 2, 3, 4], n => n % 2 === 0); - * // => [[2, 4], [1, 3]] - */ -declare function partition(collection: ArrayLike | null | undefined, callback: ValueIteratee): [T[], T[]]; -/** - * Creates an array of elements split into two groups, the first of which contains elements - * predicate returns truthy for, while the second of which contains elements predicate returns falsey for. - * The predicate is invoked with one argument: (value). - * - * @template T - * @param {T | null | undefined} collection - The collection to iterate over. - * @param {((value: T[keyof T]) => unknown) | PropertyKey | [PropertyKey, any] | Partial} callback - The function invoked per iteration. - * @returns {[Array, Array]} Returns the array of grouped elements. - * - * @example - * partition({ a: 1, b: 2, c: 3 }, n => n % 2 === 0); - * // => [[2], [1, 3]] - */ -declare function partition(collection: T | null | undefined, callback: ValueIteratee): [Array, Array]; - -export { partition }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/partition.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/partition.d.ts deleted file mode 100644 index 6b8bc6d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/partition.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; -import { ValueIteratorTypeGuard } from '../_internal/ValueIteratorTypeGuard.js'; - -/** - * Creates an array of elements split into two groups, the first of which contains elements - * predicate returns truthy for, while the second of which contains elements predicate returns falsey for. - * The predicate is invoked with one argument: (value). - * - * @template T, U - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {(value: T) => value is U} callback - The function invoked per iteration. - * @returns {[U[], Array>]} Returns the array of grouped elements. - * - * @example - * partition([1, 2, 3, 4], n => n % 2 === 0); - * // => [[2, 4], [1, 3]] - */ -declare function partition(collection: ArrayLike | null | undefined, callback: ValueIteratorTypeGuard): [U[], Array>]; -/** - * Creates an array of elements split into two groups, the first of which contains elements - * predicate returns truthy for, while the second of which contains elements predicate returns falsey for. - * The predicate is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {((value: T) => unknown) | PropertyKey | [PropertyKey, any] | Partial} callback - The function invoked per iteration. - * @returns {[T[], T[]]} Returns the array of grouped elements. - * - * @example - * partition([1, 2, 3, 4], n => n % 2 === 0); - * // => [[2, 4], [1, 3]] - */ -declare function partition(collection: ArrayLike | null | undefined, callback: ValueIteratee): [T[], T[]]; -/** - * Creates an array of elements split into two groups, the first of which contains elements - * predicate returns truthy for, while the second of which contains elements predicate returns falsey for. - * The predicate is invoked with one argument: (value). - * - * @template T - * @param {T | null | undefined} collection - The collection to iterate over. - * @param {((value: T[keyof T]) => unknown) | PropertyKey | [PropertyKey, any] | Partial} callback - The function invoked per iteration. - * @returns {[Array, Array]} Returns the array of grouped elements. - * - * @example - * partition({ a: 1, b: 2, c: 3 }, n => n % 2 === 0); - * // => [[2], [1, 3]] - */ -declare function partition(collection: T | null | undefined, callback: ValueIteratee): [Array, Array]; - -export { partition }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/partition.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/partition.js deleted file mode 100644 index e42a18c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/partition.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const iteratee = require('../util/iteratee.js'); - -function partition(source, predicate = identity.identity) { - if (!source) { - return [[], []]; - } - const collection = isArrayLike.isArrayLike(source) ? source : Object.values(source); - predicate = iteratee.iteratee(predicate); - const matched = []; - const unmatched = []; - for (let i = 0; i < collection.length; i++) { - const value = collection[i]; - if (predicate(value)) { - matched.push(value); - } - else { - unmatched.push(value); - } - } - return [matched, unmatched]; -} - -exports.partition = partition; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/partition.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/partition.mjs deleted file mode 100644 index 4f3658b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/partition.mjs +++ /dev/null @@ -1,25 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function partition(source, predicate = identity) { - if (!source) { - return [[], []]; - } - const collection = isArrayLike(source) ? source : Object.values(source); - predicate = iteratee(predicate); - const matched = []; - const unmatched = []; - for (let i = 0; i < collection.length; i++) { - const value = collection[i]; - if (predicate(value)) { - matched.push(value); - } - else { - unmatched.push(value); - } - } - return [matched, unmatched]; -} - -export { partition }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pull.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pull.d.mts deleted file mode 100644 index 77c1dc8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pull.d.mts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Removes all provided values from array using SameValueZero for equality comparisons. - * - * **Note:** Unlike `_.without`, this method mutates `array`. - * - * @template T - * @param {T[]} array - The array to modify. - * @param {...T[]} values - The values to remove. - * @returns {T[]} Returns `array`. - * - * @example - * var array = [1, 2, 3, 1, 2, 3]; - * - * pull(array, 2, 3); - * console.log(array); - * // => [1, 1] - */ -declare function pull(array: T[], ...values: T[]): T[]; -/** - * Removes all provided values from array using SameValueZero for equality comparisons. - * - * **Note:** Unlike `_.without`, this method mutates `array`. - * - * @template L - * @param {L} array - The array to modify. - * @param {...L[0][]} values - The values to remove. - * @returns {L} Returns `array`. - * - * @example - * var array = [1, 2, 3, 1, 2, 3]; - * - * pull(array, 2, 3); - * console.log(array); - * // => [1, 1] - */ -declare function pull>(array: L extends readonly any[] ? never : L, ...values: Array): L; - -export { pull }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pull.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pull.d.ts deleted file mode 100644 index 77c1dc8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pull.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Removes all provided values from array using SameValueZero for equality comparisons. - * - * **Note:** Unlike `_.without`, this method mutates `array`. - * - * @template T - * @param {T[]} array - The array to modify. - * @param {...T[]} values - The values to remove. - * @returns {T[]} Returns `array`. - * - * @example - * var array = [1, 2, 3, 1, 2, 3]; - * - * pull(array, 2, 3); - * console.log(array); - * // => [1, 1] - */ -declare function pull(array: T[], ...values: T[]): T[]; -/** - * Removes all provided values from array using SameValueZero for equality comparisons. - * - * **Note:** Unlike `_.without`, this method mutates `array`. - * - * @template L - * @param {L} array - The array to modify. - * @param {...L[0][]} values - The values to remove. - * @returns {L} Returns `array`. - * - * @example - * var array = [1, 2, 3, 1, 2, 3]; - * - * pull(array, 2, 3); - * console.log(array); - * // => [1, 1] - */ -declare function pull>(array: L extends readonly any[] ? never : L, ...values: Array): L; - -export { pull }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pull.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pull.js deleted file mode 100644 index 576fe98..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pull.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const pull$1 = require('../../array/pull.js'); - -function pull(arr, ...valuesToRemove) { - return pull$1.pull(arr, valuesToRemove); -} - -exports.pull = pull; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pull.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pull.mjs deleted file mode 100644 index 520a22b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pull.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { pull as pull$1 } from '../../array/pull.mjs'; - -function pull(arr, ...valuesToRemove) { - return pull$1(arr, valuesToRemove); -} - -export { pull }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAll.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAll.d.mts deleted file mode 100644 index 07680d7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAll.d.mts +++ /dev/null @@ -1,41 +0,0 @@ -import { MutableList } from '../_internal/MutableList.d.mjs'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.mjs'; - -/** - * This method is like `_.pull` except that it accepts an array of values to remove. - * - * **Note:** Unlike `_.difference`, this method mutates `array`. - * - * @template T - * @param {T[]} array - The array to modify. - * @param {ArrayLike} [values] - The values to remove. - * @returns {T[]} Returns `array`. - * - * @example - * var array = [1, 2, 3, 1, 2, 3]; - * - * pullAll(array, [2, 3]); - * console.log(array); - * // => [1, 1] - */ -declare function pullAll(array: T[], values?: ArrayLike): T[]; -/** - * This method is like `_.pull` except that it accepts an array of values to remove. - * - * **Note:** Unlike `_.difference`, this method mutates `array`. - * - * @template L - * @param {RejectReadonly} array - The array to modify. - * @param {List} [values] - The values to remove. - * @returns {L} Returns `array`. - * - * @example - * var array = [1, 2, 3, 1, 2, 3]; - * - * pullAll(array, [2, 3]); - * console.log(array); - * // => [1, 1] - */ -declare function pullAll>(array: RejectReadonly, values?: ArrayLike): L; - -export { pullAll }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAll.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAll.d.ts deleted file mode 100644 index c6e2c23..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAll.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { MutableList } from '../_internal/MutableList.d.js'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.js'; - -/** - * This method is like `_.pull` except that it accepts an array of values to remove. - * - * **Note:** Unlike `_.difference`, this method mutates `array`. - * - * @template T - * @param {T[]} array - The array to modify. - * @param {ArrayLike} [values] - The values to remove. - * @returns {T[]} Returns `array`. - * - * @example - * var array = [1, 2, 3, 1, 2, 3]; - * - * pullAll(array, [2, 3]); - * console.log(array); - * // => [1, 1] - */ -declare function pullAll(array: T[], values?: ArrayLike): T[]; -/** - * This method is like `_.pull` except that it accepts an array of values to remove. - * - * **Note:** Unlike `_.difference`, this method mutates `array`. - * - * @template L - * @param {RejectReadonly} array - The array to modify. - * @param {List} [values] - The values to remove. - * @returns {L} Returns `array`. - * - * @example - * var array = [1, 2, 3, 1, 2, 3]; - * - * pullAll(array, [2, 3]); - * console.log(array); - * // => [1, 1] - */ -declare function pullAll>(array: RejectReadonly, values?: ArrayLike): L; - -export { pullAll }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAll.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAll.js deleted file mode 100644 index 1f8fd09..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAll.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const pull = require('../../array/pull.js'); - -function pullAll(arr, valuesToRemove = []) { - return pull.pull(arr, Array.from(valuesToRemove)); -} - -exports.pullAll = pullAll; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAll.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAll.mjs deleted file mode 100644 index beadc77..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAll.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { pull } from '../../array/pull.mjs'; - -function pullAll(arr, valuesToRemove = []) { - return pull(arr, Array.from(valuesToRemove)); -} - -export { pullAll }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllBy.d.mts deleted file mode 100644 index cf128ab..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllBy.d.mts +++ /dev/null @@ -1,86 +0,0 @@ -import { MutableList } from '../_internal/MutableList.d.mjs'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.mjs'; -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * Removes all specified values from an array using an iteratee function. - * - * This function changes `arr` in place. - * If you want to remove values without modifying the original array, use `differenceBy`. - * - * @template T - * @param {T[]} array - The array to modify. - * @param {ArrayLike} [values] - The values to remove. - * @param {((value: T) => unknown) | PropertyKey | [PropertyKey, any] | Partial} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns `array`. - * - * @example - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ -declare function pullAllBy(array: T[], values?: ArrayLike, iteratee?: ValueIteratee): T[]; -/** - * Removes all specified values from an array using an iteratee function. - * - * This function changes `arr` in place. - * If you want to remove values without modifying the original array, use `differenceBy`. - * - * @template L - * @param {RejectReadonly} array - The array to modify. - * @param {ArrayLike} [values] - The values to remove. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {L} Returns `array`. - * - * @example - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ -declare function pullAllBy>(array: RejectReadonly, values?: ArrayLike, iteratee?: ValueIteratee): L; -/** - * Removes all specified values from an array using an iteratee function. - * - * This function changes `arr` in place. - * If you want to remove values without modifying the original array, use `differenceBy`. - * - * @template T, U - * @param {T[]} array - The array to modify. - * @param {ArrayLike} values - The values to remove. - * @param {((value: T | U) => unknown) | PropertyKey | [PropertyKey, any] | Partial} iteratee - The iteratee invoked per element. - * @returns {T[]} Returns `array`. - * - * @example - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ -declare function pullAllBy(array: T[], values: ArrayLike, iteratee: ValueIteratee): T[]; -/** - * Removes all specified values from an array using an iteratee function. - * - * This function changes `arr` in place. - * If you want to remove values without modifying the original array, use `differenceBy`. - * - * @template L, U - * @param {L} array - The array to modify. - * @param {ArrayLike} values - The values to remove. - * @param {((value: L[0] | U) => unknown) | PropertyKey | [PropertyKey, any] | Partial} iteratee - The iteratee invoked per element. - * @returns {L} Returns `array`. - * - * @example - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ -declare function pullAllBy, U>(array: L extends readonly any[] ? never : L, values: ArrayLike, iteratee: ValueIteratee): L; - -export { pullAllBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllBy.d.ts deleted file mode 100644 index 87bf3c6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllBy.d.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { MutableList } from '../_internal/MutableList.d.js'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.js'; -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * Removes all specified values from an array using an iteratee function. - * - * This function changes `arr` in place. - * If you want to remove values without modifying the original array, use `differenceBy`. - * - * @template T - * @param {T[]} array - The array to modify. - * @param {ArrayLike} [values] - The values to remove. - * @param {((value: T) => unknown) | PropertyKey | [PropertyKey, any] | Partial} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns `array`. - * - * @example - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ -declare function pullAllBy(array: T[], values?: ArrayLike, iteratee?: ValueIteratee): T[]; -/** - * Removes all specified values from an array using an iteratee function. - * - * This function changes `arr` in place. - * If you want to remove values without modifying the original array, use `differenceBy`. - * - * @template L - * @param {RejectReadonly} array - The array to modify. - * @param {ArrayLike} [values] - The values to remove. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {L} Returns `array`. - * - * @example - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ -declare function pullAllBy>(array: RejectReadonly, values?: ArrayLike, iteratee?: ValueIteratee): L; -/** - * Removes all specified values from an array using an iteratee function. - * - * This function changes `arr` in place. - * If you want to remove values without modifying the original array, use `differenceBy`. - * - * @template T, U - * @param {T[]} array - The array to modify. - * @param {ArrayLike} values - The values to remove. - * @param {((value: T | U) => unknown) | PropertyKey | [PropertyKey, any] | Partial} iteratee - The iteratee invoked per element. - * @returns {T[]} Returns `array`. - * - * @example - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ -declare function pullAllBy(array: T[], values: ArrayLike, iteratee: ValueIteratee): T[]; -/** - * Removes all specified values from an array using an iteratee function. - * - * This function changes `arr` in place. - * If you want to remove values without modifying the original array, use `differenceBy`. - * - * @template L, U - * @param {L} array - The array to modify. - * @param {ArrayLike} values - The values to remove. - * @param {((value: L[0] | U) => unknown) | PropertyKey | [PropertyKey, any] | Partial} iteratee - The iteratee invoked per element. - * @returns {L} Returns `array`. - * - * @example - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ -declare function pullAllBy, U>(array: L extends readonly any[] ? never : L, values: ArrayLike, iteratee: ValueIteratee): L; - -export { pullAllBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllBy.js deleted file mode 100644 index b4f8aba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllBy.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const iteratee = require('../util/iteratee.js'); - -function pullAllBy(arr, valuesToRemove, _getValue) { - const getValue = iteratee.iteratee(_getValue); - const valuesSet = new Set(Array.from(valuesToRemove).map(x => getValue(x))); - let resultIndex = 0; - for (let i = 0; i < arr.length; i++) { - const value = getValue(arr[i]); - if (valuesSet.has(value)) { - continue; - } - if (!Object.hasOwn(arr, i)) { - delete arr[resultIndex++]; - continue; - } - arr[resultIndex++] = arr[i]; - } - arr.length = resultIndex; - return arr; -} - -exports.pullAllBy = pullAllBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllBy.mjs deleted file mode 100644 index d329d9d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllBy.mjs +++ /dev/null @@ -1,22 +0,0 @@ -import { iteratee } from '../util/iteratee.mjs'; - -function pullAllBy(arr, valuesToRemove, _getValue) { - const getValue = iteratee(_getValue); - const valuesSet = new Set(Array.from(valuesToRemove).map(x => getValue(x))); - let resultIndex = 0; - for (let i = 0; i < arr.length; i++) { - const value = getValue(arr[i]); - if (valuesSet.has(value)) { - continue; - } - if (!Object.hasOwn(arr, i)) { - delete arr[resultIndex++]; - continue; - } - arr[resultIndex++] = arr[i]; - } - arr.length = resultIndex; - return arr; -} - -export { pullAllBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllWith.d.mts deleted file mode 100644 index eaeb8ac..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllWith.d.mts +++ /dev/null @@ -1,89 +0,0 @@ -import { MutableList } from '../_internal/MutableList.d.mjs'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.mjs'; - -/** - * This method is like `_.pullAll` except that it accepts `comparator` which is - * invoked to compare elements of array to values. The comparator is invoked with - * two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @template T - * @param {T[]} array - The array to modify. - * @param {ArrayLike} [values] - The values to remove. - * @param {(a: T, b: T) => boolean} [comparator] - The comparator invoked per element. - * @returns {T[]} Returns `array`. - * - * @example - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ -declare function pullAllWith(array: T[], values?: ArrayLike, comparator?: (a: T, b: T) => boolean): T[]; -/** - * This method is like `_.pullAll` except that it accepts `comparator` which is - * invoked to compare elements of array to values. The comparator is invoked with - * two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @template L - * @param {RejectReadonly} array - The array to modify. - * @param {List} [values] - The values to remove. - * @param {Comparator} [comparator] - The comparator invoked per element. - * @returns {L} Returns `array`. - * - * @example - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ -declare function pullAllWith>(array: RejectReadonly, values?: ArrayLike, comparator?: (a: L[0], b: L[0]) => boolean): L; -/** - * This method is like `_.pullAll` except that it accepts `comparator` which is - * invoked to compare elements of array to values. The comparator is invoked with - * two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @template T, U - * @param {T[]} array - The array to modify. - * @param {ArrayLike} values - The values to remove. - * @param {(a: T, b: U) => boolean} comparator - The comparator invoked per element. - * @returns {T[]} Returns `array`. - * - * @example - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ -declare function pullAllWith(array: T[], values: ArrayLike, comparator: (a: T, b: U) => boolean): T[]; -/** - * This method is like `_.pullAll` except that it accepts `comparator` which is - * invoked to compare elements of array to values. The comparator is invoked with - * two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @template L1, L2 - * @param {RejectReadonly} array - The array to modify. - * @param {List} values - The values to remove. - * @param {Comparator2} comparator - The comparator invoked per element. - * @returns {L1} Returns `array`. - * - * @example - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ -declare function pullAllWith, L2>(array: RejectReadonly, values: ArrayLike, comparator: (a: L1[0], b: L2) => boolean): L1; - -export { pullAllWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllWith.d.ts deleted file mode 100644 index 3156147..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllWith.d.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { MutableList } from '../_internal/MutableList.d.js'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.js'; - -/** - * This method is like `_.pullAll` except that it accepts `comparator` which is - * invoked to compare elements of array to values. The comparator is invoked with - * two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @template T - * @param {T[]} array - The array to modify. - * @param {ArrayLike} [values] - The values to remove. - * @param {(a: T, b: T) => boolean} [comparator] - The comparator invoked per element. - * @returns {T[]} Returns `array`. - * - * @example - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ -declare function pullAllWith(array: T[], values?: ArrayLike, comparator?: (a: T, b: T) => boolean): T[]; -/** - * This method is like `_.pullAll` except that it accepts `comparator` which is - * invoked to compare elements of array to values. The comparator is invoked with - * two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @template L - * @param {RejectReadonly} array - The array to modify. - * @param {List} [values] - The values to remove. - * @param {Comparator} [comparator] - The comparator invoked per element. - * @returns {L} Returns `array`. - * - * @example - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ -declare function pullAllWith>(array: RejectReadonly, values?: ArrayLike, comparator?: (a: L[0], b: L[0]) => boolean): L; -/** - * This method is like `_.pullAll` except that it accepts `comparator` which is - * invoked to compare elements of array to values. The comparator is invoked with - * two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @template T, U - * @param {T[]} array - The array to modify. - * @param {ArrayLike} values - The values to remove. - * @param {(a: T, b: U) => boolean} comparator - The comparator invoked per element. - * @returns {T[]} Returns `array`. - * - * @example - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ -declare function pullAllWith(array: T[], values: ArrayLike, comparator: (a: T, b: U) => boolean): T[]; -/** - * This method is like `_.pullAll` except that it accepts `comparator` which is - * invoked to compare elements of array to values. The comparator is invoked with - * two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @template L1, L2 - * @param {RejectReadonly} array - The array to modify. - * @param {List} values - The values to remove. - * @param {Comparator2} comparator - The comparator invoked per element. - * @returns {L1} Returns `array`. - * - * @example - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ -declare function pullAllWith, L2>(array: RejectReadonly, values: ArrayLike, comparator: (a: L1[0], b: L2) => boolean): L1; - -export { pullAllWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllWith.js deleted file mode 100644 index 3adf54a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllWith.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const copyArray = require('../_internal/copyArray.js'); -const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js'); - -function pullAllWith(array, values, comparator) { - if (array?.length == null || values?.length == null) { - return array; - } - if (array === values) { - values = copyArray(values); - } - let resultLength = 0; - if (comparator == null) { - comparator = (a, b) => isEqualsSameValueZero.isEqualsSameValueZero(a, b); - } - const valuesArray = Array.isArray(values) ? values : Array.from(values); - const hasUndefined = valuesArray.includes(undefined); - for (let i = 0; i < array.length; i++) { - if (i in array) { - const shouldRemove = valuesArray.some(value => comparator(array[i], value)); - if (!shouldRemove) { - array[resultLength++] = array[i]; - } - continue; - } - if (!hasUndefined) { - delete array[resultLength++]; - } - } - array.length = resultLength; - return array; -} - -exports.pullAllWith = pullAllWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllWith.mjs deleted file mode 100644 index fc4b449..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAllWith.mjs +++ /dev/null @@ -1,33 +0,0 @@ -import copyArray from '../_internal/copyArray.mjs'; -import { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs'; - -function pullAllWith(array, values, comparator) { - if (array?.length == null || values?.length == null) { - return array; - } - if (array === values) { - values = copyArray(values); - } - let resultLength = 0; - if (comparator == null) { - comparator = (a, b) => isEqualsSameValueZero(a, b); - } - const valuesArray = Array.isArray(values) ? values : Array.from(values); - const hasUndefined = valuesArray.includes(undefined); - for (let i = 0; i < array.length; i++) { - if (i in array) { - const shouldRemove = valuesArray.some(value => comparator(array[i], value)); - if (!shouldRemove) { - array[resultLength++] = array[i]; - } - continue; - } - if (!hasUndefined) { - delete array[resultLength++]; - } - } - array.length = resultLength; - return array; -} - -export { pullAllWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAt.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAt.d.mts deleted file mode 100644 index db9179e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAt.d.mts +++ /dev/null @@ -1,50 +0,0 @@ -import { Many } from '../_internal/Many.mjs'; -import { MutableList } from '../_internal/MutableList.d.mjs'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.mjs'; - -/** - * Removes elements from array corresponding to the given indexes and returns an array of the removed elements. - * Indexes may be specified as an array of indexes or as individual arguments. - * - * **Note:** Unlike `_.at`, this method mutates `array`. - * - * @template T - * @param {T[]} array - The array to modify. - * @param {...Array} indexes - The indexes of elements to remove, specified as individual indexes or arrays of indexes. - * @returns {T[]} Returns the new array of removed elements. - * - * @example - * var array = [5, 10, 15, 20]; - * var evens = pullAt(array, 1, 3); - * - * console.log(array); - * // => [5, 15] - * - * console.log(evens); - * // => [10, 20] - */ -declare function pullAt(array: T[], ...indexes: Array>): T[]; -/** - * Removes elements from array corresponding to the given indexes and returns an array of the removed elements. - * Indexes may be specified as an array of indexes or as individual arguments. - * - * **Note:** Unlike `_.at`, this method mutates `array`. - * - * @template L - * @param {L} array - The array to modify. - * @param {...Array} indexes - The indexes of elements to remove, specified as individual indexes or arrays of indexes. - * @returns {L} Returns the new array of removed elements. - * - * @example - * var array = [5, 10, 15, 20]; - * var evens = pullAt(array, 1, 3); - * - * console.log(array); - * // => [5, 15] - * - * console.log(evens); - * // => [10, 20] - */ -declare function pullAt>(array: RejectReadonly, ...indexes: Array>): L; - -export { pullAt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAt.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAt.d.ts deleted file mode 100644 index e90cf06..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAt.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Many } from '../_internal/Many.js'; -import { MutableList } from '../_internal/MutableList.d.js'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.js'; - -/** - * Removes elements from array corresponding to the given indexes and returns an array of the removed elements. - * Indexes may be specified as an array of indexes or as individual arguments. - * - * **Note:** Unlike `_.at`, this method mutates `array`. - * - * @template T - * @param {T[]} array - The array to modify. - * @param {...Array} indexes - The indexes of elements to remove, specified as individual indexes or arrays of indexes. - * @returns {T[]} Returns the new array of removed elements. - * - * @example - * var array = [5, 10, 15, 20]; - * var evens = pullAt(array, 1, 3); - * - * console.log(array); - * // => [5, 15] - * - * console.log(evens); - * // => [10, 20] - */ -declare function pullAt(array: T[], ...indexes: Array>): T[]; -/** - * Removes elements from array corresponding to the given indexes and returns an array of the removed elements. - * Indexes may be specified as an array of indexes or as individual arguments. - * - * **Note:** Unlike `_.at`, this method mutates `array`. - * - * @template L - * @param {L} array - The array to modify. - * @param {...Array} indexes - The indexes of elements to remove, specified as individual indexes or arrays of indexes. - * @returns {L} Returns the new array of removed elements. - * - * @example - * var array = [5, 10, 15, 20]; - * var evens = pullAt(array, 1, 3); - * - * console.log(array); - * // => [5, 15] - * - * console.log(evens); - * // => [10, 20] - */ -declare function pullAt>(array: RejectReadonly, ...indexes: Array>): L; - -export { pullAt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAt.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAt.js deleted file mode 100644 index 1c6c1aa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAt.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flattenDepth = require('./flattenDepth.js'); -const isIndex = require('../_internal/isIndex.js'); -const isKey = require('../_internal/isKey.js'); -const toKey = require('../_internal/toKey.js'); -const at = require('../object/at.js'); -const unset = require('../object/unset.js'); -const isArray = require('../predicate/isArray.js'); -const toPath = require('../util/toPath.js'); - -function pullAt(array, ..._indices) { - const indices = flattenDepth.flattenDepth(_indices, 1); - if (!array) { - return Array(indices.length); - } - const result = at.at(array, indices); - const indicesToPull = indices - .map(index => (isIndex.isIndex(index, array.length) ? Number(index) : index)) - .sort((a, b) => b - a); - for (const index of new Set(indicesToPull)) { - if (isIndex.isIndex(index, array.length)) { - Array.prototype.splice.call(array, index, 1); - continue; - } - if (isKey.isKey(index, array)) { - delete array[toKey.toKey(index)]; - continue; - } - const path = isArray.isArray(index) ? index : toPath.toPath(index); - unset.unset(array, path); - } - return result; -} - -exports.pullAt = pullAt; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAt.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAt.mjs deleted file mode 100644 index fecaede..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/pullAt.mjs +++ /dev/null @@ -1,34 +0,0 @@ -import { flattenDepth } from './flattenDepth.mjs'; -import { isIndex } from '../_internal/isIndex.mjs'; -import { isKey } from '../_internal/isKey.mjs'; -import { toKey } from '../_internal/toKey.mjs'; -import { at } from '../object/at.mjs'; -import { unset } from '../object/unset.mjs'; -import { isArray } from '../predicate/isArray.mjs'; -import { toPath } from '../util/toPath.mjs'; - -function pullAt(array, ..._indices) { - const indices = flattenDepth(_indices, 1); - if (!array) { - return Array(indices.length); - } - const result = at(array, indices); - const indicesToPull = indices - .map(index => (isIndex(index, array.length) ? Number(index) : index)) - .sort((a, b) => b - a); - for (const index of new Set(indicesToPull)) { - if (isIndex(index, array.length)) { - Array.prototype.splice.call(array, index, 1); - continue; - } - if (isKey(index, array)) { - delete array[toKey(index)]; - continue; - } - const path = isArray(index) ? index : toPath(index); - unset(array, path); - } - return result; -} - -export { pullAt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduce.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduce.d.mts deleted file mode 100644 index 6f404b1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduce.d.mts +++ /dev/null @@ -1,80 +0,0 @@ -import { MemoListIterator } from '../_internal/MemoListIterator.mjs'; -import { MemoObjectIterator } from '../_internal/MemoObjectIterator.mjs'; - -/** - * Reduces an array to a single value using an iteratee function. - * - * @param {T[] | null | undefined} collection - The array to iterate over - * @param {MemoListIterator} callback - The function invoked per iteration - * @param {U} accumulator - The initial value - * @returns {U} Returns the accumulated value - * - * @example - * const array = [1, 2, 3]; - * reduce(array, (acc, value) => acc + value, 0); // => 6 - */ -declare function reduce(collection: T[] | null | undefined, callback: MemoListIterator, accumulator: U): U; -/** - * Reduces an array-like object to a single value using an iteratee function. - * - * @param {ArrayLike | null | undefined} collection - The array-like object to iterate over - * @param {MemoListIterator>} callback - The function invoked per iteration - * @param {U} accumulator - The initial value - * @returns {U} Returns the accumulated value - * - * @example - * const arrayLike = {0: 1, 1: 2, 2: 3, length: 3}; - * reduce(arrayLike, (acc, value) => acc + value, 0); // => 6 - */ -declare function reduce(collection: ArrayLike | null | undefined, callback: MemoListIterator>, accumulator: U): U; -/** - * Reduces an object to a single value using an iteratee function. - * - * @param {T | null | undefined} collection - The object to iterate over - * @param {MemoObjectIterator} callback - The function invoked per iteration - * @param {U} accumulator - The initial value - * @returns {U} Returns the accumulated value - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * reduce(obj, (acc, value) => acc + value, 0); // => 6 - */ -declare function reduce(collection: T | null | undefined, callback: MemoObjectIterator, accumulator: U): U; -/** - * Reduces an array to a single value using an iteratee function. - * - * @param {T[] | null | undefined} collection - The array to iterate over - * @param {MemoListIterator} callback - The function invoked per iteration - * @returns {T | undefined} Returns the accumulated value - * - * @example - * const array = [1, 2, 3]; - * reduce(array, (acc, value) => acc + value); // => 6 - */ -declare function reduce(collection: T[] | null | undefined, callback: MemoListIterator): T | undefined; -/** - * Reduces an array-like object to a single value using an iteratee function. - * - * @param {ArrayLike | null | undefined} collection - The array-like object to iterate over - * @param {MemoListIterator>} callback - The function invoked per iteration - * @returns {T | undefined} Returns the accumulated value - * - * @example - * const arrayLike = {0: 1, 1: 2, 2: 3, length: 3}; - * reduce(arrayLike, (acc, value) => acc + value); // => 6 - */ -declare function reduce(collection: ArrayLike | null | undefined, callback: MemoListIterator>): T | undefined; -/** - * Reduces an object to a single value using an iteratee function. - * - * @param {T | null | undefined} collection - The object to iterate over - * @param {MemoObjectIterator} callback - The function invoked per iteration - * @returns {T[keyof T] | undefined} Returns the accumulated value - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * reduce(obj, (acc, value) => acc + value); // => 6 - */ -declare function reduce(collection: T | null | undefined, callback: MemoObjectIterator): T[keyof T] | undefined; - -export { reduce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduce.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduce.d.ts deleted file mode 100644 index 6777ff3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduce.d.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { MemoListIterator } from '../_internal/MemoListIterator.js'; -import { MemoObjectIterator } from '../_internal/MemoObjectIterator.js'; - -/** - * Reduces an array to a single value using an iteratee function. - * - * @param {T[] | null | undefined} collection - The array to iterate over - * @param {MemoListIterator} callback - The function invoked per iteration - * @param {U} accumulator - The initial value - * @returns {U} Returns the accumulated value - * - * @example - * const array = [1, 2, 3]; - * reduce(array, (acc, value) => acc + value, 0); // => 6 - */ -declare function reduce(collection: T[] | null | undefined, callback: MemoListIterator, accumulator: U): U; -/** - * Reduces an array-like object to a single value using an iteratee function. - * - * @param {ArrayLike | null | undefined} collection - The array-like object to iterate over - * @param {MemoListIterator>} callback - The function invoked per iteration - * @param {U} accumulator - The initial value - * @returns {U} Returns the accumulated value - * - * @example - * const arrayLike = {0: 1, 1: 2, 2: 3, length: 3}; - * reduce(arrayLike, (acc, value) => acc + value, 0); // => 6 - */ -declare function reduce(collection: ArrayLike | null | undefined, callback: MemoListIterator>, accumulator: U): U; -/** - * Reduces an object to a single value using an iteratee function. - * - * @param {T | null | undefined} collection - The object to iterate over - * @param {MemoObjectIterator} callback - The function invoked per iteration - * @param {U} accumulator - The initial value - * @returns {U} Returns the accumulated value - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * reduce(obj, (acc, value) => acc + value, 0); // => 6 - */ -declare function reduce(collection: T | null | undefined, callback: MemoObjectIterator, accumulator: U): U; -/** - * Reduces an array to a single value using an iteratee function. - * - * @param {T[] | null | undefined} collection - The array to iterate over - * @param {MemoListIterator} callback - The function invoked per iteration - * @returns {T | undefined} Returns the accumulated value - * - * @example - * const array = [1, 2, 3]; - * reduce(array, (acc, value) => acc + value); // => 6 - */ -declare function reduce(collection: T[] | null | undefined, callback: MemoListIterator): T | undefined; -/** - * Reduces an array-like object to a single value using an iteratee function. - * - * @param {ArrayLike | null | undefined} collection - The array-like object to iterate over - * @param {MemoListIterator>} callback - The function invoked per iteration - * @returns {T | undefined} Returns the accumulated value - * - * @example - * const arrayLike = {0: 1, 1: 2, 2: 3, length: 3}; - * reduce(arrayLike, (acc, value) => acc + value); // => 6 - */ -declare function reduce(collection: ArrayLike | null | undefined, callback: MemoListIterator>): T | undefined; -/** - * Reduces an object to a single value using an iteratee function. - * - * @param {T | null | undefined} collection - The object to iterate over - * @param {MemoObjectIterator} callback - The function invoked per iteration - * @returns {T[keyof T] | undefined} Returns the accumulated value - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * reduce(obj, (acc, value) => acc + value); // => 6 - */ -declare function reduce(collection: T | null | undefined, callback: MemoObjectIterator): T[keyof T] | undefined; - -export { reduce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduce.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduce.js deleted file mode 100644 index 33e31ed..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduce.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const range = require('../../math/range.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function reduce(collection, iteratee = identity.identity, accumulator) { - if (!collection) { - return accumulator; - } - let keys; - let startIndex = 0; - if (isArrayLike.isArrayLike(collection)) { - keys = range.range(0, collection.length); - if (accumulator == null && collection.length > 0) { - accumulator = collection[0]; - startIndex += 1; - } - } - else { - keys = Object.keys(collection); - if (accumulator == null) { - accumulator = collection[keys[0]]; - startIndex += 1; - } - } - for (let i = startIndex; i < keys.length; i++) { - const key = keys[i]; - const value = collection[key]; - accumulator = iteratee(accumulator, value, key, collection); - } - return accumulator; -} - -exports.reduce = reduce; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduce.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduce.mjs deleted file mode 100644 index ef3bb27..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduce.mjs +++ /dev/null @@ -1,33 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { range } from '../../math/range.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function reduce(collection, iteratee = identity, accumulator) { - if (!collection) { - return accumulator; - } - let keys; - let startIndex = 0; - if (isArrayLike(collection)) { - keys = range(0, collection.length); - if (accumulator == null && collection.length > 0) { - accumulator = collection[0]; - startIndex += 1; - } - } - else { - keys = Object.keys(collection); - if (accumulator == null) { - accumulator = collection[keys[0]]; - startIndex += 1; - } - } - for (let i = startIndex; i < keys.length; i++) { - const key = keys[i]; - const value = collection[key]; - accumulator = iteratee(accumulator, value, key, collection); - } - return accumulator; -} - -export { reduce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduceRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduceRight.d.mts deleted file mode 100644 index 1348c5c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduceRight.d.mts +++ /dev/null @@ -1,118 +0,0 @@ -import { MemoListIterator } from '../_internal/MemoListIterator.mjs'; -import { MemoObjectIterator } from '../_internal/MemoObjectIterator.mjs'; - -/** - * Reduces an array to a single value using an iteratee function, starting from the right. - * - * The `reduceRight()` function goes through each element in an array from right to left and applies a special function (called a "reducer") to them, one by one. - * This function takes the result of the previous step and the current element to perform a calculation. - * After going through all the elements, the function gives you one final result. - * - * When the `reduceRight()` function starts, there's no previous result to use. - * If you provide an initial value, it starts with that. - * If not, it uses the last element of the array and begins with the second to last element for the calculation. - * - * The `reduceRight()` function goes through each element in an array from right to left and applies a special function (called a "reducer") to them, one by one. - * This function takes the result of the previous step and the current element to perform a calculation. - * After going through all the elements, the function gives you one final result. - * - * When the `reduceRight()` function starts, there's no previous result to use. - * If you provide an initial value, it starts with that. - * If not, it uses the last element of the array and begins with the second to last element for the calculation. - * - * @template T, U - * @param {T[] | null | undefined} collection - The array to iterate over. - * @param {MemoListIterator} callback - The function invoked per iteration. - * @param {U} accumulator - The initial value. - * @returns {U} Returns the accumulated value. - * - * @example - * reduceRight([1, 2, 3], (acc, value) => acc + value, 0); - * // => 6 - */ -declare function reduceRight(collection: T[] | null | undefined, callback: MemoListIterator, accumulator: U): U; -/** - * Reduces an array-like collection to a single value using an iteratee function, starting from the right. - * - * @template T, U - * @param {ArrayLike | null | undefined} collection - The array-like collection to iterate over. - * @param {MemoListIterator>} callback - The function invoked per iteration. - * @param {U} accumulator - The initial value. - * @returns {U} Returns the accumulated value. - * - * @example - * reduceRight([1, 2, 3], (acc, value) => acc + value, 0); - * // => 6 - */ -declare function reduceRight(collection: ArrayLike | null | undefined, callback: MemoListIterator>, accumulator: U): U; -/** - * Reduces an object to a single value using an iteratee function, starting from the right. - * - * @template T, U - * @param {T | null | undefined} collection - The object to iterate over. - * @param {MemoObjectIterator} callback - The function invoked per iteration. - * @param {U} accumulator - The initial value. - * @returns {U} Returns the accumulated value. - * - * @example - * reduceRight({ a: 1, b: 2, c: 3 }, (acc, value) => acc + value, 0); - * // => 6 - */ -declare function reduceRight(collection: T | null | undefined, callback: MemoObjectIterator, accumulator: U): U; -/** - * Reduces an array to a single value using an iteratee function, starting from the right. - * - * The `reduceRight()` function goes through each element in an array from right to left and applies a special function (called a "reducer") to them, one by one. - * This function takes the result of the previous step and the current element to perform a calculation. - * After going through all the elements, the function gives you one final result. - * - * When the `reduceRight()` function starts, there's no previous result to use. - * If you provide an initial value, it starts with that. - * If not, it uses the last element of the array and begins with the second to last element for the calculation. - * - * The `reduceRight()` function goes through each element in an array from right to left and applies a special function (called a "reducer") to them, one by one. - * This function takes the result of the previous step and the current element to perform a calculation. - * After going through all the elements, the function gives you one final result. - * - * When the `reduceRight()` function starts, there's no previous result to use. - * If you provide an initial value, it starts with that. - * If not, it uses the last element of the array and begins with the second to last element for the calculation. - * - * @template T - * @param {T[] | null | undefined} collection - The array to iterate over. - * @param {MemoListIterator} callback - The function invoked per iteration. - * @returns {T | undefined} Returns the accumulated value. - * - * @example - * reduceRight([1, 2, 3], (acc, value) => acc + value); - * // => 6 - */ -declare function reduceRight(collection: T[] | null | undefined, callback: MemoListIterator): T | undefined; -/** - * Reduces an array-like collection to a single value using an iteratee function, starting from the right. - * - * @template T - * @param {ArrayLike | null | undefined} collection - The array-like collection to iterate over. - * @param {MemoListIterator>} callback - The function invoked per iteration. - * @returns {T | undefined} Returns the accumulated value. - * - * @example - * reduceRight([1, 2, 3], (acc, value) => acc + value); - * // => 6 - */ -declare function reduceRight(collection: ArrayLike | null | undefined, callback: MemoListIterator>): T | undefined; -/** - * Reduces an object to a single value using an iteratee function, starting from the right. - * - * @template T - * @param {T | null | undefined} collection - The object to iterate over. - * @param {MemoObjectIterator} callback - The function invoked per iteration. - * @returns {T[keyof T] | undefined} Returns the accumulated value. - * - * @example - * reduceRight({ a: 1, b: 2, c: 3 }, (acc, value) => acc + value); - * // => 6 - */ -declare function reduceRight(collection: T | null | undefined, callback: MemoObjectIterator): T[keyof T] | undefined; - -export { reduceRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduceRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduceRight.d.ts deleted file mode 100644 index eaf8b6b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduceRight.d.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { MemoListIterator } from '../_internal/MemoListIterator.js'; -import { MemoObjectIterator } from '../_internal/MemoObjectIterator.js'; - -/** - * Reduces an array to a single value using an iteratee function, starting from the right. - * - * The `reduceRight()` function goes through each element in an array from right to left and applies a special function (called a "reducer") to them, one by one. - * This function takes the result of the previous step and the current element to perform a calculation. - * After going through all the elements, the function gives you one final result. - * - * When the `reduceRight()` function starts, there's no previous result to use. - * If you provide an initial value, it starts with that. - * If not, it uses the last element of the array and begins with the second to last element for the calculation. - * - * The `reduceRight()` function goes through each element in an array from right to left and applies a special function (called a "reducer") to them, one by one. - * This function takes the result of the previous step and the current element to perform a calculation. - * After going through all the elements, the function gives you one final result. - * - * When the `reduceRight()` function starts, there's no previous result to use. - * If you provide an initial value, it starts with that. - * If not, it uses the last element of the array and begins with the second to last element for the calculation. - * - * @template T, U - * @param {T[] | null | undefined} collection - The array to iterate over. - * @param {MemoListIterator} callback - The function invoked per iteration. - * @param {U} accumulator - The initial value. - * @returns {U} Returns the accumulated value. - * - * @example - * reduceRight([1, 2, 3], (acc, value) => acc + value, 0); - * // => 6 - */ -declare function reduceRight(collection: T[] | null | undefined, callback: MemoListIterator, accumulator: U): U; -/** - * Reduces an array-like collection to a single value using an iteratee function, starting from the right. - * - * @template T, U - * @param {ArrayLike | null | undefined} collection - The array-like collection to iterate over. - * @param {MemoListIterator>} callback - The function invoked per iteration. - * @param {U} accumulator - The initial value. - * @returns {U} Returns the accumulated value. - * - * @example - * reduceRight([1, 2, 3], (acc, value) => acc + value, 0); - * // => 6 - */ -declare function reduceRight(collection: ArrayLike | null | undefined, callback: MemoListIterator>, accumulator: U): U; -/** - * Reduces an object to a single value using an iteratee function, starting from the right. - * - * @template T, U - * @param {T | null | undefined} collection - The object to iterate over. - * @param {MemoObjectIterator} callback - The function invoked per iteration. - * @param {U} accumulator - The initial value. - * @returns {U} Returns the accumulated value. - * - * @example - * reduceRight({ a: 1, b: 2, c: 3 }, (acc, value) => acc + value, 0); - * // => 6 - */ -declare function reduceRight(collection: T | null | undefined, callback: MemoObjectIterator, accumulator: U): U; -/** - * Reduces an array to a single value using an iteratee function, starting from the right. - * - * The `reduceRight()` function goes through each element in an array from right to left and applies a special function (called a "reducer") to them, one by one. - * This function takes the result of the previous step and the current element to perform a calculation. - * After going through all the elements, the function gives you one final result. - * - * When the `reduceRight()` function starts, there's no previous result to use. - * If you provide an initial value, it starts with that. - * If not, it uses the last element of the array and begins with the second to last element for the calculation. - * - * The `reduceRight()` function goes through each element in an array from right to left and applies a special function (called a "reducer") to them, one by one. - * This function takes the result of the previous step and the current element to perform a calculation. - * After going through all the elements, the function gives you one final result. - * - * When the `reduceRight()` function starts, there's no previous result to use. - * If you provide an initial value, it starts with that. - * If not, it uses the last element of the array and begins with the second to last element for the calculation. - * - * @template T - * @param {T[] | null | undefined} collection - The array to iterate over. - * @param {MemoListIterator} callback - The function invoked per iteration. - * @returns {T | undefined} Returns the accumulated value. - * - * @example - * reduceRight([1, 2, 3], (acc, value) => acc + value); - * // => 6 - */ -declare function reduceRight(collection: T[] | null | undefined, callback: MemoListIterator): T | undefined; -/** - * Reduces an array-like collection to a single value using an iteratee function, starting from the right. - * - * @template T - * @param {ArrayLike | null | undefined} collection - The array-like collection to iterate over. - * @param {MemoListIterator>} callback - The function invoked per iteration. - * @returns {T | undefined} Returns the accumulated value. - * - * @example - * reduceRight([1, 2, 3], (acc, value) => acc + value); - * // => 6 - */ -declare function reduceRight(collection: ArrayLike | null | undefined, callback: MemoListIterator>): T | undefined; -/** - * Reduces an object to a single value using an iteratee function, starting from the right. - * - * @template T - * @param {T | null | undefined} collection - The object to iterate over. - * @param {MemoObjectIterator} callback - The function invoked per iteration. - * @returns {T[keyof T] | undefined} Returns the accumulated value. - * - * @example - * reduceRight({ a: 1, b: 2, c: 3 }, (acc, value) => acc + value); - * // => 6 - */ -declare function reduceRight(collection: T | null | undefined, callback: MemoObjectIterator): T[keyof T] | undefined; - -export { reduceRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduceRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduceRight.js deleted file mode 100644 index 7024e75..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduceRight.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const range = require('../../math/range.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function reduceRight(collection, iteratee = identity.identity, accumulator) { - if (!collection) { - return accumulator; - } - let keys; - let startIndex; - if (isArrayLike.isArrayLike(collection)) { - keys = range.range(0, collection.length).reverse(); - if (accumulator == null && collection.length > 0) { - accumulator = collection[collection.length - 1]; - startIndex = 1; - } - else { - startIndex = 0; - } - } - else { - keys = Object.keys(collection).reverse(); - if (accumulator == null) { - accumulator = collection[keys[0]]; - startIndex = 1; - } - else { - startIndex = 0; - } - } - for (let i = startIndex; i < keys.length; i++) { - const key = keys[i]; - const value = collection[key]; - accumulator = iteratee(accumulator, value, key, collection); - } - return accumulator; -} - -exports.reduceRight = reduceRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduceRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduceRight.mjs deleted file mode 100644 index 9e686d8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reduceRight.mjs +++ /dev/null @@ -1,39 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { range } from '../../math/range.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function reduceRight(collection, iteratee = identity, accumulator) { - if (!collection) { - return accumulator; - } - let keys; - let startIndex; - if (isArrayLike(collection)) { - keys = range(0, collection.length).reverse(); - if (accumulator == null && collection.length > 0) { - accumulator = collection[collection.length - 1]; - startIndex = 1; - } - else { - startIndex = 0; - } - } - else { - keys = Object.keys(collection).reverse(); - if (accumulator == null) { - accumulator = collection[keys[0]]; - startIndex = 1; - } - else { - startIndex = 0; - } - } - for (let i = startIndex; i < keys.length; i++) { - const key = keys[i]; - const value = collection[key]; - accumulator = iteratee(accumulator, value, key, collection); - } - return accumulator; -} - -export { reduceRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reject.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reject.d.mts deleted file mode 100644 index 65d698b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reject.d.mts +++ /dev/null @@ -1,50 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.mjs'; -import { ObjectIterateeCustom } from '../_internal/ObjectIteratee.mjs'; -import { StringIterator } from '../_internal/StringIterator.mjs'; - -/** - * Iterates over the collection and rejects elements based on the given predicate. - * If a function is provided, it is invoked for each element in the collection. - * - * @param {string | null | undefined} collection The string to iterate over - * @param {StringIterator} [predicate] The function invoked per iteration - * @returns {string[]} Returns a new array of characters that do not satisfy the predicate - * @example - * reject('abc', char => char === 'b') - * // => ['a', 'c'] - */ -declare function reject(collection: string | null | undefined, predicate?: StringIterator): string[]; -/** - * Iterates over the collection and rejects elements based on the given predicate. - * If a function is provided, it is invoked for each element in the collection. - * - * @template T - * @param {ArrayLike | null | undefined} collection The array-like to iterate over - * @param {ListIterateeCustom} [predicate] The function invoked per iteration - * @returns {T[]} Returns a new array of elements that do not satisfy the predicate - * @example - * reject([1, 2, 3], num => num % 2 === 0) - * // => [1, 3] - * - * reject([{ a: 1 }, { a: 2 }, { b: 1 }], 'a') - * // => [{ b: 1 }] - */ -declare function reject(collection: ArrayLike | null | undefined, predicate?: ListIterateeCustom): T[]; -/** - * Iterates over the collection and rejects elements based on the given predicate. - * If a function is provided, it is invoked for each element in the collection. - * - * @template T - * @param {T | null | undefined} collection The object to iterate over - * @param {ObjectIterateeCustom} [predicate] The function invoked per iteration - * @returns {Array} Returns a new array of elements that do not satisfy the predicate - * @example - * reject({ a: 1, b: 2, c: 3 }, value => value % 2 === 0) - * // => [1, 3] - * - * reject({ item1: { a: 0, b: true }, item2: { a: 1, b: true }, item3: { a: 2, b: false }}, { b: false }) - * // => [{ a: 0, b: true }, { a: 1, b: true }] - */ -declare function reject(collection: T | null | undefined, predicate?: ObjectIterateeCustom): Array; - -export { reject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reject.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reject.d.ts deleted file mode 100644 index d345c3e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reject.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.js'; -import { ObjectIterateeCustom } from '../_internal/ObjectIteratee.js'; -import { StringIterator } from '../_internal/StringIterator.js'; - -/** - * Iterates over the collection and rejects elements based on the given predicate. - * If a function is provided, it is invoked for each element in the collection. - * - * @param {string | null | undefined} collection The string to iterate over - * @param {StringIterator} [predicate] The function invoked per iteration - * @returns {string[]} Returns a new array of characters that do not satisfy the predicate - * @example - * reject('abc', char => char === 'b') - * // => ['a', 'c'] - */ -declare function reject(collection: string | null | undefined, predicate?: StringIterator): string[]; -/** - * Iterates over the collection and rejects elements based on the given predicate. - * If a function is provided, it is invoked for each element in the collection. - * - * @template T - * @param {ArrayLike | null | undefined} collection The array-like to iterate over - * @param {ListIterateeCustom} [predicate] The function invoked per iteration - * @returns {T[]} Returns a new array of elements that do not satisfy the predicate - * @example - * reject([1, 2, 3], num => num % 2 === 0) - * // => [1, 3] - * - * reject([{ a: 1 }, { a: 2 }, { b: 1 }], 'a') - * // => [{ b: 1 }] - */ -declare function reject(collection: ArrayLike | null | undefined, predicate?: ListIterateeCustom): T[]; -/** - * Iterates over the collection and rejects elements based on the given predicate. - * If a function is provided, it is invoked for each element in the collection. - * - * @template T - * @param {T | null | undefined} collection The object to iterate over - * @param {ObjectIterateeCustom} [predicate] The function invoked per iteration - * @returns {Array} Returns a new array of elements that do not satisfy the predicate - * @example - * reject({ a: 1, b: 2, c: 3 }, value => value % 2 === 0) - * // => [1, 3] - * - * reject({ item1: { a: 0, b: true }, item2: { a: 1, b: true }, item3: { a: 2, b: false }}, { b: false }) - * // => [{ a: 0, b: true }, { a: 1, b: true }] - */ -declare function reject(collection: T | null | undefined, predicate?: ObjectIterateeCustom): Array; - -export { reject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reject.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reject.js deleted file mode 100644 index 1ac9d10..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reject.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const filter = require('./filter.js'); -const identity = require('../../function/identity.js'); -const negate = require('../function/negate.js'); -const iteratee = require('../util/iteratee.js'); - -function reject(source, predicate = identity.identity) { - return filter.filter(source, negate.negate(iteratee.iteratee(predicate))); -} - -exports.reject = reject; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reject.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reject.mjs deleted file mode 100644 index a772c60..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reject.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { filter } from './filter.mjs'; -import { identity } from '../../function/identity.mjs'; -import { negate } from '../function/negate.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function reject(source, predicate = identity) { - return filter(source, negate(iteratee(predicate))); -} - -export { reject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/remove.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/remove.d.mts deleted file mode 100644 index 7ea1003..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/remove.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.mjs'; -import { MutableList } from '../_internal/MutableList.d.mjs'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.mjs'; - -/** - * Removes all elements from array that predicate returns truthy for and returns an array of the removed elements. - * - * @template L - * @param {RejectReadonly} array - The array to modify. - * @param {ListIteratee} [predicate] - The function invoked per iteration. - * @returns {Array} Returns the new array of removed elements. - * - * @example - * const array = [1, 2, 3, 4]; - * const evens = remove(array, n => n % 2 === 0); - * console.log(array); // => [1, 3] - * console.log(evens); // => [2, 4] - */ -declare function remove>(array: RejectReadonly, predicate?: ListIteratee): Array; - -export { remove }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/remove.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/remove.d.ts deleted file mode 100644 index 4058892..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/remove.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.js'; -import { MutableList } from '../_internal/MutableList.d.js'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.js'; - -/** - * Removes all elements from array that predicate returns truthy for and returns an array of the removed elements. - * - * @template L - * @param {RejectReadonly} array - The array to modify. - * @param {ListIteratee} [predicate] - The function invoked per iteration. - * @returns {Array} Returns the new array of removed elements. - * - * @example - * const array = [1, 2, 3, 4]; - * const evens = remove(array, n => n % 2 === 0); - * console.log(array); // => [1, 3] - * console.log(evens); // => [2, 4] - */ -declare function remove>(array: RejectReadonly, predicate?: ListIteratee): Array; - -export { remove }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/remove.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/remove.js deleted file mode 100644 index 3f229f0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/remove.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const remove$1 = require('../../array/remove.js'); -const identity = require('../../function/identity.js'); -const iteratee = require('../util/iteratee.js'); - -function remove(arr, shouldRemoveElement = identity.identity) { - return remove$1.remove(arr, iteratee.iteratee(shouldRemoveElement)); -} - -exports.remove = remove; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/remove.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/remove.mjs deleted file mode 100644 index d416237..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/remove.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { remove as remove$1 } from '../../array/remove.mjs'; -import { identity } from '../../function/identity.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function remove(arr, shouldRemoveElement = identity) { - return remove$1(arr, iteratee(shouldRemoveElement)); -} - -export { remove }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reverse.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reverse.d.mts deleted file mode 100644 index 942adcc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reverse.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -import { MutableList } from '../_internal/MutableList.d.mjs'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.mjs'; - -/** - * Reverses `array` so that the first element becomes the last, the second element becomes the second to last, and so on. - * - * @template L - * @param {L extends readonly any[] ? never : L} array - The array to reverse. - * @returns {L} Returns `array`. - * - * @example - * const array = [1, 2, 3]; - * reverse(array); - * // => [3, 2, 1] - */ -declare function reverse>(array: RejectReadonly): L; - -export { reverse }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reverse.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reverse.d.ts deleted file mode 100644 index cafeade..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reverse.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { MutableList } from '../_internal/MutableList.d.js'; -import { RejectReadonly } from '../_internal/RejectReadonly.d.js'; - -/** - * Reverses `array` so that the first element becomes the last, the second element becomes the second to last, and so on. - * - * @template L - * @param {L extends readonly any[] ? never : L} array - The array to reverse. - * @returns {L} Returns `array`. - * - * @example - * const array = [1, 2, 3]; - * reverse(array); - * // => [3, 2, 1] - */ -declare function reverse>(array: RejectReadonly): L; - -export { reverse }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reverse.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reverse.js deleted file mode 100644 index 8009e7a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reverse.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function reverse(array) { - if (array == null) { - return array; - } - return array.reverse(); -} - -exports.reverse = reverse; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reverse.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reverse.mjs deleted file mode 100644 index 24d2329..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/reverse.mjs +++ /dev/null @@ -1,8 +0,0 @@ -function reverse(array) { - if (array == null) { - return array; - } - return array.reverse(); -} - -export { reverse }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sample.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sample.d.mts deleted file mode 100644 index 0f0b5fd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sample.d.mts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Gets a random element from collection. - * - * @template T - * @param {readonly [T, ...T[]]} collection - The collection to sample. - * @returns {T} Returns the random element. - * - * @example - * sample([1, 2, 3, 4]); - * // => 2 - */ -declare function sample(collection: readonly [T, ...T[]]): T; -/** - * Gets a random element from collection. - * - * @template T - * @param {Record | Record | null | undefined} collection - The collection to sample. - * @returns {T | undefined} Returns the random element. - * - * @example - * sample({ 'a': 1, 'b': 2, 'c': 3 }); - * // => 2 - */ -declare function sample(collection: Record | Record | null | undefined): T | undefined; -/** - * Gets a random element from collection. - * - * @template T - * @param {T | null | undefined} collection - The collection to sample. - * @returns {T[keyof T] | undefined} Returns the random element. - * - * @example - * sample({ 'a': 1, 'b': 2, 'c': 3 }); - * // => 2 - */ -declare function sample(collection: T | null | undefined): T[keyof T] | undefined; - -export { sample }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sample.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sample.d.ts deleted file mode 100644 index 0f0b5fd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sample.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Gets a random element from collection. - * - * @template T - * @param {readonly [T, ...T[]]} collection - The collection to sample. - * @returns {T} Returns the random element. - * - * @example - * sample([1, 2, 3, 4]); - * // => 2 - */ -declare function sample(collection: readonly [T, ...T[]]): T; -/** - * Gets a random element from collection. - * - * @template T - * @param {Record | Record | null | undefined} collection - The collection to sample. - * @returns {T | undefined} Returns the random element. - * - * @example - * sample({ 'a': 1, 'b': 2, 'c': 3 }); - * // => 2 - */ -declare function sample(collection: Record | Record | null | undefined): T | undefined; -/** - * Gets a random element from collection. - * - * @template T - * @param {T | null | undefined} collection - The collection to sample. - * @returns {T[keyof T] | undefined} Returns the random element. - * - * @example - * sample({ 'a': 1, 'b': 2, 'c': 3 }); - * // => 2 - */ -declare function sample(collection: T | null | undefined): T[keyof T] | undefined; - -export { sample }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sample.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sample.js deleted file mode 100644 index 8dc1ed6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sample.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const sample$1 = require('../../array/sample.js'); -const toArray = require('../_internal/toArray.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function sample(collection) { - if (collection == null) { - return undefined; - } - if (isArrayLike.isArrayLike(collection)) { - return sample$1.sample(toArray.toArray(collection)); - } - return sample$1.sample(Object.values(collection)); -} - -exports.sample = sample; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sample.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sample.mjs deleted file mode 100644 index 807b995..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sample.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import { sample as sample$1 } from '../../array/sample.mjs'; -import { toArray } from '../_internal/toArray.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function sample(collection) { - if (collection == null) { - return undefined; - } - if (isArrayLike(collection)) { - return sample$1(toArray(collection)); - } - return sample$1(Object.values(collection)); -} - -export { sample }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sampleSize.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sampleSize.d.mts deleted file mode 100644 index 935c69a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sampleSize.d.mts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Returns a sample element array of a specified size from a collection. - * - * @template T - * @param {Record | Record | null | undefined} collection - The collection to sample from. - * @param {number} [n] - The size of sample. - * @returns {T[]} A new array with sample size applied. - * - * @example - * sampleSize([1, 2, 3], 2); - * // => [2, 3] (example, actual result will vary) - */ -declare function sampleSize(collection: Record | Record | null | undefined, n?: number): T[]; -/** - * Returns a sample element array of a specified size from an object. - * - * @template T - * @param {T | null | undefined} collection - The object to sample from. - * @param {number} [n] - The size of sample. - * @returns {Array} A new array with sample size applied. - * - * @example - * sampleSize({ a: 1, b: 2, c: 3 }, 2); - * // => [2, 3] (example, actual result will vary) - */ -declare function sampleSize(collection: T | null | undefined, n?: number): Array; - -export { sampleSize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sampleSize.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sampleSize.d.ts deleted file mode 100644 index 935c69a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sampleSize.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Returns a sample element array of a specified size from a collection. - * - * @template T - * @param {Record | Record | null | undefined} collection - The collection to sample from. - * @param {number} [n] - The size of sample. - * @returns {T[]} A new array with sample size applied. - * - * @example - * sampleSize([1, 2, 3], 2); - * // => [2, 3] (example, actual result will vary) - */ -declare function sampleSize(collection: Record | Record | null | undefined, n?: number): T[]; -/** - * Returns a sample element array of a specified size from an object. - * - * @template T - * @param {T | null | undefined} collection - The object to sample from. - * @param {number} [n] - The size of sample. - * @returns {Array} A new array with sample size applied. - * - * @example - * sampleSize({ a: 1, b: 2, c: 3 }, 2); - * // => [2, 3] (example, actual result will vary) - */ -declare function sampleSize(collection: T | null | undefined, n?: number): Array; - -export { sampleSize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sampleSize.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sampleSize.js deleted file mode 100644 index 016392e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sampleSize.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const sampleSize$1 = require('../../array/sampleSize.js'); -const isIterateeCall = require('../_internal/isIterateeCall.js'); -const clamp = require('../math/clamp.js'); -const toArray = require('../util/toArray.js'); -const toInteger = require('../util/toInteger.js'); - -function sampleSize(collection, size, guard) { - const arrayCollection = toArray.toArray(collection); - if (guard ? isIterateeCall.isIterateeCall(collection, size, guard) : size === undefined) { - size = 1; - } - else { - size = clamp.clamp(toInteger.toInteger(size), 0, arrayCollection.length); - } - return sampleSize$1.sampleSize(arrayCollection, size); -} - -exports.sampleSize = sampleSize; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sampleSize.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sampleSize.mjs deleted file mode 100644 index f3d23a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sampleSize.mjs +++ /dev/null @@ -1,18 +0,0 @@ -import { sampleSize as sampleSize$1 } from '../../array/sampleSize.mjs'; -import { isIterateeCall } from '../_internal/isIterateeCall.mjs'; -import { clamp } from '../math/clamp.mjs'; -import { toArray } from '../util/toArray.mjs'; -import { toInteger } from '../util/toInteger.mjs'; - -function sampleSize(collection, size, guard) { - const arrayCollection = toArray(collection); - if (guard ? isIterateeCall(collection, size, guard) : size === undefined) { - size = 1; - } - else { - size = clamp(toInteger(size), 0, arrayCollection.length); - } - return sampleSize$1(arrayCollection, size); -} - -export { sampleSize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/shuffle.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/shuffle.d.mts deleted file mode 100644 index b4ab5e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/shuffle.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Randomizes the order of elements in an `array` using the Fisher-Yates algorithm. - * - * This function takes an `array` and returns a new `array` with its elements shuffled in a random order. - * - * @template T - The type of elements in the `array`. - * @param {T[]} array - The `array` to shuffle. - * @returns {T[]} A new `array` with its elements shuffled in random order. - */ -declare function shuffle(array: ArrayLike | null | undefined): T[]; -/** - * Randomizes the order of elements in an `object` using the Fisher-Yates algorithm. - * - * This function takes an `object` and returns a new `object` with its values shuffled in a random order. - * - * @template T - The type of elements in the `object`. - * @param {T} object - The `object` to shuffle. - * @returns {T[]} A new `Array` with the values of the `object` shuffled in a random order. - */ -declare function shuffle(object: T | null | undefined): Array; - -export { shuffle }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/shuffle.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/shuffle.d.ts deleted file mode 100644 index b4ab5e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/shuffle.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Randomizes the order of elements in an `array` using the Fisher-Yates algorithm. - * - * This function takes an `array` and returns a new `array` with its elements shuffled in a random order. - * - * @template T - The type of elements in the `array`. - * @param {T[]} array - The `array` to shuffle. - * @returns {T[]} A new `array` with its elements shuffled in random order. - */ -declare function shuffle(array: ArrayLike | null | undefined): T[]; -/** - * Randomizes the order of elements in an `object` using the Fisher-Yates algorithm. - * - * This function takes an `object` and returns a new `object` with its values shuffled in a random order. - * - * @template T - The type of elements in the `object`. - * @param {T} object - The `object` to shuffle. - * @returns {T[]} A new `Array` with the values of the `object` shuffled in a random order. - */ -declare function shuffle(object: T | null | undefined): Array; - -export { shuffle }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/shuffle.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/shuffle.js deleted file mode 100644 index fcf1724..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/shuffle.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const shuffle$1 = require('../../array/shuffle.js'); -const values = require('../object/values.js'); -const isArray = require('../predicate/isArray.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const isNil = require('../predicate/isNil.js'); -const isObjectLike = require('../predicate/isObjectLike.js'); - -function shuffle(collection) { - if (isNil.isNil(collection)) { - return []; - } - if (isArray.isArray(collection)) { - return shuffle$1.shuffle(collection); - } - if (isArrayLike.isArrayLike(collection)) { - return shuffle$1.shuffle(Array.from(collection)); - } - if (isObjectLike.isObjectLike(collection)) { - return shuffle$1.shuffle(values.values(collection)); - } - return []; -} - -exports.shuffle = shuffle; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/shuffle.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/shuffle.mjs deleted file mode 100644 index 7f41043..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/shuffle.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import { shuffle as shuffle$1 } from '../../array/shuffle.mjs'; -import { values } from '../object/values.mjs'; -import { isArray } from '../predicate/isArray.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { isNil } from '../predicate/isNil.mjs'; -import { isObjectLike } from '../predicate/isObjectLike.mjs'; - -function shuffle(collection) { - if (isNil(collection)) { - return []; - } - if (isArray(collection)) { - return shuffle$1(collection); - } - if (isArrayLike(collection)) { - return shuffle$1(Array.from(collection)); - } - if (isObjectLike(collection)) { - return shuffle$1(values(collection)); - } - return []; -} - -export { shuffle }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/size.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/size.d.mts deleted file mode 100644 index 9e7b776..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/size.d.mts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Returns the length of an array, string, or object. - * - * This function takes an array, string, or object and returns its length. - * For arrays and strings, it returns the number of elements or characters, respectively. - * For objects, it returns the number of enumerable properties. - * - * @template T - The type of the input value. - * @param {T[] | object | string | Map | Set | null | undefined } target - The value whose size is to be determined. It can be an array, string, or object. - * @returns {number} The size of the input value. - * - * @example - * const arr = [1, 2, 3]; - * const arrSize = size(arr); - * // arrSize will be 3 - * - * const str = 'hello'; - * const strSize = size(str); - * // strSize will be 5 - * - * const obj = { a: 1, b: 2, c: 3 }; - * const objSize = size(obj); - * // objSize will be 3 - * - * const emptyArr = []; - * const emptyArrSize = size(emptyArr); - * // emptyArrSize will be 0 - * - * const emptyStr = ''; - * const emptyStrSize = size(emptyStr); - * // emptyStrSize will be 0 - * - * const emptyObj = {}; - * const emptyObjSize = size(emptyObj); - * // emptyObjSize will be 0 - */ -declare function size(collection: object | string | null | undefined): number; - -export { size }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/size.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/size.d.ts deleted file mode 100644 index 9e7b776..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/size.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Returns the length of an array, string, or object. - * - * This function takes an array, string, or object and returns its length. - * For arrays and strings, it returns the number of elements or characters, respectively. - * For objects, it returns the number of enumerable properties. - * - * @template T - The type of the input value. - * @param {T[] | object | string | Map | Set | null | undefined } target - The value whose size is to be determined. It can be an array, string, or object. - * @returns {number} The size of the input value. - * - * @example - * const arr = [1, 2, 3]; - * const arrSize = size(arr); - * // arrSize will be 3 - * - * const str = 'hello'; - * const strSize = size(str); - * // strSize will be 5 - * - * const obj = { a: 1, b: 2, c: 3 }; - * const objSize = size(obj); - * // objSize will be 3 - * - * const emptyArr = []; - * const emptyArrSize = size(emptyArr); - * // emptyArrSize will be 0 - * - * const emptyStr = ''; - * const emptyStrSize = size(emptyStr); - * // emptyStrSize will be 0 - * - * const emptyObj = {}; - * const emptyObjSize = size(emptyObj); - * // emptyObjSize will be 0 - */ -declare function size(collection: object | string | null | undefined): number; - -export { size }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/size.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/size.js deleted file mode 100644 index ec91ddf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/size.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isNil = require('../../predicate/isNil.js'); - -function size(target) { - if (isNil.isNil(target)) { - return 0; - } - if (target instanceof Map || target instanceof Set) { - return target.size; - } - return Object.keys(target).length; -} - -exports.size = size; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/size.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/size.mjs deleted file mode 100644 index 0392cf8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/size.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import { isNil } from '../../predicate/isNil.mjs'; - -function size(target) { - if (isNil(target)) { - return 0; - } - if (target instanceof Map || target instanceof Set) { - return target.size; - } - return Object.keys(target).length; -} - -export { size }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/slice.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/slice.d.mts deleted file mode 100644 index f9c2e53..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/slice.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Create a slice of `array` from `start` up to, but not including, `end`. - * - * It does not return a dense array for sparse arrays unlike the native `Array.prototype.slice`. - * - * @template T - The type of the array elements. - * @param {ArrayLike | null | undefined} array - The array to slice. - * @param {number} [start=0] - The start position. - * @param {number} [end=array.length] - The end position. - * @returns {T[]} - Returns the slice of `array`. - * - * @example - * slice([1, 2, 3], 1, 2); // => [2] - * slice(new Array(3)); // => [undefined, undefined, undefined] - */ -declare function slice(array: ArrayLike | null | undefined, start?: number, end?: number): T[]; - -export { slice }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/slice.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/slice.d.ts deleted file mode 100644 index f9c2e53..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/slice.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Create a slice of `array` from `start` up to, but not including, `end`. - * - * It does not return a dense array for sparse arrays unlike the native `Array.prototype.slice`. - * - * @template T - The type of the array elements. - * @param {ArrayLike | null | undefined} array - The array to slice. - * @param {number} [start=0] - The start position. - * @param {number} [end=array.length] - The end position. - * @returns {T[]} - Returns the slice of `array`. - * - * @example - * slice([1, 2, 3], 1, 2); // => [2] - * slice(new Array(3)); // => [undefined, undefined, undefined] - */ -declare function slice(array: ArrayLike | null | undefined, start?: number, end?: number): T[]; - -export { slice }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/slice.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/slice.js deleted file mode 100644 index 5c1fa4a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/slice.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isIterateeCall = require('../_internal/isIterateeCall.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const toInteger = require('../util/toInteger.js'); - -function slice(array, start, end) { - if (!isArrayLike.isArrayLike(array)) { - return []; - } - const length = array.length; - if (end === undefined) { - end = length; - } - else if (typeof end !== 'number' && isIterateeCall.isIterateeCall(array, start, end)) { - start = 0; - end = length; - } - start = toInteger.toInteger(start); - end = toInteger.toInteger(end); - if (start < 0) { - start = Math.max(length + start, 0); - } - else { - start = Math.min(start, length); - } - if (end < 0) { - end = Math.max(length + end, 0); - } - else { - end = Math.min(end, length); - } - const resultLength = Math.max(end - start, 0); - const result = new Array(resultLength); - for (let i = 0; i < resultLength; ++i) { - result[i] = array[start + i]; - } - return result; -} - -exports.slice = slice; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/slice.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/slice.mjs deleted file mode 100644 index 026bec4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/slice.mjs +++ /dev/null @@ -1,39 +0,0 @@ -import { isIterateeCall } from '../_internal/isIterateeCall.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { toInteger } from '../util/toInteger.mjs'; - -function slice(array, start, end) { - if (!isArrayLike(array)) { - return []; - } - const length = array.length; - if (end === undefined) { - end = length; - } - else if (typeof end !== 'number' && isIterateeCall(array, start, end)) { - start = 0; - end = length; - } - start = toInteger(start); - end = toInteger(end); - if (start < 0) { - start = Math.max(length + start, 0); - } - else { - start = Math.min(start, length); - } - if (end < 0) { - end = Math.max(length + end, 0); - } - else { - end = Math.min(end, length); - } - const resultLength = Math.max(end - start, 0); - const result = new Array(resultLength); - for (let i = 0; i < resultLength; ++i) { - result[i] = array[start + i]; - } - return result; -} - -export { slice }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/some.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/some.d.mts deleted file mode 100644 index 8a5ab16..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/some.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.mjs'; -import { ObjectIterateeCustom } from '../_internal/ObjectIteratee.mjs'; - -/** - * Checks if predicate returns truthy for any element of collection. - * - * @template T - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {ListIterateeCustom} [predicate] - The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, else `false`. - * - * @example - * some([null, 0, 'yes', false], Boolean); - * // => true - */ -declare function some(collection: ArrayLike | null | undefined, predicate?: ListIterateeCustom): boolean; -/** - * Checks if predicate returns truthy for any element of collection. - * - * @template T - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ObjectIterateeCustom} [predicate] - The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, else `false`. - * - * @example - * some({ 'a': 0, 'b': 1, 'c': 0 }, function(n) { return n > 0; }); - * // => true - */ -declare function some(collection: T | null | undefined, predicate?: ObjectIterateeCustom): boolean; - -export { some }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/some.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/some.d.ts deleted file mode 100644 index cf44fbc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/some.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { ListIterateeCustom } from '../_internal/ListIterateeCustom.js'; -import { ObjectIterateeCustom } from '../_internal/ObjectIteratee.js'; - -/** - * Checks if predicate returns truthy for any element of collection. - * - * @template T - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {ListIterateeCustom} [predicate] - The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, else `false`. - * - * @example - * some([null, 0, 'yes', false], Boolean); - * // => true - */ -declare function some(collection: ArrayLike | null | undefined, predicate?: ListIterateeCustom): boolean; -/** - * Checks if predicate returns truthy for any element of collection. - * - * @template T - * @param {T | null | undefined} collection - The object to iterate over. - * @param {ObjectIterateeCustom} [predicate] - The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, else `false`. - * - * @example - * some({ 'a': 0, 'b': 1, 'c': 0 }, function(n) { return n > 0; }); - * // => true - */ -declare function some(collection: T | null | undefined, predicate?: ObjectIterateeCustom): boolean; - -export { some }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/some.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/some.js deleted file mode 100644 index 7878e6d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/some.js +++ /dev/null @@ -1,86 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const property = require('../object/property.js'); -const matches = require('../predicate/matches.js'); -const matchesProperty = require('../predicate/matchesProperty.js'); - -function some(source, predicate, guard) { - if (!source) { - return false; - } - if (guard != null) { - predicate = undefined; - } - if (predicate == null) { - predicate = identity.identity; - } - const values = Array.isArray(source) ? source : Object.values(source); - switch (typeof predicate) { - case 'function': { - if (!Array.isArray(source)) { - const keys = Object.keys(source); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = source[key]; - if (predicate(value, key, source)) { - return true; - } - } - return false; - } - for (let i = 0; i < source.length; i++) { - if (predicate(source[i], i, source)) { - return true; - } - } - return false; - } - case 'object': { - if (Array.isArray(predicate) && predicate.length === 2) { - const key = predicate[0]; - const value = predicate[1]; - const matchFunc = matchesProperty.matchesProperty(key, value); - if (Array.isArray(source)) { - for (let i = 0; i < source.length; i++) { - if (matchFunc(source[i])) { - return true; - } - } - return false; - } - return values.some(matchFunc); - } - else { - const matchFunc = matches.matches(predicate); - if (Array.isArray(source)) { - for (let i = 0; i < source.length; i++) { - if (matchFunc(source[i])) { - return true; - } - } - return false; - } - return values.some(matchFunc); - } - } - case 'number': - case 'symbol': - case 'string': { - const propFunc = property.property(predicate); - if (Array.isArray(source)) { - for (let i = 0; i < source.length; i++) { - if (propFunc(source[i])) { - return true; - } - } - return false; - } - return values.some(propFunc); - } - } -} - -exports.some = some; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/some.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/some.mjs deleted file mode 100644 index 16e079e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/some.mjs +++ /dev/null @@ -1,82 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { property } from '../object/property.mjs'; -import { matches } from '../predicate/matches.mjs'; -import { matchesProperty } from '../predicate/matchesProperty.mjs'; - -function some(source, predicate, guard) { - if (!source) { - return false; - } - if (guard != null) { - predicate = undefined; - } - if (predicate == null) { - predicate = identity; - } - const values = Array.isArray(source) ? source : Object.values(source); - switch (typeof predicate) { - case 'function': { - if (!Array.isArray(source)) { - const keys = Object.keys(source); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = source[key]; - if (predicate(value, key, source)) { - return true; - } - } - return false; - } - for (let i = 0; i < source.length; i++) { - if (predicate(source[i], i, source)) { - return true; - } - } - return false; - } - case 'object': { - if (Array.isArray(predicate) && predicate.length === 2) { - const key = predicate[0]; - const value = predicate[1]; - const matchFunc = matchesProperty(key, value); - if (Array.isArray(source)) { - for (let i = 0; i < source.length; i++) { - if (matchFunc(source[i])) { - return true; - } - } - return false; - } - return values.some(matchFunc); - } - else { - const matchFunc = matches(predicate); - if (Array.isArray(source)) { - for (let i = 0; i < source.length; i++) { - if (matchFunc(source[i])) { - return true; - } - } - return false; - } - return values.some(matchFunc); - } - } - case 'number': - case 'symbol': - case 'string': { - const propFunc = property(predicate); - if (Array.isArray(source)) { - for (let i = 0; i < source.length; i++) { - if (propFunc(source[i])) { - return true; - } - } - return false; - } - return values.some(propFunc); - } - } -} - -export { some }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortBy.d.mts deleted file mode 100644 index 8aecc4c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortBy.d.mts +++ /dev/null @@ -1,73 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.mjs'; -import { Many } from '../_internal/Many.mjs'; -import { ObjectIteratee } from '../_internal/ObjectIteratee.mjs'; - -/** - * Sorts an array of objects based on multiple properties and their corresponding order directions. - * - * This function takes an array of objects, an array of criteria to sort by. - * It returns the ascending sorted array, ordering by each key. - * If values for a key are equal, it moves to the next key to determine the order. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | object | null | undefined} collection - The array of objects to be sorted. - * @param {Array | Criterion>>} criteria - An array of criteria (property names or property paths or custom key functions) to sort by. - * @returns {T[]} - The ascending sorted array. - * - * @example - * // Sort an array of objects by 'user' in ascending order and 'age' in descending order. - * const users = [ - * { user: 'fred', age: 48 }, - * { user: 'barney', age: 34 }, - * { user: 'fred', age: 40 }, - * { user: 'barney', age: 36 }, - * ]; - * const result = sortBy(users, ['user', (item) => item.age]) - * // result will be: - * // [ - * // { user: 'barney', age: 34 }, - * // { user: 'barney', age: 36 }, - * // { user: 'fred', age: 40 }, - * // { user: 'fred', age: 48 }, - * // ] - */ -/** - * Creates an array of elements, sorted in ascending order by the results of running each element in a collection thru each iteratee. - * - * @template T - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {...Array>} iteratees - The iteratees to sort by. - * @returns {T[]} Returns the new sorted array. - * - * @example - * const users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 42 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]] - */ -declare function sortBy(collection: ArrayLike | null | undefined, ...iteratees: Array>>): T[]; -/** - * Creates an array of elements, sorted in ascending order by the results of running each element in a collection thru each iteratee. - * - * @template T - * @param {T | null | undefined} collection - The object to iterate over. - * @param {...Array | ObjectIteratee>} iteratees - The iteratees to sort by. - * @returns {Array} Returns the new sorted array. - * - * @example - * const users = { - * 'a': { 'user': 'fred', 'age': 48 }, - * 'b': { 'user': 'barney', 'age': 36 } - * }; - * - * sortBy(users, [function(o) { return o.user; }]); - * // => [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 48 }] - */ -declare function sortBy(collection: T | null | undefined, ...iteratees: Array>>): Array; - -export { sortBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortBy.d.ts deleted file mode 100644 index eccafb0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortBy.d.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.js'; -import { Many } from '../_internal/Many.js'; -import { ObjectIteratee } from '../_internal/ObjectIteratee.js'; - -/** - * Sorts an array of objects based on multiple properties and their corresponding order directions. - * - * This function takes an array of objects, an array of criteria to sort by. - * It returns the ascending sorted array, ordering by each key. - * If values for a key are equal, it moves to the next key to determine the order. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | object | null | undefined} collection - The array of objects to be sorted. - * @param {Array | Criterion>>} criteria - An array of criteria (property names or property paths or custom key functions) to sort by. - * @returns {T[]} - The ascending sorted array. - * - * @example - * // Sort an array of objects by 'user' in ascending order and 'age' in descending order. - * const users = [ - * { user: 'fred', age: 48 }, - * { user: 'barney', age: 34 }, - * { user: 'fred', age: 40 }, - * { user: 'barney', age: 36 }, - * ]; - * const result = sortBy(users, ['user', (item) => item.age]) - * // result will be: - * // [ - * // { user: 'barney', age: 34 }, - * // { user: 'barney', age: 36 }, - * // { user: 'fred', age: 40 }, - * // { user: 'fred', age: 48 }, - * // ] - */ -/** - * Creates an array of elements, sorted in ascending order by the results of running each element in a collection thru each iteratee. - * - * @template T - * @param {ArrayLike | null | undefined} collection - The collection to iterate over. - * @param {...Array>} iteratees - The iteratees to sort by. - * @returns {T[]} Returns the new sorted array. - * - * @example - * const users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 42 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]] - */ -declare function sortBy(collection: ArrayLike | null | undefined, ...iteratees: Array>>): T[]; -/** - * Creates an array of elements, sorted in ascending order by the results of running each element in a collection thru each iteratee. - * - * @template T - * @param {T | null | undefined} collection - The object to iterate over. - * @param {...Array | ObjectIteratee>} iteratees - The iteratees to sort by. - * @returns {Array} Returns the new sorted array. - * - * @example - * const users = { - * 'a': { 'user': 'fred', 'age': 48 }, - * 'b': { 'user': 'barney', 'age': 36 } - * }; - * - * sortBy(users, [function(o) { return o.user; }]); - * // => [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 48 }] - */ -declare function sortBy(collection: T | null | undefined, ...iteratees: Array>>): Array; - -export { sortBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortBy.js deleted file mode 100644 index f786b5e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortBy.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const orderBy = require('./orderBy.js'); -const flatten = require('../../array/flatten.js'); -const isIterateeCall = require('../_internal/isIterateeCall.js'); - -function sortBy(collection, ...criteria) { - const length = criteria.length; - if (length > 1 && isIterateeCall.isIterateeCall(collection, criteria[0], criteria[1])) { - criteria = []; - } - else if (length > 2 && isIterateeCall.isIterateeCall(criteria[0], criteria[1], criteria[2])) { - criteria = [criteria[0]]; - } - return orderBy.orderBy(collection, flatten.flatten(criteria), ['asc']); -} - -exports.sortBy = sortBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortBy.mjs deleted file mode 100644 index fddfbe6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortBy.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { orderBy } from './orderBy.mjs'; -import { flatten } from '../../array/flatten.mjs'; -import { isIterateeCall } from '../_internal/isIterateeCall.mjs'; - -function sortBy(collection, ...criteria) { - const length = criteria.length; - if (length > 1 && isIterateeCall(collection, criteria[0], criteria[1])) { - criteria = []; - } - else if (length > 2 && isIterateeCall(criteria[0], criteria[1], criteria[2])) { - criteria = [criteria[0]]; - } - return orderBy(collection, flatten(criteria), ['asc']); -} - -export { sortBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndex.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndex.d.mts deleted file mode 100644 index d5e2f73..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndex.d.mts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Uses a binary search to determine the lowest index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @category Array - * @param {ArrayLike | null | undefined} array The sorted array to inspect. - * @param {T} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * sortedIndex([30, 50], 40) - * // => 1 - */ -declare function sortedIndex(array: ArrayLike | null | undefined, value: T): number; -/** - * Uses a binary search to determine the lowest index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @category Array - * @param {ArrayLike | null | undefined} array The sorted array to inspect. - * @param {T} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * sortedIndex([30, 50], 40) - * // => 1 - */ -declare function sortedIndex(array: ArrayLike | null | undefined, value: T): number; - -export { sortedIndex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndex.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndex.d.ts deleted file mode 100644 index d5e2f73..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndex.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Uses a binary search to determine the lowest index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @category Array - * @param {ArrayLike | null | undefined} array The sorted array to inspect. - * @param {T} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * sortedIndex([30, 50], 40) - * // => 1 - */ -declare function sortedIndex(array: ArrayLike | null | undefined, value: T): number; -/** - * Uses a binary search to determine the lowest index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @category Array - * @param {ArrayLike | null | undefined} array The sorted array to inspect. - * @param {T} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * sortedIndex([30, 50], 40) - * // => 1 - */ -declare function sortedIndex(array: ArrayLike | null | undefined, value: T): number; - -export { sortedIndex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndex.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndex.js deleted file mode 100644 index e513b27..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndex.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const sortedIndexBy = require('./sortedIndexBy.js'); -const isNil = require('../../predicate/isNil.js'); -const isNull = require('../../predicate/isNull.js'); -const isSymbol = require('../../predicate/isSymbol.js'); -const isNumber = require('../predicate/isNumber.js'); - -const MAX_ARRAY_LENGTH = 4294967295; -const HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; -function sortedIndex(array, value) { - if (isNil.isNil(array)) { - return 0; - } - let low = 0; - let high = array.length; - if (isNumber.isNumber(value) && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - const mid = (low + high) >>> 1; - const compute = array[mid]; - if (!isNull.isNull(compute) && !isSymbol.isSymbol(compute) && compute < value) { - low = mid + 1; - } - else { - high = mid; - } - } - return high; - } - return sortedIndexBy.sortedIndexBy(array, value, value => value); -} - -exports.sortedIndex = sortedIndex; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndex.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndex.mjs deleted file mode 100644 index 9541536..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndex.mjs +++ /dev/null @@ -1,31 +0,0 @@ -import { sortedIndexBy } from './sortedIndexBy.mjs'; -import { isNil } from '../../predicate/isNil.mjs'; -import { isNull } from '../../predicate/isNull.mjs'; -import { isSymbol } from '../../predicate/isSymbol.mjs'; -import { isNumber } from '../predicate/isNumber.mjs'; - -const MAX_ARRAY_LENGTH = 4294967295; -const HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; -function sortedIndex(array, value) { - if (isNil(array)) { - return 0; - } - let low = 0; - let high = array.length; - if (isNumber(value) && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - const mid = (low + high) >>> 1; - const compute = array[mid]; - if (!isNull(compute) && !isSymbol(compute) && compute < value) { - low = mid + 1; - } - else { - high = mid; - } - } - return high; - } - return sortedIndexBy(array, value, value => value); -} - -export { sortedIndex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexBy.d.mts deleted file mode 100644 index edbca67..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexBy.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * This method is like `sortedIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} array - The sorted array to inspect. - * @param {T} value - The value to evaluate. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted into `array`. - * - * @example - * const dict = { 'thirty': 30, 'forty': 40, 'fifty': 50 }; - * sortedIndexBy(['thirty', 'fifty'], 'forty', _.propertyOf(dict)); - * // => 1 - * - * @example - * sortedIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x'); - * // => 0 - */ -declare function sortedIndexBy(array: ArrayLike | null | undefined, value: T, iteratee?: ValueIteratee): number; - -export { sortedIndexBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexBy.d.ts deleted file mode 100644 index 6c81f1a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexBy.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * This method is like `sortedIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} array - The sorted array to inspect. - * @param {T} value - The value to evaluate. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted into `array`. - * - * @example - * const dict = { 'thirty': 30, 'forty': 40, 'fifty': 50 }; - * sortedIndexBy(['thirty', 'fifty'], 'forty', _.propertyOf(dict)); - * // => 1 - * - * @example - * sortedIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x'); - * // => 0 - */ -declare function sortedIndexBy(array: ArrayLike | null | undefined, value: T, iteratee?: ValueIteratee): number; - -export { sortedIndexBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexBy.js deleted file mode 100644 index 117bda7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexBy.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isNull = require('../../predicate/isNull.js'); -const isUndefined = require('../../predicate/isUndefined.js'); -const identity = require('../function/identity.js'); -const isNaN = require('../predicate/isNaN.js'); -const isNil = require('../predicate/isNil.js'); -const isSymbol = require('../predicate/isSymbol.js'); -const iteratee = require('../util/iteratee.js'); - -const MAX_ARRAY_LENGTH = 4294967295; -const MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1; -function sortedIndexBy(array, value, iteratee$1 = identity.identity, retHighest) { - if (isNil.isNil(array) || array.length === 0) { - return 0; - } - let low = 0; - let high = array.length; - const iterateeFunction = iteratee.iteratee(iteratee$1); - const transformedValue = iterateeFunction(value); - const valIsNaN = isNaN.isNaN(transformedValue); - const valIsNull = isNull.isNull(transformedValue); - const valIsSymbol = isSymbol.isSymbol(transformedValue); - const valIsUndefined = isUndefined.isUndefined(transformedValue); - while (low < high) { - let setLow; - const mid = Math.floor((low + high) / 2); - const computed = iterateeFunction(array[mid]); - const othIsDefined = !isUndefined.isUndefined(computed); - const othIsNull = isNull.isNull(computed); - const othIsReflexive = !isNaN.isNaN(computed); - const othIsSymbol = isSymbol.isSymbol(computed); - if (valIsNaN) { - setLow = retHighest || othIsReflexive; - } - else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } - else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } - else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } - else if (othIsNull || othIsSymbol) { - setLow = false; - } - else { - setLow = retHighest ? computed <= transformedValue : computed < transformedValue; - } - if (setLow) { - low = mid + 1; - } - else { - high = mid; - } - } - return Math.min(high, MAX_ARRAY_INDEX); -} - -exports.sortedIndexBy = sortedIndexBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexBy.mjs deleted file mode 100644 index 2d15493..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexBy.mjs +++ /dev/null @@ -1,59 +0,0 @@ -import { isNull } from '../../predicate/isNull.mjs'; -import { isUndefined } from '../../predicate/isUndefined.mjs'; -import { identity } from '../function/identity.mjs'; -import { isNaN } from '../predicate/isNaN.mjs'; -import { isNil } from '../predicate/isNil.mjs'; -import { isSymbol } from '../predicate/isSymbol.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -const MAX_ARRAY_LENGTH = 4294967295; -const MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1; -function sortedIndexBy(array, value, iteratee$1 = identity, retHighest) { - if (isNil(array) || array.length === 0) { - return 0; - } - let low = 0; - let high = array.length; - const iterateeFunction = iteratee(iteratee$1); - const transformedValue = iterateeFunction(value); - const valIsNaN = isNaN(transformedValue); - const valIsNull = isNull(transformedValue); - const valIsSymbol = isSymbol(transformedValue); - const valIsUndefined = isUndefined(transformedValue); - while (low < high) { - let setLow; - const mid = Math.floor((low + high) / 2); - const computed = iterateeFunction(array[mid]); - const othIsDefined = !isUndefined(computed); - const othIsNull = isNull(computed); - const othIsReflexive = !isNaN(computed); - const othIsSymbol = isSymbol(computed); - if (valIsNaN) { - setLow = retHighest || othIsReflexive; - } - else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } - else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } - else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } - else if (othIsNull || othIsSymbol) { - setLow = false; - } - else { - setLow = retHighest ? computed <= transformedValue : computed < transformedValue; - } - if (setLow) { - low = mid + 1; - } - else { - high = mid; - } - } - return Math.min(high, MAX_ARRAY_INDEX); -} - -export { sortedIndexBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.d.mts deleted file mode 100644 index ee3a4f9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.d.mts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Finds the index of the first occurrence of a value in a sorted array, similar to how `Array#indexOf` works, but specifically for sorted arrays. - * - * Make sure to provide a sorted array to this function, as it uses a binary search to quickly find the index. - * - * @param {ArrayLike | null | undefined} array The sorted array to inspect. - * @param {T} value The value to search for. - * @returns {number} Returns the index of the matched value, else -1. - * - * @example - * const numbers = [1, 2, 3, 4, 5]; - * sortedIndexOf(numbers, 11); // Return value: 0 - * sortedIndexOf(numbers, 30); // Return value: -1 - * - * // If the value is duplicated, it returns the first index of the value. - * const duplicateNumbers = [1, 2, 2, 3, 3, 3, 4]; - * sortedIndexOf(duplicateNumbers, 3); // Return value: 3 - * - * // If the array is unsorted, it can return the wrong index. - * const unSortedArray = [55, 33, 22, 11, 44]; - * sortedIndexOf(unSortedArray, 11); // Return value: -1 - * - * // -0 and 0 are treated the same - * const mixedZeroArray = [-0, 0]; - * sortedIndexOf(mixedZeroArray, 0); // Return value: 0 - * sortedIndexOf(mixedZeroArray, -0); // Return value: 0 - * - * // It works with array-like objects - * const arrayLike = { length: 3, 0: 10, 1: 20, 2: 30 }; - * sortedIndexOf(arrayLike, 20); // Return value: 1 - */ -declare function sortedIndexOf(array: ArrayLike | null | undefined, value: T): number; - -export { sortedIndexOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.d.ts deleted file mode 100644 index ee3a4f9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Finds the index of the first occurrence of a value in a sorted array, similar to how `Array#indexOf` works, but specifically for sorted arrays. - * - * Make sure to provide a sorted array to this function, as it uses a binary search to quickly find the index. - * - * @param {ArrayLike | null | undefined} array The sorted array to inspect. - * @param {T} value The value to search for. - * @returns {number} Returns the index of the matched value, else -1. - * - * @example - * const numbers = [1, 2, 3, 4, 5]; - * sortedIndexOf(numbers, 11); // Return value: 0 - * sortedIndexOf(numbers, 30); // Return value: -1 - * - * // If the value is duplicated, it returns the first index of the value. - * const duplicateNumbers = [1, 2, 2, 3, 3, 3, 4]; - * sortedIndexOf(duplicateNumbers, 3); // Return value: 3 - * - * // If the array is unsorted, it can return the wrong index. - * const unSortedArray = [55, 33, 22, 11, 44]; - * sortedIndexOf(unSortedArray, 11); // Return value: -1 - * - * // -0 and 0 are treated the same - * const mixedZeroArray = [-0, 0]; - * sortedIndexOf(mixedZeroArray, 0); // Return value: 0 - * sortedIndexOf(mixedZeroArray, -0); // Return value: 0 - * - * // It works with array-like objects - * const arrayLike = { length: 3, 0: 10, 1: 20, 2: 30 }; - * sortedIndexOf(arrayLike, 20); // Return value: 1 - */ -declare function sortedIndexOf(array: ArrayLike | null | undefined, value: T): number; - -export { sortedIndexOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.js deleted file mode 100644 index e4cdedf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const sortedIndex = require('./sortedIndex.js'); -const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js'); - -function sortedIndexOf(array, value) { - if (!array?.length) { - return -1; - } - const index = sortedIndex.sortedIndex(array, value); - if (index < array.length && isEqualsSameValueZero.isEqualsSameValueZero(array[index], value)) { - return index; - } - return -1; -} - -exports.sortedIndexOf = sortedIndexOf; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.mjs deleted file mode 100644 index 5413cb5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import { sortedIndex } from './sortedIndex.mjs'; -import { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs'; - -function sortedIndexOf(array, value) { - if (!array?.length) { - return -1; - } - const index = sortedIndex(array, value); - if (index < array.length && isEqualsSameValueZero(array[index], value)) { - return index; - } - return -1; -} - -export { sortedIndexOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndex.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndex.d.mts deleted file mode 100644 index d42a443..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndex.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Uses a binary search to determine the highest index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @category Array - * @param {ArrayLike | null | undefined} array The sorted array to inspect. - * @param {T} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * sortedIndex([4, 5, 5, 5, 6], 5) - * // => 4 - */ -declare function sortedLastIndex(array: ArrayLike | null | undefined, value: T): number; - -export { sortedLastIndex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndex.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndex.d.ts deleted file mode 100644 index d42a443..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndex.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Uses a binary search to determine the highest index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @category Array - * @param {ArrayLike | null | undefined} array The sorted array to inspect. - * @param {T} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * sortedIndex([4, 5, 5, 5, 6], 5) - * // => 4 - */ -declare function sortedLastIndex(array: ArrayLike | null | undefined, value: T): number; - -export { sortedLastIndex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndex.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndex.js deleted file mode 100644 index 4045529..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndex.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const sortedLastIndexBy = require('./sortedLastIndexBy.js'); -const isNil = require('../../predicate/isNil.js'); -const isNull = require('../../predicate/isNull.js'); -const isSymbol = require('../../predicate/isSymbol.js'); -const isNumber = require('../predicate/isNumber.js'); - -const MAX_ARRAY_LENGTH = 4294967295; -const HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; -function sortedLastIndex(array, value) { - if (isNil.isNil(array)) { - return 0; - } - let high = array.length; - if (!isNumber.isNumber(value) || Number.isNaN(value) || high > HALF_MAX_ARRAY_LENGTH) { - return sortedLastIndexBy.sortedLastIndexBy(array, value, value => value); - } - let low = 0; - while (low < high) { - const mid = (low + high) >>> 1; - const compute = array[mid]; - if (!isNull.isNull(compute) && !isSymbol.isSymbol(compute) && compute <= value) { - low = mid + 1; - } - else { - high = mid; - } - } - return high; -} - -exports.sortedLastIndex = sortedLastIndex; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndex.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndex.mjs deleted file mode 100644 index 50dc40b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndex.mjs +++ /dev/null @@ -1,31 +0,0 @@ -import { sortedLastIndexBy } from './sortedLastIndexBy.mjs'; -import { isNil } from '../../predicate/isNil.mjs'; -import { isNull } from '../../predicate/isNull.mjs'; -import { isSymbol } from '../../predicate/isSymbol.mjs'; -import { isNumber } from '../predicate/isNumber.mjs'; - -const MAX_ARRAY_LENGTH = 4294967295; -const HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; -function sortedLastIndex(array, value) { - if (isNil(array)) { - return 0; - } - let high = array.length; - if (!isNumber(value) || Number.isNaN(value) || high > HALF_MAX_ARRAY_LENGTH) { - return sortedLastIndexBy(array, value, value => value); - } - let low = 0; - while (low < high) { - const mid = (low + high) >>> 1; - const compute = array[mid]; - if (!isNull(compute) && !isSymbol(compute) && compute <= value) { - low = mid + 1; - } - else { - high = mid; - } - } - return high; -} - -export { sortedLastIndex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexBy.d.mts deleted file mode 100644 index 43ef9a7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexBy.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * This method is like `sortedLastIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} array - The sorted array to inspect. - * @param {T} value - The value to evaluate. - * @param {ValueIteratee} iteratee - The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted into `array`. - * - * @example - * sortedLastIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x'); - * // => 1 - */ -declare function sortedLastIndexBy(array: ArrayLike | null | undefined, value: T, iteratee: ValueIteratee): number; - -export { sortedLastIndexBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexBy.d.ts deleted file mode 100644 index c2cc540..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexBy.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * This method is like `sortedLastIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} array - The sorted array to inspect. - * @param {T} value - The value to evaluate. - * @param {ValueIteratee} iteratee - The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted into `array`. - * - * @example - * sortedLastIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x'); - * // => 1 - */ -declare function sortedLastIndexBy(array: ArrayLike | null | undefined, value: T, iteratee: ValueIteratee): number; - -export { sortedLastIndexBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexBy.js deleted file mode 100644 index b4616aa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexBy.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const sortedIndexBy = require('./sortedIndexBy.js'); - -function sortedLastIndexBy(array, value, iteratee) { - return sortedIndexBy.sortedIndexBy(array, value, iteratee, true); -} - -exports.sortedLastIndexBy = sortedLastIndexBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexBy.mjs deleted file mode 100644 index 510bc01..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexBy.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { sortedIndexBy } from './sortedIndexBy.mjs'; - -function sortedLastIndexBy(array, value, iteratee) { - return sortedIndexBy(array, value, iteratee, true); -} - -export { sortedLastIndexBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.d.mts deleted file mode 100644 index e227d8d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.d.mts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Finds the index of the last occurrence of a value in a sorted array. - * This function is similar to `Array#lastIndexOf` but is specifically designed for sorted arrays. - * - * Make sure to provide a sorted array to this function, as it uses a binary search to quickly find the index. - * - * @param {ArrayLike | null | undefined} array The sorted array to inspect. - * @param {T} value The value to search for. - * @returns {number} Returns the index of the last matched value, else -1. - * - * @example - * const numbers = [1, 2, 3, 4, 5]; - * sortedLastIndexOf(numbers, 3); // Return value: 2 - * sortedLastIndexOf(numbers, 6); // Return value: -1 - * - * // If the value is duplicated, it returns the last index of the value. - * const duplicateNumbers = [1, 2, 2, 3, 3, 3, 4]; - * sortedLastIndexOf(duplicateNumbers, 3); // Return value: 5 - * - * // If the array is unsorted, it can return the wrong index. - * const unSortedArray = [55, 33, 22, 11, 44]; - * sortedLastIndexOf(unSortedArray, 11); // Return value: -1 - * - * // -0 and 0 are treated the same - * const mixedZeroArray = [-0, 0]; - * sortedLastIndexOf(mixedZeroArray, 0); // Return value: 1 - * sortedLastIndexOf(mixedZeroArray, -0); // Return value: 1 - * - * // It works with array-like objects - * const arrayLike = { length: 3, 0: 10, 1: 20, 2: 20 }; - * sortedLastIndexOf(arrayLike, 20); // Return value: 2 - */ -declare function sortedLastIndexOf(array: ArrayLike | null | undefined, value: T): number; - -export { sortedLastIndexOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.d.ts deleted file mode 100644 index e227d8d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Finds the index of the last occurrence of a value in a sorted array. - * This function is similar to `Array#lastIndexOf` but is specifically designed for sorted arrays. - * - * Make sure to provide a sorted array to this function, as it uses a binary search to quickly find the index. - * - * @param {ArrayLike | null | undefined} array The sorted array to inspect. - * @param {T} value The value to search for. - * @returns {number} Returns the index of the last matched value, else -1. - * - * @example - * const numbers = [1, 2, 3, 4, 5]; - * sortedLastIndexOf(numbers, 3); // Return value: 2 - * sortedLastIndexOf(numbers, 6); // Return value: -1 - * - * // If the value is duplicated, it returns the last index of the value. - * const duplicateNumbers = [1, 2, 2, 3, 3, 3, 4]; - * sortedLastIndexOf(duplicateNumbers, 3); // Return value: 5 - * - * // If the array is unsorted, it can return the wrong index. - * const unSortedArray = [55, 33, 22, 11, 44]; - * sortedLastIndexOf(unSortedArray, 11); // Return value: -1 - * - * // -0 and 0 are treated the same - * const mixedZeroArray = [-0, 0]; - * sortedLastIndexOf(mixedZeroArray, 0); // Return value: 1 - * sortedLastIndexOf(mixedZeroArray, -0); // Return value: 1 - * - * // It works with array-like objects - * const arrayLike = { length: 3, 0: 10, 1: 20, 2: 20 }; - * sortedLastIndexOf(arrayLike, 20); // Return value: 2 - */ -declare function sortedLastIndexOf(array: ArrayLike | null | undefined, value: T): number; - -export { sortedLastIndexOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.js deleted file mode 100644 index 6694c0f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const sortedLastIndex = require('./sortedLastIndex.js'); -const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js'); - -function sortedLastIndexOf(array, value) { - if (!array?.length) { - return -1; - } - const index = sortedLastIndex.sortedLastIndex(array, value) - 1; - if (index >= 0 && isEqualsSameValueZero.isEqualsSameValueZero(array[index], value)) { - return index; - } - return -1; -} - -exports.sortedLastIndexOf = sortedLastIndexOf; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.mjs deleted file mode 100644 index e874ce9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import { sortedLastIndex } from './sortedLastIndex.mjs'; -import { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs'; - -function sortedLastIndexOf(array, value) { - if (!array?.length) { - return -1; - } - const index = sortedLastIndex(array, value) - 1; - if (index >= 0 && isEqualsSameValueZero(array[index], value)) { - return index; - } - return -1; -} - -export { sortedLastIndexOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/tail.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/tail.d.mts deleted file mode 100644 index cd4714c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/tail.d.mts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Gets all but the first element of array. - * - * @template T - * @param {readonly [unknown, ...T]} array - The array to query. - * @returns {T} Returns the slice of array. - * - * @example - * tail([1, 2, 3]); - * // => [2, 3] - */ -declare function tail(array: readonly [unknown, ...T]): T; -/** - * Gets all but the first element of array. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to query. - * @returns {T[]} Returns the slice of array. - * - * @example - * tail([1, 2, 3]); - * // => [2, 3] - */ -declare function tail(array: ArrayLike | null | undefined): T[]; - -export { tail }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/tail.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/tail.d.ts deleted file mode 100644 index cd4714c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/tail.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Gets all but the first element of array. - * - * @template T - * @param {readonly [unknown, ...T]} array - The array to query. - * @returns {T} Returns the slice of array. - * - * @example - * tail([1, 2, 3]); - * // => [2, 3] - */ -declare function tail(array: readonly [unknown, ...T]): T; -/** - * Gets all but the first element of array. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to query. - * @returns {T[]} Returns the slice of array. - * - * @example - * tail([1, 2, 3]); - * // => [2, 3] - */ -declare function tail(array: ArrayLike | null | undefined): T[]; - -export { tail }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/tail.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/tail.js deleted file mode 100644 index e564188..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/tail.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const tail$1 = require('../../array/tail.js'); -const toArray = require('../_internal/toArray.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function tail(arr) { - if (!isArrayLike.isArrayLike(arr)) { - return []; - } - return tail$1.tail(toArray.toArray(arr)); -} - -exports.tail = tail; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/tail.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/tail.mjs deleted file mode 100644 index fbbb710..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/tail.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { tail as tail$1 } from '../../array/tail.mjs'; -import { toArray } from '../_internal/toArray.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function tail(arr) { - if (!isArrayLike(arr)) { - return []; - } - return tail$1(toArray(arr)); -} - -export { tail }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/take.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/take.d.mts deleted file mode 100644 index 582ab70..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/take.d.mts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Creates a slice of array with n elements taken from the beginning. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to query. - * @param {number} [n=1] - The number of elements to take. - * @returns {T[]} Returns the slice of array. - * - * @example - * take([1, 2, 3]); - * // => [1] - * - * @example - * take([1, 2, 3], 2); - * // => [1, 2] - * - * @example - * take([1, 2, 3], 5); - * // => [1, 2, 3] - * - * @example - * take([1, 2, 3], 0); - * // => [] - */ -declare function take(array: ArrayLike | null | undefined, n?: number): T[]; - -export { take }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/take.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/take.d.ts deleted file mode 100644 index 582ab70..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/take.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Creates a slice of array with n elements taken from the beginning. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to query. - * @param {number} [n=1] - The number of elements to take. - * @returns {T[]} Returns the slice of array. - * - * @example - * take([1, 2, 3]); - * // => [1] - * - * @example - * take([1, 2, 3], 2); - * // => [1, 2] - * - * @example - * take([1, 2, 3], 5); - * // => [1, 2, 3] - * - * @example - * take([1, 2, 3], 0); - * // => [] - */ -declare function take(array: ArrayLike | null | undefined, n?: number): T[]; - -export { take }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/take.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/take.js deleted file mode 100644 index 7860480..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/take.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const take$1 = require('../../array/take.js'); -const toArray = require('../_internal/toArray.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const toInteger = require('../util/toInteger.js'); - -function take(arr, count = 1, guard) { - count = guard ? 1 : toInteger.toInteger(count); - if (count < 1 || !isArrayLike.isArrayLike(arr)) { - return []; - } - return take$1.take(toArray.toArray(arr), count); -} - -exports.take = take; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/take.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/take.mjs deleted file mode 100644 index c1b4ed3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/take.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { take as take$1 } from '../../array/take.mjs'; -import { toArray } from '../_internal/toArray.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { toInteger } from '../util/toInteger.mjs'; - -function take(arr, count = 1, guard) { - count = guard ? 1 : toInteger(count); - if (count < 1 || !isArrayLike(arr)) { - return []; - } - return take$1(toArray(arr), count); -} - -export { take }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRight.d.mts deleted file mode 100644 index 31df7e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRight.d.mts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Creates a slice of array with n elements taken from the end. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to query. - * @param {number} [n=1] - The number of elements to take. - * @returns {T[]} Returns the slice of array. - * - * @example - * takeRight([1, 2, 3]); - * // => [3] - * - * @example - * takeRight([1, 2, 3], 2); - * // => [2, 3] - * - * @example - * takeRight([1, 2, 3], 5); - * // => [1, 2, 3] - * - * @example - * takeRight([1, 2, 3], 0); - * // => [] - */ -declare function takeRight(array: ArrayLike | null | undefined, n?: number): T[]; - -export { takeRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRight.d.ts deleted file mode 100644 index 31df7e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRight.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Creates a slice of array with n elements taken from the end. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to query. - * @param {number} [n=1] - The number of elements to take. - * @returns {T[]} Returns the slice of array. - * - * @example - * takeRight([1, 2, 3]); - * // => [3] - * - * @example - * takeRight([1, 2, 3], 2); - * // => [2, 3] - * - * @example - * takeRight([1, 2, 3], 5); - * // => [1, 2, 3] - * - * @example - * takeRight([1, 2, 3], 0); - * // => [] - */ -declare function takeRight(array: ArrayLike | null | undefined, n?: number): T[]; - -export { takeRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRight.js deleted file mode 100644 index fece14d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRight.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const takeRight$1 = require('../../array/takeRight.js'); -const toArray = require('../_internal/toArray.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const toInteger = require('../util/toInteger.js'); - -function takeRight(arr, count = 1, guard) { - count = guard ? 1 : toInteger.toInteger(count); - if (count <= 0 || !isArrayLike.isArrayLike(arr)) { - return []; - } - return takeRight$1.takeRight(toArray.toArray(arr), count); -} - -exports.takeRight = takeRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRight.mjs deleted file mode 100644 index 2d6cf86..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRight.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { takeRight as takeRight$1 } from '../../array/takeRight.mjs'; -import { toArray } from '../_internal/toArray.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { toInteger } from '../util/toInteger.mjs'; - -function takeRight(arr, count = 1, guard) { - count = guard ? 1 : toInteger(count); - if (count <= 0 || !isArrayLike(arr)) { - return []; - } - return takeRight$1(toArray(arr), count); -} - -export { takeRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRightWhile.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRightWhile.d.mts deleted file mode 100644 index 5243bc4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRightWhile.d.mts +++ /dev/null @@ -1,36 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.mjs'; - -/** - * Creates a slice of array with elements taken from the end. Elements are taken until predicate - * returns falsey. The predicate is invoked with three arguments: (value, index, array). - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to query. - * @param {ListIteratee} [predicate] - The function invoked per iteration. - * @returns {T[]} Returns the slice of array. - * - * @example - * const users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * takeRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['fred', 'pebbles'] - * - * @example - * takeRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['pebbles'] - * - * @example - * takeRightWhile(users, ['active', false]); - * // => objects for ['fred', 'pebbles'] - * - * @example - * takeRightWhile(users, 'active'); - * // => [] - */ -declare function takeRightWhile(array: ArrayLike | null | undefined, predicate?: ListIteratee): T[]; - -export { takeRightWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRightWhile.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRightWhile.d.ts deleted file mode 100644 index afc53aa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRightWhile.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.js'; - -/** - * Creates a slice of array with elements taken from the end. Elements are taken until predicate - * returns falsey. The predicate is invoked with three arguments: (value, index, array). - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to query. - * @param {ListIteratee} [predicate] - The function invoked per iteration. - * @returns {T[]} Returns the slice of array. - * - * @example - * const users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * takeRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['fred', 'pebbles'] - * - * @example - * takeRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['pebbles'] - * - * @example - * takeRightWhile(users, ['active', false]); - * // => objects for ['fred', 'pebbles'] - * - * @example - * takeRightWhile(users, 'active'); - * // => [] - */ -declare function takeRightWhile(array: ArrayLike | null | undefined, predicate?: ListIteratee): T[]; - -export { takeRightWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRightWhile.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRightWhile.js deleted file mode 100644 index 310fce3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRightWhile.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const negate = require('../../function/negate.js'); -const toArray = require('../_internal/toArray.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); -const iteratee = require('../util/iteratee.js'); - -function takeRightWhile(_array, predicate) { - if (!isArrayLikeObject.isArrayLikeObject(_array)) { - return []; - } - const array = toArray.toArray(_array); - const index = array.findLastIndex(negate.negate(iteratee.iteratee(predicate ?? identity.identity))); - return array.slice(index + 1); -} - -exports.takeRightWhile = takeRightWhile; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRightWhile.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRightWhile.mjs deleted file mode 100644 index c7ef177..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeRightWhile.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { negate } from '../../function/negate.mjs'; -import { toArray } from '../_internal/toArray.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function takeRightWhile(_array, predicate) { - if (!isArrayLikeObject(_array)) { - return []; - } - const array = toArray(_array); - const index = array.findLastIndex(negate(iteratee(predicate ?? identity))); - return array.slice(index + 1); -} - -export { takeRightWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeWhile.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeWhile.d.mts deleted file mode 100644 index 32565bb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeWhile.d.mts +++ /dev/null @@ -1,36 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.mjs'; - -/** - * Creates a slice of array with elements taken from the beginning. Elements are taken until predicate - * returns falsey. The predicate is invoked with three arguments: (value, index, array). - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to query. - * @param {ListIteratee} [predicate] - The function invoked per iteration. - * @returns {T[]} Returns the slice of array. - * - * @example - * const users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * takeWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney', 'fred'] - * - * @example - * takeWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['barney'] - * - * @example - * takeWhile(users, ['active', false]); - * // => objects for ['barney', 'fred'] - * - * @example - * takeWhile(users, 'active'); - * // => [] - */ -declare function takeWhile(array: ArrayLike | null | undefined, predicate?: ListIteratee): T[]; - -export { takeWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeWhile.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeWhile.d.ts deleted file mode 100644 index ded7145..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeWhile.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.js'; - -/** - * Creates a slice of array with elements taken from the beginning. Elements are taken until predicate - * returns falsey. The predicate is invoked with three arguments: (value, index, array). - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to query. - * @param {ListIteratee} [predicate] - The function invoked per iteration. - * @returns {T[]} Returns the slice of array. - * - * @example - * const users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * takeWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney', 'fred'] - * - * @example - * takeWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['barney'] - * - * @example - * takeWhile(users, ['active', false]); - * // => objects for ['barney', 'fred'] - * - * @example - * takeWhile(users, 'active'); - * // => [] - */ -declare function takeWhile(array: ArrayLike | null | undefined, predicate?: ListIteratee): T[]; - -export { takeWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeWhile.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeWhile.js deleted file mode 100644 index 48fae13..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeWhile.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toArray = require('../_internal/toArray.js'); -const identity = require('../function/identity.js'); -const negate = require('../function/negate.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); -const iteratee = require('../util/iteratee.js'); - -function takeWhile(array, predicate) { - if (!isArrayLikeObject.isArrayLikeObject(array)) { - return []; - } - const _array = toArray.toArray(array); - const index = _array.findIndex(negate.negate(iteratee.iteratee(predicate ?? identity.identity))); - return index === -1 ? _array : _array.slice(0, index); -} - -exports.takeWhile = takeWhile; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeWhile.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeWhile.mjs deleted file mode 100644 index d6a80ff..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/takeWhile.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { toArray } from '../_internal/toArray.mjs'; -import { identity } from '../function/identity.mjs'; -import { negate } from '../function/negate.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function takeWhile(array, predicate) { - if (!isArrayLikeObject(array)) { - return []; - } - const _array = toArray(array); - const index = _array.findIndex(negate(iteratee(predicate ?? identity))); - return index === -1 ? _array : _array.slice(0, index); -} - -export { takeWhile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/union.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/union.d.mts deleted file mode 100644 index f9cc765..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/union.d.mts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * This function takes multiple arrays and returns a new array containing only the unique values - * from all input arrays, preserving the order of their first occurrence. - * - * @template T - The type of elements in the arrays. - * @param {Array | null | undefined>} arrays - The arrays to inspect. - * @returns {T[]} Returns the new array of combined unique values. - * - * @example - * // Returns [2, 1] - * union([2], [1, 2]); - * - * @example - * // Returns [2, 1, 3] - * union([2], [1, 2], [2, 3]); - * - * @example - * // Returns [1, 3, 2, [5], [4]] (does not deeply flatten nested arrays) - * union([1, 3, 2], [1, [5]], [2, [4]]); - * - * @example - * // Returns [0, 2, 1] (ignores non-array values like 3 and { '0': 1 }) - * union([0], 3, { '0': 1 }, null, [2, 1]); - * @example - * // Returns [0, 'a', 2, 1] (treats array-like object { 0: 'a', length: 1 } as a valid array) - * union([0], { 0: 'a', length: 1 }, [2, 1]); - */ -declare function union(...arrays: Array | null | undefined>): T[]; - -export { union }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/union.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/union.d.ts deleted file mode 100644 index f9cc765..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/union.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * This function takes multiple arrays and returns a new array containing only the unique values - * from all input arrays, preserving the order of their first occurrence. - * - * @template T - The type of elements in the arrays. - * @param {Array | null | undefined>} arrays - The arrays to inspect. - * @returns {T[]} Returns the new array of combined unique values. - * - * @example - * // Returns [2, 1] - * union([2], [1, 2]); - * - * @example - * // Returns [2, 1, 3] - * union([2], [1, 2], [2, 3]); - * - * @example - * // Returns [1, 3, 2, [5], [4]] (does not deeply flatten nested arrays) - * union([1, 3, 2], [1, [5]], [2, [4]]); - * - * @example - * // Returns [0, 2, 1] (ignores non-array values like 3 and { '0': 1 }) - * union([0], 3, { '0': 1 }, null, [2, 1]); - * @example - * // Returns [0, 'a', 2, 1] (treats array-like object { 0: 'a', length: 1 } as a valid array) - * union([0], { 0: 'a', length: 1 }, [2, 1]); - */ -declare function union(...arrays: Array | null | undefined>): T[]; - -export { union }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/union.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/union.js deleted file mode 100644 index 5a72086..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/union.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flatMapDepth = require('./flatMapDepth.js'); -const uniq = require('../../array/uniq.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); - -function union(...arrays) { - const validArrays = arrays.filter(isArrayLikeObject.isArrayLikeObject); - const flattened = flatMapDepth.flatMapDepth(validArrays, v => Array.from(v), 1); - return uniq.uniq(flattened); -} - -exports.union = union; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/union.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/union.mjs deleted file mode 100644 index 060317b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/union.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { flatMapDepth } from './flatMapDepth.mjs'; -import { uniq } from '../../array/uniq.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; - -function union(...arrays) { - const validArrays = arrays.filter(isArrayLikeObject); - const flattened = flatMapDepth(validArrays, v => Array.from(v), 1); - return uniq(flattened); -} - -export { union }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionBy.d.mts deleted file mode 100644 index 766a940..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionBy.d.mts +++ /dev/null @@ -1,93 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * This method is like `union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The arrays to inspect. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionBy([2.1], [1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * @example - * unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ -declare function unionBy(arrays: ArrayLike | null | undefined, iteratee?: ValueIteratee): T[]; -/** - * This method is like `union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays1 - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionBy([2.1], [1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - */ -declare function unionBy(arrays1: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, iteratee?: ValueIteratee): T[]; -/** - * This method is like `union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays1 - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ArrayLike | null | undefined} arrays3 - The third array to inspect. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionBy([2.1], [1.2, 2.3], [3.4], Math.floor); - * // => [2.1, 1.2, 3.4] - */ -declare function unionBy(arrays1: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, arrays3: ArrayLike | null | undefined, iteratee?: ValueIteratee): T[]; -/** - * This method is like `union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays1 - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ArrayLike | null | undefined} arrays3 - The third array to inspect. - * @param {ArrayLike | null | undefined} arrays4 - The fourth array to inspect. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionBy([2.1], [1.2, 2.3], [3.4], [4.5], Math.floor); - * // => [2.1, 1.2, 3.4, 4.5] - */ -declare function unionBy(arrays1: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, arrays3: ArrayLike | null | undefined, arrays4: ArrayLike | null | undefined, iteratee?: ValueIteratee): T[]; -/** - * This method is like `union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays1 - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ArrayLike | null | undefined} arrays3 - The third array to inspect. - * @param {ArrayLike | null | undefined} arrays4 - The fourth array to inspect. - * @param {ArrayLike | null | undefined} arrays5 - The fifth array to inspect. - * @param {...Array | ArrayLike | null | undefined>} iteratee - The iteratee invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionBy([2.1], [1.2, 2.3], [3.4], [4.5], [5.6], Math.floor); - * // => [2.1, 1.2, 3.4, 4.5, 5.6] - */ -declare function unionBy(arrays1: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, arrays3: ArrayLike | null | undefined, arrays4: ArrayLike | null | undefined, arrays5: ArrayLike | null | undefined, ...iteratee: Array | ArrayLike | null | undefined>): T[]; - -export { unionBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionBy.d.ts deleted file mode 100644 index 88ea6ae..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionBy.d.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * This method is like `union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The arrays to inspect. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionBy([2.1], [1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * @example - * unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ -declare function unionBy(arrays: ArrayLike | null | undefined, iteratee?: ValueIteratee): T[]; -/** - * This method is like `union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays1 - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionBy([2.1], [1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - */ -declare function unionBy(arrays1: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, iteratee?: ValueIteratee): T[]; -/** - * This method is like `union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays1 - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ArrayLike | null | undefined} arrays3 - The third array to inspect. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionBy([2.1], [1.2, 2.3], [3.4], Math.floor); - * // => [2.1, 1.2, 3.4] - */ -declare function unionBy(arrays1: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, arrays3: ArrayLike | null | undefined, iteratee?: ValueIteratee): T[]; -/** - * This method is like `union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays1 - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ArrayLike | null | undefined} arrays3 - The third array to inspect. - * @param {ArrayLike | null | undefined} arrays4 - The fourth array to inspect. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionBy([2.1], [1.2, 2.3], [3.4], [4.5], Math.floor); - * // => [2.1, 1.2, 3.4, 4.5] - */ -declare function unionBy(arrays1: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, arrays3: ArrayLike | null | undefined, arrays4: ArrayLike | null | undefined, iteratee?: ValueIteratee): T[]; -/** - * This method is like `union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays1 - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ArrayLike | null | undefined} arrays3 - The third array to inspect. - * @param {ArrayLike | null | undefined} arrays4 - The fourth array to inspect. - * @param {ArrayLike | null | undefined} arrays5 - The fifth array to inspect. - * @param {...Array | ArrayLike | null | undefined>} iteratee - The iteratee invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionBy([2.1], [1.2, 2.3], [3.4], [4.5], [5.6], Math.floor); - * // => [2.1, 1.2, 3.4, 4.5, 5.6] - */ -declare function unionBy(arrays1: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, arrays3: ArrayLike | null | undefined, arrays4: ArrayLike | null | undefined, arrays5: ArrayLike | null | undefined, ...iteratee: Array | ArrayLike | null | undefined>): T[]; - -export { unionBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionBy.js deleted file mode 100644 index cf3dbe1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionBy.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const last = require('../../array/last.js'); -const uniq = require('../../array/uniq.js'); -const uniqBy = require('../../array/uniqBy.js'); -const ary = require('../../function/ary.js'); -const flattenArrayLike = require('../_internal/flattenArrayLike.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); -const iteratee = require('../util/iteratee.js'); - -function unionBy(...values) { - const lastValue = last.last(values); - const flattened = flattenArrayLike.flattenArrayLike(values); - if (isArrayLikeObject.isArrayLikeObject(lastValue) || lastValue == null) { - return uniq.uniq(flattened); - } - return uniqBy.uniqBy(flattened, ary.ary(iteratee.iteratee(lastValue), 1)); -} - -exports.unionBy = unionBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionBy.mjs deleted file mode 100644 index d6a52bb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionBy.mjs +++ /dev/null @@ -1,18 +0,0 @@ -import { last } from '../../array/last.mjs'; -import { uniq } from '../../array/uniq.mjs'; -import { uniqBy } from '../../array/uniqBy.mjs'; -import { ary } from '../../function/ary.mjs'; -import { flattenArrayLike } from '../_internal/flattenArrayLike.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function unionBy(...values) { - const lastValue = last(values); - const flattened = flattenArrayLike(values); - if (isArrayLikeObject(lastValue) || lastValue == null) { - return uniq(flattened); - } - return uniqBy(flattened, ary(iteratee(lastValue), 1)); -} - -export { unionBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionWith.d.mts deleted file mode 100644 index 39bf369..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionWith.d.mts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * This method is like `union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The arrays to inspect. - * @param {(a: T, b: T) => boolean} [comparator] - The comparator invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * const objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * const others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * unionWith(objects, others, isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ -declare function unionWith(arrays: ArrayLike | null | undefined, comparator?: (a: T, b: T) => boolean): T[]; -/** - * This method is like `union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {(a: T, b: T) => boolean} [comparator] - The comparator invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionWith([1, 2], [2, 3], (a, b) => a === b); - * // => [1, 2, 3] - */ -declare function unionWith(arrays: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, comparator?: (a: T, b: T) => boolean): T[]; -/** - * This method is like `union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ArrayLike | null | undefined} arrays3 - The third array to inspect. - * @param {...Array<(a: T, b: T) => boolean | ArrayLike | null | undefined>} comparator - The comparator invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionWith([1], [2], [3], (a, b) => a === b); - * // => [1, 2, 3] - */ -declare function unionWith(arrays: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, arrays3: ArrayLike | null | undefined, ...comparator: Array<((a: T, b: T) => boolean) | ArrayLike | null | undefined>): T[]; - -export { unionWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionWith.d.ts deleted file mode 100644 index 39bf369..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionWith.d.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * This method is like `union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The arrays to inspect. - * @param {(a: T, b: T) => boolean} [comparator] - The comparator invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * const objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * const others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * unionWith(objects, others, isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ -declare function unionWith(arrays: ArrayLike | null | undefined, comparator?: (a: T, b: T) => boolean): T[]; -/** - * This method is like `union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {(a: T, b: T) => boolean} [comparator] - The comparator invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionWith([1, 2], [2, 3], (a, b) => a === b); - * // => [1, 2, 3] - */ -declare function unionWith(arrays: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, comparator?: (a: T, b: T) => boolean): T[]; -/** - * This method is like `union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ArrayLike | null | undefined} arrays3 - The third array to inspect. - * @param {...Array<(a: T, b: T) => boolean | ArrayLike | null | undefined>} comparator - The comparator invoked per element. - * @returns {T[]} Returns the new array of combined values. - * - * @example - * unionWith([1], [2], [3], (a, b) => a === b); - * // => [1, 2, 3] - */ -declare function unionWith(arrays: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, arrays3: ArrayLike | null | undefined, ...comparator: Array<((a: T, b: T) => boolean) | ArrayLike | null | undefined>): T[]; - -export { unionWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionWith.js deleted file mode 100644 index 2ad77f9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionWith.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const last = require('../../array/last.js'); -const uniq = require('../../array/uniq.js'); -const uniqWith = require('../../array/uniqWith.js'); -const flattenArrayLike = require('../_internal/flattenArrayLike.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); - -function unionWith(...values) { - const lastValue = last.last(values); - const flattened = flattenArrayLike.flattenArrayLike(values); - if (isArrayLikeObject.isArrayLikeObject(lastValue) || lastValue == null) { - return uniq.uniq(flattened); - } - return uniqWith.uniqWith(flattened, lastValue); -} - -exports.unionWith = unionWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionWith.mjs deleted file mode 100644 index 9e1f27e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unionWith.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { last } from '../../array/last.mjs'; -import { uniq } from '../../array/uniq.mjs'; -import { uniqWith } from '../../array/uniqWith.mjs'; -import { flattenArrayLike } from '../_internal/flattenArrayLike.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; - -function unionWith(...values) { - const lastValue = last(values); - const flattened = flattenArrayLike(values); - if (isArrayLikeObject(lastValue) || lastValue == null) { - return uniq(flattened); - } - return uniqWith(flattened, lastValue); -} - -export { unionWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniq.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniq.d.mts deleted file mode 100644 index d08236e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniq.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Creates a duplicate-free version of an array. - * - * This function takes an array and returns a new array containing only the unique values - * from the original array, preserving the order of first occurrence. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} arr - The array to process. - * @returns {T[]} A new array with only unique values from the original array. - * - * @example - * const array = [1, 2, 2, 3, 4, 4, 5]; - * const result = uniq(array); - * // result will be [1, 2, 3, 4, 5] - */ -declare function uniq(arr: ArrayLike | null | undefined): T[]; - -export { uniq }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniq.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniq.d.ts deleted file mode 100644 index d08236e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniq.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Creates a duplicate-free version of an array. - * - * This function takes an array and returns a new array containing only the unique values - * from the original array, preserving the order of first occurrence. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} arr - The array to process. - * @returns {T[]} A new array with only unique values from the original array. - * - * @example - * const array = [1, 2, 2, 3, 4, 4, 5]; - * const result = uniq(array); - * // result will be [1, 2, 3, 4, 5] - */ -declare function uniq(arr: ArrayLike | null | undefined): T[]; - -export { uniq }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniq.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniq.js deleted file mode 100644 index 5c98d48..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniq.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const uniq$1 = require('../../array/uniq.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function uniq(arr) { - if (!isArrayLike.isArrayLike(arr)) { - return []; - } - return uniq$1.uniq(Array.from(arr)); -} - -exports.uniq = uniq; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniq.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniq.mjs deleted file mode 100644 index 028f894..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniq.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { uniq as uniq$1 } from '../../array/uniq.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function uniq(arr) { - if (!isArrayLike(arr)) { - return []; - } - return uniq$1(Array.from(arr)); -} - -export { uniq }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqBy.d.mts deleted file mode 100644 index 92a7ac7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqBy.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * Creates a duplicate-free version of an array, using an optional transform function. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to inspect. - * @param {ValueIteratee} iteratee - The transform function or property name to get values from. - * @returns {T[]} Returns the new duplicate-free array. - * - * @example - * uniqBy([2.1, 1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - */ -declare function uniqBy(array: ArrayLike | null | undefined, iteratee: ValueIteratee): T[]; - -export { uniqBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqBy.d.ts deleted file mode 100644 index dd6a23d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqBy.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * Creates a duplicate-free version of an array, using an optional transform function. - * - * @template T - * @param {ArrayLike | null | undefined} array - The array to inspect. - * @param {ValueIteratee} iteratee - The transform function or property name to get values from. - * @returns {T[]} Returns the new duplicate-free array. - * - * @example - * uniqBy([2.1, 1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - */ -declare function uniqBy(array: ArrayLike | null | undefined, iteratee: ValueIteratee): T[]; - -export { uniqBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqBy.js deleted file mode 100644 index e0b0bf2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqBy.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const uniqBy$1 = require('../../array/uniqBy.js'); -const ary = require('../../function/ary.js'); -const identity = require('../../function/identity.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); -const iteratee = require('../util/iteratee.js'); - -function uniqBy(array, iteratee$1 = identity.identity) { - if (!isArrayLikeObject.isArrayLikeObject(array)) { - return []; - } - return uniqBy$1.uniqBy(Array.from(array), ary.ary(iteratee.iteratee(iteratee$1), 1)); -} - -exports.uniqBy = uniqBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqBy.mjs deleted file mode 100644 index 8451788..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqBy.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { uniqBy as uniqBy$1 } from '../../array/uniqBy.mjs'; -import { ary } from '../../function/ary.mjs'; -import { identity } from '../../function/identity.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function uniqBy(array, iteratee$1 = identity) { - if (!isArrayLikeObject(array)) { - return []; - } - return uniqBy$1(Array.from(array), ary(iteratee(iteratee$1), 1)); -} - -export { uniqBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqWith.d.mts deleted file mode 100644 index d1e266c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqWith.d.mts +++ /dev/null @@ -1,27 +0,0 @@ -type Comparator = (a: T, b: T) => boolean; -/** - * This method is like `uniq`, except that it accepts a `comparator` which is used to determine the equality of elements. - * - * It creates a duplicate-free version of an array, in which only the first occurrence of each element is kept. - * If a `comparator` is provided, it will be invoked with two arguments: `(arrVal, othVal)` to compare elements. - * If no comparator is provided, shallow equality is used. - * - * The order of result values is determined by the order they appear in the input array. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} arr - The array to process. - * @param {Comparator} [comparator] - Optional function to compare elements for equality. - * @returns {T[]} A new array with only unique values based on the comparator. - * - * @example - * const array = [1, 2, 2, 3]; - * const result = uniqWith(array); - * // result will be [1, 2, 3] - * - * const array = [1, 2, 3]; - * const result = uniqWith(array, (a, b) => a % 2 === b % 2) - * // result will be [1, 2] - */ -declare function uniqWith(arr: ArrayLike | null | undefined, comparator?: Comparator): T[]; - -export { uniqWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqWith.d.ts deleted file mode 100644 index d1e266c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqWith.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -type Comparator = (a: T, b: T) => boolean; -/** - * This method is like `uniq`, except that it accepts a `comparator` which is used to determine the equality of elements. - * - * It creates a duplicate-free version of an array, in which only the first occurrence of each element is kept. - * If a `comparator` is provided, it will be invoked with two arguments: `(arrVal, othVal)` to compare elements. - * If no comparator is provided, shallow equality is used. - * - * The order of result values is determined by the order they appear in the input array. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} arr - The array to process. - * @param {Comparator} [comparator] - Optional function to compare elements for equality. - * @returns {T[]} A new array with only unique values based on the comparator. - * - * @example - * const array = [1, 2, 2, 3]; - * const result = uniqWith(array); - * // result will be [1, 2, 3] - * - * const array = [1, 2, 3]; - * const result = uniqWith(array, (a, b) => a % 2 === b % 2) - * // result will be [1, 2] - */ -declare function uniqWith(arr: ArrayLike | null | undefined, comparator?: Comparator): T[]; - -export { uniqWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqWith.js deleted file mode 100644 index 66fa121..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqWith.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const uniqWith$1 = require('../../array/uniqWith.js'); -const uniq = require('./uniq.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function uniqWith(arr, comparator) { - if (!isArrayLike.isArrayLike(arr)) { - return []; - } - return typeof comparator === 'function' ? uniqWith$1.uniqWith(Array.from(arr), comparator) : uniq.uniq(Array.from(arr)); -} - -exports.uniqWith = uniqWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqWith.mjs deleted file mode 100644 index 0ab3f53..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/uniqWith.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { uniqWith as uniqWith$1 } from '../../array/uniqWith.mjs'; -import { uniq } from './uniq.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function uniqWith(arr, comparator) { - if (!isArrayLike(arr)) { - return []; - } - return typeof comparator === 'function' ? uniqWith$1(Array.from(arr), comparator) : uniq(Array.from(arr)); -} - -export { uniqWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzip.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzip.d.mts deleted file mode 100644 index b444aef..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzip.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Gathers elements in the same position in an internal array - * from a grouped array of elements and returns them as a new array. - * - * @template T - The type of elements in the nested array. - * @param {T[][] | ArrayLike> | null | undefined} array - The nested array to unzip. - * @returns {T[][]} A new array of unzipped elements. - * - * @example - * const zipped = [['a', true, 1],['b', false, 2]]; - * const result = unzip(zipped); - * // result will be [['a', 'b'], [true, false], [1, 2]] - */ -declare function unzip(array: T[][] | ArrayLike> | null | undefined): T[][]; - -export { unzip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzip.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzip.d.ts deleted file mode 100644 index b444aef..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzip.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Gathers elements in the same position in an internal array - * from a grouped array of elements and returns them as a new array. - * - * @template T - The type of elements in the nested array. - * @param {T[][] | ArrayLike> | null | undefined} array - The nested array to unzip. - * @returns {T[][]} A new array of unzipped elements. - * - * @example - * const zipped = [['a', true, 1],['b', false, 2]]; - * const result = unzip(zipped); - * // result will be [['a', 'b'], [true, false], [1, 2]] - */ -declare function unzip(array: T[][] | ArrayLike> | null | undefined): T[][]; - -export { unzip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzip.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzip.js deleted file mode 100644 index 4110ead..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzip.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const unzip$1 = require('../../array/unzip.js'); -const isArray = require('../predicate/isArray.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); - -function unzip(array) { - if (!isArrayLikeObject.isArrayLikeObject(array) || !array.length) { - return []; - } - array = isArray.isArray(array) ? array : Array.from(array); - array = array.filter(item => isArrayLikeObject.isArrayLikeObject(item)); - return unzip$1.unzip(array); -} - -exports.unzip = unzip; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzip.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzip.mjs deleted file mode 100644 index 631df33..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzip.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { unzip as unzip$1 } from '../../array/unzip.mjs'; -import { isArray } from '../predicate/isArray.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; - -function unzip(array) { - if (!isArrayLikeObject(array) || !array.length) { - return []; - } - array = isArray(array) ? array : Array.from(array); - array = array.filter(item => isArrayLikeObject(item)); - return unzip$1(array); -} - -export { unzip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzipWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzipWith.d.mts deleted file mode 100644 index ed501dc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzipWith.d.mts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * This method is like `unzip` except that it accepts an iteratee to specify - * how regrouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @template T, R - * @param {ArrayLike> | null | undefined} array - The array of grouped elements to process. - * @param {(...values: T[]) => R} iteratee - The function to combine regrouped values. - * @returns {R[]} Returns the new array of regrouped elements. - * - * @example - * unzipWith([[1, 10, 100], [2, 20, 200]], (a, b) => a + b); - * // => [3, 30, 300] - */ -declare function unzipWith(array: ArrayLike> | null | undefined, iteratee: (...values: T[]) => R): R[]; -/** - * This method is like `unzip` except that it accepts an iteratee to specify - * how regrouped values should be combined. - * - * @template T - * @param {ArrayLike> | null | undefined} array - The array of grouped elements to process. - * @returns {T[][]} Returns the new array of regrouped elements. - * - * @example - * unzipWith([[1, 10, 100], [2, 20, 200]]); - * // => [[1, 2], [10, 20], [100, 200]] - */ -declare function unzipWith(array: ArrayLike> | null | undefined): T[][]; - -export { unzipWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzipWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzipWith.d.ts deleted file mode 100644 index ed501dc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzipWith.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * This method is like `unzip` except that it accepts an iteratee to specify - * how regrouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @template T, R - * @param {ArrayLike> | null | undefined} array - The array of grouped elements to process. - * @param {(...values: T[]) => R} iteratee - The function to combine regrouped values. - * @returns {R[]} Returns the new array of regrouped elements. - * - * @example - * unzipWith([[1, 10, 100], [2, 20, 200]], (a, b) => a + b); - * // => [3, 30, 300] - */ -declare function unzipWith(array: ArrayLike> | null | undefined, iteratee: (...values: T[]) => R): R[]; -/** - * This method is like `unzip` except that it accepts an iteratee to specify - * how regrouped values should be combined. - * - * @template T - * @param {ArrayLike> | null | undefined} array - The array of grouped elements to process. - * @returns {T[][]} Returns the new array of regrouped elements. - * - * @example - * unzipWith([[1, 10, 100], [2, 20, 200]]); - * // => [[1, 2], [10, 20], [100, 200]] - */ -declare function unzipWith(array: ArrayLike> | null | undefined): T[][]; - -export { unzipWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzipWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzipWith.js deleted file mode 100644 index ee23c91..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzipWith.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const unzip = require('../../array/unzip.js'); -const isArray = require('../predicate/isArray.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); - -function unzipWith(array, iteratee) { - if (!isArrayLikeObject.isArrayLikeObject(array) || !array.length) { - return []; - } - const unzipped = isArray.isArray(array) ? unzip.unzip(array) : unzip.unzip(Array.from(array, value => Array.from(value))); - if (!iteratee) { - return unzipped; - } - const result = new Array(unzipped.length); - for (let i = 0; i < unzipped.length; i++) { - const value = unzipped[i]; - result[i] = iteratee(...value); - } - return result; -} - -exports.unzipWith = unzipWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzipWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzipWith.mjs deleted file mode 100644 index f2c53f3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/unzipWith.mjs +++ /dev/null @@ -1,21 +0,0 @@ -import { unzip } from '../../array/unzip.mjs'; -import { isArray } from '../predicate/isArray.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; - -function unzipWith(array, iteratee) { - if (!isArrayLikeObject(array) || !array.length) { - return []; - } - const unzipped = isArray(array) ? unzip(array) : unzip(Array.from(array, value => Array.from(value))); - if (!iteratee) { - return unzipped; - } - const result = new Array(unzipped.length); - for (let i = 0; i < unzipped.length; i++) { - const value = unzipped[i]; - result[i] = iteratee(...value); - } - return result; -} - -export { unzipWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/without.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/without.d.mts deleted file mode 100644 index c27e9fc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/without.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Creates an array that excludes all specified values. - * - * It correctly excludes `NaN`, as it compares values using [SameValueZero](https://tc39.es/ecma262/multipage/abstract-operations.html#sec-samevaluezero). - * - * @template T The type of elements in the array. - * @param {ArrayLike | null | undefined} array - The array to filter. - * @param {...T[]} values - The values to exclude. - * @returns {T[]} A new array without the specified values. - * - * @example - * // Removes the specified values from the array - * without([1, 2, 3, 4, 5], 2, 4); - * // Returns: [1, 3, 5] - * - * @example - * // Removes specified string values from the array - * without(['a', 'b', 'c', 'a'], 'a'); - * // Returns: ['b', 'c'] - */ -declare function without(array: ArrayLike | null | undefined, ...values: T[]): T[]; - -export { without }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/without.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/without.d.ts deleted file mode 100644 index c27e9fc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/without.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Creates an array that excludes all specified values. - * - * It correctly excludes `NaN`, as it compares values using [SameValueZero](https://tc39.es/ecma262/multipage/abstract-operations.html#sec-samevaluezero). - * - * @template T The type of elements in the array. - * @param {ArrayLike | null | undefined} array - The array to filter. - * @param {...T[]} values - The values to exclude. - * @returns {T[]} A new array without the specified values. - * - * @example - * // Removes the specified values from the array - * without([1, 2, 3, 4, 5], 2, 4); - * // Returns: [1, 3, 5] - * - * @example - * // Removes specified string values from the array - * without(['a', 'b', 'c', 'a'], 'a'); - * // Returns: ['b', 'c'] - */ -declare function without(array: ArrayLike | null | undefined, ...values: T[]): T[]; - -export { without }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/without.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/without.js deleted file mode 100644 index 3ec02b0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/without.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const without$1 = require('../../array/without.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); - -function without(array, ...values) { - if (!isArrayLikeObject.isArrayLikeObject(array)) { - return []; - } - return without$1.without(Array.from(array), ...values); -} - -exports.without = without; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/without.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/without.mjs deleted file mode 100644 index 6fd25d5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/without.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { without as without$1 } from '../../array/without.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; - -function without(array, ...values) { - if (!isArrayLikeObject(array)) { - return []; - } - return without$1(Array.from(array), ...values); -} - -export { without }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xor.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xor.d.mts deleted file mode 100644 index b10a08c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xor.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Computes the symmetric difference of the provided arrays, returning an array of elements - * that exist in only one of the arrays. - * - * @template T - The type of elements in the arrays. - * @param {...(ArrayLike | null | undefined)} arrays - The arrays to compare. - * @returns {T[]} An array containing the elements that are present in only one of the provided `arrays`. - * - * @example - * // Returns [1, 2, 5, 6] - * xor([1, 2, 3, 4], [3, 4, 5, 6]); - * - * @example - * // Returns ['a', 'c'] - * xor(['a', 'b'], ['b', 'c']); - * - * @example - * // Returns [1, 3, 5] - * xor([1, 2], [2, 3], [4, 5]); - */ -declare function xor(...arrays: Array | null | undefined>): T[]; - -export { xor }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xor.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xor.d.ts deleted file mode 100644 index b10a08c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xor.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Computes the symmetric difference of the provided arrays, returning an array of elements - * that exist in only one of the arrays. - * - * @template T - The type of elements in the arrays. - * @param {...(ArrayLike | null | undefined)} arrays - The arrays to compare. - * @returns {T[]} An array containing the elements that are present in only one of the provided `arrays`. - * - * @example - * // Returns [1, 2, 5, 6] - * xor([1, 2, 3, 4], [3, 4, 5, 6]); - * - * @example - * // Returns ['a', 'c'] - * xor(['a', 'b'], ['b', 'c']); - * - * @example - * // Returns [1, 3, 5] - * xor([1, 2], [2, 3], [4, 5]); - */ -declare function xor(...arrays: Array | null | undefined>): T[]; - -export { xor }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xor.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xor.js deleted file mode 100644 index c8cda17..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xor.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); -const toArray = require('../util/toArray.js'); - -function xor(...arrays) { - const itemCounts = new Map(); - for (let i = 0; i < arrays.length; i++) { - const array = arrays[i]; - if (!isArrayLikeObject.isArrayLikeObject(array)) { - continue; - } - const itemSet = new Set(toArray.toArray(array)); - for (const item of itemSet) { - if (!itemCounts.has(item)) { - itemCounts.set(item, 1); - } - else { - itemCounts.set(item, itemCounts.get(item) + 1); - } - } - } - const result = []; - for (const [item, count] of itemCounts) { - if (count === 1) { - result.push(item); - } - } - return result; -} - -exports.xor = xor; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xor.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xor.mjs deleted file mode 100644 index 6ac3e40..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xor.mjs +++ /dev/null @@ -1,30 +0,0 @@ -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; -import { toArray } from '../util/toArray.mjs'; - -function xor(...arrays) { - const itemCounts = new Map(); - for (let i = 0; i < arrays.length; i++) { - const array = arrays[i]; - if (!isArrayLikeObject(array)) { - continue; - } - const itemSet = new Set(toArray(array)); - for (const item of itemSet) { - if (!itemCounts.has(item)) { - itemCounts.set(item, 1); - } - else { - itemCounts.set(item, itemCounts.get(item) + 1); - } - } - } - const result = []; - for (const [item, count] of itemCounts) { - if (count === 1) { - result.push(item); - } - } - return result; -} - -export { xor }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorBy.d.mts deleted file mode 100644 index 50ea2c7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorBy.d.mts +++ /dev/null @@ -1,56 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * This method is like `xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The arrays to inspect. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns the new array of values. - * - * @example - * xorBy([2.1, 1.2], [4.3, 2.4], Math.floor); - * // => [1.2, 4.3] - * - * @example - * xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ -declare function xorBy(arrays: ArrayLike | null | undefined, iteratee?: ValueIteratee): T[]; -/** - * This method is like `xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns the new array of values. - * - * @example - * xorBy([2.1, 1.2], [4.3, 2.4], Math.floor); - * // => [1.2, 4.3] - */ -declare function xorBy(arrays: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, iteratee?: ValueIteratee): T[]; -/** - * This method is like `xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ArrayLike | null | undefined} arrays3 - The third array to inspect. - * @param {...Array | ArrayLike | null | undefined>} iteratee - The iteratee invoked per element. - * @returns {T[]} Returns the new array of values. - * - * @example - * xorBy([1.2, 2.3], [3.4, 4.5], [5.6, 6.7], Math.floor); - * // => [1.2, 3.4, 5.6] - */ -declare function xorBy(arrays: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, arrays3: ArrayLike | null | undefined, ...iteratee: Array | ArrayLike | null | undefined>): T[]; - -export { xorBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorBy.d.ts deleted file mode 100644 index 3ffd371..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorBy.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * This method is like `xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The arrays to inspect. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns the new array of values. - * - * @example - * xorBy([2.1, 1.2], [4.3, 2.4], Math.floor); - * // => [1.2, 4.3] - * - * @example - * xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ -declare function xorBy(arrays: ArrayLike | null | undefined, iteratee?: ValueIteratee): T[]; -/** - * This method is like `xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ValueIteratee} [iteratee] - The iteratee invoked per element. - * @returns {T[]} Returns the new array of values. - * - * @example - * xorBy([2.1, 1.2], [4.3, 2.4], Math.floor); - * // => [1.2, 4.3] - */ -declare function xorBy(arrays: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, iteratee?: ValueIteratee): T[]; -/** - * This method is like `xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ArrayLike | null | undefined} arrays3 - The third array to inspect. - * @param {...Array | ArrayLike | null | undefined>} iteratee - The iteratee invoked per element. - * @returns {T[]} Returns the new array of values. - * - * @example - * xorBy([1.2, 2.3], [3.4, 4.5], [5.6, 6.7], Math.floor); - * // => [1.2, 3.4, 5.6] - */ -declare function xorBy(arrays: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, arrays3: ArrayLike | null | undefined, ...iteratee: Array | ArrayLike | null | undefined>): T[]; - -export { xorBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorBy.js deleted file mode 100644 index 85c7049..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorBy.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const differenceBy = require('./differenceBy.js'); -const intersectionBy = require('./intersectionBy.js'); -const last = require('./last.js'); -const unionBy = require('./unionBy.js'); -const windowed = require('../../array/windowed.js'); -const identity = require('../../function/identity.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); -const iteratee = require('../util/iteratee.js'); - -function xorBy(...values) { - const lastValue = last.last(values); - let mapper = identity.identity; - if (!isArrayLikeObject.isArrayLikeObject(lastValue) && lastValue != null) { - mapper = iteratee.iteratee(lastValue); - values = values.slice(0, -1); - } - const arrays = values.filter(isArrayLikeObject.isArrayLikeObject); - const union = unionBy.unionBy(...arrays, mapper); - const intersections = windowed.windowed(arrays, 2).map(([arr1, arr2]) => intersectionBy.intersectionBy(arr1, arr2, mapper)); - return differenceBy.differenceBy(union, unionBy.unionBy(...intersections, mapper), mapper); -} - -exports.xorBy = xorBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorBy.mjs deleted file mode 100644 index e51cdcf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorBy.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import { differenceBy } from './differenceBy.mjs'; -import { intersectionBy } from './intersectionBy.mjs'; -import { last } from './last.mjs'; -import { unionBy } from './unionBy.mjs'; -import { windowed } from '../../array/windowed.mjs'; -import { identity } from '../../function/identity.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function xorBy(...values) { - const lastValue = last(values); - let mapper = identity; - if (!isArrayLikeObject(lastValue) && lastValue != null) { - mapper = iteratee(lastValue); - values = values.slice(0, -1); - } - const arrays = values.filter(isArrayLikeObject); - const union = unionBy(...arrays, mapper); - const intersections = windowed(arrays, 2).map(([arr1, arr2]) => intersectionBy(arr1, arr2, mapper)); - return differenceBy(union, unionBy(...intersections, mapper), mapper); -} - -export { xorBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorWith.d.mts deleted file mode 100644 index f29c717..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorWith.d.mts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * This method is like `xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The arrays to inspect. - * @param {(a: T, b: T) => boolean} [comparator] - The comparator invoked per element. - * @returns {T[]} Returns the new array of values. - * - * @example - * const objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * const others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * xorWith(objects, others, isEqual); - * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ -declare function xorWith(arrays: ArrayLike | null | undefined, comparator?: (a: T, b: T) => boolean): T[]; -/** - * This method is like `xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {(a: T, b: T) => boolean} [comparator] - The comparator invoked per element. - * @returns {T[]} Returns the new array of values. - * - * @example - * xorWith([1, 2], [2, 3], (a, b) => a === b); - * // => [1, 3] - */ -declare function xorWith(arrays: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, comparator?: (a: T, b: T) => boolean): T[]; -/** - * This method is like `xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ArrayLike | null | undefined} arrays3 - The third array to inspect. - * @param {...Array<(a: T, b: T) => boolean | ArrayLike | null | undefined>} comparator - The comparator invoked per element. - * @returns {T[]} Returns the new array of values. - * - * @example - * xorWith([1], [2], [3], (a, b) => a === b); - * // => [1, 2, 3] - */ -declare function xorWith(arrays: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, arrays3: ArrayLike | null | undefined, ...comparator: Array<((a: T, b: T) => boolean) | ArrayLike | null | undefined>): T[]; - -export { xorWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorWith.d.ts deleted file mode 100644 index f29c717..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorWith.d.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * This method is like `xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The arrays to inspect. - * @param {(a: T, b: T) => boolean} [comparator] - The comparator invoked per element. - * @returns {T[]} Returns the new array of values. - * - * @example - * const objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * const others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * xorWith(objects, others, isEqual); - * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ -declare function xorWith(arrays: ArrayLike | null | undefined, comparator?: (a: T, b: T) => boolean): T[]; -/** - * This method is like `xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {(a: T, b: T) => boolean} [comparator] - The comparator invoked per element. - * @returns {T[]} Returns the new array of values. - * - * @example - * xorWith([1, 2], [2, 3], (a, b) => a === b); - * // => [1, 3] - */ -declare function xorWith(arrays: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, comparator?: (a: T, b: T) => boolean): T[]; -/** - * This method is like `xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @template T - * @param {ArrayLike | null | undefined} arrays - The first array to inspect. - * @param {ArrayLike | null | undefined} arrays2 - The second array to inspect. - * @param {ArrayLike | null | undefined} arrays3 - The third array to inspect. - * @param {...Array<(a: T, b: T) => boolean | ArrayLike | null | undefined>} comparator - The comparator invoked per element. - * @returns {T[]} Returns the new array of values. - * - * @example - * xorWith([1], [2], [3], (a, b) => a === b); - * // => [1, 2, 3] - */ -declare function xorWith(arrays: ArrayLike | null | undefined, arrays2: ArrayLike | null | undefined, arrays3: ArrayLike | null | undefined, ...comparator: Array<((a: T, b: T) => boolean) | ArrayLike | null | undefined>): T[]; - -export { xorWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorWith.js deleted file mode 100644 index 5cdbb90..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorWith.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const differenceWith = require('./differenceWith.js'); -const intersectionWith = require('./intersectionWith.js'); -const last = require('./last.js'); -const unionWith = require('./unionWith.js'); -const windowed = require('../../array/windowed.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); - -function xorWith(...values) { - const lastValue = last.last(values); - let comparator = (a, b) => a === b; - if (typeof lastValue === 'function') { - comparator = lastValue; - values = values.slice(0, -1); - } - const arrays = values.filter(isArrayLikeObject.isArrayLikeObject); - const union = unionWith.unionWith(...arrays, comparator); - const intersections = windowed.windowed(arrays, 2).map(([arr1, arr2]) => intersectionWith.intersectionWith(arr1, arr2, comparator)); - return differenceWith.differenceWith(union, unionWith.unionWith(...intersections, comparator), comparator); -} - -exports.xorWith = xorWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorWith.mjs deleted file mode 100644 index a4e16c6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/xorWith.mjs +++ /dev/null @@ -1,21 +0,0 @@ -import { differenceWith } from './differenceWith.mjs'; -import { intersectionWith } from './intersectionWith.mjs'; -import { last } from './last.mjs'; -import { unionWith } from './unionWith.mjs'; -import { windowed } from '../../array/windowed.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; - -function xorWith(...values) { - const lastValue = last(values); - let comparator = (a, b) => a === b; - if (typeof lastValue === 'function') { - comparator = lastValue; - values = values.slice(0, -1); - } - const arrays = values.filter(isArrayLikeObject); - const union = unionWith(...arrays, comparator); - const intersections = windowed(arrays, 2).map(([arr1, arr2]) => intersectionWith(arr1, arr2, comparator)); - return differenceWith(union, unionWith(...intersections, comparator), comparator); -} - -export { xorWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zip.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zip.d.mts deleted file mode 100644 index 6e50b6f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zip.d.mts +++ /dev/null @@ -1,186 +0,0 @@ -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @returns {Array<[T | undefined, U | undefined]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const result = zip(arr1, arr2); - * // result will be [[1, 'a'], [2, 'b'], [3, 'c']] - */ -/** - * Creates an array of grouped elements, the first of which contains the first elements of the given arrays, - * the second of which contains the second elements of the given arrays, and so on. - * - * @template T, U - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @returns {Array<[T | undefined, U | undefined]>} Returns the new array of grouped elements. - * - * @example - * zip([1, 2], ['a', 'b']); - * // => [[1, 'a'], [2, 'b']] - */ -declare function zip(arr1: ArrayLike, arr2: ArrayLike): Array<[T | undefined, U | undefined]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U, V - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @returns {Array<[T | undefined, U | undefined, V | undefined]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const result = zip(arr1, arr2, arr3); - * // result will be [[1, 'a', true], [2, 'b', false], [3, 'c', undefined]] - */ -/** - * Creates an array of grouped elements, the first of which contains the first elements of the given arrays, - * the second of which contains the second elements of the given arrays, and so on. - * - * @template T, U, V - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @returns {Array<[T | undefined, U | undefined, V | undefined]>} Returns the new array of grouped elements. - * - * @example - * zip([1, 2], ['a', 'b'], [true, false]); - * // => [[1, 'a', true], [2, 'b', false]] - */ -declare function zip(arr1: ArrayLike, arr2: ArrayLike, arr3: ArrayLike): Array<[T | undefined, U | undefined, V | undefined]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U, V, W - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {ArrayLike} arr4 - The fourth array to zip. - * @returns {Array<[T | undefined, U | undefined, V | undefined, W | undefined]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const arr4 = [null, null, null]; - * const result = zip(arr1, arr2, arr3, arr4); - * // result will be [[1, 'a', true, null], [2, 'b', false, null], [3, 'c', undefined, null]] - */ -/** - * Creates an array of grouped elements, the first of which contains the first elements of the given arrays, - * the second of which contains the second elements of the given arrays, and so on. - * - * @template T, U, V, W - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {ArrayLike} arr4 - The fourth array to zip. - * @returns {Array<[T | undefined, U | undefined, V | undefined, W | undefined]>} Returns the new array of grouped elements. - * - * @example - * zip([1], ['a'], [true], [null]); - * // => [[1, 'a', true, null]] - */ -declare function zip(arr1: ArrayLike, arr2: ArrayLike, arr3: ArrayLike, arr4: ArrayLike): Array<[T | undefined, U | undefined, V | undefined, W | undefined]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U, V, W - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {ArrayLike} arr4 - The fourth array to zip. - * @param {ArrayLike} arr5 - The fifth array to zip. - * @returns {Array<[T | undefined, U | undefined, V | undefined, W | undefined, X | undefined]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const arr4 = [null, null, null]; - * const arr5 = [undefined, undefined, undefined]; - * const result = zip(arr1, arr2, arr3, arr4, arr5); - * // result will be [[1, 'a', true, null, undefined], [2, 'b', false, null, undefined], [3, 'c', undefined, null, undefined]] - */ -/** - * Creates an array of grouped elements, the first of which contains the first elements of the given arrays, - * the second of which contains the second elements of the given arrays, and so on. - * - * @template T, U, V, W, X - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {ArrayLike} arr4 - The fourth array to zip. - * @param {ArrayLike} arr5 - The fifth array to zip. - * @returns {Array<[T | undefined, U | undefined, V | undefined, W | undefined, X | undefined]>} Returns the new array of grouped elements. - * - * @example - * zip([1], ['a'], [true], [null], [undefined]); - * // => [[1, 'a', true, null, undefined]] - */ -declare function zip(arr1: ArrayLike, arr2: ArrayLike, arr3: ArrayLike, arr4: ArrayLike, arr5: ArrayLike): Array<[T | undefined, U | undefined, V | undefined, W | undefined, X | undefined]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T - * @param {Array | null | undefined>} arrays - The arrays to zip. - * @returns {Array>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const arr4 = [null, null, null]; - * const arr5 = [undefined, undefined, undefined]; - * const result = zip(arr1, arr2, arr3, arr4, arr5); - * // result will be [[1, 'a', true, null, undefined], [2, 'b', false, null, undefined], [3, 'c', undefined, null, undefined]] - */ -/** - * Creates an array of grouped elements, the first of which contains the first elements of the given arrays, - * the second of which contains the second elements of the given arrays, and so on. - * - * @template T - * @param {...Array | null | undefined>} arrays - The arrays to process. - * @returns {Array>} Returns the new array of grouped elements. - * - * @example - * zip([1, 2], ['a', 'b'], [true, false]); - * // => [[1, 'a', true], [2, 'b', false]] - */ -declare function zip(...arrays: Array | null | undefined>): Array>; - -export { zip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zip.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zip.d.ts deleted file mode 100644 index 6e50b6f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zip.d.ts +++ /dev/null @@ -1,186 +0,0 @@ -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @returns {Array<[T | undefined, U | undefined]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const result = zip(arr1, arr2); - * // result will be [[1, 'a'], [2, 'b'], [3, 'c']] - */ -/** - * Creates an array of grouped elements, the first of which contains the first elements of the given arrays, - * the second of which contains the second elements of the given arrays, and so on. - * - * @template T, U - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @returns {Array<[T | undefined, U | undefined]>} Returns the new array of grouped elements. - * - * @example - * zip([1, 2], ['a', 'b']); - * // => [[1, 'a'], [2, 'b']] - */ -declare function zip(arr1: ArrayLike, arr2: ArrayLike): Array<[T | undefined, U | undefined]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U, V - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @returns {Array<[T | undefined, U | undefined, V | undefined]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const result = zip(arr1, arr2, arr3); - * // result will be [[1, 'a', true], [2, 'b', false], [3, 'c', undefined]] - */ -/** - * Creates an array of grouped elements, the first of which contains the first elements of the given arrays, - * the second of which contains the second elements of the given arrays, and so on. - * - * @template T, U, V - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @returns {Array<[T | undefined, U | undefined, V | undefined]>} Returns the new array of grouped elements. - * - * @example - * zip([1, 2], ['a', 'b'], [true, false]); - * // => [[1, 'a', true], [2, 'b', false]] - */ -declare function zip(arr1: ArrayLike, arr2: ArrayLike, arr3: ArrayLike): Array<[T | undefined, U | undefined, V | undefined]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U, V, W - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {ArrayLike} arr4 - The fourth array to zip. - * @returns {Array<[T | undefined, U | undefined, V | undefined, W | undefined]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const arr4 = [null, null, null]; - * const result = zip(arr1, arr2, arr3, arr4); - * // result will be [[1, 'a', true, null], [2, 'b', false, null], [3, 'c', undefined, null]] - */ -/** - * Creates an array of grouped elements, the first of which contains the first elements of the given arrays, - * the second of which contains the second elements of the given arrays, and so on. - * - * @template T, U, V, W - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {ArrayLike} arr4 - The fourth array to zip. - * @returns {Array<[T | undefined, U | undefined, V | undefined, W | undefined]>} Returns the new array of grouped elements. - * - * @example - * zip([1], ['a'], [true], [null]); - * // => [[1, 'a', true, null]] - */ -declare function zip(arr1: ArrayLike, arr2: ArrayLike, arr3: ArrayLike, arr4: ArrayLike): Array<[T | undefined, U | undefined, V | undefined, W | undefined]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T, U, V, W - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {ArrayLike} arr4 - The fourth array to zip. - * @param {ArrayLike} arr5 - The fifth array to zip. - * @returns {Array<[T | undefined, U | undefined, V | undefined, W | undefined, X | undefined]>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const arr4 = [null, null, null]; - * const arr5 = [undefined, undefined, undefined]; - * const result = zip(arr1, arr2, arr3, arr4, arr5); - * // result will be [[1, 'a', true, null, undefined], [2, 'b', false, null, undefined], [3, 'c', undefined, null, undefined]] - */ -/** - * Creates an array of grouped elements, the first of which contains the first elements of the given arrays, - * the second of which contains the second elements of the given arrays, and so on. - * - * @template T, U, V, W, X - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {ArrayLike} arr4 - The fourth array to zip. - * @param {ArrayLike} arr5 - The fifth array to zip. - * @returns {Array<[T | undefined, U | undefined, V | undefined, W | undefined, X | undefined]>} Returns the new array of grouped elements. - * - * @example - * zip([1], ['a'], [true], [null], [undefined]); - * // => [[1, 'a', true, null, undefined]] - */ -declare function zip(arr1: ArrayLike, arr2: ArrayLike, arr3: ArrayLike, arr4: ArrayLike, arr5: ArrayLike): Array<[T | undefined, U | undefined, V | undefined, W | undefined, X | undefined]>; -/** - * Combines multiple arrays into a single array of tuples. - * - * This function takes multiple arrays and returns a new array where each element is a tuple - * containing the corresponding elements from the input arrays. If the input arrays are of - * different lengths, the resulting array will have the length of the longest input array, - * with undefined values for missing elements. - * - * @template T - * @param {Array | null | undefined>} arrays - The arrays to zip. - * @returns {Array>} A new array of tuples containing the corresponding elements from the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const arr3 = [true, false]; - * const arr4 = [null, null, null]; - * const arr5 = [undefined, undefined, undefined]; - * const result = zip(arr1, arr2, arr3, arr4, arr5); - * // result will be [[1, 'a', true, null, undefined], [2, 'b', false, null, undefined], [3, 'c', undefined, null, undefined]] - */ -/** - * Creates an array of grouped elements, the first of which contains the first elements of the given arrays, - * the second of which contains the second elements of the given arrays, and so on. - * - * @template T - * @param {...Array | null | undefined>} arrays - The arrays to process. - * @returns {Array>} Returns the new array of grouped elements. - * - * @example - * zip([1, 2], ['a', 'b'], [true, false]); - * // => [[1, 'a', true], [2, 'b', false]] - */ -declare function zip(...arrays: Array | null | undefined>): Array>; - -export { zip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zip.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zip.js deleted file mode 100644 index 971a9e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zip.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const zip$1 = require('../../array/zip.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); - -function zip(...arrays) { - if (!arrays.length) { - return []; - } - return zip$1.zip(...arrays.filter(group => isArrayLikeObject.isArrayLikeObject(group))); -} - -exports.zip = zip; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zip.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zip.mjs deleted file mode 100644 index efdd4b0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zip.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { zip as zip$1 } from '../../array/zip.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; - -function zip(...arrays) { - if (!arrays.length) { - return []; - } - return zip$1(...arrays.filter(group => isArrayLikeObject(group))); -} - -export { zip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObject.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObject.d.mts deleted file mode 100644 index b265b5c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObject.d.mts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Combines two arrays, one of property names and one of corresponding values, into a single object. - * - * @template T - The type of values in the values array - * @param {ArrayLike} props - An array of property names - * @param {ArrayLike} values - An array of values corresponding to the property names - * @returns {Record} A new object composed of the given property names and values - * - * @example - * const props = ['a', 'b', 'c']; - * const values = [1, 2, 3]; - * zipObject(props, values); - * // => { a: 1, b: 2, c: 3 } - */ -declare function zipObject(props: ArrayLike, values: ArrayLike): Record; -/** - * Creates an object from an array of property names, with undefined values. - * - * @param {ArrayLike} [props] - An array of property names - * @returns {Record} A new object with the given property names and undefined values - * - * @example - * const props = ['a', 'b', 'c']; - * zipObject(props); - * // => { a: undefined, b: undefined, c: undefined } - */ -declare function zipObject(props?: ArrayLike): Record; - -export { zipObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObject.d.ts deleted file mode 100644 index b265b5c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObject.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Combines two arrays, one of property names and one of corresponding values, into a single object. - * - * @template T - The type of values in the values array - * @param {ArrayLike} props - An array of property names - * @param {ArrayLike} values - An array of values corresponding to the property names - * @returns {Record} A new object composed of the given property names and values - * - * @example - * const props = ['a', 'b', 'c']; - * const values = [1, 2, 3]; - * zipObject(props, values); - * // => { a: 1, b: 2, c: 3 } - */ -declare function zipObject(props: ArrayLike, values: ArrayLike): Record; -/** - * Creates an object from an array of property names, with undefined values. - * - * @param {ArrayLike} [props] - An array of property names - * @returns {Record} A new object with the given property names and undefined values - * - * @example - * const props = ['a', 'b', 'c']; - * zipObject(props); - * // => { a: undefined, b: undefined, c: undefined } - */ -declare function zipObject(props?: ArrayLike): Record; - -export { zipObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObject.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObject.js deleted file mode 100644 index 6bc6c91..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObject.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const assignValue = require('../_internal/assignValue.js'); - -function zipObject(keys = [], values = []) { - const result = {}; - for (let i = 0; i < keys.length; i++) { - assignValue.assignValue(result, keys[i], values[i]); - } - return result; -} - -exports.zipObject = zipObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObject.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObject.mjs deleted file mode 100644 index 3b40250..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObject.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { assignValue } from '../_internal/assignValue.mjs'; - -function zipObject(keys = [], values = []) { - const result = {}; - for (let i = 0; i < keys.length; i++) { - assignValue(result, keys[i], values[i]); - } - return result; -} - -export { zipObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObjectDeep.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObjectDeep.d.mts deleted file mode 100644 index fb63cfe..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObjectDeep.d.mts +++ /dev/null @@ -1,38 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.mjs'; - -/** - * Creates a deeply nested object given arrays of paths and values. - * - * This function takes two arrays: one containing arrays of property paths, and the other containing corresponding values. - * It returns a new object where paths from the first array are used as key paths to set values, with corresponding elements from the second array as values. - * Paths can be dot-separated strings or arrays of property names. - * - * If the `keys` array is longer than the `values` array, the remaining keys will have `undefined` as their values. - * - * @template P - The type of property paths. - * @template V - The type of values corresponding to the property paths. - * @param {ArrayLike

} keys - An array of property paths, each path can be a dot-separated string or an array of property names. - * @param {ArrayLike} values - An array of values corresponding to the property paths. - * @returns {Record} A new object composed of the given property paths and values. - * - * @example - * const paths = ['a.b.c', 'd.e.f']; - * const values = [1, 2]; - * const result = zipObjectDeep(paths, values); - * // result will be { a: { b: { c: 1 } }, d: { e: { f: 2 } } } - * - * @example - * const paths = [['a', 'b', 'c'], ['d', 'e', 'f']]; - * const values = [1, 2]; - * const result = zipObjectDeep(paths, values); - * // result will be { a: { b: { c: 1 } }, d: { e: { f: 2 } } } - * - * @example - * const paths = ['a.b[0].c', 'a.b[1].d']; - * const values = [1, 2]; - * const result = zipObjectDeep(paths, values); - * // result will be { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } - */ -declare function zipObjectDeep(keys?: ArrayLike, values?: ArrayLike): object; - -export { zipObjectDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObjectDeep.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObjectDeep.d.ts deleted file mode 100644 index 2ed39d8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObjectDeep.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.js'; - -/** - * Creates a deeply nested object given arrays of paths and values. - * - * This function takes two arrays: one containing arrays of property paths, and the other containing corresponding values. - * It returns a new object where paths from the first array are used as key paths to set values, with corresponding elements from the second array as values. - * Paths can be dot-separated strings or arrays of property names. - * - * If the `keys` array is longer than the `values` array, the remaining keys will have `undefined` as their values. - * - * @template P - The type of property paths. - * @template V - The type of values corresponding to the property paths. - * @param {ArrayLike

} keys - An array of property paths, each path can be a dot-separated string or an array of property names. - * @param {ArrayLike} values - An array of values corresponding to the property paths. - * @returns {Record} A new object composed of the given property paths and values. - * - * @example - * const paths = ['a.b.c', 'd.e.f']; - * const values = [1, 2]; - * const result = zipObjectDeep(paths, values); - * // result will be { a: { b: { c: 1 } }, d: { e: { f: 2 } } } - * - * @example - * const paths = [['a', 'b', 'c'], ['d', 'e', 'f']]; - * const values = [1, 2]; - * const result = zipObjectDeep(paths, values); - * // result will be { a: { b: { c: 1 } }, d: { e: { f: 2 } } } - * - * @example - * const paths = ['a.b[0].c', 'a.b[1].d']; - * const values = [1, 2]; - * const result = zipObjectDeep(paths, values); - * // result will be { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } - */ -declare function zipObjectDeep(keys?: ArrayLike, values?: ArrayLike): object; - -export { zipObjectDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObjectDeep.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObjectDeep.js deleted file mode 100644 index 76e7c21..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObjectDeep.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const zip = require('../../array/zip.js'); -const set = require('../object/set.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); - -function zipObjectDeep(keys, values) { - const result = {}; - if (!isArrayLike.isArrayLike(keys)) { - return result; - } - if (!isArrayLike.isArrayLike(values)) { - values = []; - } - const zipped = zip.zip(Array.from(keys), Array.from(values)); - for (let i = 0; i < zipped.length; i++) { - const [key, value] = zipped[i]; - if (key != null) { - set.set(result, key, value); - } - } - return result; -} - -exports.zipObjectDeep = zipObjectDeep; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObjectDeep.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObjectDeep.mjs deleted file mode 100644 index a6ffcb4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipObjectDeep.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import { zip } from '../../array/zip.mjs'; -import { set } from '../object/set.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function zipObjectDeep(keys, values) { - const result = {}; - if (!isArrayLike(keys)) { - return result; - } - if (!isArrayLike(values)) { - values = []; - } - const zipped = zip(Array.from(keys), Array.from(values)); - for (let i = 0; i < zipped.length; i++) { - const [key, value] = zipped[i]; - if (key != null) { - set(result, key, value); - } - } - return result; -} - -export { zipObjectDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipWith.d.mts deleted file mode 100644 index e9766f5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipWith.d.mts +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Combines one array into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template R - The type of elements in the resulting array. - * @param {ArrayLike} arr1 - The first array to zip. - * @param {(item: T) => R} combine - The combiner function that takes corresponding elements from each array and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: ArrayLike, combine: (item: T) => R): R[]; -/** - * Combines two arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template R - The type of elements in the resulting array. - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {(item1: T, item2: U) => R} combine - The combiner function that takes corresponding elements from each array and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: ArrayLike, arr2: ArrayLike, combine: (item1: T, item2: U) => R): R[]; -/** - * Combines three arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template V - The type of elements in the third array. - * @template R - The type of elements in the resulting array. - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {(item1: T, item2: U, item3: V) => R} combine - The combiner function that takes corresponding elements from each array and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: ArrayLike, arr2: ArrayLike, arr3: ArrayLike, combine: (item1: T, item2: U, item3: V) => R): R[]; -/** - * Combines four arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template V - The type of elements in the third array. - * @template W - The type of elements in the fourth array. - * @template R - The type of elements in the resulting array. - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {ArrayLike} arr4 - The fourth array to zip. - * @param {(item1: T, item2: U, item3: V, item4: W) => R} combine - The combiner function that takes corresponding elements from each array and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: ArrayLike, arr2: ArrayLike, arr3: ArrayLike, arr4: ArrayLike, combine: (item1: T, item2: U, item3: V, item4: W) => R): R[]; -/** - * Combines five arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template V - The type of elements in the third array. - * @template W - The type of elements in the fourth array. - * @template X - The type of elements in the fifth array. - * @template R - The type of elements in the resulting array. - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {ArrayLike} arr4 - The fourth array to zip. - * @param {ArrayLike} arr5 - The fifth array to zip. - * @param {(item1: T, item2: U, item3: V, item4: W, item5: X) => R} combine - The combiner function that takes corresponding elements from each array and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: ArrayLike, arr2: ArrayLike, arr3: ArrayLike, arr4: ArrayLike, arr5: ArrayLike, combine: (item1: T, item2: U, item3: V, item4: W, item5: X) => R): R[]; -/** - * Combines multiple arrays into a single array using a custom combiner function. - * - * This function takes one array and a variable number of additional arrays, - * applying the provided combiner function to the corresponding elements of each array. - * If the input arrays are of different lengths, the resulting array will have the length - * of the longest input array, with undefined values for missing elements. - * - * @template T - The type of elements in the input arrays. - * @template R - The type of elements in the resulting array. - * @param {Array<((...group: T[]) => R) | ArrayLike | null | undefined>} combine - The combiner function that takes corresponding elements from each array and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const result = zipWith(arr1, arr2, (num, char) => `${num}${char}`); - * // result will be ['1a', '2b', '3c'] - */ -declare function zipWith(...combine: Array<((...group: T[]) => R) | ArrayLike | null | undefined>): R[]; - -export { zipWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipWith.d.ts deleted file mode 100644 index e9766f5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipWith.d.ts +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Combines one array into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template R - The type of elements in the resulting array. - * @param {ArrayLike} arr1 - The first array to zip. - * @param {(item: T) => R} combine - The combiner function that takes corresponding elements from each array and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: ArrayLike, combine: (item: T) => R): R[]; -/** - * Combines two arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template R - The type of elements in the resulting array. - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {(item1: T, item2: U) => R} combine - The combiner function that takes corresponding elements from each array and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: ArrayLike, arr2: ArrayLike, combine: (item1: T, item2: U) => R): R[]; -/** - * Combines three arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template V - The type of elements in the third array. - * @template R - The type of elements in the resulting array. - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {(item1: T, item2: U, item3: V) => R} combine - The combiner function that takes corresponding elements from each array and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: ArrayLike, arr2: ArrayLike, arr3: ArrayLike, combine: (item1: T, item2: U, item3: V) => R): R[]; -/** - * Combines four arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template V - The type of elements in the third array. - * @template W - The type of elements in the fourth array. - * @template R - The type of elements in the resulting array. - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {ArrayLike} arr4 - The fourth array to zip. - * @param {(item1: T, item2: U, item3: V, item4: W) => R} combine - The combiner function that takes corresponding elements from each array and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: ArrayLike, arr2: ArrayLike, arr3: ArrayLike, arr4: ArrayLike, combine: (item1: T, item2: U, item3: V, item4: W) => R): R[]; -/** - * Combines five arrays into a single array using a custom combiner function. - * - * @template T - The type of elements in the first array. - * @template U - The type of elements in the second array. - * @template V - The type of elements in the third array. - * @template W - The type of elements in the fourth array. - * @template X - The type of elements in the fifth array. - * @template R - The type of elements in the resulting array. - * @param {ArrayLike} arr1 - The first array to zip. - * @param {ArrayLike} arr2 - The second array to zip. - * @param {ArrayLike} arr3 - The third array to zip. - * @param {ArrayLike} arr4 - The fourth array to zip. - * @param {ArrayLike} arr5 - The fifth array to zip. - * @param {(item1: T, item2: U, item3: V, item4: W, item5: X) => R} combine - The combiner function that takes corresponding elements from each array and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - */ -declare function zipWith(arr1: ArrayLike, arr2: ArrayLike, arr3: ArrayLike, arr4: ArrayLike, arr5: ArrayLike, combine: (item1: T, item2: U, item3: V, item4: W, item5: X) => R): R[]; -/** - * Combines multiple arrays into a single array using a custom combiner function. - * - * This function takes one array and a variable number of additional arrays, - * applying the provided combiner function to the corresponding elements of each array. - * If the input arrays are of different lengths, the resulting array will have the length - * of the longest input array, with undefined values for missing elements. - * - * @template T - The type of elements in the input arrays. - * @template R - The type of elements in the resulting array. - * @param {Array<((...group: T[]) => R) | ArrayLike | null | undefined>} combine - The combiner function that takes corresponding elements from each array and returns a single value. - * @returns {R[]} A new array where each element is the result of applying the combiner function to the corresponding elements of the input arrays. - * - * @example - * const arr1 = [1, 2, 3]; - * const arr2 = ['a', 'b', 'c']; - * const result = zipWith(arr1, arr2, (num, char) => `${num}${char}`); - * // result will be ['1a', '2b', '3c'] - */ -declare function zipWith(...combine: Array<((...group: T[]) => R) | ArrayLike | null | undefined>): R[]; - -export { zipWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipWith.js deleted file mode 100644 index 007d981..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipWith.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const unzip = require('./unzip.js'); -const isFunction = require('../../predicate/isFunction.js'); - -function zipWith(...combine) { - let iteratee = combine.pop(); - if (!isFunction.isFunction(iteratee)) { - combine.push(iteratee); - iteratee = undefined; - } - if (!combine?.length) { - return []; - } - const result = unzip.unzip(combine); - if (iteratee == null) { - return result; - } - return result.map(group => iteratee(...group)); -} - -exports.zipWith = zipWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipWith.mjs deleted file mode 100644 index 00da136..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/array/zipWith.mjs +++ /dev/null @@ -1,20 +0,0 @@ -import { unzip } from './unzip.mjs'; -import { isFunction } from '../../predicate/isFunction.mjs'; - -function zipWith(...combine) { - let iteratee = combine.pop(); - if (!isFunction(iteratee)) { - combine.push(iteratee); - iteratee = undefined; - } - if (!combine?.length) { - return []; - } - const result = unzip(combine); - if (iteratee == null) { - return result; - } - return result.map(group => iteratee(...group)); -} - -export { zipWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/compat.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/compat.d.mts deleted file mode 100644 index 4807461..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/compat.d.mts +++ /dev/null @@ -1,291 +0,0 @@ -export { castArray } from './array/castArray.mjs'; -export { chunk } from './array/chunk.mjs'; -export { compact } from './array/compact.mjs'; -export { concat } from './array/concat.mjs'; -export { countBy } from './array/countBy.mjs'; -export { difference } from './array/difference.mjs'; -export { differenceBy } from './array/differenceBy.mjs'; -export { differenceWith } from './array/differenceWith.mjs'; -export { drop } from './array/drop.mjs'; -export { dropRight } from './array/dropRight.mjs'; -export { dropRightWhile } from './array/dropRightWhile.mjs'; -export { dropWhile } from './array/dropWhile.mjs'; -export { forEach as each, forEach } from './array/forEach.mjs'; -export { forEachRight as eachRight, forEachRight } from './array/forEachRight.mjs'; -export { every } from './array/every.mjs'; -export { fill } from './array/fill.mjs'; -export { filter } from './array/filter.mjs'; -export { find } from './array/find.mjs'; -export { findIndex } from './array/findIndex.mjs'; -export { findLast } from './array/findLast.mjs'; -export { findLastIndex } from './array/findLastIndex.mjs'; -export { head as first, head } from './array/head.mjs'; -export { flatMap } from './array/flatMap.mjs'; -export { flatMapDeep } from './array/flatMapDeep.mjs'; -export { flatMapDepth } from './array/flatMapDepth.mjs'; -export { flatten } from './array/flatten.mjs'; -export { flattenDeep } from './array/flattenDeep.mjs'; -export { flattenDepth } from './array/flattenDepth.mjs'; -export { groupBy } from './array/groupBy.mjs'; -export { includes } from './array/includes.mjs'; -export { indexOf } from './array/indexOf.mjs'; -export { initial } from './array/initial.mjs'; -export { intersection } from './array/intersection.mjs'; -export { intersectionBy } from './array/intersectionBy.mjs'; -export { intersectionWith } from './array/intersectionWith.mjs'; -export { invokeMap } from './array/invokeMap.mjs'; -export { join } from './array/join.mjs'; -export { keyBy } from './array/keyBy.mjs'; -export { last } from './array/last.mjs'; -export { lastIndexOf } from './array/lastIndexOf.mjs'; -export { map } from './array/map.mjs'; -export { nth } from './array/nth.mjs'; -export { orderBy } from './array/orderBy.mjs'; -export { partition } from './array/partition.mjs'; -export { pull } from './array/pull.mjs'; -export { pullAll } from './array/pullAll.mjs'; -export { pullAllBy } from './array/pullAllBy.mjs'; -export { pullAllWith } from './array/pullAllWith.mjs'; -export { pullAt } from './array/pullAt.mjs'; -export { reduce } from './array/reduce.mjs'; -export { reduceRight } from './array/reduceRight.mjs'; -export { reject } from './array/reject.mjs'; -export { remove } from './array/remove.mjs'; -export { reverse } from './array/reverse.mjs'; -export { sample } from './array/sample.mjs'; -export { sampleSize } from './array/sampleSize.mjs'; -export { shuffle } from './array/shuffle.mjs'; -export { size } from './array/size.mjs'; -export { slice } from './array/slice.mjs'; -export { some } from './array/some.mjs'; -export { sortBy } from './array/sortBy.mjs'; -export { sortedIndex } from './array/sortedIndex.mjs'; -export { sortedIndexBy } from './array/sortedIndexBy.mjs'; -export { sortedIndexOf } from './array/sortedIndexOf.mjs'; -export { sortedLastIndex } from './array/sortedLastIndex.mjs'; -export { sortedLastIndexBy } from './array/sortedLastIndexBy.mjs'; -export { sortedLastIndexOf } from './array/sortedLastIndexOf.mjs'; -export { tail } from './array/tail.mjs'; -export { take } from './array/take.mjs'; -export { takeRight } from './array/takeRight.mjs'; -export { takeRightWhile } from './array/takeRightWhile.mjs'; -export { takeWhile } from './array/takeWhile.mjs'; -export { union } from './array/union.mjs'; -export { unionBy } from './array/unionBy.mjs'; -export { unionWith } from './array/unionWith.mjs'; -export { uniq } from './array/uniq.mjs'; -export { uniqBy } from './array/uniqBy.mjs'; -export { uniqWith } from './array/uniqWith.mjs'; -export { unzip } from './array/unzip.mjs'; -export { unzipWith } from './array/unzipWith.mjs'; -export { without } from './array/without.mjs'; -export { xor } from './array/xor.mjs'; -export { xorBy } from './array/xorBy.mjs'; -export { xorWith } from './array/xorWith.mjs'; -export { zip } from './array/zip.mjs'; -export { zipObject } from './array/zipObject.mjs'; -export { zipObjectDeep } from './array/zipObjectDeep.mjs'; -export { zipWith } from './array/zipWith.mjs'; -export { after } from './function/after.mjs'; -export { ary } from './function/ary.mjs'; -export { attempt } from './function/attempt.mjs'; -export { before } from './function/before.mjs'; -export { bind } from './function/bind.mjs'; -export { bindKey } from './function/bindKey.mjs'; -export { curry } from './function/curry.mjs'; -export { curryRight } from './function/curryRight.mjs'; -export { DebouncedFunc, debounce } from './function/debounce.mjs'; -export { defer } from './function/defer.mjs'; -export { delay } from './function/delay.mjs'; -export { flip } from './function/flip.mjs'; -export { flow } from './function/flow.mjs'; -export { flowRight } from './function/flowRight.mjs'; -export { memoize } from './function/memoize.mjs'; -export { negate } from './function/negate.mjs'; -export { nthArg } from './function/nthArg.mjs'; -export { once } from './function/once.mjs'; -export { overArgs } from './function/overArgs.mjs'; -export { partial } from './function/partial.mjs'; -export { partialRight } from './function/partialRight.mjs'; -export { rearg } from './function/rearg.mjs'; -export { rest } from './function/rest.mjs'; -export { spread } from './function/spread.mjs'; -export { throttle } from './function/throttle.mjs'; -export { unary } from './function/unary.mjs'; -export { wrap } from './function/wrap.mjs'; -export { add } from './math/add.mjs'; -export { ceil } from './math/ceil.mjs'; -export { clamp } from './math/clamp.mjs'; -export { divide } from './math/divide.mjs'; -export { floor } from './math/floor.mjs'; -export { inRange } from './math/inRange.mjs'; -export { max } from './math/max.mjs'; -export { maxBy } from './math/maxBy.mjs'; -export { mean } from './math/mean.mjs'; -export { meanBy } from './math/meanBy.mjs'; -export { min } from './math/min.mjs'; -export { minBy } from './math/minBy.mjs'; -export { multiply } from './math/multiply.mjs'; -export { parseInt } from './math/parseInt.mjs'; -export { random } from './math/random.mjs'; -export { range } from './math/range.mjs'; -export { rangeRight } from './math/rangeRight.mjs'; -export { round } from './math/round.mjs'; -export { subtract } from './math/subtract.mjs'; -export { sum } from './math/sum.mjs'; -export { sumBy } from './math/sumBy.mjs'; -export { isEqual } from '../predicate/isEqual.mjs'; -export { identity } from './function/identity.mjs'; -export { noop } from './function/noop.mjs'; -export { assign } from './object/assign.mjs'; -export { assignIn, assignIn as extend } from './object/assignIn.mjs'; -export { assignInWith, assignInWith as extendWith } from './object/assignInWith.mjs'; -export { assignWith } from './object/assignWith.mjs'; -export { at } from './object/at.mjs'; -export { clone } from './object/clone.mjs'; -export { cloneDeep } from './object/cloneDeep.mjs'; -export { cloneDeepWith } from './object/cloneDeepWith.mjs'; -export { cloneWith } from './object/cloneWith.mjs'; -export { create } from './object/create.mjs'; -export { defaults } from './object/defaults.mjs'; -export { defaultsDeep } from './object/defaultsDeep.mjs'; -export { findKey } from './object/findKey.mjs'; -export { findLastKey } from './object/findLastKey.mjs'; -export { forIn } from './object/forIn.mjs'; -export { forInRight } from './object/forInRight.mjs'; -export { forOwn } from './object/forOwn.mjs'; -export { forOwnRight } from './object/forOwnRight.mjs'; -export { fromPairs } from './object/fromPairs.mjs'; -export { functions } from './object/functions.mjs'; -export { functionsIn } from './object/functionsIn.mjs'; -export { get } from './object/get.mjs'; -export { has } from './object/has.mjs'; -export { hasIn } from './object/hasIn.mjs'; -export { invert } from './object/invert.mjs'; -export { invertBy } from './object/invertBy.mjs'; -export { keys } from './object/keys.mjs'; -export { keysIn } from './object/keysIn.mjs'; -export { mapKeys } from './object/mapKeys.mjs'; -export { mapValues } from './object/mapValues.mjs'; -export { merge } from './object/merge.mjs'; -export { mergeWith } from './object/mergeWith.mjs'; -export { omit } from './object/omit.mjs'; -export { omitBy } from './object/omitBy.mjs'; -export { pick } from './object/pick.mjs'; -export { pickBy } from './object/pickBy.mjs'; -export { property } from './object/property.mjs'; -export { propertyOf } from './object/propertyOf.mjs'; -export { result } from './object/result.mjs'; -export { set } from './object/set.mjs'; -export { setWith } from './object/setWith.mjs'; -export { toDefaulted } from './object/toDefaulted.mjs'; -export { toPairs } from './object/toPairs.mjs'; -export { toPairsIn } from './object/toPairsIn.mjs'; -export { transform } from './object/transform.mjs'; -export { unset } from './object/unset.mjs'; -export { update } from './object/update.mjs'; -export { updateWith } from './object/updateWith.mjs'; -export { values } from './object/values.mjs'; -export { valuesIn } from './object/valuesIn.mjs'; -export { isFunction } from './predicate/isFunction.mjs'; -export { isLength } from './predicate/isLength.mjs'; -export { isMatchWith } from './predicate/isMatchWith.mjs'; -export { isNative } from './predicate/isNative.mjs'; -export { isNull } from './predicate/isNull.mjs'; -export { isUndefined } from './predicate/isUndefined.mjs'; -export { conforms } from './predicate/conforms.mjs'; -export { conformsTo } from './predicate/conformsTo.mjs'; -export { isArguments } from './predicate/isArguments.mjs'; -export { isArray } from './predicate/isArray.mjs'; -export { isArrayBuffer } from './predicate/isArrayBuffer.mjs'; -export { isArrayLike } from './predicate/isArrayLike.mjs'; -export { isArrayLikeObject } from './predicate/isArrayLikeObject.mjs'; -export { isBoolean } from './predicate/isBoolean.mjs'; -export { isBuffer } from './predicate/isBuffer.mjs'; -export { isDate } from './predicate/isDate.mjs'; -export { isElement } from './predicate/isElement.mjs'; -export { isEmpty } from './predicate/isEmpty.mjs'; -export { isEqualWith } from './predicate/isEqualWith.mjs'; -export { isError } from './predicate/isError.mjs'; -export { isFinite } from './predicate/isFinite.mjs'; -export { isInteger } from './predicate/isInteger.mjs'; -export { isMap } from './predicate/isMap.mjs'; -export { isMatch } from './predicate/isMatch.mjs'; -export { isNaN } from './predicate/isNaN.mjs'; -export { isNil } from './predicate/isNil.mjs'; -export { isNumber } from './predicate/isNumber.mjs'; -export { isObject } from './predicate/isObject.mjs'; -export { isObjectLike } from './predicate/isObjectLike.mjs'; -export { isPlainObject } from './predicate/isPlainObject.mjs'; -export { isRegExp } from './predicate/isRegExp.mjs'; -export { isSafeInteger } from './predicate/isSafeInteger.mjs'; -export { isSet } from './predicate/isSet.mjs'; -export { isString } from './predicate/isString.mjs'; -export { isSymbol } from './predicate/isSymbol.mjs'; -export { isTypedArray } from './predicate/isTypedArray.mjs'; -export { isWeakMap } from './predicate/isWeakMap.mjs'; -export { isWeakSet } from './predicate/isWeakSet.mjs'; -export { matches } from './predicate/matches.mjs'; -export { matchesProperty } from './predicate/matchesProperty.mjs'; -export { capitalize } from './string/capitalize.mjs'; -export { bindAll } from './util/bindAll.mjs'; -export { camelCase } from './string/camelCase.mjs'; -export { deburr } from './string/deburr.mjs'; -export { endsWith } from './string/endsWith.mjs'; -export { escape } from './string/escape.mjs'; -export { escapeRegExp } from './string/escapeRegExp.mjs'; -export { kebabCase } from './string/kebabCase.mjs'; -export { lowerCase } from './string/lowerCase.mjs'; -export { lowerFirst } from './string/lowerFirst.mjs'; -export { pad } from './string/pad.mjs'; -export { padEnd } from './string/padEnd.mjs'; -export { padStart } from './string/padStart.mjs'; -export { repeat } from './string/repeat.mjs'; -export { replace } from './string/replace.mjs'; -export { snakeCase } from './string/snakeCase.mjs'; -export { split } from './string/split.mjs'; -export { startCase } from './string/startCase.mjs'; -export { startsWith } from './string/startsWith.mjs'; -export { template, templateSettings } from './string/template.mjs'; -export { toLower } from './string/toLower.mjs'; -export { toUpper } from './string/toUpper.mjs'; -export { trim } from './string/trim.mjs'; -export { trimEnd } from './string/trimEnd.mjs'; -export { trimStart } from './string/trimStart.mjs'; -export { truncate } from './string/truncate.mjs'; -export { unescape } from './string/unescape.mjs'; -export { upperCase } from './string/upperCase.mjs'; -export { upperFirst } from './string/upperFirst.mjs'; -export { words } from './string/words.mjs'; -export { cond } from './util/cond.mjs'; -export { constant } from './util/constant.mjs'; -export { defaultTo } from './util/defaultTo.mjs'; -export { isEqualsSameValueZero as eq } from '../_internal/isEqualsSameValueZero.mjs'; -export { gt } from './util/gt.mjs'; -export { gte } from './util/gte.mjs'; -export { invoke } from './util/invoke.mjs'; -export { iteratee } from './util/iteratee.mjs'; -export { lt } from './util/lt.mjs'; -export { lte } from './util/lte.mjs'; -export { method } from './util/method.mjs'; -export { methodOf } from './util/methodOf.mjs'; -export { now } from './util/now.mjs'; -export { over } from './util/over.mjs'; -export { overEvery } from './util/overEvery.mjs'; -export { overSome } from './util/overSome.mjs'; -export { stubArray } from './util/stubArray.mjs'; -export { stubFalse } from './util/stubFalse.mjs'; -export { stubObject } from './util/stubObject.mjs'; -export { stubString } from './util/stubString.mjs'; -export { stubTrue } from './util/stubTrue.mjs'; -export { times } from './util/times.mjs'; -export { toArray } from './util/toArray.mjs'; -export { toFinite } from './util/toFinite.mjs'; -export { toInteger } from './util/toInteger.mjs'; -export { toLength } from './util/toLength.mjs'; -export { toNumber } from './util/toNumber.mjs'; -export { toPath } from './util/toPath.mjs'; -export { toPlainObject } from './util/toPlainObject.mjs'; -export { toSafeInteger } from './util/toSafeInteger.mjs'; -export { toString } from './util/toString.mjs'; -export { uniqueId } from './util/uniqueId.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/compat.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/compat.d.ts deleted file mode 100644 index 3776171..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/compat.d.ts +++ /dev/null @@ -1,291 +0,0 @@ -export { castArray } from './array/castArray.js'; -export { chunk } from './array/chunk.js'; -export { compact } from './array/compact.js'; -export { concat } from './array/concat.js'; -export { countBy } from './array/countBy.js'; -export { difference } from './array/difference.js'; -export { differenceBy } from './array/differenceBy.js'; -export { differenceWith } from './array/differenceWith.js'; -export { drop } from './array/drop.js'; -export { dropRight } from './array/dropRight.js'; -export { dropRightWhile } from './array/dropRightWhile.js'; -export { dropWhile } from './array/dropWhile.js'; -export { forEach as each, forEach } from './array/forEach.js'; -export { forEachRight as eachRight, forEachRight } from './array/forEachRight.js'; -export { every } from './array/every.js'; -export { fill } from './array/fill.js'; -export { filter } from './array/filter.js'; -export { find } from './array/find.js'; -export { findIndex } from './array/findIndex.js'; -export { findLast } from './array/findLast.js'; -export { findLastIndex } from './array/findLastIndex.js'; -export { head as first, head } from './array/head.js'; -export { flatMap } from './array/flatMap.js'; -export { flatMapDeep } from './array/flatMapDeep.js'; -export { flatMapDepth } from './array/flatMapDepth.js'; -export { flatten } from './array/flatten.js'; -export { flattenDeep } from './array/flattenDeep.js'; -export { flattenDepth } from './array/flattenDepth.js'; -export { groupBy } from './array/groupBy.js'; -export { includes } from './array/includes.js'; -export { indexOf } from './array/indexOf.js'; -export { initial } from './array/initial.js'; -export { intersection } from './array/intersection.js'; -export { intersectionBy } from './array/intersectionBy.js'; -export { intersectionWith } from './array/intersectionWith.js'; -export { invokeMap } from './array/invokeMap.js'; -export { join } from './array/join.js'; -export { keyBy } from './array/keyBy.js'; -export { last } from './array/last.js'; -export { lastIndexOf } from './array/lastIndexOf.js'; -export { map } from './array/map.js'; -export { nth } from './array/nth.js'; -export { orderBy } from './array/orderBy.js'; -export { partition } from './array/partition.js'; -export { pull } from './array/pull.js'; -export { pullAll } from './array/pullAll.js'; -export { pullAllBy } from './array/pullAllBy.js'; -export { pullAllWith } from './array/pullAllWith.js'; -export { pullAt } from './array/pullAt.js'; -export { reduce } from './array/reduce.js'; -export { reduceRight } from './array/reduceRight.js'; -export { reject } from './array/reject.js'; -export { remove } from './array/remove.js'; -export { reverse } from './array/reverse.js'; -export { sample } from './array/sample.js'; -export { sampleSize } from './array/sampleSize.js'; -export { shuffle } from './array/shuffle.js'; -export { size } from './array/size.js'; -export { slice } from './array/slice.js'; -export { some } from './array/some.js'; -export { sortBy } from './array/sortBy.js'; -export { sortedIndex } from './array/sortedIndex.js'; -export { sortedIndexBy } from './array/sortedIndexBy.js'; -export { sortedIndexOf } from './array/sortedIndexOf.js'; -export { sortedLastIndex } from './array/sortedLastIndex.js'; -export { sortedLastIndexBy } from './array/sortedLastIndexBy.js'; -export { sortedLastIndexOf } from './array/sortedLastIndexOf.js'; -export { tail } from './array/tail.js'; -export { take } from './array/take.js'; -export { takeRight } from './array/takeRight.js'; -export { takeRightWhile } from './array/takeRightWhile.js'; -export { takeWhile } from './array/takeWhile.js'; -export { union } from './array/union.js'; -export { unionBy } from './array/unionBy.js'; -export { unionWith } from './array/unionWith.js'; -export { uniq } from './array/uniq.js'; -export { uniqBy } from './array/uniqBy.js'; -export { uniqWith } from './array/uniqWith.js'; -export { unzip } from './array/unzip.js'; -export { unzipWith } from './array/unzipWith.js'; -export { without } from './array/without.js'; -export { xor } from './array/xor.js'; -export { xorBy } from './array/xorBy.js'; -export { xorWith } from './array/xorWith.js'; -export { zip } from './array/zip.js'; -export { zipObject } from './array/zipObject.js'; -export { zipObjectDeep } from './array/zipObjectDeep.js'; -export { zipWith } from './array/zipWith.js'; -export { after } from './function/after.js'; -export { ary } from './function/ary.js'; -export { attempt } from './function/attempt.js'; -export { before } from './function/before.js'; -export { bind } from './function/bind.js'; -export { bindKey } from './function/bindKey.js'; -export { curry } from './function/curry.js'; -export { curryRight } from './function/curryRight.js'; -export { DebouncedFunc, debounce } from './function/debounce.js'; -export { defer } from './function/defer.js'; -export { delay } from './function/delay.js'; -export { flip } from './function/flip.js'; -export { flow } from './function/flow.js'; -export { flowRight } from './function/flowRight.js'; -export { memoize } from './function/memoize.js'; -export { negate } from './function/negate.js'; -export { nthArg } from './function/nthArg.js'; -export { once } from './function/once.js'; -export { overArgs } from './function/overArgs.js'; -export { partial } from './function/partial.js'; -export { partialRight } from './function/partialRight.js'; -export { rearg } from './function/rearg.js'; -export { rest } from './function/rest.js'; -export { spread } from './function/spread.js'; -export { throttle } from './function/throttle.js'; -export { unary } from './function/unary.js'; -export { wrap } from './function/wrap.js'; -export { add } from './math/add.js'; -export { ceil } from './math/ceil.js'; -export { clamp } from './math/clamp.js'; -export { divide } from './math/divide.js'; -export { floor } from './math/floor.js'; -export { inRange } from './math/inRange.js'; -export { max } from './math/max.js'; -export { maxBy } from './math/maxBy.js'; -export { mean } from './math/mean.js'; -export { meanBy } from './math/meanBy.js'; -export { min } from './math/min.js'; -export { minBy } from './math/minBy.js'; -export { multiply } from './math/multiply.js'; -export { parseInt } from './math/parseInt.js'; -export { random } from './math/random.js'; -export { range } from './math/range.js'; -export { rangeRight } from './math/rangeRight.js'; -export { round } from './math/round.js'; -export { subtract } from './math/subtract.js'; -export { sum } from './math/sum.js'; -export { sumBy } from './math/sumBy.js'; -export { isEqual } from '../predicate/isEqual.js'; -export { identity } from './function/identity.js'; -export { noop } from './function/noop.js'; -export { assign } from './object/assign.js'; -export { assignIn, assignIn as extend } from './object/assignIn.js'; -export { assignInWith, assignInWith as extendWith } from './object/assignInWith.js'; -export { assignWith } from './object/assignWith.js'; -export { at } from './object/at.js'; -export { clone } from './object/clone.js'; -export { cloneDeep } from './object/cloneDeep.js'; -export { cloneDeepWith } from './object/cloneDeepWith.js'; -export { cloneWith } from './object/cloneWith.js'; -export { create } from './object/create.js'; -export { defaults } from './object/defaults.js'; -export { defaultsDeep } from './object/defaultsDeep.js'; -export { findKey } from './object/findKey.js'; -export { findLastKey } from './object/findLastKey.js'; -export { forIn } from './object/forIn.js'; -export { forInRight } from './object/forInRight.js'; -export { forOwn } from './object/forOwn.js'; -export { forOwnRight } from './object/forOwnRight.js'; -export { fromPairs } from './object/fromPairs.js'; -export { functions } from './object/functions.js'; -export { functionsIn } from './object/functionsIn.js'; -export { get } from './object/get.js'; -export { has } from './object/has.js'; -export { hasIn } from './object/hasIn.js'; -export { invert } from './object/invert.js'; -export { invertBy } from './object/invertBy.js'; -export { keys } from './object/keys.js'; -export { keysIn } from './object/keysIn.js'; -export { mapKeys } from './object/mapKeys.js'; -export { mapValues } from './object/mapValues.js'; -export { merge } from './object/merge.js'; -export { mergeWith } from './object/mergeWith.js'; -export { omit } from './object/omit.js'; -export { omitBy } from './object/omitBy.js'; -export { pick } from './object/pick.js'; -export { pickBy } from './object/pickBy.js'; -export { property } from './object/property.js'; -export { propertyOf } from './object/propertyOf.js'; -export { result } from './object/result.js'; -export { set } from './object/set.js'; -export { setWith } from './object/setWith.js'; -export { toDefaulted } from './object/toDefaulted.js'; -export { toPairs } from './object/toPairs.js'; -export { toPairsIn } from './object/toPairsIn.js'; -export { transform } from './object/transform.js'; -export { unset } from './object/unset.js'; -export { update } from './object/update.js'; -export { updateWith } from './object/updateWith.js'; -export { values } from './object/values.js'; -export { valuesIn } from './object/valuesIn.js'; -export { isFunction } from './predicate/isFunction.js'; -export { isLength } from './predicate/isLength.js'; -export { isMatchWith } from './predicate/isMatchWith.js'; -export { isNative } from './predicate/isNative.js'; -export { isNull } from './predicate/isNull.js'; -export { isUndefined } from './predicate/isUndefined.js'; -export { conforms } from './predicate/conforms.js'; -export { conformsTo } from './predicate/conformsTo.js'; -export { isArguments } from './predicate/isArguments.js'; -export { isArray } from './predicate/isArray.js'; -export { isArrayBuffer } from './predicate/isArrayBuffer.js'; -export { isArrayLike } from './predicate/isArrayLike.js'; -export { isArrayLikeObject } from './predicate/isArrayLikeObject.js'; -export { isBoolean } from './predicate/isBoolean.js'; -export { isBuffer } from './predicate/isBuffer.js'; -export { isDate } from './predicate/isDate.js'; -export { isElement } from './predicate/isElement.js'; -export { isEmpty } from './predicate/isEmpty.js'; -export { isEqualWith } from './predicate/isEqualWith.js'; -export { isError } from './predicate/isError.js'; -export { isFinite } from './predicate/isFinite.js'; -export { isInteger } from './predicate/isInteger.js'; -export { isMap } from './predicate/isMap.js'; -export { isMatch } from './predicate/isMatch.js'; -export { isNaN } from './predicate/isNaN.js'; -export { isNil } from './predicate/isNil.js'; -export { isNumber } from './predicate/isNumber.js'; -export { isObject } from './predicate/isObject.js'; -export { isObjectLike } from './predicate/isObjectLike.js'; -export { isPlainObject } from './predicate/isPlainObject.js'; -export { isRegExp } from './predicate/isRegExp.js'; -export { isSafeInteger } from './predicate/isSafeInteger.js'; -export { isSet } from './predicate/isSet.js'; -export { isString } from './predicate/isString.js'; -export { isSymbol } from './predicate/isSymbol.js'; -export { isTypedArray } from './predicate/isTypedArray.js'; -export { isWeakMap } from './predicate/isWeakMap.js'; -export { isWeakSet } from './predicate/isWeakSet.js'; -export { matches } from './predicate/matches.js'; -export { matchesProperty } from './predicate/matchesProperty.js'; -export { capitalize } from './string/capitalize.js'; -export { bindAll } from './util/bindAll.js'; -export { camelCase } from './string/camelCase.js'; -export { deburr } from './string/deburr.js'; -export { endsWith } from './string/endsWith.js'; -export { escape } from './string/escape.js'; -export { escapeRegExp } from './string/escapeRegExp.js'; -export { kebabCase } from './string/kebabCase.js'; -export { lowerCase } from './string/lowerCase.js'; -export { lowerFirst } from './string/lowerFirst.js'; -export { pad } from './string/pad.js'; -export { padEnd } from './string/padEnd.js'; -export { padStart } from './string/padStart.js'; -export { repeat } from './string/repeat.js'; -export { replace } from './string/replace.js'; -export { snakeCase } from './string/snakeCase.js'; -export { split } from './string/split.js'; -export { startCase } from './string/startCase.js'; -export { startsWith } from './string/startsWith.js'; -export { template, templateSettings } from './string/template.js'; -export { toLower } from './string/toLower.js'; -export { toUpper } from './string/toUpper.js'; -export { trim } from './string/trim.js'; -export { trimEnd } from './string/trimEnd.js'; -export { trimStart } from './string/trimStart.js'; -export { truncate } from './string/truncate.js'; -export { unescape } from './string/unescape.js'; -export { upperCase } from './string/upperCase.js'; -export { upperFirst } from './string/upperFirst.js'; -export { words } from './string/words.js'; -export { cond } from './util/cond.js'; -export { constant } from './util/constant.js'; -export { defaultTo } from './util/defaultTo.js'; -export { isEqualsSameValueZero as eq } from '../_internal/isEqualsSameValueZero.js'; -export { gt } from './util/gt.js'; -export { gte } from './util/gte.js'; -export { invoke } from './util/invoke.js'; -export { iteratee } from './util/iteratee.js'; -export { lt } from './util/lt.js'; -export { lte } from './util/lte.js'; -export { method } from './util/method.js'; -export { methodOf } from './util/methodOf.js'; -export { now } from './util/now.js'; -export { over } from './util/over.js'; -export { overEvery } from './util/overEvery.js'; -export { overSome } from './util/overSome.js'; -export { stubArray } from './util/stubArray.js'; -export { stubFalse } from './util/stubFalse.js'; -export { stubObject } from './util/stubObject.js'; -export { stubString } from './util/stubString.js'; -export { stubTrue } from './util/stubTrue.js'; -export { times } from './util/times.js'; -export { toArray } from './util/toArray.js'; -export { toFinite } from './util/toFinite.js'; -export { toInteger } from './util/toInteger.js'; -export { toLength } from './util/toLength.js'; -export { toNumber } from './util/toNumber.js'; -export { toPath } from './util/toPath.js'; -export { toPlainObject } from './util/toPlainObject.js'; -export { toSafeInteger } from './util/toSafeInteger.js'; -export { toString } from './util/toString.js'; -export { uniqueId } from './util/uniqueId.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/compat.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/compat.js deleted file mode 100644 index 6518672..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/compat.js +++ /dev/null @@ -1,595 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const castArray = require('./array/castArray.js'); -const chunk = require('./array/chunk.js'); -const compact = require('./array/compact.js'); -const concat = require('./array/concat.js'); -const countBy = require('./array/countBy.js'); -const difference = require('./array/difference.js'); -const differenceBy = require('./array/differenceBy.js'); -const differenceWith = require('./array/differenceWith.js'); -const drop = require('./array/drop.js'); -const dropRight = require('./array/dropRight.js'); -const dropRightWhile = require('./array/dropRightWhile.js'); -const dropWhile = require('./array/dropWhile.js'); -const forEach = require('./array/forEach.js'); -const forEachRight = require('./array/forEachRight.js'); -const every = require('./array/every.js'); -const fill = require('./array/fill.js'); -const filter = require('./array/filter.js'); -const find = require('./array/find.js'); -const findIndex = require('./array/findIndex.js'); -const findLast = require('./array/findLast.js'); -const findLastIndex = require('./array/findLastIndex.js'); -const head = require('./array/head.js'); -const flatMap = require('./array/flatMap.js'); -const flatMapDeep = require('./array/flatMapDeep.js'); -const flatMapDepth = require('./array/flatMapDepth.js'); -const flatten = require('./array/flatten.js'); -const flattenDeep = require('./array/flattenDeep.js'); -const flattenDepth = require('./array/flattenDepth.js'); -const groupBy = require('./array/groupBy.js'); -const includes = require('./array/includes.js'); -const indexOf = require('./array/indexOf.js'); -const initial = require('./array/initial.js'); -const intersection = require('./array/intersection.js'); -const intersectionBy = require('./array/intersectionBy.js'); -const intersectionWith = require('./array/intersectionWith.js'); -const invokeMap = require('./array/invokeMap.js'); -const join = require('./array/join.js'); -const keyBy = require('./array/keyBy.js'); -const last = require('./array/last.js'); -const lastIndexOf = require('./array/lastIndexOf.js'); -const map = require('./array/map.js'); -const nth = require('./array/nth.js'); -const orderBy = require('./array/orderBy.js'); -const partition = require('./array/partition.js'); -const pull = require('./array/pull.js'); -const pullAll = require('./array/pullAll.js'); -const pullAllBy = require('./array/pullAllBy.js'); -const pullAllWith = require('./array/pullAllWith.js'); -const pullAt = require('./array/pullAt.js'); -const reduce = require('./array/reduce.js'); -const reduceRight = require('./array/reduceRight.js'); -const reject = require('./array/reject.js'); -const remove = require('./array/remove.js'); -const reverse = require('./array/reverse.js'); -const sample = require('./array/sample.js'); -const sampleSize = require('./array/sampleSize.js'); -const shuffle = require('./array/shuffle.js'); -const size = require('./array/size.js'); -const slice = require('./array/slice.js'); -const some = require('./array/some.js'); -const sortBy = require('./array/sortBy.js'); -const sortedIndex = require('./array/sortedIndex.js'); -const sortedIndexBy = require('./array/sortedIndexBy.js'); -const sortedIndexOf = require('./array/sortedIndexOf.js'); -const sortedLastIndex = require('./array/sortedLastIndex.js'); -const sortedLastIndexBy = require('./array/sortedLastIndexBy.js'); -const sortedLastIndexOf = require('./array/sortedLastIndexOf.js'); -const tail = require('./array/tail.js'); -const take = require('./array/take.js'); -const takeRight = require('./array/takeRight.js'); -const takeRightWhile = require('./array/takeRightWhile.js'); -const takeWhile = require('./array/takeWhile.js'); -const union = require('./array/union.js'); -const unionBy = require('./array/unionBy.js'); -const unionWith = require('./array/unionWith.js'); -const uniq = require('./array/uniq.js'); -const uniqBy = require('./array/uniqBy.js'); -const uniqWith = require('./array/uniqWith.js'); -const unzip = require('./array/unzip.js'); -const unzipWith = require('./array/unzipWith.js'); -const without = require('./array/without.js'); -const xor = require('./array/xor.js'); -const xorBy = require('./array/xorBy.js'); -const xorWith = require('./array/xorWith.js'); -const zip = require('./array/zip.js'); -const zipObject = require('./array/zipObject.js'); -const zipObjectDeep = require('./array/zipObjectDeep.js'); -const zipWith = require('./array/zipWith.js'); -const after = require('./function/after.js'); -const ary = require('./function/ary.js'); -const attempt = require('./function/attempt.js'); -const before = require('./function/before.js'); -const bind = require('./function/bind.js'); -const bindKey = require('./function/bindKey.js'); -const curry = require('./function/curry.js'); -const curryRight = require('./function/curryRight.js'); -const debounce = require('./function/debounce.js'); -const defer = require('./function/defer.js'); -const delay = require('./function/delay.js'); -const flip = require('./function/flip.js'); -const flow = require('./function/flow.js'); -const flowRight = require('./function/flowRight.js'); -const memoize = require('./function/memoize.js'); -const negate = require('./function/negate.js'); -const nthArg = require('./function/nthArg.js'); -const once = require('./function/once.js'); -const overArgs = require('./function/overArgs.js'); -const partial = require('./function/partial.js'); -const partialRight = require('./function/partialRight.js'); -const rearg = require('./function/rearg.js'); -const rest = require('./function/rest.js'); -const spread = require('./function/spread.js'); -const throttle = require('./function/throttle.js'); -const unary = require('./function/unary.js'); -const wrap = require('./function/wrap.js'); -const add = require('./math/add.js'); -const ceil = require('./math/ceil.js'); -const clamp = require('./math/clamp.js'); -const divide = require('./math/divide.js'); -const floor = require('./math/floor.js'); -const inRange = require('./math/inRange.js'); -const max = require('./math/max.js'); -const maxBy = require('./math/maxBy.js'); -const mean = require('./math/mean.js'); -const meanBy = require('./math/meanBy.js'); -const min = require('./math/min.js'); -const minBy = require('./math/minBy.js'); -const multiply = require('./math/multiply.js'); -const parseInt = require('./math/parseInt.js'); -const random = require('./math/random.js'); -const range = require('./math/range.js'); -const rangeRight = require('./math/rangeRight.js'); -const round = require('./math/round.js'); -const subtract = require('./math/subtract.js'); -const sum = require('./math/sum.js'); -const sumBy = require('./math/sumBy.js'); -const isEqual = require('../predicate/isEqual.js'); -const identity = require('./function/identity.js'); -const noop = require('./function/noop.js'); -const assign = require('./object/assign.js'); -const assignIn = require('./object/assignIn.js'); -const assignInWith = require('./object/assignInWith.js'); -const assignWith = require('./object/assignWith.js'); -const at = require('./object/at.js'); -const clone = require('./object/clone.js'); -const cloneDeep = require('./object/cloneDeep.js'); -const cloneDeepWith = require('./object/cloneDeepWith.js'); -const cloneWith = require('./object/cloneWith.js'); -const create = require('./object/create.js'); -const defaults = require('./object/defaults.js'); -const defaultsDeep = require('./object/defaultsDeep.js'); -const findKey = require('./object/findKey.js'); -const findLastKey = require('./object/findLastKey.js'); -const forIn = require('./object/forIn.js'); -const forInRight = require('./object/forInRight.js'); -const forOwn = require('./object/forOwn.js'); -const forOwnRight = require('./object/forOwnRight.js'); -const fromPairs = require('./object/fromPairs.js'); -const functions = require('./object/functions.js'); -const functionsIn = require('./object/functionsIn.js'); -const get = require('./object/get.js'); -const has = require('./object/has.js'); -const hasIn = require('./object/hasIn.js'); -const invert = require('./object/invert.js'); -const invertBy = require('./object/invertBy.js'); -const keys = require('./object/keys.js'); -const keysIn = require('./object/keysIn.js'); -const mapKeys = require('./object/mapKeys.js'); -const mapValues = require('./object/mapValues.js'); -const merge = require('./object/merge.js'); -const mergeWith = require('./object/mergeWith.js'); -const omit = require('./object/omit.js'); -const omitBy = require('./object/omitBy.js'); -const pick = require('./object/pick.js'); -const pickBy = require('./object/pickBy.js'); -const property = require('./object/property.js'); -const propertyOf = require('./object/propertyOf.js'); -const result = require('./object/result.js'); -const set = require('./object/set.js'); -const setWith = require('./object/setWith.js'); -const toDefaulted = require('./object/toDefaulted.js'); -const toPairs = require('./object/toPairs.js'); -const toPairsIn = require('./object/toPairsIn.js'); -const transform = require('./object/transform.js'); -const unset = require('./object/unset.js'); -const update = require('./object/update.js'); -const updateWith = require('./object/updateWith.js'); -const values = require('./object/values.js'); -const valuesIn = require('./object/valuesIn.js'); -const isFunction = require('./predicate/isFunction.js'); -const isLength = require('./predicate/isLength.js'); -const isMatchWith = require('./predicate/isMatchWith.js'); -const isNative = require('./predicate/isNative.js'); -const isNull = require('./predicate/isNull.js'); -const isUndefined = require('./predicate/isUndefined.js'); -const conforms = require('./predicate/conforms.js'); -const conformsTo = require('./predicate/conformsTo.js'); -const isArguments = require('./predicate/isArguments.js'); -const isArray = require('./predicate/isArray.js'); -const isArrayBuffer = require('./predicate/isArrayBuffer.js'); -const isArrayLike = require('./predicate/isArrayLike.js'); -const isArrayLikeObject = require('./predicate/isArrayLikeObject.js'); -const isBoolean = require('./predicate/isBoolean.js'); -const isBuffer = require('./predicate/isBuffer.js'); -const isDate = require('./predicate/isDate.js'); -const isElement = require('./predicate/isElement.js'); -const isEmpty = require('./predicate/isEmpty.js'); -const isEqualWith = require('./predicate/isEqualWith.js'); -const isError = require('./predicate/isError.js'); -const isFinite = require('./predicate/isFinite.js'); -const isInteger = require('./predicate/isInteger.js'); -const isMap = require('./predicate/isMap.js'); -const isMatch = require('./predicate/isMatch.js'); -const isNaN = require('./predicate/isNaN.js'); -const isNil = require('./predicate/isNil.js'); -const isNumber = require('./predicate/isNumber.js'); -const isObject = require('./predicate/isObject.js'); -const isObjectLike = require('./predicate/isObjectLike.js'); -const isPlainObject = require('./predicate/isPlainObject.js'); -const isRegExp = require('./predicate/isRegExp.js'); -const isSafeInteger = require('./predicate/isSafeInteger.js'); -const isSet = require('./predicate/isSet.js'); -const isString = require('./predicate/isString.js'); -const isSymbol = require('./predicate/isSymbol.js'); -const isTypedArray = require('./predicate/isTypedArray.js'); -const isWeakMap = require('./predicate/isWeakMap.js'); -const isWeakSet = require('./predicate/isWeakSet.js'); -const matches = require('./predicate/matches.js'); -const matchesProperty = require('./predicate/matchesProperty.js'); -const capitalize = require('./string/capitalize.js'); -const bindAll = require('./util/bindAll.js'); -const camelCase = require('./string/camelCase.js'); -const deburr = require('./string/deburr.js'); -const endsWith = require('./string/endsWith.js'); -const escape = require('./string/escape.js'); -const escapeRegExp = require('./string/escapeRegExp.js'); -const kebabCase = require('./string/kebabCase.js'); -const lowerCase = require('./string/lowerCase.js'); -const lowerFirst = require('./string/lowerFirst.js'); -const pad = require('./string/pad.js'); -const padEnd = require('./string/padEnd.js'); -const padStart = require('./string/padStart.js'); -const repeat = require('./string/repeat.js'); -const replace = require('./string/replace.js'); -const snakeCase = require('./string/snakeCase.js'); -const split = require('./string/split.js'); -const startCase = require('./string/startCase.js'); -const startsWith = require('./string/startsWith.js'); -const template = require('./string/template.js'); -const toLower = require('./string/toLower.js'); -const toUpper = require('./string/toUpper.js'); -const trim = require('./string/trim.js'); -const trimEnd = require('./string/trimEnd.js'); -const trimStart = require('./string/trimStart.js'); -const truncate = require('./string/truncate.js'); -const unescape = require('./string/unescape.js'); -const upperCase = require('./string/upperCase.js'); -const upperFirst = require('./string/upperFirst.js'); -const words = require('./string/words.js'); -const cond = require('./util/cond.js'); -const constant = require('./util/constant.js'); -const defaultTo = require('./util/defaultTo.js'); -const isEqualsSameValueZero = require('../_internal/isEqualsSameValueZero.js'); -const gt = require('./util/gt.js'); -const gte = require('./util/gte.js'); -const invoke = require('./util/invoke.js'); -const iteratee = require('./util/iteratee.js'); -const lt = require('./util/lt.js'); -const lte = require('./util/lte.js'); -const method = require('./util/method.js'); -const methodOf = require('./util/methodOf.js'); -const now = require('./util/now.js'); -const over = require('./util/over.js'); -const overEvery = require('./util/overEvery.js'); -const overSome = require('./util/overSome.js'); -const stubArray = require('./util/stubArray.js'); -const stubFalse = require('./util/stubFalse.js'); -const stubObject = require('./util/stubObject.js'); -const stubString = require('./util/stubString.js'); -const stubTrue = require('./util/stubTrue.js'); -const times = require('./util/times.js'); -const toArray = require('./util/toArray.js'); -const toFinite = require('./util/toFinite.js'); -const toInteger = require('./util/toInteger.js'); -const toLength = require('./util/toLength.js'); -const toNumber = require('./util/toNumber.js'); -const toPath = require('./util/toPath.js'); -const toPlainObject = require('./util/toPlainObject.js'); -const toSafeInteger = require('./util/toSafeInteger.js'); -const toString = require('./util/toString.js'); -const uniqueId = require('./util/uniqueId.js'); - - - -exports.castArray = castArray.castArray; -exports.chunk = chunk.chunk; -exports.compact = compact.compact; -exports.concat = concat.concat; -exports.countBy = countBy.countBy; -exports.difference = difference.difference; -exports.differenceBy = differenceBy.differenceBy; -exports.differenceWith = differenceWith.differenceWith; -exports.drop = drop.drop; -exports.dropRight = dropRight.dropRight; -exports.dropRightWhile = dropRightWhile.dropRightWhile; -exports.dropWhile = dropWhile.dropWhile; -exports.each = forEach.forEach; -exports.forEach = forEach.forEach; -exports.eachRight = forEachRight.forEachRight; -exports.forEachRight = forEachRight.forEachRight; -exports.every = every.every; -exports.fill = fill.fill; -exports.filter = filter.filter; -exports.find = find.find; -exports.findIndex = findIndex.findIndex; -exports.findLast = findLast.findLast; -exports.findLastIndex = findLastIndex.findLastIndex; -exports.first = head.head; -exports.head = head.head; -exports.flatMap = flatMap.flatMap; -exports.flatMapDeep = flatMapDeep.flatMapDeep; -exports.flatMapDepth = flatMapDepth.flatMapDepth; -exports.flatten = flatten.flatten; -exports.flattenDeep = flattenDeep.flattenDeep; -exports.flattenDepth = flattenDepth.flattenDepth; -exports.groupBy = groupBy.groupBy; -exports.includes = includes.includes; -exports.indexOf = indexOf.indexOf; -exports.initial = initial.initial; -exports.intersection = intersection.intersection; -exports.intersectionBy = intersectionBy.intersectionBy; -exports.intersectionWith = intersectionWith.intersectionWith; -exports.invokeMap = invokeMap.invokeMap; -exports.join = join.join; -exports.keyBy = keyBy.keyBy; -exports.last = last.last; -exports.lastIndexOf = lastIndexOf.lastIndexOf; -exports.map = map.map; -exports.nth = nth.nth; -exports.orderBy = orderBy.orderBy; -exports.partition = partition.partition; -exports.pull = pull.pull; -exports.pullAll = pullAll.pullAll; -exports.pullAllBy = pullAllBy.pullAllBy; -exports.pullAllWith = pullAllWith.pullAllWith; -exports.pullAt = pullAt.pullAt; -exports.reduce = reduce.reduce; -exports.reduceRight = reduceRight.reduceRight; -exports.reject = reject.reject; -exports.remove = remove.remove; -exports.reverse = reverse.reverse; -exports.sample = sample.sample; -exports.sampleSize = sampleSize.sampleSize; -exports.shuffle = shuffle.shuffle; -exports.size = size.size; -exports.slice = slice.slice; -exports.some = some.some; -exports.sortBy = sortBy.sortBy; -exports.sortedIndex = sortedIndex.sortedIndex; -exports.sortedIndexBy = sortedIndexBy.sortedIndexBy; -exports.sortedIndexOf = sortedIndexOf.sortedIndexOf; -exports.sortedLastIndex = sortedLastIndex.sortedLastIndex; -exports.sortedLastIndexBy = sortedLastIndexBy.sortedLastIndexBy; -exports.sortedLastIndexOf = sortedLastIndexOf.sortedLastIndexOf; -exports.tail = tail.tail; -exports.take = take.take; -exports.takeRight = takeRight.takeRight; -exports.takeRightWhile = takeRightWhile.takeRightWhile; -exports.takeWhile = takeWhile.takeWhile; -exports.union = union.union; -exports.unionBy = unionBy.unionBy; -exports.unionWith = unionWith.unionWith; -exports.uniq = uniq.uniq; -exports.uniqBy = uniqBy.uniqBy; -exports.uniqWith = uniqWith.uniqWith; -exports.unzip = unzip.unzip; -exports.unzipWith = unzipWith.unzipWith; -exports.without = without.without; -exports.xor = xor.xor; -exports.xorBy = xorBy.xorBy; -exports.xorWith = xorWith.xorWith; -exports.zip = zip.zip; -exports.zipObject = zipObject.zipObject; -exports.zipObjectDeep = zipObjectDeep.zipObjectDeep; -exports.zipWith = zipWith.zipWith; -exports.after = after.after; -exports.ary = ary.ary; -exports.attempt = attempt.attempt; -exports.before = before.before; -exports.bind = bind.bind; -exports.bindKey = bindKey.bindKey; -exports.curry = curry.curry; -exports.curryRight = curryRight.curryRight; -exports.debounce = debounce.debounce; -exports.defer = defer.defer; -exports.delay = delay.delay; -exports.flip = flip.flip; -exports.flow = flow.flow; -exports.flowRight = flowRight.flowRight; -exports.memoize = memoize.memoize; -exports.negate = negate.negate; -exports.nthArg = nthArg.nthArg; -exports.once = once.once; -exports.overArgs = overArgs.overArgs; -exports.partial = partial.partial; -exports.partialRight = partialRight.partialRight; -exports.rearg = rearg.rearg; -exports.rest = rest.rest; -exports.spread = spread.spread; -exports.throttle = throttle.throttle; -exports.unary = unary.unary; -exports.wrap = wrap.wrap; -exports.add = add.add; -exports.ceil = ceil.ceil; -exports.clamp = clamp.clamp; -exports.divide = divide.divide; -exports.floor = floor.floor; -exports.inRange = inRange.inRange; -exports.max = max.max; -exports.maxBy = maxBy.maxBy; -exports.mean = mean.mean; -exports.meanBy = meanBy.meanBy; -exports.min = min.min; -exports.minBy = minBy.minBy; -exports.multiply = multiply.multiply; -exports.parseInt = parseInt.parseInt; -exports.random = random.random; -exports.range = range.range; -exports.rangeRight = rangeRight.rangeRight; -exports.round = round.round; -exports.subtract = subtract.subtract; -exports.sum = sum.sum; -exports.sumBy = sumBy.sumBy; -exports.isEqual = isEqual.isEqual; -exports.identity = identity.identity; -exports.noop = noop.noop; -exports.assign = assign.assign; -exports.assignIn = assignIn.assignIn; -exports.extend = assignIn.assignIn; -exports.assignInWith = assignInWith.assignInWith; -exports.extendWith = assignInWith.assignInWith; -exports.assignWith = assignWith.assignWith; -exports.at = at.at; -exports.clone = clone.clone; -exports.cloneDeep = cloneDeep.cloneDeep; -exports.cloneDeepWith = cloneDeepWith.cloneDeepWith; -exports.cloneWith = cloneWith.cloneWith; -exports.create = create.create; -exports.defaults = defaults.defaults; -exports.defaultsDeep = defaultsDeep.defaultsDeep; -exports.findKey = findKey.findKey; -exports.findLastKey = findLastKey.findLastKey; -exports.forIn = forIn.forIn; -exports.forInRight = forInRight.forInRight; -exports.forOwn = forOwn.forOwn; -exports.forOwnRight = forOwnRight.forOwnRight; -exports.fromPairs = fromPairs.fromPairs; -exports.functions = functions.functions; -exports.functionsIn = functionsIn.functionsIn; -exports.get = get.get; -exports.has = has.has; -exports.hasIn = hasIn.hasIn; -exports.invert = invert.invert; -exports.invertBy = invertBy.invertBy; -exports.keys = keys.keys; -exports.keysIn = keysIn.keysIn; -exports.mapKeys = mapKeys.mapKeys; -exports.mapValues = mapValues.mapValues; -exports.merge = merge.merge; -exports.mergeWith = mergeWith.mergeWith; -exports.omit = omit.omit; -exports.omitBy = omitBy.omitBy; -exports.pick = pick.pick; -exports.pickBy = pickBy.pickBy; -exports.property = property.property; -exports.propertyOf = propertyOf.propertyOf; -exports.result = result.result; -exports.set = set.set; -exports.setWith = setWith.setWith; -exports.toDefaulted = toDefaulted.toDefaulted; -exports.toPairs = toPairs.toPairs; -exports.toPairsIn = toPairsIn.toPairsIn; -exports.transform = transform.transform; -exports.unset = unset.unset; -exports.update = update.update; -exports.updateWith = updateWith.updateWith; -exports.values = values.values; -exports.valuesIn = valuesIn.valuesIn; -exports.isFunction = isFunction.isFunction; -exports.isLength = isLength.isLength; -exports.isMatchWith = isMatchWith.isMatchWith; -exports.isNative = isNative.isNative; -exports.isNull = isNull.isNull; -exports.isUndefined = isUndefined.isUndefined; -exports.conforms = conforms.conforms; -exports.conformsTo = conformsTo.conformsTo; -exports.isArguments = isArguments.isArguments; -exports.isArray = isArray.isArray; -exports.isArrayBuffer = isArrayBuffer.isArrayBuffer; -exports.isArrayLike = isArrayLike.isArrayLike; -exports.isArrayLikeObject = isArrayLikeObject.isArrayLikeObject; -exports.isBoolean = isBoolean.isBoolean; -exports.isBuffer = isBuffer.isBuffer; -exports.isDate = isDate.isDate; -exports.isElement = isElement.isElement; -exports.isEmpty = isEmpty.isEmpty; -exports.isEqualWith = isEqualWith.isEqualWith; -exports.isError = isError.isError; -exports.isFinite = isFinite.isFinite; -exports.isInteger = isInteger.isInteger; -exports.isMap = isMap.isMap; -exports.isMatch = isMatch.isMatch; -exports.isNaN = isNaN.isNaN; -exports.isNil = isNil.isNil; -exports.isNumber = isNumber.isNumber; -exports.isObject = isObject.isObject; -exports.isObjectLike = isObjectLike.isObjectLike; -exports.isPlainObject = isPlainObject.isPlainObject; -exports.isRegExp = isRegExp.isRegExp; -exports.isSafeInteger = isSafeInteger.isSafeInteger; -exports.isSet = isSet.isSet; -exports.isString = isString.isString; -exports.isSymbol = isSymbol.isSymbol; -exports.isTypedArray = isTypedArray.isTypedArray; -exports.isWeakMap = isWeakMap.isWeakMap; -exports.isWeakSet = isWeakSet.isWeakSet; -exports.matches = matches.matches; -exports.matchesProperty = matchesProperty.matchesProperty; -exports.capitalize = capitalize.capitalize; -exports.bindAll = bindAll.bindAll; -exports.camelCase = camelCase.camelCase; -exports.deburr = deburr.deburr; -exports.endsWith = endsWith.endsWith; -exports.escape = escape.escape; -exports.escapeRegExp = escapeRegExp.escapeRegExp; -exports.kebabCase = kebabCase.kebabCase; -exports.lowerCase = lowerCase.lowerCase; -exports.lowerFirst = lowerFirst.lowerFirst; -exports.pad = pad.pad; -exports.padEnd = padEnd.padEnd; -exports.padStart = padStart.padStart; -exports.repeat = repeat.repeat; -exports.replace = replace.replace; -exports.snakeCase = snakeCase.snakeCase; -exports.split = split.split; -exports.startCase = startCase.startCase; -exports.startsWith = startsWith.startsWith; -exports.template = template.template; -exports.templateSettings = template.templateSettings; -exports.toLower = toLower.toLower; -exports.toUpper = toUpper.toUpper; -exports.trim = trim.trim; -exports.trimEnd = trimEnd.trimEnd; -exports.trimStart = trimStart.trimStart; -exports.truncate = truncate.truncate; -exports.unescape = unescape.unescape; -exports.upperCase = upperCase.upperCase; -exports.upperFirst = upperFirst.upperFirst; -exports.words = words.words; -exports.cond = cond.cond; -exports.constant = constant.constant; -exports.defaultTo = defaultTo.defaultTo; -exports.eq = isEqualsSameValueZero.isEqualsSameValueZero; -exports.gt = gt.gt; -exports.gte = gte.gte; -exports.invoke = invoke.invoke; -exports.iteratee = iteratee.iteratee; -exports.lt = lt.lt; -exports.lte = lte.lte; -exports.method = method.method; -exports.methodOf = methodOf.methodOf; -exports.now = now.now; -exports.over = over.over; -exports.overEvery = overEvery.overEvery; -exports.overSome = overSome.overSome; -exports.stubArray = stubArray.stubArray; -exports.stubFalse = stubFalse.stubFalse; -exports.stubObject = stubObject.stubObject; -exports.stubString = stubString.stubString; -exports.stubTrue = stubTrue.stubTrue; -exports.times = times.times; -exports.toArray = toArray.toArray; -exports.toFinite = toFinite.toFinite; -exports.toInteger = toInteger.toInteger; -exports.toLength = toLength.toLength; -exports.toNumber = toNumber.toNumber; -exports.toPath = toPath.toPath; -exports.toPlainObject = toPlainObject.toPlainObject; -exports.toSafeInteger = toSafeInteger.toSafeInteger; -exports.toString = toString.toString; -exports.uniqueId = uniqueId.uniqueId; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/compat.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/compat.mjs deleted file mode 100644 index 3c85efe..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/compat.mjs +++ /dev/null @@ -1,291 +0,0 @@ -export { castArray } from './array/castArray.mjs'; -export { chunk } from './array/chunk.mjs'; -export { compact } from './array/compact.mjs'; -export { concat } from './array/concat.mjs'; -export { countBy } from './array/countBy.mjs'; -export { difference } from './array/difference.mjs'; -export { differenceBy } from './array/differenceBy.mjs'; -export { differenceWith } from './array/differenceWith.mjs'; -export { drop } from './array/drop.mjs'; -export { dropRight } from './array/dropRight.mjs'; -export { dropRightWhile } from './array/dropRightWhile.mjs'; -export { dropWhile } from './array/dropWhile.mjs'; -export { forEach as each, forEach } from './array/forEach.mjs'; -export { forEachRight as eachRight, forEachRight } from './array/forEachRight.mjs'; -export { every } from './array/every.mjs'; -export { fill } from './array/fill.mjs'; -export { filter } from './array/filter.mjs'; -export { find } from './array/find.mjs'; -export { findIndex } from './array/findIndex.mjs'; -export { findLast } from './array/findLast.mjs'; -export { findLastIndex } from './array/findLastIndex.mjs'; -export { head as first, head } from './array/head.mjs'; -export { flatMap } from './array/flatMap.mjs'; -export { flatMapDeep } from './array/flatMapDeep.mjs'; -export { flatMapDepth } from './array/flatMapDepth.mjs'; -export { flatten } from './array/flatten.mjs'; -export { flattenDeep } from './array/flattenDeep.mjs'; -export { flattenDepth } from './array/flattenDepth.mjs'; -export { groupBy } from './array/groupBy.mjs'; -export { includes } from './array/includes.mjs'; -export { indexOf } from './array/indexOf.mjs'; -export { initial } from './array/initial.mjs'; -export { intersection } from './array/intersection.mjs'; -export { intersectionBy } from './array/intersectionBy.mjs'; -export { intersectionWith } from './array/intersectionWith.mjs'; -export { invokeMap } from './array/invokeMap.mjs'; -export { join } from './array/join.mjs'; -export { keyBy } from './array/keyBy.mjs'; -export { last } from './array/last.mjs'; -export { lastIndexOf } from './array/lastIndexOf.mjs'; -export { map } from './array/map.mjs'; -export { nth } from './array/nth.mjs'; -export { orderBy } from './array/orderBy.mjs'; -export { partition } from './array/partition.mjs'; -export { pull } from './array/pull.mjs'; -export { pullAll } from './array/pullAll.mjs'; -export { pullAllBy } from './array/pullAllBy.mjs'; -export { pullAllWith } from './array/pullAllWith.mjs'; -export { pullAt } from './array/pullAt.mjs'; -export { reduce } from './array/reduce.mjs'; -export { reduceRight } from './array/reduceRight.mjs'; -export { reject } from './array/reject.mjs'; -export { remove } from './array/remove.mjs'; -export { reverse } from './array/reverse.mjs'; -export { sample } from './array/sample.mjs'; -export { sampleSize } from './array/sampleSize.mjs'; -export { shuffle } from './array/shuffle.mjs'; -export { size } from './array/size.mjs'; -export { slice } from './array/slice.mjs'; -export { some } from './array/some.mjs'; -export { sortBy } from './array/sortBy.mjs'; -export { sortedIndex } from './array/sortedIndex.mjs'; -export { sortedIndexBy } from './array/sortedIndexBy.mjs'; -export { sortedIndexOf } from './array/sortedIndexOf.mjs'; -export { sortedLastIndex } from './array/sortedLastIndex.mjs'; -export { sortedLastIndexBy } from './array/sortedLastIndexBy.mjs'; -export { sortedLastIndexOf } from './array/sortedLastIndexOf.mjs'; -export { tail } from './array/tail.mjs'; -export { take } from './array/take.mjs'; -export { takeRight } from './array/takeRight.mjs'; -export { takeRightWhile } from './array/takeRightWhile.mjs'; -export { takeWhile } from './array/takeWhile.mjs'; -export { union } from './array/union.mjs'; -export { unionBy } from './array/unionBy.mjs'; -export { unionWith } from './array/unionWith.mjs'; -export { uniq } from './array/uniq.mjs'; -export { uniqBy } from './array/uniqBy.mjs'; -export { uniqWith } from './array/uniqWith.mjs'; -export { unzip } from './array/unzip.mjs'; -export { unzipWith } from './array/unzipWith.mjs'; -export { without } from './array/without.mjs'; -export { xor } from './array/xor.mjs'; -export { xorBy } from './array/xorBy.mjs'; -export { xorWith } from './array/xorWith.mjs'; -export { zip } from './array/zip.mjs'; -export { zipObject } from './array/zipObject.mjs'; -export { zipObjectDeep } from './array/zipObjectDeep.mjs'; -export { zipWith } from './array/zipWith.mjs'; -export { after } from './function/after.mjs'; -export { ary } from './function/ary.mjs'; -export { attempt } from './function/attempt.mjs'; -export { before } from './function/before.mjs'; -export { bind } from './function/bind.mjs'; -export { bindKey } from './function/bindKey.mjs'; -export { curry } from './function/curry.mjs'; -export { curryRight } from './function/curryRight.mjs'; -export { debounce } from './function/debounce.mjs'; -export { defer } from './function/defer.mjs'; -export { delay } from './function/delay.mjs'; -export { flip } from './function/flip.mjs'; -export { flow } from './function/flow.mjs'; -export { flowRight } from './function/flowRight.mjs'; -export { memoize } from './function/memoize.mjs'; -export { negate } from './function/negate.mjs'; -export { nthArg } from './function/nthArg.mjs'; -export { once } from './function/once.mjs'; -export { overArgs } from './function/overArgs.mjs'; -export { partial } from './function/partial.mjs'; -export { partialRight } from './function/partialRight.mjs'; -export { rearg } from './function/rearg.mjs'; -export { rest } from './function/rest.mjs'; -export { spread } from './function/spread.mjs'; -export { throttle } from './function/throttle.mjs'; -export { unary } from './function/unary.mjs'; -export { wrap } from './function/wrap.mjs'; -export { add } from './math/add.mjs'; -export { ceil } from './math/ceil.mjs'; -export { clamp } from './math/clamp.mjs'; -export { divide } from './math/divide.mjs'; -export { floor } from './math/floor.mjs'; -export { inRange } from './math/inRange.mjs'; -export { max } from './math/max.mjs'; -export { maxBy } from './math/maxBy.mjs'; -export { mean } from './math/mean.mjs'; -export { meanBy } from './math/meanBy.mjs'; -export { min } from './math/min.mjs'; -export { minBy } from './math/minBy.mjs'; -export { multiply } from './math/multiply.mjs'; -export { parseInt } from './math/parseInt.mjs'; -export { random } from './math/random.mjs'; -export { range } from './math/range.mjs'; -export { rangeRight } from './math/rangeRight.mjs'; -export { round } from './math/round.mjs'; -export { subtract } from './math/subtract.mjs'; -export { sum } from './math/sum.mjs'; -export { sumBy } from './math/sumBy.mjs'; -export { isEqual } from '../predicate/isEqual.mjs'; -export { identity } from './function/identity.mjs'; -export { noop } from './function/noop.mjs'; -export { assign } from './object/assign.mjs'; -export { assignIn, assignIn as extend } from './object/assignIn.mjs'; -export { assignInWith, assignInWith as extendWith } from './object/assignInWith.mjs'; -export { assignWith } from './object/assignWith.mjs'; -export { at } from './object/at.mjs'; -export { clone } from './object/clone.mjs'; -export { cloneDeep } from './object/cloneDeep.mjs'; -export { cloneDeepWith } from './object/cloneDeepWith.mjs'; -export { cloneWith } from './object/cloneWith.mjs'; -export { create } from './object/create.mjs'; -export { defaults } from './object/defaults.mjs'; -export { defaultsDeep } from './object/defaultsDeep.mjs'; -export { findKey } from './object/findKey.mjs'; -export { findLastKey } from './object/findLastKey.mjs'; -export { forIn } from './object/forIn.mjs'; -export { forInRight } from './object/forInRight.mjs'; -export { forOwn } from './object/forOwn.mjs'; -export { forOwnRight } from './object/forOwnRight.mjs'; -export { fromPairs } from './object/fromPairs.mjs'; -export { functions } from './object/functions.mjs'; -export { functionsIn } from './object/functionsIn.mjs'; -export { get } from './object/get.mjs'; -export { has } from './object/has.mjs'; -export { hasIn } from './object/hasIn.mjs'; -export { invert } from './object/invert.mjs'; -export { invertBy } from './object/invertBy.mjs'; -export { keys } from './object/keys.mjs'; -export { keysIn } from './object/keysIn.mjs'; -export { mapKeys } from './object/mapKeys.mjs'; -export { mapValues } from './object/mapValues.mjs'; -export { merge } from './object/merge.mjs'; -export { mergeWith } from './object/mergeWith.mjs'; -export { omit } from './object/omit.mjs'; -export { omitBy } from './object/omitBy.mjs'; -export { pick } from './object/pick.mjs'; -export { pickBy } from './object/pickBy.mjs'; -export { property } from './object/property.mjs'; -export { propertyOf } from './object/propertyOf.mjs'; -export { result } from './object/result.mjs'; -export { set } from './object/set.mjs'; -export { setWith } from './object/setWith.mjs'; -export { toDefaulted } from './object/toDefaulted.mjs'; -export { toPairs } from './object/toPairs.mjs'; -export { toPairsIn } from './object/toPairsIn.mjs'; -export { transform } from './object/transform.mjs'; -export { unset } from './object/unset.mjs'; -export { update } from './object/update.mjs'; -export { updateWith } from './object/updateWith.mjs'; -export { values } from './object/values.mjs'; -export { valuesIn } from './object/valuesIn.mjs'; -export { isFunction } from './predicate/isFunction.mjs'; -export { isLength } from './predicate/isLength.mjs'; -export { isMatchWith } from './predicate/isMatchWith.mjs'; -export { isNative } from './predicate/isNative.mjs'; -export { isNull } from './predicate/isNull.mjs'; -export { isUndefined } from './predicate/isUndefined.mjs'; -export { conforms } from './predicate/conforms.mjs'; -export { conformsTo } from './predicate/conformsTo.mjs'; -export { isArguments } from './predicate/isArguments.mjs'; -export { isArray } from './predicate/isArray.mjs'; -export { isArrayBuffer } from './predicate/isArrayBuffer.mjs'; -export { isArrayLike } from './predicate/isArrayLike.mjs'; -export { isArrayLikeObject } from './predicate/isArrayLikeObject.mjs'; -export { isBoolean } from './predicate/isBoolean.mjs'; -export { isBuffer } from './predicate/isBuffer.mjs'; -export { isDate } from './predicate/isDate.mjs'; -export { isElement } from './predicate/isElement.mjs'; -export { isEmpty } from './predicate/isEmpty.mjs'; -export { isEqualWith } from './predicate/isEqualWith.mjs'; -export { isError } from './predicate/isError.mjs'; -export { isFinite } from './predicate/isFinite.mjs'; -export { isInteger } from './predicate/isInteger.mjs'; -export { isMap } from './predicate/isMap.mjs'; -export { isMatch } from './predicate/isMatch.mjs'; -export { isNaN } from './predicate/isNaN.mjs'; -export { isNil } from './predicate/isNil.mjs'; -export { isNumber } from './predicate/isNumber.mjs'; -export { isObject } from './predicate/isObject.mjs'; -export { isObjectLike } from './predicate/isObjectLike.mjs'; -export { isPlainObject } from './predicate/isPlainObject.mjs'; -export { isRegExp } from './predicate/isRegExp.mjs'; -export { isSafeInteger } from './predicate/isSafeInteger.mjs'; -export { isSet } from './predicate/isSet.mjs'; -export { isString } from './predicate/isString.mjs'; -export { isSymbol } from './predicate/isSymbol.mjs'; -export { isTypedArray } from './predicate/isTypedArray.mjs'; -export { isWeakMap } from './predicate/isWeakMap.mjs'; -export { isWeakSet } from './predicate/isWeakSet.mjs'; -export { matches } from './predicate/matches.mjs'; -export { matchesProperty } from './predicate/matchesProperty.mjs'; -export { capitalize } from './string/capitalize.mjs'; -export { bindAll } from './util/bindAll.mjs'; -export { camelCase } from './string/camelCase.mjs'; -export { deburr } from './string/deburr.mjs'; -export { endsWith } from './string/endsWith.mjs'; -export { escape } from './string/escape.mjs'; -export { escapeRegExp } from './string/escapeRegExp.mjs'; -export { kebabCase } from './string/kebabCase.mjs'; -export { lowerCase } from './string/lowerCase.mjs'; -export { lowerFirst } from './string/lowerFirst.mjs'; -export { pad } from './string/pad.mjs'; -export { padEnd } from './string/padEnd.mjs'; -export { padStart } from './string/padStart.mjs'; -export { repeat } from './string/repeat.mjs'; -export { replace } from './string/replace.mjs'; -export { snakeCase } from './string/snakeCase.mjs'; -export { split } from './string/split.mjs'; -export { startCase } from './string/startCase.mjs'; -export { startsWith } from './string/startsWith.mjs'; -export { template, templateSettings } from './string/template.mjs'; -export { toLower } from './string/toLower.mjs'; -export { toUpper } from './string/toUpper.mjs'; -export { trim } from './string/trim.mjs'; -export { trimEnd } from './string/trimEnd.mjs'; -export { trimStart } from './string/trimStart.mjs'; -export { truncate } from './string/truncate.mjs'; -export { unescape } from './string/unescape.mjs'; -export { upperCase } from './string/upperCase.mjs'; -export { upperFirst } from './string/upperFirst.mjs'; -export { words } from './string/words.mjs'; -export { cond } from './util/cond.mjs'; -export { constant } from './util/constant.mjs'; -export { defaultTo } from './util/defaultTo.mjs'; -export { isEqualsSameValueZero as eq } from '../_internal/isEqualsSameValueZero.mjs'; -export { gt } from './util/gt.mjs'; -export { gte } from './util/gte.mjs'; -export { invoke } from './util/invoke.mjs'; -export { iteratee } from './util/iteratee.mjs'; -export { lt } from './util/lt.mjs'; -export { lte } from './util/lte.mjs'; -export { method } from './util/method.mjs'; -export { methodOf } from './util/methodOf.mjs'; -export { now } from './util/now.mjs'; -export { over } from './util/over.mjs'; -export { overEvery } from './util/overEvery.mjs'; -export { overSome } from './util/overSome.mjs'; -export { stubArray } from './util/stubArray.mjs'; -export { stubFalse } from './util/stubFalse.mjs'; -export { stubObject } from './util/stubObject.mjs'; -export { stubString } from './util/stubString.mjs'; -export { stubTrue } from './util/stubTrue.mjs'; -export { times } from './util/times.mjs'; -export { toArray } from './util/toArray.mjs'; -export { toFinite } from './util/toFinite.mjs'; -export { toInteger } from './util/toInteger.mjs'; -export { toLength } from './util/toLength.mjs'; -export { toNumber } from './util/toNumber.mjs'; -export { toPath } from './util/toPath.mjs'; -export { toPlainObject } from './util/toPlainObject.mjs'; -export { toSafeInteger } from './util/toSafeInteger.mjs'; -export { toString } from './util/toString.mjs'; -export { uniqueId } from './util/uniqueId.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/after.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/after.d.mts deleted file mode 100644 index 97ff596..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/after.d.mts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it's called `n` or more times. - * - * @template TFunc - The type of the function to be invoked. - * @param {number} n - The number of calls before `func` is invoked. - * @param {TFunc} func - The function to restrict. - * @returns {TFunc} Returns the new restricted function. - * @throws {TypeError} - If `func` is not a function. - * - * @example - * const saves = ['profile', 'settings']; - * const done = after(saves.length, () => { - * console.log('done saving!'); - * }); - * - * saves.forEach(type => { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => Logs 'done saving!' after the two async saves have completed. - */ -declare function after any>(n: number, func: TFunc): TFunc; - -export { after }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/after.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/after.d.ts deleted file mode 100644 index 97ff596..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/after.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it's called `n` or more times. - * - * @template TFunc - The type of the function to be invoked. - * @param {number} n - The number of calls before `func` is invoked. - * @param {TFunc} func - The function to restrict. - * @returns {TFunc} Returns the new restricted function. - * @throws {TypeError} - If `func` is not a function. - * - * @example - * const saves = ['profile', 'settings']; - * const done = after(saves.length, () => { - * console.log('done saving!'); - * }); - * - * saves.forEach(type => { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => Logs 'done saving!' after the two async saves have completed. - */ -declare function after any>(n: number, func: TFunc): TFunc; - -export { after }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/after.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/after.js deleted file mode 100644 index 3e22b85..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/after.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toInteger = require('../util/toInteger.js'); - -function after(n, func) { - if (typeof func !== 'function') { - throw new TypeError('Expected a function'); - } - n = toInteger.toInteger(n); - return function (...args) { - if (--n < 1) { - return func.apply(this, args); - } - }; -} - -exports.after = after; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/after.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/after.mjs deleted file mode 100644 index 99c727b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/after.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import { toInteger } from '../util/toInteger.mjs'; - -function after(n, func) { - if (typeof func !== 'function') { - throw new TypeError('Expected a function'); - } - n = toInteger(n); - return function (...args) { - if (--n < 1) { - return func.apply(this, args); - } - }; -} - -export { after }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/ary.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/ary.d.mts deleted file mode 100644 index f2b0e09..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/ary.d.mts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Creates a function that invokes func, with up to `n` arguments, ignoring any additional arguments. - * If `n` is not provided, it defaults to the function's length. - * - * @param {Function} func - The function to cap arguments for. - * @param {number} [n] - The arity cap. Defaults to func.length. - * @returns {Function} Returns the new capped function. - * - * @example - * function fn(a: number, b: number, c: number) { - * return Array.from(arguments); - * } - * - * // Cap at 2 arguments - * const capped = ary(fn, 2); - * capped(1, 2, 3); // [1, 2] - * - * // Default to function length - * const defaultCap = ary(fn); - * defaultCap(1, 2, 3); // [1, 2, 3] - */ -declare function ary(func: (...args: any[]) => any, n?: number): (...args: any[]) => any; - -export { ary }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/ary.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/ary.d.ts deleted file mode 100644 index f2b0e09..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/ary.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Creates a function that invokes func, with up to `n` arguments, ignoring any additional arguments. - * If `n` is not provided, it defaults to the function's length. - * - * @param {Function} func - The function to cap arguments for. - * @param {number} [n] - The arity cap. Defaults to func.length. - * @returns {Function} Returns the new capped function. - * - * @example - * function fn(a: number, b: number, c: number) { - * return Array.from(arguments); - * } - * - * // Cap at 2 arguments - * const capped = ary(fn, 2); - * capped(1, 2, 3); // [1, 2] - * - * // Default to function length - * const defaultCap = ary(fn); - * defaultCap(1, 2, 3); // [1, 2, 3] - */ -declare function ary(func: (...args: any[]) => any, n?: number): (...args: any[]) => any; - -export { ary }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/ary.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/ary.js deleted file mode 100644 index 872a929..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/ary.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const ary$1 = require('../../function/ary.js'); - -function ary(func, n = func.length, guard) { - if (guard) { - n = func.length; - } - if (Number.isNaN(n) || n < 0) { - n = 0; - } - return ary$1.ary(func, n); -} - -exports.ary = ary; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/ary.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/ary.mjs deleted file mode 100644 index 063dd15..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/ary.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import { ary as ary$1 } from '../../function/ary.mjs'; - -function ary(func, n = func.length, guard) { - if (guard) { - n = func.length; - } - if (Number.isNaN(n) || n < 0) { - n = 0; - } - return ary$1(func, n); -} - -export { ary }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/attempt.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/attempt.d.mts deleted file mode 100644 index a924176..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/attempt.d.mts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Attempts to execute a function with the provided arguments. - * If the function throws an error, it catches the error and returns it. - * If the caught error is not an instance of Error, it wraps it in a new Error. - * - * @param {(...args: any[]) => R} func - The function to be executed. - * @param {...any[]} args - The arguments to pass to the function. - * @returns {R | Error} The return value of the function if successful, or an Error if an exception is thrown. - * - * @template R - The type of the function return value. - * - * @example - * // Example 1: Successful execution - * const result = attempt((x, y) => x + y, 2, 3); - * console.log(result); // Output: 5 - * - * @example - * // Example 2: Function throws an error - * const errorResult = attempt(() => { - * throw new Error("Something went wrong"); - * }); - * console.log(errorResult); // Output: Error: Something went wrong - * - * @example - * // Example 3: Non-Error thrown - * const nonErrorResult = attempt(() => { - * throw "This is a string error"; - * }); - * console.log(nonErrorResult); // Output: Error: This is a string error - */ -declare function attempt(func: (...args: any[]) => R, ...args: any[]): R | Error; - -export { attempt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/attempt.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/attempt.d.ts deleted file mode 100644 index a924176..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/attempt.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Attempts to execute a function with the provided arguments. - * If the function throws an error, it catches the error and returns it. - * If the caught error is not an instance of Error, it wraps it in a new Error. - * - * @param {(...args: any[]) => R} func - The function to be executed. - * @param {...any[]} args - The arguments to pass to the function. - * @returns {R | Error} The return value of the function if successful, or an Error if an exception is thrown. - * - * @template R - The type of the function return value. - * - * @example - * // Example 1: Successful execution - * const result = attempt((x, y) => x + y, 2, 3); - * console.log(result); // Output: 5 - * - * @example - * // Example 2: Function throws an error - * const errorResult = attempt(() => { - * throw new Error("Something went wrong"); - * }); - * console.log(errorResult); // Output: Error: Something went wrong - * - * @example - * // Example 3: Non-Error thrown - * const nonErrorResult = attempt(() => { - * throw "This is a string error"; - * }); - * console.log(nonErrorResult); // Output: Error: This is a string error - */ -declare function attempt(func: (...args: any[]) => R, ...args: any[]): R | Error; - -export { attempt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/attempt.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/attempt.js deleted file mode 100644 index 2305479..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/attempt.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function attempt(func, ...args) { - try { - return func(...args); - } - catch (e) { - return e instanceof Error ? e : new Error(e); - } -} - -exports.attempt = attempt; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/attempt.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/attempt.mjs deleted file mode 100644 index 20d1a1d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/attempt.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function attempt(func, ...args) { - try { - return func(...args); - } - catch (e) { - return e instanceof Error ? e : new Error(e); - } -} - -export { attempt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/before.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/before.d.mts deleted file mode 100644 index 144569f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/before.d.mts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @template F - The type of the function to be invoked. - * @param {number} n - The number of times the returned function is allowed to call `func` before stopping. - * - If `n` is 0, `func` will never be called. - * - If `n` is a positive integer, `func` will be called up to `n-1` times. - * @param {F} func - The function to be called with the limit applied. - * @returns {(...args: Parameters) => ReturnType } - A new function that: - * - Tracks the number of calls. - * - Invokes `func` until the `n-1`-th call. - * - Returns last result of `func`, if `n` is reached. - * @throws {TypeError} - If `func` is not a function. - * @example - * let count = 0; - * const before3 = before(3, () => ++count); - * - * before3(); // => 1 - * before3(); // => 2 - * before3(); // => 2 - */ -declare function before any>(n: number, func: F): F; - -export { before }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/before.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/before.d.ts deleted file mode 100644 index 144569f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/before.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @template F - The type of the function to be invoked. - * @param {number} n - The number of times the returned function is allowed to call `func` before stopping. - * - If `n` is 0, `func` will never be called. - * - If `n` is a positive integer, `func` will be called up to `n-1` times. - * @param {F} func - The function to be called with the limit applied. - * @returns {(...args: Parameters) => ReturnType } - A new function that: - * - Tracks the number of calls. - * - Invokes `func` until the `n-1`-th call. - * - Returns last result of `func`, if `n` is reached. - * @throws {TypeError} - If `func` is not a function. - * @example - * let count = 0; - * const before3 = before(3, () => ++count); - * - * before3(); // => 1 - * before3(); // => 2 - * before3(); // => 2 - */ -declare function before any>(n: number, func: F): F; - -export { before }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/before.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/before.js deleted file mode 100644 index eccedfd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/before.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toInteger = require('../util/toInteger.js'); - -function before(n, func) { - if (typeof func !== 'function') { - throw new TypeError('Expected a function'); - } - let result; - n = toInteger.toInteger(n); - return function (...args) { - if (--n > 0) { - result = func.apply(this, args); - } - if (n <= 1 && func) { - func = undefined; - } - return result; - }; -} - -exports.before = before; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/before.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/before.mjs deleted file mode 100644 index 5479015..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/before.mjs +++ /dev/null @@ -1,20 +0,0 @@ -import { toInteger } from '../util/toInteger.mjs'; - -function before(n, func) { - if (typeof func !== 'function') { - throw new TypeError('Expected a function'); - } - let result; - n = toInteger(n); - return function (...args) { - if (--n > 0) { - result = func.apply(this, args); - } - if (n <= 1 && func) { - func = undefined; - } - return result; - }; -} - -export { before }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bind.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bind.d.mts deleted file mode 100644 index 42b076f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bind.d.mts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Creates a function that invokes `func` with the `this` binding of `thisArg` and `partials` prepended to the arguments it receives. - * - * The `bind.placeholder` value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: Unlike native `Function#bind`, this method doesn't set the `length` property of bound functions. - * - * @param {(...args: any[]) => any} func - The function to bind. - * @param {any} thisObj - The `this` binding of `func`. - * @param {...any} partialArgs - The arguments to be partially applied. - * @returns {(...args: any[]) => any} - Returns the new bound function. - * - * @example - * function greet(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * const object = { user: 'fred' }; - * let bound = bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * bound = bind(greet, object, bind.placeholder, '!'); - * bound('hi'); - * // => 'hi fred!' - */ -declare function bind(func: (...args: any[]) => any, thisObj: any, ...partialArgs: any[]): (...args: any[]) => any; -declare namespace bind { - var placeholder: typeof bindPlaceholder; -} -declare const bindPlaceholder: unique symbol; - -export { bind }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bind.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bind.d.ts deleted file mode 100644 index 42b076f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bind.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Creates a function that invokes `func` with the `this` binding of `thisArg` and `partials` prepended to the arguments it receives. - * - * The `bind.placeholder` value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: Unlike native `Function#bind`, this method doesn't set the `length` property of bound functions. - * - * @param {(...args: any[]) => any} func - The function to bind. - * @param {any} thisObj - The `this` binding of `func`. - * @param {...any} partialArgs - The arguments to be partially applied. - * @returns {(...args: any[]) => any} - Returns the new bound function. - * - * @example - * function greet(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * const object = { user: 'fred' }; - * let bound = bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * bound = bind(greet, object, bind.placeholder, '!'); - * bound('hi'); - * // => 'hi fred!' - */ -declare function bind(func: (...args: any[]) => any, thisObj: any, ...partialArgs: any[]): (...args: any[]) => any; -declare namespace bind { - var placeholder: typeof bindPlaceholder; -} -declare const bindPlaceholder: unique symbol; - -export { bind }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bind.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bind.js deleted file mode 100644 index e2cce97..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bind.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function bind(func, thisObj, ...partialArgs) { - const bound = function (...providedArgs) { - const args = []; - let startIndex = 0; - for (let i = 0; i < partialArgs.length; i++) { - const arg = partialArgs[i]; - if (arg === bind.placeholder) { - args.push(providedArgs[startIndex++]); - } - else { - args.push(arg); - } - } - for (let i = startIndex; i < providedArgs.length; i++) { - args.push(providedArgs[i]); - } - if (this instanceof bound) { - return new func(...args); - } - return func.apply(thisObj, args); - }; - return bound; -} -const bindPlaceholder = Symbol('bind.placeholder'); -bind.placeholder = bindPlaceholder; - -exports.bind = bind; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bind.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bind.mjs deleted file mode 100644 index 4889a57..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bind.mjs +++ /dev/null @@ -1,27 +0,0 @@ -function bind(func, thisObj, ...partialArgs) { - const bound = function (...providedArgs) { - const args = []; - let startIndex = 0; - for (let i = 0; i < partialArgs.length; i++) { - const arg = partialArgs[i]; - if (arg === bind.placeholder) { - args.push(providedArgs[startIndex++]); - } - else { - args.push(arg); - } - } - for (let i = startIndex; i < providedArgs.length; i++) { - args.push(providedArgs[i]); - } - if (this instanceof bound) { - return new func(...args); - } - return func.apply(thisObj, args); - }; - return bound; -} -const bindPlaceholder = Symbol('bind.placeholder'); -bind.placeholder = bindPlaceholder; - -export { bind }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bindKey.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bindKey.d.mts deleted file mode 100644 index 437fe2c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bindKey.d.mts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Creates a function that invokes the method at `object[key]` with `partialArgs` prepended to the arguments it receives. - * - * This method differs from `bind` by allowing bound functions to reference methods that may be redefined or don't yet exist. - * - * The `bindKey.placeholder` value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * @template T - The type of the object to bind. - * @template K - The type of the key to bind. - * @param {T} object - The object to invoke the method on. - * @param {K} key - The key of the method. - * @param {...any} partialArgs - The arguments to be partially applied. - * @returns {T[K] extends (...args: any[]) => any ? (...args: any[]) => ReturnType : never} - Returns the new bound function. - * - * @example - * const object = { - * user: 'fred', - * greet: function (greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * }, - * }; - * - * let bound = bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * object.greet = function (greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; - * - * bound('!'); - * // => 'hiya fred!' - * - * // Bound with placeholders. - * bound = bindKey(object, 'greet', bindKey.placeholder, '!'); - * bound('hi'); - * // => 'hiya fred!' - */ -declare function bindKey(object: object, key: string, ...partialArgs: any[]): (...args: any[]) => any; -declare namespace bindKey { - var placeholder: typeof bindKeyPlaceholder; -} -declare const bindKeyPlaceholder: unique symbol; - -export { bindKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bindKey.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bindKey.d.ts deleted file mode 100644 index 437fe2c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bindKey.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Creates a function that invokes the method at `object[key]` with `partialArgs` prepended to the arguments it receives. - * - * This method differs from `bind` by allowing bound functions to reference methods that may be redefined or don't yet exist. - * - * The `bindKey.placeholder` value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * @template T - The type of the object to bind. - * @template K - The type of the key to bind. - * @param {T} object - The object to invoke the method on. - * @param {K} key - The key of the method. - * @param {...any} partialArgs - The arguments to be partially applied. - * @returns {T[K] extends (...args: any[]) => any ? (...args: any[]) => ReturnType : never} - Returns the new bound function. - * - * @example - * const object = { - * user: 'fred', - * greet: function (greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * }, - * }; - * - * let bound = bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * object.greet = function (greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; - * - * bound('!'); - * // => 'hiya fred!' - * - * // Bound with placeholders. - * bound = bindKey(object, 'greet', bindKey.placeholder, '!'); - * bound('hi'); - * // => 'hiya fred!' - */ -declare function bindKey(object: object, key: string, ...partialArgs: any[]): (...args: any[]) => any; -declare namespace bindKey { - var placeholder: typeof bindKeyPlaceholder; -} -declare const bindKeyPlaceholder: unique symbol; - -export { bindKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bindKey.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bindKey.js deleted file mode 100644 index 4836e7e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bindKey.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function bindKey(object, key, ...partialArgs) { - const bound = function (...providedArgs) { - const args = []; - let startIndex = 0; - for (let i = 0; i < partialArgs.length; i++) { - const arg = partialArgs[i]; - if (arg === bindKey.placeholder) { - args.push(providedArgs[startIndex++]); - } - else { - args.push(arg); - } - } - for (let i = startIndex; i < providedArgs.length; i++) { - args.push(providedArgs[i]); - } - if (this instanceof bound) { - return new object[key](...args); - } - return object[key].apply(object, args); - }; - return bound; -} -const bindKeyPlaceholder = Symbol('bindKey.placeholder'); -bindKey.placeholder = bindKeyPlaceholder; - -exports.bindKey = bindKey; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bindKey.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bindKey.mjs deleted file mode 100644 index 034755f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/bindKey.mjs +++ /dev/null @@ -1,27 +0,0 @@ -function bindKey(object, key, ...partialArgs) { - const bound = function (...providedArgs) { - const args = []; - let startIndex = 0; - for (let i = 0; i < partialArgs.length; i++) { - const arg = partialArgs[i]; - if (arg === bindKey.placeholder) { - args.push(providedArgs[startIndex++]); - } - else { - args.push(arg); - } - } - for (let i = startIndex; i < providedArgs.length; i++) { - args.push(providedArgs[i]); - } - if (this instanceof bound) { - return new object[key](...args); - } - return object[key].apply(object, args); - }; - return bound; -} -const bindKeyPlaceholder = Symbol('bindKey.placeholder'); -bindKey.placeholder = bindKeyPlaceholder; - -export { bindKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curry.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curry.d.mts deleted file mode 100644 index 5338f2c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curry.d.mts +++ /dev/null @@ -1,154 +0,0 @@ -type __ = typeof curryPlaceholder; -interface CurriedFunction1 { - (): CurriedFunction1; - (t1: T1): R; -} -interface CurriedFunction2 { - (): CurriedFunction2; - (t1: T1): CurriedFunction1; - (t1: __, t2: T2): CurriedFunction1; - (t1: T1, t2: T2): R; -} -interface CurriedFunction3 { - (): CurriedFunction3; - (t1: T1): CurriedFunction2; - (t1: __, t2: T2): CurriedFunction2; - (t1: T1, t2: T2): CurriedFunction1; - (t1: __, t2: __, t3: T3): CurriedFunction2; - (t1: T1, t2: __, t3: T3): CurriedFunction1; - (t1: __, t2: T2, t3: T3): CurriedFunction1; - (t1: T1, t2: T2, t3: T3): R; -} -interface CurriedFunction4 { - (): CurriedFunction4; - (t1: T1): CurriedFunction3; - (t1: __, t2: T2): CurriedFunction3; - (t1: T1, t2: T2): CurriedFunction2; - (t1: __, t2: __, t3: T3): CurriedFunction3; - (t1: __, t2: __, t3: T3): CurriedFunction2; - (t1: __, t2: T2, t3: T3): CurriedFunction2; - (t1: T1, t2: T2, t3: T3): CurriedFunction1; - (t1: __, t2: __, t3: __, t4: T4): CurriedFunction3; - (t1: T1, t2: __, t3: __, t4: T4): CurriedFunction2; - (t1: __, t2: T2, t3: __, t4: T4): CurriedFunction2; - (t1: __, t2: __, t3: T3, t4: T4): CurriedFunction2; - (t1: T1, t2: T2, t3: __, t4: T4): CurriedFunction1; - (t1: T1, t2: __, t3: T3, t4: T4): CurriedFunction1; - (t1: __, t2: T2, t3: T3, t4: T4): CurriedFunction1; - (t1: T1, t2: T2, t3: T3, t4: T4): R; -} -interface CurriedFunction5 { - (): CurriedFunction5; - (t1: T1): CurriedFunction4; - (t1: __, t2: T2): CurriedFunction4; - (t1: T1, t2: T2): CurriedFunction3; - (t1: __, t2: __, t3: T3): CurriedFunction4; - (t1: T1, t2: __, t3: T3): CurriedFunction3; - (t1: __, t2: T2, t3: T3): CurriedFunction3; - (t1: T1, t2: T2, t3: T3): CurriedFunction2; - (t1: __, t2: __, t3: __, t4: T4): CurriedFunction4; - (t1: T1, t2: __, t3: __, t4: T4): CurriedFunction3; - (t1: __, t2: T2, t3: __, t4: T4): CurriedFunction3; - (t1: __, t2: __, t3: T3, t4: T4): CurriedFunction3; - (t1: T1, t2: T2, t3: __, t4: T4): CurriedFunction2; - (t1: T1, t2: __, t3: T3, t4: T4): CurriedFunction2; - (t1: __, t2: T2, t3: T3, t4: T4): CurriedFunction2; - (t1: T1, t2: T2, t3: T3, t4: T4): CurriedFunction1; - (t1: __, t2: __, t3: __, t4: __, t5: T5): CurriedFunction4; - (t1: T1, t2: __, t3: __, t4: __, t5: T5): CurriedFunction3; - (t1: __, t2: T2, t3: __, t4: __, t5: T5): CurriedFunction3; - (t1: __, t2: __, t3: T3, t4: __, t5: T5): CurriedFunction3; - (t1: __, t2: __, t3: __, t4: T4, t5: T5): CurriedFunction3; - (t1: T1, t2: T2, t3: __, t4: __, t5: T5): CurriedFunction2; - (t1: T1, t2: __, t3: T3, t4: __, t5: T5): CurriedFunction2; - (t1: T1, t2: __, t3: __, t4: T4, t5: T5): CurriedFunction2; - (t1: __, t2: T2, t3: T3, t4: __, t5: T5): CurriedFunction2; - (t1: __, t2: T2, t3: __, t4: T4, t5: T5): CurriedFunction2; - (t1: __, t2: __, t3: T3, t4: T4, t5: T5): CurriedFunction2; - (t1: T1, t2: T2, t3: T3, t4: __, t5: T5): CurriedFunction1; - (t1: T1, t2: T2, t3: __, t4: T4, t5: T5): CurriedFunction1; - (t1: T1, t2: __, t3: T3, t4: T4, t5: T5): CurriedFunction1; - (t1: __, t2: T2, t3: T3, t4: T4, t5: T5): CurriedFunction1; - (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): R; -} -/** - * Creates a curried function that accepts a single argument. - * @param {(t1: T1) => R} func - The function to curry. - * @param {number=func.length} arity - The arity of func. - * @returns {CurriedFunction1} - Returns the new curried function. - * @example - * const greet = (name: string) => `Hello ${name}`; - * const curriedGreet = curry(greet); - * curriedGreet('John'); // => 'Hello John' - */ -declare function curry(func: (t1: T1) => R, arity?: number): CurriedFunction1; -/** - * Creates a curried function that accepts two arguments. - * @param {(t1: T1, t2: T2) => R} func - The function to curry. - * @param {number=func.length} arity - The arity of func. - * @returns {CurriedFunction2} - Returns the new curried function. - * @example - * const add = (a: number, b: number) => a + b; - * const curriedAdd = curry(add); - * curriedAdd(1)(2); // => 3 - * curriedAdd(1, 2); // => 3 - */ -declare function curry(func: (t1: T1, t2: T2) => R, arity?: number): CurriedFunction2; -/** - * Creates a curried function that accepts three arguments. - * @param {(t1: T1, t2: T2, t3: T3) => R} func - The function to curry. - * @param {number=func.length} arity - The arity of func. - * @returns {CurriedFunction3} - Returns the new curried function. - * @example - * const volume = (l: number, w: number, h: number) => l * w * h; - * const curriedVolume = curry(volume); - * curriedVolume(2)(3)(4); // => 24 - * curriedVolume(2, 3)(4); // => 24 - * curriedVolume(2, 3, 4); // => 24 - */ -declare function curry(func: (t1: T1, t2: T2, t3: T3) => R, arity?: number): CurriedFunction3; -/** - * Creates a curried function that accepts four arguments. - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func - The function to curry. - * @param {number=func.length} arity - The arity of func. - * @returns {CurriedFunction4} - Returns the new curried function. - * @example - * const fn = (a: number, b: number, c: number, d: number) => a + b + c + d; - * const curriedFn = curry(fn); - * curriedFn(1)(2)(3)(4); // => 10 - * curriedFn(1, 2)(3, 4); // => 10 - * curriedFn(1, 2, 3, 4); // => 10 - */ -declare function curry(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arity?: number): CurriedFunction4; -/** - * Creates a curried function that accepts five arguments. - * @param {(t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R} func - The function to curry. - * @param {number=func.length} arity - The arity of func. - * @returns {CurriedFunction5} - Returns the new curried function. - * @example - * const fn = (a: number, b: number, c: number, d: number, e: number) => a + b + c + d + e; - * const curriedFn = curry(fn); - * curriedFn(1)(2)(3)(4)(5); // => 15 - * curriedFn(1, 2)(3, 4)(5); // => 15 - * curriedFn(1, 2, 3, 4, 5); // => 15 - */ -declare function curry(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R, arity?: number): CurriedFunction5; -/** - * Creates a curried function that accepts any number of arguments. - * @param {(...args: any[]) => any} func - The function to curry. - * @param {number=func.length} arity - The arity of func. - * @returns {(...args: any[]) => any} - Returns the new curried function. - * @example - * const sum = (...args: number[]) => args.reduce((a, b) => a + b, 0); - * const curriedSum = curry(sum); - * curriedSum(1, 2, 3); // => 6 - * curriedSum(1)(2, 3); // => 6 - * curriedSum(1)(2)(3); // => 6 - */ -declare function curry(func: (...args: any[]) => any, arity?: number): (...args: any[]) => any; -declare namespace curry { - var placeholder: typeof curryPlaceholder; -} -declare const curryPlaceholder: unique symbol; - -export { curry }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curry.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curry.d.ts deleted file mode 100644 index 5338f2c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curry.d.ts +++ /dev/null @@ -1,154 +0,0 @@ -type __ = typeof curryPlaceholder; -interface CurriedFunction1 { - (): CurriedFunction1; - (t1: T1): R; -} -interface CurriedFunction2 { - (): CurriedFunction2; - (t1: T1): CurriedFunction1; - (t1: __, t2: T2): CurriedFunction1; - (t1: T1, t2: T2): R; -} -interface CurriedFunction3 { - (): CurriedFunction3; - (t1: T1): CurriedFunction2; - (t1: __, t2: T2): CurriedFunction2; - (t1: T1, t2: T2): CurriedFunction1; - (t1: __, t2: __, t3: T3): CurriedFunction2; - (t1: T1, t2: __, t3: T3): CurriedFunction1; - (t1: __, t2: T2, t3: T3): CurriedFunction1; - (t1: T1, t2: T2, t3: T3): R; -} -interface CurriedFunction4 { - (): CurriedFunction4; - (t1: T1): CurriedFunction3; - (t1: __, t2: T2): CurriedFunction3; - (t1: T1, t2: T2): CurriedFunction2; - (t1: __, t2: __, t3: T3): CurriedFunction3; - (t1: __, t2: __, t3: T3): CurriedFunction2; - (t1: __, t2: T2, t3: T3): CurriedFunction2; - (t1: T1, t2: T2, t3: T3): CurriedFunction1; - (t1: __, t2: __, t3: __, t4: T4): CurriedFunction3; - (t1: T1, t2: __, t3: __, t4: T4): CurriedFunction2; - (t1: __, t2: T2, t3: __, t4: T4): CurriedFunction2; - (t1: __, t2: __, t3: T3, t4: T4): CurriedFunction2; - (t1: T1, t2: T2, t3: __, t4: T4): CurriedFunction1; - (t1: T1, t2: __, t3: T3, t4: T4): CurriedFunction1; - (t1: __, t2: T2, t3: T3, t4: T4): CurriedFunction1; - (t1: T1, t2: T2, t3: T3, t4: T4): R; -} -interface CurriedFunction5 { - (): CurriedFunction5; - (t1: T1): CurriedFunction4; - (t1: __, t2: T2): CurriedFunction4; - (t1: T1, t2: T2): CurriedFunction3; - (t1: __, t2: __, t3: T3): CurriedFunction4; - (t1: T1, t2: __, t3: T3): CurriedFunction3; - (t1: __, t2: T2, t3: T3): CurriedFunction3; - (t1: T1, t2: T2, t3: T3): CurriedFunction2; - (t1: __, t2: __, t3: __, t4: T4): CurriedFunction4; - (t1: T1, t2: __, t3: __, t4: T4): CurriedFunction3; - (t1: __, t2: T2, t3: __, t4: T4): CurriedFunction3; - (t1: __, t2: __, t3: T3, t4: T4): CurriedFunction3; - (t1: T1, t2: T2, t3: __, t4: T4): CurriedFunction2; - (t1: T1, t2: __, t3: T3, t4: T4): CurriedFunction2; - (t1: __, t2: T2, t3: T3, t4: T4): CurriedFunction2; - (t1: T1, t2: T2, t3: T3, t4: T4): CurriedFunction1; - (t1: __, t2: __, t3: __, t4: __, t5: T5): CurriedFunction4; - (t1: T1, t2: __, t3: __, t4: __, t5: T5): CurriedFunction3; - (t1: __, t2: T2, t3: __, t4: __, t5: T5): CurriedFunction3; - (t1: __, t2: __, t3: T3, t4: __, t5: T5): CurriedFunction3; - (t1: __, t2: __, t3: __, t4: T4, t5: T5): CurriedFunction3; - (t1: T1, t2: T2, t3: __, t4: __, t5: T5): CurriedFunction2; - (t1: T1, t2: __, t3: T3, t4: __, t5: T5): CurriedFunction2; - (t1: T1, t2: __, t3: __, t4: T4, t5: T5): CurriedFunction2; - (t1: __, t2: T2, t3: T3, t4: __, t5: T5): CurriedFunction2; - (t1: __, t2: T2, t3: __, t4: T4, t5: T5): CurriedFunction2; - (t1: __, t2: __, t3: T3, t4: T4, t5: T5): CurriedFunction2; - (t1: T1, t2: T2, t3: T3, t4: __, t5: T5): CurriedFunction1; - (t1: T1, t2: T2, t3: __, t4: T4, t5: T5): CurriedFunction1; - (t1: T1, t2: __, t3: T3, t4: T4, t5: T5): CurriedFunction1; - (t1: __, t2: T2, t3: T3, t4: T4, t5: T5): CurriedFunction1; - (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): R; -} -/** - * Creates a curried function that accepts a single argument. - * @param {(t1: T1) => R} func - The function to curry. - * @param {number=func.length} arity - The arity of func. - * @returns {CurriedFunction1} - Returns the new curried function. - * @example - * const greet = (name: string) => `Hello ${name}`; - * const curriedGreet = curry(greet); - * curriedGreet('John'); // => 'Hello John' - */ -declare function curry(func: (t1: T1) => R, arity?: number): CurriedFunction1; -/** - * Creates a curried function that accepts two arguments. - * @param {(t1: T1, t2: T2) => R} func - The function to curry. - * @param {number=func.length} arity - The arity of func. - * @returns {CurriedFunction2} - Returns the new curried function. - * @example - * const add = (a: number, b: number) => a + b; - * const curriedAdd = curry(add); - * curriedAdd(1)(2); // => 3 - * curriedAdd(1, 2); // => 3 - */ -declare function curry(func: (t1: T1, t2: T2) => R, arity?: number): CurriedFunction2; -/** - * Creates a curried function that accepts three arguments. - * @param {(t1: T1, t2: T2, t3: T3) => R} func - The function to curry. - * @param {number=func.length} arity - The arity of func. - * @returns {CurriedFunction3} - Returns the new curried function. - * @example - * const volume = (l: number, w: number, h: number) => l * w * h; - * const curriedVolume = curry(volume); - * curriedVolume(2)(3)(4); // => 24 - * curriedVolume(2, 3)(4); // => 24 - * curriedVolume(2, 3, 4); // => 24 - */ -declare function curry(func: (t1: T1, t2: T2, t3: T3) => R, arity?: number): CurriedFunction3; -/** - * Creates a curried function that accepts four arguments. - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func - The function to curry. - * @param {number=func.length} arity - The arity of func. - * @returns {CurriedFunction4} - Returns the new curried function. - * @example - * const fn = (a: number, b: number, c: number, d: number) => a + b + c + d; - * const curriedFn = curry(fn); - * curriedFn(1)(2)(3)(4); // => 10 - * curriedFn(1, 2)(3, 4); // => 10 - * curriedFn(1, 2, 3, 4); // => 10 - */ -declare function curry(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arity?: number): CurriedFunction4; -/** - * Creates a curried function that accepts five arguments. - * @param {(t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R} func - The function to curry. - * @param {number=func.length} arity - The arity of func. - * @returns {CurriedFunction5} - Returns the new curried function. - * @example - * const fn = (a: number, b: number, c: number, d: number, e: number) => a + b + c + d + e; - * const curriedFn = curry(fn); - * curriedFn(1)(2)(3)(4)(5); // => 15 - * curriedFn(1, 2)(3, 4)(5); // => 15 - * curriedFn(1, 2, 3, 4, 5); // => 15 - */ -declare function curry(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R, arity?: number): CurriedFunction5; -/** - * Creates a curried function that accepts any number of arguments. - * @param {(...args: any[]) => any} func - The function to curry. - * @param {number=func.length} arity - The arity of func. - * @returns {(...args: any[]) => any} - Returns the new curried function. - * @example - * const sum = (...args: number[]) => args.reduce((a, b) => a + b, 0); - * const curriedSum = curry(sum); - * curriedSum(1, 2, 3); // => 6 - * curriedSum(1)(2, 3); // => 6 - * curriedSum(1)(2)(3); // => 6 - */ -declare function curry(func: (...args: any[]) => any, arity?: number): (...args: any[]) => any; -declare namespace curry { - var placeholder: typeof curryPlaceholder; -} -declare const curryPlaceholder: unique symbol; - -export { curry }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curry.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curry.js deleted file mode 100644 index faf4feb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curry.js +++ /dev/null @@ -1,61 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function curry(func, arity = func.length, guard) { - arity = guard ? func.length : arity; - arity = Number.parseInt(arity, 10); - if (Number.isNaN(arity) || arity < 1) { - arity = 0; - } - const wrapper = function (...partialArgs) { - const holders = partialArgs.filter(item => item === curry.placeholder); - const length = partialArgs.length - holders.length; - if (length < arity) { - return makeCurry(func, arity - length, partialArgs); - } - if (this instanceof wrapper) { - return new func(...partialArgs); - } - return func.apply(this, partialArgs); - }; - wrapper.placeholder = curryPlaceholder; - return wrapper; -} -function makeCurry(func, arity, partialArgs) { - function wrapper(...providedArgs) { - const holders = providedArgs.filter(item => item === curry.placeholder); - const length = providedArgs.length - holders.length; - providedArgs = composeArgs(providedArgs, partialArgs); - if (length < arity) { - return makeCurry(func, arity - length, providedArgs); - } - if (this instanceof wrapper) { - return new func(...providedArgs); - } - return func.apply(this, providedArgs); - } - wrapper.placeholder = curryPlaceholder; - return wrapper; -} -function composeArgs(providedArgs, partialArgs) { - const args = []; - let startIndex = 0; - for (let i = 0; i < partialArgs.length; i++) { - const arg = partialArgs[i]; - if (arg === curry.placeholder && startIndex < providedArgs.length) { - args.push(providedArgs[startIndex++]); - } - else { - args.push(arg); - } - } - for (let i = startIndex; i < providedArgs.length; i++) { - args.push(providedArgs[i]); - } - return args; -} -const curryPlaceholder = Symbol('curry.placeholder'); -curry.placeholder = curryPlaceholder; - -exports.curry = curry; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curry.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curry.mjs deleted file mode 100644 index 140700f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curry.mjs +++ /dev/null @@ -1,57 +0,0 @@ -function curry(func, arity = func.length, guard) { - arity = guard ? func.length : arity; - arity = Number.parseInt(arity, 10); - if (Number.isNaN(arity) || arity < 1) { - arity = 0; - } - const wrapper = function (...partialArgs) { - const holders = partialArgs.filter(item => item === curry.placeholder); - const length = partialArgs.length - holders.length; - if (length < arity) { - return makeCurry(func, arity - length, partialArgs); - } - if (this instanceof wrapper) { - return new func(...partialArgs); - } - return func.apply(this, partialArgs); - }; - wrapper.placeholder = curryPlaceholder; - return wrapper; -} -function makeCurry(func, arity, partialArgs) { - function wrapper(...providedArgs) { - const holders = providedArgs.filter(item => item === curry.placeholder); - const length = providedArgs.length - holders.length; - providedArgs = composeArgs(providedArgs, partialArgs); - if (length < arity) { - return makeCurry(func, arity - length, providedArgs); - } - if (this instanceof wrapper) { - return new func(...providedArgs); - } - return func.apply(this, providedArgs); - } - wrapper.placeholder = curryPlaceholder; - return wrapper; -} -function composeArgs(providedArgs, partialArgs) { - const args = []; - let startIndex = 0; - for (let i = 0; i < partialArgs.length; i++) { - const arg = partialArgs[i]; - if (arg === curry.placeholder && startIndex < providedArgs.length) { - args.push(providedArgs[startIndex++]); - } - else { - args.push(arg); - } - } - for (let i = startIndex; i < providedArgs.length; i++) { - args.push(providedArgs[i]); - } - return args; -} -const curryPlaceholder = Symbol('curry.placeholder'); -curry.placeholder = curryPlaceholder; - -export { curry }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curryRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curryRight.d.mts deleted file mode 100644 index d5ddb11..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curryRight.d.mts +++ /dev/null @@ -1,85 +0,0 @@ -type __ = typeof curryRightPlaceholder; -interface RightCurriedFunction1 { - (): RightCurriedFunction1; - (t1: T1): R; -} -interface RightCurriedFunction2 { - (): RightCurriedFunction2; - (t2: T2): RightCurriedFunction1; - (t1: T1, t2: __): RightCurriedFunction1; - (t1: T1, t2: T2): R; -} -interface RightCurriedFunction3 { - (): RightCurriedFunction3; - (t3: T3): RightCurriedFunction2; - (t2: T2, t3: __): RightCurriedFunction2; - (t2: T2, t3: T3): RightCurriedFunction1; - (t1: T1, t2: __, t3: __): RightCurriedFunction2; - (t1: T1, t2: T2, t3: __): RightCurriedFunction1; - (t1: T1, t2: __, t3: T3): RightCurriedFunction1; - (t1: T1, t2: T2, t3: T3): R; -} -interface RightCurriedFunction4 { - (): RightCurriedFunction4; - (t4: T4): RightCurriedFunction3; - (t3: T3, t4: __): RightCurriedFunction3; - (t3: T3, t4: T4): RightCurriedFunction2; - (t2: T2, t3: __, t4: __): RightCurriedFunction3; - (t2: T2, t3: T3, t4: __): RightCurriedFunction2; - (t2: T2, t3: __, t4: T4): RightCurriedFunction2; - (t2: T2, t3: T3, t4: T4): RightCurriedFunction1; - (t1: T1, t2: __, t3: __, t4: __): RightCurriedFunction3; - (t1: T1, t2: T2, t3: __, t4: __): RightCurriedFunction2; - (t1: T1, t2: __, t3: T3, t4: __): RightCurriedFunction2; - (t1: T1, t2: __, t3: __, t4: T4): RightCurriedFunction2; - (t1: T1, t2: T2, t3: T3, t4: __): RightCurriedFunction1; - (t1: T1, t2: T2, t3: __, t4: T4): RightCurriedFunction1; - (t1: T1, t2: __, t3: T3, t4: T4): RightCurriedFunction1; - (t1: T1, t2: T2, t3: T3, t4: T4): R; -} -interface RightCurriedFunction5 { - (): RightCurriedFunction5; - (t5: T5): RightCurriedFunction4; - (t4: T4, t5: __): RightCurriedFunction4; - (t4: T4, t5: T5): RightCurriedFunction3; - (t3: T3, t4: __, t5: __): RightCurriedFunction4; - (t3: T3, t4: T4, t5: __): RightCurriedFunction3; - (t3: T3, t4: __, t5: T5): RightCurriedFunction3; - (t3: T3, t4: T4, t5: T5): RightCurriedFunction2; - (t2: T2, t3: __, t4: __, t5: __): RightCurriedFunction4; - (t2: T2, t3: T3, t4: __, t5: __): RightCurriedFunction3; - (t2: T2, t3: __, t4: T4, t5: __): RightCurriedFunction3; - (t2: T2, t3: __, t4: __, t5: T5): RightCurriedFunction3; - (t2: T2, t3: T3, t4: T4, t5: __): RightCurriedFunction2; - (t2: T2, t3: T3, t4: __, t5: T5): RightCurriedFunction2; - (t2: T2, t3: __, t4: T4, t5: T5): RightCurriedFunction2; - (t2: T2, t3: T3, t4: T4, t5: T5): RightCurriedFunction1; - (t1: T1, t2: __, t3: __, t4: __, t5: __): RightCurriedFunction4; - (t1: T1, t2: T2, t3: __, t4: __, t5: __): RightCurriedFunction3; - (t1: T1, t2: __, t3: T3, t4: __, t5: __): RightCurriedFunction3; - (t1: T1, t2: __, t3: __, t4: T4, t5: __): RightCurriedFunction3; - (t1: T1, t2: __, t3: __, t4: __, t5: T5): RightCurriedFunction3; - (t1: T1, t2: T2, t3: T3, t4: __, t5: __): RightCurriedFunction2; - (t1: T1, t2: T2, t3: __, t4: T4, t5: __): RightCurriedFunction2; - (t1: T1, t2: T2, t3: __, t4: __, t5: T5): RightCurriedFunction2; - (t1: T1, t2: __, t3: T3, t4: T4, t5: __): RightCurriedFunction2; - (t1: T1, t2: __, t3: T3, t4: __, t5: T5): RightCurriedFunction2; - (t1: T1, t2: __, t3: __, t4: T4, t5: T5): RightCurriedFunction2; - (t1: T1, t2: T2, t3: T3, t4: T4, t5: __): RightCurriedFunction1; - (t1: T1, t2: T2, t3: T3, t4: __, t5: T5): RightCurriedFunction1; - (t1: T1, t2: T2, t3: __, t4: T4, t5: T5): RightCurriedFunction1; - (t1: T1, t2: __, t3: T3, t4: T4, t5: T5): RightCurriedFunction1; - (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): R; -} -declare function curryRight(func: (t1: T1) => R, arity?: number): RightCurriedFunction1; -declare function curryRight(func: (t1: T1, t2: T2) => R, arity?: number): RightCurriedFunction2; -declare function curryRight(func: (t1: T1, t2: T2, t3: T3) => R, arity?: number): RightCurriedFunction3; -declare function curryRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arity?: number): RightCurriedFunction4; -declare function curryRight(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R, arity?: number): RightCurriedFunction5; -declare function curryRight(func: (...args: any[]) => any, arity?: number): (...args: any[]) => any; -declare namespace curryRight { - var placeholder: typeof curryRightPlaceholder; -} -declare const curryRightPlaceholder: unique symbol; - -export { curryRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curryRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curryRight.d.ts deleted file mode 100644 index d5ddb11..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curryRight.d.ts +++ /dev/null @@ -1,85 +0,0 @@ -type __ = typeof curryRightPlaceholder; -interface RightCurriedFunction1 { - (): RightCurriedFunction1; - (t1: T1): R; -} -interface RightCurriedFunction2 { - (): RightCurriedFunction2; - (t2: T2): RightCurriedFunction1; - (t1: T1, t2: __): RightCurriedFunction1; - (t1: T1, t2: T2): R; -} -interface RightCurriedFunction3 { - (): RightCurriedFunction3; - (t3: T3): RightCurriedFunction2; - (t2: T2, t3: __): RightCurriedFunction2; - (t2: T2, t3: T3): RightCurriedFunction1; - (t1: T1, t2: __, t3: __): RightCurriedFunction2; - (t1: T1, t2: T2, t3: __): RightCurriedFunction1; - (t1: T1, t2: __, t3: T3): RightCurriedFunction1; - (t1: T1, t2: T2, t3: T3): R; -} -interface RightCurriedFunction4 { - (): RightCurriedFunction4; - (t4: T4): RightCurriedFunction3; - (t3: T3, t4: __): RightCurriedFunction3; - (t3: T3, t4: T4): RightCurriedFunction2; - (t2: T2, t3: __, t4: __): RightCurriedFunction3; - (t2: T2, t3: T3, t4: __): RightCurriedFunction2; - (t2: T2, t3: __, t4: T4): RightCurriedFunction2; - (t2: T2, t3: T3, t4: T4): RightCurriedFunction1; - (t1: T1, t2: __, t3: __, t4: __): RightCurriedFunction3; - (t1: T1, t2: T2, t3: __, t4: __): RightCurriedFunction2; - (t1: T1, t2: __, t3: T3, t4: __): RightCurriedFunction2; - (t1: T1, t2: __, t3: __, t4: T4): RightCurriedFunction2; - (t1: T1, t2: T2, t3: T3, t4: __): RightCurriedFunction1; - (t1: T1, t2: T2, t3: __, t4: T4): RightCurriedFunction1; - (t1: T1, t2: __, t3: T3, t4: T4): RightCurriedFunction1; - (t1: T1, t2: T2, t3: T3, t4: T4): R; -} -interface RightCurriedFunction5 { - (): RightCurriedFunction5; - (t5: T5): RightCurriedFunction4; - (t4: T4, t5: __): RightCurriedFunction4; - (t4: T4, t5: T5): RightCurriedFunction3; - (t3: T3, t4: __, t5: __): RightCurriedFunction4; - (t3: T3, t4: T4, t5: __): RightCurriedFunction3; - (t3: T3, t4: __, t5: T5): RightCurriedFunction3; - (t3: T3, t4: T4, t5: T5): RightCurriedFunction2; - (t2: T2, t3: __, t4: __, t5: __): RightCurriedFunction4; - (t2: T2, t3: T3, t4: __, t5: __): RightCurriedFunction3; - (t2: T2, t3: __, t4: T4, t5: __): RightCurriedFunction3; - (t2: T2, t3: __, t4: __, t5: T5): RightCurriedFunction3; - (t2: T2, t3: T3, t4: T4, t5: __): RightCurriedFunction2; - (t2: T2, t3: T3, t4: __, t5: T5): RightCurriedFunction2; - (t2: T2, t3: __, t4: T4, t5: T5): RightCurriedFunction2; - (t2: T2, t3: T3, t4: T4, t5: T5): RightCurriedFunction1; - (t1: T1, t2: __, t3: __, t4: __, t5: __): RightCurriedFunction4; - (t1: T1, t2: T2, t3: __, t4: __, t5: __): RightCurriedFunction3; - (t1: T1, t2: __, t3: T3, t4: __, t5: __): RightCurriedFunction3; - (t1: T1, t2: __, t3: __, t4: T4, t5: __): RightCurriedFunction3; - (t1: T1, t2: __, t3: __, t4: __, t5: T5): RightCurriedFunction3; - (t1: T1, t2: T2, t3: T3, t4: __, t5: __): RightCurriedFunction2; - (t1: T1, t2: T2, t3: __, t4: T4, t5: __): RightCurriedFunction2; - (t1: T1, t2: T2, t3: __, t4: __, t5: T5): RightCurriedFunction2; - (t1: T1, t2: __, t3: T3, t4: T4, t5: __): RightCurriedFunction2; - (t1: T1, t2: __, t3: T3, t4: __, t5: T5): RightCurriedFunction2; - (t1: T1, t2: __, t3: __, t4: T4, t5: T5): RightCurriedFunction2; - (t1: T1, t2: T2, t3: T3, t4: T4, t5: __): RightCurriedFunction1; - (t1: T1, t2: T2, t3: T3, t4: __, t5: T5): RightCurriedFunction1; - (t1: T1, t2: T2, t3: __, t4: T4, t5: T5): RightCurriedFunction1; - (t1: T1, t2: __, t3: T3, t4: T4, t5: T5): RightCurriedFunction1; - (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): R; -} -declare function curryRight(func: (t1: T1) => R, arity?: number): RightCurriedFunction1; -declare function curryRight(func: (t1: T1, t2: T2) => R, arity?: number): RightCurriedFunction2; -declare function curryRight(func: (t1: T1, t2: T2, t3: T3) => R, arity?: number): RightCurriedFunction3; -declare function curryRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arity?: number): RightCurriedFunction4; -declare function curryRight(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R, arity?: number): RightCurriedFunction5; -declare function curryRight(func: (...args: any[]) => any, arity?: number): (...args: any[]) => any; -declare namespace curryRight { - var placeholder: typeof curryRightPlaceholder; -} -declare const curryRightPlaceholder: unique symbol; - -export { curryRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curryRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curryRight.js deleted file mode 100644 index c7268a5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curryRight.js +++ /dev/null @@ -1,68 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function curryRight(func, arity = func.length, guard) { - arity = guard ? func.length : arity; - arity = Number.parseInt(arity, 10); - if (Number.isNaN(arity) || arity < 1) { - arity = 0; - } - const wrapper = function (...partialArgs) { - const holders = partialArgs.filter(item => item === curryRight.placeholder); - const length = partialArgs.length - holders.length; - if (length < arity) { - return makeCurryRight(func, arity - length, partialArgs); - } - if (this instanceof wrapper) { - return new func(...partialArgs); - } - return func.apply(this, partialArgs); - }; - wrapper.placeholder = curryRightPlaceholder; - return wrapper; -} -function makeCurryRight(func, arity, partialArgs) { - function wrapper(...providedArgs) { - const holders = providedArgs.filter(item => item === curryRight.placeholder); - const length = providedArgs.length - holders.length; - providedArgs = composeArgs(providedArgs, partialArgs); - if (length < arity) { - return makeCurryRight(func, arity - length, providedArgs); - } - if (this instanceof wrapper) { - return new func(...providedArgs); - } - return func.apply(this, providedArgs); - } - wrapper.placeholder = curryRightPlaceholder; - return wrapper; -} -function composeArgs(providedArgs, partialArgs) { - const placeholderLength = partialArgs.filter(arg => arg === curryRight.placeholder).length; - const rangeLength = Math.max(providedArgs.length - placeholderLength, 0); - const args = []; - let providedIndex = 0; - for (let i = 0; i < rangeLength; i++) { - args.push(providedArgs[providedIndex++]); - } - for (let i = 0; i < partialArgs.length; i++) { - const arg = partialArgs[i]; - if (arg === curryRight.placeholder) { - if (providedIndex < providedArgs.length) { - args.push(providedArgs[providedIndex++]); - } - else { - args.push(arg); - } - } - else { - args.push(arg); - } - } - return args; -} -const curryRightPlaceholder = Symbol('curryRight.placeholder'); -curryRight.placeholder = curryRightPlaceholder; - -exports.curryRight = curryRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curryRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curryRight.mjs deleted file mode 100644 index 8cba122..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/curryRight.mjs +++ /dev/null @@ -1,64 +0,0 @@ -function curryRight(func, arity = func.length, guard) { - arity = guard ? func.length : arity; - arity = Number.parseInt(arity, 10); - if (Number.isNaN(arity) || arity < 1) { - arity = 0; - } - const wrapper = function (...partialArgs) { - const holders = partialArgs.filter(item => item === curryRight.placeholder); - const length = partialArgs.length - holders.length; - if (length < arity) { - return makeCurryRight(func, arity - length, partialArgs); - } - if (this instanceof wrapper) { - return new func(...partialArgs); - } - return func.apply(this, partialArgs); - }; - wrapper.placeholder = curryRightPlaceholder; - return wrapper; -} -function makeCurryRight(func, arity, partialArgs) { - function wrapper(...providedArgs) { - const holders = providedArgs.filter(item => item === curryRight.placeholder); - const length = providedArgs.length - holders.length; - providedArgs = composeArgs(providedArgs, partialArgs); - if (length < arity) { - return makeCurryRight(func, arity - length, providedArgs); - } - if (this instanceof wrapper) { - return new func(...providedArgs); - } - return func.apply(this, providedArgs); - } - wrapper.placeholder = curryRightPlaceholder; - return wrapper; -} -function composeArgs(providedArgs, partialArgs) { - const placeholderLength = partialArgs.filter(arg => arg === curryRight.placeholder).length; - const rangeLength = Math.max(providedArgs.length - placeholderLength, 0); - const args = []; - let providedIndex = 0; - for (let i = 0; i < rangeLength; i++) { - args.push(providedArgs[providedIndex++]); - } - for (let i = 0; i < partialArgs.length; i++) { - const arg = partialArgs[i]; - if (arg === curryRight.placeholder) { - if (providedIndex < providedArgs.length) { - args.push(providedArgs[providedIndex++]); - } - else { - args.push(arg); - } - } - else { - args.push(arg); - } - } - return args; -} -const curryRightPlaceholder = Symbol('curryRight.placeholder'); -curryRight.placeholder = curryRightPlaceholder; - -export { curryRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/debounce.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/debounce.d.mts deleted file mode 100644 index 1d5cf6b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/debounce.d.mts +++ /dev/null @@ -1,144 +0,0 @@ -interface DebounceSettings { - /** - * If `true`, the function will be invoked on the leading edge of the timeout. - * @default false - */ - leading?: boolean | undefined; - /** - * The maximum time `func` is allowed to be delayed before it's invoked. - * @default Infinity - */ - maxWait?: number | undefined; - /** - * If `true`, the function will be invoked on the trailing edge of the timeout. - * @default true - */ - trailing?: boolean | undefined; -} -interface DebounceSettingsLeading extends DebounceSettings { - leading: true; -} -interface DebouncedFunc any> { - /** - * Call the original function, but applying the debounce rules. - * - * If the debounced function can be run immediately, this calls it and returns its return - * value. - * - * Otherwise, it returns the return value of the last invocation, or undefined if the debounced - * function was not invoked yet. - */ - (...args: Parameters): ReturnType | undefined; - /** - * Throw away any pending invocation of the debounced function. - */ - cancel(): void; - /** - * If there is a pending invocation of the debounced function, invoke it immediately and return - * its return value. - * - * Otherwise, return the value from the last invocation, or undefined if the debounced function - * was never invoked. - */ - flush(): ReturnType | undefined; -} -interface DebouncedFuncLeading any> extends DebouncedFunc { - (...args: Parameters): ReturnType; - flush(): ReturnType; -} -/** - * Creates a debounced function that delays invoking the provided function until after `debounceMs` milliseconds - * have elapsed since the last time the debounced function was invoked. The debounced function also has a `cancel` - * method to cancel any pending execution. - * - * You can set the debounced function to run at the start (`leading`) or end (`trailing`) of the delay period. - * If `leading` is true, the function runs immediately on the first call. - * If `trailing` is true, the function runs after `debounceMs` milliseconds have passed since the last call. - * If both `leading` and `trailing` are true, the function runs at both the start and end, but it must be called at least twice within `debounceMs` milliseconds for this to happen - * (since one debounced function call cannot trigger the function twice). - * - * You can also set a `maxWait` time, which is the maximum time the function is allowed to be delayed before it is called. - * - * @template F - The type of function. - * @param {F} func - The function to debounce. - * @param {number} debounceMs - The number of milliseconds to delay. - * @param {DebounceOptions} options - The options object - * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the debounced function. - * @param {boolean} options.leading - If `true`, the function will be invoked on the leading edge of the timeout. - * @param {boolean} options.trailing - If `true`, the function will be invoked on the trailing edge of the timeout. - * @param {number} options.maxWait - The maximum time `func` is allowed to be delayed before it's invoked. - * @returns A new debounced function with a `cancel` method. - * - * @example - * const debouncedFunction = debounce(() => { - * console.log('Function executed'); - * }, 1000); - * - * // Will log 'Function executed' after 1 second if not called again in that time - * debouncedFunction(); - * - * // Will not log anything as the previous call is canceled - * debouncedFunction.cancel(); - * - * // With AbortSignal - * const controller = new AbortController(); - * const signal = controller.signal; - * const debouncedWithSignal = debounce(() => { - * console.log('Function executed'); - * }, 1000, { signal }); - * - * debouncedWithSignal(); - * - * // Will cancel the debounced function call - * controller.abort(); - */ -declare function debounce any>(func: T, wait: number | undefined, options: DebounceSettingsLeading): DebouncedFuncLeading; -/** - * Creates a debounced function that delays invoking the provided function until after `debounceMs` milliseconds - * have elapsed since the last time the debounced function was invoked. The debounced function also has a `cancel` - * method to cancel any pending execution. - * - * You can set the debounced function to run at the start (`leading`) or end (`trailing`) of the delay period. - * If `leading` is true, the function runs immediately on the first call. - * If `trailing` is true, the function runs after `debounceMs` milliseconds have passed since the last call. - * If both `leading` and `trailing` are true, the function runs at both the start and end, but it must be called at least twice within `debounceMs` milliseconds for this to happen - * (since one debounced function call cannot trigger the function twice). - * - * You can also set a `maxWait` time, which is the maximum time the function is allowed to be delayed before it is called. - * - * @template F - The type of function. - * @param {F} func - The function to debounce. - * @param {number} debounceMs - The number of milliseconds to delay. - * @param {DebounceOptions} options - The options object - * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the debounced function. - * @param {boolean} options.leading - If `true`, the function will be invoked on the leading edge of the timeout. - * @param {boolean} options.trailing - If `true`, the function will be invoked on the trailing edge of the timeout. - * @param {number} options.maxWait - The maximum time `func` is allowed to be delayed before it's invoked. - * @returns A new debounced function with a `cancel` method. - * - * @example - * const debouncedFunction = debounce(() => { - * console.log('Function executed'); - * }, 1000); - * - * // Will log 'Function executed' after 1 second if not called again in that time - * debouncedFunction(); - * - * // Will not log anything as the previous call is canceled - * debouncedFunction.cancel(); - * - * // With AbortSignal - * const controller = new AbortController(); - * const signal = controller.signal; - * const debouncedWithSignal = debounce(() => { - * console.log('Function executed'); - * }, 1000, { signal }); - * - * debouncedWithSignal(); - * - * // Will cancel the debounced function call - * controller.abort(); - */ -declare function debounce any>(func: T, wait?: number, options?: DebounceSettings): DebouncedFunc; - -export { type DebouncedFunc, type DebouncedFuncLeading, debounce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/debounce.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/debounce.d.ts deleted file mode 100644 index 1d5cf6b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/debounce.d.ts +++ /dev/null @@ -1,144 +0,0 @@ -interface DebounceSettings { - /** - * If `true`, the function will be invoked on the leading edge of the timeout. - * @default false - */ - leading?: boolean | undefined; - /** - * The maximum time `func` is allowed to be delayed before it's invoked. - * @default Infinity - */ - maxWait?: number | undefined; - /** - * If `true`, the function will be invoked on the trailing edge of the timeout. - * @default true - */ - trailing?: boolean | undefined; -} -interface DebounceSettingsLeading extends DebounceSettings { - leading: true; -} -interface DebouncedFunc any> { - /** - * Call the original function, but applying the debounce rules. - * - * If the debounced function can be run immediately, this calls it and returns its return - * value. - * - * Otherwise, it returns the return value of the last invocation, or undefined if the debounced - * function was not invoked yet. - */ - (...args: Parameters): ReturnType | undefined; - /** - * Throw away any pending invocation of the debounced function. - */ - cancel(): void; - /** - * If there is a pending invocation of the debounced function, invoke it immediately and return - * its return value. - * - * Otherwise, return the value from the last invocation, or undefined if the debounced function - * was never invoked. - */ - flush(): ReturnType | undefined; -} -interface DebouncedFuncLeading any> extends DebouncedFunc { - (...args: Parameters): ReturnType; - flush(): ReturnType; -} -/** - * Creates a debounced function that delays invoking the provided function until after `debounceMs` milliseconds - * have elapsed since the last time the debounced function was invoked. The debounced function also has a `cancel` - * method to cancel any pending execution. - * - * You can set the debounced function to run at the start (`leading`) or end (`trailing`) of the delay period. - * If `leading` is true, the function runs immediately on the first call. - * If `trailing` is true, the function runs after `debounceMs` milliseconds have passed since the last call. - * If both `leading` and `trailing` are true, the function runs at both the start and end, but it must be called at least twice within `debounceMs` milliseconds for this to happen - * (since one debounced function call cannot trigger the function twice). - * - * You can also set a `maxWait` time, which is the maximum time the function is allowed to be delayed before it is called. - * - * @template F - The type of function. - * @param {F} func - The function to debounce. - * @param {number} debounceMs - The number of milliseconds to delay. - * @param {DebounceOptions} options - The options object - * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the debounced function. - * @param {boolean} options.leading - If `true`, the function will be invoked on the leading edge of the timeout. - * @param {boolean} options.trailing - If `true`, the function will be invoked on the trailing edge of the timeout. - * @param {number} options.maxWait - The maximum time `func` is allowed to be delayed before it's invoked. - * @returns A new debounced function with a `cancel` method. - * - * @example - * const debouncedFunction = debounce(() => { - * console.log('Function executed'); - * }, 1000); - * - * // Will log 'Function executed' after 1 second if not called again in that time - * debouncedFunction(); - * - * // Will not log anything as the previous call is canceled - * debouncedFunction.cancel(); - * - * // With AbortSignal - * const controller = new AbortController(); - * const signal = controller.signal; - * const debouncedWithSignal = debounce(() => { - * console.log('Function executed'); - * }, 1000, { signal }); - * - * debouncedWithSignal(); - * - * // Will cancel the debounced function call - * controller.abort(); - */ -declare function debounce any>(func: T, wait: number | undefined, options: DebounceSettingsLeading): DebouncedFuncLeading; -/** - * Creates a debounced function that delays invoking the provided function until after `debounceMs` milliseconds - * have elapsed since the last time the debounced function was invoked. The debounced function also has a `cancel` - * method to cancel any pending execution. - * - * You can set the debounced function to run at the start (`leading`) or end (`trailing`) of the delay period. - * If `leading` is true, the function runs immediately on the first call. - * If `trailing` is true, the function runs after `debounceMs` milliseconds have passed since the last call. - * If both `leading` and `trailing` are true, the function runs at both the start and end, but it must be called at least twice within `debounceMs` milliseconds for this to happen - * (since one debounced function call cannot trigger the function twice). - * - * You can also set a `maxWait` time, which is the maximum time the function is allowed to be delayed before it is called. - * - * @template F - The type of function. - * @param {F} func - The function to debounce. - * @param {number} debounceMs - The number of milliseconds to delay. - * @param {DebounceOptions} options - The options object - * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the debounced function. - * @param {boolean} options.leading - If `true`, the function will be invoked on the leading edge of the timeout. - * @param {boolean} options.trailing - If `true`, the function will be invoked on the trailing edge of the timeout. - * @param {number} options.maxWait - The maximum time `func` is allowed to be delayed before it's invoked. - * @returns A new debounced function with a `cancel` method. - * - * @example - * const debouncedFunction = debounce(() => { - * console.log('Function executed'); - * }, 1000); - * - * // Will log 'Function executed' after 1 second if not called again in that time - * debouncedFunction(); - * - * // Will not log anything as the previous call is canceled - * debouncedFunction.cancel(); - * - * // With AbortSignal - * const controller = new AbortController(); - * const signal = controller.signal; - * const debouncedWithSignal = debounce(() => { - * console.log('Function executed'); - * }, 1000, { signal }); - * - * debouncedWithSignal(); - * - * // Will cancel the debounced function call - * controller.abort(); - */ -declare function debounce any>(func: T, wait?: number, options?: DebounceSettings): DebouncedFunc; - -export { type DebouncedFunc, type DebouncedFuncLeading, debounce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/debounce.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/debounce.js deleted file mode 100644 index 794f828..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/debounce.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const debounce$1 = require('../../function/debounce.js'); - -function debounce(func, debounceMs = 0, options = {}) { - if (typeof options !== 'object') { - options = {}; - } - const { leading = false, trailing = true, maxWait } = options; - const edges = Array(2); - if (leading) { - edges[0] = 'leading'; - } - if (trailing) { - edges[1] = 'trailing'; - } - let result = undefined; - let pendingAt = null; - const _debounced = debounce$1.debounce(function (...args) { - result = func.apply(this, args); - pendingAt = null; - }, debounceMs, { edges }); - const debounced = function (...args) { - if (maxWait != null) { - if (pendingAt === null) { - pendingAt = Date.now(); - } - if (Date.now() - pendingAt >= maxWait) { - result = func.apply(this, args); - pendingAt = Date.now(); - _debounced.cancel(); - _debounced.schedule(); - return result; - } - } - _debounced.apply(this, args); - return result; - }; - const flush = () => { - _debounced.flush(); - return result; - }; - debounced.cancel = _debounced.cancel; - debounced.flush = flush; - return debounced; -} - -exports.debounce = debounce; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/debounce.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/debounce.mjs deleted file mode 100644 index 5bb7874..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/debounce.mjs +++ /dev/null @@ -1,46 +0,0 @@ -import { debounce as debounce$1 } from '../../function/debounce.mjs'; - -function debounce(func, debounceMs = 0, options = {}) { - if (typeof options !== 'object') { - options = {}; - } - const { leading = false, trailing = true, maxWait } = options; - const edges = Array(2); - if (leading) { - edges[0] = 'leading'; - } - if (trailing) { - edges[1] = 'trailing'; - } - let result = undefined; - let pendingAt = null; - const _debounced = debounce$1(function (...args) { - result = func.apply(this, args); - pendingAt = null; - }, debounceMs, { edges }); - const debounced = function (...args) { - if (maxWait != null) { - if (pendingAt === null) { - pendingAt = Date.now(); - } - if (Date.now() - pendingAt >= maxWait) { - result = func.apply(this, args); - pendingAt = Date.now(); - _debounced.cancel(); - _debounced.schedule(); - return result; - } - } - _debounced.apply(this, args); - return result; - }; - const flush = () => { - _debounced.flush(); - return result; - }; - debounced.cancel = _debounced.cancel; - debounced.flush = flush; - return debounced; -} - -export { debounce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/defer.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/defer.d.mts deleted file mode 100644 index e30472b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/defer.d.mts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Defers invoking the `func` until the current call stack has cleared. Any additional arguments are provided to func when it's invoked. - * - * @param {(...args: any[]) => any} func The function to defer. - * @param {...any[]} args The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * - * @example - * defer(console.log, 'deferred'); - * // => Logs 'deferred' after the current call stack has cleared. - */ -declare function defer(func: (...args: any[]) => any, ...args: any[]): number; - -export { defer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/defer.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/defer.d.ts deleted file mode 100644 index e30472b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/defer.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Defers invoking the `func` until the current call stack has cleared. Any additional arguments are provided to func when it's invoked. - * - * @param {(...args: any[]) => any} func The function to defer. - * @param {...any[]} args The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * - * @example - * defer(console.log, 'deferred'); - * // => Logs 'deferred' after the current call stack has cleared. - */ -declare function defer(func: (...args: any[]) => any, ...args: any[]): number; - -export { defer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/defer.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/defer.js deleted file mode 100644 index 506deaf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/defer.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function defer(func, ...args) { - if (typeof func !== 'function') { - throw new TypeError('Expected a function'); - } - return setTimeout(func, 1, ...args); -} - -exports.defer = defer; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/defer.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/defer.mjs deleted file mode 100644 index dfbffb5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/defer.mjs +++ /dev/null @@ -1,8 +0,0 @@ -function defer(func, ...args) { - if (typeof func !== 'function') { - throw new TypeError('Expected a function'); - } - return setTimeout(func, 1, ...args); -} - -export { defer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/delay.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/delay.d.mts deleted file mode 100644 index b32fb9b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/delay.d.mts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Invokes the specified function after a delay of the given number of milliseconds. - * Any additional arguments are passed to the function when it is invoked. - * - * @param {(...args: any[]) => any} func - The function to delay. - * @param {number} wait - The number of milliseconds to delay the invocation. - * @param {...any[]} args - The arguments to pass to the function when it is invoked. - * @returns {number} Returns the timer id. - * @throws {TypeError} If the first argument is not a function. - * - * @example - * // Example 1: Delayed function execution - * const timerId = delay( - * (greeting, recipient) => { - * console.log(`${greeting}, ${recipient}!`); - * }, - * 1000, - * 'Hello', - * 'Alice' - * ); - * // => 'Hello, Alice!' will be logged after one second. - * - * // Example 2: Clearing the timeout before execution - * clearTimeout(timerId); - * // The function will not be executed because the timeout was cleared. - */ -declare function delay(func: (...args: any[]) => any, wait: number, ...args: any[]): number; - -export { delay }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/delay.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/delay.d.ts deleted file mode 100644 index b32fb9b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/delay.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Invokes the specified function after a delay of the given number of milliseconds. - * Any additional arguments are passed to the function when it is invoked. - * - * @param {(...args: any[]) => any} func - The function to delay. - * @param {number} wait - The number of milliseconds to delay the invocation. - * @param {...any[]} args - The arguments to pass to the function when it is invoked. - * @returns {number} Returns the timer id. - * @throws {TypeError} If the first argument is not a function. - * - * @example - * // Example 1: Delayed function execution - * const timerId = delay( - * (greeting, recipient) => { - * console.log(`${greeting}, ${recipient}!`); - * }, - * 1000, - * 'Hello', - * 'Alice' - * ); - * // => 'Hello, Alice!' will be logged after one second. - * - * // Example 2: Clearing the timeout before execution - * clearTimeout(timerId); - * // The function will not be executed because the timeout was cleared. - */ -declare function delay(func: (...args: any[]) => any, wait: number, ...args: any[]): number; - -export { delay }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/delay.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/delay.js deleted file mode 100644 index 1a369dc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/delay.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toNumber = require('../util/toNumber.js'); - -function delay(func, wait, ...args) { - if (typeof func !== 'function') { - throw new TypeError('Expected a function'); - } - return setTimeout(func, toNumber.toNumber(wait) || 0, ...args); -} - -exports.delay = delay; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/delay.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/delay.mjs deleted file mode 100644 index c36328c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/delay.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { toNumber } from '../util/toNumber.mjs'; - -function delay(func, wait, ...args) { - if (typeof func !== 'function') { - throw new TypeError('Expected a function'); - } - return setTimeout(func, toNumber(wait) || 0, ...args); -} - -export { delay }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flip.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flip.d.mts deleted file mode 100644 index 9319e38..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flip.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Reverses the order of arguments for a given function. - * - * @template T - The type of the function being flipped. - * @param {T} func - The function whose arguments will be reversed. - * @returns {T} A new function that takes the reversed arguments and returns the result of calling `func`. - * - * @example - * var flipped = flip(function() { - * return Array.prototype.slice.call(arguments); - * }); - * - * flipped('a', 'b', 'c', 'd'); - * // => ['d', 'c', 'b', 'a'] - */ -declare function flip any>(func: T): T; - -export { flip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flip.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flip.d.ts deleted file mode 100644 index 9319e38..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flip.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Reverses the order of arguments for a given function. - * - * @template T - The type of the function being flipped. - * @param {T} func - The function whose arguments will be reversed. - * @returns {T} A new function that takes the reversed arguments and returns the result of calling `func`. - * - * @example - * var flipped = flip(function() { - * return Array.prototype.slice.call(arguments); - * }); - * - * flipped('a', 'b', 'c', 'd'); - * // => ['d', 'c', 'b', 'a'] - */ -declare function flip any>(func: T): T; - -export { flip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flip.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flip.js deleted file mode 100644 index 6e86ced..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flip.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function flip(func) { - return function (...args) { - return func.apply(this, args.reverse()); - }; -} - -exports.flip = flip; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flip.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flip.mjs deleted file mode 100644 index 100ff74..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flip.mjs +++ /dev/null @@ -1,7 +0,0 @@ -function flip(func) { - return function (...args) { - return func.apply(this, args.reverse()); - }; -} - -export { flip }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flow.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flow.d.mts deleted file mode 100644 index 5e6f4ba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flow.d.mts +++ /dev/null @@ -1,119 +0,0 @@ -import { Many } from '../_internal/Many.mjs'; - -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * @template A - The type of the arguments. - * @template R - The type of the return values. - * @param {(...args: A) => R} f1 - The first function to invoke. - * @param {(a: R) => R} f2 - The second function to invoke. - * @param {(a: R) => R} f3 - The third function to invoke. - * @param {(a: R) => R} f4 - The fourth function to invoke. - * @param {(a: R) => R} f5 - The fifth function to invoke. - * @param {(a: R) => R} f6 - The sixth function to invoke. - * @param {(a: R) => R} f7 - The seventh function to invoke. - * @returns {(...args: A) => R} Returns the new composite function. - * - * @example - * function square(n) { - * return n * n; - * } - * - * var addSquare = flow([add, square]); - * addSquare(1, 2); - * // => 9 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): (...args: A) => R7; -/** - * Creates a new function that executes up to 7 functions in sequence, with additional functions flattened. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toString = (n: number) => n.toString(); - * - * const combined = flow(add, square, double, toString); - * console.log(combined(1, 2)); // "18" - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...func: Array any>>): (...args: A) => any; -/** - * Creates a new function that executes 6 functions in sequence. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flow(add, square, double); - * console.log(combined(1, 2)); // 18 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): (...args: A) => R6; -/** - * Creates a new function that executes 5 functions in sequence. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flow(add, square, double); - * console.log(combined(1, 2)); // 18 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): (...args: A) => R5; -/** - * Creates a new function that executes 4 functions in sequence. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flow(add, square, double); - * console.log(combined(1, 2)); // 18 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): (...args: A) => R4; -/** - * Creates a new function that executes 3 functions in sequence. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flow(add, square, double); - * console.log(combined(1, 2)); // 18 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3): (...args: A) => R3; -/** - * Creates a new function that executes 2 functions in sequence. - * The return value of the first function is passed as an argument to the second function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * - * const addThenSquare = flow(add, square); - * console.log(addThenSquare(1, 2)); // 9 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2): (...args: A) => R2; -/** - * Creates a new function that executes the given functions in sequence. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flow(add, square, double); - * console.log(combined(1, 2)); // 18 - */ -declare function flow(...func: Array any>>): (...args: any[]) => any; - -export { flow }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flow.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flow.d.ts deleted file mode 100644 index 981e693..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flow.d.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { Many } from '../_internal/Many.js'; - -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * @template A - The type of the arguments. - * @template R - The type of the return values. - * @param {(...args: A) => R} f1 - The first function to invoke. - * @param {(a: R) => R} f2 - The second function to invoke. - * @param {(a: R) => R} f3 - The third function to invoke. - * @param {(a: R) => R} f4 - The fourth function to invoke. - * @param {(a: R) => R} f5 - The fifth function to invoke. - * @param {(a: R) => R} f6 - The sixth function to invoke. - * @param {(a: R) => R} f7 - The seventh function to invoke. - * @returns {(...args: A) => R} Returns the new composite function. - * - * @example - * function square(n) { - * return n * n; - * } - * - * var addSquare = flow([add, square]); - * addSquare(1, 2); - * // => 9 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): (...args: A) => R7; -/** - * Creates a new function that executes up to 7 functions in sequence, with additional functions flattened. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toString = (n: number) => n.toString(); - * - * const combined = flow(add, square, double, toString); - * console.log(combined(1, 2)); // "18" - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...func: Array any>>): (...args: A) => any; -/** - * Creates a new function that executes 6 functions in sequence. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flow(add, square, double); - * console.log(combined(1, 2)); // 18 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): (...args: A) => R6; -/** - * Creates a new function that executes 5 functions in sequence. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flow(add, square, double); - * console.log(combined(1, 2)); // 18 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): (...args: A) => R5; -/** - * Creates a new function that executes 4 functions in sequence. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flow(add, square, double); - * console.log(combined(1, 2)); // 18 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): (...args: A) => R4; -/** - * Creates a new function that executes 3 functions in sequence. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flow(add, square, double); - * console.log(combined(1, 2)); // 18 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3): (...args: A) => R3; -/** - * Creates a new function that executes 2 functions in sequence. - * The return value of the first function is passed as an argument to the second function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * - * const addThenSquare = flow(add, square); - * console.log(addThenSquare(1, 2)); // 9 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2): (...args: A) => R2; -/** - * Creates a new function that executes the given functions in sequence. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flow(add, square, double); - * console.log(combined(1, 2)); // 18 - */ -declare function flow(...func: Array any>>): (...args: any[]) => any; - -export { flow }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flow.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flow.js deleted file mode 100644 index 82adb87..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flow.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flatten = require('../../array/flatten.js'); -const flow$1 = require('../../function/flow.js'); - -function flow(...funcs) { - const flattenFuncs = flatten.flatten(funcs, 1); - if (flattenFuncs.some(func => typeof func !== 'function')) { - throw new TypeError('Expected a function'); - } - return flow$1.flow(...flattenFuncs); -} - -exports.flow = flow; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flow.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flow.mjs deleted file mode 100644 index 6a8cf45..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flow.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { flatten } from '../../array/flatten.mjs'; -import { flow as flow$1 } from '../../function/flow.mjs'; - -function flow(...funcs) { - const flattenFuncs = flatten(funcs, 1); - if (flattenFuncs.some(func => typeof func !== 'function')) { - throw new TypeError('Expected a function'); - } - return flow$1(...flattenFuncs); -} - -export { flow }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flowRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flowRight.d.mts deleted file mode 100644 index 625ebe1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flowRight.d.mts +++ /dev/null @@ -1,117 +0,0 @@ -import { Many } from '../_internal/Many.mjs'; - -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * @template A - The type of the arguments. - * @template R - The type of the return values. - * @param {(a: R) => R} f7 - The seventh function to invoke. - * @param {(a: R) => R} f6 - The sixth function to invoke. - * @param {(a: R) => R} f5 - The fifth function to invoke. - * @param {(a: R) => R} f4 - The fourth function to invoke. - * @param {(a: R) => R} f3 - The third function to invoke. - * @param {(a: R) => R} f2 - The second function to invoke. - * @param {(...args: A) => R} f1 - The first function to invoke. - * @returns {(...args: A) => R} Returns the new composite function. - * - * @example - * function square(n) { - * return n * n; - * } - * - * var addSquare = flowRight(square, add); - * addSquare(1, 2); - * // => 9 - */ -declare function flowRight(f7: (a: R6) => R7, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R7; -/** - * Creates a new function that executes 6 functions in sequence from right to left. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toString = (n: number) => String(n); - * const append = (s: string) => s + '!'; - * const length = (s: string) => s.length; - * - * const combined = flowRight(length, append, toString, double, square, add); - * console.log(combined(1, 2)); // 7 - */ -declare function flowRight(f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R6; -/** - * Creates a new function that executes 5 functions in sequence from right to left. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toString = (n: number) => String(n); - * const append = (s: string) => s + '!'; - * - * const combined = flowRight(append, toString, double, square, add); - * console.log(combined(1, 2)); // '18!' - */ -declare function flowRight(f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R5; -/** - * Creates a new function that executes 4 functions in sequence from right to left. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toString = (n: number) => String(n); - * - * const combined = flowRight(toString, double, square, add); - * console.log(combined(1, 2)); // '18' - */ -declare function flowRight(f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R4; -/** - * Creates a new function that executes 3 functions in sequence from right to left. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flowRight(double, square, add); - * console.log(combined(1, 2)); // 18 - */ -declare function flowRight(f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R3; -/** - * Creates a new function that executes 2 functions in sequence from right to left. - * The return value of the first function is passed as an argument to the second function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * - * const combined = flowRight(square, add); - * console.log(combined(1, 2)); // 9 - */ -declare function flowRight(f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R2; -/** - * Creates a new function that executes the given functions in sequence from right to left. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toString = (n: number) => String(n); - * - * // Pass functions as separate arguments - * const combined1 = flowRight(toString, double, square, add); - * console.log(combined1(1, 2)); // '18' - * - * // Pass functions as arrays - * const combined2 = flowRight([toString, double], [square, add]); - * console.log(combined2(1, 2)); // '18' - */ -declare function flowRight(...func: Array any>>): (...args: any[]) => any; - -export { flowRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flowRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flowRight.d.ts deleted file mode 100644 index 79bac1b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flowRight.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { Many } from '../_internal/Many.js'; - -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * @template A - The type of the arguments. - * @template R - The type of the return values. - * @param {(a: R) => R} f7 - The seventh function to invoke. - * @param {(a: R) => R} f6 - The sixth function to invoke. - * @param {(a: R) => R} f5 - The fifth function to invoke. - * @param {(a: R) => R} f4 - The fourth function to invoke. - * @param {(a: R) => R} f3 - The third function to invoke. - * @param {(a: R) => R} f2 - The second function to invoke. - * @param {(...args: A) => R} f1 - The first function to invoke. - * @returns {(...args: A) => R} Returns the new composite function. - * - * @example - * function square(n) { - * return n * n; - * } - * - * var addSquare = flowRight(square, add); - * addSquare(1, 2); - * // => 9 - */ -declare function flowRight(f7: (a: R6) => R7, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R7; -/** - * Creates a new function that executes 6 functions in sequence from right to left. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toString = (n: number) => String(n); - * const append = (s: string) => s + '!'; - * const length = (s: string) => s.length; - * - * const combined = flowRight(length, append, toString, double, square, add); - * console.log(combined(1, 2)); // 7 - */ -declare function flowRight(f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R6; -/** - * Creates a new function that executes 5 functions in sequence from right to left. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toString = (n: number) => String(n); - * const append = (s: string) => s + '!'; - * - * const combined = flowRight(append, toString, double, square, add); - * console.log(combined(1, 2)); // '18!' - */ -declare function flowRight(f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R5; -/** - * Creates a new function that executes 4 functions in sequence from right to left. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toString = (n: number) => String(n); - * - * const combined = flowRight(toString, double, square, add); - * console.log(combined(1, 2)); // '18' - */ -declare function flowRight(f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R4; -/** - * Creates a new function that executes 3 functions in sequence from right to left. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flowRight(double, square, add); - * console.log(combined(1, 2)); // 18 - */ -declare function flowRight(f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R3; -/** - * Creates a new function that executes 2 functions in sequence from right to left. - * The return value of the first function is passed as an argument to the second function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * - * const combined = flowRight(square, add); - * console.log(combined(1, 2)); // 9 - */ -declare function flowRight(f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R2; -/** - * Creates a new function that executes the given functions in sequence from right to left. - * The return value of each function is passed as an argument to the next function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toString = (n: number) => String(n); - * - * // Pass functions as separate arguments - * const combined1 = flowRight(toString, double, square, add); - * console.log(combined1(1, 2)); // '18' - * - * // Pass functions as arrays - * const combined2 = flowRight([toString, double], [square, add]); - * console.log(combined2(1, 2)); // '18' - */ -declare function flowRight(...func: Array any>>): (...args: any[]) => any; - -export { flowRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flowRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flowRight.js deleted file mode 100644 index 45d605a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flowRight.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flatten = require('../../array/flatten.js'); -const flowRight$1 = require('../../function/flowRight.js'); - -function flowRight(...funcs) { - const flattenFuncs = flatten.flatten(funcs, 1); - if (flattenFuncs.some(func => typeof func !== 'function')) { - throw new TypeError('Expected a function'); - } - return flowRight$1.flowRight(...flattenFuncs); -} - -exports.flowRight = flowRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flowRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flowRight.mjs deleted file mode 100644 index f246f5c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/flowRight.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { flatten } from '../../array/flatten.mjs'; -import { flowRight as flowRight$1 } from '../../function/flowRight.mjs'; - -function flowRight(...funcs) { - const flattenFuncs = flatten(funcs, 1); - if (flattenFuncs.some(func => typeof func !== 'function')) { - throw new TypeError('Expected a function'); - } - return flowRight$1(...flattenFuncs); -} - -export { flowRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/identity.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/identity.d.mts deleted file mode 100644 index 4100066..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/identity.d.mts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Returns the input value unchanged. - * - * @template T - The type of the input value. - * @param {T} x - The value to be returned. - * @returns {T} The input value. - * - * @example - * // Returns 5 - * identity(5); - * - * @example - * // Returns 'hello' - * identity('hello'); - * - * @example - * // Returns { key: 'value' } - * identity({ key: 'value' }); - */ -declare function identity(value: T): T; -/** - * Returns the input value unchanged. - * - * @template T - The type of the input value. - * @param {T} x - The value to be returned. - * @returns {T} The input value. - * - * @example - * // Returns 5 - * identity(5); - * - * @example - * // Returns 'hello' - * identity('hello'); - * - * @example - * // Returns { key: 'value' } - * identity({ key: 'value' }); - */ -declare function identity(): undefined; - -export { identity }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/identity.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/identity.d.ts deleted file mode 100644 index 4100066..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/identity.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Returns the input value unchanged. - * - * @template T - The type of the input value. - * @param {T} x - The value to be returned. - * @returns {T} The input value. - * - * @example - * // Returns 5 - * identity(5); - * - * @example - * // Returns 'hello' - * identity('hello'); - * - * @example - * // Returns { key: 'value' } - * identity({ key: 'value' }); - */ -declare function identity(value: T): T; -/** - * Returns the input value unchanged. - * - * @template T - The type of the input value. - * @param {T} x - The value to be returned. - * @returns {T} The input value. - * - * @example - * // Returns 5 - * identity(5); - * - * @example - * // Returns 'hello' - * identity('hello'); - * - * @example - * // Returns { key: 'value' } - * identity({ key: 'value' }); - */ -declare function identity(): undefined; - -export { identity }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/identity.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/identity.js deleted file mode 100644 index 6341454..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/identity.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function identity(x) { - return x; -} - -exports.identity = identity; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/identity.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/identity.mjs deleted file mode 100644 index 0ef3939..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/identity.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function identity(x) { - return x; -} - -export { identity }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/memoize.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/memoize.d.mts deleted file mode 100644 index debf704..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/memoize.d.mts +++ /dev/null @@ -1,119 +0,0 @@ -interface MapCache { - /** - * Removes the value associated with the specified key from the cache. - * - * @param key - The key of the value to remove - * @returns `true` if an element was removed, `false` if the key wasn't found - * - * @example - * ```typescript - * cache.set('user', { id: 123, name: 'John' }); - * cache.delete('user'); // Returns true - * cache.delete('unknown'); // Returns false - * ``` - */ - delete(key: any): boolean; - /** - * Retrieves the value associated with the specified key from the cache. - * - * @param key - The key of the value to retrieve - * @returns The cached value or undefined if not found - * - * @example - * ```typescript - * cache.set('user', { id: 123, name: 'John' }); - * cache.get('user'); // Returns { id: 123, name: 'John' } - * cache.get('unknown'); // Returns undefined - * ``` - */ - get(key: any): any; - /** - * Checks if the cache contains a value for the specified key. - * - * @param key - The key to check for existence - * @returns `true` if the key exists in the cache, otherwise `false` - * - * @example - * ```typescript - * cache.set('user', { id: 123, name: 'John' }); - * cache.has('user'); // Returns true - * cache.has('unknown'); // Returns false - * ``` - */ - has(key: any): boolean; - /** - * Stores a value in the cache with the specified key. - * If the key already exists, its value is updated. - * - * @param key - The key to associate with the value - * @param value - The value to store in the cache - * @returns The cache instance for method chaining - * - * @example - * ```typescript - * cache.set('user', { id: 123, name: 'John' }) - * .set('settings', { theme: 'dark' }); - * ``` - */ - set(key: any, value: any): this; - /** - * Removes all key-value pairs from the cache. - * This method is optional as some cache implementations may be immutable. - * - * @example - * ```typescript - * cache.set('user', { id: 123, name: 'John' }); - * cache.set('settings', { theme: 'dark' }); - * cache.clear(); // Cache is now empty - * ``` - */ - clear?(): void; -} -/** - * Constructor interface for creating a new MapCache instance. - * This defines the shape of a constructor that can create cache objects - * conforming to the MapCache interface. - * - * @example - * ```typescript - * class CustomCache implements MapCache { - * // Cache implementation - * } - * - * const CacheConstructor: MapCacheConstructor = CustomCache; - * const cache = new CacheConstructor(); - * ``` - */ -interface MapCacheConstructor { - new (): MapCache; -} -/** - * Represents a function that has been memoized. - * A memoized function maintains the same signature as the original function - * but adds a cache property to store previously computed results. - * - * @template T - The type of the original function being memoized - */ -interface MemoizedFunction { - /** - * The cache storing previously computed results - */ - cache: MapCache; -} -/** - * Creates a function that memoizes the result of func. If resolver is provided it determines the cache key for - * storing the result based on the arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is coerced to a string and used as the cache key. The func is invoked with - * the this binding of the memoized function. - * - * @template T - The type of the original function being memoized - * @param {T} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @return {MemoizedFunction} Returns the new memoizing function. - */ -declare function memoize any>(func: T, resolver?: (...args: Parameters) => any): T & MemoizedFunction; -declare namespace memoize { - var Cache: MapCacheConstructor; -} - -export { memoize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/memoize.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/memoize.d.ts deleted file mode 100644 index debf704..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/memoize.d.ts +++ /dev/null @@ -1,119 +0,0 @@ -interface MapCache { - /** - * Removes the value associated with the specified key from the cache. - * - * @param key - The key of the value to remove - * @returns `true` if an element was removed, `false` if the key wasn't found - * - * @example - * ```typescript - * cache.set('user', { id: 123, name: 'John' }); - * cache.delete('user'); // Returns true - * cache.delete('unknown'); // Returns false - * ``` - */ - delete(key: any): boolean; - /** - * Retrieves the value associated with the specified key from the cache. - * - * @param key - The key of the value to retrieve - * @returns The cached value or undefined if not found - * - * @example - * ```typescript - * cache.set('user', { id: 123, name: 'John' }); - * cache.get('user'); // Returns { id: 123, name: 'John' } - * cache.get('unknown'); // Returns undefined - * ``` - */ - get(key: any): any; - /** - * Checks if the cache contains a value for the specified key. - * - * @param key - The key to check for existence - * @returns `true` if the key exists in the cache, otherwise `false` - * - * @example - * ```typescript - * cache.set('user', { id: 123, name: 'John' }); - * cache.has('user'); // Returns true - * cache.has('unknown'); // Returns false - * ``` - */ - has(key: any): boolean; - /** - * Stores a value in the cache with the specified key. - * If the key already exists, its value is updated. - * - * @param key - The key to associate with the value - * @param value - The value to store in the cache - * @returns The cache instance for method chaining - * - * @example - * ```typescript - * cache.set('user', { id: 123, name: 'John' }) - * .set('settings', { theme: 'dark' }); - * ``` - */ - set(key: any, value: any): this; - /** - * Removes all key-value pairs from the cache. - * This method is optional as some cache implementations may be immutable. - * - * @example - * ```typescript - * cache.set('user', { id: 123, name: 'John' }); - * cache.set('settings', { theme: 'dark' }); - * cache.clear(); // Cache is now empty - * ``` - */ - clear?(): void; -} -/** - * Constructor interface for creating a new MapCache instance. - * This defines the shape of a constructor that can create cache objects - * conforming to the MapCache interface. - * - * @example - * ```typescript - * class CustomCache implements MapCache { - * // Cache implementation - * } - * - * const CacheConstructor: MapCacheConstructor = CustomCache; - * const cache = new CacheConstructor(); - * ``` - */ -interface MapCacheConstructor { - new (): MapCache; -} -/** - * Represents a function that has been memoized. - * A memoized function maintains the same signature as the original function - * but adds a cache property to store previously computed results. - * - * @template T - The type of the original function being memoized - */ -interface MemoizedFunction { - /** - * The cache storing previously computed results - */ - cache: MapCache; -} -/** - * Creates a function that memoizes the result of func. If resolver is provided it determines the cache key for - * storing the result based on the arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is coerced to a string and used as the cache key. The func is invoked with - * the this binding of the memoized function. - * - * @template T - The type of the original function being memoized - * @param {T} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @return {MemoizedFunction} Returns the new memoizing function. - */ -declare function memoize any>(func: T, resolver?: (...args: Parameters) => any): T & MemoizedFunction; -declare namespace memoize { - var Cache: MapCacheConstructor; -} - -export { memoize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/memoize.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/memoize.js deleted file mode 100644 index 93ae0f2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/memoize.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function memoize(func, resolver) { - if (typeof func !== 'function' || (resolver != null && typeof resolver !== 'function')) { - throw new TypeError('Expected a function'); - } - const memoized = function (...args) { - const key = resolver ? resolver.apply(this, args) : args[0]; - const cache = memoized.cache; - if (cache.has(key)) { - return cache.get(key); - } - const result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - const CacheConstructor = memoize.Cache || Map; - memoized.cache = new CacheConstructor(); - return memoized; -} -memoize.Cache = Map; - -exports.memoize = memoize; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/memoize.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/memoize.mjs deleted file mode 100644 index 9b0a0bd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/memoize.mjs +++ /dev/null @@ -1,21 +0,0 @@ -function memoize(func, resolver) { - if (typeof func !== 'function' || (resolver != null && typeof resolver !== 'function')) { - throw new TypeError('Expected a function'); - } - const memoized = function (...args) { - const key = resolver ? resolver.apply(this, args) : args[0]; - const cache = memoized.cache; - if (cache.has(key)) { - return cache.get(key); - } - const result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - const CacheConstructor = memoize.Cache || Map; - memoized.cache = new CacheConstructor(); - return memoized; -} -memoize.Cache = Map; - -export { memoize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/negate.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/negate.d.mts deleted file mode 100644 index 20fc375..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/negate.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Creates a function that negates the result of the predicate function. - * - * @template T - The type of the arguments array. - * @param {(...args: T) => boolean} predicate - The predicate to negate. - * @returns {(...args: T) => boolean} The new negated function. - * - * @example - * function isEven(n) { - * return n % 2 == 0; - * } - * - * filter([1, 2, 3, 4, 5, 6], negate(isEven)); - * // => [1, 3, 5] - */ -declare function negate(predicate: (...args: T) => boolean): (...args: T) => boolean; - -export { negate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/negate.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/negate.d.ts deleted file mode 100644 index 20fc375..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/negate.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Creates a function that negates the result of the predicate function. - * - * @template T - The type of the arguments array. - * @param {(...args: T) => boolean} predicate - The predicate to negate. - * @returns {(...args: T) => boolean} The new negated function. - * - * @example - * function isEven(n) { - * return n % 2 == 0; - * } - * - * filter([1, 2, 3, 4, 5, 6], negate(isEven)); - * // => [1, 3, 5] - */ -declare function negate(predicate: (...args: T) => boolean): (...args: T) => boolean; - -export { negate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/negate.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/negate.js deleted file mode 100644 index 4b83583..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/negate.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function negate(func) { - if (typeof func !== 'function') { - throw new TypeError('Expected a function'); - } - return function (...args) { - return !func.apply(this, args); - }; -} - -exports.negate = negate; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/negate.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/negate.mjs deleted file mode 100644 index 2d3470e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/negate.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function negate(func) { - if (typeof func !== 'function') { - throw new TypeError('Expected a function'); - } - return function (...args) { - return !func.apply(this, args); - }; -} - -export { negate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/noop.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/noop.d.mts deleted file mode 100644 index a1f3c56..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/noop.d.mts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * A no-operation function that does nothing. - * This can be used as a placeholder or default function. - * - * @example - * noop(); // Does nothing - * - * @returns {void} This function does not return anything. - */ -declare function noop(..._: any[]): void; - -export { noop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/noop.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/noop.d.ts deleted file mode 100644 index a1f3c56..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/noop.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * A no-operation function that does nothing. - * This can be used as a placeholder or default function. - * - * @example - * noop(); // Does nothing - * - * @returns {void} This function does not return anything. - */ -declare function noop(..._: any[]): void; - -export { noop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/noop.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/noop.js deleted file mode 100644 index d3cfde2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/noop.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function noop(..._) { } - -exports.noop = noop; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/noop.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/noop.mjs deleted file mode 100644 index 18bbf45..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/noop.mjs +++ /dev/null @@ -1,3 +0,0 @@ -function noop(..._) { } - -export { noop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/nthArg.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/nthArg.d.mts deleted file mode 100644 index cd7a563..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/nthArg.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Creates a function that gets the argument at index `n`. If `n` is negative, the nth argument from the end is returned. - * - * @param {number} [n=0] - The index of the argument to return. - * @returns {(...args: any[]) => any} Returns the new function. - * - * @example - * var func = nthArg(1); - * func('a', 'b', 'c', 'd'); - * // => 'b' - * - * var func = nthArg(-2); - * func('a', 'b', 'c', 'd'); - * // => 'c' - */ -declare function nthArg(n?: number): (...args: any[]) => any; - -export { nthArg }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/nthArg.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/nthArg.d.ts deleted file mode 100644 index cd7a563..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/nthArg.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Creates a function that gets the argument at index `n`. If `n` is negative, the nth argument from the end is returned. - * - * @param {number} [n=0] - The index of the argument to return. - * @returns {(...args: any[]) => any} Returns the new function. - * - * @example - * var func = nthArg(1); - * func('a', 'b', 'c', 'd'); - * // => 'b' - * - * var func = nthArg(-2); - * func('a', 'b', 'c', 'd'); - * // => 'c' - */ -declare function nthArg(n?: number): (...args: any[]) => any; - -export { nthArg }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/nthArg.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/nthArg.js deleted file mode 100644 index 32be2e5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/nthArg.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toInteger = require('../util/toInteger.js'); - -function nthArg(n = 0) { - return function (...args) { - return args.at(toInteger.toInteger(n)); - }; -} - -exports.nthArg = nthArg; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/nthArg.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/nthArg.mjs deleted file mode 100644 index 0cd7b9b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/nthArg.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { toInteger } from '../util/toInteger.mjs'; - -function nthArg(n = 0) { - return function (...args) { - return args.at(toInteger(n)); - }; -} - -export { nthArg }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/once.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/once.d.mts deleted file mode 100644 index fa1edb3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/once.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -declare function once any>(func: T): T; - -export { once }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/once.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/once.d.ts deleted file mode 100644 index fa1edb3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/once.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare function once any>(func: T): T; - -export { once }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/once.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/once.js deleted file mode 100644 index 27c8af9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/once.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const once$1 = require('../../function/once.js'); - -function once(func) { - return once$1.once(func); -} - -exports.once = once; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/once.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/once.mjs deleted file mode 100644 index cb61ca6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/once.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { once as once$1 } from '../../function/once.mjs'; - -function once(func) { - return once$1(func); -} - -export { once }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/overArgs.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/overArgs.d.mts deleted file mode 100644 index c6296e6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/overArgs.d.mts +++ /dev/null @@ -1,50 +0,0 @@ -import { Many } from '../_internal/Many.mjs'; - -/** - * Creates a function that invokes `func` with its arguments transformed by corresponding transform functions. - * - * Transform functions can be: - * - Functions that accept and return a value - * - Property names (strings) to get a property value from each argument - * - Objects to check if arguments match the object properties - * - Arrays of [property, value] to check if argument properties match values - * - * If a transform is nullish, the identity function is used instead. - * Only transforms arguments up to the number of transform functions provided. - * - * @param {(...args: any[]) => any} func - The function to wrap - * @param {Array any>>} transforms - The functions to transform arguments. Each transform can be: - * - A function that accepts and returns a value - * - A string to get a property value (e.g. 'name' gets the name property) - * - An object to check if arguments match its properties - * - An array of [property, value] to check property matches - * @returns {(...args: any[]) => any} A new function that transforms arguments before passing them to func - * @throws {TypeError} If func is not a function. - * @example - * ```ts - * function doubled(n: number) { - * return n * 2; - * } - * - * function square(n: number) { - * return n * n; - * } - * - * const func = overArgs((x, y) => [x, y], [doubled, square]); - * - * func(5, 3); - * // => [10, 9] - * - * // With property shorthand - * const user = { name: 'John', age: 30 }; - * const getUserInfo = overArgs( - * (name, age) => `${name} is ${age} years old`, - * ['name', 'age'] - * ); - * getUserInfo(user, user); - * // => "John is 30 years old" - * ``` - */ -declare function overArgs(func: (...args: any[]) => any, ..._transforms: Array any>>): (...args: any[]) => any; - -export { overArgs }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/overArgs.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/overArgs.d.ts deleted file mode 100644 index a8a30a2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/overArgs.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Many } from '../_internal/Many.js'; - -/** - * Creates a function that invokes `func` with its arguments transformed by corresponding transform functions. - * - * Transform functions can be: - * - Functions that accept and return a value - * - Property names (strings) to get a property value from each argument - * - Objects to check if arguments match the object properties - * - Arrays of [property, value] to check if argument properties match values - * - * If a transform is nullish, the identity function is used instead. - * Only transforms arguments up to the number of transform functions provided. - * - * @param {(...args: any[]) => any} func - The function to wrap - * @param {Array any>>} transforms - The functions to transform arguments. Each transform can be: - * - A function that accepts and returns a value - * - A string to get a property value (e.g. 'name' gets the name property) - * - An object to check if arguments match its properties - * - An array of [property, value] to check property matches - * @returns {(...args: any[]) => any} A new function that transforms arguments before passing them to func - * @throws {TypeError} If func is not a function. - * @example - * ```ts - * function doubled(n: number) { - * return n * 2; - * } - * - * function square(n: number) { - * return n * n; - * } - * - * const func = overArgs((x, y) => [x, y], [doubled, square]); - * - * func(5, 3); - * // => [10, 9] - * - * // With property shorthand - * const user = { name: 'John', age: 30 }; - * const getUserInfo = overArgs( - * (name, age) => `${name} is ${age} years old`, - * ['name', 'age'] - * ); - * getUserInfo(user, user); - * // => "John is 30 years old" - * ``` - */ -declare function overArgs(func: (...args: any[]) => any, ..._transforms: Array any>>): (...args: any[]) => any; - -export { overArgs }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/overArgs.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/overArgs.js deleted file mode 100644 index 2956495..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/overArgs.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const iteratee = require('../util/iteratee.js'); - -function overArgs(func, ..._transforms) { - if (typeof func !== 'function') { - throw new TypeError('Expected a function'); - } - const transforms = _transforms.flat(); - return function (...args) { - const length = Math.min(args.length, transforms.length); - const transformedArgs = [...args]; - for (let i = 0; i < length; i++) { - const transform = iteratee.iteratee(transforms[i] ?? identity.identity); - transformedArgs[i] = transform.call(this, args[i]); - } - return func.apply(this, transformedArgs); - }; -} - -exports.overArgs = overArgs; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/overArgs.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/overArgs.mjs deleted file mode 100644 index 2a607e1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/overArgs.mjs +++ /dev/null @@ -1,20 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function overArgs(func, ..._transforms) { - if (typeof func !== 'function') { - throw new TypeError('Expected a function'); - } - const transforms = _transforms.flat(); - return function (...args) { - const length = Math.min(args.length, transforms.length); - const transformedArgs = [...args]; - for (let i = 0; i < length; i++) { - const transform = iteratee(transforms[i] ?? identity); - transformedArgs[i] = transform.call(this, args[i]); - } - return func.apply(this, transformedArgs); - }; -} - -export { overArgs }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partial.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partial.d.mts deleted file mode 100644 index 63b0c05..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partial.d.mts +++ /dev/null @@ -1,204 +0,0 @@ -import { Toolkit } from '../toolkit.mjs'; - -type __ = Placeholder | Toolkit; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * @example - * const greet = (greeting: string, name: string) => `${greeting} ${name}`; - * const sayHello = partial(greet, _, 'world'); - * console.log(sayHello('Hello')); // => 'Hello world' - */ -declare function partial(func: (t1: T1, t2: T2) => R, plc1: __, arg2: T2): (t1: T1) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const calculate = (x: number, y: number, z: number) => x + y + z; - * const addToY = partial(calculate, _, 2); - * console.log(addToY(1, 3)); // => 6 - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3) => R, plc1: __, arg2: T2): (t1: T1, t3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const calculate = (x: number, y: number, z: number) => x + y + z; - * const addZ = partial(calculate, _, _, 3); - * console.log(addZ(1, 2)); // => 6 - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3) => R, plc1: __, plc2: __, arg3: T3): (t1: T1, t2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const calculate = (x: number, y: number, z: number) => x + y + z; - * const withXandZ = partial(calculate, 1, _, 3); - * console.log(withXandZ(2)); // => 6 - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3) => R, arg1: T1, plc2: __, arg3: T3): (t2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const calculate = (x: number, y: number, z: number) => x + y + z; - * const withYandZ = partial(calculate, _, 2, 3); - * console.log(withYandZ(1)); // => 6 - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3) => R, plc1: __, arg2: T2, arg3: T3): (t1: T1) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withB = partial(format, _, 'b'); - * console.log(withB('a', 'c', 'd')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, arg2: T2): (t1: T1, t3: T3, t4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withC = partial(format, _, _, 'c'); - * console.log(withC('a', 'b', 'd')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, plc2: __, arg3: T3): (t1: T1, t2: T2, t4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withAandC = partial(format, 'a', _, 'c'); - * console.log(withAandC('b', 'd')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, arg3: T3): (t2: T2, t4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withBandC = partial(format, _, 'b', 'c'); - * console.log(withBandC('a', 'd')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, arg2: T2, arg3: T3): (t1: T1, t4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withD = partial(format, _, _, _, 'd'); - * console.log(withD('a', 'b', 'c')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, plc2: __, plc3: __, arg4: T4): (t1: T1, t2: T2, t3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withAandD = partial(format, 'a', _, _, 'd'); - * console.log(withAandD('b', 'c')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, plc3: __, arg4: T4): (t2: T2, t3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withBandD = partial(format, _, 'b', _, 'd'); - * console.log(withBandD('a', 'c')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, arg2: T2, plc3: __, arg4: T4): (t1: T1, t3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withABandD = partial(format, 'a', 'b', _, 'd'); - * console.log(withABandD('c')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, arg2: T2, plc3: __, arg4: T4): (t3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withCandD = partial(format, _, _, 'c', 'd'); - * console.log(withCandD('a', 'b')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, plc2: __, arg3: T3, arg4: T4): (t1: T1, t2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withACandD = partial(format, 'a', _, 'c', 'd'); - * console.log(withACandD('b')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, arg3: T3, arg4: T4): (t2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withBCandD = partial(format, _, 'b', 'c', 'd'); - * console.log(withBCandD('a')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, arg2: T2, arg3: T3, arg4: T4): (t1: T1) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const sum = (...numbers: number[]) => numbers.reduce((a, b) => a + b, 0); - * const partialSum = partial(sum); - * console.log(partialSum(1, 2, 3)); // => 6 - */ -declare function partial(func: (...ts: TS) => R): (...ts: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const log = (prefix: string, ...messages: string[]) => console.log(prefix, ...messages); - * const debugLog = partial(log, '[DEBUG]'); - * debugLog('message 1', 'message 2'); // => '[DEBUG] message 1 message 2' - */ -declare function partial(func: (t1: T1, ...ts: TS) => R, arg1: T1): (...ts: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (prefix: string, separator: string, ...messages: string[]) => `${prefix}${messages.join(separator)}`; - * const logWithPrefix = partial(format, '[LOG]', ' - '); - * console.log(logWithPrefix('msg1', 'msg2')); // => '[LOG]msg1 - msg2' - */ -declare function partial(func: (t1: T1, t2: T2, ...ts: TS) => R, t1: T1, t2: T2): (...ts: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (type: string, level: string, message: string, ...tags: string[]) => - * `[${type}][${level}] ${message} ${tags.join(',')}`; - * const errorLog = partial(format, 'ERROR', 'HIGH', 'Something went wrong'); - * console.log(errorLog('critical', 'urgent')); // => '[ERROR][HIGH] Something went wrong critical,urgent' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, ...ts: TS) => R, t1: T1, t2: T2, t3: T3): (...ts: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string, ...rest: string[]) => - * `${a}-${b}-${c}-${d}:${rest.join(',')}`; - * const prefixedFormat = partial(format, 'a', 'b', 'c', 'd'); - * console.log(prefixedFormat('e', 'f')); // => 'a-b-c-d:e,f' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4, ...ts: TS) => R, t1: T1, t2: T2, t3: T3, t4: T4): (...ts: TS) => R; -declare namespace partial { - var placeholder: Placeholder; -} -type Placeholder = symbol | (((value: any) => any) & { - partial: typeof partial; -}); - -export { partial }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partial.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partial.d.ts deleted file mode 100644 index 899498b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partial.d.ts +++ /dev/null @@ -1,204 +0,0 @@ -import { Toolkit } from '../toolkit.js'; - -type __ = Placeholder | Toolkit; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * @example - * const greet = (greeting: string, name: string) => `${greeting} ${name}`; - * const sayHello = partial(greet, _, 'world'); - * console.log(sayHello('Hello')); // => 'Hello world' - */ -declare function partial(func: (t1: T1, t2: T2) => R, plc1: __, arg2: T2): (t1: T1) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const calculate = (x: number, y: number, z: number) => x + y + z; - * const addToY = partial(calculate, _, 2); - * console.log(addToY(1, 3)); // => 6 - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3) => R, plc1: __, arg2: T2): (t1: T1, t3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const calculate = (x: number, y: number, z: number) => x + y + z; - * const addZ = partial(calculate, _, _, 3); - * console.log(addZ(1, 2)); // => 6 - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3) => R, plc1: __, plc2: __, arg3: T3): (t1: T1, t2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const calculate = (x: number, y: number, z: number) => x + y + z; - * const withXandZ = partial(calculate, 1, _, 3); - * console.log(withXandZ(2)); // => 6 - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3) => R, arg1: T1, plc2: __, arg3: T3): (t2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const calculate = (x: number, y: number, z: number) => x + y + z; - * const withYandZ = partial(calculate, _, 2, 3); - * console.log(withYandZ(1)); // => 6 - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3) => R, plc1: __, arg2: T2, arg3: T3): (t1: T1) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withB = partial(format, _, 'b'); - * console.log(withB('a', 'c', 'd')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, arg2: T2): (t1: T1, t3: T3, t4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withC = partial(format, _, _, 'c'); - * console.log(withC('a', 'b', 'd')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, plc2: __, arg3: T3): (t1: T1, t2: T2, t4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withAandC = partial(format, 'a', _, 'c'); - * console.log(withAandC('b', 'd')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, arg3: T3): (t2: T2, t4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withBandC = partial(format, _, 'b', 'c'); - * console.log(withBandC('a', 'd')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, arg2: T2, arg3: T3): (t1: T1, t4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withD = partial(format, _, _, _, 'd'); - * console.log(withD('a', 'b', 'c')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, plc2: __, plc3: __, arg4: T4): (t1: T1, t2: T2, t3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withAandD = partial(format, 'a', _, _, 'd'); - * console.log(withAandD('b', 'c')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, plc3: __, arg4: T4): (t2: T2, t3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withBandD = partial(format, _, 'b', _, 'd'); - * console.log(withBandD('a', 'c')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, arg2: T2, plc3: __, arg4: T4): (t1: T1, t3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withABandD = partial(format, 'a', 'b', _, 'd'); - * console.log(withABandD('c')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, arg2: T2, plc3: __, arg4: T4): (t3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withCandD = partial(format, _, _, 'c', 'd'); - * console.log(withCandD('a', 'b')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, plc2: __, arg3: T3, arg4: T4): (t1: T1, t2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withACandD = partial(format, 'a', _, 'c', 'd'); - * console.log(withACandD('b')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, arg3: T3, arg4: T4): (t2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string) => `${a}-${b}-${c}-${d}`; - * const withBCandD = partial(format, _, 'b', 'c', 'd'); - * console.log(withBCandD('a')); // => 'a-b-c-d' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, plc1: __, arg2: T2, arg3: T3, arg4: T4): (t1: T1) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const sum = (...numbers: number[]) => numbers.reduce((a, b) => a + b, 0); - * const partialSum = partial(sum); - * console.log(partialSum(1, 2, 3)); // => 6 - */ -declare function partial(func: (...ts: TS) => R): (...ts: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const log = (prefix: string, ...messages: string[]) => console.log(prefix, ...messages); - * const debugLog = partial(log, '[DEBUG]'); - * debugLog('message 1', 'message 2'); // => '[DEBUG] message 1 message 2' - */ -declare function partial(func: (t1: T1, ...ts: TS) => R, arg1: T1): (...ts: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (prefix: string, separator: string, ...messages: string[]) => `${prefix}${messages.join(separator)}`; - * const logWithPrefix = partial(format, '[LOG]', ' - '); - * console.log(logWithPrefix('msg1', 'msg2')); // => '[LOG]msg1 - msg2' - */ -declare function partial(func: (t1: T1, t2: T2, ...ts: TS) => R, t1: T1, t2: T2): (...ts: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (type: string, level: string, message: string, ...tags: string[]) => - * `[${type}][${level}] ${message} ${tags.join(',')}`; - * const errorLog = partial(format, 'ERROR', 'HIGH', 'Something went wrong'); - * console.log(errorLog('critical', 'urgent')); // => '[ERROR][HIGH] Something went wrong critical,urgent' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, ...ts: TS) => R, t1: T1, t2: T2, t3: T3): (...ts: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * @example - * const format = (a: string, b: string, c: string, d: string, ...rest: string[]) => - * `${a}-${b}-${c}-${d}:${rest.join(',')}`; - * const prefixedFormat = partial(format, 'a', 'b', 'c', 'd'); - * console.log(prefixedFormat('e', 'f')); // => 'a-b-c-d:e,f' - */ -declare function partial(func: (t1: T1, t2: T2, t3: T3, t4: T4, ...ts: TS) => R, t1: T1, t2: T2, t3: T3, t4: T4): (...ts: TS) => R; -declare namespace partial { - var placeholder: Placeholder; -} -type Placeholder = symbol | (((value: any) => any) & { - partial: typeof partial; -}); - -export { partial }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partial.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partial.js deleted file mode 100644 index 905e92d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partial.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const partial$1 = require('../../function/partial.js'); - -function partial(func, ...partialArgs) { - return partial$1.partialImpl(func, partial.placeholder, ...partialArgs); -} -partial.placeholder = Symbol('compat.partial.placeholder'); - -exports.partial = partial; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partial.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partial.mjs deleted file mode 100644 index d738c95..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partial.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { partialImpl } from '../../function/partial.mjs'; - -function partial(func, ...partialArgs) { - return partialImpl(func, partial.placeholder, ...partialArgs); -} -partial.placeholder = Symbol('compat.partial.placeholder'); - -export { partial }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partialRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partialRight.d.mts deleted file mode 100644 index 1fa6c44..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partialRight.d.mts +++ /dev/null @@ -1,622 +0,0 @@ -import { Toolkit } from '../toolkit.mjs'; - -type __ = Placeholder | Toolkit; -/** - * Creates a function that invokes the provided function with no arguments. - * - * @template R The return type of the function - * @param {() => R} func The function to partially apply - * @returns {() => R} Returns the new partially applied function - * - * @example - * const greet = () => 'Hello!'; - * const sayHello = partialRight(greet); - * sayHello(); // => 'Hello!' - */ -declare function partialRight(func: () => R): () => R; -/** - * Creates a function that invokes the provided function with one argument. - * - * @template T The type of the argument - * @template R The return type of the function - * @param {(t1: T) => R} func The function to partially apply - * @returns {(t1: T) => R} Returns the new partially applied function - * - * @example - * const greet = (name: string) => `Hello ${name}!`; - * const greetPerson = partialRight(greet); - * greetPerson('Fred'); // => 'Hello Fred!' - */ -declare function partialRight(func: (t1: T) => R): (t1: T) => R; -/** - * Creates a function that invokes the provided function with one argument pre-filled. - * - * @template T The type of the argument - * @template R The return type of the function - * @param {(t1: T) => R} func The function to partially apply - * @param {T} arg1 The argument to pre-fill - * @returns {() => R} Returns the new partially applied function - * - * @example - * const greet = (name: string) => `Hello ${name}!`; - * const greetFred = partialRight(greet, 'Fred'); - * greetFred(); // => 'Hello Fred!' - */ -declare function partialRight(func: (t1: T) => R, arg1: T): () => R; -/** - * Creates a function that invokes the provided function with two arguments. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2) => R} func The function to partially apply - * @returns {(t1: T1, t2: T2) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string) => `${greeting} ${name}!`; - * const greetWithParams = partialRight(greet); - * greetWithParams('Hi', 'Fred'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2) => R): (t1: T1, t2: T2) => R; -/** - * Creates a function that invokes the provided function with one argument pre-filled and a placeholder. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2) => R} func The function to partially apply - * @param {T1} arg1 The argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @returns {(t2: T2) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string) => `${greeting} ${name}!`; - * const hiWithName = partialRight(greet, 'Hi', partialRight.placeholder); - * hiWithName('Fred'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2) => R, arg1: T1, plc2: __): (t2: T2) => R; -/** - * Creates a function that invokes the provided function with the second argument pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2) => R} func The function to partially apply - * @param {T2} arg2 The argument to pre-fill - * @returns {(t1: T1) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string) => `${greeting} ${name}!`; - * const greetFred = partialRight(greet, 'Fred'); - * greetFred('Hi'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2) => R, arg2: T2): (t1: T1) => R; -/** - * Creates a function that invokes the provided function with both arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @returns {() => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string) => `${greeting} ${name}!`; - * const sayHiToFred = partialRight(greet, 'Hi', 'Fred'); - * sayHiToFred(); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2) => R, arg1: T1, arg2: T2): () => R; -/** - * Creates a function that invokes the provided function with no pre-filled arguments. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @returns {(t1: T1, t2: T2, t3: T3) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const greetWithArgs = partialRight(greet); - * greetWithArgs('Hi', 'Fred', '!'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R): (t1: T1, t2: T2, t3: T3) => R; -/** - * Creates a function that invokes the provided function with the first argument pre-filled and placeholders for the rest. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @param {__} plc3 The placeholder for the third argument - * @returns {(t2: T2, t3: T3) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const hiWithNameAndPunc = partialRight(greet, 'Hi', partialRight.placeholder, partialRight.placeholder); - * hiWithNameAndPunc('Fred', '!'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg1: T1, plc2: __, plc3: __): (t2: T2, t3: T3) => R; -/** - * Creates a function that invokes the provided function with the second argument pre-filled and a placeholder for the third. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T2} arg2 The second argument to pre-fill - * @param {__} plc3 The placeholder for the third argument - * @returns {(t1: T1, t3: T3) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const greetFredWithPunc = partialRight(greet, 'Fred', partialRight.placeholder); - * greetFredWithPunc('Hi', '!'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg2: T2, plc3: __): (t1: T1, t3: T3) => R; -/** - * Creates a function that invokes the provided function with the first two arguments pre-filled and a placeholder for the third. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @param {__} plc3 The placeholder for the third argument - * @returns {(t3: T3) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const hiToFredWithPunc = partialRight(greet, 'Hi', 'Fred', partialRight.placeholder); - * hiToFredWithPunc('!'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg1: T1, arg2: T2, plc3: __): (t3: T3) => R; -/** - * Creates a function that invokes the provided function with the third argument pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T3} arg3 The third argument to pre-fill - * @returns {(t1: T1, t2: T2) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const greetWithExclamation = partialRight(greet, '!'); - * greetWithExclamation('Hi', 'Fred'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg3: T3): (t1: T1, t2: T2) => R; -/** - * Creates a function that invokes the provided function with the first and third arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @param {T3} arg3 The third argument to pre-fill - * @returns {(t2: T2) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const hiWithNameAndExclamation = partialRight(greet, 'Hi', partialRight.placeholder, '!'); - * hiWithNameAndExclamation('Fred'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg1: T1, plc2: __, arg3: T3): (t2: T2) => R; -/** - * Creates a function that invokes the provided function with the second and third arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T2} arg2 The second argument to pre-fill - * @param {T3} arg3 The third argument to pre-fill - * @returns {(t1: T1) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const greetFredWithExclamation = partialRight(greet, 'Fred', '!'); - * greetFredWithExclamation('Hi'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg2: T2, arg3: T3): (t1: T1) => R; -/** - * Creates a function that invokes the provided function with all three arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @param {T3} arg3 The third argument to pre-fill - * @returns {() => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const sayHiToFredWithExclamation = partialRight(greet, 'Hi', 'Fred', '!'); - * sayHiToFredWithExclamation(); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg1: T1, arg2: T2, arg3: T3): () => R; -/** - * Creates a function that invokes the provided function with no pre-filled arguments. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @returns {(t1: T1, t2: T2, t3: T3, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const formatWithArgs = partialRight(format); - * formatWithArgs('Hi', 'Fred', 'morning', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R): (t1: T1, t2: T2, t3: T3, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the first argument pre-filled and placeholders for the rest. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @param {__} plc3 The placeholder for the third argument - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t2: T2, t3: T3, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiWithRest = partialRight(format, 'Hi', partialRight.placeholder, partialRight.placeholder, partialRight.placeholder); - * hiWithRest('Fred', 'morning', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, plc3: __, plc4: __): (t2: T2, t3: T3, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the second argument pre-filled and placeholders for the rest. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T2} arg2 The second argument to pre-fill - * @param {__} plc3 The placeholder for the third argument - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t1: T1, t3: T3, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const greetFredWithRest = partialRight(format, 'Fred', partialRight.placeholder, partialRight.placeholder); - * greetFredWithRest('Hi', 'morning', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg2: T2, plc3: __, plc4: __): (t1: T1, t3: T3, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the first two arguments pre-filled and placeholders for the rest. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @param {__} plc3 The placeholder for the third argument - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t3: T3, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiToFredWithRest = partialRight(format, 'Hi', 'Fred', partialRight.placeholder, partialRight.placeholder); - * hiToFredWithRest('morning', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, arg2: T2, plc3: __, plc4: __): (t3: T3, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the third argument pre-filled and a placeholder for the fourth. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T3} arg3 The third argument to pre-fill - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t1: T1, t2: T2, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const atMorningWithPunc = partialRight(format, 'morning', partialRight.placeholder); - * atMorningWithPunc('Hi', 'Fred', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg3: T3, plc4: __): (t1: T1, t2: T2, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the first and third arguments pre-filled and a placeholder for the fourth. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @param {T3} arg3 The third argument to pre-fill - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t2: T2, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiAtMorningWithNameAndPunc = partialRight(format, 'Hi', partialRight.placeholder, 'morning', partialRight.placeholder); - * hiAtMorningWithNameAndPunc('Fred', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, arg3: T3, plc4: __): (t2: T2, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the second and third arguments pre-filled and a placeholder for the fourth. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T2} arg2 The second argument to pre-fill - * @param {T3} arg3 The third argument to pre-fill - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t1: T1, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const greetFredAtMorningWithPunc = partialRight(format, 'Fred', 'morning', partialRight.placeholder); - * greetFredAtMorningWithPunc('Hi', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg2: T2, arg3: T3, plc4: __): (t1: T1, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the first three arguments pre-filled and a placeholder for the fourth. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @param {T3} arg3 The third argument to pre-fill - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiToFredAtMorningWithPunc = partialRight(format, 'Hi', 'Fred', 'morning', partialRight.placeholder); - * hiToFredAtMorningWithPunc('!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, arg2: T2, arg3: T3, plc4: __): (t4: T4) => R; -/** - * Creates a function that invokes the provided function with the fourth argument pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t1: T1, t2: T2, t3: T3) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const withExclamation = partialRight(format, '!'); - * withExclamation('Hi', 'Fred', 'morning'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg4: T4): (t1: T1, t2: T2, t3: T3) => R; -/** - * Creates a function that invokes the provided function with the first and fourth arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @param {__} plc3 The placeholder for the third argument - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t2: T2, t3: T3) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiWithExclamation = partialRight(format, 'Hi', partialRight.placeholder, partialRight.placeholder, '!'); - * hiWithExclamation('Fred', 'morning'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, plc3: __, arg4: T4): (t2: T2, t3: T3) => R; -/** - * Creates a function that invokes the provided function with the second and fourth arguments pre-filled and a placeholder for the third. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T2} arg2 The second argument to pre-fill - * @param {__} plc3 The placeholder for the third argument - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t1: T1, t3: T3) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const greetFredWithTime = partialRight(format, 'Fred', partialRight.placeholder, '!'); - * greetFredWithTime('Hi', 'morning'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg2: T2, plc3: __, arg4: T4): (t1: T1, t3: T3) => R; -/** - * Creates a function that invokes the provided function with the first, second and fourth arguments pre-filled and a placeholder for the third. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @param {__} plc3 The placeholder for the third argument - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t3: T3) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiToFredWithTime = partialRight(format, 'Hi', 'Fred', partialRight.placeholder, '!'); - * hiToFredWithTime('morning'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, arg2: T2, plc3: __, arg4: T4): (t3: T3) => R; -/** - * Creates a function that invokes the provided function with the third and fourth arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T3} arg3 The third argument to pre-fill - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t1: T1, t2: T2) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const inMorningWithExclamation = partialRight(format, 'morning', '!'); - * inMorningWithExclamation('Hi', 'Fred'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg3: T3, arg4: T4): (t1: T1, t2: T2) => R; -/** - * Creates a function that invokes the provided function with the first, third and fourth arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @param {T3} arg3 The third argument to pre-fill - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t2: T2) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiInMorningWithExclamation = partialRight(format, 'Hi', partialRight.placeholder, 'morning', '!'); - * hiInMorningWithExclamation('Fred'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, arg3: T3, arg4: T4): (t2: T2) => R; -/** - * Creates a function that invokes the provided function with the second, third and fourth arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T2} arg2 The second argument to pre-fill - * @param {T3} arg3 The third argument to pre-fill - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t1: T1) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const greetFredInMorningWithExclamation = partialRight(format, 'Fred', 'morning', '!'); - * greetFredInMorningWithExclamation('Hi'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg2: T2, arg3: T3, arg4: T4): (t1: T1) => R; -/** - * Creates a function that invokes the provided function with all arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @param {T3} arg3 The third argument to pre-fill - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {() => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const sayHiToFredInMorningWithExclamation = partialRight(format, 'Hi', 'Fred', 'morning', '!'); - * sayHiToFredInMorningWithExclamation(); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, arg2: T2, arg3: T3, arg4: T4): () => R; -/** - * Creates a function that invokes the provided function with partially applied arguments appended to the arguments it receives. - * The partialRight.placeholder value can be used as a placeholder for partially applied arguments. - * - * @template F The type of the function to partially apply - * @param {F} func The function to partially apply arguments to - * @param {...any[]} args The arguments to be partially applied - * @returns {(...args: any[]) => ReturnType} Returns the new partially applied function - * - * @example - * function greet(greeting: string, name: string) { - * return greeting + ' ' + name; - * } - * - * const greetFred = partialRight(greet, 'Fred'); - * greetFred('Hi'); // => 'Hi Fred' - * - * // Using placeholders - * const sayHelloTo = partialRight(greet, 'Hello', partialRight.placeholder); - * sayHelloTo('Fred'); // => 'Hello Fred' - */ -declare function partialRight(func: (...args: any[]) => any, ...args: any[]): (...args: any[]) => any; -declare namespace partialRight { - var placeholder: Placeholder; -} -type Placeholder = symbol | (((value: any) => any) & { - partialRight: typeof partialRight; -}); - -export { partialRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partialRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partialRight.d.ts deleted file mode 100644 index 0cf4a9b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partialRight.d.ts +++ /dev/null @@ -1,622 +0,0 @@ -import { Toolkit } from '../toolkit.js'; - -type __ = Placeholder | Toolkit; -/** - * Creates a function that invokes the provided function with no arguments. - * - * @template R The return type of the function - * @param {() => R} func The function to partially apply - * @returns {() => R} Returns the new partially applied function - * - * @example - * const greet = () => 'Hello!'; - * const sayHello = partialRight(greet); - * sayHello(); // => 'Hello!' - */ -declare function partialRight(func: () => R): () => R; -/** - * Creates a function that invokes the provided function with one argument. - * - * @template T The type of the argument - * @template R The return type of the function - * @param {(t1: T) => R} func The function to partially apply - * @returns {(t1: T) => R} Returns the new partially applied function - * - * @example - * const greet = (name: string) => `Hello ${name}!`; - * const greetPerson = partialRight(greet); - * greetPerson('Fred'); // => 'Hello Fred!' - */ -declare function partialRight(func: (t1: T) => R): (t1: T) => R; -/** - * Creates a function that invokes the provided function with one argument pre-filled. - * - * @template T The type of the argument - * @template R The return type of the function - * @param {(t1: T) => R} func The function to partially apply - * @param {T} arg1 The argument to pre-fill - * @returns {() => R} Returns the new partially applied function - * - * @example - * const greet = (name: string) => `Hello ${name}!`; - * const greetFred = partialRight(greet, 'Fred'); - * greetFred(); // => 'Hello Fred!' - */ -declare function partialRight(func: (t1: T) => R, arg1: T): () => R; -/** - * Creates a function that invokes the provided function with two arguments. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2) => R} func The function to partially apply - * @returns {(t1: T1, t2: T2) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string) => `${greeting} ${name}!`; - * const greetWithParams = partialRight(greet); - * greetWithParams('Hi', 'Fred'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2) => R): (t1: T1, t2: T2) => R; -/** - * Creates a function that invokes the provided function with one argument pre-filled and a placeholder. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2) => R} func The function to partially apply - * @param {T1} arg1 The argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @returns {(t2: T2) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string) => `${greeting} ${name}!`; - * const hiWithName = partialRight(greet, 'Hi', partialRight.placeholder); - * hiWithName('Fred'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2) => R, arg1: T1, plc2: __): (t2: T2) => R; -/** - * Creates a function that invokes the provided function with the second argument pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2) => R} func The function to partially apply - * @param {T2} arg2 The argument to pre-fill - * @returns {(t1: T1) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string) => `${greeting} ${name}!`; - * const greetFred = partialRight(greet, 'Fred'); - * greetFred('Hi'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2) => R, arg2: T2): (t1: T1) => R; -/** - * Creates a function that invokes the provided function with both arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @returns {() => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string) => `${greeting} ${name}!`; - * const sayHiToFred = partialRight(greet, 'Hi', 'Fred'); - * sayHiToFred(); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2) => R, arg1: T1, arg2: T2): () => R; -/** - * Creates a function that invokes the provided function with no pre-filled arguments. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @returns {(t1: T1, t2: T2, t3: T3) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const greetWithArgs = partialRight(greet); - * greetWithArgs('Hi', 'Fred', '!'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R): (t1: T1, t2: T2, t3: T3) => R; -/** - * Creates a function that invokes the provided function with the first argument pre-filled and placeholders for the rest. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @param {__} plc3 The placeholder for the third argument - * @returns {(t2: T2, t3: T3) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const hiWithNameAndPunc = partialRight(greet, 'Hi', partialRight.placeholder, partialRight.placeholder); - * hiWithNameAndPunc('Fred', '!'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg1: T1, plc2: __, plc3: __): (t2: T2, t3: T3) => R; -/** - * Creates a function that invokes the provided function with the second argument pre-filled and a placeholder for the third. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T2} arg2 The second argument to pre-fill - * @param {__} plc3 The placeholder for the third argument - * @returns {(t1: T1, t3: T3) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const greetFredWithPunc = partialRight(greet, 'Fred', partialRight.placeholder); - * greetFredWithPunc('Hi', '!'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg2: T2, plc3: __): (t1: T1, t3: T3) => R; -/** - * Creates a function that invokes the provided function with the first two arguments pre-filled and a placeholder for the third. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @param {__} plc3 The placeholder for the third argument - * @returns {(t3: T3) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const hiToFredWithPunc = partialRight(greet, 'Hi', 'Fred', partialRight.placeholder); - * hiToFredWithPunc('!'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg1: T1, arg2: T2, plc3: __): (t3: T3) => R; -/** - * Creates a function that invokes the provided function with the third argument pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T3} arg3 The third argument to pre-fill - * @returns {(t1: T1, t2: T2) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const greetWithExclamation = partialRight(greet, '!'); - * greetWithExclamation('Hi', 'Fred'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg3: T3): (t1: T1, t2: T2) => R; -/** - * Creates a function that invokes the provided function with the first and third arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @param {T3} arg3 The third argument to pre-fill - * @returns {(t2: T2) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const hiWithNameAndExclamation = partialRight(greet, 'Hi', partialRight.placeholder, '!'); - * hiWithNameAndExclamation('Fred'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg1: T1, plc2: __, arg3: T3): (t2: T2) => R; -/** - * Creates a function that invokes the provided function with the second and third arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T2} arg2 The second argument to pre-fill - * @param {T3} arg3 The third argument to pre-fill - * @returns {(t1: T1) => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const greetFredWithExclamation = partialRight(greet, 'Fred', '!'); - * greetFredWithExclamation('Hi'); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg2: T2, arg3: T3): (t1: T1) => R; -/** - * Creates a function that invokes the provided function with all three arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @param {T3} arg3 The third argument to pre-fill - * @returns {() => R} Returns the new partially applied function - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting} ${name}${punctuation}`; - * const sayHiToFredWithExclamation = partialRight(greet, 'Hi', 'Fred', '!'); - * sayHiToFredWithExclamation(); // => 'Hi Fred!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3) => R, arg1: T1, arg2: T2, arg3: T3): () => R; -/** - * Creates a function that invokes the provided function with no pre-filled arguments. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @returns {(t1: T1, t2: T2, t3: T3, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const formatWithArgs = partialRight(format); - * formatWithArgs('Hi', 'Fred', 'morning', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R): (t1: T1, t2: T2, t3: T3, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the first argument pre-filled and placeholders for the rest. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @param {__} plc3 The placeholder for the third argument - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t2: T2, t3: T3, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiWithRest = partialRight(format, 'Hi', partialRight.placeholder, partialRight.placeholder, partialRight.placeholder); - * hiWithRest('Fred', 'morning', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, plc3: __, plc4: __): (t2: T2, t3: T3, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the second argument pre-filled and placeholders for the rest. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T2} arg2 The second argument to pre-fill - * @param {__} plc3 The placeholder for the third argument - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t1: T1, t3: T3, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const greetFredWithRest = partialRight(format, 'Fred', partialRight.placeholder, partialRight.placeholder); - * greetFredWithRest('Hi', 'morning', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg2: T2, plc3: __, plc4: __): (t1: T1, t3: T3, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the first two arguments pre-filled and placeholders for the rest. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @param {__} plc3 The placeholder for the third argument - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t3: T3, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiToFredWithRest = partialRight(format, 'Hi', 'Fred', partialRight.placeholder, partialRight.placeholder); - * hiToFredWithRest('morning', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, arg2: T2, plc3: __, plc4: __): (t3: T3, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the third argument pre-filled and a placeholder for the fourth. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T3} arg3 The third argument to pre-fill - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t1: T1, t2: T2, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const atMorningWithPunc = partialRight(format, 'morning', partialRight.placeholder); - * atMorningWithPunc('Hi', 'Fred', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg3: T3, plc4: __): (t1: T1, t2: T2, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the first and third arguments pre-filled and a placeholder for the fourth. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @param {T3} arg3 The third argument to pre-fill - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t2: T2, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiAtMorningWithNameAndPunc = partialRight(format, 'Hi', partialRight.placeholder, 'morning', partialRight.placeholder); - * hiAtMorningWithNameAndPunc('Fred', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, arg3: T3, plc4: __): (t2: T2, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the second and third arguments pre-filled and a placeholder for the fourth. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T2} arg2 The second argument to pre-fill - * @param {T3} arg3 The third argument to pre-fill - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t1: T1, t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const greetFredAtMorningWithPunc = partialRight(format, 'Fred', 'morning', partialRight.placeholder); - * greetFredAtMorningWithPunc('Hi', '!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg2: T2, arg3: T3, plc4: __): (t1: T1, t4: T4) => R; -/** - * Creates a function that invokes the provided function with the first three arguments pre-filled and a placeholder for the fourth. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @param {T3} arg3 The third argument to pre-fill - * @param {__} plc4 The placeholder for the fourth argument - * @returns {(t4: T4) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiToFredAtMorningWithPunc = partialRight(format, 'Hi', 'Fred', 'morning', partialRight.placeholder); - * hiToFredAtMorningWithPunc('!'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, arg2: T2, arg3: T3, plc4: __): (t4: T4) => R; -/** - * Creates a function that invokes the provided function with the fourth argument pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t1: T1, t2: T2, t3: T3) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const withExclamation = partialRight(format, '!'); - * withExclamation('Hi', 'Fred', 'morning'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg4: T4): (t1: T1, t2: T2, t3: T3) => R; -/** - * Creates a function that invokes the provided function with the first and fourth arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @param {__} plc3 The placeholder for the third argument - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t2: T2, t3: T3) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiWithExclamation = partialRight(format, 'Hi', partialRight.placeholder, partialRight.placeholder, '!'); - * hiWithExclamation('Fred', 'morning'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, plc3: __, arg4: T4): (t2: T2, t3: T3) => R; -/** - * Creates a function that invokes the provided function with the second and fourth arguments pre-filled and a placeholder for the third. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T2} arg2 The second argument to pre-fill - * @param {__} plc3 The placeholder for the third argument - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t1: T1, t3: T3) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const greetFredWithTime = partialRight(format, 'Fred', partialRight.placeholder, '!'); - * greetFredWithTime('Hi', 'morning'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg2: T2, plc3: __, arg4: T4): (t1: T1, t3: T3) => R; -/** - * Creates a function that invokes the provided function with the first, second and fourth arguments pre-filled and a placeholder for the third. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @param {__} plc3 The placeholder for the third argument - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t3: T3) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiToFredWithTime = partialRight(format, 'Hi', 'Fred', partialRight.placeholder, '!'); - * hiToFredWithTime('morning'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, arg2: T2, plc3: __, arg4: T4): (t3: T3) => R; -/** - * Creates a function that invokes the provided function with the third and fourth arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T3} arg3 The third argument to pre-fill - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t1: T1, t2: T2) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const inMorningWithExclamation = partialRight(format, 'morning', '!'); - * inMorningWithExclamation('Hi', 'Fred'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg3: T3, arg4: T4): (t1: T1, t2: T2) => R; -/** - * Creates a function that invokes the provided function with the first, third and fourth arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {__} plc2 The placeholder for the second argument - * @param {T3} arg3 The third argument to pre-fill - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t2: T2) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const hiInMorningWithExclamation = partialRight(format, 'Hi', partialRight.placeholder, 'morning', '!'); - * hiInMorningWithExclamation('Fred'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, plc2: __, arg3: T3, arg4: T4): (t2: T2) => R; -/** - * Creates a function that invokes the provided function with the second, third and fourth arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T2} arg2 The second argument to pre-fill - * @param {T3} arg3 The third argument to pre-fill - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {(t1: T1) => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const greetFredInMorningWithExclamation = partialRight(format, 'Fred', 'morning', '!'); - * greetFredInMorningWithExclamation('Hi'); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg2: T2, arg3: T3, arg4: T4): (t1: T1) => R; -/** - * Creates a function that invokes the provided function with all arguments pre-filled. - * - * @template T1 The type of the first argument - * @template T2 The type of the second argument - * @template T3 The type of the third argument - * @template T4 The type of the fourth argument - * @template R The return type of the function - * @param {(t1: T1, t2: T2, t3: T3, t4: T4) => R} func The function to partially apply - * @param {T1} arg1 The first argument to pre-fill - * @param {T2} arg2 The second argument to pre-fill - * @param {T3} arg3 The third argument to pre-fill - * @param {T4} arg4 The fourth argument to pre-fill - * @returns {() => R} Returns the new partially applied function - * - * @example - * const format = (greeting: string, name: string, time: string, punctuation: string) => - * `${greeting} ${name}, it's ${time}${punctuation}`; - * const sayHiToFredInMorningWithExclamation = partialRight(format, 'Hi', 'Fred', 'morning', '!'); - * sayHiToFredInMorningWithExclamation(); // => 'Hi Fred, it's morning!' - */ -declare function partialRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arg1: T1, arg2: T2, arg3: T3, arg4: T4): () => R; -/** - * Creates a function that invokes the provided function with partially applied arguments appended to the arguments it receives. - * The partialRight.placeholder value can be used as a placeholder for partially applied arguments. - * - * @template F The type of the function to partially apply - * @param {F} func The function to partially apply arguments to - * @param {...any[]} args The arguments to be partially applied - * @returns {(...args: any[]) => ReturnType} Returns the new partially applied function - * - * @example - * function greet(greeting: string, name: string) { - * return greeting + ' ' + name; - * } - * - * const greetFred = partialRight(greet, 'Fred'); - * greetFred('Hi'); // => 'Hi Fred' - * - * // Using placeholders - * const sayHelloTo = partialRight(greet, 'Hello', partialRight.placeholder); - * sayHelloTo('Fred'); // => 'Hello Fred' - */ -declare function partialRight(func: (...args: any[]) => any, ...args: any[]): (...args: any[]) => any; -declare namespace partialRight { - var placeholder: Placeholder; -} -type Placeholder = symbol | (((value: any) => any) & { - partialRight: typeof partialRight; -}); - -export { partialRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partialRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partialRight.js deleted file mode 100644 index 1217ee9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partialRight.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const partialRight$1 = require('../../function/partialRight.js'); - -function partialRight(func, ...partialArgs) { - return partialRight$1.partialRightImpl(func, partialRight.placeholder, ...partialArgs); -} -partialRight.placeholder = Symbol('compat.partialRight.placeholder'); - -exports.partialRight = partialRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partialRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partialRight.mjs deleted file mode 100644 index ad20a9a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/partialRight.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { partialRightImpl } from '../../function/partialRight.mjs'; - -function partialRight(func, ...partialArgs) { - return partialRightImpl(func, partialRight.placeholder, ...partialArgs); -} -partialRight.placeholder = Symbol('compat.partialRight.placeholder'); - -export { partialRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rearg.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rearg.d.mts deleted file mode 100644 index 37402cb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rearg.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -import { Many } from '../_internal/Many.mjs'; - -/** - * Creates a function that invokes `func` with arguments arranged according to the specified `indices` - * where the argument value at the first index is provided as the first argument, - * the argument value at the second index is provided as the second argument, and so on. - * - * @param {(...args: any[]) => any} func The function to rearrange arguments for. - * @param {Array} indices The arranged argument indices. - * @returns {(...args: any[]) => any} Returns the new function. - * - * @example - * const greet = (greeting: string, name: string) => `${greeting}, ${name}!`; - * const rearrangedGreet = rearg(greet, 1, 0); - * console.log(rearrangedGreet('World', 'Hello')); // Output: "Hello, World!" - */ -declare function rearg(func: (...args: any[]) => any, ...indices: Array>): (...args: any[]) => any; - -export { rearg }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rearg.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rearg.d.ts deleted file mode 100644 index 5658f42..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rearg.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Many } from '../_internal/Many.js'; - -/** - * Creates a function that invokes `func` with arguments arranged according to the specified `indices` - * where the argument value at the first index is provided as the first argument, - * the argument value at the second index is provided as the second argument, and so on. - * - * @param {(...args: any[]) => any} func The function to rearrange arguments for. - * @param {Array} indices The arranged argument indices. - * @returns {(...args: any[]) => any} Returns the new function. - * - * @example - * const greet = (greeting: string, name: string) => `${greeting}, ${name}!`; - * const rearrangedGreet = rearg(greet, 1, 0); - * console.log(rearrangedGreet('World', 'Hello')); // Output: "Hello, World!" - */ -declare function rearg(func: (...args: any[]) => any, ...indices: Array>): (...args: any[]) => any; - -export { rearg }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rearg.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rearg.js deleted file mode 100644 index 2842efb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rearg.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flatten = require('../array/flatten.js'); - -function rearg(func, ...indices) { - const flattenIndices = flatten.flatten(indices); - return function (...args) { - const reorderedArgs = flattenIndices.map(i => args[i]).slice(0, args.length); - for (let i = reorderedArgs.length; i < args.length; i++) { - reorderedArgs.push(args[i]); - } - return func.apply(this, reorderedArgs); - }; -} - -exports.rearg = rearg; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rearg.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rearg.mjs deleted file mode 100644 index 680a9fe..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rearg.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { flatten } from '../array/flatten.mjs'; - -function rearg(func, ...indices) { - const flattenIndices = flatten(indices); - return function (...args) { - const reorderedArgs = flattenIndices.map(i => args[i]).slice(0, args.length); - for (let i = reorderedArgs.length; i < args.length; i++) { - reorderedArgs.push(args[i]); - } - return func.apply(this, reorderedArgs); - }; -} - -export { rearg }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rest.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rest.d.mts deleted file mode 100644 index b90c7aa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rest.d.mts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Creates a function that transforms the arguments of the provided function `func`. - * The transformed arguments are passed to `func` such that the arguments starting from a specified index - * are grouped into an array, while the previous arguments are passed as individual elements. - * - * @param {(...args: any[]) => any} func - The function whose arguments are to be transformed. - * @param {number} [start=func.length - 1] - The index from which to start grouping the remaining arguments into an array. - * Defaults to `func.length - 1`, grouping all arguments after the last parameter. - * @returns {(...args: any[]) => any} A new function that, when called, returns the result of calling `func` with the transformed arguments. - * - * The transformed arguments are: - * - The first `start` arguments as individual elements. - * - The remaining arguments from index `start` onward grouped into an array. - * @example - * function fn(a, b, c) { - * return [a, b, c]; - * } - * - * // Using default start index (func.length - 1, which is 2 in this case) - * const transformedFn = rest(fn); - * console.log(transformedFn(1, 2, 3, 4)); // [1, 2, [3, 4]] - * - * // Using start index 1 - * const transformedFnWithStart = rest(fn, 1); - * console.log(transformedFnWithStart(1, 2, 3, 4)); // [1, [2, 3, 4]] - * - * // With fewer arguments than the start index - * console.log(transformedFn(1)); // [1, undefined, []] - */ -declare function rest(func: (...args: any[]) => any, start?: number): (...args: any[]) => any; - -export { rest }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rest.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rest.d.ts deleted file mode 100644 index b90c7aa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rest.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Creates a function that transforms the arguments of the provided function `func`. - * The transformed arguments are passed to `func` such that the arguments starting from a specified index - * are grouped into an array, while the previous arguments are passed as individual elements. - * - * @param {(...args: any[]) => any} func - The function whose arguments are to be transformed. - * @param {number} [start=func.length - 1] - The index from which to start grouping the remaining arguments into an array. - * Defaults to `func.length - 1`, grouping all arguments after the last parameter. - * @returns {(...args: any[]) => any} A new function that, when called, returns the result of calling `func` with the transformed arguments. - * - * The transformed arguments are: - * - The first `start` arguments as individual elements. - * - The remaining arguments from index `start` onward grouped into an array. - * @example - * function fn(a, b, c) { - * return [a, b, c]; - * } - * - * // Using default start index (func.length - 1, which is 2 in this case) - * const transformedFn = rest(fn); - * console.log(transformedFn(1, 2, 3, 4)); // [1, 2, [3, 4]] - * - * // Using start index 1 - * const transformedFnWithStart = rest(fn, 1); - * console.log(transformedFnWithStart(1, 2, 3, 4)); // [1, [2, 3, 4]] - * - * // With fewer arguments than the start index - * console.log(transformedFn(1)); // [1, undefined, []] - */ -declare function rest(func: (...args: any[]) => any, start?: number): (...args: any[]) => any; - -export { rest }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rest.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rest.js deleted file mode 100644 index 0415b84..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rest.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const rest$1 = require('../../function/rest.js'); - -function rest(func, start = func.length - 1) { - start = Number.parseInt(start, 10); - if (Number.isNaN(start) || start < 0) { - start = func.length - 1; - } - return rest$1.rest(func, start); -} - -exports.rest = rest; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rest.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rest.mjs deleted file mode 100644 index 5f8999d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/rest.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { rest as rest$1 } from '../../function/rest.mjs'; - -function rest(func, start = func.length - 1) { - start = Number.parseInt(start, 10); - if (Number.isNaN(start) || start < 0) { - start = func.length - 1; - } - return rest$1(func, start); -} - -export { rest }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/spread.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/spread.d.mts deleted file mode 100644 index 097d690..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/spread.d.mts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Creates a new function that spreads elements of an array argument into individual arguments - * for the original function. The array argument is positioned based on the `argsIndex` parameter. - * - * @template F - A function type with any number of parameters and any return type. - * @param {F} func - The function to be transformed. It can be any function with any number of arguments. - * @param {number} [argsIndex=0] - The index where the array argument is positioned among the other arguments. - * If `argsIndex` is negative or `NaN`, it defaults to `0`. If it's a fractional number, it is rounded to the nearest integer. - * @returns {(...args: any[]) => ReturnType} - A new function that takes multiple arguments, including an array of arguments at the specified `argsIndex`, - * and returns the result of calling the original function with those arguments. - * - * @example - * function add(a, b) { - * return a + b; - * } - * - * const spreadAdd = spread(add); - * console.log(spreadAdd([1, 2])); // Output: 3 - * - * @example - * // Example function to spread arguments over - * function add(a, b) { - * return a + b; - * } - * - * // Create a new function that uses `spread` to combine arguments - * const spreadAdd = spread(add, 1); - * - * // Calling `spreadAdd` with an array as the second argument - * console.log(spreadAdd(1, [2])); // Output: 3 - * - * @example - * // Function with default arguments - * function greet(name, greeting = 'Hello') { - * return `${greeting}, ${name}!`; - * } - * - * // Create a new function that uses `spread` to position the argument array at index 0 - * const spreadGreet = spread(greet, 0); - * - * // Calling `spreadGreet` with an array of arguments - * console.log(spreadGreet(['Alice'])); // Output: Hello, Alice! - * console.log(spreadGreet(['Bob', 'Hi'])); // Output: Hi, Bob! - */ -declare function spread(func: (...args: any[]) => R, argsIndex?: number): (...args: any[]) => R; - -export { spread }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/spread.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/spread.d.ts deleted file mode 100644 index 097d690..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/spread.d.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Creates a new function that spreads elements of an array argument into individual arguments - * for the original function. The array argument is positioned based on the `argsIndex` parameter. - * - * @template F - A function type with any number of parameters and any return type. - * @param {F} func - The function to be transformed. It can be any function with any number of arguments. - * @param {number} [argsIndex=0] - The index where the array argument is positioned among the other arguments. - * If `argsIndex` is negative or `NaN`, it defaults to `0`. If it's a fractional number, it is rounded to the nearest integer. - * @returns {(...args: any[]) => ReturnType} - A new function that takes multiple arguments, including an array of arguments at the specified `argsIndex`, - * and returns the result of calling the original function with those arguments. - * - * @example - * function add(a, b) { - * return a + b; - * } - * - * const spreadAdd = spread(add); - * console.log(spreadAdd([1, 2])); // Output: 3 - * - * @example - * // Example function to spread arguments over - * function add(a, b) { - * return a + b; - * } - * - * // Create a new function that uses `spread` to combine arguments - * const spreadAdd = spread(add, 1); - * - * // Calling `spreadAdd` with an array as the second argument - * console.log(spreadAdd(1, [2])); // Output: 3 - * - * @example - * // Function with default arguments - * function greet(name, greeting = 'Hello') { - * return `${greeting}, ${name}!`; - * } - * - * // Create a new function that uses `spread` to position the argument array at index 0 - * const spreadGreet = spread(greet, 0); - * - * // Calling `spreadGreet` with an array of arguments - * console.log(spreadGreet(['Alice'])); // Output: Hello, Alice! - * console.log(spreadGreet(['Bob', 'Hi'])); // Output: Hi, Bob! - */ -declare function spread(func: (...args: any[]) => R, argsIndex?: number): (...args: any[]) => R; - -export { spread }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/spread.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/spread.js deleted file mode 100644 index af09556..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/spread.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function spread(func, argsIndex = 0) { - argsIndex = Number.parseInt(argsIndex, 10); - if (Number.isNaN(argsIndex) || argsIndex < 0) { - argsIndex = 0; - } - return function (...args) { - const array = args[argsIndex]; - const params = args.slice(0, argsIndex); - if (array) { - params.push(...array); - } - return func.apply(this, params); - }; -} - -exports.spread = spread; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/spread.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/spread.mjs deleted file mode 100644 index 149cd2a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/spread.mjs +++ /dev/null @@ -1,16 +0,0 @@ -function spread(func, argsIndex = 0) { - argsIndex = Number.parseInt(argsIndex, 10); - if (Number.isNaN(argsIndex) || argsIndex < 0) { - argsIndex = 0; - } - return function (...args) { - const array = args[argsIndex]; - const params = args.slice(0, argsIndex); - if (array) { - params.push(...array); - } - return func.apply(this, params); - }; -} - -export { spread }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/throttle.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/throttle.d.mts deleted file mode 100644 index f09d0ec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/throttle.d.mts +++ /dev/null @@ -1,81 +0,0 @@ -import { DebouncedFuncLeading, DebouncedFunc } from './debounce.mjs'; - -interface ThrottleSettings { - /** - * If `true`, the function will be invoked on the leading edge of the timeout. - * @default true - */ - leading?: boolean | undefined; - /** - * If `true`, the function will be invoked on the trailing edge of the timeout. - * @default true - */ - trailing?: boolean | undefined; -} -type ThrottleSettingsLeading = (ThrottleSettings & { - leading: true; -}) | Omit; -/** - * Creates a throttled function that only invokes the provided function at most once - * per every `throttleMs` milliseconds. Subsequent calls to the throttled function - * within the wait time will not trigger the execution of the original function. - * - * @template F - The type of function. - * @param {F} func - The function to throttle. - * @param {number} throttleMs - The number of milliseconds to throttle executions to. - * @param {ThrottleOptions} options - The options object - * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the throttled function. - * @param {boolean} options.leading - If `true`, the function will be invoked on the leading edge of the timeout. - * @param {boolean} options.trailing - If `true`, the function will be invoked on the trailing edge of the timeout. - * @returns {(...args: Parameters) => void} A new throttled function that accepts the same parameters as the original function. - * - * @example - * const throttledFunction = throttle(() => { - * console.log('Function executed'); - * }, 1000); - * - * // Will log 'Function executed' immediately - * throttledFunction(); - * - * // Will not log anything as it is within the throttle time - * throttledFunction(); - * - * // After 1 second - * setTimeout(() => { - * throttledFunction(); // Will log 'Function executed' - * }, 1000); - */ -declare function throttle any>(func: T, throttleMs?: number, options?: ThrottleSettingsLeading): DebouncedFuncLeading; -/** - * Creates a throttled function that only invokes the provided function at most once - * per every `throttleMs` milliseconds. Subsequent calls to the throttled function - * within the wait time will not trigger the execution of the original function. - * - * @template F - The type of function. - * @param {F} func - The function to throttle. - * @param {number} throttleMs - The number of milliseconds to throttle executions to. - * @param {ThrottleOptions} options - The options object - * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the throttled function. - * @param {boolean} options.leading - If `true`, the function will be invoked on the leading edge of the timeout. - * @param {boolean} options.trailing - If `true`, the function will be invoked on the trailing edge of the timeout. - * @returns {(...args: Parameters) => void} A new throttled function that accepts the same parameters as the original function. - * - * @example - * const throttledFunction = throttle(() => { - * console.log('Function executed'); - * }, 1000); - * - * // Will log 'Function executed' immediately - * throttledFunction(); - * - * // Will not log anything as it is within the throttle time - * throttledFunction(); - * - * // After 1 second - * setTimeout(() => { - * throttledFunction(); // Will log 'Function executed' - * }, 1000); - */ -declare function throttle any>(func: T, throttleMs?: number, options?: ThrottleSettings): DebouncedFunc; - -export { throttle }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/throttle.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/throttle.d.ts deleted file mode 100644 index 00044f4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/throttle.d.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { DebouncedFuncLeading, DebouncedFunc } from './debounce.js'; - -interface ThrottleSettings { - /** - * If `true`, the function will be invoked on the leading edge of the timeout. - * @default true - */ - leading?: boolean | undefined; - /** - * If `true`, the function will be invoked on the trailing edge of the timeout. - * @default true - */ - trailing?: boolean | undefined; -} -type ThrottleSettingsLeading = (ThrottleSettings & { - leading: true; -}) | Omit; -/** - * Creates a throttled function that only invokes the provided function at most once - * per every `throttleMs` milliseconds. Subsequent calls to the throttled function - * within the wait time will not trigger the execution of the original function. - * - * @template F - The type of function. - * @param {F} func - The function to throttle. - * @param {number} throttleMs - The number of milliseconds to throttle executions to. - * @param {ThrottleOptions} options - The options object - * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the throttled function. - * @param {boolean} options.leading - If `true`, the function will be invoked on the leading edge of the timeout. - * @param {boolean} options.trailing - If `true`, the function will be invoked on the trailing edge of the timeout. - * @returns {(...args: Parameters) => void} A new throttled function that accepts the same parameters as the original function. - * - * @example - * const throttledFunction = throttle(() => { - * console.log('Function executed'); - * }, 1000); - * - * // Will log 'Function executed' immediately - * throttledFunction(); - * - * // Will not log anything as it is within the throttle time - * throttledFunction(); - * - * // After 1 second - * setTimeout(() => { - * throttledFunction(); // Will log 'Function executed' - * }, 1000); - */ -declare function throttle any>(func: T, throttleMs?: number, options?: ThrottleSettingsLeading): DebouncedFuncLeading; -/** - * Creates a throttled function that only invokes the provided function at most once - * per every `throttleMs` milliseconds. Subsequent calls to the throttled function - * within the wait time will not trigger the execution of the original function. - * - * @template F - The type of function. - * @param {F} func - The function to throttle. - * @param {number} throttleMs - The number of milliseconds to throttle executions to. - * @param {ThrottleOptions} options - The options object - * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the throttled function. - * @param {boolean} options.leading - If `true`, the function will be invoked on the leading edge of the timeout. - * @param {boolean} options.trailing - If `true`, the function will be invoked on the trailing edge of the timeout. - * @returns {(...args: Parameters) => void} A new throttled function that accepts the same parameters as the original function. - * - * @example - * const throttledFunction = throttle(() => { - * console.log('Function executed'); - * }, 1000); - * - * // Will log 'Function executed' immediately - * throttledFunction(); - * - * // Will not log anything as it is within the throttle time - * throttledFunction(); - * - * // After 1 second - * setTimeout(() => { - * throttledFunction(); // Will log 'Function executed' - * }, 1000); - */ -declare function throttle any>(func: T, throttleMs?: number, options?: ThrottleSettings): DebouncedFunc; - -export { throttle }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/throttle.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/throttle.js deleted file mode 100644 index d60a207..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/throttle.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const debounce = require('./debounce.js'); - -function throttle(func, throttleMs = 0, options = {}) { - const { leading = true, trailing = true } = options; - return debounce.debounce(func, throttleMs, { - leading, - maxWait: throttleMs, - trailing, - }); -} - -exports.throttle = throttle; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/throttle.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/throttle.mjs deleted file mode 100644 index e0fb53e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/throttle.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { debounce } from './debounce.mjs'; - -function throttle(func, throttleMs = 0, options = {}) { - const { leading = true, trailing = true } = options; - return debounce(func, throttleMs, { - leading, - maxWait: throttleMs, - trailing, - }); -} - -export { throttle }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/unary.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/unary.d.mts deleted file mode 100644 index 4708400..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/unary.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Creates a function that accepts up to one argument, ignoring any additional arguments. - * - * @template F - The type of the function. - * @param {F} func - The function to cap arguments for. - * @returns {(...args: any[]) => ReturnType} Returns the new capped function. - * - * @example - * function fn(a, b, c) { - * console.log(arguments); - * } - * - * unary(fn)(1, 2, 3); // [Arguments] { '0': 1 } - */ -declare function unary(func: (arg1: T, ...args: any[]) => U): (arg1: T) => U; - -export { unary }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/unary.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/unary.d.ts deleted file mode 100644 index 4708400..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/unary.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Creates a function that accepts up to one argument, ignoring any additional arguments. - * - * @template F - The type of the function. - * @param {F} func - The function to cap arguments for. - * @returns {(...args: any[]) => ReturnType} Returns the new capped function. - * - * @example - * function fn(a, b, c) { - * console.log(arguments); - * } - * - * unary(fn)(1, 2, 3); // [Arguments] { '0': 1 } - */ -declare function unary(func: (arg1: T, ...args: any[]) => U): (arg1: T) => U; - -export { unary }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/unary.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/unary.js deleted file mode 100644 index d56f056..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/unary.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const ary = require('./ary.js'); - -function unary(func) { - return ary.ary(func, 1); -} - -exports.unary = unary; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/unary.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/unary.mjs deleted file mode 100644 index f4b2cb1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/unary.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { ary } from './ary.mjs'; - -function unary(func) { - return ary(func, 1); -} - -export { unary }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/wrap.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/wrap.d.mts deleted file mode 100644 index 09a9ab7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/wrap.d.mts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Creates a new function that wraps the given function `func`. - * In this process, you can apply additional logic defined in the `wrapper` function before and after the execution of the original function. - * - * If a `value` is provided instead of a function, this value is passed as the first argument to the `wrapper` function. - * - * @template T - The type of the value being wrapped. - * @template U - The type of the arguments being passed to the `wrapper` function. - * @template V - The type of the return value of the `wrapper` function. - * @param {T} value - The value to be wrapped. - * @param {(value: T, ...args: U[]) => V} wrapper - The function to wrap the value with. - * @returns {(...args: U[]) => V} A new function that wraps the value with the `wrapper` function. - * - * @example - * // Wrap a function - * const greet = (name: string) => `Hi, ${name}`; - * const wrapped = wrap(greet, (value, name) => `[LOG] ${value(name)}`); - * wrapped('Bob'); // => "[LOG] Hi, Bob" - * - * @example - * // Wrap a primitive value - * const wrapped = wrap('value', v => `

${v}

`); - * wrapped(); // => "

value

" - */ -declare function wrap(value: T, wrapper: (value: T, ...args: U[]) => V): (...args: U[]) => V; - -export { wrap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/wrap.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/wrap.d.ts deleted file mode 100644 index 09a9ab7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/wrap.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Creates a new function that wraps the given function `func`. - * In this process, you can apply additional logic defined in the `wrapper` function before and after the execution of the original function. - * - * If a `value` is provided instead of a function, this value is passed as the first argument to the `wrapper` function. - * - * @template T - The type of the value being wrapped. - * @template U - The type of the arguments being passed to the `wrapper` function. - * @template V - The type of the return value of the `wrapper` function. - * @param {T} value - The value to be wrapped. - * @param {(value: T, ...args: U[]) => V} wrapper - The function to wrap the value with. - * @returns {(...args: U[]) => V} A new function that wraps the value with the `wrapper` function. - * - * @example - * // Wrap a function - * const greet = (name: string) => `Hi, ${name}`; - * const wrapped = wrap(greet, (value, name) => `[LOG] ${value(name)}`); - * wrapped('Bob'); // => "[LOG] Hi, Bob" - * - * @example - * // Wrap a primitive value - * const wrapped = wrap('value', v => `

${v}

`); - * wrapped(); // => "

value

" - */ -declare function wrap(value: T, wrapper: (value: T, ...args: U[]) => V): (...args: U[]) => V; - -export { wrap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/wrap.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/wrap.js deleted file mode 100644 index 4c52f01..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/wrap.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const isFunction = require('../../predicate/isFunction.js'); - -function wrap(value, wrapper) { - return function (...args) { - const wrapFn = isFunction.isFunction(wrapper) ? wrapper : identity.identity; - return wrapFn.apply(this, [value, ...args]); - }; -} - -exports.wrap = wrap; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/wrap.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/wrap.mjs deleted file mode 100644 index 1104804..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/function/wrap.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { isFunction } from '../../predicate/isFunction.mjs'; - -function wrap(value, wrapper) { - return function (...args) { - const wrapFn = isFunction(wrapper) ? wrapper : identity; - return wrapFn.apply(this, [value, ...args]); - }; -} - -export { wrap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/index.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/index.d.mts deleted file mode 100644 index 549ac41..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/index.d.mts +++ /dev/null @@ -1,292 +0,0 @@ -export { castArray } from './array/castArray.mjs'; -export { chunk } from './array/chunk.mjs'; -export { compact } from './array/compact.mjs'; -export { concat } from './array/concat.mjs'; -export { countBy } from './array/countBy.mjs'; -export { difference } from './array/difference.mjs'; -export { differenceBy } from './array/differenceBy.mjs'; -export { differenceWith } from './array/differenceWith.mjs'; -export { drop } from './array/drop.mjs'; -export { dropRight } from './array/dropRight.mjs'; -export { dropRightWhile } from './array/dropRightWhile.mjs'; -export { dropWhile } from './array/dropWhile.mjs'; -export { forEach as each, forEach } from './array/forEach.mjs'; -export { forEachRight as eachRight, forEachRight } from './array/forEachRight.mjs'; -export { every } from './array/every.mjs'; -export { fill } from './array/fill.mjs'; -export { filter } from './array/filter.mjs'; -export { find } from './array/find.mjs'; -export { findIndex } from './array/findIndex.mjs'; -export { findLast } from './array/findLast.mjs'; -export { findLastIndex } from './array/findLastIndex.mjs'; -export { head as first, head } from './array/head.mjs'; -export { flatMap } from './array/flatMap.mjs'; -export { flatMapDeep } from './array/flatMapDeep.mjs'; -export { flatMapDepth } from './array/flatMapDepth.mjs'; -export { flatten } from './array/flatten.mjs'; -export { flattenDeep } from './array/flattenDeep.mjs'; -export { flattenDepth } from './array/flattenDepth.mjs'; -export { groupBy } from './array/groupBy.mjs'; -export { includes } from './array/includes.mjs'; -export { indexOf } from './array/indexOf.mjs'; -export { initial } from './array/initial.mjs'; -export { intersection } from './array/intersection.mjs'; -export { intersectionBy } from './array/intersectionBy.mjs'; -export { intersectionWith } from './array/intersectionWith.mjs'; -export { invokeMap } from './array/invokeMap.mjs'; -export { join } from './array/join.mjs'; -export { keyBy } from './array/keyBy.mjs'; -export { last } from './array/last.mjs'; -export { lastIndexOf } from './array/lastIndexOf.mjs'; -export { map } from './array/map.mjs'; -export { nth } from './array/nth.mjs'; -export { orderBy } from './array/orderBy.mjs'; -export { partition } from './array/partition.mjs'; -export { pull } from './array/pull.mjs'; -export { pullAll } from './array/pullAll.mjs'; -export { pullAllBy } from './array/pullAllBy.mjs'; -export { pullAllWith } from './array/pullAllWith.mjs'; -export { pullAt } from './array/pullAt.mjs'; -export { reduce } from './array/reduce.mjs'; -export { reduceRight } from './array/reduceRight.mjs'; -export { reject } from './array/reject.mjs'; -export { remove } from './array/remove.mjs'; -export { reverse } from './array/reverse.mjs'; -export { sample } from './array/sample.mjs'; -export { sampleSize } from './array/sampleSize.mjs'; -export { shuffle } from './array/shuffle.mjs'; -export { size } from './array/size.mjs'; -export { slice } from './array/slice.mjs'; -export { some } from './array/some.mjs'; -export { sortBy } from './array/sortBy.mjs'; -export { sortedIndex } from './array/sortedIndex.mjs'; -export { sortedIndexBy } from './array/sortedIndexBy.mjs'; -export { sortedIndexOf } from './array/sortedIndexOf.mjs'; -export { sortedLastIndex } from './array/sortedLastIndex.mjs'; -export { sortedLastIndexBy } from './array/sortedLastIndexBy.mjs'; -export { sortedLastIndexOf } from './array/sortedLastIndexOf.mjs'; -export { tail } from './array/tail.mjs'; -export { take } from './array/take.mjs'; -export { takeRight } from './array/takeRight.mjs'; -export { takeRightWhile } from './array/takeRightWhile.mjs'; -export { takeWhile } from './array/takeWhile.mjs'; -export { union } from './array/union.mjs'; -export { unionBy } from './array/unionBy.mjs'; -export { unionWith } from './array/unionWith.mjs'; -export { uniq } from './array/uniq.mjs'; -export { uniqBy } from './array/uniqBy.mjs'; -export { uniqWith } from './array/uniqWith.mjs'; -export { unzip } from './array/unzip.mjs'; -export { unzipWith } from './array/unzipWith.mjs'; -export { without } from './array/without.mjs'; -export { xor } from './array/xor.mjs'; -export { xorBy } from './array/xorBy.mjs'; -export { xorWith } from './array/xorWith.mjs'; -export { zip } from './array/zip.mjs'; -export { zipObject } from './array/zipObject.mjs'; -export { zipObjectDeep } from './array/zipObjectDeep.mjs'; -export { zipWith } from './array/zipWith.mjs'; -export { after } from './function/after.mjs'; -export { ary } from './function/ary.mjs'; -export { attempt } from './function/attempt.mjs'; -export { before } from './function/before.mjs'; -export { bind } from './function/bind.mjs'; -export { bindKey } from './function/bindKey.mjs'; -export { curry } from './function/curry.mjs'; -export { curryRight } from './function/curryRight.mjs'; -export { DebouncedFunc, debounce } from './function/debounce.mjs'; -export { defer } from './function/defer.mjs'; -export { delay } from './function/delay.mjs'; -export { flip } from './function/flip.mjs'; -export { flow } from './function/flow.mjs'; -export { flowRight } from './function/flowRight.mjs'; -export { memoize } from './function/memoize.mjs'; -export { negate } from './function/negate.mjs'; -export { nthArg } from './function/nthArg.mjs'; -export { once } from './function/once.mjs'; -export { overArgs } from './function/overArgs.mjs'; -export { partial } from './function/partial.mjs'; -export { partialRight } from './function/partialRight.mjs'; -export { rearg } from './function/rearg.mjs'; -export { rest } from './function/rest.mjs'; -export { spread } from './function/spread.mjs'; -export { throttle } from './function/throttle.mjs'; -export { unary } from './function/unary.mjs'; -export { wrap } from './function/wrap.mjs'; -export { add } from './math/add.mjs'; -export { ceil } from './math/ceil.mjs'; -export { clamp } from './math/clamp.mjs'; -export { divide } from './math/divide.mjs'; -export { floor } from './math/floor.mjs'; -export { inRange } from './math/inRange.mjs'; -export { max } from './math/max.mjs'; -export { maxBy } from './math/maxBy.mjs'; -export { mean } from './math/mean.mjs'; -export { meanBy } from './math/meanBy.mjs'; -export { min } from './math/min.mjs'; -export { minBy } from './math/minBy.mjs'; -export { multiply } from './math/multiply.mjs'; -export { parseInt } from './math/parseInt.mjs'; -export { random } from './math/random.mjs'; -export { range } from './math/range.mjs'; -export { rangeRight } from './math/rangeRight.mjs'; -export { round } from './math/round.mjs'; -export { subtract } from './math/subtract.mjs'; -export { sum } from './math/sum.mjs'; -export { sumBy } from './math/sumBy.mjs'; -export { isEqual } from '../predicate/isEqual.mjs'; -export { identity } from './function/identity.mjs'; -export { noop } from './function/noop.mjs'; -export { assign } from './object/assign.mjs'; -export { assignIn, assignIn as extend } from './object/assignIn.mjs'; -export { assignInWith, assignInWith as extendWith } from './object/assignInWith.mjs'; -export { assignWith } from './object/assignWith.mjs'; -export { at } from './object/at.mjs'; -export { clone } from './object/clone.mjs'; -export { cloneDeep } from './object/cloneDeep.mjs'; -export { cloneDeepWith } from './object/cloneDeepWith.mjs'; -export { cloneWith } from './object/cloneWith.mjs'; -export { create } from './object/create.mjs'; -export { defaults } from './object/defaults.mjs'; -export { defaultsDeep } from './object/defaultsDeep.mjs'; -export { findKey } from './object/findKey.mjs'; -export { findLastKey } from './object/findLastKey.mjs'; -export { forIn } from './object/forIn.mjs'; -export { forInRight } from './object/forInRight.mjs'; -export { forOwn } from './object/forOwn.mjs'; -export { forOwnRight } from './object/forOwnRight.mjs'; -export { fromPairs } from './object/fromPairs.mjs'; -export { functions } from './object/functions.mjs'; -export { functionsIn } from './object/functionsIn.mjs'; -export { get } from './object/get.mjs'; -export { has } from './object/has.mjs'; -export { hasIn } from './object/hasIn.mjs'; -export { invert } from './object/invert.mjs'; -export { invertBy } from './object/invertBy.mjs'; -export { keys } from './object/keys.mjs'; -export { keysIn } from './object/keysIn.mjs'; -export { mapKeys } from './object/mapKeys.mjs'; -export { mapValues } from './object/mapValues.mjs'; -export { merge } from './object/merge.mjs'; -export { mergeWith } from './object/mergeWith.mjs'; -export { omit } from './object/omit.mjs'; -export { omitBy } from './object/omitBy.mjs'; -export { pick } from './object/pick.mjs'; -export { pickBy } from './object/pickBy.mjs'; -export { property } from './object/property.mjs'; -export { propertyOf } from './object/propertyOf.mjs'; -export { result } from './object/result.mjs'; -export { set } from './object/set.mjs'; -export { setWith } from './object/setWith.mjs'; -export { toDefaulted } from './object/toDefaulted.mjs'; -export { toPairs } from './object/toPairs.mjs'; -export { toPairsIn } from './object/toPairsIn.mjs'; -export { transform } from './object/transform.mjs'; -export { unset } from './object/unset.mjs'; -export { update } from './object/update.mjs'; -export { updateWith } from './object/updateWith.mjs'; -export { values } from './object/values.mjs'; -export { valuesIn } from './object/valuesIn.mjs'; -export { isFunction } from './predicate/isFunction.mjs'; -export { isLength } from './predicate/isLength.mjs'; -export { isMatchWith } from './predicate/isMatchWith.mjs'; -export { isNative } from './predicate/isNative.mjs'; -export { isNull } from './predicate/isNull.mjs'; -export { isUndefined } from './predicate/isUndefined.mjs'; -export { conforms } from './predicate/conforms.mjs'; -export { conformsTo } from './predicate/conformsTo.mjs'; -export { isArguments } from './predicate/isArguments.mjs'; -export { isArray } from './predicate/isArray.mjs'; -export { isArrayBuffer } from './predicate/isArrayBuffer.mjs'; -export { isArrayLike } from './predicate/isArrayLike.mjs'; -export { isArrayLikeObject } from './predicate/isArrayLikeObject.mjs'; -export { isBoolean } from './predicate/isBoolean.mjs'; -export { isBuffer } from './predicate/isBuffer.mjs'; -export { isDate } from './predicate/isDate.mjs'; -export { isElement } from './predicate/isElement.mjs'; -export { isEmpty } from './predicate/isEmpty.mjs'; -export { isEqualWith } from './predicate/isEqualWith.mjs'; -export { isError } from './predicate/isError.mjs'; -export { isFinite } from './predicate/isFinite.mjs'; -export { isInteger } from './predicate/isInteger.mjs'; -export { isMap } from './predicate/isMap.mjs'; -export { isMatch } from './predicate/isMatch.mjs'; -export { isNaN } from './predicate/isNaN.mjs'; -export { isNil } from './predicate/isNil.mjs'; -export { isNumber } from './predicate/isNumber.mjs'; -export { isObject } from './predicate/isObject.mjs'; -export { isObjectLike } from './predicate/isObjectLike.mjs'; -export { isPlainObject } from './predicate/isPlainObject.mjs'; -export { isRegExp } from './predicate/isRegExp.mjs'; -export { isSafeInteger } from './predicate/isSafeInteger.mjs'; -export { isSet } from './predicate/isSet.mjs'; -export { isString } from './predicate/isString.mjs'; -export { isSymbol } from './predicate/isSymbol.mjs'; -export { isTypedArray } from './predicate/isTypedArray.mjs'; -export { isWeakMap } from './predicate/isWeakMap.mjs'; -export { isWeakSet } from './predicate/isWeakSet.mjs'; -export { matches } from './predicate/matches.mjs'; -export { matchesProperty } from './predicate/matchesProperty.mjs'; -export { capitalize } from './string/capitalize.mjs'; -export { bindAll } from './util/bindAll.mjs'; -export { camelCase } from './string/camelCase.mjs'; -export { deburr } from './string/deburr.mjs'; -export { endsWith } from './string/endsWith.mjs'; -export { escape } from './string/escape.mjs'; -export { escapeRegExp } from './string/escapeRegExp.mjs'; -export { kebabCase } from './string/kebabCase.mjs'; -export { lowerCase } from './string/lowerCase.mjs'; -export { lowerFirst } from './string/lowerFirst.mjs'; -export { pad } from './string/pad.mjs'; -export { padEnd } from './string/padEnd.mjs'; -export { padStart } from './string/padStart.mjs'; -export { repeat } from './string/repeat.mjs'; -export { replace } from './string/replace.mjs'; -export { snakeCase } from './string/snakeCase.mjs'; -export { split } from './string/split.mjs'; -export { startCase } from './string/startCase.mjs'; -export { startsWith } from './string/startsWith.mjs'; -export { template, templateSettings } from './string/template.mjs'; -export { toLower } from './string/toLower.mjs'; -export { toUpper } from './string/toUpper.mjs'; -export { trim } from './string/trim.mjs'; -export { trimEnd } from './string/trimEnd.mjs'; -export { trimStart } from './string/trimStart.mjs'; -export { truncate } from './string/truncate.mjs'; -export { unescape } from './string/unescape.mjs'; -export { upperCase } from './string/upperCase.mjs'; -export { upperFirst } from './string/upperFirst.mjs'; -export { words } from './string/words.mjs'; -export { cond } from './util/cond.mjs'; -export { constant } from './util/constant.mjs'; -export { defaultTo } from './util/defaultTo.mjs'; -export { isEqualsSameValueZero as eq } from '../_internal/isEqualsSameValueZero.mjs'; -export { gt } from './util/gt.mjs'; -export { gte } from './util/gte.mjs'; -export { invoke } from './util/invoke.mjs'; -export { iteratee } from './util/iteratee.mjs'; -export { lt } from './util/lt.mjs'; -export { lte } from './util/lte.mjs'; -export { method } from './util/method.mjs'; -export { methodOf } from './util/methodOf.mjs'; -export { now } from './util/now.mjs'; -export { over } from './util/over.mjs'; -export { overEvery } from './util/overEvery.mjs'; -export { overSome } from './util/overSome.mjs'; -export { stubArray } from './util/stubArray.mjs'; -export { stubFalse } from './util/stubFalse.mjs'; -export { stubObject } from './util/stubObject.mjs'; -export { stubString } from './util/stubString.mjs'; -export { stubTrue } from './util/stubTrue.mjs'; -export { times } from './util/times.mjs'; -export { toArray } from './util/toArray.mjs'; -export { toFinite } from './util/toFinite.mjs'; -export { toInteger } from './util/toInteger.mjs'; -export { toLength } from './util/toLength.mjs'; -export { toNumber } from './util/toNumber.mjs'; -export { toPath } from './util/toPath.mjs'; -export { toPlainObject } from './util/toPlainObject.mjs'; -export { toSafeInteger } from './util/toSafeInteger.mjs'; -export { toString } from './util/toString.mjs'; -export { uniqueId } from './util/uniqueId.mjs'; -export { toolkit as default } from './toolkit.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/index.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/index.d.ts deleted file mode 100644 index 8965ae7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/index.d.ts +++ /dev/null @@ -1,292 +0,0 @@ -export { castArray } from './array/castArray.js'; -export { chunk } from './array/chunk.js'; -export { compact } from './array/compact.js'; -export { concat } from './array/concat.js'; -export { countBy } from './array/countBy.js'; -export { difference } from './array/difference.js'; -export { differenceBy } from './array/differenceBy.js'; -export { differenceWith } from './array/differenceWith.js'; -export { drop } from './array/drop.js'; -export { dropRight } from './array/dropRight.js'; -export { dropRightWhile } from './array/dropRightWhile.js'; -export { dropWhile } from './array/dropWhile.js'; -export { forEach as each, forEach } from './array/forEach.js'; -export { forEachRight as eachRight, forEachRight } from './array/forEachRight.js'; -export { every } from './array/every.js'; -export { fill } from './array/fill.js'; -export { filter } from './array/filter.js'; -export { find } from './array/find.js'; -export { findIndex } from './array/findIndex.js'; -export { findLast } from './array/findLast.js'; -export { findLastIndex } from './array/findLastIndex.js'; -export { head as first, head } from './array/head.js'; -export { flatMap } from './array/flatMap.js'; -export { flatMapDeep } from './array/flatMapDeep.js'; -export { flatMapDepth } from './array/flatMapDepth.js'; -export { flatten } from './array/flatten.js'; -export { flattenDeep } from './array/flattenDeep.js'; -export { flattenDepth } from './array/flattenDepth.js'; -export { groupBy } from './array/groupBy.js'; -export { includes } from './array/includes.js'; -export { indexOf } from './array/indexOf.js'; -export { initial } from './array/initial.js'; -export { intersection } from './array/intersection.js'; -export { intersectionBy } from './array/intersectionBy.js'; -export { intersectionWith } from './array/intersectionWith.js'; -export { invokeMap } from './array/invokeMap.js'; -export { join } from './array/join.js'; -export { keyBy } from './array/keyBy.js'; -export { last } from './array/last.js'; -export { lastIndexOf } from './array/lastIndexOf.js'; -export { map } from './array/map.js'; -export { nth } from './array/nth.js'; -export { orderBy } from './array/orderBy.js'; -export { partition } from './array/partition.js'; -export { pull } from './array/pull.js'; -export { pullAll } from './array/pullAll.js'; -export { pullAllBy } from './array/pullAllBy.js'; -export { pullAllWith } from './array/pullAllWith.js'; -export { pullAt } from './array/pullAt.js'; -export { reduce } from './array/reduce.js'; -export { reduceRight } from './array/reduceRight.js'; -export { reject } from './array/reject.js'; -export { remove } from './array/remove.js'; -export { reverse } from './array/reverse.js'; -export { sample } from './array/sample.js'; -export { sampleSize } from './array/sampleSize.js'; -export { shuffle } from './array/shuffle.js'; -export { size } from './array/size.js'; -export { slice } from './array/slice.js'; -export { some } from './array/some.js'; -export { sortBy } from './array/sortBy.js'; -export { sortedIndex } from './array/sortedIndex.js'; -export { sortedIndexBy } from './array/sortedIndexBy.js'; -export { sortedIndexOf } from './array/sortedIndexOf.js'; -export { sortedLastIndex } from './array/sortedLastIndex.js'; -export { sortedLastIndexBy } from './array/sortedLastIndexBy.js'; -export { sortedLastIndexOf } from './array/sortedLastIndexOf.js'; -export { tail } from './array/tail.js'; -export { take } from './array/take.js'; -export { takeRight } from './array/takeRight.js'; -export { takeRightWhile } from './array/takeRightWhile.js'; -export { takeWhile } from './array/takeWhile.js'; -export { union } from './array/union.js'; -export { unionBy } from './array/unionBy.js'; -export { unionWith } from './array/unionWith.js'; -export { uniq } from './array/uniq.js'; -export { uniqBy } from './array/uniqBy.js'; -export { uniqWith } from './array/uniqWith.js'; -export { unzip } from './array/unzip.js'; -export { unzipWith } from './array/unzipWith.js'; -export { without } from './array/without.js'; -export { xor } from './array/xor.js'; -export { xorBy } from './array/xorBy.js'; -export { xorWith } from './array/xorWith.js'; -export { zip } from './array/zip.js'; -export { zipObject } from './array/zipObject.js'; -export { zipObjectDeep } from './array/zipObjectDeep.js'; -export { zipWith } from './array/zipWith.js'; -export { after } from './function/after.js'; -export { ary } from './function/ary.js'; -export { attempt } from './function/attempt.js'; -export { before } from './function/before.js'; -export { bind } from './function/bind.js'; -export { bindKey } from './function/bindKey.js'; -export { curry } from './function/curry.js'; -export { curryRight } from './function/curryRight.js'; -export { DebouncedFunc, debounce } from './function/debounce.js'; -export { defer } from './function/defer.js'; -export { delay } from './function/delay.js'; -export { flip } from './function/flip.js'; -export { flow } from './function/flow.js'; -export { flowRight } from './function/flowRight.js'; -export { memoize } from './function/memoize.js'; -export { negate } from './function/negate.js'; -export { nthArg } from './function/nthArg.js'; -export { once } from './function/once.js'; -export { overArgs } from './function/overArgs.js'; -export { partial } from './function/partial.js'; -export { partialRight } from './function/partialRight.js'; -export { rearg } from './function/rearg.js'; -export { rest } from './function/rest.js'; -export { spread } from './function/spread.js'; -export { throttle } from './function/throttle.js'; -export { unary } from './function/unary.js'; -export { wrap } from './function/wrap.js'; -export { add } from './math/add.js'; -export { ceil } from './math/ceil.js'; -export { clamp } from './math/clamp.js'; -export { divide } from './math/divide.js'; -export { floor } from './math/floor.js'; -export { inRange } from './math/inRange.js'; -export { max } from './math/max.js'; -export { maxBy } from './math/maxBy.js'; -export { mean } from './math/mean.js'; -export { meanBy } from './math/meanBy.js'; -export { min } from './math/min.js'; -export { minBy } from './math/minBy.js'; -export { multiply } from './math/multiply.js'; -export { parseInt } from './math/parseInt.js'; -export { random } from './math/random.js'; -export { range } from './math/range.js'; -export { rangeRight } from './math/rangeRight.js'; -export { round } from './math/round.js'; -export { subtract } from './math/subtract.js'; -export { sum } from './math/sum.js'; -export { sumBy } from './math/sumBy.js'; -export { isEqual } from '../predicate/isEqual.js'; -export { identity } from './function/identity.js'; -export { noop } from './function/noop.js'; -export { assign } from './object/assign.js'; -export { assignIn, assignIn as extend } from './object/assignIn.js'; -export { assignInWith, assignInWith as extendWith } from './object/assignInWith.js'; -export { assignWith } from './object/assignWith.js'; -export { at } from './object/at.js'; -export { clone } from './object/clone.js'; -export { cloneDeep } from './object/cloneDeep.js'; -export { cloneDeepWith } from './object/cloneDeepWith.js'; -export { cloneWith } from './object/cloneWith.js'; -export { create } from './object/create.js'; -export { defaults } from './object/defaults.js'; -export { defaultsDeep } from './object/defaultsDeep.js'; -export { findKey } from './object/findKey.js'; -export { findLastKey } from './object/findLastKey.js'; -export { forIn } from './object/forIn.js'; -export { forInRight } from './object/forInRight.js'; -export { forOwn } from './object/forOwn.js'; -export { forOwnRight } from './object/forOwnRight.js'; -export { fromPairs } from './object/fromPairs.js'; -export { functions } from './object/functions.js'; -export { functionsIn } from './object/functionsIn.js'; -export { get } from './object/get.js'; -export { has } from './object/has.js'; -export { hasIn } from './object/hasIn.js'; -export { invert } from './object/invert.js'; -export { invertBy } from './object/invertBy.js'; -export { keys } from './object/keys.js'; -export { keysIn } from './object/keysIn.js'; -export { mapKeys } from './object/mapKeys.js'; -export { mapValues } from './object/mapValues.js'; -export { merge } from './object/merge.js'; -export { mergeWith } from './object/mergeWith.js'; -export { omit } from './object/omit.js'; -export { omitBy } from './object/omitBy.js'; -export { pick } from './object/pick.js'; -export { pickBy } from './object/pickBy.js'; -export { property } from './object/property.js'; -export { propertyOf } from './object/propertyOf.js'; -export { result } from './object/result.js'; -export { set } from './object/set.js'; -export { setWith } from './object/setWith.js'; -export { toDefaulted } from './object/toDefaulted.js'; -export { toPairs } from './object/toPairs.js'; -export { toPairsIn } from './object/toPairsIn.js'; -export { transform } from './object/transform.js'; -export { unset } from './object/unset.js'; -export { update } from './object/update.js'; -export { updateWith } from './object/updateWith.js'; -export { values } from './object/values.js'; -export { valuesIn } from './object/valuesIn.js'; -export { isFunction } from './predicate/isFunction.js'; -export { isLength } from './predicate/isLength.js'; -export { isMatchWith } from './predicate/isMatchWith.js'; -export { isNative } from './predicate/isNative.js'; -export { isNull } from './predicate/isNull.js'; -export { isUndefined } from './predicate/isUndefined.js'; -export { conforms } from './predicate/conforms.js'; -export { conformsTo } from './predicate/conformsTo.js'; -export { isArguments } from './predicate/isArguments.js'; -export { isArray } from './predicate/isArray.js'; -export { isArrayBuffer } from './predicate/isArrayBuffer.js'; -export { isArrayLike } from './predicate/isArrayLike.js'; -export { isArrayLikeObject } from './predicate/isArrayLikeObject.js'; -export { isBoolean } from './predicate/isBoolean.js'; -export { isBuffer } from './predicate/isBuffer.js'; -export { isDate } from './predicate/isDate.js'; -export { isElement } from './predicate/isElement.js'; -export { isEmpty } from './predicate/isEmpty.js'; -export { isEqualWith } from './predicate/isEqualWith.js'; -export { isError } from './predicate/isError.js'; -export { isFinite } from './predicate/isFinite.js'; -export { isInteger } from './predicate/isInteger.js'; -export { isMap } from './predicate/isMap.js'; -export { isMatch } from './predicate/isMatch.js'; -export { isNaN } from './predicate/isNaN.js'; -export { isNil } from './predicate/isNil.js'; -export { isNumber } from './predicate/isNumber.js'; -export { isObject } from './predicate/isObject.js'; -export { isObjectLike } from './predicate/isObjectLike.js'; -export { isPlainObject } from './predicate/isPlainObject.js'; -export { isRegExp } from './predicate/isRegExp.js'; -export { isSafeInteger } from './predicate/isSafeInteger.js'; -export { isSet } from './predicate/isSet.js'; -export { isString } from './predicate/isString.js'; -export { isSymbol } from './predicate/isSymbol.js'; -export { isTypedArray } from './predicate/isTypedArray.js'; -export { isWeakMap } from './predicate/isWeakMap.js'; -export { isWeakSet } from './predicate/isWeakSet.js'; -export { matches } from './predicate/matches.js'; -export { matchesProperty } from './predicate/matchesProperty.js'; -export { capitalize } from './string/capitalize.js'; -export { bindAll } from './util/bindAll.js'; -export { camelCase } from './string/camelCase.js'; -export { deburr } from './string/deburr.js'; -export { endsWith } from './string/endsWith.js'; -export { escape } from './string/escape.js'; -export { escapeRegExp } from './string/escapeRegExp.js'; -export { kebabCase } from './string/kebabCase.js'; -export { lowerCase } from './string/lowerCase.js'; -export { lowerFirst } from './string/lowerFirst.js'; -export { pad } from './string/pad.js'; -export { padEnd } from './string/padEnd.js'; -export { padStart } from './string/padStart.js'; -export { repeat } from './string/repeat.js'; -export { replace } from './string/replace.js'; -export { snakeCase } from './string/snakeCase.js'; -export { split } from './string/split.js'; -export { startCase } from './string/startCase.js'; -export { startsWith } from './string/startsWith.js'; -export { template, templateSettings } from './string/template.js'; -export { toLower } from './string/toLower.js'; -export { toUpper } from './string/toUpper.js'; -export { trim } from './string/trim.js'; -export { trimEnd } from './string/trimEnd.js'; -export { trimStart } from './string/trimStart.js'; -export { truncate } from './string/truncate.js'; -export { unescape } from './string/unescape.js'; -export { upperCase } from './string/upperCase.js'; -export { upperFirst } from './string/upperFirst.js'; -export { words } from './string/words.js'; -export { cond } from './util/cond.js'; -export { constant } from './util/constant.js'; -export { defaultTo } from './util/defaultTo.js'; -export { isEqualsSameValueZero as eq } from '../_internal/isEqualsSameValueZero.js'; -export { gt } from './util/gt.js'; -export { gte } from './util/gte.js'; -export { invoke } from './util/invoke.js'; -export { iteratee } from './util/iteratee.js'; -export { lt } from './util/lt.js'; -export { lte } from './util/lte.js'; -export { method } from './util/method.js'; -export { methodOf } from './util/methodOf.js'; -export { now } from './util/now.js'; -export { over } from './util/over.js'; -export { overEvery } from './util/overEvery.js'; -export { overSome } from './util/overSome.js'; -export { stubArray } from './util/stubArray.js'; -export { stubFalse } from './util/stubFalse.js'; -export { stubObject } from './util/stubObject.js'; -export { stubString } from './util/stubString.js'; -export { stubTrue } from './util/stubTrue.js'; -export { times } from './util/times.js'; -export { toArray } from './util/toArray.js'; -export { toFinite } from './util/toFinite.js'; -export { toInteger } from './util/toInteger.js'; -export { toLength } from './util/toLength.js'; -export { toNumber } from './util/toNumber.js'; -export { toPath } from './util/toPath.js'; -export { toPlainObject } from './util/toPlainObject.js'; -export { toSafeInteger } from './util/toSafeInteger.js'; -export { toString } from './util/toString.js'; -export { uniqueId } from './util/uniqueId.js'; -export { toolkit as default } from './toolkit.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/index.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/index.js deleted file mode 100644 index 1573804..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/index.js +++ /dev/null @@ -1,597 +0,0 @@ -'use strict'; - -Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } }); - -const castArray = require('./array/castArray.js'); -const chunk = require('./array/chunk.js'); -const compact = require('./array/compact.js'); -const concat = require('./array/concat.js'); -const countBy = require('./array/countBy.js'); -const difference = require('./array/difference.js'); -const differenceBy = require('./array/differenceBy.js'); -const differenceWith = require('./array/differenceWith.js'); -const drop = require('./array/drop.js'); -const dropRight = require('./array/dropRight.js'); -const dropRightWhile = require('./array/dropRightWhile.js'); -const dropWhile = require('./array/dropWhile.js'); -const forEach = require('./array/forEach.js'); -const forEachRight = require('./array/forEachRight.js'); -const every = require('./array/every.js'); -const fill = require('./array/fill.js'); -const filter = require('./array/filter.js'); -const find = require('./array/find.js'); -const findIndex = require('./array/findIndex.js'); -const findLast = require('./array/findLast.js'); -const findLastIndex = require('./array/findLastIndex.js'); -const head = require('./array/head.js'); -const flatMap = require('./array/flatMap.js'); -const flatMapDeep = require('./array/flatMapDeep.js'); -const flatMapDepth = require('./array/flatMapDepth.js'); -const flatten = require('./array/flatten.js'); -const flattenDeep = require('./array/flattenDeep.js'); -const flattenDepth = require('./array/flattenDepth.js'); -const groupBy = require('./array/groupBy.js'); -const includes = require('./array/includes.js'); -const indexOf = require('./array/indexOf.js'); -const initial = require('./array/initial.js'); -const intersection = require('./array/intersection.js'); -const intersectionBy = require('./array/intersectionBy.js'); -const intersectionWith = require('./array/intersectionWith.js'); -const invokeMap = require('./array/invokeMap.js'); -const join = require('./array/join.js'); -const keyBy = require('./array/keyBy.js'); -const last = require('./array/last.js'); -const lastIndexOf = require('./array/lastIndexOf.js'); -const map = require('./array/map.js'); -const nth = require('./array/nth.js'); -const orderBy = require('./array/orderBy.js'); -const partition = require('./array/partition.js'); -const pull = require('./array/pull.js'); -const pullAll = require('./array/pullAll.js'); -const pullAllBy = require('./array/pullAllBy.js'); -const pullAllWith = require('./array/pullAllWith.js'); -const pullAt = require('./array/pullAt.js'); -const reduce = require('./array/reduce.js'); -const reduceRight = require('./array/reduceRight.js'); -const reject = require('./array/reject.js'); -const remove = require('./array/remove.js'); -const reverse = require('./array/reverse.js'); -const sample = require('./array/sample.js'); -const sampleSize = require('./array/sampleSize.js'); -const shuffle = require('./array/shuffle.js'); -const size = require('./array/size.js'); -const slice = require('./array/slice.js'); -const some = require('./array/some.js'); -const sortBy = require('./array/sortBy.js'); -const sortedIndex = require('./array/sortedIndex.js'); -const sortedIndexBy = require('./array/sortedIndexBy.js'); -const sortedIndexOf = require('./array/sortedIndexOf.js'); -const sortedLastIndex = require('./array/sortedLastIndex.js'); -const sortedLastIndexBy = require('./array/sortedLastIndexBy.js'); -const sortedLastIndexOf = require('./array/sortedLastIndexOf.js'); -const tail = require('./array/tail.js'); -const take = require('./array/take.js'); -const takeRight = require('./array/takeRight.js'); -const takeRightWhile = require('./array/takeRightWhile.js'); -const takeWhile = require('./array/takeWhile.js'); -const union = require('./array/union.js'); -const unionBy = require('./array/unionBy.js'); -const unionWith = require('./array/unionWith.js'); -const uniq = require('./array/uniq.js'); -const uniqBy = require('./array/uniqBy.js'); -const uniqWith = require('./array/uniqWith.js'); -const unzip = require('./array/unzip.js'); -const unzipWith = require('./array/unzipWith.js'); -const without = require('./array/without.js'); -const xor = require('./array/xor.js'); -const xorBy = require('./array/xorBy.js'); -const xorWith = require('./array/xorWith.js'); -const zip = require('./array/zip.js'); -const zipObject = require('./array/zipObject.js'); -const zipObjectDeep = require('./array/zipObjectDeep.js'); -const zipWith = require('./array/zipWith.js'); -const after = require('./function/after.js'); -const ary = require('./function/ary.js'); -const attempt = require('./function/attempt.js'); -const before = require('./function/before.js'); -const bind = require('./function/bind.js'); -const bindKey = require('./function/bindKey.js'); -const curry = require('./function/curry.js'); -const curryRight = require('./function/curryRight.js'); -const debounce = require('./function/debounce.js'); -const defer = require('./function/defer.js'); -const delay = require('./function/delay.js'); -const flip = require('./function/flip.js'); -const flow = require('./function/flow.js'); -const flowRight = require('./function/flowRight.js'); -const memoize = require('./function/memoize.js'); -const negate = require('./function/negate.js'); -const nthArg = require('./function/nthArg.js'); -const once = require('./function/once.js'); -const overArgs = require('./function/overArgs.js'); -const partial = require('./function/partial.js'); -const partialRight = require('./function/partialRight.js'); -const rearg = require('./function/rearg.js'); -const rest = require('./function/rest.js'); -const spread = require('./function/spread.js'); -const throttle = require('./function/throttle.js'); -const unary = require('./function/unary.js'); -const wrap = require('./function/wrap.js'); -const add = require('./math/add.js'); -const ceil = require('./math/ceil.js'); -const clamp = require('./math/clamp.js'); -const divide = require('./math/divide.js'); -const floor = require('./math/floor.js'); -const inRange = require('./math/inRange.js'); -const max = require('./math/max.js'); -const maxBy = require('./math/maxBy.js'); -const mean = require('./math/mean.js'); -const meanBy = require('./math/meanBy.js'); -const min = require('./math/min.js'); -const minBy = require('./math/minBy.js'); -const multiply = require('./math/multiply.js'); -const parseInt = require('./math/parseInt.js'); -const random = require('./math/random.js'); -const range = require('./math/range.js'); -const rangeRight = require('./math/rangeRight.js'); -const round = require('./math/round.js'); -const subtract = require('./math/subtract.js'); -const sum = require('./math/sum.js'); -const sumBy = require('./math/sumBy.js'); -const isEqual = require('../predicate/isEqual.js'); -const identity = require('./function/identity.js'); -const noop = require('./function/noop.js'); -const assign = require('./object/assign.js'); -const assignIn = require('./object/assignIn.js'); -const assignInWith = require('./object/assignInWith.js'); -const assignWith = require('./object/assignWith.js'); -const at = require('./object/at.js'); -const clone = require('./object/clone.js'); -const cloneDeep = require('./object/cloneDeep.js'); -const cloneDeepWith = require('./object/cloneDeepWith.js'); -const cloneWith = require('./object/cloneWith.js'); -const create = require('./object/create.js'); -const defaults = require('./object/defaults.js'); -const defaultsDeep = require('./object/defaultsDeep.js'); -const findKey = require('./object/findKey.js'); -const findLastKey = require('./object/findLastKey.js'); -const forIn = require('./object/forIn.js'); -const forInRight = require('./object/forInRight.js'); -const forOwn = require('./object/forOwn.js'); -const forOwnRight = require('./object/forOwnRight.js'); -const fromPairs = require('./object/fromPairs.js'); -const functions = require('./object/functions.js'); -const functionsIn = require('./object/functionsIn.js'); -const get = require('./object/get.js'); -const has = require('./object/has.js'); -const hasIn = require('./object/hasIn.js'); -const invert = require('./object/invert.js'); -const invertBy = require('./object/invertBy.js'); -const keys = require('./object/keys.js'); -const keysIn = require('./object/keysIn.js'); -const mapKeys = require('./object/mapKeys.js'); -const mapValues = require('./object/mapValues.js'); -const merge = require('./object/merge.js'); -const mergeWith = require('./object/mergeWith.js'); -const omit = require('./object/omit.js'); -const omitBy = require('./object/omitBy.js'); -const pick = require('./object/pick.js'); -const pickBy = require('./object/pickBy.js'); -const property = require('./object/property.js'); -const propertyOf = require('./object/propertyOf.js'); -const result = require('./object/result.js'); -const set = require('./object/set.js'); -const setWith = require('./object/setWith.js'); -const toDefaulted = require('./object/toDefaulted.js'); -const toPairs = require('./object/toPairs.js'); -const toPairsIn = require('./object/toPairsIn.js'); -const transform = require('./object/transform.js'); -const unset = require('./object/unset.js'); -const update = require('./object/update.js'); -const updateWith = require('./object/updateWith.js'); -const values = require('./object/values.js'); -const valuesIn = require('./object/valuesIn.js'); -const isFunction = require('./predicate/isFunction.js'); -const isLength = require('./predicate/isLength.js'); -const isMatchWith = require('./predicate/isMatchWith.js'); -const isNative = require('./predicate/isNative.js'); -const isNull = require('./predicate/isNull.js'); -const isUndefined = require('./predicate/isUndefined.js'); -const conforms = require('./predicate/conforms.js'); -const conformsTo = require('./predicate/conformsTo.js'); -const isArguments = require('./predicate/isArguments.js'); -const isArray = require('./predicate/isArray.js'); -const isArrayBuffer = require('./predicate/isArrayBuffer.js'); -const isArrayLike = require('./predicate/isArrayLike.js'); -const isArrayLikeObject = require('./predicate/isArrayLikeObject.js'); -const isBoolean = require('./predicate/isBoolean.js'); -const isBuffer = require('./predicate/isBuffer.js'); -const isDate = require('./predicate/isDate.js'); -const isElement = require('./predicate/isElement.js'); -const isEmpty = require('./predicate/isEmpty.js'); -const isEqualWith = require('./predicate/isEqualWith.js'); -const isError = require('./predicate/isError.js'); -const isFinite = require('./predicate/isFinite.js'); -const isInteger = require('./predicate/isInteger.js'); -const isMap = require('./predicate/isMap.js'); -const isMatch = require('./predicate/isMatch.js'); -const isNaN = require('./predicate/isNaN.js'); -const isNil = require('./predicate/isNil.js'); -const isNumber = require('./predicate/isNumber.js'); -const isObject = require('./predicate/isObject.js'); -const isObjectLike = require('./predicate/isObjectLike.js'); -const isPlainObject = require('./predicate/isPlainObject.js'); -const isRegExp = require('./predicate/isRegExp.js'); -const isSafeInteger = require('./predicate/isSafeInteger.js'); -const isSet = require('./predicate/isSet.js'); -const isString = require('./predicate/isString.js'); -const isSymbol = require('./predicate/isSymbol.js'); -const isTypedArray = require('./predicate/isTypedArray.js'); -const isWeakMap = require('./predicate/isWeakMap.js'); -const isWeakSet = require('./predicate/isWeakSet.js'); -const matches = require('./predicate/matches.js'); -const matchesProperty = require('./predicate/matchesProperty.js'); -const capitalize = require('./string/capitalize.js'); -const bindAll = require('./util/bindAll.js'); -const camelCase = require('./string/camelCase.js'); -const deburr = require('./string/deburr.js'); -const endsWith = require('./string/endsWith.js'); -const escape = require('./string/escape.js'); -const escapeRegExp = require('./string/escapeRegExp.js'); -const kebabCase = require('./string/kebabCase.js'); -const lowerCase = require('./string/lowerCase.js'); -const lowerFirst = require('./string/lowerFirst.js'); -const pad = require('./string/pad.js'); -const padEnd = require('./string/padEnd.js'); -const padStart = require('./string/padStart.js'); -const repeat = require('./string/repeat.js'); -const replace = require('./string/replace.js'); -const snakeCase = require('./string/snakeCase.js'); -const split = require('./string/split.js'); -const startCase = require('./string/startCase.js'); -const startsWith = require('./string/startsWith.js'); -const template = require('./string/template.js'); -const toLower = require('./string/toLower.js'); -const toUpper = require('./string/toUpper.js'); -const trim = require('./string/trim.js'); -const trimEnd = require('./string/trimEnd.js'); -const trimStart = require('./string/trimStart.js'); -const truncate = require('./string/truncate.js'); -const unescape = require('./string/unescape.js'); -const upperCase = require('./string/upperCase.js'); -const upperFirst = require('./string/upperFirst.js'); -const words = require('./string/words.js'); -const cond = require('./util/cond.js'); -const constant = require('./util/constant.js'); -const defaultTo = require('./util/defaultTo.js'); -const isEqualsSameValueZero = require('../_internal/isEqualsSameValueZero.js'); -const gt = require('./util/gt.js'); -const gte = require('./util/gte.js'); -const invoke = require('./util/invoke.js'); -const iteratee = require('./util/iteratee.js'); -const lt = require('./util/lt.js'); -const lte = require('./util/lte.js'); -const method = require('./util/method.js'); -const methodOf = require('./util/methodOf.js'); -const now = require('./util/now.js'); -const over = require('./util/over.js'); -const overEvery = require('./util/overEvery.js'); -const overSome = require('./util/overSome.js'); -const stubArray = require('./util/stubArray.js'); -const stubFalse = require('./util/stubFalse.js'); -const stubObject = require('./util/stubObject.js'); -const stubString = require('./util/stubString.js'); -const stubTrue = require('./util/stubTrue.js'); -const times = require('./util/times.js'); -const toArray = require('./util/toArray.js'); -const toFinite = require('./util/toFinite.js'); -const toInteger = require('./util/toInteger.js'); -const toLength = require('./util/toLength.js'); -const toNumber = require('./util/toNumber.js'); -const toPath = require('./util/toPath.js'); -const toPlainObject = require('./util/toPlainObject.js'); -const toSafeInteger = require('./util/toSafeInteger.js'); -const toString = require('./util/toString.js'); -const uniqueId = require('./util/uniqueId.js'); -const toolkit = require('./toolkit.js'); - - - -exports.castArray = castArray.castArray; -exports.chunk = chunk.chunk; -exports.compact = compact.compact; -exports.concat = concat.concat; -exports.countBy = countBy.countBy; -exports.difference = difference.difference; -exports.differenceBy = differenceBy.differenceBy; -exports.differenceWith = differenceWith.differenceWith; -exports.drop = drop.drop; -exports.dropRight = dropRight.dropRight; -exports.dropRightWhile = dropRightWhile.dropRightWhile; -exports.dropWhile = dropWhile.dropWhile; -exports.each = forEach.forEach; -exports.forEach = forEach.forEach; -exports.eachRight = forEachRight.forEachRight; -exports.forEachRight = forEachRight.forEachRight; -exports.every = every.every; -exports.fill = fill.fill; -exports.filter = filter.filter; -exports.find = find.find; -exports.findIndex = findIndex.findIndex; -exports.findLast = findLast.findLast; -exports.findLastIndex = findLastIndex.findLastIndex; -exports.first = head.head; -exports.head = head.head; -exports.flatMap = flatMap.flatMap; -exports.flatMapDeep = flatMapDeep.flatMapDeep; -exports.flatMapDepth = flatMapDepth.flatMapDepth; -exports.flatten = flatten.flatten; -exports.flattenDeep = flattenDeep.flattenDeep; -exports.flattenDepth = flattenDepth.flattenDepth; -exports.groupBy = groupBy.groupBy; -exports.includes = includes.includes; -exports.indexOf = indexOf.indexOf; -exports.initial = initial.initial; -exports.intersection = intersection.intersection; -exports.intersectionBy = intersectionBy.intersectionBy; -exports.intersectionWith = intersectionWith.intersectionWith; -exports.invokeMap = invokeMap.invokeMap; -exports.join = join.join; -exports.keyBy = keyBy.keyBy; -exports.last = last.last; -exports.lastIndexOf = lastIndexOf.lastIndexOf; -exports.map = map.map; -exports.nth = nth.nth; -exports.orderBy = orderBy.orderBy; -exports.partition = partition.partition; -exports.pull = pull.pull; -exports.pullAll = pullAll.pullAll; -exports.pullAllBy = pullAllBy.pullAllBy; -exports.pullAllWith = pullAllWith.pullAllWith; -exports.pullAt = pullAt.pullAt; -exports.reduce = reduce.reduce; -exports.reduceRight = reduceRight.reduceRight; -exports.reject = reject.reject; -exports.remove = remove.remove; -exports.reverse = reverse.reverse; -exports.sample = sample.sample; -exports.sampleSize = sampleSize.sampleSize; -exports.shuffle = shuffle.shuffle; -exports.size = size.size; -exports.slice = slice.slice; -exports.some = some.some; -exports.sortBy = sortBy.sortBy; -exports.sortedIndex = sortedIndex.sortedIndex; -exports.sortedIndexBy = sortedIndexBy.sortedIndexBy; -exports.sortedIndexOf = sortedIndexOf.sortedIndexOf; -exports.sortedLastIndex = sortedLastIndex.sortedLastIndex; -exports.sortedLastIndexBy = sortedLastIndexBy.sortedLastIndexBy; -exports.sortedLastIndexOf = sortedLastIndexOf.sortedLastIndexOf; -exports.tail = tail.tail; -exports.take = take.take; -exports.takeRight = takeRight.takeRight; -exports.takeRightWhile = takeRightWhile.takeRightWhile; -exports.takeWhile = takeWhile.takeWhile; -exports.union = union.union; -exports.unionBy = unionBy.unionBy; -exports.unionWith = unionWith.unionWith; -exports.uniq = uniq.uniq; -exports.uniqBy = uniqBy.uniqBy; -exports.uniqWith = uniqWith.uniqWith; -exports.unzip = unzip.unzip; -exports.unzipWith = unzipWith.unzipWith; -exports.without = without.without; -exports.xor = xor.xor; -exports.xorBy = xorBy.xorBy; -exports.xorWith = xorWith.xorWith; -exports.zip = zip.zip; -exports.zipObject = zipObject.zipObject; -exports.zipObjectDeep = zipObjectDeep.zipObjectDeep; -exports.zipWith = zipWith.zipWith; -exports.after = after.after; -exports.ary = ary.ary; -exports.attempt = attempt.attempt; -exports.before = before.before; -exports.bind = bind.bind; -exports.bindKey = bindKey.bindKey; -exports.curry = curry.curry; -exports.curryRight = curryRight.curryRight; -exports.debounce = debounce.debounce; -exports.defer = defer.defer; -exports.delay = delay.delay; -exports.flip = flip.flip; -exports.flow = flow.flow; -exports.flowRight = flowRight.flowRight; -exports.memoize = memoize.memoize; -exports.negate = negate.negate; -exports.nthArg = nthArg.nthArg; -exports.once = once.once; -exports.overArgs = overArgs.overArgs; -exports.partial = partial.partial; -exports.partialRight = partialRight.partialRight; -exports.rearg = rearg.rearg; -exports.rest = rest.rest; -exports.spread = spread.spread; -exports.throttle = throttle.throttle; -exports.unary = unary.unary; -exports.wrap = wrap.wrap; -exports.add = add.add; -exports.ceil = ceil.ceil; -exports.clamp = clamp.clamp; -exports.divide = divide.divide; -exports.floor = floor.floor; -exports.inRange = inRange.inRange; -exports.max = max.max; -exports.maxBy = maxBy.maxBy; -exports.mean = mean.mean; -exports.meanBy = meanBy.meanBy; -exports.min = min.min; -exports.minBy = minBy.minBy; -exports.multiply = multiply.multiply; -exports.parseInt = parseInt.parseInt; -exports.random = random.random; -exports.range = range.range; -exports.rangeRight = rangeRight.rangeRight; -exports.round = round.round; -exports.subtract = subtract.subtract; -exports.sum = sum.sum; -exports.sumBy = sumBy.sumBy; -exports.isEqual = isEqual.isEqual; -exports.identity = identity.identity; -exports.noop = noop.noop; -exports.assign = assign.assign; -exports.assignIn = assignIn.assignIn; -exports.extend = assignIn.assignIn; -exports.assignInWith = assignInWith.assignInWith; -exports.extendWith = assignInWith.assignInWith; -exports.assignWith = assignWith.assignWith; -exports.at = at.at; -exports.clone = clone.clone; -exports.cloneDeep = cloneDeep.cloneDeep; -exports.cloneDeepWith = cloneDeepWith.cloneDeepWith; -exports.cloneWith = cloneWith.cloneWith; -exports.create = create.create; -exports.defaults = defaults.defaults; -exports.defaultsDeep = defaultsDeep.defaultsDeep; -exports.findKey = findKey.findKey; -exports.findLastKey = findLastKey.findLastKey; -exports.forIn = forIn.forIn; -exports.forInRight = forInRight.forInRight; -exports.forOwn = forOwn.forOwn; -exports.forOwnRight = forOwnRight.forOwnRight; -exports.fromPairs = fromPairs.fromPairs; -exports.functions = functions.functions; -exports.functionsIn = functionsIn.functionsIn; -exports.get = get.get; -exports.has = has.has; -exports.hasIn = hasIn.hasIn; -exports.invert = invert.invert; -exports.invertBy = invertBy.invertBy; -exports.keys = keys.keys; -exports.keysIn = keysIn.keysIn; -exports.mapKeys = mapKeys.mapKeys; -exports.mapValues = mapValues.mapValues; -exports.merge = merge.merge; -exports.mergeWith = mergeWith.mergeWith; -exports.omit = omit.omit; -exports.omitBy = omitBy.omitBy; -exports.pick = pick.pick; -exports.pickBy = pickBy.pickBy; -exports.property = property.property; -exports.propertyOf = propertyOf.propertyOf; -exports.result = result.result; -exports.set = set.set; -exports.setWith = setWith.setWith; -exports.toDefaulted = toDefaulted.toDefaulted; -exports.toPairs = toPairs.toPairs; -exports.toPairsIn = toPairsIn.toPairsIn; -exports.transform = transform.transform; -exports.unset = unset.unset; -exports.update = update.update; -exports.updateWith = updateWith.updateWith; -exports.values = values.values; -exports.valuesIn = valuesIn.valuesIn; -exports.isFunction = isFunction.isFunction; -exports.isLength = isLength.isLength; -exports.isMatchWith = isMatchWith.isMatchWith; -exports.isNative = isNative.isNative; -exports.isNull = isNull.isNull; -exports.isUndefined = isUndefined.isUndefined; -exports.conforms = conforms.conforms; -exports.conformsTo = conformsTo.conformsTo; -exports.isArguments = isArguments.isArguments; -exports.isArray = isArray.isArray; -exports.isArrayBuffer = isArrayBuffer.isArrayBuffer; -exports.isArrayLike = isArrayLike.isArrayLike; -exports.isArrayLikeObject = isArrayLikeObject.isArrayLikeObject; -exports.isBoolean = isBoolean.isBoolean; -exports.isBuffer = isBuffer.isBuffer; -exports.isDate = isDate.isDate; -exports.isElement = isElement.isElement; -exports.isEmpty = isEmpty.isEmpty; -exports.isEqualWith = isEqualWith.isEqualWith; -exports.isError = isError.isError; -exports.isFinite = isFinite.isFinite; -exports.isInteger = isInteger.isInteger; -exports.isMap = isMap.isMap; -exports.isMatch = isMatch.isMatch; -exports.isNaN = isNaN.isNaN; -exports.isNil = isNil.isNil; -exports.isNumber = isNumber.isNumber; -exports.isObject = isObject.isObject; -exports.isObjectLike = isObjectLike.isObjectLike; -exports.isPlainObject = isPlainObject.isPlainObject; -exports.isRegExp = isRegExp.isRegExp; -exports.isSafeInteger = isSafeInteger.isSafeInteger; -exports.isSet = isSet.isSet; -exports.isString = isString.isString; -exports.isSymbol = isSymbol.isSymbol; -exports.isTypedArray = isTypedArray.isTypedArray; -exports.isWeakMap = isWeakMap.isWeakMap; -exports.isWeakSet = isWeakSet.isWeakSet; -exports.matches = matches.matches; -exports.matchesProperty = matchesProperty.matchesProperty; -exports.capitalize = capitalize.capitalize; -exports.bindAll = bindAll.bindAll; -exports.camelCase = camelCase.camelCase; -exports.deburr = deburr.deburr; -exports.endsWith = endsWith.endsWith; -exports.escape = escape.escape; -exports.escapeRegExp = escapeRegExp.escapeRegExp; -exports.kebabCase = kebabCase.kebabCase; -exports.lowerCase = lowerCase.lowerCase; -exports.lowerFirst = lowerFirst.lowerFirst; -exports.pad = pad.pad; -exports.padEnd = padEnd.padEnd; -exports.padStart = padStart.padStart; -exports.repeat = repeat.repeat; -exports.replace = replace.replace; -exports.snakeCase = snakeCase.snakeCase; -exports.split = split.split; -exports.startCase = startCase.startCase; -exports.startsWith = startsWith.startsWith; -exports.template = template.template; -exports.templateSettings = template.templateSettings; -exports.toLower = toLower.toLower; -exports.toUpper = toUpper.toUpper; -exports.trim = trim.trim; -exports.trimEnd = trimEnd.trimEnd; -exports.trimStart = trimStart.trimStart; -exports.truncate = truncate.truncate; -exports.unescape = unescape.unescape; -exports.upperCase = upperCase.upperCase; -exports.upperFirst = upperFirst.upperFirst; -exports.words = words.words; -exports.cond = cond.cond; -exports.constant = constant.constant; -exports.defaultTo = defaultTo.defaultTo; -exports.eq = isEqualsSameValueZero.isEqualsSameValueZero; -exports.gt = gt.gt; -exports.gte = gte.gte; -exports.invoke = invoke.invoke; -exports.iteratee = iteratee.iteratee; -exports.lt = lt.lt; -exports.lte = lte.lte; -exports.method = method.method; -exports.methodOf = methodOf.methodOf; -exports.now = now.now; -exports.over = over.over; -exports.overEvery = overEvery.overEvery; -exports.overSome = overSome.overSome; -exports.stubArray = stubArray.stubArray; -exports.stubFalse = stubFalse.stubFalse; -exports.stubObject = stubObject.stubObject; -exports.stubString = stubString.stubString; -exports.stubTrue = stubTrue.stubTrue; -exports.times = times.times; -exports.toArray = toArray.toArray; -exports.toFinite = toFinite.toFinite; -exports.toInteger = toInteger.toInteger; -exports.toLength = toLength.toLength; -exports.toNumber = toNumber.toNumber; -exports.toPath = toPath.toPath; -exports.toPlainObject = toPlainObject.toPlainObject; -exports.toSafeInteger = toSafeInteger.toSafeInteger; -exports.toString = toString.toString; -exports.uniqueId = uniqueId.uniqueId; -exports.default = toolkit.toolkit; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/index.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/index.mjs deleted file mode 100644 index 363595c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/index.mjs +++ /dev/null @@ -1,292 +0,0 @@ -export { castArray } from './array/castArray.mjs'; -export { chunk } from './array/chunk.mjs'; -export { compact } from './array/compact.mjs'; -export { concat } from './array/concat.mjs'; -export { countBy } from './array/countBy.mjs'; -export { difference } from './array/difference.mjs'; -export { differenceBy } from './array/differenceBy.mjs'; -export { differenceWith } from './array/differenceWith.mjs'; -export { drop } from './array/drop.mjs'; -export { dropRight } from './array/dropRight.mjs'; -export { dropRightWhile } from './array/dropRightWhile.mjs'; -export { dropWhile } from './array/dropWhile.mjs'; -export { forEach as each, forEach } from './array/forEach.mjs'; -export { forEachRight as eachRight, forEachRight } from './array/forEachRight.mjs'; -export { every } from './array/every.mjs'; -export { fill } from './array/fill.mjs'; -export { filter } from './array/filter.mjs'; -export { find } from './array/find.mjs'; -export { findIndex } from './array/findIndex.mjs'; -export { findLast } from './array/findLast.mjs'; -export { findLastIndex } from './array/findLastIndex.mjs'; -export { head as first, head } from './array/head.mjs'; -export { flatMap } from './array/flatMap.mjs'; -export { flatMapDeep } from './array/flatMapDeep.mjs'; -export { flatMapDepth } from './array/flatMapDepth.mjs'; -export { flatten } from './array/flatten.mjs'; -export { flattenDeep } from './array/flattenDeep.mjs'; -export { flattenDepth } from './array/flattenDepth.mjs'; -export { groupBy } from './array/groupBy.mjs'; -export { includes } from './array/includes.mjs'; -export { indexOf } from './array/indexOf.mjs'; -export { initial } from './array/initial.mjs'; -export { intersection } from './array/intersection.mjs'; -export { intersectionBy } from './array/intersectionBy.mjs'; -export { intersectionWith } from './array/intersectionWith.mjs'; -export { invokeMap } from './array/invokeMap.mjs'; -export { join } from './array/join.mjs'; -export { keyBy } from './array/keyBy.mjs'; -export { last } from './array/last.mjs'; -export { lastIndexOf } from './array/lastIndexOf.mjs'; -export { map } from './array/map.mjs'; -export { nth } from './array/nth.mjs'; -export { orderBy } from './array/orderBy.mjs'; -export { partition } from './array/partition.mjs'; -export { pull } from './array/pull.mjs'; -export { pullAll } from './array/pullAll.mjs'; -export { pullAllBy } from './array/pullAllBy.mjs'; -export { pullAllWith } from './array/pullAllWith.mjs'; -export { pullAt } from './array/pullAt.mjs'; -export { reduce } from './array/reduce.mjs'; -export { reduceRight } from './array/reduceRight.mjs'; -export { reject } from './array/reject.mjs'; -export { remove } from './array/remove.mjs'; -export { reverse } from './array/reverse.mjs'; -export { sample } from './array/sample.mjs'; -export { sampleSize } from './array/sampleSize.mjs'; -export { shuffle } from './array/shuffle.mjs'; -export { size } from './array/size.mjs'; -export { slice } from './array/slice.mjs'; -export { some } from './array/some.mjs'; -export { sortBy } from './array/sortBy.mjs'; -export { sortedIndex } from './array/sortedIndex.mjs'; -export { sortedIndexBy } from './array/sortedIndexBy.mjs'; -export { sortedIndexOf } from './array/sortedIndexOf.mjs'; -export { sortedLastIndex } from './array/sortedLastIndex.mjs'; -export { sortedLastIndexBy } from './array/sortedLastIndexBy.mjs'; -export { sortedLastIndexOf } from './array/sortedLastIndexOf.mjs'; -export { tail } from './array/tail.mjs'; -export { take } from './array/take.mjs'; -export { takeRight } from './array/takeRight.mjs'; -export { takeRightWhile } from './array/takeRightWhile.mjs'; -export { takeWhile } from './array/takeWhile.mjs'; -export { union } from './array/union.mjs'; -export { unionBy } from './array/unionBy.mjs'; -export { unionWith } from './array/unionWith.mjs'; -export { uniq } from './array/uniq.mjs'; -export { uniqBy } from './array/uniqBy.mjs'; -export { uniqWith } from './array/uniqWith.mjs'; -export { unzip } from './array/unzip.mjs'; -export { unzipWith } from './array/unzipWith.mjs'; -export { without } from './array/without.mjs'; -export { xor } from './array/xor.mjs'; -export { xorBy } from './array/xorBy.mjs'; -export { xorWith } from './array/xorWith.mjs'; -export { zip } from './array/zip.mjs'; -export { zipObject } from './array/zipObject.mjs'; -export { zipObjectDeep } from './array/zipObjectDeep.mjs'; -export { zipWith } from './array/zipWith.mjs'; -export { after } from './function/after.mjs'; -export { ary } from './function/ary.mjs'; -export { attempt } from './function/attempt.mjs'; -export { before } from './function/before.mjs'; -export { bind } from './function/bind.mjs'; -export { bindKey } from './function/bindKey.mjs'; -export { curry } from './function/curry.mjs'; -export { curryRight } from './function/curryRight.mjs'; -export { debounce } from './function/debounce.mjs'; -export { defer } from './function/defer.mjs'; -export { delay } from './function/delay.mjs'; -export { flip } from './function/flip.mjs'; -export { flow } from './function/flow.mjs'; -export { flowRight } from './function/flowRight.mjs'; -export { memoize } from './function/memoize.mjs'; -export { negate } from './function/negate.mjs'; -export { nthArg } from './function/nthArg.mjs'; -export { once } from './function/once.mjs'; -export { overArgs } from './function/overArgs.mjs'; -export { partial } from './function/partial.mjs'; -export { partialRight } from './function/partialRight.mjs'; -export { rearg } from './function/rearg.mjs'; -export { rest } from './function/rest.mjs'; -export { spread } from './function/spread.mjs'; -export { throttle } from './function/throttle.mjs'; -export { unary } from './function/unary.mjs'; -export { wrap } from './function/wrap.mjs'; -export { add } from './math/add.mjs'; -export { ceil } from './math/ceil.mjs'; -export { clamp } from './math/clamp.mjs'; -export { divide } from './math/divide.mjs'; -export { floor } from './math/floor.mjs'; -export { inRange } from './math/inRange.mjs'; -export { max } from './math/max.mjs'; -export { maxBy } from './math/maxBy.mjs'; -export { mean } from './math/mean.mjs'; -export { meanBy } from './math/meanBy.mjs'; -export { min } from './math/min.mjs'; -export { minBy } from './math/minBy.mjs'; -export { multiply } from './math/multiply.mjs'; -export { parseInt } from './math/parseInt.mjs'; -export { random } from './math/random.mjs'; -export { range } from './math/range.mjs'; -export { rangeRight } from './math/rangeRight.mjs'; -export { round } from './math/round.mjs'; -export { subtract } from './math/subtract.mjs'; -export { sum } from './math/sum.mjs'; -export { sumBy } from './math/sumBy.mjs'; -export { isEqual } from '../predicate/isEqual.mjs'; -export { identity } from './function/identity.mjs'; -export { noop } from './function/noop.mjs'; -export { assign } from './object/assign.mjs'; -export { assignIn, assignIn as extend } from './object/assignIn.mjs'; -export { assignInWith, assignInWith as extendWith } from './object/assignInWith.mjs'; -export { assignWith } from './object/assignWith.mjs'; -export { at } from './object/at.mjs'; -export { clone } from './object/clone.mjs'; -export { cloneDeep } from './object/cloneDeep.mjs'; -export { cloneDeepWith } from './object/cloneDeepWith.mjs'; -export { cloneWith } from './object/cloneWith.mjs'; -export { create } from './object/create.mjs'; -export { defaults } from './object/defaults.mjs'; -export { defaultsDeep } from './object/defaultsDeep.mjs'; -export { findKey } from './object/findKey.mjs'; -export { findLastKey } from './object/findLastKey.mjs'; -export { forIn } from './object/forIn.mjs'; -export { forInRight } from './object/forInRight.mjs'; -export { forOwn } from './object/forOwn.mjs'; -export { forOwnRight } from './object/forOwnRight.mjs'; -export { fromPairs } from './object/fromPairs.mjs'; -export { functions } from './object/functions.mjs'; -export { functionsIn } from './object/functionsIn.mjs'; -export { get } from './object/get.mjs'; -export { has } from './object/has.mjs'; -export { hasIn } from './object/hasIn.mjs'; -export { invert } from './object/invert.mjs'; -export { invertBy } from './object/invertBy.mjs'; -export { keys } from './object/keys.mjs'; -export { keysIn } from './object/keysIn.mjs'; -export { mapKeys } from './object/mapKeys.mjs'; -export { mapValues } from './object/mapValues.mjs'; -export { merge } from './object/merge.mjs'; -export { mergeWith } from './object/mergeWith.mjs'; -export { omit } from './object/omit.mjs'; -export { omitBy } from './object/omitBy.mjs'; -export { pick } from './object/pick.mjs'; -export { pickBy } from './object/pickBy.mjs'; -export { property } from './object/property.mjs'; -export { propertyOf } from './object/propertyOf.mjs'; -export { result } from './object/result.mjs'; -export { set } from './object/set.mjs'; -export { setWith } from './object/setWith.mjs'; -export { toDefaulted } from './object/toDefaulted.mjs'; -export { toPairs } from './object/toPairs.mjs'; -export { toPairsIn } from './object/toPairsIn.mjs'; -export { transform } from './object/transform.mjs'; -export { unset } from './object/unset.mjs'; -export { update } from './object/update.mjs'; -export { updateWith } from './object/updateWith.mjs'; -export { values } from './object/values.mjs'; -export { valuesIn } from './object/valuesIn.mjs'; -export { isFunction } from './predicate/isFunction.mjs'; -export { isLength } from './predicate/isLength.mjs'; -export { isMatchWith } from './predicate/isMatchWith.mjs'; -export { isNative } from './predicate/isNative.mjs'; -export { isNull } from './predicate/isNull.mjs'; -export { isUndefined } from './predicate/isUndefined.mjs'; -export { conforms } from './predicate/conforms.mjs'; -export { conformsTo } from './predicate/conformsTo.mjs'; -export { isArguments } from './predicate/isArguments.mjs'; -export { isArray } from './predicate/isArray.mjs'; -export { isArrayBuffer } from './predicate/isArrayBuffer.mjs'; -export { isArrayLike } from './predicate/isArrayLike.mjs'; -export { isArrayLikeObject } from './predicate/isArrayLikeObject.mjs'; -export { isBoolean } from './predicate/isBoolean.mjs'; -export { isBuffer } from './predicate/isBuffer.mjs'; -export { isDate } from './predicate/isDate.mjs'; -export { isElement } from './predicate/isElement.mjs'; -export { isEmpty } from './predicate/isEmpty.mjs'; -export { isEqualWith } from './predicate/isEqualWith.mjs'; -export { isError } from './predicate/isError.mjs'; -export { isFinite } from './predicate/isFinite.mjs'; -export { isInteger } from './predicate/isInteger.mjs'; -export { isMap } from './predicate/isMap.mjs'; -export { isMatch } from './predicate/isMatch.mjs'; -export { isNaN } from './predicate/isNaN.mjs'; -export { isNil } from './predicate/isNil.mjs'; -export { isNumber } from './predicate/isNumber.mjs'; -export { isObject } from './predicate/isObject.mjs'; -export { isObjectLike } from './predicate/isObjectLike.mjs'; -export { isPlainObject } from './predicate/isPlainObject.mjs'; -export { isRegExp } from './predicate/isRegExp.mjs'; -export { isSafeInteger } from './predicate/isSafeInteger.mjs'; -export { isSet } from './predicate/isSet.mjs'; -export { isString } from './predicate/isString.mjs'; -export { isSymbol } from './predicate/isSymbol.mjs'; -export { isTypedArray } from './predicate/isTypedArray.mjs'; -export { isWeakMap } from './predicate/isWeakMap.mjs'; -export { isWeakSet } from './predicate/isWeakSet.mjs'; -export { matches } from './predicate/matches.mjs'; -export { matchesProperty } from './predicate/matchesProperty.mjs'; -export { capitalize } from './string/capitalize.mjs'; -export { bindAll } from './util/bindAll.mjs'; -export { camelCase } from './string/camelCase.mjs'; -export { deburr } from './string/deburr.mjs'; -export { endsWith } from './string/endsWith.mjs'; -export { escape } from './string/escape.mjs'; -export { escapeRegExp } from './string/escapeRegExp.mjs'; -export { kebabCase } from './string/kebabCase.mjs'; -export { lowerCase } from './string/lowerCase.mjs'; -export { lowerFirst } from './string/lowerFirst.mjs'; -export { pad } from './string/pad.mjs'; -export { padEnd } from './string/padEnd.mjs'; -export { padStart } from './string/padStart.mjs'; -export { repeat } from './string/repeat.mjs'; -export { replace } from './string/replace.mjs'; -export { snakeCase } from './string/snakeCase.mjs'; -export { split } from './string/split.mjs'; -export { startCase } from './string/startCase.mjs'; -export { startsWith } from './string/startsWith.mjs'; -export { template, templateSettings } from './string/template.mjs'; -export { toLower } from './string/toLower.mjs'; -export { toUpper } from './string/toUpper.mjs'; -export { trim } from './string/trim.mjs'; -export { trimEnd } from './string/trimEnd.mjs'; -export { trimStart } from './string/trimStart.mjs'; -export { truncate } from './string/truncate.mjs'; -export { unescape } from './string/unescape.mjs'; -export { upperCase } from './string/upperCase.mjs'; -export { upperFirst } from './string/upperFirst.mjs'; -export { words } from './string/words.mjs'; -export { cond } from './util/cond.mjs'; -export { constant } from './util/constant.mjs'; -export { defaultTo } from './util/defaultTo.mjs'; -export { isEqualsSameValueZero as eq } from '../_internal/isEqualsSameValueZero.mjs'; -export { gt } from './util/gt.mjs'; -export { gte } from './util/gte.mjs'; -export { invoke } from './util/invoke.mjs'; -export { iteratee } from './util/iteratee.mjs'; -export { lt } from './util/lt.mjs'; -export { lte } from './util/lte.mjs'; -export { method } from './util/method.mjs'; -export { methodOf } from './util/methodOf.mjs'; -export { now } from './util/now.mjs'; -export { over } from './util/over.mjs'; -export { overEvery } from './util/overEvery.mjs'; -export { overSome } from './util/overSome.mjs'; -export { stubArray } from './util/stubArray.mjs'; -export { stubFalse } from './util/stubFalse.mjs'; -export { stubObject } from './util/stubObject.mjs'; -export { stubString } from './util/stubString.mjs'; -export { stubTrue } from './util/stubTrue.mjs'; -export { times } from './util/times.mjs'; -export { toArray } from './util/toArray.mjs'; -export { toFinite } from './util/toFinite.mjs'; -export { toInteger } from './util/toInteger.mjs'; -export { toLength } from './util/toLength.mjs'; -export { toNumber } from './util/toNumber.mjs'; -export { toPath } from './util/toPath.mjs'; -export { toPlainObject } from './util/toPlainObject.mjs'; -export { toSafeInteger } from './util/toSafeInteger.mjs'; -export { toString } from './util/toString.mjs'; -export { uniqueId } from './util/uniqueId.mjs'; -export { toolkit as default } from './toolkit.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/add.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/add.d.mts deleted file mode 100644 index 7e6b365..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/add.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Adds two numbers while safely handling `NaN` values. - * - * This function takes two numbers and returns their sum. If either of the numbers is `NaN`, - * the function returns `NaN`. - * - * @param {number} value - The first number to add. - * @param {number} other - The second number to add. - * @returns {number} The sum of the two numbers, or `NaN` if any input is `NaN`. - * - * @example - * const result1 = add(2, 3); // result1 will be 5 - * const result2 = add(5, NaN); // result2 will be NaN - * const result3 = add(NaN, 10); // result3 will be NaN - */ -declare function add(value: number, other: number): number; - -export { add }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/add.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/add.d.ts deleted file mode 100644 index 7e6b365..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/add.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Adds two numbers while safely handling `NaN` values. - * - * This function takes two numbers and returns their sum. If either of the numbers is `NaN`, - * the function returns `NaN`. - * - * @param {number} value - The first number to add. - * @param {number} other - The second number to add. - * @returns {number} The sum of the two numbers, or `NaN` if any input is `NaN`. - * - * @example - * const result1 = add(2, 3); // result1 will be 5 - * const result2 = add(5, NaN); // result2 will be NaN - * const result3 = add(NaN, 10); // result3 will be NaN - */ -declare function add(value: number, other: number): number; - -export { add }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/add.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/add.js deleted file mode 100644 index e50f0c2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/add.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toNumber = require('../util/toNumber.js'); -const toString = require('../util/toString.js'); - -function add(value, other) { - if (value === undefined && other === undefined) { - return 0; - } - if (value === undefined || other === undefined) { - return value ?? other; - } - if (typeof value === 'string' || typeof other === 'string') { - value = toString.toString(value); - other = toString.toString(other); - } - else { - value = toNumber.toNumber(value); - other = toNumber.toNumber(other); - } - return value + other; -} - -exports.add = add; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/add.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/add.mjs deleted file mode 100644 index fbaca9e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/add.mjs +++ /dev/null @@ -1,22 +0,0 @@ -import { toNumber } from '../util/toNumber.mjs'; -import { toString } from '../util/toString.mjs'; - -function add(value, other) { - if (value === undefined && other === undefined) { - return 0; - } - if (value === undefined || other === undefined) { - return value ?? other; - } - if (typeof value === 'string' || typeof other === 'string') { - value = toString(value); - other = toString(other); - } - else { - value = toNumber(value); - other = toNumber(other); - } - return value + other; -} - -export { add }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/ceil.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/ceil.d.mts deleted file mode 100644 index 54145cf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/ceil.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Computes number rounded up to precision. - * - * @param {number | string} number The number to round up. - * @param {number | string} precision The precision to round up to. - * @returns {number} Returns the rounded up number. - * - * @example - * ceil(4.006); // => 5 - * ceil(6.004, 2); // => 6.01 - * ceil(6040, -2); // => 6100 - */ -declare function ceil(number: number, precision?: number): number; - -export { ceil }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/ceil.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/ceil.d.ts deleted file mode 100644 index 54145cf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/ceil.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Computes number rounded up to precision. - * - * @param {number | string} number The number to round up. - * @param {number | string} precision The precision to round up to. - * @returns {number} Returns the rounded up number. - * - * @example - * ceil(4.006); // => 5 - * ceil(6.004, 2); // => 6.01 - * ceil(6040, -2); // => 6100 - */ -declare function ceil(number: number, precision?: number): number; - -export { ceil }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/ceil.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/ceil.js deleted file mode 100644 index b5740c1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/ceil.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const decimalAdjust = require('../_internal/decimalAdjust.js'); - -function ceil(number, precision = 0) { - return decimalAdjust.decimalAdjust('ceil', number, precision); -} - -exports.ceil = ceil; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/ceil.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/ceil.mjs deleted file mode 100644 index 55bf703..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/ceil.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { decimalAdjust } from '../_internal/decimalAdjust.mjs'; - -function ceil(number, precision = 0) { - return decimalAdjust('ceil', number, precision); -} - -export { ceil }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/clamp.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/clamp.d.mts deleted file mode 100644 index 76a1294..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/clamp.d.mts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Clamps a number within the specified bounds. - * - * @param {number} number The number to clamp - * @param {number} lower The lower bound - * @param {number} upper The upper bound - * @returns {number} Returns the clamped number - * @example - * clamp(3, 2, 4) // => 3 - * clamp(0, 5, 10) // => 5 - * clamp(15, 5, 10) // => 10 - */ -declare function clamp(number: number, lower: number, upper: number): number; -/** - * Clamps a number to an upper bound. - * - * @param {number} number The number to clamp - * @param {number} upper The upper bound - * @returns {number} Returns the clamped number - * @example - * clamp(5, 3) // => 3 - * clamp(2, 3) // => 2 - */ -declare function clamp(number: number, upper: number): number; - -export { clamp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/clamp.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/clamp.d.ts deleted file mode 100644 index 76a1294..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/clamp.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Clamps a number within the specified bounds. - * - * @param {number} number The number to clamp - * @param {number} lower The lower bound - * @param {number} upper The upper bound - * @returns {number} Returns the clamped number - * @example - * clamp(3, 2, 4) // => 3 - * clamp(0, 5, 10) // => 5 - * clamp(15, 5, 10) // => 10 - */ -declare function clamp(number: number, lower: number, upper: number): number; -/** - * Clamps a number to an upper bound. - * - * @param {number} number The number to clamp - * @param {number} upper The upper bound - * @returns {number} Returns the clamped number - * @example - * clamp(5, 3) // => 3 - * clamp(2, 3) // => 2 - */ -declare function clamp(number: number, upper: number): number; - -export { clamp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/clamp.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/clamp.js deleted file mode 100644 index 6621be3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/clamp.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toNumber = require('../util/toNumber.js'); - -function clamp(value, bound1, bound2) { - if (bound2 === undefined) { - bound2 = bound1; - bound1 = undefined; - } - if (bound2 !== undefined) { - bound2 = toNumber.toNumber(bound2); - value = Math.min(value, Number.isNaN(bound2) ? 0 : bound2); - } - if (bound1 !== undefined) { - bound1 = toNumber.toNumber(bound1); - value = Math.max(value, Number.isNaN(bound1) ? 0 : bound1); - } - return value; -} - -exports.clamp = clamp; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/clamp.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/clamp.mjs deleted file mode 100644 index f8ea84a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/clamp.mjs +++ /dev/null @@ -1,19 +0,0 @@ -import { toNumber } from '../util/toNumber.mjs'; - -function clamp(value, bound1, bound2) { - if (bound2 === undefined) { - bound2 = bound1; - bound1 = undefined; - } - if (bound2 !== undefined) { - bound2 = toNumber(bound2); - value = Math.min(value, Number.isNaN(bound2) ? 0 : bound2); - } - if (bound1 !== undefined) { - bound1 = toNumber(bound1); - value = Math.max(value, Number.isNaN(bound1) ? 0 : bound1); - } - return value; -} - -export { clamp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/divide.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/divide.d.mts deleted file mode 100644 index 64e7353..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/divide.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Divide two numbers. - * - * If either of the numbers is `NaN`, the function returns `NaN`. - * - * @param {number} value The first number in a division. - * @param {number} other The second number in a division. - * @returns {number} The quotient of value and other. - * - * @example - * divide(6, 3); // => 2 - * divide(2, NaN); // => NaN - * divide(NaN, 3); // => NaN - * divide(NaN, NaN); // => NaN - */ -declare function divide(value: number, other: number): number; - -export { divide }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/divide.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/divide.d.ts deleted file mode 100644 index 64e7353..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/divide.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Divide two numbers. - * - * If either of the numbers is `NaN`, the function returns `NaN`. - * - * @param {number} value The first number in a division. - * @param {number} other The second number in a division. - * @returns {number} The quotient of value and other. - * - * @example - * divide(6, 3); // => 2 - * divide(2, NaN); // => NaN - * divide(NaN, 3); // => NaN - * divide(NaN, NaN); // => NaN - */ -declare function divide(value: number, other: number): number; - -export { divide }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/divide.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/divide.js deleted file mode 100644 index c9f6cec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/divide.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toNumber = require('../util/toNumber.js'); -const toString = require('../util/toString.js'); - -function divide(value, other) { - if (value === undefined && other === undefined) { - return 1; - } - if (value === undefined || other === undefined) { - return value ?? other; - } - if (typeof value === 'string' || typeof other === 'string') { - value = toString.toString(value); - other = toString.toString(other); - } - else { - value = toNumber.toNumber(value); - other = toNumber.toNumber(other); - } - return value / other; -} - -exports.divide = divide; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/divide.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/divide.mjs deleted file mode 100644 index 68802a2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/divide.mjs +++ /dev/null @@ -1,22 +0,0 @@ -import { toNumber } from '../util/toNumber.mjs'; -import { toString } from '../util/toString.mjs'; - -function divide(value, other) { - if (value === undefined && other === undefined) { - return 1; - } - if (value === undefined || other === undefined) { - return value ?? other; - } - if (typeof value === 'string' || typeof other === 'string') { - value = toString(value); - other = toString(other); - } - else { - value = toNumber(value); - other = toNumber(other); - } - return value / other; -} - -export { divide }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/floor.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/floor.d.mts deleted file mode 100644 index 1b808da..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/floor.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Computes number rounded down to precision. - * - * @param {number | string} number The number to round down. - * @param {number | string} precision The precision to round down to. - * @returns {number} Returns the rounded down number. - * - * @example - * floor(4.006); // => 4 - * floor(0.046, 2); // => 0.04 - * floor(4060, -2); // => 4000 - */ -declare function floor(number: number, precision?: number): number; - -export { floor }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/floor.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/floor.d.ts deleted file mode 100644 index 1b808da..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/floor.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Computes number rounded down to precision. - * - * @param {number | string} number The number to round down. - * @param {number | string} precision The precision to round down to. - * @returns {number} Returns the rounded down number. - * - * @example - * floor(4.006); // => 4 - * floor(0.046, 2); // => 0.04 - * floor(4060, -2); // => 4000 - */ -declare function floor(number: number, precision?: number): number; - -export { floor }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/floor.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/floor.js deleted file mode 100644 index 5065045..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/floor.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const decimalAdjust = require('../_internal/decimalAdjust.js'); - -function floor(number, precision = 0) { - return decimalAdjust.decimalAdjust('floor', number, precision); -} - -exports.floor = floor; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/floor.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/floor.mjs deleted file mode 100644 index 0c39324..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/floor.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { decimalAdjust } from '../_internal/decimalAdjust.mjs'; - -function floor(number, precision = 0) { - return decimalAdjust('floor', number, precision); -} - -export { floor }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/inRange.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/inRange.d.mts deleted file mode 100644 index bb5d003..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/inRange.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Checks if the value is within a specified range. - * - * @param {number} value The value to check. - * @param {number} minimum The lower bound of the range (inclusive). - * @param {number} maximum The upper bound of the range (exclusive). - * @returns {boolean} `true` if the value is within the specified range, otherwise `false`. - * @throws {Error} Throws an error if the `minimum` is greater or equal than the `maximum`. - * - * @example - * const result1 = inRange(3, 5); // result1 will be true. - * const result2 = inRange(1, 2, 5); // result2 will be false. - * const result3 = inRange(1, 5, 2); // If the minimum is greater or equal than the maximum, an error is thrown. - */ -declare function inRange(value: number, minimum: number, maximum?: number): boolean; - -export { inRange }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/inRange.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/inRange.d.ts deleted file mode 100644 index bb5d003..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/inRange.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Checks if the value is within a specified range. - * - * @param {number} value The value to check. - * @param {number} minimum The lower bound of the range (inclusive). - * @param {number} maximum The upper bound of the range (exclusive). - * @returns {boolean} `true` if the value is within the specified range, otherwise `false`. - * @throws {Error} Throws an error if the `minimum` is greater or equal than the `maximum`. - * - * @example - * const result1 = inRange(3, 5); // result1 will be true. - * const result2 = inRange(1, 2, 5); // result2 will be false. - * const result3 = inRange(1, 5, 2); // If the minimum is greater or equal than the maximum, an error is thrown. - */ -declare function inRange(value: number, minimum: number, maximum?: number): boolean; - -export { inRange }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/inRange.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/inRange.js deleted file mode 100644 index 025fcdf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/inRange.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const inRange$1 = require('../../math/inRange.js'); - -function inRange(value, minimum, maximum) { - if (!minimum) { - minimum = 0; - } - if (maximum != null && !maximum) { - maximum = 0; - } - if (minimum != null && typeof minimum !== 'number') { - minimum = Number(minimum); - } - if (maximum == null && minimum === 0) { - return false; - } - if (maximum != null && typeof maximum !== 'number') { - maximum = Number(maximum); - } - if (maximum != null && minimum > maximum) { - [minimum, maximum] = [maximum, minimum]; - } - if (minimum === maximum) { - return false; - } - return inRange$1.inRange(value, minimum, maximum); -} - -exports.inRange = inRange; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/inRange.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/inRange.mjs deleted file mode 100644 index 59adc20..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/inRange.mjs +++ /dev/null @@ -1,28 +0,0 @@ -import { inRange as inRange$1 } from '../../math/inRange.mjs'; - -function inRange(value, minimum, maximum) { - if (!minimum) { - minimum = 0; - } - if (maximum != null && !maximum) { - maximum = 0; - } - if (minimum != null && typeof minimum !== 'number') { - minimum = Number(minimum); - } - if (maximum == null && minimum === 0) { - return false; - } - if (maximum != null && typeof maximum !== 'number') { - maximum = Number(maximum); - } - if (maximum != null && minimum > maximum) { - [minimum, maximum] = [maximum, minimum]; - } - if (minimum === maximum) { - return false; - } - return inRange$1(value, minimum, maximum); -} - -export { inRange }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/max.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/max.d.mts deleted file mode 100644 index 75d8a19..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/max.d.mts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Finds the element in an array that has the maximum value. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} [items] - The array of elements to search. Defaults to an empty array. - * @returns {T | undefined} - The element with the maximum value, or undefined if the array is empty. - */ -declare function max(items: ArrayLike | null | undefined): T | undefined; - -export { max }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/max.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/max.d.ts deleted file mode 100644 index 75d8a19..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/max.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Finds the element in an array that has the maximum value. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} [items] - The array of elements to search. Defaults to an empty array. - * @returns {T | undefined} - The element with the maximum value, or undefined if the array is empty. - */ -declare function max(items: ArrayLike | null | undefined): T | undefined; - -export { max }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/max.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/max.js deleted file mode 100644 index 2d20ec1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/max.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function max(items) { - if (!items || items.length === 0) { - return undefined; - } - let maxResult = undefined; - for (let i = 0; i < items.length; i++) { - const current = items[i]; - if (current == null || Number.isNaN(current) || typeof current === 'symbol') { - continue; - } - if (maxResult === undefined || current > maxResult) { - maxResult = current; - } - } - return maxResult; -} - -exports.max = max; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/max.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/max.mjs deleted file mode 100644 index 89c7054..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/max.mjs +++ /dev/null @@ -1,18 +0,0 @@ -function max(items) { - if (!items || items.length === 0) { - return undefined; - } - let maxResult = undefined; - for (let i = 0; i < items.length; i++) { - const current = items[i]; - if (current == null || Number.isNaN(current) || typeof current === 'symbol') { - continue; - } - if (maxResult === undefined || current > maxResult) { - maxResult = current; - } - } - return maxResult; -} - -export { max }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/maxBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/maxBy.d.mts deleted file mode 100644 index c3c676c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/maxBy.d.mts +++ /dev/null @@ -1,33 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * Finds the element in an array that has the maximum value when applying - * the `iteratee` to each element. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} items The array of elements to search. - * @param {ValueIteratee} iteratee - * The criteria used to determine the maximum value. - * - If a **function** is provided, it extracts a numeric value from each element. - * - If a **string** is provided, it is treated as a key to extract values from the objects. - * - If a **[key, value]** pair is provided, it matches elements with the specified key-value pair. - * - If an **object** is provided, it matches elements that contain the specified properties. - * @returns {T | undefined} The element with the maximum value as determined by the `iteratee`. - * @example - * maxBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 3 } - * maxBy([], x => x.a); // Returns: undefined - * maxBy( - * [ - * { name: 'john', age: 30 }, - * { name: 'jane', age: 28 }, - * { name: 'joe', age: 26 }, - * ], - * x => x.age - * ); // Returns: { name: 'john', age: 30 } - * maxBy([{ a: 1 }, { a: 2 }], 'a'); // Returns: { a: 2 } - * maxBy([{ a: 1 }, { a: 2 }], ['a', 1]); // Returns: { a: 1 } - * maxBy([{ a: 1 }, { a: 2 }], { a: 1 }); // Returns: { a: 1 } - */ -declare function maxBy(items: ArrayLike | null | undefined, iteratee?: ValueIteratee): T | undefined; - -export { maxBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/maxBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/maxBy.d.ts deleted file mode 100644 index 37c6c8c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/maxBy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * Finds the element in an array that has the maximum value when applying - * the `iteratee` to each element. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} items The array of elements to search. - * @param {ValueIteratee} iteratee - * The criteria used to determine the maximum value. - * - If a **function** is provided, it extracts a numeric value from each element. - * - If a **string** is provided, it is treated as a key to extract values from the objects. - * - If a **[key, value]** pair is provided, it matches elements with the specified key-value pair. - * - If an **object** is provided, it matches elements that contain the specified properties. - * @returns {T | undefined} The element with the maximum value as determined by the `iteratee`. - * @example - * maxBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 3 } - * maxBy([], x => x.a); // Returns: undefined - * maxBy( - * [ - * { name: 'john', age: 30 }, - * { name: 'jane', age: 28 }, - * { name: 'joe', age: 26 }, - * ], - * x => x.age - * ); // Returns: { name: 'john', age: 30 } - * maxBy([{ a: 1 }, { a: 2 }], 'a'); // Returns: { a: 2 } - * maxBy([{ a: 1 }, { a: 2 }], ['a', 1]); // Returns: { a: 1 } - * maxBy([{ a: 1 }, { a: 2 }], { a: 1 }); // Returns: { a: 1 } - */ -declare function maxBy(items: ArrayLike | null | undefined, iteratee?: ValueIteratee): T | undefined; - -export { maxBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/maxBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/maxBy.js deleted file mode 100644 index 33facd3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/maxBy.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const maxBy$1 = require('../../array/maxBy.js'); -const identity = require('../../function/identity.js'); -const iteratee = require('../util/iteratee.js'); - -function maxBy(items, iteratee$1) { - if (items == null) { - return undefined; - } - return maxBy$1.maxBy(Array.from(items), iteratee.iteratee(iteratee$1 ?? identity.identity)); -} - -exports.maxBy = maxBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/maxBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/maxBy.mjs deleted file mode 100644 index 6fe836f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/maxBy.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { maxBy as maxBy$1 } from '../../array/maxBy.mjs'; -import { identity } from '../../function/identity.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function maxBy(items, iteratee$1) { - if (items == null) { - return undefined; - } - return maxBy$1(Array.from(items), iteratee(iteratee$1 ?? identity)); -} - -export { maxBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/mean.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/mean.d.mts deleted file mode 100644 index a379ec2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/mean.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Calculates the average of an array of numbers. - * - * If the array is empty, this function returns `NaN`. - * - * @param {ArrayLike | null | undefined} nums - An array of numbers to calculate the average. - * @returns {number} The average of all the numbers in the array. - * - * @example - * const numbers = [1, 2, 3, 4, 5]; - * const result = mean(numbers); - * // result will be 3 - */ -declare function mean(nums: ArrayLike | null | undefined): number; - -export { mean }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/mean.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/mean.d.ts deleted file mode 100644 index a379ec2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/mean.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Calculates the average of an array of numbers. - * - * If the array is empty, this function returns `NaN`. - * - * @param {ArrayLike | null | undefined} nums - An array of numbers to calculate the average. - * @returns {number} The average of all the numbers in the array. - * - * @example - * const numbers = [1, 2, 3, 4, 5]; - * const result = mean(numbers); - * // result will be 3 - */ -declare function mean(nums: ArrayLike | null | undefined): number; - -export { mean }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/mean.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/mean.js deleted file mode 100644 index 17e17f0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/mean.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const sum = require('./sum.js'); - -function mean(nums) { - const length = nums ? nums.length : 0; - return length === 0 ? NaN : sum.sum(nums) / length; -} - -exports.mean = mean; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/mean.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/mean.mjs deleted file mode 100644 index 5d14e00..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/mean.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { sum } from './sum.mjs'; - -function mean(nums) { - const length = nums ? nums.length : 0; - return length === 0 ? NaN : sum(nums) / length; -} - -export { mean }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/meanBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/meanBy.d.mts deleted file mode 100644 index 5c72269..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/meanBy.d.mts +++ /dev/null @@ -1,27 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * Calculates the average of an array of numbers when applying - * the `iteratee` function to each element. - * - * If the array is empty, this function returns `NaN`. - * - * @template T - The type of elements in the array. - * @param {T[]} items An array to calculate the average. - * @param {((element: T) => unknown) | PropertyKey | [PropertyKey, any] | PartialShallow} iteratee - * The criteria used to determine the maximum value. - * - If a **function** is provided, it extracts a numeric value from each element. - * - If a **string** is provided, it is treated as a key to extract values from the objects. - * - If a **[key, value]** pair is provided, it matches elements with the specified key-value pair. - * - If an **object** is provided, it matches elements that contain the specified properties. - * @returns {number} The average of all the numbers as determined by the `iteratee` function. - * - * @example - * meanBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: 2 - * meanBy([], x => x.a); // Returns: NaN - * meanBy([[2], [3], [1]], 0); // Returns: 2 - * meanBy([{ a: 2 }, { a: 3 }, { a: 1 }], 'a'); // Returns: 2 - */ -declare function meanBy(items: ArrayLike | null | undefined, iteratee?: ValueIteratee): number; - -export { meanBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/meanBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/meanBy.d.ts deleted file mode 100644 index fcba15c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/meanBy.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * Calculates the average of an array of numbers when applying - * the `iteratee` function to each element. - * - * If the array is empty, this function returns `NaN`. - * - * @template T - The type of elements in the array. - * @param {T[]} items An array to calculate the average. - * @param {((element: T) => unknown) | PropertyKey | [PropertyKey, any] | PartialShallow} iteratee - * The criteria used to determine the maximum value. - * - If a **function** is provided, it extracts a numeric value from each element. - * - If a **string** is provided, it is treated as a key to extract values from the objects. - * - If a **[key, value]** pair is provided, it matches elements with the specified key-value pair. - * - If an **object** is provided, it matches elements that contain the specified properties. - * @returns {number} The average of all the numbers as determined by the `iteratee` function. - * - * @example - * meanBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: 2 - * meanBy([], x => x.a); // Returns: NaN - * meanBy([[2], [3], [1]], 0); // Returns: 2 - * meanBy([{ a: 2 }, { a: 3 }, { a: 1 }], 'a'); // Returns: 2 - */ -declare function meanBy(items: ArrayLike | null | undefined, iteratee?: ValueIteratee): number; - -export { meanBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/meanBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/meanBy.js deleted file mode 100644 index b71ea0b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/meanBy.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const meanBy$1 = require('../../math/meanBy.js'); -const iteratee = require('../util/iteratee.js'); - -function meanBy(items, iteratee$1) { - if (items == null) { - return NaN; - } - return meanBy$1.meanBy(Array.from(items), iteratee.iteratee(iteratee$1 ?? identity.identity)); -} - -exports.meanBy = meanBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/meanBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/meanBy.mjs deleted file mode 100644 index 0a7f275..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/meanBy.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { meanBy as meanBy$1 } from '../../math/meanBy.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function meanBy(items, iteratee$1) { - if (items == null) { - return NaN; - } - return meanBy$1(Array.from(items), iteratee(iteratee$1 ?? identity)); -} - -export { meanBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/min.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/min.d.mts deleted file mode 100644 index 78b2fb4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/min.d.mts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Finds the element in an array that has the minimum value. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} [items] - The array of elements to search. Defaults to an empty array. - * @returns {T | undefined} - The element with the minimum value, or undefined if the array is empty. - */ -declare function min(items: ArrayLike | null | undefined): T | undefined; - -export { min }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/min.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/min.d.ts deleted file mode 100644 index 78b2fb4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/min.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Finds the element in an array that has the minimum value. - * - * @template T - The type of elements in the array. - * @param {ArrayLike | null | undefined} [items] - The array of elements to search. Defaults to an empty array. - * @returns {T | undefined} - The element with the minimum value, or undefined if the array is empty. - */ -declare function min(items: ArrayLike | null | undefined): T | undefined; - -export { min }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/min.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/min.js deleted file mode 100644 index 1386632..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/min.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function min(items) { - if (!items || items.length === 0) { - return undefined; - } - let minResult = undefined; - for (let i = 0; i < items.length; i++) { - const current = items[i]; - if (current == null || Number.isNaN(current) || typeof current === 'symbol') { - continue; - } - if (minResult === undefined || current < minResult) { - minResult = current; - } - } - return minResult; -} - -exports.min = min; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/min.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/min.mjs deleted file mode 100644 index 6abde6a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/min.mjs +++ /dev/null @@ -1,18 +0,0 @@ -function min(items) { - if (!items || items.length === 0) { - return undefined; - } - let minResult = undefined; - for (let i = 0; i < items.length; i++) { - const current = items[i]; - if (current == null || Number.isNaN(current) || typeof current === 'symbol') { - continue; - } - if (minResult === undefined || current < minResult) { - minResult = current; - } - } - return minResult; -} - -export { min }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/minBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/minBy.d.mts deleted file mode 100644 index 19e3a56..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/minBy.d.mts +++ /dev/null @@ -1,33 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * Finds the element in an array that has the minimum value when applying - * the `iteratee` to each element. - * - * @template T - The type of elements in the array. - * @param {T[]} items The array of elements to search. - * @param {((element: T) => number) | keyof T | [keyof T, unknown] | Partial} iteratee - * The criteria used to determine the minimum value. - * - If a **function** is provided, it extracts a numeric value from each element. - * - If a **string** is provided, it is treated as a key to extract values from the objects. - * - If a **[key, value]** pair is provided, it matches elements with the specified key-value pair. - * - If an **object** is provided, it matches elements that contain the specified properties. - * @returns {T | undefined} The element with the minimum value as determined by the `iteratee`. - * @example - * minBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 1 } - * minBy([], x => x.a); // Returns: undefined - * minBy( - * [ - * { name: 'john', age: 30 }, - * { name: 'jane', age: 28 }, - * { name: 'joe', age: 26 }, - * ], - * x => x.age - * ); // Returns: { name: 'joe', age: 26 } - * minBy([{ a: 1 }, { a: 2 }], 'a'); // Returns: { a: 1 } - * minBy([{ a: 1 }, { a: 2 }], ['a', 1]); // Returns: { a: 2 } - * minBy([{ a: 1 }, { a: 2 }], { a: 1 }); // Returns: { a: 2 } - */ -declare function minBy(items: ArrayLike | null | undefined, iteratee?: ValueIteratee): T | undefined; - -export { minBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/minBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/minBy.d.ts deleted file mode 100644 index 486c6a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/minBy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * Finds the element in an array that has the minimum value when applying - * the `iteratee` to each element. - * - * @template T - The type of elements in the array. - * @param {T[]} items The array of elements to search. - * @param {((element: T) => number) | keyof T | [keyof T, unknown] | Partial} iteratee - * The criteria used to determine the minimum value. - * - If a **function** is provided, it extracts a numeric value from each element. - * - If a **string** is provided, it is treated as a key to extract values from the objects. - * - If a **[key, value]** pair is provided, it matches elements with the specified key-value pair. - * - If an **object** is provided, it matches elements that contain the specified properties. - * @returns {T | undefined} The element with the minimum value as determined by the `iteratee`. - * @example - * minBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 1 } - * minBy([], x => x.a); // Returns: undefined - * minBy( - * [ - * { name: 'john', age: 30 }, - * { name: 'jane', age: 28 }, - * { name: 'joe', age: 26 }, - * ], - * x => x.age - * ); // Returns: { name: 'joe', age: 26 } - * minBy([{ a: 1 }, { a: 2 }], 'a'); // Returns: { a: 1 } - * minBy([{ a: 1 }, { a: 2 }], ['a', 1]); // Returns: { a: 2 } - * minBy([{ a: 1 }, { a: 2 }], { a: 1 }); // Returns: { a: 2 } - */ -declare function minBy(items: ArrayLike | null | undefined, iteratee?: ValueIteratee): T | undefined; - -export { minBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/minBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/minBy.js deleted file mode 100644 index 02cba40..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/minBy.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const minBy$1 = require('../../array/minBy.js'); -const identity = require('../../function/identity.js'); -const iteratee = require('../util/iteratee.js'); - -function minBy(items, iteratee$1) { - if (items == null) { - return undefined; - } - return minBy$1.minBy(Array.from(items), iteratee.iteratee(iteratee$1 ?? identity.identity)); -} - -exports.minBy = minBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/minBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/minBy.mjs deleted file mode 100644 index a85e56d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/minBy.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { minBy as minBy$1 } from '../../array/minBy.mjs'; -import { identity } from '../../function/identity.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function minBy(items, iteratee$1) { - if (items == null) { - return undefined; - } - return minBy$1(Array.from(items), iteratee(iteratee$1 ?? identity)); -} - -export { minBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/multiply.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/multiply.d.mts deleted file mode 100644 index f98fd58..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/multiply.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Multiply two numbers. - * - * If either of the numbers is `NaN`, the function returns `NaN`. - * - * @param {number} value The first number in a multiplication - * @param {number} other The second number in a multiplication - * @returns {number} The product of value and other - * - * @example - * multiply(2, 3); // => 6 - * multiply(2, NaN); // => NaN - * multiply(NaN, 3); // => NaN - * multiply(NaN, NaN); // => NaN - */ -declare function multiply(value: number, other: number): number; - -export { multiply }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/multiply.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/multiply.d.ts deleted file mode 100644 index f98fd58..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/multiply.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Multiply two numbers. - * - * If either of the numbers is `NaN`, the function returns `NaN`. - * - * @param {number} value The first number in a multiplication - * @param {number} other The second number in a multiplication - * @returns {number} The product of value and other - * - * @example - * multiply(2, 3); // => 6 - * multiply(2, NaN); // => NaN - * multiply(NaN, 3); // => NaN - * multiply(NaN, NaN); // => NaN - */ -declare function multiply(value: number, other: number): number; - -export { multiply }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/multiply.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/multiply.js deleted file mode 100644 index 8896fe7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/multiply.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toNumber = require('../util/toNumber.js'); -const toString = require('../util/toString.js'); - -function multiply(value, other) { - if (value === undefined && other === undefined) { - return 1; - } - if (value === undefined || other === undefined) { - return value ?? other; - } - if (typeof value === 'string' || typeof other === 'string') { - value = toString.toString(value); - other = toString.toString(other); - } - else { - value = toNumber.toNumber(value); - other = toNumber.toNumber(other); - } - return value * other; -} - -exports.multiply = multiply; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/multiply.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/multiply.mjs deleted file mode 100644 index 3684027..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/multiply.mjs +++ /dev/null @@ -1,22 +0,0 @@ -import { toNumber } from '../util/toNumber.mjs'; -import { toString } from '../util/toString.mjs'; - -function multiply(value, other) { - if (value === undefined && other === undefined) { - return 1; - } - if (value === undefined || other === undefined) { - return value ?? other; - } - if (typeof value === 'string' || typeof other === 'string') { - value = toString(value); - other = toString(other); - } - else { - value = toNumber(value); - other = toNumber(other); - } - return value * other; -} - -export { multiply }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/parseInt.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/parseInt.d.mts deleted file mode 100644 index 885b847..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/parseInt.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Converts `string` to an integer of the specified radix. If `radix` is undefined or 0, a `radix` of 10 is used unless `string` is a hexadecimal, in which case a `radix` of 16 is used. - * - * @param {string} string The string to convert to an integer. - * @param {number} radix The radix to use when converting the string to an integer. Defaults to `0`. - * @param {unknown} guard Enables use as an iteratee for methods like `Array#map`. - * @returns {number} Returns the converted integer. - * - * @example - * parseInt('08'); // => 8 - * parseInt('0x20'); // => 32 - * - * parseInt('08', 10); // => 8 - * parseInt('0x20', 16); // => 32 - * - * ['6', '08', '10'].map(parseInt); // => [6, 8, 10] - */ -declare function parseInt(string: string, radix?: number): number; - -export { parseInt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/parseInt.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/parseInt.d.ts deleted file mode 100644 index 885b847..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/parseInt.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Converts `string` to an integer of the specified radix. If `radix` is undefined or 0, a `radix` of 10 is used unless `string` is a hexadecimal, in which case a `radix` of 16 is used. - * - * @param {string} string The string to convert to an integer. - * @param {number} radix The radix to use when converting the string to an integer. Defaults to `0`. - * @param {unknown} guard Enables use as an iteratee for methods like `Array#map`. - * @returns {number} Returns the converted integer. - * - * @example - * parseInt('08'); // => 8 - * parseInt('0x20'); // => 32 - * - * parseInt('08', 10); // => 8 - * parseInt('0x20', 16); // => 32 - * - * ['6', '08', '10'].map(parseInt); // => [6, 8, 10] - */ -declare function parseInt(string: string, radix?: number): number; - -export { parseInt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/parseInt.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/parseInt.js deleted file mode 100644 index ad91980..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/parseInt.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function parseInt(string, radix = 0, guard) { - if (guard) { - radix = 0; - } - return Number.parseInt(string, radix); -} - -exports.parseInt = parseInt; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/parseInt.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/parseInt.mjs deleted file mode 100644 index 11fd946..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/parseInt.mjs +++ /dev/null @@ -1,8 +0,0 @@ -function parseInt(string, radix = 0, guard) { - if (guard) { - radix = 0; - } - return Number.parseInt(string, radix); -} - -export { parseInt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/random.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/random.d.mts deleted file mode 100644 index 1213905..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/random.d.mts +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Generate a random number between 0 and 1. - * @param {boolean} [floating] - Whether to return a floating point number. Defaults to true. - * @returns {number} A random number between 0 and 1. - * @example - * random(); // Returns a random number between 0 and 1 - * random(true); // Returns a random floating point number between 0 and 1 - * random(false); // Returns a random integer between 0 and 1 - */ -declare function random(floating?: boolean): number; -/** - * Generate a random number between 0 and max. - * @param {number} max - The upper bound (exclusive). - * @param {boolean} [floating] - Whether to return a floating point number. Defaults to true. - * @returns {number} A random number between 0 and max. - * @example - * random(5); // Returns a random number between 0 and 5 - * random(10, true); // Returns a random floating point number between 0 and 10 - * random(3, false); // Returns a random integer between 0 and 3 - */ -declare function random(max: number, floating?: boolean): number; -/** - * Generate a random number between min and max. - * @param {number} min - The lower bound (inclusive). - * @param {number} max - The upper bound (exclusive). - * @param {boolean} [floating] - Whether to return a floating point number. Defaults to true. - * @returns {number} A random number between min and max. - * @example - * random(1, 5); // Returns a random number between 1 and 5 - * random(0, 10, true); // Returns a random floating point number between 0 and 10 - * random(1, 6, false); // Returns a random integer between 1 and 6 - */ -declare function random(min: number, max: number, floating?: boolean): number; -/** - * Generate a random number between 0 and min, using guard object for special cases. - * @param {number} min - The upper bound (exclusive). - * @param {string | number} index - The index or key to check in the guard object. - * @param {object} guard - The guard object to validate the parameters. - * @returns {number} A random number between 0 and min. - * @example - * const guard = { 5: 5 }; - * random(5, 5, guard); // Returns a random number between 0 and 5 - */ -declare function random(min: number, index: string | number, guard: object): number; - -export { random }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/random.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/random.d.ts deleted file mode 100644 index 1213905..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/random.d.ts +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Generate a random number between 0 and 1. - * @param {boolean} [floating] - Whether to return a floating point number. Defaults to true. - * @returns {number} A random number between 0 and 1. - * @example - * random(); // Returns a random number between 0 and 1 - * random(true); // Returns a random floating point number between 0 and 1 - * random(false); // Returns a random integer between 0 and 1 - */ -declare function random(floating?: boolean): number; -/** - * Generate a random number between 0 and max. - * @param {number} max - The upper bound (exclusive). - * @param {boolean} [floating] - Whether to return a floating point number. Defaults to true. - * @returns {number} A random number between 0 and max. - * @example - * random(5); // Returns a random number between 0 and 5 - * random(10, true); // Returns a random floating point number between 0 and 10 - * random(3, false); // Returns a random integer between 0 and 3 - */ -declare function random(max: number, floating?: boolean): number; -/** - * Generate a random number between min and max. - * @param {number} min - The lower bound (inclusive). - * @param {number} max - The upper bound (exclusive). - * @param {boolean} [floating] - Whether to return a floating point number. Defaults to true. - * @returns {number} A random number between min and max. - * @example - * random(1, 5); // Returns a random number between 1 and 5 - * random(0, 10, true); // Returns a random floating point number between 0 and 10 - * random(1, 6, false); // Returns a random integer between 1 and 6 - */ -declare function random(min: number, max: number, floating?: boolean): number; -/** - * Generate a random number between 0 and min, using guard object for special cases. - * @param {number} min - The upper bound (exclusive). - * @param {string | number} index - The index or key to check in the guard object. - * @param {object} guard - The guard object to validate the parameters. - * @returns {number} A random number between 0 and min. - * @example - * const guard = { 5: 5 }; - * random(5, 5, guard); // Returns a random number between 0 and 5 - */ -declare function random(min: number, index: string | number, guard: object): number; - -export { random }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/random.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/random.js deleted file mode 100644 index 97fee36..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/random.js +++ /dev/null @@ -1,74 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const clamp = require('./clamp.js'); -const random$1 = require('../../math/random.js'); -const randomInt = require('../../math/randomInt.js'); - -function random(...args) { - let minimum = 0; - let maximum = 1; - let floating = false; - switch (args.length) { - case 1: { - if (typeof args[0] === 'boolean') { - floating = args[0]; - } - else { - maximum = args[0]; - } - break; - } - case 2: { - if (typeof args[1] === 'boolean') { - maximum = args[0]; - floating = args[1]; - } - else { - minimum = args[0]; - maximum = args[1]; - } - } - case 3: { - if (typeof args[2] === 'object' && args[2] != null && args[2][args[1]] === args[0]) { - minimum = 0; - maximum = args[0]; - floating = false; - } - else { - minimum = args[0]; - maximum = args[1]; - floating = args[2]; - } - } - } - if (typeof minimum !== 'number') { - minimum = Number(minimum); - } - if (typeof maximum !== 'number') { - minimum = Number(maximum); - } - if (!minimum) { - minimum = 0; - } - if (!maximum) { - maximum = 0; - } - if (minimum > maximum) { - [minimum, maximum] = [maximum, minimum]; - } - minimum = clamp.clamp(minimum, -Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER); - maximum = clamp.clamp(maximum, -Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER); - if (minimum === maximum) { - return minimum; - } - if (floating) { - return random$1.random(minimum, maximum + 1); - } - else { - return randomInt.randomInt(minimum, maximum + 1); - } -} - -exports.random = random; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/random.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/random.mjs deleted file mode 100644 index 0d567de..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/random.mjs +++ /dev/null @@ -1,70 +0,0 @@ -import { clamp } from './clamp.mjs'; -import { random as random$1 } from '../../math/random.mjs'; -import { randomInt } from '../../math/randomInt.mjs'; - -function random(...args) { - let minimum = 0; - let maximum = 1; - let floating = false; - switch (args.length) { - case 1: { - if (typeof args[0] === 'boolean') { - floating = args[0]; - } - else { - maximum = args[0]; - } - break; - } - case 2: { - if (typeof args[1] === 'boolean') { - maximum = args[0]; - floating = args[1]; - } - else { - minimum = args[0]; - maximum = args[1]; - } - } - case 3: { - if (typeof args[2] === 'object' && args[2] != null && args[2][args[1]] === args[0]) { - minimum = 0; - maximum = args[0]; - floating = false; - } - else { - minimum = args[0]; - maximum = args[1]; - floating = args[2]; - } - } - } - if (typeof minimum !== 'number') { - minimum = Number(minimum); - } - if (typeof maximum !== 'number') { - minimum = Number(maximum); - } - if (!minimum) { - minimum = 0; - } - if (!maximum) { - maximum = 0; - } - if (minimum > maximum) { - [minimum, maximum] = [maximum, minimum]; - } - minimum = clamp(minimum, -Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER); - maximum = clamp(maximum, -Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER); - if (minimum === maximum) { - return minimum; - } - if (floating) { - return random$1(minimum, maximum + 1); - } - else { - return randomInt(minimum, maximum + 1); - } -} - -export { random }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/range.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/range.d.mts deleted file mode 100644 index c4e8220..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/range.d.mts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Creates an array of numbers progressing from `start` up to, but not including, `end`. - * - * @param {number} start - The starting number of the range (inclusive) - * @param {number} end - The end number of the range (exclusive) - * @param {number} step - The value to increment or decrement by - * @returns {number[]} An array of numbers from start to end - * @example - * range(4) - * // => [0, 1, 2, 3] - * - * range(1, 5) - * // => [1, 2, 3, 4] - * - * range(0, 20, 5) - * // => [0, 5, 10, 15] - */ -declare function range(start: number, end?: number, step?: number): number[]; -/** - * Creates an array of numbers progressing from 0 up to, but not including, `end`. - * Used internally when range is called as an iteratee. - * - * @param {number} end - The end of the range (exclusive) - * @param {string|number} index - The index argument passed to the iteratee - * @param {object} guard - The guard object passed to the iteratee - * @returns {number[]} An array of numbers from 0 to end - * @example - * [1, 2, 3].map(range) - * // => [[0], [0, 1], [0, 1, 2]] - */ -declare function range(end: number, index: string | number, guard: object): number[]; - -export { range }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/range.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/range.d.ts deleted file mode 100644 index c4e8220..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/range.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Creates an array of numbers progressing from `start` up to, but not including, `end`. - * - * @param {number} start - The starting number of the range (inclusive) - * @param {number} end - The end number of the range (exclusive) - * @param {number} step - The value to increment or decrement by - * @returns {number[]} An array of numbers from start to end - * @example - * range(4) - * // => [0, 1, 2, 3] - * - * range(1, 5) - * // => [1, 2, 3, 4] - * - * range(0, 20, 5) - * // => [0, 5, 10, 15] - */ -declare function range(start: number, end?: number, step?: number): number[]; -/** - * Creates an array of numbers progressing from 0 up to, but not including, `end`. - * Used internally when range is called as an iteratee. - * - * @param {number} end - The end of the range (exclusive) - * @param {string|number} index - The index argument passed to the iteratee - * @param {object} guard - The guard object passed to the iteratee - * @returns {number[]} An array of numbers from 0 to end - * @example - * [1, 2, 3].map(range) - * // => [[0], [0, 1], [0, 1, 2]] - */ -declare function range(end: number, index: string | number, guard: object): number[]; - -export { range }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/range.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/range.js deleted file mode 100644 index 4b92f0d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/range.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isIterateeCall = require('../_internal/isIterateeCall.js'); -const toFinite = require('../util/toFinite.js'); - -function range(start, end, step) { - if (step && typeof step !== 'number' && isIterateeCall.isIterateeCall(start, end, step)) { - end = step = undefined; - } - start = toFinite.toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } - else { - end = toFinite.toFinite(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite.toFinite(step); - const length = Math.max(Math.ceil((end - start) / (step || 1)), 0); - const result = new Array(length); - for (let index = 0; index < length; index++) { - result[index] = start; - start += step; - } - return result; -} - -exports.range = range; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/range.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/range.mjs deleted file mode 100644 index 0768e34..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/range.mjs +++ /dev/null @@ -1,26 +0,0 @@ -import { isIterateeCall } from '../_internal/isIterateeCall.mjs'; -import { toFinite } from '../util/toFinite.mjs'; - -function range(start, end, step) { - if (step && typeof step !== 'number' && isIterateeCall(start, end, step)) { - end = step = undefined; - } - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } - else { - end = toFinite(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); - const length = Math.max(Math.ceil((end - start) / (step || 1)), 0); - const result = new Array(length); - for (let index = 0; index < length; index++) { - result[index] = start; - start += step; - } - return result; -} - -export { range }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/rangeRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/rangeRight.d.mts deleted file mode 100644 index ee59f8b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/rangeRight.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creates an array of numbers from `start` to `end` with optional `step`. - * @param {number} start - The starting number of the range (inclusive). - * @param {number} [end] - The end number of the range (exclusive). - * @param {number} [step] - The step value for the range. - * @returns {number[]} An array of numbers from `start` to `end` with the specified `step`. - * @example - * // Returns [0, 1, 2, 3] - * rangeRight(4); - * @example - * // Returns [0, 2, 4, 6] - * rangeRight(0, 8, 2); - * @example - * // Returns [5, 4, 3, 2, 1] - * rangeRight(1, 6); - */ -declare function rangeRight(start: number, end?: number, step?: number): number[]; -/** - * Creates an array of numbers from 0 to `end` with step 1. - * Used when called as an iteratee for methods like `_.map`. - * @param {number} end - The end number of the range (exclusive). - * @param {string | number} index - The index parameter (used for iteratee calls). - * @param {object} guard - The guard parameter (used for iteratee calls). - * @returns {number[]} An array of numbers from 0 to `end` with step 1. - * @example - * // Returns [0, 1, 2, 3] - * rangeRight(4, 'index', {}); - */ -declare function rangeRight(end: number, index: string | number, guard: object): number[]; - -export { rangeRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/rangeRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/rangeRight.d.ts deleted file mode 100644 index ee59f8b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/rangeRight.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creates an array of numbers from `start` to `end` with optional `step`. - * @param {number} start - The starting number of the range (inclusive). - * @param {number} [end] - The end number of the range (exclusive). - * @param {number} [step] - The step value for the range. - * @returns {number[]} An array of numbers from `start` to `end` with the specified `step`. - * @example - * // Returns [0, 1, 2, 3] - * rangeRight(4); - * @example - * // Returns [0, 2, 4, 6] - * rangeRight(0, 8, 2); - * @example - * // Returns [5, 4, 3, 2, 1] - * rangeRight(1, 6); - */ -declare function rangeRight(start: number, end?: number, step?: number): number[]; -/** - * Creates an array of numbers from 0 to `end` with step 1. - * Used when called as an iteratee for methods like `_.map`. - * @param {number} end - The end number of the range (exclusive). - * @param {string | number} index - The index parameter (used for iteratee calls). - * @param {object} guard - The guard parameter (used for iteratee calls). - * @returns {number[]} An array of numbers from 0 to `end` with step 1. - * @example - * // Returns [0, 1, 2, 3] - * rangeRight(4, 'index', {}); - */ -declare function rangeRight(end: number, index: string | number, guard: object): number[]; - -export { rangeRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/rangeRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/rangeRight.js deleted file mode 100644 index 8e54ae4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/rangeRight.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isIterateeCall = require('../_internal/isIterateeCall.js'); -const toFinite = require('../util/toFinite.js'); - -function rangeRight(start, end, step) { - if (step && typeof step !== 'number' && isIterateeCall.isIterateeCall(start, end, step)) { - end = step = undefined; - } - start = toFinite.toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } - else { - end = toFinite.toFinite(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite.toFinite(step); - const length = Math.max(Math.ceil((end - start) / (step || 1)), 0); - const result = new Array(length); - for (let index = length - 1; index >= 0; index--) { - result[index] = start; - start += step; - } - return result; -} - -exports.rangeRight = rangeRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/rangeRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/rangeRight.mjs deleted file mode 100644 index a30ed09..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/rangeRight.mjs +++ /dev/null @@ -1,26 +0,0 @@ -import { isIterateeCall } from '../_internal/isIterateeCall.mjs'; -import { toFinite } from '../util/toFinite.mjs'; - -function rangeRight(start, end, step) { - if (step && typeof step !== 'number' && isIterateeCall(start, end, step)) { - end = step = undefined; - } - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } - else { - end = toFinite(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); - const length = Math.max(Math.ceil((end - start) / (step || 1)), 0); - const result = new Array(length); - for (let index = length - 1; index >= 0; index--) { - result[index] = start; - start += step; - } - return result; -} - -export { rangeRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/round.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/round.d.mts deleted file mode 100644 index 59c1f30..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/round.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Computes number rounded to precision. - * - * @param {number} number The number to round. - * @param {number} precision The precision to round to. - * @returns {number} Returns the rounded number. - * - * @example - * round(4.006); // => 4 - * round(4.006, 2); // => 4.01 - * round(4060, -2); // => 4100 - */ -declare function round(number: number, precision?: number): number; - -export { round }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/round.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/round.d.ts deleted file mode 100644 index 59c1f30..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/round.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Computes number rounded to precision. - * - * @param {number} number The number to round. - * @param {number} precision The precision to round to. - * @returns {number} Returns the rounded number. - * - * @example - * round(4.006); // => 4 - * round(4.006, 2); // => 4.01 - * round(4060, -2); // => 4100 - */ -declare function round(number: number, precision?: number): number; - -export { round }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/round.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/round.js deleted file mode 100644 index 5d978cc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/round.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const decimalAdjust = require('../_internal/decimalAdjust.js'); - -function round(number, precision = 0) { - return decimalAdjust.decimalAdjust('round', number, precision); -} - -exports.round = round; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/round.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/round.mjs deleted file mode 100644 index 0c86cba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/round.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { decimalAdjust } from '../_internal/decimalAdjust.mjs'; - -function round(number, precision = 0) { - return decimalAdjust('round', number, precision); -} - -export { round }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/subtract.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/subtract.d.mts deleted file mode 100644 index 9f85d54..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/subtract.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Subtracts one number from another. - * - * If either of the numbers is `NaN`, the function returns `NaN`. - * - * @param {number} value The first number. (minuend) - * @param {number} other The second number.(subtrahend) - * @returns {number} The difference of the two numbers, or `NaN` if any input is `NaN`. - * - * @example - * subtract(6, 3); // => 3 - * subtract(6, NaN); // => NaN - * subtract(NaN, 3); // => NaN - */ -declare function subtract(value: number, other: number): number; - -export { subtract }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/subtract.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/subtract.d.ts deleted file mode 100644 index 9f85d54..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/subtract.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Subtracts one number from another. - * - * If either of the numbers is `NaN`, the function returns `NaN`. - * - * @param {number} value The first number. (minuend) - * @param {number} other The second number.(subtrahend) - * @returns {number} The difference of the two numbers, or `NaN` if any input is `NaN`. - * - * @example - * subtract(6, 3); // => 3 - * subtract(6, NaN); // => NaN - * subtract(NaN, 3); // => NaN - */ -declare function subtract(value: number, other: number): number; - -export { subtract }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/subtract.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/subtract.js deleted file mode 100644 index 35a6904..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/subtract.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toNumber = require('../util/toNumber.js'); -const toString = require('../util/toString.js'); - -function subtract(value, other) { - if (value === undefined && other === undefined) { - return 0; - } - if (value === undefined || other === undefined) { - return value ?? other; - } - if (typeof value === 'string' || typeof other === 'string') { - value = toString.toString(value); - other = toString.toString(other); - } - else { - value = toNumber.toNumber(value); - other = toNumber.toNumber(other); - } - return value - other; -} - -exports.subtract = subtract; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/subtract.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/subtract.mjs deleted file mode 100644 index 37719af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/subtract.mjs +++ /dev/null @@ -1,22 +0,0 @@ -import { toNumber } from '../util/toNumber.mjs'; -import { toString } from '../util/toString.mjs'; - -function subtract(value, other) { - if (value === undefined && other === undefined) { - return 0; - } - if (value === undefined || other === undefined) { - return value ?? other; - } - if (typeof value === 'string' || typeof other === 'string') { - value = toString(value); - other = toString(other); - } - else { - value = toNumber(value); - other = toNumber(other); - } - return value - other; -} - -export { subtract }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sum.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sum.d.mts deleted file mode 100644 index 7971bdc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sum.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Computes the sum of the values that are returned by the `iteratee` function. - * - * It does not coerce values to `number`. - * - * @param {ArrayLike | null | undefined} array - The array to iterate over. - * @returns {number} Returns the sum. - * - * @example - * sum([1, 2, 3]); // => 6 - * sum([1n, 2n, 3n]); // => 6n - * sum(["1", "2"]); // => "12" - * sum([1, undefined, 2]); // => 3 - * sum(null); // => 0 - * sum(undefined); // => 0 - */ -declare function sum(array: ArrayLike | null | undefined): number; - -export { sum }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sum.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sum.d.ts deleted file mode 100644 index 7971bdc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sum.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Computes the sum of the values that are returned by the `iteratee` function. - * - * It does not coerce values to `number`. - * - * @param {ArrayLike | null | undefined} array - The array to iterate over. - * @returns {number} Returns the sum. - * - * @example - * sum([1, 2, 3]); // => 6 - * sum([1n, 2n, 3n]); // => 6n - * sum(["1", "2"]); // => "12" - * sum([1, undefined, 2]); // => 3 - * sum(null); // => 0 - * sum(undefined); // => 0 - */ -declare function sum(array: ArrayLike | null | undefined): number; - -export { sum }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sum.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sum.js deleted file mode 100644 index 2de763d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sum.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const sumBy = require('./sumBy.js'); - -function sum(array) { - return sumBy.sumBy(array); -} - -exports.sum = sum; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sum.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sum.mjs deleted file mode 100644 index f1f1472..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sum.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { sumBy } from './sumBy.mjs'; - -function sum(array) { - return sumBy(array); -} - -export { sum }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sumBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sumBy.d.mts deleted file mode 100644 index ecef0a8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sumBy.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Computes the sum of the values that are returned by the `iteratee` function. - * - * It does not coerce values to `number`. - * - * @template T - The type of the array elements. - * @param {ArrayLike | null | undefined} array - The array to iterate over. - * @param {((value: T) => number) | string} iteratee - The function invoked per iteration. - * @returns {number} Returns the sum. - * - * @example - * sumBy([1, undefined, 2], value => value); // => 3 - * sumBy(null); // => 0 - * sumBy(undefined); // => 0 - * sumBy([1, 2, 3]); // => 6 - * sumBy([1n, 2n, 3n]); // => 6n - * sumBy([{ a: "1" }, { a: "2" }], object => object.a); // => "12" - */ -declare function sumBy(array: ArrayLike | null | undefined, iteratee?: ((value: T) => number) | string): number; - -export { sumBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sumBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sumBy.d.ts deleted file mode 100644 index ecef0a8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sumBy.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Computes the sum of the values that are returned by the `iteratee` function. - * - * It does not coerce values to `number`. - * - * @template T - The type of the array elements. - * @param {ArrayLike | null | undefined} array - The array to iterate over. - * @param {((value: T) => number) | string} iteratee - The function invoked per iteration. - * @returns {number} Returns the sum. - * - * @example - * sumBy([1, undefined, 2], value => value); // => 3 - * sumBy(null); // => 0 - * sumBy(undefined); // => 0 - * sumBy([1, 2, 3]); // => 6 - * sumBy([1n, 2n, 3n]); // => 6n - * sumBy([{ a: "1" }, { a: "2" }], object => object.a); // => "12" - */ -declare function sumBy(array: ArrayLike | null | undefined, iteratee?: ((value: T) => number) | string): number; - -export { sumBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sumBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sumBy.js deleted file mode 100644 index 48cf5bc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sumBy.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const iteratee = require('../util/iteratee.js'); - -function sumBy(array, iteratee$1) { - if (!array || !array.length) { - return 0; - } - if (iteratee$1 != null) { - iteratee$1 = iteratee.iteratee(iteratee$1); - } - let result = undefined; - for (let i = 0; i < array.length; i++) { - const current = iteratee$1 ? iteratee$1(array[i]) : array[i]; - if (current !== undefined) { - if (result === undefined) { - result = current; - } - else { - result += current; - } - } - } - return result; -} - -exports.sumBy = sumBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sumBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sumBy.mjs deleted file mode 100644 index 1114448..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/math/sumBy.mjs +++ /dev/null @@ -1,25 +0,0 @@ -import { iteratee } from '../util/iteratee.mjs'; - -function sumBy(array, iteratee$1) { - if (!array || !array.length) { - return 0; - } - if (iteratee$1 != null) { - iteratee$1 = iteratee(iteratee$1); - } - let result = undefined; - for (let i = 0; i < array.length; i++) { - const current = iteratee$1 ? iteratee$1(array[i]) : array[i]; - if (current !== undefined) { - if (result === undefined) { - result = current; - } - else { - result += current; - } - } - } - return result; -} - -export { sumBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assign.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assign.d.mts deleted file mode 100644 index cb4cae0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assign.d.mts +++ /dev/null @@ -1,110 +0,0 @@ -/** - * Assigns properties from one source object to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source - The source object whose properties will be assigned to the target object. - * @returns {T & U} The updated target object with properties from the source object assigned. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * const result = assign(target, source); - * // => { a: 1, b: 3, c: 4 } - */ -declare function assign(object: T, source: U): T & U; -/** - * Assigns properties from two source objects to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @returns {T & U & V} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const result = assign(target, source1, source2); - * // => { a: 1, b: 2, c: 3 } - */ -declare function assign(object: T, source1: U, source2: V): T & U & V; -/** - * Assigns properties from three source objects to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @returns {T & U & V & W} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const result = assign(target, source1, source2, source3); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function assign(object: T, source1: U, source2: V, source3: W): T & U & V & W; -/** - * Assigns properties from four source objects to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @template X - The type of the fourth source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @param {X} source4 - The fourth source object whose properties will be assigned to the target object. - * @returns {T & U & V & W & X} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const source4 = { e: 5 }; - * const result = assign(target, source1, source2, source3, source4); - * // => { a: 1, b: 2, c: 3, d: 4, e: 5 } - */ -declare function assign(object: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X; -/** - * Assigns properties from a target object to itself. - * - * @template T - The type of the target object. - * @param {T} object - The target object. - * @returns {T} The target object. - * - * @example - * const target = { a: 1, b: 2 }; - * const result = assign(target); - * // => { a: 1, b: 2 } - */ -declare function assign(object: T): T; -/** - * Assigns properties from multiple source objects to a target object. - * - * @param {any} object - The target object to which properties will be assigned. - * @param {...any[]} otherArgs - The source objects whose properties will be assigned to the target object. - * @returns {any} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const result = assign(target, { b: 2 }, { c: 3 }, { d: 4 }); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function assign(object: any, ...otherArgs: any[]): any; - -export { assign }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assign.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assign.d.ts deleted file mode 100644 index cb4cae0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assign.d.ts +++ /dev/null @@ -1,110 +0,0 @@ -/** - * Assigns properties from one source object to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source - The source object whose properties will be assigned to the target object. - * @returns {T & U} The updated target object with properties from the source object assigned. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * const result = assign(target, source); - * // => { a: 1, b: 3, c: 4 } - */ -declare function assign(object: T, source: U): T & U; -/** - * Assigns properties from two source objects to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @returns {T & U & V} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const result = assign(target, source1, source2); - * // => { a: 1, b: 2, c: 3 } - */ -declare function assign(object: T, source1: U, source2: V): T & U & V; -/** - * Assigns properties from three source objects to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @returns {T & U & V & W} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const result = assign(target, source1, source2, source3); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function assign(object: T, source1: U, source2: V, source3: W): T & U & V & W; -/** - * Assigns properties from four source objects to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @template X - The type of the fourth source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @param {X} source4 - The fourth source object whose properties will be assigned to the target object. - * @returns {T & U & V & W & X} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const source4 = { e: 5 }; - * const result = assign(target, source1, source2, source3, source4); - * // => { a: 1, b: 2, c: 3, d: 4, e: 5 } - */ -declare function assign(object: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X; -/** - * Assigns properties from a target object to itself. - * - * @template T - The type of the target object. - * @param {T} object - The target object. - * @returns {T} The target object. - * - * @example - * const target = { a: 1, b: 2 }; - * const result = assign(target); - * // => { a: 1, b: 2 } - */ -declare function assign(object: T): T; -/** - * Assigns properties from multiple source objects to a target object. - * - * @param {any} object - The target object to which properties will be assigned. - * @param {...any[]} otherArgs - The source objects whose properties will be assigned to the target object. - * @returns {any} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const result = assign(target, { b: 2 }, { c: 3 }, { d: 4 }); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function assign(object: any, ...otherArgs: any[]): any; - -export { assign }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assign.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assign.js deleted file mode 100644 index 08eb402..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assign.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keys = require('./keys.js'); -const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js'); - -function assign(object, ...sources) { - for (let i = 0; i < sources.length; i++) { - assignImpl(object, sources[i]); - } - return object; -} -function assignImpl(object, source) { - const keys$1 = keys.keys(source); - for (let i = 0; i < keys$1.length; i++) { - const key = keys$1[i]; - if (!(key in object) || !isEqualsSameValueZero.isEqualsSameValueZero(object[key], source[key])) { - object[key] = source[key]; - } - } -} - -exports.assign = assign; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assign.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assign.mjs deleted file mode 100644 index 1065a6a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assign.mjs +++ /dev/null @@ -1,20 +0,0 @@ -import { keys } from './keys.mjs'; -import { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs'; - -function assign(object, ...sources) { - for (let i = 0; i < sources.length; i++) { - assignImpl(object, sources[i]); - } - return object; -} -function assignImpl(object, source) { - const keys$1 = keys(source); - for (let i = 0; i < keys$1.length; i++) { - const key = keys$1[i]; - if (!(key in object) || !isEqualsSameValueZero(object[key], source[key])) { - object[key] = source[key]; - } - } -} - -export { assign }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignIn.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignIn.d.mts deleted file mode 100644 index de32e91..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignIn.d.mts +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Assigns own and inherited properties from one source object to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source - The source object whose properties will be assigned to the target object. - * @returns {T & U} The updated target object with properties from the source object assigned. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * const result = assignIn(target, source); - * // => { a: 1, b: 3, c: 4 } - */ -declare function assignIn(object: T, source: U): T & U; -/** - * Assigns own and inherited properties from two source objects to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @returns {T & U & V} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const result = assignIn(target, source1, source2); - * // => { a: 1, b: 2, c: 3 } - */ -declare function assignIn(object: T, source1: U, source2: V): T & U & V; -/** - * Assigns own and inherited properties from three source objects to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @returns {T & U & V & W} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const result = assignIn(target, source1, source2, source3); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function assignIn(object: T, source1: U, source2: V, source3: W): T & U & V & W; -/** - * Assigns own and inherited properties from four source objects to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @template X - The type of the fourth source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @param {X} source4 - The fourth source object whose properties will be assigned to the target object. - * @returns {T & U & V & W & X} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const source4 = { e: 5 }; - * const result = assignIn(target, source1, source2, source3, source4); - * // => { a: 1, b: 2, c: 3, d: 4, e: 5 } - */ -declare function assignIn(object: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X; -/** - * Returns the target object as-is. - * - * @template T - The type of the target object. - * @param {T} object - The target object. - * @returns {T} The target object. - * - * @example - * const target = { a: 1, b: 2 }; - * const result = assignIn(target); - * // => { a: 1, b: 2 } - */ -declare function assignIn(object: T): T; -/** - * Assigns own and inherited properties from multiple source objects to a target object. - * - * @template R - The type of the result. - * @param {any} object - The target object to which properties will be assigned. - * @param {...any[]} otherArgs - The source objects whose properties will be assigned to the target object. - * @returns {R} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const result = assignIn(target, { b: 2 }, { c: 3 }, { d: 4 }); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function assignIn(object: any, ...otherArgs: any[]): R; - -export { assignIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignIn.d.ts deleted file mode 100644 index de32e91..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignIn.d.ts +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Assigns own and inherited properties from one source object to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source - The source object whose properties will be assigned to the target object. - * @returns {T & U} The updated target object with properties from the source object assigned. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * const result = assignIn(target, source); - * // => { a: 1, b: 3, c: 4 } - */ -declare function assignIn(object: T, source: U): T & U; -/** - * Assigns own and inherited properties from two source objects to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @returns {T & U & V} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const result = assignIn(target, source1, source2); - * // => { a: 1, b: 2, c: 3 } - */ -declare function assignIn(object: T, source1: U, source2: V): T & U & V; -/** - * Assigns own and inherited properties from three source objects to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @returns {T & U & V & W} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const result = assignIn(target, source1, source2, source3); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function assignIn(object: T, source1: U, source2: V, source3: W): T & U & V & W; -/** - * Assigns own and inherited properties from four source objects to a target object. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @template X - The type of the fourth source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @param {X} source4 - The fourth source object whose properties will be assigned to the target object. - * @returns {T & U & V & W & X} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const source4 = { e: 5 }; - * const result = assignIn(target, source1, source2, source3, source4); - * // => { a: 1, b: 2, c: 3, d: 4, e: 5 } - */ -declare function assignIn(object: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X; -/** - * Returns the target object as-is. - * - * @template T - The type of the target object. - * @param {T} object - The target object. - * @returns {T} The target object. - * - * @example - * const target = { a: 1, b: 2 }; - * const result = assignIn(target); - * // => { a: 1, b: 2 } - */ -declare function assignIn(object: T): T; -/** - * Assigns own and inherited properties from multiple source objects to a target object. - * - * @template R - The type of the result. - * @param {any} object - The target object to which properties will be assigned. - * @param {...any[]} otherArgs - The source objects whose properties will be assigned to the target object. - * @returns {R} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const result = assignIn(target, { b: 2 }, { c: 3 }, { d: 4 }); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function assignIn(object: any, ...otherArgs: any[]): R; - -export { assignIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignIn.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignIn.js deleted file mode 100644 index b8c95c6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignIn.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keysIn = require('./keysIn.js'); -const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js'); - -function assignIn(object, ...sources) { - for (let i = 0; i < sources.length; i++) { - assignInImpl(object, sources[i]); - } - return object; -} -function assignInImpl(object, source) { - const keys = keysIn.keysIn(source); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - if (!(key in object) || !isEqualsSameValueZero.isEqualsSameValueZero(object[key], source[key])) { - object[key] = source[key]; - } - } -} - -exports.assignIn = assignIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignIn.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignIn.mjs deleted file mode 100644 index 6273662..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignIn.mjs +++ /dev/null @@ -1,20 +0,0 @@ -import { keysIn } from './keysIn.mjs'; -import { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs'; - -function assignIn(object, ...sources) { - for (let i = 0; i < sources.length; i++) { - assignInImpl(object, sources[i]); - } - return object; -} -function assignInImpl(object, source) { - const keys = keysIn(source); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - if (!(key in object) || !isEqualsSameValueZero(object[key], source[key])) { - object[key] = source[key]; - } - } -} - -export { assignIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignInWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignInWith.d.mts deleted file mode 100644 index 94fd0ad..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignInWith.d.mts +++ /dev/null @@ -1,126 +0,0 @@ -type AssignCustomizer = (objectValue: any, sourceValue: any, key?: string, object?: {}, source?: {}) => any; -/** - * Assigns own and inherited properties from one source object to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source - The source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U} The updated target object with properties from the source object assigned. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * const result = assignInWith(target, source, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 4 } - */ -declare function assignInWith(object: T, source: U, customizer: AssignCustomizer): T & U; -/** - * Assigns own and inherited properties from two source objects to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U & V} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const result = assignInWith(target, source1, source2, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function assignInWith(object: T, source1: U, source2: V, customizer: AssignCustomizer): T & U & V; -/** - * Assigns own and inherited properties from three source objects to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U & V & W} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const result = assignInWith(target, source1, source2, source3, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function assignInWith(object: T, source1: U, source2: V, source3: W, customizer: AssignCustomizer): T & U & V & W; -/** - * Assigns own and inherited properties from four source objects to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @template X - The type of the fourth source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @param {X} source4 - The fourth source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U & V & W & X} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const source4 = { e: 5 }; - * const result = assignInWith(target, source1, source2, source3, source4, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3, d: 4, e: 5 } - */ -declare function assignInWith(object: T, source1: U, source2: V, source3: W, source4: X, customizer: AssignCustomizer): T & U & V & W & X; -/** - * Returns the target object as-is. - * - * @template T - The type of the target object. - * @param {T} object - The target object. - * @returns {T} The target object. - * - * @example - * const target = { a: 1, b: 2 }; - * const result = assignInWith(target); - * // => { a: 1, b: 2 } - */ -declare function assignInWith(object: T): T; -/** - * Assigns own and inherited properties from multiple source objects to a target object using a customizer function. - * - * @template R - The type of the result. - * @param {any} object - The target object to which properties will be assigned. - * @param {...any[]} otherArgs - The source objects and customizer function. - * @returns {R} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const result = assignInWith(target, { b: 2 }, { c: 3 }, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function assignInWith(object: any, ...otherArgs: any[]): R; - -export { assignInWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignInWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignInWith.d.ts deleted file mode 100644 index 94fd0ad..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignInWith.d.ts +++ /dev/null @@ -1,126 +0,0 @@ -type AssignCustomizer = (objectValue: any, sourceValue: any, key?: string, object?: {}, source?: {}) => any; -/** - * Assigns own and inherited properties from one source object to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source - The source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U} The updated target object with properties from the source object assigned. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * const result = assignInWith(target, source, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 4 } - */ -declare function assignInWith(object: T, source: U, customizer: AssignCustomizer): T & U; -/** - * Assigns own and inherited properties from two source objects to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U & V} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const result = assignInWith(target, source1, source2, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function assignInWith(object: T, source1: U, source2: V, customizer: AssignCustomizer): T & U & V; -/** - * Assigns own and inherited properties from three source objects to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U & V & W} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const result = assignInWith(target, source1, source2, source3, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function assignInWith(object: T, source1: U, source2: V, source3: W, customizer: AssignCustomizer): T & U & V & W; -/** - * Assigns own and inherited properties from four source objects to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @template X - The type of the fourth source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @param {X} source4 - The fourth source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U & V & W & X} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const source4 = { e: 5 }; - * const result = assignInWith(target, source1, source2, source3, source4, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3, d: 4, e: 5 } - */ -declare function assignInWith(object: T, source1: U, source2: V, source3: W, source4: X, customizer: AssignCustomizer): T & U & V & W & X; -/** - * Returns the target object as-is. - * - * @template T - The type of the target object. - * @param {T} object - The target object. - * @returns {T} The target object. - * - * @example - * const target = { a: 1, b: 2 }; - * const result = assignInWith(target); - * // => { a: 1, b: 2 } - */ -declare function assignInWith(object: T): T; -/** - * Assigns own and inherited properties from multiple source objects to a target object using a customizer function. - * - * @template R - The type of the result. - * @param {any} object - The target object to which properties will be assigned. - * @param {...any[]} otherArgs - The source objects and customizer function. - * @returns {R} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const result = assignInWith(target, { b: 2 }, { c: 3 }, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function assignInWith(object: any, ...otherArgs: any[]): R; - -export { assignInWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignInWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignInWith.js deleted file mode 100644 index 78aae79..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignInWith.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keysIn = require('./keysIn.js'); -const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js'); - -function assignInWith(object, ...sources) { - let getValueToAssign = sources[sources.length - 1]; - if (typeof getValueToAssign === 'function') { - sources.pop(); - } - else { - getValueToAssign = undefined; - } - for (let i = 0; i < sources.length; i++) { - assignInWithImpl(object, sources[i], getValueToAssign); - } - return object; -} -function assignInWithImpl(object, source, getValueToAssign) { - const keys = keysIn.keysIn(source); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const objValue = object[key]; - const srcValue = source[key]; - const newValue = getValueToAssign?.(objValue, srcValue, key, object, source) ?? srcValue; - if (!(key in object) || !isEqualsSameValueZero.isEqualsSameValueZero(objValue, newValue)) { - object[key] = newValue; - } - } -} - -exports.assignInWith = assignInWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignInWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignInWith.mjs deleted file mode 100644 index 9c4f221..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignInWith.mjs +++ /dev/null @@ -1,30 +0,0 @@ -import { keysIn } from './keysIn.mjs'; -import { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs'; - -function assignInWith(object, ...sources) { - let getValueToAssign = sources[sources.length - 1]; - if (typeof getValueToAssign === 'function') { - sources.pop(); - } - else { - getValueToAssign = undefined; - } - for (let i = 0; i < sources.length; i++) { - assignInWithImpl(object, sources[i], getValueToAssign); - } - return object; -} -function assignInWithImpl(object, source, getValueToAssign) { - const keys = keysIn(source); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const objValue = object[key]; - const srcValue = source[key]; - const newValue = getValueToAssign?.(objValue, srcValue, key, object, source) ?? srcValue; - if (!(key in object) || !isEqualsSameValueZero(objValue, newValue)) { - object[key] = newValue; - } - } -} - -export { assignInWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignWith.d.mts deleted file mode 100644 index 069367b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignWith.d.mts +++ /dev/null @@ -1,126 +0,0 @@ -type AssignCustomizer = (objectValue: any, sourceValue: any, key?: string, object?: {}, source?: {}) => any; -/** - * Assigns own properties from one source object to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source - The source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U} The updated target object with properties from the source object assigned. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * const result = assignWith(target, source, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 4 } - */ -declare function assignWith(object: T, source: U, customizer: AssignCustomizer): T & U; -/** - * Assigns own properties from two source objects to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U & V} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const result = assignWith(target, source1, source2, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function assignWith(object: T, source1: U, source2: V, customizer: AssignCustomizer): T & U & V; -/** - * Assigns own properties from three source objects to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U & V & W} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const result = assignWith(target, source1, source2, source3, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function assignWith(object: T, source1: U, source2: V, source3: W, customizer: AssignCustomizer): T & U & V & W; -/** - * Assigns own properties from four source objects to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @template X - The type of the fourth source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @param {X} source4 - The fourth source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U & V & W & X} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const source4 = { e: 5 }; - * const result = assignWith(target, source1, source2, source3, source4, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3, d: 4, e: 5 } - */ -declare function assignWith(object: T, source1: U, source2: V, source3: W, source4: X, customizer: AssignCustomizer): T & U & V & W & X; -/** - * Returns the target object as-is. - * - * @template T - The type of the target object. - * @param {T} object - The target object. - * @returns {T} The target object. - * - * @example - * const target = { a: 1, b: 2 }; - * const result = assignWith(target); - * // => { a: 1, b: 2 } - */ -declare function assignWith(object: T): T; -/** - * Assigns own properties from multiple source objects to a target object using a customizer function. - * - * @template R - The type of the result. - * @param {any} object - The target object to which properties will be assigned. - * @param {...any[]} otherArgs - The source objects and customizer function. - * @returns {R} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const result = assignWith(target, { b: 2 }, { c: 3 }, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function assignWith(object: any, ...otherArgs: any[]): R; - -export { assignWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignWith.d.ts deleted file mode 100644 index 069367b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignWith.d.ts +++ /dev/null @@ -1,126 +0,0 @@ -type AssignCustomizer = (objectValue: any, sourceValue: any, key?: string, object?: {}, source?: {}) => any; -/** - * Assigns own properties from one source object to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source - The source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U} The updated target object with properties from the source object assigned. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * const result = assignWith(target, source, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 4 } - */ -declare function assignWith(object: T, source: U, customizer: AssignCustomizer): T & U; -/** - * Assigns own properties from two source objects to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U & V} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const result = assignWith(target, source1, source2, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function assignWith(object: T, source1: U, source2: V, customizer: AssignCustomizer): T & U & V; -/** - * Assigns own properties from three source objects to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U & V & W} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const result = assignWith(target, source1, source2, source3, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function assignWith(object: T, source1: U, source2: V, source3: W, customizer: AssignCustomizer): T & U & V & W; -/** - * Assigns own properties from four source objects to a target object using a customizer function. - * - * @template T - The type of the target object. - * @template U - The type of the first source object. - * @template V - The type of the second source object. - * @template W - The type of the third source object. - * @template X - The type of the fourth source object. - * @param {T} object - The target object to which properties will be assigned. - * @param {U} source1 - The first source object whose properties will be assigned to the target object. - * @param {V} source2 - The second source object whose properties will be assigned to the target object. - * @param {W} source3 - The third source object whose properties will be assigned to the target object. - * @param {X} source4 - The fourth source object whose properties will be assigned to the target object. - * @param {AssignCustomizer} customizer - The function to customize assigned values. - * @returns {T & U & V & W & X} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const source4 = { e: 5 }; - * const result = assignWith(target, source1, source2, source3, source4, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3, d: 4, e: 5 } - */ -declare function assignWith(object: T, source1: U, source2: V, source3: W, source4: X, customizer: AssignCustomizer): T & U & V & W & X; -/** - * Returns the target object as-is. - * - * @template T - The type of the target object. - * @param {T} object - The target object. - * @returns {T} The target object. - * - * @example - * const target = { a: 1, b: 2 }; - * const result = assignWith(target); - * // => { a: 1, b: 2 } - */ -declare function assignWith(object: T): T; -/** - * Assigns own properties from multiple source objects to a target object using a customizer function. - * - * @template R - The type of the result. - * @param {any} object - The target object to which properties will be assigned. - * @param {...any[]} otherArgs - The source objects and customizer function. - * @returns {R} The updated target object with properties from the source objects assigned. - * - * @example - * const target = { a: 1 }; - * const result = assignWith(target, { b: 2 }, { c: 3 }, (objValue, srcValue) => { - * return objValue === undefined ? srcValue : objValue; - * }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function assignWith(object: any, ...otherArgs: any[]): R; - -export { assignWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignWith.js deleted file mode 100644 index 7255f1b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignWith.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keys = require('./keys.js'); -const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js'); - -function assignWith(object, ...sources) { - let getValueToAssign = sources[sources.length - 1]; - if (typeof getValueToAssign === 'function') { - sources.pop(); - } - else { - getValueToAssign = undefined; - } - for (let i = 0; i < sources.length; i++) { - assignWithImpl(object, sources[i], getValueToAssign); - } - return object; -} -function assignWithImpl(object, source, getValueToAssign) { - const keys$1 = keys.keys(source); - for (let i = 0; i < keys$1.length; i++) { - const key = keys$1[i]; - const objValue = object[key]; - const srcValue = source[key]; - const newValue = getValueToAssign?.(objValue, srcValue, key, object, source) ?? srcValue; - if (!(key in object) || !isEqualsSameValueZero.isEqualsSameValueZero(objValue, newValue)) { - object[key] = newValue; - } - } -} - -exports.assignWith = assignWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignWith.mjs deleted file mode 100644 index 9a5076d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/assignWith.mjs +++ /dev/null @@ -1,30 +0,0 @@ -import { keys } from './keys.mjs'; -import { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs'; - -function assignWith(object, ...sources) { - let getValueToAssign = sources[sources.length - 1]; - if (typeof getValueToAssign === 'function') { - sources.pop(); - } - else { - getValueToAssign = undefined; - } - for (let i = 0; i < sources.length; i++) { - assignWithImpl(object, sources[i], getValueToAssign); - } - return object; -} -function assignWithImpl(object, source, getValueToAssign) { - const keys$1 = keys(source); - for (let i = 0; i < keys$1.length; i++) { - const key = keys$1[i]; - const objValue = object[key]; - const srcValue = source[key]; - const newValue = getValueToAssign?.(objValue, srcValue, key, object, source) ?? srcValue; - if (!(key in object) || !isEqualsSameValueZero(objValue, newValue)) { - object[key] = newValue; - } - } -} - -export { assignWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/at.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/at.d.mts deleted file mode 100644 index a16641e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/at.d.mts +++ /dev/null @@ -1,33 +0,0 @@ -type PropertyName = string | number | symbol; -type Many = T | readonly T[]; -type PropertyPath = Many; -/** - * Gets values at given paths from a dictionary or numeric dictionary. - * - * @template T - The type of the values in the dictionary. - * @param {Record | Record | null | undefined} object - The dictionary to query. - * @param {...PropertyPath[]} props - The property paths to get values for. - * @returns {T[]} Returns an array of the picked values. - * - * @example - * const object = { 'a': 1, 'b': 2, 'c': 3 }; - * at(object, 'a', 'c'); - * // => [1, 3] - */ -declare function at(object: Record | Record | null | undefined, ...props: PropertyPath[]): T[]; -/** - * Gets values at given keys from an object. - * - * @template T - The type of the object. - * @param {T | null | undefined} object - The object to query. - * @param {...Array>} props - The property keys to get values for. - * @returns {Array} Returns an array of the picked values. - * - * @example - * const object = { 'a': 1, 'b': 2, 'c': 3 }; - * at(object, 'a', 'c'); - * // => [1, 3] - */ -declare function at(object: T | null | undefined, ...props: Array>): Array; - -export { at }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/at.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/at.d.ts deleted file mode 100644 index a16641e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/at.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -type PropertyName = string | number | symbol; -type Many = T | readonly T[]; -type PropertyPath = Many; -/** - * Gets values at given paths from a dictionary or numeric dictionary. - * - * @template T - The type of the values in the dictionary. - * @param {Record | Record | null | undefined} object - The dictionary to query. - * @param {...PropertyPath[]} props - The property paths to get values for. - * @returns {T[]} Returns an array of the picked values. - * - * @example - * const object = { 'a': 1, 'b': 2, 'c': 3 }; - * at(object, 'a', 'c'); - * // => [1, 3] - */ -declare function at(object: Record | Record | null | undefined, ...props: PropertyPath[]): T[]; -/** - * Gets values at given keys from an object. - * - * @template T - The type of the object. - * @param {T | null | undefined} object - The object to query. - * @param {...Array>} props - The property keys to get values for. - * @returns {Array} Returns an array of the picked values. - * - * @example - * const object = { 'a': 1, 'b': 2, 'c': 3 }; - * at(object, 'a', 'c'); - * // => [1, 3] - */ -declare function at(object: T | null | undefined, ...props: Array>): Array; - -export { at }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/at.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/at.js deleted file mode 100644 index 54fbc11..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/at.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const get = require('./get.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const isString = require('../predicate/isString.js'); - -function at(object, ...paths) { - if (paths.length === 0) { - return []; - } - const allPaths = []; - for (let i = 0; i < paths.length; i++) { - const path = paths[i]; - if (!isArrayLike.isArrayLike(path) || isString.isString(path)) { - allPaths.push(path); - continue; - } - for (let j = 0; j < path.length; j++) { - allPaths.push(path[j]); - } - } - const result = []; - for (let i = 0; i < allPaths.length; i++) { - result.push(get.get(object, allPaths[i])); - } - return result; -} - -exports.at = at; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/at.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/at.mjs deleted file mode 100644 index f072973..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/at.mjs +++ /dev/null @@ -1,27 +0,0 @@ -import { get } from './get.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { isString } from '../predicate/isString.mjs'; - -function at(object, ...paths) { - if (paths.length === 0) { - return []; - } - const allPaths = []; - for (let i = 0; i < paths.length; i++) { - const path = paths[i]; - if (!isArrayLike(path) || isString(path)) { - allPaths.push(path); - continue; - } - for (let j = 0; j < path.length; j++) { - allPaths.push(path[j]); - } - } - const result = []; - for (let i = 0; i < allPaths.length; i++) { - result.push(get(object, allPaths[i])); - } - return result; -} - -export { at }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/clone.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/clone.d.mts deleted file mode 100644 index 210dc8e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/clone.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creates a shallow clone of the given object. - * - * @template T - The type of the object. - * @param {T} obj - The object to clone. - * @returns {T} - A shallow clone of the given object. - * - * @example - * // Clone a primitive objs - * const num = 29; - * const clonedNum = clone(num); - * console.log(clonedNum); // 29 - * console.log(clonedNum === num); // true - * - * @example - * // Clone an array - * const arr = [1, 2, 3]; - * const clonedArr = clone(arr); - * console.log(clonedArr); // [1, 2, 3] - * console.log(clonedArr === arr); // false - * - * @example - * // Clone an object - * const obj = { a: 1, b: 'es-toolkit', c: [1, 2, 3] }; - * const clonedObj = clone(obj); - * console.log(clonedObj); // { a: 1, b: 'es-toolkit', c: [1, 2, 3] } - * console.log(clonedObj === obj); // false - */ -declare function clone(obj: T): T; - -export { clone }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/clone.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/clone.d.ts deleted file mode 100644 index 210dc8e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/clone.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creates a shallow clone of the given object. - * - * @template T - The type of the object. - * @param {T} obj - The object to clone. - * @returns {T} - A shallow clone of the given object. - * - * @example - * // Clone a primitive objs - * const num = 29; - * const clonedNum = clone(num); - * console.log(clonedNum); // 29 - * console.log(clonedNum === num); // true - * - * @example - * // Clone an array - * const arr = [1, 2, 3]; - * const clonedArr = clone(arr); - * console.log(clonedArr); // [1, 2, 3] - * console.log(clonedArr === arr); // false - * - * @example - * // Clone an object - * const obj = { a: 1, b: 'es-toolkit', c: [1, 2, 3] }; - * const clonedObj = clone(obj); - * console.log(clonedObj); // { a: 1, b: 'es-toolkit', c: [1, 2, 3] } - * console.log(clonedObj === obj); // false - */ -declare function clone(obj: T): T; - -export { clone }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/clone.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/clone.js deleted file mode 100644 index 177d411..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/clone.js +++ /dev/null @@ -1,164 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isPrimitive = require('../../predicate/isPrimitive.js'); -const getTag = require('../_internal/getTag.js'); -const tags = require('../_internal/tags.js'); -const isArray = require('../predicate/isArray.js'); -const isTypedArray = require('../predicate/isTypedArray.js'); - -function clone(obj) { - if (isPrimitive.isPrimitive(obj)) { - return obj; - } - const tag = getTag.getTag(obj); - if (!isCloneableObject(obj)) { - return {}; - } - if (isArray.isArray(obj)) { - const result = Array.from(obj); - if (obj.length > 0 && typeof obj[0] === 'string' && Object.hasOwn(obj, 'index')) { - result.index = obj.index; - result.input = obj.input; - } - return result; - } - if (isTypedArray.isTypedArray(obj)) { - const typedArray = obj; - const Ctor = typedArray.constructor; - return new Ctor(typedArray.buffer, typedArray.byteOffset, typedArray.length); - } - if (tag === tags.arrayBufferTag) { - return new ArrayBuffer(obj.byteLength); - } - if (tag === tags.dataViewTag) { - const dataView = obj; - const buffer = dataView.buffer; - const byteOffset = dataView.byteOffset; - const byteLength = dataView.byteLength; - const clonedBuffer = new ArrayBuffer(byteLength); - const srcView = new Uint8Array(buffer, byteOffset, byteLength); - const destView = new Uint8Array(clonedBuffer); - destView.set(srcView); - return new DataView(clonedBuffer); - } - if (tag === tags.booleanTag || tag === tags.numberTag || tag === tags.stringTag) { - const Ctor = obj.constructor; - const clone = new Ctor(obj.valueOf()); - if (tag === tags.stringTag) { - cloneStringObjectProperties(clone, obj); - } - else { - copyOwnProperties(clone, obj); - } - return clone; - } - if (tag === tags.dateTag) { - return new Date(Number(obj)); - } - if (tag === tags.regexpTag) { - const regExp = obj; - const clone = new RegExp(regExp.source, regExp.flags); - clone.lastIndex = regExp.lastIndex; - return clone; - } - if (tag === tags.symbolTag) { - return Object(Symbol.prototype.valueOf.call(obj)); - } - if (tag === tags.mapTag) { - const map = obj; - const result = new Map(); - map.forEach((obj, key) => { - result.set(key, obj); - }); - return result; - } - if (tag === tags.setTag) { - const set = obj; - const result = new Set(); - set.forEach(obj => { - result.add(obj); - }); - return result; - } - if (tag === tags.argumentsTag) { - const args = obj; - const result = {}; - copyOwnProperties(result, args); - result.length = args.length; - result[Symbol.iterator] = args[Symbol.iterator]; - return result; - } - const result = {}; - copyPrototype(result, obj); - copyOwnProperties(result, obj); - copySymbolProperties(result, obj); - return result; -} -function isCloneableObject(object) { - switch (getTag.getTag(object)) { - case tags.argumentsTag: - case tags.arrayTag: - case tags.arrayBufferTag: - case tags.dataViewTag: - case tags.booleanTag: - case tags.dateTag: - case tags.float32ArrayTag: - case tags.float64ArrayTag: - case tags.int8ArrayTag: - case tags.int16ArrayTag: - case tags.int32ArrayTag: - case tags.mapTag: - case tags.numberTag: - case tags.objectTag: - case tags.regexpTag: - case tags.setTag: - case tags.stringTag: - case tags.symbolTag: - case tags.uint8ArrayTag: - case tags.uint8ClampedArrayTag: - case tags.uint16ArrayTag: - case tags.uint32ArrayTag: { - return true; - } - default: { - return false; - } - } -} -function copyOwnProperties(target, source) { - for (const key in source) { - if (Object.hasOwn(source, key)) { - target[key] = source[key]; - } - } -} -function copySymbolProperties(target, source) { - const symbols = Object.getOwnPropertySymbols(source); - for (let i = 0; i < symbols.length; i++) { - const symbol = symbols[i]; - if (Object.prototype.propertyIsEnumerable.call(source, symbol)) { - target[symbol] = source[symbol]; - } - } -} -function cloneStringObjectProperties(target, source) { - const stringLength = source.valueOf().length; - for (const key in source) { - if (Object.hasOwn(source, key) && (Number.isNaN(Number(key)) || Number(key) >= stringLength)) { - target[key] = source[key]; - } - } -} -function copyPrototype(target, source) { - const proto = Object.getPrototypeOf(source); - if (proto !== null) { - const Ctor = source.constructor; - if (typeof Ctor === 'function') { - Object.setPrototypeOf(target, proto); - } - } -} - -exports.clone = clone; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/clone.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/clone.mjs deleted file mode 100644 index 64e3f6a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/clone.mjs +++ /dev/null @@ -1,160 +0,0 @@ -import { isPrimitive } from '../../predicate/isPrimitive.mjs'; -import { getTag } from '../_internal/getTag.mjs'; -import { arrayBufferTag, dataViewTag, booleanTag, numberTag, stringTag, dateTag, regexpTag, symbolTag, mapTag, setTag, argumentsTag, uint32ArrayTag, uint16ArrayTag, uint8ClampedArrayTag, uint8ArrayTag, objectTag, int32ArrayTag, int16ArrayTag, int8ArrayTag, float64ArrayTag, float32ArrayTag, arrayTag } from '../_internal/tags.mjs'; -import { isArray } from '../predicate/isArray.mjs'; -import { isTypedArray } from '../predicate/isTypedArray.mjs'; - -function clone(obj) { - if (isPrimitive(obj)) { - return obj; - } - const tag = getTag(obj); - if (!isCloneableObject(obj)) { - return {}; - } - if (isArray(obj)) { - const result = Array.from(obj); - if (obj.length > 0 && typeof obj[0] === 'string' && Object.hasOwn(obj, 'index')) { - result.index = obj.index; - result.input = obj.input; - } - return result; - } - if (isTypedArray(obj)) { - const typedArray = obj; - const Ctor = typedArray.constructor; - return new Ctor(typedArray.buffer, typedArray.byteOffset, typedArray.length); - } - if (tag === arrayBufferTag) { - return new ArrayBuffer(obj.byteLength); - } - if (tag === dataViewTag) { - const dataView = obj; - const buffer = dataView.buffer; - const byteOffset = dataView.byteOffset; - const byteLength = dataView.byteLength; - const clonedBuffer = new ArrayBuffer(byteLength); - const srcView = new Uint8Array(buffer, byteOffset, byteLength); - const destView = new Uint8Array(clonedBuffer); - destView.set(srcView); - return new DataView(clonedBuffer); - } - if (tag === booleanTag || tag === numberTag || tag === stringTag) { - const Ctor = obj.constructor; - const clone = new Ctor(obj.valueOf()); - if (tag === stringTag) { - cloneStringObjectProperties(clone, obj); - } - else { - copyOwnProperties(clone, obj); - } - return clone; - } - if (tag === dateTag) { - return new Date(Number(obj)); - } - if (tag === regexpTag) { - const regExp = obj; - const clone = new RegExp(regExp.source, regExp.flags); - clone.lastIndex = regExp.lastIndex; - return clone; - } - if (tag === symbolTag) { - return Object(Symbol.prototype.valueOf.call(obj)); - } - if (tag === mapTag) { - const map = obj; - const result = new Map(); - map.forEach((obj, key) => { - result.set(key, obj); - }); - return result; - } - if (tag === setTag) { - const set = obj; - const result = new Set(); - set.forEach(obj => { - result.add(obj); - }); - return result; - } - if (tag === argumentsTag) { - const args = obj; - const result = {}; - copyOwnProperties(result, args); - result.length = args.length; - result[Symbol.iterator] = args[Symbol.iterator]; - return result; - } - const result = {}; - copyPrototype(result, obj); - copyOwnProperties(result, obj); - copySymbolProperties(result, obj); - return result; -} -function isCloneableObject(object) { - switch (getTag(object)) { - case argumentsTag: - case arrayTag: - case arrayBufferTag: - case dataViewTag: - case booleanTag: - case dateTag: - case float32ArrayTag: - case float64ArrayTag: - case int8ArrayTag: - case int16ArrayTag: - case int32ArrayTag: - case mapTag: - case numberTag: - case objectTag: - case regexpTag: - case setTag: - case stringTag: - case symbolTag: - case uint8ArrayTag: - case uint8ClampedArrayTag: - case uint16ArrayTag: - case uint32ArrayTag: { - return true; - } - default: { - return false; - } - } -} -function copyOwnProperties(target, source) { - for (const key in source) { - if (Object.hasOwn(source, key)) { - target[key] = source[key]; - } - } -} -function copySymbolProperties(target, source) { - const symbols = Object.getOwnPropertySymbols(source); - for (let i = 0; i < symbols.length; i++) { - const symbol = symbols[i]; - if (Object.prototype.propertyIsEnumerable.call(source, symbol)) { - target[symbol] = source[symbol]; - } - } -} -function cloneStringObjectProperties(target, source) { - const stringLength = source.valueOf().length; - for (const key in source) { - if (Object.hasOwn(source, key) && (Number.isNaN(Number(key)) || Number(key) >= stringLength)) { - target[key] = source[key]; - } - } -} -function copyPrototype(target, source) { - const proto = Object.getPrototypeOf(source); - if (proto !== null) { - const Ctor = source.constructor; - if (typeof Ctor === 'function') { - Object.setPrototypeOf(target, proto); - } - } -} - -export { clone }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeep.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeep.d.mts deleted file mode 100644 index 62cb10b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeep.d.mts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Creates a deep clone of the given object. - * - * @template T - The type of the object. - * @param {T} obj - The object to clone. - * @returns {T} - A deep clone of the given object. - * - * @example - * // Clone a primitive values - * const num = 29; - * const clonedNum = clone(num); - * console.log(clonedNum); // 29 - * console.log(clonedNum === num); // true - * - * @example - * // Clone an array - * const arr = [1, 2, 3]; - * const clonedArr = clone(arr); - * console.log(clonedArr); // [1, 2, 3] - * console.log(clonedArr === arr); // false - * - * @example - * // Clone an array with nested objects - * const arr = [1, { a: 1 }, [1, 2, 3]]; - * const clonedArr = clone(arr); - * arr[1].a = 2; - * console.log(arr); // [2, { a: 2 }, [1, 2, 3]] - * console.log(clonedArr); // [1, { a: 1 }, [1, 2, 3]] - * console.log(clonedArr === arr); // false - * - * @example - * // Clone an object - * const obj = { a: 1, b: 'es-toolkit', c: [1, 2, 3] }; - * const clonedObj = clone(obj); - * console.log(clonedObj); // { a: 1, b: 'es-toolkit', c: [1, 2, 3] } - * console.log(clonedObj === obj); // false - * - * @example - * // Clone an object with nested objects - * const obj = { a: 1, b: { c: 1 } }; - * const clonedObj = clone(obj); - * obj.b.c = 2; - * console.log(obj); // { a: 1, b: { c: 2 } } - * console.log(clonedObj); // { a: 1, b: { c: 1 } } - * console.log(clonedObj === obj); // false - */ -declare function cloneDeep(obj: T): T; - -export { cloneDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeep.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeep.d.ts deleted file mode 100644 index 62cb10b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeep.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Creates a deep clone of the given object. - * - * @template T - The type of the object. - * @param {T} obj - The object to clone. - * @returns {T} - A deep clone of the given object. - * - * @example - * // Clone a primitive values - * const num = 29; - * const clonedNum = clone(num); - * console.log(clonedNum); // 29 - * console.log(clonedNum === num); // true - * - * @example - * // Clone an array - * const arr = [1, 2, 3]; - * const clonedArr = clone(arr); - * console.log(clonedArr); // [1, 2, 3] - * console.log(clonedArr === arr); // false - * - * @example - * // Clone an array with nested objects - * const arr = [1, { a: 1 }, [1, 2, 3]]; - * const clonedArr = clone(arr); - * arr[1].a = 2; - * console.log(arr); // [2, { a: 2 }, [1, 2, 3]] - * console.log(clonedArr); // [1, { a: 1 }, [1, 2, 3]] - * console.log(clonedArr === arr); // false - * - * @example - * // Clone an object - * const obj = { a: 1, b: 'es-toolkit', c: [1, 2, 3] }; - * const clonedObj = clone(obj); - * console.log(clonedObj); // { a: 1, b: 'es-toolkit', c: [1, 2, 3] } - * console.log(clonedObj === obj); // false - * - * @example - * // Clone an object with nested objects - * const obj = { a: 1, b: { c: 1 } }; - * const clonedObj = clone(obj); - * obj.b.c = 2; - * console.log(obj); // { a: 1, b: { c: 2 } } - * console.log(clonedObj); // { a: 1, b: { c: 1 } } - * console.log(clonedObj === obj); // false - */ -declare function cloneDeep(obj: T): T; - -export { cloneDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeep.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeep.js deleted file mode 100644 index e04bd9f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const cloneDeepWith = require('./cloneDeepWith.js'); - -function cloneDeep(obj) { - return cloneDeepWith.cloneDeepWith(obj); -} - -exports.cloneDeep = cloneDeep; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeep.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeep.mjs deleted file mode 100644 index c3fc65b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeep.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { cloneDeepWith } from './cloneDeepWith.mjs'; - -function cloneDeep(obj) { - return cloneDeepWith(obj); -} - -export { cloneDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.d.mts deleted file mode 100644 index d8b1f96..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.d.mts +++ /dev/null @@ -1,34 +0,0 @@ -type CloneDeepWithCustomizer = (value: any, key: number | string | undefined, object: TObject | undefined, stack: any) => any; -/** - * Creates a deep clone of the given value using a customizer function. - * - * @template T - The type of the value. - * @param {T} value - The value to clone. - * @param {CloneDeepWithCustomizer} customizer - A function to customize the cloning process. - * @returns {any} - A deep clone of the given value. - * - * @example - * const obj = { a: 1, b: 2 }; - * const clonedObj = cloneDeepWith(obj, (value) => { - * if (typeof value === 'number') { - * return value * 2; - * } - * }); - * // => { a: 2, b: 4 } - */ -declare function cloneDeepWith(value: T, customizer: CloneDeepWithCustomizer): any; -/** - * Creates a deep clone of the given value. - * - * @template T - The type of the value. - * @param {T} value - The value to clone. - * @returns {T} - A deep clone of the given value. - * - * @example - * const obj = { a: 1, b: { c: 2 } }; - * const clonedObj = cloneDeepWith(obj); - * // => { a: 1, b: { c: 2 } } - */ -declare function cloneDeepWith(value: T): T; - -export { cloneDeepWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.d.ts deleted file mode 100644 index d8b1f96..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -type CloneDeepWithCustomizer = (value: any, key: number | string | undefined, object: TObject | undefined, stack: any) => any; -/** - * Creates a deep clone of the given value using a customizer function. - * - * @template T - The type of the value. - * @param {T} value - The value to clone. - * @param {CloneDeepWithCustomizer} customizer - A function to customize the cloning process. - * @returns {any} - A deep clone of the given value. - * - * @example - * const obj = { a: 1, b: 2 }; - * const clonedObj = cloneDeepWith(obj, (value) => { - * if (typeof value === 'number') { - * return value * 2; - * } - * }); - * // => { a: 2, b: 4 } - */ -declare function cloneDeepWith(value: T, customizer: CloneDeepWithCustomizer): any; -/** - * Creates a deep clone of the given value. - * - * @template T - The type of the value. - * @param {T} value - The value to clone. - * @returns {T} - A deep clone of the given value. - * - * @example - * const obj = { a: 1, b: { c: 2 } }; - * const clonedObj = cloneDeepWith(obj); - * // => { a: 1, b: { c: 2 } } - */ -declare function cloneDeepWith(value: T): T; - -export { cloneDeepWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js deleted file mode 100644 index 5557a2b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const cloneDeepWith$1 = require('../../object/cloneDeepWith.js'); -const getTag = require('../_internal/getTag.js'); -const tags = require('../_internal/tags.js'); - -function cloneDeepWith(obj, customizer) { - return cloneDeepWith$1.cloneDeepWith(obj, (value, key, object, stack) => { - const cloned = customizer?.(value, key, object, stack); - if (cloned !== undefined) { - return cloned; - } - if (typeof obj !== 'object') { - return undefined; - } - if (getTag.getTag(obj) === tags.objectTag && typeof obj.constructor !== 'function') { - const result = {}; - stack.set(obj, result); - cloneDeepWith$1.copyProperties(result, obj, object, stack); - return result; - } - switch (Object.prototype.toString.call(obj)) { - case tags.numberTag: - case tags.stringTag: - case tags.booleanTag: { - const result = new obj.constructor(obj?.valueOf()); - cloneDeepWith$1.copyProperties(result, obj); - return result; - } - case tags.argumentsTag: { - const result = {}; - cloneDeepWith$1.copyProperties(result, obj); - result.length = obj.length; - result[Symbol.iterator] = obj[Symbol.iterator]; - return result; - } - default: { - return undefined; - } - } - }); -} - -exports.cloneDeepWith = cloneDeepWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.mjs deleted file mode 100644 index 090e1ec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.mjs +++ /dev/null @@ -1,42 +0,0 @@ -import { cloneDeepWith as cloneDeepWith$1, copyProperties } from '../../object/cloneDeepWith.mjs'; -import { getTag } from '../_internal/getTag.mjs'; -import { objectTag, argumentsTag, booleanTag, stringTag, numberTag } from '../_internal/tags.mjs'; - -function cloneDeepWith(obj, customizer) { - return cloneDeepWith$1(obj, (value, key, object, stack) => { - const cloned = customizer?.(value, key, object, stack); - if (cloned !== undefined) { - return cloned; - } - if (typeof obj !== 'object') { - return undefined; - } - if (getTag(obj) === objectTag && typeof obj.constructor !== 'function') { - const result = {}; - stack.set(obj, result); - copyProperties(result, obj, object, stack); - return result; - } - switch (Object.prototype.toString.call(obj)) { - case numberTag: - case stringTag: - case booleanTag: { - const result = new obj.constructor(obj?.valueOf()); - copyProperties(result, obj); - return result; - } - case argumentsTag: { - const result = {}; - copyProperties(result, obj); - result.length = obj.length; - result[Symbol.iterator] = obj[Symbol.iterator]; - return result; - } - default: { - return undefined; - } - } - }); -} - -export { cloneDeepWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneWith.d.mts deleted file mode 100644 index f5be72b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneWith.d.mts +++ /dev/null @@ -1,54 +0,0 @@ -type CloneWithCustomizer = (value: T, key: number | string | undefined, object: any, stack: any) => R; -/** - * Creates a shallow clone of a value with customizer that returns a specific result type. - * - * @template T - The type of the value to clone. - * @template R - The result type extending primitive types or objects. - * @param {T} value - The value to clone. - * @param {CloneWithCustomizer} customizer - The function to customize cloning. - * @returns {R} Returns the cloned value. - * - * @example - * const obj = { a: 1, b: 2 }; - * const cloned = cloneWith(obj, (value) => { - * if (typeof value === 'object') { - * return JSON.parse(JSON.stringify(value)); - * } - * }); - * // => { a: 1, b: 2 } - */ -declare function cloneWith(value: T, customizer: CloneWithCustomizer): R; -/** - * Creates a shallow clone of a value with optional customizer. - * - * @template T - The type of the value to clone. - * @template R - The result type. - * @param {T} value - The value to clone. - * @param {CloneWithCustomizer} customizer - The function to customize cloning. - * @returns {R | T} Returns the cloned value or the customized result. - * - * @example - * const obj = { a: 1, b: 2 }; - * const cloned = cloneWith(obj, (value) => { - * if (typeof value === 'number') { - * return value * 2; - * } - * }); - * // => { a: 2, b: 4 } - */ -declare function cloneWith(value: T, customizer: CloneWithCustomizer): R | T; -/** - * Creates a shallow clone of a value. - * - * @template T - The type of the value to clone. - * @param {T} value - The value to clone. - * @returns {T} Returns the cloned value. - * - * @example - * const obj = { a: 1, b: 2 }; - * const cloned = cloneWith(obj); - * // => { a: 1, b: 2 } - */ -declare function cloneWith(value: T): T; - -export { cloneWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneWith.d.ts deleted file mode 100644 index f5be72b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneWith.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -type CloneWithCustomizer = (value: T, key: number | string | undefined, object: any, stack: any) => R; -/** - * Creates a shallow clone of a value with customizer that returns a specific result type. - * - * @template T - The type of the value to clone. - * @template R - The result type extending primitive types or objects. - * @param {T} value - The value to clone. - * @param {CloneWithCustomizer} customizer - The function to customize cloning. - * @returns {R} Returns the cloned value. - * - * @example - * const obj = { a: 1, b: 2 }; - * const cloned = cloneWith(obj, (value) => { - * if (typeof value === 'object') { - * return JSON.parse(JSON.stringify(value)); - * } - * }); - * // => { a: 1, b: 2 } - */ -declare function cloneWith(value: T, customizer: CloneWithCustomizer): R; -/** - * Creates a shallow clone of a value with optional customizer. - * - * @template T - The type of the value to clone. - * @template R - The result type. - * @param {T} value - The value to clone. - * @param {CloneWithCustomizer} customizer - The function to customize cloning. - * @returns {R | T} Returns the cloned value or the customized result. - * - * @example - * const obj = { a: 1, b: 2 }; - * const cloned = cloneWith(obj, (value) => { - * if (typeof value === 'number') { - * return value * 2; - * } - * }); - * // => { a: 2, b: 4 } - */ -declare function cloneWith(value: T, customizer: CloneWithCustomizer): R | T; -/** - * Creates a shallow clone of a value. - * - * @template T - The type of the value to clone. - * @param {T} value - The value to clone. - * @returns {T} Returns the cloned value. - * - * @example - * const obj = { a: 1, b: 2 }; - * const cloned = cloneWith(obj); - * // => { a: 1, b: 2 } - */ -declare function cloneWith(value: T): T; - -export { cloneWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneWith.js deleted file mode 100644 index 67aa323..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneWith.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const clone = require('./clone.js'); - -function cloneWith(value, customizer) { - if (!customizer) { - return clone.clone(value); - } - const result = customizer(value); - if (result !== undefined) { - return result; - } - return clone.clone(value); -} - -exports.cloneWith = cloneWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneWith.mjs deleted file mode 100644 index 13fb6ef..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/cloneWith.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { clone } from './clone.mjs'; - -function cloneWith(value, customizer) { - if (!customizer) { - return clone(value); - } - const result = customizer(value); - if (result !== undefined) { - return result; - } - return clone(value); -} - -export { cloneWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/create.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/create.d.mts deleted file mode 100644 index 5d933a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/create.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Creates an object that inherits from the prototype object. - * - * If `properties` are provided, they will be added to the new object. - * Only string-keyed enumerable properties directly owned by the `properties` object are copied. - * Inherited properties or those with `Symbol` keys are not copied. - * - * @template T - The prototype object type. - * @template U - The properties object type. - * @param {T} prototype - The object to inherit from. - * @param {U} properties - The properties to assign to the created object. - * @returns {T & U} The new object. - */ -declare function create(prototype: T, properties?: U): T & U; - -export { create }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/create.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/create.d.ts deleted file mode 100644 index 5d933a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/create.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Creates an object that inherits from the prototype object. - * - * If `properties` are provided, they will be added to the new object. - * Only string-keyed enumerable properties directly owned by the `properties` object are copied. - * Inherited properties or those with `Symbol` keys are not copied. - * - * @template T - The prototype object type. - * @template U - The properties object type. - * @param {T} prototype - The object to inherit from. - * @param {U} properties - The properties to assign to the created object. - * @returns {T & U} The new object. - */ -declare function create(prototype: T, properties?: U): T & U; - -export { create }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/create.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/create.js deleted file mode 100644 index 72d3897..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/create.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keys = require('./keys.js'); -const assignValue = require('../_internal/assignValue.js'); -const isObject = require('../predicate/isObject.js'); - -function create(prototype, properties) { - const proto = isObject.isObject(prototype) ? Object.create(prototype) : {}; - if (properties != null) { - const propsKeys = keys.keys(properties); - for (let i = 0; i < propsKeys.length; i++) { - const key = propsKeys[i]; - const propsValue = properties[key]; - assignValue.assignValue(proto, key, propsValue); - } - } - return proto; -} - -exports.create = create; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/create.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/create.mjs deleted file mode 100644 index a79167e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/create.mjs +++ /dev/null @@ -1,18 +0,0 @@ -import { keys } from './keys.mjs'; -import { assignValue } from '../_internal/assignValue.mjs'; -import { isObject } from '../predicate/isObject.mjs'; - -function create(prototype, properties) { - const proto = isObject(prototype) ? Object.create(prototype) : {}; - if (properties != null) { - const propsKeys = keys(properties); - for (let i = 0; i < propsKeys.length; i++) { - const key = propsKeys[i]; - const propsValue = properties[key]; - assignValue(proto, key, propsValue); - } - } - return proto; -} - -export { create }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaults.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaults.d.mts deleted file mode 100644 index ef6a8c1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaults.d.mts +++ /dev/null @@ -1,100 +0,0 @@ -/** - * Assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * @template T - The type of the object being processed. - * @template S - The type of the object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S} source - The object that specifies the default values to apply. - * @returns {NonNullable} The `object` that has been updated with default values from `source`. - * - * @example - * defaults({ a: 1 }, { b: 2 }); // { a: 1, b: 2 } - * defaults({ a: undefined }, { a: 1 }); // { a: 1 } - */ -declare function defaults(object: T, source: S): NonNullable; -/** - * Assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * @template T - The type of the object being processed. - * @template S1 - The type of the first object that provides default values. - * @template S2 - The type of the second object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S1} source1 - The first object that specifies the default values to apply. - * @param {S2} source2 - The second object that specifies the default values to apply. - * @returns {NonNullable} The `object` that has been updated with default values from `source1` and `source2`. - * - * @example - * defaults({ a: 1 }, { b: 2 }, { c: 3 }); // { a: 1, b: 2, c: 3 } - * defaults({ a: undefined }, { a: 1 }, { b: 2 }); // { a: 1, b: 2 } - */ -declare function defaults(object: T, source1: S1, source2: S2): NonNullable; -/** - * Assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * @template T - The type of the object being processed. - * @template S1 - The type of the first object that provides default values. - * @template S2 - The type of the second object that provides default values. - * @template S3 - The type of the third object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S1} source1 - The first object that specifies the default values to apply. - * @param {S2} source2 - The second object that specifies the default values to apply. - * @param {S3} source3 - The third object that specifies the default values to apply. - * @returns {NonNullable} The `object` that has been updated with default values from `source1`, `source2`, and `source3`. - * - * @example - * defaults({ a: 1 }, { b: 2 }, { c: 3 }, { d: 4 }); // { a: 1, b: 2, c: 3, d: 4 } - * defaults({ a: undefined }, { a: 1 }, { b: 2 }, { c: 3 }); // { a: 1, b: 2, c: 3 } - */ -declare function defaults(object: T, source1: S1, source2: S2, source3: S3): NonNullable; -/** - * Assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * @template T - The type of the object being processed. - * @template S1 - The type of the first object that provides default values. - * @template S2 - The type of the second object that provides default values. - * @template S3 - The type of the third object that provides default values. - * @template S4 - The type of the fourth object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S1} source1 - The first object that specifies the default values to apply. - * @param {S2} source2 - The second object that specifies the default values to apply. - * @param {S3} source3 - The third object that specifies the default values to apply. - * @param {S4} source4 - The fourth object that specifies the default values to apply. - * @returns {NonNullable} The `object` that has been updated with default values from `source1`, `source2`, `source3`, and `source4`. - * - * @example - * defaults({ a: 1 }, { b: 2 }, { c: 3 }, { d: 4 }, { e: 5 }); // { a: 1, b: 2, c: 3, d: 4, e: 5 } - * defaults({ a: undefined }, { a: 1 }, { b: 2 }, { c: 3 }, { d: 4 }); // { a: 1, b: 2, c: 3, d: 4 } - */ -declare function defaults(object: T, source1: S1, source2: S2, source3: S3, source4: S4): NonNullable; -/** - * Assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * @template T - The type of the object being processed. - * @param {T} object - The target object that will receive default values. - * @returns {NonNullable} The `object` that has been updated with default values. - * - * @example - * defaults({ a: 1 }); // { a: 1 } - * defaults({ a: undefined }); // { a: undefined } - */ -declare function defaults(object: T): NonNullable; -/** - * Assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * @param {any} object - The target object that will receive default values. - * @param {...any[]} sources - The objects that specify the default values to apply. - * @returns {any} The `object` that has been updated with default values from `sources`. - * - * @example - * defaults({}, { a: 1 }, { b: 2 }); // { a: 1, b: 2 } - * defaults({ a: undefined }, { a: 1 }); // { a: 1 } - */ -declare function defaults(object: any, ...sources: any[]): any; - -export { defaults }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaults.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaults.d.ts deleted file mode 100644 index ef6a8c1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaults.d.ts +++ /dev/null @@ -1,100 +0,0 @@ -/** - * Assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * @template T - The type of the object being processed. - * @template S - The type of the object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S} source - The object that specifies the default values to apply. - * @returns {NonNullable} The `object` that has been updated with default values from `source`. - * - * @example - * defaults({ a: 1 }, { b: 2 }); // { a: 1, b: 2 } - * defaults({ a: undefined }, { a: 1 }); // { a: 1 } - */ -declare function defaults(object: T, source: S): NonNullable; -/** - * Assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * @template T - The type of the object being processed. - * @template S1 - The type of the first object that provides default values. - * @template S2 - The type of the second object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S1} source1 - The first object that specifies the default values to apply. - * @param {S2} source2 - The second object that specifies the default values to apply. - * @returns {NonNullable} The `object` that has been updated with default values from `source1` and `source2`. - * - * @example - * defaults({ a: 1 }, { b: 2 }, { c: 3 }); // { a: 1, b: 2, c: 3 } - * defaults({ a: undefined }, { a: 1 }, { b: 2 }); // { a: 1, b: 2 } - */ -declare function defaults(object: T, source1: S1, source2: S2): NonNullable; -/** - * Assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * @template T - The type of the object being processed. - * @template S1 - The type of the first object that provides default values. - * @template S2 - The type of the second object that provides default values. - * @template S3 - The type of the third object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S1} source1 - The first object that specifies the default values to apply. - * @param {S2} source2 - The second object that specifies the default values to apply. - * @param {S3} source3 - The third object that specifies the default values to apply. - * @returns {NonNullable} The `object` that has been updated with default values from `source1`, `source2`, and `source3`. - * - * @example - * defaults({ a: 1 }, { b: 2 }, { c: 3 }, { d: 4 }); // { a: 1, b: 2, c: 3, d: 4 } - * defaults({ a: undefined }, { a: 1 }, { b: 2 }, { c: 3 }); // { a: 1, b: 2, c: 3 } - */ -declare function defaults(object: T, source1: S1, source2: S2, source3: S3): NonNullable; -/** - * Assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * @template T - The type of the object being processed. - * @template S1 - The type of the first object that provides default values. - * @template S2 - The type of the second object that provides default values. - * @template S3 - The type of the third object that provides default values. - * @template S4 - The type of the fourth object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S1} source1 - The first object that specifies the default values to apply. - * @param {S2} source2 - The second object that specifies the default values to apply. - * @param {S3} source3 - The third object that specifies the default values to apply. - * @param {S4} source4 - The fourth object that specifies the default values to apply. - * @returns {NonNullable} The `object` that has been updated with default values from `source1`, `source2`, `source3`, and `source4`. - * - * @example - * defaults({ a: 1 }, { b: 2 }, { c: 3 }, { d: 4 }, { e: 5 }); // { a: 1, b: 2, c: 3, d: 4, e: 5 } - * defaults({ a: undefined }, { a: 1 }, { b: 2 }, { c: 3 }, { d: 4 }); // { a: 1, b: 2, c: 3, d: 4 } - */ -declare function defaults(object: T, source1: S1, source2: S2, source3: S3, source4: S4): NonNullable; -/** - * Assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * @template T - The type of the object being processed. - * @param {T} object - The target object that will receive default values. - * @returns {NonNullable} The `object` that has been updated with default values. - * - * @example - * defaults({ a: 1 }); // { a: 1 } - * defaults({ a: undefined }); // { a: undefined } - */ -declare function defaults(object: T): NonNullable; -/** - * Assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * @param {any} object - The target object that will receive default values. - * @param {...any[]} sources - The objects that specify the default values to apply. - * @returns {any} The `object` that has been updated with default values from `sources`. - * - * @example - * defaults({}, { a: 1 }, { b: 2 }); // { a: 1, b: 2 } - * defaults({ a: undefined }, { a: 1 }); // { a: 1 } - */ -declare function defaults(object: any, ...sources: any[]): any; - -export { defaults }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaults.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaults.js deleted file mode 100644 index 4de99ff..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaults.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isNil = require('../../predicate/isNil.js'); -const isIterateeCall = require('../_internal/isIterateeCall.js'); -const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js'); - -function defaults(object, ...sources) { - object = Object(object); - const objectProto = Object.prototype; - let length = sources.length; - const guard = length > 2 ? sources[2] : undefined; - if (guard && isIterateeCall.isIterateeCall(sources[0], sources[1], guard)) { - length = 1; - } - for (let i = 0; i < length; i++) { - if (isNil.isNil(sources[i])) { - continue; - } - const source = sources[i]; - const keys = Object.keys(source); - for (let j = 0; j < keys.length; j++) { - const key = keys[j]; - const value = object[key]; - if (value === undefined || - (!Object.hasOwn(object, key) && isEqualsSameValueZero.isEqualsSameValueZero(value, objectProto[key]))) { - object[key] = source[key]; - } - } - } - return object; -} - -exports.defaults = defaults; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaults.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaults.mjs deleted file mode 100644 index 1379043..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaults.mjs +++ /dev/null @@ -1,31 +0,0 @@ -import { isNil } from '../../predicate/isNil.mjs'; -import { isIterateeCall } from '../_internal/isIterateeCall.mjs'; -import { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs'; - -function defaults(object, ...sources) { - object = Object(object); - const objectProto = Object.prototype; - let length = sources.length; - const guard = length > 2 ? sources[2] : undefined; - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - length = 1; - } - for (let i = 0; i < length; i++) { - if (isNil(sources[i])) { - continue; - } - const source = sources[i]; - const keys = Object.keys(source); - for (let j = 0; j < keys.length; j++) { - const key = keys[j]; - const value = object[key]; - if (value === undefined || - (!Object.hasOwn(object, key) && isEqualsSameValueZero(value, objectProto[key]))) { - object[key] = source[key]; - } - } - } - return object; -} - -export { defaults }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaultsDeep.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaultsDeep.d.mts deleted file mode 100644 index 50616f7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaultsDeep.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Recursively assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * Similar to `defaults` but recursively applies default values to nested objects. - * Source objects are applied in order from left to right, and once a property has been assigned a value, - * any subsequent values for that property will be ignored. - * - * Note: This function modifies the first argument, `object`. - * - * @template T - The type of the object being processed. - * @param {any} target - The target object that will receive default values. - * @param {any[]} sources - One or more source objects that specify default values to apply. - * @returns {any} The `object` that has been updated with default values from all sources, recursively merging nested objects. - * - * @example - * defaultsDeep({ a: { b: 2 } }, { a: { b: 3, c: 3 }, d: 4 }); // { a: { b: 2, c: 3 }, d: 4 } - * defaultsDeep({ a: { b: undefined } }, { a: { b: 1 } }); // { a: { b: 1 } } - * defaultsDeep({ a: null }, { a: { b: 1 } }); // { a: null } - */ -declare function defaultsDeep(target: any, ...sources: any[]): any; - -export { defaultsDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaultsDeep.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaultsDeep.d.ts deleted file mode 100644 index 50616f7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaultsDeep.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Recursively assigns default values to an `object`, ensuring that certain properties do not remain `undefined`. - * It sets default values for properties that are either `undefined` or inherited from `Object.prototype`. - * - * Similar to `defaults` but recursively applies default values to nested objects. - * Source objects are applied in order from left to right, and once a property has been assigned a value, - * any subsequent values for that property will be ignored. - * - * Note: This function modifies the first argument, `object`. - * - * @template T - The type of the object being processed. - * @param {any} target - The target object that will receive default values. - * @param {any[]} sources - One or more source objects that specify default values to apply. - * @returns {any} The `object` that has been updated with default values from all sources, recursively merging nested objects. - * - * @example - * defaultsDeep({ a: { b: 2 } }, { a: { b: 3, c: 3 }, d: 4 }); // { a: { b: 2, c: 3 }, d: 4 } - * defaultsDeep({ a: { b: undefined } }, { a: { b: 1 } }); // { a: { b: 1 } } - * defaultsDeep({ a: null }, { a: { b: 1 } }); // { a: null } - */ -declare function defaultsDeep(target: any, ...sources: any[]): any; - -export { defaultsDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaultsDeep.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaultsDeep.js deleted file mode 100644 index 3f7b81b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaultsDeep.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isPlainObject = require('../predicate/isPlainObject.js'); - -function defaultsDeep(target, ...sources) { - target = Object(target); - for (let i = 0; i < sources.length; i++) { - const source = sources[i]; - if (source != null) { - defaultsDeepRecursive(target, source, new WeakMap()); - } - } - return target; -} -function defaultsDeepRecursive(target, source, stack) { - for (const key in source) { - const sourceValue = source[key]; - const targetValue = target[key]; - if (targetValue === undefined || !Object.hasOwn(target, key)) { - target[key] = handleMissingProperty(sourceValue, stack); - continue; - } - if (stack.get(sourceValue) === targetValue) { - continue; - } - handleExistingProperty(targetValue, sourceValue, stack); - } -} -function handleMissingProperty(sourceValue, stack) { - if (stack.has(sourceValue)) { - return stack.get(sourceValue); - } - if (isPlainObject.isPlainObject(sourceValue)) { - const newObj = {}; - stack.set(sourceValue, newObj); - defaultsDeepRecursive(newObj, sourceValue, stack); - return newObj; - } - return sourceValue; -} -function handleExistingProperty(targetValue, sourceValue, stack) { - if (isPlainObject.isPlainObject(targetValue) && isPlainObject.isPlainObject(sourceValue)) { - stack.set(sourceValue, targetValue); - defaultsDeepRecursive(targetValue, sourceValue, stack); - return; - } - if (Array.isArray(targetValue) && Array.isArray(sourceValue)) { - stack.set(sourceValue, targetValue); - mergeArrays(targetValue, sourceValue, stack); - } -} -function mergeArrays(targetArray, sourceArray, stack) { - const minLength = Math.min(sourceArray.length, targetArray.length); - for (let i = 0; i < minLength; i++) { - if (isPlainObject.isPlainObject(targetArray[i]) && isPlainObject.isPlainObject(sourceArray[i])) { - defaultsDeepRecursive(targetArray[i], sourceArray[i], stack); - } - } - for (let i = minLength; i < sourceArray.length; i++) { - targetArray.push(sourceArray[i]); - } -} - -exports.defaultsDeep = defaultsDeep; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaultsDeep.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaultsDeep.mjs deleted file mode 100644 index 2a7d577..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/defaultsDeep.mjs +++ /dev/null @@ -1,62 +0,0 @@ -import { isPlainObject } from '../predicate/isPlainObject.mjs'; - -function defaultsDeep(target, ...sources) { - target = Object(target); - for (let i = 0; i < sources.length; i++) { - const source = sources[i]; - if (source != null) { - defaultsDeepRecursive(target, source, new WeakMap()); - } - } - return target; -} -function defaultsDeepRecursive(target, source, stack) { - for (const key in source) { - const sourceValue = source[key]; - const targetValue = target[key]; - if (targetValue === undefined || !Object.hasOwn(target, key)) { - target[key] = handleMissingProperty(sourceValue, stack); - continue; - } - if (stack.get(sourceValue) === targetValue) { - continue; - } - handleExistingProperty(targetValue, sourceValue, stack); - } -} -function handleMissingProperty(sourceValue, stack) { - if (stack.has(sourceValue)) { - return stack.get(sourceValue); - } - if (isPlainObject(sourceValue)) { - const newObj = {}; - stack.set(sourceValue, newObj); - defaultsDeepRecursive(newObj, sourceValue, stack); - return newObj; - } - return sourceValue; -} -function handleExistingProperty(targetValue, sourceValue, stack) { - if (isPlainObject(targetValue) && isPlainObject(sourceValue)) { - stack.set(sourceValue, targetValue); - defaultsDeepRecursive(targetValue, sourceValue, stack); - return; - } - if (Array.isArray(targetValue) && Array.isArray(sourceValue)) { - stack.set(sourceValue, targetValue); - mergeArrays(targetValue, sourceValue, stack); - } -} -function mergeArrays(targetArray, sourceArray, stack) { - const minLength = Math.min(sourceArray.length, targetArray.length); - for (let i = 0; i < minLength; i++) { - if (isPlainObject(targetArray[i]) && isPlainObject(sourceArray[i])) { - defaultsDeepRecursive(targetArray[i], sourceArray[i], stack); - } - } - for (let i = minLength; i < sourceArray.length; i++) { - targetArray.push(sourceArray[i]); - } -} - -export { defaultsDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findKey.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findKey.d.mts deleted file mode 100644 index 9adbf05..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findKey.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -import { ObjectIteratee } from '../_internal/ObjectIteratee.mjs'; - -/** - * Finds the key of the first element that matches the given predicate. - * - * This function determines the type of the predicate and delegates the search - * to the appropriate helper function. It supports predicates as functions, objects, - * arrays, or strings. - * - * @template T - The type of the object. - * @param {T | null | undefined} obj - The object to inspect. - * @param {ObjectIteratee} predicate - The predicate to match. - * @returns {string | undefined} Returns the key of the matched element, else `undefined`. - */ -declare function findKey(obj: T | null | undefined, predicate?: ObjectIteratee): string | undefined; - -export { findKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findKey.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findKey.d.ts deleted file mode 100644 index 081e423..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findKey.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ObjectIteratee } from '../_internal/ObjectIteratee.js'; - -/** - * Finds the key of the first element that matches the given predicate. - * - * This function determines the type of the predicate and delegates the search - * to the appropriate helper function. It supports predicates as functions, objects, - * arrays, or strings. - * - * @template T - The type of the object. - * @param {T | null | undefined} obj - The object to inspect. - * @param {ObjectIteratee} predicate - The predicate to match. - * @returns {string | undefined} Returns the key of the matched element, else `undefined`. - */ -declare function findKey(obj: T | null | undefined, predicate?: ObjectIteratee): string | undefined; - -export { findKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findKey.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findKey.js deleted file mode 100644 index a96f766..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findKey.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const findKey$1 = require('../../object/findKey.js'); -const identity = require('../function/identity.js'); -const isObject = require('../predicate/isObject.js'); -const iteratee = require('../util/iteratee.js'); - -function findKey(obj, predicate) { - if (!isObject.isObject(obj)) { - return undefined; - } - const iteratee$1 = iteratee.iteratee(predicate ?? identity.identity); - return findKey$1.findKey(obj, iteratee$1); -} - -exports.findKey = findKey; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findKey.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findKey.mjs deleted file mode 100644 index 92b43b2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findKey.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { findKey as findKey$1 } from '../../object/findKey.mjs'; -import { identity } from '../function/identity.mjs'; -import { isObject } from '../predicate/isObject.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function findKey(obj, predicate) { - if (!isObject(obj)) { - return undefined; - } - const iteratee$1 = iteratee(predicate ?? identity); - return findKey$1(obj, iteratee$1); -} - -export { findKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findLastKey.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findLastKey.d.mts deleted file mode 100644 index 60cd010..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findLastKey.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -import { ObjectIteratee } from '../_internal/ObjectIteratee.mjs'; - -/** - * Finds the key of the last element that matches the given predicate. - * - * This function determines the type of the predicate and delegates the search - * to the appropriate helper function. It supports predicates as functions, objects, - * arrays, or strings. - * - * @template T - The type of the object. - * @param {T | null | undefined} obj - The object to inspect. - * @param {ObjectIteratee} predicate - The predicate to match. - * @returns {string | undefined} Returns the key of the matched element, else `undefined`. - */ -declare function findLastKey(obj: T | null | undefined, predicate?: ObjectIteratee): string | undefined; - -export { findLastKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findLastKey.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findLastKey.d.ts deleted file mode 100644 index 9505f67..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findLastKey.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ObjectIteratee } from '../_internal/ObjectIteratee.js'; - -/** - * Finds the key of the last element that matches the given predicate. - * - * This function determines the type of the predicate and delegates the search - * to the appropriate helper function. It supports predicates as functions, objects, - * arrays, or strings. - * - * @template T - The type of the object. - * @param {T | null | undefined} obj - The object to inspect. - * @param {ObjectIteratee} predicate - The predicate to match. - * @returns {string | undefined} Returns the key of the matched element, else `undefined`. - */ -declare function findLastKey(obj: T | null | undefined, predicate?: ObjectIteratee): string | undefined; - -export { findLastKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findLastKey.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findLastKey.js deleted file mode 100644 index 20ee2f8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findLastKey.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../function/identity.js'); -const isObject = require('../predicate/isObject.js'); -const iteratee = require('../util/iteratee.js'); - -function findLastKey(obj, predicate) { - if (!isObject.isObject(obj)) { - return undefined; - } - const iteratee$1 = iteratee.iteratee(predicate ?? identity.identity); - const keys = Object.keys(obj); - return keys.findLast(key => iteratee$1(obj[key], key, obj)); -} - -exports.findLastKey = findLastKey; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findLastKey.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findLastKey.mjs deleted file mode 100644 index dc53dd1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/findLastKey.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { identity } from '../function/identity.mjs'; -import { isObject } from '../predicate/isObject.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function findLastKey(obj, predicate) { - if (!isObject(obj)) { - return undefined; - } - const iteratee$1 = iteratee(predicate ?? identity); - const keys = Object.keys(obj); - return keys.findLast(key => iteratee$1(obj[key], key, obj)); -} - -export { findLastKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forIn.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forIn.d.mts deleted file mode 100644 index e613bc8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forIn.d.mts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Iterates over an object and invokes the `iteratee` function for each property. - * - * Iterates over string keyed properties including inherited properties. - * - * The iteration is terminated early if the `iteratee` function returns `false`. - * - * @template T - The type of the object - * @param {T} object - The object to iterate over - * @param {(value: T[keyof T], key: string, obj: T) => any} iteratee - The function invoked per iteration - * @returns {T} Returns the object - * - * @example - * // Iterate over all properties including inherited ones - * const obj = { a: 1, b: 2 }; - * forIn(obj, (value, key) => { - * console.log(key, value); - * }); - * // Output: 'a' 1, 'b' 2 - * - * // Early termination - * forIn(obj, (value, key) => { - * console.log(key, value); - * return key !== 'a'; // stop after 'a' - * }); - * // Output: 'a' 1 - */ -declare function forIn(object: T, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T; -/** - * Iterates over an object and invokes the `iteratee` function for each property. - * - * Iterates over string keyed properties including inherited properties. - * - * The iteration is terminated early if the `iteratee` function returns `false`. - * - * @template T - The type of the object - * @param {T | null | undefined} object - The object to iterate over - * @param {(value: T[keyof T], key: string, obj: T) => any} iteratee - The function invoked per iteration - * @returns {T | null | undefined} Returns the object - * - * @example - * // Iterate over all properties including inherited ones - * const obj = { a: 1, b: 2 }; - * forIn(obj, (value, key) => { - * console.log(key, value); - * }); - * // Output: 'a' 1, 'b' 2 - * - * // Early termination - * forIn(obj, (value, key) => { - * console.log(key, value); - * return key !== 'a'; // stop after 'a' - * }); - * // Output: 'a' 1 - */ -declare function forIn(object: T | null | undefined, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T | null | undefined; - -export { forIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forIn.d.ts deleted file mode 100644 index e613bc8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forIn.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Iterates over an object and invokes the `iteratee` function for each property. - * - * Iterates over string keyed properties including inherited properties. - * - * The iteration is terminated early if the `iteratee` function returns `false`. - * - * @template T - The type of the object - * @param {T} object - The object to iterate over - * @param {(value: T[keyof T], key: string, obj: T) => any} iteratee - The function invoked per iteration - * @returns {T} Returns the object - * - * @example - * // Iterate over all properties including inherited ones - * const obj = { a: 1, b: 2 }; - * forIn(obj, (value, key) => { - * console.log(key, value); - * }); - * // Output: 'a' 1, 'b' 2 - * - * // Early termination - * forIn(obj, (value, key) => { - * console.log(key, value); - * return key !== 'a'; // stop after 'a' - * }); - * // Output: 'a' 1 - */ -declare function forIn(object: T, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T; -/** - * Iterates over an object and invokes the `iteratee` function for each property. - * - * Iterates over string keyed properties including inherited properties. - * - * The iteration is terminated early if the `iteratee` function returns `false`. - * - * @template T - The type of the object - * @param {T | null | undefined} object - The object to iterate over - * @param {(value: T[keyof T], key: string, obj: T) => any} iteratee - The function invoked per iteration - * @returns {T | null | undefined} Returns the object - * - * @example - * // Iterate over all properties including inherited ones - * const obj = { a: 1, b: 2 }; - * forIn(obj, (value, key) => { - * console.log(key, value); - * }); - * // Output: 'a' 1, 'b' 2 - * - * // Early termination - * forIn(obj, (value, key) => { - * console.log(key, value); - * return key !== 'a'; // stop after 'a' - * }); - * // Output: 'a' 1 - */ -declare function forIn(object: T | null | undefined, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T | null | undefined; - -export { forIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forIn.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forIn.js deleted file mode 100644 index 223cd4f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forIn.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); - -function forIn(object, iteratee = identity.identity) { - if (object == null) { - return object; - } - for (const key in object) { - const result = iteratee(object[key], key, object); - if (result === false) { - break; - } - } - return object; -} - -exports.forIn = forIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forIn.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forIn.mjs deleted file mode 100644 index 03a072b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forIn.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { identity } from '../../function/identity.mjs'; - -function forIn(object, iteratee = identity) { - if (object == null) { - return object; - } - for (const key in object) { - const result = iteratee(object[key], key, object); - if (result === false) { - break; - } - } - return object; -} - -export { forIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forInRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forInRight.d.mts deleted file mode 100644 index 0bbf3b0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forInRight.d.mts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Iterates over an object in reverse order and invokes the `iteratee` function for each property. - * - * Iterates over string keyed properties including inherited properties in reverse order. - * - * The iteration is terminated early if the `iteratee` function returns `false`. - * - * @template T - The type of the object - * @param {T} object - The object to iterate over - * @param {(value: T[keyof T], key: string, collection: T) => any} iteratee - The function invoked per iteration - * @returns {T} Returns the object - * - * @example - * // Iterate over all properties including inherited ones - * const obj = { a: 1, b: 2 }; - * forInRight(obj, (value, key) => { - * console.log(key, value); - * }); - * // Output: 'b' 2, 'a' 1 - * - * // Early termination - * forInRight(obj, (value, key) => { - * console.log(key, value); - * return key !== 'a'; // stop after 'a' - * }); - * // Output: 'b' 2 - */ -declare function forInRight(object: T, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T; -/** - * Iterates over an object in reverse order and invokes the `iteratee` function for each property. - * - * Iterates over string keyed properties including inherited properties in reverse order. - * - * The iteration is terminated early if the `iteratee` function returns `false`. - * - * @template T - The type of the object - * @param {T | null | undefined} object - The object to iterate over - * @param {(value: T[keyof T], key: string, obj: T) => any} iteratee - The function invoked per iteration - * @returns {T | null | undefined} Returns the object - * - * @example - * // Iterate over all properties including inherited ones - * const obj = { a: 1, b: 2 }; - * forInRight(obj, (value, key) => { - * console.log(key, value); - * }); - * // Output: 'b' 2, 'a' 1 - * - * // Early termination - * forInRight(obj, (value, key) => { - * console.log(key, value); - * return key !== 'a'; // stop after 'a' - * }); - * // Output: 'b' 2 - */ -declare function forInRight(object: T | null | undefined, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T | null | undefined; - -export { forInRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forInRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forInRight.d.ts deleted file mode 100644 index 0bbf3b0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forInRight.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Iterates over an object in reverse order and invokes the `iteratee` function for each property. - * - * Iterates over string keyed properties including inherited properties in reverse order. - * - * The iteration is terminated early if the `iteratee` function returns `false`. - * - * @template T - The type of the object - * @param {T} object - The object to iterate over - * @param {(value: T[keyof T], key: string, collection: T) => any} iteratee - The function invoked per iteration - * @returns {T} Returns the object - * - * @example - * // Iterate over all properties including inherited ones - * const obj = { a: 1, b: 2 }; - * forInRight(obj, (value, key) => { - * console.log(key, value); - * }); - * // Output: 'b' 2, 'a' 1 - * - * // Early termination - * forInRight(obj, (value, key) => { - * console.log(key, value); - * return key !== 'a'; // stop after 'a' - * }); - * // Output: 'b' 2 - */ -declare function forInRight(object: T, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T; -/** - * Iterates over an object in reverse order and invokes the `iteratee` function for each property. - * - * Iterates over string keyed properties including inherited properties in reverse order. - * - * The iteration is terminated early if the `iteratee` function returns `false`. - * - * @template T - The type of the object - * @param {T | null | undefined} object - The object to iterate over - * @param {(value: T[keyof T], key: string, obj: T) => any} iteratee - The function invoked per iteration - * @returns {T | null | undefined} Returns the object - * - * @example - * // Iterate over all properties including inherited ones - * const obj = { a: 1, b: 2 }; - * forInRight(obj, (value, key) => { - * console.log(key, value); - * }); - * // Output: 'b' 2, 'a' 1 - * - * // Early termination - * forInRight(obj, (value, key) => { - * console.log(key, value); - * return key !== 'a'; // stop after 'a' - * }); - * // Output: 'b' 2 - */ -declare function forInRight(object: T | null | undefined, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T | null | undefined; - -export { forInRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forInRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forInRight.js deleted file mode 100644 index c572abc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forInRight.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); - -function forInRight(object, iteratee = identity.identity) { - if (object == null) { - return object; - } - const keys = []; - for (const key in object) { - keys.push(key); - } - for (let i = keys.length - 1; i >= 0; i--) { - const key = keys[i]; - const result = iteratee(object[key], key, object); - if (result === false) { - break; - } - } - return object; -} - -exports.forInRight = forInRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forInRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forInRight.mjs deleted file mode 100644 index 20ff6eb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forInRight.mjs +++ /dev/null @@ -1,21 +0,0 @@ -import { identity } from '../../function/identity.mjs'; - -function forInRight(object, iteratee = identity) { - if (object == null) { - return object; - } - const keys = []; - for (const key in object) { - keys.push(key); - } - for (let i = keys.length - 1; i >= 0; i--) { - const key = keys[i]; - const result = iteratee(object[key], key, object); - if (result === false) { - break; - } - } - return object; -} - -export { forInRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwn.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwn.d.mts deleted file mode 100644 index 1c1943b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwn.d.mts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Iterates over an object's properties and calls the `iteratee` function for each property. - * - * It only iterates over the object's own properties, not including inherited properties or properties with `Symbol` keys. - * - * The `iteratee` function can terminate the iteration early by returning `false`. - * - * @template T - The type of the object. - * @param {T} object The object to iterate over. - * @param {(value: T[keyof T], key: string, collection: T) => any} [iteratee=identity] The function invoked per iteration. If not provided, the identity function will be used. - * @return {T} Returns object. - * - * @example - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * forOwn(new Foo(), function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ -declare function forOwn(object: T, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T; -/** - * Iterates over an object's properties and calls the `iteratee` function for each property. - * - * It only iterates over the object's own properties, not including inherited properties or properties with `Symbol` keys. - * - * The `iteratee` function can terminate the iteration early by returning `false`. - * - * @template T - The type of the object. - * @param {T | null | undefined} object The object to iterate over. - * @param {(value: T[keyof T], key: string, collection: T) => any} [iteratee=identity] The function invoked per iteration. If not provided, the identity function will be used. - * @return {T | null | undefined} Returns object. - * - * @example - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * forOwn(new Foo(), function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ -declare function forOwn(object: T | null | undefined, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T | null | undefined; - -export { forOwn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwn.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwn.d.ts deleted file mode 100644 index 1c1943b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwn.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Iterates over an object's properties and calls the `iteratee` function for each property. - * - * It only iterates over the object's own properties, not including inherited properties or properties with `Symbol` keys. - * - * The `iteratee` function can terminate the iteration early by returning `false`. - * - * @template T - The type of the object. - * @param {T} object The object to iterate over. - * @param {(value: T[keyof T], key: string, collection: T) => any} [iteratee=identity] The function invoked per iteration. If not provided, the identity function will be used. - * @return {T} Returns object. - * - * @example - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * forOwn(new Foo(), function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ -declare function forOwn(object: T, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T; -/** - * Iterates over an object's properties and calls the `iteratee` function for each property. - * - * It only iterates over the object's own properties, not including inherited properties or properties with `Symbol` keys. - * - * The `iteratee` function can terminate the iteration early by returning `false`. - * - * @template T - The type of the object. - * @param {T | null | undefined} object The object to iterate over. - * @param {(value: T[keyof T], key: string, collection: T) => any} [iteratee=identity] The function invoked per iteration. If not provided, the identity function will be used. - * @return {T | null | undefined} Returns object. - * - * @example - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * forOwn(new Foo(), function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ -declare function forOwn(object: T | null | undefined, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T | null | undefined; - -export { forOwn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwn.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwn.js deleted file mode 100644 index 1093ebb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwn.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keys = require('./keys.js'); -const identity = require('../../function/identity.js'); - -function forOwn(object, iteratee = identity.identity) { - if (object == null) { - return object; - } - const iterable = Object(object); - const keys$1 = keys.keys(object); - for (let i = 0; i < keys$1.length; ++i) { - const key = keys$1[i]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; -} - -exports.forOwn = forOwn; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwn.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwn.mjs deleted file mode 100644 index 952b3aa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwn.mjs +++ /dev/null @@ -1,19 +0,0 @@ -import { keys } from './keys.mjs'; -import { identity } from '../../function/identity.mjs'; - -function forOwn(object, iteratee = identity) { - if (object == null) { - return object; - } - const iterable = Object(object); - const keys$1 = keys(object); - for (let i = 0; i < keys$1.length; ++i) { - const key = keys$1[i]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; -} - -export { forOwn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwnRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwnRight.d.mts deleted file mode 100644 index 3683887..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwnRight.d.mts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Iterates over an object's properties in reverse order and calls the `iteratee` function for each property. - * - * It only iterates over the object's own properties, not including inherited properties or properties with `Symbol` keys. - * - * The `iteratee` function can terminate the iteration early by returning `false`. - * - * @template T - The type of the object. - * @param {T} object The object to iterate over. - * @param {(value: T[keyof T], key: string, collection: T) => any} [iteratee=identity] The function invoked per iteration. If not provided, the identity function will be used. - * @return {T} Returns object. - * - * @example - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * forOwnRight(new Foo(), function(value, key) { - * console.log(key); - * }); - * // => Logs 'b' then 'a' (iteration order is not guaranteed). - */ -declare function forOwnRight(object: T, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T; -/** - * Iterates over an object's properties in reverse order and calls the `iteratee` function for each property. - * - * It only iterates over the object's own properties, not including inherited properties or properties with `Symbol` keys. - * - * The `iteratee` function can terminate the iteration early by returning `false`. - * - * @template T - The type of the object. - * @param {T | null | undefined} object The object to iterate over. - * @param {(value: T[keyof T], key: string, collection: T) => any} [iteratee=identity] The function invoked per iteration. If not provided, the identity function will be used. - * @return {T | null | undefined} Returns object. - * - * @example - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * forOwnRight(new Foo(), function(value, key) { - * console.log(key); - * }); - * // => Logs 'b' then 'a' (iteration order is not guaranteed). - */ -declare function forOwnRight(object: T | null | undefined, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T | null | undefined; - -export { forOwnRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwnRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwnRight.d.ts deleted file mode 100644 index 3683887..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwnRight.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Iterates over an object's properties in reverse order and calls the `iteratee` function for each property. - * - * It only iterates over the object's own properties, not including inherited properties or properties with `Symbol` keys. - * - * The `iteratee` function can terminate the iteration early by returning `false`. - * - * @template T - The type of the object. - * @param {T} object The object to iterate over. - * @param {(value: T[keyof T], key: string, collection: T) => any} [iteratee=identity] The function invoked per iteration. If not provided, the identity function will be used. - * @return {T} Returns object. - * - * @example - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * forOwnRight(new Foo(), function(value, key) { - * console.log(key); - * }); - * // => Logs 'b' then 'a' (iteration order is not guaranteed). - */ -declare function forOwnRight(object: T, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T; -/** - * Iterates over an object's properties in reverse order and calls the `iteratee` function for each property. - * - * It only iterates over the object's own properties, not including inherited properties or properties with `Symbol` keys. - * - * The `iteratee` function can terminate the iteration early by returning `false`. - * - * @template T - The type of the object. - * @param {T | null | undefined} object The object to iterate over. - * @param {(value: T[keyof T], key: string, collection: T) => any} [iteratee=identity] The function invoked per iteration. If not provided, the identity function will be used. - * @return {T | null | undefined} Returns object. - * - * @example - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * forOwnRight(new Foo(), function(value, key) { - * console.log(key); - * }); - * // => Logs 'b' then 'a' (iteration order is not guaranteed). - */ -declare function forOwnRight(object: T | null | undefined, iteratee?: (value: T[keyof T], key: string, collection: T) => any): T | null | undefined; - -export { forOwnRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwnRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwnRight.js deleted file mode 100644 index d24e10c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwnRight.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keys = require('./keys.js'); -const identity = require('../../function/identity.js'); - -function forOwnRight(object, iteratee = identity.identity) { - if (object == null) { - return object; - } - const iterable = Object(object); - const keys$1 = keys.keys(object); - for (let i = keys$1.length - 1; i >= 0; --i) { - const key = keys$1[i]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; -} - -exports.forOwnRight = forOwnRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwnRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwnRight.mjs deleted file mode 100644 index 62bb95f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/forOwnRight.mjs +++ /dev/null @@ -1,19 +0,0 @@ -import { keys } from './keys.mjs'; -import { identity } from '../../function/identity.mjs'; - -function forOwnRight(object, iteratee = identity) { - if (object == null) { - return object; - } - const iterable = Object(object); - const keys$1 = keys(object); - for (let i = keys$1.length - 1; i >= 0; --i) { - const key = keys$1[i]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; -} - -export { forOwnRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/fromPairs.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/fromPairs.d.mts deleted file mode 100644 index 618fef7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/fromPairs.d.mts +++ /dev/null @@ -1,28 +0,0 @@ -type PropertyName = string | number | symbol; -/** - * Converts an array of key-value pairs into an object. - * - * @template T - The type of the values. - * @param {ArrayLike<[PropertyName, T]> | null | undefined} pairs - An array of key-value pairs. - * @returns {Record} - An object where keys are strings and values are of type T. - * - * @example - * const pairs = [['a', 1], ['b', 2]]; - * const result = fromPairs(pairs); - * // => { a: 1, b: 2 } - */ -declare function fromPairs(pairs: ArrayLike<[PropertyName, T]> | null | undefined): Record; -/** - * Converts an array of key-value pairs into an object. - * - * @param {ArrayLike | null | undefined} pairs - An array of key-value pairs. - * @returns {Record} - An object where keys are strings and values can be any type. - * - * @example - * const pairs = [['a', 1], ['b', 'hello']]; - * const result = fromPairs(pairs); - * // => { a: 1, b: 'hello' } - */ -declare function fromPairs(pairs: ArrayLike | null | undefined): Record; - -export { fromPairs }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/fromPairs.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/fromPairs.d.ts deleted file mode 100644 index 618fef7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/fromPairs.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -type PropertyName = string | number | symbol; -/** - * Converts an array of key-value pairs into an object. - * - * @template T - The type of the values. - * @param {ArrayLike<[PropertyName, T]> | null | undefined} pairs - An array of key-value pairs. - * @returns {Record} - An object where keys are strings and values are of type T. - * - * @example - * const pairs = [['a', 1], ['b', 2]]; - * const result = fromPairs(pairs); - * // => { a: 1, b: 2 } - */ -declare function fromPairs(pairs: ArrayLike<[PropertyName, T]> | null | undefined): Record; -/** - * Converts an array of key-value pairs into an object. - * - * @param {ArrayLike | null | undefined} pairs - An array of key-value pairs. - * @returns {Record} - An object where keys are strings and values can be any type. - * - * @example - * const pairs = [['a', 1], ['b', 'hello']]; - * const result = fromPairs(pairs); - * // => { a: 1, b: 'hello' } - */ -declare function fromPairs(pairs: ArrayLike | null | undefined): Record; - -export { fromPairs }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/fromPairs.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/fromPairs.js deleted file mode 100644 index 63b8dfa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/fromPairs.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArrayLike = require('../predicate/isArrayLike.js'); - -function fromPairs(pairs) { - if (!isArrayLike.isArrayLike(pairs)) { - return {}; - } - const result = {}; - for (let i = 0; i < pairs.length; i++) { - const [key, value] = pairs[i]; - result[key] = value; - } - return result; -} - -exports.fromPairs = fromPairs; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/fromPairs.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/fromPairs.mjs deleted file mode 100644 index b2d058c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/fromPairs.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import { isArrayLike } from '../predicate/isArrayLike.mjs'; - -function fromPairs(pairs) { - if (!isArrayLike(pairs)) { - return {}; - } - const result = {}; - for (let i = 0; i < pairs.length; i++) { - const [key, value] = pairs[i]; - result[key] = value; - } - return result; -} - -export { fromPairs }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functions.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functions.d.mts deleted file mode 100644 index d8123e4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functions.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Creates an array of property names from an object where the property values are functions. - * - * @param {any} object - The object to inspect. - * @returns {string[]} - An array of function property names. - * - * @example - * function Foo() { - * this.a = () => 'a'; - * this.b = () => 'b'; - * } - * - * Foo.prototype.c = () => 'c'; - * - * functions(new Foo); - * // => ['a', 'b'] - */ -declare function functions(object: any): string[]; - -export { functions }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functions.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functions.d.ts deleted file mode 100644 index d8123e4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functions.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Creates an array of property names from an object where the property values are functions. - * - * @param {any} object - The object to inspect. - * @returns {string[]} - An array of function property names. - * - * @example - * function Foo() { - * this.a = () => 'a'; - * this.b = () => 'b'; - * } - * - * Foo.prototype.c = () => 'c'; - * - * functions(new Foo); - * // => ['a', 'b'] - */ -declare function functions(object: any): string[]; - -export { functions }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functions.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functions.js deleted file mode 100644 index 907153d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functions.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keys = require('./keys.js'); - -function functions(object) { - if (object == null) { - return []; - } - return keys.keys(object).filter(key => typeof object[key] === 'function'); -} - -exports.functions = functions; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functions.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functions.mjs deleted file mode 100644 index c71eab0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functions.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { keys } from './keys.mjs'; - -function functions(object) { - if (object == null) { - return []; - } - return keys(object).filter(key => typeof object[key] === 'function'); -} - -export { functions }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functionsIn.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functionsIn.d.mts deleted file mode 100644 index 642b357..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functionsIn.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Returns an array of property names whose values are functions, including inherited properties. - * - * @param {*} object The object to inspect. - * @returns {Array} Returns the function names. - * @example - * - * function Foo() { - * this.a = function() { return 'a'; }; - * this.b = function() { return 'b'; }; - * } - * - * Foo.prototype.c = function() { return 'c'; }; - * - * functionsIn(new Foo); - * // => ['a', 'b', 'c'] - */ -declare function functionsIn(object: any): string[]; - -export { functionsIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functionsIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functionsIn.d.ts deleted file mode 100644 index 642b357..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functionsIn.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Returns an array of property names whose values are functions, including inherited properties. - * - * @param {*} object The object to inspect. - * @returns {Array} Returns the function names. - * @example - * - * function Foo() { - * this.a = function() { return 'a'; }; - * this.b = function() { return 'b'; }; - * } - * - * Foo.prototype.c = function() { return 'c'; }; - * - * functionsIn(new Foo); - * // => ['a', 'b', 'c'] - */ -declare function functionsIn(object: any): string[]; - -export { functionsIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functionsIn.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functionsIn.js deleted file mode 100644 index a8325a7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functionsIn.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isFunction = require('../../predicate/isFunction.js'); - -function functionsIn(object) { - if (object == null) { - return []; - } - const result = []; - for (const key in object) { - if (isFunction.isFunction(object[key])) { - result.push(key); - } - } - return result; -} - -exports.functionsIn = functionsIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functionsIn.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functionsIn.mjs deleted file mode 100644 index 228467c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/functionsIn.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { isFunction } from '../../predicate/isFunction.mjs'; - -function functionsIn(object) { - if (object == null) { - return []; - } - const result = []; - for (const key in object) { - if (isFunction(object[key])) { - result.push(key); - } - } - return result; -} - -export { functionsIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/get.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/get.d.mts deleted file mode 100644 index 9ba9095..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/get.d.mts +++ /dev/null @@ -1,327 +0,0 @@ -import { GetFieldType } from '../_internal/GetFieldType.mjs'; -import { PropertyPath } from '../_internal/PropertyPath.mjs'; - -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey - * @param {TObject} object - The object to query. - * @param {TKey | [TKey]} path - The path of the property to get. - * @returns {TObject[TKey]} Returns the resolved value. - * - * @example - * const object = { 'a': [{ 'b': { 'c': 3 } }] }; - * get(object, 'a[0].b.c'); - * // => 3 - */ -declare function get(object: TObject, path: TKey | [TKey]): TObject[TKey]; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey - * @param {TObject | null | undefined} object - The object to query. - * @param {TKey | [TKey]} path - The path of the property to get. - * @returns {TObject[TKey] | undefined} Returns the resolved value. - * - * @example - * const object = { 'a': [{ 'b': { 'c': 3 } }] }; - * get(object, 'a[0].b.c'); - * // => 3 - */ -declare function get(object: TObject | null | undefined, path: TKey | [TKey]): TObject[TKey] | undefined; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey - * @template TDefault - * @param {TObject | null | undefined} object - The object to query. - * @param {TKey | [TKey]} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {Exclude | TDefault} Returns the resolved value. - * - * @example - * const object = { 'a': [{ 'b': { 'c': 3 } }] }; - * get(object, 'a[0].b.c', 'default'); - * // => 3 - */ -declare function get(object: TObject | null | undefined, path: TKey | [TKey], defaultValue: TDefault): Exclude | TDefault; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @param {TObject} object - The object to query. - * @param {[TKey1, TKey2]} path - The path of the property to get. - * @returns {TObject[TKey1][TKey2]} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': 2 } }; - * get(object, ['a', 'b']); - * // => 2 - */ -declare function get(object: TObject, path: [TKey1, TKey2]): TObject[TKey1][TKey2]; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @param {TObject | null | undefined} object - The object to query. - * @param {[TKey1, TKey2]} path - The path of the property to get. - * @returns {NonNullable[TKey2] | undefined} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': 2 } }; - * get(object, ['a', 'b']); - * // => 2 - */ -declare function get>(object: TObject | null | undefined, path: [TKey1, TKey2]): NonNullable[TKey2] | undefined; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TDefault - * @param {TObject | null | undefined} object - The object to query. - * @param {[TKey1, TKey2]} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {Exclude[TKey2], undefined> | TDefault} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': 2 } }; - * get(object, ['a', 'b'], 'default'); - * // => 2 - */ -declare function get, TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2], defaultValue: TDefault): Exclude[TKey2], undefined> | TDefault; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TKey3 - * @param {TObject} object - The object to query. - * @param {[TKey1, TKey2, TKey3]} path - The path of the property to get. - * @returns {TObject[TKey1][TKey2][TKey3]} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': { 'c': 3 } } }; - * get(object, ['a', 'b', 'c']); - * // => 3 - */ -declare function get(object: TObject, path: [TKey1, TKey2, TKey3]): TObject[TKey1][TKey2][TKey3]; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TKey3 - * @param {TObject | null | undefined} object - The object to query. - * @param {[TKey1, TKey2, TKey3]} path - The path of the property to get. - * @returns {NonNullable[TKey2]>[TKey3] | undefined} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': { 'c': 3 } } }; - * get(object, ['a', 'b', 'c']); - * // => 3 - */ -declare function get, TKey3 extends keyof NonNullable[TKey2]>>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3]): NonNullable[TKey2]>[TKey3] | undefined; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TKey3 - * @template TDefault - * @param {TObject | null | undefined} object - The object to query. - * @param {[TKey1, TKey2, TKey3]} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {Exclude[TKey2]>[TKey3], undefined> | TDefault} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': { 'c': 3 } } }; - * get(object, ['a', 'b', 'c'], 'default'); - * // => 3 - */ -declare function get, TKey3 extends keyof NonNullable[TKey2]>, TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3], defaultValue: TDefault): Exclude[TKey2]>[TKey3], undefined> | TDefault; -/** - * Gets the value at path of object. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TKey3 - * @template TKey4 - * @param {TObject} object - The object to query. - * @param {[TKey1, TKey2, TKey3, TKey4]} path - The path of the property to get. - * @returns {TObject[TKey1][TKey2][TKey3][TKey4]} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': { 'c': { 'd': 4 } } } }; - * get(object, ['a', 'b', 'c', 'd']); - * // => 4 - */ -declare function get(object: TObject, path: [TKey1, TKey2, TKey3, TKey4]): TObject[TKey1][TKey2][TKey3][TKey4]; -/** - * Gets the value at path of object. If the resolved value is undefined, undefined is returned. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TKey3 - * @template TKey4 - * @param {TObject | null | undefined} object - The object to query. - * @param {[TKey1, TKey2, TKey3, TKey4]} path - The path of the property to get. - * @returns {NonNullable[TKey2]>[TKey3]>[TKey4] | undefined} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': { 'c': { 'd': 4 } } } }; - * get(object, ['a', 'b', 'c', 'd']); - * // => 4 - */ -declare function get, TKey3 extends keyof NonNullable[TKey2]>, TKey4 extends keyof NonNullable[TKey2]>[TKey3]>>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3, TKey4]): NonNullable[TKey2]>[TKey3]>[TKey4] | undefined; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TKey3 - * @template TKey4 - * @template TDefault - * @param {TObject | null | undefined} object - The object to query. - * @param {[TKey1, TKey2, TKey3, TKey4]} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {Exclude[TKey2]>[TKey3]>[TKey4], undefined> | TDefault} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': { 'c': { 'd': 4 } } } }; - * get(object, ['a', 'b', 'c', 'd'], 'default'); - * // => 4 - */ -declare function get, TKey3 extends keyof NonNullable[TKey2]>, TKey4 extends keyof NonNullable[TKey2]>[TKey3]>, TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3, TKey4], defaultValue: TDefault): Exclude[TKey2]>[TKey3]>[TKey4], undefined> | TDefault; -/** - * Gets the value at path of object. - * - * @template T - * @param {Record} object - The object to query. - * @param {number} path - The path of the property to get. - * @returns {T} Returns the resolved value. - * - * @example - * const object = { 0: 'a', 1: 'b', 2: 'c' }; - * get(object, 1); - * // => 'b' - */ -declare function get(object: Record, path: number): T; -/** - * Gets the value at path of object. If the resolved value is undefined, undefined is returned. - * - * @template T - * @param {Record | null | undefined} object - The object to query. - * @param {number} path - The path of the property to get. - * @returns {T | undefined} Returns the resolved value. - * - * @example - * const object = { 0: 'a', 1: 'b', 2: 'c' }; - * get(object, 1); - * // => 'b' - */ -declare function get(object: Record | null | undefined, path: number): T | undefined; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template T - * @template TDefault - * @param {Record | null | undefined} object - The object to query. - * @param {number} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {T | TDefault} Returns the resolved value. - * - * @example - * const object = { 0: 'a', 1: 'b', 2: 'c' }; - * get(object, 1, 'default'); - * // => 'b' - */ -declare function get(object: Record | null | undefined, path: number, defaultValue: TDefault): T | TDefault; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TDefault - * @param {null | undefined} object - The object to query. - * @param {PropertyPath} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {TDefault} Returns the default value. - * - * @example - * get(null, 'a.b.c', 'default'); - * // => 'default' - */ -declare function get(object: null | undefined, path: PropertyPath, defaultValue: TDefault): TDefault; -/** - * Gets the value at path of object. If the resolved value is undefined, undefined is returned. - * - * @param {null | undefined} object - The object to query. - * @param {PropertyPath} path - The path of the property to get. - * @returns {undefined} Returns undefined. - * - * @example - * get(null, 'a.b.c'); - * // => undefined - */ -declare function get(object: null | undefined, path: PropertyPath): undefined; -/** - * Gets the value at path of object using type-safe path. - * - * @template TObject - * @template TPath - * @param {TObject} data - The object to query. - * @param {TPath} path - The path of the property to get. - * @returns {string extends TPath ? any : GetFieldType} Returns the resolved value. - * - * @example - * const object = { a: { b: { c: 1 } } }; - * get(object, 'a.b.c'); - * // => 1 - */ -declare function get(data: TObject, path: TPath): string extends TPath ? any : GetFieldType; -/** - * Gets the value at path of object using type-safe path. If the resolved value is undefined, the defaultValue is returned. - * - * @template TObject - * @template TPath - * @template TDefault - * @param {TObject} data - The object to query. - * @param {TPath} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {Exclude, null | undefined> | TDefault} Returns the resolved value. - * - * @example - * const object = { a: { b: { c: 1 } } }; - * get(object, 'a.b.d', 'default'); - * // => 'default' - */ -declare function get>(data: TObject, path: TPath, defaultValue: TDefault): Exclude, null | undefined> | TDefault; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned. - * - * @param {any} object - The object to query. - * @param {PropertyPath} path - The path of the property to get. - * @param {any} [defaultValue] - The value returned if the resolved value is undefined. - * @returns {any} Returns the resolved value. - * - * @example - * const object = { a: { b: { c: 1 } } }; - * get(object, 'a.b.c', 'default'); - * // => 1 - */ -declare function get(object: any, path: PropertyPath, defaultValue?: any): any; - -export { get }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/get.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/get.d.ts deleted file mode 100644 index 0871543..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/get.d.ts +++ /dev/null @@ -1,327 +0,0 @@ -import { GetFieldType } from '../_internal/GetFieldType.js'; -import { PropertyPath } from '../_internal/PropertyPath.js'; - -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey - * @param {TObject} object - The object to query. - * @param {TKey | [TKey]} path - The path of the property to get. - * @returns {TObject[TKey]} Returns the resolved value. - * - * @example - * const object = { 'a': [{ 'b': { 'c': 3 } }] }; - * get(object, 'a[0].b.c'); - * // => 3 - */ -declare function get(object: TObject, path: TKey | [TKey]): TObject[TKey]; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey - * @param {TObject | null | undefined} object - The object to query. - * @param {TKey | [TKey]} path - The path of the property to get. - * @returns {TObject[TKey] | undefined} Returns the resolved value. - * - * @example - * const object = { 'a': [{ 'b': { 'c': 3 } }] }; - * get(object, 'a[0].b.c'); - * // => 3 - */ -declare function get(object: TObject | null | undefined, path: TKey | [TKey]): TObject[TKey] | undefined; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey - * @template TDefault - * @param {TObject | null | undefined} object - The object to query. - * @param {TKey | [TKey]} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {Exclude | TDefault} Returns the resolved value. - * - * @example - * const object = { 'a': [{ 'b': { 'c': 3 } }] }; - * get(object, 'a[0].b.c', 'default'); - * // => 3 - */ -declare function get(object: TObject | null | undefined, path: TKey | [TKey], defaultValue: TDefault): Exclude | TDefault; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @param {TObject} object - The object to query. - * @param {[TKey1, TKey2]} path - The path of the property to get. - * @returns {TObject[TKey1][TKey2]} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': 2 } }; - * get(object, ['a', 'b']); - * // => 2 - */ -declare function get(object: TObject, path: [TKey1, TKey2]): TObject[TKey1][TKey2]; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @param {TObject | null | undefined} object - The object to query. - * @param {[TKey1, TKey2]} path - The path of the property to get. - * @returns {NonNullable[TKey2] | undefined} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': 2 } }; - * get(object, ['a', 'b']); - * // => 2 - */ -declare function get>(object: TObject | null | undefined, path: [TKey1, TKey2]): NonNullable[TKey2] | undefined; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TDefault - * @param {TObject | null | undefined} object - The object to query. - * @param {[TKey1, TKey2]} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {Exclude[TKey2], undefined> | TDefault} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': 2 } }; - * get(object, ['a', 'b'], 'default'); - * // => 2 - */ -declare function get, TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2], defaultValue: TDefault): Exclude[TKey2], undefined> | TDefault; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TKey3 - * @param {TObject} object - The object to query. - * @param {[TKey1, TKey2, TKey3]} path - The path of the property to get. - * @returns {TObject[TKey1][TKey2][TKey3]} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': { 'c': 3 } } }; - * get(object, ['a', 'b', 'c']); - * // => 3 - */ -declare function get(object: TObject, path: [TKey1, TKey2, TKey3]): TObject[TKey1][TKey2][TKey3]; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TKey3 - * @param {TObject | null | undefined} object - The object to query. - * @param {[TKey1, TKey2, TKey3]} path - The path of the property to get. - * @returns {NonNullable[TKey2]>[TKey3] | undefined} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': { 'c': 3 } } }; - * get(object, ['a', 'b', 'c']); - * // => 3 - */ -declare function get, TKey3 extends keyof NonNullable[TKey2]>>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3]): NonNullable[TKey2]>[TKey3] | undefined; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TKey3 - * @template TDefault - * @param {TObject | null | undefined} object - The object to query. - * @param {[TKey1, TKey2, TKey3]} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {Exclude[TKey2]>[TKey3], undefined> | TDefault} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': { 'c': 3 } } }; - * get(object, ['a', 'b', 'c'], 'default'); - * // => 3 - */ -declare function get, TKey3 extends keyof NonNullable[TKey2]>, TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3], defaultValue: TDefault): Exclude[TKey2]>[TKey3], undefined> | TDefault; -/** - * Gets the value at path of object. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TKey3 - * @template TKey4 - * @param {TObject} object - The object to query. - * @param {[TKey1, TKey2, TKey3, TKey4]} path - The path of the property to get. - * @returns {TObject[TKey1][TKey2][TKey3][TKey4]} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': { 'c': { 'd': 4 } } } }; - * get(object, ['a', 'b', 'c', 'd']); - * // => 4 - */ -declare function get(object: TObject, path: [TKey1, TKey2, TKey3, TKey4]): TObject[TKey1][TKey2][TKey3][TKey4]; -/** - * Gets the value at path of object. If the resolved value is undefined, undefined is returned. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TKey3 - * @template TKey4 - * @param {TObject | null | undefined} object - The object to query. - * @param {[TKey1, TKey2, TKey3, TKey4]} path - The path of the property to get. - * @returns {NonNullable[TKey2]>[TKey3]>[TKey4] | undefined} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': { 'c': { 'd': 4 } } } }; - * get(object, ['a', 'b', 'c', 'd']); - * // => 4 - */ -declare function get, TKey3 extends keyof NonNullable[TKey2]>, TKey4 extends keyof NonNullable[TKey2]>[TKey3]>>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3, TKey4]): NonNullable[TKey2]>[TKey3]>[TKey4] | undefined; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TObject - * @template TKey1 - * @template TKey2 - * @template TKey3 - * @template TKey4 - * @template TDefault - * @param {TObject | null | undefined} object - The object to query. - * @param {[TKey1, TKey2, TKey3, TKey4]} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {Exclude[TKey2]>[TKey3]>[TKey4], undefined> | TDefault} Returns the resolved value. - * - * @example - * const object = { 'a': { 'b': { 'c': { 'd': 4 } } } }; - * get(object, ['a', 'b', 'c', 'd'], 'default'); - * // => 4 - */ -declare function get, TKey3 extends keyof NonNullable[TKey2]>, TKey4 extends keyof NonNullable[TKey2]>[TKey3]>, TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3, TKey4], defaultValue: TDefault): Exclude[TKey2]>[TKey3]>[TKey4], undefined> | TDefault; -/** - * Gets the value at path of object. - * - * @template T - * @param {Record} object - The object to query. - * @param {number} path - The path of the property to get. - * @returns {T} Returns the resolved value. - * - * @example - * const object = { 0: 'a', 1: 'b', 2: 'c' }; - * get(object, 1); - * // => 'b' - */ -declare function get(object: Record, path: number): T; -/** - * Gets the value at path of object. If the resolved value is undefined, undefined is returned. - * - * @template T - * @param {Record | null | undefined} object - The object to query. - * @param {number} path - The path of the property to get. - * @returns {T | undefined} Returns the resolved value. - * - * @example - * const object = { 0: 'a', 1: 'b', 2: 'c' }; - * get(object, 1); - * // => 'b' - */ -declare function get(object: Record | null | undefined, path: number): T | undefined; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template T - * @template TDefault - * @param {Record | null | undefined} object - The object to query. - * @param {number} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {T | TDefault} Returns the resolved value. - * - * @example - * const object = { 0: 'a', 1: 'b', 2: 'c' }; - * get(object, 1, 'default'); - * // => 'b' - */ -declare function get(object: Record | null | undefined, path: number, defaultValue: TDefault): T | TDefault; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. - * - * @template TDefault - * @param {null | undefined} object - The object to query. - * @param {PropertyPath} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {TDefault} Returns the default value. - * - * @example - * get(null, 'a.b.c', 'default'); - * // => 'default' - */ -declare function get(object: null | undefined, path: PropertyPath, defaultValue: TDefault): TDefault; -/** - * Gets the value at path of object. If the resolved value is undefined, undefined is returned. - * - * @param {null | undefined} object - The object to query. - * @param {PropertyPath} path - The path of the property to get. - * @returns {undefined} Returns undefined. - * - * @example - * get(null, 'a.b.c'); - * // => undefined - */ -declare function get(object: null | undefined, path: PropertyPath): undefined; -/** - * Gets the value at path of object using type-safe path. - * - * @template TObject - * @template TPath - * @param {TObject} data - The object to query. - * @param {TPath} path - The path of the property to get. - * @returns {string extends TPath ? any : GetFieldType} Returns the resolved value. - * - * @example - * const object = { a: { b: { c: 1 } } }; - * get(object, 'a.b.c'); - * // => 1 - */ -declare function get(data: TObject, path: TPath): string extends TPath ? any : GetFieldType; -/** - * Gets the value at path of object using type-safe path. If the resolved value is undefined, the defaultValue is returned. - * - * @template TObject - * @template TPath - * @template TDefault - * @param {TObject} data - The object to query. - * @param {TPath} path - The path of the property to get. - * @param {TDefault} defaultValue - The value returned if the resolved value is undefined. - * @returns {Exclude, null | undefined> | TDefault} Returns the resolved value. - * - * @example - * const object = { a: { b: { c: 1 } } }; - * get(object, 'a.b.d', 'default'); - * // => 'default' - */ -declare function get>(data: TObject, path: TPath, defaultValue: TDefault): Exclude, null | undefined> | TDefault; -/** - * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned. - * - * @param {any} object - The object to query. - * @param {PropertyPath} path - The path of the property to get. - * @param {any} [defaultValue] - The value returned if the resolved value is undefined. - * @returns {any} Returns the resolved value. - * - * @example - * const object = { a: { b: { c: 1 } } }; - * get(object, 'a.b.c', 'default'); - * // => 1 - */ -declare function get(object: any, path: PropertyPath, defaultValue?: any): any; - -export { get }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/get.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/get.js deleted file mode 100644 index 6c25b4f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/get.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isUnsafeProperty = require('../../_internal/isUnsafeProperty.js'); -const isDeepKey = require('../_internal/isDeepKey.js'); -const toKey = require('../_internal/toKey.js'); -const toPath = require('../util/toPath.js'); - -function get(object, path, defaultValue) { - if (object == null) { - return defaultValue; - } - switch (typeof path) { - case 'string': { - if (isUnsafeProperty.isUnsafeProperty(path)) { - return defaultValue; - } - const result = object[path]; - if (result === undefined) { - if (isDeepKey.isDeepKey(path)) { - return get(object, toPath.toPath(path), defaultValue); - } - else { - return defaultValue; - } - } - return result; - } - case 'number': - case 'symbol': { - if (typeof path === 'number') { - path = toKey.toKey(path); - } - const result = object[path]; - if (result === undefined) { - return defaultValue; - } - return result; - } - default: { - if (Array.isArray(path)) { - return getWithPath(object, path, defaultValue); - } - if (Object.is(path?.valueOf(), -0)) { - path = '-0'; - } - else { - path = String(path); - } - if (isUnsafeProperty.isUnsafeProperty(path)) { - return defaultValue; - } - const result = object[path]; - if (result === undefined) { - return defaultValue; - } - return result; - } - } -} -function getWithPath(object, path, defaultValue) { - if (path.length === 0) { - return defaultValue; - } - let current = object; - for (let index = 0; index < path.length; index++) { - if (current == null) { - return defaultValue; - } - if (isUnsafeProperty.isUnsafeProperty(path[index])) { - return defaultValue; - } - current = current[path[index]]; - } - if (current === undefined) { - return defaultValue; - } - return current; -} - -exports.get = get; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/get.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/get.mjs deleted file mode 100644 index 925b4b6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/get.mjs +++ /dev/null @@ -1,78 +0,0 @@ -import { isUnsafeProperty } from '../../_internal/isUnsafeProperty.mjs'; -import { isDeepKey } from '../_internal/isDeepKey.mjs'; -import { toKey } from '../_internal/toKey.mjs'; -import { toPath } from '../util/toPath.mjs'; - -function get(object, path, defaultValue) { - if (object == null) { - return defaultValue; - } - switch (typeof path) { - case 'string': { - if (isUnsafeProperty(path)) { - return defaultValue; - } - const result = object[path]; - if (result === undefined) { - if (isDeepKey(path)) { - return get(object, toPath(path), defaultValue); - } - else { - return defaultValue; - } - } - return result; - } - case 'number': - case 'symbol': { - if (typeof path === 'number') { - path = toKey(path); - } - const result = object[path]; - if (result === undefined) { - return defaultValue; - } - return result; - } - default: { - if (Array.isArray(path)) { - return getWithPath(object, path, defaultValue); - } - if (Object.is(path?.valueOf(), -0)) { - path = '-0'; - } - else { - path = String(path); - } - if (isUnsafeProperty(path)) { - return defaultValue; - } - const result = object[path]; - if (result === undefined) { - return defaultValue; - } - return result; - } - } -} -function getWithPath(object, path, defaultValue) { - if (path.length === 0) { - return defaultValue; - } - let current = object; - for (let index = 0; index < path.length; index++) { - if (current == null) { - return defaultValue; - } - if (isUnsafeProperty(path[index])) { - return defaultValue; - } - current = current[path[index]]; - } - if (current === undefined) { - return defaultValue; - } - return current; -} - -export { get }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/has.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/has.d.mts deleted file mode 100644 index e306a03..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/has.d.mts +++ /dev/null @@ -1,52 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.mjs'; - -/** - * Checks if a given path exists within an object. - * - * @template T - * @template K - * @param {T} object - The object to query. - * @param {K} path - The path to check. - * @returns {object is T & { [P in K]: P extends keyof T ? T[P] : Record extends T ? T[keyof T] : unknown } & { [key: symbol]: unknown }} Returns a type guard indicating if the path exists in the object. - * - * @example - * const obj = { a: 1, b: { c: 2 } }; - * - * if (has(obj, 'a')) { - * console.log(obj.a); // TypeScript knows obj.a exists - * } - * - * if (has(obj, 'b')) { - * console.log(obj.b.c); // TypeScript knows obj.b exists - * } - */ -declare function has(object: T, path: K): object is T & { - [P in K]: P extends keyof T ? T[P] : Record extends T ? T[keyof T] : unknown; -} & { - [key: symbol]: unknown; -}; -/** - * Checks if a given path exists within an object. - * - * @template T - * @param {T} object - The object to query. - * @param {PropertyPath} path - The path to check. This can be a single property key, - * an array of property keys, or a string representing a deep path. - * @returns {boolean} Returns `true` if the path exists in the object, `false` otherwise. - * - * @example - * const obj = { a: { b: { c: 3 } } }; - * - * has(obj, 'a'); // true - * has(obj, ['a', 'b']); // true - * has(obj, ['a', 'b', 'c']); // true - * has(obj, 'a.b.c'); // true - * has(obj, 'a.b.d'); // false - * has(obj, ['a', 'b', 'c', 'd']); // false - * has([], 0); // false - * has([1, 2, 3], 2); // true - * has([1, 2, 3], 5); // false - */ -declare function has(object: T, path: PropertyPath): boolean; - -export { has }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/has.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/has.d.ts deleted file mode 100644 index 38f2070..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/has.d.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.js'; - -/** - * Checks if a given path exists within an object. - * - * @template T - * @template K - * @param {T} object - The object to query. - * @param {K} path - The path to check. - * @returns {object is T & { [P in K]: P extends keyof T ? T[P] : Record extends T ? T[keyof T] : unknown } & { [key: symbol]: unknown }} Returns a type guard indicating if the path exists in the object. - * - * @example - * const obj = { a: 1, b: { c: 2 } }; - * - * if (has(obj, 'a')) { - * console.log(obj.a); // TypeScript knows obj.a exists - * } - * - * if (has(obj, 'b')) { - * console.log(obj.b.c); // TypeScript knows obj.b exists - * } - */ -declare function has(object: T, path: K): object is T & { - [P in K]: P extends keyof T ? T[P] : Record extends T ? T[keyof T] : unknown; -} & { - [key: symbol]: unknown; -}; -/** - * Checks if a given path exists within an object. - * - * @template T - * @param {T} object - The object to query. - * @param {PropertyPath} path - The path to check. This can be a single property key, - * an array of property keys, or a string representing a deep path. - * @returns {boolean} Returns `true` if the path exists in the object, `false` otherwise. - * - * @example - * const obj = { a: { b: { c: 3 } } }; - * - * has(obj, 'a'); // true - * has(obj, ['a', 'b']); // true - * has(obj, ['a', 'b', 'c']); // true - * has(obj, 'a.b.c'); // true - * has(obj, 'a.b.d'); // false - * has(obj, ['a', 'b', 'c', 'd']); // false - * has([], 0); // false - * has([1, 2, 3], 2); // true - * has([1, 2, 3], 5); // false - */ -declare function has(object: T, path: PropertyPath): boolean; - -export { has }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/has.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/has.js deleted file mode 100644 index 2cda534..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/has.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isDeepKey = require('../_internal/isDeepKey.js'); -const isIndex = require('../_internal/isIndex.js'); -const isArguments = require('../predicate/isArguments.js'); -const toPath = require('../util/toPath.js'); - -function has(object, path) { - let resolvedPath; - if (Array.isArray(path)) { - resolvedPath = path; - } - else if (typeof path === 'string' && isDeepKey.isDeepKey(path) && object?.[path] == null) { - resolvedPath = toPath.toPath(path); - } - else { - resolvedPath = [path]; - } - if (resolvedPath.length === 0) { - return false; - } - let current = object; - for (let i = 0; i < resolvedPath.length; i++) { - const key = resolvedPath[i]; - if (current == null || !Object.hasOwn(current, key)) { - const isSparseIndex = (Array.isArray(current) || isArguments.isArguments(current)) && isIndex.isIndex(key) && key < current.length; - if (!isSparseIndex) { - return false; - } - } - current = current[key]; - } - return true; -} - -exports.has = has; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/has.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/has.mjs deleted file mode 100644 index eec9020..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/has.mjs +++ /dev/null @@ -1,34 +0,0 @@ -import { isDeepKey } from '../_internal/isDeepKey.mjs'; -import { isIndex } from '../_internal/isIndex.mjs'; -import { isArguments } from '../predicate/isArguments.mjs'; -import { toPath } from '../util/toPath.mjs'; - -function has(object, path) { - let resolvedPath; - if (Array.isArray(path)) { - resolvedPath = path; - } - else if (typeof path === 'string' && isDeepKey(path) && object?.[path] == null) { - resolvedPath = toPath(path); - } - else { - resolvedPath = [path]; - } - if (resolvedPath.length === 0) { - return false; - } - let current = object; - for (let i = 0; i < resolvedPath.length; i++) { - const key = resolvedPath[i]; - if (current == null || !Object.hasOwn(current, key)) { - const isSparseIndex = (Array.isArray(current) || isArguments(current)) && isIndex(key) && key < current.length; - if (!isSparseIndex) { - return false; - } - } - current = current[key]; - } - return true; -} - -export { has }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/hasIn.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/hasIn.d.mts deleted file mode 100644 index c0a515a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/hasIn.d.mts +++ /dev/null @@ -1,43 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.mjs'; - -/** - * Checks if a given path exists in an object, **including inherited properties**. - * - * You can provide the path as a single property key, an array of property keys, - * or a string representing a deep path. - * - * Unlike `has`, which only checks for own properties, `hasIn` also checks for properties - * in the prototype chain. - * - * If the path is an index and the object is an array or an arguments object, the function will verify - * if the index is valid and within the bounds of the array or arguments object, even if the array or - * arguments object is sparse (i.e., not all indexes are defined). - * - * @template T - * @param {T} object - The object to query. - * @param {PropertyPath} path - The path to check. This can be a single property key, - * an array of property keys, or a string representing a deep path. - * @returns {boolean} Returns `true` if the path exists (own or inherited), `false` otherwise. - * - * @example - * - * const obj = { a: { b: { c: 3 } } }; - * - * hasIn(obj, 'a'); // true - * hasIn(obj, ['a', 'b']); // true - * hasIn(obj, ['a', 'b', 'c']); // true - * hasIn(obj, 'a.b.c'); // true - * hasIn(obj, 'a.b.d'); // false - * hasIn(obj, ['a', 'b', 'c', 'd']); // false - * - * // Example with inherited properties: - * function Rectangle() {} - * Rectangle.prototype.area = function() {}; - * - * const rect = new Rectangle(); - * hasIn(rect, 'area'); // true - * has(rect, 'area'); // false - has only checks own properties - */ -declare function hasIn(object: T, path: PropertyPath): boolean; - -export { hasIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/hasIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/hasIn.d.ts deleted file mode 100644 index 4e47c5e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/hasIn.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.js'; - -/** - * Checks if a given path exists in an object, **including inherited properties**. - * - * You can provide the path as a single property key, an array of property keys, - * or a string representing a deep path. - * - * Unlike `has`, which only checks for own properties, `hasIn` also checks for properties - * in the prototype chain. - * - * If the path is an index and the object is an array or an arguments object, the function will verify - * if the index is valid and within the bounds of the array or arguments object, even if the array or - * arguments object is sparse (i.e., not all indexes are defined). - * - * @template T - * @param {T} object - The object to query. - * @param {PropertyPath} path - The path to check. This can be a single property key, - * an array of property keys, or a string representing a deep path. - * @returns {boolean} Returns `true` if the path exists (own or inherited), `false` otherwise. - * - * @example - * - * const obj = { a: { b: { c: 3 } } }; - * - * hasIn(obj, 'a'); // true - * hasIn(obj, ['a', 'b']); // true - * hasIn(obj, ['a', 'b', 'c']); // true - * hasIn(obj, 'a.b.c'); // true - * hasIn(obj, 'a.b.d'); // false - * hasIn(obj, ['a', 'b', 'c', 'd']); // false - * - * // Example with inherited properties: - * function Rectangle() {} - * Rectangle.prototype.area = function() {}; - * - * const rect = new Rectangle(); - * hasIn(rect, 'area'); // true - * has(rect, 'area'); // false - has only checks own properties - */ -declare function hasIn(object: T, path: PropertyPath): boolean; - -export { hasIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/hasIn.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/hasIn.js deleted file mode 100644 index 6694db7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/hasIn.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isDeepKey = require('../_internal/isDeepKey.js'); -const isIndex = require('../_internal/isIndex.js'); -const isArguments = require('../predicate/isArguments.js'); -const toPath = require('../util/toPath.js'); - -function hasIn(object, path) { - if (object == null) { - return false; - } - let resolvedPath; - if (Array.isArray(path)) { - resolvedPath = path; - } - else if (typeof path === 'string' && isDeepKey.isDeepKey(path) && object[path] == null) { - resolvedPath = toPath.toPath(path); - } - else { - resolvedPath = [path]; - } - if (resolvedPath.length === 0) { - return false; - } - let current = object; - for (let i = 0; i < resolvedPath.length; i++) { - const key = resolvedPath[i]; - if (current == null || !(key in Object(current))) { - const isSparseIndex = (Array.isArray(current) || isArguments.isArguments(current)) && isIndex.isIndex(key) && key < current.length; - if (!isSparseIndex) { - return false; - } - } - current = current[key]; - } - return true; -} - -exports.hasIn = hasIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/hasIn.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/hasIn.mjs deleted file mode 100644 index 69ca575..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/hasIn.mjs +++ /dev/null @@ -1,37 +0,0 @@ -import { isDeepKey } from '../_internal/isDeepKey.mjs'; -import { isIndex } from '../_internal/isIndex.mjs'; -import { isArguments } from '../predicate/isArguments.mjs'; -import { toPath } from '../util/toPath.mjs'; - -function hasIn(object, path) { - if (object == null) { - return false; - } - let resolvedPath; - if (Array.isArray(path)) { - resolvedPath = path; - } - else if (typeof path === 'string' && isDeepKey(path) && object[path] == null) { - resolvedPath = toPath(path); - } - else { - resolvedPath = [path]; - } - if (resolvedPath.length === 0) { - return false; - } - let current = object; - for (let i = 0; i < resolvedPath.length; i++) { - const key = resolvedPath[i]; - if (current == null || !(key in Object(current))) { - const isSparseIndex = (Array.isArray(current) || isArguments(current)) && isIndex(key) && key < current.length; - if (!isSparseIndex) { - return false; - } - } - current = current[key]; - } - return true; -} - -export { hasIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invert.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invert.d.mts deleted file mode 100644 index 946ed75..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invert.d.mts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Inverts the keys and values of an object. - * - * @param {object} object - The object to invert. - * @returns {Record} - Returns the new inverted object. - * - * @example - * invert({ a: 1, b: 2, c: 3 }); - * // => { '1': 'a', '2': 'b', '3': 'c' } - */ -declare function invert(object: object): Record; - -export { invert }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invert.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invert.d.ts deleted file mode 100644 index 946ed75..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invert.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Inverts the keys and values of an object. - * - * @param {object} object - The object to invert. - * @returns {Record} - Returns the new inverted object. - * - * @example - * invert({ a: 1, b: 2, c: 3 }); - * // => { '1': 'a', '2': 'b', '3': 'c' } - */ -declare function invert(object: object): Record; - -export { invert }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invert.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invert.js deleted file mode 100644 index fd2f48b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invert.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const invert$1 = require('../../object/invert.js'); - -function invert(obj) { - return invert$1.invert(obj); -} - -exports.invert = invert; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invert.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invert.mjs deleted file mode 100644 index ae20064..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invert.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { invert as invert$1 } from '../../object/invert.mjs'; - -function invert(obj) { - return invert$1(obj); -} - -export { invert }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invertBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invertBy.d.mts deleted file mode 100644 index 85f3394..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invertBy.d.mts +++ /dev/null @@ -1,34 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.mjs'; - -/** - * Creates a new object that reverses the keys and values of the given object, similar to the invert. - * The values of the new object are arrays of keys that correspond to the value returned by the `iteratee` function. - * - * @param {Record} object - The object to iterate over - * @param {ValueIteratee} [iteratee] - Optional function to transform values into keys - * @returns {Record} An object with transformed values as keys and arrays of original keys as values - * - * @example - * const obj = { a: 1, b: 2, c: 1 }; - * invertBy(obj); // => { '1': ['a', 'c'], '2': ['b'] } - * - * @example - * const obj = { a: 1, b: 2, c: 1 }; - * invertBy(obj, value => `group${value}`); // => { 'group1': ['a', 'c'], 'group2': ['b'] } - */ -declare function invertBy(object: Record | Record | null | undefined, interatee?: ValueIteratee): Record; -/** - * Creates a new object that reverses the keys and values of the given object, similar to the invert. - * The values of the new object are arrays of keys that correspond to the value returned by the `iteratee` function. - * - * @param {T} object - The object to iterate over - * @param {ValueIteratee} [iteratee] - Optional function to transform values into keys - * @returns {Record} An object with transformed values as keys and arrays of original keys as values - * - * @example - * const obj = { foo: { id: 1 }, bar: { id: 2 }, baz: { id: 1 } }; - * invertBy(obj, value => String(value.id)); // => { '1': ['foo', 'baz'], '2': ['bar'] } - */ -declare function invertBy(object: T | null | undefined, interatee?: ValueIteratee): Record; - -export { invertBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invertBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invertBy.d.ts deleted file mode 100644 index ccc865f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invertBy.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { ValueIteratee } from '../_internal/ValueIteratee.js'; - -/** - * Creates a new object that reverses the keys and values of the given object, similar to the invert. - * The values of the new object are arrays of keys that correspond to the value returned by the `iteratee` function. - * - * @param {Record} object - The object to iterate over - * @param {ValueIteratee} [iteratee] - Optional function to transform values into keys - * @returns {Record} An object with transformed values as keys and arrays of original keys as values - * - * @example - * const obj = { a: 1, b: 2, c: 1 }; - * invertBy(obj); // => { '1': ['a', 'c'], '2': ['b'] } - * - * @example - * const obj = { a: 1, b: 2, c: 1 }; - * invertBy(obj, value => `group${value}`); // => { 'group1': ['a', 'c'], 'group2': ['b'] } - */ -declare function invertBy(object: Record | Record | null | undefined, interatee?: ValueIteratee): Record; -/** - * Creates a new object that reverses the keys and values of the given object, similar to the invert. - * The values of the new object are arrays of keys that correspond to the value returned by the `iteratee` function. - * - * @param {T} object - The object to iterate over - * @param {ValueIteratee} [iteratee] - Optional function to transform values into keys - * @returns {Record} An object with transformed values as keys and arrays of original keys as values - * - * @example - * const obj = { foo: { id: 1 }, bar: { id: 2 }, baz: { id: 1 } }; - * invertBy(obj, value => String(value.id)); // => { '1': ['foo', 'baz'], '2': ['bar'] } - */ -declare function invertBy(object: T | null | undefined, interatee?: ValueIteratee): Record; - -export { invertBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invertBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invertBy.js deleted file mode 100644 index 13a0867..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invertBy.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const isNil = require('../../predicate/isNil.js'); -const iteratee = require('../util/iteratee.js'); - -function invertBy(object, iteratee$1) { - const result = {}; - if (isNil.isNil(object)) { - return result; - } - if (iteratee$1 == null) { - iteratee$1 = identity.identity; - } - const keys = Object.keys(object); - const getString = iteratee.iteratee(iteratee$1); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = object[key]; - const valueStr = getString(value); - if (Array.isArray(result[valueStr])) { - result[valueStr].push(key); - } - else { - result[valueStr] = [key]; - } - } - return result; -} - -exports.invertBy = invertBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invertBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invertBy.mjs deleted file mode 100644 index 41a6f1b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/invertBy.mjs +++ /dev/null @@ -1,29 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { isNil } from '../../predicate/isNil.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function invertBy(object, iteratee$1) { - const result = {}; - if (isNil(object)) { - return result; - } - if (iteratee$1 == null) { - iteratee$1 = identity; - } - const keys = Object.keys(object); - const getString = iteratee(iteratee$1); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = object[key]; - const valueStr = getString(value); - if (Array.isArray(result[valueStr])) { - result[valueStr].push(key); - } - else { - result[valueStr] = [key]; - } - } - return result; -} - -export { invertBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keys.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keys.d.mts deleted file mode 100644 index b1c062d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keys.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Creates an array of the own enumerable property names of `object`. - * - * Non-object values are coerced to objects. - * - * @param {object} object The object to query. - * @returns {string[]} Returns the array of property names. - * @example - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * Foo.prototype.c = 3; - * keys(new Foo); // ['a', 'b'] (iteration order is not guaranteed) - * - * keys('hi'); // ['0', '1'] - * keys([1, 2, 3]); // ['0', '1', '2'] - * keys({ a: 1, b: 2 }); // ['a', 'b'] - */ -declare function keys(object?: any): string[]; - -export { keys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keys.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keys.d.ts deleted file mode 100644 index b1c062d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keys.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Creates an array of the own enumerable property names of `object`. - * - * Non-object values are coerced to objects. - * - * @param {object} object The object to query. - * @returns {string[]} Returns the array of property names. - * @example - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * Foo.prototype.c = 3; - * keys(new Foo); // ['a', 'b'] (iteration order is not guaranteed) - * - * keys('hi'); // ['0', '1'] - * keys([1, 2, 3]); // ['0', '1', '2'] - * keys({ a: 1, b: 2 }); // ['a', 'b'] - */ -declare function keys(object?: any): string[]; - -export { keys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keys.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keys.js deleted file mode 100644 index 16ecc6f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keys.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isBuffer = require('../../predicate/isBuffer.js'); -const isPrototype = require('../_internal/isPrototype.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const isTypedArray = require('../predicate/isTypedArray.js'); -const times = require('../util/times.js'); - -function keys(object) { - if (isArrayLike.isArrayLike(object)) { - return arrayLikeKeys(object); - } - const result = Object.keys(Object(object)); - if (!isPrototype.isPrototype(object)) { - return result; - } - return result.filter(key => key !== 'constructor'); -} -function arrayLikeKeys(object) { - const indices = times.times(object.length, index => `${index}`); - const filteredKeys = new Set(indices); - if (isBuffer.isBuffer(object)) { - filteredKeys.add('offset'); - filteredKeys.add('parent'); - } - if (isTypedArray.isTypedArray(object)) { - filteredKeys.add('buffer'); - filteredKeys.add('byteLength'); - filteredKeys.add('byteOffset'); - } - const inheritedKeys = Object.keys(object).filter(key => !filteredKeys.has(key)); - if (Array.isArray(object)) { - return [...indices, ...inheritedKeys]; - } - return [...indices.filter(index => Object.hasOwn(object, index)), ...inheritedKeys]; -} - -exports.keys = keys; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keys.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keys.mjs deleted file mode 100644 index e90d3d8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keys.mjs +++ /dev/null @@ -1,36 +0,0 @@ -import { isBuffer } from '../../predicate/isBuffer.mjs'; -import { isPrototype } from '../_internal/isPrototype.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { isTypedArray } from '../predicate/isTypedArray.mjs'; -import { times } from '../util/times.mjs'; - -function keys(object) { - if (isArrayLike(object)) { - return arrayLikeKeys(object); - } - const result = Object.keys(Object(object)); - if (!isPrototype(object)) { - return result; - } - return result.filter(key => key !== 'constructor'); -} -function arrayLikeKeys(object) { - const indices = times(object.length, index => `${index}`); - const filteredKeys = new Set(indices); - if (isBuffer(object)) { - filteredKeys.add('offset'); - filteredKeys.add('parent'); - } - if (isTypedArray(object)) { - filteredKeys.add('buffer'); - filteredKeys.add('byteLength'); - filteredKeys.add('byteOffset'); - } - const inheritedKeys = Object.keys(object).filter(key => !filteredKeys.has(key)); - if (Array.isArray(object)) { - return [...indices, ...inheritedKeys]; - } - return [...indices.filter(index => Object.hasOwn(object, index)), ...inheritedKeys]; -} - -export { keys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keysIn.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keysIn.d.mts deleted file mode 100644 index 381313a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keysIn.d.mts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * This function retrieves the names of string-keyed properties from an object, including those inherited from its prototype. - * - * - If the value is not an object, it is converted to an object. - * - Array-like objects are treated like arrays. - * - Sparse arrays with some missing indices are treated like dense arrays. - * - If the value is `null` or `undefined`, an empty array is returned. - * - When handling prototype objects, the `constructor` property is excluded from the results. - * - * @param {any} [object] - The object to inspect for keys. - * @returns {string[]} An array of string keys from the object. - * - * @example - * const obj = { a: 1, b: 2 }; - * console.log(keysIn(obj)); // ['a', 'b'] - * - * const arr = [1, 2, 3]; - * console.log(keysIn(arr)); // ['0', '1', '2'] - * - * function Foo() {} - * Foo.prototype.a = 1; - * console.log(keysIn(new Foo())); // ['a'] - */ -declare function keysIn(object?: any): string[]; - -export { keysIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keysIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keysIn.d.ts deleted file mode 100644 index 381313a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keysIn.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * This function retrieves the names of string-keyed properties from an object, including those inherited from its prototype. - * - * - If the value is not an object, it is converted to an object. - * - Array-like objects are treated like arrays. - * - Sparse arrays with some missing indices are treated like dense arrays. - * - If the value is `null` or `undefined`, an empty array is returned. - * - When handling prototype objects, the `constructor` property is excluded from the results. - * - * @param {any} [object] - The object to inspect for keys. - * @returns {string[]} An array of string keys from the object. - * - * @example - * const obj = { a: 1, b: 2 }; - * console.log(keysIn(obj)); // ['a', 'b'] - * - * const arr = [1, 2, 3]; - * console.log(keysIn(arr)); // ['0', '1', '2'] - * - * function Foo() {} - * Foo.prototype.a = 1; - * console.log(keysIn(new Foo())); // ['a'] - */ -declare function keysIn(object?: any): string[]; - -export { keysIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keysIn.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keysIn.js deleted file mode 100644 index 743163b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keysIn.js +++ /dev/null @@ -1,61 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isBuffer = require('../../predicate/isBuffer.js'); -const isPrototype = require('../_internal/isPrototype.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const isTypedArray = require('../predicate/isTypedArray.js'); -const times = require('../util/times.js'); - -function keysIn(object) { - if (object == null) { - return []; - } - switch (typeof object) { - case 'object': - case 'function': { - if (isArrayLike.isArrayLike(object)) { - return arrayLikeKeysIn(object); - } - if (isPrototype.isPrototype(object)) { - return prototypeKeysIn(object); - } - return keysInImpl(object); - } - default: { - return keysInImpl(Object(object)); - } - } -} -function keysInImpl(object) { - const result = []; - for (const key in object) { - result.push(key); - } - return result; -} -function prototypeKeysIn(object) { - const keys = keysInImpl(object); - return keys.filter(key => key !== 'constructor'); -} -function arrayLikeKeysIn(object) { - const indices = times.times(object.length, index => `${index}`); - const filteredKeys = new Set(indices); - if (isBuffer.isBuffer(object)) { - filteredKeys.add('offset'); - filteredKeys.add('parent'); - } - if (isTypedArray.isTypedArray(object)) { - filteredKeys.add('buffer'); - filteredKeys.add('byteLength'); - filteredKeys.add('byteOffset'); - } - const inheritedKeys = keysInImpl(object).filter(key => !filteredKeys.has(key)); - if (Array.isArray(object)) { - return [...indices, ...inheritedKeys]; - } - return [...indices.filter(index => Object.hasOwn(object, index)), ...inheritedKeys]; -} - -exports.keysIn = keysIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keysIn.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keysIn.mjs deleted file mode 100644 index 65555ea..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/keysIn.mjs +++ /dev/null @@ -1,57 +0,0 @@ -import { isBuffer } from '../../predicate/isBuffer.mjs'; -import { isPrototype } from '../_internal/isPrototype.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { isTypedArray } from '../predicate/isTypedArray.mjs'; -import { times } from '../util/times.mjs'; - -function keysIn(object) { - if (object == null) { - return []; - } - switch (typeof object) { - case 'object': - case 'function': { - if (isArrayLike(object)) { - return arrayLikeKeysIn(object); - } - if (isPrototype(object)) { - return prototypeKeysIn(object); - } - return keysInImpl(object); - } - default: { - return keysInImpl(Object(object)); - } - } -} -function keysInImpl(object) { - const result = []; - for (const key in object) { - result.push(key); - } - return result; -} -function prototypeKeysIn(object) { - const keys = keysInImpl(object); - return keys.filter(key => key !== 'constructor'); -} -function arrayLikeKeysIn(object) { - const indices = times(object.length, index => `${index}`); - const filteredKeys = new Set(indices); - if (isBuffer(object)) { - filteredKeys.add('offset'); - filteredKeys.add('parent'); - } - if (isTypedArray(object)) { - filteredKeys.add('buffer'); - filteredKeys.add('byteLength'); - filteredKeys.add('byteOffset'); - } - const inheritedKeys = keysInImpl(object).filter(key => !filteredKeys.has(key)); - if (Array.isArray(object)) { - return [...indices, ...inheritedKeys]; - } - return [...indices.filter(index => Object.hasOwn(object, index)), ...inheritedKeys]; -} - -export { keysIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapKeys.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapKeys.d.mts deleted file mode 100644 index 8435817..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapKeys.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.mjs'; -import { ObjectIteratee } from '../_internal/ObjectIteratee.mjs'; - -/** - * Creates an object with the same values as `object` and keys generated by running each own enumerable string keyed property through `iteratee`. - * - * @template T - * @param {ArrayLike | null | undefined} object - The object to iterate over. - * @param {ValueIteratee} [iteratee] - The function invoked per iteration. - * @returns {Record} - Returns the new mapped object. - * - * @example - * mapKeys([1, 2, 3], (value, index) => `key${index}`); - * // => { 'key0': 1, 'key1': 2, 'key2': 3 } - */ -declare function mapKeys(object: ArrayLike | null | undefined, iteratee?: ListIteratee): Record; -/** - * Creates an object with the same values as `object` and keys generated by running each own enumerable string keyed property through `iteratee`. - * - * @template T - * @param {T | null | undefined} object - The object to iterate over. - * @param {ValueIteratee} [iteratee] - The function invoked per iteration. - * @returns {Record} - Returns the new mapped object. - * - * @example - * mapKeys({ a: 1, b: 2 }, (value, key) => key + value); - * // => { 'a1': 1, 'b2': 2 } - */ -declare function mapKeys(object: T | null | undefined, iteratee?: ObjectIteratee): Record; - -export { mapKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapKeys.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapKeys.d.ts deleted file mode 100644 index 9d6cfd4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapKeys.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { ListIteratee } from '../_internal/ListIteratee.js'; -import { ObjectIteratee } from '../_internal/ObjectIteratee.js'; - -/** - * Creates an object with the same values as `object` and keys generated by running each own enumerable string keyed property through `iteratee`. - * - * @template T - * @param {ArrayLike | null | undefined} object - The object to iterate over. - * @param {ValueIteratee} [iteratee] - The function invoked per iteration. - * @returns {Record} - Returns the new mapped object. - * - * @example - * mapKeys([1, 2, 3], (value, index) => `key${index}`); - * // => { 'key0': 1, 'key1': 2, 'key2': 3 } - */ -declare function mapKeys(object: ArrayLike | null | undefined, iteratee?: ListIteratee): Record; -/** - * Creates an object with the same values as `object` and keys generated by running each own enumerable string keyed property through `iteratee`. - * - * @template T - * @param {T | null | undefined} object - The object to iterate over. - * @param {ValueIteratee} [iteratee] - The function invoked per iteration. - * @returns {Record} - Returns the new mapped object. - * - * @example - * mapKeys({ a: 1, b: 2 }, (value, key) => key + value); - * // => { 'a1': 1, 'b2': 2 } - */ -declare function mapKeys(object: T | null | undefined, iteratee?: ObjectIteratee): Record; - -export { mapKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapKeys.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapKeys.js deleted file mode 100644 index 306b72b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapKeys.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const mapKeys$1 = require('../../object/mapKeys.js'); -const iteratee = require('../util/iteratee.js'); - -function mapKeys(object, getNewKey = identity.identity) { - if (object == null) { - return {}; - } - return mapKeys$1.mapKeys(object, iteratee.iteratee(getNewKey)); -} - -exports.mapKeys = mapKeys; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapKeys.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapKeys.mjs deleted file mode 100644 index 30ef1bb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapKeys.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { mapKeys as mapKeys$1 } from '../../object/mapKeys.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function mapKeys(object, getNewKey = identity) { - if (object == null) { - return {}; - } - return mapKeys$1(object, iteratee(getNewKey)); -} - -export { mapKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapValues.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapValues.d.mts deleted file mode 100644 index f426f25..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapValues.d.mts +++ /dev/null @@ -1,130 +0,0 @@ -import { ArrayIterator } from '../_internal/ArrayIterator.mjs'; -import { ObjectIterator } from '../_internal/ObjectIterator.mjs'; -import { StringIterator } from '../_internal/StringIterator.mjs'; - -/** - * Creates a new object by mapping each character in a string to a value. - * @param obj - The string to iterate over - * @param callback - The function invoked per character - * @returns A new object with numeric keys and mapped values - * @example - * mapValues('abc', (char) => char.toUpperCase()) - * // => { '0': 'A', '1': 'B', '2': 'C' } - */ -declare function mapValues(obj: string | null | undefined, callback: StringIterator): Record; -/** - * Creates a new object by mapping each element in an array to a value. - * @param array - The array to iterate over - * @param callback - The function invoked per element - * @returns A new object with numeric keys and mapped values - * @example - * mapValues([1, 2], (num) => num * 2) - * // => { '0': 2, '1': 4 } - */ -declare function mapValues(array: T[], callback: ArrayIterator): Record; -/** - * Creates a new object by mapping each property value in an object to a new value. - * @param obj - The object to iterate over - * @param callback - The function invoked per property - * @returns A new object with the same keys and mapped values - * @example - * mapValues({ a: 1, b: 2 }, (num) => num * 2) - * // => { a: 2, b: 4 } - */ -declare function mapValues(obj: T | null | undefined, callback: ObjectIterator): { - [P in keyof T]: U; -}; -/** - * Creates a new object by checking each value against a matcher object. - * @param obj - The object to iterate over - * @param iteratee - The object to match against - * @returns A new object with boolean values indicating matches - * @example - * mapValues({ a: { x: 1 }, b: { x: 2 } }, { x: 2 }) - * // => { a: false, b: true } - */ -declare function mapValues(obj: Record | Record | null | undefined, iteratee: object): Record; -/** - * Creates a new object by checking each value against a matcher object. - * @param obj - The object to iterate over - * @param iteratee - The object to match against - * @returns A new object with boolean values indicating matches - * @example - * mapValues({ a: { x: 1 }, b: { x: 2 } }, { x: 2 }) - * // => { a: false, b: true } - */ -declare function mapValues(obj: T | null | undefined, iteratee: object): { - [P in keyof T]: boolean; -}; -/** - * Creates a new object by extracting a property from each value. - * @param obj - The object to iterate over - * @param iteratee - The property key to extract - * @returns A new object with extracted property values - * @example - * mapValues({ a: { x: 1 }, b: { x: 2 } }, 'x') - * // => { a: 1, b: 2 } - */ -declare function mapValues(obj: Record | Record | null | undefined, iteratee: K): Record; -/** - * Creates a new object by extracting values at a path from each value. - * @param obj - The object to iterate over - * @param iteratee - The path to extract - * @returns A new object with extracted values - * @example - * mapValues({ a: { x: { y: 1 } }, b: { x: { y: 2 } } }, 'x.y') - * // => { a: 1, b: 2 } - */ -declare function mapValues(obj: Record | Record | null | undefined, iteratee: string): Record; -/** - * Creates a new object by extracting values at a path from each value. - * @param obj - The object to iterate over - * @param iteratee - The path to extract - * @returns A new object with extracted values - * @example - * mapValues({ a: { x: { y: 1 } }, b: { x: { y: 2 } } }, 'x.y') - * // => { a: 1, b: 2 } - */ -declare function mapValues(obj: T | null | undefined, iteratee: string): { - [P in keyof T]: any; -}; -/** - * Creates a new object from a string using identity function. - * @param obj - The string to convert - * @returns A new object with characters as values - * @example - * mapValues('abc') - * // => { '0': 'a', '1': 'b', '2': 'c' } - */ -declare function mapValues(obj: string | null | undefined): Record; -/** - * Creates a new object using identity function. - * @param obj - The object to clone - * @returns A new object with the same values - * @example - * mapValues({ a: 1, b: 2 }) - * // => { a: 1, b: 2 } - */ -declare function mapValues(obj: Record | Record | null | undefined): Record; -/** - * Creates a new object using identity function. - * @param obj - The object to clone - * @returns A new object with the same values - * @example - * mapValues({ a: 1, b: 2 }) - * // => { a: 1, b: 2 } - */ -declare function mapValues(obj: T): T; -/** - * Creates a new object using identity function. - * @param obj - The object to clone - * @returns A new object with the same values, or empty object if input is null/undefined - * @example - * mapValues({ a: 1, b: 2 }) - * // => { a: 1, b: 2 } - * mapValues(null) - * // => {} - */ -declare function mapValues(obj: T | null | undefined): Partial; - -export { mapValues }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapValues.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapValues.d.ts deleted file mode 100644 index 62f4464..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapValues.d.ts +++ /dev/null @@ -1,130 +0,0 @@ -import { ArrayIterator } from '../_internal/ArrayIterator.js'; -import { ObjectIterator } from '../_internal/ObjectIterator.js'; -import { StringIterator } from '../_internal/StringIterator.js'; - -/** - * Creates a new object by mapping each character in a string to a value. - * @param obj - The string to iterate over - * @param callback - The function invoked per character - * @returns A new object with numeric keys and mapped values - * @example - * mapValues('abc', (char) => char.toUpperCase()) - * // => { '0': 'A', '1': 'B', '2': 'C' } - */ -declare function mapValues(obj: string | null | undefined, callback: StringIterator): Record; -/** - * Creates a new object by mapping each element in an array to a value. - * @param array - The array to iterate over - * @param callback - The function invoked per element - * @returns A new object with numeric keys and mapped values - * @example - * mapValues([1, 2], (num) => num * 2) - * // => { '0': 2, '1': 4 } - */ -declare function mapValues(array: T[], callback: ArrayIterator): Record; -/** - * Creates a new object by mapping each property value in an object to a new value. - * @param obj - The object to iterate over - * @param callback - The function invoked per property - * @returns A new object with the same keys and mapped values - * @example - * mapValues({ a: 1, b: 2 }, (num) => num * 2) - * // => { a: 2, b: 4 } - */ -declare function mapValues(obj: T | null | undefined, callback: ObjectIterator): { - [P in keyof T]: U; -}; -/** - * Creates a new object by checking each value against a matcher object. - * @param obj - The object to iterate over - * @param iteratee - The object to match against - * @returns A new object with boolean values indicating matches - * @example - * mapValues({ a: { x: 1 }, b: { x: 2 } }, { x: 2 }) - * // => { a: false, b: true } - */ -declare function mapValues(obj: Record | Record | null | undefined, iteratee: object): Record; -/** - * Creates a new object by checking each value against a matcher object. - * @param obj - The object to iterate over - * @param iteratee - The object to match against - * @returns A new object with boolean values indicating matches - * @example - * mapValues({ a: { x: 1 }, b: { x: 2 } }, { x: 2 }) - * // => { a: false, b: true } - */ -declare function mapValues(obj: T | null | undefined, iteratee: object): { - [P in keyof T]: boolean; -}; -/** - * Creates a new object by extracting a property from each value. - * @param obj - The object to iterate over - * @param iteratee - The property key to extract - * @returns A new object with extracted property values - * @example - * mapValues({ a: { x: 1 }, b: { x: 2 } }, 'x') - * // => { a: 1, b: 2 } - */ -declare function mapValues(obj: Record | Record | null | undefined, iteratee: K): Record; -/** - * Creates a new object by extracting values at a path from each value. - * @param obj - The object to iterate over - * @param iteratee - The path to extract - * @returns A new object with extracted values - * @example - * mapValues({ a: { x: { y: 1 } }, b: { x: { y: 2 } } }, 'x.y') - * // => { a: 1, b: 2 } - */ -declare function mapValues(obj: Record | Record | null | undefined, iteratee: string): Record; -/** - * Creates a new object by extracting values at a path from each value. - * @param obj - The object to iterate over - * @param iteratee - The path to extract - * @returns A new object with extracted values - * @example - * mapValues({ a: { x: { y: 1 } }, b: { x: { y: 2 } } }, 'x.y') - * // => { a: 1, b: 2 } - */ -declare function mapValues(obj: T | null | undefined, iteratee: string): { - [P in keyof T]: any; -}; -/** - * Creates a new object from a string using identity function. - * @param obj - The string to convert - * @returns A new object with characters as values - * @example - * mapValues('abc') - * // => { '0': 'a', '1': 'b', '2': 'c' } - */ -declare function mapValues(obj: string | null | undefined): Record; -/** - * Creates a new object using identity function. - * @param obj - The object to clone - * @returns A new object with the same values - * @example - * mapValues({ a: 1, b: 2 }) - * // => { a: 1, b: 2 } - */ -declare function mapValues(obj: Record | Record | null | undefined): Record; -/** - * Creates a new object using identity function. - * @param obj - The object to clone - * @returns A new object with the same values - * @example - * mapValues({ a: 1, b: 2 }) - * // => { a: 1, b: 2 } - */ -declare function mapValues(obj: T): T; -/** - * Creates a new object using identity function. - * @param obj - The object to clone - * @returns A new object with the same values, or empty object if input is null/undefined - * @example - * mapValues({ a: 1, b: 2 }) - * // => { a: 1, b: 2 } - * mapValues(null) - * // => {} - */ -declare function mapValues(obj: T | null | undefined): Partial; - -export { mapValues }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapValues.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapValues.js deleted file mode 100644 index c283a5f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapValues.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const mapValues$1 = require('../../object/mapValues.js'); -const iteratee = require('../util/iteratee.js'); - -function mapValues(object, getNewValue = identity.identity) { - if (object == null) { - return {}; - } - return mapValues$1.mapValues(object, iteratee.iteratee(getNewValue)); -} - -exports.mapValues = mapValues; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapValues.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapValues.mjs deleted file mode 100644 index 8ef6b23..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mapValues.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { mapValues as mapValues$1 } from '../../object/mapValues.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function mapValues(object, getNewValue = identity) { - if (object == null) { - return {}; - } - return mapValues$1(object, iteratee(getNewValue)); -} - -export { mapValues }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/merge.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/merge.d.mts deleted file mode 100644 index be95ba9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/merge.d.mts +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Recursively merges own and inherited enumerable string keyed properties of source objects into the destination object. - * - * @template T - * @template U - * @param {T} object - The destination object. - * @param {U} source - The source object. - * @returns {T & U} - Returns `object`. - * - * @example - * const object = { a: [{ b: 2 }, { d: 4 }] }; - * const other = { a: [{ c: 3 }, { e: 5 }] }; - * merge(object, other); - * // => { a: [{ b: 2, c: 3 }, { d: 4, e: 5 }] } - */ -declare function merge(object: T, source: U): T & U; -/** - * Recursively merges own and inherited enumerable string keyed properties of source objects into the destination object. - * - * @template T - * @template U - * @template V - * @param {T} object - The destination object. - * @param {U} source1 - The first source object. - * @param {V} source2 - The second source object. - * @returns {T & U & V} - Returns `object`. - * - * @example - * merge({ a: 1 }, { b: 2 }, { c: 3 }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function merge(object: T, source1: U, source2: V): T & U & V; -/** - * Recursively merges own and inherited enumerable string keyed properties of source objects into the destination object. - * - * @template T - * @template U - * @template V - * @template W - * @param {T} object - The destination object. - * @param {U} source1 - The first source object. - * @param {V} source2 - The second source object. - * @param {W} source3 - The third source object. - * @returns {T & U & V & W} - Returns `object`. - * - * @example - * merge({ a: 1 }, { b: 2 }, { c: 3 }, { d: 4 }); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function merge(object: T, source1: U, source2: V, source3: W): T & U & V & W; -/** - * Recursively merges own and inherited enumerable string keyed properties of source objects into the destination object. - * - * @template T - * @template U - * @template V - * @template W - * @template X - * @param {T} object - The destination object. - * @param {U} source1 - The first source object. - * @param {V} source2 - The second source object. - * @param {W} source3 - The third source object. - * @param {X} source4 - The fourth source object. - * @returns {T & U & V & W & X} - Returns `object`. - * - * @example - * merge({ a: 1 }, { b: 2 }, { c: 3 }, { d: 4 }, { e: 5 }); - * // => { a: 1, b: 2, c: 3, d: 4, e: 5 } - */ -declare function merge(object: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X; -/** - * Recursively merges own and inherited enumerable string keyed properties of source objects into the destination object. - * - * @param {any} object - The destination object. - * @param {...any[]} otherArgs - The source objects. - * @returns {any} - Returns `object`. - * - * @example - * merge({ a: 1 }, { b: 2 }, { c: 3 }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function merge(object: any, ...otherArgs: any[]): any; - -export { merge }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/merge.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/merge.d.ts deleted file mode 100644 index be95ba9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/merge.d.ts +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Recursively merges own and inherited enumerable string keyed properties of source objects into the destination object. - * - * @template T - * @template U - * @param {T} object - The destination object. - * @param {U} source - The source object. - * @returns {T & U} - Returns `object`. - * - * @example - * const object = { a: [{ b: 2 }, { d: 4 }] }; - * const other = { a: [{ c: 3 }, { e: 5 }] }; - * merge(object, other); - * // => { a: [{ b: 2, c: 3 }, { d: 4, e: 5 }] } - */ -declare function merge(object: T, source: U): T & U; -/** - * Recursively merges own and inherited enumerable string keyed properties of source objects into the destination object. - * - * @template T - * @template U - * @template V - * @param {T} object - The destination object. - * @param {U} source1 - The first source object. - * @param {V} source2 - The second source object. - * @returns {T & U & V} - Returns `object`. - * - * @example - * merge({ a: 1 }, { b: 2 }, { c: 3 }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function merge(object: T, source1: U, source2: V): T & U & V; -/** - * Recursively merges own and inherited enumerable string keyed properties of source objects into the destination object. - * - * @template T - * @template U - * @template V - * @template W - * @param {T} object - The destination object. - * @param {U} source1 - The first source object. - * @param {V} source2 - The second source object. - * @param {W} source3 - The third source object. - * @returns {T & U & V & W} - Returns `object`. - * - * @example - * merge({ a: 1 }, { b: 2 }, { c: 3 }, { d: 4 }); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function merge(object: T, source1: U, source2: V, source3: W): T & U & V & W; -/** - * Recursively merges own and inherited enumerable string keyed properties of source objects into the destination object. - * - * @template T - * @template U - * @template V - * @template W - * @template X - * @param {T} object - The destination object. - * @param {U} source1 - The first source object. - * @param {V} source2 - The second source object. - * @param {W} source3 - The third source object. - * @param {X} source4 - The fourth source object. - * @returns {T & U & V & W & X} - Returns `object`. - * - * @example - * merge({ a: 1 }, { b: 2 }, { c: 3 }, { d: 4 }, { e: 5 }); - * // => { a: 1, b: 2, c: 3, d: 4, e: 5 } - */ -declare function merge(object: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X; -/** - * Recursively merges own and inherited enumerable string keyed properties of source objects into the destination object. - * - * @param {any} object - The destination object. - * @param {...any[]} otherArgs - The source objects. - * @returns {any} - Returns `object`. - * - * @example - * merge({ a: 1 }, { b: 2 }, { c: 3 }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function merge(object: any, ...otherArgs: any[]): any; - -export { merge }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/merge.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/merge.js deleted file mode 100644 index 4745aee..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/merge.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const mergeWith = require('./mergeWith.js'); -const noop = require('../../function/noop.js'); - -function merge(object, ...sources) { - return mergeWith.mergeWith(object, ...sources, noop.noop); -} - -exports.merge = merge; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/merge.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/merge.mjs deleted file mode 100644 index 66b4563..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/merge.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { mergeWith } from './mergeWith.mjs'; -import { noop } from '../../function/noop.mjs'; - -function merge(object, ...sources) { - return mergeWith(object, ...sources, noop); -} - -export { merge }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mergeWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mergeWith.d.mts deleted file mode 100644 index 0923e97..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mergeWith.d.mts +++ /dev/null @@ -1,125 +0,0 @@ -type MergeWithCustomizer = (objValue: any, srcValue: any, key: string, object: any, source: any, stack: any) => any; -/** - * Merges the properties of a source object into the target object using a customizer function. - * - * @template TObject - * @template TSource - * @param {TObject} object - The target object into which the source object properties will be merged. - * @param {TSource} source - The source object whose properties will be merged into the target object. - * @param {MergeWithCustomizer} customizer - The function to customize assigned values. - * @returns {TObject & TSource} Returns the updated target object with properties from the source object merged in. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * - * const result = mergeWith(target, source, (objValue, srcValue) => { - * if (typeof objValue === 'number' && typeof srcValue === 'number') { - * return objValue + srcValue; - * } - * }); - * // => { a: 1, b: 5, c: 4 } - */ -declare function mergeWith(object: TObject, source: TSource, customizer: MergeWithCustomizer): TObject & TSource; -/** - * Merges the properties of two source objects into the target object using a customizer function. - * - * @template TObject - * @template TSource1 - * @template TSource2 - * @param {TObject} object - The target object into which the source objects properties will be merged. - * @param {TSource1} source1 - The first source object. - * @param {TSource2} source2 - The second source object. - * @param {MergeWithCustomizer} customizer - The function to customize assigned values. - * @returns {TObject & TSource1 & TSource2} Returns the updated target object with properties from the source objects merged in. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * - * const result = mergeWith(target, source1, source2, (objValue, srcValue) => { - * if (typeof objValue === 'number' && typeof srcValue === 'number') { - * return objValue + srcValue; - * } - * }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function mergeWith(object: TObject, source1: TSource1, source2: TSource2, customizer: MergeWithCustomizer): TObject & TSource1 & TSource2; -/** - * Merges the properties of three source objects into the target object using a customizer function. - * - * @template TObject - * @template TSource1 - * @template TSource2 - * @template TSource3 - * @param {TObject} object - The target object into which the source objects properties will be merged. - * @param {TSource1} source1 - The first source object. - * @param {TSource2} source2 - The second source object. - * @param {TSource3} source3 - The third source object. - * @param {MergeWithCustomizer} customizer - The function to customize assigned values. - * @returns {TObject & TSource1 & TSource2 & TSource3} Returns the updated target object with properties from the source objects merged in. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * - * const result = mergeWith(target, source1, source2, source3, (objValue, srcValue) => { - * if (typeof objValue === 'number' && typeof srcValue === 'number') { - * return objValue + srcValue; - * } - * }); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function mergeWith(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, customizer: MergeWithCustomizer): TObject & TSource1 & TSource2 & TSource3; -/** - * Merges the properties of four source objects into the target object using a customizer function. - * - * @template TObject - * @template TSource1 - * @template TSource2 - * @template TSource3 - * @template TSource4 - * @param {TObject} object - The target object into which the source objects properties will be merged. - * @param {TSource1} source1 - The first source object. - * @param {TSource2} source2 - The second source object. - * @param {TSource3} source3 - The third source object. - * @param {TSource4} source4 - The fourth source object. - * @param {MergeWithCustomizer} customizer - The function to customize assigned values. - * @returns {TObject & TSource1 & TSource2 & TSource3 & TSource4} Returns the updated target object with properties from the source objects merged in. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const source4 = { e: 5 }; - * - * const result = mergeWith(target, source1, source2, source3, source4, (objValue, srcValue) => { - * if (typeof objValue === 'number' && typeof srcValue === 'number') { - * return objValue + srcValue; - * } - * }); - * // => { a: 1, b: 2, c: 3, d: 4, e: 5 } - */ -declare function mergeWith(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: MergeWithCustomizer): TObject & TSource1 & TSource2 & TSource3 & TSource4; -/** - * Merges the properties of one or more source objects into the target object. - * - * @param {any} object - The target object into which the source object properties will be merged. - * @param {...any} otherArgs - Additional source objects to merge into the target object, including the custom `merge` function. - * @returns {any} The updated target object with properties from the source object(s) merged in. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * - * const result = mergeWith(target, source, (objValue, srcValue) => { - * if (typeof objValue === 'number' && typeof srcValue === 'number') { - * return objValue + srcValue; - */ -declare function mergeWith(object: any, ...otherArgs: any[]): any; - -export { mergeWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mergeWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mergeWith.d.ts deleted file mode 100644 index 0923e97..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mergeWith.d.ts +++ /dev/null @@ -1,125 +0,0 @@ -type MergeWithCustomizer = (objValue: any, srcValue: any, key: string, object: any, source: any, stack: any) => any; -/** - * Merges the properties of a source object into the target object using a customizer function. - * - * @template TObject - * @template TSource - * @param {TObject} object - The target object into which the source object properties will be merged. - * @param {TSource} source - The source object whose properties will be merged into the target object. - * @param {MergeWithCustomizer} customizer - The function to customize assigned values. - * @returns {TObject & TSource} Returns the updated target object with properties from the source object merged in. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * - * const result = mergeWith(target, source, (objValue, srcValue) => { - * if (typeof objValue === 'number' && typeof srcValue === 'number') { - * return objValue + srcValue; - * } - * }); - * // => { a: 1, b: 5, c: 4 } - */ -declare function mergeWith(object: TObject, source: TSource, customizer: MergeWithCustomizer): TObject & TSource; -/** - * Merges the properties of two source objects into the target object using a customizer function. - * - * @template TObject - * @template TSource1 - * @template TSource2 - * @param {TObject} object - The target object into which the source objects properties will be merged. - * @param {TSource1} source1 - The first source object. - * @param {TSource2} source2 - The second source object. - * @param {MergeWithCustomizer} customizer - The function to customize assigned values. - * @returns {TObject & TSource1 & TSource2} Returns the updated target object with properties from the source objects merged in. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * - * const result = mergeWith(target, source1, source2, (objValue, srcValue) => { - * if (typeof objValue === 'number' && typeof srcValue === 'number') { - * return objValue + srcValue; - * } - * }); - * // => { a: 1, b: 2, c: 3 } - */ -declare function mergeWith(object: TObject, source1: TSource1, source2: TSource2, customizer: MergeWithCustomizer): TObject & TSource1 & TSource2; -/** - * Merges the properties of three source objects into the target object using a customizer function. - * - * @template TObject - * @template TSource1 - * @template TSource2 - * @template TSource3 - * @param {TObject} object - The target object into which the source objects properties will be merged. - * @param {TSource1} source1 - The first source object. - * @param {TSource2} source2 - The second source object. - * @param {TSource3} source3 - The third source object. - * @param {MergeWithCustomizer} customizer - The function to customize assigned values. - * @returns {TObject & TSource1 & TSource2 & TSource3} Returns the updated target object with properties from the source objects merged in. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * - * const result = mergeWith(target, source1, source2, source3, (objValue, srcValue) => { - * if (typeof objValue === 'number' && typeof srcValue === 'number') { - * return objValue + srcValue; - * } - * }); - * // => { a: 1, b: 2, c: 3, d: 4 } - */ -declare function mergeWith(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, customizer: MergeWithCustomizer): TObject & TSource1 & TSource2 & TSource3; -/** - * Merges the properties of four source objects into the target object using a customizer function. - * - * @template TObject - * @template TSource1 - * @template TSource2 - * @template TSource3 - * @template TSource4 - * @param {TObject} object - The target object into which the source objects properties will be merged. - * @param {TSource1} source1 - The first source object. - * @param {TSource2} source2 - The second source object. - * @param {TSource3} source3 - The third source object. - * @param {TSource4} source4 - The fourth source object. - * @param {MergeWithCustomizer} customizer - The function to customize assigned values. - * @returns {TObject & TSource1 & TSource2 & TSource3 & TSource4} Returns the updated target object with properties from the source objects merged in. - * - * @example - * const target = { a: 1 }; - * const source1 = { b: 2 }; - * const source2 = { c: 3 }; - * const source3 = { d: 4 }; - * const source4 = { e: 5 }; - * - * const result = mergeWith(target, source1, source2, source3, source4, (objValue, srcValue) => { - * if (typeof objValue === 'number' && typeof srcValue === 'number') { - * return objValue + srcValue; - * } - * }); - * // => { a: 1, b: 2, c: 3, d: 4, e: 5 } - */ -declare function mergeWith(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: MergeWithCustomizer): TObject & TSource1 & TSource2 & TSource3 & TSource4; -/** - * Merges the properties of one or more source objects into the target object. - * - * @param {any} object - The target object into which the source object properties will be merged. - * @param {...any} otherArgs - Additional source objects to merge into the target object, including the custom `merge` function. - * @returns {any} The updated target object with properties from the source object(s) merged in. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * - * const result = mergeWith(target, source, (objValue, srcValue) => { - * if (typeof objValue === 'number' && typeof srcValue === 'number') { - * return objValue + srcValue; - */ -declare function mergeWith(object: any, ...otherArgs: any[]): any; - -export { mergeWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mergeWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mergeWith.js deleted file mode 100644 index 1aae643..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mergeWith.js +++ /dev/null @@ -1,109 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const cloneDeep = require('./cloneDeep.js'); -const isUnsafeProperty = require('../../_internal/isUnsafeProperty.js'); -const clone = require('../../object/clone.js'); -const isPrimitive = require('../../predicate/isPrimitive.js'); -const getSymbols = require('../_internal/getSymbols.js'); -const isArguments = require('../predicate/isArguments.js'); -const isArrayLikeObject = require('../predicate/isArrayLikeObject.js'); -const isObjectLike = require('../predicate/isObjectLike.js'); -const isPlainObject = require('../predicate/isPlainObject.js'); -const isTypedArray = require('../predicate/isTypedArray.js'); - -function mergeWith(object, ...otherArgs) { - const sources = otherArgs.slice(0, -1); - const merge = otherArgs[otherArgs.length - 1]; - let result = object; - for (let i = 0; i < sources.length; i++) { - const source = sources[i]; - result = mergeWithDeep(result, source, merge, new Map()); - } - return result; -} -function mergeWithDeep(target, source, merge, stack) { - if (isPrimitive.isPrimitive(target)) { - target = Object(target); - } - if (source == null || typeof source !== 'object') { - return target; - } - if (stack.has(source)) { - return clone.clone(stack.get(source)); - } - stack.set(source, target); - if (Array.isArray(source)) { - source = source.slice(); - for (let i = 0; i < source.length; i++) { - source[i] = source[i] ?? undefined; - } - } - const sourceKeys = [...Object.keys(source), ...getSymbols.getSymbols(source)]; - for (let i = 0; i < sourceKeys.length; i++) { - const key = sourceKeys[i]; - if (isUnsafeProperty.isUnsafeProperty(key)) { - continue; - } - let sourceValue = source[key]; - let targetValue = target[key]; - if (isArguments.isArguments(sourceValue)) { - sourceValue = { ...sourceValue }; - } - if (isArguments.isArguments(targetValue)) { - targetValue = { ...targetValue }; - } - if (typeof Buffer !== 'undefined' && Buffer.isBuffer(sourceValue)) { - sourceValue = cloneDeep.cloneDeep(sourceValue); - } - if (Array.isArray(sourceValue)) { - if (Array.isArray(targetValue)) { - const cloned = []; - const targetKeys = Reflect.ownKeys(targetValue); - for (let i = 0; i < targetKeys.length; i++) { - const targetKey = targetKeys[i]; - cloned[targetKey] = targetValue[targetKey]; - } - targetValue = cloned; - } - else if (isArrayLikeObject.isArrayLikeObject(targetValue)) { - const cloned = []; - for (let i = 0; i < targetValue.length; i++) { - cloned[i] = targetValue[i]; - } - targetValue = cloned; - } - else { - targetValue = []; - } - } - const merged = merge(targetValue, sourceValue, key, target, source, stack); - if (merged !== undefined) { - target[key] = merged; - } - else if (Array.isArray(sourceValue)) { - target[key] = mergeWithDeep(targetValue, sourceValue, merge, stack); - } - else if (isObjectLike.isObjectLike(targetValue) && - isObjectLike.isObjectLike(sourceValue) && - (isPlainObject.isPlainObject(targetValue) || - isPlainObject.isPlainObject(sourceValue) || - isTypedArray.isTypedArray(targetValue) || - isTypedArray.isTypedArray(sourceValue))) { - target[key] = mergeWithDeep(targetValue, sourceValue, merge, stack); - } - else if (targetValue == null && isPlainObject.isPlainObject(sourceValue)) { - target[key] = mergeWithDeep({}, sourceValue, merge, stack); - } - else if (targetValue == null && isTypedArray.isTypedArray(sourceValue)) { - target[key] = cloneDeep.cloneDeep(sourceValue); - } - else if (targetValue === undefined || sourceValue !== undefined) { - target[key] = sourceValue; - } - } - return target; -} - -exports.mergeWith = mergeWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mergeWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mergeWith.mjs deleted file mode 100644 index d4630d3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/mergeWith.mjs +++ /dev/null @@ -1,105 +0,0 @@ -import { cloneDeep } from './cloneDeep.mjs'; -import { isUnsafeProperty } from '../../_internal/isUnsafeProperty.mjs'; -import { clone } from '../../object/clone.mjs'; -import { isPrimitive } from '../../predicate/isPrimitive.mjs'; -import { getSymbols } from '../_internal/getSymbols.mjs'; -import { isArguments } from '../predicate/isArguments.mjs'; -import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs'; -import { isObjectLike } from '../predicate/isObjectLike.mjs'; -import { isPlainObject } from '../predicate/isPlainObject.mjs'; -import { isTypedArray } from '../predicate/isTypedArray.mjs'; - -function mergeWith(object, ...otherArgs) { - const sources = otherArgs.slice(0, -1); - const merge = otherArgs[otherArgs.length - 1]; - let result = object; - for (let i = 0; i < sources.length; i++) { - const source = sources[i]; - result = mergeWithDeep(result, source, merge, new Map()); - } - return result; -} -function mergeWithDeep(target, source, merge, stack) { - if (isPrimitive(target)) { - target = Object(target); - } - if (source == null || typeof source !== 'object') { - return target; - } - if (stack.has(source)) { - return clone(stack.get(source)); - } - stack.set(source, target); - if (Array.isArray(source)) { - source = source.slice(); - for (let i = 0; i < source.length; i++) { - source[i] = source[i] ?? undefined; - } - } - const sourceKeys = [...Object.keys(source), ...getSymbols(source)]; - for (let i = 0; i < sourceKeys.length; i++) { - const key = sourceKeys[i]; - if (isUnsafeProperty(key)) { - continue; - } - let sourceValue = source[key]; - let targetValue = target[key]; - if (isArguments(sourceValue)) { - sourceValue = { ...sourceValue }; - } - if (isArguments(targetValue)) { - targetValue = { ...targetValue }; - } - if (typeof Buffer !== 'undefined' && Buffer.isBuffer(sourceValue)) { - sourceValue = cloneDeep(sourceValue); - } - if (Array.isArray(sourceValue)) { - if (Array.isArray(targetValue)) { - const cloned = []; - const targetKeys = Reflect.ownKeys(targetValue); - for (let i = 0; i < targetKeys.length; i++) { - const targetKey = targetKeys[i]; - cloned[targetKey] = targetValue[targetKey]; - } - targetValue = cloned; - } - else if (isArrayLikeObject(targetValue)) { - const cloned = []; - for (let i = 0; i < targetValue.length; i++) { - cloned[i] = targetValue[i]; - } - targetValue = cloned; - } - else { - targetValue = []; - } - } - const merged = merge(targetValue, sourceValue, key, target, source, stack); - if (merged !== undefined) { - target[key] = merged; - } - else if (Array.isArray(sourceValue)) { - target[key] = mergeWithDeep(targetValue, sourceValue, merge, stack); - } - else if (isObjectLike(targetValue) && - isObjectLike(sourceValue) && - (isPlainObject(targetValue) || - isPlainObject(sourceValue) || - isTypedArray(targetValue) || - isTypedArray(sourceValue))) { - target[key] = mergeWithDeep(targetValue, sourceValue, merge, stack); - } - else if (targetValue == null && isPlainObject(sourceValue)) { - target[key] = mergeWithDeep({}, sourceValue, merge, stack); - } - else if (targetValue == null && isTypedArray(sourceValue)) { - target[key] = cloneDeep(sourceValue); - } - else if (targetValue === undefined || sourceValue !== undefined) { - target[key] = sourceValue; - } - } - return target; -} - -export { mergeWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omit.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omit.d.mts deleted file mode 100644 index 6046bf3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omit.d.mts +++ /dev/null @@ -1,45 +0,0 @@ -import { Many } from '../_internal/Many.mjs'; - -/** - * Creates a new object with specified keys omitted. - * - * @template T - The type of object. - * @template K - The type of keys to omit. - * @param {T | null | undefined} object - The object to omit keys from. - * @param {...K} paths - The keys to be omitted from the object. - * @returns {Pick>} A new object with the specified keys omitted. - * - * @example - * omit({ a: 1, b: 2, c: 3 }, 'a', 'c'); - * // => { b: 2 } - */ -declare function omit(object: T | null | undefined, ...paths: K): Pick>; -/** - * Creates a new object with specified keys omitted. - * - * @template T - The type of object. - * @template K - The type of keys to omit. - * @param {T | null | undefined} object - The object to omit keys from. - * @param {...Array>} paths - The keys to be omitted from the object. - * @returns {Omit} A new object with the specified keys omitted. - * - * @example - * omit({ a: 1, b: 2, c: 3 }, 'a', ['b', 'c']); - * // => {} - */ -declare function omit(object: T | null | undefined, ...paths: Array>): Omit; -/** - * Creates a new object with specified keys omitted. - * - * @template T - The type of object. - * @param {T | null | undefined} object - The object to omit keys from. - * @param {...Array>} paths - The keys to be omitted from the object. - * @returns {Partial} A new object with the specified keys omitted. - * - * @example - * omit({ a: 1, b: 2, c: 3 }, 'a', 'b'); - * // => { c: 3 } - */ -declare function omit(object: T | null | undefined, ...paths: Array>): Partial; - -export { omit }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omit.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omit.d.ts deleted file mode 100644 index 0350e13..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omit.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Many } from '../_internal/Many.js'; - -/** - * Creates a new object with specified keys omitted. - * - * @template T - The type of object. - * @template K - The type of keys to omit. - * @param {T | null | undefined} object - The object to omit keys from. - * @param {...K} paths - The keys to be omitted from the object. - * @returns {Pick>} A new object with the specified keys omitted. - * - * @example - * omit({ a: 1, b: 2, c: 3 }, 'a', 'c'); - * // => { b: 2 } - */ -declare function omit(object: T | null | undefined, ...paths: K): Pick>; -/** - * Creates a new object with specified keys omitted. - * - * @template T - The type of object. - * @template K - The type of keys to omit. - * @param {T | null | undefined} object - The object to omit keys from. - * @param {...Array>} paths - The keys to be omitted from the object. - * @returns {Omit} A new object with the specified keys omitted. - * - * @example - * omit({ a: 1, b: 2, c: 3 }, 'a', ['b', 'c']); - * // => {} - */ -declare function omit(object: T | null | undefined, ...paths: Array>): Omit; -/** - * Creates a new object with specified keys omitted. - * - * @template T - The type of object. - * @param {T | null | undefined} object - The object to omit keys from. - * @param {...Array>} paths - The keys to be omitted from the object. - * @returns {Partial} A new object with the specified keys omitted. - * - * @example - * omit({ a: 1, b: 2, c: 3 }, 'a', 'b'); - * // => { c: 3 } - */ -declare function omit(object: T | null | undefined, ...paths: Array>): Partial; - -export { omit }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omit.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omit.js deleted file mode 100644 index 3ad1bc3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omit.js +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const cloneDeepWith = require('./cloneDeepWith.js'); -const keysIn = require('./keysIn.js'); -const unset = require('./unset.js'); -const getSymbolsIn = require('../_internal/getSymbolsIn.js'); -const isDeepKey = require('../_internal/isDeepKey.js'); -const flatten = require('../array/flatten.js'); -const isPlainObject = require('../predicate/isPlainObject.js'); - -function omit(obj, ...keysArr) { - if (obj == null) { - return {}; - } - keysArr = flatten.flatten(keysArr); - const result = cloneInOmit(obj, keysArr); - for (let i = 0; i < keysArr.length; i++) { - let keys = keysArr[i]; - switch (typeof keys) { - case 'object': { - if (!Array.isArray(keys)) { - keys = Array.from(keys); - } - for (let j = 0; j < keys.length; j++) { - const key = keys[j]; - unset.unset(result, key); - } - break; - } - case 'string': - case 'symbol': - case 'number': { - unset.unset(result, keys); - break; - } - } - } - return result; -} -function cloneInOmit(obj, keys) { - const hasDeepKey = keys.some(key => Array.isArray(key) || isDeepKey.isDeepKey(key)); - if (hasDeepKey) { - return deepCloneInOmit(obj); - } - return shallowCloneInOmit(obj); -} -function shallowCloneInOmit(obj) { - const result = {}; - const keysToCopy = [...keysIn.keysIn(obj), ...getSymbolsIn.getSymbolsIn(obj)]; - for (let i = 0; i < keysToCopy.length; i++) { - const key = keysToCopy[i]; - result[key] = obj[key]; - } - return result; -} -function deepCloneInOmit(obj) { - const result = {}; - const keysToCopy = [...keysIn.keysIn(obj), ...getSymbolsIn.getSymbolsIn(obj)]; - for (let i = 0; i < keysToCopy.length; i++) { - const key = keysToCopy[i]; - result[key] = cloneDeepWith.cloneDeepWith(obj[key], valueToClone => { - if (isPlainObject.isPlainObject(valueToClone)) { - return undefined; - } - return valueToClone; - }); - } - return result; -} - -exports.omit = omit; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omit.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omit.mjs deleted file mode 100644 index f16e6d7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omit.mjs +++ /dev/null @@ -1,69 +0,0 @@ -import { cloneDeepWith } from './cloneDeepWith.mjs'; -import { keysIn } from './keysIn.mjs'; -import { unset } from './unset.mjs'; -import { getSymbolsIn } from '../_internal/getSymbolsIn.mjs'; -import { isDeepKey } from '../_internal/isDeepKey.mjs'; -import { flatten } from '../array/flatten.mjs'; -import { isPlainObject } from '../predicate/isPlainObject.mjs'; - -function omit(obj, ...keysArr) { - if (obj == null) { - return {}; - } - keysArr = flatten(keysArr); - const result = cloneInOmit(obj, keysArr); - for (let i = 0; i < keysArr.length; i++) { - let keys = keysArr[i]; - switch (typeof keys) { - case 'object': { - if (!Array.isArray(keys)) { - keys = Array.from(keys); - } - for (let j = 0; j < keys.length; j++) { - const key = keys[j]; - unset(result, key); - } - break; - } - case 'string': - case 'symbol': - case 'number': { - unset(result, keys); - break; - } - } - } - return result; -} -function cloneInOmit(obj, keys) { - const hasDeepKey = keys.some(key => Array.isArray(key) || isDeepKey(key)); - if (hasDeepKey) { - return deepCloneInOmit(obj); - } - return shallowCloneInOmit(obj); -} -function shallowCloneInOmit(obj) { - const result = {}; - const keysToCopy = [...keysIn(obj), ...getSymbolsIn(obj)]; - for (let i = 0; i < keysToCopy.length; i++) { - const key = keysToCopy[i]; - result[key] = obj[key]; - } - return result; -} -function deepCloneInOmit(obj) { - const result = {}; - const keysToCopy = [...keysIn(obj), ...getSymbolsIn(obj)]; - for (let i = 0; i < keysToCopy.length; i++) { - const key = keysToCopy[i]; - result[key] = cloneDeepWith(obj[key], valueToClone => { - if (isPlainObject(valueToClone)) { - return undefined; - } - return valueToClone; - }); - } - return result; -} - -export { omit }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omitBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omitBy.d.mts deleted file mode 100644 index 349f93f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omitBy.d.mts +++ /dev/null @@ -1,43 +0,0 @@ -import { ValueKeyIteratee } from '../_internal/ValueKeyIteratee.mjs'; - -/** - * Creates a new object composed of the properties that do not satisfy the predicate function. - * - * @template T - * @param {Record | null | undefined} object - The source object. - * @param {ValueKeyIteratee} predicate - The function invoked per property. - * @returns {Record} Returns the new object. - * - * @example - * omitBy({ 'a': 1, 'b': '2', 'c': 3 }, isString); - * // => { 'a': 1, 'c': 3 } - */ -declare function omitBy(object: Record | null | undefined, predicate?: ValueKeyIteratee): Record; -/** - * Creates a new object composed of the properties that do not satisfy the predicate function. - * - * @template T - * @param {Record | null | undefined} object - The source object. - * @param {ValueKeyIteratee} predicate - The function invoked per property. - * @returns {Record} Returns the new object. - * - * @example - * omitBy({ 0: 1, 1: '2', 2: 3 }, isString); - * // => { 0: 1, 2: 3 } - */ -declare function omitBy(object: Record | null | undefined, predicate?: ValueKeyIteratee): Record; -/** - * Creates a new object composed of the properties that do not satisfy the predicate function. - * - * @template T - * @param {T | null | undefined} object - The source object. - * @param {ValueKeyIteratee} predicate - The function invoked per property. - * @returns {Partial} Returns the new object. - * - * @example - * omitBy({ 'a': 1, 'b': '2', 'c': 3 }, isString); - * // => { 'a': 1, 'c': 3 } - */ -declare function omitBy(object: T | null | undefined, predicate: ValueKeyIteratee): Partial; - -export { omitBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omitBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omitBy.d.ts deleted file mode 100644 index 413fd9a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omitBy.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { ValueKeyIteratee } from '../_internal/ValueKeyIteratee.js'; - -/** - * Creates a new object composed of the properties that do not satisfy the predicate function. - * - * @template T - * @param {Record | null | undefined} object - The source object. - * @param {ValueKeyIteratee} predicate - The function invoked per property. - * @returns {Record} Returns the new object. - * - * @example - * omitBy({ 'a': 1, 'b': '2', 'c': 3 }, isString); - * // => { 'a': 1, 'c': 3 } - */ -declare function omitBy(object: Record | null | undefined, predicate?: ValueKeyIteratee): Record; -/** - * Creates a new object composed of the properties that do not satisfy the predicate function. - * - * @template T - * @param {Record | null | undefined} object - The source object. - * @param {ValueKeyIteratee} predicate - The function invoked per property. - * @returns {Record} Returns the new object. - * - * @example - * omitBy({ 0: 1, 1: '2', 2: 3 }, isString); - * // => { 0: 1, 2: 3 } - */ -declare function omitBy(object: Record | null | undefined, predicate?: ValueKeyIteratee): Record; -/** - * Creates a new object composed of the properties that do not satisfy the predicate function. - * - * @template T - * @param {T | null | undefined} object - The source object. - * @param {ValueKeyIteratee} predicate - The function invoked per property. - * @returns {Partial} Returns the new object. - * - * @example - * omitBy({ 'a': 1, 'b': '2', 'c': 3 }, isString); - * // => { 'a': 1, 'c': 3 } - */ -declare function omitBy(object: T | null | undefined, predicate: ValueKeyIteratee): Partial; - -export { omitBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omitBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omitBy.js deleted file mode 100644 index b7fc8da..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omitBy.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keysIn = require('./keysIn.js'); -const range = require('../../math/range.js'); -const getSymbolsIn = require('../_internal/getSymbolsIn.js'); -const identity = require('../function/identity.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const isSymbol = require('../predicate/isSymbol.js'); -const iteratee = require('../util/iteratee.js'); - -function omitBy(object, shouldOmit) { - if (object == null) { - return {}; - } - const result = {}; - const predicate = iteratee.iteratee(shouldOmit ?? identity.identity); - const keys = isArrayLike.isArrayLike(object) - ? range.range(0, object.length) - : [...keysIn.keysIn(object), ...getSymbolsIn.getSymbolsIn(object)]; - for (let i = 0; i < keys.length; i++) { - const key = (isSymbol.isSymbol(keys[i]) ? keys[i] : keys[i].toString()); - const value = object[key]; - if (!predicate(value, key, object)) { - result[key] = value; - } - } - return result; -} - -exports.omitBy = omitBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omitBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omitBy.mjs deleted file mode 100644 index 39aacd5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/omitBy.mjs +++ /dev/null @@ -1,28 +0,0 @@ -import { keysIn } from './keysIn.mjs'; -import { range } from '../../math/range.mjs'; -import { getSymbolsIn } from '../_internal/getSymbolsIn.mjs'; -import { identity } from '../function/identity.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { isSymbol } from '../predicate/isSymbol.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function omitBy(object, shouldOmit) { - if (object == null) { - return {}; - } - const result = {}; - const predicate = iteratee(shouldOmit ?? identity); - const keys = isArrayLike(object) - ? range(0, object.length) - : [...keysIn(object), ...getSymbolsIn(object)]; - for (let i = 0; i < keys.length; i++) { - const key = (isSymbol(keys[i]) ? keys[i] : keys[i].toString()); - const value = object[key]; - if (!predicate(value, key, object)) { - result[key] = value; - } - } - return result; -} - -export { omitBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pick.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pick.d.mts deleted file mode 100644 index de7ebf1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pick.d.mts +++ /dev/null @@ -1,34 +0,0 @@ -import { Many } from '../_internal/Many.mjs'; -import { PropertyPath } from '../_internal/PropertyPath.mjs'; - -/** - * Creates a new object composed of the picked object properties. - * - * @template T - The type of object. - * @template U - The type of keys to pick. - * @param {T} object - The object to pick keys from. - * @param {...Array>} props - An array of keys to be picked from the object. - * @returns {Pick} A new object with the specified keys picked. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * const result = pick(obj, ['a', 'c']); - * // result will be { a: 1, c: 3 } - */ -declare function pick(object: T, ...props: Array>): Pick; -/** - * Creates a new object composed of the picked object properties. - * - * @template T - The type of object. - * @param {T | null | undefined} object - The object to pick keys from. - * @param {...Array>} props - An array of keys to be picked from the object. - * @returns {Partial} A new object with the specified keys picked. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * const result = pick(obj, ['a', 'c']); - * // result will be { a: 1, c: 3 } - */ -declare function pick(object: T | null | undefined, ...props: Array>): Partial; - -export { pick }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pick.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pick.d.ts deleted file mode 100644 index 30ada3f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pick.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Many } from '../_internal/Many.js'; -import { PropertyPath } from '../_internal/PropertyPath.js'; - -/** - * Creates a new object composed of the picked object properties. - * - * @template T - The type of object. - * @template U - The type of keys to pick. - * @param {T} object - The object to pick keys from. - * @param {...Array>} props - An array of keys to be picked from the object. - * @returns {Pick} A new object with the specified keys picked. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * const result = pick(obj, ['a', 'c']); - * // result will be { a: 1, c: 3 } - */ -declare function pick(object: T, ...props: Array>): Pick; -/** - * Creates a new object composed of the picked object properties. - * - * @template T - The type of object. - * @param {T | null | undefined} object - The object to pick keys from. - * @param {...Array>} props - An array of keys to be picked from the object. - * @returns {Partial} A new object with the specified keys picked. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * const result = pick(obj, ['a', 'c']); - * // result will be { a: 1, c: 3 } - */ -declare function pick(object: T | null | undefined, ...props: Array>): Partial; - -export { pick }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pick.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pick.js deleted file mode 100644 index 142fc73..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pick.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const get = require('./get.js'); -const has = require('./has.js'); -const set = require('./set.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const isNil = require('../predicate/isNil.js'); - -function pick(obj, ...keysArr) { - if (isNil.isNil(obj)) { - return {}; - } - const result = {}; - for (let i = 0; i < keysArr.length; i++) { - let keys = keysArr[i]; - switch (typeof keys) { - case 'object': { - if (!Array.isArray(keys)) { - if (isArrayLike.isArrayLike(keys)) { - keys = Array.from(keys); - } - else { - keys = [keys]; - } - } - break; - } - case 'string': - case 'symbol': - case 'number': { - keys = [keys]; - break; - } - } - for (const key of keys) { - const value = get.get(obj, key); - if (value === undefined && !has.has(obj, key)) { - continue; - } - if (typeof key === 'string' && Object.hasOwn(obj, key)) { - result[key] = value; - } - else { - set.set(result, key, value); - } - } - } - return result; -} - -exports.pick = pick; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pick.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pick.mjs deleted file mode 100644 index d2b1b8b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pick.mjs +++ /dev/null @@ -1,49 +0,0 @@ -import { get } from './get.mjs'; -import { has } from './has.mjs'; -import { set } from './set.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { isNil } from '../predicate/isNil.mjs'; - -function pick(obj, ...keysArr) { - if (isNil(obj)) { - return {}; - } - const result = {}; - for (let i = 0; i < keysArr.length; i++) { - let keys = keysArr[i]; - switch (typeof keys) { - case 'object': { - if (!Array.isArray(keys)) { - if (isArrayLike(keys)) { - keys = Array.from(keys); - } - else { - keys = [keys]; - } - } - break; - } - case 'string': - case 'symbol': - case 'number': { - keys = [keys]; - break; - } - } - for (const key of keys) { - const value = get(obj, key); - if (value === undefined && !has(obj, key)) { - continue; - } - if (typeof key === 'string' && Object.hasOwn(obj, key)) { - result[key] = value; - } - else { - set(result, key, value); - } - } - } - return result; -} - -export { pick }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pickBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pickBy.d.mts deleted file mode 100644 index b5d5d2e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pickBy.d.mts +++ /dev/null @@ -1,80 +0,0 @@ -import { ValueKeyIteratee } from '../_internal/ValueKeyIteratee.mjs'; -import { ValueKeyIterateeTypeGuard } from '../_internal/ValueKeyIterateeTypeGuard.mjs'; - -/** - * Creates a new object composed of the properties that satisfy the predicate function. - * - * @template T - The type of object values. - * @template S - The type of filtered values. - * @param {Record | null | undefined} object - The source object. - * @param {ValueKeyIterateeTypeGuard} predicate - The function invoked per property. - * @returns {Record} Returns the new filtered object. - * - * @example - * const users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * pickBy(users, ({ age }) => age < 40); - * // => { 'pebbles': { 'user': 'pebbles', 'age': 1 } } - */ -declare function pickBy(object: Record | null | undefined, predicate: ValueKeyIterateeTypeGuard): Record; -/** - * Creates a new object composed of the properties that satisfy the predicate function. - * - * @template T - The type of object values. - * @template S - The type of filtered values. - * @param {Record | null | undefined} object - The source object. - * @param {ValueKeyIterateeTypeGuard} predicate - The function invoked per property. - * @returns {Record} Returns the new filtered object. - * - * @example - * const array = [1, 2, 3, 4]; - * pickBy(array, (value) => value % 2 === 0); - * // => { 1: 2, 3: 4 } - */ -declare function pickBy(object: Record | null | undefined, predicate: ValueKeyIterateeTypeGuard): Record; -/** - * Creates a new object composed of the properties that satisfy the predicate function. - * - * @template T - The type of object values. - * @param {Record | null | undefined} object - The source object. - * @param {ValueKeyIteratee} [predicate] - The function invoked per property. - * @returns {Record} Returns the new filtered object. - * - * @example - * const object = { 'a': 1, 'b': '2', 'c': 3 }; - * pickBy(object, (value) => typeof value === 'string'); - * // => { 'b': '2' } - */ -declare function pickBy(object: Record | null | undefined, predicate?: ValueKeyIteratee): Record; -/** - * Creates a new object composed of the properties that satisfy the predicate function. - * - * @template T - The type of object values. - * @param {Record | null | undefined} object - The source object. - * @param {ValueKeyIteratee} [predicate] - The function invoked per property. - * @returns {Record} Returns the new filtered object. - * - * @example - * const array = [1, 2, 3, 4]; - * pickBy(array, (value) => value > 2); - * // => { 2: 3, 3: 4 } - */ -declare function pickBy(object: Record | null | undefined, predicate?: ValueKeyIteratee): Record; -/** - * Creates a new object composed of the properties that satisfy the predicate function. - * - * @template T - The type of object. - * @param {T | null | undefined} object - The source object. - * @param {ValueKeyIteratee} [predicate] - The function invoked per property. - * @returns {Partial} Returns the new filtered object. - * - * @example - * const object = { 'a': 1, 'b': '2', 'c': 3 }; - * pickBy(object, (value) => typeof value === 'string'); - * // => { 'b': '2' } - */ -declare function pickBy(object: T | null | undefined, predicate?: ValueKeyIteratee): Partial; - -export { pickBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pickBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pickBy.d.ts deleted file mode 100644 index def714f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pickBy.d.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { ValueKeyIteratee } from '../_internal/ValueKeyIteratee.js'; -import { ValueKeyIterateeTypeGuard } from '../_internal/ValueKeyIterateeTypeGuard.js'; - -/** - * Creates a new object composed of the properties that satisfy the predicate function. - * - * @template T - The type of object values. - * @template S - The type of filtered values. - * @param {Record | null | undefined} object - The source object. - * @param {ValueKeyIterateeTypeGuard} predicate - The function invoked per property. - * @returns {Record} Returns the new filtered object. - * - * @example - * const users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * pickBy(users, ({ age }) => age < 40); - * // => { 'pebbles': { 'user': 'pebbles', 'age': 1 } } - */ -declare function pickBy(object: Record | null | undefined, predicate: ValueKeyIterateeTypeGuard): Record; -/** - * Creates a new object composed of the properties that satisfy the predicate function. - * - * @template T - The type of object values. - * @template S - The type of filtered values. - * @param {Record | null | undefined} object - The source object. - * @param {ValueKeyIterateeTypeGuard} predicate - The function invoked per property. - * @returns {Record} Returns the new filtered object. - * - * @example - * const array = [1, 2, 3, 4]; - * pickBy(array, (value) => value % 2 === 0); - * // => { 1: 2, 3: 4 } - */ -declare function pickBy(object: Record | null | undefined, predicate: ValueKeyIterateeTypeGuard): Record; -/** - * Creates a new object composed of the properties that satisfy the predicate function. - * - * @template T - The type of object values. - * @param {Record | null | undefined} object - The source object. - * @param {ValueKeyIteratee} [predicate] - The function invoked per property. - * @returns {Record} Returns the new filtered object. - * - * @example - * const object = { 'a': 1, 'b': '2', 'c': 3 }; - * pickBy(object, (value) => typeof value === 'string'); - * // => { 'b': '2' } - */ -declare function pickBy(object: Record | null | undefined, predicate?: ValueKeyIteratee): Record; -/** - * Creates a new object composed of the properties that satisfy the predicate function. - * - * @template T - The type of object values. - * @param {Record | null | undefined} object - The source object. - * @param {ValueKeyIteratee} [predicate] - The function invoked per property. - * @returns {Record} Returns the new filtered object. - * - * @example - * const array = [1, 2, 3, 4]; - * pickBy(array, (value) => value > 2); - * // => { 2: 3, 3: 4 } - */ -declare function pickBy(object: Record | null | undefined, predicate?: ValueKeyIteratee): Record; -/** - * Creates a new object composed of the properties that satisfy the predicate function. - * - * @template T - The type of object. - * @param {T | null | undefined} object - The source object. - * @param {ValueKeyIteratee} [predicate] - The function invoked per property. - * @returns {Partial} Returns the new filtered object. - * - * @example - * const object = { 'a': 1, 'b': '2', 'c': 3 }; - * pickBy(object, (value) => typeof value === 'string'); - * // => { 'b': '2' } - */ -declare function pickBy(object: T | null | undefined, predicate?: ValueKeyIteratee): Partial; - -export { pickBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pickBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pickBy.js deleted file mode 100644 index ae65592..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pickBy.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keysIn = require('./keysIn.js'); -const range = require('../../math/range.js'); -const getSymbolsIn = require('../_internal/getSymbolsIn.js'); -const identity = require('../function/identity.js'); -const isArrayLike = require('../predicate/isArrayLike.js'); -const isSymbol = require('../predicate/isSymbol.js'); -const iteratee = require('../util/iteratee.js'); - -function pickBy(obj, shouldPick) { - if (obj == null) { - return {}; - } - const predicate = iteratee.iteratee(shouldPick ?? identity.identity); - const result = {}; - const keys = isArrayLike.isArrayLike(obj) ? range.range(0, obj.length) : [...keysIn.keysIn(obj), ...getSymbolsIn.getSymbolsIn(obj)]; - for (let i = 0; i < keys.length; i++) { - const key = (isSymbol.isSymbol(keys[i]) ? keys[i] : keys[i].toString()); - const value = obj[key]; - if (predicate(value, key, obj)) { - result[key] = value; - } - } - return result; -} - -exports.pickBy = pickBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pickBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pickBy.mjs deleted file mode 100644 index 85a2f7c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/pickBy.mjs +++ /dev/null @@ -1,26 +0,0 @@ -import { keysIn } from './keysIn.mjs'; -import { range } from '../../math/range.mjs'; -import { getSymbolsIn } from '../_internal/getSymbolsIn.mjs'; -import { identity } from '../function/identity.mjs'; -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { isSymbol } from '../predicate/isSymbol.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function pickBy(obj, shouldPick) { - if (obj == null) { - return {}; - } - const predicate = iteratee(shouldPick ?? identity); - const result = {}; - const keys = isArrayLike(obj) ? range(0, obj.length) : [...keysIn(obj), ...getSymbolsIn(obj)]; - for (let i = 0; i < keys.length; i++) { - const key = (isSymbol(keys[i]) ? keys[i] : keys[i].toString()); - const value = obj[key]; - if (predicate(value, key, obj)) { - result[key] = value; - } - } - return result; -} - -export { pickBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/property.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/property.d.mts deleted file mode 100644 index 6de9589..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/property.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.mjs'; - -declare function property(path: PropertyPath): (obj: T) => R; - -export { property }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/property.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/property.d.ts deleted file mode 100644 index 5fb789f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/property.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.js'; - -declare function property(path: PropertyPath): (obj: T) => R; - -export { property }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/property.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/property.js deleted file mode 100644 index be2c300..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/property.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const get = require('./get.js'); - -function property(path) { - return function (object) { - return get.get(object, path); - }; -} - -exports.property = property; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/property.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/property.mjs deleted file mode 100644 index 067c163..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/property.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { get } from './get.mjs'; - -function property(path) { - return function (object) { - return get(object, path); - }; -} - -export { property }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/propertyOf.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/propertyOf.d.mts deleted file mode 100644 index 8632869..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/propertyOf.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.mjs'; - -declare function propertyOf(object: T): (path: PropertyPath) => any; - -export { propertyOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/propertyOf.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/propertyOf.d.ts deleted file mode 100644 index 91f9e2b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/propertyOf.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.js'; - -declare function propertyOf(object: T): (path: PropertyPath) => any; - -export { propertyOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/propertyOf.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/propertyOf.js deleted file mode 100644 index 9eb615e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/propertyOf.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const get = require('./get.js'); - -function propertyOf(object) { - return function (path) { - return get.get(object, path); - }; -} - -exports.propertyOf = propertyOf; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/propertyOf.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/propertyOf.mjs deleted file mode 100644 index e06ede2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/propertyOf.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { get } from './get.mjs'; - -function propertyOf(object) { - return function (path) { - return get(object, path); - }; -} - -export { propertyOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/result.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/result.d.mts deleted file mode 100644 index 3be9c77..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/result.d.mts +++ /dev/null @@ -1,37 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.mjs'; - -/** - * Retrieves the value at a given path of an object. - * If the resolved value is a function, it is invoked with the object as its `this` context. - * If the value is `undefined`, the `defaultValue` is returned. - * - * @template T - The type of object. - * @template R - The type of the value to return. - * @param {T} object - The object to query. - * @param {PropertyPath} path - The path of the property to get. - * @param {R | ((...args: any[]) => R)} [defaultValue] - The value returned if the resolved value is `undefined`. - * @returns {R} - Returns the resolved value. - * - * @example - * const obj = { a: { b: { c: 3 } } }; - * result(obj, 'a.b.c'); - * // => 3 - * - * @example - * const obj = { a: () => 5 }; - * result(obj, 'a'); - * // => 5 (calls the function `a` and returns its result) - * - * @example - * const obj = { a: { b: null } }; - * result(obj, 'a.b.c', 'default'); - * // => 'default' - * - * @example - * const obj = { a: { b: { c: 3 } } }; - * result(obj, 'a.b.d', () => 'default'); - * // => 'default' - */ -declare function result(object: any, path: PropertyPath, defaultValue?: R | ((...args: any[]) => R)): R; - -export { result }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/result.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/result.d.ts deleted file mode 100644 index 2b09ebc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/result.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.js'; - -/** - * Retrieves the value at a given path of an object. - * If the resolved value is a function, it is invoked with the object as its `this` context. - * If the value is `undefined`, the `defaultValue` is returned. - * - * @template T - The type of object. - * @template R - The type of the value to return. - * @param {T} object - The object to query. - * @param {PropertyPath} path - The path of the property to get. - * @param {R | ((...args: any[]) => R)} [defaultValue] - The value returned if the resolved value is `undefined`. - * @returns {R} - Returns the resolved value. - * - * @example - * const obj = { a: { b: { c: 3 } } }; - * result(obj, 'a.b.c'); - * // => 3 - * - * @example - * const obj = { a: () => 5 }; - * result(obj, 'a'); - * // => 5 (calls the function `a` and returns its result) - * - * @example - * const obj = { a: { b: null } }; - * result(obj, 'a.b.c', 'default'); - * // => 'default' - * - * @example - * const obj = { a: { b: { c: 3 } } }; - * result(obj, 'a.b.d', () => 'default'); - * // => 'default' - */ -declare function result(object: any, path: PropertyPath, defaultValue?: R | ((...args: any[]) => R)): R; - -export { result }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/result.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/result.js deleted file mode 100644 index 5b83976..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/result.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isKey = require('../_internal/isKey.js'); -const toKey = require('../_internal/toKey.js'); -const toPath = require('../util/toPath.js'); -const toString = require('../util/toString.js'); - -function result(object, path, defaultValue) { - if (isKey.isKey(path, object)) { - path = [path]; - } - else if (!Array.isArray(path)) { - path = toPath.toPath(toString.toString(path)); - } - const pathLength = Math.max(path.length, 1); - for (let index = 0; index < pathLength; index++) { - const value = object == null ? undefined : object[toKey.toKey(path[index])]; - if (value === undefined) { - return typeof defaultValue === 'function' ? defaultValue.call(object) : defaultValue; - } - object = typeof value === 'function' ? value.call(object) : value; - } - return object; -} - -exports.result = result; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/result.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/result.mjs deleted file mode 100644 index f4fccbe..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/result.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import { isKey } from '../_internal/isKey.mjs'; -import { toKey } from '../_internal/toKey.mjs'; -import { toPath } from '../util/toPath.mjs'; -import { toString } from '../util/toString.mjs'; - -function result(object, path, defaultValue) { - if (isKey(path, object)) { - path = [path]; - } - else if (!Array.isArray(path)) { - path = toPath(toString(path)); - } - const pathLength = Math.max(path.length, 1); - for (let index = 0; index < pathLength; index++) { - const value = object == null ? undefined : object[toKey(path[index])]; - if (value === undefined) { - return typeof defaultValue === 'function' ? defaultValue.call(object) : defaultValue; - } - object = typeof value === 'function' ? value.call(object) : value; - } - return object; -} - -export { result }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/set.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/set.d.mts deleted file mode 100644 index 8e8f5f9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/set.d.mts +++ /dev/null @@ -1,60 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.mjs'; - -/** - * Sets the value at the specified path of the given object. If any part of the path does not exist, it will be created. - * - * @template T - The type of the object. - * @param {T} object - The object to modify. - * @param {PropertyPath} path - The path of the property to set. - * @param {any} value - The value to set. - * @returns {T} - The modified object. - * - * @example - * // Set a value in a nested object - * const obj = { a: { b: { c: 3 } } }; - * set(obj, 'a.b.c', 4); - * console.log(obj.a.b.c); // 4 - * - * @example - * // Set a value in an array - * const arr = [1, 2, 3]; - * set(arr, 1, 4); - * console.log(arr[1]); // 4 - * - * @example - * // Create non-existent path and set value - * const obj = {}; - * set(obj, 'a.b.c', 4); - * console.log(obj); // { a: { b: { c: 4 } } } - */ -declare function set(object: T, path: PropertyPath, value: any): T; -/** - * Sets the value at the specified path of the given object. If any part of the path does not exist, it will be created. - * - * @template R - The return type. - * @param {object} object - The object to modify. - * @param {PropertyPath} path - The path of the property to set. - * @param {any} value - The value to set. - * @returns {R} - The modified object. - * - * @example - * // Set a value in a nested object - * const obj = { a: { b: { c: 3 } } }; - * set(obj, 'a.b.c', 4); - * console.log(obj.a.b.c); // 4 - * - * @example - * // Set a value in an array - * const arr = [1, 2, 3]; - * set(arr, 1, 4); - * console.log(arr[1]); // 4 - * - * @example - * // Create non-existent path and set value - * const obj = {}; - * set(obj, 'a.b.c', 4); - * console.log(obj); // { a: { b: { c: 4 } } } - */ -declare function set(object: object, path: PropertyPath, value: any): R; - -export { set }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/set.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/set.d.ts deleted file mode 100644 index 91b04eb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/set.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.js'; - -/** - * Sets the value at the specified path of the given object. If any part of the path does not exist, it will be created. - * - * @template T - The type of the object. - * @param {T} object - The object to modify. - * @param {PropertyPath} path - The path of the property to set. - * @param {any} value - The value to set. - * @returns {T} - The modified object. - * - * @example - * // Set a value in a nested object - * const obj = { a: { b: { c: 3 } } }; - * set(obj, 'a.b.c', 4); - * console.log(obj.a.b.c); // 4 - * - * @example - * // Set a value in an array - * const arr = [1, 2, 3]; - * set(arr, 1, 4); - * console.log(arr[1]); // 4 - * - * @example - * // Create non-existent path and set value - * const obj = {}; - * set(obj, 'a.b.c', 4); - * console.log(obj); // { a: { b: { c: 4 } } } - */ -declare function set(object: T, path: PropertyPath, value: any): T; -/** - * Sets the value at the specified path of the given object. If any part of the path does not exist, it will be created. - * - * @template R - The return type. - * @param {object} object - The object to modify. - * @param {PropertyPath} path - The path of the property to set. - * @param {any} value - The value to set. - * @returns {R} - The modified object. - * - * @example - * // Set a value in a nested object - * const obj = { a: { b: { c: 3 } } }; - * set(obj, 'a.b.c', 4); - * console.log(obj.a.b.c); // 4 - * - * @example - * // Set a value in an array - * const arr = [1, 2, 3]; - * set(arr, 1, 4); - * console.log(arr[1]); // 4 - * - * @example - * // Create non-existent path and set value - * const obj = {}; - * set(obj, 'a.b.c', 4); - * console.log(obj); // { a: { b: { c: 4 } } } - */ -declare function set(object: object, path: PropertyPath, value: any): R; - -export { set }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/set.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/set.js deleted file mode 100644 index 8f8659d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/set.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const updateWith = require('./updateWith.js'); - -function set(obj, path, value) { - return updateWith.updateWith(obj, path, () => value, () => undefined); -} - -exports.set = set; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/set.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/set.mjs deleted file mode 100644 index 1f09cf1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/set.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { updateWith } from './updateWith.mjs'; - -function set(obj, path, value) { - return updateWith(obj, path, () => value, () => undefined); -} - -export { set }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/setWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/setWith.d.mts deleted file mode 100644 index ba9c2ca..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/setWith.d.mts +++ /dev/null @@ -1,51 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.mjs'; - -/** - * Sets the value at the specified path of the given object using a customizer function. - * If any part of the path does not exist, it will be created based on the customizer's result. - * - * The customizer is invoked to produce the objects of the path. If the customizer returns - * a value, that value is used for the current path segment. If the customizer returns - * `undefined`, the method will create an appropriate object based on the path - an array - * if the next path segment is a valid array index, or an object otherwise. - * - * @template T - The type of the object. - * @param {T} object - The object to modify. - * @param {PropertyPath} path - The path of the property to set. - * @param {any} value - The value to set. - * @param {(nsValue: any, key: string, nsObject: T) => any} [customizer] - The function to customize assigned values. - * @returns {T} - The modified object. - * - * @example - * // Set a value with a customizer that creates arrays for numeric path segments - * const object = {}; - * setWith(object, '[0][1]', 'a', (value) => Array.isArray(value) ? value : []); - * // => { '0': ['a'] } - */ -declare function setWith(object: T, path: PropertyPath, value: any, customizer?: (nsValue: any, key: string, nsObject: T) => any): T; -/** - * Sets the value at the specified path of the given object using a customizer function. - * If any part of the path does not exist, it will be created based on the customizer's result. - * - * The customizer is invoked to produce the objects of the path. If the customizer returns - * a value, that value is used for the current path segment. If the customizer returns - * `undefined`, the method will create an appropriate object based on the path - an array - * if the next path segment is a valid array index, or an object otherwise. - * - * @template T - The type of the object. - * @template R - The type of the return value. - * @param {T} object - The object to modify. - * @param {PropertyPath} path - The path of the property to set. - * @param {any} value - The value to set. - * @param {(nsValue: any, key: string, nsObject: T) => any} [customizer] - The function to customize assigned values. - * @returns {R} - The modified object. - * - * @example - * // Set a value with a customizer that creates arrays for numeric path segments - * const object = {}; - * setWith(object, '[0][1]', 'a', (value) => Array.isArray(value) ? value : []); - * // => { '0': ['a'] } - */ -declare function setWith(object: T, path: PropertyPath, value: any, customizer?: (nsValue: any, key: string, nsObject: T) => any): R; - -export { setWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/setWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/setWith.d.ts deleted file mode 100644 index eb0428a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/setWith.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.js'; - -/** - * Sets the value at the specified path of the given object using a customizer function. - * If any part of the path does not exist, it will be created based on the customizer's result. - * - * The customizer is invoked to produce the objects of the path. If the customizer returns - * a value, that value is used for the current path segment. If the customizer returns - * `undefined`, the method will create an appropriate object based on the path - an array - * if the next path segment is a valid array index, or an object otherwise. - * - * @template T - The type of the object. - * @param {T} object - The object to modify. - * @param {PropertyPath} path - The path of the property to set. - * @param {any} value - The value to set. - * @param {(nsValue: any, key: string, nsObject: T) => any} [customizer] - The function to customize assigned values. - * @returns {T} - The modified object. - * - * @example - * // Set a value with a customizer that creates arrays for numeric path segments - * const object = {}; - * setWith(object, '[0][1]', 'a', (value) => Array.isArray(value) ? value : []); - * // => { '0': ['a'] } - */ -declare function setWith(object: T, path: PropertyPath, value: any, customizer?: (nsValue: any, key: string, nsObject: T) => any): T; -/** - * Sets the value at the specified path of the given object using a customizer function. - * If any part of the path does not exist, it will be created based on the customizer's result. - * - * The customizer is invoked to produce the objects of the path. If the customizer returns - * a value, that value is used for the current path segment. If the customizer returns - * `undefined`, the method will create an appropriate object based on the path - an array - * if the next path segment is a valid array index, or an object otherwise. - * - * @template T - The type of the object. - * @template R - The type of the return value. - * @param {T} object - The object to modify. - * @param {PropertyPath} path - The path of the property to set. - * @param {any} value - The value to set. - * @param {(nsValue: any, key: string, nsObject: T) => any} [customizer] - The function to customize assigned values. - * @returns {R} - The modified object. - * - * @example - * // Set a value with a customizer that creates arrays for numeric path segments - * const object = {}; - * setWith(object, '[0][1]', 'a', (value) => Array.isArray(value) ? value : []); - * // => { '0': ['a'] } - */ -declare function setWith(object: T, path: PropertyPath, value: any, customizer?: (nsValue: any, key: string, nsObject: T) => any): R; - -export { setWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/setWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/setWith.js deleted file mode 100644 index aa93cc4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/setWith.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const updateWith = require('./updateWith.js'); - -function setWith(obj, path, value, customizer) { - let customizerFn; - if (typeof customizer === 'function') { - customizerFn = customizer; - } - else { - customizerFn = () => undefined; - } - return updateWith.updateWith(obj, path, () => value, customizerFn); -} - -exports.setWith = setWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/setWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/setWith.mjs deleted file mode 100644 index 06cffb8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/setWith.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { updateWith } from './updateWith.mjs'; - -function setWith(obj, path, value, customizer) { - let customizerFn; - if (typeof customizer === 'function') { - customizerFn = customizer; - } - else { - customizerFn = () => undefined; - } - return updateWith(obj, path, () => value, customizerFn); -} - -export { setWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toDefaulted.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toDefaulted.d.mts deleted file mode 100644 index 911e16e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toDefaulted.d.mts +++ /dev/null @@ -1,122 +0,0 @@ -/** - * Creates a new object based on the provided `object`, applying default values from the `sources` to ensure that no properties are left `undefined`. - * It assigns default values to properties that are either `undefined` or come from `Object.prototype`. - * - * You can provide multiple source objects to set these default values, - * and they will be applied in the order they are given, from left to right. - * Once a property has been set, any later values for that property will be ignored. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * @template T - The type of the object being processed. - * @param {T} object - The target object. - * @returns {T} The cloned object. - */ -declare function toDefaulted(object: T): T; -/** - * Creates a new object based on the provided `object`, applying default values from the `sources` to ensure that no properties are left `undefined`. - * It assigns default values to properties that are either `undefined` or come from `Object.prototype`. - * - * You can provide multiple source objects to set these default values, - * and they will be applied in the order they are given, from left to right. - * Once a property has been set, any later values for that property will be ignored. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * @template T - The type of the object being processed. - * @template S - The type of the object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S} source - The object that specifies the default values to apply. - * @returns {NonNullable} A new object that combines the target and default values, ensuring no properties are left undefined. - */ -declare function toDefaulted(object: T, source: S): NonNullable; -/** - * Creates a new object based on the provided `object`, applying default values from the `sources` to ensure that no properties are left `undefined`. - * It assigns default values to properties that are either `undefined` or come from `Object.prototype`. - * - * You can provide multiple source objects to set these default values, - * and they will be applied in the order they are given, from left to right. - * Once a property has been set, any later values for that property will be ignored. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * @template T - The type of the object being processed. - * @template S1 - The type of the first object that provides default values. - * @template S2 - The type of the second object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S1} source1 - The first object that specifies the default values to apply. - * @param {S2} source2 - The second object that specifies the default values to apply. - * @returns {NonNullable} A new object that combines the target and default values, ensuring no properties are left undefined. - */ -declare function toDefaulted(object: T, source1: S1, source2: S2): NonNullable; -/** - * Creates a new object based on the provided `object`, applying default values from the `sources` to ensure that no properties are left `undefined`. - * It assigns default values to properties that are either `undefined` or come from `Object.prototype`. - * - * You can provide multiple source objects to set these default values, - * and they will be applied in the order they are given, from left to right. - * Once a property has been set, any later values for that property will be ignored. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * @template T - The type of the object being processed. - * @template S1 - The type of the first object that provides default values. - * @template S2 - The type of the second object that provides default values. - * @template S3 - The type of the third object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S1} source1 - The first object that specifies the default values to apply. - * @param {S2} source2 - The second object that specifies the default values to apply. - * @param {S3} source3 - The third object that specifies the default values to apply. - * @returns {NonNullable} A new object that combines the target and default values, ensuring no properties are left undefined. - */ -declare function toDefaulted(object: T, source1: S1, source2: S2, source3: S3): NonNullable; -/** - * Creates a new object based on the provided `object`, applying default values from the `sources` to ensure that no properties are left `undefined`. - * It assigns default values to properties that are either `undefined` or come from `Object.prototype`. - * - * You can provide multiple source objects to set these default values, - * and they will be applied in the order they are given, from left to right. - * Once a property has been set, any later values for that property will be ignored. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * @template T - The type of the object being processed. - * @template S1 - The type of the first object that provides default values. - * @template S2 - The type of the second object that provides default values. - * @template S3 - The type of the third object that provides default values. - * @template S4 - The type of the fourth object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S1} source1 - The first object that specifies the default values to apply. - * @param {S2} source2 - The second object that specifies the default values to apply. - * @param {S3} source3 - The third object that specifies the default values to apply. - * @param {S4} source4 - The fourth object that specifies the default values to apply. - * @returns {NonNullable} A new object that combines the target and default values, ensuring no properties are left undefined. - */ -declare function toDefaulted(object: T, source1: S1, source2: S2, source3: S3, source4: S4): NonNullable; -/** - * Creates a new object based on the provided `object`, applying default values from the `sources` to ensure that no properties are left `undefined`. - * It assigns default values to properties that are either `undefined` or come from `Object.prototype`. - * - * You can provide multiple source objects to set these default values, - * and they will be applied in the order they are given, from left to right. - * Once a property has been set, any later values for that property will be ignored. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * @template T - The type of the object being processed. - * @template S - The type of the objects that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S[]} sources - The objects that specifies the default values to apply. - * @returns {object} A new object that combines the target and default values, ensuring no properties are left undefined. - * - * @example - * toDefaulted({ a: 1 }, { a: 2, b: 2 }, { c: 3 }); // { a: 1, b: 2, c: 3 } - * toDefaulted({ a: 1, b: 2 }, { b: 3 }, { c: 3 }); // { a: 1, b: 2, c: 3 } - * toDefaulted({ a: null }, { a: 1 }); // { a: null } - * toDefaulted({ a: undefined }, { a: 1 }); // { a: 1 } - */ -declare function toDefaulted(object: T, ...sources: S[]): object; - -export { toDefaulted }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toDefaulted.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toDefaulted.d.ts deleted file mode 100644 index 911e16e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toDefaulted.d.ts +++ /dev/null @@ -1,122 +0,0 @@ -/** - * Creates a new object based on the provided `object`, applying default values from the `sources` to ensure that no properties are left `undefined`. - * It assigns default values to properties that are either `undefined` or come from `Object.prototype`. - * - * You can provide multiple source objects to set these default values, - * and they will be applied in the order they are given, from left to right. - * Once a property has been set, any later values for that property will be ignored. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * @template T - The type of the object being processed. - * @param {T} object - The target object. - * @returns {T} The cloned object. - */ -declare function toDefaulted(object: T): T; -/** - * Creates a new object based on the provided `object`, applying default values from the `sources` to ensure that no properties are left `undefined`. - * It assigns default values to properties that are either `undefined` or come from `Object.prototype`. - * - * You can provide multiple source objects to set these default values, - * and they will be applied in the order they are given, from left to right. - * Once a property has been set, any later values for that property will be ignored. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * @template T - The type of the object being processed. - * @template S - The type of the object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S} source - The object that specifies the default values to apply. - * @returns {NonNullable} A new object that combines the target and default values, ensuring no properties are left undefined. - */ -declare function toDefaulted(object: T, source: S): NonNullable; -/** - * Creates a new object based on the provided `object`, applying default values from the `sources` to ensure that no properties are left `undefined`. - * It assigns default values to properties that are either `undefined` or come from `Object.prototype`. - * - * You can provide multiple source objects to set these default values, - * and they will be applied in the order they are given, from left to right. - * Once a property has been set, any later values for that property will be ignored. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * @template T - The type of the object being processed. - * @template S1 - The type of the first object that provides default values. - * @template S2 - The type of the second object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S1} source1 - The first object that specifies the default values to apply. - * @param {S2} source2 - The second object that specifies the default values to apply. - * @returns {NonNullable} A new object that combines the target and default values, ensuring no properties are left undefined. - */ -declare function toDefaulted(object: T, source1: S1, source2: S2): NonNullable; -/** - * Creates a new object based on the provided `object`, applying default values from the `sources` to ensure that no properties are left `undefined`. - * It assigns default values to properties that are either `undefined` or come from `Object.prototype`. - * - * You can provide multiple source objects to set these default values, - * and they will be applied in the order they are given, from left to right. - * Once a property has been set, any later values for that property will be ignored. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * @template T - The type of the object being processed. - * @template S1 - The type of the first object that provides default values. - * @template S2 - The type of the second object that provides default values. - * @template S3 - The type of the third object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S1} source1 - The first object that specifies the default values to apply. - * @param {S2} source2 - The second object that specifies the default values to apply. - * @param {S3} source3 - The third object that specifies the default values to apply. - * @returns {NonNullable} A new object that combines the target and default values, ensuring no properties are left undefined. - */ -declare function toDefaulted(object: T, source1: S1, source2: S2, source3: S3): NonNullable; -/** - * Creates a new object based on the provided `object`, applying default values from the `sources` to ensure that no properties are left `undefined`. - * It assigns default values to properties that are either `undefined` or come from `Object.prototype`. - * - * You can provide multiple source objects to set these default values, - * and they will be applied in the order they are given, from left to right. - * Once a property has been set, any later values for that property will be ignored. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * @template T - The type of the object being processed. - * @template S1 - The type of the first object that provides default values. - * @template S2 - The type of the second object that provides default values. - * @template S3 - The type of the third object that provides default values. - * @template S4 - The type of the fourth object that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S1} source1 - The first object that specifies the default values to apply. - * @param {S2} source2 - The second object that specifies the default values to apply. - * @param {S3} source3 - The third object that specifies the default values to apply. - * @param {S4} source4 - The fourth object that specifies the default values to apply. - * @returns {NonNullable} A new object that combines the target and default values, ensuring no properties are left undefined. - */ -declare function toDefaulted(object: T, source1: S1, source2: S2, source3: S3, source4: S4): NonNullable; -/** - * Creates a new object based on the provided `object`, applying default values from the `sources` to ensure that no properties are left `undefined`. - * It assigns default values to properties that are either `undefined` or come from `Object.prototype`. - * - * You can provide multiple source objects to set these default values, - * and they will be applied in the order they are given, from left to right. - * Once a property has been set, any later values for that property will be ignored. - * - * Note: This function creates a new object. If you want to modify the `object`, use the `defaults` function instead. - * - * @template T - The type of the object being processed. - * @template S - The type of the objects that provides default values. - * @param {T} object - The target object that will receive default values. - * @param {S[]} sources - The objects that specifies the default values to apply. - * @returns {object} A new object that combines the target and default values, ensuring no properties are left undefined. - * - * @example - * toDefaulted({ a: 1 }, { a: 2, b: 2 }, { c: 3 }); // { a: 1, b: 2, c: 3 } - * toDefaulted({ a: 1, b: 2 }, { b: 3 }, { c: 3 }); // { a: 1, b: 2, c: 3 } - * toDefaulted({ a: null }, { a: 1 }); // { a: null } - * toDefaulted({ a: undefined }, { a: 1 }); // { a: 1 } - */ -declare function toDefaulted(object: T, ...sources: S[]): object; - -export { toDefaulted }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toDefaulted.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toDefaulted.js deleted file mode 100644 index 8fc7bdb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toDefaulted.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const cloneDeep = require('./cloneDeep.js'); -const defaults = require('./defaults.js'); - -function toDefaulted(object, ...sources) { - const cloned = cloneDeep.cloneDeep(object); - return defaults.defaults(cloned, ...sources); -} - -exports.toDefaulted = toDefaulted; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toDefaulted.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toDefaulted.mjs deleted file mode 100644 index e00cb98..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toDefaulted.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { cloneDeep } from './cloneDeep.mjs'; -import { defaults } from './defaults.mjs'; - -function toDefaulted(object, ...sources) { - const cloned = cloneDeep(object); - return defaults(cloned, ...sources); -} - -export { toDefaulted }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairs.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairs.d.mts deleted file mode 100644 index cc4bde2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairs.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Creates an array of key-value pairs from an object. - * - * @template T - * @param {Record | Record} object - The object to query. - * @returns {Array<[string, T]>} Returns the array of key-value pairs. - * - * @example - * const object = { a: 1, b: 2 }; - * toPairs(object); // [['a', 1], ['b', 2]] - */ -declare function toPairs(object?: Record | Record): Array<[string, T]>; -/** - * Creates an array of key-value pairs from an object. - * - * @param {object} object - The object to query. - * @returns {Array<[string, any]>} Returns the array of key-value pairs. - * - * @example - * const object = { a: 1, b: 2 }; - * toPairs(object); // [['a', 1], ['b', 2]] - */ -declare function toPairs(object?: object): Array<[string, any]>; - -export { toPairs }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairs.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairs.d.ts deleted file mode 100644 index cc4bde2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairs.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Creates an array of key-value pairs from an object. - * - * @template T - * @param {Record | Record} object - The object to query. - * @returns {Array<[string, T]>} Returns the array of key-value pairs. - * - * @example - * const object = { a: 1, b: 2 }; - * toPairs(object); // [['a', 1], ['b', 2]] - */ -declare function toPairs(object?: Record | Record): Array<[string, T]>; -/** - * Creates an array of key-value pairs from an object. - * - * @param {object} object - The object to query. - * @returns {Array<[string, any]>} Returns the array of key-value pairs. - * - * @example - * const object = { a: 1, b: 2 }; - * toPairs(object); // [['a', 1], ['b', 2]] - */ -declare function toPairs(object?: object): Array<[string, any]>; - -export { toPairs }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairs.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairs.js deleted file mode 100644 index 92459e4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairs.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keys = require('./keys.js'); -const mapToEntries = require('../_internal/mapToEntries.js'); -const setToEntries = require('../_internal/setToEntries.js'); - -function toPairs(object) { - if (object == null) { - return []; - } - if (object instanceof Set) { - return setToEntries.setToEntries(object); - } - if (object instanceof Map) { - return mapToEntries.mapToEntries(object); - } - const keys$1 = keys.keys(object); - const result = new Array(keys$1.length); - for (let i = 0; i < keys$1.length; i++) { - const key = keys$1[i]; - const value = object[key]; - result[i] = [key, value]; - } - return result; -} - -exports.toPairs = toPairs; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairs.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairs.mjs deleted file mode 100644 index f4eeab4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairs.mjs +++ /dev/null @@ -1,25 +0,0 @@ -import { keys } from './keys.mjs'; -import { mapToEntries } from '../_internal/mapToEntries.mjs'; -import { setToEntries } from '../_internal/setToEntries.mjs'; - -function toPairs(object) { - if (object == null) { - return []; - } - if (object instanceof Set) { - return setToEntries(object); - } - if (object instanceof Map) { - return mapToEntries(object); - } - const keys$1 = keys(object); - const result = new Array(keys$1.length); - for (let i = 0; i < keys$1.length; i++) { - const key = keys$1[i]; - const value = object[key]; - result[i] = [key, value]; - } - return result; -} - -export { toPairs }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairsIn.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairsIn.d.mts deleted file mode 100644 index b7f4263..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairsIn.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Creates an array of key-value pairs from an object, including inherited properties. - * - * @template T - * @param {Record | Record} object - The object to query. - * @returns {Array<[string, T]>} Returns the array of key-value pairs. - * - * @example - * const object = { a: 1, b: 2 }; - * toPairsIn(object); // [['a', 1], ['b', 2]] - */ -declare function toPairsIn(object?: Record | Record): Array<[string, T]>; -/** - * Creates an array of key-value pairs from an object, including inherited properties. - * - * @param {object} object - The object to query. - * @returns {Array<[string, any]>} Returns the array of key-value pairs. - * - * @example - * const object = { a: 1, b: 2 }; - * toPairsIn(object); // [['a', 1], ['b', 2]] - */ -declare function toPairsIn(object?: object): Array<[string, any]>; - -export { toPairsIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairsIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairsIn.d.ts deleted file mode 100644 index b7f4263..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairsIn.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Creates an array of key-value pairs from an object, including inherited properties. - * - * @template T - * @param {Record | Record} object - The object to query. - * @returns {Array<[string, T]>} Returns the array of key-value pairs. - * - * @example - * const object = { a: 1, b: 2 }; - * toPairsIn(object); // [['a', 1], ['b', 2]] - */ -declare function toPairsIn(object?: Record | Record): Array<[string, T]>; -/** - * Creates an array of key-value pairs from an object, including inherited properties. - * - * @param {object} object - The object to query. - * @returns {Array<[string, any]>} Returns the array of key-value pairs. - * - * @example - * const object = { a: 1, b: 2 }; - * toPairsIn(object); // [['a', 1], ['b', 2]] - */ -declare function toPairsIn(object?: object): Array<[string, any]>; - -export { toPairsIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairsIn.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairsIn.js deleted file mode 100644 index fb67111..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairsIn.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keysIn = require('./keysIn.js'); -const mapToEntries = require('../_internal/mapToEntries.js'); -const setToEntries = require('../_internal/setToEntries.js'); - -function toPairsIn(object) { - if (object == null) { - return []; - } - if (object instanceof Set) { - return setToEntries.setToEntries(object); - } - if (object instanceof Map) { - return mapToEntries.mapToEntries(object); - } - const keys = keysIn.keysIn(object); - const result = new Array(keys.length); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = object[key]; - result[i] = [key, value]; - } - return result; -} - -exports.toPairsIn = toPairsIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairsIn.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairsIn.mjs deleted file mode 100644 index ab0ab24..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/toPairsIn.mjs +++ /dev/null @@ -1,25 +0,0 @@ -import { keysIn } from './keysIn.mjs'; -import { mapToEntries } from '../_internal/mapToEntries.mjs'; -import { setToEntries } from '../_internal/setToEntries.mjs'; - -function toPairsIn(object) { - if (object == null) { - return []; - } - if (object instanceof Set) { - return setToEntries(object); - } - if (object instanceof Map) { - return mapToEntries(object); - } - const keys = keysIn(object); - const result = new Array(keys.length); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = object[key]; - result[i] = [key, value]; - } - return result; -} - -export { toPairsIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/transform.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/transform.d.mts deleted file mode 100644 index 6ceefa3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/transform.d.mts +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Traverses object values and creates a new object by accumulating them in the desired form. - * - * @template T - The type of object. - * @template R - The type of accumulator. - * @param {readonly T[]} object - The array to iterate over. - * @param {(acc: R, curr: T, index: number, arr: T[]) => void} iteratee - The function invoked per iteration. - * @param {R} [accumulator] - The initial value. - * @returns {R} Returns the accumulated value. - * - * @example - * const array = [2, 3, 4]; - * transform(array, (acc, value) => { acc.push(value * 2); }, []); - * // => [4, 6, 8] - */ -declare function transform(object: readonly T[], iteratee: (acc: R, curr: T, index: number, arr: T[]) => void, accumulator?: R): R; -/** - * Traverses object values and creates a new object by accumulating them in the desired form. - * - * @template T - The type of object. - * @template R - The type of accumulator. - * @param {Record} object - The object to iterate over. - * @param {(acc: R, curr: T, key: string, dict: Record) => void} iteratee - The function invoked per iteration. - * @param {R} [accumulator] - The initial value. - * @returns {R} Returns the accumulated value. - * - * @example - * const obj = { 'a': 1, 'b': 2, 'c': 1 }; - * transform(obj, (result, value, key) => { (result[value] || (result[value] = [])).push(key) }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } - */ -declare function transform(object: Record, iteratee: (acc: R, curr: T, key: string, dict: Record) => void, accumulator?: R): R; -/** - * Traverses object values and creates a new object by accumulating them in the desired form. - * - * @template T - The type of object. - * @template R - The type of accumulator. - * @param {T} object - The object to iterate over. - * @param {(acc: R, curr: T[keyof T], key: keyof T, dict: Record) => void} iteratee - The function invoked per iteration. - * @param {R} [accumulator] - The initial value. - * @returns {R} Returns the accumulated value. - * - * @example - * const obj = { x: 1, y: 2, z: 3 }; - * transform(obj, (acc, value, key) => { acc[key] = value * 2; }, {}); - * // => { x: 2, y: 4, z: 6 } - */ -declare function transform(object: T, iteratee: (acc: R, curr: T[keyof T], key: keyof T, dict: Record) => void, accumulator?: R): R; -/** - * Traverses object values and creates a new object by accumulating them in the desired form. - * - * @param {any[]} object - The array to iterate over. - * @returns {any[]} Returns the accumulated value. - * - * @example - * const array = [1, 2, 3]; - * transform(array); - * // => [1, 2, 3] - */ -declare function transform(object: any[]): any[]; -/** - * Traverses object values and creates a new object by accumulating them in the desired form. - * - * @param {object} object - The object to iterate over. - * @returns {Record} Returns the accumulated value. - * - * @example - * const obj = { a: 1, b: 2 }; - * transform(obj); - * // => { a: 1, b: 2 } - */ -declare function transform(object: object): Record; - -export { transform }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/transform.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/transform.d.ts deleted file mode 100644 index 6ceefa3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/transform.d.ts +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Traverses object values and creates a new object by accumulating them in the desired form. - * - * @template T - The type of object. - * @template R - The type of accumulator. - * @param {readonly T[]} object - The array to iterate over. - * @param {(acc: R, curr: T, index: number, arr: T[]) => void} iteratee - The function invoked per iteration. - * @param {R} [accumulator] - The initial value. - * @returns {R} Returns the accumulated value. - * - * @example - * const array = [2, 3, 4]; - * transform(array, (acc, value) => { acc.push(value * 2); }, []); - * // => [4, 6, 8] - */ -declare function transform(object: readonly T[], iteratee: (acc: R, curr: T, index: number, arr: T[]) => void, accumulator?: R): R; -/** - * Traverses object values and creates a new object by accumulating them in the desired form. - * - * @template T - The type of object. - * @template R - The type of accumulator. - * @param {Record} object - The object to iterate over. - * @param {(acc: R, curr: T, key: string, dict: Record) => void} iteratee - The function invoked per iteration. - * @param {R} [accumulator] - The initial value. - * @returns {R} Returns the accumulated value. - * - * @example - * const obj = { 'a': 1, 'b': 2, 'c': 1 }; - * transform(obj, (result, value, key) => { (result[value] || (result[value] = [])).push(key) }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } - */ -declare function transform(object: Record, iteratee: (acc: R, curr: T, key: string, dict: Record) => void, accumulator?: R): R; -/** - * Traverses object values and creates a new object by accumulating them in the desired form. - * - * @template T - The type of object. - * @template R - The type of accumulator. - * @param {T} object - The object to iterate over. - * @param {(acc: R, curr: T[keyof T], key: keyof T, dict: Record) => void} iteratee - The function invoked per iteration. - * @param {R} [accumulator] - The initial value. - * @returns {R} Returns the accumulated value. - * - * @example - * const obj = { x: 1, y: 2, z: 3 }; - * transform(obj, (acc, value, key) => { acc[key] = value * 2; }, {}); - * // => { x: 2, y: 4, z: 6 } - */ -declare function transform(object: T, iteratee: (acc: R, curr: T[keyof T], key: keyof T, dict: Record) => void, accumulator?: R): R; -/** - * Traverses object values and creates a new object by accumulating them in the desired form. - * - * @param {any[]} object - The array to iterate over. - * @returns {any[]} Returns the accumulated value. - * - * @example - * const array = [1, 2, 3]; - * transform(array); - * // => [1, 2, 3] - */ -declare function transform(object: any[]): any[]; -/** - * Traverses object values and creates a new object by accumulating them in the desired form. - * - * @param {object} object - The object to iterate over. - * @returns {Record} Returns the accumulated value. - * - * @example - * const obj = { a: 1, b: 2 }; - * transform(obj); - * // => { a: 1, b: 2 } - */ -declare function transform(object: object): Record; - -export { transform }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/transform.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/transform.js deleted file mode 100644 index 5abd033..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/transform.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const isFunction = require('../../predicate/isFunction.js'); -const forEach = require('../array/forEach.js'); -const isBuffer = require('../predicate/isBuffer.js'); -const isObject = require('../predicate/isObject.js'); -const isTypedArray = require('../predicate/isTypedArray.js'); -const iteratee = require('../util/iteratee.js'); - -function transform(object, iteratee$1 = identity.identity, accumulator) { - const isArrayOrBufferOrTypedArray = Array.isArray(object) || isBuffer.isBuffer(object) || isTypedArray.isTypedArray(object); - iteratee$1 = iteratee.iteratee(iteratee$1); - if (accumulator == null) { - if (isArrayOrBufferOrTypedArray) { - accumulator = []; - } - else if (isObject.isObject(object) && isFunction.isFunction(object.constructor)) { - accumulator = Object.create(Object.getPrototypeOf(object)); - } - else { - accumulator = {}; - } - } - if (object == null) { - return accumulator; - } - forEach.forEach(object, (value, key, object) => iteratee$1(accumulator, value, key, object)); - return accumulator; -} - -exports.transform = transform; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/transform.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/transform.mjs deleted file mode 100644 index 6bf2172..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/transform.mjs +++ /dev/null @@ -1,30 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { isFunction } from '../../predicate/isFunction.mjs'; -import { forEach } from '../array/forEach.mjs'; -import { isBuffer } from '../predicate/isBuffer.mjs'; -import { isObject } from '../predicate/isObject.mjs'; -import { isTypedArray } from '../predicate/isTypedArray.mjs'; -import { iteratee } from '../util/iteratee.mjs'; - -function transform(object, iteratee$1 = identity, accumulator) { - const isArrayOrBufferOrTypedArray = Array.isArray(object) || isBuffer(object) || isTypedArray(object); - iteratee$1 = iteratee(iteratee$1); - if (accumulator == null) { - if (isArrayOrBufferOrTypedArray) { - accumulator = []; - } - else if (isObject(object) && isFunction(object.constructor)) { - accumulator = Object.create(Object.getPrototypeOf(object)); - } - else { - accumulator = {}; - } - } - if (object == null) { - return accumulator; - } - forEach(object, (value, key, object) => iteratee$1(accumulator, value, key, object)); - return accumulator; -} - -export { transform }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/unset.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/unset.d.mts deleted file mode 100644 index b0fc582..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/unset.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Removes the property at the given path of the object. - * - * @param {unknown} obj - The object to modify. - * @param {PropertyKey | readonly PropertyKey[]} path - The path of the property to unset. - * @returns {boolean} - Returns true if the property is deleted, else false. - * - * @example - * const obj = { a: { b: { c: 42 } } }; - * unset(obj, 'a.b.c'); // true - * console.log(obj); // { a: { b: {} } } - * - * @example - * const obj = { a: { b: { c: 42 } } }; - * unset(obj, ['a', 'b', 'c']); // true - * console.log(obj); // { a: { b: {} } } - */ -declare function unset(obj: any, path: PropertyKey | readonly PropertyKey[]): boolean; - -export { unset }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/unset.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/unset.d.ts deleted file mode 100644 index b0fc582..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/unset.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Removes the property at the given path of the object. - * - * @param {unknown} obj - The object to modify. - * @param {PropertyKey | readonly PropertyKey[]} path - The path of the property to unset. - * @returns {boolean} - Returns true if the property is deleted, else false. - * - * @example - * const obj = { a: { b: { c: 42 } } }; - * unset(obj, 'a.b.c'); // true - * console.log(obj); // { a: { b: {} } } - * - * @example - * const obj = { a: { b: { c: 42 } } }; - * unset(obj, ['a', 'b', 'c']); // true - * console.log(obj); // { a: { b: {} } } - */ -declare function unset(obj: any, path: PropertyKey | readonly PropertyKey[]): boolean; - -export { unset }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/unset.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/unset.js deleted file mode 100644 index f887fed..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/unset.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const get = require('./get.js'); -const isUnsafeProperty = require('../../_internal/isUnsafeProperty.js'); -const isDeepKey = require('../_internal/isDeepKey.js'); -const toKey = require('../_internal/toKey.js'); -const toPath = require('../util/toPath.js'); - -function unset(obj, path) { - if (obj == null) { - return true; - } - switch (typeof path) { - case 'symbol': - case 'number': - case 'object': { - if (Array.isArray(path)) { - return unsetWithPath(obj, path); - } - if (typeof path === 'number') { - path = toKey.toKey(path); - } - else if (typeof path === 'object') { - if (Object.is(path?.valueOf(), -0)) { - path = '-0'; - } - else { - path = String(path); - } - } - if (isUnsafeProperty.isUnsafeProperty(path)) { - return false; - } - if (obj?.[path] === undefined) { - return true; - } - try { - delete obj[path]; - return true; - } - catch { - return false; - } - } - case 'string': { - if (obj?.[path] === undefined && isDeepKey.isDeepKey(path)) { - return unsetWithPath(obj, toPath.toPath(path)); - } - if (isUnsafeProperty.isUnsafeProperty(path)) { - return false; - } - try { - delete obj[path]; - return true; - } - catch { - return false; - } - } - } -} -function unsetWithPath(obj, path) { - const parent = path.length === 1 ? obj : get.get(obj, path.slice(0, -1)); - const lastKey = path[path.length - 1]; - if (parent?.[lastKey] === undefined) { - return true; - } - if (isUnsafeProperty.isUnsafeProperty(lastKey)) { - return false; - } - try { - delete parent[lastKey]; - return true; - } - catch { - return false; - } -} - -exports.unset = unset; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/unset.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/unset.mjs deleted file mode 100644 index a787904..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/unset.mjs +++ /dev/null @@ -1,78 +0,0 @@ -import { get } from './get.mjs'; -import { isUnsafeProperty } from '../../_internal/isUnsafeProperty.mjs'; -import { isDeepKey } from '../_internal/isDeepKey.mjs'; -import { toKey } from '../_internal/toKey.mjs'; -import { toPath } from '../util/toPath.mjs'; - -function unset(obj, path) { - if (obj == null) { - return true; - } - switch (typeof path) { - case 'symbol': - case 'number': - case 'object': { - if (Array.isArray(path)) { - return unsetWithPath(obj, path); - } - if (typeof path === 'number') { - path = toKey(path); - } - else if (typeof path === 'object') { - if (Object.is(path?.valueOf(), -0)) { - path = '-0'; - } - else { - path = String(path); - } - } - if (isUnsafeProperty(path)) { - return false; - } - if (obj?.[path] === undefined) { - return true; - } - try { - delete obj[path]; - return true; - } - catch { - return false; - } - } - case 'string': { - if (obj?.[path] === undefined && isDeepKey(path)) { - return unsetWithPath(obj, toPath(path)); - } - if (isUnsafeProperty(path)) { - return false; - } - try { - delete obj[path]; - return true; - } - catch { - return false; - } - } - } -} -function unsetWithPath(obj, path) { - const parent = path.length === 1 ? obj : get(obj, path.slice(0, -1)); - const lastKey = path[path.length - 1]; - if (parent?.[lastKey] === undefined) { - return true; - } - if (isUnsafeProperty(lastKey)) { - return false; - } - try { - delete parent[lastKey]; - return true; - } - catch { - return false; - } -} - -export { unset }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/update.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/update.d.mts deleted file mode 100644 index 085557f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/update.d.mts +++ /dev/null @@ -1,14 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.mjs'; - -/** - * Updates the value at the specified path of the given object using an updater function. - * If any part of the path does not exist, it will be created. - * - * @param {object} obj - The object to modify. - * @param {PropertyPath} path - The path of the property to update. - * @param {(value: any) => any} updater - The function to produce the updated value. - * @returns {any} - The modified object. - */ -declare function update(obj: object, path: PropertyPath, updater: (value: any) => any): any; - -export { update }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/update.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/update.d.ts deleted file mode 100644 index 0204a68..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/update.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.js'; - -/** - * Updates the value at the specified path of the given object using an updater function. - * If any part of the path does not exist, it will be created. - * - * @param {object} obj - The object to modify. - * @param {PropertyPath} path - The path of the property to update. - * @param {(value: any) => any} updater - The function to produce the updated value. - * @returns {any} - The modified object. - */ -declare function update(obj: object, path: PropertyPath, updater: (value: any) => any): any; - -export { update }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/update.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/update.js deleted file mode 100644 index 1534d62..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/update.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const updateWith = require('./updateWith.js'); - -function update(obj, path, updater) { - return updateWith.updateWith(obj, path, updater, () => undefined); -} - -exports.update = update; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/update.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/update.mjs deleted file mode 100644 index 0bce4ad..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/update.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { updateWith } from './updateWith.mjs'; - -function update(obj, path, updater) { - return updateWith(obj, path, updater, () => undefined); -} - -export { update }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/updateWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/updateWith.d.mts deleted file mode 100644 index bccdd9d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/updateWith.d.mts +++ /dev/null @@ -1,39 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.mjs'; - -/** - * Updates the value at the specified path of the given object using an updater function and a customizer. - * If any part of the path does not exist, it will be created. - * - * @template T - The type of the object. - * @param {T} object - The object to modify. - * @param {PropertyPath} path - The path of the property to update. - * @param {(oldValue: any) => any} updater - The function to produce the updated value. - * @param {(value: any, key: string, object: T) => any} customizer - The function to customize the update process. - * @returns {T} - The modified object. - * - * @example - * const object = { 'a': [{ 'b': { 'c': 3 } }] }; - * updateWith(object, 'a[0].b.c', (n) => n * n); - * // => { 'a': [{ 'b': { 'c': 9 } }] } - */ -declare function updateWith(object: T, path: PropertyPath, updater: (oldValue: any) => any, customizer?: (value: any, key: string, object: T) => any): T; -/** - * Updates the value at the specified path of the given object using an updater function and a customizer. - * If any part of the path does not exist, it will be created. - * - * @template T - The type of the object. - * @template R - The type of the return value. - * @param {T} object - The object to modify. - * @param {PropertyPath} path - The path of the property to update. - * @param {(oldValue: any) => any} updater - The function to produce the updated value. - * @param {(value: any, key: string, object: T) => any} customizer - The function to customize the update process. - * @returns {R} - The modified object. - * - * @example - * const object = { 'a': [{ 'b': { 'c': 3 } }] }; - * updateWith(object, 'a[0].b.c', (n) => n * n); - * // => { 'a': [{ 'b': { 'c': 9 } }] } - */ -declare function updateWith(object: T, path: PropertyPath, updater: (oldValue: any) => any, customizer?: (value: any, key: string, object: T) => any): R; - -export { updateWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/updateWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/updateWith.d.ts deleted file mode 100644 index 4900f87..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/updateWith.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.js'; - -/** - * Updates the value at the specified path of the given object using an updater function and a customizer. - * If any part of the path does not exist, it will be created. - * - * @template T - The type of the object. - * @param {T} object - The object to modify. - * @param {PropertyPath} path - The path of the property to update. - * @param {(oldValue: any) => any} updater - The function to produce the updated value. - * @param {(value: any, key: string, object: T) => any} customizer - The function to customize the update process. - * @returns {T} - The modified object. - * - * @example - * const object = { 'a': [{ 'b': { 'c': 3 } }] }; - * updateWith(object, 'a[0].b.c', (n) => n * n); - * // => { 'a': [{ 'b': { 'c': 9 } }] } - */ -declare function updateWith(object: T, path: PropertyPath, updater: (oldValue: any) => any, customizer?: (value: any, key: string, object: T) => any): T; -/** - * Updates the value at the specified path of the given object using an updater function and a customizer. - * If any part of the path does not exist, it will be created. - * - * @template T - The type of the object. - * @template R - The type of the return value. - * @param {T} object - The object to modify. - * @param {PropertyPath} path - The path of the property to update. - * @param {(oldValue: any) => any} updater - The function to produce the updated value. - * @param {(value: any, key: string, object: T) => any} customizer - The function to customize the update process. - * @returns {R} - The modified object. - * - * @example - * const object = { 'a': [{ 'b': { 'c': 3 } }] }; - * updateWith(object, 'a[0].b.c', (n) => n * n); - * // => { 'a': [{ 'b': { 'c': 9 } }] } - */ -declare function updateWith(object: T, path: PropertyPath, updater: (oldValue: any) => any, customizer?: (value: any, key: string, object: T) => any): R; - -export { updateWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/updateWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/updateWith.js deleted file mode 100644 index 30a8994..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/updateWith.js +++ /dev/null @@ -1,57 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const get = require('./get.js'); -const isUnsafeProperty = require('../../_internal/isUnsafeProperty.js'); -const assignValue = require('../_internal/assignValue.js'); -const isIndex = require('../_internal/isIndex.js'); -const isKey = require('../_internal/isKey.js'); -const toKey = require('../_internal/toKey.js'); -const isObject = require('../predicate/isObject.js'); -const toPath = require('../util/toPath.js'); - -function updateWith(obj, path, updater, customizer) { - if (obj == null && !isObject.isObject(obj)) { - return obj; - } - let resolvedPath; - if (isKey.isKey(path, obj)) { - resolvedPath = [path]; - } - else if (Array.isArray(path)) { - resolvedPath = path; - } - else { - resolvedPath = toPath.toPath(path); - } - const updateValue = updater(get.get(obj, resolvedPath)); - let current = obj; - for (let i = 0; i < resolvedPath.length && current != null; i++) { - const key = toKey.toKey(resolvedPath[i]); - if (isUnsafeProperty.isUnsafeProperty(key)) { - continue; - } - let newValue; - if (i === resolvedPath.length - 1) { - newValue = updateValue; - } - else { - const objValue = current[key]; - const customizerResult = customizer?.(objValue, key, obj); - newValue = - customizerResult !== undefined - ? customizerResult - : isObject.isObject(objValue) - ? objValue - : isIndex.isIndex(resolvedPath[i + 1]) - ? [] - : {}; - } - assignValue.assignValue(current, key, newValue); - current = current[key]; - } - return obj; -} - -exports.updateWith = updateWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/updateWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/updateWith.mjs deleted file mode 100644 index 7d2058b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/updateWith.mjs +++ /dev/null @@ -1,53 +0,0 @@ -import { get } from './get.mjs'; -import { isUnsafeProperty } from '../../_internal/isUnsafeProperty.mjs'; -import { assignValue } from '../_internal/assignValue.mjs'; -import { isIndex } from '../_internal/isIndex.mjs'; -import { isKey } from '../_internal/isKey.mjs'; -import { toKey } from '../_internal/toKey.mjs'; -import { isObject } from '../predicate/isObject.mjs'; -import { toPath } from '../util/toPath.mjs'; - -function updateWith(obj, path, updater, customizer) { - if (obj == null && !isObject(obj)) { - return obj; - } - let resolvedPath; - if (isKey(path, obj)) { - resolvedPath = [path]; - } - else if (Array.isArray(path)) { - resolvedPath = path; - } - else { - resolvedPath = toPath(path); - } - const updateValue = updater(get(obj, resolvedPath)); - let current = obj; - for (let i = 0; i < resolvedPath.length && current != null; i++) { - const key = toKey(resolvedPath[i]); - if (isUnsafeProperty(key)) { - continue; - } - let newValue; - if (i === resolvedPath.length - 1) { - newValue = updateValue; - } - else { - const objValue = current[key]; - const customizerResult = customizer?.(objValue, key, obj); - newValue = - customizerResult !== undefined - ? customizerResult - : isObject(objValue) - ? objValue - : isIndex(resolvedPath[i + 1]) - ? [] - : {}; - } - assignValue(current, key, newValue); - current = current[key]; - } - return obj; -} - -export { updateWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/values.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/values.d.mts deleted file mode 100644 index aaab0ea..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/values.d.mts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Creates an array of the own enumerable property values of `object`. - * - * @template T - * @param {Record | Record | ArrayLike | null | undefined} object - The object to query. - * @returns {T[]} Returns an array of property values. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * values(obj); // => [1, 2, 3] - */ -declare function values(object: Record | Record | ArrayLike | null | undefined): T[]; -/** - * Creates an array of the own enumerable property values of `object`. - * - * @template T - * @param {T | null | undefined} object - The object to query. - * @returns {Array} Returns an array of property values. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * values(obj); // => [1, 2, 3] - */ -declare function values(object: T | null | undefined): Array; -/** - * Creates an array of the own enumerable property values of `object`. - * - * @param {any} object - The object to query. - * @returns {any[]} Returns an array of property values. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * values(obj); // => [1, 2, 3] - */ -declare function values(object: any): any[]; - -export { values }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/values.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/values.d.ts deleted file mode 100644 index aaab0ea..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/values.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Creates an array of the own enumerable property values of `object`. - * - * @template T - * @param {Record | Record | ArrayLike | null | undefined} object - The object to query. - * @returns {T[]} Returns an array of property values. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * values(obj); // => [1, 2, 3] - */ -declare function values(object: Record | Record | ArrayLike | null | undefined): T[]; -/** - * Creates an array of the own enumerable property values of `object`. - * - * @template T - * @param {T | null | undefined} object - The object to query. - * @returns {Array} Returns an array of property values. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * values(obj); // => [1, 2, 3] - */ -declare function values(object: T | null | undefined): Array; -/** - * Creates an array of the own enumerable property values of `object`. - * - * @param {any} object - The object to query. - * @returns {any[]} Returns an array of property values. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * values(obj); // => [1, 2, 3] - */ -declare function values(object: any): any[]; - -export { values }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/values.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/values.js deleted file mode 100644 index c804f9c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/values.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function values(object) { - if (object == null) { - return []; - } - return Object.values(object); -} - -exports.values = values; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/values.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/values.mjs deleted file mode 100644 index 5aa6d8d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/values.mjs +++ /dev/null @@ -1,8 +0,0 @@ -function values(object) { - if (object == null) { - return []; - } - return Object.values(object); -} - -export { values }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/valuesIn.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/valuesIn.d.mts deleted file mode 100644 index 0f04d1c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/valuesIn.d.mts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Retrieves the values from an object, including those inherited from its prototype. - * - * @template T - * @param {Record | Record | ArrayLike | null | undefined} object - The object to query. - * @returns {T[]} Returns an array of property values. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * valuesIn(obj); // => [1, 2, 3] - */ -declare function valuesIn(object: Record | Record | ArrayLike | null | undefined): T[]; -/** - * Retrieves the values from an object, including those inherited from its prototype. - * - * @template T - * @param {T | null | undefined} object - The object to query. - * @returns {Array} Returns an array of property values. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * valuesIn(obj); // => [1, 2, 3] - */ -declare function valuesIn(object: T | null | undefined): Array; - -export { valuesIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/valuesIn.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/valuesIn.d.ts deleted file mode 100644 index 0f04d1c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/valuesIn.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Retrieves the values from an object, including those inherited from its prototype. - * - * @template T - * @param {Record | Record | ArrayLike | null | undefined} object - The object to query. - * @returns {T[]} Returns an array of property values. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * valuesIn(obj); // => [1, 2, 3] - */ -declare function valuesIn(object: Record | Record | ArrayLike | null | undefined): T[]; -/** - * Retrieves the values from an object, including those inherited from its prototype. - * - * @template T - * @param {T | null | undefined} object - The object to query. - * @returns {Array} Returns an array of property values. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * valuesIn(obj); // => [1, 2, 3] - */ -declare function valuesIn(object: T | null | undefined): Array; - -export { valuesIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/valuesIn.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/valuesIn.js deleted file mode 100644 index ead6c63..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/valuesIn.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keysIn = require('./keysIn.js'); - -function valuesIn(object) { - const keys = keysIn.keysIn(object); - const result = new Array(keys.length); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - result[i] = object[key]; - } - return result; -} - -exports.valuesIn = valuesIn; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/valuesIn.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/valuesIn.mjs deleted file mode 100644 index d16e375..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/object/valuesIn.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import { keysIn } from './keysIn.mjs'; - -function valuesIn(object) { - const keys = keysIn(object); - const result = new Array(keys.length); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - result[i] = object[key]; - } - return result; -} - -export { valuesIn }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conforms.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conforms.d.mts deleted file mode 100644 index 006cbcd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conforms.d.mts +++ /dev/null @@ -1,24 +0,0 @@ -import { ConformsPredicateObject } from '../_internal/ConformsPredicateObject.mjs'; - -/** - * Creates a function that invokes the predicate properties of `source` with the corresponding property values of a given object, returning `true` if all predicates return truthy, else `false`. - * - * Note: The created function is equivalent to `conformsTo` with source partially applied. - * - * @param {Record boolean>} source The object of property predicates to conform to. - * @returns {(object: Record) => boolean} Returns the new spec function. - * - * @example - * const isPositive = (n) => n > 0; - * const isEven = (n) => n % 2 === 0; - * const predicates = { a: isPositive, b: isEven }; - * const conform = conforms(predicates); - * - * console.log(conform({ a: 2, b: 4 })); // true - * console.log(conform({ a: -1, b: 4 })); // false - * console.log(conform({ a: 2, b: 3 })); // false - * console.log(conform({ a: 0, b: 2 })); // false - */ -declare function conforms(source: ConformsPredicateObject): (value: T) => boolean; - -export { conforms }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conforms.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conforms.d.ts deleted file mode 100644 index 9fc648b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conforms.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ConformsPredicateObject } from '../_internal/ConformsPredicateObject.js'; - -/** - * Creates a function that invokes the predicate properties of `source` with the corresponding property values of a given object, returning `true` if all predicates return truthy, else `false`. - * - * Note: The created function is equivalent to `conformsTo` with source partially applied. - * - * @param {Record boolean>} source The object of property predicates to conform to. - * @returns {(object: Record) => boolean} Returns the new spec function. - * - * @example - * const isPositive = (n) => n > 0; - * const isEven = (n) => n % 2 === 0; - * const predicates = { a: isPositive, b: isEven }; - * const conform = conforms(predicates); - * - * console.log(conform({ a: 2, b: 4 })); // true - * console.log(conform({ a: -1, b: 4 })); // false - * console.log(conform({ a: 2, b: 3 })); // false - * console.log(conform({ a: 0, b: 2 })); // false - */ -declare function conforms(source: ConformsPredicateObject): (value: T) => boolean; - -export { conforms }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conforms.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conforms.js deleted file mode 100644 index 20b9328..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conforms.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const conformsTo = require('./conformsTo.js'); -const cloneDeep = require('../../object/cloneDeep.js'); - -function conforms(source) { - source = cloneDeep.cloneDeep(source); - return function (object) { - return conformsTo.conformsTo(object, source); - }; -} - -exports.conforms = conforms; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conforms.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conforms.mjs deleted file mode 100644 index 7d3bc83..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conforms.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { conformsTo } from './conformsTo.mjs'; -import { cloneDeep } from '../../object/cloneDeep.mjs'; - -function conforms(source) { - source = cloneDeep(source); - return function (object) { - return conformsTo(object, source); - }; -} - -export { conforms }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conformsTo.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conformsTo.d.mts deleted file mode 100644 index eefc244..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conformsTo.d.mts +++ /dev/null @@ -1,32 +0,0 @@ -import { ConformsPredicateObject } from '../_internal/ConformsPredicateObject.mjs'; - -/** - * Checks if `object` conforms to `source` by invoking the predicate properties of `source` with the corresponding property values of `object`. - * - * Note: This method is equivalent to `conforms` when source is partially applied. - * - * @template T - The type of the target object. - * @param {T} target The object to inspect. - * @param {ConformsPredicateObject} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - * - * @example - * - * const object = { 'a': 1, 'b': 2 }; - * const source = { - * 'a': (n) => n > 0, - * 'b': (n) => n > 1 - * }; - * - * console.log(conformsTo(object, source)); // => true - * - * const source2 = { - * 'a': (n) => n > 1, - * 'b': (n) => n > 1 - * }; - * - * console.log(conformsTo(object, source2)); // => false - */ -declare function conformsTo(target: T, source: ConformsPredicateObject): boolean; - -export { conformsTo }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conformsTo.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conformsTo.d.ts deleted file mode 100644 index ecc7871..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conformsTo.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { ConformsPredicateObject } from '../_internal/ConformsPredicateObject.js'; - -/** - * Checks if `object` conforms to `source` by invoking the predicate properties of `source` with the corresponding property values of `object`. - * - * Note: This method is equivalent to `conforms` when source is partially applied. - * - * @template T - The type of the target object. - * @param {T} target The object to inspect. - * @param {ConformsPredicateObject} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - * - * @example - * - * const object = { 'a': 1, 'b': 2 }; - * const source = { - * 'a': (n) => n > 0, - * 'b': (n) => n > 1 - * }; - * - * console.log(conformsTo(object, source)); // => true - * - * const source2 = { - * 'a': (n) => n > 1, - * 'b': (n) => n > 1 - * }; - * - * console.log(conformsTo(object, source2)); // => false - */ -declare function conformsTo(target: T, source: ConformsPredicateObject): boolean; - -export { conformsTo }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conformsTo.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conformsTo.js deleted file mode 100644 index 45e3851..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conformsTo.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function conformsTo(target, source) { - if (source == null) { - return true; - } - if (target == null) { - return Object.keys(source).length === 0; - } - const keys = Object.keys(source); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const predicate = source[key]; - const value = target[key]; - if (value === undefined && !(key in target)) { - return false; - } - if (typeof predicate === 'function' && !predicate(value)) { - return false; - } - } - return true; -} - -exports.conformsTo = conformsTo; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conformsTo.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conformsTo.mjs deleted file mode 100644 index 126f8c6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/conformsTo.mjs +++ /dev/null @@ -1,23 +0,0 @@ -function conformsTo(target, source) { - if (source == null) { - return true; - } - if (target == null) { - return Object.keys(source).length === 0; - } - const keys = Object.keys(source); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const predicate = source[key]; - const value = target[key]; - if (value === undefined && !(key in target)) { - return false; - } - if (typeof predicate === 'function' && !predicate(value)) { - return false; - } - } - return true; -} - -export { conformsTo }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArguments.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArguments.d.mts deleted file mode 100644 index 7d3fd2a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArguments.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is an arguments object. - * - * This function tests whether the provided value is an arguments object or not. - * It returns `true` if the value is an arguments object, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to an arguments object. - * - * @param {any} value - The value to test if it is an arguments object. - * @returns {value is IArguments} `true` if the value is an arguments, `false` otherwise. - * - * @example - * const args = (function() { return arguments; })(); - * const strictArgs = (function() { 'use strict'; return arguments; })(); - * const value = [1, 2, 3]; - * - * console.log(isArguments(args)); // true - * console.log(isArguments(strictArgs)); // true - * console.log(isArguments(value)); // false - */ -declare function isArguments(value?: any): value is IArguments; - -export { isArguments }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArguments.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArguments.d.ts deleted file mode 100644 index 7d3fd2a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArguments.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is an arguments object. - * - * This function tests whether the provided value is an arguments object or not. - * It returns `true` if the value is an arguments object, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to an arguments object. - * - * @param {any} value - The value to test if it is an arguments object. - * @returns {value is IArguments} `true` if the value is an arguments, `false` otherwise. - * - * @example - * const args = (function() { return arguments; })(); - * const strictArgs = (function() { 'use strict'; return arguments; })(); - * const value = [1, 2, 3]; - * - * console.log(isArguments(args)); // true - * console.log(isArguments(strictArgs)); // true - * console.log(isArguments(value)); // false - */ -declare function isArguments(value?: any): value is IArguments; - -export { isArguments }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArguments.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArguments.js deleted file mode 100644 index 049cc82..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArguments.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const getTag = require('../_internal/getTag.js'); - -function isArguments(value) { - return value !== null && typeof value === 'object' && getTag.getTag(value) === '[object Arguments]'; -} - -exports.isArguments = isArguments; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArguments.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArguments.mjs deleted file mode 100644 index 610289c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArguments.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { getTag } from '../_internal/getTag.mjs'; - -function isArguments(value) { - return value !== null && typeof value === 'object' && getTag(value) === '[object Arguments]'; -} - -export { isArguments }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArray.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArray.d.mts deleted file mode 100644 index 75274b2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArray.d.mts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Checks if the given value is an array. - * - * This function tests whether the provided value is an array or not. - * It returns `true` if the value is an array, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to an array. - * - * @param {any} value - The value to test if it is an array. - * @returns {value is any[]} `true` if the value is an array, `false` otherwise. - * - * @example - * const value1 = [1, 2, 3]; - * const value2 = 'abc'; - * const value3 = () => {}; - * - * console.log(isArray(value1)); // true - * console.log(isArray(value2)); // false - * console.log(isArray(value3)); // false - */ -declare function isArray(value?: any): value is any[]; -/** - * Checks if the given value is an array with generic type support. - * - * This function tests whether the provided value is an array or not. - * It returns `true` if the value is an array, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to an array. - * - * @template T - The type of elements in the array. - * @param {any} value - The value to test if it is an array. - * @returns {value is any[]} `true` if the value is an array, `false` otherwise. - * - * @example - * const value1 = [1, 2, 3]; - * const value2 = 'abc'; - * const value3 = () => {}; - * - * console.log(isArray(value1)); // true - * console.log(isArray(value2)); // false - * console.log(isArray(value3)); // false - */ -declare function isArray(value?: any): value is any[]; - -export { isArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArray.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArray.d.ts deleted file mode 100644 index 75274b2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArray.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Checks if the given value is an array. - * - * This function tests whether the provided value is an array or not. - * It returns `true` if the value is an array, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to an array. - * - * @param {any} value - The value to test if it is an array. - * @returns {value is any[]} `true` if the value is an array, `false` otherwise. - * - * @example - * const value1 = [1, 2, 3]; - * const value2 = 'abc'; - * const value3 = () => {}; - * - * console.log(isArray(value1)); // true - * console.log(isArray(value2)); // false - * console.log(isArray(value3)); // false - */ -declare function isArray(value?: any): value is any[]; -/** - * Checks if the given value is an array with generic type support. - * - * This function tests whether the provided value is an array or not. - * It returns `true` if the value is an array, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to an array. - * - * @template T - The type of elements in the array. - * @param {any} value - The value to test if it is an array. - * @returns {value is any[]} `true` if the value is an array, `false` otherwise. - * - * @example - * const value1 = [1, 2, 3]; - * const value2 = 'abc'; - * const value3 = () => {}; - * - * console.log(isArray(value1)); // true - * console.log(isArray(value2)); // false - * console.log(isArray(value3)); // false - */ -declare function isArray(value?: any): value is any[]; - -export { isArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArray.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArray.js deleted file mode 100644 index 504f4b3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArray.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isArray(value) { - return Array.isArray(value); -} - -exports.isArray = isArray; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArray.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArray.mjs deleted file mode 100644 index 67f08aa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArray.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isArray(value) { - return Array.isArray(value); -} - -export { isArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayBuffer.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayBuffer.d.mts deleted file mode 100644 index 303239e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayBuffer.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `ArrayBuffer`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `ArrayBuffer`. - * - * @param {any} value The value to check if it is a `ArrayBuffer`. - * @returns {value is ArrayBuffer} Returns `true` if `value` is a `ArrayBuffer`, else `false`. - * - * @example - * const value1 = new ArrayBuffer(); - * const value2 = new Array(); - * const value3 = new Map(); - * - * console.log(isArrayBuffer(value1)); // true - * console.log(isArrayBuffer(value2)); // false - * console.log(isArrayBuffer(value3)); // false - */ -declare function isArrayBuffer(value?: any): value is ArrayBuffer; - -export { isArrayBuffer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayBuffer.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayBuffer.d.ts deleted file mode 100644 index 303239e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayBuffer.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `ArrayBuffer`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `ArrayBuffer`. - * - * @param {any} value The value to check if it is a `ArrayBuffer`. - * @returns {value is ArrayBuffer} Returns `true` if `value` is a `ArrayBuffer`, else `false`. - * - * @example - * const value1 = new ArrayBuffer(); - * const value2 = new Array(); - * const value3 = new Map(); - * - * console.log(isArrayBuffer(value1)); // true - * console.log(isArrayBuffer(value2)); // false - * console.log(isArrayBuffer(value3)); // false - */ -declare function isArrayBuffer(value?: any): value is ArrayBuffer; - -export { isArrayBuffer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayBuffer.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayBuffer.js deleted file mode 100644 index 65c1da1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayBuffer.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArrayBuffer$1 = require('../../predicate/isArrayBuffer.js'); - -function isArrayBuffer(value) { - return isArrayBuffer$1.isArrayBuffer(value); -} - -exports.isArrayBuffer = isArrayBuffer; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayBuffer.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayBuffer.mjs deleted file mode 100644 index 971c55d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayBuffer.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { isArrayBuffer as isArrayBuffer$1 } from '../../predicate/isArrayBuffer.mjs'; - -function isArrayBuffer(value) { - return isArrayBuffer$1(value); -} - -export { isArrayBuffer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.d.mts deleted file mode 100644 index 316c3ec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.d.mts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Checks if `value` is array-like. This overload is for compatibility with lodash type checking. - * - * @param {T} t The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - */ -declare function isArrayLike(t: T): boolean; -/** - * Checks if `value` is array-like. Functions, null, and undefined are never array-like. - * - * @param {((...args: any[]) => any) | null | undefined} value The value to check. - * @returns {value is never} Returns `false` for functions, null, and undefined. - */ -declare function isArrayLike(value: ((...args: any[]) => any) | null | undefined): value is never; -/** - * Checks if `value` is array-like. - * - * @param {any} value The value to check. - * @returns {value is { length: number }} Returns `true` if `value` is array-like, else `false`. - */ -declare function isArrayLike(value: any): value is { - length: number; -}; - -export { isArrayLike }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.d.ts deleted file mode 100644 index 316c3ec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Checks if `value` is array-like. This overload is for compatibility with lodash type checking. - * - * @param {T} t The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - */ -declare function isArrayLike(t: T): boolean; -/** - * Checks if `value` is array-like. Functions, null, and undefined are never array-like. - * - * @param {((...args: any[]) => any) | null | undefined} value The value to check. - * @returns {value is never} Returns `false` for functions, null, and undefined. - */ -declare function isArrayLike(value: ((...args: any[]) => any) | null | undefined): value is never; -/** - * Checks if `value` is array-like. - * - * @param {any} value The value to check. - * @returns {value is { length: number }} Returns `true` if `value` is array-like, else `false`. - */ -declare function isArrayLike(value: any): value is { - length: number; -}; - -export { isArrayLike }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js deleted file mode 100644 index 9ee3e91..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isLength = require('../../predicate/isLength.js'); - -function isArrayLike(value) { - return value != null && typeof value !== 'function' && isLength.isLength(value.length); -} - -exports.isArrayLike = isArrayLike; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.mjs deleted file mode 100644 index 174da6d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { isLength } from '../../predicate/isLength.mjs'; - -function isArrayLike(value) { - return value != null && typeof value !== 'function' && isLength(value.length); -} - -export { isArrayLike }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.d.mts deleted file mode 100644 index fa2751e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.d.mts +++ /dev/null @@ -1,9 +0,0 @@ -declare function isArrayLikeObject(value: T): boolean; -declare function isArrayLikeObject(value: ((...args: any[]) => any) | Function | string | boolean | number | null | undefined): value is never; -declare function isArrayLikeObject(value: any): value is object & { - length: number; -}; - -export { isArrayLikeObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.d.ts deleted file mode 100644 index fa2751e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -declare function isArrayLikeObject(value: T): boolean; -declare function isArrayLikeObject(value: ((...args: any[]) => any) | Function | string | boolean | number | null | undefined): value is never; -declare function isArrayLikeObject(value: any): value is object & { - length: number; -}; - -export { isArrayLikeObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js deleted file mode 100644 index a971e95..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArrayLike = require('./isArrayLike.js'); -const isObjectLike = require('./isObjectLike.js'); - -function isArrayLikeObject(value) { - return isObjectLike.isObjectLike(value) && isArrayLike.isArrayLike(value); -} - -exports.isArrayLikeObject = isArrayLikeObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.mjs deleted file mode 100644 index befdee1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { isArrayLike } from './isArrayLike.mjs'; -import { isObjectLike } from './isObjectLike.mjs'; - -function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); -} - -export { isArrayLikeObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBoolean.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBoolean.d.mts deleted file mode 100644 index f35271a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBoolean.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Checks if the given value is boolean. - * - * This function tests whether the provided value is strictly `boolean`. - * It returns `true` if the value is `boolean`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `boolean`. - * - * @param {any} value - The Value to test if it is boolean. - * @returns {value is boolean} True if the value is boolean, false otherwise. - * - * @example - * - * const value1 = true; - * const value2 = 0; - * const value3 = 'abc'; - * - * console.log(isBoolean(value1)); // true - * console.log(isBoolean(value2)); // false - * console.log(isBoolean(value3)); // false - * - */ -declare function isBoolean(value?: any): value is boolean; - -export { isBoolean }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBoolean.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBoolean.d.ts deleted file mode 100644 index f35271a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBoolean.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Checks if the given value is boolean. - * - * This function tests whether the provided value is strictly `boolean`. - * It returns `true` if the value is `boolean`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `boolean`. - * - * @param {any} value - The Value to test if it is boolean. - * @returns {value is boolean} True if the value is boolean, false otherwise. - * - * @example - * - * const value1 = true; - * const value2 = 0; - * const value3 = 'abc'; - * - * console.log(isBoolean(value1)); // true - * console.log(isBoolean(value2)); // false - * console.log(isBoolean(value3)); // false - * - */ -declare function isBoolean(value?: any): value is boolean; - -export { isBoolean }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBoolean.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBoolean.js deleted file mode 100644 index b93d897..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBoolean.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isBoolean(value) { - return typeof value === 'boolean' || value instanceof Boolean; -} - -exports.isBoolean = isBoolean; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBoolean.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBoolean.mjs deleted file mode 100644 index ac69c94..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBoolean.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isBoolean(value) { - return typeof value === 'boolean' || value instanceof Boolean; -} - -export { isBoolean }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBuffer.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBuffer.d.mts deleted file mode 100644 index 2816d56..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBuffer.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Checks if the given value is a Buffer instance. - * - * This function tests whether the provided value is an instance of Buffer. - * It returns `true` if the value is a Buffer, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Buffer`. - * - * @param {any} x - The value to check if it is a Buffer. - * @returns {boolean} Returns `true` if `x` is a Buffer, else `false`. - * - * @example - * const buffer = Buffer.from("test"); - * console.log(isBuffer(buffer)); // true - * - * const notBuffer = "not a buffer"; - * console.log(isBuffer(notBuffer)); // false - */ -declare function isBuffer(x?: any): boolean; - -export { isBuffer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBuffer.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBuffer.d.ts deleted file mode 100644 index 2816d56..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBuffer.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Checks if the given value is a Buffer instance. - * - * This function tests whether the provided value is an instance of Buffer. - * It returns `true` if the value is a Buffer, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Buffer`. - * - * @param {any} x - The value to check if it is a Buffer. - * @returns {boolean} Returns `true` if `x` is a Buffer, else `false`. - * - * @example - * const buffer = Buffer.from("test"); - * console.log(isBuffer(buffer)); // true - * - * const notBuffer = "not a buffer"; - * console.log(isBuffer(notBuffer)); // false - */ -declare function isBuffer(x?: any): boolean; - -export { isBuffer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBuffer.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBuffer.js deleted file mode 100644 index 578c503..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBuffer.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isBuffer$1 = require('../../predicate/isBuffer.js'); - -function isBuffer(x) { - return isBuffer$1.isBuffer(x); -} - -exports.isBuffer = isBuffer; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBuffer.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBuffer.mjs deleted file mode 100644 index 1112d31..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isBuffer.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { isBuffer as isBuffer$1 } from '../../predicate/isBuffer.mjs'; - -function isBuffer(x) { - return isBuffer$1(x); -} - -export { isBuffer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isDate.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isDate.d.mts deleted file mode 100644 index 6ebec71..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isDate.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is a Date object. - * - * @param {any} value The value to check. - * @returns {value is Date} Returns `true` if `value` is a Date object, `false` otherwise. - * - * @example - * const value1 = new Date(); - * const value2 = '2024-01-01'; - * - * console.log(isDate(value1)); // true - * console.log(isDate(value2)); // false - */ -declare function isDate(value?: any): value is Date; - -export { isDate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isDate.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isDate.d.ts deleted file mode 100644 index 6ebec71..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isDate.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is a Date object. - * - * @param {any} value The value to check. - * @returns {value is Date} Returns `true` if `value` is a Date object, `false` otherwise. - * - * @example - * const value1 = new Date(); - * const value2 = '2024-01-01'; - * - * console.log(isDate(value1)); // true - * console.log(isDate(value2)); // false - */ -declare function isDate(value?: any): value is Date; - -export { isDate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isDate.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isDate.js deleted file mode 100644 index ea6e430..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isDate.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isDate$1 = require('../../predicate/isDate.js'); - -function isDate(value) { - return isDate$1.isDate(value); -} - -exports.isDate = isDate; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isDate.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isDate.mjs deleted file mode 100644 index f093af4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isDate.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { isDate as isDate$1 } from '../../predicate/isDate.mjs'; - -function isDate(value) { - return isDate$1(value); -} - -export { isDate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isElement.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isElement.d.mts deleted file mode 100644 index b8e92d7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isElement.d.mts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Checks if `value` is likely a DOM element. - * - * @param {any} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. - * - * @example - * console.log(isElement(document.body)); // true - * console.log(isElement('')); // false - */ -declare function isElement(value?: any): boolean; - -export { isElement }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isElement.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isElement.d.ts deleted file mode 100644 index b8e92d7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isElement.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Checks if `value` is likely a DOM element. - * - * @param {any} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. - * - * @example - * console.log(isElement(document.body)); // true - * console.log(isElement('')); // false - */ -declare function isElement(value?: any): boolean; - -export { isElement }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isElement.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isElement.js deleted file mode 100644 index 2c8b178..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isElement.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isObjectLike = require('./isObjectLike.js'); -const isPlainObject = require('./isPlainObject.js'); - -function isElement(value) { - return isObjectLike.isObjectLike(value) && value.nodeType === 1 && !isPlainObject.isPlainObject(value); -} - -exports.isElement = isElement; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isElement.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isElement.mjs deleted file mode 100644 index 2c7cb4c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isElement.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { isObjectLike } from './isObjectLike.mjs'; -import { isPlainObject } from './isPlainObject.mjs'; - -function isElement(value) { - return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); -} - -export { isElement }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEmpty.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEmpty.d.mts deleted file mode 100644 index b0f2521..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEmpty.d.mts +++ /dev/null @@ -1,12 +0,0 @@ -import { EmptyObjectOf } from '../_internal/EmptyObjectOf.mjs'; - -declare function isEmpty(value?: T): boolean; -declare function isEmpty(value: string): value is ''; -declare function isEmpty(value: Map | Set | ArrayLike | null | undefined): boolean; -declare function isEmpty(value: object): boolean; -declare function isEmpty(value: T | null | undefined): value is EmptyObjectOf | null | undefined; -declare function isEmpty(value?: any): boolean; - -export { isEmpty }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEmpty.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEmpty.d.ts deleted file mode 100644 index 33aee4f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEmpty.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { EmptyObjectOf } from '../_internal/EmptyObjectOf.js'; - -declare function isEmpty(value?: T): boolean; -declare function isEmpty(value: string): value is ''; -declare function isEmpty(value: Map | Set | ArrayLike | null | undefined): boolean; -declare function isEmpty(value: object): boolean; -declare function isEmpty(value: T | null | undefined): value is EmptyObjectOf | null | undefined; -declare function isEmpty(value?: any): boolean; - -export { isEmpty }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js deleted file mode 100644 index ed657be..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArguments = require('./isArguments.js'); -const isArrayLike = require('./isArrayLike.js'); -const isTypedArray = require('./isTypedArray.js'); -const isPrototype = require('../_internal/isPrototype.js'); - -function isEmpty(value) { - if (value == null) { - return true; - } - if (isArrayLike.isArrayLike(value)) { - if (typeof value.splice !== 'function' && - typeof value !== 'string' && - (typeof Buffer === 'undefined' || !Buffer.isBuffer(value)) && - !isTypedArray.isTypedArray(value) && - !isArguments.isArguments(value)) { - return false; - } - return value.length === 0; - } - if (typeof value === 'object') { - if (value instanceof Map || value instanceof Set) { - return value.size === 0; - } - const keys = Object.keys(value); - if (isPrototype.isPrototype(value)) { - return keys.filter(x => x !== 'constructor').length === 0; - } - return keys.length === 0; - } - return true; -} - -exports.isEmpty = isEmpty; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEmpty.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEmpty.mjs deleted file mode 100644 index 1f6c463..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEmpty.mjs +++ /dev/null @@ -1,33 +0,0 @@ -import { isArguments } from './isArguments.mjs'; -import { isArrayLike } from './isArrayLike.mjs'; -import { isTypedArray } from './isTypedArray.mjs'; -import { isPrototype } from '../_internal/isPrototype.mjs'; - -function isEmpty(value) { - if (value == null) { - return true; - } - if (isArrayLike(value)) { - if (typeof value.splice !== 'function' && - typeof value !== 'string' && - (typeof Buffer === 'undefined' || !Buffer.isBuffer(value)) && - !isTypedArray(value) && - !isArguments(value)) { - return false; - } - return value.length === 0; - } - if (typeof value === 'object') { - if (value instanceof Map || value instanceof Set) { - return value.size === 0; - } - const keys = Object.keys(value); - if (isPrototype(value)) { - return keys.filter(x => x !== 'constructor').length === 0; - } - return keys.length === 0; - } - return true; -} - -export { isEmpty }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.d.mts deleted file mode 100644 index 143d52d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.d.mts +++ /dev/null @@ -1,40 +0,0 @@ -import { IsEqualCustomizer } from '../_internal/IsEqualCustomizer.mjs'; - -/** - * Compares two values for equality using a custom comparison function. - * - * The custom function allows for fine-tuned control over the comparison process. If it returns a boolean, that result determines the equality. If it returns undefined, the function falls back to the default equality comparison. - * - * This function also uses the custom equality function to compare values inside objects, - * arrays, maps, sets, and other complex structures, ensuring a deep comparison. - * - * This approach provides flexibility in handling complex comparisons while maintaining efficient default behavior for simpler cases. - * - * The custom comparison function can take up to six parameters: - * - `x`: The value from the first object `a`. - * - `y`: The value from the second object `b`. - * - `property`: The property key used to get `x` and `y`. - * - `xParent`: The parent of the first value `x`. - * - `yParent`: The parent of the second value `y`. - * - `stack`: An internal stack (Map) to handle circular references. - * - * @param {unknown} a - The first value to compare. - * @param {unknown} b - The second value to compare. - * @param {(x: any, y: any, property?: PropertyKey, xParent?: any, yParent?: any, stack?: Map) => boolean | void} [areValuesEqual=noop] - A function to customize the comparison. - * If it returns a boolean, that result will be used. If it returns undefined, - * the default equality comparison will be used. - * @returns {boolean} `true` if the values are equal according to the customizer, otherwise `false`. - * - * @example - * const customizer = (a, b) => { - * if (typeof a === 'string' && typeof b === 'string') { - * return a.toLowerCase() === b.toLowerCase(); - * } - * }; - * isEqualWith('Hello', 'hello', customizer); // true - * isEqualWith({ a: 'Hello' }, { a: 'hello' }, customizer); // true - * isEqualWith([1, 2, 3], [1, 2, 3], customizer); // true - */ -declare function isEqualWith(a: any, b: any, areValuesEqual?: IsEqualCustomizer): boolean; - -export { isEqualWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.d.ts deleted file mode 100644 index d0cc800..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { IsEqualCustomizer } from '../_internal/IsEqualCustomizer.js'; - -/** - * Compares two values for equality using a custom comparison function. - * - * The custom function allows for fine-tuned control over the comparison process. If it returns a boolean, that result determines the equality. If it returns undefined, the function falls back to the default equality comparison. - * - * This function also uses the custom equality function to compare values inside objects, - * arrays, maps, sets, and other complex structures, ensuring a deep comparison. - * - * This approach provides flexibility in handling complex comparisons while maintaining efficient default behavior for simpler cases. - * - * The custom comparison function can take up to six parameters: - * - `x`: The value from the first object `a`. - * - `y`: The value from the second object `b`. - * - `property`: The property key used to get `x` and `y`. - * - `xParent`: The parent of the first value `x`. - * - `yParent`: The parent of the second value `y`. - * - `stack`: An internal stack (Map) to handle circular references. - * - * @param {unknown} a - The first value to compare. - * @param {unknown} b - The second value to compare. - * @param {(x: any, y: any, property?: PropertyKey, xParent?: any, yParent?: any, stack?: Map) => boolean | void} [areValuesEqual=noop] - A function to customize the comparison. - * If it returns a boolean, that result will be used. If it returns undefined, - * the default equality comparison will be used. - * @returns {boolean} `true` if the values are equal according to the customizer, otherwise `false`. - * - * @example - * const customizer = (a, b) => { - * if (typeof a === 'string' && typeof b === 'string') { - * return a.toLowerCase() === b.toLowerCase(); - * } - * }; - * isEqualWith('Hello', 'hello', customizer); // true - * isEqualWith({ a: 'Hello' }, { a: 'hello' }, customizer); // true - * isEqualWith([1, 2, 3], [1, 2, 3], customizer); // true - */ -declare function isEqualWith(a: any, b: any, areValuesEqual?: IsEqualCustomizer): boolean; - -export { isEqualWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js deleted file mode 100644 index c11735b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const after = require('../../function/after.js'); -const isEqualWith$1 = require('../../predicate/isEqualWith.js'); - -function isEqualWith(a, b, areValuesEqual) { - if (typeof areValuesEqual !== 'function') { - areValuesEqual = () => undefined; - } - return isEqualWith$1.isEqualWith(a, b, (...args) => { - const result = areValuesEqual(...args); - if (result !== undefined) { - return Boolean(result); - } - if (a instanceof Map && b instanceof Map) { - return isEqualWith(Array.from(a), Array.from(b), after.after(2, areValuesEqual)); - } - if (a instanceof Set && b instanceof Set) { - return isEqualWith(Array.from(a), Array.from(b), after.after(2, areValuesEqual)); - } - }); -} - -exports.isEqualWith = isEqualWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.mjs deleted file mode 100644 index b9ee06f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.mjs +++ /dev/null @@ -1,22 +0,0 @@ -import { after } from '../../function/after.mjs'; -import { isEqualWith as isEqualWith$1 } from '../../predicate/isEqualWith.mjs'; - -function isEqualWith(a, b, areValuesEqual) { - if (typeof areValuesEqual !== 'function') { - areValuesEqual = () => undefined; - } - return isEqualWith$1(a, b, (...args) => { - const result = areValuesEqual(...args); - if (result !== undefined) { - return Boolean(result); - } - if (a instanceof Map && b instanceof Map) { - return isEqualWith(Array.from(a), Array.from(b), after(2, areValuesEqual)); - } - if (a instanceof Set && b instanceof Set) { - return isEqualWith(Array.from(a), Array.from(b), after(2, areValuesEqual)); - } - }); -} - -export { isEqualWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isError.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isError.d.mts deleted file mode 100644 index 574b316..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isError.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is an Error object. - * - * @param {any} value The value to check. - * @returns {value is Error} Returns `true` if `value` is an Error object, `false` otherwise. - * - * @example - * ```typescript - * console.log(isError(new Error())); // true - * console.log(isError('Error')); // false - * console.log(isError({ name: 'Error', message: '' })); // false - * ``` - */ -declare function isError(value: any): value is Error; - -export { isError }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isError.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isError.d.ts deleted file mode 100644 index 574b316..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isError.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is an Error object. - * - * @param {any} value The value to check. - * @returns {value is Error} Returns `true` if `value` is an Error object, `false` otherwise. - * - * @example - * ```typescript - * console.log(isError(new Error())); // true - * console.log(isError('Error')); // false - * console.log(isError({ name: 'Error', message: '' })); // false - * ``` - */ -declare function isError(value: any): value is Error; - -export { isError }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isError.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isError.js deleted file mode 100644 index 212d816..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isError.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const getTag = require('../_internal/getTag.js'); - -function isError(value) { - return getTag.getTag(value) === '[object Error]'; -} - -exports.isError = isError; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isError.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isError.mjs deleted file mode 100644 index 24c2484..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isError.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { getTag } from '../_internal/getTag.mjs'; - -function isError(value) { - return getTag(value) === '[object Error]'; -} - -export { isError }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFinite.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFinite.d.mts deleted file mode 100644 index f1a1445..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFinite.d.mts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Checks if `value` is a finite number. - * - * Acts as a type guard for `number` values — returning `true` only when `value` - * is of type `number` and finite (not `Infinity`, `-Infinity`, or `NaN`). - * - * @param {unknown} value The value to check. - * @returns {value is number} Returns `true` if `value` is a finite number, `false` otherwise. - * - * @example - * ```typescript - * const value1 = 100; - * const value2 = Infinity; - * const value3 = '100'; - * - * console.log(isFinite(value1)); // true - * console.log(isFinite(value2)); // false - * console.log(isFinite(value3)); // false - * - * if (isFinite(value1)) { - * console.log(value1.toFixed(2)); - * } - * ``` - */ -declare function isFinite(value: unknown): value is number; - -export { isFinite }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFinite.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFinite.d.ts deleted file mode 100644 index f1a1445..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFinite.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Checks if `value` is a finite number. - * - * Acts as a type guard for `number` values — returning `true` only when `value` - * is of type `number` and finite (not `Infinity`, `-Infinity`, or `NaN`). - * - * @param {unknown} value The value to check. - * @returns {value is number} Returns `true` if `value` is a finite number, `false` otherwise. - * - * @example - * ```typescript - * const value1 = 100; - * const value2 = Infinity; - * const value3 = '100'; - * - * console.log(isFinite(value1)); // true - * console.log(isFinite(value2)); // false - * console.log(isFinite(value3)); // false - * - * if (isFinite(value1)) { - * console.log(value1.toFixed(2)); - * } - * ``` - */ -declare function isFinite(value: unknown): value is number; - -export { isFinite }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFinite.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFinite.js deleted file mode 100644 index 0c705a7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFinite.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isFinite(value) { - return Number.isFinite(value); -} - -exports.isFinite = isFinite; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFinite.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFinite.mjs deleted file mode 100644 index dda1df0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFinite.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isFinite(value) { - return Number.isFinite(value); -} - -export { isFinite }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFunction.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFunction.d.mts deleted file mode 100644 index c89f111..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFunction.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is a function. - * - * @param {any} value The value to check. - * @returns {value is (...args: any[]) => any} Returns `true` if `value` is a function, else `false`. - * - * @example - * isFunction(Array.prototype.slice); // true - * isFunction(async function () {}); // true - * isFunction(function* () {}); // true - * isFunction(Proxy); // true - * isFunction(Int8Array); // true - */ -declare function isFunction(value: any): value is (...args: any[]) => any; - -export { isFunction }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFunction.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFunction.d.ts deleted file mode 100644 index c89f111..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFunction.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is a function. - * - * @param {any} value The value to check. - * @returns {value is (...args: any[]) => any} Returns `true` if `value` is a function, else `false`. - * - * @example - * isFunction(Array.prototype.slice); // true - * isFunction(async function () {}); // true - * isFunction(function* () {}); // true - * isFunction(Proxy); // true - * isFunction(Int8Array); // true - */ -declare function isFunction(value: any): value is (...args: any[]) => any; - -export { isFunction }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFunction.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFunction.js deleted file mode 100644 index 07a19df..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFunction.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isFunction(value) { - return typeof value === 'function'; -} - -exports.isFunction = isFunction; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFunction.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFunction.mjs deleted file mode 100644 index b9a4a2e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isFunction.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isFunction(value) { - return typeof value === 'function'; -} - -export { isFunction }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isInteger.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isInteger.d.mts deleted file mode 100644 index ee133b9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isInteger.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Checks if `value` is an integer. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `number`. - * - * @param {any} value - The value to check - * @returns {boolean} `true` if `value` is integer, otherwise `false`. - * - * @example - * isInteger(3); // Returns: true - * isInteger(Infinity); // Returns: false - * isInteger('3'); // Returns: false - * isInteger([]); // Returns: false - */ -declare function isInteger(value?: any): boolean; - -export { isInteger }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isInteger.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isInteger.d.ts deleted file mode 100644 index ee133b9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isInteger.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Checks if `value` is an integer. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `number`. - * - * @param {any} value - The value to check - * @returns {boolean} `true` if `value` is integer, otherwise `false`. - * - * @example - * isInteger(3); // Returns: true - * isInteger(Infinity); // Returns: false - * isInteger('3'); // Returns: false - * isInteger([]); // Returns: false - */ -declare function isInteger(value?: any): boolean; - -export { isInteger }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isInteger.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isInteger.js deleted file mode 100644 index 2843f3b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isInteger.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isInteger(value) { - return Number.isInteger(value); -} - -exports.isInteger = isInteger; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isInteger.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isInteger.mjs deleted file mode 100644 index 89fb460..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isInteger.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isInteger(value) { - return Number.isInteger(value); -} - -export { isInteger }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isLength.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isLength.d.mts deleted file mode 100644 index 78a60af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isLength.d.mts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Checks if a given value is a valid length. - * - * A valid length is of type `number`, is a non-negative integer, and is less than or equal to - * JavaScript's maximum safe integer (`Number.MAX_SAFE_INTEGER`). - * It returns `true` if the value is a valid length, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the - * argument to a valid length (`number`). - * - * @param {any} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * - * @example - * isLength(0); // true - * isLength(42); // true - * isLength(-1); // false - * isLength(1.5); // false - * isLength(Number.MAX_SAFE_INTEGER); // true - * isLength(Number.MAX_SAFE_INTEGER + 1); // false - */ -declare function isLength(value?: any): boolean; - -export { isLength }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isLength.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isLength.d.ts deleted file mode 100644 index 78a60af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isLength.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Checks if a given value is a valid length. - * - * A valid length is of type `number`, is a non-negative integer, and is less than or equal to - * JavaScript's maximum safe integer (`Number.MAX_SAFE_INTEGER`). - * It returns `true` if the value is a valid length, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the - * argument to a valid length (`number`). - * - * @param {any} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * - * @example - * isLength(0); // true - * isLength(42); // true - * isLength(-1); // false - * isLength(1.5); // false - * isLength(Number.MAX_SAFE_INTEGER); // true - * isLength(Number.MAX_SAFE_INTEGER + 1); // false - */ -declare function isLength(value?: any): boolean; - -export { isLength }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isLength.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isLength.js deleted file mode 100644 index 62787d8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isLength.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isLength(value) { - return Number.isSafeInteger(value) && value >= 0; -} - -exports.isLength = isLength; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isLength.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isLength.mjs deleted file mode 100644 index a4e3998..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isLength.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isLength(value) { - return Number.isSafeInteger(value) && value >= 0; -} - -export { isLength }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMap.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMap.d.mts deleted file mode 100644 index 03a43a3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMap.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `Map`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Map`. - * - * @param {unknown} value The value to check if it is a `Map`. - * @returns {value is Map} Returns `true` if `value` is a `Map`, else `false`. - * - * @example - * const value1 = new Map(); - * const value2 = new Set(); - * const value3 = new WeakMap(); - * - * console.log(isMap(value1)); // true - * console.log(isMap(value2)); // false - * console.log(isMap(value3)); // false - */ -declare function isMap(value?: any): value is Map; - -export { isMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMap.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMap.d.ts deleted file mode 100644 index 03a43a3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMap.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `Map`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Map`. - * - * @param {unknown} value The value to check if it is a `Map`. - * @returns {value is Map} Returns `true` if `value` is a `Map`, else `false`. - * - * @example - * const value1 = new Map(); - * const value2 = new Set(); - * const value3 = new WeakMap(); - * - * console.log(isMap(value1)); // true - * console.log(isMap(value2)); // false - * console.log(isMap(value3)); // false - */ -declare function isMap(value?: any): value is Map; - -export { isMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMap.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMap.js deleted file mode 100644 index aa42ebd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMap.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isMap$1 = require('../../predicate/isMap.js'); - -function isMap(value) { - return isMap$1.isMap(value); -} - -exports.isMap = isMap; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMap.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMap.mjs deleted file mode 100644 index b1ad2cd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMap.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { isMap as isMap$1 } from '../../predicate/isMap.mjs'; - -function isMap(value) { - return isMap$1(value); -} - -export { isMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatch.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatch.d.mts deleted file mode 100644 index fc5b62a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatch.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Checks if the target matches the source by comparing their structures and values. - * This function supports deep comparison for objects, arrays, maps, and sets. - * - * @param {object} target - The target value to match against. - * @param {object} source - The source value to match with. - * @returns {boolean} - Returns `true` if the target matches the source, otherwise `false`. - * - * @example - * // Basic usage - * isMatch({ a: 1, b: 2 }, { a: 1 }); // true - * - * @example - * // Matching arrays - * isMatch([1, 2, 3], [1, 2, 3]); // true - * - * @example - * // Matching maps - * const targetMap = new Map([['key1', 'value1'], ['key2', 'value2']]); - * const sourceMap = new Map([['key1', 'value1']]); - * isMatch(targetMap, sourceMap); // true - * - * @example - * // Matching sets - * const targetSet = new Set([1, 2, 3]); - * const sourceSet = new Set([1, 2]); - * isMatch(targetSet, sourceSet); // true - */ -declare function isMatch(target: object, source: object): boolean; - -export { isMatch }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatch.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatch.d.ts deleted file mode 100644 index fc5b62a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatch.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Checks if the target matches the source by comparing their structures and values. - * This function supports deep comparison for objects, arrays, maps, and sets. - * - * @param {object} target - The target value to match against. - * @param {object} source - The source value to match with. - * @returns {boolean} - Returns `true` if the target matches the source, otherwise `false`. - * - * @example - * // Basic usage - * isMatch({ a: 1, b: 2 }, { a: 1 }); // true - * - * @example - * // Matching arrays - * isMatch([1, 2, 3], [1, 2, 3]); // true - * - * @example - * // Matching maps - * const targetMap = new Map([['key1', 'value1'], ['key2', 'value2']]); - * const sourceMap = new Map([['key1', 'value1']]); - * isMatch(targetMap, sourceMap); // true - * - * @example - * // Matching sets - * const targetSet = new Set([1, 2, 3]); - * const sourceSet = new Set([1, 2]); - * isMatch(targetSet, sourceSet); // true - */ -declare function isMatch(target: object, source: object): boolean; - -export { isMatch }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatch.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatch.js deleted file mode 100644 index 77573c8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatch.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isMatchWith = require('./isMatchWith.js'); - -function isMatch(target, source) { - return isMatchWith.isMatchWith(target, source, () => undefined); -} - -exports.isMatch = isMatch; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatch.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatch.mjs deleted file mode 100644 index 309d05c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatch.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { isMatchWith } from './isMatchWith.mjs'; - -function isMatch(target, source) { - return isMatchWith(target, source, () => undefined); -} - -export { isMatch }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.d.mts deleted file mode 100644 index 6fb79a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.d.mts +++ /dev/null @@ -1,29 +0,0 @@ -import { IsMatchWithCustomizer } from '../_internal/IsMatchWithCustomizer.mjs'; - -/** - * Performs a deep comparison between a target value and a source pattern to determine if they match, - * using a custom comparison function for fine-grained control over the matching logic. - * - * @param {object} target - The value to be tested for matching - * @param {object} source - The pattern/template to match against - * @param {IsMatchWithCustomizer} compare - Custom comparison function for fine-grained control - * @returns {boolean} `true` if the target matches the source pattern, `false` otherwise - * - * @example - * // Basic matching with custom comparator - * const caseInsensitiveCompare = (objVal, srcVal) => { - * if (typeof objVal === 'string' && typeof srcVal === 'string') { - * return objVal.toLowerCase() === srcVal.toLowerCase(); - * } - * return undefined; - * }; - * - * isMatchWith( - * { name: 'JOHN', age: 30 }, - * { name: 'john' }, - * caseInsensitiveCompare - * ); // true - */ -declare function isMatchWith(target: object, source: object, compare: IsMatchWithCustomizer): boolean; - -export { isMatchWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.d.ts deleted file mode 100644 index 6e8b06c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { IsMatchWithCustomizer } from '../_internal/IsMatchWithCustomizer.js'; - -/** - * Performs a deep comparison between a target value and a source pattern to determine if they match, - * using a custom comparison function for fine-grained control over the matching logic. - * - * @param {object} target - The value to be tested for matching - * @param {object} source - The pattern/template to match against - * @param {IsMatchWithCustomizer} compare - Custom comparison function for fine-grained control - * @returns {boolean} `true` if the target matches the source pattern, `false` otherwise - * - * @example - * // Basic matching with custom comparator - * const caseInsensitiveCompare = (objVal, srcVal) => { - * if (typeof objVal === 'string' && typeof srcVal === 'string') { - * return objVal.toLowerCase() === srcVal.toLowerCase(); - * } - * return undefined; - * }; - * - * isMatchWith( - * { name: 'JOHN', age: 30 }, - * { name: 'john' }, - * caseInsensitiveCompare - * ); // true - */ -declare function isMatchWith(target: object, source: object, compare: IsMatchWithCustomizer): boolean; - -export { isMatchWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js deleted file mode 100644 index 28326ad..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js +++ /dev/null @@ -1,154 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isObject = require('./isObject.js'); -const isPrimitive = require('../../predicate/isPrimitive.js'); -const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js'); - -function isMatchWith(target, source, compare) { - if (typeof compare !== 'function') { - return isMatchWith(target, source, () => undefined); - } - return isMatchWithInternal(target, source, function doesMatch(objValue, srcValue, key, object, source, stack) { - const isEqual = compare(objValue, srcValue, key, object, source, stack); - if (isEqual !== undefined) { - return Boolean(isEqual); - } - return isMatchWithInternal(objValue, srcValue, doesMatch, stack); - }, new Map()); -} -function isMatchWithInternal(target, source, compare, stack) { - if (source === target) { - return true; - } - switch (typeof source) { - case 'object': { - return isObjectMatch(target, source, compare, stack); - } - case 'function': { - const sourceKeys = Object.keys(source); - if (sourceKeys.length > 0) { - return isMatchWithInternal(target, { ...source }, compare, stack); - } - return isEqualsSameValueZero.isEqualsSameValueZero(target, source); - } - default: { - if (!isObject.isObject(target)) { - return isEqualsSameValueZero.isEqualsSameValueZero(target, source); - } - if (typeof source === 'string') { - return source === ''; - } - return true; - } - } -} -function isObjectMatch(target, source, compare, stack) { - if (source == null) { - return true; - } - if (Array.isArray(source)) { - return isArrayMatch(target, source, compare, stack); - } - if (source instanceof Map) { - return isMapMatch(target, source, compare, stack); - } - if (source instanceof Set) { - return isSetMatch(target, source, compare, stack); - } - const keys = Object.keys(source); - if (target == null || isPrimitive.isPrimitive(target)) { - return keys.length === 0; - } - if (keys.length === 0) { - return true; - } - if (stack?.has(source)) { - return stack.get(source) === target; - } - stack?.set(source, target); - try { - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - if (!isPrimitive.isPrimitive(target) && !(key in target)) { - return false; - } - if (source[key] === undefined && target[key] !== undefined) { - return false; - } - if (source[key] === null && target[key] !== null) { - return false; - } - const isEqual = compare(target[key], source[key], key, target, source, stack); - if (!isEqual) { - return false; - } - } - return true; - } - finally { - stack?.delete(source); - } -} -function isMapMatch(target, source, compare, stack) { - if (source.size === 0) { - return true; - } - if (!(target instanceof Map)) { - return false; - } - for (const [key, sourceValue] of source.entries()) { - const targetValue = target.get(key); - const isEqual = compare(targetValue, sourceValue, key, target, source, stack); - if (isEqual === false) { - return false; - } - } - return true; -} -function isArrayMatch(target, source, compare, stack) { - if (source.length === 0) { - return true; - } - if (!Array.isArray(target)) { - return false; - } - const countedIndex = new Set(); - for (let i = 0; i < source.length; i++) { - const sourceItem = source[i]; - let found = false; - for (let j = 0; j < target.length; j++) { - if (countedIndex.has(j)) { - continue; - } - const targetItem = target[j]; - let matches = false; - const isEqual = compare(targetItem, sourceItem, i, target, source, stack); - if (isEqual) { - matches = true; - } - if (matches) { - countedIndex.add(j); - found = true; - break; - } - } - if (!found) { - return false; - } - } - return true; -} -function isSetMatch(target, source, compare, stack) { - if (source.size === 0) { - return true; - } - if (!(target instanceof Set)) { - return false; - } - return isArrayMatch([...target], [...source], compare, stack); -} - -exports.isMatchWith = isMatchWith; -exports.isSetMatch = isSetMatch; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.mjs deleted file mode 100644 index 170f6be..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.mjs +++ /dev/null @@ -1,149 +0,0 @@ -import { isObject } from './isObject.mjs'; -import { isPrimitive } from '../../predicate/isPrimitive.mjs'; -import { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs'; - -function isMatchWith(target, source, compare) { - if (typeof compare !== 'function') { - return isMatchWith(target, source, () => undefined); - } - return isMatchWithInternal(target, source, function doesMatch(objValue, srcValue, key, object, source, stack) { - const isEqual = compare(objValue, srcValue, key, object, source, stack); - if (isEqual !== undefined) { - return Boolean(isEqual); - } - return isMatchWithInternal(objValue, srcValue, doesMatch, stack); - }, new Map()); -} -function isMatchWithInternal(target, source, compare, stack) { - if (source === target) { - return true; - } - switch (typeof source) { - case 'object': { - return isObjectMatch(target, source, compare, stack); - } - case 'function': { - const sourceKeys = Object.keys(source); - if (sourceKeys.length > 0) { - return isMatchWithInternal(target, { ...source }, compare, stack); - } - return isEqualsSameValueZero(target, source); - } - default: { - if (!isObject(target)) { - return isEqualsSameValueZero(target, source); - } - if (typeof source === 'string') { - return source === ''; - } - return true; - } - } -} -function isObjectMatch(target, source, compare, stack) { - if (source == null) { - return true; - } - if (Array.isArray(source)) { - return isArrayMatch(target, source, compare, stack); - } - if (source instanceof Map) { - return isMapMatch(target, source, compare, stack); - } - if (source instanceof Set) { - return isSetMatch(target, source, compare, stack); - } - const keys = Object.keys(source); - if (target == null || isPrimitive(target)) { - return keys.length === 0; - } - if (keys.length === 0) { - return true; - } - if (stack?.has(source)) { - return stack.get(source) === target; - } - stack?.set(source, target); - try { - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - if (!isPrimitive(target) && !(key in target)) { - return false; - } - if (source[key] === undefined && target[key] !== undefined) { - return false; - } - if (source[key] === null && target[key] !== null) { - return false; - } - const isEqual = compare(target[key], source[key], key, target, source, stack); - if (!isEqual) { - return false; - } - } - return true; - } - finally { - stack?.delete(source); - } -} -function isMapMatch(target, source, compare, stack) { - if (source.size === 0) { - return true; - } - if (!(target instanceof Map)) { - return false; - } - for (const [key, sourceValue] of source.entries()) { - const targetValue = target.get(key); - const isEqual = compare(targetValue, sourceValue, key, target, source, stack); - if (isEqual === false) { - return false; - } - } - return true; -} -function isArrayMatch(target, source, compare, stack) { - if (source.length === 0) { - return true; - } - if (!Array.isArray(target)) { - return false; - } - const countedIndex = new Set(); - for (let i = 0; i < source.length; i++) { - const sourceItem = source[i]; - let found = false; - for (let j = 0; j < target.length; j++) { - if (countedIndex.has(j)) { - continue; - } - const targetItem = target[j]; - let matches = false; - const isEqual = compare(targetItem, sourceItem, i, target, source, stack); - if (isEqual) { - matches = true; - } - if (matches) { - countedIndex.add(j); - found = true; - break; - } - } - if (!found) { - return false; - } - } - return true; -} -function isSetMatch(target, source, compare, stack) { - if (source.size === 0) { - return true; - } - if (!(target instanceof Set)) { - return false; - } - return isArrayMatch([...target], [...source], compare, stack); -} - -export { isMatchWith, isSetMatch }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNaN.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNaN.d.mts deleted file mode 100644 index 51919f6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNaN.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if the value is NaN. - * - * @param {any} value - The value to check. - * @returns {boolean} `true` if the value is NaN, `false` otherwise. - * - * @example - * isNaN(NaN); // true - * isNaN(0); // false - * isNaN('NaN'); // false - * isNaN(undefined); // false - */ -declare function isNaN(value?: any): boolean; - -export { isNaN }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNaN.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNaN.d.ts deleted file mode 100644 index 51919f6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNaN.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if the value is NaN. - * - * @param {any} value - The value to check. - * @returns {boolean} `true` if the value is NaN, `false` otherwise. - * - * @example - * isNaN(NaN); // true - * isNaN(0); // false - * isNaN('NaN'); // false - * isNaN(undefined); // false - */ -declare function isNaN(value?: any): boolean; - -export { isNaN }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNaN.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNaN.js deleted file mode 100644 index dba1e66..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNaN.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isNaN(value) { - return Number.isNaN(value); -} - -exports.isNaN = isNaN; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNaN.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNaN.mjs deleted file mode 100644 index 67e54c6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNaN.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isNaN(value) { - return Number.isNaN(value); -} - -export { isNaN }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNative.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNative.d.mts deleted file mode 100644 index 5031cf1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNative.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Checks if a given value is a native function. - * - * This function tests whether the provided value is a native function implemented by the JavaScript engine. - * It returns `true` if the value is a native function, and `false` otherwise. - * - * @param {any} value - The value to test for native function. - * @returns {value is (...args: any[]) => any} `true` if the value is a native function, `false` otherwise. - * - * @example - * const value1 = Array.prototype.push; - * const value2 = () => {}; - * const result1 = isNative(value1); // true - * const result2 = isNative(value2); // false - */ -declare function isNative(value: any): value is (...args: any[]) => any; - -export { isNative }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNative.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNative.d.ts deleted file mode 100644 index 5031cf1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNative.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Checks if a given value is a native function. - * - * This function tests whether the provided value is a native function implemented by the JavaScript engine. - * It returns `true` if the value is a native function, and `false` otherwise. - * - * @param {any} value - The value to test for native function. - * @returns {value is (...args: any[]) => any} `true` if the value is a native function, `false` otherwise. - * - * @example - * const value1 = Array.prototype.push; - * const value2 = () => {}; - * const result1 = isNative(value1); // true - * const result2 = isNative(value2); // false - */ -declare function isNative(value: any): value is (...args: any[]) => any; - -export { isNative }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNative.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNative.js deleted file mode 100644 index 78948ee..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNative.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const functionToString = Function.prototype.toString; -const REGEXP_SYNTAX_CHARS = /[\\^$.*+?()[\]{}|]/g; -const IS_NATIVE_FUNCTION_REGEXP = RegExp(`^${functionToString - .call(Object.prototype.hasOwnProperty) - .replace(REGEXP_SYNTAX_CHARS, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?')}$`); -function isNative(value) { - if (typeof value !== 'function') { - return false; - } - if (globalThis?.['__core-js_shared__'] != null) { - throw new Error('Unsupported core-js use. Try https://npms.io/search?q=ponyfill.'); - } - return IS_NATIVE_FUNCTION_REGEXP.test(functionToString.call(value)); -} - -exports.isNative = isNative; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNative.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNative.mjs deleted file mode 100644 index fd37c0c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNative.mjs +++ /dev/null @@ -1,17 +0,0 @@ -const functionToString = Function.prototype.toString; -const REGEXP_SYNTAX_CHARS = /[\\^$.*+?()[\]{}|]/g; -const IS_NATIVE_FUNCTION_REGEXP = RegExp(`^${functionToString - .call(Object.prototype.hasOwnProperty) - .replace(REGEXP_SYNTAX_CHARS, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?')}$`); -function isNative(value) { - if (typeof value !== 'function') { - return false; - } - if (globalThis?.['__core-js_shared__'] != null) { - throw new Error('Unsupported core-js use. Try https://npms.io/search?q=ponyfill.'); - } - return IS_NATIVE_FUNCTION_REGEXP.test(functionToString.call(value)); -} - -export { isNative }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNil.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNil.d.mts deleted file mode 100644 index 0a708f0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNil.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Checks if a given value is null or undefined. - * - * This function tests whether the provided value is either `null` or `undefined`. - * It returns `true` if the value is `null` or `undefined`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `null` or `undefined`. - * - * @param {any} x - The value to test for null or undefined. - * @returns {x is null | undefined} `true` if the value is null or undefined, `false` otherwise. - * - * @example - * const value1 = null; - * const value2 = undefined; - * const value3 = 42; - * const result1 = isNil(value1); // true - * const result2 = isNil(value2); // true - * const result3 = isNil(value3); // false - */ -declare function isNil(x: any): x is null | undefined; - -export { isNil }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNil.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNil.d.ts deleted file mode 100644 index 0a708f0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNil.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Checks if a given value is null or undefined. - * - * This function tests whether the provided value is either `null` or `undefined`. - * It returns `true` if the value is `null` or `undefined`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `null` or `undefined`. - * - * @param {any} x - The value to test for null or undefined. - * @returns {x is null | undefined} `true` if the value is null or undefined, `false` otherwise. - * - * @example - * const value1 = null; - * const value2 = undefined; - * const value3 = 42; - * const result1 = isNil(value1); // true - * const result2 = isNil(value2); // true - * const result3 = isNil(value3); // false - */ -declare function isNil(x: any): x is null | undefined; - -export { isNil }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNil.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNil.js deleted file mode 100644 index 81ed466..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNil.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isNil(x) { - return x == null; -} - -exports.isNil = isNil; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNil.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNil.mjs deleted file mode 100644 index 963a002..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNil.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isNil(x) { - return x == null; -} - -export { isNil }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNull.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNull.d.mts deleted file mode 100644 index b220511..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNull.d.mts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Checks if `value` is `null`. - * - * @param {any} value - The value to check. - * @returns {value is null} Returns `true` if `value` is `null`, else `false`. - * - * @example - * isNull(null); // true - * isNull(undefined); // false - * isNull(0); // false - */ -declare function isNull(value: any): value is null; - -export { isNull }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNull.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNull.d.ts deleted file mode 100644 index b220511..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNull.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Checks if `value` is `null`. - * - * @param {any} value - The value to check. - * @returns {value is null} Returns `true` if `value` is `null`, else `false`. - * - * @example - * isNull(null); // true - * isNull(undefined); // false - * isNull(0); // false - */ -declare function isNull(value: any): value is null; - -export { isNull }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNull.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNull.js deleted file mode 100644 index 8dee9b3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNull.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isNull(value) { - return value === null; -} - -exports.isNull = isNull; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNull.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNull.mjs deleted file mode 100644 index a071e95..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNull.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isNull(value) { - return value === null; -} - -export { isNull }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNumber.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNumber.d.mts deleted file mode 100644 index b608e95..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNumber.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is a number. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `number`. - * - * @param {any} value The value to check if it is a number. - * @returns {value is number} Returns `true` if `value` is a number, else `false`. - * - * @example - * const value1 = 123; - * const value2 = 'abc'; - * const value3 = true; - * - * console.log(isNumber(value1)); // true - * console.log(isNumber(value2)); // false - * console.log(isNumber(value3)); // false - */ -declare function isNumber(value?: any): value is number; - -export { isNumber }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNumber.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNumber.d.ts deleted file mode 100644 index b608e95..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNumber.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is a number. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `number`. - * - * @param {any} value The value to check if it is a number. - * @returns {value is number} Returns `true` if `value` is a number, else `false`. - * - * @example - * const value1 = 123; - * const value2 = 'abc'; - * const value3 = true; - * - * console.log(isNumber(value1)); // true - * console.log(isNumber(value2)); // false - * console.log(isNumber(value3)); // false - */ -declare function isNumber(value?: any): value is number; - -export { isNumber }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNumber.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNumber.js deleted file mode 100644 index ee8c8e1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNumber.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isNumber(value) { - return typeof value === 'number' || value instanceof Number; -} - -exports.isNumber = isNumber; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNumber.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNumber.mjs deleted file mode 100644 index a41a1b9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isNumber.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isNumber(value) { - return typeof value === 'number' || value instanceof Number; -} - -export { isNumber }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObject.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObject.d.mts deleted file mode 100644 index f58fd6e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObject.d.mts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Checks if the given value is an object. An object is a value that is - * not a primitive type (string, number, boolean, symbol, null, or undefined). - * - * This function tests whether the provided value is an object or not. - * It returns `true` if the value is an object, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to an object value. - * - * @param {any} value - The value to check if it is an object. - * @returns {value is object} `true` if the value is an object, `false` otherwise. - * - * @example - * const value1 = {}; - * const value2 = [1, 2, 3]; - * const value3 = () => {}; - * const value4 = null; - * - * console.log(isObject(value1)); // true - * console.log(isObject(value2)); // true - * console.log(isObject(value3)); // true - * console.log(isObject(value4)); // false - */ -declare function isObject(value?: any): value is object; - -export { isObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObject.d.ts deleted file mode 100644 index f58fd6e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObject.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Checks if the given value is an object. An object is a value that is - * not a primitive type (string, number, boolean, symbol, null, or undefined). - * - * This function tests whether the provided value is an object or not. - * It returns `true` if the value is an object, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to an object value. - * - * @param {any} value - The value to check if it is an object. - * @returns {value is object} `true` if the value is an object, `false` otherwise. - * - * @example - * const value1 = {}; - * const value2 = [1, 2, 3]; - * const value3 = () => {}; - * const value4 = null; - * - * console.log(isObject(value1)); // true - * console.log(isObject(value2)); // true - * console.log(isObject(value3)); // true - * console.log(isObject(value4)); // false - */ -declare function isObject(value?: any): value is object; - -export { isObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObject.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObject.js deleted file mode 100644 index e07514a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObject.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isObject(value) { - return value !== null && (typeof value === 'object' || typeof value === 'function'); -} - -exports.isObject = isObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObject.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObject.mjs deleted file mode 100644 index 92683c2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObject.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isObject(value) { - return value !== null && (typeof value === 'object' || typeof value === 'function'); -} - -export { isObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.d.mts deleted file mode 100644 index fb409f9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.d.mts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Checks if the given value is object-like. - * - * A value is object-like if its type is object and it is not null. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to an object-like value. - * - * @param {any} value - The value to test if it is an object-like. - * @returns {boolean} `true` if the value is an object-like, `false` otherwise. - * - * @example - * const value1 = { a: 1 }; - * const value2 = [1, 2, 3]; - * const value3 = 'abc'; - * const value4 = () => {}; - * const value5 = null; - * - * console.log(isObjectLike(value1)); // true - * console.log(isObjectLike(value2)); // true - * console.log(isObjectLike(value3)); // false - * console.log(isObjectLike(value4)); // false - * console.log(isObjectLike(value5)); // false - */ -declare function isObjectLike(value?: any): boolean; - -export { isObjectLike }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.d.ts deleted file mode 100644 index fb409f9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Checks if the given value is object-like. - * - * A value is object-like if its type is object and it is not null. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to an object-like value. - * - * @param {any} value - The value to test if it is an object-like. - * @returns {boolean} `true` if the value is an object-like, `false` otherwise. - * - * @example - * const value1 = { a: 1 }; - * const value2 = [1, 2, 3]; - * const value3 = 'abc'; - * const value4 = () => {}; - * const value5 = null; - * - * console.log(isObjectLike(value1)); // true - * console.log(isObjectLike(value2)); // true - * console.log(isObjectLike(value3)); // false - * console.log(isObjectLike(value4)); // false - * console.log(isObjectLike(value5)); // false - */ -declare function isObjectLike(value?: any): boolean; - -export { isObjectLike }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js deleted file mode 100644 index ae87209..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isObjectLike(value) { - return typeof value === 'object' && value !== null; -} - -exports.isObjectLike = isObjectLike; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.mjs deleted file mode 100644 index 89d0a06..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isObjectLike(value) { - return typeof value === 'object' && value !== null; -} - -export { isObjectLike }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.d.mts deleted file mode 100644 index 76624b7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Checks if a given value is a plain object. - * - * A plain object is an object created by the `{}` literal, `new Object()`, or - * `Object.create(null)`. - * - * This function also handles objects with custom - * `Symbol.toStringTag` properties. - * - * `Symbol.toStringTag` is a built-in symbol that a constructor can use to customize the - * default string description of objects. - * - * @param {any} [object] - The value to check. - * @returns {boolean} - True if the value is a plain object, otherwise false. - * - * @example - * console.log(isPlainObject({})); // true - * console.log(isPlainObject([])); // false - * console.log(isPlainObject(null)); // false - * console.log(isPlainObject(Object.create(null))); // true - * console.log(isPlainObject(new Map())); // false - */ -declare function isPlainObject(object?: any): boolean; - -export { isPlainObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.d.ts deleted file mode 100644 index 76624b7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Checks if a given value is a plain object. - * - * A plain object is an object created by the `{}` literal, `new Object()`, or - * `Object.create(null)`. - * - * This function also handles objects with custom - * `Symbol.toStringTag` properties. - * - * `Symbol.toStringTag` is a built-in symbol that a constructor can use to customize the - * default string description of objects. - * - * @param {any} [object] - The value to check. - * @returns {boolean} - True if the value is a plain object, otherwise false. - * - * @example - * console.log(isPlainObject({})); // true - * console.log(isPlainObject([])); // false - * console.log(isPlainObject(null)); // false - * console.log(isPlainObject(Object.create(null))); // true - * console.log(isPlainObject(new Map())); // false - */ -declare function isPlainObject(object?: any): boolean; - -export { isPlainObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js deleted file mode 100644 index 8a33dcf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isPlainObject(object) { - if (typeof object !== 'object') { - return false; - } - if (object == null) { - return false; - } - if (Object.getPrototypeOf(object) === null) { - return true; - } - if (Object.prototype.toString.call(object) !== '[object Object]') { - const tag = object[Symbol.toStringTag]; - if (tag == null) { - return false; - } - const isTagReadonly = !Object.getOwnPropertyDescriptor(object, Symbol.toStringTag)?.writable; - if (isTagReadonly) { - return false; - } - return object.toString() === `[object ${tag}]`; - } - let proto = object; - while (Object.getPrototypeOf(proto) !== null) { - proto = Object.getPrototypeOf(proto); - } - return Object.getPrototypeOf(object) === proto; -} - -exports.isPlainObject = isPlainObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.mjs deleted file mode 100644 index 9c0e8c1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.mjs +++ /dev/null @@ -1,29 +0,0 @@ -function isPlainObject(object) { - if (typeof object !== 'object') { - return false; - } - if (object == null) { - return false; - } - if (Object.getPrototypeOf(object) === null) { - return true; - } - if (Object.prototype.toString.call(object) !== '[object Object]') { - const tag = object[Symbol.toStringTag]; - if (tag == null) { - return false; - } - const isTagReadonly = !Object.getOwnPropertyDescriptor(object, Symbol.toStringTag)?.writable; - if (isTagReadonly) { - return false; - } - return object.toString() === `[object ${tag}]`; - } - let proto = object; - while (Object.getPrototypeOf(proto) !== null) { - proto = Object.getPrototypeOf(proto); - } - return Object.getPrototypeOf(object) === proto; -} - -export { isPlainObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isRegExp.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isRegExp.d.mts deleted file mode 100644 index 5d09337..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isRegExp.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is a RegExp. - * - * @param {any} value The value to check. - * @returns {boolean} Returns `true` if `value` is a RegExp, `false` otherwise. - * - * @example - * const value1 = /abc/; - * const value2 = '/abc/'; - * - * console.log(isRegExp(value1)); // true - * console.log(isRegExp(value2)); // false - */ -declare function isRegExp(value?: any): value is RegExp; - -export { isRegExp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isRegExp.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isRegExp.d.ts deleted file mode 100644 index 5d09337..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isRegExp.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is a RegExp. - * - * @param {any} value The value to check. - * @returns {boolean} Returns `true` if `value` is a RegExp, `false` otherwise. - * - * @example - * const value1 = /abc/; - * const value2 = '/abc/'; - * - * console.log(isRegExp(value1)); // true - * console.log(isRegExp(value2)); // false - */ -declare function isRegExp(value?: any): value is RegExp; - -export { isRegExp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isRegExp.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isRegExp.js deleted file mode 100644 index 55428b4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isRegExp.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isRegExp$1 = require('../../predicate/isRegExp.js'); - -function isRegExp(value) { - return isRegExp$1.isRegExp(value); -} - -exports.isRegExp = isRegExp; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isRegExp.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isRegExp.mjs deleted file mode 100644 index b98122d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isRegExp.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { isRegExp as isRegExp$1 } from '../../predicate/isRegExp.mjs'; - -function isRegExp(value) { - return isRegExp$1(value); -} - -export { isRegExp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSafeInteger.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSafeInteger.d.mts deleted file mode 100644 index c182b1e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSafeInteger.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Checks if `value` is a safe integer (between -(2^53 – 1) and (2^53 – 1), inclusive). - * - * A safe integer is an integer that can be precisely represented as a `number` in JavaScript, - * without any other integer being rounded to it. - * - * This function also serves as a type predicate in TypeScript, - * narrowing the type of the argument to `number`. - * - * @param {unknown} value - The value to check - * @returns {value is number} `true` if `value` is an integer and between the safe values, otherwise `false` - * - * @example - * isSafeInteger(3); // Returns: true - * isSafeInteger(Number.MIN_SAFE_INTEGER - 1); // Returns: false - * isSafeInteger(1n); // Returns: false - * isSafeInteger('1'); // Returns: false - */ -declare function isSafeInteger(value: unknown): value is number; - -export { isSafeInteger }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSafeInteger.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSafeInteger.d.ts deleted file mode 100644 index c182b1e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSafeInteger.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Checks if `value` is a safe integer (between -(2^53 – 1) and (2^53 – 1), inclusive). - * - * A safe integer is an integer that can be precisely represented as a `number` in JavaScript, - * without any other integer being rounded to it. - * - * This function also serves as a type predicate in TypeScript, - * narrowing the type of the argument to `number`. - * - * @param {unknown} value - The value to check - * @returns {value is number} `true` if `value` is an integer and between the safe values, otherwise `false` - * - * @example - * isSafeInteger(3); // Returns: true - * isSafeInteger(Number.MIN_SAFE_INTEGER - 1); // Returns: false - * isSafeInteger(1n); // Returns: false - * isSafeInteger('1'); // Returns: false - */ -declare function isSafeInteger(value: unknown): value is number; - -export { isSafeInteger }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSafeInteger.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSafeInteger.js deleted file mode 100644 index 45f626d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSafeInteger.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isSafeInteger(value) { - return Number.isSafeInteger(value); -} - -exports.isSafeInteger = isSafeInteger; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSafeInteger.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSafeInteger.mjs deleted file mode 100644 index 9dec6ff..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSafeInteger.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isSafeInteger(value) { - return Number.isSafeInteger(value); -} - -export { isSafeInteger }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSet.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSet.d.mts deleted file mode 100644 index f393c56..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSet.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `Set`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Set`. - * - * @param {unknown} value The value to check if it is a `Set`. - * @returns {value is Set} Returns `true` if `value` is a `Set`, else `false`. - * - * @example - * const value1 = new Set(); - * const value2 = new Map(); - * const value3 = new WeakSet(); - * - * console.log(isSet(value1)); // true - * console.log(isSet(value2)); // false - * console.log(isSet(value3)); // false - */ -declare function isSet(value?: any): value is Set; - -export { isSet }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSet.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSet.d.ts deleted file mode 100644 index f393c56..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSet.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `Set`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Set`. - * - * @param {unknown} value The value to check if it is a `Set`. - * @returns {value is Set} Returns `true` if `value` is a `Set`, else `false`. - * - * @example - * const value1 = new Set(); - * const value2 = new Map(); - * const value3 = new WeakSet(); - * - * console.log(isSet(value1)); // true - * console.log(isSet(value2)); // false - * console.log(isSet(value3)); // false - */ -declare function isSet(value?: any): value is Set; - -export { isSet }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSet.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSet.js deleted file mode 100644 index dedbbd6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSet.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isSet$1 = require('../../predicate/isSet.js'); - -function isSet(value) { - return isSet$1.isSet(value); -} - -exports.isSet = isSet; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSet.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSet.mjs deleted file mode 100644 index 0880fa5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSet.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { isSet as isSet$1 } from '../../predicate/isSet.mjs'; - -function isSet(value) { - return isSet$1(value); -} - -export { isSet }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isString.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isString.d.mts deleted file mode 100644 index 72deb4c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isString.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is string. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `string`. - * - * @param {unknown} value The value to check if it is string. - * @returns {value is string} Returns `true` if `value` is a string, else `false`. - * - * @example - * const value1 = 'abc'; - * const value2 = 123; - * const value3 = true; - * - * console.log(isString(value1)); // true - * console.log(isString(value2)); // false - * console.log(isString(value3)); // false - */ -declare function isString(value?: any): value is string; - -export { isString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isString.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isString.d.ts deleted file mode 100644 index 72deb4c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isString.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is string. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `string`. - * - * @param {unknown} value The value to check if it is string. - * @returns {value is string} Returns `true` if `value` is a string, else `false`. - * - * @example - * const value1 = 'abc'; - * const value2 = 123; - * const value3 = true; - * - * console.log(isString(value1)); // true - * console.log(isString(value2)); // false - * console.log(isString(value3)); // false - */ -declare function isString(value?: any): value is string; - -export { isString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isString.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isString.js deleted file mode 100644 index 9169bb4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isString.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isString(value) { - return typeof value === 'string' || value instanceof String; -} - -exports.isString = isString; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isString.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isString.mjs deleted file mode 100644 index da0102e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isString.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isString(value) { - return typeof value === 'string' || value instanceof String; -} - -export { isString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSymbol.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSymbol.d.mts deleted file mode 100644 index 2028ecf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSymbol.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Check whether a value is a symbol. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `symbol`. - * - * @param {unknown} value The value to check. - * @returns {value is symbol} Returns `true` if `value` is a symbol, else `false`. - * @example - * isSymbol(Symbol.iterator); - * // => true - * - * isSymbol('abc'); - * // => false - */ -declare function isSymbol(value: any): value is symbol; - -export { isSymbol }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSymbol.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSymbol.d.ts deleted file mode 100644 index 2028ecf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSymbol.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Check whether a value is a symbol. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `symbol`. - * - * @param {unknown} value The value to check. - * @returns {value is symbol} Returns `true` if `value` is a symbol, else `false`. - * @example - * isSymbol(Symbol.iterator); - * // => true - * - * isSymbol('abc'); - * // => false - */ -declare function isSymbol(value: any): value is symbol; - -export { isSymbol }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js deleted file mode 100644 index 0bca74f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isSymbol(value) { - return typeof value === 'symbol' || value instanceof Symbol; -} - -exports.isSymbol = isSymbol; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSymbol.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSymbol.mjs deleted file mode 100644 index aa7cafd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isSymbol.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isSymbol(value) { - return typeof value === 'symbol' || value instanceof Symbol; -} - -export { isSymbol }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.d.mts deleted file mode 100644 index 18b9e0e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Checks if a value is a TypedArray. - * @param {any} x The value to check. - * @returns {boolean} Returns true if `x` is a TypedArray, false otherwise. - * - * @example - * const arr = new Uint8Array([1, 2, 3]); - * isTypedArray(arr); // true - * - * const regularArray = [1, 2, 3]; - * isTypedArray(regularArray); // false - * - * const buffer = new ArrayBuffer(16); - * isTypedArray(buffer); // false - */ -declare function isTypedArray(x: any): boolean; - -export { isTypedArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.d.ts deleted file mode 100644 index 18b9e0e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Checks if a value is a TypedArray. - * @param {any} x The value to check. - * @returns {boolean} Returns true if `x` is a TypedArray, false otherwise. - * - * @example - * const arr = new Uint8Array([1, 2, 3]); - * isTypedArray(arr); // true - * - * const regularArray = [1, 2, 3]; - * isTypedArray(regularArray); // false - * - * const buffer = new ArrayBuffer(16); - * isTypedArray(buffer); // false - */ -declare function isTypedArray(x: any): boolean; - -export { isTypedArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js deleted file mode 100644 index 1b29048..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isTypedArray$1 = require('../../predicate/isTypedArray.js'); - -function isTypedArray(x) { - return isTypedArray$1.isTypedArray(x); -} - -exports.isTypedArray = isTypedArray; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.mjs deleted file mode 100644 index 30994e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { isTypedArray as isTypedArray$1 } from '../../predicate/isTypedArray.mjs'; - -function isTypedArray(x) { - return isTypedArray$1(x); -} - -export { isTypedArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isUndefined.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isUndefined.d.mts deleted file mode 100644 index 8b88d22..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isUndefined.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is undefined. - * - * This function tests whether the provided value is strictly equal to `undefined`. - * It returns `true` if the value is `undefined`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `undefined`. - * - * @param {any} x - The value to test if it is undefined. - * @returns {x is undefined} true if the value is undefined, false otherwise. - * - * @example - * const value1 = undefined; - * const value2 = null; - * const value3 = 42; - * - * console.log(isUndefined(value1)); // true - * console.log(isUndefined(value2)); // false - * console.log(isUndefined(value3)); // false - */ -declare function isUndefined(x: any): x is undefined; - -export { isUndefined }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isUndefined.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isUndefined.d.ts deleted file mode 100644 index 8b88d22..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isUndefined.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is undefined. - * - * This function tests whether the provided value is strictly equal to `undefined`. - * It returns `true` if the value is `undefined`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `undefined`. - * - * @param {any} x - The value to test if it is undefined. - * @returns {x is undefined} true if the value is undefined, false otherwise. - * - * @example - * const value1 = undefined; - * const value2 = null; - * const value3 = 42; - * - * console.log(isUndefined(value1)); // true - * console.log(isUndefined(value2)); // false - * console.log(isUndefined(value3)); // false - */ -declare function isUndefined(x: any): x is undefined; - -export { isUndefined }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isUndefined.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isUndefined.js deleted file mode 100644 index e00c0b8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isUndefined.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isUndefined$1 = require('../../predicate/isUndefined.js'); - -function isUndefined(x) { - return isUndefined$1.isUndefined(x); -} - -exports.isUndefined = isUndefined; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isUndefined.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isUndefined.mjs deleted file mode 100644 index 609ad22..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isUndefined.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { isUndefined as isUndefined$1 } from '../../predicate/isUndefined.mjs'; - -function isUndefined(x) { - return isUndefined$1(x); -} - -export { isUndefined }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakMap.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakMap.d.mts deleted file mode 100644 index 8b61fed..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakMap.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is a `WeakMap`. - * - * This function tests whether the provided value is an instance of `WeakMap`. - * It returns `true` if the value is a `WeakMap`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `WeakMap`. - * - * @param {unknown} value - The value to test if it is a `WeakMap`. - * @returns {value is WeakMap} true if the value is a `WeakMap`, false otherwise. - * - * @example - * const value1 = new WeakMap(); - * const value2 = new Map(); - * const value3 = new Set(); - * - * console.log(isWeakMap(value1)); // true - * console.log(isWeakMap(value2)); // false - * console.log(isWeakMap(value3)); // false - */ -declare function isWeakMap(value?: any): value is WeakMap; - -export { isWeakMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakMap.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakMap.d.ts deleted file mode 100644 index 8b61fed..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakMap.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is a `WeakMap`. - * - * This function tests whether the provided value is an instance of `WeakMap`. - * It returns `true` if the value is a `WeakMap`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `WeakMap`. - * - * @param {unknown} value - The value to test if it is a `WeakMap`. - * @returns {value is WeakMap} true if the value is a `WeakMap`, false otherwise. - * - * @example - * const value1 = new WeakMap(); - * const value2 = new Map(); - * const value3 = new Set(); - * - * console.log(isWeakMap(value1)); // true - * console.log(isWeakMap(value2)); // false - * console.log(isWeakMap(value3)); // false - */ -declare function isWeakMap(value?: any): value is WeakMap; - -export { isWeakMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakMap.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakMap.js deleted file mode 100644 index 1eb7b6b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakMap.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isWeakMap$1 = require('../../predicate/isWeakMap.js'); - -function isWeakMap(value) { - return isWeakMap$1.isWeakMap(value); -} - -exports.isWeakMap = isWeakMap; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakMap.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakMap.mjs deleted file mode 100644 index f6f3e58..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakMap.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { isWeakMap as isWeakMap$1 } from '../../predicate/isWeakMap.mjs'; - -function isWeakMap(value) { - return isWeakMap$1(value); -} - -export { isWeakMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakSet.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakSet.d.mts deleted file mode 100644 index 1209380..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakSet.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is a `WeakSet`. - * - * This function tests whether the provided value is an instance of `WeakSet`. - * It returns `true` if the value is a `WeakSet`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `WeakSet`. - * - * @param {unknown} value - The value to test if it is a `WeakSet`. - * @returns {value is WeakSet} true if the value is a `WeakSet`, false otherwise. - * - * @example - * const value1 = new WeakSet(); - * const value2 = new Map(); - * const value3 = new Set(); - * - * console.log(isWeakSet(value1)); // true - * console.log(isWeakSet(value2)); // false - * console.log(isWeakSet(value3)); // false - */ -declare function isWeakSet(value?: any): value is WeakSet; - -export { isWeakSet }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakSet.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakSet.d.ts deleted file mode 100644 index 1209380..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakSet.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is a `WeakSet`. - * - * This function tests whether the provided value is an instance of `WeakSet`. - * It returns `true` if the value is a `WeakSet`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `WeakSet`. - * - * @param {unknown} value - The value to test if it is a `WeakSet`. - * @returns {value is WeakSet} true if the value is a `WeakSet`, false otherwise. - * - * @example - * const value1 = new WeakSet(); - * const value2 = new Map(); - * const value3 = new Set(); - * - * console.log(isWeakSet(value1)); // true - * console.log(isWeakSet(value2)); // false - * console.log(isWeakSet(value3)); // false - */ -declare function isWeakSet(value?: any): value is WeakSet; - -export { isWeakSet }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakSet.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakSet.js deleted file mode 100644 index 607aadb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakSet.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isWeakSet$1 = require('../../predicate/isWeakSet.js'); - -function isWeakSet(value) { - return isWeakSet$1.isWeakSet(value); -} - -exports.isWeakSet = isWeakSet; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakSet.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakSet.mjs deleted file mode 100644 index 5b9cd1a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/isWeakSet.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { isWeakSet as isWeakSet$1 } from '../../predicate/isWeakSet.mjs'; - -function isWeakSet(value) { - return isWeakSet$1(value); -} - -export { isWeakSet }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matches.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matches.d.mts deleted file mode 100644 index 9ede84b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matches.d.mts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Creates a function that performs a deep comparison between a given target and the source object. - * - * @template T - * @param {T} source - The source object to create the matcher from. - * @returns {(value: any) => boolean} Returns a function that takes a target object and returns `true` if the target matches the source, otherwise `false`. - * - * @example - * const matcher = matches({ a: 1, b: 2 }); - * matcher({ a: 1, b: 2, c: 3 }); // true - * matcher({ a: 1, c: 3 }); // false - */ -declare function matches(source: T): (value: any) => boolean; -/** - * Creates a function that performs a deep comparison between a given target and the source object. - * - * @template T - * @template V - * @param {T} source - The source object to create the matcher from. - * @returns {(value: V) => boolean} Returns a function that takes a target object and returns `true` if the target matches the source, otherwise `false`. - * - * @example - * const matcher = matches<{ a: number }, { a: number; b?: number }>({ a: 1 }); - * matcher({ a: 1, b: 2 }); // true - * matcher({ a: 2 }); // false - */ -declare function matches(source: T): (value: V) => boolean; - -export { matches }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matches.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matches.d.ts deleted file mode 100644 index 9ede84b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matches.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Creates a function that performs a deep comparison between a given target and the source object. - * - * @template T - * @param {T} source - The source object to create the matcher from. - * @returns {(value: any) => boolean} Returns a function that takes a target object and returns `true` if the target matches the source, otherwise `false`. - * - * @example - * const matcher = matches({ a: 1, b: 2 }); - * matcher({ a: 1, b: 2, c: 3 }); // true - * matcher({ a: 1, c: 3 }); // false - */ -declare function matches(source: T): (value: any) => boolean; -/** - * Creates a function that performs a deep comparison between a given target and the source object. - * - * @template T - * @template V - * @param {T} source - The source object to create the matcher from. - * @returns {(value: V) => boolean} Returns a function that takes a target object and returns `true` if the target matches the source, otherwise `false`. - * - * @example - * const matcher = matches<{ a: number }, { a: number; b?: number }>({ a: 1 }); - * matcher({ a: 1, b: 2 }); // true - * matcher({ a: 2 }); // false - */ -declare function matches(source: T): (value: V) => boolean; - -export { matches }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matches.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matches.js deleted file mode 100644 index 8aaf7d8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matches.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isMatch = require('./isMatch.js'); -const cloneDeep = require('../../object/cloneDeep.js'); - -function matches(source) { - source = cloneDeep.cloneDeep(source); - return (target) => { - return isMatch.isMatch(target, source); - }; -} - -exports.matches = matches; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matches.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matches.mjs deleted file mode 100644 index a27a170..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matches.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { isMatch } from './isMatch.mjs'; -import { cloneDeep } from '../../object/cloneDeep.mjs'; - -function matches(source) { - source = cloneDeep(source); - return (target) => { - return isMatch(target, source); - }; -} - -export { matches }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.d.mts deleted file mode 100644 index 6213c6e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.d.mts +++ /dev/null @@ -1,38 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.mjs'; - -/** - * Creates a function that checks if a given target object matches a specific property value. - * - * @template T - * @template V - * @param {PropertyPath} path - The property path to check within the target object. - * @param {T} srcValue - The value to compare against the property value in the target object. - * @returns {(value: any) => boolean} Returns a function that takes a target object and returns - * `true` if the property value at the given path in the target object matches the provided value, - * otherwise returns `false`. - * - * @example - * const checkName = matchesProperty('name', 'Alice'); - * console.log(checkName({ name: 'Alice' })); // true - * console.log(checkName({ name: 'Bob' })); // false - */ -declare function matchesProperty(path: PropertyPath, srcValue: T): (value: any) => boolean; -/** - * Creates a function that checks if a given target object matches a specific property value. - * - * @template T - * @template V - * @param {PropertyPath} path - The property path to check within the target object. - * @param {T} srcValue - The value to compare against the property value in the target object. - * @returns {(value: V) => boolean} Returns a function that takes a target object and returns - * `true` if the property value at the given path in the target object matches the provided value, - * otherwise returns `false`. - * - * @example - * const checkNested = matchesProperty(['address', 'city'], 'New York'); - * console.log(checkNested({ address: { city: 'New York' } })); // true - * console.log(checkNested({ address: { city: 'Los Angeles' } })); // false - */ -declare function matchesProperty(path: PropertyPath, srcValue: T): (value: V) => boolean; - -export { matchesProperty }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.d.ts deleted file mode 100644 index 1ae67f2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { PropertyPath } from '../_internal/PropertyPath.js'; - -/** - * Creates a function that checks if a given target object matches a specific property value. - * - * @template T - * @template V - * @param {PropertyPath} path - The property path to check within the target object. - * @param {T} srcValue - The value to compare against the property value in the target object. - * @returns {(value: any) => boolean} Returns a function that takes a target object and returns - * `true` if the property value at the given path in the target object matches the provided value, - * otherwise returns `false`. - * - * @example - * const checkName = matchesProperty('name', 'Alice'); - * console.log(checkName({ name: 'Alice' })); // true - * console.log(checkName({ name: 'Bob' })); // false - */ -declare function matchesProperty(path: PropertyPath, srcValue: T): (value: any) => boolean; -/** - * Creates a function that checks if a given target object matches a specific property value. - * - * @template T - * @template V - * @param {PropertyPath} path - The property path to check within the target object. - * @param {T} srcValue - The value to compare against the property value in the target object. - * @returns {(value: V) => boolean} Returns a function that takes a target object and returns - * `true` if the property value at the given path in the target object matches the provided value, - * otherwise returns `false`. - * - * @example - * const checkNested = matchesProperty(['address', 'city'], 'New York'); - * console.log(checkNested({ address: { city: 'New York' } })); // true - * console.log(checkNested({ address: { city: 'Los Angeles' } })); // false - */ -declare function matchesProperty(path: PropertyPath, srcValue: T): (value: V) => boolean; - -export { matchesProperty }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js deleted file mode 100644 index 9d9f99c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isMatch = require('./isMatch.js'); -const toKey = require('../_internal/toKey.js'); -const cloneDeep = require('../object/cloneDeep.js'); -const get = require('../object/get.js'); -const has = require('../object/has.js'); - -function matchesProperty(property, source) { - switch (typeof property) { - case 'object': { - if (Object.is(property?.valueOf(), -0)) { - property = '-0'; - } - break; - } - case 'number': { - property = toKey.toKey(property); - break; - } - } - source = cloneDeep.cloneDeep(source); - return function (target) { - const result = get.get(target, property); - if (result === undefined) { - return has.has(target, property); - } - if (source === undefined) { - return result === undefined; - } - return isMatch.isMatch(result, source); - }; -} - -exports.matchesProperty = matchesProperty; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.mjs deleted file mode 100644 index 3141555..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.mjs +++ /dev/null @@ -1,33 +0,0 @@ -import { isMatch } from './isMatch.mjs'; -import { toKey } from '../_internal/toKey.mjs'; -import { cloneDeep } from '../object/cloneDeep.mjs'; -import { get } from '../object/get.mjs'; -import { has } from '../object/has.mjs'; - -function matchesProperty(property, source) { - switch (typeof property) { - case 'object': { - if (Object.is(property?.valueOf(), -0)) { - property = '-0'; - } - break; - } - case 'number': { - property = toKey(property); - break; - } - } - source = cloneDeep(source); - return function (target) { - const result = get(target, property); - if (result === undefined) { - return has(target, property); - } - if (source === undefined) { - return result === undefined; - } - return isMatch(result, source); - }; -} - -export { matchesProperty }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/camelCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/camelCase.d.mts deleted file mode 100644 index a4a6392..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/camelCase.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Converts a string to camel case. - * - * Camel case is the naming convention in which the first word is written in lowercase and - * each subsequent word begins with a capital letter, concatenated without any separator characters. - * - * @param {string | object} str - The string that is to be changed to camel case. - * @returns {string} - The converted string to camel case. - * - * @example - * const convertedStr1 = camelCase('camelCase') // returns 'camelCase' - * const convertedStr2 = camelCase('some whitespace') // returns 'someWhitespace' - * const convertedStr3 = camelCase('hyphen-text') // returns 'hyphenText' - * const convertedStr4 = camelCase('HTTPRequest') // returns 'httpRequest' - */ -declare function camelCase(str?: string): string; - -export { camelCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/camelCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/camelCase.d.ts deleted file mode 100644 index a4a6392..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/camelCase.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Converts a string to camel case. - * - * Camel case is the naming convention in which the first word is written in lowercase and - * each subsequent word begins with a capital letter, concatenated without any separator characters. - * - * @param {string | object} str - The string that is to be changed to camel case. - * @returns {string} - The converted string to camel case. - * - * @example - * const convertedStr1 = camelCase('camelCase') // returns 'camelCase' - * const convertedStr2 = camelCase('some whitespace') // returns 'someWhitespace' - * const convertedStr3 = camelCase('hyphen-text') // returns 'hyphenText' - * const convertedStr4 = camelCase('HTTPRequest') // returns 'httpRequest' - */ -declare function camelCase(str?: string): string; - -export { camelCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/camelCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/camelCase.js deleted file mode 100644 index f2a9acd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/camelCase.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const deburr = require('./deburr.js'); -const camelCase$1 = require('../../string/camelCase.js'); -const normalizeForCase = require('../_internal/normalizeForCase.js'); - -function camelCase(str) { - return camelCase$1.camelCase(normalizeForCase.normalizeForCase(deburr.deburr(str))); -} - -exports.camelCase = camelCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/camelCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/camelCase.mjs deleted file mode 100644 index c57eb54..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/camelCase.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { deburr } from './deburr.mjs'; -import { camelCase as camelCase$1 } from '../../string/camelCase.mjs'; -import { normalizeForCase } from '../_internal/normalizeForCase.mjs'; - -function camelCase(str) { - return camelCase$1(normalizeForCase(deburr(str))); -} - -export { camelCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/capitalize.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/capitalize.d.mts deleted file mode 100644 index 612a54c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/capitalize.d.mts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Converts the first character of string to upper case and the remaining to lower case. - * - * @param {string} string - The string to capitalize. - * @returns {string} - The capitalized string. - * - * @example - * const convertedStr1 = capitalize('fred') // returns 'Fred' - * const convertedStr2 = capitalize('FRED') // returns 'Fred' - * const convertedStr3 = capitalize('') // returns '' - */ -declare function capitalize(str?: T): string extends T ? string : Capitalize>; - -export { capitalize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/capitalize.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/capitalize.d.ts deleted file mode 100644 index 612a54c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/capitalize.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Converts the first character of string to upper case and the remaining to lower case. - * - * @param {string} string - The string to capitalize. - * @returns {string} - The capitalized string. - * - * @example - * const convertedStr1 = capitalize('fred') // returns 'Fred' - * const convertedStr2 = capitalize('FRED') // returns 'Fred' - * const convertedStr3 = capitalize('') // returns '' - */ -declare function capitalize(str?: T): string extends T ? string : Capitalize>; - -export { capitalize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/capitalize.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/capitalize.js deleted file mode 100644 index 354c9f8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/capitalize.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const capitalize$1 = require('../../string/capitalize.js'); -const toString = require('../util/toString.js'); - -function capitalize(str) { - return capitalize$1.capitalize(toString.toString(str)); -} - -exports.capitalize = capitalize; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/capitalize.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/capitalize.mjs deleted file mode 100644 index 63d6b99..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/capitalize.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { capitalize as capitalize$1 } from '../../string/capitalize.mjs'; -import { toString } from '../util/toString.mjs'; - -function capitalize(str) { - return capitalize$1(toString(str)); -} - -export { capitalize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/deburr.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/deburr.d.mts deleted file mode 100644 index 056ab7b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/deburr.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Converts a string by replacing special characters and diacritical marks with their ASCII equivalents. - * For example, "Crème brûlée" becomes "Creme brulee". - * - * @param {string} str - The input string to be deburred. - * @returns {string} - The deburred string with special characters replaced by their ASCII equivalents. - * - * @example - * // Basic usage: - * deburr('Æthelred') // returns 'Aethelred' - * - * @example - * // Handling diacritical marks: - * deburr('München') // returns 'Munchen' - * - * @example - * // Special characters: - * deburr('Crème brûlée') // returns 'Creme brulee' - */ -declare function deburr(str?: string): string; - -export { deburr }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/deburr.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/deburr.d.ts deleted file mode 100644 index 056ab7b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/deburr.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Converts a string by replacing special characters and diacritical marks with their ASCII equivalents. - * For example, "Crème brûlée" becomes "Creme brulee". - * - * @param {string} str - The input string to be deburred. - * @returns {string} - The deburred string with special characters replaced by their ASCII equivalents. - * - * @example - * // Basic usage: - * deburr('Æthelred') // returns 'Aethelred' - * - * @example - * // Handling diacritical marks: - * deburr('München') // returns 'Munchen' - * - * @example - * // Special characters: - * deburr('Crème brûlée') // returns 'Creme brulee' - */ -declare function deburr(str?: string): string; - -export { deburr }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/deburr.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/deburr.js deleted file mode 100644 index 272148c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/deburr.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const deburr$1 = require('../../string/deburr.js'); -const toString = require('../util/toString.js'); - -function deburr(str) { - return deburr$1.deburr(toString.toString(str)); -} - -exports.deburr = deburr; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/deburr.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/deburr.mjs deleted file mode 100644 index 8abdbe4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/deburr.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { deburr as deburr$1 } from '../../string/deburr.mjs'; -import { toString } from '../util/toString.mjs'; - -function deburr(str) { - return deburr$1(toString(str)); -} - -export { deburr }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/endsWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/endsWith.d.mts deleted file mode 100644 index 961aca1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/endsWith.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a string contains another string at the end of the string. - * - * Checks if one string endsWith another string. Optional position parameter to offset searching before a certain index. - * - * @param {string} str - The string that might contain the target string. - * @param {string} target - The string to search for. - * @param {number} position - An optional position from the start to search up to this index - * @returns {boolean} - True if the str string ends with the target string. - * - * @example - * const isPrefix = endsWith('fooBar', 'foo') // returns true - * const isPrefix = endsWith('fooBar', 'bar') // returns false - * const isPrefix = endsWith('fooBar', 'abc') // returns false - * const isPrefix = endsWith('fooBar', 'foo', 3) // returns true - * const isPrefix = endsWith('fooBar', 'abc', 5) // returns false - */ -declare function endsWith(str?: string, target?: string, position?: number): boolean; - -export { endsWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/endsWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/endsWith.d.ts deleted file mode 100644 index 961aca1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/endsWith.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a string contains another string at the end of the string. - * - * Checks if one string endsWith another string. Optional position parameter to offset searching before a certain index. - * - * @param {string} str - The string that might contain the target string. - * @param {string} target - The string to search for. - * @param {number} position - An optional position from the start to search up to this index - * @returns {boolean} - True if the str string ends with the target string. - * - * @example - * const isPrefix = endsWith('fooBar', 'foo') // returns true - * const isPrefix = endsWith('fooBar', 'bar') // returns false - * const isPrefix = endsWith('fooBar', 'abc') // returns false - * const isPrefix = endsWith('fooBar', 'foo', 3) // returns true - * const isPrefix = endsWith('fooBar', 'abc', 5) // returns false - */ -declare function endsWith(str?: string, target?: string, position?: number): boolean; - -export { endsWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/endsWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/endsWith.js deleted file mode 100644 index 6eecf3d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/endsWith.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function endsWith(str, target, position) { - if (str == null || target == null) { - return false; - } - if (position == null) { - position = str.length; - } - return str.endsWith(target, position); -} - -exports.endsWith = endsWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/endsWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/endsWith.mjs deleted file mode 100644 index 661bf5b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/endsWith.mjs +++ /dev/null @@ -1,11 +0,0 @@ -function endsWith(str, target, position) { - if (str == null || target == null) { - return false; - } - if (position == null) { - position = str.length; - } - return str.endsWith(target, position); -} - -export { endsWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escape.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escape.d.mts deleted file mode 100644 index be0a0b1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escape.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts the characters "&", "<", ">", '"', and "'" in `str` to their corresponding HTML entities. - * For example, "<" becomes "<". - * - * @param {string} str The string to escape. - * @returns {string} Returns the escaped string. - * - * @example - * escape('This is a
element.'); // returns 'This is a <div> element.' - * escape('This is a "quote"'); // returns 'This is a "quote"' - * escape("This is a 'quote'"); // returns 'This is a 'quote'' - * escape('This is a & symbol'); // returns 'This is a & symbol' - */ -declare function escape(string?: string): string; - -export { escape }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escape.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escape.d.ts deleted file mode 100644 index be0a0b1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escape.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts the characters "&", "<", ">", '"', and "'" in `str` to their corresponding HTML entities. - * For example, "<" becomes "<". - * - * @param {string} str The string to escape. - * @returns {string} Returns the escaped string. - * - * @example - * escape('This is a
element.'); // returns 'This is a <div> element.' - * escape('This is a "quote"'); // returns 'This is a "quote"' - * escape("This is a 'quote'"); // returns 'This is a 'quote'' - * escape('This is a & symbol'); // returns 'This is a & symbol' - */ -declare function escape(string?: string): string; - -export { escape }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escape.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escape.js deleted file mode 100644 index 5b6a807..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escape.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const escape$1 = require('../../string/escape.js'); -const toString = require('../util/toString.js'); - -function escape(string) { - return escape$1.escape(toString.toString(string)); -} - -exports.escape = escape; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escape.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escape.mjs deleted file mode 100644 index d811eb8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escape.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { escape as escape$1 } from '../../string/escape.mjs'; -import { toString } from '../util/toString.mjs'; - -function escape(string) { - return escape$1(toString(string)); -} - -export { escape }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escapeRegExp.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escapeRegExp.d.mts deleted file mode 100644 index afcd3da..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escapeRegExp.d.mts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Escapes the RegExp special characters "^", "$", "\\", ".", "*", "+", "?", "(", ")", "[", "]", "{", "}", and "|" in `str`. - * - * @param {string} str The string to escape. - * @returns {string} Returns the escaped string. - * - * @example - * import { escapeRegExp } from 'es-toolkit/string'; - * - * escapeRegExp('[es-toolkit](https://es-toolkit.dev/)'); // returns '\[es-toolkit\]\(https://es-toolkit\.dev/\)' - */ -declare function escapeRegExp(str?: string): string; - -export { escapeRegExp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escapeRegExp.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escapeRegExp.d.ts deleted file mode 100644 index afcd3da..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escapeRegExp.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Escapes the RegExp special characters "^", "$", "\\", ".", "*", "+", "?", "(", ")", "[", "]", "{", "}", and "|" in `str`. - * - * @param {string} str The string to escape. - * @returns {string} Returns the escaped string. - * - * @example - * import { escapeRegExp } from 'es-toolkit/string'; - * - * escapeRegExp('[es-toolkit](https://es-toolkit.dev/)'); // returns '\[es-toolkit\]\(https://es-toolkit\.dev/\)' - */ -declare function escapeRegExp(str?: string): string; - -export { escapeRegExp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escapeRegExp.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escapeRegExp.js deleted file mode 100644 index 1b144ae..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escapeRegExp.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const escapeRegExp$1 = require('../../string/escapeRegExp.js'); -const toString = require('../util/toString.js'); - -function escapeRegExp(str) { - return escapeRegExp$1.escapeRegExp(toString.toString(str)); -} - -exports.escapeRegExp = escapeRegExp; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escapeRegExp.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escapeRegExp.mjs deleted file mode 100644 index 030f4f4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/escapeRegExp.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { escapeRegExp as escapeRegExp$1 } from '../../string/escapeRegExp.mjs'; -import { toString } from '../util/toString.mjs'; - -function escapeRegExp(str) { - return escapeRegExp$1(toString(str)); -} - -export { escapeRegExp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/kebabCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/kebabCase.d.mts deleted file mode 100644 index aad91b3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/kebabCase.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to kebab case. - * - * Kebab case is the naming convention in which each word is written in lowercase and separated by a dash (-) character. - * - * @param {string | object} str - The string that is to be changed to kebab case. - * @returns {string} - The converted string to kebab case. - * - * @example - * const convertedStr1 = kebabCase('camelCase') // returns 'camel-case' - * const convertedStr2 = kebabCase('some whitespace') // returns 'some-whitespace' - * const convertedStr3 = kebabCase('hyphen-text') // returns 'hyphen-text' - * const convertedStr4 = kebabCase('HTTPRequest') // returns 'http-request' - */ -declare function kebabCase(str?: string): string; - -export { kebabCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/kebabCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/kebabCase.d.ts deleted file mode 100644 index aad91b3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/kebabCase.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to kebab case. - * - * Kebab case is the naming convention in which each word is written in lowercase and separated by a dash (-) character. - * - * @param {string | object} str - The string that is to be changed to kebab case. - * @returns {string} - The converted string to kebab case. - * - * @example - * const convertedStr1 = kebabCase('camelCase') // returns 'camel-case' - * const convertedStr2 = kebabCase('some whitespace') // returns 'some-whitespace' - * const convertedStr3 = kebabCase('hyphen-text') // returns 'hyphen-text' - * const convertedStr4 = kebabCase('HTTPRequest') // returns 'http-request' - */ -declare function kebabCase(str?: string): string; - -export { kebabCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/kebabCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/kebabCase.js deleted file mode 100644 index 628ce46..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/kebabCase.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const deburr = require('./deburr.js'); -const kebabCase$1 = require('../../string/kebabCase.js'); -const normalizeForCase = require('../_internal/normalizeForCase.js'); - -function kebabCase(str) { - return kebabCase$1.kebabCase(normalizeForCase.normalizeForCase(deburr.deburr(str))); -} - -exports.kebabCase = kebabCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/kebabCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/kebabCase.mjs deleted file mode 100644 index 2ba2026..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/kebabCase.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { deburr } from './deburr.mjs'; -import { kebabCase as kebabCase$1 } from '../../string/kebabCase.mjs'; -import { normalizeForCase } from '../_internal/normalizeForCase.mjs'; - -function kebabCase(str) { - return kebabCase$1(normalizeForCase(deburr(str))); -} - -export { kebabCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerCase.d.mts deleted file mode 100644 index d010408..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerCase.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to lower case. - * - * Lower case is the naming convention in which each word is written in lowercase and separated by an space ( ) character. - * - * @param {string | object} str - The string that is to be changed to lower case. - * @returns {string} - The converted string to lower case. - * - * @example - * const convertedStr1 = lowerCase('camelCase') // returns 'camel case' - * const convertedStr2 = lowerCase('some whitespace') // returns 'some whitespace' - * const convertedStr3 = lowerCase('hyphen-text') // returns 'hyphen text' - * const convertedStr4 = lowerCase('HTTPRequest') // returns 'http request' - */ -declare function lowerCase(str?: string): string; - -export { lowerCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerCase.d.ts deleted file mode 100644 index d010408..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerCase.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to lower case. - * - * Lower case is the naming convention in which each word is written in lowercase and separated by an space ( ) character. - * - * @param {string | object} str - The string that is to be changed to lower case. - * @returns {string} - The converted string to lower case. - * - * @example - * const convertedStr1 = lowerCase('camelCase') // returns 'camel case' - * const convertedStr2 = lowerCase('some whitespace') // returns 'some whitespace' - * const convertedStr3 = lowerCase('hyphen-text') // returns 'hyphen text' - * const convertedStr4 = lowerCase('HTTPRequest') // returns 'http request' - */ -declare function lowerCase(str?: string): string; - -export { lowerCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerCase.js deleted file mode 100644 index 8018553..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerCase.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const deburr = require('./deburr.js'); -const lowerCase$1 = require('../../string/lowerCase.js'); -const normalizeForCase = require('../_internal/normalizeForCase.js'); - -function lowerCase(str) { - return lowerCase$1.lowerCase(normalizeForCase.normalizeForCase(deburr.deburr(str))); -} - -exports.lowerCase = lowerCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerCase.mjs deleted file mode 100644 index b8023bb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerCase.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { deburr } from './deburr.mjs'; -import { lowerCase as lowerCase$1 } from '../../string/lowerCase.mjs'; -import { normalizeForCase } from '../_internal/normalizeForCase.mjs'; - -function lowerCase(str) { - return lowerCase$1(normalizeForCase(deburr(str))); -} - -export { lowerCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerFirst.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerFirst.d.mts deleted file mode 100644 index 566875f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerFirst.d.mts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Converts the first character of string to lower case. - * - * @param {string} str - The string that is to be changed - * @returns {string} - The converted string. - * - * @example - * const convertedStr1 = lowerCase('fred') // returns 'fred' - * const convertedStr2 = lowerCase('Fred') // returns 'fred' - * const convertedStr3 = lowerCase('FRED') // returns 'fRED' - */ -declare function lowerFirst(str?: T): Uncapitalize; - -export { lowerFirst }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerFirst.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerFirst.d.ts deleted file mode 100644 index 566875f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerFirst.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Converts the first character of string to lower case. - * - * @param {string} str - The string that is to be changed - * @returns {string} - The converted string. - * - * @example - * const convertedStr1 = lowerCase('fred') // returns 'fred' - * const convertedStr2 = lowerCase('Fred') // returns 'fred' - * const convertedStr3 = lowerCase('FRED') // returns 'fRED' - */ -declare function lowerFirst(str?: T): Uncapitalize; - -export { lowerFirst }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerFirst.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerFirst.js deleted file mode 100644 index 110c7bc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerFirst.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const lowerFirst$1 = require('../../string/lowerFirst.js'); -const toString = require('../util/toString.js'); - -function lowerFirst(str) { - return lowerFirst$1.lowerFirst(toString.toString(str)); -} - -exports.lowerFirst = lowerFirst; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerFirst.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerFirst.mjs deleted file mode 100644 index a885205..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/lowerFirst.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { lowerFirst as lowerFirst$1 } from '../../string/lowerFirst.mjs'; -import { toString } from '../util/toString.mjs'; - -function lowerFirst(str) { - return lowerFirst$1(toString(str)); -} - -export { lowerFirst }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/pad.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/pad.d.mts deleted file mode 100644 index 47fda5d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/pad.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Pads string on the left and right sides if it's shorter than length. Padding characters are truncated if they can't be evenly divided by length. - * If the length is less than or equal to the original string's length, or if the padding character is an empty string, the original string is returned unchanged. - * - * @param {string} str - The string to pad. - * @param {number} [length] - The length of the resulting string once padded. - * @param {string} [chars] - The character(s) to use for padding. - * @returns {string} - The padded string, or the original string if padding is not required. - * - * @example - * const result1 = pad('abc', 8); // result will be ' abc ' - * const result2 = pad('abc', 8, '_-'); // result will be '_-abc_-_' - * const result3 = pad('abc', 3); // result will be 'abc' - * const result4 = pad('abc', 2); // result will be 'abc' - * - */ -declare function pad(str?: string, length?: number, chars?: string): string; - -export { pad }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/pad.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/pad.d.ts deleted file mode 100644 index 47fda5d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/pad.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Pads string on the left and right sides if it's shorter than length. Padding characters are truncated if they can't be evenly divided by length. - * If the length is less than or equal to the original string's length, or if the padding character is an empty string, the original string is returned unchanged. - * - * @param {string} str - The string to pad. - * @param {number} [length] - The length of the resulting string once padded. - * @param {string} [chars] - The character(s) to use for padding. - * @returns {string} - The padded string, or the original string if padding is not required. - * - * @example - * const result1 = pad('abc', 8); // result will be ' abc ' - * const result2 = pad('abc', 8, '_-'); // result will be '_-abc_-_' - * const result3 = pad('abc', 3); // result will be 'abc' - * const result4 = pad('abc', 2); // result will be 'abc' - * - */ -declare function pad(str?: string, length?: number, chars?: string): string; - -export { pad }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/pad.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/pad.js deleted file mode 100644 index a926bab..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/pad.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const pad$1 = require('../../string/pad.js'); -const toString = require('../util/toString.js'); - -function pad(str, length, chars) { - return pad$1.pad(toString.toString(str), length, chars); -} - -exports.pad = pad; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/pad.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/pad.mjs deleted file mode 100644 index 1d7cfec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/pad.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { pad as pad$1 } from '../../string/pad.mjs'; -import { toString } from '../util/toString.mjs'; - -function pad(str, length, chars) { - return pad$1(toString(str), length, chars); -} - -export { pad }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padEnd.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padEnd.d.mts deleted file mode 100644 index c0e7509..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padEnd.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Pads the end of a string with a given character until it reaches the specified length. - * - * If the length is less than or equal to the original string's length, or if the padding character is an empty string, - * the original string is returned unchanged. - * - * @param {string} str - The string to pad. - * @param {number} [length] - The length of the resulting string once padded. - * @param {string} [chars] - The character(s) to use for padding. - * @returns {string} - The padded string, or the original string if padding is not required. - * - * @example - * const result1 = padEnd('abc', 6); // result will be 'abc ' - * const result2 = padEnd('abc', 6, '_-'); // result will be 'abc_-_' - * const result3 = padEnd('abc', 3); // result will be 'abc' - * const result4 = padEnd('abc', 2); // result will be 'abc' - */ -declare function padEnd(str?: string, length?: number, chars?: string): string; - -export { padEnd }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padEnd.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padEnd.d.ts deleted file mode 100644 index c0e7509..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padEnd.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Pads the end of a string with a given character until it reaches the specified length. - * - * If the length is less than or equal to the original string's length, or if the padding character is an empty string, - * the original string is returned unchanged. - * - * @param {string} str - The string to pad. - * @param {number} [length] - The length of the resulting string once padded. - * @param {string} [chars] - The character(s) to use for padding. - * @returns {string} - The padded string, or the original string if padding is not required. - * - * @example - * const result1 = padEnd('abc', 6); // result will be 'abc ' - * const result2 = padEnd('abc', 6, '_-'); // result will be 'abc_-_' - * const result3 = padEnd('abc', 3); // result will be 'abc' - * const result4 = padEnd('abc', 2); // result will be 'abc' - */ -declare function padEnd(str?: string, length?: number, chars?: string): string; - -export { padEnd }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padEnd.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padEnd.js deleted file mode 100644 index 8c1f9bf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padEnd.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toString = require('../util/toString.js'); - -function padEnd(str, length = 0, chars = ' ') { - return toString.toString(str).padEnd(length, chars); -} - -exports.padEnd = padEnd; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padEnd.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padEnd.mjs deleted file mode 100644 index 7156646..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padEnd.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { toString } from '../util/toString.mjs'; - -function padEnd(str, length = 0, chars = ' ') { - return toString(str).padEnd(length, chars); -} - -export { padEnd }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padStart.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padStart.d.mts deleted file mode 100644 index 5c8e06b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padStart.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Pads the start of a string with a given character until it reaches the specified length. - * - * If the length is less than or equal to the original string's length, or if the padding character is an empty string, - * the original string is returned unchanged. - * - * @param {string} str - The string to pad. - * @param {number} [length] - The length of the resulting string once padded. - * @param {string} [chars] - The character(s) to use for padding. - * @returns {string} - The padded string, or the original string if padding is not required. - * - * @example - * const result1 = padStart('abc', 6); // result will be ' abc' - * const result2 = padStart('abc', 6, '_-'); // result will be '_-_abc' - * const result3 = padStart('abc', 3); // result will be 'abc' - * const result4 = padStart('abc', 2); // result will be 'abc' - */ -declare function padStart(str?: string, length?: number, chars?: string): string; - -export { padStart }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padStart.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padStart.d.ts deleted file mode 100644 index 5c8e06b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padStart.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Pads the start of a string with a given character until it reaches the specified length. - * - * If the length is less than or equal to the original string's length, or if the padding character is an empty string, - * the original string is returned unchanged. - * - * @param {string} str - The string to pad. - * @param {number} [length] - The length of the resulting string once padded. - * @param {string} [chars] - The character(s) to use for padding. - * @returns {string} - The padded string, or the original string if padding is not required. - * - * @example - * const result1 = padStart('abc', 6); // result will be ' abc' - * const result2 = padStart('abc', 6, '_-'); // result will be '_-_abc' - * const result3 = padStart('abc', 3); // result will be 'abc' - * const result4 = padStart('abc', 2); // result will be 'abc' - */ -declare function padStart(str?: string, length?: number, chars?: string): string; - -export { padStart }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padStart.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padStart.js deleted file mode 100644 index ab43bfa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padStart.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toString = require('../util/toString.js'); - -function padStart(str, length = 0, chars = ' ') { - return toString.toString(str).padStart(length, chars); -} - -exports.padStart = padStart; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padStart.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padStart.mjs deleted file mode 100644 index 7e02591..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/padStart.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { toString } from '../util/toString.mjs'; - -function padStart(str, length = 0, chars = ' ') { - return toString(str).padStart(length, chars); -} - -export { padStart }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/repeat.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/repeat.d.mts deleted file mode 100644 index 3016ec8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/repeat.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Repeats the given string n times. - * - * If n is less than 1, an empty string is returned, or if the string is an empty string, - * the original string is returned unchanged. - * - * @param {string} str - The string to repeat. - * @param {number} n - The number of times to repeat the string. - * @returns {string} - The repeated string, or an empty string if n is less than 1. - * - * @example - * repeat('abc', 0); // '' - * repeat('abc', 2); // 'abcabc' - */ -declare function repeat(str?: string, n?: number): string; - -export { repeat }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/repeat.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/repeat.d.ts deleted file mode 100644 index 3016ec8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/repeat.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Repeats the given string n times. - * - * If n is less than 1, an empty string is returned, or if the string is an empty string, - * the original string is returned unchanged. - * - * @param {string} str - The string to repeat. - * @param {number} n - The number of times to repeat the string. - * @returns {string} - The repeated string, or an empty string if n is less than 1. - * - * @example - * repeat('abc', 0); // '' - * repeat('abc', 2); // 'abcabc' - */ -declare function repeat(str?: string, n?: number): string; - -export { repeat }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/repeat.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/repeat.js deleted file mode 100644 index 182dd8b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/repeat.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isIterateeCall = require('../_internal/isIterateeCall.js'); -const MAX_SAFE_INTEGER = require('../_internal/MAX_SAFE_INTEGER.js'); -const toInteger = require('../util/toInteger.js'); -const toString = require('../util/toString.js'); - -function repeat(str, n, guard) { - if (guard ? isIterateeCall.isIterateeCall(str, n, guard) : n === undefined) { - n = 1; - } - else { - n = toInteger.toInteger(n); - } - if (n < 1 || n > MAX_SAFE_INTEGER.MAX_SAFE_INTEGER) { - return ''; - } - return toString.toString(str).repeat(n); -} - -exports.repeat = repeat; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/repeat.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/repeat.mjs deleted file mode 100644 index 4defc4d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/repeat.mjs +++ /dev/null @@ -1,19 +0,0 @@ -import { isIterateeCall } from '../_internal/isIterateeCall.mjs'; -import { MAX_SAFE_INTEGER } from '../_internal/MAX_SAFE_INTEGER.mjs'; -import { toInteger } from '../util/toInteger.mjs'; -import { toString } from '../util/toString.mjs'; - -function repeat(str, n, guard) { - if (guard ? isIterateeCall(str, n, guard) : n === undefined) { - n = 1; - } - else { - n = toInteger(n); - } - if (n < 1 || n > MAX_SAFE_INTEGER) { - return ''; - } - return toString(str).repeat(n); -} - -export { repeat }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/replace.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/replace.d.mts deleted file mode 100644 index 9f4809f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/replace.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -type ReplaceFunction = (match: string, ...args: any[]) => string; -declare function replace(string: string, pattern: RegExp | string, replacement: ReplaceFunction | string): string; -declare function replace(pattern: RegExp | string, replacement: ReplaceFunction | string): string; - -export { replace }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/replace.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/replace.d.ts deleted file mode 100644 index 9f4809f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/replace.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -type ReplaceFunction = (match: string, ...args: any[]) => string; -declare function replace(string: string, pattern: RegExp | string, replacement: ReplaceFunction | string): string; -declare function replace(pattern: RegExp | string, replacement: ReplaceFunction | string): string; - -export { replace }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/replace.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/replace.js deleted file mode 100644 index cc075c2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/replace.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toString = require('../util/toString.js'); - -function replace(target, pattern, replacement) { - if (arguments.length < 3) { - return toString.toString(target); - } - return toString.toString(target).replace(pattern, replacement); -} - -exports.replace = replace; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/replace.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/replace.mjs deleted file mode 100644 index 1df5399..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/replace.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { toString } from '../util/toString.mjs'; - -function replace(target, pattern, replacement) { - if (arguments.length < 3) { - return toString(target); - } - return toString(target).replace(pattern, replacement); -} - -export { replace }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/snakeCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/snakeCase.d.mts deleted file mode 100644 index edab133..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/snakeCase.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to snake case. - * - * Snake case is the naming convention in which each word is written in lowercase and separated by an underscore (_) character. - * - * @param {string | object} str - The string that is to be changed to snake case. - * @returns {string} - The converted string to snake case. - * - * @example - * const convertedStr1 = snakeCase('camelCase') // returns 'camel_case' - * const convertedStr2 = snakeCase('some whitespace') // returns 'some_whitespace' - * const convertedStr3 = snakeCase('hyphen-text') // returns 'hyphen_text' - * const convertedStr4 = snakeCase('HTTPRequest') // returns 'http_request' - */ -declare function snakeCase(str?: string): string; - -export { snakeCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/snakeCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/snakeCase.d.ts deleted file mode 100644 index edab133..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/snakeCase.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to snake case. - * - * Snake case is the naming convention in which each word is written in lowercase and separated by an underscore (_) character. - * - * @param {string | object} str - The string that is to be changed to snake case. - * @returns {string} - The converted string to snake case. - * - * @example - * const convertedStr1 = snakeCase('camelCase') // returns 'camel_case' - * const convertedStr2 = snakeCase('some whitespace') // returns 'some_whitespace' - * const convertedStr3 = snakeCase('hyphen-text') // returns 'hyphen_text' - * const convertedStr4 = snakeCase('HTTPRequest') // returns 'http_request' - */ -declare function snakeCase(str?: string): string; - -export { snakeCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/snakeCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/snakeCase.js deleted file mode 100644 index 4e8df39..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/snakeCase.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const deburr = require('./deburr.js'); -const snakeCase$1 = require('../../string/snakeCase.js'); -const normalizeForCase = require('../_internal/normalizeForCase.js'); - -function snakeCase(str) { - return snakeCase$1.snakeCase(normalizeForCase.normalizeForCase(deburr.deburr(str))); -} - -exports.snakeCase = snakeCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/snakeCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/snakeCase.mjs deleted file mode 100644 index c0fe266..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/snakeCase.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { deburr } from './deburr.mjs'; -import { snakeCase as snakeCase$1 } from '../../string/snakeCase.mjs'; -import { normalizeForCase } from '../_internal/normalizeForCase.mjs'; - -function snakeCase(str) { - return snakeCase$1(normalizeForCase(deburr(str))); -} - -export { snakeCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/split.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/split.d.mts deleted file mode 100644 index a24a95f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/split.d.mts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Splits the input string by the specified `separator` - * and returns a new array containing the split segments. - * - * @param {string | null | undefined} [string=''] The string to split. - * @param {RegExp|string} [separator] The separator pattern to split by. - * @param {number} [limit] The length to truncate results to. - * @returns {Array} Returns the string segments. - * - * @example - * split('a-b-c', '-'); - * // => ['a', 'b', 'c'] - * - * split('a-b-c', '-', 2); - * // => ['a', 'b'] - */ -declare function split(string: string | null | undefined, separator?: RegExp | string, limit?: number): string[]; -/** - * Splits the input string by the specified `separator` - * and returns a new array containing the split segments. - * - * @param {string | null | undefined} [string=''] The string to split. - * @param {RegExp|string} [separator] The separator pattern to split by. - * @param {number} [limit] The length to truncate results to. - * @returns {Array} Returns the string segments. - * - * @example - * split('a-b-c', '-'); - * // => ['a', 'b', 'c'] - * - * split('a-b-c', '-', 2); - * // => ['a', 'b'] - */ -declare function split(string: string | null | undefined, index: string | number, guard: object): string[]; - -export { split }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/split.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/split.d.ts deleted file mode 100644 index a24a95f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/split.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Splits the input string by the specified `separator` - * and returns a new array containing the split segments. - * - * @param {string | null | undefined} [string=''] The string to split. - * @param {RegExp|string} [separator] The separator pattern to split by. - * @param {number} [limit] The length to truncate results to. - * @returns {Array} Returns the string segments. - * - * @example - * split('a-b-c', '-'); - * // => ['a', 'b', 'c'] - * - * split('a-b-c', '-', 2); - * // => ['a', 'b'] - */ -declare function split(string: string | null | undefined, separator?: RegExp | string, limit?: number): string[]; -/** - * Splits the input string by the specified `separator` - * and returns a new array containing the split segments. - * - * @param {string | null | undefined} [string=''] The string to split. - * @param {RegExp|string} [separator] The separator pattern to split by. - * @param {number} [limit] The length to truncate results to. - * @returns {Array} Returns the string segments. - * - * @example - * split('a-b-c', '-'); - * // => ['a', 'b', 'c'] - * - * split('a-b-c', '-', 2); - * // => ['a', 'b'] - */ -declare function split(string: string | null | undefined, index: string | number, guard: object): string[]; - -export { split }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/split.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/split.js deleted file mode 100644 index 06d9e91..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/split.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toString = require('../util/toString.js'); - -function split(string, separator, limit) { - return toString.toString(string).split(separator, limit); -} - -exports.split = split; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/split.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/split.mjs deleted file mode 100644 index 5dd06cd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/split.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { toString } from '../util/toString.mjs'; - -function split(string, separator, limit) { - return toString(string).split(separator, limit); -} - -export { split }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startCase.d.mts deleted file mode 100644 index e393aa2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startCase.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts the first character of each word in a string to uppercase and the remaining characters to lowercase. - * - * Start case is the naming convention in which each word is written with an initial capital letter. - * @param {string | object} str - The string to convert. - * @returns {string} The converted string. - * - * @example - * const result1 = startCase('hello world'); // result will be 'Hello World' - * const result2 = startCase('HELLO WORLD'); // result will be 'HELLO WORLD' - * const result3 = startCase('hello-world'); // result will be 'Hello World' - * const result4 = startCase('hello_world'); // result will be 'Hello World' - */ -declare function startCase(str?: string): string; - -export { startCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startCase.d.ts deleted file mode 100644 index e393aa2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startCase.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts the first character of each word in a string to uppercase and the remaining characters to lowercase. - * - * Start case is the naming convention in which each word is written with an initial capital letter. - * @param {string | object} str - The string to convert. - * @returns {string} The converted string. - * - * @example - * const result1 = startCase('hello world'); // result will be 'Hello World' - * const result2 = startCase('HELLO WORLD'); // result will be 'HELLO WORLD' - * const result3 = startCase('hello-world'); // result will be 'Hello World' - * const result4 = startCase('hello_world'); // result will be 'Hello World' - */ -declare function startCase(str?: string): string; - -export { startCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startCase.js deleted file mode 100644 index 522ce3f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startCase.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const deburr = require('./deburr.js'); -const words = require('../../string/words.js'); -const normalizeForCase = require('../_internal/normalizeForCase.js'); - -function startCase(str) { - const words$1 = words.words(normalizeForCase.normalizeForCase(deburr.deburr(str)).trim()); - let result = ''; - for (let i = 0; i < words$1.length; i++) { - const word = words$1[i]; - if (result) { - result += ' '; - } - if (word === word.toUpperCase()) { - result += word; - } - else { - result += word[0].toUpperCase() + word.slice(1).toLowerCase(); - } - } - return result; -} - -exports.startCase = startCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startCase.mjs deleted file mode 100644 index 406bbb6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startCase.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import { deburr } from './deburr.mjs'; -import { words } from '../../string/words.mjs'; -import { normalizeForCase } from '../_internal/normalizeForCase.mjs'; - -function startCase(str) { - const words$1 = words(normalizeForCase(deburr(str)).trim()); - let result = ''; - for (let i = 0; i < words$1.length; i++) { - const word = words$1[i]; - if (result) { - result += ' '; - } - if (word === word.toUpperCase()) { - result += word; - } - else { - result += word[0].toUpperCase() + word.slice(1).toLowerCase(); - } - } - return result; -} - -export { startCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startsWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startsWith.d.mts deleted file mode 100644 index 63b61de..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startsWith.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a string contains another string at the beginning of the string. - * - * Checks if one string startsWith another string. Optional position parameter to start searching from a certain index. - * - * @param {string} str - The string that might contain the target string. - * @param {string} target - The string to search for. - * @param {number} position - An optional offset to start searching in the str string - * @returns {boolean} - True if the str string starts with the target string. - * - * @example - * const isPrefix = startsWith('fooBar', 'foo') // returns true - * const isPrefix = startsWith('fooBar', 'bar') // returns false - * const isPrefix = startsWith('fooBar', 'abc') // returns false - * const isPrefix = startsWith('fooBar', 'Bar', 2) // returns true - * const isPrefix = startsWith('fooBar', 'Bar', 5) // returns false - */ -declare function startsWith(str?: string, target?: string, position?: number): boolean; - -export { startsWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startsWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startsWith.d.ts deleted file mode 100644 index 63b61de..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startsWith.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a string contains another string at the beginning of the string. - * - * Checks if one string startsWith another string. Optional position parameter to start searching from a certain index. - * - * @param {string} str - The string that might contain the target string. - * @param {string} target - The string to search for. - * @param {number} position - An optional offset to start searching in the str string - * @returns {boolean} - True if the str string starts with the target string. - * - * @example - * const isPrefix = startsWith('fooBar', 'foo') // returns true - * const isPrefix = startsWith('fooBar', 'bar') // returns false - * const isPrefix = startsWith('fooBar', 'abc') // returns false - * const isPrefix = startsWith('fooBar', 'Bar', 2) // returns true - * const isPrefix = startsWith('fooBar', 'Bar', 5) // returns false - */ -declare function startsWith(str?: string, target?: string, position?: number): boolean; - -export { startsWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startsWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startsWith.js deleted file mode 100644 index 0e54190..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startsWith.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function startsWith(str, target, position) { - if (str == null || target == null) { - return false; - } - if (position == null) { - position = 0; - } - return str.startsWith(target, position); -} - -exports.startsWith = startsWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startsWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startsWith.mjs deleted file mode 100644 index 558fa9e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/startsWith.mjs +++ /dev/null @@ -1,11 +0,0 @@ -function startsWith(str, target, position) { - if (str == null || target == null) { - return false; - } - if (position == null) { - position = 0; - } - return str.startsWith(target, position); -} - -export { startsWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/template.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/template.d.mts deleted file mode 100644 index 89955f2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/template.d.mts +++ /dev/null @@ -1,29 +0,0 @@ -import { escape } from './escape.mjs'; - -declare const templateSettings: { - escape: RegExp; - evaluate: RegExp; - interpolate: RegExp; - variable: string; - imports: { - _: { - escape: typeof escape; - template: typeof template; - }; - }; -}; -interface TemplateOptions { - escape?: RegExp | null | undefined; - evaluate?: RegExp | null | undefined; - interpolate?: RegExp | null | undefined; - variable?: string | undefined; - imports?: Record | undefined; - sourceURL?: string; -} -interface TemplateExecutor { - (data?: object): string; - source: string; -} -declare function template(string?: string, options?: TemplateOptions): TemplateExecutor; - -export { template, templateSettings }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/template.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/template.d.ts deleted file mode 100644 index a718e12..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/template.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { escape } from './escape.js'; - -declare const templateSettings: { - escape: RegExp; - evaluate: RegExp; - interpolate: RegExp; - variable: string; - imports: { - _: { - escape: typeof escape; - template: typeof template; - }; - }; -}; -interface TemplateOptions { - escape?: RegExp | null | undefined; - evaluate?: RegExp | null | undefined; - interpolate?: RegExp | null | undefined; - variable?: string | undefined; - imports?: Record | undefined; - sourceURL?: string; -} -interface TemplateExecutor { - (data?: object): string; - source: string; -} -declare function template(string?: string, options?: TemplateOptions): TemplateExecutor; - -export { template, templateSettings }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/template.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/template.js deleted file mode 100644 index 6a99d2c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/template.js +++ /dev/null @@ -1,92 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const escape = require('./escape.js'); -const attempt = require('../function/attempt.js'); -const defaults = require('../object/defaults.js'); -const toString = require('../util/toString.js'); - -const esTemplateRegExp = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; -const unEscapedRegExp = /['\n\r\u2028\u2029\\]/g; -const noMatchExp = /($^)/; -const escapeMap = new Map([ - ['\\', '\\'], - ["'", "'"], - ['\n', 'n'], - ['\r', 'r'], - ['\u2028', 'u2028'], - ['\u2029', 'u2029'], -]); -function escapeString(match) { - return `\\${escapeMap.get(match)}`; -} -const defaultInterpolateRegExp = /<%=([\s\S]+?)%>/g; -const templateSettings = { - escape: /<%-([\s\S]+?)%>/g, - evaluate: /<%([\s\S]+?)%>/g, - interpolate: defaultInterpolateRegExp, - variable: '', - imports: { - _: { - escape: escape.escape, - template, - }, - }, -}; -function template(string, options, guard) { - string = toString.toString(string); - if (guard) { - options = templateSettings; - } - options = defaults.defaults({ ...options }, templateSettings); - const delimitersRegExp = new RegExp([ - options.escape?.source ?? noMatchExp.source, - options.interpolate?.source ?? noMatchExp.source, - options.interpolate === defaultInterpolateRegExp ? esTemplateRegExp.source : noMatchExp.source, - options.evaluate?.source ?? noMatchExp.source, - '$', - ].join('|'), 'g'); - let lastIndex = 0; - let isEvaluated = false; - let source = `__p += ''`; - for (const match of string.matchAll(delimitersRegExp)) { - const [fullMatch, escapeValue, interpolateValue, esTemplateValue, evaluateValue] = match; - const { index } = match; - source += ` + '${string.slice(lastIndex, index).replace(unEscapedRegExp, escapeString)}'`; - if (escapeValue) { - source += ` + _.escape(${escapeValue})`; - } - if (interpolateValue) { - source += ` + ((${interpolateValue}) == null ? '' : ${interpolateValue})`; - } - else if (esTemplateValue) { - source += ` + ((${esTemplateValue}) == null ? '' : ${esTemplateValue})`; - } - if (evaluateValue) { - source += `;\n${evaluateValue};\n __p += ''`; - isEvaluated = true; - } - lastIndex = index + fullMatch.length; - } - const imports = defaults.defaults({ ...options.imports }, templateSettings.imports); - const importsKeys = Object.keys(imports); - const importValues = Object.values(imports); - const sourceURL = `//# sourceURL=${options.sourceURL ? String(options.sourceURL).replace(/[\r\n]/g, ' ') : `es-toolkit.templateSource[${Date.now()}]`}\n`; - const compiledFunction = `function(${options.variable || 'obj'}) { - let __p = ''; - ${options.variable ? '' : 'if (obj == null) { obj = {}; }'} - ${isEvaluated ? `function print() { __p += Array.prototype.join.call(arguments, ''); }` : ''} - ${options.variable ? source : `with(obj) {\n${source}\n}`} - return __p; - }`; - const result = attempt.attempt(() => new Function(...importsKeys, `${sourceURL}return ${compiledFunction}`)(...importValues)); - result.source = compiledFunction; - if (result instanceof Error) { - throw result; - } - return result; -} - -exports.template = template; -exports.templateSettings = templateSettings; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/template.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/template.mjs deleted file mode 100644 index ae3b940..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/template.mjs +++ /dev/null @@ -1,87 +0,0 @@ -import { escape } from './escape.mjs'; -import { attempt } from '../function/attempt.mjs'; -import { defaults } from '../object/defaults.mjs'; -import { toString } from '../util/toString.mjs'; - -const esTemplateRegExp = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; -const unEscapedRegExp = /['\n\r\u2028\u2029\\]/g; -const noMatchExp = /($^)/; -const escapeMap = new Map([ - ['\\', '\\'], - ["'", "'"], - ['\n', 'n'], - ['\r', 'r'], - ['\u2028', 'u2028'], - ['\u2029', 'u2029'], -]); -function escapeString(match) { - return `\\${escapeMap.get(match)}`; -} -const defaultInterpolateRegExp = /<%=([\s\S]+?)%>/g; -const templateSettings = { - escape: /<%-([\s\S]+?)%>/g, - evaluate: /<%([\s\S]+?)%>/g, - interpolate: defaultInterpolateRegExp, - variable: '', - imports: { - _: { - escape, - template, - }, - }, -}; -function template(string, options, guard) { - string = toString(string); - if (guard) { - options = templateSettings; - } - options = defaults({ ...options }, templateSettings); - const delimitersRegExp = new RegExp([ - options.escape?.source ?? noMatchExp.source, - options.interpolate?.source ?? noMatchExp.source, - options.interpolate === defaultInterpolateRegExp ? esTemplateRegExp.source : noMatchExp.source, - options.evaluate?.source ?? noMatchExp.source, - '$', - ].join('|'), 'g'); - let lastIndex = 0; - let isEvaluated = false; - let source = `__p += ''`; - for (const match of string.matchAll(delimitersRegExp)) { - const [fullMatch, escapeValue, interpolateValue, esTemplateValue, evaluateValue] = match; - const { index } = match; - source += ` + '${string.slice(lastIndex, index).replace(unEscapedRegExp, escapeString)}'`; - if (escapeValue) { - source += ` + _.escape(${escapeValue})`; - } - if (interpolateValue) { - source += ` + ((${interpolateValue}) == null ? '' : ${interpolateValue})`; - } - else if (esTemplateValue) { - source += ` + ((${esTemplateValue}) == null ? '' : ${esTemplateValue})`; - } - if (evaluateValue) { - source += `;\n${evaluateValue};\n __p += ''`; - isEvaluated = true; - } - lastIndex = index + fullMatch.length; - } - const imports = defaults({ ...options.imports }, templateSettings.imports); - const importsKeys = Object.keys(imports); - const importValues = Object.values(imports); - const sourceURL = `//# sourceURL=${options.sourceURL ? String(options.sourceURL).replace(/[\r\n]/g, ' ') : `es-toolkit.templateSource[${Date.now()}]`}\n`; - const compiledFunction = `function(${options.variable || 'obj'}) { - let __p = ''; - ${options.variable ? '' : 'if (obj == null) { obj = {}; }'} - ${isEvaluated ? `function print() { __p += Array.prototype.join.call(arguments, ''); }` : ''} - ${options.variable ? source : `with(obj) {\n${source}\n}`} - return __p; - }`; - const result = attempt(() => new Function(...importsKeys, `${sourceURL}return ${compiledFunction}`)(...importValues)); - result.source = compiledFunction; - if (result instanceof Error) { - throw result; - } - return result; -} - -export { template, templateSettings }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toLower.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toLower.d.mts deleted file mode 100644 index 1e96b20..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toLower.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Converts the given value to a string and transforms it to lower case. - * The function can handle various input types by first converting them to strings. - * - * @param {unknown} [value=''] The value to convert. - * @returns {string} Returns the lower cased string. - * @example - * - * toLower('--FOO-BAR--'); - * // => '--foo-bar--' - * - * toLower(null); - * // => '' - * - * toLower([1, 2, 3]); - * // => '1,2,3' - */ -declare function toLower(value?: T): Lowercase; - -export { toLower }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toLower.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toLower.d.ts deleted file mode 100644 index 1e96b20..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toLower.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Converts the given value to a string and transforms it to lower case. - * The function can handle various input types by first converting them to strings. - * - * @param {unknown} [value=''] The value to convert. - * @returns {string} Returns the lower cased string. - * @example - * - * toLower('--FOO-BAR--'); - * // => '--foo-bar--' - * - * toLower(null); - * // => '' - * - * toLower([1, 2, 3]); - * // => '1,2,3' - */ -declare function toLower(value?: T): Lowercase; - -export { toLower }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toLower.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toLower.js deleted file mode 100644 index a6eb3c0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toLower.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toString = require('../util/toString.js'); - -function toLower(value) { - return toString.toString(value).toLowerCase(); -} - -exports.toLower = toLower; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toLower.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toLower.mjs deleted file mode 100644 index 0e08ae4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toLower.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { toString } from '../util/toString.mjs'; - -function toLower(value) { - return toString(value).toLowerCase(); -} - -export { toLower }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toUpper.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toUpper.d.mts deleted file mode 100644 index 196f562..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toUpper.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Converts `string`, as a whole, to upper case just like - * [String#toUpperCase](https://mdn.io/toUpperCase). - * - * @param {unknown} [value=''] The value to convert. - * @returns {string} Returns the upper cased string. - * @example - * - * toUpper('--foo-bar--'); - * // => '--FOO-BAR--' - * - * toUpper(null); - * // => '' - * - * toUpper([1, 2, 3]); - * // => '1,2,3' - */ -declare function toUpper(value?: T): Uppercase; - -export { toUpper }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toUpper.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toUpper.d.ts deleted file mode 100644 index 196f562..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toUpper.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Converts `string`, as a whole, to upper case just like - * [String#toUpperCase](https://mdn.io/toUpperCase). - * - * @param {unknown} [value=''] The value to convert. - * @returns {string} Returns the upper cased string. - * @example - * - * toUpper('--foo-bar--'); - * // => '--FOO-BAR--' - * - * toUpper(null); - * // => '' - * - * toUpper([1, 2, 3]); - * // => '1,2,3' - */ -declare function toUpper(value?: T): Uppercase; - -export { toUpper }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toUpper.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toUpper.js deleted file mode 100644 index c39f2cf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toUpper.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toString = require('../util/toString.js'); - -function toUpper(value) { - return toString.toString(value).toUpperCase(); -} - -exports.toUpper = toUpper; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toUpper.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toUpper.mjs deleted file mode 100644 index 7f2a7f6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/toUpper.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { toString } from '../util/toString.mjs'; - -function toUpper(value) { - return toString(value).toUpperCase(); -} - -export { toUpper }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trim.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trim.d.mts deleted file mode 100644 index f81c0bb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trim.d.mts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Removes leading and trailing whitespace or specified characters from a string. - * - * @param {string} str - The string from which leading and trailing characters will be trimmed. - * @param {string | string[]} chars - The character(s) to remove from the end of the string. Defaults to `" "`. - * @returns {string} - The resulting string after the specified leading and trailing characters have been removed. - * - * @example - * trim(" hello "); // "hello" - * trim("--hello--", "-"); // "hello" - * trim("##hello##", ["#", "o"]); // "hell" - */ -declare function trim(string?: string, chars?: string): string; -/** - * Removes leading and trailing whitespace or specified characters from a string. - * - * @param {string} str - The string from which leading and trailing characters will be trimmed. - * @param {string | string[]} chars - The character(s) to remove from the end of the string. Defaults to `" "`. - * @returns {string} - The resulting string after the specified leading and trailing characters have been removed. - * - * @example - * trim(" hello "); // "hello" - * trim("--hello--", "-"); // "hello" - * trim("##hello##", ["#", "o"]); // "hell" - */ -declare function trim(string: string, index: string | number, guard: object): string; - -export { trim }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trim.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trim.d.ts deleted file mode 100644 index f81c0bb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trim.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Removes leading and trailing whitespace or specified characters from a string. - * - * @param {string} str - The string from which leading and trailing characters will be trimmed. - * @param {string | string[]} chars - The character(s) to remove from the end of the string. Defaults to `" "`. - * @returns {string} - The resulting string after the specified leading and trailing characters have been removed. - * - * @example - * trim(" hello "); // "hello" - * trim("--hello--", "-"); // "hello" - * trim("##hello##", ["#", "o"]); // "hell" - */ -declare function trim(string?: string, chars?: string): string; -/** - * Removes leading and trailing whitespace or specified characters from a string. - * - * @param {string} str - The string from which leading and trailing characters will be trimmed. - * @param {string | string[]} chars - The character(s) to remove from the end of the string. Defaults to `" "`. - * @returns {string} - The resulting string after the specified leading and trailing characters have been removed. - * - * @example - * trim(" hello "); // "hello" - * trim("--hello--", "-"); // "hello" - * trim("##hello##", ["#", "o"]); // "hell" - */ -declare function trim(string: string, index: string | number, guard: object): string; - -export { trim }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trim.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trim.js deleted file mode 100644 index 8892d6f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trim.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const trim$1 = require('../../string/trim.js'); - -function trim(str, chars, guard) { - if (str == null) { - return ''; - } - if (guard != null || chars == null) { - return str.toString().trim(); - } - switch (typeof chars) { - case 'object': { - if (Array.isArray(chars)) { - return trim$1.trim(str, chars.flatMap(x => x.toString().split(''))); - } - else { - return trim$1.trim(str, chars.toString().split('')); - } - } - default: { - return trim$1.trim(str, chars.toString().split('')); - } - } -} - -exports.trim = trim; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trim.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trim.mjs deleted file mode 100644 index 977a786..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trim.mjs +++ /dev/null @@ -1,25 +0,0 @@ -import { trim as trim$1 } from '../../string/trim.mjs'; - -function trim(str, chars, guard) { - if (str == null) { - return ''; - } - if (guard != null || chars == null) { - return str.toString().trim(); - } - switch (typeof chars) { - case 'object': { - if (Array.isArray(chars)) { - return trim$1(str, chars.flatMap(x => x.toString().split(''))); - } - else { - return trim$1(str, chars.toString().split('')); - } - } - default: { - return trim$1(str, chars.toString().split('')); - } - } -} - -export { trim }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimEnd.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimEnd.d.mts deleted file mode 100644 index 22bb90b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimEnd.d.mts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Removes trailing whitespace or specified characters from a string. - * - * @param {string} string - The string to trim. - * @param {string} chars - The characters to trim from the end of the string. - * @returns {string} Returns the trimmed string. - * - * @example - * trimEnd(' abc '); - * // => ' abc' - * - * trimEnd('-_-abc-_-', '_-'); - * // => '-_-abc' - */ -declare function trimEnd(string?: string, chars?: string): string; -/** - * Removes trailing whitespace or specified characters from a string. - * - * @param {string} string - The string to trim. - * @param {string | number} index - The index parameter (used with guard). - * @param {object} guard - Enables use as an iteratee for methods like `map`. - * @returns {string} Returns the trimmed string. - * - * @example - * trimEnd(' abc ', 0, {}); - * // => ' abc' - */ -declare function trimEnd(string: string, index: string | number, guard: object): string; - -export { trimEnd }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimEnd.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimEnd.d.ts deleted file mode 100644 index 22bb90b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimEnd.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Removes trailing whitespace or specified characters from a string. - * - * @param {string} string - The string to trim. - * @param {string} chars - The characters to trim from the end of the string. - * @returns {string} Returns the trimmed string. - * - * @example - * trimEnd(' abc '); - * // => ' abc' - * - * trimEnd('-_-abc-_-', '_-'); - * // => '-_-abc' - */ -declare function trimEnd(string?: string, chars?: string): string; -/** - * Removes trailing whitespace or specified characters from a string. - * - * @param {string} string - The string to trim. - * @param {string | number} index - The index parameter (used with guard). - * @param {object} guard - Enables use as an iteratee for methods like `map`. - * @returns {string} Returns the trimmed string. - * - * @example - * trimEnd(' abc ', 0, {}); - * // => ' abc' - */ -declare function trimEnd(string: string, index: string | number, guard: object): string; - -export { trimEnd }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimEnd.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimEnd.js deleted file mode 100644 index 61dee2c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimEnd.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const trimEnd$1 = require('../../string/trimEnd.js'); - -function trimEnd(str, chars, guard) { - if (str == null) { - return ''; - } - if (guard != null || chars == null) { - return str.toString().trimEnd(); - } - return trimEnd$1.trimEnd(str, chars.toString().split('')); -} - -exports.trimEnd = trimEnd; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimEnd.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimEnd.mjs deleted file mode 100644 index 6a444c3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimEnd.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import { trimEnd as trimEnd$1 } from '../../string/trimEnd.mjs'; - -function trimEnd(str, chars, guard) { - if (str == null) { - return ''; - } - if (guard != null || chars == null) { - return str.toString().trimEnd(); - } - return trimEnd$1(str, chars.toString().split('')); -} - -export { trimEnd }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimStart.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimStart.d.mts deleted file mode 100644 index aa300a4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimStart.d.mts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Removes leading whitespace or specified characters from a string. - * - * @param {string} string - The string to trim. - * @param {string} chars - The characters to trim from the start of the string. - * @returns {string} Returns the trimmed string. - * - * @example - * trimStart(' abc '); - * // => 'abc ' - * - * trimStart('-_-abc-_-', '_-'); - * // => 'abc-_-' - */ -declare function trimStart(string?: string, chars?: string): string; -/** - * Removes leading whitespace or specified characters from a string. - * - * @param {string} string - The string to trim. - * @param {string | number} index - The index parameter (used with guard). - * @param {object} guard - Enables use as an iteratee for methods like `map`. - * @returns {string} Returns the trimmed string. - * - * @example - * trimStart(' abc ', 0, {}); - * // => 'abc ' - */ -declare function trimStart(string: string, index: string | number, guard: object): string; - -export { trimStart }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimStart.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimStart.d.ts deleted file mode 100644 index aa300a4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimStart.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Removes leading whitespace or specified characters from a string. - * - * @param {string} string - The string to trim. - * @param {string} chars - The characters to trim from the start of the string. - * @returns {string} Returns the trimmed string. - * - * @example - * trimStart(' abc '); - * // => 'abc ' - * - * trimStart('-_-abc-_-', '_-'); - * // => 'abc-_-' - */ -declare function trimStart(string?: string, chars?: string): string; -/** - * Removes leading whitespace or specified characters from a string. - * - * @param {string} string - The string to trim. - * @param {string | number} index - The index parameter (used with guard). - * @param {object} guard - Enables use as an iteratee for methods like `map`. - * @returns {string} Returns the trimmed string. - * - * @example - * trimStart(' abc ', 0, {}); - * // => 'abc ' - */ -declare function trimStart(string: string, index: string | number, guard: object): string; - -export { trimStart }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimStart.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimStart.js deleted file mode 100644 index e088a7d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimStart.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const trimStart$1 = require('../../string/trimStart.js'); - -function trimStart(str, chars, guard) { - if (str == null) { - return ''; - } - if (guard != null || chars == null) { - return str.toString().trimStart(); - } - return trimStart$1.trimStart(str, chars.toString().split('')); -} - -exports.trimStart = trimStart; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimStart.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimStart.mjs deleted file mode 100644 index 15460c0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/trimStart.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import { trimStart as trimStart$1 } from '../../string/trimStart.mjs'; - -function trimStart(str, chars, guard) { - if (str == null) { - return ''; - } - if (guard != null || chars == null) { - return str.toString().trimStart(); - } - return trimStart$1(str, chars.toString().split('')); -} - -export { trimStart }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/truncate.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/truncate.d.mts deleted file mode 100644 index 62647a8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/truncate.d.mts +++ /dev/null @@ -1,34 +0,0 @@ -type TruncateOptions = { - length?: number; - separator?: string | RegExp; - omission?: string; -}; -/** - * This regex might more completely detect unicode, but it is slower and this project - * desires to mimic the behavior of lodash. - */ -/** - * Truncates `string` if it's longer than the given maximum string length. - * The last characters of the truncated string are replaced with the omission - * string which defaults to "...". - * - * @param {string} [string=''] The string to truncate. - * @param {Object} [options={}] The options object. - * @param {number} [options.length=30] The maximum string length. - * @param {string} [options.omission='...'] The string to indicate text is omitted. - * @param {RegExp|string} [options.separator] The separator pattern to truncate to. - * - * @example - * const test = 'hi-diddly-ho there, neighborino'; - * const truncatedStr1 = truncate(test) // returns 'hi-diddly-ho there, neighbo...' - * const truncatedStr2 = truncate(test, { length: 24, separator: ' ' }) // returns 'hi-diddly-ho there,...' - * const truncatedStr3 = truncate(test, { length: 24, separator: /,? +/ }) // returns 'hi-diddly-ho there...' - * const truncatedStr4 = truncate(test, { omission: ' [...]' }) // returns 'hi-diddly-ho there, neig [...]' - * const truncatedStr5 = truncate('ABC', { length: 3 }) // returns 'ABC' - * const truncatedStr6 = truncate('ABC', { length: 2 }) // returns '...' - * const truncatedStr7 = truncate('¥§✈✉🤓', { length: 5 }) // returns '¥§✈✉🤓' - * const truncatedStr8 = truncate('¥§✈✉🤓', { length: 4, omission: '…' }) // returns '¥§✈…' - */ -declare function truncate(string?: string, options?: TruncateOptions): string; - -export { truncate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/truncate.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/truncate.d.ts deleted file mode 100644 index 62647a8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/truncate.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -type TruncateOptions = { - length?: number; - separator?: string | RegExp; - omission?: string; -}; -/** - * This regex might more completely detect unicode, but it is slower and this project - * desires to mimic the behavior of lodash. - */ -/** - * Truncates `string` if it's longer than the given maximum string length. - * The last characters of the truncated string are replaced with the omission - * string which defaults to "...". - * - * @param {string} [string=''] The string to truncate. - * @param {Object} [options={}] The options object. - * @param {number} [options.length=30] The maximum string length. - * @param {string} [options.omission='...'] The string to indicate text is omitted. - * @param {RegExp|string} [options.separator] The separator pattern to truncate to. - * - * @example - * const test = 'hi-diddly-ho there, neighborino'; - * const truncatedStr1 = truncate(test) // returns 'hi-diddly-ho there, neighbo...' - * const truncatedStr2 = truncate(test, { length: 24, separator: ' ' }) // returns 'hi-diddly-ho there,...' - * const truncatedStr3 = truncate(test, { length: 24, separator: /,? +/ }) // returns 'hi-diddly-ho there...' - * const truncatedStr4 = truncate(test, { omission: ' [...]' }) // returns 'hi-diddly-ho there, neig [...]' - * const truncatedStr5 = truncate('ABC', { length: 3 }) // returns 'ABC' - * const truncatedStr6 = truncate('ABC', { length: 2 }) // returns '...' - * const truncatedStr7 = truncate('¥§✈✉🤓', { length: 5 }) // returns '¥§✈✉🤓' - * const truncatedStr8 = truncate('¥§✈✉🤓', { length: 4, omission: '…' }) // returns '¥§✈…' - */ -declare function truncate(string?: string, options?: TruncateOptions): string; - -export { truncate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/truncate.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/truncate.js deleted file mode 100644 index e8461d5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/truncate.js +++ /dev/null @@ -1,52 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isObject = require('../predicate/isObject.js'); - -const regexMultiByte = /[\u200d\ud800-\udfff\u0300-\u036f\ufe20-\ufe2f\u20d0-\u20ff\ufe0e\ufe0f]/; -function truncate(string, options) { - string = string != null ? `${string}` : ''; - let length = 30; - let omission = '...'; - if (isObject.isObject(options)) { - length = parseLength(options.length); - omission = 'omission' in options ? `${options.omission}` : '...'; - } - let i = string.length; - const lengthOmission = Array.from(omission).length; - const lengthBase = Math.max(length - lengthOmission, 0); - let strArray = undefined; - const unicode = regexMultiByte.test(string); - if (unicode) { - strArray = Array.from(string); - i = strArray.length; - } - if (length >= i) { - return string; - } - if (i <= lengthOmission) { - return omission; - } - let base = strArray === undefined ? string.slice(0, lengthBase) : strArray?.slice(0, lengthBase).join(''); - const separator = options?.separator; - if (!separator) { - base += omission; - return base; - } - const search = separator instanceof RegExp ? separator.source : separator; - const flags = 'u' + (separator instanceof RegExp ? separator.flags.replace('u', '') : ''); - const withoutSeparator = new RegExp(`(?.*(?:(?!${search}).))(?:${search})`, flags).exec(base); - return (!withoutSeparator?.groups ? base : withoutSeparator.groups.result) + omission; -} -function parseLength(length) { - if (length == null) { - return 30; - } - if (length <= 0) { - return 0; - } - return length; -} - -exports.truncate = truncate; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/truncate.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/truncate.mjs deleted file mode 100644 index 22450ec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/truncate.mjs +++ /dev/null @@ -1,48 +0,0 @@ -import { isObject } from '../predicate/isObject.mjs'; - -const regexMultiByte = /[\u200d\ud800-\udfff\u0300-\u036f\ufe20-\ufe2f\u20d0-\u20ff\ufe0e\ufe0f]/; -function truncate(string, options) { - string = string != null ? `${string}` : ''; - let length = 30; - let omission = '...'; - if (isObject(options)) { - length = parseLength(options.length); - omission = 'omission' in options ? `${options.omission}` : '...'; - } - let i = string.length; - const lengthOmission = Array.from(omission).length; - const lengthBase = Math.max(length - lengthOmission, 0); - let strArray = undefined; - const unicode = regexMultiByte.test(string); - if (unicode) { - strArray = Array.from(string); - i = strArray.length; - } - if (length >= i) { - return string; - } - if (i <= lengthOmission) { - return omission; - } - let base = strArray === undefined ? string.slice(0, lengthBase) : strArray?.slice(0, lengthBase).join(''); - const separator = options?.separator; - if (!separator) { - base += omission; - return base; - } - const search = separator instanceof RegExp ? separator.source : separator; - const flags = 'u' + (separator instanceof RegExp ? separator.flags.replace('u', '') : ''); - const withoutSeparator = new RegExp(`(?.*(?:(?!${search}).))(?:${search})`, flags).exec(base); - return (!withoutSeparator?.groups ? base : withoutSeparator.groups.result) + omission; -} -function parseLength(length) { - if (length == null) { - return 30; - } - if (length <= 0) { - return 0; - } - return length; -} - -export { truncate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/unescape.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/unescape.d.mts deleted file mode 100644 index 605328f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/unescape.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts the HTML entities `&`, `<`, `>`, `"`, and `'` in `str` to their corresponding characters. - * It is the inverse of `escape`. - * - * @param {string} str The string to unescape. - * @returns {string} Returns the unescaped string. - * - * @example - * unescape('This is a <div> element.'); // returns 'This is a
element.' - * unescape('This is a "quote"'); // returns 'This is a "quote"' - * unescape('This is a 'quote''); // returns 'This is a 'quote'' - * unescape('This is a & symbol'); // returns 'This is a & symbol' - */ -declare function unescape(str?: string): string; - -export { unescape }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/unescape.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/unescape.d.ts deleted file mode 100644 index 605328f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/unescape.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts the HTML entities `&`, `<`, `>`, `"`, and `'` in `str` to their corresponding characters. - * It is the inverse of `escape`. - * - * @param {string} str The string to unescape. - * @returns {string} Returns the unescaped string. - * - * @example - * unescape('This is a <div> element.'); // returns 'This is a
element.' - * unescape('This is a "quote"'); // returns 'This is a "quote"' - * unescape('This is a 'quote''); // returns 'This is a 'quote'' - * unescape('This is a & symbol'); // returns 'This is a & symbol' - */ -declare function unescape(str?: string): string; - -export { unescape }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/unescape.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/unescape.js deleted file mode 100644 index b93656f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/unescape.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const unescape$1 = require('../../string/unescape.js'); -const toString = require('../util/toString.js'); - -function unescape(str) { - return unescape$1.unescape(toString.toString(str)); -} - -exports.unescape = unescape; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/unescape.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/unescape.mjs deleted file mode 100644 index c3e46cc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/unescape.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { unescape as unescape$1 } from '../../string/unescape.mjs'; -import { toString } from '../util/toString.mjs'; - -function unescape(str) { - return unescape$1(toString(str)); -} - -export { unescape }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperCase.d.mts deleted file mode 100644 index 819519a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperCase.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to upper case. - * - * Upper case is the naming convention in which each word is written in uppercase and separated by an space ( ) character. - * - * @param {string | object} str - The string that is to be changed to upper case. - * @returns {string} - The converted string to upper case. - * - * @example - * const convertedStr1 = upperCase('camelCase') // returns 'CAMEL CASE' - * const convertedStr2 = upperCase('some whitespace') // returns 'SOME WHITESPACE' - * const convertedStr3 = upperCase('hyphen-text') // returns 'HYPHEN TEXT' - * const convertedStr4 = upperCase('HTTPRequest') // returns 'HTTP REQUEST' - */ -declare function upperCase(str?: string): string; - -export { upperCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperCase.d.ts deleted file mode 100644 index 819519a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperCase.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to upper case. - * - * Upper case is the naming convention in which each word is written in uppercase and separated by an space ( ) character. - * - * @param {string | object} str - The string that is to be changed to upper case. - * @returns {string} - The converted string to upper case. - * - * @example - * const convertedStr1 = upperCase('camelCase') // returns 'CAMEL CASE' - * const convertedStr2 = upperCase('some whitespace') // returns 'SOME WHITESPACE' - * const convertedStr3 = upperCase('hyphen-text') // returns 'HYPHEN TEXT' - * const convertedStr4 = upperCase('HTTPRequest') // returns 'HTTP REQUEST' - */ -declare function upperCase(str?: string): string; - -export { upperCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperCase.js deleted file mode 100644 index be4ea3c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperCase.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const deburr = require('./deburr.js'); -const upperCase$1 = require('../../string/upperCase.js'); -const normalizeForCase = require('../_internal/normalizeForCase.js'); - -function upperCase(str) { - return upperCase$1.upperCase(normalizeForCase.normalizeForCase(deburr.deburr(str))); -} - -exports.upperCase = upperCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperCase.mjs deleted file mode 100644 index 8125084..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperCase.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { deburr } from './deburr.mjs'; -import { upperCase as upperCase$1 } from '../../string/upperCase.mjs'; -import { normalizeForCase } from '../_internal/normalizeForCase.mjs'; - -function upperCase(str) { - return upperCase$1(normalizeForCase(deburr(str))); -} - -export { upperCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperFirst.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperFirst.d.mts deleted file mode 100644 index 847eebe..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperFirst.d.mts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Converts the first character of string to upper case. - * - * @param {string} str - The string that is to be changed - * @returns {string} - The converted string. - * - * @example - * const convertedStr1 = upperFirst('fred') // returns 'Fred' - * const convertedStr2 = upperFirst('Fred') // returns 'Fred' - * const convertedStr3 = upperFirst('FRED') // returns 'FRED' - */ -declare function upperFirst(str?: T): Capitalize; - -export { upperFirst }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperFirst.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperFirst.d.ts deleted file mode 100644 index 847eebe..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperFirst.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Converts the first character of string to upper case. - * - * @param {string} str - The string that is to be changed - * @returns {string} - The converted string. - * - * @example - * const convertedStr1 = upperFirst('fred') // returns 'Fred' - * const convertedStr2 = upperFirst('Fred') // returns 'Fred' - * const convertedStr3 = upperFirst('FRED') // returns 'FRED' - */ -declare function upperFirst(str?: T): Capitalize; - -export { upperFirst }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperFirst.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperFirst.js deleted file mode 100644 index abc1cb2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperFirst.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const upperFirst$1 = require('../../string/upperFirst.js'); -const toString = require('../util/toString.js'); - -function upperFirst(str) { - return upperFirst$1.upperFirst(toString.toString(str)); -} - -exports.upperFirst = upperFirst; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperFirst.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperFirst.mjs deleted file mode 100644 index 1dcc41a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/upperFirst.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { upperFirst as upperFirst$1 } from '../../string/upperFirst.mjs'; -import { toString } from '../util/toString.mjs'; - -function upperFirst(str) { - return upperFirst$1(toString(str)); -} - -export { upperFirst }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/words.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/words.d.mts deleted file mode 100644 index afb5c5f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/words.d.mts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Splits `string` into an array of its words. - * - * @param {string | object} str - The string or object that is to be split into words. - * @param {RegExp | string} [pattern] - The pattern to match words. - * @returns {string[]} - Returns the words of `string`. - * - * @example - * const wordsArray1 = words('fred, barney, & pebbles'); - * // => ['fred', 'barney', 'pebbles'] - * - */ -declare function words(string?: string, pattern?: string | RegExp): string[]; -/** - * Splits `string` into an array of its words. - * - * @param {string | object} str - The string or object that is to be split into words. - * @param {RegExp | string} [pattern] - The pattern to match words. - * @returns {string[]} - Returns the words of `string`. - * - * @example - * const wordsArray1 = words('fred, barney, & pebbles'); - * // => ['fred', 'barney', 'pebbles'] - */ -declare function words(string: string, index: string | number, guard: object): string[]; - -export { words }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/words.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/words.d.ts deleted file mode 100644 index afb5c5f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/words.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Splits `string` into an array of its words. - * - * @param {string | object} str - The string or object that is to be split into words. - * @param {RegExp | string} [pattern] - The pattern to match words. - * @returns {string[]} - Returns the words of `string`. - * - * @example - * const wordsArray1 = words('fred, barney, & pebbles'); - * // => ['fred', 'barney', 'pebbles'] - * - */ -declare function words(string?: string, pattern?: string | RegExp): string[]; -/** - * Splits `string` into an array of its words. - * - * @param {string | object} str - The string or object that is to be split into words. - * @param {RegExp | string} [pattern] - The pattern to match words. - * @returns {string[]} - Returns the words of `string`. - * - * @example - * const wordsArray1 = words('fred, barney, & pebbles'); - * // => ['fred', 'barney', 'pebbles'] - */ -declare function words(string: string, index: string | number, guard: object): string[]; - -export { words }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/words.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/words.js deleted file mode 100644 index 8d39521..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/words.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toString = require('../util/toString.js'); - -const rNonCharLatin = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\xd7\\xf7'; -const rUnicodeUpper = '\\p{Lu}'; -const rUnicodeLower = '\\p{Ll}'; -const rMisc = '(?:[\\p{Lm}\\p{Lo}]\\p{M}*)'; -const rNumber = '\\d'; -const rUnicodeOptContrLower = "(?:['\u2019](?:d|ll|m|re|s|t|ve))?"; -const rUnicodeOptContrUpper = "(?:['\u2019](?:D|LL|M|RE|S|T|VE))?"; -const rUnicodeBreak = `[\\p{Z}\\p{P}${rNonCharLatin}]`; -const rUnicodeMiscUpper = `(?:${rUnicodeUpper}|${rMisc})`; -const rUnicodeMiscLower = `(?:${rUnicodeLower}|${rMisc})`; -const rUnicodeWord = RegExp([ - `${rUnicodeUpper}?${rUnicodeLower}+${rUnicodeOptContrLower}(?=${rUnicodeBreak}|${rUnicodeUpper}|$)`, - `${rUnicodeMiscUpper}+${rUnicodeOptContrUpper}(?=${rUnicodeBreak}|${rUnicodeUpper}${rUnicodeMiscLower}|$)`, - `${rUnicodeUpper}?${rUnicodeMiscLower}+${rUnicodeOptContrLower}`, - `${rUnicodeUpper}+${rUnicodeOptContrUpper}`, - `${rNumber}*(?:1ST|2ND|3RD|(?![123])${rNumber}TH)(?=\\b|[a-z_])`, - `${rNumber}*(?:1st|2nd|3rd|(?![123])${rNumber}th)(?=\\b|[A-Z_])`, - `${rNumber}+`, - '\\p{Emoji_Presentation}', - '\\p{Extended_Pictographic}', -].join('|'), 'gu'); -function words(str, pattern = rUnicodeWord, guard) { - const input = toString.toString(str); - if (guard) { - pattern = rUnicodeWord; - } - if (typeof pattern === 'number') { - pattern = pattern.toString(); - } - const words = Array.from(input.match(pattern) ?? []); - return words.filter(x => x !== ''); -} - -exports.words = words; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/words.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/words.mjs deleted file mode 100644 index 03b6372..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/string/words.mjs +++ /dev/null @@ -1,36 +0,0 @@ -import { toString } from '../util/toString.mjs'; - -const rNonCharLatin = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\xd7\\xf7'; -const rUnicodeUpper = '\\p{Lu}'; -const rUnicodeLower = '\\p{Ll}'; -const rMisc = '(?:[\\p{Lm}\\p{Lo}]\\p{M}*)'; -const rNumber = '\\d'; -const rUnicodeOptContrLower = "(?:['\u2019](?:d|ll|m|re|s|t|ve))?"; -const rUnicodeOptContrUpper = "(?:['\u2019](?:D|LL|M|RE|S|T|VE))?"; -const rUnicodeBreak = `[\\p{Z}\\p{P}${rNonCharLatin}]`; -const rUnicodeMiscUpper = `(?:${rUnicodeUpper}|${rMisc})`; -const rUnicodeMiscLower = `(?:${rUnicodeLower}|${rMisc})`; -const rUnicodeWord = RegExp([ - `${rUnicodeUpper}?${rUnicodeLower}+${rUnicodeOptContrLower}(?=${rUnicodeBreak}|${rUnicodeUpper}|$)`, - `${rUnicodeMiscUpper}+${rUnicodeOptContrUpper}(?=${rUnicodeBreak}|${rUnicodeUpper}${rUnicodeMiscLower}|$)`, - `${rUnicodeUpper}?${rUnicodeMiscLower}+${rUnicodeOptContrLower}`, - `${rUnicodeUpper}+${rUnicodeOptContrUpper}`, - `${rNumber}*(?:1ST|2ND|3RD|(?![123])${rNumber}TH)(?=\\b|[a-z_])`, - `${rNumber}*(?:1st|2nd|3rd|(?![123])${rNumber}th)(?=\\b|[A-Z_])`, - `${rNumber}+`, - '\\p{Emoji_Presentation}', - '\\p{Extended_Pictographic}', -].join('|'), 'gu'); -function words(str, pattern = rUnicodeWord, guard) { - const input = toString(str); - if (guard) { - pattern = rUnicodeWord; - } - if (typeof pattern === 'number') { - pattern = pattern.toString(); - } - const words = Array.from(input.match(pattern) ?? []); - return words.filter(x => x !== ''); -} - -export { words }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/toolkit.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/toolkit.d.mts deleted file mode 100644 index 1a9c897..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/toolkit.d.mts +++ /dev/null @@ -1,9 +0,0 @@ -import * as compat from './compat.mjs'; - -type ToolkitFn = (value: any) => any; -type Compat = typeof compat; -interface Toolkit extends ToolkitFn, Compat { -} -declare const toolkit: Toolkit; - -export { type Toolkit, toolkit }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/toolkit.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/toolkit.d.ts deleted file mode 100644 index 200d5cc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/toolkit.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import * as compat from './compat.js'; - -type ToolkitFn = (value: any) => any; -type Compat = typeof compat; -interface Toolkit extends ToolkitFn, Compat { -} -declare const toolkit: Toolkit; - -export { type Toolkit, toolkit }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/toolkit.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/toolkit.js deleted file mode 100644 index 94b344e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/toolkit.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const compat = require('./compat.js'); - -const toolkit = ((value) => { - return value; -}); -Object.assign(toolkit, compat); -toolkit.partial.placeholder = toolkit; -toolkit.partialRight.placeholder = toolkit; - -exports.toolkit = toolkit; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/toolkit.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/toolkit.mjs deleted file mode 100644 index 46928f9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/toolkit.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import * as compat from './compat.mjs'; - -const toolkit = ((value) => { - return value; -}); -Object.assign(toolkit, compat); -toolkit.partial.placeholder = toolkit; -toolkit.partialRight.placeholder = toolkit; - -export { toolkit }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/bindAll.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/bindAll.d.mts deleted file mode 100644 index 82b7ee1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/bindAll.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -import { Many } from '../_internal/Many.mjs'; - -/** - * Binds methods of an object to the object itself, overwriting the existing method. - * Method names may be specified as individual arguments or as arrays of method names. - * - * @template T - The type of the object. - * @param {T} object - The object to bind methods to. - * @param {Array>} [methodNames] - The method names to bind, specified individually or in arrays. - * @returns {T} - Returns the object. - * - * @example - * const view = { - * 'label': 'docs', - * 'click': function() { - * console.log('clicked ' + this.label); - * } - * }; - * - * bindAll(view, ['click']); - * jQuery(element).on('click', view.click); - * // => Logs 'clicked docs' when clicked. - * - * @example - * // Using individual method names - * bindAll(view, 'click'); - * // => Same as above - */ -declare function bindAll(object: T, ...methodNames: Array>): T; - -export { bindAll }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/bindAll.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/bindAll.d.ts deleted file mode 100644 index e66ed5e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/bindAll.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Many } from '../_internal/Many.js'; - -/** - * Binds methods of an object to the object itself, overwriting the existing method. - * Method names may be specified as individual arguments or as arrays of method names. - * - * @template T - The type of the object. - * @param {T} object - The object to bind methods to. - * @param {Array>} [methodNames] - The method names to bind, specified individually or in arrays. - * @returns {T} - Returns the object. - * - * @example - * const view = { - * 'label': 'docs', - * 'click': function() { - * console.log('clicked ' + this.label); - * } - * }; - * - * bindAll(view, ['click']); - * jQuery(element).on('click', view.click); - * // => Logs 'clicked docs' when clicked. - * - * @example - * // Using individual method names - * bindAll(view, 'click'); - * // => Same as above - */ -declare function bindAll(object: T, ...methodNames: Array>): T; - -export { bindAll }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/bindAll.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/bindAll.js deleted file mode 100644 index c22eb25..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/bindAll.js +++ /dev/null @@ -1,47 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isFunction = require('../../predicate/isFunction.js'); -const isArray = require('../predicate/isArray.js'); -const isObject = require('../predicate/isObject.js'); -const toString = require('./toString.js'); - -function bindAll(object, ...methodNames) { - if (object == null) { - return object; - } - if (!isObject.isObject(object)) { - return object; - } - if (isArray.isArray(object) && methodNames.length === 0) { - return object; - } - const methods = []; - for (let i = 0; i < methodNames.length; i++) { - const name = methodNames[i]; - if (isArray.isArray(name)) { - methods.push(...name); - } - else if (name && typeof name === 'object' && 'length' in name) { - methods.push(...Array.from(name)); - } - else { - methods.push(name); - } - } - if (methods.length === 0) { - return object; - } - for (let i = 0; i < methods.length; i++) { - const key = methods[i]; - const stringKey = toString.toString(key); - const func = object[stringKey]; - if (isFunction.isFunction(func)) { - object[stringKey] = func.bind(object); - } - } - return object; -} - -exports.bindAll = bindAll; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/bindAll.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/bindAll.mjs deleted file mode 100644 index dd2ce5d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/bindAll.mjs +++ /dev/null @@ -1,43 +0,0 @@ -import { isFunction } from '../../predicate/isFunction.mjs'; -import { isArray } from '../predicate/isArray.mjs'; -import { isObject } from '../predicate/isObject.mjs'; -import { toString } from './toString.mjs'; - -function bindAll(object, ...methodNames) { - if (object == null) { - return object; - } - if (!isObject(object)) { - return object; - } - if (isArray(object) && methodNames.length === 0) { - return object; - } - const methods = []; - for (let i = 0; i < methodNames.length; i++) { - const name = methodNames[i]; - if (isArray(name)) { - methods.push(...name); - } - else if (name && typeof name === 'object' && 'length' in name) { - methods.push(...Array.from(name)); - } - else { - methods.push(name); - } - } - if (methods.length === 0) { - return object; - } - for (let i = 0; i < methods.length; i++) { - const key = methods[i]; - const stringKey = toString(key); - const func = object[stringKey]; - if (isFunction(func)) { - object[stringKey] = func.bind(object); - } - } - return object; -} - -export { bindAll }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/cond.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/cond.d.mts deleted file mode 100644 index 704a491..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/cond.d.mts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Creates a function that checks conditions one by one and runs the matching function. - * - * Each pair consists of a condition (predicate) and a function to run. - * The function goes through each condition in order until it finds one that's true. - * When it finds a true condition, it runs the corresponding function and returns its result. - * If none of the conditions are true, it returns undefined. - * - * @param {Array} pairs - Array of pairs. Each pair consists of a predicate function and a function to run. - * @returns {(...args: any[]) => unknown} A new composite function that checks conditions and runs the matching function. - * @example - * - * const func = cond([ - * [matches({ a: 1 }), constant('matches A')], - * [conforms({ b: isNumber }), constant('matches B')], - * [stubTrue, constant('no match')] - * ]); - * - * func({ a: 1, b: 2 }); - * // => 'matches A' - * - * func({ a: 0, b: 1 }); - * // => 'matches B' - * - * func({ a: '1', b: '2' }); - * // => 'no match' - */ -declare function cond(pairs: Array<[truthy: () => boolean, falsey: () => R]>): () => R; -/** - * Creates a function that checks conditions one by one and runs the matching function. - * - * Each pair consists of a condition (predicate) and a function to run. - * The function goes through each condition in order until it finds one that's true. - * When it finds a true condition, it runs the corresponding function and returns its result. - * If none of the conditions are true, it returns undefined. - * - * @param {Array} pairs - Array of pairs. Each pair consists of a predicate function and a function to run. - * @returns {(...args: any[]) => unknown} A new composite function that checks conditions and runs the matching function. - * @example - * - * const func = cond([ - * [matches({ a: 1 }), constant('matches A')], - * [conforms({ b: isNumber }), constant('matches B')], - * [stubTrue, constant('no match')] - * ]); - * - * func({ a: 1, b: 2 }); - * // => 'matches A' - * - * func({ a: 0, b: 1 }); - * // => 'matches B' - * - * func({ a: '1', b: '2' }); - * // => 'no match' - */ -declare function cond(pairs: Array<[truthy: (val: T) => boolean, falsey: (val: T) => R]>): (val: T) => R; - -export { cond }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/cond.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/cond.d.ts deleted file mode 100644 index 704a491..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/cond.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Creates a function that checks conditions one by one and runs the matching function. - * - * Each pair consists of a condition (predicate) and a function to run. - * The function goes through each condition in order until it finds one that's true. - * When it finds a true condition, it runs the corresponding function and returns its result. - * If none of the conditions are true, it returns undefined. - * - * @param {Array} pairs - Array of pairs. Each pair consists of a predicate function and a function to run. - * @returns {(...args: any[]) => unknown} A new composite function that checks conditions and runs the matching function. - * @example - * - * const func = cond([ - * [matches({ a: 1 }), constant('matches A')], - * [conforms({ b: isNumber }), constant('matches B')], - * [stubTrue, constant('no match')] - * ]); - * - * func({ a: 1, b: 2 }); - * // => 'matches A' - * - * func({ a: 0, b: 1 }); - * // => 'matches B' - * - * func({ a: '1', b: '2' }); - * // => 'no match' - */ -declare function cond(pairs: Array<[truthy: () => boolean, falsey: () => R]>): () => R; -/** - * Creates a function that checks conditions one by one and runs the matching function. - * - * Each pair consists of a condition (predicate) and a function to run. - * The function goes through each condition in order until it finds one that's true. - * When it finds a true condition, it runs the corresponding function and returns its result. - * If none of the conditions are true, it returns undefined. - * - * @param {Array} pairs - Array of pairs. Each pair consists of a predicate function and a function to run. - * @returns {(...args: any[]) => unknown} A new composite function that checks conditions and runs the matching function. - * @example - * - * const func = cond([ - * [matches({ a: 1 }), constant('matches A')], - * [conforms({ b: isNumber }), constant('matches B')], - * [stubTrue, constant('no match')] - * ]); - * - * func({ a: 1, b: 2 }); - * // => 'matches A' - * - * func({ a: 0, b: 1 }); - * // => 'matches B' - * - * func({ a: '1', b: '2' }); - * // => 'no match' - */ -declare function cond(pairs: Array<[truthy: (val: T) => boolean, falsey: (val: T) => R]>): (val: T) => R; - -export { cond }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/cond.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/cond.js deleted file mode 100644 index 2a57895..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/cond.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const iteratee = require('./iteratee.js'); -const isFunction = require('../../predicate/isFunction.js'); - -function cond(pairs) { - const length = pairs.length; - const processedPairs = pairs.map(pair => { - const predicate = pair[0]; - const func = pair[1]; - if (!isFunction.isFunction(func)) { - throw new TypeError('Expected a function'); - } - return [iteratee.iteratee(predicate), func]; - }); - return function (...args) { - for (let i = 0; i < length; i++) { - const pair = processedPairs[i]; - const predicate = pair[0]; - const func = pair[1]; - if (predicate.apply(this, args)) { - return func.apply(this, args); - } - } - }; -} - -exports.cond = cond; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/cond.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/cond.mjs deleted file mode 100644 index 2ebd641..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/cond.mjs +++ /dev/null @@ -1,26 +0,0 @@ -import { iteratee } from './iteratee.mjs'; -import { isFunction } from '../../predicate/isFunction.mjs'; - -function cond(pairs) { - const length = pairs.length; - const processedPairs = pairs.map(pair => { - const predicate = pair[0]; - const func = pair[1]; - if (!isFunction(func)) { - throw new TypeError('Expected a function'); - } - return [iteratee(predicate), func]; - }); - return function (...args) { - for (let i = 0; i < length; i++) { - const pair = processedPairs[i]; - const predicate = pair[0]; - const func = pair[1]; - if (predicate.apply(this, args)) { - return func.apply(this, args); - } - } - }; -} - -export { cond }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/constant.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/constant.d.mts deleted file mode 100644 index bb2e469..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/constant.d.mts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Creates a new function that always returns `value`. - * - * @template T - The type of the value to return. - * @param {T} value - The value to return from the new function. - * @returns {() => T} Returns the new constant function. - */ -declare function constant(value: T): () => T; - -export { constant }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/constant.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/constant.d.ts deleted file mode 100644 index bb2e469..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/constant.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Creates a new function that always returns `value`. - * - * @template T - The type of the value to return. - * @param {T} value - The value to return from the new function. - * @returns {() => T} Returns the new constant function. - */ -declare function constant(value: T): () => T; - -export { constant }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/constant.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/constant.js deleted file mode 100644 index e467b26..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/constant.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function constant(value) { - return () => value; -} - -exports.constant = constant; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/constant.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/constant.mjs deleted file mode 100644 index 5be2843..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/constant.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function constant(value) { - return () => value; -} - -export { constant }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/defaultTo.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/defaultTo.d.mts deleted file mode 100644 index 51267a6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/defaultTo.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Returns the default value for `null`, `undefined`, and `NaN`. - * - * @template T - The type of the value parameter - * @param {T | null | undefined} value - The value to check. - * @param {T} defaultValue - The default value to return if the first value is null, undefined, or NaN. - * @returns {T} Returns either the first value or the default value. - */ -declare function defaultTo(value: T | null | undefined, defaultValue: T): T; -/** - * Returns the default value for `null`, `undefined`, and `NaN`. - * - * @template T - The type of the value parameter - * @template D - The type of the defaultValue parameter - * @param {T | null | undefined} value - The value to check. - * @param {D} defaultValue - The default value to return if the first value is null, undefined, or NaN. - * @returns {T | D} Returns either the first value or the default value. - */ -declare function defaultTo(value: T | null | undefined, defaultValue: D): T | D; - -export { defaultTo }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/defaultTo.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/defaultTo.d.ts deleted file mode 100644 index 51267a6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/defaultTo.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Returns the default value for `null`, `undefined`, and `NaN`. - * - * @template T - The type of the value parameter - * @param {T | null | undefined} value - The value to check. - * @param {T} defaultValue - The default value to return if the first value is null, undefined, or NaN. - * @returns {T} Returns either the first value or the default value. - */ -declare function defaultTo(value: T | null | undefined, defaultValue: T): T; -/** - * Returns the default value for `null`, `undefined`, and `NaN`. - * - * @template T - The type of the value parameter - * @template D - The type of the defaultValue parameter - * @param {T | null | undefined} value - The value to check. - * @param {D} defaultValue - The default value to return if the first value is null, undefined, or NaN. - * @returns {T | D} Returns either the first value or the default value. - */ -declare function defaultTo(value: T | null | undefined, defaultValue: D): T | D; - -export { defaultTo }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/defaultTo.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/defaultTo.js deleted file mode 100644 index cbbba68..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/defaultTo.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function defaultTo(value, defaultValue) { - if (value == null || Number.isNaN(value)) { - return defaultValue; - } - return value; -} - -exports.defaultTo = defaultTo; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/defaultTo.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/defaultTo.mjs deleted file mode 100644 index d18e909..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/defaultTo.mjs +++ /dev/null @@ -1,8 +0,0 @@ -function defaultTo(value, defaultValue) { - if (value == null || Number.isNaN(value)) { - return defaultValue; - } - return value; -} - -export { defaultTo }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gt.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gt.d.mts deleted file mode 100644 index a79fcbb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gt.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if value is greater than other. - * - * @param {any} value The value to compare. - * @param {any} other The other value to compare. - * @returns {boolean} Returns `true` if value is greater than other, else `false`. - * - * @example - * gt(3, 1); // true - * gt(3, 3); // false - * gt(1, 3); // false - */ -declare function gt(value: any, other: any): boolean; - -export { gt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gt.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gt.d.ts deleted file mode 100644 index a79fcbb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gt.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if value is greater than other. - * - * @param {any} value The value to compare. - * @param {any} other The other value to compare. - * @returns {boolean} Returns `true` if value is greater than other, else `false`. - * - * @example - * gt(3, 1); // true - * gt(3, 3); // false - * gt(1, 3); // false - */ -declare function gt(value: any, other: any): boolean; - -export { gt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gt.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gt.js deleted file mode 100644 index 90bcf32..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gt.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toNumber = require('./toNumber.js'); - -function gt(value, other) { - if (typeof value === 'string' && typeof other === 'string') { - return value > other; - } - return toNumber.toNumber(value) > toNumber.toNumber(other); -} - -exports.gt = gt; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gt.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gt.mjs deleted file mode 100644 index e185b7b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gt.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { toNumber } from './toNumber.mjs'; - -function gt(value, other) { - if (typeof value === 'string' && typeof other === 'string') { - return value > other; - } - return toNumber(value) > toNumber(other); -} - -export { gt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gte.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gte.d.mts deleted file mode 100644 index 6a4c0bb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gte.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if value is greater than or equal to other. - * - * @param {any} value The value to compare. - * @param {any} other The other value to compare. - * @returns {boolean} Returns `true` if value is greater than or equal to other, else `false`. - * - * @example - * gte(3, 1); // => true - * gte(3, 3); // => true - * gte(1, 3); // => false - */ -declare function gte(value: any, other: any): boolean; - -export { gte }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gte.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gte.d.ts deleted file mode 100644 index 6a4c0bb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gte.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if value is greater than or equal to other. - * - * @param {any} value The value to compare. - * @param {any} other The other value to compare. - * @returns {boolean} Returns `true` if value is greater than or equal to other, else `false`. - * - * @example - * gte(3, 1); // => true - * gte(3, 3); // => true - * gte(1, 3); // => false - */ -declare function gte(value: any, other: any): boolean; - -export { gte }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gte.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gte.js deleted file mode 100644 index d108666..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gte.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toNumber = require('./toNumber.js'); - -function gte(value, other) { - if (typeof value === 'string' && typeof other === 'string') { - return value >= other; - } - return toNumber.toNumber(value) >= toNumber.toNumber(other); -} - -exports.gte = gte; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gte.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gte.mjs deleted file mode 100644 index 66fcf92..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/gte.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { toNumber } from './toNumber.mjs'; - -function gte(value, other) { - if (typeof value === 'string' && typeof other === 'string') { - return value >= other; - } - return toNumber(value) >= toNumber(other); -} - -export { gte }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/invoke.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/invoke.d.mts deleted file mode 100644 index 78af14b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/invoke.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Invokes the method at `path` of `object` with the given arguments. - * - * @param {any} object - The object to query. - * @param {PropertyKey | PropertyKey[]} path - The path of the method to invoke. - * @param {any[]} args - The arguments to invoke the method with. - * @returns {any} - Returns the result of the invoked method. - * - * @example - * const object = { - * a: { - * b: function (x, y) { - * return x + y; - * } - * } - * }; - * - * invoke(object, 'a.b', [1, 2]); // => 3 - * invoke(object, ['a', 'b'], [1, 2]); // => 3 - */ -declare function invoke(object: any, path: PropertyKey | readonly PropertyKey[], ...args: any[]): any; - -export { invoke }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/invoke.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/invoke.d.ts deleted file mode 100644 index 78af14b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/invoke.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Invokes the method at `path` of `object` with the given arguments. - * - * @param {any} object - The object to query. - * @param {PropertyKey | PropertyKey[]} path - The path of the method to invoke. - * @param {any[]} args - The arguments to invoke the method with. - * @returns {any} - Returns the result of the invoked method. - * - * @example - * const object = { - * a: { - * b: function (x, y) { - * return x + y; - * } - * } - * }; - * - * invoke(object, 'a.b', [1, 2]); // => 3 - * invoke(object, ['a', 'b'], [1, 2]); // => 3 - */ -declare function invoke(object: any, path: PropertyKey | readonly PropertyKey[], ...args: any[]): any; - -export { invoke }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/invoke.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/invoke.js deleted file mode 100644 index 7593c1e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/invoke.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toPath = require('./toPath.js'); -const toKey = require('../_internal/toKey.js'); -const last = require('../array/last.js'); -const get = require('../object/get.js'); - -function invoke(object, path, ...args) { - args = args.flat(1); - if (object == null) { - return; - } - switch (typeof path) { - case 'string': { - if (typeof object === 'object' && Object.hasOwn(object, path)) { - return invokeImpl(object, [path], args); - } - return invokeImpl(object, toPath.toPath(path), args); - } - case 'number': - case 'symbol': { - return invokeImpl(object, [path], args); - } - default: { - if (Array.isArray(path)) { - return invokeImpl(object, path, args); - } - else { - return invokeImpl(object, [path], args); - } - } - } -} -function invokeImpl(object, path, args) { - const parent = get.get(object, path.slice(0, -1), object); - if (parent == null) { - return undefined; - } - let lastKey = last.last(path); - const lastValue = lastKey?.valueOf(); - if (typeof lastValue === 'number') { - lastKey = toKey.toKey(lastValue); - } - else { - lastKey = String(lastKey); - } - const func = get.get(parent, lastKey); - return func?.apply(parent, args); -} - -exports.invoke = invoke; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/invoke.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/invoke.mjs deleted file mode 100644 index 73e8809..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/invoke.mjs +++ /dev/null @@ -1,49 +0,0 @@ -import { toPath } from './toPath.mjs'; -import { toKey } from '../_internal/toKey.mjs'; -import { last } from '../array/last.mjs'; -import { get } from '../object/get.mjs'; - -function invoke(object, path, ...args) { - args = args.flat(1); - if (object == null) { - return; - } - switch (typeof path) { - case 'string': { - if (typeof object === 'object' && Object.hasOwn(object, path)) { - return invokeImpl(object, [path], args); - } - return invokeImpl(object, toPath(path), args); - } - case 'number': - case 'symbol': { - return invokeImpl(object, [path], args); - } - default: { - if (Array.isArray(path)) { - return invokeImpl(object, path, args); - } - else { - return invokeImpl(object, [path], args); - } - } - } -} -function invokeImpl(object, path, args) { - const parent = get(object, path.slice(0, -1), object); - if (parent == null) { - return undefined; - } - let lastKey = last(path); - const lastValue = lastKey?.valueOf(); - if (typeof lastValue === 'number') { - lastKey = toKey(lastValue); - } - else { - lastKey = String(lastKey); - } - const func = get(parent, lastKey); - return func?.apply(parent, args); -} - -export { invoke }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/iteratee.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/iteratee.d.mts deleted file mode 100644 index a754958..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/iteratee.d.mts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Returns the provided function as-is when it is a function type. - * - * @template F - The function type - * @param {F} func - The function to return - * @returns {F} Returns the provided function unchanged - * - * @example - * const fn = (x: number) => x * 2; - * const iterateeFn = iteratee(fn); - * iterateeFn(4); // => 8 - */ -declare function iteratee any>(func: F): F; -/** - * Creates an iteratee function based on the provided property key or object. - * If given a property key, returns a function that gets that property from objects. - * If given an object, returns a function that matches objects against the provided one. - * - * @param {PropertyKey | object} func - The value to convert to an iteratee - * @returns {Function} Returns the iteratee function - * - * @example - * // With property key - * const getLength = iteratee('length'); - * getLength([1,2,3]); // => 3 - * - * // With object - * const matchObj = iteratee({ x: 1, y: 2 }); - * matchObj({ x: 1, y: 2, z: 3 }); // => true - */ -declare function iteratee(func: PropertyKey | object): (...args: any[]) => any; - -export { iteratee }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/iteratee.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/iteratee.d.ts deleted file mode 100644 index a754958..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/iteratee.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Returns the provided function as-is when it is a function type. - * - * @template F - The function type - * @param {F} func - The function to return - * @returns {F} Returns the provided function unchanged - * - * @example - * const fn = (x: number) => x * 2; - * const iterateeFn = iteratee(fn); - * iterateeFn(4); // => 8 - */ -declare function iteratee any>(func: F): F; -/** - * Creates an iteratee function based on the provided property key or object. - * If given a property key, returns a function that gets that property from objects. - * If given an object, returns a function that matches objects against the provided one. - * - * @param {PropertyKey | object} func - The value to convert to an iteratee - * @returns {Function} Returns the iteratee function - * - * @example - * // With property key - * const getLength = iteratee('length'); - * getLength([1,2,3]); // => 3 - * - * // With object - * const matchObj = iteratee({ x: 1, y: 2 }); - * matchObj({ x: 1, y: 2, z: 3 }); // => true - */ -declare function iteratee(func: PropertyKey | object): (...args: any[]) => any; - -export { iteratee }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/iteratee.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/iteratee.js deleted file mode 100644 index 2454d6b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/iteratee.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const identity = require('../../function/identity.js'); -const property = require('../object/property.js'); -const matches = require('../predicate/matches.js'); -const matchesProperty = require('../predicate/matchesProperty.js'); - -function iteratee(value) { - if (value == null) { - return identity.identity; - } - switch (typeof value) { - case 'function': { - return value; - } - case 'object': { - if (Array.isArray(value) && value.length === 2) { - return matchesProperty.matchesProperty(value[0], value[1]); - } - return matches.matches(value); - } - case 'string': - case 'symbol': - case 'number': { - return property.property(value); - } - } -} - -exports.iteratee = iteratee; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/iteratee.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/iteratee.mjs deleted file mode 100644 index 53720af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/iteratee.mjs +++ /dev/null @@ -1,28 +0,0 @@ -import { identity } from '../../function/identity.mjs'; -import { property } from '../object/property.mjs'; -import { matches } from '../predicate/matches.mjs'; -import { matchesProperty } from '../predicate/matchesProperty.mjs'; - -function iteratee(value) { - if (value == null) { - return identity; - } - switch (typeof value) { - case 'function': { - return value; - } - case 'object': { - if (Array.isArray(value) && value.length === 2) { - return matchesProperty(value[0], value[1]); - } - return matches(value); - } - case 'string': - case 'symbol': - case 'number': { - return property(value); - } - } -} - -export { iteratee }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lt.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lt.d.mts deleted file mode 100644 index 8db3bbd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lt.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if value is less than other. - * - * @param {any} value The value to compare. - * @param {any} other The other value to compare. - * @returns {boolean} Returns `true` if value is less than other, else `false`. - * - * @example - * lt(1, 3); // true - * lt(3, 3); // false - * lt(3, 1); // false - */ -declare function lt(value: any, other: any): boolean; - -export { lt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lt.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lt.d.ts deleted file mode 100644 index 8db3bbd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lt.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if value is less than other. - * - * @param {any} value The value to compare. - * @param {any} other The other value to compare. - * @returns {boolean} Returns `true` if value is less than other, else `false`. - * - * @example - * lt(1, 3); // true - * lt(3, 3); // false - * lt(3, 1); // false - */ -declare function lt(value: any, other: any): boolean; - -export { lt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lt.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lt.js deleted file mode 100644 index 7ca9970..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lt.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toNumber = require('./toNumber.js'); - -function lt(value, other) { - if (typeof value === 'string' && typeof other === 'string') { - return value < other; - } - return toNumber.toNumber(value) < toNumber.toNumber(other); -} - -exports.lt = lt; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lt.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lt.mjs deleted file mode 100644 index fb898ff..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lt.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { toNumber } from './toNumber.mjs'; - -function lt(value, other) { - if (typeof value === 'string' && typeof other === 'string') { - return value < other; - } - return toNumber(value) < toNumber(other); -} - -export { lt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lte.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lte.d.mts deleted file mode 100644 index f5942ca..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lte.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if value is less than or equal to other. - * - * @param {any} value The value to compare. - * @param {any} other The other value to compare. - * @returns {boolean} Returns `true` if value is less than or equal to other, else `false`. - * - * @example - * lte(1, 3); // => true - * lte(3, 3); // => true - * lte(3, 1); // => false - */ -declare function lte(value: any, other: any): boolean; - -export { lte }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lte.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lte.d.ts deleted file mode 100644 index f5942ca..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lte.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if value is less than or equal to other. - * - * @param {any} value The value to compare. - * @param {any} other The other value to compare. - * @returns {boolean} Returns `true` if value is less than or equal to other, else `false`. - * - * @example - * lte(1, 3); // => true - * lte(3, 3); // => true - * lte(3, 1); // => false - */ -declare function lte(value: any, other: any): boolean; - -export { lte }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lte.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lte.js deleted file mode 100644 index b2e10c6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lte.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toNumber = require('./toNumber.js'); - -function lte(value, other) { - if (typeof value === 'string' && typeof other === 'string') { - return value <= other; - } - return toNumber.toNumber(value) <= toNumber.toNumber(other); -} - -exports.lte = lte; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lte.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lte.mjs deleted file mode 100644 index d0c1622..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/lte.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { toNumber } from './toNumber.mjs'; - -function lte(value, other) { - if (typeof value === 'string' && typeof other === 'string') { - return value <= other; - } - return toNumber(value) <= toNumber(other); -} - -export { lte }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/method.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/method.d.mts deleted file mode 100644 index e24e5ba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/method.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Creates a function that invokes the method at `path` of a given object with the provided arguments. - * - * @param {PropertyKey | PropertyKey[]} path - The path of the method to invoke. - * @param {...any} args - The arguments to invoke the method with. - * @returns {(object?: unknown) => any} - Returns a new function that takes an object and invokes the method at `path` with `args`. - * - * @example - * const object = { - * a: { - * b: function (x, y) { - * return x + y; - * } - * } - * }; - * - * const add = method('a.b', 1, 2); - * console.log(add(object)); // => 3 - */ -declare function method(path: PropertyKey | readonly PropertyKey[], ...args: any[]): (object: any) => any; - -export { method }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/method.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/method.d.ts deleted file mode 100644 index e24e5ba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/method.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Creates a function that invokes the method at `path` of a given object with the provided arguments. - * - * @param {PropertyKey | PropertyKey[]} path - The path of the method to invoke. - * @param {...any} args - The arguments to invoke the method with. - * @returns {(object?: unknown) => any} - Returns a new function that takes an object and invokes the method at `path` with `args`. - * - * @example - * const object = { - * a: { - * b: function (x, y) { - * return x + y; - * } - * } - * }; - * - * const add = method('a.b', 1, 2); - * console.log(add(object)); // => 3 - */ -declare function method(path: PropertyKey | readonly PropertyKey[], ...args: any[]): (object: any) => any; - -export { method }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/method.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/method.js deleted file mode 100644 index c3e9f9b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/method.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const invoke = require('./invoke.js'); - -function method(path, ...args) { - return function (object) { - return invoke.invoke(object, path, args); - }; -} - -exports.method = method; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/method.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/method.mjs deleted file mode 100644 index d28474a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/method.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { invoke } from './invoke.mjs'; - -function method(path, ...args) { - return function (object) { - return invoke(object, path, args); - }; -} - -export { method }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/methodOf.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/methodOf.d.mts deleted file mode 100644 index 1c027ba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/methodOf.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Creates a function that invokes the method at a given path of `object` with the provided arguments. - * - * @param {object} object - The object to query. - * @param {...any} args - The arguments to invoke the method with. - * @returns {(path: PropertyKey | PropertyKey[]) => any} - Returns a new function that takes a path and invokes the method at `path` with `args`. - * - * @example - * const object = { - * a: { - * b: function (x, y) { - * return x + y; - * } - * } - * }; - * - * const add = methodOf(object, 1, 2); - * console.log(add('a.b')); // => 3 - */ -declare function methodOf(object: object, ...args: any[]): (path: PropertyKey | readonly PropertyKey[]) => any; - -export { methodOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/methodOf.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/methodOf.d.ts deleted file mode 100644 index 1c027ba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/methodOf.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Creates a function that invokes the method at a given path of `object` with the provided arguments. - * - * @param {object} object - The object to query. - * @param {...any} args - The arguments to invoke the method with. - * @returns {(path: PropertyKey | PropertyKey[]) => any} - Returns a new function that takes a path and invokes the method at `path` with `args`. - * - * @example - * const object = { - * a: { - * b: function (x, y) { - * return x + y; - * } - * } - * }; - * - * const add = methodOf(object, 1, 2); - * console.log(add('a.b')); // => 3 - */ -declare function methodOf(object: object, ...args: any[]): (path: PropertyKey | readonly PropertyKey[]) => any; - -export { methodOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/methodOf.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/methodOf.js deleted file mode 100644 index ad9db7e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/methodOf.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const invoke = require('./invoke.js'); - -function methodOf(object, ...args) { - return function (path) { - return invoke.invoke(object, path, args); - }; -} - -exports.methodOf = methodOf; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/methodOf.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/methodOf.mjs deleted file mode 100644 index 970c778..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/methodOf.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { invoke } from './invoke.mjs'; - -function methodOf(object, ...args) { - return function (path) { - return invoke(object, path, args); - }; -} - -export { methodOf }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/now.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/now.d.mts deleted file mode 100644 index 3643b52..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/now.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Returns the number of milliseconds elapsed since January 1, 1970 00:00:00 UTC. - * - * @returns {number} The current time in milliseconds. - * - * @example - * const currentTime = now(); - * console.log(currentTime); // Outputs the current time in milliseconds - * - * @example - * const startTime = now(); - * // Some time-consuming operation - * const endTime = now(); - * console.log(`Operation took ${endTime - startTime} milliseconds`); - */ -declare function now(): number; - -export { now }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/now.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/now.d.ts deleted file mode 100644 index 3643b52..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/now.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Returns the number of milliseconds elapsed since January 1, 1970 00:00:00 UTC. - * - * @returns {number} The current time in milliseconds. - * - * @example - * const currentTime = now(); - * console.log(currentTime); // Outputs the current time in milliseconds - * - * @example - * const startTime = now(); - * // Some time-consuming operation - * const endTime = now(); - * console.log(`Operation took ${endTime - startTime} milliseconds`); - */ -declare function now(): number; - -export { now }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/now.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/now.js deleted file mode 100644 index 956be19..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/now.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function now() { - return Date.now(); -} - -exports.now = now; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/now.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/now.mjs deleted file mode 100644 index eee7673..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/now.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function now() { - return Date.now(); -} - -export { now }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/over.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/over.d.mts deleted file mode 100644 index 769a0dd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/over.d.mts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Creates a function that invokes given functions and returns their results as an array. - * - * @param {Array} iteratees - The iteratees to invoke. - * @returns {(...args: any[]) => unknown[]} Returns the new function. - * - * @example - * const func = over([Math.max, Math.min]); - * const func2 = over(Math.max, Math.min); // same as above - * func(1, 2, 3, 4); - * // => [4, 1] - * func2(1, 2, 3, 4); - * // => [4, 1] - * - * const func = over(['a', 'b']); - * func({ a: 1, b: 2 }); - * // => [1, 2] - * - * const func = over([{ a: 1 }, { b: 2 }]); - * func({ a: 1, b: 2 }); - * // => [true, false] - * - * const func = over([['a', 1], ['b', 2]]); - * func({ a: 1, b: 2 }); - * // => [true, true] - */ -declare function over(...iteratees: Array<((...args: any[]) => T) | ReadonlyArray<(...args: any[]) => T>>): (...args: any[]) => T[]; - -export { over }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/over.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/over.d.ts deleted file mode 100644 index 769a0dd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/over.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Creates a function that invokes given functions and returns their results as an array. - * - * @param {Array} iteratees - The iteratees to invoke. - * @returns {(...args: any[]) => unknown[]} Returns the new function. - * - * @example - * const func = over([Math.max, Math.min]); - * const func2 = over(Math.max, Math.min); // same as above - * func(1, 2, 3, 4); - * // => [4, 1] - * func2(1, 2, 3, 4); - * // => [4, 1] - * - * const func = over(['a', 'b']); - * func({ a: 1, b: 2 }); - * // => [1, 2] - * - * const func = over([{ a: 1 }, { b: 2 }]); - * func({ a: 1, b: 2 }); - * // => [true, false] - * - * const func = over([['a', 1], ['b', 2]]); - * func({ a: 1, b: 2 }); - * // => [true, true] - */ -declare function over(...iteratees: Array<((...args: any[]) => T) | ReadonlyArray<(...args: any[]) => T>>): (...args: any[]) => T[]; - -export { over }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/over.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/over.js deleted file mode 100644 index 8c7bc70..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/over.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const iteratee = require('./iteratee.js'); - -function over(...iteratees) { - if (iteratees.length === 1 && Array.isArray(iteratees[0])) { - iteratees = iteratees[0]; - } - const funcs = iteratees.map(item => iteratee.iteratee(item)); - return function (...args) { - return funcs.map(func => func.apply(this, args)); - }; -} - -exports.over = over; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/over.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/over.mjs deleted file mode 100644 index 8150c7b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/over.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import { iteratee } from './iteratee.mjs'; - -function over(...iteratees) { - if (iteratees.length === 1 && Array.isArray(iteratees[0])) { - iteratees = iteratees[0]; - } - const funcs = iteratees.map(item => iteratee(item)); - return function (...args) { - return funcs.map(func => func.apply(this, args)); - }; -} - -export { over }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overEvery.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overEvery.d.mts deleted file mode 100644 index 32426cc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overEvery.d.mts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Creates a predicate function that checks if a value satisfies all of the given predicates. - * - * @template T - The type of the value to be checked. - * @template U - The first possible type that the value could match. - * @template V - The second possible type that the value could match. - * - * @param {(value: T) => value is U} predicate1 - A function that checks if the value matches type `U`. - * @param {(value: T) => value is V} predicate2 - A function that checks if the value matches type `V`. - * - * @returns {(value: T) => value is U & V} A function that takes a value and returns `true` if all predicates return truthy. - * - * @example - * const func = overEvery( - * (value) => typeof value === 'string', - * (value) => value === 'hello' - * ); - * - * func("hello"); // true - * func("world"); // false - * func(42); // false - */ -declare function overEvery(predicate1: (value: T) => value is U, predicate2: (value: T) => value is V): (value: T) => value is U & V; -/** - * Creates a function that checks if all of the given predicates return truthy for the provided values. - * - * @template T - The type of the values to be checked. - * - * @param {...Array<((...values: T[]) => boolean) | ReadonlyArray<(...values: T[]) => boolean>>} predicates - - * A list of predicates or arrays of predicates. Each predicate is a function that takes one or more values of - * type `T` and returns a boolean indicating whether the condition is satisfied for those values. - * - * @returns {(...values: T[]) => boolean} A function that takes a list of values and returns `true` if all of the - * predicates return truthy for the provided values, and `false` otherwise. - * - * @example - * const func = overEvery( - * (value) => typeof value === 'string', - * (value) => value.length > 3 - * ); - * - * func("hello"); // true - * func("hi"); // false - * func(42); // false - * - * @example - * const func = overEvery([ - * (value) => value.a > 0, - * (value) => value.b > 0 - * ]); - * - * func({ a: 1, b: 2 }); // true - * func({ a: 0, b: 2 }); // false - * - * @example - * const func = overEvery( - * (a, b) => typeof a === 'string' && typeof b === 'string', - * (a, b) => a.length > 3 && b.length > 3 - * ); - * - * func("hello", "world"); // true - * func("hi", "world"); // false - * func(1, 10); // false - */ -declare function overEvery(...predicates: Array<((...args: T[]) => boolean) | ReadonlyArray<(...args: T[]) => boolean>>): (...args: T[]) => boolean; - -export { overEvery }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overEvery.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overEvery.d.ts deleted file mode 100644 index 32426cc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overEvery.d.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Creates a predicate function that checks if a value satisfies all of the given predicates. - * - * @template T - The type of the value to be checked. - * @template U - The first possible type that the value could match. - * @template V - The second possible type that the value could match. - * - * @param {(value: T) => value is U} predicate1 - A function that checks if the value matches type `U`. - * @param {(value: T) => value is V} predicate2 - A function that checks if the value matches type `V`. - * - * @returns {(value: T) => value is U & V} A function that takes a value and returns `true` if all predicates return truthy. - * - * @example - * const func = overEvery( - * (value) => typeof value === 'string', - * (value) => value === 'hello' - * ); - * - * func("hello"); // true - * func("world"); // false - * func(42); // false - */ -declare function overEvery(predicate1: (value: T) => value is U, predicate2: (value: T) => value is V): (value: T) => value is U & V; -/** - * Creates a function that checks if all of the given predicates return truthy for the provided values. - * - * @template T - The type of the values to be checked. - * - * @param {...Array<((...values: T[]) => boolean) | ReadonlyArray<(...values: T[]) => boolean>>} predicates - - * A list of predicates or arrays of predicates. Each predicate is a function that takes one or more values of - * type `T` and returns a boolean indicating whether the condition is satisfied for those values. - * - * @returns {(...values: T[]) => boolean} A function that takes a list of values and returns `true` if all of the - * predicates return truthy for the provided values, and `false` otherwise. - * - * @example - * const func = overEvery( - * (value) => typeof value === 'string', - * (value) => value.length > 3 - * ); - * - * func("hello"); // true - * func("hi"); // false - * func(42); // false - * - * @example - * const func = overEvery([ - * (value) => value.a > 0, - * (value) => value.b > 0 - * ]); - * - * func({ a: 1, b: 2 }); // true - * func({ a: 0, b: 2 }); // false - * - * @example - * const func = overEvery( - * (a, b) => typeof a === 'string' && typeof b === 'string', - * (a, b) => a.length > 3 && b.length > 3 - * ); - * - * func("hello", "world"); // true - * func("hi", "world"); // false - * func(1, 10); // false - */ -declare function overEvery(...predicates: Array<((...args: T[]) => boolean) | ReadonlyArray<(...args: T[]) => boolean>>): (...args: T[]) => boolean; - -export { overEvery }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overEvery.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overEvery.js deleted file mode 100644 index 5084a3f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overEvery.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const iteratee = require('./iteratee.js'); - -function overEvery(...predicates) { - return function (...values) { - for (let i = 0; i < predicates.length; ++i) { - const predicate = predicates[i]; - if (!Array.isArray(predicate)) { - if (!iteratee.iteratee(predicate).apply(this, values)) { - return false; - } - continue; - } - for (let j = 0; j < predicate.length; ++j) { - if (!iteratee.iteratee(predicate[j]).apply(this, values)) { - return false; - } - } - } - return true; - }; -} - -exports.overEvery = overEvery; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overEvery.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overEvery.mjs deleted file mode 100644 index 8c8f31f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overEvery.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import { iteratee } from './iteratee.mjs'; - -function overEvery(...predicates) { - return function (...values) { - for (let i = 0; i < predicates.length; ++i) { - const predicate = predicates[i]; - if (!Array.isArray(predicate)) { - if (!iteratee(predicate).apply(this, values)) { - return false; - } - continue; - } - for (let j = 0; j < predicate.length; ++j) { - if (!iteratee(predicate[j]).apply(this, values)) { - return false; - } - } - } - return true; - }; -} - -export { overEvery }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overSome.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overSome.d.mts deleted file mode 100644 index 0c98b2e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overSome.d.mts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Creates a predicate function that checks if a value satisfies at least one of the given predicates. - * - * @template T - The type of the value to be checked. - * @template U - The first possible type that the value could match. - * @template V - The second possible type that the value could match. - * - * @param {(value: T) => value is U} predicate1 - A function that checks if the value matches type `U`. - * @param {(value: T) => value is V} predicate2 - A function that checks if the value matches type `V`. - * - * @returns {(value: T) => value is U | V} A function that takes a value and returns `true` if any predicates return truthy. - * - * @example - * const func = overSome( - * (value) => typeof value === 'string', - * (value) => typeof value === 'number' - * ); - * - * func("hello"); // true - * func(42); // true - * func([]); // false - */ -declare function overSome(predicate1: (value: T) => value is U, predicate2: (value: T) => value is V): (value: T) => value is U | V; -/** - * Creates a function that checks if any of the given predicates return truthy for the provided values. - * - * @template T - The type of the values to be checked. - * - * @param {...Array<((...values: T[]) => boolean) | ReadonlyArray<(...values: T[]) => boolean>>} predicates - - * A list of predicates or arrays of predicates. Each predicate is a function that takes one or more values of - * type `T` and returns a boolean indicating whether the condition is satisfied for those values. - * - * @returns {(...values: T[]) => boolean} A function that takes a list of values and returns `true` if any of the - * predicates return truthy for the provided values, and `false` otherwise. - * - * @example - * const func = overSome( - * (value) => typeof value === 'string', - * (value) => typeof value === 'number', - * (value) => typeof value === 'symbol' - * ); - * - * func("hello"); // true - * func(42); // true - * func(Symbol()); // true - * func([]); // false - * - * @example - * const func = overSome([ - * (value) => value.a > 0, - * (value) => value.b > 0 - * ]); - * - * func({ a: 0, b: 2 }); // true - * func({ a: 0, b: 0 }); // false - * - * @example - * const func = overSome( - * (a, b) => typeof a === 'string' && typeof b === 'string', - * (a, b) => a > 0 && b > 0 - * ); - * - * func("hello", "world"); // true - * func(1, 10); // true - * func(0, 2); // false - */ -declare function overSome(...predicates: Array<((...values: T[]) => boolean) | ReadonlyArray<(...values: T[]) => boolean>>): (...values: T[]) => boolean; - -export { overSome }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overSome.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overSome.d.ts deleted file mode 100644 index 0c98b2e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overSome.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Creates a predicate function that checks if a value satisfies at least one of the given predicates. - * - * @template T - The type of the value to be checked. - * @template U - The first possible type that the value could match. - * @template V - The second possible type that the value could match. - * - * @param {(value: T) => value is U} predicate1 - A function that checks if the value matches type `U`. - * @param {(value: T) => value is V} predicate2 - A function that checks if the value matches type `V`. - * - * @returns {(value: T) => value is U | V} A function that takes a value and returns `true` if any predicates return truthy. - * - * @example - * const func = overSome( - * (value) => typeof value === 'string', - * (value) => typeof value === 'number' - * ); - * - * func("hello"); // true - * func(42); // true - * func([]); // false - */ -declare function overSome(predicate1: (value: T) => value is U, predicate2: (value: T) => value is V): (value: T) => value is U | V; -/** - * Creates a function that checks if any of the given predicates return truthy for the provided values. - * - * @template T - The type of the values to be checked. - * - * @param {...Array<((...values: T[]) => boolean) | ReadonlyArray<(...values: T[]) => boolean>>} predicates - - * A list of predicates or arrays of predicates. Each predicate is a function that takes one or more values of - * type `T` and returns a boolean indicating whether the condition is satisfied for those values. - * - * @returns {(...values: T[]) => boolean} A function that takes a list of values and returns `true` if any of the - * predicates return truthy for the provided values, and `false` otherwise. - * - * @example - * const func = overSome( - * (value) => typeof value === 'string', - * (value) => typeof value === 'number', - * (value) => typeof value === 'symbol' - * ); - * - * func("hello"); // true - * func(42); // true - * func(Symbol()); // true - * func([]); // false - * - * @example - * const func = overSome([ - * (value) => value.a > 0, - * (value) => value.b > 0 - * ]); - * - * func({ a: 0, b: 2 }); // true - * func({ a: 0, b: 0 }); // false - * - * @example - * const func = overSome( - * (a, b) => typeof a === 'string' && typeof b === 'string', - * (a, b) => a > 0 && b > 0 - * ); - * - * func("hello", "world"); // true - * func(1, 10); // true - * func(0, 2); // false - */ -declare function overSome(...predicates: Array<((...values: T[]) => boolean) | ReadonlyArray<(...values: T[]) => boolean>>): (...values: T[]) => boolean; - -export { overSome }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overSome.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overSome.js deleted file mode 100644 index 816d007..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overSome.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const iteratee = require('./iteratee.js'); - -function overSome(...predicates) { - return function (...values) { - for (let i = 0; i < predicates.length; ++i) { - const predicate = predicates[i]; - if (!Array.isArray(predicate)) { - if (iteratee.iteratee(predicate).apply(this, values)) { - return true; - } - continue; - } - for (let j = 0; j < predicate.length; ++j) { - if (iteratee.iteratee(predicate[j]).apply(this, values)) { - return true; - } - } - } - return false; - }; -} - -exports.overSome = overSome; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overSome.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overSome.mjs deleted file mode 100644 index d534088..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/overSome.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import { iteratee } from './iteratee.mjs'; - -function overSome(...predicates) { - return function (...values) { - for (let i = 0; i < predicates.length; ++i) { - const predicate = predicates[i]; - if (!Array.isArray(predicate)) { - if (iteratee(predicate).apply(this, values)) { - return true; - } - continue; - } - for (let j = 0; j < predicate.length; ++j) { - if (iteratee(predicate[j]).apply(this, values)) { - return true; - } - } - } - return false; - }; -} - -export { overSome }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubArray.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubArray.d.mts deleted file mode 100644 index 0bc9321..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubArray.d.mts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Returns a new empty array. - * - * @returns {Array} A new empty array. - * @example - * stubArray() // Returns [] - */ -declare function stubArray(): any[]; - -export { stubArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubArray.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubArray.d.ts deleted file mode 100644 index 0bc9321..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubArray.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Returns a new empty array. - * - * @returns {Array} A new empty array. - * @example - * stubArray() // Returns [] - */ -declare function stubArray(): any[]; - -export { stubArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubArray.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubArray.js deleted file mode 100644 index e9ffbcb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubArray.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function stubArray() { - return []; -} - -exports.stubArray = stubArray; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubArray.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubArray.mjs deleted file mode 100644 index 15532e8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubArray.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function stubArray() { - return []; -} - -export { stubArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubFalse.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubFalse.d.mts deleted file mode 100644 index 59c63dd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubFalse.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Returns false. - * - * @returns {boolean} false. - * @example - * stubFalse() // Returns false - */ -declare function stubFalse(): false; -/** - * Returns false. - * - * @returns {boolean} false. - * @example - * stubFalse() // Returns false - */ -declare function stubFalse(): false; - -export { stubFalse }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubFalse.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubFalse.d.ts deleted file mode 100644 index 59c63dd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubFalse.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Returns false. - * - * @returns {boolean} false. - * @example - * stubFalse() // Returns false - */ -declare function stubFalse(): false; -/** - * Returns false. - * - * @returns {boolean} false. - * @example - * stubFalse() // Returns false - */ -declare function stubFalse(): false; - -export { stubFalse }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubFalse.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubFalse.js deleted file mode 100644 index c638e70..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubFalse.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function stubFalse() { - return false; -} - -exports.stubFalse = stubFalse; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubFalse.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubFalse.mjs deleted file mode 100644 index bde8cb6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubFalse.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function stubFalse() { - return false; -} - -export { stubFalse }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubObject.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubObject.d.mts deleted file mode 100644 index 81a816a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubObject.d.mts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Returns an empty object. - * - * @returns {Object} An empty object. - * @example - * stubObject() // Returns {} - */ -declare function stubObject(): any; - -export { stubObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubObject.d.ts deleted file mode 100644 index 81a816a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubObject.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Returns an empty object. - * - * @returns {Object} An empty object. - * @example - * stubObject() // Returns {} - */ -declare function stubObject(): any; - -export { stubObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubObject.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubObject.js deleted file mode 100644 index 44254ca..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubObject.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function stubObject() { - return {}; -} - -exports.stubObject = stubObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubObject.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubObject.mjs deleted file mode 100644 index ee94fef..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubObject.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function stubObject() { - return {}; -} - -export { stubObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubString.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubString.d.mts deleted file mode 100644 index 246f39d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubString.d.mts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Returns an empty string. - * - * @returns {string} An empty string. - * @example - * stubString() // Returns '' - */ -declare function stubString(): string; - -export { stubString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubString.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubString.d.ts deleted file mode 100644 index 246f39d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubString.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Returns an empty string. - * - * @returns {string} An empty string. - * @example - * stubString() // Returns '' - */ -declare function stubString(): string; - -export { stubString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubString.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubString.js deleted file mode 100644 index 81c7738..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubString.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function stubString() { - return ''; -} - -exports.stubString = stubString; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubString.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubString.mjs deleted file mode 100644 index d3444ed..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubString.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function stubString() { - return ''; -} - -export { stubString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubTrue.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubTrue.d.mts deleted file mode 100644 index 42d6a87..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubTrue.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Returns true. - * - * @returns {boolean} true. - * @example - * stubTrue() // Returns true - */ -declare function stubTrue(): true; -/** - * Returns true. - * - * @returns {boolean} true. - * @example - * stubTrue() // Returns true - */ -declare function stubTrue(): true; - -export { stubTrue }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubTrue.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubTrue.d.ts deleted file mode 100644 index 42d6a87..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubTrue.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Returns true. - * - * @returns {boolean} true. - * @example - * stubTrue() // Returns true - */ -declare function stubTrue(): true; -/** - * Returns true. - * - * @returns {boolean} true. - * @example - * stubTrue() // Returns true - */ -declare function stubTrue(): true; - -export { stubTrue }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubTrue.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubTrue.js deleted file mode 100644 index c53b48d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubTrue.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function stubTrue() { - return true; -} - -exports.stubTrue = stubTrue; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubTrue.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubTrue.mjs deleted file mode 100644 index ef6bfff..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/stubTrue.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function stubTrue() { - return true; -} - -export { stubTrue }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/times.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/times.d.mts deleted file mode 100644 index 507e110..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/times.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Invokes the iteratee function n times, returning an array of the results. - * - * @template T The return type of the iteratee function. - * @param {number} n - The number of times to invoke iteratee. - * @param {(num: number) => T} iteratee - The function to invoke for each index. - * @returns {T[]} An array containing the results of invoking iteratee n times. - * @example - * times(3, (i) => i * 2); // => [0, 2, 4] - * times(2, () => 'es-toolkit'); // => ['es-toolkit', 'es-toolkit'] - */ -declare function times(n: number, iteratee: (num: number) => T): T[]; -/** - * Invokes the default iteratee function n times, returning an array of indices. - * - * @param {number} n - The number of times to invoke the default iteratee. - * @returns {number[]} An array containing indices from 0 to n-1. - * @example - * times(3); // => [0, 1, 2] - */ -declare function times(n: number): number[]; - -export { times }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/times.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/times.d.ts deleted file mode 100644 index 507e110..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/times.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Invokes the iteratee function n times, returning an array of the results. - * - * @template T The return type of the iteratee function. - * @param {number} n - The number of times to invoke iteratee. - * @param {(num: number) => T} iteratee - The function to invoke for each index. - * @returns {T[]} An array containing the results of invoking iteratee n times. - * @example - * times(3, (i) => i * 2); // => [0, 2, 4] - * times(2, () => 'es-toolkit'); // => ['es-toolkit', 'es-toolkit'] - */ -declare function times(n: number, iteratee: (num: number) => T): T[]; -/** - * Invokes the default iteratee function n times, returning an array of indices. - * - * @param {number} n - The number of times to invoke the default iteratee. - * @returns {number[]} An array containing indices from 0 to n-1. - * @example - * times(3); // => [0, 1, 2] - */ -declare function times(n: number): number[]; - -export { times }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/times.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/times.js deleted file mode 100644 index 5c6a555..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/times.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toInteger = require('./toInteger.js'); - -function times(n, getValue) { - n = toInteger.toInteger(n); - if (n < 1 || !Number.isSafeInteger(n)) { - return []; - } - const result = new Array(n); - for (let i = 0; i < n; i++) { - result[i] = typeof getValue === 'function' ? getValue(i) : i; - } - return result; -} - -exports.times = times; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/times.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/times.mjs deleted file mode 100644 index a142337..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/times.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import { toInteger } from './toInteger.mjs'; - -function times(n, getValue) { - n = toInteger(n); - if (n < 1 || !Number.isSafeInteger(n)) { - return []; - } - const result = new Array(n); - for (let i = 0; i < n; i++) { - result[i] = typeof getValue === 'function' ? getValue(i) : i; - } - return result; -} - -export { times }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toArray.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toArray.d.mts deleted file mode 100644 index e05e882..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toArray.d.mts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Converts a record or null/undefined to an array of its values. - * - * @template T - * @param {Record | Record | null | undefined} value - The record or null/undefined to convert. - * @returns {T[]} Returns an array of the record's values or an empty array if null/undefined. - * - * @example - * toArray({ 'a': 1, 'b': 2 }) // => returns [1, 2] - * toArray(null) // => returns [] - */ -declare function toArray(value: Record | Record | null | undefined): T[]; -/** - * Converts a value to an array of its values. - * - * @template T - * @param {T} value - The value to convert. - * @returns {Array} Returns an array of the value's values. - * - * @example - * toArray({ x: 10, y: 20 }) // => returns [10, 20] - * toArray('abc') // => returns ['a', 'b', 'c'] - */ -declare function toArray(value: T): Array; -/** - * Converts an undefined value to an empty array. - * - * @returns {any[]} Returns an empty array. - * - * @example - * toArray() // => returns [] - */ -declare function toArray(): any[]; - -export { toArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toArray.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toArray.d.ts deleted file mode 100644 index e05e882..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toArray.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Converts a record or null/undefined to an array of its values. - * - * @template T - * @param {Record | Record | null | undefined} value - The record or null/undefined to convert. - * @returns {T[]} Returns an array of the record's values or an empty array if null/undefined. - * - * @example - * toArray({ 'a': 1, 'b': 2 }) // => returns [1, 2] - * toArray(null) // => returns [] - */ -declare function toArray(value: Record | Record | null | undefined): T[]; -/** - * Converts a value to an array of its values. - * - * @template T - * @param {T} value - The value to convert. - * @returns {Array} Returns an array of the value's values. - * - * @example - * toArray({ x: 10, y: 20 }) // => returns [10, 20] - * toArray('abc') // => returns ['a', 'b', 'c'] - */ -declare function toArray(value: T): Array; -/** - * Converts an undefined value to an empty array. - * - * @returns {any[]} Returns an empty array. - * - * @example - * toArray() // => returns [] - */ -declare function toArray(): any[]; - -export { toArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toArray.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toArray.js deleted file mode 100644 index 6c66539..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toArray.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArrayLike = require('../predicate/isArrayLike.js'); -const isMap = require('../predicate/isMap.js'); - -function toArray(value) { - if (value == null) { - return []; - } - if (isArrayLike.isArrayLike(value) || isMap.isMap(value)) { - return Array.from(value); - } - if (typeof value === 'object') { - return Object.values(value); - } - return []; -} - -exports.toArray = toArray; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toArray.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toArray.mjs deleted file mode 100644 index 5be29b7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toArray.mjs +++ /dev/null @@ -1,17 +0,0 @@ -import { isArrayLike } from '../predicate/isArrayLike.mjs'; -import { isMap } from '../predicate/isMap.mjs'; - -function toArray(value) { - if (value == null) { - return []; - } - if (isArrayLike(value) || isMap(value)) { - return Array.from(value); - } - if (typeof value === 'object') { - return Object.values(value); - } - return []; -} - -export { toArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toFinite.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toFinite.d.mts deleted file mode 100644 index f9e28d8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toFinite.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts `value` to a finite number. - * - * @param {unknown} value - The value to convert. - * @returns {number} Returns the number. - * - * @example - * toFinite(3.2); // => 3.2 - * toFinite(Number.MIN_VALUE); // => 5e-324 - * toFinite(Infinity); // => 1.7976931348623157e+308 - * toFinite('3.2'); // => 3.2 - * toFinite(Symbol.iterator); // => 0 - * toFinite(NaN); // => 0 - */ -declare function toFinite(value: any): number; - -export { toFinite }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toFinite.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toFinite.d.ts deleted file mode 100644 index f9e28d8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toFinite.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts `value` to a finite number. - * - * @param {unknown} value - The value to convert. - * @returns {number} Returns the number. - * - * @example - * toFinite(3.2); // => 3.2 - * toFinite(Number.MIN_VALUE); // => 5e-324 - * toFinite(Infinity); // => 1.7976931348623157e+308 - * toFinite('3.2'); // => 3.2 - * toFinite(Symbol.iterator); // => 0 - * toFinite(NaN); // => 0 - */ -declare function toFinite(value: any): number; - -export { toFinite }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toFinite.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toFinite.js deleted file mode 100644 index 311dd5e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toFinite.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toNumber = require('./toNumber.js'); - -function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber.toNumber(value); - if (value === Infinity || value === -Infinity) { - const sign = value < 0 ? -1 : 1; - return sign * Number.MAX_VALUE; - } - return value === value ? value : 0; -} - -exports.toFinite = toFinite; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toFinite.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toFinite.mjs deleted file mode 100644 index b4ad377..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toFinite.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import { toNumber } from './toNumber.mjs'; - -function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === Infinity || value === -Infinity) { - const sign = value < 0 ? -1 : 1; - return sign * Number.MAX_VALUE; - } - return value === value ? value : 0; -} - -export { toFinite }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toInteger.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toInteger.d.mts deleted file mode 100644 index ddbebb2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toInteger.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Converts `value` to an integer. - * - * This function first converts `value` to a finite number. If the result has any decimal places, - * they are removed by rounding down to the nearest whole number. - * - * @param {unknown} value - The value to convert. - * @returns {number} Returns the number. - * - * @example - * toInteger(3.2); // => 3 - * toInteger(Number.MIN_VALUE); // => 0 - * toInteger(Infinity); // => 1.7976931348623157e+308 - * toInteger('3.2'); // => 3 - * toInteger(Symbol.iterator); // => 0 - * toInteger(NaN); // => 0 - */ -declare function toInteger(value: any): number; - -export { toInteger }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toInteger.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toInteger.d.ts deleted file mode 100644 index ddbebb2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toInteger.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Converts `value` to an integer. - * - * This function first converts `value` to a finite number. If the result has any decimal places, - * they are removed by rounding down to the nearest whole number. - * - * @param {unknown} value - The value to convert. - * @returns {number} Returns the number. - * - * @example - * toInteger(3.2); // => 3 - * toInteger(Number.MIN_VALUE); // => 0 - * toInteger(Infinity); // => 1.7976931348623157e+308 - * toInteger('3.2'); // => 3 - * toInteger(Symbol.iterator); // => 0 - * toInteger(NaN); // => 0 - */ -declare function toInteger(value: any): number; - -export { toInteger }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toInteger.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toInteger.js deleted file mode 100644 index 60254e3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toInteger.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toFinite = require('./toFinite.js'); - -function toInteger(value) { - const finite = toFinite.toFinite(value); - const remainder = finite % 1; - return remainder ? finite - remainder : finite; -} - -exports.toInteger = toInteger; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toInteger.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toInteger.mjs deleted file mode 100644 index 8c9e8f9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toInteger.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { toFinite } from './toFinite.mjs'; - -function toInteger(value) { - const finite = toFinite(value); - const remainder = finite % 1; - return remainder ? finite - remainder : finite; -} - -export { toInteger }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toLength.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toLength.d.mts deleted file mode 100644 index 151a0bc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toLength.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Converts the value to a valid index. A valid index is an integer that is greater than or equal to `0` and less than or equal to `2^32 - 1`. - * - * It converts the given value to a number and floors it to an integer. If the value is less than `0`, it returns `0`. If the value exceeds `2^32 - 1`, it returns `2^32 - 1`. - * - * @param {unknown} value - The value to convert to a valid index. - * @returns {number} The converted value. - * - * @example - * toLength(3.2) // => 3 - * toLength(-1) // => 0 - * toLength(1.9) // => 1 - * toLength('42') // => 42 - * toLength(null) // => 0 - */ -declare function toLength(value: any): number; - -export { toLength }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toLength.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toLength.d.ts deleted file mode 100644 index 151a0bc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toLength.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Converts the value to a valid index. A valid index is an integer that is greater than or equal to `0` and less than or equal to `2^32 - 1`. - * - * It converts the given value to a number and floors it to an integer. If the value is less than `0`, it returns `0`. If the value exceeds `2^32 - 1`, it returns `2^32 - 1`. - * - * @param {unknown} value - The value to convert to a valid index. - * @returns {number} The converted value. - * - * @example - * toLength(3.2) // => 3 - * toLength(-1) // => 0 - * toLength(1.9) // => 1 - * toLength('42') // => 42 - * toLength(null) // => 0 - */ -declare function toLength(value: any): number; - -export { toLength }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toLength.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toLength.js deleted file mode 100644 index 572300b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toLength.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const MAX_ARRAY_LENGTH = require('../_internal/MAX_ARRAY_LENGTH.js'); -const clamp = require('../math/clamp.js'); - -function toLength(value) { - if (value == null) { - return 0; - } - const length = Math.floor(Number(value)); - return clamp.clamp(length, 0, MAX_ARRAY_LENGTH.MAX_ARRAY_LENGTH); -} - -exports.toLength = toLength; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toLength.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toLength.mjs deleted file mode 100644 index dcf2ab1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toLength.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { MAX_ARRAY_LENGTH } from '../_internal/MAX_ARRAY_LENGTH.mjs'; -import { clamp } from '../math/clamp.mjs'; - -function toLength(value) { - if (value == null) { - return 0; - } - const length = Math.floor(Number(value)); - return clamp(length, 0, MAX_ARRAY_LENGTH); -} - -export { toLength }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toNumber.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toNumber.d.mts deleted file mode 100644 index 5d09041..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toNumber.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Converts `value` to a number. - * - * Unlike `Number()`, this function returns `NaN` for symbols. - * - * @param {unknown} value - The value to convert. - * @returns {number} Returns the number. - * - * @example - * toNumber(3.2); // => 3.2 - * toNumber(Number.MIN_VALUE); // => 5e-324 - * toNumber(Infinity); // => Infinity - * toNumber('3.2'); // => 3.2 - * toNumber(Symbol.iterator); // => NaN - * toNumber(NaN); // => NaN - */ -declare function toNumber(value: any): number; - -export { toNumber }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toNumber.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toNumber.d.ts deleted file mode 100644 index 5d09041..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toNumber.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Converts `value` to a number. - * - * Unlike `Number()`, this function returns `NaN` for symbols. - * - * @param {unknown} value - The value to convert. - * @returns {number} Returns the number. - * - * @example - * toNumber(3.2); // => 3.2 - * toNumber(Number.MIN_VALUE); // => 5e-324 - * toNumber(Infinity); // => Infinity - * toNumber('3.2'); // => 3.2 - * toNumber(Symbol.iterator); // => NaN - * toNumber(NaN); // => NaN - */ -declare function toNumber(value: any): number; - -export { toNumber }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toNumber.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toNumber.js deleted file mode 100644 index 6b5d895..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toNumber.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isSymbol = require('../predicate/isSymbol.js'); - -function toNumber(value) { - if (isSymbol.isSymbol(value)) { - return NaN; - } - return Number(value); -} - -exports.toNumber = toNumber; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toNumber.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toNumber.mjs deleted file mode 100644 index e3aa8f4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toNumber.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { isSymbol } from '../predicate/isSymbol.mjs'; - -function toNumber(value) { - if (isSymbol(value)) { - return NaN; - } - return Number(value); -} - -export { toNumber }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPath.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPath.d.mts deleted file mode 100644 index ac34488..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPath.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Converts a deep key string into an array of path segments. - * - * This function takes a string representing a deep key (e.g., 'a.b.c' or 'a[b][c]') and breaks it down into an array of strings, each representing a segment of the path. - * - * @param {any} deepKey - The deep key string to convert. - * @returns {string[]} An array of strings, each representing a segment of the path. - * - * Examples: - * - * toPath('a.b.c') // Returns ['a', 'b', 'c'] - * toPath('a[b][c]') // Returns ['a', 'b', 'c'] - * toPath('.a.b.c') // Returns ['', 'a', 'b', 'c'] - * toPath('a["b.c"].d') // Returns ['a', 'b.c', 'd'] - * toPath('') // Returns [] - * toPath('.a[b].c.d[e]["f.g"].h') // Returns ['', 'a', 'b', 'c', 'd', 'e', 'f.g', 'h'] - */ -declare function toPath(deepKey: any): string[]; - -export { toPath }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPath.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPath.d.ts deleted file mode 100644 index ac34488..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPath.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Converts a deep key string into an array of path segments. - * - * This function takes a string representing a deep key (e.g., 'a.b.c' or 'a[b][c]') and breaks it down into an array of strings, each representing a segment of the path. - * - * @param {any} deepKey - The deep key string to convert. - * @returns {string[]} An array of strings, each representing a segment of the path. - * - * Examples: - * - * toPath('a.b.c') // Returns ['a', 'b', 'c'] - * toPath('a[b][c]') // Returns ['a', 'b', 'c'] - * toPath('.a.b.c') // Returns ['', 'a', 'b', 'c'] - * toPath('a["b.c"].d') // Returns ['a', 'b.c', 'd'] - * toPath('') // Returns [] - * toPath('.a[b].c.d[e]["f.g"].h') // Returns ['', 'a', 'b', 'c', 'd', 'e', 'f.g', 'h'] - */ -declare function toPath(deepKey: any): string[]; - -export { toPath }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPath.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPath.js deleted file mode 100644 index 46cc55a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPath.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toString = require('./toString.js'); -const toKey = require('../_internal/toKey.js'); - -function toPath(deepKey) { - if (Array.isArray(deepKey)) { - return deepKey.map(toKey.toKey); - } - if (typeof deepKey === 'symbol') { - return [deepKey]; - } - deepKey = toString.toString(deepKey); - const result = []; - const length = deepKey.length; - if (length === 0) { - return result; - } - let index = 0; - let key = ''; - let quoteChar = ''; - let bracket = false; - if (deepKey.charCodeAt(0) === 46) { - result.push(''); - index++; - } - while (index < length) { - const char = deepKey[index]; - if (quoteChar) { - if (char === '\\' && index + 1 < length) { - index++; - key += deepKey[index]; - } - else if (char === quoteChar) { - quoteChar = ''; - } - else { - key += char; - } - } - else if (bracket) { - if (char === '"' || char === "'") { - quoteChar = char; - } - else if (char === ']') { - bracket = false; - result.push(key); - key = ''; - } - else { - key += char; - } - } - else { - if (char === '[') { - bracket = true; - if (key) { - result.push(key); - key = ''; - } - } - else if (char === '.') { - if (key) { - result.push(key); - key = ''; - } - } - else { - key += char; - } - } - index++; - } - if (key) { - result.push(key); - } - return result; -} - -exports.toPath = toPath; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPath.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPath.mjs deleted file mode 100644 index e77164a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPath.mjs +++ /dev/null @@ -1,78 +0,0 @@ -import { toString } from './toString.mjs'; -import { toKey } from '../_internal/toKey.mjs'; - -function toPath(deepKey) { - if (Array.isArray(deepKey)) { - return deepKey.map(toKey); - } - if (typeof deepKey === 'symbol') { - return [deepKey]; - } - deepKey = toString(deepKey); - const result = []; - const length = deepKey.length; - if (length === 0) { - return result; - } - let index = 0; - let key = ''; - let quoteChar = ''; - let bracket = false; - if (deepKey.charCodeAt(0) === 46) { - result.push(''); - index++; - } - while (index < length) { - const char = deepKey[index]; - if (quoteChar) { - if (char === '\\' && index + 1 < length) { - index++; - key += deepKey[index]; - } - else if (char === quoteChar) { - quoteChar = ''; - } - else { - key += char; - } - } - else if (bracket) { - if (char === '"' || char === "'") { - quoteChar = char; - } - else if (char === ']') { - bracket = false; - result.push(key); - key = ''; - } - else { - key += char; - } - } - else { - if (char === '[') { - bracket = true; - if (key) { - result.push(key); - key = ''; - } - } - else if (char === '.') { - if (key) { - result.push(key); - key = ''; - } - } - else { - key += char; - } - } - index++; - } - if (key) { - result.push(key); - } - return result; -} - -export { toPath }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPlainObject.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPlainObject.d.mts deleted file mode 100644 index d9b25dc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPlainObject.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts value to a plain object flattening inherited enumerable string keyed properties of value to own properties of the plain object. - * - * @param {any} value The value to convert. - * @returns {any} Returns the converted plain object. - * - * @example - * function Foo() { - * this.b = 2; - * } - * Foo.prototype.c = 3; - * toPlainObject(new Foo()); // { b: 2, c: 3 } - */ -declare function toPlainObject(value?: any): any; - -export { toPlainObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPlainObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPlainObject.d.ts deleted file mode 100644 index d9b25dc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPlainObject.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts value to a plain object flattening inherited enumerable string keyed properties of value to own properties of the plain object. - * - * @param {any} value The value to convert. - * @returns {any} Returns the converted plain object. - * - * @example - * function Foo() { - * this.b = 2; - * } - * Foo.prototype.c = 3; - * toPlainObject(new Foo()); // { b: 2, c: 3 } - */ -declare function toPlainObject(value?: any): any; - -export { toPlainObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPlainObject.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPlainObject.js deleted file mode 100644 index 7c90706..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPlainObject.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const keysIn = require('../object/keysIn.js'); - -function toPlainObject(value) { - const plainObject = {}; - const valueKeys = keysIn.keysIn(value); - for (let i = 0; i < valueKeys.length; i++) { - const key = valueKeys[i]; - const objValue = value[key]; - if (key === '__proto__') { - Object.defineProperty(plainObject, key, { - configurable: true, - enumerable: true, - value: objValue, - writable: true, - }); - } - else { - plainObject[key] = objValue; - } - } - return plainObject; -} - -exports.toPlainObject = toPlainObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPlainObject.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPlainObject.mjs deleted file mode 100644 index 4d82b6e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toPlainObject.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import { keysIn } from '../object/keysIn.mjs'; - -function toPlainObject(value) { - const plainObject = {}; - const valueKeys = keysIn(value); - for (let i = 0; i < valueKeys.length; i++) { - const key = valueKeys[i]; - const objValue = value[key]; - if (key === '__proto__') { - Object.defineProperty(plainObject, key, { - configurable: true, - enumerable: true, - value: objValue, - writable: true, - }); - } - else { - plainObject[key] = objValue; - } - } - return plainObject; -} - -export { toPlainObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toSafeInteger.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toSafeInteger.d.mts deleted file mode 100644 index ed157a1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toSafeInteger.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Converts `value` to a safe integer. - * - * A safe integer can be compared and represented correctly. - * - * @param {any} value - The value to convert. - * @returns {number} Returns the value converted to a safe integer. - * - * @example - * toSafeInteger(3.2); // => 3 - * toSafeInteger(Number.MAX_VALUE); // => 9007199254740991 - * toSafeInteger(Infinity); // => 9007199254740991 - * toSafeInteger('3.2'); // => 3 - * toSafeInteger(NaN); // => 0 - * toSafeInteger(null); // => 0 - * toSafeInteger(-Infinity); // => -9007199254740991 - */ -declare function toSafeInteger(value: any): number; - -export { toSafeInteger }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toSafeInteger.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toSafeInteger.d.ts deleted file mode 100644 index ed157a1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toSafeInteger.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Converts `value` to a safe integer. - * - * A safe integer can be compared and represented correctly. - * - * @param {any} value - The value to convert. - * @returns {number} Returns the value converted to a safe integer. - * - * @example - * toSafeInteger(3.2); // => 3 - * toSafeInteger(Number.MAX_VALUE); // => 9007199254740991 - * toSafeInteger(Infinity); // => 9007199254740991 - * toSafeInteger('3.2'); // => 3 - * toSafeInteger(NaN); // => 0 - * toSafeInteger(null); // => 0 - * toSafeInteger(-Infinity); // => -9007199254740991 - */ -declare function toSafeInteger(value: any): number; - -export { toSafeInteger }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toSafeInteger.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toSafeInteger.js deleted file mode 100644 index d5d53e5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toSafeInteger.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const toInteger = require('./toInteger.js'); -const MAX_SAFE_INTEGER = require('../_internal/MAX_SAFE_INTEGER.js'); -const clamp = require('../math/clamp.js'); - -function toSafeInteger(value) { - if (value == null) { - return 0; - } - return clamp.clamp(toInteger.toInteger(value), -MAX_SAFE_INTEGER.MAX_SAFE_INTEGER, MAX_SAFE_INTEGER.MAX_SAFE_INTEGER); -} - -exports.toSafeInteger = toSafeInteger; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toSafeInteger.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toSafeInteger.mjs deleted file mode 100644 index 2d565da..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toSafeInteger.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { toInteger } from './toInteger.mjs'; -import { MAX_SAFE_INTEGER } from '../_internal/MAX_SAFE_INTEGER.mjs'; -import { clamp } from '../math/clamp.mjs'; - -function toSafeInteger(value) { - if (value == null) { - return 0; - } - return clamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER); -} - -export { toSafeInteger }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toString.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toString.d.mts deleted file mode 100644 index 4b1fb42..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toString.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Converts `value` to a string. - * - * An empty string is returned for `null` and `undefined` values. - * The sign of `-0` is preserved. - * - * @param {any} value - The value to convert. - * @returns {string} Returns the converted string. - * - * @example - * toString(null) // returns '' - * toString(undefined) // returns '' - * toString(-0) // returns '-0' - * toString([1, 2, -0]) // returns '1,2,-0' - * toString([Symbol('a'), Symbol('b')]) // returns 'Symbol(a),Symbol(b)' - */ -declare function toString(value: any): string; - -export { toString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toString.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toString.d.ts deleted file mode 100644 index 4b1fb42..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toString.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Converts `value` to a string. - * - * An empty string is returned for `null` and `undefined` values. - * The sign of `-0` is preserved. - * - * @param {any} value - The value to convert. - * @returns {string} Returns the converted string. - * - * @example - * toString(null) // returns '' - * toString(undefined) // returns '' - * toString(-0) // returns '-0' - * toString([1, 2, -0]) // returns '1,2,-0' - * toString([Symbol('a'), Symbol('b')]) // returns 'Symbol(a),Symbol(b)' - */ -declare function toString(value: any): string; - -export { toString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toString.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toString.js deleted file mode 100644 index e1f93a0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toString.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function toString(value) { - if (value == null) { - return ''; - } - if (typeof value === 'string') { - return value; - } - if (Array.isArray(value)) { - return value.map(toString).join(','); - } - const result = String(value); - if (result === '0' && Object.is(Number(value), -0)) { - return '-0'; - } - return result; -} - -exports.toString = toString; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toString.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toString.mjs deleted file mode 100644 index 2987074..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/toString.mjs +++ /dev/null @@ -1,18 +0,0 @@ -function toString(value) { - if (value == null) { - return ''; - } - if (typeof value === 'string') { - return value; - } - if (Array.isArray(value)) { - return value.map(toString).join(','); - } - const result = String(value); - if (result === '0' && Object.is(Number(value), -0)) { - return '-0'; - } - return result; -} - -export { toString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/uniqueId.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/uniqueId.d.mts deleted file mode 100644 index 626eec2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/uniqueId.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Generates a unique identifier, optionally prefixed with a given string. - * - * @param {string} [prefix] - An optional string to prefix the unique identifier. - * If not provided or not a string, only the unique - * numeric identifier is returned. - * @returns {string} A string containing the unique identifier, with the optional - * prefix if provided. - * - * @example - * // Generate a unique ID with a prefix - * uniqueId('user_'); // => 'user_1' - * - * @example - * // Generate a unique ID without a prefix - * uniqueId(); // => '2' - * - * @example - * // Subsequent calls increment the internal counter - * uniqueId('item_'); // => 'item_3' - * uniqueId(); // => '4' - */ -declare function uniqueId(prefix?: string): string; - -export { uniqueId }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/uniqueId.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/uniqueId.d.ts deleted file mode 100644 index 626eec2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/uniqueId.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Generates a unique identifier, optionally prefixed with a given string. - * - * @param {string} [prefix] - An optional string to prefix the unique identifier. - * If not provided or not a string, only the unique - * numeric identifier is returned. - * @returns {string} A string containing the unique identifier, with the optional - * prefix if provided. - * - * @example - * // Generate a unique ID with a prefix - * uniqueId('user_'); // => 'user_1' - * - * @example - * // Generate a unique ID without a prefix - * uniqueId(); // => '2' - * - * @example - * // Subsequent calls increment the internal counter - * uniqueId('item_'); // => 'item_3' - * uniqueId(); // => '4' - */ -declare function uniqueId(prefix?: string): string; - -export { uniqueId }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/uniqueId.js b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/uniqueId.js deleted file mode 100644 index 3f70ce9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/uniqueId.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -let idCounter = 0; -function uniqueId(prefix = '') { - const id = ++idCounter; - return `${prefix}${id}`; -} - -exports.uniqueId = uniqueId; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/uniqueId.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/uniqueId.mjs deleted file mode 100644 index 3c01fbb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/compat/util/uniqueId.mjs +++ /dev/null @@ -1,7 +0,0 @@ -let idCounter = 0; -function uniqueId(prefix = '') { - const id = ++idCounter; - return `${prefix}${id}`; -} - -export { uniqueId }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/error/AbortError.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/error/AbortError.d.mts deleted file mode 100644 index e09d4dc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/error/AbortError.d.mts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * An error class representing an aborted operation. - * @augments Error - */ -declare class AbortError extends Error { - constructor(message?: string); -} - -export { AbortError }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/error/AbortError.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/error/AbortError.d.ts deleted file mode 100644 index e09d4dc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/error/AbortError.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * An error class representing an aborted operation. - * @augments Error - */ -declare class AbortError extends Error { - constructor(message?: string); -} - -export { AbortError }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/error/AbortError.js b/sdks/nodejs/node_modules/es-toolkit/dist/error/AbortError.js deleted file mode 100644 index 8dacc05..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/error/AbortError.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -class AbortError extends Error { - constructor(message = 'The operation was aborted') { - super(message); - this.name = 'AbortError'; - } -} - -exports.AbortError = AbortError; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/error/AbortError.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/error/AbortError.mjs deleted file mode 100644 index 7858a04..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/error/AbortError.mjs +++ /dev/null @@ -1,8 +0,0 @@ -class AbortError extends Error { - constructor(message = 'The operation was aborted') { - super(message); - this.name = 'AbortError'; - } -} - -export { AbortError }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/error/TimeoutError.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/error/TimeoutError.d.mts deleted file mode 100644 index 7f4856c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/error/TimeoutError.d.mts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * An error class representing an timeout operation. - * @augments Error - */ -declare class TimeoutError extends Error { - constructor(message?: string); -} - -export { TimeoutError }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/error/TimeoutError.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/error/TimeoutError.d.ts deleted file mode 100644 index 7f4856c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/error/TimeoutError.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * An error class representing an timeout operation. - * @augments Error - */ -declare class TimeoutError extends Error { - constructor(message?: string); -} - -export { TimeoutError }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/error/TimeoutError.js b/sdks/nodejs/node_modules/es-toolkit/dist/error/TimeoutError.js deleted file mode 100644 index 450fb39..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/error/TimeoutError.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -class TimeoutError extends Error { - constructor(message = 'The operation was timed out') { - super(message); - this.name = 'TimeoutError'; - } -} - -exports.TimeoutError = TimeoutError; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/error/TimeoutError.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/error/TimeoutError.mjs deleted file mode 100644 index 17d8ce3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/error/TimeoutError.mjs +++ /dev/null @@ -1,8 +0,0 @@ -class TimeoutError extends Error { - constructor(message = 'The operation was timed out') { - super(message); - this.name = 'TimeoutError'; - } -} - -export { TimeoutError }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/error/index.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/error/index.d.mts deleted file mode 100644 index 6bcb1eb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/error/index.d.mts +++ /dev/null @@ -1,2 +0,0 @@ -export { AbortError } from './AbortError.mjs'; -export { TimeoutError } from './TimeoutError.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/error/index.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/error/index.d.ts deleted file mode 100644 index 0ac2b2a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/error/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { AbortError } from './AbortError.js'; -export { TimeoutError } from './TimeoutError.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/error/index.js b/sdks/nodejs/node_modules/es-toolkit/dist/error/index.js deleted file mode 100644 index 547d72e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/error/index.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const AbortError = require('./AbortError.js'); -const TimeoutError = require('./TimeoutError.js'); - - - -exports.AbortError = AbortError.AbortError; -exports.TimeoutError = TimeoutError.TimeoutError; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/error/index.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/error/index.mjs deleted file mode 100644 index 6bcb1eb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/error/index.mjs +++ /dev/null @@ -1,2 +0,0 @@ -export { AbortError } from './AbortError.mjs'; -export { TimeoutError } from './TimeoutError.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/after.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/after.d.mts deleted file mode 100644 index 75fbf67..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/after.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creates a function that only executes starting from the `n`-th call. - * The provided function will be invoked starting from the `n`-th call. - * - * This is particularly useful for scenarios involving events or asynchronous operations - * where an action should occur only after a certain number of invocations. - * - * @template F - The type of the function to be invoked. - * @param {number} n - The number of calls required for `func` to execute. - * @param {F} func - The function to be invoked. - * @returns {(...args: Parameters) => ReturnType | undefined} - A new function that: - * - Tracks the number of calls. - * - Invokes `func` starting from the `n`-th call. - * - Returns `undefined` if fewer than `n` calls have been made. - * @throws {Error} - Throws an error if `n` is negative. - * @example - * - * const afterFn = after(3, () => { - * console.log("called") - * }); - * - * // Will not log anything. - * afterFn() - * // Will not log anything. - * afterFn() - * // Will log 'called'. - * afterFn() - */ -declare function after any>(n: number, func: F): (...args: Parameters) => ReturnType | undefined; - -export { after }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/after.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/after.d.ts deleted file mode 100644 index 75fbf67..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/after.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creates a function that only executes starting from the `n`-th call. - * The provided function will be invoked starting from the `n`-th call. - * - * This is particularly useful for scenarios involving events or asynchronous operations - * where an action should occur only after a certain number of invocations. - * - * @template F - The type of the function to be invoked. - * @param {number} n - The number of calls required for `func` to execute. - * @param {F} func - The function to be invoked. - * @returns {(...args: Parameters) => ReturnType | undefined} - A new function that: - * - Tracks the number of calls. - * - Invokes `func` starting from the `n`-th call. - * - Returns `undefined` if fewer than `n` calls have been made. - * @throws {Error} - Throws an error if `n` is negative. - * @example - * - * const afterFn = after(3, () => { - * console.log("called") - * }); - * - * // Will not log anything. - * afterFn() - * // Will not log anything. - * afterFn() - * // Will log 'called'. - * afterFn() - */ -declare function after any>(n: number, func: F): (...args: Parameters) => ReturnType | undefined; - -export { after }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/after.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/after.js deleted file mode 100644 index cac3477..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/after.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function after(n, func) { - if (!Number.isInteger(n) || n < 0) { - throw new Error(`n must be a non-negative integer.`); - } - let counter = 0; - return (...args) => { - if (++counter >= n) { - return func(...args); - } - return undefined; - }; -} - -exports.after = after; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/after.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/after.mjs deleted file mode 100644 index 1c515a4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/after.mjs +++ /dev/null @@ -1,14 +0,0 @@ -function after(n, func) { - if (!Number.isInteger(n) || n < 0) { - throw new Error(`n must be a non-negative integer.`); - } - let counter = 0; - return (...args) => { - if (++counter >= n) { - return func(...args); - } - return undefined; - }; -} - -export { after }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/ary.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/ary.d.mts deleted file mode 100644 index 8cf0aa3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/ary.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Creates a function that invokes func, with up to n arguments, ignoring any additional arguments. - * - * @template F - The type of the function. - * @param {F} func - The function to cap arguments for. - * @param {number} n - The arity cap. - * @returns {(...args: any[]) => ReturnType} Returns the new capped function. - * - * @example - * function fn(a: number, b: number, c: number) { - * return Array.from(arguments); - * } - * - * ary(fn, 0)(1, 2, 3) // [] - * ary(fn, 1)(1, 2, 3) // [1] - * ary(fn, 2)(1, 2, 3) // [1, 2] - * ary(fn, 3)(1, 2, 3) // [1, 2, 3] - */ -declare function ary any>(func: F, n: number): (...args: any[]) => ReturnType; - -export { ary }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/ary.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/ary.d.ts deleted file mode 100644 index 8cf0aa3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/ary.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Creates a function that invokes func, with up to n arguments, ignoring any additional arguments. - * - * @template F - The type of the function. - * @param {F} func - The function to cap arguments for. - * @param {number} n - The arity cap. - * @returns {(...args: any[]) => ReturnType} Returns the new capped function. - * - * @example - * function fn(a: number, b: number, c: number) { - * return Array.from(arguments); - * } - * - * ary(fn, 0)(1, 2, 3) // [] - * ary(fn, 1)(1, 2, 3) // [1] - * ary(fn, 2)(1, 2, 3) // [1, 2] - * ary(fn, 3)(1, 2, 3) // [1, 2, 3] - */ -declare function ary any>(func: F, n: number): (...args: any[]) => ReturnType; - -export { ary }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/ary.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/ary.js deleted file mode 100644 index 480c920..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/ary.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function ary(func, n) { - return function (...args) { - return func.apply(this, args.slice(0, n)); - }; -} - -exports.ary = ary; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/ary.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/ary.mjs deleted file mode 100644 index 3166b58..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/ary.mjs +++ /dev/null @@ -1,7 +0,0 @@ -function ary(func, n) { - return function (...args) { - return func.apply(this, args.slice(0, n)); - }; -} - -export { ary }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/asyncNoop.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/asyncNoop.d.mts deleted file mode 100644 index d32bb35..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/asyncNoop.d.mts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * An asynchronous no-operation function that does nothing. - * This can be used as a placeholder or default function. - * - * @example - * asyncNoop(); // Does nothing - * - * @returns {Promise} This function returns a Promise that resolves to undefined. - */ -declare function asyncNoop(): Promise; - -export { asyncNoop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/asyncNoop.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/asyncNoop.d.ts deleted file mode 100644 index d32bb35..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/asyncNoop.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * An asynchronous no-operation function that does nothing. - * This can be used as a placeholder or default function. - * - * @example - * asyncNoop(); // Does nothing - * - * @returns {Promise} This function returns a Promise that resolves to undefined. - */ -declare function asyncNoop(): Promise; - -export { asyncNoop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/asyncNoop.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/asyncNoop.js deleted file mode 100644 index 57272a4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/asyncNoop.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -async function asyncNoop() { } - -exports.asyncNoop = asyncNoop; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/asyncNoop.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/asyncNoop.mjs deleted file mode 100644 index 349ad94..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/asyncNoop.mjs +++ /dev/null @@ -1,3 +0,0 @@ -async function asyncNoop() { } - -export { asyncNoop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/before.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/before.d.mts deleted file mode 100644 index 124e1ad..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/before.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creates a function that limits the number of times the given function (`func`) can be called. - * - * @template F - The type of the function to be invoked. - * @param {number} n - The number of times the returned function is allowed to call `func` before stopping. - * - If `n` is 0, `func` will never be called. - * - If `n` is a positive integer, `func` will be called up to `n-1` times. - * @param {F} func - The function to be called with the limit applied. - * @returns {(...args: Parameters) => ReturnType | undefined} - A new function that: - * - Tracks the number of calls. - * - Invokes `func` until the `n-1`-th call. - * - Returns `undefined` if the number of calls reaches or exceeds `n`, stopping further calls. - * @throws {Error} - Throw an error if `n` is negative. - * @example - * - * const beforeFn = before(3, () => { - * console.log("called"); - * }) - * - * // Will log 'called'. - * beforeFn(); - * - * // Will log 'called'. - * beforeFn(); - * - * // Will not log anything. - * beforeFn(); - */ -declare function before any>(n: number, func: F): (...args: Parameters) => ReturnType | undefined; - -export { before }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/before.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/before.d.ts deleted file mode 100644 index 124e1ad..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/before.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creates a function that limits the number of times the given function (`func`) can be called. - * - * @template F - The type of the function to be invoked. - * @param {number} n - The number of times the returned function is allowed to call `func` before stopping. - * - If `n` is 0, `func` will never be called. - * - If `n` is a positive integer, `func` will be called up to `n-1` times. - * @param {F} func - The function to be called with the limit applied. - * @returns {(...args: Parameters) => ReturnType | undefined} - A new function that: - * - Tracks the number of calls. - * - Invokes `func` until the `n-1`-th call. - * - Returns `undefined` if the number of calls reaches or exceeds `n`, stopping further calls. - * @throws {Error} - Throw an error if `n` is negative. - * @example - * - * const beforeFn = before(3, () => { - * console.log("called"); - * }) - * - * // Will log 'called'. - * beforeFn(); - * - * // Will log 'called'. - * beforeFn(); - * - * // Will not log anything. - * beforeFn(); - */ -declare function before any>(n: number, func: F): (...args: Parameters) => ReturnType | undefined; - -export { before }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/before.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/before.js deleted file mode 100644 index 7a119b9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/before.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function before(n, func) { - if (!Number.isInteger(n) || n < 0) { - throw new Error('n must be a non-negative integer.'); - } - let counter = 0; - return (...args) => { - if (++counter < n) { - return func(...args); - } - return undefined; - }; -} - -exports.before = before; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/before.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/before.mjs deleted file mode 100644 index 6faeb20..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/before.mjs +++ /dev/null @@ -1,14 +0,0 @@ -function before(n, func) { - if (!Number.isInteger(n) || n < 0) { - throw new Error('n must be a non-negative integer.'); - } - let counter = 0; - return (...args) => { - if (++counter < n) { - return func(...args); - } - return undefined; - }; -} - -export { before }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/curry.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/curry.d.mts deleted file mode 100644 index 2e22be5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/curry.d.mts +++ /dev/null @@ -1,126 +0,0 @@ -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {() => R} func - The function to curry. - * @returns {() => R} A curried function. - * - * @example - * function noArgFunc() { - * return 42; - * } - * const curriedNoArgFunc = curry(noArgFunc); - * console.log(curriedNoArgFunc()); // 42 - */ -declare function curry(func: () => R): () => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {(p: P) => R} func - The function to curry. - * @returns {(p: P) => R} A curried function. - * - * @example - * function oneArgFunc(a: number) { - * return a * 2; - * } - * const curriedOneArgFunc = curry(oneArgFunc); - * console.log(curriedOneArgFunc(5)); // 10 - */ -declare function curry(func: (p: P) => R): (p: P) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {(p1: P1, p2: P2) => R} func - The function to curry. - * @returns {(p1: P1) => (p2: P2) => R} A curried function. - * - * @example - * function twoArgFunc(a: number, b: number) { - * return a + b; - * } - * const curriedTwoArgFunc = curry(twoArgFunc); - * const add5 = curriedTwoArgFunc(5); - * console.log(add5(10)); // 15 - */ -declare function curry(func: (p1: P1, p2: P2) => R): (p1: P1) => (p2: P2) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {(p1: P1, p2: P2, p3: P3) => R} func - The function to curry. - * @returns {(p1: P1) => (p2: P2) => (p3: P3) => R} A curried function. - * - * @example - * function threeArgFunc(a: number, b: number, c: number) { - * return a + b + c; - * } - * const curriedThreeArgFunc = curry(threeArgFunc); - * const add1 = curriedThreeArgFunc(1); - * const add3 = add1(2); - * console.log(add3(3)); // 6 - */ -declare function curry(func: (p1: P1, p2: P2, p3: P3) => R): (p1: P1) => (p2: P2) => (p3: P3) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {(p1: P1, p2: P2, p3: P3, p4: P4) => R} func - The function to curry. - * @returns {(p1: P1) => (p2: P2) => (p3: P3) => (p4: P4) => R} A curried function. - * - * @example - * function fourArgFunc(a: number, b: number, c: number, d: number) { - * return a + b + c + d; - * } - * const curriedFourArgFunc = curry(fourArgFunc); - * const add1 = curriedFourArgFunc(1); - * const add3 = add1(2); - * const add6 = add3(3); - * console.log(add6(4)); // 10 - */ -declare function curry(func: (p1: P1, p2: P2, p3: P3, p4: P4) => R): (p1: P1) => (p2: P2) => (p3: P3) => (p4: P4) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {(p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) => R} func - The function to curry. - * @returns {(p1: P1) => (p2: P2) => (p3: P3) => (p4: P4) => (p5: P5) => R} A curried function. - * - * @example - * function fiveArgFunc(a: number, b: number, c: number, d: number, e: number) { - * return a + b + c + d + e; - * } - * const curriedFiveArgFunc = curry(fiveArgFunc); - * const add1 = curriedFiveArgFunc(1); - * const add3 = add1(2); - * const add6 = add3(3); - * const add10 = add6(4); - * console.log(add10(5)); // 15 - */ -declare function curry(func: (p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) => R): (p1: P1) => (p2: P2) => (p3: P3) => (p4: P4) => (p5: P5) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {(...args: any[]) => any} func - The function to curry. - * @returns {(...args: any[]) => any} A curried function that can be called with a single argument at a time. - * - * @example - * function sum(a: number, b: number, c: number) { - * return a + b + c; - * } - * - * const curriedSum = curry(sum); - * - * // The parameter `a` should be given the value `10`. - * const add10 = curriedSum(10); - * - * // The parameter `b` should be given the value `15`. - * const add25 = add10(15); - * - * // The parameter `c` should be given the value `5`. The function 'sum' has received all its arguments and will now return a value. - * const result = add25(5); - */ -declare function curry(func: (...args: any[]) => any): (...args: any[]) => any; - -export { curry }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/curry.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/curry.d.ts deleted file mode 100644 index 2e22be5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/curry.d.ts +++ /dev/null @@ -1,126 +0,0 @@ -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {() => R} func - The function to curry. - * @returns {() => R} A curried function. - * - * @example - * function noArgFunc() { - * return 42; - * } - * const curriedNoArgFunc = curry(noArgFunc); - * console.log(curriedNoArgFunc()); // 42 - */ -declare function curry(func: () => R): () => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {(p: P) => R} func - The function to curry. - * @returns {(p: P) => R} A curried function. - * - * @example - * function oneArgFunc(a: number) { - * return a * 2; - * } - * const curriedOneArgFunc = curry(oneArgFunc); - * console.log(curriedOneArgFunc(5)); // 10 - */ -declare function curry(func: (p: P) => R): (p: P) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {(p1: P1, p2: P2) => R} func - The function to curry. - * @returns {(p1: P1) => (p2: P2) => R} A curried function. - * - * @example - * function twoArgFunc(a: number, b: number) { - * return a + b; - * } - * const curriedTwoArgFunc = curry(twoArgFunc); - * const add5 = curriedTwoArgFunc(5); - * console.log(add5(10)); // 15 - */ -declare function curry(func: (p1: P1, p2: P2) => R): (p1: P1) => (p2: P2) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {(p1: P1, p2: P2, p3: P3) => R} func - The function to curry. - * @returns {(p1: P1) => (p2: P2) => (p3: P3) => R} A curried function. - * - * @example - * function threeArgFunc(a: number, b: number, c: number) { - * return a + b + c; - * } - * const curriedThreeArgFunc = curry(threeArgFunc); - * const add1 = curriedThreeArgFunc(1); - * const add3 = add1(2); - * console.log(add3(3)); // 6 - */ -declare function curry(func: (p1: P1, p2: P2, p3: P3) => R): (p1: P1) => (p2: P2) => (p3: P3) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {(p1: P1, p2: P2, p3: P3, p4: P4) => R} func - The function to curry. - * @returns {(p1: P1) => (p2: P2) => (p3: P3) => (p4: P4) => R} A curried function. - * - * @example - * function fourArgFunc(a: number, b: number, c: number, d: number) { - * return a + b + c + d; - * } - * const curriedFourArgFunc = curry(fourArgFunc); - * const add1 = curriedFourArgFunc(1); - * const add3 = add1(2); - * const add6 = add3(3); - * console.log(add6(4)); // 10 - */ -declare function curry(func: (p1: P1, p2: P2, p3: P3, p4: P4) => R): (p1: P1) => (p2: P2) => (p3: P3) => (p4: P4) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {(p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) => R} func - The function to curry. - * @returns {(p1: P1) => (p2: P2) => (p3: P3) => (p4: P4) => (p5: P5) => R} A curried function. - * - * @example - * function fiveArgFunc(a: number, b: number, c: number, d: number, e: number) { - * return a + b + c + d + e; - * } - * const curriedFiveArgFunc = curry(fiveArgFunc); - * const add1 = curriedFiveArgFunc(1); - * const add3 = add1(2); - * const add6 = add3(3); - * const add10 = add6(4); - * console.log(add10(5)); // 15 - */ -declare function curry(func: (p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) => R): (p1: P1) => (p2: P2) => (p3: P3) => (p4: P4) => (p5: P5) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * @param {(...args: any[]) => any} func - The function to curry. - * @returns {(...args: any[]) => any} A curried function that can be called with a single argument at a time. - * - * @example - * function sum(a: number, b: number, c: number) { - * return a + b + c; - * } - * - * const curriedSum = curry(sum); - * - * // The parameter `a` should be given the value `10`. - * const add10 = curriedSum(10); - * - * // The parameter `b` should be given the value `15`. - * const add25 = add10(15); - * - * // The parameter `c` should be given the value `5`. The function 'sum' has received all its arguments and will now return a value. - * const result = add25(5); - */ -declare function curry(func: (...args: any[]) => any): (...args: any[]) => any; - -export { curry }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/curry.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/curry.js deleted file mode 100644 index 2c3e092..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/curry.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function curry(func) { - if (func.length === 0 || func.length === 1) { - return func; - } - return function (arg) { - return makeCurry(func, func.length, [arg]); - }; -} -function makeCurry(origin, argsLength, args) { - if (args.length === argsLength) { - return origin(...args); - } - else { - const next = function (arg) { - return makeCurry(origin, argsLength, [...args, arg]); - }; - return next; - } -} - -exports.curry = curry; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/curry.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/curry.mjs deleted file mode 100644 index 35e1836..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/curry.mjs +++ /dev/null @@ -1,21 +0,0 @@ -function curry(func) { - if (func.length === 0 || func.length === 1) { - return func; - } - return function (arg) { - return makeCurry(func, func.length, [arg]); - }; -} -function makeCurry(origin, argsLength, args) { - if (args.length === argsLength) { - return origin(...args); - } - else { - const next = function (arg) { - return makeCurry(origin, argsLength, [...args, arg]); - }; - return next; - } -} - -export { curry }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/curryRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/curryRight.d.mts deleted file mode 100644 index 96a2b6c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/curryRight.d.mts +++ /dev/null @@ -1,140 +0,0 @@ -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {() => R} func - The function to curry. - * @returns {() => R} A curried function. - * - * @example - * function noArgFunc() { - * return 42; - * } - * const curriedNoArgFunc = curryRight(noArgFunc); - * console.log(curriedNoArgFunc()); // 42 - */ -declare function curryRight(func: () => R): () => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {(p: P) => R} func - The function to curry. - * @returns {(p: P) => R} A curried function. - * - * @example - * function oneArgFunc(a: number) { - * return a * 2; - * } - * const curriedOneArgFunc = curryRight(oneArgFunc); - * console.log(curriedOneArgFunc(5)); // 10 - */ -declare function curryRight(func: (p: P) => R): (p: P) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {(p1: P1, p2: P2) => R} func - The function to curry. - * @returns {(p2: P2) => (p1: P1) => R} A curried function. - * - * @example - * function twoArgFunc(a: number, b: number) { - * return [a, b]; - * } - * const curriedTwoArgFunc = curryRight(twoArgFunc); - * const func = curriedTwoArgFunc(1); - * console.log(func(2)); // [2, 1] - */ -declare function curryRight(func: (p1: P1, p2: P2) => R): (p2: P2) => (p1: P1) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {(p1: P1, p2: P2, p3: P3) => R} func - The function to curry. - * @returns {(p3: P3) => (p2: P2) => (p1: P1) => R} A curried function. - * - * @example - * function threeArgFunc(a: number, b: number, c: number) { - * return [a, b, c]; - * } - * const curriedThreeArgFunc = curryRight(threeArgFunc); - * const func = curriedThreeArgFunc(1); - * const func2 = func(2); - * console.log(func2(3)); // [3, 2, 1] - */ -declare function curryRight(func: (p1: P1, p2: P2, p3: P3) => R): (p3: P3) => (p2: P2) => (p1: P1) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {(p1: P1, p2: P2, p3: P3, p4: P4) => R} func - The function to curry. - * @returns {(p4: P4) => (p3: P3) => (p2: P2) => (p1: P1) => R} A curried function. - * - * @example - * function fourArgFunc(a: number, b: number, c: number, d: number) { - * return [a, b, c, d]; - * } - * const curriedFourArgFunc = curryRight(fourArgFunc); - * const func = curriedFourArgFunc(1); - * const func2 = func(2); - * const func3 = func2(3); - * console.log(func3(4)); // [4, 3, 2, 1] - */ -declare function curryRight(func: (p1: P1, p2: P2, p3: P3, p4: P4) => R): (p4: P4) => (p3: P3) => (p2: P2) => (p1: P1) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {(p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) => R} func - The function to curry. - * @returns {(p5: P5) => (p4: P4) => (p3: P3) => (p2: P2) => (p1: P1) => R} A curried function. - * - * @example - * function fiveArgFunc(a: number, b: number, c: number, d: number, e: number) { - * return [a, b, c, d, e]; - * } - * const curriedFiveArgFunc = curryRight(fiveArgFunc); - * const func = curriedFiveArgFunc(1); - * const func2 = func(2); - * const func3 = func2(3); - * const func4 = func3(4); - * console.log(func4(5)); // [5, 4, 3, 2, 1] - */ -declare function curryRight(func: (p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) => R): (p5: P5) => (p4: P4) => (p3: P3) => (p2: P2) => (p1: P1) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {(...args: any[]) => any} func - The function to curry. - * @returns {(...args: any[]) => any} A curried function. - * - * @example - * function sum(a: number, b: number, c: number) { - * return a + b + c; - * } - * - * const curriedSum = curryRight(sum); - * - * // The parameter `c` should be given the value `10`. - * const add10 = curriedSum(10); - * - * // The parameter `b` should be given the value `15`. - * const add25 = add10(15); - * - * // The parameter `a` should be given the value `5`. The function 'sum' has received all its arguments and will now return a value. - * const result = add25(5); // 30 - */ -declare function curryRight(func: (...args: any[]) => any): (...args: any[]) => any; - -export { curryRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/curryRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/curryRight.d.ts deleted file mode 100644 index 96a2b6c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/curryRight.d.ts +++ /dev/null @@ -1,140 +0,0 @@ -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {() => R} func - The function to curry. - * @returns {() => R} A curried function. - * - * @example - * function noArgFunc() { - * return 42; - * } - * const curriedNoArgFunc = curryRight(noArgFunc); - * console.log(curriedNoArgFunc()); // 42 - */ -declare function curryRight(func: () => R): () => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {(p: P) => R} func - The function to curry. - * @returns {(p: P) => R} A curried function. - * - * @example - * function oneArgFunc(a: number) { - * return a * 2; - * } - * const curriedOneArgFunc = curryRight(oneArgFunc); - * console.log(curriedOneArgFunc(5)); // 10 - */ -declare function curryRight(func: (p: P) => R): (p: P) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {(p1: P1, p2: P2) => R} func - The function to curry. - * @returns {(p2: P2) => (p1: P1) => R} A curried function. - * - * @example - * function twoArgFunc(a: number, b: number) { - * return [a, b]; - * } - * const curriedTwoArgFunc = curryRight(twoArgFunc); - * const func = curriedTwoArgFunc(1); - * console.log(func(2)); // [2, 1] - */ -declare function curryRight(func: (p1: P1, p2: P2) => R): (p2: P2) => (p1: P1) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {(p1: P1, p2: P2, p3: P3) => R} func - The function to curry. - * @returns {(p3: P3) => (p2: P2) => (p1: P1) => R} A curried function. - * - * @example - * function threeArgFunc(a: number, b: number, c: number) { - * return [a, b, c]; - * } - * const curriedThreeArgFunc = curryRight(threeArgFunc); - * const func = curriedThreeArgFunc(1); - * const func2 = func(2); - * console.log(func2(3)); // [3, 2, 1] - */ -declare function curryRight(func: (p1: P1, p2: P2, p3: P3) => R): (p3: P3) => (p2: P2) => (p1: P1) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {(p1: P1, p2: P2, p3: P3, p4: P4) => R} func - The function to curry. - * @returns {(p4: P4) => (p3: P3) => (p2: P2) => (p1: P1) => R} A curried function. - * - * @example - * function fourArgFunc(a: number, b: number, c: number, d: number) { - * return [a, b, c, d]; - * } - * const curriedFourArgFunc = curryRight(fourArgFunc); - * const func = curriedFourArgFunc(1); - * const func2 = func(2); - * const func3 = func2(3); - * console.log(func3(4)); // [4, 3, 2, 1] - */ -declare function curryRight(func: (p1: P1, p2: P2, p3: P3, p4: P4) => R): (p4: P4) => (p3: P3) => (p2: P2) => (p1: P1) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {(p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) => R} func - The function to curry. - * @returns {(p5: P5) => (p4: P4) => (p3: P3) => (p2: P2) => (p1: P1) => R} A curried function. - * - * @example - * function fiveArgFunc(a: number, b: number, c: number, d: number, e: number) { - * return [a, b, c, d, e]; - * } - * const curriedFiveArgFunc = curryRight(fiveArgFunc); - * const func = curriedFiveArgFunc(1); - * const func2 = func(2); - * const func3 = func2(3); - * const func4 = func3(4); - * console.log(func4(5)); // [5, 4, 3, 2, 1] - */ -declare function curryRight(func: (p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) => R): (p5: P5) => (p4: P4) => (p3: P3) => (p2: P2) => (p1: P1) => R; -/** - * Curries a function, allowing it to be called with a single argument at a time and returning a new function that takes the next argument. - * This process continues until all arguments have been provided, at which point the original function is called with all accumulated arguments. - * - * Unlike `curry`, this function curries the function from right to left. - * - * @param {(...args: any[]) => any} func - The function to curry. - * @returns {(...args: any[]) => any} A curried function. - * - * @example - * function sum(a: number, b: number, c: number) { - * return a + b + c; - * } - * - * const curriedSum = curryRight(sum); - * - * // The parameter `c` should be given the value `10`. - * const add10 = curriedSum(10); - * - * // The parameter `b` should be given the value `15`. - * const add25 = add10(15); - * - * // The parameter `a` should be given the value `5`. The function 'sum' has received all its arguments and will now return a value. - * const result = add25(5); // 30 - */ -declare function curryRight(func: (...args: any[]) => any): (...args: any[]) => any; - -export { curryRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/curryRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/curryRight.js deleted file mode 100644 index 1bca608..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/curryRight.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function curryRight(func) { - if (func.length === 0 || func.length === 1) { - return func; - } - return function (arg) { - return makeCurryRight(func, func.length, [arg]); - }; -} -function makeCurryRight(origin, argsLength, args) { - if (args.length === argsLength) { - return origin(...args); - } - else { - const next = function (arg) { - return makeCurryRight(origin, argsLength, [arg, ...args]); - }; - return next; - } -} - -exports.curryRight = curryRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/curryRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/curryRight.mjs deleted file mode 100644 index 894a99c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/curryRight.mjs +++ /dev/null @@ -1,21 +0,0 @@ -function curryRight(func) { - if (func.length === 0 || func.length === 1) { - return func; - } - return function (arg) { - return makeCurryRight(func, func.length, [arg]); - }; -} -function makeCurryRight(origin, argsLength, args) { - if (args.length === argsLength) { - return origin(...args); - } - else { - const next = function (arg) { - return makeCurryRight(origin, argsLength, [arg, ...args]); - }; - return next; - } -} - -export { curryRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/debounce.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/debounce.d.mts deleted file mode 100644 index 88e13f4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/debounce.d.mts +++ /dev/null @@ -1,74 +0,0 @@ -interface DebounceOptions { - /** - * An optional AbortSignal to cancel the debounced function. - */ - signal?: AbortSignal; - /** - * An optional array specifying whether the function should be invoked on the leading edge, trailing edge, or both. - * If `edges` includes "leading", the function will be invoked at the start of the delay period. - * If `edges` includes "trailing", the function will be invoked at the end of the delay period. - * If both "leading" and "trailing" are included, the function will be invoked at both the start and end of the delay period. - * @default ["trailing"] - */ - edges?: Array<'leading' | 'trailing'>; -} -interface DebouncedFunction void> { - (...args: Parameters): void; - /** - * Schedules the execution of the debounced function after the specified debounce delay. - * This method resets any existing timer, ensuring that the function is only invoked - * after the delay has elapsed since the last call to the debounced function. - * It is typically called internally whenever the debounced function is invoked. - * - * @returns {void} - */ - schedule: () => void; - /** - * Cancels any pending execution of the debounced function. - * This method clears the active timer and resets any stored context or arguments. - */ - cancel: () => void; - /** - * Immediately invokes the debounced function if there is a pending execution. - * This method executes the function right away if there is a pending execution. - */ - flush: () => void; -} -/** - * Creates a debounced function that delays invoking the provided function until after `debounceMs` milliseconds - * have elapsed since the last time the debounced function was invoked. The debounced function also has a `cancel` - * method to cancel any pending execution. - * - * @template F - The type of function. - * @param {F} func - The function to debounce. - * @param {number} debounceMs - The number of milliseconds to delay. - * @param {DebounceOptions} options - The options object - * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the debounced function. - * @returns A new debounced function with a `cancel` method. - * - * @example - * const debouncedFunction = debounce(() => { - * console.log('Function executed'); - * }, 1000); - * - * // Will log 'Function executed' after 1 second if not called again in that time - * debouncedFunction(); - * - * // Will not log anything as the previous call is canceled - * debouncedFunction.cancel(); - * - * // With AbortSignal - * const controller = new AbortController(); - * const signal = controller.signal; - * const debouncedWithSignal = debounce(() => { - * console.log('Function executed'); - * }, 1000, { signal }); - * - * debouncedWithSignal(); - * - * // Will cancel the debounced function call - * controller.abort(); - */ -declare function debounce void>(func: F, debounceMs: number, { signal, edges }?: DebounceOptions): DebouncedFunction; - -export { type DebounceOptions, type DebouncedFunction, debounce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/debounce.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/debounce.d.ts deleted file mode 100644 index 88e13f4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/debounce.d.ts +++ /dev/null @@ -1,74 +0,0 @@ -interface DebounceOptions { - /** - * An optional AbortSignal to cancel the debounced function. - */ - signal?: AbortSignal; - /** - * An optional array specifying whether the function should be invoked on the leading edge, trailing edge, or both. - * If `edges` includes "leading", the function will be invoked at the start of the delay period. - * If `edges` includes "trailing", the function will be invoked at the end of the delay period. - * If both "leading" and "trailing" are included, the function will be invoked at both the start and end of the delay period. - * @default ["trailing"] - */ - edges?: Array<'leading' | 'trailing'>; -} -interface DebouncedFunction void> { - (...args: Parameters): void; - /** - * Schedules the execution of the debounced function after the specified debounce delay. - * This method resets any existing timer, ensuring that the function is only invoked - * after the delay has elapsed since the last call to the debounced function. - * It is typically called internally whenever the debounced function is invoked. - * - * @returns {void} - */ - schedule: () => void; - /** - * Cancels any pending execution of the debounced function. - * This method clears the active timer and resets any stored context or arguments. - */ - cancel: () => void; - /** - * Immediately invokes the debounced function if there is a pending execution. - * This method executes the function right away if there is a pending execution. - */ - flush: () => void; -} -/** - * Creates a debounced function that delays invoking the provided function until after `debounceMs` milliseconds - * have elapsed since the last time the debounced function was invoked. The debounced function also has a `cancel` - * method to cancel any pending execution. - * - * @template F - The type of function. - * @param {F} func - The function to debounce. - * @param {number} debounceMs - The number of milliseconds to delay. - * @param {DebounceOptions} options - The options object - * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the debounced function. - * @returns A new debounced function with a `cancel` method. - * - * @example - * const debouncedFunction = debounce(() => { - * console.log('Function executed'); - * }, 1000); - * - * // Will log 'Function executed' after 1 second if not called again in that time - * debouncedFunction(); - * - * // Will not log anything as the previous call is canceled - * debouncedFunction.cancel(); - * - * // With AbortSignal - * const controller = new AbortController(); - * const signal = controller.signal; - * const debouncedWithSignal = debounce(() => { - * console.log('Function executed'); - * }, 1000, { signal }); - * - * debouncedWithSignal(); - * - * // Will cancel the debounced function call - * controller.abort(); - */ -declare function debounce void>(func: F, debounceMs: number, { signal, edges }?: DebounceOptions): DebouncedFunction; - -export { type DebounceOptions, type DebouncedFunction, debounce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/debounce.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/debounce.js deleted file mode 100644 index 175b812..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/debounce.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function debounce(func, debounceMs, { signal, edges } = {}) { - let pendingThis = undefined; - let pendingArgs = null; - const leading = edges != null && edges.includes('leading'); - const trailing = edges == null || edges.includes('trailing'); - const invoke = () => { - if (pendingArgs !== null) { - func.apply(pendingThis, pendingArgs); - pendingThis = undefined; - pendingArgs = null; - } - }; - const onTimerEnd = () => { - if (trailing) { - invoke(); - } - cancel(); - }; - let timeoutId = null; - const schedule = () => { - if (timeoutId != null) { - clearTimeout(timeoutId); - } - timeoutId = setTimeout(() => { - timeoutId = null; - onTimerEnd(); - }, debounceMs); - }; - const cancelTimer = () => { - if (timeoutId !== null) { - clearTimeout(timeoutId); - timeoutId = null; - } - }; - const cancel = () => { - cancelTimer(); - pendingThis = undefined; - pendingArgs = null; - }; - const flush = () => { - invoke(); - }; - const debounced = function (...args) { - if (signal?.aborted) { - return; - } - pendingThis = this; - pendingArgs = args; - const isFirstCall = timeoutId == null; - schedule(); - if (leading && isFirstCall) { - invoke(); - } - }; - debounced.schedule = schedule; - debounced.cancel = cancel; - debounced.flush = flush; - signal?.addEventListener('abort', cancel, { once: true }); - return debounced; -} - -exports.debounce = debounce; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/debounce.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/debounce.mjs deleted file mode 100644 index 7edf72c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/debounce.mjs +++ /dev/null @@ -1,62 +0,0 @@ -function debounce(func, debounceMs, { signal, edges } = {}) { - let pendingThis = undefined; - let pendingArgs = null; - const leading = edges != null && edges.includes('leading'); - const trailing = edges == null || edges.includes('trailing'); - const invoke = () => { - if (pendingArgs !== null) { - func.apply(pendingThis, pendingArgs); - pendingThis = undefined; - pendingArgs = null; - } - }; - const onTimerEnd = () => { - if (trailing) { - invoke(); - } - cancel(); - }; - let timeoutId = null; - const schedule = () => { - if (timeoutId != null) { - clearTimeout(timeoutId); - } - timeoutId = setTimeout(() => { - timeoutId = null; - onTimerEnd(); - }, debounceMs); - }; - const cancelTimer = () => { - if (timeoutId !== null) { - clearTimeout(timeoutId); - timeoutId = null; - } - }; - const cancel = () => { - cancelTimer(); - pendingThis = undefined; - pendingArgs = null; - }; - const flush = () => { - invoke(); - }; - const debounced = function (...args) { - if (signal?.aborted) { - return; - } - pendingThis = this; - pendingArgs = args; - const isFirstCall = timeoutId == null; - schedule(); - if (leading && isFirstCall) { - invoke(); - } - }; - debounced.schedule = schedule; - debounced.cancel = cancel; - debounced.flush = flush; - signal?.addEventListener('abort', cancel, { once: true }); - return debounced; -} - -export { debounce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/flow.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/flow.d.mts deleted file mode 100644 index 757d6fa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/flow.d.mts +++ /dev/null @@ -1,132 +0,0 @@ -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {() => R} f The function to invoke. - * @returns {() => R} Returns the new composite function. - * - * @example - * function noArgFunc() { - * return 42; - * } - * - * const combined = flow(noArgFunc); - * console.log(combined()); // 42 - */ -declare function flow(f: () => R): () => R; -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {(...args: A) => R} f1 The function to invoke. - * @returns {(...args: A) => R} Returns the new composite function. - * - * @example - * function oneArgFunc(a: number) { - * return a * 2; - * } - * - * const combined = flow(oneArgFunc); - * console.log(combined(5)); // 10 - */ -declare function flow(f1: (...args: A) => R): (...args: A) => R; -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {(...args: A) => R1} f1 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @returns {(...args: A) => R2} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * - * const combined = flow(add, square); - * console.log(combined(1, 2)); // 9 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2): (...args: A) => R2; -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {(...args: A) => R1} f1 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(a: R2) => R3} f3 The function to invoke. - * @returns {(...args: A) => R3} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flow(add, square, double); - * console.log(combined(1, 2)); // 18 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3): (...args: A) => R3; -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {(...args: A) => R1} f1 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(a: R2) => R3} f3 The function to invoke. - * @param {(a: R3) => R4} f4 The function to invoke. - * @returns {(...args: A) => R4} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toStr = (n: number) => n.toString(); - * - * const combined = flow(add, square, double, toStr); - * console.log(combined(1, 2)); // '18' - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): (...args: A) => R4; -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {(...args: A) => R1} f1 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(a: R2) => R3} f3 The function to invoke. - * @param {(a: R3) => R4} f4 The function to invoke. - * @param {(a: R4) => R5} f5 The function to invoke. - * @returns {(...args: A) => R5} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toStr = (n: number) => n.toString(); - * const split = (s: string) => s.split(''); - * - * const combined = flow(add, square, double, toStr, split); - * console.log(combined(1, 2)); // ['1', '8'] - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): (...args: A) => R5; -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {Array<(...args: any[]) => any>} funcs The functions to invoke. - * @returns {(...args: any[]) => any} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * - * const combined = flow(add, square); - * console.log(combined(1, 2)); // 9 - */ -declare function flow(...funcs: Array<(...args: any[]) => any>): (...args: any[]) => any; - -export { flow }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/flow.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/flow.d.ts deleted file mode 100644 index 757d6fa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/flow.d.ts +++ /dev/null @@ -1,132 +0,0 @@ -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {() => R} f The function to invoke. - * @returns {() => R} Returns the new composite function. - * - * @example - * function noArgFunc() { - * return 42; - * } - * - * const combined = flow(noArgFunc); - * console.log(combined()); // 42 - */ -declare function flow(f: () => R): () => R; -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {(...args: A) => R} f1 The function to invoke. - * @returns {(...args: A) => R} Returns the new composite function. - * - * @example - * function oneArgFunc(a: number) { - * return a * 2; - * } - * - * const combined = flow(oneArgFunc); - * console.log(combined(5)); // 10 - */ -declare function flow(f1: (...args: A) => R): (...args: A) => R; -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {(...args: A) => R1} f1 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @returns {(...args: A) => R2} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * - * const combined = flow(add, square); - * console.log(combined(1, 2)); // 9 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2): (...args: A) => R2; -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {(...args: A) => R1} f1 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(a: R2) => R3} f3 The function to invoke. - * @returns {(...args: A) => R3} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flow(add, square, double); - * console.log(combined(1, 2)); // 18 - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3): (...args: A) => R3; -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {(...args: A) => R1} f1 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(a: R2) => R3} f3 The function to invoke. - * @param {(a: R3) => R4} f4 The function to invoke. - * @returns {(...args: A) => R4} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toStr = (n: number) => n.toString(); - * - * const combined = flow(add, square, double, toStr); - * console.log(combined(1, 2)); // '18' - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): (...args: A) => R4; -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {(...args: A) => R1} f1 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(a: R2) => R3} f3 The function to invoke. - * @param {(a: R3) => R4} f4 The function to invoke. - * @param {(a: R4) => R5} f5 The function to invoke. - * @returns {(...args: A) => R5} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toStr = (n: number) => n.toString(); - * const split = (s: string) => s.split(''); - * - * const combined = flow(add, square, double, toStr, split); - * console.log(combined(1, 2)); // ['1', '8'] - */ -declare function flow(f1: (...args: A) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): (...args: A) => R5; -/** - * Creates a new function that executes the given functions in sequence. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * @param {Array<(...args: any[]) => any>} funcs The functions to invoke. - * @returns {(...args: any[]) => any} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * - * const combined = flow(add, square); - * console.log(combined(1, 2)); // 9 - */ -declare function flow(...funcs: Array<(...args: any[]) => any>): (...args: any[]) => any; - -export { flow }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/flow.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/flow.js deleted file mode 100644 index ad56d50..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/flow.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function flow(...funcs) { - return function (...args) { - let result = funcs.length ? funcs[0].apply(this, args) : args[0]; - for (let i = 1; i < funcs.length; i++) { - result = funcs[i].call(this, result); - } - return result; - }; -} - -exports.flow = flow; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/flow.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/flow.mjs deleted file mode 100644 index a145531..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/flow.mjs +++ /dev/null @@ -1,11 +0,0 @@ -function flow(...funcs) { - return function (...args) { - let result = funcs.length ? funcs[0].apply(this, args) : args[0]; - for (let i = 1; i < funcs.length; i++) { - result = funcs[i].call(this, result); - } - return result; - }; -} - -export { flow }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/flowRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/flowRight.d.mts deleted file mode 100644 index e3d8346..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/flowRight.d.mts +++ /dev/null @@ -1,144 +0,0 @@ -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {() => R} f The function to invoke. - * @returns {() => R} Returns the new composite function. - * - * @example - * function noArgFunc() { - * return 42; - * } - * const combined = flowRight(noArgFunc); - * console.log(combined()); // 42 - */ -declare function flowRight(f: () => R): () => R; -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {(...args: A) => R} f1 The function to invoke. - * @returns {(...args: A) => R} Returns the new composite function. - * - * @example - * function oneArgFunc(a: number) { - * return a * 2; - * } - * const combined = flowRight(oneArgFunc); - * console.log(combined(5)); // 10 - */ -declare function flowRight(f1: (...args: A) => R): (...args: A) => R; -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(...args: A) => R1} f1 The function to invoke. - * @returns {(...args: A) => R2} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * - * const combined = flowRight(square, add); - * console.log(combined(1, 2)); // 9 - */ -declare function flowRight(f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R2; -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {(a: R2) => R3} f3 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(...args: A) => R1} f1 The function to invoke. - * @returns {(...args: A) => R3} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flowRight(double, square, add); - * console.log(combined(1, 2)); // 18 - */ -declare function flowRight(f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R3; -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {(a: R3) => R4} f4 The function to invoke. - * @param {(a: R2) => R3} f3 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(...args: A) => R1} f1 The function to invoke. - * @returns {(...args: A) => R4} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toStr = (n: number) => n.toString(); - * - * const combined = flowRight(toStr, double, square, add); - * console.log(combined(1, 2)); // '18' - */ -declare function flowRight(f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R4; -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {(a: R4) => R5} f5 The function to invoke. - * @param {(a: R3) => R4} f4 The function to invoke. - * @param {(a: R2) => R3} f3 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(...args: A) => R1} f1 The function to invoke. - * @returns {(...args: A) => R5} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toStr = (n: number) => n.toString(); - * const split = (s: string) => s.split(''); - * - * const combined = flowRight(split, toStr, double, square, add); - * console.log(combined(1, 2)); // ['1', '8'] - */ -declare function flowRight(f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R5; -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {(...args: any[]) => any} funcs The functions to invoke. - * @returns {(...args: any[]) => any} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * - * const combined = flowRight(square, add); - * console.log(combined(1, 2)); // 9 - */ -declare function flowRight(...funcs: Array<(...args: any[]) => any>): (...args: any[]) => any; - -export { flowRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/flowRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/flowRight.d.ts deleted file mode 100644 index e3d8346..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/flowRight.d.ts +++ /dev/null @@ -1,144 +0,0 @@ -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {() => R} f The function to invoke. - * @returns {() => R} Returns the new composite function. - * - * @example - * function noArgFunc() { - * return 42; - * } - * const combined = flowRight(noArgFunc); - * console.log(combined()); // 42 - */ -declare function flowRight(f: () => R): () => R; -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {(...args: A) => R} f1 The function to invoke. - * @returns {(...args: A) => R} Returns the new composite function. - * - * @example - * function oneArgFunc(a: number) { - * return a * 2; - * } - * const combined = flowRight(oneArgFunc); - * console.log(combined(5)); // 10 - */ -declare function flowRight(f1: (...args: A) => R): (...args: A) => R; -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(...args: A) => R1} f1 The function to invoke. - * @returns {(...args: A) => R2} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * - * const combined = flowRight(square, add); - * console.log(combined(1, 2)); // 9 - */ -declare function flowRight(f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R2; -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {(a: R2) => R3} f3 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(...args: A) => R1} f1 The function to invoke. - * @returns {(...args: A) => R3} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * - * const combined = flowRight(double, square, add); - * console.log(combined(1, 2)); // 18 - */ -declare function flowRight(f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R3; -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {(a: R3) => R4} f4 The function to invoke. - * @param {(a: R2) => R3} f3 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(...args: A) => R1} f1 The function to invoke. - * @returns {(...args: A) => R4} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toStr = (n: number) => n.toString(); - * - * const combined = flowRight(toStr, double, square, add); - * console.log(combined(1, 2)); // '18' - */ -declare function flowRight(f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R4; -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {(a: R4) => R5} f5 The function to invoke. - * @param {(a: R3) => R4} f4 The function to invoke. - * @param {(a: R2) => R3} f3 The function to invoke. - * @param {(a: R1) => R2} f2 The function to invoke. - * @param {(...args: A) => R1} f1 The function to invoke. - * @returns {(...args: A) => R5} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * const double = (n: number) => n * 2; - * const toStr = (n: number) => n.toString(); - * const split = (s: string) => s.split(''); - * - * const combined = flowRight(split, toStr, double, square, add); - * console.log(combined(1, 2)); // ['1', '8'] - */ -declare function flowRight(f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: A) => R1): (...args: A) => R5; -/** - * Creates a new function that executes the given functions in sequence from right to left. The return value of the previous function is passed as an argument to the next function. - * - * The `this` context of the returned function is also passed to the functions provided as parameters. - * - * This method is like `flow` except that it creates a function that invokes the given functions from right to left. - * - * @param {(...args: any[]) => any} funcs The functions to invoke. - * @returns {(...args: any[]) => any} Returns the new composite function. - * - * @example - * const add = (x: number, y: number) => x + y; - * const square = (n: number) => n * n; - * - * const combined = flowRight(square, add); - * console.log(combined(1, 2)); // 9 - */ -declare function flowRight(...funcs: Array<(...args: any[]) => any>): (...args: any[]) => any; - -export { flowRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/flowRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/flowRight.js deleted file mode 100644 index 2b4b600..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/flowRight.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const flow = require('./flow.js'); - -function flowRight(...funcs) { - return flow.flow(...funcs.reverse()); -} - -exports.flowRight = flowRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/flowRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/flowRight.mjs deleted file mode 100644 index 116afdf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/flowRight.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { flow } from './flow.mjs'; - -function flowRight(...funcs) { - return flow(...funcs.reverse()); -} - -export { flowRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/identity.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/identity.d.mts deleted file mode 100644 index 34f9827..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/identity.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Returns the input value unchanged. - * - * @template T - The type of the input value. - * @param {T} x - The value to be returned. - * @returns {T} The input value. - * - * @example - * // Returns 5 - * identity(5); - * - * @example - * // Returns 'hello' - * identity('hello'); - * - * @example - * // Returns { key: 'value' } - * identity({ key: 'value' }); - */ -declare function identity(x: T): T; - -export { identity }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/identity.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/identity.d.ts deleted file mode 100644 index 34f9827..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/identity.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Returns the input value unchanged. - * - * @template T - The type of the input value. - * @param {T} x - The value to be returned. - * @returns {T} The input value. - * - * @example - * // Returns 5 - * identity(5); - * - * @example - * // Returns 'hello' - * identity('hello'); - * - * @example - * // Returns { key: 'value' } - * identity({ key: 'value' }); - */ -declare function identity(x: T): T; - -export { identity }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/identity.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/identity.js deleted file mode 100644 index 6341454..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/identity.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function identity(x) { - return x; -} - -exports.identity = identity; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/identity.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/identity.mjs deleted file mode 100644 index 0ef3939..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/identity.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function identity(x) { - return x; -} - -export { identity }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/index.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/index.d.mts deleted file mode 100644 index ce231fd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/index.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -export { after } from './after.mjs'; -export { ary } from './ary.mjs'; -export { asyncNoop } from './asyncNoop.mjs'; -export { before } from './before.mjs'; -export { curry } from './curry.mjs'; -export { curryRight } from './curryRight.mjs'; -export { DebounceOptions, DebouncedFunction, debounce } from './debounce.mjs'; -export { flow } from './flow.mjs'; -export { flowRight } from './flowRight.mjs'; -export { identity } from './identity.mjs'; -export { MemoizeCache, memoize } from './memoize.mjs'; -export { negate } from './negate.mjs'; -export { noop } from './noop.mjs'; -export { once } from './once.mjs'; -export { partial } from './partial.mjs'; -export { partialRight } from './partialRight.mjs'; -export { rest } from './rest.mjs'; -export { retry } from './retry.mjs'; -export { spread } from './spread.mjs'; -export { ThrottleOptions, ThrottledFunction, throttle } from './throttle.mjs'; -export { unary } from './unary.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/index.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/index.d.ts deleted file mode 100644 index 9580b59..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/index.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -export { after } from './after.js'; -export { ary } from './ary.js'; -export { asyncNoop } from './asyncNoop.js'; -export { before } from './before.js'; -export { curry } from './curry.js'; -export { curryRight } from './curryRight.js'; -export { DebounceOptions, DebouncedFunction, debounce } from './debounce.js'; -export { flow } from './flow.js'; -export { flowRight } from './flowRight.js'; -export { identity } from './identity.js'; -export { MemoizeCache, memoize } from './memoize.js'; -export { negate } from './negate.js'; -export { noop } from './noop.js'; -export { once } from './once.js'; -export { partial } from './partial.js'; -export { partialRight } from './partialRight.js'; -export { rest } from './rest.js'; -export { retry } from './retry.js'; -export { spread } from './spread.js'; -export { ThrottleOptions, ThrottledFunction, throttle } from './throttle.js'; -export { unary } from './unary.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/index.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/index.js deleted file mode 100644 index 4eb6c16..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/index.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const after = require('./after.js'); -const ary = require('./ary.js'); -const asyncNoop = require('./asyncNoop.js'); -const before = require('./before.js'); -const curry = require('./curry.js'); -const curryRight = require('./curryRight.js'); -const debounce = require('./debounce.js'); -const flow = require('./flow.js'); -const flowRight = require('./flowRight.js'); -const identity = require('./identity.js'); -const memoize = require('./memoize.js'); -const negate = require('./negate.js'); -const noop = require('./noop.js'); -const once = require('./once.js'); -const partial = require('./partial.js'); -const partialRight = require('./partialRight.js'); -const rest = require('./rest.js'); -const retry = require('./retry.js'); -const spread = require('./spread.js'); -const throttle = require('./throttle.js'); -const unary = require('./unary.js'); - - - -exports.after = after.after; -exports.ary = ary.ary; -exports.asyncNoop = asyncNoop.asyncNoop; -exports.before = before.before; -exports.curry = curry.curry; -exports.curryRight = curryRight.curryRight; -exports.debounce = debounce.debounce; -exports.flow = flow.flow; -exports.flowRight = flowRight.flowRight; -exports.identity = identity.identity; -exports.memoize = memoize.memoize; -exports.negate = negate.negate; -exports.noop = noop.noop; -exports.once = once.once; -exports.partial = partial.partial; -exports.partialRight = partialRight.partialRight; -exports.rest = rest.rest; -exports.retry = retry.retry; -exports.spread = spread.spread; -exports.throttle = throttle.throttle; -exports.unary = unary.unary; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/index.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/index.mjs deleted file mode 100644 index 40e5406..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/index.mjs +++ /dev/null @@ -1,21 +0,0 @@ -export { after } from './after.mjs'; -export { ary } from './ary.mjs'; -export { asyncNoop } from './asyncNoop.mjs'; -export { before } from './before.mjs'; -export { curry } from './curry.mjs'; -export { curryRight } from './curryRight.mjs'; -export { debounce } from './debounce.mjs'; -export { flow } from './flow.mjs'; -export { flowRight } from './flowRight.mjs'; -export { identity } from './identity.mjs'; -export { memoize } from './memoize.mjs'; -export { negate } from './negate.mjs'; -export { noop } from './noop.mjs'; -export { once } from './once.mjs'; -export { partial } from './partial.mjs'; -export { partialRight } from './partialRight.mjs'; -export { rest } from './rest.mjs'; -export { retry } from './retry.mjs'; -export { spread } from './spread.mjs'; -export { throttle } from './throttle.mjs'; -export { unary } from './unary.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/memoize.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/memoize.d.mts deleted file mode 100644 index 3266b2c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/memoize.d.mts +++ /dev/null @@ -1,124 +0,0 @@ -/** - * Creates a memoized version of the provided function. The memoized function caches - * results based on the argument it receives, so if the same argument is passed again, - * it returns the cached result instead of recomputing it. - * - * This function works with functions that take zero or just one argument. If your function - * originally takes multiple arguments, you should refactor it to take a single object or array - * that combines those arguments. - * - * If the argument is not primitive (e.g., arrays or objects), provide a - * `getCacheKey` function to generate a unique cache key for proper caching. - * - * @template F - The type of the function to be memoized. - * @param {F} fn - The function to be memoized. It should accept a single argument and return a value. - * @param {MemoizeOptions[0], ReturnType>} [options={}] - Optional configuration for the memoization. - * @param {MemoizeCache} [options.cache] - The cache object used to store results. Defaults to a new `Map`. - * @param {(args: A) => unknown} [options.getCacheKey] - An optional function to generate a unique cache key for each argument. - * - * @returns The memoized function with an additional `cache` property that exposes the internal cache. - * - * @example - * // Example using the default cache - * const add = (x: number) => x + 10; - * const memoizedAdd = memoize(add); - * - * console.log(memoizedAdd(5)); // 15 - * console.log(memoizedAdd(5)); // 15 (cached result) - * console.log(memoizedAdd.cache.size); // 1 - * - * @example - * // Example using a custom resolver - * const sum = (arr: number[]) => arr.reduce((x, y) => x + y, 0); - * const memoizedSum = memoize(sum, { getCacheKey: (arr: number[]) => arr.join(',') }); - * console.log(memoizedSum([1, 2])); // 3 - * console.log(memoizedSum([1, 2])); // 3 (cached result) - * console.log(memoizedSum.cache.size); // 1 - * - * @example - * // Example using a custom cache implementation - * class CustomCache implements MemoizeCache { - * private cache = new Map(); - * - * set(key: K, value: T): void { - * this.cache.set(key, value); - * } - * - * get(key: K): T | undefined { - * return this.cache.get(key); - * } - * - * has(key: K): boolean { - * return this.cache.has(key); - * } - * - * delete(key: K): boolean { - * return this.cache.delete(key); - * } - * - * clear(): void { - * this.cache.clear(); - * } - * - * get size(): number { - * return this.cache.size; - * } - * } - * const customCache = new CustomCache(); - * const memoizedSumWithCustomCache = memoize(sum, { cache: customCache }); - * console.log(memoizedSumWithCustomCache([1, 2])); // 3 - * console.log(memoizedSumWithCustomCache([1, 2])); // 3 (cached result) - * console.log(memoizedAddWithCustomCache.cache.size); // 1 - */ -declare function memoize any>(fn: F, options?: { - cache?: MemoizeCache>; - getCacheKey?: (args: Parameters[0]) => unknown; -}): F & { - cache: MemoizeCache>; -}; -/** - * Represents a cache for memoization, allowing storage and retrieval of computed values. - * - * @template K - The type of keys used to store values in the cache. - * @template V - The type of values stored in the cache. - */ -interface MemoizeCache { - /** - * Stores a value in the cache with the specified key. - * - * @param key - The key to associate with the value. - * @param value - The value to store in the cache. - */ - set(key: K, value: V): void; - /** - * Retrieves a value from the cache by its key. - * - * @param key - The key of the value to retrieve. - * @returns The value associated with the key, or undefined if the key does not exist. - */ - get(key: K): V | undefined; - /** - * Checks if a value exists in the cache for the specified key. - * - * @param key - The key to check for existence in the cache. - * @returns True if the cache contains the key, false otherwise. - */ - has(key: K): boolean; - /** - * Deletes a value from the cache by its key. - * - * @param key - The key of the value to delete. - * @returns True if the value was successfully deleted, false otherwise. - */ - delete(key: K): boolean | void; - /** - * Clears all values from the cache. - */ - clear(): void; - /** - * The number of entries in the cache. - */ - size: number; -} - -export { type MemoizeCache, memoize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/memoize.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/memoize.d.ts deleted file mode 100644 index 3266b2c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/memoize.d.ts +++ /dev/null @@ -1,124 +0,0 @@ -/** - * Creates a memoized version of the provided function. The memoized function caches - * results based on the argument it receives, so if the same argument is passed again, - * it returns the cached result instead of recomputing it. - * - * This function works with functions that take zero or just one argument. If your function - * originally takes multiple arguments, you should refactor it to take a single object or array - * that combines those arguments. - * - * If the argument is not primitive (e.g., arrays or objects), provide a - * `getCacheKey` function to generate a unique cache key for proper caching. - * - * @template F - The type of the function to be memoized. - * @param {F} fn - The function to be memoized. It should accept a single argument and return a value. - * @param {MemoizeOptions[0], ReturnType>} [options={}] - Optional configuration for the memoization. - * @param {MemoizeCache} [options.cache] - The cache object used to store results. Defaults to a new `Map`. - * @param {(args: A) => unknown} [options.getCacheKey] - An optional function to generate a unique cache key for each argument. - * - * @returns The memoized function with an additional `cache` property that exposes the internal cache. - * - * @example - * // Example using the default cache - * const add = (x: number) => x + 10; - * const memoizedAdd = memoize(add); - * - * console.log(memoizedAdd(5)); // 15 - * console.log(memoizedAdd(5)); // 15 (cached result) - * console.log(memoizedAdd.cache.size); // 1 - * - * @example - * // Example using a custom resolver - * const sum = (arr: number[]) => arr.reduce((x, y) => x + y, 0); - * const memoizedSum = memoize(sum, { getCacheKey: (arr: number[]) => arr.join(',') }); - * console.log(memoizedSum([1, 2])); // 3 - * console.log(memoizedSum([1, 2])); // 3 (cached result) - * console.log(memoizedSum.cache.size); // 1 - * - * @example - * // Example using a custom cache implementation - * class CustomCache implements MemoizeCache { - * private cache = new Map(); - * - * set(key: K, value: T): void { - * this.cache.set(key, value); - * } - * - * get(key: K): T | undefined { - * return this.cache.get(key); - * } - * - * has(key: K): boolean { - * return this.cache.has(key); - * } - * - * delete(key: K): boolean { - * return this.cache.delete(key); - * } - * - * clear(): void { - * this.cache.clear(); - * } - * - * get size(): number { - * return this.cache.size; - * } - * } - * const customCache = new CustomCache(); - * const memoizedSumWithCustomCache = memoize(sum, { cache: customCache }); - * console.log(memoizedSumWithCustomCache([1, 2])); // 3 - * console.log(memoizedSumWithCustomCache([1, 2])); // 3 (cached result) - * console.log(memoizedAddWithCustomCache.cache.size); // 1 - */ -declare function memoize any>(fn: F, options?: { - cache?: MemoizeCache>; - getCacheKey?: (args: Parameters[0]) => unknown; -}): F & { - cache: MemoizeCache>; -}; -/** - * Represents a cache for memoization, allowing storage and retrieval of computed values. - * - * @template K - The type of keys used to store values in the cache. - * @template V - The type of values stored in the cache. - */ -interface MemoizeCache { - /** - * Stores a value in the cache with the specified key. - * - * @param key - The key to associate with the value. - * @param value - The value to store in the cache. - */ - set(key: K, value: V): void; - /** - * Retrieves a value from the cache by its key. - * - * @param key - The key of the value to retrieve. - * @returns The value associated with the key, or undefined if the key does not exist. - */ - get(key: K): V | undefined; - /** - * Checks if a value exists in the cache for the specified key. - * - * @param key - The key to check for existence in the cache. - * @returns True if the cache contains the key, false otherwise. - */ - has(key: K): boolean; - /** - * Deletes a value from the cache by its key. - * - * @param key - The key of the value to delete. - * @returns True if the value was successfully deleted, false otherwise. - */ - delete(key: K): boolean | void; - /** - * Clears all values from the cache. - */ - clear(): void; - /** - * The number of entries in the cache. - */ - size: number; -} - -export { type MemoizeCache, memoize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/memoize.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/memoize.js deleted file mode 100644 index cda55cc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/memoize.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function memoize(fn, options = {}) { - const { cache = new Map(), getCacheKey } = options; - const memoizedFn = function (arg) { - const key = getCacheKey ? getCacheKey(arg) : arg; - if (cache.has(key)) { - return cache.get(key); - } - const result = fn.call(this, arg); - cache.set(key, result); - return result; - }; - memoizedFn.cache = cache; - return memoizedFn; -} - -exports.memoize = memoize; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/memoize.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/memoize.mjs deleted file mode 100644 index 9c82c6f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/memoize.mjs +++ /dev/null @@ -1,16 +0,0 @@ -function memoize(fn, options = {}) { - const { cache = new Map(), getCacheKey } = options; - const memoizedFn = function (arg) { - const key = getCacheKey ? getCacheKey(arg) : arg; - if (cache.has(key)) { - return cache.get(key); - } - const result = fn.call(this, arg); - cache.set(key, result); - return result; - }; - memoizedFn.cache = cache; - return memoizedFn; -} - -export { memoize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/negate.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/negate.d.mts deleted file mode 100644 index 1eec0c3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/negate.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Creates a function that negates the result of the predicate function. - * - * @template F - The type of the function to negate. - * @param {F} func - The function to negate. - * @returns {F} The new negated function, which negates the boolean result of `func`. - * - * @example - * const array = [1, 2, 3, 4, 5, 6]; - * const isEven = (n: number) => n % 2 === 0; - * const result = array.filter(negate(isEven)); - * // result will be [1, 3, 5] - */ -declare function negate boolean>(func: F): F; - -export { negate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/negate.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/negate.d.ts deleted file mode 100644 index 1eec0c3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/negate.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Creates a function that negates the result of the predicate function. - * - * @template F - The type of the function to negate. - * @param {F} func - The function to negate. - * @returns {F} The new negated function, which negates the boolean result of `func`. - * - * @example - * const array = [1, 2, 3, 4, 5, 6]; - * const isEven = (n: number) => n % 2 === 0; - * const result = array.filter(negate(isEven)); - * // result will be [1, 3, 5] - */ -declare function negate boolean>(func: F): F; - -export { negate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/negate.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/negate.js deleted file mode 100644 index 06ea208..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/negate.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function negate(func) { - return ((...args) => !func(...args)); -} - -exports.negate = negate; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/negate.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/negate.mjs deleted file mode 100644 index d455fd3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/negate.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function negate(func) { - return ((...args) => !func(...args)); -} - -export { negate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/noop.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/noop.d.mts deleted file mode 100644 index 14ad184..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/noop.d.mts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * A no-operation function that does nothing. - * This can be used as a placeholder or default function. - * - * @example - * noop(); // Does nothing - * - * @returns {void} This function does not return anything. - */ -declare function noop(): void; - -export { noop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/noop.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/noop.d.ts deleted file mode 100644 index 14ad184..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/noop.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * A no-operation function that does nothing. - * This can be used as a placeholder or default function. - * - * @example - * noop(); // Does nothing - * - * @returns {void} This function does not return anything. - */ -declare function noop(): void; - -export { noop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/noop.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/noop.js deleted file mode 100644 index 1df5d3d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/noop.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function noop() { } - -exports.noop = noop; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/noop.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/noop.mjs deleted file mode 100644 index f259c8b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/noop.mjs +++ /dev/null @@ -1,3 +0,0 @@ -function noop() { } - -export { noop }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/once.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/once.d.mts deleted file mode 100644 index 23b6b00..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/once.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Creates a function that is restricted to invoking func once. Repeat calls to the function return the value of the first invocation. - * - * @template F - The type of the function. - * @param {F} func - The function to restrict. - * @returns {F} Returns the new restricted function. - * - * @example - * const initialize = once(createApplication); - * - * initialize(); - * initialize(); - * // => `createApplication` is invoked once - */ -declare function once any>(func: F): F; - -export { once }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/once.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/once.d.ts deleted file mode 100644 index 23b6b00..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/once.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Creates a function that is restricted to invoking func once. Repeat calls to the function return the value of the first invocation. - * - * @template F - The type of the function. - * @param {F} func - The function to restrict. - * @returns {F} Returns the new restricted function. - * - * @example - * const initialize = once(createApplication); - * - * initialize(); - * initialize(); - * // => `createApplication` is invoked once - */ -declare function once any>(func: F): F; - -export { once }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/once.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/once.js deleted file mode 100644 index dd199af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/once.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function once(func) { - let called = false; - let cache; - return function (...args) { - if (!called) { - called = true; - cache = func(...args); - } - return cache; - }; -} - -exports.once = once; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/once.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/once.mjs deleted file mode 100644 index 2ef78fe..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/once.mjs +++ /dev/null @@ -1,13 +0,0 @@ -function once(func) { - let called = false; - let cache; - return function (...args) { - if (!called) { - called = true; - cache = func(...args); - } - return cache; - }; -} - -export { once }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/partial.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/partial.d.mts deleted file mode 100644 index 5f29c2a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/partial.d.mts +++ /dev/null @@ -1,551 +0,0 @@ -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template R The return type of the function. - * @param {function(arg1: T1): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @returns {function(): R} A new function that takes no arguments and returns the result of the original function. - * - * @example - * const addOne = (x: number) => x + 1; - * const addOneToFive = partial(addOne, 5); - * console.log(addOneToFive()); // => 6 - */ -declare function partial(func: (arg1: T1) => R, arg1: T1): () => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @returns {function(arg2: T2): R} A new function that takes the second argument and returns the result of the original function. - * - * @example - * const multiply = (x: number, y: number) => x * y; - * const double = partial(multiply, 2); - * console.log(double(5)); // => 10 - */ -declare function partial(func: (arg1: T1, arg2: T2) => R, arg1: T1): (arg2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2): R} func The function to partially apply. - * @param {Placeholder} placeholder The placeholder for the first argument. - * @param {T2} arg2 The second argument to apply. - * @returns {function(arg1: T1): R} A new function that takes the first argument and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string) => `${greeting}, ${name}!`; - * const greetWithHello = partial(greet, partial.placeholder, 'John'); - * console.log(greetWithHello('Hello')); // => 'Hello, John!' - */ -declare function partial(func: (arg1: T1, arg2: T2) => R, placeholder: Placeholder, arg2: T2): (arg1: T1) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @returns {function(arg2: T2, arg3: T3): R} A new function that takes the second and third arguments and returns the result of the original function. - * - * @example - * const sumThree = (a: number, b: number, c: number) => a + b + c; - * const addFive = partial(sumThree, 5); - * console.log(addFive(3, 2)); // => 10 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: T1): (arg2: T2, arg3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {T2} arg2 The second argument to apply. - * @returns {function(arg1: T1, arg3: T3): R} A new function that takes the first and third arguments and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string) => `${greeting}, ${name}!`; - * const greetWithPlaceholder = partial(greet, partial.placeholder, 'John'); - * console.log(greetWithPlaceholder('Hello')); // => 'Hello, John!' - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: Placeholder, arg2: T2): (arg1: T1, arg3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @returns {function(arg1: T1, arg2: T2): R} A new function that takes the first and second arguments and returns the result of the original function. - * - * @example - * const multiply = (x: number, y: number, z: number) => x * y * z; - * const multiplyWithPlaceholders = partial(multiply, partial.placeholder, partial.placeholder, 2); - * console.log(multiplyWithPlaceholders(3, 4)); // => 24 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: Placeholder, arg2: Placeholder, arg3: T3): (arg1: T1, arg2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @returns {function(arg2: T2): R} A new function that takes the second argument and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string) => `${greeting}, ${name}!`; - * const greetWithPlaceholder = partial(greet, 'Hello', partial.placeholder); - * console.log(greetWithPlaceholder('John')); // => 'Hello, John!' - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: T1, arg2: Placeholder, arg3: T3): (arg2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3): R} func The function to partially apply. - * @param {Placeholder} arg1 The first argument to apply. - * @param {T2} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @returns {function(arg2: T2): R} A new function that takes the second argument and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string) => `${greeting}, ${name}!`; - * const greetWithPlaceholder = partial(greet, 'Hello', partial.placeholder); - * console.log(greetWithPlaceholder('John')); // => 'Hello, John!' - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3) => R, plc1: Placeholder, arg2: T2, arg3: T3): (arg1: T1) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @returns {function(arg2: T2): R} A new function that takes the second argument and returns the result of the original function. - * - * @example - * const multiply = (x: number, y: number, z: number, w: number) => x * y * z * w; - * const double = partial(multiply, 2); - * console.log(double(5, 4, 3)); // => 120 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1): (arg2: T2, arg3: T3, arg4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg1: T1, arg2: T2): R} A new function that takes the first and second arguments and returns the result of the original function. - * - * @example - * const multiply = (x: number, y: number, z: number, w: number) => x * y * z * w; - * const multiplyWithPlaceholders = partial(multiply, partial.placeholder, partial.placeholder, 2, 3); - * console.log(multiplyWithPlaceholders(4, 5)); // => 120 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: Placeholder, arg2: Placeholder, arg3: T3, arg4: T4): (arg1: T1, arg2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {T2} arg2 The second argument to apply. - * @returns {function(arg3: T3, arg4: T4): R} A new function that takes the third and fourth arguments and returns the result of the original function. - * - * @example - * const sumFour = (a: number, b: number, c: number, d: number) => a + b + c + d; - * const addOneAndTwo = partial(sumFour, 1, 2); - * console.log(addOneAndTwo(3, 4)); // => 10 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2): (arg3: T3, arg4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg2: T2, arg4: T4): R} A new function that takes the second and fourth arguments and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting}, ${name}${punctuation}`; - * const greetWithPlaceholder = partial(greet, 'Hello', partial.placeholder, '!'); - * console.log(greetWithPlaceholder('John')); // => 'Hello, John!' - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: Placeholder, arg3: T3): (arg2: T2, arg4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {T2} arg2 The second argument to apply. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg1: T1, arg3: T3): R} A new function that takes the first and third arguments and returns the result of the original function. - * - * @example - * const multiply = (x: number, y: number, z: number, w: number) => x * y * z * w; - * const multiplyWithPlaceholder = partial(multiply, partial.placeholder, 2, 3); - * console.log(multiplyWithPlaceholder(4)); // => 24 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: Placeholder, arg2: T2, arg3: T3): (arg1: T1, arg4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {T2} arg2 The second argument to apply. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg1: T1, arg3: T3): R} A new function that takes the first and third arguments and returns the result of the original function. - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: Placeholder, arg2: T2, arg3: Placeholder, arg4: T4): (arg1: T1, arg3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg1: T1, arg2: T2): R} A new function that takes the first and second arguments and returns the result of the original function. - * - * @example - * const multiply = (x: number, y: number, z: number, w: number) => x * y * z * w; - * const multiplyWithPlaceholders = partial(multiply, partial.placeholder, partial.placeholder, 2, 3); - * console.log(multiplyWithPlaceholders(4, 5)); // => 120 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: Placeholder, arg2: Placeholder, arg3: T3, arg4: T4): (arg1: T1, arg2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {T2} arg2 The second argument to apply. - * @param {T3} arg3 The third argument to apply. - * @returns {function(arg4: T4): R} A new function that takes the fourth argument and returns the result of the original function. - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2, arg3: T3): (arg4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {T2} arg2 The second argument to apply. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg3: T3): R} A new function that takes the third argument and returns the result of the original function. - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2, arg3: Placeholder, arg4: T4): (arg3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg2: T2): R} A new function that takes the second argument and returns the result of the original function. - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: Placeholder, arg3: T3, arg4: T4): (arg2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {T2} arg2 The second argument to apply. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg1: T1): R} A new function that takes the first argument and returns the result of the original function. - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: Placeholder, arg2: T2, arg3: T3, arg4: T4): (arg1: T1) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template TS The types of the arguments. - * @template R The return type of the function. - * @param {function(...args: TS): R} func The function to partially apply. - * @returns {function(...args: TS): R} A new function that takes the same arguments as the original function. - * - * @example - * const add = (...numbers: number[]) => numbers.reduce((sum, n) => sum + n, 0); - * const addFive = partial(add, 5); - * console.log(addFive(1, 2, 3)); // => 11 - */ -declare function partial(func: (...args: TS) => R): (...args: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template TS The types of the arguments. - * @template T1 The type of the first argument. - * @template R The return type of the function. - * @param {function(arg1: T1, ...args: TS): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @returns {function(...args: TS): R} A new function that takes the remaining arguments and returns the result of the original function. - * - * @example - * const greet = (greeting: string, ...names: string[]) => `${greeting}, ${names.join(', ')}!`; - * const greetHello = partial(greet, 'Hello'); - * console.log(greetHello('Alice', 'Bob')); // => 'Hello, Alice, Bob!' - */ -declare function partial(func: (arg1: T1, ...args: TS) => R, arg1: T1): (...args: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template TS The types of the arguments. - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, ...args: TS): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {T2} arg2 The second argument to apply. - * @returns {function(...args: TS): R} A new function that takes the remaining arguments and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting}, ${name}${punctuation}`; - * const greetWithHello = partial(greet, 'Hello', '!'); - * console.log(greetWithHello('John')); // => 'Hello, John!' - */ -declare function partial(func: (arg1: T1, arg2: T2, ...args: TS) => R, t1: T1, arg2: T2): (...args: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template TS The types of the arguments. - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {function(t1: T1, arg2: T2, arg3: T3, ...args: TS): R} func The function to partially apply. - * @param {T1} t1 The first argument to apply. - * @param {T2} arg2 The second argument to apply. - * @param {T3} arg3 The third argument to apply. - * @returns {function(...args: TS): R} A new function that takes the remaining arguments and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting}, ${name}${punctuation}`; - * const greetWithHello = partial(greet, 'Hello', 'John', '!'); - * console.log(greetWithHello()); // => 'Hello, John!' - */ -declare function partial(func: (t1: T1, arg2: T2, arg3: T3, ...args: TS) => R, t1: T1, arg2: T2, arg3: T3): (...args: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template TS The types of the arguments. - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(t1: T1, arg2: T2, arg3: T3, arg4: T4, ...args: TS): R} func The function to partially apply. - * @param {T1} t1 The first argument to apply. - * @param {T2} arg2 The second argument to apply. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(...args: TS): R} A new function that takes the remaining arguments and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting}, ${name}${punctuation}`; - * const greetWithHello = partial(greet, 'Hello', 'John', '!'); - * console.log(greetWithHello()); // => 'Hello, John!' - */ -declare function partial(func: (t1: T1, arg2: T2, arg3: T3, arg4: T4, ...args: TS) => R, t1: T1, arg2: T2, arg3: T3, arg4: T4): (...args: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template F The type of the function to partially apply. - * @param {F} func The function to partially apply. - * @param {...any[]} partialArgs The arguments to be partially applied. - * @returns {function(...args: any[]): ReturnType} A new function that takes the remaining arguments and returns the result of the original function. - * - * @example - * const add = (...numbers: number[]) => numbers.reduce((sum, n) => sum + n, 0); - * const addFive = partial(add, 5); - * console.log(addFive(1, 2, 3)); // => 11 - */ -declare function partial any>(func: F, ...partialArgs: any[]): (...args: any[]) => ReturnType; -declare namespace partial { - var placeholder: typeof placeholderSymbol; -} -declare const placeholderSymbol: unique symbol; -type Placeholder = typeof placeholderSymbol; - -export { partial }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/partial.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/partial.d.ts deleted file mode 100644 index 5f29c2a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/partial.d.ts +++ /dev/null @@ -1,551 +0,0 @@ -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template R The return type of the function. - * @param {function(arg1: T1): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @returns {function(): R} A new function that takes no arguments and returns the result of the original function. - * - * @example - * const addOne = (x: number) => x + 1; - * const addOneToFive = partial(addOne, 5); - * console.log(addOneToFive()); // => 6 - */ -declare function partial(func: (arg1: T1) => R, arg1: T1): () => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @returns {function(arg2: T2): R} A new function that takes the second argument and returns the result of the original function. - * - * @example - * const multiply = (x: number, y: number) => x * y; - * const double = partial(multiply, 2); - * console.log(double(5)); // => 10 - */ -declare function partial(func: (arg1: T1, arg2: T2) => R, arg1: T1): (arg2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2): R} func The function to partially apply. - * @param {Placeholder} placeholder The placeholder for the first argument. - * @param {T2} arg2 The second argument to apply. - * @returns {function(arg1: T1): R} A new function that takes the first argument and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string) => `${greeting}, ${name}!`; - * const greetWithHello = partial(greet, partial.placeholder, 'John'); - * console.log(greetWithHello('Hello')); // => 'Hello, John!' - */ -declare function partial(func: (arg1: T1, arg2: T2) => R, placeholder: Placeholder, arg2: T2): (arg1: T1) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @returns {function(arg2: T2, arg3: T3): R} A new function that takes the second and third arguments and returns the result of the original function. - * - * @example - * const sumThree = (a: number, b: number, c: number) => a + b + c; - * const addFive = partial(sumThree, 5); - * console.log(addFive(3, 2)); // => 10 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: T1): (arg2: T2, arg3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {T2} arg2 The second argument to apply. - * @returns {function(arg1: T1, arg3: T3): R} A new function that takes the first and third arguments and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string) => `${greeting}, ${name}!`; - * const greetWithPlaceholder = partial(greet, partial.placeholder, 'John'); - * console.log(greetWithPlaceholder('Hello')); // => 'Hello, John!' - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: Placeholder, arg2: T2): (arg1: T1, arg3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @returns {function(arg1: T1, arg2: T2): R} A new function that takes the first and second arguments and returns the result of the original function. - * - * @example - * const multiply = (x: number, y: number, z: number) => x * y * z; - * const multiplyWithPlaceholders = partial(multiply, partial.placeholder, partial.placeholder, 2); - * console.log(multiplyWithPlaceholders(3, 4)); // => 24 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: Placeholder, arg2: Placeholder, arg3: T3): (arg1: T1, arg2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @returns {function(arg2: T2): R} A new function that takes the second argument and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string) => `${greeting}, ${name}!`; - * const greetWithPlaceholder = partial(greet, 'Hello', partial.placeholder); - * console.log(greetWithPlaceholder('John')); // => 'Hello, John!' - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: T1, arg2: Placeholder, arg3: T3): (arg2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3): R} func The function to partially apply. - * @param {Placeholder} arg1 The first argument to apply. - * @param {T2} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @returns {function(arg2: T2): R} A new function that takes the second argument and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string) => `${greeting}, ${name}!`; - * const greetWithPlaceholder = partial(greet, 'Hello', partial.placeholder); - * console.log(greetWithPlaceholder('John')); // => 'Hello, John!' - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3) => R, plc1: Placeholder, arg2: T2, arg3: T3): (arg1: T1) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @returns {function(arg2: T2): R} A new function that takes the second argument and returns the result of the original function. - * - * @example - * const multiply = (x: number, y: number, z: number, w: number) => x * y * z * w; - * const double = partial(multiply, 2); - * console.log(double(5, 4, 3)); // => 120 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1): (arg2: T2, arg3: T3, arg4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg1: T1, arg2: T2): R} A new function that takes the first and second arguments and returns the result of the original function. - * - * @example - * const multiply = (x: number, y: number, z: number, w: number) => x * y * z * w; - * const multiplyWithPlaceholders = partial(multiply, partial.placeholder, partial.placeholder, 2, 3); - * console.log(multiplyWithPlaceholders(4, 5)); // => 120 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: Placeholder, arg2: Placeholder, arg3: T3, arg4: T4): (arg1: T1, arg2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {T2} arg2 The second argument to apply. - * @returns {function(arg3: T3, arg4: T4): R} A new function that takes the third and fourth arguments and returns the result of the original function. - * - * @example - * const sumFour = (a: number, b: number, c: number, d: number) => a + b + c + d; - * const addOneAndTwo = partial(sumFour, 1, 2); - * console.log(addOneAndTwo(3, 4)); // => 10 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2): (arg3: T3, arg4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg2: T2, arg4: T4): R} A new function that takes the second and fourth arguments and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting}, ${name}${punctuation}`; - * const greetWithPlaceholder = partial(greet, 'Hello', partial.placeholder, '!'); - * console.log(greetWithPlaceholder('John')); // => 'Hello, John!' - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: Placeholder, arg3: T3): (arg2: T2, arg4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {T2} arg2 The second argument to apply. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg1: T1, arg3: T3): R} A new function that takes the first and third arguments and returns the result of the original function. - * - * @example - * const multiply = (x: number, y: number, z: number, w: number) => x * y * z * w; - * const multiplyWithPlaceholder = partial(multiply, partial.placeholder, 2, 3); - * console.log(multiplyWithPlaceholder(4)); // => 24 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: Placeholder, arg2: T2, arg3: T3): (arg1: T1, arg4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {T2} arg2 The second argument to apply. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg1: T1, arg3: T3): R} A new function that takes the first and third arguments and returns the result of the original function. - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: Placeholder, arg2: T2, arg3: Placeholder, arg4: T4): (arg1: T1, arg3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg1: T1, arg2: T2): R} A new function that takes the first and second arguments and returns the result of the original function. - * - * @example - * const multiply = (x: number, y: number, z: number, w: number) => x * y * z * w; - * const multiplyWithPlaceholders = partial(multiply, partial.placeholder, partial.placeholder, 2, 3); - * console.log(multiplyWithPlaceholders(4, 5)); // => 120 - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: Placeholder, arg2: Placeholder, arg3: T3, arg4: T4): (arg1: T1, arg2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {T2} arg2 The second argument to apply. - * @param {T3} arg3 The third argument to apply. - * @returns {function(arg4: T4): R} A new function that takes the fourth argument and returns the result of the original function. - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2, arg3: T3): (arg4: T4) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {T2} arg2 The second argument to apply. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg3: T3): R} A new function that takes the third argument and returns the result of the original function. - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2, arg3: Placeholder, arg4: T4): (arg3: T3) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg2: T2): R} A new function that takes the second argument and returns the result of the original function. - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: Placeholder, arg3: T3, arg4: T4): (arg2: T2) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, arg3: T3, arg4: T4): R} func The function to partially apply. - * @param {Placeholder} arg1 The placeholder for the first argument. - * @param {T2} arg2 The second argument to apply. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(arg1: T1): R} A new function that takes the first argument and returns the result of the original function. - */ -declare function partial(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: Placeholder, arg2: T2, arg3: T3, arg4: T4): (arg1: T1) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template TS The types of the arguments. - * @template R The return type of the function. - * @param {function(...args: TS): R} func The function to partially apply. - * @returns {function(...args: TS): R} A new function that takes the same arguments as the original function. - * - * @example - * const add = (...numbers: number[]) => numbers.reduce((sum, n) => sum + n, 0); - * const addFive = partial(add, 5); - * console.log(addFive(1, 2, 3)); // => 11 - */ -declare function partial(func: (...args: TS) => R): (...args: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template TS The types of the arguments. - * @template T1 The type of the first argument. - * @template R The return type of the function. - * @param {function(arg1: T1, ...args: TS): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @returns {function(...args: TS): R} A new function that takes the remaining arguments and returns the result of the original function. - * - * @example - * const greet = (greeting: string, ...names: string[]) => `${greeting}, ${names.join(', ')}!`; - * const greetHello = partial(greet, 'Hello'); - * console.log(greetHello('Alice', 'Bob')); // => 'Hello, Alice, Bob!' - */ -declare function partial(func: (arg1: T1, ...args: TS) => R, arg1: T1): (...args: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template TS The types of the arguments. - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {function(arg1: T1, arg2: T2, ...args: TS): R} func The function to partially apply. - * @param {T1} arg1 The first argument to apply. - * @param {T2} arg2 The second argument to apply. - * @returns {function(...args: TS): R} A new function that takes the remaining arguments and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting}, ${name}${punctuation}`; - * const greetWithHello = partial(greet, 'Hello', '!'); - * console.log(greetWithHello('John')); // => 'Hello, John!' - */ -declare function partial(func: (arg1: T1, arg2: T2, ...args: TS) => R, t1: T1, arg2: T2): (...args: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template TS The types of the arguments. - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {function(t1: T1, arg2: T2, arg3: T3, ...args: TS): R} func The function to partially apply. - * @param {T1} t1 The first argument to apply. - * @param {T2} arg2 The second argument to apply. - * @param {T3} arg3 The third argument to apply. - * @returns {function(...args: TS): R} A new function that takes the remaining arguments and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting}, ${name}${punctuation}`; - * const greetWithHello = partial(greet, 'Hello', 'John', '!'); - * console.log(greetWithHello()); // => 'Hello, John!' - */ -declare function partial(func: (t1: T1, arg2: T2, arg3: T3, ...args: TS) => R, t1: T1, arg2: T2, arg3: T3): (...args: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template TS The types of the arguments. - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {function(t1: T1, arg2: T2, arg3: T3, arg4: T4, ...args: TS): R} func The function to partially apply. - * @param {T1} t1 The first argument to apply. - * @param {T2} arg2 The second argument to apply. - * @param {T3} arg3 The third argument to apply. - * @param {T4} arg4 The fourth argument to apply. - * @returns {function(...args: TS): R} A new function that takes the remaining arguments and returns the result of the original function. - * - * @example - * const greet = (greeting: string, name: string, punctuation: string) => `${greeting}, ${name}${punctuation}`; - * const greetWithHello = partial(greet, 'Hello', 'John', '!'); - * console.log(greetWithHello()); // => 'Hello, John!' - */ -declare function partial(func: (t1: T1, arg2: T2, arg3: T3, arg4: T4, ...args: TS) => R, t1: T1, arg2: T2, arg3: T3, arg4: T4): (...args: TS) => R; -/** - * Creates a function that invokes `func` with `partialArgs` prepended to the arguments it receives. This method is like `bind` except it does not alter the `this` binding. - * - * The partial.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template F The type of the function to partially apply. - * @param {F} func The function to partially apply. - * @param {...any[]} partialArgs The arguments to be partially applied. - * @returns {function(...args: any[]): ReturnType} A new function that takes the remaining arguments and returns the result of the original function. - * - * @example - * const add = (...numbers: number[]) => numbers.reduce((sum, n) => sum + n, 0); - * const addFive = partial(add, 5); - * console.log(addFive(1, 2, 3)); // => 11 - */ -declare function partial any>(func: F, ...partialArgs: any[]): (...args: any[]) => ReturnType; -declare namespace partial { - var placeholder: typeof placeholderSymbol; -} -declare const placeholderSymbol: unique symbol; -type Placeholder = typeof placeholderSymbol; - -export { partial }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/partial.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/partial.js deleted file mode 100644 index 0acfac2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/partial.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function partial(func, ...partialArgs) { - return partialImpl(func, placeholderSymbol, ...partialArgs); -} -function partialImpl(func, placeholder, ...partialArgs) { - const partialed = function (...providedArgs) { - let providedArgsIndex = 0; - const substitutedArgs = partialArgs - .slice() - .map(arg => (arg === placeholder ? providedArgs[providedArgsIndex++] : arg)); - const remainingArgs = providedArgs.slice(providedArgsIndex); - return func.apply(this, substitutedArgs.concat(remainingArgs)); - }; - if (func.prototype) { - partialed.prototype = Object.create(func.prototype); - } - return partialed; -} -const placeholderSymbol = Symbol('partial.placeholder'); -partial.placeholder = placeholderSymbol; - -exports.partial = partial; -exports.partialImpl = partialImpl; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/partial.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/partial.mjs deleted file mode 100644 index f4fc91c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/partial.mjs +++ /dev/null @@ -1,21 +0,0 @@ -function partial(func, ...partialArgs) { - return partialImpl(func, placeholderSymbol, ...partialArgs); -} -function partialImpl(func, placeholder, ...partialArgs) { - const partialed = function (...providedArgs) { - let providedArgsIndex = 0; - const substitutedArgs = partialArgs - .slice() - .map(arg => (arg === placeholder ? providedArgs[providedArgsIndex++] : arg)); - const remainingArgs = providedArgs.slice(providedArgsIndex); - return func.apply(this, substitutedArgs.concat(remainingArgs)); - }; - if (func.prototype) { - partialed.prototype = Object.create(func.prototype); - } - return partialed; -} -const placeholderSymbol = Symbol('partial.placeholder'); -partial.placeholder = placeholderSymbol; - -export { partial, partialImpl }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/partialRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/partialRight.d.mts deleted file mode 100644 index ac77e39..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/partialRight.d.mts +++ /dev/null @@ -1,628 +0,0 @@ -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template R The return type of the function. - * @param {() => R} func The function to invoke. - * @returns {() => R} Returns the new function. - * @example - * const getValue = () => 42; - * const getValueFunc = partialRight(getValue); - * console.log(getValueFunc()); // => 42 - */ -declare function partialRight(func: () => R): () => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template R The return type of the function. - * @param {(arg1: T1) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @returns {() => R} Returns the new partially applied function. - * @example - * const addOne = (num: number) => num + 1; - * const addOneFunc = partialRight(addOne, 1); - * console.log(addOneFunc()); // => 2 - */ -declare function partialRight(func: (arg1: T1) => R, arg1: T1): () => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template R The return type of the function. - * @param {(arg1: T1) => R} func The function to partially apply arguments to. - * @returns {(arg1: T1) => R} Returns the new partially applied function. - * @example - * const multiplyBy = (factor: number) => (num: number) => num * factor; - * const double = partialRight(multiplyBy(2)); - * console.log(double(5)); // => 10 - */ -declare function partialRight(func: (arg1: T1) => R): (arg1: T1) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template R The return type of the function. - * @param {(arg1: T1) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @returns {() => R} Returns the new partially applied function. - * @example - * const greet = (name: string) => `Hello, ${name}!`; - * const greetJohn = partialRight(greet, 'John'); - * console.log(greetJohn()); // => 'Hello, John!' - */ -declare function partialRight(func: (arg1: T1) => R, arg1: T1): () => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2) => R} func The function to partially apply arguments to. - * @returns {(arg1: T1, arg2: T2) => R} Returns the new partially applied function. - * @example - * const subtract = (a: number, b: number) => a - b; - * const subtractFive = partialRight(subtract); - * console.log(subtractFive(10, 5)); // => 5 - */ -declare function partialRight(func: (arg1: T1, arg2: T2) => R): (arg1: T1, arg2: T2) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @returns {(arg2: T2) => R} Returns the new partially applied function. - * @example - * const concat = (a: string, b: string) => a + b; - * const concatWithHello = partialRight(concat, 'Hello', partialRight.placeholder); - * console.log(concatWithHello(' World!')); // => 'Hello World!' - */ -declare function partialRight(func: (arg1: T1, arg2: T2) => R, arg1: T1, arg2: Placeholder): (arg2: T2) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @returns {(arg1: T1) => R} Returns the new partially applied function. - * @example - * const divide = (a: number, b: number) => a / b; - * const divideByTwo = partialRight(divide, 2); - * console.log(divideByTwo(10)); // => 5 - */ -declare function partialRight(func: (arg1: T1, arg2: T2) => R, arg2: T2): (arg1: T1) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {T2} arg2 The second argument to be partially applied. - * @returns {() => R} Returns the new partially applied function. - * @example - * const multiply = (a: number, b: number) => a * b; - * const multiplyByThreeAndFour = partialRight(multiply, 3, 4); - * console.log(multiplyByThreeAndFour()); // => 12 - */ -declare function partialRight(func: (arg1: T1, arg2: T2) => R, arg1: T1, arg2: T2): () => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @returns {(arg1: T1, arg2: T2, arg3: T3) => R} Returns the new partially applied function. - * @example - * const sumThree = (a: number, b: number, c: number) => a + b + c; - * const sumWithFive = partialRight(sumThree); - * console.log(sumWithFive(1, 2, 5)); // => 8 - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R): (arg1: T1, arg2: T2, arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @returns {(arg2: T2, arg3: T3) => R} Returns the new partially applied function. - * @example - * const formatDate = (day: number, month: number, year: number) => `${day}/${month}/${year}`; - * const formatDateWithDay = partialRight(formatDate, 1, partialRight.placeholder, partialRight.placeholder); - * console.log(formatDateWithDay(12, 2023)); // => '1/12/2023' - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: T1, arg2: Placeholder, arg3: Placeholder): (arg2: T2, arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @returns {(arg1: T1, arg3: T3) => R} Returns the new partially applied function. - * @example - * const createUser = (name: string, age: number, country: string) => `${name}, ${age} years old from ${country}`; - * const createUserFromUSA = partialRight(createUser, 'USA', partialRight.placeholder); - * console.log(createUserFromUSA('John', 30)); // => 'John, 30 years old from USA' - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg2: T2, arg3: Placeholder): (arg1: T1, arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {T2} arg2 The second argument to be partially applied. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @returns {(arg3: T3) => R} Returns the new partially applied function. - * @example - * const logMessage = (level: string, message: string, timestamp: string) => `[${level}] ${message} at ${timestamp}`; - * const logError = partialRight(logMessage, 'ERROR', '2023-10-01'); - * console.log(logError('Something went wrong!')); // => '[ERROR] Something went wrong! at 2023-10-01' - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: T1, arg2: T2, arg3: Placeholder): (arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @param {T3} arg3 The third argument to be partially applied. - * @returns {(arg1: T1, arg2: T2) => R} Returns the new partially applied function. - * @example - * const calculateArea = (length: number, width: number) => length * width; - * const calculateAreaWithWidth = partialRight(calculateArea, 5); - * console.log(calculateAreaWithWidth(10)); // => 50 - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg3: T3): (arg1: T1, arg2: T2) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to be partially applied. - * @returns {(arg2: T2) => R} Returns the new partially applied function. - * @example - * const formatCurrency = (amount: number, currency: string) => `${amount} ${currency}`; - * const formatUSD = partialRight(formatCurrency, 100, partialRight.placeholder); - * console.log(formatUSD('USD')); // => '100 USD' - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: T1, arg2: Placeholder, arg3: T3): (arg2: T2) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @param {T3} arg3 The third argument to be partially applied. - * @returns {(arg1: T1) => R} Returns the new partially applied function. - * @example - * const createProfile = (name: string, age: number, country: string) => `${name}, ${age} from ${country}`; - * const createProfileFromCanada = partialRight(createProfile, 'Canada', 'John'); - * console.log(createProfileFromCanada(30)); // => 'John, 30 from Canada' - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg2: T2, arg3: T3): (arg1: T1) => R; -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: T1, arg2: T2, arg3: T3): () => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @returns {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} Returns a new function that takes four arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg2: T2, arg3: T3, arg4: T4) => R} Returns a new function that takes the second, third, and fourth arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: Placeholder, arg3: Placeholder, arg4: Placeholder): (arg2: T2, arg3: T3, arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg1: T1, arg3: T3, arg4: T4) => R} Returns a new function that takes the first, third, and fourth arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg2: T2, arg3: Placeholder, arg4: Placeholder): (arg1: T1, arg3: T3, arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {T2} arg2 The second argument to be partially applied. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg3: T3, arg4: T4) => R} Returns a new function that takes the third and fourth arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2, arg3: Placeholder, arg4: Placeholder): (arg3: T3, arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T3} arg3 The third argument to be partially applied. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg1: T1, arg2: T2, arg4: T4) => R} Returns a new function that takes the first, second, and fourth arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg3: T3, arg4: Placeholder): (arg1: T1, arg2: T2, arg4: T4) => R; -/** - * Creates a function that invokes `func` with the first argument, a placeholder for the second argument, - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to be partially applied. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg2: T2, arg4: T4) => R} Returns a new function that takes the second and fourth arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: Placeholder, arg3: T3, arg4: Placeholder): (arg2: T2, arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @param {T3} arg3 The third argument to be partially applied. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg1: T1, arg4: T4) => R} Returns a new function that takes the first and fourth arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg2: T2, arg3: T3, arg4: Placeholder): (arg1: T1, arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {T2} arg2 The second argument to be partially applied. - * @param {T3} arg3 The third argument to be partially applied. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg4: T4) => R} Returns a new function that takes the fourth argument. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2, arg3: T3, arg4: Placeholder): (arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg1: T1, arg2: T2, arg3: T3) => R} Returns a new function that takes the first, second, and third arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg4: T4): (arg1: T1, arg2: T2, arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg2: T2, arg3: T3) => R} Returns a new function that takes the second and third arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: Placeholder, arg3: Placeholder, arg4: T4): (arg2: T2, arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg1: T1, arg3: T3) => R} Returns a new function that takes the first and third arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg2: T2, arg3: Placeholder, arg4: T4): (arg1: T1, arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {T2} arg2 The second argument to be partially applied. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg3: T3) => R} Returns a new function that takes the third argument. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2, arg3: Placeholder, arg4: T4): (arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T3} arg3 The third argument to be partially applied. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg1: T1, arg2: T2) => R} Returns a new function that takes the first and second arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg3: T3, arg4: T4): (arg1: T1, arg2: T2) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to be partially applied. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg2: T2) => R} Returns a new function that takes the second argument. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: Placeholder, arg3: T3, arg4: T4): (arg2: T2) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @param {T3} arg3 The third argument to be partially applied. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg1: T1) => R} Returns a new function that takes the first argument. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg2: T2, arg3: T3, arg4: T4): (arg1: T1) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {T2} arg2 The second argument to be partially applied. - * @param {T3} arg3 The third argument to be partially applied. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {() => R} Returns the new partially applied function. - * @example - * const concatenate = (a: string, b: string, c: string, d: string) => a + b + c + d; - * const concatenateHelloWorld = partialRight(concatenate, 'Hello', ' ', 'World', '!'); - * console.log(concatenateHelloWorld()); // => 'Hello World!' - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2, arg3: T3, arg4: T4): () => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template F The type of the function to partially apply. - * @param {F} func The function to partially apply arguments to. - * @param {...any[]} args The arguments to be partially applied. - * @returns {function(...args: any[]): ReturnType} Returns the new partially applied function. - * @example - * const log = (...messages: string[]) => console.log(...messages); - * const logError = partialRight(log, 'Error:'); - * logError('Something went wrong!'); // => 'Error: Something went wrong!' - */ -declare function partialRight(func: (...args: any[]) => any, ...args: any[]): (...args: any[]) => any; -declare namespace partialRight { - var placeholder: typeof placeholderSymbol; -} -declare const placeholderSymbol: unique symbol; -type Placeholder = typeof placeholderSymbol; - -export { partialRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/partialRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/partialRight.d.ts deleted file mode 100644 index ac77e39..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/partialRight.d.ts +++ /dev/null @@ -1,628 +0,0 @@ -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template R The return type of the function. - * @param {() => R} func The function to invoke. - * @returns {() => R} Returns the new function. - * @example - * const getValue = () => 42; - * const getValueFunc = partialRight(getValue); - * console.log(getValueFunc()); // => 42 - */ -declare function partialRight(func: () => R): () => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template R The return type of the function. - * @param {(arg1: T1) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @returns {() => R} Returns the new partially applied function. - * @example - * const addOne = (num: number) => num + 1; - * const addOneFunc = partialRight(addOne, 1); - * console.log(addOneFunc()); // => 2 - */ -declare function partialRight(func: (arg1: T1) => R, arg1: T1): () => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template R The return type of the function. - * @param {(arg1: T1) => R} func The function to partially apply arguments to. - * @returns {(arg1: T1) => R} Returns the new partially applied function. - * @example - * const multiplyBy = (factor: number) => (num: number) => num * factor; - * const double = partialRight(multiplyBy(2)); - * console.log(double(5)); // => 10 - */ -declare function partialRight(func: (arg1: T1) => R): (arg1: T1) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template R The return type of the function. - * @param {(arg1: T1) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @returns {() => R} Returns the new partially applied function. - * @example - * const greet = (name: string) => `Hello, ${name}!`; - * const greetJohn = partialRight(greet, 'John'); - * console.log(greetJohn()); // => 'Hello, John!' - */ -declare function partialRight(func: (arg1: T1) => R, arg1: T1): () => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2) => R} func The function to partially apply arguments to. - * @returns {(arg1: T1, arg2: T2) => R} Returns the new partially applied function. - * @example - * const subtract = (a: number, b: number) => a - b; - * const subtractFive = partialRight(subtract); - * console.log(subtractFive(10, 5)); // => 5 - */ -declare function partialRight(func: (arg1: T1, arg2: T2) => R): (arg1: T1, arg2: T2) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @returns {(arg2: T2) => R} Returns the new partially applied function. - * @example - * const concat = (a: string, b: string) => a + b; - * const concatWithHello = partialRight(concat, 'Hello', partialRight.placeholder); - * console.log(concatWithHello(' World!')); // => 'Hello World!' - */ -declare function partialRight(func: (arg1: T1, arg2: T2) => R, arg1: T1, arg2: Placeholder): (arg2: T2) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @returns {(arg1: T1) => R} Returns the new partially applied function. - * @example - * const divide = (a: number, b: number) => a / b; - * const divideByTwo = partialRight(divide, 2); - * console.log(divideByTwo(10)); // => 5 - */ -declare function partialRight(func: (arg1: T1, arg2: T2) => R, arg2: T2): (arg1: T1) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {T2} arg2 The second argument to be partially applied. - * @returns {() => R} Returns the new partially applied function. - * @example - * const multiply = (a: number, b: number) => a * b; - * const multiplyByThreeAndFour = partialRight(multiply, 3, 4); - * console.log(multiplyByThreeAndFour()); // => 12 - */ -declare function partialRight(func: (arg1: T1, arg2: T2) => R, arg1: T1, arg2: T2): () => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @returns {(arg1: T1, arg2: T2, arg3: T3) => R} Returns the new partially applied function. - * @example - * const sumThree = (a: number, b: number, c: number) => a + b + c; - * const sumWithFive = partialRight(sumThree); - * console.log(sumWithFive(1, 2, 5)); // => 8 - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R): (arg1: T1, arg2: T2, arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @returns {(arg2: T2, arg3: T3) => R} Returns the new partially applied function. - * @example - * const formatDate = (day: number, month: number, year: number) => `${day}/${month}/${year}`; - * const formatDateWithDay = partialRight(formatDate, 1, partialRight.placeholder, partialRight.placeholder); - * console.log(formatDateWithDay(12, 2023)); // => '1/12/2023' - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: T1, arg2: Placeholder, arg3: Placeholder): (arg2: T2, arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @returns {(arg1: T1, arg3: T3) => R} Returns the new partially applied function. - * @example - * const createUser = (name: string, age: number, country: string) => `${name}, ${age} years old from ${country}`; - * const createUserFromUSA = partialRight(createUser, 'USA', partialRight.placeholder); - * console.log(createUserFromUSA('John', 30)); // => 'John, 30 years old from USA' - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg2: T2, arg3: Placeholder): (arg1: T1, arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {T2} arg2 The second argument to be partially applied. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @returns {(arg3: T3) => R} Returns the new partially applied function. - * @example - * const logMessage = (level: string, message: string, timestamp: string) => `[${level}] ${message} at ${timestamp}`; - * const logError = partialRight(logMessage, 'ERROR', '2023-10-01'); - * console.log(logError('Something went wrong!')); // => '[ERROR] Something went wrong! at 2023-10-01' - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: T1, arg2: T2, arg3: Placeholder): (arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @param {T3} arg3 The third argument to be partially applied. - * @returns {(arg1: T1, arg2: T2) => R} Returns the new partially applied function. - * @example - * const calculateArea = (length: number, width: number) => length * width; - * const calculateAreaWithWidth = partialRight(calculateArea, 5); - * console.log(calculateAreaWithWidth(10)); // => 50 - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg3: T3): (arg1: T1, arg2: T2) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to be partially applied. - * @returns {(arg2: T2) => R} Returns the new partially applied function. - * @example - * const formatCurrency = (amount: number, currency: string) => `${amount} ${currency}`; - * const formatUSD = partialRight(formatCurrency, 100, partialRight.placeholder); - * console.log(formatUSD('USD')); // => '100 USD' - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: T1, arg2: Placeholder, arg3: T3): (arg2: T2) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @param {T3} arg3 The third argument to be partially applied. - * @returns {(arg1: T1) => R} Returns the new partially applied function. - * @example - * const createProfile = (name: string, age: number, country: string) => `${name}, ${age} from ${country}`; - * const createProfileFromCanada = partialRight(createProfile, 'Canada', 'John'); - * console.log(createProfileFromCanada(30)); // => 'John, 30 from Canada' - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg2: T2, arg3: T3): (arg1: T1) => R; -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3) => R, arg1: T1, arg2: T2, arg3: T3): () => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @returns {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} Returns a new function that takes four arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg2: T2, arg3: T3, arg4: T4) => R} Returns a new function that takes the second, third, and fourth arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: Placeholder, arg3: Placeholder, arg4: Placeholder): (arg2: T2, arg3: T3, arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg1: T1, arg3: T3, arg4: T4) => R} Returns a new function that takes the first, third, and fourth arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg2: T2, arg3: Placeholder, arg4: Placeholder): (arg1: T1, arg3: T3, arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {T2} arg2 The second argument to be partially applied. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg3: T3, arg4: T4) => R} Returns a new function that takes the third and fourth arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2, arg3: Placeholder, arg4: Placeholder): (arg3: T3, arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T3} arg3 The third argument to be partially applied. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg1: T1, arg2: T2, arg4: T4) => R} Returns a new function that takes the first, second, and fourth arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg3: T3, arg4: Placeholder): (arg1: T1, arg2: T2, arg4: T4) => R; -/** - * Creates a function that invokes `func` with the first argument, a placeholder for the second argument, - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to be partially applied. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg2: T2, arg4: T4) => R} Returns a new function that takes the second and fourth arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: Placeholder, arg3: T3, arg4: Placeholder): (arg2: T2, arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @param {T3} arg3 The third argument to be partially applied. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg1: T1, arg4: T4) => R} Returns a new function that takes the first and fourth arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg2: T2, arg3: T3, arg4: Placeholder): (arg1: T1, arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {T2} arg2 The second argument to be partially applied. - * @param {T3} arg3 The third argument to be partially applied. - * @param {Placeholder} arg4 The placeholder for the fourth argument. - * @returns {(arg4: T4) => R} Returns a new function that takes the fourth argument. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2, arg3: T3, arg4: Placeholder): (arg4: T4) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg1: T1, arg2: T2, arg3: T3) => R} Returns a new function that takes the first, second, and third arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg4: T4): (arg1: T1, arg2: T2, arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg2: T2, arg3: T3) => R} Returns a new function that takes the second and third arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: Placeholder, arg3: Placeholder, arg4: T4): (arg2: T2, arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg1: T1, arg3: T3) => R} Returns a new function that takes the first and third arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg2: T2, arg3: Placeholder, arg4: T4): (arg1: T1, arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {T2} arg2 The second argument to be partially applied. - * @param {Placeholder} arg3 The placeholder for the third argument. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg3: T3) => R} Returns a new function that takes the third argument. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2, arg3: Placeholder, arg4: T4): (arg3: T3) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T3} arg3 The third argument to be partially applied. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg1: T1, arg2: T2) => R} Returns a new function that takes the first and second arguments. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg3: T3, arg4: T4): (arg1: T1, arg2: T2) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {Placeholder} arg2 The placeholder for the second argument. - * @param {T3} arg3 The third argument to be partially applied. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg2: T2) => R} Returns a new function that takes the second argument. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: Placeholder, arg3: T3, arg4: T4): (arg2: T2) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T2} arg2 The second argument to be partially applied. - * @param {T3} arg3 The third argument to be partially applied. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {(arg1: T1) => R} Returns a new function that takes the first argument. - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg2: T2, arg3: T3, arg4: T4): (arg1: T1) => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template T1 The type of the first argument. - * @template T2 The type of the second argument. - * @template T3 The type of the third argument. - * @template T4 The type of the fourth argument. - * @template R The return type of the function. - * @param {(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R} func The function to partially apply arguments to. - * @param {T1} arg1 The first argument to be partially applied. - * @param {T2} arg2 The second argument to be partially applied. - * @param {T3} arg3 The third argument to be partially applied. - * @param {T4} arg4 The fourth argument to be partially applied. - * @returns {() => R} Returns the new partially applied function. - * @example - * const concatenate = (a: string, b: string, c: string, d: string) => a + b + c + d; - * const concatenateHelloWorld = partialRight(concatenate, 'Hello', ' ', 'World', '!'); - * console.log(concatenateHelloWorld()); // => 'Hello World!' - */ -declare function partialRight(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => R, arg1: T1, arg2: T2, arg3: T3, arg4: T4): () => R; -/** - * This method is like `partial` except that partially applied arguments are appended to the arguments it receives. - * - * The partialRight.placeholder value, which defaults to a `symbol`, may be used as a placeholder for partially applied arguments. - * - * Note: This method doesn't set the `length` property of partially applied functions. - * - * @template F The type of the function to partially apply. - * @param {F} func The function to partially apply arguments to. - * @param {...any[]} args The arguments to be partially applied. - * @returns {function(...args: any[]): ReturnType} Returns the new partially applied function. - * @example - * const log = (...messages: string[]) => console.log(...messages); - * const logError = partialRight(log, 'Error:'); - * logError('Something went wrong!'); // => 'Error: Something went wrong!' - */ -declare function partialRight(func: (...args: any[]) => any, ...args: any[]): (...args: any[]) => any; -declare namespace partialRight { - var placeholder: typeof placeholderSymbol; -} -declare const placeholderSymbol: unique symbol; -type Placeholder = typeof placeholderSymbol; - -export { partialRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/partialRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/partialRight.js deleted file mode 100644 index e9bab39..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/partialRight.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function partialRight(func, ...partialArgs) { - return partialRightImpl(func, placeholderSymbol, ...partialArgs); -} -function partialRightImpl(func, placeholder, ...partialArgs) { - const partialedRight = function (...providedArgs) { - const placeholderLength = partialArgs.filter(arg => arg === placeholder).length; - const rangeLength = Math.max(providedArgs.length - placeholderLength, 0); - const remainingArgs = providedArgs.slice(0, rangeLength); - let providedArgsIndex = rangeLength; - const substitutedArgs = partialArgs - .slice() - .map(arg => (arg === placeholder ? providedArgs[providedArgsIndex++] : arg)); - return func.apply(this, remainingArgs.concat(substitutedArgs)); - }; - if (func.prototype) { - partialedRight.prototype = Object.create(func.prototype); - } - return partialedRight; -} -const placeholderSymbol = Symbol('partialRight.placeholder'); -partialRight.placeholder = placeholderSymbol; - -exports.partialRight = partialRight; -exports.partialRightImpl = partialRightImpl; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/partialRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/partialRight.mjs deleted file mode 100644 index e155fb3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/partialRight.mjs +++ /dev/null @@ -1,23 +0,0 @@ -function partialRight(func, ...partialArgs) { - return partialRightImpl(func, placeholderSymbol, ...partialArgs); -} -function partialRightImpl(func, placeholder, ...partialArgs) { - const partialedRight = function (...providedArgs) { - const placeholderLength = partialArgs.filter(arg => arg === placeholder).length; - const rangeLength = Math.max(providedArgs.length - placeholderLength, 0); - const remainingArgs = providedArgs.slice(0, rangeLength); - let providedArgsIndex = rangeLength; - const substitutedArgs = partialArgs - .slice() - .map(arg => (arg === placeholder ? providedArgs[providedArgsIndex++] : arg)); - return func.apply(this, remainingArgs.concat(substitutedArgs)); - }; - if (func.prototype) { - partialedRight.prototype = Object.create(func.prototype); - } - return partialedRight; -} -const placeholderSymbol = Symbol('partialRight.placeholder'); -partialRight.placeholder = placeholderSymbol; - -export { partialRight, partialRightImpl }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/rest.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/rest.d.mts deleted file mode 100644 index bf26cae..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/rest.d.mts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Creates a function that transforms the arguments of the provided function `func`. - * The transformed arguments are passed to `func` such that the arguments starting from a specified index - * are grouped into an array, while the previous arguments are passed as individual elements. - * - * @template F - The type of the function being transformed. - * @param {F} func - The function whose arguments are to be transformed. - * @param {number} [startIndex=func.length - 1] - The index from which to start grouping the remaining arguments into an array. - * Defaults to `func.length - 1`, grouping all arguments after the last parameter. - * @returns {(...args: any[]) => ReturnType} A new function that, when called, returns the result of calling `func` with the transformed arguments. - * - * The transformed arguments are: - * - The first `start` arguments as individual elements. - * - The remaining arguments from index `start` onward grouped into an array. - * @example - * function fn(a, b, c) { - * return [a, b, c]; - * } - * - * // Using default start index (func.length - 1, which is 2 in this case) - * const transformedFn = rest(fn); - * console.log(transformedFn(1, 2, 3, 4)); // [1, 2, [3, 4]] - * - * // Using start index 1 - * const transformedFnWithStart = rest(fn, 1); - * console.log(transformedFnWithStart(1, 2, 3, 4)); // [1, [2, 3, 4]] - * - * // With fewer arguments than the start index - * console.log(transformedFn(1)); // [1, undefined, []] - */ -declare function rest any>(func: F, startIndex?: number): (...args: any[]) => ReturnType; - -export { rest }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/rest.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/rest.d.ts deleted file mode 100644 index bf26cae..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/rest.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Creates a function that transforms the arguments of the provided function `func`. - * The transformed arguments are passed to `func` such that the arguments starting from a specified index - * are grouped into an array, while the previous arguments are passed as individual elements. - * - * @template F - The type of the function being transformed. - * @param {F} func - The function whose arguments are to be transformed. - * @param {number} [startIndex=func.length - 1] - The index from which to start grouping the remaining arguments into an array. - * Defaults to `func.length - 1`, grouping all arguments after the last parameter. - * @returns {(...args: any[]) => ReturnType} A new function that, when called, returns the result of calling `func` with the transformed arguments. - * - * The transformed arguments are: - * - The first `start` arguments as individual elements. - * - The remaining arguments from index `start` onward grouped into an array. - * @example - * function fn(a, b, c) { - * return [a, b, c]; - * } - * - * // Using default start index (func.length - 1, which is 2 in this case) - * const transformedFn = rest(fn); - * console.log(transformedFn(1, 2, 3, 4)); // [1, 2, [3, 4]] - * - * // Using start index 1 - * const transformedFnWithStart = rest(fn, 1); - * console.log(transformedFnWithStart(1, 2, 3, 4)); // [1, [2, 3, 4]] - * - * // With fewer arguments than the start index - * console.log(transformedFn(1)); // [1, undefined, []] - */ -declare function rest any>(func: F, startIndex?: number): (...args: any[]) => ReturnType; - -export { rest }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/rest.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/rest.js deleted file mode 100644 index d0d4d54..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/rest.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function rest(func, startIndex = func.length - 1) { - return function (...args) { - const rest = args.slice(startIndex); - const params = args.slice(0, startIndex); - while (params.length < startIndex) { - params.push(undefined); - } - return func.apply(this, [...params, rest]); - }; -} - -exports.rest = rest; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/rest.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/rest.mjs deleted file mode 100644 index 88a48a0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/rest.mjs +++ /dev/null @@ -1,12 +0,0 @@ -function rest(func, startIndex = func.length - 1) { - return function (...args) { - const rest = args.slice(startIndex); - const params = args.slice(0, startIndex); - while (params.length < startIndex) { - params.push(undefined); - } - return func.apply(this, [...params, rest]); - }; -} - -export { rest }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/retry.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/retry.d.mts deleted file mode 100644 index 2222422..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/retry.d.mts +++ /dev/null @@ -1,90 +0,0 @@ -interface RetryOptions { - /** - * Delay between retries. Can be a static number (milliseconds) or a function - * that computes delay dynamically based on the current attempt. - * - * @default 0 - * @example - * delay: (attempts) => attempt * 50 - */ - delay?: number | ((attempts: number) => number); - /** - * The number of retries to attempt. - * @default Number.POSITIVE_INFINITY - */ - retries?: number; - /** - * An AbortSignal to cancel the retry operation. - */ - signal?: AbortSignal; - /** - * A function that determines whether to retry based on the error and attempt number. - * If not provided, all errors will trigger a retry. - * - * @param {unknown} error - The error that occurred. - * @param {number} attempt - The current attempt number (0-indexed). - * @returns {boolean} Whether to retry. - * - * @example - * shouldRetry: (error, attempt) => error.status >= 500 - */ - shouldRetry?: (error: unknown, attempt: number) => boolean; -} -/** - * Retries a function that returns a promise until it resolves successfully. - * - * @template T - * @param {() => Promise} func - The function to retry. - * @returns {Promise} A promise that resolves with the value of the successful function call. - * - * @example - * // Basic usage with default retry options - * retry(() => fetchData()).then(data => console.log(data)); - */ -declare function retry(func: () => Promise): Promise; -/** - * Retries a function that returns a promise a specified number of times. - * - * @template T - * @param {() => Promise} func - The function to retry. It should return a promise. - * @param {number} retries - The number of retries to attempt. Default is Infinity. - * @returns {Promise} A promise that resolves with the value of the successful function call. - * - * @example - * // Retry a function up to 3 times - * retry(() => fetchData(), 3).then(data => console.log(data)); - */ -declare function retry(func: () => Promise, retries: number): Promise; -/** - * Retries a function that returns a promise with specified options. - * - * @template T - * @param {() => Promise} func - The function to retry. It should return a promise. - * @param {RetryOptions} options - Options to configure the retry behavior. - * @param {number | ((attempts: number) => number)} [options.delay=0] - Delay(milliseconds) between retries. - * @param {number} [options.retries=Infinity] - The number of retries to attempt. - * @param {AbortSignal} [options.signal] - An AbortSignal to cancel the retry operation. - * @param {(error: unknown, attempt: number) => boolean} [options.shouldRetry] - A function that determines whether to retry. - * @returns {Promise} A promise that resolves with the value of the successful function call. - * - * @example - * // Retry a function with a delay of 1000ms between attempts - * retry(() => fetchData(), { delay: 1000, times: 5 }).then(data => console.log(data)); - * - * @example - * // Retry a function with a fixed delay - * retry(() => fetchData(), { delay: 1000, retries: 5 }); - * - * // Retry a function with a delay increasing linearly by 50ms per attempt - * retry(() => fetchData(), { delay: (attempts) => attempt * 50, retries: 5 }); - * - * @example - * // Retry a function with exponential backoff + jitter (max delay 10 seconds) - * retry(() => fetchData(), { - * delay: (attempts) => Math.min(Math.random() * 100 * 2 ** attempts, 10000), - * retries: 5 - * }); - */ -declare function retry(func: () => Promise, options: RetryOptions): Promise; - -export { retry }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/retry.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/retry.d.ts deleted file mode 100644 index 2222422..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/retry.d.ts +++ /dev/null @@ -1,90 +0,0 @@ -interface RetryOptions { - /** - * Delay between retries. Can be a static number (milliseconds) or a function - * that computes delay dynamically based on the current attempt. - * - * @default 0 - * @example - * delay: (attempts) => attempt * 50 - */ - delay?: number | ((attempts: number) => number); - /** - * The number of retries to attempt. - * @default Number.POSITIVE_INFINITY - */ - retries?: number; - /** - * An AbortSignal to cancel the retry operation. - */ - signal?: AbortSignal; - /** - * A function that determines whether to retry based on the error and attempt number. - * If not provided, all errors will trigger a retry. - * - * @param {unknown} error - The error that occurred. - * @param {number} attempt - The current attempt number (0-indexed). - * @returns {boolean} Whether to retry. - * - * @example - * shouldRetry: (error, attempt) => error.status >= 500 - */ - shouldRetry?: (error: unknown, attempt: number) => boolean; -} -/** - * Retries a function that returns a promise until it resolves successfully. - * - * @template T - * @param {() => Promise} func - The function to retry. - * @returns {Promise} A promise that resolves with the value of the successful function call. - * - * @example - * // Basic usage with default retry options - * retry(() => fetchData()).then(data => console.log(data)); - */ -declare function retry(func: () => Promise): Promise; -/** - * Retries a function that returns a promise a specified number of times. - * - * @template T - * @param {() => Promise} func - The function to retry. It should return a promise. - * @param {number} retries - The number of retries to attempt. Default is Infinity. - * @returns {Promise} A promise that resolves with the value of the successful function call. - * - * @example - * // Retry a function up to 3 times - * retry(() => fetchData(), 3).then(data => console.log(data)); - */ -declare function retry(func: () => Promise, retries: number): Promise; -/** - * Retries a function that returns a promise with specified options. - * - * @template T - * @param {() => Promise} func - The function to retry. It should return a promise. - * @param {RetryOptions} options - Options to configure the retry behavior. - * @param {number | ((attempts: number) => number)} [options.delay=0] - Delay(milliseconds) between retries. - * @param {number} [options.retries=Infinity] - The number of retries to attempt. - * @param {AbortSignal} [options.signal] - An AbortSignal to cancel the retry operation. - * @param {(error: unknown, attempt: number) => boolean} [options.shouldRetry] - A function that determines whether to retry. - * @returns {Promise} A promise that resolves with the value of the successful function call. - * - * @example - * // Retry a function with a delay of 1000ms between attempts - * retry(() => fetchData(), { delay: 1000, times: 5 }).then(data => console.log(data)); - * - * @example - * // Retry a function with a fixed delay - * retry(() => fetchData(), { delay: 1000, retries: 5 }); - * - * // Retry a function with a delay increasing linearly by 50ms per attempt - * retry(() => fetchData(), { delay: (attempts) => attempt * 50, retries: 5 }); - * - * @example - * // Retry a function with exponential backoff + jitter (max delay 10 seconds) - * retry(() => fetchData(), { - * delay: (attempts) => Math.min(Math.random() * 100 * 2 ** attempts, 10000), - * retries: 5 - * }); - */ -declare function retry(func: () => Promise, options: RetryOptions): Promise; - -export { retry }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/retry.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/retry.js deleted file mode 100644 index 977cbff..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/retry.js +++ /dev/null @@ -1,47 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const delay = require('../promise/delay.js'); - -const DEFAULT_DELAY = 0; -const DEFAULT_RETRIES = Number.POSITIVE_INFINITY; -const DEFAULT_SHOULD_RETRY = () => true; -async function retry(func, _options) { - let delay$1; - let retries; - let signal; - let shouldRetry; - if (typeof _options === 'number') { - delay$1 = DEFAULT_DELAY; - retries = _options; - signal = undefined; - shouldRetry = DEFAULT_SHOULD_RETRY; - } - else { - delay$1 = _options?.delay ?? DEFAULT_DELAY; - retries = _options?.retries ?? DEFAULT_RETRIES; - signal = _options?.signal; - shouldRetry = _options?.shouldRetry ?? DEFAULT_SHOULD_RETRY; - } - let error; - for (let attempts = 0; attempts < retries; attempts++) { - if (signal?.aborted) { - throw error ?? new Error(`The retry operation was aborted due to an abort signal.`); - } - try { - return await func(); - } - catch (err) { - error = err; - if (!shouldRetry(err, attempts)) { - throw err; - } - const currentDelay = typeof delay$1 === 'function' ? delay$1(attempts) : delay$1; - await delay.delay(currentDelay); - } - } - throw error; -} - -exports.retry = retry; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/retry.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/retry.mjs deleted file mode 100644 index e255d4b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/retry.mjs +++ /dev/null @@ -1,43 +0,0 @@ -import { delay } from '../promise/delay.mjs'; - -const DEFAULT_DELAY = 0; -const DEFAULT_RETRIES = Number.POSITIVE_INFINITY; -const DEFAULT_SHOULD_RETRY = () => true; -async function retry(func, _options) { - let delay$1; - let retries; - let signal; - let shouldRetry; - if (typeof _options === 'number') { - delay$1 = DEFAULT_DELAY; - retries = _options; - signal = undefined; - shouldRetry = DEFAULT_SHOULD_RETRY; - } - else { - delay$1 = _options?.delay ?? DEFAULT_DELAY; - retries = _options?.retries ?? DEFAULT_RETRIES; - signal = _options?.signal; - shouldRetry = _options?.shouldRetry ?? DEFAULT_SHOULD_RETRY; - } - let error; - for (let attempts = 0; attempts < retries; attempts++) { - if (signal?.aborted) { - throw error ?? new Error(`The retry operation was aborted due to an abort signal.`); - } - try { - return await func(); - } - catch (err) { - error = err; - if (!shouldRetry(err, attempts)) { - throw err; - } - const currentDelay = typeof delay$1 === 'function' ? delay$1(attempts) : delay$1; - await delay(currentDelay); - } - } - throw error; -} - -export { retry }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/spread.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/spread.d.mts deleted file mode 100644 index d8463ff..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/spread.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Creates a new function that spreads elements of an array argument into individual arguments - * for the original function. - * - * @template F - A function type with any number of parameters and any return type. - * @param {F} func - The function to be transformed. It can be any function with any number of arguments. - * @returns {(argsArr: Parameters) => ReturnType} - A new function that takes an array of arguments and returns the result of calling the original function with those arguments. - * - * @example - * function add(a, b) { - * return a + b; - * } - * - * const spreadAdd = spread(add); - * console.log(spreadAdd([1, 2])); // Output: 3 - */ -declare function spread any>(func: F): (argsArr: Parameters) => ReturnType; - -export { spread }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/spread.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/spread.d.ts deleted file mode 100644 index d8463ff..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/spread.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Creates a new function that spreads elements of an array argument into individual arguments - * for the original function. - * - * @template F - A function type with any number of parameters and any return type. - * @param {F} func - The function to be transformed. It can be any function with any number of arguments. - * @returns {(argsArr: Parameters) => ReturnType} - A new function that takes an array of arguments and returns the result of calling the original function with those arguments. - * - * @example - * function add(a, b) { - * return a + b; - * } - * - * const spreadAdd = spread(add); - * console.log(spreadAdd([1, 2])); // Output: 3 - */ -declare function spread any>(func: F): (argsArr: Parameters) => ReturnType; - -export { spread }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/spread.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/spread.js deleted file mode 100644 index 5d98b37..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/spread.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function spread(func) { - return function (argsArr) { - return func.apply(this, argsArr); - }; -} - -exports.spread = spread; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/spread.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/spread.mjs deleted file mode 100644 index a446f73..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/spread.mjs +++ /dev/null @@ -1,7 +0,0 @@ -function spread(func) { - return function (argsArr) { - return func.apply(this, argsArr); - }; -} - -export { spread }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/throttle.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/throttle.d.mts deleted file mode 100644 index e4e657e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/throttle.d.mts +++ /dev/null @@ -1,48 +0,0 @@ -interface ThrottleOptions { - /** - * An optional AbortSignal to cancel the throttled function. - */ - signal?: AbortSignal; - /** - * An optional array specifying whether the function should be invoked on the leading edge, trailing edge, or both. - * If `edges` includes "leading", the function will be invoked at the start of the delay period. - * If `edges` includes "trailing", the function will be invoked at the end of the delay period. - * If both "leading" and "trailing" are included, the function will be invoked at both the start and end of the delay period. - * @default ["leading", "trailing"] - */ - edges?: Array<'leading' | 'trailing'>; -} -interface ThrottledFunction void> { - (...args: Parameters): void; - cancel: () => void; - flush: () => void; -} -/** - * Creates a throttled function that only invokes the provided function at most once - * per every `throttleMs` milliseconds. Subsequent calls to the throttled function - * within the wait time will not trigger the execution of the original function. - * - * @template F - The type of function. - * @param {F} func - The function to throttle. - * @param {number} throttleMs - The number of milliseconds to throttle executions to. - * @returns {(...args: Parameters) => void} A new throttled function that accepts the same parameters as the original function. - * - * @example - * const throttledFunction = throttle(() => { - * console.log('Function executed'); - * }, 1000); - * - * // Will log 'Function executed' immediately - * throttledFunction(); - * - * // Will not log anything as it is within the throttle time - * throttledFunction(); - * - * // After 1 second - * setTimeout(() => { - * throttledFunction(); // Will log 'Function executed' - * }, 1000); - */ -declare function throttle void>(func: F, throttleMs: number, { signal, edges }?: ThrottleOptions): ThrottledFunction; - -export { type ThrottleOptions, type ThrottledFunction, throttle }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/throttle.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/throttle.d.ts deleted file mode 100644 index e4e657e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/throttle.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -interface ThrottleOptions { - /** - * An optional AbortSignal to cancel the throttled function. - */ - signal?: AbortSignal; - /** - * An optional array specifying whether the function should be invoked on the leading edge, trailing edge, or both. - * If `edges` includes "leading", the function will be invoked at the start of the delay period. - * If `edges` includes "trailing", the function will be invoked at the end of the delay period. - * If both "leading" and "trailing" are included, the function will be invoked at both the start and end of the delay period. - * @default ["leading", "trailing"] - */ - edges?: Array<'leading' | 'trailing'>; -} -interface ThrottledFunction void> { - (...args: Parameters): void; - cancel: () => void; - flush: () => void; -} -/** - * Creates a throttled function that only invokes the provided function at most once - * per every `throttleMs` milliseconds. Subsequent calls to the throttled function - * within the wait time will not trigger the execution of the original function. - * - * @template F - The type of function. - * @param {F} func - The function to throttle. - * @param {number} throttleMs - The number of milliseconds to throttle executions to. - * @returns {(...args: Parameters) => void} A new throttled function that accepts the same parameters as the original function. - * - * @example - * const throttledFunction = throttle(() => { - * console.log('Function executed'); - * }, 1000); - * - * // Will log 'Function executed' immediately - * throttledFunction(); - * - * // Will not log anything as it is within the throttle time - * throttledFunction(); - * - * // After 1 second - * setTimeout(() => { - * throttledFunction(); // Will log 'Function executed' - * }, 1000); - */ -declare function throttle void>(func: F, throttleMs: number, { signal, edges }?: ThrottleOptions): ThrottledFunction; - -export { type ThrottleOptions, type ThrottledFunction, throttle }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/throttle.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/throttle.js deleted file mode 100644 index 274b5c0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/throttle.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const debounce = require('./debounce.js'); - -function throttle(func, throttleMs, { signal, edges = ['leading', 'trailing'] } = {}) { - let pendingAt = null; - const debounced = debounce.debounce(function (...args) { - pendingAt = Date.now(); - func.apply(this, args); - }, throttleMs, { signal, edges }); - const throttled = function (...args) { - if (pendingAt == null) { - pendingAt = Date.now(); - } - if (Date.now() - pendingAt >= throttleMs) { - pendingAt = Date.now(); - func.apply(this, args); - debounced.cancel(); - debounced.schedule(); - return; - } - debounced.apply(this, args); - }; - throttled.cancel = debounced.cancel; - throttled.flush = debounced.flush; - return throttled; -} - -exports.throttle = throttle; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/throttle.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/throttle.mjs deleted file mode 100644 index e80cc93..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/throttle.mjs +++ /dev/null @@ -1,27 +0,0 @@ -import { debounce } from './debounce.mjs'; - -function throttle(func, throttleMs, { signal, edges = ['leading', 'trailing'] } = {}) { - let pendingAt = null; - const debounced = debounce(function (...args) { - pendingAt = Date.now(); - func.apply(this, args); - }, throttleMs, { signal, edges }); - const throttled = function (...args) { - if (pendingAt == null) { - pendingAt = Date.now(); - } - if (Date.now() - pendingAt >= throttleMs) { - pendingAt = Date.now(); - func.apply(this, args); - debounced.cancel(); - debounced.schedule(); - return; - } - debounced.apply(this, args); - }; - throttled.cancel = debounced.cancel; - throttled.flush = debounced.flush; - return throttled; -} - -export { throttle }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/unary.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/function/unary.d.mts deleted file mode 100644 index 5973303..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/unary.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Creates a function that accepts up to one argument, ignoring any additional arguments. - * - * @template F - The type of the function. - * @param {F} func - The function to cap arguments for. - * @returns {(...args: any[]) => ReturnType} Returns the new capped function. - * - * @example - * function fn(a, b, c) { - * console.log(arguments); - * } - * - * unary(fn)(1, 2, 3); // [Arguments] { '0': 1 } - */ -declare function unary any>(func: F): (...args: any[]) => ReturnType; - -export { unary }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/unary.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/function/unary.d.ts deleted file mode 100644 index 5973303..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/unary.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Creates a function that accepts up to one argument, ignoring any additional arguments. - * - * @template F - The type of the function. - * @param {F} func - The function to cap arguments for. - * @returns {(...args: any[]) => ReturnType} Returns the new capped function. - * - * @example - * function fn(a, b, c) { - * console.log(arguments); - * } - * - * unary(fn)(1, 2, 3); // [Arguments] { '0': 1 } - */ -declare function unary any>(func: F): (...args: any[]) => ReturnType; - -export { unary }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/unary.js b/sdks/nodejs/node_modules/es-toolkit/dist/function/unary.js deleted file mode 100644 index d56f056..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/unary.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const ary = require('./ary.js'); - -function unary(func) { - return ary.ary(func, 1); -} - -exports.unary = unary; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/function/unary.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/function/unary.mjs deleted file mode 100644 index f4b2cb1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/function/unary.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { ary } from './ary.mjs'; - -function unary(func) { - return ary(func, 1); -} - -export { unary }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/index.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/index.d.mts deleted file mode 100644 index 2970fb2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/index.d.mts +++ /dev/null @@ -1,180 +0,0 @@ -export { at } from './array/at.mjs'; -export { chunk } from './array/chunk.mjs'; -export { compact } from './array/compact.mjs'; -export { countBy } from './array/countBy.mjs'; -export { difference } from './array/difference.mjs'; -export { differenceBy } from './array/differenceBy.mjs'; -export { differenceWith } from './array/differenceWith.mjs'; -export { drop } from './array/drop.mjs'; -export { dropRight } from './array/dropRight.mjs'; -export { dropRightWhile } from './array/dropRightWhile.mjs'; -export { dropWhile } from './array/dropWhile.mjs'; -export { fill } from './array/fill.mjs'; -export { filterAsync } from './array/filterAsync.mjs'; -export { flatMap } from './array/flatMap.mjs'; -export { flatMapAsync } from './array/flatMapAsync.mjs'; -export { flatMapDeep } from './array/flatMapDeep.mjs'; -export { flatten } from './array/flatten.mjs'; -export { flattenDeep } from './array/flattenDeep.mjs'; -export { forEachAsync } from './array/forEachAsync.mjs'; -export { forEachRight } from './array/forEachRight.mjs'; -export { groupBy } from './array/groupBy.mjs'; -export { head } from './array/head.mjs'; -export { initial } from './array/initial.mjs'; -export { intersection } from './array/intersection.mjs'; -export { intersectionBy } from './array/intersectionBy.mjs'; -export { intersectionWith } from './array/intersectionWith.mjs'; -export { isSubset } from './array/isSubset.mjs'; -export { isSubsetWith } from './array/isSubsetWith.mjs'; -export { keyBy } from './array/keyBy.mjs'; -export { last } from './array/last.mjs'; -export { limitAsync } from './array/limitAsync.mjs'; -export { mapAsync } from './array/mapAsync.mjs'; -export { maxBy } from './array/maxBy.mjs'; -export { minBy } from './array/minBy.mjs'; -export { orderBy } from './array/orderBy.mjs'; -export { partition } from './array/partition.mjs'; -export { pull } from './array/pull.mjs'; -export { pullAt } from './array/pullAt.mjs'; -export { reduceAsync } from './array/reduceAsync.mjs'; -export { remove } from './array/remove.mjs'; -export { sample } from './array/sample.mjs'; -export { sampleSize } from './array/sampleSize.mjs'; -export { shuffle } from './array/shuffle.mjs'; -export { sortBy } from './array/sortBy.mjs'; -export { tail } from './array/tail.mjs'; -export { take } from './array/take.mjs'; -export { takeRight } from './array/takeRight.mjs'; -export { takeRightWhile } from './array/takeRightWhile.mjs'; -export { takeWhile } from './array/takeWhile.mjs'; -export { toFilled } from './array/toFilled.mjs'; -export { union } from './array/union.mjs'; -export { unionBy } from './array/unionBy.mjs'; -export { unionWith } from './array/unionWith.mjs'; -export { uniq } from './array/uniq.mjs'; -export { uniqBy } from './array/uniqBy.mjs'; -export { uniqWith } from './array/uniqWith.mjs'; -export { unzip } from './array/unzip.mjs'; -export { unzipWith } from './array/unzipWith.mjs'; -export { windowed } from './array/windowed.mjs'; -export { without } from './array/without.mjs'; -export { xor } from './array/xor.mjs'; -export { xorBy } from './array/xorBy.mjs'; -export { xorWith } from './array/xorWith.mjs'; -export { zip } from './array/zip.mjs'; -export { zipObject } from './array/zipObject.mjs'; -export { zipWith } from './array/zipWith.mjs'; -export { AbortError } from './error/AbortError.mjs'; -export { TimeoutError } from './error/TimeoutError.mjs'; -export { after } from './function/after.mjs'; -export { ary } from './function/ary.mjs'; -export { asyncNoop } from './function/asyncNoop.mjs'; -export { before } from './function/before.mjs'; -export { curry } from './function/curry.mjs'; -export { curryRight } from './function/curryRight.mjs'; -export { DebounceOptions, DebouncedFunction, debounce } from './function/debounce.mjs'; -export { flow } from './function/flow.mjs'; -export { flowRight } from './function/flowRight.mjs'; -export { identity } from './function/identity.mjs'; -export { MemoizeCache, memoize } from './function/memoize.mjs'; -export { negate } from './function/negate.mjs'; -export { noop } from './function/noop.mjs'; -export { once } from './function/once.mjs'; -export { partial } from './function/partial.mjs'; -export { partialRight } from './function/partialRight.mjs'; -export { rest } from './function/rest.mjs'; -export { retry } from './function/retry.mjs'; -export { spread } from './function/spread.mjs'; -export { ThrottleOptions, ThrottledFunction, throttle } from './function/throttle.mjs'; -export { unary } from './function/unary.mjs'; -export { clamp } from './math/clamp.mjs'; -export { inRange } from './math/inRange.mjs'; -export { mean } from './math/mean.mjs'; -export { meanBy } from './math/meanBy.mjs'; -export { median } from './math/median.mjs'; -export { medianBy } from './math/medianBy.mjs'; -export { random } from './math/random.mjs'; -export { randomInt } from './math/randomInt.mjs'; -export { range } from './math/range.mjs'; -export { rangeRight } from './math/rangeRight.mjs'; -export { round } from './math/round.mjs'; -export { sum } from './math/sum.mjs'; -export { sumBy } from './math/sumBy.mjs'; -export { clone } from './object/clone.mjs'; -export { cloneDeep } from './object/cloneDeep.mjs'; -export { cloneDeepWith } from './object/cloneDeepWith.mjs'; -export { findKey } from './object/findKey.mjs'; -export { flattenObject } from './object/flattenObject.mjs'; -export { invert } from './object/invert.mjs'; -export { mapKeys } from './object/mapKeys.mjs'; -export { mapValues } from './object/mapValues.mjs'; -export { merge } from './object/merge.mjs'; -export { mergeWith } from './object/mergeWith.mjs'; -export { omit } from './object/omit.mjs'; -export { omitBy } from './object/omitBy.mjs'; -export { pick } from './object/pick.mjs'; -export { pickBy } from './object/pickBy.mjs'; -export { toCamelCaseKeys } from './object/toCamelCaseKeys.mjs'; -export { toMerged } from './object/toMerged.mjs'; -export { toSnakeCaseKeys } from './object/toSnakeCaseKeys.mjs'; -export { isArrayBuffer } from './predicate/isArrayBuffer.mjs'; -export { isBlob } from './predicate/isBlob.mjs'; -export { isBoolean } from './predicate/isBoolean.mjs'; -export { isBrowser } from './predicate/isBrowser.mjs'; -export { isBuffer } from './predicate/isBuffer.mjs'; -export { isDate } from './predicate/isDate.mjs'; -export { isEmptyObject } from './predicate/isEmptyObject.mjs'; -export { isEqual } from './predicate/isEqual.mjs'; -export { isEqualWith } from './predicate/isEqualWith.mjs'; -export { isError } from './predicate/isError.mjs'; -export { isFile } from './predicate/isFile.mjs'; -export { isFunction } from './predicate/isFunction.mjs'; -export { isJSON } from './predicate/isJSON.mjs'; -export { isJSONArray, isJSONObject, isJSONValue } from './predicate/isJSONValue.mjs'; -export { isLength } from './predicate/isLength.mjs'; -export { isMap } from './predicate/isMap.mjs'; -export { isNil } from './predicate/isNil.mjs'; -export { isNode } from './predicate/isNode.mjs'; -export { isNotNil } from './predicate/isNotNil.mjs'; -export { isNull } from './predicate/isNull.mjs'; -export { isNumber } from './predicate/isNumber.mjs'; -export { isPlainObject } from './predicate/isPlainObject.mjs'; -export { isPrimitive } from './predicate/isPrimitive.mjs'; -export { isPromise } from './predicate/isPromise.mjs'; -export { isRegExp } from './predicate/isRegExp.mjs'; -export { isSet } from './predicate/isSet.mjs'; -export { isString } from './predicate/isString.mjs'; -export { isSymbol } from './predicate/isSymbol.mjs'; -export { isTypedArray } from './predicate/isTypedArray.mjs'; -export { isUndefined } from './predicate/isUndefined.mjs'; -export { isWeakMap } from './predicate/isWeakMap.mjs'; -export { isWeakSet } from './predicate/isWeakSet.mjs'; -export { delay } from './promise/delay.mjs'; -export { Mutex } from './promise/mutex.mjs'; -export { Semaphore } from './promise/semaphore.mjs'; -export { timeout } from './promise/timeout.mjs'; -export { withTimeout } from './promise/withTimeout.mjs'; -export { camelCase } from './string/camelCase.mjs'; -export { capitalize } from './string/capitalize.mjs'; -export { constantCase } from './string/constantCase.mjs'; -export { deburr } from './string/deburr.mjs'; -export { escape } from './string/escape.mjs'; -export { escapeRegExp } from './string/escapeRegExp.mjs'; -export { kebabCase } from './string/kebabCase.mjs'; -export { lowerCase } from './string/lowerCase.mjs'; -export { lowerFirst } from './string/lowerFirst.mjs'; -export { pad } from './string/pad.mjs'; -export { pascalCase } from './string/pascalCase.mjs'; -export { reverseString } from './string/reverseString.mjs'; -export { snakeCase } from './string/snakeCase.mjs'; -export { startCase } from './string/startCase.mjs'; -export { trim } from './string/trim.mjs'; -export { trimEnd } from './string/trimEnd.mjs'; -export { trimStart } from './string/trimStart.mjs'; -export { unescape } from './string/unescape.mjs'; -export { upperCase } from './string/upperCase.mjs'; -export { upperFirst } from './string/upperFirst.mjs'; -export { words } from './string/words.mjs'; -export { attempt } from './util/attempt.mjs'; -export { attemptAsync } from './util/attemptAsync.mjs'; -export { invariant as assert, invariant } from './util/invariant.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/index.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/index.d.ts deleted file mode 100644 index 2af47c6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/index.d.ts +++ /dev/null @@ -1,180 +0,0 @@ -export { at } from './array/at.js'; -export { chunk } from './array/chunk.js'; -export { compact } from './array/compact.js'; -export { countBy } from './array/countBy.js'; -export { difference } from './array/difference.js'; -export { differenceBy } from './array/differenceBy.js'; -export { differenceWith } from './array/differenceWith.js'; -export { drop } from './array/drop.js'; -export { dropRight } from './array/dropRight.js'; -export { dropRightWhile } from './array/dropRightWhile.js'; -export { dropWhile } from './array/dropWhile.js'; -export { fill } from './array/fill.js'; -export { filterAsync } from './array/filterAsync.js'; -export { flatMap } from './array/flatMap.js'; -export { flatMapAsync } from './array/flatMapAsync.js'; -export { flatMapDeep } from './array/flatMapDeep.js'; -export { flatten } from './array/flatten.js'; -export { flattenDeep } from './array/flattenDeep.js'; -export { forEachAsync } from './array/forEachAsync.js'; -export { forEachRight } from './array/forEachRight.js'; -export { groupBy } from './array/groupBy.js'; -export { head } from './array/head.js'; -export { initial } from './array/initial.js'; -export { intersection } from './array/intersection.js'; -export { intersectionBy } from './array/intersectionBy.js'; -export { intersectionWith } from './array/intersectionWith.js'; -export { isSubset } from './array/isSubset.js'; -export { isSubsetWith } from './array/isSubsetWith.js'; -export { keyBy } from './array/keyBy.js'; -export { last } from './array/last.js'; -export { limitAsync } from './array/limitAsync.js'; -export { mapAsync } from './array/mapAsync.js'; -export { maxBy } from './array/maxBy.js'; -export { minBy } from './array/minBy.js'; -export { orderBy } from './array/orderBy.js'; -export { partition } from './array/partition.js'; -export { pull } from './array/pull.js'; -export { pullAt } from './array/pullAt.js'; -export { reduceAsync } from './array/reduceAsync.js'; -export { remove } from './array/remove.js'; -export { sample } from './array/sample.js'; -export { sampleSize } from './array/sampleSize.js'; -export { shuffle } from './array/shuffle.js'; -export { sortBy } from './array/sortBy.js'; -export { tail } from './array/tail.js'; -export { take } from './array/take.js'; -export { takeRight } from './array/takeRight.js'; -export { takeRightWhile } from './array/takeRightWhile.js'; -export { takeWhile } from './array/takeWhile.js'; -export { toFilled } from './array/toFilled.js'; -export { union } from './array/union.js'; -export { unionBy } from './array/unionBy.js'; -export { unionWith } from './array/unionWith.js'; -export { uniq } from './array/uniq.js'; -export { uniqBy } from './array/uniqBy.js'; -export { uniqWith } from './array/uniqWith.js'; -export { unzip } from './array/unzip.js'; -export { unzipWith } from './array/unzipWith.js'; -export { windowed } from './array/windowed.js'; -export { without } from './array/without.js'; -export { xor } from './array/xor.js'; -export { xorBy } from './array/xorBy.js'; -export { xorWith } from './array/xorWith.js'; -export { zip } from './array/zip.js'; -export { zipObject } from './array/zipObject.js'; -export { zipWith } from './array/zipWith.js'; -export { AbortError } from './error/AbortError.js'; -export { TimeoutError } from './error/TimeoutError.js'; -export { after } from './function/after.js'; -export { ary } from './function/ary.js'; -export { asyncNoop } from './function/asyncNoop.js'; -export { before } from './function/before.js'; -export { curry } from './function/curry.js'; -export { curryRight } from './function/curryRight.js'; -export { DebounceOptions, DebouncedFunction, debounce } from './function/debounce.js'; -export { flow } from './function/flow.js'; -export { flowRight } from './function/flowRight.js'; -export { identity } from './function/identity.js'; -export { MemoizeCache, memoize } from './function/memoize.js'; -export { negate } from './function/negate.js'; -export { noop } from './function/noop.js'; -export { once } from './function/once.js'; -export { partial } from './function/partial.js'; -export { partialRight } from './function/partialRight.js'; -export { rest } from './function/rest.js'; -export { retry } from './function/retry.js'; -export { spread } from './function/spread.js'; -export { ThrottleOptions, ThrottledFunction, throttle } from './function/throttle.js'; -export { unary } from './function/unary.js'; -export { clamp } from './math/clamp.js'; -export { inRange } from './math/inRange.js'; -export { mean } from './math/mean.js'; -export { meanBy } from './math/meanBy.js'; -export { median } from './math/median.js'; -export { medianBy } from './math/medianBy.js'; -export { random } from './math/random.js'; -export { randomInt } from './math/randomInt.js'; -export { range } from './math/range.js'; -export { rangeRight } from './math/rangeRight.js'; -export { round } from './math/round.js'; -export { sum } from './math/sum.js'; -export { sumBy } from './math/sumBy.js'; -export { clone } from './object/clone.js'; -export { cloneDeep } from './object/cloneDeep.js'; -export { cloneDeepWith } from './object/cloneDeepWith.js'; -export { findKey } from './object/findKey.js'; -export { flattenObject } from './object/flattenObject.js'; -export { invert } from './object/invert.js'; -export { mapKeys } from './object/mapKeys.js'; -export { mapValues } from './object/mapValues.js'; -export { merge } from './object/merge.js'; -export { mergeWith } from './object/mergeWith.js'; -export { omit } from './object/omit.js'; -export { omitBy } from './object/omitBy.js'; -export { pick } from './object/pick.js'; -export { pickBy } from './object/pickBy.js'; -export { toCamelCaseKeys } from './object/toCamelCaseKeys.js'; -export { toMerged } from './object/toMerged.js'; -export { toSnakeCaseKeys } from './object/toSnakeCaseKeys.js'; -export { isArrayBuffer } from './predicate/isArrayBuffer.js'; -export { isBlob } from './predicate/isBlob.js'; -export { isBoolean } from './predicate/isBoolean.js'; -export { isBrowser } from './predicate/isBrowser.js'; -export { isBuffer } from './predicate/isBuffer.js'; -export { isDate } from './predicate/isDate.js'; -export { isEmptyObject } from './predicate/isEmptyObject.js'; -export { isEqual } from './predicate/isEqual.js'; -export { isEqualWith } from './predicate/isEqualWith.js'; -export { isError } from './predicate/isError.js'; -export { isFile } from './predicate/isFile.js'; -export { isFunction } from './predicate/isFunction.js'; -export { isJSON } from './predicate/isJSON.js'; -export { isJSONArray, isJSONObject, isJSONValue } from './predicate/isJSONValue.js'; -export { isLength } from './predicate/isLength.js'; -export { isMap } from './predicate/isMap.js'; -export { isNil } from './predicate/isNil.js'; -export { isNode } from './predicate/isNode.js'; -export { isNotNil } from './predicate/isNotNil.js'; -export { isNull } from './predicate/isNull.js'; -export { isNumber } from './predicate/isNumber.js'; -export { isPlainObject } from './predicate/isPlainObject.js'; -export { isPrimitive } from './predicate/isPrimitive.js'; -export { isPromise } from './predicate/isPromise.js'; -export { isRegExp } from './predicate/isRegExp.js'; -export { isSet } from './predicate/isSet.js'; -export { isString } from './predicate/isString.js'; -export { isSymbol } from './predicate/isSymbol.js'; -export { isTypedArray } from './predicate/isTypedArray.js'; -export { isUndefined } from './predicate/isUndefined.js'; -export { isWeakMap } from './predicate/isWeakMap.js'; -export { isWeakSet } from './predicate/isWeakSet.js'; -export { delay } from './promise/delay.js'; -export { Mutex } from './promise/mutex.js'; -export { Semaphore } from './promise/semaphore.js'; -export { timeout } from './promise/timeout.js'; -export { withTimeout } from './promise/withTimeout.js'; -export { camelCase } from './string/camelCase.js'; -export { capitalize } from './string/capitalize.js'; -export { constantCase } from './string/constantCase.js'; -export { deburr } from './string/deburr.js'; -export { escape } from './string/escape.js'; -export { escapeRegExp } from './string/escapeRegExp.js'; -export { kebabCase } from './string/kebabCase.js'; -export { lowerCase } from './string/lowerCase.js'; -export { lowerFirst } from './string/lowerFirst.js'; -export { pad } from './string/pad.js'; -export { pascalCase } from './string/pascalCase.js'; -export { reverseString } from './string/reverseString.js'; -export { snakeCase } from './string/snakeCase.js'; -export { startCase } from './string/startCase.js'; -export { trim } from './string/trim.js'; -export { trimEnd } from './string/trimEnd.js'; -export { trimStart } from './string/trimStart.js'; -export { unescape } from './string/unescape.js'; -export { upperCase } from './string/upperCase.js'; -export { upperFirst } from './string/upperFirst.js'; -export { words } from './string/words.js'; -export { attempt } from './util/attempt.js'; -export { attemptAsync } from './util/attemptAsync.js'; -export { invariant as assert, invariant } from './util/invariant.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/index.js b/sdks/nodejs/node_modules/es-toolkit/dist/index.js deleted file mode 100644 index a3c5957..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/index.js +++ /dev/null @@ -1,370 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const at = require('./array/at.js'); -const chunk = require('./array/chunk.js'); -const compact = require('./array/compact.js'); -const countBy = require('./array/countBy.js'); -const difference = require('./array/difference.js'); -const differenceBy = require('./array/differenceBy.js'); -const differenceWith = require('./array/differenceWith.js'); -const drop = require('./array/drop.js'); -const dropRight = require('./array/dropRight.js'); -const dropRightWhile = require('./array/dropRightWhile.js'); -const dropWhile = require('./array/dropWhile.js'); -const fill = require('./array/fill.js'); -const filterAsync = require('./array/filterAsync.js'); -const flatMap = require('./array/flatMap.js'); -const flatMapAsync = require('./array/flatMapAsync.js'); -const flatMapDeep = require('./array/flatMapDeep.js'); -const flatten = require('./array/flatten.js'); -const flattenDeep = require('./array/flattenDeep.js'); -const forEachAsync = require('./array/forEachAsync.js'); -const forEachRight = require('./array/forEachRight.js'); -const groupBy = require('./array/groupBy.js'); -const head = require('./array/head.js'); -const initial = require('./array/initial.js'); -const intersection = require('./array/intersection.js'); -const intersectionBy = require('./array/intersectionBy.js'); -const intersectionWith = require('./array/intersectionWith.js'); -const isSubset = require('./array/isSubset.js'); -const isSubsetWith = require('./array/isSubsetWith.js'); -const keyBy = require('./array/keyBy.js'); -const last = require('./array/last.js'); -const limitAsync = require('./array/limitAsync.js'); -const mapAsync = require('./array/mapAsync.js'); -const maxBy = require('./array/maxBy.js'); -const minBy = require('./array/minBy.js'); -const orderBy = require('./array/orderBy.js'); -const partition = require('./array/partition.js'); -const pull = require('./array/pull.js'); -const pullAt = require('./array/pullAt.js'); -const reduceAsync = require('./array/reduceAsync.js'); -const remove = require('./array/remove.js'); -const sample = require('./array/sample.js'); -const sampleSize = require('./array/sampleSize.js'); -const shuffle = require('./array/shuffle.js'); -const sortBy = require('./array/sortBy.js'); -const tail = require('./array/tail.js'); -const take = require('./array/take.js'); -const takeRight = require('./array/takeRight.js'); -const takeRightWhile = require('./array/takeRightWhile.js'); -const takeWhile = require('./array/takeWhile.js'); -const toFilled = require('./array/toFilled.js'); -const union = require('./array/union.js'); -const unionBy = require('./array/unionBy.js'); -const unionWith = require('./array/unionWith.js'); -const uniq = require('./array/uniq.js'); -const uniqBy = require('./array/uniqBy.js'); -const uniqWith = require('./array/uniqWith.js'); -const unzip = require('./array/unzip.js'); -const unzipWith = require('./array/unzipWith.js'); -const windowed = require('./array/windowed.js'); -const without = require('./array/without.js'); -const xor = require('./array/xor.js'); -const xorBy = require('./array/xorBy.js'); -const xorWith = require('./array/xorWith.js'); -const zip = require('./array/zip.js'); -const zipObject = require('./array/zipObject.js'); -const zipWith = require('./array/zipWith.js'); -const AbortError = require('./error/AbortError.js'); -const TimeoutError = require('./error/TimeoutError.js'); -const after = require('./function/after.js'); -const ary = require('./function/ary.js'); -const asyncNoop = require('./function/asyncNoop.js'); -const before = require('./function/before.js'); -const curry = require('./function/curry.js'); -const curryRight = require('./function/curryRight.js'); -const debounce = require('./function/debounce.js'); -const flow = require('./function/flow.js'); -const flowRight = require('./function/flowRight.js'); -const identity = require('./function/identity.js'); -const memoize = require('./function/memoize.js'); -const negate = require('./function/negate.js'); -const noop = require('./function/noop.js'); -const once = require('./function/once.js'); -const partial = require('./function/partial.js'); -const partialRight = require('./function/partialRight.js'); -const rest = require('./function/rest.js'); -const retry = require('./function/retry.js'); -const spread = require('./function/spread.js'); -const throttle = require('./function/throttle.js'); -const unary = require('./function/unary.js'); -const clamp = require('./math/clamp.js'); -const inRange = require('./math/inRange.js'); -const mean = require('./math/mean.js'); -const meanBy = require('./math/meanBy.js'); -const median = require('./math/median.js'); -const medianBy = require('./math/medianBy.js'); -const random = require('./math/random.js'); -const randomInt = require('./math/randomInt.js'); -const range = require('./math/range.js'); -const rangeRight = require('./math/rangeRight.js'); -const round = require('./math/round.js'); -const sum = require('./math/sum.js'); -const sumBy = require('./math/sumBy.js'); -const clone = require('./object/clone.js'); -const cloneDeep = require('./object/cloneDeep.js'); -const cloneDeepWith = require('./object/cloneDeepWith.js'); -const findKey = require('./object/findKey.js'); -const flattenObject = require('./object/flattenObject.js'); -const invert = require('./object/invert.js'); -const mapKeys = require('./object/mapKeys.js'); -const mapValues = require('./object/mapValues.js'); -const merge = require('./object/merge.js'); -const mergeWith = require('./object/mergeWith.js'); -const omit = require('./object/omit.js'); -const omitBy = require('./object/omitBy.js'); -const pick = require('./object/pick.js'); -const pickBy = require('./object/pickBy.js'); -const toCamelCaseKeys = require('./object/toCamelCaseKeys.js'); -const toMerged = require('./object/toMerged.js'); -const toSnakeCaseKeys = require('./object/toSnakeCaseKeys.js'); -const isArrayBuffer = require('./predicate/isArrayBuffer.js'); -const isBlob = require('./predicate/isBlob.js'); -const isBoolean = require('./predicate/isBoolean.js'); -const isBrowser = require('./predicate/isBrowser.js'); -const isBuffer = require('./predicate/isBuffer.js'); -const isDate = require('./predicate/isDate.js'); -const isEmptyObject = require('./predicate/isEmptyObject.js'); -const isEqual = require('./predicate/isEqual.js'); -const isEqualWith = require('./predicate/isEqualWith.js'); -const isError = require('./predicate/isError.js'); -const isFile = require('./predicate/isFile.js'); -const isFunction = require('./predicate/isFunction.js'); -const isJSON = require('./predicate/isJSON.js'); -const isJSONValue = require('./predicate/isJSONValue.js'); -const isLength = require('./predicate/isLength.js'); -const isMap = require('./predicate/isMap.js'); -const isNil = require('./predicate/isNil.js'); -const isNode = require('./predicate/isNode.js'); -const isNotNil = require('./predicate/isNotNil.js'); -const isNull = require('./predicate/isNull.js'); -const isNumber = require('./predicate/isNumber.js'); -const isPlainObject = require('./predicate/isPlainObject.js'); -const isPrimitive = require('./predicate/isPrimitive.js'); -const isPromise = require('./predicate/isPromise.js'); -const isRegExp = require('./predicate/isRegExp.js'); -const isSet = require('./predicate/isSet.js'); -const isString = require('./predicate/isString.js'); -const isSymbol = require('./predicate/isSymbol.js'); -const isTypedArray = require('./predicate/isTypedArray.js'); -const isUndefined = require('./predicate/isUndefined.js'); -const isWeakMap = require('./predicate/isWeakMap.js'); -const isWeakSet = require('./predicate/isWeakSet.js'); -const delay = require('./promise/delay.js'); -const mutex = require('./promise/mutex.js'); -const semaphore = require('./promise/semaphore.js'); -const timeout = require('./promise/timeout.js'); -const withTimeout = require('./promise/withTimeout.js'); -const camelCase = require('./string/camelCase.js'); -const capitalize = require('./string/capitalize.js'); -const constantCase = require('./string/constantCase.js'); -const deburr = require('./string/deburr.js'); -const escape = require('./string/escape.js'); -const escapeRegExp = require('./string/escapeRegExp.js'); -const kebabCase = require('./string/kebabCase.js'); -const lowerCase = require('./string/lowerCase.js'); -const lowerFirst = require('./string/lowerFirst.js'); -const pad = require('./string/pad.js'); -const pascalCase = require('./string/pascalCase.js'); -const reverseString = require('./string/reverseString.js'); -const snakeCase = require('./string/snakeCase.js'); -const startCase = require('./string/startCase.js'); -const trim = require('./string/trim.js'); -const trimEnd = require('./string/trimEnd.js'); -const trimStart = require('./string/trimStart.js'); -const unescape = require('./string/unescape.js'); -const upperCase = require('./string/upperCase.js'); -const upperFirst = require('./string/upperFirst.js'); -const words = require('./string/words.js'); -const attempt = require('./util/attempt.js'); -const attemptAsync = require('./util/attemptAsync.js'); -const invariant = require('./util/invariant.js'); - - - -exports.at = at.at; -exports.chunk = chunk.chunk; -exports.compact = compact.compact; -exports.countBy = countBy.countBy; -exports.difference = difference.difference; -exports.differenceBy = differenceBy.differenceBy; -exports.differenceWith = differenceWith.differenceWith; -exports.drop = drop.drop; -exports.dropRight = dropRight.dropRight; -exports.dropRightWhile = dropRightWhile.dropRightWhile; -exports.dropWhile = dropWhile.dropWhile; -exports.fill = fill.fill; -exports.filterAsync = filterAsync.filterAsync; -exports.flatMap = flatMap.flatMap; -exports.flatMapAsync = flatMapAsync.flatMapAsync; -exports.flatMapDeep = flatMapDeep.flatMapDeep; -exports.flatten = flatten.flatten; -exports.flattenDeep = flattenDeep.flattenDeep; -exports.forEachAsync = forEachAsync.forEachAsync; -exports.forEachRight = forEachRight.forEachRight; -exports.groupBy = groupBy.groupBy; -exports.head = head.head; -exports.initial = initial.initial; -exports.intersection = intersection.intersection; -exports.intersectionBy = intersectionBy.intersectionBy; -exports.intersectionWith = intersectionWith.intersectionWith; -exports.isSubset = isSubset.isSubset; -exports.isSubsetWith = isSubsetWith.isSubsetWith; -exports.keyBy = keyBy.keyBy; -exports.last = last.last; -exports.limitAsync = limitAsync.limitAsync; -exports.mapAsync = mapAsync.mapAsync; -exports.maxBy = maxBy.maxBy; -exports.minBy = minBy.minBy; -exports.orderBy = orderBy.orderBy; -exports.partition = partition.partition; -exports.pull = pull.pull; -exports.pullAt = pullAt.pullAt; -exports.reduceAsync = reduceAsync.reduceAsync; -exports.remove = remove.remove; -exports.sample = sample.sample; -exports.sampleSize = sampleSize.sampleSize; -exports.shuffle = shuffle.shuffle; -exports.sortBy = sortBy.sortBy; -exports.tail = tail.tail; -exports.take = take.take; -exports.takeRight = takeRight.takeRight; -exports.takeRightWhile = takeRightWhile.takeRightWhile; -exports.takeWhile = takeWhile.takeWhile; -exports.toFilled = toFilled.toFilled; -exports.union = union.union; -exports.unionBy = unionBy.unionBy; -exports.unionWith = unionWith.unionWith; -exports.uniq = uniq.uniq; -exports.uniqBy = uniqBy.uniqBy; -exports.uniqWith = uniqWith.uniqWith; -exports.unzip = unzip.unzip; -exports.unzipWith = unzipWith.unzipWith; -exports.windowed = windowed.windowed; -exports.without = without.without; -exports.xor = xor.xor; -exports.xorBy = xorBy.xorBy; -exports.xorWith = xorWith.xorWith; -exports.zip = zip.zip; -exports.zipObject = zipObject.zipObject; -exports.zipWith = zipWith.zipWith; -exports.AbortError = AbortError.AbortError; -exports.TimeoutError = TimeoutError.TimeoutError; -exports.after = after.after; -exports.ary = ary.ary; -exports.asyncNoop = asyncNoop.asyncNoop; -exports.before = before.before; -exports.curry = curry.curry; -exports.curryRight = curryRight.curryRight; -exports.debounce = debounce.debounce; -exports.flow = flow.flow; -exports.flowRight = flowRight.flowRight; -exports.identity = identity.identity; -exports.memoize = memoize.memoize; -exports.negate = negate.negate; -exports.noop = noop.noop; -exports.once = once.once; -exports.partial = partial.partial; -exports.partialRight = partialRight.partialRight; -exports.rest = rest.rest; -exports.retry = retry.retry; -exports.spread = spread.spread; -exports.throttle = throttle.throttle; -exports.unary = unary.unary; -exports.clamp = clamp.clamp; -exports.inRange = inRange.inRange; -exports.mean = mean.mean; -exports.meanBy = meanBy.meanBy; -exports.median = median.median; -exports.medianBy = medianBy.medianBy; -exports.random = random.random; -exports.randomInt = randomInt.randomInt; -exports.range = range.range; -exports.rangeRight = rangeRight.rangeRight; -exports.round = round.round; -exports.sum = sum.sum; -exports.sumBy = sumBy.sumBy; -exports.clone = clone.clone; -exports.cloneDeep = cloneDeep.cloneDeep; -exports.cloneDeepWith = cloneDeepWith.cloneDeepWith; -exports.findKey = findKey.findKey; -exports.flattenObject = flattenObject.flattenObject; -exports.invert = invert.invert; -exports.mapKeys = mapKeys.mapKeys; -exports.mapValues = mapValues.mapValues; -exports.merge = merge.merge; -exports.mergeWith = mergeWith.mergeWith; -exports.omit = omit.omit; -exports.omitBy = omitBy.omitBy; -exports.pick = pick.pick; -exports.pickBy = pickBy.pickBy; -exports.toCamelCaseKeys = toCamelCaseKeys.toCamelCaseKeys; -exports.toMerged = toMerged.toMerged; -exports.toSnakeCaseKeys = toSnakeCaseKeys.toSnakeCaseKeys; -exports.isArrayBuffer = isArrayBuffer.isArrayBuffer; -exports.isBlob = isBlob.isBlob; -exports.isBoolean = isBoolean.isBoolean; -exports.isBrowser = isBrowser.isBrowser; -exports.isBuffer = isBuffer.isBuffer; -exports.isDate = isDate.isDate; -exports.isEmptyObject = isEmptyObject.isEmptyObject; -exports.isEqual = isEqual.isEqual; -exports.isEqualWith = isEqualWith.isEqualWith; -exports.isError = isError.isError; -exports.isFile = isFile.isFile; -exports.isFunction = isFunction.isFunction; -exports.isJSON = isJSON.isJSON; -exports.isJSONArray = isJSONValue.isJSONArray; -exports.isJSONObject = isJSONValue.isJSONObject; -exports.isJSONValue = isJSONValue.isJSONValue; -exports.isLength = isLength.isLength; -exports.isMap = isMap.isMap; -exports.isNil = isNil.isNil; -exports.isNode = isNode.isNode; -exports.isNotNil = isNotNil.isNotNil; -exports.isNull = isNull.isNull; -exports.isNumber = isNumber.isNumber; -exports.isPlainObject = isPlainObject.isPlainObject; -exports.isPrimitive = isPrimitive.isPrimitive; -exports.isPromise = isPromise.isPromise; -exports.isRegExp = isRegExp.isRegExp; -exports.isSet = isSet.isSet; -exports.isString = isString.isString; -exports.isSymbol = isSymbol.isSymbol; -exports.isTypedArray = isTypedArray.isTypedArray; -exports.isUndefined = isUndefined.isUndefined; -exports.isWeakMap = isWeakMap.isWeakMap; -exports.isWeakSet = isWeakSet.isWeakSet; -exports.delay = delay.delay; -exports.Mutex = mutex.Mutex; -exports.Semaphore = semaphore.Semaphore; -exports.timeout = timeout.timeout; -exports.withTimeout = withTimeout.withTimeout; -exports.camelCase = camelCase.camelCase; -exports.capitalize = capitalize.capitalize; -exports.constantCase = constantCase.constantCase; -exports.deburr = deburr.deburr; -exports.escape = escape.escape; -exports.escapeRegExp = escapeRegExp.escapeRegExp; -exports.kebabCase = kebabCase.kebabCase; -exports.lowerCase = lowerCase.lowerCase; -exports.lowerFirst = lowerFirst.lowerFirst; -exports.pad = pad.pad; -exports.pascalCase = pascalCase.pascalCase; -exports.reverseString = reverseString.reverseString; -exports.snakeCase = snakeCase.snakeCase; -exports.startCase = startCase.startCase; -exports.trim = trim.trim; -exports.trimEnd = trimEnd.trimEnd; -exports.trimStart = trimStart.trimStart; -exports.unescape = unescape.unescape; -exports.upperCase = upperCase.upperCase; -exports.upperFirst = upperFirst.upperFirst; -exports.words = words.words; -exports.attempt = attempt.attempt; -exports.attemptAsync = attemptAsync.attemptAsync; -exports.assert = invariant.invariant; -exports.invariant = invariant.invariant; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/index.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/index.mjs deleted file mode 100644 index d317754..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/index.mjs +++ /dev/null @@ -1,180 +0,0 @@ -export { at } from './array/at.mjs'; -export { chunk } from './array/chunk.mjs'; -export { compact } from './array/compact.mjs'; -export { countBy } from './array/countBy.mjs'; -export { difference } from './array/difference.mjs'; -export { differenceBy } from './array/differenceBy.mjs'; -export { differenceWith } from './array/differenceWith.mjs'; -export { drop } from './array/drop.mjs'; -export { dropRight } from './array/dropRight.mjs'; -export { dropRightWhile } from './array/dropRightWhile.mjs'; -export { dropWhile } from './array/dropWhile.mjs'; -export { fill } from './array/fill.mjs'; -export { filterAsync } from './array/filterAsync.mjs'; -export { flatMap } from './array/flatMap.mjs'; -export { flatMapAsync } from './array/flatMapAsync.mjs'; -export { flatMapDeep } from './array/flatMapDeep.mjs'; -export { flatten } from './array/flatten.mjs'; -export { flattenDeep } from './array/flattenDeep.mjs'; -export { forEachAsync } from './array/forEachAsync.mjs'; -export { forEachRight } from './array/forEachRight.mjs'; -export { groupBy } from './array/groupBy.mjs'; -export { head } from './array/head.mjs'; -export { initial } from './array/initial.mjs'; -export { intersection } from './array/intersection.mjs'; -export { intersectionBy } from './array/intersectionBy.mjs'; -export { intersectionWith } from './array/intersectionWith.mjs'; -export { isSubset } from './array/isSubset.mjs'; -export { isSubsetWith } from './array/isSubsetWith.mjs'; -export { keyBy } from './array/keyBy.mjs'; -export { last } from './array/last.mjs'; -export { limitAsync } from './array/limitAsync.mjs'; -export { mapAsync } from './array/mapAsync.mjs'; -export { maxBy } from './array/maxBy.mjs'; -export { minBy } from './array/minBy.mjs'; -export { orderBy } from './array/orderBy.mjs'; -export { partition } from './array/partition.mjs'; -export { pull } from './array/pull.mjs'; -export { pullAt } from './array/pullAt.mjs'; -export { reduceAsync } from './array/reduceAsync.mjs'; -export { remove } from './array/remove.mjs'; -export { sample } from './array/sample.mjs'; -export { sampleSize } from './array/sampleSize.mjs'; -export { shuffle } from './array/shuffle.mjs'; -export { sortBy } from './array/sortBy.mjs'; -export { tail } from './array/tail.mjs'; -export { take } from './array/take.mjs'; -export { takeRight } from './array/takeRight.mjs'; -export { takeRightWhile } from './array/takeRightWhile.mjs'; -export { takeWhile } from './array/takeWhile.mjs'; -export { toFilled } from './array/toFilled.mjs'; -export { union } from './array/union.mjs'; -export { unionBy } from './array/unionBy.mjs'; -export { unionWith } from './array/unionWith.mjs'; -export { uniq } from './array/uniq.mjs'; -export { uniqBy } from './array/uniqBy.mjs'; -export { uniqWith } from './array/uniqWith.mjs'; -export { unzip } from './array/unzip.mjs'; -export { unzipWith } from './array/unzipWith.mjs'; -export { windowed } from './array/windowed.mjs'; -export { without } from './array/without.mjs'; -export { xor } from './array/xor.mjs'; -export { xorBy } from './array/xorBy.mjs'; -export { xorWith } from './array/xorWith.mjs'; -export { zip } from './array/zip.mjs'; -export { zipObject } from './array/zipObject.mjs'; -export { zipWith } from './array/zipWith.mjs'; -export { AbortError } from './error/AbortError.mjs'; -export { TimeoutError } from './error/TimeoutError.mjs'; -export { after } from './function/after.mjs'; -export { ary } from './function/ary.mjs'; -export { asyncNoop } from './function/asyncNoop.mjs'; -export { before } from './function/before.mjs'; -export { curry } from './function/curry.mjs'; -export { curryRight } from './function/curryRight.mjs'; -export { debounce } from './function/debounce.mjs'; -export { flow } from './function/flow.mjs'; -export { flowRight } from './function/flowRight.mjs'; -export { identity } from './function/identity.mjs'; -export { memoize } from './function/memoize.mjs'; -export { negate } from './function/negate.mjs'; -export { noop } from './function/noop.mjs'; -export { once } from './function/once.mjs'; -export { partial } from './function/partial.mjs'; -export { partialRight } from './function/partialRight.mjs'; -export { rest } from './function/rest.mjs'; -export { retry } from './function/retry.mjs'; -export { spread } from './function/spread.mjs'; -export { throttle } from './function/throttle.mjs'; -export { unary } from './function/unary.mjs'; -export { clamp } from './math/clamp.mjs'; -export { inRange } from './math/inRange.mjs'; -export { mean } from './math/mean.mjs'; -export { meanBy } from './math/meanBy.mjs'; -export { median } from './math/median.mjs'; -export { medianBy } from './math/medianBy.mjs'; -export { random } from './math/random.mjs'; -export { randomInt } from './math/randomInt.mjs'; -export { range } from './math/range.mjs'; -export { rangeRight } from './math/rangeRight.mjs'; -export { round } from './math/round.mjs'; -export { sum } from './math/sum.mjs'; -export { sumBy } from './math/sumBy.mjs'; -export { clone } from './object/clone.mjs'; -export { cloneDeep } from './object/cloneDeep.mjs'; -export { cloneDeepWith } from './object/cloneDeepWith.mjs'; -export { findKey } from './object/findKey.mjs'; -export { flattenObject } from './object/flattenObject.mjs'; -export { invert } from './object/invert.mjs'; -export { mapKeys } from './object/mapKeys.mjs'; -export { mapValues } from './object/mapValues.mjs'; -export { merge } from './object/merge.mjs'; -export { mergeWith } from './object/mergeWith.mjs'; -export { omit } from './object/omit.mjs'; -export { omitBy } from './object/omitBy.mjs'; -export { pick } from './object/pick.mjs'; -export { pickBy } from './object/pickBy.mjs'; -export { toCamelCaseKeys } from './object/toCamelCaseKeys.mjs'; -export { toMerged } from './object/toMerged.mjs'; -export { toSnakeCaseKeys } from './object/toSnakeCaseKeys.mjs'; -export { isArrayBuffer } from './predicate/isArrayBuffer.mjs'; -export { isBlob } from './predicate/isBlob.mjs'; -export { isBoolean } from './predicate/isBoolean.mjs'; -export { isBrowser } from './predicate/isBrowser.mjs'; -export { isBuffer } from './predicate/isBuffer.mjs'; -export { isDate } from './predicate/isDate.mjs'; -export { isEmptyObject } from './predicate/isEmptyObject.mjs'; -export { isEqual } from './predicate/isEqual.mjs'; -export { isEqualWith } from './predicate/isEqualWith.mjs'; -export { isError } from './predicate/isError.mjs'; -export { isFile } from './predicate/isFile.mjs'; -export { isFunction } from './predicate/isFunction.mjs'; -export { isJSON } from './predicate/isJSON.mjs'; -export { isJSONArray, isJSONObject, isJSONValue } from './predicate/isJSONValue.mjs'; -export { isLength } from './predicate/isLength.mjs'; -export { isMap } from './predicate/isMap.mjs'; -export { isNil } from './predicate/isNil.mjs'; -export { isNode } from './predicate/isNode.mjs'; -export { isNotNil } from './predicate/isNotNil.mjs'; -export { isNull } from './predicate/isNull.mjs'; -export { isNumber } from './predicate/isNumber.mjs'; -export { isPlainObject } from './predicate/isPlainObject.mjs'; -export { isPrimitive } from './predicate/isPrimitive.mjs'; -export { isPromise } from './predicate/isPromise.mjs'; -export { isRegExp } from './predicate/isRegExp.mjs'; -export { isSet } from './predicate/isSet.mjs'; -export { isString } from './predicate/isString.mjs'; -export { isSymbol } from './predicate/isSymbol.mjs'; -export { isTypedArray } from './predicate/isTypedArray.mjs'; -export { isUndefined } from './predicate/isUndefined.mjs'; -export { isWeakMap } from './predicate/isWeakMap.mjs'; -export { isWeakSet } from './predicate/isWeakSet.mjs'; -export { delay } from './promise/delay.mjs'; -export { Mutex } from './promise/mutex.mjs'; -export { Semaphore } from './promise/semaphore.mjs'; -export { timeout } from './promise/timeout.mjs'; -export { withTimeout } from './promise/withTimeout.mjs'; -export { camelCase } from './string/camelCase.mjs'; -export { capitalize } from './string/capitalize.mjs'; -export { constantCase } from './string/constantCase.mjs'; -export { deburr } from './string/deburr.mjs'; -export { escape } from './string/escape.mjs'; -export { escapeRegExp } from './string/escapeRegExp.mjs'; -export { kebabCase } from './string/kebabCase.mjs'; -export { lowerCase } from './string/lowerCase.mjs'; -export { lowerFirst } from './string/lowerFirst.mjs'; -export { pad } from './string/pad.mjs'; -export { pascalCase } from './string/pascalCase.mjs'; -export { reverseString } from './string/reverseString.mjs'; -export { snakeCase } from './string/snakeCase.mjs'; -export { startCase } from './string/startCase.mjs'; -export { trim } from './string/trim.mjs'; -export { trimEnd } from './string/trimEnd.mjs'; -export { trimStart } from './string/trimStart.mjs'; -export { unescape } from './string/unescape.mjs'; -export { upperCase } from './string/upperCase.mjs'; -export { upperFirst } from './string/upperFirst.mjs'; -export { words } from './string/words.mjs'; -export { attempt } from './util/attempt.mjs'; -export { attemptAsync } from './util/attemptAsync.mjs'; -export { invariant as assert, invariant } from './util/invariant.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/every.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/map/every.d.mts deleted file mode 100644 index 51bc619..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/every.d.mts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Tests whether all entries in a Map satisfy the provided predicate function. - * - * This function iterates through all entries of the Map and checks if the predicate function - * returns true for every entry. It returns true if the predicate is satisfied for all entries, - * and false otherwise. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to test. - * @param {(value: V, key: K, map: Map) => boolean} doesMatch - A predicate function that tests each entry. - * @returns {boolean} true if all entries satisfy the predicate, false otherwise. - * - * @example - * const map = new Map([ - * ['a', 10], - * ['b', 20], - * ['c', 30] - * ]); - * const result = every(map, (value) => value > 5); - * // result will be: true - * - * const result2 = every(map, (value) => value > 15); - * // result2 will be: false - */ -declare function every(map: Map, doesMatch: (value: V, key: K, map: Map) => boolean): boolean; - -export { every }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/every.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/map/every.d.ts deleted file mode 100644 index 51bc619..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/every.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Tests whether all entries in a Map satisfy the provided predicate function. - * - * This function iterates through all entries of the Map and checks if the predicate function - * returns true for every entry. It returns true if the predicate is satisfied for all entries, - * and false otherwise. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to test. - * @param {(value: V, key: K, map: Map) => boolean} doesMatch - A predicate function that tests each entry. - * @returns {boolean} true if all entries satisfy the predicate, false otherwise. - * - * @example - * const map = new Map([ - * ['a', 10], - * ['b', 20], - * ['c', 30] - * ]); - * const result = every(map, (value) => value > 5); - * // result will be: true - * - * const result2 = every(map, (value) => value > 15); - * // result2 will be: false - */ -declare function every(map: Map, doesMatch: (value: V, key: K, map: Map) => boolean): boolean; - -export { every }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/every.js b/sdks/nodejs/node_modules/es-toolkit/dist/map/every.js deleted file mode 100644 index 6a428f6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/every.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function every(map, doesMatch) { - for (const [key, value] of map) { - if (!doesMatch(value, key, map)) { - return false; - } - } - return true; -} - -exports.every = every; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/every.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/map/every.mjs deleted file mode 100644 index 28464b9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/every.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function every(map, doesMatch) { - for (const [key, value] of map) { - if (!doesMatch(value, key, map)) { - return false; - } - } - return true; -} - -export { every }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/filter.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/map/filter.d.mts deleted file mode 100644 index 2ea47a3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/filter.d.mts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Filters a Map based on a predicate function. - * - * This function takes a Map and a predicate function, and returns a new Map containing - * only the entries for which the predicate function returns true. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to filter. - * @param {(value: V, key: K, map: Map) => boolean} callback - A predicate function that tests each entry. - * @returns {Map} A new Map containing only the entries that satisfy the predicate. - * - * @example - * const map = new Map([ - * ['a', 1], - * ['b', 2], - * ['c', 3], - * ['d', 4] - * ]); - * const result = filter(map, (value) => value > 2); - * // result will be: - * // Map(2) { - * // 'c' => 3, - * // 'd' => 4 - * // } - */ -declare function filter(map: Map, callback: (value: V, key: K, map: Map) => boolean): Map; - -export { filter }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/filter.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/map/filter.d.ts deleted file mode 100644 index 2ea47a3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/filter.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Filters a Map based on a predicate function. - * - * This function takes a Map and a predicate function, and returns a new Map containing - * only the entries for which the predicate function returns true. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to filter. - * @param {(value: V, key: K, map: Map) => boolean} callback - A predicate function that tests each entry. - * @returns {Map} A new Map containing only the entries that satisfy the predicate. - * - * @example - * const map = new Map([ - * ['a', 1], - * ['b', 2], - * ['c', 3], - * ['d', 4] - * ]); - * const result = filter(map, (value) => value > 2); - * // result will be: - * // Map(2) { - * // 'c' => 3, - * // 'd' => 4 - * // } - */ -declare function filter(map: Map, callback: (value: V, key: K, map: Map) => boolean): Map; - -export { filter }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/filter.js b/sdks/nodejs/node_modules/es-toolkit/dist/map/filter.js deleted file mode 100644 index 87bff34..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/filter.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function filter(map, callback) { - const result = new Map(); - for (const [key, value] of map) { - if (callback(value, key, map)) { - result.set(key, value); - } - } - return result; -} - -exports.filter = filter; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/filter.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/map/filter.mjs deleted file mode 100644 index 52c3d15..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/filter.mjs +++ /dev/null @@ -1,11 +0,0 @@ -function filter(map, callback) { - const result = new Map(); - for (const [key, value] of map) { - if (callback(value, key, map)) { - result.set(key, value); - } - } - return result; -} - -export { filter }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/findKey.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/map/findKey.d.mts deleted file mode 100644 index befa4b7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/findKey.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Finds the first key in a Map for which the predicate function returns true. - * - * This function iterates through the entries of the Map and returns the key of the first - * entry for which the predicate function returns true. If no entry satisfies the predicate, - * it returns undefined. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to search. - * @param {(value: V, key: K, map: Map) => boolean} doesMatch - A predicate function that tests each entry. - * @returns {K | undefined} The key of the first entry that satisfies the predicate, or undefined if none found. - * - * @example - * const map = new Map([ - * ['apple', { color: 'red', quantity: 10 }], - * ['banana', { color: 'yellow', quantity: 5 }], - * ['grape', { color: 'purple', quantity: 15 }] - * ]); - * const result = findKey(map, (value) => value.quantity > 10); - * // result will be: 'grape' - */ -declare function findKey(map: Map, doesMatch: (value: V, key: K, map: Map) => boolean): K | undefined; - -export { findKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/findKey.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/map/findKey.d.ts deleted file mode 100644 index befa4b7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/findKey.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Finds the first key in a Map for which the predicate function returns true. - * - * This function iterates through the entries of the Map and returns the key of the first - * entry for which the predicate function returns true. If no entry satisfies the predicate, - * it returns undefined. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to search. - * @param {(value: V, key: K, map: Map) => boolean} doesMatch - A predicate function that tests each entry. - * @returns {K | undefined} The key of the first entry that satisfies the predicate, or undefined if none found. - * - * @example - * const map = new Map([ - * ['apple', { color: 'red', quantity: 10 }], - * ['banana', { color: 'yellow', quantity: 5 }], - * ['grape', { color: 'purple', quantity: 15 }] - * ]); - * const result = findKey(map, (value) => value.quantity > 10); - * // result will be: 'grape' - */ -declare function findKey(map: Map, doesMatch: (value: V, key: K, map: Map) => boolean): K | undefined; - -export { findKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/findKey.js b/sdks/nodejs/node_modules/es-toolkit/dist/map/findKey.js deleted file mode 100644 index 55cc03e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/findKey.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function findKey(map, doesMatch) { - let result = undefined; - for (const [key, value] of map) { - if (doesMatch(value, key, map)) { - result = key; - break; - } - } - return result; -} - -exports.findKey = findKey; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/findKey.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/map/findKey.mjs deleted file mode 100644 index f626500..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/findKey.mjs +++ /dev/null @@ -1,12 +0,0 @@ -function findKey(map, doesMatch) { - let result = undefined; - for (const [key, value] of map) { - if (doesMatch(value, key, map)) { - result = key; - break; - } - } - return result; -} - -export { findKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/findValue.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/map/findValue.d.mts deleted file mode 100644 index df795af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/findValue.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Finds the first value in a Map for which the predicate function returns true. - * - * This function iterates through the entries of the Map and returns the value of the first - * entry for which the predicate function returns true. If no entry satisfies the predicate, - * it returns undefined. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to search. - * @param {(value: V, key: K, map: Map) => boolean} doesMatch - A predicate function that tests each entry. - * @returns {V | undefined} The value of the first entry that satisfies the predicate, or undefined if none found. - * - * @example - * const map = new Map([ - * ['apple', { color: 'red', quantity: 10 }], - * ['banana', { color: 'yellow', quantity: 5 }], - * ['grape', { color: 'purple', quantity: 15 }] - * ]); - * const result = findValue(map, (value) => value.quantity > 10); - * // result will be: { color: 'purple', quantity: 15 } - */ -declare function findValue(map: Map, doesMatch: (value: V, key: K, map: Map) => boolean): V | undefined; - -export { findValue }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/findValue.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/map/findValue.d.ts deleted file mode 100644 index df795af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/findValue.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Finds the first value in a Map for which the predicate function returns true. - * - * This function iterates through the entries of the Map and returns the value of the first - * entry for which the predicate function returns true. If no entry satisfies the predicate, - * it returns undefined. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to search. - * @param {(value: V, key: K, map: Map) => boolean} doesMatch - A predicate function that tests each entry. - * @returns {V | undefined} The value of the first entry that satisfies the predicate, or undefined if none found. - * - * @example - * const map = new Map([ - * ['apple', { color: 'red', quantity: 10 }], - * ['banana', { color: 'yellow', quantity: 5 }], - * ['grape', { color: 'purple', quantity: 15 }] - * ]); - * const result = findValue(map, (value) => value.quantity > 10); - * // result will be: { color: 'purple', quantity: 15 } - */ -declare function findValue(map: Map, doesMatch: (value: V, key: K, map: Map) => boolean): V | undefined; - -export { findValue }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/findValue.js b/sdks/nodejs/node_modules/es-toolkit/dist/map/findValue.js deleted file mode 100644 index ad30950..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/findValue.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function findValue(map, doesMatch) { - let result = undefined; - for (const [key, value] of map) { - if (doesMatch(value, key, map)) { - result = value; - break; - } - } - return result; -} - -exports.findValue = findValue; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/findValue.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/map/findValue.mjs deleted file mode 100644 index cbcbe40..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/findValue.mjs +++ /dev/null @@ -1,12 +0,0 @@ -function findValue(map, doesMatch) { - let result = undefined; - for (const [key, value] of map) { - if (doesMatch(value, key, map)) { - result = value; - break; - } - } - return result; -} - -export { findValue }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/hasValue.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/map/hasValue.d.mts deleted file mode 100644 index 4918930..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/hasValue.d.mts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Checks if a Map contains a specific value. - * - * This function iterates through all values in the Map and checks if any value - * is equal to the search element using SameValueZero comparison (similar to - * Array.prototype.includes). This means that NaN is considered equal to NaN. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to search. - * @param {V} searchElement - The value to search for. - * @returns {boolean} true if the Map contains the value, false otherwise. - * - * @example - * const map = new Map([ - * ['a', 1], - * ['b', 2], - * ['c', 3] - * ]); - * const result = hasValue(map, 2); - * // result will be: true - * - * const result2 = hasValue(map, 5); - * // result2 will be: false - */ -declare function hasValue(map: Map, searchElement: V): boolean; - -export { hasValue }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/hasValue.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/map/hasValue.d.ts deleted file mode 100644 index 4918930..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/hasValue.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Checks if a Map contains a specific value. - * - * This function iterates through all values in the Map and checks if any value - * is equal to the search element using SameValueZero comparison (similar to - * Array.prototype.includes). This means that NaN is considered equal to NaN. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to search. - * @param {V} searchElement - The value to search for. - * @returns {boolean} true if the Map contains the value, false otherwise. - * - * @example - * const map = new Map([ - * ['a', 1], - * ['b', 2], - * ['c', 3] - * ]); - * const result = hasValue(map, 2); - * // result will be: true - * - * const result2 = hasValue(map, 5); - * // result2 will be: false - */ -declare function hasValue(map: Map, searchElement: V): boolean; - -export { hasValue }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/hasValue.js b/sdks/nodejs/node_modules/es-toolkit/dist/map/hasValue.js deleted file mode 100644 index 1762670..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/hasValue.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isEqualsSameValueZero = require('../_internal/isEqualsSameValueZero.js'); - -function hasValue(map, searchElement) { - for (const value of map.values()) { - if (isEqualsSameValueZero.isEqualsSameValueZero(value, searchElement)) { - return true; - } - } - return false; -} - -exports.hasValue = hasValue; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/hasValue.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/map/hasValue.mjs deleted file mode 100644 index b67e6d9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/hasValue.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { isEqualsSameValueZero } from '../_internal/isEqualsSameValueZero.mjs'; - -function hasValue(map, searchElement) { - for (const value of map.values()) { - if (isEqualsSameValueZero(value, searchElement)) { - return true; - } - } - return false; -} - -export { hasValue }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/index.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/map/index.d.mts deleted file mode 100644 index 4e46cfd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/index.d.mts +++ /dev/null @@ -1,9 +0,0 @@ -export { every } from './every.mjs'; -export { filter } from './filter.mjs'; -export { findKey } from './findKey.mjs'; -export { findValue } from './findValue.mjs'; -export { hasValue } from './hasValue.mjs'; -export { mapKeys } from './mapKeys.mjs'; -export { mapValues } from './mapValues.mjs'; -export { reduce } from './reduce.mjs'; -export { some } from './some.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/index.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/map/index.d.ts deleted file mode 100644 index 0940476..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export { every } from './every.js'; -export { filter } from './filter.js'; -export { findKey } from './findKey.js'; -export { findValue } from './findValue.js'; -export { hasValue } from './hasValue.js'; -export { mapKeys } from './mapKeys.js'; -export { mapValues } from './mapValues.js'; -export { reduce } from './reduce.js'; -export { some } from './some.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/index.js b/sdks/nodejs/node_modules/es-toolkit/dist/map/index.js deleted file mode 100644 index 9e3a5e0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/index.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const every = require('./every.js'); -const filter = require('./filter.js'); -const findKey = require('./findKey.js'); -const findValue = require('./findValue.js'); -const hasValue = require('./hasValue.js'); -const mapKeys = require('./mapKeys.js'); -const mapValues = require('./mapValues.js'); -const reduce = require('./reduce.js'); -const some = require('./some.js'); - - - -exports.every = every.every; -exports.filter = filter.filter; -exports.findKey = findKey.findKey; -exports.findValue = findValue.findValue; -exports.hasValue = hasValue.hasValue; -exports.mapKeys = mapKeys.mapKeys; -exports.mapValues = mapValues.mapValues; -exports.reduce = reduce.reduce; -exports.some = some.some; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/index.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/map/index.mjs deleted file mode 100644 index 4e46cfd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/index.mjs +++ /dev/null @@ -1,9 +0,0 @@ -export { every } from './every.mjs'; -export { filter } from './filter.mjs'; -export { findKey } from './findKey.mjs'; -export { findValue } from './findValue.mjs'; -export { hasValue } from './hasValue.mjs'; -export { mapKeys } from './mapKeys.mjs'; -export { mapValues } from './mapValues.mjs'; -export { reduce } from './reduce.mjs'; -export { some } from './some.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapKeys.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/map/mapKeys.d.mts deleted file mode 100644 index 30d5618..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapKeys.d.mts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Creates a new Map with the same values but with keys transformed by the provided function. - * - * This function takes a Map and a function that generates a new key from each value-key pair. - * It returns a new Map where the keys are the result of applying the function to each entry, - * while the values remain the same. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to transform. - * @param {(value: V, key: K, object: Map) => K} getNewKey - A function that generates a new key from a value-key pair. - * @returns {Map} A new Map with transformed keys and the same values. - * - * @example - * const map = new Map([ - * ['a', 1], - * ['b', 2], - * ['c', 3] - * ]); - * const result = mapKeys(map, (value, key) => key.toUpperCase()); - * // result will be: - * // Map(3) { - * // 'A' => 1, - * // 'B' => 2, - * // 'C' => 3 - * // } - */ -declare function mapKeys(map: Map, getNewKey: (value: V, key: K, object: Map) => K): Map; - -export { mapKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapKeys.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/map/mapKeys.d.ts deleted file mode 100644 index 30d5618..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapKeys.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Creates a new Map with the same values but with keys transformed by the provided function. - * - * This function takes a Map and a function that generates a new key from each value-key pair. - * It returns a new Map where the keys are the result of applying the function to each entry, - * while the values remain the same. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to transform. - * @param {(value: V, key: K, object: Map) => K} getNewKey - A function that generates a new key from a value-key pair. - * @returns {Map} A new Map with transformed keys and the same values. - * - * @example - * const map = new Map([ - * ['a', 1], - * ['b', 2], - * ['c', 3] - * ]); - * const result = mapKeys(map, (value, key) => key.toUpperCase()); - * // result will be: - * // Map(3) { - * // 'A' => 1, - * // 'B' => 2, - * // 'C' => 3 - * // } - */ -declare function mapKeys(map: Map, getNewKey: (value: V, key: K, object: Map) => K): Map; - -export { mapKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapKeys.js b/sdks/nodejs/node_modules/es-toolkit/dist/map/mapKeys.js deleted file mode 100644 index 7505695..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapKeys.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function mapKeys(map, getNewKey) { - const result = new Map(); - for (const [key, value] of map) { - const newKey = getNewKey(value, key, map); - result.set(newKey, value); - } - return result; -} - -exports.mapKeys = mapKeys; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapKeys.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/map/mapKeys.mjs deleted file mode 100644 index ea0bc56..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapKeys.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function mapKeys(map, getNewKey) { - const result = new Map(); - for (const [key, value] of map) { - const newKey = getNewKey(value, key, map); - result.set(newKey, value); - } - return result; -} - -export { mapKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapValues.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/map/mapValues.d.mts deleted file mode 100644 index d1e1d99..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapValues.d.mts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Creates a new Map with the same keys but with values transformed by the provided function. - * - * This function takes a Map and a function that generates a new value from each value-key pair. - * It returns a new Map where the values are the result of applying the function to each entry, - * while the keys remain the same. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to transform. - * @param {(value: V, key: K, object: Map) => V} getNewValue - A function that generates a new value from a value-key pair. - * @returns {Map} A new Map with the same keys and transformed values. - * - * @example - * const map = new Map([ - * ['a', 1], - * ['b', 2], - * ['c', 3] - * ]); - * const result = mapValues(map, (value) => value * 2); - * // result will be: - * // Map(3) { - * // 'a' => 2, - * // 'b' => 4, - * // 'c' => 6 - * // } - */ -declare function mapValues(map: Map, getNewValue: (value: V, key: K, object: Map) => R): Map; - -export { mapValues }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapValues.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/map/mapValues.d.ts deleted file mode 100644 index d1e1d99..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapValues.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Creates a new Map with the same keys but with values transformed by the provided function. - * - * This function takes a Map and a function that generates a new value from each value-key pair. - * It returns a new Map where the values are the result of applying the function to each entry, - * while the keys remain the same. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to transform. - * @param {(value: V, key: K, object: Map) => V} getNewValue - A function that generates a new value from a value-key pair. - * @returns {Map} A new Map with the same keys and transformed values. - * - * @example - * const map = new Map([ - * ['a', 1], - * ['b', 2], - * ['c', 3] - * ]); - * const result = mapValues(map, (value) => value * 2); - * // result will be: - * // Map(3) { - * // 'a' => 2, - * // 'b' => 4, - * // 'c' => 6 - * // } - */ -declare function mapValues(map: Map, getNewValue: (value: V, key: K, object: Map) => R): Map; - -export { mapValues }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapValues.js b/sdks/nodejs/node_modules/es-toolkit/dist/map/mapValues.js deleted file mode 100644 index 8dc47f4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapValues.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function mapValues(map, getNewValue) { - const result = new Map(); - for (const [key, value] of map) { - const newValue = getNewValue(value, key, map); - result.set(key, newValue); - } - return result; -} - -exports.mapValues = mapValues; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapValues.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/map/mapValues.mjs deleted file mode 100644 index 2e4491f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/mapValues.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function mapValues(map, getNewValue) { - const result = new Map(); - for (const [key, value] of map) { - const newValue = getNewValue(value, key, map); - result.set(key, newValue); - } - return result; -} - -export { mapValues }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/reduce.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/map/reduce.d.mts deleted file mode 100644 index 3298771..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/reduce.d.mts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Reduces a Map to a single value by iterating through its entries and applying a callback function. - * - * This function iterates through all entries of the Map and applies the callback function to each entry, - * accumulating the result. If an initial value is provided, it is used as the starting accumulator value. - * If no initial value is provided and the Map is empty, a TypeError is thrown. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to reduce. - * @param {(accumulator: V, value: V, key: K, map: Map) => V} callback - A function that processes each entry and updates the accumulator. - * @param {V} [initialValue] - The initial value for the accumulator. If not provided, the first value in the Map is used. - * @returns {V} The final accumulated value. - * @throws {TypeError} If the Map is empty and no initial value is provided. - * - * @example - * const map = new Map([ - * ['a', 1], - * ['b', 2], - * ['c', 3] - * ]); - * const result = reduce(map, (acc, value) => acc + value, 0); - * // result will be: 6 - * - * @example - * const map = new Map([ - * ['a', 10], - * ['b', 20] - * ]); - * const result = reduce(map, (acc, value) => acc + value); - * // result will be: 30 (starts with first value 10) - */ -declare function reduce(map: Map, callback: (accumulator: A, value: V, key: K, map: Map) => A, initialValue?: A): A; - -export { reduce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/reduce.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/map/reduce.d.ts deleted file mode 100644 index 3298771..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/reduce.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Reduces a Map to a single value by iterating through its entries and applying a callback function. - * - * This function iterates through all entries of the Map and applies the callback function to each entry, - * accumulating the result. If an initial value is provided, it is used as the starting accumulator value. - * If no initial value is provided and the Map is empty, a TypeError is thrown. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to reduce. - * @param {(accumulator: V, value: V, key: K, map: Map) => V} callback - A function that processes each entry and updates the accumulator. - * @param {V} [initialValue] - The initial value for the accumulator. If not provided, the first value in the Map is used. - * @returns {V} The final accumulated value. - * @throws {TypeError} If the Map is empty and no initial value is provided. - * - * @example - * const map = new Map([ - * ['a', 1], - * ['b', 2], - * ['c', 3] - * ]); - * const result = reduce(map, (acc, value) => acc + value, 0); - * // result will be: 6 - * - * @example - * const map = new Map([ - * ['a', 10], - * ['b', 20] - * ]); - * const result = reduce(map, (acc, value) => acc + value); - * // result will be: 30 (starts with first value 10) - */ -declare function reduce(map: Map, callback: (accumulator: A, value: V, key: K, map: Map) => A, initialValue?: A): A; - -export { reduce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/reduce.js b/sdks/nodejs/node_modules/es-toolkit/dist/map/reduce.js deleted file mode 100644 index 013c321..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/reduce.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function reduce(map, callback, initialValue) { - if (initialValue == null && map.size === 0) { - throw new TypeError('Reduce of empty map with no initial value'); - } - let accumulator = initialValue; - for (const [key, value] of map) { - if (accumulator == null) { - accumulator = value; - } - else { - accumulator = callback(accumulator, value, key, map); - } - } - return accumulator; -} - -exports.reduce = reduce; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/reduce.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/map/reduce.mjs deleted file mode 100644 index 22f2a98..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/reduce.mjs +++ /dev/null @@ -1,17 +0,0 @@ -function reduce(map, callback, initialValue) { - if (initialValue == null && map.size === 0) { - throw new TypeError('Reduce of empty map with no initial value'); - } - let accumulator = initialValue; - for (const [key, value] of map) { - if (accumulator == null) { - accumulator = value; - } - else { - accumulator = callback(accumulator, value, key, map); - } - } - return accumulator; -} - -export { reduce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/some.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/map/some.d.mts deleted file mode 100644 index d501cdf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/some.d.mts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Tests whether at least one entry in a Map satisfies the provided predicate function. - * - * This function iterates through the entries of the Map and checks if the predicate function - * returns true for at least one entry. It returns true if any entry satisfies the predicate, - * and false otherwise. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to test. - * @param {(value: V, key: K, map: Map) => boolean} doesMatch - A predicate function that tests each entry. - * @returns {boolean} true if at least one entry satisfies the predicate, false otherwise. - * - * @example - * const map = new Map([ - * ['a', 1], - * ['b', 2], - * ['c', 3] - * ]); - * const result = some(map, (value) => value > 2); - * // result will be: true - * - * const result2 = some(map, (value) => value > 5); - * // result2 will be: false - */ -declare function some(map: Map, doesMatch: (value: V, key: K, map: Map) => boolean): boolean; - -export { some }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/some.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/map/some.d.ts deleted file mode 100644 index d501cdf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/some.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Tests whether at least one entry in a Map satisfies the provided predicate function. - * - * This function iterates through the entries of the Map and checks if the predicate function - * returns true for at least one entry. It returns true if any entry satisfies the predicate, - * and false otherwise. - * - * @template K - The type of keys in the Map. - * @template V - The type of values in the Map. - * @param {Map} map - The Map to test. - * @param {(value: V, key: K, map: Map) => boolean} doesMatch - A predicate function that tests each entry. - * @returns {boolean} true if at least one entry satisfies the predicate, false otherwise. - * - * @example - * const map = new Map([ - * ['a', 1], - * ['b', 2], - * ['c', 3] - * ]); - * const result = some(map, (value) => value > 2); - * // result will be: true - * - * const result2 = some(map, (value) => value > 5); - * // result2 will be: false - */ -declare function some(map: Map, doesMatch: (value: V, key: K, map: Map) => boolean): boolean; - -export { some }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/some.js b/sdks/nodejs/node_modules/es-toolkit/dist/map/some.js deleted file mode 100644 index 2298de3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/some.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function some(map, doesMatch) { - for (const [key, value] of map) { - if (doesMatch(value, key, map)) { - return true; - } - } - return false; -} - -exports.some = some; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/map/some.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/map/some.mjs deleted file mode 100644 index 9a0fdd4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/map/some.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function some(map, doesMatch) { - for (const [key, value] of map) { - if (doesMatch(value, key, map)) { - return true; - } - } - return false; -} - -export { some }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/clamp.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/clamp.d.mts deleted file mode 100644 index 9e80fc6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/clamp.d.mts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Clamps a number within the inclusive upper bound. - * - * This function takes a number and a maximum bound, and returns the number clamped within the specified upper bound. - * If only one bound is provided, it returns the minimum of the value and the bound. - * - * @param {number} value - The number to clamp. - * @param {number} maximum - The maximum bound to clamp the number. - * @returns {number} The clamped number within the specified upper bound. - * - * @example - * const result1 = clamp(10, 5); // result1 will be 5, as 10 is clamped to the bound 5 - */ -declare function clamp(value: number, maximum: number): number; -/** - * Clamps a number within the inclusive lower and upper bounds. - * - * This function takes a number and two bounds, and returns the number clamped within the specified bounds. - * - * @param {number} value - The number to clamp. - * @param {number} minimum - The minimum bound to clamp the number. - * @param {number} maximum - The maximum bound to clamp the number. - * @returns {number} The clamped number within the specified bounds. - * - * @example - * const result2 = clamp(10, 5, 15); // result2 will be 10, as it is within the bounds 5 and 15 - * const result3 = clamp(2, 5, 15); // result3 will be 5, as 2 is clamped to the lower bound 5 - * const result4 = clamp(20, 5, 15); // result4 will be 15, as 20 is clamped to the upper bound 15 - */ -declare function clamp(value: number, minimum: number, maximum: number): number; - -export { clamp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/clamp.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/clamp.d.ts deleted file mode 100644 index 9e80fc6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/clamp.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Clamps a number within the inclusive upper bound. - * - * This function takes a number and a maximum bound, and returns the number clamped within the specified upper bound. - * If only one bound is provided, it returns the minimum of the value and the bound. - * - * @param {number} value - The number to clamp. - * @param {number} maximum - The maximum bound to clamp the number. - * @returns {number} The clamped number within the specified upper bound. - * - * @example - * const result1 = clamp(10, 5); // result1 will be 5, as 10 is clamped to the bound 5 - */ -declare function clamp(value: number, maximum: number): number; -/** - * Clamps a number within the inclusive lower and upper bounds. - * - * This function takes a number and two bounds, and returns the number clamped within the specified bounds. - * - * @param {number} value - The number to clamp. - * @param {number} minimum - The minimum bound to clamp the number. - * @param {number} maximum - The maximum bound to clamp the number. - * @returns {number} The clamped number within the specified bounds. - * - * @example - * const result2 = clamp(10, 5, 15); // result2 will be 10, as it is within the bounds 5 and 15 - * const result3 = clamp(2, 5, 15); // result3 will be 5, as 2 is clamped to the lower bound 5 - * const result4 = clamp(20, 5, 15); // result4 will be 15, as 20 is clamped to the upper bound 15 - */ -declare function clamp(value: number, minimum: number, maximum: number): number; - -export { clamp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/clamp.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/clamp.js deleted file mode 100644 index 44242ec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/clamp.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function clamp(value, bound1, bound2) { - if (bound2 == null) { - return Math.min(value, bound1); - } - return Math.min(Math.max(value, bound1), bound2); -} - -exports.clamp = clamp; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/clamp.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/clamp.mjs deleted file mode 100644 index bd15581..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/clamp.mjs +++ /dev/null @@ -1,8 +0,0 @@ -function clamp(value, bound1, bound2) { - if (bound2 == null) { - return Math.min(value, bound1); - } - return Math.min(Math.max(value, bound1), bound2); -} - -export { clamp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/inRange.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/inRange.d.mts deleted file mode 100644 index dbf89d5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/inRange.d.mts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Checks if the value is less than the maximum. - * - * @param {number} value The value to check. - * @param {number} maximum The upper bound of the range (exclusive). - * @returns {boolean} `true` if the value is less than the maximum, otherwise `false`. - * - * @example - * const result = inRange(3, 5); // result will be true. - * const result2 = inRange(5, 5); // result2 will be false. - */ -declare function inRange(value: number, maximum: number): boolean; -/** - * Checks if the value is within the range defined by minimum (inclusive) and maximum (exclusive). - * - * @param {number} value The value to check. - * @param {number} minimum The lower bound of the range (inclusive). - * @param {number} maximum The upper bound of the range (exclusive). - * @returns {boolean} `true` if the value is within the specified range, otherwise `false`. - * - * @example - * const result = inRange(3, 2, 5); // result will be true. - * const result2 = inRange(1, 2, 5); // result2 will be false. - */ -declare function inRange(value: number, minimum: number, maximum: number): boolean; - -export { inRange }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/inRange.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/inRange.d.ts deleted file mode 100644 index dbf89d5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/inRange.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Checks if the value is less than the maximum. - * - * @param {number} value The value to check. - * @param {number} maximum The upper bound of the range (exclusive). - * @returns {boolean} `true` if the value is less than the maximum, otherwise `false`. - * - * @example - * const result = inRange(3, 5); // result will be true. - * const result2 = inRange(5, 5); // result2 will be false. - */ -declare function inRange(value: number, maximum: number): boolean; -/** - * Checks if the value is within the range defined by minimum (inclusive) and maximum (exclusive). - * - * @param {number} value The value to check. - * @param {number} minimum The lower bound of the range (inclusive). - * @param {number} maximum The upper bound of the range (exclusive). - * @returns {boolean} `true` if the value is within the specified range, otherwise `false`. - * - * @example - * const result = inRange(3, 2, 5); // result will be true. - * const result2 = inRange(1, 2, 5); // result2 will be false. - */ -declare function inRange(value: number, minimum: number, maximum: number): boolean; - -export { inRange }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/inRange.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/inRange.js deleted file mode 100644 index fd9d897..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/inRange.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function inRange(value, minimum, maximum) { - if (maximum == null) { - maximum = minimum; - minimum = 0; - } - if (minimum >= maximum) { - throw new Error('The maximum value must be greater than the minimum value.'); - } - return minimum <= value && value < maximum; -} - -exports.inRange = inRange; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/inRange.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/inRange.mjs deleted file mode 100644 index 80a9513..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/inRange.mjs +++ /dev/null @@ -1,12 +0,0 @@ -function inRange(value, minimum, maximum) { - if (maximum == null) { - maximum = minimum; - minimum = 0; - } - if (minimum >= maximum) { - throw new Error('The maximum value must be greater than the minimum value.'); - } - return minimum <= value && value < maximum; -} - -export { inRange }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/index.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/index.d.mts deleted file mode 100644 index b302cd5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/index.d.mts +++ /dev/null @@ -1,13 +0,0 @@ -export { clamp } from './clamp.mjs'; -export { inRange } from './inRange.mjs'; -export { mean } from './mean.mjs'; -export { meanBy } from './meanBy.mjs'; -export { median } from './median.mjs'; -export { medianBy } from './medianBy.mjs'; -export { random } from './random.mjs'; -export { randomInt } from './randomInt.mjs'; -export { range } from './range.mjs'; -export { rangeRight } from './rangeRight.mjs'; -export { round } from './round.mjs'; -export { sum } from './sum.mjs'; -export { sumBy } from './sumBy.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/index.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/index.d.ts deleted file mode 100644 index 3cd67e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -export { clamp } from './clamp.js'; -export { inRange } from './inRange.js'; -export { mean } from './mean.js'; -export { meanBy } from './meanBy.js'; -export { median } from './median.js'; -export { medianBy } from './medianBy.js'; -export { random } from './random.js'; -export { randomInt } from './randomInt.js'; -export { range } from './range.js'; -export { rangeRight } from './rangeRight.js'; -export { round } from './round.js'; -export { sum } from './sum.js'; -export { sumBy } from './sumBy.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/index.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/index.js deleted file mode 100644 index cf39945..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/index.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const clamp = require('./clamp.js'); -const inRange = require('./inRange.js'); -const mean = require('./mean.js'); -const meanBy = require('./meanBy.js'); -const median = require('./median.js'); -const medianBy = require('./medianBy.js'); -const random = require('./random.js'); -const randomInt = require('./randomInt.js'); -const range = require('./range.js'); -const rangeRight = require('./rangeRight.js'); -const round = require('./round.js'); -const sum = require('./sum.js'); -const sumBy = require('./sumBy.js'); - - - -exports.clamp = clamp.clamp; -exports.inRange = inRange.inRange; -exports.mean = mean.mean; -exports.meanBy = meanBy.meanBy; -exports.median = median.median; -exports.medianBy = medianBy.medianBy; -exports.random = random.random; -exports.randomInt = randomInt.randomInt; -exports.range = range.range; -exports.rangeRight = rangeRight.rangeRight; -exports.round = round.round; -exports.sum = sum.sum; -exports.sumBy = sumBy.sumBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/index.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/index.mjs deleted file mode 100644 index b302cd5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/index.mjs +++ /dev/null @@ -1,13 +0,0 @@ -export { clamp } from './clamp.mjs'; -export { inRange } from './inRange.mjs'; -export { mean } from './mean.mjs'; -export { meanBy } from './meanBy.mjs'; -export { median } from './median.mjs'; -export { medianBy } from './medianBy.mjs'; -export { random } from './random.mjs'; -export { randomInt } from './randomInt.mjs'; -export { range } from './range.mjs'; -export { rangeRight } from './rangeRight.mjs'; -export { round } from './round.mjs'; -export { sum } from './sum.mjs'; -export { sumBy } from './sumBy.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/mean.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/mean.d.mts deleted file mode 100644 index 9d76079..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/mean.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Calculates the average of an array of numbers. - * - * If the array is empty, this function returns `NaN`. - * - * @param {number[]} nums - An array of numbers to calculate the average. - * @returns {number} The average of all the numbers in the array. - * - * @example - * const numbers = [1, 2, 3, 4, 5]; - * const result = mean(numbers); - * // result will be 3 - */ -declare function mean(nums: readonly number[]): number; - -export { mean }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/mean.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/mean.d.ts deleted file mode 100644 index 9d76079..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/mean.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Calculates the average of an array of numbers. - * - * If the array is empty, this function returns `NaN`. - * - * @param {number[]} nums - An array of numbers to calculate the average. - * @returns {number} The average of all the numbers in the array. - * - * @example - * const numbers = [1, 2, 3, 4, 5]; - * const result = mean(numbers); - * // result will be 3 - */ -declare function mean(nums: readonly number[]): number; - -export { mean }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/mean.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/mean.js deleted file mode 100644 index 7ea8502..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/mean.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const sum = require('./sum.js'); - -function mean(nums) { - return sum.sum(nums) / nums.length; -} - -exports.mean = mean; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/mean.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/mean.mjs deleted file mode 100644 index 1791029..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/mean.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { sum } from './sum.mjs'; - -function mean(nums) { - return sum(nums) / nums.length; -} - -export { mean }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/meanBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/meanBy.d.mts deleted file mode 100644 index 0fd94e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/meanBy.d.mts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Calculates the average of an array of numbers when applying - * the `getValue` function to each element. - * - * If the array is empty, this function returns `NaN`. - * - * @template T - The type of elements in the array. - * @param {T[]} items An array to calculate the average. - * @param {(element: T) => number} getValue A function that selects a numeric value from each element. - * @returns {number} The average of all the numbers as determined by the `getValue` function. - * - * @example - * meanBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: 2 - * meanBy([], x => x.a); // Returns: NaN - */ -declare function meanBy(items: readonly T[], getValue: (element: T) => number): number; - -export { meanBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/meanBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/meanBy.d.ts deleted file mode 100644 index 0fd94e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/meanBy.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Calculates the average of an array of numbers when applying - * the `getValue` function to each element. - * - * If the array is empty, this function returns `NaN`. - * - * @template T - The type of elements in the array. - * @param {T[]} items An array to calculate the average. - * @param {(element: T) => number} getValue A function that selects a numeric value from each element. - * @returns {number} The average of all the numbers as determined by the `getValue` function. - * - * @example - * meanBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: 2 - * meanBy([], x => x.a); // Returns: NaN - */ -declare function meanBy(items: readonly T[], getValue: (element: T) => number): number; - -export { meanBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/meanBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/meanBy.js deleted file mode 100644 index b13cc5a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/meanBy.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const sumBy = require('./sumBy.js'); - -function meanBy(items, getValue) { - return sumBy.sumBy(items, item => getValue(item)) / items.length; -} - -exports.meanBy = meanBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/meanBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/meanBy.mjs deleted file mode 100644 index 36c5e6d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/meanBy.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { sumBy } from './sumBy.mjs'; - -function meanBy(items, getValue) { - return sumBy(items, item => getValue(item)) / items.length; -} - -export { meanBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/median.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/median.d.mts deleted file mode 100644 index 71a2fec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/median.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Calculates the median of an array of numbers. - * - * The median is the middle value of a sorted array. - * If the array has an odd number of elements, the median is the middle value. - * If the array has an even number of elements, it returns the average of the two middle values. - * - * If the array is empty, this function returns `NaN`. - * - * @param {number[]} nums - An array of numbers to calculate the median. - * @returns {number} The median of all the numbers in the array. - * - * @example - * const arrayWithOddNumberOfElements = [1, 2, 3, 4, 5]; - * const result = median(arrayWithOddNumberOfElements); - * // result will be 3 - * - * @example - * const arrayWithEvenNumberOfElements = [1, 2, 3, 4]; - * const result = median(arrayWithEvenNumberOfElements); - * // result will be 2.5 - */ -declare function median(nums: readonly number[]): number; - -export { median }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/median.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/median.d.ts deleted file mode 100644 index 71a2fec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/median.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Calculates the median of an array of numbers. - * - * The median is the middle value of a sorted array. - * If the array has an odd number of elements, the median is the middle value. - * If the array has an even number of elements, it returns the average of the two middle values. - * - * If the array is empty, this function returns `NaN`. - * - * @param {number[]} nums - An array of numbers to calculate the median. - * @returns {number} The median of all the numbers in the array. - * - * @example - * const arrayWithOddNumberOfElements = [1, 2, 3, 4, 5]; - * const result = median(arrayWithOddNumberOfElements); - * // result will be 3 - * - * @example - * const arrayWithEvenNumberOfElements = [1, 2, 3, 4]; - * const result = median(arrayWithEvenNumberOfElements); - * // result will be 2.5 - */ -declare function median(nums: readonly number[]): number; - -export { median }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/median.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/median.js deleted file mode 100644 index 5794bcc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/median.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function median(nums) { - if (nums.length === 0) { - return NaN; - } - const sorted = nums.slice().sort((a, b) => a - b); - const middleIndex = Math.floor(sorted.length / 2); - if (sorted.length % 2 === 0) { - return (sorted[middleIndex - 1] + sorted[middleIndex]) / 2; - } - else { - return sorted[middleIndex]; - } -} - -exports.median = median; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/median.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/median.mjs deleted file mode 100644 index 3e9c75c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/median.mjs +++ /dev/null @@ -1,15 +0,0 @@ -function median(nums) { - if (nums.length === 0) { - return NaN; - } - const sorted = nums.slice().sort((a, b) => a - b); - const middleIndex = Math.floor(sorted.length / 2); - if (sorted.length % 2 === 0) { - return (sorted[middleIndex - 1] + sorted[middleIndex]) / 2; - } - else { - return sorted[middleIndex]; - } -} - -export { median }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/medianBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/medianBy.d.mts deleted file mode 100644 index 476b71f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/medianBy.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Calculates the median of an array of elements when applying - * the `getValue` function to each element. - * - * The median is the middle value of a sorted array. - * If the array has an odd number of elements, the median is the middle value. - * If the array has an even number of elements, it returns the average of the two middle values. - * - * If the array is empty, this function returns `NaN`. - * - * @template T - The type of elements in the array. - * @param {T[]} items An array to calculate the median. - * @param {(element: T) => number} getValue A function that selects a numeric value from each element. - * @returns {number} The median of all the numbers as determined by the `getValue` function. - * - * @example - * medianBy([{ a: 1 }, { a: 2 }, { a: 3 }, { a: 4 }, { a: 5 }], x => x.a); // Returns: 3 - * medianBy([{ a: 1 }, { a: 2 }, { a: 3 }, { a: 4 }], x => x.a); // Returns: 2.5 - * medianBy([], x => x.a); // Returns: NaN - */ -declare function medianBy(items: readonly T[], getValue: (element: T) => number): number; - -export { medianBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/medianBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/medianBy.d.ts deleted file mode 100644 index 476b71f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/medianBy.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Calculates the median of an array of elements when applying - * the `getValue` function to each element. - * - * The median is the middle value of a sorted array. - * If the array has an odd number of elements, the median is the middle value. - * If the array has an even number of elements, it returns the average of the two middle values. - * - * If the array is empty, this function returns `NaN`. - * - * @template T - The type of elements in the array. - * @param {T[]} items An array to calculate the median. - * @param {(element: T) => number} getValue A function that selects a numeric value from each element. - * @returns {number} The median of all the numbers as determined by the `getValue` function. - * - * @example - * medianBy([{ a: 1 }, { a: 2 }, { a: 3 }, { a: 4 }, { a: 5 }], x => x.a); // Returns: 3 - * medianBy([{ a: 1 }, { a: 2 }, { a: 3 }, { a: 4 }], x => x.a); // Returns: 2.5 - * medianBy([], x => x.a); // Returns: NaN - */ -declare function medianBy(items: readonly T[], getValue: (element: T) => number): number; - -export { medianBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/medianBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/medianBy.js deleted file mode 100644 index d133b2f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/medianBy.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const median = require('./median.js'); - -function medianBy(items, getValue) { - const nums = items.map(x => getValue(x)); - return median.median(nums); -} - -exports.medianBy = medianBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/medianBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/medianBy.mjs deleted file mode 100644 index 65b0526..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/medianBy.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { median } from './median.mjs'; - -function medianBy(items, getValue) { - const nums = items.map(x => getValue(x)); - return median(nums); -} - -export { medianBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/random.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/random.d.mts deleted file mode 100644 index fb520a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/random.d.mts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Generate a random number within the given range. - * - * If only one argument is provided, a number between `0` and the given number is returned. - * - * @param {number} maximum - The upper bound (exclusive). - * @returns {number} A random number between 0 (inclusive) and maximum (exclusive). The number can be an integer or a decimal. - * @throws {Error} Throws an error if `maximum` is not greater than `0`. - * - * @example - * const result1 = random(5); // Returns a random number between 0 and 5. - * const result2 = random(0); // If the `maximum` is less than or equal to 0, an error is thrown. - */ -declare function random(maximum: number): number; -/** - * Generate a random number within the given range. - * - * @param {number} minimum - The lower bound (inclusive). - * @param {number} maximum - The upper bound (exclusive). - * @returns {number} A random number between minimum (inclusive) and maximum (exclusive). The number can be an integer or a decimal. - * @throws {Error} Throws an error if `maximum` is not greater than `minimum`. - * - * @example - * const result1 = random(0, 5); // Returns a random number between 0 and 5. - * const result2 = random(5, 0); // If the minimum is greater than the maximum, an error is thrown. - * const result3 = random(5, 5); // If the minimum is equal to the maximum, an error is thrown. - */ -declare function random(minimum: number, maximum: number): number; - -export { random }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/random.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/random.d.ts deleted file mode 100644 index fb520a9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/random.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Generate a random number within the given range. - * - * If only one argument is provided, a number between `0` and the given number is returned. - * - * @param {number} maximum - The upper bound (exclusive). - * @returns {number} A random number between 0 (inclusive) and maximum (exclusive). The number can be an integer or a decimal. - * @throws {Error} Throws an error if `maximum` is not greater than `0`. - * - * @example - * const result1 = random(5); // Returns a random number between 0 and 5. - * const result2 = random(0); // If the `maximum` is less than or equal to 0, an error is thrown. - */ -declare function random(maximum: number): number; -/** - * Generate a random number within the given range. - * - * @param {number} minimum - The lower bound (inclusive). - * @param {number} maximum - The upper bound (exclusive). - * @returns {number} A random number between minimum (inclusive) and maximum (exclusive). The number can be an integer or a decimal. - * @throws {Error} Throws an error if `maximum` is not greater than `minimum`. - * - * @example - * const result1 = random(0, 5); // Returns a random number between 0 and 5. - * const result2 = random(5, 0); // If the minimum is greater than the maximum, an error is thrown. - * const result3 = random(5, 5); // If the minimum is equal to the maximum, an error is thrown. - */ -declare function random(minimum: number, maximum: number): number; - -export { random }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/random.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/random.js deleted file mode 100644 index 458a9a6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/random.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function random(minimum, maximum) { - if (maximum == null) { - maximum = minimum; - minimum = 0; - } - if (minimum >= maximum) { - throw new Error('Invalid input: The maximum value must be greater than the minimum value.'); - } - return Math.random() * (maximum - minimum) + minimum; -} - -exports.random = random; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/random.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/random.mjs deleted file mode 100644 index 833da4b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/random.mjs +++ /dev/null @@ -1,12 +0,0 @@ -function random(minimum, maximum) { - if (maximum == null) { - maximum = minimum; - minimum = 0; - } - if (minimum >= maximum) { - throw new Error('Invalid input: The maximum value must be greater than the minimum value.'); - } - return Math.random() * (maximum - minimum) + minimum; -} - -export { random }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/randomInt.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/randomInt.d.mts deleted file mode 100644 index 2cb644d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/randomInt.d.mts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Generates a random integer between 0 (inclusive) and the given maximum (exclusive). - * - * @param {number} maximum - The upper bound (exclusive). - * @returns {number} A random integer between 0 (inclusive) and maximum (exclusive). - * @throws {Error} Throws an error if `maximum` is not greater than `0`. - * - * @example - * const result = randomInt(5); // result will be a random integer between 0 (inclusive) and 5 (exclusive) - */ -declare function randomInt(maximum: number): number; -/** - * Generates a random integer between minimum (inclusive) and maximum (exclusive). - * - * @param {number} minimum - The lower bound (inclusive). - * @param {number} maximum - The upper bound (exclusive). - * @returns {number} A random integer between minimum (inclusive) and maximum (exclusive). - * @throws {Error} Throws an error if `maximum` is not greater than `minimum`. - * - * @example - * const result = randomInt(0, 5); // result will be a random integer between 0 (inclusive) and 5 (exclusive) - * const result2 = randomInt(5, 0); // This will throw an error - */ -declare function randomInt(minimum: number, maximum: number): number; - -export { randomInt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/randomInt.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/randomInt.d.ts deleted file mode 100644 index 2cb644d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/randomInt.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Generates a random integer between 0 (inclusive) and the given maximum (exclusive). - * - * @param {number} maximum - The upper bound (exclusive). - * @returns {number} A random integer between 0 (inclusive) and maximum (exclusive). - * @throws {Error} Throws an error if `maximum` is not greater than `0`. - * - * @example - * const result = randomInt(5); // result will be a random integer between 0 (inclusive) and 5 (exclusive) - */ -declare function randomInt(maximum: number): number; -/** - * Generates a random integer between minimum (inclusive) and maximum (exclusive). - * - * @param {number} minimum - The lower bound (inclusive). - * @param {number} maximum - The upper bound (exclusive). - * @returns {number} A random integer between minimum (inclusive) and maximum (exclusive). - * @throws {Error} Throws an error if `maximum` is not greater than `minimum`. - * - * @example - * const result = randomInt(0, 5); // result will be a random integer between 0 (inclusive) and 5 (exclusive) - * const result2 = randomInt(5, 0); // This will throw an error - */ -declare function randomInt(minimum: number, maximum: number): number; - -export { randomInt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/randomInt.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/randomInt.js deleted file mode 100644 index 51a4f47..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/randomInt.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const random = require('./random.js'); - -function randomInt(minimum, maximum) { - return Math.floor(random.random(minimum, maximum)); -} - -exports.randomInt = randomInt; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/randomInt.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/randomInt.mjs deleted file mode 100644 index d6e8252..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/randomInt.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { random } from './random.mjs'; - -function randomInt(minimum, maximum) { - return Math.floor(random(minimum, maximum)); -} - -export { randomInt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/range.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/range.d.mts deleted file mode 100644 index a355964..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/range.d.mts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Returns an array of numbers from `0` (inclusive) to `end` (exclusive), incrementing by `1`. - * - * @param {number} end - The end number of the range (exclusive). - * @returns {number[]} An array of numbers from `0` (inclusive) to `end` (exclusive) with a step of `1`. - * - * @example - * // Returns [0, 1, 2, 3] - * range(4); - */ -declare function range(end: number): number[]; -/** - * Returns an array of numbers from `start` (inclusive) to `end` (exclusive), incrementing by `1`. - * - * @param {number} start - The starting number of the range (inclusive). - * @param {number} end - The end number of the range (exclusive). - * @returns {number[]} An array of numbers from `start` (inclusive) to `end` (exclusive) with a step of `1`. - * - * @example - * // Returns [1, 2, 3] - * range(1, 4); - */ -declare function range(start: number, end: number): number[]; -/** - * Returns an array of numbers from `start` (inclusive) to `end` (exclusive), incrementing by `step`. - * - * @param {number} start - The starting number of the range (inclusive). - * @param {number} end - The end number of the range (exclusive). - * @param {number} step - The step value for the range. - * @returns {number[]} An array of numbers from `start` (inclusive) to `end` (exclusive) with the specified `step`. - * - * @example - * // Returns [0, 5, 10, 15] - * range(0, 20, 5); - */ -declare function range(start: number, end: number, step: number): number[]; - -export { range }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/range.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/range.d.ts deleted file mode 100644 index a355964..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/range.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Returns an array of numbers from `0` (inclusive) to `end` (exclusive), incrementing by `1`. - * - * @param {number} end - The end number of the range (exclusive). - * @returns {number[]} An array of numbers from `0` (inclusive) to `end` (exclusive) with a step of `1`. - * - * @example - * // Returns [0, 1, 2, 3] - * range(4); - */ -declare function range(end: number): number[]; -/** - * Returns an array of numbers from `start` (inclusive) to `end` (exclusive), incrementing by `1`. - * - * @param {number} start - The starting number of the range (inclusive). - * @param {number} end - The end number of the range (exclusive). - * @returns {number[]} An array of numbers from `start` (inclusive) to `end` (exclusive) with a step of `1`. - * - * @example - * // Returns [1, 2, 3] - * range(1, 4); - */ -declare function range(start: number, end: number): number[]; -/** - * Returns an array of numbers from `start` (inclusive) to `end` (exclusive), incrementing by `step`. - * - * @param {number} start - The starting number of the range (inclusive). - * @param {number} end - The end number of the range (exclusive). - * @param {number} step - The step value for the range. - * @returns {number[]} An array of numbers from `start` (inclusive) to `end` (exclusive) with the specified `step`. - * - * @example - * // Returns [0, 5, 10, 15] - * range(0, 20, 5); - */ -declare function range(start: number, end: number, step: number): number[]; - -export { range }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/range.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/range.js deleted file mode 100644 index e6e2d0e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/range.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function range(start, end, step = 1) { - if (end == null) { - end = start; - start = 0; - } - if (!Number.isInteger(step) || step === 0) { - throw new Error(`The step value must be a non-zero integer.`); - } - const length = Math.max(Math.ceil((end - start) / step), 0); - const result = new Array(length); - for (let i = 0; i < length; i++) { - result[i] = start + i * step; - } - return result; -} - -exports.range = range; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/range.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/range.mjs deleted file mode 100644 index 63e71f3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/range.mjs +++ /dev/null @@ -1,17 +0,0 @@ -function range(start, end, step = 1) { - if (end == null) { - end = start; - start = 0; - } - if (!Number.isInteger(step) || step === 0) { - throw new Error(`The step value must be a non-zero integer.`); - } - const length = Math.max(Math.ceil((end - start) / step), 0); - const result = new Array(length); - for (let i = 0; i < length; i++) { - result[i] = start + i * step; - } - return result; -} - -export { range }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/rangeRight.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/rangeRight.d.mts deleted file mode 100644 index 9312f74..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/rangeRight.d.mts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Returns an array of numbers from `end` (exclusive) to `0` (inclusive), decrementing by `1`. - * - * @param {number} end - The end number of the range (exclusive). - * @returns {number[]} An array of numbers from `end` (exclusive) to `0` (inclusive) with a step of `1`. - * - * @example - * // Returns [3, 2, 1, 0] - * rangeRight(4); - */ -declare function rangeRight(end: number): number[]; -/** - * Returns an array of numbers from `end` (exclusive) to `start` (inclusive), decrementing by `1`. - * - * @param {number} start - The starting number of the range (inclusive). - * @param {number} end - The end number of the range (exclusive). - * @returns {number[]} An array of numbers from `end` (exclusive) to `start` (inclusive) with a step of `1`. - * - * @example - * // Returns [3, 2, 1] - * rangeRight(1, 4); - */ -declare function rangeRight(start: number, end: number): number[]; -/** - * Returns an array of numbers from `end` (exclusive) to `start` (inclusive), decrementing by `step`. - * - * @param {number} start - The starting number of the range (inclusive). - * @param {number} end - The end number of the range (exclusive). - * @param {number} step - The step value for the range. - * @returns {number[]} An array of numbers from `end` (exclusive) to `start` (inclusive) with the specified `step`. - * - * @example - * // Returns [15, 10, 5, 0] - * rangeRight(0, 20, 5); - */ -declare function rangeRight(start: number, end: number, step: number): number[]; - -export { rangeRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/rangeRight.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/rangeRight.d.ts deleted file mode 100644 index 9312f74..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/rangeRight.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Returns an array of numbers from `end` (exclusive) to `0` (inclusive), decrementing by `1`. - * - * @param {number} end - The end number of the range (exclusive). - * @returns {number[]} An array of numbers from `end` (exclusive) to `0` (inclusive) with a step of `1`. - * - * @example - * // Returns [3, 2, 1, 0] - * rangeRight(4); - */ -declare function rangeRight(end: number): number[]; -/** - * Returns an array of numbers from `end` (exclusive) to `start` (inclusive), decrementing by `1`. - * - * @param {number} start - The starting number of the range (inclusive). - * @param {number} end - The end number of the range (exclusive). - * @returns {number[]} An array of numbers from `end` (exclusive) to `start` (inclusive) with a step of `1`. - * - * @example - * // Returns [3, 2, 1] - * rangeRight(1, 4); - */ -declare function rangeRight(start: number, end: number): number[]; -/** - * Returns an array of numbers from `end` (exclusive) to `start` (inclusive), decrementing by `step`. - * - * @param {number} start - The starting number of the range (inclusive). - * @param {number} end - The end number of the range (exclusive). - * @param {number} step - The step value for the range. - * @returns {number[]} An array of numbers from `end` (exclusive) to `start` (inclusive) with the specified `step`. - * - * @example - * // Returns [15, 10, 5, 0] - * rangeRight(0, 20, 5); - */ -declare function rangeRight(start: number, end: number, step: number): number[]; - -export { rangeRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/rangeRight.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/rangeRight.js deleted file mode 100644 index 7434f1c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/rangeRight.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function rangeRight(start, end, step = 1) { - if (end == null) { - end = start; - start = 0; - } - if (!Number.isInteger(step) || step === 0) { - throw new Error(`The step value must be a non-zero integer.`); - } - const length = Math.max(Math.ceil((end - start) / step), 0); - const result = new Array(length); - for (let i = 0; i < length; i++) { - result[i] = start + (length - i - 1) * step; - } - return result; -} - -exports.rangeRight = rangeRight; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/rangeRight.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/rangeRight.mjs deleted file mode 100644 index 3e62ed6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/rangeRight.mjs +++ /dev/null @@ -1,17 +0,0 @@ -function rangeRight(start, end, step = 1) { - if (end == null) { - end = start; - start = 0; - } - if (!Number.isInteger(step) || step === 0) { - throw new Error(`The step value must be a non-zero integer.`); - } - const length = Math.max(Math.ceil((end - start) / step), 0); - const result = new Array(length); - for (let i = 0; i < length; i++) { - result[i] = start + (length - i - 1) * step; - } - return result; -} - -export { rangeRight }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/round.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/round.d.mts deleted file mode 100644 index 0334d0a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/round.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Rounds a number to a specified precision. - * - * This function takes a number and an optional precision value, and returns the number rounded - * to the specified number of decimal places. - * - * @param {number} value - The number to round. - * @param {number} [precision=0] - The number of decimal places to round to. Defaults to 0. - * @returns {number} The rounded number. - * @throws {Error} Throws an error if `Precision` is not integer. - * - * @example - * const result1 = round(1.2345); // result1 will be 1 - * const result2 = round(1.2345, 2); // result2 will be 1.23 - * const result3 = round(1.2345, 3); // result3 will be 1.235 - * const result4 = round(1.2345, 3.1); // This will throw an error - */ -declare function round(value: number, precision?: number): number; - -export { round }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/round.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/round.d.ts deleted file mode 100644 index 0334d0a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/round.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Rounds a number to a specified precision. - * - * This function takes a number and an optional precision value, and returns the number rounded - * to the specified number of decimal places. - * - * @param {number} value - The number to round. - * @param {number} [precision=0] - The number of decimal places to round to. Defaults to 0. - * @returns {number} The rounded number. - * @throws {Error} Throws an error if `Precision` is not integer. - * - * @example - * const result1 = round(1.2345); // result1 will be 1 - * const result2 = round(1.2345, 2); // result2 will be 1.23 - * const result3 = round(1.2345, 3); // result3 will be 1.235 - * const result4 = round(1.2345, 3.1); // This will throw an error - */ -declare function round(value: number, precision?: number): number; - -export { round }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/round.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/round.js deleted file mode 100644 index ade7798..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/round.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function round(value, precision = 0) { - if (!Number.isInteger(precision)) { - throw new Error('Precision must be an integer.'); - } - const multiplier = Math.pow(10, precision); - return Math.round(value * multiplier) / multiplier; -} - -exports.round = round; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/round.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/round.mjs deleted file mode 100644 index 6fc5995..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/round.mjs +++ /dev/null @@ -1,9 +0,0 @@ -function round(value, precision = 0) { - if (!Number.isInteger(precision)) { - throw new Error('Precision must be an integer.'); - } - const multiplier = Math.pow(10, precision); - return Math.round(value * multiplier) / multiplier; -} - -export { round }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/sum.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/sum.d.mts deleted file mode 100644 index 2813d6d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/sum.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Calculates the sum of an array of numbers. - * - * This function takes an array of numbers and returns the sum of all the elements in the array. - * - * @param {number[]} nums - An array of numbers to be summed. - * @returns {number} The sum of all the numbers in the array. - * - * @example - * const numbers = [1, 2, 3, 4, 5]; - * const result = sum(numbers); - * // result will be 15 - */ -declare function sum(nums: readonly number[]): number; - -export { sum }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/sum.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/sum.d.ts deleted file mode 100644 index 2813d6d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/sum.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Calculates the sum of an array of numbers. - * - * This function takes an array of numbers and returns the sum of all the elements in the array. - * - * @param {number[]} nums - An array of numbers to be summed. - * @returns {number} The sum of all the numbers in the array. - * - * @example - * const numbers = [1, 2, 3, 4, 5]; - * const result = sum(numbers); - * // result will be 15 - */ -declare function sum(nums: readonly number[]): number; - -export { sum }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/sum.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/sum.js deleted file mode 100644 index be01c52..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/sum.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function sum(nums) { - let result = 0; - for (let i = 0; i < nums.length; i++) { - result += nums[i]; - } - return result; -} - -exports.sum = sum; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/sum.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/sum.mjs deleted file mode 100644 index 1d05680..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/sum.mjs +++ /dev/null @@ -1,9 +0,0 @@ -function sum(nums) { - let result = 0; - for (let i = 0; i < nums.length; i++) { - result += nums[i]; - } - return result; -} - -export { sum }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/sumBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/math/sumBy.d.mts deleted file mode 100644 index af67139..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/sumBy.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Calculates the sum of an array of numbers when applying - * the `getValue` function to each element. - * - * If the array is empty, this function returns `0`. - * - * @template T - The type of elements in the array. - * @param {readonly T[]} items - An array to calculate the sum. - * @param {(element: T, index: number) => number} getValue - A function that selects a numeric value from each element. - * It receives the element and its zero‑based index in the array. - * @returns {number} The sum of all the numbers as determined by the `getValue` function. - * - * @example - * sumBy([{ a: 1 }, { a: 2 }, { a: 3 }], (x, i) => x.a * i); // Returns: 8 - * sumBy([], () => 1); // Returns: 0 - */ -declare function sumBy(items: readonly T[], getValue: (element: T, index: number) => number): number; - -export { sumBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/sumBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/math/sumBy.d.ts deleted file mode 100644 index af67139..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/sumBy.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Calculates the sum of an array of numbers when applying - * the `getValue` function to each element. - * - * If the array is empty, this function returns `0`. - * - * @template T - The type of elements in the array. - * @param {readonly T[]} items - An array to calculate the sum. - * @param {(element: T, index: number) => number} getValue - A function that selects a numeric value from each element. - * It receives the element and its zero‑based index in the array. - * @returns {number} The sum of all the numbers as determined by the `getValue` function. - * - * @example - * sumBy([{ a: 1 }, { a: 2 }, { a: 3 }], (x, i) => x.a * i); // Returns: 8 - * sumBy([], () => 1); // Returns: 0 - */ -declare function sumBy(items: readonly T[], getValue: (element: T, index: number) => number): number; - -export { sumBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/sumBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/math/sumBy.js deleted file mode 100644 index 848ca9a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/sumBy.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function sumBy(items, getValue) { - let result = 0; - for (let i = 0; i < items.length; i++) { - result += getValue(items[i], i); - } - return result; -} - -exports.sumBy = sumBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/math/sumBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/math/sumBy.mjs deleted file mode 100644 index 623417b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/math/sumBy.mjs +++ /dev/null @@ -1,9 +0,0 @@ -function sumBy(items, getValue) { - let result = 0; - for (let i = 0; i < items.length; i++) { - result += getValue(items[i], i); - } - return result; -} - -export { sumBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/clone.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/clone.d.mts deleted file mode 100644 index a663675..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/clone.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creates a shallow clone of the given object. - * - * @template T - The type of the object. - * @param {T} obj - The object to clone. - * @returns {T} - A shallow clone of the given object. - * - * @example - * // Clone a primitive values - * const num = 29; - * const clonedNum = clone(num); - * console.log(clonedNum); // 29 - * console.log(clonedNum === num); // true - * - * @example - * // Clone an array - * const arr = [1, 2, 3]; - * const clonedArr = clone(arr); - * console.log(clonedArr); // [1, 2, 3] - * console.log(clonedArr === arr); // false - * - * @example - * // Clone an object - * const obj = { a: 1, b: 'es-toolkit', c: [1, 2, 3] }; - * const clonedObj = clone(obj); - * console.log(clonedObj); // { a: 1, b: 'es-toolkit', c: [1, 2, 3] } - * console.log(clonedObj === obj); // false - */ -declare function clone(obj: T): T; - -export { clone }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/clone.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/clone.d.ts deleted file mode 100644 index a663675..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/clone.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creates a shallow clone of the given object. - * - * @template T - The type of the object. - * @param {T} obj - The object to clone. - * @returns {T} - A shallow clone of the given object. - * - * @example - * // Clone a primitive values - * const num = 29; - * const clonedNum = clone(num); - * console.log(clonedNum); // 29 - * console.log(clonedNum === num); // true - * - * @example - * // Clone an array - * const arr = [1, 2, 3]; - * const clonedArr = clone(arr); - * console.log(clonedArr); // [1, 2, 3] - * console.log(clonedArr === arr); // false - * - * @example - * // Clone an object - * const obj = { a: 1, b: 'es-toolkit', c: [1, 2, 3] }; - * const clonedObj = clone(obj); - * console.log(clonedObj); // { a: 1, b: 'es-toolkit', c: [1, 2, 3] } - * console.log(clonedObj === obj); // false - */ -declare function clone(obj: T): T; - -export { clone }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/clone.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/clone.js deleted file mode 100644 index 624c347..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/clone.js +++ /dev/null @@ -1,57 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isPrimitive = require('../predicate/isPrimitive.js'); -const isTypedArray = require('../predicate/isTypedArray.js'); - -function clone(obj) { - if (isPrimitive.isPrimitive(obj)) { - return obj; - } - if (Array.isArray(obj) || - isTypedArray.isTypedArray(obj) || - obj instanceof ArrayBuffer || - (typeof SharedArrayBuffer !== 'undefined' && obj instanceof SharedArrayBuffer)) { - return obj.slice(0); - } - const prototype = Object.getPrototypeOf(obj); - if (prototype == null) { - return Object.assign(Object.create(prototype), obj); - } - const Constructor = prototype.constructor; - if (obj instanceof Date || obj instanceof Map || obj instanceof Set) { - return new Constructor(obj); - } - if (obj instanceof RegExp) { - const newRegExp = new Constructor(obj); - newRegExp.lastIndex = obj.lastIndex; - return newRegExp; - } - if (obj instanceof DataView) { - return new Constructor(obj.buffer.slice(0)); - } - if (obj instanceof Error) { - let newError; - if (obj instanceof AggregateError) { - newError = new Constructor(obj.errors, obj.message, { cause: obj.cause }); - } - else { - newError = new Constructor(obj.message, { cause: obj.cause }); - } - newError.stack = obj.stack; - Object.assign(newError, obj); - return newError; - } - if (typeof File !== 'undefined' && obj instanceof File) { - const newFile = new Constructor([obj], obj.name, { type: obj.type, lastModified: obj.lastModified }); - return newFile; - } - if (typeof obj === 'object') { - const newObject = Object.create(prototype); - return Object.assign(newObject, obj); - } - return obj; -} - -exports.clone = clone; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/clone.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/clone.mjs deleted file mode 100644 index 47d5c51..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/clone.mjs +++ /dev/null @@ -1,53 +0,0 @@ -import { isPrimitive } from '../predicate/isPrimitive.mjs'; -import { isTypedArray } from '../predicate/isTypedArray.mjs'; - -function clone(obj) { - if (isPrimitive(obj)) { - return obj; - } - if (Array.isArray(obj) || - isTypedArray(obj) || - obj instanceof ArrayBuffer || - (typeof SharedArrayBuffer !== 'undefined' && obj instanceof SharedArrayBuffer)) { - return obj.slice(0); - } - const prototype = Object.getPrototypeOf(obj); - if (prototype == null) { - return Object.assign(Object.create(prototype), obj); - } - const Constructor = prototype.constructor; - if (obj instanceof Date || obj instanceof Map || obj instanceof Set) { - return new Constructor(obj); - } - if (obj instanceof RegExp) { - const newRegExp = new Constructor(obj); - newRegExp.lastIndex = obj.lastIndex; - return newRegExp; - } - if (obj instanceof DataView) { - return new Constructor(obj.buffer.slice(0)); - } - if (obj instanceof Error) { - let newError; - if (obj instanceof AggregateError) { - newError = new Constructor(obj.errors, obj.message, { cause: obj.cause }); - } - else { - newError = new Constructor(obj.message, { cause: obj.cause }); - } - newError.stack = obj.stack; - Object.assign(newError, obj); - return newError; - } - if (typeof File !== 'undefined' && obj instanceof File) { - const newFile = new Constructor([obj], obj.name, { type: obj.type, lastModified: obj.lastModified }); - return newFile; - } - if (typeof obj === 'object') { - const newObject = Object.create(prototype); - return Object.assign(newObject, obj); - } - return obj; -} - -export { clone }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeep.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeep.d.mts deleted file mode 100644 index 1a7c1e2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeep.d.mts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Creates a deep clone of the given object. - * - * @template T - The type of the object. - * @param {T} obj - The object to clone. - * @returns {T} - A deep clone of the given object. - * - * @example - * // Clone a primitive values - * const num = 29; - * const clonedNum = cloneDeep(num); - * console.log(clonedNum); // 29 - * console.log(clonedNum === num); // true - * - * @example - * // Clone an array - * const arr = [1, 2, 3]; - * const clonedArr = cloneDeep(arr); - * console.log(clonedArr); // [1, 2, 3] - * console.log(clonedArr === arr); // false - * - * @example - * // Clone an array with nested objects - * const arr = [1, { a: 1 }, [1, 2, 3]]; - * const clonedArr = cloneDeep(arr); - * arr[1].a = 2; - * console.log(arr); // [1, { a: 2 }, [1, 2, 3]] - * console.log(clonedArr); // [1, { a: 1 }, [1, 2, 3]] - * console.log(clonedArr === arr); // false - * - * @example - * // Clone an object - * const obj = { a: 1, b: 'es-toolkit', c: [1, 2, 3] }; - * const clonedObj = cloneDeep(obj); - * console.log(clonedObj); // { a: 1, b: 'es-toolkit', c: [1, 2, 3] } - * console.log(clonedObj === obj); // false - * - * @example - * // Clone an object with nested objects - * const obj = { a: 1, b: { c: 1 } }; - * const clonedObj = cloneDeep(obj); - * obj.b.c = 2; - * console.log(obj); // { a: 1, b: { c: 2 } } - * console.log(clonedObj); // { a: 1, b: { c: 1 } } - * console.log(clonedObj === obj); // false - */ -declare function cloneDeep(obj: T): T; - -export { cloneDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeep.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeep.d.ts deleted file mode 100644 index 1a7c1e2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeep.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Creates a deep clone of the given object. - * - * @template T - The type of the object. - * @param {T} obj - The object to clone. - * @returns {T} - A deep clone of the given object. - * - * @example - * // Clone a primitive values - * const num = 29; - * const clonedNum = cloneDeep(num); - * console.log(clonedNum); // 29 - * console.log(clonedNum === num); // true - * - * @example - * // Clone an array - * const arr = [1, 2, 3]; - * const clonedArr = cloneDeep(arr); - * console.log(clonedArr); // [1, 2, 3] - * console.log(clonedArr === arr); // false - * - * @example - * // Clone an array with nested objects - * const arr = [1, { a: 1 }, [1, 2, 3]]; - * const clonedArr = cloneDeep(arr); - * arr[1].a = 2; - * console.log(arr); // [1, { a: 2 }, [1, 2, 3]] - * console.log(clonedArr); // [1, { a: 1 }, [1, 2, 3]] - * console.log(clonedArr === arr); // false - * - * @example - * // Clone an object - * const obj = { a: 1, b: 'es-toolkit', c: [1, 2, 3] }; - * const clonedObj = cloneDeep(obj); - * console.log(clonedObj); // { a: 1, b: 'es-toolkit', c: [1, 2, 3] } - * console.log(clonedObj === obj); // false - * - * @example - * // Clone an object with nested objects - * const obj = { a: 1, b: { c: 1 } }; - * const clonedObj = cloneDeep(obj); - * obj.b.c = 2; - * console.log(obj); // { a: 1, b: { c: 2 } } - * console.log(clonedObj); // { a: 1, b: { c: 1 } } - * console.log(clonedObj === obj); // false - */ -declare function cloneDeep(obj: T): T; - -export { cloneDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeep.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeep.js deleted file mode 100644 index 12954ae..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeep.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const cloneDeepWith = require('./cloneDeepWith.js'); - -function cloneDeep(obj) { - return cloneDeepWith.cloneDeepWithImpl(obj, undefined, obj, new Map(), undefined); -} - -exports.cloneDeep = cloneDeep; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeep.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeep.mjs deleted file mode 100644 index 626b1f2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeep.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { cloneDeepWithImpl } from './cloneDeepWith.mjs'; - -function cloneDeep(obj) { - return cloneDeepWithImpl(obj, undefined, obj, new Map(), undefined); -} - -export { cloneDeep }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeepWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeepWith.d.mts deleted file mode 100644 index 9ac0b31..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeepWith.d.mts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Deeply clones the given object. - * - * You can customize the deep cloning process using the `cloneValue` function. - * The function takes the current value `value`, the property name `key`, and the entire object `obj` as arguments. - * If the function returns a value, that value is used; - * if it returns `undefined`, the default cloning method is used. - * - * @template T - The type of the object. - * @param {T} obj - The object to clone. - * @param {Function} [cloneValue] - A function to customize the cloning process. - * @returns {T} - A deep clone of the given object. - * - * @example - * // Clone a primitive value - * const num = 29; - * const clonedNum = cloneDeepWith(num); - * console.log(clonedNum); // 29 - * console.log(clonedNum === num); // true - * - * @example - * // Clone an object with a customizer - * const obj = { a: 1, b: 2 }; - * const clonedObj = cloneDeepWith(obj, (value) => { - * if (typeof value === 'number') { - * return value * 2; // Double the number - * } - * }); - * console.log(clonedObj); // { a: 2, b: 4 } - * console.log(clonedObj === obj); // false - * - * @example - * // Clone an array with a customizer - * const arr = [1, 2, 3]; - * const clonedArr = cloneDeepWith(arr, (value) => { - * return value + 1; // Increment each value - * }); - * console.log(clonedArr); // [2, 3, 4] - * console.log(clonedArr === arr); // false - */ -declare function cloneDeepWith(obj: T, cloneValue: (value: any, key: PropertyKey | undefined, obj: T, stack: Map) => any): T; - -export { cloneDeepWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeepWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeepWith.d.ts deleted file mode 100644 index 9ac0b31..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeepWith.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Deeply clones the given object. - * - * You can customize the deep cloning process using the `cloneValue` function. - * The function takes the current value `value`, the property name `key`, and the entire object `obj` as arguments. - * If the function returns a value, that value is used; - * if it returns `undefined`, the default cloning method is used. - * - * @template T - The type of the object. - * @param {T} obj - The object to clone. - * @param {Function} [cloneValue] - A function to customize the cloning process. - * @returns {T} - A deep clone of the given object. - * - * @example - * // Clone a primitive value - * const num = 29; - * const clonedNum = cloneDeepWith(num); - * console.log(clonedNum); // 29 - * console.log(clonedNum === num); // true - * - * @example - * // Clone an object with a customizer - * const obj = { a: 1, b: 2 }; - * const clonedObj = cloneDeepWith(obj, (value) => { - * if (typeof value === 'number') { - * return value * 2; // Double the number - * } - * }); - * console.log(clonedObj); // { a: 2, b: 4 } - * console.log(clonedObj === obj); // false - * - * @example - * // Clone an array with a customizer - * const arr = [1, 2, 3]; - * const clonedArr = cloneDeepWith(arr, (value) => { - * return value + 1; // Increment each value - * }); - * console.log(clonedArr); // [2, 3, 4] - * console.log(clonedArr === arr); // false - */ -declare function cloneDeepWith(obj: T, cloneValue: (value: any, key: PropertyKey | undefined, obj: T, stack: Map) => any): T; - -export { cloneDeepWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeepWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeepWith.js deleted file mode 100644 index 2b18189..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeepWith.js +++ /dev/null @@ -1,178 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const getSymbols = require('../compat/_internal/getSymbols.js'); -const getTag = require('../compat/_internal/getTag.js'); -const tags = require('../compat/_internal/tags.js'); -const isPrimitive = require('../predicate/isPrimitive.js'); -const isTypedArray = require('../predicate/isTypedArray.js'); - -function cloneDeepWith(obj, cloneValue) { - return cloneDeepWithImpl(obj, undefined, obj, new Map(), cloneValue); -} -function cloneDeepWithImpl(valueToClone, keyToClone, objectToClone, stack = new Map(), cloneValue = undefined) { - const cloned = cloneValue?.(valueToClone, keyToClone, objectToClone, stack); - if (cloned !== undefined) { - return cloned; - } - if (isPrimitive.isPrimitive(valueToClone)) { - return valueToClone; - } - if (stack.has(valueToClone)) { - return stack.get(valueToClone); - } - if (Array.isArray(valueToClone)) { - const result = new Array(valueToClone.length); - stack.set(valueToClone, result); - for (let i = 0; i < valueToClone.length; i++) { - result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue); - } - if (Object.hasOwn(valueToClone, 'index')) { - result.index = valueToClone.index; - } - if (Object.hasOwn(valueToClone, 'input')) { - result.input = valueToClone.input; - } - return result; - } - if (valueToClone instanceof Date) { - return new Date(valueToClone.getTime()); - } - if (valueToClone instanceof RegExp) { - const result = new RegExp(valueToClone.source, valueToClone.flags); - result.lastIndex = valueToClone.lastIndex; - return result; - } - if (valueToClone instanceof Map) { - const result = new Map(); - stack.set(valueToClone, result); - for (const [key, value] of valueToClone) { - result.set(key, cloneDeepWithImpl(value, key, objectToClone, stack, cloneValue)); - } - return result; - } - if (valueToClone instanceof Set) { - const result = new Set(); - stack.set(valueToClone, result); - for (const value of valueToClone) { - result.add(cloneDeepWithImpl(value, undefined, objectToClone, stack, cloneValue)); - } - return result; - } - if (typeof Buffer !== 'undefined' && Buffer.isBuffer(valueToClone)) { - return valueToClone.subarray(); - } - if (isTypedArray.isTypedArray(valueToClone)) { - const result = new (Object.getPrototypeOf(valueToClone).constructor)(valueToClone.length); - stack.set(valueToClone, result); - for (let i = 0; i < valueToClone.length; i++) { - result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue); - } - return result; - } - if (valueToClone instanceof ArrayBuffer || - (typeof SharedArrayBuffer !== 'undefined' && valueToClone instanceof SharedArrayBuffer)) { - return valueToClone.slice(0); - } - if (valueToClone instanceof DataView) { - const result = new DataView(valueToClone.buffer.slice(0), valueToClone.byteOffset, valueToClone.byteLength); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (typeof File !== 'undefined' && valueToClone instanceof File) { - const result = new File([valueToClone], valueToClone.name, { - type: valueToClone.type, - }); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (typeof Blob !== 'undefined' && valueToClone instanceof Blob) { - const result = new Blob([valueToClone], { type: valueToClone.type }); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (valueToClone instanceof Error) { - const result = new valueToClone.constructor(); - stack.set(valueToClone, result); - result.message = valueToClone.message; - result.name = valueToClone.name; - result.stack = valueToClone.stack; - result.cause = valueToClone.cause; - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (valueToClone instanceof Boolean) { - const result = new Boolean(valueToClone.valueOf()); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (valueToClone instanceof Number) { - const result = new Number(valueToClone.valueOf()); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (valueToClone instanceof String) { - const result = new String(valueToClone.valueOf()); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (typeof valueToClone === 'object' && isCloneableObject(valueToClone)) { - const result = Object.create(Object.getPrototypeOf(valueToClone)); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - return valueToClone; -} -function copyProperties(target, source, objectToClone = target, stack, cloneValue) { - const keys = [...Object.keys(source), ...getSymbols.getSymbols(source)]; - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const descriptor = Object.getOwnPropertyDescriptor(target, key); - if (descriptor == null || descriptor.writable) { - target[key] = cloneDeepWithImpl(source[key], key, objectToClone, stack, cloneValue); - } - } -} -function isCloneableObject(object) { - switch (getTag.getTag(object)) { - case tags.argumentsTag: - case tags.arrayTag: - case tags.arrayBufferTag: - case tags.dataViewTag: - case tags.booleanTag: - case tags.dateTag: - case tags.float32ArrayTag: - case tags.float64ArrayTag: - case tags.int8ArrayTag: - case tags.int16ArrayTag: - case tags.int32ArrayTag: - case tags.mapTag: - case tags.numberTag: - case tags.objectTag: - case tags.regexpTag: - case tags.setTag: - case tags.stringTag: - case tags.symbolTag: - case tags.uint8ArrayTag: - case tags.uint8ClampedArrayTag: - case tags.uint16ArrayTag: - case tags.uint32ArrayTag: { - return true; - } - default: { - return false; - } - } -} - -exports.cloneDeepWith = cloneDeepWith; -exports.cloneDeepWithImpl = cloneDeepWithImpl; -exports.copyProperties = copyProperties; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeepWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeepWith.mjs deleted file mode 100644 index 18d518a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/cloneDeepWith.mjs +++ /dev/null @@ -1,172 +0,0 @@ -import { getSymbols } from '../compat/_internal/getSymbols.mjs'; -import { getTag } from '../compat/_internal/getTag.mjs'; -import { uint32ArrayTag, uint16ArrayTag, uint8ClampedArrayTag, uint8ArrayTag, symbolTag, stringTag, setTag, regexpTag, objectTag, numberTag, mapTag, int32ArrayTag, int16ArrayTag, int8ArrayTag, float64ArrayTag, float32ArrayTag, dateTag, booleanTag, dataViewTag, arrayBufferTag, arrayTag, argumentsTag } from '../compat/_internal/tags.mjs'; -import { isPrimitive } from '../predicate/isPrimitive.mjs'; -import { isTypedArray } from '../predicate/isTypedArray.mjs'; - -function cloneDeepWith(obj, cloneValue) { - return cloneDeepWithImpl(obj, undefined, obj, new Map(), cloneValue); -} -function cloneDeepWithImpl(valueToClone, keyToClone, objectToClone, stack = new Map(), cloneValue = undefined) { - const cloned = cloneValue?.(valueToClone, keyToClone, objectToClone, stack); - if (cloned !== undefined) { - return cloned; - } - if (isPrimitive(valueToClone)) { - return valueToClone; - } - if (stack.has(valueToClone)) { - return stack.get(valueToClone); - } - if (Array.isArray(valueToClone)) { - const result = new Array(valueToClone.length); - stack.set(valueToClone, result); - for (let i = 0; i < valueToClone.length; i++) { - result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue); - } - if (Object.hasOwn(valueToClone, 'index')) { - result.index = valueToClone.index; - } - if (Object.hasOwn(valueToClone, 'input')) { - result.input = valueToClone.input; - } - return result; - } - if (valueToClone instanceof Date) { - return new Date(valueToClone.getTime()); - } - if (valueToClone instanceof RegExp) { - const result = new RegExp(valueToClone.source, valueToClone.flags); - result.lastIndex = valueToClone.lastIndex; - return result; - } - if (valueToClone instanceof Map) { - const result = new Map(); - stack.set(valueToClone, result); - for (const [key, value] of valueToClone) { - result.set(key, cloneDeepWithImpl(value, key, objectToClone, stack, cloneValue)); - } - return result; - } - if (valueToClone instanceof Set) { - const result = new Set(); - stack.set(valueToClone, result); - for (const value of valueToClone) { - result.add(cloneDeepWithImpl(value, undefined, objectToClone, stack, cloneValue)); - } - return result; - } - if (typeof Buffer !== 'undefined' && Buffer.isBuffer(valueToClone)) { - return valueToClone.subarray(); - } - if (isTypedArray(valueToClone)) { - const result = new (Object.getPrototypeOf(valueToClone).constructor)(valueToClone.length); - stack.set(valueToClone, result); - for (let i = 0; i < valueToClone.length; i++) { - result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue); - } - return result; - } - if (valueToClone instanceof ArrayBuffer || - (typeof SharedArrayBuffer !== 'undefined' && valueToClone instanceof SharedArrayBuffer)) { - return valueToClone.slice(0); - } - if (valueToClone instanceof DataView) { - const result = new DataView(valueToClone.buffer.slice(0), valueToClone.byteOffset, valueToClone.byteLength); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (typeof File !== 'undefined' && valueToClone instanceof File) { - const result = new File([valueToClone], valueToClone.name, { - type: valueToClone.type, - }); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (typeof Blob !== 'undefined' && valueToClone instanceof Blob) { - const result = new Blob([valueToClone], { type: valueToClone.type }); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (valueToClone instanceof Error) { - const result = new valueToClone.constructor(); - stack.set(valueToClone, result); - result.message = valueToClone.message; - result.name = valueToClone.name; - result.stack = valueToClone.stack; - result.cause = valueToClone.cause; - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (valueToClone instanceof Boolean) { - const result = new Boolean(valueToClone.valueOf()); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (valueToClone instanceof Number) { - const result = new Number(valueToClone.valueOf()); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (valueToClone instanceof String) { - const result = new String(valueToClone.valueOf()); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - if (typeof valueToClone === 'object' && isCloneableObject(valueToClone)) { - const result = Object.create(Object.getPrototypeOf(valueToClone)); - stack.set(valueToClone, result); - copyProperties(result, valueToClone, objectToClone, stack, cloneValue); - return result; - } - return valueToClone; -} -function copyProperties(target, source, objectToClone = target, stack, cloneValue) { - const keys = [...Object.keys(source), ...getSymbols(source)]; - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const descriptor = Object.getOwnPropertyDescriptor(target, key); - if (descriptor == null || descriptor.writable) { - target[key] = cloneDeepWithImpl(source[key], key, objectToClone, stack, cloneValue); - } - } -} -function isCloneableObject(object) { - switch (getTag(object)) { - case argumentsTag: - case arrayTag: - case arrayBufferTag: - case dataViewTag: - case booleanTag: - case dateTag: - case float32ArrayTag: - case float64ArrayTag: - case int8ArrayTag: - case int16ArrayTag: - case int32ArrayTag: - case mapTag: - case numberTag: - case objectTag: - case regexpTag: - case setTag: - case stringTag: - case symbolTag: - case uint8ArrayTag: - case uint8ClampedArrayTag: - case uint16ArrayTag: - case uint32ArrayTag: { - return true; - } - default: { - return false; - } - } -} - -export { cloneDeepWith, cloneDeepWithImpl, copyProperties }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/findKey.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/findKey.d.mts deleted file mode 100644 index 79e21a5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/findKey.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Finds the key of the first element in the object that satisfies the provided testing function. - * - * @param {T} obj - The object to search. - * @param {(value: T[keyof T], key: keyof T, obj: T) => boolean} predicate - The function to execute on each value in the object. It takes three arguments: - * - value: The current value being processed in the object. - * - key: The key of the current value being processed in the object. - * - obj: The object that findKey was called upon. - * @returns {keyof T | undefined} The key of the first element in the object that passes the test, or undefined if no element passes. - * - * @example - * const users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * findKey(users, function(o) { return o.age < 40; }); => 'barney' - */ -declare function findKey>(obj: T, predicate: (value: T[keyof T], key: keyof T, obj: T) => boolean): keyof T | undefined; - -export { findKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/findKey.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/findKey.d.ts deleted file mode 100644 index 79e21a5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/findKey.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Finds the key of the first element in the object that satisfies the provided testing function. - * - * @param {T} obj - The object to search. - * @param {(value: T[keyof T], key: keyof T, obj: T) => boolean} predicate - The function to execute on each value in the object. It takes three arguments: - * - value: The current value being processed in the object. - * - key: The key of the current value being processed in the object. - * - obj: The object that findKey was called upon. - * @returns {keyof T | undefined} The key of the first element in the object that passes the test, or undefined if no element passes. - * - * @example - * const users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * findKey(users, function(o) { return o.age < 40; }); => 'barney' - */ -declare function findKey>(obj: T, predicate: (value: T[keyof T], key: keyof T, obj: T) => boolean): keyof T | undefined; - -export { findKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/findKey.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/findKey.js deleted file mode 100644 index 3874ebe..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/findKey.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function findKey(obj, predicate) { - const keys = Object.keys(obj); - return keys.find(key => predicate(obj[key], key, obj)); -} - -exports.findKey = findKey; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/findKey.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/findKey.mjs deleted file mode 100644 index 09eb3a6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/findKey.mjs +++ /dev/null @@ -1,6 +0,0 @@ -function findKey(obj, predicate) { - const keys = Object.keys(obj); - return keys.find(key => predicate(obj[key], key, obj)); -} - -export { findKey }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/flattenObject.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/flattenObject.d.mts deleted file mode 100644 index 2078612..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/flattenObject.d.mts +++ /dev/null @@ -1,36 +0,0 @@ -interface FlattenObjectOptions { - /** - * The delimiter to use between nested keys. - * @default '.' - */ - delimiter?: string; -} -/** - * Flattens a nested object into a single level object with delimiter-separated keys. - * - * @param {object} object - The object to flatten. - * @param {string} [options.delimiter='.'] - The delimiter to use between nested keys. - * @returns {Record} - The flattened object. - * - * @example - * const nestedObject = { - * a: { - * b: { - * c: 1 - * } - * }, - * d: [2, 3] - * }; - * - * const flattened = flattenObject(nestedObject); - * console.log(flattened); - * // Output: - * // { - * // 'a.b.c': 1, - * // 'd.0': 2, - * // 'd.1': 3 - * // } - */ -declare function flattenObject(object: object, { delimiter }?: FlattenObjectOptions): Record; - -export { flattenObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/flattenObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/flattenObject.d.ts deleted file mode 100644 index 2078612..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/flattenObject.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -interface FlattenObjectOptions { - /** - * The delimiter to use between nested keys. - * @default '.' - */ - delimiter?: string; -} -/** - * Flattens a nested object into a single level object with delimiter-separated keys. - * - * @param {object} object - The object to flatten. - * @param {string} [options.delimiter='.'] - The delimiter to use between nested keys. - * @returns {Record} - The flattened object. - * - * @example - * const nestedObject = { - * a: { - * b: { - * c: 1 - * } - * }, - * d: [2, 3] - * }; - * - * const flattened = flattenObject(nestedObject); - * console.log(flattened); - * // Output: - * // { - * // 'a.b.c': 1, - * // 'd.0': 2, - * // 'd.1': 3 - * // } - */ -declare function flattenObject(object: object, { delimiter }?: FlattenObjectOptions): Record; - -export { flattenObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/flattenObject.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/flattenObject.js deleted file mode 100644 index 11d6c53..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/flattenObject.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isPlainObject = require('../predicate/isPlainObject.js'); - -function flattenObject(object, { delimiter = '.' } = {}) { - return flattenObjectImpl(object, '', delimiter); -} -function flattenObjectImpl(object, prefix, delimiter) { - const result = {}; - const keys = Object.keys(object); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = object[key]; - const prefixedKey = prefix ? `${prefix}${delimiter}${key}` : key; - if (isPlainObject.isPlainObject(value) && Object.keys(value).length > 0) { - Object.assign(result, flattenObjectImpl(value, prefixedKey, delimiter)); - continue; - } - if (Array.isArray(value) && value.length > 0) { - Object.assign(result, flattenObjectImpl(value, prefixedKey, delimiter)); - continue; - } - result[prefixedKey] = value; - } - return result; -} - -exports.flattenObject = flattenObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/flattenObject.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/flattenObject.mjs deleted file mode 100644 index 0047779..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/flattenObject.mjs +++ /dev/null @@ -1,26 +0,0 @@ -import { isPlainObject } from '../predicate/isPlainObject.mjs'; - -function flattenObject(object, { delimiter = '.' } = {}) { - return flattenObjectImpl(object, '', delimiter); -} -function flattenObjectImpl(object, prefix, delimiter) { - const result = {}; - const keys = Object.keys(object); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = object[key]; - const prefixedKey = prefix ? `${prefix}${delimiter}${key}` : key; - if (isPlainObject(value) && Object.keys(value).length > 0) { - Object.assign(result, flattenObjectImpl(value, prefixedKey, delimiter)); - continue; - } - if (Array.isArray(value) && value.length > 0) { - Object.assign(result, flattenObjectImpl(value, prefixedKey, delimiter)); - continue; - } - result[prefixedKey] = value; - } - return result; -} - -export { flattenObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/index.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/index.d.mts deleted file mode 100644 index ec0417a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/index.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -export { clone } from './clone.mjs'; -export { cloneDeep } from './cloneDeep.mjs'; -export { cloneDeepWith } from './cloneDeepWith.mjs'; -export { findKey } from './findKey.mjs'; -export { flattenObject } from './flattenObject.mjs'; -export { invert } from './invert.mjs'; -export { mapKeys } from './mapKeys.mjs'; -export { mapValues } from './mapValues.mjs'; -export { merge } from './merge.mjs'; -export { mergeWith } from './mergeWith.mjs'; -export { omit } from './omit.mjs'; -export { omitBy } from './omitBy.mjs'; -export { pick } from './pick.mjs'; -export { pickBy } from './pickBy.mjs'; -export { toCamelCaseKeys } from './toCamelCaseKeys.mjs'; -export { toMerged } from './toMerged.mjs'; -export { toSnakeCaseKeys } from './toSnakeCaseKeys.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/index.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/index.d.ts deleted file mode 100644 index c3b8c2d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/index.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -export { clone } from './clone.js'; -export { cloneDeep } from './cloneDeep.js'; -export { cloneDeepWith } from './cloneDeepWith.js'; -export { findKey } from './findKey.js'; -export { flattenObject } from './flattenObject.js'; -export { invert } from './invert.js'; -export { mapKeys } from './mapKeys.js'; -export { mapValues } from './mapValues.js'; -export { merge } from './merge.js'; -export { mergeWith } from './mergeWith.js'; -export { omit } from './omit.js'; -export { omitBy } from './omitBy.js'; -export { pick } from './pick.js'; -export { pickBy } from './pickBy.js'; -export { toCamelCaseKeys } from './toCamelCaseKeys.js'; -export { toMerged } from './toMerged.js'; -export { toSnakeCaseKeys } from './toSnakeCaseKeys.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/index.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/index.js deleted file mode 100644 index d2a7309..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/index.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const clone = require('./clone.js'); -const cloneDeep = require('./cloneDeep.js'); -const cloneDeepWith = require('./cloneDeepWith.js'); -const findKey = require('./findKey.js'); -const flattenObject = require('./flattenObject.js'); -const invert = require('./invert.js'); -const mapKeys = require('./mapKeys.js'); -const mapValues = require('./mapValues.js'); -const merge = require('./merge.js'); -const mergeWith = require('./mergeWith.js'); -const omit = require('./omit.js'); -const omitBy = require('./omitBy.js'); -const pick = require('./pick.js'); -const pickBy = require('./pickBy.js'); -const toCamelCaseKeys = require('./toCamelCaseKeys.js'); -const toMerged = require('./toMerged.js'); -const toSnakeCaseKeys = require('./toSnakeCaseKeys.js'); - - - -exports.clone = clone.clone; -exports.cloneDeep = cloneDeep.cloneDeep; -exports.cloneDeepWith = cloneDeepWith.cloneDeepWith; -exports.findKey = findKey.findKey; -exports.flattenObject = flattenObject.flattenObject; -exports.invert = invert.invert; -exports.mapKeys = mapKeys.mapKeys; -exports.mapValues = mapValues.mapValues; -exports.merge = merge.merge; -exports.mergeWith = mergeWith.mergeWith; -exports.omit = omit.omit; -exports.omitBy = omitBy.omitBy; -exports.pick = pick.pick; -exports.pickBy = pickBy.pickBy; -exports.toCamelCaseKeys = toCamelCaseKeys.toCamelCaseKeys; -exports.toMerged = toMerged.toMerged; -exports.toSnakeCaseKeys = toSnakeCaseKeys.toSnakeCaseKeys; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/index.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/index.mjs deleted file mode 100644 index ec0417a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/index.mjs +++ /dev/null @@ -1,17 +0,0 @@ -export { clone } from './clone.mjs'; -export { cloneDeep } from './cloneDeep.mjs'; -export { cloneDeepWith } from './cloneDeepWith.mjs'; -export { findKey } from './findKey.mjs'; -export { flattenObject } from './flattenObject.mjs'; -export { invert } from './invert.mjs'; -export { mapKeys } from './mapKeys.mjs'; -export { mapValues } from './mapValues.mjs'; -export { merge } from './merge.mjs'; -export { mergeWith } from './mergeWith.mjs'; -export { omit } from './omit.mjs'; -export { omitBy } from './omitBy.mjs'; -export { pick } from './pick.mjs'; -export { pickBy } from './pickBy.mjs'; -export { toCamelCaseKeys } from './toCamelCaseKeys.mjs'; -export { toMerged } from './toMerged.mjs'; -export { toSnakeCaseKeys } from './toSnakeCaseKeys.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/invert.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/invert.d.mts deleted file mode 100644 index 0f9bf6f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/invert.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Inverts the keys and values of an object. The keys of the input object become the values of the output object and vice versa. - * - * This function takes an object and creates a new object by inverting its keys and values. If the input object has duplicate values, - * the key of the last occurrence will be used as the value for the new key in the output object. It effectively creates a reverse mapping - * of the input object's key-value pairs. - * - * @template K - Type of the keys in the input object (string, number, symbol) - * @template V - Type of the values in the input object (string, number, symbol) - * @param {Record} obj - The input object whose keys and values are to be inverted - * @returns {Record} - A new object with keys and values inverted - * - * @example - * invert({ a: 1, b: 2, c: 3 }); // { 1: 'a', 2: 'b', 3: 'c' } - * invert({ 1: 'a', 2: 'b', 3: 'c' }); // { a: '1', b: '2', c: '3' } - * invert({ a: 1, 2: 'b', c: 3, 4: 'd' }); // { 1: 'a', b: '2', 3: 'c', d: '4' } - * invert({ a: Symbol('sym1'), b: Symbol('sym2') }); // { [Symbol('sym1')]: 'a', [Symbol('sym2')]: 'b' } - */ -declare function invert(obj: Record): Record; - -export { invert }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/invert.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/invert.d.ts deleted file mode 100644 index 0f9bf6f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/invert.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Inverts the keys and values of an object. The keys of the input object become the values of the output object and vice versa. - * - * This function takes an object and creates a new object by inverting its keys and values. If the input object has duplicate values, - * the key of the last occurrence will be used as the value for the new key in the output object. It effectively creates a reverse mapping - * of the input object's key-value pairs. - * - * @template K - Type of the keys in the input object (string, number, symbol) - * @template V - Type of the values in the input object (string, number, symbol) - * @param {Record} obj - The input object whose keys and values are to be inverted - * @returns {Record} - A new object with keys and values inverted - * - * @example - * invert({ a: 1, b: 2, c: 3 }); // { 1: 'a', 2: 'b', 3: 'c' } - * invert({ 1: 'a', 2: 'b', 3: 'c' }); // { a: '1', b: '2', c: '3' } - * invert({ a: 1, 2: 'b', c: 3, 4: 'd' }); // { 1: 'a', b: '2', 3: 'c', d: '4' } - * invert({ a: Symbol('sym1'), b: Symbol('sym2') }); // { [Symbol('sym1')]: 'a', [Symbol('sym2')]: 'b' } - */ -declare function invert(obj: Record): Record; - -export { invert }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/invert.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/invert.js deleted file mode 100644 index f2485bd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/invert.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function invert(obj) { - const result = {}; - const keys = Object.keys(obj); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = obj[key]; - result[value] = key; - } - return result; -} - -exports.invert = invert; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/invert.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/invert.mjs deleted file mode 100644 index a5248fe..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/invert.mjs +++ /dev/null @@ -1,12 +0,0 @@ -function invert(obj) { - const result = {}; - const keys = Object.keys(obj); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = obj[key]; - result[value] = key; - } - return result; -} - -export { invert }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapKeys.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/mapKeys.d.mts deleted file mode 100644 index 8639c1c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapKeys.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Creates a new object with the same values as the given object, but with keys generated - * by running each own enumerable property of the object through the iteratee function. - * - * @template T - The type of the object. - * @template K - The type of the new keys generated by the iteratee function. - * - * @param {T} object - The object to iterate over. - * @param {(value: T[keyof T], key: keyof T, object: T) => K} getNewKey - The function invoked per own enumerable property. - * @returns {Record} - Returns the new mapped object. - * - * @example - * // Example usage: - * const obj = { a: 1, b: 2 }; - * const result = mapKeys(obj, (value, key) => key + value); - * console.log(result); // { a1: 1, b2: 2 } - */ -declare function mapKeys, K extends PropertyKey>(object: T, getNewKey: (value: T[keyof T], key: keyof T, object: T) => K): Record; - -export { mapKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapKeys.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/mapKeys.d.ts deleted file mode 100644 index 8639c1c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapKeys.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Creates a new object with the same values as the given object, but with keys generated - * by running each own enumerable property of the object through the iteratee function. - * - * @template T - The type of the object. - * @template K - The type of the new keys generated by the iteratee function. - * - * @param {T} object - The object to iterate over. - * @param {(value: T[keyof T], key: keyof T, object: T) => K} getNewKey - The function invoked per own enumerable property. - * @returns {Record} - Returns the new mapped object. - * - * @example - * // Example usage: - * const obj = { a: 1, b: 2 }; - * const result = mapKeys(obj, (value, key) => key + value); - * console.log(result); // { a1: 1, b2: 2 } - */ -declare function mapKeys, K extends PropertyKey>(object: T, getNewKey: (value: T[keyof T], key: keyof T, object: T) => K): Record; - -export { mapKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapKeys.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/mapKeys.js deleted file mode 100644 index c18c6dd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapKeys.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function mapKeys(object, getNewKey) { - const result = {}; - const keys = Object.keys(object); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = object[key]; - result[getNewKey(value, key, object)] = value; - } - return result; -} - -exports.mapKeys = mapKeys; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapKeys.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/mapKeys.mjs deleted file mode 100644 index 06b6b44..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapKeys.mjs +++ /dev/null @@ -1,12 +0,0 @@ -function mapKeys(object, getNewKey) { - const result = {}; - const keys = Object.keys(object); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = object[key]; - result[getNewKey(value, key, object)] = value; - } - return result; -} - -export { mapKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapValues.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/mapValues.d.mts deleted file mode 100644 index bb9f9fe..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapValues.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Creates a new object with the same keys as the given object, but with values generated - * by running each own enumerable property of the object through the iteratee function. - * - * @template T - The type of the object. - * @template K - The type of the keys in the object. - * @template V - The type of the new values generated by the iteratee function. - * - * @param {T} object - The object to iterate over. - * @param {(value: T[K], key: K, object: T) => V} getNewValue - The function invoked per own enumerable property. - * @returns {Record} - Returns the new mapped object. - * - * @example - * // Example usage: - * const obj = { a: 1, b: 2 }; - * const result = mapValues(obj, (value) => value * 2); - * console.log(result); // { a: 2, b: 4 } - */ -declare function mapValues(object: T, getNewValue: (value: T[K], key: K, object: T) => V): Record; - -export { mapValues }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapValues.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/mapValues.d.ts deleted file mode 100644 index bb9f9fe..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapValues.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Creates a new object with the same keys as the given object, but with values generated - * by running each own enumerable property of the object through the iteratee function. - * - * @template T - The type of the object. - * @template K - The type of the keys in the object. - * @template V - The type of the new values generated by the iteratee function. - * - * @param {T} object - The object to iterate over. - * @param {(value: T[K], key: K, object: T) => V} getNewValue - The function invoked per own enumerable property. - * @returns {Record} - Returns the new mapped object. - * - * @example - * // Example usage: - * const obj = { a: 1, b: 2 }; - * const result = mapValues(obj, (value) => value * 2); - * console.log(result); // { a: 2, b: 4 } - */ -declare function mapValues(object: T, getNewValue: (value: T[K], key: K, object: T) => V): Record; - -export { mapValues }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapValues.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/mapValues.js deleted file mode 100644 index 9b457d3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapValues.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function mapValues(object, getNewValue) { - const result = {}; - const keys = Object.keys(object); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = object[key]; - result[key] = getNewValue(value, key, object); - } - return result; -} - -exports.mapValues = mapValues; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapValues.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/mapValues.mjs deleted file mode 100644 index 3d3254c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/mapValues.mjs +++ /dev/null @@ -1,12 +0,0 @@ -function mapValues(object, getNewValue) { - const result = {}; - const keys = Object.keys(object); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = object[key]; - result[key] = getNewValue(value, key, object); - } - return result; -} - -export { mapValues }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/merge.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/merge.d.mts deleted file mode 100644 index 7365248..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/merge.d.mts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Merges the properties of the source object into the target object. - * - * This function performs a deep merge, meaning nested objects and arrays are merged recursively. - * If a property in the source object is an array or an object and the corresponding property in the target object is also an array or object, they will be merged. - * If a property in the source object is undefined, it will not overwrite a defined property in the target object. - * - * Note that this function mutates the target object. - * - * @param {T} target - The target object into which the source object properties will be merged. This object is modified in place. - * @param {S} source - The source object whose properties will be merged into the target object. - * @returns {T & S} The updated target object with properties from the source object merged in. - * - * @template T - Type of the target object. - * @template S - Type of the source object. - * - * @example - * const target = { a: 1, b: { x: 1, y: 2 } }; - * const source = { b: { y: 3, z: 4 }, c: 5 }; - * - * const result = merge(target, source); - * console.log(result); - * // Output: { a: 1, b: { x: 1, y: 3, z: 4 }, c: 5 } - * - * @example - * const target = { a: [1, 2], b: { x: 1 } }; - * const source = { a: [3], b: { y: 2 } }; - * - * const result = merge(target, source); - * console.log(result); - * // Output: { a: [3, 2], b: { x: 1, y: 2 } } - * - * @example - * const target = { a: null }; - * const source = { a: [1, 2, 3] }; - * - * const result = merge(target, source); - * console.log(result); - * // Output: { a: [1, 2, 3] } - */ -declare function merge, S extends Record>(target: T, source: S): T & S; - -export { merge }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/merge.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/merge.d.ts deleted file mode 100644 index 7365248..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/merge.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Merges the properties of the source object into the target object. - * - * This function performs a deep merge, meaning nested objects and arrays are merged recursively. - * If a property in the source object is an array or an object and the corresponding property in the target object is also an array or object, they will be merged. - * If a property in the source object is undefined, it will not overwrite a defined property in the target object. - * - * Note that this function mutates the target object. - * - * @param {T} target - The target object into which the source object properties will be merged. This object is modified in place. - * @param {S} source - The source object whose properties will be merged into the target object. - * @returns {T & S} The updated target object with properties from the source object merged in. - * - * @template T - Type of the target object. - * @template S - Type of the source object. - * - * @example - * const target = { a: 1, b: { x: 1, y: 2 } }; - * const source = { b: { y: 3, z: 4 }, c: 5 }; - * - * const result = merge(target, source); - * console.log(result); - * // Output: { a: 1, b: { x: 1, y: 3, z: 4 }, c: 5 } - * - * @example - * const target = { a: [1, 2], b: { x: 1 } }; - * const source = { a: [3], b: { y: 2 } }; - * - * const result = merge(target, source); - * console.log(result); - * // Output: { a: [3, 2], b: { x: 1, y: 2 } } - * - * @example - * const target = { a: null }; - * const source = { a: [1, 2, 3] }; - * - * const result = merge(target, source); - * console.log(result); - * // Output: { a: [1, 2, 3] } - */ -declare function merge, S extends Record>(target: T, source: S): T & S; - -export { merge }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/merge.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/merge.js deleted file mode 100644 index 6a7a226..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/merge.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isUnsafeProperty = require('../_internal/isUnsafeProperty.js'); -const isPlainObject = require('../predicate/isPlainObject.js'); - -function merge(target, source) { - const sourceKeys = Object.keys(source); - for (let i = 0; i < sourceKeys.length; i++) { - const key = sourceKeys[i]; - if (isUnsafeProperty.isUnsafeProperty(key)) { - continue; - } - const sourceValue = source[key]; - const targetValue = target[key]; - if (isMergeableValue(sourceValue) && isMergeableValue(targetValue)) { - target[key] = merge(targetValue, sourceValue); - } - else if (Array.isArray(sourceValue)) { - target[key] = merge([], sourceValue); - } - else if (isPlainObject.isPlainObject(sourceValue)) { - target[key] = merge({}, sourceValue); - } - else if (targetValue === undefined || sourceValue !== undefined) { - target[key] = sourceValue; - } - } - return target; -} -function isMergeableValue(value) { - return isPlainObject.isPlainObject(value) || Array.isArray(value); -} - -exports.merge = merge; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/merge.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/merge.mjs deleted file mode 100644 index b7f7b61..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/merge.mjs +++ /dev/null @@ -1,32 +0,0 @@ -import { isUnsafeProperty } from '../_internal/isUnsafeProperty.mjs'; -import { isPlainObject } from '../predicate/isPlainObject.mjs'; - -function merge(target, source) { - const sourceKeys = Object.keys(source); - for (let i = 0; i < sourceKeys.length; i++) { - const key = sourceKeys[i]; - if (isUnsafeProperty(key)) { - continue; - } - const sourceValue = source[key]; - const targetValue = target[key]; - if (isMergeableValue(sourceValue) && isMergeableValue(targetValue)) { - target[key] = merge(targetValue, sourceValue); - } - else if (Array.isArray(sourceValue)) { - target[key] = merge([], sourceValue); - } - else if (isPlainObject(sourceValue)) { - target[key] = merge({}, sourceValue); - } - else if (targetValue === undefined || sourceValue !== undefined) { - target[key] = sourceValue; - } - } - return target; -} -function isMergeableValue(value) { - return isPlainObject(value) || Array.isArray(value); -} - -export { merge }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/mergeWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/mergeWith.d.mts deleted file mode 100644 index 6bd698a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/mergeWith.d.mts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Merges the properties of the source object into the target object. - * - * You can provide a custom `merge` function to control how properties are merged. It should return the value to be set in the target object. - * - * If it returns `undefined`, a default deep merge will be applied for arrays and objects: - * - * - If a property in the source object is an array or an object and the corresponding property in the target object is also an array or object, they will be merged. - * - If a property in the source object is undefined, it will not overwrite a defined property in the target object. - * - * Note that this function mutates the target object. - * - * @param {T} target - The target object into which the source object properties will be merged. This object is modified in place. - * @param {S} source - The source object whose properties will be merged into the target object. - * @param {(targetValue: any, sourceValue: any, key: string, target: T, source: S) => any} merge - A custom merge function that defines how properties should be combined. It receives the following arguments: - * - `targetValue`: The current value of the property in the target object. - * - `sourceValue`: The value of the property in the source object. - * - `key`: The key of the property being merged. - * - `target`: The target object. - * - `source`: The source object. - * - * @returns {T & S} The updated target object with properties from the source object merged in. - * - * @template T - Type of the target object. - * @template S - Type of the source object. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * - * mergeWith(target, source, (targetValue, sourceValue) => { - * if (typeof targetValue === 'number' && typeof sourceValue === 'number') { - * return targetValue + sourceValue; - * } - * }); - * // Returns { a: 1, b: 5, c: 4 } - * @example - * const target = { a: [1], b: [2] }; - * const source = { a: [3], b: [4] }; - * - * const result = mergeWith(target, source, (objValue, srcValue) => { - * if (Array.isArray(objValue)) { - * return objValue.concat(srcValue); - * } - * }); - * - * expect(result).toEqual({ a: [1, 3], b: [2, 4] }); - */ -declare function mergeWith, S extends Record>(target: T, source: S, merge: (targetValue: any, sourceValue: any, key: string, target: T, source: S) => any): T & S; - -export { mergeWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/mergeWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/mergeWith.d.ts deleted file mode 100644 index 6bd698a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/mergeWith.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Merges the properties of the source object into the target object. - * - * You can provide a custom `merge` function to control how properties are merged. It should return the value to be set in the target object. - * - * If it returns `undefined`, a default deep merge will be applied for arrays and objects: - * - * - If a property in the source object is an array or an object and the corresponding property in the target object is also an array or object, they will be merged. - * - If a property in the source object is undefined, it will not overwrite a defined property in the target object. - * - * Note that this function mutates the target object. - * - * @param {T} target - The target object into which the source object properties will be merged. This object is modified in place. - * @param {S} source - The source object whose properties will be merged into the target object. - * @param {(targetValue: any, sourceValue: any, key: string, target: T, source: S) => any} merge - A custom merge function that defines how properties should be combined. It receives the following arguments: - * - `targetValue`: The current value of the property in the target object. - * - `sourceValue`: The value of the property in the source object. - * - `key`: The key of the property being merged. - * - `target`: The target object. - * - `source`: The source object. - * - * @returns {T & S} The updated target object with properties from the source object merged in. - * - * @template T - Type of the target object. - * @template S - Type of the source object. - * - * @example - * const target = { a: 1, b: 2 }; - * const source = { b: 3, c: 4 }; - * - * mergeWith(target, source, (targetValue, sourceValue) => { - * if (typeof targetValue === 'number' && typeof sourceValue === 'number') { - * return targetValue + sourceValue; - * } - * }); - * // Returns { a: 1, b: 5, c: 4 } - * @example - * const target = { a: [1], b: [2] }; - * const source = { a: [3], b: [4] }; - * - * const result = mergeWith(target, source, (objValue, srcValue) => { - * if (Array.isArray(objValue)) { - * return objValue.concat(srcValue); - * } - * }); - * - * expect(result).toEqual({ a: [1, 3], b: [2, 4] }); - */ -declare function mergeWith, S extends Record>(target: T, source: S, merge: (targetValue: any, sourceValue: any, key: string, target: T, source: S) => any): T & S; - -export { mergeWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/mergeWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/mergeWith.js deleted file mode 100644 index bca593e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/mergeWith.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isUnsafeProperty = require('../_internal/isUnsafeProperty.js'); -const isPlainObject = require('../predicate/isPlainObject.js'); - -function mergeWith(target, source, merge) { - const sourceKeys = Object.keys(source); - for (let i = 0; i < sourceKeys.length; i++) { - const key = sourceKeys[i]; - if (isUnsafeProperty.isUnsafeProperty(key)) { - continue; - } - const sourceValue = source[key]; - const targetValue = target[key]; - const merged = merge(targetValue, sourceValue, key, target, source); - if (merged !== undefined) { - target[key] = merged; - } - else if (Array.isArray(sourceValue)) { - if (Array.isArray(targetValue)) { - target[key] = mergeWith(targetValue, sourceValue, merge); - } - else { - target[key] = mergeWith([], sourceValue, merge); - } - } - else if (isPlainObject.isPlainObject(sourceValue)) { - if (isPlainObject.isPlainObject(targetValue)) { - target[key] = mergeWith(targetValue, sourceValue, merge); - } - else { - target[key] = mergeWith({}, sourceValue, merge); - } - } - else if (targetValue === undefined || sourceValue !== undefined) { - target[key] = sourceValue; - } - } - return target; -} - -exports.mergeWith = mergeWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/mergeWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/mergeWith.mjs deleted file mode 100644 index e4f7323..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/mergeWith.mjs +++ /dev/null @@ -1,40 +0,0 @@ -import { isUnsafeProperty } from '../_internal/isUnsafeProperty.mjs'; -import { isPlainObject } from '../predicate/isPlainObject.mjs'; - -function mergeWith(target, source, merge) { - const sourceKeys = Object.keys(source); - for (let i = 0; i < sourceKeys.length; i++) { - const key = sourceKeys[i]; - if (isUnsafeProperty(key)) { - continue; - } - const sourceValue = source[key]; - const targetValue = target[key]; - const merged = merge(targetValue, sourceValue, key, target, source); - if (merged !== undefined) { - target[key] = merged; - } - else if (Array.isArray(sourceValue)) { - if (Array.isArray(targetValue)) { - target[key] = mergeWith(targetValue, sourceValue, merge); - } - else { - target[key] = mergeWith([], sourceValue, merge); - } - } - else if (isPlainObject(sourceValue)) { - if (isPlainObject(targetValue)) { - target[key] = mergeWith(targetValue, sourceValue, merge); - } - else { - target[key] = mergeWith({}, sourceValue, merge); - } - } - else if (targetValue === undefined || sourceValue !== undefined) { - target[key] = sourceValue; - } - } - return target; -} - -export { mergeWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/omit.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/omit.d.mts deleted file mode 100644 index e2f7992..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/omit.d.mts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Creates a new object with specified keys omitted. - * - * This function takes an object and an array of keys, and returns a new object that - * excludes the properties corresponding to the specified keys. - * - * @template T - The type of object. - * @template K - The type of keys in object. - * @param {T} obj - The object to omit keys from. - * @param {K[]} keys - An array of keys to be omitted from the object. - * @returns {Omit} A new object with the specified keys omitted. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * const result = omit(obj, ['b', 'c']); - * // result will be { a: 1 } - */ -declare function omit, K extends keyof T>(obj: T, keys: readonly K[]): Omit; -/** - * Creates a new object with specified keys omitted. - * - * This overload supports dynamic key arrays determined at runtime, - * useful when working with keys from Object.keys() or similar operations. - * - * @template T - The type of object. - * @param {T} obj - The object to omit keys from. - * @param {PropertyKey[]} keys - An array of keys to be omitted from the object. Supports dynamic arrays. - * @returns {Partial} A new object with the specified keys omitted. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * const keysToOmit = Object.keys({ b: true, c: true }); // string[] - * const result = omit(obj, keysToOmit); - * // result will be { a: 1 } - */ -declare function omit>(obj: T, keys: readonly PropertyKey[]): Partial; - -export { omit }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/omit.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/omit.d.ts deleted file mode 100644 index e2f7992..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/omit.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Creates a new object with specified keys omitted. - * - * This function takes an object and an array of keys, and returns a new object that - * excludes the properties corresponding to the specified keys. - * - * @template T - The type of object. - * @template K - The type of keys in object. - * @param {T} obj - The object to omit keys from. - * @param {K[]} keys - An array of keys to be omitted from the object. - * @returns {Omit} A new object with the specified keys omitted. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * const result = omit(obj, ['b', 'c']); - * // result will be { a: 1 } - */ -declare function omit, K extends keyof T>(obj: T, keys: readonly K[]): Omit; -/** - * Creates a new object with specified keys omitted. - * - * This overload supports dynamic key arrays determined at runtime, - * useful when working with keys from Object.keys() or similar operations. - * - * @template T - The type of object. - * @param {T} obj - The object to omit keys from. - * @param {PropertyKey[]} keys - An array of keys to be omitted from the object. Supports dynamic arrays. - * @returns {Partial} A new object with the specified keys omitted. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * const keysToOmit = Object.keys({ b: true, c: true }); // string[] - * const result = omit(obj, keysToOmit); - * // result will be { a: 1 } - */ -declare function omit>(obj: T, keys: readonly PropertyKey[]): Partial; - -export { omit }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/omit.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/omit.js deleted file mode 100644 index 5ec79cc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/omit.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function omit(obj, keys) { - const result = { ...obj }; - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - delete result[key]; - } - return result; -} - -exports.omit = omit; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/omit.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/omit.mjs deleted file mode 100644 index e7a8ca9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/omit.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function omit(obj, keys) { - const result = { ...obj }; - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - delete result[key]; - } - return result; -} - -export { omit }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/omitBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/omitBy.d.mts deleted file mode 100644 index c6af367..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/omitBy.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Creates a new object composed of the properties that do not satisfy the predicate function. - * - * This function takes an object and a predicate function, and returns a new object that - * includes only the properties for which the predicate function returns false. - * - * @template T - The type of object. - * @param {T} obj - The object to omit properties from. - * @param {(value: T[string], key: keyof T) => boolean} shouldOmit - A predicate function that determines - * whether a property should be omitted. It takes the property's key and value as arguments and returns `true` - * if the property should be omitted, and `false` otherwise. - * @returns {Partial} A new object with the properties that do not satisfy the predicate function. - * - * @example - * const obj = { a: 1, b: 'omit', c: 3 }; - * const shouldOmit = (value) => typeof value === 'string'; - * const result = omitBy(obj, shouldOmit); - * // result will be { a: 1, c: 3 } - */ -declare function omitBy>(obj: T, shouldOmit: (value: T[keyof T], key: keyof T) => boolean): Partial; - -export { omitBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/omitBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/omitBy.d.ts deleted file mode 100644 index c6af367..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/omitBy.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Creates a new object composed of the properties that do not satisfy the predicate function. - * - * This function takes an object and a predicate function, and returns a new object that - * includes only the properties for which the predicate function returns false. - * - * @template T - The type of object. - * @param {T} obj - The object to omit properties from. - * @param {(value: T[string], key: keyof T) => boolean} shouldOmit - A predicate function that determines - * whether a property should be omitted. It takes the property's key and value as arguments and returns `true` - * if the property should be omitted, and `false` otherwise. - * @returns {Partial} A new object with the properties that do not satisfy the predicate function. - * - * @example - * const obj = { a: 1, b: 'omit', c: 3 }; - * const shouldOmit = (value) => typeof value === 'string'; - * const result = omitBy(obj, shouldOmit); - * // result will be { a: 1, c: 3 } - */ -declare function omitBy>(obj: T, shouldOmit: (value: T[keyof T], key: keyof T) => boolean): Partial; - -export { omitBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/omitBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/omitBy.js deleted file mode 100644 index 426abe5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/omitBy.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function omitBy(obj, shouldOmit) { - const result = {}; - const keys = Object.keys(obj); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = obj[key]; - if (!shouldOmit(value, key)) { - result[key] = value; - } - } - return result; -} - -exports.omitBy = omitBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/omitBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/omitBy.mjs deleted file mode 100644 index 0e203a0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/omitBy.mjs +++ /dev/null @@ -1,14 +0,0 @@ -function omitBy(obj, shouldOmit) { - const result = {}; - const keys = Object.keys(obj); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = obj[key]; - if (!shouldOmit(value, key)) { - result[key] = value; - } - } - return result; -} - -export { omitBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/pick.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/pick.d.mts deleted file mode 100644 index 4e66438..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/pick.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Creates a new object composed of the picked object properties. - * - * This function takes an object and an array of keys, and returns a new object that - * includes only the properties corresponding to the specified keys. - * - * @template T - The type of object. - * @template K - The type of keys in object. - * @param {T} obj - The object to pick keys from. - * @param {K[]} keys - An array of keys to be picked from the object. - * @returns {Pick} A new object with the specified keys picked. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * const result = pick(obj, ['a', 'c']); - * // result will be { a: 1, c: 3 } - */ -declare function pick, K extends keyof T>(obj: T, keys: readonly K[]): Pick; - -export { pick }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/pick.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/pick.d.ts deleted file mode 100644 index 4e66438..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/pick.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Creates a new object composed of the picked object properties. - * - * This function takes an object and an array of keys, and returns a new object that - * includes only the properties corresponding to the specified keys. - * - * @template T - The type of object. - * @template K - The type of keys in object. - * @param {T} obj - The object to pick keys from. - * @param {K[]} keys - An array of keys to be picked from the object. - * @returns {Pick} A new object with the specified keys picked. - * - * @example - * const obj = { a: 1, b: 2, c: 3 }; - * const result = pick(obj, ['a', 'c']); - * // result will be { a: 1, c: 3 } - */ -declare function pick, K extends keyof T>(obj: T, keys: readonly K[]): Pick; - -export { pick }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/pick.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/pick.js deleted file mode 100644 index 9da1492..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/pick.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function pick(obj, keys) { - const result = {}; - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - if (Object.hasOwn(obj, key)) { - result[key] = obj[key]; - } - } - return result; -} - -exports.pick = pick; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/pick.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/pick.mjs deleted file mode 100644 index dfe94c8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/pick.mjs +++ /dev/null @@ -1,12 +0,0 @@ -function pick(obj, keys) { - const result = {}; - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - if (Object.hasOwn(obj, key)) { - result[key] = obj[key]; - } - } - return result; -} - -export { pick }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/pickBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/pickBy.d.mts deleted file mode 100644 index 0bd2f2b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/pickBy.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Creates a new object composed of the properties that satisfy the predicate function. - * - * This function takes an object and a predicate function, and returns a new object that - * includes only the properties for which the predicate function returns true. - * - * @template T - The type of object. - * @param {T} obj - The object to pick properties from. - * @param {(value: T[keyof T], key: keyof T) => boolean} shouldPick - A predicate function that determines - * whether a property should be picked. It takes the property's key and value as arguments and returns `true` - * if the property should be picked, and `false` otherwise. - * @returns {Partial} A new object with the properties that satisfy the predicate function. - * - * @example - * const obj = { a: 1, b: 'pick', c: 3 }; - * const shouldPick = (value) => typeof value === 'string'; - * const result = pickBy(obj, shouldPick); - * // result will be { b: 'pick' } - */ -declare function pickBy>(obj: T, shouldPick: (value: T[keyof T], key: keyof T) => boolean): Partial; - -export { pickBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/pickBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/pickBy.d.ts deleted file mode 100644 index 0bd2f2b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/pickBy.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Creates a new object composed of the properties that satisfy the predicate function. - * - * This function takes an object and a predicate function, and returns a new object that - * includes only the properties for which the predicate function returns true. - * - * @template T - The type of object. - * @param {T} obj - The object to pick properties from. - * @param {(value: T[keyof T], key: keyof T) => boolean} shouldPick - A predicate function that determines - * whether a property should be picked. It takes the property's key and value as arguments and returns `true` - * if the property should be picked, and `false` otherwise. - * @returns {Partial} A new object with the properties that satisfy the predicate function. - * - * @example - * const obj = { a: 1, b: 'pick', c: 3 }; - * const shouldPick = (value) => typeof value === 'string'; - * const result = pickBy(obj, shouldPick); - * // result will be { b: 'pick' } - */ -declare function pickBy>(obj: T, shouldPick: (value: T[keyof T], key: keyof T) => boolean): Partial; - -export { pickBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/pickBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/pickBy.js deleted file mode 100644 index f84ea24..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/pickBy.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function pickBy(obj, shouldPick) { - const result = {}; - const keys = Object.keys(obj); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = obj[key]; - if (shouldPick(value, key)) { - result[key] = value; - } - } - return result; -} - -exports.pickBy = pickBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/pickBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/pickBy.mjs deleted file mode 100644 index d5d8a0f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/pickBy.mjs +++ /dev/null @@ -1,14 +0,0 @@ -function pickBy(obj, shouldPick) { - const result = {}; - const keys = Object.keys(obj); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = obj[key]; - if (shouldPick(value, key)) { - result[key] = value; - } - } - return result; -} - -export { pickBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/toCamelCaseKeys.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/toCamelCaseKeys.d.mts deleted file mode 100644 index bcf1883..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/toCamelCaseKeys.d.mts +++ /dev/null @@ -1,57 +0,0 @@ -type SnakeToCamel = S extends `${infer H}_${infer T}` ? `${Lowercase}${Capitalize>}` : Lowercase; -type PascalToCamel = S extends `${infer F}${infer R}` ? `${Lowercase}${R}` : S; -/** If it's snake_case, apply the snake_case rule; for uppercase keys, lowercase the entire string; otherwise, just lowercase the first letter (including PascalCase → camelCase). */ -type AnyToCamel = S extends `${string}_${string}` ? SnakeToCamel : S extends Uppercase ? Lowercase : PascalToCamel; -type NonPlainObject = Date | RegExp | Map | Set | WeakMap | WeakSet | Promise | Error | ArrayBuffer | DataView | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array | ((...args: any[]) => any) | typeof globalThis; -type ToCamelCaseKeys = T extends NonPlainObject ? T : T extends any[] ? Array> : T extends Record ? { - [K in keyof T as AnyToCamel>]: ToCamelCaseKeys; -} : T; -/** - * Creates a new object composed of the properties with keys converted to camelCase. - * - * This function takes an object and returns a new object that includes the same properties, - * but with all keys converted to camelCase format. - * - * @template T - The type of object. - * @param {T} obj - The object to convert keys from. - * @returns {ToCamelCaseKeys} A new object with all keys converted to camelCase. - * - * @example - * // Example with objects - * const obj = { user_id: 1, first_name: 'John' }; - * const result = toCamelCaseKeys(obj); - * // result will be { userId: 1, firstName: 'John' } - * - * // Example with arrays of objects - * const arr = [ - * { user_id: 1, first_name: 'John' }, - * { user_id: 2, first_name: 'Jane' } - * ]; - * const arrResult = toCamelCaseKeys(arr); - * // arrResult will be [{ userId: 1, firstName: 'John' }, { userId: 2, firstName: 'Jane' }] - * - * // Example with nested objects - * const nested = { - * user_data: { - * user_id: 1, - * user_address: { - * street_name: 'Main St', - * zip_code: '12345' - * } - * } - * }; - * const nestedResult = toCamelCaseKeys(nested); - * // nestedResult will be: - * // { - * // userData: { - * // userId: 1, - * // userAddress: { - * // streetName: 'Main St', - * // zipCode: '12345' - * // } - * // } - * // } - */ -declare function toCamelCaseKeys(obj: T): ToCamelCaseKeys; - -export { toCamelCaseKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/toCamelCaseKeys.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/toCamelCaseKeys.d.ts deleted file mode 100644 index bcf1883..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/toCamelCaseKeys.d.ts +++ /dev/null @@ -1,57 +0,0 @@ -type SnakeToCamel = S extends `${infer H}_${infer T}` ? `${Lowercase}${Capitalize>}` : Lowercase; -type PascalToCamel = S extends `${infer F}${infer R}` ? `${Lowercase}${R}` : S; -/** If it's snake_case, apply the snake_case rule; for uppercase keys, lowercase the entire string; otherwise, just lowercase the first letter (including PascalCase → camelCase). */ -type AnyToCamel = S extends `${string}_${string}` ? SnakeToCamel : S extends Uppercase ? Lowercase : PascalToCamel; -type NonPlainObject = Date | RegExp | Map | Set | WeakMap | WeakSet | Promise | Error | ArrayBuffer | DataView | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array | ((...args: any[]) => any) | typeof globalThis; -type ToCamelCaseKeys = T extends NonPlainObject ? T : T extends any[] ? Array> : T extends Record ? { - [K in keyof T as AnyToCamel>]: ToCamelCaseKeys; -} : T; -/** - * Creates a new object composed of the properties with keys converted to camelCase. - * - * This function takes an object and returns a new object that includes the same properties, - * but with all keys converted to camelCase format. - * - * @template T - The type of object. - * @param {T} obj - The object to convert keys from. - * @returns {ToCamelCaseKeys} A new object with all keys converted to camelCase. - * - * @example - * // Example with objects - * const obj = { user_id: 1, first_name: 'John' }; - * const result = toCamelCaseKeys(obj); - * // result will be { userId: 1, firstName: 'John' } - * - * // Example with arrays of objects - * const arr = [ - * { user_id: 1, first_name: 'John' }, - * { user_id: 2, first_name: 'Jane' } - * ]; - * const arrResult = toCamelCaseKeys(arr); - * // arrResult will be [{ userId: 1, firstName: 'John' }, { userId: 2, firstName: 'Jane' }] - * - * // Example with nested objects - * const nested = { - * user_data: { - * user_id: 1, - * user_address: { - * street_name: 'Main St', - * zip_code: '12345' - * } - * } - * }; - * const nestedResult = toCamelCaseKeys(nested); - * // nestedResult will be: - * // { - * // userData: { - * // userId: 1, - * // userAddress: { - * // streetName: 'Main St', - * // zipCode: '12345' - * // } - * // } - * // } - */ -declare function toCamelCaseKeys(obj: T): ToCamelCaseKeys; - -export { toCamelCaseKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/toCamelCaseKeys.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/toCamelCaseKeys.js deleted file mode 100644 index 9ee5cf6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/toCamelCaseKeys.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArray = require('../compat/predicate/isArray.js'); -const isPlainObject = require('../predicate/isPlainObject.js'); -const camelCase = require('../string/camelCase.js'); - -function toCamelCaseKeys(obj) { - if (isArray.isArray(obj)) { - return obj.map(item => toCamelCaseKeys(item)); - } - if (isPlainObject.isPlainObject(obj)) { - const result = {}; - const keys = Object.keys(obj); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const camelKey = camelCase.camelCase(key); - const convertedValue = toCamelCaseKeys(obj[key]); - result[camelKey] = convertedValue; - } - return result; - } - return obj; -} - -exports.toCamelCaseKeys = toCamelCaseKeys; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/toCamelCaseKeys.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/toCamelCaseKeys.mjs deleted file mode 100644 index dbf8910..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/toCamelCaseKeys.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import { isArray } from '../compat/predicate/isArray.mjs'; -import { isPlainObject } from '../predicate/isPlainObject.mjs'; -import { camelCase } from '../string/camelCase.mjs'; - -function toCamelCaseKeys(obj) { - if (isArray(obj)) { - return obj.map(item => toCamelCaseKeys(item)); - } - if (isPlainObject(obj)) { - const result = {}; - const keys = Object.keys(obj); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const camelKey = camelCase(key); - const convertedValue = toCamelCaseKeys(obj[key]); - result[camelKey] = convertedValue; - } - return result; - } - return obj; -} - -export { toCamelCaseKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/toMerged.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/toMerged.d.mts deleted file mode 100644 index a7a2117..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/toMerged.d.mts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Merges the properties of the source object into a deep clone of the target object. - * Unlike `merge`, This function does not modify the original target object. - * - * This function performs a deep merge, meaning nested objects and arrays are merged recursively. - * - * - If a property in the source object is an array or object and the corresponding property in the target object is also an array or object, they will be merged. - * - If a property in the source object is undefined, it will not overwrite a defined property in the target object. - * - * Note that this function does not mutate the target object. - * - * @param {T} target - The target object to be cloned and merged into. This object is not modified directly. - * @param {S} source - The source object whose properties will be merged into the cloned target object. - * @returns {T & S} A new object with properties from the source object merged into a deep clone of the target object. - * - * @template T - Type of the target object. - * @template S - Type of the source object. - * - * @example - * const target = { a: 1, b: { x: 1, y: 2 } }; - * const source = { b: { y: 3, z: 4 }, c: 5 }; - * - * const result = toMerged(target, source); - * console.log(result); - * // Output: { a: 1, b: { x: 1, y: 3, z: 4 }, c: 5 } - * - * @example - * const target = { a: [1, 2], b: { x: 1 } }; - * const source = { a: [3], b: { y: 2 } }; - * - * const result = toMerged(target, source); - * console.log(result); - * // Output: { a: [3, 2], b: { x: 1, y: 2 } } - * - * @example - * const target = { a: null }; - * const source = { a: [1, 2, 3] }; - * - * const result = toMerged(target, source); - * console.log(result); - * // Output: { a: [1, 2, 3] } - */ -declare function toMerged, S extends Record>(target: T, source: S): T & S; - -export { toMerged }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/toMerged.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/toMerged.d.ts deleted file mode 100644 index a7a2117..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/toMerged.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Merges the properties of the source object into a deep clone of the target object. - * Unlike `merge`, This function does not modify the original target object. - * - * This function performs a deep merge, meaning nested objects and arrays are merged recursively. - * - * - If a property in the source object is an array or object and the corresponding property in the target object is also an array or object, they will be merged. - * - If a property in the source object is undefined, it will not overwrite a defined property in the target object. - * - * Note that this function does not mutate the target object. - * - * @param {T} target - The target object to be cloned and merged into. This object is not modified directly. - * @param {S} source - The source object whose properties will be merged into the cloned target object. - * @returns {T & S} A new object with properties from the source object merged into a deep clone of the target object. - * - * @template T - Type of the target object. - * @template S - Type of the source object. - * - * @example - * const target = { a: 1, b: { x: 1, y: 2 } }; - * const source = { b: { y: 3, z: 4 }, c: 5 }; - * - * const result = toMerged(target, source); - * console.log(result); - * // Output: { a: 1, b: { x: 1, y: 3, z: 4 }, c: 5 } - * - * @example - * const target = { a: [1, 2], b: { x: 1 } }; - * const source = { a: [3], b: { y: 2 } }; - * - * const result = toMerged(target, source); - * console.log(result); - * // Output: { a: [3, 2], b: { x: 1, y: 2 } } - * - * @example - * const target = { a: null }; - * const source = { a: [1, 2, 3] }; - * - * const result = toMerged(target, source); - * console.log(result); - * // Output: { a: [1, 2, 3] } - */ -declare function toMerged, S extends Record>(target: T, source: S): T & S; - -export { toMerged }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/toMerged.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/toMerged.js deleted file mode 100644 index cc6390d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/toMerged.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const clone = require('./clone.js'); -const mergeWith = require('./mergeWith.js'); -const isPlainObject = require('../predicate/isPlainObject.js'); - -function toMerged(target, source) { - return mergeWith.mergeWith(clone.clone(target), source, function mergeRecursively(targetValue, sourceValue) { - if (Array.isArray(sourceValue)) { - if (Array.isArray(targetValue)) { - return mergeWith.mergeWith(clone.clone(targetValue), sourceValue, mergeRecursively); - } - else { - return mergeWith.mergeWith([], sourceValue, mergeRecursively); - } - } - else if (isPlainObject.isPlainObject(sourceValue)) { - if (isPlainObject.isPlainObject(targetValue)) { - return mergeWith.mergeWith(clone.clone(targetValue), sourceValue, mergeRecursively); - } - else { - return mergeWith.mergeWith({}, sourceValue, mergeRecursively); - } - } - }); -} - -exports.toMerged = toMerged; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/toMerged.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/toMerged.mjs deleted file mode 100644 index a6b445d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/toMerged.mjs +++ /dev/null @@ -1,26 +0,0 @@ -import { clone } from './clone.mjs'; -import { mergeWith } from './mergeWith.mjs'; -import { isPlainObject } from '../predicate/isPlainObject.mjs'; - -function toMerged(target, source) { - return mergeWith(clone(target), source, function mergeRecursively(targetValue, sourceValue) { - if (Array.isArray(sourceValue)) { - if (Array.isArray(targetValue)) { - return mergeWith(clone(targetValue), sourceValue, mergeRecursively); - } - else { - return mergeWith([], sourceValue, mergeRecursively); - } - } - else if (isPlainObject(sourceValue)) { - if (isPlainObject(targetValue)) { - return mergeWith(clone(targetValue), sourceValue, mergeRecursively); - } - else { - return mergeWith({}, sourceValue, mergeRecursively); - } - } - }); -} - -export { toMerged }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/toSnakeCaseKeys.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/object/toSnakeCaseKeys.d.mts deleted file mode 100644 index 2426acb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/toSnakeCaseKeys.d.mts +++ /dev/null @@ -1,54 +0,0 @@ -type SnakeCase = S extends Uppercase ? Lowercase : S extends `${infer P1}${infer P2}` ? P2 extends Uncapitalize ? `${Lowercase}${SnakeCase}` : `${Lowercase}_${SnakeCase>}` : Lowercase; -type NonPlainObject = Date | RegExp | Map | Set | WeakMap | WeakSet | Promise | Error | ArrayBuffer | DataView | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array | ((...args: any[]) => any) | typeof globalThis; -type ToSnakeCaseKeys = T extends NonPlainObject ? T : T extends any[] ? Array> : T extends Record ? { - [K in keyof T as SnakeCase]: ToSnakeCaseKeys; -} : T; -/** - * Creates a new object composed of the properties with keys converted to snake_case. - * - * This function takes an object and returns a new object that includes the same properties, - * but with all keys converted to snake_case format. - * - * @template T - The type of object. - * @param {T} obj - The object to convert keys from. - * @returns {ToSnakeCaseKeys} A new object with all keys converted to snake_case. - * - * @example - * // Example with objects - * const obj = { userId: 1, firstName: 'John' }; - * const result = toSnakeCaseKeys(obj); - * // result will be { user_id: 1, first_name: 'John' } - * - * // Example with arrays of objects - * const arr = [ - * { userId: 1, firstName: 'John' }, - * { userId: 2, firstName: 'Jane' } - * ]; - * const arrResult = toSnakeCaseKeys(arr); - * // arrResult will be [{ user_id: 1, first_name: 'John' }, { user_id: 2, first_name: 'Jane' }] - * - * // Example with nested objects - * const nested = { - * userData: { - * userId: 1, - * userAddress: { - * streetName: 'Main St', - * zipCode: '12345' - * } - * } - * }; - * const nestedResult = toSnakeCaseKeys(nested); - * // nestedResult will be: - * // { - * // user_data: { - * // user_id: 1, - * // user_address: { - * // street_name: 'Main St', - * // zip_code: '12345' - * // } - * // } - * // } - */ -declare function toSnakeCaseKeys(obj: T): ToSnakeCaseKeys; - -export { type ToSnakeCaseKeys, toSnakeCaseKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/toSnakeCaseKeys.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/object/toSnakeCaseKeys.d.ts deleted file mode 100644 index 2426acb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/toSnakeCaseKeys.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -type SnakeCase = S extends Uppercase ? Lowercase : S extends `${infer P1}${infer P2}` ? P2 extends Uncapitalize ? `${Lowercase}${SnakeCase}` : `${Lowercase}_${SnakeCase>}` : Lowercase; -type NonPlainObject = Date | RegExp | Map | Set | WeakMap | WeakSet | Promise | Error | ArrayBuffer | DataView | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array | ((...args: any[]) => any) | typeof globalThis; -type ToSnakeCaseKeys = T extends NonPlainObject ? T : T extends any[] ? Array> : T extends Record ? { - [K in keyof T as SnakeCase]: ToSnakeCaseKeys; -} : T; -/** - * Creates a new object composed of the properties with keys converted to snake_case. - * - * This function takes an object and returns a new object that includes the same properties, - * but with all keys converted to snake_case format. - * - * @template T - The type of object. - * @param {T} obj - The object to convert keys from. - * @returns {ToSnakeCaseKeys} A new object with all keys converted to snake_case. - * - * @example - * // Example with objects - * const obj = { userId: 1, firstName: 'John' }; - * const result = toSnakeCaseKeys(obj); - * // result will be { user_id: 1, first_name: 'John' } - * - * // Example with arrays of objects - * const arr = [ - * { userId: 1, firstName: 'John' }, - * { userId: 2, firstName: 'Jane' } - * ]; - * const arrResult = toSnakeCaseKeys(arr); - * // arrResult will be [{ user_id: 1, first_name: 'John' }, { user_id: 2, first_name: 'Jane' }] - * - * // Example with nested objects - * const nested = { - * userData: { - * userId: 1, - * userAddress: { - * streetName: 'Main St', - * zipCode: '12345' - * } - * } - * }; - * const nestedResult = toSnakeCaseKeys(nested); - * // nestedResult will be: - * // { - * // user_data: { - * // user_id: 1, - * // user_address: { - * // street_name: 'Main St', - * // zip_code: '12345' - * // } - * // } - * // } - */ -declare function toSnakeCaseKeys(obj: T): ToSnakeCaseKeys; - -export { type ToSnakeCaseKeys, toSnakeCaseKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/toSnakeCaseKeys.js b/sdks/nodejs/node_modules/es-toolkit/dist/object/toSnakeCaseKeys.js deleted file mode 100644 index 4438bff..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/toSnakeCaseKeys.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArray = require('../compat/predicate/isArray.js'); -const isPlainObject = require('../compat/predicate/isPlainObject.js'); -const snakeCase = require('../string/snakeCase.js'); - -function toSnakeCaseKeys(obj) { - if (isArray.isArray(obj)) { - return obj.map(item => toSnakeCaseKeys(item)); - } - if (isPlainObject.isPlainObject(obj)) { - const result = {}; - const keys = Object.keys(obj); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const snakeKey = snakeCase.snakeCase(key); - const convertedValue = toSnakeCaseKeys(obj[key]); - result[snakeKey] = convertedValue; - } - return result; - } - return obj; -} - -exports.toSnakeCaseKeys = toSnakeCaseKeys; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/object/toSnakeCaseKeys.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/object/toSnakeCaseKeys.mjs deleted file mode 100644 index d0c9a46..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/object/toSnakeCaseKeys.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import { isArray } from '../compat/predicate/isArray.mjs'; -import { isPlainObject } from '../compat/predicate/isPlainObject.mjs'; -import { snakeCase } from '../string/snakeCase.mjs'; - -function toSnakeCaseKeys(obj) { - if (isArray(obj)) { - return obj.map(item => toSnakeCaseKeys(item)); - } - if (isPlainObject(obj)) { - const result = {}; - const keys = Object.keys(obj); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const snakeKey = snakeCase(key); - const convertedValue = toSnakeCaseKeys(obj[key]); - result[snakeKey] = convertedValue; - } - return result; - } - return obj; -} - -export { toSnakeCaseKeys }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/index.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/index.d.mts deleted file mode 100644 index 187878f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/index.d.mts +++ /dev/null @@ -1,32 +0,0 @@ -export { isArrayBuffer } from './isArrayBuffer.mjs'; -export { isBlob } from './isBlob.mjs'; -export { isBoolean } from './isBoolean.mjs'; -export { isBrowser } from './isBrowser.mjs'; -export { isBuffer } from './isBuffer.mjs'; -export { isDate } from './isDate.mjs'; -export { isEmptyObject } from './isEmptyObject.mjs'; -export { isEqual } from './isEqual.mjs'; -export { isEqualWith } from './isEqualWith.mjs'; -export { isError } from './isError.mjs'; -export { isFile } from './isFile.mjs'; -export { isFunction } from './isFunction.mjs'; -export { isJSON } from './isJSON.mjs'; -export { isJSONArray, isJSONObject, isJSONValue } from './isJSONValue.mjs'; -export { isLength } from './isLength.mjs'; -export { isMap } from './isMap.mjs'; -export { isNil } from './isNil.mjs'; -export { isNode } from './isNode.mjs'; -export { isNotNil } from './isNotNil.mjs'; -export { isNull } from './isNull.mjs'; -export { isNumber } from './isNumber.mjs'; -export { isPlainObject } from './isPlainObject.mjs'; -export { isPrimitive } from './isPrimitive.mjs'; -export { isPromise } from './isPromise.mjs'; -export { isRegExp } from './isRegExp.mjs'; -export { isSet } from './isSet.mjs'; -export { isString } from './isString.mjs'; -export { isSymbol } from './isSymbol.mjs'; -export { isTypedArray } from './isTypedArray.mjs'; -export { isUndefined } from './isUndefined.mjs'; -export { isWeakMap } from './isWeakMap.mjs'; -export { isWeakSet } from './isWeakSet.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/index.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/index.d.ts deleted file mode 100644 index 52f85ef..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/index.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -export { isArrayBuffer } from './isArrayBuffer.js'; -export { isBlob } from './isBlob.js'; -export { isBoolean } from './isBoolean.js'; -export { isBrowser } from './isBrowser.js'; -export { isBuffer } from './isBuffer.js'; -export { isDate } from './isDate.js'; -export { isEmptyObject } from './isEmptyObject.js'; -export { isEqual } from './isEqual.js'; -export { isEqualWith } from './isEqualWith.js'; -export { isError } from './isError.js'; -export { isFile } from './isFile.js'; -export { isFunction } from './isFunction.js'; -export { isJSON } from './isJSON.js'; -export { isJSONArray, isJSONObject, isJSONValue } from './isJSONValue.js'; -export { isLength } from './isLength.js'; -export { isMap } from './isMap.js'; -export { isNil } from './isNil.js'; -export { isNode } from './isNode.js'; -export { isNotNil } from './isNotNil.js'; -export { isNull } from './isNull.js'; -export { isNumber } from './isNumber.js'; -export { isPlainObject } from './isPlainObject.js'; -export { isPrimitive } from './isPrimitive.js'; -export { isPromise } from './isPromise.js'; -export { isRegExp } from './isRegExp.js'; -export { isSet } from './isSet.js'; -export { isString } from './isString.js'; -export { isSymbol } from './isSymbol.js'; -export { isTypedArray } from './isTypedArray.js'; -export { isUndefined } from './isUndefined.js'; -export { isWeakMap } from './isWeakMap.js'; -export { isWeakSet } from './isWeakSet.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/index.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/index.js deleted file mode 100644 index 2c8f8dd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/index.js +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isArrayBuffer = require('./isArrayBuffer.js'); -const isBlob = require('./isBlob.js'); -const isBoolean = require('./isBoolean.js'); -const isBrowser = require('./isBrowser.js'); -const isBuffer = require('./isBuffer.js'); -const isDate = require('./isDate.js'); -const isEmptyObject = require('./isEmptyObject.js'); -const isEqual = require('./isEqual.js'); -const isEqualWith = require('./isEqualWith.js'); -const isError = require('./isError.js'); -const isFile = require('./isFile.js'); -const isFunction = require('./isFunction.js'); -const isJSON = require('./isJSON.js'); -const isJSONValue = require('./isJSONValue.js'); -const isLength = require('./isLength.js'); -const isMap = require('./isMap.js'); -const isNil = require('./isNil.js'); -const isNode = require('./isNode.js'); -const isNotNil = require('./isNotNil.js'); -const isNull = require('./isNull.js'); -const isNumber = require('./isNumber.js'); -const isPlainObject = require('./isPlainObject.js'); -const isPrimitive = require('./isPrimitive.js'); -const isPromise = require('./isPromise.js'); -const isRegExp = require('./isRegExp.js'); -const isSet = require('./isSet.js'); -const isString = require('./isString.js'); -const isSymbol = require('./isSymbol.js'); -const isTypedArray = require('./isTypedArray.js'); -const isUndefined = require('./isUndefined.js'); -const isWeakMap = require('./isWeakMap.js'); -const isWeakSet = require('./isWeakSet.js'); - - - -exports.isArrayBuffer = isArrayBuffer.isArrayBuffer; -exports.isBlob = isBlob.isBlob; -exports.isBoolean = isBoolean.isBoolean; -exports.isBrowser = isBrowser.isBrowser; -exports.isBuffer = isBuffer.isBuffer; -exports.isDate = isDate.isDate; -exports.isEmptyObject = isEmptyObject.isEmptyObject; -exports.isEqual = isEqual.isEqual; -exports.isEqualWith = isEqualWith.isEqualWith; -exports.isError = isError.isError; -exports.isFile = isFile.isFile; -exports.isFunction = isFunction.isFunction; -exports.isJSON = isJSON.isJSON; -exports.isJSONArray = isJSONValue.isJSONArray; -exports.isJSONObject = isJSONValue.isJSONObject; -exports.isJSONValue = isJSONValue.isJSONValue; -exports.isLength = isLength.isLength; -exports.isMap = isMap.isMap; -exports.isNil = isNil.isNil; -exports.isNode = isNode.isNode; -exports.isNotNil = isNotNil.isNotNil; -exports.isNull = isNull.isNull; -exports.isNumber = isNumber.isNumber; -exports.isPlainObject = isPlainObject.isPlainObject; -exports.isPrimitive = isPrimitive.isPrimitive; -exports.isPromise = isPromise.isPromise; -exports.isRegExp = isRegExp.isRegExp; -exports.isSet = isSet.isSet; -exports.isString = isString.isString; -exports.isSymbol = isSymbol.isSymbol; -exports.isTypedArray = isTypedArray.isTypedArray; -exports.isUndefined = isUndefined.isUndefined; -exports.isWeakMap = isWeakMap.isWeakMap; -exports.isWeakSet = isWeakSet.isWeakSet; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/index.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/index.mjs deleted file mode 100644 index 187878f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/index.mjs +++ /dev/null @@ -1,32 +0,0 @@ -export { isArrayBuffer } from './isArrayBuffer.mjs'; -export { isBlob } from './isBlob.mjs'; -export { isBoolean } from './isBoolean.mjs'; -export { isBrowser } from './isBrowser.mjs'; -export { isBuffer } from './isBuffer.mjs'; -export { isDate } from './isDate.mjs'; -export { isEmptyObject } from './isEmptyObject.mjs'; -export { isEqual } from './isEqual.mjs'; -export { isEqualWith } from './isEqualWith.mjs'; -export { isError } from './isError.mjs'; -export { isFile } from './isFile.mjs'; -export { isFunction } from './isFunction.mjs'; -export { isJSON } from './isJSON.mjs'; -export { isJSONArray, isJSONObject, isJSONValue } from './isJSONValue.mjs'; -export { isLength } from './isLength.mjs'; -export { isMap } from './isMap.mjs'; -export { isNil } from './isNil.mjs'; -export { isNode } from './isNode.mjs'; -export { isNotNil } from './isNotNil.mjs'; -export { isNull } from './isNull.mjs'; -export { isNumber } from './isNumber.mjs'; -export { isPlainObject } from './isPlainObject.mjs'; -export { isPrimitive } from './isPrimitive.mjs'; -export { isPromise } from './isPromise.mjs'; -export { isRegExp } from './isRegExp.mjs'; -export { isSet } from './isSet.mjs'; -export { isString } from './isString.mjs'; -export { isSymbol } from './isSymbol.mjs'; -export { isTypedArray } from './isTypedArray.mjs'; -export { isUndefined } from './isUndefined.mjs'; -export { isWeakMap } from './isWeakMap.mjs'; -export { isWeakSet } from './isWeakSet.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isArrayBuffer.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isArrayBuffer.d.mts deleted file mode 100644 index 7bca099..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isArrayBuffer.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `ArrayBuffer`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `ArrayBuffer`. - * - * @param {unknown} value The value to check if it is a `ArrayBuffer`. - * @returns {value is ArrayBuffer} Returns `true` if `value` is a `ArrayBuffer`, else `false`. - * - * @example - * const value1 = new ArrayBuffer(); - * const value2 = new Array(); - * const value3 = new Map(); - * - * console.log(isArrayBuffer(value1)); // true - * console.log(isArrayBuffer(value2)); // false - * console.log(isArrayBuffer(value3)); // false - */ -declare function isArrayBuffer(value: unknown): value is ArrayBuffer; - -export { isArrayBuffer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isArrayBuffer.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isArrayBuffer.d.ts deleted file mode 100644 index 7bca099..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isArrayBuffer.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `ArrayBuffer`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `ArrayBuffer`. - * - * @param {unknown} value The value to check if it is a `ArrayBuffer`. - * @returns {value is ArrayBuffer} Returns `true` if `value` is a `ArrayBuffer`, else `false`. - * - * @example - * const value1 = new ArrayBuffer(); - * const value2 = new Array(); - * const value3 = new Map(); - * - * console.log(isArrayBuffer(value1)); // true - * console.log(isArrayBuffer(value2)); // false - * console.log(isArrayBuffer(value3)); // false - */ -declare function isArrayBuffer(value: unknown): value is ArrayBuffer; - -export { isArrayBuffer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isArrayBuffer.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isArrayBuffer.js deleted file mode 100644 index e33ecd0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isArrayBuffer.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isArrayBuffer(value) { - return value instanceof ArrayBuffer; -} - -exports.isArrayBuffer = isArrayBuffer; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isArrayBuffer.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isArrayBuffer.mjs deleted file mode 100644 index 64a15ed..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isArrayBuffer.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isArrayBuffer(value) { - return value instanceof ArrayBuffer; -} - -export { isArrayBuffer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBlob.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBlob.d.mts deleted file mode 100644 index 8960eb3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBlob.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Checks if the given value is a Blob. - * - * This function tests whether the provided value is an instance of `Blob`. - * It returns `true` if the value is an instance of `Blob`, and `false` otherwise. - * - * @param {unknown} x - The value to test if it is a Blob. - * @returns {x is Blob} True if the value is a Blob, false otherwise. - * - * @example - * const value1 = new Blob(); - * const value2 = {}; - * - * console.log(isBlob(value1)); // true - * console.log(isBlob(value2)); // false - */ -declare function isBlob(x: unknown): x is Blob; - -export { isBlob }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBlob.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBlob.d.ts deleted file mode 100644 index 8960eb3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBlob.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Checks if the given value is a Blob. - * - * This function tests whether the provided value is an instance of `Blob`. - * It returns `true` if the value is an instance of `Blob`, and `false` otherwise. - * - * @param {unknown} x - The value to test if it is a Blob. - * @returns {x is Blob} True if the value is a Blob, false otherwise. - * - * @example - * const value1 = new Blob(); - * const value2 = {}; - * - * console.log(isBlob(value1)); // true - * console.log(isBlob(value2)); // false - */ -declare function isBlob(x: unknown): x is Blob; - -export { isBlob }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBlob.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBlob.js deleted file mode 100644 index 42e96f9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBlob.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isBlob(x) { - if (typeof Blob === 'undefined') { - return false; - } - return x instanceof Blob; -} - -exports.isBlob = isBlob; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBlob.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBlob.mjs deleted file mode 100644 index 8d503ac..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBlob.mjs +++ /dev/null @@ -1,8 +0,0 @@ -function isBlob(x) { - if (typeof Blob === 'undefined') { - return false; - } - return x instanceof Blob; -} - -export { isBlob }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBoolean.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBoolean.d.mts deleted file mode 100644 index dc6dbee..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBoolean.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Checks if the given value is boolean. - * - * This function tests whether the provided value is strictly `boolean`. - * It returns `true` if the value is `boolean`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `boolean`. - * - * @param {unknown} x - The Value to test if it is boolean. - * @returns {x is boolean} True if the value is boolean, false otherwise. - * - * @example - * - * const value1 = true; - * const value2 = 0; - * const value3 = 'abc'; - * - * console.log(isBoolean(value1)); // true - * console.log(isBoolean(value2)); // false - * console.log(isBoolean(value3)); // false - * - */ -declare function isBoolean(x: unknown): x is boolean; - -export { isBoolean }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBoolean.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBoolean.d.ts deleted file mode 100644 index dc6dbee..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBoolean.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Checks if the given value is boolean. - * - * This function tests whether the provided value is strictly `boolean`. - * It returns `true` if the value is `boolean`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `boolean`. - * - * @param {unknown} x - The Value to test if it is boolean. - * @returns {x is boolean} True if the value is boolean, false otherwise. - * - * @example - * - * const value1 = true; - * const value2 = 0; - * const value3 = 'abc'; - * - * console.log(isBoolean(value1)); // true - * console.log(isBoolean(value2)); // false - * console.log(isBoolean(value3)); // false - * - */ -declare function isBoolean(x: unknown): x is boolean; - -export { isBoolean }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBoolean.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBoolean.js deleted file mode 100644 index e1aeb58..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBoolean.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isBoolean(x) { - return typeof x === 'boolean'; -} - -exports.isBoolean = isBoolean; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBoolean.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBoolean.mjs deleted file mode 100644 index 9f8eafa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBoolean.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isBoolean(x) { - return typeof x === 'boolean'; -} - -export { isBoolean }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBrowser.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBrowser.d.mts deleted file mode 100644 index 2355a9f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBrowser.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Checks if the current environment is a browser. - * - * This function checks for the existence of the `window.document` property, - * which only exists in browser environments. - * - * @returns {boolean} `true` if the current environment is a browser, otherwise `false`. - * - * @example - * if (isBrowser()) { - * console.log("This is running in a browser"); - * document.getElementById('app').innerHTML = 'Hello World'; - * } - */ -declare function isBrowser(): boolean; - -export { isBrowser }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBrowser.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBrowser.d.ts deleted file mode 100644 index 2355a9f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBrowser.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Checks if the current environment is a browser. - * - * This function checks for the existence of the `window.document` property, - * which only exists in browser environments. - * - * @returns {boolean} `true` if the current environment is a browser, otherwise `false`. - * - * @example - * if (isBrowser()) { - * console.log("This is running in a browser"); - * document.getElementById('app').innerHTML = 'Hello World'; - * } - */ -declare function isBrowser(): boolean; - -export { isBrowser }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBrowser.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBrowser.js deleted file mode 100644 index fc23bab..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBrowser.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isBrowser() { - return typeof window !== 'undefined' && window?.document != null; -} - -exports.isBrowser = isBrowser; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBrowser.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBrowser.mjs deleted file mode 100644 index cf261b6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBrowser.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isBrowser() { - return typeof window !== 'undefined' && window?.document != null; -} - -export { isBrowser }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBuffer.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBuffer.d.mts deleted file mode 100644 index ffb16bf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBuffer.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Checks if the given value is a Buffer instance. - * - * This function tests whether the provided value is an instance of Buffer. - * It returns `true` if the value is a Buffer, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Buffer`. - * - * @param {unknown} x - The value to check if it is a Buffer. - * @returns {boolean} Returns `true` if `x` is a Buffer, else `false`. - * - * @example - * const buffer = Buffer.from("test"); - * console.log(isBuffer(buffer)); // true - * - * const notBuffer = "not a buffer"; - * console.log(isBuffer(notBuffer)); // false - */ -declare function isBuffer(x: unknown): boolean; - -export { isBuffer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBuffer.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBuffer.d.ts deleted file mode 100644 index ffb16bf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBuffer.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Checks if the given value is a Buffer instance. - * - * This function tests whether the provided value is an instance of Buffer. - * It returns `true` if the value is a Buffer, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Buffer`. - * - * @param {unknown} x - The value to check if it is a Buffer. - * @returns {boolean} Returns `true` if `x` is a Buffer, else `false`. - * - * @example - * const buffer = Buffer.from("test"); - * console.log(isBuffer(buffer)); // true - * - * const notBuffer = "not a buffer"; - * console.log(isBuffer(notBuffer)); // false - */ -declare function isBuffer(x: unknown): boolean; - -export { isBuffer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBuffer.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBuffer.js deleted file mode 100644 index b3adbbb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBuffer.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isBuffer(x) { - return typeof Buffer !== 'undefined' && Buffer.isBuffer(x); -} - -exports.isBuffer = isBuffer; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBuffer.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBuffer.mjs deleted file mode 100644 index 2447789..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isBuffer.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isBuffer(x) { - return typeof Buffer !== 'undefined' && Buffer.isBuffer(x); -} - -export { isBuffer }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isDate.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isDate.d.mts deleted file mode 100644 index 472d205..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isDate.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is a Date object. - * - * @param {unknown} value The value to check. - * @returns {value is Date} Returns `true` if `value` is a Date object, `false` otherwise. - * - * @example - * const value1 = new Date(); - * const value2 = '2024-01-01'; - * - * console.log(isDate(value1)); // true - * console.log(isDate(value2)); // false - */ -declare function isDate(value: unknown): value is Date; - -export { isDate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isDate.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isDate.d.ts deleted file mode 100644 index 472d205..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isDate.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is a Date object. - * - * @param {unknown} value The value to check. - * @returns {value is Date} Returns `true` if `value` is a Date object, `false` otherwise. - * - * @example - * const value1 = new Date(); - * const value2 = '2024-01-01'; - * - * console.log(isDate(value1)); // true - * console.log(isDate(value2)); // false - */ -declare function isDate(value: unknown): value is Date; - -export { isDate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isDate.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isDate.js deleted file mode 100644 index 782546e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isDate.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isDate(value) { - return value instanceof Date; -} - -exports.isDate = isDate; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isDate.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isDate.mjs deleted file mode 100644 index ed0b444..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isDate.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isDate(value) { - return value instanceof Date; -} - -export { isDate }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEmptyObject.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEmptyObject.d.mts deleted file mode 100644 index 3845e33..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEmptyObject.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if a value is an empty plain object. - * - * @param {unknown} value - The value to check. - * @returns {value is Record} - True if the value is an empty plain object, otherwise false. - * - * @example - * isEmptyObject({}); // true - * isEmptyObject({ a: 1 }); // false - * isEmptyObject([]); // false - * isEmptyObject(null); // false - */ -declare function isEmptyObject(value: unknown): value is Record; - -export { isEmptyObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEmptyObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEmptyObject.d.ts deleted file mode 100644 index 3845e33..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEmptyObject.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if a value is an empty plain object. - * - * @param {unknown} value - The value to check. - * @returns {value is Record} - True if the value is an empty plain object, otherwise false. - * - * @example - * isEmptyObject({}); // true - * isEmptyObject({ a: 1 }); // false - * isEmptyObject([]); // false - * isEmptyObject(null); // false - */ -declare function isEmptyObject(value: unknown): value is Record; - -export { isEmptyObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEmptyObject.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEmptyObject.js deleted file mode 100644 index c245e31..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEmptyObject.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isPlainObject = require('./isPlainObject.js'); - -function isEmptyObject(value) { - return isPlainObject.isPlainObject(value) && Object.keys(value).length === 0; -} - -exports.isEmptyObject = isEmptyObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEmptyObject.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEmptyObject.mjs deleted file mode 100644 index 1e0c44b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEmptyObject.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { isPlainObject } from './isPlainObject.mjs'; - -function isEmptyObject(value) { - return isPlainObject(value) && Object.keys(value).length === 0; -} - -export { isEmptyObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqual.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqual.d.mts deleted file mode 100644 index d5d6a12..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqual.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Checks if two values are equal, including support for `Date`, `RegExp`, and deep object comparison. - * - * @param {unknown} a - The first value to compare. - * @param {unknown} b - The second value to compare. - * @returns {boolean} `true` if the values are equal, otherwise `false`. - * - * @example - * isEqual(1, 1); // true - * isEqual({ a: 1 }, { a: 1 }); // true - * isEqual(/abc/g, /abc/g); // true - * isEqual(new Date('2020-01-01'), new Date('2020-01-01')); // true - * isEqual([1, 2, 3], [1, 2, 3]); // true - */ -declare function isEqual(a: any, b: any): boolean; - -export { isEqual }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqual.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqual.d.ts deleted file mode 100644 index d5d6a12..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqual.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Checks if two values are equal, including support for `Date`, `RegExp`, and deep object comparison. - * - * @param {unknown} a - The first value to compare. - * @param {unknown} b - The second value to compare. - * @returns {boolean} `true` if the values are equal, otherwise `false`. - * - * @example - * isEqual(1, 1); // true - * isEqual({ a: 1 }, { a: 1 }); // true - * isEqual(/abc/g, /abc/g); // true - * isEqual(new Date('2020-01-01'), new Date('2020-01-01')); // true - * isEqual([1, 2, 3], [1, 2, 3]); // true - */ -declare function isEqual(a: any, b: any): boolean; - -export { isEqual }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqual.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqual.js deleted file mode 100644 index b49d671..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqual.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isEqualWith = require('./isEqualWith.js'); -const noop = require('../function/noop.js'); - -function isEqual(a, b) { - return isEqualWith.isEqualWith(a, b, noop.noop); -} - -exports.isEqual = isEqual; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqual.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqual.mjs deleted file mode 100644 index a587e63..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqual.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { isEqualWith } from './isEqualWith.mjs'; -import { noop } from '../function/noop.mjs'; - -function isEqual(a, b) { - return isEqualWith(a, b, noop); -} - -export { isEqual }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqualWith.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqualWith.d.mts deleted file mode 100644 index 53c8d30..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqualWith.d.mts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Compares two values for equality using a custom comparison function. - * - * The custom function allows for fine-tuned control over the comparison process. If it returns a boolean, that result determines the equality. If it returns undefined, the function falls back to the default equality comparison. - * - * This function also uses the custom equality function to compare values inside objects, - * arrays, maps, sets, and other complex structures, ensuring a deep comparison. - * - * This approach provides flexibility in handling complex comparisons while maintaining efficient default behavior for simpler cases. - * - * The custom comparison function can take up to six parameters: - * - `x`: The value from the first object `a`. - * - `y`: The value from the second object `b`. - * - `property`: The property key used to get `x` and `y`. - * - `xParent`: The parent of the first value `x`. - * - `yParent`: The parent of the second value `y`. - * - `stack`: An internal stack (Map) to handle circular references. - * - * @param {unknown} a - The first value to compare. - * @param {unknown} b - The second value to compare. - * @param {(x: any, y: any, property?: PropertyKey, xParent?: any, yParent?: any, stack?: Map) => boolean | void} areValuesEqual - A function to customize the comparison. - * If it returns a boolean, that result will be used. If it returns undefined, - * the default equality comparison will be used. - * @returns {boolean} `true` if the values are equal according to the customizer, otherwise `false`. - * - * @example - * const customizer = (a, b) => { - * if (typeof a === 'string' && typeof b === 'string') { - * return a.toLowerCase() === b.toLowerCase(); - * } - * }; - * isEqualWith('Hello', 'hello', customizer); // true - * isEqualWith({ a: 'Hello' }, { a: 'hello' }, customizer); // true - * isEqualWith([1, 2, 3], [1, 2, 3], customizer); // true - */ -declare function isEqualWith(a: any, b: any, areValuesEqual: (x: any, y: any, property?: PropertyKey, xParent?: any, yParent?: any, stack?: Map) => boolean | void): boolean; - -export { isEqualWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqualWith.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqualWith.d.ts deleted file mode 100644 index 53c8d30..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqualWith.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Compares two values for equality using a custom comparison function. - * - * The custom function allows for fine-tuned control over the comparison process. If it returns a boolean, that result determines the equality. If it returns undefined, the function falls back to the default equality comparison. - * - * This function also uses the custom equality function to compare values inside objects, - * arrays, maps, sets, and other complex structures, ensuring a deep comparison. - * - * This approach provides flexibility in handling complex comparisons while maintaining efficient default behavior for simpler cases. - * - * The custom comparison function can take up to six parameters: - * - `x`: The value from the first object `a`. - * - `y`: The value from the second object `b`. - * - `property`: The property key used to get `x` and `y`. - * - `xParent`: The parent of the first value `x`. - * - `yParent`: The parent of the second value `y`. - * - `stack`: An internal stack (Map) to handle circular references. - * - * @param {unknown} a - The first value to compare. - * @param {unknown} b - The second value to compare. - * @param {(x: any, y: any, property?: PropertyKey, xParent?: any, yParent?: any, stack?: Map) => boolean | void} areValuesEqual - A function to customize the comparison. - * If it returns a boolean, that result will be used. If it returns undefined, - * the default equality comparison will be used. - * @returns {boolean} `true` if the values are equal according to the customizer, otherwise `false`. - * - * @example - * const customizer = (a, b) => { - * if (typeof a === 'string' && typeof b === 'string') { - * return a.toLowerCase() === b.toLowerCase(); - * } - * }; - * isEqualWith('Hello', 'hello', customizer); // true - * isEqualWith({ a: 'Hello' }, { a: 'hello' }, customizer); // true - * isEqualWith([1, 2, 3], [1, 2, 3], customizer); // true - */ -declare function isEqualWith(a: any, b: any, areValuesEqual: (x: any, y: any, property?: PropertyKey, xParent?: any, yParent?: any, stack?: Map) => boolean | void): boolean; - -export { isEqualWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqualWith.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqualWith.js deleted file mode 100644 index 0fd7d7d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqualWith.js +++ /dev/null @@ -1,189 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isPlainObject = require('./isPlainObject.js'); -const getSymbols = require('../compat/_internal/getSymbols.js'); -const getTag = require('../compat/_internal/getTag.js'); -const tags = require('../compat/_internal/tags.js'); -const isEqualsSameValueZero = require('../_internal/isEqualsSameValueZero.js'); - -function isEqualWith(a, b, areValuesEqual) { - return isEqualWithImpl(a, b, undefined, undefined, undefined, undefined, areValuesEqual); -} -function isEqualWithImpl(a, b, property, aParent, bParent, stack, areValuesEqual) { - const result = areValuesEqual(a, b, property, aParent, bParent, stack); - if (result !== undefined) { - return result; - } - if (typeof a === typeof b) { - switch (typeof a) { - case 'bigint': - case 'string': - case 'boolean': - case 'symbol': - case 'undefined': { - return a === b; - } - case 'number': { - return a === b || Object.is(a, b); - } - case 'function': { - return a === b; - } - case 'object': { - return areObjectsEqual(a, b, stack, areValuesEqual); - } - } - } - return areObjectsEqual(a, b, stack, areValuesEqual); -} -function areObjectsEqual(a, b, stack, areValuesEqual) { - if (Object.is(a, b)) { - return true; - } - let aTag = getTag.getTag(a); - let bTag = getTag.getTag(b); - if (aTag === tags.argumentsTag) { - aTag = tags.objectTag; - } - if (bTag === tags.argumentsTag) { - bTag = tags.objectTag; - } - if (aTag !== bTag) { - return false; - } - switch (aTag) { - case tags.stringTag: - return a.toString() === b.toString(); - case tags.numberTag: { - const x = a.valueOf(); - const y = b.valueOf(); - return isEqualsSameValueZero.isEqualsSameValueZero(x, y); - } - case tags.booleanTag: - case tags.dateTag: - case tags.symbolTag: - return Object.is(a.valueOf(), b.valueOf()); - case tags.regexpTag: { - return a.source === b.source && a.flags === b.flags; - } - case tags.functionTag: { - return a === b; - } - } - stack = stack ?? new Map(); - const aStack = stack.get(a); - const bStack = stack.get(b); - if (aStack != null && bStack != null) { - return aStack === b; - } - stack.set(a, b); - stack.set(b, a); - try { - switch (aTag) { - case tags.mapTag: { - if (a.size !== b.size) { - return false; - } - for (const [key, value] of a.entries()) { - if (!b.has(key) || !isEqualWithImpl(value, b.get(key), key, a, b, stack, areValuesEqual)) { - return false; - } - } - return true; - } - case tags.setTag: { - if (a.size !== b.size) { - return false; - } - const aValues = Array.from(a.values()); - const bValues = Array.from(b.values()); - for (let i = 0; i < aValues.length; i++) { - const aValue = aValues[i]; - const index = bValues.findIndex(bValue => { - return isEqualWithImpl(aValue, bValue, undefined, a, b, stack, areValuesEqual); - }); - if (index === -1) { - return false; - } - bValues.splice(index, 1); - } - return true; - } - case tags.arrayTag: - case tags.uint8ArrayTag: - case tags.uint8ClampedArrayTag: - case tags.uint16ArrayTag: - case tags.uint32ArrayTag: - case tags.bigUint64ArrayTag: - case tags.int8ArrayTag: - case tags.int16ArrayTag: - case tags.int32ArrayTag: - case tags.bigInt64ArrayTag: - case tags.float32ArrayTag: - case tags.float64ArrayTag: { - if (typeof Buffer !== 'undefined' && Buffer.isBuffer(a) !== Buffer.isBuffer(b)) { - return false; - } - if (a.length !== b.length) { - return false; - } - for (let i = 0; i < a.length; i++) { - if (!isEqualWithImpl(a[i], b[i], i, a, b, stack, areValuesEqual)) { - return false; - } - } - return true; - } - case tags.arrayBufferTag: { - if (a.byteLength !== b.byteLength) { - return false; - } - return areObjectsEqual(new Uint8Array(a), new Uint8Array(b), stack, areValuesEqual); - } - case tags.dataViewTag: { - if (a.byteLength !== b.byteLength || a.byteOffset !== b.byteOffset) { - return false; - } - return areObjectsEqual(new Uint8Array(a), new Uint8Array(b), stack, areValuesEqual); - } - case tags.errorTag: { - return a.name === b.name && a.message === b.message; - } - case tags.objectTag: { - const areEqualInstances = areObjectsEqual(a.constructor, b.constructor, stack, areValuesEqual) || - (isPlainObject.isPlainObject(a) && isPlainObject.isPlainObject(b)); - if (!areEqualInstances) { - return false; - } - const aKeys = [...Object.keys(a), ...getSymbols.getSymbols(a)]; - const bKeys = [...Object.keys(b), ...getSymbols.getSymbols(b)]; - if (aKeys.length !== bKeys.length) { - return false; - } - for (let i = 0; i < aKeys.length; i++) { - const propKey = aKeys[i]; - const aProp = a[propKey]; - if (!Object.hasOwn(b, propKey)) { - return false; - } - const bProp = b[propKey]; - if (!isEqualWithImpl(aProp, bProp, propKey, a, b, stack, areValuesEqual)) { - return false; - } - } - return true; - } - default: { - return false; - } - } - } - finally { - stack.delete(a); - stack.delete(b); - } -} - -exports.isEqualWith = isEqualWith; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqualWith.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqualWith.mjs deleted file mode 100644 index 65cec37..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isEqualWith.mjs +++ /dev/null @@ -1,185 +0,0 @@ -import { isPlainObject } from './isPlainObject.mjs'; -import { getSymbols } from '../compat/_internal/getSymbols.mjs'; -import { getTag } from '../compat/_internal/getTag.mjs'; -import { functionTag, regexpTag, symbolTag, dateTag, booleanTag, numberTag, stringTag, objectTag, errorTag, dataViewTag, arrayBufferTag, float64ArrayTag, float32ArrayTag, bigInt64ArrayTag, int32ArrayTag, int16ArrayTag, int8ArrayTag, bigUint64ArrayTag, uint32ArrayTag, uint16ArrayTag, uint8ClampedArrayTag, uint8ArrayTag, arrayTag, setTag, mapTag, argumentsTag } from '../compat/_internal/tags.mjs'; -import { isEqualsSameValueZero } from '../_internal/isEqualsSameValueZero.mjs'; - -function isEqualWith(a, b, areValuesEqual) { - return isEqualWithImpl(a, b, undefined, undefined, undefined, undefined, areValuesEqual); -} -function isEqualWithImpl(a, b, property, aParent, bParent, stack, areValuesEqual) { - const result = areValuesEqual(a, b, property, aParent, bParent, stack); - if (result !== undefined) { - return result; - } - if (typeof a === typeof b) { - switch (typeof a) { - case 'bigint': - case 'string': - case 'boolean': - case 'symbol': - case 'undefined': { - return a === b; - } - case 'number': { - return a === b || Object.is(a, b); - } - case 'function': { - return a === b; - } - case 'object': { - return areObjectsEqual(a, b, stack, areValuesEqual); - } - } - } - return areObjectsEqual(a, b, stack, areValuesEqual); -} -function areObjectsEqual(a, b, stack, areValuesEqual) { - if (Object.is(a, b)) { - return true; - } - let aTag = getTag(a); - let bTag = getTag(b); - if (aTag === argumentsTag) { - aTag = objectTag; - } - if (bTag === argumentsTag) { - bTag = objectTag; - } - if (aTag !== bTag) { - return false; - } - switch (aTag) { - case stringTag: - return a.toString() === b.toString(); - case numberTag: { - const x = a.valueOf(); - const y = b.valueOf(); - return isEqualsSameValueZero(x, y); - } - case booleanTag: - case dateTag: - case symbolTag: - return Object.is(a.valueOf(), b.valueOf()); - case regexpTag: { - return a.source === b.source && a.flags === b.flags; - } - case functionTag: { - return a === b; - } - } - stack = stack ?? new Map(); - const aStack = stack.get(a); - const bStack = stack.get(b); - if (aStack != null && bStack != null) { - return aStack === b; - } - stack.set(a, b); - stack.set(b, a); - try { - switch (aTag) { - case mapTag: { - if (a.size !== b.size) { - return false; - } - for (const [key, value] of a.entries()) { - if (!b.has(key) || !isEqualWithImpl(value, b.get(key), key, a, b, stack, areValuesEqual)) { - return false; - } - } - return true; - } - case setTag: { - if (a.size !== b.size) { - return false; - } - const aValues = Array.from(a.values()); - const bValues = Array.from(b.values()); - for (let i = 0; i < aValues.length; i++) { - const aValue = aValues[i]; - const index = bValues.findIndex(bValue => { - return isEqualWithImpl(aValue, bValue, undefined, a, b, stack, areValuesEqual); - }); - if (index === -1) { - return false; - } - bValues.splice(index, 1); - } - return true; - } - case arrayTag: - case uint8ArrayTag: - case uint8ClampedArrayTag: - case uint16ArrayTag: - case uint32ArrayTag: - case bigUint64ArrayTag: - case int8ArrayTag: - case int16ArrayTag: - case int32ArrayTag: - case bigInt64ArrayTag: - case float32ArrayTag: - case float64ArrayTag: { - if (typeof Buffer !== 'undefined' && Buffer.isBuffer(a) !== Buffer.isBuffer(b)) { - return false; - } - if (a.length !== b.length) { - return false; - } - for (let i = 0; i < a.length; i++) { - if (!isEqualWithImpl(a[i], b[i], i, a, b, stack, areValuesEqual)) { - return false; - } - } - return true; - } - case arrayBufferTag: { - if (a.byteLength !== b.byteLength) { - return false; - } - return areObjectsEqual(new Uint8Array(a), new Uint8Array(b), stack, areValuesEqual); - } - case dataViewTag: { - if (a.byteLength !== b.byteLength || a.byteOffset !== b.byteOffset) { - return false; - } - return areObjectsEqual(new Uint8Array(a), new Uint8Array(b), stack, areValuesEqual); - } - case errorTag: { - return a.name === b.name && a.message === b.message; - } - case objectTag: { - const areEqualInstances = areObjectsEqual(a.constructor, b.constructor, stack, areValuesEqual) || - (isPlainObject(a) && isPlainObject(b)); - if (!areEqualInstances) { - return false; - } - const aKeys = [...Object.keys(a), ...getSymbols(a)]; - const bKeys = [...Object.keys(b), ...getSymbols(b)]; - if (aKeys.length !== bKeys.length) { - return false; - } - for (let i = 0; i < aKeys.length; i++) { - const propKey = aKeys[i]; - const aProp = a[propKey]; - if (!Object.hasOwn(b, propKey)) { - return false; - } - const bProp = b[propKey]; - if (!isEqualWithImpl(aProp, bProp, propKey, a, b, stack, areValuesEqual)) { - return false; - } - } - return true; - } - default: { - return false; - } - } - } - finally { - stack.delete(a); - stack.delete(b); - } -} - -export { isEqualWith }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isError.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isError.d.mts deleted file mode 100644 index 586813a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isError.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is an Error object. - * - * @param {unknown} value The value to check. - * @returns {value is Error} Returns `true` if `value` is an Error object, `false` otherwise. - * - * @example - * ```typescript - * console.log(isError(new Error())); // true - * console.log(isError('Error')); // false - * console.log(isError({ name: 'Error', message: '' })); // false - * ``` - */ -declare function isError(value: unknown): value is Error; - -export { isError }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isError.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isError.d.ts deleted file mode 100644 index 586813a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isError.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is an Error object. - * - * @param {unknown} value The value to check. - * @returns {value is Error} Returns `true` if `value` is an Error object, `false` otherwise. - * - * @example - * ```typescript - * console.log(isError(new Error())); // true - * console.log(isError('Error')); // false - * console.log(isError({ name: 'Error', message: '' })); // false - * ``` - */ -declare function isError(value: unknown): value is Error; - -export { isError }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isError.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isError.js deleted file mode 100644 index 4146841..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isError.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isError(value) { - return value instanceof Error; -} - -exports.isError = isError; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isError.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isError.mjs deleted file mode 100644 index b34968b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isError.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isError(value) { - return value instanceof Error; -} - -export { isError }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFile.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFile.d.mts deleted file mode 100644 index 32505c6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFile.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Checks if the given value is a File. - * - * This function tests whether the provided value is an instance of `File`. - * It returns `true` if the value is an instance of `File`, and `false` otherwise. - * - * @param {unknown} x - The value to test if it is a File. - * @returns {x is File} True if the value is a File, false otherwise. - * - * @example - * const value1 = new File(["content"], "example.txt"); - * const value2 = {}; - * const value3 = new Blob(["content"], { type: "text/plain" }); - * - * console.log(isFile(value1)); // true - * console.log(isFile(value2)); // false - * console.log(isFile(value3)); // false - */ -declare function isFile(x: unknown): x is File; - -export { isFile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFile.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFile.d.ts deleted file mode 100644 index 32505c6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFile.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Checks if the given value is a File. - * - * This function tests whether the provided value is an instance of `File`. - * It returns `true` if the value is an instance of `File`, and `false` otherwise. - * - * @param {unknown} x - The value to test if it is a File. - * @returns {x is File} True if the value is a File, false otherwise. - * - * @example - * const value1 = new File(["content"], "example.txt"); - * const value2 = {}; - * const value3 = new Blob(["content"], { type: "text/plain" }); - * - * console.log(isFile(value1)); // true - * console.log(isFile(value2)); // false - * console.log(isFile(value3)); // false - */ -declare function isFile(x: unknown): x is File; - -export { isFile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFile.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFile.js deleted file mode 100644 index a5c94d4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFile.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isBlob = require('./isBlob.js'); - -function isFile(x) { - if (typeof File === 'undefined') { - return false; - } - return isBlob.isBlob(x) && x instanceof File; -} - -exports.isFile = isFile; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFile.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFile.mjs deleted file mode 100644 index f883530..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFile.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { isBlob } from './isBlob.mjs'; - -function isFile(x) { - if (typeof File === 'undefined') { - return false; - } - return isBlob(x) && x instanceof File; -} - -export { isFile }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFunction.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFunction.d.mts deleted file mode 100644 index 46e4ff2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFunction.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is a function. - * - * @param {any} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * - * @example - * isFunction(Array.prototype.slice); // true - * isFunction(async function () {}); // true - * isFunction(function* () {}); // true - * isFunction(Proxy); // true - * isFunction(Int8Array); // true - */ -declare function isFunction(value: any): value is (...args: any[]) => any; - -export { isFunction }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFunction.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFunction.d.ts deleted file mode 100644 index 46e4ff2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFunction.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is a function. - * - * @param {any} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * - * @example - * isFunction(Array.prototype.slice); // true - * isFunction(async function () {}); // true - * isFunction(function* () {}); // true - * isFunction(Proxy); // true - * isFunction(Int8Array); // true - */ -declare function isFunction(value: any): value is (...args: any[]) => any; - -export { isFunction }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFunction.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFunction.js deleted file mode 100644 index 07a19df..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFunction.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isFunction(value) { - return typeof value === 'function'; -} - -exports.isFunction = isFunction; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFunction.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFunction.mjs deleted file mode 100644 index b9a4a2e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isFunction.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isFunction(value) { - return typeof value === 'function'; -} - -export { isFunction }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSON.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSON.d.mts deleted file mode 100644 index b9d30e5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSON.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Checks if a given value is a valid JSON string. - * - * A valid JSON string is one that can be successfully parsed using `JSON.parse()`. According to JSON - * specifications, valid JSON can represent: - * - Objects (with string keys and valid JSON values) - * - Arrays (containing valid JSON values) - * - Strings - * - Numbers - * - Booleans - * - null - * - * String values like `"null"`, `"true"`, `"false"`, and numeric strings (e.g., `"42"`) are considered - * valid JSON and will return true. - * - * This function serves as a type guard in TypeScript, narrowing the type of the argument to `string`. - * - * @param {unknown} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid JSON string, else `false`. - * - * @example - * isJSON('{"name":"John","age":30}'); // true - * isJSON('[1,2,3]'); // true - * isJSON('true'); // true - * isJSON('invalid json'); // false - * isJSON({ name: 'John' }); // false (not a string) - * isJSON(null); // false (not a string) - */ -declare function isJSON(value: unknown): value is string; - -export { isJSON }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSON.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSON.d.ts deleted file mode 100644 index b9d30e5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSON.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Checks if a given value is a valid JSON string. - * - * A valid JSON string is one that can be successfully parsed using `JSON.parse()`. According to JSON - * specifications, valid JSON can represent: - * - Objects (with string keys and valid JSON values) - * - Arrays (containing valid JSON values) - * - Strings - * - Numbers - * - Booleans - * - null - * - * String values like `"null"`, `"true"`, `"false"`, and numeric strings (e.g., `"42"`) are considered - * valid JSON and will return true. - * - * This function serves as a type guard in TypeScript, narrowing the type of the argument to `string`. - * - * @param {unknown} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid JSON string, else `false`. - * - * @example - * isJSON('{"name":"John","age":30}'); // true - * isJSON('[1,2,3]'); // true - * isJSON('true'); // true - * isJSON('invalid json'); // false - * isJSON({ name: 'John' }); // false (not a string) - * isJSON(null); // false (not a string) - */ -declare function isJSON(value: unknown): value is string; - -export { isJSON }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSON.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSON.js deleted file mode 100644 index eb73eb5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSON.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isJSON(value) { - if (typeof value !== 'string') { - return false; - } - try { - JSON.parse(value); - return true; - } - catch { - return false; - } -} - -exports.isJSON = isJSON; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSON.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSON.mjs deleted file mode 100644 index 895d59e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSON.mjs +++ /dev/null @@ -1,14 +0,0 @@ -function isJSON(value) { - if (typeof value !== 'string') { - return false; - } - try { - JSON.parse(value); - return true; - } - catch { - return false; - } -} - -export { isJSON }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSONValue.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSONValue.d.mts deleted file mode 100644 index 9dfdf9e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSONValue.d.mts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Checks if a given value is a valid JSON value. - * - * A valid JSON value can be: - * - null - * - a JSON object (an object with string keys and valid JSON values) - * - a JSON array (an array of valid JSON values) - * - a string - * - a number - * - a boolean - * - * @param {unknown} value - The value to check. - * @returns {boolean} - True if the value is a valid JSON value, otherwise false. - * - * @example - * console.log(isJSONValue(null)); // true - * console.log(isJSONValue({ key: "value" })); // true - * console.log(isJSONValue([1, 2, 3])); // true - * console.log(isJSONValue("Hello")); // true - * console.log(isJSONValue(42)); // true - * console.log(isJSONValue(true)); // true - * console.log(isJSONValue(undefined)); // false - * console.log(isJSONValue(() => {})); // false - */ -declare function isJSONValue(value: unknown): value is Record | any[] | string | number | boolean | null; -/** - * Checks if a given value is a valid JSON array. - * - * A valid JSON array is defined as an array where all items are valid JSON values. - * - * @param {unknown} value - The value to check. - * @returns {value is any[]} - True if the value is a valid JSON array, otherwise false. - * - * @example - * console.log(isJSONArray([1, 2, 3])); // true - * console.log(isJSONArray(["string", null, true])); // true - * console.log(isJSONArray([1, 2, () => {}])); // false - * console.log(isJSONArray("not an array")); // false - */ -declare function isJSONArray(value: unknown): value is any[]; -/** - * Checks if a value is a JSON object. - * - * A valid JSON object is defined as an object with string keys and valid JSON values. - * - * @param {unknown} obj The value to check. - * @returns {obj is Record} True if `obj` is a JSON object, false otherwise. - * - * @example - * isJSONObject({ nested: { boolean: true, array: [1, 2, 3], string: 'test', null: null } }); // true - * isJSONObject({ regexp: /test/ }); // false - * isJSONObject(123); // false - */ -declare function isJSONObject(obj: unknown): obj is Record; - -export { isJSONArray, isJSONObject, isJSONValue }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSONValue.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSONValue.d.ts deleted file mode 100644 index 9dfdf9e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSONValue.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Checks if a given value is a valid JSON value. - * - * A valid JSON value can be: - * - null - * - a JSON object (an object with string keys and valid JSON values) - * - a JSON array (an array of valid JSON values) - * - a string - * - a number - * - a boolean - * - * @param {unknown} value - The value to check. - * @returns {boolean} - True if the value is a valid JSON value, otherwise false. - * - * @example - * console.log(isJSONValue(null)); // true - * console.log(isJSONValue({ key: "value" })); // true - * console.log(isJSONValue([1, 2, 3])); // true - * console.log(isJSONValue("Hello")); // true - * console.log(isJSONValue(42)); // true - * console.log(isJSONValue(true)); // true - * console.log(isJSONValue(undefined)); // false - * console.log(isJSONValue(() => {})); // false - */ -declare function isJSONValue(value: unknown): value is Record | any[] | string | number | boolean | null; -/** - * Checks if a given value is a valid JSON array. - * - * A valid JSON array is defined as an array where all items are valid JSON values. - * - * @param {unknown} value - The value to check. - * @returns {value is any[]} - True if the value is a valid JSON array, otherwise false. - * - * @example - * console.log(isJSONArray([1, 2, 3])); // true - * console.log(isJSONArray(["string", null, true])); // true - * console.log(isJSONArray([1, 2, () => {}])); // false - * console.log(isJSONArray("not an array")); // false - */ -declare function isJSONArray(value: unknown): value is any[]; -/** - * Checks if a value is a JSON object. - * - * A valid JSON object is defined as an object with string keys and valid JSON values. - * - * @param {unknown} obj The value to check. - * @returns {obj is Record} True if `obj` is a JSON object, false otherwise. - * - * @example - * isJSONObject({ nested: { boolean: true, array: [1, 2, 3], string: 'test', null: null } }); // true - * isJSONObject({ regexp: /test/ }); // false - * isJSONObject(123); // false - */ -declare function isJSONObject(obj: unknown): obj is Record; - -export { isJSONArray, isJSONObject, isJSONValue }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSONValue.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSONValue.js deleted file mode 100644 index 8f6d11b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSONValue.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const isPlainObject = require('./isPlainObject.js'); - -function isJSONValue(value) { - switch (typeof value) { - case 'object': { - return value === null || isJSONArray(value) || isJSONObject(value); - } - case 'string': - case 'number': - case 'boolean': { - return true; - } - default: { - return false; - } - } -} -function isJSONArray(value) { - if (!Array.isArray(value)) { - return false; - } - return value.every(item => isJSONValue(item)); -} -function isJSONObject(obj) { - if (!isPlainObject.isPlainObject(obj)) { - return false; - } - const keys = Reflect.ownKeys(obj); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = obj[key]; - if (typeof key !== 'string') { - return false; - } - if (!isJSONValue(value)) { - return false; - } - } - return true; -} - -exports.isJSONArray = isJSONArray; -exports.isJSONObject = isJSONObject; -exports.isJSONValue = isJSONValue; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSONValue.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSONValue.mjs deleted file mode 100644 index c24a5ca..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isJSONValue.mjs +++ /dev/null @@ -1,42 +0,0 @@ -import { isPlainObject } from './isPlainObject.mjs'; - -function isJSONValue(value) { - switch (typeof value) { - case 'object': { - return value === null || isJSONArray(value) || isJSONObject(value); - } - case 'string': - case 'number': - case 'boolean': { - return true; - } - default: { - return false; - } - } -} -function isJSONArray(value) { - if (!Array.isArray(value)) { - return false; - } - return value.every(item => isJSONValue(item)); -} -function isJSONObject(obj) { - if (!isPlainObject(obj)) { - return false; - } - const keys = Reflect.ownKeys(obj); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = obj[key]; - if (typeof key !== 'string') { - return false; - } - if (!isJSONValue(value)) { - return false; - } - } - return true; -} - -export { isJSONArray, isJSONObject, isJSONValue }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isLength.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isLength.d.mts deleted file mode 100644 index 78a60af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isLength.d.mts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Checks if a given value is a valid length. - * - * A valid length is of type `number`, is a non-negative integer, and is less than or equal to - * JavaScript's maximum safe integer (`Number.MAX_SAFE_INTEGER`). - * It returns `true` if the value is a valid length, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the - * argument to a valid length (`number`). - * - * @param {any} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * - * @example - * isLength(0); // true - * isLength(42); // true - * isLength(-1); // false - * isLength(1.5); // false - * isLength(Number.MAX_SAFE_INTEGER); // true - * isLength(Number.MAX_SAFE_INTEGER + 1); // false - */ -declare function isLength(value?: any): boolean; - -export { isLength }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isLength.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isLength.d.ts deleted file mode 100644 index 78a60af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isLength.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Checks if a given value is a valid length. - * - * A valid length is of type `number`, is a non-negative integer, and is less than or equal to - * JavaScript's maximum safe integer (`Number.MAX_SAFE_INTEGER`). - * It returns `true` if the value is a valid length, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the - * argument to a valid length (`number`). - * - * @param {any} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * - * @example - * isLength(0); // true - * isLength(42); // true - * isLength(-1); // false - * isLength(1.5); // false - * isLength(Number.MAX_SAFE_INTEGER); // true - * isLength(Number.MAX_SAFE_INTEGER + 1); // false - */ -declare function isLength(value?: any): boolean; - -export { isLength }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isLength.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isLength.js deleted file mode 100644 index 62787d8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isLength.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isLength(value) { - return Number.isSafeInteger(value) && value >= 0; -} - -exports.isLength = isLength; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isLength.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isLength.mjs deleted file mode 100644 index a4e3998..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isLength.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isLength(value) { - return Number.isSafeInteger(value) && value >= 0; -} - -export { isLength }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isMap.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isMap.d.mts deleted file mode 100644 index 16f8658..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isMap.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `Map`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Map`. - * - * @param {unknown} value The value to check if it is a `Map`. - * @returns {value is Map} Returns `true` if `value` is a `Map`, else `false`. - * - * @example - * const value1 = new Map(); - * const value2 = new Set(); - * const value3 = new WeakMap(); - * - * console.log(isMap(value1)); // true - * console.log(isMap(value2)); // false - * console.log(isMap(value3)); // false - */ -declare function isMap(value: unknown): value is Map; - -export { isMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isMap.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isMap.d.ts deleted file mode 100644 index 16f8658..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isMap.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `Map`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Map`. - * - * @param {unknown} value The value to check if it is a `Map`. - * @returns {value is Map} Returns `true` if `value` is a `Map`, else `false`. - * - * @example - * const value1 = new Map(); - * const value2 = new Set(); - * const value3 = new WeakMap(); - * - * console.log(isMap(value1)); // true - * console.log(isMap(value2)); // false - * console.log(isMap(value3)); // false - */ -declare function isMap(value: unknown): value is Map; - -export { isMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isMap.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isMap.js deleted file mode 100644 index 13b6374..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isMap.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isMap(value) { - return value instanceof Map; -} - -exports.isMap = isMap; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isMap.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isMap.mjs deleted file mode 100644 index 3a5d606..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isMap.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isMap(value) { - return value instanceof Map; -} - -export { isMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNil.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNil.d.mts deleted file mode 100644 index e95a932..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNil.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Checks if a given value is null or undefined. - * - * This function tests whether the provided value is either `null` or `undefined`. - * It returns `true` if the value is `null` or `undefined`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `null` or `undefined`. - * - * @param {unknown} x - The value to test for null or undefined. - * @returns {boolean} `true` if the value is null or undefined, `false` otherwise. - * - * @example - * const value1 = null; - * const value2 = undefined; - * const value3 = 42; - * const result1 = isNil(value1); // true - * const result2 = isNil(value2); // true - * const result3 = isNil(value3); // false - */ -declare function isNil(x: unknown): x is null | undefined; - -export { isNil }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNil.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNil.d.ts deleted file mode 100644 index e95a932..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNil.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Checks if a given value is null or undefined. - * - * This function tests whether the provided value is either `null` or `undefined`. - * It returns `true` if the value is `null` or `undefined`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `null` or `undefined`. - * - * @param {unknown} x - The value to test for null or undefined. - * @returns {boolean} `true` if the value is null or undefined, `false` otherwise. - * - * @example - * const value1 = null; - * const value2 = undefined; - * const value3 = 42; - * const result1 = isNil(value1); // true - * const result2 = isNil(value2); // true - * const result3 = isNil(value3); // false - */ -declare function isNil(x: unknown): x is null | undefined; - -export { isNil }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNil.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNil.js deleted file mode 100644 index 81ed466..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNil.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isNil(x) { - return x == null; -} - -exports.isNil = isNil; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNil.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNil.mjs deleted file mode 100644 index 963a002..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNil.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isNil(x) { - return x == null; -} - -export { isNil }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNode.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNode.d.mts deleted file mode 100644 index 686e845..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNode.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Checks if the current environment is Node.js. - * - * This function checks for the existence of the `process.versions.node` property, - * which only exists in Node.js environments. - * - * @returns {boolean} `true` if the current environment is Node.js, otherwise `false`. - * - * @example - * if (isNode()) { - * console.log('This is running in Node.js'); - * const fs = import('node:fs'); - * } - */ -declare function isNode(): boolean; - -export { isNode }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNode.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNode.d.ts deleted file mode 100644 index 686e845..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNode.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Checks if the current environment is Node.js. - * - * This function checks for the existence of the `process.versions.node` property, - * which only exists in Node.js environments. - * - * @returns {boolean} `true` if the current environment is Node.js, otherwise `false`. - * - * @example - * if (isNode()) { - * console.log('This is running in Node.js'); - * const fs = import('node:fs'); - * } - */ -declare function isNode(): boolean; - -export { isNode }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNode.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNode.js deleted file mode 100644 index f6de214..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNode.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isNode() { - return typeof process !== 'undefined' && process?.versions?.node != null; -} - -exports.isNode = isNode; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNode.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNode.mjs deleted file mode 100644 index 1bbf464..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNode.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isNode() { - return typeof process !== 'undefined' && process?.versions?.node != null; -} - -export { isNode }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNotNil.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNotNil.d.mts deleted file mode 100644 index cda4f9e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNotNil.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Checks if the given value is not null nor undefined. - * - * The main use of this function is to be used with TypeScript as a type predicate. - * - * @template T - The type of value. - * @param {T | null | undefined} x - The value to test if it is not null nor undefined. - * @returns {x is T} True if the value is not null nor undefined, false otherwise. - * - * @example - * // Here the type of `arr` is (number | undefined)[] - * const arr = [1, undefined, 3]; - * // Here the type of `result` is number[] - * const result = arr.filter(isNotNil); - * // result will be [1, 3] - */ -declare function isNotNil(x: T | null | undefined): x is T; - -export { isNotNil }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNotNil.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNotNil.d.ts deleted file mode 100644 index cda4f9e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNotNil.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Checks if the given value is not null nor undefined. - * - * The main use of this function is to be used with TypeScript as a type predicate. - * - * @template T - The type of value. - * @param {T | null | undefined} x - The value to test if it is not null nor undefined. - * @returns {x is T} True if the value is not null nor undefined, false otherwise. - * - * @example - * // Here the type of `arr` is (number | undefined)[] - * const arr = [1, undefined, 3]; - * // Here the type of `result` is number[] - * const result = arr.filter(isNotNil); - * // result will be [1, 3] - */ -declare function isNotNil(x: T | null | undefined): x is T; - -export { isNotNil }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNotNil.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNotNil.js deleted file mode 100644 index f07fb30..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNotNil.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isNotNil(x) { - return x != null; -} - -exports.isNotNil = isNotNil; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNotNil.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNotNil.mjs deleted file mode 100644 index 919684d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNotNil.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isNotNil(x) { - return x != null; -} - -export { isNotNil }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNull.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNull.d.mts deleted file mode 100644 index a51103a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNull.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is null. - * - * This function tests whether the provided value is strictly equal to `null`. - * It returns `true` if the value is `null`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `null`. - * - * @param {unknown} x - The value to test if it is null. - * @returns {x is null} True if the value is null, false otherwise. - * - * @example - * const value1 = null; - * const value2 = undefined; - * const value3 = 42; - * - * console.log(isNull(value1)); // true - * console.log(isNull(value2)); // false - * console.log(isNull(value3)); // false - */ -declare function isNull(x: unknown): x is null; - -export { isNull }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNull.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNull.d.ts deleted file mode 100644 index a51103a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNull.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is null. - * - * This function tests whether the provided value is strictly equal to `null`. - * It returns `true` if the value is `null`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `null`. - * - * @param {unknown} x - The value to test if it is null. - * @returns {x is null} True if the value is null, false otherwise. - * - * @example - * const value1 = null; - * const value2 = undefined; - * const value3 = 42; - * - * console.log(isNull(value1)); // true - * console.log(isNull(value2)); // false - * console.log(isNull(value3)); // false - */ -declare function isNull(x: unknown): x is null; - -export { isNull }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNull.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNull.js deleted file mode 100644 index 1936673..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNull.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isNull(x) { - return x === null; -} - -exports.isNull = isNull; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNull.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNull.mjs deleted file mode 100644 index 837f267..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNull.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isNull(x) { - return x === null; -} - -export { isNull }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNumber.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNumber.d.mts deleted file mode 100644 index 2baf2d6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNumber.d.mts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Checks if the given value is a number. - * - * This function tests whether the provided value is strictly a `number`. - * It returns `true` if the value is a `number`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `number`. - * - * @param {unknown} x - The value to test if it is a number. - * @returns {x is number} True if the value is a number, false otherwise. - * - * @example - * - * const value1 = 123; - * const value2 = 'abc'; - * const value3 = true; - * - * console.log(isNumber(value1)); // true - * console.log(isNumber(value2)); // false - * console.log(isNumber(value3)); // false - * - */ -declare function isNumber(x: unknown): x is number; - -export { isNumber }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNumber.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNumber.d.ts deleted file mode 100644 index 2baf2d6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNumber.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Checks if the given value is a number. - * - * This function tests whether the provided value is strictly a `number`. - * It returns `true` if the value is a `number`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `number`. - * - * @param {unknown} x - The value to test if it is a number. - * @returns {x is number} True if the value is a number, false otherwise. - * - * @example - * - * const value1 = 123; - * const value2 = 'abc'; - * const value3 = true; - * - * console.log(isNumber(value1)); // true - * console.log(isNumber(value2)); // false - * console.log(isNumber(value3)); // false - * - */ -declare function isNumber(x: unknown): x is number; - -export { isNumber }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNumber.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNumber.js deleted file mode 100644 index b0e6177..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNumber.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isNumber(x) { - return typeof x === 'number' || x instanceof Number; -} - -exports.isNumber = isNumber; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNumber.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNumber.mjs deleted file mode 100644 index f99192e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isNumber.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isNumber(x) { - return typeof x === 'number' || x instanceof Number; -} - -export { isNumber }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPlainObject.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPlainObject.d.mts deleted file mode 100644 index 8a34128..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPlainObject.d.mts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Checks if a given value is a plain object. - * - * @param {object} value - The value to check. - * @returns {value is Record} - True if the value is a plain object, otherwise false. - * - * @example - * ```typescript - * // ✅👇 True - * - * isPlainObject({ }); // ✅ - * isPlainObject({ key: 'value' }); // ✅ - * isPlainObject({ key: new Date() }); // ✅ - * isPlainObject(new Object()); // ✅ - * isPlainObject(Object.create(null)); // ✅ - * isPlainObject({ nested: { key: true} }); // ✅ - * isPlainObject(new Proxy({}, {})); // ✅ - * isPlainObject({ [Symbol('tag')]: 'A' }); // ✅ - * - * // ✅👇 (cross-realms, node context, workers, ...) - * const runInNewContext = await import('node:vm').then( - * (mod) => mod.runInNewContext - * ); - * isPlainObject(runInNewContext('({})')); // ✅ - * - * // ❌👇 False - * - * class Test { }; - * isPlainObject(new Test()) // ❌ - * isPlainObject(10); // ❌ - * isPlainObject(null); // ❌ - * isPlainObject('hello'); // ❌ - * isPlainObject([]); // ❌ - * isPlainObject(new Date()); // ❌ - * isPlainObject(new Uint8Array([1])); // ❌ - * isPlainObject(Buffer.from('ABC')); // ❌ - * isPlainObject(Promise.resolve({})); // ❌ - * isPlainObject(Object.create({})); // ❌ - * isPlainObject(new (class Cls {})); // ❌ - * isPlainObject(globalThis); // ❌, - * ``` - */ -declare function isPlainObject(value: unknown): value is Record; - -export { isPlainObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPlainObject.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPlainObject.d.ts deleted file mode 100644 index 8a34128..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPlainObject.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Checks if a given value is a plain object. - * - * @param {object} value - The value to check. - * @returns {value is Record} - True if the value is a plain object, otherwise false. - * - * @example - * ```typescript - * // ✅👇 True - * - * isPlainObject({ }); // ✅ - * isPlainObject({ key: 'value' }); // ✅ - * isPlainObject({ key: new Date() }); // ✅ - * isPlainObject(new Object()); // ✅ - * isPlainObject(Object.create(null)); // ✅ - * isPlainObject({ nested: { key: true} }); // ✅ - * isPlainObject(new Proxy({}, {})); // ✅ - * isPlainObject({ [Symbol('tag')]: 'A' }); // ✅ - * - * // ✅👇 (cross-realms, node context, workers, ...) - * const runInNewContext = await import('node:vm').then( - * (mod) => mod.runInNewContext - * ); - * isPlainObject(runInNewContext('({})')); // ✅ - * - * // ❌👇 False - * - * class Test { }; - * isPlainObject(new Test()) // ❌ - * isPlainObject(10); // ❌ - * isPlainObject(null); // ❌ - * isPlainObject('hello'); // ❌ - * isPlainObject([]); // ❌ - * isPlainObject(new Date()); // ❌ - * isPlainObject(new Uint8Array([1])); // ❌ - * isPlainObject(Buffer.from('ABC')); // ❌ - * isPlainObject(Promise.resolve({})); // ❌ - * isPlainObject(Object.create({})); // ❌ - * isPlainObject(new (class Cls {})); // ❌ - * isPlainObject(globalThis); // ❌, - * ``` - */ -declare function isPlainObject(value: unknown): value is Record; - -export { isPlainObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPlainObject.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPlainObject.js deleted file mode 100644 index 5c4dea4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPlainObject.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isPlainObject(value) { - if (!value || typeof value !== 'object') { - return false; - } - const proto = Object.getPrototypeOf(value); - const hasObjectPrototype = proto === null || - proto === Object.prototype || - Object.getPrototypeOf(proto) === null; - if (!hasObjectPrototype) { - return false; - } - return Object.prototype.toString.call(value) === '[object Object]'; -} - -exports.isPlainObject = isPlainObject; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPlainObject.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPlainObject.mjs deleted file mode 100644 index fee4fba..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPlainObject.mjs +++ /dev/null @@ -1,15 +0,0 @@ -function isPlainObject(value) { - if (!value || typeof value !== 'object') { - return false; - } - const proto = Object.getPrototypeOf(value); - const hasObjectPrototype = proto === null || - proto === Object.prototype || - Object.getPrototypeOf(proto) === null; - if (!hasObjectPrototype) { - return false; - } - return Object.prototype.toString.call(value) === '[object Object]'; -} - -export { isPlainObject }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPrimitive.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPrimitive.d.mts deleted file mode 100644 index 92b8df4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPrimitive.d.mts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Checks whether a value is a JavaScript primitive. - * JavaScript primitives include null, undefined, strings, numbers, booleans, symbols, and bigints. - * - * @param {unknown} value The value to check. - * @returns {value is - * null - * | undefined - * | string - * | number - * | boolean - * | symbol - * | bigint} Returns true if `value` is a primitive, false otherwise. - * - * @example - * isPrimitive(null); // true - * isPrimitive(undefined); // true - * isPrimitive('123'); // true - * isPrimitive(false); // true - * isPrimitive(true); // true - * isPrimitive(Symbol('a')); // true - * isPrimitive(123n); // true - * isPrimitive({}); // false - * isPrimitive(new Date()); // false - * isPrimitive(new Map()); // false - * isPrimitive(new Set()); // false - * isPrimitive([1, 2, 3]); // false - */ -declare function isPrimitive(value: unknown): value is null | undefined | string | number | boolean | symbol | bigint; - -export { isPrimitive }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPrimitive.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPrimitive.d.ts deleted file mode 100644 index 92b8df4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPrimitive.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Checks whether a value is a JavaScript primitive. - * JavaScript primitives include null, undefined, strings, numbers, booleans, symbols, and bigints. - * - * @param {unknown} value The value to check. - * @returns {value is - * null - * | undefined - * | string - * | number - * | boolean - * | symbol - * | bigint} Returns true if `value` is a primitive, false otherwise. - * - * @example - * isPrimitive(null); // true - * isPrimitive(undefined); // true - * isPrimitive('123'); // true - * isPrimitive(false); // true - * isPrimitive(true); // true - * isPrimitive(Symbol('a')); // true - * isPrimitive(123n); // true - * isPrimitive({}); // false - * isPrimitive(new Date()); // false - * isPrimitive(new Map()); // false - * isPrimitive(new Set()); // false - * isPrimitive([1, 2, 3]); // false - */ -declare function isPrimitive(value: unknown): value is null | undefined | string | number | boolean | symbol | bigint; - -export { isPrimitive }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPrimitive.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPrimitive.js deleted file mode 100644 index a7e765e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPrimitive.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isPrimitive(value) { - return value == null || (typeof value !== 'object' && typeof value !== 'function'); -} - -exports.isPrimitive = isPrimitive; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPrimitive.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPrimitive.mjs deleted file mode 100644 index b68e20d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPrimitive.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isPrimitive(value) { - return value == null || (typeof value !== 'object' && typeof value !== 'function'); -} - -export { isPrimitive }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPromise.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPromise.d.mts deleted file mode 100644 index ee47be3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPromise.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `Promise`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Promise`. - * - * @param {unknown} value The value to check if it is a `Promise`. - * @returns {value is Promise} Returns `true` if `value` is a `Promise`, else `false`. - * - * @example - * const value1 = new Promise((resolve) => resolve()); - * const value2 = {}; - * const value3 = 123; - * - * console.log(isPromise(value1)); // true - * console.log(isPromise(value2)); // false - * console.log(isPromise(value3)); // false - */ -declare function isPromise(value: unknown): value is Promise; - -export { isPromise }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPromise.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPromise.d.ts deleted file mode 100644 index ee47be3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPromise.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `Promise`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Promise`. - * - * @param {unknown} value The value to check if it is a `Promise`. - * @returns {value is Promise} Returns `true` if `value` is a `Promise`, else `false`. - * - * @example - * const value1 = new Promise((resolve) => resolve()); - * const value2 = {}; - * const value3 = 123; - * - * console.log(isPromise(value1)); // true - * console.log(isPromise(value2)); // false - * console.log(isPromise(value3)); // false - */ -declare function isPromise(value: unknown): value is Promise; - -export { isPromise }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPromise.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPromise.js deleted file mode 100644 index 6e5984d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPromise.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isPromise(value) { - return value instanceof Promise; -} - -exports.isPromise = isPromise; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPromise.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPromise.mjs deleted file mode 100644 index 5474d36..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isPromise.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isPromise(value) { - return value instanceof Promise; -} - -export { isPromise }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isRegExp.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isRegExp.d.mts deleted file mode 100644 index a8ad27d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isRegExp.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is a RegExp. - * - * @param {unknown} value The value to check. - * @returns {value is RegExp} Returns `true` if `value` is a RegExp, `false` otherwise. - * - * @example - * const value1 = /abc/; - * const value2 = '/abc/'; - * - * console.log(isRegExp(value1)); // true - * console.log(isRegExp(value2)); // false - */ -declare function isRegExp(value: unknown): value is RegExp; - -export { isRegExp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isRegExp.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isRegExp.d.ts deleted file mode 100644 index a8ad27d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isRegExp.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Checks if `value` is a RegExp. - * - * @param {unknown} value The value to check. - * @returns {value is RegExp} Returns `true` if `value` is a RegExp, `false` otherwise. - * - * @example - * const value1 = /abc/; - * const value2 = '/abc/'; - * - * console.log(isRegExp(value1)); // true - * console.log(isRegExp(value2)); // false - */ -declare function isRegExp(value: unknown): value is RegExp; - -export { isRegExp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isRegExp.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isRegExp.js deleted file mode 100644 index c73bd87..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isRegExp.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isRegExp(value) { - return value instanceof RegExp; -} - -exports.isRegExp = isRegExp; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isRegExp.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isRegExp.mjs deleted file mode 100644 index a133f95..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isRegExp.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isRegExp(value) { - return value instanceof RegExp; -} - -export { isRegExp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSet.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSet.d.mts deleted file mode 100644 index d5ed168..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSet.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `Set`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Set`. - * - * @param {unknown} value The value to check if it is a `Set`. - * @returns {value is Set} Returns `true` if `value` is a `Set`, else `false`. - * - * @example - * const value1 = new Set(); - * const value2 = new Map(); - * const value3 = new WeakSet(); - * - * console.log(isSet(value1)); // true - * console.log(isSet(value2)); // false - * console.log(isSet(value3)); // false - */ -declare function isSet(value: unknown): value is Set; - -export { isSet }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSet.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSet.d.ts deleted file mode 100644 index d5ed168..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSet.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is `Set`. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Set`. - * - * @param {unknown} value The value to check if it is a `Set`. - * @returns {value is Set} Returns `true` if `value` is a `Set`, else `false`. - * - * @example - * const value1 = new Set(); - * const value2 = new Map(); - * const value3 = new WeakSet(); - * - * console.log(isSet(value1)); // true - * console.log(isSet(value2)); // false - * console.log(isSet(value3)); // false - */ -declare function isSet(value: unknown): value is Set; - -export { isSet }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSet.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSet.js deleted file mode 100644 index ca09207..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSet.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isSet(value) { - return value instanceof Set; -} - -exports.isSet = isSet; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSet.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSet.mjs deleted file mode 100644 index 2a177c1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSet.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isSet(value) { - return value instanceof Set; -} - -export { isSet }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isString.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isString.d.mts deleted file mode 100644 index 4a304c2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isString.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is string. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `string`. - * - * @param {unknown} value The value to check if it is string. - * @returns {value is string} Returns `true` if `value` is a string, else `false`. - * - * @example - * const value1 = 'abc'; - * const value2 = 123; - * const value3 = true; - * - * console.log(isString(value1)); // true - * console.log(isString(value2)); // false - * console.log(isString(value3)); // false - */ -declare function isString(value: unknown): value is string; - -export { isString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isString.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isString.d.ts deleted file mode 100644 index 4a304c2..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isString.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if a given value is string. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `string`. - * - * @param {unknown} value The value to check if it is string. - * @returns {value is string} Returns `true` if `value` is a string, else `false`. - * - * @example - * const value1 = 'abc'; - * const value2 = 123; - * const value3 = true; - * - * console.log(isString(value1)); // true - * console.log(isString(value2)); // false - * console.log(isString(value3)); // false - */ -declare function isString(value: unknown): value is string; - -export { isString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isString.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isString.js deleted file mode 100644 index 981d12d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isString.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isString(value) { - return typeof value === 'string'; -} - -exports.isString = isString; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isString.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isString.mjs deleted file mode 100644 index 671146f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isString.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isString(value) { - return typeof value === 'string'; -} - -export { isString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSymbol.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSymbol.d.mts deleted file mode 100644 index 2ce4db9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSymbol.d.mts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Check whether a value is a symbol. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `symbol`. - * - * @param {unknown} value The value to check. - * @returns {value is symbol} Returns `true` if `value` is a symbol, else `false`. - * - * @example - * import { isSymbol } from 'es-toolkit/predicate'; - * - * isSymbol(Symbol('a')); // true - * isSymbol(Symbol.for('a')); // true - * isSymbol(Symbol.iterator); // true - * - * isSymbol(null); // false - * isSymbol(undefined); // false - * isSymbol('123'); // false - * isSymbol(false); // false - * isSymbol(123n); // false - * isSymbol({}); // false - * isSymbol([1, 2, 3]); // false - */ -declare function isSymbol(value: unknown): value is symbol; - -export { isSymbol }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSymbol.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSymbol.d.ts deleted file mode 100644 index 2ce4db9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSymbol.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Check whether a value is a symbol. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `symbol`. - * - * @param {unknown} value The value to check. - * @returns {value is symbol} Returns `true` if `value` is a symbol, else `false`. - * - * @example - * import { isSymbol } from 'es-toolkit/predicate'; - * - * isSymbol(Symbol('a')); // true - * isSymbol(Symbol.for('a')); // true - * isSymbol(Symbol.iterator); // true - * - * isSymbol(null); // false - * isSymbol(undefined); // false - * isSymbol('123'); // false - * isSymbol(false); // false - * isSymbol(123n); // false - * isSymbol({}); // false - * isSymbol([1, 2, 3]); // false - */ -declare function isSymbol(value: unknown): value is symbol; - -export { isSymbol }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSymbol.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSymbol.js deleted file mode 100644 index 4311f82..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSymbol.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isSymbol(value) { - return typeof value === 'symbol'; -} - -exports.isSymbol = isSymbol; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSymbol.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSymbol.mjs deleted file mode 100644 index 9063755..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isSymbol.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isSymbol(value) { - return typeof value === 'symbol'; -} - -export { isSymbol }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isTypedArray.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isTypedArray.d.mts deleted file mode 100644 index 7ccddd5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isTypedArray.d.mts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Checks if a value is a TypedArray. - * @param {unknown} x The value to check. - * @returns {x is - * Uint8Array - * | Uint8ClampedArray - * | Uint16Array - * | Uint32Array - * | BigUint64Array - * | Int8Array - * | Int16Array - * | Int32Array - * | BigInt64Array - * | Float32Array - * | Float64Array} Returns true if `x` is a TypedArray, false otherwise. - * - * @example - * const arr = new Uint8Array([1, 2, 3]); - * isTypedArray(arr); // true - * - * const regularArray = [1, 2, 3]; - * isTypedArray(regularArray); // false - * - * const buffer = new ArrayBuffer(16); - * isTypedArray(buffer); // false - */ -declare function isTypedArray(x: unknown): x is Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | BigUint64Array | Int8Array | Int16Array | Int32Array | BigInt64Array | Float32Array | Float64Array; - -export { isTypedArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isTypedArray.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isTypedArray.d.ts deleted file mode 100644 index 7ccddd5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isTypedArray.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Checks if a value is a TypedArray. - * @param {unknown} x The value to check. - * @returns {x is - * Uint8Array - * | Uint8ClampedArray - * | Uint16Array - * | Uint32Array - * | BigUint64Array - * | Int8Array - * | Int16Array - * | Int32Array - * | BigInt64Array - * | Float32Array - * | Float64Array} Returns true if `x` is a TypedArray, false otherwise. - * - * @example - * const arr = new Uint8Array([1, 2, 3]); - * isTypedArray(arr); // true - * - * const regularArray = [1, 2, 3]; - * isTypedArray(regularArray); // false - * - * const buffer = new ArrayBuffer(16); - * isTypedArray(buffer); // false - */ -declare function isTypedArray(x: unknown): x is Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | BigUint64Array | Int8Array | Int16Array | Int32Array | BigInt64Array | Float32Array | Float64Array; - -export { isTypedArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isTypedArray.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isTypedArray.js deleted file mode 100644 index d210645..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isTypedArray.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isTypedArray(x) { - return ArrayBuffer.isView(x) && !(x instanceof DataView); -} - -exports.isTypedArray = isTypedArray; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isTypedArray.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isTypedArray.mjs deleted file mode 100644 index 6d5793b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isTypedArray.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isTypedArray(x) { - return ArrayBuffer.isView(x) && !(x instanceof DataView); -} - -export { isTypedArray }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isUndefined.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isUndefined.d.mts deleted file mode 100644 index 8cdb036..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isUndefined.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is undefined. - * - * This function tests whether the provided value is strictly equal to `undefined`. - * It returns `true` if the value is `undefined`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `undefined`. - * - * @param {unknown} x - The value to test if it is undefined. - * @returns {x is undefined} true if the value is undefined, false otherwise. - * - * @example - * const value1 = undefined; - * const value2 = null; - * const value3 = 42; - * - * console.log(isUndefined(value1)); // true - * console.log(isUndefined(value2)); // false - * console.log(isUndefined(value3)); // false - */ -declare function isUndefined(x: any): x is undefined; - -export { isUndefined }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isUndefined.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isUndefined.d.ts deleted file mode 100644 index 8cdb036..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isUndefined.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is undefined. - * - * This function tests whether the provided value is strictly equal to `undefined`. - * It returns `true` if the value is `undefined`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `undefined`. - * - * @param {unknown} x - The value to test if it is undefined. - * @returns {x is undefined} true if the value is undefined, false otherwise. - * - * @example - * const value1 = undefined; - * const value2 = null; - * const value3 = 42; - * - * console.log(isUndefined(value1)); // true - * console.log(isUndefined(value2)); // false - * console.log(isUndefined(value3)); // false - */ -declare function isUndefined(x: any): x is undefined; - -export { isUndefined }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isUndefined.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isUndefined.js deleted file mode 100644 index 4e7c144..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isUndefined.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isUndefined(x) { - return x === undefined; -} - -exports.isUndefined = isUndefined; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isUndefined.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isUndefined.mjs deleted file mode 100644 index c0b63b3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isUndefined.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isUndefined(x) { - return x === undefined; -} - -export { isUndefined }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakMap.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakMap.d.mts deleted file mode 100644 index 599be69..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakMap.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is a `WeakMap`. - * - * This function tests whether the provided value is an instance of `WeakMap`. - * It returns `true` if the value is a `WeakMap`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `WeakMap`. - * - * @param {unknown} value - The value to test if it is a `WeakMap`. - * @returns {value is WeakMap} true if the value is a `WeakMap`, false otherwise. - * - * @example - * const value1 = new WeakMap(); - * const value2 = new Map(); - * const value3 = new Set(); - * - * console.log(isWeakMap(value1)); // true - * console.log(isWeakMap(value2)); // false - * console.log(isWeakMap(value3)); // false - */ -declare function isWeakMap(value: unknown): value is WeakMap; - -export { isWeakMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakMap.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakMap.d.ts deleted file mode 100644 index 599be69..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakMap.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is a `WeakMap`. - * - * This function tests whether the provided value is an instance of `WeakMap`. - * It returns `true` if the value is a `WeakMap`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `WeakMap`. - * - * @param {unknown} value - The value to test if it is a `WeakMap`. - * @returns {value is WeakMap} true if the value is a `WeakMap`, false otherwise. - * - * @example - * const value1 = new WeakMap(); - * const value2 = new Map(); - * const value3 = new Set(); - * - * console.log(isWeakMap(value1)); // true - * console.log(isWeakMap(value2)); // false - * console.log(isWeakMap(value3)); // false - */ -declare function isWeakMap(value: unknown): value is WeakMap; - -export { isWeakMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakMap.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakMap.js deleted file mode 100644 index 8cca867..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakMap.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isWeakMap(value) { - return value instanceof WeakMap; -} - -exports.isWeakMap = isWeakMap; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakMap.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakMap.mjs deleted file mode 100644 index 33630ef..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakMap.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isWeakMap(value) { - return value instanceof WeakMap; -} - -export { isWeakMap }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakSet.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakSet.d.mts deleted file mode 100644 index 442583d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakSet.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is a `WeakSet`. - * - * This function tests whether the provided value is an instance of `WeakSet`. - * It returns `true` if the value is a `WeakSet`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `WeakSet`. - * - * @param {unknown} value - The value to test if it is a `WeakSet`. - * @returns {value is WeakSet} true if the value is a `WeakSet`, false otherwise. - * - * @example - * const value1 = new WeakSet(); - * const value2 = new Map(); - * const value3 = new Set(); - * - * console.log(isWeakSet(value1)); // true - * console.log(isWeakSet(value2)); // false - * console.log(isWeakSet(value3)); // false - */ -declare function isWeakSet(value: unknown): value is WeakSet; - -export { isWeakSet }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakSet.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakSet.d.ts deleted file mode 100644 index 442583d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakSet.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Checks if the given value is a `WeakSet`. - * - * This function tests whether the provided value is an instance of `WeakSet`. - * It returns `true` if the value is a `WeakSet`, and `false` otherwise. - * - * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `WeakSet`. - * - * @param {unknown} value - The value to test if it is a `WeakSet`. - * @returns {value is WeakSet} true if the value is a `WeakSet`, false otherwise. - * - * @example - * const value1 = new WeakSet(); - * const value2 = new Map(); - * const value3 = new Set(); - * - * console.log(isWeakSet(value1)); // true - * console.log(isWeakSet(value2)); // false - * console.log(isWeakSet(value3)); // false - */ -declare function isWeakSet(value: unknown): value is WeakSet; - -export { isWeakSet }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakSet.js b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakSet.js deleted file mode 100644 index 0a9dcd9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakSet.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function isWeakSet(value) { - return value instanceof WeakSet; -} - -exports.isWeakSet = isWeakSet; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakSet.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakSet.mjs deleted file mode 100644 index 2f64fe3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/predicate/isWeakSet.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function isWeakSet(value) { - return value instanceof WeakSet; -} - -export { isWeakSet }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/delay.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/promise/delay.d.mts deleted file mode 100644 index 29bbef9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/delay.d.mts +++ /dev/null @@ -1,38 +0,0 @@ -interface DelayOptions { - signal?: AbortSignal; -} -/** - * Delays the execution of code for a specified number of milliseconds. - * - * This function returns a Promise that resolves after the specified delay, allowing you to use it - * with async/await to pause execution. - * - * @param {number} ms - The number of milliseconds to delay. - * @param {DelayOptions} options - The options object. - * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the delay. - * @returns {Promise} A Promise that resolves after the specified delay. - * - * @example - * async function foo() { - * console.log('Start'); - * await delay(1000); // Delays execution for 1 second - * console.log('End'); - * } - * - * foo(); - * - * // With AbortSignal - * const controller = new AbortController(); - * const { signal } = controller; - * - * setTimeout(() => controller.abort(), 50); // Will cancel the delay after 50ms - * try { - * await delay(100, { signal }); - * } catch (error) { - * console.error(error); // Will log 'AbortError' - * } - * } - */ -declare function delay(ms: number, { signal }?: DelayOptions): Promise; - -export { delay }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/delay.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/promise/delay.d.ts deleted file mode 100644 index 29bbef9..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/delay.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -interface DelayOptions { - signal?: AbortSignal; -} -/** - * Delays the execution of code for a specified number of milliseconds. - * - * This function returns a Promise that resolves after the specified delay, allowing you to use it - * with async/await to pause execution. - * - * @param {number} ms - The number of milliseconds to delay. - * @param {DelayOptions} options - The options object. - * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the delay. - * @returns {Promise} A Promise that resolves after the specified delay. - * - * @example - * async function foo() { - * console.log('Start'); - * await delay(1000); // Delays execution for 1 second - * console.log('End'); - * } - * - * foo(); - * - * // With AbortSignal - * const controller = new AbortController(); - * const { signal } = controller; - * - * setTimeout(() => controller.abort(), 50); // Will cancel the delay after 50ms - * try { - * await delay(100, { signal }); - * } catch (error) { - * console.error(error); // Will log 'AbortError' - * } - * } - */ -declare function delay(ms: number, { signal }?: DelayOptions): Promise; - -export { delay }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/delay.js b/sdks/nodejs/node_modules/es-toolkit/dist/promise/delay.js deleted file mode 100644 index db3c026..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/delay.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const AbortError = require('../error/AbortError.js'); - -function delay(ms, { signal } = {}) { - return new Promise((resolve, reject) => { - const abortError = () => { - reject(new AbortError.AbortError()); - }; - const abortHandler = () => { - clearTimeout(timeoutId); - abortError(); - }; - if (signal?.aborted) { - return abortError(); - } - const timeoutId = setTimeout(() => { - signal?.removeEventListener('abort', abortHandler); - resolve(); - }, ms); - signal?.addEventListener('abort', abortHandler, { once: true }); - }); -} - -exports.delay = delay; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/delay.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/promise/delay.mjs deleted file mode 100644 index 1ac7d39..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/delay.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import { AbortError } from '../error/AbortError.mjs'; - -function delay(ms, { signal } = {}) { - return new Promise((resolve, reject) => { - const abortError = () => { - reject(new AbortError()); - }; - const abortHandler = () => { - clearTimeout(timeoutId); - abortError(); - }; - if (signal?.aborted) { - return abortError(); - } - const timeoutId = setTimeout(() => { - signal?.removeEventListener('abort', abortHandler); - resolve(); - }, ms); - signal?.addEventListener('abort', abortHandler, { once: true }); - }); -} - -export { delay }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/index.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/promise/index.d.mts deleted file mode 100644 index 5a59d48..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/index.d.mts +++ /dev/null @@ -1,5 +0,0 @@ -export { delay } from './delay.mjs'; -export { Mutex } from './mutex.mjs'; -export { Semaphore } from './semaphore.mjs'; -export { timeout } from './timeout.mjs'; -export { withTimeout } from './withTimeout.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/index.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/promise/index.d.ts deleted file mode 100644 index 82b6639..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export { delay } from './delay.js'; -export { Mutex } from './mutex.js'; -export { Semaphore } from './semaphore.js'; -export { timeout } from './timeout.js'; -export { withTimeout } from './withTimeout.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/index.js b/sdks/nodejs/node_modules/es-toolkit/dist/promise/index.js deleted file mode 100644 index 1b96661..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/index.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const delay = require('./delay.js'); -const mutex = require('./mutex.js'); -const semaphore = require('./semaphore.js'); -const timeout = require('./timeout.js'); -const withTimeout = require('./withTimeout.js'); - - - -exports.delay = delay.delay; -exports.Mutex = mutex.Mutex; -exports.Semaphore = semaphore.Semaphore; -exports.timeout = timeout.timeout; -exports.withTimeout = withTimeout.withTimeout; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/index.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/promise/index.mjs deleted file mode 100644 index 5a59d48..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/index.mjs +++ /dev/null @@ -1,5 +0,0 @@ -export { delay } from './delay.mjs'; -export { Mutex } from './mutex.mjs'; -export { Semaphore } from './semaphore.mjs'; -export { timeout } from './timeout.mjs'; -export { withTimeout } from './withTimeout.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/mutex.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/promise/mutex.d.mts deleted file mode 100644 index 84fe614..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/mutex.d.mts +++ /dev/null @@ -1,64 +0,0 @@ -/** - * A Mutex (mutual exclusion lock) for async functions. - * It allows only one async task to access a critical section at a time. - * - * @example - * const mutex = new Mutex(); - * - * async function criticalSection() { - * await mutex.acquire(); - * try { - * // This code section cannot be executed simultaneously - * } finally { - * mutex.release(); - * } - * } - * - * criticalSection(); - * criticalSection(); // This call will wait until the first call releases the mutex. - */ -declare class Mutex { - private semaphore; - /** - * Checks if the mutex is currently locked. - * @returns {boolean} True if the mutex is locked, false otherwise. - * - * @example - * const mutex = new Mutex(); - * console.log(mutex.isLocked); // false - * await mutex.acquire(); - * console.log(mutex.isLocked); // true - * mutex.release(); - * console.log(mutex.isLocked); // false - */ - get isLocked(): boolean; - /** - * Acquires the mutex, blocking if necessary until it is available. - * @returns {Promise} A promise that resolves when the mutex is acquired. - * - * @example - * const mutex = new Mutex(); - * await mutex.acquire(); - * try { - * // This code section cannot be executed simultaneously - * } finally { - * mutex.release(); - * } - */ - acquire(): Promise; - /** - * Releases the mutex, allowing another waiting task to proceed. - * - * @example - * const mutex = new Mutex(); - * await mutex.acquire(); - * try { - * // This code section cannot be executed simultaneously - * } finally { - * mutex.release(); // Allows another waiting task to proceed. - * } - */ - release(): void; -} - -export { Mutex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/mutex.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/promise/mutex.d.ts deleted file mode 100644 index 84fe614..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/mutex.d.ts +++ /dev/null @@ -1,64 +0,0 @@ -/** - * A Mutex (mutual exclusion lock) for async functions. - * It allows only one async task to access a critical section at a time. - * - * @example - * const mutex = new Mutex(); - * - * async function criticalSection() { - * await mutex.acquire(); - * try { - * // This code section cannot be executed simultaneously - * } finally { - * mutex.release(); - * } - * } - * - * criticalSection(); - * criticalSection(); // This call will wait until the first call releases the mutex. - */ -declare class Mutex { - private semaphore; - /** - * Checks if the mutex is currently locked. - * @returns {boolean} True if the mutex is locked, false otherwise. - * - * @example - * const mutex = new Mutex(); - * console.log(mutex.isLocked); // false - * await mutex.acquire(); - * console.log(mutex.isLocked); // true - * mutex.release(); - * console.log(mutex.isLocked); // false - */ - get isLocked(): boolean; - /** - * Acquires the mutex, blocking if necessary until it is available. - * @returns {Promise} A promise that resolves when the mutex is acquired. - * - * @example - * const mutex = new Mutex(); - * await mutex.acquire(); - * try { - * // This code section cannot be executed simultaneously - * } finally { - * mutex.release(); - * } - */ - acquire(): Promise; - /** - * Releases the mutex, allowing another waiting task to proceed. - * - * @example - * const mutex = new Mutex(); - * await mutex.acquire(); - * try { - * // This code section cannot be executed simultaneously - * } finally { - * mutex.release(); // Allows another waiting task to proceed. - * } - */ - release(): void; -} - -export { Mutex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/mutex.js b/sdks/nodejs/node_modules/es-toolkit/dist/promise/mutex.js deleted file mode 100644 index 5b383af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/mutex.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const semaphore = require('./semaphore.js'); - -class Mutex { - semaphore = new semaphore.Semaphore(1); - get isLocked() { - return this.semaphore.available === 0; - } - async acquire() { - return this.semaphore.acquire(); - } - release() { - this.semaphore.release(); - } -} - -exports.Mutex = Mutex; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/mutex.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/promise/mutex.mjs deleted file mode 100644 index f995f0f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/mutex.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { Semaphore } from './semaphore.mjs'; - -class Mutex { - semaphore = new Semaphore(1); - get isLocked() { - return this.semaphore.available === 0; - } - async acquire() { - return this.semaphore.acquire(); - } - release() { - this.semaphore.release(); - } -} - -export { Mutex }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/semaphore.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/promise/semaphore.d.mts deleted file mode 100644 index 31be57a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/semaphore.d.mts +++ /dev/null @@ -1,81 +0,0 @@ -/** - * A counting semaphore for async functions that manages available permits. - * Semaphores are mainly used to limit the number of concurrent async tasks. - * - * Each `acquire` operation takes a permit or waits until one is available. - * Each `release` operation adds a permit, potentially allowing a waiting task to proceed. - * - * The semaphore ensures fairness by maintaining a FIFO (First In, First Out) order for acquirers. - * - * @example - * const sema = new Semaphore(2); - * - * async function task() { - * await sema.acquire(); - * try { - * // This code can only be executed by two tasks at the same time - * } finally { - * sema.release(); - * } - * } - * - * task(); - * task(); - * task(); // This task will wait until one of the previous tasks releases the semaphore. - */ -declare class Semaphore { - /** - * The maximum number of concurrent operations allowed. - * @type {number} - */ - capacity: number; - /** - * The number of available permits. - * @type {number} - */ - available: number; - private deferredTasks; - /** - * Creates an instance of Semaphore. - * @param {number} capacity - The maximum number of concurrent operations allowed. - * - * @example - * const sema = new Semaphore(3); // Allows up to 3 concurrent operations. - */ - constructor(capacity: number); - /** - * Acquires a semaphore, blocking if necessary until one is available. - * @returns {Promise} A promise that resolves when the semaphore is acquired. - * - * @example - * const sema = new Semaphore(1); - * - * async function criticalSection() { - * await sema.acquire(); - * try { - * // This code section cannot be executed simultaneously - * } finally { - * sema.release(); - * } - * } - */ - acquire(): Promise; - /** - * Releases a semaphore, allowing one more operation to proceed. - * - * @example - * const sema = new Semaphore(1); - * - * async function task() { - * await sema.acquire(); - * try { - * // This code can only be executed by two tasks at the same time - * } finally { - * sema.release(); // Allows another waiting task to proceed. - * } - * } - */ - release(): void; -} - -export { Semaphore }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/semaphore.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/promise/semaphore.d.ts deleted file mode 100644 index 31be57a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/semaphore.d.ts +++ /dev/null @@ -1,81 +0,0 @@ -/** - * A counting semaphore for async functions that manages available permits. - * Semaphores are mainly used to limit the number of concurrent async tasks. - * - * Each `acquire` operation takes a permit or waits until one is available. - * Each `release` operation adds a permit, potentially allowing a waiting task to proceed. - * - * The semaphore ensures fairness by maintaining a FIFO (First In, First Out) order for acquirers. - * - * @example - * const sema = new Semaphore(2); - * - * async function task() { - * await sema.acquire(); - * try { - * // This code can only be executed by two tasks at the same time - * } finally { - * sema.release(); - * } - * } - * - * task(); - * task(); - * task(); // This task will wait until one of the previous tasks releases the semaphore. - */ -declare class Semaphore { - /** - * The maximum number of concurrent operations allowed. - * @type {number} - */ - capacity: number; - /** - * The number of available permits. - * @type {number} - */ - available: number; - private deferredTasks; - /** - * Creates an instance of Semaphore. - * @param {number} capacity - The maximum number of concurrent operations allowed. - * - * @example - * const sema = new Semaphore(3); // Allows up to 3 concurrent operations. - */ - constructor(capacity: number); - /** - * Acquires a semaphore, blocking if necessary until one is available. - * @returns {Promise} A promise that resolves when the semaphore is acquired. - * - * @example - * const sema = new Semaphore(1); - * - * async function criticalSection() { - * await sema.acquire(); - * try { - * // This code section cannot be executed simultaneously - * } finally { - * sema.release(); - * } - * } - */ - acquire(): Promise; - /** - * Releases a semaphore, allowing one more operation to proceed. - * - * @example - * const sema = new Semaphore(1); - * - * async function task() { - * await sema.acquire(); - * try { - * // This code can only be executed by two tasks at the same time - * } finally { - * sema.release(); // Allows another waiting task to proceed. - * } - * } - */ - release(): void; -} - -export { Semaphore }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/semaphore.js b/sdks/nodejs/node_modules/es-toolkit/dist/promise/semaphore.js deleted file mode 100644 index a0f40f3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/semaphore.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -class Semaphore { - capacity; - available; - deferredTasks = []; - constructor(capacity) { - this.capacity = capacity; - this.available = capacity; - } - async acquire() { - if (this.available > 0) { - this.available--; - return; - } - return new Promise(resolve => { - this.deferredTasks.push(resolve); - }); - } - release() { - const deferredTask = this.deferredTasks.shift(); - if (deferredTask != null) { - deferredTask(); - return; - } - if (this.available < this.capacity) { - this.available++; - } - } -} - -exports.Semaphore = Semaphore; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/semaphore.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/promise/semaphore.mjs deleted file mode 100644 index 9fa0fce..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/semaphore.mjs +++ /dev/null @@ -1,30 +0,0 @@ -class Semaphore { - capacity; - available; - deferredTasks = []; - constructor(capacity) { - this.capacity = capacity; - this.available = capacity; - } - async acquire() { - if (this.available > 0) { - this.available--; - return; - } - return new Promise(resolve => { - this.deferredTasks.push(resolve); - }); - } - release() { - const deferredTask = this.deferredTasks.shift(); - if (deferredTask != null) { - deferredTask(); - return; - } - if (this.available < this.capacity) { - this.available++; - } - } -} - -export { Semaphore }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/timeout.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/promise/timeout.d.mts deleted file mode 100644 index 249ae20..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/timeout.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Returns a promise that rejects with a `TimeoutError` after a specified delay. - * - * @param {number} ms - The delay duration in milliseconds. - * @returns {Promise} A promise that rejects with a `TimeoutError` after the specified delay. - * @throws {TimeoutError} Throws a `TimeoutError` after the specified delay. - * - * @example - * try { - * await timeout(1000); // Timeout exception after 1 second - * } catch (error) { - * console.error(error); // Will log 'The operation was timed out' - * } - */ -declare function timeout(ms: number): Promise; - -export { timeout }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/timeout.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/promise/timeout.d.ts deleted file mode 100644 index 249ae20..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/timeout.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Returns a promise that rejects with a `TimeoutError` after a specified delay. - * - * @param {number} ms - The delay duration in milliseconds. - * @returns {Promise} A promise that rejects with a `TimeoutError` after the specified delay. - * @throws {TimeoutError} Throws a `TimeoutError` after the specified delay. - * - * @example - * try { - * await timeout(1000); // Timeout exception after 1 second - * } catch (error) { - * console.error(error); // Will log 'The operation was timed out' - * } - */ -declare function timeout(ms: number): Promise; - -export { timeout }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/timeout.js b/sdks/nodejs/node_modules/es-toolkit/dist/promise/timeout.js deleted file mode 100644 index 0430d9d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/timeout.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const delay = require('./delay.js'); -const TimeoutError = require('../error/TimeoutError.js'); - -async function timeout(ms) { - await delay.delay(ms); - throw new TimeoutError.TimeoutError(); -} - -exports.timeout = timeout; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/timeout.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/promise/timeout.mjs deleted file mode 100644 index 7fe67fd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/timeout.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { delay } from './delay.mjs'; -import { TimeoutError } from '../error/TimeoutError.mjs'; - -async function timeout(ms) { - await delay(ms); - throw new TimeoutError(); -} - -export { timeout }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/withTimeout.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/promise/withTimeout.d.mts deleted file mode 100644 index 2fdf872..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/withTimeout.d.mts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Executes an async function and enforces a timeout. - * - * If the promise does not resolve within the specified time, - * the timeout will trigger and the returned promise will be rejected. - * - * - * @template T - * @param {() => Promise} run - A function that returns a promise to be executed. - * @param {number} ms - The timeout duration in milliseconds. - * @returns {Promise} A promise that resolves with the result of the `run` function or rejects if the timeout is reached. - * - * @example - * async function fetchData() { - * const response = await fetch('https://example.com/data'); - * return response.json(); - * } - * - * try { - * const data = await withTimeout(fetchData, 1000); - * console.log(data); // Logs the fetched data if `fetchData` is resolved within 1 second. - * } catch (error) { - * console.error(error); // Will log 'TimeoutError' if `fetchData` is not resolved within 1 second. - * } - */ -declare function withTimeout(run: () => Promise, ms: number): Promise; - -export { withTimeout }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/withTimeout.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/promise/withTimeout.d.ts deleted file mode 100644 index 2fdf872..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/withTimeout.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Executes an async function and enforces a timeout. - * - * If the promise does not resolve within the specified time, - * the timeout will trigger and the returned promise will be rejected. - * - * - * @template T - * @param {() => Promise} run - A function that returns a promise to be executed. - * @param {number} ms - The timeout duration in milliseconds. - * @returns {Promise} A promise that resolves with the result of the `run` function or rejects if the timeout is reached. - * - * @example - * async function fetchData() { - * const response = await fetch('https://example.com/data'); - * return response.json(); - * } - * - * try { - * const data = await withTimeout(fetchData, 1000); - * console.log(data); // Logs the fetched data if `fetchData` is resolved within 1 second. - * } catch (error) { - * console.error(error); // Will log 'TimeoutError' if `fetchData` is not resolved within 1 second. - * } - */ -declare function withTimeout(run: () => Promise, ms: number): Promise; - -export { withTimeout }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/withTimeout.js b/sdks/nodejs/node_modules/es-toolkit/dist/promise/withTimeout.js deleted file mode 100644 index 24c0456..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/withTimeout.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const timeout = require('./timeout.js'); - -async function withTimeout(run, ms) { - return Promise.race([run(), timeout.timeout(ms)]); -} - -exports.withTimeout = withTimeout; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/promise/withTimeout.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/promise/withTimeout.mjs deleted file mode 100644 index cb4d42a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/promise/withTimeout.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { timeout } from './timeout.mjs'; - -async function withTimeout(run, ms) { - return Promise.race([run(), timeout(ms)]); -} - -export { withTimeout }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/countBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/set/countBy.d.mts deleted file mode 100644 index a30de12..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/countBy.d.mts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Counts the occurrences of items in a Set based on a transformation function. - * - * This function takes a Set and a function that generates a key from each value. - * It returns a Map with the generated keys and their counts as values. - * The count is incremented for each element for which the transformation produces the same key. - * - * @template T - The type of elements in the Set. - * @template K - The type of keys produced by the transformation function. - * @param {Set} set - The Set to count occurrences from. - * @param {(value: T, value2: T, set: Set) => K} mapper - The function to produce a key for counting. - * @returns {Map} A Map containing the mapped keys and their counts. - * - * @example - * const set = new Set([1, 2, 3, 4, 5]); - * const result = countBy(set, (value) => value % 2 === 0 ? 'even' : 'odd'); - * // result will be Map(2) { 'odd' => 3, 'even' => 2 } - * - * @example - * const set = new Set(['apple', 'banana', 'cherry']); - * const result = countBy(set, (value) => value.length); - * // result will be Map(2) { 5 => 1, 6 => 2 } - */ -declare function countBy(set: Set, mapper: (value: T, value2: T, set: Set) => K): Map; - -export { countBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/countBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/set/countBy.d.ts deleted file mode 100644 index a30de12..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/countBy.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Counts the occurrences of items in a Set based on a transformation function. - * - * This function takes a Set and a function that generates a key from each value. - * It returns a Map with the generated keys and their counts as values. - * The count is incremented for each element for which the transformation produces the same key. - * - * @template T - The type of elements in the Set. - * @template K - The type of keys produced by the transformation function. - * @param {Set} set - The Set to count occurrences from. - * @param {(value: T, value2: T, set: Set) => K} mapper - The function to produce a key for counting. - * @returns {Map} A Map containing the mapped keys and their counts. - * - * @example - * const set = new Set([1, 2, 3, 4, 5]); - * const result = countBy(set, (value) => value % 2 === 0 ? 'even' : 'odd'); - * // result will be Map(2) { 'odd' => 3, 'even' => 2 } - * - * @example - * const set = new Set(['apple', 'banana', 'cherry']); - * const result = countBy(set, (value) => value.length); - * // result will be Map(2) { 5 => 1, 6 => 2 } - */ -declare function countBy(set: Set, mapper: (value: T, value2: T, set: Set) => K): Map; - -export { countBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/countBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/set/countBy.js deleted file mode 100644 index 1f87a2f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/countBy.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function countBy(set, mapper) { - const result = new Map(); - for (const value of set) { - const mappedKey = mapper(value, value, set); - result.set(mappedKey, (result.get(mappedKey) ?? 0) + 1); - } - return result; -} - -exports.countBy = countBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/countBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/set/countBy.mjs deleted file mode 100644 index fb92f25..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/countBy.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function countBy(set, mapper) { - const result = new Map(); - for (const value of set) { - const mappedKey = mapper(value, value, set); - result.set(mappedKey, (result.get(mappedKey) ?? 0) + 1); - } - return result; -} - -export { countBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/every.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/set/every.d.mts deleted file mode 100644 index 9b9b6d8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/every.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Tests whether all elements in a Set satisfy the provided predicate function. - * - * This function iterates through all elements of the Set and checks if the predicate function - * returns true for every element. It returns true if the predicate is satisfied for all elements, - * and false otherwise. - * - * @template T - The type of elements in the Set. - * @param {Set} set - The Set to test. - * @param {(value: T, value2: T, set: Set) => boolean} doesMatch - A predicate function that tests each element. - * @returns {boolean} true if all elements satisfy the predicate, false otherwise. - * - * @example - * const set = new Set([10, 20, 30]); - * const result = every(set, (value) => value > 5); - * // result will be: true - * - * const result2 = every(set, (value) => value > 15); - * // result2 will be: false - */ -declare function every(set: Set, doesMatch: (value: T, value2: T, set: Set) => boolean): boolean; - -export { every }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/every.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/set/every.d.ts deleted file mode 100644 index 9b9b6d8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/every.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Tests whether all elements in a Set satisfy the provided predicate function. - * - * This function iterates through all elements of the Set and checks if the predicate function - * returns true for every element. It returns true if the predicate is satisfied for all elements, - * and false otherwise. - * - * @template T - The type of elements in the Set. - * @param {Set} set - The Set to test. - * @param {(value: T, value2: T, set: Set) => boolean} doesMatch - A predicate function that tests each element. - * @returns {boolean} true if all elements satisfy the predicate, false otherwise. - * - * @example - * const set = new Set([10, 20, 30]); - * const result = every(set, (value) => value > 5); - * // result will be: true - * - * const result2 = every(set, (value) => value > 15); - * // result2 will be: false - */ -declare function every(set: Set, doesMatch: (value: T, value2: T, set: Set) => boolean): boolean; - -export { every }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/every.js b/sdks/nodejs/node_modules/es-toolkit/dist/set/every.js deleted file mode 100644 index 2dadfda..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/every.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function every(set, doesMatch) { - for (const value of set) { - if (!doesMatch(value, value, set)) { - return false; - } - } - return true; -} - -exports.every = every; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/every.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/set/every.mjs deleted file mode 100644 index 02219df..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/every.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function every(set, doesMatch) { - for (const value of set) { - if (!doesMatch(value, value, set)) { - return false; - } - } - return true; -} - -export { every }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/filter.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/set/filter.d.mts deleted file mode 100644 index c69594c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/filter.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Filters a Set based on a predicate function. - * - * This function takes a Set and a predicate function, and returns a new Set containing - * only the elements for which the predicate function returns true. - * - * @template T - The type of elements in the Set. - * @param {Set} set - The Set to filter. - * @param {(value: T, value2: T, set: Set) => boolean} callback - A predicate function that tests each element. - * @returns {Set} A new Set containing only the elements that satisfy the predicate. - * - * @example - * const set = new Set([1, 2, 3, 4, 5]); - * const result = filter(set, (value) => value > 2); - * // result will be: - * // Set(3) { 3, 4, 5 } - */ -declare function filter(set: Set, callback: (value: T, value2: T, set: Set) => boolean): Set; - -export { filter }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/filter.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/set/filter.d.ts deleted file mode 100644 index c69594c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/filter.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Filters a Set based on a predicate function. - * - * This function takes a Set and a predicate function, and returns a new Set containing - * only the elements for which the predicate function returns true. - * - * @template T - The type of elements in the Set. - * @param {Set} set - The Set to filter. - * @param {(value: T, value2: T, set: Set) => boolean} callback - A predicate function that tests each element. - * @returns {Set} A new Set containing only the elements that satisfy the predicate. - * - * @example - * const set = new Set([1, 2, 3, 4, 5]); - * const result = filter(set, (value) => value > 2); - * // result will be: - * // Set(3) { 3, 4, 5 } - */ -declare function filter(set: Set, callback: (value: T, value2: T, set: Set) => boolean): Set; - -export { filter }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/filter.js b/sdks/nodejs/node_modules/es-toolkit/dist/set/filter.js deleted file mode 100644 index 1e6658c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/filter.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function filter(set, callback) { - const result = new Set(); - for (const value of set) { - if (callback(value, value, set)) { - result.add(value); - } - } - return result; -} - -exports.filter = filter; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/filter.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/set/filter.mjs deleted file mode 100644 index 78f9343..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/filter.mjs +++ /dev/null @@ -1,11 +0,0 @@ -function filter(set, callback) { - const result = new Set(); - for (const value of set) { - if (callback(value, value, set)) { - result.add(value); - } - } - return result; -} - -export { filter }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/find.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/set/find.d.mts deleted file mode 100644 index 3e54f4e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/find.d.mts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Finds the first element in a Set for which the predicate function returns true. - * - * This function iterates through the elements of the Set and returns the first - * element for which the predicate function returns true. If no element satisfies the predicate, - * it returns undefined. - * - * @template T - The type of elements in the Set. - * @param {Set} set - The Set to search. - * @param {(value: T, value2: T, set: Set) => boolean} doesMatch - A predicate function that tests each element. - * @returns {T | undefined} The first element that satisfies the predicate, or undefined if none found. - * - * @example - * const set = new Set([ - * { name: 'apple', quantity: 10 }, - * { name: 'banana', quantity: 5 }, - * { name: 'grape', quantity: 15 } - * ]); - * const result = find(set, (value) => value.quantity > 10); - * // result will be: { name: 'grape', quantity: 15 } - */ -declare function find(set: Set, doesMatch: (value: T, value2: T, set: Set) => boolean): T | undefined; - -export { find }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/find.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/set/find.d.ts deleted file mode 100644 index 3e54f4e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/find.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Finds the first element in a Set for which the predicate function returns true. - * - * This function iterates through the elements of the Set and returns the first - * element for which the predicate function returns true. If no element satisfies the predicate, - * it returns undefined. - * - * @template T - The type of elements in the Set. - * @param {Set} set - The Set to search. - * @param {(value: T, value2: T, set: Set) => boolean} doesMatch - A predicate function that tests each element. - * @returns {T | undefined} The first element that satisfies the predicate, or undefined if none found. - * - * @example - * const set = new Set([ - * { name: 'apple', quantity: 10 }, - * { name: 'banana', quantity: 5 }, - * { name: 'grape', quantity: 15 } - * ]); - * const result = find(set, (value) => value.quantity > 10); - * // result will be: { name: 'grape', quantity: 15 } - */ -declare function find(set: Set, doesMatch: (value: T, value2: T, set: Set) => boolean): T | undefined; - -export { find }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/find.js b/sdks/nodejs/node_modules/es-toolkit/dist/set/find.js deleted file mode 100644 index 87e2679..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/find.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function find(set, doesMatch) { - for (const value of set) { - if (doesMatch(value, value, set)) { - return value; - } - } - return undefined; -} - -exports.find = find; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/find.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/set/find.mjs deleted file mode 100644 index b86c79c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/find.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function find(set, doesMatch) { - for (const value of set) { - if (doesMatch(value, value, set)) { - return value; - } - } - return undefined; -} - -export { find }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/index.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/set/index.d.mts deleted file mode 100644 index 07d8ba6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/index.d.mts +++ /dev/null @@ -1,8 +0,0 @@ -export { countBy } from './countBy.mjs'; -export { every } from './every.mjs'; -export { filter } from './filter.mjs'; -export { find } from './find.mjs'; -export { keyBy } from './keyBy.mjs'; -export { map } from './map.mjs'; -export { reduce } from './reduce.mjs'; -export { some } from './some.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/index.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/set/index.d.ts deleted file mode 100644 index 6af4855..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/index.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { countBy } from './countBy.js'; -export { every } from './every.js'; -export { filter } from './filter.js'; -export { find } from './find.js'; -export { keyBy } from './keyBy.js'; -export { map } from './map.js'; -export { reduce } from './reduce.js'; -export { some } from './some.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/index.js b/sdks/nodejs/node_modules/es-toolkit/dist/set/index.js deleted file mode 100644 index ffbda9e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/index.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const countBy = require('./countBy.js'); -const every = require('./every.js'); -const filter = require('./filter.js'); -const find = require('./find.js'); -const keyBy = require('./keyBy.js'); -const map = require('./map.js'); -const reduce = require('./reduce.js'); -const some = require('./some.js'); - - - -exports.countBy = countBy.countBy; -exports.every = every.every; -exports.filter = filter.filter; -exports.find = find.find; -exports.keyBy = keyBy.keyBy; -exports.map = map.map; -exports.reduce = reduce.reduce; -exports.some = some.some; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/index.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/set/index.mjs deleted file mode 100644 index 07d8ba6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/index.mjs +++ /dev/null @@ -1,8 +0,0 @@ -export { countBy } from './countBy.mjs'; -export { every } from './every.mjs'; -export { filter } from './filter.mjs'; -export { find } from './find.mjs'; -export { keyBy } from './keyBy.mjs'; -export { map } from './map.mjs'; -export { reduce } from './reduce.mjs'; -export { some } from './some.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/keyBy.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/set/keyBy.d.mts deleted file mode 100644 index 6534ab1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/keyBy.d.mts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Maps each element of a Set based on a provided key-generating function. - * - * This function takes a Set and a function that generates a key from each value. - * It returns a new Map where the keys are generated by the key function and the values are - * the corresponding values from the original set. If multiple elements produce the same key, - * the last value encountered will be used. - * - * @template T - The type of elements in the Set. - * @template K - The type of keys to produce in the returned Map. - * @param {Set} set - The set of elements to be mapped. - * @param {(value: T, value2: T, set: Set) => K} getKeyFromValue - A function that generates a key from a value. - * @returns {Map} A Map where the generated keys are mapped to each element's value. - * - * @example - * const set = new Set([ - * { type: 'fruit', name: 'apple' }, - * { type: 'fruit', name: 'banana' }, - * { type: 'vegetable', name: 'carrot' } - * ]); - * const result = keyBy(set, item => item.type); - * // result will be: - * // Map(2) { - * // 'fruit' => { type: 'fruit', name: 'banana' }, - * // 'vegetable' => { type: 'vegetable', name: 'carrot' } - * // } - */ -declare function keyBy(set: Set, getKeyFromValue: (value: T, value2: T, set: Set) => K): Map; - -export { keyBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/keyBy.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/set/keyBy.d.ts deleted file mode 100644 index 6534ab1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/keyBy.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Maps each element of a Set based on a provided key-generating function. - * - * This function takes a Set and a function that generates a key from each value. - * It returns a new Map where the keys are generated by the key function and the values are - * the corresponding values from the original set. If multiple elements produce the same key, - * the last value encountered will be used. - * - * @template T - The type of elements in the Set. - * @template K - The type of keys to produce in the returned Map. - * @param {Set} set - The set of elements to be mapped. - * @param {(value: T, value2: T, set: Set) => K} getKeyFromValue - A function that generates a key from a value. - * @returns {Map} A Map where the generated keys are mapped to each element's value. - * - * @example - * const set = new Set([ - * { type: 'fruit', name: 'apple' }, - * { type: 'fruit', name: 'banana' }, - * { type: 'vegetable', name: 'carrot' } - * ]); - * const result = keyBy(set, item => item.type); - * // result will be: - * // Map(2) { - * // 'fruit' => { type: 'fruit', name: 'banana' }, - * // 'vegetable' => { type: 'vegetable', name: 'carrot' } - * // } - */ -declare function keyBy(set: Set, getKeyFromValue: (value: T, value2: T, set: Set) => K): Map; - -export { keyBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/keyBy.js b/sdks/nodejs/node_modules/es-toolkit/dist/set/keyBy.js deleted file mode 100644 index fffbb07..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/keyBy.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function keyBy(set, getKeyFromValue) { - const result = new Map(); - for (const value of set) { - const newKey = getKeyFromValue(value, value, set); - result.set(newKey, value); - } - return result; -} - -exports.keyBy = keyBy; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/keyBy.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/set/keyBy.mjs deleted file mode 100644 index 965eef0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/keyBy.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function keyBy(set, getKeyFromValue) { - const result = new Map(); - for (const value of set) { - const newKey = getKeyFromValue(value, value, set); - result.set(newKey, value); - } - return result; -} - -export { keyBy }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/map.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/set/map.d.mts deleted file mode 100644 index bd4f2c8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/map.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Creates a new Set with elements transformed by the provided function. - * - * This function takes a Set and a function that generates a new value from each element. - * It returns a new Set where the elements are the result of applying the function to each element. - * - * @template T - The type of elements in the input Set. - * @template U - The type of elements in the output Set. - * @param {Set} set - The Set to transform. - * @param {(value: T, value2: T, set: Set) => U} getNewValue - A function that generates a new value from an element. - * @returns {Set} A new Set with transformed elements. - * - * @example - * const set = new Set([1, 2, 3]); - * const result = map(set, (value) => value * 2); - * // result will be: - * // Set(3) { 2, 4, 6 } - */ -declare function map(set: Set, getNewValue: (value: T, value2: T, set: Set) => U): Set; - -export { map }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/map.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/set/map.d.ts deleted file mode 100644 index bd4f2c8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/map.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Creates a new Set with elements transformed by the provided function. - * - * This function takes a Set and a function that generates a new value from each element. - * It returns a new Set where the elements are the result of applying the function to each element. - * - * @template T - The type of elements in the input Set. - * @template U - The type of elements in the output Set. - * @param {Set} set - The Set to transform. - * @param {(value: T, value2: T, set: Set) => U} getNewValue - A function that generates a new value from an element. - * @returns {Set} A new Set with transformed elements. - * - * @example - * const set = new Set([1, 2, 3]); - * const result = map(set, (value) => value * 2); - * // result will be: - * // Set(3) { 2, 4, 6 } - */ -declare function map(set: Set, getNewValue: (value: T, value2: T, set: Set) => U): Set; - -export { map }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/map.js b/sdks/nodejs/node_modules/es-toolkit/dist/set/map.js deleted file mode 100644 index 2389cea..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/map.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function map(set, getNewValue) { - const result = new Set(); - for (const value of set) { - const newValue = getNewValue(value, value, set); - result.add(newValue); - } - return result; -} - -exports.map = map; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/map.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/set/map.mjs deleted file mode 100644 index 911085e..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/map.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function map(set, getNewValue) { - const result = new Set(); - for (const value of set) { - const newValue = getNewValue(value, value, set); - result.add(newValue); - } - return result; -} - -export { map }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/reduce.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/set/reduce.d.mts deleted file mode 100644 index a5a8b23..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/reduce.d.mts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Reduces a Set to a single value by iterating through its elements and applying a callback function. - * - * This function iterates through all elements of the Set and applies the callback function to each element, - * accumulating the result. If an initial value is provided, it is used as the starting accumulator value. - * If no initial value is provided and the Set is empty, a TypeError is thrown. - * - * @template T - The type of elements in the Set. - * @template A - The type of the accumulator. - * @param {Set} set - The Set to reduce. - * @param {(accumulator: A, value: T, value2: T, set: Set) => A} callback - A function that processes each element and updates the accumulator. - * @param {A} [initialValue] - The initial value for the accumulator. If not provided, the first element in the Set is used. - * @returns {A} The final accumulated value. - * @throws {TypeError} If the Set is empty and no initial value is provided. - * - * @example - * const set = new Set([1, 2, 3]); - * const result = reduce(set, (acc, value) => acc + value, 0); - * // result will be: 6 - * - * @example - * const set = new Set([10, 20]); - * const result = reduce(set, (acc, value) => acc + value); - * // result will be: 30 (starts with first value 10) - */ -declare function reduce(set: Set, callback: (accumulator: A, value: T, value2: T, set: Set) => A, initialValue?: A): A; - -export { reduce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/reduce.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/set/reduce.d.ts deleted file mode 100644 index a5a8b23..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/reduce.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Reduces a Set to a single value by iterating through its elements and applying a callback function. - * - * This function iterates through all elements of the Set and applies the callback function to each element, - * accumulating the result. If an initial value is provided, it is used as the starting accumulator value. - * If no initial value is provided and the Set is empty, a TypeError is thrown. - * - * @template T - The type of elements in the Set. - * @template A - The type of the accumulator. - * @param {Set} set - The Set to reduce. - * @param {(accumulator: A, value: T, value2: T, set: Set) => A} callback - A function that processes each element and updates the accumulator. - * @param {A} [initialValue] - The initial value for the accumulator. If not provided, the first element in the Set is used. - * @returns {A} The final accumulated value. - * @throws {TypeError} If the Set is empty and no initial value is provided. - * - * @example - * const set = new Set([1, 2, 3]); - * const result = reduce(set, (acc, value) => acc + value, 0); - * // result will be: 6 - * - * @example - * const set = new Set([10, 20]); - * const result = reduce(set, (acc, value) => acc + value); - * // result will be: 30 (starts with first value 10) - */ -declare function reduce(set: Set, callback: (accumulator: A, value: T, value2: T, set: Set) => A, initialValue?: A): A; - -export { reduce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/reduce.js b/sdks/nodejs/node_modules/es-toolkit/dist/set/reduce.js deleted file mode 100644 index 946c996..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/reduce.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function reduce(set, callback, initialValue) { - if (initialValue == null && set.size === 0) { - throw new TypeError('Reduce of empty set with no initial value'); - } - let accumulator = initialValue; - for (const value of set) { - if (accumulator == null) { - accumulator = value; - } - else { - accumulator = callback(accumulator, value, value, set); - } - } - return accumulator; -} - -exports.reduce = reduce; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/reduce.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/set/reduce.mjs deleted file mode 100644 index 4919cd5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/reduce.mjs +++ /dev/null @@ -1,17 +0,0 @@ -function reduce(set, callback, initialValue) { - if (initialValue == null && set.size === 0) { - throw new TypeError('Reduce of empty set with no initial value'); - } - let accumulator = initialValue; - for (const value of set) { - if (accumulator == null) { - accumulator = value; - } - else { - accumulator = callback(accumulator, value, value, set); - } - } - return accumulator; -} - -export { reduce }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/some.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/set/some.d.mts deleted file mode 100644 index 401acb4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/some.d.mts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Tests whether at least one element in a Set satisfies the provided predicate function. - * - * This function iterates through the elements of the Set and checks if the predicate function - * returns true for at least one element. It returns true if any element satisfies the predicate, - * and false otherwise. - * - * @template T - The type of elements in the Set. - * @param {Set} set - The Set to test. - * @param {(value: T, value2: T, set: Set) => boolean} doesMatch - A predicate function that tests each element. - * @returns {boolean} true if at least one element satisfies the predicate, false otherwise. - * - * @example - * const set = new Set([1, 2, 3]); - * const result = some(set, (value) => value > 2); - * // result will be: true - * - * const result2 = some(set, (value) => value > 5); - * // result2 will be: false - */ -declare function some(set: Set, doesMatch: (value: T, value2: T, set: Set) => boolean): boolean; - -export { some }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/some.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/set/some.d.ts deleted file mode 100644 index 401acb4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/some.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Tests whether at least one element in a Set satisfies the provided predicate function. - * - * This function iterates through the elements of the Set and checks if the predicate function - * returns true for at least one element. It returns true if any element satisfies the predicate, - * and false otherwise. - * - * @template T - The type of elements in the Set. - * @param {Set} set - The Set to test. - * @param {(value: T, value2: T, set: Set) => boolean} doesMatch - A predicate function that tests each element. - * @returns {boolean} true if at least one element satisfies the predicate, false otherwise. - * - * @example - * const set = new Set([1, 2, 3]); - * const result = some(set, (value) => value > 2); - * // result will be: true - * - * const result2 = some(set, (value) => value > 5); - * // result2 will be: false - */ -declare function some(set: Set, doesMatch: (value: T, value2: T, set: Set) => boolean): boolean; - -export { some }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/some.js b/sdks/nodejs/node_modules/es-toolkit/dist/set/some.js deleted file mode 100644 index 27af96b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/some.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function some(set, doesMatch) { - for (const value of set) { - if (doesMatch(value, value, set)) { - return true; - } - } - return false; -} - -exports.some = some; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/set/some.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/set/some.mjs deleted file mode 100644 index 6b93b3f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/set/some.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function some(set, doesMatch) { - for (const value of set) { - if (doesMatch(value, value, set)) { - return true; - } - } - return false; -} - -export { some }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/camelCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/camelCase.d.mts deleted file mode 100644 index 7e49894..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/camelCase.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Converts a string to camel case. - * - * Camel case is the naming convention in which the first word is written in lowercase and - * each subsequent word begins with a capital letter, concatenated without any separator characters. - * - * @param {string} str - The string that is to be changed to camel case. - * @returns {string} - The converted string to camel case. - * - * @example - * const convertedStr1 = camelCase('camelCase') // returns 'camelCase' - * const convertedStr2 = camelCase('some whitespace') // returns 'someWhitespace' - * const convertedStr3 = camelCase('hyphen-text') // returns 'hyphenText' - * const convertedStr4 = camelCase('HTTPRequest') // returns 'httpRequest' - * const convertedStr5 = camelCase('Keep unicode 😅') // returns 'keepUnicode😅' - */ -declare function camelCase(str: string): string; - -export { camelCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/camelCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/camelCase.d.ts deleted file mode 100644 index 7e49894..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/camelCase.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Converts a string to camel case. - * - * Camel case is the naming convention in which the first word is written in lowercase and - * each subsequent word begins with a capital letter, concatenated without any separator characters. - * - * @param {string} str - The string that is to be changed to camel case. - * @returns {string} - The converted string to camel case. - * - * @example - * const convertedStr1 = camelCase('camelCase') // returns 'camelCase' - * const convertedStr2 = camelCase('some whitespace') // returns 'someWhitespace' - * const convertedStr3 = camelCase('hyphen-text') // returns 'hyphenText' - * const convertedStr4 = camelCase('HTTPRequest') // returns 'httpRequest' - * const convertedStr5 = camelCase('Keep unicode 😅') // returns 'keepUnicode😅' - */ -declare function camelCase(str: string): string; - -export { camelCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/camelCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/camelCase.js deleted file mode 100644 index 18e6824..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/camelCase.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const capitalize = require('./capitalize.js'); -const words = require('./words.js'); - -function camelCase(str) { - const words$1 = words.words(str); - if (words$1.length === 0) { - return ''; - } - const [first, ...rest] = words$1; - return `${first.toLowerCase()}${rest.map(word => capitalize.capitalize(word)).join('')}`; -} - -exports.camelCase = camelCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/camelCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/camelCase.mjs deleted file mode 100644 index 2c2b64c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/camelCase.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import { capitalize } from './capitalize.mjs'; -import { words } from './words.mjs'; - -function camelCase(str) { - const words$1 = words(str); - if (words$1.length === 0) { - return ''; - } - const [first, ...rest] = words$1; - return `${first.toLowerCase()}${rest.map(word => capitalize(word)).join('')}`; -} - -export { camelCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/capitalize.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/capitalize.d.mts deleted file mode 100644 index 0f2b406..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/capitalize.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Converts the first character of string to upper case and the remaining to lower case. - * - * @template T - Literal type of the string. - * @param {T} str - The string to be converted to uppercase. - * @returns {Capitalize} - The capitalized string. - * - * @example - * const result = capitalize('fred') // returns 'Fred' - * const result2 = capitalize('FRED') // returns 'Fred' - */ -declare function capitalize(str: T): Capitalize; -type Capitalize = T extends `${infer F}${infer R}` ? `${Uppercase}${Lowercase}` : T; - -export { capitalize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/capitalize.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/capitalize.d.ts deleted file mode 100644 index 0f2b406..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/capitalize.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Converts the first character of string to upper case and the remaining to lower case. - * - * @template T - Literal type of the string. - * @param {T} str - The string to be converted to uppercase. - * @returns {Capitalize} - The capitalized string. - * - * @example - * const result = capitalize('fred') // returns 'Fred' - * const result2 = capitalize('FRED') // returns 'Fred' - */ -declare function capitalize(str: T): Capitalize; -type Capitalize = T extends `${infer F}${infer R}` ? `${Uppercase}${Lowercase}` : T; - -export { capitalize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/capitalize.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/capitalize.js deleted file mode 100644 index 3c511f7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/capitalize.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()); -} - -exports.capitalize = capitalize; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/capitalize.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/capitalize.mjs deleted file mode 100644 index 573a6c7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/capitalize.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()); -} - -export { capitalize }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/constantCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/constantCase.d.mts deleted file mode 100644 index 169bf69..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/constantCase.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to constant case. - * - * Constant case is a naming convention where each word is written in uppercase letters and separated by an underscore (`_`). For example, `CONSTANT_CASE`. - * - * @param {string} str - The string that is to be changed to constant case. - * @returns {string} - The converted string to constant case. - * - * @example - * const convertedStr1 = constantCase('camelCase') // returns 'CAMEL_CASE' - * const convertedStr2 = constantCase('some whitespace') // returns 'SOME_WHITESPACE' - * const convertedStr3 = constantCase('hyphen-text') // returns 'HYPHEN_TEXT' - * const convertedStr4 = constantCase('HTTPRequest') // returns 'HTTP_REQUEST' - */ -declare function constantCase(str: string): string; - -export { constantCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/constantCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/constantCase.d.ts deleted file mode 100644 index 169bf69..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/constantCase.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to constant case. - * - * Constant case is a naming convention where each word is written in uppercase letters and separated by an underscore (`_`). For example, `CONSTANT_CASE`. - * - * @param {string} str - The string that is to be changed to constant case. - * @returns {string} - The converted string to constant case. - * - * @example - * const convertedStr1 = constantCase('camelCase') // returns 'CAMEL_CASE' - * const convertedStr2 = constantCase('some whitespace') // returns 'SOME_WHITESPACE' - * const convertedStr3 = constantCase('hyphen-text') // returns 'HYPHEN_TEXT' - * const convertedStr4 = constantCase('HTTPRequest') // returns 'HTTP_REQUEST' - */ -declare function constantCase(str: string): string; - -export { constantCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/constantCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/constantCase.js deleted file mode 100644 index 0df5c4c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/constantCase.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const words = require('./words.js'); - -function constantCase(str) { - const words$1 = words.words(str); - return words$1.map(word => word.toUpperCase()).join('_'); -} - -exports.constantCase = constantCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/constantCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/constantCase.mjs deleted file mode 100644 index 5fdfa14..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/constantCase.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { words } from './words.mjs'; - -function constantCase(str) { - const words$1 = words(str); - return words$1.map(word => word.toUpperCase()).join('_'); -} - -export { constantCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/deburr.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/deburr.d.mts deleted file mode 100644 index 32669bf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/deburr.d.mts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Converts a string by replacing special characters and diacritical marks with their ASCII equivalents. - * For example, "Crème brûlée" becomes "Creme brulee". - * - * @param {string} str - The input string to be deburred. - * @returns {string} - The deburred string with special characters replaced by their ASCII equivalents. - * - * @example - * // Basic usage: - * deburr('Æthelred') // returns 'Aethelred' - * - * @example - * // Handling diacritical marks: - * deburr('München') // returns 'Munchen' - * - * @example - * // Special characters: - * deburr('Crème brûlée') // returns 'Creme brulee' - */ -declare function deburr(str: string): string; - -export { deburr }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/deburr.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/deburr.d.ts deleted file mode 100644 index 32669bf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/deburr.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Converts a string by replacing special characters and diacritical marks with their ASCII equivalents. - * For example, "Crème brûlée" becomes "Creme brulee". - * - * @param {string} str - The input string to be deburred. - * @returns {string} - The deburred string with special characters replaced by their ASCII equivalents. - * - * @example - * // Basic usage: - * deburr('Æthelred') // returns 'Aethelred' - * - * @example - * // Handling diacritical marks: - * deburr('München') // returns 'Munchen' - * - * @example - * // Special characters: - * deburr('Crème brûlée') // returns 'Creme brulee' - */ -declare function deburr(str: string): string; - -export { deburr }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/deburr.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/deburr.js deleted file mode 100644 index 7ac8bb0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/deburr.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const deburrMap = new Map([ - ['Æ', 'Ae'], - ['Ð', 'D'], - ['Ø', 'O'], - ['Þ', 'Th'], - ['ß', 'ss'], - ['æ', 'ae'], - ['ð', 'd'], - ['ø', 'o'], - ['þ', 'th'], - ['Đ', 'D'], - ['đ', 'd'], - ['Ħ', 'H'], - ['ħ', 'h'], - ['ı', 'i'], - ['IJ', 'IJ'], - ['ij', 'ij'], - ['ĸ', 'k'], - ['Ŀ', 'L'], - ['ŀ', 'l'], - ['Ł', 'L'], - ['ł', 'l'], - ['ʼn', "'n"], - ['Ŋ', 'N'], - ['ŋ', 'n'], - ['Œ', 'Oe'], - ['œ', 'oe'], - ['Ŧ', 'T'], - ['ŧ', 't'], - ['ſ', 's'], -]); -function deburr(str) { - str = str.normalize('NFD'); - let result = ''; - for (let i = 0; i < str.length; i++) { - const char = str[i]; - if ((char >= '\u0300' && char <= '\u036f') || (char >= '\ufe20' && char <= '\ufe23')) { - continue; - } - result += deburrMap.get(char) ?? char; - } - return result; -} - -exports.deburr = deburr; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/deburr.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/deburr.mjs deleted file mode 100644 index 891359d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/deburr.mjs +++ /dev/null @@ -1,45 +0,0 @@ -const deburrMap = new Map([ - ['Æ', 'Ae'], - ['Ð', 'D'], - ['Ø', 'O'], - ['Þ', 'Th'], - ['ß', 'ss'], - ['æ', 'ae'], - ['ð', 'd'], - ['ø', 'o'], - ['þ', 'th'], - ['Đ', 'D'], - ['đ', 'd'], - ['Ħ', 'H'], - ['ħ', 'h'], - ['ı', 'i'], - ['IJ', 'IJ'], - ['ij', 'ij'], - ['ĸ', 'k'], - ['Ŀ', 'L'], - ['ŀ', 'l'], - ['Ł', 'L'], - ['ł', 'l'], - ['ʼn', "'n"], - ['Ŋ', 'N'], - ['ŋ', 'n'], - ['Œ', 'Oe'], - ['œ', 'oe'], - ['Ŧ', 'T'], - ['ŧ', 't'], - ['ſ', 's'], -]); -function deburr(str) { - str = str.normalize('NFD'); - let result = ''; - for (let i = 0; i < str.length; i++) { - const char = str[i]; - if ((char >= '\u0300' && char <= '\u036f') || (char >= '\ufe20' && char <= '\ufe23')) { - continue; - } - result += deburrMap.get(char) ?? char; - } - return result; -} - -export { deburr }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/escape.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/escape.d.mts deleted file mode 100644 index 67c3515..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/escape.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts the characters "&", "<", ">", '"', and "'" in `str` to their corresponding HTML entities. - * For example, "<" becomes "<". - * - * @param {string} str The string to escape. - * @returns {string} Returns the escaped string. - * - * @example - * escape('This is a
element.'); // returns 'This is a <div> element.' - * escape('This is a "quote"'); // returns 'This is a "quote"' - * escape("This is a 'quote'"); // returns 'This is a 'quote'' - * escape('This is a & symbol'); // returns 'This is a & symbol' - */ -declare function escape(str: string): string; - -export { escape }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/escape.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/escape.d.ts deleted file mode 100644 index 67c3515..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/escape.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts the characters "&", "<", ">", '"', and "'" in `str` to their corresponding HTML entities. - * For example, "<" becomes "<". - * - * @param {string} str The string to escape. - * @returns {string} Returns the escaped string. - * - * @example - * escape('This is a
element.'); // returns 'This is a <div> element.' - * escape('This is a "quote"'); // returns 'This is a "quote"' - * escape("This is a 'quote'"); // returns 'This is a 'quote'' - * escape('This is a & symbol'); // returns 'This is a & symbol' - */ -declare function escape(str: string): string; - -export { escape }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/escape.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/escape.js deleted file mode 100644 index c0bf018..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/escape.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', -}; -function escape(str) { - return str.replace(/[&<>"']/g, match => htmlEscapes[match]); -} - -exports.escape = escape; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/escape.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/escape.mjs deleted file mode 100644 index 730c332..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/escape.mjs +++ /dev/null @@ -1,12 +0,0 @@ -const htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', -}; -function escape(str) { - return str.replace(/[&<>"']/g, match => htmlEscapes[match]); -} - -export { escape }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/escapeRegExp.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/escapeRegExp.d.mts deleted file mode 100644 index f9eba6b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/escapeRegExp.d.mts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Escapes the RegExp special characters "^", "$", "\\", ".", "*", "+", "?", "(", ")", "[", "]", "{", "}", and "|" in `str`. - * - * @param {string} str The string to escape. - * @returns {string} Returns the escaped string. - * - * @example - * import { escapeRegExp } from 'es-toolkit/string'; - * - * escapeRegExp('[es-toolkit](https://es-toolkit.dev/)'); // returns '\[es-toolkit\]\(https://es-toolkit\.dev/\)' - */ -declare function escapeRegExp(str: string): string; - -export { escapeRegExp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/escapeRegExp.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/escapeRegExp.d.ts deleted file mode 100644 index f9eba6b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/escapeRegExp.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Escapes the RegExp special characters "^", "$", "\\", ".", "*", "+", "?", "(", ")", "[", "]", "{", "}", and "|" in `str`. - * - * @param {string} str The string to escape. - * @returns {string} Returns the escaped string. - * - * @example - * import { escapeRegExp } from 'es-toolkit/string'; - * - * escapeRegExp('[es-toolkit](https://es-toolkit.dev/)'); // returns '\[es-toolkit\]\(https://es-toolkit\.dev/\)' - */ -declare function escapeRegExp(str: string): string; - -export { escapeRegExp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/escapeRegExp.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/escapeRegExp.js deleted file mode 100644 index ba37585..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/escapeRegExp.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function escapeRegExp(str) { - return str.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&'); -} - -exports.escapeRegExp = escapeRegExp; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/escapeRegExp.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/escapeRegExp.mjs deleted file mode 100644 index 5ddd8c8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/escapeRegExp.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function escapeRegExp(str) { - return str.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&'); -} - -export { escapeRegExp }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/index.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/index.d.mts deleted file mode 100644 index 76fe381..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/index.d.mts +++ /dev/null @@ -1,21 +0,0 @@ -export { camelCase } from './camelCase.mjs'; -export { capitalize } from './capitalize.mjs'; -export { constantCase } from './constantCase.mjs'; -export { deburr } from './deburr.mjs'; -export { escape } from './escape.mjs'; -export { escapeRegExp } from './escapeRegExp.mjs'; -export { kebabCase } from './kebabCase.mjs'; -export { lowerCase } from './lowerCase.mjs'; -export { lowerFirst } from './lowerFirst.mjs'; -export { pad } from './pad.mjs'; -export { pascalCase } from './pascalCase.mjs'; -export { reverseString } from './reverseString.mjs'; -export { snakeCase } from './snakeCase.mjs'; -export { startCase } from './startCase.mjs'; -export { trim } from './trim.mjs'; -export { trimEnd } from './trimEnd.mjs'; -export { trimStart } from './trimStart.mjs'; -export { unescape } from './unescape.mjs'; -export { upperCase } from './upperCase.mjs'; -export { upperFirst } from './upperFirst.mjs'; -export { words } from './words.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/index.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/index.d.ts deleted file mode 100644 index 23efd01..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/index.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -export { camelCase } from './camelCase.js'; -export { capitalize } from './capitalize.js'; -export { constantCase } from './constantCase.js'; -export { deburr } from './deburr.js'; -export { escape } from './escape.js'; -export { escapeRegExp } from './escapeRegExp.js'; -export { kebabCase } from './kebabCase.js'; -export { lowerCase } from './lowerCase.js'; -export { lowerFirst } from './lowerFirst.js'; -export { pad } from './pad.js'; -export { pascalCase } from './pascalCase.js'; -export { reverseString } from './reverseString.js'; -export { snakeCase } from './snakeCase.js'; -export { startCase } from './startCase.js'; -export { trim } from './trim.js'; -export { trimEnd } from './trimEnd.js'; -export { trimStart } from './trimStart.js'; -export { unescape } from './unescape.js'; -export { upperCase } from './upperCase.js'; -export { upperFirst } from './upperFirst.js'; -export { words } from './words.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/index.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/index.js deleted file mode 100644 index 6d8b5fc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/index.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const camelCase = require('./camelCase.js'); -const capitalize = require('./capitalize.js'); -const constantCase = require('./constantCase.js'); -const deburr = require('./deburr.js'); -const escape = require('./escape.js'); -const escapeRegExp = require('./escapeRegExp.js'); -const kebabCase = require('./kebabCase.js'); -const lowerCase = require('./lowerCase.js'); -const lowerFirst = require('./lowerFirst.js'); -const pad = require('./pad.js'); -const pascalCase = require('./pascalCase.js'); -const reverseString = require('./reverseString.js'); -const snakeCase = require('./snakeCase.js'); -const startCase = require('./startCase.js'); -const trim = require('./trim.js'); -const trimEnd = require('./trimEnd.js'); -const trimStart = require('./trimStart.js'); -const unescape = require('./unescape.js'); -const upperCase = require('./upperCase.js'); -const upperFirst = require('./upperFirst.js'); -const words = require('./words.js'); - - - -exports.camelCase = camelCase.camelCase; -exports.capitalize = capitalize.capitalize; -exports.constantCase = constantCase.constantCase; -exports.deburr = deburr.deburr; -exports.escape = escape.escape; -exports.escapeRegExp = escapeRegExp.escapeRegExp; -exports.kebabCase = kebabCase.kebabCase; -exports.lowerCase = lowerCase.lowerCase; -exports.lowerFirst = lowerFirst.lowerFirst; -exports.pad = pad.pad; -exports.pascalCase = pascalCase.pascalCase; -exports.reverseString = reverseString.reverseString; -exports.snakeCase = snakeCase.snakeCase; -exports.startCase = startCase.startCase; -exports.trim = trim.trim; -exports.trimEnd = trimEnd.trimEnd; -exports.trimStart = trimStart.trimStart; -exports.unescape = unescape.unescape; -exports.upperCase = upperCase.upperCase; -exports.upperFirst = upperFirst.upperFirst; -exports.words = words.words; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/index.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/index.mjs deleted file mode 100644 index 76fe381..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/index.mjs +++ /dev/null @@ -1,21 +0,0 @@ -export { camelCase } from './camelCase.mjs'; -export { capitalize } from './capitalize.mjs'; -export { constantCase } from './constantCase.mjs'; -export { deburr } from './deburr.mjs'; -export { escape } from './escape.mjs'; -export { escapeRegExp } from './escapeRegExp.mjs'; -export { kebabCase } from './kebabCase.mjs'; -export { lowerCase } from './lowerCase.mjs'; -export { lowerFirst } from './lowerFirst.mjs'; -export { pad } from './pad.mjs'; -export { pascalCase } from './pascalCase.mjs'; -export { reverseString } from './reverseString.mjs'; -export { snakeCase } from './snakeCase.mjs'; -export { startCase } from './startCase.mjs'; -export { trim } from './trim.mjs'; -export { trimEnd } from './trimEnd.mjs'; -export { trimStart } from './trimStart.mjs'; -export { unescape } from './unescape.mjs'; -export { upperCase } from './upperCase.mjs'; -export { upperFirst } from './upperFirst.mjs'; -export { words } from './words.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/kebabCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/kebabCase.d.mts deleted file mode 100644 index 471716d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/kebabCase.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to kebab case. - * - * Kebab case is the naming convention in which each word is written in lowercase and separated by a dash (-) character. - * - * @param {string} str - The string that is to be changed to kebab case. - * @returns {string} - The converted string to kebab case. - * - * @example - * const convertedStr1 = kebabCase('camelCase') // returns 'camel-case' - * const convertedStr2 = kebabCase('some whitespace') // returns 'some-whitespace' - * const convertedStr3 = kebabCase('hyphen-text') // returns 'hyphen-text' - * const convertedStr4 = kebabCase('HTTPRequest') // returns 'http-request' - */ -declare function kebabCase(str: string): string; - -export { kebabCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/kebabCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/kebabCase.d.ts deleted file mode 100644 index 471716d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/kebabCase.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to kebab case. - * - * Kebab case is the naming convention in which each word is written in lowercase and separated by a dash (-) character. - * - * @param {string} str - The string that is to be changed to kebab case. - * @returns {string} - The converted string to kebab case. - * - * @example - * const convertedStr1 = kebabCase('camelCase') // returns 'camel-case' - * const convertedStr2 = kebabCase('some whitespace') // returns 'some-whitespace' - * const convertedStr3 = kebabCase('hyphen-text') // returns 'hyphen-text' - * const convertedStr4 = kebabCase('HTTPRequest') // returns 'http-request' - */ -declare function kebabCase(str: string): string; - -export { kebabCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/kebabCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/kebabCase.js deleted file mode 100644 index 1d44a3d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/kebabCase.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const words = require('./words.js'); - -function kebabCase(str) { - const words$1 = words.words(str); - return words$1.map(word => word.toLowerCase()).join('-'); -} - -exports.kebabCase = kebabCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/kebabCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/kebabCase.mjs deleted file mode 100644 index 05bb1ce..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/kebabCase.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { words } from './words.mjs'; - -function kebabCase(str) { - const words$1 = words(str); - return words$1.map(word => word.toLowerCase()).join('-'); -} - -export { kebabCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerCase.d.mts deleted file mode 100644 index c8f18d0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerCase.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to lower case. - * - * Lower case is the naming convention in which each word is written in lowercase and separated by an space ( ) character. - * - * @param {string} str - The string that is to be changed to lower case. - * @returns {string} - The converted string to lower case. - * - * @example - * const convertedStr1 = lowerCase('camelCase') // returns 'camel case' - * const convertedStr2 = lowerCase('some whitespace') // returns 'some whitespace' - * const convertedStr3 = lowerCase('hyphen-text') // returns 'hyphen text' - * const convertedStr4 = lowerCase('HTTPRequest') // returns 'http request' - */ -declare function lowerCase(str: string): string; - -export { lowerCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerCase.d.ts deleted file mode 100644 index c8f18d0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerCase.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to lower case. - * - * Lower case is the naming convention in which each word is written in lowercase and separated by an space ( ) character. - * - * @param {string} str - The string that is to be changed to lower case. - * @returns {string} - The converted string to lower case. - * - * @example - * const convertedStr1 = lowerCase('camelCase') // returns 'camel case' - * const convertedStr2 = lowerCase('some whitespace') // returns 'some whitespace' - * const convertedStr3 = lowerCase('hyphen-text') // returns 'hyphen text' - * const convertedStr4 = lowerCase('HTTPRequest') // returns 'http request' - */ -declare function lowerCase(str: string): string; - -export { lowerCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerCase.js deleted file mode 100644 index 5ed3e7b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerCase.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const words = require('./words.js'); - -function lowerCase(str) { - const words$1 = words.words(str); - return words$1.map(word => word.toLowerCase()).join(' '); -} - -exports.lowerCase = lowerCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerCase.mjs deleted file mode 100644 index 738274f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerCase.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { words } from './words.mjs'; - -function lowerCase(str) { - const words$1 = words(str); - return words$1.map(word => word.toLowerCase()).join(' '); -} - -export { lowerCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerFirst.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerFirst.d.mts deleted file mode 100644 index f9cf712..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerFirst.d.mts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Converts the first character of string to lower case. - * - * @param {string} str - The string that is to be changed - * @returns {string} - The converted string. - * - * @example - * const convertedStr1 = lowerCase('fred') // returns 'fred' - * const convertedStr2 = lowerCase('Fred') // returns 'fred' - * const convertedStr3 = lowerCase('FRED') // returns 'fRED' - */ -declare function lowerFirst(str: string): string; - -export { lowerFirst }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerFirst.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerFirst.d.ts deleted file mode 100644 index f9cf712..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerFirst.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Converts the first character of string to lower case. - * - * @param {string} str - The string that is to be changed - * @returns {string} - The converted string. - * - * @example - * const convertedStr1 = lowerCase('fred') // returns 'fred' - * const convertedStr2 = lowerCase('Fred') // returns 'fred' - * const convertedStr3 = lowerCase('FRED') // returns 'fRED' - */ -declare function lowerFirst(str: string): string; - -export { lowerFirst }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerFirst.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerFirst.js deleted file mode 100644 index f2c3d66..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerFirst.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function lowerFirst(str) { - return str.substring(0, 1).toLowerCase() + str.substring(1); -} - -exports.lowerFirst = lowerFirst; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerFirst.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerFirst.mjs deleted file mode 100644 index 08fbf43..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/lowerFirst.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function lowerFirst(str) { - return str.substring(0, 1).toLowerCase() + str.substring(1); -} - -export { lowerFirst }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/pad.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/pad.d.mts deleted file mode 100644 index 9fd4281..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/pad.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Pads string on the left and right sides if it's shorter than length. Padding characters are truncated if they can't be evenly divided by length. - * If the length is less than or equal to the original string's length, or if the padding character is an empty string, the original string is returned unchanged. - * - * @param {string} str - The string to pad. - * @param {number} [length] - The length of the resulting string once padded. - * @param {string} [chars] - The character(s) to use for padding. - * @returns {string} - The padded string, or the original string if padding is not required. - * - * @example - * const result1 = pad('abc', 8); // result will be ' abc ' - * const result2 = pad('abc', 8, '_-'); // result will be '_-abc_-_' - * const result3 = pad('abc', 3); // result will be 'abc' - * const result4 = pad('abc', 2); // result will be 'abc' - * - */ -declare function pad(str: string, length: number, chars?: string): string; - -export { pad }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/pad.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/pad.d.ts deleted file mode 100644 index 9fd4281..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/pad.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Pads string on the left and right sides if it's shorter than length. Padding characters are truncated if they can't be evenly divided by length. - * If the length is less than or equal to the original string's length, or if the padding character is an empty string, the original string is returned unchanged. - * - * @param {string} str - The string to pad. - * @param {number} [length] - The length of the resulting string once padded. - * @param {string} [chars] - The character(s) to use for padding. - * @returns {string} - The padded string, or the original string if padding is not required. - * - * @example - * const result1 = pad('abc', 8); // result will be ' abc ' - * const result2 = pad('abc', 8, '_-'); // result will be '_-abc_-_' - * const result3 = pad('abc', 3); // result will be 'abc' - * const result4 = pad('abc', 2); // result will be 'abc' - * - */ -declare function pad(str: string, length: number, chars?: string): string; - -export { pad }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/pad.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/pad.js deleted file mode 100644 index 9e97ad0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/pad.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function pad(str, length, chars = ' ') { - return str.padStart(Math.floor((length - str.length) / 2) + str.length, chars).padEnd(length, chars); -} - -exports.pad = pad; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/pad.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/pad.mjs deleted file mode 100644 index 02188eb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/pad.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function pad(str, length, chars = ' ') { - return str.padStart(Math.floor((length - str.length) / 2) + str.length, chars).padEnd(length, chars); -} - -export { pad }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/pascalCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/pascalCase.d.mts deleted file mode 100644 index fc90606..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/pascalCase.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to Pascal case. - * - * Pascal case is the naming convention in which each word is capitalized and concatenated without any separator characters. - * - * @param {string} str - The string that is to be changed to pascal case. - * @returns {string} - The converted string to Pascal case. - * - * @example - * const convertedStr1 = pascalCase('pascalCase') // returns 'PascalCase' - * const convertedStr2 = pascalCase('some whitespace') // returns 'SomeWhitespace' - * const convertedStr3 = pascalCase('hyphen-text') // returns 'HyphenText' - * const convertedStr4 = pascalCase('HTTPRequest') // returns 'HttpRequest' - */ -declare function pascalCase(str: string): string; - -export { pascalCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/pascalCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/pascalCase.d.ts deleted file mode 100644 index fc90606..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/pascalCase.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to Pascal case. - * - * Pascal case is the naming convention in which each word is capitalized and concatenated without any separator characters. - * - * @param {string} str - The string that is to be changed to pascal case. - * @returns {string} - The converted string to Pascal case. - * - * @example - * const convertedStr1 = pascalCase('pascalCase') // returns 'PascalCase' - * const convertedStr2 = pascalCase('some whitespace') // returns 'SomeWhitespace' - * const convertedStr3 = pascalCase('hyphen-text') // returns 'HyphenText' - * const convertedStr4 = pascalCase('HTTPRequest') // returns 'HttpRequest' - */ -declare function pascalCase(str: string): string; - -export { pascalCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/pascalCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/pascalCase.js deleted file mode 100644 index 2ae3b93..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/pascalCase.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const capitalize = require('./capitalize.js'); -const words = require('./words.js'); - -function pascalCase(str) { - const words$1 = words.words(str); - return words$1.map(word => capitalize.capitalize(word)).join(''); -} - -exports.pascalCase = pascalCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/pascalCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/pascalCase.mjs deleted file mode 100644 index 02cf590..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/pascalCase.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { capitalize } from './capitalize.mjs'; -import { words } from './words.mjs'; - -function pascalCase(str) { - const words$1 = words(str); - return words$1.map(word => capitalize(word)).join(''); -} - -export { pascalCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/reverseString.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/reverseString.d.mts deleted file mode 100644 index e082150..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/reverseString.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Reverses a given string. - * - * This function takes a string as input and returns a new string that is the reverse of the input. - * - * @param {string} value - The string that is to be reversed. - * @returns {string} - The reversed string. - * - * @example - * const reversedStr1 = reverseString('hello') // returns 'olleh' - * const reversedStr2 = reverseString('PascalCase') // returns 'esaClacsaP' - * const reversedStr3 = reverseString('foo 😄 bar') // returns 'rab 😄 oof' - */ -declare function reverseString(value: string): string; - -export { reverseString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/reverseString.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/reverseString.d.ts deleted file mode 100644 index e082150..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/reverseString.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Reverses a given string. - * - * This function takes a string as input and returns a new string that is the reverse of the input. - * - * @param {string} value - The string that is to be reversed. - * @returns {string} - The reversed string. - * - * @example - * const reversedStr1 = reverseString('hello') // returns 'olleh' - * const reversedStr2 = reverseString('PascalCase') // returns 'esaClacsaP' - * const reversedStr3 = reverseString('foo 😄 bar') // returns 'rab 😄 oof' - */ -declare function reverseString(value: string): string; - -export { reverseString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/reverseString.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/reverseString.js deleted file mode 100644 index 156a721..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/reverseString.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function reverseString(value) { - return [...value].reverse().join(''); -} - -exports.reverseString = reverseString; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/reverseString.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/reverseString.mjs deleted file mode 100644 index db347cf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/reverseString.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function reverseString(value) { - return [...value].reverse().join(''); -} - -export { reverseString }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/snakeCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/snakeCase.d.mts deleted file mode 100644 index d921ad8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/snakeCase.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to snake case. - * - * Snake case is the naming convention in which each word is written in lowercase and separated by an underscore (_) character. - * - * @param {string} str - The string that is to be changed to snake case. - * @returns {string} - The converted string to snake case. - * - * @example - * const convertedStr1 = snakeCase('camelCase') // returns 'camel_case' - * const convertedStr2 = snakeCase('some whitespace') // returns 'some_whitespace' - * const convertedStr3 = snakeCase('hyphen-text') // returns 'hyphen_text' - * const convertedStr4 = snakeCase('HTTPRequest') // returns 'http_request' - */ -declare function snakeCase(str: string): string; - -export { snakeCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/snakeCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/snakeCase.d.ts deleted file mode 100644 index d921ad8..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/snakeCase.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to snake case. - * - * Snake case is the naming convention in which each word is written in lowercase and separated by an underscore (_) character. - * - * @param {string} str - The string that is to be changed to snake case. - * @returns {string} - The converted string to snake case. - * - * @example - * const convertedStr1 = snakeCase('camelCase') // returns 'camel_case' - * const convertedStr2 = snakeCase('some whitespace') // returns 'some_whitespace' - * const convertedStr3 = snakeCase('hyphen-text') // returns 'hyphen_text' - * const convertedStr4 = snakeCase('HTTPRequest') // returns 'http_request' - */ -declare function snakeCase(str: string): string; - -export { snakeCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/snakeCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/snakeCase.js deleted file mode 100644 index 20ff283..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/snakeCase.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const words = require('./words.js'); - -function snakeCase(str) { - const words$1 = words.words(str); - return words$1.map(word => word.toLowerCase()).join('_'); -} - -exports.snakeCase = snakeCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/snakeCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/snakeCase.mjs deleted file mode 100644 index a06b6ae..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/snakeCase.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { words } from './words.mjs'; - -function snakeCase(str) { - const words$1 = words(str); - return words$1.map(word => word.toLowerCase()).join('_'); -} - -export { snakeCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/startCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/startCase.d.mts deleted file mode 100644 index 106a965..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/startCase.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts the first character of each word in a string to uppercase and the remaining characters to lowercase. - * - * Start case is the naming convention in which each word is written with an initial capital letter. - * @param {string} str - The string to convert. - * @returns {string} The converted string. - * - * @example - * const result1 = startCase('hello world'); // result will be 'Hello World' - * const result2 = startCase('HELLO WORLD'); // result will be 'Hello World' - * const result3 = startCase('hello-world'); // result will be 'Hello World' - * const result4 = startCase('hello_world'); // result will be 'Hello World' - */ -declare function startCase(str: string): string; - -export { startCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/startCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/startCase.d.ts deleted file mode 100644 index 106a965..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/startCase.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts the first character of each word in a string to uppercase and the remaining characters to lowercase. - * - * Start case is the naming convention in which each word is written with an initial capital letter. - * @param {string} str - The string to convert. - * @returns {string} The converted string. - * - * @example - * const result1 = startCase('hello world'); // result will be 'Hello World' - * const result2 = startCase('HELLO WORLD'); // result will be 'Hello World' - * const result3 = startCase('hello-world'); // result will be 'Hello World' - * const result4 = startCase('hello_world'); // result will be 'Hello World' - */ -declare function startCase(str: string): string; - -export { startCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/startCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/startCase.js deleted file mode 100644 index 2daac31..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/startCase.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const words = require('./words.js'); - -function startCase(str) { - const words$1 = words.words(str.trim()); - let result = ''; - for (let i = 0; i < words$1.length; i++) { - const word = words$1[i]; - if (result) { - result += ' '; - } - result += word[0].toUpperCase() + word.slice(1).toLowerCase(); - } - return result; -} - -exports.startCase = startCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/startCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/startCase.mjs deleted file mode 100644 index b360d9a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/startCase.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { words } from './words.mjs'; - -function startCase(str) { - const words$1 = words(str.trim()); - let result = ''; - for (let i = 0; i < words$1.length; i++) { - const word = words$1[i]; - if (result) { - result += ' '; - } - result += word[0].toUpperCase() + word.slice(1).toLowerCase(); - } - return result; -} - -export { startCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/trim.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/trim.d.mts deleted file mode 100644 index cb78e00..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/trim.d.mts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Removes leading and trailing whitespace or specified characters from a string. - * - * @param {string} str - The string from which characters will be trimmed. - * @param {string | string[]} chars - The character(s) to remove from the string. Can be a single character or an array of characters. - * @returns {string} - The resulting string after the specified characters have been removed. - * - * @example - * trim(" hello "); // "hello" - * trim("--hello--", "-"); // "hello" - * trim("##hello##", ["#", "o"]); // "hell" - */ -declare function trim(str: string, chars?: string | string[]): string; - -export { trim }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/trim.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/trim.d.ts deleted file mode 100644 index cb78e00..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/trim.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Removes leading and trailing whitespace or specified characters from a string. - * - * @param {string} str - The string from which characters will be trimmed. - * @param {string | string[]} chars - The character(s) to remove from the string. Can be a single character or an array of characters. - * @returns {string} - The resulting string after the specified characters have been removed. - * - * @example - * trim(" hello "); // "hello" - * trim("--hello--", "-"); // "hello" - * trim("##hello##", ["#", "o"]); // "hell" - */ -declare function trim(str: string, chars?: string | string[]): string; - -export { trim }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/trim.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/trim.js deleted file mode 100644 index 5a7686c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/trim.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const trimEnd = require('./trimEnd.js'); -const trimStart = require('./trimStart.js'); - -function trim(str, chars) { - if (chars === undefined) { - return str.trim(); - } - return trimStart.trimStart(trimEnd.trimEnd(str, chars), chars); -} - -exports.trim = trim; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/trim.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/trim.mjs deleted file mode 100644 index 293485c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/trim.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { trimEnd } from './trimEnd.mjs'; -import { trimStart } from './trimStart.mjs'; - -function trim(str, chars) { - if (chars === undefined) { - return str.trim(); - } - return trimStart(trimEnd(str, chars), chars); -} - -export { trim }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimEnd.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/trimEnd.d.mts deleted file mode 100644 index 688c763..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimEnd.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes trailing whitespace or specified characters from a string. - * - * If `chars` is a string, it should be a single character. To trim a string with multiple characters, - * provide an array instead. - * - * @param {string} str - The string from which trailing characters will be trimmed. - * @param {string | string[]} chars - The character(s) to remove from the end of the string. - * @returns {string} - The resulting string after the specified trailing character has been removed. - * - * @example - * const trimmedStr1 = trimEnd('hello---', '-') // returns 'hello' - * const trimmedStr2 = trimEnd('123000', '0') // returns '123' - * const trimmedStr3 = trimEnd('abcabcabc', 'c') // returns 'abcabcab' - * const trimmedStr4 = trimEnd('trimmedxxx', 'x') // returns 'trimmed' - */ -declare function trimEnd(str: string, chars?: string | string[]): string; - -export { trimEnd }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimEnd.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/trimEnd.d.ts deleted file mode 100644 index 688c763..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimEnd.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes trailing whitespace or specified characters from a string. - * - * If `chars` is a string, it should be a single character. To trim a string with multiple characters, - * provide an array instead. - * - * @param {string} str - The string from which trailing characters will be trimmed. - * @param {string | string[]} chars - The character(s) to remove from the end of the string. - * @returns {string} - The resulting string after the specified trailing character has been removed. - * - * @example - * const trimmedStr1 = trimEnd('hello---', '-') // returns 'hello' - * const trimmedStr2 = trimEnd('123000', '0') // returns '123' - * const trimmedStr3 = trimEnd('abcabcabc', 'c') // returns 'abcabcab' - * const trimmedStr4 = trimEnd('trimmedxxx', 'x') // returns 'trimmed' - */ -declare function trimEnd(str: string, chars?: string | string[]): string; - -export { trimEnd }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimEnd.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/trimEnd.js deleted file mode 100644 index 984ede4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimEnd.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function trimEnd(str, chars) { - if (chars === undefined) { - return str.trimEnd(); - } - let endIndex = str.length; - switch (typeof chars) { - case 'string': { - if (chars.length !== 1) { - throw new Error(`The 'chars' parameter should be a single character string.`); - } - while (endIndex > 0 && str[endIndex - 1] === chars) { - endIndex--; - } - break; - } - case 'object': { - while (endIndex > 0 && chars.includes(str[endIndex - 1])) { - endIndex--; - } - } - } - return str.substring(0, endIndex); -} - -exports.trimEnd = trimEnd; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimEnd.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/trimEnd.mjs deleted file mode 100644 index aaf6d1b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimEnd.mjs +++ /dev/null @@ -1,25 +0,0 @@ -function trimEnd(str, chars) { - if (chars === undefined) { - return str.trimEnd(); - } - let endIndex = str.length; - switch (typeof chars) { - case 'string': { - if (chars.length !== 1) { - throw new Error(`The 'chars' parameter should be a single character string.`); - } - while (endIndex > 0 && str[endIndex - 1] === chars) { - endIndex--; - } - break; - } - case 'object': { - while (endIndex > 0 && chars.includes(str[endIndex - 1])) { - endIndex--; - } - } - } - return str.substring(0, endIndex); -} - -export { trimEnd }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimStart.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/trimStart.d.mts deleted file mode 100644 index 9cb60af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimStart.d.mts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes leading whitespace or specified characters from a string. - * - * If `chars` is a string, it should be a single character. To trim a string with multiple characters, - * provide an array instead. - * - * @param {string} str - The string from which leading characters will be trimmed. - * @param {string | string[]} chars - The character(s) to remove from the start of the string. - * @returns {string} - The resulting string after the specified leading character has been removed. - * - * @example - * const trimmedStr1 = trimStart('---hello', '-') // returns 'hello' - * const trimmedStr2 = trimStart('000123', '0') // returns '123' - * const trimmedStr3 = trimStart('abcabcabc', 'a') // returns 'bcabcabc' - * const trimmedStr4 = trimStart('xxxtrimmed', 'x') // returns 'trimmed' - */ -declare function trimStart(str: string, chars?: string | string[]): string; - -export { trimStart }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimStart.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/trimStart.d.ts deleted file mode 100644 index 9cb60af..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimStart.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Removes leading whitespace or specified characters from a string. - * - * If `chars` is a string, it should be a single character. To trim a string with multiple characters, - * provide an array instead. - * - * @param {string} str - The string from which leading characters will be trimmed. - * @param {string | string[]} chars - The character(s) to remove from the start of the string. - * @returns {string} - The resulting string after the specified leading character has been removed. - * - * @example - * const trimmedStr1 = trimStart('---hello', '-') // returns 'hello' - * const trimmedStr2 = trimStart('000123', '0') // returns '123' - * const trimmedStr3 = trimStart('abcabcabc', 'a') // returns 'bcabcabc' - * const trimmedStr4 = trimStart('xxxtrimmed', 'x') // returns 'trimmed' - */ -declare function trimStart(str: string, chars?: string | string[]): string; - -export { trimStart }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimStart.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/trimStart.js deleted file mode 100644 index b80b16c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimStart.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function trimStart(str, chars) { - if (chars === undefined) { - return str.trimStart(); - } - let startIndex = 0; - switch (typeof chars) { - case 'string': { - while (startIndex < str.length && str[startIndex] === chars) { - startIndex++; - } - break; - } - case 'object': { - while (startIndex < str.length && chars.includes(str[startIndex])) { - startIndex++; - } - } - } - return str.substring(startIndex); -} - -exports.trimStart = trimStart; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimStart.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/trimStart.mjs deleted file mode 100644 index 1d03d39..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/trimStart.mjs +++ /dev/null @@ -1,22 +0,0 @@ -function trimStart(str, chars) { - if (chars === undefined) { - return str.trimStart(); - } - let startIndex = 0; - switch (typeof chars) { - case 'string': { - while (startIndex < str.length && str[startIndex] === chars) { - startIndex++; - } - break; - } - case 'object': { - while (startIndex < str.length && chars.includes(str[startIndex])) { - startIndex++; - } - } - } - return str.substring(startIndex); -} - -export { trimStart }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/unescape.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/unescape.d.mts deleted file mode 100644 index f92ee59..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/unescape.d.mts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts the HTML entities `&`, `<`, `>`, `"`, and `'` in `str` to their corresponding characters. - * It is the inverse of `escape`. - * - * @param {string} str The string to unescape. - * @returns {string} Returns the unescaped string. - * - * @example - * unescape('This is a <div> element.'); // returns 'This is a
element.' - * unescape('This is a "quote"'); // returns 'This is a "quote"' - * unescape('This is a 'quote''); // returns 'This is a 'quote'' - * unescape('This is a & symbol'); // returns 'This is a & symbol' - */ -declare function unescape(str: string): string; - -export { unescape }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/unescape.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/unescape.d.ts deleted file mode 100644 index f92ee59..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/unescape.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Converts the HTML entities `&`, `<`, `>`, `"`, and `'` in `str` to their corresponding characters. - * It is the inverse of `escape`. - * - * @param {string} str The string to unescape. - * @returns {string} Returns the unescaped string. - * - * @example - * unescape('This is a <div> element.'); // returns 'This is a
element.' - * unescape('This is a "quote"'); // returns 'This is a "quote"' - * unescape('This is a 'quote''); // returns 'This is a 'quote'' - * unescape('This is a & symbol'); // returns 'This is a & symbol' - */ -declare function unescape(str: string): string; - -export { unescape }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/unescape.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/unescape.js deleted file mode 100644 index 6bdb8ec..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/unescape.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const htmlUnescapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': "'", -}; -function unescape(str) { - return str.replace(/&(?:amp|lt|gt|quot|#(0+)?39);/g, match => htmlUnescapes[match] || "'"); -} - -exports.unescape = unescape; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/unescape.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/unescape.mjs deleted file mode 100644 index 11a6939..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/unescape.mjs +++ /dev/null @@ -1,12 +0,0 @@ -const htmlUnescapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': "'", -}; -function unescape(str) { - return str.replace(/&(?:amp|lt|gt|quot|#(0+)?39);/g, match => htmlUnescapes[match] || "'"); -} - -export { unescape }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperCase.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/upperCase.d.mts deleted file mode 100644 index 817cd8f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperCase.d.mts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to upper case. - * - * Upper case is the naming convention in which each word is written in uppercase and separated by an space ( ) character. - * - * @param {string} str - The string that is to be changed to upper case. - * @returns {string} - The converted string to upper case. - * - * @example - * const convertedStr1 = upperCase('camelCase') // returns 'CAMEL CASE' - * const convertedStr2 = upperCase('some whitespace') // returns 'SOME WHITESPACE' - * const convertedStr3 = upperCase('hyphen-text') // returns 'HYPHEN TEXT' - * const convertedStr4 = upperCase('HTTPRequest') // returns 'HTTP REQUEST' - */ -declare function upperCase(str: string): string; - -export { upperCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperCase.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/upperCase.d.ts deleted file mode 100644 index 817cd8f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperCase.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts a string to upper case. - * - * Upper case is the naming convention in which each word is written in uppercase and separated by an space ( ) character. - * - * @param {string} str - The string that is to be changed to upper case. - * @returns {string} - The converted string to upper case. - * - * @example - * const convertedStr1 = upperCase('camelCase') // returns 'CAMEL CASE' - * const convertedStr2 = upperCase('some whitespace') // returns 'SOME WHITESPACE' - * const convertedStr3 = upperCase('hyphen-text') // returns 'HYPHEN TEXT' - * const convertedStr4 = upperCase('HTTPRequest') // returns 'HTTP REQUEST' - */ -declare function upperCase(str: string): string; - -export { upperCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperCase.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/upperCase.js deleted file mode 100644 index 9840483..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperCase.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const words = require('./words.js'); - -function upperCase(str) { - const words$1 = words.words(str); - let result = ''; - for (let i = 0; i < words$1.length; i++) { - result += words$1[i].toUpperCase(); - if (i < words$1.length - 1) { - result += ' '; - } - } - return result; -} - -exports.upperCase = upperCase; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperCase.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/upperCase.mjs deleted file mode 100644 index 8141c3a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperCase.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import { words } from './words.mjs'; - -function upperCase(str) { - const words$1 = words(str); - let result = ''; - for (let i = 0; i < words$1.length; i++) { - result += words$1[i].toUpperCase(); - if (i < words$1.length - 1) { - result += ' '; - } - } - return result; -} - -export { upperCase }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperFirst.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/upperFirst.d.mts deleted file mode 100644 index 2e318cc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperFirst.d.mts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Converts the first character of string to upper case. - * - * @param {string} str - The string that is to be changed - * @returns {string} - The converted string. - * - * @example - * const convertedStr1 = upperFirst('fred') // returns 'Fred' - * const convertedStr2 = upperFirst('Fred') // returns 'Fred' - * const convertedStr3 = upperFirst('FRED') // returns 'FRED' - */ -declare function upperFirst(str: string): string; - -export { upperFirst }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperFirst.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/upperFirst.d.ts deleted file mode 100644 index 2e318cc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperFirst.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Converts the first character of string to upper case. - * - * @param {string} str - The string that is to be changed - * @returns {string} - The converted string. - * - * @example - * const convertedStr1 = upperFirst('fred') // returns 'Fred' - * const convertedStr2 = upperFirst('Fred') // returns 'Fred' - * const convertedStr3 = upperFirst('FRED') // returns 'FRED' - */ -declare function upperFirst(str: string): string; - -export { upperFirst }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperFirst.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/upperFirst.js deleted file mode 100644 index 1946540..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperFirst.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function upperFirst(str) { - return str.substring(0, 1).toUpperCase() + str.substring(1); -} - -exports.upperFirst = upperFirst; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperFirst.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/upperFirst.mjs deleted file mode 100644 index 3e58d4a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/upperFirst.mjs +++ /dev/null @@ -1,5 +0,0 @@ -function upperFirst(str) { - return str.substring(0, 1).toUpperCase() + str.substring(1); -} - -export { upperFirst }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/words.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/string/words.d.mts deleted file mode 100644 index 702cb5d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/words.d.mts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Splits `string` into an array of its words, treating spaces and punctuation marks as separators. - * - * @param {string} str The string to inspect. - * @param {RegExp | string} [pattern] The pattern to match words. - * @returns {string[]} Returns the words of `string`. - * - * @example - * words('fred, barney, & pebbles'); - * // => ['fred', 'barney', 'pebbles'] - * - * words('camelCaseHTTPRequest🚀'); - * // => ['camel', 'Case', 'HTTP', 'Request', '🚀'] - * - * words('Lunedì 18 Set') - * // => ['Lunedì', '18', 'Set'] - */ -declare function words(str: string): string[]; - -export { words }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/words.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/string/words.d.ts deleted file mode 100644 index 702cb5d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/words.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Splits `string` into an array of its words, treating spaces and punctuation marks as separators. - * - * @param {string} str The string to inspect. - * @param {RegExp | string} [pattern] The pattern to match words. - * @returns {string[]} Returns the words of `string`. - * - * @example - * words('fred, barney, & pebbles'); - * // => ['fred', 'barney', 'pebbles'] - * - * words('camelCaseHTTPRequest🚀'); - * // => ['camel', 'Case', 'HTTP', 'Request', '🚀'] - * - * words('Lunedì 18 Set') - * // => ['Lunedì', '18', 'Set'] - */ -declare function words(str: string): string[]; - -export { words }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/words.js b/sdks/nodejs/node_modules/es-toolkit/dist/string/words.js deleted file mode 100644 index 71520e7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/words.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const CASE_SPLIT_PATTERN = /\p{Lu}?\p{Ll}+|[0-9]+|\p{Lu}+(?!\p{Ll})|\p{Emoji_Presentation}|\p{Extended_Pictographic}|\p{L}+/gu; -function words(str) { - return Array.from(str.match(CASE_SPLIT_PATTERN) ?? []); -} - -exports.CASE_SPLIT_PATTERN = CASE_SPLIT_PATTERN; -exports.words = words; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/string/words.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/string/words.mjs deleted file mode 100644 index 6c837d7..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/string/words.mjs +++ /dev/null @@ -1,6 +0,0 @@ -const CASE_SPLIT_PATTERN = /\p{Lu}?\p{Ll}+|[0-9]+|\p{Lu}+(?!\p{Ll})|\p{Emoji_Presentation}|\p{Extended_Pictographic}|\p{L}+/gu; -function words(str) { - return Array.from(str.match(CASE_SPLIT_PATTERN) ?? []); -} - -export { CASE_SPLIT_PATTERN, words }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/attempt.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/util/attempt.d.mts deleted file mode 100644 index 6e3505c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/attempt.d.mts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Attempt to execute a function and return the result or error. - * Returns a tuple where: - * - On success: [null, Result] - First element is null, second is the result - * - On error: [Error, null] - First element is the caught error, second is null - * - * @template {unknown} T - The type of the result of the function. - * @template {unknown} E - The type of the error that can be thrown by the function. - * @param {() => T} func - The function to execute. - * @returns {[null, T] | [E, null]} A tuple containing either [null, result] or [error, null]. - * - * @example - * // Successful execution - * const [error, result] = attempt(() => 42); - * // [null, 42] - * - * // Failed execution - * const [error, result] = attempt(() => { - * throw new Error('Something went wrong'); - * }); - * // [Error, null] - * - * // With type parameter - * const [error, names] = attempt(() => ['Alice', 'Bob']); - * // [null, ['Alice', 'Bob']] - * - * @note - * Important: This function is not suitable for async functions (functions that return a `Promise`). - * When passing an async function, it will return `[null, Promise]`, but won't catch any - * errors if the Promise is rejected later. - * - * For handling async functions, use the `attemptAsync` function instead: - * ``` - * const [error, data] = await attemptAsync(async () => { - * const response = await fetch('https://api.example.com/data'); - * return response.json(); - * }); - * ``` - */ -declare function attempt(func: () => T): [null, T] | [E, null]; - -export { attempt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/attempt.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/util/attempt.d.ts deleted file mode 100644 index 6e3505c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/attempt.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Attempt to execute a function and return the result or error. - * Returns a tuple where: - * - On success: [null, Result] - First element is null, second is the result - * - On error: [Error, null] - First element is the caught error, second is null - * - * @template {unknown} T - The type of the result of the function. - * @template {unknown} E - The type of the error that can be thrown by the function. - * @param {() => T} func - The function to execute. - * @returns {[null, T] | [E, null]} A tuple containing either [null, result] or [error, null]. - * - * @example - * // Successful execution - * const [error, result] = attempt(() => 42); - * // [null, 42] - * - * // Failed execution - * const [error, result] = attempt(() => { - * throw new Error('Something went wrong'); - * }); - * // [Error, null] - * - * // With type parameter - * const [error, names] = attempt(() => ['Alice', 'Bob']); - * // [null, ['Alice', 'Bob']] - * - * @note - * Important: This function is not suitable for async functions (functions that return a `Promise`). - * When passing an async function, it will return `[null, Promise]`, but won't catch any - * errors if the Promise is rejected later. - * - * For handling async functions, use the `attemptAsync` function instead: - * ``` - * const [error, data] = await attemptAsync(async () => { - * const response = await fetch('https://api.example.com/data'); - * return response.json(); - * }); - * ``` - */ -declare function attempt(func: () => T): [null, T] | [E, null]; - -export { attempt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/attempt.js b/sdks/nodejs/node_modules/es-toolkit/dist/util/attempt.js deleted file mode 100644 index 82381f5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/attempt.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function attempt(func) { - try { - return [null, func()]; - } - catch (error) { - return [error, null]; - } -} - -exports.attempt = attempt; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/attempt.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/util/attempt.mjs deleted file mode 100644 index e13ab0c..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/attempt.mjs +++ /dev/null @@ -1,10 +0,0 @@ -function attempt(func) { - try { - return [null, func()]; - } - catch (error) { - return [error, null]; - } -} - -export { attempt }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/attemptAsync.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/util/attemptAsync.d.mts deleted file mode 100644 index a97d75a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/attemptAsync.d.mts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Attempt to execute an async function and return the result or error. - * Returns a Promise that resolves to a tuple where: - * - On success: [null, Result] - First element is null, second is the result - * - On error: [Error, null] - First element is the caught error, second is null - * - * @template {unknown} T - The type of the result of the async function. - * @template {unknown} E - The type of the error that can be thrown by the async function. - * @param {() => Promise} func - The async function to execute. - * @returns {Promise<[null, T] | [E, null]>} A Promise that resolves to a tuple containing either [null, result] or [error, null]. - * - * @example - * // Successful execution - * const [error, data] = await attemptAsync(async () => { - * const response = await fetch('https://api.example.com/data'); - * return response.json(); - * }); - * // If successful: [null, { ... data ... }] - * - * // Failed execution - * const [error, data] = await attemptAsync(async () => { - * throw new Error('Network error'); - * }); - * // [Error, null] - * - * // With type parameter - * const [error, users] = await attemptAsync(async () => { - * const response = await fetch('https://api.example.com/users'); - * return response.json(); - * }); - * // users is typed as User[] - */ -declare function attemptAsync(func: () => Promise): Promise<[null, T] | [E, null]>; - -export { attemptAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/attemptAsync.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/util/attemptAsync.d.ts deleted file mode 100644 index a97d75a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/attemptAsync.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Attempt to execute an async function and return the result or error. - * Returns a Promise that resolves to a tuple where: - * - On success: [null, Result] - First element is null, second is the result - * - On error: [Error, null] - First element is the caught error, second is null - * - * @template {unknown} T - The type of the result of the async function. - * @template {unknown} E - The type of the error that can be thrown by the async function. - * @param {() => Promise} func - The async function to execute. - * @returns {Promise<[null, T] | [E, null]>} A Promise that resolves to a tuple containing either [null, result] or [error, null]. - * - * @example - * // Successful execution - * const [error, data] = await attemptAsync(async () => { - * const response = await fetch('https://api.example.com/data'); - * return response.json(); - * }); - * // If successful: [null, { ... data ... }] - * - * // Failed execution - * const [error, data] = await attemptAsync(async () => { - * throw new Error('Network error'); - * }); - * // [Error, null] - * - * // With type parameter - * const [error, users] = await attemptAsync(async () => { - * const response = await fetch('https://api.example.com/users'); - * return response.json(); - * }); - * // users is typed as User[] - */ -declare function attemptAsync(func: () => Promise): Promise<[null, T] | [E, null]>; - -export { attemptAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/attemptAsync.js b/sdks/nodejs/node_modules/es-toolkit/dist/util/attemptAsync.js deleted file mode 100644 index 54b986d..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/attemptAsync.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -async function attemptAsync(func) { - try { - const result = await func(); - return [null, result]; - } - catch (error) { - return [error, null]; - } -} - -exports.attemptAsync = attemptAsync; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/attemptAsync.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/util/attemptAsync.mjs deleted file mode 100644 index 32fa5fc..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/attemptAsync.mjs +++ /dev/null @@ -1,11 +0,0 @@ -async function attemptAsync(func) { - try { - const result = await func(); - return [null, result]; - } - catch (error) { - return [error, null]; - } -} - -export { attemptAsync }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/index.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/util/index.d.mts deleted file mode 100644 index e58e269..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/index.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -export { attempt } from './attempt.mjs'; -export { attemptAsync } from './attemptAsync.mjs'; -export { invariant as assert, invariant } from './invariant.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/index.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/util/index.d.ts deleted file mode 100644 index 9a1d17a..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { attempt } from './attempt.js'; -export { attemptAsync } from './attemptAsync.js'; -export { invariant as assert, invariant } from './invariant.js'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/index.js b/sdks/nodejs/node_modules/es-toolkit/dist/util/index.js deleted file mode 100644 index 7136b33..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/index.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -const attempt = require('./attempt.js'); -const attemptAsync = require('./attemptAsync.js'); -const invariant = require('./invariant.js'); - - - -exports.attempt = attempt.attempt; -exports.attemptAsync = attemptAsync.attemptAsync; -exports.assert = invariant.invariant; -exports.invariant = invariant.invariant; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/index.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/util/index.mjs deleted file mode 100644 index e58e269..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/index.mjs +++ /dev/null @@ -1,3 +0,0 @@ -export { attempt } from './attempt.mjs'; -export { attemptAsync } from './attemptAsync.mjs'; -export { invariant as assert, invariant } from './invariant.mjs'; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/invariant.d.mts b/sdks/nodejs/node_modules/es-toolkit/dist/util/invariant.d.mts deleted file mode 100644 index 0554a87..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/invariant.d.mts +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Asserts that a given condition is true. If the condition is false, an error is thrown with the provided message. - * - * @param {unknown} condition - The condition to evaluate. - * @param {string} message - The error message to throw if the condition is false. - * @returns {void} Returns void if the condition is true. - * @throws {Error} Throws an error if the condition is false. - * - * @example - * // This call will succeed without any errors - * invariant(true, 'This should not throw'); - * - * // This call will fail and throw an error with the message 'This should throw' - * invariant(false, 'This should throw'); - */ -declare function invariant(condition: unknown, message: string): asserts condition; -/** - * Asserts that a given condition is true. If the condition is false, an error is thrown with the provided error. - * - * @param {unknown} condition - The condition to evaluate. - * @param {Error} error - The error to throw if the condition is false. - * @returns {void} Returns void if the condition is true. - * @throws {Error} Throws an error if the condition is false. - * - * @example - * // This call will succeed without any errors - * invariant(true, new Error('This should not throw')); - * - * class CustomError extends Error { - * constructor(message: string) { - * super(message); - * } - * } - * - * // This call will fail and throw an error with the message 'This should throw' - * invariant(false, new CustomError('This should throw')); - */ -declare function invariant(condition: unknown, error: Error): asserts condition; - -export { invariant }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/invariant.d.ts b/sdks/nodejs/node_modules/es-toolkit/dist/util/invariant.d.ts deleted file mode 100644 index 0554a87..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/invariant.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Asserts that a given condition is true. If the condition is false, an error is thrown with the provided message. - * - * @param {unknown} condition - The condition to evaluate. - * @param {string} message - The error message to throw if the condition is false. - * @returns {void} Returns void if the condition is true. - * @throws {Error} Throws an error if the condition is false. - * - * @example - * // This call will succeed without any errors - * invariant(true, 'This should not throw'); - * - * // This call will fail and throw an error with the message 'This should throw' - * invariant(false, 'This should throw'); - */ -declare function invariant(condition: unknown, message: string): asserts condition; -/** - * Asserts that a given condition is true. If the condition is false, an error is thrown with the provided error. - * - * @param {unknown} condition - The condition to evaluate. - * @param {Error} error - The error to throw if the condition is false. - * @returns {void} Returns void if the condition is true. - * @throws {Error} Throws an error if the condition is false. - * - * @example - * // This call will succeed without any errors - * invariant(true, new Error('This should not throw')); - * - * class CustomError extends Error { - * constructor(message: string) { - * super(message); - * } - * } - * - * // This call will fail and throw an error with the message 'This should throw' - * invariant(false, new CustomError('This should throw')); - */ -declare function invariant(condition: unknown, error: Error): asserts condition; - -export { invariant }; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/invariant.js b/sdks/nodejs/node_modules/es-toolkit/dist/util/invariant.js deleted file mode 100644 index edfece6..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/invariant.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); - -function invariant(condition, message) { - if (condition) { - return; - } - if (typeof message === 'string') { - throw new Error(message); - } - throw message; -} - -exports.invariant = invariant; diff --git a/sdks/nodejs/node_modules/es-toolkit/dist/util/invariant.mjs b/sdks/nodejs/node_modules/es-toolkit/dist/util/invariant.mjs deleted file mode 100644 index b4a5c61..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/dist/util/invariant.mjs +++ /dev/null @@ -1,11 +0,0 @@ -function invariant(condition, message) { - if (condition) { - return; - } - if (typeof message === 'string') { - throw new Error(message); - } - throw message; -} - -export { invariant }; diff --git a/sdks/nodejs/node_modules/es-toolkit/error.d.ts b/sdks/nodejs/node_modules/es-toolkit/error.d.ts deleted file mode 100644 index f7a1860..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/error.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/error'; diff --git a/sdks/nodejs/node_modules/es-toolkit/error.js b/sdks/nodejs/node_modules/es-toolkit/error.js deleted file mode 100644 index a062278..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/error.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/error'); diff --git a/sdks/nodejs/node_modules/es-toolkit/function.d.ts b/sdks/nodejs/node_modules/es-toolkit/function.d.ts deleted file mode 100644 index dcaa4f3..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/function.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/function'; diff --git a/sdks/nodejs/node_modules/es-toolkit/function.js b/sdks/nodejs/node_modules/es-toolkit/function.js deleted file mode 100644 index 0c83faa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/function.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/function'); diff --git a/sdks/nodejs/node_modules/es-toolkit/map.d.ts b/sdks/nodejs/node_modules/es-toolkit/map.d.ts deleted file mode 100644 index cb0f048..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/map.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/map'; diff --git a/sdks/nodejs/node_modules/es-toolkit/map.js b/sdks/nodejs/node_modules/es-toolkit/map.js deleted file mode 100644 index 48a47ff..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/map.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/map'); diff --git a/sdks/nodejs/node_modules/es-toolkit/math.d.ts b/sdks/nodejs/node_modules/es-toolkit/math.d.ts deleted file mode 100644 index ce522bf..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/math.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/math'; diff --git a/sdks/nodejs/node_modules/es-toolkit/math.js b/sdks/nodejs/node_modules/es-toolkit/math.js deleted file mode 100644 index c7098fa..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/math.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/math'); diff --git a/sdks/nodejs/node_modules/es-toolkit/object.d.ts b/sdks/nodejs/node_modules/es-toolkit/object.d.ts deleted file mode 100644 index 8e09c58..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/object.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/object'; diff --git a/sdks/nodejs/node_modules/es-toolkit/object.js b/sdks/nodejs/node_modules/es-toolkit/object.js deleted file mode 100644 index 306e005..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/object.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/object'); diff --git a/sdks/nodejs/node_modules/es-toolkit/package.json b/sdks/nodejs/node_modules/es-toolkit/package.json deleted file mode 100644 index d547ffb..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/package.json +++ /dev/null @@ -1,346 +0,0 @@ -{ - "name": "es-toolkit", - "version": "1.44.0", - "description": "A state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations.", - "homepage": "https://es-toolkit.dev", - "bugs": "https://github.com/toss/es-toolkit/issues", - "repository": { - "type": "git", - "url": "https://github.com/toss/es-toolkit.git" - }, - "license": "MIT", - "sideEffects": false, - "packageManager": "yarn@4.10.2", - "exports": { - ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - } - }, - "./array": { - "import": { - "types": "./dist/array/index.d.mts", - "default": "./dist/array/index.mjs" - }, - "require": { - "types": "./dist/array/index.d.ts", - "default": "./dist/array/index.js" - } - }, - "./compat": { - "import": { - "types": "./dist/compat/index.d.mts", - "default": "./dist/compat/index.mjs" - }, - "require": { - "types": "./dist/compat/index.d.ts", - "default": "./dist/compat/index.js" - } - }, - "./compat/*": { - "default": { - "types": "./compat/*.d.ts", - "default": "./compat/*.js" - } - }, - "./error": { - "import": { - "types": "./dist/error/index.d.mts", - "default": "./dist/error/index.mjs" - }, - "require": { - "types": "./dist/error/index.d.ts", - "default": "./dist/error/index.js" - } - }, - "./function": { - "import": { - "types": "./dist/function/index.d.mts", - "default": "./dist/function/index.mjs" - }, - "require": { - "types": "./dist/function/index.d.ts", - "default": "./dist/function/index.js" - } - }, - "./math": { - "import": { - "types": "./dist/math/index.d.mts", - "default": "./dist/math/index.mjs" - }, - "require": { - "types": "./dist/math/index.d.ts", - "default": "./dist/math/index.js" - } - }, - "./object": { - "import": { - "types": "./dist/object/index.d.mts", - "default": "./dist/object/index.mjs" - }, - "require": { - "types": "./dist/object/index.d.ts", - "default": "./dist/object/index.js" - } - }, - "./predicate": { - "import": { - "types": "./dist/predicate/index.d.mts", - "default": "./dist/predicate/index.mjs" - }, - "require": { - "types": "./dist/predicate/index.d.ts", - "default": "./dist/predicate/index.js" - } - }, - "./promise": { - "import": { - "types": "./dist/promise/index.d.mts", - "default": "./dist/promise/index.mjs" - }, - "require": { - "types": "./dist/promise/index.d.ts", - "default": "./dist/promise/index.js" - } - }, - "./string": { - "import": { - "types": "./dist/string/index.d.mts", - "default": "./dist/string/index.mjs" - }, - "require": { - "types": "./dist/string/index.d.ts", - "default": "./dist/string/index.js" - } - }, - "./util": { - "import": { - "types": "./dist/util/index.d.mts", - "default": "./dist/util/index.mjs" - }, - "require": { - "types": "./dist/util/index.d.ts", - "default": "./dist/util/index.js" - } - }, - "./package.json": "./package.json" - }, - "files": [ - "dist", - "compat", - "*.d.ts", - "array.js", - "compat.js", - "error.js", - "function.js", - "map.js", - "math.js", - "object.js", - "predicate.js", - "promise.js", - "set.js", - "string.js", - "util.js" - ], - "workspaces": [ - "docs", - "benchmarks" - ], - "scripts": { - "bench": "vitest bench", - "build": "rollup -c rollup.config.mjs && ./.scripts/postbuild.sh", - "format": "prettier --write .", - "gen:bundle-size": "node ./.scripts/generate-bundle-size.mjs", - "lint": "eslint --config eslint.config.mjs", - "packlint": "packlint sort -R", - "prepack": "yarn build", - "test": "vitest --coverage --typecheck", - "transform": "jscodeshift -t ./.scripts/tests/transform-lodash-test.ts $0 && prettier --write $0", - "typecheck": "tsc --noEmit" - }, - "devDependencies": { - "@arethetypeswrong/cli": "^0.15.3", - "@changesets/changelog-github": "^0.5.0", - "@changesets/cli": "^2.27.1", - "@eslint/js": "^9.9.0", - "@rollup/plugin-terser": "^0.4.4", - "@rollup/plugin-typescript": "^12.1.0", - "@trivago/prettier-plugin-sort-imports": "^4.3.0", - "@types/broken-link-checker": "^0", - "@types/eslint": "^9", - "@types/jscodeshift": "^0.12.0", - "@types/lodash": "^4.17.20", - "@types/node": "^22.7.4", - "@types/tar": "^6.1.13", - "@typescript-eslint/parser": "^8.26.1", - "@vitest/coverage-istanbul": "^2.1.2", - "@vitest/eslint-plugin": "^1.3.4", - "@vue/compiler-sfc": "^3.5.10", - "broken-link-checker": "^0.7.8", - "eslint": "^9.22.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-no-for-of-array": "^0.0.1", - "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-vue": "^9.28.0", - "execa": "^9.3.0", - "globals": "^15.9.0", - "happy-dom": "^16.7.3", - "jscodeshift": "^17.0.0", - "packlint": "^0.2.4", - "prettier": "^3.2.5", - "prettier-plugin-sort-re-exports": "^0.1.0", - "rollup": "^4.19.0", - "rollup-plugin-dts": "^6.1.1", - "tar": "^6", - "tslib": "^2.6.3", - "tsx": "^4.19.0", - "typescript": "^5.8.2", - "typescript-eslint": "^8.6.0", - "vercel": "^41.4.1", - "vitest": "^2.1.2" - }, - "publishConfig": { - "access": "public", - "main": "./dist/index.js", - "browser": "./dist/browser.global.js", - "module": "./dist/index.mjs", - "exports": { - ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - } - }, - "./array": { - "import": { - "types": "./dist/array/index.d.mts", - "default": "./dist/array/index.mjs" - }, - "require": { - "types": "./dist/array/index.d.ts", - "default": "./dist/array/index.js" - } - }, - "./compat": { - "import": { - "types": "./dist/compat/index.d.mts", - "default": "./dist/compat/index.mjs" - }, - "require": { - "types": "./dist/compat/index.d.ts", - "default": "./dist/compat/index.js" - } - }, - "./compat/*": { - "default": { - "types": "./compat/*.d.ts", - "default": "./compat/*.js" - } - }, - "./error": { - "import": { - "types": "./dist/error/index.d.mts", - "default": "./dist/error/index.mjs" - }, - "require": { - "types": "./dist/error/index.d.ts", - "default": "./dist/error/index.js" - } - }, - "./function": { - "import": { - "types": "./dist/function/index.d.mts", - "default": "./dist/function/index.mjs" - }, - "require": { - "types": "./dist/function/index.d.ts", - "default": "./dist/function/index.js" - } - }, - "./math": { - "import": { - "types": "./dist/math/index.d.mts", - "default": "./dist/math/index.mjs" - }, - "require": { - "types": "./dist/math/index.d.ts", - "default": "./dist/math/index.js" - } - }, - "./object": { - "import": { - "types": "./dist/object/index.d.mts", - "default": "./dist/object/index.mjs" - }, - "require": { - "types": "./dist/object/index.d.ts", - "default": "./dist/object/index.js" - } - }, - "./predicate": { - "import": { - "types": "./dist/predicate/index.d.mts", - "default": "./dist/predicate/index.mjs" - }, - "require": { - "types": "./dist/predicate/index.d.ts", - "default": "./dist/predicate/index.js" - } - }, - "./promise": { - "import": { - "types": "./dist/promise/index.d.mts", - "default": "./dist/promise/index.mjs" - }, - "require": { - "types": "./dist/promise/index.d.ts", - "default": "./dist/promise/index.js" - } - }, - "./string": { - "import": { - "types": "./dist/string/index.d.mts", - "default": "./dist/string/index.mjs" - }, - "require": { - "types": "./dist/string/index.d.ts", - "default": "./dist/string/index.js" - } - }, - "./util": { - "import": { - "types": "./dist/util/index.d.mts", - "default": "./dist/util/index.mjs" - }, - "require": { - "types": "./dist/util/index.d.ts", - "default": "./dist/util/index.js" - } - }, - "./package.json": "./package.json" - }, - "types": "./dist/index.d.ts" - }, - "dependenciesMeta": { - "@trivago/prettier-plugin-sort-imports@4.3.0": { - "unplugged": true - }, - "prettier-plugin-sort-re-exports@0.0.1": { - "unplugged": true - } - }, - "react-native": "./dist/index.js", - "main": "./dist/index.js", - "browser": "./dist/browser.global.js", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts" -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/es-toolkit/predicate.d.ts b/sdks/nodejs/node_modules/es-toolkit/predicate.d.ts deleted file mode 100644 index 7098da4..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/predicate.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/predicate'; diff --git a/sdks/nodejs/node_modules/es-toolkit/predicate.js b/sdks/nodejs/node_modules/es-toolkit/predicate.js deleted file mode 100644 index b83b9a1..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/predicate.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/predicate'); diff --git a/sdks/nodejs/node_modules/es-toolkit/promise.d.ts b/sdks/nodejs/node_modules/es-toolkit/promise.d.ts deleted file mode 100644 index 7949e35..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/promise.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/promise'; diff --git a/sdks/nodejs/node_modules/es-toolkit/promise.js b/sdks/nodejs/node_modules/es-toolkit/promise.js deleted file mode 100644 index ba2509f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/promise.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/promise'); diff --git a/sdks/nodejs/node_modules/es-toolkit/set.d.ts b/sdks/nodejs/node_modules/es-toolkit/set.d.ts deleted file mode 100644 index a384d88..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/set.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/set'; diff --git a/sdks/nodejs/node_modules/es-toolkit/set.js b/sdks/nodejs/node_modules/es-toolkit/set.js deleted file mode 100644 index a3ccb78..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/set.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/set'); diff --git a/sdks/nodejs/node_modules/es-toolkit/src/compat/_internal/Equals.d.ts b/sdks/nodejs/node_modules/es-toolkit/src/compat/_internal/Equals.d.ts deleted file mode 100644 index 9e7a6f0..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/src/compat/_internal/Equals.d.ts +++ /dev/null @@ -1 +0,0 @@ -export type Equals = (() => X extends T ? 1 : 2) extends () => X extends U ? 1 : 2 ? true : false; diff --git a/sdks/nodejs/node_modules/es-toolkit/src/compat/_internal/IsWritable.d.ts b/sdks/nodejs/node_modules/es-toolkit/src/compat/_internal/IsWritable.d.ts deleted file mode 100644 index b11944b..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/src/compat/_internal/IsWritable.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { Equals } from './Equals.d.ts'; - -export type IsWritable = Equals<{ [K in keyof T]: T[K] }, { -readonly [K in keyof T]: T[K] }>; \ No newline at end of file diff --git a/sdks/nodejs/node_modules/es-toolkit/src/compat/_internal/MutableList.d.ts b/sdks/nodejs/node_modules/es-toolkit/src/compat/_internal/MutableList.d.ts deleted file mode 100644 index aa4c4dd..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/src/compat/_internal/MutableList.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface MutableList { - length: number; - [k: number]: T; -} diff --git a/sdks/nodejs/node_modules/es-toolkit/src/compat/_internal/RejectReadonly.d.ts b/sdks/nodejs/node_modules/es-toolkit/src/compat/_internal/RejectReadonly.d.ts deleted file mode 100644 index 1c1cfb5..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/src/compat/_internal/RejectReadonly.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { IsWritable } from './IsWritable.d.ts'; -import { MutableList } from './MutableList.d.ts'; - -export type RejectReadonly> = IsWritable extends true ? T : never; \ No newline at end of file diff --git a/sdks/nodejs/node_modules/es-toolkit/string.d.ts b/sdks/nodejs/node_modules/es-toolkit/string.d.ts deleted file mode 100644 index 1ec8328..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/string.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/string'; diff --git a/sdks/nodejs/node_modules/es-toolkit/string.js b/sdks/nodejs/node_modules/es-toolkit/string.js deleted file mode 100644 index efe8ede..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/string.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/string'); diff --git a/sdks/nodejs/node_modules/es-toolkit/util.d.ts b/sdks/nodejs/node_modules/es-toolkit/util.d.ts deleted file mode 100644 index 8d8689f..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/util.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/util'; diff --git a/sdks/nodejs/node_modules/es-toolkit/util.js b/sdks/nodejs/node_modules/es-toolkit/util.js deleted file mode 100644 index 9f1ff80..0000000 --- a/sdks/nodejs/node_modules/es-toolkit/util.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/util'); diff --git a/sdks/nodejs/node_modules/eventsource-parser/LICENSE b/sdks/nodejs/node_modules/eventsource-parser/LICENSE deleted file mode 100644 index 82f3078..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2025 Espen Hovlandsdal - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/eventsource-parser/README.md b/sdks/nodejs/node_modules/eventsource-parser/README.md deleted file mode 100644 index fdd64f7..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/README.md +++ /dev/null @@ -1,126 +0,0 @@ -# eventsource-parser - -[![npm version](https://img.shields.io/npm/v/eventsource-parser.svg?style=flat-square)](https://www.npmjs.com/package/eventsource-parser)[![npm bundle size](https://img.shields.io/bundlephobia/minzip/eventsource-parser?style=flat-square)](https://bundlephobia.com/result?p=eventsource-parser)[![npm weekly downloads](https://img.shields.io/npm/dw/eventsource-parser.svg?style=flat-square)](https://www.npmjs.com/package/eventsource-parser) - -A streaming parser for [server-sent events/eventsource](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events), without any assumptions about how the actual stream of data is retrieved. It is intended to be a building block for [clients](https://github.com/rexxars/eventsource-client) and polyfills in javascript environments such as browsers, node.js and deno. - -If you are looking for a modern client implementation, see [eventsource-client](https://github.com/rexxars/eventsource-client). - -You create an instance of the parser, and _feed_ it chunks of data - partial or complete, and the parse emits parsed messages once it receives a complete message. A [TransformStream variant](#stream-usage) is also available for environments that support it (modern browsers, Node 18 and higher). - -Other modules in the EventSource family: - -- [eventsource-client](https://github.com/rexxars/eventsource-client): modern, feature rich eventsource client for browsers, node.js, bun, deno and other modern JavaScript environments. -- [eventsource-encoder](https://github.com/rexxars/eventsource-encoder): encodes messages in the EventSource/Server-Sent Events format. -- [eventsource](https://github.com/eventsource/eventsource): Node.js polyfill for the WhatWG EventSource API. - -> [!NOTE] -> Migrating from eventsource-parser 1.x/2.x? See the [migration guide](./MIGRATE-v3.md). - -## Installation - -```bash -npm install --save eventsource-parser -``` - -## Usage - -```ts -import {createParser, type EventSourceMessage} from 'eventsource-parser' - -function onEvent(event: EventSourceMessage) { - console.log('Received event!') - console.log('id: %s', event.id || '') - console.log('event: %s', event.event || '') - console.log('data: %s', event.data) -} - -const parser = createParser({onEvent}) -const sseStream = getSomeReadableStream() - -for await (const chunk of sseStream) { - parser.feed(chunk) -} - -// If you want to re-use the parser for a new stream of events, make sure to reset it! -parser.reset() -console.log('Done!') -``` - -### Retry intervals - -If the server sends a `retry` field in the event stream, the parser will call any `onRetry` callback specified to the `createParser` function: - -```ts -const parser = createParser({ - onRetry(retryInterval) { - console.log('Server requested retry interval of %dms', retryInterval) - }, - onEvent(event) { - // … - }, -}) -``` - -### Parse errors - -If the parser encounters an error while parsing, it will call any `onError` callback provided to the `createParser` function: - -```ts -import {type ParseError} from 'eventsource-parser' - -const parser = createParser({ - onError(error: ParseError) { - console.error('Error parsing event:', error) - if (error.type === 'invalid-field') { - console.error('Field name:', error.field) - console.error('Field value:', error.value) - console.error('Line:', error.line) - } else if (error.type === 'invalid-retry') { - console.error('Invalid retry interval:', error.value) - } - }, - onEvent(event) { - // … - }, -}) -``` - -Note that `invalid-field` errors will usually be called for any invalid data - not only data shaped as `field: value`. This is because the EventSource specification says to treat anything prior to a `:` as the field name. Use the `error.line` property to get the full line that caused the error. - -> [!NOTE] -> When encountering the end of a stream, calling `.reset({consume: true})` on the parser to flush any remaining data and reset the parser state. This will trigger the `onError` callback if the pending data is not a valid event. - -### Comments - -The parser will ignore comments (lines starting with `:`) by default. If you want to handle comments, you can provide an `onComment` callback to the `createParser` function: - -```ts -const parser = createParser({ - onComment(comment) { - console.log('Received comment:', comment) - }, - onEvent(event) { - // … - }, -}) -``` - -> [!NOTE] -> Leading whitespace is not stripped from comments, eg `: comment` will give ` comment` as the comment value, not `comment` (note the leading space). - -## Stream usage - -```ts -import {EventSourceParserStream} from 'eventsource-parser/stream' - -const eventStream = response.body - .pipeThrough(new TextDecoderStream()) - .pipeThrough(new EventSourceParserStream()) -``` - -Note that the TransformStream is exposed under a separate export (`eventsource-parser/stream`), in order to maximize compatibility with environments that do not have the `TransformStream` constructor available. - -## License - -MIT © [Espen Hovlandsdal](https://espen.codes/) diff --git a/sdks/nodejs/node_modules/eventsource-parser/dist/index.cjs b/sdks/nodejs/node_modules/eventsource-parser/dist/index.cjs deleted file mode 100644 index a20bb9a..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/dist/index.cjs +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: !0 }); -class ParseError extends Error { - constructor(message, options) { - super(message), this.name = "ParseError", this.type = options.type, this.field = options.field, this.value = options.value, this.line = options.line; - } -} -function noop(_arg) { -} -function createParser(callbacks) { - if (typeof callbacks == "function") - throw new TypeError( - "`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?" - ); - const { onEvent = noop, onError = noop, onRetry = noop, onComment } = callbacks; - let incompleteLine = "", isFirstChunk = !0, id, data = "", eventType = ""; - function feed(newChunk) { - const chunk = isFirstChunk ? newChunk.replace(/^\xEF\xBB\xBF/, "") : newChunk, [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`); - for (const line of complete) - parseLine(line); - incompleteLine = incomplete, isFirstChunk = !1; - } - function parseLine(line) { - if (line === "") { - dispatchEvent(); - return; - } - if (line.startsWith(":")) { - onComment && onComment(line.slice(line.startsWith(": ") ? 2 : 1)); - return; - } - const fieldSeparatorIndex = line.indexOf(":"); - if (fieldSeparatorIndex !== -1) { - const field = line.slice(0, fieldSeparatorIndex), offset = line[fieldSeparatorIndex + 1] === " " ? 2 : 1, value = line.slice(fieldSeparatorIndex + offset); - processField(field, value, line); - return; - } - processField(line, "", line); - } - function processField(field, value, line) { - switch (field) { - case "event": - eventType = value; - break; - case "data": - data = `${data}${value} -`; - break; - case "id": - id = value.includes("\0") ? void 0 : value; - break; - case "retry": - /^\d+$/.test(value) ? onRetry(parseInt(value, 10)) : onError( - new ParseError(`Invalid \`retry\` value: "${value}"`, { - type: "invalid-retry", - value, - line - }) - ); - break; - default: - onError( - new ParseError( - `Unknown field "${field.length > 20 ? `${field.slice(0, 20)}\u2026` : field}"`, - { type: "unknown-field", field, value, line } - ) - ); - break; - } - } - function dispatchEvent() { - data.length > 0 && onEvent({ - id, - event: eventType || void 0, - // If the data buffer's last character is a U+000A LINE FEED (LF) character, - // then remove the last character from the data buffer. - data: data.endsWith(` -`) ? data.slice(0, -1) : data - }), id = void 0, data = "", eventType = ""; - } - function reset(options = {}) { - incompleteLine && options.consume && parseLine(incompleteLine), isFirstChunk = !0, id = void 0, data = "", eventType = "", incompleteLine = ""; - } - return { feed, reset }; -} -function splitLines(chunk) { - const lines = []; - let incompleteLine = "", searchIndex = 0; - for (; searchIndex < chunk.length; ) { - const crIndex = chunk.indexOf("\r", searchIndex), lfIndex = chunk.indexOf(` -`, searchIndex); - let lineEnd = -1; - if (crIndex !== -1 && lfIndex !== -1 ? lineEnd = Math.min(crIndex, lfIndex) : crIndex !== -1 ? crIndex === chunk.length - 1 ? lineEnd = -1 : lineEnd = crIndex : lfIndex !== -1 && (lineEnd = lfIndex), lineEnd === -1) { - incompleteLine = chunk.slice(searchIndex); - break; - } else { - const line = chunk.slice(searchIndex, lineEnd); - lines.push(line), searchIndex = lineEnd + 1, chunk[searchIndex - 1] === "\r" && chunk[searchIndex] === ` -` && searchIndex++; - } - } - return [lines, incompleteLine]; -} -exports.ParseError = ParseError; -exports.createParser = createParser; -//# sourceMappingURL=index.cjs.map diff --git a/sdks/nodejs/node_modules/eventsource-parser/dist/index.cjs.map b/sdks/nodejs/node_modules/eventsource-parser/dist/index.cjs.map deleted file mode 100644 index 8baf186..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/dist/index.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.cjs","sources":["../src/errors.ts","../src/parse.ts"],"sourcesContent":["/**\n * The type of error that occurred.\n * @public\n */\nexport type ErrorType = 'invalid-retry' | 'unknown-field'\n\n/**\n * Error thrown when encountering an issue during parsing.\n *\n * @public\n */\nexport class ParseError extends Error {\n /**\n * The type of error that occurred.\n */\n type: ErrorType\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the field name.\n */\n field?: string | undefined\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the value of the field.\n */\n value?: string | undefined\n\n /**\n * The line that caused the error, if available.\n */\n line?: string | undefined\n\n constructor(\n message: string,\n options: {type: ErrorType; field?: string; value?: string; line?: string},\n ) {\n super(message)\n this.name = 'ParseError'\n this.type = options.type\n this.field = options.field\n this.value = options.value\n this.line = options.line\n }\n}\n","/**\n * EventSource/Server-Sent Events parser\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html\n */\nimport {ParseError} from './errors.ts'\nimport type {EventSourceParser, ParserCallbacks} from './types.ts'\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction noop(_arg: unknown) {\n // intentional noop\n}\n\n/**\n * Creates a new EventSource parser.\n *\n * @param callbacks - Callbacks to invoke on different parsing events:\n * - `onEvent` when a new event is parsed\n * - `onError` when an error occurs\n * - `onRetry` when a new reconnection interval has been sent from the server\n * - `onComment` when a comment is encountered in the stream\n *\n * @returns A new EventSource parser, with `parse` and `reset` methods.\n * @public\n */\nexport function createParser(callbacks: ParserCallbacks): EventSourceParser {\n if (typeof callbacks === 'function') {\n throw new TypeError(\n '`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?',\n )\n }\n\n const {onEvent = noop, onError = noop, onRetry = noop, onComment} = callbacks\n\n let incompleteLine = ''\n\n let isFirstChunk = true\n let id: string | undefined\n let data = ''\n let eventType = ''\n\n function feed(newChunk: string) {\n // Strip any UTF8 byte order mark (BOM) at the start of the stream\n const chunk = isFirstChunk ? newChunk.replace(/^\\xEF\\xBB\\xBF/, '') : newChunk\n\n // If there was a previous incomplete line, append it to the new chunk,\n // so we may process it together as a new (hopefully complete) chunk.\n const [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`)\n\n for (const line of complete) {\n parseLine(line)\n }\n\n incompleteLine = incomplete\n isFirstChunk = false\n }\n\n function parseLine(line: string) {\n // If the line is empty (a blank line), dispatch the event\n if (line === '') {\n dispatchEvent()\n return\n }\n\n // If the line starts with a U+003A COLON character (:), ignore the line.\n if (line.startsWith(':')) {\n if (onComment) {\n onComment(line.slice(line.startsWith(': ') ? 2 : 1))\n }\n return\n }\n\n // If the line contains a U+003A COLON character (:)\n const fieldSeparatorIndex = line.indexOf(':')\n if (fieldSeparatorIndex !== -1) {\n // Collect the characters on the line before the first U+003A COLON character (:),\n // and let `field` be that string.\n const field = line.slice(0, fieldSeparatorIndex)\n\n // Collect the characters on the line after the first U+003A COLON character (:),\n // and let `value` be that string. If value starts with a U+0020 SPACE character,\n // remove it from value.\n const offset = line[fieldSeparatorIndex + 1] === ' ' ? 2 : 1\n const value = line.slice(fieldSeparatorIndex + offset)\n\n processField(field, value, line)\n return\n }\n\n // Otherwise, the string is not empty but does not contain a U+003A COLON character (:)\n // Process the field using the whole line as the field name, and an empty string as the field value.\n // 👆 This is according to spec. That means that a line that has the value `data` will result in\n // a newline being added to the current `data` buffer, for instance.\n processField(line, '', line)\n }\n\n function processField(field: string, value: string, line: string) {\n // Field names must be compared literally, with no case folding performed.\n switch (field) {\n case 'event':\n // Set the `event type` buffer to field value\n eventType = value\n break\n case 'data':\n // Append the field value to the `data` buffer, then append a single U+000A LINE FEED(LF)\n // character to the `data` buffer.\n data = `${data}${value}\\n`\n break\n case 'id':\n // If the field value does not contain U+0000 NULL, then set the `ID` buffer to\n // the field value. Otherwise, ignore the field.\n id = value.includes('\\0') ? undefined : value\n break\n case 'retry':\n // If the field value consists of only ASCII digits, then interpret the field value as an\n // integer in base ten, and set the event stream's reconnection time to that integer.\n // Otherwise, ignore the field.\n if (/^\\d+$/.test(value)) {\n onRetry(parseInt(value, 10))\n } else {\n onError(\n new ParseError(`Invalid \\`retry\\` value: \"${value}\"`, {\n type: 'invalid-retry',\n value,\n line,\n }),\n )\n }\n break\n default:\n // Otherwise, the field is ignored.\n onError(\n new ParseError(\n `Unknown field \"${field.length > 20 ? `${field.slice(0, 20)}…` : field}\"`,\n {type: 'unknown-field', field, value, line},\n ),\n )\n break\n }\n }\n\n function dispatchEvent() {\n const shouldDispatch = data.length > 0\n if (shouldDispatch) {\n onEvent({\n id,\n event: eventType || undefined,\n // If the data buffer's last character is a U+000A LINE FEED (LF) character,\n // then remove the last character from the data buffer.\n data: data.endsWith('\\n') ? data.slice(0, -1) : data,\n })\n }\n\n // Reset for the next event\n id = undefined\n data = ''\n eventType = ''\n }\n\n function reset(options: {consume?: boolean} = {}) {\n if (incompleteLine && options.consume) {\n parseLine(incompleteLine)\n }\n\n isFirstChunk = true\n id = undefined\n data = ''\n eventType = ''\n incompleteLine = ''\n }\n\n return {feed, reset}\n}\n\n/**\n * For the given `chunk`, split it into lines according to spec, and return any remaining incomplete line.\n *\n * @param chunk - The chunk to split into lines\n * @returns A tuple containing an array of complete lines, and any remaining incomplete line\n * @internal\n */\nfunction splitLines(chunk: string): [complete: Array, incomplete: string] {\n /**\n * According to the spec, a line is terminated by either:\n * - U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pair\n * - a single U+000A LINE FEED(LF) character not preceded by a U+000D CARRIAGE RETURN(CR) character\n * - a single U+000D CARRIAGE RETURN(CR) character not followed by a U+000A LINE FEED(LF) character\n */\n const lines: Array = []\n let incompleteLine = ''\n let searchIndex = 0\n\n while (searchIndex < chunk.length) {\n // Find next line terminator\n const crIndex = chunk.indexOf('\\r', searchIndex)\n const lfIndex = chunk.indexOf('\\n', searchIndex)\n\n // Determine line end\n let lineEnd = -1\n if (crIndex !== -1 && lfIndex !== -1) {\n // CRLF case\n lineEnd = Math.min(crIndex, lfIndex)\n } else if (crIndex !== -1) {\n // CR at the end of a chunk might be part of a CRLF sequence that spans chunks,\n // so we shouldn't treat it as a line terminator (yet)\n if (crIndex === chunk.length - 1) {\n lineEnd = -1\n } else {\n lineEnd = crIndex\n }\n } else if (lfIndex !== -1) {\n lineEnd = lfIndex\n }\n\n // Extract line if terminator found\n if (lineEnd === -1) {\n // No terminator found, rest is incomplete\n incompleteLine = chunk.slice(searchIndex)\n break\n } else {\n const line = chunk.slice(searchIndex, lineEnd)\n lines.push(line)\n\n // Move past line terminator\n searchIndex = lineEnd + 1\n if (chunk[searchIndex - 1] === '\\r' && chunk[searchIndex] === '\\n') {\n searchIndex++\n }\n }\n }\n\n return [lines, incompleteLine]\n}\n"],"names":[],"mappings":";;AAWO,MAAM,mBAAmB,MAAM;AAAA,EAqBpC,YACE,SACA,SACA;AACA,UAAM,OAAO,GACb,KAAK,OAAO,cACZ,KAAK,OAAO,QAAQ,MACpB,KAAK,QAAQ,QAAQ,OACrB,KAAK,QAAQ,QAAQ,OACrB,KAAK,OAAO,QAAQ;AAAA,EACtB;AACF;ACnCA,SAAS,KAAK,MAAe;AAE7B;AAcO,SAAS,aAAa,WAA+C;AAC1E,MAAI,OAAO,aAAc;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAIJ,QAAM,EAAC,UAAU,MAAM,UAAU,MAAM,UAAU,MAAM,cAAa;AAEpE,MAAI,iBAAiB,IAEjB,eAAe,IACf,IACA,OAAO,IACP,YAAY;AAEhB,WAAS,KAAK,UAAkB;AAE9B,UAAM,QAAQ,eAAe,SAAS,QAAQ,iBAAiB,EAAE,IAAI,UAI/D,CAAC,UAAU,UAAU,IAAI,WAAW,GAAG,cAAc,GAAG,KAAK,EAAE;AAErE,eAAW,QAAQ;AACjB,gBAAU,IAAI;AAGhB,qBAAiB,YACjB,eAAe;AAAA,EACjB;AAEA,WAAS,UAAU,MAAc;AAE/B,QAAI,SAAS,IAAI;AACf,oBAAA;AACA;AAAA,IACF;AAGA,QAAI,KAAK,WAAW,GAAG,GAAG;AACpB,mBACF,UAAU,KAAK,MAAM,KAAK,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC;AAErD;AAAA,IACF;AAGA,UAAM,sBAAsB,KAAK,QAAQ,GAAG;AAC5C,QAAI,wBAAwB,IAAI;AAG9B,YAAM,QAAQ,KAAK,MAAM,GAAG,mBAAmB,GAKzC,SAAS,KAAK,sBAAsB,CAAC,MAAM,MAAM,IAAI,GACrD,QAAQ,KAAK,MAAM,sBAAsB,MAAM;AAErD,mBAAa,OAAO,OAAO,IAAI;AAC/B;AAAA,IACF;AAMA,iBAAa,MAAM,IAAI,IAAI;AAAA,EAC7B;AAEA,WAAS,aAAa,OAAe,OAAe,MAAc;AAEhE,YAAQ,OAAA;AAAA,MACN,KAAK;AAEH,oBAAY;AACZ;AAAA,MACF,KAAK;AAGH,eAAO,GAAG,IAAI,GAAG,KAAK;AAAA;AACtB;AAAA,MACF,KAAK;AAGH,aAAK,MAAM,SAAS,IAAI,IAAI,SAAY;AACxC;AAAA,MACF,KAAK;AAIC,gBAAQ,KAAK,KAAK,IACpB,QAAQ,SAAS,OAAO,EAAE,CAAC,IAE3B;AAAA,UACE,IAAI,WAAW,6BAA6B,KAAK,KAAK;AAAA,YACpD,MAAM;AAAA,YACN;AAAA,YACA;AAAA,UAAA,CACD;AAAA,QAAA;AAGL;AAAA,MACF;AAEE;AAAA,UACE,IAAI;AAAA,YACF,kBAAkB,MAAM,SAAS,KAAK,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC,WAAM,KAAK;AAAA,YACtE,EAAC,MAAM,iBAAiB,OAAO,OAAO,KAAA;AAAA,UAAI;AAAA,QAC5C;AAEF;AAAA,IAAA;AAAA,EAEN;AAEA,WAAS,gBAAgB;AACA,SAAK,SAAS,KAEnC,QAAQ;AAAA,MACN;AAAA,MACA,OAAO,aAAa;AAAA;AAAA;AAAA,MAGpB,MAAM,KAAK,SAAS;AAAA,CAAI,IAAI,KAAK,MAAM,GAAG,EAAE,IAAI;AAAA,IAAA,CACjD,GAIH,KAAK,QACL,OAAO,IACP,YAAY;AAAA,EACd;AAEA,WAAS,MAAM,UAA+B,IAAI;AAC5C,sBAAkB,QAAQ,WAC5B,UAAU,cAAc,GAG1B,eAAe,IACf,KAAK,QACL,OAAO,IACP,YAAY,IACZ,iBAAiB;AAAA,EACnB;AAEA,SAAO,EAAC,MAAM,MAAA;AAChB;AASA,SAAS,WAAW,OAA8D;AAOhF,QAAM,QAAuB,CAAA;AAC7B,MAAI,iBAAiB,IACjB,cAAc;AAElB,SAAO,cAAc,MAAM,UAAQ;AAEjC,UAAM,UAAU,MAAM,QAAQ,MAAM,WAAW,GACzC,UAAU,MAAM,QAAQ;AAAA,GAAM,WAAW;AAG/C,QAAI,UAAU;AAiBd,QAhBI,YAAY,MAAM,YAAY,KAEhC,UAAU,KAAK,IAAI,SAAS,OAAO,IAC1B,YAAY,KAGjB,YAAY,MAAM,SAAS,IAC7B,UAAU,KAEV,UAAU,UAEH,YAAY,OACrB,UAAU,UAIR,YAAY,IAAI;AAElB,uBAAiB,MAAM,MAAM,WAAW;AACxC;AAAA,IACF,OAAO;AACL,YAAM,OAAO,MAAM,MAAM,aAAa,OAAO;AAC7C,YAAM,KAAK,IAAI,GAGf,cAAc,UAAU,GACpB,MAAM,cAAc,CAAC,MAAM,QAAQ,MAAM,WAAW,MAAM;AAAA,KAC5D;AAAA,IAEJ;AAAA,EACF;AAEA,SAAO,CAAC,OAAO,cAAc;AAC/B;;;"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/eventsource-parser/dist/index.d.cts b/sdks/nodejs/node_modules/eventsource-parser/dist/index.d.cts deleted file mode 100644 index 0e1e216..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/dist/index.d.cts +++ /dev/null @@ -1,144 +0,0 @@ -/** - * Creates a new EventSource parser. - * - * @param callbacks - Callbacks to invoke on different parsing events: - * - `onEvent` when a new event is parsed - * - `onError` when an error occurs - * - `onRetry` when a new reconnection interval has been sent from the server - * - `onComment` when a comment is encountered in the stream - * - * @returns A new EventSource parser, with `parse` and `reset` methods. - * @public - */ -export declare function createParser(callbacks: ParserCallbacks): EventSourceParser - -/** - * The type of error that occurred. - * @public - */ -export declare type ErrorType = 'invalid-retry' | 'unknown-field' - -/** - * A parsed EventSource message event - * - * @public - */ -export declare interface EventSourceMessage { - /** - * The event type sent from the server. Note that this differs from the browser `EventSource` - * implementation in that browsers will default this to `message`, whereas this parser will - * leave this as `undefined` if not explicitly declared. - */ - event?: string | undefined - /** - * ID of the message, if any was provided by the server. Can be used by clients to keep the - * last received message ID in sync when reconnecting. - */ - id?: string | undefined - /** - * The data received for this message - */ - data: string -} - -/** - * EventSource parser instance. - * - * Needs to be reset between reconnections/when switching data source, using the `reset()` method. - * - * @public - */ -export declare interface EventSourceParser { - /** - * Feeds the parser another chunk. The method _does not_ return a parsed message. - * Instead, callbacks passed when creating the parser will be triggered once we see enough data - * for a valid/invalid parsing step (see {@link ParserCallbacks}). - * - * @param chunk - The chunk to parse. Can be a partial, eg in the case of streaming messages. - * @public - */ - feed(chunk: string): void - /** - * Resets the parser state. This is required when you have a new stream of messages - - * for instance in the case of a client being disconnected and reconnecting. - * - * Previously received, incomplete data will NOT be parsed unless you pass `consume: true`, - * which tells the parser to attempt to consume any incomplete data as if it ended with a newline - * character. This is useful for cases when a server sends a non-EventSource message that you - * want to be able to react to in an `onError` callback. - * - * @public - */ - reset(options?: {consume?: boolean}): void -} - -/** - * Error thrown when encountering an issue during parsing. - * - * @public - */ -export declare class ParseError extends Error { - /** - * The type of error that occurred. - */ - type: ErrorType - /** - * In the case of an unknown field encountered in the stream, this will be the field name. - */ - field?: string | undefined - /** - * In the case of an unknown field encountered in the stream, this will be the value of the field. - */ - value?: string | undefined - /** - * The line that caused the error, if available. - */ - line?: string | undefined - constructor( - message: string, - options: { - type: ErrorType - field?: string - value?: string - line?: string - }, - ) -} - -/** - * Callbacks that can be passed to the parser to handle different types of parsed messages - * and errors. - * - * @public - */ -export declare interface ParserCallbacks { - /** - * Callback for when a new event/message is parsed from the stream. - * This is the main callback that clients will use to handle incoming messages. - * - * @param event - The parsed event/message - */ - onEvent?: ((event: EventSourceMessage) => void) | undefined - /** - * Callback for when the server sends a new reconnection interval through the `retry` field. - * - * @param retry - The number of milliseconds to wait before reconnecting. - */ - onRetry?: ((retry: number) => void) | undefined - /** - * Callback for when a comment is encountered in the stream. - * - * @param comment - The comment encountered in the stream. - */ - onComment?: ((comment: string) => void) | undefined - /** - * Callback for when an error occurs during parsing. This is a catch-all for any errors - * that occur during parsing, and can be used to handle them in a custom way. Most clients - * tend to silently ignore any errors and instead retry, but it can be helpful to log/debug. - * - * @param error - The error that occurred during parsing - */ - onError?: ((error: ParseError) => void) | undefined -} - -export {} diff --git a/sdks/nodejs/node_modules/eventsource-parser/dist/index.d.ts b/sdks/nodejs/node_modules/eventsource-parser/dist/index.d.ts deleted file mode 100644 index 0e1e216..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/dist/index.d.ts +++ /dev/null @@ -1,144 +0,0 @@ -/** - * Creates a new EventSource parser. - * - * @param callbacks - Callbacks to invoke on different parsing events: - * - `onEvent` when a new event is parsed - * - `onError` when an error occurs - * - `onRetry` when a new reconnection interval has been sent from the server - * - `onComment` when a comment is encountered in the stream - * - * @returns A new EventSource parser, with `parse` and `reset` methods. - * @public - */ -export declare function createParser(callbacks: ParserCallbacks): EventSourceParser - -/** - * The type of error that occurred. - * @public - */ -export declare type ErrorType = 'invalid-retry' | 'unknown-field' - -/** - * A parsed EventSource message event - * - * @public - */ -export declare interface EventSourceMessage { - /** - * The event type sent from the server. Note that this differs from the browser `EventSource` - * implementation in that browsers will default this to `message`, whereas this parser will - * leave this as `undefined` if not explicitly declared. - */ - event?: string | undefined - /** - * ID of the message, if any was provided by the server. Can be used by clients to keep the - * last received message ID in sync when reconnecting. - */ - id?: string | undefined - /** - * The data received for this message - */ - data: string -} - -/** - * EventSource parser instance. - * - * Needs to be reset between reconnections/when switching data source, using the `reset()` method. - * - * @public - */ -export declare interface EventSourceParser { - /** - * Feeds the parser another chunk. The method _does not_ return a parsed message. - * Instead, callbacks passed when creating the parser will be triggered once we see enough data - * for a valid/invalid parsing step (see {@link ParserCallbacks}). - * - * @param chunk - The chunk to parse. Can be a partial, eg in the case of streaming messages. - * @public - */ - feed(chunk: string): void - /** - * Resets the parser state. This is required when you have a new stream of messages - - * for instance in the case of a client being disconnected and reconnecting. - * - * Previously received, incomplete data will NOT be parsed unless you pass `consume: true`, - * which tells the parser to attempt to consume any incomplete data as if it ended with a newline - * character. This is useful for cases when a server sends a non-EventSource message that you - * want to be able to react to in an `onError` callback. - * - * @public - */ - reset(options?: {consume?: boolean}): void -} - -/** - * Error thrown when encountering an issue during parsing. - * - * @public - */ -export declare class ParseError extends Error { - /** - * The type of error that occurred. - */ - type: ErrorType - /** - * In the case of an unknown field encountered in the stream, this will be the field name. - */ - field?: string | undefined - /** - * In the case of an unknown field encountered in the stream, this will be the value of the field. - */ - value?: string | undefined - /** - * The line that caused the error, if available. - */ - line?: string | undefined - constructor( - message: string, - options: { - type: ErrorType - field?: string - value?: string - line?: string - }, - ) -} - -/** - * Callbacks that can be passed to the parser to handle different types of parsed messages - * and errors. - * - * @public - */ -export declare interface ParserCallbacks { - /** - * Callback for when a new event/message is parsed from the stream. - * This is the main callback that clients will use to handle incoming messages. - * - * @param event - The parsed event/message - */ - onEvent?: ((event: EventSourceMessage) => void) | undefined - /** - * Callback for when the server sends a new reconnection interval through the `retry` field. - * - * @param retry - The number of milliseconds to wait before reconnecting. - */ - onRetry?: ((retry: number) => void) | undefined - /** - * Callback for when a comment is encountered in the stream. - * - * @param comment - The comment encountered in the stream. - */ - onComment?: ((comment: string) => void) | undefined - /** - * Callback for when an error occurs during parsing. This is a catch-all for any errors - * that occur during parsing, and can be used to handle them in a custom way. Most clients - * tend to silently ignore any errors and instead retry, but it can be helpful to log/debug. - * - * @param error - The error that occurred during parsing - */ - onError?: ((error: ParseError) => void) | undefined -} - -export {} diff --git a/sdks/nodejs/node_modules/eventsource-parser/dist/index.js b/sdks/nodejs/node_modules/eventsource-parser/dist/index.js deleted file mode 100644 index 3a66459..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/dist/index.js +++ /dev/null @@ -1,106 +0,0 @@ -class ParseError extends Error { - constructor(message, options) { - super(message), this.name = "ParseError", this.type = options.type, this.field = options.field, this.value = options.value, this.line = options.line; - } -} -function noop(_arg) { -} -function createParser(callbacks) { - if (typeof callbacks == "function") - throw new TypeError( - "`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?" - ); - const { onEvent = noop, onError = noop, onRetry = noop, onComment } = callbacks; - let incompleteLine = "", isFirstChunk = !0, id, data = "", eventType = ""; - function feed(newChunk) { - const chunk = isFirstChunk ? newChunk.replace(/^\xEF\xBB\xBF/, "") : newChunk, [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`); - for (const line of complete) - parseLine(line); - incompleteLine = incomplete, isFirstChunk = !1; - } - function parseLine(line) { - if (line === "") { - dispatchEvent(); - return; - } - if (line.startsWith(":")) { - onComment && onComment(line.slice(line.startsWith(": ") ? 2 : 1)); - return; - } - const fieldSeparatorIndex = line.indexOf(":"); - if (fieldSeparatorIndex !== -1) { - const field = line.slice(0, fieldSeparatorIndex), offset = line[fieldSeparatorIndex + 1] === " " ? 2 : 1, value = line.slice(fieldSeparatorIndex + offset); - processField(field, value, line); - return; - } - processField(line, "", line); - } - function processField(field, value, line) { - switch (field) { - case "event": - eventType = value; - break; - case "data": - data = `${data}${value} -`; - break; - case "id": - id = value.includes("\0") ? void 0 : value; - break; - case "retry": - /^\d+$/.test(value) ? onRetry(parseInt(value, 10)) : onError( - new ParseError(`Invalid \`retry\` value: "${value}"`, { - type: "invalid-retry", - value, - line - }) - ); - break; - default: - onError( - new ParseError( - `Unknown field "${field.length > 20 ? `${field.slice(0, 20)}\u2026` : field}"`, - { type: "unknown-field", field, value, line } - ) - ); - break; - } - } - function dispatchEvent() { - data.length > 0 && onEvent({ - id, - event: eventType || void 0, - // If the data buffer's last character is a U+000A LINE FEED (LF) character, - // then remove the last character from the data buffer. - data: data.endsWith(` -`) ? data.slice(0, -1) : data - }), id = void 0, data = "", eventType = ""; - } - function reset(options = {}) { - incompleteLine && options.consume && parseLine(incompleteLine), isFirstChunk = !0, id = void 0, data = "", eventType = "", incompleteLine = ""; - } - return { feed, reset }; -} -function splitLines(chunk) { - const lines = []; - let incompleteLine = "", searchIndex = 0; - for (; searchIndex < chunk.length; ) { - const crIndex = chunk.indexOf("\r", searchIndex), lfIndex = chunk.indexOf(` -`, searchIndex); - let lineEnd = -1; - if (crIndex !== -1 && lfIndex !== -1 ? lineEnd = Math.min(crIndex, lfIndex) : crIndex !== -1 ? crIndex === chunk.length - 1 ? lineEnd = -1 : lineEnd = crIndex : lfIndex !== -1 && (lineEnd = lfIndex), lineEnd === -1) { - incompleteLine = chunk.slice(searchIndex); - break; - } else { - const line = chunk.slice(searchIndex, lineEnd); - lines.push(line), searchIndex = lineEnd + 1, chunk[searchIndex - 1] === "\r" && chunk[searchIndex] === ` -` && searchIndex++; - } - } - return [lines, incompleteLine]; -} -export { - ParseError, - createParser -}; -//# sourceMappingURL=index.js.map diff --git a/sdks/nodejs/node_modules/eventsource-parser/dist/index.js.map b/sdks/nodejs/node_modules/eventsource-parser/dist/index.js.map deleted file mode 100644 index af44a8b..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../src/errors.ts","../src/parse.ts"],"sourcesContent":["/**\n * The type of error that occurred.\n * @public\n */\nexport type ErrorType = 'invalid-retry' | 'unknown-field'\n\n/**\n * Error thrown when encountering an issue during parsing.\n *\n * @public\n */\nexport class ParseError extends Error {\n /**\n * The type of error that occurred.\n */\n type: ErrorType\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the field name.\n */\n field?: string | undefined\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the value of the field.\n */\n value?: string | undefined\n\n /**\n * The line that caused the error, if available.\n */\n line?: string | undefined\n\n constructor(\n message: string,\n options: {type: ErrorType; field?: string; value?: string; line?: string},\n ) {\n super(message)\n this.name = 'ParseError'\n this.type = options.type\n this.field = options.field\n this.value = options.value\n this.line = options.line\n }\n}\n","/**\n * EventSource/Server-Sent Events parser\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html\n */\nimport {ParseError} from './errors.ts'\nimport type {EventSourceParser, ParserCallbacks} from './types.ts'\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction noop(_arg: unknown) {\n // intentional noop\n}\n\n/**\n * Creates a new EventSource parser.\n *\n * @param callbacks - Callbacks to invoke on different parsing events:\n * - `onEvent` when a new event is parsed\n * - `onError` when an error occurs\n * - `onRetry` when a new reconnection interval has been sent from the server\n * - `onComment` when a comment is encountered in the stream\n *\n * @returns A new EventSource parser, with `parse` and `reset` methods.\n * @public\n */\nexport function createParser(callbacks: ParserCallbacks): EventSourceParser {\n if (typeof callbacks === 'function') {\n throw new TypeError(\n '`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?',\n )\n }\n\n const {onEvent = noop, onError = noop, onRetry = noop, onComment} = callbacks\n\n let incompleteLine = ''\n\n let isFirstChunk = true\n let id: string | undefined\n let data = ''\n let eventType = ''\n\n function feed(newChunk: string) {\n // Strip any UTF8 byte order mark (BOM) at the start of the stream\n const chunk = isFirstChunk ? newChunk.replace(/^\\xEF\\xBB\\xBF/, '') : newChunk\n\n // If there was a previous incomplete line, append it to the new chunk,\n // so we may process it together as a new (hopefully complete) chunk.\n const [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`)\n\n for (const line of complete) {\n parseLine(line)\n }\n\n incompleteLine = incomplete\n isFirstChunk = false\n }\n\n function parseLine(line: string) {\n // If the line is empty (a blank line), dispatch the event\n if (line === '') {\n dispatchEvent()\n return\n }\n\n // If the line starts with a U+003A COLON character (:), ignore the line.\n if (line.startsWith(':')) {\n if (onComment) {\n onComment(line.slice(line.startsWith(': ') ? 2 : 1))\n }\n return\n }\n\n // If the line contains a U+003A COLON character (:)\n const fieldSeparatorIndex = line.indexOf(':')\n if (fieldSeparatorIndex !== -1) {\n // Collect the characters on the line before the first U+003A COLON character (:),\n // and let `field` be that string.\n const field = line.slice(0, fieldSeparatorIndex)\n\n // Collect the characters on the line after the first U+003A COLON character (:),\n // and let `value` be that string. If value starts with a U+0020 SPACE character,\n // remove it from value.\n const offset = line[fieldSeparatorIndex + 1] === ' ' ? 2 : 1\n const value = line.slice(fieldSeparatorIndex + offset)\n\n processField(field, value, line)\n return\n }\n\n // Otherwise, the string is not empty but does not contain a U+003A COLON character (:)\n // Process the field using the whole line as the field name, and an empty string as the field value.\n // 👆 This is according to spec. That means that a line that has the value `data` will result in\n // a newline being added to the current `data` buffer, for instance.\n processField(line, '', line)\n }\n\n function processField(field: string, value: string, line: string) {\n // Field names must be compared literally, with no case folding performed.\n switch (field) {\n case 'event':\n // Set the `event type` buffer to field value\n eventType = value\n break\n case 'data':\n // Append the field value to the `data` buffer, then append a single U+000A LINE FEED(LF)\n // character to the `data` buffer.\n data = `${data}${value}\\n`\n break\n case 'id':\n // If the field value does not contain U+0000 NULL, then set the `ID` buffer to\n // the field value. Otherwise, ignore the field.\n id = value.includes('\\0') ? undefined : value\n break\n case 'retry':\n // If the field value consists of only ASCII digits, then interpret the field value as an\n // integer in base ten, and set the event stream's reconnection time to that integer.\n // Otherwise, ignore the field.\n if (/^\\d+$/.test(value)) {\n onRetry(parseInt(value, 10))\n } else {\n onError(\n new ParseError(`Invalid \\`retry\\` value: \"${value}\"`, {\n type: 'invalid-retry',\n value,\n line,\n }),\n )\n }\n break\n default:\n // Otherwise, the field is ignored.\n onError(\n new ParseError(\n `Unknown field \"${field.length > 20 ? `${field.slice(0, 20)}…` : field}\"`,\n {type: 'unknown-field', field, value, line},\n ),\n )\n break\n }\n }\n\n function dispatchEvent() {\n const shouldDispatch = data.length > 0\n if (shouldDispatch) {\n onEvent({\n id,\n event: eventType || undefined,\n // If the data buffer's last character is a U+000A LINE FEED (LF) character,\n // then remove the last character from the data buffer.\n data: data.endsWith('\\n') ? data.slice(0, -1) : data,\n })\n }\n\n // Reset for the next event\n id = undefined\n data = ''\n eventType = ''\n }\n\n function reset(options: {consume?: boolean} = {}) {\n if (incompleteLine && options.consume) {\n parseLine(incompleteLine)\n }\n\n isFirstChunk = true\n id = undefined\n data = ''\n eventType = ''\n incompleteLine = ''\n }\n\n return {feed, reset}\n}\n\n/**\n * For the given `chunk`, split it into lines according to spec, and return any remaining incomplete line.\n *\n * @param chunk - The chunk to split into lines\n * @returns A tuple containing an array of complete lines, and any remaining incomplete line\n * @internal\n */\nfunction splitLines(chunk: string): [complete: Array, incomplete: string] {\n /**\n * According to the spec, a line is terminated by either:\n * - U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pair\n * - a single U+000A LINE FEED(LF) character not preceded by a U+000D CARRIAGE RETURN(CR) character\n * - a single U+000D CARRIAGE RETURN(CR) character not followed by a U+000A LINE FEED(LF) character\n */\n const lines: Array = []\n let incompleteLine = ''\n let searchIndex = 0\n\n while (searchIndex < chunk.length) {\n // Find next line terminator\n const crIndex = chunk.indexOf('\\r', searchIndex)\n const lfIndex = chunk.indexOf('\\n', searchIndex)\n\n // Determine line end\n let lineEnd = -1\n if (crIndex !== -1 && lfIndex !== -1) {\n // CRLF case\n lineEnd = Math.min(crIndex, lfIndex)\n } else if (crIndex !== -1) {\n // CR at the end of a chunk might be part of a CRLF sequence that spans chunks,\n // so we shouldn't treat it as a line terminator (yet)\n if (crIndex === chunk.length - 1) {\n lineEnd = -1\n } else {\n lineEnd = crIndex\n }\n } else if (lfIndex !== -1) {\n lineEnd = lfIndex\n }\n\n // Extract line if terminator found\n if (lineEnd === -1) {\n // No terminator found, rest is incomplete\n incompleteLine = chunk.slice(searchIndex)\n break\n } else {\n const line = chunk.slice(searchIndex, lineEnd)\n lines.push(line)\n\n // Move past line terminator\n searchIndex = lineEnd + 1\n if (chunk[searchIndex - 1] === '\\r' && chunk[searchIndex] === '\\n') {\n searchIndex++\n }\n }\n }\n\n return [lines, incompleteLine]\n}\n"],"names":[],"mappings":"AAWO,MAAM,mBAAmB,MAAM;AAAA,EAqBpC,YACE,SACA,SACA;AACA,UAAM,OAAO,GACb,KAAK,OAAO,cACZ,KAAK,OAAO,QAAQ,MACpB,KAAK,QAAQ,QAAQ,OACrB,KAAK,QAAQ,QAAQ,OACrB,KAAK,OAAO,QAAQ;AAAA,EACtB;AACF;ACnCA,SAAS,KAAK,MAAe;AAE7B;AAcO,SAAS,aAAa,WAA+C;AAC1E,MAAI,OAAO,aAAc;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAIJ,QAAM,EAAC,UAAU,MAAM,UAAU,MAAM,UAAU,MAAM,cAAa;AAEpE,MAAI,iBAAiB,IAEjB,eAAe,IACf,IACA,OAAO,IACP,YAAY;AAEhB,WAAS,KAAK,UAAkB;AAE9B,UAAM,QAAQ,eAAe,SAAS,QAAQ,iBAAiB,EAAE,IAAI,UAI/D,CAAC,UAAU,UAAU,IAAI,WAAW,GAAG,cAAc,GAAG,KAAK,EAAE;AAErE,eAAW,QAAQ;AACjB,gBAAU,IAAI;AAGhB,qBAAiB,YACjB,eAAe;AAAA,EACjB;AAEA,WAAS,UAAU,MAAc;AAE/B,QAAI,SAAS,IAAI;AACf,oBAAA;AACA;AAAA,IACF;AAGA,QAAI,KAAK,WAAW,GAAG,GAAG;AACpB,mBACF,UAAU,KAAK,MAAM,KAAK,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC;AAErD;AAAA,IACF;AAGA,UAAM,sBAAsB,KAAK,QAAQ,GAAG;AAC5C,QAAI,wBAAwB,IAAI;AAG9B,YAAM,QAAQ,KAAK,MAAM,GAAG,mBAAmB,GAKzC,SAAS,KAAK,sBAAsB,CAAC,MAAM,MAAM,IAAI,GACrD,QAAQ,KAAK,MAAM,sBAAsB,MAAM;AAErD,mBAAa,OAAO,OAAO,IAAI;AAC/B;AAAA,IACF;AAMA,iBAAa,MAAM,IAAI,IAAI;AAAA,EAC7B;AAEA,WAAS,aAAa,OAAe,OAAe,MAAc;AAEhE,YAAQ,OAAA;AAAA,MACN,KAAK;AAEH,oBAAY;AACZ;AAAA,MACF,KAAK;AAGH,eAAO,GAAG,IAAI,GAAG,KAAK;AAAA;AACtB;AAAA,MACF,KAAK;AAGH,aAAK,MAAM,SAAS,IAAI,IAAI,SAAY;AACxC;AAAA,MACF,KAAK;AAIC,gBAAQ,KAAK,KAAK,IACpB,QAAQ,SAAS,OAAO,EAAE,CAAC,IAE3B;AAAA,UACE,IAAI,WAAW,6BAA6B,KAAK,KAAK;AAAA,YACpD,MAAM;AAAA,YACN;AAAA,YACA;AAAA,UAAA,CACD;AAAA,QAAA;AAGL;AAAA,MACF;AAEE;AAAA,UACE,IAAI;AAAA,YACF,kBAAkB,MAAM,SAAS,KAAK,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC,WAAM,KAAK;AAAA,YACtE,EAAC,MAAM,iBAAiB,OAAO,OAAO,KAAA;AAAA,UAAI;AAAA,QAC5C;AAEF;AAAA,IAAA;AAAA,EAEN;AAEA,WAAS,gBAAgB;AACA,SAAK,SAAS,KAEnC,QAAQ;AAAA,MACN;AAAA,MACA,OAAO,aAAa;AAAA;AAAA;AAAA,MAGpB,MAAM,KAAK,SAAS;AAAA,CAAI,IAAI,KAAK,MAAM,GAAG,EAAE,IAAI;AAAA,IAAA,CACjD,GAIH,KAAK,QACL,OAAO,IACP,YAAY;AAAA,EACd;AAEA,WAAS,MAAM,UAA+B,IAAI;AAC5C,sBAAkB,QAAQ,WAC5B,UAAU,cAAc,GAG1B,eAAe,IACf,KAAK,QACL,OAAO,IACP,YAAY,IACZ,iBAAiB;AAAA,EACnB;AAEA,SAAO,EAAC,MAAM,MAAA;AAChB;AASA,SAAS,WAAW,OAA8D;AAOhF,QAAM,QAAuB,CAAA;AAC7B,MAAI,iBAAiB,IACjB,cAAc;AAElB,SAAO,cAAc,MAAM,UAAQ;AAEjC,UAAM,UAAU,MAAM,QAAQ,MAAM,WAAW,GACzC,UAAU,MAAM,QAAQ;AAAA,GAAM,WAAW;AAG/C,QAAI,UAAU;AAiBd,QAhBI,YAAY,MAAM,YAAY,KAEhC,UAAU,KAAK,IAAI,SAAS,OAAO,IAC1B,YAAY,KAGjB,YAAY,MAAM,SAAS,IAC7B,UAAU,KAEV,UAAU,UAEH,YAAY,OACrB,UAAU,UAIR,YAAY,IAAI;AAElB,uBAAiB,MAAM,MAAM,WAAW;AACxC;AAAA,IACF,OAAO;AACL,YAAM,OAAO,MAAM,MAAM,aAAa,OAAO;AAC7C,YAAM,KAAK,IAAI,GAGf,cAAc,UAAU,GACpB,MAAM,cAAc,CAAC,MAAM,QAAQ,MAAM,WAAW,MAAM;AAAA,KAC5D;AAAA,IAEJ;AAAA,EACF;AAEA,SAAO,CAAC,OAAO,cAAc;AAC/B;"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/eventsource-parser/dist/stream.cjs b/sdks/nodejs/node_modules/eventsource-parser/dist/stream.cjs deleted file mode 100644 index 894e746..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/dist/stream.cjs +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: !0 }); -var index = require("./index.cjs"); -class EventSourceParserStream extends TransformStream { - constructor({ onError, onRetry, onComment } = {}) { - let parser; - super({ - start(controller) { - parser = index.createParser({ - onEvent: (event) => { - controller.enqueue(event); - }, - onError(error) { - onError === "terminate" ? controller.error(error) : typeof onError == "function" && onError(error); - }, - onRetry, - onComment - }); - }, - transform(chunk) { - parser.feed(chunk); - } - }); - } -} -exports.ParseError = index.ParseError; -exports.EventSourceParserStream = EventSourceParserStream; -//# sourceMappingURL=stream.cjs.map diff --git a/sdks/nodejs/node_modules/eventsource-parser/dist/stream.cjs.map b/sdks/nodejs/node_modules/eventsource-parser/dist/stream.cjs.map deleted file mode 100644 index a72a955..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/dist/stream.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stream.cjs","sources":["../src/stream.ts"],"sourcesContent":["import {createParser} from './parse.ts'\nimport type {EventSourceMessage, EventSourceParser} from './types.ts'\n\n/**\n * Options for the EventSourceParserStream.\n *\n * @public\n */\nexport interface StreamOptions {\n /**\n * Behavior when a parsing error occurs.\n *\n * - A custom function can be provided to handle the error.\n * - `'terminate'` will error the stream and stop parsing.\n * - Any other value will ignore the error and continue parsing.\n *\n * @defaultValue `undefined`\n */\n onError?: ('terminate' | ((error: Error) => void)) | undefined\n\n /**\n * Callback for when a reconnection interval is sent from the server.\n *\n * @param retry - The number of milliseconds to wait before reconnecting.\n */\n onRetry?: ((retry: number) => void) | undefined\n\n /**\n * Callback for when a comment is encountered in the stream.\n *\n * @param comment - The comment encountered in the stream.\n */\n onComment?: ((comment: string) => void) | undefined\n}\n\n/**\n * A TransformStream that ingests a stream of strings and produces a stream of `EventSourceMessage`.\n *\n * @example Basic usage\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream())\n * ```\n *\n * @example Terminate stream on parsing errors\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream({terminateOnError: true}))\n * ```\n *\n * @public\n */\nexport class EventSourceParserStream extends TransformStream {\n constructor({onError, onRetry, onComment}: StreamOptions = {}) {\n let parser!: EventSourceParser\n\n super({\n start(controller) {\n parser = createParser({\n onEvent: (event) => {\n controller.enqueue(event)\n },\n onError(error) {\n if (onError === 'terminate') {\n controller.error(error)\n } else if (typeof onError === 'function') {\n onError(error)\n }\n\n // Ignore by default\n },\n onRetry,\n onComment,\n })\n },\n transform(chunk) {\n parser.feed(chunk)\n },\n })\n }\n}\n\nexport {type ErrorType, ParseError} from './errors.ts'\nexport type {EventSourceMessage} from './types.ts'\n"],"names":["createParser"],"mappings":";;;AAwDO,MAAM,gCAAgC,gBAA4C;AAAA,EACvF,YAAY,EAAC,SAAS,SAAS,UAAA,IAA4B,CAAA,GAAI;AAC7D,QAAI;AAEJ,UAAM;AAAA,MACJ,MAAM,YAAY;AAChB,iBAASA,MAAAA,aAAa;AAAA,UACpB,SAAS,CAAC,UAAU;AAClB,uBAAW,QAAQ,KAAK;AAAA,UAC1B;AAAA,UACA,QAAQ,OAAO;AACT,wBAAY,cACd,WAAW,MAAM,KAAK,IACb,OAAO,WAAY,cAC5B,QAAQ,KAAK;AAAA,UAIjB;AAAA,UACA;AAAA,UACA;AAAA,QAAA,CACD;AAAA,MACH;AAAA,MACA,UAAU,OAAO;AACf,eAAO,KAAK,KAAK;AAAA,MACnB;AAAA,IAAA,CACD;AAAA,EACH;AACF;;;"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/eventsource-parser/dist/stream.d.cts b/sdks/nodejs/node_modules/eventsource-parser/dist/stream.d.cts deleted file mode 100644 index f337d75..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/dist/stream.d.cts +++ /dev/null @@ -1,118 +0,0 @@ -/** - * The type of error that occurred. - * @public - */ -export declare type ErrorType = 'invalid-retry' | 'unknown-field' - -/** - * A parsed EventSource message event - * - * @public - */ -export declare interface EventSourceMessage { - /** - * The event type sent from the server. Note that this differs from the browser `EventSource` - * implementation in that browsers will default this to `message`, whereas this parser will - * leave this as `undefined` if not explicitly declared. - */ - event?: string | undefined - /** - * ID of the message, if any was provided by the server. Can be used by clients to keep the - * last received message ID in sync when reconnecting. - */ - id?: string | undefined - /** - * The data received for this message - */ - data: string -} - -/** - * A TransformStream that ingests a stream of strings and produces a stream of `EventSourceMessage`. - * - * @example Basic usage - * ``` - * const eventStream = - * response.body - * .pipeThrough(new TextDecoderStream()) - * .pipeThrough(new EventSourceParserStream()) - * ``` - * - * @example Terminate stream on parsing errors - * ``` - * const eventStream = - * response.body - * .pipeThrough(new TextDecoderStream()) - * .pipeThrough(new EventSourceParserStream({terminateOnError: true})) - * ``` - * - * @public - */ -export declare class EventSourceParserStream extends TransformStream { - constructor({onError, onRetry, onComment}?: StreamOptions) -} - -/** - * Error thrown when encountering an issue during parsing. - * - * @public - */ -export declare class ParseError extends Error { - /** - * The type of error that occurred. - */ - type: ErrorType - /** - * In the case of an unknown field encountered in the stream, this will be the field name. - */ - field?: string | undefined - /** - * In the case of an unknown field encountered in the stream, this will be the value of the field. - */ - value?: string | undefined - /** - * The line that caused the error, if available. - */ - line?: string | undefined - constructor( - message: string, - options: { - type: ErrorType - field?: string - value?: string - line?: string - }, - ) -} - -/** - * Options for the EventSourceParserStream. - * - * @public - */ -export declare interface StreamOptions { - /** - * Behavior when a parsing error occurs. - * - * - A custom function can be provided to handle the error. - * - `'terminate'` will error the stream and stop parsing. - * - Any other value will ignore the error and continue parsing. - * - * @defaultValue `undefined` - */ - onError?: ('terminate' | ((error: Error) => void)) | undefined - /** - * Callback for when a reconnection interval is sent from the server. - * - * @param retry - The number of milliseconds to wait before reconnecting. - */ - onRetry?: ((retry: number) => void) | undefined - /** - * Callback for when a comment is encountered in the stream. - * - * @param comment - The comment encountered in the stream. - */ - onComment?: ((comment: string) => void) | undefined -} - -export {} diff --git a/sdks/nodejs/node_modules/eventsource-parser/dist/stream.d.ts b/sdks/nodejs/node_modules/eventsource-parser/dist/stream.d.ts deleted file mode 100644 index f337d75..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/dist/stream.d.ts +++ /dev/null @@ -1,118 +0,0 @@ -/** - * The type of error that occurred. - * @public - */ -export declare type ErrorType = 'invalid-retry' | 'unknown-field' - -/** - * A parsed EventSource message event - * - * @public - */ -export declare interface EventSourceMessage { - /** - * The event type sent from the server. Note that this differs from the browser `EventSource` - * implementation in that browsers will default this to `message`, whereas this parser will - * leave this as `undefined` if not explicitly declared. - */ - event?: string | undefined - /** - * ID of the message, if any was provided by the server. Can be used by clients to keep the - * last received message ID in sync when reconnecting. - */ - id?: string | undefined - /** - * The data received for this message - */ - data: string -} - -/** - * A TransformStream that ingests a stream of strings and produces a stream of `EventSourceMessage`. - * - * @example Basic usage - * ``` - * const eventStream = - * response.body - * .pipeThrough(new TextDecoderStream()) - * .pipeThrough(new EventSourceParserStream()) - * ``` - * - * @example Terminate stream on parsing errors - * ``` - * const eventStream = - * response.body - * .pipeThrough(new TextDecoderStream()) - * .pipeThrough(new EventSourceParserStream({terminateOnError: true})) - * ``` - * - * @public - */ -export declare class EventSourceParserStream extends TransformStream { - constructor({onError, onRetry, onComment}?: StreamOptions) -} - -/** - * Error thrown when encountering an issue during parsing. - * - * @public - */ -export declare class ParseError extends Error { - /** - * The type of error that occurred. - */ - type: ErrorType - /** - * In the case of an unknown field encountered in the stream, this will be the field name. - */ - field?: string | undefined - /** - * In the case of an unknown field encountered in the stream, this will be the value of the field. - */ - value?: string | undefined - /** - * The line that caused the error, if available. - */ - line?: string | undefined - constructor( - message: string, - options: { - type: ErrorType - field?: string - value?: string - line?: string - }, - ) -} - -/** - * Options for the EventSourceParserStream. - * - * @public - */ -export declare interface StreamOptions { - /** - * Behavior when a parsing error occurs. - * - * - A custom function can be provided to handle the error. - * - `'terminate'` will error the stream and stop parsing. - * - Any other value will ignore the error and continue parsing. - * - * @defaultValue `undefined` - */ - onError?: ('terminate' | ((error: Error) => void)) | undefined - /** - * Callback for when a reconnection interval is sent from the server. - * - * @param retry - The number of milliseconds to wait before reconnecting. - */ - onRetry?: ((retry: number) => void) | undefined - /** - * Callback for when a comment is encountered in the stream. - * - * @param comment - The comment encountered in the stream. - */ - onComment?: ((comment: string) => void) | undefined -} - -export {} diff --git a/sdks/nodejs/node_modules/eventsource-parser/dist/stream.js b/sdks/nodejs/node_modules/eventsource-parser/dist/stream.js deleted file mode 100644 index b551fc3..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/dist/stream.js +++ /dev/null @@ -1,29 +0,0 @@ -import { createParser } from "./index.js"; -import { ParseError } from "./index.js"; -class EventSourceParserStream extends TransformStream { - constructor({ onError, onRetry, onComment } = {}) { - let parser; - super({ - start(controller) { - parser = createParser({ - onEvent: (event) => { - controller.enqueue(event); - }, - onError(error) { - onError === "terminate" ? controller.error(error) : typeof onError == "function" && onError(error); - }, - onRetry, - onComment - }); - }, - transform(chunk) { - parser.feed(chunk); - } - }); - } -} -export { - EventSourceParserStream, - ParseError -}; -//# sourceMappingURL=stream.js.map diff --git a/sdks/nodejs/node_modules/eventsource-parser/dist/stream.js.map b/sdks/nodejs/node_modules/eventsource-parser/dist/stream.js.map deleted file mode 100644 index 1a83826..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/dist/stream.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stream.js","sources":["../src/stream.ts"],"sourcesContent":["import {createParser} from './parse.ts'\nimport type {EventSourceMessage, EventSourceParser} from './types.ts'\n\n/**\n * Options for the EventSourceParserStream.\n *\n * @public\n */\nexport interface StreamOptions {\n /**\n * Behavior when a parsing error occurs.\n *\n * - A custom function can be provided to handle the error.\n * - `'terminate'` will error the stream and stop parsing.\n * - Any other value will ignore the error and continue parsing.\n *\n * @defaultValue `undefined`\n */\n onError?: ('terminate' | ((error: Error) => void)) | undefined\n\n /**\n * Callback for when a reconnection interval is sent from the server.\n *\n * @param retry - The number of milliseconds to wait before reconnecting.\n */\n onRetry?: ((retry: number) => void) | undefined\n\n /**\n * Callback for when a comment is encountered in the stream.\n *\n * @param comment - The comment encountered in the stream.\n */\n onComment?: ((comment: string) => void) | undefined\n}\n\n/**\n * A TransformStream that ingests a stream of strings and produces a stream of `EventSourceMessage`.\n *\n * @example Basic usage\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream())\n * ```\n *\n * @example Terminate stream on parsing errors\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream({terminateOnError: true}))\n * ```\n *\n * @public\n */\nexport class EventSourceParserStream extends TransformStream {\n constructor({onError, onRetry, onComment}: StreamOptions = {}) {\n let parser!: EventSourceParser\n\n super({\n start(controller) {\n parser = createParser({\n onEvent: (event) => {\n controller.enqueue(event)\n },\n onError(error) {\n if (onError === 'terminate') {\n controller.error(error)\n } else if (typeof onError === 'function') {\n onError(error)\n }\n\n // Ignore by default\n },\n onRetry,\n onComment,\n })\n },\n transform(chunk) {\n parser.feed(chunk)\n },\n })\n }\n}\n\nexport {type ErrorType, ParseError} from './errors.ts'\nexport type {EventSourceMessage} from './types.ts'\n"],"names":[],"mappings":";;AAwDO,MAAM,gCAAgC,gBAA4C;AAAA,EACvF,YAAY,EAAC,SAAS,SAAS,UAAA,IAA4B,CAAA,GAAI;AAC7D,QAAI;AAEJ,UAAM;AAAA,MACJ,MAAM,YAAY;AAChB,iBAAS,aAAa;AAAA,UACpB,SAAS,CAAC,UAAU;AAClB,uBAAW,QAAQ,KAAK;AAAA,UAC1B;AAAA,UACA,QAAQ,OAAO;AACT,wBAAY,cACd,WAAW,MAAM,KAAK,IACb,OAAO,WAAY,cAC5B,QAAQ,KAAK;AAAA,UAIjB;AAAA,UACA;AAAA,UACA;AAAA,QAAA,CACD;AAAA,MACH;AAAA,MACA,UAAU,OAAO;AACf,eAAO,KAAK,KAAK;AAAA,MACnB;AAAA,IAAA,CACD;AAAA,EACH;AACF;"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/eventsource-parser/package.json b/sdks/nodejs/node_modules/eventsource-parser/package.json deleted file mode 100644 index e8a3635..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/package.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "name": "eventsource-parser", - "version": "3.0.6", - "description": "Streaming, source-agnostic EventSource/Server-Sent Events parser", - "sideEffects": false, - "type": "module", - "types": "./dist/index.d.ts", - "module": "./dist/index.js", - "main": "./dist/index.cjs", - "exports": { - ".": { - "source": "./src/index.ts", - "import": "./dist/index.js", - "require": "./dist/index.cjs", - "default": "./dist/index.js" - }, - "./stream": { - "source": "./src/stream.ts", - "import": "./dist/stream.js", - "require": "./dist/stream.cjs", - "default": "./dist/stream.js" - }, - "./package.json": "./package.json" - }, - "typesVersions": { - "*": { - "stream": [ - "./dist/stream.d.ts" - ] - } - }, - "engines": { - "node": ">=18.0.0" - }, - "browserslist": [ - "node >= 20", - "chrome >= 71", - "safari >= 14.1", - "firefox >= 105", - "edge >= 79" - ], - "files": [ - "dist", - "!dist/stats.html", - "src", - "stream.js" - ], - "scripts": { - "build": "pkg-utils build && pkg-utils --strict", - "clean": "rimraf dist coverage", - "lint": "eslint . && tsc --noEmit", - "posttest": "npm run lint", - "prebuild": "npm run clean", - "prepublishOnly": "npm run build", - "test": "npm run test:node", - "test:bun": "bun test", - "test:deno": "deno run --allow-write --allow-net --allow-run --allow-sys --allow-ffi --allow-env --allow-read npm:vitest", - "test:node": "vitest --reporter=verbose" - }, - "author": "Espen Hovlandsdal ", - "keywords": [ - "sse", - "eventsource", - "server-sent-events" - ], - "devDependencies": { - "@sanity/pkg-utils": "^8.0.0", - "@sanity/semantic-release-preset": "^5.0.0", - "@types/node": "^20.19.0", - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.51.0", - "eslint-config-prettier": "^9.1.0", - "eslint-config-sanity": "^7.1.2", - "eventsource-encoder": "^1.0.1", - "prettier": "^3.5.3", - "rimraf": "^6.0.1", - "rollup-plugin-visualizer": "^6.0.3", - "semantic-release": "^24.2.3", - "typescript": "^5.8.3", - "vitest": "^3.1.3" - }, - "homepage": "https://github.com/rexxars/eventsource-parser#readme", - "bugs": { - "url": "https://github.com/rexxars/eventsource-parser/issues" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/rexxars/eventsource-parser.git" - }, - "license": "MIT", - "prettier": { - "bracketSpacing": false, - "printWidth": 100, - "semi": false, - "singleQuote": true - }, - "eslintConfig": { - "parserOptions": { - "ecmaFeatures": { - "modules": true - }, - "ecmaVersion": 9, - "sourceType": "module" - }, - "extends": [ - "sanity", - "sanity/typescript", - "prettier" - ], - "ignorePatterns": [ - "lib/**/" - ] - } -} diff --git a/sdks/nodejs/node_modules/eventsource-parser/src/errors.ts b/sdks/nodejs/node_modules/eventsource-parser/src/errors.ts deleted file mode 100644 index 04cd292..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/src/errors.ts +++ /dev/null @@ -1,44 +0,0 @@ -/** - * The type of error that occurred. - * @public - */ -export type ErrorType = 'invalid-retry' | 'unknown-field' - -/** - * Error thrown when encountering an issue during parsing. - * - * @public - */ -export class ParseError extends Error { - /** - * The type of error that occurred. - */ - type: ErrorType - - /** - * In the case of an unknown field encountered in the stream, this will be the field name. - */ - field?: string | undefined - - /** - * In the case of an unknown field encountered in the stream, this will be the value of the field. - */ - value?: string | undefined - - /** - * The line that caused the error, if available. - */ - line?: string | undefined - - constructor( - message: string, - options: {type: ErrorType; field?: string; value?: string; line?: string}, - ) { - super(message) - this.name = 'ParseError' - this.type = options.type - this.field = options.field - this.value = options.value - this.line = options.line - } -} diff --git a/sdks/nodejs/node_modules/eventsource-parser/src/index.ts b/sdks/nodejs/node_modules/eventsource-parser/src/index.ts deleted file mode 100644 index ac3328e..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export {type ErrorType, ParseError} from './errors.ts' -export {createParser} from './parse.ts' -export type {EventSourceMessage, EventSourceParser, ParserCallbacks} from './types.ts' diff --git a/sdks/nodejs/node_modules/eventsource-parser/src/parse.ts b/sdks/nodejs/node_modules/eventsource-parser/src/parse.ts deleted file mode 100644 index 8723094..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/src/parse.ts +++ /dev/null @@ -1,232 +0,0 @@ -/** - * EventSource/Server-Sent Events parser - * @see https://html.spec.whatwg.org/multipage/server-sent-events.html - */ -import {ParseError} from './errors.ts' -import type {EventSourceParser, ParserCallbacks} from './types.ts' - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -function noop(_arg: unknown) { - // intentional noop -} - -/** - * Creates a new EventSource parser. - * - * @param callbacks - Callbacks to invoke on different parsing events: - * - `onEvent` when a new event is parsed - * - `onError` when an error occurs - * - `onRetry` when a new reconnection interval has been sent from the server - * - `onComment` when a comment is encountered in the stream - * - * @returns A new EventSource parser, with `parse` and `reset` methods. - * @public - */ -export function createParser(callbacks: ParserCallbacks): EventSourceParser { - if (typeof callbacks === 'function') { - throw new TypeError( - '`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?', - ) - } - - const {onEvent = noop, onError = noop, onRetry = noop, onComment} = callbacks - - let incompleteLine = '' - - let isFirstChunk = true - let id: string | undefined - let data = '' - let eventType = '' - - function feed(newChunk: string) { - // Strip any UTF8 byte order mark (BOM) at the start of the stream - const chunk = isFirstChunk ? newChunk.replace(/^\xEF\xBB\xBF/, '') : newChunk - - // If there was a previous incomplete line, append it to the new chunk, - // so we may process it together as a new (hopefully complete) chunk. - const [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`) - - for (const line of complete) { - parseLine(line) - } - - incompleteLine = incomplete - isFirstChunk = false - } - - function parseLine(line: string) { - // If the line is empty (a blank line), dispatch the event - if (line === '') { - dispatchEvent() - return - } - - // If the line starts with a U+003A COLON character (:), ignore the line. - if (line.startsWith(':')) { - if (onComment) { - onComment(line.slice(line.startsWith(': ') ? 2 : 1)) - } - return - } - - // If the line contains a U+003A COLON character (:) - const fieldSeparatorIndex = line.indexOf(':') - if (fieldSeparatorIndex !== -1) { - // Collect the characters on the line before the first U+003A COLON character (:), - // and let `field` be that string. - const field = line.slice(0, fieldSeparatorIndex) - - // Collect the characters on the line after the first U+003A COLON character (:), - // and let `value` be that string. If value starts with a U+0020 SPACE character, - // remove it from value. - const offset = line[fieldSeparatorIndex + 1] === ' ' ? 2 : 1 - const value = line.slice(fieldSeparatorIndex + offset) - - processField(field, value, line) - return - } - - // Otherwise, the string is not empty but does not contain a U+003A COLON character (:) - // Process the field using the whole line as the field name, and an empty string as the field value. - // 👆 This is according to spec. That means that a line that has the value `data` will result in - // a newline being added to the current `data` buffer, for instance. - processField(line, '', line) - } - - function processField(field: string, value: string, line: string) { - // Field names must be compared literally, with no case folding performed. - switch (field) { - case 'event': - // Set the `event type` buffer to field value - eventType = value - break - case 'data': - // Append the field value to the `data` buffer, then append a single U+000A LINE FEED(LF) - // character to the `data` buffer. - data = `${data}${value}\n` - break - case 'id': - // If the field value does not contain U+0000 NULL, then set the `ID` buffer to - // the field value. Otherwise, ignore the field. - id = value.includes('\0') ? undefined : value - break - case 'retry': - // If the field value consists of only ASCII digits, then interpret the field value as an - // integer in base ten, and set the event stream's reconnection time to that integer. - // Otherwise, ignore the field. - if (/^\d+$/.test(value)) { - onRetry(parseInt(value, 10)) - } else { - onError( - new ParseError(`Invalid \`retry\` value: "${value}"`, { - type: 'invalid-retry', - value, - line, - }), - ) - } - break - default: - // Otherwise, the field is ignored. - onError( - new ParseError( - `Unknown field "${field.length > 20 ? `${field.slice(0, 20)}…` : field}"`, - {type: 'unknown-field', field, value, line}, - ), - ) - break - } - } - - function dispatchEvent() { - const shouldDispatch = data.length > 0 - if (shouldDispatch) { - onEvent({ - id, - event: eventType || undefined, - // If the data buffer's last character is a U+000A LINE FEED (LF) character, - // then remove the last character from the data buffer. - data: data.endsWith('\n') ? data.slice(0, -1) : data, - }) - } - - // Reset for the next event - id = undefined - data = '' - eventType = '' - } - - function reset(options: {consume?: boolean} = {}) { - if (incompleteLine && options.consume) { - parseLine(incompleteLine) - } - - isFirstChunk = true - id = undefined - data = '' - eventType = '' - incompleteLine = '' - } - - return {feed, reset} -} - -/** - * For the given `chunk`, split it into lines according to spec, and return any remaining incomplete line. - * - * @param chunk - The chunk to split into lines - * @returns A tuple containing an array of complete lines, and any remaining incomplete line - * @internal - */ -function splitLines(chunk: string): [complete: Array, incomplete: string] { - /** - * According to the spec, a line is terminated by either: - * - U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pair - * - a single U+000A LINE FEED(LF) character not preceded by a U+000D CARRIAGE RETURN(CR) character - * - a single U+000D CARRIAGE RETURN(CR) character not followed by a U+000A LINE FEED(LF) character - */ - const lines: Array = [] - let incompleteLine = '' - let searchIndex = 0 - - while (searchIndex < chunk.length) { - // Find next line terminator - const crIndex = chunk.indexOf('\r', searchIndex) - const lfIndex = chunk.indexOf('\n', searchIndex) - - // Determine line end - let lineEnd = -1 - if (crIndex !== -1 && lfIndex !== -1) { - // CRLF case - lineEnd = Math.min(crIndex, lfIndex) - } else if (crIndex !== -1) { - // CR at the end of a chunk might be part of a CRLF sequence that spans chunks, - // so we shouldn't treat it as a line terminator (yet) - if (crIndex === chunk.length - 1) { - lineEnd = -1 - } else { - lineEnd = crIndex - } - } else if (lfIndex !== -1) { - lineEnd = lfIndex - } - - // Extract line if terminator found - if (lineEnd === -1) { - // No terminator found, rest is incomplete - incompleteLine = chunk.slice(searchIndex) - break - } else { - const line = chunk.slice(searchIndex, lineEnd) - lines.push(line) - - // Move past line terminator - searchIndex = lineEnd + 1 - if (chunk[searchIndex - 1] === '\r' && chunk[searchIndex] === '\n') { - searchIndex++ - } - } - } - - return [lines, incompleteLine] -} diff --git a/sdks/nodejs/node_modules/eventsource-parser/src/stream.ts b/sdks/nodejs/node_modules/eventsource-parser/src/stream.ts deleted file mode 100644 index 29887d5..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/src/stream.ts +++ /dev/null @@ -1,88 +0,0 @@ -import {createParser} from './parse.ts' -import type {EventSourceMessage, EventSourceParser} from './types.ts' - -/** - * Options for the EventSourceParserStream. - * - * @public - */ -export interface StreamOptions { - /** - * Behavior when a parsing error occurs. - * - * - A custom function can be provided to handle the error. - * - `'terminate'` will error the stream and stop parsing. - * - Any other value will ignore the error and continue parsing. - * - * @defaultValue `undefined` - */ - onError?: ('terminate' | ((error: Error) => void)) | undefined - - /** - * Callback for when a reconnection interval is sent from the server. - * - * @param retry - The number of milliseconds to wait before reconnecting. - */ - onRetry?: ((retry: number) => void) | undefined - - /** - * Callback for when a comment is encountered in the stream. - * - * @param comment - The comment encountered in the stream. - */ - onComment?: ((comment: string) => void) | undefined -} - -/** - * A TransformStream that ingests a stream of strings and produces a stream of `EventSourceMessage`. - * - * @example Basic usage - * ``` - * const eventStream = - * response.body - * .pipeThrough(new TextDecoderStream()) - * .pipeThrough(new EventSourceParserStream()) - * ``` - * - * @example Terminate stream on parsing errors - * ``` - * const eventStream = - * response.body - * .pipeThrough(new TextDecoderStream()) - * .pipeThrough(new EventSourceParserStream({terminateOnError: true})) - * ``` - * - * @public - */ -export class EventSourceParserStream extends TransformStream { - constructor({onError, onRetry, onComment}: StreamOptions = {}) { - let parser!: EventSourceParser - - super({ - start(controller) { - parser = createParser({ - onEvent: (event) => { - controller.enqueue(event) - }, - onError(error) { - if (onError === 'terminate') { - controller.error(error) - } else if (typeof onError === 'function') { - onError(error) - } - - // Ignore by default - }, - onRetry, - onComment, - }) - }, - transform(chunk) { - parser.feed(chunk) - }, - }) - } -} - -export {type ErrorType, ParseError} from './errors.ts' -export type {EventSourceMessage} from './types.ts' diff --git a/sdks/nodejs/node_modules/eventsource-parser/src/types.ts b/sdks/nodejs/node_modules/eventsource-parser/src/types.ts deleted file mode 100644 index 2c87def..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/src/types.ts +++ /dev/null @@ -1,97 +0,0 @@ -import type {ParseError} from './errors.ts' - -/** - * EventSource parser instance. - * - * Needs to be reset between reconnections/when switching data source, using the `reset()` method. - * - * @public - */ -export interface EventSourceParser { - /** - * Feeds the parser another chunk. The method _does not_ return a parsed message. - * Instead, callbacks passed when creating the parser will be triggered once we see enough data - * for a valid/invalid parsing step (see {@link ParserCallbacks}). - * - * @param chunk - The chunk to parse. Can be a partial, eg in the case of streaming messages. - * @public - */ - feed(chunk: string): void - - /** - * Resets the parser state. This is required when you have a new stream of messages - - * for instance in the case of a client being disconnected and reconnecting. - * - * Previously received, incomplete data will NOT be parsed unless you pass `consume: true`, - * which tells the parser to attempt to consume any incomplete data as if it ended with a newline - * character. This is useful for cases when a server sends a non-EventSource message that you - * want to be able to react to in an `onError` callback. - * - * @public - */ - reset(options?: {consume?: boolean}): void -} - -/** - * A parsed EventSource message event - * - * @public - */ -export interface EventSourceMessage { - /** - * The event type sent from the server. Note that this differs from the browser `EventSource` - * implementation in that browsers will default this to `message`, whereas this parser will - * leave this as `undefined` if not explicitly declared. - */ - event?: string | undefined - - /** - * ID of the message, if any was provided by the server. Can be used by clients to keep the - * last received message ID in sync when reconnecting. - */ - id?: string | undefined - - /** - * The data received for this message - */ - data: string -} - -/** - * Callbacks that can be passed to the parser to handle different types of parsed messages - * and errors. - * - * @public - */ -export interface ParserCallbacks { - /** - * Callback for when a new event/message is parsed from the stream. - * This is the main callback that clients will use to handle incoming messages. - * - * @param event - The parsed event/message - */ - onEvent?: ((event: EventSourceMessage) => void) | undefined - - /** - * Callback for when the server sends a new reconnection interval through the `retry` field. - * - * @param retry - The number of milliseconds to wait before reconnecting. - */ - onRetry?: ((retry: number) => void) | undefined - - /** - * Callback for when a comment is encountered in the stream. - * - * @param comment - The comment encountered in the stream. - */ - onComment?: ((comment: string) => void) | undefined - - /** - * Callback for when an error occurs during parsing. This is a catch-all for any errors - * that occur during parsing, and can be used to handle them in a custom way. Most clients - * tend to silently ignore any errors and instead retry, but it can be helpful to log/debug. - * - * @param error - The error that occurred during parsing - */ - onError?: ((error: ParseError) => void) | undefined -} diff --git a/sdks/nodejs/node_modules/eventsource-parser/stream.js b/sdks/nodejs/node_modules/eventsource-parser/stream.js deleted file mode 100644 index 98d74bc..0000000 --- a/sdks/nodejs/node_modules/eventsource-parser/stream.js +++ /dev/null @@ -1,2 +0,0 @@ -/* included for compatibility with react-native without package exports support */ -module.exports = require('./dist/stream.cjs') diff --git a/sdks/nodejs/node_modules/eventsource/LICENSE b/sdks/nodejs/node_modules/eventsource/LICENSE deleted file mode 100644 index 505b0d9..0000000 --- a/sdks/nodejs/node_modules/eventsource/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License - -Copyright (c) EventSource GitHub organisation - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/eventsource/README.md b/sdks/nodejs/node_modules/eventsource/README.md deleted file mode 100644 index f934ec9..0000000 --- a/sdks/nodejs/node_modules/eventsource/README.md +++ /dev/null @@ -1,211 +0,0 @@ -# eventsource - -[![npm version](https://img.shields.io/npm/v/eventsource.svg?style=flat-square)](https://www.npmjs.com/package/eventsource)[![npm bundle size](https://img.shields.io/bundlephobia/minzip/eventsource?style=flat-square)](https://bundlephobia.com/result?p=eventsource)[![npm weekly downloads](https://img.shields.io/npm/dw/eventsource.svg?style=flat-square)](https://www.npmjs.com/package/eventsource) - -WhatWG/W3C-compatible [server-sent events/eventsource](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) client. The module attempts to implement an absolute minimal amount of features/changes beyond the specification. - -If you're looking for a modern alternative with a less constrained API, check out the [`eventsource-client` package](https://www.npmjs.com/package/eventsource-client). - -## Installation - -```bash -npm install --save eventsource -``` - -## Supported engines - -- Node.js >= 20 -- Chrome >= 71 -- Safari >= 11.3 -- Firefox >= 65 -- Edge >= 79 -- Deno >= 1.30 -- Bun >= 1.1.23 - -Basically, any environment that supports: - -- [fetch](https://developer.mozilla.org/en-US/docs/Web/API/fetch) -- [ReadableStream](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) -- [TextDecoder](https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder) -- [URL](https://developer.mozilla.org/en-US/docs/Web/API/URL) -- [Event](https://developer.mozilla.org/en-US/docs/Web/API/Event), [MessageEvent](https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent), [EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) - -If you need to support older runtimes, try the `2.x` branch/version range (note: 2.x branch is primarily targetted at Node.js, not browsers). - -## Usage - -```ts -import {EventSource} from 'eventsource' - -const es = new EventSource('https://my-server.com/sse') - -/* - * This will listen for events with the field `event: notice`. - */ -es.addEventListener('notice', (event) => { - console.log(event.data) -}) - -/* - * This will listen for events with the field `event: update`. - */ -es.addEventListener('update', (event) => { - console.log(event.data) -}) - -/* - * The event "message" is a special case, as it will capture events _without_ an - * event field, as well as events that have the specific type `event: message`. - * It will not trigger on any other event type. - */ -es.addEventListener('message', (event) => { - console.log(event.data) -}) - -/** - * To explicitly close the connection, call the `close` method. - * This will prevent any reconnection from happening. - */ -setTimeout(() => { - es.close() -}, 10_000) -``` - -### TypeScript - -Make sure you have configured your TSConfig so it matches the environment you are targetting. If you are targetting browsers, this would be `dom`: - -```jsonc -{ - "compilerOptions": { - "lib": ["dom"], - }, -} -``` - -If you're using Node.js, ensure you have `@types/node` installed (and it is version 18 or higher). Cloudflare workers have `@cloudflare/workers-types` etc. - -The following errors are caused by targetting an environment that does not have the necessary types available: - -``` -error TS2304: Cannot find name 'Event'. -error TS2304: Cannot find name 'EventTarget'. -error TS2304: Cannot find name 'MessageEvent'. -``` - -## Migrating from v1 / v2 - -See [MIGRATION.md](MIGRATION.md#v2-to-v3) for a detailed migration guide. - -## Extensions to the WhatWG/W3C API - -### Message and code properties on errors - -The `error` event has a `message` and `code` property that can be used to get more information about the error. In the specification, the Event - -```ts -es.addEventListener('error', (err) => { - if (err.code === 401 || err.code === 403) { - console.log('not authorized') - } -}) -``` - -### Specify `fetch` implementation - -The `EventSource` constructor accepts an optional `fetch` property in the second argument that can be used to specify the `fetch` implementation to use. - -This can be useful in environments where the global `fetch` function is not available - but it can also be used to alter the request/response behaviour. - -#### Setting HTTP request headers - -```ts -const es = new EventSource('https://my-server.com/sse', { - fetch: (input, init) => - fetch(input, { - ...init, - headers: { - ...init.headers, - Authorization: 'Bearer myToken', - }, - }), -}) -``` - -#### HTTP/HTTPS proxy - -Use a package like [`undici`](https://github.com/nodejs/undici) to add proxy support, either through environment variables or explicit configuration. - -```ts -// npm install undici --save -import {fetch, EnvHttpProxyAgent} from 'undici' - -const proxyAgent = new EnvHttpProxyAgent() - -const es = new EventSource('https://my-server.com/sse', { - fetch: (input, init) => fetch(input, {...init, dispatcher: proxyAgent}), -}) -``` - -#### Using HTTP2 - -Use a package like [`undici`](https://github.com/nodejs/undici) that supports HTTP2. - -```ts -// npm install undici --save -import {Agent, fetch} from 'undici' - -const http2Dispatcher = new Agent({allowH2: true}) - -const es = new EventSource('https://my-server.com/sse', { - fetch: (url, init) => fetch(url, {...init, dispatcher: http2Dispatcher}), -}) -``` - -#### Allow unauthorized HTTPS requests - -Use a package like [`undici`](https://github.com/nodejs/undici) for more control of fetch options through the use of an [`Agent`](https://undici.nodejs.org/#/docs/api/Agent.md). - -```ts -// npm install undici --save -import {fetch, Agent} from 'undici' - -const unsafeAgent = new Agent({ - connect: { - rejectUnauthorized: false, - }, -}) - -await fetch('https://my-server.com/sse', { - dispatcher: unsafeAgent, -}) -``` - -#### Feature checking - -For library authors, you may want to feature-check if an EventSource implementation supports passing a custom `fetch` implementation (such as this library does). We declare (from 4.1.0 and onwards) a non-enumerable symbol on the EventSource class to indicate this, named `eventsource.supports-fetch-override`. It can be used downstream such as: - -```ts -function yourLibrary(options) { - const OurEventSource = options.polyfills.EventSource || globalThis.EventSource - - if (OurEventSource && Symbol.for('eventsource.supports-fetch-override') in OurEventSource) { - // We can safely assume this supports overriding/specifying `fetch`! - const es = new OurEventSource('https://some.url', { - fetch: (input, init) => - fetch(input, { - ...init, - headers: { - ...(init.headers || {}), - 'x-some-header': 'foo', - }, - }), - }) - // … - } -} -``` - -## License - -MIT-licensed. See [LICENSE](LICENSE). diff --git a/sdks/nodejs/node_modules/eventsource/dist/index.cjs b/sdks/nodejs/node_modules/eventsource/dist/index.cjs deleted file mode 100644 index 32c31fa..0000000 --- a/sdks/nodejs/node_modules/eventsource/dist/index.cjs +++ /dev/null @@ -1,279 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: !0 }); -var eventsourceParser = require("eventsource-parser"); -class ErrorEvent extends Event { - /** - * Constructs a new `ErrorEvent` instance. This is typically not called directly, - * but rather emitted by the `EventSource` object when an error occurs. - * - * @param type - The type of the event (should be "error") - * @param errorEventInitDict - Optional properties to include in the error event - */ - constructor(type, errorEventInitDict) { - var _a, _b; - super(type), this.code = (_a = errorEventInitDict == null ? void 0 : errorEventInitDict.code) != null ? _a : void 0, this.message = (_b = errorEventInitDict == null ? void 0 : errorEventInitDict.message) != null ? _b : void 0; - } - /** - * Node.js "hides" the `message` and `code` properties of the `ErrorEvent` instance, - * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging, - * we explicitly include the properties in the `inspect` method. - * - * This is automatically called by Node.js when you `console.log` an instance of this class. - * - * @param _depth - The current depth - * @param options - The options passed to `util.inspect` - * @param inspect - The inspect function to use (prevents having to import it from `util`) - * @returns A string representation of the error - */ - [Symbol.for("nodejs.util.inspect.custom")](_depth, options, inspect) { - return inspect(inspectableError(this), options); - } - /** - * Deno "hides" the `message` and `code` properties of the `ErrorEvent` instance, - * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging, - * we explicitly include the properties in the `inspect` method. - * - * This is automatically called by Deno when you `console.log` an instance of this class. - * - * @param inspect - The inspect function to use (prevents having to import it from `util`) - * @param options - The options passed to `Deno.inspect` - * @returns A string representation of the error - */ - [Symbol.for("Deno.customInspect")](inspect, options) { - return inspect(inspectableError(this), options); - } -} -function syntaxError(message) { - const DomException = globalThis.DOMException; - return typeof DomException == "function" ? new DomException(message, "SyntaxError") : new SyntaxError(message); -} -function flattenError(err) { - return err instanceof Error ? "errors" in err && Array.isArray(err.errors) ? err.errors.map(flattenError).join(", ") : "cause" in err && err.cause instanceof Error ? `${err}: ${flattenError(err.cause)}` : err.message : `${err}`; -} -function inspectableError(err) { - return { - type: err.type, - message: err.message, - code: err.code, - defaultPrevented: err.defaultPrevented, - cancelable: err.cancelable, - timeStamp: err.timeStamp - }; -} -var __typeError = (msg) => { - throw TypeError(msg); -}, __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg), __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)), __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value), __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value), __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method), _readyState, _url, _redirectUrl, _withCredentials, _fetch, _reconnectInterval, _reconnectTimer, _lastEventId, _controller, _parser, _onError, _onMessage, _onOpen, _EventSource_instances, connect_fn, _onFetchResponse, _onFetchError, getRequestOptions_fn, _onEvent, _onRetryChange, failConnection_fn, scheduleReconnect_fn, _reconnect; -class EventSource extends EventTarget { - constructor(url, eventSourceInitDict) { - var _a, _b; - super(), __privateAdd(this, _EventSource_instances), this.CONNECTING = 0, this.OPEN = 1, this.CLOSED = 2, __privateAdd(this, _readyState), __privateAdd(this, _url), __privateAdd(this, _redirectUrl), __privateAdd(this, _withCredentials), __privateAdd(this, _fetch), __privateAdd(this, _reconnectInterval), __privateAdd(this, _reconnectTimer), __privateAdd(this, _lastEventId, null), __privateAdd(this, _controller), __privateAdd(this, _parser), __privateAdd(this, _onError, null), __privateAdd(this, _onMessage, null), __privateAdd(this, _onOpen, null), __privateAdd(this, _onFetchResponse, async (response) => { - var _a2; - __privateGet(this, _parser).reset(); - const { body, redirected, status, headers } = response; - if (status === 204) { - __privateMethod(this, _EventSource_instances, failConnection_fn).call(this, "Server sent HTTP 204, not reconnecting", 204), this.close(); - return; - } - if (redirected ? __privateSet(this, _redirectUrl, new URL(response.url)) : __privateSet(this, _redirectUrl, void 0), status !== 200) { - __privateMethod(this, _EventSource_instances, failConnection_fn).call(this, `Non-200 status code (${status})`, status); - return; - } - if (!(headers.get("content-type") || "").startsWith("text/event-stream")) { - __privateMethod(this, _EventSource_instances, failConnection_fn).call(this, 'Invalid content type, expected "text/event-stream"', status); - return; - } - if (__privateGet(this, _readyState) === this.CLOSED) - return; - __privateSet(this, _readyState, this.OPEN); - const openEvent = new Event("open"); - if ((_a2 = __privateGet(this, _onOpen)) == null || _a2.call(this, openEvent), this.dispatchEvent(openEvent), typeof body != "object" || !body || !("getReader" in body)) { - __privateMethod(this, _EventSource_instances, failConnection_fn).call(this, "Invalid response body, expected a web ReadableStream", status), this.close(); - return; - } - const decoder = new TextDecoder(), reader = body.getReader(); - let open = !0; - do { - const { done, value } = await reader.read(); - value && __privateGet(this, _parser).feed(decoder.decode(value, { stream: !done })), done && (open = !1, __privateGet(this, _parser).reset(), __privateMethod(this, _EventSource_instances, scheduleReconnect_fn).call(this)); - } while (open); - }), __privateAdd(this, _onFetchError, (err) => { - __privateSet(this, _controller, void 0), !(err.name === "AbortError" || err.type === "aborted") && __privateMethod(this, _EventSource_instances, scheduleReconnect_fn).call(this, flattenError(err)); - }), __privateAdd(this, _onEvent, (event) => { - typeof event.id == "string" && __privateSet(this, _lastEventId, event.id); - const messageEvent = new MessageEvent(event.event || "message", { - data: event.data, - origin: __privateGet(this, _redirectUrl) ? __privateGet(this, _redirectUrl).origin : __privateGet(this, _url).origin, - lastEventId: event.id || "" - }); - __privateGet(this, _onMessage) && (!event.event || event.event === "message") && __privateGet(this, _onMessage).call(this, messageEvent), this.dispatchEvent(messageEvent); - }), __privateAdd(this, _onRetryChange, (value) => { - __privateSet(this, _reconnectInterval, value); - }), __privateAdd(this, _reconnect, () => { - __privateSet(this, _reconnectTimer, void 0), __privateGet(this, _readyState) === this.CONNECTING && __privateMethod(this, _EventSource_instances, connect_fn).call(this); - }); - try { - if (url instanceof URL) - __privateSet(this, _url, url); - else if (typeof url == "string") - __privateSet(this, _url, new URL(url, getBaseURL())); - else - throw new Error("Invalid URL"); - } catch { - throw syntaxError("An invalid or illegal string was specified"); - } - __privateSet(this, _parser, eventsourceParser.createParser({ - onEvent: __privateGet(this, _onEvent), - onRetry: __privateGet(this, _onRetryChange) - })), __privateSet(this, _readyState, this.CONNECTING), __privateSet(this, _reconnectInterval, 3e3), __privateSet(this, _fetch, (_a = eventSourceInitDict == null ? void 0 : eventSourceInitDict.fetch) != null ? _a : globalThis.fetch), __privateSet(this, _withCredentials, (_b = eventSourceInitDict == null ? void 0 : eventSourceInitDict.withCredentials) != null ? _b : !1), __privateMethod(this, _EventSource_instances, connect_fn).call(this); - } - /** - * Returns the state of this EventSource object's connection. It can have the values described below. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState) - * - * Note: typed as `number` instead of `0 | 1 | 2` for compatibility with the `EventSource` interface, - * defined in the TypeScript `dom` library. - * - * @public - */ - get readyState() { - return __privateGet(this, _readyState); - } - /** - * Returns the URL providing the event stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url) - * - * @public - */ - get url() { - return __privateGet(this, _url).href; - } - /** - * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to "include", and false otherwise. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials) - */ - get withCredentials() { - return __privateGet(this, _withCredentials); - } - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */ - get onerror() { - return __privateGet(this, _onError); - } - set onerror(value) { - __privateSet(this, _onError, value); - } - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */ - get onmessage() { - return __privateGet(this, _onMessage); - } - set onmessage(value) { - __privateSet(this, _onMessage, value); - } - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */ - get onopen() { - return __privateGet(this, _onOpen); - } - set onopen(value) { - __privateSet(this, _onOpen, value); - } - addEventListener(type, listener, options) { - const listen = listener; - super.addEventListener(type, listen, options); - } - removeEventListener(type, listener, options) { - const listen = listener; - super.removeEventListener(type, listen, options); - } - /** - * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close) - * - * @public - */ - close() { - __privateGet(this, _reconnectTimer) && clearTimeout(__privateGet(this, _reconnectTimer)), __privateGet(this, _readyState) !== this.CLOSED && (__privateGet(this, _controller) && __privateGet(this, _controller).abort(), __privateSet(this, _readyState, this.CLOSED), __privateSet(this, _controller, void 0)); - } -} -_readyState = /* @__PURE__ */ new WeakMap(), _url = /* @__PURE__ */ new WeakMap(), _redirectUrl = /* @__PURE__ */ new WeakMap(), _withCredentials = /* @__PURE__ */ new WeakMap(), _fetch = /* @__PURE__ */ new WeakMap(), _reconnectInterval = /* @__PURE__ */ new WeakMap(), _reconnectTimer = /* @__PURE__ */ new WeakMap(), _lastEventId = /* @__PURE__ */ new WeakMap(), _controller = /* @__PURE__ */ new WeakMap(), _parser = /* @__PURE__ */ new WeakMap(), _onError = /* @__PURE__ */ new WeakMap(), _onMessage = /* @__PURE__ */ new WeakMap(), _onOpen = /* @__PURE__ */ new WeakMap(), _EventSource_instances = /* @__PURE__ */ new WeakSet(), /** -* Connect to the given URL and start receiving events -* -* @internal -*/ -connect_fn = function() { - __privateSet(this, _readyState, this.CONNECTING), __privateSet(this, _controller, new AbortController()), __privateGet(this, _fetch)(__privateGet(this, _url), __privateMethod(this, _EventSource_instances, getRequestOptions_fn).call(this)).then(__privateGet(this, _onFetchResponse)).catch(__privateGet(this, _onFetchError)); -}, _onFetchResponse = /* @__PURE__ */ new WeakMap(), _onFetchError = /* @__PURE__ */ new WeakMap(), /** -* Get request options for the `fetch()` request -* -* @returns The request options -* @internal -*/ -getRequestOptions_fn = function() { - var _a; - const init = { - // [spec] Let `corsAttributeState` be `Anonymous`… - // [spec] …will have their mode set to "cors"… - mode: "cors", - redirect: "follow", - headers: { Accept: "text/event-stream", ...__privateGet(this, _lastEventId) ? { "Last-Event-ID": __privateGet(this, _lastEventId) } : void 0 }, - cache: "no-store", - signal: (_a = __privateGet(this, _controller)) == null ? void 0 : _a.signal - }; - return "window" in globalThis && (init.credentials = this.withCredentials ? "include" : "same-origin"), init; -}, _onEvent = /* @__PURE__ */ new WeakMap(), _onRetryChange = /* @__PURE__ */ new WeakMap(), /** -* Handles the process referred to in the EventSource specification as "failing a connection". -* -* @param error - The error causing the connection to fail -* @param code - The HTTP status code, if available -* @internal -*/ -failConnection_fn = function(message, code) { - var _a; - __privateGet(this, _readyState) !== this.CLOSED && __privateSet(this, _readyState, this.CLOSED); - const errorEvent = new ErrorEvent("error", { code, message }); - (_a = __privateGet(this, _onError)) == null || _a.call(this, errorEvent), this.dispatchEvent(errorEvent); -}, /** -* Schedules a reconnection attempt against the EventSource endpoint. -* -* @param message - The error causing the connection to fail -* @param code - The HTTP status code, if available -* @internal -*/ -scheduleReconnect_fn = function(message, code) { - var _a; - if (__privateGet(this, _readyState) === this.CLOSED) - return; - __privateSet(this, _readyState, this.CONNECTING); - const errorEvent = new ErrorEvent("error", { code, message }); - (_a = __privateGet(this, _onError)) == null || _a.call(this, errorEvent), this.dispatchEvent(errorEvent), __privateSet(this, _reconnectTimer, setTimeout(__privateGet(this, _reconnect), __privateGet(this, _reconnectInterval))); -}, _reconnect = /* @__PURE__ */ new WeakMap(), /** -* ReadyState representing an EventSource currently trying to connect -* -* @public -*/ -EventSource.CONNECTING = 0, /** -* ReadyState representing an EventSource connection that is open (eg connected) -* -* @public -*/ -EventSource.OPEN = 1, /** -* ReadyState representing an EventSource connection that is closed (eg disconnected) -* -* @public -*/ -EventSource.CLOSED = 2; -Object.defineProperty(EventSource, Symbol.for("eventsource.supports-fetch-override"), { - value: !0, - writable: !1, - configurable: !1, - enumerable: !1 -}); -function getBaseURL() { - const doc = "document" in globalThis ? globalThis.document : void 0; - return doc && typeof doc == "object" && "baseURI" in doc && typeof doc.baseURI == "string" ? doc.baseURI : void 0; -} -exports.ErrorEvent = ErrorEvent; -exports.EventSource = EventSource; -//# sourceMappingURL=index.cjs.map diff --git a/sdks/nodejs/node_modules/eventsource/dist/index.cjs.map b/sdks/nodejs/node_modules/eventsource/dist/index.cjs.map deleted file mode 100644 index e8ab276..0000000 --- a/sdks/nodejs/node_modules/eventsource/dist/index.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.cjs","sources":["../src/errors.ts","../src/EventSource.ts"],"sourcesContent":["/**\n * An extended version of the `Event` emitted by the `EventSource` object when an error occurs.\n * While the spec does not include any additional properties, we intentionally go beyond the spec\n * and provide some (minimal) additional information to aid in debugging.\n *\n * @public\n */\nexport class ErrorEvent extends Event {\n /**\n * HTTP status code, if this was triggered by an HTTP error\n * Note: this is not part of the spec, but is included for better error handling.\n *\n * @public\n */\n public code?: number | undefined\n\n /**\n * Optional message attached to the error.\n * Note: this is not part of the spec, but is included for better error handling.\n *\n * @public\n */\n public message?: string | undefined\n\n /**\n * Constructs a new `ErrorEvent` instance. This is typically not called directly,\n * but rather emitted by the `EventSource` object when an error occurs.\n *\n * @param type - The type of the event (should be \"error\")\n * @param errorEventInitDict - Optional properties to include in the error event\n */\n constructor(\n type: string,\n errorEventInitDict?: {message?: string | undefined; code?: number | undefined},\n ) {\n super(type)\n this.code = errorEventInitDict?.code ?? undefined\n this.message = errorEventInitDict?.message ?? undefined\n }\n\n /**\n * Node.js \"hides\" the `message` and `code` properties of the `ErrorEvent` instance,\n * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging,\n * we explicitly include the properties in the `inspect` method.\n *\n * This is automatically called by Node.js when you `console.log` an instance of this class.\n *\n * @param _depth - The current depth\n * @param options - The options passed to `util.inspect`\n * @param inspect - The inspect function to use (prevents having to import it from `util`)\n * @returns A string representation of the error\n */\n [Symbol.for('nodejs.util.inspect.custom')](\n _depth: number,\n options: {colors: boolean},\n inspect: (obj: unknown, inspectOptions: {colors: boolean}) => string,\n ): string {\n return inspect(inspectableError(this), options)\n }\n\n /**\n * Deno \"hides\" the `message` and `code` properties of the `ErrorEvent` instance,\n * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging,\n * we explicitly include the properties in the `inspect` method.\n *\n * This is automatically called by Deno when you `console.log` an instance of this class.\n *\n * @param inspect - The inspect function to use (prevents having to import it from `util`)\n * @param options - The options passed to `Deno.inspect`\n * @returns A string representation of the error\n */\n [Symbol.for('Deno.customInspect')](\n inspect: (obj: unknown, inspectOptions: {colors: boolean}) => string,\n options: {colors: boolean},\n ): string {\n return inspect(inspectableError(this), options)\n }\n}\n\n/**\n * For environments where DOMException may not exist, we will use a SyntaxError instead.\n * While this isn't strictly according to spec, it is very close.\n *\n * @param message - The message to include in the error\n * @returns A `DOMException` or `SyntaxError` instance\n * @internal\n */\nexport function syntaxError(message: string): SyntaxError {\n // If someone can figure out a way to make this work without depending on DOM/Node.js typings,\n // and without casting to `any`, please send a PR 🙏\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const DomException = (globalThis as any).DOMException\n if (typeof DomException === 'function') {\n return new DomException(message, 'SyntaxError')\n }\n\n return new SyntaxError(message)\n}\n\n/**\n * Flatten an error into a single error message string.\n * Unwraps nested errors and joins them with a comma.\n *\n * @param err - The error to flatten\n * @returns A string representation of the error\n * @internal\n */\nexport function flattenError(err: unknown): string {\n if (!(err instanceof Error)) {\n return `${err}`\n }\n\n if ('errors' in err && Array.isArray(err.errors)) {\n return err.errors.map(flattenError).join(', ')\n }\n\n if ('cause' in err && err.cause instanceof Error) {\n return `${err}: ${flattenError(err.cause)}`\n }\n\n return err.message\n}\n\n/**\n * Convert an `ErrorEvent` instance into a plain object for inspection.\n *\n * @param err - The `ErrorEvent` instance to inspect\n * @returns A plain object representation of the error\n * @internal\n */\nfunction inspectableError(err: ErrorEvent) {\n return {\n type: err.type,\n message: err.message,\n code: err.code,\n defaultPrevented: err.defaultPrevented,\n cancelable: err.cancelable,\n timeStamp: err.timeStamp,\n }\n}\n","import {createParser, type EventSourceMessage, type EventSourceParser} from 'eventsource-parser'\n\nimport {ErrorEvent, flattenError, syntaxError} from './errors.js'\nimport type {\n AddEventListenerOptions,\n EventListenerOptions,\n EventListenerOrEventListenerObject,\n EventSourceEventMap,\n EventSourceFetchInit,\n EventSourceInit,\n FetchLike,\n FetchLikeResponse,\n} from './types.js'\n\n/**\n * An `EventSource` instance opens a persistent connection to an HTTP server, which sends events\n * in `text/event-stream` format. The connection remains open until closed by calling `.close()`.\n *\n * @public\n * @example\n * ```js\n * const eventSource = new EventSource('https://example.com/stream')\n * eventSource.addEventListener('error', (error) => {\n * console.error(error)\n * })\n * eventSource.addEventListener('message', (event) => {\n * console.log('Received message:', event.data)\n * })\n * ```\n */\nexport class EventSource extends EventTarget {\n /**\n * ReadyState representing an EventSource currently trying to connect\n *\n * @public\n */\n static CONNECTING = 0 as const\n\n /**\n * ReadyState representing an EventSource connection that is open (eg connected)\n *\n * @public\n */\n static OPEN = 1 as const\n\n /**\n * ReadyState representing an EventSource connection that is closed (eg disconnected)\n *\n * @public\n */\n static CLOSED = 2 as const\n\n /**\n * ReadyState representing an EventSource currently trying to connect\n *\n * @public\n */\n readonly CONNECTING = 0 as const\n\n /**\n * ReadyState representing an EventSource connection that is open (eg connected)\n *\n * @public\n */\n readonly OPEN = 1 as const\n\n /**\n * ReadyState representing an EventSource connection that is closed (eg disconnected)\n *\n * @public\n */\n readonly CLOSED = 2 as const\n\n /**\n * Returns the state of this EventSource object's connection. It can have the values described below.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState)\n *\n * Note: typed as `number` instead of `0 | 1 | 2` for compatibility with the `EventSource` interface,\n * defined in the TypeScript `dom` library.\n *\n * @public\n */\n public get readyState(): number {\n return this.#readyState\n }\n\n /**\n * Returns the URL providing the event stream.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url)\n *\n * @public\n */\n public get url(): string {\n return this.#url.href\n }\n\n /**\n * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to \"include\", and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials)\n */\n public get withCredentials(): boolean {\n return this.#withCredentials\n }\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */\n public get onerror(): ((ev: ErrorEvent) => unknown) | null {\n return this.#onError\n }\n public set onerror(value: ((ev: ErrorEvent) => unknown) | null) {\n this.#onError = value\n }\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */\n public get onmessage(): ((ev: MessageEvent) => unknown) | null {\n return this.#onMessage\n }\n public set onmessage(value: ((ev: MessageEvent) => unknown) | null) {\n this.#onMessage = value\n }\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */\n public get onopen(): ((ev: Event) => unknown) | null {\n return this.#onOpen\n }\n public set onopen(value: ((ev: Event) => unknown) | null) {\n this.#onOpen = value\n }\n\n override addEventListener(\n type: K,\n listener: (this: EventSource, ev: EventSourceEventMap[K]) => unknown,\n options?: boolean | AddEventListenerOptions,\n ): void\n override addEventListener(\n type: string,\n listener: (this: EventSource, event: MessageEvent) => unknown,\n options?: boolean | AddEventListenerOptions,\n ): void\n override addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): void\n override addEventListener(\n type: string,\n listener:\n | ((this: EventSource, event: MessageEvent) => unknown)\n | EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): void {\n const listen = listener as (this: EventSource, event: Event) => unknown\n super.addEventListener(type, listen, options)\n }\n\n override removeEventListener(\n type: K,\n listener: (this: EventSource, ev: EventSourceEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void\n override removeEventListener(\n type: string,\n listener: (this: EventSource, event: MessageEvent) => unknown,\n options?: boolean | EventListenerOptions,\n ): void\n override removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void\n override removeEventListener(\n type: string,\n listener:\n | ((this: EventSource, event: MessageEvent) => unknown)\n | EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void {\n const listen = listener as (this: EventSource, event: Event) => unknown\n super.removeEventListener(type, listen, options)\n }\n\n constructor(url: string | URL, eventSourceInitDict?: EventSourceInit) {\n super()\n\n try {\n if (url instanceof URL) {\n this.#url = url\n } else if (typeof url === 'string') {\n this.#url = new URL(url, getBaseURL())\n } else {\n throw new Error('Invalid URL')\n }\n } catch (err) {\n throw syntaxError('An invalid or illegal string was specified')\n }\n\n this.#parser = createParser({\n onEvent: this.#onEvent,\n onRetry: this.#onRetryChange,\n })\n\n this.#readyState = this.CONNECTING\n this.#reconnectInterval = 3000\n this.#fetch = eventSourceInitDict?.fetch ?? globalThis.fetch\n this.#withCredentials = eventSourceInitDict?.withCredentials ?? false\n\n this.#connect()\n }\n\n /**\n * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close)\n *\n * @public\n */\n close(): void {\n if (this.#reconnectTimer) clearTimeout(this.#reconnectTimer)\n if (this.#readyState === this.CLOSED) return\n if (this.#controller) this.#controller.abort()\n this.#readyState = this.CLOSED\n this.#controller = undefined\n }\n\n // PRIVATES FOLLOW\n\n /**\n * Current connection state\n *\n * @internal\n */\n #readyState: number\n\n /**\n * Original URL used to connect.\n *\n * Note that this will stay the same even after a redirect.\n *\n * @internal\n */\n #url: URL\n\n /**\n * The destination URL after a redirect. Is reset on reconnection.\n *\n * @internal\n */\n #redirectUrl: URL | undefined\n\n /**\n * Whether to include credentials in the request\n *\n * @internal\n */\n #withCredentials: boolean\n\n /**\n * The fetch implementation to use\n *\n * @internal\n */\n #fetch: FetchLike\n\n /**\n * The reconnection time in milliseconds\n *\n * @internal\n */\n #reconnectInterval: number\n\n /**\n * Reference to an ongoing reconnect attempt, if any\n *\n * @internal\n */\n #reconnectTimer: ReturnType | undefined\n\n /**\n * The last event ID seen by the EventSource, which will be sent as `Last-Event-ID` in the\n * request headers on a reconnection attempt.\n *\n * @internal\n */\n #lastEventId: string | null = null\n\n /**\n * The AbortController instance used to abort the fetch request\n *\n * @internal\n */\n #controller: AbortController | undefined\n\n /**\n * Instance of an EventSource parser (`eventsource-parser` npm module)\n *\n * @internal\n */\n #parser: EventSourceParser\n\n /**\n * Holds the current error handler, attached through `onerror` property directly.\n * Note that `addEventListener('error', …)` will not be stored here.\n *\n * @internal\n */\n #onError: ((ev: ErrorEvent) => unknown) | null = null\n\n /**\n * Holds the current message handler, attached through `onmessage` property directly.\n * Note that `addEventListener('message', …)` will not be stored here.\n *\n * @internal\n */\n #onMessage: ((ev: MessageEvent) => unknown) | null = null\n\n /**\n * Holds the current open handler, attached through `onopen` property directly.\n * Note that `addEventListener('open', …)` will not be stored here.\n *\n * @internal\n */\n #onOpen: ((ev: Event) => unknown) | null = null\n\n /**\n * Connect to the given URL and start receiving events\n *\n * @internal\n */\n #connect() {\n this.#readyState = this.CONNECTING\n this.#controller = new AbortController()\n\n // Browser tests are failing if we directly call `this.#fetch()`, thus the indirection.\n const fetch = this.#fetch\n fetch(this.#url, this.#getRequestOptions())\n .then(this.#onFetchResponse)\n .catch(this.#onFetchError)\n }\n\n /**\n * Handles the fetch response\n *\n * @param response - The Fetch(ish) response\n * @internal\n */\n #onFetchResponse = async (response: FetchLikeResponse) => {\n this.#parser.reset()\n\n const {body, redirected, status, headers} = response\n\n // [spec] a client can be told to stop reconnecting using the HTTP 204 No Content response code.\n if (status === 204) {\n // We still need to emit an error event - this mirrors the browser behavior,\n // and without it there is no way to tell the user that the connection was closed.\n this.#failConnection('Server sent HTTP 204, not reconnecting', 204)\n this.close()\n return\n }\n\n // [spec] …Event stream requests can be redirected using HTTP 301 and 307 redirects as with\n // [spec] normal HTTP requests.\n // Spec does not say anything about other redirect codes (302, 308), but this seems an\n // unintended omission, rather than a feature. Browsers will happily redirect on other 3xxs's.\n if (redirected) {\n this.#redirectUrl = new URL(response.url)\n } else {\n this.#redirectUrl = undefined\n }\n\n // [spec] if res's status is not 200, …, then fail the connection.\n if (status !== 200) {\n this.#failConnection(`Non-200 status code (${status})`, status)\n return\n }\n\n // [spec] …or if res's `Content-Type` is not `text/event-stream`, then fail the connection.\n const contentType = headers.get('content-type') || ''\n if (!contentType.startsWith('text/event-stream')) {\n this.#failConnection('Invalid content type, expected \"text/event-stream\"', status)\n return\n }\n\n // [spec] …if the readyState attribute is set to a value other than CLOSED…\n if (this.#readyState === this.CLOSED) {\n return\n }\n\n // [spec] …sets the readyState attribute to OPEN and fires an event\n // [spec] …named open at the EventSource object.\n this.#readyState = this.OPEN\n\n const openEvent = new Event('open')\n this.#onOpen?.(openEvent)\n this.dispatchEvent(openEvent)\n\n // Ensure that the response stream is a web stream\n if (typeof body !== 'object' || !body || !('getReader' in body)) {\n this.#failConnection('Invalid response body, expected a web ReadableStream', status)\n this.close() // This should only happen if `fetch` provided is \"faulty\" - don't reconnect\n return\n }\n\n const decoder = new TextDecoder()\n\n const reader = body.getReader()\n let open = true\n\n do {\n const {done, value} = await reader.read()\n if (value) {\n this.#parser.feed(decoder.decode(value, {stream: !done}))\n }\n\n if (!done) {\n continue\n }\n\n open = false\n this.#parser.reset()\n\n this.#scheduleReconnect()\n } while (open)\n }\n\n /**\n * Handles rejected requests for the EventSource endpoint\n *\n * @param err - The error from `fetch()`\n * @internal\n */\n #onFetchError = (err: Error & {type?: string}) => {\n this.#controller = undefined\n\n // We expect abort errors when the user manually calls `close()` - ignore those\n if (err.name === 'AbortError' || err.type === 'aborted') {\n return\n }\n\n this.#scheduleReconnect(flattenError(err))\n }\n\n /**\n * Get request options for the `fetch()` request\n *\n * @returns The request options\n * @internal\n */\n #getRequestOptions(): EventSourceFetchInit {\n const lastEvent = this.#lastEventId ? {'Last-Event-ID': this.#lastEventId} : undefined\n\n const init: EventSourceFetchInit = {\n // [spec] Let `corsAttributeState` be `Anonymous`…\n // [spec] …will have their mode set to \"cors\"…\n mode: 'cors',\n redirect: 'follow',\n headers: {Accept: 'text/event-stream', ...lastEvent},\n cache: 'no-store',\n signal: this.#controller?.signal,\n }\n\n // Some environments crash if attempting to set `credentials` where it is not supported,\n // eg on Cloudflare Workers. To avoid this, we only set it in browser-like environments.\n if ('window' in globalThis) {\n // [spec] …and their credentials mode set to \"same-origin\"\n // [spec] …if the `withCredentials` attribute is `true`, set the credentials mode to \"include\"…\n init.credentials = this.withCredentials ? 'include' : 'same-origin'\n }\n\n return init\n }\n\n /**\n * Called by EventSourceParser instance when an event has successfully been parsed\n * and is ready to be processed.\n *\n * @param event - The parsed event\n * @internal\n */\n #onEvent = (event: EventSourceMessage) => {\n if (typeof event.id === 'string') {\n this.#lastEventId = event.id\n }\n\n const messageEvent = new MessageEvent(event.event || 'message', {\n data: event.data,\n origin: this.#redirectUrl ? this.#redirectUrl.origin : this.#url.origin,\n lastEventId: event.id || '',\n })\n\n // The `onmessage` property of the EventSource instance only triggers on messages without an\n // `event` field, or ones that explicitly set `message`.\n if (this.#onMessage && (!event.event || event.event === 'message')) {\n this.#onMessage(messageEvent)\n }\n\n this.dispatchEvent(messageEvent)\n }\n\n /**\n * Called by EventSourceParser instance when a new reconnection interval is received\n * from the EventSource endpoint.\n *\n * @param value - The new reconnection interval in milliseconds\n * @internal\n */\n #onRetryChange = (value: number) => {\n this.#reconnectInterval = value\n }\n\n /**\n * Handles the process referred to in the EventSource specification as \"failing a connection\".\n *\n * @param error - The error causing the connection to fail\n * @param code - The HTTP status code, if available\n * @internal\n */\n #failConnection(message?: string, code?: number) {\n // [spec] …if the readyState attribute is set to a value other than CLOSED,\n // [spec] sets the readyState attribute to CLOSED…\n if (this.#readyState !== this.CLOSED) {\n this.#readyState = this.CLOSED\n }\n\n // [spec] …and fires an event named `error` at the `EventSource` object.\n // [spec] Once the user agent has failed the connection, it does not attempt to reconnect.\n // [spec] > Implementations are especially encouraged to report detailed information\n // [spec] > to their development consoles whenever an error event is fired, since little\n // [spec] > to no information can be made available in the events themselves.\n // Printing to console is not very programatically helpful, though, so we emit a custom event.\n const errorEvent = new ErrorEvent('error', {code, message})\n\n this.#onError?.(errorEvent)\n this.dispatchEvent(errorEvent)\n }\n\n /**\n * Schedules a reconnection attempt against the EventSource endpoint.\n *\n * @param message - The error causing the connection to fail\n * @param code - The HTTP status code, if available\n * @internal\n */\n #scheduleReconnect(message?: string, code?: number) {\n // [spec] If the readyState attribute is set to CLOSED, abort the task.\n if (this.#readyState === this.CLOSED) {\n return\n }\n\n // [spec] Set the readyState attribute to CONNECTING.\n this.#readyState = this.CONNECTING\n\n // [spec] Fire an event named `error` at the EventSource object.\n const errorEvent = new ErrorEvent('error', {code, message})\n this.#onError?.(errorEvent)\n this.dispatchEvent(errorEvent)\n\n // [spec] Wait a delay equal to the reconnection time of the event source.\n this.#reconnectTimer = setTimeout(this.#reconnect, this.#reconnectInterval)\n }\n\n /**\n * Reconnects to the EventSource endpoint after a disconnect/failure\n *\n * @internal\n */\n #reconnect = () => {\n this.#reconnectTimer = undefined\n\n // [spec] If the EventSource's readyState attribute is not set to CONNECTING, then return.\n if (this.#readyState !== this.CONNECTING) {\n return\n }\n\n this.#connect()\n }\n}\n\n// Provides a way to detect that the EventSource implementation supports passing `fetch`\n// that can be used to customize the request, eg custom headers and similar.\nObject.defineProperty(EventSource, Symbol.for('eventsource.supports-fetch-override'), {\n value: true,\n writable: false,\n configurable: false,\n enumerable: false,\n})\n\n/**\n * According to spec, when constructing a URL:\n * > 1. Let baseURL be environment's base URL, if environment is a Document object\n * > 2. Return the result of applying the URL parser to url, with baseURL.\n *\n * Thus we should use `document.baseURI` if available, since it can be set through a base tag.\n *\n * @returns The base URL, if available - otherwise `undefined`\n * @internal\n */\nfunction getBaseURL(): string | undefined {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const doc = 'document' in globalThis ? (globalThis as any).document : undefined\n return doc && typeof doc === 'object' && 'baseURI' in doc && typeof doc.baseURI === 'string'\n ? doc.baseURI\n : undefined\n}\n"],"names":["_a","createParser"],"mappings":";;;AAOO,MAAM,mBAAmB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwBpC,YACE,MACA,oBACA;AAlCJ,QAAA,IAAA;AAmCI,UAAM,IAAI,GACV,KAAK,QAAO,KAAoB,sBAAA,OAAA,SAAA,mBAAA,SAApB,OAA4B,KAAA,QACxC,KAAK,WAAU,KAAoB,sBAAA,OAAA,SAAA,mBAAA,YAApB,OAA+B,KAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAehD,CAAC,OAAO,IAAI,4BAA4B,CAAC,EACvC,QACA,SACA,SACQ;AACR,WAAO,QAAQ,iBAAiB,IAAI,GAAG,OAAO;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAchD,CAAC,OAAO,IAAI,oBAAoB,CAAC,EAC/B,SACA,SACQ;AACR,WAAO,QAAQ,iBAAiB,IAAI,GAAG,OAAO;AAAA,EAAA;AAElD;AAUO,SAAS,YAAY,SAA8B;AAKxD,QAAM,eAAgB,WAAmB;AACrC,SAAA,OAAO,gBAAiB,aACnB,IAAI,aAAa,SAAS,aAAa,IAGzC,IAAI,YAAY,OAAO;AAChC;AAUO,SAAS,aAAa,KAAsB;AACjD,SAAM,eAAe,QAIjB,YAAY,OAAO,MAAM,QAAQ,IAAI,MAAM,IACtC,IAAI,OAAO,IAAI,YAAY,EAAE,KAAK,IAAI,IAG3C,WAAW,OAAO,IAAI,iBAAiB,QAClC,GAAG,GAAG,KAAK,aAAa,IAAI,KAAK,CAAC,KAGpC,IAAI,UAXF,GAAG,GAAG;AAYjB;AASA,SAAS,iBAAiB,KAAiB;AAClC,SAAA;AAAA,IACL,MAAM,IAAI;AAAA,IACV,SAAS,IAAI;AAAA,IACb,MAAM,IAAI;AAAA,IACV,kBAAkB,IAAI;AAAA,IACtB,YAAY,IAAI;AAAA,IAChB,WAAW,IAAI;AAAA,EACjB;AACF;;;0pBC5IA,aAAA,MAAA,cAAA,kBAAA,QAAA,oBAAA,iBAAA,cAAA,aAAA,SAAA,UAAA,YAAA,SAAA,wBAAA,YAAA,kBAAA,eAAA,sBAAA,UAAA,gBAAA,mBAAA,sBAAA;AA8BO,MAAM,oBAAoB,YAAY;AAAA,EAyJ3C,YAAY,KAAmB,qBAAuC;AAvLxE,QAAA,IAAA;AAwLU,UAAA,GA1JH,aAAA,MAAA,sBAAA,GA2BL,KAAS,aAAa,GAOtB,KAAS,OAAO,GAOhB,KAAS,SAAS,GAkKlB,aAAA,MAAA,WAAA,GASA,aAAA,MAAA,IAAA,GAOA,aAAA,MAAA,YAAA,GAOA,aAAA,MAAA,gBAAA,GAOA,aAAA,MAAA,MAAA,GAOA,aAAA,MAAA,kBAAA,GAOA,aAAA,MAAA,eAAA,GAQ8B,aAAA,MAAA,cAAA,IAAA,GAO9B,aAAA,MAAA,WAAA,GAOA,aAAA,MAAA,OAAA,GAQiD,aAAA,MAAA,UAAA,IAAA,GAQI,aAAA,MAAA,YAAA,IAAA,GAQV,aAAA,MAAA,SAAA,IAAA,GAwB3C,aAAA,MAAA,kBAAmB,OAAO,aAAgC;AA3V5D,UAAAA;AA4VI,mBAAA,MAAK,SAAQ,MAAM;AAEnB,YAAM,EAAC,MAAM,YAAY,QAAQ,QAAW,IAAA;AAG5C,UAAI,WAAW,KAAK;AAGlB,wBAAA,MAAK,wBAAL,iBAAA,EAAA,KAAA,MAAqB,0CAA0C,GAAA,GAC/D,KAAK,MAAM;AACX;AAAA,MAAA;AAcF,UAPI,aACF,aAAA,MAAK,cAAe,IAAI,IAAI,SAAS,GAAG,CAAA,IAExC,aAAK,MAAA,cAAe,MAIlB,GAAA,WAAW,KAAK;AAClB,wBAAA,MAAK,wBAAL,iBAAA,EAAA,KAAA,MAAqB,wBAAwB,MAAM,KAAK,MAAA;AACxD;AAAA,MAAA;AAKE,UAAA,EADgB,QAAQ,IAAI,cAAc,KAAK,IAClC,WAAW,mBAAmB,GAAG;AAC3C,wBAAA,MAAA,wBAAA,iBAAA,EAAL,WAAqB,sDAAsD,MAAA;AAC3E;AAAA,MAAA;AAIE,UAAA,aAAA,MAAK,iBAAgB,KAAK;AAC5B;AAKF,mBAAA,MAAK,aAAc,KAAK,IAAA;AAElB,YAAA,YAAY,IAAI,MAAM,MAAM;AAKlC,WAJAA,MAAK,aAAA,MAAA,OAAA,MAAL,QAAeA,IAAA,KAAA,MAAA,SAAA,GACf,KAAK,cAAc,SAAS,GAGxB,OAAO,QAAS,YAAY,CAAC,QAAQ,EAAE,eAAe,OAAO;AAC/D,wBAAA,MAAK,wBAAL,iBAAA,EAAA,KAAA,MAAqB,wDAAwD,MAAA,GAC7E,KAAK,MAAM;AACX;AAAA,MAAA;AAGF,YAAM,UAAU,IAAI,YAAA,GAEd,SAAS,KAAK,UAAU;AAC9B,UAAI,OAAO;AAER,SAAA;AACD,cAAM,EAAC,MAAM,MAAS,IAAA,MAAM,OAAO,KAAK;AACpC,iBACF,mBAAK,OAAQ,EAAA,KAAK,QAAQ,OAAO,OAAO,EAAC,QAAQ,CAAC,KAAA,CAAK,CAAC,GAGrD,SAIL,OAAO,IACP,mBAAK,OAAQ,EAAA,MAEb,GAAA,gBAAA,MAAK,wBAAL,oBAAA,EAAA,KAAA,IAAA;AAAA,MAAA,SACO;AAAA,IAAA,CACX,GAQA,aAAA,MAAA,eAAgB,CAAC,QAAiC;AAChD,mBAAK,MAAA,aAAc,MAGf,GAAA,EAAA,IAAI,SAAS,gBAAgB,IAAI,SAAS,cAI9C,gBAAA,MAAK,wBAAL,oBAAA,EAAA,KAAA,MAAwB,aAAa,GAAG,CAAA;AAAA,IAAA,CAC1C,GAuCA,aAAA,MAAA,UAAW,CAAC,UAA8B;AACpC,aAAO,MAAM,MAAO,YACtB,aAAA,MAAK,cAAe,MAAM,EAAA;AAG5B,YAAM,eAAe,IAAI,aAAa,MAAM,SAAS,WAAW;AAAA,QAC9D,MAAM,MAAM;AAAA,QACZ,QAAQ,aAAK,MAAA,YAAA,IAAe,mBAAK,YAAa,EAAA,SAAS,mBAAK,IAAK,EAAA;AAAA,QACjE,aAAa,MAAM,MAAM;AAAA,MAAA,CAC1B;AAIG,mBAAK,MAAA,UAAA,MAAe,CAAC,MAAM,SAAS,MAAM,UAAU,cACtD,aAAA,MAAK,UAAL,EAAA,KAAA,MAAgB,YAGlB,GAAA,KAAK,cAAc,YAAY;AAAA,IAAA,CACjC,GASA,aAAA,MAAA,gBAAiB,CAAC,UAAkB;AAClC,mBAAA,MAAK,oBAAqB,KAAA;AAAA,IAAA,CAC5B,GA0DA,aAAA,MAAA,YAAa,MAAM;AACjB,mBAAA,MAAK,iBAAkB,MAGnB,GAAA,aAAA,MAAK,iBAAgB,KAAK,cAI9B,sBAAK,wBAAL,UAAA,EAAA,KAAA,IAAA;AAAA,IAAA,CACF;AAtYM,QAAA;AACF,UAAI,eAAe;AACjB,qBAAA,MAAK,MAAO,GAAA;AAAA,eACH,OAAO,OAAQ;AACxB,qBAAA,MAAK,MAAO,IAAI,IAAI,KAAK,YAAY,CAAA;AAAA;AAE/B,cAAA,IAAI,MAAM,aAAa;AAAA,IAAA,QAEnB;AACZ,YAAM,YAAY,4CAA4C;AAAA,IAAA;AAGhE,iBAAA,MAAK,SAAUC,+BAAa;AAAA,MAC1B,SAAS,aAAK,MAAA,QAAA;AAAA,MACd,SAAS,aAAK,MAAA,cAAA;AAAA,IAAA,CACf,IAED,aAAK,MAAA,aAAc,KAAK,UACxB,GAAA,aAAA,MAAK,oBAAqB,GAAA,GAC1B,aAAK,MAAA,SAAS,gEAAqB,UAArB,OAAA,KAA8B,WAAW,KAAA,GACvD,aAAK,MAAA,mBAAmB,gEAAqB,oBAArB,OAAA,KAAwC,EAEhE,GAAA,gBAAA,MAAK,wBAAL,UAAA,EAAA,KAAA,IAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA7HF,IAAW,aAAqB;AAC9B,WAAO,aAAK,MAAA,WAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUd,IAAW,MAAc;AACvB,WAAO,mBAAK,IAAK,EAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQnB,IAAW,kBAA2B;AACpC,WAAO,aAAK,MAAA,gBAAA;AAAA,EAAA;AAAA;AAAA,EAId,IAAW,UAAgD;AACzD,WAAO,aAAK,MAAA,QAAA;AAAA,EAAA;AAAA,EAEd,IAAW,QAAQ,OAA6C;AAC9D,iBAAA,MAAK,UAAW,KAAA;AAAA,EAAA;AAAA;AAAA,EAIlB,IAAW,YAAoD;AAC7D,WAAO,aAAK,MAAA,UAAA;AAAA,EAAA;AAAA,EAEd,IAAW,UAAU,OAA+C;AAClE,iBAAA,MAAK,YAAa,KAAA;AAAA,EAAA;AAAA;AAAA,EAIpB,IAAW,SAA0C;AACnD,WAAO,aAAK,MAAA,OAAA;AAAA,EAAA;AAAA,EAEd,IAAW,OAAO,OAAwC;AACxD,iBAAA,MAAK,SAAU,KAAA;AAAA,EAAA;AAAA,EAkBR,iBACP,MACA,UAGA,SACM;AACN,UAAM,SAAS;AACT,UAAA,iBAAiB,MAAM,QAAQ,OAAO;AAAA,EAAA;AAAA,EAkBrC,oBACP,MACA,UAGA,SACM;AACN,UAAM,SAAS;AACT,UAAA,oBAAoB,MAAM,QAAQ,OAAO;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsCjD,QAAc;AACR,iBAAA,MAAK,oBAAiB,aAAa,aAAA,MAAK,gBAAe,GACvD,aAAA,MAAK,iBAAgB,KAAK,WAC1B,mBAAK,WAAa,KAAA,aAAA,MAAK,aAAY,MAAM,GAC7C,mBAAK,aAAc,KAAK,MACxB,GAAA,aAAA,MAAK,aAAc,MAAA;AAAA,EAAA;AAkWvB;AAxVE,cASA,oBAAA,QAAA,GAAA,OAAA,oBAAA,QAAA,GAOA,eAOA,oBAAA,QAAA,GAAA,mBAAA,oBAAA,WAOA,SAOA,oBAAA,QAAA,GAAA,qBAAA,oBAAA,QAAA,GAOA,kBAQA,oBAAA,QAAA,GAAA,eAAA,oBAAA,QAAA,GAOA,cAOA,oBAAA,QAAA,GAAA,UAAA,oBAAA,QAAA,GAQA,WAQA,oBAAA,WAAA,aAAA,oBAAA,WAQA,UArSK,oBAAA,QAAA,GAAA,yBAAA,oBAAA,QAAA;AAAA;AAAA;AAAA;AAAA;AA4SL,aAAQ,WAAG;AACJ,eAAA,MAAA,aAAc,KAAK,UACxB,GAAA,aAAA,MAAK,aAAc,IAAI,gBAAA,CAGT,GAAA,aAAA,MAAK,MACb,EAAA,aAAA,MAAK,OAAM,gBAAK,MAAA,wBAAA,oBAAA,EAAL,UAAyB,EACvC,KAAK,mBAAK,gBAAgB,CAAA,EAC1B,MAAM,aAAA,MAAK,aAAa,CAAA;AAC7B,GAQA,mBAqFA,oBAAA,QAAA,GAAA,gBAAA,oBAAA,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBA,uBAAkB,WAAyB;AAjc7C,MAAA;AAocI,QAAM,OAA6B;AAAA;AAAA;AAAA,IAGjC,MAAM;AAAA,IACN,UAAU;AAAA,IACV,SAAS,EAAC,QAAQ,qBAAqB,GAPvB,aAAA,MAAK,YAAe,IAAA,EAAC,iBAAiB,aAAA,MAAK,YAAY,EAAA,IAAI,OAOxB;AAAA,IACnD,OAAO;AAAA,IACP,SAAQ,KAAK,aAAA,MAAA,WAAA,MAAL,OAAkB,SAAA,GAAA;AAAA,EAC5B;AAIA,SAAI,YAAY,eAGd,KAAK,cAAc,KAAK,kBAAkB,YAAY,gBAGjD;AACT,GASA,WA2BA,oBAAA,QAAA,GAAA,iBAAA,oBAAA,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,oBAAe,SAAC,SAAkB,MAAe;AAtgBnD,MAAA;AAygBQ,qBAAK,WAAgB,MAAA,KAAK,UAC5B,aAAA,MAAK,aAAc,KAAK,MAAA;AAS1B,QAAM,aAAa,IAAI,WAAW,SAAS,EAAC,MAAM,SAAQ;AAE1D,GAAA,KAAA,aAAA,MAAK,QAAL,MAAA,QAAA,GAAA,KAAA,MAAgB,UAChB,GAAA,KAAK,cAAc,UAAU;AAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,uBAAkB,SAAC,SAAkB,MAAe;AAhiBtD,MAAA;AAkiBQ,MAAA,aAAA,MAAK,iBAAgB,KAAK;AAC5B;AAIF,eAAA,MAAK,aAAc,KAAK,UAAA;AAGxB,QAAM,aAAa,IAAI,WAAW,SAAS,EAAC,MAAM,SAAQ;AAC1D,GAAA,KAAA,aAAA,MAAK,QAAL,MAAA,QAAA,GAAA,KAAA,MAAgB,UAChB,GAAA,KAAK,cAAc,UAAU,GAG7B,aAAA,MAAK,iBAAkB,WAAW,aAAK,MAAA,UAAA,GAAY,mBAAK,kBAAkB,CAAA,CAAA;AAC5E,GAOA,aAAA,oBAAA,QAAA;AAAA;AAAA;AAAA;AAAA;AAzhBW,YAMJ,aAAa;AAAA;AAAA;AAAA;AAAA;AANT,YAaJ,OAAO;AAAA;AAAA;AAAA;AAAA;AAbH,YAoBJ,SAAS;AAmhBlB,OAAO,eAAe,aAAa,OAAO,IAAI,qCAAqC,GAAG;AAAA,EACpF,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AACd,CAAC;AAYD,SAAS,aAAiC;AAExC,QAAM,MAAM,cAAc,aAAc,WAAmB,WAAW;AAC/D,SAAA,OAAO,OAAO,OAAQ,YAAY,aAAa,OAAO,OAAO,IAAI,WAAY,WAChF,IAAI,UACJ;AACN;;;"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/eventsource/dist/index.d.cts b/sdks/nodejs/node_modules/eventsource/dist/index.d.cts deleted file mode 100644 index 86a468f..0000000 --- a/sdks/nodejs/node_modules/eventsource/dist/index.d.cts +++ /dev/null @@ -1,325 +0,0 @@ -/** - * Mirrors the official DOM typings (sorta). - * - * @public - */ -export declare interface AddEventListenerOptions extends EventListenerOptions { - /** When `true`, the listener is automatically removed when it is first invoked. Default: `false`. */ - once?: boolean - /** When `true`, serves as a hint that the listener will not call the `Event` object's `preventDefault()` method. Default: false. */ - passive?: boolean - /** The listener will be removed when the given AbortSignal object's `abort()` method is called. */ - signal?: AbortSignal -} - -/** - * An extended version of the `Event` emitted by the `EventSource` object when an error occurs. - * While the spec does not include any additional properties, we intentionally go beyond the spec - * and provide some (minimal) additional information to aid in debugging. - * - * @public - */ -export declare class ErrorEvent extends Event { - /** - * HTTP status code, if this was triggered by an HTTP error - * Note: this is not part of the spec, but is included for better error handling. - * - * @public - */ - code?: number | undefined - /** - * Optional message attached to the error. - * Note: this is not part of the spec, but is included for better error handling. - * - * @public - */ - message?: string | undefined - /** - * Constructs a new `ErrorEvent` instance. This is typically not called directly, - * but rather emitted by the `EventSource` object when an error occurs. - * - * @param type - The type of the event (should be "error") - * @param errorEventInitDict - Optional properties to include in the error event - */ - constructor( - type: string, - errorEventInitDict?: { - message?: string | undefined - code?: number | undefined - }, - ) -} - -/** - * Mirrors the official DOM typings. - * - * @public - */ -export declare interface EventListener { - (evt: Event | MessageEvent): void -} - -/** - * Mirrors the official DOM typings. - * - * @public - */ -export declare interface EventListenerObject { - handleEvent(object: Event): void -} - -/** - * Mirrors the official DOM typings (sorta). - * - * @public - */ -export declare interface EventListenerOptions { - /** Not directly used by Node.js. Added for API completeness. Default: `false`. */ - capture?: boolean -} - -/** - * Mirrors the official DOM typings. - * - * @public - */ -export declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject - -/** - * An `EventSource` instance opens a persistent connection to an HTTP server, which sends events - * in `text/event-stream` format. The connection remains open until closed by calling `.close()`. - * - * @public - * @example - * ```js - * const eventSource = new EventSource('https://example.com/stream') - * eventSource.addEventListener('error', (error) => { - * console.error(error) - * }) - * eventSource.addEventListener('message', (event) => { - * console.log('Received message:', event.data) - * }) - * ``` - */ -declare class EventSource_2 extends EventTarget { - #private - /** - * ReadyState representing an EventSource currently trying to connect - * - * @public - */ - static CONNECTING: 0 - /** - * ReadyState representing an EventSource connection that is open (eg connected) - * - * @public - */ - static OPEN: 1 - /** - * ReadyState representing an EventSource connection that is closed (eg disconnected) - * - * @public - */ - static CLOSED: 2 - /** - * ReadyState representing an EventSource currently trying to connect - * - * @public - */ - readonly CONNECTING: 0 - /** - * ReadyState representing an EventSource connection that is open (eg connected) - * - * @public - */ - readonly OPEN: 1 - /** - * ReadyState representing an EventSource connection that is closed (eg disconnected) - * - * @public - */ - readonly CLOSED: 2 - /** - * Returns the state of this EventSource object's connection. It can have the values described below. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState) - * - * Note: typed as `number` instead of `0 | 1 | 2` for compatibility with the `EventSource` interface, - * defined in the TypeScript `dom` library. - * - * @public - */ - get readyState(): number - /** - * Returns the URL providing the event stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url) - * - * @public - */ - get url(): string - /** - * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to "include", and false otherwise. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials) - */ - get withCredentials(): boolean - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */ - get onerror(): ((ev: ErrorEvent) => unknown) | null - set onerror(value: ((ev: ErrorEvent) => unknown) | null) - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */ - get onmessage(): ((ev: MessageEvent) => unknown) | null - set onmessage(value: ((ev: MessageEvent) => unknown) | null) - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */ - get onopen(): ((ev: Event) => unknown) | null - set onopen(value: ((ev: Event) => unknown) | null) - addEventListener( - type: K, - listener: (this: EventSource_2, ev: EventSourceEventMap[K]) => unknown, - options?: boolean | AddEventListenerOptions, - ): void - addEventListener( - type: string, - listener: (this: EventSource_2, event: MessageEvent) => unknown, - options?: boolean | AddEventListenerOptions, - ): void - addEventListener( - type: string, - listener: EventListenerOrEventListenerObject, - options?: boolean | AddEventListenerOptions, - ): void - removeEventListener( - type: K, - listener: (this: EventSource_2, ev: EventSourceEventMap[K]) => unknown, - options?: boolean | EventListenerOptions, - ): void - removeEventListener( - type: string, - listener: (this: EventSource_2, event: MessageEvent) => unknown, - options?: boolean | EventListenerOptions, - ): void - removeEventListener( - type: string, - listener: EventListenerOrEventListenerObject, - options?: boolean | EventListenerOptions, - ): void - constructor(url: string | URL, eventSourceInitDict?: EventSourceInit) - /** - * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close) - * - * @public - */ - close(): void -} -export {EventSource_2 as EventSource} - -/** - * Mirrors the official DOM typings, with the exception of the extended ErrorEvent. - * - * @public - */ -export declare interface EventSourceEventMap { - error: ErrorEvent - message: MessageEvent - open: Event -} - -/** - * Subset of `RequestInit` used for `fetch()` calls made by the `EventSource` class. - * As we know that we will be passing certain values, we can be more specific and have - * users not have to do optional chaining and similar for things that will always be there. - * - * @public - */ -export declare interface EventSourceFetchInit { - /** An AbortSignal to set request's signal. Typed as `any` because of polyfill inconsistencies. */ - signal: - | { - aborted: boolean - } - | any - /** A Headers object, an object literal, or an array of two-item arrays to set request's headers. */ - headers: { - [key: string]: string - Accept: 'text/event-stream' - } - /** A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode. */ - mode: 'cors' | 'no-cors' | 'same-origin' - /** A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request's credentials. */ - credentials?: 'include' | 'omit' | 'same-origin' - /** Controls how the request is cached. */ - cache: 'no-store' - /** A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect. */ - redirect: 'error' | 'follow' | 'manual' -} - -/** - * Mirrors the official DOM typings (for the most part) - * - * @public - */ -export declare interface EventSourceInit { - /** - * A boolean value, defaulting to `false`, indicating if CORS should be set to `include` credentials. - */ - withCredentials?: boolean - /** - * Optional fetch implementation to use. Defaults to `globalThis.fetch`. - * Can also be used for advanced use cases like mocking, proxying, custom certs etc. - */ - fetch?: FetchLike -} - -/** - * Stripped down version of `fetch()`, only defining the parts we care about. - * This ensures it should work with "most" fetch implementations. - * - * @public - */ -export declare type FetchLike = ( - url: string | URL, - init: EventSourceFetchInit, -) => Promise - -/** - * Minimal version of the `Response` type returned by `fetch()`. - * - * @public - */ -export declare interface FetchLikeResponse { - readonly body: - | { - getReader(): ReaderLike - } - | Response['body'] - | null - readonly url: string - readonly status: number - readonly redirected: boolean - readonly headers: { - get(name: string): string | null - } -} - -/** - * Stripped down version of `ReadableStreamDefaultReader`, only defining the parts we care about. - * - * @public - */ -export declare interface ReaderLike { - read(): Promise< - | { - done: false - value: unknown - } - | { - done: true - value?: undefined - } - > - cancel(): Promise -} - -export {} diff --git a/sdks/nodejs/node_modules/eventsource/dist/index.d.ts b/sdks/nodejs/node_modules/eventsource/dist/index.d.ts deleted file mode 100644 index 86a468f..0000000 --- a/sdks/nodejs/node_modules/eventsource/dist/index.d.ts +++ /dev/null @@ -1,325 +0,0 @@ -/** - * Mirrors the official DOM typings (sorta). - * - * @public - */ -export declare interface AddEventListenerOptions extends EventListenerOptions { - /** When `true`, the listener is automatically removed when it is first invoked. Default: `false`. */ - once?: boolean - /** When `true`, serves as a hint that the listener will not call the `Event` object's `preventDefault()` method. Default: false. */ - passive?: boolean - /** The listener will be removed when the given AbortSignal object's `abort()` method is called. */ - signal?: AbortSignal -} - -/** - * An extended version of the `Event` emitted by the `EventSource` object when an error occurs. - * While the spec does not include any additional properties, we intentionally go beyond the spec - * and provide some (minimal) additional information to aid in debugging. - * - * @public - */ -export declare class ErrorEvent extends Event { - /** - * HTTP status code, if this was triggered by an HTTP error - * Note: this is not part of the spec, but is included for better error handling. - * - * @public - */ - code?: number | undefined - /** - * Optional message attached to the error. - * Note: this is not part of the spec, but is included for better error handling. - * - * @public - */ - message?: string | undefined - /** - * Constructs a new `ErrorEvent` instance. This is typically not called directly, - * but rather emitted by the `EventSource` object when an error occurs. - * - * @param type - The type of the event (should be "error") - * @param errorEventInitDict - Optional properties to include in the error event - */ - constructor( - type: string, - errorEventInitDict?: { - message?: string | undefined - code?: number | undefined - }, - ) -} - -/** - * Mirrors the official DOM typings. - * - * @public - */ -export declare interface EventListener { - (evt: Event | MessageEvent): void -} - -/** - * Mirrors the official DOM typings. - * - * @public - */ -export declare interface EventListenerObject { - handleEvent(object: Event): void -} - -/** - * Mirrors the official DOM typings (sorta). - * - * @public - */ -export declare interface EventListenerOptions { - /** Not directly used by Node.js. Added for API completeness. Default: `false`. */ - capture?: boolean -} - -/** - * Mirrors the official DOM typings. - * - * @public - */ -export declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject - -/** - * An `EventSource` instance opens a persistent connection to an HTTP server, which sends events - * in `text/event-stream` format. The connection remains open until closed by calling `.close()`. - * - * @public - * @example - * ```js - * const eventSource = new EventSource('https://example.com/stream') - * eventSource.addEventListener('error', (error) => { - * console.error(error) - * }) - * eventSource.addEventListener('message', (event) => { - * console.log('Received message:', event.data) - * }) - * ``` - */ -declare class EventSource_2 extends EventTarget { - #private - /** - * ReadyState representing an EventSource currently trying to connect - * - * @public - */ - static CONNECTING: 0 - /** - * ReadyState representing an EventSource connection that is open (eg connected) - * - * @public - */ - static OPEN: 1 - /** - * ReadyState representing an EventSource connection that is closed (eg disconnected) - * - * @public - */ - static CLOSED: 2 - /** - * ReadyState representing an EventSource currently trying to connect - * - * @public - */ - readonly CONNECTING: 0 - /** - * ReadyState representing an EventSource connection that is open (eg connected) - * - * @public - */ - readonly OPEN: 1 - /** - * ReadyState representing an EventSource connection that is closed (eg disconnected) - * - * @public - */ - readonly CLOSED: 2 - /** - * Returns the state of this EventSource object's connection. It can have the values described below. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState) - * - * Note: typed as `number` instead of `0 | 1 | 2` for compatibility with the `EventSource` interface, - * defined in the TypeScript `dom` library. - * - * @public - */ - get readyState(): number - /** - * Returns the URL providing the event stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url) - * - * @public - */ - get url(): string - /** - * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to "include", and false otherwise. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials) - */ - get withCredentials(): boolean - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */ - get onerror(): ((ev: ErrorEvent) => unknown) | null - set onerror(value: ((ev: ErrorEvent) => unknown) | null) - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */ - get onmessage(): ((ev: MessageEvent) => unknown) | null - set onmessage(value: ((ev: MessageEvent) => unknown) | null) - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */ - get onopen(): ((ev: Event) => unknown) | null - set onopen(value: ((ev: Event) => unknown) | null) - addEventListener( - type: K, - listener: (this: EventSource_2, ev: EventSourceEventMap[K]) => unknown, - options?: boolean | AddEventListenerOptions, - ): void - addEventListener( - type: string, - listener: (this: EventSource_2, event: MessageEvent) => unknown, - options?: boolean | AddEventListenerOptions, - ): void - addEventListener( - type: string, - listener: EventListenerOrEventListenerObject, - options?: boolean | AddEventListenerOptions, - ): void - removeEventListener( - type: K, - listener: (this: EventSource_2, ev: EventSourceEventMap[K]) => unknown, - options?: boolean | EventListenerOptions, - ): void - removeEventListener( - type: string, - listener: (this: EventSource_2, event: MessageEvent) => unknown, - options?: boolean | EventListenerOptions, - ): void - removeEventListener( - type: string, - listener: EventListenerOrEventListenerObject, - options?: boolean | EventListenerOptions, - ): void - constructor(url: string | URL, eventSourceInitDict?: EventSourceInit) - /** - * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close) - * - * @public - */ - close(): void -} -export {EventSource_2 as EventSource} - -/** - * Mirrors the official DOM typings, with the exception of the extended ErrorEvent. - * - * @public - */ -export declare interface EventSourceEventMap { - error: ErrorEvent - message: MessageEvent - open: Event -} - -/** - * Subset of `RequestInit` used for `fetch()` calls made by the `EventSource` class. - * As we know that we will be passing certain values, we can be more specific and have - * users not have to do optional chaining and similar for things that will always be there. - * - * @public - */ -export declare interface EventSourceFetchInit { - /** An AbortSignal to set request's signal. Typed as `any` because of polyfill inconsistencies. */ - signal: - | { - aborted: boolean - } - | any - /** A Headers object, an object literal, or an array of two-item arrays to set request's headers. */ - headers: { - [key: string]: string - Accept: 'text/event-stream' - } - /** A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode. */ - mode: 'cors' | 'no-cors' | 'same-origin' - /** A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request's credentials. */ - credentials?: 'include' | 'omit' | 'same-origin' - /** Controls how the request is cached. */ - cache: 'no-store' - /** A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect. */ - redirect: 'error' | 'follow' | 'manual' -} - -/** - * Mirrors the official DOM typings (for the most part) - * - * @public - */ -export declare interface EventSourceInit { - /** - * A boolean value, defaulting to `false`, indicating if CORS should be set to `include` credentials. - */ - withCredentials?: boolean - /** - * Optional fetch implementation to use. Defaults to `globalThis.fetch`. - * Can also be used for advanced use cases like mocking, proxying, custom certs etc. - */ - fetch?: FetchLike -} - -/** - * Stripped down version of `fetch()`, only defining the parts we care about. - * This ensures it should work with "most" fetch implementations. - * - * @public - */ -export declare type FetchLike = ( - url: string | URL, - init: EventSourceFetchInit, -) => Promise - -/** - * Minimal version of the `Response` type returned by `fetch()`. - * - * @public - */ -export declare interface FetchLikeResponse { - readonly body: - | { - getReader(): ReaderLike - } - | Response['body'] - | null - readonly url: string - readonly status: number - readonly redirected: boolean - readonly headers: { - get(name: string): string | null - } -} - -/** - * Stripped down version of `ReadableStreamDefaultReader`, only defining the parts we care about. - * - * @public - */ -export declare interface ReaderLike { - read(): Promise< - | { - done: false - value: unknown - } - | { - done: true - value?: undefined - } - > - cancel(): Promise -} - -export {} diff --git a/sdks/nodejs/node_modules/eventsource/dist/index.js b/sdks/nodejs/node_modules/eventsource/dist/index.js deleted file mode 100644 index 428965f..0000000 --- a/sdks/nodejs/node_modules/eventsource/dist/index.js +++ /dev/null @@ -1,279 +0,0 @@ -import { createParser } from "eventsource-parser"; -class ErrorEvent extends Event { - /** - * Constructs a new `ErrorEvent` instance. This is typically not called directly, - * but rather emitted by the `EventSource` object when an error occurs. - * - * @param type - The type of the event (should be "error") - * @param errorEventInitDict - Optional properties to include in the error event - */ - constructor(type, errorEventInitDict) { - var _a, _b; - super(type), this.code = (_a = errorEventInitDict == null ? void 0 : errorEventInitDict.code) != null ? _a : void 0, this.message = (_b = errorEventInitDict == null ? void 0 : errorEventInitDict.message) != null ? _b : void 0; - } - /** - * Node.js "hides" the `message` and `code` properties of the `ErrorEvent` instance, - * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging, - * we explicitly include the properties in the `inspect` method. - * - * This is automatically called by Node.js when you `console.log` an instance of this class. - * - * @param _depth - The current depth - * @param options - The options passed to `util.inspect` - * @param inspect - The inspect function to use (prevents having to import it from `util`) - * @returns A string representation of the error - */ - [Symbol.for("nodejs.util.inspect.custom")](_depth, options, inspect) { - return inspect(inspectableError(this), options); - } - /** - * Deno "hides" the `message` and `code` properties of the `ErrorEvent` instance, - * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging, - * we explicitly include the properties in the `inspect` method. - * - * This is automatically called by Deno when you `console.log` an instance of this class. - * - * @param inspect - The inspect function to use (prevents having to import it from `util`) - * @param options - The options passed to `Deno.inspect` - * @returns A string representation of the error - */ - [Symbol.for("Deno.customInspect")](inspect, options) { - return inspect(inspectableError(this), options); - } -} -function syntaxError(message) { - const DomException = globalThis.DOMException; - return typeof DomException == "function" ? new DomException(message, "SyntaxError") : new SyntaxError(message); -} -function flattenError(err) { - return err instanceof Error ? "errors" in err && Array.isArray(err.errors) ? err.errors.map(flattenError).join(", ") : "cause" in err && err.cause instanceof Error ? `${err}: ${flattenError(err.cause)}` : err.message : `${err}`; -} -function inspectableError(err) { - return { - type: err.type, - message: err.message, - code: err.code, - defaultPrevented: err.defaultPrevented, - cancelable: err.cancelable, - timeStamp: err.timeStamp - }; -} -var __typeError = (msg) => { - throw TypeError(msg); -}, __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg), __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)), __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value), __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value), __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method), _readyState, _url, _redirectUrl, _withCredentials, _fetch, _reconnectInterval, _reconnectTimer, _lastEventId, _controller, _parser, _onError, _onMessage, _onOpen, _EventSource_instances, connect_fn, _onFetchResponse, _onFetchError, getRequestOptions_fn, _onEvent, _onRetryChange, failConnection_fn, scheduleReconnect_fn, _reconnect; -class EventSource extends EventTarget { - constructor(url, eventSourceInitDict) { - var _a, _b; - super(), __privateAdd(this, _EventSource_instances), this.CONNECTING = 0, this.OPEN = 1, this.CLOSED = 2, __privateAdd(this, _readyState), __privateAdd(this, _url), __privateAdd(this, _redirectUrl), __privateAdd(this, _withCredentials), __privateAdd(this, _fetch), __privateAdd(this, _reconnectInterval), __privateAdd(this, _reconnectTimer), __privateAdd(this, _lastEventId, null), __privateAdd(this, _controller), __privateAdd(this, _parser), __privateAdd(this, _onError, null), __privateAdd(this, _onMessage, null), __privateAdd(this, _onOpen, null), __privateAdd(this, _onFetchResponse, async (response) => { - var _a2; - __privateGet(this, _parser).reset(); - const { body, redirected, status, headers } = response; - if (status === 204) { - __privateMethod(this, _EventSource_instances, failConnection_fn).call(this, "Server sent HTTP 204, not reconnecting", 204), this.close(); - return; - } - if (redirected ? __privateSet(this, _redirectUrl, new URL(response.url)) : __privateSet(this, _redirectUrl, void 0), status !== 200) { - __privateMethod(this, _EventSource_instances, failConnection_fn).call(this, `Non-200 status code (${status})`, status); - return; - } - if (!(headers.get("content-type") || "").startsWith("text/event-stream")) { - __privateMethod(this, _EventSource_instances, failConnection_fn).call(this, 'Invalid content type, expected "text/event-stream"', status); - return; - } - if (__privateGet(this, _readyState) === this.CLOSED) - return; - __privateSet(this, _readyState, this.OPEN); - const openEvent = new Event("open"); - if ((_a2 = __privateGet(this, _onOpen)) == null || _a2.call(this, openEvent), this.dispatchEvent(openEvent), typeof body != "object" || !body || !("getReader" in body)) { - __privateMethod(this, _EventSource_instances, failConnection_fn).call(this, "Invalid response body, expected a web ReadableStream", status), this.close(); - return; - } - const decoder = new TextDecoder(), reader = body.getReader(); - let open = !0; - do { - const { done, value } = await reader.read(); - value && __privateGet(this, _parser).feed(decoder.decode(value, { stream: !done })), done && (open = !1, __privateGet(this, _parser).reset(), __privateMethod(this, _EventSource_instances, scheduleReconnect_fn).call(this)); - } while (open); - }), __privateAdd(this, _onFetchError, (err) => { - __privateSet(this, _controller, void 0), !(err.name === "AbortError" || err.type === "aborted") && __privateMethod(this, _EventSource_instances, scheduleReconnect_fn).call(this, flattenError(err)); - }), __privateAdd(this, _onEvent, (event) => { - typeof event.id == "string" && __privateSet(this, _lastEventId, event.id); - const messageEvent = new MessageEvent(event.event || "message", { - data: event.data, - origin: __privateGet(this, _redirectUrl) ? __privateGet(this, _redirectUrl).origin : __privateGet(this, _url).origin, - lastEventId: event.id || "" - }); - __privateGet(this, _onMessage) && (!event.event || event.event === "message") && __privateGet(this, _onMessage).call(this, messageEvent), this.dispatchEvent(messageEvent); - }), __privateAdd(this, _onRetryChange, (value) => { - __privateSet(this, _reconnectInterval, value); - }), __privateAdd(this, _reconnect, () => { - __privateSet(this, _reconnectTimer, void 0), __privateGet(this, _readyState) === this.CONNECTING && __privateMethod(this, _EventSource_instances, connect_fn).call(this); - }); - try { - if (url instanceof URL) - __privateSet(this, _url, url); - else if (typeof url == "string") - __privateSet(this, _url, new URL(url, getBaseURL())); - else - throw new Error("Invalid URL"); - } catch { - throw syntaxError("An invalid or illegal string was specified"); - } - __privateSet(this, _parser, createParser({ - onEvent: __privateGet(this, _onEvent), - onRetry: __privateGet(this, _onRetryChange) - })), __privateSet(this, _readyState, this.CONNECTING), __privateSet(this, _reconnectInterval, 3e3), __privateSet(this, _fetch, (_a = eventSourceInitDict == null ? void 0 : eventSourceInitDict.fetch) != null ? _a : globalThis.fetch), __privateSet(this, _withCredentials, (_b = eventSourceInitDict == null ? void 0 : eventSourceInitDict.withCredentials) != null ? _b : !1), __privateMethod(this, _EventSource_instances, connect_fn).call(this); - } - /** - * Returns the state of this EventSource object's connection. It can have the values described below. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState) - * - * Note: typed as `number` instead of `0 | 1 | 2` for compatibility with the `EventSource` interface, - * defined in the TypeScript `dom` library. - * - * @public - */ - get readyState() { - return __privateGet(this, _readyState); - } - /** - * Returns the URL providing the event stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url) - * - * @public - */ - get url() { - return __privateGet(this, _url).href; - } - /** - * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to "include", and false otherwise. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials) - */ - get withCredentials() { - return __privateGet(this, _withCredentials); - } - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */ - get onerror() { - return __privateGet(this, _onError); - } - set onerror(value) { - __privateSet(this, _onError, value); - } - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */ - get onmessage() { - return __privateGet(this, _onMessage); - } - set onmessage(value) { - __privateSet(this, _onMessage, value); - } - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */ - get onopen() { - return __privateGet(this, _onOpen); - } - set onopen(value) { - __privateSet(this, _onOpen, value); - } - addEventListener(type, listener, options) { - const listen = listener; - super.addEventListener(type, listen, options); - } - removeEventListener(type, listener, options) { - const listen = listener; - super.removeEventListener(type, listen, options); - } - /** - * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close) - * - * @public - */ - close() { - __privateGet(this, _reconnectTimer) && clearTimeout(__privateGet(this, _reconnectTimer)), __privateGet(this, _readyState) !== this.CLOSED && (__privateGet(this, _controller) && __privateGet(this, _controller).abort(), __privateSet(this, _readyState, this.CLOSED), __privateSet(this, _controller, void 0)); - } -} -_readyState = /* @__PURE__ */ new WeakMap(), _url = /* @__PURE__ */ new WeakMap(), _redirectUrl = /* @__PURE__ */ new WeakMap(), _withCredentials = /* @__PURE__ */ new WeakMap(), _fetch = /* @__PURE__ */ new WeakMap(), _reconnectInterval = /* @__PURE__ */ new WeakMap(), _reconnectTimer = /* @__PURE__ */ new WeakMap(), _lastEventId = /* @__PURE__ */ new WeakMap(), _controller = /* @__PURE__ */ new WeakMap(), _parser = /* @__PURE__ */ new WeakMap(), _onError = /* @__PURE__ */ new WeakMap(), _onMessage = /* @__PURE__ */ new WeakMap(), _onOpen = /* @__PURE__ */ new WeakMap(), _EventSource_instances = /* @__PURE__ */ new WeakSet(), /** -* Connect to the given URL and start receiving events -* -* @internal -*/ -connect_fn = function() { - __privateSet(this, _readyState, this.CONNECTING), __privateSet(this, _controller, new AbortController()), __privateGet(this, _fetch)(__privateGet(this, _url), __privateMethod(this, _EventSource_instances, getRequestOptions_fn).call(this)).then(__privateGet(this, _onFetchResponse)).catch(__privateGet(this, _onFetchError)); -}, _onFetchResponse = /* @__PURE__ */ new WeakMap(), _onFetchError = /* @__PURE__ */ new WeakMap(), /** -* Get request options for the `fetch()` request -* -* @returns The request options -* @internal -*/ -getRequestOptions_fn = function() { - var _a; - const init = { - // [spec] Let `corsAttributeState` be `Anonymous`… - // [spec] …will have their mode set to "cors"… - mode: "cors", - redirect: "follow", - headers: { Accept: "text/event-stream", ...__privateGet(this, _lastEventId) ? { "Last-Event-ID": __privateGet(this, _lastEventId) } : void 0 }, - cache: "no-store", - signal: (_a = __privateGet(this, _controller)) == null ? void 0 : _a.signal - }; - return "window" in globalThis && (init.credentials = this.withCredentials ? "include" : "same-origin"), init; -}, _onEvent = /* @__PURE__ */ new WeakMap(), _onRetryChange = /* @__PURE__ */ new WeakMap(), /** -* Handles the process referred to in the EventSource specification as "failing a connection". -* -* @param error - The error causing the connection to fail -* @param code - The HTTP status code, if available -* @internal -*/ -failConnection_fn = function(message, code) { - var _a; - __privateGet(this, _readyState) !== this.CLOSED && __privateSet(this, _readyState, this.CLOSED); - const errorEvent = new ErrorEvent("error", { code, message }); - (_a = __privateGet(this, _onError)) == null || _a.call(this, errorEvent), this.dispatchEvent(errorEvent); -}, /** -* Schedules a reconnection attempt against the EventSource endpoint. -* -* @param message - The error causing the connection to fail -* @param code - The HTTP status code, if available -* @internal -*/ -scheduleReconnect_fn = function(message, code) { - var _a; - if (__privateGet(this, _readyState) === this.CLOSED) - return; - __privateSet(this, _readyState, this.CONNECTING); - const errorEvent = new ErrorEvent("error", { code, message }); - (_a = __privateGet(this, _onError)) == null || _a.call(this, errorEvent), this.dispatchEvent(errorEvent), __privateSet(this, _reconnectTimer, setTimeout(__privateGet(this, _reconnect), __privateGet(this, _reconnectInterval))); -}, _reconnect = /* @__PURE__ */ new WeakMap(), /** -* ReadyState representing an EventSource currently trying to connect -* -* @public -*/ -EventSource.CONNECTING = 0, /** -* ReadyState representing an EventSource connection that is open (eg connected) -* -* @public -*/ -EventSource.OPEN = 1, /** -* ReadyState representing an EventSource connection that is closed (eg disconnected) -* -* @public -*/ -EventSource.CLOSED = 2; -Object.defineProperty(EventSource, Symbol.for("eventsource.supports-fetch-override"), { - value: !0, - writable: !1, - configurable: !1, - enumerable: !1 -}); -function getBaseURL() { - const doc = "document" in globalThis ? globalThis.document : void 0; - return doc && typeof doc == "object" && "baseURI" in doc && typeof doc.baseURI == "string" ? doc.baseURI : void 0; -} -export { - ErrorEvent, - EventSource -}; -//# sourceMappingURL=index.js.map diff --git a/sdks/nodejs/node_modules/eventsource/dist/index.js.map b/sdks/nodejs/node_modules/eventsource/dist/index.js.map deleted file mode 100644 index 6e715e4..0000000 --- a/sdks/nodejs/node_modules/eventsource/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../src/errors.ts","../src/EventSource.ts"],"sourcesContent":["/**\n * An extended version of the `Event` emitted by the `EventSource` object when an error occurs.\n * While the spec does not include any additional properties, we intentionally go beyond the spec\n * and provide some (minimal) additional information to aid in debugging.\n *\n * @public\n */\nexport class ErrorEvent extends Event {\n /**\n * HTTP status code, if this was triggered by an HTTP error\n * Note: this is not part of the spec, but is included for better error handling.\n *\n * @public\n */\n public code?: number | undefined\n\n /**\n * Optional message attached to the error.\n * Note: this is not part of the spec, but is included for better error handling.\n *\n * @public\n */\n public message?: string | undefined\n\n /**\n * Constructs a new `ErrorEvent` instance. This is typically not called directly,\n * but rather emitted by the `EventSource` object when an error occurs.\n *\n * @param type - The type of the event (should be \"error\")\n * @param errorEventInitDict - Optional properties to include in the error event\n */\n constructor(\n type: string,\n errorEventInitDict?: {message?: string | undefined; code?: number | undefined},\n ) {\n super(type)\n this.code = errorEventInitDict?.code ?? undefined\n this.message = errorEventInitDict?.message ?? undefined\n }\n\n /**\n * Node.js \"hides\" the `message` and `code` properties of the `ErrorEvent` instance,\n * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging,\n * we explicitly include the properties in the `inspect` method.\n *\n * This is automatically called by Node.js when you `console.log` an instance of this class.\n *\n * @param _depth - The current depth\n * @param options - The options passed to `util.inspect`\n * @param inspect - The inspect function to use (prevents having to import it from `util`)\n * @returns A string representation of the error\n */\n [Symbol.for('nodejs.util.inspect.custom')](\n _depth: number,\n options: {colors: boolean},\n inspect: (obj: unknown, inspectOptions: {colors: boolean}) => string,\n ): string {\n return inspect(inspectableError(this), options)\n }\n\n /**\n * Deno \"hides\" the `message` and `code` properties of the `ErrorEvent` instance,\n * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging,\n * we explicitly include the properties in the `inspect` method.\n *\n * This is automatically called by Deno when you `console.log` an instance of this class.\n *\n * @param inspect - The inspect function to use (prevents having to import it from `util`)\n * @param options - The options passed to `Deno.inspect`\n * @returns A string representation of the error\n */\n [Symbol.for('Deno.customInspect')](\n inspect: (obj: unknown, inspectOptions: {colors: boolean}) => string,\n options: {colors: boolean},\n ): string {\n return inspect(inspectableError(this), options)\n }\n}\n\n/**\n * For environments where DOMException may not exist, we will use a SyntaxError instead.\n * While this isn't strictly according to spec, it is very close.\n *\n * @param message - The message to include in the error\n * @returns A `DOMException` or `SyntaxError` instance\n * @internal\n */\nexport function syntaxError(message: string): SyntaxError {\n // If someone can figure out a way to make this work without depending on DOM/Node.js typings,\n // and without casting to `any`, please send a PR 🙏\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const DomException = (globalThis as any).DOMException\n if (typeof DomException === 'function') {\n return new DomException(message, 'SyntaxError')\n }\n\n return new SyntaxError(message)\n}\n\n/**\n * Flatten an error into a single error message string.\n * Unwraps nested errors and joins them with a comma.\n *\n * @param err - The error to flatten\n * @returns A string representation of the error\n * @internal\n */\nexport function flattenError(err: unknown): string {\n if (!(err instanceof Error)) {\n return `${err}`\n }\n\n if ('errors' in err && Array.isArray(err.errors)) {\n return err.errors.map(flattenError).join(', ')\n }\n\n if ('cause' in err && err.cause instanceof Error) {\n return `${err}: ${flattenError(err.cause)}`\n }\n\n return err.message\n}\n\n/**\n * Convert an `ErrorEvent` instance into a plain object for inspection.\n *\n * @param err - The `ErrorEvent` instance to inspect\n * @returns A plain object representation of the error\n * @internal\n */\nfunction inspectableError(err: ErrorEvent) {\n return {\n type: err.type,\n message: err.message,\n code: err.code,\n defaultPrevented: err.defaultPrevented,\n cancelable: err.cancelable,\n timeStamp: err.timeStamp,\n }\n}\n","import {createParser, type EventSourceMessage, type EventSourceParser} from 'eventsource-parser'\n\nimport {ErrorEvent, flattenError, syntaxError} from './errors.js'\nimport type {\n AddEventListenerOptions,\n EventListenerOptions,\n EventListenerOrEventListenerObject,\n EventSourceEventMap,\n EventSourceFetchInit,\n EventSourceInit,\n FetchLike,\n FetchLikeResponse,\n} from './types.js'\n\n/**\n * An `EventSource` instance opens a persistent connection to an HTTP server, which sends events\n * in `text/event-stream` format. The connection remains open until closed by calling `.close()`.\n *\n * @public\n * @example\n * ```js\n * const eventSource = new EventSource('https://example.com/stream')\n * eventSource.addEventListener('error', (error) => {\n * console.error(error)\n * })\n * eventSource.addEventListener('message', (event) => {\n * console.log('Received message:', event.data)\n * })\n * ```\n */\nexport class EventSource extends EventTarget {\n /**\n * ReadyState representing an EventSource currently trying to connect\n *\n * @public\n */\n static CONNECTING = 0 as const\n\n /**\n * ReadyState representing an EventSource connection that is open (eg connected)\n *\n * @public\n */\n static OPEN = 1 as const\n\n /**\n * ReadyState representing an EventSource connection that is closed (eg disconnected)\n *\n * @public\n */\n static CLOSED = 2 as const\n\n /**\n * ReadyState representing an EventSource currently trying to connect\n *\n * @public\n */\n readonly CONNECTING = 0 as const\n\n /**\n * ReadyState representing an EventSource connection that is open (eg connected)\n *\n * @public\n */\n readonly OPEN = 1 as const\n\n /**\n * ReadyState representing an EventSource connection that is closed (eg disconnected)\n *\n * @public\n */\n readonly CLOSED = 2 as const\n\n /**\n * Returns the state of this EventSource object's connection. It can have the values described below.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState)\n *\n * Note: typed as `number` instead of `0 | 1 | 2` for compatibility with the `EventSource` interface,\n * defined in the TypeScript `dom` library.\n *\n * @public\n */\n public get readyState(): number {\n return this.#readyState\n }\n\n /**\n * Returns the URL providing the event stream.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url)\n *\n * @public\n */\n public get url(): string {\n return this.#url.href\n }\n\n /**\n * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to \"include\", and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials)\n */\n public get withCredentials(): boolean {\n return this.#withCredentials\n }\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */\n public get onerror(): ((ev: ErrorEvent) => unknown) | null {\n return this.#onError\n }\n public set onerror(value: ((ev: ErrorEvent) => unknown) | null) {\n this.#onError = value\n }\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */\n public get onmessage(): ((ev: MessageEvent) => unknown) | null {\n return this.#onMessage\n }\n public set onmessage(value: ((ev: MessageEvent) => unknown) | null) {\n this.#onMessage = value\n }\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */\n public get onopen(): ((ev: Event) => unknown) | null {\n return this.#onOpen\n }\n public set onopen(value: ((ev: Event) => unknown) | null) {\n this.#onOpen = value\n }\n\n override addEventListener(\n type: K,\n listener: (this: EventSource, ev: EventSourceEventMap[K]) => unknown,\n options?: boolean | AddEventListenerOptions,\n ): void\n override addEventListener(\n type: string,\n listener: (this: EventSource, event: MessageEvent) => unknown,\n options?: boolean | AddEventListenerOptions,\n ): void\n override addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): void\n override addEventListener(\n type: string,\n listener:\n | ((this: EventSource, event: MessageEvent) => unknown)\n | EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): void {\n const listen = listener as (this: EventSource, event: Event) => unknown\n super.addEventListener(type, listen, options)\n }\n\n override removeEventListener(\n type: K,\n listener: (this: EventSource, ev: EventSourceEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void\n override removeEventListener(\n type: string,\n listener: (this: EventSource, event: MessageEvent) => unknown,\n options?: boolean | EventListenerOptions,\n ): void\n override removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void\n override removeEventListener(\n type: string,\n listener:\n | ((this: EventSource, event: MessageEvent) => unknown)\n | EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void {\n const listen = listener as (this: EventSource, event: Event) => unknown\n super.removeEventListener(type, listen, options)\n }\n\n constructor(url: string | URL, eventSourceInitDict?: EventSourceInit) {\n super()\n\n try {\n if (url instanceof URL) {\n this.#url = url\n } else if (typeof url === 'string') {\n this.#url = new URL(url, getBaseURL())\n } else {\n throw new Error('Invalid URL')\n }\n } catch (err) {\n throw syntaxError('An invalid or illegal string was specified')\n }\n\n this.#parser = createParser({\n onEvent: this.#onEvent,\n onRetry: this.#onRetryChange,\n })\n\n this.#readyState = this.CONNECTING\n this.#reconnectInterval = 3000\n this.#fetch = eventSourceInitDict?.fetch ?? globalThis.fetch\n this.#withCredentials = eventSourceInitDict?.withCredentials ?? false\n\n this.#connect()\n }\n\n /**\n * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close)\n *\n * @public\n */\n close(): void {\n if (this.#reconnectTimer) clearTimeout(this.#reconnectTimer)\n if (this.#readyState === this.CLOSED) return\n if (this.#controller) this.#controller.abort()\n this.#readyState = this.CLOSED\n this.#controller = undefined\n }\n\n // PRIVATES FOLLOW\n\n /**\n * Current connection state\n *\n * @internal\n */\n #readyState: number\n\n /**\n * Original URL used to connect.\n *\n * Note that this will stay the same even after a redirect.\n *\n * @internal\n */\n #url: URL\n\n /**\n * The destination URL after a redirect. Is reset on reconnection.\n *\n * @internal\n */\n #redirectUrl: URL | undefined\n\n /**\n * Whether to include credentials in the request\n *\n * @internal\n */\n #withCredentials: boolean\n\n /**\n * The fetch implementation to use\n *\n * @internal\n */\n #fetch: FetchLike\n\n /**\n * The reconnection time in milliseconds\n *\n * @internal\n */\n #reconnectInterval: number\n\n /**\n * Reference to an ongoing reconnect attempt, if any\n *\n * @internal\n */\n #reconnectTimer: ReturnType | undefined\n\n /**\n * The last event ID seen by the EventSource, which will be sent as `Last-Event-ID` in the\n * request headers on a reconnection attempt.\n *\n * @internal\n */\n #lastEventId: string | null = null\n\n /**\n * The AbortController instance used to abort the fetch request\n *\n * @internal\n */\n #controller: AbortController | undefined\n\n /**\n * Instance of an EventSource parser (`eventsource-parser` npm module)\n *\n * @internal\n */\n #parser: EventSourceParser\n\n /**\n * Holds the current error handler, attached through `onerror` property directly.\n * Note that `addEventListener('error', …)` will not be stored here.\n *\n * @internal\n */\n #onError: ((ev: ErrorEvent) => unknown) | null = null\n\n /**\n * Holds the current message handler, attached through `onmessage` property directly.\n * Note that `addEventListener('message', …)` will not be stored here.\n *\n * @internal\n */\n #onMessage: ((ev: MessageEvent) => unknown) | null = null\n\n /**\n * Holds the current open handler, attached through `onopen` property directly.\n * Note that `addEventListener('open', …)` will not be stored here.\n *\n * @internal\n */\n #onOpen: ((ev: Event) => unknown) | null = null\n\n /**\n * Connect to the given URL and start receiving events\n *\n * @internal\n */\n #connect() {\n this.#readyState = this.CONNECTING\n this.#controller = new AbortController()\n\n // Browser tests are failing if we directly call `this.#fetch()`, thus the indirection.\n const fetch = this.#fetch\n fetch(this.#url, this.#getRequestOptions())\n .then(this.#onFetchResponse)\n .catch(this.#onFetchError)\n }\n\n /**\n * Handles the fetch response\n *\n * @param response - The Fetch(ish) response\n * @internal\n */\n #onFetchResponse = async (response: FetchLikeResponse) => {\n this.#parser.reset()\n\n const {body, redirected, status, headers} = response\n\n // [spec] a client can be told to stop reconnecting using the HTTP 204 No Content response code.\n if (status === 204) {\n // We still need to emit an error event - this mirrors the browser behavior,\n // and without it there is no way to tell the user that the connection was closed.\n this.#failConnection('Server sent HTTP 204, not reconnecting', 204)\n this.close()\n return\n }\n\n // [spec] …Event stream requests can be redirected using HTTP 301 and 307 redirects as with\n // [spec] normal HTTP requests.\n // Spec does not say anything about other redirect codes (302, 308), but this seems an\n // unintended omission, rather than a feature. Browsers will happily redirect on other 3xxs's.\n if (redirected) {\n this.#redirectUrl = new URL(response.url)\n } else {\n this.#redirectUrl = undefined\n }\n\n // [spec] if res's status is not 200, …, then fail the connection.\n if (status !== 200) {\n this.#failConnection(`Non-200 status code (${status})`, status)\n return\n }\n\n // [spec] …or if res's `Content-Type` is not `text/event-stream`, then fail the connection.\n const contentType = headers.get('content-type') || ''\n if (!contentType.startsWith('text/event-stream')) {\n this.#failConnection('Invalid content type, expected \"text/event-stream\"', status)\n return\n }\n\n // [spec] …if the readyState attribute is set to a value other than CLOSED…\n if (this.#readyState === this.CLOSED) {\n return\n }\n\n // [spec] …sets the readyState attribute to OPEN and fires an event\n // [spec] …named open at the EventSource object.\n this.#readyState = this.OPEN\n\n const openEvent = new Event('open')\n this.#onOpen?.(openEvent)\n this.dispatchEvent(openEvent)\n\n // Ensure that the response stream is a web stream\n if (typeof body !== 'object' || !body || !('getReader' in body)) {\n this.#failConnection('Invalid response body, expected a web ReadableStream', status)\n this.close() // This should only happen if `fetch` provided is \"faulty\" - don't reconnect\n return\n }\n\n const decoder = new TextDecoder()\n\n const reader = body.getReader()\n let open = true\n\n do {\n const {done, value} = await reader.read()\n if (value) {\n this.#parser.feed(decoder.decode(value, {stream: !done}))\n }\n\n if (!done) {\n continue\n }\n\n open = false\n this.#parser.reset()\n\n this.#scheduleReconnect()\n } while (open)\n }\n\n /**\n * Handles rejected requests for the EventSource endpoint\n *\n * @param err - The error from `fetch()`\n * @internal\n */\n #onFetchError = (err: Error & {type?: string}) => {\n this.#controller = undefined\n\n // We expect abort errors when the user manually calls `close()` - ignore those\n if (err.name === 'AbortError' || err.type === 'aborted') {\n return\n }\n\n this.#scheduleReconnect(flattenError(err))\n }\n\n /**\n * Get request options for the `fetch()` request\n *\n * @returns The request options\n * @internal\n */\n #getRequestOptions(): EventSourceFetchInit {\n const lastEvent = this.#lastEventId ? {'Last-Event-ID': this.#lastEventId} : undefined\n\n const init: EventSourceFetchInit = {\n // [spec] Let `corsAttributeState` be `Anonymous`…\n // [spec] …will have their mode set to \"cors\"…\n mode: 'cors',\n redirect: 'follow',\n headers: {Accept: 'text/event-stream', ...lastEvent},\n cache: 'no-store',\n signal: this.#controller?.signal,\n }\n\n // Some environments crash if attempting to set `credentials` where it is not supported,\n // eg on Cloudflare Workers. To avoid this, we only set it in browser-like environments.\n if ('window' in globalThis) {\n // [spec] …and their credentials mode set to \"same-origin\"\n // [spec] …if the `withCredentials` attribute is `true`, set the credentials mode to \"include\"…\n init.credentials = this.withCredentials ? 'include' : 'same-origin'\n }\n\n return init\n }\n\n /**\n * Called by EventSourceParser instance when an event has successfully been parsed\n * and is ready to be processed.\n *\n * @param event - The parsed event\n * @internal\n */\n #onEvent = (event: EventSourceMessage) => {\n if (typeof event.id === 'string') {\n this.#lastEventId = event.id\n }\n\n const messageEvent = new MessageEvent(event.event || 'message', {\n data: event.data,\n origin: this.#redirectUrl ? this.#redirectUrl.origin : this.#url.origin,\n lastEventId: event.id || '',\n })\n\n // The `onmessage` property of the EventSource instance only triggers on messages without an\n // `event` field, or ones that explicitly set `message`.\n if (this.#onMessage && (!event.event || event.event === 'message')) {\n this.#onMessage(messageEvent)\n }\n\n this.dispatchEvent(messageEvent)\n }\n\n /**\n * Called by EventSourceParser instance when a new reconnection interval is received\n * from the EventSource endpoint.\n *\n * @param value - The new reconnection interval in milliseconds\n * @internal\n */\n #onRetryChange = (value: number) => {\n this.#reconnectInterval = value\n }\n\n /**\n * Handles the process referred to in the EventSource specification as \"failing a connection\".\n *\n * @param error - The error causing the connection to fail\n * @param code - The HTTP status code, if available\n * @internal\n */\n #failConnection(message?: string, code?: number) {\n // [spec] …if the readyState attribute is set to a value other than CLOSED,\n // [spec] sets the readyState attribute to CLOSED…\n if (this.#readyState !== this.CLOSED) {\n this.#readyState = this.CLOSED\n }\n\n // [spec] …and fires an event named `error` at the `EventSource` object.\n // [spec] Once the user agent has failed the connection, it does not attempt to reconnect.\n // [spec] > Implementations are especially encouraged to report detailed information\n // [spec] > to their development consoles whenever an error event is fired, since little\n // [spec] > to no information can be made available in the events themselves.\n // Printing to console is not very programatically helpful, though, so we emit a custom event.\n const errorEvent = new ErrorEvent('error', {code, message})\n\n this.#onError?.(errorEvent)\n this.dispatchEvent(errorEvent)\n }\n\n /**\n * Schedules a reconnection attempt against the EventSource endpoint.\n *\n * @param message - The error causing the connection to fail\n * @param code - The HTTP status code, if available\n * @internal\n */\n #scheduleReconnect(message?: string, code?: number) {\n // [spec] If the readyState attribute is set to CLOSED, abort the task.\n if (this.#readyState === this.CLOSED) {\n return\n }\n\n // [spec] Set the readyState attribute to CONNECTING.\n this.#readyState = this.CONNECTING\n\n // [spec] Fire an event named `error` at the EventSource object.\n const errorEvent = new ErrorEvent('error', {code, message})\n this.#onError?.(errorEvent)\n this.dispatchEvent(errorEvent)\n\n // [spec] Wait a delay equal to the reconnection time of the event source.\n this.#reconnectTimer = setTimeout(this.#reconnect, this.#reconnectInterval)\n }\n\n /**\n * Reconnects to the EventSource endpoint after a disconnect/failure\n *\n * @internal\n */\n #reconnect = () => {\n this.#reconnectTimer = undefined\n\n // [spec] If the EventSource's readyState attribute is not set to CONNECTING, then return.\n if (this.#readyState !== this.CONNECTING) {\n return\n }\n\n this.#connect()\n }\n}\n\n// Provides a way to detect that the EventSource implementation supports passing `fetch`\n// that can be used to customize the request, eg custom headers and similar.\nObject.defineProperty(EventSource, Symbol.for('eventsource.supports-fetch-override'), {\n value: true,\n writable: false,\n configurable: false,\n enumerable: false,\n})\n\n/**\n * According to spec, when constructing a URL:\n * > 1. Let baseURL be environment's base URL, if environment is a Document object\n * > 2. Return the result of applying the URL parser to url, with baseURL.\n *\n * Thus we should use `document.baseURI` if available, since it can be set through a base tag.\n *\n * @returns The base URL, if available - otherwise `undefined`\n * @internal\n */\nfunction getBaseURL(): string | undefined {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const doc = 'document' in globalThis ? (globalThis as any).document : undefined\n return doc && typeof doc === 'object' && 'baseURI' in doc && typeof doc.baseURI === 'string'\n ? doc.baseURI\n : undefined\n}\n"],"names":["_a"],"mappings":";AAOO,MAAM,mBAAmB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwBpC,YACE,MACA,oBACA;AAlCJ,QAAA,IAAA;AAmCI,UAAM,IAAI,GACV,KAAK,QAAO,KAAoB,sBAAA,OAAA,SAAA,mBAAA,SAApB,OAA4B,KAAA,QACxC,KAAK,WAAU,KAAoB,sBAAA,OAAA,SAAA,mBAAA,YAApB,OAA+B,KAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAehD,CAAC,OAAO,IAAI,4BAA4B,CAAC,EACvC,QACA,SACA,SACQ;AACR,WAAO,QAAQ,iBAAiB,IAAI,GAAG,OAAO;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAchD,CAAC,OAAO,IAAI,oBAAoB,CAAC,EAC/B,SACA,SACQ;AACR,WAAO,QAAQ,iBAAiB,IAAI,GAAG,OAAO;AAAA,EAAA;AAElD;AAUO,SAAS,YAAY,SAA8B;AAKxD,QAAM,eAAgB,WAAmB;AACrC,SAAA,OAAO,gBAAiB,aACnB,IAAI,aAAa,SAAS,aAAa,IAGzC,IAAI,YAAY,OAAO;AAChC;AAUO,SAAS,aAAa,KAAsB;AACjD,SAAM,eAAe,QAIjB,YAAY,OAAO,MAAM,QAAQ,IAAI,MAAM,IACtC,IAAI,OAAO,IAAI,YAAY,EAAE,KAAK,IAAI,IAG3C,WAAW,OAAO,IAAI,iBAAiB,QAClC,GAAG,GAAG,KAAK,aAAa,IAAI,KAAK,CAAC,KAGpC,IAAI,UAXF,GAAG,GAAG;AAYjB;AASA,SAAS,iBAAiB,KAAiB;AAClC,SAAA;AAAA,IACL,MAAM,IAAI;AAAA,IACV,SAAS,IAAI;AAAA,IACb,MAAM,IAAI;AAAA,IACV,kBAAkB,IAAI;AAAA,IACtB,YAAY,IAAI;AAAA,IAChB,WAAW,IAAI;AAAA,EACjB;AACF;;;0pBC5IA,aAAA,MAAA,cAAA,kBAAA,QAAA,oBAAA,iBAAA,cAAA,aAAA,SAAA,UAAA,YAAA,SAAA,wBAAA,YAAA,kBAAA,eAAA,sBAAA,UAAA,gBAAA,mBAAA,sBAAA;AA8BO,MAAM,oBAAoB,YAAY;AAAA,EAyJ3C,YAAY,KAAmB,qBAAuC;AAvLxE,QAAA,IAAA;AAwLU,UAAA,GA1JH,aAAA,MAAA,sBAAA,GA2BL,KAAS,aAAa,GAOtB,KAAS,OAAO,GAOhB,KAAS,SAAS,GAkKlB,aAAA,MAAA,WAAA,GASA,aAAA,MAAA,IAAA,GAOA,aAAA,MAAA,YAAA,GAOA,aAAA,MAAA,gBAAA,GAOA,aAAA,MAAA,MAAA,GAOA,aAAA,MAAA,kBAAA,GAOA,aAAA,MAAA,eAAA,GAQ8B,aAAA,MAAA,cAAA,IAAA,GAO9B,aAAA,MAAA,WAAA,GAOA,aAAA,MAAA,OAAA,GAQiD,aAAA,MAAA,UAAA,IAAA,GAQI,aAAA,MAAA,YAAA,IAAA,GAQV,aAAA,MAAA,SAAA,IAAA,GAwB3C,aAAA,MAAA,kBAAmB,OAAO,aAAgC;AA3V5D,UAAAA;AA4VI,mBAAA,MAAK,SAAQ,MAAM;AAEnB,YAAM,EAAC,MAAM,YAAY,QAAQ,QAAW,IAAA;AAG5C,UAAI,WAAW,KAAK;AAGlB,wBAAA,MAAK,wBAAL,iBAAA,EAAA,KAAA,MAAqB,0CAA0C,GAAA,GAC/D,KAAK,MAAM;AACX;AAAA,MAAA;AAcF,UAPI,aACF,aAAA,MAAK,cAAe,IAAI,IAAI,SAAS,GAAG,CAAA,IAExC,aAAK,MAAA,cAAe,MAIlB,GAAA,WAAW,KAAK;AAClB,wBAAA,MAAK,wBAAL,iBAAA,EAAA,KAAA,MAAqB,wBAAwB,MAAM,KAAK,MAAA;AACxD;AAAA,MAAA;AAKE,UAAA,EADgB,QAAQ,IAAI,cAAc,KAAK,IAClC,WAAW,mBAAmB,GAAG;AAC3C,wBAAA,MAAA,wBAAA,iBAAA,EAAL,WAAqB,sDAAsD,MAAA;AAC3E;AAAA,MAAA;AAIE,UAAA,aAAA,MAAK,iBAAgB,KAAK;AAC5B;AAKF,mBAAA,MAAK,aAAc,KAAK,IAAA;AAElB,YAAA,YAAY,IAAI,MAAM,MAAM;AAKlC,WAJAA,MAAK,aAAA,MAAA,OAAA,MAAL,QAAeA,IAAA,KAAA,MAAA,SAAA,GACf,KAAK,cAAc,SAAS,GAGxB,OAAO,QAAS,YAAY,CAAC,QAAQ,EAAE,eAAe,OAAO;AAC/D,wBAAA,MAAK,wBAAL,iBAAA,EAAA,KAAA,MAAqB,wDAAwD,MAAA,GAC7E,KAAK,MAAM;AACX;AAAA,MAAA;AAGF,YAAM,UAAU,IAAI,YAAA,GAEd,SAAS,KAAK,UAAU;AAC9B,UAAI,OAAO;AAER,SAAA;AACD,cAAM,EAAC,MAAM,MAAS,IAAA,MAAM,OAAO,KAAK;AACpC,iBACF,mBAAK,OAAQ,EAAA,KAAK,QAAQ,OAAO,OAAO,EAAC,QAAQ,CAAC,KAAA,CAAK,CAAC,GAGrD,SAIL,OAAO,IACP,mBAAK,OAAQ,EAAA,MAEb,GAAA,gBAAA,MAAK,wBAAL,oBAAA,EAAA,KAAA,IAAA;AAAA,MAAA,SACO;AAAA,IAAA,CACX,GAQA,aAAA,MAAA,eAAgB,CAAC,QAAiC;AAChD,mBAAK,MAAA,aAAc,MAGf,GAAA,EAAA,IAAI,SAAS,gBAAgB,IAAI,SAAS,cAI9C,gBAAA,MAAK,wBAAL,oBAAA,EAAA,KAAA,MAAwB,aAAa,GAAG,CAAA;AAAA,IAAA,CAC1C,GAuCA,aAAA,MAAA,UAAW,CAAC,UAA8B;AACpC,aAAO,MAAM,MAAO,YACtB,aAAA,MAAK,cAAe,MAAM,EAAA;AAG5B,YAAM,eAAe,IAAI,aAAa,MAAM,SAAS,WAAW;AAAA,QAC9D,MAAM,MAAM;AAAA,QACZ,QAAQ,aAAK,MAAA,YAAA,IAAe,mBAAK,YAAa,EAAA,SAAS,mBAAK,IAAK,EAAA;AAAA,QACjE,aAAa,MAAM,MAAM;AAAA,MAAA,CAC1B;AAIG,mBAAK,MAAA,UAAA,MAAe,CAAC,MAAM,SAAS,MAAM,UAAU,cACtD,aAAA,MAAK,UAAL,EAAA,KAAA,MAAgB,YAGlB,GAAA,KAAK,cAAc,YAAY;AAAA,IAAA,CACjC,GASA,aAAA,MAAA,gBAAiB,CAAC,UAAkB;AAClC,mBAAA,MAAK,oBAAqB,KAAA;AAAA,IAAA,CAC5B,GA0DA,aAAA,MAAA,YAAa,MAAM;AACjB,mBAAA,MAAK,iBAAkB,MAGnB,GAAA,aAAA,MAAK,iBAAgB,KAAK,cAI9B,sBAAK,wBAAL,UAAA,EAAA,KAAA,IAAA;AAAA,IAAA,CACF;AAtYM,QAAA;AACF,UAAI,eAAe;AACjB,qBAAA,MAAK,MAAO,GAAA;AAAA,eACH,OAAO,OAAQ;AACxB,qBAAA,MAAK,MAAO,IAAI,IAAI,KAAK,YAAY,CAAA;AAAA;AAE/B,cAAA,IAAI,MAAM,aAAa;AAAA,IAAA,QAEnB;AACZ,YAAM,YAAY,4CAA4C;AAAA,IAAA;AAGhE,iBAAA,MAAK,SAAU,aAAa;AAAA,MAC1B,SAAS,aAAK,MAAA,QAAA;AAAA,MACd,SAAS,aAAK,MAAA,cAAA;AAAA,IAAA,CACf,IAED,aAAK,MAAA,aAAc,KAAK,UACxB,GAAA,aAAA,MAAK,oBAAqB,GAAA,GAC1B,aAAK,MAAA,SAAS,gEAAqB,UAArB,OAAA,KAA8B,WAAW,KAAA,GACvD,aAAK,MAAA,mBAAmB,gEAAqB,oBAArB,OAAA,KAAwC,EAEhE,GAAA,gBAAA,MAAK,wBAAL,UAAA,EAAA,KAAA,IAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA7HF,IAAW,aAAqB;AAC9B,WAAO,aAAK,MAAA,WAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUd,IAAW,MAAc;AACvB,WAAO,mBAAK,IAAK,EAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQnB,IAAW,kBAA2B;AACpC,WAAO,aAAK,MAAA,gBAAA;AAAA,EAAA;AAAA;AAAA,EAId,IAAW,UAAgD;AACzD,WAAO,aAAK,MAAA,QAAA;AAAA,EAAA;AAAA,EAEd,IAAW,QAAQ,OAA6C;AAC9D,iBAAA,MAAK,UAAW,KAAA;AAAA,EAAA;AAAA;AAAA,EAIlB,IAAW,YAAoD;AAC7D,WAAO,aAAK,MAAA,UAAA;AAAA,EAAA;AAAA,EAEd,IAAW,UAAU,OAA+C;AAClE,iBAAA,MAAK,YAAa,KAAA;AAAA,EAAA;AAAA;AAAA,EAIpB,IAAW,SAA0C;AACnD,WAAO,aAAK,MAAA,OAAA;AAAA,EAAA;AAAA,EAEd,IAAW,OAAO,OAAwC;AACxD,iBAAA,MAAK,SAAU,KAAA;AAAA,EAAA;AAAA,EAkBR,iBACP,MACA,UAGA,SACM;AACN,UAAM,SAAS;AACT,UAAA,iBAAiB,MAAM,QAAQ,OAAO;AAAA,EAAA;AAAA,EAkBrC,oBACP,MACA,UAGA,SACM;AACN,UAAM,SAAS;AACT,UAAA,oBAAoB,MAAM,QAAQ,OAAO;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsCjD,QAAc;AACR,iBAAA,MAAK,oBAAiB,aAAa,aAAA,MAAK,gBAAe,GACvD,aAAA,MAAK,iBAAgB,KAAK,WAC1B,mBAAK,WAAa,KAAA,aAAA,MAAK,aAAY,MAAM,GAC7C,mBAAK,aAAc,KAAK,MACxB,GAAA,aAAA,MAAK,aAAc,MAAA;AAAA,EAAA;AAkWvB;AAxVE,cASA,oBAAA,QAAA,GAAA,OAAA,oBAAA,QAAA,GAOA,eAOA,oBAAA,QAAA,GAAA,mBAAA,oBAAA,WAOA,SAOA,oBAAA,QAAA,GAAA,qBAAA,oBAAA,QAAA,GAOA,kBAQA,oBAAA,QAAA,GAAA,eAAA,oBAAA,QAAA,GAOA,cAOA,oBAAA,QAAA,GAAA,UAAA,oBAAA,QAAA,GAQA,WAQA,oBAAA,WAAA,aAAA,oBAAA,WAQA,UArSK,oBAAA,QAAA,GAAA,yBAAA,oBAAA,QAAA;AAAA;AAAA;AAAA;AAAA;AA4SL,aAAQ,WAAG;AACJ,eAAA,MAAA,aAAc,KAAK,UACxB,GAAA,aAAA,MAAK,aAAc,IAAI,gBAAA,CAGT,GAAA,aAAA,MAAK,MACb,EAAA,aAAA,MAAK,OAAM,gBAAK,MAAA,wBAAA,oBAAA,EAAL,UAAyB,EACvC,KAAK,mBAAK,gBAAgB,CAAA,EAC1B,MAAM,aAAA,MAAK,aAAa,CAAA;AAC7B,GAQA,mBAqFA,oBAAA,QAAA,GAAA,gBAAA,oBAAA,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBA,uBAAkB,WAAyB;AAjc7C,MAAA;AAocI,QAAM,OAA6B;AAAA;AAAA;AAAA,IAGjC,MAAM;AAAA,IACN,UAAU;AAAA,IACV,SAAS,EAAC,QAAQ,qBAAqB,GAPvB,aAAA,MAAK,YAAe,IAAA,EAAC,iBAAiB,aAAA,MAAK,YAAY,EAAA,IAAI,OAOxB;AAAA,IACnD,OAAO;AAAA,IACP,SAAQ,KAAK,aAAA,MAAA,WAAA,MAAL,OAAkB,SAAA,GAAA;AAAA,EAC5B;AAIA,SAAI,YAAY,eAGd,KAAK,cAAc,KAAK,kBAAkB,YAAY,gBAGjD;AACT,GASA,WA2BA,oBAAA,QAAA,GAAA,iBAAA,oBAAA,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,oBAAe,SAAC,SAAkB,MAAe;AAtgBnD,MAAA;AAygBQ,qBAAK,WAAgB,MAAA,KAAK,UAC5B,aAAA,MAAK,aAAc,KAAK,MAAA;AAS1B,QAAM,aAAa,IAAI,WAAW,SAAS,EAAC,MAAM,SAAQ;AAE1D,GAAA,KAAA,aAAA,MAAK,QAAL,MAAA,QAAA,GAAA,KAAA,MAAgB,UAChB,GAAA,KAAK,cAAc,UAAU;AAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,uBAAkB,SAAC,SAAkB,MAAe;AAhiBtD,MAAA;AAkiBQ,MAAA,aAAA,MAAK,iBAAgB,KAAK;AAC5B;AAIF,eAAA,MAAK,aAAc,KAAK,UAAA;AAGxB,QAAM,aAAa,IAAI,WAAW,SAAS,EAAC,MAAM,SAAQ;AAC1D,GAAA,KAAA,aAAA,MAAK,QAAL,MAAA,QAAA,GAAA,KAAA,MAAgB,UAChB,GAAA,KAAK,cAAc,UAAU,GAG7B,aAAA,MAAK,iBAAkB,WAAW,aAAK,MAAA,UAAA,GAAY,mBAAK,kBAAkB,CAAA,CAAA;AAC5E,GAOA,aAAA,oBAAA,QAAA;AAAA;AAAA;AAAA;AAAA;AAzhBW,YAMJ,aAAa;AAAA;AAAA;AAAA;AAAA;AANT,YAaJ,OAAO;AAAA;AAAA;AAAA;AAAA;AAbH,YAoBJ,SAAS;AAmhBlB,OAAO,eAAe,aAAa,OAAO,IAAI,qCAAqC,GAAG;AAAA,EACpF,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AACd,CAAC;AAYD,SAAS,aAAiC;AAExC,QAAM,MAAM,cAAc,aAAc,WAAmB,WAAW;AAC/D,SAAA,OAAO,OAAO,OAAQ,YAAY,aAAa,OAAO,OAAO,IAAI,WAAY,WAChF,IAAI,UACJ;AACN;"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/eventsource/package.json b/sdks/nodejs/node_modules/eventsource/package.json deleted file mode 100644 index c77928d..0000000 --- a/sdks/nodejs/node_modules/eventsource/package.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "name": "eventsource", - "version": "4.1.0", - "description": "WhatWG/W3C compliant EventSource client for Node.js and browsers", - "sideEffects": false, - "type": "module", - "main": "./dist/index.cjs", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "exports": { - ".": { - "deno": "./dist/index.js", - "bun": "./dist/index.js", - "source": "./src/index.ts", - "import": "./dist/index.js", - "require": "./dist/index.cjs", - "default": "./dist/index.js" - }, - "./package.json": "./package.json" - }, - "scripts": { - "build": "pkg-utils build && pkg-utils --strict", - "build:watch": "pkg-utils watch", - "clean": "rimraf dist coverage", - "lint": "eslint . && tsc --noEmit", - "posttest": "npm run lint", - "prebuild": "npm run clean", - "prepare": "npm run build", - "test": "npm run test:node && npm run test:browser", - "test:browser": "tsx test/browser/client.browser.test.ts", - "test:bun": "bun run test/bun/client.bun.test.ts", - "test:deno": "deno run --allow-net --allow-read --allow-env --unstable-sloppy-imports test/deno/client.deno.test.ts", - "test:node": "tsx test/node/client.node.test.ts" - }, - "files": [ - "!dist/stats.html", - "dist", - "src" - ], - "repository": { - "type": "git", - "url": "git://git@github.com/EventSource/eventsource.git" - }, - "keywords": [ - "sse", - "eventsource", - "server-sent-events" - ], - "author": "Espen Hovlandsdal ", - "contributors": [ - "Aslak Hellesøy ", - "Einar Otto Stangvik " - ], - "license": "MIT", - "engines": { - "node": ">=20.0.0" - }, - "browserslist": [ - "node >= 20", - "chrome >= 71", - "safari >= 14.1", - "firefox >= 105", - "edge >= 79" - ], - "dependencies": { - "eventsource-parser": "^3.0.1" - }, - "devDependencies": { - "@sanity/pkg-utils": "^7.2.2", - "@sanity/semantic-release-preset": "^5.0.0", - "@tsconfig/strictest": "^2.0.5", - "@types/sinon": "^17.0.4", - "@typescript-eslint/eslint-plugin": "^6.11.0", - "@typescript-eslint/parser": "^6.11.0", - "esbuild": "^0.25.1", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-config-sanity": "^7.1.4", - "eventsource-encoder": "^1.0.1", - "playwright": "^1.52.0", - "prettier": "^3.5.3", - "rimraf": "^6.0.1", - "rollup-plugin-visualizer": "^5.14.0", - "semantic-release": "^24.2.3", - "sinon": "^20.0.0", - "tsx": "^4.19.4", - "typescript": "^5.8.3", - "undici": "^7.8.0" - }, - "overrides": { - "cross-spawn": "7.0.6" - }, - "bugs": { - "url": "https://github.com/EventSource/eventsource/issues" - }, - "homepage": "https://github.com/EventSource/eventsource#readme", - "prettier": { - "semi": false, - "printWidth": 100, - "bracketSpacing": false, - "singleQuote": true - }, - "eslintConfig": { - "parserOptions": { - "ecmaVersion": 9, - "sourceType": "module", - "ecmaFeatures": { - "modules": true - } - }, - "extends": [ - "sanity", - "sanity/typescript", - "prettier" - ], - "ignorePatterns": [ - "lib/**/" - ], - "globals": { - "globalThis": false - }, - "rules": { - "no-undef": "off", - "no-empty": "off" - } - }, - "publishConfig": { - "provenance": true - } -} diff --git a/sdks/nodejs/node_modules/eventsource/src/EventSource.ts b/sdks/nodejs/node_modules/eventsource/src/EventSource.ts deleted file mode 100644 index 2e03fef..0000000 --- a/sdks/nodejs/node_modules/eventsource/src/EventSource.ts +++ /dev/null @@ -1,605 +0,0 @@ -import {createParser, type EventSourceMessage, type EventSourceParser} from 'eventsource-parser' - -import {ErrorEvent, flattenError, syntaxError} from './errors.js' -import type { - AddEventListenerOptions, - EventListenerOptions, - EventListenerOrEventListenerObject, - EventSourceEventMap, - EventSourceFetchInit, - EventSourceInit, - FetchLike, - FetchLikeResponse, -} from './types.js' - -/** - * An `EventSource` instance opens a persistent connection to an HTTP server, which sends events - * in `text/event-stream` format. The connection remains open until closed by calling `.close()`. - * - * @public - * @example - * ```js - * const eventSource = new EventSource('https://example.com/stream') - * eventSource.addEventListener('error', (error) => { - * console.error(error) - * }) - * eventSource.addEventListener('message', (event) => { - * console.log('Received message:', event.data) - * }) - * ``` - */ -export class EventSource extends EventTarget { - /** - * ReadyState representing an EventSource currently trying to connect - * - * @public - */ - static CONNECTING = 0 as const - - /** - * ReadyState representing an EventSource connection that is open (eg connected) - * - * @public - */ - static OPEN = 1 as const - - /** - * ReadyState representing an EventSource connection that is closed (eg disconnected) - * - * @public - */ - static CLOSED = 2 as const - - /** - * ReadyState representing an EventSource currently trying to connect - * - * @public - */ - readonly CONNECTING = 0 as const - - /** - * ReadyState representing an EventSource connection that is open (eg connected) - * - * @public - */ - readonly OPEN = 1 as const - - /** - * ReadyState representing an EventSource connection that is closed (eg disconnected) - * - * @public - */ - readonly CLOSED = 2 as const - - /** - * Returns the state of this EventSource object's connection. It can have the values described below. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState) - * - * Note: typed as `number` instead of `0 | 1 | 2` for compatibility with the `EventSource` interface, - * defined in the TypeScript `dom` library. - * - * @public - */ - public get readyState(): number { - return this.#readyState - } - - /** - * Returns the URL providing the event stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url) - * - * @public - */ - public get url(): string { - return this.#url.href - } - - /** - * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to "include", and false otherwise. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials) - */ - public get withCredentials(): boolean { - return this.#withCredentials - } - - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */ - public get onerror(): ((ev: ErrorEvent) => unknown) | null { - return this.#onError - } - public set onerror(value: ((ev: ErrorEvent) => unknown) | null) { - this.#onError = value - } - - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */ - public get onmessage(): ((ev: MessageEvent) => unknown) | null { - return this.#onMessage - } - public set onmessage(value: ((ev: MessageEvent) => unknown) | null) { - this.#onMessage = value - } - - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */ - public get onopen(): ((ev: Event) => unknown) | null { - return this.#onOpen - } - public set onopen(value: ((ev: Event) => unknown) | null) { - this.#onOpen = value - } - - override addEventListener( - type: K, - listener: (this: EventSource, ev: EventSourceEventMap[K]) => unknown, - options?: boolean | AddEventListenerOptions, - ): void - override addEventListener( - type: string, - listener: (this: EventSource, event: MessageEvent) => unknown, - options?: boolean | AddEventListenerOptions, - ): void - override addEventListener( - type: string, - listener: EventListenerOrEventListenerObject, - options?: boolean | AddEventListenerOptions, - ): void - override addEventListener( - type: string, - listener: - | ((this: EventSource, event: MessageEvent) => unknown) - | EventListenerOrEventListenerObject, - options?: boolean | AddEventListenerOptions, - ): void { - const listen = listener as (this: EventSource, event: Event) => unknown - super.addEventListener(type, listen, options) - } - - override removeEventListener( - type: K, - listener: (this: EventSource, ev: EventSourceEventMap[K]) => unknown, - options?: boolean | EventListenerOptions, - ): void - override removeEventListener( - type: string, - listener: (this: EventSource, event: MessageEvent) => unknown, - options?: boolean | EventListenerOptions, - ): void - override removeEventListener( - type: string, - listener: EventListenerOrEventListenerObject, - options?: boolean | EventListenerOptions, - ): void - override removeEventListener( - type: string, - listener: - | ((this: EventSource, event: MessageEvent) => unknown) - | EventListenerOrEventListenerObject, - options?: boolean | EventListenerOptions, - ): void { - const listen = listener as (this: EventSource, event: Event) => unknown - super.removeEventListener(type, listen, options) - } - - constructor(url: string | URL, eventSourceInitDict?: EventSourceInit) { - super() - - try { - if (url instanceof URL) { - this.#url = url - } else if (typeof url === 'string') { - this.#url = new URL(url, getBaseURL()) - } else { - throw new Error('Invalid URL') - } - } catch (err) { - throw syntaxError('An invalid or illegal string was specified') - } - - this.#parser = createParser({ - onEvent: this.#onEvent, - onRetry: this.#onRetryChange, - }) - - this.#readyState = this.CONNECTING - this.#reconnectInterval = 3000 - this.#fetch = eventSourceInitDict?.fetch ?? globalThis.fetch - this.#withCredentials = eventSourceInitDict?.withCredentials ?? false - - this.#connect() - } - - /** - * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close) - * - * @public - */ - close(): void { - if (this.#reconnectTimer) clearTimeout(this.#reconnectTimer) - if (this.#readyState === this.CLOSED) return - if (this.#controller) this.#controller.abort() - this.#readyState = this.CLOSED - this.#controller = undefined - } - - // PRIVATES FOLLOW - - /** - * Current connection state - * - * @internal - */ - #readyState: number - - /** - * Original URL used to connect. - * - * Note that this will stay the same even after a redirect. - * - * @internal - */ - #url: URL - - /** - * The destination URL after a redirect. Is reset on reconnection. - * - * @internal - */ - #redirectUrl: URL | undefined - - /** - * Whether to include credentials in the request - * - * @internal - */ - #withCredentials: boolean - - /** - * The fetch implementation to use - * - * @internal - */ - #fetch: FetchLike - - /** - * The reconnection time in milliseconds - * - * @internal - */ - #reconnectInterval: number - - /** - * Reference to an ongoing reconnect attempt, if any - * - * @internal - */ - #reconnectTimer: ReturnType | undefined - - /** - * The last event ID seen by the EventSource, which will be sent as `Last-Event-ID` in the - * request headers on a reconnection attempt. - * - * @internal - */ - #lastEventId: string | null = null - - /** - * The AbortController instance used to abort the fetch request - * - * @internal - */ - #controller: AbortController | undefined - - /** - * Instance of an EventSource parser (`eventsource-parser` npm module) - * - * @internal - */ - #parser: EventSourceParser - - /** - * Holds the current error handler, attached through `onerror` property directly. - * Note that `addEventListener('error', …)` will not be stored here. - * - * @internal - */ - #onError: ((ev: ErrorEvent) => unknown) | null = null - - /** - * Holds the current message handler, attached through `onmessage` property directly. - * Note that `addEventListener('message', …)` will not be stored here. - * - * @internal - */ - #onMessage: ((ev: MessageEvent) => unknown) | null = null - - /** - * Holds the current open handler, attached through `onopen` property directly. - * Note that `addEventListener('open', …)` will not be stored here. - * - * @internal - */ - #onOpen: ((ev: Event) => unknown) | null = null - - /** - * Connect to the given URL and start receiving events - * - * @internal - */ - #connect() { - this.#readyState = this.CONNECTING - this.#controller = new AbortController() - - // Browser tests are failing if we directly call `this.#fetch()`, thus the indirection. - const fetch = this.#fetch - fetch(this.#url, this.#getRequestOptions()) - .then(this.#onFetchResponse) - .catch(this.#onFetchError) - } - - /** - * Handles the fetch response - * - * @param response - The Fetch(ish) response - * @internal - */ - #onFetchResponse = async (response: FetchLikeResponse) => { - this.#parser.reset() - - const {body, redirected, status, headers} = response - - // [spec] a client can be told to stop reconnecting using the HTTP 204 No Content response code. - if (status === 204) { - // We still need to emit an error event - this mirrors the browser behavior, - // and without it there is no way to tell the user that the connection was closed. - this.#failConnection('Server sent HTTP 204, not reconnecting', 204) - this.close() - return - } - - // [spec] …Event stream requests can be redirected using HTTP 301 and 307 redirects as with - // [spec] normal HTTP requests. - // Spec does not say anything about other redirect codes (302, 308), but this seems an - // unintended omission, rather than a feature. Browsers will happily redirect on other 3xxs's. - if (redirected) { - this.#redirectUrl = new URL(response.url) - } else { - this.#redirectUrl = undefined - } - - // [spec] if res's status is not 200, …, then fail the connection. - if (status !== 200) { - this.#failConnection(`Non-200 status code (${status})`, status) - return - } - - // [spec] …or if res's `Content-Type` is not `text/event-stream`, then fail the connection. - const contentType = headers.get('content-type') || '' - if (!contentType.startsWith('text/event-stream')) { - this.#failConnection('Invalid content type, expected "text/event-stream"', status) - return - } - - // [spec] …if the readyState attribute is set to a value other than CLOSED… - if (this.#readyState === this.CLOSED) { - return - } - - // [spec] …sets the readyState attribute to OPEN and fires an event - // [spec] …named open at the EventSource object. - this.#readyState = this.OPEN - - const openEvent = new Event('open') - this.#onOpen?.(openEvent) - this.dispatchEvent(openEvent) - - // Ensure that the response stream is a web stream - if (typeof body !== 'object' || !body || !('getReader' in body)) { - this.#failConnection('Invalid response body, expected a web ReadableStream', status) - this.close() // This should only happen if `fetch` provided is "faulty" - don't reconnect - return - } - - const decoder = new TextDecoder() - - const reader = body.getReader() - let open = true - - do { - const {done, value} = await reader.read() - if (value) { - this.#parser.feed(decoder.decode(value, {stream: !done})) - } - - if (!done) { - continue - } - - open = false - this.#parser.reset() - - this.#scheduleReconnect() - } while (open) - } - - /** - * Handles rejected requests for the EventSource endpoint - * - * @param err - The error from `fetch()` - * @internal - */ - #onFetchError = (err: Error & {type?: string}) => { - this.#controller = undefined - - // We expect abort errors when the user manually calls `close()` - ignore those - if (err.name === 'AbortError' || err.type === 'aborted') { - return - } - - this.#scheduleReconnect(flattenError(err)) - } - - /** - * Get request options for the `fetch()` request - * - * @returns The request options - * @internal - */ - #getRequestOptions(): EventSourceFetchInit { - const lastEvent = this.#lastEventId ? {'Last-Event-ID': this.#lastEventId} : undefined - - const init: EventSourceFetchInit = { - // [spec] Let `corsAttributeState` be `Anonymous`… - // [spec] …will have their mode set to "cors"… - mode: 'cors', - redirect: 'follow', - headers: {Accept: 'text/event-stream', ...lastEvent}, - cache: 'no-store', - signal: this.#controller?.signal, - } - - // Some environments crash if attempting to set `credentials` where it is not supported, - // eg on Cloudflare Workers. To avoid this, we only set it in browser-like environments. - if ('window' in globalThis) { - // [spec] …and their credentials mode set to "same-origin" - // [spec] …if the `withCredentials` attribute is `true`, set the credentials mode to "include"… - init.credentials = this.withCredentials ? 'include' : 'same-origin' - } - - return init - } - - /** - * Called by EventSourceParser instance when an event has successfully been parsed - * and is ready to be processed. - * - * @param event - The parsed event - * @internal - */ - #onEvent = (event: EventSourceMessage) => { - if (typeof event.id === 'string') { - this.#lastEventId = event.id - } - - const messageEvent = new MessageEvent(event.event || 'message', { - data: event.data, - origin: this.#redirectUrl ? this.#redirectUrl.origin : this.#url.origin, - lastEventId: event.id || '', - }) - - // The `onmessage` property of the EventSource instance only triggers on messages without an - // `event` field, or ones that explicitly set `message`. - if (this.#onMessage && (!event.event || event.event === 'message')) { - this.#onMessage(messageEvent) - } - - this.dispatchEvent(messageEvent) - } - - /** - * Called by EventSourceParser instance when a new reconnection interval is received - * from the EventSource endpoint. - * - * @param value - The new reconnection interval in milliseconds - * @internal - */ - #onRetryChange = (value: number) => { - this.#reconnectInterval = value - } - - /** - * Handles the process referred to in the EventSource specification as "failing a connection". - * - * @param error - The error causing the connection to fail - * @param code - The HTTP status code, if available - * @internal - */ - #failConnection(message?: string, code?: number) { - // [spec] …if the readyState attribute is set to a value other than CLOSED, - // [spec] sets the readyState attribute to CLOSED… - if (this.#readyState !== this.CLOSED) { - this.#readyState = this.CLOSED - } - - // [spec] …and fires an event named `error` at the `EventSource` object. - // [spec] Once the user agent has failed the connection, it does not attempt to reconnect. - // [spec] > Implementations are especially encouraged to report detailed information - // [spec] > to their development consoles whenever an error event is fired, since little - // [spec] > to no information can be made available in the events themselves. - // Printing to console is not very programatically helpful, though, so we emit a custom event. - const errorEvent = new ErrorEvent('error', {code, message}) - - this.#onError?.(errorEvent) - this.dispatchEvent(errorEvent) - } - - /** - * Schedules a reconnection attempt against the EventSource endpoint. - * - * @param message - The error causing the connection to fail - * @param code - The HTTP status code, if available - * @internal - */ - #scheduleReconnect(message?: string, code?: number) { - // [spec] If the readyState attribute is set to CLOSED, abort the task. - if (this.#readyState === this.CLOSED) { - return - } - - // [spec] Set the readyState attribute to CONNECTING. - this.#readyState = this.CONNECTING - - // [spec] Fire an event named `error` at the EventSource object. - const errorEvent = new ErrorEvent('error', {code, message}) - this.#onError?.(errorEvent) - this.dispatchEvent(errorEvent) - - // [spec] Wait a delay equal to the reconnection time of the event source. - this.#reconnectTimer = setTimeout(this.#reconnect, this.#reconnectInterval) - } - - /** - * Reconnects to the EventSource endpoint after a disconnect/failure - * - * @internal - */ - #reconnect = () => { - this.#reconnectTimer = undefined - - // [spec] If the EventSource's readyState attribute is not set to CONNECTING, then return. - if (this.#readyState !== this.CONNECTING) { - return - } - - this.#connect() - } -} - -// Provides a way to detect that the EventSource implementation supports passing `fetch` -// that can be used to customize the request, eg custom headers and similar. -Object.defineProperty(EventSource, Symbol.for('eventsource.supports-fetch-override'), { - value: true, - writable: false, - configurable: false, - enumerable: false, -}) - -/** - * According to spec, when constructing a URL: - * > 1. Let baseURL be environment's base URL, if environment is a Document object - * > 2. Return the result of applying the URL parser to url, with baseURL. - * - * Thus we should use `document.baseURI` if available, since it can be set through a base tag. - * - * @returns The base URL, if available - otherwise `undefined` - * @internal - */ -function getBaseURL(): string | undefined { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const doc = 'document' in globalThis ? (globalThis as any).document : undefined - return doc && typeof doc === 'object' && 'baseURI' in doc && typeof doc.baseURI === 'string' - ? doc.baseURI - : undefined -} diff --git a/sdks/nodejs/node_modules/eventsource/src/errors.ts b/sdks/nodejs/node_modules/eventsource/src/errors.ts deleted file mode 100644 index a39f75d..0000000 --- a/sdks/nodejs/node_modules/eventsource/src/errors.ts +++ /dev/null @@ -1,141 +0,0 @@ -/** - * An extended version of the `Event` emitted by the `EventSource` object when an error occurs. - * While the spec does not include any additional properties, we intentionally go beyond the spec - * and provide some (minimal) additional information to aid in debugging. - * - * @public - */ -export class ErrorEvent extends Event { - /** - * HTTP status code, if this was triggered by an HTTP error - * Note: this is not part of the spec, but is included for better error handling. - * - * @public - */ - public code?: number | undefined - - /** - * Optional message attached to the error. - * Note: this is not part of the spec, but is included for better error handling. - * - * @public - */ - public message?: string | undefined - - /** - * Constructs a new `ErrorEvent` instance. This is typically not called directly, - * but rather emitted by the `EventSource` object when an error occurs. - * - * @param type - The type of the event (should be "error") - * @param errorEventInitDict - Optional properties to include in the error event - */ - constructor( - type: string, - errorEventInitDict?: {message?: string | undefined; code?: number | undefined}, - ) { - super(type) - this.code = errorEventInitDict?.code ?? undefined - this.message = errorEventInitDict?.message ?? undefined - } - - /** - * Node.js "hides" the `message` and `code` properties of the `ErrorEvent` instance, - * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging, - * we explicitly include the properties in the `inspect` method. - * - * This is automatically called by Node.js when you `console.log` an instance of this class. - * - * @param _depth - The current depth - * @param options - The options passed to `util.inspect` - * @param inspect - The inspect function to use (prevents having to import it from `util`) - * @returns A string representation of the error - */ - [Symbol.for('nodejs.util.inspect.custom')]( - _depth: number, - options: {colors: boolean}, - inspect: (obj: unknown, inspectOptions: {colors: boolean}) => string, - ): string { - return inspect(inspectableError(this), options) - } - - /** - * Deno "hides" the `message` and `code` properties of the `ErrorEvent` instance, - * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging, - * we explicitly include the properties in the `inspect` method. - * - * This is automatically called by Deno when you `console.log` an instance of this class. - * - * @param inspect - The inspect function to use (prevents having to import it from `util`) - * @param options - The options passed to `Deno.inspect` - * @returns A string representation of the error - */ - [Symbol.for('Deno.customInspect')]( - inspect: (obj: unknown, inspectOptions: {colors: boolean}) => string, - options: {colors: boolean}, - ): string { - return inspect(inspectableError(this), options) - } -} - -/** - * For environments where DOMException may not exist, we will use a SyntaxError instead. - * While this isn't strictly according to spec, it is very close. - * - * @param message - The message to include in the error - * @returns A `DOMException` or `SyntaxError` instance - * @internal - */ -export function syntaxError(message: string): SyntaxError { - // If someone can figure out a way to make this work without depending on DOM/Node.js typings, - // and without casting to `any`, please send a PR 🙏 - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const DomException = (globalThis as any).DOMException - if (typeof DomException === 'function') { - return new DomException(message, 'SyntaxError') - } - - return new SyntaxError(message) -} - -/** - * Flatten an error into a single error message string. - * Unwraps nested errors and joins them with a comma. - * - * @param err - The error to flatten - * @returns A string representation of the error - * @internal - */ -export function flattenError(err: unknown): string { - if (!(err instanceof Error)) { - return `${err}` - } - - if ('errors' in err && Array.isArray(err.errors)) { - return err.errors.map(flattenError).join(', ') - } - - if ('cause' in err && err.cause instanceof Error) { - return `${err}: ${flattenError(err.cause)}` - } - - return err.message -} - -/** - * Convert an `ErrorEvent` instance into a plain object for inspection. - * - * @param err - The `ErrorEvent` instance to inspect - * @returns A plain object representation of the error - * @internal - */ -function inspectableError(err: ErrorEvent) { - return { - type: err.type, - message: err.message, - code: err.code, - defaultPrevented: err.defaultPrevented, - cancelable: err.cancelable, - timeStamp: err.timeStamp, - } -} diff --git a/sdks/nodejs/node_modules/eventsource/src/index.ts b/sdks/nodejs/node_modules/eventsource/src/index.ts deleted file mode 100644 index c6b6216..0000000 --- a/sdks/nodejs/node_modules/eventsource/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export {ErrorEvent} from './errors.js' -export {EventSource} from './EventSource.js' -export type * from './types.js' diff --git a/sdks/nodejs/node_modules/eventsource/src/types.ts b/sdks/nodejs/node_modules/eventsource/src/types.ts deleted file mode 100644 index 1c536c0..0000000 --- a/sdks/nodejs/node_modules/eventsource/src/types.ts +++ /dev/null @@ -1,145 +0,0 @@ -import type {ErrorEvent} from './errors.js' - -/** - * Stripped down version of `fetch()`, only defining the parts we care about. - * This ensures it should work with "most" fetch implementations. - * - * @public - */ -export type FetchLike = ( - url: string | URL, - init: EventSourceFetchInit, -) => Promise - -/** - * Subset of `RequestInit` used for `fetch()` calls made by the `EventSource` class. - * As we know that we will be passing certain values, we can be more specific and have - * users not have to do optional chaining and similar for things that will always be there. - * - * @public - */ -export interface EventSourceFetchInit { - /** An AbortSignal to set request's signal. Typed as `any` because of polyfill inconsistencies. */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - signal: {aborted: boolean} | any - - /** A Headers object, an object literal, or an array of two-item arrays to set request's headers. */ - headers: { - [key: string]: string - Accept: 'text/event-stream' - } - - /** A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode. */ - mode: 'cors' | 'no-cors' | 'same-origin' - - /** A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request's credentials. */ - credentials?: 'include' | 'omit' | 'same-origin' - - /** Controls how the request is cached. */ - cache: 'no-store' - - /** A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect. */ - redirect: 'error' | 'follow' | 'manual' -} - -/** - * Stripped down version of `ReadableStreamDefaultReader`, only defining the parts we care about. - * - * @public - */ -export interface ReaderLike { - read(): Promise<{done: false; value: unknown} | {done: true; value?: undefined}> - cancel(): Promise -} - -/** - * Minimal version of the `Response` type returned by `fetch()`. - * - * @public - */ -export interface FetchLikeResponse { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - readonly body: {getReader(): ReaderLike} | Response['body'] | null - readonly url: string - readonly status: number - readonly redirected: boolean - readonly headers: {get(name: string): string | null} -} - -/** - * Mirrors the official DOM typings, with the exception of the extended ErrorEvent. - * - * @public - */ -export interface EventSourceEventMap { - error: ErrorEvent - message: MessageEvent - open: Event -} - -/** - * Mirrors the official DOM typings (for the most part) - * - * @public - */ -export interface EventSourceInit { - /** - * A boolean value, defaulting to `false`, indicating if CORS should be set to `include` credentials. - */ - withCredentials?: boolean - - /** - * Optional fetch implementation to use. Defaults to `globalThis.fetch`. - * Can also be used for advanced use cases like mocking, proxying, custom certs etc. - */ - fetch?: FetchLike -} - -/** - * Mirrors the official DOM typings (sorta). - * - * @public - */ -export interface EventListenerOptions { - /** Not directly used by Node.js. Added for API completeness. Default: `false`. */ - capture?: boolean -} - -/** - * Mirrors the official DOM typings (sorta). - * - * @public - */ -export interface AddEventListenerOptions extends EventListenerOptions { - /** When `true`, the listener is automatically removed when it is first invoked. Default: `false`. */ - once?: boolean - /** When `true`, serves as a hint that the listener will not call the `Event` object's `preventDefault()` method. Default: false. */ - passive?: boolean - /** The listener will be removed when the given AbortSignal object's `abort()` method is called. */ - signal?: AbortSignal -} - -/** - * Mirrors the official DOM typings. - * - * @public - */ -export type EventListenerOrEventListenerObject = EventListener | EventListenerObject - -/** - * Mirrors the official DOM typings. - * - * @public - */ -export interface EventListener { - (evt: Event | MessageEvent): void -} - -/** - * Mirrors the official DOM typings. - * - * @public - */ -export interface EventListenerObject { - handleEvent(object: Event): void -} diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/.gitattributes b/sdks/nodejs/node_modules/fast-content-type-parse/.gitattributes deleted file mode 100644 index a0e7df9..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Set default behavior to automatically convert line endings -* text=auto eol=lf diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/.github/.stale.yml b/sdks/nodejs/node_modules/fast-content-type-parse/.github/.stale.yml deleted file mode 100644 index 2ee1269..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/.github/.stale.yml +++ /dev/null @@ -1,21 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 15 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 -# Issues with these labels will never be considered stale -exemptLabels: - - "discussion" - - "feature request" - - "bug" - - "help wanted" - - "plugin suggestion" - - "good first issue" -# Label to use when marking an issue as stale -staleLabel: stale -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false \ No newline at end of file diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/.github/dependabot.yml b/sdks/nodejs/node_modules/fast-content-type-parse/.github/dependabot.yml deleted file mode 100644 index 35d66ca..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/.github/dependabot.yml +++ /dev/null @@ -1,13 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "monthly" - open-pull-requests-limit: 10 - - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "monthly" - open-pull-requests-limit: 10 diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/.github/tests_checker.yml b/sdks/nodejs/node_modules/fast-content-type-parse/.github/tests_checker.yml deleted file mode 100644 index 769469b..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/.github/tests_checker.yml +++ /dev/null @@ -1,8 +0,0 @@ -comment: | - Hello! Thank you for contributing! - It appears that you have changed the code, but the tests that verify your change are missing. Could you please add them? -fileExtensions: - - '.ts' - - '.js' - -testDir: 'test' \ No newline at end of file diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/.github/workflows/ci.yml b/sdks/nodejs/node_modules/fast-content-type-parse/.github/workflows/ci.yml deleted file mode 100644 index f9fae55..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/.github/workflows/ci.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: CI - -on: - push: - branches: - - main - - next - - 'v*' - paths-ignore: - - 'docs/**' - - '*.md' - pull_request: - paths-ignore: - - 'docs/**' - - '*.md' - -jobs: - test: - permissions: - contents: write - pull-requests: write - uses: fastify/workflows/.github/workflows/plugins-ci.yml@v5 - with: - license-check: true - lint: true diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/.github/workflows/package-manager-ci.yml b/sdks/nodejs/node_modules/fast-content-type-parse/.github/workflows/package-manager-ci.yml deleted file mode 100644 index c6d598e..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/.github/workflows/package-manager-ci.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: package-manager-ci - -on: - push: - branches: - - main - - next - - 'v*' - paths-ignore: - - 'docs/**' - - '*.md' - pull_request: - paths-ignore: - - 'docs/**' - - '*.md' - -jobs: - test: - permissions: - contents: read - uses: fastify/workflows/.github/workflows/plugins-ci-package-manager.yml@v5 diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/LICENSE b/sdks/nodejs/node_modules/fast-content-type-parse/LICENSE deleted file mode 100644 index 9df4104..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -MIT License - -Copyright (c) 2023 The Fastify Team - -The Fastify team members are listed at https://github.com/fastify/fastify#team -and in the README file. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/README.md b/sdks/nodejs/node_modules/fast-content-type-parse/README.md deleted file mode 100644 index e613e0e..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/README.md +++ /dev/null @@ -1,82 +0,0 @@ -# fast-content-type-parse - -
- -[![NPM version](https://img.shields.io/npm/v/fast-content-type-parse.svg?style=flat)](https://www.npmjs.com/package/fast-content-type-parse) -[![NPM downloads](https://img.shields.io/npm/dm/fast-content-type-parse.svg?style=flat)](https://www.npmjs.com/package/fast-content-type-parse) -[![CI](https://github.com/fastify/fast-content-type-parse/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/fastify/fast-content-type-parse/actions/workflows/ci.yml) -[![neostandard javascript style](https://img.shields.io/badge/code_style-neostandard-brightgreen?style=flat)](https://github.com/neostandard/neostandard) -[![Security Responsible Disclosure](https://img.shields.io/badge/Security-Responsible%20Disclosure-yellow.svg)](https://github.com/fastify/.github/blob/main/SECURITY.md) - -
- -Parse HTTP Content-Type header according to RFC 7231. - -## Installation - -```sh -$ npm install fast-content-type-parse -``` - -## Usage - -```js -const fastContentTypeParse = require('fast-content-type-parse') -``` - -### fastContentTypeParse.parse(string) - -```js -const contentType = fastContentTypeParse.parse('application/json; charset=utf-8') -``` - -Parse a `Content-Type` header. Throws a `TypeError` if the string is invalid. - -It will return an object with the following properties (examples are shown for -the string `'application/json; charset=utf-8'`): - - - `type`: The media type (the type and subtype, always lowercase). - Example: `'application/json'` - - - `parameters`: An object of the parameters in the media type (name of parameter - always lowercase). Example: `{charset: 'utf-8'}` - -### fastContentTypeParse.safeParse(string) - -```js -const contentType = fastContentTypeParse.safeParse('application/json; charset=utf-8') -``` - -Parse a `Content-Type` header. It will not throw an Error if the header is invalid. - -This will return an object with the following -properties (examples are shown for the string `'application/json; charset=utf-8'`): - - - `type`: The media type (the type and subtype, always lowercase). - Example: `'application/json'` - - - `parameters`: An object of the parameters in the media type (name of parameter - always lowercase). Example: `{charset: 'utf-8'}` - -In case the header is invalid, it will return an object -with an empty string `''` as type and an empty Object for `parameters`. - -## Benchmarks - -```sh -node benchmarks/index.js -util#MIMEType x 1,206,781 ops/sec ±0.22% (96 runs sampled) -fast-content-type-parse#parse x 3,752,236 ops/sec ±0.42% (96 runs sampled) -fast-content-type-parse#safeParse x 3,675,645 ops/sec ±1.09% (94 runs sampled) -content-type#parse x 1,452,582 ops/sec ±0.37% (95 runs sampled) -busboy#parseContentType x 924,306 ops/sec ±0.43% (94 runs sampled) -Fastest is fast-content-type-parse#parse -``` - -## Credits - -Based on the npm package `content-type`. - -## License - -Licensed under [MIT](./LICENSE). diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/simple-ows.js b/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/simple-ows.js deleted file mode 100644 index 8cd4e57..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/simple-ows.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -const suite = require('./suite') - -const str = ' application/json' - -suite(str) diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/simple.js b/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/simple.js deleted file mode 100644 index 33b1320..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/simple.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -const suite = require('./suite') - -const str = 'application/json' - -suite(str) diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/suite.js b/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/suite.js deleted file mode 100644 index 104798b..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/suite.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict' - -const util = require('node:util') -const contentType = require('content-type') -const fastContentTypeParser = require('..') -const Benchmark = require('benchmark') -const { parseContentType } = require('busboy/lib/utils') -const suite = new Benchmark.Suite() - -module.exports = function (str) { - console.log(`\nBenchmarking: "${str}"`) - suite - .add('util#MIMEType', function () { - new util.MIMEType(str) // eslint-disable-line no-new - }) - .add('fast-content-type-parse#parse', function () { - fastContentTypeParser.parse(str) - }) - .add('fast-content-type-parse#safeParse', function () { - fastContentTypeParser.safeParse(str) - }) - .add('content-type#parse', function () { - contentType.parse(str) - }) - - if (parseContentType(str) !== undefined) { - suite.add('busboy#parseContentType', function () { - parseContentType(str) - }) - } - suite - .on('cycle', function (event) { - console.log(String(event.target)) - }) - .on('complete', function () { - console.log('Fastest is ' + this.filter('fastest').map('name')) - }) - .run() -} diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/with-param-quoted.js b/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/with-param-quoted.js deleted file mode 100644 index 4b97ee4..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/with-param-quoted.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -const suite = require('./suite') - -const str = 'application/json; charset="utf-8"' - -suite(str) diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/with-param.js b/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/with-param.js deleted file mode 100644 index 3662df2..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/benchmarks/with-param.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -const suite = require('./suite') - -const str = 'application/json; charset=utf-8' - -suite(str) diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/eslint.config.js b/sdks/nodejs/node_modules/fast-content-type-parse/eslint.config.js deleted file mode 100644 index 89fd678..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/eslint.config.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict' - -module.exports = require('neostandard')({ - ignores: require('neostandard').resolveIgnoresFromGitignore(), - ts: true -}) diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/index.js b/sdks/nodejs/node_modules/fast-content-type-parse/index.js deleted file mode 100644 index 438ef1e..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/index.js +++ /dev/null @@ -1,169 +0,0 @@ -'use strict' - -const NullObject = function NullObject () { } -NullObject.prototype = Object.create(null) - -/** - * RegExp to match *( ";" parameter ) in RFC 7231 sec 3.1.1.1 - * - * parameter = token "=" ( token / quoted-string ) - * token = 1*tchar - * tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" - * / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" - * / DIGIT / ALPHA - * ; any VCHAR, except delimiters - * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE - * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text - * obs-text = %x80-FF - * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text ) - */ -const paramRE = /; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu - -/** - * RegExp to match quoted-pair in RFC 7230 sec 3.2.6 - * - * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text ) - * obs-text = %x80-FF - */ -const quotedPairRE = /\\([\v\u0020-\u00ff])/gu - -/** - * RegExp to match type in RFC 7231 sec 3.1.1.1 - * - * media-type = type "/" subtype - * type = token - * subtype = token - */ -const mediaTypeRE = /^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u - -// default ContentType to prevent repeated object creation -const defaultContentType = { type: '', parameters: new NullObject() } -Object.freeze(defaultContentType.parameters) -Object.freeze(defaultContentType) - -/** - * Parse media type to object. - * - * @param {string|object} header - * @return {Object} - * @public - */ - -function parse (header) { - if (typeof header !== 'string') { - throw new TypeError('argument header is required and must be a string') - } - - let index = header.indexOf(';') - const type = index !== -1 - ? header.slice(0, index).trim() - : header.trim() - - if (mediaTypeRE.test(type) === false) { - throw new TypeError('invalid media type') - } - - const result = { - type: type.toLowerCase(), - parameters: new NullObject() - } - - // parse parameters - if (index === -1) { - return result - } - - let key - let match - let value - - paramRE.lastIndex = index - - while ((match = paramRE.exec(header))) { - if (match.index !== index) { - throw new TypeError('invalid parameter format') - } - - index += match[0].length - key = match[1].toLowerCase() - value = match[2] - - if (value[0] === '"') { - // remove quotes and escapes - value = value - .slice(1, value.length - 1) - - quotedPairRE.test(value) && (value = value.replace(quotedPairRE, '$1')) - } - - result.parameters[key] = value - } - - if (index !== header.length) { - throw new TypeError('invalid parameter format') - } - - return result -} - -function safeParse (header) { - if (typeof header !== 'string') { - return defaultContentType - } - - let index = header.indexOf(';') - const type = index !== -1 - ? header.slice(0, index).trim() - : header.trim() - - if (mediaTypeRE.test(type) === false) { - return defaultContentType - } - - const result = { - type: type.toLowerCase(), - parameters: new NullObject() - } - - // parse parameters - if (index === -1) { - return result - } - - let key - let match - let value - - paramRE.lastIndex = index - - while ((match = paramRE.exec(header))) { - if (match.index !== index) { - return defaultContentType - } - - index += match[0].length - key = match[1].toLowerCase() - value = match[2] - - if (value[0] === '"') { - // remove quotes and escapes - value = value - .slice(1, value.length - 1) - - quotedPairRE.test(value) && (value = value.replace(quotedPairRE, '$1')) - } - - result.parameters[key] = value - } - - if (index !== header.length) { - return defaultContentType - } - - return result -} - -module.exports.default = { parse, safeParse } -module.exports.parse = parse -module.exports.safeParse = safeParse -module.exports.defaultContentType = defaultContentType diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/package.json b/sdks/nodejs/node_modules/fast-content-type-parse/package.json deleted file mode 100644 index 52c9f99..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/package.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "name": "fast-content-type-parse", - "version": "3.0.0", - "description": "Parse HTTP Content-Type header according to RFC 7231", - "main": "index.js", - "type": "commonjs", - "types": "./types/index.d.ts", - "scripts": { - "benchmark": "node benchmarks/simple.js && node benchmarks/simple-ows.js && node benchmarks/with-param.js && node benchmarks/with-param-quoted.js", - "lint": "eslint", - "lint:fix": "eslint --fix", - "test": "npm run test:unit && npm run test:typescript", - "test:typescript": "tsd", - "test:unit": "c8 --100 node --test" - }, - "keywords": [ - "content-type", - "rfc7231" - ], - "author": "Aras Abbasi ", - "contributors": [ - { - "name": "Gürgün Dayıoğlu", - "email": "hey@gurgun.day", - "url": "https://heyhey.to/G" - }, - { - "name": "Manuel Spigolon", - "email": "behemoth89@gmail.com" - }, - { - "name": "James Sumners", - "url": "https://james.sumners.info" - }, - { - "name": "Frazer Smith", - "email": "frazer.dev@icloud.com", - "url": "https://github.com/fdawgs" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/fastify/fast-content-type-parse.git" - }, - "bugs": { - "url": "https://github.com/fastify/fast-content-type-parse/issues" - }, - "homepage": "https://github.com/fastify/fast-content-type-parse#readme", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "devDependencies": { - "@fastify/pre-commit": "^2.1.0", - "benchmark": "^2.1.4", - "busboy": "^1.6.0", - "c8": "^10.1.3", - "content-type": "^1.0.4", - "eslint": "^9.17.0", - "neostandard": "^0.12.0", - "tsd": "^0.31.0" - }, - "pre-commit": [ - "lint", - "test" - ] -} diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/test/index.test.js b/sdks/nodejs/node_modules/fast-content-type-parse/test/index.test.js deleted file mode 100644 index ecc314f..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/test/index.test.js +++ /dev/null @@ -1,248 +0,0 @@ -'use strict' - -const { test } = require('node:test') -const { parse, safeParse } = require('..') - -const invalidTypes = [ - ' ', - 'null', - 'undefined', - '/', - 'text / plain', - 'text/;plain', - 'text/"plain"', - 'text/p£ain', - 'text/(plain)', - 'text/@plain', - 'text/plain,wrong' -] - -test('parse', async function (t) { - t.plan(13 + invalidTypes.length) - await t.test('should parse basic type', function (t) { - t.plan(1) - const type = parse('text/html') - t.assert.deepStrictEqual(type.type, 'text/html') - }) - - await t.test('should parse with suffix', function (t) { - t.plan(1) - const type = parse('image/svg+xml') - t.assert.deepStrictEqual(type.type, 'image/svg+xml') - }) - - await t.test('should parse basic type with surrounding OWS', function (t) { - t.plan(1) - const type = parse(' text/html ') - t.assert.deepStrictEqual(type.type, 'text/html') - }) - - await t.test('should parse parameters', function (t) { - t.plan(2) - const type = parse('text/html; charset=utf-8; foo=bar') - t.assert.deepStrictEqual(type.type, 'text/html') - t.assert.deepEqual(type.parameters, { - charset: 'utf-8', - foo: 'bar' - }) - }) - - await t.test('should parse parameters with extra LWS', function (t) { - t.plan(2) - const type = parse('text/html ; charset=utf-8 ; foo=bar') - t.assert.deepStrictEqual(type.type, 'text/html') - t.assert.deepEqual(type.parameters, { - charset: 'utf-8', - foo: 'bar' - }) - }) - - await t.test('should lower-case type', function (t) { - t.plan(1) - const type = parse('IMAGE/SVG+XML') - t.assert.deepStrictEqual(type.type, 'image/svg+xml') - }) - - await t.test('should lower-case parameter names', function (t) { - t.plan(2) - const type = parse('text/html; Charset=UTF-8') - t.assert.deepStrictEqual(type.type, 'text/html') - t.assert.deepEqual(type.parameters, { - charset: 'UTF-8' - }) - }) - - await t.test('should unquote parameter values', function (t) { - t.plan(2) - const type = parse('text/html; charset="UTF-8"') - t.assert.deepStrictEqual(type.type, 'text/html') - t.assert.deepEqual(type.parameters, { - charset: 'UTF-8' - }) - }) - - await t.test('should unquote parameter values with escapes', function (t) { - t.plan(2) - const type = parse('text/html; charset="UT\\F-\\\\\\"8\\""') - t.assert.deepStrictEqual(type.type, 'text/html') - t.assert.deepEqual(type.parameters, { - charset: 'UTF-\\"8"' - }) - }) - - await t.test('should handle balanced quotes', function (t) { - t.plan(2) - const type = parse('text/html; param="charset=\\"utf-8\\"; foo=bar"; bar=foo') - t.assert.deepStrictEqual(type.type, 'text/html') - t.assert.deepEqual(type.parameters, { - param: 'charset="utf-8"; foo=bar', - bar: 'foo' - }) - }) - - invalidTypes.forEach(async function (type) { - await t.test('should throw on invalid media type ' + type, function (t) { - t.plan(1) - t.assert.throws(parse.bind(null, type), new TypeError('invalid media type')) - }) - }) - - await t.test('should throw on invalid parameter format', function (t) { - t.plan(3) - t.assert.throws(parse.bind(null, 'text/plain; foo="bar'), new TypeError('invalid parameter format')) - t.assert.throws(parse.bind(null, 'text/plain; profile=http://localhost; foo=bar'), new TypeError('invalid parameter format')) - t.assert.throws(parse.bind(null, 'text/plain; profile=http://localhost'), new TypeError('invalid parameter format')) - }) - - await t.test('should require argument', function (t) { - t.plan(1) - // @ts-expect-error should reject non-strings - t.assert.throws(parse.bind(null), new TypeError('argument header is required and must be a string')) - }) - - await t.test('should reject non-strings', function (t) { - t.plan(1) - // @ts-expect-error should reject non-strings - t.assert.throws(parse.bind(null, 7), new TypeError('argument header is required and must be a string')) - }) -}) - -test('safeParse', async function (t) { - t.plan(13 + invalidTypes.length) - await t.test('should safeParse basic type', function (t) { - t.plan(1) - const type = safeParse('text/html') - t.assert.deepStrictEqual(type.type, 'text/html') - }) - - await t.test('should safeParse with suffix', function (t) { - t.plan(1) - const type = safeParse('image/svg+xml') - t.assert.deepStrictEqual(type.type, 'image/svg+xml') - }) - - await t.test('should safeParse basic type with surrounding OWS', function (t) { - t.plan(1) - const type = safeParse(' text/html ') - t.assert.deepStrictEqual(type.type, 'text/html') - }) - - await t.test('should safeParse parameters', function (t) { - t.plan(2) - const type = safeParse('text/html; charset=utf-8; foo=bar') - t.assert.deepStrictEqual(type.type, 'text/html') - t.assert.deepEqual(type.parameters, { - charset: 'utf-8', - foo: 'bar' - }) - }) - - await t.test('should safeParse parameters with extra LWS', function (t) { - t.plan(2) - const type = safeParse('text/html ; charset=utf-8 ; foo=bar') - t.assert.deepStrictEqual(type.type, 'text/html') - t.assert.deepEqual(type.parameters, { - charset: 'utf-8', - foo: 'bar' - }) - }) - - await t.test('should lower-case type', function (t) { - t.plan(1) - const type = safeParse('IMAGE/SVG+XML') - t.assert.deepStrictEqual(type.type, 'image/svg+xml') - }) - - await t.test('should lower-case parameter names', function (t) { - t.plan(2) - const type = safeParse('text/html; Charset=UTF-8') - t.assert.deepStrictEqual(type.type, 'text/html') - t.assert.deepEqual(type.parameters, { - charset: 'UTF-8' - }) - }) - - await t.test('should unquote parameter values', function (t) { - t.plan(2) - const type = safeParse('text/html; charset="UTF-8"') - t.assert.deepStrictEqual(type.type, 'text/html') - t.assert.deepEqual(type.parameters, { - charset: 'UTF-8' - }) - }) - - await t.test('should unquote parameter values with escapes', function (t) { - t.plan(2) - const type = safeParse('text/html; charset="UT\\F-\\\\\\"8\\""') - t.assert.deepStrictEqual(type.type, 'text/html') - t.assert.deepEqual(type.parameters, { - charset: 'UTF-\\"8"' - }) - }) - - await t.test('should handle balanced quotes', function (t) { - t.plan(2) - const type = safeParse('text/html; param="charset=\\"utf-8\\"; foo=bar"; bar=foo') - t.assert.deepStrictEqual(type.type, 'text/html') - t.assert.deepEqual(type.parameters, { - param: 'charset="utf-8"; foo=bar', - bar: 'foo' - }) - }) - - invalidTypes.forEach(async function (type) { - await t.test('should return dummyContentType on invalid media type ' + type, function (t) { - t.plan(2) - t.assert.deepStrictEqual(safeParse(type).type, '') - t.assert.deepStrictEqual(Object.keys(safeParse(type).parameters).length, 0) - }) - }) - - await t.test('should return dummyContentType on invalid parameter format', function (t) { - t.plan(6) - t.assert.deepStrictEqual(safeParse('text/plain; foo="bar').type, '') - t.assert.deepStrictEqual(Object.keys(safeParse('text/plain; foo="bar').parameters).length, 0) - - t.assert.deepStrictEqual(safeParse('text/plain; profile=http://localhost; foo=bar').type, '') - t.assert.deepStrictEqual(Object.keys(safeParse('text/plain; profile=http://localhost; foo=bar').parameters).length, 0) - - t.assert.deepStrictEqual(safeParse('text/plain; profile=http://localhost').type, '') - t.assert.deepStrictEqual(Object.keys(safeParse('text/plain; profile=http://localhost').parameters).length, 0) - }) - - await t.test('should return dummyContentType on missing argument', function (t) { - t.plan(2) - // @ts-expect-error should reject non-strings - t.assert.deepStrictEqual(safeParse().type, '') - // @ts-expect-error should reject non-strings - t.assert.deepStrictEqual(Object.keys(safeParse().parameters).length, 0) - }) - - await t.test('should return dummyContentType on non-strings', function (t) { - t.plan(2) - // @ts-expect-error should reject non-strings - t.assert.deepStrictEqual(safeParse(null).type, '') - // @ts-expect-error should reject non-strings - t.assert.deepStrictEqual(Object.keys(safeParse(null).parameters).length, 0) - }) -}) diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/types/.gitkeep b/sdks/nodejs/node_modules/fast-content-type-parse/types/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/types/index.d.ts b/sdks/nodejs/node_modules/fast-content-type-parse/types/index.d.ts deleted file mode 100644 index 74de319..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/types/index.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -interface ContentType { - type: string; - parameters: Record; -} - -interface FastContentTypeParse { - parse: (header: string) => ContentType; - safeParse: (header: string) => ContentType; - defaultContentType: ContentType; -} - -declare namespace fastContentTypeParse { - - export function parse (header: string): ContentType - export function safeParse (header: string): ContentType - export const defaultContentType: ContentType - - const fastContentTypeParse: FastContentTypeParse - export { fastContentTypeParse as default } -} - -export = fastContentTypeParse diff --git a/sdks/nodejs/node_modules/fast-content-type-parse/types/index.test-d.ts b/sdks/nodejs/node_modules/fast-content-type-parse/types/index.test-d.ts deleted file mode 100644 index c1659f6..0000000 --- a/sdks/nodejs/node_modules/fast-content-type-parse/types/index.test-d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { parse, safeParse, defaultContentType } from '..' -import { expectType, expectError } from 'tsd' - -expectError(parse()) -expectError(parse(null)) -expectError(parse(123)) - -expectType(parse('string').type) -expectType>(parse('string').parameters) - -expectError(safeParse()) -expectError(safeParse(null)) -expectError(safeParse(123)) - -expectType(safeParse('string').type) -expectType>(safeParse('string').parameters) - -expectType(defaultContentType.type) -expectType>(defaultContentType.parameters) diff --git a/sdks/nodejs/node_modules/fast-string-truncated-width/dist/index.d.ts b/sdks/nodejs/node_modules/fast-string-truncated-width/dist/index.d.ts deleted file mode 100644 index 720940c..0000000 --- a/sdks/nodejs/node_modules/fast-string-truncated-width/dist/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { TruncationOptions, WidthOptions, Result } from './types.js'; -declare const getStringTruncatedWidth: (input: string, truncationOptions?: TruncationOptions, widthOptions?: WidthOptions) => Result; -export default getStringTruncatedWidth; -export type { TruncationOptions, WidthOptions, Result }; diff --git a/sdks/nodejs/node_modules/fast-string-truncated-width/dist/index.js b/sdks/nodejs/node_modules/fast-string-truncated-width/dist/index.js deleted file mode 100644 index 728a61c..0000000 --- a/sdks/nodejs/node_modules/fast-string-truncated-width/dist/index.js +++ /dev/null @@ -1,111 +0,0 @@ -/* IMPORT */ -import { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji } from './utils.js'; -/* HELPERS */ -const ANSI_RE = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y; -const CONTROL_RE = /[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y; -const CJKT_WIDE_RE = /(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu; -const TAB_RE = /\t{1,1000}/y; -const EMOJI_RE = /[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu; -const LATIN_RE = /(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y; -const MODIFIER_RE = /\p{M}+/gu; -const NO_TRUNCATION = { limit: Infinity, ellipsis: '' }; -/* MAIN */ -const getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {}) => { - /* CONSTANTS */ - const LIMIT = truncationOptions.limit ?? Infinity; - const ELLIPSIS = truncationOptions.ellipsis ?? ''; - const ELLIPSIS_WIDTH = truncationOptions?.ellipsisWidth ?? (ELLIPSIS ? getStringTruncatedWidth(ELLIPSIS, NO_TRUNCATION, widthOptions).width : 0); - const ANSI_WIDTH = 0; - const CONTROL_WIDTH = widthOptions.controlWidth ?? 0; - const TAB_WIDTH = widthOptions.tabWidth ?? 8; - const EMOJI_WIDTH = widthOptions.emojiWidth ?? 2; - const FULL_WIDTH_WIDTH = 2; - const REGULAR_WIDTH = widthOptions.regularWidth ?? 1; - const WIDE_WIDTH = widthOptions.wideWidth ?? FULL_WIDTH_WIDTH; - const PARSE_BLOCKS = [ - [LATIN_RE, REGULAR_WIDTH], - [ANSI_RE, ANSI_WIDTH], - [CONTROL_RE, CONTROL_WIDTH], - [TAB_RE, TAB_WIDTH], - [EMOJI_RE, EMOJI_WIDTH], - [CJKT_WIDE_RE, WIDE_WIDTH], - ]; - /* STATE */ - let indexPrev = 0; - let index = 0; - let length = input.length; - let lengthExtra = 0; - let truncationEnabled = false; - let truncationIndex = length; - let truncationLimit = Math.max(0, LIMIT - ELLIPSIS_WIDTH); - let unmatchedStart = 0; - let unmatchedEnd = 0; - let width = 0; - let widthExtra = 0; - /* PARSE LOOP */ - outer: while (true) { - /* UNMATCHED */ - if ((unmatchedEnd > unmatchedStart) || (index >= length && index > indexPrev)) { - const unmatched = input.slice(unmatchedStart, unmatchedEnd) || input.slice(indexPrev, index); - lengthExtra = 0; - for (const char of unmatched.replaceAll(MODIFIER_RE, '')) { - const codePoint = char.codePointAt(0) || 0; - if (isFullWidth(codePoint)) { - widthExtra = FULL_WIDTH_WIDTH; - } - else if (isWideNotCJKTNotEmoji(codePoint)) { - widthExtra = WIDE_WIDTH; - } - else { - widthExtra = REGULAR_WIDTH; - } - if ((width + widthExtra) > truncationLimit) { - truncationIndex = Math.min(truncationIndex, Math.max(unmatchedStart, indexPrev) + lengthExtra); - } - if ((width + widthExtra) > LIMIT) { - truncationEnabled = true; - break outer; - } - lengthExtra += char.length; - width += widthExtra; - } - unmatchedStart = unmatchedEnd = 0; - } - /* EXITING */ - if (index >= length) { - break outer; - } - /* PARSE BLOCKS */ - for (let i = 0, l = PARSE_BLOCKS.length; i < l; i++) { - const [BLOCK_RE, BLOCK_WIDTH] = PARSE_BLOCKS[i]; - BLOCK_RE.lastIndex = index; - if (BLOCK_RE.test(input)) { - lengthExtra = BLOCK_RE === CJKT_WIDE_RE ? getCodePointsLength(input.slice(index, BLOCK_RE.lastIndex)) : BLOCK_RE === EMOJI_RE ? 1 : BLOCK_RE.lastIndex - index; - widthExtra = lengthExtra * BLOCK_WIDTH; - if ((width + widthExtra) > truncationLimit) { - truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / BLOCK_WIDTH)); - } - if ((width + widthExtra) > LIMIT) { - truncationEnabled = true; - break outer; - } - width += widthExtra; - unmatchedStart = indexPrev; - unmatchedEnd = index; - index = indexPrev = BLOCK_RE.lastIndex; - continue outer; - } - } - /* UNMATCHED INDEX */ - index += 1; - } - /* RETURN */ - return { - width: truncationEnabled ? truncationLimit : width, - index: truncationEnabled ? truncationIndex : length, - truncated: truncationEnabled, - ellipsed: truncationEnabled && LIMIT >= ELLIPSIS_WIDTH - }; -}; -/* EXPORT */ -export default getStringTruncatedWidth; diff --git a/sdks/nodejs/node_modules/fast-string-truncated-width/dist/types.d.ts b/sdks/nodejs/node_modules/fast-string-truncated-width/dist/types.d.ts deleted file mode 100644 index 96aa3c9..0000000 --- a/sdks/nodejs/node_modules/fast-string-truncated-width/dist/types.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -type TruncationOptions = { - limit?: number; - ellipsis?: string; - ellipsisWidth?: number; -}; -type WidthOptions = { - controlWidth?: number; - tabWidth?: number; - emojiWidth?: number; - regularWidth?: number; - wideWidth?: number; -}; -type Result = { - width: number; - index: number; - truncated: boolean; - ellipsed: boolean; -}; -export type { TruncationOptions, WidthOptions, Result }; diff --git a/sdks/nodejs/node_modules/fast-string-truncated-width/dist/types.js b/sdks/nodejs/node_modules/fast-string-truncated-width/dist/types.js deleted file mode 100644 index f312725..0000000 --- a/sdks/nodejs/node_modules/fast-string-truncated-width/dist/types.js +++ /dev/null @@ -1,2 +0,0 @@ -/* MAIN */ -export {}; diff --git a/sdks/nodejs/node_modules/fast-string-truncated-width/dist/utils.d.ts b/sdks/nodejs/node_modules/fast-string-truncated-width/dist/utils.d.ts deleted file mode 100644 index bdb47ac..0000000 --- a/sdks/nodejs/node_modules/fast-string-truncated-width/dist/utils.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare const getCodePointsLength: (input: string) => number; -declare const isFullWidth: (x: number) => boolean; -declare const isWideNotCJKTNotEmoji: (x: number) => boolean; -export { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji }; diff --git a/sdks/nodejs/node_modules/fast-string-truncated-width/dist/utils.js b/sdks/nodejs/node_modules/fast-string-truncated-width/dist/utils.js deleted file mode 100644 index 38c7822..0000000 --- a/sdks/nodejs/node_modules/fast-string-truncated-width/dist/utils.js +++ /dev/null @@ -1,20 +0,0 @@ -/* MAIN */ -const getCodePointsLength = (() => { - const SURROGATE_PAIR_RE = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; - return (input) => { - let surrogatePairsNr = 0; - SURROGATE_PAIR_RE.lastIndex = 0; - while (SURROGATE_PAIR_RE.test(input)) { - surrogatePairsNr += 1; - } - return input.length - surrogatePairsNr; - }; -})(); -const isFullWidth = (x) => { - return x === 0x3000 || x >= 0xFF01 && x <= 0xFF60 || x >= 0xFFE0 && x <= 0xFFE6; -}; -const isWideNotCJKTNotEmoji = (x) => { - return x === 0x231B || x === 0x2329 || x >= 0x2FF0 && x <= 0x2FFF || x >= 0x3001 && x <= 0x303E || x >= 0x3099 && x <= 0x30FF || x >= 0x3105 && x <= 0x312F || x >= 0x3131 && x <= 0x318E || x >= 0x3190 && x <= 0x31E3 || x >= 0x31EF && x <= 0x321E || x >= 0x3220 && x <= 0x3247 || x >= 0x3250 && x <= 0x4DBF || x >= 0xFE10 && x <= 0xFE19 || x >= 0xFE30 && x <= 0xFE52 || x >= 0xFE54 && x <= 0xFE66 || x >= 0xFE68 && x <= 0xFE6B || x >= 0x1F200 && x <= 0x1F202 || x >= 0x1F210 && x <= 0x1F23B || x >= 0x1F240 && x <= 0x1F248 || x >= 0x20000 && x <= 0x2FFFD || x >= 0x30000 && x <= 0x3FFFD; -}; -/* EXPORT */ -export { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji }; diff --git a/sdks/nodejs/node_modules/fast-string-truncated-width/license b/sdks/nodejs/node_modules/fast-string-truncated-width/license deleted file mode 100644 index 815da7d..0000000 --- a/sdks/nodejs/node_modules/fast-string-truncated-width/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2024-present Fabio Spampinato - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/fast-string-truncated-width/package.json b/sdks/nodejs/node_modules/fast-string-truncated-width/package.json deleted file mode 100644 index 5cbe035..0000000 --- a/sdks/nodejs/node_modules/fast-string-truncated-width/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "fast-string-truncated-width", - "repository": "github:fabiospampinato/fast-string-truncated-width", - "description": "A fast function for calculating where a string should be truncated, given an optional width limit and an ellipsis string.", - "license": "MIT", - "version": "3.0.3", - "type": "module", - "main": "dist/index.js", - "exports": "./dist/index.js", - "types": "./dist/index.d.ts", - "scripts": { - "benchmark": "tsex benchmark", - "benchmark:watch": "tsex benchmark --watch", - "clean": "tsex clean", - "compile": "tsex compile", - "compile:watch": "tsex compile --watch", - "test": "tsex test", - "test:watch": "tsex test --watch", - "prepublishOnly": "tsex prepare" - }, - "keywords": [ - "fast", - "string", - "truncated", - "width", - "cli", - "terminal" - ], - "devDependencies": { - "benchloop": "^2.1.1", - "fava": "^0.3.4", - "tsex": "^4.0.2", - "typescript": "^5.7.3" - } -} diff --git a/sdks/nodejs/node_modules/fast-string-truncated-width/readme.md b/sdks/nodejs/node_modules/fast-string-truncated-width/readme.md deleted file mode 100644 index 1e492df..0000000 --- a/sdks/nodejs/node_modules/fast-string-truncated-width/readme.md +++ /dev/null @@ -1,59 +0,0 @@ -# Fast String Truncated Width - -A fast function for calculating where a string should be truncated, given a width limit and an ellipsis string. - -This is a low-level function that basically calculates the visual width of a string and the index at which it should be truncated once printed to the terminal, but taking into account an optional width limit and an optional ellipsis string, so that the string doesn't have to be processed multiple times to be truncated, and how long the part after the truncation point is doesn't cost us anything because we can just ignore it. - -Note that codepoints considered "ambiguous" in Unicode will always use "regularWidth" as their width, if you need to customize this you should use [`string-width`](https://www.npmjs.com/package/string-width) instead. - -## Install - -```sh -npm install fast-string-truncated-width -``` - -## Usage - -```ts -import fastStringTruncatedWidth from 'fast-string-truncated-width'; - -// The width of various classes of characters is configurable - -const widthOptions = { - controlWidth: 0, - tabWidth: 8, - emojiWidth: 2, - regularWidth: 1, - wideWidth: 2 -}; - -// Retrieving the result for a string that fits within our width limit - -const result1 = fastStringTruncatedWidth ( '\x1b[31mhello', { limit: Infinity, ellipsis: '…' }, widthOptions ); - -result1.truncated; // => false, the string fits within the width limit, it doesn't have to be truncated -result1.ellipsed; // => false, the ellipsis string doesn't need to be appended to the string -result1.width; // => 5, the visual width of the string once printed to the terminal -result1.index; // => 10, the end index at which the string should be sliced, equal to input.length in this case - -// Retrieving the result for a string that doesn't fit within our width limit - -const result2 = fastStringTruncatedWidth ( '\x1b[31mhello', { limit: 3, ellipsis: '…' }, widthOptions ); - -result2.truncated; // => true, the string doesn't fit within the width limit, it has to be truncated -result2.ellipsed; // => true, the ellipsis string should be appended to the string (this isn't always the case, for example if our limit is 0) -result2.width; // => 2, the visual width of the string once printed to the terminal (this doesn't account for the width of the ellipsis string itself) -result2.index; // => 7, the end index at which the string should be sliced to truncate it correctly - -// Let's actually truncate a string -// If you are truncating a string that may contain ANSI escapes you'll probaly want to put a "reset" escape after the sliced portion of the input - -const input = '\x1b[31mhello'; -const options = { limit: 3, ellipsis: '…' }; -const result3 = fastStringTruncatedWidth ( input, options, widthOptions ); -const output = `${input.slice ( 0, result3.index )}${result3.ellipsed ? options.ellipsis : ''}`; // => '\x1b[31mhe…' -``` - -## License - -MIT © Fabio Spampinato diff --git a/sdks/nodejs/node_modules/fast-string-width/dist/index.d.ts b/sdks/nodejs/node_modules/fast-string-width/dist/index.d.ts deleted file mode 100644 index c6961fe..0000000 --- a/sdks/nodejs/node_modules/fast-string-width/dist/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { WidthOptions as Options } from 'fast-string-truncated-width'; -declare const fastStringWidth: (input: string, options?: Options) => number; -export default fastStringWidth; -export type { Options }; diff --git a/sdks/nodejs/node_modules/fast-string-width/dist/index.js b/sdks/nodejs/node_modules/fast-string-width/dist/index.js deleted file mode 100644 index e3125b6..0000000 --- a/sdks/nodejs/node_modules/fast-string-width/dist/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/* IMPORT */ -import fastStringTruncatedWidth from 'fast-string-truncated-width'; -/* HELPERS */ -const NO_TRUNCATION = { - limit: Infinity, - ellipsis: '', - ellipsisWidth: 0, -}; -/* MAIN */ -const fastStringWidth = (input, options = {}) => { - return fastStringTruncatedWidth(input, NO_TRUNCATION, options).width; -}; -/* EXPORT */ -export default fastStringWidth; diff --git a/sdks/nodejs/node_modules/fast-string-width/license b/sdks/nodejs/node_modules/fast-string-width/license deleted file mode 100644 index 815da7d..0000000 --- a/sdks/nodejs/node_modules/fast-string-width/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2024-present Fabio Spampinato - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/fast-string-width/package.json b/sdks/nodejs/node_modules/fast-string-width/package.json deleted file mode 100644 index 98f49f6..0000000 --- a/sdks/nodejs/node_modules/fast-string-width/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "fast-string-width", - "repository": "github:fabiospampinato/fast-string-width", - "description": "A fast function for calculating the visual width of a string once printed to the terminal.", - "license": "MIT", - "version": "3.0.2", - "type": "module", - "main": "dist/index.js", - "exports": "./dist/index.js", - "types": "./dist/index.d.ts", - "scripts": { - "clean": "tsex clean", - "compile": "tsex compile", - "compile:watch": "tsex compile --watch", - "test": "tsex test", - "test:watch": "tsex test --watch", - "prepublishOnly": "tsex prepare" - }, - "keywords": [ - "fast", - "string", - "width", - "cli", - "terminal" - ], - "dependencies": { - "fast-string-truncated-width": "^3.0.2" - }, - "devDependencies": { - "fava": "^0.3.4", - "tsex": "^4.0.2", - "typescript": "^5.7.3" - } -} diff --git a/sdks/nodejs/node_modules/fast-string-width/readme.md b/sdks/nodejs/node_modules/fast-string-width/readme.md deleted file mode 100644 index 75d6a8e..0000000 --- a/sdks/nodejs/node_modules/fast-string-width/readme.md +++ /dev/null @@ -1,42 +0,0 @@ -# Fast String Width - -A fast function for calculating the visual width of a string once printed to the terminal. - -See [`fast-string-truncated-width`](https://github.com/fabiospampinato/fast-string-truncated-width) for a lower-level version of this. - -## Install - -```sh -npm install fast-string-width -``` - -## Usage - -```ts -import fastStringWidth from 'fast-string-width'; - -// The width of various classes of characters is configurable - -const options = { - controlWidth: 0, - tabWidth: 8, - emojiWidth: 2, - regularWidth: 1, - wideWidth: 2 -}; - -// Calculating the visual width of some strings - -fastStringWidth ( 'hello', options ); // => 5 -fastStringWidth ( '\x1b[31mhello', options ); // => 5 -fastStringWidth ( '👨‍👩‍👧‍👦', options ); // => 2 -fastStringWidth ( 'hello👨‍👩‍👧‍👦', options ); // => 7 - -// Calculating the visual width while tweaking the width of emojis - -fastStringWidth ( '👶👶🏽', { ...options, emojiWidth: 1.5 } ); // => 3 -``` - -## License - -MIT © Fabio Spampinato diff --git a/sdks/nodejs/node_modules/fast-wrap-ansi/LICENSE b/sdks/nodejs/node_modules/fast-wrap-ansi/LICENSE deleted file mode 100644 index 04e028a..0000000 --- a/sdks/nodejs/node_modules/fast-wrap-ansi/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -MIT License - -Copyright (c) 2025 James Garbutt - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/fast-wrap-ansi/README.md b/sdks/nodejs/node_modules/fast-wrap-ansi/README.md deleted file mode 100644 index 34b391c..0000000 --- a/sdks/nodejs/node_modules/fast-wrap-ansi/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# fast-wrap-ansi - -Wordwrap a string, taking ANSI escape codes into account. - -A fast, light fork of the `wrap-ansi` package. - - -## Install - -```bash -npm i -S fast-wrap-ansi -``` - -## Usage - -```ts -import {wrapAnsi} from 'fast-wrap-ansi'; - -const str = 'This is a string with some \x1b[31mANSI\x1b[39m codes.'; -const wrapped = wrapAnsi(str, 20); -console.log(wrapped); -``` - -## License - -MIT diff --git a/sdks/nodejs/node_modules/fast-wrap-ansi/lib/main.d.ts b/sdks/nodejs/node_modules/fast-wrap-ansi/lib/main.d.ts deleted file mode 100644 index 474f640..0000000 --- a/sdks/nodejs/node_modules/fast-wrap-ansi/lib/main.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface Options { - trim?: boolean; - wordWrap?: boolean; - hard?: boolean; -} -export declare function wrapAnsi(string: string, columns: number, options?: Options): string; diff --git a/sdks/nodejs/node_modules/fast-wrap-ansi/lib/main.js b/sdks/nodejs/node_modules/fast-wrap-ansi/lib/main.js deleted file mode 100644 index bdc1356..0000000 --- a/sdks/nodejs/node_modules/fast-wrap-ansi/lib/main.js +++ /dev/null @@ -1,219 +0,0 @@ -import stringWidth from 'fast-string-width'; -const ESC = '\x1B'; -const CSI = '\x9B'; -const END_CODE = 39; -const ANSI_ESCAPE_BELL = '\u0007'; -const ANSI_CSI = '['; -const ANSI_OSC = ']'; -const ANSI_SGR_TERMINATOR = 'm'; -const ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`; -const GROUP_REGEX = new RegExp(`(?:\\${ANSI_CSI}(?\\d+)m|\\${ANSI_ESCAPE_LINK}(?.*)${ANSI_ESCAPE_BELL})`, 'y'); -const getClosingCode = (openingCode) => { - if (openingCode >= 30 && openingCode <= 37) - return 39; - if (openingCode >= 90 && openingCode <= 97) - return 39; - if (openingCode >= 40 && openingCode <= 47) - return 49; - if (openingCode >= 100 && openingCode <= 107) - return 49; - if (openingCode === 1 || openingCode === 2) - return 22; - if (openingCode === 3) - return 23; - if (openingCode === 4) - return 24; - if (openingCode === 7) - return 27; - if (openingCode === 8) - return 28; - if (openingCode === 9) - return 29; - if (openingCode === 0) - return 0; - return undefined; -}; -const wrapAnsiCode = (code) => `${ESC}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`; -const wrapAnsiHyperlink = (url) => `${ESC}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`; -const wrapWord = (rows, word, columns) => { - const characters = word[Symbol.iterator](); - let isInsideEscape = false; - let isInsideLinkEscape = false; - let lastRow = rows.at(-1); - let visible = lastRow === undefined ? 0 : stringWidth(lastRow); - let currentCharacter = characters.next(); - let nextCharacter = characters.next(); - let rawCharacterIndex = 0; - while (!currentCharacter.done) { - const character = currentCharacter.value; - const characterLength = stringWidth(character); - if (visible + characterLength <= columns) { - rows[rows.length - 1] += character; - } - else { - rows.push(character); - visible = 0; - } - if (character === ESC || character === CSI) { - isInsideEscape = true; - isInsideLinkEscape = word.startsWith(ANSI_ESCAPE_LINK, rawCharacterIndex + 1); - } - if (isInsideEscape) { - if (isInsideLinkEscape) { - if (character === ANSI_ESCAPE_BELL) { - isInsideEscape = false; - isInsideLinkEscape = false; - } - } - else if (character === ANSI_SGR_TERMINATOR) { - isInsideEscape = false; - } - } - else { - visible += characterLength; - if (visible === columns && !nextCharacter.done) { - rows.push(''); - visible = 0; - } - } - currentCharacter = nextCharacter; - nextCharacter = characters.next(); - rawCharacterIndex += character.length; - } - lastRow = rows.at(-1); - if (!visible && lastRow !== undefined && lastRow.length && rows.length > 1) { - rows[rows.length - 2] += rows.pop(); - } -}; -const stringVisibleTrimSpacesRight = (string) => { - const words = string.split(' '); - let last = words.length; - while (last) { - if (stringWidth(words[last - 1])) { - break; - } - last--; - } - if (last === words.length) { - return string; - } - return words.slice(0, last).join(' ') + words.slice(last).join(''); -}; -const exec = (string, columns, options = {}) => { - if (options.trim !== false && string.trim() === '') { - return ''; - } - let returnValue = ''; - let escapeCode; - let escapeUrl; - const words = string.split(' '); - let rows = ['']; - let rowLength = 0; - for (let index = 0; index < words.length; index++) { - const word = words[index]; - if (options.trim !== false) { - const row = rows.at(-1) ?? ''; - const trimmed = row.trimStart(); - if (row.length !== trimmed.length) { - rows[rows.length - 1] = trimmed; - rowLength = stringWidth(trimmed); - } - } - if (index !== 0) { - if (rowLength >= columns && - (options.wordWrap === false || options.trim === false)) { - rows.push(''); - rowLength = 0; - } - if (rowLength || options.trim === false) { - rows[rows.length - 1] += ' '; - rowLength++; - } - } - const wordLength = stringWidth(word); - if (options.hard && wordLength > columns) { - const remainingColumns = columns - rowLength; - const breaksStartingThisLine = 1 + Math.floor((wordLength - remainingColumns - 1) / columns); - const breaksStartingNextLine = Math.floor((wordLength - 1) / columns); - if (breaksStartingNextLine < breaksStartingThisLine) { - rows.push(''); - } - wrapWord(rows, word, columns); - rowLength = stringWidth(rows.at(-1) ?? ''); - continue; - } - if (rowLength + wordLength > columns && rowLength && wordLength) { - if (options.wordWrap === false && rowLength < columns) { - wrapWord(rows, word, columns); - rowLength = stringWidth(rows.at(-1) ?? ''); - continue; - } - rows.push(''); - rowLength = 0; - } - if (rowLength + wordLength > columns && options.wordWrap === false) { - wrapWord(rows, word, columns); - rowLength = stringWidth(rows.at(-1) ?? ''); - continue; - } - rows[rows.length - 1] += word; - rowLength += wordLength; - } - if (options.trim !== false) { - rows = rows.map((row) => stringVisibleTrimSpacesRight(row)); - } - const preString = rows.join('\n'); - let inSurrogate = false; - for (let i = 0; i < preString.length; i++) { - const character = preString[i]; - returnValue += character; - if (!inSurrogate) { - inSurrogate = character >= '\ud800' && character <= '\udbff'; - if (inSurrogate) { - continue; - } - } - else { - inSurrogate = false; - } - if (character === ESC || character === CSI) { - GROUP_REGEX.lastIndex = i + 1; - const groupsResult = GROUP_REGEX.exec(preString); - const groups = groupsResult?.groups; - if (groups?.code !== undefined) { - const code = Number.parseFloat(groups.code); - escapeCode = code === END_CODE ? undefined : code; - } - else if (groups?.uri !== undefined) { - escapeUrl = groups.uri.length === 0 ? undefined : groups.uri; - } - } - if (preString[i + 1] === '\n') { - if (escapeUrl) { - returnValue += wrapAnsiHyperlink(''); - } - const closingCode = escapeCode ? getClosingCode(escapeCode) : undefined; - if (escapeCode && closingCode) { - returnValue += wrapAnsiCode(closingCode); - } - } - else if (character === '\n') { - if (escapeCode && getClosingCode(escapeCode)) { - returnValue += wrapAnsiCode(escapeCode); - } - if (escapeUrl) { - returnValue += wrapAnsiHyperlink(escapeUrl); - } - } - } - return returnValue; -}; -const CRLF_OR_LF = /\r?\n/; -export function wrapAnsi(string, columns, options) { - return String(string) - .normalize() - .split(CRLF_OR_LF) - .map((line) => exec(line, columns, options)) - .join('\n'); -} -//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/fast-wrap-ansi/lib/main.js.map b/sdks/nodejs/node_modules/fast-wrap-ansi/lib/main.js.map deleted file mode 100644 index c19a225..0000000 --- a/sdks/nodejs/node_modules/fast-wrap-ansi/lib/main.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAE5C,MAAM,GAAG,GAAG,MAAM,CAAC;AACnB,MAAM,GAAG,GAAG,MAAM,CAAC;AAEnB,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAClC,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,gBAAgB,GAAG,GAAG,QAAQ,KAAK,CAAC;AAC1C,MAAM,WAAW,GAAG,IAAI,MAAM,CAC5B,QAAQ,QAAQ,oBAAoB,gBAAgB,aAAa,gBAAgB,GAAG,EACpF,GAAG,CACJ,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,WAAmB,EAAsB,EAAE;IACjE,IAAI,WAAW,IAAI,EAAE,IAAI,WAAW,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IACtD,IAAI,WAAW,IAAI,EAAE,IAAI,WAAW,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IACtD,IAAI,WAAW,IAAI,EAAE,IAAI,WAAW,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IACtD,IAAI,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG;QAAE,OAAO,EAAE,CAAC;IACxD,IAAI,WAAW,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACtD,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAChC,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAAY,EAAU,EAAE,CAC5C,GAAG,GAAG,GAAG,QAAQ,GAAG,IAAI,GAAG,mBAAmB,EAAE,CAAC;AACnD,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAU,EAAE,CAChD,GAAG,GAAG,GAAG,gBAAgB,GAAG,GAAG,GAAG,gBAAgB,EAAE,CAAC;AAEvD,MAAM,QAAQ,GAAG,CAAC,IAAc,EAAE,IAAY,EAAE,OAAe,EAAE,EAAE;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAE3C,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,OAAO,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,gBAAgB,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC;QACzC,MAAM,eAAe,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QAE/C,IAAI,OAAO,GAAG,eAAe,IAAI,OAAO,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrB,OAAO,GAAG,CAAC,CAAC;QACd,CAAC;QAED,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAC3C,cAAc,GAAG,IAAI,CAAC;YAEtB,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAClC,gBAAgB,EAChB,iBAAiB,GAAG,CAAC,CACtB,CAAC;QACJ,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,kBAAkB,EAAE,CAAC;gBACvB,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;oBACnC,cAAc,GAAG,KAAK,CAAC;oBACvB,kBAAkB,GAAG,KAAK,CAAC;gBAC7B,CAAC;YACH,CAAC;iBAAM,IAAI,SAAS,KAAK,mBAAmB,EAAE,CAAC;gBAC7C,cAAc,GAAG,KAAK,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,eAAe,CAAC;YAE3B,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACd,OAAO,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QAED,gBAAgB,GAAG,aAAa,CAAC;QACjC,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;QAClC,iBAAiB,IAAI,SAAS,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACtC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,4BAA4B,GAAG,CAAC,MAAc,EAAU,EAAE;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;IAExB,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM;QACR,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC;IAED,IAAI,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC,CAAC;AAQF,MAAM,IAAI,GAAG,CACX,MAAc,EACd,OAAe,EACf,UAAmB,EAAE,EACb,EAAE;IACV,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACnD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,UAAU,CAAC;IACf,IAAI,SAAS,CAAC;IAEd,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAE1B,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;gBAChC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,IACE,SAAS,IAAI,OAAO;gBACpB,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,EACtD,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACd,SAAS,GAAG,CAAC,CAAC;YAChB,CAAC;YAED,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;gBAC7B,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,IAAI,IAAI,UAAU,GAAG,OAAO,EAAE,CAAC;YACzC,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,CAAC;YAC7C,MAAM,sBAAsB,GAC1B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,gBAAgB,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;YAChE,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;YACtE,IAAI,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;YAED,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9B,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3C,SAAS;QACX,CAAC;QAED,IAAI,SAAS,GAAG,UAAU,GAAG,OAAO,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;YAChE,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,SAAS,GAAG,OAAO,EAAE,CAAC;gBACtD,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9B,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3C,SAAS;YACX,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACd,SAAS,GAAG,CAAC,CAAC;QAChB,CAAC;QAED,IAAI,SAAS,GAAG,UAAU,GAAG,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YACnE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9B,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3C,SAAS;QACX,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QAC9B,SAAS,IAAI,UAAU,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAE/B,WAAW,IAAI,SAAS,CAAC;QAEzB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,WAAW,GAAG,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,CAAC;YAC7D,IAAI,WAAW,EAAE,CAAC;gBAChB,SAAS;YACX,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;QAED,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAC3C,WAAW,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEjD,MAAM,MAAM,GAAG,YAAY,EAAE,MAAM,CAAC;YAEpC,IAAI,MAAM,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,UAAU,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YACpD,CAAC;iBAAM,IAAI,MAAM,EAAE,GAAG,KAAK,SAAS,EAAE,CAAC;gBACrC,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9B,IAAI,SAAS,EAAE,CAAC;gBACd,WAAW,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACvC,CAAC;YAED,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;gBAC9B,WAAW,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YAC9B,IAAI,UAAU,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7C,WAAW,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACd,WAAW,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,OAAO,CAAC;AAE3B,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,OAAe,EAAE,OAAiB;IACzE,OAAO,MAAM,CAAC,MAAM,CAAC;SAClB,SAAS,EAAE;SACX,KAAK,CAAC,UAAU,CAAC;SACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC3C,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/fast-wrap-ansi/package.json b/sdks/nodejs/node_modules/fast-wrap-ansi/package.json deleted file mode 100644 index 42d175a..0000000 --- a/sdks/nodejs/node_modules/fast-wrap-ansi/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "fast-wrap-ansi", - "version": "0.2.0", - "files": [ - "lib" - ], - "description": "A tiny and fast text wrap library which takes ANSI escapes into account.", - "keywords": [ - "wrap", - "ansi", - "term", - "colors" - ], - "homepage": "https://github.com/43081j/fast-wrap-ansi#readme", - "bugs": { - "url": "https://github.com/43081j/fast-wrap-ansi/issues" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/43081j/fast-wrap-ansi.git" - }, - "license": "MIT", - "author": "James Garbutt (https://github.com/43081j)", - "type": "module", - "main": "lib/main.js", - "scripts": { - "format": "prettier --write src test", - "lint": "npm run lint:js && npm run lint:format && npm run lint:types", - "lint:js": "eslint src test", - "lint:format": "prettier --check src test", - "lint:types": "npx tsc --noEmit -p tsconfig.test.json", - "build": "tsc", - "test": "vitest run" - }, - "devDependencies": { - "@eslint/js": "^9.32.0", - "@types/node": "^24.2.0", - "eslint": "^9.32.0", - "fast-wrap-ansi-prod": "npm:fast-wrap-ansi@*", - "picocolors": "^1.1.1", - "prettier": "^3.6.2", - "tinybench": "^5.0.1", - "typescript": "^5.8.3", - "typescript-eslint": "^8.38.0", - "vitest": "^3.2.4", - "wrap-ansi": "^9.0.2" - }, - "dependencies": { - "fast-string-width": "^3.0.2" - } -} diff --git a/sdks/nodejs/node_modules/iconv-lite/LICENSE b/sdks/nodejs/node_modules/iconv-lite/LICENSE deleted file mode 100644 index d518d83..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2011 Alexander Shtuchkin - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/sdks/nodejs/node_modules/iconv-lite/README.md b/sdks/nodejs/node_modules/iconv-lite/README.md deleted file mode 100644 index 78a7a5f..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/README.md +++ /dev/null @@ -1,138 +0,0 @@ -## iconv-lite: Pure JS character encoding conversion - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-downloads-url] -[![License][license-image]][license-url] -[![NPM Install Size][npm-install-size-image]][npm-install-size-url] - -* No need for native code compilation. Quick to install, works on Windows, Web, and in sandboxed environments. -* Used in popular projects like [Express.js (body_parser)](https://github.com/expressjs/body-parser), - [Grunt](http://gruntjs.com/), [Nodemailer](http://www.nodemailer.com/), [Yeoman](http://yeoman.io/) and others. -* Faster than [node-iconv](https://github.com/bnoordhuis/node-iconv) (see below for performance comparison). -* Intuitive encode/decode API, including Streaming support. -* In-browser usage via [browserify](https://github.com/substack/node-browserify) or [webpack](https://webpack.js.org/) (~180kb gzip compressed with Buffer shim included). -* Typescript [type definition file](https://github.com/ashtuchkin/iconv-lite/blob/master/lib/index.d.ts) included. -* React Native is supported (need to install `stream` module to enable Streaming API). - -## Usage - -### Basic API - -```javascript -var iconv = require('iconv-lite'); - -// Convert from an encoded buffer to a js string. -str = iconv.decode(Buffer.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]), 'win1251'); - -// Convert from a js string to an encoded buffer. -buf = iconv.encode("Sample input string", 'win1251'); - -// Check if encoding is supported -iconv.encodingExists("us-ascii") -``` - -### Streaming API - -```javascript -// Decode stream (from binary data stream to js strings) -http.createServer(function(req, res) { - var converterStream = iconv.decodeStream('win1251'); - req.pipe(converterStream); - - converterStream.on('data', function(str) { - console.log(str); // Do something with decoded strings, chunk-by-chunk. - }); -}); - -// Convert encoding streaming example -fs.createReadStream('file-in-win1251.txt') - .pipe(iconv.decodeStream('win1251')) - .pipe(iconv.encodeStream('ucs2')) - .pipe(fs.createWriteStream('file-in-ucs2.txt')); - -// Sugar: all encode/decode streams have .collect(cb) method to accumulate data. -http.createServer(function(req, res) { - req.pipe(iconv.decodeStream('win1251')).collect(function(err, body) { - assert(typeof body == 'string'); - console.log(body); // full request body string - }); -}); -``` - -## Supported encodings - - * All node.js native encodings: utf8, ucs2 / utf16-le, ascii, binary, base64, hex. - * Additional unicode encodings: utf16, utf16-be, utf-7, utf-7-imap, utf32, utf32-le, and utf32-be. - * All widespread singlebyte encodings: Windows 125x family, ISO-8859 family, - IBM/DOS codepages, Macintosh family, KOI8 family, all others supported by iconv library. - Aliases like 'latin1', 'us-ascii' also supported. - * All widespread multibyte encodings: CP932, CP936, CP949, CP950, GB2312, GBK, GB18030, Big5, Shift_JIS, EUC-JP. - -See [all supported encodings on wiki](https://github.com/ashtuchkin/iconv-lite/wiki/Supported-Encodings). - -Most singlebyte encodings are generated automatically from [node-iconv](https://github.com/bnoordhuis/node-iconv). Thank you Ben Noordhuis and libiconv authors! - -Multibyte encodings are generated from [Unicode.org mappings](http://www.unicode.org/Public/MAPPINGS/) and [WHATWG Encoding Standard mappings](http://encoding.spec.whatwg.org/). Thank you, respective authors! - -## Encoding/decoding speed - -Comparison with node-iconv module (1000x256kb, on MacBook Pro, Core i5/2.6 GHz, Node v0.12.0). -Note: your results may vary, so please always check on your hardware. - - operation iconv@2.1.4 iconv-lite@0.4.7 - ---------------------------------------------------------- - encode('win1251') ~96 Mb/s ~320 Mb/s - decode('win1251') ~95 Mb/s ~246 Mb/s - -## BOM handling - - * Decoding: BOM is stripped by default, unless overridden by passing `stripBOM: false` in options - (f.ex. `iconv.decode(buf, enc, {stripBOM: false})`). - A callback might also be given as a `stripBOM` parameter - it'll be called if BOM character was actually found. - * If you want to detect UTF-8 BOM when decoding other encodings, use [node-autodetect-decoder-stream](https://github.com/danielgindi/node-autodetect-decoder-stream) module. - * Encoding: No BOM added, unless overridden by `addBOM: true` option. - -## UTF-16 Encodings - -This library supports UTF-16LE, UTF-16BE and UTF-16 encodings. First two are straightforward, but UTF-16 is trying to be -smart about endianness in the following ways: - * Decoding: uses BOM and 'spaces heuristic' to determine input endianness. Default is UTF-16LE, but can be - overridden with `defaultEncoding: 'utf-16be'` option. Strips BOM unless `stripBOM: false`. - * Encoding: uses UTF-16LE and writes BOM by default. Use `addBOM: false` to override. - -## UTF-32 Encodings - -This library supports UTF-32LE, UTF-32BE and UTF-32 encodings. Like the UTF-16 encoding above, UTF-32 defaults to UTF-32LE, but uses BOM and 'spaces heuristics' to determine input endianness. - * The default of UTF-32LE can be overridden with the `defaultEncoding: 'utf-32be'` option. Strips BOM unless `stripBOM: false`. - * Encoding: uses UTF-32LE and writes BOM by default. Use `addBOM: false` to override. (`defaultEncoding: 'utf-32be'` can also be used here to change encoding.) - -## Other notes - -When decoding, be sure to supply a Buffer to decode() method, otherwise [bad things usually happen](https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding). -Untranslatable characters are set to � or ?. No transliteration is currently supported. -Node versions 0.10.31 and 0.11.13 are buggy, don't use them (see [#65](https://github.com/ashtuchkin/iconv-lite/issues/65), [#77](https://github.com/ashtuchkin/iconv-lite/issues/77)). - -## Testing - -```sh -git clone git@github.com:ashtuchkin/iconv-lite.git -cd iconv-lite -npm install -npm test - -# To view performance: -npm run test:performance - -# To view test coverage: -npm run test:cov -open coverage/index.html -``` - -[npm-downloads-image]: https://badgen.net/npm/dm/iconv-lite -[npm-downloads-url]: https://npmcharts.com/compare/iconv-lite?minimal=true -[npm-url]: https://npmjs.org/package/iconv-lite -[npm-version-image]: https://badgen.net/npm/v/iconv-lite -[npm-install-size-image]: https://badgen.net/packagephobia/install/iconv-lite -[npm-install-size-url]: https://packagephobia.com/result?p=iconv-lite -[license-image]: https://img.shields.io/npm/l/iconv-lite.svg -[license-url]: https://github.com/ashtuchkin/iconv-lite/blob/HEAD/LICENSE \ No newline at end of file diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/dbcs-codec.js b/sdks/nodejs/node_modules/iconv-lite/encodings/dbcs-codec.js deleted file mode 100644 index bfec7f2..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/dbcs-codec.js +++ /dev/null @@ -1,532 +0,0 @@ -"use strict" -var Buffer = require("safer-buffer").Buffer - -// Multibyte codec. In this scheme, a character is represented by 1 or more bytes. -// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. -// To save memory and loading time, we read table files only when requested. - -exports._dbcs = DBCSCodec - -var UNASSIGNED = -1 -var GB18030_CODE = -2 -var SEQ_START = -10 -var NODE_START = -1000 -var UNASSIGNED_NODE = new Array(0x100) -var DEF_CHAR = -1 - -for (var i = 0; i < 0x100; i++) { UNASSIGNED_NODE[i] = UNASSIGNED } - -// Class DBCSCodec reads and initializes mapping tables. -function DBCSCodec (codecOptions, iconv) { - this.encodingName = codecOptions.encodingName - if (!codecOptions) { throw new Error("DBCS codec is called without the data.") } - if (!codecOptions.table) { throw new Error("Encoding '" + this.encodingName + "' has no data.") } - - // Load tables. - var mappingTable = codecOptions.table() - - // Decode tables: MBCS -> Unicode. - - // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256. - // Trie root is decodeTables[0]. - // Values: >= 0 -> unicode character code. can be > 0xFFFF - // == UNASSIGNED -> unknown/unassigned sequence. - // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence. - // <= NODE_START -> index of the next node in our trie to process next byte. - // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq. - this.decodeTables = [] - this.decodeTables[0] = UNASSIGNED_NODE.slice(0) // Create root node. - - // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. - this.decodeTableSeq = [] - - // Actual mapping tables consist of chunks. Use them to fill up decode tables. - for (var i = 0; i < mappingTable.length; i++) { this._addDecodeChunk(mappingTable[i]) } - - // Load & create GB18030 tables when needed. - if (typeof codecOptions.gb18030 === "function") { - this.gb18030 = codecOptions.gb18030() // Load GB18030 ranges. - - // Add GB18030 common decode nodes. - var commonThirdByteNodeIdx = this.decodeTables.length - this.decodeTables.push(UNASSIGNED_NODE.slice(0)) - - var commonFourthByteNodeIdx = this.decodeTables.length - this.decodeTables.push(UNASSIGNED_NODE.slice(0)) - - // Fill out the tree - var firstByteNode = this.decodeTables[0] - for (var i = 0x81; i <= 0xFE; i++) { - var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]] - for (var j = 0x30; j <= 0x39; j++) { - if (secondByteNode[j] === UNASSIGNED) { - secondByteNode[j] = NODE_START - commonThirdByteNodeIdx - } else if (secondByteNode[j] > NODE_START) { - throw new Error("gb18030 decode tables conflict at byte 2") - } - - var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]] - for (var k = 0x81; k <= 0xFE; k++) { - if (thirdByteNode[k] === UNASSIGNED) { - thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx - } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) { - continue - } else if (thirdByteNode[k] > NODE_START) { - throw new Error("gb18030 decode tables conflict at byte 3") - } - - var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]] - for (var l = 0x30; l <= 0x39; l++) { - if (fourthByteNode[l] === UNASSIGNED) { fourthByteNode[l] = GB18030_CODE } - } - } - } - } - } - - this.defaultCharUnicode = iconv.defaultCharUnicode - - // Encode tables: Unicode -> DBCS. - - // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance. - // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null. - // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.). - // == UNASSIGNED -> no conversion found. Output a default char. - // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence. - this.encodeTable = [] - - // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of - // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key - // means end of sequence (needed when one sequence is a strict subsequence of another). - // Objects are kept separately from encodeTable to increase performance. - this.encodeTableSeq = [] - - // Some chars can be decoded, but need not be encoded. - var skipEncodeChars = {} - if (codecOptions.encodeSkipVals) { - for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) { - var val = codecOptions.encodeSkipVals[i] - if (typeof val === "number") { skipEncodeChars[val] = true } else { - for (var j = val.from; j <= val.to; j++) { skipEncodeChars[j] = true } - } - } - } - - // Use decode trie to recursively fill out encode tables. - this._fillEncodeTable(0, 0, skipEncodeChars) - - // Add more encoding pairs when needed. - if (codecOptions.encodeAdd) { - for (var uChar in codecOptions.encodeAdd) { - if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) { this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]) } - } - } - - this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)] - if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]["?"] - if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0) -} - -DBCSCodec.prototype.encoder = DBCSEncoder -DBCSCodec.prototype.decoder = DBCSDecoder - -// Decoder helpers -DBCSCodec.prototype._getDecodeTrieNode = function (addr) { - var bytes = [] - for (; addr > 0; addr >>>= 8) { bytes.push(addr & 0xFF) } - if (bytes.length == 0) { bytes.push(0) } - - var node = this.decodeTables[0] - for (var i = bytes.length - 1; i > 0; i--) { // Traverse nodes deeper into the trie. - var val = node[bytes[i]] - - if (val == UNASSIGNED) { // Create new node. - node[bytes[i]] = NODE_START - this.decodeTables.length - this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)) - } else if (val <= NODE_START) { // Existing node. - node = this.decodeTables[NODE_START - val] - } else { throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)) } - } - return node -} - -DBCSCodec.prototype._addDecodeChunk = function (chunk) { - // First element of chunk is the hex mbcs code where we start. - var curAddr = parseInt(chunk[0], 16) - - // Choose the decoding node where we'll write our chars. - var writeTable = this._getDecodeTrieNode(curAddr) - curAddr = curAddr & 0xFF - - // Write all other elements of the chunk to the table. - for (var k = 1; k < chunk.length; k++) { - var part = chunk[k] - if (typeof part === "string") { // String, write as-is. - for (var l = 0; l < part.length;) { - var code = part.charCodeAt(l++) - if (code >= 0xD800 && code < 0xDC00) { // Decode surrogate - var codeTrail = part.charCodeAt(l++) - if (codeTrail >= 0xDC00 && codeTrail < 0xE000) { writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00) } else { throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]) } - } else if (code > 0x0FF0 && code <= 0x0FFF) { // Character sequence (our own encoding used) - var len = 0xFFF - code + 2 - var seq = [] - for (var m = 0; m < len; m++) { seq.push(part.charCodeAt(l++)) } // Simple variation: don't support surrogates or subsequences in seq. - - writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length - this.decodeTableSeq.push(seq) - } else { writeTable[curAddr++] = code } // Basic char - } - } else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character. - var charCode = writeTable[curAddr - 1] + 1 - for (var l = 0; l < part; l++) { writeTable[curAddr++] = charCode++ } - } else { throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]) } - } - if (curAddr > 0xFF) { throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr) } -} - -// Encoder helpers -DBCSCodec.prototype._getEncodeBucket = function (uCode) { - var high = uCode >> 8 // This could be > 0xFF because of astral characters. - if (this.encodeTable[high] === undefined) { - this.encodeTable[high] = UNASSIGNED_NODE.slice(0) - } // Create bucket on demand. - return this.encodeTable[high] -} - -DBCSCodec.prototype._setEncodeChar = function (uCode, dbcsCode) { - var bucket = this._getEncodeBucket(uCode) - var low = uCode & 0xFF - if (bucket[low] <= SEQ_START) { this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode } // There's already a sequence, set a single-char subsequence of it. - else if (bucket[low] == UNASSIGNED) { bucket[low] = dbcsCode } -} - -DBCSCodec.prototype._setEncodeSequence = function (seq, dbcsCode) { - // Get the root of character tree according to first character of the sequence. - var uCode = seq[0] - var bucket = this._getEncodeBucket(uCode) - var low = uCode & 0xFF - - var node - if (bucket[low] <= SEQ_START) { - // There's already a sequence with - use it. - node = this.encodeTableSeq[SEQ_START - bucket[low]] - } else { - // There was no sequence object - allocate a new one. - node = {} - if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low] // If a char was set before - make it a single-char subsequence. - bucket[low] = SEQ_START - this.encodeTableSeq.length - this.encodeTableSeq.push(node) - } - - // Traverse the character tree, allocating new nodes as needed. - for (var j = 1; j < seq.length - 1; j++) { - var oldVal = node[uCode] - if (typeof oldVal === "object") { node = oldVal } else { - node = node[uCode] = {} - if (oldVal !== undefined) { node[DEF_CHAR] = oldVal } - } - } - - // Set the leaf to given dbcsCode. - uCode = seq[seq.length - 1] - node[uCode] = dbcsCode -} - -DBCSCodec.prototype._fillEncodeTable = function (nodeIdx, prefix, skipEncodeChars) { - var node = this.decodeTables[nodeIdx] - var hasValues = false - var subNodeEmpty = {} - for (var i = 0; i < 0x100; i++) { - var uCode = node[i] - var mbCode = prefix + i - if (skipEncodeChars[mbCode]) { continue } - - if (uCode >= 0) { - this._setEncodeChar(uCode, mbCode) - hasValues = true - } else if (uCode <= NODE_START) { - var subNodeIdx = NODE_START - uCode - if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030). - var newPrefix = (mbCode << 8) >>> 0 // NOTE: '>>> 0' keeps 32-bit num positive. - if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) { hasValues = true } else { subNodeEmpty[subNodeIdx] = true } - } - } else if (uCode <= SEQ_START) { - this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode) - hasValues = true - } - } - return hasValues -} - -// == Encoder ================================================================== - -function DBCSEncoder (options, codec) { - // Encoder state - this.leadSurrogate = -1 - this.seqObj = undefined - - // Static data - this.encodeTable = codec.encodeTable - this.encodeTableSeq = codec.encodeTableSeq - this.defaultCharSingleByte = codec.defCharSB - this.gb18030 = codec.gb18030 -} - -DBCSEncoder.prototype.write = function (str) { - var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)) - var leadSurrogate = this.leadSurrogate - var seqObj = this.seqObj - var nextChar = -1 - var i = 0; var j = 0 - - while (true) { - // 0. Get next character. - if (nextChar === -1) { - if (i == str.length) break - var uCode = str.charCodeAt(i++) - } else { - var uCode = nextChar - nextChar = -1 - } - - // 1. Handle surrogates. - if (uCode >= 0xD800 && uCode < 0xE000) { // Char is one of surrogates. - if (uCode < 0xDC00) { // We've got lead surrogate. - if (leadSurrogate === -1) { - leadSurrogate = uCode - continue - } else { - leadSurrogate = uCode - // Double lead surrogate found. - uCode = UNASSIGNED - } - } else { // We've got trail surrogate. - if (leadSurrogate !== -1) { - uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00) - leadSurrogate = -1 - } else { - // Incomplete surrogate pair - only trail surrogate found. - uCode = UNASSIGNED - } - } - } else if (leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - nextChar = uCode; uCode = UNASSIGNED // Write an error, then current char. - leadSurrogate = -1 - } - - // 2. Convert uCode character. - var dbcsCode = UNASSIGNED - if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence - var resCode = seqObj[uCode] - if (typeof resCode === "object") { // Sequence continues. - seqObj = resCode - continue - } else if (typeof resCode === "number") { // Sequence finished. Write it. - dbcsCode = resCode - } else if (resCode == undefined) { // Current character is not part of the sequence. - // Try default character for this sequence - resCode = seqObj[DEF_CHAR] - if (resCode !== undefined) { - dbcsCode = resCode // Found. Write it. - nextChar = uCode // Current character will be written too in the next iteration. - } else { - // TODO: What if we have no default? (resCode == undefined) - // Then, we should write first char of the sequence as-is and try the rest recursively. - // Didn't do it for now because no encoding has this situation yet. - // Currently, just skip the sequence and write current char. - } - } - seqObj = undefined - } else if (uCode >= 0) { // Regular character - var subtable = this.encodeTable[uCode >> 8] - if (subtable !== undefined) { dbcsCode = subtable[uCode & 0xFF] } - - if (dbcsCode <= SEQ_START) { // Sequence start - seqObj = this.encodeTableSeq[SEQ_START - dbcsCode] - continue - } - - if (dbcsCode == UNASSIGNED && this.gb18030) { - // Use GB18030 algorithm to find character(s) to write. - var idx = findIdx(this.gb18030.uChars, uCode) - if (idx != -1) { - var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]) - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600 - newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260 - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10 - newBuf[j++] = 0x30 + dbcsCode - continue - } - } - } - - // 3. Write dbcsCode character. - if (dbcsCode === UNASSIGNED) { dbcsCode = this.defaultCharSingleByte } - - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode - } else if (dbcsCode < 0x10000) { - newBuf[j++] = dbcsCode >> 8 // high byte - newBuf[j++] = dbcsCode & 0xFF // low byte - } else if (dbcsCode < 0x1000000) { - newBuf[j++] = dbcsCode >> 16 - newBuf[j++] = (dbcsCode >> 8) & 0xFF - newBuf[j++] = dbcsCode & 0xFF - } else { - newBuf[j++] = dbcsCode >>> 24 - newBuf[j++] = (dbcsCode >>> 16) & 0xFF - newBuf[j++] = (dbcsCode >>> 8) & 0xFF - newBuf[j++] = dbcsCode & 0xFF - } - } - - this.seqObj = seqObj - this.leadSurrogate = leadSurrogate - return newBuf.slice(0, j) -} - -DBCSEncoder.prototype.end = function () { - if (this.leadSurrogate === -1 && this.seqObj === undefined) { return } // All clean. Most often case. - - var newBuf = Buffer.alloc(10); var j = 0 - - if (this.seqObj) { // We're in the sequence. - var dbcsCode = this.seqObj[DEF_CHAR] - if (dbcsCode !== undefined) { // Write beginning of the sequence. - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode - } else { - newBuf[j++] = dbcsCode >> 8 // high byte - newBuf[j++] = dbcsCode & 0xFF // low byte - } - } else { - // See todo above. - } - this.seqObj = undefined - } - - if (this.leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - newBuf[j++] = this.defaultCharSingleByte - this.leadSurrogate = -1 - } - - return newBuf.slice(0, j) -} - -// Export for testing -DBCSEncoder.prototype.findIdx = findIdx - -// == Decoder ================================================================== - -function DBCSDecoder (options, codec) { - // Decoder state - this.nodeIdx = 0 - this.prevBytes = [] - - // Static data - this.decodeTables = codec.decodeTables - this.decodeTableSeq = codec.decodeTableSeq - this.defaultCharUnicode = codec.defaultCharUnicode - this.gb18030 = codec.gb18030 -} - -DBCSDecoder.prototype.write = function (buf) { - var newBuf = Buffer.alloc(buf.length * 2) - var nodeIdx = this.nodeIdx - var prevBytes = this.prevBytes; var prevOffset = this.prevBytes.length - var seqStart = -this.prevBytes.length // idx of the start of current parsed sequence. - var uCode - - for (var i = 0, j = 0; i < buf.length; i++) { - var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset] - - // Lookup in current trie node. - var uCode = this.decodeTables[nodeIdx][curByte] - - if (uCode >= 0) { - // Normal character, just use it. - } else if (uCode === UNASSIGNED) { // Unknown char. - // TODO: Callback with seq. - uCode = this.defaultCharUnicode.charCodeAt(0) - i = seqStart // Skip one byte ('i' will be incremented by the for loop) and try to parse again. - } else if (uCode === GB18030_CODE) { - if (i >= 3) { - var ptr = (buf[i - 3] - 0x81) * 12600 + (buf[i - 2] - 0x30) * 1260 + (buf[i - 1] - 0x81) * 10 + (curByte - 0x30) - } else { - var ptr = (prevBytes[i - 3 + prevOffset] - 0x81) * 12600 + - (((i - 2 >= 0) ? buf[i - 2] : prevBytes[i - 2 + prevOffset]) - 0x30) * 1260 + - (((i - 1 >= 0) ? buf[i - 1] : prevBytes[i - 1 + prevOffset]) - 0x81) * 10 + - (curByte - 0x30) - } - var idx = findIdx(this.gb18030.gbChars, ptr) - uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx] - } else if (uCode <= NODE_START) { // Go to next trie node. - nodeIdx = NODE_START - uCode - continue - } else if (uCode <= SEQ_START) { // Output a sequence of chars. - var seq = this.decodeTableSeq[SEQ_START - uCode] - for (var k = 0; k < seq.length - 1; k++) { - uCode = seq[k] - newBuf[j++] = uCode & 0xFF - newBuf[j++] = uCode >> 8 - } - uCode = seq[seq.length - 1] - } else { throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte) } - - // Write the character to buffer, handling higher planes using surrogate pair. - if (uCode >= 0x10000) { - uCode -= 0x10000 - var uCodeLead = 0xD800 | (uCode >> 10) - newBuf[j++] = uCodeLead & 0xFF - newBuf[j++] = uCodeLead >> 8 - - uCode = 0xDC00 | (uCode & 0x3FF) - } - newBuf[j++] = uCode & 0xFF - newBuf[j++] = uCode >> 8 - - // Reset trie node. - nodeIdx = 0; seqStart = i + 1 - } - - this.nodeIdx = nodeIdx - this.prevBytes = (seqStart >= 0) - ? Array.prototype.slice.call(buf, seqStart) - : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf)) - - return newBuf.slice(0, j).toString("ucs2") -} - -DBCSDecoder.prototype.end = function () { - var ret = "" - - // Try to parse all remaining chars. - while (this.prevBytes.length > 0) { - // Skip 1 character in the buffer. - ret += this.defaultCharUnicode - var bytesArr = this.prevBytes.slice(1) - - // Parse remaining as usual. - this.prevBytes = [] - this.nodeIdx = 0 - if (bytesArr.length > 0) { ret += this.write(bytesArr) } - } - - this.prevBytes = [] - this.nodeIdx = 0 - return ret -} - -// Binary search for GB18030. Returns largest i such that table[i] <= val. -function findIdx (table, val) { - if (table[0] > val) { return -1 } - - var l = 0; var r = table.length - while (l < r - 1) { // always table[l] <= val < table[r] - var mid = l + ((r - l + 1) >> 1) - if (table[mid] <= val) { l = mid } else { r = mid } - } - return l -} diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/dbcs-data.js b/sdks/nodejs/node_modules/iconv-lite/encodings/dbcs-data.js deleted file mode 100644 index a3858d4..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/dbcs-data.js +++ /dev/null @@ -1,185 +0,0 @@ -"use strict" - -// Description of supported double byte encodings and aliases. -// Tables are not require()-d until they are needed to speed up library load. -// require()-s are direct to support Browserify. - -module.exports = { - - // == Japanese/ShiftJIS ==================================================== - // All japanese encodings are based on JIS X set of standards: - // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. - // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. - // Has several variations in 1978, 1983, 1990 and 1997. - // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. - // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. - // 2 planes, first is superset of 0208, second - revised 0212. - // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) - - // Byte encodings are: - // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte - // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. - // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. - // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. - // 0x00-0x7F - lower part of 0201 - // 0x8E, 0xA1-0xDF - upper part of 0201 - // (0xA1-0xFE)x2 - 0208 plane (94x94). - // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). - // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. - // Used as-is in ISO2022 family. - // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, - // 0201-1976 Roman, 0208-1978, 0208-1983. - // * ISO2022-JP-1: Adds esc seq for 0212-1990. - // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. - // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. - // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. - // - // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. - // - // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html - - shiftjis: { - type: "_dbcs", - table: function () { return require("./tables/shiftjis.json") }, - encodeAdd: { "\u00a5": 0x5C, "\u203E": 0x7E }, - encodeSkipVals: [{ from: 0xED40, to: 0xF940 }] - }, - csshiftjis: "shiftjis", - mskanji: "shiftjis", - sjis: "shiftjis", - windows31j: "shiftjis", - ms31j: "shiftjis", - xsjis: "shiftjis", - windows932: "shiftjis", - ms932: "shiftjis", - 932: "shiftjis", - cp932: "shiftjis", - - eucjp: { - type: "_dbcs", - table: function () { return require("./tables/eucjp.json") }, - encodeAdd: { "\u00a5": 0x5C, "\u203E": 0x7E } - }, - - // TODO: KDDI extension to Shift_JIS - // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. - // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. - - // == Chinese/GBK ========================================================== - // http://en.wikipedia.org/wiki/GBK - // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder - - // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 - gb2312: "cp936", - gb231280: "cp936", - gb23121980: "cp936", - csgb2312: "cp936", - csiso58gb231280: "cp936", - euccn: "cp936", - - // Microsoft's CP936 is a subset and approximation of GBK. - windows936: "cp936", - ms936: "cp936", - 936: "cp936", - cp936: { - type: "_dbcs", - table: function () { return require("./tables/cp936.json") } - }, - - // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. - gbk: { - type: "_dbcs", - table: function () { return require("./tables/cp936.json").concat(require("./tables/gbk-added.json")) } - }, - xgbk: "gbk", - isoir58: "gbk", - - // GB18030 is an algorithmic extension of GBK. - // Main source: https://www.w3.org/TR/encoding/#gbk-encoder - // http://icu-project.org/docs/papers/gb18030.html - // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml - // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 - gb18030: { - type: "_dbcs", - table: function () { return require("./tables/cp936.json").concat(require("./tables/gbk-added.json")) }, - gb18030: function () { return require("./tables/gb18030-ranges.json") }, - encodeSkipVals: [0x80], - encodeAdd: { "€": 0xA2E3 } - }, - - chinese: "gb18030", - - // == Korean =============================================================== - // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. - windows949: "cp949", - ms949: "cp949", - 949: "cp949", - cp949: { - type: "_dbcs", - table: function () { return require("./tables/cp949.json") } - }, - - cseuckr: "cp949", - csksc56011987: "cp949", - euckr: "cp949", - isoir149: "cp949", - korean: "cp949", - ksc56011987: "cp949", - ksc56011989: "cp949", - ksc5601: "cp949", - - // == Big5/Taiwan/Hong Kong ================================================ - // There are lots of tables for Big5 and cp950. Please see the following links for history: - // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html - // Variations, in roughly number of defined chars: - // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT - // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ - // * Big5-2003 (Taiwan standard) almost superset of cp950. - // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. - // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. - // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. - // Plus, it has 4 combining sequences. - // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 - // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. - // Implementations are not consistent within browsers; sometimes labeled as just big5. - // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. - // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 - // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. - // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt - // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt - // - // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder - // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. - - windows950: "cp950", - ms950: "cp950", - 950: "cp950", - cp950: { - type: "_dbcs", - table: function () { return require("./tables/cp950.json") } - }, - - // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. - big5: "big5hkscs", - big5hkscs: { - type: "_dbcs", - table: function () { return require("./tables/cp950.json").concat(require("./tables/big5-added.json")) }, - encodeSkipVals: [ - // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of - // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. - // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter. - 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe, - 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca, - 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62, - 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef, - 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed, - - // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345 - 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce - ] - }, - - cnbig5: "big5hkscs", - csbig5: "big5hkscs", - xxbig5: "big5hkscs" -} diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/index.js b/sdks/nodejs/node_modules/iconv-lite/encodings/index.js deleted file mode 100644 index 9d90e3c..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/index.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict" - -var mergeModules = require("../lib/helpers/merge-exports") - -// Update this array if you add/rename/remove files in this directory. -// We support Browserify by skipping automatic module discovery and requiring modules directly. -var modules = [ - require("./internal"), - require("./utf32"), - require("./utf16"), - require("./utf7"), - require("./sbcs-codec"), - require("./sbcs-data"), - require("./sbcs-data-generated"), - require("./dbcs-codec"), - require("./dbcs-data") -] - -// Put all encoding/alias/codec definitions to single object and export it. -for (var i = 0; i < modules.length; i++) { - var module = modules[i] - mergeModules(exports, module) -} diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/internal.js b/sdks/nodejs/node_modules/iconv-lite/encodings/internal.js deleted file mode 100644 index 4e5c3ff..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/internal.js +++ /dev/null @@ -1,218 +0,0 @@ -"use strict" -var Buffer = require("safer-buffer").Buffer - -// Export Node.js internal encodings. - -module.exports = { - // Encodings - utf8: { type: "_internal", bomAware: true }, - cesu8: { type: "_internal", bomAware: true }, - unicode11utf8: "utf8", - - ucs2: { type: "_internal", bomAware: true }, - utf16le: "ucs2", - - binary: { type: "_internal" }, - base64: { type: "_internal" }, - hex: { type: "_internal" }, - - // Codec. - _internal: InternalCodec -} - -// ------------------------------------------------------------------------------ - -function InternalCodec (codecOptions, iconv) { - this.enc = codecOptions.encodingName - this.bomAware = codecOptions.bomAware - - if (this.enc === "base64") { this.encoder = InternalEncoderBase64 } else if (this.enc === "utf8") { this.encoder = InternalEncoderUtf8 } else if (this.enc === "cesu8") { - this.enc = "utf8" // Use utf8 for decoding. - this.encoder = InternalEncoderCesu8 - - // Add decoder for versions of Node not supporting CESU-8 - if (Buffer.from("eda0bdedb2a9", "hex").toString() !== "💩") { - this.decoder = InternalDecoderCesu8 - this.defaultCharUnicode = iconv.defaultCharUnicode - } - } -} - -InternalCodec.prototype.encoder = InternalEncoder -InternalCodec.prototype.decoder = InternalDecoder - -// ------------------------------------------------------------------------------ - -// We use node.js internal decoder. Its signature is the same as ours. -var StringDecoder = require("string_decoder").StringDecoder - -function InternalDecoder (options, codec) { - this.decoder = new StringDecoder(codec.enc) -} - -InternalDecoder.prototype.write = function (buf) { - if (!Buffer.isBuffer(buf)) { - buf = Buffer.from(buf) - } - - return this.decoder.write(buf) -} - -InternalDecoder.prototype.end = function () { - return this.decoder.end() -} - -// ------------------------------------------------------------------------------ -// Encoder is mostly trivial - -function InternalEncoder (options, codec) { - this.enc = codec.enc -} - -InternalEncoder.prototype.write = function (str) { - return Buffer.from(str, this.enc) -} - -InternalEncoder.prototype.end = function () { -} - -// ------------------------------------------------------------------------------ -// Except base64 encoder, which must keep its state. - -function InternalEncoderBase64 (options, codec) { - this.prevStr = "" -} - -InternalEncoderBase64.prototype.write = function (str) { - str = this.prevStr + str - var completeQuads = str.length - (str.length % 4) - this.prevStr = str.slice(completeQuads) - str = str.slice(0, completeQuads) - - return Buffer.from(str, "base64") -} - -InternalEncoderBase64.prototype.end = function () { - return Buffer.from(this.prevStr, "base64") -} - -// ------------------------------------------------------------------------------ -// CESU-8 encoder is also special. - -function InternalEncoderCesu8 (options, codec) { -} - -InternalEncoderCesu8.prototype.write = function (str) { - var buf = Buffer.alloc(str.length * 3); var bufIdx = 0 - for (var i = 0; i < str.length; i++) { - var charCode = str.charCodeAt(i) - // Naive implementation, but it works because CESU-8 is especially easy - // to convert from UTF-16 (which all JS strings are encoded in). - if (charCode < 0x80) { buf[bufIdx++] = charCode } else if (charCode < 0x800) { - buf[bufIdx++] = 0xC0 + (charCode >>> 6) - buf[bufIdx++] = 0x80 + (charCode & 0x3f) - } else { // charCode will always be < 0x10000 in javascript. - buf[bufIdx++] = 0xE0 + (charCode >>> 12) - buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f) - buf[bufIdx++] = 0x80 + (charCode & 0x3f) - } - } - return buf.slice(0, bufIdx) -} - -InternalEncoderCesu8.prototype.end = function () { -} - -// ------------------------------------------------------------------------------ -// CESU-8 decoder is not implemented in Node v4.0+ - -function InternalDecoderCesu8 (options, codec) { - this.acc = 0 - this.contBytes = 0 - this.accBytes = 0 - this.defaultCharUnicode = codec.defaultCharUnicode -} - -InternalDecoderCesu8.prototype.write = function (buf) { - var acc = this.acc; var contBytes = this.contBytes; var accBytes = this.accBytes - var res = "" - for (var i = 0; i < buf.length; i++) { - var curByte = buf[i] - if ((curByte & 0xC0) !== 0x80) { // Leading byte - if (contBytes > 0) { // Previous code is invalid - res += this.defaultCharUnicode - contBytes = 0 - } - - if (curByte < 0x80) { // Single-byte code - res += String.fromCharCode(curByte) - } else if (curByte < 0xE0) { // Two-byte code - acc = curByte & 0x1F - contBytes = 1; accBytes = 1 - } else if (curByte < 0xF0) { // Three-byte code - acc = curByte & 0x0F - contBytes = 2; accBytes = 1 - } else { // Four or more are not supported for CESU-8. - res += this.defaultCharUnicode - } - } else { // Continuation byte - if (contBytes > 0) { // We're waiting for it. - acc = (acc << 6) | (curByte & 0x3f) - contBytes--; accBytes++ - if (contBytes === 0) { - // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80) - if (accBytes === 2 && acc < 0x80 && acc > 0) { - res += this.defaultCharUnicode - } else if (accBytes === 3 && acc < 0x800) { - res += this.defaultCharUnicode - } else { - // Actually add character. - res += String.fromCharCode(acc) - } - } - } else { // Unexpected continuation byte - res += this.defaultCharUnicode - } - } - } - this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes - return res -} - -InternalDecoderCesu8.prototype.end = function () { - var res = 0 - if (this.contBytes > 0) { res += this.defaultCharUnicode } - return res -} - -// ------------------------------------------------------------------------------ -// check the chunk boundaries for surrogate pair - -function InternalEncoderUtf8 (options, codec) { - this.highSurrogate = "" -} - -InternalEncoderUtf8.prototype.write = function (str) { - if (this.highSurrogate) { - str = this.highSurrogate + str - this.highSurrogate = "" - } - - if (str.length > 0) { - var charCode = str.charCodeAt(str.length - 1) - if (charCode >= 0xd800 && charCode < 0xdc00) { - this.highSurrogate = str[str.length - 1] - str = str.slice(0, str.length - 1) - } - } - - return Buffer.from(str, this.enc) -} - -InternalEncoderUtf8.prototype.end = function () { - if (this.highSurrogate) { - var str = this.highSurrogate - this.highSurrogate = "" - return Buffer.from(str, this.enc) - } -} diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/sbcs-codec.js b/sdks/nodejs/node_modules/iconv-lite/encodings/sbcs-codec.js deleted file mode 100644 index 0e2fc92..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/sbcs-codec.js +++ /dev/null @@ -1,75 +0,0 @@ -"use strict" -var Buffer = require("safer-buffer").Buffer - -// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that -// correspond to encoded bytes (if 128 - then lower half is ASCII). - -exports._sbcs = SBCSCodec -function SBCSCodec (codecOptions, iconv) { - if (!codecOptions) { - throw new Error("SBCS codec is called without the data.") - } - - // Prepare char buffer for decoding. - if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) { - throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)") - } - - if (codecOptions.chars.length === 128) { - var asciiString = "" - for (var i = 0; i < 128; i++) { - asciiString += String.fromCharCode(i) - } - codecOptions.chars = asciiString + codecOptions.chars - } - - this.decodeBuf = Buffer.from(codecOptions.chars, "ucs2") - - // Encoding buffer. - var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)) - - for (var i = 0; i < codecOptions.chars.length; i++) { - encodeBuf[codecOptions.chars.charCodeAt(i)] = i - } - - this.encodeBuf = encodeBuf -} - -SBCSCodec.prototype.encoder = SBCSEncoder -SBCSCodec.prototype.decoder = SBCSDecoder - -function SBCSEncoder (options, codec) { - this.encodeBuf = codec.encodeBuf -} - -SBCSEncoder.prototype.write = function (str) { - var buf = Buffer.alloc(str.length) - for (var i = 0; i < str.length; i++) { - buf[i] = this.encodeBuf[str.charCodeAt(i)] - } - - return buf -} - -SBCSEncoder.prototype.end = function () { -} - -function SBCSDecoder (options, codec) { - this.decodeBuf = codec.decodeBuf -} - -SBCSDecoder.prototype.write = function (buf) { - // Strings are immutable in JS -> we use ucs2 buffer to speed up computations. - var decodeBuf = this.decodeBuf - var newBuf = Buffer.alloc(buf.length * 2) - var idx1 = 0; var idx2 = 0 - for (var i = 0; i < buf.length; i++) { - idx1 = buf[i] * 2; idx2 = i * 2 - newBuf[idx2] = decodeBuf[idx1] - newBuf[idx2 + 1] = decodeBuf[idx1 + 1] - } - return newBuf.toString("ucs2") -} - -SBCSDecoder.prototype.end = function () { -} diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/sbcs-data-generated.js b/sdks/nodejs/node_modules/iconv-lite/encodings/sbcs-data-generated.js deleted file mode 100644 index 9b48236..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/sbcs-data-generated.js +++ /dev/null @@ -1,451 +0,0 @@ -"use strict"; - -// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script. -module.exports = { - "437": "cp437", - "737": "cp737", - "775": "cp775", - "850": "cp850", - "852": "cp852", - "855": "cp855", - "856": "cp856", - "857": "cp857", - "858": "cp858", - "860": "cp860", - "861": "cp861", - "862": "cp862", - "863": "cp863", - "864": "cp864", - "865": "cp865", - "866": "cp866", - "869": "cp869", - "874": "windows874", - "922": "cp922", - "1046": "cp1046", - "1124": "cp1124", - "1125": "cp1125", - "1129": "cp1129", - "1133": "cp1133", - "1161": "cp1161", - "1162": "cp1162", - "1163": "cp1163", - "1250": "windows1250", - "1251": "windows1251", - "1252": "windows1252", - "1253": "windows1253", - "1254": "windows1254", - "1255": "windows1255", - "1256": "windows1256", - "1257": "windows1257", - "1258": "windows1258", - "28591": "iso88591", - "28592": "iso88592", - "28593": "iso88593", - "28594": "iso88594", - "28595": "iso88595", - "28596": "iso88596", - "28597": "iso88597", - "28598": "iso88598", - "28599": "iso88599", - "28600": "iso885910", - "28601": "iso885911", - "28603": "iso885913", - "28604": "iso885914", - "28605": "iso885915", - "28606": "iso885916", - "windows874": { - "type": "_sbcs", - "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "win874": "windows874", - "cp874": "windows874", - "windows1250": { - "type": "_sbcs", - "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" - }, - "win1250": "windows1250", - "cp1250": "windows1250", - "windows1251": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "win1251": "windows1251", - "cp1251": "windows1251", - "windows1252": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "win1252": "windows1252", - "cp1252": "windows1252", - "windows1253": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" - }, - "win1253": "windows1253", - "cp1253": "windows1253", - "windows1254": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" - }, - "win1254": "windows1254", - "cp1254": "windows1254", - "windows1255": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" - }, - "win1255": "windows1255", - "cp1255": "windows1255", - "windows1256": { - "type": "_sbcs", - "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے" - }, - "win1256": "windows1256", - "cp1256": "windows1256", - "windows1257": { - "type": "_sbcs", - "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙" - }, - "win1257": "windows1257", - "cp1257": "windows1257", - "windows1258": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "win1258": "windows1258", - "cp1258": "windows1258", - "iso88591": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "cp28591": "iso88591", - "iso88592": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" - }, - "cp28592": "iso88592", - "iso88593": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙" - }, - "cp28593": "iso88593", - "iso88594": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙" - }, - "cp28594": "iso88594", - "iso88595": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ" - }, - "cp28595": "iso88595", - "iso88596": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������" - }, - "cp28596": "iso88596", - "iso88597": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" - }, - "cp28597": "iso88597", - "iso88598": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" - }, - "cp28598": "iso88598", - "iso88599": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" - }, - "cp28599": "iso88599", - "iso885910": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ" - }, - "cp28600": "iso885910", - "iso885911": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "cp28601": "iso885911", - "iso885913": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’" - }, - "cp28603": "iso885913", - "iso885914": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ" - }, - "cp28604": "iso885914", - "iso885915": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "cp28605": "iso885915", - "iso885916": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ" - }, - "cp28606": "iso885916", - "cp437": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm437": "cp437", - "csibm437": "cp437", - "cp737": { - "type": "_sbcs", - "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ " - }, - "ibm737": "cp737", - "csibm737": "cp737", - "cp775": { - "type": "_sbcs", - "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ " - }, - "ibm775": "cp775", - "csibm775": "cp775", - "cp850": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm850": "cp850", - "csibm850": "cp850", - "cp852": { - "type": "_sbcs", - "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ " - }, - "ibm852": "cp852", - "csibm852": "cp852", - "cp855": { - "type": "_sbcs", - "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ " - }, - "ibm855": "cp855", - "csibm855": "cp855", - "cp856": { - "type": "_sbcs", - "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm856": "cp856", - "csibm856": "cp856", - "cp857": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ " - }, - "ibm857": "cp857", - "csibm857": "cp857", - "cp858": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm858": "cp858", - "csibm858": "cp858", - "cp860": { - "type": "_sbcs", - "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm860": "cp860", - "csibm860": "cp860", - "cp861": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm861": "cp861", - "csibm861": "cp861", - "cp862": { - "type": "_sbcs", - "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm862": "cp862", - "csibm862": "cp862", - "cp863": { - "type": "_sbcs", - "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm863": "cp863", - "csibm863": "cp863", - "cp864": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�" - }, - "ibm864": "cp864", - "csibm864": "cp864", - "cp865": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm865": "cp865", - "csibm865": "cp865", - "cp866": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ " - }, - "ibm866": "cp866", - "csibm866": "cp866", - "cp869": { - "type": "_sbcs", - "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ " - }, - "ibm869": "cp869", - "csibm869": "cp869", - "cp922": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ" - }, - "ibm922": "cp922", - "csibm922": "cp922", - "cp1046": { - "type": "_sbcs", - "chars": "ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�" - }, - "ibm1046": "cp1046", - "csibm1046": "cp1046", - "cp1124": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ" - }, - "ibm1124": "cp1124", - "csibm1124": "cp1124", - "cp1125": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ " - }, - "ibm1125": "cp1125", - "csibm1125": "cp1125", - "cp1129": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "ibm1129": "cp1129", - "csibm1129": "cp1129", - "cp1133": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�" - }, - "ibm1133": "cp1133", - "csibm1133": "cp1133", - "cp1161": { - "type": "_sbcs", - "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ " - }, - "ibm1161": "cp1161", - "csibm1161": "cp1161", - "cp1162": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "ibm1162": "cp1162", - "csibm1162": "cp1162", - "cp1163": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "ibm1163": "cp1163", - "csibm1163": "cp1163", - "maccroatian": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ" - }, - "maccyrillic": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" - }, - "macgreek": { - "type": "_sbcs", - "chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�" - }, - "maciceland": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macroman": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macromania": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macthai": { - "type": "_sbcs", - "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����" - }, - "macturkish": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macukraine": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" - }, - "koi8r": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8u": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8ru": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8t": { - "type": "_sbcs", - "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "armscii8": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�" - }, - "rk1048": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "tcvn": { - "type": "_sbcs", - "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ" - }, - "georgianacademy": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "georgianps": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "pt154": { - "type": "_sbcs", - "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "viscii": { - "type": "_sbcs", - "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ" - }, - "iso646cn": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" - }, - "iso646jp": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" - }, - "hproman8": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�" - }, - "macintosh": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "ascii": { - "type": "_sbcs", - "chars": "��������������������������������������������������������������������������������������������������������������������������������" - }, - "tis620": { - "type": "_sbcs", - "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - } -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/sbcs-data.js b/sdks/nodejs/node_modules/iconv-lite/encodings/sbcs-data.js deleted file mode 100644 index d8f8e17..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/sbcs-data.js +++ /dev/null @@ -1,178 +0,0 @@ -"use strict" - -// Manually added data to be used by sbcs codec in addition to generated one. - -module.exports = { - // Not supported by iconv, not sure why. - 10029: "maccenteuro", - maccenteuro: { - type: "_sbcs", - chars: "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ" - }, - - 808: "cp808", - ibm808: "cp808", - cp808: { - type: "_sbcs", - chars: "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ " - }, - - mik: { - type: "_sbcs", - chars: "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - - cp720: { - type: "_sbcs", - chars: "\x80\x81éâ\x84à\x86çêëèïî\x8d\x8e\x8f\x90\u0651\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\u064b\u064c\u064d\u064e\u064f\u0650≈°∙·√ⁿ²■\u00a0" - }, - - // Aliases of generated encodings. - ascii8bit: "ascii", - usascii: "ascii", - ansix34: "ascii", - ansix341968: "ascii", - ansix341986: "ascii", - csascii: "ascii", - cp367: "ascii", - ibm367: "ascii", - isoir6: "ascii", - iso646us: "ascii", - iso646irv: "ascii", - us: "ascii", - - latin1: "iso88591", - latin2: "iso88592", - latin3: "iso88593", - latin4: "iso88594", - latin5: "iso88599", - latin6: "iso885910", - latin7: "iso885913", - latin8: "iso885914", - latin9: "iso885915", - latin10: "iso885916", - - csisolatin1: "iso88591", - csisolatin2: "iso88592", - csisolatin3: "iso88593", - csisolatin4: "iso88594", - csisolatincyrillic: "iso88595", - csisolatinarabic: "iso88596", - csisolatingreek: "iso88597", - csisolatinhebrew: "iso88598", - csisolatin5: "iso88599", - csisolatin6: "iso885910", - - l1: "iso88591", - l2: "iso88592", - l3: "iso88593", - l4: "iso88594", - l5: "iso88599", - l6: "iso885910", - l7: "iso885913", - l8: "iso885914", - l9: "iso885915", - l10: "iso885916", - - isoir14: "iso646jp", - isoir57: "iso646cn", - isoir100: "iso88591", - isoir101: "iso88592", - isoir109: "iso88593", - isoir110: "iso88594", - isoir144: "iso88595", - isoir127: "iso88596", - isoir126: "iso88597", - isoir138: "iso88598", - isoir148: "iso88599", - isoir157: "iso885910", - isoir166: "tis620", - isoir179: "iso885913", - isoir199: "iso885914", - isoir203: "iso885915", - isoir226: "iso885916", - - cp819: "iso88591", - ibm819: "iso88591", - - cyrillic: "iso88595", - - arabic: "iso88596", - arabic8: "iso88596", - ecma114: "iso88596", - asmo708: "iso88596", - - greek: "iso88597", - greek8: "iso88597", - ecma118: "iso88597", - elot928: "iso88597", - - hebrew: "iso88598", - hebrew8: "iso88598", - - turkish: "iso88599", - turkish8: "iso88599", - - thai: "iso885911", - thai8: "iso885911", - - celtic: "iso885914", - celtic8: "iso885914", - isoceltic: "iso885914", - - tis6200: "tis620", - tis62025291: "tis620", - tis62025330: "tis620", - - 10000: "macroman", - 10006: "macgreek", - 10007: "maccyrillic", - 10079: "maciceland", - 10081: "macturkish", - - cspc8codepage437: "cp437", - cspc775baltic: "cp775", - cspc850multilingual: "cp850", - cspcp852: "cp852", - cspc862latinhebrew: "cp862", - cpgr: "cp869", - - msee: "cp1250", - mscyrl: "cp1251", - msansi: "cp1252", - msgreek: "cp1253", - msturk: "cp1254", - mshebr: "cp1255", - msarab: "cp1256", - winbaltrim: "cp1257", - - cp20866: "koi8r", - 20866: "koi8r", - ibm878: "koi8r", - cskoi8r: "koi8r", - - cp21866: "koi8u", - 21866: "koi8u", - ibm1168: "koi8u", - - strk10482002: "rk1048", - - tcvn5712: "tcvn", - tcvn57121: "tcvn", - - gb198880: "iso646cn", - cn: "iso646cn", - - csiso14jisc6220ro: "iso646jp", - jisc62201969ro: "iso646jp", - jp: "iso646jp", - - cshproman8: "hproman8", - r8: "hproman8", - roman8: "hproman8", - xroman8: "hproman8", - ibm1051: "hproman8", - - mac: "macintosh", - csmacintosh: "macintosh" -} diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/big5-added.json b/sdks/nodejs/node_modules/iconv-lite/encodings/tables/big5-added.json deleted file mode 100644 index 3c3d3c2..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/big5-added.json +++ /dev/null @@ -1,122 +0,0 @@ -[ -["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], -["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"], -["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"], -["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"], -["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"], -["8940","𪎩𡅅"], -["8943","攊"], -["8946","丽滝鵎釟"], -["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"], -["89a1","琑糼緍楆竉刧"], -["89ab","醌碸酞肼"], -["89b0","贋胶𠧧"], -["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"], -["89c1","溚舾甙"], -["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"], -["8a40","𧶄唥"], -["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"], -["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"], -["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"], -["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"], -["8aac","䠋𠆩㿺塳𢶍"], -["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"], -["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"], -["8ac9","𪘁𠸉𢫏𢳉"], -["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"], -["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"], -["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"], -["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"], -["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"], -["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"], -["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"], -["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"], -["8ca1","𣏹椙橃𣱣泿"], -["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"], -["8cc9","顨杫䉶圽"], -["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"], -["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"], -["8d40","𠮟"], -["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"], -["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"], -["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"], -["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"], -["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"], -["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"], -["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"], -["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"], -["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"], -["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"], -["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"], -["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"], -["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"], -["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"], -["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"], -["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"], -["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"], -["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"], -["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"], -["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"], -["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"], -["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"], -["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"], -["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"], -["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"], -["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"], -["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"], -["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"], -["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"], -["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"], -["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"], -["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"], -["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"], -["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"], -["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"], -["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"], -["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"], -["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"], -["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"], -["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"], -["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"], -["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"], -["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"], -["9fae","酙隁酜"], -["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"], -["9fc1","𤤙盖鮝个𠳔莾衂"], -["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"], -["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"], -["9fe7","毺蠘罸"], -["9feb","嘠𪙊蹷齓"], -["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"], -["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"], -["a055","𡠻𦸅"], -["a058","詾𢔛"], -["a05b","惽癧髗鵄鍮鮏蟵"], -["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"], -["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"], -["a0a1","嵗𨯂迚𨸹"], -["a0a6","僙𡵆礆匲阸𠼻䁥"], -["a0ae","矾"], -["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"], -["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"], -["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"], -["a3c0","␀",31,"␡"], -["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23], -["c740","す",58,"ァアィイ"], -["c7a1","ゥ",81,"А",5,"ЁЖ",4], -["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"], -["c8a1","龰冈龱𧘇"], -["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"], -["c8f5","ʃɐɛɔɵœøŋʊɪ"], -["f9fe","■"], -["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"], -["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"], -["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"], -["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"], -["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"], -["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"], -["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"], -["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"], -["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"], -["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"] -] diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/cp936.json b/sdks/nodejs/node_modules/iconv-lite/encodings/tables/cp936.json deleted file mode 100644 index 49ddb9a..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/cp936.json +++ /dev/null @@ -1,264 +0,0 @@ -[ -["0","\u0000",127,"€"], -["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"], -["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"], -["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11], -["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"], -["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"], -["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5], -["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"], -["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"], -["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"], -["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"], -["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"], -["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"], -["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4], -["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6], -["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"], -["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7], -["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"], -["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"], -["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"], -["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5], -["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"], -["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6], -["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"], -["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4], -["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4], -["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"], -["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"], -["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6], -["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"], -["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"], -["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"], -["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6], -["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"], -["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"], -["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"], -["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"], -["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"], -["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"], -["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8], -["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"], -["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"], -["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"], -["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"], -["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5], -["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"], -["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"], -["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"], -["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"], -["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5], -["9980","檧檨檪檭",114,"欥欦欨",6], -["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"], -["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"], -["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"], -["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"], -["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"], -["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5], -["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"], -["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"], -["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6], -["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"], -["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"], -["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4], -["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19], -["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"], -["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"], -["a2a1","ⅰ",9], -["a2b1","⒈",19,"⑴",19,"①",9], -["a2e5","㈠",9], -["a2f1","Ⅰ",11], -["a3a1","!"#¥%",88," ̄"], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"Σ",6], -["a6c1","α",16,"σ",6], -["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"], -["a6ee","︻︼︷︸︱"], -["a6f4","︳︴"], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6], -["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"], -["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"], -["a8bd","ńň"], -["a8c0","ɡ"], -["a8c5","ㄅ",36], -["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"], -["a959","℡㈱"], -["a95c","‐"], -["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8], -["a980","﹢",4,"﹨﹩﹪﹫"], -["a996","〇"], -["a9a4","─",75], -["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8], -["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"], -["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4], -["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4], -["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11], -["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"], -["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12], -["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"], -["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"], -["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"], -["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"], -["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"], -["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"], -["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"], -["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"], -["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"], -["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4], -["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"], -["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"], -["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"], -["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9], -["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"], -["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"], -["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"], -["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"], -["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"], -["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16], -["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"], -["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"], -["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"], -["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"], -["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"], -["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"], -["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"], -["bb40","籃",9,"籎",36,"籵",5,"籾",9], -["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"], -["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5], -["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"], -["bd40","紷",54,"絯",7], -["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"], -["be40","継",12,"綧",6,"綯",42], -["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"], -["bf40","緻",62], -["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"], -["c040","繞",35,"纃",23,"纜纝纞"], -["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"], -["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"], -["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"], -["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"], -["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"], -["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"], -["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"], -["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"], -["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"], -["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"], -["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"], -["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"], -["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"], -["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"], -["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"], -["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"], -["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"], -["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"], -["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"], -["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10], -["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"], -["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"], -["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"], -["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"], -["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"], -["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"], -["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"], -["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"], -["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"], -["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9], -["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"], -["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"], -["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"], -["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5], -["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"], -["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"], -["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"], -["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6], -["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"], -["d440","訞",31,"訿",8,"詉",21], -["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"], -["d540","誁",7,"誋",7,"誔",46], -["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"], -["d640","諤",34,"謈",27], -["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"], -["d740","譆",31,"譧",4,"譭",25], -["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"], -["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"], -["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"], -["d940","貮",62], -["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"], -["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"], -["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"], -["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"], -["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"], -["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7], -["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"], -["dd40","軥",62], -["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"], -["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"], -["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"], -["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"], -["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"], -["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"], -["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"], -["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"], -["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"], -["e240","釦",62], -["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"], -["e340","鉆",45,"鉵",16], -["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"], -["e440","銨",5,"銯",24,"鋉",31], -["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"], -["e540","錊",51,"錿",10], -["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"], -["e640","鍬",34,"鎐",27], -["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"], -["e740","鏎",7,"鏗",54], -["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"], -["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"], -["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"], -["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42], -["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"], -["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"], -["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"], -["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"], -["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"], -["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7], -["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"], -["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46], -["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"], -["ee40","頏",62], -["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"], -["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4], -["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"], -["f040","餈",4,"餎餏餑",28,"餯",26], -["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"], -["f140","馌馎馚",10,"馦馧馩",47], -["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"], -["f240","駺",62], -["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"], -["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"], -["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"], -["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5], -["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"], -["f540","魼",62], -["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"], -["f640","鯜",62], -["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"], -["f740","鰼",62], -["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"], -["f840","鳣",62], -["f880","鴢",32], -["f940","鵃",62], -["f980","鶂",32], -["fa40","鶣",62], -["fa80","鷢",32], -["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"], -["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"], -["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6], -["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"], -["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38], -["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"], -["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"] -] diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/cp949.json b/sdks/nodejs/node_modules/iconv-lite/encodings/tables/cp949.json deleted file mode 100644 index 2022a00..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/cp949.json +++ /dev/null @@ -1,273 +0,0 @@ -[ -["0","\u0000",127], -["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"], -["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"], -["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"], -["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5], -["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"], -["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18], -["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7], -["8361","긝",18,"긲긳긵긶긹긻긼"], -["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8], -["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8], -["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18], -["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"], -["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4], -["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"], -["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"], -["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"], -["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10], -["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"], -["8741","놞",9,"놩",15], -["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"], -["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4], -["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4], -["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"], -["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"], -["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"], -["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"], -["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15], -["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"], -["8a61","둧",4,"둭",18,"뒁뒂"], -["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"], -["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"], -["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8], -["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18], -["8c41","똀",15,"똒똓똕똖똗똙",4], -["8c61","똞",6,"똦",5,"똭",6,"똵",5], -["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16], -["8d41","뛃",16,"뛕",8], -["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"], -["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"], -["8e41","랟랡",6,"랪랮",5,"랶랷랹",8], -["8e61","럂",4,"럈럊",19], -["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7], -["8f41","뢅",7,"뢎",17], -["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4], -["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5], -["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"], -["9061","륾",5,"릆릈릋릌릏",15], -["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"], -["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5], -["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5], -["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6], -["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"], -["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4], -["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"], -["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"], -["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8], -["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"], -["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8], -["9461","봞",5,"봥",6,"봭",12], -["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24], -["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"], -["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"], -["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14], -["9641","뺸",23,"뻒뻓"], -["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8], -["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44], -["9741","뾃",16,"뾕",8], -["9761","뾞",17,"뾱",7], -["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"], -["9841","쁀",16,"쁒",5,"쁙쁚쁛"], -["9861","쁝쁞쁟쁡",6,"쁪",15], -["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"], -["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"], -["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"], -["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"], -["9a41","숤숥숦숧숪숬숮숰숳숵",16], -["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"], -["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"], -["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8], -["9b61","쌳",17,"썆",7], -["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"], -["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5], -["9c61","쏿",8,"쐉",6,"쐑",9], -["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12], -["9d41","쒪",13,"쒹쒺쒻쒽",8], -["9d61","쓆",25], -["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"], -["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"], -["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"], -["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"], -["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"], -["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"], -["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"], -["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"], -["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13], -["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"], -["a141","좥좦좧좩",18,"좾좿죀죁"], -["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"], -["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"], -["a241","줐줒",5,"줙",18], -["a261","줭",6,"줵",18], -["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"], -["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"], -["a361","즑",6,"즚즜즞",16], -["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"], -["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"], -["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12], -["a481","쨦쨧쨨쨪",28,"ㄱ",93], -["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"], -["a561","쩫",17,"쩾",5,"쪅쪆"], -["a581","쪇",16,"쪙",14,"ⅰ",9], -["a5b0","Ⅰ",9], -["a5c1","Α",16,"Σ",6], -["a5e1","α",16,"σ",6], -["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"], -["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6], -["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7], -["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7], -["a761","쬪",22,"쭂쭃쭄"], -["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"], -["a841","쭭",10,"쭺",14], -["a861","쮉",18,"쮝",6], -["a881","쮤",19,"쮹",11,"ÆÐªĦ"], -["a8a6","IJ"], -["a8a8","ĿŁØŒºÞŦŊ"], -["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"], -["a941","쯅",14,"쯕",10], -["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18], -["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"], -["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"], -["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"], -["aa81","챳챴챶",29,"ぁ",82], -["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"], -["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5], -["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85], -["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"], -["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4], -["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25], -["acd1","а",5,"ёж",25], -["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7], -["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"], -["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"], -["ae41","췆",5,"췍췎췏췑",16], -["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4], -["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"], -["af41","츬츭츮츯츲츴츶",19], -["af61","칊",13,"칚칛칝칞칢",5,"칪칬"], -["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"], -["b041","캚",5,"캢캦",5,"캮",12], -["b061","캻",5,"컂",19], -["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"], -["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"], -["b161","켥",6,"켮켲",5,"켹",11], -["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"], -["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"], -["b261","쾎",18,"쾢",5,"쾩"], -["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"], -["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"], -["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5], -["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"], -["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5], -["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"], -["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"], -["b541","킕",14,"킦킧킩킪킫킭",5], -["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4], -["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"], -["b641","턅",7,"턎",17], -["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"], -["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"], -["b741","텮",13,"텽",6,"톅톆톇톉톊"], -["b761","톋",20,"톢톣톥톦톧"], -["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"], -["b841","퇐",7,"퇙",17], -["b861","퇫",8,"퇵퇶퇷퇹",13], -["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"], -["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"], -["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"], -["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"], -["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"], -["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5], -["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"], -["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"], -["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"], -["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"], -["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"], -["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"], -["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"], -["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"], -["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13], -["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"], -["be41","퐸",7,"푁푂푃푅",14], -["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"], -["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"], -["bf41","풞",10,"풪",14], -["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"], -["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"], -["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5], -["c061","픞",25], -["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"], -["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"], -["c161","햌햍햎햏햑",19,"햦햧"], -["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"], -["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"], -["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"], -["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"], -["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4], -["c361","홢",4,"홨홪",5,"홲홳홵",11], -["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"], -["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"], -["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4], -["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"], -["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"], -["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4], -["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"], -["c641","힍힎힏힑",6,"힚힜힞",5], -["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"], -["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"], -["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"], -["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"], -["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"], -["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"], -["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"], -["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"], -["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"], -["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"], -["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"], -["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"], -["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"], -["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"], -["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"], -["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"], -["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"], -["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"], -["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"], -["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"], -["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"], -["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"], -["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"], -["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"], -["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"], -["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"], -["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"], -["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"], -["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"], -["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"], -["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"], -["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"], -["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"], -["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"], -["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"], -["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"], -["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"], -["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"], -["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"], -["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"], -["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"], -["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"], -["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"], -["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"], -["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"], -["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"], -["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"], -["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"], -["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"], -["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"], -["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"], -["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"], -["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"], -["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"], -["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"] -] diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/cp950.json b/sdks/nodejs/node_modules/iconv-lite/encodings/tables/cp950.json deleted file mode 100644 index d8bc871..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/cp950.json +++ /dev/null @@ -1,177 +0,0 @@ -[ -["0","\u0000",127], -["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"], -["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"], -["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"], -["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21], -["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10], -["a3a1","ㄐ",25,"˙ˉˊˇˋ"], -["a3e1","€"], -["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"], -["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"], -["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"], -["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"], -["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"], -["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"], -["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"], -["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"], -["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"], -["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"], -["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"], -["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"], -["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"], -["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"], -["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"], -["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"], -["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"], -["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"], -["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"], -["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"], -["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"], -["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"], -["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"], -["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"], -["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"], -["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"], -["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"], -["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"], -["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"], -["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"], -["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"], -["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"], -["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"], -["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"], -["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"], -["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"], -["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"], -["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"], -["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"], -["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"], -["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"], -["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"], -["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"], -["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"], -["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"], -["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"], -["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"], -["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"], -["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"], -["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"], -["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"], -["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"], -["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"], -["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"], -["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"], -["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"], -["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"], -["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"], -["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"], -["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"], -["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"], -["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"], -["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"], -["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"], -["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"], -["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"], -["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"], -["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"], -["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"], -["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"], -["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"], -["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"], -["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"], -["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"], -["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"], -["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"], -["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"], -["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"], -["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"], -["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"], -["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"], -["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"], -["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"], -["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"], -["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"], -["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"], -["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"], -["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"], -["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"], -["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"], -["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"], -["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"], -["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"], -["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"], -["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"], -["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"], -["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"], -["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"], -["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"], -["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"], -["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"], -["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"], -["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"], -["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"], -["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"], -["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"], -["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"], -["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"], -["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"], -["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"], -["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"], -["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"], -["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"], -["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"], -["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"], -["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"], -["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"], -["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"], -["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"], -["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"], -["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"], -["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"], -["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"], -["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"], -["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"], -["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"], -["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"], -["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"], -["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"], -["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"], -["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"], -["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"], -["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"], -["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"], -["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"], -["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"], -["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"], -["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"], -["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"], -["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"], -["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"], -["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"], -["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"], -["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"], -["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"], -["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"], -["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"], -["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"], -["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"], -["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"], -["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"], -["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"], -["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"], -["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"], -["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"], -["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"], -["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"], -["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"], -["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"], -["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"], -["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"], -["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"], -["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"], -["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"], -["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"], -["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"], -["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"] -] diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/eucjp.json b/sdks/nodejs/node_modules/iconv-lite/encodings/tables/eucjp.json deleted file mode 100644 index 4fa61ca..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/eucjp.json +++ /dev/null @@ -1,182 +0,0 @@ -[ -["0","\u0000",127], -["8ea1","。",62], -["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"], -["a2a1","◆□■△▲▽▼※〒→←↑↓〓"], -["a2ba","∈∋⊆⊇⊂⊃∪∩"], -["a2ca","∧∨¬⇒⇔∀∃"], -["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], -["a2f2","ʼn♯♭♪†‡¶"], -["a2fe","◯"], -["a3b0","0",9], -["a3c1","A",25], -["a3e1","a",25], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"Σ",6], -["a6c1","α",16,"σ",6], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], -["ada1","①",19,"Ⅰ",9], -["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], -["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], -["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], -["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"], -["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], -["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"], -["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], -["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"], -["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], -["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"], -["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], -["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"], -["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], -["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"], -["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], -["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"], -["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], -["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"], -["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], -["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"], -["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], -["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"], -["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], -["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"], -["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], -["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"], -["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], -["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"], -["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], -["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"], -["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], -["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"], -["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], -["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], -["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], -["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"], -["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], -["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"], -["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], -["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"], -["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], -["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"], -["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], -["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"], -["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], -["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"], -["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], -["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"], -["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], -["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"], -["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], -["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"], -["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], -["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"], -["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], -["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"], -["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], -["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"], -["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], -["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"], -["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], -["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"], -["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], -["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"], -["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], -["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"], -["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], -["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"], -["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], -["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"], -["f4a1","堯槇遙瑤凜熙"], -["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"], -["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], -["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"], -["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], -["fcf1","ⅰ",9,"¬¦'""], -["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"], -["8fa2c2","¡¦¿"], -["8fa2eb","ºª©®™¤№"], -["8fa6e1","ΆΈΉΊΪ"], -["8fa6e7","Ό"], -["8fa6e9","ΎΫ"], -["8fa6ec","Ώ"], -["8fa6f1","άέήίϊΐόςύϋΰώ"], -["8fa7c2","Ђ",10,"ЎЏ"], -["8fa7f2","ђ",10,"ўџ"], -["8fa9a1","ÆĐ"], -["8fa9a4","Ħ"], -["8fa9a6","IJ"], -["8fa9a8","ŁĿ"], -["8fa9ab","ŊØŒ"], -["8fa9af","ŦÞ"], -["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"], -["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"], -["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"], -["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"], -["8fabbd","ġĥíìïîǐ"], -["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"], -["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"], -["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"], -["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"], -["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"], -["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"], -["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"], -["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"], -["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"], -["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"], -["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"], -["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"], -["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"], -["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"], -["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"], -["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"], -["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"], -["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"], -["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"], -["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"], -["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"], -["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"], -["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"], -["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"], -["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"], -["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"], -["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"], -["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"], -["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"], -["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"], -["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"], -["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"], -["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"], -["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"], -["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"], -["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5], -["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"], -["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"], -["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"], -["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"], -["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"], -["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"], -["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"], -["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"], -["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"], -["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"], -["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"], -["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"], -["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"], -["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"], -["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"], -["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"], -["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"], -["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"], -["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"], -["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"], -["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"], -["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"], -["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4], -["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"], -["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"], -["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"], -["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"] -] diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json b/sdks/nodejs/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json deleted file mode 100644 index 85c6934..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +++ /dev/null @@ -1 +0,0 @@ -{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/gbk-added.json b/sdks/nodejs/node_modules/iconv-lite/encodings/tables/gbk-added.json deleted file mode 100644 index b742e36..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/gbk-added.json +++ /dev/null @@ -1,56 +0,0 @@ -[ -["a140","",62], -["a180","",32], -["a240","",62], -["a280","",32], -["a2ab","",5], -["a2e3","€"], -["a2ef",""], -["a2fd",""], -["a340","",62], -["a380","",31," "], -["a440","",62], -["a480","",32], -["a4f4","",10], -["a540","",62], -["a580","",32], -["a5f7","",7], -["a640","",62], -["a680","",32], -["a6b9","",7], -["a6d9","",6], -["a6ec",""], -["a6f3",""], -["a6f6","",8], -["a740","",62], -["a780","",32], -["a7c2","",14], -["a7f2","",12], -["a896","",10], -["a8bc","ḿ"], -["a8bf","ǹ"], -["a8c1",""], -["a8ea","",20], -["a958",""], -["a95b",""], -["a95d",""], -["a989","〾⿰",11], -["a997","",12], -["a9f0","",14], -["aaa1","",93], -["aba1","",93], -["aca1","",93], -["ada1","",93], -["aea1","",93], -["afa1","",93], -["d7fa","",4], -["f8a1","",93], -["f9a1","",93], -["faa1","",93], -["fba1","",93], -["fca1","",93], -["fda1","",93], -["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"], -["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93], -["8135f437",""] -] diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/shiftjis.json b/sdks/nodejs/node_modules/iconv-lite/encodings/tables/shiftjis.json deleted file mode 100644 index 5a3a43c..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/tables/shiftjis.json +++ /dev/null @@ -1,125 +0,0 @@ -[ -["0","\u0000",128], -["a1","。",62], -["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"], -["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"], -["81b8","∈∋⊆⊇⊂⊃∪∩"], -["81c8","∧∨¬⇒⇔∀∃"], -["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], -["81f0","ʼn♯♭♪†‡¶"], -["81fc","◯"], -["824f","0",9], -["8260","A",25], -["8281","a",25], -["829f","ぁ",82], -["8340","ァ",62], -["8380","ム",22], -["839f","Α",16,"Σ",6], -["83bf","α",16,"σ",6], -["8440","А",5,"ЁЖ",25], -["8470","а",5,"ёж",7], -["8480","о",17], -["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], -["8740","①",19,"Ⅰ",9], -["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], -["877e","㍻"], -["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], -["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], -["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"], -["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], -["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"], -["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], -["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"], -["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], -["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"], -["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], -["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"], -["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], -["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"], -["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], -["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"], -["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], -["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"], -["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], -["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"], -["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], -["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"], -["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], -["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"], -["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], -["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"], -["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], -["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"], -["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], -["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"], -["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], -["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"], -["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], -["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], -["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], -["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"], -["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], -["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"], -["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], -["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"], -["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], -["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"], -["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], -["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"], -["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], -["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"], -["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], -["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"], -["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], -["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"], -["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], -["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"], -["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], -["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"], -["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], -["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"], -["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], -["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"], -["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], -["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"], -["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], -["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"], -["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], -["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"], -["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], -["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"], -["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], -["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"], -["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], -["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"], -["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"], -["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"], -["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], -["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"], -["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], -["eeef","ⅰ",9,"¬¦'""], -["f040","",62], -["f080","",124], -["f140","",62], -["f180","",124], -["f240","",62], -["f280","",124], -["f340","",62], -["f380","",124], -["f440","",62], -["f480","",124], -["f540","",62], -["f580","",124], -["f640","",62], -["f680","",124], -["f740","",62], -["f780","",124], -["f840","",62], -["f880","",124], -["f940",""], -["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"], -["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"], -["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"], -["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"], -["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"] -] diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/utf16.js b/sdks/nodejs/node_modules/iconv-lite/encodings/utf16.js deleted file mode 100644 index ae60d98..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/utf16.js +++ /dev/null @@ -1,187 +0,0 @@ -"use strict" -var Buffer = require("safer-buffer").Buffer - -// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js - -// == UTF16-BE codec. ========================================================== - -exports.utf16be = Utf16BECodec -function Utf16BECodec () { -} - -Utf16BECodec.prototype.encoder = Utf16BEEncoder -Utf16BECodec.prototype.decoder = Utf16BEDecoder -Utf16BECodec.prototype.bomAware = true - -// -- Encoding - -function Utf16BEEncoder () { -} - -Utf16BEEncoder.prototype.write = function (str) { - var buf = Buffer.from(str, "ucs2") - for (var i = 0; i < buf.length; i += 2) { - var tmp = buf[i]; buf[i] = buf[i + 1]; buf[i + 1] = tmp - } - return buf -} - -Utf16BEEncoder.prototype.end = function () { -} - -// -- Decoding - -function Utf16BEDecoder () { - this.overflowByte = -1 -} - -Utf16BEDecoder.prototype.write = function (buf) { - if (buf.length == 0) { return "" } - - var buf2 = Buffer.alloc(buf.length + 1) - var i = 0; var j = 0 - - if (this.overflowByte !== -1) { - buf2[0] = buf[0] - buf2[1] = this.overflowByte - i = 1; j = 2 - } - - for (; i < buf.length - 1; i += 2, j += 2) { - buf2[j] = buf[i + 1] - buf2[j + 1] = buf[i] - } - - this.overflowByte = (i == buf.length - 1) ? buf[buf.length - 1] : -1 - - return buf2.slice(0, j).toString("ucs2") -} - -Utf16BEDecoder.prototype.end = function () { - this.overflowByte = -1 -} - -// == UTF-16 codec ============================================================= -// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic. -// Defaults to UTF-16LE, as it's prevalent and default in Node. -// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le -// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'}); - -// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false). - -exports.utf16 = Utf16Codec -function Utf16Codec (codecOptions, iconv) { - this.iconv = iconv -} - -Utf16Codec.prototype.encoder = Utf16Encoder -Utf16Codec.prototype.decoder = Utf16Decoder - -// -- Encoding (pass-through) - -function Utf16Encoder (options, codec) { - options = options || {} - if (options.addBOM === undefined) { options.addBOM = true } - this.encoder = codec.iconv.getEncoder("utf-16le", options) -} - -Utf16Encoder.prototype.write = function (str) { - return this.encoder.write(str) -} - -Utf16Encoder.prototype.end = function () { - return this.encoder.end() -} - -// -- Decoding - -function Utf16Decoder (options, codec) { - this.decoder = null - this.initialBufs = [] - this.initialBufsLen = 0 - - this.options = options || {} - this.iconv = codec.iconv -} - -Utf16Decoder.prototype.write = function (buf) { - if (!this.decoder) { - // Codec is not chosen yet. Accumulate initial bytes. - this.initialBufs.push(buf) - this.initialBufsLen += buf.length - - if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below) - { return "" } - - // We have enough bytes -> detect endianness. - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding) - this.decoder = this.iconv.getDecoder(encoding, this.options) - - var resStr = "" - for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) } - - this.initialBufs.length = this.initialBufsLen = 0 - return resStr - } - - return this.decoder.write(buf) -} - -Utf16Decoder.prototype.end = function () { - if (!this.decoder) { - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding) - this.decoder = this.iconv.getDecoder(encoding, this.options) - - var resStr = "" - for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) } - - var trail = this.decoder.end() - if (trail) { resStr += trail } - - this.initialBufs.length = this.initialBufsLen = 0 - return resStr - } - return this.decoder.end() -} - -function detectEncoding (bufs, defaultEncoding) { - var b = [] - var charsProcessed = 0 - // Number of ASCII chars when decoded as LE or BE. - var asciiCharsLE = 0 - var asciiCharsBE = 0 - - outerLoop: - for (var i = 0; i < bufs.length; i++) { - var buf = bufs[i] - for (var j = 0; j < buf.length; j++) { - b.push(buf[j]) - if (b.length === 2) { - if (charsProcessed === 0) { - // Check BOM first. - if (b[0] === 0xFF && b[1] === 0xFE) return "utf-16le" - if (b[0] === 0xFE && b[1] === 0xFF) return "utf-16be" - } - - if (b[0] === 0 && b[1] !== 0) asciiCharsBE++ - if (b[0] !== 0 && b[1] === 0) asciiCharsLE++ - - b.length = 0 - charsProcessed++ - - if (charsProcessed >= 100) { - break outerLoop - } - } - } - } - - // Make decisions. - // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. - // So, we count ASCII as if it was LE or BE, and decide from that. - if (asciiCharsBE > asciiCharsLE) return "utf-16be" - if (asciiCharsBE < asciiCharsLE) return "utf-16le" - - // Couldn't decide (likely all zeros or not enough data). - return defaultEncoding || "utf-16le" -} diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/utf32.js b/sdks/nodejs/node_modules/iconv-lite/encodings/utf32.js deleted file mode 100644 index 7231789..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/utf32.js +++ /dev/null @@ -1,307 +0,0 @@ -"use strict" - -var Buffer = require("safer-buffer").Buffer - -// == UTF32-LE/BE codec. ========================================================== - -exports._utf32 = Utf32Codec - -function Utf32Codec (codecOptions, iconv) { - this.iconv = iconv - this.bomAware = true - this.isLE = codecOptions.isLE -} - -exports.utf32le = { type: "_utf32", isLE: true } -exports.utf32be = { type: "_utf32", isLE: false } - -// Aliases -exports.ucs4le = "utf32le" -exports.ucs4be = "utf32be" - -Utf32Codec.prototype.encoder = Utf32Encoder -Utf32Codec.prototype.decoder = Utf32Decoder - -// -- Encoding - -function Utf32Encoder (options, codec) { - this.isLE = codec.isLE - this.highSurrogate = 0 -} - -Utf32Encoder.prototype.write = function (str) { - var src = Buffer.from(str, "ucs2") - var dst = Buffer.alloc(src.length * 2) - var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE - var offset = 0 - - for (var i = 0; i < src.length; i += 2) { - var code = src.readUInt16LE(i) - var isHighSurrogate = (code >= 0xD800 && code < 0xDC00) - var isLowSurrogate = (code >= 0xDC00 && code < 0xE000) - - if (this.highSurrogate) { - if (isHighSurrogate || !isLowSurrogate) { - // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low - // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character - // (technically wrong, but expected by some applications, like Windows file names). - write32.call(dst, this.highSurrogate, offset) - offset += 4 - } else { - // Create 32-bit value from high and low surrogates; - var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000 - - write32.call(dst, codepoint, offset) - offset += 4 - this.highSurrogate = 0 - - continue - } - } - - if (isHighSurrogate) { this.highSurrogate = code } else { - // Even if the current character is a low surrogate, with no previous high surrogate, we'll - // encode it as a semi-invalid stand-alone character for the same reasons expressed above for - // unpaired high surrogates. - write32.call(dst, code, offset) - offset += 4 - this.highSurrogate = 0 - } - } - - if (offset < dst.length) { dst = dst.slice(0, offset) } - - return dst -} - -Utf32Encoder.prototype.end = function () { - // Treat any leftover high surrogate as a semi-valid independent character. - if (!this.highSurrogate) { return } - - var buf = Buffer.alloc(4) - - if (this.isLE) { buf.writeUInt32LE(this.highSurrogate, 0) } else { buf.writeUInt32BE(this.highSurrogate, 0) } - - this.highSurrogate = 0 - - return buf -} - -// -- Decoding - -function Utf32Decoder (options, codec) { - this.isLE = codec.isLE - this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0) - this.overflow = [] -} - -Utf32Decoder.prototype.write = function (src) { - if (src.length === 0) { return "" } - - var i = 0 - var codepoint = 0 - var dst = Buffer.alloc(src.length + 4) - var offset = 0 - var isLE = this.isLE - var overflow = this.overflow - var badChar = this.badChar - - if (overflow.length > 0) { - for (; i < src.length && overflow.length < 4; i++) { overflow.push(src[i]) } - - if (overflow.length === 4) { - // NOTE: codepoint is a signed int32 and can be negative. - // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer). - if (isLE) { - codepoint = overflow[i] | (overflow[i + 1] << 8) | (overflow[i + 2] << 16) | (overflow[i + 3] << 24) - } else { - codepoint = overflow[i + 3] | (overflow[i + 2] << 8) | (overflow[i + 1] << 16) | (overflow[i] << 24) - } - overflow.length = 0 - - offset = _writeCodepoint(dst, offset, codepoint, badChar) - } - } - - // Main loop. Should be as optimized as possible. - for (; i < src.length - 3; i += 4) { - // NOTE: codepoint is a signed int32 and can be negative. - if (isLE) { - codepoint = src[i] | (src[i + 1] << 8) | (src[i + 2] << 16) | (src[i + 3] << 24) - } else { - codepoint = src[i + 3] | (src[i + 2] << 8) | (src[i + 1] << 16) | (src[i] << 24) - } - offset = _writeCodepoint(dst, offset, codepoint, badChar) - } - - // Keep overflowing bytes. - for (; i < src.length; i++) { - overflow.push(src[i]) - } - - return dst.slice(0, offset).toString("ucs2") -} - -function _writeCodepoint (dst, offset, codepoint, badChar) { - // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations. - if (codepoint < 0 || codepoint > 0x10FFFF) { - // Not a valid Unicode codepoint - codepoint = badChar - } - - // Ephemeral Planes: Write high surrogate. - if (codepoint >= 0x10000) { - codepoint -= 0x10000 - - var high = 0xD800 | (codepoint >> 10) - dst[offset++] = high & 0xff - dst[offset++] = high >> 8 - - // Low surrogate is written below. - var codepoint = 0xDC00 | (codepoint & 0x3FF) - } - - // Write BMP char or low surrogate. - dst[offset++] = codepoint & 0xff - dst[offset++] = codepoint >> 8 - - return offset -}; - -Utf32Decoder.prototype.end = function () { - this.overflow.length = 0 -} - -// == UTF-32 Auto codec ============================================================= -// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic. -// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32 -// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'}); - -// Encoder prepends BOM (which can be overridden with (addBOM: false}). - -exports.utf32 = Utf32AutoCodec -exports.ucs4 = "utf32" - -function Utf32AutoCodec (options, iconv) { - this.iconv = iconv -} - -Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder -Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder - -// -- Encoding - -function Utf32AutoEncoder (options, codec) { - options = options || {} - - if (options.addBOM === undefined) { - options.addBOM = true - } - - this.encoder = codec.iconv.getEncoder(options.defaultEncoding || "utf-32le", options) -} - -Utf32AutoEncoder.prototype.write = function (str) { - return this.encoder.write(str) -} - -Utf32AutoEncoder.prototype.end = function () { - return this.encoder.end() -} - -// -- Decoding - -function Utf32AutoDecoder (options, codec) { - this.decoder = null - this.initialBufs = [] - this.initialBufsLen = 0 - this.options = options || {} - this.iconv = codec.iconv -} - -Utf32AutoDecoder.prototype.write = function (buf) { - if (!this.decoder) { - // Codec is not chosen yet. Accumulate initial bytes. - this.initialBufs.push(buf) - this.initialBufsLen += buf.length - - if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below) - { return "" } - - // We have enough bytes -> detect endianness. - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding) - this.decoder = this.iconv.getDecoder(encoding, this.options) - - var resStr = "" - for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) } - - this.initialBufs.length = this.initialBufsLen = 0 - return resStr - } - - return this.decoder.write(buf) -} - -Utf32AutoDecoder.prototype.end = function () { - if (!this.decoder) { - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding) - this.decoder = this.iconv.getDecoder(encoding, this.options) - - var resStr = "" - for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) } - - var trail = this.decoder.end() - if (trail) { resStr += trail } - - this.initialBufs.length = this.initialBufsLen = 0 - return resStr - } - - return this.decoder.end() -} - -function detectEncoding (bufs, defaultEncoding) { - var b = [] - var charsProcessed = 0 - var invalidLE = 0; var invalidBE = 0 // Number of invalid chars when decoded as LE or BE. - var bmpCharsLE = 0; var bmpCharsBE = 0 // Number of BMP chars when decoded as LE or BE. - - outerLoop: - for (var i = 0; i < bufs.length; i++) { - var buf = bufs[i] - for (var j = 0; j < buf.length; j++) { - b.push(buf[j]) - if (b.length === 4) { - if (charsProcessed === 0) { - // Check BOM first. - if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) { - return "utf-32le" - } - if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) { - return "utf-32be" - } - } - - if (b[0] !== 0 || b[1] > 0x10) invalidBE++ - if (b[3] !== 0 || b[2] > 0x10) invalidLE++ - - if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++ - if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++ - - b.length = 0 - charsProcessed++ - - if (charsProcessed >= 100) { - break outerLoop - } - } - } - } - - // Make decisions. - if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return "utf-32be" - if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return "utf-32le" - - // Couldn't decide (likely all zeros or not enough data). - return defaultEncoding || "utf-32le" -} diff --git a/sdks/nodejs/node_modules/iconv-lite/encodings/utf7.js b/sdks/nodejs/node_modules/iconv-lite/encodings/utf7.js deleted file mode 100644 index fe72a9d..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/encodings/utf7.js +++ /dev/null @@ -1,283 +0,0 @@ -"use strict" -var Buffer = require("safer-buffer").Buffer - -// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 -// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 - -exports.utf7 = Utf7Codec -exports.unicode11utf7 = "utf7" // Alias UNICODE-1-1-UTF-7 -function Utf7Codec (codecOptions, iconv) { - this.iconv = iconv -}; - -Utf7Codec.prototype.encoder = Utf7Encoder -Utf7Codec.prototype.decoder = Utf7Decoder -Utf7Codec.prototype.bomAware = true - -// -- Encoding - -// Why scape ()?./? -// eslint-disable-next-line no-useless-escape -var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g - -function Utf7Encoder (options, codec) { - this.iconv = codec.iconv -} - -Utf7Encoder.prototype.write = function (str) { - // Naive implementation. - // Non-direct chars are encoded as "+-"; single "+" char is encoded as "+-". - return Buffer.from(str.replace(nonDirectChars, function (chunk) { - return "+" + (chunk === "+" - ? "" - : this.iconv.encode(chunk, "utf16-be").toString("base64").replace(/=+$/, "")) + - "-" - }.bind(this))) -} - -Utf7Encoder.prototype.end = function () { -} - -// -- Decoding - -function Utf7Decoder (options, codec) { - this.iconv = codec.iconv - this.inBase64 = false - this.base64Accum = "" -} - -// Why scape /? -// eslint-disable-next-line no-useless-escape -var base64Regex = /[A-Za-z0-9\/+]/ -var base64Chars = [] -for (var i = 0; i < 256; i++) { base64Chars[i] = base64Regex.test(String.fromCharCode(i)) } - -var plusChar = "+".charCodeAt(0) -var minusChar = "-".charCodeAt(0) -var andChar = "&".charCodeAt(0) - -Utf7Decoder.prototype.write = function (buf) { - var res = ""; var lastI = 0 - var inBase64 = this.inBase64 - var base64Accum = this.base64Accum - - // The decoder is more involved as we must handle chunks in stream. - - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '+' - if (buf[i] == plusChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii") // Write direct chars. - lastI = i + 1 - inBase64 = true - } - } else { // We decode base64. - if (!base64Chars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) { // "+-" -> "+" - res += "+" - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii") - res += this.iconv.decode(Buffer.from(b64str, "base64"), "utf16-be") - } - - if (buf[i] != minusChar) // Minus is absorbed after base64. - { i-- } - - lastI = i + 1 - inBase64 = false - base64Accum = "" - } - } - } - - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii") // Write direct chars. - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii") - - var canBeDecoded = b64str.length - (b64str.length % 8) // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded) // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded) - - res += this.iconv.decode(Buffer.from(b64str, "base64"), "utf16-be") - } - - this.inBase64 = inBase64 - this.base64Accum = base64Accum - - return res -} - -Utf7Decoder.prototype.end = function () { - var res = "" - if (this.inBase64 && this.base64Accum.length > 0) { res = this.iconv.decode(Buffer.from(this.base64Accum, "base64"), "utf16-be") } - - this.inBase64 = false - this.base64Accum = "" - return res -} - -// UTF-7-IMAP codec. -// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3) -// Differences: -// * Base64 part is started by "&" instead of "+" -// * Direct characters are 0x20-0x7E, except "&" (0x26) -// * In Base64, "," is used instead of "/" -// * Base64 must not be used to represent direct characters. -// * No implicit shift back from Base64 (should always end with '-') -// * String must end in non-shifted position. -// * "-&" while in base64 is not allowed. - -exports.utf7imap = Utf7IMAPCodec -function Utf7IMAPCodec (codecOptions, iconv) { - this.iconv = iconv -}; - -Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder -Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder -Utf7IMAPCodec.prototype.bomAware = true - -// -- Encoding - -function Utf7IMAPEncoder (options, codec) { - this.iconv = codec.iconv - this.inBase64 = false - this.base64Accum = Buffer.alloc(6) - this.base64AccumIdx = 0 -} - -Utf7IMAPEncoder.prototype.write = function (str) { - var inBase64 = this.inBase64 - var base64Accum = this.base64Accum - var base64AccumIdx = this.base64AccumIdx - var buf = Buffer.alloc(str.length * 5 + 10); var bufIdx = 0 - - for (var i = 0; i < str.length; i++) { - var uChar = str.charCodeAt(i) - if (uChar >= 0x20 && uChar <= 0x7E) { // Direct character or '&'. - if (inBase64) { - if (base64AccumIdx > 0) { - bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx) - base64AccumIdx = 0 - } - - buf[bufIdx++] = minusChar // Write '-', then go to direct mode. - inBase64 = false - } - - if (!inBase64) { - buf[bufIdx++] = uChar // Write direct character - - if (uChar === andChar) // Ampersand -> '&-' - { buf[bufIdx++] = minusChar } - } - } else { // Non-direct character - if (!inBase64) { - buf[bufIdx++] = andChar // Write '&', then go to base64 mode. - inBase64 = true - } - if (inBase64) { - base64Accum[base64AccumIdx++] = uChar >> 8 - base64Accum[base64AccumIdx++] = uChar & 0xFF - - if (base64AccumIdx == base64Accum.length) { - bufIdx += buf.write(base64Accum.toString("base64").replace(/\//g, ","), bufIdx) - base64AccumIdx = 0 - } - } - } - } - - this.inBase64 = inBase64 - this.base64AccumIdx = base64AccumIdx - - return buf.slice(0, bufIdx) -} - -Utf7IMAPEncoder.prototype.end = function () { - var buf = Buffer.alloc(10); var bufIdx = 0 - if (this.inBase64) { - if (this.base64AccumIdx > 0) { - bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx) - this.base64AccumIdx = 0 - } - - buf[bufIdx++] = minusChar // Write '-', then go to direct mode. - this.inBase64 = false - } - - return buf.slice(0, bufIdx) -} - -// -- Decoding - -function Utf7IMAPDecoder (options, codec) { - this.iconv = codec.iconv - this.inBase64 = false - this.base64Accum = "" -} - -var base64IMAPChars = base64Chars.slice() -base64IMAPChars[",".charCodeAt(0)] = true - -Utf7IMAPDecoder.prototype.write = function (buf) { - var res = ""; var lastI = 0 - var inBase64 = this.inBase64 - var base64Accum = this.base64Accum - - // The decoder is more involved as we must handle chunks in stream. - // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end). - - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '&' - if (buf[i] == andChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii") // Write direct chars. - lastI = i + 1 - inBase64 = true - } - } else { // We decode base64. - if (!base64IMAPChars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) { // "&-" -> "&" - res += "&" - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii").replace(/,/g, "/") - res += this.iconv.decode(Buffer.from(b64str, "base64"), "utf16-be") - } - - if (buf[i] != minusChar) // Minus may be absorbed after base64. - { i-- } - - lastI = i + 1 - inBase64 = false - base64Accum = "" - } - } - } - - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii") // Write direct chars. - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, "/") - - var canBeDecoded = b64str.length - (b64str.length % 8) // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded) // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded) - - res += this.iconv.decode(Buffer.from(b64str, "base64"), "utf16-be") - } - - this.inBase64 = inBase64 - this.base64Accum = base64Accum - - return res -} - -Utf7IMAPDecoder.prototype.end = function () { - var res = "" - if (this.inBase64 && this.base64Accum.length > 0) { res = this.iconv.decode(Buffer.from(this.base64Accum, "base64"), "utf16-be") } - - this.inBase64 = false - this.base64Accum = "" - return res -} diff --git a/sdks/nodejs/node_modules/iconv-lite/lib/bom-handling.js b/sdks/nodejs/node_modules/iconv-lite/lib/bom-handling.js deleted file mode 100644 index a86a6b5..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/lib/bom-handling.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict" - -var BOMChar = "\uFEFF" - -exports.PrependBOM = PrependBOMWrapper -function PrependBOMWrapper (encoder, options) { - this.encoder = encoder - this.addBOM = true -} - -PrependBOMWrapper.prototype.write = function (str) { - if (this.addBOM) { - str = BOMChar + str - this.addBOM = false - } - - return this.encoder.write(str) -} - -PrependBOMWrapper.prototype.end = function () { - return this.encoder.end() -} - -// ------------------------------------------------------------------------------ - -exports.StripBOM = StripBOMWrapper -function StripBOMWrapper (decoder, options) { - this.decoder = decoder - this.pass = false - this.options = options || {} -} - -StripBOMWrapper.prototype.write = function (buf) { - var res = this.decoder.write(buf) - if (this.pass || !res) { return res } - - if (res[0] === BOMChar) { - res = res.slice(1) - if (typeof this.options.stripBOM === "function") { this.options.stripBOM() } - } - - this.pass = true - return res -} - -StripBOMWrapper.prototype.end = function () { - return this.decoder.end() -} diff --git a/sdks/nodejs/node_modules/iconv-lite/lib/helpers/merge-exports.js b/sdks/nodejs/node_modules/iconv-lite/lib/helpers/merge-exports.js deleted file mode 100644 index e79e041..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/lib/helpers/merge-exports.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict" - -var hasOwn = typeof Object.hasOwn === "undefined" ? Function.call.bind(Object.prototype.hasOwnProperty) : Object.hasOwn - -function mergeModules (target, module) { - for (var key in module) { - if (hasOwn(module, key)) { - target[key] = module[key] - } - } -} - -module.exports = mergeModules diff --git a/sdks/nodejs/node_modules/iconv-lite/lib/index.d.ts b/sdks/nodejs/node_modules/iconv-lite/lib/index.d.ts deleted file mode 100644 index b11d99e..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/lib/index.d.ts +++ /dev/null @@ -1,129 +0,0 @@ -/* --------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - * REQUIREMENT: This definition is dependent on the @types/node definition. - * Install with `npm install @types/node --save-dev` - *-------------------------------------------------------------------------------------------- */ - -/* --------------------------------------------------------------------------------------------- - * This file provides detailed typings for the public API of iconv-lite - *-------------------------------------------------------------------------------------------- */ - -import type Stream = require("stream") -import type { Encoding } from "../types/encodings" - -declare namespace iconv { - export interface DecodeOptions { - /** - * Strip the Byte Order Mark (BOM) from the input, - * when decoding, if the codec is BOM-aware. @default true - */ - stripBOM?: boolean; - /** Override the default endianness for `UTF-16` and `UTF-32` decodings. */ - defaultEncoding?: "utf16be" | "utf32be"; - } - - export interface EncodeOptions { - /** - * Add a Byte Order Mark (BOM) to the output, when encoding, - * if the codec is BOM-aware. @default false - */ - addBOM?: boolean; - /** Override the default endianness for `UTF-32` encoding. */ - defaultEncoding?: "utf32be"; - } - - export interface EncoderStream { - write(str: string): Buffer; - end(): Buffer | undefined; - } - - export interface DecoderStream { - write(buf: Buffer): string; - end(): string | undefined; - } - - export interface Codec { - encoder: new (options?: EncodeOptions, codec?: Codec) => EncoderStream; - decoder: new (options?: DecodeOptions, codec?: Codec) => DecoderStream; - bomAware?: boolean; - [key: string]: any; - } - - /** Encodes a `string` into a `Buffer`, using the provided `encoding`. */ - export function encode (content: string, encoding: Encoding, options?: EncodeOptions): Buffer - - /** Decodes a `Buffer` into a `string`, using the provided `encoding`. */ - export function decode (buffer: Buffer | Uint8Array, encoding: Encoding, options?: DecodeOptions): string - - /** Checks if a given encoding is supported by `iconv-lite`. */ - export function encodingExists (encoding: string): encoding is Encoding - - /** Legacy alias for {@link iconv.encode}. */ - export const toEncoding: typeof iconv.encode - - /** Legacy alias for {@link iconv.decode}. */ - export const fromEncoding: typeof iconv.decode - - /** Creates a stream that decodes binary data from a given `encoding` into strings. */ - export function decodeStream (encoding: Encoding, options?: DecodeOptions): NodeJS.ReadWriteStream - - /** Creates a stream that encodes strings into binary data in a given `encoding`. */ - export function encodeStream (encoding: Encoding, options?: EncodeOptions): NodeJS.ReadWriteStream - - /** - * Explicitly enable Streaming API in browser environments by passing in: - * ```js - * require('stream') - * ``` - * @example iconv.enableStreamingAPI(require('stream')); - */ - export function enableStreamingAPI (stream_module: { Transform: typeof Stream.Transform }): void - - /** Creates and returns a low-level encoder stream. */ - export function getEncoder (encoding: Encoding, options?: EncodeOptions): EncoderStream - - /** Creates and returns a low-level decoder stream. */ - export function getDecoder (encoding: Encoding, options?: DecodeOptions): DecoderStream - - /** - * Returns a codec object for the given `encoding`. - * @throws If the `encoding` is not recognized. - */ - export function getCodec (encoding: Encoding): Codec - - /** Strips all non-alphanumeric characters and appended year from `encoding`. */ - export function _canonicalizeEncoding (encoding: Encoding): string - - /** A cache of all loaded encoding definitions. */ - export let encodings: Record< - Encoding, - | string - | { - type: string; - [key: string]: any; - } - > | null - - /** A cache of initialized codec objects. */ - export let _codecDataCache: Record - - /** The character used for untranslatable `Unicode` characters. @default "�" */ - export let defaultCharUnicode: string - - /** The character used for untranslatable `single-byte` characters. @default "?" */ - export let defaultCharSingleByte: string - - /** - * Skip deprecation warning when strings are used instead of Buffers during decoding. - * Note: {@link iconv.decode} converts the string to Buffer regardless. - */ - export let skipDecodeWarning: boolean - - /** @readonly Whether or not, Streaming API is enabled. */ - export const supportsStreams: boolean - - export type { iconv as Iconv, Encoding } -} - -export = iconv diff --git a/sdks/nodejs/node_modules/iconv-lite/lib/index.js b/sdks/nodejs/node_modules/iconv-lite/lib/index.js deleted file mode 100644 index bd5d6bc..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/lib/index.js +++ /dev/null @@ -1,182 +0,0 @@ -"use strict" - -var Buffer = require("safer-buffer").Buffer - -var bomHandling = require("./bom-handling") -var mergeModules = require("./helpers/merge-exports") - -// All codecs and aliases are kept here, keyed by encoding name/alias. -// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`. -// Cannot initialize with { __proto__: null } because Boolean({ __proto__: null }) === true -module.exports.encodings = null - -// Characters emitted in case of error. -module.exports.defaultCharUnicode = "�" -module.exports.defaultCharSingleByte = "?" - -// Public API. -module.exports.encode = function encode (str, encoding, options) { - str = "" + (str || "") // Ensure string. - - var encoder = module.exports.getEncoder(encoding, options) - - var res = encoder.write(str) - var trail = encoder.end() - - return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res -} - -module.exports.decode = function decode (buf, encoding, options) { - if (typeof buf === "string") { - if (!module.exports.skipDecodeWarning) { - console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding") - module.exports.skipDecodeWarning = true - } - - buf = Buffer.from("" + (buf || ""), "binary") // Ensure buffer. - } - - var decoder = module.exports.getDecoder(encoding, options) - - var res = decoder.write(buf) - var trail = decoder.end() - - return trail ? (res + trail) : res -} - -module.exports.encodingExists = function encodingExists (enc) { - try { - module.exports.getCodec(enc) - return true - } catch (e) { - return false - } -} - -// Legacy aliases to convert functions -module.exports.toEncoding = module.exports.encode -module.exports.fromEncoding = module.exports.decode - -// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache. -module.exports._codecDataCache = { __proto__: null } - -module.exports.getCodec = function getCodec (encoding) { - if (!module.exports.encodings) { - var raw = require("../encodings") - // TODO: In future versions when old nodejs support is removed can use object.assign - module.exports.encodings = { __proto__: null } // Initialize as empty object. - mergeModules(module.exports.encodings, raw) - } - - // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. - var enc = module.exports._canonicalizeEncoding(encoding) - - // Traverse iconv.encodings to find actual codec. - var codecOptions = {} - while (true) { - var codec = module.exports._codecDataCache[enc] - - if (codec) { return codec } - - var codecDef = module.exports.encodings[enc] - - switch (typeof codecDef) { - case "string": // Direct alias to other encoding. - enc = codecDef - break - - case "object": // Alias with options. Can be layered. - for (var key in codecDef) { codecOptions[key] = codecDef[key] } - - if (!codecOptions.encodingName) { codecOptions.encodingName = enc } - - enc = codecDef.type - break - - case "function": // Codec itself. - if (!codecOptions.encodingName) { codecOptions.encodingName = enc } - - // The codec function must load all tables and return object with .encoder and .decoder methods. - // It'll be called only once (for each different options object). - // - codec = new codecDef(codecOptions, module.exports) - - module.exports._codecDataCache[codecOptions.encodingName] = codec // Save it to be reused later. - return codec - - default: - throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '" + enc + "')") - } - } -} - -module.exports._canonicalizeEncoding = function (encoding) { - // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. - return ("" + encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, "") -} - -module.exports.getEncoder = function getEncoder (encoding, options) { - var codec = module.exports.getCodec(encoding) - var encoder = new codec.encoder(options, codec) - - if (codec.bomAware && options && options.addBOM) { encoder = new bomHandling.PrependBOM(encoder, options) } - - return encoder -} - -module.exports.getDecoder = function getDecoder (encoding, options) { - var codec = module.exports.getCodec(encoding) - var decoder = new codec.decoder(options, codec) - - if (codec.bomAware && !(options && options.stripBOM === false)) { decoder = new bomHandling.StripBOM(decoder, options) } - - return decoder -} - -// Streaming API -// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add -// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default. -// If you would like to enable it explicitly, please add the following code to your app: -// > iconv.enableStreamingAPI(require('stream')); -module.exports.enableStreamingAPI = function enableStreamingAPI (streamModule) { - if (module.exports.supportsStreams) { return } - - // Dependency-inject stream module to create IconvLite stream classes. - var streams = require("./streams")(streamModule) - - // Not public API yet, but expose the stream classes. - module.exports.IconvLiteEncoderStream = streams.IconvLiteEncoderStream - module.exports.IconvLiteDecoderStream = streams.IconvLiteDecoderStream - - // Streaming API. - module.exports.encodeStream = function encodeStream (encoding, options) { - return new module.exports.IconvLiteEncoderStream(module.exports.getEncoder(encoding, options), options) - } - - module.exports.decodeStream = function decodeStream (encoding, options) { - return new module.exports.IconvLiteDecoderStream(module.exports.getDecoder(encoding, options), options) - } - - module.exports.supportsStreams = true -} - -// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments). -var streamModule -try { - streamModule = require("stream") -} catch (e) {} - -if (streamModule && streamModule.Transform) { - module.exports.enableStreamingAPI(streamModule) -} else { - // In rare cases where 'stream' module is not available by default, throw a helpful exception. - module.exports.encodeStream = module.exports.decodeStream = function () { - throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.") - } -} - -// Some environments, such as browsers, may not load JavaScript files as UTF-8 -// eslint-disable-next-line no-constant-condition -if ("Ā" !== "\u0100") { - console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.") -} diff --git a/sdks/nodejs/node_modules/iconv-lite/lib/streams.js b/sdks/nodejs/node_modules/iconv-lite/lib/streams.js deleted file mode 100644 index ebfed8e..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/lib/streams.js +++ /dev/null @@ -1,105 +0,0 @@ -"use strict" - -var Buffer = require("safer-buffer").Buffer - -// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), -// we opt to dependency-inject it instead of creating a hard dependency. -module.exports = function (streamModule) { - var Transform = streamModule.Transform - - // == Encoder stream ======================================================= - - function IconvLiteEncoderStream (conv, options) { - this.conv = conv - options = options || {} - options.decodeStrings = false // We accept only strings, so we don't need to decode them. - Transform.call(this, options) - } - - IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteEncoderStream } - }) - - IconvLiteEncoderStream.prototype._transform = function (chunk, encoding, done) { - if (typeof chunk !== "string") { - return done(new Error("Iconv encoding stream needs strings as its input.")) - } - - try { - var res = this.conv.write(chunk) - if (res && res.length) this.push(res) - done() - } catch (e) { - done(e) - } - } - - IconvLiteEncoderStream.prototype._flush = function (done) { - try { - var res = this.conv.end() - if (res && res.length) this.push(res) - done() - } catch (e) { - done(e) - } - } - - IconvLiteEncoderStream.prototype.collect = function (cb) { - var chunks = [] - this.on("error", cb) - this.on("data", function (chunk) { chunks.push(chunk) }) - this.on("end", function () { - cb(null, Buffer.concat(chunks)) - }) - return this - } - - // == Decoder stream ======================================================= - - function IconvLiteDecoderStream (conv, options) { - this.conv = conv - options = options || {} - options.encoding = this.encoding = "utf8" // We output strings. - Transform.call(this, options) - } - - IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteDecoderStream } - }) - - IconvLiteDecoderStream.prototype._transform = function (chunk, encoding, done) { - if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array)) { return done(new Error("Iconv decoding stream needs buffers as its input.")) } - try { - var res = this.conv.write(chunk) - if (res && res.length) this.push(res, this.encoding) - done() - } catch (e) { - done(e) - } - } - - IconvLiteDecoderStream.prototype._flush = function (done) { - try { - var res = this.conv.end() - if (res && res.length) this.push(res, this.encoding) - done() - } catch (e) { - done(e) - } - } - - IconvLiteDecoderStream.prototype.collect = function (cb) { - var res = "" - this.on("error", cb) - this.on("data", function (chunk) { res += chunk }) - this.on("end", function () { - cb(null, res) - }) - return this - } - - return { - IconvLiteEncoderStream: IconvLiteEncoderStream, - IconvLiteDecoderStream: IconvLiteDecoderStream - } -} diff --git a/sdks/nodejs/node_modules/iconv-lite/package.json b/sdks/nodejs/node_modules/iconv-lite/package.json deleted file mode 100644 index 2a57357..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "iconv-lite", - "description": "Convert character encodings in pure javascript.", - "version": "0.7.2", - "license": "MIT", - "keywords": [ - "iconv", - "convert", - "charset", - "icu" - ], - "author": "Alexander Shtuchkin ", - "main": "./lib/index.js", - "typings": "./lib/index.d.ts", - "homepage": "https://github.com/pillarjs/iconv-lite", - "bugs": "https://github.com/pillarjs/iconv-lite/issues", - "files": [ - "lib/", - "encodings/", - "types/" - ], - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - }, - "repository": { - "type": "git", - "url": "https://github.com/pillarjs/iconv-lite.git" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "lint": "eslint", - "lint:fix": "eslint --fix", - "test": "mocha --reporter spec --check-leaks --grep .", - "test:ci": "nyc --exclude test --reporter=lcovonly --reporter=text npm test", - "test:cov": "nyc --exclude test --reporter=html --reporter=text npm test", - "test:performance": "node --allow-natives-syntax performance/index.js", - "test:tap": "mocha --reporter tap --check-leaks --grep .", - "test:typescript": "tsc && attw --pack", - "test:webpack": "npm pack && mv iconv-lite-*.tgz test/webpack/iconv-lite.tgz && cd test/webpack && npm install && npm run test && rm iconv-lite.tgz", - "typegen": "node generation/gen-typings.js" - }, - "browser": { - "stream": false - }, - "devDependencies": { - "@arethetypeswrong/cli": "^0.17.4", - "@stylistic/eslint-plugin": "^5.1.0", - "@stylistic/eslint-plugin-js": "^4.1.0", - "@types/node": "^24.0.12", - "async": "^3.2.0", - "bench-node": "^0.10.0", - "eslint": "^9.0.0", - "errto": "^0.2.1", - "expect-type": "^1.2.0", - "iconv": "^2.3.5", - "mocha": "^6.2.2", - "neostandard": "^0.12.0", - "nyc": "^14.1.1", - "request": "^2.88.2", - "semver": "^6.3.0", - "typescript": "~5.9.2", - "unorm": "^1.6.0" - }, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } -} diff --git a/sdks/nodejs/node_modules/iconv-lite/types/encodings.d.ts b/sdks/nodejs/node_modules/iconv-lite/types/encodings.d.ts deleted file mode 100644 index bedbe33..0000000 --- a/sdks/nodejs/node_modules/iconv-lite/types/encodings.d.ts +++ /dev/null @@ -1,423 +0,0 @@ -/* - * --------------------------------------------------------------------------------------------- - * DO NOT EDIT THIS FILE MANUALLY. - * THIS FILE IS AUTOMATICALLY GENERATED. - * TO UPDATE, RUN `npm run typegen` AND COMMIT THE CHANGES. - * --------------------------------------------------------------------------------------------- - */ - -/** A union of all supported encoding strings in `iconv-lite`. */ -export type Encoding = - | "10000" - | "10006" - | "10007" - | "10029" - | "10079" - | "10081" - | "1046" - | "1124" - | "1125" - | "1129" - | "1133" - | "1161" - | "1162" - | "1163" - | "1250" - | "1251" - | "1252" - | "1253" - | "1254" - | "1255" - | "1256" - | "1257" - | "1258" - | "20866" - | "21866" - | "28591" - | "28592" - | "28593" - | "28594" - | "28595" - | "28596" - | "28597" - | "28598" - | "28599" - | "28600" - | "28601" - | "28603" - | "28604" - | "28605" - | "28606" - | "437" - | "737" - | "775" - | "808" - | "850" - | "852" - | "855" - | "856" - | "857" - | "858" - | "860" - | "861" - | "862" - | "863" - | "864" - | "865" - | "866" - | "869" - | "874" - | "922" - | "932" - | "936" - | "949" - | "950" - | "ansix34" - | "ansix341968" - | "ansix341986" - | "arabic" - | "arabic8" - | "armscii8" - | "ascii" - | "ascii8bit" - | "asmo708" - | "base64" - | "big5" - | "big5hkscs" - | "binary" - | "celtic" - | "celtic8" - | "cesu8" - | "chinese" - | "cn" - | "cnbig5" - | "cp1046" - | "cp1124" - | "cp1125" - | "cp1129" - | "cp1133" - | "cp1161" - | "cp1162" - | "cp1163" - | "cp1250" - | "cp1251" - | "cp1252" - | "cp1253" - | "cp1254" - | "cp1255" - | "cp1256" - | "cp1257" - | "cp1258" - | "cp20866" - | "cp21866" - | "cp28591" - | "cp28592" - | "cp28593" - | "cp28594" - | "cp28595" - | "cp28596" - | "cp28597" - | "cp28598" - | "cp28599" - | "cp28600" - | "cp28601" - | "cp28603" - | "cp28604" - | "cp28605" - | "cp28606" - | "cp367" - | "cp437" - | "cp720" - | "cp737" - | "cp775" - | "cp808" - | "cp819" - | "cp850" - | "cp852" - | "cp855" - | "cp856" - | "cp857" - | "cp858" - | "cp860" - | "cp861" - | "cp862" - | "cp863" - | "cp864" - | "cp865" - | "cp866" - | "cp869" - | "cp874" - | "cp922" - | "cp932" - | "cp936" - | "cp949" - | "cp950" - | "cpgr" - | "csascii" - | "csbig5" - | "cseuckr" - | "csgb2312" - | "cshproman8" - | "csibm1046" - | "csibm1124" - | "csibm1125" - | "csibm1129" - | "csibm1133" - | "csibm1161" - | "csibm1162" - | "csibm1163" - | "csibm437" - | "csibm737" - | "csibm775" - | "csibm850" - | "csibm852" - | "csibm855" - | "csibm856" - | "csibm857" - | "csibm858" - | "csibm860" - | "csibm861" - | "csibm862" - | "csibm863" - | "csibm864" - | "csibm865" - | "csibm866" - | "csibm869" - | "csibm922" - | "csiso14jisc6220ro" - | "csiso58gb231280" - | "csisolatin1" - | "csisolatin2" - | "csisolatin3" - | "csisolatin4" - | "csisolatin5" - | "csisolatin6" - | "csisolatinarabic" - | "csisolatincyrillic" - | "csisolatingreek" - | "csisolatinhebrew" - | "cskoi8r" - | "csksc56011987" - | "csmacintosh" - | "cspc775baltic" - | "cspc850multilingual" - | "cspc862latinhebrew" - | "cspc8codepage437" - | "cspcp852" - | "csshiftjis" - | "cyrillic" - | "ecma114" - | "ecma118" - | "elot928" - | "euccn" - | "eucjp" - | "euckr" - | "gb18030" - | "gb198880" - | "gb2312" - | "gb23121980" - | "gb231280" - | "gbk" - | "georgianacademy" - | "georgianps" - | "greek" - | "greek8" - | "hebrew" - | "hebrew8" - | "hex" - | "hproman8" - | "ibm1046" - | "ibm1051" - | "ibm1124" - | "ibm1125" - | "ibm1129" - | "ibm1133" - | "ibm1161" - | "ibm1162" - | "ibm1163" - | "ibm1168" - | "ibm367" - | "ibm437" - | "ibm737" - | "ibm775" - | "ibm808" - | "ibm819" - | "ibm850" - | "ibm852" - | "ibm855" - | "ibm856" - | "ibm857" - | "ibm858" - | "ibm860" - | "ibm861" - | "ibm862" - | "ibm863" - | "ibm864" - | "ibm865" - | "ibm866" - | "ibm869" - | "ibm878" - | "ibm922" - | "iso646cn" - | "iso646irv" - | "iso646jp" - | "iso646us" - | "iso88591" - | "iso885910" - | "iso885911" - | "iso885913" - | "iso885914" - | "iso885915" - | "iso885916" - | "iso88592" - | "iso88593" - | "iso88594" - | "iso88595" - | "iso88596" - | "iso88597" - | "iso88598" - | "iso88599" - | "isoceltic" - | "isoir100" - | "isoir101" - | "isoir109" - | "isoir110" - | "isoir126" - | "isoir127" - | "isoir138" - | "isoir14" - | "isoir144" - | "isoir148" - | "isoir149" - | "isoir157" - | "isoir166" - | "isoir179" - | "isoir199" - | "isoir203" - | "isoir226" - | "isoir57" - | "isoir58" - | "isoir6" - | "jisc62201969ro" - | "jp" - | "koi8r" - | "koi8ru" - | "koi8t" - | "koi8u" - | "korean" - | "ksc5601" - | "ksc56011987" - | "ksc56011989" - | "l1" - | "l10" - | "l2" - | "l3" - | "l4" - | "l5" - | "l6" - | "l7" - | "l8" - | "l9" - | "latin1" - | "latin10" - | "latin2" - | "latin3" - | "latin4" - | "latin5" - | "latin6" - | "latin7" - | "latin8" - | "latin9" - | "mac" - | "maccenteuro" - | "maccroatian" - | "maccyrillic" - | "macgreek" - | "maciceland" - | "macintosh" - | "macroman" - | "macromania" - | "macthai" - | "macturkish" - | "macukraine" - | "mik" - | "ms31j" - | "ms932" - | "ms936" - | "ms949" - | "ms950" - | "msansi" - | "msarab" - | "mscyrl" - | "msee" - | "msgreek" - | "mshebr" - | "mskanji" - | "msturk" - | "pt154" - | "r8" - | "rk1048" - | "roman8" - | "shiftjis" - | "sjis" - | "strk10482002" - | "tcvn" - | "tcvn5712" - | "tcvn57121" - | "thai" - | "thai8" - | "tis620" - | "tis6200" - | "tis62025291" - | "tis62025330" - | "turkish" - | "turkish8" - | "ucs2" - | "ucs4" - | "ucs4be" - | "ucs4le" - | "unicode11utf7" - | "unicode11utf8" - | "us" - | "usascii" - | "utf16" - | "utf16be" - | "utf16le" - | "utf32" - | "utf32be" - | "utf32le" - | "utf7" - | "utf7imap" - | "utf8" - | "viscii" - | "win1250" - | "win1251" - | "win1252" - | "win1253" - | "win1254" - | "win1255" - | "win1256" - | "win1257" - | "win1258" - | "win874" - | "winbaltrim" - | "windows1250" - | "windows1251" - | "windows1252" - | "windows1253" - | "windows1254" - | "windows1255" - | "windows1256" - | "windows1257" - | "windows1258" - | "windows31j" - | "windows874" - | "windows932" - | "windows936" - | "windows949" - | "windows950" - | "xgbk" - | "xroman8" - | "xsjis" - | "xxbig5" - | (string & {}) diff --git a/sdks/nodejs/node_modules/js-yaml/LICENSE b/sdks/nodejs/node_modules/js-yaml/LICENSE deleted file mode 100644 index 09d3a29..0000000 --- a/sdks/nodejs/node_modules/js-yaml/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -(The MIT License) - -Copyright (C) 2011-2015 by Vitaly Puzrin - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/js-yaml/README.md b/sdks/nodejs/node_modules/js-yaml/README.md deleted file mode 100644 index 14eb8cc..0000000 --- a/sdks/nodejs/node_modules/js-yaml/README.md +++ /dev/null @@ -1,233 +0,0 @@ -JS-YAML - YAML 1.2 parser / writer for JavaScript -================================================= - -[![CI](https://github.com/nodeca/js-yaml/actions/workflows/ci.yml/badge.svg)](https://github.com/nodeca/js-yaml/actions/workflows/ci.yml) -[![NPM version](https://img.shields.io/npm/v/js-yaml.svg)](https://www.npmjs.org/package/js-yaml) - -__[Online Demo](https://nodeca.github.io/js-yaml/)__ - - -This is an implementation of [YAML](https://yaml.org/), a human-friendly data -serialization language. Started as [PyYAML](https://pyyaml.org/) port, it was -completely rewritten from scratch. Now it's very fast, and supports 1.2 spec. - - -Installation ------------- - -### YAML module for node.js - -``` -npm install js-yaml -``` - - -### CLI executable - -If you want to inspect your YAML files from CLI, install js-yaml globally: - -``` -npm install -g js-yaml -``` - -#### Usage - -``` -usage: js-yaml [-h] [-v] [-c] [-t] file - -Positional arguments: - file File with YAML document(s) - -Optional arguments: - -h, --help Show this help message and exit. - -v, --version Show program's version number and exit. - -c, --compact Display errors in compact mode - -t, --trace Show stack trace on error -``` - - -API ---- - -Here we cover the most 'useful' methods. If you need advanced details (creating -your own tags), see [examples](https://github.com/nodeca/js-yaml/tree/master/examples) -for more info. - -``` javascript -const yaml = require('js-yaml'); -const fs = require('fs'); - -// Get document, or throw exception on error -try { - const doc = yaml.load(fs.readFileSync('/home/ixti/example.yml', 'utf8')); - console.log(doc); -} catch (e) { - console.log(e); -} -``` - - -### load (string [ , options ]) - -Parses `string` as single YAML document. Returns either a -plain object, a string, a number, `null` or `undefined`, or throws `YAMLException` on error. By default, does -not support regexps, functions and undefined. - -options: - -- `filename` _(default: null)_ - string to be used as a file path in - error/warning messages. -- `onWarning` _(default: null)_ - function to call on warning messages. - Loader will call this function with an instance of `YAMLException` for each warning. -- `schema` _(default: `DEFAULT_SCHEMA`)_ - specifies a schema to use. - - `FAILSAFE_SCHEMA` - only strings, arrays and plain objects: - https://www.yaml.org/spec/1.2/spec.html#id2802346 - - `JSON_SCHEMA` - all JSON-supported types: - https://www.yaml.org/spec/1.2/spec.html#id2803231 - - `CORE_SCHEMA` - same as `JSON_SCHEMA`: - https://www.yaml.org/spec/1.2/spec.html#id2804923 - - `DEFAULT_SCHEMA` - all supported YAML types. -- `json` _(default: false)_ - compatibility with JSON.parse behaviour. If true, then duplicate keys in a mapping will override values rather than throwing an error. -- `maxDepth` _(default: 100)_ - limits nesting depth for collections (does not - take aliasees into account). -- `maxTotalMergeKeys` _(default: 10000)_ - limits the total number of keys - processed by merge (`<<`) across one `load()` / `loadAll()` call. Set to `-1` - to disable. - -NOTE: This function **does not** understand multi-document sources, it throws -exception on those. - -NOTE: JS-YAML **does not** support schema-specific tag resolution restrictions. -So, the JSON schema is not as strictly defined in the YAML specification. -It allows numbers in any notation, use `Null` and `NULL` as `null`, etc. -The core schema also has no such restrictions. It allows binary notation for integers. - - -### loadAll (string [, iterator] [, options ]) - -Same as `load()`, but understands multi-document sources. Applies -`iterator` to each document if specified, or returns array of documents. - -``` javascript -const yaml = require('js-yaml'); - -yaml.loadAll(data, function (doc) { - console.log(doc); -}); -``` - - -### dump (object [ , options ]) - -Serializes `object` as a YAML document. Uses `DEFAULT_SCHEMA`, so it will -throw an exception if you try to dump regexps or functions. However, you can -disable exceptions by setting the `skipInvalid` option to `true`. - -options: - -- `indent` _(default: 2)_ - indentation width to use (in spaces). -- `noArrayIndent` _(default: false)_ - when true, will not add an indentation level to array elements -- `skipInvalid` _(default: false)_ - do not throw on invalid types (like function - in the safe schema) and skip pairs and single values with such types. -- `flowLevel` _(default: -1)_ - specifies level of nesting, when to switch from - block to flow style for collections. -1 means block style everwhere -- `styles` - "tag" => "style" map. Each tag may have own set of styles. -- `schema` _(default: `DEFAULT_SCHEMA`)_ specifies a schema to use. -- `sortKeys` _(default: `false`)_ - if `true`, sort keys when dumping YAML. If a - function, use the function to sort the keys. -- `lineWidth` _(default: `80`)_ - set max line width. Set `-1` for unlimited width. -- `noRefs` _(default: `false`)_ - if `true`, don't convert duplicate objects into references -- `noCompatMode` _(default: `false`)_ - if `true` don't try to be compatible with older - yaml versions. Currently: don't quote "yes", "no" and so on, as required for YAML 1.1 -- `condenseFlow` _(default: `false`)_ - if `true` flow sequences will be condensed, omitting the space between `a, b`. Eg. `'[a,b]'`, and omitting the space between `key: value` and quoting the key. Eg. `'{"a":b}'` Can be useful when using yaml for pretty URL query params as spaces are %-encoded. -- `quotingType` _(`'` or `"`, default: `'`)_ - strings will be quoted using this quoting style. If you specify single quotes, double quotes will still be used for non-printable characters. -- `forceQuotes` _(default: `false`)_ - if `true`, all non-key strings will be quoted even if they normally don't need to. -- `replacer` - callback `function (key, value)` called recursively on each key/value in source object (see `replacer` docs for `JSON.stringify`). - -The following table show availlable styles (e.g. "canonical", -"binary"...) available for each tag (.e.g. !!null, !!int ...). Yaml -output is shown on the right side after `=>` (default setting) or `->`: - -``` none -!!null - "canonical" -> "~" - "lowercase" => "null" - "uppercase" -> "NULL" - "camelcase" -> "Null" - "empty" -> "" - -!!int - "binary" -> "0b1", "0b101010", "0b1110001111010" - "octal" -> "0o1", "0o52", "0o16172" - "decimal" => "1", "42", "7290" - "hexadecimal" -> "0x1", "0x2A", "0x1C7A" - -!!bool - "lowercase" => "true", "false" - "uppercase" -> "TRUE", "FALSE" - "camelcase" -> "True", "False" - -!!float - "lowercase" => ".nan", '.inf' - "uppercase" -> ".NAN", '.INF' - "camelcase" -> ".NaN", '.Inf' -``` - -Example: - -``` javascript -dump(object, { - 'styles': { - '!!null': 'canonical' // dump null as ~ - }, - 'sortKeys': true // sort object keys -}); -``` - -Supported YAML types --------------------- - -The list of standard YAML tags and corresponding JavaScript types. See also -[YAML tag discussion](https://pyyaml.org/wiki/YAMLTagDiscussion) and -[YAML types repository](https://yaml.org/type/). - -``` -!!null '' # null -!!bool 'yes' # bool -!!int '3...' # number -!!float '3.14...' # number -!!binary '...base64...' # buffer -!!timestamp 'YYYY-...' # date -!!omap [ ... ] # array of key-value pairs -!!pairs [ ... ] # array or array pairs -!!set { ... } # array of objects with given keys and null values -!!str '...' # string -!!seq [ ... ] # array -!!map { ... } # object -``` - -**JavaScript-specific tags** - -See [js-yaml-js-types](https://github.com/nodeca/js-yaml-js-types) for -extra types. - - -Caveats -------- - -Note, that you use arrays or objects as key in JS-YAML. JS does not allow objects -or arrays as keys, and stringifies (by calling `toString()` method) them at the -moment of adding them. - -``` yaml ---- -? [ foo, bar ] -: - baz -? { foo: bar } -: - baz - - baz -``` - -``` javascript -{ "foo,bar": ["baz"], "[object Object]": ["baz", "baz"] } -``` diff --git a/sdks/nodejs/node_modules/js-yaml/bin/js-yaml.js b/sdks/nodejs/node_modules/js-yaml/bin/js-yaml.js deleted file mode 100755 index abcd7e0..0000000 --- a/sdks/nodejs/node_modules/js-yaml/bin/js-yaml.js +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env node - -'use strict' - -const fs = require('fs') -const argparse = require('argparse') -const yaml = require('..') - -/// ///////////////////////////////////////////////////////////////////////////// - -const cli = new argparse.ArgumentParser({ - prog: 'js-yaml', - add_help: true -}) - -cli.add_argument('-v', '--version', { - action: 'version', - version: require('../package.json').version -}) - -cli.add_argument('-c', '--compact', { - help: 'Display errors in compact mode', - action: 'store_true' -}) - -// deprecated (not needed after we removed output colors) -// option suppressed, but not completely removed for compatibility -cli.add_argument('-j', '--to-json', { - help: argparse.SUPPRESS, - dest: 'json', - action: 'store_true' -}) - -cli.add_argument('-t', '--trace', { - help: 'Show stack trace on error', - action: 'store_true' -}) - -cli.add_argument('file', { - help: 'File to read, utf-8 encoded without BOM', - nargs: '?', - default: '-' -}) - -/// ///////////////////////////////////////////////////////////////////////////// - -const options = cli.parse_args() - -/// ///////////////////////////////////////////////////////////////////////////// - -function readFile (filename, encoding, callback) { - if (options.file === '-') { - // read from stdin - - const chunks = [] - - process.stdin.on('data', function (chunk) { - chunks.push(chunk) - }) - - process.stdin.on('end', function () { - return callback(null, Buffer.concat(chunks).toString(encoding)) - }) - } else { - fs.readFile(filename, encoding, callback) - } -} - -readFile(options.file, 'utf8', function (error, input) { - let output - let isYaml - - if (error) { - if (error.code === 'ENOENT') { - console.error('File not found: ' + options.file) - process.exit(2) - } - - console.error( - (options.trace && error.stack) || - error.message || - String(error)) - - process.exit(1) - } - - try { - output = JSON.parse(input) - isYaml = false - } catch (err) { - if (err instanceof SyntaxError) { - try { - output = [] - yaml.loadAll(input, function (doc) { output.push(doc) }, {}) - isYaml = true - - if (output.length === 0) output = null - else if (output.length === 1) output = output[0] - } catch (e) { - if (options.trace && err.stack) console.error(e.stack) - else console.error(e.toString(options.compact)) - - process.exit(1) - } - } else { - console.error( - (options.trace && err.stack) || - err.message || - String(err)) - - process.exit(1) - } - } - - if (isYaml) console.log(JSON.stringify(output, null, ' ')) - else console.log(yaml.dump(output)) -}) diff --git a/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.js b/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.js deleted file mode 100644 index fcd5aec..0000000 --- a/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.js +++ /dev/null @@ -1,3022 +0,0 @@ -(function(global, factory) { - typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define([ "exports" ], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, - factory(global.jsyaml = {})); -})(this, function(exports2) { - "use strict"; - function getDefaultExportFromCjs(x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x; - } - var jsYaml = {}; - var loader = {}; - var common = {}; - var hasRequiredCommon; - function requireCommon() { - if (hasRequiredCommon) return common; - hasRequiredCommon = 1; - function _typeof(o) { - "@babel/helpers - typeof"; - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { - return typeof o2; - } : function(o2) { - return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; - }, _typeof(o); - } - function isNothing(subject) { - return typeof subject === "undefined" || subject === null; - } - function isObject(subject) { - return _typeof(subject) === "object" && subject !== null; - } - function toArray(sequence) { - if (Array.isArray(sequence)) return sequence; else if (isNothing(sequence)) return []; - return [ sequence ]; - } - function extend(target, source) { - if (source) { - var sourceKeys = Object.keys(source); - for (var index = 0, length = sourceKeys.length; index < length; index += 1) { - var key = sourceKeys[index]; - target[key] = source[key]; - } - } - return target; - } - function repeat(string, count) { - var result = ""; - for (var cycle = 0; cycle < count; cycle += 1) { - result += string; - } - return result; - } - function isNegativeZero(number) { - return number === 0 && Number.NEGATIVE_INFINITY === 1 / number; - } - common.isNothing = isNothing; - common.isObject = isObject; - common.toArray = toArray; - common.repeat = repeat; - common.isNegativeZero = isNegativeZero; - common.extend = extend; - return common; - } - var exception; - var hasRequiredException; - function requireException() { - if (hasRequiredException) return exception; - hasRequiredException = 1; - function formatError(exception2, compact) { - var where = ""; - var message = exception2.reason || "(unknown reason)"; - if (!exception2.mark) return message; - if (exception2.mark.name) { - where += 'in "' + exception2.mark.name + '" '; - } - where += "(" + (exception2.mark.line + 1) + ":" + (exception2.mark.column + 1) + ")"; - if (!compact && exception2.mark.snippet) { - where += "\n\n" + exception2.mark.snippet; - } - return message + " " + where; - } - function YAMLException2(reason, mark) { - Error.call(this); - this.name = "YAMLException"; - this.reason = reason; - this.mark = mark; - this.message = formatError(this, false); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = (new Error).stack || ""; - } - } - YAMLException2.prototype = Object.create(Error.prototype); - YAMLException2.prototype.constructor = YAMLException2; - YAMLException2.prototype.toString = function toString(compact) { - return this.name + ": " + formatError(this, compact); - }; - exception = YAMLException2; - return exception; - } - var snippet; - var hasRequiredSnippet; - function requireSnippet() { - if (hasRequiredSnippet) return snippet; - hasRequiredSnippet = 1; - var common2 = requireCommon(); - function getLine(buffer, lineStart, lineEnd, position, maxLineLength) { - var head = ""; - var tail = ""; - var maxHalfLength = Math.floor(maxLineLength / 2) - 1; - if (position - lineStart > maxHalfLength) { - head = " ... "; - lineStart = position - maxHalfLength + head.length; - } - if (lineEnd - position > maxHalfLength) { - tail = " ..."; - lineEnd = position + maxHalfLength - tail.length; - } - return { - str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, "→") + tail, - pos: position - lineStart + head.length - }; - } - function padStart(string, max) { - return common2.repeat(" ", max - string.length) + string; - } - function makeSnippet(mark, options) { - options = Object.create(options || null); - if (!mark.buffer) return null; - if (!options.maxLength) options.maxLength = 79; - if (typeof options.indent !== "number") options.indent = 1; - if (typeof options.linesBefore !== "number") options.linesBefore = 3; - if (typeof options.linesAfter !== "number") options.linesAfter = 2; - var re = /\r?\n|\r|\0/g; - var lineStarts = [ 0 ]; - var lineEnds = []; - var match; - var foundLineNo = -1; - while (match = re.exec(mark.buffer)) { - lineEnds.push(match.index); - lineStarts.push(match.index + match[0].length); - if (mark.position <= match.index && foundLineNo < 0) { - foundLineNo = lineStarts.length - 2; - } - } - if (foundLineNo < 0) foundLineNo = lineStarts.length - 1; - var result = ""; - var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length; - var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3); - for (var i = 1; i <= options.linesBefore; i++) { - if (foundLineNo - i < 0) break; - var _line = getLine(mark.buffer, lineStarts[foundLineNo - i], lineEnds[foundLineNo - i], mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), maxLineLength); - result = common2.repeat(" ", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + " | " + _line.str + "\n" + result; - } - var line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength); - result += common2.repeat(" ", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + " | " + line.str + "\n"; - result += common2.repeat("-", options.indent + lineNoLength + 3 + line.pos) + "^\n"; - for (var _i = 1; _i <= options.linesAfter; _i++) { - if (foundLineNo + _i >= lineEnds.length) break; - var _line2 = getLine(mark.buffer, lineStarts[foundLineNo + _i], lineEnds[foundLineNo + _i], mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + _i]), maxLineLength); - result += common2.repeat(" ", options.indent) + padStart((mark.line + _i + 1).toString(), lineNoLength) + " | " + _line2.str + "\n"; - } - return result.replace(/\n$/, ""); - } - snippet = makeSnippet; - return snippet; - } - var type; - var hasRequiredType; - function requireType() { - if (hasRequiredType) return type; - hasRequiredType = 1; - var YAMLException2 = requireException(); - var TYPE_CONSTRUCTOR_OPTIONS = [ "kind", "multi", "resolve", "construct", "instanceOf", "predicate", "represent", "representName", "defaultStyle", "styleAliases" ]; - var YAML_NODE_KINDS = [ "scalar", "sequence", "mapping" ]; - function compileStyleAliases(map2) { - var result = {}; - if (map2 !== null) { - Object.keys(map2).forEach(function(style) { - map2[style].forEach(function(alias) { - result[String(alias)] = style; - }); - }); - } - return result; - } - function Type2(tag, options) { - options = options || {}; - Object.keys(options).forEach(function(name) { - if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { - throw new YAMLException2('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); - } - }); - this.options = options; - this.tag = tag; - this.kind = options["kind"] || null; - this.resolve = options["resolve"] || function() { - return true; - }; - this.construct = options["construct"] || function(data) { - return data; - }; - this.instanceOf = options["instanceOf"] || null; - this.predicate = options["predicate"] || null; - this.represent = options["represent"] || null; - this.representName = options["representName"] || null; - this.defaultStyle = options["defaultStyle"] || null; - this.multi = options["multi"] || false; - this.styleAliases = compileStyleAliases(options["styleAliases"] || null); - if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { - throw new YAMLException2('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); - } - } - type = Type2; - return type; - } - var schema; - var hasRequiredSchema; - function requireSchema() { - if (hasRequiredSchema) return schema; - hasRequiredSchema = 1; - var YAMLException2 = requireException(); - var Type2 = requireType(); - function compileList(schema2, name) { - var result = []; - schema2[name].forEach(function(currentType) { - var newIndex = result.length; - result.forEach(function(previousType, previousIndex) { - if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) { - newIndex = previousIndex; - } - }); - result[newIndex] = currentType; - }); - return result; - } - function compileMap() { - var result = { - scalar: {}, - sequence: {}, - mapping: {}, - fallback: {}, - multi: { - scalar: [], - sequence: [], - mapping: [], - fallback: [] - } - }; - function collectType(type2) { - if (type2.multi) { - result.multi[type2.kind].push(type2); - result.multi["fallback"].push(type2); - } else { - result[type2.kind][type2.tag] = result["fallback"][type2.tag] = type2; - } - } - for (var index = 0, length = arguments.length; index < length; index += 1) { - arguments[index].forEach(collectType); - } - return result; - } - function Schema2(definition) { - return this.extend(definition); - } - Schema2.prototype.extend = function extend(definition) { - var implicit = []; - var explicit = []; - if (definition instanceof Type2) { - explicit.push(definition); - } else if (Array.isArray(definition)) { - explicit = explicit.concat(definition); - } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) { - if (definition.implicit) implicit = implicit.concat(definition.implicit); - if (definition.explicit) explicit = explicit.concat(definition.explicit); - } else { - throw new YAMLException2("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })"); - } - implicit.forEach(function(type2) { - if (!(type2 instanceof Type2)) { - throw new YAMLException2("Specified list of YAML types (or a single Type object) contains a non-Type object."); - } - if (type2.loadKind && type2.loadKind !== "scalar") { - throw new YAMLException2("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported."); - } - if (type2.multi) { - throw new YAMLException2("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit."); - } - }); - explicit.forEach(function(type2) { - if (!(type2 instanceof Type2)) { - throw new YAMLException2("Specified list of YAML types (or a single Type object) contains a non-Type object."); - } - }); - var result = Object.create(Schema2.prototype); - result.implicit = (this.implicit || []).concat(implicit); - result.explicit = (this.explicit || []).concat(explicit); - result.compiledImplicit = compileList(result, "implicit"); - result.compiledExplicit = compileList(result, "explicit"); - result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit); - return result; - }; - schema = Schema2; - return schema; - } - var str; - var hasRequiredStr; - function requireStr() { - if (hasRequiredStr) return str; - hasRequiredStr = 1; - var Type2 = requireType(); - str = new Type2("tag:yaml.org,2002:str", { - kind: "scalar", - construct: function construct(data) { - return data !== null ? data : ""; - } - }); - return str; - } - var seq; - var hasRequiredSeq; - function requireSeq() { - if (hasRequiredSeq) return seq; - hasRequiredSeq = 1; - var Type2 = requireType(); - seq = new Type2("tag:yaml.org,2002:seq", { - kind: "sequence", - construct: function construct(data) { - return data !== null ? data : []; - } - }); - return seq; - } - var map; - var hasRequiredMap; - function requireMap() { - if (hasRequiredMap) return map; - hasRequiredMap = 1; - var Type2 = requireType(); - map = new Type2("tag:yaml.org,2002:map", { - kind: "mapping", - construct: function construct(data) { - return data !== null ? data : {}; - } - }); - return map; - } - var failsafe; - var hasRequiredFailsafe; - function requireFailsafe() { - if (hasRequiredFailsafe) return failsafe; - hasRequiredFailsafe = 1; - var Schema2 = requireSchema(); - failsafe = new Schema2({ - explicit: [ requireStr(), requireSeq(), requireMap() ] - }); - return failsafe; - } - var _null; - var hasRequired_null; - function require_null() { - if (hasRequired_null) return _null; - hasRequired_null = 1; - var Type2 = requireType(); - function resolveYamlNull(data) { - if (data === null) return true; - var max = data.length; - return max === 1 && data === "~" || max === 4 && (data === "null" || data === "Null" || data === "NULL"); - } - function constructYamlNull() { - return null; - } - function isNull(object) { - return object === null; - } - _null = new Type2("tag:yaml.org,2002:null", { - kind: "scalar", - resolve: resolveYamlNull, - construct: constructYamlNull, - predicate: isNull, - represent: { - canonical: function canonical() { - return "~"; - }, - lowercase: function lowercase() { - return "null"; - }, - uppercase: function uppercase() { - return "NULL"; - }, - camelcase: function camelcase() { - return "Null"; - }, - empty: function empty() { - return ""; - } - }, - defaultStyle: "lowercase" - }); - return _null; - } - var bool; - var hasRequiredBool; - function requireBool() { - if (hasRequiredBool) return bool; - hasRequiredBool = 1; - var Type2 = requireType(); - function resolveYamlBoolean(data) { - if (data === null) return false; - var max = data.length; - return max === 4 && (data === "true" || data === "True" || data === "TRUE") || max === 5 && (data === "false" || data === "False" || data === "FALSE"); - } - function constructYamlBoolean(data) { - return data === "true" || data === "True" || data === "TRUE"; - } - function isBoolean(object) { - return Object.prototype.toString.call(object) === "[object Boolean]"; - } - bool = new Type2("tag:yaml.org,2002:bool", { - kind: "scalar", - resolve: resolveYamlBoolean, - construct: constructYamlBoolean, - predicate: isBoolean, - represent: { - lowercase: function lowercase(object) { - return object ? "true" : "false"; - }, - uppercase: function uppercase(object) { - return object ? "TRUE" : "FALSE"; - }, - camelcase: function camelcase(object) { - return object ? "True" : "False"; - } - }, - defaultStyle: "lowercase" - }); - return bool; - } - var int; - var hasRequiredInt; - function requireInt() { - if (hasRequiredInt) return int; - hasRequiredInt = 1; - var common2 = requireCommon(); - var Type2 = requireType(); - function isHexCode(c) { - return c >= 48 && c <= 57 || c >= 65 && c <= 70 || c >= 97 && c <= 102; - } - function isOctCode(c) { - return c >= 48 && c <= 55; - } - function isDecCode(c) { - return c >= 48 && c <= 57; - } - function resolveYamlInteger(data) { - if (data === null) return false; - var max = data.length; - var index = 0; - var hasDigits = false; - if (!max) return false; - var ch = data[index]; - if (ch === "-" || ch === "+") { - ch = data[++index]; - } - if (ch === "0") { - if (index + 1 === max) return true; - ch = data[++index]; - if (ch === "b") { - index++; - for (;index < max; index++) { - ch = data[index]; - if (ch !== "0" && ch !== "1") return false; - hasDigits = true; - } - return hasDigits && isFinite(parseYamlInteger(data)); - } - if (ch === "x") { - index++; - for (;index < max; index++) { - if (!isHexCode(data.charCodeAt(index))) return false; - hasDigits = true; - } - return hasDigits && isFinite(parseYamlInteger(data)); - } - if (ch === "o") { - index++; - for (;index < max; index++) { - if (!isOctCode(data.charCodeAt(index))) return false; - hasDigits = true; - } - return hasDigits && isFinite(parseYamlInteger(data)); - } - } - for (;index < max; index++) { - if (!isDecCode(data.charCodeAt(index))) { - return false; - } - hasDigits = true; - } - if (!hasDigits) return false; - return isFinite(parseYamlInteger(data)); - } - function parseYamlInteger(data) { - var value = data; - var sign = 1; - var ch = value[0]; - if (ch === "-" || ch === "+") { - if (ch === "-") sign = -1; - value = value.slice(1); - ch = value[0]; - } - if (value === "0") return 0; - if (ch === "0") { - if (value[1] === "b") return sign * parseInt(value.slice(2), 2); - if (value[1] === "x") return sign * parseInt(value.slice(2), 16); - if (value[1] === "o") return sign * parseInt(value.slice(2), 8); - } - return sign * parseInt(value, 10); - } - function constructYamlInteger(data) { - return parseYamlInteger(data); - } - function isInteger(object) { - return Object.prototype.toString.call(object) === "[object Number]" && object % 1 === 0 && !common2.isNegativeZero(object); - } - int = new Type2("tag:yaml.org,2002:int", { - kind: "scalar", - resolve: resolveYamlInteger, - construct: constructYamlInteger, - predicate: isInteger, - represent: { - binary: function binary2(obj) { - return obj >= 0 ? "0b" + obj.toString(2) : "-0b" + obj.toString(2).slice(1); - }, - octal: function octal(obj) { - return obj >= 0 ? "0o" + obj.toString(8) : "-0o" + obj.toString(8).slice(1); - }, - decimal: function decimal(obj) { - return obj.toString(10); - }, - hexadecimal: function hexadecimal(obj) { - return obj >= 0 ? "0x" + obj.toString(16).toUpperCase() : "-0x" + obj.toString(16).toUpperCase().slice(1); - } - }, - defaultStyle: "decimal", - styleAliases: { - binary: [ 2, "bin" ], - octal: [ 8, "oct" ], - decimal: [ 10, "dec" ], - hexadecimal: [ 16, "hex" ] - } - }); - return int; - } - var float; - var hasRequiredFloat; - function requireFloat() { - if (hasRequiredFloat) return float; - hasRequiredFloat = 1; - var common2 = requireCommon(); - var Type2 = requireType(); - var YAML_FLOAT_PATTERN = new RegExp("^(?:[-+]?(?:[0-9]+)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"); - var YAML_FLOAT_SPECIAL_PATTERN = new RegExp("^(?:[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"); - function resolveYamlFloat(data) { - if (data === null) return false; - if (!YAML_FLOAT_PATTERN.test(data)) { - return false; - } - if (isFinite(parseFloat(data, 10))) { - return true; - } - return YAML_FLOAT_SPECIAL_PATTERN.test(data); - } - function constructYamlFloat(data) { - var value = data.toLowerCase(); - var sign = value[0] === "-" ? -1 : 1; - if ("+-".indexOf(value[0]) >= 0) { - value = value.slice(1); - } - if (value === ".inf") { - return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; - } else if (value === ".nan") { - return NaN; - } - return sign * parseFloat(value, 10); - } - var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; - function representYamlFloat(object, style) { - if (isNaN(object)) { - switch (style) { - case "lowercase": - return ".nan"; - - case "uppercase": - return ".NAN"; - - case "camelcase": - return ".NaN"; - } - } else if (Number.POSITIVE_INFINITY === object) { - switch (style) { - case "lowercase": - return ".inf"; - - case "uppercase": - return ".INF"; - - case "camelcase": - return ".Inf"; - } - } else if (Number.NEGATIVE_INFINITY === object) { - switch (style) { - case "lowercase": - return "-.inf"; - - case "uppercase": - return "-.INF"; - - case "camelcase": - return "-.Inf"; - } - } else if (common2.isNegativeZero(object)) { - return "-0.0"; - } - var res = object.toString(10); - return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res; - } - function isFloat(object) { - return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 !== 0 || common2.isNegativeZero(object)); - } - float = new Type2("tag:yaml.org,2002:float", { - kind: "scalar", - resolve: resolveYamlFloat, - construct: constructYamlFloat, - predicate: isFloat, - represent: representYamlFloat, - defaultStyle: "lowercase" - }); - return float; - } - var json; - var hasRequiredJson; - function requireJson() { - if (hasRequiredJson) return json; - hasRequiredJson = 1; - json = requireFailsafe().extend({ - implicit: [ require_null(), requireBool(), requireInt(), requireFloat() ] - }); - return json; - } - var core; - var hasRequiredCore; - function requireCore() { - if (hasRequiredCore) return core; - hasRequiredCore = 1; - core = requireJson(); - return core; - } - var timestamp; - var hasRequiredTimestamp; - function requireTimestamp() { - if (hasRequiredTimestamp) return timestamp; - hasRequiredTimestamp = 1; - var Type2 = requireType(); - var YAML_DATE_REGEXP = new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"); - var YAML_TIMESTAMP_REGEXP = new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"); - function resolveYamlTimestamp(data) { - if (data === null) return false; - if (YAML_DATE_REGEXP.exec(data) !== null) return true; - if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; - return false; - } - function constructYamlTimestamp(data) { - var fraction = 0; - var delta = null; - var match = YAML_DATE_REGEXP.exec(data); - if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); - if (match === null) throw new Error("Date resolve error"); - var year = +match[1]; - var month = +match[2] - 1; - var day = +match[3]; - if (!match[4]) { - return new Date(Date.UTC(year, month, day)); - } - var hour = +match[4]; - var minute = +match[5]; - var second = +match[6]; - if (match[7]) { - fraction = match[7].slice(0, 3); - while (fraction.length < 3) { - fraction += "0"; - } - fraction = +fraction; - } - if (match[9]) { - var tzHour = +match[10]; - var tzMinute = +(match[11] || 0); - delta = (tzHour * 60 + tzMinute) * 6e4; - if (match[9] === "-") delta = -delta; - } - var date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); - if (delta) date.setTime(date.getTime() - delta); - return date; - } - function representYamlTimestamp(object) { - return object.toISOString(); - } - timestamp = new Type2("tag:yaml.org,2002:timestamp", { - kind: "scalar", - resolve: resolveYamlTimestamp, - construct: constructYamlTimestamp, - instanceOf: Date, - represent: representYamlTimestamp - }); - return timestamp; - } - var merge; - var hasRequiredMerge; - function requireMerge() { - if (hasRequiredMerge) return merge; - hasRequiredMerge = 1; - var Type2 = requireType(); - function resolveYamlMerge(data) { - return data === "<<" || data === null; - } - merge = new Type2("tag:yaml.org,2002:merge", { - kind: "scalar", - resolve: resolveYamlMerge - }); - return merge; - } - var binary; - var hasRequiredBinary; - function requireBinary() { - if (hasRequiredBinary) return binary; - hasRequiredBinary = 1; - var Type2 = requireType(); - var BASE64_MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r"; - function resolveYamlBinary(data) { - if (data === null) return false; - var bitlen = 0; - var max = data.length; - var map2 = BASE64_MAP; - for (var idx = 0; idx < max; idx++) { - var code = map2.indexOf(data.charAt(idx)); - if (code > 64) continue; - if (code < 0) return false; - bitlen += 6; - } - return bitlen % 8 === 0; - } - function constructYamlBinary(data) { - var input = data.replace(/[\r\n=]/g, ""); - var max = input.length; - var map2 = BASE64_MAP; - var bits = 0; - var result = []; - for (var idx = 0; idx < max; idx++) { - if (idx % 4 === 0 && idx) { - result.push(bits >> 16 & 255); - result.push(bits >> 8 & 255); - result.push(bits & 255); - } - bits = bits << 6 | map2.indexOf(input.charAt(idx)); - } - var tailbits = max % 4 * 6; - if (tailbits === 0) { - result.push(bits >> 16 & 255); - result.push(bits >> 8 & 255); - result.push(bits & 255); - } else if (tailbits === 18) { - result.push(bits >> 10 & 255); - result.push(bits >> 2 & 255); - } else if (tailbits === 12) { - result.push(bits >> 4 & 255); - } - return new Uint8Array(result); - } - function representYamlBinary(object) { - var result = ""; - var bits = 0; - var max = object.length; - var map2 = BASE64_MAP; - for (var idx = 0; idx < max; idx++) { - if (idx % 3 === 0 && idx) { - result += map2[bits >> 18 & 63]; - result += map2[bits >> 12 & 63]; - result += map2[bits >> 6 & 63]; - result += map2[bits & 63]; - } - bits = (bits << 8) + object[idx]; - } - var tail = max % 3; - if (tail === 0) { - result += map2[bits >> 18 & 63]; - result += map2[bits >> 12 & 63]; - result += map2[bits >> 6 & 63]; - result += map2[bits & 63]; - } else if (tail === 2) { - result += map2[bits >> 10 & 63]; - result += map2[bits >> 4 & 63]; - result += map2[bits << 2 & 63]; - result += map2[64]; - } else if (tail === 1) { - result += map2[bits >> 2 & 63]; - result += map2[bits << 4 & 63]; - result += map2[64]; - result += map2[64]; - } - return result; - } - function isBinary(obj) { - return Object.prototype.toString.call(obj) === "[object Uint8Array]"; - } - binary = new Type2("tag:yaml.org,2002:binary", { - kind: "scalar", - resolve: resolveYamlBinary, - construct: constructYamlBinary, - predicate: isBinary, - represent: representYamlBinary - }); - return binary; - } - var omap; - var hasRequiredOmap; - function requireOmap() { - if (hasRequiredOmap) return omap; - hasRequiredOmap = 1; - var Type2 = requireType(); - var _hasOwnProperty = Object.prototype.hasOwnProperty; - var _toString = Object.prototype.toString; - function resolveYamlOmap(data) { - if (data === null) return true; - var objectKeys = {}; - var object = data; - for (var index = 0, length = object.length; index < length; index += 1) { - var pair = object[index]; - var pairHasKey = false; - if (_toString.call(pair) !== "[object Object]") return false; - var pairKey = void 0; - for (pairKey in pair) { - if (_hasOwnProperty.call(pair, pairKey)) { - if (!pairHasKey) pairHasKey = true; else return false; - } - } - if (!pairHasKey) return false; - if (_hasOwnProperty.call(objectKeys, pairKey)) return false; - Object.defineProperty(objectKeys, pairKey, { - value: true - }); - } - return true; - } - function constructYamlOmap(data) { - return data !== null ? data : []; - } - omap = new Type2("tag:yaml.org,2002:omap", { - kind: "sequence", - resolve: resolveYamlOmap, - construct: constructYamlOmap - }); - return omap; - } - var pairs; - var hasRequiredPairs; - function requirePairs() { - if (hasRequiredPairs) return pairs; - hasRequiredPairs = 1; - var Type2 = requireType(); - var _toString = Object.prototype.toString; - function resolveYamlPairs(data) { - if (data === null) return true; - var object = data; - var result = new Array(object.length); - for (var index = 0, length = object.length; index < length; index += 1) { - var pair = object[index]; - if (_toString.call(pair) !== "[object Object]") return false; - var keys = Object.keys(pair); - if (keys.length !== 1) return false; - result[index] = [ keys[0], pair[keys[0]] ]; - } - return true; - } - function constructYamlPairs(data) { - if (data === null) return []; - var object = data; - var result = new Array(object.length); - for (var index = 0, length = object.length; index < length; index += 1) { - var pair = object[index]; - var keys = Object.keys(pair); - result[index] = [ keys[0], pair[keys[0]] ]; - } - return result; - } - pairs = new Type2("tag:yaml.org,2002:pairs", { - kind: "sequence", - resolve: resolveYamlPairs, - construct: constructYamlPairs - }); - return pairs; - } - var set; - var hasRequiredSet; - function requireSet() { - if (hasRequiredSet) return set; - hasRequiredSet = 1; - var Type2 = requireType(); - var _hasOwnProperty = Object.prototype.hasOwnProperty; - function resolveYamlSet(data) { - if (data === null) return true; - var object = data; - for (var key in object) { - if (_hasOwnProperty.call(object, key)) { - if (object[key] !== null) return false; - } - } - return true; - } - function constructYamlSet(data) { - return data !== null ? data : {}; - } - set = new Type2("tag:yaml.org,2002:set", { - kind: "mapping", - resolve: resolveYamlSet, - construct: constructYamlSet - }); - return set; - } - var _default; - var hasRequired_default; - function require_default() { - if (hasRequired_default) return _default; - hasRequired_default = 1; - _default = requireCore().extend({ - implicit: [ requireTimestamp(), requireMerge() ], - explicit: [ requireBinary(), requireOmap(), requirePairs(), requireSet() ] - }); - return _default; - } - var hasRequiredLoader; - function requireLoader() { - if (hasRequiredLoader) return loader; - hasRequiredLoader = 1; - function _typeof(o) { - "@babel/helpers - typeof"; - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { - return typeof o2; - } : function(o2) { - return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; - }, _typeof(o); - } - var common2 = requireCommon(); - var YAMLException2 = requireException(); - var makeSnippet = requireSnippet(); - var DEFAULT_SCHEMA2 = require_default(); - var _hasOwnProperty = Object.prototype.hasOwnProperty; - var CONTEXT_FLOW_IN = 1; - var CONTEXT_FLOW_OUT = 2; - var CONTEXT_BLOCK_IN = 3; - var CONTEXT_BLOCK_OUT = 4; - var CHOMPING_CLIP = 1; - var CHOMPING_STRIP = 2; - var CHOMPING_KEEP = 3; - var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; - var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; - var PATTERN_FLOW_INDICATORS = /[,\[\]{}]/; - var PATTERN_TAG_HANDLE = /^(?:!|!!|![0-9A-Za-z-]+!)$/; - var PATTERN_TAG_URI = /^(?:!|[^,\[\]{}])(?:%[0-9a-f]{2}|[0-9a-z\-#;/?:@&=+$,_.!~*'()\[\]])*$/i; - function _class(obj) { - return Object.prototype.toString.call(obj); - } - function isEol(c) { - return c === 10 || c === 13; - } - function isWhiteSpace(c) { - return c === 9 || c === 32; - } - function isWsOrEol(c) { - return c === 9 || c === 32 || c === 10 || c === 13; - } - function isFlowIndicator(c) { - return c === 44 || c === 91 || c === 93 || c === 123 || c === 125; - } - function fromHexCode(c) { - if (c >= 48 && c <= 57) { - return c - 48; - } - var lc = c | 32; - if (lc >= 97 && lc <= 102) { - return lc - 97 + 10; - } - return -1; - } - function escapedHexLen(c) { - if (c === 120) { - return 2; - } - if (c === 117) { - return 4; - } - if (c === 85) { - return 8; - } - return 0; - } - function fromDecimalCode(c) { - if (c >= 48 && c <= 57) { - return c - 48; - } - return -1; - } - function simpleEscapeSequence(c) { - switch (c) { - case 48: - return "\0"; - - case 97: - return ""; - - case 98: - return "\b"; - - case 116: - return "\t"; - - case 9: - return "\t"; - - case 110: - return "\n"; - - case 118: - return "\v"; - - case 102: - return "\f"; - - case 114: - return "\r"; - - case 101: - return ""; - - case 32: - return " "; - - case 34: - return '"'; - - case 47: - return "/"; - - case 92: - return "\\"; - - case 78: - return "…"; - - case 95: - return " "; - - case 76: - return "\u2028"; - - case 80: - return "\u2029"; - - default: - return ""; - } - } - function charFromCodepoint(c) { - if (c <= 65535) { - return String.fromCharCode(c); - } - return String.fromCharCode((c - 65536 >> 10) + 55296, (c - 65536 & 1023) + 56320); - } - function setProperty(object, key, value) { - if (key === "__proto__") { - Object.defineProperty(object, key, { - configurable: true, - enumerable: true, - writable: true, - value: value - }); - } else { - object[key] = value; - } - } - var simpleEscapeCheck = new Array(256); - var simpleEscapeMap = new Array(256); - for (var i = 0; i < 256; i++) { - simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; - simpleEscapeMap[i] = simpleEscapeSequence(i); - } - function State(input, options) { - this.input = input; - this.filename = options["filename"] || null; - this.schema = options["schema"] || DEFAULT_SCHEMA2; - this.onWarning = options["onWarning"] || null; - this.legacy = options["legacy"] || false; - this.json = options["json"] || false; - this.listener = options["listener"] || null; - this.maxDepth = typeof options["maxDepth"] === "number" ? options["maxDepth"] : 100; - this.maxTotalMergeKeys = typeof options["maxTotalMergeKeys"] === "number" ? options["maxTotalMergeKeys"] : 1e4; - this.implicitTypes = this.schema.compiledImplicit; - this.typeMap = this.schema.compiledTypeMap; - this.length = input.length; - this.position = 0; - this.line = 0; - this.lineStart = 0; - this.lineIndent = 0; - this.depth = 0; - this.totalMergeKeys = 0; - this.firstTabInLine = -1; - this.documents = []; - this.anchorMapTransactions = []; - } - function generateError(state, message) { - var mark = { - name: state.filename, - buffer: state.input.slice(0, -1), - position: state.position, - line: state.line, - column: state.position - state.lineStart - }; - mark.snippet = makeSnippet(mark); - return new YAMLException2(message, mark); - } - function throwError(state, message) { - throw generateError(state, message); - } - function throwWarning(state, message) { - if (state.onWarning) { - state.onWarning.call(null, generateError(state, message)); - } - } - function storeAnchor(state, name, value) { - var transactions = state.anchorMapTransactions; - if (transactions.length !== 0) { - var transaction = transactions[transactions.length - 1]; - if (!_hasOwnProperty.call(transaction, name)) { - transaction[name] = { - existed: _hasOwnProperty.call(state.anchorMap, name), - value: state.anchorMap[name] - }; - } - } - state.anchorMap[name] = value; - } - function beginAnchorTransaction(state) { - state.anchorMapTransactions.push(Object.create(null)); - } - function commitAnchorTransaction(state) { - var transaction = state.anchorMapTransactions.pop(); - var transactions = state.anchorMapTransactions; - if (transactions.length === 0) return; - var parent = transactions[transactions.length - 1]; - var names = Object.keys(transaction); - for (var index = 0, length = names.length; index < length; index += 1) { - var name = names[index]; - if (!_hasOwnProperty.call(parent, name)) { - parent[name] = transaction[name]; - } - } - } - function rollbackAnchorTransaction(state) { - var transaction = state.anchorMapTransactions.pop(); - var names = Object.keys(transaction); - for (var index = names.length - 1; index >= 0; index -= 1) { - var entry = transaction[names[index]]; - if (entry.existed) { - state.anchorMap[names[index]] = entry.value; - } else { - delete state.anchorMap[names[index]]; - } - } - } - function snapshotState(state) { - return { - position: state.position, - line: state.line, - lineStart: state.lineStart, - lineIndent: state.lineIndent, - firstTabInLine: state.firstTabInLine, - tag: state.tag, - anchor: state.anchor, - kind: state.kind, - result: state.result - }; - } - function restoreState(state, snapshot) { - state.position = snapshot.position; - state.line = snapshot.line; - state.lineStart = snapshot.lineStart; - state.lineIndent = snapshot.lineIndent; - state.firstTabInLine = snapshot.firstTabInLine; - state.tag = snapshot.tag; - state.anchor = snapshot.anchor; - state.kind = snapshot.kind; - state.result = snapshot.result; - } - var directiveHandlers = { - YAML: function handleYamlDirective(state, name, args) { - if (state.version !== null) { - throwError(state, "duplication of %YAML directive"); - } - if (args.length !== 1) { - throwError(state, "YAML directive accepts exactly one argument"); - } - var match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); - if (match === null) { - throwError(state, "ill-formed argument of the YAML directive"); - } - var major = parseInt(match[1], 10); - var minor = parseInt(match[2], 10); - if (major !== 1) { - throwError(state, "unacceptable YAML version of the document"); - } - state.version = args[0]; - state.checkLineBreaks = minor < 2; - if (minor !== 1 && minor !== 2) { - throwWarning(state, "unsupported YAML version of the document"); - } - }, - TAG: function handleTagDirective(state, name, args) { - var prefix; - if (args.length !== 2) { - throwError(state, "TAG directive accepts exactly two arguments"); - } - var handle = args[0]; - prefix = args[1]; - if (!PATTERN_TAG_HANDLE.test(handle)) { - throwError(state, "ill-formed tag handle (first argument) of the TAG directive"); - } - if (_hasOwnProperty.call(state.tagMap, handle)) { - throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); - } - if (!PATTERN_TAG_URI.test(prefix)) { - throwError(state, "ill-formed tag prefix (second argument) of the TAG directive"); - } - try { - prefix = decodeURIComponent(prefix); - } catch (err) { - throwError(state, "tag prefix is malformed: " + prefix); - } - state.tagMap[handle] = prefix; - } - }; - function captureSegment(state, start, end, checkJson) { - if (start < end) { - var _result = state.input.slice(start, end); - if (checkJson) { - for (var _position = 0, _length = _result.length; _position < _length; _position += 1) { - var _character = _result.charCodeAt(_position); - if (!(_character === 9 || _character >= 32 && _character <= 1114111)) { - throwError(state, "expected valid JSON character"); - } - } - } else if (PATTERN_NON_PRINTABLE.test(_result)) { - throwError(state, "the stream contains non-printable characters"); - } - state.result += _result; - } - } - function chargeMergeWork(state) { - state.totalMergeKeys++; - if (state.maxTotalMergeKeys !== -1 && state.totalMergeKeys > state.maxTotalMergeKeys) { - throwError(state, "merge keys exceeded maxTotalMergeKeys (" + state.maxTotalMergeKeys + ")"); - } - } - function mergeMappings(state, destination, source, overridableKeys) { - if (!common2.isObject(source)) { - throwError(state, "cannot merge mappings; the provided source object is unacceptable"); - } - chargeMergeWork(state); - var sourceKeys = Object.keys(source); - for (var index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { - var key = sourceKeys[index]; - chargeMergeWork(state); - if (!_hasOwnProperty.call(destination, key)) { - setProperty(destination, key, source[key]); - overridableKeys[key] = true; - } - } - } - function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) { - if (Array.isArray(keyNode)) { - keyNode = Array.prototype.slice.call(keyNode); - for (var index = 0, quantity = keyNode.length; index < quantity; index += 1) { - if (Array.isArray(keyNode[index])) { - throwError(state, "nested arrays are not supported inside keys"); - } - if (_typeof(keyNode) === "object" && _class(keyNode[index]) === "[object Object]") { - keyNode[index] = "[object Object]"; - } - } - } - if (_typeof(keyNode) === "object" && _class(keyNode) === "[object Object]") { - keyNode = "[object Object]"; - } - keyNode = String(keyNode); - if (_result === null) { - _result = {}; - } - if (keyTag === "tag:yaml.org,2002:merge") { - if (Array.isArray(valueNode)) { - if (valueNode.length > 100) { - throwError(state, "abnormal merge sequence size"); - } - for (var _index = 0, _quantity = valueNode.length; _index < _quantity; _index += 1) { - mergeMappings(state, _result, valueNode[_index], overridableKeys); - } - } else { - mergeMappings(state, _result, valueNode, overridableKeys); - } - } else { - if (!state.json && !_hasOwnProperty.call(overridableKeys, keyNode) && _hasOwnProperty.call(_result, keyNode)) { - state.line = startLine || state.line; - state.lineStart = startLineStart || state.lineStart; - state.position = startPos || state.position; - throwError(state, "duplicated mapping key"); - } - setProperty(_result, keyNode, valueNode); - delete overridableKeys[keyNode]; - } - return _result; - } - function readLineBreak(state) { - var ch = state.input.charCodeAt(state.position); - if (ch === 10) { - state.position++; - } else if (ch === 13) { - state.position++; - if (state.input.charCodeAt(state.position) === 10) { - state.position++; - } - } else { - throwError(state, "a line break is expected"); - } - state.line += 1; - state.lineStart = state.position; - state.firstTabInLine = -1; - } - function skipSeparationSpace(state, allowComments, checkIndent) { - var lineBreaks = 0; - var ch = state.input.charCodeAt(state.position); - while (ch !== 0) { - while (isWhiteSpace(ch)) { - if (ch === 9 && state.firstTabInLine === -1) { - state.firstTabInLine = state.position; - } - ch = state.input.charCodeAt(++state.position); - } - if (allowComments && ch === 35) { - do { - ch = state.input.charCodeAt(++state.position); - } while (ch !== 10 && ch !== 13 && ch !== 0); - } - if (isEol(ch)) { - readLineBreak(state); - ch = state.input.charCodeAt(state.position); - lineBreaks++; - state.lineIndent = 0; - while (ch === 32) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); - } - } else { - break; - } - } - if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { - throwWarning(state, "deficient indentation"); - } - return lineBreaks; - } - function testDocumentSeparator(state) { - var _position = state.position; - var ch = state.input.charCodeAt(_position); - if ((ch === 45 || ch === 46) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) { - _position += 3; - ch = state.input.charCodeAt(_position); - if (ch === 0 || isWsOrEol(ch)) { - return true; - } - } - return false; - } - function writeFoldedLines(state, count) { - if (count === 1) { - state.result += " "; - } else if (count > 1) { - state.result += common2.repeat("\n", count - 1); - } - } - function readPlainScalar(state, nodeIndent, withinFlowCollection) { - var captureStart; - var captureEnd; - var hasPendingContent; - var _line; - var _lineStart; - var _lineIndent; - var _kind = state.kind; - var _result = state.result; - var ch = state.input.charCodeAt(state.position); - if (isWsOrEol(ch) || isFlowIndicator(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) { - return false; - } - if (ch === 63 || ch === 45) { - var following = state.input.charCodeAt(state.position + 1); - if (isWsOrEol(following) || withinFlowCollection && isFlowIndicator(following)) { - return false; - } - } - state.kind = "scalar"; - state.result = ""; - captureStart = captureEnd = state.position; - hasPendingContent = false; - while (ch !== 0) { - if (ch === 58) { - var _following = state.input.charCodeAt(state.position + 1); - if (isWsOrEol(_following) || withinFlowCollection && isFlowIndicator(_following)) { - break; - } - } else if (ch === 35) { - var preceding = state.input.charCodeAt(state.position - 1); - if (isWsOrEol(preceding)) { - break; - } - } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && isFlowIndicator(ch)) { - break; - } else if (isEol(ch)) { - _line = state.line; - _lineStart = state.lineStart; - _lineIndent = state.lineIndent; - skipSeparationSpace(state, false, -1); - if (state.lineIndent >= nodeIndent) { - hasPendingContent = true; - ch = state.input.charCodeAt(state.position); - continue; - } else { - state.position = captureEnd; - state.line = _line; - state.lineStart = _lineStart; - state.lineIndent = _lineIndent; - break; - } - } - if (hasPendingContent) { - captureSegment(state, captureStart, captureEnd, false); - writeFoldedLines(state, state.line - _line); - captureStart = captureEnd = state.position; - hasPendingContent = false; - } - if (!isWhiteSpace(ch)) { - captureEnd = state.position + 1; - } - ch = state.input.charCodeAt(++state.position); - } - captureSegment(state, captureStart, captureEnd, false); - if (state.result) { - return true; - } - state.kind = _kind; - state.result = _result; - return false; - } - function readSingleQuotedScalar(state, nodeIndent) { - var captureStart; - var captureEnd; - var ch = state.input.charCodeAt(state.position); - if (ch !== 39) { - return false; - } - state.kind = "scalar"; - state.result = ""; - state.position++; - captureStart = captureEnd = state.position; - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 39) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); - if (ch === 39) { - captureStart = state.position; - state.position++; - captureEnd = state.position; - } else { - return true; - } - } else if (isEol(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, "unexpected end of the document within a single quoted scalar"); - } else { - state.position++; - if (!isWhiteSpace(ch)) { - captureEnd = state.position; - } - } - } - throwError(state, "unexpected end of the stream within a single quoted scalar"); - } - function readDoubleQuotedScalar(state, nodeIndent) { - var captureStart; - var captureEnd; - var tmp; - var ch = state.input.charCodeAt(state.position); - if (ch !== 34) { - return false; - } - state.kind = "scalar"; - state.result = ""; - state.position++; - captureStart = captureEnd = state.position; - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 34) { - captureSegment(state, captureStart, state.position, true); - state.position++; - return true; - } else if (ch === 92) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); - if (isEol(ch)) { - skipSeparationSpace(state, false, nodeIndent); - } else if (ch < 256 && simpleEscapeCheck[ch]) { - state.result += simpleEscapeMap[ch]; - state.position++; - } else if ((tmp = escapedHexLen(ch)) > 0) { - var hexLength = tmp; - var hexResult = 0; - for (;hexLength > 0; hexLength--) { - ch = state.input.charCodeAt(++state.position); - if ((tmp = fromHexCode(ch)) >= 0) { - hexResult = (hexResult << 4) + tmp; - } else { - throwError(state, "expected hexadecimal character"); - } - } - state.result += charFromCodepoint(hexResult); - state.position++; - } else { - throwError(state, "unknown escape sequence"); - } - captureStart = captureEnd = state.position; - } else if (isEol(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, "unexpected end of the document within a double quoted scalar"); - } else { - state.position++; - if (!isWhiteSpace(ch)) { - captureEnd = state.position; - } - } - } - throwError(state, "unexpected end of the stream within a double quoted scalar"); - } - function readFlowCollection(state, nodeIndent) { - var readNext = true; - var _line; - var _lineStart; - var _pos; - var _tag = state.tag; - var _result; - var _anchor = state.anchor; - var terminator; - var isPair; - var isExplicitPair; - var isMapping; - var overridableKeys = Object.create(null); - var keyNode; - var keyTag; - var valueNode; - var ch = state.input.charCodeAt(state.position); - if (ch === 91) { - terminator = 93; - isMapping = false; - _result = []; - } else if (ch === 123) { - terminator = 125; - isMapping = true; - _result = {}; - } else { - return false; - } - if (state.anchor !== null) { - storeAnchor(state, state.anchor, _result); - } - ch = state.input.charCodeAt(++state.position); - while (ch !== 0) { - skipSeparationSpace(state, true, nodeIndent); - ch = state.input.charCodeAt(state.position); - if (ch === terminator) { - state.position++; - state.tag = _tag; - state.anchor = _anchor; - state.kind = isMapping ? "mapping" : "sequence"; - state.result = _result; - return true; - } else if (!readNext) { - throwError(state, "missed comma between flow collection entries"); - } else if (ch === 44) { - throwError(state, "expected the node content, but found ','"); - } - keyTag = keyNode = valueNode = null; - isPair = isExplicitPair = false; - if (ch === 63) { - var following = state.input.charCodeAt(state.position + 1); - if (isWsOrEol(following)) { - isPair = isExplicitPair = true; - state.position++; - skipSeparationSpace(state, true, nodeIndent); - } - } - _line = state.line; - _lineStart = state.lineStart; - _pos = state.position; - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - keyTag = state.tag; - keyNode = state.result; - skipSeparationSpace(state, true, nodeIndent); - ch = state.input.charCodeAt(state.position); - if ((isExplicitPair || state.line === _line) && ch === 58) { - isPair = true; - ch = state.input.charCodeAt(++state.position); - skipSeparationSpace(state, true, nodeIndent); - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - valueNode = state.result; - } - if (isMapping) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); - } else if (isPair) { - _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); - } else { - _result.push(keyNode); - } - skipSeparationSpace(state, true, nodeIndent); - ch = state.input.charCodeAt(state.position); - if (ch === 44) { - readNext = true; - ch = state.input.charCodeAt(++state.position); - } else { - readNext = false; - } - } - throwError(state, "unexpected end of the stream within a flow collection"); - } - function readBlockScalar(state, nodeIndent) { - var folding; - var chomping = CHOMPING_CLIP; - var didReadContent = false; - var detectedIndent = false; - var textIndent = nodeIndent; - var emptyLines = 0; - var atMoreIndented = false; - var tmp; - var ch = state.input.charCodeAt(state.position); - if (ch === 124) { - folding = false; - } else if (ch === 62) { - folding = true; - } else { - return false; - } - state.kind = "scalar"; - state.result = ""; - while (ch !== 0) { - ch = state.input.charCodeAt(++state.position); - if (ch === 43 || ch === 45) { - if (CHOMPING_CLIP === chomping) { - chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP; - } else { - throwError(state, "repeat of a chomping mode identifier"); - } - } else if ((tmp = fromDecimalCode(ch)) >= 0) { - if (tmp === 0) { - throwError(state, "bad explicit indentation width of a block scalar; it cannot be less than one"); - } else if (!detectedIndent) { - textIndent = nodeIndent + tmp - 1; - detectedIndent = true; - } else { - throwError(state, "repeat of an indentation width identifier"); - } - } else { - break; - } - } - if (isWhiteSpace(ch)) { - do { - ch = state.input.charCodeAt(++state.position); - } while (isWhiteSpace(ch)); - if (ch === 35) { - do { - ch = state.input.charCodeAt(++state.position); - } while (!isEol(ch) && ch !== 0); - } - } - while (ch !== 0) { - readLineBreak(state); - state.lineIndent = 0; - ch = state.input.charCodeAt(state.position); - while ((!detectedIndent || state.lineIndent < textIndent) && ch === 32) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); - } - if (!detectedIndent && state.lineIndent > textIndent) { - textIndent = state.lineIndent; - } - if (isEol(ch)) { - emptyLines++; - continue; - } - if (!detectedIndent && textIndent === 0) { - throwError(state, "missing indentation for block scalar"); - } - if (state.lineIndent < textIndent) { - if (chomping === CHOMPING_KEEP) { - state.result += common2.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); - } else if (chomping === CHOMPING_CLIP) { - if (didReadContent) { - state.result += "\n"; - } - } - break; - } - if (folding) { - if (isWhiteSpace(ch)) { - atMoreIndented = true; - state.result += common2.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); - } else if (atMoreIndented) { - atMoreIndented = false; - state.result += common2.repeat("\n", emptyLines + 1); - } else if (emptyLines === 0) { - if (didReadContent) { - state.result += " "; - } - } else { - state.result += common2.repeat("\n", emptyLines); - } - } else { - state.result += common2.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); - } - didReadContent = true; - detectedIndent = true; - emptyLines = 0; - var captureStart = state.position; - while (!isEol(ch) && ch !== 0) { - ch = state.input.charCodeAt(++state.position); - } - captureSegment(state, captureStart, state.position, false); - } - return true; - } - function readBlockSequence(state, nodeIndent) { - var _tag = state.tag; - var _anchor = state.anchor; - var _result = []; - var detected = false; - if (state.firstTabInLine !== -1) return false; - if (state.anchor !== null) { - storeAnchor(state, state.anchor, _result); - } - var ch = state.input.charCodeAt(state.position); - while (ch !== 0) { - if (state.firstTabInLine !== -1) { - state.position = state.firstTabInLine; - throwError(state, "tab characters must not be used in indentation"); - } - if (ch !== 45) { - break; - } - var following = state.input.charCodeAt(state.position + 1); - if (!isWsOrEol(following)) { - break; - } - detected = true; - state.position++; - if (skipSeparationSpace(state, true, -1)) { - if (state.lineIndent <= nodeIndent) { - _result.push(null); - ch = state.input.charCodeAt(state.position); - continue; - } - } - var _line = state.line; - composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); - _result.push(state.result); - skipSeparationSpace(state, true, -1); - ch = state.input.charCodeAt(state.position); - if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) { - throwError(state, "bad indentation of a sequence entry"); - } else if (state.lineIndent < nodeIndent) { - break; - } - } - if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = "sequence"; - state.result = _result; - return true; - } - return false; - } - function readBlockMapping(state, nodeIndent, flowIndent) { - var allowCompact; - var _keyLine; - var _keyLineStart; - var _keyPos; - var _tag = state.tag; - var _anchor = state.anchor; - var _result = {}; - var overridableKeys = Object.create(null); - var keyTag = null; - var keyNode = null; - var valueNode = null; - var atExplicitKey = false; - var detected = false; - if (state.firstTabInLine !== -1) return false; - if (state.anchor !== null) { - storeAnchor(state, state.anchor, _result); - } - var ch = state.input.charCodeAt(state.position); - while (ch !== 0) { - if (!atExplicitKey && state.firstTabInLine !== -1) { - state.position = state.firstTabInLine; - throwError(state, "tab characters must not be used in indentation"); - } - var following = state.input.charCodeAt(state.position + 1); - var _line = state.line; - if ((ch === 63 || ch === 58) && isWsOrEol(following)) { - if (ch === 63) { - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; - } - detected = true; - atExplicitKey = true; - allowCompact = true; - } else if (atExplicitKey) { - atExplicitKey = false; - allowCompact = true; - } else { - throwError(state, "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"); - } - state.position += 1; - ch = following; - } else { - _keyLine = state.line; - _keyLineStart = state.lineStart; - _keyPos = state.position; - if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { - break; - } - if (state.line === _line) { - ch = state.input.charCodeAt(state.position); - while (isWhiteSpace(ch)) { - ch = state.input.charCodeAt(++state.position); - } - if (ch === 58) { - ch = state.input.charCodeAt(++state.position); - if (!isWsOrEol(ch)) { - throwError(state, "a whitespace character is expected after the key-value separator within a block mapping"); - } - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; - } - detected = true; - atExplicitKey = false; - allowCompact = false; - keyTag = state.tag; - keyNode = state.result; - } else if (detected) { - throwError(state, "can not read an implicit mapping pair; a colon is missed"); - } else { - state.tag = _tag; - state.anchor = _anchor; - return true; - } - } else if (detected) { - throwError(state, "can not read a block mapping entry; a multiline key may not be an implicit key"); - } else { - state.tag = _tag; - state.anchor = _anchor; - return true; - } - } - if (state.line === _line || state.lineIndent > nodeIndent) { - if (atExplicitKey) { - _keyLine = state.line; - _keyLineStart = state.lineStart; - _keyPos = state.position; - } - if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { - if (atExplicitKey) { - keyNode = state.result; - } else { - valueNode = state.result; - } - } - if (!atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; - } - skipSeparationSpace(state, true, -1); - ch = state.input.charCodeAt(state.position); - } - if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) { - throwError(state, "bad indentation of a mapping entry"); - } else if (state.lineIndent < nodeIndent) { - break; - } - } - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - } - if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = "mapping"; - state.result = _result; - } - return detected; - } - function readTagProperty(state) { - var isVerbatim = false; - var isNamed = false; - var tagHandle; - var tagName; - var ch = state.input.charCodeAt(state.position); - if (ch !== 33) return false; - if (state.tag !== null) { - throwError(state, "duplication of a tag property"); - } - ch = state.input.charCodeAt(++state.position); - if (ch === 60) { - isVerbatim = true; - ch = state.input.charCodeAt(++state.position); - } else if (ch === 33) { - isNamed = true; - tagHandle = "!!"; - ch = state.input.charCodeAt(++state.position); - } else { - tagHandle = "!"; - } - var _position = state.position; - if (isVerbatim) { - do { - ch = state.input.charCodeAt(++state.position); - } while (ch !== 0 && ch !== 62); - if (state.position < state.length) { - tagName = state.input.slice(_position, state.position); - ch = state.input.charCodeAt(++state.position); - } else { - throwError(state, "unexpected end of the stream within a verbatim tag"); - } - } else { - while (ch !== 0 && !isWsOrEol(ch)) { - if (ch === 33) { - if (!isNamed) { - tagHandle = state.input.slice(_position - 1, state.position + 1); - if (!PATTERN_TAG_HANDLE.test(tagHandle)) { - throwError(state, "named tag handle cannot contain such characters"); - } - isNamed = true; - _position = state.position + 1; - } else { - throwError(state, "tag suffix cannot contain exclamation marks"); - } - } - ch = state.input.charCodeAt(++state.position); - } - tagName = state.input.slice(_position, state.position); - if (PATTERN_FLOW_INDICATORS.test(tagName)) { - throwError(state, "tag suffix cannot contain flow indicator characters"); - } - } - if (tagName && !PATTERN_TAG_URI.test(tagName)) { - throwError(state, "tag name cannot contain such characters: " + tagName); - } - try { - tagName = decodeURIComponent(tagName); - } catch (err) { - throwError(state, "tag name is malformed: " + tagName); - } - if (isVerbatim) { - state.tag = tagName; - } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { - state.tag = state.tagMap[tagHandle] + tagName; - } else if (tagHandle === "!") { - state.tag = "!" + tagName; - } else if (tagHandle === "!!") { - state.tag = "tag:yaml.org,2002:" + tagName; - } else { - throwError(state, 'undeclared tag handle "' + tagHandle + '"'); - } - return true; - } - function readAnchorProperty(state) { - var ch = state.input.charCodeAt(state.position); - if (ch !== 38) return false; - if (state.anchor !== null) { - throwError(state, "duplication of an anchor property"); - } - ch = state.input.charCodeAt(++state.position); - var _position = state.position; - while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { - ch = state.input.charCodeAt(++state.position); - } - if (state.position === _position) { - throwError(state, "name of an anchor node must contain at least one character"); - } - state.anchor = state.input.slice(_position, state.position); - return true; - } - function readAlias(state) { - var ch = state.input.charCodeAt(state.position); - if (ch !== 42) return false; - ch = state.input.charCodeAt(++state.position); - var _position = state.position; - while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { - ch = state.input.charCodeAt(++state.position); - } - if (state.position === _position) { - throwError(state, "name of an alias node must contain at least one character"); - } - var alias = state.input.slice(_position, state.position); - if (!_hasOwnProperty.call(state.anchorMap, alias)) { - throwError(state, 'unidentified alias "' + alias + '"'); - } - state.result = state.anchorMap[alias]; - skipSeparationSpace(state, true, -1); - return true; - } - function tryReadBlockMappingFromProperty(state, propertyStart, nodeIndent, flowIndent) { - var fallbackState = snapshotState(state); - beginAnchorTransaction(state); - restoreState(state, propertyStart); - state.tag = null; - state.anchor = null; - state.kind = null; - state.result = null; - if (readBlockMapping(state, nodeIndent, flowIndent) && state.kind === "mapping") { - commitAnchorTransaction(state); - return true; - } - rollbackAnchorTransaction(state); - restoreState(state, fallbackState); - return false; - } - function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { - var allowBlockScalars; - var allowBlockCollections; - var indentStatus = 1; - var atNewLine = false; - var hasContent = false; - var propertyStart = null; - var type2; - var flowIndent; - var blockIndent; - if (state.depth >= state.maxDepth) { - throwError(state, "nesting exceeded maxDepth (" + state.maxDepth + ")"); - } - state.depth += 1; - if (state.listener !== null) { - state.listener("open", state); - } - state.tag = null; - state.anchor = null; - state.kind = null; - state.result = null; - var allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext; - if (allowToSeek) { - if (skipSeparationSpace(state, true, -1)) { - atNewLine = true; - if (state.lineIndent > parentIndent) { - indentStatus = 1; - } else if (state.lineIndent === parentIndent) { - indentStatus = 0; - } else if (state.lineIndent < parentIndent) { - indentStatus = -1; - } - } - } - if (indentStatus === 1) { - while (true) { - var ch = state.input.charCodeAt(state.position); - var propertyState = snapshotState(state); - if (atNewLine && (ch === 33 && state.tag !== null || ch === 38 && state.anchor !== null)) { - break; - } - if (!readTagProperty(state) && !readAnchorProperty(state)) { - break; - } - if (propertyStart === null) { - propertyStart = propertyState; - } - if (skipSeparationSpace(state, true, -1)) { - atNewLine = true; - allowBlockCollections = allowBlockStyles; - if (state.lineIndent > parentIndent) { - indentStatus = 1; - } else if (state.lineIndent === parentIndent) { - indentStatus = 0; - } else if (state.lineIndent < parentIndent) { - indentStatus = -1; - } - } else { - allowBlockCollections = false; - } - } - } - if (allowBlockCollections) { - allowBlockCollections = atNewLine || allowCompact; - } - if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { - if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { - flowIndent = parentIndent; - } else { - flowIndent = parentIndent + 1; - } - blockIndent = state.position - state.lineStart; - if (indentStatus === 1) { - if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) { - hasContent = true; - } else { - var _ch = state.input.charCodeAt(state.position); - if (propertyStart !== null && allowBlockStyles && !allowBlockCollections && _ch !== 124 && _ch !== 62 && tryReadBlockMappingFromProperty(state, propertyStart, propertyStart.position - propertyStart.lineStart, flowIndent)) { - hasContent = true; - } else if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) { - hasContent = true; - } else if (readAlias(state)) { - hasContent = true; - if (state.tag !== null || state.anchor !== null) { - throwError(state, "alias node should not have any properties"); - } - } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { - hasContent = true; - if (state.tag === null) { - state.tag = "?"; - } - } - if (state.anchor !== null) { - storeAnchor(state, state.anchor, state.result); - } - } - } else if (indentStatus === 0) { - hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); - } - } - if (state.tag === null) { - if (state.anchor !== null) { - storeAnchor(state, state.anchor, state.result); - } - } else if (state.tag === "?") { - if (state.result !== null && state.kind !== "scalar") { - throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); - } - for (var typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { - type2 = state.implicitTypes[typeIndex]; - if (type2.resolve(state.result)) { - state.result = type2.construct(state.result); - state.tag = type2.tag; - if (state.anchor !== null) { - storeAnchor(state, state.anchor, state.result); - } - break; - } - } - } else if (state.tag !== "!") { - if (_hasOwnProperty.call(state.typeMap[state.kind || "fallback"], state.tag)) { - type2 = state.typeMap[state.kind || "fallback"][state.tag]; - } else { - type2 = null; - var typeList = state.typeMap.multi[state.kind || "fallback"]; - for (var _typeIndex = 0, _typeQuantity = typeList.length; _typeIndex < _typeQuantity; _typeIndex += 1) { - if (state.tag.slice(0, typeList[_typeIndex].tag.length) === typeList[_typeIndex].tag) { - type2 = typeList[_typeIndex]; - break; - } - } - } - if (!type2) { - throwError(state, "unknown tag !<" + state.tag + ">"); - } - if (state.result !== null && type2.kind !== state.kind) { - throwError(state, "unacceptable node kind for !<" + state.tag + '> tag; it should be "' + type2.kind + '", not "' + state.kind + '"'); - } - if (!type2.resolve(state.result, state.tag)) { - throwError(state, "cannot resolve a node with !<" + state.tag + "> explicit tag"); - } else { - state.result = type2.construct(state.result, state.tag); - if (state.anchor !== null) { - storeAnchor(state, state.anchor, state.result); - } - } - } - if (state.listener !== null) { - state.listener("close", state); - } - state.depth -= 1; - return state.tag !== null || state.anchor !== null || hasContent; - } - function readDocument(state) { - var documentStart = state.position; - var hasDirectives = false; - var ch; - state.version = null; - state.checkLineBreaks = state.legacy; - state.tagMap = Object.create(null); - state.anchorMap = Object.create(null); - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - skipSeparationSpace(state, true, -1); - ch = state.input.charCodeAt(state.position); - if (state.lineIndent > 0 || ch !== 37) { - break; - } - hasDirectives = true; - ch = state.input.charCodeAt(++state.position); - var _position = state.position; - while (ch !== 0 && !isWsOrEol(ch)) { - ch = state.input.charCodeAt(++state.position); - } - var directiveName = state.input.slice(_position, state.position); - var directiveArgs = []; - if (directiveName.length < 1) { - throwError(state, "directive name must not be less than one character in length"); - } - while (ch !== 0) { - while (isWhiteSpace(ch)) { - ch = state.input.charCodeAt(++state.position); - } - if (ch === 35) { - do { - ch = state.input.charCodeAt(++state.position); - } while (ch !== 0 && !isEol(ch)); - break; - } - if (isEol(ch)) break; - _position = state.position; - while (ch !== 0 && !isWsOrEol(ch)) { - ch = state.input.charCodeAt(++state.position); - } - directiveArgs.push(state.input.slice(_position, state.position)); - } - if (ch !== 0) readLineBreak(state); - if (_hasOwnProperty.call(directiveHandlers, directiveName)) { - directiveHandlers[directiveName](state, directiveName, directiveArgs); - } else { - throwWarning(state, 'unknown document directive "' + directiveName + '"'); - } - } - skipSeparationSpace(state, true, -1); - if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 45 && state.input.charCodeAt(state.position + 1) === 45 && state.input.charCodeAt(state.position + 2) === 45) { - state.position += 3; - skipSeparationSpace(state, true, -1); - } else if (hasDirectives) { - throwError(state, "directives end mark is expected"); - } - composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); - skipSeparationSpace(state, true, -1); - if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { - throwWarning(state, "non-ASCII line breaks are interpreted as content"); - } - state.documents.push(state.result); - if (state.position === state.lineStart && testDocumentSeparator(state)) { - if (state.input.charCodeAt(state.position) === 46) { - state.position += 3; - skipSeparationSpace(state, true, -1); - } - return; - } - if (state.position < state.length - 1) { - throwError(state, "end of the stream or a document separator is expected"); - } - } - function loadDocuments(input, options) { - input = String(input); - options = options || {}; - if (input.length !== 0) { - if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) { - input += "\n"; - } - if (input.charCodeAt(0) === 65279) { - input = input.slice(1); - } - } - var state = new State(input, options); - var nullpos = input.indexOf("\0"); - if (nullpos !== -1) { - state.position = nullpos; - throwError(state, "null byte is not allowed in input"); - } - state.input += "\0"; - while (state.input.charCodeAt(state.position) === 32) { - state.lineIndent += 1; - state.position += 1; - } - while (state.position < state.length - 1) { - readDocument(state); - } - return state.documents; - } - function loadAll2(input, iterator, options) { - if (iterator !== null && _typeof(iterator) === "object" && typeof options === "undefined") { - options = iterator; - iterator = null; - } - var documents = loadDocuments(input, options); - if (typeof iterator !== "function") { - return documents; - } - for (var index = 0, length = documents.length; index < length; index += 1) { - iterator(documents[index]); - } - } - function load2(input, options) { - var documents = loadDocuments(input, options); - if (documents.length === 0) { - return void 0; - } else if (documents.length === 1) { - return documents[0]; - } - throw new YAMLException2("expected a single document in the stream, but found more"); - } - loader.loadAll = loadAll2; - loader.load = load2; - return loader; - } - var dumper = {}; - var hasRequiredDumper; - function requireDumper() { - if (hasRequiredDumper) return dumper; - hasRequiredDumper = 1; - function _typeof(o) { - "@babel/helpers - typeof"; - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { - return typeof o2; - } : function(o2) { - return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; - }, _typeof(o); - } - var common2 = requireCommon(); - var YAMLException2 = requireException(); - var DEFAULT_SCHEMA2 = require_default(); - var _toString = Object.prototype.toString; - var _hasOwnProperty = Object.prototype.hasOwnProperty; - var CHAR_BOM = 65279; - var CHAR_TAB = 9; - var CHAR_LINE_FEED = 10; - var CHAR_CARRIAGE_RETURN = 13; - var CHAR_SPACE = 32; - var CHAR_EXCLAMATION = 33; - var CHAR_DOUBLE_QUOTE = 34; - var CHAR_SHARP = 35; - var CHAR_PERCENT = 37; - var CHAR_AMPERSAND = 38; - var CHAR_SINGLE_QUOTE = 39; - var CHAR_ASTERISK = 42; - var CHAR_COMMA = 44; - var CHAR_MINUS = 45; - var CHAR_COLON = 58; - var CHAR_EQUALS = 61; - var CHAR_GREATER_THAN = 62; - var CHAR_QUESTION = 63; - var CHAR_COMMERCIAL_AT = 64; - var CHAR_LEFT_SQUARE_BRACKET = 91; - var CHAR_RIGHT_SQUARE_BRACKET = 93; - var CHAR_GRAVE_ACCENT = 96; - var CHAR_LEFT_CURLY_BRACKET = 123; - var CHAR_VERTICAL_LINE = 124; - var CHAR_RIGHT_CURLY_BRACKET = 125; - var ESCAPE_SEQUENCES = {}; - ESCAPE_SEQUENCES[0] = "\\0"; - ESCAPE_SEQUENCES[7] = "\\a"; - ESCAPE_SEQUENCES[8] = "\\b"; - ESCAPE_SEQUENCES[9] = "\\t"; - ESCAPE_SEQUENCES[10] = "\\n"; - ESCAPE_SEQUENCES[11] = "\\v"; - ESCAPE_SEQUENCES[12] = "\\f"; - ESCAPE_SEQUENCES[13] = "\\r"; - ESCAPE_SEQUENCES[27] = "\\e"; - ESCAPE_SEQUENCES[34] = '\\"'; - ESCAPE_SEQUENCES[92] = "\\\\"; - ESCAPE_SEQUENCES[133] = "\\N"; - ESCAPE_SEQUENCES[160] = "\\_"; - ESCAPE_SEQUENCES[8232] = "\\L"; - ESCAPE_SEQUENCES[8233] = "\\P"; - var DEPRECATED_BOOLEANS_SYNTAX = [ "y", "Y", "yes", "Yes", "YES", "on", "On", "ON", "n", "N", "no", "No", "NO", "off", "Off", "OFF" ]; - var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; - function compileStyleMap(schema2, map2) { - if (map2 === null) return {}; - var result = {}; - var keys = Object.keys(map2); - for (var index = 0, length = keys.length; index < length; index += 1) { - var tag = keys[index]; - var style = String(map2[tag]); - if (tag.slice(0, 2) === "!!") { - tag = "tag:yaml.org,2002:" + tag.slice(2); - } - var type2 = schema2.compiledTypeMap["fallback"][tag]; - if (type2 && _hasOwnProperty.call(type2.styleAliases, style)) { - style = type2.styleAliases[style]; - } - result[tag] = style; - } - return result; - } - function encodeHex(character) { - var handle; - var length; - var string = character.toString(16).toUpperCase(); - if (character <= 255) { - handle = "x"; - length = 2; - } else if (character <= 65535) { - handle = "u"; - length = 4; - } else if (character <= 4294967295) { - handle = "U"; - length = 8; - } else { - throw new YAMLException2("code point within a string may not be greater than 0xFFFFFFFF"); - } - return "\\" + handle + common2.repeat("0", length - string.length) + string; - } - var QUOTING_TYPE_SINGLE = 1; - var QUOTING_TYPE_DOUBLE = 2; - function State(options) { - this.schema = options["schema"] || DEFAULT_SCHEMA2; - this.indent = Math.max(1, options["indent"] || 2); - this.noArrayIndent = options["noArrayIndent"] || false; - this.skipInvalid = options["skipInvalid"] || false; - this.flowLevel = common2.isNothing(options["flowLevel"]) ? -1 : options["flowLevel"]; - this.styleMap = compileStyleMap(this.schema, options["styles"] || null); - this.sortKeys = options["sortKeys"] || false; - this.lineWidth = options["lineWidth"] || 80; - this.noRefs = options["noRefs"] || false; - this.noCompatMode = options["noCompatMode"] || false; - this.condenseFlow = options["condenseFlow"] || false; - this.quotingType = options["quotingType"] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; - this.forceQuotes = options["forceQuotes"] || false; - this.replacer = typeof options["replacer"] === "function" ? options["replacer"] : null; - this.implicitTypes = this.schema.compiledImplicit; - this.explicitTypes = this.schema.compiledExplicit; - this.tag = null; - this.result = ""; - this.duplicates = []; - this.usedDuplicates = null; - } - function indentString(string, spaces) { - var ind = common2.repeat(" ", spaces); - var position = 0; - var result = ""; - var length = string.length; - while (position < length) { - var line = void 0; - var next = string.indexOf("\n", position); - if (next === -1) { - line = string.slice(position); - position = length; - } else { - line = string.slice(position, next + 1); - position = next + 1; - } - if (line.length && line !== "\n") result += ind; - result += line; - } - return result; - } - function generateNextLine(state, level) { - return "\n" + common2.repeat(" ", state.indent * level); - } - function testImplicitResolving(state, str2) { - for (var index = 0, length = state.implicitTypes.length; index < length; index += 1) { - var type2 = state.implicitTypes[index]; - if (type2.resolve(str2)) { - return true; - } - } - return false; - } - function isWhitespace(c) { - return c === CHAR_SPACE || c === CHAR_TAB; - } - function isPrintable(c) { - return c >= 32 && c <= 126 || c >= 161 && c <= 55295 && c !== 8232 && c !== 8233 || c >= 57344 && c <= 65533 && c !== CHAR_BOM || c >= 65536 && c <= 1114111; - } - function isNsCharOrWhitespace(c) { - return isPrintable(c) && c !== CHAR_BOM && c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED; - } - function isPlainSafe(c, prev, inblock) { - var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c); - var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c); - return (inblock ? cIsNsCharOrWhitespace : cIsNsCharOrWhitespace && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET) && c !== CHAR_SHARP && !(prev === CHAR_COLON && !cIsNsChar) || isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP || prev === CHAR_COLON && cIsNsChar; - } - function isPlainSafeFirst(c) { - return isPrintable(c) && c !== CHAR_BOM && !isWhitespace(c) && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT; - } - function isPlainSafeLast(c) { - return !isWhitespace(c) && c !== CHAR_COLON; - } - function codePointAt(string, pos) { - var first = string.charCodeAt(pos); - var second; - if (first >= 55296 && first <= 56319 && pos + 1 < string.length) { - second = string.charCodeAt(pos + 1); - if (second >= 56320 && second <= 57343) { - return (first - 55296) * 1024 + second - 56320 + 65536; - } - } - return first; - } - function needIndentIndicator(string) { - var leadingSpaceRe = /^\n* /; - return leadingSpaceRe.test(string); - } - var STYLE_PLAIN = 1; - var STYLE_SINGLE = 2; - var STYLE_LITERAL = 3; - var STYLE_FOLDED = 4; - var STYLE_DOUBLE = 5; - function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType, quotingType, forceQuotes, inblock) { - var i; - var char = 0; - var prevChar = null; - var hasLineBreak = false; - var hasFoldableLine = false; - var shouldTrackWidth = lineWidth !== -1; - var previousLineBreak = -1; - var plain = isPlainSafeFirst(codePointAt(string, 0)) && isPlainSafeLast(codePointAt(string, string.length - 1)); - if (singleLineOnly || forceQuotes) { - for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) { - char = codePointAt(string, i); - if (!isPrintable(char)) { - return STYLE_DOUBLE; - } - plain = plain && isPlainSafe(char, prevChar, inblock); - prevChar = char; - } - } else { - for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) { - char = codePointAt(string, i); - if (char === CHAR_LINE_FEED) { - hasLineBreak = true; - if (shouldTrackWidth) { - hasFoldableLine = hasFoldableLine || i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " "; - previousLineBreak = i; - } - } else if (!isPrintable(char)) { - return STYLE_DOUBLE; - } - plain = plain && isPlainSafe(char, prevChar, inblock); - prevChar = char; - } - hasFoldableLine = hasFoldableLine || shouldTrackWidth && i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " "; - } - if (!hasLineBreak && !hasFoldableLine) { - if (plain && !forceQuotes && !testAmbiguousType(string)) { - return STYLE_PLAIN; - } - return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; - } - if (indentPerLevel > 9 && needIndentIndicator(string)) { - return STYLE_DOUBLE; - } - if (!forceQuotes) { - return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; - } - return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; - } - function writeScalar(state, string, level, iskey, inblock) { - state.dump = function() { - if (string.length === 0) { - return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; - } - if (!state.noCompatMode) { - if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) { - return state.quotingType === QUOTING_TYPE_DOUBLE ? '"' + string + '"' : "'" + string + "'"; - } - } - var indent = state.indent * Math.max(1, level); - var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); - var singleLineOnly = iskey || state.flowLevel > -1 && level >= state.flowLevel; - function testAmbiguity(string2) { - return testImplicitResolving(state, string2); - } - switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) { - case STYLE_PLAIN: - return string; - - case STYLE_SINGLE: - return "'" + string.replace(/'/g, "''") + "'"; - - case STYLE_LITERAL: - return "|" + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent)); - - case STYLE_FOLDED: - return ">" + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); - - case STYLE_DOUBLE: - return '"' + escapeString(string) + '"'; - - default: - throw new YAMLException2("impossible error: invalid scalar style"); - } - }(); - } - function blockHeader(string, indentPerLevel) { - var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ""; - var clip = string[string.length - 1] === "\n"; - var keep = clip && (string[string.length - 2] === "\n" || string === "\n"); - var chomp = keep ? "+" : clip ? "" : "-"; - return indentIndicator + chomp + "\n"; - } - function dropEndingNewline(string) { - return string[string.length - 1] === "\n" ? string.slice(0, -1) : string; - } - function foldString(string, width) { - var lineRe = /(\n+)([^\n]*)/g; - var result = function() { - var nextLF = string.indexOf("\n"); - nextLF = nextLF !== -1 ? nextLF : string.length; - lineRe.lastIndex = nextLF; - return foldLine(string.slice(0, nextLF), width); - }(); - var prevMoreIndented = string[0] === "\n" || string[0] === " "; - var moreIndented; - var match; - while (match = lineRe.exec(string)) { - var prefix = match[1]; - var line = match[2]; - moreIndented = line[0] === " "; - result += prefix + (!prevMoreIndented && !moreIndented && line !== "" ? "\n" : "") + foldLine(line, width); - prevMoreIndented = moreIndented; - } - return result; - } - function foldLine(line, width) { - if (line === "" || line[0] === " ") return line; - var breakRe = / [^ ]/g; - var match; - var start = 0; - var end; - var curr = 0; - var next = 0; - var result = ""; - while (match = breakRe.exec(line)) { - next = match.index; - if (next - start > width) { - end = curr > start ? curr : next; - result += "\n" + line.slice(start, end); - start = end + 1; - } - curr = next; - } - result += "\n"; - if (line.length - start > width && curr > start) { - result += line.slice(start, curr) + "\n" + line.slice(curr + 1); - } else { - result += line.slice(start); - } - return result.slice(1); - } - function escapeString(string) { - var result = ""; - var char = 0; - for (var i = 0; i < string.length; char >= 65536 ? i += 2 : i++) { - char = codePointAt(string, i); - var escapeSeq = ESCAPE_SEQUENCES[char]; - if (!escapeSeq && isPrintable(char)) { - result += string[i]; - if (char >= 65536) result += string[i + 1]; - } else { - result += escapeSeq || encodeHex(char); - } - } - return result; - } - function writeFlowSequence(state, level, object) { - var _result = ""; - var _tag = state.tag; - for (var index = 0, length = object.length; index < length; index += 1) { - var value = object[index]; - if (state.replacer) { - value = state.replacer.call(object, String(index), value); - } - if (writeNode(state, level, value, false, false) || typeof value === "undefined" && writeNode(state, level, null, false, false)) { - if (_result !== "") _result += "," + (!state.condenseFlow ? " " : ""); - _result += state.dump; - } - } - state.tag = _tag; - state.dump = "[" + _result + "]"; - } - function writeBlockSequence(state, level, object, compact) { - var _result = ""; - var _tag = state.tag; - for (var index = 0, length = object.length; index < length; index += 1) { - var value = object[index]; - if (state.replacer) { - value = state.replacer.call(object, String(index), value); - } - if (writeNode(state, level + 1, value, true, true, false, true) || typeof value === "undefined" && writeNode(state, level + 1, null, true, true, false, true)) { - if (!compact || _result !== "") { - _result += generateNextLine(state, level); - } - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - _result += "-"; - } else { - _result += "- "; - } - _result += state.dump; - } - } - state.tag = _tag; - state.dump = _result || "[]"; - } - function writeFlowMapping(state, level, object) { - var _result = ""; - var _tag = state.tag; - var objectKeyList = Object.keys(object); - for (var index = 0, length = objectKeyList.length; index < length; index += 1) { - var pairBuffer = ""; - if (_result !== "") pairBuffer += ", "; - if (state.condenseFlow) pairBuffer += '"'; - var objectKey = objectKeyList[index]; - var objectValue = object[objectKey]; - if (state.replacer) { - objectValue = state.replacer.call(object, objectKey, objectValue); - } - if (!writeNode(state, level, objectKey, false, false)) { - continue; - } - if (state.dump.length > 1024) pairBuffer += "? "; - pairBuffer += state.dump + (state.condenseFlow ? '"' : "") + ":" + (state.condenseFlow ? "" : " "); - if (!writeNode(state, level, objectValue, false, false)) { - continue; - } - pairBuffer += state.dump; - _result += pairBuffer; - } - state.tag = _tag; - state.dump = "{" + _result + "}"; - } - function writeBlockMapping(state, level, object, compact) { - var _result = ""; - var _tag = state.tag; - var objectKeyList = Object.keys(object); - if (state.sortKeys === true) { - objectKeyList.sort(); - } else if (typeof state.sortKeys === "function") { - objectKeyList.sort(state.sortKeys); - } else if (state.sortKeys) { - throw new YAMLException2("sortKeys must be a boolean or a function"); - } - for (var index = 0, length = objectKeyList.length; index < length; index += 1) { - var pairBuffer = ""; - if (!compact || _result !== "") { - pairBuffer += generateNextLine(state, level); - } - var objectKey = objectKeyList[index]; - var objectValue = object[objectKey]; - if (state.replacer) { - objectValue = state.replacer.call(object, objectKey, objectValue); - } - if (!writeNode(state, level + 1, objectKey, true, true, true)) { - continue; - } - var explicitPair = state.tag !== null && state.tag !== "?" || state.dump && state.dump.length > 1024; - if (explicitPair) { - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += "?"; - } else { - pairBuffer += "? "; - } - } - pairBuffer += state.dump; - if (explicitPair) { - pairBuffer += generateNextLine(state, level); - } - if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { - continue; - } - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += ":"; - } else { - pairBuffer += ": "; - } - pairBuffer += state.dump; - _result += pairBuffer; - } - state.tag = _tag; - state.dump = _result || "{}"; - } - function detectType(state, object, explicit) { - var typeList = explicit ? state.explicitTypes : state.implicitTypes; - for (var index = 0, length = typeList.length; index < length; index += 1) { - var type2 = typeList[index]; - if ((type2.instanceOf || type2.predicate) && (!type2.instanceOf || _typeof(object) === "object" && object instanceof type2.instanceOf) && (!type2.predicate || type2.predicate(object))) { - if (explicit) { - if (type2.multi && type2.representName) { - state.tag = type2.representName(object); - } else { - state.tag = type2.tag; - } - } else { - state.tag = "?"; - } - if (type2.represent) { - var style = state.styleMap[type2.tag] || type2.defaultStyle; - var _result = void 0; - if (_toString.call(type2.represent) === "[object Function]") { - _result = type2.represent(object, style); - } else if (_hasOwnProperty.call(type2.represent, style)) { - _result = type2.represent[style](object, style); - } else { - throw new YAMLException2("!<" + type2.tag + '> tag resolver accepts not "' + style + '" style'); - } - state.dump = _result; - } - return true; - } - } - return false; - } - function writeNode(state, level, object, block, compact, iskey, isblockseq) { - state.tag = null; - state.dump = object; - if (!detectType(state, object, false)) { - detectType(state, object, true); - } - var type2 = _toString.call(state.dump); - var inblock = block; - if (block) { - block = state.flowLevel < 0 || state.flowLevel > level; - } - var objectOrArray = type2 === "[object Object]" || type2 === "[object Array]"; - var duplicateIndex; - var duplicate; - if (objectOrArray) { - duplicateIndex = state.duplicates.indexOf(object); - duplicate = duplicateIndex !== -1; - } - if (state.tag !== null && state.tag !== "?" || duplicate || state.indent !== 2 && level > 0) { - compact = false; - } - if (duplicate && state.usedDuplicates[duplicateIndex]) { - state.dump = "*ref_" + duplicateIndex; - } else { - if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { - state.usedDuplicates[duplicateIndex] = true; - } - if (type2 === "[object Object]") { - if (block && Object.keys(state.dump).length !== 0) { - writeBlockMapping(state, level, state.dump, compact); - if (duplicate) { - state.dump = "&ref_" + duplicateIndex + state.dump; - } - } else { - writeFlowMapping(state, level, state.dump); - if (duplicate) { - state.dump = "&ref_" + duplicateIndex + " " + state.dump; - } - } - } else if (type2 === "[object Array]") { - if (block && state.dump.length !== 0) { - if (state.noArrayIndent && !isblockseq && level > 0) { - writeBlockSequence(state, level - 1, state.dump, compact); - } else { - writeBlockSequence(state, level, state.dump, compact); - } - if (duplicate) { - state.dump = "&ref_" + duplicateIndex + state.dump; - } - } else { - writeFlowSequence(state, level, state.dump); - if (duplicate) { - state.dump = "&ref_" + duplicateIndex + " " + state.dump; - } - } - } else if (type2 === "[object String]") { - if (state.tag !== "?") { - writeScalar(state, state.dump, level, iskey, inblock); - } - } else if (type2 === "[object Undefined]") { - return false; - } else { - if (state.skipInvalid) return false; - throw new YAMLException2("unacceptable kind of an object to dump " + type2); - } - if (state.tag !== null && state.tag !== "?") { - var tagStr = encodeURI(state.tag[0] === "!" ? state.tag.slice(1) : state.tag).replace(/!/g, "%21"); - if (state.tag[0] === "!") { - tagStr = "!" + tagStr; - } else if (tagStr.slice(0, 18) === "tag:yaml.org,2002:") { - tagStr = "!!" + tagStr.slice(18); - } else { - tagStr = "!<" + tagStr + ">"; - } - state.dump = tagStr + " " + state.dump; - } - } - return true; - } - function getDuplicateReferences(object, state) { - var objects = []; - var duplicatesIndexes = []; - inspectNode(object, objects, duplicatesIndexes); - var length = duplicatesIndexes.length; - for (var index = 0; index < length; index += 1) { - state.duplicates.push(objects[duplicatesIndexes[index]]); - } - state.usedDuplicates = new Array(length); - } - function inspectNode(object, objects, duplicatesIndexes) { - if (object !== null && _typeof(object) === "object") { - var index = objects.indexOf(object); - if (index !== -1) { - if (duplicatesIndexes.indexOf(index) === -1) { - duplicatesIndexes.push(index); - } - } else { - objects.push(object); - if (Array.isArray(object)) { - for (var i = 0, length = object.length; i < length; i += 1) { - inspectNode(object[i], objects, duplicatesIndexes); - } - } else { - var objectKeyList = Object.keys(object); - for (var _i = 0, _length = objectKeyList.length; _i < _length; _i += 1) { - inspectNode(object[objectKeyList[_i]], objects, duplicatesIndexes); - } - } - } - } - } - function dump2(input, options) { - options = options || {}; - var state = new State(options); - if (!state.noRefs) getDuplicateReferences(input, state); - var value = input; - if (state.replacer) { - value = state.replacer.call({ - "": value - }, "", value); - } - if (writeNode(state, 0, value, true, true)) return state.dump + "\n"; - return ""; - } - dumper.dump = dump2; - return dumper; - } - var hasRequiredJsYaml; - function requireJsYaml() { - if (hasRequiredJsYaml) return jsYaml; - hasRequiredJsYaml = 1; - var loader2 = requireLoader(); - var dumper2 = requireDumper(); - function renamed(from, to) { - return function() { - throw new Error("Function yaml." + from + " is removed in js-yaml 4. Use yaml." + to + " instead, which is now safe by default."); - }; - } - jsYaml.Type = requireType(); - jsYaml.Schema = requireSchema(); - jsYaml.FAILSAFE_SCHEMA = requireFailsafe(); - jsYaml.JSON_SCHEMA = requireJson(); - jsYaml.CORE_SCHEMA = requireCore(); - jsYaml.DEFAULT_SCHEMA = require_default(); - jsYaml.load = loader2.load; - jsYaml.loadAll = loader2.loadAll; - jsYaml.dump = dumper2.dump; - jsYaml.YAMLException = requireException(); - jsYaml.types = { - binary: requireBinary(), - float: requireFloat(), - map: requireMap(), - null: require_null(), - pairs: requirePairs(), - set: requireSet(), - timestamp: requireTimestamp(), - bool: requireBool(), - int: requireInt(), - merge: requireMerge(), - omap: requireOmap(), - seq: requireSeq(), - str: requireStr() - }; - jsYaml.safeLoad = renamed("safeLoad", "load"); - jsYaml.safeLoadAll = renamed("safeLoadAll", "loadAll"); - jsYaml.safeDump = renamed("safeDump", "dump"); - return jsYaml; - } - var jsYamlExports = requireJsYaml(); - var yaml = getDefaultExportFromCjs(jsYamlExports); - var Type = yaml.Type, Schema = yaml.Schema, FAILSAFE_SCHEMA = yaml.FAILSAFE_SCHEMA, JSON_SCHEMA = yaml.JSON_SCHEMA, CORE_SCHEMA = yaml.CORE_SCHEMA, DEFAULT_SCHEMA = yaml.DEFAULT_SCHEMA, load = yaml.load, loadAll = yaml.loadAll, dump = yaml.dump, YAMLException = yaml.YAMLException, types = yaml.types, safeLoad = yaml.safeLoad, safeLoadAll = yaml.safeLoadAll, safeDump = yaml.safeDump; - exports2.CORE_SCHEMA = CORE_SCHEMA; - exports2.DEFAULT_SCHEMA = DEFAULT_SCHEMA; - exports2.FAILSAFE_SCHEMA = FAILSAFE_SCHEMA; - exports2.JSON_SCHEMA = JSON_SCHEMA; - exports2.Schema = Schema; - exports2.Type = Type; - exports2.YAMLException = YAMLException; - exports2.default = yaml; - exports2.dump = dump; - exports2.load = load; - exports2.loadAll = loadAll; - exports2.safeDump = safeDump; - exports2.safeLoad = safeLoad; - exports2.safeLoadAll = safeLoadAll; - exports2.types = types; - Object.defineProperty(exports2, "__esModule", { - value: true - }); -}); -//# sourceMappingURL=js-yaml.js.map diff --git a/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.js.map b/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.js.map deleted file mode 100644 index dbf995d..0000000 --- a/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js-yaml.js","sources":["../lib/common.js","../lib/exception.js","../lib/snippet.js","../lib/type.js","../lib/schema.js","../lib/type/str.js","../lib/type/seq.js","../lib/type/map.js","../lib/schema/failsafe.js","../lib/type/null.js","../lib/type/bool.js","../lib/type/int.js","../lib/type/float.js","../lib/schema/json.js","../lib/schema/core.js","../lib/type/timestamp.js","../lib/type/merge.js","../lib/type/binary.js","../lib/type/omap.js","../lib/type/pairs.js","../lib/type/set.js","../lib/schema/default.js","../lib/loader.js","../lib/dumper.js","../index.js","../lib/index_vite_proxy.tmp.mjs"],"sourcesContent":["'use strict'\n\nfunction isNothing (subject) {\n return (typeof subject === 'undefined') || (subject === null)\n}\n\nfunction isObject (subject) {\n return (typeof subject === 'object') && (subject !== null)\n}\n\nfunction toArray (sequence) {\n if (Array.isArray(sequence)) return sequence\n else if (isNothing(sequence)) return []\n\n return [sequence]\n}\n\nfunction extend (target, source) {\n if (source) {\n const sourceKeys = Object.keys(source)\n\n for (let index = 0, length = sourceKeys.length; index < length; index += 1) {\n const key = sourceKeys[index]\n target[key] = source[key]\n }\n }\n\n return target\n}\n\nfunction repeat (string, count) {\n let result = ''\n\n for (let cycle = 0; cycle < count; cycle += 1) {\n result += string\n }\n\n return result\n}\n\nfunction isNegativeZero (number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number)\n}\n\nmodule.exports.isNothing = isNothing\nmodule.exports.isObject = isObject\nmodule.exports.toArray = toArray\nmodule.exports.repeat = repeat\nmodule.exports.isNegativeZero = isNegativeZero\nmodule.exports.extend = extend\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict'\n\nfunction formatError (exception, compact) {\n let where = ''\n const message = exception.reason || '(unknown reason)'\n\n if (!exception.mark) return message\n\n if (exception.mark.name) {\n where += 'in \"' + exception.mark.name + '\" '\n }\n\n where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')'\n\n if (!compact && exception.mark.snippet) {\n where += '\\n\\n' + exception.mark.snippet\n }\n\n return message + ' ' + where\n}\n\nfunction YAMLException (reason, mark) {\n // Super constructor\n Error.call(this)\n\n this.name = 'YAMLException'\n this.reason = reason\n this.mark = mark\n this.message = formatError(this, false)\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor)\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || ''\n }\n}\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype)\nYAMLException.prototype.constructor = YAMLException\n\nYAMLException.prototype.toString = function toString (compact) {\n return this.name + ': ' + formatError(this, compact)\n}\n\nmodule.exports = YAMLException\n","'use strict'\n\nconst common = require('./common')\n\n// get snippet for a single line, respecting maxLength\nfunction getLine (buffer, lineStart, lineEnd, position, maxLineLength) {\n let head = ''\n let tail = ''\n const maxHalfLength = Math.floor(maxLineLength / 2) - 1\n\n if (position - lineStart > maxHalfLength) {\n head = ' ... '\n lineStart = position - maxHalfLength + head.length\n }\n\n if (lineEnd - position > maxHalfLength) {\n tail = ' ...'\n lineEnd = position + maxHalfLength - tail.length\n }\n\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n pos: position - lineStart + head.length // relative position\n }\n}\n\nfunction padStart (string, max) {\n return common.repeat(' ', max - string.length) + string\n}\n\nfunction makeSnippet (mark, options) {\n options = Object.create(options || null)\n\n if (!mark.buffer) return null\n\n if (!options.maxLength) options.maxLength = 79\n if (typeof options.indent !== 'number') options.indent = 1\n if (typeof options.linesBefore !== 'number') options.linesBefore = 3\n if (typeof options.linesAfter !== 'number') options.linesAfter = 2\n\n const re = /\\r?\\n|\\r|\\0/g\n const lineStarts = [0]\n const lineEnds = []\n let match\n let foundLineNo = -1\n\n while ((match = re.exec(mark.buffer))) {\n lineEnds.push(match.index)\n lineStarts.push(match.index + match[0].length)\n\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2\n }\n }\n\n if (foundLineNo < 0) foundLineNo = lineStarts.length - 1\n\n let result = ''\n const lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length\n const maxLineLength = options.maxLength - (options.indent + lineNoLength + 3)\n\n for (let i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0) break\n const line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n )\n result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n' + result\n }\n\n const line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength)\n result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n'\n result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n'\n\n for (let i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length) break\n const line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n )\n result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n'\n }\n\n return result.replace(/\\n$/, '')\n}\n\nmodule.exports = makeSnippet\n","'use strict'\n\nconst YAMLException = require('./exception')\n\nconst TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'multi',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'representName',\n 'defaultStyle',\n 'styleAliases'\n]\n\nconst YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n]\n\nfunction compileStyleAliases (map) {\n const result = {}\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style\n })\n })\n }\n\n return result\n}\n\nfunction Type (tag, options) {\n options = options || {}\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.')\n }\n })\n\n // TODO: Add tag format check.\n this.options = options // keep original options in case user wants to extend this type later\n this.tag = tag\n this.kind = options['kind'] || null\n this.resolve = options['resolve'] || function () { return true }\n this.construct = options['construct'] || function (data) { return data }\n this.instanceOf = options['instanceOf'] || null\n this.predicate = options['predicate'] || null\n this.represent = options['represent'] || null\n this.representName = options['representName'] || null\n this.defaultStyle = options['defaultStyle'] || null\n this.multi = options['multi'] || false\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null)\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.')\n }\n}\n\nmodule.exports = Type\n","'use strict'\n\nconst YAMLException = require('./exception')\nconst Type = require('./type')\n\nfunction compileList (schema, name) {\n const result = []\n\n schema[name].forEach(function (currentType) {\n let newIndex = result.length\n\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag &&\n previousType.kind === currentType.kind &&\n previousType.multi === currentType.multi) {\n newIndex = previousIndex\n }\n })\n\n result[newIndex] = currentType\n })\n\n return result\n}\n\nfunction compileMap (/* lists... */) {\n const result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }\n function collectType (type) {\n if (type.multi) {\n result.multi[type.kind].push(type)\n result.multi['fallback'].push(type)\n } else {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type\n }\n }\n\n for (let index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType)\n }\n return result\n}\n\nfunction Schema (definition) {\n return this.extend(definition)\n}\n\nSchema.prototype.extend = function extend (definition) {\n let implicit = []\n let explicit = []\n\n if (definition instanceof Type) {\n // Schema.extend(type)\n explicit.push(definition)\n } else if (Array.isArray(definition)) {\n // Schema.extend([ type1, type2, ... ])\n explicit = explicit.concat(definition)\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n if (definition.implicit) implicit = implicit.concat(definition.implicit)\n if (definition.explicit) explicit = explicit.concat(definition.explicit)\n } else {\n throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' +\n 'or a schema definition ({ implicit: [...], explicit: [...] })')\n }\n\n implicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.')\n }\n\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.')\n }\n\n if (type.multi) {\n throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.')\n }\n })\n\n explicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.')\n }\n })\n\n const result = Object.create(Schema.prototype)\n\n result.implicit = (this.implicit || []).concat(implicit)\n result.explicit = (this.explicit || []).concat(explicit)\n\n result.compiledImplicit = compileList(result, 'implicit')\n result.compiledExplicit = compileList(result, 'explicit')\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit)\n\n return result\n}\n\nmodule.exports = Schema\n","'use strict'\n\nconst Type = require('../type')\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : '' }\n})\n","'use strict'\n\nconst Type = require('../type')\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : [] }\n})\n","'use strict'\n\nconst Type = require('../type')\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {} }\n})\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n'use strict'\n\nconst Schema = require('../schema')\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n})\n","'use strict'\n\nconst Type = require('../type')\n\nfunction resolveYamlNull (data) {\n if (data === null) return true\n\n const max = data.length\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'))\n}\n\nfunction constructYamlNull () {\n return null\n}\n\nfunction isNull (object) {\n return object === null\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~' },\n lowercase: function () { return 'null' },\n uppercase: function () { return 'NULL' },\n camelcase: function () { return 'Null' },\n empty: function () { return '' }\n },\n defaultStyle: 'lowercase'\n})\n","'use strict'\n\nconst Type = require('../type')\n\nfunction resolveYamlBoolean (data) {\n if (data === null) return false\n\n const max = data.length\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'))\n}\n\nfunction constructYamlBoolean (data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE'\n}\n\nfunction isBoolean (object) {\n return Object.prototype.toString.call(object) === '[object Boolean]'\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false' },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE' },\n camelcase: function (object) { return object ? 'True' : 'False' }\n },\n defaultStyle: 'lowercase'\n})\n","'use strict'\n\nconst common = require('../common')\nconst Type = require('../type')\n\nfunction isHexCode (c) {\n return ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) ||\n ((c >= 0x41/* A */) && (c <= 0x46/* F */)) ||\n ((c >= 0x61/* a */) && (c <= 0x66/* f */))\n}\n\nfunction isOctCode (c) {\n return ((c >= 0x30/* 0 */) && (c <= 0x37/* 7 */))\n}\n\nfunction isDecCode (c) {\n return ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */))\n}\n\nfunction resolveYamlInteger (data) {\n if (data === null) return false\n\n const max = data.length\n let index = 0\n let hasDigits = false\n\n if (!max) return false\n\n let ch = data[index]\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index]\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true\n ch = data[++index]\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++\n\n for (; index < max; index++) {\n ch = data[index]\n if (ch !== '0' && ch !== '1') return false\n hasDigits = true\n }\n return hasDigits && isFinite(parseYamlInteger(data))\n }\n\n if (ch === 'x') {\n // base 16\n index++\n\n for (; index < max; index++) {\n if (!isHexCode(data.charCodeAt(index))) return false\n hasDigits = true\n }\n return hasDigits && isFinite(parseYamlInteger(data))\n }\n\n if (ch === 'o') {\n // base 8\n index++\n\n for (; index < max; index++) {\n if (!isOctCode(data.charCodeAt(index))) return false\n hasDigits = true\n }\n return hasDigits && isFinite(parseYamlInteger(data))\n }\n }\n\n // base 10 (except 0)\n\n for (; index < max; index++) {\n if (!isDecCode(data.charCodeAt(index))) {\n return false\n }\n hasDigits = true\n }\n\n if (!hasDigits) return false\n\n return isFinite(parseYamlInteger(data))\n}\n\nfunction parseYamlInteger (data) {\n let value = data\n let sign = 1\n\n let ch = value[0]\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1\n value = value.slice(1)\n ch = value[0]\n }\n\n if (value === '0') return 0\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2)\n if (value[1] === 'x') return sign * parseInt(value.slice(2), 16)\n if (value[1] === 'o') return sign * parseInt(value.slice(2), 8)\n }\n\n return sign * parseInt(value, 10)\n}\n\nfunction constructYamlInteger (data) {\n return parseYamlInteger(data)\n}\n\nfunction isInteger (object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object))\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1) },\n octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1) },\n decimal: function (obj) { return obj.toString(10) },\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1) }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [2, 'bin'],\n octal: [8, 'oct'],\n decimal: [10, 'dec'],\n hexadecimal: [16, 'hex']\n }\n})\n","'use strict'\n\nconst common = require('../common')\nconst Type = require('../type')\n\nconst YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:[0-9]+)(?:\\\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9]+(?:[eE][-+]?[0-9]+)?' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$')\n\nconst YAML_FLOAT_SPECIAL_PATTERN = new RegExp(\n '^(?:' +\n // .inf\n '[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$')\n\nfunction resolveYamlFloat (data) {\n if (data === null) return false\n\n if (!YAML_FLOAT_PATTERN.test(data)) {\n return false\n }\n\n if (isFinite(parseFloat(data, 10))) {\n return true\n }\n\n return YAML_FLOAT_SPECIAL_PATTERN.test(data)\n}\n\nfunction constructYamlFloat (data) {\n let value = data.toLowerCase()\n const sign = value[0] === '-' ? -1 : 1\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1)\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY\n } else if (value === '.nan') {\n return NaN\n }\n return sign * parseFloat(value, 10)\n}\n\nconst SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/\n\nfunction representYamlFloat (object, style) {\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan'\n case 'uppercase': return '.NAN'\n case 'camelcase': return '.NaN'\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf'\n case 'uppercase': return '.INF'\n case 'camelcase': return '.Inf'\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf'\n case 'uppercase': return '-.INF'\n case 'camelcase': return '-.Inf'\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0'\n }\n\n const res = object.toString(10)\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res\n}\n\nfunction isFloat (object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object))\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n})\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n'use strict'\n\nmodule.exports = require('./failsafe').extend({\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n})\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n'use strict'\n\nmodule.exports = require('./json')\n","'use strict'\n\nconst Type = require('../type')\n\nconst YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$') // [3] day\n\nconst YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tzHour\n '(?::([0-9][0-9]))?))?$') // [11] tzMinute\n\nfunction resolveYamlTimestamp (data) {\n if (data === null) return false\n if (YAML_DATE_REGEXP.exec(data) !== null) return true\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true\n return false\n}\n\nfunction constructYamlTimestamp (data) {\n let fraction = 0\n let delta = null\n\n let match = YAML_DATE_REGEXP.exec(data)\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data)\n\n if (match === null) throw new Error('Date resolve error')\n\n // match: [1] year [2] month [3] day\n\n const year = +(match[1])\n const month = +(match[2]) - 1 // JS month starts with 0\n const day = +(match[3])\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day))\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n const hour = +(match[4])\n const minute = +(match[5])\n const second = +(match[6])\n\n if (match[7]) {\n fraction = match[7].slice(0, 3)\n while (fraction.length < 3) { // milli-seconds\n fraction += '0'\n }\n fraction = +fraction\n }\n\n // match: [8] tz [9] tz_sign [10] tzHour [11] tzMinute\n\n if (match[9]) {\n const tzHour = +(match[10])\n const tzMinute = +(match[11] || 0)\n delta = (tzHour * 60 + tzMinute) * 60000 // delta in mili-seconds\n if (match[9] === '-') delta = -delta\n }\n\n const date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction))\n\n if (delta) date.setTime(date.getTime() - delta)\n\n return date\n}\n\nfunction representYamlTimestamp (object /*, style */) {\n return object.toISOString()\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n})\n","'use strict'\n\nconst Type = require('../type')\n\nfunction resolveYamlMerge (data) {\n return data === '<<' || data === null\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n})\n","'use strict'\n\nconst Type = require('../type')\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nconst BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r'\n\nfunction resolveYamlBinary (data) {\n if (data === null) return false\n\n let bitlen = 0\n const max = data.length\n const map = BASE64_MAP\n\n // Convert one by one.\n for (let idx = 0; idx < max; idx++) {\n const code = map.indexOf(data.charAt(idx))\n\n // Skip CR/LF\n if (code > 64) continue\n\n // Fail on illegal characters\n if (code < 0) return false\n\n bitlen += 6\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0\n}\n\nfunction constructYamlBinary (data) {\n const input = data.replace(/[\\r\\n=]/g, '') // remove CR/LF & padding to simplify scan\n const max = input.length\n const map = BASE64_MAP\n let bits = 0\n const result = []\n\n // Collect by 6*4 bits (3 bytes)\n\n for (let idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF)\n result.push((bits >> 8) & 0xFF)\n result.push(bits & 0xFF)\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx))\n }\n\n // Dump tail\n\n const tailbits = (max % 4) * 6\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF)\n result.push((bits >> 8) & 0xFF)\n result.push(bits & 0xFF)\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF)\n result.push((bits >> 2) & 0xFF)\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF)\n }\n\n return new Uint8Array(result)\n}\n\nfunction representYamlBinary (object /*, style */) {\n let result = ''\n let bits = 0\n const max = object.length\n const map = BASE64_MAP\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (let idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F]\n result += map[(bits >> 12) & 0x3F]\n result += map[(bits >> 6) & 0x3F]\n result += map[bits & 0x3F]\n }\n\n bits = (bits << 8) + object[idx]\n }\n\n // Dump tail\n\n const tail = max % 3\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F]\n result += map[(bits >> 12) & 0x3F]\n result += map[(bits >> 6) & 0x3F]\n result += map[bits & 0x3F]\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F]\n result += map[(bits >> 4) & 0x3F]\n result += map[(bits << 2) & 0x3F]\n result += map[64]\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F]\n result += map[(bits << 4) & 0x3F]\n result += map[64]\n result += map[64]\n }\n\n return result\n}\n\nfunction isBinary (obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]'\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n})\n","'use strict'\n\nconst Type = require('../type')\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\nconst _toString = Object.prototype.toString\n\nfunction resolveYamlOmap (data) {\n if (data === null) return true\n\n const objectKeys = {}\n const object = data\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n const pair = object[index]\n let pairHasKey = false\n\n if (_toString.call(pair) !== '[object Object]') return false\n\n let pairKey\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true\n else return false\n }\n }\n\n if (!pairHasKey) return false\n\n if (_hasOwnProperty.call(objectKeys, pairKey)) return false\n Object.defineProperty(objectKeys, pairKey, { value: true })\n }\n\n return true\n}\n\nfunction constructYamlOmap (data) {\n return data !== null ? data : []\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n})\n","'use strict'\n\nconst Type = require('../type')\n\nconst _toString = Object.prototype.toString\n\nfunction resolveYamlPairs (data) {\n if (data === null) return true\n\n const object = data\n\n const result = new Array(object.length)\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n const pair = object[index]\n\n if (_toString.call(pair) !== '[object Object]') return false\n\n const keys = Object.keys(pair)\n\n if (keys.length !== 1) return false\n\n result[index] = [keys[0], pair[keys[0]]]\n }\n\n return true\n}\n\nfunction constructYamlPairs (data) {\n if (data === null) return []\n\n const object = data\n const result = new Array(object.length)\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n const pair = object[index]\n\n const keys = Object.keys(pair)\n\n result[index] = [keys[0], pair[keys[0]]]\n }\n\n return result\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n})\n","'use strict'\n\nconst Type = require('../type')\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction resolveYamlSet (data) {\n if (data === null) return true\n\n const object = data\n\n for (const key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false\n }\n }\n\n return true\n}\n\nfunction constructYamlSet (data) {\n return data !== null ? data : {}\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n})\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n'use strict'\n\nmodule.exports = require('./core').extend({\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n})\n","'use strict'\n\nconst common = require('./common')\nconst YAMLException = require('./exception')\nconst makeSnippet = require('./snippet')\nconst DEFAULT_SCHEMA = require('./schema/default')\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nconst CONTEXT_FLOW_IN = 1\nconst CONTEXT_FLOW_OUT = 2\nconst CONTEXT_BLOCK_IN = 3\nconst CONTEXT_BLOCK_OUT = 4\n\nconst CHOMPING_CLIP = 1\nconst CHOMPING_STRIP = 2\nconst CHOMPING_KEEP = 3\n\n// eslint-disable-next-line no-control-regex\nconst PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/\nconst PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/\n// eslint-disable-next-line no-useless-escape\nconst PATTERN_FLOW_INDICATORS = /[,\\[\\]{}]/\n// eslint-disable-next-line no-useless-escape\nconst PATTERN_TAG_HANDLE = /^(?:!|!!|![0-9A-Za-z-]+!)$/\n// eslint-disable-next-line no-useless-escape\nconst PATTERN_TAG_URI = /^(?:!|[^,\\[\\]{}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;/?:@&=+$,_.!~*'()\\[\\]])*$/i\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\n\nfunction isEol (c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */)\n}\n\nfunction isWhiteSpace (c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */)\n}\n\nfunction isWsOrEol (c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */)\n}\n\nfunction isFlowIndicator (c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */\n}\n\nfunction fromHexCode (c) {\n if ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) {\n return c - 0x30\n }\n\n const lc = c | 0x20\n\n if ((lc >= 0x61/* a */) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10\n }\n\n return -1\n}\n\nfunction escapedHexLen (c) {\n if (c === 0x78/* x */) { return 2 }\n if (c === 0x75/* u */) { return 4 }\n if (c === 0x55/* U */) { return 8 }\n return 0\n}\n\nfunction fromDecimalCode (c) {\n if ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) {\n return c - 0x30\n }\n\n return -1\n}\n\nfunction simpleEscapeSequence (c) {\n switch (c) {\n case 0x30/* 0 */: return '\\x00'\n case 0x61/* a */: return '\\x07'\n case 0x62/* b */: return '\\x08'\n case 0x74/* t */: return '\\x09'\n case 0x09/* Tab */: return '\\x09'\n case 0x6E/* n */: return '\\x0A'\n case 0x76/* v */: return '\\x0B'\n case 0x66/* f */: return '\\x0C'\n case 0x72/* r */: return '\\x0D'\n case 0x65/* e */: return '\\x1B'\n case 0x20/* Space */: return ' '\n case 0x22/* \" */: return '\\x22'\n case 0x2F/* / */: return '/'\n case 0x5C/* \\ */: return '\\x5C'\n case 0x4E/* N */: return '\\x85'\n case 0x5F/* _ */: return '\\xA0'\n case 0x4C/* L */: return '\\u2028'\n case 0x50/* P */: return '\\u2029'\n default: return ''\n }\n}\n\nfunction charFromCodepoint (c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c)\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n )\n}\n\n// set a property of a literal object, while protecting against prototype pollution,\n// see https://github.com/nodeca/js-yaml/issues/164 for more details\nfunction setProperty (object, key, value) {\n // used for this specific key only because Object.defineProperty is slow\n if (key === '__proto__') {\n Object.defineProperty(object, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: value\n })\n } else {\n object[key] = value\n }\n}\n\nconst simpleEscapeCheck = new Array(256) // integer, for fast access\nconst simpleEscapeMap = new Array(256)\nfor (let i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0\n simpleEscapeMap[i] = simpleEscapeSequence(i)\n}\n\nfunction State (input, options) {\n this.input = input\n\n this.filename = options['filename'] || null\n this.schema = options['schema'] || DEFAULT_SCHEMA\n this.onWarning = options['onWarning'] || null\n // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n // if such documents have no explicit %YAML directive\n this.legacy = options['legacy'] || false\n\n this.json = options['json'] || false\n this.listener = options['listener'] || null\n this.maxDepth = typeof options['maxDepth'] === 'number' ? options['maxDepth'] : 100\n this.maxTotalMergeKeys = typeof options['maxTotalMergeKeys'] === 'number' ? options['maxTotalMergeKeys'] : 10000\n\n this.implicitTypes = this.schema.compiledImplicit\n this.typeMap = this.schema.compiledTypeMap\n\n this.length = input.length\n this.position = 0\n this.line = 0\n this.lineStart = 0\n this.lineIndent = 0\n this.depth = 0\n this.totalMergeKeys = 0\n\n // position of first leading tab in the current line,\n // used to make sure there are no tabs in the indentation\n this.firstTabInLine = -1\n\n this.documents = []\n this.anchorMapTransactions = []\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result; */\n}\n\nfunction generateError (state, message) {\n const mark = {\n name: state.filename,\n buffer: state.input.slice(0, -1), // omit trailing \\0\n position: state.position,\n line: state.line,\n column: state.position - state.lineStart\n }\n\n mark.snippet = makeSnippet(mark)\n\n return new YAMLException(message, mark)\n}\n\nfunction throwError (state, message) {\n throw generateError(state, message)\n}\n\nfunction throwWarning (state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message))\n }\n}\n\nfunction storeAnchor (state, name, value) {\n const transactions = state.anchorMapTransactions\n\n if (transactions.length !== 0) {\n const transaction = transactions[transactions.length - 1]\n\n if (!_hasOwnProperty.call(transaction, name)) {\n transaction[name] = {\n existed: _hasOwnProperty.call(state.anchorMap, name),\n value: state.anchorMap[name]\n }\n }\n }\n\n state.anchorMap[name] = value\n}\n\nfunction beginAnchorTransaction (state) {\n state.anchorMapTransactions.push(Object.create(null))\n}\n\nfunction commitAnchorTransaction (state) {\n const transaction = state.anchorMapTransactions.pop()\n const transactions = state.anchorMapTransactions\n\n if (transactions.length === 0) return\n\n const parent = transactions[transactions.length - 1]\n const names = Object.keys(transaction)\n\n for (let index = 0, length = names.length; index < length; index += 1) {\n const name = names[index]\n\n if (!_hasOwnProperty.call(parent, name)) {\n parent[name] = transaction[name]\n }\n }\n}\n\nfunction rollbackAnchorTransaction (state) {\n const transaction = state.anchorMapTransactions.pop()\n const names = Object.keys(transaction)\n\n for (let index = names.length - 1; index >= 0; index -= 1) {\n const entry = transaction[names[index]]\n\n if (entry.existed) {\n state.anchorMap[names[index]] = entry.value\n } else {\n delete state.anchorMap[names[index]]\n }\n }\n}\n\nfunction snapshotState (state) {\n return {\n position: state.position,\n line: state.line,\n lineStart: state.lineStart,\n lineIndent: state.lineIndent,\n firstTabInLine: state.firstTabInLine,\n tag: state.tag,\n anchor: state.anchor,\n kind: state.kind,\n result: state.result\n }\n}\n\nfunction restoreState (state, snapshot) {\n state.position = snapshot.position\n state.line = snapshot.line\n state.lineStart = snapshot.lineStart\n state.lineIndent = snapshot.lineIndent\n state.firstTabInLine = snapshot.firstTabInLine\n state.tag = snapshot.tag\n state.anchor = snapshot.anchor\n state.kind = snapshot.kind\n state.result = snapshot.result\n}\n\nconst directiveHandlers = {\n\n YAML: function handleYamlDirective (state, name, args) {\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive')\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument')\n }\n\n const match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0])\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive')\n }\n\n const major = parseInt(match[1], 10)\n const minor = parseInt(match[2], 10)\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document')\n }\n\n state.version = args[0]\n state.checkLineBreaks = (minor < 2)\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document')\n }\n },\n\n TAG: function handleTagDirective (state, name, args) {\n let prefix\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments')\n }\n\n const handle = args[0]\n prefix = args[1]\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive')\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle')\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive')\n }\n\n try {\n prefix = decodeURIComponent(prefix)\n } catch (err) {\n throwError(state, 'tag prefix is malformed: ' + prefix)\n }\n\n state.tagMap[handle] = prefix\n }\n}\n\nfunction captureSegment (state, start, end, checkJson) {\n if (start < end) {\n const _result = state.input.slice(start, end)\n\n if (checkJson) {\n for (let _position = 0, _length = _result.length; _position < _length; _position += 1) {\n const _character = _result.charCodeAt(_position)\n if (!(_character === 0x09 ||\n (_character >= 0x20 && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character')\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters')\n }\n\n state.result += _result\n }\n}\n\nfunction chargeMergeWork (state) {\n state.totalMergeKeys++\n\n if (state.maxTotalMergeKeys !== -1 && state.totalMergeKeys > state.maxTotalMergeKeys) {\n throwError(state, 'merge keys exceeded maxTotalMergeKeys (' + state.maxTotalMergeKeys + ')')\n }\n}\n\nfunction mergeMappings (state, destination, source, overridableKeys) {\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable')\n }\n\n // Count the source mapping itself to bound sequences of empty mappings.\n chargeMergeWork(state)\n\n const sourceKeys = Object.keys(source)\n\n for (let index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n const key = sourceKeys[index]\n\n chargeMergeWork(state)\n\n if (!_hasOwnProperty.call(destination, key)) {\n setProperty(destination, key, source[key])\n overridableKeys[key] = true\n }\n }\n}\n\nfunction storeMappingPair (state, _result, overridableKeys, keyTag, keyNode, valueNode,\n startLine, startLineStart, startPos) {\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode)\n\n for (let index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys')\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]'\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]'\n }\n\n keyNode = String(keyNode)\n\n if (_result === null) {\n _result = {}\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n if (valueNode.length > 100) {\n throwError(state, 'abnormal merge sequence size')\n }\n\n for (let index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys)\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys)\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line\n state.lineStart = startLineStart || state.lineStart\n state.position = startPos || state.position\n throwError(state, 'duplicated mapping key')\n }\n\n setProperty(_result, keyNode, valueNode)\n delete overridableKeys[keyNode]\n }\n\n return _result\n}\n\nfunction readLineBreak (state) {\n const ch = state.input.charCodeAt(state.position)\n\n if (ch === 0x0A/* LF */) {\n state.position++\n } else if (ch === 0x0D/* CR */) {\n state.position++\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++\n }\n } else {\n throwError(state, 'a line break is expected')\n }\n\n state.line += 1\n state.lineStart = state.position\n state.firstTabInLine = -1\n}\n\nfunction skipSeparationSpace (state, allowComments, checkIndent) {\n let lineBreaks = 0\n let ch = state.input.charCodeAt(state.position)\n\n while (ch !== 0) {\n while (isWhiteSpace(ch)) {\n if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n state.firstTabInLine = state.position\n }\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position)\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0)\n }\n\n if (isEol(ch)) {\n readLineBreak(state)\n\n ch = state.input.charCodeAt(state.position)\n lineBreaks++\n state.lineIndent = 0\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++\n ch = state.input.charCodeAt(++state.position)\n }\n } else {\n break\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation')\n }\n\n return lineBreaks\n}\n\nfunction testDocumentSeparator (state) {\n let _position = state.position\n let ch = state.input.charCodeAt(_position)\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n _position += 3\n\n ch = state.input.charCodeAt(_position)\n\n if (ch === 0 || isWsOrEol(ch)) {\n return true\n }\n }\n\n return false\n}\n\nfunction writeFoldedLines (state, count) {\n if (count === 1) {\n state.result += ' '\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1)\n }\n}\n\nfunction readPlainScalar (state, nodeIndent, withinFlowCollection) {\n let captureStart\n let captureEnd\n let hasPendingContent\n let _line\n let _lineStart\n let _lineIndent\n const _kind = state.kind\n const _result = state.result\n\n let ch = state.input.charCodeAt(state.position)\n\n if (isWsOrEol(ch) ||\n isFlowIndicator(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n const following = state.input.charCodeAt(state.position + 1)\n\n if (isWsOrEol(following) ||\n (withinFlowCollection && isFlowIndicator(following))) {\n return false\n }\n }\n\n state.kind = 'scalar'\n state.result = ''\n captureStart = captureEnd = state.position\n hasPendingContent = false\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n const following = state.input.charCodeAt(state.position + 1)\n\n if (isWsOrEol(following) ||\n (withinFlowCollection && isFlowIndicator(following))) {\n break\n }\n } else if (ch === 0x23/* # */) {\n const preceding = state.input.charCodeAt(state.position - 1)\n\n if (isWsOrEol(preceding)) {\n break\n }\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n (withinFlowCollection && isFlowIndicator(ch))) {\n break\n } else if (isEol(ch)) {\n _line = state.line\n _lineStart = state.lineStart\n _lineIndent = state.lineIndent\n skipSeparationSpace(state, false, -1)\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true\n ch = state.input.charCodeAt(state.position)\n continue\n } else {\n state.position = captureEnd\n state.line = _line\n state.lineStart = _lineStart\n state.lineIndent = _lineIndent\n break\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false)\n writeFoldedLines(state, state.line - _line)\n captureStart = captureEnd = state.position\n hasPendingContent = false\n }\n\n if (!isWhiteSpace(ch)) {\n captureEnd = state.position + 1\n }\n\n ch = state.input.charCodeAt(++state.position)\n }\n\n captureSegment(state, captureStart, captureEnd, false)\n\n if (state.result) {\n return true\n }\n\n state.kind = _kind\n state.result = _result\n return false\n}\n\nfunction readSingleQuotedScalar (state, nodeIndent) {\n let captureStart\n let captureEnd\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x27/* ' */) {\n return false\n }\n\n state.kind = 'scalar'\n state.result = ''\n state.position++\n captureStart = captureEnd = state.position\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true)\n ch = state.input.charCodeAt(++state.position)\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position\n state.position++\n captureEnd = state.position\n } else {\n return true\n }\n } else if (isEol(ch)) {\n captureSegment(state, captureStart, captureEnd, true)\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent))\n captureStart = captureEnd = state.position\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar')\n } else {\n state.position++\n if (!isWhiteSpace(ch)) {\n captureEnd = state.position\n }\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar')\n}\n\nfunction readDoubleQuotedScalar (state, nodeIndent) {\n let captureStart\n let captureEnd\n let tmp\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x22/* \" */) {\n return false\n }\n\n state.kind = 'scalar'\n state.result = ''\n state.position++\n captureStart = captureEnd = state.position\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true)\n state.position++\n return true\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true)\n ch = state.input.charCodeAt(++state.position)\n\n if (isEol(ch)) {\n skipSeparationSpace(state, false, nodeIndent)\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch]\n state.position++\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n let hexLength = tmp\n let hexResult = 0\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position)\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp\n } else {\n throwError(state, 'expected hexadecimal character')\n }\n }\n\n state.result += charFromCodepoint(hexResult)\n\n state.position++\n } else {\n throwError(state, 'unknown escape sequence')\n }\n\n captureStart = captureEnd = state.position\n } else if (isEol(ch)) {\n captureSegment(state, captureStart, captureEnd, true)\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent))\n captureStart = captureEnd = state.position\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar')\n } else {\n state.position++\n if (!isWhiteSpace(ch)) {\n captureEnd = state.position\n }\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar')\n}\n\nfunction readFlowCollection (state, nodeIndent) {\n let readNext = true\n let _line\n let _lineStart\n let _pos\n const _tag = state.tag\n let _result\n const _anchor = state.anchor\n let terminator\n let isPair\n let isExplicitPair\n let isMapping\n const overridableKeys = Object.create(null)\n let keyNode\n let keyTag\n let valueNode\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D/* ] */\n isMapping = false\n _result = []\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D/* } */\n isMapping = true\n _result = {}\n } else {\n return false\n }\n\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, _result)\n }\n\n ch = state.input.charCodeAt(++state.position)\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent)\n\n ch = state.input.charCodeAt(state.position)\n\n if (ch === terminator) {\n state.position++\n state.tag = _tag\n state.anchor = _anchor\n state.kind = isMapping ? 'mapping' : 'sequence'\n state.result = _result\n return true\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries')\n } else if (ch === 0x2C/* , */) {\n // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n throwError(state, \"expected the node content, but found ','\")\n }\n\n keyTag = keyNode = valueNode = null\n isPair = isExplicitPair = false\n\n if (ch === 0x3F/* ? */) {\n const following = state.input.charCodeAt(state.position + 1)\n\n if (isWsOrEol(following)) {\n isPair = isExplicitPair = true\n state.position++\n skipSeparationSpace(state, true, nodeIndent)\n }\n }\n\n _line = state.line // Save the current line.\n _lineStart = state.lineStart\n _pos = state.position\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true)\n keyTag = state.tag\n keyNode = state.result\n skipSeparationSpace(state, true, nodeIndent)\n\n ch = state.input.charCodeAt(state.position)\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true\n ch = state.input.charCodeAt(++state.position)\n skipSeparationSpace(state, true, nodeIndent)\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true)\n valueNode = state.result\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos))\n } else {\n _result.push(keyNode)\n }\n\n skipSeparationSpace(state, true, nodeIndent)\n\n ch = state.input.charCodeAt(state.position)\n\n if (ch === 0x2C/* , */) {\n readNext = true\n ch = state.input.charCodeAt(++state.position)\n } else {\n readNext = false\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection')\n}\n\nfunction readBlockScalar (state, nodeIndent) {\n let folding\n let chomping = CHOMPING_CLIP\n let didReadContent = false\n let detectedIndent = false\n let textIndent = nodeIndent\n let emptyLines = 0\n let atMoreIndented = false\n let tmp\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch === 0x7C/* | */) {\n folding = false\n } else if (ch === 0x3E/* > */) {\n folding = true\n } else {\n return false\n }\n\n state.kind = 'scalar'\n state.result = ''\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position)\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP\n } else {\n throwError(state, 'repeat of a chomping mode identifier')\n }\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one')\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1\n detectedIndent = true\n } else {\n throwError(state, 'repeat of an indentation width identifier')\n }\n } else {\n break\n }\n }\n\n if (isWhiteSpace(ch)) {\n do { ch = state.input.charCodeAt(++state.position) }\n while (isWhiteSpace(ch))\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position) }\n while (!isEol(ch) && (ch !== 0))\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state)\n state.lineIndent = 0\n\n ch = state.input.charCodeAt(state.position)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent\n }\n\n if (isEol(ch)) {\n emptyLines++\n continue\n }\n\n if (!detectedIndent && textIndent === 0) {\n throwError(state, 'missing indentation for block scalar')\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines)\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n'\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (isWhiteSpace(ch)) {\n atMoreIndented = true\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines)\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false\n state.result += common.repeat('\\n', emptyLines + 1)\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' '\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines)\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines)\n }\n\n didReadContent = true\n detectedIndent = true\n emptyLines = 0\n const captureStart = state.position\n\n while (!isEol(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n captureSegment(state, captureStart, state.position, false)\n }\n\n return true\n}\n\nfunction readBlockSequence (state, nodeIndent) {\n const _tag = state.tag\n const _anchor = state.anchor\n const _result = []\n let detected = false\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false\n\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, _result)\n }\n\n let ch = state.input.charCodeAt(state.position)\n\n while (ch !== 0) {\n if (state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine\n throwError(state, 'tab characters must not be used in indentation')\n }\n\n if (ch !== 0x2D/* - */) {\n break\n }\n\n const following = state.input.charCodeAt(state.position + 1)\n\n if (!isWsOrEol(following)) {\n break\n }\n\n detected = true\n state.position++\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null)\n ch = state.input.charCodeAt(state.position)\n continue\n }\n }\n\n const _line = state.line\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true)\n _result.push(state.result)\n skipSeparationSpace(state, true, -1)\n\n ch = state.input.charCodeAt(state.position)\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry')\n } else if (state.lineIndent < nodeIndent) {\n break\n }\n }\n\n if (detected) {\n state.tag = _tag\n state.anchor = _anchor\n state.kind = 'sequence'\n state.result = _result\n return true\n }\n return false\n}\n\nfunction readBlockMapping (state, nodeIndent, flowIndent) {\n let allowCompact\n let _keyLine\n let _keyLineStart\n let _keyPos\n const _tag = state.tag\n const _anchor = state.anchor\n const _result = {}\n const overridableKeys = Object.create(null)\n let keyTag = null\n let keyNode = null\n let valueNode = null\n let atExplicitKey = false\n let detected = false\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false\n\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, _result)\n }\n\n let ch = state.input.charCodeAt(state.position)\n\n while (ch !== 0) {\n if (!atExplicitKey && state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine\n throwError(state, 'tab characters must not be used in indentation')\n }\n\n const following = state.input.charCodeAt(state.position + 1)\n const _line = state.line // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && isWsOrEol(following)) {\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos)\n keyTag = keyNode = valueNode = null\n }\n\n detected = true\n atExplicitKey = true\n allowCompact = true\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false\n allowCompact = true\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line')\n }\n\n state.position += 1\n ch = following\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else {\n _keyLine = state.line\n _keyLineStart = state.lineStart\n _keyPos = state.position\n\n if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n // Neither implicit nor explicit notation.\n // Reading is done. Go to the epilogue.\n break\n }\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position)\n\n while (isWhiteSpace(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position)\n\n if (!isWsOrEol(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping')\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos)\n keyTag = keyNode = valueNode = null\n }\n\n detected = true\n atExplicitKey = false\n allowCompact = false\n keyTag = state.tag\n keyNode = state.result\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed')\n } else {\n state.tag = _tag\n state.anchor = _anchor\n return true // Keep the result of `composeNode`.\n }\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key')\n } else {\n state.tag = _tag\n state.anchor = _anchor\n return true // Keep the result of `composeNode`.\n }\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state.line\n _keyLineStart = state.lineStart\n _keyPos = state.position\n }\n\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result\n } else {\n valueNode = state.result\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos)\n keyTag = keyNode = valueNode = null\n }\n\n skipSeparationSpace(state, true, -1)\n ch = state.input.charCodeAt(state.position)\n }\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry')\n } else if (state.lineIndent < nodeIndent) {\n break\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos)\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag\n state.anchor = _anchor\n state.kind = 'mapping'\n state.result = _result\n }\n\n return detected\n}\n\nfunction readTagProperty (state) {\n let isVerbatim = false\n let isNamed = false\n let tagHandle\n let tagName\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x21/* ! */) return false\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property')\n }\n\n ch = state.input.charCodeAt(++state.position)\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true\n ch = state.input.charCodeAt(++state.position)\n } else if (ch === 0x21/* ! */) {\n isNamed = true\n tagHandle = '!!'\n ch = state.input.charCodeAt(++state.position)\n } else {\n tagHandle = '!'\n }\n\n let _position = state.position\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position) }\n while (ch !== 0 && ch !== 0x3E/* > */)\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position)\n ch = state.input.charCodeAt(++state.position)\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag')\n }\n } else {\n while (ch !== 0 && !isWsOrEol(ch)) {\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1)\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters')\n }\n\n isNamed = true\n _position = state.position + 1\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks')\n }\n }\n\n ch = state.input.charCodeAt(++state.position)\n }\n\n tagName = state.input.slice(_position, state.position)\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters')\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName)\n }\n\n try {\n tagName = decodeURIComponent(tagName)\n } catch (err) {\n throwError(state, 'tag name is malformed: ' + tagName)\n }\n\n if (isVerbatim) {\n state.tag = tagName\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"')\n }\n\n return true\n}\n\nfunction readAnchorProperty (state) {\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x26/* & */) return false\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property')\n }\n\n ch = state.input.charCodeAt(++state.position)\n const _position = state.position\n\n while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character')\n }\n\n state.anchor = state.input.slice(_position, state.position)\n return true\n}\n\nfunction readAlias (state) {\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x2A/* * */) return false\n\n ch = state.input.charCodeAt(++state.position)\n const _position = state.position\n\n while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character')\n }\n\n const alias = state.input.slice(_position, state.position)\n\n if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"')\n }\n\n state.result = state.anchorMap[alias]\n skipSeparationSpace(state, true, -1)\n return true\n}\n\nfunction tryReadBlockMappingFromProperty (state, propertyStart, nodeIndent, flowIndent) {\n const fallbackState = snapshotState(state)\n\n beginAnchorTransaction(state)\n restoreState(state, propertyStart)\n\n // Re-read the leading properties as part of the first implicit key, not as\n // properties of the current node.\n state.tag = null\n state.anchor = null\n state.kind = null\n state.result = null\n\n if (readBlockMapping(state, nodeIndent, flowIndent) && state.kind === 'mapping') {\n commitAnchorTransaction(state)\n return true\n }\n\n rollbackAnchorTransaction(state)\n restoreState(state, fallbackState)\n return false\n}\n\nfunction composeNode (state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n let allowBlockScalars\n let allowBlockCollections\n let indentStatus = 1 // 1: this>parent, 0: this=parent, -1: this= state.maxDepth) {\n throwError(state, 'nesting exceeded maxDepth (' + state.maxDepth + ')')\n }\n\n state.depth += 1\n\n if (state.listener !== null) {\n state.listener('open', state)\n }\n\n state.tag = null\n state.anchor = null\n state.kind = null\n state.result = null\n\n const allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1\n }\n }\n }\n\n if (indentStatus === 1) {\n while (true) {\n const ch = state.input.charCodeAt(state.position)\n const propertyState = snapshotState(state)\n\n // A duplicate property token after a line break can be the first key of\n // a nested block mapping, e.g. `!!map\\n !!str key: value`.\n if (atNewLine &&\n ((ch === 0x21/* ! */ && state.tag !== null) ||\n (ch === 0x26/* & */ && state.anchor !== null))) {\n break\n }\n\n if (!readTagProperty(state) && !readAnchorProperty(state)) {\n break\n }\n\n if (propertyStart === null) {\n propertyStart = propertyState\n }\n\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true\n allowBlockCollections = allowBlockStyles\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1\n }\n } else {\n allowBlockCollections = false\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent\n } else {\n flowIndent = parentIndent + 1\n }\n\n blockIndent = state.position - state.lineStart\n\n if (indentStatus === 1) {\n if ((allowBlockCollections &&\n (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent))) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true\n } else {\n const ch = state.input.charCodeAt(state.position)\n\n if (propertyStart !== null && allowBlockStyles && !allowBlockCollections &&\n ch !== 0x7C/* | */ && ch !== 0x3E/* > */ &&\n tryReadBlockMappingFromProperty(\n state,\n propertyStart,\n propertyStart.position - propertyStart.lineStart,\n flowIndent\n )) {\n hasContent = true\n } else if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true\n } else if (readAlias(state)) {\n hasContent = true\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties')\n }\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true\n\n if (state.tag === null) {\n state.tag = '?'\n }\n }\n\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, state.result)\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent)\n }\n }\n\n if (state.tag === null) {\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, state.result)\n }\n } else if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"! [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for ! tag; it should be \"scalar\", not \"' + state.kind + '\"')\n }\n\n for (let typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex]\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result)\n state.tag = type.tag\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, state.result)\n }\n break\n }\n }\n } else if (state.tag !== '!') {\n if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag]\n } else {\n // looking for multi type\n type = null\n const typeList = state.typeMap.multi[state.kind || 'fallback']\n\n for (let typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type = typeList[typeIndex]\n break\n }\n }\n }\n\n if (!type) {\n throwError(state, 'unknown tag !<' + state.tag + '>')\n }\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"')\n }\n\n if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag')\n } else {\n state.result = type.construct(state.result, state.tag)\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, state.result)\n }\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state)\n }\n\n state.depth -= 1\n return state.tag !== null || state.anchor !== null || hasContent\n}\n\nfunction readDocument (state) {\n const documentStart = state.position\n let hasDirectives = false\n let ch\n\n state.version = null\n state.checkLineBreaks = state.legacy\n state.tagMap = Object.create(null)\n state.anchorMap = Object.create(null)\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1)\n\n ch = state.input.charCodeAt(state.position)\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break\n }\n\n hasDirectives = true\n ch = state.input.charCodeAt(++state.position)\n let _position = state.position\n\n while (ch !== 0 && !isWsOrEol(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n const directiveName = state.input.slice(_position, state.position)\n const directiveArgs = []\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length')\n }\n\n while (ch !== 0) {\n while (isWhiteSpace(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position) }\n while (ch !== 0 && !isEol(ch))\n break\n }\n\n if (isEol(ch)) break\n\n _position = state.position\n\n while (ch !== 0 && !isWsOrEol(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n directiveArgs.push(state.input.slice(_position, state.position))\n }\n\n if (ch !== 0) readLineBreak(state)\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs)\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"')\n }\n }\n\n skipSeparationSpace(state, true, -1)\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3\n skipSeparationSpace(state, true, -1)\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected')\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true)\n skipSeparationSpace(state, true, -1)\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content')\n }\n\n state.documents.push(state.result)\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3\n skipSeparationSpace(state, true, -1)\n }\n return\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected')\n }\n}\n\nfunction loadDocuments (input, options) {\n input = String(input)\n options = options || {}\n\n if (input.length !== 0) {\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n'\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1)\n }\n }\n\n const state = new State(input, options)\n\n const nullpos = input.indexOf('\\0')\n\n if (nullpos !== -1) {\n state.position = nullpos\n throwError(state, 'null byte is not allowed in input')\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0'\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1\n state.position += 1\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state)\n }\n\n return state.documents\n}\n\nfunction loadAll (input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator\n iterator = null\n }\n\n const documents = loadDocuments(input, options)\n\n if (typeof iterator !== 'function') {\n return documents\n }\n\n for (let index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index])\n }\n}\n\nfunction load (input, options) {\n const documents = loadDocuments(input, options)\n\n if (documents.length === 0) {\n return undefined\n } else if (documents.length === 1) {\n return documents[0]\n }\n throw new YAMLException('expected a single document in the stream, but found more')\n}\n\nmodule.exports.loadAll = loadAll\nmodule.exports.load = load\n","'use strict'\n\nconst common = require('./common')\nconst YAMLException = require('./exception')\nconst DEFAULT_SCHEMA = require('./schema/default')\n\nconst _toString = Object.prototype.toString\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nconst CHAR_BOM = 0xFEFF\nconst CHAR_TAB = 0x09 /* Tab */\nconst CHAR_LINE_FEED = 0x0A /* LF */\nconst CHAR_CARRIAGE_RETURN = 0x0D /* CR */\nconst CHAR_SPACE = 0x20 /* Space */\nconst CHAR_EXCLAMATION = 0x21 /* ! */\nconst CHAR_DOUBLE_QUOTE = 0x22 /* \" */\nconst CHAR_SHARP = 0x23 /* # */\nconst CHAR_PERCENT = 0x25 /* % */\nconst CHAR_AMPERSAND = 0x26 /* & */\nconst CHAR_SINGLE_QUOTE = 0x27 /* ' */\nconst CHAR_ASTERISK = 0x2A /* * */\nconst CHAR_COMMA = 0x2C /* , */\nconst CHAR_MINUS = 0x2D /* - */\nconst CHAR_COLON = 0x3A /* : */\nconst CHAR_EQUALS = 0x3D /* = */\nconst CHAR_GREATER_THAN = 0x3E /* > */\nconst CHAR_QUESTION = 0x3F /* ? */\nconst CHAR_COMMERCIAL_AT = 0x40 /* @ */\nconst CHAR_LEFT_SQUARE_BRACKET = 0x5B /* [ */\nconst CHAR_RIGHT_SQUARE_BRACKET = 0x5D /* ] */\nconst CHAR_GRAVE_ACCENT = 0x60 /* ` */\nconst CHAR_LEFT_CURLY_BRACKET = 0x7B /* { */\nconst CHAR_VERTICAL_LINE = 0x7C /* | */\nconst CHAR_RIGHT_CURLY_BRACKET = 0x7D /* } */\n\nconst ESCAPE_SEQUENCES = {}\n\nESCAPE_SEQUENCES[0x00] = '\\\\0'\nESCAPE_SEQUENCES[0x07] = '\\\\a'\nESCAPE_SEQUENCES[0x08] = '\\\\b'\nESCAPE_SEQUENCES[0x09] = '\\\\t'\nESCAPE_SEQUENCES[0x0A] = '\\\\n'\nESCAPE_SEQUENCES[0x0B] = '\\\\v'\nESCAPE_SEQUENCES[0x0C] = '\\\\f'\nESCAPE_SEQUENCES[0x0D] = '\\\\r'\nESCAPE_SEQUENCES[0x1B] = '\\\\e'\nESCAPE_SEQUENCES[0x22] = '\\\\\"'\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\'\nESCAPE_SEQUENCES[0x85] = '\\\\N'\nESCAPE_SEQUENCES[0xA0] = '\\\\_'\nESCAPE_SEQUENCES[0x2028] = '\\\\L'\nESCAPE_SEQUENCES[0x2029] = '\\\\P'\n\nconst DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n]\n\nconst DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/\n\nfunction compileStyleMap (schema, map) {\n if (map === null) return {}\n\n const result = {}\n const keys = Object.keys(map)\n\n for (let index = 0, length = keys.length; index < length; index += 1) {\n let tag = keys[index]\n let style = String(map[tag])\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2)\n }\n const type = schema.compiledTypeMap['fallback'][tag]\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style]\n }\n\n result[tag] = style\n }\n\n return result\n}\n\nfunction encodeHex (character) {\n let handle\n let length\n\n const string = character.toString(16).toUpperCase()\n\n if (character <= 0xFF) {\n handle = 'x'\n length = 2\n } else if (character <= 0xFFFF) {\n handle = 'u'\n length = 4\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U'\n length = 8\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF')\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string\n}\n\nconst QUOTING_TYPE_SINGLE = 1\nconst QUOTING_TYPE_DOUBLE = 2\n\nfunction State (options) {\n this.schema = options['schema'] || DEFAULT_SCHEMA\n this.indent = Math.max(1, (options['indent'] || 2))\n this.noArrayIndent = options['noArrayIndent'] || false\n this.skipInvalid = options['skipInvalid'] || false\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel'])\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null)\n this.sortKeys = options['sortKeys'] || false\n this.lineWidth = options['lineWidth'] || 80\n this.noRefs = options['noRefs'] || false\n this.noCompatMode = options['noCompatMode'] || false\n this.condenseFlow = options['condenseFlow'] || false\n this.quotingType = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE\n this.forceQuotes = options['forceQuotes'] || false\n this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null\n\n this.implicitTypes = this.schema.compiledImplicit\n this.explicitTypes = this.schema.compiledExplicit\n\n this.tag = null\n this.result = ''\n\n this.duplicates = []\n this.usedDuplicates = null\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString (string, spaces) {\n const ind = common.repeat(' ', spaces)\n let position = 0\n let result = ''\n const length = string.length\n\n while (position < length) {\n let line\n const next = string.indexOf('\\n', position)\n if (next === -1) {\n line = string.slice(position)\n position = length\n } else {\n line = string.slice(position, next + 1)\n position = next + 1\n }\n\n if (line.length && line !== '\\n') result += ind\n\n result += line\n }\n\n return result\n}\n\nfunction generateNextLine (state, level) {\n return '\\n' + common.repeat(' ', state.indent * level)\n}\n\nfunction testImplicitResolving (state, str) {\n for (let index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n const type = state.implicitTypes[index]\n\n if (type.resolve(str)) {\n return true\n }\n }\n\n return false\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace (c) {\n return c === CHAR_SPACE || c === CHAR_TAB\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable (c) {\n return (c >= 0x00020 && c <= 0x00007E) ||\n ((c >= 0x000A1 && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) ||\n ((c >= 0x0E000 && c <= 0x00FFFD) && c !== CHAR_BOM) ||\n (c >= 0x10000 && c <= 0x10FFFF)\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace (c) {\n return isPrintable(c) &&\n c !== CHAR_BOM &&\n // - b-char\n c !== CHAR_CARRIAGE_RETURN &&\n c !== CHAR_LINE_FEED\n}\n\n// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out\n// c = flow-in ⇒ ns-plain-safe-in\n// c = block-key ⇒ ns-plain-safe-out\n// c = flow-key ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” )\n// | ( /* An ns-char preceding */ “#” )\n// | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe (c, prev, inblock) {\n const cIsNsCharOrWhitespace = isNsCharOrWhitespace(c)\n const cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c)\n return (\n (\n // ns-plain-safe\n inblock // c = flow-in\n ? cIsNsCharOrWhitespace\n : cIsNsCharOrWhitespace &&\n // - c-flow-indicator\n c !== CHAR_COMMA &&\n c !== CHAR_LEFT_SQUARE_BRACKET &&\n c !== CHAR_RIGHT_SQUARE_BRACKET &&\n c !== CHAR_LEFT_CURLY_BRACKET &&\n c !== CHAR_RIGHT_CURLY_BRACKET\n ) &&\n // ns-plain-char\n c !== CHAR_SHARP && // false on '#'\n !(prev === CHAR_COLON && !cIsNsChar)\n ) || // false on ': '\n (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) || // change to true on '[^ ]#'\n (prev === CHAR_COLON && cIsNsChar) // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst (c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n return isPrintable(c) &&\n c !== CHAR_BOM &&\n !isWhitespace(c) && // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n c !== CHAR_MINUS &&\n c !== CHAR_QUESTION &&\n c !== CHAR_COLON &&\n c !== CHAR_COMMA &&\n c !== CHAR_LEFT_SQUARE_BRACKET &&\n c !== CHAR_RIGHT_SQUARE_BRACKET &&\n c !== CHAR_LEFT_CURLY_BRACKET &&\n c !== CHAR_RIGHT_CURLY_BRACKET &&\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n c !== CHAR_SHARP &&\n c !== CHAR_AMPERSAND &&\n c !== CHAR_ASTERISK &&\n c !== CHAR_EXCLAMATION &&\n c !== CHAR_VERTICAL_LINE &&\n c !== CHAR_EQUALS &&\n c !== CHAR_GREATER_THAN &&\n c !== CHAR_SINGLE_QUOTE &&\n c !== CHAR_DOUBLE_QUOTE &&\n // | “%” | “@” | “`”)\n c !== CHAR_PERCENT &&\n c !== CHAR_COMMERCIAL_AT &&\n c !== CHAR_GRAVE_ACCENT\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast (c) {\n // just not whitespace or colon, it will be checked to be plain character later\n return !isWhitespace(c) && c !== CHAR_COLON\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt (string, pos) {\n const first = string.charCodeAt(pos)\n let second\n\n if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n second = string.charCodeAt(pos + 1)\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n }\n }\n return first\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator (string) {\n const leadingSpaceRe = /^\\n* /\n return leadingSpaceRe.test(string)\n}\n\nconst STYLE_PLAIN = 1\nconst STYLE_SINGLE = 2\nconst STYLE_LITERAL = 3\nconst STYLE_FOLDED = 4\nconst STYLE_DOUBLE = 5\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle (string, singleLineOnly, indentPerLevel, lineWidth,\n testAmbiguousType, quotingType, forceQuotes, inblock) {\n let i\n let char = 0\n let prevChar = null\n let hasLineBreak = false\n let hasFoldableLine = false // only checked if shouldTrackWidth\n const shouldTrackWidth = lineWidth !== -1\n let previousLineBreak = -1 // count the first line correctly\n let plain = isPlainSafeFirst(codePointAt(string, 0)) &&\n isPlainSafeLast(codePointAt(string, string.length - 1))\n\n if (singleLineOnly || forceQuotes) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i)\n if (!isPrintable(char)) {\n return STYLE_DOUBLE\n }\n plain = plain && isPlainSafe(char, prevChar, inblock)\n prevChar = char\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i)\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ')\n previousLineBreak = i\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE\n }\n plain = plain && isPlainSafe(char, prevChar, inblock)\n prevChar = char\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '))\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n if (plain && !forceQuotes && !testAmbiguousType(string)) {\n return STYLE_PLAIN\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n if (!forceQuotes) {\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar (state, string, level, iskey, inblock) {\n state.dump = (function () {\n if (string.length === 0) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\"\n }\n if (!state.noCompatMode) {\n if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\")\n }\n }\n\n const indent = state.indent * Math.max(1, level) // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n const lineWidth = (state.lineWidth === -1)\n ? -1\n : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent)\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n const singleLineOnly = iskey ||\n // No block styles in flow mode.\n (state.flowLevel > -1 && level >= state.flowLevel)\n function testAmbiguity (string) {\n return testImplicitResolving(state, string)\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n case STYLE_PLAIN:\n return string\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\"\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent) +\n dropEndingNewline(indentString(string, indent))\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent) +\n dropEndingNewline(indentString(foldString(string, lineWidth), indent))\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"'\n default:\n throw new YAMLException('impossible error: invalid scalar style')\n }\n }())\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader (string, indentPerLevel) {\n const indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n const clip = string[string.length - 1] === '\\n'\n const keep = clip && (string[string.length - 2] === '\\n' || string === '\\n')\n const chomp = keep ? '+' : (clip ? '' : '-')\n\n return indentIndicator + chomp + '\\n'\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline (string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString (string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n const lineRe = /(\\n+)([^\\n]*)/g\n\n // first line (possibly an empty line)\n let result = (function () {\n let nextLF = string.indexOf('\\n')\n nextLF = nextLF !== -1 ? nextLF : string.length\n lineRe.lastIndex = nextLF\n return foldLine(string.slice(0, nextLF), width)\n }())\n // If we haven't reached the first content line yet, don't add an extra \\n.\n let prevMoreIndented = string[0] === '\\n' || string[0] === ' '\n let moreIndented\n\n // rest of the lines\n let match\n while ((match = lineRe.exec(string))) {\n const prefix = match[1]\n const line = match[2]\n\n moreIndented = (line[0] === ' ')\n result += prefix +\n ((!prevMoreIndented && !moreIndented && line !== '') ? '\\n' : '') +\n foldLine(line, width)\n prevMoreIndented = moreIndented\n }\n\n return result\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine (line, width) {\n if (line === '' || line[0] === ' ') return line\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n const breakRe = / [^ ]/g // note: the match index will always be <= length-2.\n let match\n // start is an inclusive index. end, curr, and next are exclusive.\n let start = 0\n let end\n let curr = 0\n let next = 0\n let result = ''\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next // derive end <= length-2\n result += '\\n' + line.slice(start, end)\n // skip the space that was output as \\n\n start = end + 1 // derive start <= length-1\n }\n curr = next\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n'\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1)\n } else {\n result += line.slice(start)\n }\n\n return result.slice(1) // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString (string) {\n let result = ''\n let char = 0\n\n for (let i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i)\n const escapeSeq = ESCAPE_SEQUENCES[char]\n\n if (!escapeSeq && isPrintable(char)) {\n result += string[i]\n if (char >= 0x10000) result += string[i + 1]\n } else {\n result += escapeSeq || encodeHex(char)\n }\n }\n\n return result\n}\n\nfunction writeFlowSequence (state, level, object) {\n let _result = ''\n const _tag = state.tag\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n let value = object[index]\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value)\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level, value, false, false) ||\n (typeof value === 'undefined' &&\n writeNode(state, level, null, false, false))) {\n if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '')\n _result += state.dump\n }\n }\n\n state.tag = _tag\n state.dump = '[' + _result + ']'\n}\n\nfunction writeBlockSequence (state, level, object, compact) {\n let _result = ''\n const _tag = state.tag\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n let value = object[index]\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value)\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level + 1, value, true, true, false, true) ||\n (typeof value === 'undefined' &&\n writeNode(state, level + 1, null, true, true, false, true))) {\n if (!compact || _result !== '') {\n _result += generateNextLine(state, level)\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-'\n } else {\n _result += '- '\n }\n\n _result += state.dump\n }\n }\n\n state.tag = _tag\n state.dump = _result || '[]' // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping (state, level, object) {\n let _result = ''\n const _tag = state.tag\n const objectKeyList = Object.keys(object)\n\n for (let index = 0, length = objectKeyList.length; index < length; index += 1) {\n let pairBuffer = ''\n if (_result !== '') pairBuffer += ', '\n\n if (state.condenseFlow) pairBuffer += '\"'\n\n const objectKey = objectKeyList[index]\n let objectValue = object[objectKey]\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue)\n }\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? '\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ')\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump\n\n // Both key and value are valid.\n _result += pairBuffer\n }\n\n state.tag = _tag\n state.dump = '{' + _result + '}'\n}\n\nfunction writeBlockMapping (state, level, object, compact) {\n let _result = ''\n const _tag = state.tag\n const objectKeyList = Object.keys(object)\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort()\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys)\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function')\n }\n\n for (let index = 0, length = objectKeyList.length; index < length; index += 1) {\n let pairBuffer = ''\n\n if (!compact || _result !== '') {\n pairBuffer += generateNextLine(state, level)\n }\n\n const objectKey = objectKeyList[index]\n let objectValue = object[objectKey]\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue)\n }\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue // Skip this pair because of invalid key.\n }\n\n const explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024)\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?'\n } else {\n pairBuffer += '? '\n }\n }\n\n pairBuffer += state.dump\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level)\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':'\n } else {\n pairBuffer += ': '\n }\n\n pairBuffer += state.dump\n\n // Both key and value are valid.\n _result += pairBuffer\n }\n\n state.tag = _tag\n state.dump = _result || '{}' // Empty mapping if no valid pairs.\n}\n\nfunction detectType (state, object, explicit) {\n const typeList = explicit ? state.explicitTypes : state.implicitTypes\n\n for (let index = 0, length = typeList.length; index < length; index += 1) {\n const type = typeList[index]\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n if (explicit) {\n if (type.multi && type.representName) {\n state.tag = type.representName(object)\n } else {\n state.tag = type.tag\n }\n } else {\n state.tag = '?'\n }\n\n if (type.represent) {\n const style = state.styleMap[type.tag] || type.defaultStyle\n\n let _result\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style)\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style)\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style')\n }\n\n state.dump = _result\n }\n\n return true\n }\n }\n\n return false\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode (state, level, object, block, compact, iskey, isblockseq) {\n state.tag = null\n state.dump = object\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true)\n }\n\n const type = _toString.call(state.dump)\n const inblock = block\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level)\n }\n\n const objectOrArray = type === '[object Object]' || type === '[object Array]'\n let duplicateIndex\n let duplicate\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object)\n duplicate = duplicateIndex !== -1\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact)\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump\n }\n } else {\n writeFlowMapping(state, level, state.dump)\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n if (state.noArrayIndent && !isblockseq && level > 0) {\n writeBlockSequence(state, level - 1, state.dump, compact)\n } else {\n writeBlockSequence(state, level, state.dump, compact)\n }\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump\n }\n } else {\n writeFlowSequence(state, level, state.dump)\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey, inblock)\n }\n } else if (type === '[object Undefined]') {\n return false\n } else {\n if (state.skipInvalid) return false\n throw new YAMLException('unacceptable kind of an object to dump ' + type)\n }\n\n if (state.tag !== null && state.tag !== '?') {\n // Need to encode all characters except those allowed by the spec:\n //\n // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */\n // [36] ns-hex-digit ::= ns-dec-digit\n // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-”\n // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n //\n // Also need to encode '!' because it has special meaning (end of tag prefix).\n //\n let tagStr = encodeURI(\n state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n ).replace(/!/g, '%21')\n\n if (state.tag[0] === '!') {\n tagStr = '!' + tagStr\n } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n tagStr = '!!' + tagStr.slice(18)\n } else {\n tagStr = '!<' + tagStr + '>'\n }\n\n state.dump = tagStr + ' ' + state.dump\n }\n }\n\n return true\n}\n\nfunction getDuplicateReferences (object, state) {\n const objects = []\n const duplicatesIndexes = []\n\n inspectNode(object, objects, duplicatesIndexes)\n\n const length = duplicatesIndexes.length\n for (let index = 0; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]])\n }\n state.usedDuplicates = new Array(length)\n}\n\nfunction inspectNode (object, objects, duplicatesIndexes) {\n if (object !== null && typeof object === 'object') {\n const index = objects.indexOf(object)\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index)\n }\n } else {\n objects.push(object)\n\n if (Array.isArray(object)) {\n for (let i = 0, length = object.length; i < length; i += 1) {\n inspectNode(object[i], objects, duplicatesIndexes)\n }\n } else {\n const objectKeyList = Object.keys(object)\n\n for (let i = 0, length = objectKeyList.length; i < length; i += 1) {\n inspectNode(object[objectKeyList[i]], objects, duplicatesIndexes)\n }\n }\n }\n }\n}\n\nfunction dump (input, options) {\n options = options || {}\n\n const state = new State(options)\n\n if (!state.noRefs) getDuplicateReferences(input, state)\n\n let value = input\n\n if (state.replacer) {\n value = state.replacer.call({ '': value }, '', value)\n }\n\n if (writeNode(state, 0, value, true, true)) return state.dump + '\\n'\n\n return ''\n}\n\nmodule.exports.dump = dump\n","'use strict'\n\nconst loader = require('./lib/loader')\nconst dumper = require('./lib/dumper')\n\nfunction renamed (from, to) {\n return function () {\n throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n 'Use yaml.' + to + ' instead, which is now safe by default.')\n }\n}\n\nmodule.exports.Type = require('./lib/type')\nmodule.exports.Schema = require('./lib/schema')\nmodule.exports.FAILSAFE_SCHEMA = require('./lib/schema/failsafe')\nmodule.exports.JSON_SCHEMA = require('./lib/schema/json')\nmodule.exports.CORE_SCHEMA = require('./lib/schema/core')\nmodule.exports.DEFAULT_SCHEMA = require('./lib/schema/default')\nmodule.exports.load = loader.load\nmodule.exports.loadAll = loader.loadAll\nmodule.exports.dump = dumper.dump\nmodule.exports.YAMLException = require('./lib/exception')\n\n// Re-export all types in case user wants to create custom schema\nmodule.exports.types = {\n binary: require('./lib/type/binary'),\n float: require('./lib/type/float'),\n map: require('./lib/type/map'),\n null: require('./lib/type/null'),\n pairs: require('./lib/type/pairs'),\n set: require('./lib/type/set'),\n timestamp: require('./lib/type/timestamp'),\n bool: require('./lib/type/bool'),\n int: require('./lib/type/int'),\n merge: require('./lib/type/merge'),\n omap: require('./lib/type/omap'),\n seq: require('./lib/type/seq'),\n str: require('./lib/type/str')\n}\n\n// Removed functions from JS-YAML 3.0.x\nmodule.exports.safeLoad = renamed('safeLoad', 'load')\nmodule.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll')\nmodule.exports.safeDump = renamed('safeDump', 'dump')\n","import yaml from '../index.js'\n\nconst {\n Type,\n Schema,\n FAILSAFE_SCHEMA,\n JSON_SCHEMA,\n CORE_SCHEMA,\n DEFAULT_SCHEMA,\n load,\n loadAll,\n dump,\n YAMLException,\n types,\n safeLoad,\n safeLoadAll,\n safeDump\n} = yaml\n\nexport {\n Type,\n Schema,\n FAILSAFE_SCHEMA,\n JSON_SCHEMA,\n CORE_SCHEMA,\n DEFAULT_SCHEMA,\n load,\n loadAll,\n dump,\n YAMLException,\n types,\n safeLoad,\n safeLoadAll,\n safeDump\n}\n\nexport default yaml\n"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","isNothing","subject","isObject","toArray","sequence","Array","isArray","extend","target","source","sourceKeys","Object","keys","index","length","key","repeat","string","count","result","cycle","isNegativeZero","number","Number","NEGATIVE_INFINITY","common","formatError","exception","compact","where","message","reason","mark","name","line","column","snippet","YAMLException","Error","call","this","captureStackTrace","stack","create","toString","require$$0","getLine","buffer","lineStart","lineEnd","position","maxLineLength","head","tail","maxHalfLength","Math","floor","str","slice","replace","pos","padStart","max","makeSnippet","options","maxLength","indent","linesBefore","linesAfter","re","lineStarts","lineEnds","match","foundLineNo","exec","push","lineNoLength","min","i","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","compileStyleAliases","map","forEach","style","alias","String","Type","tag","indexOf","kind","resolve","construct","data","instanceOf","predicate","represent","representName","defaultStyle","multi","styleAliases","type","require$$1","compileList","schema","currentType","newIndex","previousType","previousIndex","compileMap","scalar","mapping","fallback","collectType","arguments","Schema","definition","implicit","explicit","concat","loadKind","compiledImplicit","compiledExplicit","compiledTypeMap","seq","failsafe","require$$2","require$$3","resolveYamlNull","constructYamlNull","isNull","object","_null","canonical","lowercase","uppercase","camelcase","empty","resolveYamlBoolean","constructYamlBoolean","isBoolean","bool","isHexCode","c","isOctCode","isDecCode","resolveYamlInteger","hasDigits","ch","isFinite","parseYamlInteger","charCodeAt","value","sign","parseInt","constructYamlInteger","isInteger","int","binary","obj","octal","decimal","hexadecimal","toUpperCase","YAML_FLOAT_PATTERN","RegExp","YAML_FLOAT_SPECIAL_PATTERN","resolveYamlFloat","test","parseFloat","constructYamlFloat","toLowerCase","POSITIVE_INFINITY","NaN","SCIENTIFIC_WITHOUT_DOT","representYamlFloat","isNaN","res","isFloat","float","json","require$$4","core","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","resolveYamlTimestamp","constructYamlTimestamp","fraction","delta","year","month","day","Date","UTC","hour","minute","second","tzHour","tzMinute","date","setTime","getTime","representYamlTimestamp","toISOString","timestamp","resolveYamlMerge","merge","BASE64_MAP","resolveYamlBinary","bitlen","idx","code","charAt","constructYamlBinary","input","bits","tailbits","Uint8Array","representYamlBinary","isBinary","_hasOwnProperty","hasOwnProperty","_toString","resolveYamlOmap","objectKeys","pair","pairHasKey","pairKey","defineProperty","constructYamlOmap","omap","resolveYamlPairs","constructYamlPairs","pairs","resolveYamlSet","constructYamlSet","set","_default","require$$5","require$$6","DEFAULT_SCHEMA","CONTEXT_FLOW_IN","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_IN","CONTEXT_BLOCK_OUT","CHOMPING_CLIP","CHOMPING_STRIP","CHOMPING_KEEP","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","_class","isEol","isWhiteSpace","isWsOrEol","isFlowIndicator","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","fromCharCode","setProperty","configurable","enumerable","writable","simpleEscapeCheck","simpleEscapeMap","State","filename","onWarning","legacy","listener","maxDepth","maxTotalMergeKeys","implicitTypes","typeMap","lineIndent","depth","totalMergeKeys","firstTabInLine","documents","anchorMapTransactions","generateError","state","throwError","throwWarning","storeAnchor","transactions","transaction","existed","anchorMap","beginAnchorTransaction","commitAnchorTransaction","pop","parent","names","rollbackAnchorTransaction","entry","snapshotState","anchor","restoreState","snapshot","directiveHandlers","YAML","handleYamlDirective","args","version","major","minor","checkLineBreaks","TAG","handleTagDirective","prefix","handle","tagMap","decodeURIComponent","err","captureSegment","start","end","checkJson","_result","_position","_length","_character","chargeMergeWork","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","valueNode","startLine","startLineStart","startPos","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readPlainScalar","nodeIndent","withinFlowCollection","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","following","preceding","readSingleQuotedScalar","readDoubleQuotedScalar","tmp","hexLength","hexResult","readFlowCollection","readNext","_pos","_tag","_anchor","terminator","isPair","isExplicitPair","isMapping","composeNode","readBlockScalar","folding","chomping","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","readBlockSequence","detected","readBlockMapping","flowIndent","allowCompact","_keyLine","_keyLineStart","_keyPos","atExplicitKey","readTagProperty","isVerbatim","isNamed","tagHandle","tagName","readAnchorProperty","readAlias","tryReadBlockMappingFromProperty","propertyStart","fallbackState","parentIndent","nodeContext","allowToSeek","allowBlockScalars","allowBlockCollections","indentStatus","atNewLine","hasContent","blockIndent","allowBlockStyles","propertyState","typeIndex","typeQuantity","typeList","readDocument","documentStart","hasDirectives","directiveName","directiveArgs","loadDocuments","nullpos","loadAll","load","loader","CHAR_BOM","CHAR_TAB","CHAR_LINE_FEED","CHAR_CARRIAGE_RETURN","CHAR_SPACE","CHAR_EXCLAMATION","CHAR_DOUBLE_QUOTE","CHAR_SHARP","CHAR_PERCENT","CHAR_AMPERSAND","CHAR_SINGLE_QUOTE","CHAR_ASTERISK","CHAR_COMMA","CHAR_MINUS","CHAR_COLON","CHAR_EQUALS","CHAR_GREATER_THAN","CHAR_QUESTION","CHAR_COMMERCIAL_AT","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_GRAVE_ACCENT","CHAR_LEFT_CURLY_BRACKET","CHAR_VERTICAL_LINE","CHAR_RIGHT_CURLY_BRACKET","ESCAPE_SEQUENCES","DEPRECATED_BOOLEANS_SYNTAX","DEPRECATED_BASE60_SYNTAX","compileStyleMap","encodeHex","character","QUOTING_TYPE_SINGLE","QUOTING_TYPE_DOUBLE","noArrayIndent","skipInvalid","flowLevel","styleMap","sortKeys","lineWidth","noRefs","noCompatMode","condenseFlow","quotingType","forceQuotes","replacer","explicitTypes","duplicates","usedDuplicates","indentString","spaces","ind","next","generateNextLine","level","testImplicitResolving","isWhitespace","isPrintable","isNsCharOrWhitespace","isPlainSafe","prev","inblock","cIsNsCharOrWhitespace","cIsNsChar","isPlainSafeFirst","isPlainSafeLast","codePointAt","first","needIndentIndicator","leadingSpaceRe","STYLE_PLAIN","STYLE_SINGLE","STYLE_LITERAL","STYLE_FOLDED","STYLE_DOUBLE","chooseScalarStyle","singleLineOnly","indentPerLevel","testAmbiguousType","char","prevChar","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","writeScalar","iskey","dump","testAmbiguity","blockHeader","dropEndingNewline","foldString","escapeString","indentIndicator","clip","keep","chomp","width","lineRe","nextLF","lastIndex","foldLine","prevMoreIndented","moreIndented","breakRe","curr","escapeSeq","writeFlowSequence","writeNode","writeBlockSequence","writeFlowMapping","objectKeyList","pairBuffer","objectKey","objectValue","writeBlockMapping","sort","explicitPair","detectType","block","isblockseq","objectOrArray","duplicateIndex","duplicate","tagStr","encodeURI","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","dumper","renamed","from","to","jsYaml","FAILSAFE_SCHEMA","JSON_SCHEMA","CORE_SCHEMA","require$$7","require$$8","types","require$$9","require$$10","require$$11","null","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","safeLoad","safeLoadAll","safeDump","yaml"],"mappings":";;;;;;;;;;;;;;;QAAY,SAAAA,QAAAC;YAAA;YAAA,OAAAD,UAAA,qBAAAE,UAAA,mBAAAA,OAAAC,WAAA,SAAAF;gBAAA,cAAAA;gBAAA,SAAAA;gBAAA,OAAAA,MAAA,qBAAAC,UAAAD,GAAAG,gBAAAF,UAAAD,OAAAC,OAAAG,YAAA,kBAAAJ;AAAA,eAAAD,QAAAC;AAAA;QAEZ,SAASK,UAAWC;YAClB,cAAeA,YAAY,eAAiBA,YAAY;AAC1D;QAEA,SAASC,SAAUD;YACjB,OAAQP,QAAOO,aAAY,YAAcA,YAAY;AACvD;QAEA,SAASE,QAASC;YAChB,IAAIC,MAAMC,QAAQF,WAAW,OAAOA,eAAA,IAC3BJ,UAAUI,WAAW,OAAO;YAErC,OAAO,EAACA;AACV;QAEA,SAASG,OAAQC,QAAQC;YACvB,IAAIA,QAAQ;gBACV,IAAMC,aAAaC,OAAOC,KAAKH;gBAE/B,KAAA,IAASI,QAAQ,GAAGC,SAASJ,WAAWI,QAAQD,QAAQC,QAAQD,SAAS,GAAG;oBAC1E,IAAME,MAAML,WAAWG;oBACvBL,OAAOO,OAAON,OAAOM;AACvB;AACF;YAEA,OAAOP;AACT;QAEA,SAASQ,OAAQC,QAAQC;YACvB,IAAIC,SAAS;YAEb,KAAA,IAASC,QAAQ,GAAGA,QAAQF,OAAOE,SAAS,GAAG;gBAC7CD,UAAUF;AACZ;YAEA,OAAOE;AACT;QAEA,SAASE,eAAgBC;YACvB,OAAQA,WAAW,KAAOC,OAAOC,sBAAsB,IAAIF;AAC7D;QAEAG,OAAAzB,YAA2BA;QAC3ByB,OAAAvB,WAA0BA;QAC1BuB,OAAAtB,UAAyBA;QACzBsB,OAAAT,SAAwBA;QACxBS,OAAAJ,iBAAgCA;QAChCI,OAAAlB,SAAwBA;;;;;;;;QC7CxB,SAASmB,YAAaC,YAAWC;YAC/B,IAAIC,QAAQ;YACZ,IAAMC,UAAUH,WAAUI,UAAU;YAEpC,KAAKJ,WAAUK,MAAM,OAAOF;YAE5B,IAAIH,WAAUK,KAAKC,MAAM;gBACvBJ,SAAS,SAASF,WAAUK,KAAKC,OAAO;AAC1C;YAEAJ,SAAS,OAAOF,WAAUK,KAAKE,OAAO,KAAK,OAAOP,WAAUK,KAAKG,SAAS,KAAK;YAE/E,KAAKP,WAAWD,WAAUK,KAAKI,SAAS;gBACtCP,SAAS,SAASF,WAAUK,KAAKI;AACnC;YAEA,OAAON,UAAU,MAAMD;AACzB;QAEA,SAASQ,eAAeN,QAAQC;YAE9BM,MAAMC,KAAKC;YAEXA,KAAKP,OAAO;YACZO,KAAKT,SAASA;YACdS,KAAKR,OAAOA;YACZQ,KAAKV,UAAUJ,YAAYc,MAAM;YAGjC,IAAIF,MAAMG,mBAAmB;gBAE3BH,MAAMG,kBAAkBD,MAAMA,KAAK1C;AACrC,mBAAO;gBAEL0C,KAAKE,SAAS,IAAIJ,OAASI,SAAS;AACtC;AACF;QAGAL,eAActC,YAAYY,OAAOgC,OAAOL,MAAMvC;QAC9CsC,eAActC,UAAUD,cAAcuC;QAEtCA,eAActC,UAAU6C,WAAW,SAASA,SAAUhB;YACpD,OAAOY,KAAKP,OAAO,OAAOP,YAAYc,MAAMZ;AAC9C;QAEAD,YAAiBU;;;;;;;;QChDjB,IAAMZ,UAASoB;QAGf,SAASC,QAASC,QAAQC,WAAWC,SAASC,UAAUC;YACtD,IAAIC,OAAO;YACX,IAAIC,OAAO;YACX,IAAMC,gBAAgBC,KAAKC,MAAML,gBAAgB,KAAK;YAEtD,IAAID,WAAWF,YAAYM,eAAe;gBACxCF,OAAO;gBACPJ,YAAYE,WAAWI,gBAAgBF,KAAKtC;AAC9C;YAEA,IAAImC,UAAUC,WAAWI,eAAe;gBACtCD,OAAO;gBACPJ,UAAUC,WAAWI,gBAAgBD,KAAKvC;AAC5C;YAEA,OAAO;gBACL2C,KAAKL,OAAOL,OAAOW,MAAMV,WAAWC,SAASU,QAAQ,OAAO,OAAON;gBACnEO,KAAKV,WAAWF,YAAYI,KAAKtC;;AAErC;QAEA,SAAS+C,SAAU5C,QAAQ6C;YACzB,OAAOrC,QAAOT,OAAO,KAAK8C,MAAM7C,OAAOH,UAAUG;AACnD;QAEA,SAAS8C,YAAa/B,MAAMgC;YAC1BA,UAAUrD,OAAOgC,OAAOqB,WAAW;YAEnC,KAAKhC,KAAKe,QAAQ,OAAO;YAEzB,KAAKiB,QAAQC,WAAWD,QAAQC,YAAY;YAC5C,WAAWD,QAAQE,WAAW,kBAAkBA,SAAS;YACzD,WAAWF,QAAQG,gBAAgB,kBAAkBA,cAAc;YACnE,WAAWH,QAAQI,eAAe,kBAAkBA,aAAa;YAEjE,IAAMC,KAAK;YACX,IAAMC,aAAa,EAAC;YACpB,IAAMC,WAAW;YACjB,IAAIC;YACJ,IAAIC,eAAc;YAElB,OAAQD,QAAQH,GAAGK,KAAK1C,KAAKe,SAAU;gBACrCwB,SAASI,KAAKH,MAAM3D;gBACpByD,WAAWK,KAAKH,MAAM3D,QAAQ2D,MAAM,GAAG1D;gBAEvC,IAAIkB,KAAKkB,YAAYsB,MAAM3D,SAAS4D,cAAc,GAAG;oBACnDA,cAAcH,WAAWxD,SAAS;AACpC;AACF;YAEA,IAAI2D,cAAc,GAAGA,cAAcH,WAAWxD,SAAS;YAEvD,IAAIK,SAAS;YACb,IAAMyD,eAAerB,KAAKsB,IAAI7C,KAAKE,OAAO8B,QAAQI,YAAYG,SAASzD,QAAQ8B,WAAW9B;YAC1F,IAAMqC,gBAAgBa,QAAQC,aAAaD,QAAQE,SAASU,eAAe;YAE3E,KAAA,IAASE,IAAI,GAAGA,KAAKd,QAAQG,aAAaW,KAAK;gBAC7C,IAAIL,cAAcK,IAAI,GAAG;gBACzB,IAAM5C,QAAOY,QACXd,KAAKe,QACLuB,WAAWG,cAAcK,IACzBP,SAASE,cAAcK,IACvB9C,KAAKkB,YAAYoB,WAAWG,eAAeH,WAAWG,cAAcK,KACpE3B;gBAEFhC,SAASM,QAAOT,OAAO,KAAKgD,QAAQE,UAAUL,UAAU7B,KAAKE,OAAO4C,IAAI,GAAGlC,YAAYgC,gBACrF,QAAQ1C,MAAKuB,MAAM,OAAOtC;AAC9B;YAEA,IAAMe,OAAOY,QAAQd,KAAKe,QAAQuB,WAAWG,cAAcF,SAASE,cAAczC,KAAKkB,UAAUC;YACjGhC,UAAUM,QAAOT,OAAO,KAAKgD,QAAQE,UAAUL,UAAU7B,KAAKE,OAAO,GAAGU,YAAYgC,gBAClF,QAAQ1C,KAAKuB,MAAM;YACrBtC,UAAUM,QAAOT,OAAO,KAAKgD,QAAQE,SAASU,eAAe,IAAI1C,KAAK0B,OAAO;YAE7E,KAAA,IAASkB,KAAI,GAAGA,MAAKd,QAAQI,YAAYU,MAAK;gBAC5C,IAAIL,cAAcK,MAAKP,SAASzD,QAAQ;gBACxC,IAAMoB,SAAOY,QACXd,KAAKe,QACLuB,WAAWG,cAAcK,KACzBP,SAASE,cAAcK,KACvB9C,KAAKkB,YAAYoB,WAAWG,eAAeH,WAAWG,cAAcK,MACpE3B;gBAEFhC,UAAUM,QAAOT,OAAO,KAAKgD,QAAQE,UAAUL,UAAU7B,KAAKE,OAAO4C,KAAI,GAAGlC,YAAYgC,gBACtF,QAAQ1C,OAAKuB,MAAM;AACvB;YAEA,OAAOtC,OAAOwC,QAAQ,OAAO;AAC/B;QAEAvB,UAAiB2B;;;;;;;;QC7FjB,IAAM1B,iBAAgBQ;QAEtB,IAAMkC,2BAA2B,EAC/B,QACA,SACA,WACA,aACA,cACA,aACA,aACA,iBACA,gBACA;QAGF,IAAMC,kBAAkB,EACtB,UACA,YACA;QAGF,SAASC,oBAAqBC;YAC5B,IAAM/D,SAAS,CAAA;YAEf,IAAI+D,SAAQ,MAAM;gBAChBvE,OAAOC,KAAKsE,MAAKC,QAAQ,SAAUC;oBACjCF,KAAIE,OAAOD,QAAQ,SAAUE;wBAC3BlE,OAAOmE,OAAOD,UAAUD;AAC1B;AACF;AACF;YAEA,OAAOjE;AACT;QAEA,SAASoE,MAAMC,KAAKxB;YAClBA,UAAUA,WAAW,CAAA;YAErBrD,OAAOC,KAAKoD,SAASmB,QAAQ,SAAUlD;gBACrC,IAAI8C,yBAAyBU,QAAQxD,WAAU,GAAI;oBACjD,MAAM,IAAII,eAAc,qBAAqBJ,OAAO,gCAAgCuD,MAAM;AAC5F;AACF;YAGAhD,KAAKwB,UAAUA;YACfxB,KAAKgD,MAAMA;YACXhD,KAAKkD,OAAO1B,QAAQ,WAAW;YAC/BxB,KAAKmD,UAAU3B,QAAQ,cAAc;gBAAc,OAAO;;YAC1DxB,KAAKoD,YAAY5B,QAAQ,gBAAgB,SAAU6B;gBAAQ,OAAOA;;YAClErD,KAAKsD,aAAa9B,QAAQ,iBAAiB;YAC3CxB,KAAKuD,YAAY/B,QAAQ,gBAAgB;YACzCxB,KAAKwD,YAAYhC,QAAQ,gBAAgB;YACzCxB,KAAKyD,gBAAgBjC,QAAQ,oBAAoB;YACjDxB,KAAK0D,eAAelC,QAAQ,mBAAmB;YAC/CxB,KAAK2D,QAAQnC,QAAQ,YAAY;YACjCxB,KAAK4D,eAAenB,oBAAoBjB,QAAQ,mBAAmB;YAEnE,IAAIgB,gBAAgBS,QAAQjD,KAAKkD,WAAU,GAAI;gBAC7C,MAAM,IAAIrD,eAAc,mBAAmBG,KAAKkD,OAAO,yBAAyBF,MAAM;AACxF;AACF;QAEAa,OAAiBd;;;;;;;;QC/DjB,IAAMlD,iBAAgBQ;QACtB,IAAM0C,QAAOe;QAEb,SAASC,YAAaC,SAAQvE;YAC5B,IAAMd,SAAS;YAEfqF,QAAOvE,MAAMkD,QAAQ,SAAUsB;gBAC7B,IAAIC,WAAWvF,OAAOL;gBAEtBK,OAAOgE,QAAQ,SAAUwB,cAAcC;oBACrC,IAAID,aAAanB,QAAQiB,YAAYjB,OACjCmB,aAAajB,SAASe,YAAYf,QAClCiB,aAAaR,UAAUM,YAAYN,OAAO;wBAC5CO,WAAWE;AACb;AACF;gBAEAzF,OAAOuF,YAAYD;AACrB;YAEA,OAAOtF;AACT;QAEA,SAAS0F;YACP,IAAM1F,SAAS;gBACb2F,QAAQ,CAAA;gBACR1G,UAAU,CAAA;gBACV2G,SAAS,CAAA;gBACTC,UAAU,CAAA;gBACVb,OAAO;oBACLW,QAAQ;oBACR1G,UAAU;oBACV2G,SAAS;oBACTC,UAAU;;;YAGd,SAASC,YAAaZ;gBACpB,IAAIA,MAAKF,OAAO;oBACdhF,OAAOgF,MAAME,MAAKX,MAAMf,KAAK0B;oBAC7BlF,OAAOgF,MAAM,YAAYxB,KAAK0B;AAChC,uBAAO;oBACLlF,OAAOkF,MAAKX,MAAMW,MAAKb,OAAOrE,OAAO,YAAYkF,MAAKb,OAAOa;AAC/D;AACF;YAEA,KAAA,IAASxF,QAAQ,GAAGC,SAASoG,UAAUpG,QAAQD,QAAQC,QAAQD,SAAS,GAAG;gBACzEqG,UAAUrG,OAAOsE,QAAQ8B;AAC3B;YACA,OAAO9F;AACT;QAEA,SAASgG,QAAQC;YACf,OAAO5E,KAAKjC,OAAO6G;AACrB;QAEAD,QAAOpH,UAAUQ,SAAS,SAASA,OAAQ6G;YACzC,IAAIC,WAAW;YACf,IAAIC,WAAW;YAEf,IAAIF,sBAAsB7B,OAAM;gBAE9B+B,SAAS3C,KAAKyC;uBACL/G,MAAMC,QAAQ8G,aAAa;gBAEpCE,WAAWA,SAASC,OAAOH;uBAClBA,eAAe/G,MAAMC,QAAQ8G,WAAWC,aAAahH,MAAMC,QAAQ8G,WAAWE,YAAY;gBAEnG,IAAIF,WAAWC,UAAUA,WAAWA,SAASE,OAAOH,WAAWC;gBAC/D,IAAID,WAAWE,UAAUA,WAAWA,SAASC,OAAOH,WAAWE;AACjE,mBAAO;gBACL,MAAM,IAAIjF,eAAc;AAE1B;YAEAgF,SAASlC,QAAQ,SAAUkB;gBACzB,MAAMA,iBAAgBd,QAAO;oBAC3B,MAAM,IAAIlD,eAAc;AAC1B;gBAEA,IAAIgE,MAAKmB,YAAYnB,MAAKmB,aAAa,UAAU;oBAC/C,MAAM,IAAInF,eAAc;AAC1B;gBAEA,IAAIgE,MAAKF,OAAO;oBACd,MAAM,IAAI9D,eAAc;AAC1B;AACF;YAEAiF,SAASnC,QAAQ,SAAUkB;gBACzB,MAAMA,iBAAgBd,QAAO;oBAC3B,MAAM,IAAIlD,eAAc;AAC1B;AACF;YAEA,IAAMlB,SAASR,OAAOgC,OAAOwE,QAAOpH;YAEpCoB,OAAOkG,YAAY7E,KAAK6E,YAAY,IAAIE,OAAOF;YAC/ClG,OAAOmG,YAAY9E,KAAK8E,YAAY,IAAIC,OAAOD;YAE/CnG,OAAOsG,mBAAmBlB,YAAYpF,QAAQ;YAC9CA,OAAOuG,mBAAmBnB,YAAYpF,QAAQ;YAC9CA,OAAOwG,kBAAkBd,WAAW1F,OAAOsG,kBAAkBtG,OAAOuG;YAEpE,OAAOvG;AACT;QAEAqF,SAAiBW;;;;;;;;QC1GjB,IAAM5B,QAAO1C;QAEbY,MAAiB,IAAI8B,MAAK,yBAAyB;YACjDG,MAAM;YACNE,WAAW,SAAXA,UAAqBC;gBAAQ,OAAOA,SAAS,OAAOA,OAAO;AAAG;;;;;;;;;QCJhE,IAAMN,QAAO1C;QAEb+E,MAAiB,IAAIrC,MAAK,yBAAyB;YACjDG,MAAM;YACNE,WAAW,SAAXA,UAAqBC;gBAAQ,OAAOA,SAAS,OAAOA,OAAO;AAAG;;;;;;;;;QCJhE,IAAMN,QAAO1C;QAEbqC,MAAiB,IAAIK,MAAK,yBAAyB;YACjDG,MAAM;YACNE,WAAW,SAAXA,UAAqBC;gBAAQ,OAAOA,SAAS,OAAOA,OAAO,CAAA;AAAG;;;;;;;;;QCDhE,IAAMsB,UAAStE;QAEfgF,WAAiB,IAAIV,QAAO;YAC1BG,UAAU,EACRhB,cACAwB,cACAC;;;;;;;;;QCTJ,IAAMxC,QAAO1C;QAEb,SAASmF,gBAAiBnC;YACxB,IAAIA,SAAS,MAAM,OAAO;YAE1B,IAAM/B,MAAM+B,KAAK/E;YAEjB,OAAQgD,QAAQ,KAAK+B,SAAS,OACtB/B,QAAQ,MAAM+B,SAAS,UAAUA,SAAS,UAAUA,SAAS;AACvE;QAEA,SAASoC;YACP,OAAO;AACT;QAEA,SAASC,OAAQC;YACf,OAAOA,WAAW;AACpB;QAEAC,QAAiB,IAAI7C,MAAK,0BAA0B;YAClDG,MAAM;YACNC,SAASqC;YACTpC,WAAWqC;YACXlC,WAAWmC;YACXlC,WAAW;gBACTqC,WAAW,SAAXA;oBAAyB,OAAO;;gBAChCC,WAAW,SAAXA;oBAAyB,OAAO;;gBAChCC,WAAW,SAAXA;oBAAyB,OAAO;;gBAChCC,WAAW,SAAXA;oBAAyB,OAAO;;gBAChCC,OAAO,SAAPA;oBAAqB,OAAO;AAAG;;YAEjCvC,cAAc;;;;;;;;;QC/BhB,IAAMX,QAAO1C;QAEb,SAAS6F,mBAAoB7C;YAC3B,IAAIA,SAAS,MAAM,OAAO;YAE1B,IAAM/B,MAAM+B,KAAK/E;YAEjB,OAAQgD,QAAQ,MAAM+B,SAAS,UAAUA,SAAS,UAAUA,SAAS,WAC7D/B,QAAQ,MAAM+B,SAAS,WAAWA,SAAS,WAAWA,SAAS;AACzE;QAEA,SAAS8C,qBAAsB9C;YAC7B,OAAOA,SAAS,UACTA,SAAS,UACTA,SAAS;AAClB;QAEA,SAAS+C,UAAWT;YAClB,OAAOxH,OAAOZ,UAAU6C,SAASL,KAAK4F,YAAY;AACpD;QAEAU,OAAiB,IAAItD,MAAK,0BAA0B;YAClDG,MAAM;YACNC,SAAS+C;YACT9C,WAAW+C;YACX5C,WAAW6C;YACX5C,WAAW;gBACTsC,WAAW,SAAXA,UAAqBH;oBAAU,OAAOA,SAAS,SAAS;;gBACxDI,WAAW,SAAXA,UAAqBJ;oBAAU,OAAOA,SAAS,SAAS;;gBACxDK,WAAW,SAAXA,UAAqBL;oBAAU,OAAOA,SAAS,SAAS;AAAQ;;YAElEjC,cAAc;;;;;;;;;QC/BhB,IAAMzE,UAASoB;QACf,IAAM0C,QAAOe;QAEb,SAASwC,UAAWC;YAClB,OAASA,KAAK,MAAiBA,KAAK,MAC3BA,KAAK,MAAiBA,KAAK,MAC3BA,KAAK,MAAiBA,KAAK;AACtC;QAEA,SAASC,UAAWD;YAClB,OAASA,KAAK,MAAiBA,KAAK;AACtC;QAEA,SAASE,UAAWF;YAClB,OAASA,KAAK,MAAiBA,KAAK;AACtC;QAEA,SAASG,mBAAoBrD;YAC3B,IAAIA,SAAS,MAAM,OAAO;YAE1B,IAAM/B,MAAM+B,KAAK/E;YACjB,IAAID,QAAQ;YACZ,IAAIsI,YAAY;YAEhB,KAAKrF,KAAK,OAAO;YAEjB,IAAIsF,KAAKvD,KAAKhF;YAGd,IAAIuI,OAAO,OAAOA,OAAO,KAAK;gBAC5BA,KAAKvD,OAAOhF;AACd;YAEA,IAAIuI,OAAO,KAAK;gBAEd,IAAIvI,QAAQ,MAAMiD,KAAK,OAAO;gBAC9BsF,KAAKvD,OAAOhF;gBAIZ,IAAIuI,OAAO,KAAK;oBAEdvI;oBAEA,MAAOA,QAAQiD,KAAKjD,SAAS;wBAC3BuI,KAAKvD,KAAKhF;wBACV,IAAIuI,OAAO,OAAOA,OAAO,KAAK,OAAO;wBACrCD,YAAY;AACd;oBACA,OAAOA,aAAaE,SAASC,iBAAiBzD;AAChD;gBAEA,IAAIuD,OAAO,KAAK;oBAEdvI;oBAEA,MAAOA,QAAQiD,KAAKjD,SAAS;wBAC3B,KAAKiI,UAAUjD,KAAK0D,WAAW1I,SAAS,OAAO;wBAC/CsI,YAAY;AACd;oBACA,OAAOA,aAAaE,SAASC,iBAAiBzD;AAChD;gBAEA,IAAIuD,OAAO,KAAK;oBAEdvI;oBAEA,MAAOA,QAAQiD,KAAKjD,SAAS;wBAC3B,KAAKmI,UAAUnD,KAAK0D,WAAW1I,SAAS,OAAO;wBAC/CsI,YAAY;AACd;oBACA,OAAOA,aAAaE,SAASC,iBAAiBzD;AAChD;AACF;YAIA,MAAOhF,QAAQiD,KAAKjD,SAAS;gBAC3B,KAAKoI,UAAUpD,KAAK0D,WAAW1I,SAAS;oBACtC,OAAO;AACT;gBACAsI,YAAY;AACd;YAEA,KAAKA,WAAW,OAAO;YAEvB,OAAOE,SAASC,iBAAiBzD;AACnC;QAEA,SAASyD,iBAAkBzD;YACzB,IAAI2D,QAAQ3D;YACZ,IAAI4D,OAAO;YAEX,IAAIL,KAAKI,MAAM;YAEf,IAAIJ,OAAO,OAAOA,OAAO,KAAK;gBAC5B,IAAIA,OAAO,KAAKK,QAAO;gBACvBD,QAAQA,MAAM9F,MAAM;gBACpB0F,KAAKI,MAAM;AACb;YAEA,IAAIA,UAAU,KAAK,OAAO;YAE1B,IAAIJ,OAAO,KAAK;gBACd,IAAII,MAAM,OAAO,KAAK,OAAOC,OAAOC,SAASF,MAAM9F,MAAM,IAAI;gBAC7D,IAAI8F,MAAM,OAAO,KAAK,OAAOC,OAAOC,SAASF,MAAM9F,MAAM,IAAI;gBAC7D,IAAI8F,MAAM,OAAO,KAAK,OAAOC,OAAOC,SAASF,MAAM9F,MAAM,IAAI;AAC/D;YAEA,OAAO+F,OAAOC,SAASF,OAAO;AAChC;QAEA,SAASG,qBAAsB9D;YAC7B,OAAOyD,iBAAiBzD;AAC1B;QAEA,SAAS+D,UAAWzB;YAClB,OAAQxH,OAAOZ,UAAU6C,SAASL,KAAK4F,YAAa,qBAC5CA,SAAS,MAAM,MAAM1G,QAAOJ,eAAe8G;AACrD;QAEA0B,MAAiB,IAAItE,MAAK,yBAAyB;YACjDG,MAAM;YACNC,SAASuD;YACTtD,WAAW+D;YACX5D,WAAW6D;YACX5D,WAAW;gBACT8D,QAAQ,SAARA,QAAkBC;oBAAO,OAAOA,OAAO,IAAI,OAAOA,IAAInH,SAAS,KAAK,QAAQmH,IAAInH,SAAS,GAAGc,MAAM;;gBAClGsG,OAAO,SAAPA,MAAiBD;oBAAO,OAAOA,OAAO,IAAI,OAAOA,IAAInH,SAAS,KAAK,QAAQmH,IAAInH,SAAS,GAAGc,MAAM;;gBACjGuG,SAAS,SAATA,QAAmBF;oBAAO,OAAOA,IAAInH,SAAS;;gBAC9CsH,aAAa,SAAbA,YAAuBH;oBAAO,OAAOA,OAAO,IAAI,OAAOA,IAAInH,SAAS,IAAIuH,gBAAgB,QAAQJ,IAAInH,SAAS,IAAIuH,cAAczG,MAAM;AAAG;;YAE1IwC,cAAc;YACdE,cAAc;gBACZ0D,QAAQ,EAAC,GAAG;gBACZE,OAAO,EAAC,GAAG;gBACXC,SAAS,EAAC,IAAI;gBACdC,aAAa,EAAC,IAAI;;;;;;;;;;QCzItB,IAAMzI,UAASoB;QACf,IAAM0C,QAAOe;QAEb,IAAM8D,qBAAqB,IAAIC,OAE7B;QASF,IAAMC,6BAA6B,IAAID,OACrC;QAMF,SAASE,iBAAkB1E;YACzB,IAAIA,SAAS,MAAM,OAAO;YAE1B,KAAKuE,mBAAmBI,KAAK3E,OAAO;gBAClC,OAAO;AACT;YAEA,IAAIwD,SAASoB,WAAW5E,MAAM,MAAM;gBAClC,OAAO;AACT;YAEA,OAAOyE,2BAA2BE,KAAK3E;AACzC;QAEA,SAAS6E,mBAAoB7E;YAC3B,IAAI2D,QAAQ3D,KAAK8E;YACjB,IAAMlB,OAAOD,MAAM,OAAO,OAAM,IAAK;YAErC,IAAI,KAAK/D,QAAQ+D,MAAM,OAAO,GAAG;gBAC/BA,QAAQA,MAAM9F,MAAM;AACtB;YAEA,IAAI8F,UAAU,QAAQ;gBACpB,OAAQC,SAAS,IAAKlI,OAAOqJ,oBAAoBrJ,OAAOC;AAC1D,mBAAA,IAAWgI,UAAU,QAAQ;gBAC3B,OAAOqB;AACT;YACA,OAAOpB,OAAOgB,WAAWjB,OAAO;AAClC;QAEA,IAAMsB,yBAAyB;QAE/B,SAASC,mBAAoB5C,QAAQ/C;YACnC,IAAI4F,MAAM7C,SAAS;gBACjB,QAAQ/C;kBACN,KAAK;oBAAa,OAAO;;kBACzB,KAAK;oBAAa,OAAO;;kBACzB,KAAK;oBAAa,OAAO;;AAE7B,mBAAA,IAAW7D,OAAOqJ,sBAAsBzC,QAAQ;gBAC9C,QAAQ/C;kBACN,KAAK;oBAAa,OAAO;;kBACzB,KAAK;oBAAa,OAAO;;kBACzB,KAAK;oBAAa,OAAO;;AAE7B,mBAAA,IAAW7D,OAAOC,sBAAsB2G,QAAQ;gBAC9C,QAAQ/C;kBACN,KAAK;oBAAa,OAAO;;kBACzB,KAAK;oBAAa,OAAO;;kBACzB,KAAK;oBAAa,OAAO;;uBAElB3D,QAAOJ,eAAe8G,SAAS;gBACxC,OAAO;AACT;YAEA,IAAM8C,MAAM9C,OAAOvF,SAAS;YAK5B,OAAOkI,uBAAuBN,KAAKS,OAAOA,IAAItH,QAAQ,KAAK,QAAQsH;AACrE;QAEA,SAASC,QAAS/C;YAChB,OAAQxH,OAAOZ,UAAU6C,SAASL,KAAK4F,YAAY,sBAC3CA,SAAS,MAAM,KAAK1G,QAAOJ,eAAe8G;AACpD;QAEAgD,QAAiB,IAAI5F,MAAK,2BAA2B;YACnDG,MAAM;YACNC,SAAS4E;YACT3E,WAAW8E;YACX3E,WAAWmF;YACXlF,WAAW+E;YACX7E,cAAc;;;;;;;;;QCxFhBkF,OAAiBvI,kBAAsBtC,OAAO;YAC5C8G,UAAU,EACRf,gBACAwB,eACAC,cACAsD;;;;;;;;;QCNJC,OAAiBzI;;;;;;;;QCNjB,IAAM0C,QAAO1C;QAEb,IAAM0I,mBAAmB,IAAIlB,OAC3B;QAIF,IAAMmB,wBAAwB,IAAInB,OAChC;QAWF,SAASoB,qBAAsB5F;YAC7B,IAAIA,SAAS,MAAM,OAAO;YAC1B,IAAI0F,iBAAiB7G,KAAKmB,UAAU,MAAM,OAAO;YACjD,IAAI2F,sBAAsB9G,KAAKmB,UAAU,MAAM,OAAO;YACtD,OAAO;AACT;QAEA,SAAS6F,uBAAwB7F;YAC/B,IAAI8F,WAAW;YACf,IAAIC,QAAQ;YAEZ,IAAIpH,QAAQ+G,iBAAiB7G,KAAKmB;YAClC,IAAIrB,UAAU,MAAMA,QAAQgH,sBAAsB9G,KAAKmB;YAEvD,IAAIrB,UAAU,MAAM,MAAM,IAAIlC,MAAM;YAIpC,IAAMuJ,QAASrH,MAAM;YACrB,IAAMsH,SAAUtH,MAAM,KAAM;YAC5B,IAAMuH,OAAQvH,MAAM;YAEpB,KAAKA,MAAM,IAAI;gBACb,OAAO,IAAIwH,KAAKA,KAAKC,IAAIJ,MAAMC,OAAOC;AACxC;YAIA,IAAMG,QAAS1H,MAAM;YACrB,IAAM2H,UAAW3H,MAAM;YACvB,IAAM4H,UAAW5H,MAAM;YAEvB,IAAIA,MAAM,IAAI;gBACZmH,WAAWnH,MAAM,GAAGd,MAAM,GAAG;gBAC7B,OAAOiI,SAAS7K,SAAS,GAAG;oBAC1B6K,YAAY;AACd;gBACAA,YAAYA;AACd;YAIA,IAAInH,MAAM,IAAI;gBACZ,IAAM6H,UAAW7H,MAAM;gBACvB,IAAM8H,aAAa9H,MAAM,OAAO;gBAChCoH,SAASS,SAAS,KAAKC,YAAY;gBACnC,IAAI9H,MAAM,OAAO,cAAcoH;AACjC;YAEA,IAAMW,OAAO,IAAIP,KAAKA,KAAKC,IAAIJ,MAAMC,OAAOC,KAAKG,MAAMC,QAAQC,QAAQT;YAEvE,IAAIC,OAAOW,KAAKC,QAAQD,KAAKE,YAAYb;YAEzC,OAAOW;AACT;QAEA,SAASG,uBAAwBvE;YAC/B,OAAOA,OAAOwE;AAChB;QAEAC,YAAiB,IAAIrH,MAAK,+BAA+B;YACvDG,MAAM;YACNC,SAAS8F;YACT7F,WAAW8F;YACX5F,YAAYkG;YACZhG,WAAW0G;;;;;;;;;QCpFb,IAAMnH,QAAO1C;QAEb,SAASgK,iBAAkBhH;YACzB,OAAOA,SAAS,QAAQA,SAAS;AACnC;QAEAiH,QAAiB,IAAIvH,MAAK,2BAA2B;YACnDG,MAAM;YACNC,SAASkH;;;;;;;;;QCRX,IAAMtH,QAAO1C;QAGb,IAAMkK,aAAa;QAEnB,SAASC,kBAAmBnH;YAC1B,IAAIA,SAAS,MAAM,OAAO;YAE1B,IAAIoH,SAAS;YACb,IAAMnJ,MAAM+B,KAAK/E;YACjB,IAAMoE,OAAM6H;YAGZ,KAAA,IAASG,MAAM,GAAGA,MAAMpJ,KAAKoJ,OAAO;gBAClC,IAAMC,OAAOjI,KAAIO,QAAQI,KAAKuH,OAAOF;gBAGrC,IAAIC,OAAO,IAAI;gBAGf,IAAIA,OAAO,GAAG,OAAO;gBAErBF,UAAU;AACZ;YAGA,OAAQA,SAAS,MAAO;AAC1B;QAEA,SAASI,oBAAqBxH;YAC5B,IAAMyH,QAAQzH,KAAKlC,QAAQ,YAAY;YACvC,IAAMG,MAAMwJ,MAAMxM;YAClB,IAAMoE,OAAM6H;YACZ,IAAIQ,OAAO;YACX,IAAMpM,SAAS;YAIf,KAAA,IAAS+L,MAAM,GAAGA,MAAMpJ,KAAKoJ,OAAO;gBAClC,IAAKA,MAAM,MAAM,KAAMA,KAAK;oBAC1B/L,OAAOwD,KAAM4I,QAAQ,KAAM;oBAC3BpM,OAAOwD,KAAM4I,QAAQ,IAAK;oBAC1BpM,OAAOwD,KAAK4I,OAAO;AACrB;gBAEAA,OAAQA,QAAQ,IAAKrI,KAAIO,QAAQ6H,MAAMF,OAAOF;AAChD;YAIA,IAAMM,WAAY1J,MAAM,IAAK;YAE7B,IAAI0J,aAAa,GAAG;gBAClBrM,OAAOwD,KAAM4I,QAAQ,KAAM;gBAC3BpM,OAAOwD,KAAM4I,QAAQ,IAAK;gBAC1BpM,OAAOwD,KAAK4I,OAAO;AACrB,mBAAA,IAAWC,aAAa,IAAI;gBAC1BrM,OAAOwD,KAAM4I,QAAQ,KAAM;gBAC3BpM,OAAOwD,KAAM4I,QAAQ,IAAK;AAC5B,mBAAA,IAAWC,aAAa,IAAI;gBAC1BrM,OAAOwD,KAAM4I,QAAQ,IAAK;AAC5B;YAEA,OAAO,IAAIE,WAAWtM;AACxB;QAEA,SAASuM,oBAAqBvF;YAC5B,IAAIhH,SAAS;YACb,IAAIoM,OAAO;YACX,IAAMzJ,MAAMqE,OAAOrH;YACnB,IAAMoE,OAAM6H;YAIZ,KAAA,IAASG,MAAM,GAAGA,MAAMpJ,KAAKoJ,OAAO;gBAClC,IAAKA,MAAM,MAAM,KAAMA,KAAK;oBAC1B/L,UAAU+D,KAAKqI,QAAQ,KAAM;oBAC7BpM,UAAU+D,KAAKqI,QAAQ,KAAM;oBAC7BpM,UAAU+D,KAAKqI,QAAQ,IAAK;oBAC5BpM,UAAU+D,KAAIqI,OAAO;AACvB;gBAEAA,QAAQA,QAAQ,KAAKpF,OAAO+E;AAC9B;YAIA,IAAM7J,OAAOS,MAAM;YAEnB,IAAIT,SAAS,GAAG;gBACdlC,UAAU+D,KAAKqI,QAAQ,KAAM;gBAC7BpM,UAAU+D,KAAKqI,QAAQ,KAAM;gBAC7BpM,UAAU+D,KAAKqI,QAAQ,IAAK;gBAC5BpM,UAAU+D,KAAIqI,OAAO;AACvB,mBAAA,IAAWlK,SAAS,GAAG;gBACrBlC,UAAU+D,KAAKqI,QAAQ,KAAM;gBAC7BpM,UAAU+D,KAAKqI,QAAQ,IAAK;gBAC5BpM,UAAU+D,KAAKqI,QAAQ,IAAK;gBAC5BpM,UAAU+D,KAAI;AAChB,mBAAA,IAAW7B,SAAS,GAAG;gBACrBlC,UAAU+D,KAAKqI,QAAQ,IAAK;gBAC5BpM,UAAU+D,KAAKqI,QAAQ,IAAK;gBAC5BpM,UAAU+D,KAAI;gBACd/D,UAAU+D,KAAI;AAChB;YAEA,OAAO/D;AACT;QAEA,SAASwM,SAAU5D;YACjB,OAAOpJ,OAAOZ,UAAU6C,SAASL,KAAKwH,SAAS;AACjD;QAEAD,SAAiB,IAAIvE,MAAK,4BAA4B;YACpDG,MAAM;YACNC,SAASqH;YACTpH,WAAWyH;YACXtH,WAAW4H;YACX3H,WAAW0H;;;;;;;;;QCtHb,IAAMnI,QAAO1C;QAEb,IAAM+K,kBAAkBjN,OAAOZ,UAAU8N;QACzC,IAAMC,YAAYnN,OAAOZ,UAAU6C;QAEnC,SAASmL,gBAAiBlI;YACxB,IAAIA,SAAS,MAAM,OAAO;YAE1B,IAAMmI,aAAa,CAAA;YACnB,IAAM7F,SAAStC;YAEf,KAAA,IAAShF,QAAQ,GAAGC,SAASqH,OAAOrH,QAAQD,QAAQC,QAAQD,SAAS,GAAG;gBACtE,IAAMoN,OAAO9F,OAAOtH;gBACpB,IAAIqN,aAAa;gBAEjB,IAAIJ,UAAUvL,KAAK0L,UAAU,mBAAmB,OAAO;gBAEvD,IAAIE,eAAO;gBACX,KAAKA,WAAWF,MAAM;oBACpB,IAAIL,gBAAgBrL,KAAK0L,MAAME,UAAU;wBACvC,KAAKD,YAAYA,aAAa,WACzB,OAAO;AACd;AACF;gBAEA,KAAKA,YAAY,OAAO;gBAExB,IAAIN,gBAAgBrL,KAAKyL,YAAYG,UAAU,OAAO;gBACtDxN,OAAOyN,eAAeJ,YAAYG,SAAS;oBAAE3E,OAAO;;AACtD;YAEA,OAAO;AACT;QAEA,SAAS6E,kBAAmBxI;YAC1B,OAAOA,SAAS,OAAOA,OAAO;AAChC;QAEAyI,OAAiB,IAAI/I,MAAK,0BAA0B;YAClDG,MAAM;YACNC,SAASoI;YACTnI,WAAWyI;;;;;;;;;QCzCb,IAAM9I,QAAO1C;QAEb,IAAMiL,YAAYnN,OAAOZ,UAAU6C;QAEnC,SAAS2L,iBAAkB1I;YACzB,IAAIA,SAAS,MAAM,OAAO;YAE1B,IAAMsC,SAAStC;YAEf,IAAM1E,SAAS,IAAId,MAAM8H,OAAOrH;YAEhC,KAAA,IAASD,QAAQ,GAAGC,SAASqH,OAAOrH,QAAQD,QAAQC,QAAQD,SAAS,GAAG;gBACtE,IAAMoN,OAAO9F,OAAOtH;gBAEpB,IAAIiN,UAAUvL,KAAK0L,UAAU,mBAAmB,OAAO;gBAEvD,IAAMrN,OAAOD,OAAOC,KAAKqN;gBAEzB,IAAIrN,KAAKE,WAAW,GAAG,OAAO;gBAE9BK,OAAON,SAAS,EAACD,KAAK,IAAIqN,KAAKrN,KAAK;AACtC;YAEA,OAAO;AACT;QAEA,SAAS4N,mBAAoB3I;YAC3B,IAAIA,SAAS,MAAM,OAAO;YAE1B,IAAMsC,SAAStC;YACf,IAAM1E,SAAS,IAAId,MAAM8H,OAAOrH;YAEhC,KAAA,IAASD,QAAQ,GAAGC,SAASqH,OAAOrH,QAAQD,QAAQC,QAAQD,SAAS,GAAG;gBACtE,IAAMoN,OAAO9F,OAAOtH;gBAEpB,IAAMD,OAAOD,OAAOC,KAAKqN;gBAEzB9M,OAAON,SAAS,EAACD,KAAK,IAAIqN,KAAKrN,KAAK;AACtC;YAEA,OAAOO;AACT;QAEAsN,QAAiB,IAAIlJ,MAAK,2BAA2B;YACnDG,MAAM;YACNC,SAAS4I;YACT3I,WAAW4I;;;;;;;;;QC9Cb,IAAMjJ,QAAO1C;QAEb,IAAM+K,kBAAkBjN,OAAOZ,UAAU8N;QAEzC,SAASa,eAAgB7I;YACvB,IAAIA,SAAS,MAAM,OAAO;YAE1B,IAAMsC,SAAStC;YAEf,KAAA,IAAW9E,OAAOoH,QAAQ;gBACxB,IAAIyF,gBAAgBrL,KAAK4F,QAAQpH,MAAM;oBACrC,IAAIoH,OAAOpH,SAAS,MAAM,OAAO;AACnC;AACF;YAEA,OAAO;AACT;QAEA,SAAS4N,iBAAkB9I;YACzB,OAAOA,SAAS,OAAOA,OAAO,CAAA;AAChC;QAEA+I,MAAiB,IAAIrJ,MAAK,yBAAyB;YACjDG,MAAM;YACNC,SAAS+I;YACT9I,WAAW+I;;;;;;;;;QCnBbE,WAAiBhM,cAAkBtC,OAAO;YACxC8G,UAAU,EACRf,oBACAwB;YAEFR,UAAU,EACRS,iBACAsD,eACAyD,gBACAC;;;;;;;;QCjBQ,SAAArP,QAAAC;YAAA;YAAA,OAAAD,UAAA,qBAAAE,UAAA,mBAAAA,OAAAC,WAAA,SAAAF;gBAAA,cAAAA;gBAAA,SAAAA;gBAAA,OAAAA,MAAA,qBAAAC,UAAAD,GAAAG,gBAAAF,UAAAD,OAAAC,OAAAG,YAAA,kBAAAJ;AAAA,eAAAD,QAAAC;AAAA;QAEZ,IAAM8B,UAASoB;QACf,IAAMR,iBAAgBiE;QACtB,IAAMvC,cAAc+D;QACpB,IAAMkH,kBAAiBjH;QAEvB,IAAM6F,kBAAkBjN,OAAOZ,UAAU8N;QAEzC,IAAMoB,kBAAkB;QACxB,IAAMC,mBAAmB;QACzB,IAAMC,mBAAmB;QACzB,IAAMC,oBAAoB;QAE1B,IAAMC,gBAAgB;QACtB,IAAMC,iBAAiB;QACvB,IAAMC,gBAAgB;QAGtB,IAAMC,wBAAwB;QAC9B,IAAMC,gCAAgC;QAEtC,IAAMC,0BAA0B;QAEhC,IAAMC,qBAAqB;QAE3B,IAAMC,kBAAkB;QAExB,SAASC,OAAQ9F;YAAO,OAAOpJ,OAAOZ,UAAU6C,SAASL,KAAKwH;AAAK;QAEnE,SAAS+F,MAAO/G;YACd,OAAQA,MAAM,MAAkBA,MAAM;AACxC;QAEA,SAASgH,aAAchH;YACrB,OAAQA,MAAM,KAAmBA,MAAM;AACzC;QAEA,SAASiH,UAAWjH;YAClB,OAAQA,MAAM,KACNA,MAAM,MACNA,MAAM,MACNA,MAAM;AAChB;QAEA,SAASkH,gBAAiBlH;YACxB,OAAOA,MAAM,MACNA,MAAM,MACNA,MAAM,MACNA,MAAM,OACNA,MAAM;AACf;QAEA,SAASmH,YAAanH;YACpB,IAAKA,KAAK,MAAiBA,KAAK,IAAc;gBAC5C,OAAOA,IAAI;AACb;YAEA,IAAMoH,KAAKpH,IAAI;YAEf,IAAKoH,MAAM,MAAiBA,MAAM,KAAc;gBAC9C,OAAOA,KAAK,KAAO;AACrB;YAEA,QAAO;AACT;QAEA,SAASC,cAAerH;YACtB,IAAIA,MAAM,KAAa;gBAAE,OAAO;AAAE;YAClC,IAAIA,MAAM,KAAa;gBAAE,OAAO;AAAE;YAClC,IAAIA,MAAM,IAAa;gBAAE,OAAO;AAAE;YAClC,OAAO;AACT;QAEA,SAASsH,gBAAiBtH;YACxB,IAAKA,KAAK,MAAiBA,KAAK,IAAc;gBAC5C,OAAOA,IAAI;AACb;YAEA,QAAO;AACT;QAEA,SAASuH,qBAAsBvH;YAC7B,QAAQA;cACN,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAe,OAAO;;cAC3B,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAiB,OAAO;;cAC7B,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAa,OAAO;;cACzB,KAAK;gBAAa,OAAO;;cACzB;gBAAS,OAAO;;AAEpB;QAEA,SAASwH,kBAAmBxH;YAC1B,IAAIA,KAAK,OAAQ;gBACf,OAAOzD,OAAOkL,aAAazH;AAC7B;YAGA,OAAOzD,OAAOkL,cACVzH,IAAI,SAAa,MAAM,QACvBA,IAAI,QAAY,QAAU;AAEhC;QAIA,SAAS0H,YAAatI,QAAQpH,KAAKyI;YAEjC,IAAIzI,QAAQ,aAAa;gBACvBJ,OAAOyN,eAAejG,QAAQpH,KAAK;oBACjC2P,cAAc;oBACdC,YAAY;oBACZC,UAAU;oBACVpH;;AAEJ,mBAAO;gBACLrB,OAAOpH,OAAOyI;AAChB;AACF;QAEA,IAAMqH,oBAAoB,IAAIxQ,MAAM;QACpC,IAAMyQ,kBAAkB,IAAIzQ,MAAM;QAClC,KAAA,IAASyE,IAAI,GAAGA,IAAI,KAAKA,KAAK;YAC5B+L,kBAAkB/L,KAAKwL,qBAAqBxL,KAAK,IAAI;YACrDgM,gBAAgBhM,KAAKwL,qBAAqBxL;AAC5C;QAEA,SAASiM,MAAOzD,OAAOtJ;YACrBxB,KAAK8K,QAAQA;YAEb9K,KAAKwO,WAAWhN,QAAQ,eAAe;YACvCxB,KAAKgE,SAASxC,QAAQ,aAAagL;YACnCxM,KAAKyO,YAAYjN,QAAQ,gBAAgB;YAGzCxB,KAAK0O,SAASlN,QAAQ,aAAa;YAEnCxB,KAAK4I,OAAOpH,QAAQ,WAAW;YAC/BxB,KAAK2O,WAAWnN,QAAQ,eAAe;YACvCxB,KAAK4O,kBAAkBpN,QAAQ,gBAAgB,WAAWA,QAAQ,cAAc;YAChFxB,KAAK6O,2BAA2BrN,QAAQ,yBAAyB,WAAWA,QAAQ,uBAAuB;YAE3GxB,KAAK8O,gBAAgB9O,KAAKgE,OAAOiB;YACjCjF,KAAK+O,UAAU/O,KAAKgE,OAAOmB;YAE3BnF,KAAK1B,SAASwM,MAAMxM;YACpB0B,KAAKU,WAAW;YAChBV,KAAKN,OAAO;YACZM,KAAKQ,YAAY;YACjBR,KAAKgP,aAAa;YAClBhP,KAAKiP,QAAQ;YACbjP,KAAKkP,iBAAiB;YAItBlP,KAAKmP,kBAAiB;YAEtBnP,KAAKoP,YAAY;YACjBpP,KAAKqP,wBAAwB;AAW/B;QAEA,SAASC,cAAeC,OAAOjQ;YAC7B,IAAME,OAAO;gBACXC,MAAM8P,MAAMf;gBACZjO,QAAQgP,MAAMzE,MAAM5J,MAAM,IAAG;gBAC7BR,UAAU6O,MAAM7O;gBAChBhB,MAAM6P,MAAM7P;gBACZC,QAAQ4P,MAAM7O,WAAW6O,MAAM/O;;YAGjChB,KAAKI,UAAU2B,YAAY/B;YAE3B,OAAO,IAAIK,eAAcP,SAASE;AACpC;QAEA,SAASgQ,WAAYD,OAAOjQ;YAC1B,MAAMgQ,cAAcC,OAAOjQ;AAC7B;QAEA,SAASmQ,aAAcF,OAAOjQ;YAC5B,IAAIiQ,MAAMd,WAAW;gBACnBc,MAAMd,UAAU1O,KAAK,MAAMuP,cAAcC,OAAOjQ;AAClD;AACF;QAEA,SAASoQ,YAAaH,OAAO9P,MAAMuH;YACjC,IAAM2I,eAAeJ,MAAMF;YAE3B,IAAIM,aAAarR,WAAW,GAAG;gBAC7B,IAAMsR,cAAcD,aAAaA,aAAarR,SAAS;gBAEvD,KAAK8M,gBAAgBrL,KAAK6P,aAAanQ,OAAO;oBAC5CmQ,YAAYnQ,QAAQ;wBAClBoQ,SAASzE,gBAAgBrL,KAAKwP,MAAMO,WAAWrQ;wBAC/CuH,OAAOuI,MAAMO,UAAUrQ;;AAE3B;AACF;YAEA8P,MAAMO,UAAUrQ,QAAQuH;AAC1B;QAEA,SAAS+I,uBAAwBR;YAC/BA,MAAMF,sBAAsBlN,KAAKhE,OAAOgC,OAAO;AACjD;QAEA,SAAS6P,wBAAyBT;YAChC,IAAMK,cAAcL,MAAMF,sBAAsBY;YAChD,IAAMN,eAAeJ,MAAMF;YAE3B,IAAIM,aAAarR,WAAW,GAAG;YAE/B,IAAM4R,SAASP,aAAaA,aAAarR,SAAS;YAClD,IAAM6R,QAAQhS,OAAOC,KAAKwR;YAE1B,KAAA,IAASvR,QAAQ,GAAGC,SAAS6R,MAAM7R,QAAQD,QAAQC,QAAQD,SAAS,GAAG;gBACrE,IAAMoB,OAAO0Q,MAAM9R;gBAEnB,KAAK+M,gBAAgBrL,KAAKmQ,QAAQzQ,OAAO;oBACvCyQ,OAAOzQ,QAAQmQ,YAAYnQ;AAC7B;AACF;AACF;QAEA,SAAS2Q,0BAA2Bb;YAClC,IAAMK,cAAcL,MAAMF,sBAAsBY;YAChD,IAAME,QAAQhS,OAAOC,KAAKwR;YAE1B,KAAA,IAASvR,QAAQ8R,MAAM7R,SAAS,GAAGD,SAAS,GAAGA,SAAS,GAAG;gBACzD,IAAMgS,QAAQT,YAAYO,MAAM9R;gBAEhC,IAAIgS,MAAMR,SAAS;oBACjBN,MAAMO,UAAUK,MAAM9R,UAAUgS,MAAMrJ;AACxC,uBAAO;2BACEuI,MAAMO,UAAUK,MAAM9R;AAC/B;AACF;AACF;QAEA,SAASiS,cAAef;YACtB,OAAO;gBACL7O,UAAU6O,MAAM7O;gBAChBhB,MAAM6P,MAAM7P;gBACZc,WAAW+O,MAAM/O;gBACjBwO,YAAYO,MAAMP;gBAClBG,gBAAgBI,MAAMJ;gBACtBnM,KAAKuM,MAAMvM;gBACXuN,QAAQhB,MAAMgB;gBACdrN,MAAMqM,MAAMrM;gBACZvE,QAAQ4Q,MAAM5Q;;AAElB;QAEA,SAAS6R,aAAcjB,OAAOkB;YAC5BlB,MAAM7O,WAAW+P,SAAS/P;YAC1B6O,MAAM7P,OAAO+Q,SAAS/Q;YACtB6P,MAAM/O,YAAYiQ,SAASjQ;YAC3B+O,MAAMP,aAAayB,SAASzB;YAC5BO,MAAMJ,iBAAiBsB,SAAStB;YAChCI,MAAMvM,MAAMyN,SAASzN;YACrBuM,MAAMgB,SAASE,SAASF;YACxBhB,MAAMrM,OAAOuN,SAASvN;YACtBqM,MAAM5Q,SAAS8R,SAAS9R;AAC1B;QAEA,IAAM+R,oBAAoB;YAExBC,MAAM,SAASC,oBAAqBrB,OAAO9P,MAAMoR;gBAC/C,IAAItB,MAAMuB,YAAY,MAAM;oBAC1BtB,WAAWD,OAAO;AACpB;gBAEA,IAAIsB,KAAKvS,WAAW,GAAG;oBACrBkR,WAAWD,OAAO;AACpB;gBAEA,IAAMvN,QAAQ,uBAAuBE,KAAK2O,KAAK;gBAE/C,IAAI7O,UAAU,MAAM;oBAClBwN,WAAWD,OAAO;AACpB;gBAEA,IAAMwB,QAAQ7J,SAASlF,MAAM,IAAI;gBACjC,IAAMgP,QAAQ9J,SAASlF,MAAM,IAAI;gBAEjC,IAAI+O,UAAU,GAAG;oBACfvB,WAAWD,OAAO;AACpB;gBAEAA,MAAMuB,UAAUD,KAAK;gBACrBtB,MAAM0B,kBAAmBD,QAAQ;gBAEjC,IAAIA,UAAU,KAAKA,UAAU,GAAG;oBAC9BvB,aAAaF,OAAO;AACtB;;YAGF2B,KAAK,SAASC,mBAAoB5B,OAAO9P,MAAMoR;gBAC7C,IAAIO;gBAEJ,IAAIP,KAAKvS,WAAW,GAAG;oBACrBkR,WAAWD,OAAO;AACpB;gBAEA,IAAM8B,SAASR,KAAK;gBACpBO,SAASP,KAAK;gBAEd,KAAK1D,mBAAmBnF,KAAKqJ,SAAS;oBACpC7B,WAAWD,OAAO;AACpB;gBAEA,IAAInE,gBAAgBrL,KAAKwP,MAAM+B,QAAQD,SAAS;oBAC9C7B,WAAWD,OAAO,gDAAgD8B,SAAS;AAC7E;gBAEA,KAAKjE,gBAAgBpF,KAAKoJ,SAAS;oBACjC5B,WAAWD,OAAO;AACpB;gBAEA;oBACE6B,SAASG,mBAAmBH;yBACrBI;oBACPhC,WAAWD,OAAO,8BAA8B6B;AAClD;gBAEA7B,MAAM+B,OAAOD,UAAUD;AACzB;;QAGF,SAASK,eAAgBlC,OAAOmC,OAAOC,KAAKC;YAC1C,IAAIF,QAAQC,KAAK;gBACf,IAAME,UAAUtC,MAAMzE,MAAM5J,MAAMwQ,OAAOC;gBAEzC,IAAIC,WAAW;oBACb,KAAA,IAASE,YAAY,GAAGC,UAAUF,QAAQvT,QAAQwT,YAAYC,SAASD,aAAa,GAAG;wBACrF,IAAME,aAAaH,QAAQ9K,WAAW+K;wBACtC,MAAME,eAAe,KACdA,cAAc,MAAQA,cAAc,UAAY;4BACrDxC,WAAWD,OAAO;AACpB;AACF;2BACSvC,sBAAsBhF,KAAK6J,UAAU;oBAC9CrC,WAAWD,OAAO;AACpB;gBAEAA,MAAM5Q,UAAUkT;AAClB;AACF;QAEA,SAASI,gBAAiB1C;YACxBA,MAAML;YAEN,IAAIK,MAAMV,uBAAsB,KAAMU,MAAML,iBAAiBK,MAAMV,mBAAmB;gBACpFW,WAAWD,OAAO,4CAA4CA,MAAMV,oBAAoB;AAC1F;AACF;QAEA,SAASqD,cAAe3C,OAAO4C,aAAalU,QAAQmU;YAClD,KAAKnT,QAAOvB,SAASO,SAAS;gBAC5BuR,WAAWD,OAAO;AACpB;YAGA0C,gBAAgB1C;YAEhB,IAAMrR,aAAaC,OAAOC,KAAKH;YAE/B,KAAA,IAASI,QAAQ,GAAGgU,WAAWnU,WAAWI,QAAQD,QAAQgU,UAAUhU,SAAS,GAAG;gBAC9E,IAAME,MAAML,WAAWG;gBAEvB4T,gBAAgB1C;gBAEhB,KAAKnE,gBAAgBrL,KAAKoS,aAAa5T,MAAM;oBAC3C0P,YAAYkE,aAAa5T,KAAKN,OAAOM;oBACrC6T,gBAAgB7T,OAAO;AACzB;AACF;AACF;QAEA,SAAS+T,iBAAkB/C,OAAOsC,SAASO,iBAAiBG,QAAQC,SAASC,WAC3EC,WAAWC,gBAAgBC;YAI3B,IAAI/U,MAAMC,QAAQ0U,UAAU;gBAC1BA,UAAU3U,MAAMN,UAAU2D,MAAMnB,KAAKyS;gBAErC,KAAA,IAASnU,QAAQ,GAAGgU,WAAWG,QAAQlU,QAAQD,QAAQgU,UAAUhU,SAAS,GAAG;oBAC3E,IAAIR,MAAMC,QAAQ0U,QAAQnU,SAAS;wBACjCmR,WAAWD,OAAO;AACpB;oBAEA,IAAIrS,QAAOsV,aAAY,YAAYnF,OAAOmF,QAAQnU,YAAY,mBAAmB;wBAC/EmU,QAAQnU,SAAS;AACnB;AACF;AACF;YAKA,IAAInB,QAAOsV,aAAY,YAAYnF,OAAOmF,aAAa,mBAAmB;gBACxEA,UAAU;AACZ;YAEAA,UAAU1P,OAAO0P;YAEjB,IAAIX,YAAY,MAAM;gBACpBA,UAAU,CAAA;AACZ;YAEA,IAAIU,WAAW,2BAA2B;gBACxC,IAAI1U,MAAMC,QAAQ2U,YAAY;oBAC5B,IAAIA,UAAUnU,SAAS,KAAK;wBAC1BkR,WAAWD,OAAO;AACpB;oBAEA,KAAA,IAASlR,SAAQ,GAAGgU,YAAWI,UAAUnU,QAAQD,SAAQgU,WAAUhU,UAAS,GAAG;wBAC7E6T,cAAc3C,OAAOsC,SAASY,UAAUpU,SAAQ+T;AAClD;AACF,uBAAO;oBACLF,cAAc3C,OAAOsC,SAASY,WAAWL;AAC3C;AACF,mBAAO;gBACL,KAAK7C,MAAM3G,SACNwC,gBAAgBrL,KAAKqS,iBAAiBI,YACvCpH,gBAAgBrL,KAAK8R,SAASW,UAAU;oBAC1CjD,MAAM7P,OAAOgT,aAAanD,MAAM7P;oBAChC6P,MAAM/O,YAAYmS,kBAAkBpD,MAAM/O;oBAC1C+O,MAAM7O,WAAWkS,YAAYrD,MAAM7O;oBACnC8O,WAAWD,OAAO;AACpB;gBAEAtB,YAAY4D,SAASW,SAASC;uBACvBL,gBAAgBI;AACzB;YAEA,OAAOX;AACT;QAEA,SAASgB,cAAetD;YACtB,IAAM3I,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;YAExC,IAAIkG,OAAO,IAAc;gBACvB2I,MAAM7O;AACR,mBAAA,IAAWkG,OAAO,IAAc;gBAC9B2I,MAAM7O;gBACN,IAAI6O,MAAMzE,MAAM/D,WAAWwI,MAAM7O,cAAc,IAAc;oBAC3D6O,MAAM7O;AACR;AACF,mBAAO;gBACL8O,WAAWD,OAAO;AACpB;YAEAA,MAAM7P,QAAQ;YACd6P,MAAM/O,YAAY+O,MAAM7O;YACxB6O,MAAMJ,kBAAiB;AACzB;QAEA,SAAS2D,oBAAqBvD,OAAOwD,eAAeC;YAClD,IAAIC,aAAa;YACjB,IAAIrM,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;YAEtC,OAAOkG,OAAO,GAAG;gBACf,OAAO2G,aAAa3G,KAAK;oBACvB,IAAIA,OAAO,KAAiB2I,MAAMJ,oBAAmB,GAAI;wBACvDI,MAAMJ,iBAAiBI,MAAM7O;AAC/B;oBACAkG,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC;gBAEA,IAAIqS,iBAAiBnM,OAAO,IAAa;oBACvC,GAAG;wBACDA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;6BAC7BkG,OAAO,MAAgBA,OAAO,MAAgBA,OAAO;AAChE;gBAEA,IAAI0G,MAAM1G,KAAK;oBACbiM,cAActD;oBAEd3I,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;oBAClCuS;oBACA1D,MAAMP,aAAa;oBAEnB,OAAOpI,OAAO,IAAiB;wBAC7B2I,MAAMP;wBACNpI,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC;AACF,uBAAO;oBACL;AACF;AACF;YAEA,IAAIsS,iBAAgB,KAAMC,eAAe,KAAK1D,MAAMP,aAAagE,aAAa;gBAC5EvD,aAAaF,OAAO;AACtB;YAEA,OAAO0D;AACT;QAEA,SAASC,sBAAuB3D;YAC9B,IAAIuC,YAAYvC,MAAM7O;YACtB,IAAIkG,KAAK2I,MAAMzE,MAAM/D,WAAW+K;YAIhC,KAAKlL,OAAO,MAAeA,OAAO,OAC9BA,OAAO2I,MAAMzE,MAAM/D,WAAW+K,YAAY,MAC1ClL,OAAO2I,MAAMzE,MAAM/D,WAAW+K,YAAY,IAAI;gBAChDA,aAAa;gBAEblL,KAAK2I,MAAMzE,MAAM/D,WAAW+K;gBAE5B,IAAIlL,OAAO,KAAK4G,UAAU5G,KAAK;oBAC7B,OAAO;AACT;AACF;YAEA,OAAO;AACT;QAEA,SAASuM,iBAAkB5D,OAAO7Q;YAChC,IAAIA,UAAU,GAAG;gBACf6Q,MAAM5Q,UAAU;AAClB,mBAAA,IAAWD,QAAQ,GAAG;gBACpB6Q,MAAM5Q,UAAUM,QAAOT,OAAO,MAAME,QAAQ;AAC9C;AACF;QAEA,SAAS0U,gBAAiB7D,OAAO8D,YAAYC;YAC3C,IAAIC;YACJ,IAAIC;YACJ,IAAIC;YACJ,IAAIC;YACJ,IAAIC;YACJ,IAAIC;YACJ,IAAMC,QAAQtE,MAAMrM;YACpB,IAAM2O,UAAUtC,MAAM5Q;YAEtB,IAAIiI,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;YAEtC,IAAI8M,UAAU5G,OACV6G,gBAAgB7G,OAChBA,OAAO,MACPA,OAAO,MACPA,OAAO,MACPA,OAAO,MACPA,OAAO,OACPA,OAAO,MACPA,OAAO,MACPA,OAAO,MACPA,OAAO,MACPA,OAAO,MACPA,OAAO,IAAa;gBACtB,OAAO;AACT;YAEA,IAAIA,OAAO,MAAeA,OAAO,IAAa;gBAC5C,IAAMkN,YAAYvE,MAAMzE,MAAM/D,WAAWwI,MAAM7O,WAAW;gBAE1D,IAAI8M,UAAUsG,cACTR,wBAAwB7F,gBAAgBqG,YAAa;oBACxD,OAAO;AACT;AACF;YAEAvE,MAAMrM,OAAO;YACbqM,MAAM5Q,SAAS;YACf4U,eAAeC,aAAajE,MAAM7O;YAClC+S,oBAAoB;YAEpB,OAAO7M,OAAO,GAAG;gBACf,IAAIA,OAAO,IAAa;oBACtB,IAAMkN,aAAYvE,MAAMzE,MAAM/D,WAAWwI,MAAM7O,WAAW;oBAE1D,IAAI8M,UAAUsG,eACTR,wBAAwB7F,gBAAgBqG,aAAa;wBACxD;AACF;AACF,uBAAA,IAAWlN,OAAO,IAAa;oBAC7B,IAAMmN,YAAYxE,MAAMzE,MAAM/D,WAAWwI,MAAM7O,WAAW;oBAE1D,IAAI8M,UAAUuG,YAAY;wBACxB;AACF;2BACUxE,MAAM7O,aAAa6O,MAAM/O,aAAa0S,sBAAsB3D,UAC5D+D,wBAAwB7F,gBAAgB7G,KAAM;oBACxD;AACF,uBAAA,IAAW0G,MAAM1G,KAAK;oBACpB8M,QAAQnE,MAAM7P;oBACdiU,aAAapE,MAAM/O;oBACnBoT,cAAcrE,MAAMP;oBACpB8D,oBAAoBvD,OAAO,QAAO;oBAElC,IAAIA,MAAMP,cAAcqE,YAAY;wBAClCI,oBAAoB;wBACpB7M,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;wBAClC;AACF,2BAAO;wBACL6O,MAAM7O,WAAW8S;wBACjBjE,MAAM7P,OAAOgU;wBACbnE,MAAM/O,YAAYmT;wBAClBpE,MAAMP,aAAa4E;wBACnB;AACF;AACF;gBAEA,IAAIH,mBAAmB;oBACrBhC,eAAelC,OAAOgE,cAAcC,YAAY;oBAChDL,iBAAiB5D,OAAOA,MAAM7P,OAAOgU;oBACrCH,eAAeC,aAAajE,MAAM7O;oBAClC+S,oBAAoB;AACtB;gBAEA,KAAKlG,aAAa3G,KAAK;oBACrB4M,aAAajE,MAAM7O,WAAW;AAChC;gBAEAkG,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC;YAEA+Q,eAAelC,OAAOgE,cAAcC,YAAY;YAEhD,IAAIjE,MAAM5Q,QAAQ;gBAChB,OAAO;AACT;YAEA4Q,MAAMrM,OAAO2Q;YACbtE,MAAM5Q,SAASkT;YACf,OAAO;AACT;QAEA,SAASmC,uBAAwBzE,OAAO8D;YACtC,IAAIE;YACJ,IAAIC;YAEJ,IAAI5M,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;YAEtC,IAAIkG,OAAO,IAAa;gBACtB,OAAO;AACT;YAEA2I,MAAMrM,OAAO;YACbqM,MAAM5Q,SAAS;YACf4Q,MAAM7O;YACN6S,eAAeC,aAAajE,MAAM7O;YAElC,QAAQkG,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O,eAAe,GAAG;gBAC1D,IAAIkG,OAAO,IAAa;oBACtB6K,eAAelC,OAAOgE,cAAchE,MAAM7O,UAAU;oBACpDkG,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;oBAEpC,IAAIkG,OAAO,IAAa;wBACtB2M,eAAehE,MAAM7O;wBACrB6O,MAAM7O;wBACN8S,aAAajE,MAAM7O;AACrB,2BAAO;wBACL,OAAO;AACT;AACF,uBAAA,IAAW4M,MAAM1G,KAAK;oBACpB6K,eAAelC,OAAOgE,cAAcC,YAAY;oBAChDL,iBAAiB5D,OAAOuD,oBAAoBvD,OAAO,OAAO8D;oBAC1DE,eAAeC,aAAajE,MAAM7O;AACpC,2BAAW6O,MAAM7O,aAAa6O,MAAM/O,aAAa0S,sBAAsB3D,QAAQ;oBAC7EC,WAAWD,OAAO;AACpB,uBAAO;oBACLA,MAAM7O;oBACN,KAAK6M,aAAa3G,KAAK;wBACrB4M,aAAajE,MAAM7O;AACrB;AACF;AACF;YAEA8O,WAAWD,OAAO;AACpB;QAEA,SAAS0E,uBAAwB1E,OAAO8D;YACtC,IAAIE;YACJ,IAAIC;YACJ,IAAIU;YAEJ,IAAItN,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;YAEtC,IAAIkG,OAAO,IAAa;gBACtB,OAAO;AACT;YAEA2I,MAAMrM,OAAO;YACbqM,MAAM5Q,SAAS;YACf4Q,MAAM7O;YACN6S,eAAeC,aAAajE,MAAM7O;YAElC,QAAQkG,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O,eAAe,GAAG;gBAC1D,IAAIkG,OAAO,IAAa;oBACtB6K,eAAelC,OAAOgE,cAAchE,MAAM7O,UAAU;oBACpD6O,MAAM7O;oBACN,OAAO;AACT,uBAAA,IAAWkG,OAAO,IAAa;oBAC7B6K,eAAelC,OAAOgE,cAAchE,MAAM7O,UAAU;oBACpDkG,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;oBAEpC,IAAI4M,MAAM1G,KAAK;wBACbkM,oBAAoBvD,OAAO,OAAO8D;+BAGzBzM,KAAK,OAAOyH,kBAAkBzH,KAAK;wBAC5C2I,MAAM5Q,UAAU2P,gBAAgB1H;wBAChC2I,MAAM7O;gCACIwT,MAAMtG,cAAchH,OAAO,GAAG;wBACxC,IAAIuN,YAAYD;wBAChB,IAAIE,YAAY;wBAEhB,MAAOD,YAAY,GAAGA,aAAa;4BACjCvN,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;4BAEpC,KAAKwT,MAAMxG,YAAY9G,QAAQ,GAAG;gCAChCwN,aAAaA,aAAa,KAAKF;AACjC,mCAAO;gCACL1E,WAAWD,OAAO;AACpB;AACF;wBAEAA,MAAM5Q,UAAUoP,kBAAkBqG;wBAElC7E,MAAM7O;AACR,2BAAO;wBACL8O,WAAWD,OAAO;AACpB;oBAEAgE,eAAeC,aAAajE,MAAM7O;AACpC,uBAAA,IAAW4M,MAAM1G,KAAK;oBACpB6K,eAAelC,OAAOgE,cAAcC,YAAY;oBAChDL,iBAAiB5D,OAAOuD,oBAAoBvD,OAAO,OAAO8D;oBAC1DE,eAAeC,aAAajE,MAAM7O;AACpC,2BAAW6O,MAAM7O,aAAa6O,MAAM/O,aAAa0S,sBAAsB3D,QAAQ;oBAC7EC,WAAWD,OAAO;AACpB,uBAAO;oBACLA,MAAM7O;oBACN,KAAK6M,aAAa3G,KAAK;wBACrB4M,aAAajE,MAAM7O;AACrB;AACF;AACF;YAEA8O,WAAWD,OAAO;AACpB;QAEA,SAAS8E,mBAAoB9E,OAAO8D;YAClC,IAAIiB,WAAW;YACf,IAAIZ;YACJ,IAAIC;YACJ,IAAIY;YACJ,IAAMC,OAAOjF,MAAMvM;YACnB,IAAI6O;YACJ,IAAM4C,UAAUlF,MAAMgB;YACtB,IAAImE;YACJ,IAAIC;YACJ,IAAIC;YACJ,IAAIC;YACJ,IAAMzC,kBAAkBjU,OAAOgC,OAAO;YACtC,IAAIqS;YACJ,IAAID;YACJ,IAAIE;YAEJ,IAAI7L,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;YAEtC,IAAIkG,OAAO,IAAa;gBACtB8N,aAAa;gBACbG,YAAY;gBACZhD,UAAU;AACZ,mBAAA,IAAWjL,OAAO,KAAa;gBAC7B8N,aAAa;gBACbG,YAAY;gBACZhD,UAAU,CAAA;AACZ,mBAAO;gBACL,OAAO;AACT;YAEA,IAAItC,MAAMgB,WAAW,MAAM;gBACzBb,YAAYH,OAAOA,MAAMgB,QAAQsB;AACnC;YAEAjL,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;YAEpC,OAAOkG,OAAO,GAAG;gBACfkM,oBAAoBvD,OAAO,MAAM8D;gBAEjCzM,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;gBAElC,IAAIkG,OAAO8N,YAAY;oBACrBnF,MAAM7O;oBACN6O,MAAMvM,MAAMwR;oBACZjF,MAAMgB,SAASkE;oBACflF,MAAMrM,OAAO2R,YAAY,YAAY;oBACrCtF,MAAM5Q,SAASkT;oBACf,OAAO;AACT,uBAAA,KAAYyC,UAAU;oBACpB9E,WAAWD,OAAO;AACpB,uBAAA,IAAW3I,OAAO,IAAa;oBAE7B4I,WAAWD,OAAO;AACpB;gBAEAgD,SAASC,UAAUC,YAAY;gBAC/BkC,SAASC,iBAAiB;gBAE1B,IAAIhO,OAAO,IAAa;oBACtB,IAAMkN,YAAYvE,MAAMzE,MAAM/D,WAAWwI,MAAM7O,WAAW;oBAE1D,IAAI8M,UAAUsG,YAAY;wBACxBa,SAASC,iBAAiB;wBAC1BrF,MAAM7O;wBACNoS,oBAAoBvD,OAAO,MAAM8D;AACnC;AACF;gBAEAK,QAAQnE,MAAM7P;gBACdiU,aAAapE,MAAM/O;gBACnB+T,OAAOhF,MAAM7O;gBACboU,YAAYvF,OAAO8D,YAAY5G,iBAAiB,OAAO;gBACvD8F,SAAShD,MAAMvM;gBACfwP,UAAUjD,MAAM5Q;gBAChBmU,oBAAoBvD,OAAO,MAAM8D;gBAEjCzM,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;gBAElC,KAAKkU,kBAAkBrF,MAAM7P,SAASgU,UAAU9M,OAAO,IAAa;oBAClE+N,SAAS;oBACT/N,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;oBACpCoS,oBAAoBvD,OAAO,MAAM8D;oBACjCyB,YAAYvF,OAAO8D,YAAY5G,iBAAiB,OAAO;oBACvDgG,YAAYlD,MAAM5Q;AACpB;gBAEA,IAAIkW,WAAW;oBACbvC,iBAAiB/C,OAAOsC,SAASO,iBAAiBG,QAAQC,SAASC,WAAWiB,OAAOC,YAAYY;2BACxFI,QAAQ;oBACjB9C,QAAQ1P,KAAKmQ,iBAAiB/C,OAAO,MAAM6C,iBAAiBG,QAAQC,SAASC,WAAWiB,OAAOC,YAAYY;AAC7G,uBAAO;oBACL1C,QAAQ1P,KAAKqQ;AACf;gBAEAM,oBAAoBvD,OAAO,MAAM8D;gBAEjCzM,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;gBAElC,IAAIkG,OAAO,IAAa;oBACtB0N,WAAW;oBACX1N,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC,uBAAO;oBACL4T,WAAW;AACb;AACF;YAEA9E,WAAWD,OAAO;AACpB;QAEA,SAASwF,gBAAiBxF,OAAO8D;YAC/B,IAAI2B;YACJ,IAAIC,WAAWpI;YACf,IAAIqI,iBAAiB;YACrB,IAAIC,iBAAiB;YACrB,IAAIC,aAAa/B;YACjB,IAAIgC,aAAa;YACjB,IAAIC,iBAAiB;YACrB,IAAIpB;YAEJ,IAAItN,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;YAEtC,IAAIkG,OAAO,KAAa;gBACtBoO,UAAU;AACZ,mBAAA,IAAWpO,OAAO,IAAa;gBAC7BoO,UAAU;AACZ,mBAAO;gBACL,OAAO;AACT;YAEAzF,MAAMrM,OAAO;YACbqM,MAAM5Q,SAAS;YAEf,OAAOiI,OAAO,GAAG;gBACfA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;gBAEpC,IAAIkG,OAAO,MAAeA,OAAO,IAAa;oBAC5C,IAAIiG,kBAAkBoI,UAAU;wBAC9BA,WAAYrO,OAAO,KAAemG,gBAAgBD;AACpD,2BAAO;wBACL0C,WAAWD,OAAO;AACpB;4BACU2E,MAAMrG,gBAAgBjH,QAAQ,GAAG;oBAC3C,IAAIsN,QAAQ,GAAG;wBACb1E,WAAWD,OAAO;AACpB,2BAAA,KAAY4F,gBAAgB;wBAC1BC,aAAa/B,aAAaa,MAAM;wBAChCiB,iBAAiB;AACnB,2BAAO;wBACL3F,WAAWD,OAAO;AACpB;AACF,uBAAO;oBACL;AACF;AACF;YAEA,IAAIhC,aAAa3G,KAAK;gBACpB,GAAG;oBAAEA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AAAU,yBAC5C6M,aAAa3G;gBAEpB,IAAIA,OAAO,IAAa;oBACtB,GAAG;wBAAEA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;8BACjC4M,MAAM1G,OAAQA,OAAO;AAC/B;AACF;YAEA,OAAOA,OAAO,GAAG;gBACfiM,cAActD;gBACdA,MAAMP,aAAa;gBAEnBpI,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;gBAGlC,SAASyU,kBAAkB5F,MAAMP,aAAaoG,eACtCxO,OAAO,IAAkB;oBAC/B2I,MAAMP;oBACNpI,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC;gBAEA,KAAKyU,kBAAkB5F,MAAMP,aAAaoG,YAAY;oBACpDA,aAAa7F,MAAMP;AACrB;gBAEA,IAAI1B,MAAM1G,KAAK;oBACbyO;oBACA;AACF;gBAEA,KAAKF,kBAAkBC,eAAe,GAAG;oBACvC5F,WAAWD,OAAO;AACpB;gBAGA,IAAIA,MAAMP,aAAaoG,YAAY;oBAEjC,IAAIH,aAAalI,eAAe;wBAC9BwC,MAAM5Q,UAAUM,QAAOT,OAAO,MAAM0W,iBAAiB,IAAIG,aAAaA;AACxE,2BAAA,IAAWJ,aAAapI,eAAe;wBACrC,IAAIqI,gBAAgB;4BAClB3F,MAAM5Q,UAAU;AAClB;AACF;oBAGA;AACF;gBAGA,IAAIqW,SAAS;oBAEX,IAAIzH,aAAa3G,KAAK;wBACpB0O,iBAAiB;wBAEjB/F,MAAM5Q,UAAUM,QAAOT,OAAO,MAAM0W,iBAAiB,IAAIG,aAAaA;+BAG7DC,gBAAgB;wBACzBA,iBAAiB;wBACjB/F,MAAM5Q,UAAUM,QAAOT,OAAO,MAAM6W,aAAa;AAGnD,2BAAA,IAAWA,eAAe,GAAG;wBAC3B,IAAIH,gBAAgB;4BAClB3F,MAAM5Q,UAAU;AAClB;AAGF,2BAAO;wBACL4Q,MAAM5Q,UAAUM,QAAOT,OAAO,MAAM6W;AACtC;AAGF,uBAAO;oBAEL9F,MAAM5Q,UAAUM,QAAOT,OAAO,MAAM0W,iBAAiB,IAAIG,aAAaA;AACxE;gBAEAH,iBAAiB;gBACjBC,iBAAiB;gBACjBE,aAAa;gBACb,IAAM9B,eAAehE,MAAM7O;gBAE3B,QAAQ4M,MAAM1G,OAAQA,OAAO,GAAI;oBAC/BA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC;gBAEA+Q,eAAelC,OAAOgE,cAAchE,MAAM7O,UAAU;AACtD;YAEA,OAAO;AACT;QAEA,SAAS6U,kBAAmBhG,OAAO8D;YACjC,IAAMmB,OAAOjF,MAAMvM;YACnB,IAAMyR,UAAUlF,MAAMgB;YACtB,IAAMsB,UAAU;YAChB,IAAI2D,WAAW;YAIf,IAAIjG,MAAMJ,oBAAmB,GAAI,OAAO;YAExC,IAAII,MAAMgB,WAAW,MAAM;gBACzBb,YAAYH,OAAOA,MAAMgB,QAAQsB;AACnC;YAEA,IAAIjL,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;YAEtC,OAAOkG,OAAO,GAAG;gBACf,IAAI2I,MAAMJ,oBAAmB,GAAI;oBAC/BI,MAAM7O,WAAW6O,MAAMJ;oBACvBK,WAAWD,OAAO;AACpB;gBAEA,IAAI3I,OAAO,IAAa;oBACtB;AACF;gBAEA,IAAMkN,YAAYvE,MAAMzE,MAAM/D,WAAWwI,MAAM7O,WAAW;gBAE1D,KAAK8M,UAAUsG,YAAY;oBACzB;AACF;gBAEA0B,WAAW;gBACXjG,MAAM7O;gBAEN,IAAIoS,oBAAoBvD,OAAO,OAAM,IAAK;oBACxC,IAAIA,MAAMP,cAAcqE,YAAY;wBAClCxB,QAAQ1P,KAAK;wBACbyE,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;wBAClC;AACF;AACF;gBAEA,IAAMgT,QAAQnE,MAAM7P;gBACpBoV,YAAYvF,OAAO8D,YAAY1G,kBAAkB,OAAO;gBACxDkF,QAAQ1P,KAAKoN,MAAM5Q;gBACnBmU,oBAAoBvD,OAAO,OAAM;gBAEjC3I,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;gBAElC,KAAK6O,MAAM7P,SAASgU,SAASnE,MAAMP,aAAaqE,eAAgBzM,OAAO,GAAI;oBACzE4I,WAAWD,OAAO;AACpB,uBAAA,IAAWA,MAAMP,aAAaqE,YAAY;oBACxC;AACF;AACF;YAEA,IAAImC,UAAU;gBACZjG,MAAMvM,MAAMwR;gBACZjF,MAAMgB,SAASkE;gBACflF,MAAMrM,OAAO;gBACbqM,MAAM5Q,SAASkT;gBACf,OAAO;AACT;YACA,OAAO;AACT;QAEA,SAAS4D,iBAAkBlG,OAAO8D,YAAYqC;YAC5C,IAAIC;YACJ,IAAIC;YACJ,IAAIC;YACJ,IAAIC;YACJ,IAAMtB,OAAOjF,MAAMvM;YACnB,IAAMyR,UAAUlF,MAAMgB;YACtB,IAAMsB,UAAU,CAAA;YAChB,IAAMO,kBAAkBjU,OAAOgC,OAAO;YACtC,IAAIoS,SAAS;YACb,IAAIC,UAAU;YACd,IAAIC,YAAY;YAChB,IAAIsD,gBAAgB;YACpB,IAAIP,WAAW;YAIf,IAAIjG,MAAMJ,oBAAmB,GAAI,OAAO;YAExC,IAAII,MAAMgB,WAAW,MAAM;gBACzBb,YAAYH,OAAOA,MAAMgB,QAAQsB;AACnC;YAEA,IAAIjL,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;YAEtC,OAAOkG,OAAO,GAAG;gBACf,KAAKmP,iBAAiBxG,MAAMJ,oBAAmB,GAAI;oBACjDI,MAAM7O,WAAW6O,MAAMJ;oBACvBK,WAAWD,OAAO;AACpB;gBAEA,IAAMuE,YAAYvE,MAAMzE,MAAM/D,WAAWwI,MAAM7O,WAAW;gBAC1D,IAAMgT,QAAQnE,MAAM7P;gBAMpB,KAAKkH,OAAO,MAAeA,OAAO,OAAgB4G,UAAUsG,YAAY;oBACtE,IAAIlN,OAAO,IAAa;wBACtB,IAAImP,eAAe;4BACjBzD,iBAAiB/C,OAAOsC,SAASO,iBAAiBG,QAAQC,SAAS,MAAMoD,UAAUC,eAAeC;4BAClGvD,SAASC,UAAUC,YAAY;AACjC;wBAEA+C,WAAW;wBACXO,gBAAgB;wBAChBJ,eAAe;+BACNI,eAAe;wBAExBA,gBAAgB;wBAChBJ,eAAe;AACjB,2BAAO;wBACLnG,WAAWD,OAAO;AACpB;oBAEAA,MAAM7O,YAAY;oBAClBkG,KAAKkN;AAKP,uBAAO;oBACL8B,WAAWrG,MAAM7P;oBACjBmW,gBAAgBtG,MAAM/O;oBACtBsV,UAAUvG,MAAM7O;oBAEhB,KAAKoU,YAAYvF,OAAOmG,YAAYhJ,kBAAkB,OAAO,OAAO;wBAGlE;AACF;oBAEA,IAAI6C,MAAM7P,SAASgU,OAAO;wBACxB9M,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;wBAElC,OAAO6M,aAAa3G,KAAK;4BACvBA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC;wBAEA,IAAIkG,OAAO,IAAa;4BACtBA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;4BAEpC,KAAK8M,UAAU5G,KAAK;gCAClB4I,WAAWD,OAAO;AACpB;4BAEA,IAAIwG,eAAe;gCACjBzD,iBAAiB/C,OAAOsC,SAASO,iBAAiBG,QAAQC,SAAS,MAAMoD,UAAUC,eAAeC;gCAClGvD,SAASC,UAAUC,YAAY;AACjC;4BAEA+C,WAAW;4BACXO,gBAAgB;4BAChBJ,eAAe;4BACfpD,SAAShD,MAAMvM;4BACfwP,UAAUjD,MAAM5Q;mCACP6W,UAAU;4BACnBhG,WAAWD,OAAO;AACpB,+BAAO;4BACLA,MAAMvM,MAAMwR;4BACZjF,MAAMgB,SAASkE;4BACf,OAAO;AACT;+BACSe,UAAU;wBACnBhG,WAAWD,OAAO;AACpB,2BAAO;wBACLA,MAAMvM,MAAMwR;wBACZjF,MAAMgB,SAASkE;wBACf,OAAO;AACT;AACF;gBAKA,IAAIlF,MAAM7P,SAASgU,SAASnE,MAAMP,aAAaqE,YAAY;oBACzD,IAAI0C,eAAe;wBACjBH,WAAWrG,MAAM7P;wBACjBmW,gBAAgBtG,MAAM/O;wBACtBsV,UAAUvG,MAAM7O;AAClB;oBAEA,IAAIoU,YAAYvF,OAAO8D,YAAYzG,mBAAmB,MAAM+I,eAAe;wBACzE,IAAII,eAAe;4BACjBvD,UAAUjD,MAAM5Q;AAClB,+BAAO;4BACL8T,YAAYlD,MAAM5Q;AACpB;AACF;oBAEA,KAAKoX,eAAe;wBAClBzD,iBAAiB/C,OAAOsC,SAASO,iBAAiBG,QAAQC,SAASC,WAAWmD,UAAUC,eAAeC;wBACvGvD,SAASC,UAAUC,YAAY;AACjC;oBAEAK,oBAAoBvD,OAAO,OAAM;oBACjC3I,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;AACpC;gBAEA,KAAK6O,MAAM7P,SAASgU,SAASnE,MAAMP,aAAaqE,eAAgBzM,OAAO,GAAI;oBACzE4I,WAAWD,OAAO;AACpB,uBAAA,IAAWA,MAAMP,aAAaqE,YAAY;oBACxC;AACF;AACF;YAOA,IAAI0C,eAAe;gBACjBzD,iBAAiB/C,OAAOsC,SAASO,iBAAiBG,QAAQC,SAAS,MAAMoD,UAAUC,eAAeC;AACpG;YAGA,IAAIN,UAAU;gBACZjG,MAAMvM,MAAMwR;gBACZjF,MAAMgB,SAASkE;gBACflF,MAAMrM,OAAO;gBACbqM,MAAM5Q,SAASkT;AACjB;YAEA,OAAO2D;AACT;QAEA,SAASQ,gBAAiBzG;YACxB,IAAI0G,aAAa;YACjB,IAAIC,UAAU;YACd,IAAIC;YACJ,IAAIC;YAEJ,IAAIxP,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;YAEtC,IAAIkG,OAAO,IAAa,OAAO;YAE/B,IAAI2I,MAAMvM,QAAQ,MAAM;gBACtBwM,WAAWD,OAAO;AACpB;YAEA3I,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;YAEpC,IAAIkG,OAAO,IAAa;gBACtBqP,aAAa;gBACbrP,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC,mBAAA,IAAWkG,OAAO,IAAa;gBAC7BsP,UAAU;gBACVC,YAAY;gBACZvP,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC,mBAAO;gBACLyV,YAAY;AACd;YAEA,IAAIrE,YAAYvC,MAAM7O;YAEtB,IAAIuV,YAAY;gBACd,GAAG;oBAAErP,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AAAU,yBAC5CkG,OAAO,KAAKA,OAAO;gBAE1B,IAAI2I,MAAM7O,WAAW6O,MAAMjR,QAAQ;oBACjC8X,UAAU7G,MAAMzE,MAAM5J,MAAM4Q,WAAWvC,MAAM7O;oBAC7CkG,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC,uBAAO;oBACL8O,WAAWD,OAAO;AACpB;AACF,mBAAO;gBACL,OAAO3I,OAAO,MAAM4G,UAAU5G,KAAK;oBACjC,IAAIA,OAAO,IAAa;wBACtB,KAAKsP,SAAS;4BACZC,YAAY5G,MAAMzE,MAAM5J,MAAM4Q,YAAY,GAAGvC,MAAM7O,WAAW;4BAE9D,KAAKyM,mBAAmBnF,KAAKmO,YAAY;gCACvC3G,WAAWD,OAAO;AACpB;4BAEA2G,UAAU;4BACVpE,YAAYvC,MAAM7O,WAAW;AAC/B,+BAAO;4BACL8O,WAAWD,OAAO;AACpB;AACF;oBAEA3I,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC;gBAEA0V,UAAU7G,MAAMzE,MAAM5J,MAAM4Q,WAAWvC,MAAM7O;gBAE7C,IAAIwM,wBAAwBlF,KAAKoO,UAAU;oBACzC5G,WAAWD,OAAO;AACpB;AACF;YAEA,IAAI6G,YAAYhJ,gBAAgBpF,KAAKoO,UAAU;gBAC7C5G,WAAWD,OAAO,8CAA8C6G;AAClE;YAEA;gBACEA,UAAU7E,mBAAmB6E;qBACtB5E;gBACPhC,WAAWD,OAAO,4BAA4B6G;AAChD;YAEA,IAAIH,YAAY;gBACd1G,MAAMvM,MAAMoT;AACd,uBAAWhL,gBAAgBrL,KAAKwP,MAAM+B,QAAQ6E,YAAY;gBACxD5G,MAAMvM,MAAMuM,MAAM+B,OAAO6E,aAAaC;AACxC,mBAAA,IAAWD,cAAc,KAAK;gBAC5B5G,MAAMvM,MAAM,MAAMoT;AACpB,mBAAA,IAAWD,cAAc,MAAM;gBAC7B5G,MAAMvM,MAAM,uBAAuBoT;AACrC,mBAAO;gBACL5G,WAAWD,OAAO,4BAA4B4G,YAAY;AAC5D;YAEA,OAAO;AACT;QAEA,SAASE,mBAAoB9G;YAC3B,IAAI3I,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;YAEtC,IAAIkG,OAAO,IAAa,OAAO;YAE/B,IAAI2I,MAAMgB,WAAW,MAAM;gBACzBf,WAAWD,OAAO;AACpB;YAEA3I,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;YACpC,IAAMoR,YAAYvC,MAAM7O;YAExB,OAAOkG,OAAO,MAAM4G,UAAU5G,QAAQ6G,gBAAgB7G,KAAK;gBACzDA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC;YAEA,IAAI6O,MAAM7O,aAAaoR,WAAW;gBAChCtC,WAAWD,OAAO;AACpB;YAEAA,MAAMgB,SAAShB,MAAMzE,MAAM5J,MAAM4Q,WAAWvC,MAAM7O;YAClD,OAAO;AACT;QAEA,SAAS4V,UAAW/G;YAClB,IAAI3I,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;YAEtC,IAAIkG,OAAO,IAAa,OAAO;YAE/BA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;YACpC,IAAMoR,YAAYvC,MAAM7O;YAExB,OAAOkG,OAAO,MAAM4G,UAAU5G,QAAQ6G,gBAAgB7G,KAAK;gBACzDA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC;YAEA,IAAI6O,MAAM7O,aAAaoR,WAAW;gBAChCtC,WAAWD,OAAO;AACpB;YAEA,IAAM1M,QAAQ0M,MAAMzE,MAAM5J,MAAM4Q,WAAWvC,MAAM7O;YAEjD,KAAK0K,gBAAgBrL,KAAKwP,MAAMO,WAAWjN,QAAQ;gBACjD2M,WAAWD,OAAO,yBAAyB1M,QAAQ;AACrD;YAEA0M,MAAM5Q,SAAS4Q,MAAMO,UAAUjN;YAC/BiQ,oBAAoBvD,OAAO,OAAM;YACjC,OAAO;AACT;QAEA,SAASgH,gCAAiChH,OAAOiH,eAAenD,YAAYqC;YAC1E,IAAMe,gBAAgBnG,cAAcf;YAEpCQ,uBAAuBR;YACvBiB,aAAajB,OAAOiH;YAIpBjH,MAAMvM,MAAM;YACZuM,MAAMgB,SAAS;YACfhB,MAAMrM,OAAO;YACbqM,MAAM5Q,SAAS;YAEf,IAAI8W,iBAAiBlG,OAAO8D,YAAYqC,eAAenG,MAAMrM,SAAS,WAAW;gBAC/E8M,wBAAwBT;gBACxB,OAAO;AACT;YAEAa,0BAA0Bb;YAC1BiB,aAAajB,OAAOkH;YACpB,OAAO;AACT;QAEA,SAAS3B,YAAavF,OAAOmH,cAAcC,aAAaC,aAAajB;YACnE,IAAIkB;YACJ,IAAIC;YACJ,IAAIC,eAAe;YACnB,IAAIC,YAAY;YAChB,IAAIC,aAAa;YACjB,IAAIT,gBAAgB;YACpB,IAAI3S;YACJ,IAAI6R;YACJ,IAAIwB;YAEJ,IAAI3H,MAAMN,SAASM,MAAMX,UAAU;gBACjCY,WAAWD,OAAO,gCAAgCA,MAAMX,WAAW;AACrE;YAEAW,MAAMN,SAAS;YAEf,IAAIM,MAAMZ,aAAa,MAAM;gBAC3BY,MAAMZ,SAAS,QAAQY;AACzB;YAEAA,MAAMvM,MAAM;YACZuM,MAAMgB,SAAS;YACfhB,MAAMrM,OAAO;YACbqM,MAAM5Q,SAAS;YAEf,IAAMwY,mBAAmBN,oBAAoBC,wBAC3ClK,sBAAsB+J,eACtBhK,qBAAqBgK;YAEvB,IAAIC,aAAa;gBACf,IAAI9D,oBAAoBvD,OAAO,OAAM,IAAK;oBACxCyH,YAAY;oBAEZ,IAAIzH,MAAMP,aAAa0H,cAAc;wBACnCK,eAAe;AACjB,2BAAA,IAAWxH,MAAMP,eAAe0H,cAAc;wBAC5CK,eAAe;AACjB,2BAAA,IAAWxH,MAAMP,aAAa0H,cAAc;wBAC1CK,gBAAe;AACjB;AACF;AACF;YAEA,IAAIA,iBAAiB,GAAG;gBACtB,OAAO,MAAM;oBACX,IAAMnQ,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;oBACxC,IAAM0W,gBAAgB9G,cAAcf;oBAIpC,IAAIyH,cACEpQ,OAAO,MAAe2I,MAAMvM,QAAQ,QACpC4D,OAAO,MAAe2I,MAAMgB,WAAW,OAAQ;wBACnD;AACF;oBAEA,KAAKyF,gBAAgBzG,WAAW8G,mBAAmB9G,QAAQ;wBACzD;AACF;oBAEA,IAAIiH,kBAAkB,MAAM;wBAC1BA,gBAAgBY;AAClB;oBAEA,IAAItE,oBAAoBvD,OAAO,OAAM,IAAK;wBACxCyH,YAAY;wBACZF,wBAAwBK;wBAExB,IAAI5H,MAAMP,aAAa0H,cAAc;4BACnCK,eAAe;AACjB,+BAAA,IAAWxH,MAAMP,eAAe0H,cAAc;4BAC5CK,eAAe;AACjB,+BAAA,IAAWxH,MAAMP,aAAa0H,cAAc;4BAC1CK,gBAAe;AACjB;AACF,2BAAO;wBACLD,wBAAwB;AAC1B;AACF;AACF;YAEA,IAAIA,uBAAuB;gBACzBA,wBAAwBE,aAAarB;AACvC;YAEA,IAAIoB,iBAAiB,KAAKnK,sBAAsB+J,aAAa;gBAC3D,IAAIlK,oBAAoBkK,eAAejK,qBAAqBiK,aAAa;oBACvEjB,aAAagB;AACf,uBAAO;oBACLhB,aAAagB,eAAe;AAC9B;gBAEAQ,cAAc3H,MAAM7O,WAAW6O,MAAM/O;gBAErC,IAAIuW,iBAAiB,GAAG;oBACtB,IAAKD,0BACAvB,kBAAkBhG,OAAO2H,gBAAgBzB,iBAAiBlG,OAAO2H,aAAaxB,gBAC/ErB,mBAAmB9E,OAAOmG,aAAa;wBACzCuB,aAAa;AACf,2BAAO;wBACL,IAAMrQ,MAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;wBAExC,IAAI8V,kBAAkB,QAAQW,qBAAqBL,yBAC/ClQ,QAAO,OAAeA,QAAO,MAC7B2P,gCACEhH,OACAiH,eACAA,cAAc9V,WAAW8V,cAAchW,WACvCkV,aACC;4BACLuB,aAAa;mCACHJ,qBAAqB9B,gBAAgBxF,OAAOmG,eACpD1B,uBAAuBzE,OAAOmG,eAC9BzB,uBAAuB1E,OAAOmG,aAAa;4BAC7CuB,aAAa;AACf,+BAAA,IAAWX,UAAU/G,QAAQ;4BAC3B0H,aAAa;4BAEb,IAAI1H,MAAMvM,QAAQ,QAAQuM,MAAMgB,WAAW,MAAM;gCAC/Cf,WAAWD,OAAO;AACpB;AACF,mCAAW6D,gBAAgB7D,OAAOmG,YAAYjJ,oBAAoBkK,cAAc;4BAC9EM,aAAa;4BAEb,IAAI1H,MAAMvM,QAAQ,MAAM;gCACtBuM,MAAMvM,MAAM;AACd;AACF;wBAEA,IAAIuM,MAAMgB,WAAW,MAAM;4BACzBb,YAAYH,OAAOA,MAAMgB,QAAQhB,MAAM5Q;AACzC;AACF;AACF,uBAAA,IAAWoY,iBAAiB,GAAG;oBAG7BE,aAAaH,yBAAyBvB,kBAAkBhG,OAAO2H;AACjE;AACF;YAEA,IAAI3H,MAAMvM,QAAQ,MAAM;gBACtB,IAAIuM,MAAMgB,WAAW,MAAM;oBACzBb,YAAYH,OAAOA,MAAMgB,QAAQhB,MAAM5Q;AACzC;AACF,mBAAA,IAAW4Q,MAAMvM,QAAQ,KAAK;gBAO5B,IAAIuM,MAAM5Q,WAAW,QAAQ4Q,MAAMrM,SAAS,UAAU;oBACpDsM,WAAWD,OAAO,sEAAsEA,MAAMrM,OAAO;AACvG;gBAEA,KAAA,IAASmU,YAAY,GAAGC,eAAe/H,MAAMT,cAAcxQ,QAAQ+Y,YAAYC,cAAcD,aAAa,GAAG;oBAC3GxT,QAAO0L,MAAMT,cAAcuI;oBAE3B,IAAIxT,MAAKV,QAAQoM,MAAM5Q,SAAS;wBAC9B4Q,MAAM5Q,SAASkF,MAAKT,UAAUmM,MAAM5Q;wBACpC4Q,MAAMvM,MAAMa,MAAKb;wBACjB,IAAIuM,MAAMgB,WAAW,MAAM;4BACzBb,YAAYH,OAAOA,MAAMgB,QAAQhB,MAAM5Q;AACzC;wBACA;AACF;AACF;AACF,mBAAA,IAAW4Q,MAAMvM,QAAQ,KAAK;gBAC5B,IAAIoI,gBAAgBrL,KAAKwP,MAAMR,QAAQQ,MAAMrM,QAAQ,aAAaqM,MAAMvM,MAAM;oBAC5Ea,QAAO0L,MAAMR,QAAQQ,MAAMrM,QAAQ,YAAYqM,MAAMvM;AACvD,uBAAO;oBAELa,QAAO;oBACP,IAAM0T,WAAWhI,MAAMR,QAAQpL,MAAM4L,MAAMrM,QAAQ;oBAEnD,KAAA,IAASmU,aAAY,GAAGC,gBAAeC,SAASjZ,QAAQ+Y,aAAYC,eAAcD,cAAa,GAAG;wBAChG,IAAI9H,MAAMvM,IAAI9B,MAAM,GAAGqW,SAASF,YAAWrU,IAAI1E,YAAYiZ,SAASF,YAAWrU,KAAK;4BAClFa,QAAO0T,SAASF;4BAChB;AACF;AACF;AACF;gBAEA,KAAKxT,OAAM;oBACT2L,WAAWD,OAAO,mBAAmBA,MAAMvM,MAAM;AACnD;gBAEA,IAAIuM,MAAM5Q,WAAW,QAAQkF,MAAKX,SAASqM,MAAMrM,MAAM;oBACrDsM,WAAWD,OAAO,kCAAkCA,MAAMvM,MAAM,0BAA0Ba,MAAKX,OAAO,aAAaqM,MAAMrM,OAAO;AAClI;gBAEA,KAAKW,MAAKV,QAAQoM,MAAM5Q,QAAQ4Q,MAAMvM,MAAM;oBAC1CwM,WAAWD,OAAO,kCAAkCA,MAAMvM,MAAM;AAClE,uBAAO;oBACLuM,MAAM5Q,SAASkF,MAAKT,UAAUmM,MAAM5Q,QAAQ4Q,MAAMvM;oBAClD,IAAIuM,MAAMgB,WAAW,MAAM;wBACzBb,YAAYH,OAAOA,MAAMgB,QAAQhB,MAAM5Q;AACzC;AACF;AACF;YAEA,IAAI4Q,MAAMZ,aAAa,MAAM;gBAC3BY,MAAMZ,SAAS,SAASY;AAC1B;YAEAA,MAAMN,SAAS;YACf,OAAOM,MAAMvM,QAAQ,QAAQuM,MAAMgB,WAAW,QAAQ0G;AACxD;QAEA,SAASO,aAAcjI;YACrB,IAAMkI,gBAAgBlI,MAAM7O;YAC5B,IAAIgX,gBAAgB;YACpB,IAAI9Q;YAEJ2I,MAAMuB,UAAU;YAChBvB,MAAM0B,kBAAkB1B,MAAMb;YAC9Ba,MAAM+B,SAASnT,OAAOgC,OAAO;YAC7BoP,MAAMO,YAAY3R,OAAOgC,OAAO;YAEhC,QAAQyG,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O,eAAe,GAAG;gBAC1DoS,oBAAoBvD,OAAO,OAAM;gBAEjC3I,KAAK2I,MAAMzE,MAAM/D,WAAWwI,MAAM7O;gBAElC,IAAI6O,MAAMP,aAAa,KAAKpI,OAAO,IAAa;oBAC9C;AACF;gBAEA8Q,gBAAgB;gBAChB9Q,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;gBACpC,IAAIoR,YAAYvC,MAAM7O;gBAEtB,OAAOkG,OAAO,MAAM4G,UAAU5G,KAAK;oBACjCA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC;gBAEA,IAAMiX,gBAAgBpI,MAAMzE,MAAM5J,MAAM4Q,WAAWvC,MAAM7O;gBACzD,IAAMkX,gBAAgB;gBAEtB,IAAID,cAAcrZ,SAAS,GAAG;oBAC5BkR,WAAWD,OAAO;AACpB;gBAEA,OAAO3I,OAAO,GAAG;oBACf,OAAO2G,aAAa3G,KAAK;wBACvBA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC;oBAEA,IAAIkG,OAAO,IAAa;wBACtB,GAAG;4BAAEA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;iCAClCkG,OAAO,MAAM0G,MAAM1G;wBAC1B;AACF;oBAEA,IAAI0G,MAAM1G,KAAK;oBAEfkL,YAAYvC,MAAM7O;oBAElB,OAAOkG,OAAO,MAAM4G,UAAU5G,KAAK;wBACjCA,KAAK2I,MAAMzE,MAAM/D,aAAawI,MAAM7O;AACtC;oBAEAkX,cAAczV,KAAKoN,MAAMzE,MAAM5J,MAAM4Q,WAAWvC,MAAM7O;AACxD;gBAEA,IAAIkG,OAAO,GAAGiM,cAActD;gBAE5B,IAAInE,gBAAgBrL,KAAK2Q,mBAAmBiH,gBAAgB;oBAC1DjH,kBAAkBiH,eAAepI,OAAOoI,eAAeC;AACzD,uBAAO;oBACLnI,aAAaF,OAAO,iCAAiCoI,gBAAgB;AACvE;AACF;YAEA7E,oBAAoBvD,OAAO,OAAM;YAEjC,IAAIA,MAAMP,eAAe,KACrBO,MAAMzE,MAAM/D,WAAWwI,MAAM7O,cAAc,MAC3C6O,MAAMzE,MAAM/D,WAAWwI,MAAM7O,WAAW,OAAO,MAC/C6O,MAAMzE,MAAM/D,WAAWwI,MAAM7O,WAAW,OAAO,IAAa;gBAC9D6O,MAAM7O,YAAY;gBAClBoS,oBAAoBvD,OAAO,OAAM;uBACxBmI,eAAe;gBACxBlI,WAAWD,OAAO;AACpB;YAEAuF,YAAYvF,OAAOA,MAAMP,aAAa,GAAGpC,mBAAmB,OAAO;YACnEkG,oBAAoBvD,OAAO,OAAM;YAEjC,IAAIA,MAAM0B,mBACNhE,8BAA8BjF,KAAKuH,MAAMzE,MAAM5J,MAAMuW,eAAelI,MAAM7O,YAAY;gBACxF+O,aAAaF,OAAO;AACtB;YAEAA,MAAMH,UAAUjN,KAAKoN,MAAM5Q;YAE3B,IAAI4Q,MAAM7O,aAAa6O,MAAM/O,aAAa0S,sBAAsB3D,QAAQ;gBACtE,IAAIA,MAAMzE,MAAM/D,WAAWwI,MAAM7O,cAAc,IAAa;oBAC1D6O,MAAM7O,YAAY;oBAClBoS,oBAAoBvD,OAAO,OAAM;AACnC;gBACA;AACF;YAEA,IAAIA,MAAM7O,WAAY6O,MAAMjR,SAAS,GAAI;gBACvCkR,WAAWD,OAAO;AACpB;AACF;QAEA,SAASsI,cAAe/M,OAAOtJ;YAC7BsJ,QAAQhI,OAAOgI;YACftJ,UAAUA,WAAW,CAAA;YAErB,IAAIsJ,MAAMxM,WAAW,GAAG;gBAEtB,IAAIwM,MAAM/D,WAAW+D,MAAMxM,SAAS,OAAO,MACvCwM,MAAM/D,WAAW+D,MAAMxM,SAAS,OAAO,IAAc;oBACvDwM,SAAS;AACX;gBAGA,IAAIA,MAAM/D,WAAW,OAAO,OAAQ;oBAClC+D,QAAQA,MAAM5J,MAAM;AACtB;AACF;YAEA,IAAMqO,QAAQ,IAAIhB,MAAMzD,OAAOtJ;YAE/B,IAAMsW,UAAUhN,MAAM7H,QAAQ;YAE9B,IAAI6U,aAAY,GAAI;gBAClBvI,MAAM7O,WAAWoX;gBACjBtI,WAAWD,OAAO;AACpB;YAGAA,MAAMzE,SAAS;YAEf,OAAOyE,MAAMzE,MAAM/D,WAAWwI,MAAM7O,cAAc,IAAiB;gBACjE6O,MAAMP,cAAc;gBACpBO,MAAM7O,YAAY;AACpB;YAEA,OAAO6O,MAAM7O,WAAY6O,MAAMjR,SAAS,GAAI;gBAC1CkZ,aAAajI;AACf;YAEA,OAAOA,MAAMH;AACf;QAEA,SAAS2I,SAASjN,OAAOzN,UAAUmE;YACjC,IAAInE,aAAa,QAAQH,QAAOG,cAAa,mBAAmBmE,YAAY,aAAa;gBACvFA,UAAUnE;gBACVA,WAAW;AACb;YAEA,IAAM+R,YAAYyI,cAAc/M,OAAOtJ;YAEvC,WAAWnE,aAAa,YAAY;gBAClC,OAAO+R;AACT;YAEA,KAAA,IAAS/Q,QAAQ,GAAGC,SAAS8Q,UAAU9Q,QAAQD,QAAQC,QAAQD,SAAS,GAAG;gBACzEhB,SAAS+R,UAAU/Q;AACrB;AACF;QAEA,SAAS2Z,MAAMlN,OAAOtJ;YACpB,IAAM4N,YAAYyI,cAAc/M,OAAOtJ;YAEvC,IAAI4N,UAAU9Q,WAAW,GAAG;gBAC1B,YAAO;AACT,mBAAA,IAAW8Q,UAAU9Q,WAAW,GAAG;gBACjC,OAAO8Q,UAAU;AACnB;YACA,MAAM,IAAIvP,eAAc;AAC1B;QAEAoY,OAAAF,UAAyBA;QACzBE,OAAAD,OAAsBA;;;;;;;;QC1wDV,SAAA9a,QAAAC;YAAA;YAAA,OAAAD,UAAA,qBAAAE,UAAA,mBAAAA,OAAAC,WAAA,SAAAF;gBAAA,cAAAA;gBAAA,SAAAA;gBAAA,OAAAA,MAAA,qBAAAC,UAAAD,GAAAG,gBAAAF,UAAAD,OAAAC,OAAAG,YAAA,kBAAAJ;AAAA,eAAAD,QAAAC;AAAA;QAEZ,IAAM8B,UAASoB;QACf,IAAMR,iBAAgBiE;QACtB,IAAM0I,kBAAiBlH;QAEvB,IAAMgG,YAAYnN,OAAOZ,UAAU6C;QACnC,IAAMgL,kBAAkBjN,OAAOZ,UAAU8N;QAEzC,IAAM6M,WAAW;QACjB,IAAMC,WAAW;QACjB,IAAMC,iBAAiB;QACvB,IAAMC,uBAAuB;QAC7B,IAAMC,aAAa;QACnB,IAAMC,mBAAmB;QACzB,IAAMC,oBAAoB;QAC1B,IAAMC,aAAa;QACnB,IAAMC,eAAe;QACrB,IAAMC,iBAAiB;QACvB,IAAMC,oBAAoB;QAC1B,IAAMC,gBAAgB;QACtB,IAAMC,aAAa;QACnB,IAAMC,aAAa;QACnB,IAAMC,aAAa;QACnB,IAAMC,cAAc;QACpB,IAAMC,oBAAoB;QAC1B,IAAMC,gBAAgB;QACtB,IAAMC,qBAAqB;QAC3B,IAAMC,2BAA2B;QACjC,IAAMC,4BAA4B;QAClC,IAAMC,oBAAoB;QAC1B,IAAMC,0BAA0B;QAChC,IAAMC,qBAAqB;QAC3B,IAAMC,2BAA2B;QAEjC,IAAMC,mBAAmB,CAAA;QAEzBA,iBAAiB,KAAQ;QACzBA,iBAAiB,KAAQ;QACzBA,iBAAiB,KAAQ;QACzBA,iBAAiB,KAAQ;QACzBA,iBAAiB,MAAQ;QACzBA,iBAAiB,MAAQ;QACzBA,iBAAiB,MAAQ;QACzBA,iBAAiB,MAAQ;QACzBA,iBAAiB,MAAQ;QACzBA,iBAAiB,MAAQ;QACzBA,iBAAiB,MAAQ;QACzBA,iBAAiB,OAAQ;QACzBA,iBAAiB,OAAQ;QACzBA,iBAAiB,QAAU;QAC3BA,iBAAiB,QAAU;QAE3B,IAAMC,6BAA6B,EACjC,KAAK,KAAK,OAAO,OAAO,OAAO,MAAM,MAAM,MAC3C,KAAK,KAAK,MAAM,MAAM,MAAM,OAAO,OAAO;QAG5C,IAAMC,2BAA2B;QAEjC,SAASC,gBAAiB9V,SAAQtB;YAChC,IAAIA,SAAQ,MAAM,OAAO,CAAA;YAEzB,IAAM/D,SAAS,CAAA;YACf,IAAMP,OAAOD,OAAOC,KAAKsE;YAEzB,KAAA,IAASrE,QAAQ,GAAGC,SAASF,KAAKE,QAAQD,QAAQC,QAAQD,SAAS,GAAG;gBACpE,IAAI2E,MAAM5E,KAAKC;gBACf,IAAIuE,QAAQE,OAAOJ,KAAIM;gBAEvB,IAAIA,IAAI9B,MAAM,GAAG,OAAO,MAAM;oBAC5B8B,MAAM,uBAAuBA,IAAI9B,MAAM;AACzC;gBACA,IAAM2C,QAAOG,QAAOmB,gBAAgB,YAAYnC;gBAEhD,IAAIa,SAAQuH,gBAAgBrL,KAAK8D,MAAKD,cAAchB,QAAQ;oBAC1DA,QAAQiB,MAAKD,aAAahB;AAC5B;gBAEAjE,OAAOqE,OAAOJ;AAChB;YAEA,OAAOjE;AACT;QAEA,SAASob,UAAWC;YAClB,IAAI3I;YACJ,IAAI/S;YAEJ,IAAMG,SAASub,UAAU5Z,SAAS,IAAIuH;YAEtC,IAAIqS,aAAa,KAAM;gBACrB3I,SAAS;gBACT/S,SAAS;AACX,mBAAA,IAAW0b,aAAa,OAAQ;gBAC9B3I,SAAS;gBACT/S,SAAS;AACX,mBAAA,IAAW0b,aAAa,YAAY;gBAClC3I,SAAS;gBACT/S,SAAS;AACX,mBAAO;gBACL,MAAM,IAAIuB,eAAc;AAC1B;YAEA,OAAO,OAAOwR,SAASpS,QAAOT,OAAO,KAAKF,SAASG,OAAOH,UAAUG;AACtE;QAEA,IAAMwb,sBAAsB;QAC5B,IAAMC,sBAAsB;QAE5B,SAAS3L,MAAO/M;YACdxB,KAAKgE,SAASxC,QAAQ,aAAagL;YACnCxM,KAAK0B,SAASX,KAAKO,IAAI,GAAIE,QAAQ,aAAa;YAChDxB,KAAKma,gBAAgB3Y,QAAQ,oBAAoB;YACjDxB,KAAKoa,cAAc5Y,QAAQ,kBAAkB;YAC7CxB,KAAKqa,YAAapb,QAAOzB,UAAUgE,QAAQ,iBAAgB,IAAKA,QAAQ;YACxExB,KAAKsa,WAAWR,gBAAgB9Z,KAAKgE,QAAQxC,QAAQ,aAAa;YAClExB,KAAKua,WAAW/Y,QAAQ,eAAe;YACvCxB,KAAKwa,YAAYhZ,QAAQ,gBAAgB;YACzCxB,KAAKya,SAASjZ,QAAQ,aAAa;YACnCxB,KAAK0a,eAAelZ,QAAQ,mBAAmB;YAC/CxB,KAAK2a,eAAenZ,QAAQ,mBAAmB;YAC/CxB,KAAK4a,cAAcpZ,QAAQ,mBAAmB,MAAM0Y,sBAAsBD;YAC1Eja,KAAK6a,cAAcrZ,QAAQ,kBAAkB;YAC7CxB,KAAK8a,kBAAkBtZ,QAAQ,gBAAgB,aAAaA,QAAQ,cAAc;YAElFxB,KAAK8O,gBAAgB9O,KAAKgE,OAAOiB;YACjCjF,KAAK+a,gBAAgB/a,KAAKgE,OAAOkB;YAEjClF,KAAKgD,MAAM;YACXhD,KAAKrB,SAAS;YAEdqB,KAAKgb,aAAa;YAClBhb,KAAKib,iBAAiB;AACxB;QAGA,SAASC,aAAczc,QAAQ0c;YAC7B,IAAMC,MAAMnc,QAAOT,OAAO,KAAK2c;YAC/B,IAAIza,WAAW;YACf,IAAI/B,SAAS;YACb,IAAML,SAASG,OAAOH;YAEtB,OAAOoC,WAAWpC,QAAQ;gBACxB,IAAIoB,YAAI;gBACR,IAAM2b,OAAO5c,OAAOwE,QAAQ,MAAMvC;gBAClC,IAAI2a,UAAS,GAAI;oBACf3b,OAAOjB,OAAOyC,MAAMR;oBACpBA,WAAWpC;AACb,uBAAO;oBACLoB,OAAOjB,OAAOyC,MAAMR,UAAU2a,OAAO;oBACrC3a,WAAW2a,OAAO;AACpB;gBAEA,IAAI3b,KAAKpB,UAAUoB,SAAS,MAAMf,UAAUyc;gBAE5Czc,UAAUe;AACZ;YAEA,OAAOf;AACT;QAEA,SAAS2c,iBAAkB/L,OAAOgM;YAChC,OAAO,OAAOtc,QAAOT,OAAO,KAAK+Q,MAAM7N,SAAS6Z;AAClD;QAEA,SAASC,sBAAuBjM,OAAOtO;YACrC,KAAA,IAAS5C,QAAQ,GAAGC,SAASiR,MAAMT,cAAcxQ,QAAQD,QAAQC,QAAQD,SAAS,GAAG;gBACnF,IAAMwF,QAAO0L,MAAMT,cAAczQ;gBAEjC,IAAIwF,MAAKV,QAAQlC,OAAM;oBACrB,OAAO;AACT;AACF;YAEA,OAAO;AACT;QAGA,SAASwa,aAAclV;YACrB,OAAOA,MAAM+R,cAAc/R,MAAM4R;AACnC;QAMA,SAASuD,YAAanV;YACpB,OAAQA,KAAK,MAAWA,KAAK,OACzBA,KAAK,OAAWA,KAAK,SAAaA,MAAM,QAAUA,MAAM,QACxDA,KAAK,SAAWA,KAAK,SAAaA,MAAM2R,YACzC3R,KAAK,SAAWA,KAAK;AAC1B;QAOA,SAASoV,qBAAsBpV;YAC7B,OAAOmV,YAAYnV,MACjBA,MAAM2R,YAEN3R,MAAM8R,wBACN9R,MAAM6R;AACV;QAWA,SAASwD,YAAarV,GAAGsV,MAAMC;YAC7B,IAAMC,wBAAwBJ,qBAAqBpV;YACnD,IAAMyV,YAAYD,0BAA0BN,aAAalV;YACzD,QAGIuV,UACIC,wBACAA,yBAEAxV,MAAMuS,cACNvS,MAAM8S,4BACN9S,MAAM+S,6BACN/S,MAAMiT,2BACNjT,MAAMmT,6BAGZnT,MAAMkS,gBACJoD,SAAS7C,eAAegD,cAE3BL,qBAAqBE,UAAUJ,aAAaI,SAAStV,MAAMkS,cAC3DoD,SAAS7C,cAAcgD;AAC1B;QAGA,SAASC,iBAAkB1V;YAIzB,OAAOmV,YAAYnV,MACjBA,MAAM2R,aACLuD,aAAalV,MAGdA,MAAMwS,cACNxS,MAAM4S,iBACN5S,MAAMyS,cACNzS,MAAMuS,cACNvS,MAAM8S,4BACN9S,MAAM+S,6BACN/S,MAAMiT,2BACNjT,MAAMmT,4BAENnT,MAAMkS,cACNlS,MAAMoS,kBACNpS,MAAMsS,iBACNtS,MAAMgS,oBACNhS,MAAMkT,sBACNlT,MAAM0S,eACN1S,MAAM2S,qBACN3S,MAAMqS,qBACNrS,MAAMiS,qBAENjS,MAAMmS,gBACNnS,MAAM6S,sBACN7S,MAAMgT;AACV;QAGA,SAAS2C,gBAAiB3V;YAExB,QAAQkV,aAAalV,MAAMA,MAAMyS;AACnC;QAGA,SAASmD,YAAa1d,QAAQ2C;YAC5B,IAAMgb,QAAQ3d,OAAOsI,WAAW3F;YAChC,IAAIwI;YAEJ,IAAIwS,SAAS,SAAUA,SAAS,SAAUhb,MAAM,IAAI3C,OAAOH,QAAQ;gBACjEsL,SAASnL,OAAOsI,WAAW3F,MAAM;gBACjC,IAAIwI,UAAU,SAAUA,UAAU,OAAQ;oBAExC,QAAQwS,QAAQ,SAAU,OAAQxS,SAAS,QAAS;AACtD;AACF;YACA,OAAOwS;AACT;QAGA,SAASC,oBAAqB5d;YAC5B,IAAM6d,iBAAiB;YACvB,OAAOA,eAAetU,KAAKvJ;AAC7B;QAEA,IAAM8d,cAAc;QACpB,IAAMC,eAAe;QACrB,IAAMC,gBAAgB;QACtB,IAAMC,eAAe;QACrB,IAAMC,eAAe;QASrB,SAASC,kBAAmBne,QAAQoe,gBAAgBC,gBAAgBtC,WAClEuC,mBAAmBnC,aAAaC,aAAaiB;YAC7C,IAAIxZ;YACJ,IAAI0a,OAAO;YACX,IAAIC,WAAW;YACf,IAAIC,eAAe;YACnB,IAAIC,kBAAkB;YACtB,IAAMC,mBAAmB5C,eAAc;YACvC,IAAI6C,qBAAoB;YACxB,IAAIC,QAAQrB,iBAAiBE,YAAY1d,QAAQ,OAC/Cyd,gBAAgBC,YAAY1d,QAAQA,OAAOH,SAAS;YAEtD,IAAIue,kBAAkBhC,aAAa;gBAGjC,KAAKvY,IAAI,GAAGA,IAAI7D,OAAOH,QAAQ0e,QAAQ,QAAU1a,KAAK,IAAIA,KAAK;oBAC7D0a,OAAOb,YAAY1d,QAAQ6D;oBAC3B,KAAKoZ,YAAYsB,OAAO;wBACtB,OAAOL;AACT;oBACAW,QAAQA,SAAS1B,YAAYoB,MAAMC,UAAUnB;oBAC7CmB,WAAWD;AACb;AACF,mBAAO;gBAEL,KAAK1a,IAAI,GAAGA,IAAI7D,OAAOH,QAAQ0e,QAAQ,QAAU1a,KAAK,IAAIA,KAAK;oBAC7D0a,OAAOb,YAAY1d,QAAQ6D;oBAC3B,IAAI0a,SAAS5E,gBAAgB;wBAC3B8E,eAAe;wBAEf,IAAIE,kBAAkB;4BACpBD,kBAAkBA,mBAEf7a,IAAI+a,oBAAoB,IAAI7C,aAC5B/b,OAAO4e,oBAAoB,OAAO;4BACrCA,oBAAoB/a;AACtB;AACF,2BAAA,KAAYoZ,YAAYsB,OAAO;wBAC7B,OAAOL;AACT;oBACAW,QAAQA,SAAS1B,YAAYoB,MAAMC,UAAUnB;oBAC7CmB,WAAWD;AACb;gBAEAG,kBAAkBA,mBAAoBC,oBACnC9a,IAAI+a,oBAAoB,IAAI7C,aAC5B/b,OAAO4e,oBAAoB,OAAO;AACvC;YAIA,KAAKH,iBAAiBC,iBAAiB;gBAGrC,IAAIG,UAAUzC,gBAAgBkC,kBAAkBte,SAAS;oBACvD,OAAO8d;AACT;gBACA,OAAO3B,gBAAgBV,sBAAsByC,eAAeH;AAC9D;YAEA,IAAIM,iBAAiB,KAAKT,oBAAoB5d,SAAS;gBACrD,OAAOke;AACT;YAGA,KAAK9B,aAAa;gBAChB,OAAOsC,kBAAkBT,eAAeD;AAC1C;YACA,OAAO7B,gBAAgBV,sBAAsByC,eAAeH;AAC9D;QAQA,SAASe,YAAahO,OAAO9Q,QAAQ8c,OAAOiC,OAAO1B;YACjDvM,MAAMkO;gBACJ,IAAIhf,OAAOH,WAAW,GAAG;oBACvB,OAAOiR,MAAMqL,gBAAgBV,sBAAsB,OAAO;AAC5D;gBACA,KAAK3K,MAAMmL,cAAc;oBACvB,IAAId,2BAA2B3W,QAAQxE,kBAAkBob,yBAAyB7R,KAAKvJ,SAAS;wBAC9F,OAAO8Q,MAAMqL,gBAAgBV,sBAAuB,MAAMzb,SAAS,MAAQ,MAAMA,SAAS;AAC5F;AACF;gBAEA,IAAMiD,SAAS6N,MAAM7N,SAASX,KAAKO,IAAI,GAAGia;gBAQ1C,IAAMf,YAAajL,MAAMiL,eAAc,SAEnCzZ,KAAKO,IAAIP,KAAKsB,IAAIkN,MAAMiL,WAAW,KAAKjL,MAAMiL,YAAY9Y;gBAG9D,IAAMmb,iBAAiBW,SAEpBjO,MAAM8K,aAAY,KAAMkB,SAAShM,MAAM8K;gBAC1C,SAASqD,cAAejf;oBACtB,OAAO+c,sBAAsBjM,OAAO9Q;AACtC;gBAEA,QAAQme,kBAAkBne,QAAQoe,gBAAgBtN,MAAM7N,QAAQ8Y,WAC9DkD,eAAenO,MAAMqL,aAAarL,MAAMsL,gBAAgB2C,OAAO1B;kBAC/D,KAAKS;oBACH,OAAO9d;;kBACT,KAAK+d;oBACH,OAAO,MAAM/d,OAAO0C,QAAQ,MAAM,QAAQ;;kBAC5C,KAAKsb;oBACH,OAAO,MAAMkB,YAAYlf,QAAQ8Q,MAAM7N,UACrCkc,kBAAkB1C,aAAazc,QAAQiD;;kBAC3C,KAAKgb;oBACH,OAAO,MAAMiB,YAAYlf,QAAQ8Q,MAAM7N,UACrCkc,kBAAkB1C,aAAa2C,WAAWpf,QAAQ+b,YAAY9Y;;kBAClE,KAAKib;oBACH,OAAO,MAAMmB,aAAarf,UAAqB;;kBACjD;oBACE,MAAM,IAAIoB,eAAc;;AAE9B;AACF;QAGA,SAAS8d,YAAalf,QAAQqe;YAC5B,IAAMiB,kBAAkB1B,oBAAoB5d,UAAUqE,OAAOga,kBAAkB;YAG/E,IAAMkB,OAAOvf,OAAOA,OAAOH,SAAS,OAAO;YAC3C,IAAM2f,OAAOD,SAASvf,OAAOA,OAAOH,SAAS,OAAO,QAAQG,WAAW;YACvE,IAAMyf,QAAQD,OAAO,MAAOD,OAAO,KAAK;YAExC,OAAOD,kBAAkBG,QAAQ;AACnC;QAGA,SAASN,kBAAmBnf;YAC1B,OAAOA,OAAOA,OAAOH,SAAS,OAAO,OAAOG,OAAOyC,MAAM,IAAG,KAAMzC;AACpE;QAIA,SAASof,WAAYpf,QAAQ0f;YAK3B,IAAMC,SAAS;YAGf,IAAIzf;gBACF,IAAI0f,SAAS5f,OAAOwE,QAAQ;gBAC5Bob,SAASA,YAAW,IAAKA,SAAS5f,OAAOH;gBACzC8f,OAAOE,YAAYD;gBACnB,OAAOE,SAAS9f,OAAOyC,MAAM,GAAGmd,SAASF;AAC3C;YAEA,IAAIK,mBAAmB/f,OAAO,OAAO,QAAQA,OAAO,OAAO;YAC3D,IAAIggB;YAGJ,IAAIzc;YACJ,OAAQA,QAAQoc,OAAOlc,KAAKzD,SAAU;gBACpC,IAAM2S,SAASpP,MAAM;gBACrB,IAAMtC,OAAOsC,MAAM;gBAEnByc,eAAgB/e,KAAK,OAAO;gBAC5Bf,UAAUyS,WACLoN,qBAAqBC,gBAAgB/e,SAAS,KAAM,OAAO,MAC9D6e,SAAS7e,MAAMye;gBACjBK,mBAAmBC;AACrB;YAEA,OAAO9f;AACT;QAMA,SAAS4f,SAAU7e,MAAMye;YACvB,IAAIze,SAAS,MAAMA,KAAK,OAAO,KAAK,OAAOA;YAG3C,IAAMgf,UAAU;YAChB,IAAI1c;YAEJ,IAAI0P,QAAQ;YACZ,IAAIC;YACJ,IAAIgN,OAAO;YACX,IAAItD,OAAO;YACX,IAAI1c,SAAS;YAMb,OAAQqD,QAAQ0c,QAAQxc,KAAKxC,OAAQ;gBACnC2b,OAAOrZ,MAAM3D;gBAEb,IAAIgd,OAAO3J,QAAQyM,OAAO;oBACxBxM,MAAOgN,OAAOjN,QAASiN,OAAOtD;oBAC9B1c,UAAU,OAAOe,KAAKwB,MAAMwQ,OAAOC;oBAEnCD,QAAQC,MAAM;AAChB;gBACAgN,OAAOtD;AACT;YAIA1c,UAAU;YAEV,IAAIe,KAAKpB,SAASoT,QAAQyM,SAASQ,OAAOjN,OAAO;gBAC/C/S,UAAUe,KAAKwB,MAAMwQ,OAAOiN,QAAQ,OAAOjf,KAAKwB,MAAMyd,OAAO;AAC/D,mBAAO;gBACLhgB,UAAUe,KAAKwB,MAAMwQ;AACvB;YAEA,OAAO/S,OAAOuC,MAAM;AACtB;QAGA,SAAS4c,aAAcrf;YACrB,IAAIE,SAAS;YACb,IAAIqe,OAAO;YAEX,KAAA,IAAS1a,IAAI,GAAGA,IAAI7D,OAAOH,QAAQ0e,QAAQ,QAAU1a,KAAK,IAAIA,KAAK;gBACjE0a,OAAOb,YAAY1d,QAAQ6D;gBAC3B,IAAMsc,YAAYjF,iBAAiBqD;gBAEnC,KAAK4B,aAAalD,YAAYsB,OAAO;oBACnCre,UAAUF,OAAO6D;oBACjB,IAAI0a,QAAQ,OAASre,UAAUF,OAAO6D,IAAI;AAC5C,uBAAO;oBACL3D,UAAUigB,aAAa7E,UAAUiD;AACnC;AACF;YAEA,OAAOre;AACT;QAEA,SAASkgB,kBAAmBtP,OAAOgM,OAAO5V;YACxC,IAAIkM,UAAU;YACd,IAAM2C,OAAOjF,MAAMvM;YAEnB,KAAA,IAAS3E,QAAQ,GAAGC,SAASqH,OAAOrH,QAAQD,QAAQC,QAAQD,SAAS,GAAG;gBACtE,IAAI2I,QAAQrB,OAAOtH;gBAEnB,IAAIkR,MAAMuL,UAAU;oBAClB9T,QAAQuI,MAAMuL,SAAS/a,KAAK4F,QAAQ7C,OAAOzE,QAAQ2I;AACrD;gBAGA,IAAI8X,UAAUvP,OAAOgM,OAAOvU,OAAO,OAAO,iBAC9BA,UAAU,eACjB8X,UAAUvP,OAAOgM,OAAO,MAAM,OAAO,QAAS;oBACjD,IAAI1J,YAAY,IAAIA,WAAW,QAAQtC,MAAMoL,eAAe,MAAM;oBAClE9I,WAAWtC,MAAMkO;AACnB;AACF;YAEAlO,MAAMvM,MAAMwR;YACZjF,MAAMkO,OAAO,MAAM5L,UAAU;AAC/B;QAEA,SAASkN,mBAAoBxP,OAAOgM,OAAO5V,QAAQvG;YACjD,IAAIyS,UAAU;YACd,IAAM2C,OAAOjF,MAAMvM;YAEnB,KAAA,IAAS3E,QAAQ,GAAGC,SAASqH,OAAOrH,QAAQD,QAAQC,QAAQD,SAAS,GAAG;gBACtE,IAAI2I,QAAQrB,OAAOtH;gBAEnB,IAAIkR,MAAMuL,UAAU;oBAClB9T,QAAQuI,MAAMuL,SAAS/a,KAAK4F,QAAQ7C,OAAOzE,QAAQ2I;AACrD;gBAGA,IAAI8X,UAAUvP,OAAOgM,QAAQ,GAAGvU,OAAO,MAAM,MAAM,OAAO,gBAC9CA,UAAU,eACjB8X,UAAUvP,OAAOgM,QAAQ,GAAG,MAAM,MAAM,MAAM,OAAO,OAAQ;oBAChE,KAAKnc,WAAWyS,YAAY,IAAI;wBAC9BA,WAAWyJ,iBAAiB/L,OAAOgM;AACrC;oBAEA,IAAIhM,MAAMkO,QAAQrF,mBAAmB7I,MAAMkO,KAAK1W,WAAW,IAAI;wBAC7D8K,WAAW;AACb,2BAAO;wBACLA,WAAW;AACb;oBAEAA,WAAWtC,MAAMkO;AACnB;AACF;YAEAlO,MAAMvM,MAAMwR;YACZjF,MAAMkO,OAAO5L,WAAW;AAC1B;QAEA,SAASmN,iBAAkBzP,OAAOgM,OAAO5V;YACvC,IAAIkM,UAAU;YACd,IAAM2C,OAAOjF,MAAMvM;YACnB,IAAMic,gBAAgB9gB,OAAOC,KAAKuH;YAElC,KAAA,IAAStH,QAAQ,GAAGC,SAAS2gB,cAAc3gB,QAAQD,QAAQC,QAAQD,SAAS,GAAG;gBAC7E,IAAI6gB,aAAa;gBACjB,IAAIrN,YAAY,IAAIqN,cAAc;gBAElC,IAAI3P,MAAMoL,cAAcuE,cAAc;gBAEtC,IAAMC,YAAYF,cAAc5gB;gBAChC,IAAI+gB,cAAczZ,OAAOwZ;gBAEzB,IAAI5P,MAAMuL,UAAU;oBAClBsE,cAAc7P,MAAMuL,SAAS/a,KAAK4F,QAAQwZ,WAAWC;AACvD;gBAEA,KAAKN,UAAUvP,OAAOgM,OAAO4D,WAAW,OAAO,QAAQ;oBACrD;AACF;gBAEA,IAAI5P,MAAMkO,KAAKnf,SAAS,MAAM4gB,cAAc;gBAE5CA,cAAc3P,MAAMkO,QAAQlO,MAAMoL,eAAe,MAAM,MAAM,OAAOpL,MAAMoL,eAAe,KAAK;gBAE9F,KAAKmE,UAAUvP,OAAOgM,OAAO6D,aAAa,OAAO,QAAQ;oBACvD;AACF;gBAEAF,cAAc3P,MAAMkO;gBAGpB5L,WAAWqN;AACb;YAEA3P,MAAMvM,MAAMwR;YACZjF,MAAMkO,OAAO,MAAM5L,UAAU;AAC/B;QAEA,SAASwN,kBAAmB9P,OAAOgM,OAAO5V,QAAQvG;YAChD,IAAIyS,UAAU;YACd,IAAM2C,OAAOjF,MAAMvM;YACnB,IAAMic,gBAAgB9gB,OAAOC,KAAKuH;YAGlC,IAAI4J,MAAMgL,aAAa,MAAM;gBAE3B0E,cAAcK;8BACE/P,MAAMgL,aAAa,YAAY;gBAE/C0E,cAAcK,KAAK/P,MAAMgL;AAC3B,mBAAA,IAAWhL,MAAMgL,UAAU;gBAEzB,MAAM,IAAI1a,eAAc;AAC1B;YAEA,KAAA,IAASxB,QAAQ,GAAGC,SAAS2gB,cAAc3gB,QAAQD,QAAQC,QAAQD,SAAS,GAAG;gBAC7E,IAAI6gB,aAAa;gBAEjB,KAAK9f,WAAWyS,YAAY,IAAI;oBAC9BqN,cAAc5D,iBAAiB/L,OAAOgM;AACxC;gBAEA,IAAM4D,YAAYF,cAAc5gB;gBAChC,IAAI+gB,cAAczZ,OAAOwZ;gBAEzB,IAAI5P,MAAMuL,UAAU;oBAClBsE,cAAc7P,MAAMuL,SAAS/a,KAAK4F,QAAQwZ,WAAWC;AACvD;gBAEA,KAAKN,UAAUvP,OAAOgM,QAAQ,GAAG4D,WAAW,MAAM,MAAM,OAAO;oBAC7D;AACF;gBAEA,IAAMI,eAAgBhQ,MAAMvM,QAAQ,QAAQuM,MAAMvM,QAAQ,OAC1CuM,MAAMkO,QAAQlO,MAAMkO,KAAKnf,SAAS;gBAElD,IAAIihB,cAAc;oBAChB,IAAIhQ,MAAMkO,QAAQrF,mBAAmB7I,MAAMkO,KAAK1W,WAAW,IAAI;wBAC7DmY,cAAc;AAChB,2BAAO;wBACLA,cAAc;AAChB;AACF;gBAEAA,cAAc3P,MAAMkO;gBAEpB,IAAI8B,cAAc;oBAChBL,cAAc5D,iBAAiB/L,OAAOgM;AACxC;gBAEA,KAAKuD,UAAUvP,OAAOgM,QAAQ,GAAG6D,aAAa,MAAMG,eAAe;oBACjE;AACF;gBAEA,IAAIhQ,MAAMkO,QAAQrF,mBAAmB7I,MAAMkO,KAAK1W,WAAW,IAAI;oBAC7DmY,cAAc;AAChB,uBAAO;oBACLA,cAAc;AAChB;gBAEAA,cAAc3P,MAAMkO;gBAGpB5L,WAAWqN;AACb;YAEA3P,MAAMvM,MAAMwR;YACZjF,MAAMkO,OAAO5L,WAAW;AAC1B;QAEA,SAAS2N,WAAYjQ,OAAO5J,QAAQb;YAClC,IAAMyS,WAAWzS,WAAWyK,MAAMwL,gBAAgBxL,MAAMT;YAExD,KAAA,IAASzQ,QAAQ,GAAGC,SAASiZ,SAASjZ,QAAQD,QAAQC,QAAQD,SAAS,GAAG;gBACxE,IAAMwF,QAAO0T,SAASlZ;gBAEtB,KAAKwF,MAAKP,cAAcO,MAAKN,gBACvBM,MAAKP,cAAgBpG,QAAOyI,YAAW,YAAcA,kBAAkB9B,MAAKP,iBAC5EO,MAAKN,aAAaM,MAAKN,UAAUoC,UAAU;oBAC/C,IAAIb,UAAU;wBACZ,IAAIjB,MAAKF,SAASE,MAAKJ,eAAe;4BACpC8L,MAAMvM,MAAMa,MAAKJ,cAAckC;AACjC,+BAAO;4BACL4J,MAAMvM,MAAMa,MAAKb;AACnB;AACF,2BAAO;wBACLuM,MAAMvM,MAAM;AACd;oBAEA,IAAIa,MAAKL,WAAW;wBAClB,IAAMZ,QAAQ2M,MAAM+K,SAASzW,MAAKb,QAAQa,MAAKH;wBAE/C,IAAImO,eAAO;wBACX,IAAIvG,UAAUvL,KAAK8D,MAAKL,eAAe,qBAAqB;4BAC1DqO,UAAUhO,MAAKL,UAAUmC,QAAQ/C;AACnC,mCAAWwI,gBAAgBrL,KAAK8D,MAAKL,WAAWZ,QAAQ;4BACtDiP,UAAUhO,MAAKL,UAAUZ,OAAO+C,QAAQ/C;AAC1C,+BAAO;4BACL,MAAM,IAAI/C,eAAc,OAAOgE,MAAKb,MAAM,iCAAiCJ,QAAQ;AACrF;wBAEA2M,MAAMkO,OAAO5L;AACf;oBAEA,OAAO;AACT;AACF;YAEA,OAAO;AACT;QAKA,SAASiN,UAAWvP,OAAOgM,OAAO5V,QAAQ8Z,OAAOrgB,SAASoe,OAAOkC;YAC/DnQ,MAAMvM,MAAM;YACZuM,MAAMkO,OAAO9X;YAEb,KAAK6Z,WAAWjQ,OAAO5J,QAAQ,QAAQ;gBACrC6Z,WAAWjQ,OAAO5J,QAAQ;AAC5B;YAEA,IAAM9B,QAAOyH,UAAUvL,KAAKwP,MAAMkO;YAClC,IAAM3B,UAAU2D;YAEhB,IAAIA,OAAO;gBACTA,QAASlQ,MAAM8K,YAAY,KAAK9K,MAAM8K,YAAYkB;AACpD;YAEA,IAAMoE,gBAAgB9b,UAAS,qBAAqBA,UAAS;YAC7D,IAAI+b;YACJ,IAAIC;YAEJ,IAAIF,eAAe;gBACjBC,iBAAiBrQ,MAAMyL,WAAW/X,QAAQ0C;gBAC1Cka,YAAYD,oBAAmB;AACjC;YAEA,IAAKrQ,MAAMvM,QAAQ,QAAQuM,MAAMvM,QAAQ,OAAQ6c,aAActQ,MAAM7N,WAAW,KAAK6Z,QAAQ,GAAI;gBAC/Fnc,UAAU;AACZ;YAEA,IAAIygB,aAAatQ,MAAM0L,eAAe2E,iBAAiB;gBACrDrQ,MAAMkO,OAAO,UAAUmC;AACzB,mBAAO;gBACL,IAAID,iBAAiBE,cAActQ,MAAM0L,eAAe2E,iBAAiB;oBACvErQ,MAAM0L,eAAe2E,kBAAkB;AACzC;gBACA,IAAI/b,UAAS,mBAAmB;oBAC9B,IAAI4b,SAAUthB,OAAOC,KAAKmR,MAAMkO,MAAMnf,WAAW,GAAI;wBACnD+gB,kBAAkB9P,OAAOgM,OAAOhM,MAAMkO,MAAMre;wBAC5C,IAAIygB,WAAW;4BACbtQ,MAAMkO,OAAO,UAAUmC,iBAAiBrQ,MAAMkO;AAChD;AACF,2BAAO;wBACLuB,iBAAiBzP,OAAOgM,OAAOhM,MAAMkO;wBACrC,IAAIoC,WAAW;4BACbtQ,MAAMkO,OAAO,UAAUmC,iBAAiB,MAAMrQ,MAAMkO;AACtD;AACF;AACF,uBAAA,IAAW5Z,UAAS,kBAAkB;oBACpC,IAAI4b,SAAUlQ,MAAMkO,KAAKnf,WAAW,GAAI;wBACtC,IAAIiR,MAAM4K,kBAAkBuF,cAAcnE,QAAQ,GAAG;4BACnDwD,mBAAmBxP,OAAOgM,QAAQ,GAAGhM,MAAMkO,MAAMre;AACnD,+BAAO;4BACL2f,mBAAmBxP,OAAOgM,OAAOhM,MAAMkO,MAAMre;AAC/C;wBACA,IAAIygB,WAAW;4BACbtQ,MAAMkO,OAAO,UAAUmC,iBAAiBrQ,MAAMkO;AAChD;AACF,2BAAO;wBACLoB,kBAAkBtP,OAAOgM,OAAOhM,MAAMkO;wBACtC,IAAIoC,WAAW;4BACbtQ,MAAMkO,OAAO,UAAUmC,iBAAiB,MAAMrQ,MAAMkO;AACtD;AACF;AACF,uBAAA,IAAW5Z,UAAS,mBAAmB;oBACrC,IAAI0L,MAAMvM,QAAQ,KAAK;wBACrBua,YAAYhO,OAAOA,MAAMkO,MAAMlC,OAAOiC,OAAO1B;AAC/C;AACF,uBAAA,IAAWjY,UAAS,sBAAsB;oBACxC,OAAO;AACT,uBAAO;oBACL,IAAI0L,MAAM6K,aAAa,OAAO;oBAC9B,MAAM,IAAIva,eAAc,4CAA4CgE;AACtE;gBAEA,IAAI0L,MAAMvM,QAAQ,QAAQuM,MAAMvM,QAAQ,KAAK;oBAc3C,IAAI8c,SAASC,UACXxQ,MAAMvM,IAAI,OAAO,MAAMuM,MAAMvM,IAAI9B,MAAM,KAAKqO,MAAMvM,KAClD7B,QAAQ,MAAM;oBAEhB,IAAIoO,MAAMvM,IAAI,OAAO,KAAK;wBACxB8c,SAAS,MAAMA;AACjB,+BAAWA,OAAO5e,MAAM,GAAG,QAAQ,sBAAsB;wBACvD4e,SAAS,OAAOA,OAAO5e,MAAM;AAC/B,2BAAO;wBACL4e,SAAS,OAAOA,SAAS;AAC3B;oBAEAvQ,MAAMkO,OAAOqC,SAAS,MAAMvQ,MAAMkO;AACpC;AACF;YAEA,OAAO;AACT;QAEA,SAASuC,uBAAwBra,QAAQ4J;YACvC,IAAM0Q,UAAU;YAChB,IAAMC,oBAAoB;YAE1BC,YAAYxa,QAAQsa,SAASC;YAE7B,IAAM5hB,SAAS4hB,kBAAkB5hB;YACjC,KAAA,IAASD,QAAQ,GAAGA,QAAQC,QAAQD,SAAS,GAAG;gBAC9CkR,MAAMyL,WAAW7Y,KAAK8d,QAAQC,kBAAkB7hB;AAClD;YACAkR,MAAM0L,iBAAiB,IAAIpd,MAAMS;AACnC;QAEA,SAAS6hB,YAAaxa,QAAQsa,SAASC;YACrC,IAAIva,WAAW,QAAQzI,QAAOyI,YAAW,UAAU;gBACjD,IAAMtH,QAAQ4hB,QAAQhd,QAAQ0C;gBAC9B,IAAItH,WAAU,GAAI;oBAChB,IAAI6hB,kBAAkBjd,QAAQ5E,YAAW,GAAI;wBAC3C6hB,kBAAkB/d,KAAK9D;AACzB;AACF,uBAAO;oBACL4hB,QAAQ9d,KAAKwD;oBAEb,IAAI9H,MAAMC,QAAQ6H,SAAS;wBACzB,KAAA,IAASrD,IAAI,GAAGhE,SAASqH,OAAOrH,QAAQgE,IAAIhE,QAAQgE,KAAK,GAAG;4BAC1D6d,YAAYxa,OAAOrD,IAAI2d,SAASC;AAClC;AACF,2BAAO;wBACL,IAAMjB,gBAAgB9gB,OAAOC,KAAKuH;wBAElC,KAAA,IAASrD,KAAI,GAAGhE,UAAS2gB,cAAc3gB,QAAQgE,KAAIhE,SAAQgE,MAAK,GAAG;4BACjE6d,YAAYxa,OAAOsZ,cAAc3c,MAAK2d,SAASC;AACjD;AACF;AACF;AACF;AACF;QAEA,SAASzC,MAAM3S,OAAOtJ;YACpBA,UAAUA,WAAW,CAAA;YAErB,IAAM+N,QAAQ,IAAIhB,MAAM/M;YAExB,KAAK+N,MAAMkL,QAAQuF,uBAAuBlV,OAAOyE;YAEjD,IAAIvI,QAAQ8D;YAEZ,IAAIyE,MAAMuL,UAAU;gBAClB9T,QAAQuI,MAAMuL,SAAS/a,KAAK;oBAAE,IAAIiH;mBAAS,IAAIA;AACjD;YAEA,IAAI8X,UAAUvP,OAAO,GAAGvI,OAAO,MAAM,OAAO,OAAOuI,MAAMkO,OAAO;YAEhE,OAAO;AACT;QAEA2C,OAAA3C,OAAsBA;;;;;;;QCt6BtB,IAAMxF,UAAS5X;QACf,IAAM+f,UAAStc;QAEf,SAASuc,QAASC,MAAMC;YACtB,OAAO;gBACL,MAAM,IAAIzgB,MAAM,mBAAmBwgB,OAAO,wCAC1BC,KAAK;;AAEzB;QAEAC,OAAAzd,OAAsBuC;QACtBkb,OAAA7b,SAAwBY;QACxBib,OAAAC,kBAAiC5X;QACjC2X,OAAAE,cAA6BpU;QAC7BkU,OAAAG,cAA6BpU;QAC7BiU,OAAAhU,iBAAgCoU;QAChCJ,OAAAxI,OAAsBC,QAAOD;QAC7BwI,OAAAzI,UAAyBE,QAAOF;QAChCyI,OAAA/C,OAAsB2C,QAAO3C;QAC7B+C,OAAA3gB,gBAA+BghB;QAG/BL,OAAAM,QAAuB;YACrBxZ,QAAQyZ;YACRpY,OAAOqY;YACPte,KAAKue;YACLC,MAAMC;YACNlV,OAAOmV;YACPhV,KAAKiV;YACLjX,WAAWkX;YACXjb,MAAMkb;YACNla,KAAKma;YACLlX,OAAOmX;YACP3V,MAAM4V;YACNtc,KAAKuc;YACL1gB,KAAK2gB;;QAIPpB,OAAAqB,WAA0BxB,QAAQ,YAAY;QAC9CG,OAAAsB,cAA6BzB,QAAQ,eAAe;QACpDG,OAAAuB,WAA0B1B,QAAQ,YAAY;;;;;ICzC9C,IACEtd,OAcEif,KAdFjf,MACA4B,SAaEqd,KAbFrd,QACA8b,kBAYEuB,KAZFvB,iBACAC,cAWEsB,KAXFtB,aACAC,cAUEqB,KAVFrB,aACAnU,iBASEwV,KATFxV,gBACAwL,OAQEgK,KARFhK,MACAD,UAOEiK,KAPFjK,SACA0F,OAMEuE,KANFvE,MACA5d,gBAKEmiB,KALFniB,eACAihB,QAIEkB,KAJFlB,OACAe,WAGEG,KAHFH,UACAC,cAEEE,KAFFF,aACAC,WACEC,KADFD;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.min.js b/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.min.js deleted file mode 100644 index ed652e6..0000000 --- a/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jsyaml={})}(this,function(e){"use strict";function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var n,r,i,o,a,l,u,c,s,p,f,d,h,m,g,y,v,b,A,k,w,x,C,S,I,T,O,j,M,F,E,N,L,_,D,U,q,Y,K,R,H,P,B,W,$={},G={},Z={};function V(){if(n)return Z;function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e){return null==e}return n=1,Z.isNothing=t,Z.isObject=function(t){return"object"===e(t)&&null!==t},Z.toArray=function(e){return Array.isArray(e)?e:t(e)?[]:[e]},Z.repeat=function(e,t){for(var n="",r=0;r=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function r(e){return e>=48&&e<=55}function i(e){return e>=48&&e<=57}function o(e){var t=e,n=1,r=t[0];if("-"!==r&&"+"!==r||("-"===r&&(n=-1),r=(t=t.slice(1))[0]),"0"===t)return 0;if("0"===r){if("b"===t[1])return n*parseInt(t.slice(2),2);if("x"===t[1])return n*parseInt(t.slice(2),16);if("o"===t[1])return n*parseInt(t.slice(2),8)}return n*parseInt(t,10)}return x=new t("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t=e.length,a=0,l=!1;if(!t)return!1;var u=e[a];if("-"!==u&&"+"!==u||(u=e[++a]),"0"===u){if(a+1===t)return!0;if("b"===(u=e[++a])){for(a++;a=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})}function ae(){if(I)return S;I=1;var e=V(),t=z(),n=new RegExp("^(?:[-+]?(?:[0-9]+)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),r=new RegExp("^(?:[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var i=/^[-+]?[0-9]+e/;return S=new t("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&(!!n.test(e)&&(!!isFinite(parseFloat(e,10))||r.test(e)))},construct:function(e){var t=e.toLowerCase(),n="-"===t[0]?-1:1;return"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:n*parseFloat(t,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||e.isNegativeZero(t))},represent:function(t,n){if(isNaN(t))switch(n){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(n){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(n){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(e.isNegativeZero(t))return"-0.0";var r=t.toString(10);return i.test(r)?r.replace("e",".e"):r},defaultStyle:"lowercase"})}function le(){return O?T:(O=1,T=ne().extend({implicit:[re(),ie(),oe(),ae()]}))}function ue(){return M?j:(M=1,j=le())}function ce(){if(E)return F;E=1;var e=z(),t=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),n=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");return F=new e("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(e){return null!==e&&(null!==t.exec(e)||null!==n.exec(e))},construct:function(e){var r=0,i=null,o=t.exec(e);if(null===o&&(o=n.exec(e)),null===o)throw new Error("Date resolve error");var a=+o[1],l=+o[2]-1,u=+o[3];if(!o[4])return new Date(Date.UTC(a,l,u));var c=+o[4],s=+o[5],p=+o[6];if(o[7]){for(r=o[7].slice(0,3);r.length<3;)r+="0";r=+r}o[9]&&(i=6e4*(60*+o[10]+ +(o[11]||0)),"-"===o[9]&&(i=-i));var f=new Date(Date.UTC(a,l,u,c,s,p,r));return i&&f.setTime(f.getTime()-i),f},instanceOf:Date,represent:function(e){return e.toISOString()}})}function se(){if(L)return N;L=1;var e=z();return N=new e("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(e){return"<<"===e||null===e}})}function pe(){if(D)return _;D=1;var e=z(),t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";return _=new e("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(e){if(null===e)return!1;for(var n=0,r=e.length,i=t,o=0;o64)){if(a<0)return!1;n+=6}}return n%8==0},construct:function(e){for(var n=e.replace(/[\r\n=]/g,""),r=n.length,i=t,o=0,a=[],l=0;l>16&255),a.push(o>>8&255),a.push(255&o)),o=o<<6|i.indexOf(n.charAt(l));var u=r%4*6;return 0===u?(a.push(o>>16&255),a.push(o>>8&255),a.push(255&o)):18===u?(a.push(o>>10&255),a.push(o>>2&255)):12===u&&a.push(o>>4&255),new Uint8Array(a)},predicate:function(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)},represent:function(e){for(var n="",r=0,i=e.length,o=t,a=0;a>18&63],n+=o[r>>12&63],n+=o[r>>6&63],n+=o[63&r]),r=(r<<8)+e[a];var l=i%3;return 0===l?(n+=o[r>>18&63],n+=o[r>>12&63],n+=o[r>>6&63],n+=o[63&r]):2===l?(n+=o[r>>10&63],n+=o[r>>4&63],n+=o[r<<2&63],n+=o[64]):1===l&&(n+=o[r>>2&63],n+=o[r<<4&63],n+=o[64],n+=o[64]),n}})}function fe(){if(q)return U;q=1;var e=z(),t=Object.prototype.hasOwnProperty,n=Object.prototype.toString;return U=new e("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(e){if(null===e)return!0;for(var r={},i=e,o=0,a=i.length;ol&&(t=r-l+(o=" ... ").length),n-r>l&&(n=r+l-(a=" ...").length),{str:o+e.slice(t,n).replace(/\t/g,"→")+a,pos:r-t+o.length}}function n(t,n){return e.repeat(" ",n-t.length)+t}return o=function(r,i){if(i=Object.create(i||null),!r.buffer)return null;i.maxLength||(i.maxLength=79),"number"!=typeof i.indent&&(i.indent=1),"number"!=typeof i.linesBefore&&(i.linesBefore=3),"number"!=typeof i.linesAfter&&(i.linesAfter=2);for(var o,a=/\r?\n|\r|\0/g,l=[0],u=[],c=-1;o=a.exec(r.buffer);)u.push(o.index),l.push(o.index+o[0].length),r.position<=o.index&&c<0&&(c=l.length-2);c<0&&(c=l.length-1);for(var s="",p=Math.min(r.line+i.linesAfter,u.length).toString().length,f=i.maxLength-(i.indent+p+3),d=1;d<=i.linesBefore&&!(c-d<0);d++){var h=t(r.buffer,l[c-d],u[c-d],r.position-(l[c]-l[c-d]),f);s=e.repeat(" ",i.indent)+n((r.line-d+1).toString(),p)+" | "+h.str+"\n"+s}var m=t(r.buffer,l[c],u[c],r.position,f);s+=e.repeat(" ",i.indent)+n((r.line+1).toString(),p)+" | "+m.str+"\n",s+=e.repeat("-",i.indent+p+3+m.pos)+"^\n";for(var g=1;g<=i.linesAfter&&!(c+g>=u.length);g++){var y=t(r.buffer,l[c+g],u[c+g],r.position-(l[c]-l[c+g]),f);s+=e.repeat(" ",i.indent)+n((r.line+g+1).toString(),p)+" | "+y.str+"\n"}return s.replace(/\n$/,"")}}(),i=me(),l=Object.prototype.hasOwnProperty,u=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,c=/[\x85\u2028\u2029]/,s=/[,\[\]{}]/,p=/^(?:!|!!|![0-9A-Za-z-]+!)$/,f=/^(?:!|[^,\[\]{}])(?:%[0-9a-f]{2}|[0-9a-z\-#;/?:@&=+$,_.!~*'()\[\]])*$/i;function d(e){return Object.prototype.toString.call(e)}function h(e){return 10===e||13===e}function m(e){return 9===e||32===e}function g(e){return 9===e||32===e||10===e||13===e}function y(e){return 44===e||91===e||93===e||123===e||125===e}function v(e){if(e>=48&&e<=57)return e-48;var t=32|e;return t>=97&&t<=102?t-97+10:-1}function b(e){return 120===e?2:117===e?4:85===e?8:0}function A(e){return e>=48&&e<=57?e-48:-1}function k(e){switch(e){case 48:return"\0";case 97:return"";case 98:return"\b";case 116:case 9:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 101:return"";case 32:return" ";case 34:return'"';case 47:return"/";case 92:return"\\";case 78:return"…";case 95:return" ";case 76:return"\u2028";case 80:return"\u2029";default:return""}}function w(e){return e<=65535?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10),56320+(e-65536&1023))}function x(e,t,n){"__proto__"===t?Object.defineProperty(e,t,{configurable:!0,enumerable:!0,writable:!0,value:n}):e[t]=n}for(var C=new Array(256),S=new Array(256),I=0;I<256;I++)C[I]=k(I)?1:0,S[I]=k(I);function T(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||i,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.maxDepth="number"==typeof t.maxDepth?t.maxDepth:100,this.maxTotalMergeKeys="number"==typeof t.maxTotalMergeKeys?t.maxTotalMergeKeys:1e4,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.depth=0,this.totalMergeKeys=0,this.firstTabInLine=-1,this.documents=[],this.anchorMapTransactions=[]}function O(e,t){var i={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return i.snippet=r(i),new n(t,i)}function j(e,t){throw O(e,t)}function M(e,t){e.onWarning&&e.onWarning.call(null,O(e,t))}function F(e,t,n){var r=e.anchorMapTransactions;if(0!==r.length){var i=r[r.length-1];l.call(i,t)||(i[t]={existed:l.call(e.anchorMap,t),value:e.anchorMap[t]})}e.anchorMap[t]=n}function E(e){return{position:e.position,line:e.line,lineStart:e.lineStart,lineIndent:e.lineIndent,firstTabInLine:e.firstTabInLine,tag:e.tag,anchor:e.anchor,kind:e.kind,result:e.result}}function N(e,t){e.position=t.position,e.line=t.line,e.lineStart=t.lineStart,e.lineIndent=t.lineIndent,e.firstTabInLine=t.firstTabInLine,e.tag=t.tag,e.anchor=t.anchor,e.kind=t.kind,e.result=t.result}var L={YAML:function(e,t,n){null!==e.version&&j(e,"duplication of %YAML directive"),1!==n.length&&j(e,"YAML directive accepts exactly one argument");var r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]);null===r&&j(e,"ill-formed argument of the YAML directive");var i=parseInt(r[1],10),o=parseInt(r[2],10);1!==i&&j(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=o<2,1!==o&&2!==o&&M(e,"unsupported YAML version of the document")},TAG:function(e,t,n){var r;2!==n.length&&j(e,"TAG directive accepts exactly two arguments");var i=n[0];r=n[1],p.test(i)||j(e,"ill-formed tag handle (first argument) of the TAG directive"),l.call(e.tagMap,i)&&j(e,'there is a previously declared suffix for "'+i+'" tag handle'),f.test(r)||j(e,"ill-formed tag prefix (second argument) of the TAG directive");try{r=decodeURIComponent(r)}catch(t){j(e,"tag prefix is malformed: "+r)}e.tagMap[i]=r}};function _(e,t,n,r){if(t=32&&l<=1114111||j(e,"expected valid JSON character")}else u.test(i)&&j(e,"the stream contains non-printable characters");e.result+=i}}function D(e){e.totalMergeKeys++,-1!==e.maxTotalMergeKeys&&e.totalMergeKeys>e.maxTotalMergeKeys&&j(e,"merge keys exceeded maxTotalMergeKeys ("+e.maxTotalMergeKeys+")")}function U(e,n,r,i){t.isObject(r)||j(e,"cannot merge mappings; the provided source object is unacceptable"),D(e);for(var o=Object.keys(r),a=0,u=o.length;a100&&j(t,"abnormal merge sequence size");for(var h=0,m=a.length;h1&&(e.result+=t.repeat("\n",n-1))}function P(e,t){var n=e.tag,r=e.anchor,i=[],o=!1;if(-1!==e.firstTabInLine)return!1;null!==e.anchor&&F(e,e.anchor,i);for(var a=e.input.charCodeAt(e.position);0!==a&&(-1!==e.firstTabInLine&&(e.position=e.firstTabInLine,j(e,"tab characters must not be used in indentation")),45===a);){if(!g(e.input.charCodeAt(e.position+1)))break;if(o=!0,e.position++,K(e,!0,-1)&&e.lineIndent<=t)i.push(null),a=e.input.charCodeAt(e.position);else{var l=e.line;if(Q(e,t,3,!1,!0),i.push(e.result),K(e,!0,-1),a=e.input.charCodeAt(e.position),(e.line===l||e.lineIndent>t)&&0!==a)j(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(h&&(i=e.line,o=e.lineStart,a=e.position),Q(e,t,4,!0,r)&&(h?f=e.result:d=e.result),h||(q(e,c,s,p,f,d,i,o,a),p=f=d=null),K(e,!0,-1),v=e.input.charCodeAt(e.position)),(e.line===A||e.lineIndent>t)&&0!==v)j(e,"bad indentation of a mapping entry");else if(e.lineIndent=0;r-=1){var i=t[n[r]];i.existed?e.anchorMap[n[r]]=i.value:delete e.anchorMap[n[r]]}}(e),N(e,i),!1)}function Q(e,n,r,i,o){var a,u,c,s,p,f=1,d=!1,k=!1,x=null;e.depth>=e.maxDepth&&j(e,"nesting exceeded maxDepth ("+e.maxDepth+")"),e.depth+=1,null!==e.listener&&e.listener("open",e),e.tag=null,e.anchor=null,e.kind=null,e.result=null;var I=a=u=4===r||3===r;if(i&&K(e,!0,-1)&&(d=!0,e.lineIndent>n?f=1:e.lineIndent===n?f=0:e.lineIndentn?f=1:e.lineIndent===n?f=0:e.lineIndent=0))break;0===i?j(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?j(e,"repeat of an indentation width identifier"):(u=n+i-1,l=!0)}if(m(p)){do{p=e.input.charCodeAt(++e.position)}while(m(p));if(35===p)do{p=e.input.charCodeAt(++e.position)}while(!h(p)&&0!==p)}for(;0!==p;){for(Y(e),e.lineIndent=0,p=e.input.charCodeAt(e.position);(!l||e.lineIndentu&&(u=e.lineIndent),h(p))c++;else{if(l||0!==u||j(e,"missing indentation for block scalar"),e.lineIndent0){for(var a=i,l=0;a>0;a--)(i=v(o=e.input.charCodeAt(++e.position)))>=0?l=(l<<4)+i:j(e,"expected hexadecimal character");e.result+=w(l),e.position++}else j(e,"unknown escape sequence");n=r=e.position}else h(o)?(_(e,n,r,!0),H(e,K(e,!1,t)),n=r=e.position):e.position===e.lineStart&&R(e)?j(e,"unexpected end of the document within a double quoted scalar"):(e.position++,m(o)||(r=e.position))}j(e,"unexpected end of the stream within a double quoted scalar")}(e,s)?k=!0:!function(e){var t=e.input.charCodeAt(e.position);if(42!==t)return!1;t=e.input.charCodeAt(++e.position);for(var n=e.position;0!==t&&!g(t)&&!y(t);)t=e.input.charCodeAt(++e.position);e.position===n&&j(e,"name of an alias node must contain at least one character");var r=e.input.slice(n,e.position);return l.call(e.anchorMap,r)||j(e,'unidentified alias "'+r+'"'),e.result=e.anchorMap[r],K(e,!0,-1),!0}(e)?function(e,t,n){var r,i,o,a,l,u,c=e.kind,s=e.result,p=e.input.charCodeAt(e.position);if(g(p)||y(p)||35===p||38===p||42===p||33===p||124===p||62===p||39===p||34===p||37===p||64===p||96===p)return!1;if(63===p||45===p){var f=e.input.charCodeAt(e.position+1);if(g(f)||n&&y(f))return!1}for(e.kind="scalar",e.result="",r=i=e.position,o=!1;0!==p;){if(58===p){var d=e.input.charCodeAt(e.position+1);if(g(d)||n&&y(d))break}else if(35===p){if(g(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&R(e)||n&&y(p))break;if(h(p)){if(a=e.line,l=e.lineStart,u=e.lineIndent,K(e,!1,-1),e.lineIndent>=t){o=!0,p=e.input.charCodeAt(e.position);continue}e.position=i,e.line=a,e.lineStart=l,e.lineIndent=u;break}}o&&(_(e,r,i,!1),H(e,e.line-a),r=i=e.position,o=!1),m(p)||(i=e.position+1),p=e.input.charCodeAt(++e.position)}return _(e,r,i,!1),!!e.result||(e.kind=c,e.result=s,!1)}(e,s,1===r)&&(k=!0,null===e.tag&&(e.tag="?")):(k=!0,null===e.tag&&null===e.anchor||j(e,"alias node should not have any properties")),null!==e.anchor&&F(e,e.anchor,e.result)}else 0===f&&(k=u&&P(e,p));if(null===e.tag)null!==e.anchor&&F(e,e.anchor,e.result);else if("?"===e.tag){null!==e.result&&"scalar"!==e.kind&&j(e,'unacceptable node kind for ! tag; it should be "scalar", not "'+e.kind+'"');for(var N=0,L=e.implicitTypes.length;N"),null!==e.result&&c.kind!==e.kind&&j(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+c.kind+'", not "'+e.kind+'"'),c.resolve(e.result,e.tag)?(e.result=c.construct(e.result,e.tag),null!==e.anchor&&F(e,e.anchor,e.result)):j(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return null!==e.listener&&e.listener("close",e),e.depth-=1,null!==e.tag||null!==e.anchor||k}function X(e){var t,n=e.position,r=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);0!==(t=e.input.charCodeAt(e.position))&&(K(e,!0,-1),t=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==t));){r=!0,t=e.input.charCodeAt(++e.position);for(var i=e.position;0!==t&&!g(t);)t=e.input.charCodeAt(++e.position);var o=e.input.slice(i,e.position),a=[];for(o.length<1&&j(e,"directive name must not be less than one character in length");0!==t;){for(;m(t);)t=e.input.charCodeAt(++e.position);if(35===t){do{t=e.input.charCodeAt(++e.position)}while(0!==t&&!h(t));break}if(h(t))break;for(i=e.position;0!==t&&!g(t);)t=e.input.charCodeAt(++e.position);a.push(e.input.slice(i,e.position))}0!==t&&Y(e),l.call(L,o)?L[o](e,o,a):M(e,'unknown document directive "'+o+'"')}K(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,K(e,!0,-1)):r&&j(e,"directives end mark is expected"),Q(e,e.lineIndent-1,4,!1,!0),K(e,!0,-1),e.checkLineBreaks&&c.test(e.input.slice(n,e.position))&&M(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&R(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,K(e,!0,-1)):e.position=32&&e<=126||e>=161&&e<=55295&&8232!==e&&8233!==e||e>=57344&&e<=65533&&e!==a||e>=65536&&e<=1114111}function g(e){return m(e)&&e!==a&&13!==e&&10!==e}function y(e,t,n){var r=g(e),i=r&&!h(e);return(n?r:r&&44!==e&&91!==e&&93!==e&&123!==e&&125!==e)&&35!==e&&!(58===t&&!i)||g(t)&&!h(t)&&35===e||58===t&&i}function v(e,t){var n,r=e.charCodeAt(t);return r>=55296&&r<=56319&&t+1=56320&&n<=57343?1024*(r-55296)+n-56320+65536:r}function b(e){return/^\n* /.test(e)}function A(e,t,n,r,i,o,l,u){var c,s,p=0,f=null,d=!1,g=!1,A=-1!==r,k=-1,w=m(s=v(e,0))&&s!==a&&!h(s)&&45!==s&&63!==s&&58!==s&&44!==s&&91!==s&&93!==s&&123!==s&&125!==s&&35!==s&&38!==s&&42!==s&&33!==s&&124!==s&&61!==s&&62!==s&&39!==s&&34!==s&&37!==s&&64!==s&&96!==s&&function(e){return!h(e)&&58!==e}(v(e,e.length-1));if(t||l)for(c=0;c=65536?c+=2:c++){if(!m(p=v(e,c)))return 5;w=w&&y(p,f,u),f=p}else{for(c=0;c=65536?c+=2:c++){if(10===(p=v(e,c)))d=!0,A&&(g=g||c-k-1>r&&" "!==e[k+1],k=c);else if(!m(p))return 5;w=w&&y(p,f,u),f=p}g=g||A&&c-k-1>r&&" "!==e[k+1]}return d||g?n>9&&b(e)?5:l?2===o?5:2:g?4:3:!w||l||i(e)?2===o?5:2:1}function k(e,t,r,i,o){e.dump=function(){if(0===t.length)return 2===e.quotingType?'""':"''";if(!e.noCompatMode&&(-1!==u.indexOf(t)||c.test(t)))return 2===e.quotingType?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,r),p=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),d=i||e.flowLevel>-1&&r>=e.flowLevel;switch(A(t,d,e.indent,p,function(t){return function(e,t){for(var n=0,r=e.implicitTypes.length;n"+w(t,e.indent)+x(f(function(e,t){var n,r,i=/(\n+)([^\n]*)/g,o=(l=e.indexOf("\n"),l=-1!==l?l:e.length,i.lastIndex=l,C(e.slice(0,l),t)),a="\n"===e[0]||" "===e[0];var l;for(;r=i.exec(e);){var u=r[1],c=r[2];n=" "===c[0],o+=u+(a||n||""===c?"":"\n")+C(c,t),a=n}return o}(t,p),a));case 5:return'"'+function(e){for(var t="",n=0,r=0;r=65536?r+=2:r++){n=v(e,r);var i=l[n];!i&&m(n)?(t+=e[r],n>=65536&&(t+=e[r+1])):t+=i||s(n)}return t}(t)+'"';default:throw new n("impossible error: invalid scalar style")}}()}function w(e,t){var n=b(e)?String(t):"",r="\n"===e[e.length-1];return n+(r&&("\n"===e[e.length-2]||"\n"===e)?"+":r?"":"-")+"\n"}function x(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function C(e,t){if(""===e||" "===e[0])return e;for(var n,r,i=/ [^ ]/g,o=0,a=0,l=0,u="";n=i.exec(e);)(l=n.index)-o>t&&(r=a>o?a:l,u+="\n"+e.slice(o,r),o=r+1),a=l;return u+="\n",e.length-o>t&&a>o?u+=e.slice(o,a)+"\n"+e.slice(a+1):u+=e.slice(o),u.slice(1)}function S(e,t,n,r){for(var i="",o=e.tag,a=0,l=n.length;a tag resolver accepts not "'+p+'" style');f=s.represent[p](r,p)}t.dump=f}return!0}}return!1}function T(e,t,r,o,a,l,u){e.tag=null,e.dump=r,I(e,r,!1)||I(e,r,!0);var c=i.call(e.dump),s=o;o&&(o=e.flowLevel<0||e.flowLevel>t);var p,f,h="[object Object]"===c||"[object Array]"===c;if(h&&(f=-1!==(p=e.duplicates.indexOf(r))),(null!==e.tag&&"?"!==e.tag||f||2!==e.indent&&t>0)&&(a=!1),f&&e.usedDuplicates[p])e.dump="*ref_"+p;else{if(h&&f&&!e.usedDuplicates[p]&&(e.usedDuplicates[p]=!0),"[object Object]"===c)o&&0!==Object.keys(e.dump).length?(!function(e,t,r,i){var o="",a=e.tag,l=Object.keys(r);if(!0===e.sortKeys)l.sort();else if("function"==typeof e.sortKeys)l.sort(e.sortKeys);else if(e.sortKeys)throw new n("sortKeys must be a boolean or a function");for(var u=0,c=l.length;u1024;h&&(e.dump&&10===e.dump.charCodeAt(0)?s+="?":s+="? "),s+=e.dump,h&&(s+=d(e,t)),T(e,t+1,f,!0,h)&&(e.dump&&10===e.dump.charCodeAt(0)?s+=":":s+=": ",o+=s+=e.dump)}}e.tag=a,e.dump=o||"{}"}(e,t,e.dump,a),f&&(e.dump="&ref_"+p+e.dump)):(!function(e,t,n){for(var r="",i=e.tag,o=Object.keys(n),a=0,l=o.length;a1024&&(u+="? "),u+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),T(e,t,s,!1,!1)&&(r+=u+=e.dump))}e.tag=i,e.dump="{"+r+"}"}(e,t,e.dump),f&&(e.dump="&ref_"+p+" "+e.dump));else if("[object Array]"===c)o&&0!==e.dump.length?(e.noArrayIndent&&!u&&t>0?S(e,t-1,e.dump,a):S(e,t,e.dump,a),f&&(e.dump="&ref_"+p+e.dump)):(!function(e,t,n){for(var r="",i=e.tag,o=0,a=n.length;o",e.dump=m+" "+e.dump}}return!0}function O(e,t){var n=[],r=[];j(e,n,r);for(var i=r.length,o=0;o= 0x30/* 0 */) && (c <= 0x39/* 9 */)) ||\n ((c >= 0x41/* A */) && (c <= 0x46/* F */)) ||\n ((c >= 0x61/* a */) && (c <= 0x66/* f */))\n}\n\nfunction isOctCode (c) {\n return ((c >= 0x30/* 0 */) && (c <= 0x37/* 7 */))\n}\n\nfunction isDecCode (c) {\n return ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */))\n}\n\nfunction resolveYamlInteger (data) {\n if (data === null) return false\n\n const max = data.length\n let index = 0\n let hasDigits = false\n\n if (!max) return false\n\n let ch = data[index]\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index]\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true\n ch = data[++index]\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++\n\n for (; index < max; index++) {\n ch = data[index]\n if (ch !== '0' && ch !== '1') return false\n hasDigits = true\n }\n return hasDigits && isFinite(parseYamlInteger(data))\n }\n\n if (ch === 'x') {\n // base 16\n index++\n\n for (; index < max; index++) {\n if (!isHexCode(data.charCodeAt(index))) return false\n hasDigits = true\n }\n return hasDigits && isFinite(parseYamlInteger(data))\n }\n\n if (ch === 'o') {\n // base 8\n index++\n\n for (; index < max; index++) {\n if (!isOctCode(data.charCodeAt(index))) return false\n hasDigits = true\n }\n return hasDigits && isFinite(parseYamlInteger(data))\n }\n }\n\n // base 10 (except 0)\n\n for (; index < max; index++) {\n if (!isDecCode(data.charCodeAt(index))) {\n return false\n }\n hasDigits = true\n }\n\n if (!hasDigits) return false\n\n return isFinite(parseYamlInteger(data))\n}\n\nfunction parseYamlInteger (data) {\n let value = data\n let sign = 1\n\n let ch = value[0]\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1\n value = value.slice(1)\n ch = value[0]\n }\n\n if (value === '0') return 0\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2)\n if (value[1] === 'x') return sign * parseInt(value.slice(2), 16)\n if (value[1] === 'o') return sign * parseInt(value.slice(2), 8)\n }\n\n return sign * parseInt(value, 10)\n}\n\nfunction constructYamlInteger (data) {\n return parseYamlInteger(data)\n}\n\nfunction isInteger (object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object))\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1) },\n octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1) },\n decimal: function (obj) { return obj.toString(10) },\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1) }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [2, 'bin'],\n octal: [8, 'oct'],\n decimal: [10, 'dec'],\n hexadecimal: [16, 'hex']\n }\n})\n","'use strict'\n\nconst common = require('../common')\nconst Type = require('../type')\n\nconst YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:[0-9]+)(?:\\\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9]+(?:[eE][-+]?[0-9]+)?' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$')\n\nconst YAML_FLOAT_SPECIAL_PATTERN = new RegExp(\n '^(?:' +\n // .inf\n '[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$')\n\nfunction resolveYamlFloat (data) {\n if (data === null) return false\n\n if (!YAML_FLOAT_PATTERN.test(data)) {\n return false\n }\n\n if (isFinite(parseFloat(data, 10))) {\n return true\n }\n\n return YAML_FLOAT_SPECIAL_PATTERN.test(data)\n}\n\nfunction constructYamlFloat (data) {\n let value = data.toLowerCase()\n const sign = value[0] === '-' ? -1 : 1\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1)\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY\n } else if (value === '.nan') {\n return NaN\n }\n return sign * parseFloat(value, 10)\n}\n\nconst SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/\n\nfunction representYamlFloat (object, style) {\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan'\n case 'uppercase': return '.NAN'\n case 'camelcase': return '.NaN'\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf'\n case 'uppercase': return '.INF'\n case 'camelcase': return '.Inf'\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf'\n case 'uppercase': return '-.INF'\n case 'camelcase': return '-.Inf'\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0'\n }\n\n const res = object.toString(10)\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res\n}\n\nfunction isFloat (object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object))\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n})\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n'use strict'\n\nmodule.exports = require('./failsafe').extend({\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n})\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n'use strict'\n\nmodule.exports = require('./json')\n","'use strict'\n\nconst Type = require('../type')\n\nconst YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$') // [3] day\n\nconst YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tzHour\n '(?::([0-9][0-9]))?))?$') // [11] tzMinute\n\nfunction resolveYamlTimestamp (data) {\n if (data === null) return false\n if (YAML_DATE_REGEXP.exec(data) !== null) return true\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true\n return false\n}\n\nfunction constructYamlTimestamp (data) {\n let fraction = 0\n let delta = null\n\n let match = YAML_DATE_REGEXP.exec(data)\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data)\n\n if (match === null) throw new Error('Date resolve error')\n\n // match: [1] year [2] month [3] day\n\n const year = +(match[1])\n const month = +(match[2]) - 1 // JS month starts with 0\n const day = +(match[3])\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day))\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n const hour = +(match[4])\n const minute = +(match[5])\n const second = +(match[6])\n\n if (match[7]) {\n fraction = match[7].slice(0, 3)\n while (fraction.length < 3) { // milli-seconds\n fraction += '0'\n }\n fraction = +fraction\n }\n\n // match: [8] tz [9] tz_sign [10] tzHour [11] tzMinute\n\n if (match[9]) {\n const tzHour = +(match[10])\n const tzMinute = +(match[11] || 0)\n delta = (tzHour * 60 + tzMinute) * 60000 // delta in mili-seconds\n if (match[9] === '-') delta = -delta\n }\n\n const date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction))\n\n if (delta) date.setTime(date.getTime() - delta)\n\n return date\n}\n\nfunction representYamlTimestamp (object /*, style */) {\n return object.toISOString()\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n})\n","'use strict'\n\nconst Type = require('../type')\n\nfunction resolveYamlMerge (data) {\n return data === '<<' || data === null\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n})\n","'use strict'\n\nconst Type = require('../type')\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nconst BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r'\n\nfunction resolveYamlBinary (data) {\n if (data === null) return false\n\n let bitlen = 0\n const max = data.length\n const map = BASE64_MAP\n\n // Convert one by one.\n for (let idx = 0; idx < max; idx++) {\n const code = map.indexOf(data.charAt(idx))\n\n // Skip CR/LF\n if (code > 64) continue\n\n // Fail on illegal characters\n if (code < 0) return false\n\n bitlen += 6\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0\n}\n\nfunction constructYamlBinary (data) {\n const input = data.replace(/[\\r\\n=]/g, '') // remove CR/LF & padding to simplify scan\n const max = input.length\n const map = BASE64_MAP\n let bits = 0\n const result = []\n\n // Collect by 6*4 bits (3 bytes)\n\n for (let idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF)\n result.push((bits >> 8) & 0xFF)\n result.push(bits & 0xFF)\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx))\n }\n\n // Dump tail\n\n const tailbits = (max % 4) * 6\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF)\n result.push((bits >> 8) & 0xFF)\n result.push(bits & 0xFF)\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF)\n result.push((bits >> 2) & 0xFF)\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF)\n }\n\n return new Uint8Array(result)\n}\n\nfunction representYamlBinary (object /*, style */) {\n let result = ''\n let bits = 0\n const max = object.length\n const map = BASE64_MAP\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (let idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F]\n result += map[(bits >> 12) & 0x3F]\n result += map[(bits >> 6) & 0x3F]\n result += map[bits & 0x3F]\n }\n\n bits = (bits << 8) + object[idx]\n }\n\n // Dump tail\n\n const tail = max % 3\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F]\n result += map[(bits >> 12) & 0x3F]\n result += map[(bits >> 6) & 0x3F]\n result += map[bits & 0x3F]\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F]\n result += map[(bits >> 4) & 0x3F]\n result += map[(bits << 2) & 0x3F]\n result += map[64]\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F]\n result += map[(bits << 4) & 0x3F]\n result += map[64]\n result += map[64]\n }\n\n return result\n}\n\nfunction isBinary (obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]'\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n})\n","'use strict'\n\nconst Type = require('../type')\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\nconst _toString = Object.prototype.toString\n\nfunction resolveYamlOmap (data) {\n if (data === null) return true\n\n const objectKeys = {}\n const object = data\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n const pair = object[index]\n let pairHasKey = false\n\n if (_toString.call(pair) !== '[object Object]') return false\n\n let pairKey\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true\n else return false\n }\n }\n\n if (!pairHasKey) return false\n\n if (_hasOwnProperty.call(objectKeys, pairKey)) return false\n Object.defineProperty(objectKeys, pairKey, { value: true })\n }\n\n return true\n}\n\nfunction constructYamlOmap (data) {\n return data !== null ? data : []\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n})\n","'use strict'\n\nconst Type = require('../type')\n\nconst _toString = Object.prototype.toString\n\nfunction resolveYamlPairs (data) {\n if (data === null) return true\n\n const object = data\n\n const result = new Array(object.length)\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n const pair = object[index]\n\n if (_toString.call(pair) !== '[object Object]') return false\n\n const keys = Object.keys(pair)\n\n if (keys.length !== 1) return false\n\n result[index] = [keys[0], pair[keys[0]]]\n }\n\n return true\n}\n\nfunction constructYamlPairs (data) {\n if (data === null) return []\n\n const object = data\n const result = new Array(object.length)\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n const pair = object[index]\n\n const keys = Object.keys(pair)\n\n result[index] = [keys[0], pair[keys[0]]]\n }\n\n return result\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n})\n","'use strict'\n\nconst Type = require('../type')\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction resolveYamlSet (data) {\n if (data === null) return true\n\n const object = data\n\n for (const key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false\n }\n }\n\n return true\n}\n\nfunction constructYamlSet (data) {\n return data !== null ? data : {}\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n})\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n'use strict'\n\nmodule.exports = require('./core').extend({\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n})\n","'use strict'\n\nconst common = require('./common')\nconst YAMLException = require('./exception')\nconst makeSnippet = require('./snippet')\nconst DEFAULT_SCHEMA = require('./schema/default')\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nconst CONTEXT_FLOW_IN = 1\nconst CONTEXT_FLOW_OUT = 2\nconst CONTEXT_BLOCK_IN = 3\nconst CONTEXT_BLOCK_OUT = 4\n\nconst CHOMPING_CLIP = 1\nconst CHOMPING_STRIP = 2\nconst CHOMPING_KEEP = 3\n\n// eslint-disable-next-line no-control-regex\nconst PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/\nconst PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/\n// eslint-disable-next-line no-useless-escape\nconst PATTERN_FLOW_INDICATORS = /[,\\[\\]{}]/\n// eslint-disable-next-line no-useless-escape\nconst PATTERN_TAG_HANDLE = /^(?:!|!!|![0-9A-Za-z-]+!)$/\n// eslint-disable-next-line no-useless-escape\nconst PATTERN_TAG_URI = /^(?:!|[^,\\[\\]{}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;/?:@&=+$,_.!~*'()\\[\\]])*$/i\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\n\nfunction isEol (c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */)\n}\n\nfunction isWhiteSpace (c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */)\n}\n\nfunction isWsOrEol (c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */)\n}\n\nfunction isFlowIndicator (c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */\n}\n\nfunction fromHexCode (c) {\n if ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) {\n return c - 0x30\n }\n\n const lc = c | 0x20\n\n if ((lc >= 0x61/* a */) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10\n }\n\n return -1\n}\n\nfunction escapedHexLen (c) {\n if (c === 0x78/* x */) { return 2 }\n if (c === 0x75/* u */) { return 4 }\n if (c === 0x55/* U */) { return 8 }\n return 0\n}\n\nfunction fromDecimalCode (c) {\n if ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) {\n return c - 0x30\n }\n\n return -1\n}\n\nfunction simpleEscapeSequence (c) {\n switch (c) {\n case 0x30/* 0 */: return '\\x00'\n case 0x61/* a */: return '\\x07'\n case 0x62/* b */: return '\\x08'\n case 0x74/* t */: return '\\x09'\n case 0x09/* Tab */: return '\\x09'\n case 0x6E/* n */: return '\\x0A'\n case 0x76/* v */: return '\\x0B'\n case 0x66/* f */: return '\\x0C'\n case 0x72/* r */: return '\\x0D'\n case 0x65/* e */: return '\\x1B'\n case 0x20/* Space */: return ' '\n case 0x22/* \" */: return '\\x22'\n case 0x2F/* / */: return '/'\n case 0x5C/* \\ */: return '\\x5C'\n case 0x4E/* N */: return '\\x85'\n case 0x5F/* _ */: return '\\xA0'\n case 0x4C/* L */: return '\\u2028'\n case 0x50/* P */: return '\\u2029'\n default: return ''\n }\n}\n\nfunction charFromCodepoint (c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c)\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n )\n}\n\n// set a property of a literal object, while protecting against prototype pollution,\n// see https://github.com/nodeca/js-yaml/issues/164 for more details\nfunction setProperty (object, key, value) {\n // used for this specific key only because Object.defineProperty is slow\n if (key === '__proto__') {\n Object.defineProperty(object, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: value\n })\n } else {\n object[key] = value\n }\n}\n\nconst simpleEscapeCheck = new Array(256) // integer, for fast access\nconst simpleEscapeMap = new Array(256)\nfor (let i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0\n simpleEscapeMap[i] = simpleEscapeSequence(i)\n}\n\nfunction State (input, options) {\n this.input = input\n\n this.filename = options['filename'] || null\n this.schema = options['schema'] || DEFAULT_SCHEMA\n this.onWarning = options['onWarning'] || null\n // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n // if such documents have no explicit %YAML directive\n this.legacy = options['legacy'] || false\n\n this.json = options['json'] || false\n this.listener = options['listener'] || null\n this.maxDepth = typeof options['maxDepth'] === 'number' ? options['maxDepth'] : 100\n this.maxTotalMergeKeys = typeof options['maxTotalMergeKeys'] === 'number' ? options['maxTotalMergeKeys'] : 10000\n\n this.implicitTypes = this.schema.compiledImplicit\n this.typeMap = this.schema.compiledTypeMap\n\n this.length = input.length\n this.position = 0\n this.line = 0\n this.lineStart = 0\n this.lineIndent = 0\n this.depth = 0\n this.totalMergeKeys = 0\n\n // position of first leading tab in the current line,\n // used to make sure there are no tabs in the indentation\n this.firstTabInLine = -1\n\n this.documents = []\n this.anchorMapTransactions = []\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result; */\n}\n\nfunction generateError (state, message) {\n const mark = {\n name: state.filename,\n buffer: state.input.slice(0, -1), // omit trailing \\0\n position: state.position,\n line: state.line,\n column: state.position - state.lineStart\n }\n\n mark.snippet = makeSnippet(mark)\n\n return new YAMLException(message, mark)\n}\n\nfunction throwError (state, message) {\n throw generateError(state, message)\n}\n\nfunction throwWarning (state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message))\n }\n}\n\nfunction storeAnchor (state, name, value) {\n const transactions = state.anchorMapTransactions\n\n if (transactions.length !== 0) {\n const transaction = transactions[transactions.length - 1]\n\n if (!_hasOwnProperty.call(transaction, name)) {\n transaction[name] = {\n existed: _hasOwnProperty.call(state.anchorMap, name),\n value: state.anchorMap[name]\n }\n }\n }\n\n state.anchorMap[name] = value\n}\n\nfunction beginAnchorTransaction (state) {\n state.anchorMapTransactions.push(Object.create(null))\n}\n\nfunction commitAnchorTransaction (state) {\n const transaction = state.anchorMapTransactions.pop()\n const transactions = state.anchorMapTransactions\n\n if (transactions.length === 0) return\n\n const parent = transactions[transactions.length - 1]\n const names = Object.keys(transaction)\n\n for (let index = 0, length = names.length; index < length; index += 1) {\n const name = names[index]\n\n if (!_hasOwnProperty.call(parent, name)) {\n parent[name] = transaction[name]\n }\n }\n}\n\nfunction rollbackAnchorTransaction (state) {\n const transaction = state.anchorMapTransactions.pop()\n const names = Object.keys(transaction)\n\n for (let index = names.length - 1; index >= 0; index -= 1) {\n const entry = transaction[names[index]]\n\n if (entry.existed) {\n state.anchorMap[names[index]] = entry.value\n } else {\n delete state.anchorMap[names[index]]\n }\n }\n}\n\nfunction snapshotState (state) {\n return {\n position: state.position,\n line: state.line,\n lineStart: state.lineStart,\n lineIndent: state.lineIndent,\n firstTabInLine: state.firstTabInLine,\n tag: state.tag,\n anchor: state.anchor,\n kind: state.kind,\n result: state.result\n }\n}\n\nfunction restoreState (state, snapshot) {\n state.position = snapshot.position\n state.line = snapshot.line\n state.lineStart = snapshot.lineStart\n state.lineIndent = snapshot.lineIndent\n state.firstTabInLine = snapshot.firstTabInLine\n state.tag = snapshot.tag\n state.anchor = snapshot.anchor\n state.kind = snapshot.kind\n state.result = snapshot.result\n}\n\nconst directiveHandlers = {\n\n YAML: function handleYamlDirective (state, name, args) {\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive')\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument')\n }\n\n const match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0])\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive')\n }\n\n const major = parseInt(match[1], 10)\n const minor = parseInt(match[2], 10)\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document')\n }\n\n state.version = args[0]\n state.checkLineBreaks = (minor < 2)\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document')\n }\n },\n\n TAG: function handleTagDirective (state, name, args) {\n let prefix\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments')\n }\n\n const handle = args[0]\n prefix = args[1]\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive')\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle')\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive')\n }\n\n try {\n prefix = decodeURIComponent(prefix)\n } catch (err) {\n throwError(state, 'tag prefix is malformed: ' + prefix)\n }\n\n state.tagMap[handle] = prefix\n }\n}\n\nfunction captureSegment (state, start, end, checkJson) {\n if (start < end) {\n const _result = state.input.slice(start, end)\n\n if (checkJson) {\n for (let _position = 0, _length = _result.length; _position < _length; _position += 1) {\n const _character = _result.charCodeAt(_position)\n if (!(_character === 0x09 ||\n (_character >= 0x20 && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character')\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters')\n }\n\n state.result += _result\n }\n}\n\nfunction chargeMergeWork (state) {\n state.totalMergeKeys++\n\n if (state.maxTotalMergeKeys !== -1 && state.totalMergeKeys > state.maxTotalMergeKeys) {\n throwError(state, 'merge keys exceeded maxTotalMergeKeys (' + state.maxTotalMergeKeys + ')')\n }\n}\n\nfunction mergeMappings (state, destination, source, overridableKeys) {\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable')\n }\n\n // Count the source mapping itself to bound sequences of empty mappings.\n chargeMergeWork(state)\n\n const sourceKeys = Object.keys(source)\n\n for (let index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n const key = sourceKeys[index]\n\n chargeMergeWork(state)\n\n if (!_hasOwnProperty.call(destination, key)) {\n setProperty(destination, key, source[key])\n overridableKeys[key] = true\n }\n }\n}\n\nfunction storeMappingPair (state, _result, overridableKeys, keyTag, keyNode, valueNode,\n startLine, startLineStart, startPos) {\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode)\n\n for (let index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys')\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]'\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]'\n }\n\n keyNode = String(keyNode)\n\n if (_result === null) {\n _result = {}\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n if (valueNode.length > 100) {\n throwError(state, 'abnormal merge sequence size')\n }\n\n for (let index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys)\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys)\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line\n state.lineStart = startLineStart || state.lineStart\n state.position = startPos || state.position\n throwError(state, 'duplicated mapping key')\n }\n\n setProperty(_result, keyNode, valueNode)\n delete overridableKeys[keyNode]\n }\n\n return _result\n}\n\nfunction readLineBreak (state) {\n const ch = state.input.charCodeAt(state.position)\n\n if (ch === 0x0A/* LF */) {\n state.position++\n } else if (ch === 0x0D/* CR */) {\n state.position++\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++\n }\n } else {\n throwError(state, 'a line break is expected')\n }\n\n state.line += 1\n state.lineStart = state.position\n state.firstTabInLine = -1\n}\n\nfunction skipSeparationSpace (state, allowComments, checkIndent) {\n let lineBreaks = 0\n let ch = state.input.charCodeAt(state.position)\n\n while (ch !== 0) {\n while (isWhiteSpace(ch)) {\n if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n state.firstTabInLine = state.position\n }\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position)\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0)\n }\n\n if (isEol(ch)) {\n readLineBreak(state)\n\n ch = state.input.charCodeAt(state.position)\n lineBreaks++\n state.lineIndent = 0\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++\n ch = state.input.charCodeAt(++state.position)\n }\n } else {\n break\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation')\n }\n\n return lineBreaks\n}\n\nfunction testDocumentSeparator (state) {\n let _position = state.position\n let ch = state.input.charCodeAt(_position)\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n _position += 3\n\n ch = state.input.charCodeAt(_position)\n\n if (ch === 0 || isWsOrEol(ch)) {\n return true\n }\n }\n\n return false\n}\n\nfunction writeFoldedLines (state, count) {\n if (count === 1) {\n state.result += ' '\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1)\n }\n}\n\nfunction readPlainScalar (state, nodeIndent, withinFlowCollection) {\n let captureStart\n let captureEnd\n let hasPendingContent\n let _line\n let _lineStart\n let _lineIndent\n const _kind = state.kind\n const _result = state.result\n\n let ch = state.input.charCodeAt(state.position)\n\n if (isWsOrEol(ch) ||\n isFlowIndicator(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n const following = state.input.charCodeAt(state.position + 1)\n\n if (isWsOrEol(following) ||\n (withinFlowCollection && isFlowIndicator(following))) {\n return false\n }\n }\n\n state.kind = 'scalar'\n state.result = ''\n captureStart = captureEnd = state.position\n hasPendingContent = false\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n const following = state.input.charCodeAt(state.position + 1)\n\n if (isWsOrEol(following) ||\n (withinFlowCollection && isFlowIndicator(following))) {\n break\n }\n } else if (ch === 0x23/* # */) {\n const preceding = state.input.charCodeAt(state.position - 1)\n\n if (isWsOrEol(preceding)) {\n break\n }\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n (withinFlowCollection && isFlowIndicator(ch))) {\n break\n } else if (isEol(ch)) {\n _line = state.line\n _lineStart = state.lineStart\n _lineIndent = state.lineIndent\n skipSeparationSpace(state, false, -1)\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true\n ch = state.input.charCodeAt(state.position)\n continue\n } else {\n state.position = captureEnd\n state.line = _line\n state.lineStart = _lineStart\n state.lineIndent = _lineIndent\n break\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false)\n writeFoldedLines(state, state.line - _line)\n captureStart = captureEnd = state.position\n hasPendingContent = false\n }\n\n if (!isWhiteSpace(ch)) {\n captureEnd = state.position + 1\n }\n\n ch = state.input.charCodeAt(++state.position)\n }\n\n captureSegment(state, captureStart, captureEnd, false)\n\n if (state.result) {\n return true\n }\n\n state.kind = _kind\n state.result = _result\n return false\n}\n\nfunction readSingleQuotedScalar (state, nodeIndent) {\n let captureStart\n let captureEnd\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x27/* ' */) {\n return false\n }\n\n state.kind = 'scalar'\n state.result = ''\n state.position++\n captureStart = captureEnd = state.position\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true)\n ch = state.input.charCodeAt(++state.position)\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position\n state.position++\n captureEnd = state.position\n } else {\n return true\n }\n } else if (isEol(ch)) {\n captureSegment(state, captureStart, captureEnd, true)\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent))\n captureStart = captureEnd = state.position\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar')\n } else {\n state.position++\n if (!isWhiteSpace(ch)) {\n captureEnd = state.position\n }\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar')\n}\n\nfunction readDoubleQuotedScalar (state, nodeIndent) {\n let captureStart\n let captureEnd\n let tmp\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x22/* \" */) {\n return false\n }\n\n state.kind = 'scalar'\n state.result = ''\n state.position++\n captureStart = captureEnd = state.position\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true)\n state.position++\n return true\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true)\n ch = state.input.charCodeAt(++state.position)\n\n if (isEol(ch)) {\n skipSeparationSpace(state, false, nodeIndent)\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch]\n state.position++\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n let hexLength = tmp\n let hexResult = 0\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position)\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp\n } else {\n throwError(state, 'expected hexadecimal character')\n }\n }\n\n state.result += charFromCodepoint(hexResult)\n\n state.position++\n } else {\n throwError(state, 'unknown escape sequence')\n }\n\n captureStart = captureEnd = state.position\n } else if (isEol(ch)) {\n captureSegment(state, captureStart, captureEnd, true)\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent))\n captureStart = captureEnd = state.position\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar')\n } else {\n state.position++\n if (!isWhiteSpace(ch)) {\n captureEnd = state.position\n }\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar')\n}\n\nfunction readFlowCollection (state, nodeIndent) {\n let readNext = true\n let _line\n let _lineStart\n let _pos\n const _tag = state.tag\n let _result\n const _anchor = state.anchor\n let terminator\n let isPair\n let isExplicitPair\n let isMapping\n const overridableKeys = Object.create(null)\n let keyNode\n let keyTag\n let valueNode\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D/* ] */\n isMapping = false\n _result = []\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D/* } */\n isMapping = true\n _result = {}\n } else {\n return false\n }\n\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, _result)\n }\n\n ch = state.input.charCodeAt(++state.position)\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent)\n\n ch = state.input.charCodeAt(state.position)\n\n if (ch === terminator) {\n state.position++\n state.tag = _tag\n state.anchor = _anchor\n state.kind = isMapping ? 'mapping' : 'sequence'\n state.result = _result\n return true\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries')\n } else if (ch === 0x2C/* , */) {\n // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n throwError(state, \"expected the node content, but found ','\")\n }\n\n keyTag = keyNode = valueNode = null\n isPair = isExplicitPair = false\n\n if (ch === 0x3F/* ? */) {\n const following = state.input.charCodeAt(state.position + 1)\n\n if (isWsOrEol(following)) {\n isPair = isExplicitPair = true\n state.position++\n skipSeparationSpace(state, true, nodeIndent)\n }\n }\n\n _line = state.line // Save the current line.\n _lineStart = state.lineStart\n _pos = state.position\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true)\n keyTag = state.tag\n keyNode = state.result\n skipSeparationSpace(state, true, nodeIndent)\n\n ch = state.input.charCodeAt(state.position)\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true\n ch = state.input.charCodeAt(++state.position)\n skipSeparationSpace(state, true, nodeIndent)\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true)\n valueNode = state.result\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos))\n } else {\n _result.push(keyNode)\n }\n\n skipSeparationSpace(state, true, nodeIndent)\n\n ch = state.input.charCodeAt(state.position)\n\n if (ch === 0x2C/* , */) {\n readNext = true\n ch = state.input.charCodeAt(++state.position)\n } else {\n readNext = false\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection')\n}\n\nfunction readBlockScalar (state, nodeIndent) {\n let folding\n let chomping = CHOMPING_CLIP\n let didReadContent = false\n let detectedIndent = false\n let textIndent = nodeIndent\n let emptyLines = 0\n let atMoreIndented = false\n let tmp\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch === 0x7C/* | */) {\n folding = false\n } else if (ch === 0x3E/* > */) {\n folding = true\n } else {\n return false\n }\n\n state.kind = 'scalar'\n state.result = ''\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position)\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP\n } else {\n throwError(state, 'repeat of a chomping mode identifier')\n }\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one')\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1\n detectedIndent = true\n } else {\n throwError(state, 'repeat of an indentation width identifier')\n }\n } else {\n break\n }\n }\n\n if (isWhiteSpace(ch)) {\n do { ch = state.input.charCodeAt(++state.position) }\n while (isWhiteSpace(ch))\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position) }\n while (!isEol(ch) && (ch !== 0))\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state)\n state.lineIndent = 0\n\n ch = state.input.charCodeAt(state.position)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent\n }\n\n if (isEol(ch)) {\n emptyLines++\n continue\n }\n\n if (!detectedIndent && textIndent === 0) {\n throwError(state, 'missing indentation for block scalar')\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines)\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n'\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (isWhiteSpace(ch)) {\n atMoreIndented = true\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines)\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false\n state.result += common.repeat('\\n', emptyLines + 1)\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' '\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines)\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines)\n }\n\n didReadContent = true\n detectedIndent = true\n emptyLines = 0\n const captureStart = state.position\n\n while (!isEol(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n captureSegment(state, captureStart, state.position, false)\n }\n\n return true\n}\n\nfunction readBlockSequence (state, nodeIndent) {\n const _tag = state.tag\n const _anchor = state.anchor\n const _result = []\n let detected = false\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false\n\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, _result)\n }\n\n let ch = state.input.charCodeAt(state.position)\n\n while (ch !== 0) {\n if (state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine\n throwError(state, 'tab characters must not be used in indentation')\n }\n\n if (ch !== 0x2D/* - */) {\n break\n }\n\n const following = state.input.charCodeAt(state.position + 1)\n\n if (!isWsOrEol(following)) {\n break\n }\n\n detected = true\n state.position++\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null)\n ch = state.input.charCodeAt(state.position)\n continue\n }\n }\n\n const _line = state.line\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true)\n _result.push(state.result)\n skipSeparationSpace(state, true, -1)\n\n ch = state.input.charCodeAt(state.position)\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry')\n } else if (state.lineIndent < nodeIndent) {\n break\n }\n }\n\n if (detected) {\n state.tag = _tag\n state.anchor = _anchor\n state.kind = 'sequence'\n state.result = _result\n return true\n }\n return false\n}\n\nfunction readBlockMapping (state, nodeIndent, flowIndent) {\n let allowCompact\n let _keyLine\n let _keyLineStart\n let _keyPos\n const _tag = state.tag\n const _anchor = state.anchor\n const _result = {}\n const overridableKeys = Object.create(null)\n let keyTag = null\n let keyNode = null\n let valueNode = null\n let atExplicitKey = false\n let detected = false\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false\n\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, _result)\n }\n\n let ch = state.input.charCodeAt(state.position)\n\n while (ch !== 0) {\n if (!atExplicitKey && state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine\n throwError(state, 'tab characters must not be used in indentation')\n }\n\n const following = state.input.charCodeAt(state.position + 1)\n const _line = state.line // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && isWsOrEol(following)) {\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos)\n keyTag = keyNode = valueNode = null\n }\n\n detected = true\n atExplicitKey = true\n allowCompact = true\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false\n allowCompact = true\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line')\n }\n\n state.position += 1\n ch = following\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else {\n _keyLine = state.line\n _keyLineStart = state.lineStart\n _keyPos = state.position\n\n if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n // Neither implicit nor explicit notation.\n // Reading is done. Go to the epilogue.\n break\n }\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position)\n\n while (isWhiteSpace(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position)\n\n if (!isWsOrEol(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping')\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos)\n keyTag = keyNode = valueNode = null\n }\n\n detected = true\n atExplicitKey = false\n allowCompact = false\n keyTag = state.tag\n keyNode = state.result\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed')\n } else {\n state.tag = _tag\n state.anchor = _anchor\n return true // Keep the result of `composeNode`.\n }\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key')\n } else {\n state.tag = _tag\n state.anchor = _anchor\n return true // Keep the result of `composeNode`.\n }\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state.line\n _keyLineStart = state.lineStart\n _keyPos = state.position\n }\n\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result\n } else {\n valueNode = state.result\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos)\n keyTag = keyNode = valueNode = null\n }\n\n skipSeparationSpace(state, true, -1)\n ch = state.input.charCodeAt(state.position)\n }\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry')\n } else if (state.lineIndent < nodeIndent) {\n break\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos)\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag\n state.anchor = _anchor\n state.kind = 'mapping'\n state.result = _result\n }\n\n return detected\n}\n\nfunction readTagProperty (state) {\n let isVerbatim = false\n let isNamed = false\n let tagHandle\n let tagName\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x21/* ! */) return false\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property')\n }\n\n ch = state.input.charCodeAt(++state.position)\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true\n ch = state.input.charCodeAt(++state.position)\n } else if (ch === 0x21/* ! */) {\n isNamed = true\n tagHandle = '!!'\n ch = state.input.charCodeAt(++state.position)\n } else {\n tagHandle = '!'\n }\n\n let _position = state.position\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position) }\n while (ch !== 0 && ch !== 0x3E/* > */)\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position)\n ch = state.input.charCodeAt(++state.position)\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag')\n }\n } else {\n while (ch !== 0 && !isWsOrEol(ch)) {\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1)\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters')\n }\n\n isNamed = true\n _position = state.position + 1\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks')\n }\n }\n\n ch = state.input.charCodeAt(++state.position)\n }\n\n tagName = state.input.slice(_position, state.position)\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters')\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName)\n }\n\n try {\n tagName = decodeURIComponent(tagName)\n } catch (err) {\n throwError(state, 'tag name is malformed: ' + tagName)\n }\n\n if (isVerbatim) {\n state.tag = tagName\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"')\n }\n\n return true\n}\n\nfunction readAnchorProperty (state) {\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x26/* & */) return false\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property')\n }\n\n ch = state.input.charCodeAt(++state.position)\n const _position = state.position\n\n while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character')\n }\n\n state.anchor = state.input.slice(_position, state.position)\n return true\n}\n\nfunction readAlias (state) {\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x2A/* * */) return false\n\n ch = state.input.charCodeAt(++state.position)\n const _position = state.position\n\n while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character')\n }\n\n const alias = state.input.slice(_position, state.position)\n\n if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"')\n }\n\n state.result = state.anchorMap[alias]\n skipSeparationSpace(state, true, -1)\n return true\n}\n\nfunction tryReadBlockMappingFromProperty (state, propertyStart, nodeIndent, flowIndent) {\n const fallbackState = snapshotState(state)\n\n beginAnchorTransaction(state)\n restoreState(state, propertyStart)\n\n // Re-read the leading properties as part of the first implicit key, not as\n // properties of the current node.\n state.tag = null\n state.anchor = null\n state.kind = null\n state.result = null\n\n if (readBlockMapping(state, nodeIndent, flowIndent) && state.kind === 'mapping') {\n commitAnchorTransaction(state)\n return true\n }\n\n rollbackAnchorTransaction(state)\n restoreState(state, fallbackState)\n return false\n}\n\nfunction composeNode (state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n let allowBlockScalars\n let allowBlockCollections\n let indentStatus = 1 // 1: this>parent, 0: this=parent, -1: this= state.maxDepth) {\n throwError(state, 'nesting exceeded maxDepth (' + state.maxDepth + ')')\n }\n\n state.depth += 1\n\n if (state.listener !== null) {\n state.listener('open', state)\n }\n\n state.tag = null\n state.anchor = null\n state.kind = null\n state.result = null\n\n const allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1\n }\n }\n }\n\n if (indentStatus === 1) {\n while (true) {\n const ch = state.input.charCodeAt(state.position)\n const propertyState = snapshotState(state)\n\n // A duplicate property token after a line break can be the first key of\n // a nested block mapping, e.g. `!!map\\n !!str key: value`.\n if (atNewLine &&\n ((ch === 0x21/* ! */ && state.tag !== null) ||\n (ch === 0x26/* & */ && state.anchor !== null))) {\n break\n }\n\n if (!readTagProperty(state) && !readAnchorProperty(state)) {\n break\n }\n\n if (propertyStart === null) {\n propertyStart = propertyState\n }\n\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true\n allowBlockCollections = allowBlockStyles\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1\n }\n } else {\n allowBlockCollections = false\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent\n } else {\n flowIndent = parentIndent + 1\n }\n\n blockIndent = state.position - state.lineStart\n\n if (indentStatus === 1) {\n if ((allowBlockCollections &&\n (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent))) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true\n } else {\n const ch = state.input.charCodeAt(state.position)\n\n if (propertyStart !== null && allowBlockStyles && !allowBlockCollections &&\n ch !== 0x7C/* | */ && ch !== 0x3E/* > */ &&\n tryReadBlockMappingFromProperty(\n state,\n propertyStart,\n propertyStart.position - propertyStart.lineStart,\n flowIndent\n )) {\n hasContent = true\n } else if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true\n } else if (readAlias(state)) {\n hasContent = true\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties')\n }\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true\n\n if (state.tag === null) {\n state.tag = '?'\n }\n }\n\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, state.result)\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent)\n }\n }\n\n if (state.tag === null) {\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, state.result)\n }\n } else if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"! [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for ! tag; it should be \"scalar\", not \"' + state.kind + '\"')\n }\n\n for (let typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex]\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result)\n state.tag = type.tag\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, state.result)\n }\n break\n }\n }\n } else if (state.tag !== '!') {\n if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag]\n } else {\n // looking for multi type\n type = null\n const typeList = state.typeMap.multi[state.kind || 'fallback']\n\n for (let typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type = typeList[typeIndex]\n break\n }\n }\n }\n\n if (!type) {\n throwError(state, 'unknown tag !<' + state.tag + '>')\n }\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"')\n }\n\n if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag')\n } else {\n state.result = type.construct(state.result, state.tag)\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, state.result)\n }\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state)\n }\n\n state.depth -= 1\n return state.tag !== null || state.anchor !== null || hasContent\n}\n\nfunction readDocument (state) {\n const documentStart = state.position\n let hasDirectives = false\n let ch\n\n state.version = null\n state.checkLineBreaks = state.legacy\n state.tagMap = Object.create(null)\n state.anchorMap = Object.create(null)\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1)\n\n ch = state.input.charCodeAt(state.position)\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break\n }\n\n hasDirectives = true\n ch = state.input.charCodeAt(++state.position)\n let _position = state.position\n\n while (ch !== 0 && !isWsOrEol(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n const directiveName = state.input.slice(_position, state.position)\n const directiveArgs = []\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length')\n }\n\n while (ch !== 0) {\n while (isWhiteSpace(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position) }\n while (ch !== 0 && !isEol(ch))\n break\n }\n\n if (isEol(ch)) break\n\n _position = state.position\n\n while (ch !== 0 && !isWsOrEol(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n directiveArgs.push(state.input.slice(_position, state.position))\n }\n\n if (ch !== 0) readLineBreak(state)\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs)\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"')\n }\n }\n\n skipSeparationSpace(state, true, -1)\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3\n skipSeparationSpace(state, true, -1)\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected')\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true)\n skipSeparationSpace(state, true, -1)\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content')\n }\n\n state.documents.push(state.result)\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3\n skipSeparationSpace(state, true, -1)\n }\n return\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected')\n }\n}\n\nfunction loadDocuments (input, options) {\n input = String(input)\n options = options || {}\n\n if (input.length !== 0) {\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n'\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1)\n }\n }\n\n const state = new State(input, options)\n\n const nullpos = input.indexOf('\\0')\n\n if (nullpos !== -1) {\n state.position = nullpos\n throwError(state, 'null byte is not allowed in input')\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0'\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1\n state.position += 1\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state)\n }\n\n return state.documents\n}\n\nfunction loadAll (input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator\n iterator = null\n }\n\n const documents = loadDocuments(input, options)\n\n if (typeof iterator !== 'function') {\n return documents\n }\n\n for (let index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index])\n }\n}\n\nfunction load (input, options) {\n const documents = loadDocuments(input, options)\n\n if (documents.length === 0) {\n return undefined\n } else if (documents.length === 1) {\n return documents[0]\n }\n throw new YAMLException('expected a single document in the stream, but found more')\n}\n\nmodule.exports.loadAll = loadAll\nmodule.exports.load = load\n","'use strict'\n\nconst common = require('./common')\n\n// get snippet for a single line, respecting maxLength\nfunction getLine (buffer, lineStart, lineEnd, position, maxLineLength) {\n let head = ''\n let tail = ''\n const maxHalfLength = Math.floor(maxLineLength / 2) - 1\n\n if (position - lineStart > maxHalfLength) {\n head = ' ... '\n lineStart = position - maxHalfLength + head.length\n }\n\n if (lineEnd - position > maxHalfLength) {\n tail = ' ...'\n lineEnd = position + maxHalfLength - tail.length\n }\n\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n pos: position - lineStart + head.length // relative position\n }\n}\n\nfunction padStart (string, max) {\n return common.repeat(' ', max - string.length) + string\n}\n\nfunction makeSnippet (mark, options) {\n options = Object.create(options || null)\n\n if (!mark.buffer) return null\n\n if (!options.maxLength) options.maxLength = 79\n if (typeof options.indent !== 'number') options.indent = 1\n if (typeof options.linesBefore !== 'number') options.linesBefore = 3\n if (typeof options.linesAfter !== 'number') options.linesAfter = 2\n\n const re = /\\r?\\n|\\r|\\0/g\n const lineStarts = [0]\n const lineEnds = []\n let match\n let foundLineNo = -1\n\n while ((match = re.exec(mark.buffer))) {\n lineEnds.push(match.index)\n lineStarts.push(match.index + match[0].length)\n\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2\n }\n }\n\n if (foundLineNo < 0) foundLineNo = lineStarts.length - 1\n\n let result = ''\n const lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length\n const maxLineLength = options.maxLength - (options.indent + lineNoLength + 3)\n\n for (let i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0) break\n const line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n )\n result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n' + result\n }\n\n const line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength)\n result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n'\n result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n'\n\n for (let i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length) break\n const line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n )\n result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n'\n }\n\n return result.replace(/\\n$/, '')\n}\n\nmodule.exports = makeSnippet\n","'use strict'\n\nconst common = require('./common')\nconst YAMLException = require('./exception')\nconst DEFAULT_SCHEMA = require('./schema/default')\n\nconst _toString = Object.prototype.toString\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nconst CHAR_BOM = 0xFEFF\nconst CHAR_TAB = 0x09 /* Tab */\nconst CHAR_LINE_FEED = 0x0A /* LF */\nconst CHAR_CARRIAGE_RETURN = 0x0D /* CR */\nconst CHAR_SPACE = 0x20 /* Space */\nconst CHAR_EXCLAMATION = 0x21 /* ! */\nconst CHAR_DOUBLE_QUOTE = 0x22 /* \" */\nconst CHAR_SHARP = 0x23 /* # */\nconst CHAR_PERCENT = 0x25 /* % */\nconst CHAR_AMPERSAND = 0x26 /* & */\nconst CHAR_SINGLE_QUOTE = 0x27 /* ' */\nconst CHAR_ASTERISK = 0x2A /* * */\nconst CHAR_COMMA = 0x2C /* , */\nconst CHAR_MINUS = 0x2D /* - */\nconst CHAR_COLON = 0x3A /* : */\nconst CHAR_EQUALS = 0x3D /* = */\nconst CHAR_GREATER_THAN = 0x3E /* > */\nconst CHAR_QUESTION = 0x3F /* ? */\nconst CHAR_COMMERCIAL_AT = 0x40 /* @ */\nconst CHAR_LEFT_SQUARE_BRACKET = 0x5B /* [ */\nconst CHAR_RIGHT_SQUARE_BRACKET = 0x5D /* ] */\nconst CHAR_GRAVE_ACCENT = 0x60 /* ` */\nconst CHAR_LEFT_CURLY_BRACKET = 0x7B /* { */\nconst CHAR_VERTICAL_LINE = 0x7C /* | */\nconst CHAR_RIGHT_CURLY_BRACKET = 0x7D /* } */\n\nconst ESCAPE_SEQUENCES = {}\n\nESCAPE_SEQUENCES[0x00] = '\\\\0'\nESCAPE_SEQUENCES[0x07] = '\\\\a'\nESCAPE_SEQUENCES[0x08] = '\\\\b'\nESCAPE_SEQUENCES[0x09] = '\\\\t'\nESCAPE_SEQUENCES[0x0A] = '\\\\n'\nESCAPE_SEQUENCES[0x0B] = '\\\\v'\nESCAPE_SEQUENCES[0x0C] = '\\\\f'\nESCAPE_SEQUENCES[0x0D] = '\\\\r'\nESCAPE_SEQUENCES[0x1B] = '\\\\e'\nESCAPE_SEQUENCES[0x22] = '\\\\\"'\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\'\nESCAPE_SEQUENCES[0x85] = '\\\\N'\nESCAPE_SEQUENCES[0xA0] = '\\\\_'\nESCAPE_SEQUENCES[0x2028] = '\\\\L'\nESCAPE_SEQUENCES[0x2029] = '\\\\P'\n\nconst DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n]\n\nconst DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/\n\nfunction compileStyleMap (schema, map) {\n if (map === null) return {}\n\n const result = {}\n const keys = Object.keys(map)\n\n for (let index = 0, length = keys.length; index < length; index += 1) {\n let tag = keys[index]\n let style = String(map[tag])\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2)\n }\n const type = schema.compiledTypeMap['fallback'][tag]\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style]\n }\n\n result[tag] = style\n }\n\n return result\n}\n\nfunction encodeHex (character) {\n let handle\n let length\n\n const string = character.toString(16).toUpperCase()\n\n if (character <= 0xFF) {\n handle = 'x'\n length = 2\n } else if (character <= 0xFFFF) {\n handle = 'u'\n length = 4\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U'\n length = 8\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF')\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string\n}\n\nconst QUOTING_TYPE_SINGLE = 1\nconst QUOTING_TYPE_DOUBLE = 2\n\nfunction State (options) {\n this.schema = options['schema'] || DEFAULT_SCHEMA\n this.indent = Math.max(1, (options['indent'] || 2))\n this.noArrayIndent = options['noArrayIndent'] || false\n this.skipInvalid = options['skipInvalid'] || false\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel'])\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null)\n this.sortKeys = options['sortKeys'] || false\n this.lineWidth = options['lineWidth'] || 80\n this.noRefs = options['noRefs'] || false\n this.noCompatMode = options['noCompatMode'] || false\n this.condenseFlow = options['condenseFlow'] || false\n this.quotingType = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE\n this.forceQuotes = options['forceQuotes'] || false\n this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null\n\n this.implicitTypes = this.schema.compiledImplicit\n this.explicitTypes = this.schema.compiledExplicit\n\n this.tag = null\n this.result = ''\n\n this.duplicates = []\n this.usedDuplicates = null\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString (string, spaces) {\n const ind = common.repeat(' ', spaces)\n let position = 0\n let result = ''\n const length = string.length\n\n while (position < length) {\n let line\n const next = string.indexOf('\\n', position)\n if (next === -1) {\n line = string.slice(position)\n position = length\n } else {\n line = string.slice(position, next + 1)\n position = next + 1\n }\n\n if (line.length && line !== '\\n') result += ind\n\n result += line\n }\n\n return result\n}\n\nfunction generateNextLine (state, level) {\n return '\\n' + common.repeat(' ', state.indent * level)\n}\n\nfunction testImplicitResolving (state, str) {\n for (let index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n const type = state.implicitTypes[index]\n\n if (type.resolve(str)) {\n return true\n }\n }\n\n return false\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace (c) {\n return c === CHAR_SPACE || c === CHAR_TAB\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable (c) {\n return (c >= 0x00020 && c <= 0x00007E) ||\n ((c >= 0x000A1 && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) ||\n ((c >= 0x0E000 && c <= 0x00FFFD) && c !== CHAR_BOM) ||\n (c >= 0x10000 && c <= 0x10FFFF)\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace (c) {\n return isPrintable(c) &&\n c !== CHAR_BOM &&\n // - b-char\n c !== CHAR_CARRIAGE_RETURN &&\n c !== CHAR_LINE_FEED\n}\n\n// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out\n// c = flow-in ⇒ ns-plain-safe-in\n// c = block-key ⇒ ns-plain-safe-out\n// c = flow-key ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” )\n// | ( /* An ns-char preceding */ “#” )\n// | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe (c, prev, inblock) {\n const cIsNsCharOrWhitespace = isNsCharOrWhitespace(c)\n const cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c)\n return (\n (\n // ns-plain-safe\n inblock // c = flow-in\n ? cIsNsCharOrWhitespace\n : cIsNsCharOrWhitespace &&\n // - c-flow-indicator\n c !== CHAR_COMMA &&\n c !== CHAR_LEFT_SQUARE_BRACKET &&\n c !== CHAR_RIGHT_SQUARE_BRACKET &&\n c !== CHAR_LEFT_CURLY_BRACKET &&\n c !== CHAR_RIGHT_CURLY_BRACKET\n ) &&\n // ns-plain-char\n c !== CHAR_SHARP && // false on '#'\n !(prev === CHAR_COLON && !cIsNsChar)\n ) || // false on ': '\n (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) || // change to true on '[^ ]#'\n (prev === CHAR_COLON && cIsNsChar) // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst (c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n return isPrintable(c) &&\n c !== CHAR_BOM &&\n !isWhitespace(c) && // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n c !== CHAR_MINUS &&\n c !== CHAR_QUESTION &&\n c !== CHAR_COLON &&\n c !== CHAR_COMMA &&\n c !== CHAR_LEFT_SQUARE_BRACKET &&\n c !== CHAR_RIGHT_SQUARE_BRACKET &&\n c !== CHAR_LEFT_CURLY_BRACKET &&\n c !== CHAR_RIGHT_CURLY_BRACKET &&\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n c !== CHAR_SHARP &&\n c !== CHAR_AMPERSAND &&\n c !== CHAR_ASTERISK &&\n c !== CHAR_EXCLAMATION &&\n c !== CHAR_VERTICAL_LINE &&\n c !== CHAR_EQUALS &&\n c !== CHAR_GREATER_THAN &&\n c !== CHAR_SINGLE_QUOTE &&\n c !== CHAR_DOUBLE_QUOTE &&\n // | “%” | “@” | “`”)\n c !== CHAR_PERCENT &&\n c !== CHAR_COMMERCIAL_AT &&\n c !== CHAR_GRAVE_ACCENT\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast (c) {\n // just not whitespace or colon, it will be checked to be plain character later\n return !isWhitespace(c) && c !== CHAR_COLON\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt (string, pos) {\n const first = string.charCodeAt(pos)\n let second\n\n if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n second = string.charCodeAt(pos + 1)\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n }\n }\n return first\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator (string) {\n const leadingSpaceRe = /^\\n* /\n return leadingSpaceRe.test(string)\n}\n\nconst STYLE_PLAIN = 1\nconst STYLE_SINGLE = 2\nconst STYLE_LITERAL = 3\nconst STYLE_FOLDED = 4\nconst STYLE_DOUBLE = 5\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle (string, singleLineOnly, indentPerLevel, lineWidth,\n testAmbiguousType, quotingType, forceQuotes, inblock) {\n let i\n let char = 0\n let prevChar = null\n let hasLineBreak = false\n let hasFoldableLine = false // only checked if shouldTrackWidth\n const shouldTrackWidth = lineWidth !== -1\n let previousLineBreak = -1 // count the first line correctly\n let plain = isPlainSafeFirst(codePointAt(string, 0)) &&\n isPlainSafeLast(codePointAt(string, string.length - 1))\n\n if (singleLineOnly || forceQuotes) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i)\n if (!isPrintable(char)) {\n return STYLE_DOUBLE\n }\n plain = plain && isPlainSafe(char, prevChar, inblock)\n prevChar = char\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i)\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ')\n previousLineBreak = i\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE\n }\n plain = plain && isPlainSafe(char, prevChar, inblock)\n prevChar = char\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '))\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n if (plain && !forceQuotes && !testAmbiguousType(string)) {\n return STYLE_PLAIN\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n if (!forceQuotes) {\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar (state, string, level, iskey, inblock) {\n state.dump = (function () {\n if (string.length === 0) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\"\n }\n if (!state.noCompatMode) {\n if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\")\n }\n }\n\n const indent = state.indent * Math.max(1, level) // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n const lineWidth = (state.lineWidth === -1)\n ? -1\n : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent)\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n const singleLineOnly = iskey ||\n // No block styles in flow mode.\n (state.flowLevel > -1 && level >= state.flowLevel)\n function testAmbiguity (string) {\n return testImplicitResolving(state, string)\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n case STYLE_PLAIN:\n return string\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\"\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent) +\n dropEndingNewline(indentString(string, indent))\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent) +\n dropEndingNewline(indentString(foldString(string, lineWidth), indent))\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"'\n default:\n throw new YAMLException('impossible error: invalid scalar style')\n }\n }())\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader (string, indentPerLevel) {\n const indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n const clip = string[string.length - 1] === '\\n'\n const keep = clip && (string[string.length - 2] === '\\n' || string === '\\n')\n const chomp = keep ? '+' : (clip ? '' : '-')\n\n return indentIndicator + chomp + '\\n'\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline (string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString (string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n const lineRe = /(\\n+)([^\\n]*)/g\n\n // first line (possibly an empty line)\n let result = (function () {\n let nextLF = string.indexOf('\\n')\n nextLF = nextLF !== -1 ? nextLF : string.length\n lineRe.lastIndex = nextLF\n return foldLine(string.slice(0, nextLF), width)\n }())\n // If we haven't reached the first content line yet, don't add an extra \\n.\n let prevMoreIndented = string[0] === '\\n' || string[0] === ' '\n let moreIndented\n\n // rest of the lines\n let match\n while ((match = lineRe.exec(string))) {\n const prefix = match[1]\n const line = match[2]\n\n moreIndented = (line[0] === ' ')\n result += prefix +\n ((!prevMoreIndented && !moreIndented && line !== '') ? '\\n' : '') +\n foldLine(line, width)\n prevMoreIndented = moreIndented\n }\n\n return result\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine (line, width) {\n if (line === '' || line[0] === ' ') return line\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n const breakRe = / [^ ]/g // note: the match index will always be <= length-2.\n let match\n // start is an inclusive index. end, curr, and next are exclusive.\n let start = 0\n let end\n let curr = 0\n let next = 0\n let result = ''\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next // derive end <= length-2\n result += '\\n' + line.slice(start, end)\n // skip the space that was output as \\n\n start = end + 1 // derive start <= length-1\n }\n curr = next\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n'\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1)\n } else {\n result += line.slice(start)\n }\n\n return result.slice(1) // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString (string) {\n let result = ''\n let char = 0\n\n for (let i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i)\n const escapeSeq = ESCAPE_SEQUENCES[char]\n\n if (!escapeSeq && isPrintable(char)) {\n result += string[i]\n if (char >= 0x10000) result += string[i + 1]\n } else {\n result += escapeSeq || encodeHex(char)\n }\n }\n\n return result\n}\n\nfunction writeFlowSequence (state, level, object) {\n let _result = ''\n const _tag = state.tag\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n let value = object[index]\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value)\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level, value, false, false) ||\n (typeof value === 'undefined' &&\n writeNode(state, level, null, false, false))) {\n if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '')\n _result += state.dump\n }\n }\n\n state.tag = _tag\n state.dump = '[' + _result + ']'\n}\n\nfunction writeBlockSequence (state, level, object, compact) {\n let _result = ''\n const _tag = state.tag\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n let value = object[index]\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value)\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level + 1, value, true, true, false, true) ||\n (typeof value === 'undefined' &&\n writeNode(state, level + 1, null, true, true, false, true))) {\n if (!compact || _result !== '') {\n _result += generateNextLine(state, level)\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-'\n } else {\n _result += '- '\n }\n\n _result += state.dump\n }\n }\n\n state.tag = _tag\n state.dump = _result || '[]' // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping (state, level, object) {\n let _result = ''\n const _tag = state.tag\n const objectKeyList = Object.keys(object)\n\n for (let index = 0, length = objectKeyList.length; index < length; index += 1) {\n let pairBuffer = ''\n if (_result !== '') pairBuffer += ', '\n\n if (state.condenseFlow) pairBuffer += '\"'\n\n const objectKey = objectKeyList[index]\n let objectValue = object[objectKey]\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue)\n }\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? '\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ')\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump\n\n // Both key and value are valid.\n _result += pairBuffer\n }\n\n state.tag = _tag\n state.dump = '{' + _result + '}'\n}\n\nfunction writeBlockMapping (state, level, object, compact) {\n let _result = ''\n const _tag = state.tag\n const objectKeyList = Object.keys(object)\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort()\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys)\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function')\n }\n\n for (let index = 0, length = objectKeyList.length; index < length; index += 1) {\n let pairBuffer = ''\n\n if (!compact || _result !== '') {\n pairBuffer += generateNextLine(state, level)\n }\n\n const objectKey = objectKeyList[index]\n let objectValue = object[objectKey]\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue)\n }\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue // Skip this pair because of invalid key.\n }\n\n const explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024)\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?'\n } else {\n pairBuffer += '? '\n }\n }\n\n pairBuffer += state.dump\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level)\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':'\n } else {\n pairBuffer += ': '\n }\n\n pairBuffer += state.dump\n\n // Both key and value are valid.\n _result += pairBuffer\n }\n\n state.tag = _tag\n state.dump = _result || '{}' // Empty mapping if no valid pairs.\n}\n\nfunction detectType (state, object, explicit) {\n const typeList = explicit ? state.explicitTypes : state.implicitTypes\n\n for (let index = 0, length = typeList.length; index < length; index += 1) {\n const type = typeList[index]\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n if (explicit) {\n if (type.multi && type.representName) {\n state.tag = type.representName(object)\n } else {\n state.tag = type.tag\n }\n } else {\n state.tag = '?'\n }\n\n if (type.represent) {\n const style = state.styleMap[type.tag] || type.defaultStyle\n\n let _result\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style)\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style)\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style')\n }\n\n state.dump = _result\n }\n\n return true\n }\n }\n\n return false\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode (state, level, object, block, compact, iskey, isblockseq) {\n state.tag = null\n state.dump = object\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true)\n }\n\n const type = _toString.call(state.dump)\n const inblock = block\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level)\n }\n\n const objectOrArray = type === '[object Object]' || type === '[object Array]'\n let duplicateIndex\n let duplicate\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object)\n duplicate = duplicateIndex !== -1\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact)\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump\n }\n } else {\n writeFlowMapping(state, level, state.dump)\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n if (state.noArrayIndent && !isblockseq && level > 0) {\n writeBlockSequence(state, level - 1, state.dump, compact)\n } else {\n writeBlockSequence(state, level, state.dump, compact)\n }\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump\n }\n } else {\n writeFlowSequence(state, level, state.dump)\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey, inblock)\n }\n } else if (type === '[object Undefined]') {\n return false\n } else {\n if (state.skipInvalid) return false\n throw new YAMLException('unacceptable kind of an object to dump ' + type)\n }\n\n if (state.tag !== null && state.tag !== '?') {\n // Need to encode all characters except those allowed by the spec:\n //\n // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */\n // [36] ns-hex-digit ::= ns-dec-digit\n // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-”\n // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n //\n // Also need to encode '!' because it has special meaning (end of tag prefix).\n //\n let tagStr = encodeURI(\n state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n ).replace(/!/g, '%21')\n\n if (state.tag[0] === '!') {\n tagStr = '!' + tagStr\n } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n tagStr = '!!' + tagStr.slice(18)\n } else {\n tagStr = '!<' + tagStr + '>'\n }\n\n state.dump = tagStr + ' ' + state.dump\n }\n }\n\n return true\n}\n\nfunction getDuplicateReferences (object, state) {\n const objects = []\n const duplicatesIndexes = []\n\n inspectNode(object, objects, duplicatesIndexes)\n\n const length = duplicatesIndexes.length\n for (let index = 0; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]])\n }\n state.usedDuplicates = new Array(length)\n}\n\nfunction inspectNode (object, objects, duplicatesIndexes) {\n if (object !== null && typeof object === 'object') {\n const index = objects.indexOf(object)\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index)\n }\n } else {\n objects.push(object)\n\n if (Array.isArray(object)) {\n for (let i = 0, length = object.length; i < length; i += 1) {\n inspectNode(object[i], objects, duplicatesIndexes)\n }\n } else {\n const objectKeyList = Object.keys(object)\n\n for (let i = 0, length = objectKeyList.length; i < length; i += 1) {\n inspectNode(object[objectKeyList[i]], objects, duplicatesIndexes)\n }\n }\n }\n }\n}\n\nfunction dump (input, options) {\n options = options || {}\n\n const state = new State(options)\n\n if (!state.noRefs) getDuplicateReferences(input, state)\n\n let value = input\n\n if (state.replacer) {\n value = state.replacer.call({ '': value }, '', value)\n }\n\n if (writeNode(state, 0, value, true, true)) return state.dump + '\\n'\n\n return ''\n}\n\nmodule.exports.dump = dump\n","'use strict'\n\nconst loader = require('./lib/loader')\nconst dumper = require('./lib/dumper')\n\nfunction renamed (from, to) {\n return function () {\n throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n 'Use yaml.' + to + ' instead, which is now safe by default.')\n }\n}\n\nmodule.exports.Type = require('./lib/type')\nmodule.exports.Schema = require('./lib/schema')\nmodule.exports.FAILSAFE_SCHEMA = require('./lib/schema/failsafe')\nmodule.exports.JSON_SCHEMA = require('./lib/schema/json')\nmodule.exports.CORE_SCHEMA = require('./lib/schema/core')\nmodule.exports.DEFAULT_SCHEMA = require('./lib/schema/default')\nmodule.exports.load = loader.load\nmodule.exports.loadAll = loader.loadAll\nmodule.exports.dump = dumper.dump\nmodule.exports.YAMLException = require('./lib/exception')\n\n// Re-export all types in case user wants to create custom schema\nmodule.exports.types = {\n binary: require('./lib/type/binary'),\n float: require('./lib/type/float'),\n map: require('./lib/type/map'),\n null: require('./lib/type/null'),\n pairs: require('./lib/type/pairs'),\n set: require('./lib/type/set'),\n timestamp: require('./lib/type/timestamp'),\n bool: require('./lib/type/bool'),\n int: require('./lib/type/int'),\n merge: require('./lib/type/merge'),\n omap: require('./lib/type/omap'),\n seq: require('./lib/type/seq'),\n str: require('./lib/type/str')\n}\n\n// Removed functions from JS-YAML 3.0.x\nmodule.exports.safeLoad = renamed('safeLoad', 'load')\nmodule.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll')\nmodule.exports.safeDump = renamed('safeDump', 'dump')\n","import yaml from '../index.js'\n\nconst {\n Type,\n Schema,\n FAILSAFE_SCHEMA,\n JSON_SCHEMA,\n CORE_SCHEMA,\n DEFAULT_SCHEMA,\n load,\n loadAll,\n dump,\n YAMLException,\n types,\n safeLoad,\n safeLoadAll,\n safeDump\n} = yaml\n\nexport {\n Type,\n Schema,\n FAILSAFE_SCHEMA,\n JSON_SCHEMA,\n CORE_SCHEMA,\n DEFAULT_SCHEMA,\n load,\n loadAll,\n dump,\n YAMLException,\n types,\n safeLoad,\n safeLoadAll,\n safeDump\n}\n\nexport default yaml\n"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","isNothing","subject","common","isObject","toArray","sequence","Array","isArray","repeat","string","count","result","cycle","isNegativeZero","number","Number","NEGATIVE_INFINITY","extend","target","source","sourceKeys","Object","keys","index","length","key","formatError","exception","compact","where","message","reason","mark","name","line","column","snippet","YAMLException","Error","call","this","captureStackTrace","stack","create","toString","require$$0","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","type","tag","options","map","forEach","indexOf","kind","resolve","construct","data","instanceOf","predicate","represent","representName","defaultStyle","multi","styleAliases","style","alias","String","Type","require$$1","compileList","schema","currentType","newIndex","previousType","previousIndex","Schema","definition","implicit","explicit","push","concat","loadKind","compiledImplicit","compiledExplicit","compiledTypeMap","scalar","mapping","fallback","collectType","arguments","compileMap","str","seq","failsafe","require$$2","require$$3","_null","max","object","canonical","lowercase","uppercase","camelcase","empty","bool","isHexCode","c","isOctCode","isDecCode","parseYamlInteger","value","sign","ch","slice","parseInt","int","hasDigits","isFinite","charCodeAt","binary","obj","octal","decimal","hexadecimal","toUpperCase","YAML_FLOAT_PATTERN","RegExp","YAML_FLOAT_SPECIAL_PATTERN","SCIENTIFIC_WITHOUT_DOT","float","test","parseFloat","toLowerCase","POSITIVE_INFINITY","NaN","isNaN","res","replace","json","require$$4","core","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","timestamp","exec","fraction","delta","match","year","month","day","Date","UTC","hour","minute","second","date","setTime","getTime","toISOString","merge","BASE64_MAP","bitlen","idx","code","charAt","input","bits","tailbits","Uint8Array","tail","_hasOwnProperty","hasOwnProperty","_toString","omap","objectKeys","pair","pairHasKey","pairKey","defineProperty","pairs","set","_default","require$$5","require$$6","makeSnippet","getLine","buffer","lineStart","lineEnd","position","maxLineLength","head","maxHalfLength","Math","floor","pos","padStart","maxLength","indent","linesBefore","linesAfter","re","lineStarts","lineEnds","foundLineNo","lineNoLength","min","i","DEFAULT_SCHEMA","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","_class","isEol","isWhiteSpace","isWsOrEol","isFlowIndicator","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","fromCharCode","setProperty","configurable","enumerable","writable","simpleEscapeCheck","simpleEscapeMap","State","filename","onWarning","legacy","listener","maxDepth","maxTotalMergeKeys","implicitTypes","typeMap","lineIndent","depth","totalMergeKeys","firstTabInLine","documents","anchorMapTransactions","generateError","state","throwError","throwWarning","storeAnchor","transactions","transaction","existed","anchorMap","snapshotState","anchor","restoreState","snapshot","directiveHandlers","YAML","args","version","major","minor","checkLineBreaks","TAG","prefix","handle","tagMap","decodeURIComponent","err","captureSegment","start","end","checkJson","_result","_position","_length","_character","chargeMergeWork","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","valueNode","startLine","startLineStart","startPos","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readBlockSequence","nodeIndent","_tag","_anchor","detected","_line","composeNode","readBlockMapping","flowIndent","allowCompact","_keyLine","_keyLineStart","_keyPos","atExplicitKey","following","readTagProperty","tagHandle","tagName","isVerbatim","isNamed","readAnchorProperty","tryReadBlockMappingFromProperty","propertyStart","fallbackState","beginAnchorTransaction","pop","parent","names","commitAnchorTransaction","entry","rollbackAnchorTransaction","parentIndent","nodeContext","allowToSeek","allowBlockScalars","allowBlockCollections","blockIndent","indentStatus","atNewLine","hasContent","allowBlockStyles","propertyState","_lineStart","_pos","terminator","isPair","isExplicitPair","isMapping","readNext","readFlowCollection","folding","tmp","chomping","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","captureStart","readBlockScalar","captureEnd","readSingleQuotedScalar","hexLength","hexResult","readDoubleQuotedScalar","readAlias","withinFlowCollection","hasPendingContent","_lineIndent","_kind","readPlainScalar","typeIndex","typeQuantity","typeList","readDocument","documentStart","hasDirectives","directiveName","directiveArgs","loadDocuments","nullpos","loader","loadAll","load","CHAR_BOM","ESCAPE_SEQUENCES","DEPRECATED_BOOLEANS_SYNTAX","DEPRECATED_BASE60_SYNTAX","encodeHex","character","noArrayIndent","skipInvalid","flowLevel","styleMap","compileStyleMap","sortKeys","lineWidth","noRefs","noCompatMode","condenseFlow","quotingType","forceQuotes","replacer","explicitTypes","duplicates","usedDuplicates","indentString","spaces","ind","next","generateNextLine","level","isWhitespace","isPrintable","isNsCharOrWhitespace","isPlainSafe","prev","inblock","cIsNsCharOrWhitespace","cIsNsChar","codePointAt","first","needIndentIndicator","chooseScalarStyle","singleLineOnly","indentPerLevel","testAmbiguousType","char","prevChar","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","isPlainSafeLast","writeScalar","iskey","dump","testImplicitResolving","blockHeader","dropEndingNewline","width","moreIndented","lineRe","nextLF","lastIndex","foldLine","prevMoreIndented","foldString","escapeSeq","escapeString","indentIndicator","clip","breakRe","curr","writeBlockSequence","writeNode","detectType","block","isblockseq","duplicateIndex","duplicate","objectOrArray","objectKeyList","sort","pairBuffer","objectKey","objectValue","explicitPair","writeBlockMapping","writeFlowMapping","writeFlowSequence","tagStr","encodeURI","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","dumper","renamed","from","to","jsYaml","FAILSAFE_SCHEMA","JSON_SCHEMA","CORE_SCHEMA","require$$7","require$$8","types","require$$9","require$$10","require$$11","null","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","safeLoad","safeLoadAll","safeDump","yaml"],"mappings":"udAAY,SAAAA,EAAAC,GAAA,OAAAD,EAAA,mBAAAE,QAAA,iBAAAA,OAAAC,SAAA,SAAAF,GAAA,cAAAA,GAAA,SAAAA,GAAA,OAAAA,GAAA,mBAAAC,QAAAD,EAAAG,cAAAF,QAAAD,IAAAC,OAAAG,UAAA,gBAAAJ,CAAA,GAAAA,EAAA,CAEZ,SAASK,EAAWC,GAClB,OAAQ,MAAOA,CACjB,YAwCAC,EAAAF,UAA2BA,EAC3BE,EAAAC,SAvCA,SAAmBF,GACjB,MAA2B,WAAnBP,EAAOO,IAAsC,OAAZA,CAC3C,EAsCAC,EAAAE,QApCA,SAAkBC,GAChB,OAAIC,MAAMC,QAAQF,GAAkBA,EAC3BL,EAAUK,GAAkB,GAE9B,CAACA,EACV,EAgCAH,EAAAM,OAjBA,SAAiBC,EAAQC,GAGvB,IAFA,IAAIC,EAAS,GAEJC,EAAQ,EAAGA,EAAQF,EAAOE,GAAS,EAC1CD,GAAUF,EAGZ,OAAOE,CACT,EAUAT,EAAAW,eARA,SAAyBC,GACvB,OAAmB,IAAXA,GAAkBC,OAAOC,oBAAsB,EAAIF,CAC7D,EAOAZ,EAAAe,OAhCA,SAAiBC,EAAQC,GACvB,GAAIA,EAGF,IAFA,IAAMC,EAAaC,OAAOC,KAAKH,GAEtBI,EAAQ,EAAGC,EAASJ,EAAWI,OAAQD,EAAQC,EAAQD,GAAS,EAAG,CAC1E,IAAME,EAAML,EAAWG,GACvBL,EAAOO,GAAON,EAAOM,EACvB,CAGF,OAAOP,CACT,+BCxBA,SAASQ,EAAaC,EAAWC,GAC/B,IAAIC,EAAQ,GACNC,EAAUH,EAAUI,QAAU,mBAEpC,OAAKJ,EAAUK,MAEXL,EAAUK,KAAKC,OACjBJ,GAAS,OAASF,EAAUK,KAAKC,KAAO,MAG1CJ,GAAS,KAAOF,EAAUK,KAAKE,KAAO,GAAK,KAAOP,EAAUK,KAAKG,OAAS,GAAK,KAE1EP,GAAWD,EAAUK,KAAKI,UAC7BP,GAAS,OAASF,EAAUK,KAAKI,SAG5BN,EAAU,IAAMD,GAZKC,CAa9B,CAEA,SAASO,EAAeN,EAAQC,GAE9BM,MAAMC,KAAKC,MAEXA,KAAKP,KAAO,gBACZO,KAAKT,OAASA,EACdS,KAAKR,KAAOA,EACZQ,KAAKV,QAAUJ,EAAYc,MAAM,GAG7BF,MAAMG,kBAERH,MAAMG,kBAAkBD,KAAMA,KAAK1C,aAGnC0C,KAAKE,OAAS,IAAIJ,OAASI,OAAS,EAExC,YAGAL,EAActC,UAAYsB,OAAOsB,OAAOL,MAAMvC,WAC9CsC,EAActC,UAAUD,YAAcuC,EAEtCA,EAActC,UAAU6C,SAAW,SAAmBhB,GACpD,OAAOY,KAAKP,KAAO,KAAOP,EAAYc,KAAMZ,EAC9C,EAEAD,EAAiBU,iCChDjB,IAAMA,EAAgBQ,IAEhBC,EAA2B,CAC/B,OACA,QACA,UACA,YACA,aACA,YACA,YACA,gBACA,eACA,gBAGIC,EAAkB,CACtB,SACA,WACA,kBA6CFC,EA5BA,SAAeC,EAAKC,GAdpB,IAA8BC,EACtBxC,EAoCN,GAtBAuC,EAAUA,GAAW,CAAA,EAErB7B,OAAOC,KAAK4B,GAASE,QAAQ,SAAUnB,GACrC,IAA+C,IAA3Ca,EAAyBO,QAAQpB,GACnC,MAAM,IAAII,EAAc,mBAAqBJ,EAAO,8BAAgCgB,EAAM,eAE9F,GAGAT,KAAKU,QAAUA,EACfV,KAAKS,IAAMA,EACXT,KAAKc,KAAOJ,EAAc,MAAK,KAC/BV,KAAKe,QAAUL,EAAiB,SAAK,WAAc,OAAO,GAC1DV,KAAKgB,UAAYN,EAAmB,WAAK,SAAUO,GAAQ,OAAOA,GAClEjB,KAAKkB,WAAaR,EAAoB,YAAK,KAC3CV,KAAKmB,UAAYT,EAAmB,WAAK,KACzCV,KAAKoB,UAAYV,EAAmB,WAAK,KACzCV,KAAKqB,cAAgBX,EAAuB,eAAK,KACjDV,KAAKsB,aAAeZ,EAAsB,cAAK,KAC/CV,KAAKuB,MAAQb,EAAe,QAAK,EACjCV,KAAKwB,cAnCuBb,EAmCYD,EAAsB,cAAK,KAlC7DvC,EAAS,CAAA,EAEH,OAARwC,GACF9B,OAAOC,KAAK6B,GAAKC,QAAQ,SAAUa,GACjCd,EAAIc,GAAOb,QAAQ,SAAUc,GAC3BvD,EAAOwD,OAAOD,IAAUD,CAC1B,EACF,GAGKtD,IA0BoC,IAAvCoC,EAAgBM,QAAQb,KAAKc,MAC/B,MAAM,IAAIjB,EAAc,iBAAmBG,KAAKc,KAAO,uBAAyBL,EAAM,eAE1F,iCC7DA,IAAMZ,EAAgBQ,IAChBuB,EAAOC,IAEb,SAASC,EAAaC,EAAQtC,GAC5B,IAAMtB,EAAS,GAgBf,OAdA4D,EAAOtC,GAAMmB,QAAQ,SAAUoB,GAC7B,IAAIC,EAAW9D,EAAOa,OAEtBb,EAAOyC,QAAQ,SAAUsB,EAAcC,GACjCD,EAAazB,MAAQuB,EAAYvB,KACjCyB,EAAapB,OAASkB,EAAYlB,MAClCoB,EAAaX,QAAUS,EAAYT,QACrCU,EAAWE,EAEf,GAEAhE,EAAO8D,GAAYD,CACrB,GAEO7D,CACT,CA8BA,SAASiE,EAAQC,GACf,OAAOrC,KAAKvB,OAAO4D,EACrB,QAEAD,EAAO7E,UAAUkB,OAAS,SAAiB4D,GACzC,IAAIC,EAAW,GACXC,EAAW,GAEf,GAAIF,aAAsBT,EAExBW,EAASC,KAAKH,WACLvE,MAAMC,QAAQsE,GAEvBE,EAAWA,EAASE,OAAOJ,YAClBA,IAAevE,MAAMC,QAAQsE,EAAWC,YAAaxE,MAAMC,QAAQsE,EAAWE,UAKvF,MAAM,IAAI1C,EAAc,oHAHpBwC,EAAWC,WAAUA,EAAWA,EAASG,OAAOJ,EAAWC,WAC3DD,EAAWE,WAAUA,EAAWA,EAASE,OAAOJ,EAAWE,UAIjE,CAEAD,EAAS1B,QAAQ,SAAUJ,GACzB,KAAMA,aAAgBoB,GACpB,MAAM,IAAI/B,EAAc,sFAG1B,GAAIW,EAAKkC,UAA8B,WAAlBlC,EAAKkC,SACxB,MAAM,IAAI7C,EAAc,mHAG1B,GAAIW,EAAKe,MACP,MAAM,IAAI1B,EAAc,qGAE5B,GAEA0C,EAAS3B,QAAQ,SAAUJ,GACzB,KAAMA,aAAgBoB,GACpB,MAAM,IAAI/B,EAAc,qFAE5B,GAEA,IAAM1B,EAASU,OAAOsB,OAAOiC,EAAO7E,WASpC,OAPAY,EAAOmE,UAAYtC,KAAKsC,UAAY,IAAIG,OAAOH,GAC/CnE,EAAOoE,UAAYvC,KAAKuC,UAAY,IAAIE,OAAOF,GAE/CpE,EAAOwE,iBAAmBb,EAAY3D,EAAQ,YAC9CA,EAAOyE,iBAAmBd,EAAY3D,EAAQ,YAC9CA,EAAO0E,gBA9ET,WACE,IAAM1E,EAAS,CACb2E,OAAQ,CAAA,EACRjF,SAAU,CAAA,EACVkF,QAAS,CAAA,EACTC,SAAU,CAAA,EACVzB,MAAO,CACLuB,OAAQ,GACRjF,SAAU,GACVkF,QAAS,GACTC,SAAU,KAGd,SAASC,EAAazC,GAChBA,EAAKe,OACPpD,EAAOoD,MAAMf,EAAKM,MAAM0B,KAAKhC,GAC7BrC,EAAOoD,MAAgB,SAAEiB,KAAKhC,IAE9BrC,EAAOqC,EAAKM,MAAMN,EAAKC,KAAOtC,EAAiB,SAAEqC,EAAKC,KAAOD,CAEjE,CAEA,IAAA,IAASzB,EAAQ,EAAGC,EAASkE,UAAUlE,OAAQD,EAAQC,EAAQD,GAAS,EACtEmE,UAAUnE,GAAO6B,QAAQqC,GAE3B,OAAO9E,CACT,CAoD2BgF,CAAWhF,EAAOwE,iBAAkBxE,EAAOyE,kBAE7DzE,CACT,EAEA4D,EAAiBK,iCC1GjB,IAAMR,EAAOvB,WAEb+C,EAAiB,IAAIxB,EAAK,wBAAyB,CACjDd,KAAM,SACNE,UAAW,SAAUC,GAAQ,OAAgB,OAATA,EAAgBA,EAAO,EAAG,oCCJhE,IAAMW,EAAOvB,WAEbgD,EAAiB,IAAIzB,EAAK,wBAAyB,CACjDd,KAAM,WACNE,UAAW,SAAUC,GAAQ,OAAgB,OAATA,EAAgBA,EAAO,EAAG,oCCJhE,IAAMW,EAAOvB,WAEbM,EAAiB,IAAIiB,EAAK,wBAAyB,CACjDd,KAAM,UACNE,UAAW,SAAUC,GAAQ,OAAgB,OAATA,EAAgBA,EAAO,CAAA,CAAG,oCCDhE,IAAMmB,EAAS/B,WAEfiD,EAAiB,IAAIlB,EAAO,CAC1BG,SAAU,CACRV,IACA0B,KACAC,wCCTJ,IAAM5B,EAAOvB,WAmBboD,EAAiB,IAAI7B,EAAK,yBAA0B,CAClDd,KAAM,SACNC,QAnBF,SAA0BE,GACxB,GAAa,OAATA,EAAe,OAAO,EAE1B,IAAMyC,EAAMzC,EAAKjC,OAEjB,OAAgB,IAAR0E,GAAsB,MAATzC,GACL,IAARyC,IAAuB,SAATzC,GAA4B,SAATA,GAA4B,SAATA,EAC9D,EAaED,UAXF,WACE,OAAO,IACT,EAUEG,UARF,SAAiBwC,GACf,OAAkB,OAAXA,CACT,EAOEvC,UAAW,CACTwC,UAAW,WAAc,MAAO,KAChCC,UAAW,WAAc,MAAO,QAChCC,UAAW,WAAc,MAAO,QAChCC,UAAW,WAAc,MAAO,QAChCC,MAAO,WAAc,MAAO,EAAG,GAEjC1C,aAAc,8CC/BhB,IAAMM,EAAOvB,WAqBb4D,EAAiB,IAAIrC,EAAK,yBAA0B,CAClDd,KAAM,SACNC,QArBF,SAA6BE,GAC3B,GAAa,OAATA,EAAe,OAAO,EAE1B,IAAMyC,EAAMzC,EAAKjC,OAEjB,OAAgB,IAAR0E,IAAuB,SAATzC,GAA4B,SAATA,GAA4B,SAATA,IAC5C,IAARyC,IAAuB,UAATzC,GAA6B,UAATA,GAA6B,UAATA,EAChE,EAeED,UAbF,SAA+BC,GAC7B,MAAgB,SAATA,GACS,SAATA,GACS,SAATA,CACT,EAUEE,UARF,SAAoBwC,GAClB,MAAkD,qBAA3C9E,OAAOtB,UAAU6C,SAASL,KAAK4D,EACxC,EAOEvC,UAAW,CACTyC,UAAW,SAAUF,GAAU,OAAOA,EAAS,OAAS,SACxDG,UAAW,SAAUH,GAAU,OAAOA,EAAS,OAAS,SACxDI,UAAW,SAAUJ,GAAU,OAAOA,EAAS,OAAS,OAAQ,GAElErC,aAAc,8CC/BhB,IAAM5D,EAAS2C,IACTuB,EAAOC,IAEb,SAASqC,EAAWC,GAClB,OAASA,GAAK,IAAiBA,GAAK,IAC3BA,GAAK,IAAiBA,GAAK,IAC3BA,GAAK,IAAiBA,GAAK,GACtC,CAEA,SAASC,EAAWD,GAClB,OAASA,GAAK,IAAiBA,GAAK,EACtC,CAEA,SAASE,EAAWF,GAClB,OAASA,GAAK,IAAiBA,GAAK,EACtC,CA0EA,SAASG,EAAkBrD,GACzB,IAAIsD,EAAQtD,EACRuD,EAAO,EAEPC,EAAKF,EAAM,GAQf,GANW,MAAPE,GAAqB,MAAPA,IACL,MAAPA,IAAYD,GAAO,GAEvBC,GADAF,EAAQA,EAAMG,MAAM,IACT,IAGC,MAAVH,EAAe,OAAO,EAE1B,GAAW,MAAPE,EAAY,CACd,GAAiB,MAAbF,EAAM,GAAY,OAAOC,EAAOG,SAASJ,EAAMG,MAAM,GAAI,GAC7D,GAAiB,MAAbH,EAAM,GAAY,OAAOC,EAAOG,SAASJ,EAAMG,MAAM,GAAI,IAC7D,GAAiB,MAAbH,EAAM,GAAY,OAAOC,EAAOG,SAASJ,EAAMG,MAAM,GAAI,EAC/D,CAEA,OAAOF,EAAOG,SAASJ,EAAO,GAChC,QAWAK,EAAiB,IAAIhD,EAAK,wBAAyB,CACjDd,KAAM,SACNC,QA1GF,SAA6BE,GAC3B,GAAa,OAATA,EAAe,OAAO,EAE1B,IAAMyC,EAAMzC,EAAKjC,OACbD,EAAQ,EACR8F,GAAY,EAEhB,IAAKnB,EAAK,OAAO,EAEjB,IAAIe,EAAKxD,EAAKlC,GAOd,GAJW,MAAP0F,GAAqB,MAAPA,IAChBA,EAAKxD,IAAOlC,IAGH,MAAP0F,EAAY,CAEd,GAAI1F,EAAQ,IAAM2E,EAAK,OAAO,EAK9B,GAAW,OAJXe,EAAKxD,IAAOlC,IAII,CAId,IAFAA,IAEOA,EAAQ2E,EAAK3E,IAAS,CAE3B,GAAW,OADX0F,EAAKxD,EAAKlC,KACe,MAAP0F,EAAY,OAAO,EACrCI,GAAY,CACd,CACA,OAAOA,GAAaC,SAASR,EAAiBrD,GAChD,CAEA,GAAW,MAAPwD,EAAY,CAId,IAFA1F,IAEOA,EAAQ2E,EAAK3E,IAAS,CAC3B,IAAKmF,EAAUjD,EAAK8D,WAAWhG,IAAS,OAAO,EAC/C8F,GAAY,CACd,CACA,OAAOA,GAAaC,SAASR,EAAiBrD,GAChD,CAEA,GAAW,MAAPwD,EAAY,CAId,IAFA1F,IAEOA,EAAQ2E,EAAK3E,IAAS,CAC3B,IAAKqF,EAAUnD,EAAK8D,WAAWhG,IAAS,OAAO,EAC/C8F,GAAY,CACd,CACA,OAAOA,GAAaC,SAASR,EAAiBrD,GAChD,CACF,CAIA,KAAOlC,EAAQ2E,EAAK3E,IAAS,CAC3B,IAAKsF,EAAUpD,EAAK8D,WAAWhG,IAC7B,OAAO,EAET8F,GAAY,CACd,CAEA,QAAKA,GAEEC,SAASR,EAAiBrD,GACnC,EAqCED,UAZF,SAA+BC,GAC7B,OAAOqD,EAAiBrD,EAC1B,EAWEE,UATF,SAAoBwC,GAClB,MAAoD,oBAA5C9E,OAAOtB,UAAU6C,SAASL,KAAK4D,IAC/BA,EAAS,GAAM,IAAMjG,EAAOW,eAAesF,EACrD,EAOEvC,UAAW,CACT4D,OAAQ,SAAUC,GAAO,OAAOA,GAAO,EAAI,KAAOA,EAAI7E,SAAS,GAAK,MAAQ6E,EAAI7E,SAAS,GAAGsE,MAAM,IAClGQ,MAAO,SAAUD,GAAO,OAAOA,GAAO,EAAI,KAAOA,EAAI7E,SAAS,GAAK,MAAQ6E,EAAI7E,SAAS,GAAGsE,MAAM,IACjGS,QAAS,SAAUF,GAAO,OAAOA,EAAI7E,SAAS,KAC9CgF,YAAa,SAAUH,GAAO,OAAOA,GAAO,EAAI,KAAOA,EAAI7E,SAAS,IAAIiF,cAAgB,MAAQJ,EAAI7E,SAAS,IAAIiF,cAAcX,MAAM,EAAG,GAE1IpD,aAAc,UACdE,aAAc,CACZwD,OAAQ,CAAC,EAAG,OACZE,MAAO,CAAC,EAAG,OACXC,QAAS,CAAC,GAAI,OACdC,YAAa,CAAC,GAAI,0CCzItB,IAAM1H,EAAS2C,IACTuB,EAAOC,IAEPyD,EAAqB,IAAIC,OAE7B,oIASIC,EAA6B,IAAID,OACrC,oDAoCF,IAAME,EAAyB,uBAsC/BC,EAAiB,IAAI9D,EAAK,0BAA2B,CACnDd,KAAM,SACNC,QAtEF,SAA2BE,GACzB,OAAa,OAATA,MAECqE,EAAmBK,KAAK1E,OAIzB6D,SAASc,WAAW3E,EAAM,MAIvBuE,EAA2BG,KAAK1E,IACzC,EA2DED,UAzDF,SAA6BC,GAC3B,IAAIsD,EAAQtD,EAAK4E,cACXrB,EAAoB,MAAbD,EAAM,IAAa,EAAK,EAMrC,MAJI,KAAK1D,QAAQ0D,EAAM,KAAO,IAC5BA,EAAQA,EAAMG,MAAM,IAGR,SAAVH,EACe,IAATC,EAAcjG,OAAOuH,kBAAoBvH,OAAOC,kBACrC,SAAV+F,EACFwB,IAEFvB,EAAOoB,WAAWrB,EAAO,GAClC,EA4CEpD,UATF,SAAkBwC,GAChB,MAAmD,oBAA3C9E,OAAOtB,UAAU6C,SAASL,KAAK4D,KAC/BA,EAAS,GAAM,GAAKjG,EAAOW,eAAesF,GACpD,EAOEvC,UAzCF,SAA6BuC,EAAQlC,GACnC,GAAIuE,MAAMrC,GACR,OAAQlC,GACN,IAAK,YAAa,MAAO,OACzB,IAAK,YAAa,MAAO,OACzB,IAAK,YAAa,MAAO,YAE7B,GAAWlD,OAAOuH,oBAAsBnC,EACtC,OAAQlC,GACN,IAAK,YAAa,MAAO,OACzB,IAAK,YAAa,MAAO,OACzB,IAAK,YAAa,MAAO,YAE7B,GAAWlD,OAAOC,oBAAsBmF,EACtC,OAAQlC,GACN,IAAK,YAAa,MAAO,QACzB,IAAK,YAAa,MAAO,QACzB,IAAK,YAAa,MAAO,gBAElB/D,EAAOW,eAAesF,GAC/B,MAAO,OAGT,IAAMsC,EAAMtC,EAAOvD,SAAS,IAK5B,OAAOqF,EAAuBE,KAAKM,GAAOA,EAAIC,QAAQ,IAAK,MAAQD,CACrE,EAaE3E,aAAc,4CCxFhB6E,EAAiB9F,KAAsB5B,OAAO,CAC5C6D,SAAU,CACRT,KACA0B,KACAC,KACA4C,uCCNJC,EAAiBhG,sCCNjB,IAAMuB,EAAOvB,IAEPiG,EAAmB,IAAIf,OAC3B,sDAIIgB,EAAwB,IAAIhB,OAChC,2LAuEFiB,EAAiB,IAAI5E,EAAK,8BAA+B,CACvDd,KAAM,SACNC,QA9DF,SAA+BE,GAC7B,OAAa,OAATA,IACgC,OAAhCqF,EAAiBG,KAAKxF,IACe,OAArCsF,EAAsBE,KAAKxF,GAEjC,EA0DED,UAxDF,SAAiCC,GAC/B,IAAIyF,EAAW,EACXC,EAAQ,KAERC,EAAQN,EAAiBG,KAAKxF,GAGlC,GAFc,OAAV2F,IAAgBA,EAAQL,EAAsBE,KAAKxF,IAEzC,OAAV2F,EAAgB,MAAM,IAAI9G,MAAM,sBAIpC,IAAM+G,GAASD,EAAM,GACfE,GAAUF,EAAM,GAAM,EACtBG,GAAQH,EAAM,GAEpB,IAAKA,EAAM,GACT,OAAO,IAAII,KAAKA,KAAKC,IAAIJ,EAAMC,EAAOC,IAKxC,IAAMG,GAASN,EAAM,GACfO,GAAWP,EAAM,GACjBQ,GAAWR,EAAM,GAEvB,GAAIA,EAAM,GAAI,CAEZ,IADAF,EAAWE,EAAM,GAAGlC,MAAM,EAAG,GACtBgC,EAAS1H,OAAS,GACvB0H,GAAY,IAEdA,GAAYA,CACd,CAIIE,EAAM,KAGRD,EAAmC,KAAjB,IAFDC,EAAM,OACJA,EAAM,KAAO,IAEf,MAAbA,EAAM,QAAqBD,IAGjC,IAAMU,EAAO,IAAIL,KAAKA,KAAKC,IAAIJ,EAAMC,EAAOC,EAAKG,EAAMC,EAAQC,EAAQV,IAIvE,OAFIC,GAAOU,EAAKC,QAAQD,EAAKE,UAAYZ,GAElCU,CACT,EAUEnG,WAAY8F,KACZ5F,UATF,SAAiCuC,GAC/B,OAAOA,EAAO6D,aAChB,oCC7EA,IAAM5F,EAAOvB,WAMboH,EAAiB,IAAI7F,EAAK,0BAA2B,CACnDd,KAAM,SACNC,QANF,SAA2BE,GACzB,MAAgB,OAATA,GAA0B,OAATA,CAC1B,oCCJA,IAAMW,EAAOvB,IAGPqH,EAAa,+EA8GnB1C,EAAiB,IAAIpD,EAAK,2BAA4B,CACpDd,KAAM,SACNC,QA9GF,SAA4BE,GAC1B,GAAa,OAATA,EAAe,OAAO,EAO1B,IALA,IAAI0G,EAAS,EACPjE,EAAMzC,EAAKjC,OACX2B,EAAM+G,EAGHE,EAAM,EAAGA,EAAMlE,EAAKkE,IAAO,CAClC,IAAMC,EAAOlH,EAAIE,QAAQI,EAAK6G,OAAOF,IAGrC,KAAIC,EAAO,IAAX,CAGA,GAAIA,EAAO,EAAG,OAAO,EAErBF,GAAU,CALK,CAMjB,CAGA,OAAQA,EAAS,GAAO,CAC1B,EAyFE3G,UAvFF,SAA8BC,GAS5B,IARA,IAAM8G,EAAQ9G,EAAKiF,QAAQ,WAAY,IACjCxC,EAAMqE,EAAM/I,OACZ2B,EAAM+G,EACRM,EAAO,EACL7J,EAAS,GAINyJ,EAAM,EAAGA,EAAMlE,EAAKkE,IACtBA,EAAM,GAAM,GAAMA,IACrBzJ,EAAOqE,KAAMwF,GAAQ,GAAM,KAC3B7J,EAAOqE,KAAMwF,GAAQ,EAAK,KAC1B7J,EAAOqE,KAAY,IAAPwF,IAGdA,EAAQA,GAAQ,EAAKrH,EAAIE,QAAQkH,EAAMD,OAAOF,IAKhD,IAAMK,EAAYvE,EAAM,EAAK,EAa7B,OAXiB,IAAbuE,GACF9J,EAAOqE,KAAMwF,GAAQ,GAAM,KAC3B7J,EAAOqE,KAAMwF,GAAQ,EAAK,KAC1B7J,EAAOqE,KAAY,IAAPwF,IACU,KAAbC,GACT9J,EAAOqE,KAAMwF,GAAQ,GAAM,KAC3B7J,EAAOqE,KAAMwF,GAAQ,EAAK,MACJ,KAAbC,GACT9J,EAAOqE,KAAMwF,GAAQ,EAAK,KAGrB,IAAIE,WAAW/J,EACxB,EAqDEgD,UARF,SAAmB8D,GACjB,MAA+C,wBAAxCpG,OAAOtB,UAAU6C,SAASL,KAAKkF,EACxC,EAOE7D,UApDF,SAA8BuC,GAQ5B,IAPA,IAAIxF,EAAS,GACT6J,EAAO,EACLtE,EAAMC,EAAO3E,OACb2B,EAAM+G,EAIHE,EAAM,EAAGA,EAAMlE,EAAKkE,IACtBA,EAAM,GAAM,GAAMA,IACrBzJ,GAAUwC,EAAKqH,GAAQ,GAAM,IAC7B7J,GAAUwC,EAAKqH,GAAQ,GAAM,IAC7B7J,GAAUwC,EAAKqH,GAAQ,EAAK,IAC5B7J,GAAUwC,EAAW,GAAPqH,IAGhBA,GAAQA,GAAQ,GAAKrE,EAAOiE,GAK9B,IAAMO,EAAOzE,EAAM,EAmBnB,OAjBa,IAATyE,GACFhK,GAAUwC,EAAKqH,GAAQ,GAAM,IAC7B7J,GAAUwC,EAAKqH,GAAQ,GAAM,IAC7B7J,GAAUwC,EAAKqH,GAAQ,EAAK,IAC5B7J,GAAUwC,EAAW,GAAPqH,IACI,IAATG,GACThK,GAAUwC,EAAKqH,GAAQ,GAAM,IAC7B7J,GAAUwC,EAAKqH,GAAQ,EAAK,IAC5B7J,GAAUwC,EAAKqH,GAAQ,EAAK,IAC5B7J,GAAUwC,EAAI,KACI,IAATwH,IACThK,GAAUwC,EAAKqH,GAAQ,EAAK,IAC5B7J,GAAUwC,EAAKqH,GAAQ,EAAK,IAC5B7J,GAAUwC,EAAI,IACdxC,GAAUwC,EAAI,KAGTxC,CACT,oCC3GA,IAAMyD,EAAOvB,IAEP+H,EAAkBvJ,OAAOtB,UAAU8K,eACnCC,EAAYzJ,OAAOtB,UAAU6C,gBAmCnCmI,EAAiB,IAAI3G,EAAK,yBAA0B,CAClDd,KAAM,WACNC,QAnCF,SAA0BE,GACxB,GAAa,OAATA,EAAe,OAAO,EAK1B,IAHA,IAAMuH,EAAa,CAAA,EACb7E,EAAS1C,EAENlC,EAAQ,EAAGC,EAAS2E,EAAO3E,OAAQD,EAAQC,EAAQD,GAAS,EAAG,CACtE,IAAM0J,EAAO9E,EAAO5E,GAChB2J,GAAa,EAEjB,GAA6B,oBAAzBJ,EAAUvI,KAAK0I,GAA6B,OAAO,EAEvD,IAAIE,OAAO,EACX,IAAKA,KAAWF,EACd,GAAIL,EAAgBrI,KAAK0I,EAAME,GAAU,CACvC,GAAKD,EACA,OAAO,EADKA,GAAa,CAEhC,CAGF,IAAKA,EAAY,OAAO,EAExB,GAAIN,EAAgBrI,KAAKyI,EAAYG,GAAU,OAAO,EACtD9J,OAAO+J,eAAeJ,EAAYG,EAAS,CAAEpE,OAAO,GACtD,CAEA,OAAO,CACT,EASEvD,UAPF,SAA4BC,GAC1B,OAAgB,OAATA,EAAgBA,EAAO,EAChC,oCCpCA,IAAMW,EAAOvB,IAEPiI,EAAYzJ,OAAOtB,UAAU6C,gBAyCnCyI,EAAiB,IAAIjH,EAAK,0BAA2B,CACnDd,KAAM,WACNC,QAzCF,SAA2BE,GACzB,GAAa,OAATA,EAAe,OAAO,EAM1B,IAJA,IAAM0C,EAAS1C,EAET9C,EAAS,IAAIL,MAAM6F,EAAO3E,QAEvBD,EAAQ,EAAGC,EAAS2E,EAAO3E,OAAQD,EAAQC,EAAQD,GAAS,EAAG,CACtE,IAAM0J,EAAO9E,EAAO5E,GAEpB,GAA6B,oBAAzBuJ,EAAUvI,KAAK0I,GAA6B,OAAO,EAEvD,IAAM3J,EAAOD,OAAOC,KAAK2J,GAEzB,GAAoB,IAAhB3J,EAAKE,OAAc,OAAO,EAE9Bb,EAAOY,GAAS,CAACD,EAAK,GAAI2J,EAAK3J,EAAK,IACtC,CAEA,OAAO,CACT,EAsBEkC,UApBF,SAA6BC,GAC3B,GAAa,OAATA,EAAe,MAAO,GAK1B,IAHA,IAAM0C,EAAS1C,EACT9C,EAAS,IAAIL,MAAM6F,EAAO3E,QAEvBD,EAAQ,EAAGC,EAAS2E,EAAO3E,OAAQD,EAAQC,EAAQD,GAAS,EAAG,CACtE,IAAM0J,EAAO9E,EAAO5E,GAEdD,EAAOD,OAAOC,KAAK2J,GAEzBtK,EAAOY,GAAS,CAACD,EAAK,GAAI2J,EAAK3J,EAAK,IACtC,CAEA,OAAOX,CACT,oCCzCA,IAAMyD,EAAOvB,IAEP+H,EAAkBvJ,OAAOtB,UAAU8K,sBAoBzCS,EAAiB,IAAIlH,EAAK,wBAAyB,CACjDd,KAAM,UACNC,QApBF,SAAyBE,GACvB,GAAa,OAATA,EAAe,OAAO,EAE1B,IAAM0C,EAAS1C,EAEf,IAAA,IAAWhC,KAAO0E,EAChB,GAAIyE,EAAgBrI,KAAK4D,EAAQ1E,IACX,OAAhB0E,EAAO1E,GAAe,OAAO,EAIrC,OAAO,CACT,EASE+B,UAPF,SAA2BC,GACzB,OAAgB,OAATA,EAAgBA,EAAO,CAAA,CAChC,kCCdA8H,EAAiB1I,KAAkB5B,OAAO,CACxC6D,SAAU,CACRT,KACA0B,MAEFhB,SAAU,CACRiB,KACA4C,KACA4C,KACAC,qCCjBQ,SAAA/L,EAAAC,GAAA,OAAAD,EAAA,mBAAAE,QAAA,iBAAAA,OAAAC,SAAA,SAAAF,GAAA,cAAAA,GAAA,SAAAA,GAAA,OAAAA,GAAA,mBAAAC,QAAAD,EAAAG,cAAAF,QAAAD,IAAAC,OAAAG,UAAA,gBAAAJ,CAAA,GAAAA,EAAA,KAEZ,IAAMO,EAAS2C,IACTR,EAAgBgC,IAChBqH,+BCFN,IAAMxL,EAAS2C,IAGf,SAAS8I,EAASC,EAAQC,EAAWC,EAASC,EAAUC,GACtD,IAAIC,EAAO,GACPtB,EAAO,GACLuB,EAAgBC,KAAKC,MAAMJ,EAAgB,GAAK,EAYtD,OAVID,EAAWF,EAAYK,IAEzBL,EAAYE,EAAWG,GADvBD,EAAO,SACqCzK,QAG1CsK,EAAUC,EAAWG,IAEvBJ,EAAUC,EAAWG,GADrBvB,EAAO,QACmCnJ,QAGrC,CACLoE,IAAKqG,EAAOL,EAAO1E,MAAM2E,EAAWC,GAASpD,QAAQ,MAAO,KAAOiC,EACnE0B,IAAKN,EAAWF,EAAYI,EAAKzK,OAErC,CAEA,SAAS8K,EAAU7L,EAAQyF,GACzB,OAAOhG,EAAOM,OAAO,IAAK0F,EAAMzF,EAAOe,QAAUf,CACnD,QAmEA2B,EAjEA,SAAsBJ,EAAMkB,GAG1B,GAFAA,EAAU7B,OAAOsB,OAAOO,GAAW,OAE9BlB,EAAK4J,OAAQ,OAAO,KAEpB1I,EAAQqJ,YAAWrJ,EAAQqJ,UAAY,IACd,iBAAnBrJ,EAAQsJ,WAA6BA,OAAS,GACtB,iBAAxBtJ,EAAQuJ,gBAAkCA,YAAc,GACjC,iBAAvBvJ,EAAQwJ,eAAiCA,WAAa,GAQjE,IANA,IAGItD,EAHEuD,EAAK,eACLC,EAAa,CAAC,GACdC,EAAW,GAEbC,GAAc,EAEV1D,EAAQuD,EAAG1D,KAAKjH,EAAK4J,SAC3BiB,EAAS7H,KAAKoE,EAAM7H,OACpBqL,EAAW5H,KAAKoE,EAAM7H,MAAQ6H,EAAM,GAAG5H,QAEnCQ,EAAK+J,UAAY3C,EAAM7H,OAASuL,EAAc,IAChDA,EAAcF,EAAWpL,OAAS,GAIlCsL,EAAc,IAAGA,EAAcF,EAAWpL,OAAS,GAMvD,IAJA,IAAIb,EAAS,GACPoM,EAAeZ,KAAKa,IAAIhL,EAAKE,KAAOgB,EAAQwJ,WAAYG,EAASrL,QAAQoB,WAAWpB,OACpFwK,EAAgB9I,EAAQqJ,WAAarJ,EAAQsJ,OAASO,EAAe,GAElEE,EAAI,EAAGA,GAAK/J,EAAQuJ,eACvBK,EAAcG,EAAI,GADkBA,IAAK,CAE7C,IAAM/K,EAAOyJ,EACX3J,EAAK4J,OACLgB,EAAWE,EAAcG,GACzBJ,EAASC,EAAcG,GACvBjL,EAAK+J,UAAYa,EAAWE,GAAeF,EAAWE,EAAcG,IACpEjB,GAEFrL,EAAST,EAAOM,OAAO,IAAK0C,EAAQsJ,QAAUF,GAAUtK,EAAKE,KAAO+K,EAAI,GAAGrK,WAAYmK,GACrF,MAAQ7K,EAAK0D,IAAM,KAAOjF,CAC9B,CAEA,IAAMuB,EAAOyJ,EAAQ3J,EAAK4J,OAAQgB,EAAWE,GAAcD,EAASC,GAAc9K,EAAK+J,SAAUC,GACjGrL,GAAUT,EAAOM,OAAO,IAAK0C,EAAQsJ,QAAUF,GAAUtK,EAAKE,KAAO,GAAGU,WAAYmK,GAClF,MAAQ7K,EAAK0D,IAAM,KACrBjF,GAAUT,EAAOM,OAAO,IAAK0C,EAAQsJ,OAASO,EAAe,EAAI7K,EAAKmK,KAAO,MAE7E,IAAA,IAASY,EAAI,EAAGA,GAAK/J,EAAQwJ,cACvBI,EAAcG,GAAKJ,EAASrL,QADOyL,IAAK,CAE5C,IAAM/K,EAAOyJ,EACX3J,EAAK4J,OACLgB,EAAWE,EAAcG,GACzBJ,EAASC,EAAcG,GACvBjL,EAAK+J,UAAYa,EAAWE,GAAeF,EAAWE,EAAcG,IACpEjB,GAEFrL,GAAUT,EAAOM,OAAO,IAAK0C,EAAQsJ,QAAUF,GAAUtK,EAAKE,KAAO+K,EAAI,GAAGrK,WAAYmK,GACtF,MAAQ7K,EAAK0D,IAAM,IACvB,CAEA,OAAOjF,EAAO+H,QAAQ,MAAO,GAC/B,EDzFoB3C,GACdmH,EAAiBlH,KAEjB4E,EAAkBvJ,OAAOtB,UAAU8K,eAYnCsC,EAAwB,sIACxBC,EAAgC,qBAEhCC,EAA0B,YAE1BC,EAAqB,6BAErBC,EAAkB,yEAExB,SAASC,EAAQ/F,GAAO,OAAOpG,OAAOtB,UAAU6C,SAASL,KAAKkF,EAAK,CAEnE,SAASgG,EAAO9G,GACd,OAAc,KAANA,GAA8B,KAANA,CAClC,CAEA,SAAS+G,EAAc/G,GACrB,OAAc,IAANA,GAA+B,KAANA,CACnC,CAEA,SAASgH,EAAWhH,GAClB,OAAc,IAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,CACV,CAEA,SAASiH,EAAiBjH,GACxB,OAAa,KAANA,GACM,KAANA,GACM,KAANA,GACM,MAANA,GACM,MAANA,CACT,CAEA,SAASkH,EAAalH,GACpB,GAAKA,GAAK,IAAiBA,GAAK,GAC9B,OAAOA,EAAI,GAGb,IAAMmH,EAAS,GAAJnH,EAEX,OAAKmH,GAAM,IAAiBA,GAAM,IACzBA,EAAK,GAAO,IAGd,CACT,CAEA,SAASC,EAAepH,GACtB,OAAU,MAANA,EAA4B,EACtB,MAANA,EAA4B,EACtB,KAANA,EAA4B,EACzB,CACT,CAEA,SAASqH,EAAiBrH,GACxB,OAAKA,GAAK,IAAiBA,GAAK,GACvBA,EAAI,IAGN,CACT,CAEA,SAASsH,EAAsBtH,GAC7B,OAAQA,GACN,KAAK,GAAa,MAAO,KACzB,KAAK,GAAa,MAAO,IACzB,KAAK,GAAa,MAAO,KACzB,KAAK,IACL,KAAK,EAAe,MAAO,KAC3B,KAAK,IAAa,MAAO,KACzB,KAAK,IAAa,MAAO,KACzB,KAAK,IAAa,MAAO,KACzB,KAAK,IAAa,MAAO,KACzB,KAAK,IAAa,MAAO,IACzB,KAAK,GAAiB,MAAO,IAC7B,KAAK,GAAa,MAAO,IACzB,KAAK,GAAa,MAAO,IACzB,KAAK,GAAa,MAAO,KACzB,KAAK,GAAa,MAAO,IACzB,KAAK,GAAa,MAAO,IACzB,KAAK,GAAa,MAAO,SACzB,KAAK,GAAa,MAAO,SACzB,QAAS,MAAO,GAEpB,CAEA,SAASuH,EAAmBvH,GAC1B,OAAIA,GAAK,MACAxC,OAAOgK,aAAaxH,GAItBxC,OAAOgK,aACa,OAAvBxH,EAAI,OAAa,IACS,OAA1BA,EAAI,MAAY,MAEtB,CAIA,SAASyH,EAAajI,EAAQ1E,EAAKsF,GAErB,cAARtF,EACFJ,OAAO+J,eAAejF,EAAQ1E,EAAK,CACjC4M,cAAc,EACdC,YAAY,EACZC,UAAU,EACVxH,UAGFZ,EAAO1E,GAAOsF,CAElB,CAIA,IAFA,IAAMyH,EAAoB,IAAIlO,MAAM,KAC9BmO,EAAkB,IAAInO,MAAM,KACzB2M,EAAI,EAAGA,EAAI,IAAKA,IACvBuB,EAAkBvB,GAAKgB,EAAqBhB,GAAK,EAAI,EACrDwB,EAAgBxB,GAAKgB,EAAqBhB,GAG5C,SAASyB,EAAOnE,EAAOrH,GACrBV,KAAK+H,MAAQA,EAEb/H,KAAKmM,SAAWzL,EAAkB,UAAK,KACvCV,KAAK+B,OAASrB,EAAgB,QAAKgK,EACnC1K,KAAKoM,UAAY1L,EAAmB,WAAK,KAGzCV,KAAKqM,OAAS3L,EAAgB,SAAK,EAEnCV,KAAKmG,KAAOzF,EAAc,OAAK,EAC/BV,KAAKsM,SAAW5L,EAAkB,UAAK,KACvCV,KAAKuM,SAA0C,iBAAxB7L,EAAkB,SAAiBA,EAAkB,SAAI,IAChFV,KAAKwM,kBAA4D,iBAAjC9L,EAA2B,kBAAiBA,EAA2B,kBAAI,IAE3GV,KAAKyM,cAAgBzM,KAAK+B,OAAOY,iBACjC3C,KAAK0M,QAAU1M,KAAK+B,OAAOc,gBAE3B7C,KAAKhB,OAAS+I,EAAM/I,OACpBgB,KAAKuJ,SAAW,EAChBvJ,KAAKN,KAAO,EACZM,KAAKqJ,UAAY,EACjBrJ,KAAK2M,WAAa,EAClB3M,KAAK4M,MAAQ,EACb5M,KAAK6M,eAAiB,EAItB7M,KAAK8M,gBAAiB,EAEtB9M,KAAK+M,UAAY,GACjB/M,KAAKgN,sBAAwB,EAW/B,CAEA,SAASC,EAAeC,EAAO5N,GAC7B,IAAME,EAAO,CACXC,KAAMyN,EAAMf,SACZ/C,OAAQ8D,EAAMnF,MAAMrD,MAAM,GAAG,GAC7B6E,SAAU2D,EAAM3D,SAChB7J,KAAMwN,EAAMxN,KACZC,OAAQuN,EAAM3D,SAAW2D,EAAM7D,WAKjC,OAFA7J,EAAKI,QAAUsJ,EAAY1J,GAEpB,IAAIK,EAAcP,EAASE,EACpC,CAEA,SAAS2N,EAAYD,EAAO5N,GAC1B,MAAM2N,EAAcC,EAAO5N,EAC7B,CAEA,SAAS8N,EAAcF,EAAO5N,GACxB4N,EAAMd,WACRc,EAAMd,UAAUrM,KAAK,KAAMkN,EAAcC,EAAO5N,GAEpD,CAEA,SAAS+N,EAAaH,EAAOzN,EAAM8E,GACjC,IAAM+I,EAAeJ,EAAMF,sBAE3B,GAA4B,IAAxBM,EAAatO,OAAc,CAC7B,IAAMuO,EAAcD,EAAaA,EAAatO,OAAS,GAElDoJ,EAAgBrI,KAAKwN,EAAa9N,KACrC8N,EAAY9N,GAAQ,CAClB+N,QAASpF,EAAgBrI,KAAKmN,EAAMO,UAAWhO,GAC/C8E,MAAO2I,EAAMO,UAAUhO,IAG7B,CAEAyN,EAAMO,UAAUhO,GAAQ8E,CAC1B,CAuCA,SAASmJ,EAAeR,GACtB,MAAO,CACL3D,SAAU2D,EAAM3D,SAChB7J,KAAMwN,EAAMxN,KACZ2J,UAAW6D,EAAM7D,UACjBsD,WAAYO,EAAMP,WAClBG,eAAgBI,EAAMJ,eACtBrM,IAAKyM,EAAMzM,IACXkN,OAAQT,EAAMS,OACd7M,KAAMoM,EAAMpM,KACZ3C,OAAQ+O,EAAM/O,OAElB,CAEA,SAASyP,EAAcV,EAAOW,GAC5BX,EAAM3D,SAAWsE,EAAStE,SAC1B2D,EAAMxN,KAAOmO,EAASnO,KACtBwN,EAAM7D,UAAYwE,EAASxE,UAC3B6D,EAAMP,WAAakB,EAASlB,WAC5BO,EAAMJ,eAAiBe,EAASf,eAChCI,EAAMzM,IAAMoN,EAASpN,IACrByM,EAAMS,OAASE,EAASF,OACxBT,EAAMpM,KAAO+M,EAAS/M,KACtBoM,EAAM/O,OAAS0P,EAAS1P,MAC1B,CAEA,IAAM2P,EAAoB,CAExBC,KAAM,SAA8Bb,EAAOzN,EAAMuO,GACzB,OAAlBd,EAAMe,SACRd,EAAWD,EAAO,kCAGA,IAAhBc,EAAKhP,QACPmO,EAAWD,EAAO,+CAGpB,IAAMtG,EAAQ,uBAAuBH,KAAKuH,EAAK,IAEjC,OAAVpH,GACFuG,EAAWD,EAAO,6CAGpB,IAAMgB,EAAQvJ,SAASiC,EAAM,GAAI,IAC3BuH,EAAQxJ,SAASiC,EAAM,GAAI,IAEnB,IAAVsH,GACFf,EAAWD,EAAO,6CAGpBA,EAAMe,QAAUD,EAAK,GACrBd,EAAMkB,gBAAmBD,EAAQ,EAEnB,IAAVA,GAAyB,IAAVA,GACjBf,EAAaF,EAAO,6CAIxBmB,IAAK,SAA6BnB,EAAOzN,EAAMuO,GAC7C,IAAIM,EAEgB,IAAhBN,EAAKhP,QACPmO,EAAWD,EAAO,+CAGpB,IAAMqB,EAASP,EAAK,GACpBM,EAASN,EAAK,GAETlD,EAAmBnF,KAAK4I,IAC3BpB,EAAWD,EAAO,+DAGhB9E,EAAgBrI,KAAKmN,EAAMsB,OAAQD,IACrCpB,EAAWD,EAAO,8CAAgDqB,EAAS,gBAGxExD,EAAgBpF,KAAK2I,IACxBnB,EAAWD,EAAO,gEAGpB,IACEoB,EAASG,mBAAmBH,SACrBI,GACPvB,EAAWD,EAAO,4BAA8BoB,EAClD,CAEApB,EAAMsB,OAAOD,GAAUD,CACzB,GAGF,SAASK,EAAgBzB,EAAO0B,EAAOC,EAAKC,GAC1C,GAAIF,EAAQC,EAAK,CACf,IAAME,EAAU7B,EAAMnF,MAAMrD,MAAMkK,EAAOC,GAEzC,GAAIC,EACF,IAAA,IAASE,EAAY,EAAGC,EAAUF,EAAQ/P,OAAQgQ,EAAYC,EAASD,GAAa,EAAG,CACrF,IAAME,EAAaH,EAAQhK,WAAWiK,GACjB,IAAfE,GACCA,GAAc,IAAQA,GAAc,SACzC/B,EAAWD,EAAO,gCAEtB,MACSvC,EAAsBhF,KAAKoJ,IACpC5B,EAAWD,EAAO,gDAGpBA,EAAM/O,QAAU4Q,CAClB,CACF,CAEA,SAASI,EAAiBjC,GACxBA,EAAML,kBAE0B,IAA5BK,EAAMV,mBAA4BU,EAAML,eAAiBK,EAAMV,mBACjEW,EAAWD,EAAO,0CAA4CA,EAAMV,kBAAoB,IAE5F,CAEA,SAAS4C,EAAelC,EAAOmC,EAAa1Q,EAAQ2Q,GAC7C5R,EAAOC,SAASgB,IACnBwO,EAAWD,EAAO,qEAIpBiC,EAAgBjC,GAIhB,IAFA,IAAMtO,EAAaC,OAAOC,KAAKH,GAEtBI,EAAQ,EAAGwQ,EAAW3Q,EAAWI,OAAQD,EAAQwQ,EAAUxQ,GAAS,EAAG,CAC9E,IAAME,EAAML,EAAWG,GAEvBoQ,EAAgBjC,GAEX9E,EAAgBrI,KAAKsP,EAAapQ,KACrC2M,EAAYyD,EAAapQ,EAAKN,EAAOM,IACrCqQ,EAAgBrQ,IAAO,EAE3B,CACF,CAEA,SAASuQ,EAAkBtC,EAAO6B,EAASO,EAAiBG,EAAQC,EAASC,EAC3EC,EAAWC,EAAgBC,GAI3B,GAAIhS,MAAMC,QAAQ2R,GAGhB,IAAA,IAAS3Q,EAAQ,EAAGwQ,GAFpBG,EAAU5R,MAAMP,UAAUmH,MAAM3E,KAAK2P,IAEE1Q,OAAQD,EAAQwQ,EAAUxQ,GAAS,EACpEjB,MAAMC,QAAQ2R,EAAQ3Q,KACxBoO,EAAWD,EAAO,+CAGG,WAAnBhQ,EAAOwS,IAAmD,oBAA3B1E,EAAO0E,EAAQ3Q,MAChD2Q,EAAQ3Q,GAAS,mBAkBvB,GAVuB,WAAnB7B,EAAOwS,IAA4C,oBAApB1E,EAAO0E,KACxCA,EAAU,mBAGZA,EAAU/N,OAAO+N,GAED,OAAZX,IACFA,EAAU,CAAA,GAGG,4BAAXU,EACF,GAAI3R,MAAMC,QAAQ4R,GAAY,CACxBA,EAAU3Q,OAAS,KACrBmO,EAAWD,EAAO,gCAGpB,IAAA,IAASnO,EAAQ,EAAGwQ,EAAWI,EAAU3Q,OAAQD,EAAQwQ,EAAUxQ,GAAS,EAC1EqQ,EAAclC,EAAO6B,EAASY,EAAU5Q,GAAQuQ,EAEpD,MACEF,EAAclC,EAAO6B,EAASY,EAAWL,QAGtCpC,EAAM/G,MACNiC,EAAgBrI,KAAKuP,EAAiBI,KACvCtH,EAAgBrI,KAAKgP,EAASW,KAChCxC,EAAMxN,KAAOkQ,GAAa1C,EAAMxN,KAChCwN,EAAM7D,UAAYwG,GAAkB3C,EAAM7D,UAC1C6D,EAAM3D,SAAWuG,GAAY5C,EAAM3D,SACnC4D,EAAWD,EAAO,2BAGpBtB,EAAYmD,EAASW,EAASC,UACvBL,EAAgBI,GAGzB,OAAOX,CACT,CAEA,SAASgB,EAAe7C,GACtB,IAAMzI,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAE7B,KAAP9E,EACFyI,EAAM3D,WACU,KAAP9E,GACTyI,EAAM3D,WACyC,KAA3C2D,EAAMnF,MAAMhD,WAAWmI,EAAM3D,WAC/B2D,EAAM3D,YAGR4D,EAAWD,EAAO,4BAGpBA,EAAMxN,MAAQ,EACdwN,EAAM7D,UAAY6D,EAAM3D,SACxB2D,EAAMJ,gBAAiB,CACzB,CAEA,SAASkD,EAAqB9C,EAAO+C,EAAeC,GAIlD,IAHA,IAAIC,EAAa,EACb1L,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAExB,IAAP9E,GAAU,CACf,KAAOyG,EAAazG,IACP,IAAPA,IAAiD,IAAzByI,EAAMJ,iBAChCI,EAAMJ,eAAiBI,EAAM3D,UAE/B9E,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAGtC,GAAI0G,GAAwB,KAAPxL,EACnB,GACEA,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,gBACtB,KAAP9E,GAA8B,KAAPA,GAA8B,IAAPA,GAGzD,IAAIwG,EAAMxG,GAYR,MALA,IANAsL,EAAc7C,GAEdzI,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAClC4G,IACAjD,EAAMP,WAAa,EAEL,KAAPlI,GACLyI,EAAMP,aACNlI,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,SAK1C,CAMA,OAJoB,IAAhB2G,GAAqC,IAAfC,GAAoBjD,EAAMP,WAAauD,GAC/D9C,EAAaF,EAAO,yBAGfiD,CACT,CAEA,SAASC,EAAuBlD,GAC9B,IAAI8B,EAAY9B,EAAM3D,SAClB9E,EAAKyI,EAAMnF,MAAMhD,WAAWiK,GAIhC,QAAY,KAAPvK,GAA6B,KAAPA,GACvBA,IAAOyI,EAAMnF,MAAMhD,WAAWiK,EAAY,IAC1CvK,IAAOyI,EAAMnF,MAAMhD,WAAWiK,EAAY,KAC5CA,GAAa,EAIF,KAFXvK,EAAKyI,EAAMnF,MAAMhD,WAAWiK,MAEZ7D,EAAU1G,IAM9B,CAEA,SAAS4L,EAAkBnD,EAAOhP,GAClB,IAAVA,EACFgP,EAAM/O,QAAU,IACPD,EAAQ,IACjBgP,EAAM/O,QAAUT,EAAOM,OAAO,KAAME,EAAQ,GAEhD,CAwdA,SAASoS,EAAmBpD,EAAOqD,GACjC,IAAMC,EAAOtD,EAAMzM,IACbgQ,EAAUvD,EAAMS,OAChBoB,EAAU,GACZ2B,GAAW,EAIf,IAA6B,IAAzBxD,EAAMJ,eAAuB,OAAO,EAEnB,OAAjBI,EAAMS,QACRN,EAAYH,EAAOA,EAAMS,OAAQoB,GAKnC,IAFA,IAAItK,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAExB,IAAP9E,KACwB,IAAzByI,EAAMJ,iBACRI,EAAM3D,SAAW2D,EAAMJ,eACvBK,EAAWD,EAAO,mDAGT,KAAPzI,IANW,CAYf,IAAK0G,EAFa+B,EAAMnF,MAAMhD,WAAWmI,EAAM3D,SAAW,IAGxD,MAMF,GAHAmH,GAAW,EACXxD,EAAM3D,WAEFyG,EAAoB9C,GAAO,GAAM,IAC/BA,EAAMP,YAAc4D,EACtBxB,EAAQvM,KAAK,MACbiC,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,cAHtC,CAQA,IAAMoH,EAAQzD,EAAMxN,KAOpB,GANAkR,EAAY1D,EAAOqD,EAhiCE,GAgiC4B,GAAO,GACxDxB,EAAQvM,KAAK0K,EAAM/O,QACnB6R,EAAoB9C,GAAO,GAAM,GAEjCzI,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,WAE7B2D,EAAMxN,OAASiR,GAASzD,EAAMP,WAAa4D,IAAuB,IAAP9L,EAC9D0I,EAAWD,EAAO,4CACpB,GAAWA,EAAMP,WAAa4D,EAC5B,KAZF,CAcF,CAEA,QAAIG,IACFxD,EAAMzM,IAAM+P,EACZtD,EAAMS,OAAS8C,EACfvD,EAAMpM,KAAO,WACboM,EAAM/O,OAAS4Q,GACR,EAGX,CAEA,SAAS8B,EAAkB3D,EAAOqD,EAAYO,GAC5C,IAAIC,EACAC,EACAC,EACAC,EACEV,EAAOtD,EAAMzM,IACbgQ,EAAUvD,EAAMS,OAChBoB,EAAU,CAAA,EACVO,EAAkBzQ,OAAOsB,OAAO,MAClCsP,EAAS,KACTC,EAAU,KACVC,EAAY,KACZwB,GAAgB,EAChBT,GAAW,EAIf,IAA6B,IAAzBxD,EAAMJ,eAAuB,OAAO,EAEnB,OAAjBI,EAAMS,QACRN,EAAYH,EAAOA,EAAMS,OAAQoB,GAKnC,IAFA,IAAItK,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAExB,IAAP9E,GAAU,CACV0M,IAA0C,IAAzBjE,EAAMJ,iBAC1BI,EAAM3D,SAAW2D,EAAMJ,eACvBK,EAAWD,EAAO,mDAGpB,IAAMkE,EAAYlE,EAAMnF,MAAMhD,WAAWmI,EAAM3D,SAAW,GACpDoH,EAAQzD,EAAMxN,KAMpB,GAAY,KAAP+E,GAA6B,KAAPA,IAAuB0G,EAAUiG,GAwBrD,CAKL,GAJAJ,EAAW9D,EAAMxN,KACjBuR,EAAgB/D,EAAM7D,UACtB6H,EAAUhE,EAAM3D,UAEXqH,EAAY1D,EAAO4D,EA3nCL,GA2nCmC,GAAO,GAG3D,MAGF,GAAI5D,EAAMxN,OAASiR,EAAO,CAGxB,IAFAlM,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAE3B2B,EAAazG,IAClBA,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAGtC,GAAW,KAAP9E,EAGG0G,EAFL1G,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,YAGlC4D,EAAWD,EAAO,2FAGhBiE,IACF3B,EAAiBtC,EAAO6B,EAASO,EAAiBG,EAAQC,EAAS,KAAMsB,EAAUC,EAAeC,GAClGzB,EAASC,EAAUC,EAAY,MAGjCe,GAAW,EACXS,GAAgB,EAChBJ,GAAe,EACftB,EAASvC,EAAMzM,IACfiP,EAAUxC,EAAM/O,gBACPuS,EAKT,OAFAxD,EAAMzM,IAAM+P,EACZtD,EAAMS,OAAS8C,GACR,EAJPtD,EAAWD,EAAO,2DAKpB,WACSwD,EAKT,OAFAxD,EAAMzM,IAAM+P,EACZtD,EAAMS,OAAS8C,GACR,EAJPtD,EAAWD,EAAO,iFAKpB,CACF,MAxEa,KAAPzI,GACE0M,IACF3B,EAAiBtC,EAAO6B,EAASO,EAAiBG,EAAQC,EAAS,KAAMsB,EAAUC,EAAeC,GAClGzB,EAASC,EAAUC,EAAY,MAGjCe,GAAW,EACXS,GAAgB,EAChBJ,GAAe,GACNI,GAETA,GAAgB,EAChBJ,GAAe,GAEf5D,EAAWD,EAAO,qGAGpBA,EAAM3D,UAAY,EAClB9E,EAAK2M,EAmFP,IAxBIlE,EAAMxN,OAASiR,GAASzD,EAAMP,WAAa4D,KACzCY,IACFH,EAAW9D,EAAMxN,KACjBuR,EAAgB/D,EAAM7D,UACtB6H,EAAUhE,EAAM3D,UAGdqH,EAAY1D,EAAOqD,EAjrCH,GAirCkC,EAAMQ,KACtDI,EACFzB,EAAUxC,EAAM/O,OAEhBwR,EAAYzC,EAAM/O,QAIjBgT,IACH3B,EAAiBtC,EAAO6B,EAASO,EAAiBG,EAAQC,EAASC,EAAWqB,EAAUC,EAAeC,GACvGzB,EAASC,EAAUC,EAAY,MAGjCK,EAAoB9C,GAAO,GAAM,GACjCzI,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,YAG/B2D,EAAMxN,OAASiR,GAASzD,EAAMP,WAAa4D,IAAuB,IAAP9L,EAC9D0I,EAAWD,EAAO,2CACpB,GAAWA,EAAMP,WAAa4D,EAC5B,KAEJ,CAmBA,OAZIY,GACF3B,EAAiBtC,EAAO6B,EAASO,EAAiBG,EAAQC,EAAS,KAAMsB,EAAUC,EAAeC,GAIhGR,IACFxD,EAAMzM,IAAM+P,EACZtD,EAAMS,OAAS8C,EACfvD,EAAMpM,KAAO,UACboM,EAAM/O,OAAS4Q,GAGV2B,CACT,CAEA,SAASW,EAAiBnE,GACxB,IAEIoE,EACAC,EAHAC,GAAa,EACbC,GAAU,EAIVhN,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAEtC,GAAW,KAAP9E,EAAoB,OAAO,EAEb,OAAdyI,EAAMzM,KACR0M,EAAWD,EAAO,iCAKT,MAFXzI,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,YAGlCiI,GAAa,EACb/M,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,WACpB,KAAP9E,GACTgN,GAAU,EACVH,EAAY,KACZ7M,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,WAEpC+H,EAAY,IAGd,IAAItC,EAAY9B,EAAM3D,SAEtB,GAAIiI,EAAY,CACd,GAAK/M,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,gBAC3B,IAAP9E,GAAmB,KAAPA,GAEfyI,EAAM3D,SAAW2D,EAAMlO,QACzBuS,EAAUrE,EAAMnF,MAAMrD,MAAMsK,EAAW9B,EAAM3D,UAC7C9E,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,WAEpC4D,EAAWD,EAAO,qDAEtB,KAAO,CACL,KAAc,IAAPzI,IAAa0G,EAAU1G,IACjB,KAAPA,IACGgN,EAUHtE,EAAWD,EAAO,gDATlBoE,EAAYpE,EAAMnF,MAAMrD,MAAMsK,EAAY,EAAG9B,EAAM3D,SAAW,GAEzDuB,EAAmBnF,KAAK2L,IAC3BnE,EAAWD,EAAO,mDAGpBuE,GAAU,EACVzC,EAAY9B,EAAM3D,SAAW,IAMjC9E,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAGtCgI,EAAUrE,EAAMnF,MAAMrD,MAAMsK,EAAW9B,EAAM3D,UAEzCsB,EAAwBlF,KAAK4L,IAC/BpE,EAAWD,EAAO,sDAEtB,CAEIqE,IAAYxG,EAAgBpF,KAAK4L,IACnCpE,EAAWD,EAAO,4CAA8CqE,GAGlE,IACEA,EAAU9C,mBAAmB8C,SACtB7C,GACPvB,EAAWD,EAAO,0BAA4BqE,EAChD,CAcA,OAZIC,EACFtE,EAAMzM,IAAM8Q,EACHnJ,EAAgBrI,KAAKmN,EAAMsB,OAAQ8C,GAC5CpE,EAAMzM,IAAMyM,EAAMsB,OAAO8C,GAAaC,EACf,MAAdD,EACTpE,EAAMzM,IAAM,IAAM8Q,EACK,OAAdD,EACTpE,EAAMzM,IAAM,qBAAuB8Q,EAEnCpE,EAAWD,EAAO,0BAA4BoE,EAAY,MAGrD,CACT,CAEA,SAASI,EAAoBxE,GAC3B,IAAIzI,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAEtC,GAAW,KAAP9E,EAAoB,OAAO,EAEV,OAAjByI,EAAMS,QACRR,EAAWD,EAAO,qCAGpBzI,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAGpC,IAFA,IAAMyF,EAAY9B,EAAM3D,SAEV,IAAP9E,IAAa0G,EAAU1G,KAAQ2G,EAAgB3G,IACpDA,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAQtC,OALI2D,EAAM3D,WAAayF,GACrB7B,EAAWD,EAAO,8DAGpBA,EAAMS,OAAST,EAAMnF,MAAMrD,MAAMsK,EAAW9B,EAAM3D,WAC3C,CACT,CA6BA,SAASoI,EAAiCzE,EAAO0E,EAAerB,EAAYO,GAC1E,IAAMe,EAAgBnE,EAAcR,GAYpC,OAlqCF,SAAiCA,GAC/BA,EAAMF,sBAAsBxK,KAAK3D,OAAOsB,OAAO,MACjD,CAspCE2R,CAAuB5E,GACvBU,EAAaV,EAAO0E,GAIpB1E,EAAMzM,IAAM,KACZyM,EAAMS,OAAS,KACfT,EAAMpM,KAAO,KACboM,EAAM/O,OAAS,KAEX0S,EAAiB3D,EAAOqD,EAAYO,IAA8B,YAAf5D,EAAMpM,MA9pC/D,SAAkCoM,GAChC,IAAMK,EAAcL,EAAMF,sBAAsB+E,MAC1CzE,EAAeJ,EAAMF,sBAE3B,GAA4B,IAAxBM,EAAatO,OAKjB,IAHA,IAAMgT,EAAS1E,EAAaA,EAAatO,OAAS,GAC5CiT,EAAQpT,OAAOC,KAAKyO,GAEjBxO,EAAQ,EAAGC,EAASiT,EAAMjT,OAAQD,EAAQC,EAAQD,GAAS,EAAG,CACrE,IAAMU,EAAOwS,EAAMlT,GAEdqJ,EAAgBrI,KAAKiS,EAAQvS,KAChCuS,EAAOvS,GAAQ8N,EAAY9N,GAE/B,CACF,CA+oCIyS,CAAwBhF,IACjB,IA9oCX,SAAoCA,GAIlC,IAHA,IAAMK,EAAcL,EAAMF,sBAAsB+E,MAC1CE,EAAQpT,OAAOC,KAAKyO,GAEjBxO,EAAQkT,EAAMjT,OAAS,EAAGD,GAAS,EAAGA,GAAS,EAAG,CACzD,IAAMoT,EAAQ5E,EAAY0E,EAAMlT,IAE5BoT,EAAM3E,QACRN,EAAMO,UAAUwE,EAAMlT,IAAUoT,EAAM5N,aAE/B2I,EAAMO,UAAUwE,EAAMlT,GAEjC,CACF,CAooCEqT,CAA0BlF,GAC1BU,EAAaV,EAAO2E,IACb,EACT,CAEA,SAASjB,EAAa1D,EAAOmF,EAAcC,EAAaC,EAAaxB,GACnE,IAAIyB,EACAC,EAKAjS,EACAsQ,EACA4B,EANAC,EAAe,EACfC,GAAY,EACZC,GAAa,EACbjB,EAAgB,KAKhB1E,EAAMN,OAASM,EAAMX,UACvBY,EAAWD,EAAO,8BAAgCA,EAAMX,SAAW,KAGrEW,EAAMN,OAAS,EAEQ,OAAnBM,EAAMZ,UACRY,EAAMZ,SAAS,OAAQY,GAGzBA,EAAMzM,IAAM,KACZyM,EAAMS,OAAS,KACfT,EAAMpM,KAAO,KACboM,EAAM/O,OAAS,KAEf,IAAM2U,EAAmBN,EAAoBC,EA55CrB,IA65CAH,GA95CD,IA+5CAA,EAgBvB,GAdIC,GACEvC,EAAoB9C,GAAO,GAAM,KACnC0F,GAAY,EAER1F,EAAMP,WAAa0F,EACrBM,EAAe,EACNzF,EAAMP,aAAe0F,EAC9BM,EAAe,EACNzF,EAAMP,WAAa0F,IAC5BM,GAAe,IAKA,IAAjBA,EACF,OAAa,CACX,IAAMlO,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAClCwJ,EAAgBrF,EAAcR,GAIpC,GAAI0F,IACS,KAAPnO,GAAoC,OAAdyI,EAAMzM,KACrB,KAAPgE,GAAuC,OAAjByI,EAAMS,QAChC,MAGF,IAAK0D,EAAgBnE,KAAWwE,EAAmBxE,GACjD,MAGoB,OAAlB0E,IACFA,EAAgBmB,GAGd/C,EAAoB9C,GAAO,GAAM,IACnC0F,GAAY,EACZH,EAAwBK,EAEpB5F,EAAMP,WAAa0F,EACrBM,EAAe,EACNzF,EAAMP,aAAe0F,EAC9BM,EAAe,EACNzF,EAAMP,WAAa0F,IAC5BM,GAAe,IAGjBF,GAAwB,CAE5B,CAOF,GAJIA,IACFA,EAAwBG,GAAa7B,GAGlB,IAAjB4B,GAx9CoB,IAw9CwBL,EAS9C,GAPExB,EA79CkB,IA49CIwB,GA39CH,IA29CuCA,EAC7CD,EAEAA,EAAe,EAG9BK,EAAcxF,EAAM3D,SAAW2D,EAAM7D,UAEhB,IAAjBsJ,EACF,GAAKF,IACAnC,EAAkBpD,EAAOwF,IAAgB7B,EAAiB3D,EAAOwF,EAAa5B,KA5uBzF,SAA6B5D,EAAOqD,GAClC,IACII,EACAqC,EACAC,EAEAlE,EAEAmE,EACAC,EACAC,EACAC,EAEA3D,EACAD,EACAE,EAdA2D,GAAW,EAIT9C,EAAOtD,EAAMzM,IAEbgQ,EAAUvD,EAAMS,OAKhB2B,EAAkBzQ,OAAOsB,OAAO,MAKlCsE,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAEtC,GAAW,KAAP9E,EACFyO,EAAa,GACbG,GAAY,EACZtE,EAAU,OACZ,IAAkB,MAAPtK,EAKT,OAAO,EAJPyO,EAAa,IACbG,GAAY,EACZtE,EAAU,CAAA,CAGZ,CAQA,IANqB,OAAjB7B,EAAMS,QACRN,EAAYH,EAAOA,EAAMS,OAAQoB,GAGnCtK,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAEtB,IAAP9E,GAAU,CAKf,GAJAuL,EAAoB9C,GAAO,EAAMqD,IAEjC9L,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,aAEvB2J,EAMT,OALAhG,EAAM3D,WACN2D,EAAMzM,IAAM+P,EACZtD,EAAMS,OAAS8C,EACfvD,EAAMpM,KAAOuS,EAAY,UAAY,WACrCnG,EAAM/O,OAAS4Q,GACR,EACGuE,EAEM,KAAP7O,GAET0I,EAAWD,EAAO,4CAHlBC,EAAWD,EAAO,gDAMDyC,EAAY,KAC/BwD,EAASC,GAAiB,EAEf,KAAP3O,GAGE0G,EAFc+B,EAAMnF,MAAMhD,WAAWmI,EAAM3D,SAAW,MAGxD4J,EAASC,GAAiB,EAC1BlG,EAAM3D,WACNyG,EAAoB9C,GAAO,EAAMqD,IAIrCI,EAAQzD,EAAMxN,KACdsT,EAAa9F,EAAM7D,UACnB4J,EAAO/F,EAAM3D,SACbqH,EAAY1D,EAAOqD,EAl0BC,GAk0B4B,GAAO,GACvDd,EAASvC,EAAMzM,IACfiP,EAAUxC,EAAM/O,OAChB6R,EAAoB9C,GAAO,EAAMqD,GAEjC9L,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,WAE7B6J,GAAkBlG,EAAMxN,OAASiR,GAAiB,KAAPlM,IAC9C0O,GAAS,EACT1O,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UACpCyG,EAAoB9C,GAAO,EAAMqD,GACjCK,EAAY1D,EAAOqD,EA70BD,GA60B8B,GAAO,GACvDZ,EAAYzC,EAAM/O,QAGhBkV,EACF7D,EAAiBtC,EAAO6B,EAASO,EAAiBG,EAAQC,EAASC,EAAWgB,EAAOqC,EAAYC,GACxFE,EACTpE,EAAQvM,KAAKgN,EAAiBtC,EAAO,KAAMoC,EAAiBG,EAAQC,EAASC,EAAWgB,EAAOqC,EAAYC,IAE3GlE,EAAQvM,KAAKkN,GAGfM,EAAoB9C,GAAO,EAAMqD,GAItB,MAFX9L,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,YAGhC+J,GAAW,EACX7O,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,WAEpC+J,GAAW,CAEf,CAEAnG,EAAWD,EAAO,wDACpB,CAioBUqG,CAAmBrG,EAAO4D,GAC5B+B,GAAa,MACR,CACL,IAAMpO,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAElB,OAAlBqI,GAA0BkB,IAAqBL,GACxC,MAAPhO,GAA6B,KAAPA,GACtBkN,EACEzE,EACA0E,EACAA,EAAcrI,SAAWqI,EAAcvI,UACvCyH,IAGM0B,GA7oBpB,SAA0BtF,EAAOqD,GAC/B,IAAIiD,EAOAC,EANAC,EAr2BgB,EAs2BhBC,GAAiB,EACjBC,GAAiB,EACjBC,EAAatD,EACbuD,EAAa,EACbC,GAAiB,EAGjBtP,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAEtC,GAAW,MAAP9E,EACF+O,GAAU,MACZ,IAAkB,KAAP/O,EAGT,OAAO,EAFP+O,GAAU,CAGZ,CAKA,IAHAtG,EAAMpM,KAAO,SACboM,EAAM/O,OAAS,GAED,IAAPsG,GAGL,GAAW,MAFXA,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,YAEH,KAAP9E,EA73BR,IA83BMiP,EACpBA,EAAmB,KAAPjP,EA73BE,EADC,EAg4Bf0I,EAAWD,EAAO,mDAEVuG,EAAMjI,EAAgB/G,KAAQ,GAUxC,MATY,IAARgP,EACFtG,EAAWD,EAAO,gFACR0G,EAIVzG,EAAWD,EAAO,8CAHlB2G,EAAatD,EAAakD,EAAM,EAChCG,GAAiB,EAMrB,CAGF,GAAI1I,EAAazG,GAAK,CACpB,GAAKA,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,gBAClC2B,EAAazG,IAEpB,GAAW,KAAPA,EACF,GAAKA,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,iBACjC0B,EAAMxG,IAAe,IAAPA,EAE1B,CAEA,KAAc,IAAPA,GAAU,CAOf,IANAsL,EAAc7C,GACdA,EAAMP,WAAa,EAEnBlI,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,YAGzBqK,GAAkB1G,EAAMP,WAAakH,IAC/B,KAAPpP,GACNyI,EAAMP,aACNlI,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAOtC,IAJKqK,GAAkB1G,EAAMP,WAAakH,IACxCA,EAAa3G,EAAMP,YAGjB1B,EAAMxG,GACRqP,QADF,CAUA,GALKF,GAAiC,IAAfC,GACrB1G,EAAWD,EAAO,wCAIhBA,EAAMP,WAAakH,EAAY,CAp7BjB,IAs7BZH,EACFxG,EAAM/O,QAAUT,EAAOM,OAAO,KAAM2V,EAAiB,EAAIG,EAAaA,GAz7BxD,IA07BLJ,GACLC,IACFzG,EAAM/O,QAAU,MAKpB,KACF,CAGIqV,EAEEtI,EAAazG,IACfsP,GAAiB,EAEjB7G,EAAM/O,QAAUT,EAAOM,OAAO,KAAM2V,EAAiB,EAAIG,EAAaA,IAG7DC,GACTA,GAAiB,EACjB7G,EAAM/O,QAAUT,EAAOM,OAAO,KAAM8V,EAAa,IAGzB,IAAfA,EACLH,IACFzG,EAAM/O,QAAU,KAKlB+O,EAAM/O,QAAUT,EAAOM,OAAO,KAAM8V,GAMtC5G,EAAM/O,QAAUT,EAAOM,OAAO,KAAM2V,EAAiB,EAAIG,EAAaA,GAGxEH,GAAiB,EACjBC,GAAiB,EACjBE,EAAa,EAGb,IAFA,IAAME,EAAe9G,EAAM3D,UAEnB0B,EAAMxG,IAAe,IAAPA,GACpBA,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAGtCoF,EAAezB,EAAO8G,EAAc9G,EAAM3D,UAAU,EA5DpD,CA6DF,CAEA,OAAO,CACT,CAigByC0K,CAAgB/G,EAAO4D,IA92BhE,SAAiC5D,EAAOqD,GACtC,IAAIyD,EACAE,EAEAzP,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAEtC,GAAW,KAAP9E,EACF,OAAO,EAQT,IALAyI,EAAMpM,KAAO,SACboM,EAAM/O,OAAS,GACf+O,EAAM3D,WACNyK,EAAeE,EAAahH,EAAM3D,SAEuB,KAAjD9E,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,YACxC,GAAW,KAAP9E,EAAoB,CAItB,GAHAkK,EAAezB,EAAO8G,EAAc9G,EAAM3D,UAAU,GAGzC,MAFX9E,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,WAOlC,OAAO,EAJPyK,EAAe9G,EAAM3D,SACrB2D,EAAM3D,WACN2K,EAAahH,EAAM3D,QAIvB,MAAW0B,EAAMxG,IACfkK,EAAezB,EAAO8G,EAAcE,GAAY,GAChD7D,EAAiBnD,EAAO8C,EAAoB9C,GAAO,EAAOqD,IAC1DyD,EAAeE,EAAahH,EAAM3D,UACzB2D,EAAM3D,WAAa2D,EAAM7D,WAAa+G,EAAsBlD,GACrEC,EAAWD,EAAO,iEAElBA,EAAM3D,WACD2B,EAAazG,KAChByP,EAAahH,EAAM3D,WAKzB4D,EAAWD,EAAO,6DACpB,CAq0BYiH,CAAuBjH,EAAO4D,IAn0B1C,SAAiC5D,EAAOqD,GACtC,IAAIyD,EACAE,EACAT,EAEAhP,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAEtC,GAAW,KAAP9E,EACF,OAAO,EAQT,IALAyI,EAAMpM,KAAO,SACboM,EAAM/O,OAAS,GACf+O,EAAM3D,WACNyK,EAAeE,EAAahH,EAAM3D,SAEuB,KAAjD9E,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,YAAkB,CAC1D,GAAW,KAAP9E,EAGF,OAFAkK,EAAezB,EAAO8G,EAAc9G,EAAM3D,UAAU,GACpD2D,EAAM3D,YACC,EACT,GAAkB,KAAP9E,EAAoB,CAI7B,GAHAkK,EAAezB,EAAO8G,EAAc9G,EAAM3D,UAAU,GAGhD0B,EAFJxG,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,WAGlCyG,EAAoB9C,GAAO,EAAOqD,WAGzB9L,EAAK,KAAOuH,EAAkBvH,GACvCyI,EAAM/O,QAAU8N,EAAgBxH,GAChCyI,EAAM3D,oBACIkK,EAAMlI,EAAc9G,IAAO,EAAG,CAIxC,IAHA,IAAI2P,EAAYX,EACZY,EAAY,EAETD,EAAY,EAAGA,KAGfX,EAAMpI,EAFX5G,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,aAEL,EAC7B8K,GAAaA,GAAa,GAAKZ,EAE/BtG,EAAWD,EAAO,kCAItBA,EAAM/O,QAAUuN,EAAkB2I,GAElCnH,EAAM3D,UACR,MACE4D,EAAWD,EAAO,2BAGpB8G,EAAeE,EAAahH,EAAM3D,QACpC,MAAW0B,EAAMxG,IACfkK,EAAezB,EAAO8G,EAAcE,GAAY,GAChD7D,EAAiBnD,EAAO8C,EAAoB9C,GAAO,EAAOqD,IAC1DyD,EAAeE,EAAahH,EAAM3D,UACzB2D,EAAM3D,WAAa2D,EAAM7D,WAAa+G,EAAsBlD,GACrEC,EAAWD,EAAO,iEAElBA,EAAM3D,WACD2B,EAAazG,KAChByP,EAAahH,EAAM3D,UAGzB,CAEA4D,EAAWD,EAAO,6DACpB,CA+vBYoH,CAAuBpH,EAAO4D,GAHhC+B,GAAa,GAjKvB,SAAoB3F,GAClB,IAAIzI,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAEtC,GAAW,KAAP9E,EAAoB,OAAO,EAE/BA,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAGpC,IAFA,IAAMyF,EAAY9B,EAAM3D,SAEV,IAAP9E,IAAa0G,EAAU1G,KAAQ2G,EAAgB3G,IACpDA,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAGlC2D,EAAM3D,WAAayF,GACrB7B,EAAWD,EAAO,6DAGpB,IAAMxL,EAAQwL,EAAMnF,MAAMrD,MAAMsK,EAAW9B,EAAM3D,UAQjD,OANKnB,EAAgBrI,KAAKmN,EAAMO,UAAW/L,IACzCyL,EAAWD,EAAO,uBAAyBxL,EAAQ,KAGrDwL,EAAM/O,OAAS+O,EAAMO,UAAU/L,GAC/BsO,EAAoB9C,GAAO,GAAM,IAC1B,CACT,CA6ImBqH,CAAUrH,GAz9B7B,SAA0BA,EAAOqD,EAAYiE,GAC3C,IAAIR,EACAE,EACAO,EACA9D,EACAqC,EACA0B,EACEC,EAAQzH,EAAMpM,KACdiO,EAAU7B,EAAM/O,OAElBsG,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAEtC,GAAI4B,EAAU1G,IACV2G,EAAgB3G,IACT,KAAPA,GACO,KAAPA,GACO,KAAPA,GACO,KAAPA,GACO,MAAPA,GACO,KAAPA,GACO,KAAPA,GACO,KAAPA,GACO,KAAPA,GACO,KAAPA,GACO,KAAPA,EACF,OAAO,EAGT,GAAW,KAAPA,GAA6B,KAAPA,EAAoB,CAC5C,IAAM2M,EAAYlE,EAAMnF,MAAMhD,WAAWmI,EAAM3D,SAAW,GAE1D,GAAI4B,EAAUiG,IACToD,GAAwBpJ,EAAgBgG,GAC3C,OAAO,CAEX,CAOA,IALAlE,EAAMpM,KAAO,SACboM,EAAM/O,OAAS,GACf6V,EAAeE,EAAahH,EAAM3D,SAClCkL,GAAoB,EAEN,IAAPhQ,GAAU,CACf,GAAW,KAAPA,EAAoB,CACtB,IAAM2M,EAAYlE,EAAMnF,MAAMhD,WAAWmI,EAAM3D,SAAW,GAE1D,GAAI4B,EAAUiG,IACToD,GAAwBpJ,EAAgBgG,GAC3C,KAEJ,MAAA,GAAkB,KAAP3M,GAGT,GAAI0G,EAFc+B,EAAMnF,MAAMhD,WAAWmI,EAAM3D,SAAW,IAGxD,cAEQ2D,EAAM3D,WAAa2D,EAAM7D,WAAa+G,EAAsBlD,IAC5DsH,GAAwBpJ,EAAgB3G,GAClD,MACF,GAAWwG,EAAMxG,GAAK,CAMpB,GALAkM,EAAQzD,EAAMxN,KACdsT,EAAa9F,EAAM7D,UACnBqL,EAAcxH,EAAMP,WACpBqD,EAAoB9C,GAAO,GAAO,GAE9BA,EAAMP,YAAc4D,EAAY,CAClCkE,GAAoB,EACpBhQ,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,UAClC,QACF,CACE2D,EAAM3D,SAAW2K,EACjBhH,EAAMxN,KAAOiR,EACbzD,EAAM7D,UAAY2J,EAClB9F,EAAMP,WAAa+H,EACnB,KAEJ,EAEID,IACF9F,EAAezB,EAAO8G,EAAcE,GAAY,GAChD7D,EAAiBnD,EAAOA,EAAMxN,KAAOiR,GACrCqD,EAAeE,EAAahH,EAAM3D,SAClCkL,GAAoB,GAGjBvJ,EAAazG,KAChByP,EAAahH,EAAM3D,SAAW,GAGhC9E,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,SACtC,CAIA,OAFAoF,EAAezB,EAAO8G,EAAcE,GAAY,KAE5ChH,EAAM/O,SAIV+O,EAAMpM,KAAO6T,EACbzH,EAAM/O,OAAS4Q,GACR,EACT,CA03BmB6F,CAAgB1H,EAAO4D,EA//ClB,IA+/CkDwB,KAChEO,GAAa,EAEK,OAAd3F,EAAMzM,MACRyM,EAAMzM,IAAM,OATdoS,GAAa,EAEK,OAAd3F,EAAMzM,KAAiC,OAAjByM,EAAMS,QAC9BR,EAAWD,EAAO,8CAUD,OAAjBA,EAAMS,QACRN,EAAYH,EAAOA,EAAMS,OAAQT,EAAM/O,OAE3C,MAC0B,IAAjBwU,IAGTE,EAAaJ,GAAyBnC,EAAkBpD,EAAOwF,IAInE,GAAkB,OAAdxF,EAAMzM,IACa,OAAjByM,EAAMS,QACRN,EAAYH,EAAOA,EAAMS,OAAQT,EAAM/O,aAE3C,GAAyB,MAAd+O,EAAMzM,IAAa,CAOP,OAAjByM,EAAM/O,QAAkC,WAAf+O,EAAMpM,MACjCqM,EAAWD,EAAO,oEAAsEA,EAAMpM,KAAO,KAGvG,IAAA,IAAS+T,EAAY,EAAGC,EAAe5H,EAAMT,cAAczN,OAAQ6V,EAAYC,EAAcD,GAAa,EAGxG,IAFArU,EAAO0M,EAAMT,cAAcoI,IAElB9T,QAAQmM,EAAM/O,QAAS,CAC9B+O,EAAM/O,OAASqC,EAAKQ,UAAUkM,EAAM/O,QACpC+O,EAAMzM,IAAMD,EAAKC,IACI,OAAjByM,EAAMS,QACRN,EAAYH,EAAOA,EAAMS,OAAQT,EAAM/O,QAEzC,KACF,CAEJ,MAAA,GAAyB,MAAd+O,EAAMzM,IAAa,CAC5B,GAAI2H,EAAgBrI,KAAKmN,EAAMR,QAAQQ,EAAMpM,MAAQ,YAAaoM,EAAMzM,KACtED,EAAO0M,EAAMR,QAAQQ,EAAMpM,MAAQ,YAAYoM,EAAMzM,SAChD,CAELD,EAAO,KAGP,IAFA,IAAMuU,EAAW7H,EAAMR,QAAQnL,MAAM2L,EAAMpM,MAAQ,YAE1C+T,EAAY,EAAGC,EAAeC,EAAS/V,OAAQ6V,EAAYC,EAAcD,GAAa,EAC7F,GAAI3H,EAAMzM,IAAIiE,MAAM,EAAGqQ,EAASF,GAAWpU,IAAIzB,UAAY+V,EAASF,GAAWpU,IAAK,CAClFD,EAAOuU,EAASF,GAChB,KACF,CAEJ,CAEKrU,GACH2M,EAAWD,EAAO,iBAAmBA,EAAMzM,IAAM,KAG9B,OAAjByM,EAAM/O,QAAmBqC,EAAKM,OAASoM,EAAMpM,MAC/CqM,EAAWD,EAAO,gCAAkCA,EAAMzM,IAAM,wBAA0BD,EAAKM,KAAO,WAAaoM,EAAMpM,KAAO,KAG7HN,EAAKO,QAAQmM,EAAM/O,OAAQ+O,EAAMzM,MAGpCyM,EAAM/O,OAASqC,EAAKQ,UAAUkM,EAAM/O,OAAQ+O,EAAMzM,KAC7B,OAAjByM,EAAMS,QACRN,EAAYH,EAAOA,EAAMS,OAAQT,EAAM/O,SAJzCgP,EAAWD,EAAO,gCAAkCA,EAAMzM,IAAM,iBAOpE,CAOA,OALuB,OAAnByM,EAAMZ,UACRY,EAAMZ,SAAS,QAASY,GAG1BA,EAAMN,OAAS,EACM,OAAdM,EAAMzM,KAAiC,OAAjByM,EAAMS,QAAmBkF,CACxD,CAEA,SAASmC,EAAc9H,GACrB,IAEIzI,EAFEwQ,EAAgB/H,EAAM3D,SACxB2L,GAAgB,EAQpB,IALAhI,EAAMe,QAAU,KAChBf,EAAMkB,gBAAkBlB,EAAMb,OAC9Ba,EAAMsB,OAAS3P,OAAOsB,OAAO,MAC7B+M,EAAMO,UAAY5O,OAAOsB,OAAO,MAEyB,KAAjDsE,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,aACxCyG,EAAoB9C,GAAO,GAAM,GAEjCzI,EAAKyI,EAAMnF,MAAMhD,WAAWmI,EAAM3D,YAE9B2D,EAAMP,WAAa,GAAY,KAAPlI,KAL8B,CAS1DyQ,GAAgB,EAChBzQ,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAGpC,IAFA,IAAIyF,EAAY9B,EAAM3D,SAER,IAAP9E,IAAa0G,EAAU1G,IAC5BA,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAGtC,IAAM4L,EAAgBjI,EAAMnF,MAAMrD,MAAMsK,EAAW9B,EAAM3D,UACnD6L,EAAgB,GAMtB,IAJID,EAAcnW,OAAS,GACzBmO,EAAWD,EAAO,gEAGN,IAAPzI,GAAU,CACf,KAAOyG,EAAazG,IAClBA,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAGtC,GAAW,KAAP9E,EAAoB,CACtB,GAAKA,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,gBAC3B,IAAP9E,IAAawG,EAAMxG,IAC1B,KACF,CAEA,GAAIwG,EAAMxG,GAAK,MAIf,IAFAuK,EAAY9B,EAAM3D,SAEJ,IAAP9E,IAAa0G,EAAU1G,IAC5BA,EAAKyI,EAAMnF,MAAMhD,aAAamI,EAAM3D,UAGtC6L,EAAc5S,KAAK0K,EAAMnF,MAAMrD,MAAMsK,EAAW9B,EAAM3D,UACxD,CAEW,IAAP9E,GAAUsL,EAAc7C,GAExB9E,EAAgBrI,KAAK+N,EAAmBqH,GAC1CrH,EAAkBqH,GAAejI,EAAOiI,EAAeC,GAEvDhI,EAAaF,EAAO,+BAAiCiI,EAAgB,IAEzE,CAEAnF,EAAoB9C,GAAO,GAAM,GAER,IAArBA,EAAMP,YACqC,KAA3CO,EAAMnF,MAAMhD,WAAWmI,EAAM3D,WACkB,KAA/C2D,EAAMnF,MAAMhD,WAAWmI,EAAM3D,SAAW,IACO,KAA/C2D,EAAMnF,MAAMhD,WAAWmI,EAAM3D,SAAW,IAC1C2D,EAAM3D,UAAY,EAClByG,EAAoB9C,GAAO,GAAM,IACxBgI,GACT/H,EAAWD,EAAO,mCAGpB0D,EAAY1D,EAAOA,EAAMP,WAAa,EAjqDd,GAiqDoC,GAAO,GACnEqD,EAAoB9C,GAAO,GAAM,GAE7BA,EAAMkB,iBACNxD,EAA8BjF,KAAKuH,EAAMnF,MAAMrD,MAAMuQ,EAAe/H,EAAM3D,YAC5E6D,EAAaF,EAAO,oDAGtBA,EAAMH,UAAUvK,KAAK0K,EAAM/O,QAEvB+O,EAAM3D,WAAa2D,EAAM7D,WAAa+G,EAAsBlD,GACf,KAA3CA,EAAMnF,MAAMhD,WAAWmI,EAAM3D,YAC/B2D,EAAM3D,UAAY,EAClByG,EAAoB9C,GAAO,GAAM,IAKjCA,EAAM3D,SAAY2D,EAAMlO,OAAS,GACnCmO,EAAWD,EAAO,wDAEtB,CAEA,SAASmI,GAAetN,EAAOrH,GAE7BA,EAAUA,GAAW,CAAA,EAEA,KAHrBqH,EAAQpG,OAAOoG,IAGL/I,SAEmC,KAAvC+I,EAAMhD,WAAWgD,EAAM/I,OAAS,IACO,KAAvC+I,EAAMhD,WAAWgD,EAAM/I,OAAS,KAClC+I,GAAS,MAIiB,QAAxBA,EAAMhD,WAAW,KACnBgD,EAAQA,EAAMrD,MAAM,KAIxB,IAAMwI,EAAQ,IAAIhB,EAAMnE,EAAOrH,GAEzB4U,EAAUvN,EAAMlH,QAAQ,MAU9B,KARgB,IAAZyU,IACFpI,EAAM3D,SAAW+L,EACjBnI,EAAWD,EAAO,sCAIpBA,EAAMnF,OAAS,KAEmC,KAA3CmF,EAAMnF,MAAMhD,WAAWmI,EAAM3D,WAClC2D,EAAMP,YAAc,EACpBO,EAAM3D,UAAY,EAGpB,KAAO2D,EAAM3D,SAAY2D,EAAMlO,OAAS,GACtCgW,EAAa9H,GAGf,OAAOA,EAAMH,SACf,QA8BAwI,EAAAC,QA5BA,SAAkBzN,EAAO1K,EAAUqD,GAChB,OAAbrD,GAAyC,WAApBH,EAAOG,SAA4C,IAAZqD,IAC9DA,EAAUrD,EACVA,EAAW,MAGb,IAAM0P,EAAYsI,GAActN,EAAOrH,GAEvC,GAAwB,mBAAbrD,EACT,OAAO0P,EAGT,IAAA,IAAShO,EAAQ,EAAGC,EAAS+N,EAAU/N,OAAQD,EAAQC,EAAQD,GAAS,EACtE1B,EAAS0P,EAAUhO,GAEvB,EAcAwW,EAAAE,KAZA,SAAe1N,EAAOrH,GACpB,IAAMqM,EAAYsI,GAActN,EAAOrH,GAEvC,GAAyB,IAArBqM,EAAU/N,OAAd,CAEA,GAAgC,IAArB+N,EAAU/N,OACnB,OAAO+N,EAAU,GAEnB,MAAM,IAAIlN,EAAc,2DADxB,CAEF,kDEvwDY,SAAA3C,EAAAC,GAAA,OAAAD,EAAA,mBAAAE,QAAA,iBAAAA,OAAAC,SAAA,SAAAF,GAAA,cAAAA,GAAA,SAAAA,GAAA,OAAAA,GAAA,mBAAAC,QAAAD,EAAAG,cAAAF,QAAAD,IAAAC,OAAAG,UAAA,gBAAAJ,CAAA,GAAAA,EAAA,MAEZ,IAAMO,EAAS2C,IACTR,EAAgBgC,IAChB6I,EAAiBnH,KAEjB+E,EAAYzJ,OAAOtB,UAAU6C,SAC7BgI,EAAkBvJ,OAAOtB,UAAU8K,eAEnCqN,EAAW,MA0BXC,EAAmB,CAEzBA,EAAyB,MACzBA,EAAyB,MACzBA,EAAyB,MACzBA,EAAyB,MACzBA,GAAyB,MACzBA,GAAyB,MACzBA,GAAyB,MACzBA,GAAyB,MACzBA,GAAyB,MACzBA,GAAyB,MACzBA,GAAyB,OACzBA,IAAyB,MACzBA,IAAyB,MACzBA,KAA2B,MAC3BA,KAA2B,OAErBC,EAA6B,CACjC,IAAK,IAAK,MAAO,MAAO,MAAO,KAAM,KAAM,KAC3C,IAAK,IAAK,KAAM,KAAM,KAAM,MAAO,MAAO,OAGtCC,EAA2B,4CA2BjC,SAASC,EAAWC,GAClB,IAAIxH,EACAvP,EAEEf,EAAS8X,EAAU3V,SAAS,IAAIiF,cAEtC,GAAI0Q,GAAa,IACfxH,EAAS,IACTvP,EAAS,OACX,GAAW+W,GAAa,MACtBxH,EAAS,IACTvP,EAAS,MACX,MAAW+W,GAAa,YAItB,MAAM,IAAIlW,EAAc,iEAHxB0O,EAAS,IACTvP,EAAS,CAGX,CAEA,MAAO,KAAOuP,EAAS7Q,EAAOM,OAAO,IAAKgB,EAASf,EAAOe,QAAUf,CACtE,CAKA,SAASiO,EAAOxL,GACdV,KAAK+B,OAASrB,EAAgB,QAAKgK,EACnC1K,KAAKgK,OAASL,KAAKjG,IAAI,EAAIhD,EAAgB,QAAK,GAChDV,KAAKgW,cAAgBtV,EAAuB,gBAAK,EACjDV,KAAKiW,YAAcvV,EAAqB,cAAK,EAC7CV,KAAKkW,UAAaxY,EAAOF,UAAUkD,EAAmB,YAAK,EAAKA,EAAmB,UACnFV,KAAKmW,SAxDP,SAA0BpU,EAAQpB,GAChC,GAAY,OAARA,EAAc,MAAO,CAAA,EAKzB,IAHA,IAAMxC,EAAS,CAAA,EACTW,EAAOD,OAAOC,KAAK6B,GAEhB5B,EAAQ,EAAGC,EAASF,EAAKE,OAAQD,EAAQC,EAAQD,GAAS,EAAG,CACpE,IAAI0B,EAAM3B,EAAKC,GACX0C,EAAQE,OAAOhB,EAAIF,IAEC,OAApBA,EAAIiE,MAAM,EAAG,KACfjE,EAAM,qBAAuBA,EAAIiE,MAAM,IAEzC,IAAMlE,EAAOuB,EAAOc,gBAA0B,SAAEpC,GAE5CD,GAAQ4H,EAAgBrI,KAAKS,EAAKgB,aAAcC,KAClDA,EAAQjB,EAAKgB,aAAaC,IAG5BtD,EAAOsC,GAAOgB,CAChB,CAEA,OAAOtD,CACT,CAiCkBiY,CAAgBpW,KAAK+B,OAAQrB,EAAgB,QAAK,MAClEV,KAAKqW,SAAW3V,EAAkB,WAAK,EACvCV,KAAKsW,UAAY5V,EAAmB,WAAK,GACzCV,KAAKuW,OAAS7V,EAAgB,SAAK,EACnCV,KAAKwW,aAAe9V,EAAsB,eAAK,EAC/CV,KAAKyW,aAAe/V,EAAsB,eAAK,EAC/CV,KAAK0W,YAAyC,MAA3BhW,EAAqB,YAdd,EADA,EAgB1BV,KAAK2W,YAAcjW,EAAqB,cAAK,EAC7CV,KAAK4W,SAA0C,mBAAxBlW,EAAkB,SAAmBA,EAAkB,SAAI,KAElFV,KAAKyM,cAAgBzM,KAAK+B,OAAOY,iBACjC3C,KAAK6W,cAAgB7W,KAAK+B,OAAOa,iBAEjC5C,KAAKS,IAAM,KACXT,KAAK7B,OAAS,GAEd6B,KAAK8W,WAAa,GAClB9W,KAAK+W,eAAiB,IACxB,CAGA,SAASC,EAAc/Y,EAAQgZ,GAM7B,IALA,IAAMC,EAAMxZ,EAAOM,OAAO,IAAKiZ,GAC3B1N,EAAW,EACXpL,EAAS,GACPa,EAASf,EAAOe,OAEfuK,EAAWvK,GAAQ,CACxB,IAAIU,OAAI,EACFyX,EAAOlZ,EAAO4C,QAAQ,KAAM0I,IACrB,IAAT4N,GACFzX,EAAOzB,EAAOyG,MAAM6E,GACpBA,EAAWvK,IAEXU,EAAOzB,EAAOyG,MAAM6E,EAAU4N,EAAO,GACrC5N,EAAW4N,EAAO,GAGhBzX,EAAKV,QAAmB,OAATU,IAAevB,GAAU+Y,GAE5C/Y,GAAUuB,CACZ,CAEA,OAAOvB,CACT,CAEA,SAASiZ,EAAkBlK,EAAOmK,GAChC,MAAO,KAAO3Z,EAAOM,OAAO,IAAKkP,EAAMlD,OAASqN,EAClD,CAeA,SAASC,EAAcnT,GACrB,OAvKiB,KAuKVA,GA1KQ,IA0KYA,CAC7B,CAMA,SAASoT,EAAapT,GACpB,OAAQA,GAAK,IAAWA,GAAK,KACzBA,GAAK,KAAWA,GAAK,OAAmB,OAANA,GAAsB,OAANA,GAClDA,GAAK,OAAWA,GAAK,OAAaA,IAAMuR,GACzCvR,GAAK,OAAWA,GAAK,OAC1B,CAOA,SAASqT,EAAsBrT,GAC7B,OAAOoT,EAAYpT,IACjBA,IAAMuR,GA7LmB,KA+LzBvR,GAhMmB,KAiMnBA,CACJ,CAWA,SAASsT,EAAatT,EAAGuT,EAAMC,GAC7B,IAAMC,EAAwBJ,EAAqBrT,GAC7C0T,EAAYD,IAA0BN,EAAanT,GACzD,OAGIwT,EACIC,EACAA,GA3MS,KA6MTzT,GAtMuB,KAuMvBA,GAtMwB,KAuMxBA,GArMsB,MAsMtBA,GApMuB,MAqMvBA,IAtNS,KAyNfA,KAlNe,KAmNbuT,IAAwBG,IAE3BL,EAAqBE,KAAUJ,EAAaI,IA5N5B,KA4NqCvT,GArNrC,KAsNhBuT,GAAuBG,CAC1B,CA2CA,SAASC,EAAa7Z,EAAQ4L,GAC5B,IACIzC,EADE2Q,EAAQ9Z,EAAO8G,WAAW8E,GAGhC,OAAIkO,GAAS,OAAUA,GAAS,OAAUlO,EAAM,EAAI5L,EAAOe,SACzDoI,EAASnJ,EAAO8G,WAAW8E,EAAM,KACnB,OAAUzC,GAAU,MAEN,MAAlB2Q,EAAQ,OAAkB3Q,EAAS,MAAS,MAGjD2Q,CACT,CAGA,SAASC,EAAqB/Z,GAE5B,MADuB,QACD0H,KAAK1H,EAC7B,CAeA,SAASga,EAAmBha,EAAQia,EAAgBC,EAAgB7B,EAClE8B,EAAmB1B,EAAaC,EAAagB,GAC7C,IAAIlN,EA3EqBtG,EA4ErBkU,EAAO,EACPC,EAAW,KACXC,GAAe,EACfC,GAAkB,EAChBC,GAAiC,IAAdnC,EACrBoC,GAAoB,EACpBC,EA9EGpB,EAJkBpT,EAkFI2T,EAAY7Z,EAAQ,KA7E/CkG,IAAMuR,IACL4B,EAAanT,IAjOC,KAoOfA,GAhOkB,KAiOlBA,GApOe,KAqOfA,GAvOe,KAwOfA,GAjO6B,KAkO7BA,GAjO8B,KAkO9BA,GAhO4B,MAiO5BA,GA/N6B,MAgO7BA,GAjPe,KAmPfA,GAjPmB,KAkPnBA,GAhPkB,KAiPlBA,GAvPqB,KAwPrBA,GAtOuB,MAuOvBA,GA/OgB,KAgPhBA,GA/OsB,KAgPtBA,GAtPsB,KAuPtBA,GA3PsB,KA4PtBA,GA1PiB,KA4PjBA,GAlPuB,KAmPvBA,GAhPsB,KAiPtBA,GAIJ,SAA0BA,GAExB,OAAQmT,EAAanT,IA9PJ,KA8PUA,CAC7B,CA8CIyU,CAAgBd,EAAY7Z,EAAQA,EAAOe,OAAS,IAEtD,GAAIkZ,GAAkBvB,EAGpB,IAAKlM,EAAI,EAAGA,EAAIxM,EAAOe,OAAQqZ,GAAQ,MAAU5N,GAAK,EAAIA,IAAK,CAE7D,IAAK8M,EADLc,EAAOP,EAAY7Z,EAAQwM,IAEzB,OA3Ba,EA6BfkO,EAAQA,GAASlB,EAAYY,EAAMC,EAAUX,GAC7CW,EAAWD,CACb,KACK,CAEL,IAAK5N,EAAI,EAAGA,EAAIxM,EAAOe,OAAQqZ,GAAQ,MAAU5N,GAAK,EAAIA,IAAK,CAE7D,GA1UiB,MAyUjB4N,EAAOP,EAAY7Z,EAAQwM,IAEzB8N,GAAe,EAEXE,IACFD,EAAkBA,GAEf/N,EAAIiO,EAAoB,EAAIpC,GACM,MAAlCrY,EAAOya,EAAoB,GAC9BA,EAAoBjO,QAExB,IAAY8M,EAAYc,GACtB,OA/Ca,EAiDfM,EAAQA,GAASlB,EAAYY,EAAMC,EAAUX,GAC7CW,EAAWD,CACb,CAEAG,EAAkBA,GAAoBC,GACnChO,EAAIiO,EAAoB,EAAIpC,GACM,MAAlCrY,EAAOya,EAAoB,EAChC,CAIA,OAAKH,GAAiBC,EASlBL,EAAiB,GAAKH,EAAoB/Z,GArE3B,EA0Ed0Y,EA/QqB,IAkRnBD,EA7EY,EAHA,EA8EV8B,EA5EU,EADC,GAiEdG,GAAUhC,GAAgByB,EAAkBna,GApQxB,IAuQjByY,EAlEU,EAHA,EADD,CAkFpB,CAQA,SAASmC,EAAa3L,EAAOjP,EAAQoZ,EAAOyB,EAAOnB,GACjDzK,EAAM6L,gBACJ,GAAsB,IAAlB9a,EAAOe,OACT,OA9RsB,IA8RfkO,EAAMwJ,YAAsC,KAAO,KAE5D,IAAKxJ,EAAMsJ,oBACLZ,EAA2B/U,QAAQ5C,IAAkB4X,EAAyBlQ,KAAK1H,IACrF,OAlSoB,IAkSbiP,EAAMwJ,YAAuC,IAAMzY,EAAS,IAAQ,IAAMA,EAAS,IAI9F,IAAM+L,EAASkD,EAAMlD,OAASL,KAAKjG,IAAI,EAAG2T,GAQpCf,GAAiC,IAApBpJ,EAAMoJ,aAErB3M,KAAKjG,IAAIiG,KAAKa,IAAI0C,EAAMoJ,UAAW,IAAKpJ,EAAMoJ,UAAYtM,GAGxDkO,EAAiBY,GAEpB5L,EAAMgJ,WAAY,GAAMmB,GAASnK,EAAMgJ,UAK1C,OAAQ+B,EAAkBha,EAAQia,EAAgBhL,EAAMlD,OAAQsM,EAJhE,SAAwBrY,GACtB,OA7PN,SAAgCiP,EAAO9J,GACrC,IAAA,IAASrE,EAAQ,EAAGC,EAASkO,EAAMT,cAAczN,OAAQD,EAAQC,EAAQD,GAAS,EAGhF,GAFamO,EAAMT,cAAc1N,GAExBgC,QAAQqC,GACf,OAAO,EAIX,OAAO,CACT,CAmPa4V,CAAsB9L,EAAOjP,EACtC,EAGiBiP,EAAMwJ,YAAaxJ,EAAMyJ,cAAgBmC,EAAOnB,IAC/D,KA3Hc,EA4HZ,OAAO1Z,EACT,KA5He,EA6Hb,MAAO,IAAMA,EAAOiI,QAAQ,KAAM,MAAQ,IAC5C,KA7HgB,EA8Hd,MAAO,IAAM+S,EAAYhb,EAAQiP,EAAMlD,QACrCkP,EAAkBlC,EAAa/Y,EAAQ+L,IAC3C,KA/He,EAgIb,MAAO,IAAMiP,EAAYhb,EAAQiP,EAAMlD,QACrCkP,EAAkBlC,EA4B5B,SAAqB/Y,EAAQkb,GAK3B,IAWIC,EAGAxS,EAdEyS,EAAS,iBAGXlb,GACEmb,EAASrb,EAAO4C,QAAQ,MAC5ByY,GAAoB,IAAXA,EAAgBA,EAASrb,EAAOe,OACzCqa,EAAOE,UAAYD,EACZE,EAASvb,EAAOyG,MAAM,EAAG4U,GAASH,IAGvCM,EAAiC,OAAdxb,EAAO,IAA6B,MAAdA,EAAO,OAN9Cqb,EAWN,KAAQ1S,EAAQyS,EAAO5S,KAAKxI,IAAU,CACpC,IAAMqQ,EAAS1H,EAAM,GACflH,EAAOkH,EAAM,GAEnBwS,EAA4B,MAAZ1Z,EAAK,GACrBvB,GAAUmQ,GACLmL,GAAqBL,GAAyB,KAAT1Z,EAAsB,GAAP,MACvD8Z,EAAS9Z,EAAMyZ,GACjBM,EAAmBL,CACrB,CAEA,OAAOjb,CACT,CA5DyCub,CAAWzb,EAAQqY,GAAYtM,IAClE,KAjIe,EAkIb,MAAO,IA2Gf,SAAuB/L,GAIrB,IAHA,IAAIE,EAAS,GACTka,EAAO,EAEF5N,EAAI,EAAGA,EAAIxM,EAAOe,OAAQqZ,GAAQ,MAAU5N,GAAK,EAAIA,IAAK,CACjE4N,EAAOP,EAAY7Z,EAAQwM,GAC3B,IAAMkP,EAAYhE,EAAiB0C,IAE9BsB,GAAapC,EAAYc,IAC5Bla,GAAUF,EAAOwM,GACb4N,GAAQ,QAASla,GAAUF,EAAOwM,EAAI,KAE1CtM,GAAUwb,GAAa7D,EAAUuC,EAErC,CAEA,OAAOla,CACT,CA5HqByb,CAAa3b,GAAqB,IACjD,QACE,MAAM,IAAI4B,EAAc,0CAE9B,GACF,CAGA,SAASoZ,EAAahb,EAAQka,GAC5B,IAAM0B,EAAkB7B,EAAoB/Z,GAAU0D,OAAOwW,GAAkB,GAGzE2B,EAAqC,OAA9B7b,EAAOA,EAAOe,OAAS,GAIpC,OAAO6a,GAHMC,IAAuC,OAA9B7b,EAAOA,EAAOe,OAAS,IAA0B,OAAXf,GACvC,IAAO6b,EAAO,GAAK,KAEP,IACnC,CAGA,SAASZ,EAAmBjb,GAC1B,MAAqC,OAA9BA,EAAOA,EAAOe,OAAS,GAAcf,EAAOyG,MAAM,GAAG,GAAMzG,CACpE,CA0CA,SAASub,EAAU9Z,EAAMyZ,GACvB,GAAa,KAATzZ,GAA2B,MAAZA,EAAK,GAAY,OAAOA,EAgB3C,IAbA,IACIkH,EAGAiI,EAJEkL,EAAU,SAGZnL,EAAQ,EAERoL,EAAO,EACP7C,EAAO,EACPhZ,EAAS,GAMLyI,EAAQmT,EAAQtT,KAAK/G,KAC3ByX,EAAOvQ,EAAM7H,OAEF6P,EAAQuK,IACjBtK,EAAOmL,EAAOpL,EAASoL,EAAO7C,EAC9BhZ,GAAU,KAAOuB,EAAKgF,MAAMkK,EAAOC,GAEnCD,EAAQC,EAAM,GAEhBmL,EAAO7C,EAaT,OARAhZ,GAAU,KAENuB,EAAKV,OAAS4P,EAAQuK,GAASa,EAAOpL,EACxCzQ,GAAUuB,EAAKgF,MAAMkK,EAAOoL,GAAQ,KAAOta,EAAKgF,MAAMsV,EAAO,GAE7D7b,GAAUuB,EAAKgF,MAAMkK,GAGhBzQ,EAAOuG,MAAM,EACtB,CA8CA,SAASuV,EAAoB/M,EAAOmK,EAAO1T,EAAQvE,GAIjD,IAHA,IAAI2P,EAAU,GACRyB,EAAOtD,EAAMzM,IAEV1B,EAAQ,EAAGC,EAAS2E,EAAO3E,OAAQD,EAAQC,EAAQD,GAAS,EAAG,CACtE,IAAIwF,EAAQZ,EAAO5E,GAEfmO,EAAM0J,WACRrS,EAAQ2I,EAAM0J,SAAS7W,KAAK4D,EAAQhC,OAAO5C,GAAQwF,KAIjD2V,EAAUhN,EAAOmK,EAAQ,EAAG9S,GAAO,GAAM,GAAM,GAAO,SACpC,IAAVA,GACP2V,EAAUhN,EAAOmK,EAAQ,EAAG,MAAM,GAAM,GAAM,GAAO,MACnDjY,GAAuB,KAAZ2P,IACdA,GAAWqI,EAAiBlK,EAAOmK,IAGjCnK,EAAM6L,MAjlBO,KAilBoB7L,EAAM6L,KAAKhU,WAAW,GACzDgK,GAAW,IAEXA,GAAW,KAGbA,GAAW7B,EAAM6L,KAErB,CAEA7L,EAAMzM,IAAM+P,EACZtD,EAAM6L,KAAOhK,GAAW,IAC1B,CAkHA,SAASoL,EAAYjN,EAAOvJ,EAAQpB,GAGlC,IAFA,IAAMwS,EAAWxS,EAAW2K,EAAM2J,cAAgB3J,EAAMT,cAE/C1N,EAAQ,EAAGC,EAAS+V,EAAS/V,OAAQD,EAAQC,EAAQD,GAAS,EAAG,CACxE,IAAMyB,EAAOuU,EAAShW,GAEtB,IAAKyB,EAAKU,YAAcV,EAAKW,cACvBX,EAAKU,YAAkC,WAAlBhE,EAAOyG,IAAyBA,aAAkBnD,EAAKU,eAC5EV,EAAKW,WAAaX,EAAKW,UAAUwC,IAAU,CAW/C,GAVIpB,EACE/B,EAAKe,OAASf,EAAKa,cACrB6L,EAAMzM,IAAMD,EAAKa,cAAcsC,GAE/BuJ,EAAMzM,IAAMD,EAAKC,IAGnByM,EAAMzM,IAAM,IAGVD,EAAKY,UAAW,CAClB,IAAMK,EAAQyL,EAAMiJ,SAAS3V,EAAKC,MAAQD,EAAKc,aAE3CyN,OAAO,EACX,GAAuC,sBAAnCzG,EAAUvI,KAAKS,EAAKY,WACtB2N,EAAUvO,EAAKY,UAAUuC,EAAQlC,YACxB2G,EAAgBrI,KAAKS,EAAKY,UAAWK,GAG9C,MAAM,IAAI5B,EAAc,KAAOW,EAAKC,IAAM,+BAAiCgB,EAAQ,WAFnFsN,EAAUvO,EAAKY,UAAUK,GAAOkC,EAAQlC,EAG1C,CAEAyL,EAAM6L,KAAOhK,CACf,CAEA,OAAO,CACT,CACF,CAEA,OAAO,CACT,CAKA,SAASmL,EAAWhN,EAAOmK,EAAO1T,EAAQyW,EAAOhb,EAAS0Z,EAAOuB,GAC/DnN,EAAMzM,IAAM,KACZyM,EAAM6L,KAAOpV,EAERwW,EAAWjN,EAAOvJ,GAAQ,IAC7BwW,EAAWjN,EAAOvJ,GAAQ,GAG5B,IAAMnD,EAAO8H,EAAUvI,KAAKmN,EAAM6L,MAC5BpB,EAAUyC,EAEZA,IACFA,EAASlN,EAAMgJ,UAAY,GAAKhJ,EAAMgJ,UAAYmB,GAGpD,IACIiD,EACAC,EAFEC,EAAyB,oBAATha,GAAuC,mBAATA,EAapD,GATIga,IAEFD,GAA+B,KAD/BD,EAAiBpN,EAAM4J,WAAWjW,QAAQ8C,MAIzB,OAAduJ,EAAMzM,KAA8B,MAAdyM,EAAMzM,KAAgB8Z,GAA+B,IAAjBrN,EAAMlD,QAAgBqN,EAAQ,KAC3FjY,GAAU,GAGRmb,GAAarN,EAAM6J,eAAeuD,GACpCpN,EAAM6L,KAAO,QAAUuB,MAClB,CAIL,GAHIE,GAAiBD,IAAcrN,EAAM6J,eAAeuD,KACtDpN,EAAM6J,eAAeuD,IAAkB,GAE5B,oBAAT9Z,EACE4Z,GAA6C,IAAnCvb,OAAOC,KAAKoO,EAAM6L,MAAM/Z,SAvJ5C,SAA4BkO,EAAOmK,EAAO1T,EAAQvE,GAChD,IAAI2P,EAAU,GACRyB,EAAOtD,EAAMzM,IACbga,EAAgB5b,OAAOC,KAAK6E,GAGlC,IAAuB,IAAnBuJ,EAAMmJ,SAERoE,EAAcC,eACqB,mBAAnBxN,EAAMmJ,SAEtBoE,EAAcC,KAAKxN,EAAMmJ,eAC3B,GAAWnJ,EAAMmJ,SAEf,MAAM,IAAIxW,EAAc,4CAG1B,IAAA,IAASd,EAAQ,EAAGC,EAASyb,EAAczb,OAAQD,EAAQC,EAAQD,GAAS,EAAG,CAC7E,IAAI4b,EAAa,GAEZvb,GAAuB,KAAZ2P,IACd4L,GAAcvD,EAAiBlK,EAAOmK,IAGxC,IAAMuD,EAAYH,EAAc1b,GAC5B8b,EAAclX,EAAOiX,GAMzB,GAJI1N,EAAM0J,WACRiE,EAAc3N,EAAM0J,SAAS7W,KAAK4D,EAAQiX,EAAWC,IAGlDX,EAAUhN,EAAOmK,EAAQ,EAAGuD,GAAW,GAAM,GAAM,GAAxD,CAIA,IAAME,EAA8B,OAAd5N,EAAMzM,KAA8B,MAAdyM,EAAMzM,KAClCyM,EAAM6L,MAAQ7L,EAAM6L,KAAK/Z,OAAS,KAE9C8b,IACE5N,EAAM6L,MA9qBO,KA8qBoB7L,EAAM6L,KAAKhU,WAAW,GACzD4V,GAAc,IAEdA,GAAc,MAIlBA,GAAczN,EAAM6L,KAEhB+B,IACFH,GAAcvD,EAAiBlK,EAAOmK,IAGnC6C,EAAUhN,EAAOmK,EAAQ,EAAGwD,GAAa,EAAMC,KAIhD5N,EAAM6L,MA/rBS,KA+rBkB7L,EAAM6L,KAAKhU,WAAW,GACzD4V,GAAc,IAEdA,GAAc,KAMhB5L,GAHA4L,GAAczN,EAAM6L,KA7BpB,CAiCF,CAEA7L,EAAMzM,IAAM+P,EACZtD,EAAM6L,KAAOhK,GAAW,IAC1B,CAkFQgM,CAAkB7N,EAAOmK,EAAOnK,EAAM6L,KAAM3Z,GACxCmb,IACFrN,EAAM6L,KAAO,QAAUuB,EAAiBpN,EAAM6L,SAlMxD,SAA2B7L,EAAOmK,EAAO1T,GAKvC,IAJA,IAAIoL,EAAU,GACRyB,EAAOtD,EAAMzM,IACbga,EAAgB5b,OAAOC,KAAK6E,GAEzB5E,EAAQ,EAAGC,EAASyb,EAAczb,OAAQD,EAAQC,EAAQD,GAAS,EAAG,CAC7E,IAAI4b,EAAa,GACD,KAAZ5L,IAAgB4L,GAAc,MAE9BzN,EAAMuJ,eAAckE,GAAc,KAEtC,IAAMC,EAAYH,EAAc1b,GAC5B8b,EAAclX,EAAOiX,GAErB1N,EAAM0J,WACRiE,EAAc3N,EAAM0J,SAAS7W,KAAK4D,EAAQiX,EAAWC,IAGlDX,EAAUhN,EAAOmK,EAAOuD,GAAW,GAAO,KAI3C1N,EAAM6L,KAAK/Z,OAAS,OAAM2b,GAAc,MAE5CA,GAAczN,EAAM6L,MAAQ7L,EAAMuJ,aAAe,IAAM,IAAM,KAAOvJ,EAAMuJ,aAAe,GAAK,KAEzFyD,EAAUhN,EAAOmK,EAAOwD,GAAa,GAAO,KAOjD9L,GAHA4L,GAAczN,EAAM6L,MAItB,CAEA7L,EAAMzM,IAAM+P,EACZtD,EAAM6L,KAAO,IAAMhK,EAAU,GAC/B,CA+JQiM,CAAiB9N,EAAOmK,EAAOnK,EAAM6L,MACjCwB,IACFrN,EAAM6L,KAAO,QAAUuB,EAAiB,IAAMpN,EAAM6L,YAG1D,GAAoB,mBAATvY,EACL4Z,GAAgC,IAAtBlN,EAAM6L,KAAK/Z,QACnBkO,EAAM8I,gBAAkBqE,GAAchD,EAAQ,EAChD4C,EAAmB/M,EAAOmK,EAAQ,EAAGnK,EAAM6L,KAAM3Z,GAEjD6a,EAAmB/M,EAAOmK,EAAOnK,EAAM6L,KAAM3Z,GAE3Cmb,IACFrN,EAAM6L,KAAO,QAAUuB,EAAiBpN,EAAM6L,SA3QxD,SAA4B7L,EAAOmK,EAAO1T,GAIxC,IAHA,IAAIoL,EAAU,GACRyB,EAAOtD,EAAMzM,IAEV1B,EAAQ,EAAGC,EAAS2E,EAAO3E,OAAQD,EAAQC,EAAQD,GAAS,EAAG,CACtE,IAAIwF,EAAQZ,EAAO5E,GAEfmO,EAAM0J,WACRrS,EAAQ2I,EAAM0J,SAAS7W,KAAK4D,EAAQhC,OAAO5C,GAAQwF,KAIjD2V,EAAUhN,EAAOmK,EAAO9S,GAAO,GAAO,SACpB,IAAVA,GACP2V,EAAUhN,EAAOmK,EAAO,MAAM,GAAO,MACxB,KAAZtI,IAAgBA,GAAW,KAAQ7B,EAAMuJ,aAAqB,GAAN,MAC5D1H,GAAW7B,EAAM6L,KAErB,CAEA7L,EAAMzM,IAAM+P,EACZtD,EAAM6L,KAAO,IAAMhK,EAAU,GAC/B,CAwPQkM,CAAkB/N,EAAOmK,EAAOnK,EAAM6L,MAClCwB,IACFrN,EAAM6L,KAAO,QAAUuB,EAAiB,IAAMpN,EAAM6L,WAG1D,IAAoB,oBAATvY,EAIX,IAAoB,uBAATA,EACT,OAAO,EAEP,GAAI0M,EAAM+I,YAAa,OAAO,EAC9B,MAAM,IAAIpW,EAAc,0CAA4CW,EACtE,CARoB,MAAd0M,EAAMzM,KACRoY,EAAY3L,EAAOA,EAAM6L,KAAM1B,EAAOyB,EAAOnB,EAOjD,CAEA,GAAkB,OAAdzK,EAAMzM,KAA8B,MAAdyM,EAAMzM,IAAa,CAc3C,IAAIya,EAASC,UACM,MAAjBjO,EAAMzM,IAAI,GAAayM,EAAMzM,IAAIiE,MAAM,GAAKwI,EAAMzM,KAClDyF,QAAQ,KAAM,OAGdgV,EADmB,MAAjBhO,EAAMzM,IAAI,GACH,IAAMya,EACkB,uBAAxBA,EAAOxW,MAAM,EAAG,IAChB,KAAOwW,EAAOxW,MAAM,IAEpB,KAAOwW,EAAS,IAG3BhO,EAAM6L,KAAOmC,EAAS,IAAMhO,EAAM6L,IACpC,CACF,CAEA,OAAO,CACT,CAEA,SAASqC,EAAwBzX,EAAQuJ,GACvC,IAAMmO,EAAU,GACVC,EAAoB,GAE1BC,EAAY5X,EAAQ0X,EAASC,GAG7B,IADA,IAAMtc,EAASsc,EAAkBtc,OACxBD,EAAQ,EAAGA,EAAQC,EAAQD,GAAS,EAC3CmO,EAAM4J,WAAWtU,KAAK6Y,EAAQC,EAAkBvc,KAElDmO,EAAM6J,eAAiB,IAAIjZ,MAAMkB,EACnC,CAEA,SAASuc,EAAa5X,EAAQ0X,EAASC,GACrC,GAAe,OAAX3X,GAAqC,WAAlBzG,EAAOyG,GAAqB,CACjD,IAAM5E,EAAQsc,EAAQxa,QAAQ8C,GAC9B,IAAc,IAAV5E,GACuC,IAArCuc,EAAkBza,QAAQ9B,IAC5Buc,EAAkB9Y,KAAKzD,QAKzB,GAFAsc,EAAQ7Y,KAAKmB,GAET7F,MAAMC,QAAQ4F,GAChB,IAAA,IAAS8G,EAAI,EAAGzL,EAAS2E,EAAO3E,OAAQyL,EAAIzL,EAAQyL,GAAK,EACvD8Q,EAAY5X,EAAO8G,GAAI4Q,EAASC,QAKlC,IAFA,IAAMb,EAAgB5b,OAAOC,KAAK6E,GAEzB8G,EAAI,EAAGzL,EAASyb,EAAczb,OAAQyL,EAAIzL,EAAQyL,GAAK,EAC9D8Q,EAAY5X,EAAO8W,EAAchQ,IAAK4Q,EAASC,EAIvD,CACF,QAoBAE,GAAAzC,KAlBA,SAAehR,EAAOrH,GAGpB,IAAMwM,EAAQ,IAAIhB,EAFlBxL,EAAUA,GAAW,CAAA,GAIhBwM,EAAMqJ,QAAQ6E,EAAuBrT,EAAOmF,GAEjD,IAAI3I,EAAQwD,EAMZ,OAJImF,EAAM0J,WACRrS,EAAQ2I,EAAM0J,SAAS7W,KAAK,CAAE,GAAIwE,GAAS,GAAIA,IAG7C2V,EAAUhN,EAAO,EAAG3I,GAAO,GAAM,GAAc2I,EAAM6L,KAAO,KAEzD,EACT,6CCp6BA,IAAMxD,EAASlV,KACTmb,EAAS3Z,KAEf,SAAS4Z,EAASC,EAAMC,GACtB,OAAO,WACL,MAAM,IAAI7b,MAAM,iBAAmB4b,EAAO,sCAC1BC,EAAK,2CAEzB,QAEAC,EAAAha,KAAsB2B,IACtBqY,EAAAxZ,OAAwBoB,IACxBoY,EAAAC,gBAAiCzV,KACjCwV,EAAAE,YAA6B9S,KAC7B4S,EAAAG,YAA6B9S,KAC7B2S,EAAAlR,eAAgCsR,KAChCJ,EAAAnG,KAAsBF,EAAOE,KAC7BmG,EAAApG,QAAyBD,EAAOC,QAChCoG,EAAA7C,KAAsByC,EAAOzC,KAC7B6C,EAAA/b,cAA+Boc,IAG/BL,EAAAM,MAAuB,CACrBlX,OAAQmX,KACRzW,MAAO0W,KACPzb,IAAK0b,KACLC,KAAMC,KACN1T,MAAO2T,KACP1T,IAAK2T,KACLjW,UAAWkW,KACXzY,KAAM0Y,KACN/X,IAAKgY,KACLnV,MAAOoV,KACPtU,KAAMuU,KACNzZ,IAAK0Z,KACL3Z,IAAK4Z,KAIPpB,EAAAqB,SAA0BxB,EAAQ,WAAY,QAC9CG,EAAAsB,YAA6BzB,EAAQ,cAAe,WACpDG,EAAAuB,SAA0B1B,EAAQ,WAAY,cCxC5C7Z,GAcEwb,GAdFxb,KACAQ,GAaEgb,GAbFhb,OACAyZ,GAYEuB,GAZFvB,gBACAC,GAWEsB,GAXFtB,YACAC,GAUEqB,GAVFrB,YACArR,GASE0S,GATF1S,eACA+K,GAQE2H,GARF3H,KACAD,GAOE4H,GAPF5H,QACAuD,GAMEqE,GANFrE,KACAlZ,GAKEud,GALFvd,cACAqc,GAIEkB,GAJFlB,MACAe,GAGEG,GAHFH,SACAC,GAEEE,GAFFF,YACAC,GACEC,GADFD"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.mjs b/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.mjs deleted file mode 100644 index bb0cee1..0000000 --- a/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.mjs +++ /dev/null @@ -1,3082 +0,0 @@ -function getDefaultExportFromCjs(x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x; -} -var jsYaml = {}; -var loader = {}; -var common = {}; -var hasRequiredCommon; -function requireCommon() { - if (hasRequiredCommon) return common; - hasRequiredCommon = 1; - function isNothing(subject) { - return typeof subject === "undefined" || subject === null; - } - function isObject(subject) { - return typeof subject === "object" && subject !== null; - } - function toArray(sequence) { - if (Array.isArray(sequence)) return sequence; - else if (isNothing(sequence)) return []; - return [sequence]; - } - function extend(target, source) { - if (source) { - const sourceKeys = Object.keys(source); - for (let index = 0, length = sourceKeys.length; index < length; index += 1) { - const key = sourceKeys[index]; - target[key] = source[key]; - } - } - return target; - } - function repeat(string, count) { - let result = ""; - for (let cycle = 0; cycle < count; cycle += 1) { - result += string; - } - return result; - } - function isNegativeZero(number) { - return number === 0 && Number.NEGATIVE_INFINITY === 1 / number; - } - common.isNothing = isNothing; - common.isObject = isObject; - common.toArray = toArray; - common.repeat = repeat; - common.isNegativeZero = isNegativeZero; - common.extend = extend; - return common; -} -var exception; -var hasRequiredException; -function requireException() { - if (hasRequiredException) return exception; - hasRequiredException = 1; - function formatError(exception2, compact) { - let where = ""; - const message = exception2.reason || "(unknown reason)"; - if (!exception2.mark) return message; - if (exception2.mark.name) { - where += 'in "' + exception2.mark.name + '" '; - } - where += "(" + (exception2.mark.line + 1) + ":" + (exception2.mark.column + 1) + ")"; - if (!compact && exception2.mark.snippet) { - where += "\n\n" + exception2.mark.snippet; - } - return message + " " + where; - } - function YAMLException2(reason, mark) { - Error.call(this); - this.name = "YAMLException"; - this.reason = reason; - this.mark = mark; - this.message = formatError(this, false); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = new Error().stack || ""; - } - } - YAMLException2.prototype = Object.create(Error.prototype); - YAMLException2.prototype.constructor = YAMLException2; - YAMLException2.prototype.toString = function toString(compact) { - return this.name + ": " + formatError(this, compact); - }; - exception = YAMLException2; - return exception; -} -var snippet; -var hasRequiredSnippet; -function requireSnippet() { - if (hasRequiredSnippet) return snippet; - hasRequiredSnippet = 1; - const common2 = requireCommon(); - function getLine(buffer, lineStart, lineEnd, position, maxLineLength) { - let head = ""; - let tail = ""; - const maxHalfLength = Math.floor(maxLineLength / 2) - 1; - if (position - lineStart > maxHalfLength) { - head = " ... "; - lineStart = position - maxHalfLength + head.length; - } - if (lineEnd - position > maxHalfLength) { - tail = " ..."; - lineEnd = position + maxHalfLength - tail.length; - } - return { - str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, "→") + tail, - pos: position - lineStart + head.length - // relative position - }; - } - function padStart(string, max) { - return common2.repeat(" ", max - string.length) + string; - } - function makeSnippet(mark, options) { - options = Object.create(options || null); - if (!mark.buffer) return null; - if (!options.maxLength) options.maxLength = 79; - if (typeof options.indent !== "number") options.indent = 1; - if (typeof options.linesBefore !== "number") options.linesBefore = 3; - if (typeof options.linesAfter !== "number") options.linesAfter = 2; - const re = /\r?\n|\r|\0/g; - const lineStarts = [0]; - const lineEnds = []; - let match; - let foundLineNo = -1; - while (match = re.exec(mark.buffer)) { - lineEnds.push(match.index); - lineStarts.push(match.index + match[0].length); - if (mark.position <= match.index && foundLineNo < 0) { - foundLineNo = lineStarts.length - 2; - } - } - if (foundLineNo < 0) foundLineNo = lineStarts.length - 1; - let result = ""; - const lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length; - const maxLineLength = options.maxLength - (options.indent + lineNoLength + 3); - for (let i = 1; i <= options.linesBefore; i++) { - if (foundLineNo - i < 0) break; - const line2 = getLine( - mark.buffer, - lineStarts[foundLineNo - i], - lineEnds[foundLineNo - i], - mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), - maxLineLength - ); - result = common2.repeat(" ", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + " | " + line2.str + "\n" + result; - } - const line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength); - result += common2.repeat(" ", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + " | " + line.str + "\n"; - result += common2.repeat("-", options.indent + lineNoLength + 3 + line.pos) + "^\n"; - for (let i = 1; i <= options.linesAfter; i++) { - if (foundLineNo + i >= lineEnds.length) break; - const line2 = getLine( - mark.buffer, - lineStarts[foundLineNo + i], - lineEnds[foundLineNo + i], - mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), - maxLineLength - ); - result += common2.repeat(" ", options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + " | " + line2.str + "\n"; - } - return result.replace(/\n$/, ""); - } - snippet = makeSnippet; - return snippet; -} -var type; -var hasRequiredType; -function requireType() { - if (hasRequiredType) return type; - hasRequiredType = 1; - const YAMLException2 = requireException(); - const TYPE_CONSTRUCTOR_OPTIONS = [ - "kind", - "multi", - "resolve", - "construct", - "instanceOf", - "predicate", - "represent", - "representName", - "defaultStyle", - "styleAliases" - ]; - const YAML_NODE_KINDS = [ - "scalar", - "sequence", - "mapping" - ]; - function compileStyleAliases(map2) { - const result = {}; - if (map2 !== null) { - Object.keys(map2).forEach(function(style) { - map2[style].forEach(function(alias) { - result[String(alias)] = style; - }); - }); - } - return result; - } - function Type2(tag, options) { - options = options || {}; - Object.keys(options).forEach(function(name) { - if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { - throw new YAMLException2('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); - } - }); - this.options = options; - this.tag = tag; - this.kind = options["kind"] || null; - this.resolve = options["resolve"] || function() { - return true; - }; - this.construct = options["construct"] || function(data) { - return data; - }; - this.instanceOf = options["instanceOf"] || null; - this.predicate = options["predicate"] || null; - this.represent = options["represent"] || null; - this.representName = options["representName"] || null; - this.defaultStyle = options["defaultStyle"] || null; - this.multi = options["multi"] || false; - this.styleAliases = compileStyleAliases(options["styleAliases"] || null); - if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { - throw new YAMLException2('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); - } - } - type = Type2; - return type; -} -var schema; -var hasRequiredSchema; -function requireSchema() { - if (hasRequiredSchema) return schema; - hasRequiredSchema = 1; - const YAMLException2 = requireException(); - const Type2 = requireType(); - function compileList(schema2, name) { - const result = []; - schema2[name].forEach(function(currentType) { - let newIndex = result.length; - result.forEach(function(previousType, previousIndex) { - if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) { - newIndex = previousIndex; - } - }); - result[newIndex] = currentType; - }); - return result; - } - function compileMap() { - const result = { - scalar: {}, - sequence: {}, - mapping: {}, - fallback: {}, - multi: { - scalar: [], - sequence: [], - mapping: [], - fallback: [] - } - }; - function collectType(type2) { - if (type2.multi) { - result.multi[type2.kind].push(type2); - result.multi["fallback"].push(type2); - } else { - result[type2.kind][type2.tag] = result["fallback"][type2.tag] = type2; - } - } - for (let index = 0, length = arguments.length; index < length; index += 1) { - arguments[index].forEach(collectType); - } - return result; - } - function Schema2(definition) { - return this.extend(definition); - } - Schema2.prototype.extend = function extend(definition) { - let implicit = []; - let explicit = []; - if (definition instanceof Type2) { - explicit.push(definition); - } else if (Array.isArray(definition)) { - explicit = explicit.concat(definition); - } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) { - if (definition.implicit) implicit = implicit.concat(definition.implicit); - if (definition.explicit) explicit = explicit.concat(definition.explicit); - } else { - throw new YAMLException2("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })"); - } - implicit.forEach(function(type2) { - if (!(type2 instanceof Type2)) { - throw new YAMLException2("Specified list of YAML types (or a single Type object) contains a non-Type object."); - } - if (type2.loadKind && type2.loadKind !== "scalar") { - throw new YAMLException2("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported."); - } - if (type2.multi) { - throw new YAMLException2("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit."); - } - }); - explicit.forEach(function(type2) { - if (!(type2 instanceof Type2)) { - throw new YAMLException2("Specified list of YAML types (or a single Type object) contains a non-Type object."); - } - }); - const result = Object.create(Schema2.prototype); - result.implicit = (this.implicit || []).concat(implicit); - result.explicit = (this.explicit || []).concat(explicit); - result.compiledImplicit = compileList(result, "implicit"); - result.compiledExplicit = compileList(result, "explicit"); - result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit); - return result; - }; - schema = Schema2; - return schema; -} -var str; -var hasRequiredStr; -function requireStr() { - if (hasRequiredStr) return str; - hasRequiredStr = 1; - const Type2 = requireType(); - str = new Type2("tag:yaml.org,2002:str", { - kind: "scalar", - construct: function(data) { - return data !== null ? data : ""; - } - }); - return str; -} -var seq; -var hasRequiredSeq; -function requireSeq() { - if (hasRequiredSeq) return seq; - hasRequiredSeq = 1; - const Type2 = requireType(); - seq = new Type2("tag:yaml.org,2002:seq", { - kind: "sequence", - construct: function(data) { - return data !== null ? data : []; - } - }); - return seq; -} -var map; -var hasRequiredMap; -function requireMap() { - if (hasRequiredMap) return map; - hasRequiredMap = 1; - const Type2 = requireType(); - map = new Type2("tag:yaml.org,2002:map", { - kind: "mapping", - construct: function(data) { - return data !== null ? data : {}; - } - }); - return map; -} -var failsafe; -var hasRequiredFailsafe; -function requireFailsafe() { - if (hasRequiredFailsafe) return failsafe; - hasRequiredFailsafe = 1; - const Schema2 = requireSchema(); - failsafe = new Schema2({ - explicit: [ - requireStr(), - requireSeq(), - requireMap() - ] - }); - return failsafe; -} -var _null; -var hasRequired_null; -function require_null() { - if (hasRequired_null) return _null; - hasRequired_null = 1; - const Type2 = requireType(); - function resolveYamlNull(data) { - if (data === null) return true; - const max = data.length; - return max === 1 && data === "~" || max === 4 && (data === "null" || data === "Null" || data === "NULL"); - } - function constructYamlNull() { - return null; - } - function isNull(object) { - return object === null; - } - _null = new Type2("tag:yaml.org,2002:null", { - kind: "scalar", - resolve: resolveYamlNull, - construct: constructYamlNull, - predicate: isNull, - represent: { - canonical: function() { - return "~"; - }, - lowercase: function() { - return "null"; - }, - uppercase: function() { - return "NULL"; - }, - camelcase: function() { - return "Null"; - }, - empty: function() { - return ""; - } - }, - defaultStyle: "lowercase" - }); - return _null; -} -var bool; -var hasRequiredBool; -function requireBool() { - if (hasRequiredBool) return bool; - hasRequiredBool = 1; - const Type2 = requireType(); - function resolveYamlBoolean(data) { - if (data === null) return false; - const max = data.length; - return max === 4 && (data === "true" || data === "True" || data === "TRUE") || max === 5 && (data === "false" || data === "False" || data === "FALSE"); - } - function constructYamlBoolean(data) { - return data === "true" || data === "True" || data === "TRUE"; - } - function isBoolean(object) { - return Object.prototype.toString.call(object) === "[object Boolean]"; - } - bool = new Type2("tag:yaml.org,2002:bool", { - kind: "scalar", - resolve: resolveYamlBoolean, - construct: constructYamlBoolean, - predicate: isBoolean, - represent: { - lowercase: function(object) { - return object ? "true" : "false"; - }, - uppercase: function(object) { - return object ? "TRUE" : "FALSE"; - }, - camelcase: function(object) { - return object ? "True" : "False"; - } - }, - defaultStyle: "lowercase" - }); - return bool; -} -var int; -var hasRequiredInt; -function requireInt() { - if (hasRequiredInt) return int; - hasRequiredInt = 1; - const common2 = requireCommon(); - const Type2 = requireType(); - function isHexCode(c) { - return c >= 48 && c <= 57 || c >= 65 && c <= 70 || c >= 97 && c <= 102; - } - function isOctCode(c) { - return c >= 48 && c <= 55; - } - function isDecCode(c) { - return c >= 48 && c <= 57; - } - function resolveYamlInteger(data) { - if (data === null) return false; - const max = data.length; - let index = 0; - let hasDigits = false; - if (!max) return false; - let ch = data[index]; - if (ch === "-" || ch === "+") { - ch = data[++index]; - } - if (ch === "0") { - if (index + 1 === max) return true; - ch = data[++index]; - if (ch === "b") { - index++; - for (; index < max; index++) { - ch = data[index]; - if (ch !== "0" && ch !== "1") return false; - hasDigits = true; - } - return hasDigits && isFinite(parseYamlInteger(data)); - } - if (ch === "x") { - index++; - for (; index < max; index++) { - if (!isHexCode(data.charCodeAt(index))) return false; - hasDigits = true; - } - return hasDigits && isFinite(parseYamlInteger(data)); - } - if (ch === "o") { - index++; - for (; index < max; index++) { - if (!isOctCode(data.charCodeAt(index))) return false; - hasDigits = true; - } - return hasDigits && isFinite(parseYamlInteger(data)); - } - } - for (; index < max; index++) { - if (!isDecCode(data.charCodeAt(index))) { - return false; - } - hasDigits = true; - } - if (!hasDigits) return false; - return isFinite(parseYamlInteger(data)); - } - function parseYamlInteger(data) { - let value = data; - let sign = 1; - let ch = value[0]; - if (ch === "-" || ch === "+") { - if (ch === "-") sign = -1; - value = value.slice(1); - ch = value[0]; - } - if (value === "0") return 0; - if (ch === "0") { - if (value[1] === "b") return sign * parseInt(value.slice(2), 2); - if (value[1] === "x") return sign * parseInt(value.slice(2), 16); - if (value[1] === "o") return sign * parseInt(value.slice(2), 8); - } - return sign * parseInt(value, 10); - } - function constructYamlInteger(data) { - return parseYamlInteger(data); - } - function isInteger(object) { - return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 === 0 && !common2.isNegativeZero(object)); - } - int = new Type2("tag:yaml.org,2002:int", { - kind: "scalar", - resolve: resolveYamlInteger, - construct: constructYamlInteger, - predicate: isInteger, - represent: { - binary: function(obj) { - return obj >= 0 ? "0b" + obj.toString(2) : "-0b" + obj.toString(2).slice(1); - }, - octal: function(obj) { - return obj >= 0 ? "0o" + obj.toString(8) : "-0o" + obj.toString(8).slice(1); - }, - decimal: function(obj) { - return obj.toString(10); - }, - hexadecimal: function(obj) { - return obj >= 0 ? "0x" + obj.toString(16).toUpperCase() : "-0x" + obj.toString(16).toUpperCase().slice(1); - } - }, - defaultStyle: "decimal", - styleAliases: { - binary: [2, "bin"], - octal: [8, "oct"], - decimal: [10, "dec"], - hexadecimal: [16, "hex"] - } - }); - return int; -} -var float; -var hasRequiredFloat; -function requireFloat() { - if (hasRequiredFloat) return float; - hasRequiredFloat = 1; - const common2 = requireCommon(); - const Type2 = requireType(); - const YAML_FLOAT_PATTERN = new RegExp( - // 2.5e4, 2.5 and integers - "^(?:[-+]?(?:[0-9]+)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$" - ); - const YAML_FLOAT_SPECIAL_PATTERN = new RegExp( - "^(?:[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$" - ); - function resolveYamlFloat(data) { - if (data === null) return false; - if (!YAML_FLOAT_PATTERN.test(data)) { - return false; - } - if (isFinite(parseFloat(data, 10))) { - return true; - } - return YAML_FLOAT_SPECIAL_PATTERN.test(data); - } - function constructYamlFloat(data) { - let value = data.toLowerCase(); - const sign = value[0] === "-" ? -1 : 1; - if ("+-".indexOf(value[0]) >= 0) { - value = value.slice(1); - } - if (value === ".inf") { - return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; - } else if (value === ".nan") { - return NaN; - } - return sign * parseFloat(value, 10); - } - const SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; - function representYamlFloat(object, style) { - if (isNaN(object)) { - switch (style) { - case "lowercase": - return ".nan"; - case "uppercase": - return ".NAN"; - case "camelcase": - return ".NaN"; - } - } else if (Number.POSITIVE_INFINITY === object) { - switch (style) { - case "lowercase": - return ".inf"; - case "uppercase": - return ".INF"; - case "camelcase": - return ".Inf"; - } - } else if (Number.NEGATIVE_INFINITY === object) { - switch (style) { - case "lowercase": - return "-.inf"; - case "uppercase": - return "-.INF"; - case "camelcase": - return "-.Inf"; - } - } else if (common2.isNegativeZero(object)) { - return "-0.0"; - } - const res = object.toString(10); - return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res; - } - function isFloat(object) { - return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 !== 0 || common2.isNegativeZero(object)); - } - float = new Type2("tag:yaml.org,2002:float", { - kind: "scalar", - resolve: resolveYamlFloat, - construct: constructYamlFloat, - predicate: isFloat, - represent: representYamlFloat, - defaultStyle: "lowercase" - }); - return float; -} -var json; -var hasRequiredJson; -function requireJson() { - if (hasRequiredJson) return json; - hasRequiredJson = 1; - json = requireFailsafe().extend({ - implicit: [ - require_null(), - requireBool(), - requireInt(), - requireFloat() - ] - }); - return json; -} -var core; -var hasRequiredCore; -function requireCore() { - if (hasRequiredCore) return core; - hasRequiredCore = 1; - core = requireJson(); - return core; -} -var timestamp; -var hasRequiredTimestamp; -function requireTimestamp() { - if (hasRequiredTimestamp) return timestamp; - hasRequiredTimestamp = 1; - const Type2 = requireType(); - const YAML_DATE_REGEXP = new RegExp( - "^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$" - ); - const YAML_TIMESTAMP_REGEXP = new RegExp( - "^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$" - ); - function resolveYamlTimestamp(data) { - if (data === null) return false; - if (YAML_DATE_REGEXP.exec(data) !== null) return true; - if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; - return false; - } - function constructYamlTimestamp(data) { - let fraction = 0; - let delta = null; - let match = YAML_DATE_REGEXP.exec(data); - if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); - if (match === null) throw new Error("Date resolve error"); - const year = +match[1]; - const month = +match[2] - 1; - const day = +match[3]; - if (!match[4]) { - return new Date(Date.UTC(year, month, day)); - } - const hour = +match[4]; - const minute = +match[5]; - const second = +match[6]; - if (match[7]) { - fraction = match[7].slice(0, 3); - while (fraction.length < 3) { - fraction += "0"; - } - fraction = +fraction; - } - if (match[9]) { - const tzHour = +match[10]; - const tzMinute = +(match[11] || 0); - delta = (tzHour * 60 + tzMinute) * 6e4; - if (match[9] === "-") delta = -delta; - } - const date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); - if (delta) date.setTime(date.getTime() - delta); - return date; - } - function representYamlTimestamp(object) { - return object.toISOString(); - } - timestamp = new Type2("tag:yaml.org,2002:timestamp", { - kind: "scalar", - resolve: resolveYamlTimestamp, - construct: constructYamlTimestamp, - instanceOf: Date, - represent: representYamlTimestamp - }); - return timestamp; -} -var merge; -var hasRequiredMerge; -function requireMerge() { - if (hasRequiredMerge) return merge; - hasRequiredMerge = 1; - const Type2 = requireType(); - function resolveYamlMerge(data) { - return data === "<<" || data === null; - } - merge = new Type2("tag:yaml.org,2002:merge", { - kind: "scalar", - resolve: resolveYamlMerge - }); - return merge; -} -var binary; -var hasRequiredBinary; -function requireBinary() { - if (hasRequiredBinary) return binary; - hasRequiredBinary = 1; - const Type2 = requireType(); - const BASE64_MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r"; - function resolveYamlBinary(data) { - if (data === null) return false; - let bitlen = 0; - const max = data.length; - const map2 = BASE64_MAP; - for (let idx = 0; idx < max; idx++) { - const code = map2.indexOf(data.charAt(idx)); - if (code > 64) continue; - if (code < 0) return false; - bitlen += 6; - } - return bitlen % 8 === 0; - } - function constructYamlBinary(data) { - const input = data.replace(/[\r\n=]/g, ""); - const max = input.length; - const map2 = BASE64_MAP; - let bits = 0; - const result = []; - for (let idx = 0; idx < max; idx++) { - if (idx % 4 === 0 && idx) { - result.push(bits >> 16 & 255); - result.push(bits >> 8 & 255); - result.push(bits & 255); - } - bits = bits << 6 | map2.indexOf(input.charAt(idx)); - } - const tailbits = max % 4 * 6; - if (tailbits === 0) { - result.push(bits >> 16 & 255); - result.push(bits >> 8 & 255); - result.push(bits & 255); - } else if (tailbits === 18) { - result.push(bits >> 10 & 255); - result.push(bits >> 2 & 255); - } else if (tailbits === 12) { - result.push(bits >> 4 & 255); - } - return new Uint8Array(result); - } - function representYamlBinary(object) { - let result = ""; - let bits = 0; - const max = object.length; - const map2 = BASE64_MAP; - for (let idx = 0; idx < max; idx++) { - if (idx % 3 === 0 && idx) { - result += map2[bits >> 18 & 63]; - result += map2[bits >> 12 & 63]; - result += map2[bits >> 6 & 63]; - result += map2[bits & 63]; - } - bits = (bits << 8) + object[idx]; - } - const tail = max % 3; - if (tail === 0) { - result += map2[bits >> 18 & 63]; - result += map2[bits >> 12 & 63]; - result += map2[bits >> 6 & 63]; - result += map2[bits & 63]; - } else if (tail === 2) { - result += map2[bits >> 10 & 63]; - result += map2[bits >> 4 & 63]; - result += map2[bits << 2 & 63]; - result += map2[64]; - } else if (tail === 1) { - result += map2[bits >> 2 & 63]; - result += map2[bits << 4 & 63]; - result += map2[64]; - result += map2[64]; - } - return result; - } - function isBinary(obj) { - return Object.prototype.toString.call(obj) === "[object Uint8Array]"; - } - binary = new Type2("tag:yaml.org,2002:binary", { - kind: "scalar", - resolve: resolveYamlBinary, - construct: constructYamlBinary, - predicate: isBinary, - represent: representYamlBinary - }); - return binary; -} -var omap; -var hasRequiredOmap; -function requireOmap() { - if (hasRequiredOmap) return omap; - hasRequiredOmap = 1; - const Type2 = requireType(); - const _hasOwnProperty = Object.prototype.hasOwnProperty; - const _toString = Object.prototype.toString; - function resolveYamlOmap(data) { - if (data === null) return true; - const objectKeys = {}; - const object = data; - for (let index = 0, length = object.length; index < length; index += 1) { - const pair = object[index]; - let pairHasKey = false; - if (_toString.call(pair) !== "[object Object]") return false; - let pairKey; - for (pairKey in pair) { - if (_hasOwnProperty.call(pair, pairKey)) { - if (!pairHasKey) pairHasKey = true; - else return false; - } - } - if (!pairHasKey) return false; - if (_hasOwnProperty.call(objectKeys, pairKey)) return false; - Object.defineProperty(objectKeys, pairKey, { value: true }); - } - return true; - } - function constructYamlOmap(data) { - return data !== null ? data : []; - } - omap = new Type2("tag:yaml.org,2002:omap", { - kind: "sequence", - resolve: resolveYamlOmap, - construct: constructYamlOmap - }); - return omap; -} -var pairs; -var hasRequiredPairs; -function requirePairs() { - if (hasRequiredPairs) return pairs; - hasRequiredPairs = 1; - const Type2 = requireType(); - const _toString = Object.prototype.toString; - function resolveYamlPairs(data) { - if (data === null) return true; - const object = data; - const result = new Array(object.length); - for (let index = 0, length = object.length; index < length; index += 1) { - const pair = object[index]; - if (_toString.call(pair) !== "[object Object]") return false; - const keys = Object.keys(pair); - if (keys.length !== 1) return false; - result[index] = [keys[0], pair[keys[0]]]; - } - return true; - } - function constructYamlPairs(data) { - if (data === null) return []; - const object = data; - const result = new Array(object.length); - for (let index = 0, length = object.length; index < length; index += 1) { - const pair = object[index]; - const keys = Object.keys(pair); - result[index] = [keys[0], pair[keys[0]]]; - } - return result; - } - pairs = new Type2("tag:yaml.org,2002:pairs", { - kind: "sequence", - resolve: resolveYamlPairs, - construct: constructYamlPairs - }); - return pairs; -} -var set; -var hasRequiredSet; -function requireSet() { - if (hasRequiredSet) return set; - hasRequiredSet = 1; - const Type2 = requireType(); - const _hasOwnProperty = Object.prototype.hasOwnProperty; - function resolveYamlSet(data) { - if (data === null) return true; - const object = data; - for (const key in object) { - if (_hasOwnProperty.call(object, key)) { - if (object[key] !== null) return false; - } - } - return true; - } - function constructYamlSet(data) { - return data !== null ? data : {}; - } - set = new Type2("tag:yaml.org,2002:set", { - kind: "mapping", - resolve: resolveYamlSet, - construct: constructYamlSet - }); - return set; -} -var _default; -var hasRequired_default; -function require_default() { - if (hasRequired_default) return _default; - hasRequired_default = 1; - _default = requireCore().extend({ - implicit: [ - requireTimestamp(), - requireMerge() - ], - explicit: [ - requireBinary(), - requireOmap(), - requirePairs(), - requireSet() - ] - }); - return _default; -} -var hasRequiredLoader; -function requireLoader() { - if (hasRequiredLoader) return loader; - hasRequiredLoader = 1; - const common2 = requireCommon(); - const YAMLException2 = requireException(); - const makeSnippet = requireSnippet(); - const DEFAULT_SCHEMA2 = require_default(); - const _hasOwnProperty = Object.prototype.hasOwnProperty; - const CONTEXT_FLOW_IN = 1; - const CONTEXT_FLOW_OUT = 2; - const CONTEXT_BLOCK_IN = 3; - const CONTEXT_BLOCK_OUT = 4; - const CHOMPING_CLIP = 1; - const CHOMPING_STRIP = 2; - const CHOMPING_KEEP = 3; - const PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; - const PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; - const PATTERN_FLOW_INDICATORS = /[,\[\]{}]/; - const PATTERN_TAG_HANDLE = /^(?:!|!!|![0-9A-Za-z-]+!)$/; - const PATTERN_TAG_URI = /^(?:!|[^,\[\]{}])(?:%[0-9a-f]{2}|[0-9a-z\-#;/?:@&=+$,_.!~*'()\[\]])*$/i; - function _class(obj) { - return Object.prototype.toString.call(obj); - } - function isEol(c) { - return c === 10 || c === 13; - } - function isWhiteSpace(c) { - return c === 9 || c === 32; - } - function isWsOrEol(c) { - return c === 9 || c === 32 || c === 10 || c === 13; - } - function isFlowIndicator(c) { - return c === 44 || c === 91 || c === 93 || c === 123 || c === 125; - } - function fromHexCode(c) { - if (c >= 48 && c <= 57) { - return c - 48; - } - const lc = c | 32; - if (lc >= 97 && lc <= 102) { - return lc - 97 + 10; - } - return -1; - } - function escapedHexLen(c) { - if (c === 120) { - return 2; - } - if (c === 117) { - return 4; - } - if (c === 85) { - return 8; - } - return 0; - } - function fromDecimalCode(c) { - if (c >= 48 && c <= 57) { - return c - 48; - } - return -1; - } - function simpleEscapeSequence(c) { - switch (c) { - case 48: - return "\0"; - case 97: - return "\x07"; - case 98: - return "\b"; - case 116: - return " "; - case 9: - return " "; - case 110: - return "\n"; - case 118: - return "\v"; - case 102: - return "\f"; - case 114: - return "\r"; - case 101: - return "\x1B"; - case 32: - return " "; - case 34: - return '"'; - case 47: - return "/"; - case 92: - return "\\"; - case 78: - return "…"; - case 95: - return " "; - case 76: - return "\u2028"; - case 80: - return "\u2029"; - default: - return ""; - } - } - function charFromCodepoint(c) { - if (c <= 65535) { - return String.fromCharCode(c); - } - return String.fromCharCode( - (c - 65536 >> 10) + 55296, - (c - 65536 & 1023) + 56320 - ); - } - function setProperty(object, key, value) { - if (key === "__proto__") { - Object.defineProperty(object, key, { - configurable: true, - enumerable: true, - writable: true, - value - }); - } else { - object[key] = value; - } - } - const simpleEscapeCheck = new Array(256); - const simpleEscapeMap = new Array(256); - for (let i = 0; i < 256; i++) { - simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; - simpleEscapeMap[i] = simpleEscapeSequence(i); - } - function State(input, options) { - this.input = input; - this.filename = options["filename"] || null; - this.schema = options["schema"] || DEFAULT_SCHEMA2; - this.onWarning = options["onWarning"] || null; - this.legacy = options["legacy"] || false; - this.json = options["json"] || false; - this.listener = options["listener"] || null; - this.maxDepth = typeof options["maxDepth"] === "number" ? options["maxDepth"] : 100; - this.maxTotalMergeKeys = typeof options["maxTotalMergeKeys"] === "number" ? options["maxTotalMergeKeys"] : 1e4; - this.implicitTypes = this.schema.compiledImplicit; - this.typeMap = this.schema.compiledTypeMap; - this.length = input.length; - this.position = 0; - this.line = 0; - this.lineStart = 0; - this.lineIndent = 0; - this.depth = 0; - this.totalMergeKeys = 0; - this.firstTabInLine = -1; - this.documents = []; - this.anchorMapTransactions = []; - } - function generateError(state, message) { - const mark = { - name: state.filename, - buffer: state.input.slice(0, -1), - // omit trailing \0 - position: state.position, - line: state.line, - column: state.position - state.lineStart - }; - mark.snippet = makeSnippet(mark); - return new YAMLException2(message, mark); - } - function throwError(state, message) { - throw generateError(state, message); - } - function throwWarning(state, message) { - if (state.onWarning) { - state.onWarning.call(null, generateError(state, message)); - } - } - function storeAnchor(state, name, value) { - const transactions = state.anchorMapTransactions; - if (transactions.length !== 0) { - const transaction = transactions[transactions.length - 1]; - if (!_hasOwnProperty.call(transaction, name)) { - transaction[name] = { - existed: _hasOwnProperty.call(state.anchorMap, name), - value: state.anchorMap[name] - }; - } - } - state.anchorMap[name] = value; - } - function beginAnchorTransaction(state) { - state.anchorMapTransactions.push(/* @__PURE__ */ Object.create(null)); - } - function commitAnchorTransaction(state) { - const transaction = state.anchorMapTransactions.pop(); - const transactions = state.anchorMapTransactions; - if (transactions.length === 0) return; - const parent = transactions[transactions.length - 1]; - const names = Object.keys(transaction); - for (let index = 0, length = names.length; index < length; index += 1) { - const name = names[index]; - if (!_hasOwnProperty.call(parent, name)) { - parent[name] = transaction[name]; - } - } - } - function rollbackAnchorTransaction(state) { - const transaction = state.anchorMapTransactions.pop(); - const names = Object.keys(transaction); - for (let index = names.length - 1; index >= 0; index -= 1) { - const entry = transaction[names[index]]; - if (entry.existed) { - state.anchorMap[names[index]] = entry.value; - } else { - delete state.anchorMap[names[index]]; - } - } - } - function snapshotState(state) { - return { - position: state.position, - line: state.line, - lineStart: state.lineStart, - lineIndent: state.lineIndent, - firstTabInLine: state.firstTabInLine, - tag: state.tag, - anchor: state.anchor, - kind: state.kind, - result: state.result - }; - } - function restoreState(state, snapshot) { - state.position = snapshot.position; - state.line = snapshot.line; - state.lineStart = snapshot.lineStart; - state.lineIndent = snapshot.lineIndent; - state.firstTabInLine = snapshot.firstTabInLine; - state.tag = snapshot.tag; - state.anchor = snapshot.anchor; - state.kind = snapshot.kind; - state.result = snapshot.result; - } - const directiveHandlers = { - YAML: function handleYamlDirective(state, name, args) { - if (state.version !== null) { - throwError(state, "duplication of %YAML directive"); - } - if (args.length !== 1) { - throwError(state, "YAML directive accepts exactly one argument"); - } - const match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); - if (match === null) { - throwError(state, "ill-formed argument of the YAML directive"); - } - const major = parseInt(match[1], 10); - const minor = parseInt(match[2], 10); - if (major !== 1) { - throwError(state, "unacceptable YAML version of the document"); - } - state.version = args[0]; - state.checkLineBreaks = minor < 2; - if (minor !== 1 && minor !== 2) { - throwWarning(state, "unsupported YAML version of the document"); - } - }, - TAG: function handleTagDirective(state, name, args) { - let prefix; - if (args.length !== 2) { - throwError(state, "TAG directive accepts exactly two arguments"); - } - const handle = args[0]; - prefix = args[1]; - if (!PATTERN_TAG_HANDLE.test(handle)) { - throwError(state, "ill-formed tag handle (first argument) of the TAG directive"); - } - if (_hasOwnProperty.call(state.tagMap, handle)) { - throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); - } - if (!PATTERN_TAG_URI.test(prefix)) { - throwError(state, "ill-formed tag prefix (second argument) of the TAG directive"); - } - try { - prefix = decodeURIComponent(prefix); - } catch (err) { - throwError(state, "tag prefix is malformed: " + prefix); - } - state.tagMap[handle] = prefix; - } - }; - function captureSegment(state, start, end, checkJson) { - if (start < end) { - const _result = state.input.slice(start, end); - if (checkJson) { - for (let _position = 0, _length = _result.length; _position < _length; _position += 1) { - const _character = _result.charCodeAt(_position); - if (!(_character === 9 || _character >= 32 && _character <= 1114111)) { - throwError(state, "expected valid JSON character"); - } - } - } else if (PATTERN_NON_PRINTABLE.test(_result)) { - throwError(state, "the stream contains non-printable characters"); - } - state.result += _result; - } - } - function chargeMergeWork(state) { - state.totalMergeKeys++; - if (state.maxTotalMergeKeys !== -1 && state.totalMergeKeys > state.maxTotalMergeKeys) { - throwError(state, "merge keys exceeded maxTotalMergeKeys (" + state.maxTotalMergeKeys + ")"); - } - } - function mergeMappings(state, destination, source, overridableKeys) { - if (!common2.isObject(source)) { - throwError(state, "cannot merge mappings; the provided source object is unacceptable"); - } - chargeMergeWork(state); - const sourceKeys = Object.keys(source); - for (let index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { - const key = sourceKeys[index]; - chargeMergeWork(state); - if (!_hasOwnProperty.call(destination, key)) { - setProperty(destination, key, source[key]); - overridableKeys[key] = true; - } - } - } - function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) { - if (Array.isArray(keyNode)) { - keyNode = Array.prototype.slice.call(keyNode); - for (let index = 0, quantity = keyNode.length; index < quantity; index += 1) { - if (Array.isArray(keyNode[index])) { - throwError(state, "nested arrays are not supported inside keys"); - } - if (typeof keyNode === "object" && _class(keyNode[index]) === "[object Object]") { - keyNode[index] = "[object Object]"; - } - } - } - if (typeof keyNode === "object" && _class(keyNode) === "[object Object]") { - keyNode = "[object Object]"; - } - keyNode = String(keyNode); - if (_result === null) { - _result = {}; - } - if (keyTag === "tag:yaml.org,2002:merge") { - if (Array.isArray(valueNode)) { - if (valueNode.length > 100) { - throwError(state, "abnormal merge sequence size"); - } - for (let index = 0, quantity = valueNode.length; index < quantity; index += 1) { - mergeMappings(state, _result, valueNode[index], overridableKeys); - } - } else { - mergeMappings(state, _result, valueNode, overridableKeys); - } - } else { - if (!state.json && !_hasOwnProperty.call(overridableKeys, keyNode) && _hasOwnProperty.call(_result, keyNode)) { - state.line = startLine || state.line; - state.lineStart = startLineStart || state.lineStart; - state.position = startPos || state.position; - throwError(state, "duplicated mapping key"); - } - setProperty(_result, keyNode, valueNode); - delete overridableKeys[keyNode]; - } - return _result; - } - function readLineBreak(state) { - const ch = state.input.charCodeAt(state.position); - if (ch === 10) { - state.position++; - } else if (ch === 13) { - state.position++; - if (state.input.charCodeAt(state.position) === 10) { - state.position++; - } - } else { - throwError(state, "a line break is expected"); - } - state.line += 1; - state.lineStart = state.position; - state.firstTabInLine = -1; - } - function skipSeparationSpace(state, allowComments, checkIndent) { - let lineBreaks = 0; - let ch = state.input.charCodeAt(state.position); - while (ch !== 0) { - while (isWhiteSpace(ch)) { - if (ch === 9 && state.firstTabInLine === -1) { - state.firstTabInLine = state.position; - } - ch = state.input.charCodeAt(++state.position); - } - if (allowComments && ch === 35) { - do { - ch = state.input.charCodeAt(++state.position); - } while (ch !== 10 && ch !== 13 && ch !== 0); - } - if (isEol(ch)) { - readLineBreak(state); - ch = state.input.charCodeAt(state.position); - lineBreaks++; - state.lineIndent = 0; - while (ch === 32) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); - } - } else { - break; - } - } - if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { - throwWarning(state, "deficient indentation"); - } - return lineBreaks; - } - function testDocumentSeparator(state) { - let _position = state.position; - let ch = state.input.charCodeAt(_position); - if ((ch === 45 || ch === 46) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) { - _position += 3; - ch = state.input.charCodeAt(_position); - if (ch === 0 || isWsOrEol(ch)) { - return true; - } - } - return false; - } - function writeFoldedLines(state, count) { - if (count === 1) { - state.result += " "; - } else if (count > 1) { - state.result += common2.repeat("\n", count - 1); - } - } - function readPlainScalar(state, nodeIndent, withinFlowCollection) { - let captureStart; - let captureEnd; - let hasPendingContent; - let _line; - let _lineStart; - let _lineIndent; - const _kind = state.kind; - const _result = state.result; - let ch = state.input.charCodeAt(state.position); - if (isWsOrEol(ch) || isFlowIndicator(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) { - return false; - } - if (ch === 63 || ch === 45) { - const following = state.input.charCodeAt(state.position + 1); - if (isWsOrEol(following) || withinFlowCollection && isFlowIndicator(following)) { - return false; - } - } - state.kind = "scalar"; - state.result = ""; - captureStart = captureEnd = state.position; - hasPendingContent = false; - while (ch !== 0) { - if (ch === 58) { - const following = state.input.charCodeAt(state.position + 1); - if (isWsOrEol(following) || withinFlowCollection && isFlowIndicator(following)) { - break; - } - } else if (ch === 35) { - const preceding = state.input.charCodeAt(state.position - 1); - if (isWsOrEol(preceding)) { - break; - } - } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && isFlowIndicator(ch)) { - break; - } else if (isEol(ch)) { - _line = state.line; - _lineStart = state.lineStart; - _lineIndent = state.lineIndent; - skipSeparationSpace(state, false, -1); - if (state.lineIndent >= nodeIndent) { - hasPendingContent = true; - ch = state.input.charCodeAt(state.position); - continue; - } else { - state.position = captureEnd; - state.line = _line; - state.lineStart = _lineStart; - state.lineIndent = _lineIndent; - break; - } - } - if (hasPendingContent) { - captureSegment(state, captureStart, captureEnd, false); - writeFoldedLines(state, state.line - _line); - captureStart = captureEnd = state.position; - hasPendingContent = false; - } - if (!isWhiteSpace(ch)) { - captureEnd = state.position + 1; - } - ch = state.input.charCodeAt(++state.position); - } - captureSegment(state, captureStart, captureEnd, false); - if (state.result) { - return true; - } - state.kind = _kind; - state.result = _result; - return false; - } - function readSingleQuotedScalar(state, nodeIndent) { - let captureStart; - let captureEnd; - let ch = state.input.charCodeAt(state.position); - if (ch !== 39) { - return false; - } - state.kind = "scalar"; - state.result = ""; - state.position++; - captureStart = captureEnd = state.position; - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 39) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); - if (ch === 39) { - captureStart = state.position; - state.position++; - captureEnd = state.position; - } else { - return true; - } - } else if (isEol(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, "unexpected end of the document within a single quoted scalar"); - } else { - state.position++; - if (!isWhiteSpace(ch)) { - captureEnd = state.position; - } - } - } - throwError(state, "unexpected end of the stream within a single quoted scalar"); - } - function readDoubleQuotedScalar(state, nodeIndent) { - let captureStart; - let captureEnd; - let tmp; - let ch = state.input.charCodeAt(state.position); - if (ch !== 34) { - return false; - } - state.kind = "scalar"; - state.result = ""; - state.position++; - captureStart = captureEnd = state.position; - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 34) { - captureSegment(state, captureStart, state.position, true); - state.position++; - return true; - } else if (ch === 92) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); - if (isEol(ch)) { - skipSeparationSpace(state, false, nodeIndent); - } else if (ch < 256 && simpleEscapeCheck[ch]) { - state.result += simpleEscapeMap[ch]; - state.position++; - } else if ((tmp = escapedHexLen(ch)) > 0) { - let hexLength = tmp; - let hexResult = 0; - for (; hexLength > 0; hexLength--) { - ch = state.input.charCodeAt(++state.position); - if ((tmp = fromHexCode(ch)) >= 0) { - hexResult = (hexResult << 4) + tmp; - } else { - throwError(state, "expected hexadecimal character"); - } - } - state.result += charFromCodepoint(hexResult); - state.position++; - } else { - throwError(state, "unknown escape sequence"); - } - captureStart = captureEnd = state.position; - } else if (isEol(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, "unexpected end of the document within a double quoted scalar"); - } else { - state.position++; - if (!isWhiteSpace(ch)) { - captureEnd = state.position; - } - } - } - throwError(state, "unexpected end of the stream within a double quoted scalar"); - } - function readFlowCollection(state, nodeIndent) { - let readNext = true; - let _line; - let _lineStart; - let _pos; - const _tag = state.tag; - let _result; - const _anchor = state.anchor; - let terminator; - let isPair; - let isExplicitPair; - let isMapping; - const overridableKeys = /* @__PURE__ */ Object.create(null); - let keyNode; - let keyTag; - let valueNode; - let ch = state.input.charCodeAt(state.position); - if (ch === 91) { - terminator = 93; - isMapping = false; - _result = []; - } else if (ch === 123) { - terminator = 125; - isMapping = true; - _result = {}; - } else { - return false; - } - if (state.anchor !== null) { - storeAnchor(state, state.anchor, _result); - } - ch = state.input.charCodeAt(++state.position); - while (ch !== 0) { - skipSeparationSpace(state, true, nodeIndent); - ch = state.input.charCodeAt(state.position); - if (ch === terminator) { - state.position++; - state.tag = _tag; - state.anchor = _anchor; - state.kind = isMapping ? "mapping" : "sequence"; - state.result = _result; - return true; - } else if (!readNext) { - throwError(state, "missed comma between flow collection entries"); - } else if (ch === 44) { - throwError(state, "expected the node content, but found ','"); - } - keyTag = keyNode = valueNode = null; - isPair = isExplicitPair = false; - if (ch === 63) { - const following = state.input.charCodeAt(state.position + 1); - if (isWsOrEol(following)) { - isPair = isExplicitPair = true; - state.position++; - skipSeparationSpace(state, true, nodeIndent); - } - } - _line = state.line; - _lineStart = state.lineStart; - _pos = state.position; - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - keyTag = state.tag; - keyNode = state.result; - skipSeparationSpace(state, true, nodeIndent); - ch = state.input.charCodeAt(state.position); - if ((isExplicitPair || state.line === _line) && ch === 58) { - isPair = true; - ch = state.input.charCodeAt(++state.position); - skipSeparationSpace(state, true, nodeIndent); - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - valueNode = state.result; - } - if (isMapping) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); - } else if (isPair) { - _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); - } else { - _result.push(keyNode); - } - skipSeparationSpace(state, true, nodeIndent); - ch = state.input.charCodeAt(state.position); - if (ch === 44) { - readNext = true; - ch = state.input.charCodeAt(++state.position); - } else { - readNext = false; - } - } - throwError(state, "unexpected end of the stream within a flow collection"); - } - function readBlockScalar(state, nodeIndent) { - let folding; - let chomping = CHOMPING_CLIP; - let didReadContent = false; - let detectedIndent = false; - let textIndent = nodeIndent; - let emptyLines = 0; - let atMoreIndented = false; - let tmp; - let ch = state.input.charCodeAt(state.position); - if (ch === 124) { - folding = false; - } else if (ch === 62) { - folding = true; - } else { - return false; - } - state.kind = "scalar"; - state.result = ""; - while (ch !== 0) { - ch = state.input.charCodeAt(++state.position); - if (ch === 43 || ch === 45) { - if (CHOMPING_CLIP === chomping) { - chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP; - } else { - throwError(state, "repeat of a chomping mode identifier"); - } - } else if ((tmp = fromDecimalCode(ch)) >= 0) { - if (tmp === 0) { - throwError(state, "bad explicit indentation width of a block scalar; it cannot be less than one"); - } else if (!detectedIndent) { - textIndent = nodeIndent + tmp - 1; - detectedIndent = true; - } else { - throwError(state, "repeat of an indentation width identifier"); - } - } else { - break; - } - } - if (isWhiteSpace(ch)) { - do { - ch = state.input.charCodeAt(++state.position); - } while (isWhiteSpace(ch)); - if (ch === 35) { - do { - ch = state.input.charCodeAt(++state.position); - } while (!isEol(ch) && ch !== 0); - } - } - while (ch !== 0) { - readLineBreak(state); - state.lineIndent = 0; - ch = state.input.charCodeAt(state.position); - while ((!detectedIndent || state.lineIndent < textIndent) && ch === 32) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); - } - if (!detectedIndent && state.lineIndent > textIndent) { - textIndent = state.lineIndent; - } - if (isEol(ch)) { - emptyLines++; - continue; - } - if (!detectedIndent && textIndent === 0) { - throwError(state, "missing indentation for block scalar"); - } - if (state.lineIndent < textIndent) { - if (chomping === CHOMPING_KEEP) { - state.result += common2.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); - } else if (chomping === CHOMPING_CLIP) { - if (didReadContent) { - state.result += "\n"; - } - } - break; - } - if (folding) { - if (isWhiteSpace(ch)) { - atMoreIndented = true; - state.result += common2.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); - } else if (atMoreIndented) { - atMoreIndented = false; - state.result += common2.repeat("\n", emptyLines + 1); - } else if (emptyLines === 0) { - if (didReadContent) { - state.result += " "; - } - } else { - state.result += common2.repeat("\n", emptyLines); - } - } else { - state.result += common2.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); - } - didReadContent = true; - detectedIndent = true; - emptyLines = 0; - const captureStart = state.position; - while (!isEol(ch) && ch !== 0) { - ch = state.input.charCodeAt(++state.position); - } - captureSegment(state, captureStart, state.position, false); - } - return true; - } - function readBlockSequence(state, nodeIndent) { - const _tag = state.tag; - const _anchor = state.anchor; - const _result = []; - let detected = false; - if (state.firstTabInLine !== -1) return false; - if (state.anchor !== null) { - storeAnchor(state, state.anchor, _result); - } - let ch = state.input.charCodeAt(state.position); - while (ch !== 0) { - if (state.firstTabInLine !== -1) { - state.position = state.firstTabInLine; - throwError(state, "tab characters must not be used in indentation"); - } - if (ch !== 45) { - break; - } - const following = state.input.charCodeAt(state.position + 1); - if (!isWsOrEol(following)) { - break; - } - detected = true; - state.position++; - if (skipSeparationSpace(state, true, -1)) { - if (state.lineIndent <= nodeIndent) { - _result.push(null); - ch = state.input.charCodeAt(state.position); - continue; - } - } - const _line = state.line; - composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); - _result.push(state.result); - skipSeparationSpace(state, true, -1); - ch = state.input.charCodeAt(state.position); - if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) { - throwError(state, "bad indentation of a sequence entry"); - } else if (state.lineIndent < nodeIndent) { - break; - } - } - if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = "sequence"; - state.result = _result; - return true; - } - return false; - } - function readBlockMapping(state, nodeIndent, flowIndent) { - let allowCompact; - let _keyLine; - let _keyLineStart; - let _keyPos; - const _tag = state.tag; - const _anchor = state.anchor; - const _result = {}; - const overridableKeys = /* @__PURE__ */ Object.create(null); - let keyTag = null; - let keyNode = null; - let valueNode = null; - let atExplicitKey = false; - let detected = false; - if (state.firstTabInLine !== -1) return false; - if (state.anchor !== null) { - storeAnchor(state, state.anchor, _result); - } - let ch = state.input.charCodeAt(state.position); - while (ch !== 0) { - if (!atExplicitKey && state.firstTabInLine !== -1) { - state.position = state.firstTabInLine; - throwError(state, "tab characters must not be used in indentation"); - } - const following = state.input.charCodeAt(state.position + 1); - const _line = state.line; - if ((ch === 63 || ch === 58) && isWsOrEol(following)) { - if (ch === 63) { - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; - } - detected = true; - atExplicitKey = true; - allowCompact = true; - } else if (atExplicitKey) { - atExplicitKey = false; - allowCompact = true; - } else { - throwError(state, "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"); - } - state.position += 1; - ch = following; - } else { - _keyLine = state.line; - _keyLineStart = state.lineStart; - _keyPos = state.position; - if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { - break; - } - if (state.line === _line) { - ch = state.input.charCodeAt(state.position); - while (isWhiteSpace(ch)) { - ch = state.input.charCodeAt(++state.position); - } - if (ch === 58) { - ch = state.input.charCodeAt(++state.position); - if (!isWsOrEol(ch)) { - throwError(state, "a whitespace character is expected after the key-value separator within a block mapping"); - } - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; - } - detected = true; - atExplicitKey = false; - allowCompact = false; - keyTag = state.tag; - keyNode = state.result; - } else if (detected) { - throwError(state, "can not read an implicit mapping pair; a colon is missed"); - } else { - state.tag = _tag; - state.anchor = _anchor; - return true; - } - } else if (detected) { - throwError(state, "can not read a block mapping entry; a multiline key may not be an implicit key"); - } else { - state.tag = _tag; - state.anchor = _anchor; - return true; - } - } - if (state.line === _line || state.lineIndent > nodeIndent) { - if (atExplicitKey) { - _keyLine = state.line; - _keyLineStart = state.lineStart; - _keyPos = state.position; - } - if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { - if (atExplicitKey) { - keyNode = state.result; - } else { - valueNode = state.result; - } - } - if (!atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; - } - skipSeparationSpace(state, true, -1); - ch = state.input.charCodeAt(state.position); - } - if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) { - throwError(state, "bad indentation of a mapping entry"); - } else if (state.lineIndent < nodeIndent) { - break; - } - } - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - } - if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = "mapping"; - state.result = _result; - } - return detected; - } - function readTagProperty(state) { - let isVerbatim = false; - let isNamed = false; - let tagHandle; - let tagName; - let ch = state.input.charCodeAt(state.position); - if (ch !== 33) return false; - if (state.tag !== null) { - throwError(state, "duplication of a tag property"); - } - ch = state.input.charCodeAt(++state.position); - if (ch === 60) { - isVerbatim = true; - ch = state.input.charCodeAt(++state.position); - } else if (ch === 33) { - isNamed = true; - tagHandle = "!!"; - ch = state.input.charCodeAt(++state.position); - } else { - tagHandle = "!"; - } - let _position = state.position; - if (isVerbatim) { - do { - ch = state.input.charCodeAt(++state.position); - } while (ch !== 0 && ch !== 62); - if (state.position < state.length) { - tagName = state.input.slice(_position, state.position); - ch = state.input.charCodeAt(++state.position); - } else { - throwError(state, "unexpected end of the stream within a verbatim tag"); - } - } else { - while (ch !== 0 && !isWsOrEol(ch)) { - if (ch === 33) { - if (!isNamed) { - tagHandle = state.input.slice(_position - 1, state.position + 1); - if (!PATTERN_TAG_HANDLE.test(tagHandle)) { - throwError(state, "named tag handle cannot contain such characters"); - } - isNamed = true; - _position = state.position + 1; - } else { - throwError(state, "tag suffix cannot contain exclamation marks"); - } - } - ch = state.input.charCodeAt(++state.position); - } - tagName = state.input.slice(_position, state.position); - if (PATTERN_FLOW_INDICATORS.test(tagName)) { - throwError(state, "tag suffix cannot contain flow indicator characters"); - } - } - if (tagName && !PATTERN_TAG_URI.test(tagName)) { - throwError(state, "tag name cannot contain such characters: " + tagName); - } - try { - tagName = decodeURIComponent(tagName); - } catch (err) { - throwError(state, "tag name is malformed: " + tagName); - } - if (isVerbatim) { - state.tag = tagName; - } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { - state.tag = state.tagMap[tagHandle] + tagName; - } else if (tagHandle === "!") { - state.tag = "!" + tagName; - } else if (tagHandle === "!!") { - state.tag = "tag:yaml.org,2002:" + tagName; - } else { - throwError(state, 'undeclared tag handle "' + tagHandle + '"'); - } - return true; - } - function readAnchorProperty(state) { - let ch = state.input.charCodeAt(state.position); - if (ch !== 38) return false; - if (state.anchor !== null) { - throwError(state, "duplication of an anchor property"); - } - ch = state.input.charCodeAt(++state.position); - const _position = state.position; - while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { - ch = state.input.charCodeAt(++state.position); - } - if (state.position === _position) { - throwError(state, "name of an anchor node must contain at least one character"); - } - state.anchor = state.input.slice(_position, state.position); - return true; - } - function readAlias(state) { - let ch = state.input.charCodeAt(state.position); - if (ch !== 42) return false; - ch = state.input.charCodeAt(++state.position); - const _position = state.position; - while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { - ch = state.input.charCodeAt(++state.position); - } - if (state.position === _position) { - throwError(state, "name of an alias node must contain at least one character"); - } - const alias = state.input.slice(_position, state.position); - if (!_hasOwnProperty.call(state.anchorMap, alias)) { - throwError(state, 'unidentified alias "' + alias + '"'); - } - state.result = state.anchorMap[alias]; - skipSeparationSpace(state, true, -1); - return true; - } - function tryReadBlockMappingFromProperty(state, propertyStart, nodeIndent, flowIndent) { - const fallbackState = snapshotState(state); - beginAnchorTransaction(state); - restoreState(state, propertyStart); - state.tag = null; - state.anchor = null; - state.kind = null; - state.result = null; - if (readBlockMapping(state, nodeIndent, flowIndent) && state.kind === "mapping") { - commitAnchorTransaction(state); - return true; - } - rollbackAnchorTransaction(state); - restoreState(state, fallbackState); - return false; - } - function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { - let allowBlockScalars; - let allowBlockCollections; - let indentStatus = 1; - let atNewLine = false; - let hasContent = false; - let propertyStart = null; - let type2; - let flowIndent; - let blockIndent; - if (state.depth >= state.maxDepth) { - throwError(state, "nesting exceeded maxDepth (" + state.maxDepth + ")"); - } - state.depth += 1; - if (state.listener !== null) { - state.listener("open", state); - } - state.tag = null; - state.anchor = null; - state.kind = null; - state.result = null; - const allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext; - if (allowToSeek) { - if (skipSeparationSpace(state, true, -1)) { - atNewLine = true; - if (state.lineIndent > parentIndent) { - indentStatus = 1; - } else if (state.lineIndent === parentIndent) { - indentStatus = 0; - } else if (state.lineIndent < parentIndent) { - indentStatus = -1; - } - } - } - if (indentStatus === 1) { - while (true) { - const ch = state.input.charCodeAt(state.position); - const propertyState = snapshotState(state); - if (atNewLine && (ch === 33 && state.tag !== null || ch === 38 && state.anchor !== null)) { - break; - } - if (!readTagProperty(state) && !readAnchorProperty(state)) { - break; - } - if (propertyStart === null) { - propertyStart = propertyState; - } - if (skipSeparationSpace(state, true, -1)) { - atNewLine = true; - allowBlockCollections = allowBlockStyles; - if (state.lineIndent > parentIndent) { - indentStatus = 1; - } else if (state.lineIndent === parentIndent) { - indentStatus = 0; - } else if (state.lineIndent < parentIndent) { - indentStatus = -1; - } - } else { - allowBlockCollections = false; - } - } - } - if (allowBlockCollections) { - allowBlockCollections = atNewLine || allowCompact; - } - if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { - if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { - flowIndent = parentIndent; - } else { - flowIndent = parentIndent + 1; - } - blockIndent = state.position - state.lineStart; - if (indentStatus === 1) { - if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) { - hasContent = true; - } else { - const ch = state.input.charCodeAt(state.position); - if (propertyStart !== null && allowBlockStyles && !allowBlockCollections && ch !== 124 && ch !== 62 && tryReadBlockMappingFromProperty( - state, - propertyStart, - propertyStart.position - propertyStart.lineStart, - flowIndent - )) { - hasContent = true; - } else if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) { - hasContent = true; - } else if (readAlias(state)) { - hasContent = true; - if (state.tag !== null || state.anchor !== null) { - throwError(state, "alias node should not have any properties"); - } - } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { - hasContent = true; - if (state.tag === null) { - state.tag = "?"; - } - } - if (state.anchor !== null) { - storeAnchor(state, state.anchor, state.result); - } - } - } else if (indentStatus === 0) { - hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); - } - } - if (state.tag === null) { - if (state.anchor !== null) { - storeAnchor(state, state.anchor, state.result); - } - } else if (state.tag === "?") { - if (state.result !== null && state.kind !== "scalar") { - throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); - } - for (let typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { - type2 = state.implicitTypes[typeIndex]; - if (type2.resolve(state.result)) { - state.result = type2.construct(state.result); - state.tag = type2.tag; - if (state.anchor !== null) { - storeAnchor(state, state.anchor, state.result); - } - break; - } - } - } else if (state.tag !== "!") { - if (_hasOwnProperty.call(state.typeMap[state.kind || "fallback"], state.tag)) { - type2 = state.typeMap[state.kind || "fallback"][state.tag]; - } else { - type2 = null; - const typeList = state.typeMap.multi[state.kind || "fallback"]; - for (let typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { - if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { - type2 = typeList[typeIndex]; - break; - } - } - } - if (!type2) { - throwError(state, "unknown tag !<" + state.tag + ">"); - } - if (state.result !== null && type2.kind !== state.kind) { - throwError(state, "unacceptable node kind for !<" + state.tag + '> tag; it should be "' + type2.kind + '", not "' + state.kind + '"'); - } - if (!type2.resolve(state.result, state.tag)) { - throwError(state, "cannot resolve a node with !<" + state.tag + "> explicit tag"); - } else { - state.result = type2.construct(state.result, state.tag); - if (state.anchor !== null) { - storeAnchor(state, state.anchor, state.result); - } - } - } - if (state.listener !== null) { - state.listener("close", state); - } - state.depth -= 1; - return state.tag !== null || state.anchor !== null || hasContent; - } - function readDocument(state) { - const documentStart = state.position; - let hasDirectives = false; - let ch; - state.version = null; - state.checkLineBreaks = state.legacy; - state.tagMap = /* @__PURE__ */ Object.create(null); - state.anchorMap = /* @__PURE__ */ Object.create(null); - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - skipSeparationSpace(state, true, -1); - ch = state.input.charCodeAt(state.position); - if (state.lineIndent > 0 || ch !== 37) { - break; - } - hasDirectives = true; - ch = state.input.charCodeAt(++state.position); - let _position = state.position; - while (ch !== 0 && !isWsOrEol(ch)) { - ch = state.input.charCodeAt(++state.position); - } - const directiveName = state.input.slice(_position, state.position); - const directiveArgs = []; - if (directiveName.length < 1) { - throwError(state, "directive name must not be less than one character in length"); - } - while (ch !== 0) { - while (isWhiteSpace(ch)) { - ch = state.input.charCodeAt(++state.position); - } - if (ch === 35) { - do { - ch = state.input.charCodeAt(++state.position); - } while (ch !== 0 && !isEol(ch)); - break; - } - if (isEol(ch)) break; - _position = state.position; - while (ch !== 0 && !isWsOrEol(ch)) { - ch = state.input.charCodeAt(++state.position); - } - directiveArgs.push(state.input.slice(_position, state.position)); - } - if (ch !== 0) readLineBreak(state); - if (_hasOwnProperty.call(directiveHandlers, directiveName)) { - directiveHandlers[directiveName](state, directiveName, directiveArgs); - } else { - throwWarning(state, 'unknown document directive "' + directiveName + '"'); - } - } - skipSeparationSpace(state, true, -1); - if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 45 && state.input.charCodeAt(state.position + 1) === 45 && state.input.charCodeAt(state.position + 2) === 45) { - state.position += 3; - skipSeparationSpace(state, true, -1); - } else if (hasDirectives) { - throwError(state, "directives end mark is expected"); - } - composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); - skipSeparationSpace(state, true, -1); - if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { - throwWarning(state, "non-ASCII line breaks are interpreted as content"); - } - state.documents.push(state.result); - if (state.position === state.lineStart && testDocumentSeparator(state)) { - if (state.input.charCodeAt(state.position) === 46) { - state.position += 3; - skipSeparationSpace(state, true, -1); - } - return; - } - if (state.position < state.length - 1) { - throwError(state, "end of the stream or a document separator is expected"); - } - } - function loadDocuments(input, options) { - input = String(input); - options = options || {}; - if (input.length !== 0) { - if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) { - input += "\n"; - } - if (input.charCodeAt(0) === 65279) { - input = input.slice(1); - } - } - const state = new State(input, options); - const nullpos = input.indexOf("\0"); - if (nullpos !== -1) { - state.position = nullpos; - throwError(state, "null byte is not allowed in input"); - } - state.input += "\0"; - while (state.input.charCodeAt(state.position) === 32) { - state.lineIndent += 1; - state.position += 1; - } - while (state.position < state.length - 1) { - readDocument(state); - } - return state.documents; - } - function loadAll2(input, iterator, options) { - if (iterator !== null && typeof iterator === "object" && typeof options === "undefined") { - options = iterator; - iterator = null; - } - const documents = loadDocuments(input, options); - if (typeof iterator !== "function") { - return documents; - } - for (let index = 0, length = documents.length; index < length; index += 1) { - iterator(documents[index]); - } - } - function load2(input, options) { - const documents = loadDocuments(input, options); - if (documents.length === 0) { - return void 0; - } else if (documents.length === 1) { - return documents[0]; - } - throw new YAMLException2("expected a single document in the stream, but found more"); - } - loader.loadAll = loadAll2; - loader.load = load2; - return loader; -} -var dumper = {}; -var hasRequiredDumper; -function requireDumper() { - if (hasRequiredDumper) return dumper; - hasRequiredDumper = 1; - const common2 = requireCommon(); - const YAMLException2 = requireException(); - const DEFAULT_SCHEMA2 = require_default(); - const _toString = Object.prototype.toString; - const _hasOwnProperty = Object.prototype.hasOwnProperty; - const CHAR_BOM = 65279; - const CHAR_TAB = 9; - const CHAR_LINE_FEED = 10; - const CHAR_CARRIAGE_RETURN = 13; - const CHAR_SPACE = 32; - const CHAR_EXCLAMATION = 33; - const CHAR_DOUBLE_QUOTE = 34; - const CHAR_SHARP = 35; - const CHAR_PERCENT = 37; - const CHAR_AMPERSAND = 38; - const CHAR_SINGLE_QUOTE = 39; - const CHAR_ASTERISK = 42; - const CHAR_COMMA = 44; - const CHAR_MINUS = 45; - const CHAR_COLON = 58; - const CHAR_EQUALS = 61; - const CHAR_GREATER_THAN = 62; - const CHAR_QUESTION = 63; - const CHAR_COMMERCIAL_AT = 64; - const CHAR_LEFT_SQUARE_BRACKET = 91; - const CHAR_RIGHT_SQUARE_BRACKET = 93; - const CHAR_GRAVE_ACCENT = 96; - const CHAR_LEFT_CURLY_BRACKET = 123; - const CHAR_VERTICAL_LINE = 124; - const CHAR_RIGHT_CURLY_BRACKET = 125; - const ESCAPE_SEQUENCES = {}; - ESCAPE_SEQUENCES[0] = "\\0"; - ESCAPE_SEQUENCES[7] = "\\a"; - ESCAPE_SEQUENCES[8] = "\\b"; - ESCAPE_SEQUENCES[9] = "\\t"; - ESCAPE_SEQUENCES[10] = "\\n"; - ESCAPE_SEQUENCES[11] = "\\v"; - ESCAPE_SEQUENCES[12] = "\\f"; - ESCAPE_SEQUENCES[13] = "\\r"; - ESCAPE_SEQUENCES[27] = "\\e"; - ESCAPE_SEQUENCES[34] = '\\"'; - ESCAPE_SEQUENCES[92] = "\\\\"; - ESCAPE_SEQUENCES[133] = "\\N"; - ESCAPE_SEQUENCES[160] = "\\_"; - ESCAPE_SEQUENCES[8232] = "\\L"; - ESCAPE_SEQUENCES[8233] = "\\P"; - const DEPRECATED_BOOLEANS_SYNTAX = [ - "y", - "Y", - "yes", - "Yes", - "YES", - "on", - "On", - "ON", - "n", - "N", - "no", - "No", - "NO", - "off", - "Off", - "OFF" - ]; - const DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; - function compileStyleMap(schema2, map2) { - if (map2 === null) return {}; - const result = {}; - const keys = Object.keys(map2); - for (let index = 0, length = keys.length; index < length; index += 1) { - let tag = keys[index]; - let style = String(map2[tag]); - if (tag.slice(0, 2) === "!!") { - tag = "tag:yaml.org,2002:" + tag.slice(2); - } - const type2 = schema2.compiledTypeMap["fallback"][tag]; - if (type2 && _hasOwnProperty.call(type2.styleAliases, style)) { - style = type2.styleAliases[style]; - } - result[tag] = style; - } - return result; - } - function encodeHex(character) { - let handle; - let length; - const string = character.toString(16).toUpperCase(); - if (character <= 255) { - handle = "x"; - length = 2; - } else if (character <= 65535) { - handle = "u"; - length = 4; - } else if (character <= 4294967295) { - handle = "U"; - length = 8; - } else { - throw new YAMLException2("code point within a string may not be greater than 0xFFFFFFFF"); - } - return "\\" + handle + common2.repeat("0", length - string.length) + string; - } - const QUOTING_TYPE_SINGLE = 1; - const QUOTING_TYPE_DOUBLE = 2; - function State(options) { - this.schema = options["schema"] || DEFAULT_SCHEMA2; - this.indent = Math.max(1, options["indent"] || 2); - this.noArrayIndent = options["noArrayIndent"] || false; - this.skipInvalid = options["skipInvalid"] || false; - this.flowLevel = common2.isNothing(options["flowLevel"]) ? -1 : options["flowLevel"]; - this.styleMap = compileStyleMap(this.schema, options["styles"] || null); - this.sortKeys = options["sortKeys"] || false; - this.lineWidth = options["lineWidth"] || 80; - this.noRefs = options["noRefs"] || false; - this.noCompatMode = options["noCompatMode"] || false; - this.condenseFlow = options["condenseFlow"] || false; - this.quotingType = options["quotingType"] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; - this.forceQuotes = options["forceQuotes"] || false; - this.replacer = typeof options["replacer"] === "function" ? options["replacer"] : null; - this.implicitTypes = this.schema.compiledImplicit; - this.explicitTypes = this.schema.compiledExplicit; - this.tag = null; - this.result = ""; - this.duplicates = []; - this.usedDuplicates = null; - } - function indentString(string, spaces) { - const ind = common2.repeat(" ", spaces); - let position = 0; - let result = ""; - const length = string.length; - while (position < length) { - let line; - const next = string.indexOf("\n", position); - if (next === -1) { - line = string.slice(position); - position = length; - } else { - line = string.slice(position, next + 1); - position = next + 1; - } - if (line.length && line !== "\n") result += ind; - result += line; - } - return result; - } - function generateNextLine(state, level) { - return "\n" + common2.repeat(" ", state.indent * level); - } - function testImplicitResolving(state, str2) { - for (let index = 0, length = state.implicitTypes.length; index < length; index += 1) { - const type2 = state.implicitTypes[index]; - if (type2.resolve(str2)) { - return true; - } - } - return false; - } - function isWhitespace(c) { - return c === CHAR_SPACE || c === CHAR_TAB; - } - function isPrintable(c) { - return c >= 32 && c <= 126 || c >= 161 && c <= 55295 && c !== 8232 && c !== 8233 || c >= 57344 && c <= 65533 && c !== CHAR_BOM || c >= 65536 && c <= 1114111; - } - function isNsCharOrWhitespace(c) { - return isPrintable(c) && c !== CHAR_BOM && // - b-char - c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED; - } - function isPlainSafe(c, prev, inblock) { - const cIsNsCharOrWhitespace = isNsCharOrWhitespace(c); - const cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c); - return ( - // ns-plain-safe - (inblock ? cIsNsCharOrWhitespace : cIsNsCharOrWhitespace && // - c-flow-indicator - c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET) && // ns-plain-char - c !== CHAR_SHARP && // false on '#' - !(prev === CHAR_COLON && !cIsNsChar) || // false on ': ' - isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP || // change to true on '[^ ]#' - prev === CHAR_COLON && cIsNsChar - ); - } - function isPlainSafeFirst(c) { - return isPrintable(c) && c !== CHAR_BOM && !isWhitespace(c) && // - s-white - // - (c-indicator ::= - // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” - c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” - c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE && // | “%” | “@” | “`”) - c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT; - } - function isPlainSafeLast(c) { - return !isWhitespace(c) && c !== CHAR_COLON; - } - function codePointAt(string, pos) { - const first = string.charCodeAt(pos); - let second; - if (first >= 55296 && first <= 56319 && pos + 1 < string.length) { - second = string.charCodeAt(pos + 1); - if (second >= 56320 && second <= 57343) { - return (first - 55296) * 1024 + second - 56320 + 65536; - } - } - return first; - } - function needIndentIndicator(string) { - const leadingSpaceRe = /^\n* /; - return leadingSpaceRe.test(string); - } - const STYLE_PLAIN = 1; - const STYLE_SINGLE = 2; - const STYLE_LITERAL = 3; - const STYLE_FOLDED = 4; - const STYLE_DOUBLE = 5; - function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType, quotingType, forceQuotes, inblock) { - let i; - let char = 0; - let prevChar = null; - let hasLineBreak = false; - let hasFoldableLine = false; - const shouldTrackWidth = lineWidth !== -1; - let previousLineBreak = -1; - let plain = isPlainSafeFirst(codePointAt(string, 0)) && isPlainSafeLast(codePointAt(string, string.length - 1)); - if (singleLineOnly || forceQuotes) { - for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) { - char = codePointAt(string, i); - if (!isPrintable(char)) { - return STYLE_DOUBLE; - } - plain = plain && isPlainSafe(char, prevChar, inblock); - prevChar = char; - } - } else { - for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) { - char = codePointAt(string, i); - if (char === CHAR_LINE_FEED) { - hasLineBreak = true; - if (shouldTrackWidth) { - hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented. - i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " "; - previousLineBreak = i; - } - } else if (!isPrintable(char)) { - return STYLE_DOUBLE; - } - plain = plain && isPlainSafe(char, prevChar, inblock); - prevChar = char; - } - hasFoldableLine = hasFoldableLine || shouldTrackWidth && (i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " "); - } - if (!hasLineBreak && !hasFoldableLine) { - if (plain && !forceQuotes && !testAmbiguousType(string)) { - return STYLE_PLAIN; - } - return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; - } - if (indentPerLevel > 9 && needIndentIndicator(string)) { - return STYLE_DOUBLE; - } - if (!forceQuotes) { - return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; - } - return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; - } - function writeScalar(state, string, level, iskey, inblock) { - state.dump = (function() { - if (string.length === 0) { - return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; - } - if (!state.noCompatMode) { - if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) { - return state.quotingType === QUOTING_TYPE_DOUBLE ? '"' + string + '"' : "'" + string + "'"; - } - } - const indent = state.indent * Math.max(1, level); - const lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); - const singleLineOnly = iskey || // No block styles in flow mode. - state.flowLevel > -1 && level >= state.flowLevel; - function testAmbiguity(string2) { - return testImplicitResolving(state, string2); - } - switch (chooseScalarStyle( - string, - singleLineOnly, - state.indent, - lineWidth, - testAmbiguity, - state.quotingType, - state.forceQuotes && !iskey, - inblock - )) { - case STYLE_PLAIN: - return string; - case STYLE_SINGLE: - return "'" + string.replace(/'/g, "''") + "'"; - case STYLE_LITERAL: - return "|" + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent)); - case STYLE_FOLDED: - return ">" + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); - case STYLE_DOUBLE: - return '"' + escapeString(string) + '"'; - default: - throw new YAMLException2("impossible error: invalid scalar style"); - } - })(); - } - function blockHeader(string, indentPerLevel) { - const indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ""; - const clip = string[string.length - 1] === "\n"; - const keep = clip && (string[string.length - 2] === "\n" || string === "\n"); - const chomp = keep ? "+" : clip ? "" : "-"; - return indentIndicator + chomp + "\n"; - } - function dropEndingNewline(string) { - return string[string.length - 1] === "\n" ? string.slice(0, -1) : string; - } - function foldString(string, width) { - const lineRe = /(\n+)([^\n]*)/g; - let result = (function() { - let nextLF = string.indexOf("\n"); - nextLF = nextLF !== -1 ? nextLF : string.length; - lineRe.lastIndex = nextLF; - return foldLine(string.slice(0, nextLF), width); - })(); - let prevMoreIndented = string[0] === "\n" || string[0] === " "; - let moreIndented; - let match; - while (match = lineRe.exec(string)) { - const prefix = match[1]; - const line = match[2]; - moreIndented = line[0] === " "; - result += prefix + (!prevMoreIndented && !moreIndented && line !== "" ? "\n" : "") + foldLine(line, width); - prevMoreIndented = moreIndented; - } - return result; - } - function foldLine(line, width) { - if (line === "" || line[0] === " ") return line; - const breakRe = / [^ ]/g; - let match; - let start = 0; - let end; - let curr = 0; - let next = 0; - let result = ""; - while (match = breakRe.exec(line)) { - next = match.index; - if (next - start > width) { - end = curr > start ? curr : next; - result += "\n" + line.slice(start, end); - start = end + 1; - } - curr = next; - } - result += "\n"; - if (line.length - start > width && curr > start) { - result += line.slice(start, curr) + "\n" + line.slice(curr + 1); - } else { - result += line.slice(start); - } - return result.slice(1); - } - function escapeString(string) { - let result = ""; - let char = 0; - for (let i = 0; i < string.length; char >= 65536 ? i += 2 : i++) { - char = codePointAt(string, i); - const escapeSeq = ESCAPE_SEQUENCES[char]; - if (!escapeSeq && isPrintable(char)) { - result += string[i]; - if (char >= 65536) result += string[i + 1]; - } else { - result += escapeSeq || encodeHex(char); - } - } - return result; - } - function writeFlowSequence(state, level, object) { - let _result = ""; - const _tag = state.tag; - for (let index = 0, length = object.length; index < length; index += 1) { - let value = object[index]; - if (state.replacer) { - value = state.replacer.call(object, String(index), value); - } - if (writeNode(state, level, value, false, false) || typeof value === "undefined" && writeNode(state, level, null, false, false)) { - if (_result !== "") _result += "," + (!state.condenseFlow ? " " : ""); - _result += state.dump; - } - } - state.tag = _tag; - state.dump = "[" + _result + "]"; - } - function writeBlockSequence(state, level, object, compact) { - let _result = ""; - const _tag = state.tag; - for (let index = 0, length = object.length; index < length; index += 1) { - let value = object[index]; - if (state.replacer) { - value = state.replacer.call(object, String(index), value); - } - if (writeNode(state, level + 1, value, true, true, false, true) || typeof value === "undefined" && writeNode(state, level + 1, null, true, true, false, true)) { - if (!compact || _result !== "") { - _result += generateNextLine(state, level); - } - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - _result += "-"; - } else { - _result += "- "; - } - _result += state.dump; - } - } - state.tag = _tag; - state.dump = _result || "[]"; - } - function writeFlowMapping(state, level, object) { - let _result = ""; - const _tag = state.tag; - const objectKeyList = Object.keys(object); - for (let index = 0, length = objectKeyList.length; index < length; index += 1) { - let pairBuffer = ""; - if (_result !== "") pairBuffer += ", "; - if (state.condenseFlow) pairBuffer += '"'; - const objectKey = objectKeyList[index]; - let objectValue = object[objectKey]; - if (state.replacer) { - objectValue = state.replacer.call(object, objectKey, objectValue); - } - if (!writeNode(state, level, objectKey, false, false)) { - continue; - } - if (state.dump.length > 1024) pairBuffer += "? "; - pairBuffer += state.dump + (state.condenseFlow ? '"' : "") + ":" + (state.condenseFlow ? "" : " "); - if (!writeNode(state, level, objectValue, false, false)) { - continue; - } - pairBuffer += state.dump; - _result += pairBuffer; - } - state.tag = _tag; - state.dump = "{" + _result + "}"; - } - function writeBlockMapping(state, level, object, compact) { - let _result = ""; - const _tag = state.tag; - const objectKeyList = Object.keys(object); - if (state.sortKeys === true) { - objectKeyList.sort(); - } else if (typeof state.sortKeys === "function") { - objectKeyList.sort(state.sortKeys); - } else if (state.sortKeys) { - throw new YAMLException2("sortKeys must be a boolean or a function"); - } - for (let index = 0, length = objectKeyList.length; index < length; index += 1) { - let pairBuffer = ""; - if (!compact || _result !== "") { - pairBuffer += generateNextLine(state, level); - } - const objectKey = objectKeyList[index]; - let objectValue = object[objectKey]; - if (state.replacer) { - objectValue = state.replacer.call(object, objectKey, objectValue); - } - if (!writeNode(state, level + 1, objectKey, true, true, true)) { - continue; - } - const explicitPair = state.tag !== null && state.tag !== "?" || state.dump && state.dump.length > 1024; - if (explicitPair) { - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += "?"; - } else { - pairBuffer += "? "; - } - } - pairBuffer += state.dump; - if (explicitPair) { - pairBuffer += generateNextLine(state, level); - } - if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { - continue; - } - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += ":"; - } else { - pairBuffer += ": "; - } - pairBuffer += state.dump; - _result += pairBuffer; - } - state.tag = _tag; - state.dump = _result || "{}"; - } - function detectType(state, object, explicit) { - const typeList = explicit ? state.explicitTypes : state.implicitTypes; - for (let index = 0, length = typeList.length; index < length; index += 1) { - const type2 = typeList[index]; - if ((type2.instanceOf || type2.predicate) && (!type2.instanceOf || typeof object === "object" && object instanceof type2.instanceOf) && (!type2.predicate || type2.predicate(object))) { - if (explicit) { - if (type2.multi && type2.representName) { - state.tag = type2.representName(object); - } else { - state.tag = type2.tag; - } - } else { - state.tag = "?"; - } - if (type2.represent) { - const style = state.styleMap[type2.tag] || type2.defaultStyle; - let _result; - if (_toString.call(type2.represent) === "[object Function]") { - _result = type2.represent(object, style); - } else if (_hasOwnProperty.call(type2.represent, style)) { - _result = type2.represent[style](object, style); - } else { - throw new YAMLException2("!<" + type2.tag + '> tag resolver accepts not "' + style + '" style'); - } - state.dump = _result; - } - return true; - } - } - return false; - } - function writeNode(state, level, object, block, compact, iskey, isblockseq) { - state.tag = null; - state.dump = object; - if (!detectType(state, object, false)) { - detectType(state, object, true); - } - const type2 = _toString.call(state.dump); - const inblock = block; - if (block) { - block = state.flowLevel < 0 || state.flowLevel > level; - } - const objectOrArray = type2 === "[object Object]" || type2 === "[object Array]"; - let duplicateIndex; - let duplicate; - if (objectOrArray) { - duplicateIndex = state.duplicates.indexOf(object); - duplicate = duplicateIndex !== -1; - } - if (state.tag !== null && state.tag !== "?" || duplicate || state.indent !== 2 && level > 0) { - compact = false; - } - if (duplicate && state.usedDuplicates[duplicateIndex]) { - state.dump = "*ref_" + duplicateIndex; - } else { - if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { - state.usedDuplicates[duplicateIndex] = true; - } - if (type2 === "[object Object]") { - if (block && Object.keys(state.dump).length !== 0) { - writeBlockMapping(state, level, state.dump, compact); - if (duplicate) { - state.dump = "&ref_" + duplicateIndex + state.dump; - } - } else { - writeFlowMapping(state, level, state.dump); - if (duplicate) { - state.dump = "&ref_" + duplicateIndex + " " + state.dump; - } - } - } else if (type2 === "[object Array]") { - if (block && state.dump.length !== 0) { - if (state.noArrayIndent && !isblockseq && level > 0) { - writeBlockSequence(state, level - 1, state.dump, compact); - } else { - writeBlockSequence(state, level, state.dump, compact); - } - if (duplicate) { - state.dump = "&ref_" + duplicateIndex + state.dump; - } - } else { - writeFlowSequence(state, level, state.dump); - if (duplicate) { - state.dump = "&ref_" + duplicateIndex + " " + state.dump; - } - } - } else if (type2 === "[object String]") { - if (state.tag !== "?") { - writeScalar(state, state.dump, level, iskey, inblock); - } - } else if (type2 === "[object Undefined]") { - return false; - } else { - if (state.skipInvalid) return false; - throw new YAMLException2("unacceptable kind of an object to dump " + type2); - } - if (state.tag !== null && state.tag !== "?") { - let tagStr = encodeURI( - state.tag[0] === "!" ? state.tag.slice(1) : state.tag - ).replace(/!/g, "%21"); - if (state.tag[0] === "!") { - tagStr = "!" + tagStr; - } else if (tagStr.slice(0, 18) === "tag:yaml.org,2002:") { - tagStr = "!!" + tagStr.slice(18); - } else { - tagStr = "!<" + tagStr + ">"; - } - state.dump = tagStr + " " + state.dump; - } - } - return true; - } - function getDuplicateReferences(object, state) { - const objects = []; - const duplicatesIndexes = []; - inspectNode(object, objects, duplicatesIndexes); - const length = duplicatesIndexes.length; - for (let index = 0; index < length; index += 1) { - state.duplicates.push(objects[duplicatesIndexes[index]]); - } - state.usedDuplicates = new Array(length); - } - function inspectNode(object, objects, duplicatesIndexes) { - if (object !== null && typeof object === "object") { - const index = objects.indexOf(object); - if (index !== -1) { - if (duplicatesIndexes.indexOf(index) === -1) { - duplicatesIndexes.push(index); - } - } else { - objects.push(object); - if (Array.isArray(object)) { - for (let i = 0, length = object.length; i < length; i += 1) { - inspectNode(object[i], objects, duplicatesIndexes); - } - } else { - const objectKeyList = Object.keys(object); - for (let i = 0, length = objectKeyList.length; i < length; i += 1) { - inspectNode(object[objectKeyList[i]], objects, duplicatesIndexes); - } - } - } - } - } - function dump2(input, options) { - options = options || {}; - const state = new State(options); - if (!state.noRefs) getDuplicateReferences(input, state); - let value = input; - if (state.replacer) { - value = state.replacer.call({ "": value }, "", value); - } - if (writeNode(state, 0, value, true, true)) return state.dump + "\n"; - return ""; - } - dumper.dump = dump2; - return dumper; -} -var hasRequiredJsYaml; -function requireJsYaml() { - if (hasRequiredJsYaml) return jsYaml; - hasRequiredJsYaml = 1; - const loader2 = requireLoader(); - const dumper2 = requireDumper(); - function renamed(from, to) { - return function() { - throw new Error("Function yaml." + from + " is removed in js-yaml 4. Use yaml." + to + " instead, which is now safe by default."); - }; - } - jsYaml.Type = requireType(); - jsYaml.Schema = requireSchema(); - jsYaml.FAILSAFE_SCHEMA = requireFailsafe(); - jsYaml.JSON_SCHEMA = requireJson(); - jsYaml.CORE_SCHEMA = requireCore(); - jsYaml.DEFAULT_SCHEMA = require_default(); - jsYaml.load = loader2.load; - jsYaml.loadAll = loader2.loadAll; - jsYaml.dump = dumper2.dump; - jsYaml.YAMLException = requireException(); - jsYaml.types = { - binary: requireBinary(), - float: requireFloat(), - map: requireMap(), - null: require_null(), - pairs: requirePairs(), - set: requireSet(), - timestamp: requireTimestamp(), - bool: requireBool(), - int: requireInt(), - merge: requireMerge(), - omap: requireOmap(), - seq: requireSeq(), - str: requireStr() - }; - jsYaml.safeLoad = renamed("safeLoad", "load"); - jsYaml.safeLoadAll = renamed("safeLoadAll", "loadAll"); - jsYaml.safeDump = renamed("safeDump", "dump"); - return jsYaml; -} -var jsYamlExports = requireJsYaml(); -const yaml = /* @__PURE__ */ getDefaultExportFromCjs(jsYamlExports); -const { - Type, - Schema, - FAILSAFE_SCHEMA, - JSON_SCHEMA, - CORE_SCHEMA, - DEFAULT_SCHEMA, - load, - loadAll, - dump, - YAMLException, - types, - safeLoad, - safeLoadAll, - safeDump -} = yaml; -export { - CORE_SCHEMA, - DEFAULT_SCHEMA, - FAILSAFE_SCHEMA, - JSON_SCHEMA, - Schema, - Type, - YAMLException, - yaml as default, - dump, - load, - loadAll, - safeDump, - safeLoad, - safeLoadAll, - types -}; -//# sourceMappingURL=js-yaml.mjs.map diff --git a/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.mjs.map b/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.mjs.map deleted file mode 100644 index ced640c..0000000 --- a/sdks/nodejs/node_modules/js-yaml/dist/js-yaml.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js-yaml.mjs","sources":["../lib/common.js","../lib/exception.js","../lib/snippet.js","../lib/type.js","../lib/schema.js","../lib/type/str.js","../lib/type/seq.js","../lib/type/map.js","../lib/schema/failsafe.js","../lib/type/null.js","../lib/type/bool.js","../lib/type/int.js","../lib/type/float.js","../lib/schema/json.js","../lib/schema/core.js","../lib/type/timestamp.js","../lib/type/merge.js","../lib/type/binary.js","../lib/type/omap.js","../lib/type/pairs.js","../lib/type/set.js","../lib/schema/default.js","../lib/loader.js","../lib/dumper.js","../index.js","../lib/index_vite_proxy.tmp.mjs"],"sourcesContent":["'use strict'\n\nfunction isNothing (subject) {\n return (typeof subject === 'undefined') || (subject === null)\n}\n\nfunction isObject (subject) {\n return (typeof subject === 'object') && (subject !== null)\n}\n\nfunction toArray (sequence) {\n if (Array.isArray(sequence)) return sequence\n else if (isNothing(sequence)) return []\n\n return [sequence]\n}\n\nfunction extend (target, source) {\n if (source) {\n const sourceKeys = Object.keys(source)\n\n for (let index = 0, length = sourceKeys.length; index < length; index += 1) {\n const key = sourceKeys[index]\n target[key] = source[key]\n }\n }\n\n return target\n}\n\nfunction repeat (string, count) {\n let result = ''\n\n for (let cycle = 0; cycle < count; cycle += 1) {\n result += string\n }\n\n return result\n}\n\nfunction isNegativeZero (number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number)\n}\n\nmodule.exports.isNothing = isNothing\nmodule.exports.isObject = isObject\nmodule.exports.toArray = toArray\nmodule.exports.repeat = repeat\nmodule.exports.isNegativeZero = isNegativeZero\nmodule.exports.extend = extend\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict'\n\nfunction formatError (exception, compact) {\n let where = ''\n const message = exception.reason || '(unknown reason)'\n\n if (!exception.mark) return message\n\n if (exception.mark.name) {\n where += 'in \"' + exception.mark.name + '\" '\n }\n\n where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')'\n\n if (!compact && exception.mark.snippet) {\n where += '\\n\\n' + exception.mark.snippet\n }\n\n return message + ' ' + where\n}\n\nfunction YAMLException (reason, mark) {\n // Super constructor\n Error.call(this)\n\n this.name = 'YAMLException'\n this.reason = reason\n this.mark = mark\n this.message = formatError(this, false)\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor)\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || ''\n }\n}\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype)\nYAMLException.prototype.constructor = YAMLException\n\nYAMLException.prototype.toString = function toString (compact) {\n return this.name + ': ' + formatError(this, compact)\n}\n\nmodule.exports = YAMLException\n","'use strict'\n\nconst common = require('./common')\n\n// get snippet for a single line, respecting maxLength\nfunction getLine (buffer, lineStart, lineEnd, position, maxLineLength) {\n let head = ''\n let tail = ''\n const maxHalfLength = Math.floor(maxLineLength / 2) - 1\n\n if (position - lineStart > maxHalfLength) {\n head = ' ... '\n lineStart = position - maxHalfLength + head.length\n }\n\n if (lineEnd - position > maxHalfLength) {\n tail = ' ...'\n lineEnd = position + maxHalfLength - tail.length\n }\n\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n pos: position - lineStart + head.length // relative position\n }\n}\n\nfunction padStart (string, max) {\n return common.repeat(' ', max - string.length) + string\n}\n\nfunction makeSnippet (mark, options) {\n options = Object.create(options || null)\n\n if (!mark.buffer) return null\n\n if (!options.maxLength) options.maxLength = 79\n if (typeof options.indent !== 'number') options.indent = 1\n if (typeof options.linesBefore !== 'number') options.linesBefore = 3\n if (typeof options.linesAfter !== 'number') options.linesAfter = 2\n\n const re = /\\r?\\n|\\r|\\0/g\n const lineStarts = [0]\n const lineEnds = []\n let match\n let foundLineNo = -1\n\n while ((match = re.exec(mark.buffer))) {\n lineEnds.push(match.index)\n lineStarts.push(match.index + match[0].length)\n\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2\n }\n }\n\n if (foundLineNo < 0) foundLineNo = lineStarts.length - 1\n\n let result = ''\n const lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length\n const maxLineLength = options.maxLength - (options.indent + lineNoLength + 3)\n\n for (let i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0) break\n const line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n )\n result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n' + result\n }\n\n const line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength)\n result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n'\n result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n'\n\n for (let i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length) break\n const line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n )\n result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n'\n }\n\n return result.replace(/\\n$/, '')\n}\n\nmodule.exports = makeSnippet\n","'use strict'\n\nconst YAMLException = require('./exception')\n\nconst TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'multi',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'representName',\n 'defaultStyle',\n 'styleAliases'\n]\n\nconst YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n]\n\nfunction compileStyleAliases (map) {\n const result = {}\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style\n })\n })\n }\n\n return result\n}\n\nfunction Type (tag, options) {\n options = options || {}\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.')\n }\n })\n\n // TODO: Add tag format check.\n this.options = options // keep original options in case user wants to extend this type later\n this.tag = tag\n this.kind = options['kind'] || null\n this.resolve = options['resolve'] || function () { return true }\n this.construct = options['construct'] || function (data) { return data }\n this.instanceOf = options['instanceOf'] || null\n this.predicate = options['predicate'] || null\n this.represent = options['represent'] || null\n this.representName = options['representName'] || null\n this.defaultStyle = options['defaultStyle'] || null\n this.multi = options['multi'] || false\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null)\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.')\n }\n}\n\nmodule.exports = Type\n","'use strict'\n\nconst YAMLException = require('./exception')\nconst Type = require('./type')\n\nfunction compileList (schema, name) {\n const result = []\n\n schema[name].forEach(function (currentType) {\n let newIndex = result.length\n\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag &&\n previousType.kind === currentType.kind &&\n previousType.multi === currentType.multi) {\n newIndex = previousIndex\n }\n })\n\n result[newIndex] = currentType\n })\n\n return result\n}\n\nfunction compileMap (/* lists... */) {\n const result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }\n function collectType (type) {\n if (type.multi) {\n result.multi[type.kind].push(type)\n result.multi['fallback'].push(type)\n } else {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type\n }\n }\n\n for (let index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType)\n }\n return result\n}\n\nfunction Schema (definition) {\n return this.extend(definition)\n}\n\nSchema.prototype.extend = function extend (definition) {\n let implicit = []\n let explicit = []\n\n if (definition instanceof Type) {\n // Schema.extend(type)\n explicit.push(definition)\n } else if (Array.isArray(definition)) {\n // Schema.extend([ type1, type2, ... ])\n explicit = explicit.concat(definition)\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n if (definition.implicit) implicit = implicit.concat(definition.implicit)\n if (definition.explicit) explicit = explicit.concat(definition.explicit)\n } else {\n throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' +\n 'or a schema definition ({ implicit: [...], explicit: [...] })')\n }\n\n implicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.')\n }\n\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.')\n }\n\n if (type.multi) {\n throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.')\n }\n })\n\n explicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.')\n }\n })\n\n const result = Object.create(Schema.prototype)\n\n result.implicit = (this.implicit || []).concat(implicit)\n result.explicit = (this.explicit || []).concat(explicit)\n\n result.compiledImplicit = compileList(result, 'implicit')\n result.compiledExplicit = compileList(result, 'explicit')\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit)\n\n return result\n}\n\nmodule.exports = Schema\n","'use strict'\n\nconst Type = require('../type')\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : '' }\n})\n","'use strict'\n\nconst Type = require('../type')\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : [] }\n})\n","'use strict'\n\nconst Type = require('../type')\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {} }\n})\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n'use strict'\n\nconst Schema = require('../schema')\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n})\n","'use strict'\n\nconst Type = require('../type')\n\nfunction resolveYamlNull (data) {\n if (data === null) return true\n\n const max = data.length\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'))\n}\n\nfunction constructYamlNull () {\n return null\n}\n\nfunction isNull (object) {\n return object === null\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~' },\n lowercase: function () { return 'null' },\n uppercase: function () { return 'NULL' },\n camelcase: function () { return 'Null' },\n empty: function () { return '' }\n },\n defaultStyle: 'lowercase'\n})\n","'use strict'\n\nconst Type = require('../type')\n\nfunction resolveYamlBoolean (data) {\n if (data === null) return false\n\n const max = data.length\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'))\n}\n\nfunction constructYamlBoolean (data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE'\n}\n\nfunction isBoolean (object) {\n return Object.prototype.toString.call(object) === '[object Boolean]'\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false' },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE' },\n camelcase: function (object) { return object ? 'True' : 'False' }\n },\n defaultStyle: 'lowercase'\n})\n","'use strict'\n\nconst common = require('../common')\nconst Type = require('../type')\n\nfunction isHexCode (c) {\n return ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) ||\n ((c >= 0x41/* A */) && (c <= 0x46/* F */)) ||\n ((c >= 0x61/* a */) && (c <= 0x66/* f */))\n}\n\nfunction isOctCode (c) {\n return ((c >= 0x30/* 0 */) && (c <= 0x37/* 7 */))\n}\n\nfunction isDecCode (c) {\n return ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */))\n}\n\nfunction resolveYamlInteger (data) {\n if (data === null) return false\n\n const max = data.length\n let index = 0\n let hasDigits = false\n\n if (!max) return false\n\n let ch = data[index]\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index]\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true\n ch = data[++index]\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++\n\n for (; index < max; index++) {\n ch = data[index]\n if (ch !== '0' && ch !== '1') return false\n hasDigits = true\n }\n return hasDigits && isFinite(parseYamlInteger(data))\n }\n\n if (ch === 'x') {\n // base 16\n index++\n\n for (; index < max; index++) {\n if (!isHexCode(data.charCodeAt(index))) return false\n hasDigits = true\n }\n return hasDigits && isFinite(parseYamlInteger(data))\n }\n\n if (ch === 'o') {\n // base 8\n index++\n\n for (; index < max; index++) {\n if (!isOctCode(data.charCodeAt(index))) return false\n hasDigits = true\n }\n return hasDigits && isFinite(parseYamlInteger(data))\n }\n }\n\n // base 10 (except 0)\n\n for (; index < max; index++) {\n if (!isDecCode(data.charCodeAt(index))) {\n return false\n }\n hasDigits = true\n }\n\n if (!hasDigits) return false\n\n return isFinite(parseYamlInteger(data))\n}\n\nfunction parseYamlInteger (data) {\n let value = data\n let sign = 1\n\n let ch = value[0]\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1\n value = value.slice(1)\n ch = value[0]\n }\n\n if (value === '0') return 0\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2)\n if (value[1] === 'x') return sign * parseInt(value.slice(2), 16)\n if (value[1] === 'o') return sign * parseInt(value.slice(2), 8)\n }\n\n return sign * parseInt(value, 10)\n}\n\nfunction constructYamlInteger (data) {\n return parseYamlInteger(data)\n}\n\nfunction isInteger (object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object))\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1) },\n octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1) },\n decimal: function (obj) { return obj.toString(10) },\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1) }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [2, 'bin'],\n octal: [8, 'oct'],\n decimal: [10, 'dec'],\n hexadecimal: [16, 'hex']\n }\n})\n","'use strict'\n\nconst common = require('../common')\nconst Type = require('../type')\n\nconst YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:[0-9]+)(?:\\\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9]+(?:[eE][-+]?[0-9]+)?' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$')\n\nconst YAML_FLOAT_SPECIAL_PATTERN = new RegExp(\n '^(?:' +\n // .inf\n '[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$')\n\nfunction resolveYamlFloat (data) {\n if (data === null) return false\n\n if (!YAML_FLOAT_PATTERN.test(data)) {\n return false\n }\n\n if (isFinite(parseFloat(data, 10))) {\n return true\n }\n\n return YAML_FLOAT_SPECIAL_PATTERN.test(data)\n}\n\nfunction constructYamlFloat (data) {\n let value = data.toLowerCase()\n const sign = value[0] === '-' ? -1 : 1\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1)\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY\n } else if (value === '.nan') {\n return NaN\n }\n return sign * parseFloat(value, 10)\n}\n\nconst SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/\n\nfunction representYamlFloat (object, style) {\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan'\n case 'uppercase': return '.NAN'\n case 'camelcase': return '.NaN'\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf'\n case 'uppercase': return '.INF'\n case 'camelcase': return '.Inf'\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf'\n case 'uppercase': return '-.INF'\n case 'camelcase': return '-.Inf'\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0'\n }\n\n const res = object.toString(10)\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res\n}\n\nfunction isFloat (object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object))\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n})\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n'use strict'\n\nmodule.exports = require('./failsafe').extend({\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n})\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n'use strict'\n\nmodule.exports = require('./json')\n","'use strict'\n\nconst Type = require('../type')\n\nconst YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$') // [3] day\n\nconst YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tzHour\n '(?::([0-9][0-9]))?))?$') // [11] tzMinute\n\nfunction resolveYamlTimestamp (data) {\n if (data === null) return false\n if (YAML_DATE_REGEXP.exec(data) !== null) return true\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true\n return false\n}\n\nfunction constructYamlTimestamp (data) {\n let fraction = 0\n let delta = null\n\n let match = YAML_DATE_REGEXP.exec(data)\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data)\n\n if (match === null) throw new Error('Date resolve error')\n\n // match: [1] year [2] month [3] day\n\n const year = +(match[1])\n const month = +(match[2]) - 1 // JS month starts with 0\n const day = +(match[3])\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day))\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n const hour = +(match[4])\n const minute = +(match[5])\n const second = +(match[6])\n\n if (match[7]) {\n fraction = match[7].slice(0, 3)\n while (fraction.length < 3) { // milli-seconds\n fraction += '0'\n }\n fraction = +fraction\n }\n\n // match: [8] tz [9] tz_sign [10] tzHour [11] tzMinute\n\n if (match[9]) {\n const tzHour = +(match[10])\n const tzMinute = +(match[11] || 0)\n delta = (tzHour * 60 + tzMinute) * 60000 // delta in mili-seconds\n if (match[9] === '-') delta = -delta\n }\n\n const date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction))\n\n if (delta) date.setTime(date.getTime() - delta)\n\n return date\n}\n\nfunction representYamlTimestamp (object /*, style */) {\n return object.toISOString()\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n})\n","'use strict'\n\nconst Type = require('../type')\n\nfunction resolveYamlMerge (data) {\n return data === '<<' || data === null\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n})\n","'use strict'\n\nconst Type = require('../type')\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nconst BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r'\n\nfunction resolveYamlBinary (data) {\n if (data === null) return false\n\n let bitlen = 0\n const max = data.length\n const map = BASE64_MAP\n\n // Convert one by one.\n for (let idx = 0; idx < max; idx++) {\n const code = map.indexOf(data.charAt(idx))\n\n // Skip CR/LF\n if (code > 64) continue\n\n // Fail on illegal characters\n if (code < 0) return false\n\n bitlen += 6\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0\n}\n\nfunction constructYamlBinary (data) {\n const input = data.replace(/[\\r\\n=]/g, '') // remove CR/LF & padding to simplify scan\n const max = input.length\n const map = BASE64_MAP\n let bits = 0\n const result = []\n\n // Collect by 6*4 bits (3 bytes)\n\n for (let idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF)\n result.push((bits >> 8) & 0xFF)\n result.push(bits & 0xFF)\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx))\n }\n\n // Dump tail\n\n const tailbits = (max % 4) * 6\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF)\n result.push((bits >> 8) & 0xFF)\n result.push(bits & 0xFF)\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF)\n result.push((bits >> 2) & 0xFF)\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF)\n }\n\n return new Uint8Array(result)\n}\n\nfunction representYamlBinary (object /*, style */) {\n let result = ''\n let bits = 0\n const max = object.length\n const map = BASE64_MAP\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (let idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F]\n result += map[(bits >> 12) & 0x3F]\n result += map[(bits >> 6) & 0x3F]\n result += map[bits & 0x3F]\n }\n\n bits = (bits << 8) + object[idx]\n }\n\n // Dump tail\n\n const tail = max % 3\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F]\n result += map[(bits >> 12) & 0x3F]\n result += map[(bits >> 6) & 0x3F]\n result += map[bits & 0x3F]\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F]\n result += map[(bits >> 4) & 0x3F]\n result += map[(bits << 2) & 0x3F]\n result += map[64]\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F]\n result += map[(bits << 4) & 0x3F]\n result += map[64]\n result += map[64]\n }\n\n return result\n}\n\nfunction isBinary (obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]'\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n})\n","'use strict'\n\nconst Type = require('../type')\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\nconst _toString = Object.prototype.toString\n\nfunction resolveYamlOmap (data) {\n if (data === null) return true\n\n const objectKeys = {}\n const object = data\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n const pair = object[index]\n let pairHasKey = false\n\n if (_toString.call(pair) !== '[object Object]') return false\n\n let pairKey\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true\n else return false\n }\n }\n\n if (!pairHasKey) return false\n\n if (_hasOwnProperty.call(objectKeys, pairKey)) return false\n Object.defineProperty(objectKeys, pairKey, { value: true })\n }\n\n return true\n}\n\nfunction constructYamlOmap (data) {\n return data !== null ? data : []\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n})\n","'use strict'\n\nconst Type = require('../type')\n\nconst _toString = Object.prototype.toString\n\nfunction resolveYamlPairs (data) {\n if (data === null) return true\n\n const object = data\n\n const result = new Array(object.length)\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n const pair = object[index]\n\n if (_toString.call(pair) !== '[object Object]') return false\n\n const keys = Object.keys(pair)\n\n if (keys.length !== 1) return false\n\n result[index] = [keys[0], pair[keys[0]]]\n }\n\n return true\n}\n\nfunction constructYamlPairs (data) {\n if (data === null) return []\n\n const object = data\n const result = new Array(object.length)\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n const pair = object[index]\n\n const keys = Object.keys(pair)\n\n result[index] = [keys[0], pair[keys[0]]]\n }\n\n return result\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n})\n","'use strict'\n\nconst Type = require('../type')\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction resolveYamlSet (data) {\n if (data === null) return true\n\n const object = data\n\n for (const key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false\n }\n }\n\n return true\n}\n\nfunction constructYamlSet (data) {\n return data !== null ? data : {}\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n})\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n'use strict'\n\nmodule.exports = require('./core').extend({\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n})\n","'use strict'\n\nconst common = require('./common')\nconst YAMLException = require('./exception')\nconst makeSnippet = require('./snippet')\nconst DEFAULT_SCHEMA = require('./schema/default')\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nconst CONTEXT_FLOW_IN = 1\nconst CONTEXT_FLOW_OUT = 2\nconst CONTEXT_BLOCK_IN = 3\nconst CONTEXT_BLOCK_OUT = 4\n\nconst CHOMPING_CLIP = 1\nconst CHOMPING_STRIP = 2\nconst CHOMPING_KEEP = 3\n\n// eslint-disable-next-line no-control-regex\nconst PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/\nconst PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/\n// eslint-disable-next-line no-useless-escape\nconst PATTERN_FLOW_INDICATORS = /[,\\[\\]{}]/\n// eslint-disable-next-line no-useless-escape\nconst PATTERN_TAG_HANDLE = /^(?:!|!!|![0-9A-Za-z-]+!)$/\n// eslint-disable-next-line no-useless-escape\nconst PATTERN_TAG_URI = /^(?:!|[^,\\[\\]{}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;/?:@&=+$,_.!~*'()\\[\\]])*$/i\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\n\nfunction isEol (c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */)\n}\n\nfunction isWhiteSpace (c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */)\n}\n\nfunction isWsOrEol (c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */)\n}\n\nfunction isFlowIndicator (c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */\n}\n\nfunction fromHexCode (c) {\n if ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) {\n return c - 0x30\n }\n\n const lc = c | 0x20\n\n if ((lc >= 0x61/* a */) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10\n }\n\n return -1\n}\n\nfunction escapedHexLen (c) {\n if (c === 0x78/* x */) { return 2 }\n if (c === 0x75/* u */) { return 4 }\n if (c === 0x55/* U */) { return 8 }\n return 0\n}\n\nfunction fromDecimalCode (c) {\n if ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) {\n return c - 0x30\n }\n\n return -1\n}\n\nfunction simpleEscapeSequence (c) {\n switch (c) {\n case 0x30/* 0 */: return '\\x00'\n case 0x61/* a */: return '\\x07'\n case 0x62/* b */: return '\\x08'\n case 0x74/* t */: return '\\x09'\n case 0x09/* Tab */: return '\\x09'\n case 0x6E/* n */: return '\\x0A'\n case 0x76/* v */: return '\\x0B'\n case 0x66/* f */: return '\\x0C'\n case 0x72/* r */: return '\\x0D'\n case 0x65/* e */: return '\\x1B'\n case 0x20/* Space */: return ' '\n case 0x22/* \" */: return '\\x22'\n case 0x2F/* / */: return '/'\n case 0x5C/* \\ */: return '\\x5C'\n case 0x4E/* N */: return '\\x85'\n case 0x5F/* _ */: return '\\xA0'\n case 0x4C/* L */: return '\\u2028'\n case 0x50/* P */: return '\\u2029'\n default: return ''\n }\n}\n\nfunction charFromCodepoint (c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c)\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n )\n}\n\n// set a property of a literal object, while protecting against prototype pollution,\n// see https://github.com/nodeca/js-yaml/issues/164 for more details\nfunction setProperty (object, key, value) {\n // used for this specific key only because Object.defineProperty is slow\n if (key === '__proto__') {\n Object.defineProperty(object, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: value\n })\n } else {\n object[key] = value\n }\n}\n\nconst simpleEscapeCheck = new Array(256) // integer, for fast access\nconst simpleEscapeMap = new Array(256)\nfor (let i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0\n simpleEscapeMap[i] = simpleEscapeSequence(i)\n}\n\nfunction State (input, options) {\n this.input = input\n\n this.filename = options['filename'] || null\n this.schema = options['schema'] || DEFAULT_SCHEMA\n this.onWarning = options['onWarning'] || null\n // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n // if such documents have no explicit %YAML directive\n this.legacy = options['legacy'] || false\n\n this.json = options['json'] || false\n this.listener = options['listener'] || null\n this.maxDepth = typeof options['maxDepth'] === 'number' ? options['maxDepth'] : 100\n this.maxTotalMergeKeys = typeof options['maxTotalMergeKeys'] === 'number' ? options['maxTotalMergeKeys'] : 10000\n\n this.implicitTypes = this.schema.compiledImplicit\n this.typeMap = this.schema.compiledTypeMap\n\n this.length = input.length\n this.position = 0\n this.line = 0\n this.lineStart = 0\n this.lineIndent = 0\n this.depth = 0\n this.totalMergeKeys = 0\n\n // position of first leading tab in the current line,\n // used to make sure there are no tabs in the indentation\n this.firstTabInLine = -1\n\n this.documents = []\n this.anchorMapTransactions = []\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result; */\n}\n\nfunction generateError (state, message) {\n const mark = {\n name: state.filename,\n buffer: state.input.slice(0, -1), // omit trailing \\0\n position: state.position,\n line: state.line,\n column: state.position - state.lineStart\n }\n\n mark.snippet = makeSnippet(mark)\n\n return new YAMLException(message, mark)\n}\n\nfunction throwError (state, message) {\n throw generateError(state, message)\n}\n\nfunction throwWarning (state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message))\n }\n}\n\nfunction storeAnchor (state, name, value) {\n const transactions = state.anchorMapTransactions\n\n if (transactions.length !== 0) {\n const transaction = transactions[transactions.length - 1]\n\n if (!_hasOwnProperty.call(transaction, name)) {\n transaction[name] = {\n existed: _hasOwnProperty.call(state.anchorMap, name),\n value: state.anchorMap[name]\n }\n }\n }\n\n state.anchorMap[name] = value\n}\n\nfunction beginAnchorTransaction (state) {\n state.anchorMapTransactions.push(Object.create(null))\n}\n\nfunction commitAnchorTransaction (state) {\n const transaction = state.anchorMapTransactions.pop()\n const transactions = state.anchorMapTransactions\n\n if (transactions.length === 0) return\n\n const parent = transactions[transactions.length - 1]\n const names = Object.keys(transaction)\n\n for (let index = 0, length = names.length; index < length; index += 1) {\n const name = names[index]\n\n if (!_hasOwnProperty.call(parent, name)) {\n parent[name] = transaction[name]\n }\n }\n}\n\nfunction rollbackAnchorTransaction (state) {\n const transaction = state.anchorMapTransactions.pop()\n const names = Object.keys(transaction)\n\n for (let index = names.length - 1; index >= 0; index -= 1) {\n const entry = transaction[names[index]]\n\n if (entry.existed) {\n state.anchorMap[names[index]] = entry.value\n } else {\n delete state.anchorMap[names[index]]\n }\n }\n}\n\nfunction snapshotState (state) {\n return {\n position: state.position,\n line: state.line,\n lineStart: state.lineStart,\n lineIndent: state.lineIndent,\n firstTabInLine: state.firstTabInLine,\n tag: state.tag,\n anchor: state.anchor,\n kind: state.kind,\n result: state.result\n }\n}\n\nfunction restoreState (state, snapshot) {\n state.position = snapshot.position\n state.line = snapshot.line\n state.lineStart = snapshot.lineStart\n state.lineIndent = snapshot.lineIndent\n state.firstTabInLine = snapshot.firstTabInLine\n state.tag = snapshot.tag\n state.anchor = snapshot.anchor\n state.kind = snapshot.kind\n state.result = snapshot.result\n}\n\nconst directiveHandlers = {\n\n YAML: function handleYamlDirective (state, name, args) {\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive')\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument')\n }\n\n const match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0])\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive')\n }\n\n const major = parseInt(match[1], 10)\n const minor = parseInt(match[2], 10)\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document')\n }\n\n state.version = args[0]\n state.checkLineBreaks = (minor < 2)\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document')\n }\n },\n\n TAG: function handleTagDirective (state, name, args) {\n let prefix\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments')\n }\n\n const handle = args[0]\n prefix = args[1]\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive')\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle')\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive')\n }\n\n try {\n prefix = decodeURIComponent(prefix)\n } catch (err) {\n throwError(state, 'tag prefix is malformed: ' + prefix)\n }\n\n state.tagMap[handle] = prefix\n }\n}\n\nfunction captureSegment (state, start, end, checkJson) {\n if (start < end) {\n const _result = state.input.slice(start, end)\n\n if (checkJson) {\n for (let _position = 0, _length = _result.length; _position < _length; _position += 1) {\n const _character = _result.charCodeAt(_position)\n if (!(_character === 0x09 ||\n (_character >= 0x20 && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character')\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters')\n }\n\n state.result += _result\n }\n}\n\nfunction chargeMergeWork (state) {\n state.totalMergeKeys++\n\n if (state.maxTotalMergeKeys !== -1 && state.totalMergeKeys > state.maxTotalMergeKeys) {\n throwError(state, 'merge keys exceeded maxTotalMergeKeys (' + state.maxTotalMergeKeys + ')')\n }\n}\n\nfunction mergeMappings (state, destination, source, overridableKeys) {\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable')\n }\n\n // Count the source mapping itself to bound sequences of empty mappings.\n chargeMergeWork(state)\n\n const sourceKeys = Object.keys(source)\n\n for (let index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n const key = sourceKeys[index]\n\n chargeMergeWork(state)\n\n if (!_hasOwnProperty.call(destination, key)) {\n setProperty(destination, key, source[key])\n overridableKeys[key] = true\n }\n }\n}\n\nfunction storeMappingPair (state, _result, overridableKeys, keyTag, keyNode, valueNode,\n startLine, startLineStart, startPos) {\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode)\n\n for (let index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys')\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]'\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]'\n }\n\n keyNode = String(keyNode)\n\n if (_result === null) {\n _result = {}\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n if (valueNode.length > 100) {\n throwError(state, 'abnormal merge sequence size')\n }\n\n for (let index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys)\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys)\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line\n state.lineStart = startLineStart || state.lineStart\n state.position = startPos || state.position\n throwError(state, 'duplicated mapping key')\n }\n\n setProperty(_result, keyNode, valueNode)\n delete overridableKeys[keyNode]\n }\n\n return _result\n}\n\nfunction readLineBreak (state) {\n const ch = state.input.charCodeAt(state.position)\n\n if (ch === 0x0A/* LF */) {\n state.position++\n } else if (ch === 0x0D/* CR */) {\n state.position++\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++\n }\n } else {\n throwError(state, 'a line break is expected')\n }\n\n state.line += 1\n state.lineStart = state.position\n state.firstTabInLine = -1\n}\n\nfunction skipSeparationSpace (state, allowComments, checkIndent) {\n let lineBreaks = 0\n let ch = state.input.charCodeAt(state.position)\n\n while (ch !== 0) {\n while (isWhiteSpace(ch)) {\n if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n state.firstTabInLine = state.position\n }\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position)\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0)\n }\n\n if (isEol(ch)) {\n readLineBreak(state)\n\n ch = state.input.charCodeAt(state.position)\n lineBreaks++\n state.lineIndent = 0\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++\n ch = state.input.charCodeAt(++state.position)\n }\n } else {\n break\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation')\n }\n\n return lineBreaks\n}\n\nfunction testDocumentSeparator (state) {\n let _position = state.position\n let ch = state.input.charCodeAt(_position)\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n _position += 3\n\n ch = state.input.charCodeAt(_position)\n\n if (ch === 0 || isWsOrEol(ch)) {\n return true\n }\n }\n\n return false\n}\n\nfunction writeFoldedLines (state, count) {\n if (count === 1) {\n state.result += ' '\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1)\n }\n}\n\nfunction readPlainScalar (state, nodeIndent, withinFlowCollection) {\n let captureStart\n let captureEnd\n let hasPendingContent\n let _line\n let _lineStart\n let _lineIndent\n const _kind = state.kind\n const _result = state.result\n\n let ch = state.input.charCodeAt(state.position)\n\n if (isWsOrEol(ch) ||\n isFlowIndicator(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n const following = state.input.charCodeAt(state.position + 1)\n\n if (isWsOrEol(following) ||\n (withinFlowCollection && isFlowIndicator(following))) {\n return false\n }\n }\n\n state.kind = 'scalar'\n state.result = ''\n captureStart = captureEnd = state.position\n hasPendingContent = false\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n const following = state.input.charCodeAt(state.position + 1)\n\n if (isWsOrEol(following) ||\n (withinFlowCollection && isFlowIndicator(following))) {\n break\n }\n } else if (ch === 0x23/* # */) {\n const preceding = state.input.charCodeAt(state.position - 1)\n\n if (isWsOrEol(preceding)) {\n break\n }\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n (withinFlowCollection && isFlowIndicator(ch))) {\n break\n } else if (isEol(ch)) {\n _line = state.line\n _lineStart = state.lineStart\n _lineIndent = state.lineIndent\n skipSeparationSpace(state, false, -1)\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true\n ch = state.input.charCodeAt(state.position)\n continue\n } else {\n state.position = captureEnd\n state.line = _line\n state.lineStart = _lineStart\n state.lineIndent = _lineIndent\n break\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false)\n writeFoldedLines(state, state.line - _line)\n captureStart = captureEnd = state.position\n hasPendingContent = false\n }\n\n if (!isWhiteSpace(ch)) {\n captureEnd = state.position + 1\n }\n\n ch = state.input.charCodeAt(++state.position)\n }\n\n captureSegment(state, captureStart, captureEnd, false)\n\n if (state.result) {\n return true\n }\n\n state.kind = _kind\n state.result = _result\n return false\n}\n\nfunction readSingleQuotedScalar (state, nodeIndent) {\n let captureStart\n let captureEnd\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x27/* ' */) {\n return false\n }\n\n state.kind = 'scalar'\n state.result = ''\n state.position++\n captureStart = captureEnd = state.position\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true)\n ch = state.input.charCodeAt(++state.position)\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position\n state.position++\n captureEnd = state.position\n } else {\n return true\n }\n } else if (isEol(ch)) {\n captureSegment(state, captureStart, captureEnd, true)\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent))\n captureStart = captureEnd = state.position\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar')\n } else {\n state.position++\n if (!isWhiteSpace(ch)) {\n captureEnd = state.position\n }\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar')\n}\n\nfunction readDoubleQuotedScalar (state, nodeIndent) {\n let captureStart\n let captureEnd\n let tmp\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x22/* \" */) {\n return false\n }\n\n state.kind = 'scalar'\n state.result = ''\n state.position++\n captureStart = captureEnd = state.position\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true)\n state.position++\n return true\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true)\n ch = state.input.charCodeAt(++state.position)\n\n if (isEol(ch)) {\n skipSeparationSpace(state, false, nodeIndent)\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch]\n state.position++\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n let hexLength = tmp\n let hexResult = 0\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position)\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp\n } else {\n throwError(state, 'expected hexadecimal character')\n }\n }\n\n state.result += charFromCodepoint(hexResult)\n\n state.position++\n } else {\n throwError(state, 'unknown escape sequence')\n }\n\n captureStart = captureEnd = state.position\n } else if (isEol(ch)) {\n captureSegment(state, captureStart, captureEnd, true)\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent))\n captureStart = captureEnd = state.position\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar')\n } else {\n state.position++\n if (!isWhiteSpace(ch)) {\n captureEnd = state.position\n }\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar')\n}\n\nfunction readFlowCollection (state, nodeIndent) {\n let readNext = true\n let _line\n let _lineStart\n let _pos\n const _tag = state.tag\n let _result\n const _anchor = state.anchor\n let terminator\n let isPair\n let isExplicitPair\n let isMapping\n const overridableKeys = Object.create(null)\n let keyNode\n let keyTag\n let valueNode\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D/* ] */\n isMapping = false\n _result = []\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D/* } */\n isMapping = true\n _result = {}\n } else {\n return false\n }\n\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, _result)\n }\n\n ch = state.input.charCodeAt(++state.position)\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent)\n\n ch = state.input.charCodeAt(state.position)\n\n if (ch === terminator) {\n state.position++\n state.tag = _tag\n state.anchor = _anchor\n state.kind = isMapping ? 'mapping' : 'sequence'\n state.result = _result\n return true\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries')\n } else if (ch === 0x2C/* , */) {\n // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n throwError(state, \"expected the node content, but found ','\")\n }\n\n keyTag = keyNode = valueNode = null\n isPair = isExplicitPair = false\n\n if (ch === 0x3F/* ? */) {\n const following = state.input.charCodeAt(state.position + 1)\n\n if (isWsOrEol(following)) {\n isPair = isExplicitPair = true\n state.position++\n skipSeparationSpace(state, true, nodeIndent)\n }\n }\n\n _line = state.line // Save the current line.\n _lineStart = state.lineStart\n _pos = state.position\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true)\n keyTag = state.tag\n keyNode = state.result\n skipSeparationSpace(state, true, nodeIndent)\n\n ch = state.input.charCodeAt(state.position)\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true\n ch = state.input.charCodeAt(++state.position)\n skipSeparationSpace(state, true, nodeIndent)\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true)\n valueNode = state.result\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos))\n } else {\n _result.push(keyNode)\n }\n\n skipSeparationSpace(state, true, nodeIndent)\n\n ch = state.input.charCodeAt(state.position)\n\n if (ch === 0x2C/* , */) {\n readNext = true\n ch = state.input.charCodeAt(++state.position)\n } else {\n readNext = false\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection')\n}\n\nfunction readBlockScalar (state, nodeIndent) {\n let folding\n let chomping = CHOMPING_CLIP\n let didReadContent = false\n let detectedIndent = false\n let textIndent = nodeIndent\n let emptyLines = 0\n let atMoreIndented = false\n let tmp\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch === 0x7C/* | */) {\n folding = false\n } else if (ch === 0x3E/* > */) {\n folding = true\n } else {\n return false\n }\n\n state.kind = 'scalar'\n state.result = ''\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position)\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP\n } else {\n throwError(state, 'repeat of a chomping mode identifier')\n }\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one')\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1\n detectedIndent = true\n } else {\n throwError(state, 'repeat of an indentation width identifier')\n }\n } else {\n break\n }\n }\n\n if (isWhiteSpace(ch)) {\n do { ch = state.input.charCodeAt(++state.position) }\n while (isWhiteSpace(ch))\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position) }\n while (!isEol(ch) && (ch !== 0))\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state)\n state.lineIndent = 0\n\n ch = state.input.charCodeAt(state.position)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent\n }\n\n if (isEol(ch)) {\n emptyLines++\n continue\n }\n\n if (!detectedIndent && textIndent === 0) {\n throwError(state, 'missing indentation for block scalar')\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines)\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n'\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (isWhiteSpace(ch)) {\n atMoreIndented = true\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines)\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false\n state.result += common.repeat('\\n', emptyLines + 1)\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' '\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines)\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines)\n }\n\n didReadContent = true\n detectedIndent = true\n emptyLines = 0\n const captureStart = state.position\n\n while (!isEol(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n captureSegment(state, captureStart, state.position, false)\n }\n\n return true\n}\n\nfunction readBlockSequence (state, nodeIndent) {\n const _tag = state.tag\n const _anchor = state.anchor\n const _result = []\n let detected = false\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false\n\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, _result)\n }\n\n let ch = state.input.charCodeAt(state.position)\n\n while (ch !== 0) {\n if (state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine\n throwError(state, 'tab characters must not be used in indentation')\n }\n\n if (ch !== 0x2D/* - */) {\n break\n }\n\n const following = state.input.charCodeAt(state.position + 1)\n\n if (!isWsOrEol(following)) {\n break\n }\n\n detected = true\n state.position++\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null)\n ch = state.input.charCodeAt(state.position)\n continue\n }\n }\n\n const _line = state.line\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true)\n _result.push(state.result)\n skipSeparationSpace(state, true, -1)\n\n ch = state.input.charCodeAt(state.position)\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry')\n } else if (state.lineIndent < nodeIndent) {\n break\n }\n }\n\n if (detected) {\n state.tag = _tag\n state.anchor = _anchor\n state.kind = 'sequence'\n state.result = _result\n return true\n }\n return false\n}\n\nfunction readBlockMapping (state, nodeIndent, flowIndent) {\n let allowCompact\n let _keyLine\n let _keyLineStart\n let _keyPos\n const _tag = state.tag\n const _anchor = state.anchor\n const _result = {}\n const overridableKeys = Object.create(null)\n let keyTag = null\n let keyNode = null\n let valueNode = null\n let atExplicitKey = false\n let detected = false\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false\n\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, _result)\n }\n\n let ch = state.input.charCodeAt(state.position)\n\n while (ch !== 0) {\n if (!atExplicitKey && state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine\n throwError(state, 'tab characters must not be used in indentation')\n }\n\n const following = state.input.charCodeAt(state.position + 1)\n const _line = state.line // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && isWsOrEol(following)) {\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos)\n keyTag = keyNode = valueNode = null\n }\n\n detected = true\n atExplicitKey = true\n allowCompact = true\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false\n allowCompact = true\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line')\n }\n\n state.position += 1\n ch = following\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else {\n _keyLine = state.line\n _keyLineStart = state.lineStart\n _keyPos = state.position\n\n if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n // Neither implicit nor explicit notation.\n // Reading is done. Go to the epilogue.\n break\n }\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position)\n\n while (isWhiteSpace(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position)\n\n if (!isWsOrEol(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping')\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos)\n keyTag = keyNode = valueNode = null\n }\n\n detected = true\n atExplicitKey = false\n allowCompact = false\n keyTag = state.tag\n keyNode = state.result\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed')\n } else {\n state.tag = _tag\n state.anchor = _anchor\n return true // Keep the result of `composeNode`.\n }\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key')\n } else {\n state.tag = _tag\n state.anchor = _anchor\n return true // Keep the result of `composeNode`.\n }\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state.line\n _keyLineStart = state.lineStart\n _keyPos = state.position\n }\n\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result\n } else {\n valueNode = state.result\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos)\n keyTag = keyNode = valueNode = null\n }\n\n skipSeparationSpace(state, true, -1)\n ch = state.input.charCodeAt(state.position)\n }\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry')\n } else if (state.lineIndent < nodeIndent) {\n break\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos)\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag\n state.anchor = _anchor\n state.kind = 'mapping'\n state.result = _result\n }\n\n return detected\n}\n\nfunction readTagProperty (state) {\n let isVerbatim = false\n let isNamed = false\n let tagHandle\n let tagName\n\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x21/* ! */) return false\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property')\n }\n\n ch = state.input.charCodeAt(++state.position)\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true\n ch = state.input.charCodeAt(++state.position)\n } else if (ch === 0x21/* ! */) {\n isNamed = true\n tagHandle = '!!'\n ch = state.input.charCodeAt(++state.position)\n } else {\n tagHandle = '!'\n }\n\n let _position = state.position\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position) }\n while (ch !== 0 && ch !== 0x3E/* > */)\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position)\n ch = state.input.charCodeAt(++state.position)\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag')\n }\n } else {\n while (ch !== 0 && !isWsOrEol(ch)) {\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1)\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters')\n }\n\n isNamed = true\n _position = state.position + 1\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks')\n }\n }\n\n ch = state.input.charCodeAt(++state.position)\n }\n\n tagName = state.input.slice(_position, state.position)\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters')\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName)\n }\n\n try {\n tagName = decodeURIComponent(tagName)\n } catch (err) {\n throwError(state, 'tag name is malformed: ' + tagName)\n }\n\n if (isVerbatim) {\n state.tag = tagName\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"')\n }\n\n return true\n}\n\nfunction readAnchorProperty (state) {\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x26/* & */) return false\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property')\n }\n\n ch = state.input.charCodeAt(++state.position)\n const _position = state.position\n\n while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character')\n }\n\n state.anchor = state.input.slice(_position, state.position)\n return true\n}\n\nfunction readAlias (state) {\n let ch = state.input.charCodeAt(state.position)\n\n if (ch !== 0x2A/* * */) return false\n\n ch = state.input.charCodeAt(++state.position)\n const _position = state.position\n\n while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character')\n }\n\n const alias = state.input.slice(_position, state.position)\n\n if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"')\n }\n\n state.result = state.anchorMap[alias]\n skipSeparationSpace(state, true, -1)\n return true\n}\n\nfunction tryReadBlockMappingFromProperty (state, propertyStart, nodeIndent, flowIndent) {\n const fallbackState = snapshotState(state)\n\n beginAnchorTransaction(state)\n restoreState(state, propertyStart)\n\n // Re-read the leading properties as part of the first implicit key, not as\n // properties of the current node.\n state.tag = null\n state.anchor = null\n state.kind = null\n state.result = null\n\n if (readBlockMapping(state, nodeIndent, flowIndent) && state.kind === 'mapping') {\n commitAnchorTransaction(state)\n return true\n }\n\n rollbackAnchorTransaction(state)\n restoreState(state, fallbackState)\n return false\n}\n\nfunction composeNode (state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n let allowBlockScalars\n let allowBlockCollections\n let indentStatus = 1 // 1: this>parent, 0: this=parent, -1: this= state.maxDepth) {\n throwError(state, 'nesting exceeded maxDepth (' + state.maxDepth + ')')\n }\n\n state.depth += 1\n\n if (state.listener !== null) {\n state.listener('open', state)\n }\n\n state.tag = null\n state.anchor = null\n state.kind = null\n state.result = null\n\n const allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1\n }\n }\n }\n\n if (indentStatus === 1) {\n while (true) {\n const ch = state.input.charCodeAt(state.position)\n const propertyState = snapshotState(state)\n\n // A duplicate property token after a line break can be the first key of\n // a nested block mapping, e.g. `!!map\\n !!str key: value`.\n if (atNewLine &&\n ((ch === 0x21/* ! */ && state.tag !== null) ||\n (ch === 0x26/* & */ && state.anchor !== null))) {\n break\n }\n\n if (!readTagProperty(state) && !readAnchorProperty(state)) {\n break\n }\n\n if (propertyStart === null) {\n propertyStart = propertyState\n }\n\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true\n allowBlockCollections = allowBlockStyles\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1\n }\n } else {\n allowBlockCollections = false\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent\n } else {\n flowIndent = parentIndent + 1\n }\n\n blockIndent = state.position - state.lineStart\n\n if (indentStatus === 1) {\n if ((allowBlockCollections &&\n (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent))) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true\n } else {\n const ch = state.input.charCodeAt(state.position)\n\n if (propertyStart !== null && allowBlockStyles && !allowBlockCollections &&\n ch !== 0x7C/* | */ && ch !== 0x3E/* > */ &&\n tryReadBlockMappingFromProperty(\n state,\n propertyStart,\n propertyStart.position - propertyStart.lineStart,\n flowIndent\n )) {\n hasContent = true\n } else if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true\n } else if (readAlias(state)) {\n hasContent = true\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties')\n }\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true\n\n if (state.tag === null) {\n state.tag = '?'\n }\n }\n\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, state.result)\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent)\n }\n }\n\n if (state.tag === null) {\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, state.result)\n }\n } else if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"! [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for ! tag; it should be \"scalar\", not \"' + state.kind + '\"')\n }\n\n for (let typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex]\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result)\n state.tag = type.tag\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, state.result)\n }\n break\n }\n }\n } else if (state.tag !== '!') {\n if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag]\n } else {\n // looking for multi type\n type = null\n const typeList = state.typeMap.multi[state.kind || 'fallback']\n\n for (let typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type = typeList[typeIndex]\n break\n }\n }\n }\n\n if (!type) {\n throwError(state, 'unknown tag !<' + state.tag + '>')\n }\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"')\n }\n\n if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag')\n } else {\n state.result = type.construct(state.result, state.tag)\n if (state.anchor !== null) {\n storeAnchor(state, state.anchor, state.result)\n }\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state)\n }\n\n state.depth -= 1\n return state.tag !== null || state.anchor !== null || hasContent\n}\n\nfunction readDocument (state) {\n const documentStart = state.position\n let hasDirectives = false\n let ch\n\n state.version = null\n state.checkLineBreaks = state.legacy\n state.tagMap = Object.create(null)\n state.anchorMap = Object.create(null)\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1)\n\n ch = state.input.charCodeAt(state.position)\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break\n }\n\n hasDirectives = true\n ch = state.input.charCodeAt(++state.position)\n let _position = state.position\n\n while (ch !== 0 && !isWsOrEol(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n const directiveName = state.input.slice(_position, state.position)\n const directiveArgs = []\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length')\n }\n\n while (ch !== 0) {\n while (isWhiteSpace(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position) }\n while (ch !== 0 && !isEol(ch))\n break\n }\n\n if (isEol(ch)) break\n\n _position = state.position\n\n while (ch !== 0 && !isWsOrEol(ch)) {\n ch = state.input.charCodeAt(++state.position)\n }\n\n directiveArgs.push(state.input.slice(_position, state.position))\n }\n\n if (ch !== 0) readLineBreak(state)\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs)\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"')\n }\n }\n\n skipSeparationSpace(state, true, -1)\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3\n skipSeparationSpace(state, true, -1)\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected')\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true)\n skipSeparationSpace(state, true, -1)\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content')\n }\n\n state.documents.push(state.result)\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3\n skipSeparationSpace(state, true, -1)\n }\n return\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected')\n }\n}\n\nfunction loadDocuments (input, options) {\n input = String(input)\n options = options || {}\n\n if (input.length !== 0) {\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n'\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1)\n }\n }\n\n const state = new State(input, options)\n\n const nullpos = input.indexOf('\\0')\n\n if (nullpos !== -1) {\n state.position = nullpos\n throwError(state, 'null byte is not allowed in input')\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0'\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1\n state.position += 1\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state)\n }\n\n return state.documents\n}\n\nfunction loadAll (input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator\n iterator = null\n }\n\n const documents = loadDocuments(input, options)\n\n if (typeof iterator !== 'function') {\n return documents\n }\n\n for (let index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index])\n }\n}\n\nfunction load (input, options) {\n const documents = loadDocuments(input, options)\n\n if (documents.length === 0) {\n return undefined\n } else if (documents.length === 1) {\n return documents[0]\n }\n throw new YAMLException('expected a single document in the stream, but found more')\n}\n\nmodule.exports.loadAll = loadAll\nmodule.exports.load = load\n","'use strict'\n\nconst common = require('./common')\nconst YAMLException = require('./exception')\nconst DEFAULT_SCHEMA = require('./schema/default')\n\nconst _toString = Object.prototype.toString\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nconst CHAR_BOM = 0xFEFF\nconst CHAR_TAB = 0x09 /* Tab */\nconst CHAR_LINE_FEED = 0x0A /* LF */\nconst CHAR_CARRIAGE_RETURN = 0x0D /* CR */\nconst CHAR_SPACE = 0x20 /* Space */\nconst CHAR_EXCLAMATION = 0x21 /* ! */\nconst CHAR_DOUBLE_QUOTE = 0x22 /* \" */\nconst CHAR_SHARP = 0x23 /* # */\nconst CHAR_PERCENT = 0x25 /* % */\nconst CHAR_AMPERSAND = 0x26 /* & */\nconst CHAR_SINGLE_QUOTE = 0x27 /* ' */\nconst CHAR_ASTERISK = 0x2A /* * */\nconst CHAR_COMMA = 0x2C /* , */\nconst CHAR_MINUS = 0x2D /* - */\nconst CHAR_COLON = 0x3A /* : */\nconst CHAR_EQUALS = 0x3D /* = */\nconst CHAR_GREATER_THAN = 0x3E /* > */\nconst CHAR_QUESTION = 0x3F /* ? */\nconst CHAR_COMMERCIAL_AT = 0x40 /* @ */\nconst CHAR_LEFT_SQUARE_BRACKET = 0x5B /* [ */\nconst CHAR_RIGHT_SQUARE_BRACKET = 0x5D /* ] */\nconst CHAR_GRAVE_ACCENT = 0x60 /* ` */\nconst CHAR_LEFT_CURLY_BRACKET = 0x7B /* { */\nconst CHAR_VERTICAL_LINE = 0x7C /* | */\nconst CHAR_RIGHT_CURLY_BRACKET = 0x7D /* } */\n\nconst ESCAPE_SEQUENCES = {}\n\nESCAPE_SEQUENCES[0x00] = '\\\\0'\nESCAPE_SEQUENCES[0x07] = '\\\\a'\nESCAPE_SEQUENCES[0x08] = '\\\\b'\nESCAPE_SEQUENCES[0x09] = '\\\\t'\nESCAPE_SEQUENCES[0x0A] = '\\\\n'\nESCAPE_SEQUENCES[0x0B] = '\\\\v'\nESCAPE_SEQUENCES[0x0C] = '\\\\f'\nESCAPE_SEQUENCES[0x0D] = '\\\\r'\nESCAPE_SEQUENCES[0x1B] = '\\\\e'\nESCAPE_SEQUENCES[0x22] = '\\\\\"'\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\'\nESCAPE_SEQUENCES[0x85] = '\\\\N'\nESCAPE_SEQUENCES[0xA0] = '\\\\_'\nESCAPE_SEQUENCES[0x2028] = '\\\\L'\nESCAPE_SEQUENCES[0x2029] = '\\\\P'\n\nconst DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n]\n\nconst DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/\n\nfunction compileStyleMap (schema, map) {\n if (map === null) return {}\n\n const result = {}\n const keys = Object.keys(map)\n\n for (let index = 0, length = keys.length; index < length; index += 1) {\n let tag = keys[index]\n let style = String(map[tag])\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2)\n }\n const type = schema.compiledTypeMap['fallback'][tag]\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style]\n }\n\n result[tag] = style\n }\n\n return result\n}\n\nfunction encodeHex (character) {\n let handle\n let length\n\n const string = character.toString(16).toUpperCase()\n\n if (character <= 0xFF) {\n handle = 'x'\n length = 2\n } else if (character <= 0xFFFF) {\n handle = 'u'\n length = 4\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U'\n length = 8\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF')\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string\n}\n\nconst QUOTING_TYPE_SINGLE = 1\nconst QUOTING_TYPE_DOUBLE = 2\n\nfunction State (options) {\n this.schema = options['schema'] || DEFAULT_SCHEMA\n this.indent = Math.max(1, (options['indent'] || 2))\n this.noArrayIndent = options['noArrayIndent'] || false\n this.skipInvalid = options['skipInvalid'] || false\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel'])\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null)\n this.sortKeys = options['sortKeys'] || false\n this.lineWidth = options['lineWidth'] || 80\n this.noRefs = options['noRefs'] || false\n this.noCompatMode = options['noCompatMode'] || false\n this.condenseFlow = options['condenseFlow'] || false\n this.quotingType = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE\n this.forceQuotes = options['forceQuotes'] || false\n this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null\n\n this.implicitTypes = this.schema.compiledImplicit\n this.explicitTypes = this.schema.compiledExplicit\n\n this.tag = null\n this.result = ''\n\n this.duplicates = []\n this.usedDuplicates = null\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString (string, spaces) {\n const ind = common.repeat(' ', spaces)\n let position = 0\n let result = ''\n const length = string.length\n\n while (position < length) {\n let line\n const next = string.indexOf('\\n', position)\n if (next === -1) {\n line = string.slice(position)\n position = length\n } else {\n line = string.slice(position, next + 1)\n position = next + 1\n }\n\n if (line.length && line !== '\\n') result += ind\n\n result += line\n }\n\n return result\n}\n\nfunction generateNextLine (state, level) {\n return '\\n' + common.repeat(' ', state.indent * level)\n}\n\nfunction testImplicitResolving (state, str) {\n for (let index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n const type = state.implicitTypes[index]\n\n if (type.resolve(str)) {\n return true\n }\n }\n\n return false\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace (c) {\n return c === CHAR_SPACE || c === CHAR_TAB\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable (c) {\n return (c >= 0x00020 && c <= 0x00007E) ||\n ((c >= 0x000A1 && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) ||\n ((c >= 0x0E000 && c <= 0x00FFFD) && c !== CHAR_BOM) ||\n (c >= 0x10000 && c <= 0x10FFFF)\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace (c) {\n return isPrintable(c) &&\n c !== CHAR_BOM &&\n // - b-char\n c !== CHAR_CARRIAGE_RETURN &&\n c !== CHAR_LINE_FEED\n}\n\n// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out\n// c = flow-in ⇒ ns-plain-safe-in\n// c = block-key ⇒ ns-plain-safe-out\n// c = flow-key ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” )\n// | ( /* An ns-char preceding */ “#” )\n// | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe (c, prev, inblock) {\n const cIsNsCharOrWhitespace = isNsCharOrWhitespace(c)\n const cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c)\n return (\n (\n // ns-plain-safe\n inblock // c = flow-in\n ? cIsNsCharOrWhitespace\n : cIsNsCharOrWhitespace &&\n // - c-flow-indicator\n c !== CHAR_COMMA &&\n c !== CHAR_LEFT_SQUARE_BRACKET &&\n c !== CHAR_RIGHT_SQUARE_BRACKET &&\n c !== CHAR_LEFT_CURLY_BRACKET &&\n c !== CHAR_RIGHT_CURLY_BRACKET\n ) &&\n // ns-plain-char\n c !== CHAR_SHARP && // false on '#'\n !(prev === CHAR_COLON && !cIsNsChar)\n ) || // false on ': '\n (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) || // change to true on '[^ ]#'\n (prev === CHAR_COLON && cIsNsChar) // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst (c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n return isPrintable(c) &&\n c !== CHAR_BOM &&\n !isWhitespace(c) && // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n c !== CHAR_MINUS &&\n c !== CHAR_QUESTION &&\n c !== CHAR_COLON &&\n c !== CHAR_COMMA &&\n c !== CHAR_LEFT_SQUARE_BRACKET &&\n c !== CHAR_RIGHT_SQUARE_BRACKET &&\n c !== CHAR_LEFT_CURLY_BRACKET &&\n c !== CHAR_RIGHT_CURLY_BRACKET &&\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n c !== CHAR_SHARP &&\n c !== CHAR_AMPERSAND &&\n c !== CHAR_ASTERISK &&\n c !== CHAR_EXCLAMATION &&\n c !== CHAR_VERTICAL_LINE &&\n c !== CHAR_EQUALS &&\n c !== CHAR_GREATER_THAN &&\n c !== CHAR_SINGLE_QUOTE &&\n c !== CHAR_DOUBLE_QUOTE &&\n // | “%” | “@” | “`”)\n c !== CHAR_PERCENT &&\n c !== CHAR_COMMERCIAL_AT &&\n c !== CHAR_GRAVE_ACCENT\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast (c) {\n // just not whitespace or colon, it will be checked to be plain character later\n return !isWhitespace(c) && c !== CHAR_COLON\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt (string, pos) {\n const first = string.charCodeAt(pos)\n let second\n\n if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n second = string.charCodeAt(pos + 1)\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n }\n }\n return first\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator (string) {\n const leadingSpaceRe = /^\\n* /\n return leadingSpaceRe.test(string)\n}\n\nconst STYLE_PLAIN = 1\nconst STYLE_SINGLE = 2\nconst STYLE_LITERAL = 3\nconst STYLE_FOLDED = 4\nconst STYLE_DOUBLE = 5\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle (string, singleLineOnly, indentPerLevel, lineWidth,\n testAmbiguousType, quotingType, forceQuotes, inblock) {\n let i\n let char = 0\n let prevChar = null\n let hasLineBreak = false\n let hasFoldableLine = false // only checked if shouldTrackWidth\n const shouldTrackWidth = lineWidth !== -1\n let previousLineBreak = -1 // count the first line correctly\n let plain = isPlainSafeFirst(codePointAt(string, 0)) &&\n isPlainSafeLast(codePointAt(string, string.length - 1))\n\n if (singleLineOnly || forceQuotes) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i)\n if (!isPrintable(char)) {\n return STYLE_DOUBLE\n }\n plain = plain && isPlainSafe(char, prevChar, inblock)\n prevChar = char\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i)\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ')\n previousLineBreak = i\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE\n }\n plain = plain && isPlainSafe(char, prevChar, inblock)\n prevChar = char\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '))\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n if (plain && !forceQuotes && !testAmbiguousType(string)) {\n return STYLE_PLAIN\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n if (!forceQuotes) {\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar (state, string, level, iskey, inblock) {\n state.dump = (function () {\n if (string.length === 0) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\"\n }\n if (!state.noCompatMode) {\n if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\")\n }\n }\n\n const indent = state.indent * Math.max(1, level) // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n const lineWidth = (state.lineWidth === -1)\n ? -1\n : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent)\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n const singleLineOnly = iskey ||\n // No block styles in flow mode.\n (state.flowLevel > -1 && level >= state.flowLevel)\n function testAmbiguity (string) {\n return testImplicitResolving(state, string)\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n case STYLE_PLAIN:\n return string\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\"\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent) +\n dropEndingNewline(indentString(string, indent))\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent) +\n dropEndingNewline(indentString(foldString(string, lineWidth), indent))\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"'\n default:\n throw new YAMLException('impossible error: invalid scalar style')\n }\n }())\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader (string, indentPerLevel) {\n const indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n const clip = string[string.length - 1] === '\\n'\n const keep = clip && (string[string.length - 2] === '\\n' || string === '\\n')\n const chomp = keep ? '+' : (clip ? '' : '-')\n\n return indentIndicator + chomp + '\\n'\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline (string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString (string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n const lineRe = /(\\n+)([^\\n]*)/g\n\n // first line (possibly an empty line)\n let result = (function () {\n let nextLF = string.indexOf('\\n')\n nextLF = nextLF !== -1 ? nextLF : string.length\n lineRe.lastIndex = nextLF\n return foldLine(string.slice(0, nextLF), width)\n }())\n // If we haven't reached the first content line yet, don't add an extra \\n.\n let prevMoreIndented = string[0] === '\\n' || string[0] === ' '\n let moreIndented\n\n // rest of the lines\n let match\n while ((match = lineRe.exec(string))) {\n const prefix = match[1]\n const line = match[2]\n\n moreIndented = (line[0] === ' ')\n result += prefix +\n ((!prevMoreIndented && !moreIndented && line !== '') ? '\\n' : '') +\n foldLine(line, width)\n prevMoreIndented = moreIndented\n }\n\n return result\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine (line, width) {\n if (line === '' || line[0] === ' ') return line\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n const breakRe = / [^ ]/g // note: the match index will always be <= length-2.\n let match\n // start is an inclusive index. end, curr, and next are exclusive.\n let start = 0\n let end\n let curr = 0\n let next = 0\n let result = ''\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next // derive end <= length-2\n result += '\\n' + line.slice(start, end)\n // skip the space that was output as \\n\n start = end + 1 // derive start <= length-1\n }\n curr = next\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n'\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1)\n } else {\n result += line.slice(start)\n }\n\n return result.slice(1) // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString (string) {\n let result = ''\n let char = 0\n\n for (let i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i)\n const escapeSeq = ESCAPE_SEQUENCES[char]\n\n if (!escapeSeq && isPrintable(char)) {\n result += string[i]\n if (char >= 0x10000) result += string[i + 1]\n } else {\n result += escapeSeq || encodeHex(char)\n }\n }\n\n return result\n}\n\nfunction writeFlowSequence (state, level, object) {\n let _result = ''\n const _tag = state.tag\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n let value = object[index]\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value)\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level, value, false, false) ||\n (typeof value === 'undefined' &&\n writeNode(state, level, null, false, false))) {\n if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '')\n _result += state.dump\n }\n }\n\n state.tag = _tag\n state.dump = '[' + _result + ']'\n}\n\nfunction writeBlockSequence (state, level, object, compact) {\n let _result = ''\n const _tag = state.tag\n\n for (let index = 0, length = object.length; index < length; index += 1) {\n let value = object[index]\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value)\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level + 1, value, true, true, false, true) ||\n (typeof value === 'undefined' &&\n writeNode(state, level + 1, null, true, true, false, true))) {\n if (!compact || _result !== '') {\n _result += generateNextLine(state, level)\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-'\n } else {\n _result += '- '\n }\n\n _result += state.dump\n }\n }\n\n state.tag = _tag\n state.dump = _result || '[]' // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping (state, level, object) {\n let _result = ''\n const _tag = state.tag\n const objectKeyList = Object.keys(object)\n\n for (let index = 0, length = objectKeyList.length; index < length; index += 1) {\n let pairBuffer = ''\n if (_result !== '') pairBuffer += ', '\n\n if (state.condenseFlow) pairBuffer += '\"'\n\n const objectKey = objectKeyList[index]\n let objectValue = object[objectKey]\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue)\n }\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? '\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ')\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump\n\n // Both key and value are valid.\n _result += pairBuffer\n }\n\n state.tag = _tag\n state.dump = '{' + _result + '}'\n}\n\nfunction writeBlockMapping (state, level, object, compact) {\n let _result = ''\n const _tag = state.tag\n const objectKeyList = Object.keys(object)\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort()\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys)\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function')\n }\n\n for (let index = 0, length = objectKeyList.length; index < length; index += 1) {\n let pairBuffer = ''\n\n if (!compact || _result !== '') {\n pairBuffer += generateNextLine(state, level)\n }\n\n const objectKey = objectKeyList[index]\n let objectValue = object[objectKey]\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue)\n }\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue // Skip this pair because of invalid key.\n }\n\n const explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024)\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?'\n } else {\n pairBuffer += '? '\n }\n }\n\n pairBuffer += state.dump\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level)\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':'\n } else {\n pairBuffer += ': '\n }\n\n pairBuffer += state.dump\n\n // Both key and value are valid.\n _result += pairBuffer\n }\n\n state.tag = _tag\n state.dump = _result || '{}' // Empty mapping if no valid pairs.\n}\n\nfunction detectType (state, object, explicit) {\n const typeList = explicit ? state.explicitTypes : state.implicitTypes\n\n for (let index = 0, length = typeList.length; index < length; index += 1) {\n const type = typeList[index]\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n if (explicit) {\n if (type.multi && type.representName) {\n state.tag = type.representName(object)\n } else {\n state.tag = type.tag\n }\n } else {\n state.tag = '?'\n }\n\n if (type.represent) {\n const style = state.styleMap[type.tag] || type.defaultStyle\n\n let _result\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style)\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style)\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style')\n }\n\n state.dump = _result\n }\n\n return true\n }\n }\n\n return false\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode (state, level, object, block, compact, iskey, isblockseq) {\n state.tag = null\n state.dump = object\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true)\n }\n\n const type = _toString.call(state.dump)\n const inblock = block\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level)\n }\n\n const objectOrArray = type === '[object Object]' || type === '[object Array]'\n let duplicateIndex\n let duplicate\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object)\n duplicate = duplicateIndex !== -1\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact)\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump\n }\n } else {\n writeFlowMapping(state, level, state.dump)\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n if (state.noArrayIndent && !isblockseq && level > 0) {\n writeBlockSequence(state, level - 1, state.dump, compact)\n } else {\n writeBlockSequence(state, level, state.dump, compact)\n }\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump\n }\n } else {\n writeFlowSequence(state, level, state.dump)\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey, inblock)\n }\n } else if (type === '[object Undefined]') {\n return false\n } else {\n if (state.skipInvalid) return false\n throw new YAMLException('unacceptable kind of an object to dump ' + type)\n }\n\n if (state.tag !== null && state.tag !== '?') {\n // Need to encode all characters except those allowed by the spec:\n //\n // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */\n // [36] ns-hex-digit ::= ns-dec-digit\n // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-”\n // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n //\n // Also need to encode '!' because it has special meaning (end of tag prefix).\n //\n let tagStr = encodeURI(\n state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n ).replace(/!/g, '%21')\n\n if (state.tag[0] === '!') {\n tagStr = '!' + tagStr\n } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n tagStr = '!!' + tagStr.slice(18)\n } else {\n tagStr = '!<' + tagStr + '>'\n }\n\n state.dump = tagStr + ' ' + state.dump\n }\n }\n\n return true\n}\n\nfunction getDuplicateReferences (object, state) {\n const objects = []\n const duplicatesIndexes = []\n\n inspectNode(object, objects, duplicatesIndexes)\n\n const length = duplicatesIndexes.length\n for (let index = 0; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]])\n }\n state.usedDuplicates = new Array(length)\n}\n\nfunction inspectNode (object, objects, duplicatesIndexes) {\n if (object !== null && typeof object === 'object') {\n const index = objects.indexOf(object)\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index)\n }\n } else {\n objects.push(object)\n\n if (Array.isArray(object)) {\n for (let i = 0, length = object.length; i < length; i += 1) {\n inspectNode(object[i], objects, duplicatesIndexes)\n }\n } else {\n const objectKeyList = Object.keys(object)\n\n for (let i = 0, length = objectKeyList.length; i < length; i += 1) {\n inspectNode(object[objectKeyList[i]], objects, duplicatesIndexes)\n }\n }\n }\n }\n}\n\nfunction dump (input, options) {\n options = options || {}\n\n const state = new State(options)\n\n if (!state.noRefs) getDuplicateReferences(input, state)\n\n let value = input\n\n if (state.replacer) {\n value = state.replacer.call({ '': value }, '', value)\n }\n\n if (writeNode(state, 0, value, true, true)) return state.dump + '\\n'\n\n return ''\n}\n\nmodule.exports.dump = dump\n","'use strict'\n\nconst loader = require('./lib/loader')\nconst dumper = require('./lib/dumper')\n\nfunction renamed (from, to) {\n return function () {\n throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n 'Use yaml.' + to + ' instead, which is now safe by default.')\n }\n}\n\nmodule.exports.Type = require('./lib/type')\nmodule.exports.Schema = require('./lib/schema')\nmodule.exports.FAILSAFE_SCHEMA = require('./lib/schema/failsafe')\nmodule.exports.JSON_SCHEMA = require('./lib/schema/json')\nmodule.exports.CORE_SCHEMA = require('./lib/schema/core')\nmodule.exports.DEFAULT_SCHEMA = require('./lib/schema/default')\nmodule.exports.load = loader.load\nmodule.exports.loadAll = loader.loadAll\nmodule.exports.dump = dumper.dump\nmodule.exports.YAMLException = require('./lib/exception')\n\n// Re-export all types in case user wants to create custom schema\nmodule.exports.types = {\n binary: require('./lib/type/binary'),\n float: require('./lib/type/float'),\n map: require('./lib/type/map'),\n null: require('./lib/type/null'),\n pairs: require('./lib/type/pairs'),\n set: require('./lib/type/set'),\n timestamp: require('./lib/type/timestamp'),\n bool: require('./lib/type/bool'),\n int: require('./lib/type/int'),\n merge: require('./lib/type/merge'),\n omap: require('./lib/type/omap'),\n seq: require('./lib/type/seq'),\n str: require('./lib/type/str')\n}\n\n// Removed functions from JS-YAML 3.0.x\nmodule.exports.safeLoad = renamed('safeLoad', 'load')\nmodule.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll')\nmodule.exports.safeDump = renamed('safeDump', 'dump')\n","import yaml from '../index.js'\n\nconst {\n Type,\n Schema,\n FAILSAFE_SCHEMA,\n JSON_SCHEMA,\n CORE_SCHEMA,\n DEFAULT_SCHEMA,\n load,\n loadAll,\n dump,\n YAMLException,\n types,\n safeLoad,\n safeLoadAll,\n safeDump\n} = yaml\n\nexport {\n Type,\n Schema,\n FAILSAFE_SCHEMA,\n JSON_SCHEMA,\n CORE_SCHEMA,\n DEFAULT_SCHEMA,\n load,\n loadAll,\n dump,\n YAMLException,\n types,\n safeLoad,\n safeLoadAll,\n safeDump\n}\n\nexport default yaml\n"],"names":["exception","YAMLException","common","require$$0","line","map","Type","require$$1","schema","type","Schema","require$$2","require$$3","require$$4","require$$5","require$$6","DEFAULT_SCHEMA","loadAll","load","str","string","dump","loader","dumper","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21"],"mappings":";;;;;;;;;;AAEA,WAAS,UAAW,SAAS;AAC3B,WAAQ,OAAO,YAAY,eAAiB,YAAY;AAAA,EAC1D;AAEA,WAAS,SAAU,SAAS;AAC1B,WAAQ,OAAO,YAAY,YAAc,YAAY;AAAA,EACvD;AAEA,WAAS,QAAS,UAAU;AAC1B,QAAI,MAAM,QAAQ,QAAQ,EAAG,QAAO;AAAA,aAC3B,UAAU,QAAQ,EAAG,QAAO,CAAA;AAErC,WAAO,CAAC,QAAQ;AAAA,EAClB;AAEA,WAAS,OAAQ,QAAQ,QAAQ;AAC/B,QAAI,QAAQ;AACV,YAAM,aAAa,OAAO,KAAK,MAAM;AAErC,eAAS,QAAQ,GAAG,SAAS,WAAW,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AAC1E,cAAM,MAAM,WAAW,KAAK;AAC5B,eAAO,GAAG,IAAI,OAAO,GAAG;AAAA,MAC9B;AAAA,IACA;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,OAAQ,QAAQ,OAAO;AAC9B,QAAI,SAAS;AAEb,aAAS,QAAQ,GAAG,QAAQ,OAAO,SAAS,GAAG;AAC7C,gBAAU;AAAA,IACd;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,eAAgB,QAAQ;AAC/B,WAAQ,WAAW,KAAO,OAAO,sBAAsB,IAAI;AAAA,EAC7D;AAEA,SAAA,YAA2B;AAC3B,SAAA,WAA0B;AAC1B,SAAA,UAAyB;AACzB,SAAA,SAAwB;AACxB,SAAA,iBAAgC;AAChC,SAAA,SAAwB;;;;;;;;AC7CxB,WAAS,YAAaA,YAAW,SAAS;AACxC,QAAI,QAAQ;AACZ,UAAM,UAAUA,WAAU,UAAU;AAEpC,QAAI,CAACA,WAAU,KAAM,QAAO;AAE5B,QAAIA,WAAU,KAAK,MAAM;AACvB,eAAS,SAASA,WAAU,KAAK,OAAO;AAAA,IAC5C;AAEE,aAAS,OAAOA,WAAU,KAAK,OAAO,KAAK,OAAOA,WAAU,KAAK,SAAS,KAAK;AAE/E,QAAI,CAAC,WAAWA,WAAU,KAAK,SAAS;AACtC,eAAS,SAASA,WAAU,KAAK;AAAA,IACrC;AAEE,WAAO,UAAU,MAAM;AAAA,EACzB;AAEA,WAASC,eAAe,QAAQ,MAAM;AAEpC,UAAM,KAAK,IAAI;AAEf,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,OAAO;AACZ,SAAK,UAAU,YAAY,MAAM,KAAK;AAGtC,QAAI,MAAM,mBAAmB;AAE3B,YAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,IAClD,OAAS;AAEL,WAAK,QAAS,IAAI,MAAK,EAAI,SAAS;AAAA,IACxC;AAAA,EACA;AAGA,EAAAA,eAAc,YAAY,OAAO,OAAO,MAAM,SAAS;AACvD,EAAAA,eAAc,UAAU,cAAcA;AAEtC,EAAAA,eAAc,UAAU,WAAW,SAAS,SAAU,SAAS;AAC7D,WAAO,KAAK,OAAO,OAAO,YAAY,MAAM,OAAO;AAAA,EACrD;AAEA,cAAiBA;;;;;;;;AChDjB,QAAMC,UAASC,cAAA;AAGf,WAAS,QAAS,QAAQ,WAAW,SAAS,UAAU,eAAe;AACrE,QAAI,OAAO;AACX,QAAI,OAAO;AACX,UAAM,gBAAgB,KAAK,MAAM,gBAAgB,CAAC,IAAI;AAEtD,QAAI,WAAW,YAAY,eAAe;AACxC,aAAO;AACP,kBAAY,WAAW,gBAAgB,KAAK;AAAA,IAChD;AAEE,QAAI,UAAU,WAAW,eAAe;AACtC,aAAO;AACP,gBAAU,WAAW,gBAAgB,KAAK;AAAA,IAC9C;AAEE,WAAO;AAAA,MACL,KAAK,OAAO,OAAO,MAAM,WAAW,OAAO,EAAE,QAAQ,OAAO,GAAG,IAAI;AAAA,MACnE,KAAK,WAAW,YAAY,KAAK;AAAA;AAAA,IACrC;AAAA,EACA;AAEA,WAAS,SAAU,QAAQ,KAAK;AAC9B,WAAOD,QAAO,OAAO,KAAK,MAAM,OAAO,MAAM,IAAI;AAAA,EACnD;AAEA,WAAS,YAAa,MAAM,SAAS;AACnC,cAAU,OAAO,OAAO,WAAW,IAAI;AAEvC,QAAI,CAAC,KAAK,OAAQ,QAAO;AAEzB,QAAI,CAAC,QAAQ,UAAW,SAAQ,YAAY;AAC5C,QAAI,OAAO,QAAQ,WAAW,SAAU,SAAQ,SAAS;AACzD,QAAI,OAAO,QAAQ,gBAAgB,SAAU,SAAQ,cAAc;AACnE,QAAI,OAAO,QAAQ,eAAe,SAAU,SAAQ,aAAa;AAEjE,UAAM,KAAK;AACX,UAAM,aAAa,CAAC,CAAC;AACrB,UAAM,WAAW,CAAA;AACjB,QAAI;AACJ,QAAI,cAAc;AAElB,WAAQ,QAAQ,GAAG,KAAK,KAAK,MAAM,GAAI;AACrC,eAAS,KAAK,MAAM,KAAK;AACzB,iBAAW,KAAK,MAAM,QAAQ,MAAM,CAAC,EAAE,MAAM;AAE7C,UAAI,KAAK,YAAY,MAAM,SAAS,cAAc,GAAG;AACnD,sBAAc,WAAW,SAAS;AAAA,MACxC;AAAA,IACA;AAEE,QAAI,cAAc,EAAG,eAAc,WAAW,SAAS;AAEvD,QAAI,SAAS;AACb,UAAM,eAAe,KAAK,IAAI,KAAK,OAAO,QAAQ,YAAY,SAAS,MAAM,EAAE,SAAQ,EAAG;AAC1F,UAAM,gBAAgB,QAAQ,aAAa,QAAQ,SAAS,eAAe;AAE3E,aAAS,IAAI,GAAG,KAAK,QAAQ,aAAa,KAAK;AAC7C,UAAI,cAAc,IAAI,EAAG;AACzB,YAAME,QAAO;AAAA,QACX,KAAK;AAAA,QACL,WAAW,cAAc,CAAC;AAAA,QAC1B,SAAS,cAAc,CAAC;AAAA,QACxB,KAAK,YAAY,WAAW,WAAW,IAAI,WAAW,cAAc,CAAC;AAAA,QACrE;AAAA,MACN;AACI,eAASF,QAAO,OAAO,KAAK,QAAQ,MAAM,IAAI,UAAU,KAAK,OAAO,IAAI,GAAG,SAAQ,GAAI,YAAY,IACjG,QAAQE,MAAK,MAAM,OAAO;AAAA,IAChC;AAEE,UAAM,OAAO,QAAQ,KAAK,QAAQ,WAAW,WAAW,GAAG,SAAS,WAAW,GAAG,KAAK,UAAU,aAAa;AAC9G,cAAUF,QAAO,OAAO,KAAK,QAAQ,MAAM,IAAI,UAAU,KAAK,OAAO,GAAG,SAAQ,GAAI,YAAY,IAC9F,QAAQ,KAAK,MAAM;AACrB,cAAUA,QAAO,OAAO,KAAK,QAAQ,SAAS,eAAe,IAAI,KAAK,GAAG,IAAI;AAE7E,aAAS,IAAI,GAAG,KAAK,QAAQ,YAAY,KAAK;AAC5C,UAAI,cAAc,KAAK,SAAS,OAAQ;AACxC,YAAME,QAAO;AAAA,QACX,KAAK;AAAA,QACL,WAAW,cAAc,CAAC;AAAA,QAC1B,SAAS,cAAc,CAAC;AAAA,QACxB,KAAK,YAAY,WAAW,WAAW,IAAI,WAAW,cAAc,CAAC;AAAA,QACrE;AAAA,MACN;AACI,gBAAUF,QAAO,OAAO,KAAK,QAAQ,MAAM,IAAI,UAAU,KAAK,OAAO,IAAI,GAAG,SAAQ,GAAI,YAAY,IAClG,QAAQE,MAAK,MAAM;AAAA,IACzB;AAEE,WAAO,OAAO,QAAQ,OAAO,EAAE;AAAA,EACjC;AAEA,YAAiB;;;;;;;;AC7FjB,QAAMH,iBAAgBE,iBAAA;AAEtB,QAAM,2BAA2B;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,WAAS,oBAAqBE,MAAK;AACjC,UAAM,SAAS,CAAA;AAEf,QAAIA,SAAQ,MAAM;AAChB,aAAO,KAAKA,IAAG,EAAE,QAAQ,SAAU,OAAO;AACxC,QAAAA,KAAI,KAAK,EAAE,QAAQ,SAAU,OAAO;AAClC,iBAAO,OAAO,KAAK,CAAC,IAAI;AAAA,QAChC,CAAO;AAAA,MACP,CAAK;AAAA,IACL;AAEE,WAAO;AAAA,EACT;AAEA,WAASC,MAAM,KAAK,SAAS;AAC3B,cAAU,WAAW,CAAA;AAErB,WAAO,KAAK,OAAO,EAAE,QAAQ,SAAU,MAAM;AAC3C,UAAI,yBAAyB,QAAQ,IAAI,MAAM,IAAI;AACjD,cAAM,IAAIL,eAAc,qBAAqB,OAAO,gCAAgC,MAAM,cAAc;AAAA,MAC9G;AAAA,IACA,CAAG;AAGD,SAAK,UAAU;AACf,SAAK,MAAM;AACX,SAAK,OAAO,QAAQ,MAAM,KAAK;AAC/B,SAAK,UAAU,QAAQ,SAAS,KAAK,WAAY;AAAE,aAAO;AAAA,IAAI;AAC9D,SAAK,YAAY,QAAQ,WAAW,KAAK,SAAU,MAAM;AAAE,aAAO;AAAA,IAAI;AACtE,SAAK,aAAa,QAAQ,YAAY,KAAK;AAC3C,SAAK,YAAY,QAAQ,WAAW,KAAK;AACzC,SAAK,YAAY,QAAQ,WAAW,KAAK;AACzC,SAAK,gBAAgB,QAAQ,eAAe,KAAK;AACjD,SAAK,eAAe,QAAQ,cAAc,KAAK;AAC/C,SAAK,QAAQ,QAAQ,OAAO,KAAK;AACjC,SAAK,eAAe,oBAAoB,QAAQ,cAAc,KAAK,IAAI;AAEvE,QAAI,gBAAgB,QAAQ,KAAK,IAAI,MAAM,IAAI;AAC7C,YAAM,IAAIA,eAAc,mBAAmB,KAAK,OAAO,yBAAyB,MAAM,cAAc;AAAA,IACxG;AAAA,EACA;AAEA,SAAiBK;;;;;;;;AC/DjB,QAAML,iBAAgBE,iBAAA;AACtB,QAAMG,QAAOC,YAAA;AAEb,WAAS,YAAaC,SAAQ,MAAM;AAClC,UAAM,SAAS,CAAA;AAEf,IAAAA,QAAO,IAAI,EAAE,QAAQ,SAAU,aAAa;AAC1C,UAAI,WAAW,OAAO;AAEtB,aAAO,QAAQ,SAAU,cAAc,eAAe;AACpD,YAAI,aAAa,QAAQ,YAAY,OACjC,aAAa,SAAS,YAAY,QAClC,aAAa,UAAU,YAAY,OAAO;AAC5C,qBAAW;AAAA,QACnB;AAAA,MACA,CAAK;AAED,aAAO,QAAQ,IAAI;AAAA,IACvB,CAAG;AAED,WAAO;AAAA,EACT;AAEA,WAAS,aAA4B;AACnC,UAAM,SAAS;AAAA,MACb,QAAQ,CAAA;AAAA,MACR,UAAU,CAAA;AAAA,MACV,SAAS,CAAA;AAAA,MACT,UAAU,CAAA;AAAA,MACV,OAAO;AAAA,QACL,QAAQ,CAAA;AAAA,QACR,UAAU,CAAA;AAAA,QACV,SAAS,CAAA;AAAA,QACT,UAAU,CAAA;AAAA,MAChB;AAAA,IACA;AACE,aAAS,YAAaC,OAAM;AAC1B,UAAIA,MAAK,OAAO;AACd,eAAO,MAAMA,MAAK,IAAI,EAAE,KAAKA,KAAI;AACjC,eAAO,MAAM,UAAU,EAAE,KAAKA,KAAI;AAAA,MACxC,OAAW;AACL,eAAOA,MAAK,IAAI,EAAEA,MAAK,GAAG,IAAI,OAAO,UAAU,EAAEA,MAAK,GAAG,IAAIA;AAAA,MACnE;AAAA,IACA;AAEE,aAAS,QAAQ,GAAG,SAAS,UAAU,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACzE,gBAAU,KAAK,EAAE,QAAQ,WAAW;AAAA,IACxC;AACE,WAAO;AAAA,EACT;AAEA,WAASC,QAAQ,YAAY;AAC3B,WAAO,KAAK,OAAO,UAAU;AAAA,EAC/B;AAEA,EAAAA,QAAO,UAAU,SAAS,SAAS,OAAQ,YAAY;AACrD,QAAI,WAAW,CAAA;AACf,QAAI,WAAW,CAAA;AAEf,QAAI,sBAAsBJ,OAAM;AAE9B,eAAS,KAAK,UAAU;AAAA,IAC5B,WAAa,MAAM,QAAQ,UAAU,GAAG;AAEpC,iBAAW,SAAS,OAAO,UAAU;AAAA,IACzC,WAAa,eAAe,MAAM,QAAQ,WAAW,QAAQ,KAAK,MAAM,QAAQ,WAAW,QAAQ,IAAI;AAEnG,UAAI,WAAW,SAAU,YAAW,SAAS,OAAO,WAAW,QAAQ;AACvE,UAAI,WAAW,SAAU,YAAW,SAAS,OAAO,WAAW,QAAQ;AAAA,IAC3E,OAAS;AACL,YAAM,IAAIL,eAAc,kHACyC;AAAA,IACrE;AAEE,aAAS,QAAQ,SAAUQ,OAAM;AAC/B,UAAI,EAAEA,iBAAgBH,QAAO;AAC3B,cAAM,IAAIL,eAAc,oFAAoF;AAAA,MAClH;AAEI,UAAIQ,MAAK,YAAYA,MAAK,aAAa,UAAU;AAC/C,cAAM,IAAIR,eAAc,iHAAiH;AAAA,MAC/I;AAEI,UAAIQ,MAAK,OAAO;AACd,cAAM,IAAIR,eAAc,oGAAoG;AAAA,MAClI;AAAA,IACA,CAAG;AAED,aAAS,QAAQ,SAAUQ,OAAM;AAC/B,UAAI,EAAEA,iBAAgBH,QAAO;AAC3B,cAAM,IAAIL,eAAc,oFAAoF;AAAA,MAClH;AAAA,IACA,CAAG;AAED,UAAM,SAAS,OAAO,OAAOS,QAAO,SAAS;AAE7C,WAAO,YAAY,KAAK,YAAY,CAAA,GAAI,OAAO,QAAQ;AACvD,WAAO,YAAY,KAAK,YAAY,CAAA,GAAI,OAAO,QAAQ;AAEvD,WAAO,mBAAmB,YAAY,QAAQ,UAAU;AACxD,WAAO,mBAAmB,YAAY,QAAQ,UAAU;AACxD,WAAO,kBAAkB,WAAW,OAAO,kBAAkB,OAAO,gBAAgB;AAEpF,WAAO;AAAA,EACT;AAEA,WAAiBA;;;;;;;;AC1GjB,QAAMJ,QAAOH,YAAA;AAEb,QAAiB,IAAIG,MAAK,yBAAyB;AAAA,IACjD,MAAM;AAAA,IACN,WAAW,SAAU,MAAM;AAAE,aAAO,SAAS,OAAO,OAAO;AAAA,IAAE;AAAA,GAC9D;;;;;;;;ACLD,QAAMA,QAAOH,YAAA;AAEb,QAAiB,IAAIG,MAAK,yBAAyB;AAAA,IACjD,MAAM;AAAA,IACN,WAAW,SAAU,MAAM;AAAE,aAAO,SAAS,OAAO,OAAO;IAAE;AAAA,GAC9D;;;;;;;;ACLD,QAAMA,QAAOH,YAAA;AAEb,QAAiB,IAAIG,MAAK,yBAAyB;AAAA,IACjD,MAAM;AAAA,IACN,WAAW,SAAU,MAAM;AAAE,aAAO,SAAS,OAAO,OAAO;IAAE;AAAA,GAC9D;;;;;;;;ACFD,QAAMI,UAASP,cAAA;AAEf,aAAiB,IAAIO,QAAO;AAAA,IAC1B,UAAU;AAAA,MACRH,WAAA;AAAA,MACAI,WAAA;AAAA,MACAC,WAAA;AAAA,IACJ;AAAA,GACC;;;;;;;;ACXD,QAAMN,QAAOH,YAAA;AAEb,WAAS,gBAAiB,MAAM;AAC9B,QAAI,SAAS,KAAM,QAAO;AAE1B,UAAM,MAAM,KAAK;AAEjB,WAAQ,QAAQ,KAAK,SAAS,OACtB,QAAQ,MAAM,SAAS,UAAU,SAAS,UAAU,SAAS;AAAA,EACvE;AAEA,WAAS,oBAAqB;AAC5B,WAAO;AAAA,EACT;AAEA,WAAS,OAAQ,QAAQ;AACvB,WAAO,WAAW;AAAA,EACpB;AAEA,UAAiB,IAAIG,MAAK,0BAA0B;AAAA,IAClD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,MACT,WAAW,WAAY;AAAE,eAAO;AAAA,MAAG;AAAA,MACnC,WAAW,WAAY;AAAE,eAAO;AAAA,MAAM;AAAA,MACtC,WAAW,WAAY;AAAE,eAAO;AAAA,MAAM;AAAA,MACtC,WAAW,WAAY;AAAE,eAAO;AAAA,MAAM;AAAA,MACtC,OAAO,WAAY;AAAE,eAAO;AAAA,MAAE;AAAA;IAEhC,cAAc;AAAA,GACf;;;;;;;;AChCD,QAAMA,QAAOH,YAAA;AAEb,WAAS,mBAAoB,MAAM;AACjC,QAAI,SAAS,KAAM,QAAO;AAE1B,UAAM,MAAM,KAAK;AAEjB,WAAQ,QAAQ,MAAM,SAAS,UAAU,SAAS,UAAU,SAAS,WAC7D,QAAQ,MAAM,SAAS,WAAW,SAAS,WAAW,SAAS;AAAA,EACzE;AAEA,WAAS,qBAAsB,MAAM;AACnC,WAAO,SAAS,UACT,SAAS,UACT,SAAS;AAAA,EAClB;AAEA,WAAS,UAAW,QAAQ;AAC1B,WAAO,OAAO,UAAU,SAAS,KAAK,MAAM,MAAM;AAAA,EACpD;AAEA,SAAiB,IAAIG,MAAK,0BAA0B;AAAA,IAClD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,MACT,WAAW,SAAU,QAAQ;AAAE,eAAO,SAAS,SAAS;AAAA,MAAO;AAAA,MAC/D,WAAW,SAAU,QAAQ;AAAE,eAAO,SAAS,SAAS;AAAA,MAAO;AAAA,MAC/D,WAAW,SAAU,QAAQ;AAAE,eAAO,SAAS,SAAS;AAAA,MAAO;AAAA;IAEjE,cAAc;AAAA,GACf;;;;;;;;AChCD,QAAMJ,UAASC,cAAA;AACf,QAAMG,QAAOC,YAAA;AAEb,WAAS,UAAW,GAAG;AACrB,WAAS,KAAK,MAAiB,KAAK,MAC3B,KAAK,MAAiB,KAAK,MAC3B,KAAK,MAAiB,KAAK;AAAA,EACtC;AAEA,WAAS,UAAW,GAAG;AACrB,WAAS,KAAK,MAAiB,KAAK;AAAA,EACtC;AAEA,WAAS,UAAW,GAAG;AACrB,WAAS,KAAK,MAAiB,KAAK;AAAA,EACtC;AAEA,WAAS,mBAAoB,MAAM;AACjC,QAAI,SAAS,KAAM,QAAO;AAE1B,UAAM,MAAM,KAAK;AACjB,QAAI,QAAQ;AACZ,QAAI,YAAY;AAEhB,QAAI,CAAC,IAAK,QAAO;AAEjB,QAAI,KAAK,KAAK,KAAK;AAGnB,QAAI,OAAO,OAAO,OAAO,KAAK;AAC5B,WAAK,KAAK,EAAE,KAAK;AAAA,IACrB;AAEE,QAAI,OAAO,KAAK;AAEd,UAAI,QAAQ,MAAM,IAAK,QAAO;AAC9B,WAAK,KAAK,EAAE,KAAK;AAIjB,UAAI,OAAO,KAAK;AAEd;AAEA,eAAO,QAAQ,KAAK,SAAS;AAC3B,eAAK,KAAK,KAAK;AACf,cAAI,OAAO,OAAO,OAAO,IAAK,QAAO;AACrC,sBAAY;AAAA,QACpB;AACM,eAAO,aAAa,SAAS,iBAAiB,IAAI,CAAC;AAAA,MACzD;AAEI,UAAI,OAAO,KAAK;AAEd;AAEA,eAAO,QAAQ,KAAK,SAAS;AAC3B,cAAI,CAAC,UAAU,KAAK,WAAW,KAAK,CAAC,EAAG,QAAO;AAC/C,sBAAY;AAAA,QACpB;AACM,eAAO,aAAa,SAAS,iBAAiB,IAAI,CAAC;AAAA,MACzD;AAEI,UAAI,OAAO,KAAK;AAEd;AAEA,eAAO,QAAQ,KAAK,SAAS;AAC3B,cAAI,CAAC,UAAU,KAAK,WAAW,KAAK,CAAC,EAAG,QAAO;AAC/C,sBAAY;AAAA,QACpB;AACM,eAAO,aAAa,SAAS,iBAAiB,IAAI,CAAC;AAAA,MACzD;AAAA,IACA;AAIE,WAAO,QAAQ,KAAK,SAAS;AAC3B,UAAI,CAAC,UAAU,KAAK,WAAW,KAAK,CAAC,GAAG;AACtC,eAAO;AAAA,MACb;AACI,kBAAY;AAAA,IAChB;AAEE,QAAI,CAAC,UAAW,QAAO;AAEvB,WAAO,SAAS,iBAAiB,IAAI,CAAC;AAAA,EACxC;AAEA,WAAS,iBAAkB,MAAM;AAC/B,QAAI,QAAQ;AACZ,QAAI,OAAO;AAEX,QAAI,KAAK,MAAM,CAAC;AAEhB,QAAI,OAAO,OAAO,OAAO,KAAK;AAC5B,UAAI,OAAO,IAAK,QAAO;AACvB,cAAQ,MAAM,MAAM,CAAC;AACrB,WAAK,MAAM,CAAC;AAAA,IAChB;AAEE,QAAI,UAAU,IAAK,QAAO;AAE1B,QAAI,OAAO,KAAK;AACd,UAAI,MAAM,CAAC,MAAM,IAAK,QAAO,OAAO,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC;AAC9D,UAAI,MAAM,CAAC,MAAM,IAAK,QAAO,OAAO,SAAS,MAAM,MAAM,CAAC,GAAG,EAAE;AAC/D,UAAI,MAAM,CAAC,MAAM,IAAK,QAAO,OAAO,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC;AAAA,IAClE;AAEE,WAAO,OAAO,SAAS,OAAO,EAAE;AAAA,EAClC;AAEA,WAAS,qBAAsB,MAAM;AACnC,WAAO,iBAAiB,IAAI;AAAA,EAC9B;AAEA,WAAS,UAAW,QAAQ;AAC1B,WAAQ,OAAO,UAAU,SAAS,KAAK,MAAM,MAAO,sBAC5C,SAAS,MAAM,KAAK,CAACL,QAAO,eAAe,MAAM;AAAA,EAC3D;AAEA,QAAiB,IAAII,MAAK,yBAAyB;AAAA,IACjD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,MACT,QAAQ,SAAU,KAAK;AAAE,eAAO,OAAO,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,QAAQ,IAAI,SAAS,CAAC,EAAE,MAAM,CAAC;AAAA,MAAC;AAAA,MACpG,OAAO,SAAU,KAAK;AAAE,eAAO,OAAO,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,QAAQ,IAAI,SAAS,CAAC,EAAE,MAAM,CAAC;AAAA,MAAC;AAAA,MACnG,SAAS,SAAU,KAAK;AAAE,eAAO,IAAI,SAAS,EAAE;AAAA,MAAC;AAAA,MACjD,aAAa,SAAU,KAAK;AAAE,eAAO,OAAO,IAAI,OAAO,IAAI,SAAS,EAAE,EAAE,gBAAgB,QAAQ,IAAI,SAAS,EAAE,EAAE,YAAW,EAAG,MAAM,CAAC;AAAA,MAAC;AAAA;IAEzI,cAAc;AAAA,IACd,cAAc;AAAA,MACZ,QAAQ,CAAC,GAAG,KAAK;AAAA,MACjB,OAAO,CAAC,GAAG,KAAK;AAAA,MAChB,SAAS,CAAC,IAAI,KAAK;AAAA,MACnB,aAAa,CAAC,IAAI,KAAK;AAAA,IAC3B;AAAA,GACC;;;;;;;;AC3ID,QAAMJ,UAASC,cAAA;AACf,QAAMG,QAAOC,YAAA;AAEb,QAAM,qBAAqB,IAAI;AAAA;AAAA,IAE7B;AAAA,EAOuB;AAEzB,QAAM,6BAA6B,IAAI;AAAA,IACrC;AAAA,EAIuB;AAEzB,WAAS,iBAAkB,MAAM;AAC/B,QAAI,SAAS,KAAM,QAAO;AAE1B,QAAI,CAAC,mBAAmB,KAAK,IAAI,GAAG;AAClC,aAAO;AAAA,IACX;AAEE,QAAI,SAAS,WAAW,MAAM,EAAE,CAAC,GAAG;AAClC,aAAO;AAAA,IACX;AAEE,WAAO,2BAA2B,KAAK,IAAI;AAAA,EAC7C;AAEA,WAAS,mBAAoB,MAAM;AACjC,QAAI,QAAQ,KAAK,YAAW;AAC5B,UAAM,OAAO,MAAM,CAAC,MAAM,MAAM,KAAK;AAErC,QAAI,KAAK,QAAQ,MAAM,CAAC,CAAC,KAAK,GAAG;AAC/B,cAAQ,MAAM,MAAM,CAAC;AAAA,IACzB;AAEE,QAAI,UAAU,QAAQ;AACpB,aAAQ,SAAS,IAAK,OAAO,oBAAoB,OAAO;AAAA,IAC5D,WAAa,UAAU,QAAQ;AAC3B,aAAO;AAAA,IACX;AACE,WAAO,OAAO,WAAW,OAAO,EAAE;AAAA,EACpC;AAEA,QAAM,yBAAyB;AAE/B,WAAS,mBAAoB,QAAQ,OAAO;AAC1C,QAAI,MAAM,MAAM,GAAG;AACjB,cAAQ,OAAK;AAAA,QACX,KAAK;AAAa,iBAAO;AAAA,QACzB,KAAK;AAAa,iBAAO;AAAA,QACzB,KAAK;AAAa,iBAAO;AAAA,MAC/B;AAAA,IACA,WAAa,OAAO,sBAAsB,QAAQ;AAC9C,cAAQ,OAAK;AAAA,QACX,KAAK;AAAa,iBAAO;AAAA,QACzB,KAAK;AAAa,iBAAO;AAAA,QACzB,KAAK;AAAa,iBAAO;AAAA,MAC/B;AAAA,IACA,WAAa,OAAO,sBAAsB,QAAQ;AAC9C,cAAQ,OAAK;AAAA,QACX,KAAK;AAAa,iBAAO;AAAA,QACzB,KAAK;AAAa,iBAAO;AAAA,QACzB,KAAK;AAAa,iBAAO;AAAA,MAC/B;AAAA,IACA,WAAaL,QAAO,eAAe,MAAM,GAAG;AACxC,aAAO;AAAA,IACX;AAEE,UAAM,MAAM,OAAO,SAAS,EAAE;AAK9B,WAAO,uBAAuB,KAAK,GAAG,IAAI,IAAI,QAAQ,KAAK,IAAI,IAAI;AAAA,EACrE;AAEA,WAAS,QAAS,QAAQ;AACxB,WAAQ,OAAO,UAAU,SAAS,KAAK,MAAM,MAAM,sBAC3C,SAAS,MAAM,KAAKA,QAAO,eAAe,MAAM;AAAA,EAC1D;AAEA,UAAiB,IAAII,MAAK,2BAA2B;AAAA,IACnD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,cAAc;AAAA,GACf;;;;;;;;ACzFD,SAAiBH,gBAAA,EAAsB,OAAO;AAAA,IAC5C,UAAU;AAAA,MACRI,aAAA;AAAA,MACAI,YAAA;AAAA,MACAC,WAAA;AAAA,MACAC,aAAA;AAAA,IACJ;AAAA,GACC;;;;;;;;ACRD,SAAiBV,YAAA;;;;;;;;ACNjB,QAAMG,QAAOH,YAAA;AAEb,QAAM,mBAAmB,IAAI;AAAA,IAC3B;AAAA,EAEgB;AAElB,QAAM,wBAAwB,IAAI;AAAA,IAChC;AAAA,EASwB;AAE1B,WAAS,qBAAsB,MAAM;AACnC,QAAI,SAAS,KAAM,QAAO;AAC1B,QAAI,iBAAiB,KAAK,IAAI,MAAM,KAAM,QAAO;AACjD,QAAI,sBAAsB,KAAK,IAAI,MAAM,KAAM,QAAO;AACtD,WAAO;AAAA,EACT;AAEA,WAAS,uBAAwB,MAAM;AACrC,QAAI,WAAW;AACf,QAAI,QAAQ;AAEZ,QAAI,QAAQ,iBAAiB,KAAK,IAAI;AACtC,QAAI,UAAU,KAAM,SAAQ,sBAAsB,KAAK,IAAI;AAE3D,QAAI,UAAU,KAAM,OAAM,IAAI,MAAM,oBAAoB;AAIxD,UAAM,OAAO,CAAE,MAAM,CAAC;AACtB,UAAM,QAAQ,CAAE,MAAM,CAAC,IAAK;AAC5B,UAAM,MAAM,CAAE,MAAM,CAAC;AAErB,QAAI,CAAC,MAAM,CAAC,GAAG;AACb,aAAO,IAAI,KAAK,KAAK,IAAI,MAAM,OAAO,GAAG,CAAC;AAAA,IAC9C;AAIE,UAAM,OAAO,CAAE,MAAM,CAAC;AACtB,UAAM,SAAS,CAAE,MAAM,CAAC;AACxB,UAAM,SAAS,CAAE,MAAM,CAAC;AAExB,QAAI,MAAM,CAAC,GAAG;AACZ,iBAAW,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC;AAC9B,aAAO,SAAS,SAAS,GAAG;AAC1B,oBAAY;AAAA,MAClB;AACI,iBAAW,CAAC;AAAA,IAChB;AAIE,QAAI,MAAM,CAAC,GAAG;AACZ,YAAM,SAAS,CAAE,MAAM,EAAE;AACzB,YAAM,WAAW,EAAE,MAAM,EAAE,KAAK;AAChC,eAAS,SAAS,KAAK,YAAY;AACnC,UAAI,MAAM,CAAC,MAAM,IAAK,SAAQ,CAAC;AAAA,IACnC;AAEE,UAAM,OAAO,IAAI,KAAK,KAAK,IAAI,MAAM,OAAO,KAAK,MAAM,QAAQ,QAAQ,QAAQ,CAAC;AAEhF,QAAI,MAAO,MAAK,QAAQ,KAAK,QAAO,IAAK,KAAK;AAE9C,WAAO;AAAA,EACT;AAEA,WAAS,uBAAwB,QAAqB;AACpD,WAAO,OAAO,YAAW;AAAA,EAC3B;AAEA,cAAiB,IAAIG,MAAK,+BAA+B;AAAA,IACvD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,GACZ;;;;;;;;ACrFD,QAAMA,QAAOH,YAAA;AAEb,WAAS,iBAAkB,MAAM;AAC/B,WAAO,SAAS,QAAQ,SAAS;AAAA,EACnC;AAEA,UAAiB,IAAIG,MAAK,2BAA2B;AAAA,IACnD,MAAM;AAAA,IACN,SAAS;AAAA,GACV;;;;;;;;ACTD,QAAMA,QAAOH,YAAA;AAGb,QAAM,aAAa;AAEnB,WAAS,kBAAmB,MAAM;AAChC,QAAI,SAAS,KAAM,QAAO;AAE1B,QAAI,SAAS;AACb,UAAM,MAAM,KAAK;AACjB,UAAME,OAAM;AAGZ,aAAS,MAAM,GAAG,MAAM,KAAK,OAAO;AAClC,YAAM,OAAOA,KAAI,QAAQ,KAAK,OAAO,GAAG,CAAC;AAGzC,UAAI,OAAO,GAAI;AAGf,UAAI,OAAO,EAAG,QAAO;AAErB,gBAAU;AAAA,IACd;AAGE,WAAQ,SAAS,MAAO;AAAA,EAC1B;AAEA,WAAS,oBAAqB,MAAM;AAClC,UAAM,QAAQ,KAAK,QAAQ,YAAY,EAAE;AACzC,UAAM,MAAM,MAAM;AAClB,UAAMA,OAAM;AACZ,QAAI,OAAO;AACX,UAAM,SAAS,CAAA;AAIf,aAAS,MAAM,GAAG,MAAM,KAAK,OAAO;AAClC,UAAK,MAAM,MAAM,KAAM,KAAK;AAC1B,eAAO,KAAM,QAAQ,KAAM,GAAI;AAC/B,eAAO,KAAM,QAAQ,IAAK,GAAI;AAC9B,eAAO,KAAK,OAAO,GAAI;AAAA,MAC7B;AAEI,aAAQ,QAAQ,IAAKA,KAAI,QAAQ,MAAM,OAAO,GAAG,CAAC;AAAA,IACtD;AAIE,UAAM,WAAY,MAAM,IAAK;AAE7B,QAAI,aAAa,GAAG;AAClB,aAAO,KAAM,QAAQ,KAAM,GAAI;AAC/B,aAAO,KAAM,QAAQ,IAAK,GAAI;AAC9B,aAAO,KAAK,OAAO,GAAI;AAAA,IAC3B,WAAa,aAAa,IAAI;AAC1B,aAAO,KAAM,QAAQ,KAAM,GAAI;AAC/B,aAAO,KAAM,QAAQ,IAAK,GAAI;AAAA,IAClC,WAAa,aAAa,IAAI;AAC1B,aAAO,KAAM,QAAQ,IAAK,GAAI;AAAA,IAClC;AAEE,WAAO,IAAI,WAAW,MAAM;AAAA,EAC9B;AAEA,WAAS,oBAAqB,QAAqB;AACjD,QAAI,SAAS;AACb,QAAI,OAAO;AACX,UAAM,MAAM,OAAO;AACnB,UAAMA,OAAM;AAIZ,aAAS,MAAM,GAAG,MAAM,KAAK,OAAO;AAClC,UAAK,MAAM,MAAM,KAAM,KAAK;AAC1B,kBAAUA,KAAK,QAAQ,KAAM,EAAI;AACjC,kBAAUA,KAAK,QAAQ,KAAM,EAAI;AACjC,kBAAUA,KAAK,QAAQ,IAAK,EAAI;AAChC,kBAAUA,KAAI,OAAO,EAAI;AAAA,MAC/B;AAEI,cAAQ,QAAQ,KAAK,OAAO,GAAG;AAAA,IACnC;AAIE,UAAM,OAAO,MAAM;AAEnB,QAAI,SAAS,GAAG;AACd,gBAAUA,KAAK,QAAQ,KAAM,EAAI;AACjC,gBAAUA,KAAK,QAAQ,KAAM,EAAI;AACjC,gBAAUA,KAAK,QAAQ,IAAK,EAAI;AAChC,gBAAUA,KAAI,OAAO,EAAI;AAAA,IAC7B,WAAa,SAAS,GAAG;AACrB,gBAAUA,KAAK,QAAQ,KAAM,EAAI;AACjC,gBAAUA,KAAK,QAAQ,IAAK,EAAI;AAChC,gBAAUA,KAAK,QAAQ,IAAK,EAAI;AAChC,gBAAUA,KAAI,EAAE;AAAA,IACpB,WAAa,SAAS,GAAG;AACrB,gBAAUA,KAAK,QAAQ,IAAK,EAAI;AAChC,gBAAUA,KAAK,QAAQ,IAAK,EAAI;AAChC,gBAAUA,KAAI,EAAE;AAChB,gBAAUA,KAAI,EAAE;AAAA,IACpB;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,SAAU,KAAK;AACtB,WAAO,OAAO,UAAU,SAAS,KAAK,GAAG,MAAM;AAAA,EACjD;AAEA,WAAiB,IAAIC,MAAK,4BAA4B;AAAA,IACpD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,GACZ;;;;;;;;ACvHD,QAAMA,QAAOH,YAAA;AAEb,QAAM,kBAAkB,OAAO,UAAU;AACzC,QAAM,YAAY,OAAO,UAAU;AAEnC,WAAS,gBAAiB,MAAM;AAC9B,QAAI,SAAS,KAAM,QAAO;AAE1B,UAAM,aAAa,CAAA;AACnB,UAAM,SAAS;AAEf,aAAS,QAAQ,GAAG,SAAS,OAAO,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACtE,YAAM,OAAO,OAAO,KAAK;AACzB,UAAI,aAAa;AAEjB,UAAI,UAAU,KAAK,IAAI,MAAM,kBAAmB,QAAO;AAEvD,UAAI;AACJ,WAAK,WAAW,MAAM;AACpB,YAAI,gBAAgB,KAAK,MAAM,OAAO,GAAG;AACvC,cAAI,CAAC,WAAY,cAAa;AAAA,cACzB,QAAO;AAAA,QACpB;AAAA,MACA;AAEI,UAAI,CAAC,WAAY,QAAO;AAExB,UAAI,gBAAgB,KAAK,YAAY,OAAO,EAAG,QAAO;AACtD,aAAO,eAAe,YAAY,SAAS,EAAE,OAAO,KAAI,CAAE;AAAA,IAC9D;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,kBAAmB,MAAM;AAChC,WAAO,SAAS,OAAO,OAAO,CAAA;AAAA,EAChC;AAEA,SAAiB,IAAIG,MAAK,0BAA0B;AAAA,IAClD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,GACZ;;;;;;;;AC1CD,QAAMA,QAAOH,YAAA;AAEb,QAAM,YAAY,OAAO,UAAU;AAEnC,WAAS,iBAAkB,MAAM;AAC/B,QAAI,SAAS,KAAM,QAAO;AAE1B,UAAM,SAAS;AAEf,UAAM,SAAS,IAAI,MAAM,OAAO,MAAM;AAEtC,aAAS,QAAQ,GAAG,SAAS,OAAO,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACtE,YAAM,OAAO,OAAO,KAAK;AAEzB,UAAI,UAAU,KAAK,IAAI,MAAM,kBAAmB,QAAO;AAEvD,YAAM,OAAO,OAAO,KAAK,IAAI;AAE7B,UAAI,KAAK,WAAW,EAAG,QAAO;AAE9B,aAAO,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC;AAAA,IAC3C;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,mBAAoB,MAAM;AACjC,QAAI,SAAS,KAAM,QAAO,CAAA;AAE1B,UAAM,SAAS;AACf,UAAM,SAAS,IAAI,MAAM,OAAO,MAAM;AAEtC,aAAS,QAAQ,GAAG,SAAS,OAAO,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACtE,YAAM,OAAO,OAAO,KAAK;AAEzB,YAAM,OAAO,OAAO,KAAK,IAAI;AAE7B,aAAO,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC;AAAA,IAC3C;AAEE,WAAO;AAAA,EACT;AAEA,UAAiB,IAAIG,MAAK,2BAA2B;AAAA,IACnD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,GACZ;;;;;;;;AC/CD,QAAMA,QAAOH,YAAA;AAEb,QAAM,kBAAkB,OAAO,UAAU;AAEzC,WAAS,eAAgB,MAAM;AAC7B,QAAI,SAAS,KAAM,QAAO;AAE1B,UAAM,SAAS;AAEf,eAAW,OAAO,QAAQ;AACxB,UAAI,gBAAgB,KAAK,QAAQ,GAAG,GAAG;AACrC,YAAI,OAAO,GAAG,MAAM,KAAM,QAAO;AAAA,MACvC;AAAA,IACA;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,iBAAkB,MAAM;AAC/B,WAAO,SAAS,OAAO,OAAO,CAAA;AAAA,EAChC;AAEA,QAAiB,IAAIG,MAAK,yBAAyB;AAAA,IACjD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,GACZ;;;;;;;;ACpBD,aAAiBH,YAAA,EAAkB,OAAO;AAAA,IACxC,UAAU;AAAA,MACRI,iBAAA;AAAA,MACAI,aAAA;AAAA;IAEF,UAAU;AAAA,MACRC,cAAA;AAAA,MACAC,YAAA;AAAA,MACAC,aAAA;AAAA,MACAC,WAAA;AAAA,IACJ;AAAA,GACC;;;;;;;ACjBD,QAAMb,UAASC,cAAA;AACf,QAAMF,iBAAgBM,iBAAA;AACtB,QAAM,cAAcI,eAAA;AACpB,QAAMK,kBAAiBJ,gBAAA;AAEvB,QAAM,kBAAkB,OAAO,UAAU;AAEzC,QAAM,kBAAkB;AACxB,QAAM,mBAAmB;AACzB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAE1B,QAAM,gBAAgB;AACtB,QAAM,iBAAiB;AACvB,QAAM,gBAAgB;AAGtB,QAAM,wBAAwB;AAC9B,QAAM,gCAAgC;AAEtC,QAAM,0BAA0B;AAEhC,QAAM,qBAAqB;AAE3B,QAAM,kBAAkB;AAExB,WAAS,OAAQ,KAAK;AAAE,WAAO,OAAO,UAAU,SAAS,KAAK,GAAG;AAAA,EAAC;AAElE,WAAS,MAAO,GAAG;AACjB,WAAQ,MAAM,MAAkB,MAAM;AAAA,EACxC;AAEA,WAAS,aAAc,GAAG;AACxB,WAAQ,MAAM,KAAmB,MAAM;AAAA,EACzC;AAEA,WAAS,UAAW,GAAG;AACrB,WAAQ,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM;AAAA,EAChB;AAEA,WAAS,gBAAiB,GAAG;AAC3B,WAAO,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,OACN,MAAM;AAAA,EACf;AAEA,WAAS,YAAa,GAAG;AACvB,QAAK,KAAK,MAAiB,KAAK,IAAc;AAC5C,aAAO,IAAI;AAAA,IACf;AAEE,UAAM,KAAK,IAAI;AAEf,QAAK,MAAM,MAAiB,MAAM,KAAc;AAC9C,aAAO,KAAK,KAAO;AAAA,IACvB;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,cAAe,GAAG;AACzB,QAAI,MAAM,KAAa;AAAE,aAAO;AAAA,IAAC;AACjC,QAAI,MAAM,KAAa;AAAE,aAAO;AAAA,IAAC;AACjC,QAAI,MAAM,IAAa;AAAE,aAAO;AAAA,IAAC;AACjC,WAAO;AAAA,EACT;AAEA,WAAS,gBAAiB,GAAG;AAC3B,QAAK,KAAK,MAAiB,KAAK,IAAc;AAC5C,aAAO,IAAI;AAAA,IACf;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,qBAAsB,GAAG;AAChC,YAAQ,GAAC;AAAA,MACP,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAe,eAAO;AAAA,MAC3B,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAiB,eAAO;AAAA,MAC7B,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAa,eAAO;AAAA,MACzB,KAAK;AAAa,eAAO;AAAA,MACzB;AAAS,eAAO;AAAA,IACpB;AAAA,EACA;AAEA,WAAS,kBAAmB,GAAG;AAC7B,QAAI,KAAK,OAAQ;AACf,aAAO,OAAO,aAAa,CAAC;AAAA,IAChC;AAGE,WAAO,OAAO;AAAA,OACV,IAAI,SAAa,MAAM;AAAA,OACvB,IAAI,QAAY,QAAU;AAAA,IAChC;AAAA,EACA;AAIA,WAAS,YAAa,QAAQ,KAAK,OAAO;AAExC,QAAI,QAAQ,aAAa;AACvB,aAAO,eAAe,QAAQ,KAAK;AAAA,QACjC,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,UAAU;AAAA,QACV;AAAA,OACD;AAAA,IACL,OAAS;AACL,aAAO,GAAG,IAAI;AAAA,IAClB;AAAA,EACA;AAEA,QAAM,oBAAoB,IAAI,MAAM,GAAG;AACvC,QAAM,kBAAkB,IAAI,MAAM,GAAG;AACrC,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,sBAAkB,CAAC,IAAI,qBAAqB,CAAC,IAAI,IAAI;AACrD,oBAAgB,CAAC,IAAI,qBAAqB,CAAC;AAAA,EAC7C;AAEA,WAAS,MAAO,OAAO,SAAS;AAC9B,SAAK,QAAQ;AAEb,SAAK,WAAW,QAAQ,UAAU,KAAK;AACvC,SAAK,SAAS,QAAQ,QAAQ,KAAKI;AACnC,SAAK,YAAY,QAAQ,WAAW,KAAK;AAGzC,SAAK,SAAS,QAAQ,QAAQ,KAAK;AAEnC,SAAK,OAAO,QAAQ,MAAM,KAAK;AAC/B,SAAK,WAAW,QAAQ,UAAU,KAAK;AACvC,SAAK,WAAW,OAAO,QAAQ,UAAU,MAAM,WAAW,QAAQ,UAAU,IAAI;AAChF,SAAK,oBAAoB,OAAO,QAAQ,mBAAmB,MAAM,WAAW,QAAQ,mBAAmB,IAAI;AAE3G,SAAK,gBAAgB,KAAK,OAAO;AACjC,SAAK,UAAU,KAAK,OAAO;AAE3B,SAAK,SAAS,MAAM;AACpB,SAAK,WAAW;AAChB,SAAK,OAAO;AACZ,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,SAAK,QAAQ;AACb,SAAK,iBAAiB;AAItB,SAAK,iBAAiB;AAEtB,SAAK,YAAY,CAAA;AACjB,SAAK,wBAAwB,CAAA;AAAA,EAW/B;AAEA,WAAS,cAAe,OAAO,SAAS;AACtC,UAAM,OAAO;AAAA,MACX,MAAM,MAAM;AAAA,MACZ,QAAQ,MAAM,MAAM,MAAM,GAAG,EAAE;AAAA;AAAA,MAC/B,UAAU,MAAM;AAAA,MAChB,MAAM,MAAM;AAAA,MACZ,QAAQ,MAAM,WAAW,MAAM;AAAA,IACnC;AAEE,SAAK,UAAU,YAAY,IAAI;AAE/B,WAAO,IAAIf,eAAc,SAAS,IAAI;AAAA,EACxC;AAEA,WAAS,WAAY,OAAO,SAAS;AACnC,UAAM,cAAc,OAAO,OAAO;AAAA,EACpC;AAEA,WAAS,aAAc,OAAO,SAAS;AACrC,QAAI,MAAM,WAAW;AACnB,YAAM,UAAU,KAAK,MAAM,cAAc,OAAO,OAAO,CAAC;AAAA,IAC5D;AAAA,EACA;AAEA,WAAS,YAAa,OAAO,MAAM,OAAO;AACxC,UAAM,eAAe,MAAM;AAE3B,QAAI,aAAa,WAAW,GAAG;AAC7B,YAAM,cAAc,aAAa,aAAa,SAAS,CAAC;AAExD,UAAI,CAAC,gBAAgB,KAAK,aAAa,IAAI,GAAG;AAC5C,oBAAY,IAAI,IAAI;AAAA,UAClB,SAAS,gBAAgB,KAAK,MAAM,WAAW,IAAI;AAAA,UACnD,OAAO,MAAM,UAAU,IAAI;AAAA,QACnC;AAAA,MACA;AAAA,IACA;AAEE,UAAM,UAAU,IAAI,IAAI;AAAA,EAC1B;AAEA,WAAS,uBAAwB,OAAO;AACtC,UAAM,sBAAsB,KAAK,uBAAO,OAAO,IAAI,CAAC;AAAA,EACtD;AAEA,WAAS,wBAAyB,OAAO;AACvC,UAAM,cAAc,MAAM,sBAAsB,IAAG;AACnD,UAAM,eAAe,MAAM;AAE3B,QAAI,aAAa,WAAW,EAAG;AAE/B,UAAM,SAAS,aAAa,aAAa,SAAS,CAAC;AACnD,UAAM,QAAQ,OAAO,KAAK,WAAW;AAErC,aAAS,QAAQ,GAAG,SAAS,MAAM,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACrE,YAAM,OAAO,MAAM,KAAK;AAExB,UAAI,CAAC,gBAAgB,KAAK,QAAQ,IAAI,GAAG;AACvC,eAAO,IAAI,IAAI,YAAY,IAAI;AAAA,MACrC;AAAA,IACA;AAAA,EACA;AAEA,WAAS,0BAA2B,OAAO;AACzC,UAAM,cAAc,MAAM,sBAAsB,IAAG;AACnD,UAAM,QAAQ,OAAO,KAAK,WAAW;AAErC,aAAS,QAAQ,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG;AACzD,YAAM,QAAQ,YAAY,MAAM,KAAK,CAAC;AAEtC,UAAI,MAAM,SAAS;AACjB,cAAM,UAAU,MAAM,KAAK,CAAC,IAAI,MAAM;AAAA,MAC5C,OAAW;AACL,eAAO,MAAM,UAAU,MAAM,KAAK,CAAC;AAAA,MACzC;AAAA,IACA;AAAA,EACA;AAEA,WAAS,cAAe,OAAO;AAC7B,WAAO;AAAA,MACL,UAAU,MAAM;AAAA,MAChB,MAAM,MAAM;AAAA,MACZ,WAAW,MAAM;AAAA,MACjB,YAAY,MAAM;AAAA,MAClB,gBAAgB,MAAM;AAAA,MACtB,KAAK,MAAM;AAAA,MACX,QAAQ,MAAM;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,QAAQ,MAAM;AAAA,IAClB;AAAA,EACA;AAEA,WAAS,aAAc,OAAO,UAAU;AACtC,UAAM,WAAW,SAAS;AAC1B,UAAM,OAAO,SAAS;AACtB,UAAM,YAAY,SAAS;AAC3B,UAAM,aAAa,SAAS;AAC5B,UAAM,iBAAiB,SAAS;AAChC,UAAM,MAAM,SAAS;AACrB,UAAM,SAAS,SAAS;AACxB,UAAM,OAAO,SAAS;AACtB,UAAM,SAAS,SAAS;AAAA,EAC1B;AAEA,QAAM,oBAAoB;AAAA,IAExB,MAAM,SAAS,oBAAqB,OAAO,MAAM,MAAM;AACrD,UAAI,MAAM,YAAY,MAAM;AAC1B,mBAAW,OAAO,gCAAgC;AAAA,MACxD;AAEI,UAAI,KAAK,WAAW,GAAG;AACrB,mBAAW,OAAO,6CAA6C;AAAA,MACrE;AAEI,YAAM,QAAQ,uBAAuB,KAAK,KAAK,CAAC,CAAC;AAEjD,UAAI,UAAU,MAAM;AAClB,mBAAW,OAAO,2CAA2C;AAAA,MACnE;AAEI,YAAM,QAAQ,SAAS,MAAM,CAAC,GAAG,EAAE;AACnC,YAAM,QAAQ,SAAS,MAAM,CAAC,GAAG,EAAE;AAEnC,UAAI,UAAU,GAAG;AACf,mBAAW,OAAO,2CAA2C;AAAA,MACnE;AAEI,YAAM,UAAU,KAAK,CAAC;AACtB,YAAM,kBAAmB,QAAQ;AAEjC,UAAI,UAAU,KAAK,UAAU,GAAG;AAC9B,qBAAa,OAAO,0CAA0C;AAAA,MACpE;AAAA,IACA;AAAA,IAEE,KAAK,SAAS,mBAAoB,OAAO,MAAM,MAAM;AACnD,UAAI;AAEJ,UAAI,KAAK,WAAW,GAAG;AACrB,mBAAW,OAAO,6CAA6C;AAAA,MACrE;AAEI,YAAM,SAAS,KAAK,CAAC;AACrB,eAAS,KAAK,CAAC;AAEf,UAAI,CAAC,mBAAmB,KAAK,MAAM,GAAG;AACpC,mBAAW,OAAO,6DAA6D;AAAA,MACrF;AAEI,UAAI,gBAAgB,KAAK,MAAM,QAAQ,MAAM,GAAG;AAC9C,mBAAW,OAAO,gDAAgD,SAAS,cAAc;AAAA,MAC/F;AAEI,UAAI,CAAC,gBAAgB,KAAK,MAAM,GAAG;AACjC,mBAAW,OAAO,8DAA8D;AAAA,MACtF;AAEI,UAAI;AACF,iBAAS,mBAAmB,MAAM;AAAA,MACxC,SAAa,KAAK;AACZ,mBAAW,OAAO,8BAA8B,MAAM;AAAA,MAC5D;AAEI,YAAM,OAAO,MAAM,IAAI;AAAA,IAC3B;AAAA,EACA;AAEA,WAAS,eAAgB,OAAO,OAAO,KAAK,WAAW;AACrD,QAAI,QAAQ,KAAK;AACf,YAAM,UAAU,MAAM,MAAM,MAAM,OAAO,GAAG;AAE5C,UAAI,WAAW;AACb,iBAAS,YAAY,GAAG,UAAU,QAAQ,QAAQ,YAAY,SAAS,aAAa,GAAG;AACrF,gBAAM,aAAa,QAAQ,WAAW,SAAS;AAC/C,cAAI,EAAE,eAAe,KACd,cAAc,MAAQ,cAAc,UAAY;AACrD,uBAAW,OAAO,+BAA+B;AAAA,UAC3D;AAAA,QACA;AAAA,MACA,WAAe,sBAAsB,KAAK,OAAO,GAAG;AAC9C,mBAAW,OAAO,8CAA8C;AAAA,MACtE;AAEI,YAAM,UAAU;AAAA,IACpB;AAAA,EACA;AAEA,WAAS,gBAAiB,OAAO;AAC/B,UAAM;AAEN,QAAI,MAAM,sBAAsB,MAAM,MAAM,iBAAiB,MAAM,mBAAmB;AACpF,iBAAW,OAAO,4CAA4C,MAAM,oBAAoB,GAAG;AAAA,IAC/F;AAAA,EACA;AAEA,WAAS,cAAe,OAAO,aAAa,QAAQ,iBAAiB;AACnE,QAAI,CAACC,QAAO,SAAS,MAAM,GAAG;AAC5B,iBAAW,OAAO,mEAAmE;AAAA,IACzF;AAGE,oBAAgB,KAAK;AAErB,UAAM,aAAa,OAAO,KAAK,MAAM;AAErC,aAAS,QAAQ,GAAG,WAAW,WAAW,QAAQ,QAAQ,UAAU,SAAS,GAAG;AAC9E,YAAM,MAAM,WAAW,KAAK;AAE5B,sBAAgB,KAAK;AAErB,UAAI,CAAC,gBAAgB,KAAK,aAAa,GAAG,GAAG;AAC3C,oBAAY,aAAa,KAAK,OAAO,GAAG,CAAC;AACzC,wBAAgB,GAAG,IAAI;AAAA,MAC7B;AAAA,IACA;AAAA,EACA;AAEA,WAAS,iBAAkB,OAAO,SAAS,iBAAiB,QAAQ,SAAS,WAC3E,WAAW,gBAAgB,UAAU;AAIrC,QAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,gBAAU,MAAM,UAAU,MAAM,KAAK,OAAO;AAE5C,eAAS,QAAQ,GAAG,WAAW,QAAQ,QAAQ,QAAQ,UAAU,SAAS,GAAG;AAC3E,YAAI,MAAM,QAAQ,QAAQ,KAAK,CAAC,GAAG;AACjC,qBAAW,OAAO,6CAA6C;AAAA,QACvE;AAEM,YAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,KAAK,CAAC,MAAM,mBAAmB;AAC/E,kBAAQ,KAAK,IAAI;AAAA,QACzB;AAAA,MACA;AAAA,IACA;AAKE,QAAI,OAAO,YAAY,YAAY,OAAO,OAAO,MAAM,mBAAmB;AACxE,gBAAU;AAAA,IACd;AAEE,cAAU,OAAO,OAAO;AAExB,QAAI,YAAY,MAAM;AACpB,gBAAU,CAAA;AAAA,IACd;AAEE,QAAI,WAAW,2BAA2B;AACxC,UAAI,MAAM,QAAQ,SAAS,GAAG;AAC5B,YAAI,UAAU,SAAS,KAAK;AAC1B,qBAAW,OAAO,8BAA8B;AAAA,QACxD;AAEM,iBAAS,QAAQ,GAAG,WAAW,UAAU,QAAQ,QAAQ,UAAU,SAAS,GAAG;AAC7E,wBAAc,OAAO,SAAS,UAAU,KAAK,GAAG,eAAe;AAAA,QACvE;AAAA,MACA,OAAW;AACL,sBAAc,OAAO,SAAS,WAAW,eAAe;AAAA,MAC9D;AAAA,IACA,OAAS;AACL,UAAI,CAAC,MAAM,QACP,CAAC,gBAAgB,KAAK,iBAAiB,OAAO,KAC9C,gBAAgB,KAAK,SAAS,OAAO,GAAG;AAC1C,cAAM,OAAO,aAAa,MAAM;AAChC,cAAM,YAAY,kBAAkB,MAAM;AAC1C,cAAM,WAAW,YAAY,MAAM;AACnC,mBAAW,OAAO,wBAAwB;AAAA,MAChD;AAEI,kBAAY,SAAS,SAAS,SAAS;AACvC,aAAO,gBAAgB,OAAO;AAAA,IAClC;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,cAAe,OAAO;AAC7B,UAAM,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAEhD,QAAI,OAAO,IAAc;AACvB,YAAM;AAAA,IACV,WAAa,OAAO,IAAc;AAC9B,YAAM;AACN,UAAI,MAAM,MAAM,WAAW,MAAM,QAAQ,MAAM,IAAc;AAC3D,cAAM;AAAA,MACZ;AAAA,IACA,OAAS;AACL,iBAAW,OAAO,0BAA0B;AAAA,IAChD;AAEE,UAAM,QAAQ;AACd,UAAM,YAAY,MAAM;AACxB,UAAM,iBAAiB;AAAA,EACzB;AAEA,WAAS,oBAAqB,OAAO,eAAe,aAAa;AAC/D,QAAI,aAAa;AACjB,QAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE9C,WAAO,OAAO,GAAG;AACf,aAAO,aAAa,EAAE,GAAG;AACvB,YAAI,OAAO,KAAiB,MAAM,mBAAmB,IAAI;AACvD,gBAAM,iBAAiB,MAAM;AAAA,QACrC;AACM,aAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAClD;AAEI,UAAI,iBAAiB,OAAO,IAAa;AACvC,WAAG;AACD,eAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,QACpD,SAAe,OAAO,MAAgB,OAAO,MAAgB,OAAO;AAAA,MACpE;AAEI,UAAI,MAAM,EAAE,GAAG;AACb,sBAAc,KAAK;AAEnB,aAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAC1C;AACA,cAAM,aAAa;AAEnB,eAAO,OAAO,IAAiB;AAC7B,gBAAM;AACN,eAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,QACpD;AAAA,MACA,OAAW;AACL;AAAA,MACN;AAAA,IACA;AAEE,QAAI,gBAAgB,MAAM,eAAe,KAAK,MAAM,aAAa,aAAa;AAC5E,mBAAa,OAAO,uBAAuB;AAAA,IAC/C;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,sBAAuB,OAAO;AACrC,QAAI,YAAY,MAAM;AACtB,QAAI,KAAK,MAAM,MAAM,WAAW,SAAS;AAIzC,SAAK,OAAO,MAAe,OAAO,OAC9B,OAAO,MAAM,MAAM,WAAW,YAAY,CAAC,KAC3C,OAAO,MAAM,MAAM,WAAW,YAAY,CAAC,GAAG;AAChD,mBAAa;AAEb,WAAK,MAAM,MAAM,WAAW,SAAS;AAErC,UAAI,OAAO,KAAK,UAAU,EAAE,GAAG;AAC7B,eAAO;AAAA,MACb;AAAA,IACA;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,iBAAkB,OAAO,OAAO;AACvC,QAAI,UAAU,GAAG;AACf,YAAM,UAAU;AAAA,IACpB,WAAa,QAAQ,GAAG;AACpB,YAAM,UAAUA,QAAO,OAAO,MAAM,QAAQ,CAAC;AAAA,IACjD;AAAA,EACA;AAEA,WAAS,gBAAiB,OAAO,YAAY,sBAAsB;AACjE,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,QAAQ,MAAM;AACpB,UAAM,UAAU,MAAM;AAEtB,QAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE9C,QAAI,UAAU,EAAE,KACZ,gBAAgB,EAAE,KAClB,OAAO,MACP,OAAO,MACP,OAAO,MACP,OAAO,MACP,OAAO,OACP,OAAO,MACP,OAAO,MACP,OAAO,MACP,OAAO,MACP,OAAO,MACP,OAAO,IAAa;AACtB,aAAO;AAAA,IACX;AAEE,QAAI,OAAO,MAAe,OAAO,IAAa;AAC5C,YAAM,YAAY,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC;AAE3D,UAAI,UAAU,SAAS,KAClB,wBAAwB,gBAAgB,SAAS,GAAI;AACxD,eAAO;AAAA,MACb;AAAA,IACA;AAEE,UAAM,OAAO;AACb,UAAM,SAAS;AACf,mBAAe,aAAa,MAAM;AAClC,wBAAoB;AAEpB,WAAO,OAAO,GAAG;AACf,UAAI,OAAO,IAAa;AACtB,cAAM,YAAY,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC;AAE3D,YAAI,UAAU,SAAS,KAClB,wBAAwB,gBAAgB,SAAS,GAAI;AACxD;AAAA,QACR;AAAA,MACA,WAAe,OAAO,IAAa;AAC7B,cAAM,YAAY,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC;AAE3D,YAAI,UAAU,SAAS,GAAG;AACxB;AAAA,QACR;AAAA,MACA,WAAgB,MAAM,aAAa,MAAM,aAAa,sBAAsB,KAAK,KACjE,wBAAwB,gBAAgB,EAAE,GAAI;AACxD;AAAA,MACN,WAAe,MAAM,EAAE,GAAG;AACpB,gBAAQ,MAAM;AACd,qBAAa,MAAM;AACnB,sBAAc,MAAM;AACpB,4BAAoB,OAAO,OAAO,EAAE;AAEpC,YAAI,MAAM,cAAc,YAAY;AAClC,8BAAoB;AACpB,eAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAC1C;AAAA,QACR,OAAa;AACL,gBAAM,WAAW;AACjB,gBAAM,OAAO;AACb,gBAAM,YAAY;AAClB,gBAAM,aAAa;AACnB;AAAA,QACR;AAAA,MACA;AAEI,UAAI,mBAAmB;AACrB,uBAAe,OAAO,cAAc,YAAY,KAAK;AACrD,yBAAiB,OAAO,MAAM,OAAO,KAAK;AAC1C,uBAAe,aAAa,MAAM;AAClC,4BAAoB;AAAA,MAC1B;AAEI,UAAI,CAAC,aAAa,EAAE,GAAG;AACrB,qBAAa,MAAM,WAAW;AAAA,MACpC;AAEI,WAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IAChD;AAEE,mBAAe,OAAO,cAAc,YAAY,KAAK;AAErD,QAAI,MAAM,QAAQ;AAChB,aAAO;AAAA,IACX;AAEE,UAAM,OAAO;AACb,UAAM,SAAS;AACf,WAAO;AAAA,EACT;AAEA,WAAS,uBAAwB,OAAO,YAAY;AAClD,QAAI;AACJ,QAAI;AAEJ,QAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE9C,QAAI,OAAO,IAAa;AACtB,aAAO;AAAA,IACX;AAEE,UAAM,OAAO;AACb,UAAM,SAAS;AACf,UAAM;AACN,mBAAe,aAAa,MAAM;AAElC,YAAQ,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ,OAAO,GAAG;AAC1D,UAAI,OAAO,IAAa;AACtB,uBAAe,OAAO,cAAc,MAAM,UAAU,IAAI;AACxD,aAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAE5C,YAAI,OAAO,IAAa;AACtB,yBAAe,MAAM;AACrB,gBAAM;AACN,uBAAa,MAAM;AAAA,QAC3B,OAAa;AACL,iBAAO;AAAA,QACf;AAAA,MACA,WAAe,MAAM,EAAE,GAAG;AACpB,uBAAe,OAAO,cAAc,YAAY,IAAI;AACpD,yBAAiB,OAAO,oBAAoB,OAAO,OAAO,UAAU,CAAC;AACrE,uBAAe,aAAa,MAAM;AAAA,MACxC,WAAe,MAAM,aAAa,MAAM,aAAa,sBAAsB,KAAK,GAAG;AAC7E,mBAAW,OAAO,8DAA8D;AAAA,MACtF,OAAW;AACL,cAAM;AACN,YAAI,CAAC,aAAa,EAAE,GAAG;AACrB,uBAAa,MAAM;AAAA,QAC3B;AAAA,MACA;AAAA,IACA;AAEE,eAAW,OAAO,4DAA4D;AAAA,EAChF;AAEA,WAAS,uBAAwB,OAAO,YAAY;AAClD,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE9C,QAAI,OAAO,IAAa;AACtB,aAAO;AAAA,IACX;AAEE,UAAM,OAAO;AACb,UAAM,SAAS;AACf,UAAM;AACN,mBAAe,aAAa,MAAM;AAElC,YAAQ,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ,OAAO,GAAG;AAC1D,UAAI,OAAO,IAAa;AACtB,uBAAe,OAAO,cAAc,MAAM,UAAU,IAAI;AACxD,cAAM;AACN,eAAO;AAAA,MACb,WAAe,OAAO,IAAa;AAC7B,uBAAe,OAAO,cAAc,MAAM,UAAU,IAAI;AACxD,aAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAE5C,YAAI,MAAM,EAAE,GAAG;AACb,8BAAoB,OAAO,OAAO,UAAU;AAAA,QAGpD,WAAiB,KAAK,OAAO,kBAAkB,EAAE,GAAG;AAC5C,gBAAM,UAAU,gBAAgB,EAAE;AAClC,gBAAM;AAAA,QACd,YAAkB,MAAM,cAAc,EAAE,KAAK,GAAG;AACxC,cAAI,YAAY;AAChB,cAAI,YAAY;AAEhB,iBAAO,YAAY,GAAG,aAAa;AACjC,iBAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAE5C,iBAAK,MAAM,YAAY,EAAE,MAAM,GAAG;AAChC,2BAAa,aAAa,KAAK;AAAA,YAC3C,OAAiB;AACL,yBAAW,OAAO,gCAAgC;AAAA,YAC9D;AAAA,UACA;AAEQ,gBAAM,UAAU,kBAAkB,SAAS;AAE3C,gBAAM;AAAA,QACd,OAAa;AACL,qBAAW,OAAO,yBAAyB;AAAA,QACnD;AAEM,uBAAe,aAAa,MAAM;AAAA,MACxC,WAAe,MAAM,EAAE,GAAG;AACpB,uBAAe,OAAO,cAAc,YAAY,IAAI;AACpD,yBAAiB,OAAO,oBAAoB,OAAO,OAAO,UAAU,CAAC;AACrE,uBAAe,aAAa,MAAM;AAAA,MACxC,WAAe,MAAM,aAAa,MAAM,aAAa,sBAAsB,KAAK,GAAG;AAC7E,mBAAW,OAAO,8DAA8D;AAAA,MACtF,OAAW;AACL,cAAM;AACN,YAAI,CAAC,aAAa,EAAE,GAAG;AACrB,uBAAa,MAAM;AAAA,QAC3B;AAAA,MACA;AAAA,IACA;AAEE,eAAW,OAAO,4DAA4D;AAAA,EAChF;AAEA,WAAS,mBAAoB,OAAO,YAAY;AAC9C,QAAI,WAAW;AACf,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,OAAO,MAAM;AACnB,QAAI;AACJ,UAAM,UAAU,MAAM;AACtB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,kBAAkB,uBAAO,OAAO,IAAI;AAC1C,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE9C,QAAI,OAAO,IAAa;AACtB,mBAAa;AACb,kBAAY;AACZ,gBAAU,CAAA;AAAA,IACd,WAAa,OAAO,KAAa;AAC7B,mBAAa;AACb,kBAAY;AACZ,gBAAU,CAAA;AAAA,IACd,OAAS;AACL,aAAO;AAAA,IACX;AAEE,QAAI,MAAM,WAAW,MAAM;AACzB,kBAAY,OAAO,MAAM,QAAQ,OAAO;AAAA,IAC5C;AAEE,SAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAE5C,WAAO,OAAO,GAAG;AACf,0BAAoB,OAAO,MAAM,UAAU;AAE3C,WAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE1C,UAAI,OAAO,YAAY;AACrB,cAAM;AACN,cAAM,MAAM;AACZ,cAAM,SAAS;AACf,cAAM,OAAO,YAAY,YAAY;AACrC,cAAM,SAAS;AACf,eAAO;AAAA,MACb,WAAe,CAAC,UAAU;AACpB,mBAAW,OAAO,8CAA8C;AAAA,MACtE,WAAe,OAAO,IAAa;AAE7B,mBAAW,OAAO,0CAA0C;AAAA,MAClE;AAEI,eAAS,UAAU,YAAY;AAC/B,eAAS,iBAAiB;AAE1B,UAAI,OAAO,IAAa;AACtB,cAAM,YAAY,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC;AAE3D,YAAI,UAAU,SAAS,GAAG;AACxB,mBAAS,iBAAiB;AAC1B,gBAAM;AACN,8BAAoB,OAAO,MAAM,UAAU;AAAA,QACnD;AAAA,MACA;AAEI,cAAQ,MAAM;AACd,mBAAa,MAAM;AACnB,aAAO,MAAM;AACb,kBAAY,OAAO,YAAY,iBAAiB,OAAO,IAAI;AAC3D,eAAS,MAAM;AACf,gBAAU,MAAM;AAChB,0BAAoB,OAAO,MAAM,UAAU;AAE3C,WAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE1C,WAAK,kBAAkB,MAAM,SAAS,UAAU,OAAO,IAAa;AAClE,iBAAS;AACT,aAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAC5C,4BAAoB,OAAO,MAAM,UAAU;AAC3C,oBAAY,OAAO,YAAY,iBAAiB,OAAO,IAAI;AAC3D,oBAAY,MAAM;AAAA,MACxB;AAEI,UAAI,WAAW;AACb,yBAAiB,OAAO,SAAS,iBAAiB,QAAQ,SAAS,WAAW,OAAO,YAAY,IAAI;AAAA,MAC3G,WAAe,QAAQ;AACjB,gBAAQ,KAAK,iBAAiB,OAAO,MAAM,iBAAiB,QAAQ,SAAS,WAAW,OAAO,YAAY,IAAI,CAAC;AAAA,MACtH,OAAW;AACL,gBAAQ,KAAK,OAAO;AAAA,MAC1B;AAEI,0BAAoB,OAAO,MAAM,UAAU;AAE3C,WAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE1C,UAAI,OAAO,IAAa;AACtB,mBAAW;AACX,aAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAClD,OAAW;AACL,mBAAW;AAAA,MACjB;AAAA,IACA;AAEE,eAAW,OAAO,uDAAuD;AAAA,EAC3E;AAEA,WAAS,gBAAiB,OAAO,YAAY;AAC3C,QAAI;AACJ,QAAI,WAAW;AACf,QAAI,iBAAiB;AACrB,QAAI,iBAAiB;AACrB,QAAI,aAAa;AACjB,QAAI,aAAa;AACjB,QAAI,iBAAiB;AACrB,QAAI;AAEJ,QAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE9C,QAAI,OAAO,KAAa;AACtB,gBAAU;AAAA,IACd,WAAa,OAAO,IAAa;AAC7B,gBAAU;AAAA,IACd,OAAS;AACL,aAAO;AAAA,IACX;AAEE,UAAM,OAAO;AACb,UAAM,SAAS;AAEf,WAAO,OAAO,GAAG;AACf,WAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAE5C,UAAI,OAAO,MAAe,OAAO,IAAa;AAC5C,YAAI,kBAAkB,UAAU;AAC9B,qBAAY,OAAO,KAAe,gBAAgB;AAAA,QAC1D,OAAa;AACL,qBAAW,OAAO,sCAAsC;AAAA,QAChE;AAAA,MACA,YAAgB,MAAM,gBAAgB,EAAE,MAAM,GAAG;AAC3C,YAAI,QAAQ,GAAG;AACb,qBAAW,OAAO,8EAA8E;AAAA,QACxG,WAAiB,CAAC,gBAAgB;AAC1B,uBAAa,aAAa,MAAM;AAChC,2BAAiB;AAAA,QACzB,OAAa;AACL,qBAAW,OAAO,2CAA2C;AAAA,QACrE;AAAA,MACA,OAAW;AACL;AAAA,MACN;AAAA,IACA;AAEE,QAAI,aAAa,EAAE,GAAG;AACpB,SAAG;AAAE,aAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAAC,SAC3C,aAAa,EAAE;AAEtB,UAAI,OAAO,IAAa;AACtB,WAAG;AAAE,eAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,QAAC,SAC3C,CAAC,MAAM,EAAE,KAAM,OAAO;AAAA,MACnC;AAAA,IACA;AAEE,WAAO,OAAO,GAAG;AACf,oBAAc,KAAK;AACnB,YAAM,aAAa;AAEnB,WAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAG1C,cAAQ,CAAC,kBAAkB,MAAM,aAAa,eACtC,OAAO,IAAkB;AAC/B,cAAM;AACN,aAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAClD;AAEI,UAAI,CAAC,kBAAkB,MAAM,aAAa,YAAY;AACpD,qBAAa,MAAM;AAAA,MACzB;AAEI,UAAI,MAAM,EAAE,GAAG;AACb;AACA;AAAA,MACN;AAEI,UAAI,CAAC,kBAAkB,eAAe,GAAG;AACvC,mBAAW,OAAO,sCAAsC;AAAA,MAC9D;AAGI,UAAI,MAAM,aAAa,YAAY;AAEjC,YAAI,aAAa,eAAe;AAC9B,gBAAM,UAAUA,QAAO,OAAO,MAAM,iBAAiB,IAAI,aAAa,UAAU;AAAA,QACxF,WAAiB,aAAa,eAAe;AACrC,cAAI,gBAAgB;AAClB,kBAAM,UAAU;AAAA,UAC1B;AAAA,QACA;AAGM;AAAA,MACN;AAGI,UAAI,SAAS;AAEX,YAAI,aAAa,EAAE,GAAG;AACpB,2BAAiB;AAEjB,gBAAM,UAAUA,QAAO,OAAO,MAAM,iBAAiB,IAAI,aAAa,UAAU;AAAA,QAGxF,WAAiB,gBAAgB;AACzB,2BAAiB;AACjB,gBAAM,UAAUA,QAAO,OAAO,MAAM,aAAa,CAAC;AAAA,QAG1D,WAAiB,eAAe,GAAG;AAC3B,cAAI,gBAAgB;AAClB,kBAAM,UAAU;AAAA,UAC1B;AAAA,QAGA,OAAa;AACL,gBAAM,UAAUA,QAAO,OAAO,MAAM,UAAU;AAAA,QACtD;AAAA,MAGA,OAAW;AAEL,cAAM,UAAUA,QAAO,OAAO,MAAM,iBAAiB,IAAI,aAAa,UAAU;AAAA,MACtF;AAEI,uBAAiB;AACjB,uBAAiB;AACjB,mBAAa;AACb,YAAM,eAAe,MAAM;AAE3B,aAAO,CAAC,MAAM,EAAE,KAAM,OAAO,GAAI;AAC/B,aAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAClD;AAEI,qBAAe,OAAO,cAAc,MAAM,UAAU,KAAK;AAAA,IAC7D;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,kBAAmB,OAAO,YAAY;AAC7C,UAAM,OAAO,MAAM;AACnB,UAAM,UAAU,MAAM;AACtB,UAAM,UAAU,CAAA;AAChB,QAAI,WAAW;AAIf,QAAI,MAAM,mBAAmB,GAAI,QAAO;AAExC,QAAI,MAAM,WAAW,MAAM;AACzB,kBAAY,OAAO,MAAM,QAAQ,OAAO;AAAA,IAC5C;AAEE,QAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE9C,WAAO,OAAO,GAAG;AACf,UAAI,MAAM,mBAAmB,IAAI;AAC/B,cAAM,WAAW,MAAM;AACvB,mBAAW,OAAO,gDAAgD;AAAA,MACxE;AAEI,UAAI,OAAO,IAAa;AACtB;AAAA,MACN;AAEI,YAAM,YAAY,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC;AAE3D,UAAI,CAAC,UAAU,SAAS,GAAG;AACzB;AAAA,MACN;AAEI,iBAAW;AACX,YAAM;AAEN,UAAI,oBAAoB,OAAO,MAAM,EAAE,GAAG;AACxC,YAAI,MAAM,cAAc,YAAY;AAClC,kBAAQ,KAAK,IAAI;AACjB,eAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAC1C;AAAA,QACR;AAAA,MACA;AAEI,YAAM,QAAQ,MAAM;AACpB,kBAAY,OAAO,YAAY,kBAAkB,OAAO,IAAI;AAC5D,cAAQ,KAAK,MAAM,MAAM;AACzB,0BAAoB,OAAO,MAAM,EAAE;AAEnC,WAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE1C,WAAK,MAAM,SAAS,SAAS,MAAM,aAAa,eAAgB,OAAO,GAAI;AACzE,mBAAW,OAAO,qCAAqC;AAAA,MAC7D,WAAe,MAAM,aAAa,YAAY;AACxC;AAAA,MACN;AAAA,IACA;AAEE,QAAI,UAAU;AACZ,YAAM,MAAM;AACZ,YAAM,SAAS;AACf,YAAM,OAAO;AACb,YAAM,SAAS;AACf,aAAO;AAAA,IACX;AACE,WAAO;AAAA,EACT;AAEA,WAAS,iBAAkB,OAAO,YAAY,YAAY;AACxD,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,OAAO,MAAM;AACnB,UAAM,UAAU,MAAM;AACtB,UAAM,UAAU,CAAA;AAChB,UAAM,kBAAkB,uBAAO,OAAO,IAAI;AAC1C,QAAI,SAAS;AACb,QAAI,UAAU;AACd,QAAI,YAAY;AAChB,QAAI,gBAAgB;AACpB,QAAI,WAAW;AAIf,QAAI,MAAM,mBAAmB,GAAI,QAAO;AAExC,QAAI,MAAM,WAAW,MAAM;AACzB,kBAAY,OAAO,MAAM,QAAQ,OAAO;AAAA,IAC5C;AAEE,QAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE9C,WAAO,OAAO,GAAG;AACf,UAAI,CAAC,iBAAiB,MAAM,mBAAmB,IAAI;AACjD,cAAM,WAAW,MAAM;AACvB,mBAAW,OAAO,gDAAgD;AAAA,MACxE;AAEI,YAAM,YAAY,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC;AAC3D,YAAM,QAAQ,MAAM;AAMpB,WAAK,OAAO,MAAe,OAAO,OAAgB,UAAU,SAAS,GAAG;AACtE,YAAI,OAAO,IAAa;AACtB,cAAI,eAAe;AACjB,6BAAiB,OAAO,SAAS,iBAAiB,QAAQ,SAAS,MAAM,UAAU,eAAe,OAAO;AACzG,qBAAS,UAAU,YAAY;AAAA,UACzC;AAEQ,qBAAW;AACX,0BAAgB;AAChB,yBAAe;AAAA,QACvB,WAAiB,eAAe;AAExB,0BAAgB;AAChB,yBAAe;AAAA,QACvB,OAAa;AACL,qBAAW,OAAO,mGAAmG;AAAA,QAC7H;AAEM,cAAM,YAAY;AAClB,aAAK;AAAA,MAKX,OAAW;AACL,mBAAW,MAAM;AACjB,wBAAgB,MAAM;AACtB,kBAAU,MAAM;AAEhB,YAAI,CAAC,YAAY,OAAO,YAAY,kBAAkB,OAAO,IAAI,GAAG;AAGlE;AAAA,QACR;AAEM,YAAI,MAAM,SAAS,OAAO;AACxB,eAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE1C,iBAAO,aAAa,EAAE,GAAG;AACvB,iBAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,UACtD;AAEQ,cAAI,OAAO,IAAa;AACtB,iBAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAE5C,gBAAI,CAAC,UAAU,EAAE,GAAG;AAClB,yBAAW,OAAO,yFAAyF;AAAA,YACvH;AAEU,gBAAI,eAAe;AACjB,+BAAiB,OAAO,SAAS,iBAAiB,QAAQ,SAAS,MAAM,UAAU,eAAe,OAAO;AACzG,uBAAS,UAAU,YAAY;AAAA,YAC3C;AAEU,uBAAW;AACX,4BAAgB;AAChB,2BAAe;AACf,qBAAS,MAAM;AACf,sBAAU,MAAM;AAAA,UAC1B,WAAmB,UAAU;AACnB,uBAAW,OAAO,0DAA0D;AAAA,UACtF,OAAe;AACL,kBAAM,MAAM;AACZ,kBAAM,SAAS;AACf,mBAAO;AAAA,UACjB;AAAA,QACA,WAAiB,UAAU;AACnB,qBAAW,OAAO,gFAAgF;AAAA,QAC1G,OAAa;AACL,gBAAM,MAAM;AACZ,gBAAM,SAAS;AACf,iBAAO;AAAA,QACf;AAAA,MACA;AAKI,UAAI,MAAM,SAAS,SAAS,MAAM,aAAa,YAAY;AACzD,YAAI,eAAe;AACjB,qBAAW,MAAM;AACjB,0BAAgB,MAAM;AACtB,oBAAU,MAAM;AAAA,QACxB;AAEM,YAAI,YAAY,OAAO,YAAY,mBAAmB,MAAM,YAAY,GAAG;AACzE,cAAI,eAAe;AACjB,sBAAU,MAAM;AAAA,UAC1B,OAAe;AACL,wBAAY,MAAM;AAAA,UAC5B;AAAA,QACA;AAEM,YAAI,CAAC,eAAe;AAClB,2BAAiB,OAAO,SAAS,iBAAiB,QAAQ,SAAS,WAAW,UAAU,eAAe,OAAO;AAC9G,mBAAS,UAAU,YAAY;AAAA,QACvC;AAEM,4BAAoB,OAAO,MAAM,EAAE;AACnC,aAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,MAChD;AAEI,WAAK,MAAM,SAAS,SAAS,MAAM,aAAa,eAAgB,OAAO,GAAI;AACzE,mBAAW,OAAO,oCAAoC;AAAA,MAC5D,WAAe,MAAM,aAAa,YAAY;AACxC;AAAA,MACN;AAAA,IACA;AAOE,QAAI,eAAe;AACjB,uBAAiB,OAAO,SAAS,iBAAiB,QAAQ,SAAS,MAAM,UAAU,eAAe,OAAO;AAAA,IAC7G;AAGE,QAAI,UAAU;AACZ,YAAM,MAAM;AACZ,YAAM,SAAS;AACf,YAAM,OAAO;AACb,YAAM,SAAS;AAAA,IACnB;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,gBAAiB,OAAO;AAC/B,QAAI,aAAa;AACjB,QAAI,UAAU;AACd,QAAI;AACJ,QAAI;AAEJ,QAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE9C,QAAI,OAAO,GAAa,QAAO;AAE/B,QAAI,MAAM,QAAQ,MAAM;AACtB,iBAAW,OAAO,+BAA+B;AAAA,IACrD;AAEE,SAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAE5C,QAAI,OAAO,IAAa;AACtB,mBAAa;AACb,WAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IAChD,WAAa,OAAO,IAAa;AAC7B,gBAAU;AACV,kBAAY;AACZ,WAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IAChD,OAAS;AACL,kBAAY;AAAA,IAChB;AAEE,QAAI,YAAY,MAAM;AAEtB,QAAI,YAAY;AACd,SAAG;AAAE,aAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAAC,SAC3C,OAAO,KAAK,OAAO;AAE1B,UAAI,MAAM,WAAW,MAAM,QAAQ;AACjC,kBAAU,MAAM,MAAM,MAAM,WAAW,MAAM,QAAQ;AACrD,aAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAClD,OAAW;AACL,mBAAW,OAAO,oDAAoD;AAAA,MAC5E;AAAA,IACA,OAAS;AACL,aAAO,OAAO,KAAK,CAAC,UAAU,EAAE,GAAG;AACjC,YAAI,OAAO,IAAa;AACtB,cAAI,CAAC,SAAS;AACZ,wBAAY,MAAM,MAAM,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC;AAE/D,gBAAI,CAAC,mBAAmB,KAAK,SAAS,GAAG;AACvC,yBAAW,OAAO,iDAAiD;AAAA,YAC/E;AAEU,sBAAU;AACV,wBAAY,MAAM,WAAW;AAAA,UACvC,OAAe;AACL,uBAAW,OAAO,6CAA6C;AAAA,UACzE;AAAA,QACA;AAEM,aAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAClD;AAEI,gBAAU,MAAM,MAAM,MAAM,WAAW,MAAM,QAAQ;AAErD,UAAI,wBAAwB,KAAK,OAAO,GAAG;AACzC,mBAAW,OAAO,qDAAqD;AAAA,MAC7E;AAAA,IACA;AAEE,QAAI,WAAW,CAAC,gBAAgB,KAAK,OAAO,GAAG;AAC7C,iBAAW,OAAO,8CAA8C,OAAO;AAAA,IAC3E;AAEE,QAAI;AACF,gBAAU,mBAAmB,OAAO;AAAA,IACxC,SAAW,KAAK;AACZ,iBAAW,OAAO,4BAA4B,OAAO;AAAA,IACzD;AAEE,QAAI,YAAY;AACd,YAAM,MAAM;AAAA,IAChB,WAAa,gBAAgB,KAAK,MAAM,QAAQ,SAAS,GAAG;AACxD,YAAM,MAAM,MAAM,OAAO,SAAS,IAAI;AAAA,IAC1C,WAAa,cAAc,KAAK;AAC5B,YAAM,MAAM,MAAM;AAAA,IACtB,WAAa,cAAc,MAAM;AAC7B,YAAM,MAAM,uBAAuB;AAAA,IACvC,OAAS;AACL,iBAAW,OAAO,4BAA4B,YAAY,GAAG;AAAA,IACjE;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,mBAAoB,OAAO;AAClC,QAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE9C,QAAI,OAAO,GAAa,QAAO;AAE/B,QAAI,MAAM,WAAW,MAAM;AACzB,iBAAW,OAAO,mCAAmC;AAAA,IACzD;AAEE,SAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAC5C,UAAM,YAAY,MAAM;AAExB,WAAO,OAAO,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,gBAAgB,EAAE,GAAG;AACzD,WAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IAChD;AAEE,QAAI,MAAM,aAAa,WAAW;AAChC,iBAAW,OAAO,4DAA4D;AAAA,IAClF;AAEE,UAAM,SAAS,MAAM,MAAM,MAAM,WAAW,MAAM,QAAQ;AAC1D,WAAO;AAAA,EACT;AAEA,WAAS,UAAW,OAAO;AACzB,QAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE9C,QAAI,OAAO,GAAa,QAAO;AAE/B,SAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAC5C,UAAM,YAAY,MAAM;AAExB,WAAO,OAAO,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,gBAAgB,EAAE,GAAG;AACzD,WAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IAChD;AAEE,QAAI,MAAM,aAAa,WAAW;AAChC,iBAAW,OAAO,2DAA2D;AAAA,IACjF;AAEE,UAAM,QAAQ,MAAM,MAAM,MAAM,WAAW,MAAM,QAAQ;AAEzD,QAAI,CAAC,gBAAgB,KAAK,MAAM,WAAW,KAAK,GAAG;AACjD,iBAAW,OAAO,yBAAyB,QAAQ,GAAG;AAAA,IAC1D;AAEE,UAAM,SAAS,MAAM,UAAU,KAAK;AACpC,wBAAoB,OAAO,MAAM,EAAE;AACnC,WAAO;AAAA,EACT;AAEA,WAAS,gCAAiC,OAAO,eAAe,YAAY,YAAY;AACtF,UAAM,gBAAgB,cAAc,KAAK;AAEzC,2BAAuB,KAAK;AAC5B,iBAAa,OAAO,aAAa;AAIjC,UAAM,MAAM;AACZ,UAAM,SAAS;AACf,UAAM,OAAO;AACb,UAAM,SAAS;AAEf,QAAI,iBAAiB,OAAO,YAAY,UAAU,KAAK,MAAM,SAAS,WAAW;AAC/E,8BAAwB,KAAK;AAC7B,aAAO;AAAA,IACX;AAEE,8BAA0B,KAAK;AAC/B,iBAAa,OAAO,aAAa;AACjC,WAAO;AAAA,EACT;AAEA,WAAS,YAAa,OAAO,cAAc,aAAa,aAAa,cAAc;AACjF,QAAI;AACJ,QAAI;AACJ,QAAI,eAAe;AACnB,QAAI,YAAY;AAChB,QAAI,aAAa;AACjB,QAAI,gBAAgB;AACpB,QAAIO;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI,MAAM,SAAS,MAAM,UAAU;AACjC,iBAAW,OAAO,gCAAgC,MAAM,WAAW,GAAG;AAAA,IAC1E;AAEE,UAAM,SAAS;AAEf,QAAI,MAAM,aAAa,MAAM;AAC3B,YAAM,SAAS,QAAQ,KAAK;AAAA,IAChC;AAEE,UAAM,MAAM;AACZ,UAAM,SAAS;AACf,UAAM,OAAO;AACb,UAAM,SAAS;AAEf,UAAM,mBAAmB,oBAAoB,wBAC3C,sBAAsB,eACtB,qBAAqB;AAEvB,QAAI,aAAa;AACf,UAAI,oBAAoB,OAAO,MAAM,EAAE,GAAG;AACxC,oBAAY;AAEZ,YAAI,MAAM,aAAa,cAAc;AACnC,yBAAe;AAAA,QACvB,WAAiB,MAAM,eAAe,cAAc;AAC5C,yBAAe;AAAA,QACvB,WAAiB,MAAM,aAAa,cAAc;AAC1C,yBAAe;AAAA,QACvB;AAAA,MACA;AAAA,IACA;AAEE,QAAI,iBAAiB,GAAG;AACtB,aAAO,MAAM;AACX,cAAM,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAChD,cAAM,gBAAgB,cAAc,KAAK;AAIzC,YAAI,cACE,OAAO,MAAe,MAAM,QAAQ,QACpC,OAAO,MAAe,MAAM,WAAW,OAAQ;AACnD;AAAA,QACR;AAEM,YAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,mBAAmB,KAAK,GAAG;AACzD;AAAA,QACR;AAEM,YAAI,kBAAkB,MAAM;AAC1B,0BAAgB;AAAA,QACxB;AAEM,YAAI,oBAAoB,OAAO,MAAM,EAAE,GAAG;AACxC,sBAAY;AACZ,kCAAwB;AAExB,cAAI,MAAM,aAAa,cAAc;AACnC,2BAAe;AAAA,UACzB,WAAmB,MAAM,eAAe,cAAc;AAC5C,2BAAe;AAAA,UACzB,WAAmB,MAAM,aAAa,cAAc;AAC1C,2BAAe;AAAA,UACzB;AAAA,QACA,OAAa;AACL,kCAAwB;AAAA,QAChC;AAAA,MACA;AAAA,IACA;AAEE,QAAI,uBAAuB;AACzB,8BAAwB,aAAa;AAAA,IACzC;AAEE,QAAI,iBAAiB,KAAK,sBAAsB,aAAa;AAC3D,UAAI,oBAAoB,eAAe,qBAAqB,aAAa;AACvE,qBAAa;AAAA,MACnB,OAAW;AACL,qBAAa,eAAe;AAAA,MAClC;AAEI,oBAAc,MAAM,WAAW,MAAM;AAErC,UAAI,iBAAiB,GAAG;AACtB,YAAK,0BACA,kBAAkB,OAAO,WAAW,KAAK,iBAAiB,OAAO,aAAa,UAAU,MACzF,mBAAmB,OAAO,UAAU,GAAG;AACzC,uBAAa;AAAA,QACrB,OAAa;AACL,gBAAM,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAEhD,cAAI,kBAAkB,QAAQ,oBAAoB,CAAC,yBAC/C,OAAO,OAAe,OAAO,MAC7B;AAAA,YACE;AAAA,YACA;AAAA,YACA,cAAc,WAAW,cAAc;AAAA,YACvC;AAAA,UACd,GAAe;AACL,yBAAa;AAAA,UACvB,WAAoB,qBAAqB,gBAAgB,OAAO,UAAU,KAC9D,uBAAuB,OAAO,UAAU,KACxC,uBAAuB,OAAO,UAAU,GAAG;AAC7C,yBAAa;AAAA,UACvB,WAAmB,UAAU,KAAK,GAAG;AAC3B,yBAAa;AAEb,gBAAI,MAAM,QAAQ,QAAQ,MAAM,WAAW,MAAM;AAC/C,yBAAW,OAAO,2CAA2C;AAAA,YACzE;AAAA,UACA,WAAmB,gBAAgB,OAAO,YAAY,oBAAoB,WAAW,GAAG;AAC9E,yBAAa;AAEb,gBAAI,MAAM,QAAQ,MAAM;AACtB,oBAAM,MAAM;AAAA,YACxB;AAAA,UACA;AAEQ,cAAI,MAAM,WAAW,MAAM;AACzB,wBAAY,OAAO,MAAM,QAAQ,MAAM,MAAM;AAAA,UACvD;AAAA,QACA;AAAA,MACA,WAAe,iBAAiB,GAAG;AAG7B,qBAAa,yBAAyB,kBAAkB,OAAO,WAAW;AAAA,MAChF;AAAA,IACA;AAEE,QAAI,MAAM,QAAQ,MAAM;AACtB,UAAI,MAAM,WAAW,MAAM;AACzB,oBAAY,OAAO,MAAM,QAAQ,MAAM,MAAM;AAAA,MACnD;AAAA,IACA,WAAa,MAAM,QAAQ,KAAK;AAO5B,UAAI,MAAM,WAAW,QAAQ,MAAM,SAAS,UAAU;AACpD,mBAAW,OAAO,sEAAsE,MAAM,OAAO,GAAG;AAAA,MAC9G;AAEI,eAAS,YAAY,GAAG,eAAe,MAAM,cAAc,QAAQ,YAAY,cAAc,aAAa,GAAG;AAC3G,QAAAA,QAAO,MAAM,cAAc,SAAS;AAEpC,YAAIA,MAAK,QAAQ,MAAM,MAAM,GAAG;AAC9B,gBAAM,SAASA,MAAK,UAAU,MAAM,MAAM;AAC1C,gBAAM,MAAMA,MAAK;AACjB,cAAI,MAAM,WAAW,MAAM;AACzB,wBAAY,OAAO,MAAM,QAAQ,MAAM,MAAM;AAAA,UACvD;AACQ;AAAA,QACR;AAAA,MACA;AAAA,IACA,WAAa,MAAM,QAAQ,KAAK;AAC5B,UAAI,gBAAgB,KAAK,MAAM,QAAQ,MAAM,QAAQ,UAAU,GAAG,MAAM,GAAG,GAAG;AAC5E,QAAAA,QAAO,MAAM,QAAQ,MAAM,QAAQ,UAAU,EAAE,MAAM,GAAG;AAAA,MAC9D,OAAW;AAEL,QAAAA,QAAO;AACP,cAAM,WAAW,MAAM,QAAQ,MAAM,MAAM,QAAQ,UAAU;AAE7D,iBAAS,YAAY,GAAG,eAAe,SAAS,QAAQ,YAAY,cAAc,aAAa,GAAG;AAChG,cAAI,MAAM,IAAI,MAAM,GAAG,SAAS,SAAS,EAAE,IAAI,MAAM,MAAM,SAAS,SAAS,EAAE,KAAK;AAClF,YAAAA,QAAO,SAAS,SAAS;AACzB;AAAA,UACV;AAAA,QACA;AAAA,MACA;AAEI,UAAI,CAACA,OAAM;AACT,mBAAW,OAAO,mBAAmB,MAAM,MAAM,GAAG;AAAA,MAC1D;AAEI,UAAI,MAAM,WAAW,QAAQA,MAAK,SAAS,MAAM,MAAM;AACrD,mBAAW,OAAO,kCAAkC,MAAM,MAAM,0BAA0BA,MAAK,OAAO,aAAa,MAAM,OAAO,GAAG;AAAA,MACzI;AAEI,UAAI,CAACA,MAAK,QAAQ,MAAM,QAAQ,MAAM,GAAG,GAAG;AAC1C,mBAAW,OAAO,kCAAkC,MAAM,MAAM,gBAAgB;AAAA,MACtF,OAAW;AACL,cAAM,SAASA,MAAK,UAAU,MAAM,QAAQ,MAAM,GAAG;AACrD,YAAI,MAAM,WAAW,MAAM;AACzB,sBAAY,OAAO,MAAM,QAAQ,MAAM,MAAM;AAAA,QACrD;AAAA,MACA;AAAA,IACA;AAEE,QAAI,MAAM,aAAa,MAAM;AAC3B,YAAM,SAAS,SAAS,KAAK;AAAA,IACjC;AAEE,UAAM,SAAS;AACf,WAAO,MAAM,QAAQ,QAAQ,MAAM,WAAW,QAAQ;AAAA,EACxD;AAEA,WAAS,aAAc,OAAO;AAC5B,UAAM,gBAAgB,MAAM;AAC5B,QAAI,gBAAgB;AACpB,QAAI;AAEJ,UAAM,UAAU;AAChB,UAAM,kBAAkB,MAAM;AAC9B,UAAM,SAAS,uBAAO,OAAO,IAAI;AACjC,UAAM,YAAY,uBAAO,OAAO,IAAI;AAEpC,YAAQ,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ,OAAO,GAAG;AAC1D,0BAAoB,OAAO,MAAM,EAAE;AAEnC,WAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAE1C,UAAI,MAAM,aAAa,KAAK,OAAO,IAAa;AAC9C;AAAA,MACN;AAEI,sBAAgB;AAChB,WAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAC5C,UAAI,YAAY,MAAM;AAEtB,aAAO,OAAO,KAAK,CAAC,UAAU,EAAE,GAAG;AACjC,aAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAClD;AAEI,YAAM,gBAAgB,MAAM,MAAM,MAAM,WAAW,MAAM,QAAQ;AACjE,YAAM,gBAAgB,CAAA;AAEtB,UAAI,cAAc,SAAS,GAAG;AAC5B,mBAAW,OAAO,8DAA8D;AAAA,MACtF;AAEI,aAAO,OAAO,GAAG;AACf,eAAO,aAAa,EAAE,GAAG;AACvB,eAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,QACpD;AAEM,YAAI,OAAO,IAAa;AACtB,aAAG;AAAE,iBAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,UAAC,SAC3C,OAAO,KAAK,CAAC,MAAM,EAAE;AAC5B;AAAA,QACR;AAEM,YAAI,MAAM,EAAE,EAAG;AAEf,oBAAY,MAAM;AAElB,eAAO,OAAO,KAAK,CAAC,UAAU,EAAE,GAAG;AACjC,eAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,QACpD;AAEM,sBAAc,KAAK,MAAM,MAAM,MAAM,WAAW,MAAM,QAAQ,CAAC;AAAA,MACrE;AAEI,UAAI,OAAO,EAAG,eAAc,KAAK;AAEjC,UAAI,gBAAgB,KAAK,mBAAmB,aAAa,GAAG;AAC1D,0BAAkB,aAAa,EAAE,OAAO,eAAe,aAAa;AAAA,MAC1E,OAAW;AACL,qBAAa,OAAO,iCAAiC,gBAAgB,GAAG;AAAA,MAC9E;AAAA,IACA;AAEE,wBAAoB,OAAO,MAAM,EAAE;AAEnC,QAAI,MAAM,eAAe,KACrB,MAAM,MAAM,WAAW,MAAM,QAAQ,MAAM,MAC3C,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC,MAAM,MAC/C,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC,MAAM,IAAa;AAC9D,YAAM,YAAY;AAClB,0BAAoB,OAAO,MAAM,EAAE;AAAA,IACvC,WAAa,eAAe;AACxB,iBAAW,OAAO,iCAAiC;AAAA,IACvD;AAEE,gBAAY,OAAO,MAAM,aAAa,GAAG,mBAAmB,OAAO,IAAI;AACvE,wBAAoB,OAAO,MAAM,EAAE;AAEnC,QAAI,MAAM,mBACN,8BAA8B,KAAK,MAAM,MAAM,MAAM,eAAe,MAAM,QAAQ,CAAC,GAAG;AACxF,mBAAa,OAAO,kDAAkD;AAAA,IAC1E;AAEE,UAAM,UAAU,KAAK,MAAM,MAAM;AAEjC,QAAI,MAAM,aAAa,MAAM,aAAa,sBAAsB,KAAK,GAAG;AACtE,UAAI,MAAM,MAAM,WAAW,MAAM,QAAQ,MAAM,IAAa;AAC1D,cAAM,YAAY;AAClB,4BAAoB,OAAO,MAAM,EAAE;AAAA,MACzC;AACI;AAAA,IACJ;AAEE,QAAI,MAAM,WAAY,MAAM,SAAS,GAAI;AACvC,iBAAW,OAAO,uDAAuD;AAAA,IAC7E;AAAA,EACA;AAEA,WAAS,cAAe,OAAO,SAAS;AACtC,YAAQ,OAAO,KAAK;AACpB,cAAU,WAAW,CAAA;AAErB,QAAI,MAAM,WAAW,GAAG;AAEtB,UAAI,MAAM,WAAW,MAAM,SAAS,CAAC,MAAM,MACvC,MAAM,WAAW,MAAM,SAAS,CAAC,MAAM,IAAc;AACvD,iBAAS;AAAA,MACf;AAGI,UAAI,MAAM,WAAW,CAAC,MAAM,OAAQ;AAClC,gBAAQ,MAAM,MAAM,CAAC;AAAA,MAC3B;AAAA,IACA;AAEE,UAAM,QAAQ,IAAI,MAAM,OAAO,OAAO;AAEtC,UAAM,UAAU,MAAM,QAAQ,IAAI;AAElC,QAAI,YAAY,IAAI;AAClB,YAAM,WAAW;AACjB,iBAAW,OAAO,mCAAmC;AAAA,IACzD;AAGE,UAAM,SAAS;AAEf,WAAO,MAAM,MAAM,WAAW,MAAM,QAAQ,MAAM,IAAiB;AACjE,YAAM,cAAc;AACpB,YAAM,YAAY;AAAA,IACtB;AAEE,WAAO,MAAM,WAAY,MAAM,SAAS,GAAI;AAC1C,mBAAa,KAAK;AAAA,IACtB;AAEE,WAAO,MAAM;AAAA,EACf;AAEA,WAASQ,SAAS,OAAO,UAAU,SAAS;AAC1C,QAAI,aAAa,QAAQ,OAAO,aAAa,YAAY,OAAO,YAAY,aAAa;AACvF,gBAAU;AACV,iBAAW;AAAA,IACf;AAEE,UAAM,YAAY,cAAc,OAAO,OAAO;AAE9C,QAAI,OAAO,aAAa,YAAY;AAClC,aAAO;AAAA,IACX;AAEE,aAAS,QAAQ,GAAG,SAAS,UAAU,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACzE,eAAS,UAAU,KAAK,CAAC;AAAA,IAC7B;AAAA,EACA;AAEA,WAASC,MAAM,OAAO,SAAS;AAC7B,UAAM,YAAY,cAAc,OAAO,OAAO;AAE9C,QAAI,UAAU,WAAW,GAAG;AAC1B,aAAO;AAAA,IACX,WAAa,UAAU,WAAW,GAAG;AACjC,aAAO,UAAU,CAAC;AAAA,IACtB;AACE,UAAM,IAAIjB,eAAc,0DAA0D;AAAA,EACpF;AAEA,SAAA,UAAyBgB;AACzB,SAAA,OAAsBC;;;;;;;;ACxwDtB,QAAMhB,UAASC,cAAA;AACf,QAAMF,iBAAgBM,iBAAA;AACtB,QAAMS,kBAAiBL,gBAAA;AAEvB,QAAM,YAAY,OAAO,UAAU;AACnC,QAAM,kBAAkB,OAAO,UAAU;AAEzC,QAAM,WAAW;AACjB,QAAM,WAAW;AACjB,QAAM,iBAAiB;AACvB,QAAM,uBAAuB;AAC7B,QAAM,aAAa;AACnB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,aAAa;AACnB,QAAM,eAAe;AACrB,QAAM,iBAAiB;AACvB,QAAM,oBAAoB;AAC1B,QAAM,gBAAgB;AACtB,QAAM,aAAa;AACnB,QAAM,aAAa;AACnB,QAAM,aAAa;AACnB,QAAM,cAAc;AACpB,QAAM,oBAAoB;AAC1B,QAAM,gBAAgB;AACtB,QAAM,qBAAqB;AAC3B,QAAM,2BAA2B;AACjC,QAAM,4BAA4B;AAClC,QAAM,oBAAoB;AAC1B,QAAM,0BAA0B;AAChC,QAAM,qBAAqB;AAC3B,QAAM,2BAA2B;AAEjC,QAAM,mBAAmB,CAAA;AAEzB,mBAAiB,CAAI,IAAI;AACzB,mBAAiB,CAAI,IAAI;AACzB,mBAAiB,CAAI,IAAI;AACzB,mBAAiB,CAAI,IAAI;AACzB,mBAAiB,EAAI,IAAI;AACzB,mBAAiB,EAAI,IAAI;AACzB,mBAAiB,EAAI,IAAI;AACzB,mBAAiB,EAAI,IAAI;AACzB,mBAAiB,EAAI,IAAI;AACzB,mBAAiB,EAAI,IAAI;AACzB,mBAAiB,EAAI,IAAI;AACzB,mBAAiB,GAAI,IAAI;AACzB,mBAAiB,GAAI,IAAI;AACzB,mBAAiB,IAAM,IAAI;AAC3B,mBAAiB,IAAM,IAAI;AAE3B,QAAM,6BAA6B;AAAA,IACjC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAM;AAAA,IAAM;AAAA,IAC3C;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO;AAAA,EAC5C;AAEA,QAAM,2BAA2B;AAEjC,WAAS,gBAAiBH,SAAQH,MAAK;AACrC,QAAIA,SAAQ,KAAM,QAAO,CAAA;AAEzB,UAAM,SAAS,CAAA;AACf,UAAM,OAAO,OAAO,KAAKA,IAAG;AAE5B,aAAS,QAAQ,GAAG,SAAS,KAAK,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACpE,UAAI,MAAM,KAAK,KAAK;AACpB,UAAI,QAAQ,OAAOA,KAAI,GAAG,CAAC;AAE3B,UAAI,IAAI,MAAM,GAAG,CAAC,MAAM,MAAM;AAC5B,cAAM,uBAAuB,IAAI,MAAM,CAAC;AAAA,MAC9C;AACI,YAAMI,QAAOD,QAAO,gBAAgB,UAAU,EAAE,GAAG;AAEnD,UAAIC,SAAQ,gBAAgB,KAAKA,MAAK,cAAc,KAAK,GAAG;AAC1D,gBAAQA,MAAK,aAAa,KAAK;AAAA,MACrC;AAEI,aAAO,GAAG,IAAI;AAAA,IAClB;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,UAAW,WAAW;AAC7B,QAAI;AACJ,QAAI;AAEJ,UAAM,SAAS,UAAU,SAAS,EAAE,EAAE,YAAW;AAEjD,QAAI,aAAa,KAAM;AACrB,eAAS;AACT,eAAS;AAAA,IACb,WAAa,aAAa,OAAQ;AAC9B,eAAS;AACT,eAAS;AAAA,IACb,WAAa,aAAa,YAAY;AAClC,eAAS;AACT,eAAS;AAAA,IACb,OAAS;AACL,YAAM,IAAIR,eAAc,+DAA+D;AAAA,IAC3F;AAEE,WAAO,OAAO,SAASC,QAAO,OAAO,KAAK,SAAS,OAAO,MAAM,IAAI;AAAA,EACtE;AAEA,QAAM,sBAAsB;AAC5B,QAAM,sBAAsB;AAE5B,WAAS,MAAO,SAAS;AACvB,SAAK,SAAS,QAAQ,QAAQ,KAAKc;AACnC,SAAK,SAAS,KAAK,IAAI,GAAI,QAAQ,QAAQ,KAAK,CAAC;AACjD,SAAK,gBAAgB,QAAQ,eAAe,KAAK;AACjD,SAAK,cAAc,QAAQ,aAAa,KAAK;AAC7C,SAAK,YAAad,QAAO,UAAU,QAAQ,WAAW,CAAC,IAAI,KAAK,QAAQ,WAAW;AACnF,SAAK,WAAW,gBAAgB,KAAK,QAAQ,QAAQ,QAAQ,KAAK,IAAI;AACtE,SAAK,WAAW,QAAQ,UAAU,KAAK;AACvC,SAAK,YAAY,QAAQ,WAAW,KAAK;AACzC,SAAK,SAAS,QAAQ,QAAQ,KAAK;AACnC,SAAK,eAAe,QAAQ,cAAc,KAAK;AAC/C,SAAK,eAAe,QAAQ,cAAc,KAAK;AAC/C,SAAK,cAAc,QAAQ,aAAa,MAAM,MAAM,sBAAsB;AAC1E,SAAK,cAAc,QAAQ,aAAa,KAAK;AAC7C,SAAK,WAAW,OAAO,QAAQ,UAAU,MAAM,aAAa,QAAQ,UAAU,IAAI;AAElF,SAAK,gBAAgB,KAAK,OAAO;AACjC,SAAK,gBAAgB,KAAK,OAAO;AAEjC,SAAK,MAAM;AACX,SAAK,SAAS;AAEd,SAAK,aAAa,CAAA;AAClB,SAAK,iBAAiB;AAAA,EACxB;AAGA,WAAS,aAAc,QAAQ,QAAQ;AACrC,UAAM,MAAMA,QAAO,OAAO,KAAK,MAAM;AACrC,QAAI,WAAW;AACf,QAAI,SAAS;AACb,UAAM,SAAS,OAAO;AAEtB,WAAO,WAAW,QAAQ;AACxB,UAAI;AACJ,YAAM,OAAO,OAAO,QAAQ,MAAM,QAAQ;AAC1C,UAAI,SAAS,IAAI;AACf,eAAO,OAAO,MAAM,QAAQ;AAC5B,mBAAW;AAAA,MACjB,OAAW;AACL,eAAO,OAAO,MAAM,UAAU,OAAO,CAAC;AACtC,mBAAW,OAAO;AAAA,MACxB;AAEI,UAAI,KAAK,UAAU,SAAS,KAAM,WAAU;AAE5C,gBAAU;AAAA,IACd;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,iBAAkB,OAAO,OAAO;AACvC,WAAO,OAAOA,QAAO,OAAO,KAAK,MAAM,SAAS,KAAK;AAAA,EACvD;AAEA,WAAS,sBAAuB,OAAOiB,MAAK;AAC1C,aAAS,QAAQ,GAAG,SAAS,MAAM,cAAc,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACnF,YAAMV,QAAO,MAAM,cAAc,KAAK;AAEtC,UAAIA,MAAK,QAAQU,IAAG,GAAG;AACrB,eAAO;AAAA,MACb;AAAA,IACA;AAEE,WAAO;AAAA,EACT;AAGA,WAAS,aAAc,GAAG;AACxB,WAAO,MAAM,cAAc,MAAM;AAAA,EACnC;AAMA,WAAS,YAAa,GAAG;AACvB,WAAQ,KAAK,MAAW,KAAK,OACzB,KAAK,OAAW,KAAK,SAAa,MAAM,QAAU,MAAM,QACxD,KAAK,SAAW,KAAK,SAAa,MAAM,YACzC,KAAK,SAAW,KAAK;AAAA,EAC1B;AAOA,WAAS,qBAAsB,GAAG;AAChC,WAAO,YAAY,CAAC,KAClB,MAAM;AAAA,IAEN,MAAM,wBACN,MAAM;AAAA,EACV;AAWA,WAAS,YAAa,GAAG,MAAM,SAAS;AACtC,UAAM,wBAAwB,qBAAqB,CAAC;AACpD,UAAM,YAAY,yBAAyB,CAAC,aAAa,CAAC;AAC1D;AAAA;AAAA,OAGI,UACI,wBACA;AAAA,MAEA,MAAM,cACN,MAAM,4BACN,MAAM,6BACN,MAAM,2BACN,MAAM;AAAA,MAGZ,MAAM;AAAA,MACN,EAAE,SAAS,cAAc,CAAC;AAAA,MAE3B,qBAAqB,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,MAAM;AAAA,MAC3D,SAAS,cAAc;AAAA;AAAA,EAC1B;AAGA,WAAS,iBAAkB,GAAG;AAI5B,WAAO,YAAY,CAAC,KAClB,MAAM,YACN,CAAC,aAAa,CAAC;AAAA;AAAA;AAAA,IAGf,MAAM,cACN,MAAM,iBACN,MAAM,cACN,MAAM,cACN,MAAM,4BACN,MAAM,6BACN,MAAM,2BACN,MAAM;AAAA,IAEN,MAAM,cACN,MAAM,kBACN,MAAM,iBACN,MAAM,oBACN,MAAM,sBACN,MAAM,eACN,MAAM,qBACN,MAAM,qBACN,MAAM;AAAA,IAEN,MAAM,gBACN,MAAM,sBACN,MAAM;AAAA,EACV;AAGA,WAAS,gBAAiB,GAAG;AAE3B,WAAO,CAAC,aAAa,CAAC,KAAK,MAAM;AAAA,EACnC;AAGA,WAAS,YAAa,QAAQ,KAAK;AACjC,UAAM,QAAQ,OAAO,WAAW,GAAG;AACnC,QAAI;AAEJ,QAAI,SAAS,SAAU,SAAS,SAAU,MAAM,IAAI,OAAO,QAAQ;AACjE,eAAS,OAAO,WAAW,MAAM,CAAC;AAClC,UAAI,UAAU,SAAU,UAAU,OAAQ;AAExC,gBAAQ,QAAQ,SAAU,OAAQ,SAAS,QAAS;AAAA,MAC1D;AAAA,IACA;AACE,WAAO;AAAA,EACT;AAGA,WAAS,oBAAqB,QAAQ;AACpC,UAAM,iBAAiB;AACvB,WAAO,eAAe,KAAK,MAAM;AAAA,EACnC;AAEA,QAAM,cAAc;AACpB,QAAM,eAAe;AACrB,QAAM,gBAAgB;AACtB,QAAM,eAAe;AACrB,QAAM,eAAe;AASrB,WAAS,kBAAmB,QAAQ,gBAAgB,gBAAgB,WAClE,mBAAmB,aAAa,aAAa,SAAS;AACtD,QAAI;AACJ,QAAI,OAAO;AACX,QAAI,WAAW;AACf,QAAI,eAAe;AACnB,QAAI,kBAAkB;AACtB,UAAM,mBAAmB,cAAc;AACvC,QAAI,oBAAoB;AACxB,QAAI,QAAQ,iBAAiB,YAAY,QAAQ,CAAC,CAAC,KACjD,gBAAgB,YAAY,QAAQ,OAAO,SAAS,CAAC,CAAC;AAExD,QAAI,kBAAkB,aAAa;AAGjC,WAAK,IAAI,GAAG,IAAI,OAAO,QAAQ,QAAQ,QAAU,KAAK,IAAI,KAAK;AAC7D,eAAO,YAAY,QAAQ,CAAC;AAC5B,YAAI,CAAC,YAAY,IAAI,GAAG;AACtB,iBAAO;AAAA,QACf;AACM,gBAAQ,SAAS,YAAY,MAAM,UAAU,OAAO;AACpD,mBAAW;AAAA,MACjB;AAAA,IACA,OAAS;AAEL,WAAK,IAAI,GAAG,IAAI,OAAO,QAAQ,QAAQ,QAAU,KAAK,IAAI,KAAK;AAC7D,eAAO,YAAY,QAAQ,CAAC;AAC5B,YAAI,SAAS,gBAAgB;AAC3B,yBAAe;AAEf,cAAI,kBAAkB;AACpB,8BAAkB;AAAA,YAEf,IAAI,oBAAoB,IAAI,aAC5B,OAAO,oBAAoB,CAAC,MAAM;AACrC,gCAAoB;AAAA,UAC9B;AAAA,QACA,WAAiB,CAAC,YAAY,IAAI,GAAG;AAC7B,iBAAO;AAAA,QACf;AACM,gBAAQ,SAAS,YAAY,MAAM,UAAU,OAAO;AACpD,mBAAW;AAAA,MACjB;AAEI,wBAAkB,mBAAoB,qBACnC,IAAI,oBAAoB,IAAI,aAC5B,OAAO,oBAAoB,CAAC,MAAM;AAAA,IACzC;AAIE,QAAI,CAAC,gBAAgB,CAAC,iBAAiB;AAGrC,UAAI,SAAS,CAAC,eAAe,CAAC,kBAAkB,MAAM,GAAG;AACvD,eAAO;AAAA,MACb;AACI,aAAO,gBAAgB,sBAAsB,eAAe;AAAA,IAChE;AAEE,QAAI,iBAAiB,KAAK,oBAAoB,MAAM,GAAG;AACrD,aAAO;AAAA,IACX;AAGE,QAAI,CAAC,aAAa;AAChB,aAAO,kBAAkB,eAAe;AAAA,IAC5C;AACE,WAAO,gBAAgB,sBAAsB,eAAe;AAAA,EAC9D;AAQA,WAAS,YAAa,OAAO,QAAQ,OAAO,OAAO,SAAS;AAC1D,UAAM,QAAQ,WAAY;AACxB,UAAI,OAAO,WAAW,GAAG;AACvB,eAAO,MAAM,gBAAgB,sBAAsB,OAAO;AAAA,MAChE;AACI,UAAI,CAAC,MAAM,cAAc;AACvB,YAAI,2BAA2B,QAAQ,MAAM,MAAM,MAAM,yBAAyB,KAAK,MAAM,GAAG;AAC9F,iBAAO,MAAM,gBAAgB,sBAAuB,MAAM,SAAS,MAAQ,MAAM,SAAS;AAAA,QAClG;AAAA,MACA;AAEI,YAAM,SAAS,MAAM,SAAS,KAAK,IAAI,GAAG,KAAK;AAQ/C,YAAM,YAAa,MAAM,cAAc,KACnC,KACA,KAAK,IAAI,KAAK,IAAI,MAAM,WAAW,EAAE,GAAG,MAAM,YAAY,MAAM;AAGpE,YAAM,iBAAiB;AAAA,MAEpB,MAAM,YAAY,MAAM,SAAS,MAAM;AAC1C,eAAS,cAAeC,SAAQ;AAC9B,eAAO,sBAAsB,OAAOA,OAAM;AAAA,MAChD;AAEI,cAAQ;AAAA,QAAkB;AAAA,QAAQ;AAAA,QAAgB,MAAM;AAAA,QAAQ;AAAA,QAC9D;AAAA,QAAe,MAAM;AAAA,QAAa,MAAM,eAAe,CAAC;AAAA,QAAO;AAAA,MAAO,GAAC;AAAA,QACvE,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO,MAAM,OAAO,QAAQ,MAAM,IAAI,IAAI;AAAA,QAC5C,KAAK;AACH,iBAAO,MAAM,YAAY,QAAQ,MAAM,MAAM,IAC3C,kBAAkB,aAAa,QAAQ,MAAM,CAAC;AAAA,QAClD,KAAK;AACH,iBAAO,MAAM,YAAY,QAAQ,MAAM,MAAM,IAC3C,kBAAkB,aAAa,WAAW,QAAQ,SAAS,GAAG,MAAM,CAAC;AAAA,QACzE,KAAK;AACH,iBAAO,MAAM,aAAa,MAAiB,IAAI;AAAA,QACjD;AACE,gBAAM,IAAInB,eAAc,wCAAwC;AAAA,MACxE;AAAA,IACA,GAAG;AAAA,EACH;AAGA,WAAS,YAAa,QAAQ,gBAAgB;AAC5C,UAAM,kBAAkB,oBAAoB,MAAM,IAAI,OAAO,cAAc,IAAI;AAG/E,UAAM,OAAO,OAAO,OAAO,SAAS,CAAC,MAAM;AAC3C,UAAM,OAAO,SAAS,OAAO,OAAO,SAAS,CAAC,MAAM,QAAQ,WAAW;AACvE,UAAM,QAAQ,OAAO,MAAO,OAAO,KAAK;AAExC,WAAO,kBAAkB,QAAQ;AAAA,EACnC;AAGA,WAAS,kBAAmB,QAAQ;AAClC,WAAO,OAAO,OAAO,SAAS,CAAC,MAAM,OAAO,OAAO,MAAM,GAAG,EAAE,IAAI;AAAA,EACpE;AAIA,WAAS,WAAY,QAAQ,OAAO;AAKlC,UAAM,SAAS;AAGf,QAAI,UAAU,WAAY;AACxB,UAAI,SAAS,OAAO,QAAQ,IAAI;AAChC,eAAS,WAAW,KAAK,SAAS,OAAO;AACzC,aAAO,YAAY;AACnB,aAAO,SAAS,OAAO,MAAM,GAAG,MAAM,GAAG,KAAK;AAAA,IAClD,GAAG;AAED,QAAI,mBAAmB,OAAO,CAAC,MAAM,QAAQ,OAAO,CAAC,MAAM;AAC3D,QAAI;AAGJ,QAAI;AACJ,WAAQ,QAAQ,OAAO,KAAK,MAAM,GAAI;AACpC,YAAM,SAAS,MAAM,CAAC;AACtB,YAAM,OAAO,MAAM,CAAC;AAEpB,qBAAgB,KAAK,CAAC,MAAM;AAC5B,gBAAU,UACN,CAAC,oBAAoB,CAAC,gBAAgB,SAAS,KAAM,OAAO,MAC9D,SAAS,MAAM,KAAK;AACtB,yBAAmB;AAAA,IACvB;AAEE,WAAO;AAAA,EACT;AAMA,WAAS,SAAU,MAAM,OAAO;AAC9B,QAAI,SAAS,MAAM,KAAK,CAAC,MAAM,IAAK,QAAO;AAG3C,UAAM,UAAU;AAChB,QAAI;AAEJ,QAAI,QAAQ;AACZ,QAAI;AACJ,QAAI,OAAO;AACX,QAAI,OAAO;AACX,QAAI,SAAS;AAMb,WAAQ,QAAQ,QAAQ,KAAK,IAAI,GAAI;AACnC,aAAO,MAAM;AAEb,UAAI,OAAO,QAAQ,OAAO;AACxB,cAAO,OAAO,QAAS,OAAO;AAC9B,kBAAU,OAAO,KAAK,MAAM,OAAO,GAAG;AAEtC,gBAAQ,MAAM;AAAA,MACpB;AACI,aAAO;AAAA,IACX;AAIE,cAAU;AAEV,QAAI,KAAK,SAAS,QAAQ,SAAS,OAAO,OAAO;AAC/C,gBAAU,KAAK,MAAM,OAAO,IAAI,IAAI,OAAO,KAAK,MAAM,OAAO,CAAC;AAAA,IAClE,OAAS;AACL,gBAAU,KAAK,MAAM,KAAK;AAAA,IAC9B;AAEE,WAAO,OAAO,MAAM,CAAC;AAAA,EACvB;AAGA,WAAS,aAAc,QAAQ;AAC7B,QAAI,SAAS;AACb,QAAI,OAAO;AAEX,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,QAAQ,QAAU,KAAK,IAAI,KAAK;AACjE,aAAO,YAAY,QAAQ,CAAC;AAC5B,YAAM,YAAY,iBAAiB,IAAI;AAEvC,UAAI,CAAC,aAAa,YAAY,IAAI,GAAG;AACnC,kBAAU,OAAO,CAAC;AAClB,YAAI,QAAQ,MAAS,WAAU,OAAO,IAAI,CAAC;AAAA,MACjD,OAAW;AACL,kBAAU,aAAa,UAAU,IAAI;AAAA,MAC3C;AAAA,IACA;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,kBAAmB,OAAO,OAAO,QAAQ;AAChD,QAAI,UAAU;AACd,UAAM,OAAO,MAAM;AAEnB,aAAS,QAAQ,GAAG,SAAS,OAAO,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACtE,UAAI,QAAQ,OAAO,KAAK;AAExB,UAAI,MAAM,UAAU;AAClB,gBAAQ,MAAM,SAAS,KAAK,QAAQ,OAAO,KAAK,GAAG,KAAK;AAAA,MAC9D;AAGI,UAAI,UAAU,OAAO,OAAO,OAAO,OAAO,KAAK,KAC1C,OAAO,UAAU,eACjB,UAAU,OAAO,OAAO,MAAM,OAAO,KAAK,GAAI;AACjD,YAAI,YAAY,GAAI,YAAW,OAAO,CAAC,MAAM,eAAe,MAAM;AAClE,mBAAW,MAAM;AAAA,MACvB;AAAA,IACA;AAEE,UAAM,MAAM;AACZ,UAAM,OAAO,MAAM,UAAU;AAAA,EAC/B;AAEA,WAAS,mBAAoB,OAAO,OAAO,QAAQ,SAAS;AAC1D,QAAI,UAAU;AACd,UAAM,OAAO,MAAM;AAEnB,aAAS,QAAQ,GAAG,SAAS,OAAO,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACtE,UAAI,QAAQ,OAAO,KAAK;AAExB,UAAI,MAAM,UAAU;AAClB,gBAAQ,MAAM,SAAS,KAAK,QAAQ,OAAO,KAAK,GAAG,KAAK;AAAA,MAC9D;AAGI,UAAI,UAAU,OAAO,QAAQ,GAAG,OAAO,MAAM,MAAM,OAAO,IAAI,KACzD,OAAO,UAAU,eACjB,UAAU,OAAO,QAAQ,GAAG,MAAM,MAAM,MAAM,OAAO,IAAI,GAAI;AAChE,YAAI,CAAC,WAAW,YAAY,IAAI;AAC9B,qBAAW,iBAAiB,OAAO,KAAK;AAAA,QAChD;AAEM,YAAI,MAAM,QAAQ,mBAAmB,MAAM,KAAK,WAAW,CAAC,GAAG;AAC7D,qBAAW;AAAA,QACnB,OAAa;AACL,qBAAW;AAAA,QACnB;AAEM,mBAAW,MAAM;AAAA,MACvB;AAAA,IACA;AAEE,UAAM,MAAM;AACZ,UAAM,OAAO,WAAW;AAAA,EAC1B;AAEA,WAAS,iBAAkB,OAAO,OAAO,QAAQ;AAC/C,QAAI,UAAU;AACd,UAAM,OAAO,MAAM;AACnB,UAAM,gBAAgB,OAAO,KAAK,MAAM;AAExC,aAAS,QAAQ,GAAG,SAAS,cAAc,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AAC7E,UAAI,aAAa;AACjB,UAAI,YAAY,GAAI,eAAc;AAElC,UAAI,MAAM,aAAc,eAAc;AAEtC,YAAM,YAAY,cAAc,KAAK;AACrC,UAAI,cAAc,OAAO,SAAS;AAElC,UAAI,MAAM,UAAU;AAClB,sBAAc,MAAM,SAAS,KAAK,QAAQ,WAAW,WAAW;AAAA,MACtE;AAEI,UAAI,CAAC,UAAU,OAAO,OAAO,WAAW,OAAO,KAAK,GAAG;AACrD;AAAA,MACN;AAEI,UAAI,MAAM,KAAK,SAAS,KAAM,eAAc;AAE5C,oBAAc,MAAM,QAAQ,MAAM,eAAe,MAAM,MAAM,OAAO,MAAM,eAAe,KAAK;AAE9F,UAAI,CAAC,UAAU,OAAO,OAAO,aAAa,OAAO,KAAK,GAAG;AACvD;AAAA,MACN;AAEI,oBAAc,MAAM;AAGpB,iBAAW;AAAA,IACf;AAEE,UAAM,MAAM;AACZ,UAAM,OAAO,MAAM,UAAU;AAAA,EAC/B;AAEA,WAAS,kBAAmB,OAAO,OAAO,QAAQ,SAAS;AACzD,QAAI,UAAU;AACd,UAAM,OAAO,MAAM;AACnB,UAAM,gBAAgB,OAAO,KAAK,MAAM;AAGxC,QAAI,MAAM,aAAa,MAAM;AAE3B,oBAAc,KAAI;AAAA,IACtB,WAAa,OAAO,MAAM,aAAa,YAAY;AAE/C,oBAAc,KAAK,MAAM,QAAQ;AAAA,IACrC,WAAa,MAAM,UAAU;AAEzB,YAAM,IAAIA,eAAc,0CAA0C;AAAA,IACtE;AAEE,aAAS,QAAQ,GAAG,SAAS,cAAc,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AAC7E,UAAI,aAAa;AAEjB,UAAI,CAAC,WAAW,YAAY,IAAI;AAC9B,sBAAc,iBAAiB,OAAO,KAAK;AAAA,MACjD;AAEI,YAAM,YAAY,cAAc,KAAK;AACrC,UAAI,cAAc,OAAO,SAAS;AAElC,UAAI,MAAM,UAAU;AAClB,sBAAc,MAAM,SAAS,KAAK,QAAQ,WAAW,WAAW;AAAA,MACtE;AAEI,UAAI,CAAC,UAAU,OAAO,QAAQ,GAAG,WAAW,MAAM,MAAM,IAAI,GAAG;AAC7D;AAAA,MACN;AAEI,YAAM,eAAgB,MAAM,QAAQ,QAAQ,MAAM,QAAQ,OAC1C,MAAM,QAAQ,MAAM,KAAK,SAAS;AAElD,UAAI,cAAc;AAChB,YAAI,MAAM,QAAQ,mBAAmB,MAAM,KAAK,WAAW,CAAC,GAAG;AAC7D,wBAAc;AAAA,QACtB,OAAa;AACL,wBAAc;AAAA,QACtB;AAAA,MACA;AAEI,oBAAc,MAAM;AAEpB,UAAI,cAAc;AAChB,sBAAc,iBAAiB,OAAO,KAAK;AAAA,MACjD;AAEI,UAAI,CAAC,UAAU,OAAO,QAAQ,GAAG,aAAa,MAAM,YAAY,GAAG;AACjE;AAAA,MACN;AAEI,UAAI,MAAM,QAAQ,mBAAmB,MAAM,KAAK,WAAW,CAAC,GAAG;AAC7D,sBAAc;AAAA,MACpB,OAAW;AACL,sBAAc;AAAA,MACpB;AAEI,oBAAc,MAAM;AAGpB,iBAAW;AAAA,IACf;AAEE,UAAM,MAAM;AACZ,UAAM,OAAO,WAAW;AAAA,EAC1B;AAEA,WAAS,WAAY,OAAO,QAAQ,UAAU;AAC5C,UAAM,WAAW,WAAW,MAAM,gBAAgB,MAAM;AAExD,aAAS,QAAQ,GAAG,SAAS,SAAS,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACxE,YAAMQ,QAAO,SAAS,KAAK;AAE3B,WAAKA,MAAK,cAAcA,MAAK,eACxB,CAACA,MAAK,cAAgB,OAAO,WAAW,YAAc,kBAAkBA,MAAK,gBAC7E,CAACA,MAAK,aAAaA,MAAK,UAAU,MAAM,IAAI;AAC/C,YAAI,UAAU;AACZ,cAAIA,MAAK,SAASA,MAAK,eAAe;AACpC,kBAAM,MAAMA,MAAK,cAAc,MAAM;AAAA,UAC/C,OAAe;AACL,kBAAM,MAAMA,MAAK;AAAA,UAC3B;AAAA,QACA,OAAa;AACL,gBAAM,MAAM;AAAA,QACpB;AAEM,YAAIA,MAAK,WAAW;AAClB,gBAAM,QAAQ,MAAM,SAASA,MAAK,GAAG,KAAKA,MAAK;AAE/C,cAAI;AACJ,cAAI,UAAU,KAAKA,MAAK,SAAS,MAAM,qBAAqB;AAC1D,sBAAUA,MAAK,UAAU,QAAQ,KAAK;AAAA,UAChD,WAAmB,gBAAgB,KAAKA,MAAK,WAAW,KAAK,GAAG;AACtD,sBAAUA,MAAK,UAAU,KAAK,EAAE,QAAQ,KAAK;AAAA,UACvD,OAAe;AACL,kBAAM,IAAIR,eAAc,OAAOQ,MAAK,MAAM,iCAAiC,QAAQ,SAAS;AAAA,UACtG;AAEQ,gBAAM,OAAO;AAAA,QACrB;AAEM,eAAO;AAAA,MACb;AAAA,IACA;AAEE,WAAO;AAAA,EACT;AAKA,WAAS,UAAW,OAAO,OAAO,QAAQ,OAAO,SAAS,OAAO,YAAY;AAC3E,UAAM,MAAM;AACZ,UAAM,OAAO;AAEb,QAAI,CAAC,WAAW,OAAO,QAAQ,KAAK,GAAG;AACrC,iBAAW,OAAO,QAAQ,IAAI;AAAA,IAClC;AAEE,UAAMA,QAAO,UAAU,KAAK,MAAM,IAAI;AACtC,UAAM,UAAU;AAEhB,QAAI,OAAO;AACT,cAAS,MAAM,YAAY,KAAK,MAAM,YAAY;AAAA,IACtD;AAEE,UAAM,gBAAgBA,UAAS,qBAAqBA,UAAS;AAC7D,QAAI;AACJ,QAAI;AAEJ,QAAI,eAAe;AACjB,uBAAiB,MAAM,WAAW,QAAQ,MAAM;AAChD,kBAAY,mBAAmB;AAAA,IACnC;AAEE,QAAK,MAAM,QAAQ,QAAQ,MAAM,QAAQ,OAAQ,aAAc,MAAM,WAAW,KAAK,QAAQ,GAAI;AAC/F,gBAAU;AAAA,IACd;AAEE,QAAI,aAAa,MAAM,eAAe,cAAc,GAAG;AACrD,YAAM,OAAO,UAAU;AAAA,IAC3B,OAAS;AACL,UAAI,iBAAiB,aAAa,CAAC,MAAM,eAAe,cAAc,GAAG;AACvE,cAAM,eAAe,cAAc,IAAI;AAAA,MAC7C;AACI,UAAIA,UAAS,mBAAmB;AAC9B,YAAI,SAAU,OAAO,KAAK,MAAM,IAAI,EAAE,WAAW,GAAI;AACnD,4BAAkB,OAAO,OAAO,MAAM,MAAM,OAAO;AACnD,cAAI,WAAW;AACb,kBAAM,OAAO,UAAU,iBAAiB,MAAM;AAAA,UACxD;AAAA,QACA,OAAa;AACL,2BAAiB,OAAO,OAAO,MAAM,IAAI;AACzC,cAAI,WAAW;AACb,kBAAM,OAAO,UAAU,iBAAiB,MAAM,MAAM;AAAA,UAC9D;AAAA,QACA;AAAA,MACA,WAAeA,UAAS,kBAAkB;AACpC,YAAI,SAAU,MAAM,KAAK,WAAW,GAAI;AACtC,cAAI,MAAM,iBAAiB,CAAC,cAAc,QAAQ,GAAG;AACnD,+BAAmB,OAAO,QAAQ,GAAG,MAAM,MAAM,OAAO;AAAA,UAClE,OAAe;AACL,+BAAmB,OAAO,OAAO,MAAM,MAAM,OAAO;AAAA,UAC9D;AACQ,cAAI,WAAW;AACb,kBAAM,OAAO,UAAU,iBAAiB,MAAM;AAAA,UACxD;AAAA,QACA,OAAa;AACL,4BAAkB,OAAO,OAAO,MAAM,IAAI;AAC1C,cAAI,WAAW;AACb,kBAAM,OAAO,UAAU,iBAAiB,MAAM,MAAM;AAAA,UAC9D;AAAA,QACA;AAAA,MACA,WAAeA,UAAS,mBAAmB;AACrC,YAAI,MAAM,QAAQ,KAAK;AACrB,sBAAY,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO;AAAA,QAC5D;AAAA,MACA,WAAeA,UAAS,sBAAsB;AACxC,eAAO;AAAA,MACb,OAAW;AACL,YAAI,MAAM,YAAa,QAAO;AAC9B,cAAM,IAAIR,eAAc,4CAA4CQ,KAAI;AAAA,MAC9E;AAEI,UAAI,MAAM,QAAQ,QAAQ,MAAM,QAAQ,KAAK;AAc3C,YAAI,SAAS;AAAA,UACX,MAAM,IAAI,CAAC,MAAM,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,MAAM;AAAA,QAC1D,EAAQ,QAAQ,MAAM,KAAK;AAErB,YAAI,MAAM,IAAI,CAAC,MAAM,KAAK;AACxB,mBAAS,MAAM;AAAA,QACvB,WAAiB,OAAO,MAAM,GAAG,EAAE,MAAM,sBAAsB;AACvD,mBAAS,OAAO,OAAO,MAAM,EAAE;AAAA,QACvC,OAAa;AACL,mBAAS,OAAO,SAAS;AAAA,QACjC;AAEM,cAAM,OAAO,SAAS,MAAM,MAAM;AAAA,MACxC;AAAA,IACA;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,uBAAwB,QAAQ,OAAO;AAC9C,UAAM,UAAU,CAAA;AAChB,UAAM,oBAAoB,CAAA;AAE1B,gBAAY,QAAQ,SAAS,iBAAiB;AAE9C,UAAM,SAAS,kBAAkB;AACjC,aAAS,QAAQ,GAAG,QAAQ,QAAQ,SAAS,GAAG;AAC9C,YAAM,WAAW,KAAK,QAAQ,kBAAkB,KAAK,CAAC,CAAC;AAAA,IAC3D;AACE,UAAM,iBAAiB,IAAI,MAAM,MAAM;AAAA,EACzC;AAEA,WAAS,YAAa,QAAQ,SAAS,mBAAmB;AACxD,QAAI,WAAW,QAAQ,OAAO,WAAW,UAAU;AACjD,YAAM,QAAQ,QAAQ,QAAQ,MAAM;AACpC,UAAI,UAAU,IAAI;AAChB,YAAI,kBAAkB,QAAQ,KAAK,MAAM,IAAI;AAC3C,4BAAkB,KAAK,KAAK;AAAA,QACpC;AAAA,MACA,OAAW;AACL,gBAAQ,KAAK,MAAM;AAEnB,YAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,mBAAS,IAAI,GAAG,SAAS,OAAO,QAAQ,IAAI,QAAQ,KAAK,GAAG;AAC1D,wBAAY,OAAO,CAAC,GAAG,SAAS,iBAAiB;AAAA,UAC3D;AAAA,QACA,OAAa;AACL,gBAAM,gBAAgB,OAAO,KAAK,MAAM;AAExC,mBAAS,IAAI,GAAG,SAAS,cAAc,QAAQ,IAAI,QAAQ,KAAK,GAAG;AACjE,wBAAY,OAAO,cAAc,CAAC,CAAC,GAAG,SAAS,iBAAiB;AAAA,UAC1E;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAEA,WAASY,MAAM,OAAO,SAAS;AAC7B,cAAU,WAAW,CAAA;AAErB,UAAM,QAAQ,IAAI,MAAM,OAAO;AAE/B,QAAI,CAAC,MAAM,OAAQ,wBAAuB,OAAO,KAAK;AAEtD,QAAI,QAAQ;AAEZ,QAAI,MAAM,UAAU;AAClB,cAAQ,MAAM,SAAS,KAAK,EAAE,IAAI,MAAK,GAAI,IAAI,KAAK;AAAA,IACxD;AAEE,QAAI,UAAU,OAAO,GAAG,OAAO,MAAM,IAAI,EAAG,QAAO,MAAM,OAAO;AAEhE,WAAO;AAAA,EACT;AAEA,SAAA,OAAsBA;;;;;;;ACt6BtB,QAAMC,UAASnB,cAAA;AACf,QAAMoB,UAAShB,cAAA;AAEf,WAAS,QAAS,MAAM,IAAI;AAC1B,WAAO,WAAY;AACjB,YAAM,IAAI,MAAM,mBAAmB,OAAO,wCAC1B,KAAK,yCAAyC;AAAA,IAClE;AAAA,EACA;AAEA,SAAA,OAAsBI,YAAA;AACtB,SAAA,SAAwBC,cAAA;AACxB,SAAA,kBAAiCC,gBAAA;AACjC,SAAA,cAA6BC,YAAA;AAC7B,SAAA,cAA6BC,YAAA;AAC7B,SAAA,iBAAgCS,gBAAA;AAChC,SAAA,OAAsBF,QAAO;AAC7B,SAAA,UAAyBA,QAAO;AAChC,SAAA,OAAsBC,QAAO;AAC7B,SAAA,gBAA+BE,iBAAA;AAG/B,SAAA,QAAuB;AAAA,IACrB,QAAQC,cAAA;AAAA,IACR,OAAOC,aAAA;AAAA,IACP,KAAKC,WAAA;AAAA,IACL,MAAMC,aAAA;AAAA,IACN,OAAOC,aAAA;AAAA,IACP,KAAKC,WAAA;AAAA,IACL,WAAWC,iBAAA;AAAA,IACX,MAAMC,YAAA;AAAA,IACN,KAAKC,WAAA;AAAA,IACL,OAAOC,aAAA;AAAA,IACP,MAAMC,YAAA;AAAA,IACN,KAAKC,WAAA;AAAA,IACL,KAAKC,WAAA;AAAA,EACP;AAGA,SAAA,WAA0B,QAAQ,YAAY,MAAM;AACpD,SAAA,cAA6B,QAAQ,eAAe,SAAS;AAC7D,SAAA,WAA0B,QAAQ,YAAY,MAAM;;;;;ACzC/C,MAAC;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAI;"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/js-yaml/index.js b/sdks/nodejs/node_modules/js-yaml/index.js deleted file mode 100644 index 0b66b8f..0000000 --- a/sdks/nodejs/node_modules/js-yaml/index.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict' - -const loader = require('./lib/loader') -const dumper = require('./lib/dumper') - -function renamed (from, to) { - return function () { - throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' + - 'Use yaml.' + to + ' instead, which is now safe by default.') - } -} - -module.exports.Type = require('./lib/type') -module.exports.Schema = require('./lib/schema') -module.exports.FAILSAFE_SCHEMA = require('./lib/schema/failsafe') -module.exports.JSON_SCHEMA = require('./lib/schema/json') -module.exports.CORE_SCHEMA = require('./lib/schema/core') -module.exports.DEFAULT_SCHEMA = require('./lib/schema/default') -module.exports.load = loader.load -module.exports.loadAll = loader.loadAll -module.exports.dump = dumper.dump -module.exports.YAMLException = require('./lib/exception') - -// Re-export all types in case user wants to create custom schema -module.exports.types = { - binary: require('./lib/type/binary'), - float: require('./lib/type/float'), - map: require('./lib/type/map'), - null: require('./lib/type/null'), - pairs: require('./lib/type/pairs'), - set: require('./lib/type/set'), - timestamp: require('./lib/type/timestamp'), - bool: require('./lib/type/bool'), - int: require('./lib/type/int'), - merge: require('./lib/type/merge'), - omap: require('./lib/type/omap'), - seq: require('./lib/type/seq'), - str: require('./lib/type/str') -} - -// Removed functions from JS-YAML 3.0.x -module.exports.safeLoad = renamed('safeLoad', 'load') -module.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll') -module.exports.safeDump = renamed('safeDump', 'dump') diff --git a/sdks/nodejs/node_modules/js-yaml/lib/common.js b/sdks/nodejs/node_modules/js-yaml/lib/common.js deleted file mode 100644 index d1fd4dc..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/common.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict' - -function isNothing (subject) { - return (typeof subject === 'undefined') || (subject === null) -} - -function isObject (subject) { - return (typeof subject === 'object') && (subject !== null) -} - -function toArray (sequence) { - if (Array.isArray(sequence)) return sequence - else if (isNothing(sequence)) return [] - - return [sequence] -} - -function extend (target, source) { - if (source) { - const sourceKeys = Object.keys(source) - - for (let index = 0, length = sourceKeys.length; index < length; index += 1) { - const key = sourceKeys[index] - target[key] = source[key] - } - } - - return target -} - -function repeat (string, count) { - let result = '' - - for (let cycle = 0; cycle < count; cycle += 1) { - result += string - } - - return result -} - -function isNegativeZero (number) { - return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number) -} - -module.exports.isNothing = isNothing -module.exports.isObject = isObject -module.exports.toArray = toArray -module.exports.repeat = repeat -module.exports.isNegativeZero = isNegativeZero -module.exports.extend = extend diff --git a/sdks/nodejs/node_modules/js-yaml/lib/dumper.js b/sdks/nodejs/node_modules/js-yaml/lib/dumper.js deleted file mode 100644 index a5b6acd..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/dumper.js +++ /dev/null @@ -1,937 +0,0 @@ -'use strict' - -const common = require('./common') -const YAMLException = require('./exception') -const DEFAULT_SCHEMA = require('./schema/default') - -const _toString = Object.prototype.toString -const _hasOwnProperty = Object.prototype.hasOwnProperty - -const CHAR_BOM = 0xFEFF -const CHAR_TAB = 0x09 /* Tab */ -const CHAR_LINE_FEED = 0x0A /* LF */ -const CHAR_CARRIAGE_RETURN = 0x0D /* CR */ -const CHAR_SPACE = 0x20 /* Space */ -const CHAR_EXCLAMATION = 0x21 /* ! */ -const CHAR_DOUBLE_QUOTE = 0x22 /* " */ -const CHAR_SHARP = 0x23 /* # */ -const CHAR_PERCENT = 0x25 /* % */ -const CHAR_AMPERSAND = 0x26 /* & */ -const CHAR_SINGLE_QUOTE = 0x27 /* ' */ -const CHAR_ASTERISK = 0x2A /* * */ -const CHAR_COMMA = 0x2C /* , */ -const CHAR_MINUS = 0x2D /* - */ -const CHAR_COLON = 0x3A /* : */ -const CHAR_EQUALS = 0x3D /* = */ -const CHAR_GREATER_THAN = 0x3E /* > */ -const CHAR_QUESTION = 0x3F /* ? */ -const CHAR_COMMERCIAL_AT = 0x40 /* @ */ -const CHAR_LEFT_SQUARE_BRACKET = 0x5B /* [ */ -const CHAR_RIGHT_SQUARE_BRACKET = 0x5D /* ] */ -const CHAR_GRAVE_ACCENT = 0x60 /* ` */ -const CHAR_LEFT_CURLY_BRACKET = 0x7B /* { */ -const CHAR_VERTICAL_LINE = 0x7C /* | */ -const CHAR_RIGHT_CURLY_BRACKET = 0x7D /* } */ - -const ESCAPE_SEQUENCES = {} - -ESCAPE_SEQUENCES[0x00] = '\\0' -ESCAPE_SEQUENCES[0x07] = '\\a' -ESCAPE_SEQUENCES[0x08] = '\\b' -ESCAPE_SEQUENCES[0x09] = '\\t' -ESCAPE_SEQUENCES[0x0A] = '\\n' -ESCAPE_SEQUENCES[0x0B] = '\\v' -ESCAPE_SEQUENCES[0x0C] = '\\f' -ESCAPE_SEQUENCES[0x0D] = '\\r' -ESCAPE_SEQUENCES[0x1B] = '\\e' -ESCAPE_SEQUENCES[0x22] = '\\"' -ESCAPE_SEQUENCES[0x5C] = '\\\\' -ESCAPE_SEQUENCES[0x85] = '\\N' -ESCAPE_SEQUENCES[0xA0] = '\\_' -ESCAPE_SEQUENCES[0x2028] = '\\L' -ESCAPE_SEQUENCES[0x2029] = '\\P' - -const DEPRECATED_BOOLEANS_SYNTAX = [ - 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', - 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' -] - -const DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/ - -function compileStyleMap (schema, map) { - if (map === null) return {} - - const result = {} - const keys = Object.keys(map) - - for (let index = 0, length = keys.length; index < length; index += 1) { - let tag = keys[index] - let style = String(map[tag]) - - if (tag.slice(0, 2) === '!!') { - tag = 'tag:yaml.org,2002:' + tag.slice(2) - } - const type = schema.compiledTypeMap['fallback'][tag] - - if (type && _hasOwnProperty.call(type.styleAliases, style)) { - style = type.styleAliases[style] - } - - result[tag] = style - } - - return result -} - -function encodeHex (character) { - let handle - let length - - const string = character.toString(16).toUpperCase() - - if (character <= 0xFF) { - handle = 'x' - length = 2 - } else if (character <= 0xFFFF) { - handle = 'u' - length = 4 - } else if (character <= 0xFFFFFFFF) { - handle = 'U' - length = 8 - } else { - throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF') - } - - return '\\' + handle + common.repeat('0', length - string.length) + string -} - -const QUOTING_TYPE_SINGLE = 1 -const QUOTING_TYPE_DOUBLE = 2 - -function State (options) { - this.schema = options['schema'] || DEFAULT_SCHEMA - this.indent = Math.max(1, (options['indent'] || 2)) - this.noArrayIndent = options['noArrayIndent'] || false - this.skipInvalid = options['skipInvalid'] || false - this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']) - this.styleMap = compileStyleMap(this.schema, options['styles'] || null) - this.sortKeys = options['sortKeys'] || false - this.lineWidth = options['lineWidth'] || 80 - this.noRefs = options['noRefs'] || false - this.noCompatMode = options['noCompatMode'] || false - this.condenseFlow = options['condenseFlow'] || false - this.quotingType = options['quotingType'] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE - this.forceQuotes = options['forceQuotes'] || false - this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null - - this.implicitTypes = this.schema.compiledImplicit - this.explicitTypes = this.schema.compiledExplicit - - this.tag = null - this.result = '' - - this.duplicates = [] - this.usedDuplicates = null -} - -// Indents every line in a string. Empty lines (\n only) are not indented. -function indentString (string, spaces) { - const ind = common.repeat(' ', spaces) - let position = 0 - let result = '' - const length = string.length - - while (position < length) { - let line - const next = string.indexOf('\n', position) - if (next === -1) { - line = string.slice(position) - position = length - } else { - line = string.slice(position, next + 1) - position = next + 1 - } - - if (line.length && line !== '\n') result += ind - - result += line - } - - return result -} - -function generateNextLine (state, level) { - return '\n' + common.repeat(' ', state.indent * level) -} - -function testImplicitResolving (state, str) { - for (let index = 0, length = state.implicitTypes.length; index < length; index += 1) { - const type = state.implicitTypes[index] - - if (type.resolve(str)) { - return true - } - } - - return false -} - -// [33] s-white ::= s-space | s-tab -function isWhitespace (c) { - return c === CHAR_SPACE || c === CHAR_TAB -} - -// Returns true if the character can be printed without escaping. -// From YAML 1.2: "any allowed characters known to be non-printable -// should also be escaped. [However,] This isn’t mandatory" -// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. -function isPrintable (c) { - return (c >= 0x00020 && c <= 0x00007E) || - ((c >= 0x000A1 && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) || - ((c >= 0x0E000 && c <= 0x00FFFD) && c !== CHAR_BOM) || - (c >= 0x10000 && c <= 0x10FFFF) -} - -// [34] ns-char ::= nb-char - s-white -// [27] nb-char ::= c-printable - b-char - c-byte-order-mark -// [26] b-char ::= b-line-feed | b-carriage-return -// Including s-white (for some reason, examples doesn't match specs in this aspect) -// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark -function isNsCharOrWhitespace (c) { - return isPrintable(c) && - c !== CHAR_BOM && - // - b-char - c !== CHAR_CARRIAGE_RETURN && - c !== CHAR_LINE_FEED -} - -// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out -// c = flow-in ⇒ ns-plain-safe-in -// c = block-key ⇒ ns-plain-safe-out -// c = flow-key ⇒ ns-plain-safe-in -// [128] ns-plain-safe-out ::= ns-char -// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator -// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” ) -// | ( /* An ns-char preceding */ “#” ) -// | ( “:” /* Followed by an ns-plain-safe(c) */ ) -function isPlainSafe (c, prev, inblock) { - const cIsNsCharOrWhitespace = isNsCharOrWhitespace(c) - const cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c) - return ( - ( - // ns-plain-safe - inblock // c = flow-in - ? cIsNsCharOrWhitespace - : cIsNsCharOrWhitespace && - // - c-flow-indicator - c !== CHAR_COMMA && - c !== CHAR_LEFT_SQUARE_BRACKET && - c !== CHAR_RIGHT_SQUARE_BRACKET && - c !== CHAR_LEFT_CURLY_BRACKET && - c !== CHAR_RIGHT_CURLY_BRACKET - ) && - // ns-plain-char - c !== CHAR_SHARP && // false on '#' - !(prev === CHAR_COLON && !cIsNsChar) - ) || // false on ': ' - (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) || // change to true on '[^ ]#' - (prev === CHAR_COLON && cIsNsChar) // change to true on ':[^ ]' -} - -// Simplified test for values allowed as the first character in plain style. -function isPlainSafeFirst (c) { - // Uses a subset of ns-char - c-indicator - // where ns-char = nb-char - s-white. - // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part - return isPrintable(c) && - c !== CHAR_BOM && - !isWhitespace(c) && // - s-white - // - (c-indicator ::= - // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” - c !== CHAR_MINUS && - c !== CHAR_QUESTION && - c !== CHAR_COLON && - c !== CHAR_COMMA && - c !== CHAR_LEFT_SQUARE_BRACKET && - c !== CHAR_RIGHT_SQUARE_BRACKET && - c !== CHAR_LEFT_CURLY_BRACKET && - c !== CHAR_RIGHT_CURLY_BRACKET && - // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” - c !== CHAR_SHARP && - c !== CHAR_AMPERSAND && - c !== CHAR_ASTERISK && - c !== CHAR_EXCLAMATION && - c !== CHAR_VERTICAL_LINE && - c !== CHAR_EQUALS && - c !== CHAR_GREATER_THAN && - c !== CHAR_SINGLE_QUOTE && - c !== CHAR_DOUBLE_QUOTE && - // | “%” | “@” | “`”) - c !== CHAR_PERCENT && - c !== CHAR_COMMERCIAL_AT && - c !== CHAR_GRAVE_ACCENT -} - -// Simplified test for values allowed as the last character in plain style. -function isPlainSafeLast (c) { - // just not whitespace or colon, it will be checked to be plain character later - return !isWhitespace(c) && c !== CHAR_COLON -} - -// Same as 'string'.codePointAt(pos), but works in older browsers. -function codePointAt (string, pos) { - const first = string.charCodeAt(pos) - let second - - if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) { - second = string.charCodeAt(pos + 1) - if (second >= 0xDC00 && second <= 0xDFFF) { - // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000 - } - } - return first -} - -// Determines whether block indentation indicator is required. -function needIndentIndicator (string) { - const leadingSpaceRe = /^\n* / - return leadingSpaceRe.test(string) -} - -const STYLE_PLAIN = 1 -const STYLE_SINGLE = 2 -const STYLE_LITERAL = 3 -const STYLE_FOLDED = 4 -const STYLE_DOUBLE = 5 - -// Determines which scalar styles are possible and returns the preferred style. -// lineWidth = -1 => no limit. -// Pre-conditions: str.length > 0. -// Post-conditions: -// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. -// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). -// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). -function chooseScalarStyle (string, singleLineOnly, indentPerLevel, lineWidth, - testAmbiguousType, quotingType, forceQuotes, inblock) { - let i - let char = 0 - let prevChar = null - let hasLineBreak = false - let hasFoldableLine = false // only checked if shouldTrackWidth - const shouldTrackWidth = lineWidth !== -1 - let previousLineBreak = -1 // count the first line correctly - let plain = isPlainSafeFirst(codePointAt(string, 0)) && - isPlainSafeLast(codePointAt(string, string.length - 1)) - - if (singleLineOnly || forceQuotes) { - // Case: no block styles. - // Check for disallowed characters to rule out plain and single. - for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { - char = codePointAt(string, i) - if (!isPrintable(char)) { - return STYLE_DOUBLE - } - plain = plain && isPlainSafe(char, prevChar, inblock) - prevChar = char - } - } else { - // Case: block styles permitted. - for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { - char = codePointAt(string, i) - if (char === CHAR_LINE_FEED) { - hasLineBreak = true - // Check if any line can be folded. - if (shouldTrackWidth) { - hasFoldableLine = hasFoldableLine || - // Foldable line = too long, and not more-indented. - (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' ') - previousLineBreak = i - } - } else if (!isPrintable(char)) { - return STYLE_DOUBLE - } - plain = plain && isPlainSafe(char, prevChar, inblock) - prevChar = char - } - // in case the end is missing a \n - hasFoldableLine = hasFoldableLine || (shouldTrackWidth && - (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' ')) - } - // Although every style can represent \n without escaping, prefer block styles - // for multiline, since they're more readable and they don't add empty lines. - // Also prefer folding a super-long line. - if (!hasLineBreak && !hasFoldableLine) { - // Strings interpretable as another type have to be quoted; - // e.g. the string 'true' vs. the boolean true. - if (plain && !forceQuotes && !testAmbiguousType(string)) { - return STYLE_PLAIN - } - return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE - } - // Edge case: block indentation indicator can only have one digit. - if (indentPerLevel > 9 && needIndentIndicator(string)) { - return STYLE_DOUBLE - } - // At this point we know block styles are valid. - // Prefer literal style unless we want to fold. - if (!forceQuotes) { - return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL - } - return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE -} - -// Note: line breaking/folding is implemented for only the folded style. -// NB. We drop the last trailing newline (if any) of a returned block scalar -// since the dumper adds its own newline. This always works: -// • No ending newline => unaffected; already using strip "-" chomping. -// • Ending newline => removed then restored. -// Importantly, this keeps the "+" chomp indicator from gaining an extra line. -function writeScalar (state, string, level, iskey, inblock) { - state.dump = (function () { - if (string.length === 0) { - return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''" - } - if (!state.noCompatMode) { - if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) { - return state.quotingType === QUOTING_TYPE_DOUBLE ? ('"' + string + '"') : ("'" + string + "'") - } - } - - const indent = state.indent * Math.max(1, level) // no 0-indent scalars - // As indentation gets deeper, let the width decrease monotonically - // to the lower bound min(state.lineWidth, 40). - // Note that this implies - // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. - // state.lineWidth > 40 + state.indent: width decreases until the lower bound. - // This behaves better than a constant minimum width which disallows narrower options, - // or an indent threshold which causes the width to suddenly increase. - const lineWidth = (state.lineWidth === -1) - ? -1 - : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent) - - // Without knowing if keys are implicit/explicit, assume implicit for safety. - const singleLineOnly = iskey || - // No block styles in flow mode. - (state.flowLevel > -1 && level >= state.flowLevel) - function testAmbiguity (string) { - return testImplicitResolving(state, string) - } - - switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, - testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) { - case STYLE_PLAIN: - return string - case STYLE_SINGLE: - return "'" + string.replace(/'/g, "''") + "'" - case STYLE_LITERAL: - return '|' + blockHeader(string, state.indent) + - dropEndingNewline(indentString(string, indent)) - case STYLE_FOLDED: - return '>' + blockHeader(string, state.indent) + - dropEndingNewline(indentString(foldString(string, lineWidth), indent)) - case STYLE_DOUBLE: - return '"' + escapeString(string, lineWidth) + '"' - default: - throw new YAMLException('impossible error: invalid scalar style') - } - }()) -} - -// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. -function blockHeader (string, indentPerLevel) { - const indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '' - - // note the special case: the string '\n' counts as a "trailing" empty line. - const clip = string[string.length - 1] === '\n' - const keep = clip && (string[string.length - 2] === '\n' || string === '\n') - const chomp = keep ? '+' : (clip ? '' : '-') - - return indentIndicator + chomp + '\n' -} - -// (See the note for writeScalar.) -function dropEndingNewline (string) { - return string[string.length - 1] === '\n' ? string.slice(0, -1) : string -} - -// Note: a long line without a suitable break point will exceed the width limit. -// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. -function foldString (string, width) { - // In folded style, $k$ consecutive newlines output as $k+1$ newlines— - // unless they're before or after a more-indented line, or at the very - // beginning or end, in which case $k$ maps to $k$. - // Therefore, parse each chunk as newline(s) followed by a content line. - const lineRe = /(\n+)([^\n]*)/g - - // first line (possibly an empty line) - let result = (function () { - let nextLF = string.indexOf('\n') - nextLF = nextLF !== -1 ? nextLF : string.length - lineRe.lastIndex = nextLF - return foldLine(string.slice(0, nextLF), width) - }()) - // If we haven't reached the first content line yet, don't add an extra \n. - let prevMoreIndented = string[0] === '\n' || string[0] === ' ' - let moreIndented - - // rest of the lines - let match - while ((match = lineRe.exec(string))) { - const prefix = match[1] - const line = match[2] - - moreIndented = (line[0] === ' ') - result += prefix + - ((!prevMoreIndented && !moreIndented && line !== '') ? '\n' : '') + - foldLine(line, width) - prevMoreIndented = moreIndented - } - - return result -} - -// Greedy line breaking. -// Picks the longest line under the limit each time, -// otherwise settles for the shortest line over the limit. -// NB. More-indented lines *cannot* be folded, as that would add an extra \n. -function foldLine (line, width) { - if (line === '' || line[0] === ' ') return line - - // Since a more-indented line adds a \n, breaks can't be followed by a space. - const breakRe = / [^ ]/g // note: the match index will always be <= length-2. - let match - // start is an inclusive index. end, curr, and next are exclusive. - let start = 0 - let end - let curr = 0 - let next = 0 - let result = '' - - // Invariants: 0 <= start <= length-1. - // 0 <= curr <= next <= max(0, length-2). curr - start <= width. - // Inside the loop: - // A match implies length >= 2, so curr and next are <= length-2. - while ((match = breakRe.exec(line))) { - next = match.index - // maintain invariant: curr - start <= width - if (next - start > width) { - end = (curr > start) ? curr : next // derive end <= length-2 - result += '\n' + line.slice(start, end) - // skip the space that was output as \n - start = end + 1 // derive start <= length-1 - } - curr = next - } - - // By the invariants, start <= length-1, so there is something left over. - // It is either the whole string or a part starting from non-whitespace. - result += '\n' - // Insert a break if the remainder is too long and there is a break available. - if (line.length - start > width && curr > start) { - result += line.slice(start, curr) + '\n' + line.slice(curr + 1) - } else { - result += line.slice(start) - } - - return result.slice(1) // drop extra \n joiner -} - -// Escapes a double-quoted string. -function escapeString (string) { - let result = '' - let char = 0 - - for (let i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { - char = codePointAt(string, i) - const escapeSeq = ESCAPE_SEQUENCES[char] - - if (!escapeSeq && isPrintable(char)) { - result += string[i] - if (char >= 0x10000) result += string[i + 1] - } else { - result += escapeSeq || encodeHex(char) - } - } - - return result -} - -function writeFlowSequence (state, level, object) { - let _result = '' - const _tag = state.tag - - for (let index = 0, length = object.length; index < length; index += 1) { - let value = object[index] - - if (state.replacer) { - value = state.replacer.call(object, String(index), value) - } - - // Write only valid elements, put null instead of invalid elements. - if (writeNode(state, level, value, false, false) || - (typeof value === 'undefined' && - writeNode(state, level, null, false, false))) { - if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '') - _result += state.dump - } - } - - state.tag = _tag - state.dump = '[' + _result + ']' -} - -function writeBlockSequence (state, level, object, compact) { - let _result = '' - const _tag = state.tag - - for (let index = 0, length = object.length; index < length; index += 1) { - let value = object[index] - - if (state.replacer) { - value = state.replacer.call(object, String(index), value) - } - - // Write only valid elements, put null instead of invalid elements. - if (writeNode(state, level + 1, value, true, true, false, true) || - (typeof value === 'undefined' && - writeNode(state, level + 1, null, true, true, false, true))) { - if (!compact || _result !== '') { - _result += generateNextLine(state, level) - } - - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - _result += '-' - } else { - _result += '- ' - } - - _result += state.dump - } - } - - state.tag = _tag - state.dump = _result || '[]' // Empty sequence if no valid values. -} - -function writeFlowMapping (state, level, object) { - let _result = '' - const _tag = state.tag - const objectKeyList = Object.keys(object) - - for (let index = 0, length = objectKeyList.length; index < length; index += 1) { - let pairBuffer = '' - if (_result !== '') pairBuffer += ', ' - - if (state.condenseFlow) pairBuffer += '"' - - const objectKey = objectKeyList[index] - let objectValue = object[objectKey] - - if (state.replacer) { - objectValue = state.replacer.call(object, objectKey, objectValue) - } - - if (!writeNode(state, level, objectKey, false, false)) { - continue // Skip this pair because of invalid key; - } - - if (state.dump.length > 1024) pairBuffer += '? ' - - pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' ') - - if (!writeNode(state, level, objectValue, false, false)) { - continue // Skip this pair because of invalid value. - } - - pairBuffer += state.dump - - // Both key and value are valid. - _result += pairBuffer - } - - state.tag = _tag - state.dump = '{' + _result + '}' -} - -function writeBlockMapping (state, level, object, compact) { - let _result = '' - const _tag = state.tag - const objectKeyList = Object.keys(object) - - // Allow sorting keys so that the output file is deterministic - if (state.sortKeys === true) { - // Default sorting - objectKeyList.sort() - } else if (typeof state.sortKeys === 'function') { - // Custom sort function - objectKeyList.sort(state.sortKeys) - } else if (state.sortKeys) { - // Something is wrong - throw new YAMLException('sortKeys must be a boolean or a function') - } - - for (let index = 0, length = objectKeyList.length; index < length; index += 1) { - let pairBuffer = '' - - if (!compact || _result !== '') { - pairBuffer += generateNextLine(state, level) - } - - const objectKey = objectKeyList[index] - let objectValue = object[objectKey] - - if (state.replacer) { - objectValue = state.replacer.call(object, objectKey, objectValue) - } - - if (!writeNode(state, level + 1, objectKey, true, true, true)) { - continue // Skip this pair because of invalid key. - } - - const explicitPair = (state.tag !== null && state.tag !== '?') || - (state.dump && state.dump.length > 1024) - - if (explicitPair) { - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += '?' - } else { - pairBuffer += '? ' - } - } - - pairBuffer += state.dump - - if (explicitPair) { - pairBuffer += generateNextLine(state, level) - } - - if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { - continue // Skip this pair because of invalid value. - } - - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += ':' - } else { - pairBuffer += ': ' - } - - pairBuffer += state.dump - - // Both key and value are valid. - _result += pairBuffer - } - - state.tag = _tag - state.dump = _result || '{}' // Empty mapping if no valid pairs. -} - -function detectType (state, object, explicit) { - const typeList = explicit ? state.explicitTypes : state.implicitTypes - - for (let index = 0, length = typeList.length; index < length; index += 1) { - const type = typeList[index] - - if ((type.instanceOf || type.predicate) && - (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && - (!type.predicate || type.predicate(object))) { - if (explicit) { - if (type.multi && type.representName) { - state.tag = type.representName(object) - } else { - state.tag = type.tag - } - } else { - state.tag = '?' - } - - if (type.represent) { - const style = state.styleMap[type.tag] || type.defaultStyle - - let _result - if (_toString.call(type.represent) === '[object Function]') { - _result = type.represent(object, style) - } else if (_hasOwnProperty.call(type.represent, style)) { - _result = type.represent[style](object, style) - } else { - throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style') - } - - state.dump = _result - } - - return true - } - } - - return false -} - -// Serializes `object` and writes it to global `result`. -// Returns true on success, or false on invalid object. -// -function writeNode (state, level, object, block, compact, iskey, isblockseq) { - state.tag = null - state.dump = object - - if (!detectType(state, object, false)) { - detectType(state, object, true) - } - - const type = _toString.call(state.dump) - const inblock = block - - if (block) { - block = (state.flowLevel < 0 || state.flowLevel > level) - } - - const objectOrArray = type === '[object Object]' || type === '[object Array]' - let duplicateIndex - let duplicate - - if (objectOrArray) { - duplicateIndex = state.duplicates.indexOf(object) - duplicate = duplicateIndex !== -1 - } - - if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { - compact = false - } - - if (duplicate && state.usedDuplicates[duplicateIndex]) { - state.dump = '*ref_' + duplicateIndex - } else { - if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { - state.usedDuplicates[duplicateIndex] = true - } - if (type === '[object Object]') { - if (block && (Object.keys(state.dump).length !== 0)) { - writeBlockMapping(state, level, state.dump, compact) - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + state.dump - } - } else { - writeFlowMapping(state, level, state.dump) - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + ' ' + state.dump - } - } - } else if (type === '[object Array]') { - if (block && (state.dump.length !== 0)) { - if (state.noArrayIndent && !isblockseq && level > 0) { - writeBlockSequence(state, level - 1, state.dump, compact) - } else { - writeBlockSequence(state, level, state.dump, compact) - } - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + state.dump - } - } else { - writeFlowSequence(state, level, state.dump) - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + ' ' + state.dump - } - } - } else if (type === '[object String]') { - if (state.tag !== '?') { - writeScalar(state, state.dump, level, iskey, inblock) - } - } else if (type === '[object Undefined]') { - return false - } else { - if (state.skipInvalid) return false - throw new YAMLException('unacceptable kind of an object to dump ' + type) - } - - if (state.tag !== null && state.tag !== '?') { - // Need to encode all characters except those allowed by the spec: - // - // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */ - // [36] ns-hex-digit ::= ns-dec-digit - // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */ - // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */ - // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-” - // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#” - // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,” - // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]” - // - // Also need to encode '!' because it has special meaning (end of tag prefix). - // - let tagStr = encodeURI( - state.tag[0] === '!' ? state.tag.slice(1) : state.tag - ).replace(/!/g, '%21') - - if (state.tag[0] === '!') { - tagStr = '!' + tagStr - } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') { - tagStr = '!!' + tagStr.slice(18) - } else { - tagStr = '!<' + tagStr + '>' - } - - state.dump = tagStr + ' ' + state.dump - } - } - - return true -} - -function getDuplicateReferences (object, state) { - const objects = [] - const duplicatesIndexes = [] - - inspectNode(object, objects, duplicatesIndexes) - - const length = duplicatesIndexes.length - for (let index = 0; index < length; index += 1) { - state.duplicates.push(objects[duplicatesIndexes[index]]) - } - state.usedDuplicates = new Array(length) -} - -function inspectNode (object, objects, duplicatesIndexes) { - if (object !== null && typeof object === 'object') { - const index = objects.indexOf(object) - if (index !== -1) { - if (duplicatesIndexes.indexOf(index) === -1) { - duplicatesIndexes.push(index) - } - } else { - objects.push(object) - - if (Array.isArray(object)) { - for (let i = 0, length = object.length; i < length; i += 1) { - inspectNode(object[i], objects, duplicatesIndexes) - } - } else { - const objectKeyList = Object.keys(object) - - for (let i = 0, length = objectKeyList.length; i < length; i += 1) { - inspectNode(object[objectKeyList[i]], objects, duplicatesIndexes) - } - } - } - } -} - -function dump (input, options) { - options = options || {} - - const state = new State(options) - - if (!state.noRefs) getDuplicateReferences(input, state) - - let value = input - - if (state.replacer) { - value = state.replacer.call({ '': value }, '', value) - } - - if (writeNode(state, 0, value, true, true)) return state.dump + '\n' - - return '' -} - -module.exports.dump = dump diff --git a/sdks/nodejs/node_modules/js-yaml/lib/exception.js b/sdks/nodejs/node_modules/js-yaml/lib/exception.js deleted file mode 100644 index 8571562..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/exception.js +++ /dev/null @@ -1,51 +0,0 @@ -// YAML error class. http://stackoverflow.com/questions/8458984 -// -'use strict' - -function formatError (exception, compact) { - let where = '' - const message = exception.reason || '(unknown reason)' - - if (!exception.mark) return message - - if (exception.mark.name) { - where += 'in "' + exception.mark.name + '" ' - } - - where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')' - - if (!compact && exception.mark.snippet) { - where += '\n\n' + exception.mark.snippet - } - - return message + ' ' + where -} - -function YAMLException (reason, mark) { - // Super constructor - Error.call(this) - - this.name = 'YAMLException' - this.reason = reason - this.mark = mark - this.message = formatError(this, false) - - // Include stack trace in error object - if (Error.captureStackTrace) { - // Chrome and NodeJS - Error.captureStackTrace(this, this.constructor) - } else { - // FF, IE 10+ and Safari 6+. Fallback for others - this.stack = (new Error()).stack || '' - } -} - -// Inherit from Error -YAMLException.prototype = Object.create(Error.prototype) -YAMLException.prototype.constructor = YAMLException - -YAMLException.prototype.toString = function toString (compact) { - return this.name + ': ' + formatError(this, compact) -} - -module.exports = YAMLException diff --git a/sdks/nodejs/node_modules/js-yaml/lib/index_vite_proxy.tmp.mjs b/sdks/nodejs/node_modules/js-yaml/lib/index_vite_proxy.tmp.mjs deleted file mode 100644 index 303f231..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/index_vite_proxy.tmp.mjs +++ /dev/null @@ -1,37 +0,0 @@ -import yaml from '../index.js' - -const { - Type, - Schema, - FAILSAFE_SCHEMA, - JSON_SCHEMA, - CORE_SCHEMA, - DEFAULT_SCHEMA, - load, - loadAll, - dump, - YAMLException, - types, - safeLoad, - safeLoadAll, - safeDump -} = yaml - -export { - Type, - Schema, - FAILSAFE_SCHEMA, - JSON_SCHEMA, - CORE_SCHEMA, - DEFAULT_SCHEMA, - load, - loadAll, - dump, - YAMLException, - types, - safeLoad, - safeLoadAll, - safeDump -} - -export default yaml diff --git a/sdks/nodejs/node_modules/js-yaml/lib/loader.js b/sdks/nodejs/node_modules/js-yaml/lib/loader.js deleted file mode 100644 index 62cee3c..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/loader.js +++ /dev/null @@ -1,1803 +0,0 @@ -'use strict' - -const common = require('./common') -const YAMLException = require('./exception') -const makeSnippet = require('./snippet') -const DEFAULT_SCHEMA = require('./schema/default') - -const _hasOwnProperty = Object.prototype.hasOwnProperty - -const CONTEXT_FLOW_IN = 1 -const CONTEXT_FLOW_OUT = 2 -const CONTEXT_BLOCK_IN = 3 -const CONTEXT_BLOCK_OUT = 4 - -const CHOMPING_CLIP = 1 -const CHOMPING_STRIP = 2 -const CHOMPING_KEEP = 3 - -// eslint-disable-next-line no-control-regex -const PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/ -const PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/ -// eslint-disable-next-line no-useless-escape -const PATTERN_FLOW_INDICATORS = /[,\[\]{}]/ -// eslint-disable-next-line no-useless-escape -const PATTERN_TAG_HANDLE = /^(?:!|!!|![0-9A-Za-z-]+!)$/ -// eslint-disable-next-line no-useless-escape -const PATTERN_TAG_URI = /^(?:!|[^,\[\]{}])(?:%[0-9a-f]{2}|[0-9a-z\-#;/?:@&=+$,_.!~*'()\[\]])*$/i - -function _class (obj) { return Object.prototype.toString.call(obj) } - -function isEol (c) { - return (c === 0x0A/* LF */) || (c === 0x0D/* CR */) -} - -function isWhiteSpace (c) { - return (c === 0x09/* Tab */) || (c === 0x20/* Space */) -} - -function isWsOrEol (c) { - return (c === 0x09/* Tab */) || - (c === 0x20/* Space */) || - (c === 0x0A/* LF */) || - (c === 0x0D/* CR */) -} - -function isFlowIndicator (c) { - return c === 0x2C/* , */ || - c === 0x5B/* [ */ || - c === 0x5D/* ] */ || - c === 0x7B/* { */ || - c === 0x7D/* } */ -} - -function fromHexCode (c) { - if ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) { - return c - 0x30 - } - - const lc = c | 0x20 - - if ((lc >= 0x61/* a */) && (lc <= 0x66/* f */)) { - return lc - 0x61 + 10 - } - - return -1 -} - -function escapedHexLen (c) { - if (c === 0x78/* x */) { return 2 } - if (c === 0x75/* u */) { return 4 } - if (c === 0x55/* U */) { return 8 } - return 0 -} - -function fromDecimalCode (c) { - if ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) { - return c - 0x30 - } - - return -1 -} - -function simpleEscapeSequence (c) { - switch (c) { - case 0x30/* 0 */: return '\x00' - case 0x61/* a */: return '\x07' - case 0x62/* b */: return '\x08' - case 0x74/* t */: return '\x09' - case 0x09/* Tab */: return '\x09' - case 0x6E/* n */: return '\x0A' - case 0x76/* v */: return '\x0B' - case 0x66/* f */: return '\x0C' - case 0x72/* r */: return '\x0D' - case 0x65/* e */: return '\x1B' - case 0x20/* Space */: return ' ' - case 0x22/* " */: return '\x22' - case 0x2F/* / */: return '/' - case 0x5C/* \ */: return '\x5C' - case 0x4E/* N */: return '\x85' - case 0x5F/* _ */: return '\xA0' - case 0x4C/* L */: return '\u2028' - case 0x50/* P */: return '\u2029' - default: return '' - } -} - -function charFromCodepoint (c) { - if (c <= 0xFFFF) { - return String.fromCharCode(c) - } - // Encode UTF-16 surrogate pair - // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF - return String.fromCharCode( - ((c - 0x010000) >> 10) + 0xD800, - ((c - 0x010000) & 0x03FF) + 0xDC00 - ) -} - -// set a property of a literal object, while protecting against prototype pollution, -// see https://github.com/nodeca/js-yaml/issues/164 for more details -function setProperty (object, key, value) { - // used for this specific key only because Object.defineProperty is slow - if (key === '__proto__') { - Object.defineProperty(object, key, { - configurable: true, - enumerable: true, - writable: true, - value: value - }) - } else { - object[key] = value - } -} - -const simpleEscapeCheck = new Array(256) // integer, for fast access -const simpleEscapeMap = new Array(256) -for (let i = 0; i < 256; i++) { - simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0 - simpleEscapeMap[i] = simpleEscapeSequence(i) -} - -function State (input, options) { - this.input = input - - this.filename = options['filename'] || null - this.schema = options['schema'] || DEFAULT_SCHEMA - this.onWarning = options['onWarning'] || null - // (Hidden) Remove? makes the loader to expect YAML 1.1 documents - // if such documents have no explicit %YAML directive - this.legacy = options['legacy'] || false - - this.json = options['json'] || false - this.listener = options['listener'] || null - this.maxDepth = typeof options['maxDepth'] === 'number' ? options['maxDepth'] : 100 - this.maxTotalMergeKeys = typeof options['maxTotalMergeKeys'] === 'number' ? options['maxTotalMergeKeys'] : 10000 - - this.implicitTypes = this.schema.compiledImplicit - this.typeMap = this.schema.compiledTypeMap - - this.length = input.length - this.position = 0 - this.line = 0 - this.lineStart = 0 - this.lineIndent = 0 - this.depth = 0 - this.totalMergeKeys = 0 - - // position of first leading tab in the current line, - // used to make sure there are no tabs in the indentation - this.firstTabInLine = -1 - - this.documents = [] - this.anchorMapTransactions = [] - - /* - this.version; - this.checkLineBreaks; - this.tagMap; - this.anchorMap; - this.tag; - this.anchor; - this.kind; - this.result; */ -} - -function generateError (state, message) { - const mark = { - name: state.filename, - buffer: state.input.slice(0, -1), // omit trailing \0 - position: state.position, - line: state.line, - column: state.position - state.lineStart - } - - mark.snippet = makeSnippet(mark) - - return new YAMLException(message, mark) -} - -function throwError (state, message) { - throw generateError(state, message) -} - -function throwWarning (state, message) { - if (state.onWarning) { - state.onWarning.call(null, generateError(state, message)) - } -} - -function storeAnchor (state, name, value) { - const transactions = state.anchorMapTransactions - - if (transactions.length !== 0) { - const transaction = transactions[transactions.length - 1] - - if (!_hasOwnProperty.call(transaction, name)) { - transaction[name] = { - existed: _hasOwnProperty.call(state.anchorMap, name), - value: state.anchorMap[name] - } - } - } - - state.anchorMap[name] = value -} - -function beginAnchorTransaction (state) { - state.anchorMapTransactions.push(Object.create(null)) -} - -function commitAnchorTransaction (state) { - const transaction = state.anchorMapTransactions.pop() - const transactions = state.anchorMapTransactions - - if (transactions.length === 0) return - - const parent = transactions[transactions.length - 1] - const names = Object.keys(transaction) - - for (let index = 0, length = names.length; index < length; index += 1) { - const name = names[index] - - if (!_hasOwnProperty.call(parent, name)) { - parent[name] = transaction[name] - } - } -} - -function rollbackAnchorTransaction (state) { - const transaction = state.anchorMapTransactions.pop() - const names = Object.keys(transaction) - - for (let index = names.length - 1; index >= 0; index -= 1) { - const entry = transaction[names[index]] - - if (entry.existed) { - state.anchorMap[names[index]] = entry.value - } else { - delete state.anchorMap[names[index]] - } - } -} - -function snapshotState (state) { - return { - position: state.position, - line: state.line, - lineStart: state.lineStart, - lineIndent: state.lineIndent, - firstTabInLine: state.firstTabInLine, - tag: state.tag, - anchor: state.anchor, - kind: state.kind, - result: state.result - } -} - -function restoreState (state, snapshot) { - state.position = snapshot.position - state.line = snapshot.line - state.lineStart = snapshot.lineStart - state.lineIndent = snapshot.lineIndent - state.firstTabInLine = snapshot.firstTabInLine - state.tag = snapshot.tag - state.anchor = snapshot.anchor - state.kind = snapshot.kind - state.result = snapshot.result -} - -const directiveHandlers = { - - YAML: function handleYamlDirective (state, name, args) { - if (state.version !== null) { - throwError(state, 'duplication of %YAML directive') - } - - if (args.length !== 1) { - throwError(state, 'YAML directive accepts exactly one argument') - } - - const match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]) - - if (match === null) { - throwError(state, 'ill-formed argument of the YAML directive') - } - - const major = parseInt(match[1], 10) - const minor = parseInt(match[2], 10) - - if (major !== 1) { - throwError(state, 'unacceptable YAML version of the document') - } - - state.version = args[0] - state.checkLineBreaks = (minor < 2) - - if (minor !== 1 && minor !== 2) { - throwWarning(state, 'unsupported YAML version of the document') - } - }, - - TAG: function handleTagDirective (state, name, args) { - let prefix - - if (args.length !== 2) { - throwError(state, 'TAG directive accepts exactly two arguments') - } - - const handle = args[0] - prefix = args[1] - - if (!PATTERN_TAG_HANDLE.test(handle)) { - throwError(state, 'ill-formed tag handle (first argument) of the TAG directive') - } - - if (_hasOwnProperty.call(state.tagMap, handle)) { - throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle') - } - - if (!PATTERN_TAG_URI.test(prefix)) { - throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive') - } - - try { - prefix = decodeURIComponent(prefix) - } catch (err) { - throwError(state, 'tag prefix is malformed: ' + prefix) - } - - state.tagMap[handle] = prefix - } -} - -function captureSegment (state, start, end, checkJson) { - if (start < end) { - const _result = state.input.slice(start, end) - - if (checkJson) { - for (let _position = 0, _length = _result.length; _position < _length; _position += 1) { - const _character = _result.charCodeAt(_position) - if (!(_character === 0x09 || - (_character >= 0x20 && _character <= 0x10FFFF))) { - throwError(state, 'expected valid JSON character') - } - } - } else if (PATTERN_NON_PRINTABLE.test(_result)) { - throwError(state, 'the stream contains non-printable characters') - } - - state.result += _result - } -} - -function chargeMergeWork (state) { - state.totalMergeKeys++ - - if (state.maxTotalMergeKeys !== -1 && state.totalMergeKeys > state.maxTotalMergeKeys) { - throwError(state, 'merge keys exceeded maxTotalMergeKeys (' + state.maxTotalMergeKeys + ')') - } -} - -function mergeMappings (state, destination, source, overridableKeys) { - if (!common.isObject(source)) { - throwError(state, 'cannot merge mappings; the provided source object is unacceptable') - } - - // Count the source mapping itself to bound sequences of empty mappings. - chargeMergeWork(state) - - const sourceKeys = Object.keys(source) - - for (let index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { - const key = sourceKeys[index] - - chargeMergeWork(state) - - if (!_hasOwnProperty.call(destination, key)) { - setProperty(destination, key, source[key]) - overridableKeys[key] = true - } - } -} - -function storeMappingPair (state, _result, overridableKeys, keyTag, keyNode, valueNode, - startLine, startLineStart, startPos) { - // The output is a plain object here, so keys can only be strings. - // We need to convert keyNode to a string, but doing so can hang the process - // (deeply nested arrays that explode exponentially using aliases). - if (Array.isArray(keyNode)) { - keyNode = Array.prototype.slice.call(keyNode) - - for (let index = 0, quantity = keyNode.length; index < quantity; index += 1) { - if (Array.isArray(keyNode[index])) { - throwError(state, 'nested arrays are not supported inside keys') - } - - if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { - keyNode[index] = '[object Object]' - } - } - } - - // Avoid code execution in load() via toString property - // (still use its own toString for arrays, timestamps, - // and whatever user schema extensions happen to have @@toStringTag) - if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { - keyNode = '[object Object]' - } - - keyNode = String(keyNode) - - if (_result === null) { - _result = {} - } - - if (keyTag === 'tag:yaml.org,2002:merge') { - if (Array.isArray(valueNode)) { - if (valueNode.length > 100) { - throwError(state, 'abnormal merge sequence size') - } - - for (let index = 0, quantity = valueNode.length; index < quantity; index += 1) { - mergeMappings(state, _result, valueNode[index], overridableKeys) - } - } else { - mergeMappings(state, _result, valueNode, overridableKeys) - } - } else { - if (!state.json && - !_hasOwnProperty.call(overridableKeys, keyNode) && - _hasOwnProperty.call(_result, keyNode)) { - state.line = startLine || state.line - state.lineStart = startLineStart || state.lineStart - state.position = startPos || state.position - throwError(state, 'duplicated mapping key') - } - - setProperty(_result, keyNode, valueNode) - delete overridableKeys[keyNode] - } - - return _result -} - -function readLineBreak (state) { - const ch = state.input.charCodeAt(state.position) - - if (ch === 0x0A/* LF */) { - state.position++ - } else if (ch === 0x0D/* CR */) { - state.position++ - if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { - state.position++ - } - } else { - throwError(state, 'a line break is expected') - } - - state.line += 1 - state.lineStart = state.position - state.firstTabInLine = -1 -} - -function skipSeparationSpace (state, allowComments, checkIndent) { - let lineBreaks = 0 - let ch = state.input.charCodeAt(state.position) - - while (ch !== 0) { - while (isWhiteSpace(ch)) { - if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) { - state.firstTabInLine = state.position - } - ch = state.input.charCodeAt(++state.position) - } - - if (allowComments && ch === 0x23/* # */) { - do { - ch = state.input.charCodeAt(++state.position) - } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0) - } - - if (isEol(ch)) { - readLineBreak(state) - - ch = state.input.charCodeAt(state.position) - lineBreaks++ - state.lineIndent = 0 - - while (ch === 0x20/* Space */) { - state.lineIndent++ - ch = state.input.charCodeAt(++state.position) - } - } else { - break - } - } - - if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { - throwWarning(state, 'deficient indentation') - } - - return lineBreaks -} - -function testDocumentSeparator (state) { - let _position = state.position - let ch = state.input.charCodeAt(_position) - - // Condition state.position === state.lineStart is tested - // in parent on each call, for efficiency. No needs to test here again. - if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && - ch === state.input.charCodeAt(_position + 1) && - ch === state.input.charCodeAt(_position + 2)) { - _position += 3 - - ch = state.input.charCodeAt(_position) - - if (ch === 0 || isWsOrEol(ch)) { - return true - } - } - - return false -} - -function writeFoldedLines (state, count) { - if (count === 1) { - state.result += ' ' - } else if (count > 1) { - state.result += common.repeat('\n', count - 1) - } -} - -function readPlainScalar (state, nodeIndent, withinFlowCollection) { - let captureStart - let captureEnd - let hasPendingContent - let _line - let _lineStart - let _lineIndent - const _kind = state.kind - const _result = state.result - - let ch = state.input.charCodeAt(state.position) - - if (isWsOrEol(ch) || - isFlowIndicator(ch) || - ch === 0x23/* # */ || - ch === 0x26/* & */ || - ch === 0x2A/* * */ || - ch === 0x21/* ! */ || - ch === 0x7C/* | */ || - ch === 0x3E/* > */ || - ch === 0x27/* ' */ || - ch === 0x22/* " */ || - ch === 0x25/* % */ || - ch === 0x40/* @ */ || - ch === 0x60/* ` */) { - return false - } - - if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { - const following = state.input.charCodeAt(state.position + 1) - - if (isWsOrEol(following) || - (withinFlowCollection && isFlowIndicator(following))) { - return false - } - } - - state.kind = 'scalar' - state.result = '' - captureStart = captureEnd = state.position - hasPendingContent = false - - while (ch !== 0) { - if (ch === 0x3A/* : */) { - const following = state.input.charCodeAt(state.position + 1) - - if (isWsOrEol(following) || - (withinFlowCollection && isFlowIndicator(following))) { - break - } - } else if (ch === 0x23/* # */) { - const preceding = state.input.charCodeAt(state.position - 1) - - if (isWsOrEol(preceding)) { - break - } - } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || - (withinFlowCollection && isFlowIndicator(ch))) { - break - } else if (isEol(ch)) { - _line = state.line - _lineStart = state.lineStart - _lineIndent = state.lineIndent - skipSeparationSpace(state, false, -1) - - if (state.lineIndent >= nodeIndent) { - hasPendingContent = true - ch = state.input.charCodeAt(state.position) - continue - } else { - state.position = captureEnd - state.line = _line - state.lineStart = _lineStart - state.lineIndent = _lineIndent - break - } - } - - if (hasPendingContent) { - captureSegment(state, captureStart, captureEnd, false) - writeFoldedLines(state, state.line - _line) - captureStart = captureEnd = state.position - hasPendingContent = false - } - - if (!isWhiteSpace(ch)) { - captureEnd = state.position + 1 - } - - ch = state.input.charCodeAt(++state.position) - } - - captureSegment(state, captureStart, captureEnd, false) - - if (state.result) { - return true - } - - state.kind = _kind - state.result = _result - return false -} - -function readSingleQuotedScalar (state, nodeIndent) { - let captureStart - let captureEnd - - let ch = state.input.charCodeAt(state.position) - - if (ch !== 0x27/* ' */) { - return false - } - - state.kind = 'scalar' - state.result = '' - state.position++ - captureStart = captureEnd = state.position - - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 0x27/* ' */) { - captureSegment(state, captureStart, state.position, true) - ch = state.input.charCodeAt(++state.position) - - if (ch === 0x27/* ' */) { - captureStart = state.position - state.position++ - captureEnd = state.position - } else { - return true - } - } else if (isEol(ch)) { - captureSegment(state, captureStart, captureEnd, true) - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)) - captureStart = captureEnd = state.position - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, 'unexpected end of the document within a single quoted scalar') - } else { - state.position++ - if (!isWhiteSpace(ch)) { - captureEnd = state.position - } - } - } - - throwError(state, 'unexpected end of the stream within a single quoted scalar') -} - -function readDoubleQuotedScalar (state, nodeIndent) { - let captureStart - let captureEnd - let tmp - - let ch = state.input.charCodeAt(state.position) - - if (ch !== 0x22/* " */) { - return false - } - - state.kind = 'scalar' - state.result = '' - state.position++ - captureStart = captureEnd = state.position - - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 0x22/* " */) { - captureSegment(state, captureStart, state.position, true) - state.position++ - return true - } else if (ch === 0x5C/* \ */) { - captureSegment(state, captureStart, state.position, true) - ch = state.input.charCodeAt(++state.position) - - if (isEol(ch)) { - skipSeparationSpace(state, false, nodeIndent) - - // TODO: rework to inline fn with no type cast? - } else if (ch < 256 && simpleEscapeCheck[ch]) { - state.result += simpleEscapeMap[ch] - state.position++ - } else if ((tmp = escapedHexLen(ch)) > 0) { - let hexLength = tmp - let hexResult = 0 - - for (; hexLength > 0; hexLength--) { - ch = state.input.charCodeAt(++state.position) - - if ((tmp = fromHexCode(ch)) >= 0) { - hexResult = (hexResult << 4) + tmp - } else { - throwError(state, 'expected hexadecimal character') - } - } - - state.result += charFromCodepoint(hexResult) - - state.position++ - } else { - throwError(state, 'unknown escape sequence') - } - - captureStart = captureEnd = state.position - } else if (isEol(ch)) { - captureSegment(state, captureStart, captureEnd, true) - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)) - captureStart = captureEnd = state.position - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, 'unexpected end of the document within a double quoted scalar') - } else { - state.position++ - if (!isWhiteSpace(ch)) { - captureEnd = state.position - } - } - } - - throwError(state, 'unexpected end of the stream within a double quoted scalar') -} - -function readFlowCollection (state, nodeIndent) { - let readNext = true - let _line - let _lineStart - let _pos - const _tag = state.tag - let _result - const _anchor = state.anchor - let terminator - let isPair - let isExplicitPair - let isMapping - const overridableKeys = Object.create(null) - let keyNode - let keyTag - let valueNode - - let ch = state.input.charCodeAt(state.position) - - if (ch === 0x5B/* [ */) { - terminator = 0x5D/* ] */ - isMapping = false - _result = [] - } else if (ch === 0x7B/* { */) { - terminator = 0x7D/* } */ - isMapping = true - _result = {} - } else { - return false - } - - if (state.anchor !== null) { - storeAnchor(state, state.anchor, _result) - } - - ch = state.input.charCodeAt(++state.position) - - while (ch !== 0) { - skipSeparationSpace(state, true, nodeIndent) - - ch = state.input.charCodeAt(state.position) - - if (ch === terminator) { - state.position++ - state.tag = _tag - state.anchor = _anchor - state.kind = isMapping ? 'mapping' : 'sequence' - state.result = _result - return true - } else if (!readNext) { - throwError(state, 'missed comma between flow collection entries') - } else if (ch === 0x2C/* , */) { - // "flow collection entries can never be completely empty", as per YAML 1.2, section 7.4 - throwError(state, "expected the node content, but found ','") - } - - keyTag = keyNode = valueNode = null - isPair = isExplicitPair = false - - if (ch === 0x3F/* ? */) { - const following = state.input.charCodeAt(state.position + 1) - - if (isWsOrEol(following)) { - isPair = isExplicitPair = true - state.position++ - skipSeparationSpace(state, true, nodeIndent) - } - } - - _line = state.line // Save the current line. - _lineStart = state.lineStart - _pos = state.position - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true) - keyTag = state.tag - keyNode = state.result - skipSeparationSpace(state, true, nodeIndent) - - ch = state.input.charCodeAt(state.position) - - if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { - isPair = true - ch = state.input.charCodeAt(++state.position) - skipSeparationSpace(state, true, nodeIndent) - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true) - valueNode = state.result - } - - if (isMapping) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos) - } else if (isPair) { - _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)) - } else { - _result.push(keyNode) - } - - skipSeparationSpace(state, true, nodeIndent) - - ch = state.input.charCodeAt(state.position) - - if (ch === 0x2C/* , */) { - readNext = true - ch = state.input.charCodeAt(++state.position) - } else { - readNext = false - } - } - - throwError(state, 'unexpected end of the stream within a flow collection') -} - -function readBlockScalar (state, nodeIndent) { - let folding - let chomping = CHOMPING_CLIP - let didReadContent = false - let detectedIndent = false - let textIndent = nodeIndent - let emptyLines = 0 - let atMoreIndented = false - let tmp - - let ch = state.input.charCodeAt(state.position) - - if (ch === 0x7C/* | */) { - folding = false - } else if (ch === 0x3E/* > */) { - folding = true - } else { - return false - } - - state.kind = 'scalar' - state.result = '' - - while (ch !== 0) { - ch = state.input.charCodeAt(++state.position) - - if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { - if (CHOMPING_CLIP === chomping) { - chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP - } else { - throwError(state, 'repeat of a chomping mode identifier') - } - } else if ((tmp = fromDecimalCode(ch)) >= 0) { - if (tmp === 0) { - throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one') - } else if (!detectedIndent) { - textIndent = nodeIndent + tmp - 1 - detectedIndent = true - } else { - throwError(state, 'repeat of an indentation width identifier') - } - } else { - break - } - } - - if (isWhiteSpace(ch)) { - do { ch = state.input.charCodeAt(++state.position) } - while (isWhiteSpace(ch)) - - if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position) } - while (!isEol(ch) && (ch !== 0)) - } - } - - while (ch !== 0) { - readLineBreak(state) - state.lineIndent = 0 - - ch = state.input.charCodeAt(state.position) - - // eslint-disable-next-line no-unmodified-loop-condition - while ((!detectedIndent || state.lineIndent < textIndent) && - (ch === 0x20/* Space */)) { - state.lineIndent++ - ch = state.input.charCodeAt(++state.position) - } - - if (!detectedIndent && state.lineIndent > textIndent) { - textIndent = state.lineIndent - } - - if (isEol(ch)) { - emptyLines++ - continue - } - - if (!detectedIndent && textIndent === 0) { - throwError(state, 'missing indentation for block scalar') - } - - // End of the scalar. - if (state.lineIndent < textIndent) { - // Perform the chomping. - if (chomping === CHOMPING_KEEP) { - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines) - } else if (chomping === CHOMPING_CLIP) { - if (didReadContent) { // i.e. only if the scalar is not empty. - state.result += '\n' - } - } - - // Break this `while` cycle and go to the funciton's epilogue. - break - } - - // Folded style: use fancy rules to handle line breaks. - if (folding) { - // Lines starting with white space characters (more-indented lines) are not folded. - if (isWhiteSpace(ch)) { - atMoreIndented = true - // except for the first content line (cf. Example 8.1) - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines) - - // End of more-indented block. - } else if (atMoreIndented) { - atMoreIndented = false - state.result += common.repeat('\n', emptyLines + 1) - - // Just one line break - perceive as the same line. - } else if (emptyLines === 0) { - if (didReadContent) { // i.e. only if we have already read some scalar content. - state.result += ' ' - } - - // Several line breaks - perceive as different lines. - } else { - state.result += common.repeat('\n', emptyLines) - } - - // Literal style: just add exact number of line breaks between content lines. - } else { - // Keep all line breaks except the header line break. - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines) - } - - didReadContent = true - detectedIndent = true - emptyLines = 0 - const captureStart = state.position - - while (!isEol(ch) && (ch !== 0)) { - ch = state.input.charCodeAt(++state.position) - } - - captureSegment(state, captureStart, state.position, false) - } - - return true -} - -function readBlockSequence (state, nodeIndent) { - const _tag = state.tag - const _anchor = state.anchor - const _result = [] - let detected = false - - // there is a leading tab before this token, so it can't be a block sequence/mapping; - // it can still be flow sequence/mapping or a scalar - if (state.firstTabInLine !== -1) return false - - if (state.anchor !== null) { - storeAnchor(state, state.anchor, _result) - } - - let ch = state.input.charCodeAt(state.position) - - while (ch !== 0) { - if (state.firstTabInLine !== -1) { - state.position = state.firstTabInLine - throwError(state, 'tab characters must not be used in indentation') - } - - if (ch !== 0x2D/* - */) { - break - } - - const following = state.input.charCodeAt(state.position + 1) - - if (!isWsOrEol(following)) { - break - } - - detected = true - state.position++ - - if (skipSeparationSpace(state, true, -1)) { - if (state.lineIndent <= nodeIndent) { - _result.push(null) - ch = state.input.charCodeAt(state.position) - continue - } - } - - const _line = state.line - composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true) - _result.push(state.result) - skipSeparationSpace(state, true, -1) - - ch = state.input.charCodeAt(state.position) - - if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { - throwError(state, 'bad indentation of a sequence entry') - } else if (state.lineIndent < nodeIndent) { - break - } - } - - if (detected) { - state.tag = _tag - state.anchor = _anchor - state.kind = 'sequence' - state.result = _result - return true - } - return false -} - -function readBlockMapping (state, nodeIndent, flowIndent) { - let allowCompact - let _keyLine - let _keyLineStart - let _keyPos - const _tag = state.tag - const _anchor = state.anchor - const _result = {} - const overridableKeys = Object.create(null) - let keyTag = null - let keyNode = null - let valueNode = null - let atExplicitKey = false - let detected = false - - // there is a leading tab before this token, so it can't be a block sequence/mapping; - // it can still be flow sequence/mapping or a scalar - if (state.firstTabInLine !== -1) return false - - if (state.anchor !== null) { - storeAnchor(state, state.anchor, _result) - } - - let ch = state.input.charCodeAt(state.position) - - while (ch !== 0) { - if (!atExplicitKey && state.firstTabInLine !== -1) { - state.position = state.firstTabInLine - throwError(state, 'tab characters must not be used in indentation') - } - - const following = state.input.charCodeAt(state.position + 1) - const _line = state.line // Save the current line. - - // - // Explicit notation case. There are two separate blocks: - // first for the key (denoted by "?") and second for the value (denoted by ":") - // - if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && isWsOrEol(following)) { - if (ch === 0x3F/* ? */) { - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos) - keyTag = keyNode = valueNode = null - } - - detected = true - atExplicitKey = true - allowCompact = true - } else if (atExplicitKey) { - // i.e. 0x3A/* : */ === character after the explicit key. - atExplicitKey = false - allowCompact = true - } else { - throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line') - } - - state.position += 1 - ch = following - - // - // Implicit notation case. Flow-style node as the key first, then ":", and the value. - // - } else { - _keyLine = state.line - _keyLineStart = state.lineStart - _keyPos = state.position - - if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { - // Neither implicit nor explicit notation. - // Reading is done. Go to the epilogue. - break - } - - if (state.line === _line) { - ch = state.input.charCodeAt(state.position) - - while (isWhiteSpace(ch)) { - ch = state.input.charCodeAt(++state.position) - } - - if (ch === 0x3A/* : */) { - ch = state.input.charCodeAt(++state.position) - - if (!isWsOrEol(ch)) { - throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping') - } - - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos) - keyTag = keyNode = valueNode = null - } - - detected = true - atExplicitKey = false - allowCompact = false - keyTag = state.tag - keyNode = state.result - } else if (detected) { - throwError(state, 'can not read an implicit mapping pair; a colon is missed') - } else { - state.tag = _tag - state.anchor = _anchor - return true // Keep the result of `composeNode`. - } - } else if (detected) { - throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key') - } else { - state.tag = _tag - state.anchor = _anchor - return true // Keep the result of `composeNode`. - } - } - - // - // Common reading code for both explicit and implicit notations. - // - if (state.line === _line || state.lineIndent > nodeIndent) { - if (atExplicitKey) { - _keyLine = state.line - _keyLineStart = state.lineStart - _keyPos = state.position - } - - if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { - if (atExplicitKey) { - keyNode = state.result - } else { - valueNode = state.result - } - } - - if (!atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos) - keyTag = keyNode = valueNode = null - } - - skipSeparationSpace(state, true, -1) - ch = state.input.charCodeAt(state.position) - } - - if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { - throwError(state, 'bad indentation of a mapping entry') - } else if (state.lineIndent < nodeIndent) { - break - } - } - - // - // Epilogue. - // - - // Special case: last mapping's node contains only the key in explicit notation. - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos) - } - - // Expose the resulting mapping. - if (detected) { - state.tag = _tag - state.anchor = _anchor - state.kind = 'mapping' - state.result = _result - } - - return detected -} - -function readTagProperty (state) { - let isVerbatim = false - let isNamed = false - let tagHandle - let tagName - - let ch = state.input.charCodeAt(state.position) - - if (ch !== 0x21/* ! */) return false - - if (state.tag !== null) { - throwError(state, 'duplication of a tag property') - } - - ch = state.input.charCodeAt(++state.position) - - if (ch === 0x3C/* < */) { - isVerbatim = true - ch = state.input.charCodeAt(++state.position) - } else if (ch === 0x21/* ! */) { - isNamed = true - tagHandle = '!!' - ch = state.input.charCodeAt(++state.position) - } else { - tagHandle = '!' - } - - let _position = state.position - - if (isVerbatim) { - do { ch = state.input.charCodeAt(++state.position) } - while (ch !== 0 && ch !== 0x3E/* > */) - - if (state.position < state.length) { - tagName = state.input.slice(_position, state.position) - ch = state.input.charCodeAt(++state.position) - } else { - throwError(state, 'unexpected end of the stream within a verbatim tag') - } - } else { - while (ch !== 0 && !isWsOrEol(ch)) { - if (ch === 0x21/* ! */) { - if (!isNamed) { - tagHandle = state.input.slice(_position - 1, state.position + 1) - - if (!PATTERN_TAG_HANDLE.test(tagHandle)) { - throwError(state, 'named tag handle cannot contain such characters') - } - - isNamed = true - _position = state.position + 1 - } else { - throwError(state, 'tag suffix cannot contain exclamation marks') - } - } - - ch = state.input.charCodeAt(++state.position) - } - - tagName = state.input.slice(_position, state.position) - - if (PATTERN_FLOW_INDICATORS.test(tagName)) { - throwError(state, 'tag suffix cannot contain flow indicator characters') - } - } - - if (tagName && !PATTERN_TAG_URI.test(tagName)) { - throwError(state, 'tag name cannot contain such characters: ' + tagName) - } - - try { - tagName = decodeURIComponent(tagName) - } catch (err) { - throwError(state, 'tag name is malformed: ' + tagName) - } - - if (isVerbatim) { - state.tag = tagName - } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { - state.tag = state.tagMap[tagHandle] + tagName - } else if (tagHandle === '!') { - state.tag = '!' + tagName - } else if (tagHandle === '!!') { - state.tag = 'tag:yaml.org,2002:' + tagName - } else { - throwError(state, 'undeclared tag handle "' + tagHandle + '"') - } - - return true -} - -function readAnchorProperty (state) { - let ch = state.input.charCodeAt(state.position) - - if (ch !== 0x26/* & */) return false - - if (state.anchor !== null) { - throwError(state, 'duplication of an anchor property') - } - - ch = state.input.charCodeAt(++state.position) - const _position = state.position - - while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { - ch = state.input.charCodeAt(++state.position) - } - - if (state.position === _position) { - throwError(state, 'name of an anchor node must contain at least one character') - } - - state.anchor = state.input.slice(_position, state.position) - return true -} - -function readAlias (state) { - let ch = state.input.charCodeAt(state.position) - - if (ch !== 0x2A/* * */) return false - - ch = state.input.charCodeAt(++state.position) - const _position = state.position - - while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { - ch = state.input.charCodeAt(++state.position) - } - - if (state.position === _position) { - throwError(state, 'name of an alias node must contain at least one character') - } - - const alias = state.input.slice(_position, state.position) - - if (!_hasOwnProperty.call(state.anchorMap, alias)) { - throwError(state, 'unidentified alias "' + alias + '"') - } - - state.result = state.anchorMap[alias] - skipSeparationSpace(state, true, -1) - return true -} - -function tryReadBlockMappingFromProperty (state, propertyStart, nodeIndent, flowIndent) { - const fallbackState = snapshotState(state) - - beginAnchorTransaction(state) - restoreState(state, propertyStart) - - // Re-read the leading properties as part of the first implicit key, not as - // properties of the current node. - state.tag = null - state.anchor = null - state.kind = null - state.result = null - - if (readBlockMapping(state, nodeIndent, flowIndent) && state.kind === 'mapping') { - commitAnchorTransaction(state) - return true - } - - rollbackAnchorTransaction(state) - restoreState(state, fallbackState) - return false -} - -function composeNode (state, parentIndent, nodeContext, allowToSeek, allowCompact) { - let allowBlockScalars - let allowBlockCollections - let indentStatus = 1 // 1: this>parent, 0: this=parent, -1: this= state.maxDepth) { - throwError(state, 'nesting exceeded maxDepth (' + state.maxDepth + ')') - } - - state.depth += 1 - - if (state.listener !== null) { - state.listener('open', state) - } - - state.tag = null - state.anchor = null - state.kind = null - state.result = null - - const allowBlockStyles = allowBlockScalars = allowBlockCollections = - CONTEXT_BLOCK_OUT === nodeContext || - CONTEXT_BLOCK_IN === nodeContext - - if (allowToSeek) { - if (skipSeparationSpace(state, true, -1)) { - atNewLine = true - - if (state.lineIndent > parentIndent) { - indentStatus = 1 - } else if (state.lineIndent === parentIndent) { - indentStatus = 0 - } else if (state.lineIndent < parentIndent) { - indentStatus = -1 - } - } - } - - if (indentStatus === 1) { - while (true) { - const ch = state.input.charCodeAt(state.position) - const propertyState = snapshotState(state) - - // A duplicate property token after a line break can be the first key of - // a nested block mapping, e.g. `!!map\n !!str key: value`. - if (atNewLine && - ((ch === 0x21/* ! */ && state.tag !== null) || - (ch === 0x26/* & */ && state.anchor !== null))) { - break - } - - if (!readTagProperty(state) && !readAnchorProperty(state)) { - break - } - - if (propertyStart === null) { - propertyStart = propertyState - } - - if (skipSeparationSpace(state, true, -1)) { - atNewLine = true - allowBlockCollections = allowBlockStyles - - if (state.lineIndent > parentIndent) { - indentStatus = 1 - } else if (state.lineIndent === parentIndent) { - indentStatus = 0 - } else if (state.lineIndent < parentIndent) { - indentStatus = -1 - } - } else { - allowBlockCollections = false - } - } - } - - if (allowBlockCollections) { - allowBlockCollections = atNewLine || allowCompact - } - - if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { - if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { - flowIndent = parentIndent - } else { - flowIndent = parentIndent + 1 - } - - blockIndent = state.position - state.lineStart - - if (indentStatus === 1) { - if ((allowBlockCollections && - (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent))) || - readFlowCollection(state, flowIndent)) { - hasContent = true - } else { - const ch = state.input.charCodeAt(state.position) - - if (propertyStart !== null && allowBlockStyles && !allowBlockCollections && - ch !== 0x7C/* | */ && ch !== 0x3E/* > */ && - tryReadBlockMappingFromProperty( - state, - propertyStart, - propertyStart.position - propertyStart.lineStart, - flowIndent - )) { - hasContent = true - } else if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || - readSingleQuotedScalar(state, flowIndent) || - readDoubleQuotedScalar(state, flowIndent)) { - hasContent = true - } else if (readAlias(state)) { - hasContent = true - - if (state.tag !== null || state.anchor !== null) { - throwError(state, 'alias node should not have any properties') - } - } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { - hasContent = true - - if (state.tag === null) { - state.tag = '?' - } - } - - if (state.anchor !== null) { - storeAnchor(state, state.anchor, state.result) - } - } - } else if (indentStatus === 0) { - // Special case: block sequences are allowed to have same indentation level as the parent. - // http://www.yaml.org/spec/1.2/spec.html#id2799784 - hasContent = allowBlockCollections && readBlockSequence(state, blockIndent) - } - } - - if (state.tag === null) { - if (state.anchor !== null) { - storeAnchor(state, state.anchor, state.result) - } - } else if (state.tag === '?') { - // Implicit resolving is not allowed for non-scalar types, and '?' - // non-specific tag is only automatically assigned to plain scalars. - // - // We only need to check kind conformity in case user explicitly assigns '?' - // tag, for example like this: "! [0]" - // - if (state.result !== null && state.kind !== 'scalar') { - throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"') - } - - for (let typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { - type = state.implicitTypes[typeIndex] - - if (type.resolve(state.result)) { // `state.result` updated in resolver if matched - state.result = type.construct(state.result) - state.tag = type.tag - if (state.anchor !== null) { - storeAnchor(state, state.anchor, state.result) - } - break - } - } - } else if (state.tag !== '!') { - if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) { - type = state.typeMap[state.kind || 'fallback'][state.tag] - } else { - // looking for multi type - type = null - const typeList = state.typeMap.multi[state.kind || 'fallback'] - - for (let typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { - if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { - type = typeList[typeIndex] - break - } - } - } - - if (!type) { - throwError(state, 'unknown tag !<' + state.tag + '>') - } - - if (state.result !== null && type.kind !== state.kind) { - throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"') - } - - if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched - throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag') - } else { - state.result = type.construct(state.result, state.tag) - if (state.anchor !== null) { - storeAnchor(state, state.anchor, state.result) - } - } - } - - if (state.listener !== null) { - state.listener('close', state) - } - - state.depth -= 1 - return state.tag !== null || state.anchor !== null || hasContent -} - -function readDocument (state) { - const documentStart = state.position - let hasDirectives = false - let ch - - state.version = null - state.checkLineBreaks = state.legacy - state.tagMap = Object.create(null) - state.anchorMap = Object.create(null) - - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - skipSeparationSpace(state, true, -1) - - ch = state.input.charCodeAt(state.position) - - if (state.lineIndent > 0 || ch !== 0x25/* % */) { - break - } - - hasDirectives = true - ch = state.input.charCodeAt(++state.position) - let _position = state.position - - while (ch !== 0 && !isWsOrEol(ch)) { - ch = state.input.charCodeAt(++state.position) - } - - const directiveName = state.input.slice(_position, state.position) - const directiveArgs = [] - - if (directiveName.length < 1) { - throwError(state, 'directive name must not be less than one character in length') - } - - while (ch !== 0) { - while (isWhiteSpace(ch)) { - ch = state.input.charCodeAt(++state.position) - } - - if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position) } - while (ch !== 0 && !isEol(ch)) - break - } - - if (isEol(ch)) break - - _position = state.position - - while (ch !== 0 && !isWsOrEol(ch)) { - ch = state.input.charCodeAt(++state.position) - } - - directiveArgs.push(state.input.slice(_position, state.position)) - } - - if (ch !== 0) readLineBreak(state) - - if (_hasOwnProperty.call(directiveHandlers, directiveName)) { - directiveHandlers[directiveName](state, directiveName, directiveArgs) - } else { - throwWarning(state, 'unknown document directive "' + directiveName + '"') - } - } - - skipSeparationSpace(state, true, -1) - - if (state.lineIndent === 0 && - state.input.charCodeAt(state.position) === 0x2D/* - */ && - state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && - state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { - state.position += 3 - skipSeparationSpace(state, true, -1) - } else if (hasDirectives) { - throwError(state, 'directives end mark is expected') - } - - composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true) - skipSeparationSpace(state, true, -1) - - if (state.checkLineBreaks && - PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { - throwWarning(state, 'non-ASCII line breaks are interpreted as content') - } - - state.documents.push(state.result) - - if (state.position === state.lineStart && testDocumentSeparator(state)) { - if (state.input.charCodeAt(state.position) === 0x2E/* . */) { - state.position += 3 - skipSeparationSpace(state, true, -1) - } - return - } - - if (state.position < (state.length - 1)) { - throwError(state, 'end of the stream or a document separator is expected') - } -} - -function loadDocuments (input, options) { - input = String(input) - options = options || {} - - if (input.length !== 0) { - // Add tailing `\n` if not exists - if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && - input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { - input += '\n' - } - - // Strip BOM - if (input.charCodeAt(0) === 0xFEFF) { - input = input.slice(1) - } - } - - const state = new State(input, options) - - const nullpos = input.indexOf('\0') - - if (nullpos !== -1) { - state.position = nullpos - throwError(state, 'null byte is not allowed in input') - } - - // Use 0 as string terminator. That significantly simplifies bounds check. - state.input += '\0' - - while (state.input.charCodeAt(state.position) === 0x20/* Space */) { - state.lineIndent += 1 - state.position += 1 - } - - while (state.position < (state.length - 1)) { - readDocument(state) - } - - return state.documents -} - -function loadAll (input, iterator, options) { - if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { - options = iterator - iterator = null - } - - const documents = loadDocuments(input, options) - - if (typeof iterator !== 'function') { - return documents - } - - for (let index = 0, length = documents.length; index < length; index += 1) { - iterator(documents[index]) - } -} - -function load (input, options) { - const documents = loadDocuments(input, options) - - if (documents.length === 0) { - return undefined - } else if (documents.length === 1) { - return documents[0] - } - throw new YAMLException('expected a single document in the stream, but found more') -} - -module.exports.loadAll = loadAll -module.exports.load = load diff --git a/sdks/nodejs/node_modules/js-yaml/lib/schema.js b/sdks/nodejs/node_modules/js-yaml/lib/schema.js deleted file mode 100644 index 52e8f41..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/schema.js +++ /dev/null @@ -1,109 +0,0 @@ -'use strict' - -const YAMLException = require('./exception') -const Type = require('./type') - -function compileList (schema, name) { - const result = [] - - schema[name].forEach(function (currentType) { - let newIndex = result.length - - result.forEach(function (previousType, previousIndex) { - if (previousType.tag === currentType.tag && - previousType.kind === currentType.kind && - previousType.multi === currentType.multi) { - newIndex = previousIndex - } - }) - - result[newIndex] = currentType - }) - - return result -} - -function compileMap (/* lists... */) { - const result = { - scalar: {}, - sequence: {}, - mapping: {}, - fallback: {}, - multi: { - scalar: [], - sequence: [], - mapping: [], - fallback: [] - } - } - function collectType (type) { - if (type.multi) { - result.multi[type.kind].push(type) - result.multi['fallback'].push(type) - } else { - result[type.kind][type.tag] = result['fallback'][type.tag] = type - } - } - - for (let index = 0, length = arguments.length; index < length; index += 1) { - arguments[index].forEach(collectType) - } - return result -} - -function Schema (definition) { - return this.extend(definition) -} - -Schema.prototype.extend = function extend (definition) { - let implicit = [] - let explicit = [] - - if (definition instanceof Type) { - // Schema.extend(type) - explicit.push(definition) - } else if (Array.isArray(definition)) { - // Schema.extend([ type1, type2, ... ]) - explicit = explicit.concat(definition) - } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) { - // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] }) - if (definition.implicit) implicit = implicit.concat(definition.implicit) - if (definition.explicit) explicit = explicit.concat(definition.explicit) - } else { - throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' + - 'or a schema definition ({ implicit: [...], explicit: [...] })') - } - - implicit.forEach(function (type) { - if (!(type instanceof Type)) { - throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.') - } - - if (type.loadKind && type.loadKind !== 'scalar') { - throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.') - } - - if (type.multi) { - throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.') - } - }) - - explicit.forEach(function (type) { - if (!(type instanceof Type)) { - throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.') - } - }) - - const result = Object.create(Schema.prototype) - - result.implicit = (this.implicit || []).concat(implicit) - result.explicit = (this.explicit || []).concat(explicit) - - result.compiledImplicit = compileList(result, 'implicit') - result.compiledExplicit = compileList(result, 'explicit') - result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit) - - return result -} - -module.exports = Schema diff --git a/sdks/nodejs/node_modules/js-yaml/lib/schema/core.js b/sdks/nodejs/node_modules/js-yaml/lib/schema/core.js deleted file mode 100644 index 2660239..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/schema/core.js +++ /dev/null @@ -1,9 +0,0 @@ -// Standard YAML's Core schema. -// http://www.yaml.org/spec/1.2/spec.html#id2804923 -// -// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. -// So, Core schema has no distinctions from JSON schema is JS-YAML. - -'use strict' - -module.exports = require('./json') diff --git a/sdks/nodejs/node_modules/js-yaml/lib/schema/default.js b/sdks/nodejs/node_modules/js-yaml/lib/schema/default.js deleted file mode 100644 index fb232d6..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/schema/default.js +++ /dev/null @@ -1,20 +0,0 @@ -// JS-YAML's default schema for `safeLoad` function. -// It is not described in the YAML specification. -// -// This schema is based on standard YAML's Core schema and includes most of -// extra types described at YAML tag repository. (http://yaml.org/type/) - -'use strict' - -module.exports = require('./core').extend({ - implicit: [ - require('../type/timestamp'), - require('../type/merge') - ], - explicit: [ - require('../type/binary'), - require('../type/omap'), - require('../type/pairs'), - require('../type/set') - ] -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/schema/failsafe.js b/sdks/nodejs/node_modules/js-yaml/lib/schema/failsafe.js deleted file mode 100644 index ee63fe0..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/schema/failsafe.js +++ /dev/null @@ -1,14 +0,0 @@ -// Standard YAML's Failsafe schema. -// http://www.yaml.org/spec/1.2/spec.html#id2802346 - -'use strict' - -const Schema = require('../schema') - -module.exports = new Schema({ - explicit: [ - require('../type/str'), - require('../type/seq'), - require('../type/map') - ] -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/schema/json.js b/sdks/nodejs/node_modules/js-yaml/lib/schema/json.js deleted file mode 100644 index ac75fa2..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/schema/json.js +++ /dev/null @@ -1,17 +0,0 @@ -// Standard YAML's JSON schema. -// http://www.yaml.org/spec/1.2/spec.html#id2803231 -// -// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. -// So, this schema is not such strict as defined in the YAML specification. -// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. - -'use strict' - -module.exports = require('./failsafe').extend({ - implicit: [ - require('../type/null'), - require('../type/bool'), - require('../type/int'), - require('../type/float') - ] -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/snippet.js b/sdks/nodejs/node_modules/js-yaml/lib/snippet.js deleted file mode 100644 index 71004a4..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/snippet.js +++ /dev/null @@ -1,96 +0,0 @@ -'use strict' - -const common = require('./common') - -// get snippet for a single line, respecting maxLength -function getLine (buffer, lineStart, lineEnd, position, maxLineLength) { - let head = '' - let tail = '' - const maxHalfLength = Math.floor(maxLineLength / 2) - 1 - - if (position - lineStart > maxHalfLength) { - head = ' ... ' - lineStart = position - maxHalfLength + head.length - } - - if (lineEnd - position > maxHalfLength) { - tail = ' ...' - lineEnd = position + maxHalfLength - tail.length - } - - return { - str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, '→') + tail, - pos: position - lineStart + head.length // relative position - } -} - -function padStart (string, max) { - return common.repeat(' ', max - string.length) + string -} - -function makeSnippet (mark, options) { - options = Object.create(options || null) - - if (!mark.buffer) return null - - if (!options.maxLength) options.maxLength = 79 - if (typeof options.indent !== 'number') options.indent = 1 - if (typeof options.linesBefore !== 'number') options.linesBefore = 3 - if (typeof options.linesAfter !== 'number') options.linesAfter = 2 - - const re = /\r?\n|\r|\0/g - const lineStarts = [0] - const lineEnds = [] - let match - let foundLineNo = -1 - - while ((match = re.exec(mark.buffer))) { - lineEnds.push(match.index) - lineStarts.push(match.index + match[0].length) - - if (mark.position <= match.index && foundLineNo < 0) { - foundLineNo = lineStarts.length - 2 - } - } - - if (foundLineNo < 0) foundLineNo = lineStarts.length - 1 - - let result = '' - const lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length - const maxLineLength = options.maxLength - (options.indent + lineNoLength + 3) - - for (let i = 1; i <= options.linesBefore; i++) { - if (foundLineNo - i < 0) break - const line = getLine( - mark.buffer, - lineStarts[foundLineNo - i], - lineEnds[foundLineNo - i], - mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), - maxLineLength - ) - result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + - ' | ' + line.str + '\n' + result - } - - const line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength) - result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + - ' | ' + line.str + '\n' - result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\n' - - for (let i = 1; i <= options.linesAfter; i++) { - if (foundLineNo + i >= lineEnds.length) break - const line = getLine( - mark.buffer, - lineStarts[foundLineNo + i], - lineEnds[foundLineNo + i], - mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), - maxLineLength - ) - result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + - ' | ' + line.str + '\n' - } - - return result.replace(/\n$/, '') -} - -module.exports = makeSnippet diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type.js b/sdks/nodejs/node_modules/js-yaml/lib/type.js deleted file mode 100644 index 8ec3dbe..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict' - -const YAMLException = require('./exception') - -const TYPE_CONSTRUCTOR_OPTIONS = [ - 'kind', - 'multi', - 'resolve', - 'construct', - 'instanceOf', - 'predicate', - 'represent', - 'representName', - 'defaultStyle', - 'styleAliases' -] - -const YAML_NODE_KINDS = [ - 'scalar', - 'sequence', - 'mapping' -] - -function compileStyleAliases (map) { - const result = {} - - if (map !== null) { - Object.keys(map).forEach(function (style) { - map[style].forEach(function (alias) { - result[String(alias)] = style - }) - }) - } - - return result -} - -function Type (tag, options) { - options = options || {} - - Object.keys(options).forEach(function (name) { - if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { - throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.') - } - }) - - // TODO: Add tag format check. - this.options = options // keep original options in case user wants to extend this type later - this.tag = tag - this.kind = options['kind'] || null - this.resolve = options['resolve'] || function () { return true } - this.construct = options['construct'] || function (data) { return data } - this.instanceOf = options['instanceOf'] || null - this.predicate = options['predicate'] || null - this.represent = options['represent'] || null - this.representName = options['representName'] || null - this.defaultStyle = options['defaultStyle'] || null - this.multi = options['multi'] || false - this.styleAliases = compileStyleAliases(options['styleAliases'] || null) - - if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { - throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.') - } -} - -module.exports = Type diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type/binary.js b/sdks/nodejs/node_modules/js-yaml/lib/type/binary.js deleted file mode 100644 index dbe2300..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type/binary.js +++ /dev/null @@ -1,122 +0,0 @@ -'use strict' - -const Type = require('../type') - -// [ 64, 65, 66 ] -> [ padding, CR, LF ] -const BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r' - -function resolveYamlBinary (data) { - if (data === null) return false - - let bitlen = 0 - const max = data.length - const map = BASE64_MAP - - // Convert one by one. - for (let idx = 0; idx < max; idx++) { - const code = map.indexOf(data.charAt(idx)) - - // Skip CR/LF - if (code > 64) continue - - // Fail on illegal characters - if (code < 0) return false - - bitlen += 6 - } - - // If there are any bits left, source was corrupted - return (bitlen % 8) === 0 -} - -function constructYamlBinary (data) { - const input = data.replace(/[\r\n=]/g, '') // remove CR/LF & padding to simplify scan - const max = input.length - const map = BASE64_MAP - let bits = 0 - const result = [] - - // Collect by 6*4 bits (3 bytes) - - for (let idx = 0; idx < max; idx++) { - if ((idx % 4 === 0) && idx) { - result.push((bits >> 16) & 0xFF) - result.push((bits >> 8) & 0xFF) - result.push(bits & 0xFF) - } - - bits = (bits << 6) | map.indexOf(input.charAt(idx)) - } - - // Dump tail - - const tailbits = (max % 4) * 6 - - if (tailbits === 0) { - result.push((bits >> 16) & 0xFF) - result.push((bits >> 8) & 0xFF) - result.push(bits & 0xFF) - } else if (tailbits === 18) { - result.push((bits >> 10) & 0xFF) - result.push((bits >> 2) & 0xFF) - } else if (tailbits === 12) { - result.push((bits >> 4) & 0xFF) - } - - return new Uint8Array(result) -} - -function representYamlBinary (object /*, style */) { - let result = '' - let bits = 0 - const max = object.length - const map = BASE64_MAP - - // Convert every three bytes to 4 ASCII characters. - - for (let idx = 0; idx < max; idx++) { - if ((idx % 3 === 0) && idx) { - result += map[(bits >> 18) & 0x3F] - result += map[(bits >> 12) & 0x3F] - result += map[(bits >> 6) & 0x3F] - result += map[bits & 0x3F] - } - - bits = (bits << 8) + object[idx] - } - - // Dump tail - - const tail = max % 3 - - if (tail === 0) { - result += map[(bits >> 18) & 0x3F] - result += map[(bits >> 12) & 0x3F] - result += map[(bits >> 6) & 0x3F] - result += map[bits & 0x3F] - } else if (tail === 2) { - result += map[(bits >> 10) & 0x3F] - result += map[(bits >> 4) & 0x3F] - result += map[(bits << 2) & 0x3F] - result += map[64] - } else if (tail === 1) { - result += map[(bits >> 2) & 0x3F] - result += map[(bits << 4) & 0x3F] - result += map[64] - result += map[64] - } - - return result -} - -function isBinary (obj) { - return Object.prototype.toString.call(obj) === '[object Uint8Array]' -} - -module.exports = new Type('tag:yaml.org,2002:binary', { - kind: 'scalar', - resolve: resolveYamlBinary, - construct: constructYamlBinary, - predicate: isBinary, - represent: representYamlBinary -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type/bool.js b/sdks/nodejs/node_modules/js-yaml/lib/type/bool.js deleted file mode 100644 index ba3d44f..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type/bool.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict' - -const Type = require('../type') - -function resolveYamlBoolean (data) { - if (data === null) return false - - const max = data.length - - return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || - (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')) -} - -function constructYamlBoolean (data) { - return data === 'true' || - data === 'True' || - data === 'TRUE' -} - -function isBoolean (object) { - return Object.prototype.toString.call(object) === '[object Boolean]' -} - -module.exports = new Type('tag:yaml.org,2002:bool', { - kind: 'scalar', - resolve: resolveYamlBoolean, - construct: constructYamlBoolean, - predicate: isBoolean, - represent: { - lowercase: function (object) { return object ? 'true' : 'false' }, - uppercase: function (object) { return object ? 'TRUE' : 'FALSE' }, - camelcase: function (object) { return object ? 'True' : 'False' } - }, - defaultStyle: 'lowercase' -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type/float.js b/sdks/nodejs/node_modules/js-yaml/lib/type/float.js deleted file mode 100644 index 07a5c93..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type/float.js +++ /dev/null @@ -1,99 +0,0 @@ -'use strict' - -const common = require('../common') -const Type = require('../type') - -const YAML_FLOAT_PATTERN = new RegExp( - // 2.5e4, 2.5 and integers - '^(?:[-+]?(?:[0-9]+)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?' + - // .2e4, .2 - // special case, seems not from spec - '|\\.[0-9]+(?:[eE][-+]?[0-9]+)?' + - // .inf - '|[-+]?\\.(?:inf|Inf|INF)' + - // .nan - '|\\.(?:nan|NaN|NAN))$') - -const YAML_FLOAT_SPECIAL_PATTERN = new RegExp( - '^(?:' + - // .inf - '[-+]?\\.(?:inf|Inf|INF)' + - // .nan - '|\\.(?:nan|NaN|NAN))$') - -function resolveYamlFloat (data) { - if (data === null) return false - - if (!YAML_FLOAT_PATTERN.test(data)) { - return false - } - - if (isFinite(parseFloat(data, 10))) { - return true - } - - return YAML_FLOAT_SPECIAL_PATTERN.test(data) -} - -function constructYamlFloat (data) { - let value = data.toLowerCase() - const sign = value[0] === '-' ? -1 : 1 - - if ('+-'.indexOf(value[0]) >= 0) { - value = value.slice(1) - } - - if (value === '.inf') { - return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY - } else if (value === '.nan') { - return NaN - } - return sign * parseFloat(value, 10) -} - -const SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/ - -function representYamlFloat (object, style) { - if (isNaN(object)) { - switch (style) { - case 'lowercase': return '.nan' - case 'uppercase': return '.NAN' - case 'camelcase': return '.NaN' - } - } else if (Number.POSITIVE_INFINITY === object) { - switch (style) { - case 'lowercase': return '.inf' - case 'uppercase': return '.INF' - case 'camelcase': return '.Inf' - } - } else if (Number.NEGATIVE_INFINITY === object) { - switch (style) { - case 'lowercase': return '-.inf' - case 'uppercase': return '-.INF' - case 'camelcase': return '-.Inf' - } - } else if (common.isNegativeZero(object)) { - return '-0.0' - } - - const res = object.toString(10) - - // JS stringifier can build scientific format without dots: 5e-100, - // while YAML requres dot: 5.e-100. Fix it with simple hack - - return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res -} - -function isFloat (object) { - return (Object.prototype.toString.call(object) === '[object Number]') && - (object % 1 !== 0 || common.isNegativeZero(object)) -} - -module.exports = new Type('tag:yaml.org,2002:float', { - kind: 'scalar', - resolve: resolveYamlFloat, - construct: constructYamlFloat, - predicate: isFloat, - represent: representYamlFloat, - defaultStyle: 'lowercase' -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type/int.js b/sdks/nodejs/node_modules/js-yaml/lib/type/int.js deleted file mode 100644 index 759a62f..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type/int.js +++ /dev/null @@ -1,142 +0,0 @@ -'use strict' - -const common = require('../common') -const Type = require('../type') - -function isHexCode (c) { - return ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) || - ((c >= 0x41/* A */) && (c <= 0x46/* F */)) || - ((c >= 0x61/* a */) && (c <= 0x66/* f */)) -} - -function isOctCode (c) { - return ((c >= 0x30/* 0 */) && (c <= 0x37/* 7 */)) -} - -function isDecCode (c) { - return ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) -} - -function resolveYamlInteger (data) { - if (data === null) return false - - const max = data.length - let index = 0 - let hasDigits = false - - if (!max) return false - - let ch = data[index] - - // sign - if (ch === '-' || ch === '+') { - ch = data[++index] - } - - if (ch === '0') { - // 0 - if (index + 1 === max) return true - ch = data[++index] - - // base 2, base 8, base 16 - - if (ch === 'b') { - // base 2 - index++ - - for (; index < max; index++) { - ch = data[index] - if (ch !== '0' && ch !== '1') return false - hasDigits = true - } - return hasDigits && isFinite(parseYamlInteger(data)) - } - - if (ch === 'x') { - // base 16 - index++ - - for (; index < max; index++) { - if (!isHexCode(data.charCodeAt(index))) return false - hasDigits = true - } - return hasDigits && isFinite(parseYamlInteger(data)) - } - - if (ch === 'o') { - // base 8 - index++ - - for (; index < max; index++) { - if (!isOctCode(data.charCodeAt(index))) return false - hasDigits = true - } - return hasDigits && isFinite(parseYamlInteger(data)) - } - } - - // base 10 (except 0) - - for (; index < max; index++) { - if (!isDecCode(data.charCodeAt(index))) { - return false - } - hasDigits = true - } - - if (!hasDigits) return false - - return isFinite(parseYamlInteger(data)) -} - -function parseYamlInteger (data) { - let value = data - let sign = 1 - - let ch = value[0] - - if (ch === '-' || ch === '+') { - if (ch === '-') sign = -1 - value = value.slice(1) - ch = value[0] - } - - if (value === '0') return 0 - - if (ch === '0') { - if (value[1] === 'b') return sign * parseInt(value.slice(2), 2) - if (value[1] === 'x') return sign * parseInt(value.slice(2), 16) - if (value[1] === 'o') return sign * parseInt(value.slice(2), 8) - } - - return sign * parseInt(value, 10) -} - -function constructYamlInteger (data) { - return parseYamlInteger(data) -} - -function isInteger (object) { - return (Object.prototype.toString.call(object)) === '[object Number]' && - (object % 1 === 0 && !common.isNegativeZero(object)) -} - -module.exports = new Type('tag:yaml.org,2002:int', { - kind: 'scalar', - resolve: resolveYamlInteger, - construct: constructYamlInteger, - predicate: isInteger, - represent: { - binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1) }, - octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1) }, - decimal: function (obj) { return obj.toString(10) }, - hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1) } - }, - defaultStyle: 'decimal', - styleAliases: { - binary: [2, 'bin'], - octal: [8, 'oct'], - decimal: [10, 'dec'], - hexadecimal: [16, 'hex'] - } -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type/map.js b/sdks/nodejs/node_modules/js-yaml/lib/type/map.js deleted file mode 100644 index aa27874..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type/map.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict' - -const Type = require('../type') - -module.exports = new Type('tag:yaml.org,2002:map', { - kind: 'mapping', - construct: function (data) { return data !== null ? data : {} } -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type/merge.js b/sdks/nodejs/node_modules/js-yaml/lib/type/merge.js deleted file mode 100644 index 5781ff5..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type/merge.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict' - -const Type = require('../type') - -function resolveYamlMerge (data) { - return data === '<<' || data === null -} - -module.exports = new Type('tag:yaml.org,2002:merge', { - kind: 'scalar', - resolve: resolveYamlMerge -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type/null.js b/sdks/nodejs/node_modules/js-yaml/lib/type/null.js deleted file mode 100644 index 0a9d7e5..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type/null.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict' - -const Type = require('../type') - -function resolveYamlNull (data) { - if (data === null) return true - - const max = data.length - - return (max === 1 && data === '~') || - (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')) -} - -function constructYamlNull () { - return null -} - -function isNull (object) { - return object === null -} - -module.exports = new Type('tag:yaml.org,2002:null', { - kind: 'scalar', - resolve: resolveYamlNull, - construct: constructYamlNull, - predicate: isNull, - represent: { - canonical: function () { return '~' }, - lowercase: function () { return 'null' }, - uppercase: function () { return 'NULL' }, - camelcase: function () { return 'Null' }, - empty: function () { return '' } - }, - defaultStyle: 'lowercase' -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type/omap.js b/sdks/nodejs/node_modules/js-yaml/lib/type/omap.js deleted file mode 100644 index d6caa3a..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type/omap.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict' - -const Type = require('../type') - -const _hasOwnProperty = Object.prototype.hasOwnProperty -const _toString = Object.prototype.toString - -function resolveYamlOmap (data) { - if (data === null) return true - - const objectKeys = {} - const object = data - - for (let index = 0, length = object.length; index < length; index += 1) { - const pair = object[index] - let pairHasKey = false - - if (_toString.call(pair) !== '[object Object]') return false - - let pairKey - for (pairKey in pair) { - if (_hasOwnProperty.call(pair, pairKey)) { - if (!pairHasKey) pairHasKey = true - else return false - } - } - - if (!pairHasKey) return false - - if (_hasOwnProperty.call(objectKeys, pairKey)) return false - Object.defineProperty(objectKeys, pairKey, { value: true }) - } - - return true -} - -function constructYamlOmap (data) { - return data !== null ? data : [] -} - -module.exports = new Type('tag:yaml.org,2002:omap', { - kind: 'sequence', - resolve: resolveYamlOmap, - construct: constructYamlOmap -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type/pairs.js b/sdks/nodejs/node_modules/js-yaml/lib/type/pairs.js deleted file mode 100644 index 4b90222..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type/pairs.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict' - -const Type = require('../type') - -const _toString = Object.prototype.toString - -function resolveYamlPairs (data) { - if (data === null) return true - - const object = data - - const result = new Array(object.length) - - for (let index = 0, length = object.length; index < length; index += 1) { - const pair = object[index] - - if (_toString.call(pair) !== '[object Object]') return false - - const keys = Object.keys(pair) - - if (keys.length !== 1) return false - - result[index] = [keys[0], pair[keys[0]]] - } - - return true -} - -function constructYamlPairs (data) { - if (data === null) return [] - - const object = data - const result = new Array(object.length) - - for (let index = 0, length = object.length; index < length; index += 1) { - const pair = object[index] - - const keys = Object.keys(pair) - - result[index] = [keys[0], pair[keys[0]]] - } - - return result -} - -module.exports = new Type('tag:yaml.org,2002:pairs', { - kind: 'sequence', - resolve: resolveYamlPairs, - construct: constructYamlPairs -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type/seq.js b/sdks/nodejs/node_modules/js-yaml/lib/type/seq.js deleted file mode 100644 index e85ab66..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type/seq.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict' - -const Type = require('../type') - -module.exports = new Type('tag:yaml.org,2002:seq', { - kind: 'sequence', - construct: function (data) { return data !== null ? data : [] } -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type/set.js b/sdks/nodejs/node_modules/js-yaml/lib/type/set.js deleted file mode 100644 index 8e8a119..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type/set.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict' - -const Type = require('../type') - -const _hasOwnProperty = Object.prototype.hasOwnProperty - -function resolveYamlSet (data) { - if (data === null) return true - - const object = data - - for (const key in object) { - if (_hasOwnProperty.call(object, key)) { - if (object[key] !== null) return false - } - } - - return true -} - -function constructYamlSet (data) { - return data !== null ? data : {} -} - -module.exports = new Type('tag:yaml.org,2002:set', { - kind: 'mapping', - resolve: resolveYamlSet, - construct: constructYamlSet -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type/str.js b/sdks/nodejs/node_modules/js-yaml/lib/type/str.js deleted file mode 100644 index 072ef27..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type/str.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict' - -const Type = require('../type') - -module.exports = new Type('tag:yaml.org,2002:str', { - kind: 'scalar', - construct: function (data) { return data !== null ? data : '' } -}) diff --git a/sdks/nodejs/node_modules/js-yaml/lib/type/timestamp.js b/sdks/nodejs/node_modules/js-yaml/lib/type/timestamp.js deleted file mode 100644 index 05f323b..0000000 --- a/sdks/nodejs/node_modules/js-yaml/lib/type/timestamp.js +++ /dev/null @@ -1,88 +0,0 @@ -'use strict' - -const Type = require('../type') - -const YAML_DATE_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9])' + // [2] month - '-([0-9][0-9])$') // [3] day - -const YAML_TIMESTAMP_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9]?)' + // [2] month - '-([0-9][0-9]?)' + // [3] day - '(?:[Tt]|[ \\t]+)' + // ... - '([0-9][0-9]?)' + // [4] hour - ':([0-9][0-9])' + // [5] minute - ':([0-9][0-9])' + // [6] second - '(?:\\.([0-9]*))?' + // [7] fraction - '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tzHour - '(?::([0-9][0-9]))?))?$') // [11] tzMinute - -function resolveYamlTimestamp (data) { - if (data === null) return false - if (YAML_DATE_REGEXP.exec(data) !== null) return true - if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true - return false -} - -function constructYamlTimestamp (data) { - let fraction = 0 - let delta = null - - let match = YAML_DATE_REGEXP.exec(data) - if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data) - - if (match === null) throw new Error('Date resolve error') - - // match: [1] year [2] month [3] day - - const year = +(match[1]) - const month = +(match[2]) - 1 // JS month starts with 0 - const day = +(match[3]) - - if (!match[4]) { // no hour - return new Date(Date.UTC(year, month, day)) - } - - // match: [4] hour [5] minute [6] second [7] fraction - - const hour = +(match[4]) - const minute = +(match[5]) - const second = +(match[6]) - - if (match[7]) { - fraction = match[7].slice(0, 3) - while (fraction.length < 3) { // milli-seconds - fraction += '0' - } - fraction = +fraction - } - - // match: [8] tz [9] tz_sign [10] tzHour [11] tzMinute - - if (match[9]) { - const tzHour = +(match[10]) - const tzMinute = +(match[11] || 0) - delta = (tzHour * 60 + tzMinute) * 60000 // delta in mili-seconds - if (match[9] === '-') delta = -delta - } - - const date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)) - - if (delta) date.setTime(date.getTime() - delta) - - return date -} - -function representYamlTimestamp (object /*, style */) { - return object.toISOString() -} - -module.exports = new Type('tag:yaml.org,2002:timestamp', { - kind: 'scalar', - resolve: resolveYamlTimestamp, - construct: constructYamlTimestamp, - instanceOf: Date, - represent: representYamlTimestamp -}) diff --git a/sdks/nodejs/node_modules/js-yaml/package.json b/sdks/nodejs/node_modules/js-yaml/package.json deleted file mode 100644 index f02c218..0000000 --- a/sdks/nodejs/node_modules/js-yaml/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "name": "js-yaml", - "version": "4.3.2", - "description": "YAML 1.2 parser and serializer", - "keywords": [ - "yaml", - "parser", - "serializer", - "pyyaml" - ], - "author": "Vladimir Zapparov ", - "contributors": [ - "Aleksey V Zapparov (http://www.ixti.net/)", - "Vitaly Puzrin (https://github.com/puzrin)", - "Martin Grenfell (http://got-ravings.blogspot.com)" - ], - "license": "MIT", - "repository": "nodeca/js-yaml", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/nodeca" - } - ], - "files": [ - "index.js", - "lib/", - "bin/", - "dist/" - ], - "publishConfig": { - "tag": "v4-legacy" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - }, - "module": "./dist/js-yaml.mjs", - "exports": { - ".": { - "import": "./dist/js-yaml.mjs", - "require": "./index.js" - }, - "./package.json": "./package.json" - }, - "scripts": { - "lint": "eslint .", - "lint-fix": "eslint . --fix", - "test": "npm run lint && npm run test:core && npm run test:build", - "test:core": "node --test test/core/*.test.*", - "test:build": "npm run build && node --test test/build/*.test.*", - "coverage": "npm run build && c8 --include 'lib/**' -r text -r html -r lcov node --test test/core/*.test.*", - "build": "node support/build-dist.mjs", - "build:demo": "npm run lint && node support/build_demo.mjs", - "gh-demo": "npm run build:demo && gh-pages -d demo -f", - "prepack": "npm test && npm run build" - }, - "unpkg": "dist/js-yaml.min.js", - "jsdelivr": "dist/js-yaml.min.js", - "dependencies": { - "argparse": "^2.0.1" - }, - "devDependencies": { - "@babel/core": "8.0.1", - "@babel/preset-env": "8.0.1", - "@rollup/plugin-commonjs": "29.0.3", - "@rollup/plugin-terser": "0.4.4", - "c8": "^11.0.0", - "codemirror": "^5.65.21", - "eslint": "^9.39.4", - "fast-check": "^4.8.0", - "gh-pages": "^6.3.0", - "neostandard": "^0.13.0", - "tinybench": "^6.0.2", - "vite": "7.3.6", - "vite-plugin-node-polyfills": "^0.28.0", - "vite-plugin-singlefile": "^2.3.3", - "workerpool": "^10.0.2" - } -} diff --git a/sdks/nodejs/node_modules/json-with-bigint/LICENSE b/sdks/nodejs/node_modules/json-with-bigint/LICENSE deleted file mode 100644 index c530648..0000000 --- a/sdks/nodejs/node_modules/json-with-bigint/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 Ivan Korolenko - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/json-with-bigint/README.md b/sdks/nodejs/node_modules/json-with-bigint/README.md deleted file mode 100644 index 3e4af04..0000000 --- a/sdks/nodejs/node_modules/json-with-bigint/README.md +++ /dev/null @@ -1,129 +0,0 @@ -# JSON with BigInt - -JS library that allows you to easily serialize and deserialize data with BigInt values - -## Why would I need json-with-bigint? - -3 reasons: - -1. You need to convert some data to/from JSON and it includes BigInt values -2. Native JSON.stringify() and JSON.parse() methods in JS can't work with BigInt -3. Other libraries and pieces of code that you'll find either can't solve this problem while supporting consistent round-trip operations (meaning, you will not get the same BigInt values if you serialize and then deserialize them) or requires you to specify which properties in JSON include BigInt values, or to change your JSON or the way you want to work with your data - -## json-with-bigint advantages - -✔️ Supports consistent round-trip operations with JSON - -``` -const data = { bigNumber: 9007199254740992n }; -JSONStringify(data) // '{"bigNumber":9007199254740992}' -JSONParse(JSONStringify(data)).bigNumber === 9007199254740992n // true -``` - -✔️ No need to specify which properties in JSON include BigInt values. Library will find them itself - -✔️ No need to change your JSON or the way you want to work with your data - -✔️ You don't have to memorize this library's API, you already know it. Just skip the dot, and that's it (`JSONParse()`, `JSONStringify()`) - -✔️ Parsed big number values are just regular BigInt. Parses and stringifies all other values other than big numbers the same way as native JSON methods in JS do. Signatures match too. You can just replace every `JSON.parse()` and `JSON.strinfigy()` in your project with `JSONParse()` and `JSONStringify()`, and it will work - -✔️ Correctly parses float numbers and negative numbers - -✔️ Correctly parses pretty printed JSON (formatted with newline and whitespace characters) - -✔️ Does not contaminate your global space (unlike monkey-patching solution) - -✔️ Isomorphic (it can run in both the browser and Node.js with the same code) - -✔️ Can be used in both JavaScript and TypeScript projects (.d.ts file included) - -✔️ Can be used as both ESM and CommonJS module - -✔️ No transpilers needed. Runs even in ES5 environments - -✔️ Actively supported - -✔️ Size: 944 bytes (minified and gzipped) - -✔️ No dependencies. Even the dev ones - -✔️ Extensively covered by tests - -## Getting Started - -This library has no default export. [Why it's a good thing](https://humanwhocodes.com/blog/2019/01/stop-using-default-exports-javascript-module/) - -### NPM - -Add this library to your project using NPM - -``` -npm i json-with-bigint -``` - -and use it - -``` -import { JSONParse, JSONStringify } from 'json-with-bigint'; - -const userData = { - someBigNumber: 9007199254740992n -}; - -localStorage.setItem('userData', JSONStringify(userData)); - -const restoredUserData = JSONParse(localStorage.getItem('userData') || ''); -``` - -### CDN - -Add this code to your HTML - -``` - -``` - -and use it - -``` - -``` - -### Manually - -Download json-with-bigint.min.js from this repository to your project's folder and use it - -``` - - -``` - -## How to use - -`JSONParse` - works just like [native JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse), but supports BigInt - -`JSONStringify` - works just like [native JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify), but supports BigInt - -Examples: - -- `JSONParse('{"someBigNumber":9007199254740992}')` -- `JSONStringify({ -someBigNumber: 9007199254740992n -})` diff --git a/sdks/nodejs/node_modules/json-with-bigint/__tests__/helpers.cjs b/sdks/nodejs/node_modules/json-with-bigint/__tests__/helpers.cjs deleted file mode 100644 index 59ba017..0000000 --- a/sdks/nodejs/node_modules/json-with-bigint/__tests__/helpers.cjs +++ /dev/null @@ -1,10 +0,0 @@ -const originalParse = JSON.parse; - -/* - Function to test the V1 (implementation without the JSON.parse's context.source feature support) -*/ -const imitateJSONParseWithoutContext = (text, reviver) => { - return originalParse(text, (key, value) => reviver(key, value)); -}; - -module.exports = { originalParse, imitateJSONParseWithoutContext }; diff --git a/sdks/nodejs/node_modules/json-with-bigint/__tests__/performance.cjs b/sdks/nodejs/node_modules/json-with-bigint/__tests__/performance.cjs deleted file mode 100644 index 15432a0..0000000 --- a/sdks/nodejs/node_modules/json-with-bigint/__tests__/performance.cjs +++ /dev/null @@ -1,153 +0,0 @@ -// ------ Performance tests ------ - -const { performance } = require("perf_hooks"); -const { imitateJSONParseWithoutContext } = require("./helpers.cjs"); -const { JSONParse, JSONStringify } = require("../json-with-bigint.cjs"); - -const fs = require("fs").promises; -const https = require("https"); - -// JSON is located in a separate GitHub repo here (click Raw to see the URL below): -// https://github.com/Ivan-Korolenko/json-with-bigint.performance.json/blob/main/performance.json -const JSON_URL = - "https://raw.githubusercontent.com/Ivan-Korolenko/json-with-bigint.performance.json/refs/heads/main/performance.json"; -const JSON_LOCAL_FILEPATH = "__tests__/performance.json"; - -async function fetchJSON(url, maxRetries = 3, delay = 1000) { - for (let attempt = 1; attempt <= maxRetries; attempt++) { - try { - const response = await new Promise((resolve, reject) => { - https - .get(url, (res) => { - if (res.statusCode >= 500 && res.statusCode < 600) { - reject(new Error(`Server error ${res.statusCode}: Retrying...`)); - } else if (res.statusCode !== 200) { - reject( - new Error( - `Request failed with status ${res.statusCode} ${res.statusMessage}` - ) - ); - } - - let data = ""; - res.on("data", (chunk) => { - data += chunk; - }); - res.on("end", () => resolve(data)); - }) - .on("error", reject); - }); - - return JSON.parse(response); - } catch (error) { - if (attempt < maxRetries) { - console.warn(`Attempt ${attempt} failed: ${error.message}`); - await new Promise((res) => - setTimeout(res, delay * Math.pow(2, attempt - 1)) - ); // Exponential backoff - } else { - console.error("Max retries reached. Fetch failed:", error); - throw error; - } - } - } -} - -async function saveJSONToFile(filePath, data) { - try { - const jsonString = JSON.stringify(data, null, 2); - const tempPath = `${filePath}.tmp`; - - await fs.writeFile(tempPath, jsonString, "utf8"); - await fs.rename(tempPath, filePath); // Atomic write - console.log(`✅ JSON data saved to ${filePath}`); - } catch (error) { - console.error("Error saving JSON to file:", error); - throw error; - } -} - -async function fetchAndSaveJSON(url, filePath) { - try { - const jsonData = await fetchJSON(url); - - await saveJSONToFile(filePath, jsonData); - } catch (error) { - console.error("❌ Operation failed:", error); - } -} - -// If the file was downloaded earlier, use it. Otherwise, download -// After n attempts, give up and throw an error -async function readPerformanceJSON( - filePath, - encoding, - maxAttempts = 3, - attempt = 0 -) { - if (attempt === maxAttempts) - throw new Error( - `Reading performance JSON failed after ${attempt} attempts. Check download URL, file availability on that URL, and local filepath` - ); - - try { - const data = await fs.readFile(filePath, encoding); - - return data; - } catch (error) { - if (error.code === "ENOENT") { - console.log( - `File not found. Downloading... (Attempt ${attempt + 1}/${maxAttempts})` - ); - await fetchAndSaveJSON(JSON_URL, filePath); - - return await readPerformanceJSON( - filePath, - encoding, - maxAttempts, - attempt + 1 - ); - } else { - console.error("Error reading file:", error); - throw error; // Re-throw to avoid silent failures - } - } -} - -const measureExecTime = (fn) => { - const startTime = performance.now(); - - fn(); - - const endTime = performance.now(); - - console.log("Time: ", endTime - startTime); -}; - -const runTests = (data) => { - measureExecTime(() => { - console.log("___________"); - console.log("Performance test. One-way"); - JSONParse(data); - }); - - measureExecTime(() => { - console.log("___________"); - console.log("Performance test. Round-trip"); - JSONStringify(JSONParse(data)); - }); -}; - -async function main() { - const data = await readPerformanceJSON(JSON_LOCAL_FILEPATH, "utf8"); - - console.log("------ V2 performance tests ------"); - runTests(data); - - JSON.parse = imitateJSONParseWithoutContext; - - console.log("\n------ V1 (without context.source) performance tests ------"); - runTests(data); -} - -main(); diff --git a/sdks/nodejs/node_modules/json-with-bigint/__tests__/unit.cjs b/sdks/nodejs/node_modules/json-with-bigint/__tests__/unit.cjs deleted file mode 100644 index 6b5404c..0000000 --- a/sdks/nodejs/node_modules/json-with-bigint/__tests__/unit.cjs +++ /dev/null @@ -1,157 +0,0 @@ -// ------ Unit tests ------ - -const assert = require("assert"); -const { imitateJSONParseWithoutContext } = require("./helpers.cjs"); -const { JSONStringify, JSONParse } = require("../json-with-bigint.cjs"); - -const test1JSON = `{"zero":9007199254740998,"one":-42,"two":-9007199254740998,"test":["He was\\":[-23432432432434324324324324]",111,9007199254740998,{"test2":-9007199254740998}],"test3":["He was:[-23432432432434324324324324]",111,9007199254740998,{"test2":-9007199254740998,"float":1.9007199254740998,"float2":0.1,"float3":2.9007199254740996,"int":1,"int2":3243243432432434324324324}],"float4":[1.9007199254740998,1111111111111111111111111111111111,0.1,1,54354654654654654654656546546546546]}`; -const test1Obj = { - zero: 9007199254740998n, - one: -42, - two: -9007199254740998n, - test: [ - 'He was":[-23432432432434324324324324]', - 111, - 9007199254740998n, - { test2: -9007199254740998n }, - ], - test3: [ - "He was:[-23432432432434324324324324]", - 111, - 9007199254740998n, - { - test2: -9007199254740998n, - float: 1.9007199254740998, - float2: 0.1, - float3: 2.9007199254740996, - int: 1, - int2: 3243243432432434324324324n, - }, - ], - float4: [ - 1.9007199254740998, - 1111111111111111111111111111111111n, - 0.1, - 1, - 54354654654654654654656546546546546n, - ], -}; - -const test2JSON = `{ - "test": [ - { - "ID": 1035342667379599058, - "Timestamp": "2022-09-13 22:21:25", - "Contents": "broken example message", - "Contents2": "broken example 1035342667379599058 message", - "Contents3": "broken example [1035342667379599058, 1035342667379599058] message", - "Attachments": "", - "BreakingValue": 54354654654654654654656546546546546 - }, - 1035342667379599058, - -1.1035342667379599058, - 1035342667379599058 - ], - "test2": { - "1035342667379599058": 1035342667379599058 - } -}`; -// Special case, because native JSON.parse strips \n and whitespaces. -// So technically, a true round-trip operation (including all spaces, etc.) is not possible in the case of pretty JSON without writing your own full JSON.parse implementation for this particular case. -// In practice, though, it shouldn't cause any problems, because data will work fine even in that case, and if the backend expects a prettified JSON, you can just prettify it before sending it. -const test2TersedJSON = `{"test":[{"ID":1035342667379599058,"Timestamp":"2022-09-13 22:21:25","Contents":"broken example message","Contents2":"broken example 1035342667379599058 message","Contents3":"broken example [1035342667379599058, 1035342667379599058] message","Attachments":"","BreakingValue":54354654654654654654656546546546546},1035342667379599058,-1.10353426673796,1035342667379599058],"test2":{"1035342667379599058":1035342667379599058}}`; -const test2Obj = { - test: [ - { - ID: 1035342667379599058n, - Timestamp: "2022-09-13 22:21:25", - Contents: "broken example message", - Contents2: "broken example 1035342667379599058 message", - Contents3: - "broken example [1035342667379599058, 1035342667379599058] message", - Attachments: "", - BreakingValue: 54354654654654654654656546546546546n, - }, - 1035342667379599058n, - -1.10353426673796, - 1035342667379599058n, - ], - test2: { "1035342667379599058": 1035342667379599058n }, -}; - -const test3JSON = `{"items":[{"message":"some text 17365091955960356025, some text"}]}`; -const test3Obj = { - items: [{ message: "some text 17365091955960356025, some text" }], -}; - -const test4JSON = `9007199254740998`; -const test4Obj = 9007199254740998n; - -const test5JSON = `[9007199254740998,[9007199254740998],9007199254740998]`; -const test5Obj = [9007199254740998n, [9007199254740998n], 9007199254740998n]; - -const test6JSON = `[9007199254740998]`; -const test6Obj = [9007199254740998n]; - -const test7JSON = `["0a","1b","9n","9nn",90071992547409981111,"90071992547409981111.5n"]`; -const test7Obj = [ - "0a", - "1b", - "9n", - "9nn", - 90071992547409981111n, - "90071992547409981111.5n", -]; - -const test8Obj = { uid: BigInt("1308537228663099396") }; -const test8JSON = '{\n "uid": 1308537228663099396\n}'; - -const runTests = () => { - assert.deepStrictEqual(JSONParse(test1JSON), test1Obj); - console.log("1 test passed"); - assert.deepStrictEqual(JSONStringify(JSONParse(test1JSON)), test1JSON); - console.log("1 test round-trip passed"); - - assert.deepStrictEqual(JSONParse(test2JSON), test2Obj); - console.log("2 test passed"); - assert.deepStrictEqual(JSONStringify(JSONParse(test2JSON)), test2TersedJSON); - console.log("2 test round-trip passed"); - - assert.deepStrictEqual(JSONParse(test3JSON), test3Obj); - console.log("3 test passed"); - assert.deepStrictEqual(JSONStringify(JSONParse(test3JSON)), test3JSON); - console.log("3 test round-trip passed"); - - assert.deepStrictEqual(JSONParse(test4JSON), test4Obj); - console.log("4 test passed"); - assert.deepStrictEqual(JSONStringify(JSONParse(test4JSON)), test4JSON); - console.log("4 test round-trip passed"); - - assert.deepStrictEqual(JSONParse(test5JSON), test5Obj); - console.log("5 test passed"); - assert.deepStrictEqual(JSONStringify(JSONParse(test5JSON)), test5JSON); - console.log("5 test round-trip passed"); - - assert.deepStrictEqual(JSONParse(test6JSON), test6Obj); - console.log("6 test passed"); - assert.deepStrictEqual(JSONStringify(JSONParse(test6JSON)), test6JSON); - console.log("6 test round-trip passed"); - - assert.deepStrictEqual(JSONParse(test7JSON), test7Obj); - console.log("7 test passed"); - assert.deepStrictEqual(JSONStringify(JSONParse(test7JSON)), test7JSON); - console.log("7 test round-trip passed"); - - assert.deepStrictEqual(JSONStringify(test8Obj, null, 2), test8JSON); - console.log("8 test passed"); - assert.deepStrictEqual(JSONParse(JSONStringify(test8Obj, null, 2)), test8Obj); - console.log("8 test round-trip passed"); -}; - -console.log("------ V2 unit tests ------"); -runTests(); - -JSON.parse = imitateJSONParseWithoutContext; - -console.log("\n------ V1 (without context.source) unit tests ------"); -runTests(); diff --git a/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.cjs b/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.cjs deleted file mode 100644 index ae16599..0000000 --- a/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.cjs +++ /dev/null @@ -1,141 +0,0 @@ -const noiseValue = /^-?\d+n+$/; // Noise - strings that match the custom format before being converted to it -const originalStringify = JSON.stringify; -const originalParse = JSON.parse; - -/* - Function to serialize value to a JSON string. - Converts BigInt values to a custom format (strings with digits and "n" at the end) and then converts them to proper big integers in a JSON string. -*/ -const JSONStringify = (value, replacer, space) => { - if ("rawJSON" in JSON) { - return originalStringify( - value, - (key, value) => { - if (typeof value === "bigint") return JSON.rawJSON(value.toString()); - - if (typeof replacer === "function") return replacer(key, value); - - if (Array.isArray(replacer) && replacer.includes(key)) return value; - - return value; - }, - space - ); - } - - if (!value) return originalStringify(value, replacer, space); - - const bigInts = /([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g; - const noise = /([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g; - const convertedToCustomJSON = originalStringify( - value, - (key, value) => { - const isNoise = - typeof value === "string" && Boolean(value.match(noiseValue)); - - if (isNoise) return value.toString() + "n"; // Mark noise values with additional "n" to offset the deletion of one "n" during the processing - - if (typeof value === "bigint") return value.toString() + "n"; - - if (typeof replacer === "function") return replacer(key, value); - - if (Array.isArray(replacer) && replacer.includes(key)) return value; - - return value; - }, - space - ); - const processedJSON = convertedToCustomJSON.replace(bigInts, "$1$2$3"); // Delete one "n" off the end of every BigInt value - const denoisedJSON = processedJSON.replace(noise, "$1$2$3"); // Remove one "n" off the end of every noisy string - - return denoisedJSON; -}; - -/* - Function to check if the JSON.parse's context.source feature is supported. -*/ -const isContextSourceSupported = () => - JSON.parse("1", (_, __, context) => !!context && context.source === "1"); - -/* - Faster (2x) and simpler function to parse JSON. - Based on JSON.parse's context.source feature, which is not universally available now. - Does not support the legacy custom format, used in the first version of this library. -*/ -const JSONParseV2 = (text, reviver) => { - const intRegex = /^-?\d+$/; - - return JSON.parse(text, (key, value, context) => { - const isBigNumber = - typeof value === "number" && - (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER); - const isInt = intRegex.test(context.source); - const isBigInt = isBigNumber && isInt; - - if (isBigInt) return BigInt(context.source); - - if (typeof reviver !== "function") return value; - - return reviver(key, value, context); - }); -}; - -/* - Function to parse JSON. - If JSON has number values greater than Number.MAX_SAFE_INTEGER, we convert those values to a custom format, then parse them to BigInt values. - Other types of values are not affected and parsed as native JSON.parse() would parse them. -*/ -const JSONParse = (text, reviver) => { - if (!text) return originalParse(text, reviver); - - if (isContextSourceSupported()) return JSONParseV2(text, reviver); // Shortcut to a faster (2x) and simpler version - - const MAX_INT = Number.MAX_SAFE_INTEGER.toString(); - const MAX_DIGITS = MAX_INT.length; - const stringsOrLargeNumbers = - /"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g; - const noiseValueWithQuotes = /^"-?\d+n+"$/; // Noise - strings that match the custom format before being converted to it - const customFormat = /^-?\d+n$/; - - // Find and mark big numbers with "n" - const serializedData = text.replace( - stringsOrLargeNumbers, - (text, digits, fractional, exponential) => { - const isString = text[0] === '"'; - const isNoise = isString && Boolean(text.match(noiseValueWithQuotes)); - - if (isNoise) return text.substring(0, text.length - 1) + 'n"'; // Mark noise values with additional "n" to offset the deletion of one "n" during the processing - - const isFractionalOrExponential = fractional || exponential; - const isLessThanMaxSafeInt = - digits && - (digits.length < MAX_DIGITS || - (digits.length === MAX_DIGITS && digits <= MAX_INT)); // With a fixed number of digits, we can correctly use lexicographical comparison to do a numeric comparison - - if (isString || isFractionalOrExponential || isLessThanMaxSafeInt) - return text; - - return '"' + text + 'n"'; - } - ); - - // Convert marked big numbers to BigInt - return originalParse(serializedData, (key, value, context) => { - const isCustomFormatBigInt = - typeof value === "string" && Boolean(value.match(customFormat)); - - if (isCustomFormatBigInt) - return BigInt(value.substring(0, value.length - 1)); - - const isNoiseValue = - typeof value === "string" && Boolean(value.match(noiseValue)); - - if (isNoiseValue) return value.substring(0, value.length - 1); // Remove one "n" off the end of the noisy string - - if (typeof reviver !== "function") return value; - - return reviver(key, value, context); - }); -}; - -module.exports = { JSONStringify, JSONParse }; diff --git a/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.d.cts b/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.d.cts deleted file mode 100644 index 46b78f7..0000000 --- a/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.d.cts +++ /dev/null @@ -1,3 +0,0 @@ -export const JSONStringify: typeof JSON.stringify; - -export const JSONParse: typeof JSON.parse; diff --git a/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.d.ts b/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.d.ts deleted file mode 100644 index 46b78f7..0000000 --- a/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const JSONStringify: typeof JSON.stringify; - -export const JSONParse: typeof JSON.parse; diff --git a/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.js b/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.js deleted file mode 100644 index d961537..0000000 --- a/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.js +++ /dev/null @@ -1,139 +0,0 @@ -const noiseValue = /^-?\d+n+$/; // Noise - strings that match the custom format before being converted to it -const originalStringify = JSON.stringify; -const originalParse = JSON.parse; - -/* - Function to serialize value to a JSON string. - Converts BigInt values to a custom format (strings with digits and "n" at the end) and then converts them to proper big integers in a JSON string. -*/ -export const JSONStringify = (value, replacer, space) => { - if ("rawJSON" in JSON) { - return originalStringify( - value, - (key, value) => { - if (typeof value === "bigint") return JSON.rawJSON(value.toString()); - - if (typeof replacer === "function") return replacer(key, value); - - if (Array.isArray(replacer) && replacer.includes(key)) return value; - - return value; - }, - space - ); - } - - if (!value) return originalStringify(value, replacer, space); - - const bigInts = /([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g; - const noise = /([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g; - const convertedToCustomJSON = originalStringify( - value, - (key, value) => { - const isNoise = - typeof value === "string" && Boolean(value.match(noiseValue)); - - if (isNoise) return value.toString() + "n"; // Mark noise values with additional "n" to offset the deletion of one "n" during the processing - - if (typeof value === "bigint") return value.toString() + "n"; - - if (typeof replacer === "function") return replacer(key, value); - - if (Array.isArray(replacer) && replacer.includes(key)) return value; - - return value; - }, - space - ); - const processedJSON = convertedToCustomJSON.replace(bigInts, "$1$2$3"); // Delete one "n" off the end of every BigInt value - const denoisedJSON = processedJSON.replace(noise, "$1$2$3"); // Remove one "n" off the end of every noisy string - - return denoisedJSON; -}; - -/* - Function to check if the JSON.parse's context.source feature is supported. -*/ -const isContextSourceSupported = () => - JSON.parse("1", (_, __, context) => !!context && context.source === "1"); - -/* - Faster (2x) and simpler function to parse JSON. - Based on JSON.parse's context.source feature, which is not universally available now. - Does not support the legacy custom format, used in the first version of this library. -*/ -const JSONParseV2 = (text, reviver) => { - const intRegex = /^-?\d+$/; - - return JSON.parse(text, (key, value, context) => { - const isBigNumber = - typeof value === "number" && - (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER); - const isInt = intRegex.test(context.source); - const isBigInt = isBigNumber && isInt; - - if (isBigInt) return BigInt(context.source); - - if (typeof reviver !== "function") return value; - - return reviver(key, value, context); - }); -}; - -/* - Function to parse JSON. - If JSON has number values greater than Number.MAX_SAFE_INTEGER, we convert those values to a custom format, then parse them to BigInt values. - Other types of values are not affected and parsed as native JSON.parse() would parse them. -*/ -export const JSONParse = (text, reviver) => { - if (!text) return originalParse(text, reviver); - - if (isContextSourceSupported()) return JSONParseV2(text, reviver); // Shortcut to a faster (2x) and simpler version - - const MAX_INT = Number.MAX_SAFE_INTEGER.toString(); - const MAX_DIGITS = MAX_INT.length; - const stringsOrLargeNumbers = - /"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g; - const noiseValueWithQuotes = /^"-?\d+n+"$/; // Noise - strings that match the custom format before being converted to it - const customFormat = /^-?\d+n$/; - - // Find and mark big numbers with "n" - const serializedData = text.replace( - stringsOrLargeNumbers, - (text, digits, fractional, exponential) => { - const isString = text[0] === '"'; - const isNoise = isString && Boolean(text.match(noiseValueWithQuotes)); - - if (isNoise) return text.substring(0, text.length - 1) + 'n"'; // Mark noise values with additional "n" to offset the deletion of one "n" during the processing - - const isFractionalOrExponential = fractional || exponential; - const isLessThanMaxSafeInt = - digits && - (digits.length < MAX_DIGITS || - (digits.length === MAX_DIGITS && digits <= MAX_INT)); // With a fixed number of digits, we can correctly use lexicographical comparison to do a numeric comparison - - if (isString || isFractionalOrExponential || isLessThanMaxSafeInt) - return text; - - return '"' + text + 'n"'; - } - ); - - // Convert marked big numbers to BigInt - return originalParse(serializedData, (key, value, context) => { - const isCustomFormatBigInt = - typeof value === "string" && Boolean(value.match(customFormat)); - - if (isCustomFormatBigInt) - return BigInt(value.substring(0, value.length - 1)); - - const isNoiseValue = - typeof value === "string" && Boolean(value.match(noiseValue)); - - if (isNoiseValue) return value.substring(0, value.length - 1); // Remove one "n" off the end of the noisy string - - if (typeof reviver !== "function") return value; - - return reviver(key, value, context); - }); -}; diff --git a/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.min.js b/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.min.js deleted file mode 100644 index 26a263a..0000000 --- a/sdks/nodejs/node_modules/json-with-bigint/json-with-bigint.min.js +++ /dev/null @@ -1 +0,0 @@ -const noiseValue=/^-?\d+n+$/,originalStringify=JSON.stringify,originalParse=JSON.parse;export const JSONStringify=(n,r,t)=>{if("rawJSON"in JSON)return originalStringify(n,((n,t)=>"bigint"==typeof t?JSON.rawJSON(t.toString()):"function"==typeof r?r(n,t):(Array.isArray(r)&&r.includes(n),t)),t);if(!n)return originalStringify(n,r,t);const e=originalStringify(n,((n,t)=>"string"==typeof t&&Boolean(t.match(noiseValue))||"bigint"==typeof t?t.toString()+"n":"function"==typeof r?r(n,t):(Array.isArray(r)&&r.includes(n),t)),t);return e.replace(/([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,"$1$2$3").replace(/([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,"$1$2$3")};const isContextSourceSupported=()=>JSON.parse("1",((n,r,t)=>!!t&&"1"===t.source)),JSONParseV2=(n,r)=>{const t=/^-?\d+$/;return JSON.parse(n,((n,e,i)=>{const o="number"==typeof e&&(e>Number.MAX_SAFE_INTEGER||e{if(!n)return originalParse(n,r);if(JSON.parse("1",((n,r,t)=>!!t&&"1"===t.source)))return JSONParseV2(n,r);const t=Number.MAX_SAFE_INTEGER.toString(),e=t.length,i=/^"-?\d+n+"$/,o=/^-?\d+n$/,s=n.replace(/"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,((n,r,o,s)=>{const a='"'===n[0];if(a&&Boolean(n.match(i)))return n.substring(0,n.length-1)+'n"';const g=o||s,u=r&&(r.length{if("string"==typeof t&&Boolean(t.match(o)))return BigInt(t.substring(0,t.length-1));return"string"==typeof t&&Boolean(t.match(noiseValue))?t.substring(0,t.length-1):"function"!=typeof r?t:r(n,t,e)}))}; \ No newline at end of file diff --git a/sdks/nodejs/node_modules/json-with-bigint/package.json b/sdks/nodejs/node_modules/json-with-bigint/package.json deleted file mode 100644 index 64ab079..0000000 --- a/sdks/nodejs/node_modules/json-with-bigint/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "json-with-bigint", - "version": "3.5.3", - "description": "JS library that allows you to easily serialize and deserialize data with BigInt values", - "type": "module", - "types": "./json-with-bigint.d.ts", - "exports": { - "import": "./json-with-bigint.js", - "require": "./json-with-bigint.cjs" - }, - "scripts": { - "performance": "node __tests__/performance.cjs", - "unit": "node __tests__/unit.cjs" - }, - "repository": { - "type": "git", - "url": "https://github.com/Ivan-Korolenko/json-with-bigint" - }, - "keywords": [ - "JSON", - "BigInt", - "js", - "ts", - "library" - ], - "author": "Ivan Korolenko ", - "license": "MIT" -} diff --git a/sdks/nodejs/node_modules/ms/index.js b/sdks/nodejs/node_modules/ms/index.js deleted file mode 100644 index ea734fb..0000000 --- a/sdks/nodejs/node_modules/ms/index.js +++ /dev/null @@ -1,162 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var w = d * 7; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function (val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isFinite(val)) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'weeks': - case 'week': - case 'w': - return n * w; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return Math.round(ms / d) + 'd'; - } - if (msAbs >= h) { - return Math.round(ms / h) + 'h'; - } - if (msAbs >= m) { - return Math.round(ms / m) + 'm'; - } - if (msAbs >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return plural(ms, msAbs, d, 'day'); - } - if (msAbs >= h) { - return plural(ms, msAbs, h, 'hour'); - } - if (msAbs >= m) { - return plural(ms, msAbs, m, 'minute'); - } - if (msAbs >= s) { - return plural(ms, msAbs, s, 'second'); - } - return ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); -} diff --git a/sdks/nodejs/node_modules/ms/license.md b/sdks/nodejs/node_modules/ms/license.md deleted file mode 100644 index fa5d39b..0000000 --- a/sdks/nodejs/node_modules/ms/license.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Vercel, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/ms/package.json b/sdks/nodejs/node_modules/ms/package.json deleted file mode 100644 index 4997189..0000000 --- a/sdks/nodejs/node_modules/ms/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "ms", - "version": "2.1.3", - "description": "Tiny millisecond conversion utility", - "repository": "vercel/ms", - "main": "./index", - "files": [ - "index.js" - ], - "scripts": { - "precommit": "lint-staged", - "lint": "eslint lib/* bin/*", - "test": "mocha tests.js" - }, - "eslintConfig": { - "extends": "eslint:recommended", - "env": { - "node": true, - "es6": true - } - }, - "lint-staged": { - "*.js": [ - "npm run lint", - "prettier --single-quote --write", - "git add" - ] - }, - "license": "MIT", - "devDependencies": { - "eslint": "4.18.2", - "expect.js": "0.3.1", - "husky": "0.14.3", - "lint-staged": "5.0.0", - "mocha": "4.0.1", - "prettier": "2.0.5" - } -} diff --git a/sdks/nodejs/node_modules/ms/readme.md b/sdks/nodejs/node_modules/ms/readme.md deleted file mode 100644 index 0fc1abb..0000000 --- a/sdks/nodejs/node_modules/ms/readme.md +++ /dev/null @@ -1,59 +0,0 @@ -# ms - -![CI](https://github.com/vercel/ms/workflows/CI/badge.svg) - -Use this package to easily convert various time formats to milliseconds. - -## Examples - -```js -ms('2 days') // 172800000 -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2.5 hrs') // 9000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('1y') // 31557600000 -ms('100') // 100 -ms('-3 days') // -259200000 -ms('-1h') // -3600000 -ms('-200') // -200 -``` - -### Convert from Milliseconds - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(-3 * 60000) // "-3m" -ms(ms('10 hours')) // "10h" -``` - -### Time Format Written-Out - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(-3 * 60000, { long: true }) // "-3 minutes" -ms(ms('10 hours'), { long: true }) // "10 hours" -``` - -## Features - -- Works both in [Node.js](https://nodejs.org) and in the browser -- If a number is supplied to `ms`, a string with a unit is returned -- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`) -- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned - -## Related Packages - -- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time. - -## Caught a Bug? - -1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device -2. Link the package to the global module directory: `npm link` -3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms! - -As always, you can run the tests using: `npm test` diff --git a/sdks/nodejs/node_modules/mute-stream/LICENSE b/sdks/nodejs/node_modules/mute-stream/LICENSE deleted file mode 100644 index 19129e3..0000000 --- a/sdks/nodejs/node_modules/mute-stream/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, 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. diff --git a/sdks/nodejs/node_modules/mute-stream/README.md b/sdks/nodejs/node_modules/mute-stream/README.md deleted file mode 100644 index 42ff9fb..0000000 --- a/sdks/nodejs/node_modules/mute-stream/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# mute-stream - -Bytes go in, but they don't come out (when muted). - -This is a basic pass-through stream, but when muted, the bytes are -silently dropped, rather than being passed through. - -## Usage - -```javascript -const MuteStream = require('mute-stream') - -const ms = new MuteStream(options) - -ms.pipe(process.stdout) -ms.write('foo') // writes 'foo' to stdout -ms.mute() -ms.write('bar') // does not write 'bar' -ms.unmute() -ms.write('baz') // writes 'baz' to stdout - -// can also be used to mute incoming data -const ms = new MuteStream() -input.pipe(ms) - -ms.on('data', function (c) { - console.log('data: ' + c) -}) - -input.emit('data', 'foo') // logs 'foo' -ms.mute() -input.emit('data', 'bar') // does not log 'bar' -ms.unmute() -input.emit('data', 'baz') // logs 'baz' -``` - -## Options - -All options are optional. - -* `replace` Set to a string to replace each character with the - specified string when muted. (So you can show `****` instead of the - password, for example.) - -* `prompt` If you are using a replacement char, and also using a - prompt with a readline stream (as for a `Password: *****` input), - then specify what the prompt is so that backspace will work - properly. Otherwise, pressing backspace will overwrite the prompt - with the replacement character, which is weird. - -## ms.mute() - -Set `muted` to `true`. Turns `.write()` into a no-op. - -## ms.unmute() - -Set `muted` to `false` - -## ms.isTTY - -True if the pipe destination is a TTY, or if the incoming pipe source is -a TTY. - -## Other stream methods... - -The other standard readable and writable stream methods are all -available. The MuteStream object acts as a facade to its pipe source -and destination. diff --git a/sdks/nodejs/node_modules/mute-stream/lib/index.js b/sdks/nodejs/node_modules/mute-stream/lib/index.js deleted file mode 100644 index 368f727..0000000 --- a/sdks/nodejs/node_modules/mute-stream/lib/index.js +++ /dev/null @@ -1,142 +0,0 @@ -const Stream = require('stream') - -class MuteStream extends Stream { - #isTTY = null - - constructor (opts = {}) { - super(opts) - this.writable = this.readable = true - this.muted = false - this.on('pipe', this._onpipe) - this.replace = opts.replace - - // For readline-type situations - // This much at the start of a line being redrawn after a ctrl char - // is seen (such as backspace) won't be redrawn as the replacement - this._prompt = opts.prompt || null - this._hadControl = false - } - - #destSrc (key, def) { - if (this._dest) { - return this._dest[key] - } - if (this._src) { - return this._src[key] - } - return def - } - - #proxy (method, ...args) { - if (typeof this._dest?.[method] === 'function') { - this._dest[method](...args) - } - if (typeof this._src?.[method] === 'function') { - this._src[method](...args) - } - } - - get isTTY () { - if (this.#isTTY !== null) { - return this.#isTTY - } - return this.#destSrc('isTTY', false) - } - - // basically just get replace the getter/setter with a regular value - set isTTY (val) { - this.#isTTY = val - } - - get rows () { - return this.#destSrc('rows') - } - - get columns () { - return this.#destSrc('columns') - } - - mute () { - this.muted = true - } - - unmute () { - this.muted = false - } - - _onpipe (src) { - this._src = src - } - - pipe (dest, options) { - this._dest = dest - return super.pipe(dest, options) - } - - pause () { - if (this._src) { - return this._src.pause() - } - } - - resume () { - if (this._src) { - return this._src.resume() - } - } - - write (c) { - if (this.muted) { - if (!this.replace) { - return true - } - // eslint-disable-next-line no-control-regex - if (c.match(/^\u001b/)) { - if (c.indexOf(this._prompt) === 0) { - c = c.slice(this._prompt.length) - c = c.replace(/./g, this.replace) - c = this._prompt + c - } - this._hadControl = true - return this.emit('data', c) - } else { - if (this._prompt && this._hadControl && - c.indexOf(this._prompt) === 0) { - this._hadControl = false - this.emit('data', this._prompt) - c = c.slice(this._prompt.length) - } - c = c.toString().replace(/./g, this.replace) - } - } - this.emit('data', c) - } - - end (c) { - if (this.muted) { - if (c && this.replace) { - c = c.toString().replace(/./g, this.replace) - } else { - c = null - } - } - if (c) { - this.emit('data', c) - } - this.emit('end') - } - - destroy (...args) { - return this.#proxy('destroy', ...args) - } - - destroySoon (...args) { - return this.#proxy('destroySoon', ...args) - } - - close (...args) { - return this.#proxy('close', ...args) - } -} - -module.exports = MuteStream diff --git a/sdks/nodejs/node_modules/mute-stream/package.json b/sdks/nodejs/node_modules/mute-stream/package.json deleted file mode 100644 index 25e0af4..0000000 --- a/sdks/nodejs/node_modules/mute-stream/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "mute-stream", - "version": "3.0.0", - "main": "lib/index.js", - "devDependencies": { - "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.27.1", - "tap": "^16.3.0" - }, - "scripts": { - "test": "tap", - "lint": "npm run eslint", - "postlint": "template-oss-check", - "template-oss-apply": "template-oss-apply --force", - "lintfix": "npm run eslint -- --fix", - "snap": "tap", - "posttest": "npm run lint", - "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\"" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/npm/mute-stream.git" - }, - "keywords": [ - "mute", - "stream", - "pipe" - ], - "author": "GitHub Inc.", - "license": "ISC", - "description": "Bytes go in, but they don't come out (when muted).", - "files": [ - "bin/", - "lib/" - ], - "tap": { - "statements": 70, - "branches": 60, - "functions": 81, - "lines": 70, - "nyc-arg": [ - "--exclude", - "tap-snapshots/**" - ] - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - }, - "templateOSS": { - "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.27.1", - "publish": true - } -} diff --git a/sdks/nodejs/node_modules/obug/LICENSE b/sdks/nodejs/node_modules/obug/LICENSE deleted file mode 100644 index 12eb148..0000000 --- a/sdks/nodejs/node_modules/obug/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -The MIT License (MIT) - -Copyright © 2025-PRESENT Kevin Deng (https://github.com/sxzz) -Copyright (c) 2014-2017 TJ Holowaychuk -Copyright (c) 2018-2021 Josh Junon - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/obug/README.md b/sdks/nodejs/node_modules/obug/README.md deleted file mode 100644 index e0bfb9a..0000000 --- a/sdks/nodejs/node_modules/obug/README.md +++ /dev/null @@ -1,106 +0,0 @@ -# obug - -[![npm version][npm-version-src]][npm-version-href] -[![npm downloads][npm-downloads-src]][npm-downloads-href] -[![Unit Test][unit-test-src]][unit-test-href] - -A lightweight JavaScript debugging utility, forked from [debug](https://www.npmjs.com/package/debug), featuring TypeScript and ESM support. - -> [!NOTE] -> obug v1 retains most of the compatibility with [debug](https://github.com/debug-js/debug), but drops support for older browsers and Node.js, making it a drop-in replacement. -> -> obug v2 refactors some API imports and usage for better support of ESM and TypeScript, easier customization, and an even smaller package size. - -## Key Differences from `debug` - -- ✨ Minimal footprint - - 7.7 kB package size - - 1.4 KB minified + gzipped for browsers -- 📦 Zero dependencies -- 📝 Full TypeScript support -- 🚀 Native ESM compatibility -- 🌐 Optimized for modern runtimes - - ES2015+ browsers - - Modern Node.js versions -- 🎨 Customizable formatting - -## Installation - -```bash -npm install obug -``` - -## Usage - -```ts -import { createDebug, disable, enable, enabled, namespaces } from 'obug' - -// Get the currently enabled namespaces -console.log(namespaces()) - -const debug = createDebug('my-namespace', { - // All options are optional - - useColors: true, // false, true, undefined for auto-detect - color: 2, // custom color - // custom formatArgs - formatArgs(args) {}, - formatters: {}, - // Node.js only - inspectOpts: {}, - - // custom log - log: console.log, -}) - -debug('This is a debug message') -console.log( - debug.namespace, // 'my-namespace' - debug.enabled, // Check if enabled - debug.useColors, // true - debug.color, // 2 - debug.formatArgs, // custom formatArgs - debug.formatters, // {} - debug.inspectOpts, // {} - debug.log, // implemented log function -) - -// Create a sub-namespace, and it will inherit options from the parent debugger -const sub = debug.extend('sub-namespace') -sub('This is a sub-namespace debug message') -console.log(sub.namespace) // 'my-namespace:sub-namespace' -``` - -## Original Authors - -As obug is a fork of debug with significant modifications, we would like to acknowledge the original authors: - -- TJ Holowaychuk -- Nathan Rajlich -- Andrew Rhyne -- Josh Junon - -## Sponsors - - - -## License - -[MIT](./LICENSE) License © 2025-PRESENT [Kevin Deng](https://github.com/sxzz) - -[The MIT License](./LICENSE) Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca> - -[The MIT License](./LICENSE) Copyright (c) 2018-2021 Josh Junon - - - -[npm-version-src]: https://img.shields.io/npm/v/obug.svg -[npm-version-href]: https://npmjs.com/package/obug -[npm-downloads-src]: https://img.shields.io/npm/dm/obug -[npm-downloads-href]: https://www.npmcharts.com/compare/obug?interval=30 -[unit-test-src]: https://github.com/sxzz/obug/actions/workflows/unit-test.yml/badge.svg -[unit-test-href]: https://github.com/sxzz/obug/actions/workflows/unit-test.yml diff --git a/sdks/nodejs/node_modules/obug/dist/browser.d.ts b/sdks/nodejs/node_modules/obug/dist/browser.d.ts deleted file mode 100644 index d0c8970..0000000 --- a/sdks/nodejs/node_modules/obug/dist/browser.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { a as Debugger, i as DebugOptions, n as enabled, o as Formatters, r as namespaces, s as InspectOptions, t as disable } from "./core.js"; - -//#region src/browser.d.ts -declare function createDebug(namespace: string, options?: DebugOptions): Debugger; -/** -* Enables a debug mode by namespaces. This can include modes -* separated by a colon and wildcards. -*/ -declare function enable(namespaces: string): void; -//#endregion -export { DebugOptions, Debugger, Formatters, InspectOptions, createDebug, disable, enable, enabled, namespaces }; \ No newline at end of file diff --git a/sdks/nodejs/node_modules/obug/dist/browser.js b/sdks/nodejs/node_modules/obug/dist/browser.js deleted file mode 100644 index 414ff7d..0000000 --- a/sdks/nodejs/node_modules/obug/dist/browser.js +++ /dev/null @@ -1,140 +0,0 @@ -import { a as namespaces, i as enabled, n as disable, o as humanize, r as enable$1, s as selectColor, t as createDebug$1 } from "./core.js"; -const colors = [ - "#0000CC", - "#0000FF", - "#0033CC", - "#0033FF", - "#0066CC", - "#0066FF", - "#0099CC", - "#0099FF", - "#00CC00", - "#00CC33", - "#00CC66", - "#00CC99", - "#00CCCC", - "#00CCFF", - "#3300CC", - "#3300FF", - "#3333CC", - "#3333FF", - "#3366CC", - "#3366FF", - "#3399CC", - "#3399FF", - "#33CC00", - "#33CC33", - "#33CC66", - "#33CC99", - "#33CCCC", - "#33CCFF", - "#6600CC", - "#6600FF", - "#6633CC", - "#6633FF", - "#66CC00", - "#66CC33", - "#9900CC", - "#9900FF", - "#9933CC", - "#9933FF", - "#99CC00", - "#99CC33", - "#CC0000", - "#CC0033", - "#CC0066", - "#CC0099", - "#CC00CC", - "#CC00FF", - "#CC3300", - "#CC3333", - "#CC3366", - "#CC3399", - "#CC33CC", - "#CC33FF", - "#CC6600", - "#CC6633", - "#CC9900", - "#CC9933", - "#CCCC00", - "#CCCC33", - "#FF0000", - "#FF0033", - "#FF0066", - "#FF0099", - "#FF00CC", - "#FF00FF", - "#FF3300", - "#FF3333", - "#FF3366", - "#FF3399", - "#FF33CC", - "#FF33FF", - "#FF6600", - "#FF6633", - "#FF9900", - "#FF9933", - "#FFCC00", - "#FFCC33" -]; -function formatArgs(diff, args) { - const { useColors } = this; - args[0] = `${(useColors ? "%c" : "") + this.namespace + (useColors ? " %c" : " ") + args[0] + (useColors ? "%c " : " ")}+${this.humanize(diff)}`; - if (!useColors) return; - const c = `color: ${this.color}`; - args.splice(1, 0, c, "color: inherit"); - let index = 0; - let lastC = 0; - args[0].replace(/%[a-z%]/gi, (match) => { - if (match === "%%") return; - index++; - if (match === "%c") lastC = index; - }); - args.splice(lastC, 0, c); -} -const log = console.debug || console.log || (() => {}); -const storage = localstorage(); -const defaultOptions = { - useColors: true, - formatArgs, - formatters: { j(v) { - try { - return JSON.stringify(v); - } catch (error) { - return `[UnexpectedJSONParseError]: ${error.message}`; - } - } }, - inspectOpts: {}, - humanize, - log -}; -function createDebug(namespace, options) { - var _ref; - const color = (_ref = options && options.color) !== null && _ref !== void 0 ? _ref : selectColor(colors, namespace); - return createDebug$1(namespace, Object.assign(defaultOptions, { color }, options)); -} -function localstorage() { - try { - return localStorage; - } catch (_unused) {} -} -function load() { - let r; - try { - r = storage.getItem("debug") || storage.getItem("DEBUG"); - } catch (_unused2) {} - if (!r && typeof process !== "undefined" && "env" in process) r = process.env.DEBUG; - return r || ""; -} -function save(namespaces$1) { - try { - if (namespaces$1) storage.setItem("debug", namespaces$1); - else storage.removeItem("debug"); - } catch (_unused3) {} -} -function enable(namespaces$1) { - save(namespaces$1); - enable$1(namespaces$1); -} -enable$1(load()); -export { createDebug, disable, enable, enabled, namespaces }; diff --git a/sdks/nodejs/node_modules/obug/dist/browser.min.js b/sdks/nodejs/node_modules/obug/dist/browser.min.js deleted file mode 100644 index 443a768..0000000 --- a/sdks/nodejs/node_modules/obug/dist/browser.min.js +++ /dev/null @@ -1 +0,0 @@ -function e(e){return e instanceof Error?e.stack||e.message:e}function t(e,t){let n=0;for(let e=0;e=1e3?`${(e/1e3).toFixed(1)}s`:`${e}ms`}let i=``;function a(){return i}function o(t,n){let r,a,s,c,l=(...t)=>{if(!l.enabled)return;let i=Date.now(),a=i-(r||i);r=i,t[0]=e(t[0]),typeof t[0]!=`string`&&t.unshift(`%O`);let o=0;t[0]=t[0].replace(/%([a-z%])/gi,(e,r)=>{if(e===`%%`)return`%`;o++;let i=n.formatters[r];if(typeof i==`function`){let n=t[o];e=i.call(l,n),t.splice(o,1),o--}return e}),n.formatArgs.call(l,a,t),l.log(...t)};return l.extend=function(e,t=`:`){return o(this.namespace+t+e,{useColors:this.useColors,color:this.color,formatArgs:this.formatArgs,formatters:this.formatters,inspectOpts:this.inspectOpts,log:this.log,humanize:this.humanize})},Object.assign(l,n),l.namespace=t,Object.defineProperty(l,`enabled`,{enumerable:!0,configurable:!1,get:()=>a==null?(s!==i&&(s=i,c=d(t)),c):a,set:e=>{a=e}}),l}let s=[],c=[];function l(e){i=e,s=[],c=[];let t=i.trim().replace(/\s+/g,`,`).split(`,`).filter(Boolean);for(let e of t)e[0]===`-`?c.push(e.slice(1)):s.push(e)}function u(){let e=[...s,...c.map(e=>`-${e}`)].join(`,`);return l(``),e}function d(e){for(let t of c)if(n(e,t))return!1;for(let t of s)if(n(e,t))return!0;return!1}const f=`#0000CC.#0000FF.#0033CC.#0033FF.#0066CC.#0066FF.#0099CC.#0099FF.#00CC00.#00CC33.#00CC66.#00CC99.#00CCCC.#00CCFF.#3300CC.#3300FF.#3333CC.#3333FF.#3366CC.#3366FF.#3399CC.#3399FF.#33CC00.#33CC33.#33CC66.#33CC99.#33CCCC.#33CCFF.#6600CC.#6600FF.#6633CC.#6633FF.#66CC00.#66CC33.#9900CC.#9900FF.#9933CC.#9933FF.#99CC00.#99CC33.#CC0000.#CC0033.#CC0066.#CC0099.#CC00CC.#CC00FF.#CC3300.#CC3333.#CC3366.#CC3399.#CC33CC.#CC33FF.#CC6600.#CC6633.#CC9900.#CC9933.#CCCC00.#CCCC33.#FF0000.#FF0033.#FF0066.#FF0099.#FF00CC.#FF00FF.#FF3300.#FF3333.#FF3366.#FF3399.#FF33CC.#FF33FF.#FF6600.#FF6633.#FF9900.#FF9933.#FFCC00.#FFCC33`.split(`.`);function p(e,t){let{useColors:n}=this;if(t[0]=`${(n?`%c`:``)+this.namespace+(n?` %c`:` `)+t[0]+(n?`%c `:` `)}+${this.humanize(e)}`,!n)return;let r=`color: ${this.color}`;t.splice(1,0,r,`color: inherit`);let i=0,a=0;t[0].replace(/%[a-z%]/gi,e=>{e!==`%%`&&(i++,e===`%c`&&(a=i))}),t.splice(a,0,r)}const m=console.debug||console.log||(()=>{}),h=v(),g={useColors:!0,formatArgs:p,formatters:{j(e){try{return JSON.stringify(e)}catch(e){return`[UnexpectedJSONParseError]: ${e.message}`}}},inspectOpts:{},humanize:r,log:m};function _(e,n){var r;let i=(r=n&&n.color)==null?t(f,e):r;return o(e,Object.assign(g,{color:i},n))}function v(){try{return localStorage}catch(e){}}function y(){let e;try{e=h.getItem(`debug`)||h.getItem(`DEBUG`)}catch(e){}return!e&&typeof process<`u`&&`env`in process&&(e=process.env.DEBUG),e||``}function b(e){try{e?h.setItem(`debug`,e):h.removeItem(`debug`)}catch(e){}}function x(e){b(e),l(e)}l(y());export{_ as createDebug,u as disable,x as enable,d as enabled,a as namespaces}; \ No newline at end of file diff --git a/sdks/nodejs/node_modules/obug/dist/core.d.ts b/sdks/nodejs/node_modules/obug/dist/core.d.ts deleted file mode 100644 index 61f80ae..0000000 --- a/sdks/nodejs/node_modules/obug/dist/core.d.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { InspectOptions } from "node:util"; - -//#region src/types.d.ts -interface InspectOptions$1 extends InspectOptions { - hideDate?: boolean; -} -/** -* Map of special "%n" handling functions, for the debug "format" argument. -* -* Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". -*/ -interface Formatters { - [formatter: string]: (this: Debugger, v: any) => string; -} -interface Debugger extends Required { - (formatter: any, ...args: any[]): void; - namespace: string; - enabled: boolean; - extend: (namespace: string, delimiter?: string) => Debugger; -} -interface DebugOptions { - useColors?: boolean; - color?: string | number; - formatArgs?: (this: Debugger, diff: number, args: [string, ...any[]]) => void; - formatters?: Formatters; - /** Node.js only */ - inspectOpts?: InspectOptions$1; - /** Humanize a duration in milliseconds */ - humanize?: (value: number) => string; - log?: (this: Debugger, ...args: any[]) => void; -} -//#endregion -//#region src/core.d.ts -/** -* Returns a string of the currently enabled debug namespaces. -*/ -declare function namespaces(): string; -/** -* Disable debug output. -*/ -declare function disable(): string; -/** -* Returns true if the given mode name is enabled, false otherwise. -*/ -declare function enabled(name: string): boolean; -//#endregion -export { Debugger as a, DebugOptions as i, enabled as n, Formatters as o, namespaces as r, InspectOptions$1 as s, disable as t }; \ No newline at end of file diff --git a/sdks/nodejs/node_modules/obug/dist/core.js b/sdks/nodejs/node_modules/obug/dist/core.js deleted file mode 100644 index db2abcd..0000000 --- a/sdks/nodejs/node_modules/obug/dist/core.js +++ /dev/null @@ -1,120 +0,0 @@ -function coerce(value) { - if (value instanceof Error) return value.stack || value.message; - return value; -} -function selectColor(colors, namespace) { - let hash = 0; - for (let i = 0; i < namespace.length; i++) { - hash = (hash << 5) - hash + namespace.charCodeAt(i); - hash |= 0; - } - return colors[Math.abs(hash) % colors.length]; -} -function matchesTemplate(search, template) { - let searchIndex = 0; - let templateIndex = 0; - let starIndex = -1; - let matchIndex = 0; - while (searchIndex < search.length) if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === "*")) if (template[templateIndex] === "*") { - starIndex = templateIndex; - matchIndex = searchIndex; - templateIndex++; - } else { - searchIndex++; - templateIndex++; - } - else if (starIndex !== -1) { - templateIndex = starIndex + 1; - matchIndex++; - searchIndex = matchIndex; - } else return false; - while (templateIndex < template.length && template[templateIndex] === "*") templateIndex++; - return templateIndex === template.length; -} -function humanize(value) { - if (value >= 1e3) return `${(value / 1e3).toFixed(1)}s`; - return `${value}ms`; -} -let globalNamespaces = ""; -function namespaces() { - return globalNamespaces; -} -function createDebug(namespace, options) { - let prevTime; - let enableOverride; - let namespacesCache; - let enabledCache; - const debug = (...args) => { - if (!debug.enabled) return; - const curr = Date.now(); - const diff = curr - (prevTime || curr); - prevTime = curr; - args[0] = coerce(args[0]); - if (typeof args[0] !== "string") args.unshift("%O"); - let index = 0; - args[0] = args[0].replace(/%([a-z%])/gi, (match, format) => { - if (match === "%%") return "%"; - index++; - const formatter = options.formatters[format]; - if (typeof formatter === "function") { - const value = args[index]; - match = formatter.call(debug, value); - args.splice(index, 1); - index--; - } - return match; - }); - options.formatArgs.call(debug, diff, args); - debug.log(...args); - }; - debug.extend = function(namespace$1, delimiter = ":") { - return createDebug(this.namespace + delimiter + namespace$1, { - useColors: this.useColors, - color: this.color, - formatArgs: this.formatArgs, - formatters: this.formatters, - inspectOpts: this.inspectOpts, - log: this.log, - humanize: this.humanize - }); - }; - Object.assign(debug, options); - debug.namespace = namespace; - Object.defineProperty(debug, "enabled", { - enumerable: true, - configurable: false, - get: () => { - if (enableOverride != null) return enableOverride; - if (namespacesCache !== globalNamespaces) { - namespacesCache = globalNamespaces; - enabledCache = enabled(namespace); - } - return enabledCache; - }, - set: (v) => { - enableOverride = v; - } - }); - return debug; -} -let names = []; -let skips = []; -function enable(namespaces$1) { - globalNamespaces = namespaces$1; - names = []; - skips = []; - const split = globalNamespaces.trim().replace(/\s+/g, ",").split(",").filter(Boolean); - for (const ns of split) if (ns[0] === "-") skips.push(ns.slice(1)); - else names.push(ns); -} -function disable() { - const namespaces$1 = [...names, ...skips.map((namespace) => `-${namespace}`)].join(","); - enable(""); - return namespaces$1; -} -function enabled(name) { - for (const skip of skips) if (matchesTemplate(name, skip)) return false; - for (const ns of names) if (matchesTemplate(name, ns)) return true; - return false; -} -export { namespaces as a, enabled as i, disable as n, humanize as o, enable as r, selectColor as s, createDebug as t }; diff --git a/sdks/nodejs/node_modules/obug/dist/node.d.ts b/sdks/nodejs/node_modules/obug/dist/node.d.ts deleted file mode 100644 index 2d674e5..0000000 --- a/sdks/nodejs/node_modules/obug/dist/node.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { a as Debugger, i as DebugOptions, n as enabled, o as Formatters, r as namespaces, s as InspectOptions, t as disable } from "./core.js"; - -//#region src/node.d.ts -declare function createDebug(namespace: string, options?: DebugOptions): Debugger; -/** -* Enables a debug mode by namespaces. This can include modes -* separated by a colon and wildcards. -*/ -declare function enable(namespaces: string): void; -//#endregion -export { DebugOptions, Debugger, Formatters, InspectOptions, createDebug, disable, enable, enabled, namespaces }; \ No newline at end of file diff --git a/sdks/nodejs/node_modules/obug/dist/node.js b/sdks/nodejs/node_modules/obug/dist/node.js deleted file mode 100644 index 4ad74a1..0000000 --- a/sdks/nodejs/node_modules/obug/dist/node.js +++ /dev/null @@ -1,151 +0,0 @@ -import { a as namespaces, i as enabled, n as disable, o as humanize, r as enable$1, s as selectColor, t as createDebug$1 } from "./core.js"; -import { isatty } from "node:tty"; -import { formatWithOptions, inspect } from "node:util"; -const colors = process.stderr.getColorDepth && process.stderr.getColorDepth() > 2 ? [ - 20, - 21, - 26, - 27, - 32, - 33, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 56, - 57, - 62, - 63, - 68, - 69, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 92, - 93, - 98, - 99, - 112, - 113, - 128, - 129, - 134, - 135, - 148, - 149, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 178, - 179, - 184, - 185, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 214, - 215, - 220, - 221 -] : [ - 6, - 2, - 3, - 4, - 5, - 1 -]; -const inspectOpts = Object.keys(process.env).filter((key) => /^debug_/i.test(key)).reduce((obj, key) => { - const prop = key.slice(6).toLowerCase().replace(/_([a-z])/g, (_, k) => k.toUpperCase()); - let value = process.env[key]; - const lowerCase = typeof value === "string" && value.toLowerCase(); - if (value === "null") value = null; - else if (lowerCase === "yes" || lowerCase === "on" || lowerCase === "true" || lowerCase === "enabled") value = true; - else if (lowerCase === "no" || lowerCase === "off" || lowerCase === "false" || lowerCase === "disabled") value = false; - else value = Number(value); - obj[prop] = value; - return obj; -}, {}); -function useColors() { - return "colors" in inspectOpts ? Boolean(inspectOpts.colors) : isatty(process.stderr.fd); -} -function getDate() { - if (inspectOpts.hideDate) return ""; - return `${(/* @__PURE__ */ new Date()).toISOString()} `; -} -function formatArgs(diff, args) { - const { namespace: name, useColors: useColors$1 } = this; - if (useColors$1) { - const c = this.color; - const colorCode = `\u001B[3${c < 8 ? c : `8;5;${c}`}`; - const prefix = ` ${colorCode};1m${name} \u001B[0m`; - args[0] = prefix + args[0].split("\n").join(`\n${prefix}`); - args.push(`${colorCode}m+${this.humanize(diff)}\u001B[0m`); - } else args[0] = `${getDate()}${name} ${args[0]}`; -} -function log(...args) { - process.stderr.write(`${formatWithOptions(this.inspectOpts, ...args)}\n`); -} -const defaultOptions = { - useColors: useColors(), - formatArgs, - formatters: { - o(v) { - this.inspectOpts.colors = this.useColors; - return inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" "); - }, - O(v) { - this.inspectOpts.colors = this.useColors; - return inspect(v, this.inspectOpts); - } - }, - inspectOpts, - log, - humanize -}; -function createDebug(namespace, options) { - var _ref; - const color = (_ref = options && options.color) !== null && _ref !== void 0 ? _ref : selectColor(colors, namespace); - return createDebug$1(namespace, Object.assign(defaultOptions, { color }, options)); -} -function save(namespaces$1) { - if (namespaces$1) process.env.DEBUG = namespaces$1; - else delete process.env.DEBUG; -} -function enable(namespaces$1) { - save(namespaces$1); - enable$1(namespaces$1); -} -enable$1(process.env.DEBUG || ""); -export { createDebug, disable, enable, enabled, namespaces }; diff --git a/sdks/nodejs/node_modules/obug/package.json b/sdks/nodejs/node_modules/obug/package.json deleted file mode 100644 index 651d753..0000000 --- a/sdks/nodejs/node_modules/obug/package.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "name": "obug", - "version": "2.1.1", - "description": "A lightweight JavaScript debugging utility, forked from debug, featuring TypeScript and ESM support.", - "type": "module", - "license": "MIT", - "homepage": "https://github.com/sxzz/obug#readme", - "bugs": { - "url": "https://github.com/sxzz/obug/issues" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/sxzz/obug.git" - }, - "author": "Kevin Deng ", - "funding": [ - "https://github.com/sponsors/sxzz", - "https://opencollective.com/debug" - ], - "files": [ - "dist" - ], - "main": "./dist/node.js", - "module": "./dist/node.js", - "types": "./dist/browser.d.ts", - "exports": { - ".": { - "browser": "./dist/browser.js", - "default": "./dist/node.js" - }, - "./package.json": "./package.json" - }, - "unpkg": "./dist/browser.min.js", - "jsdelivr": "./dist/browser.min.js", - "publishConfig": { - "access": "public" - }, - "devDependencies": { - "@sxzz/eslint-config": "^7.3.0", - "@sxzz/prettier-config": "^2.2.5", - "@types/debug": "^4.1.12", - "@types/node": "^24.10.1", - "@vitest/browser-playwright": "^4.0.10", - "@vitest/coverage-v8": "^4.0.10", - "bumpp": "^10.3.1", - "debug": "^4.4.3", - "eslint": "^9.39.1", - "playwright": "^1.56.1", - "prettier": "^3.6.2", - "tsdown": "^0.16.5", - "typescript": "^5.9.3", - "vite": "^7.2.2", - "vitest": "^4.0.10" - }, - "prettier": "@sxzz/prettier-config", - "scripts": { - "lint": "eslint --cache .", - "lint:fix": "pnpm run lint --fix", - "build": "tsdown", - "dev": "tsdown --watch", - "test": "vitest", - "test:coverage": "vitest --project node --coverage", - "play": "vite playground", - "typecheck": "tsc --noEmit", - "format": "prettier --cache --write .", - "release": "bumpp" - } -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/safer-buffer/LICENSE b/sdks/nodejs/node_modules/safer-buffer/LICENSE deleted file mode 100644 index 4fe9e6f..0000000 --- a/sdks/nodejs/node_modules/safer-buffer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 Nikita Skovoroda - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/sdks/nodejs/node_modules/safer-buffer/Porting-Buffer.md b/sdks/nodejs/node_modules/safer-buffer/Porting-Buffer.md deleted file mode 100644 index 68d86ba..0000000 --- a/sdks/nodejs/node_modules/safer-buffer/Porting-Buffer.md +++ /dev/null @@ -1,268 +0,0 @@ -# Porting to the Buffer.from/Buffer.alloc API - - -## Overview - -- [Variant 1: Drop support for Node.js ≤ 4.4.x and 5.0.0 — 5.9.x.](#variant-1) (*recommended*) -- [Variant 2: Use a polyfill](#variant-2) -- [Variant 3: manual detection, with safeguards](#variant-3) - -### Finding problematic bits of code using grep - -Just run `grep -nrE '[^a-zA-Z](Slow)?Buffer\s*\(' --exclude-dir node_modules`. - -It will find all the potentially unsafe places in your own code (with some considerably unlikely -exceptions). - -### Finding problematic bits of code using Node.js 8 - -If you’re using Node.js ≥ 8.0.0 (which is recommended), Node.js exposes multiple options that help with finding the relevant pieces of code: - -- `--trace-warnings` will make Node.js show a stack trace for this warning and other warnings that are printed by Node.js. -- `--trace-deprecation` does the same thing, but only for deprecation warnings. -- `--pending-deprecation` will show more types of deprecation warnings. In particular, it will show the `Buffer()` deprecation warning, even on Node.js 8. - -You can set these flags using an environment variable: - -```console -$ export NODE_OPTIONS='--trace-warnings --pending-deprecation' -$ cat example.js -'use strict'; -const foo = new Buffer('foo'); -$ node example.js -(node:7147) [DEP0005] DeprecationWarning: The Buffer() and new Buffer() constructors are not recommended for use due to security and usability concerns. Please use the new Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() construction methods instead. - at showFlaggedDeprecation (buffer.js:127:13) - at new Buffer (buffer.js:148:3) - at Object. (/path/to/example.js:2:13) - [... more stack trace lines ...] -``` - -### Finding problematic bits of code using linters - -Eslint rules [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) -or -[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) -also find calls to deprecated `Buffer()` API. Those rules are included in some pre-sets. - -There is a drawback, though, that it doesn't always -[work correctly](https://github.com/chalker/safer-buffer#why-not-safe-buffer) when `Buffer` is -overriden e.g. with a polyfill, so recommended is a combination of this and some other method -described above. - - -## Variant 1: Drop support for Node.js ≤ 4.4.x and 5.0.0 — 5.9.x. - -This is the recommended solution nowadays that would imply only minimal overhead. - -The Node.js 5.x release line has been unsupported since July 2016, and the Node.js 4.x release line reaches its End of Life in April 2018 (→ [Schedule](https://github.com/nodejs/Release#release-schedule)). This means that these versions of Node.js will *not* receive any updates, even in case of security issues, so using these release lines should be avoided, if at all possible. - -What you would do in this case is to convert all `new Buffer()` or `Buffer()` calls to use `Buffer.alloc()` or `Buffer.from()`, in the following way: - -- For `new Buffer(number)`, replace it with `Buffer.alloc(number)`. -- For `new Buffer(string)` (or `new Buffer(string, encoding)`), replace it with `Buffer.from(string)` (or `Buffer.from(string, encoding)`). -- For all other combinations of arguments (these are much rarer), also replace `new Buffer(...arguments)` with `Buffer.from(...arguments)`. - -Note that `Buffer.alloc()` is also _faster_ on the current Node.js versions than -`new Buffer(size).fill(0)`, which is what you would otherwise need to ensure zero-filling. - -Enabling eslint rule [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) -or -[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) -is recommended to avoid accidential unsafe Buffer API usage. - -There is also a [JSCodeshift codemod](https://github.com/joyeecheung/node-dep-codemod#dep005) -for automatically migrating Buffer constructors to `Buffer.alloc()` or `Buffer.from()`. -Note that it currently only works with cases where the arguments are literals or where the -constructor is invoked with two arguments. - -_If you currently support those older Node.js versions and dropping them would be a semver-major change -for you, or if you support older branches of your packages, consider using [Variant 2](#variant-2) -or [Variant 3](#variant-3) on older branches, so people using those older branches will also receive -the fix. That way, you will eradicate potential issues caused by unguarded Buffer API usage and -your users will not observe a runtime deprecation warning when running your code on Node.js 10._ - - -## Variant 2: Use a polyfill - -Utilize [safer-buffer](https://www.npmjs.com/package/safer-buffer) as a polyfill to support older -Node.js versions. - -You would take exacly the same steps as in [Variant 1](#variant-1), but with a polyfill -`const Buffer = require('safer-buffer').Buffer` in all files where you use the new `Buffer` api. - -Make sure that you do not use old `new Buffer` API — in any files where the line above is added, -using old `new Buffer()` API will _throw_. It will be easy to notice that in CI, though. - -Alternatively, you could use [buffer-from](https://www.npmjs.com/package/buffer-from) and/or -[buffer-alloc](https://www.npmjs.com/package/buffer-alloc) [ponyfills](https://ponyfill.com/) — -those are great, the only downsides being 4 deps in the tree and slightly more code changes to -migrate off them (as you would be using e.g. `Buffer.from` under a different name). If you need only -`Buffer.from` polyfilled — `buffer-from` alone which comes with no extra dependencies. - -_Alternatively, you could use [safe-buffer](https://www.npmjs.com/package/safe-buffer) — it also -provides a polyfill, but takes a different approach which has -[it's drawbacks](https://github.com/chalker/safer-buffer#why-not-safe-buffer). It will allow you -to also use the older `new Buffer()` API in your code, though — but that's arguably a benefit, as -it is problematic, can cause issues in your code, and will start emitting runtime deprecation -warnings starting with Node.js 10._ - -Note that in either case, it is important that you also remove all calls to the old Buffer -API manually — just throwing in `safe-buffer` doesn't fix the problem by itself, it just provides -a polyfill for the new API. I have seen people doing that mistake. - -Enabling eslint rule [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) -or -[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) -is recommended. - -_Don't forget to drop the polyfill usage once you drop support for Node.js < 4.5.0._ - - -## Variant 3 — manual detection, with safeguards - -This is useful if you create Buffer instances in only a few places (e.g. one), or you have your own -wrapper around them. - -### Buffer(0) - -This special case for creating empty buffers can be safely replaced with `Buffer.concat([])`, which -returns the same result all the way down to Node.js 0.8.x. - -### Buffer(notNumber) - -Before: - -```js -var buf = new Buffer(notNumber, encoding); -``` - -After: - -```js -var buf; -if (Buffer.from && Buffer.from !== Uint8Array.from) { - buf = Buffer.from(notNumber, encoding); -} else { - if (typeof notNumber === 'number') - throw new Error('The "size" argument must be of type number.'); - buf = new Buffer(notNumber, encoding); -} -``` - -`encoding` is optional. - -Note that the `typeof notNumber` before `new Buffer` is required (for cases when `notNumber` argument is not -hard-coded) and _is not caused by the deprecation of Buffer constructor_ — it's exactly _why_ the -Buffer constructor is deprecated. Ecosystem packages lacking this type-check caused numereous -security issues — situations when unsanitized user input could end up in the `Buffer(arg)` create -problems ranging from DoS to leaking sensitive information to the attacker from the process memory. - -When `notNumber` argument is hardcoded (e.g. literal `"abc"` or `[0,1,2]`), the `typeof` check can -be omitted. - -Also note that using TypeScript does not fix this problem for you — when libs written in -`TypeScript` are used from JS, or when user input ends up there — it behaves exactly as pure JS, as -all type checks are translation-time only and are not present in the actual JS code which TS -compiles to. - -### Buffer(number) - -For Node.js 0.10.x (and below) support: - -```js -var buf; -if (Buffer.alloc) { - buf = Buffer.alloc(number); -} else { - buf = new Buffer(number); - buf.fill(0); -} -``` - -Otherwise (Node.js ≥ 0.12.x): - -```js -const buf = Buffer.alloc ? Buffer.alloc(number) : new Buffer(number).fill(0); -``` - -## Regarding Buffer.allocUnsafe - -Be extra cautious when using `Buffer.allocUnsafe`: - * Don't use it if you don't have a good reason to - * e.g. you probably won't ever see a performance difference for small buffers, in fact, those - might be even faster with `Buffer.alloc()`, - * if your code is not in the hot code path — you also probably won't notice a difference, - * keep in mind that zero-filling minimizes the potential risks. - * If you use it, make sure that you never return the buffer in a partially-filled state, - * if you are writing to it sequentially — always truncate it to the actuall written length - -Errors in handling buffers allocated with `Buffer.allocUnsafe` could result in various issues, -ranged from undefined behaviour of your code to sensitive data (user input, passwords, certs) -leaking to the remote attacker. - -_Note that the same applies to `new Buffer` usage without zero-filling, depending on the Node.js -version (and lacking type checks also adds DoS to the list of potential problems)._ - - -## FAQ - - -### What is wrong with the `Buffer` constructor? - -The `Buffer` constructor could be used to create a buffer in many different ways: - -- `new Buffer(42)` creates a `Buffer` of 42 bytes. Before Node.js 8, this buffer contained - *arbitrary memory* for performance reasons, which could include anything ranging from - program source code to passwords and encryption keys. -- `new Buffer('abc')` creates a `Buffer` that contains the UTF-8-encoded version of - the string `'abc'`. A second argument could specify another encoding: For example, - `new Buffer(string, 'base64')` could be used to convert a Base64 string into the original - sequence of bytes that it represents. -- There are several other combinations of arguments. - -This meant that, in code like `var buffer = new Buffer(foo);`, *it is not possible to tell -what exactly the contents of the generated buffer are* without knowing the type of `foo`. - -Sometimes, the value of `foo` comes from an external source. For example, this function -could be exposed as a service on a web server, converting a UTF-8 string into its Base64 form: - -``` -function stringToBase64(req, res) { - // The request body should have the format of `{ string: 'foobar' }` - const rawBytes = new Buffer(req.body.string) - const encoded = rawBytes.toString('base64') - res.end({ encoded: encoded }) -} -``` - -Note that this code does *not* validate the type of `req.body.string`: - -- `req.body.string` is expected to be a string. If this is the case, all goes well. -- `req.body.string` is controlled by the client that sends the request. -- If `req.body.string` is the *number* `50`, the `rawBytes` would be 50 bytes: - - Before Node.js 8, the content would be uninitialized - - After Node.js 8, the content would be `50` bytes with the value `0` - -Because of the missing type check, an attacker could intentionally send a number -as part of the request. Using this, they can either: - -- Read uninitialized memory. This **will** leak passwords, encryption keys and other - kinds of sensitive information. (Information leak) -- Force the program to allocate a large amount of memory. For example, when specifying - `500000000` as the input value, each request will allocate 500MB of memory. - This can be used to either exhaust the memory available of a program completely - and make it crash, or slow it down significantly. (Denial of Service) - -Both of these scenarios are considered serious security issues in a real-world -web server context. - -when using `Buffer.from(req.body.string)` instead, passing a number will always -throw an exception instead, giving a controlled behaviour that can always be -handled by the program. - - -### The `Buffer()` constructor has been deprecated for a while. Is this really an issue? - -Surveys of code in the `npm` ecosystem have shown that the `Buffer()` constructor is still -widely used. This includes new code, and overall usage of such code has actually been -*increasing*. diff --git a/sdks/nodejs/node_modules/safer-buffer/Readme.md b/sdks/nodejs/node_modules/safer-buffer/Readme.md deleted file mode 100644 index 14b0822..0000000 --- a/sdks/nodejs/node_modules/safer-buffer/Readme.md +++ /dev/null @@ -1,156 +0,0 @@ -# safer-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![javascript style guide][standard-image]][standard-url] [![Security Responsible Disclosure][secuirty-image]][secuirty-url] - -[travis-image]: https://travis-ci.org/ChALkeR/safer-buffer.svg?branch=master -[travis-url]: https://travis-ci.org/ChALkeR/safer-buffer -[npm-image]: https://img.shields.io/npm/v/safer-buffer.svg -[npm-url]: https://npmjs.org/package/safer-buffer -[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg -[standard-url]: https://standardjs.com -[secuirty-image]: https://img.shields.io/badge/Security-Responsible%20Disclosure-green.svg -[secuirty-url]: https://github.com/nodejs/security-wg/blob/master/processes/responsible_disclosure_template.md - -Modern Buffer API polyfill without footguns, working on Node.js from 0.8 to current. - -## How to use? - -First, port all `Buffer()` and `new Buffer()` calls to `Buffer.alloc()` and `Buffer.from()` API. - -Then, to achieve compatibility with outdated Node.js versions (`<4.5.0` and 5.x `<5.9.0`), use -`const Buffer = require('safer-buffer').Buffer` in all files where you make calls to the new -Buffer API. _Use `var` instead of `const` if you need that for your Node.js version range support._ - -Also, see the -[porting Buffer](https://github.com/ChALkeR/safer-buffer/blob/master/Porting-Buffer.md) guide. - -## Do I need it? - -Hopefully, not — dropping support for outdated Node.js versions should be fine nowdays, and that -is the recommended path forward. You _do_ need to port to the `Buffer.alloc()` and `Buffer.from()` -though. - -See the [porting guide](https://github.com/ChALkeR/safer-buffer/blob/master/Porting-Buffer.md) -for a better description. - -## Why not [safe-buffer](https://npmjs.com/safe-buffer)? - -_In short: while `safe-buffer` serves as a polyfill for the new API, it allows old API usage and -itself contains footguns._ - -`safe-buffer` could be used safely to get the new API while still keeping support for older -Node.js versions (like this module), but while analyzing ecosystem usage of the old Buffer API -I found out that `safe-buffer` is itself causing problems in some cases. - -For example, consider the following snippet: - -```console -$ cat example.unsafe.js -console.log(Buffer(20)) -$ ./node-v6.13.0-linux-x64/bin/node example.unsafe.js - -$ standard example.unsafe.js -standard: Use JavaScript Standard Style (https://standardjs.com) - /home/chalker/repo/safer-buffer/example.unsafe.js:2:13: 'Buffer()' was deprecated since v6. Use 'Buffer.alloc()' or 'Buffer.from()' (use 'https://www.npmjs.com/package/safe-buffer' for '<4.5.0') instead. -``` - -This is allocates and writes to console an uninitialized chunk of memory. -[standard](https://www.npmjs.com/package/standard) linter (among others) catch that and warn people -to avoid using unsafe API. - -Let's now throw in `safe-buffer`! - -```console -$ cat example.safe-buffer.js -const Buffer = require('safe-buffer').Buffer -console.log(Buffer(20)) -$ standard example.safe-buffer.js -$ ./node-v6.13.0-linux-x64/bin/node example.safe-buffer.js - -``` - -See the problem? Adding in `safe-buffer` _magically removes the lint warning_, but the behavior -remains identiсal to what we had before, and when launched on Node.js 6.x LTS — this dumps out -chunks of uninitialized memory. -_And this code will still emit runtime warnings on Node.js 10.x and above._ - -That was done by design. I first considered changing `safe-buffer`, prohibiting old API usage or -emitting warnings on it, but that significantly diverges from `safe-buffer` design. After some -discussion, it was decided to move my approach into a separate package, and _this is that separate -package_. - -This footgun is not imaginary — I observed top-downloaded packages doing that kind of thing, -«fixing» the lint warning by blindly including `safe-buffer` without any actual changes. - -Also in some cases, even if the API _was_ migrated to use of safe Buffer API — a random pull request -can bring unsafe Buffer API usage back to the codebase by adding new calls — and that could go -unnoticed even if you have a linter prohibiting that (becase of the reason stated above), and even -pass CI. _I also observed that being done in popular packages._ - -Some examples: - * [webdriverio](https://github.com/webdriverio/webdriverio/commit/05cbd3167c12e4930f09ef7cf93b127ba4effae4#diff-124380949022817b90b622871837d56cR31) - (a module with 548 759 downloads/month), - * [websocket-stream](https://github.com/maxogden/websocket-stream/commit/c9312bd24d08271687d76da0fe3c83493871cf61) - (218 288 d/m, fix in [maxogden/websocket-stream#142](https://github.com/maxogden/websocket-stream/pull/142)), - * [node-serialport](https://github.com/node-serialport/node-serialport/commit/e8d9d2b16c664224920ce1c895199b1ce2def48c) - (113 138 d/m, fix in [node-serialport/node-serialport#1510](https://github.com/node-serialport/node-serialport/pull/1510)), - * [karma](https://github.com/karma-runner/karma/commit/3d94b8cf18c695104ca195334dc75ff054c74eec) - (3 973 193 d/m, fix in [karma-runner/karma#2947](https://github.com/karma-runner/karma/pull/2947)), - * [spdy-transport](https://github.com/spdy-http2/spdy-transport/commit/5375ac33f4a62a4f65bcfc2827447d42a5dbe8b1) - (5 970 727 d/m, fix in [spdy-http2/spdy-transport#53](https://github.com/spdy-http2/spdy-transport/pull/53)). - * And there are a lot more over the ecosystem. - -I filed a PR at -[mysticatea/eslint-plugin-node#110](https://github.com/mysticatea/eslint-plugin-node/pull/110) to -partially fix that (for cases when that lint rule is used), but it is a semver-major change for -linter rules and presets, so it would take significant time for that to reach actual setups. -_It also hasn't been released yet (2018-03-20)._ - -Also, `safer-buffer` discourages the usage of `.allocUnsafe()`, which is often done by a mistake. -It still supports it with an explicit concern barier, by placing it under -`require('safer-buffer/dangereous')`. - -## But isn't throwing bad? - -Not really. It's an error that could be noticed and fixed early, instead of causing havoc later like -unguarded `new Buffer()` calls that end up receiving user input can do. - -This package affects only the files where `var Buffer = require('safer-buffer').Buffer` was done, so -it is really simple to keep track of things and make sure that you don't mix old API usage with that. -Also, CI should hint anything that you might have missed. - -New commits, if tested, won't land new usage of unsafe Buffer API this way. -_Node.js 10.x also deals with that by printing a runtime depecation warning._ - -### Would it affect third-party modules? - -No, unless you explicitly do an awful thing like monkey-patching or overriding the built-in `Buffer`. -Don't do that. - -### But I don't want throwing… - -That is also fine! - -Also, it could be better in some cases when you don't comprehensive enough test coverage. - -In that case — just don't override `Buffer` and use -`var SaferBuffer = require('safer-buffer').Buffer` instead. - -That way, everything using `Buffer` natively would still work, but there would be two drawbacks: - -* `Buffer.from`/`Buffer.alloc` won't be polyfilled — use `SaferBuffer.from` and - `SaferBuffer.alloc` instead. -* You are still open to accidentally using the insecure deprecated API — use a linter to catch that. - -Note that using a linter to catch accidential `Buffer` constructor usage in this case is strongly -recommended. `Buffer` is not overriden in this usecase, so linters won't get confused. - -## «Without footguns»? - -Well, it is still possible to do _some_ things with `Buffer` API, e.g. accessing `.buffer` property -on older versions and duping things from there. You shouldn't do that in your code, probabably. - -The intention is to remove the most significant footguns that affect lots of packages in the -ecosystem, and to do it in the proper way. - -Also, this package doesn't protect against security issues affecting some Node.js versions, so for -usage in your own production code, it is still recommended to update to a Node.js version -[supported by upstream](https://github.com/nodejs/release#release-schedule). diff --git a/sdks/nodejs/node_modules/safer-buffer/dangerous.js b/sdks/nodejs/node_modules/safer-buffer/dangerous.js deleted file mode 100644 index ca41fdc..0000000 --- a/sdks/nodejs/node_modules/safer-buffer/dangerous.js +++ /dev/null @@ -1,58 +0,0 @@ -/* eslint-disable node/no-deprecated-api */ - -'use strict' - -var buffer = require('buffer') -var Buffer = buffer.Buffer -var safer = require('./safer.js') -var Safer = safer.Buffer - -var dangerous = {} - -var key - -for (key in safer) { - if (!safer.hasOwnProperty(key)) continue - dangerous[key] = safer[key] -} - -var Dangereous = dangerous.Buffer = {} - -// Copy Safer API -for (key in Safer) { - if (!Safer.hasOwnProperty(key)) continue - Dangereous[key] = Safer[key] -} - -// Copy those missing unsafe methods, if they are present -for (key in Buffer) { - if (!Buffer.hasOwnProperty(key)) continue - if (Dangereous.hasOwnProperty(key)) continue - Dangereous[key] = Buffer[key] -} - -if (!Dangereous.allocUnsafe) { - Dangereous.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) - } - if (size < 0 || size >= 2 * (1 << 30)) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } - return Buffer(size) - } -} - -if (!Dangereous.allocUnsafeSlow) { - Dangereous.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) - } - if (size < 0 || size >= 2 * (1 << 30)) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } - return buffer.SlowBuffer(size) - } -} - -module.exports = dangerous diff --git a/sdks/nodejs/node_modules/safer-buffer/package.json b/sdks/nodejs/node_modules/safer-buffer/package.json deleted file mode 100644 index d452b04..0000000 --- a/sdks/nodejs/node_modules/safer-buffer/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "safer-buffer", - "version": "2.1.2", - "description": "Modern Buffer API polyfill without footguns", - "main": "safer.js", - "scripts": { - "browserify-test": "browserify --external tape tests.js > browserify-tests.js && tape browserify-tests.js", - "test": "standard && tape tests.js" - }, - "author": { - "name": "Nikita Skovoroda", - "email": "chalkerx@gmail.com", - "url": "https://github.com/ChALkeR" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/ChALkeR/safer-buffer.git" - }, - "bugs": { - "url": "https://github.com/ChALkeR/safer-buffer/issues" - }, - "devDependencies": { - "standard": "^11.0.1", - "tape": "^4.9.0" - }, - "files": [ - "Porting-Buffer.md", - "Readme.md", - "tests.js", - "dangerous.js", - "safer.js" - ] -} diff --git a/sdks/nodejs/node_modules/safer-buffer/safer.js b/sdks/nodejs/node_modules/safer-buffer/safer.js deleted file mode 100644 index 37c7e1a..0000000 --- a/sdks/nodejs/node_modules/safer-buffer/safer.js +++ /dev/null @@ -1,77 +0,0 @@ -/* eslint-disable node/no-deprecated-api */ - -'use strict' - -var buffer = require('buffer') -var Buffer = buffer.Buffer - -var safer = {} - -var key - -for (key in buffer) { - if (!buffer.hasOwnProperty(key)) continue - if (key === 'SlowBuffer' || key === 'Buffer') continue - safer[key] = buffer[key] -} - -var Safer = safer.Buffer = {} -for (key in Buffer) { - if (!Buffer.hasOwnProperty(key)) continue - if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue - Safer[key] = Buffer[key] -} - -safer.Buffer.prototype = Buffer.prototype - -if (!Safer.from || Safer.from === Uint8Array.from) { - Safer.from = function (value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value) - } - if (value && typeof value.length === 'undefined') { - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value) - } - return Buffer(value, encodingOrOffset, length) - } -} - -if (!Safer.alloc) { - Safer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) - } - if (size < 0 || size >= 2 * (1 << 30)) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } - var buf = Buffer(size) - if (!fill || fill.length === 0) { - buf.fill(0) - } else if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - return buf - } -} - -if (!safer.kStringMaxLength) { - try { - safer.kStringMaxLength = process.binding('buffer').kStringMaxLength - } catch (e) { - // we can't determine kStringMaxLength in environments where process.binding - // is unsupported, so let's not set it - } -} - -if (!safer.constants) { - safer.constants = { - MAX_LENGTH: safer.kMaxLength - } - if (safer.kStringMaxLength) { - safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength - } -} - -module.exports = safer diff --git a/sdks/nodejs/node_modules/safer-buffer/tests.js b/sdks/nodejs/node_modules/safer-buffer/tests.js deleted file mode 100644 index 7ed2777..0000000 --- a/sdks/nodejs/node_modules/safer-buffer/tests.js +++ /dev/null @@ -1,406 +0,0 @@ -/* eslint-disable node/no-deprecated-api */ - -'use strict' - -var test = require('tape') - -var buffer = require('buffer') - -var index = require('./') -var safer = require('./safer') -var dangerous = require('./dangerous') - -/* Inheritance tests */ - -test('Default is Safer', function (t) { - t.equal(index, safer) - t.notEqual(safer, dangerous) - t.notEqual(index, dangerous) - t.end() -}) - -test('Is not a function', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(typeof impl, 'object') - t.equal(typeof impl.Buffer, 'object') - }); - [buffer].forEach(function (impl) { - t.equal(typeof impl, 'object') - t.equal(typeof impl.Buffer, 'function') - }) - t.end() -}) - -test('Constructor throws', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.throws(function () { impl.Buffer() }) - t.throws(function () { impl.Buffer(0) }) - t.throws(function () { impl.Buffer('a') }) - t.throws(function () { impl.Buffer('a', 'utf-8') }) - t.throws(function () { return new impl.Buffer() }) - t.throws(function () { return new impl.Buffer(0) }) - t.throws(function () { return new impl.Buffer('a') }) - t.throws(function () { return new impl.Buffer('a', 'utf-8') }) - }) - t.end() -}) - -test('Safe methods exist', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(typeof impl.Buffer.alloc, 'function', 'alloc') - t.equal(typeof impl.Buffer.from, 'function', 'from') - }) - t.end() -}) - -test('Unsafe methods exist only in Dangerous', function (t) { - [index, safer].forEach(function (impl) { - t.equal(typeof impl.Buffer.allocUnsafe, 'undefined') - t.equal(typeof impl.Buffer.allocUnsafeSlow, 'undefined') - }); - [dangerous].forEach(function (impl) { - t.equal(typeof impl.Buffer.allocUnsafe, 'function') - t.equal(typeof impl.Buffer.allocUnsafeSlow, 'function') - }) - t.end() -}) - -test('Generic methods/properties are defined and equal', function (t) { - ['poolSize', 'isBuffer', 'concat', 'byteLength'].forEach(function (method) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer[method], buffer.Buffer[method], method) - t.notEqual(typeof impl.Buffer[method], 'undefined', method) - }) - }) - t.end() -}) - -test('Built-in buffer static methods/properties are inherited', function (t) { - Object.keys(buffer).forEach(function (method) { - if (method === 'SlowBuffer' || method === 'Buffer') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl[method], buffer[method], method) - t.notEqual(typeof impl[method], 'undefined', method) - }) - }) - t.end() -}) - -test('Built-in Buffer static methods/properties are inherited', function (t) { - Object.keys(buffer.Buffer).forEach(function (method) { - if (method === 'allocUnsafe' || method === 'allocUnsafeSlow') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer[method], buffer.Buffer[method], method) - t.notEqual(typeof impl.Buffer[method], 'undefined', method) - }) - }) - t.end() -}) - -test('.prototype property of Buffer is inherited', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer.prototype, buffer.Buffer.prototype, 'prototype') - t.notEqual(typeof impl.Buffer.prototype, 'undefined', 'prototype') - }) - t.end() -}) - -test('All Safer methods are present in Dangerous', function (t) { - Object.keys(safer).forEach(function (method) { - if (method === 'Buffer') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl[method], safer[method], method) - if (method !== 'kStringMaxLength') { - t.notEqual(typeof impl[method], 'undefined', method) - } - }) - }) - Object.keys(safer.Buffer).forEach(function (method) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer[method], safer.Buffer[method], method) - t.notEqual(typeof impl.Buffer[method], 'undefined', method) - }) - }) - t.end() -}) - -test('Safe methods from Dangerous methods are present in Safer', function (t) { - Object.keys(dangerous).forEach(function (method) { - if (method === 'Buffer') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl[method], dangerous[method], method) - if (method !== 'kStringMaxLength') { - t.notEqual(typeof impl[method], 'undefined', method) - } - }) - }) - Object.keys(dangerous.Buffer).forEach(function (method) { - if (method === 'allocUnsafe' || method === 'allocUnsafeSlow') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer[method], dangerous.Buffer[method], method) - t.notEqual(typeof impl.Buffer[method], 'undefined', method) - }) - }) - t.end() -}) - -/* Behaviour tests */ - -test('Methods return Buffers', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0, 10))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0, 'a'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(10))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(10, 'x'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(9, 'ab'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from(''))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('string'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('string', 'utf-8'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from([0, 42, 3]))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from(new Uint8Array([0, 42, 3])))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from([]))) - }); - ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { - t.ok(buffer.Buffer.isBuffer(dangerous.Buffer[method](0))) - t.ok(buffer.Buffer.isBuffer(dangerous.Buffer[method](10))) - }) - t.end() -}) - -test('Constructor is buffer.Buffer', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer.alloc(0).constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(0, 10).constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(0, 'a').constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(10).constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(10, 'x').constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(9, 'ab').constructor, buffer.Buffer) - t.equal(impl.Buffer.from('').constructor, buffer.Buffer) - t.equal(impl.Buffer.from('string').constructor, buffer.Buffer) - t.equal(impl.Buffer.from('string', 'utf-8').constructor, buffer.Buffer) - t.equal(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64').constructor, buffer.Buffer) - t.equal(impl.Buffer.from([0, 42, 3]).constructor, buffer.Buffer) - t.equal(impl.Buffer.from(new Uint8Array([0, 42, 3])).constructor, buffer.Buffer) - t.equal(impl.Buffer.from([]).constructor, buffer.Buffer) - }); - [0, 10, 100].forEach(function (arg) { - t.equal(dangerous.Buffer.allocUnsafe(arg).constructor, buffer.Buffer) - t.equal(dangerous.Buffer.allocUnsafeSlow(arg).constructor, buffer.SlowBuffer(0).constructor) - }) - t.end() -}) - -test('Invalid calls throw', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.throws(function () { impl.Buffer.from(0) }) - t.throws(function () { impl.Buffer.from(10) }) - t.throws(function () { impl.Buffer.from(10, 'utf-8') }) - t.throws(function () { impl.Buffer.from('string', 'invalid encoding') }) - t.throws(function () { impl.Buffer.from(-10) }) - t.throws(function () { impl.Buffer.from(1e90) }) - t.throws(function () { impl.Buffer.from(Infinity) }) - t.throws(function () { impl.Buffer.from(-Infinity) }) - t.throws(function () { impl.Buffer.from(NaN) }) - t.throws(function () { impl.Buffer.from(null) }) - t.throws(function () { impl.Buffer.from(undefined) }) - t.throws(function () { impl.Buffer.from() }) - t.throws(function () { impl.Buffer.from({}) }) - t.throws(function () { impl.Buffer.alloc('') }) - t.throws(function () { impl.Buffer.alloc('string') }) - t.throws(function () { impl.Buffer.alloc('string', 'utf-8') }) - t.throws(function () { impl.Buffer.alloc('b25ldHdvdGhyZWU=', 'base64') }) - t.throws(function () { impl.Buffer.alloc(-10) }) - t.throws(function () { impl.Buffer.alloc(1e90) }) - t.throws(function () { impl.Buffer.alloc(2 * (1 << 30)) }) - t.throws(function () { impl.Buffer.alloc(Infinity) }) - t.throws(function () { impl.Buffer.alloc(-Infinity) }) - t.throws(function () { impl.Buffer.alloc(null) }) - t.throws(function () { impl.Buffer.alloc(undefined) }) - t.throws(function () { impl.Buffer.alloc() }) - t.throws(function () { impl.Buffer.alloc([]) }) - t.throws(function () { impl.Buffer.alloc([0, 42, 3]) }) - t.throws(function () { impl.Buffer.alloc({}) }) - }); - ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { - t.throws(function () { dangerous.Buffer[method]('') }) - t.throws(function () { dangerous.Buffer[method]('string') }) - t.throws(function () { dangerous.Buffer[method]('string', 'utf-8') }) - t.throws(function () { dangerous.Buffer[method](2 * (1 << 30)) }) - t.throws(function () { dangerous.Buffer[method](Infinity) }) - if (dangerous.Buffer[method] === buffer.Buffer.allocUnsafe) { - t.skip('Skipping, older impl of allocUnsafe coerced negative sizes to 0') - } else { - t.throws(function () { dangerous.Buffer[method](-10) }) - t.throws(function () { dangerous.Buffer[method](-1e90) }) - t.throws(function () { dangerous.Buffer[method](-Infinity) }) - } - t.throws(function () { dangerous.Buffer[method](null) }) - t.throws(function () { dangerous.Buffer[method](undefined) }) - t.throws(function () { dangerous.Buffer[method]() }) - t.throws(function () { dangerous.Buffer[method]([]) }) - t.throws(function () { dangerous.Buffer[method]([0, 42, 3]) }) - t.throws(function () { dangerous.Buffer[method]({}) }) - }) - t.end() -}) - -test('Buffers have appropriate lengths', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer.alloc(0).length, 0) - t.equal(impl.Buffer.alloc(10).length, 10) - t.equal(impl.Buffer.from('').length, 0) - t.equal(impl.Buffer.from('string').length, 6) - t.equal(impl.Buffer.from('string', 'utf-8').length, 6) - t.equal(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64').length, 11) - t.equal(impl.Buffer.from([0, 42, 3]).length, 3) - t.equal(impl.Buffer.from(new Uint8Array([0, 42, 3])).length, 3) - t.equal(impl.Buffer.from([]).length, 0) - }); - ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { - t.equal(dangerous.Buffer[method](0).length, 0) - t.equal(dangerous.Buffer[method](10).length, 10) - }) - t.end() -}) - -test('Buffers have appropriate lengths (2)', function (t) { - t.equal(index.Buffer.alloc, safer.Buffer.alloc) - t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) - var ok = true; - [ safer.Buffer.alloc, - dangerous.Buffer.allocUnsafe, - dangerous.Buffer.allocUnsafeSlow - ].forEach(function (method) { - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 1e5) - var buf = method(length) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - } - }) - t.ok(ok) - t.end() -}) - -test('.alloc(size) is zero-filled and has correct length', function (t) { - t.equal(index.Buffer.alloc, safer.Buffer.alloc) - t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) - var ok = true - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 2e6) - var buf = index.Buffer.alloc(length) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - var j - for (j = 0; j < length; j++) { - if (buf[j] !== 0) ok = false - } - buf.fill(1) - for (j = 0; j < length; j++) { - if (buf[j] !== 1) ok = false - } - } - t.ok(ok) - t.end() -}) - -test('.allocUnsafe / .allocUnsafeSlow are fillable and have correct lengths', function (t) { - ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { - var ok = true - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 2e6) - var buf = dangerous.Buffer[method](length) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - buf.fill(0, 0, length) - var j - for (j = 0; j < length; j++) { - if (buf[j] !== 0) ok = false - } - buf.fill(1, 0, length) - for (j = 0; j < length; j++) { - if (buf[j] !== 1) ok = false - } - } - t.ok(ok, method) - }) - t.end() -}) - -test('.alloc(size, fill) is `fill`-filled', function (t) { - t.equal(index.Buffer.alloc, safer.Buffer.alloc) - t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) - var ok = true - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 2e6) - var fill = Math.round(Math.random() * 255) - var buf = index.Buffer.alloc(length, fill) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - for (var j = 0; j < length; j++) { - if (buf[j] !== fill) ok = false - } - } - t.ok(ok) - t.end() -}) - -test('.alloc(size, fill) is `fill`-filled', function (t) { - t.equal(index.Buffer.alloc, safer.Buffer.alloc) - t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) - var ok = true - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 2e6) - var fill = Math.round(Math.random() * 255) - var buf = index.Buffer.alloc(length, fill) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - for (var j = 0; j < length; j++) { - if (buf[j] !== fill) ok = false - } - } - t.ok(ok) - t.deepEqual(index.Buffer.alloc(9, 'a'), index.Buffer.alloc(9, 97)) - t.notDeepEqual(index.Buffer.alloc(9, 'a'), index.Buffer.alloc(9, 98)) - - var tmp = new buffer.Buffer(2) - tmp.fill('ok') - if (tmp[1] === tmp[0]) { - // Outdated Node.js - t.deepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('ooooo')) - } else { - t.deepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('okoko')) - } - t.notDeepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('kokok')) - - t.end() -}) - -test('safer.Buffer.from returns results same as Buffer constructor', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.deepEqual(impl.Buffer.from(''), new buffer.Buffer('')) - t.deepEqual(impl.Buffer.from('string'), new buffer.Buffer('string')) - t.deepEqual(impl.Buffer.from('string', 'utf-8'), new buffer.Buffer('string', 'utf-8')) - t.deepEqual(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'), new buffer.Buffer('b25ldHdvdGhyZWU=', 'base64')) - t.deepEqual(impl.Buffer.from([0, 42, 3]), new buffer.Buffer([0, 42, 3])) - t.deepEqual(impl.Buffer.from(new Uint8Array([0, 42, 3])), new buffer.Buffer(new Uint8Array([0, 42, 3]))) - t.deepEqual(impl.Buffer.from([]), new buffer.Buffer([])) - }) - t.end() -}) - -test('safer.Buffer.from returns consistent results', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.deepEqual(impl.Buffer.from(''), impl.Buffer.alloc(0)) - t.deepEqual(impl.Buffer.from([]), impl.Buffer.alloc(0)) - t.deepEqual(impl.Buffer.from(new Uint8Array([])), impl.Buffer.alloc(0)) - t.deepEqual(impl.Buffer.from('string', 'utf-8'), impl.Buffer.from('string')) - t.deepEqual(impl.Buffer.from('string'), impl.Buffer.from([115, 116, 114, 105, 110, 103])) - t.deepEqual(impl.Buffer.from('string'), impl.Buffer.from(impl.Buffer.from('string'))) - t.deepEqual(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'), impl.Buffer.from('onetwothree')) - t.notDeepEqual(impl.Buffer.from('b25ldHdvdGhyZWU='), impl.Buffer.from('onetwothree')) - }) - t.end() -}) diff --git a/sdks/nodejs/node_modules/semver/LICENSE b/sdks/nodejs/node_modules/semver/LICENSE deleted file mode 100644 index 19129e3..0000000 --- a/sdks/nodejs/node_modules/semver/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, 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. diff --git a/sdks/nodejs/node_modules/semver/README.md b/sdks/nodejs/node_modules/semver/README.md deleted file mode 100644 index e9d1bc5..0000000 --- a/sdks/nodejs/node_modules/semver/README.md +++ /dev/null @@ -1,665 +0,0 @@ -semver(1) -- The semantic versioner for npm -=========================================== - -## Install - -```bash -npm install semver -```` - -## Usage - -As a node module: - -```js -const semver = require('semver') - -semver.valid('1.2.3') // '1.2.3' -semver.valid('a.b.c') // null -semver.clean(' =v1.2.3 ') // '1.2.3' -semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true -semver.gt('1.2.3', '9.8.7') // false -semver.lt('1.2.3', '9.8.7') // true -semver.minVersion('>=1.0.0') // '1.0.0' -semver.valid(semver.coerce('v2')) // '2.0.0' -semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7' -``` - -You can also just load the module for the function that you care about if -you'd like to minimize your footprint. - -```js -// load the whole API at once in a single object -const semver = require('semver') - -// or just load the bits you need -// all of them listed here, just pick and choose what you want - -// classes -const SemVer = require('semver/classes/semver') -const Comparator = require('semver/classes/comparator') -const Range = require('semver/classes/range') - -// functions for working with versions -const semverParse = require('semver/functions/parse') -const semverValid = require('semver/functions/valid') -const semverClean = require('semver/functions/clean') -const semverInc = require('semver/functions/inc') -const semverDiff = require('semver/functions/diff') -const semverMajor = require('semver/functions/major') -const semverMinor = require('semver/functions/minor') -const semverPatch = require('semver/functions/patch') -const semverPrerelease = require('semver/functions/prerelease') -const semverCompare = require('semver/functions/compare') -const semverRcompare = require('semver/functions/rcompare') -const semverCompareLoose = require('semver/functions/compare-loose') -const semverCompareBuild = require('semver/functions/compare-build') -const semverSort = require('semver/functions/sort') -const semverRsort = require('semver/functions/rsort') - -// low-level comparators between versions -const semverGt = require('semver/functions/gt') -const semverLt = require('semver/functions/lt') -const semverEq = require('semver/functions/eq') -const semverNeq = require('semver/functions/neq') -const semverGte = require('semver/functions/gte') -const semverLte = require('semver/functions/lte') -const semverCmp = require('semver/functions/cmp') -const semverCoerce = require('semver/functions/coerce') - -// working with ranges -const semverSatisfies = require('semver/functions/satisfies') -const semverMaxSatisfying = require('semver/ranges/max-satisfying') -const semverMinSatisfying = require('semver/ranges/min-satisfying') -const semverToComparators = require('semver/ranges/to-comparators') -const semverMinVersion = require('semver/ranges/min-version') -const semverValidRange = require('semver/ranges/valid') -const semverOutside = require('semver/ranges/outside') -const semverGtr = require('semver/ranges/gtr') -const semverLtr = require('semver/ranges/ltr') -const semverIntersects = require('semver/ranges/intersects') -const semverSimplifyRange = require('semver/ranges/simplify') -const semverRangeSubset = require('semver/ranges/subset') -``` - -As a command-line utility: - -``` -$ semver -h - -A JavaScript implementation of the https://semver.org/ specification -Copyright Isaac Z. Schlueter - -Usage: semver [options] [ [...]] -Prints valid versions sorted by SemVer precedence - -Options: --r --range - Print versions that match the specified range. - --i --increment [] - Increment a version by the specified level. Level can - be one of: major, minor, patch, premajor, preminor, - prepatch, prerelease, or release. Default level is 'patch'. - Only one version may be specified. - ---preid - Identifier to be used to prefix premajor, preminor, - prepatch or prerelease version increments. - --l --loose - Interpret versions and ranges loosely - --n <0|1|false> - Base number for prerelease identifier (default: 0). - Use false to omit the number altogether. - --p --include-prerelease - Always include prerelease versions in range matching - --c --coerce - Coerce a string into SemVer if possible - (does not imply --loose) - ---rtl - Coerce version strings right to left - ---ltr - Coerce version strings left to right (default) - -Program exits successfully if any valid version satisfies -all supplied ranges, and prints all satisfying versions. - -If no satisfying versions are found, then exits failure. - -Versions are printed in ascending order, so supplying -multiple versions to the utility will just sort them. -``` - -## Versions - -A "version" is described by the `v2.0.0` specification found at -. - -A leading `"="` or `"v"` character is stripped off and ignored. -Support for stripping a leading "v" is kept for compatibility with `v1.0.0` of the SemVer -specification but should not be used anymore. - -## Ranges - -A `version range` is a set of `comparators` that specify versions -that satisfy the range. - -A `comparator` is composed of an `operator` and a `version`. The set -of primitive `operators` is: - -* `<` Less than -* `<=` Less than or equal to -* `>` Greater than -* `>=` Greater than or equal to -* `=` Equal. If no operator is specified, then equality is assumed, - so this operator is optional but MAY be included. - -For example, the comparator `>=1.2.7` would match the versions -`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6` -or `1.1.0`. The comparator `>1` is equivalent to `>=2.0.0` and -would match the versions `2.0.0` and `3.1.0`, but not the versions -`1.0.1` or `1.1.0`. - -Comparators can be joined by whitespace to form a `comparator set`, -which is satisfied by the **intersection** of all of the comparators -it includes. - -A range is composed of one or more comparator sets, joined by `||`. A -version matches a range if and only if every comparator in at least -one of the `||`-separated comparator sets is satisfied by the version. - -For example, the range `>=1.2.7 <1.3.0` would match the versions -`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`, -or `1.1.0`. - -The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`, -`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`. - -### Prerelease Tags - -If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then -it will only be allowed to satisfy comparator sets if at least one -comparator with the same `[major, minor, patch]` tuple also has a -prerelease tag. - -For example, the range `>1.2.3-alpha.3` would be allowed to match the -version `1.2.3-alpha.7`, but it would *not* be satisfied by -`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater -than" `1.2.3-alpha.3` according to the SemVer sort rules. The version -range only accepts prerelease tags on the `1.2.3` version. -Version `3.4.5` *would* satisfy the range because it does not have a -prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`. - -The purpose of this behavior is twofold. First, prerelease versions -frequently are updated very quickly, and contain many breaking changes -that are (by the author's design) not yet fit for public consumption. -Therefore, by default, they are excluded from range-matching -semantics. - -Second, a user who has opted into using a prerelease version has -indicated the intent to use *that specific* set of -alpha/beta/rc versions. By including a prerelease tag in the range, -the user is indicating that they are aware of the risk. However, it -is still not appropriate to assume that they have opted into taking a -similar risk on the *next* set of prerelease versions. - -Note that this behavior can be suppressed (treating all prerelease -versions as if they were normal versions, for range-matching) -by setting the `includePrerelease` flag on the options -object to any -[functions](https://github.com/npm/node-semver#functions) that do -range matching. - -#### Prerelease Identifiers - -The method `.inc` takes an additional `identifier` string argument that -will append the value of the string as a prerelease identifier: - -```javascript -semver.inc('1.2.3', 'prerelease', 'beta') -// '1.2.4-beta.0' -``` - -command-line example: - -```bash -$ semver 1.2.3 -i prerelease --preid beta -1.2.4-beta.0 -``` - -Which then can be used to increment further: - -```bash -$ semver 1.2.4-beta.0 -i prerelease -1.2.4-beta.1 -``` - -To get out of the prerelease phase, use the `release` option: - -```bash -$ semver 1.2.4-beta.1 -i release -1.2.4 -``` - -#### Prerelease Identifier Base - -The method `.inc` takes an optional parameter 'identifierBase' string -that will let you let your prerelease number as zero-based or one-based. -Set to `false` to omit the prerelease number altogether. -If you do not specify this parameter, it will default to zero-based. - -```javascript -semver.inc('1.2.3', 'prerelease', 'beta', '1') -// '1.2.4-beta.1' -``` - -```javascript -semver.inc('1.2.3', 'prerelease', 'beta', false) -// '1.2.4-beta' -``` - -command-line example: - -```bash -$ semver 1.2.3 -i prerelease --preid beta -n 1 -1.2.4-beta.1 -``` - -```bash -$ semver 1.2.3 -i prerelease --preid beta -n false -1.2.4-beta -``` - -### Advanced Range Syntax - -Advanced range syntax desugars to primitive comparators in -deterministic ways. - -Advanced ranges may be combined in the same way as primitive -comparators using white space or `||`. - -#### Hyphen Ranges `X.Y.Z - A.B.C` - -Specifies an inclusive set. - -* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4` - -If a partial version is provided as the first version in the inclusive -range, then the missing pieces are replaced with zeroes. - -* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4` - -If a partial version is provided as the second version in the -inclusive range, then all versions that start with the supplied parts -of the tuple are accepted, but nothing that would be greater than the -provided tuple parts. - -* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0-0` -* `1.2.3 - 2` := `>=1.2.3 <3.0.0-0` - -#### X-Ranges `1.2.x` `1.X` `1.2.*` `*` - -Any of `X`, `x`, or `*` may be used to "stand in" for one of the -numeric values in the `[major, minor, patch]` tuple. - -* `*` := `>=0.0.0` (Any non-prerelease version satisfies, unless - `includePrerelease` is specified, in which case any version at all - satisfies) -* `1.x` := `>=1.0.0 <2.0.0-0` (Matching major version) -* `1.2.x` := `>=1.2.0 <1.3.0-0` (Matching major and minor versions) - -A partial version range is treated as an X-Range, so the special -character is in fact optional. - -* `""` (empty string) := `*` := `>=0.0.0` -* `1` := `1.x.x` := `>=1.0.0 <2.0.0-0` -* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0-0` - -#### Tilde Ranges `~1.2.3` `~1.2` `~1` - -Allows patch-level changes if a minor version is specified on the -comparator. Allows minor-level changes if not. - -* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0-0` -* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0-0` (Same as `1.2.x`) -* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0-0` (Same as `1.x`) -* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0-0` -* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0-0` (Same as `0.2.x`) -* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0-0` (Same as `0.x`) -* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0-0` Note that prereleases in - the `1.2.3` version will be allowed, if they are greater than or - equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but - `1.2.4-beta.2` would not, because it is a prerelease of a - different `[major, minor, patch]` tuple. - -#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4` - -Allows changes that do not modify the left-most non-zero element in the -`[major, minor, patch]` tuple. In other words, this allows patch and -minor updates for versions `1.0.0` and above, patch updates for -versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`. - -Many authors treat a `0.x` version as if the `x` were the major -"breaking-change" indicator. - -Caret ranges are ideal when an author may make breaking changes -between `0.2.4` and `0.3.0` releases, which is a common practice. -However, it presumes that there will *not* be breaking changes between -`0.2.4` and `0.2.5`. It allows for changes that are presumed to be -additive (but non-breaking), according to commonly observed practices. - -* `^1.2.3` := `>=1.2.3 <2.0.0-0` -* `^0.2.3` := `>=0.2.3 <0.3.0-0` -* `^0.0.3` := `>=0.0.3 <0.0.4-0` -* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0-0` Note that prereleases in - the `1.2.3` version will be allowed, if they are greater than or - equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but - `1.2.4-beta.2` would not, because it is a prerelease of a - different `[major, minor, patch]` tuple. -* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4-0` Note that prereleases in the - `0.0.3` version *only* will be allowed, if they are greater than or - equal to `beta`. So, `0.0.3-pr.2` would be allowed. - -When parsing caret ranges, a missing `patch` value desugars to the -number `0`, but will allow flexibility within that value, even if the -major and minor versions are both `0`. - -* `^1.2.x` := `>=1.2.0 <2.0.0-0` -* `^0.0.x` := `>=0.0.0 <0.1.0-0` -* `^0.0` := `>=0.0.0 <0.1.0-0` - -A missing `minor` and `patch` values will desugar to zero, but also -allow flexibility within those values, even if the major version is -zero. - -* `^1.x` := `>=1.0.0 <2.0.0-0` -* `^0.x` := `>=0.0.0 <1.0.0-0` - -### Range Grammar - -Putting all this together, here is a Backus-Naur grammar for ranges, -for the benefit of parser authors: - -```bnf -range-set ::= range ( logical-or range ) * -logical-or ::= ( ' ' ) * '||' ( ' ' ) * -range ::= hyphen | simple ( ' ' simple ) * | '' -hyphen ::= partial ' - ' partial -simple ::= primitive | partial | tilde | caret -primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial -partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? -xr ::= 'x' | 'X' | '*' | nr -nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) * -tilde ::= '~' partial -caret ::= '^' partial -qualifier ::= ( '-' pre )? ( '+' build )? -pre ::= parts -build ::= parts -parts ::= part ( '.' part ) * -part ::= nr | [-0-9A-Za-z]+ -``` - -## Functions - -All methods and classes take a final `options` object argument. All -options in this object are `false` by default. The options supported -are: - -- `loose`: Be more forgiving about not-quite-valid semver strings. - (Any resulting output will always be 100% strict compliant, of - course.) For backwards compatibility reasons, if the `options` - argument is a boolean value instead of an object, it is interpreted - to be the `loose` param. -- `includePrerelease`: Set to suppress the [default - behavior](https://github.com/npm/node-semver#prerelease-tags) of - excluding prerelease tagged versions from ranges unless they are - explicitly opted into. - -Strict-mode Comparators and Ranges will be strict about the SemVer -strings that they parse. - -* `valid(v)`: Return the parsed version, or null if it's not valid. -* `inc(v, releaseType, options, identifier, identifierBase)`: - Return the version incremented by the release - type (`major`, `premajor`, `minor`, `preminor`, `patch`, - `prepatch`, `prerelease`, or `release`), or null if it's not valid - * `premajor` in one call will bump the version up to the next major - version and down to a prerelease of that major version. - `preminor`, and `prepatch` work the same way. - * If called from a non-prerelease version, `prerelease` will work the - same as `prepatch`. It increments the patch version and then makes a - prerelease. If the input version is already a prerelease it simply - increments it. - * `release` will remove any prerelease part of the version. - * `identifier` can be used to prefix `premajor`, `preminor`, - `prepatch`, or `prerelease` version increments. `identifierBase` - is the base to be used for the `prerelease` identifier. -* `prerelease(v)`: Returns an array of prerelease components, or null - if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]` -* `major(v)`: Return the major version number. -* `minor(v)`: Return the minor version number. -* `patch(v)`: Return the patch version number. -* `intersects(r1, r2, loose)`: Return true if the two supplied ranges - or comparators intersect. -* `parse(v)`: Attempt to parse a string as a semantic version, returning either - a `SemVer` object or `null`. - -### Comparison - -* `gt(v1, v2)`: `v1 > v2` -* `gte(v1, v2)`: `v1 >= v2` -* `lt(v1, v2)`: `v1 < v2` -* `lte(v1, v2)`: `v1 <= v2` -* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent, - even if they're not the same string. You already know how to - compare strings. -* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`. -* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call - the corresponding function above. `"==="` and `"!=="` do simple - string comparison, but are included for completeness. Throws if an - invalid comparison string is provided. -* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if - `v2` is greater. Sorts in ascending order if passed to `Array.sort()`. -* `rcompare(v1, v2)`: The reverse of `compare`. Sorts an array of versions - in descending order when passed to `Array.sort()`. -* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions - are equal. Sorts in ascending order if passed to `Array.sort()`. -* `compareLoose(v1, v2)`: Short for `compare(v1, v2, { loose: true })`. -* `diff(v1, v2)`: Returns the difference between two versions by the release type - (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`), - or null if the versions are the same. - -### Sorting - -* `sort(versions)`: Returns a sorted array of versions based on the `compareBuild` - function. -* `rsort(versions)`: The reverse of `sort`. Returns an array of versions based on - the `compareBuild` function in descending order. - -### Comparators - -* `intersects(comparator)`: Return true if the comparators intersect - -### Ranges - -* `validRange(range)`: Return the valid range or null if it's not valid. -* `satisfies(version, range)`: Return true if the version satisfies the - range. -* `maxSatisfying(versions, range)`: Return the highest version in the list - that satisfies the range, or `null` if none of them do. -* `minSatisfying(versions, range)`: Return the lowest version in the list - that satisfies the range, or `null` if none of them do. -* `minVersion(range)`: Return the lowest version that can match - the given range. -* `gtr(version, range)`: Return `true` if the version is greater than all the - versions possible in the range. -* `ltr(version, range)`: Return `true` if the version is less than all the - versions possible in the range. -* `outside(version, range, hilo)`: Return true if the version is outside - the bounds of the range in either the high or low direction. The - `hilo` argument must be either the string `'>'` or `'<'`. (This is - the function called by `gtr` and `ltr`.) -* `intersects(range)`: Return true if any of the range comparators intersect. -* `simplifyRange(versions, range)`: Return a "simplified" range that - matches the same items in the `versions` list as the range specified. Note - that it does *not* guarantee that it would match the same versions in all - cases, only for the set of versions provided. This is useful when - generating ranges by joining together multiple versions with `||` - programmatically, to provide the user with something a bit more - ergonomic. If the provided range is shorter in string-length than the - generated range, then that is returned. -* `subset(subRange, superRange)`: Return `true` if the `subRange` range is - entirely contained by the `superRange` range. - -Note that, since ranges may be non-contiguous, a version might not be -greater than a range, less than a range, *or* satisfy a range! For -example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9` -until `2.0.0`, so version `1.2.10` would not be greater than the -range (because `2.0.1` satisfies, which is higher), nor less than the -range (since `1.2.8` satisfies, which is lower), and it also does not -satisfy the range. - -If you want to know if a version satisfies or does not satisfy a -range, use the `satisfies(version, range)` function. - -### Coercion - -* `coerce(version, options)`: Coerces a string to semver if possible - -This aims to provide a very forgiving translation of a non-semver string to -semver. It looks for the first digit in a string and consumes all -remaining characters which satisfy at least a partial semver (e.g., `1`, -`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer -versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All -surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes -`3.4.0`). Only text which lacks digits will fail coercion (`version one` -is not valid). The maximum length for any semver component considered for -coercion is 16 characters; longer components will be ignored -(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any -semver component is `Number.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value -components are invalid (`9999999999999999.4.7.4` is likely invalid). - -If the `options.rtl` flag is set, then `coerce` will return the right-most -coercible tuple that does not share an ending index with a longer coercible -tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not -`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of -any other overlapping SemVer tuple. - -If the `options.includePrerelease` flag is set, then the `coerce` result will contain -prerelease and build parts of a version. For example, `1.2.3.4-rc.1+rev.2` -will preserve prerelease `rc.1` and build `rev.2` in the result. - -### Clean - -* `clean(version)`: Clean a string to be a valid semver if possible - -This will return a cleaned and trimmed semver version. If the provided -version is not valid a null will be returned. This does not work for -ranges. - -ex. -* `s.clean(' = v 2.1.5foo')`: `null` -* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'` -* `s.clean(' = v 2.1.5-foo')`: `null` -* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'` -* `s.clean('=v2.1.5')`: `'2.1.5'` -* `s.clean(' =v2.1.5')`: `'2.1.5'` -* `s.clean(' 2.1.5 ')`: `'2.1.5'` -* `s.clean('~1.0.0')`: `null` - -## Constants - -As a convenience, helper constants are exported to provide information about what `node-semver` supports: - -### `RELEASE_TYPES` - -- major -- premajor -- minor -- preminor -- patch -- prepatch -- prerelease - -``` -const semver = require('semver'); - -if (semver.RELEASE_TYPES.includes(arbitraryUserInput)) { - console.log('This is a valid release type!'); -} else { - console.warn('This is NOT a valid release type!'); -} -``` - -### `SEMVER_SPEC_VERSION` - -2.0.0 - -``` -const semver = require('semver'); - -console.log('We are currently using the semver specification version:', semver.SEMVER_SPEC_VERSION); -``` - -## Exported Modules - - - -You may pull in just the part of this semver utility that you need if you -are sensitive to packing and tree-shaking concerns. The main -`require('semver')` export uses getter functions to lazily load the parts -of the API that are used. - -The following modules are available: - -* `require('semver')` -* `require('semver/classes')` -* `require('semver/classes/comparator')` -* `require('semver/classes/range')` -* `require('semver/classes/semver')` -* `require('semver/functions/clean')` -* `require('semver/functions/cmp')` -* `require('semver/functions/coerce')` -* `require('semver/functions/compare')` -* `require('semver/functions/compare-build')` -* `require('semver/functions/compare-loose')` -* `require('semver/functions/diff')` -* `require('semver/functions/eq')` -* `require('semver/functions/gt')` -* `require('semver/functions/gte')` -* `require('semver/functions/inc')` -* `require('semver/functions/lt')` -* `require('semver/functions/lte')` -* `require('semver/functions/major')` -* `require('semver/functions/minor')` -* `require('semver/functions/neq')` -* `require('semver/functions/parse')` -* `require('semver/functions/patch')` -* `require('semver/functions/prerelease')` -* `require('semver/functions/rcompare')` -* `require('semver/functions/rsort')` -* `require('semver/functions/satisfies')` -* `require('semver/functions/sort')` -* `require('semver/functions/valid')` -* `require('semver/ranges/gtr')` -* `require('semver/ranges/intersects')` -* `require('semver/ranges/ltr')` -* `require('semver/ranges/max-satisfying')` -* `require('semver/ranges/min-satisfying')` -* `require('semver/ranges/min-version')` -* `require('semver/ranges/outside')` -* `require('semver/ranges/simplify')` -* `require('semver/ranges/subset')` -* `require('semver/ranges/to-comparators')` -* `require('semver/ranges/valid')` - diff --git a/sdks/nodejs/node_modules/semver/bin/semver.js b/sdks/nodejs/node_modules/semver/bin/semver.js deleted file mode 100755 index d62bfc0..0000000 --- a/sdks/nodejs/node_modules/semver/bin/semver.js +++ /dev/null @@ -1,191 +0,0 @@ -#!/usr/bin/env node -// Standalone semver comparison program. -// Exits successfully and prints matching version(s) if -// any supplied version is valid and passes all tests. - -'use strict' - -const argv = process.argv.slice(2) - -let versions = [] - -const range = [] - -let inc = null - -const version = require('../package.json').version - -let loose = false - -let includePrerelease = false - -let coerce = false - -let rtl = false - -let identifier - -let identifierBase - -const semver = require('../') -const parseOptions = require('../internal/parse-options') - -let reverse = false - -let options = {} - -const main = () => { - if (!argv.length) { - return help() - } - while (argv.length) { - let a = argv.shift() - const indexOfEqualSign = a.indexOf('=') - if (indexOfEqualSign !== -1) { - const value = a.slice(indexOfEqualSign + 1) - a = a.slice(0, indexOfEqualSign) - argv.unshift(value) - } - switch (a) { - case '-rv': case '-rev': case '--rev': case '--reverse': - reverse = true - break - case '-l': case '--loose': - loose = true - break - case '-p': case '--include-prerelease': - includePrerelease = true - break - case '-v': case '--version': - versions.push(argv.shift()) - break - case '-i': case '--inc': case '--increment': - switch (argv[0]) { - case 'major': case 'minor': case 'patch': case 'prerelease': - case 'premajor': case 'preminor': case 'prepatch': - case 'release': - inc = argv.shift() - break - default: - inc = 'patch' - break - } - break - case '--preid': - identifier = argv.shift() - break - case '-r': case '--range': - range.push(argv.shift()) - break - case '-n': - identifierBase = argv.shift() - if (identifierBase === 'false') { - identifierBase = false - } - break - case '-c': case '--coerce': - coerce = true - break - case '--rtl': - rtl = true - break - case '--ltr': - rtl = false - break - case '-h': case '--help': case '-?': - return help() - default: - versions.push(a) - break - } - } - - options = parseOptions({ loose, includePrerelease, rtl }) - - versions = versions.map((v) => { - return coerce ? (semver.coerce(v, options) || { version: v }).version : v - }).filter((v) => { - return semver.valid(v, options) - }) - if (!versions.length) { - return fail() - } - if (inc && (versions.length !== 1 || range.length)) { - return failInc() - } - - for (let i = 0, l = range.length; i < l; i++) { - versions = versions.filter((v) => { - return semver.satisfies(v, range[i], options) - }) - if (!versions.length) { - return fail() - } - } - versions - .sort((a, b) => semver[reverse ? 'rcompare' : 'compare'](a, b, options)) - .map(v => semver.clean(v, options)) - .map(v => inc ? semver.inc(v, inc, options, identifier, identifierBase) : v) - .forEach(v => console.log(v)) -} - -const failInc = () => { - console.error('--inc can only be used on a single version with no range') - fail() -} - -const fail = () => process.exit(1) - -const help = () => console.log( -`SemVer ${version} - -A JavaScript implementation of the https://semver.org/ specification -Copyright Isaac Z. Schlueter - -Usage: semver [options] [ [...]] -Prints valid versions sorted by SemVer precedence - -Options: --r --range - Print versions that match the specified range. - --i --increment [] - Increment a version by the specified level. Level can - be one of: major, minor, patch, premajor, preminor, - prepatch, prerelease, or release. Default level is 'patch'. - Only one version may be specified. - ---preid - Identifier to be used to prefix premajor, preminor, - prepatch or prerelease version increments. - --l --loose - Interpret versions and ranges loosely - --p --include-prerelease - Always include prerelease versions in range matching - --c --coerce - Coerce a string into SemVer if possible - (does not imply --loose) - ---rtl - Coerce version strings right to left - ---ltr - Coerce version strings left to right (default) - --n - Base number to be used for the prerelease identifier. - Can be either 0 or 1, or false to omit the number altogether. - Defaults to 0. - -Program exits successfully if any valid version satisfies -all supplied ranges, and prints all satisfying versions. - -If no satisfying versions are found, then exits failure. - -Versions are printed in ascending order, so supplying -multiple versions to the utility will just sort them.`) - -main() diff --git a/sdks/nodejs/node_modules/semver/classes/comparator.js b/sdks/nodejs/node_modules/semver/classes/comparator.js deleted file mode 100644 index 647c1f0..0000000 --- a/sdks/nodejs/node_modules/semver/classes/comparator.js +++ /dev/null @@ -1,143 +0,0 @@ -'use strict' - -const ANY = Symbol('SemVer ANY') -// hoisted class for cyclic dependency -class Comparator { - static get ANY () { - return ANY - } - - constructor (comp, options) { - options = parseOptions(options) - - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp - } else { - comp = comp.value - } - } - - comp = comp.trim().split(/\s+/).join(' ') - debug('comparator', comp, options) - this.options = options - this.loose = !!options.loose - this.parse(comp) - - if (this.semver === ANY) { - this.value = '' - } else { - this.value = this.operator + this.semver.version - } - - debug('comp', this) - } - - parse (comp) { - const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - const m = comp.match(r) - - if (!m) { - throw new TypeError(`Invalid comparator: ${comp}`) - } - - this.operator = m[1] !== undefined ? m[1] : '' - if (this.operator === '=') { - this.operator = '' - } - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) { - this.semver = ANY - } else { - this.semver = new SemVer(m[2], this.options.loose) - } - } - - toString () { - return this.value - } - - test (version) { - debug('Comparator.test', version, this.options.loose) - - if (this.semver === ANY || version === ANY) { - return true - } - - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } - - return cmp(version, this.operator, this.semver, this.options) - } - - intersects (comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required') - } - - if (this.operator === '') { - if (this.value === '') { - return true - } - return new Range(comp.value, options).test(this.value) - } else if (comp.operator === '') { - if (comp.value === '') { - return true - } - return new Range(this.value, options).test(comp.semver) - } - - options = parseOptions(options) - - // Special cases where nothing can possibly be lower - if (options.includePrerelease && - (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) { - return false - } - if (!options.includePrerelease && - (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) { - return false - } - - // Same direction increasing (> or >=) - if (this.operator.startsWith('>') && comp.operator.startsWith('>')) { - return true - } - // Same direction decreasing (< or <=) - if (this.operator.startsWith('<') && comp.operator.startsWith('<')) { - return true - } - // same SemVer and both sides are inclusive (<= or >=) - if ( - (this.semver.version === comp.semver.version) && - this.operator.includes('=') && comp.operator.includes('=')) { - return true - } - // opposite directions less than - if (cmp(this.semver, '<', comp.semver, options) && - this.operator.startsWith('>') && comp.operator.startsWith('<')) { - return true - } - // opposite directions greater than - if (cmp(this.semver, '>', comp.semver, options) && - this.operator.startsWith('<') && comp.operator.startsWith('>')) { - return true - } - return false - } -} - -module.exports = Comparator - -const parseOptions = require('../internal/parse-options') -const { safeRe: re, t } = require('../internal/re') -const cmp = require('../functions/cmp') -const debug = require('../internal/debug') -const SemVer = require('./semver') -const Range = require('./range') diff --git a/sdks/nodejs/node_modules/semver/classes/index.js b/sdks/nodejs/node_modules/semver/classes/index.js deleted file mode 100644 index 91c24ec..0000000 --- a/sdks/nodejs/node_modules/semver/classes/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -module.exports = { - SemVer: require('./semver.js'), - Range: require('./range.js'), - Comparator: require('./comparator.js'), -} diff --git a/sdks/nodejs/node_modules/semver/classes/range.js b/sdks/nodejs/node_modules/semver/classes/range.js deleted file mode 100644 index 94629ce..0000000 --- a/sdks/nodejs/node_modules/semver/classes/range.js +++ /dev/null @@ -1,557 +0,0 @@ -'use strict' - -const SPACE_CHARACTERS = /\s+/g - -// hoisted class for cyclic dependency -class Range { - constructor (range, options) { - options = parseOptions(options) - - if (range instanceof Range) { - if ( - range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease - ) { - return range - } else { - return new Range(range.raw, options) - } - } - - if (range instanceof Comparator) { - // just put it in the set and return - this.raw = range.value - this.set = [[range]] - this.formatted = undefined - return this - } - - this.options = options - this.loose = !!options.loose - this.includePrerelease = !!options.includePrerelease - - // First reduce all whitespace as much as possible so we do not have to rely - // on potentially slow regexes like \s*. This is then stored and used for - // future error messages as well. - this.raw = range.trim().replace(SPACE_CHARACTERS, ' ') - - // First, split on || - this.set = this.raw - .split('||') - // map the range to a 2d array of comparators - .map(r => this.parseRange(r.trim())) - // throw out any comparator lists that are empty - // this generally means that it was not a valid range, which is allowed - // in loose mode, but will still throw if the WHOLE range is invalid. - .filter(c => c.length) - - if (!this.set.length) { - throw new TypeError(`Invalid SemVer Range: ${this.raw}`) - } - - // if we have any that are not the null set, throw out null sets. - if (this.set.length > 1) { - // keep the first one, in case they're all null sets - const first = this.set[0] - this.set = this.set.filter(c => !isNullSet(c[0])) - if (this.set.length === 0) { - this.set = [first] - } else if (this.set.length > 1) { - // if we have any that are *, then the range is just * - for (const c of this.set) { - if (c.length === 1 && isAny(c[0])) { - this.set = [c] - break - } - } - } - } - - this.formatted = undefined - } - - get range () { - if (this.formatted === undefined) { - this.formatted = '' - for (let i = 0; i < this.set.length; i++) { - if (i > 0) { - this.formatted += '||' - } - const comps = this.set[i] - for (let k = 0; k < comps.length; k++) { - if (k > 0) { - this.formatted += ' ' - } - this.formatted += comps[k].toString().trim() - } - } - } - return this.formatted - } - - format () { - return this.range - } - - toString () { - return this.range - } - - parseRange (range) { - // memoize range parsing for performance. - // this is a very hot path, and fully deterministic. - const memoOpts = - (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | - (this.options.loose && FLAG_LOOSE) - const memoKey = memoOpts + ':' + range - const cached = cache.get(memoKey) - if (cached) { - return cached - } - - const loose = this.options.loose - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] - range = range.replace(hr, hyphenReplace(this.options.includePrerelease)) - debug('hyphen replace', range) - - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) - debug('comparator trim', range) - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[t.TILDETRIM], tildeTrimReplace) - debug('tilde trim', range) - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[t.CARETTRIM], caretTrimReplace) - debug('caret trim', range) - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - let rangeList = range - .split(' ') - .map(comp => parseComparator(comp, this.options)) - .join(' ') - .split(/\s+/) - // >=0.0.0 is equivalent to * - .map(comp => replaceGTE0(comp, this.options)) - - if (loose) { - // in loose mode, throw out any that are not valid comparators - rangeList = rangeList.filter(comp => { - debug('loose invalid filter', comp, this.options) - return !!comp.match(re[t.COMPARATORLOOSE]) - }) - } - debug('range list', rangeList) - - // if any comparators are the null set, then replace with JUST null set - // if more than one comparator, remove any * comparators - // also, don't include the same comparator more than once - const rangeMap = new Map() - const comparators = rangeList.map(comp => new Comparator(comp, this.options)) - for (const comp of comparators) { - if (isNullSet(comp)) { - return [comp] - } - rangeMap.set(comp.value, comp) - } - if (rangeMap.size > 1 && rangeMap.has('')) { - rangeMap.delete('') - } - - const result = [...rangeMap.values()] - cache.set(memoKey, result) - return result - } - - intersects (range, options) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required') - } - - return this.set.some((thisComparators) => { - return ( - isSatisfiable(thisComparators, options) && - range.set.some((rangeComparators) => { - return ( - isSatisfiable(rangeComparators, options) && - thisComparators.every((thisComparator) => { - return rangeComparators.every((rangeComparator) => { - return thisComparator.intersects(rangeComparator, options) - }) - }) - ) - }) - ) - }) - } - - // if ANY of the sets match ALL of its comparators, then pass - test (version) { - if (!version) { - return false - } - - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } - - for (let i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true - } - } - return false - } -} - -module.exports = Range - -const LRU = require('../internal/lrucache') -const cache = new LRU() - -const parseOptions = require('../internal/parse-options') -const Comparator = require('./comparator') -const debug = require('../internal/debug') -const SemVer = require('./semver') -const { - safeRe: re, - t, - comparatorTrimReplace, - tildeTrimReplace, - caretTrimReplace, -} = require('../internal/re') -const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants') - -const isNullSet = c => c.value === '<0.0.0-0' -const isAny = c => c.value === '' - -// take a set of comparators and determine whether there -// exists a version which can satisfy it -const isSatisfiable = (comparators, options) => { - let result = true - const remainingComparators = comparators.slice() - let testComparator = remainingComparators.pop() - - while (result && remainingComparators.length) { - result = remainingComparators.every((otherComparator) => { - return testComparator.intersects(otherComparator, options) - }) - - testComparator = remainingComparators.pop() - } - - return result -} - -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -const parseComparator = (comp, options) => { - comp = comp.replace(re[t.BUILD], '') - debug('comp', comp, options) - comp = replaceCarets(comp, options) - debug('caret', comp) - comp = replaceTildes(comp, options) - debug('tildes', comp) - comp = replaceXRanges(comp, options) - debug('xrange', comp) - comp = replaceStars(comp, options) - debug('stars', comp) - return comp -} - -const isX = id => !id || id.toLowerCase() === 'x' || id === '*' - -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 -// ~0.0.1 --> >=0.0.1 <0.1.0-0 -const replaceTildes = (comp, options) => { - return comp - .trim() - .split(/\s+/) - .map((c) => replaceTilde(c, options)) - .join(' ') -} - -const replaceTilde = (comp, options) => { - const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] - return comp.replace(r, (_, M, m, p, pr) => { - debug('tilde', comp, _, M, m, p, pr) - let ret - - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = `>=${M}.0.0 <${+M + 1}.0.0-0` - } else if (isX(p)) { - // ~1.2 == >=1.2.0 <1.3.0-0 - ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0` - } else if (pr) { - debug('replaceTilde pr', pr) - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${+m + 1}.0-0` - } else { - // ~1.2.3 == >=1.2.3 <1.3.0-0 - ret = `>=${M}.${m}.${p - } <${M}.${+m + 1}.0-0` - } - - debug('tilde return', ret) - return ret - }) -} - -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 -// ^1.2.3 --> >=1.2.3 <2.0.0-0 -// ^1.2.0 --> >=1.2.0 <2.0.0-0 -// ^0.0.1 --> >=0.0.1 <0.0.2-0 -// ^0.1.0 --> >=0.1.0 <0.2.0-0 -const replaceCarets = (comp, options) => { - return comp - .trim() - .split(/\s+/) - .map((c) => replaceCaret(c, options)) - .join(' ') -} - -const replaceCaret = (comp, options) => { - debug('caret', comp, options) - const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] - const z = options.includePrerelease ? '-0' : '' - return comp.replace(r, (_, M, m, p, pr) => { - debug('caret', comp, _, M, m, p, pr) - let ret - - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0` - } else if (isX(p)) { - if (M === '0') { - ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0` - } else { - ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0` - } - } else if (pr) { - debug('replaceCaret pr', pr) - if (M === '0') { - if (m === '0') { - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${m}.${+p + 1}-0` - } else { - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${+m + 1}.0-0` - } - } else { - ret = `>=${M}.${m}.${p}-${pr - } <${+M + 1}.0.0-0` - } - } else { - debug('no pr') - if (M === '0') { - if (m === '0') { - ret = `>=${M}.${m}.${p - }${z} <${M}.${m}.${+p + 1}-0` - } else { - ret = `>=${M}.${m}.${p - }${z} <${M}.${+m + 1}.0-0` - } - } else { - ret = `>=${M}.${m}.${p - } <${+M + 1}.0.0-0` - } - } - - debug('caret return', ret) - return ret - }) -} - -const replaceXRanges = (comp, options) => { - debug('replaceXRanges', comp, options) - return comp - .split(/\s+/) - .map((c) => replaceXRange(c, options)) - .join(' ') -} - -const replaceXRange = (comp, options) => { - comp = comp.trim() - const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] - return comp.replace(r, (ret, gtlt, M, m, p, pr) => { - debug('xRange', comp, ret, gtlt, M, m, p, pr) - const xM = isX(M) - const xm = xM || isX(m) - const xp = xm || isX(p) - const anyX = xp - - if (gtlt === '=' && anyX) { - gtlt = '' - } - - // if we're including prereleases in the match, then we need - // to fix this to -0, the lowest possible prerelease value - pr = options.includePrerelease ? '-0' : '' - - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0-0' - } else { - // nothing is forbidden - ret = '*' - } - } else if (gtlt && anyX) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0 - } - p = 0 - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - gtlt = '>=' - if (xm) { - M = +M + 1 - m = 0 - p = 0 - } else { - m = +m + 1 - p = 0 - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<' - if (xm) { - M = +M + 1 - } else { - m = +m + 1 - } - } - - if (gtlt === '<') { - pr = '-0' - } - - ret = `${gtlt + M}.${m}.${p}${pr}` - } else if (xm) { - ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0` - } else if (xp) { - ret = `>=${M}.${m}.0${pr - } <${M}.${+m + 1}.0-0` - } - - debug('xRange return', ret) - - return ret - }) -} - -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -const replaceStars = (comp, options) => { - debug('replaceStars', comp, options) - // Looseness is ignored here. star is always as loose as it gets! - return comp - .trim() - .replace(re[t.STAR], '') -} - -const replaceGTE0 = (comp, options) => { - debug('replaceGTE0', comp, options) - return comp - .trim() - .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '') -} - -// This function is passed to string.replace(re[t.HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 -// TODO build? -const hyphenReplace = incPr => ($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr) => { - if (isX(fM)) { - from = '' - } else if (isX(fm)) { - from = `>=${fM}.0.0${incPr ? '-0' : ''}` - } else if (isX(fp)) { - from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}` - } else if (fpr) { - from = `>=${from}` - } else { - from = `>=${from}${incPr ? '-0' : ''}` - } - - if (isX(tM)) { - to = '' - } else if (isX(tm)) { - to = `<${+tM + 1}.0.0-0` - } else if (isX(tp)) { - to = `<${tM}.${+tm + 1}.0-0` - } else if (tpr) { - to = `<=${tM}.${tm}.${tp}-${tpr}` - } else if (incPr) { - to = `<${tM}.${tm}.${+tp + 1}-0` - } else { - to = `<=${to}` - } - - return `${from} ${to}`.trim() -} - -const testSet = (set, version, options) => { - for (let i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false - } - } - - if (version.prerelease.length && !options.includePrerelease) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (let i = 0; i < set.length; i++) { - debug(set[i].semver) - if (set[i].semver === Comparator.ANY) { - continue - } - - if (set[i].semver.prerelease.length > 0) { - const allowed = set[i].semver - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) { - return true - } - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false - } - - return true -} diff --git a/sdks/nodejs/node_modules/semver/classes/semver.js b/sdks/nodejs/node_modules/semver/classes/semver.js deleted file mode 100644 index 92254be..0000000 --- a/sdks/nodejs/node_modules/semver/classes/semver.js +++ /dev/null @@ -1,333 +0,0 @@ -'use strict' - -const debug = require('../internal/debug') -const { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants') -const { safeRe: re, t } = require('../internal/re') - -const parseOptions = require('../internal/parse-options') -const { compareIdentifiers } = require('../internal/identifiers') -class SemVer { - constructor (version, options) { - options = parseOptions(options) - - if (version instanceof SemVer) { - if (version.loose === !!options.loose && - version.includePrerelease === !!options.includePrerelease) { - return version - } else { - version = version.version - } - } else if (typeof version !== 'string') { - throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`) - } - - if (version.length > MAX_LENGTH) { - throw new TypeError( - `version is longer than ${MAX_LENGTH} characters` - ) - } - - debug('SemVer', version, options) - this.options = options - this.loose = !!options.loose - // this isn't actually relevant for versions, but keep it so that we - // don't run into trouble passing this.options around. - this.includePrerelease = !!options.includePrerelease - - const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) - - if (!m) { - throw new TypeError(`Invalid Version: ${version}`) - } - - this.raw = version - - // these are actually numbers - this.major = +m[1] - this.minor = +m[2] - this.patch = +m[3] - - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError('Invalid major version') - } - - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError('Invalid minor version') - } - - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError('Invalid patch version') - } - - // numberify any prerelease numeric ids - if (!m[4]) { - this.prerelease = [] - } else { - this.prerelease = m[4].split('.').map((id) => { - if (/^[0-9]+$/.test(id)) { - const num = +id - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num - } - } - return id - }) - } - - this.build = m[5] ? m[5].split('.') : [] - this.format() - } - - format () { - this.version = `${this.major}.${this.minor}.${this.patch}` - if (this.prerelease.length) { - this.version += `-${this.prerelease.join('.')}` - } - return this.version - } - - toString () { - return this.version - } - - compare (other) { - debug('SemVer.compare', this.version, this.options, other) - if (!(other instanceof SemVer)) { - if (typeof other === 'string' && other === this.version) { - return 0 - } - other = new SemVer(other, this.options) - } - - if (other.version === this.version) { - return 0 - } - - return this.compareMain(other) || this.comparePre(other) - } - - compareMain (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - if (this.major < other.major) { - return -1 - } - if (this.major > other.major) { - return 1 - } - if (this.minor < other.minor) { - return -1 - } - if (this.minor > other.minor) { - return 1 - } - if (this.patch < other.patch) { - return -1 - } - if (this.patch > other.patch) { - return 1 - } - return 0 - } - - comparePre (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) { - return -1 - } else if (!this.prerelease.length && other.prerelease.length) { - return 1 - } else if (!this.prerelease.length && !other.prerelease.length) { - return 0 - } - - let i = 0 - do { - const a = this.prerelease[i] - const b = other.prerelease[i] - debug('prerelease compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) - } - - compareBuild (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - let i = 0 - do { - const a = this.build[i] - const b = other.build[i] - debug('build compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) - } - - // preminor will bump the version up to the next minor release, and immediately - // down to pre-release. premajor and prepatch work the same way. - inc (release, identifier, identifierBase) { - if (release.startsWith('pre')) { - if (!identifier && identifierBase === false) { - throw new Error('invalid increment argument: identifier is empty') - } - // Avoid an invalid semver results - if (identifier) { - const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]) - if (!match || match[1] !== identifier) { - throw new Error(`invalid identifier: ${identifier}`) - } - } - } - - switch (release) { - case 'premajor': - this.prerelease.length = 0 - this.patch = 0 - this.minor = 0 - this.major++ - this.inc('pre', identifier, identifierBase) - break - case 'preminor': - this.prerelease.length = 0 - this.patch = 0 - this.minor++ - this.inc('pre', identifier, identifierBase) - break - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0 - this.inc('patch', identifier, identifierBase) - this.inc('pre', identifier, identifierBase) - break - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) { - this.inc('patch', identifier, identifierBase) - } - this.inc('pre', identifier, identifierBase) - break - case 'release': - if (this.prerelease.length === 0) { - throw new Error(`version ${this.raw} is not a prerelease`) - } - this.prerelease.length = 0 - break - - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if ( - this.minor !== 0 || - this.patch !== 0 || - this.prerelease.length === 0 - ) { - this.major++ - } - this.minor = 0 - this.patch = 0 - this.prerelease = [] - break - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) { - this.minor++ - } - this.patch = 0 - this.prerelease = [] - break - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) { - this.patch++ - } - this.prerelease = [] - break - // This probably shouldn't be used publicly. - // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. - case 'pre': { - const base = Number(identifierBase) ? 1 : 0 - - if (this.prerelease.length === 0) { - this.prerelease = [base] - } else { - let i = this.prerelease.length - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++ - i = -2 - } - } - if (i === -1) { - // didn't increment anything - if (identifier === this.prerelease.join('.') && identifierBase === false) { - throw new Error('invalid increment argument: identifier already exists') - } - this.prerelease.push(base) - } - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - let prerelease = [identifier, base] - if (identifierBase === false) { - prerelease = [identifier] - } - if (compareIdentifiers(this.prerelease[0], identifier) === 0) { - if (isNaN(this.prerelease[1])) { - this.prerelease = prerelease - } - } else { - this.prerelease = prerelease - } - } - break - } - default: - throw new Error(`invalid increment argument: ${release}`) - } - this.raw = this.format() - if (this.build.length) { - this.raw += `+${this.build.join('.')}` - } - return this - } -} - -module.exports = SemVer diff --git a/sdks/nodejs/node_modules/semver/functions/clean.js b/sdks/nodejs/node_modules/semver/functions/clean.js deleted file mode 100644 index 79703d6..0000000 --- a/sdks/nodejs/node_modules/semver/functions/clean.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict' - -const parse = require('./parse') -const clean = (version, options) => { - const s = parse(version.trim().replace(/^[=v]+/, ''), options) - return s ? s.version : null -} -module.exports = clean diff --git a/sdks/nodejs/node_modules/semver/functions/cmp.js b/sdks/nodejs/node_modules/semver/functions/cmp.js deleted file mode 100644 index 77487dc..0000000 --- a/sdks/nodejs/node_modules/semver/functions/cmp.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict' - -const eq = require('./eq') -const neq = require('./neq') -const gt = require('./gt') -const gte = require('./gte') -const lt = require('./lt') -const lte = require('./lte') - -const cmp = (a, op, b, loose) => { - switch (op) { - case '===': - if (typeof a === 'object') { - a = a.version - } - if (typeof b === 'object') { - b = b.version - } - return a === b - - case '!==': - if (typeof a === 'object') { - a = a.version - } - if (typeof b === 'object') { - b = b.version - } - return a !== b - - case '': - case '=': - case '==': - return eq(a, b, loose) - - case '!=': - return neq(a, b, loose) - - case '>': - return gt(a, b, loose) - - case '>=': - return gte(a, b, loose) - - case '<': - return lt(a, b, loose) - - case '<=': - return lte(a, b, loose) - - default: - throw new TypeError(`Invalid operator: ${op}`) - } -} -module.exports = cmp diff --git a/sdks/nodejs/node_modules/semver/functions/coerce.js b/sdks/nodejs/node_modules/semver/functions/coerce.js deleted file mode 100644 index cfe0275..0000000 --- a/sdks/nodejs/node_modules/semver/functions/coerce.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict' - -const SemVer = require('../classes/semver') -const parse = require('./parse') -const { safeRe: re, t } = require('../internal/re') - -const coerce = (version, options) => { - if (version instanceof SemVer) { - return version - } - - if (typeof version === 'number') { - version = String(version) - } - - if (typeof version !== 'string') { - return null - } - - options = options || {} - - let match = null - if (!options.rtl) { - match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]) - } else { - // Find the right-most coercible string that does not share - // a terminus with a more left-ward coercible string. - // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' - // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4' - // - // Walk through the string checking with a /g regexp - // Manually set the index so as to pick up overlapping matches. - // Stop when we get a match that ends at the string end, since no - // coercible string can be more right-ward without the same terminus. - const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL] - let next - while ((next = coerceRtlRegex.exec(version)) && - (!match || match.index + match[0].length !== version.length) - ) { - if (!match || - next.index + next[0].length !== match.index + match[0].length) { - match = next - } - coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length - } - // leave it in a clean state - coerceRtlRegex.lastIndex = -1 - } - - if (match === null) { - return null - } - - const major = match[2] - const minor = match[3] || '0' - const patch = match[4] || '0' - const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : '' - const build = options.includePrerelease && match[6] ? `+${match[6]}` : '' - - return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options) -} -module.exports = coerce diff --git a/sdks/nodejs/node_modules/semver/functions/compare-build.js b/sdks/nodejs/node_modules/semver/functions/compare-build.js deleted file mode 100644 index 99157cf..0000000 --- a/sdks/nodejs/node_modules/semver/functions/compare-build.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict' - -const SemVer = require('../classes/semver') -const compareBuild = (a, b, loose) => { - const versionA = new SemVer(a, loose) - const versionB = new SemVer(b, loose) - return versionA.compare(versionB) || versionA.compareBuild(versionB) -} -module.exports = compareBuild diff --git a/sdks/nodejs/node_modules/semver/functions/compare-loose.js b/sdks/nodejs/node_modules/semver/functions/compare-loose.js deleted file mode 100644 index 7531634..0000000 --- a/sdks/nodejs/node_modules/semver/functions/compare-loose.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const compare = require('./compare') -const compareLoose = (a, b) => compare(a, b, true) -module.exports = compareLoose diff --git a/sdks/nodejs/node_modules/semver/functions/compare.js b/sdks/nodejs/node_modules/semver/functions/compare.js deleted file mode 100644 index 63d8090..0000000 --- a/sdks/nodejs/node_modules/semver/functions/compare.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -const SemVer = require('../classes/semver') -const compare = (a, b, loose) => - new SemVer(a, loose).compare(new SemVer(b, loose)) - -module.exports = compare diff --git a/sdks/nodejs/node_modules/semver/functions/diff.js b/sdks/nodejs/node_modules/semver/functions/diff.js deleted file mode 100644 index c99ab51..0000000 --- a/sdks/nodejs/node_modules/semver/functions/diff.js +++ /dev/null @@ -1,60 +0,0 @@ -'use strict' - -const parse = require('./parse.js') - -const diff = (version1, version2) => { - const v1 = parse(version1, null, true) - const v2 = parse(version2, null, true) - const comparison = v1.compare(v2) - - if (comparison === 0) { - return null - } - - const v1Higher = comparison > 0 - const highVersion = v1Higher ? v1 : v2 - const lowVersion = v1Higher ? v2 : v1 - const highHasPre = !!highVersion.prerelease.length - const lowHasPre = !!lowVersion.prerelease.length - - if (lowHasPre && !highHasPre) { - // Going from prerelease -> no prerelease requires some special casing - - // If the low version has only a major, then it will always be a major - // Some examples: - // 1.0.0-1 -> 1.0.0 - // 1.0.0-1 -> 1.1.1 - // 1.0.0-1 -> 2.0.0 - if (!lowVersion.patch && !lowVersion.minor) { - return 'major' - } - - // If the main part has no difference - if (lowVersion.compareMain(highVersion) === 0) { - if (lowVersion.minor && !lowVersion.patch) { - return 'minor' - } - return 'patch' - } - } - - // add the `pre` prefix if we are going to a prerelease version - const prefix = highHasPre ? 'pre' : '' - - if (v1.major !== v2.major) { - return prefix + 'major' - } - - if (v1.minor !== v2.minor) { - return prefix + 'minor' - } - - if (v1.patch !== v2.patch) { - return prefix + 'patch' - } - - // high and low are prereleases - return 'prerelease' -} - -module.exports = diff diff --git a/sdks/nodejs/node_modules/semver/functions/eq.js b/sdks/nodejs/node_modules/semver/functions/eq.js deleted file mode 100644 index 5f0eead..0000000 --- a/sdks/nodejs/node_modules/semver/functions/eq.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const compare = require('./compare') -const eq = (a, b, loose) => compare(a, b, loose) === 0 -module.exports = eq diff --git a/sdks/nodejs/node_modules/semver/functions/gt.js b/sdks/nodejs/node_modules/semver/functions/gt.js deleted file mode 100644 index 84a57dd..0000000 --- a/sdks/nodejs/node_modules/semver/functions/gt.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const compare = require('./compare') -const gt = (a, b, loose) => compare(a, b, loose) > 0 -module.exports = gt diff --git a/sdks/nodejs/node_modules/semver/functions/gte.js b/sdks/nodejs/node_modules/semver/functions/gte.js deleted file mode 100644 index 7c52bdf..0000000 --- a/sdks/nodejs/node_modules/semver/functions/gte.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const compare = require('./compare') -const gte = (a, b, loose) => compare(a, b, loose) >= 0 -module.exports = gte diff --git a/sdks/nodejs/node_modules/semver/functions/inc.js b/sdks/nodejs/node_modules/semver/functions/inc.js deleted file mode 100644 index ff999e9..0000000 --- a/sdks/nodejs/node_modules/semver/functions/inc.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict' - -const SemVer = require('../classes/semver') - -const inc = (version, release, options, identifier, identifierBase) => { - if (typeof (options) === 'string') { - identifierBase = identifier - identifier = options - options = undefined - } - - try { - return new SemVer( - version instanceof SemVer ? version.version : version, - options - ).inc(release, identifier, identifierBase).version - } catch (er) { - return null - } -} -module.exports = inc diff --git a/sdks/nodejs/node_modules/semver/functions/lt.js b/sdks/nodejs/node_modules/semver/functions/lt.js deleted file mode 100644 index 2fb32a0..0000000 --- a/sdks/nodejs/node_modules/semver/functions/lt.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const compare = require('./compare') -const lt = (a, b, loose) => compare(a, b, loose) < 0 -module.exports = lt diff --git a/sdks/nodejs/node_modules/semver/functions/lte.js b/sdks/nodejs/node_modules/semver/functions/lte.js deleted file mode 100644 index da9ee8f..0000000 --- a/sdks/nodejs/node_modules/semver/functions/lte.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const compare = require('./compare') -const lte = (a, b, loose) => compare(a, b, loose) <= 0 -module.exports = lte diff --git a/sdks/nodejs/node_modules/semver/functions/major.js b/sdks/nodejs/node_modules/semver/functions/major.js deleted file mode 100644 index e6d08dc..0000000 --- a/sdks/nodejs/node_modules/semver/functions/major.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const SemVer = require('../classes/semver') -const major = (a, loose) => new SemVer(a, loose).major -module.exports = major diff --git a/sdks/nodejs/node_modules/semver/functions/minor.js b/sdks/nodejs/node_modules/semver/functions/minor.js deleted file mode 100644 index 9e70ffd..0000000 --- a/sdks/nodejs/node_modules/semver/functions/minor.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const SemVer = require('../classes/semver') -const minor = (a, loose) => new SemVer(a, loose).minor -module.exports = minor diff --git a/sdks/nodejs/node_modules/semver/functions/neq.js b/sdks/nodejs/node_modules/semver/functions/neq.js deleted file mode 100644 index 84326b7..0000000 --- a/sdks/nodejs/node_modules/semver/functions/neq.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const compare = require('./compare') -const neq = (a, b, loose) => compare(a, b, loose) !== 0 -module.exports = neq diff --git a/sdks/nodejs/node_modules/semver/functions/parse.js b/sdks/nodejs/node_modules/semver/functions/parse.js deleted file mode 100644 index d544d33..0000000 --- a/sdks/nodejs/node_modules/semver/functions/parse.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict' - -const SemVer = require('../classes/semver') -const parse = (version, options, throwErrors = false) => { - if (version instanceof SemVer) { - return version - } - try { - return new SemVer(version, options) - } catch (er) { - if (!throwErrors) { - return null - } - throw er - } -} - -module.exports = parse diff --git a/sdks/nodejs/node_modules/semver/functions/patch.js b/sdks/nodejs/node_modules/semver/functions/patch.js deleted file mode 100644 index 7675162..0000000 --- a/sdks/nodejs/node_modules/semver/functions/patch.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const SemVer = require('../classes/semver') -const patch = (a, loose) => new SemVer(a, loose).patch -module.exports = patch diff --git a/sdks/nodejs/node_modules/semver/functions/prerelease.js b/sdks/nodejs/node_modules/semver/functions/prerelease.js deleted file mode 100644 index b8fe1db..0000000 --- a/sdks/nodejs/node_modules/semver/functions/prerelease.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict' - -const parse = require('./parse') -const prerelease = (version, options) => { - const parsed = parse(version, options) - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null -} -module.exports = prerelease diff --git a/sdks/nodejs/node_modules/semver/functions/rcompare.js b/sdks/nodejs/node_modules/semver/functions/rcompare.js deleted file mode 100644 index 8e1c222..0000000 --- a/sdks/nodejs/node_modules/semver/functions/rcompare.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const compare = require('./compare') -const rcompare = (a, b, loose) => compare(b, a, loose) -module.exports = rcompare diff --git a/sdks/nodejs/node_modules/semver/functions/rsort.js b/sdks/nodejs/node_modules/semver/functions/rsort.js deleted file mode 100644 index 5d3d200..0000000 --- a/sdks/nodejs/node_modules/semver/functions/rsort.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const compareBuild = require('./compare-build') -const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)) -module.exports = rsort diff --git a/sdks/nodejs/node_modules/semver/functions/satisfies.js b/sdks/nodejs/node_modules/semver/functions/satisfies.js deleted file mode 100644 index a0264a2..0000000 --- a/sdks/nodejs/node_modules/semver/functions/satisfies.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict' - -const Range = require('../classes/range') -const satisfies = (version, range, options) => { - try { - range = new Range(range, options) - } catch (er) { - return false - } - return range.test(version) -} -module.exports = satisfies diff --git a/sdks/nodejs/node_modules/semver/functions/sort.js b/sdks/nodejs/node_modules/semver/functions/sort.js deleted file mode 100644 index edb24b1..0000000 --- a/sdks/nodejs/node_modules/semver/functions/sort.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const compareBuild = require('./compare-build') -const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)) -module.exports = sort diff --git a/sdks/nodejs/node_modules/semver/functions/valid.js b/sdks/nodejs/node_modules/semver/functions/valid.js deleted file mode 100644 index 0db67ed..0000000 --- a/sdks/nodejs/node_modules/semver/functions/valid.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict' - -const parse = require('./parse') -const valid = (version, options) => { - const v = parse(version, options) - return v ? v.version : null -} -module.exports = valid diff --git a/sdks/nodejs/node_modules/semver/index.js b/sdks/nodejs/node_modules/semver/index.js deleted file mode 100644 index 285662a..0000000 --- a/sdks/nodejs/node_modules/semver/index.js +++ /dev/null @@ -1,91 +0,0 @@ -'use strict' - -// just pre-load all the stuff that index.js lazily exports -const internalRe = require('./internal/re') -const constants = require('./internal/constants') -const SemVer = require('./classes/semver') -const identifiers = require('./internal/identifiers') -const parse = require('./functions/parse') -const valid = require('./functions/valid') -const clean = require('./functions/clean') -const inc = require('./functions/inc') -const diff = require('./functions/diff') -const major = require('./functions/major') -const minor = require('./functions/minor') -const patch = require('./functions/patch') -const prerelease = require('./functions/prerelease') -const compare = require('./functions/compare') -const rcompare = require('./functions/rcompare') -const compareLoose = require('./functions/compare-loose') -const compareBuild = require('./functions/compare-build') -const sort = require('./functions/sort') -const rsort = require('./functions/rsort') -const gt = require('./functions/gt') -const lt = require('./functions/lt') -const eq = require('./functions/eq') -const neq = require('./functions/neq') -const gte = require('./functions/gte') -const lte = require('./functions/lte') -const cmp = require('./functions/cmp') -const coerce = require('./functions/coerce') -const Comparator = require('./classes/comparator') -const Range = require('./classes/range') -const satisfies = require('./functions/satisfies') -const toComparators = require('./ranges/to-comparators') -const maxSatisfying = require('./ranges/max-satisfying') -const minSatisfying = require('./ranges/min-satisfying') -const minVersion = require('./ranges/min-version') -const validRange = require('./ranges/valid') -const outside = require('./ranges/outside') -const gtr = require('./ranges/gtr') -const ltr = require('./ranges/ltr') -const intersects = require('./ranges/intersects') -const simplifyRange = require('./ranges/simplify') -const subset = require('./ranges/subset') -module.exports = { - parse, - valid, - clean, - inc, - diff, - major, - minor, - patch, - prerelease, - compare, - rcompare, - compareLoose, - compareBuild, - sort, - rsort, - gt, - lt, - eq, - neq, - gte, - lte, - cmp, - coerce, - Comparator, - Range, - satisfies, - toComparators, - maxSatisfying, - minSatisfying, - minVersion, - validRange, - outside, - gtr, - ltr, - intersects, - simplifyRange, - subset, - SemVer, - re: internalRe.re, - src: internalRe.src, - tokens: internalRe.t, - SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, - RELEASE_TYPES: constants.RELEASE_TYPES, - compareIdentifiers: identifiers.compareIdentifiers, - rcompareIdentifiers: identifiers.rcompareIdentifiers, -} diff --git a/sdks/nodejs/node_modules/semver/internal/constants.js b/sdks/nodejs/node_modules/semver/internal/constants.js deleted file mode 100644 index 6d1db91..0000000 --- a/sdks/nodejs/node_modules/semver/internal/constants.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict' - -// Note: this is the semver.org version of the spec that it implements -// Not necessarily the package version of this code. -const SEMVER_SPEC_VERSION = '2.0.0' - -const MAX_LENGTH = 256 -const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || -/* istanbul ignore next */ 9007199254740991 - -// Max safe segment length for coercion. -const MAX_SAFE_COMPONENT_LENGTH = 16 - -// Max safe length for a build identifier. The max length minus 6 characters for -// the shortest version with a build 0.0.0+BUILD. -const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6 - -const RELEASE_TYPES = [ - 'major', - 'premajor', - 'minor', - 'preminor', - 'patch', - 'prepatch', - 'prerelease', -] - -module.exports = { - MAX_LENGTH, - MAX_SAFE_COMPONENT_LENGTH, - MAX_SAFE_BUILD_LENGTH, - MAX_SAFE_INTEGER, - RELEASE_TYPES, - SEMVER_SPEC_VERSION, - FLAG_INCLUDE_PRERELEASE: 0b001, - FLAG_LOOSE: 0b010, -} diff --git a/sdks/nodejs/node_modules/semver/internal/debug.js b/sdks/nodejs/node_modules/semver/internal/debug.js deleted file mode 100644 index 20d1e9d..0000000 --- a/sdks/nodejs/node_modules/semver/internal/debug.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict' - -const debug = ( - typeof process === 'object' && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG) -) ? (...args) => console.error('SEMVER', ...args) - : () => {} - -module.exports = debug diff --git a/sdks/nodejs/node_modules/semver/internal/identifiers.js b/sdks/nodejs/node_modules/semver/internal/identifiers.js deleted file mode 100644 index d053472..0000000 --- a/sdks/nodejs/node_modules/semver/internal/identifiers.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict' - -const numeric = /^[0-9]+$/ -const compareIdentifiers = (a, b) => { - if (typeof a === 'number' && typeof b === 'number') { - return a === b ? 0 : a < b ? -1 : 1 - } - - const anum = numeric.test(a) - const bnum = numeric.test(b) - - if (anum && bnum) { - a = +a - b = +b - } - - return a === b ? 0 - : (anum && !bnum) ? -1 - : (bnum && !anum) ? 1 - : a < b ? -1 - : 1 -} - -const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a) - -module.exports = { - compareIdentifiers, - rcompareIdentifiers, -} diff --git a/sdks/nodejs/node_modules/semver/internal/lrucache.js b/sdks/nodejs/node_modules/semver/internal/lrucache.js deleted file mode 100644 index b8bf526..0000000 --- a/sdks/nodejs/node_modules/semver/internal/lrucache.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict' - -class LRUCache { - constructor () { - this.max = 1000 - this.map = new Map() - } - - get (key) { - const value = this.map.get(key) - if (value === undefined) { - return undefined - } else { - // Remove the key from the map and add it to the end - this.map.delete(key) - this.map.set(key, value) - return value - } - } - - delete (key) { - return this.map.delete(key) - } - - set (key, value) { - const deleted = this.delete(key) - - if (!deleted && value !== undefined) { - // If cache is full, delete the least recently used item - if (this.map.size >= this.max) { - const firstKey = this.map.keys().next().value - this.delete(firstKey) - } - - this.map.set(key, value) - } - - return this - } -} - -module.exports = LRUCache diff --git a/sdks/nodejs/node_modules/semver/internal/parse-options.js b/sdks/nodejs/node_modules/semver/internal/parse-options.js deleted file mode 100644 index 5295454..0000000 --- a/sdks/nodejs/node_modules/semver/internal/parse-options.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict' - -// parse out just the options we care about -const looseOption = Object.freeze({ loose: true }) -const emptyOpts = Object.freeze({ }) -const parseOptions = options => { - if (!options) { - return emptyOpts - } - - if (typeof options !== 'object') { - return looseOption - } - - return options -} -module.exports = parseOptions diff --git a/sdks/nodejs/node_modules/semver/internal/re.js b/sdks/nodejs/node_modules/semver/internal/re.js deleted file mode 100644 index 639fca8..0000000 --- a/sdks/nodejs/node_modules/semver/internal/re.js +++ /dev/null @@ -1,223 +0,0 @@ -'use strict' - -const { - MAX_SAFE_COMPONENT_LENGTH, - MAX_SAFE_BUILD_LENGTH, - MAX_LENGTH, -} = require('./constants') -const debug = require('./debug') -exports = module.exports = {} - -// The actual regexps go on exports.re -const re = exports.re = [] -const safeRe = exports.safeRe = [] -const src = exports.src = [] -const safeSrc = exports.safeSrc = [] -const t = exports.t = {} -let R = 0 - -const LETTERDASHNUMBER = '[a-zA-Z0-9-]' - -// Replace some greedy regex tokens to prevent regex dos issues. These regex are -// used internally via the safeRe object since all inputs in this library get -// normalized first to trim and collapse all extra whitespace. The original -// regexes are exported for userland consumption and lower level usage. A -// future breaking change could export the safer regex only with a note that -// all input should have extra whitespace removed. -const safeRegexReplacements = [ - ['\\s', 1], - ['\\d', MAX_LENGTH], - [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], -] - -const makeSafeRegex = (value) => { - for (const [token, max] of safeRegexReplacements) { - value = value - .split(`${token}*`).join(`${token}{0,${max}}`) - .split(`${token}+`).join(`${token}{1,${max}}`) - } - return value -} - -const createToken = (name, value, isGlobal) => { - const safe = makeSafeRegex(value) - const index = R++ - debug(name, index, value) - t[name] = index - src[index] = value - safeSrc[index] = safe - re[index] = new RegExp(value, isGlobal ? 'g' : undefined) - safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined) -} - -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. - -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. - -createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*') -createToken('NUMERICIDENTIFIERLOOSE', '\\d+') - -// ## Non-numeric Identifier -// Zero or more digits, followed by a letter or hyphen, and then zero or -// more letters, digits, or hyphens. - -createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`) - -// ## Main Version -// Three dot-separated numeric identifiers. - -createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})`) - -createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})`) - -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. -// Non-numeric identifiers include numeric identifiers but can be longer. -// Therefore non-numeric identifiers must go first. - -createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER] -}|${src[t.NUMERICIDENTIFIER]})`) - -createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER] -}|${src[t.NUMERICIDENTIFIERLOOSE]})`) - -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. - -createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] -}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`) - -createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] -}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`) - -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. - -createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`) - -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. - -createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] -}(?:\\.${src[t.BUILDIDENTIFIER]})*))`) - -// ## Full Version String -// A main version, followed optionally by a pre-release version and -// build metadata. - -// Note that the only major, minor, patch, and pre-release sections of -// the version string are capturing groups. The build metadata is not a -// capturing group, because it should not ever be used in version -// comparison. - -createToken('FULLPLAIN', `v?${src[t.MAINVERSION] -}${src[t.PRERELEASE]}?${ - src[t.BUILD]}?`) - -createToken('FULL', `^${src[t.FULLPLAIN]}$`) - -// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. -// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty -// common in the npm registry. -createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] -}${src[t.PRERELEASELOOSE]}?${ - src[t.BUILD]}?`) - -createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`) - -createToken('GTLT', '((?:<|>)?=?)') - -// Something like "2.*" or "1.2.x". -// Note that "x.x" is a valid xRange identifer, meaning "any version" -// Only the first item is strictly required. -createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`) -createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`) - -createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:${src[t.PRERELEASE]})?${ - src[t.BUILD]}?` + - `)?)?`) - -createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:${src[t.PRERELEASELOOSE]})?${ - src[t.BUILD]}?` + - `)?)?`) - -createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`) -createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`) - -// Coercion. -// Extract anything that could conceivably be a part of a valid semver -createToken('COERCEPLAIN', `${'(^|[^\\d])' + - '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`) -createToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\d])`) -createToken('COERCEFULL', src[t.COERCEPLAIN] + - `(?:${src[t.PRERELEASE]})?` + - `(?:${src[t.BUILD]})?` + - `(?:$|[^\\d])`) -createToken('COERCERTL', src[t.COERCE], true) -createToken('COERCERTLFULL', src[t.COERCEFULL], true) - -// Tilde ranges. -// Meaning is "reasonably at or greater than" -createToken('LONETILDE', '(?:~>?)') - -createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true) -exports.tildeTrimReplace = '$1~' - -createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`) -createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`) - -// Caret ranges. -// Meaning is "at least and backwards compatible with" -createToken('LONECARET', '(?:\\^)') - -createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true) -exports.caretTrimReplace = '$1^' - -createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`) -createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`) - -// A simple gt/lt/eq thing, or just "" to indicate "any version" -createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`) -createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`) - -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] -}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true) -exports.comparatorTrimReplace = '$1$2$3' - -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + - `\\s+-\\s+` + - `(${src[t.XRANGEPLAIN]})` + - `\\s*$`) - -createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + - `\\s+-\\s+` + - `(${src[t.XRANGEPLAINLOOSE]})` + - `\\s*$`) - -// Star ranges basically just allow anything at all. -createToken('STAR', '(<|>)?=?\\s*\\*') -// >=0.0.0 is like a star -createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$') -createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$') diff --git a/sdks/nodejs/node_modules/semver/package.json b/sdks/nodejs/node_modules/semver/package.json deleted file mode 100644 index a84de91..0000000 --- a/sdks/nodejs/node_modules/semver/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "semver", - "version": "7.7.4", - "description": "The semantic version parser used by npm.", - "main": "index.js", - "scripts": { - "test": "tap", - "snap": "tap", - "lint": "npm run eslint", - "postlint": "template-oss-check", - "lintfix": "npm run eslint -- --fix", - "posttest": "npm run lint", - "template-oss-apply": "template-oss-apply --force", - "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\"" - }, - "devDependencies": { - "@npmcli/eslint-config": "^6.0.0", - "@npmcli/template-oss": "4.29.0", - "benchmark": "^2.1.4", - "tap": "^16.0.0" - }, - "license": "ISC", - "repository": { - "type": "git", - "url": "git+https://github.com/npm/node-semver.git" - }, - "bin": { - "semver": "bin/semver.js" - }, - "files": [ - "bin/", - "lib/", - "classes/", - "functions/", - "internal/", - "ranges/", - "index.js", - "preload.js", - "range.bnf" - ], - "tap": { - "timeout": 30, - "coverage-map": "map.js", - "nyc-arg": [ - "--exclude", - "tap-snapshots/**" - ] - }, - "engines": { - "node": ">=10" - }, - "author": "GitHub Inc.", - "templateOSS": { - "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.29.0", - "engines": ">=10", - "distPaths": [ - "classes/", - "functions/", - "internal/", - "ranges/", - "index.js", - "preload.js", - "range.bnf" - ], - "allowPaths": [ - "/classes/", - "/functions/", - "/internal/", - "/ranges/", - "/index.js", - "/preload.js", - "/range.bnf", - "/benchmarks" - ], - "publish": "true" - } -} diff --git a/sdks/nodejs/node_modules/semver/preload.js b/sdks/nodejs/node_modules/semver/preload.js deleted file mode 100644 index e6c47b9..0000000 --- a/sdks/nodejs/node_modules/semver/preload.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict' - -// XXX remove in v8 or beyond -module.exports = require('./index.js') diff --git a/sdks/nodejs/node_modules/semver/range.bnf b/sdks/nodejs/node_modules/semver/range.bnf deleted file mode 100644 index d4c6ae0..0000000 --- a/sdks/nodejs/node_modules/semver/range.bnf +++ /dev/null @@ -1,16 +0,0 @@ -range-set ::= range ( logical-or range ) * -logical-or ::= ( ' ' ) * '||' ( ' ' ) * -range ::= hyphen | simple ( ' ' simple ) * | '' -hyphen ::= partial ' - ' partial -simple ::= primitive | partial | tilde | caret -primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial -partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? -xr ::= 'x' | 'X' | '*' | nr -nr ::= '0' | [1-9] ( [0-9] ) * -tilde ::= '~' partial -caret ::= '^' partial -qualifier ::= ( '-' pre )? ( '+' build )? -pre ::= parts -build ::= parts -parts ::= part ( '.' part ) * -part ::= nr | [-0-9A-Za-z]+ diff --git a/sdks/nodejs/node_modules/semver/ranges/gtr.js b/sdks/nodejs/node_modules/semver/ranges/gtr.js deleted file mode 100644 index 0e7601f..0000000 --- a/sdks/nodejs/node_modules/semver/ranges/gtr.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict' - -// Determine if version is greater than all the versions possible in the range. -const outside = require('./outside') -const gtr = (version, range, options) => outside(version, range, '>', options) -module.exports = gtr diff --git a/sdks/nodejs/node_modules/semver/ranges/intersects.js b/sdks/nodejs/node_modules/semver/ranges/intersects.js deleted file mode 100644 index 917be7e..0000000 --- a/sdks/nodejs/node_modules/semver/ranges/intersects.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict' - -const Range = require('../classes/range') -const intersects = (r1, r2, options) => { - r1 = new Range(r1, options) - r2 = new Range(r2, options) - return r1.intersects(r2, options) -} -module.exports = intersects diff --git a/sdks/nodejs/node_modules/semver/ranges/ltr.js b/sdks/nodejs/node_modules/semver/ranges/ltr.js deleted file mode 100644 index aa5e568..0000000 --- a/sdks/nodejs/node_modules/semver/ranges/ltr.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict' - -const outside = require('./outside') -// Determine if version is less than all the versions possible in the range -const ltr = (version, range, options) => outside(version, range, '<', options) -module.exports = ltr diff --git a/sdks/nodejs/node_modules/semver/ranges/max-satisfying.js b/sdks/nodejs/node_modules/semver/ranges/max-satisfying.js deleted file mode 100644 index 01fe5ae..0000000 --- a/sdks/nodejs/node_modules/semver/ranges/max-satisfying.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict' - -const SemVer = require('../classes/semver') -const Range = require('../classes/range') - -const maxSatisfying = (versions, range, options) => { - let max = null - let maxSV = null - let rangeObj = null - try { - rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v - maxSV = new SemVer(max, options) - } - } - }) - return max -} -module.exports = maxSatisfying diff --git a/sdks/nodejs/node_modules/semver/ranges/min-satisfying.js b/sdks/nodejs/node_modules/semver/ranges/min-satisfying.js deleted file mode 100644 index af89c8e..0000000 --- a/sdks/nodejs/node_modules/semver/ranges/min-satisfying.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict' - -const SemVer = require('../classes/semver') -const Range = require('../classes/range') -const minSatisfying = (versions, range, options) => { - let min = null - let minSV = null - let rangeObj = null - try { - rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v - minSV = new SemVer(min, options) - } - } - }) - return min -} -module.exports = minSatisfying diff --git a/sdks/nodejs/node_modules/semver/ranges/min-version.js b/sdks/nodejs/node_modules/semver/ranges/min-version.js deleted file mode 100644 index 09a65aa..0000000 --- a/sdks/nodejs/node_modules/semver/ranges/min-version.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict' - -const SemVer = require('../classes/semver') -const Range = require('../classes/range') -const gt = require('../functions/gt') - -const minVersion = (range, loose) => { - range = new Range(range, loose) - - let minver = new SemVer('0.0.0') - if (range.test(minver)) { - return minver - } - - minver = new SemVer('0.0.0-0') - if (range.test(minver)) { - return minver - } - - minver = null - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i] - - let setMin = null - comparators.forEach((comparator) => { - // Clone to avoid manipulating the comparator's semver object. - const compver = new SemVer(comparator.semver.version) - switch (comparator.operator) { - case '>': - if (compver.prerelease.length === 0) { - compver.patch++ - } else { - compver.prerelease.push(0) - } - compver.raw = compver.format() - /* fallthrough */ - case '': - case '>=': - if (!setMin || gt(compver, setMin)) { - setMin = compver - } - break - case '<': - case '<=': - /* Ignore maximum versions */ - break - /* istanbul ignore next */ - default: - throw new Error(`Unexpected operation: ${comparator.operator}`) - } - }) - if (setMin && (!minver || gt(minver, setMin))) { - minver = setMin - } - } - - if (minver && range.test(minver)) { - return minver - } - - return null -} -module.exports = minVersion diff --git a/sdks/nodejs/node_modules/semver/ranges/outside.js b/sdks/nodejs/node_modules/semver/ranges/outside.js deleted file mode 100644 index ca74421..0000000 --- a/sdks/nodejs/node_modules/semver/ranges/outside.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict' - -const SemVer = require('../classes/semver') -const Comparator = require('../classes/comparator') -const { ANY } = Comparator -const Range = require('../classes/range') -const satisfies = require('../functions/satisfies') -const gt = require('../functions/gt') -const lt = require('../functions/lt') -const lte = require('../functions/lte') -const gte = require('../functions/gte') - -const outside = (version, range, hilo, options) => { - version = new SemVer(version, options) - range = new Range(range, options) - - let gtfn, ltefn, ltfn, comp, ecomp - switch (hilo) { - case '>': - gtfn = gt - ltefn = lte - ltfn = lt - comp = '>' - ecomp = '>=' - break - case '<': - gtfn = lt - ltefn = gte - ltfn = gt - comp = '<' - ecomp = '<=' - break - default: - throw new TypeError('Must provide a hilo val of "<" or ">"') - } - - // If it satisfies the range it is not outside - if (satisfies(version, range, options)) { - return false - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i] - - let high = null - let low = null - - comparators.forEach((comparator) => { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0') - } - high = high || comparator - low = low || comparator - if (gtfn(comparator.semver, high.semver, options)) { - high = comparator - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator - } - }) - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false - } - } - return true -} - -module.exports = outside diff --git a/sdks/nodejs/node_modules/semver/ranges/simplify.js b/sdks/nodejs/node_modules/semver/ranges/simplify.js deleted file mode 100644 index 262732e..0000000 --- a/sdks/nodejs/node_modules/semver/ranges/simplify.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict' - -// given a set of versions and a range, create a "simplified" range -// that includes the same versions that the original range does -// If the original range is shorter than the simplified one, return that. -const satisfies = require('../functions/satisfies.js') -const compare = require('../functions/compare.js') -module.exports = (versions, range, options) => { - const set = [] - let first = null - let prev = null - const v = versions.sort((a, b) => compare(a, b, options)) - for (const version of v) { - const included = satisfies(version, range, options) - if (included) { - prev = version - if (!first) { - first = version - } - } else { - if (prev) { - set.push([first, prev]) - } - prev = null - first = null - } - } - if (first) { - set.push([first, null]) - } - - const ranges = [] - for (const [min, max] of set) { - if (min === max) { - ranges.push(min) - } else if (!max && min === v[0]) { - ranges.push('*') - } else if (!max) { - ranges.push(`>=${min}`) - } else if (min === v[0]) { - ranges.push(`<=${max}`) - } else { - ranges.push(`${min} - ${max}`) - } - } - const simplified = ranges.join(' || ') - const original = typeof range.raw === 'string' ? range.raw : String(range) - return simplified.length < original.length ? simplified : range -} diff --git a/sdks/nodejs/node_modules/semver/ranges/subset.js b/sdks/nodejs/node_modules/semver/ranges/subset.js deleted file mode 100644 index 99f4321..0000000 --- a/sdks/nodejs/node_modules/semver/ranges/subset.js +++ /dev/null @@ -1,249 +0,0 @@ -'use strict' - -const Range = require('../classes/range.js') -const Comparator = require('../classes/comparator.js') -const { ANY } = Comparator -const satisfies = require('../functions/satisfies.js') -const compare = require('../functions/compare.js') - -// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: -// - Every simple range `r1, r2, ...` is a null set, OR -// - Every simple range `r1, r2, ...` which is not a null set is a subset of -// some `R1, R2, ...` -// -// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff: -// - If c is only the ANY comparator -// - If C is only the ANY comparator, return true -// - Else if in prerelease mode, return false -// - else replace c with `[>=0.0.0]` -// - If C is only the ANY comparator -// - if in prerelease mode, return true -// - else replace C with `[>=0.0.0]` -// - Let EQ be the set of = comparators in c -// - If EQ is more than one, return true (null set) -// - Let GT be the highest > or >= comparator in c -// - Let LT be the lowest < or <= comparator in c -// - If GT and LT, and GT.semver > LT.semver, return true (null set) -// - If any C is a = range, and GT or LT are set, return false -// - If EQ -// - If GT, and EQ does not satisfy GT, return true (null set) -// - If LT, and EQ does not satisfy LT, return true (null set) -// - If EQ satisfies every C, return true -// - Else return false -// - If GT -// - If GT.semver is lower than any > or >= comp in C, return false -// - If GT is >=, and GT.semver does not satisfy every C, return false -// - If GT.semver has a prerelease, and not in prerelease mode -// - If no C has a prerelease and the GT.semver tuple, return false -// - If LT -// - If LT.semver is greater than any < or <= comp in C, return false -// - If LT is <=, and LT.semver does not satisfy every C, return false -// - If LT.semver has a prerelease, and not in prerelease mode -// - If no C has a prerelease and the LT.semver tuple, return false -// - Else return true - -const subset = (sub, dom, options = {}) => { - if (sub === dom) { - return true - } - - sub = new Range(sub, options) - dom = new Range(dom, options) - let sawNonNull = false - - OUTER: for (const simpleSub of sub.set) { - for (const simpleDom of dom.set) { - const isSub = simpleSubset(simpleSub, simpleDom, options) - sawNonNull = sawNonNull || isSub !== null - if (isSub) { - continue OUTER - } - } - // the null set is a subset of everything, but null simple ranges in - // a complex range should be ignored. so if we saw a non-null range, - // then we know this isn't a subset, but if EVERY simple range was null, - // then it is a subset. - if (sawNonNull) { - return false - } - } - return true -} - -const minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')] -const minimumVersion = [new Comparator('>=0.0.0')] - -const simpleSubset = (sub, dom, options) => { - if (sub === dom) { - return true - } - - if (sub.length === 1 && sub[0].semver === ANY) { - if (dom.length === 1 && dom[0].semver === ANY) { - return true - } else if (options.includePrerelease) { - sub = minimumVersionWithPreRelease - } else { - sub = minimumVersion - } - } - - if (dom.length === 1 && dom[0].semver === ANY) { - if (options.includePrerelease) { - return true - } else { - dom = minimumVersion - } - } - - const eqSet = new Set() - let gt, lt - for (const c of sub) { - if (c.operator === '>' || c.operator === '>=') { - gt = higherGT(gt, c, options) - } else if (c.operator === '<' || c.operator === '<=') { - lt = lowerLT(lt, c, options) - } else { - eqSet.add(c.semver) - } - } - - if (eqSet.size > 1) { - return null - } - - let gtltComp - if (gt && lt) { - gtltComp = compare(gt.semver, lt.semver, options) - if (gtltComp > 0) { - return null - } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) { - return null - } - } - - // will iterate one or zero times - for (const eq of eqSet) { - if (gt && !satisfies(eq, String(gt), options)) { - return null - } - - if (lt && !satisfies(eq, String(lt), options)) { - return null - } - - for (const c of dom) { - if (!satisfies(eq, String(c), options)) { - return false - } - } - - return true - } - - let higher, lower - let hasDomLT, hasDomGT - // if the subset has a prerelease, we need a comparator in the superset - // with the same tuple and a prerelease, or it's not a subset - let needDomLTPre = lt && - !options.includePrerelease && - lt.semver.prerelease.length ? lt.semver : false - let needDomGTPre = gt && - !options.includePrerelease && - gt.semver.prerelease.length ? gt.semver : false - // exception: <1.2.3-0 is the same as <1.2.3 - if (needDomLTPre && needDomLTPre.prerelease.length === 1 && - lt.operator === '<' && needDomLTPre.prerelease[0] === 0) { - needDomLTPre = false - } - - for (const c of dom) { - hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>=' - hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<=' - if (gt) { - if (needDomGTPre) { - if (c.semver.prerelease && c.semver.prerelease.length && - c.semver.major === needDomGTPre.major && - c.semver.minor === needDomGTPre.minor && - c.semver.patch === needDomGTPre.patch) { - needDomGTPre = false - } - } - if (c.operator === '>' || c.operator === '>=') { - higher = higherGT(gt, c, options) - if (higher === c && higher !== gt) { - return false - } - } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) { - return false - } - } - if (lt) { - if (needDomLTPre) { - if (c.semver.prerelease && c.semver.prerelease.length && - c.semver.major === needDomLTPre.major && - c.semver.minor === needDomLTPre.minor && - c.semver.patch === needDomLTPre.patch) { - needDomLTPre = false - } - } - if (c.operator === '<' || c.operator === '<=') { - lower = lowerLT(lt, c, options) - if (lower === c && lower !== lt) { - return false - } - } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) { - return false - } - } - if (!c.operator && (lt || gt) && gtltComp !== 0) { - return false - } - } - - // if there was a < or >, and nothing in the dom, then must be false - // UNLESS it was limited by another range in the other direction. - // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 - if (gt && hasDomLT && !lt && gtltComp !== 0) { - return false - } - - if (lt && hasDomGT && !gt && gtltComp !== 0) { - return false - } - - // we needed a prerelease range in a specific tuple, but didn't get one - // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0, - // because it includes prereleases in the 1.2.3 tuple - if (needDomGTPre || needDomLTPre) { - return false - } - - return true -} - -// >=1.2.3 is lower than >1.2.3 -const higherGT = (a, b, options) => { - if (!a) { - return b - } - const comp = compare(a.semver, b.semver, options) - return comp > 0 ? a - : comp < 0 ? b - : b.operator === '>' && a.operator === '>=' ? b - : a -} - -// <=1.2.3 is higher than <1.2.3 -const lowerLT = (a, b, options) => { - if (!a) { - return b - } - const comp = compare(a.semver, b.semver, options) - return comp < 0 ? a - : comp > 0 ? b - : b.operator === '<' && a.operator === '<=' ? b - : a -} - -module.exports = subset diff --git a/sdks/nodejs/node_modules/semver/ranges/to-comparators.js b/sdks/nodejs/node_modules/semver/ranges/to-comparators.js deleted file mode 100644 index 5be2519..0000000 --- a/sdks/nodejs/node_modules/semver/ranges/to-comparators.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict' - -const Range = require('../classes/range') - -// Mostly just for testing and legacy API reasons -const toComparators = (range, options) => - new Range(range, options).set - .map(comp => comp.map(c => c.value).join(' ').trim().split(' ')) - -module.exports = toComparators diff --git a/sdks/nodejs/node_modules/semver/ranges/valid.js b/sdks/nodejs/node_modules/semver/ranges/valid.js deleted file mode 100644 index cc6b0e9..0000000 --- a/sdks/nodejs/node_modules/semver/ranges/valid.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict' - -const Range = require('../classes/range') -const validRange = (range, options) => { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || '*' - } catch (er) { - return null - } -} -module.exports = validRange diff --git a/sdks/nodejs/node_modules/signal-exit/LICENSE.txt b/sdks/nodejs/node_modules/signal-exit/LICENSE.txt deleted file mode 100644 index 954f2fa..0000000 --- a/sdks/nodejs/node_modules/signal-exit/LICENSE.txt +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) 2015-2023 Benjamin Coe, Isaac Z. Schlueter, and Contributors - -Permission to use, copy, modify, and/or distribute this software -for any purpose with or without fee is hereby granted, provided -that the above copyright notice and this permission notice -appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE -LIABLE FOR ANY SPECIAL, DIRECT, 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. diff --git a/sdks/nodejs/node_modules/signal-exit/README.md b/sdks/nodejs/node_modules/signal-exit/README.md deleted file mode 100644 index c55cd45..0000000 --- a/sdks/nodejs/node_modules/signal-exit/README.md +++ /dev/null @@ -1,74 +0,0 @@ -# signal-exit - -When you want to fire an event no matter how a process exits: - -- reaching the end of execution. -- explicitly having `process.exit(code)` called. -- having `process.kill(pid, sig)` called. -- receiving a fatal signal from outside the process - -Use `signal-exit`. - -```js -// Hybrid module, either works -import { onExit } from 'signal-exit' -// or: -// const { onExit } = require('signal-exit') - -onExit((code, signal) => { - console.log('process exited!', code, signal) -}) -``` - -## API - -`remove = onExit((code, signal) => {}, options)` - -The return value of the function is a function that will remove -the handler. - -Note that the function _only_ fires for signals if the signal -would cause the process to exit. That is, there are no other -listeners, and it is a fatal signal. - -If the global `process` object is not suitable for this purpose -(ie, it's unset, or doesn't have an `emit` method, etc.) then the -`onExit` function is a no-op that returns a no-op `remove` method. - -### Options - -- `alwaysLast`: Run this handler after any other signal or exit - handlers. This causes `process.emit` to be monkeypatched. - -### Capturing Signal Exits - -If the handler returns an exact boolean `true`, and the exit is a -due to signal, then the signal will be considered handled, and -will _not_ trigger a synthetic `process.kill(process.pid, -signal)` after firing the `onExit` handlers. - -In this case, it your responsibility as the caller to exit with a -signal (for example, by calling `process.kill()`) if you wish to -preserve the same exit status that would otherwise have occurred. -If you do not, then the process will likely exit gracefully with -status 0 at some point, assuming that no other terminating signal -or other exit trigger occurs. - -Prior to calling handlers, the `onExit` machinery is unloaded, so -any subsequent exits or signals will not be handled, even if the -signal is captured and the exit is thus prevented. - -Note that numeric code exits may indicate that the process is -already committed to exiting, for example due to a fatal -exception or unhandled promise rejection, and so there is no way to -prevent it safely. - -### Browser Fallback - -The `'signal-exit/browser'` module is the same fallback shim that -just doesn't do anything, but presents the same function -interface. - -Patches welcome to add something that hooks onto -`window.onbeforeunload` or similar, but it might just not be a -thing that makes sense there. diff --git a/sdks/nodejs/node_modules/signal-exit/dist/cjs/browser.d.ts b/sdks/nodejs/node_modules/signal-exit/dist/cjs/browser.d.ts deleted file mode 100644 index 90f2e3f..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/cjs/browser.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * This is a browser shim that provides the same functional interface - * as the main node export, but it does nothing. - * @module - */ -import type { Handler } from './index.js'; -export declare const onExit: (cb: Handler, opts: { - alwaysLast?: boolean; -}) => () => void; -export declare const load: () => void; -export declare const unload: () => void; -//# sourceMappingURL=browser.d.ts.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/cjs/browser.d.ts.map b/sdks/nodejs/node_modules/signal-exit/dist/cjs/browser.d.ts.map deleted file mode 100644 index aacc1d3..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/cjs/browser.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACzC,eAAO,MAAM,MAAM,EAAE,CACnB,EAAE,EAAE,OAAO,EACX,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,KAC3B,MAAM,IAAqB,CAAA;AAChC,eAAO,MAAM,IAAI,YAAW,CAAA;AAC5B,eAAO,MAAM,MAAM,YAAW,CAAA"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/cjs/browser.js b/sdks/nodejs/node_modules/signal-exit/dist/cjs/browser.js deleted file mode 100644 index 614fbf0..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/cjs/browser.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.unload = exports.load = exports.onExit = void 0; -const onExit = () => () => { }; -exports.onExit = onExit; -const load = () => { }; -exports.load = load; -const unload = () => { }; -exports.unload = unload; -//# sourceMappingURL=browser.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/cjs/browser.js.map b/sdks/nodejs/node_modules/signal-exit/dist/cjs/browser.js.map deleted file mode 100644 index 342cf2e..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/cjs/browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":";;;AAMO,MAAM,MAAM,GAGD,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC,CAAA;AAHnB,QAAA,MAAM,UAGa;AACzB,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;AAAf,QAAA,IAAI,QAAW;AACrB,MAAM,MAAM,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;AAAjB,QAAA,MAAM,UAAW","sourcesContent":["/**\n * This is a browser shim that provides the same functional interface\n * as the main node export, but it does nothing.\n * @module\n */\nimport type { Handler } from './index.js'\nexport const onExit: (\n cb: Handler,\n opts: { alwaysLast?: boolean }\n) => () => void = () => () => {}\nexport const load = () => {}\nexport const unload = () => {}\n"]} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/cjs/index.d.ts b/sdks/nodejs/node_modules/signal-exit/dist/cjs/index.d.ts deleted file mode 100644 index cabe9cf..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/cjs/index.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -/// -import { signals } from './signals.js'; -export { signals }; -/** - * A function that takes an exit code and signal as arguments - * - * In the case of signal exits *only*, a return value of true - * will indicate that the signal is being handled, and we should - * not synthetically exit with the signal we received. Regardless - * of the handler return value, the handler is unloaded when an - * otherwise fatal signal is received, so you get exactly 1 shot - * at it, unless you add another onExit handler at that point. - * - * In the case of numeric code exits, we may already have committed - * to exiting the process, for example via a fatal exception or - * unhandled promise rejection, so it is impossible to stop safely. - */ -export type Handler = (code: number | null | undefined, signal: NodeJS.Signals | null) => true | void; -export declare const -/** - * Called when the process is exiting, whether via signal, explicit - * exit, or running out of stuff to do. - * - * If the global process object is not suitable for instrumentation, - * then this will be a no-op. - * - * Returns a function that may be used to unload signal-exit. - */ -onExit: (cb: Handler, opts?: { - alwaysLast?: boolean | undefined; -} | undefined) => () => void, -/** - * Load the listeners. Likely you never need to call this, unless - * doing a rather deep integration with signal-exit functionality. - * Mostly exposed for the benefit of testing. - * - * @internal - */ -load: () => void, -/** - * Unload the listeners. Likely you never need to call this, unless - * doing a rather deep integration with signal-exit functionality. - * Mostly exposed for the benefit of testing. - * - * @internal - */ -unload: () => void; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/cjs/index.d.ts.map b/sdks/nodejs/node_modules/signal-exit/dist/cjs/index.d.ts.map deleted file mode 100644 index f84594e..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/cjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,CAAA;AAuBlB;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,OAAO,GAAG,CACpB,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAC1B,IAAI,GAAG,IAAI,CAAA;AA8QhB,eAAO;AACL;;;;;;;;GAQG;AACH,MAAM,OAzMO,OAAO;;wBAPiD,IAAI;AAkNzE;;;;;;GAMG;AACH,IAAI;AAEJ;;;;;;GAMG;AACH,MAAM,YAGP,CAAA"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/cjs/index.js b/sdks/nodejs/node_modules/signal-exit/dist/cjs/index.js deleted file mode 100644 index 797e674..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/cjs/index.js +++ /dev/null @@ -1,279 +0,0 @@ -"use strict"; -var _a; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.unload = exports.load = exports.onExit = exports.signals = void 0; -// Note: since nyc uses this module to output coverage, any lines -// that are in the direct sync flow of nyc's outputCoverage are -// ignored, since we can never get coverage for them. -// grab a reference to node's real process object right away -const signals_js_1 = require("./signals.js"); -Object.defineProperty(exports, "signals", { enumerable: true, get: function () { return signals_js_1.signals; } }); -const processOk = (process) => !!process && - typeof process === 'object' && - typeof process.removeListener === 'function' && - typeof process.emit === 'function' && - typeof process.reallyExit === 'function' && - typeof process.listeners === 'function' && - typeof process.kill === 'function' && - typeof process.pid === 'number' && - typeof process.on === 'function'; -const kExitEmitter = Symbol.for('signal-exit emitter'); -const global = globalThis; -const ObjectDefineProperty = Object.defineProperty.bind(Object); -// teeny special purpose ee -class Emitter { - emitted = { - afterExit: false, - exit: false, - }; - listeners = { - afterExit: [], - exit: [], - }; - count = 0; - id = Math.random(); - constructor() { - if (global[kExitEmitter]) { - return global[kExitEmitter]; - } - ObjectDefineProperty(global, kExitEmitter, { - value: this, - writable: false, - enumerable: false, - configurable: false, - }); - } - on(ev, fn) { - this.listeners[ev].push(fn); - } - removeListener(ev, fn) { - const list = this.listeners[ev]; - const i = list.indexOf(fn); - /* c8 ignore start */ - if (i === -1) { - return; - } - /* c8 ignore stop */ - if (i === 0 && list.length === 1) { - list.length = 0; - } - else { - list.splice(i, 1); - } - } - emit(ev, code, signal) { - if (this.emitted[ev]) { - return false; - } - this.emitted[ev] = true; - let ret = false; - for (const fn of this.listeners[ev]) { - ret = fn(code, signal) === true || ret; - } - if (ev === 'exit') { - ret = this.emit('afterExit', code, signal) || ret; - } - return ret; - } -} -class SignalExitBase { -} -const signalExitWrap = (handler) => { - return { - onExit(cb, opts) { - return handler.onExit(cb, opts); - }, - load() { - return handler.load(); - }, - unload() { - return handler.unload(); - }, - }; -}; -class SignalExitFallback extends SignalExitBase { - onExit() { - return () => { }; - } - load() { } - unload() { } -} -class SignalExit extends SignalExitBase { - // "SIGHUP" throws an `ENOSYS` error on Windows, - // so use a supported signal instead - /* c8 ignore start */ - #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'; - /* c8 ignore stop */ - #emitter = new Emitter(); - #process; - #originalProcessEmit; - #originalProcessReallyExit; - #sigListeners = {}; - #loaded = false; - constructor(process) { - super(); - this.#process = process; - // { : , ... } - this.#sigListeners = {}; - for (const sig of signals_js_1.signals) { - this.#sigListeners[sig] = () => { - // If there are no other listeners, an exit is coming! - // Simplest way: remove us and then re-send the signal. - // We know that this will kill the process, so we can - // safely emit now. - const listeners = this.#process.listeners(sig); - let { count } = this.#emitter; - // This is a workaround for the fact that signal-exit v3 and signal - // exit v4 are not aware of each other, and each will attempt to let - // the other handle it, so neither of them do. To correct this, we - // detect if we're the only handler *except* for previous versions - // of signal-exit, and increment by the count of listeners it has - // created. - /* c8 ignore start */ - const p = process; - if (typeof p.__signal_exit_emitter__ === 'object' && - typeof p.__signal_exit_emitter__.count === 'number') { - count += p.__signal_exit_emitter__.count; - } - /* c8 ignore stop */ - if (listeners.length === count) { - this.unload(); - const ret = this.#emitter.emit('exit', null, sig); - /* c8 ignore start */ - const s = sig === 'SIGHUP' ? this.#hupSig : sig; - if (!ret) - process.kill(process.pid, s); - /* c8 ignore stop */ - } - }; - } - this.#originalProcessReallyExit = process.reallyExit; - this.#originalProcessEmit = process.emit; - } - onExit(cb, opts) { - /* c8 ignore start */ - if (!processOk(this.#process)) { - return () => { }; - } - /* c8 ignore stop */ - if (this.#loaded === false) { - this.load(); - } - const ev = opts?.alwaysLast ? 'afterExit' : 'exit'; - this.#emitter.on(ev, cb); - return () => { - this.#emitter.removeListener(ev, cb); - if (this.#emitter.listeners['exit'].length === 0 && - this.#emitter.listeners['afterExit'].length === 0) { - this.unload(); - } - }; - } - load() { - if (this.#loaded) { - return; - } - this.#loaded = true; - // This is the number of onSignalExit's that are in play. - // It's important so that we can count the correct number of - // listeners on signals, and don't wait for the other one to - // handle it instead of us. - this.#emitter.count += 1; - for (const sig of signals_js_1.signals) { - try { - const fn = this.#sigListeners[sig]; - if (fn) - this.#process.on(sig, fn); - } - catch (_) { } - } - this.#process.emit = (ev, ...a) => { - return this.#processEmit(ev, ...a); - }; - this.#process.reallyExit = (code) => { - return this.#processReallyExit(code); - }; - } - unload() { - if (!this.#loaded) { - return; - } - this.#loaded = false; - signals_js_1.signals.forEach(sig => { - const listener = this.#sigListeners[sig]; - /* c8 ignore start */ - if (!listener) { - throw new Error('Listener not defined for signal: ' + sig); - } - /* c8 ignore stop */ - try { - this.#process.removeListener(sig, listener); - /* c8 ignore start */ - } - catch (_) { } - /* c8 ignore stop */ - }); - this.#process.emit = this.#originalProcessEmit; - this.#process.reallyExit = this.#originalProcessReallyExit; - this.#emitter.count -= 1; - } - #processReallyExit(code) { - /* c8 ignore start */ - if (!processOk(this.#process)) { - return 0; - } - this.#process.exitCode = code || 0; - /* c8 ignore stop */ - this.#emitter.emit('exit', this.#process.exitCode, null); - return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode); - } - #processEmit(ev, ...args) { - const og = this.#originalProcessEmit; - if (ev === 'exit' && processOk(this.#process)) { - if (typeof args[0] === 'number') { - this.#process.exitCode = args[0]; - /* c8 ignore start */ - } - /* c8 ignore start */ - const ret = og.call(this.#process, ev, ...args); - /* c8 ignore start */ - this.#emitter.emit('exit', this.#process.exitCode, null); - /* c8 ignore stop */ - return ret; - } - else { - return og.call(this.#process, ev, ...args); - } - } -} -const process = globalThis.process; -// wrap so that we call the method on the actual handler, without -// exporting it directly. -_a = signalExitWrap(processOk(process) ? new SignalExit(process) : new SignalExitFallback()), -/** - * Called when the process is exiting, whether via signal, explicit - * exit, or running out of stuff to do. - * - * If the global process object is not suitable for instrumentation, - * then this will be a no-op. - * - * Returns a function that may be used to unload signal-exit. - */ -exports.onExit = _a.onExit, -/** - * Load the listeners. Likely you never need to call this, unless - * doing a rather deep integration with signal-exit functionality. - * Mostly exposed for the benefit of testing. - * - * @internal - */ -exports.load = _a.load, -/** - * Unload the listeners. Likely you never need to call this, unless - * doing a rather deep integration with signal-exit functionality. - * Mostly exposed for the benefit of testing. - * - * @internal - */ -exports.unload = _a.unload; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/cjs/index.js.map b/sdks/nodejs/node_modules/signal-exit/dist/cjs/index.js.map deleted file mode 100644 index 528e3cc..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/cjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,iEAAiE;AACjE,+DAA+D;AAC/D,qDAAqD;AACrD,4DAA4D;AAC5D,6CAAsC;AAC7B,wFADA,oBAAO,OACA;AAQhB,MAAM,SAAS,GAAG,CAAC,OAAY,EAAwB,EAAE,CACvD,CAAC,CAAC,OAAO;IACT,OAAO,OAAO,KAAK,QAAQ;IAC3B,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU;IAC5C,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU;IAClC,OAAO,OAAO,CAAC,UAAU,KAAK,UAAU;IACxC,OAAO,OAAO,CAAC,SAAS,KAAK,UAAU;IACvC,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU;IAClC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;IAC/B,OAAO,OAAO,CAAC,EAAE,KAAK,UAAU,CAAA;AAElC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;AACtD,MAAM,MAAM,GAAqD,UAAU,CAAA;AAC3E,MAAM,oBAAoB,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAwB/D,2BAA2B;AAC3B,MAAM,OAAO;IACX,OAAO,GAAY;QACjB,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,KAAK;KACZ,CAAA;IAED,SAAS,GAAc;QACrB,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,EAAE;KACT,CAAA;IAED,KAAK,GAAW,CAAC,CAAA;IACjB,EAAE,GAAW,IAAI,CAAC,MAAM,EAAE,CAAA;IAE1B;QACE,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE;YACxB,OAAO,MAAM,CAAC,YAAY,CAAC,CAAA;SAC5B;QACD,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE;YACzC,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,EAAE,CAAC,EAAa,EAAE,EAAW;QAC3B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7B,CAAC;IAED,cAAc,CAAC,EAAa,EAAE,EAAW;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC1B,qBAAqB;QACrB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YACZ,OAAM;SACP;QACD,oBAAoB;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;SAChB;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SAClB;IACH,CAAC;IAED,IAAI,CACF,EAAa,EACb,IAA+B,EAC/B,MAA6B;QAE7B,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACpB,OAAO,KAAK,CAAA;SACb;QACD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;QACvB,IAAI,GAAG,GAAY,KAAK,CAAA;QACxB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YACnC,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,GAAG,CAAA;SACvC;QACD,IAAI,EAAE,KAAK,MAAM,EAAE;YACjB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,CAAA;SAClD;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;CACF;AAED,MAAe,cAAc;CAI5B;AAED,MAAM,cAAc,GAAG,CAA2B,OAAU,EAAE,EAAE;IAC9D,OAAO;QACL,MAAM,CAAC,EAAW,EAAE,IAA+B;YACjD,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACjC,CAAC;QACD,IAAI;YACF,OAAO,OAAO,CAAC,IAAI,EAAE,CAAA;QACvB,CAAC;QACD,MAAM;YACJ,OAAO,OAAO,CAAC,MAAM,EAAE,CAAA;QACzB,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,kBAAmB,SAAQ,cAAc;IAC7C,MAAM;QACJ,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IACjB,CAAC;IACD,IAAI,KAAI,CAAC;IACT,MAAM,KAAI,CAAC;CACZ;AAED,MAAM,UAAW,SAAQ,cAAc;IACrC,gDAAgD;IAChD,oCAAoC;IACpC,qBAAqB;IACrB,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC5D,oBAAoB;IACpB,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAA;IACxB,QAAQ,CAAW;IACnB,oBAAoB,CAAmB;IACvC,0BAA0B,CAAyB;IAEnD,aAAa,GAA2C,EAAE,CAAA;IAC1D,OAAO,GAAY,KAAK,CAAA;IAExB,YAAY,OAAkB;QAC5B,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,mCAAmC;QACnC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACvB,KAAK,MAAM,GAAG,IAAI,oBAAO,EAAE;YACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE;gBAC7B,sDAAsD;gBACtD,uDAAuD;gBACvD,qDAAqD;gBACrD,mBAAmB;gBACnB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;gBAC9C,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;gBAC7B,mEAAmE;gBACnE,oEAAoE;gBACpE,kEAAkE;gBAClE,kEAAkE;gBAClE,iEAAiE;gBACjE,WAAW;gBACX,qBAAqB;gBACrB,MAAM,CAAC,GAAG,OAET,CAAA;gBACD,IACE,OAAO,CAAC,CAAC,uBAAuB,KAAK,QAAQ;oBAC7C,OAAO,CAAC,CAAC,uBAAuB,CAAC,KAAK,KAAK,QAAQ,EACnD;oBACA,KAAK,IAAI,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAA;iBACzC;gBACD,oBAAoB;gBACpB,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK,EAAE;oBAC9B,IAAI,CAAC,MAAM,EAAE,CAAA;oBACb,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;oBACjD,qBAAqB;oBACrB,MAAM,CAAC,GAAG,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;oBAC/C,IAAI,CAAC,GAAG;wBAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;oBACtC,oBAAoB;iBACrB;YACH,CAAC,CAAA;SACF;QAED,IAAI,CAAC,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAA;QACpD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,EAAW,EAAE,IAA+B;QACjD,qBAAqB;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC7B,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;SAChB;QACD,oBAAoB;QAEpB,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;YAC1B,IAAI,CAAC,IAAI,EAAE,CAAA;SACZ;QAED,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAA;QAClD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QACxB,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YACpC,IACE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;gBAC5C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EACjD;gBACA,IAAI,CAAC,MAAM,EAAE,CAAA;aACd;QACH,CAAC,CAAA;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAM;SACP;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QAEnB,yDAAyD;QACzD,4DAA4D;QAC5D,4DAA4D;QAC5D,2BAA2B;QAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAA;QAExB,KAAK,MAAM,GAAG,IAAI,oBAAO,EAAE;YACzB,IAAI;gBACF,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;gBAClC,IAAI,EAAE;oBAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;aAClC;YAAC,OAAO,CAAC,EAAE,GAAE;SACf;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAU,EAAE,GAAG,CAAQ,EAAE,EAAE;YAC/C,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;QACpC,CAAC,CAAA;QACD,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,IAAgC,EAAE,EAAE;YAC9D,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACtC,CAAC,CAAA;IACH,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAM;SACP;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QAEpB,oBAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YACxC,qBAAqB;YACrB,IAAI,CAAC,QAAQ,EAAE;gBACb,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAA;aAC3D;YACD,oBAAoB;YACpB,IAAI;gBACF,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;gBAC3C,qBAAqB;aACtB;YAAC,OAAO,CAAC,EAAE,GAAE;YACd,oBAAoB;QACtB,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAA;QAC9C,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAA;QAC1D,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED,kBAAkB,CAAC,IAAgC;QACjD,qBAAqB;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC7B,OAAO,CAAC,CAAA;SACT;QACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAA;QAClC,oBAAoB;QAEpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QACxD,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CACzC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACvB,CAAA;IACH,CAAC;IAED,YAAY,CAAC,EAAU,EAAE,GAAG,IAAW;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAA;QACpC,IAAI,EAAE,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC7C,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBAC/B,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBAChC,qBAAqB;aACtB;YACD,qBAAqB;YACrB,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;YAC/C,qBAAqB;YACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;YACxD,oBAAoB;YACpB,OAAO,GAAG,CAAA;SACX;aAAM;YACL,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;SAC3C;IACH,CAAC;CACF;AAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;AAClC,iEAAiE;AACjE,yBAAyB;AACZ,KA6BT,cAAc,CAChB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE,CACxE;AA9BC;;;;;;;;GAQG;AACH,cAAM;AAEN;;;;;;GAMG;AACH,YAAI;AAEJ;;;;;;GAMG;AACH,cAAM,aAGP","sourcesContent":["// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n reallyExit: (code?: number | undefined | null) => any\n emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n emitted: Emitted = {\n afterExit: false,\n exit: false,\n }\n\n listeners: Listeners = {\n afterExit: [],\n exit: [],\n }\n\n count: number = 0\n id: number = Math.random()\n\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter]\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n }\n\n on(ev: ExitEvent, fn: Handler) {\n this.listeners[ev].push(fn)\n }\n\n removeListener(ev: ExitEvent, fn: Handler) {\n const list = this.listeners[ev]\n const i = list.indexOf(fn)\n /* c8 ignore start */\n if (i === -1) {\n return\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0\n } else {\n list.splice(i, 1)\n }\n }\n\n emit(\n ev: ExitEvent,\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n ): boolean {\n if (this.emitted[ev]) {\n return false\n }\n this.emitted[ev] = true\n let ret: boolean = false\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret\n }\n return ret\n }\n}\n\nabstract class SignalExitBase {\n abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n abstract load(): void\n abstract unload(): void\n}\n\nconst signalExitWrap = (handler: T) => {\n return {\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n return handler.onExit(cb, opts)\n },\n load() {\n return handler.load()\n },\n unload() {\n return handler.unload()\n },\n }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => {}\n }\n load() {}\n unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n /* c8 ignore stop */\n #emitter = new Emitter()\n #process: ProcessRE\n #originalProcessEmit: ProcessRE['emit']\n #originalProcessReallyExit: ProcessRE['reallyExit']\n\n #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n #loaded: boolean = false\n\n constructor(process: ProcessRE) {\n super()\n this.#process = process\n // { : , ... }\n this.#sigListeners = {}\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig)\n let { count } = this.#emitter\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process as unknown as {\n __signal_exit_emitter__?: { count: number }\n }\n if (\n typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number'\n ) {\n count += p.__signal_exit_emitter__.count\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload()\n const ret = this.#emitter.emit('exit', null, sig)\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig\n if (!ret) process.kill(process.pid, s)\n /* c8 ignore stop */\n }\n }\n }\n\n this.#originalProcessReallyExit = process.reallyExit\n this.#originalProcessEmit = process.emit\n }\n\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => {}\n }\n /* c8 ignore stop */\n\n if (this.#loaded === false) {\n this.load()\n }\n\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n this.#emitter.on(ev, cb)\n return () => {\n this.#emitter.removeListener(ev, cb)\n if (\n this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0\n ) {\n this.unload()\n }\n }\n }\n\n load() {\n if (this.#loaded) {\n return\n }\n this.#loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1\n\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig]\n if (fn) this.#process.on(sig, fn)\n } catch (_) {}\n }\n\n this.#process.emit = (ev: string, ...a: any[]) => {\n return this.#processEmit(ev, ...a)\n }\n this.#process.reallyExit = (code?: number | null | undefined) => {\n return this.#processReallyExit(code)\n }\n }\n\n unload() {\n if (!this.#loaded) {\n return\n }\n this.#loaded = false\n\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig]\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig)\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener)\n /* c8 ignore start */\n } catch (_) {}\n /* c8 ignore stop */\n })\n this.#process.emit = this.#originalProcessEmit\n this.#process.reallyExit = this.#originalProcessReallyExit\n this.#emitter.count -= 1\n }\n\n #processReallyExit(code?: number | null | undefined) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0\n }\n this.#process.exitCode = code || 0\n /* c8 ignore stop */\n\n this.#emitter.emit('exit', this.#process.exitCode, null)\n return this.#originalProcessReallyExit.call(\n this.#process,\n this.#process.exitCode\n )\n }\n\n #processEmit(ev: string, ...args: any[]): any {\n const og = this.#originalProcessEmit\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0]\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args)\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null)\n /* c8 ignore stop */\n return ret\n } else {\n return og.call(this.#process, ev, ...args)\n }\n }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n /**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\n onExit,\n\n /**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n load,\n\n /**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n unload,\n} = signalExitWrap(\n processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n"]} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/cjs/package.json b/sdks/nodejs/node_modules/signal-exit/dist/cjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/cjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/sdks/nodejs/node_modules/signal-exit/dist/cjs/signals.d.ts b/sdks/nodejs/node_modules/signal-exit/dist/cjs/signals.d.ts deleted file mode 100644 index 3f01ef0..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/cjs/signals.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -/// -/** - * This is not the set of all possible signals. - * - * It IS, however, the set of all signals that trigger - * an exit on either Linux or BSD systems. Linux is a - * superset of the signal names supported on BSD, and - * the unknown signals just fail to register, so we can - * catch that easily enough. - * - * Windows signals are a different set, since there are - * signals that terminate Windows processes, but don't - * terminate (or don't even exist) on Posix systems. - * - * Don't bother with SIGKILL. It's uncatchable, which - * means that we can't fire any callbacks anyway. - * - * If a user does happen to register a handler on a non- - * fatal signal like SIGWINCH or something, and then - * exit, it'll end up firing `process.emit('exit')`, so - * the handler will be fired anyway. - * - * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised - * artificially, inherently leave the process in a - * state from which it is not safe to try and enter JS - * listeners. - */ -export declare const signals: NodeJS.Signals[]; -//# sourceMappingURL=signals.d.ts.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/cjs/signals.d.ts.map b/sdks/nodejs/node_modules/signal-exit/dist/cjs/signals.d.ts.map deleted file mode 100644 index 891fe1e..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/cjs/signals.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/signals.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,OAAO,EAAO,CAAA"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/cjs/signals.js b/sdks/nodejs/node_modules/signal-exit/dist/cjs/signals.js deleted file mode 100644 index 28afc50..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/cjs/signals.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.signals = void 0; -/** - * This is not the set of all possible signals. - * - * It IS, however, the set of all signals that trigger - * an exit on either Linux or BSD systems. Linux is a - * superset of the signal names supported on BSD, and - * the unknown signals just fail to register, so we can - * catch that easily enough. - * - * Windows signals are a different set, since there are - * signals that terminate Windows processes, but don't - * terminate (or don't even exist) on Posix systems. - * - * Don't bother with SIGKILL. It's uncatchable, which - * means that we can't fire any callbacks anyway. - * - * If a user does happen to register a handler on a non- - * fatal signal like SIGWINCH or something, and then - * exit, it'll end up firing `process.emit('exit')`, so - * the handler will be fired anyway. - * - * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised - * artificially, inherently leave the process in a - * state from which it is not safe to try and enter JS - * listeners. - */ -exports.signals = []; -exports.signals.push('SIGHUP', 'SIGINT', 'SIGTERM'); -if (process.platform !== 'win32') { - exports.signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT' - // should detect profiler and enable/disable accordingly. - // see #21 - // 'SIGPROF' - ); -} -if (process.platform === 'linux') { - exports.signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT'); -} -//# sourceMappingURL=signals.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/cjs/signals.js.map b/sdks/nodejs/node_modules/signal-exit/dist/cjs/signals.js.map deleted file mode 100644 index 78c613f..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/cjs/signals.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/signals.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACU,QAAA,OAAO,GAAqB,EAAE,CAAA;AAC3C,eAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;AAE3C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;IAChC,eAAO,CAAC,IAAI,CACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ;IACR,yDAAyD;IACzD,UAAU;IACV,YAAY;KACb,CAAA;CACF;AAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;IAChC,eAAO,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;CACxD","sourcesContent":["/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n signals.push(\n 'SIGALRM',\n 'SIGABRT',\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n"]} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/mjs/browser.d.ts b/sdks/nodejs/node_modules/signal-exit/dist/mjs/browser.d.ts deleted file mode 100644 index 90f2e3f..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/mjs/browser.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * This is a browser shim that provides the same functional interface - * as the main node export, but it does nothing. - * @module - */ -import type { Handler } from './index.js'; -export declare const onExit: (cb: Handler, opts: { - alwaysLast?: boolean; -}) => () => void; -export declare const load: () => void; -export declare const unload: () => void; -//# sourceMappingURL=browser.d.ts.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/mjs/browser.d.ts.map b/sdks/nodejs/node_modules/signal-exit/dist/mjs/browser.d.ts.map deleted file mode 100644 index aacc1d3..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/mjs/browser.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACzC,eAAO,MAAM,MAAM,EAAE,CACnB,EAAE,EAAE,OAAO,EACX,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,KAC3B,MAAM,IAAqB,CAAA;AAChC,eAAO,MAAM,IAAI,YAAW,CAAA;AAC5B,eAAO,MAAM,MAAM,YAAW,CAAA"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/mjs/browser.js b/sdks/nodejs/node_modules/signal-exit/dist/mjs/browser.js deleted file mode 100644 index 9c5f9b9..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/mjs/browser.js +++ /dev/null @@ -1,4 +0,0 @@ -export const onExit = () => () => { }; -export const load = () => { }; -export const unload = () => { }; -//# sourceMappingURL=browser.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/mjs/browser.js.map b/sdks/nodejs/node_modules/signal-exit/dist/mjs/browser.js.map deleted file mode 100644 index b3ff303..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/mjs/browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,MAAM,GAGD,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC,CAAA;AAChC,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;AAC5B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA","sourcesContent":["/**\n * This is a browser shim that provides the same functional interface\n * as the main node export, but it does nothing.\n * @module\n */\nimport type { Handler } from './index.js'\nexport const onExit: (\n cb: Handler,\n opts: { alwaysLast?: boolean }\n) => () => void = () => () => {}\nexport const load = () => {}\nexport const unload = () => {}\n"]} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/mjs/index.d.ts b/sdks/nodejs/node_modules/signal-exit/dist/mjs/index.d.ts deleted file mode 100644 index cabe9cf..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/mjs/index.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -/// -import { signals } from './signals.js'; -export { signals }; -/** - * A function that takes an exit code and signal as arguments - * - * In the case of signal exits *only*, a return value of true - * will indicate that the signal is being handled, and we should - * not synthetically exit with the signal we received. Regardless - * of the handler return value, the handler is unloaded when an - * otherwise fatal signal is received, so you get exactly 1 shot - * at it, unless you add another onExit handler at that point. - * - * In the case of numeric code exits, we may already have committed - * to exiting the process, for example via a fatal exception or - * unhandled promise rejection, so it is impossible to stop safely. - */ -export type Handler = (code: number | null | undefined, signal: NodeJS.Signals | null) => true | void; -export declare const -/** - * Called when the process is exiting, whether via signal, explicit - * exit, or running out of stuff to do. - * - * If the global process object is not suitable for instrumentation, - * then this will be a no-op. - * - * Returns a function that may be used to unload signal-exit. - */ -onExit: (cb: Handler, opts?: { - alwaysLast?: boolean | undefined; -} | undefined) => () => void, -/** - * Load the listeners. Likely you never need to call this, unless - * doing a rather deep integration with signal-exit functionality. - * Mostly exposed for the benefit of testing. - * - * @internal - */ -load: () => void, -/** - * Unload the listeners. Likely you never need to call this, unless - * doing a rather deep integration with signal-exit functionality. - * Mostly exposed for the benefit of testing. - * - * @internal - */ -unload: () => void; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/mjs/index.d.ts.map b/sdks/nodejs/node_modules/signal-exit/dist/mjs/index.d.ts.map deleted file mode 100644 index f84594e..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/mjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,CAAA;AAuBlB;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,OAAO,GAAG,CACpB,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAC1B,IAAI,GAAG,IAAI,CAAA;AA8QhB,eAAO;AACL;;;;;;;;GAQG;AACH,MAAM,OAzMO,OAAO;;wBAPiD,IAAI;AAkNzE;;;;;;GAMG;AACH,IAAI;AAEJ;;;;;;GAMG;AACH,MAAM,YAGP,CAAA"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/mjs/index.js b/sdks/nodejs/node_modules/signal-exit/dist/mjs/index.js deleted file mode 100644 index 4a78bad..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/mjs/index.js +++ /dev/null @@ -1,275 +0,0 @@ -// Note: since nyc uses this module to output coverage, any lines -// that are in the direct sync flow of nyc's outputCoverage are -// ignored, since we can never get coverage for them. -// grab a reference to node's real process object right away -import { signals } from './signals.js'; -export { signals }; -const processOk = (process) => !!process && - typeof process === 'object' && - typeof process.removeListener === 'function' && - typeof process.emit === 'function' && - typeof process.reallyExit === 'function' && - typeof process.listeners === 'function' && - typeof process.kill === 'function' && - typeof process.pid === 'number' && - typeof process.on === 'function'; -const kExitEmitter = Symbol.for('signal-exit emitter'); -const global = globalThis; -const ObjectDefineProperty = Object.defineProperty.bind(Object); -// teeny special purpose ee -class Emitter { - emitted = { - afterExit: false, - exit: false, - }; - listeners = { - afterExit: [], - exit: [], - }; - count = 0; - id = Math.random(); - constructor() { - if (global[kExitEmitter]) { - return global[kExitEmitter]; - } - ObjectDefineProperty(global, kExitEmitter, { - value: this, - writable: false, - enumerable: false, - configurable: false, - }); - } - on(ev, fn) { - this.listeners[ev].push(fn); - } - removeListener(ev, fn) { - const list = this.listeners[ev]; - const i = list.indexOf(fn); - /* c8 ignore start */ - if (i === -1) { - return; - } - /* c8 ignore stop */ - if (i === 0 && list.length === 1) { - list.length = 0; - } - else { - list.splice(i, 1); - } - } - emit(ev, code, signal) { - if (this.emitted[ev]) { - return false; - } - this.emitted[ev] = true; - let ret = false; - for (const fn of this.listeners[ev]) { - ret = fn(code, signal) === true || ret; - } - if (ev === 'exit') { - ret = this.emit('afterExit', code, signal) || ret; - } - return ret; - } -} -class SignalExitBase { -} -const signalExitWrap = (handler) => { - return { - onExit(cb, opts) { - return handler.onExit(cb, opts); - }, - load() { - return handler.load(); - }, - unload() { - return handler.unload(); - }, - }; -}; -class SignalExitFallback extends SignalExitBase { - onExit() { - return () => { }; - } - load() { } - unload() { } -} -class SignalExit extends SignalExitBase { - // "SIGHUP" throws an `ENOSYS` error on Windows, - // so use a supported signal instead - /* c8 ignore start */ - #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'; - /* c8 ignore stop */ - #emitter = new Emitter(); - #process; - #originalProcessEmit; - #originalProcessReallyExit; - #sigListeners = {}; - #loaded = false; - constructor(process) { - super(); - this.#process = process; - // { : , ... } - this.#sigListeners = {}; - for (const sig of signals) { - this.#sigListeners[sig] = () => { - // If there are no other listeners, an exit is coming! - // Simplest way: remove us and then re-send the signal. - // We know that this will kill the process, so we can - // safely emit now. - const listeners = this.#process.listeners(sig); - let { count } = this.#emitter; - // This is a workaround for the fact that signal-exit v3 and signal - // exit v4 are not aware of each other, and each will attempt to let - // the other handle it, so neither of them do. To correct this, we - // detect if we're the only handler *except* for previous versions - // of signal-exit, and increment by the count of listeners it has - // created. - /* c8 ignore start */ - const p = process; - if (typeof p.__signal_exit_emitter__ === 'object' && - typeof p.__signal_exit_emitter__.count === 'number') { - count += p.__signal_exit_emitter__.count; - } - /* c8 ignore stop */ - if (listeners.length === count) { - this.unload(); - const ret = this.#emitter.emit('exit', null, sig); - /* c8 ignore start */ - const s = sig === 'SIGHUP' ? this.#hupSig : sig; - if (!ret) - process.kill(process.pid, s); - /* c8 ignore stop */ - } - }; - } - this.#originalProcessReallyExit = process.reallyExit; - this.#originalProcessEmit = process.emit; - } - onExit(cb, opts) { - /* c8 ignore start */ - if (!processOk(this.#process)) { - return () => { }; - } - /* c8 ignore stop */ - if (this.#loaded === false) { - this.load(); - } - const ev = opts?.alwaysLast ? 'afterExit' : 'exit'; - this.#emitter.on(ev, cb); - return () => { - this.#emitter.removeListener(ev, cb); - if (this.#emitter.listeners['exit'].length === 0 && - this.#emitter.listeners['afterExit'].length === 0) { - this.unload(); - } - }; - } - load() { - if (this.#loaded) { - return; - } - this.#loaded = true; - // This is the number of onSignalExit's that are in play. - // It's important so that we can count the correct number of - // listeners on signals, and don't wait for the other one to - // handle it instead of us. - this.#emitter.count += 1; - for (const sig of signals) { - try { - const fn = this.#sigListeners[sig]; - if (fn) - this.#process.on(sig, fn); - } - catch (_) { } - } - this.#process.emit = (ev, ...a) => { - return this.#processEmit(ev, ...a); - }; - this.#process.reallyExit = (code) => { - return this.#processReallyExit(code); - }; - } - unload() { - if (!this.#loaded) { - return; - } - this.#loaded = false; - signals.forEach(sig => { - const listener = this.#sigListeners[sig]; - /* c8 ignore start */ - if (!listener) { - throw new Error('Listener not defined for signal: ' + sig); - } - /* c8 ignore stop */ - try { - this.#process.removeListener(sig, listener); - /* c8 ignore start */ - } - catch (_) { } - /* c8 ignore stop */ - }); - this.#process.emit = this.#originalProcessEmit; - this.#process.reallyExit = this.#originalProcessReallyExit; - this.#emitter.count -= 1; - } - #processReallyExit(code) { - /* c8 ignore start */ - if (!processOk(this.#process)) { - return 0; - } - this.#process.exitCode = code || 0; - /* c8 ignore stop */ - this.#emitter.emit('exit', this.#process.exitCode, null); - return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode); - } - #processEmit(ev, ...args) { - const og = this.#originalProcessEmit; - if (ev === 'exit' && processOk(this.#process)) { - if (typeof args[0] === 'number') { - this.#process.exitCode = args[0]; - /* c8 ignore start */ - } - /* c8 ignore start */ - const ret = og.call(this.#process, ev, ...args); - /* c8 ignore start */ - this.#emitter.emit('exit', this.#process.exitCode, null); - /* c8 ignore stop */ - return ret; - } - else { - return og.call(this.#process, ev, ...args); - } - } -} -const process = globalThis.process; -// wrap so that we call the method on the actual handler, without -// exporting it directly. -export const { -/** - * Called when the process is exiting, whether via signal, explicit - * exit, or running out of stuff to do. - * - * If the global process object is not suitable for instrumentation, - * then this will be a no-op. - * - * Returns a function that may be used to unload signal-exit. - */ -onExit, -/** - * Load the listeners. Likely you never need to call this, unless - * doing a rather deep integration with signal-exit functionality. - * Mostly exposed for the benefit of testing. - * - * @internal - */ -load, -/** - * Unload the listeners. Likely you never need to call this, unless - * doing a rather deep integration with signal-exit functionality. - * Mostly exposed for the benefit of testing. - * - * @internal - */ -unload, } = signalExitWrap(processOk(process) ? new SignalExit(process) : new SignalExitFallback()); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/mjs/index.js.map b/sdks/nodejs/node_modules/signal-exit/dist/mjs/index.js.map deleted file mode 100644 index 3a7b76d..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/mjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,+DAA+D;AAC/D,qDAAqD;AACrD,4DAA4D;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,CAAA;AAQlB,MAAM,SAAS,GAAG,CAAC,OAAY,EAAwB,EAAE,CACvD,CAAC,CAAC,OAAO;IACT,OAAO,OAAO,KAAK,QAAQ;IAC3B,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU;IAC5C,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU;IAClC,OAAO,OAAO,CAAC,UAAU,KAAK,UAAU;IACxC,OAAO,OAAO,CAAC,SAAS,KAAK,UAAU;IACvC,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU;IAClC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;IAC/B,OAAO,OAAO,CAAC,EAAE,KAAK,UAAU,CAAA;AAElC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;AACtD,MAAM,MAAM,GAAqD,UAAU,CAAA;AAC3E,MAAM,oBAAoB,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAwB/D,2BAA2B;AAC3B,MAAM,OAAO;IACX,OAAO,GAAY;QACjB,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,KAAK;KACZ,CAAA;IAED,SAAS,GAAc;QACrB,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,EAAE;KACT,CAAA;IAED,KAAK,GAAW,CAAC,CAAA;IACjB,EAAE,GAAW,IAAI,CAAC,MAAM,EAAE,CAAA;IAE1B;QACE,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE;YACxB,OAAO,MAAM,CAAC,YAAY,CAAC,CAAA;SAC5B;QACD,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE;YACzC,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,EAAE,CAAC,EAAa,EAAE,EAAW;QAC3B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7B,CAAC;IAED,cAAc,CAAC,EAAa,EAAE,EAAW;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC1B,qBAAqB;QACrB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YACZ,OAAM;SACP;QACD,oBAAoB;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;SAChB;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SAClB;IACH,CAAC;IAED,IAAI,CACF,EAAa,EACb,IAA+B,EAC/B,MAA6B;QAE7B,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACpB,OAAO,KAAK,CAAA;SACb;QACD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;QACvB,IAAI,GAAG,GAAY,KAAK,CAAA;QACxB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YACnC,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,GAAG,CAAA;SACvC;QACD,IAAI,EAAE,KAAK,MAAM,EAAE;YACjB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,CAAA;SAClD;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;CACF;AAED,MAAe,cAAc;CAI5B;AAED,MAAM,cAAc,GAAG,CAA2B,OAAU,EAAE,EAAE;IAC9D,OAAO;QACL,MAAM,CAAC,EAAW,EAAE,IAA+B;YACjD,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACjC,CAAC;QACD,IAAI;YACF,OAAO,OAAO,CAAC,IAAI,EAAE,CAAA;QACvB,CAAC;QACD,MAAM;YACJ,OAAO,OAAO,CAAC,MAAM,EAAE,CAAA;QACzB,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,kBAAmB,SAAQ,cAAc;IAC7C,MAAM;QACJ,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IACjB,CAAC;IACD,IAAI,KAAI,CAAC;IACT,MAAM,KAAI,CAAC;CACZ;AAED,MAAM,UAAW,SAAQ,cAAc;IACrC,gDAAgD;IAChD,oCAAoC;IACpC,qBAAqB;IACrB,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC5D,oBAAoB;IACpB,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAA;IACxB,QAAQ,CAAW;IACnB,oBAAoB,CAAmB;IACvC,0BAA0B,CAAyB;IAEnD,aAAa,GAA2C,EAAE,CAAA;IAC1D,OAAO,GAAY,KAAK,CAAA;IAExB,YAAY,OAAkB;QAC5B,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,mCAAmC;QACnC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACvB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;YACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE;gBAC7B,sDAAsD;gBACtD,uDAAuD;gBACvD,qDAAqD;gBACrD,mBAAmB;gBACnB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;gBAC9C,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;gBAC7B,mEAAmE;gBACnE,oEAAoE;gBACpE,kEAAkE;gBAClE,kEAAkE;gBAClE,iEAAiE;gBACjE,WAAW;gBACX,qBAAqB;gBACrB,MAAM,CAAC,GAAG,OAET,CAAA;gBACD,IACE,OAAO,CAAC,CAAC,uBAAuB,KAAK,QAAQ;oBAC7C,OAAO,CAAC,CAAC,uBAAuB,CAAC,KAAK,KAAK,QAAQ,EACnD;oBACA,KAAK,IAAI,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAA;iBACzC;gBACD,oBAAoB;gBACpB,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK,EAAE;oBAC9B,IAAI,CAAC,MAAM,EAAE,CAAA;oBACb,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;oBACjD,qBAAqB;oBACrB,MAAM,CAAC,GAAG,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;oBAC/C,IAAI,CAAC,GAAG;wBAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;oBACtC,oBAAoB;iBACrB;YACH,CAAC,CAAA;SACF;QAED,IAAI,CAAC,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAA;QACpD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,EAAW,EAAE,IAA+B;QACjD,qBAAqB;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC7B,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;SAChB;QACD,oBAAoB;QAEpB,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;YAC1B,IAAI,CAAC,IAAI,EAAE,CAAA;SACZ;QAED,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAA;QAClD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QACxB,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YACpC,IACE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;gBAC5C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EACjD;gBACA,IAAI,CAAC,MAAM,EAAE,CAAA;aACd;QACH,CAAC,CAAA;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAM;SACP;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QAEnB,yDAAyD;QACzD,4DAA4D;QAC5D,4DAA4D;QAC5D,2BAA2B;QAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAA;QAExB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;YACzB,IAAI;gBACF,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;gBAClC,IAAI,EAAE;oBAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;aAClC;YAAC,OAAO,CAAC,EAAE,GAAE;SACf;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAU,EAAE,GAAG,CAAQ,EAAE,EAAE;YAC/C,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;QACpC,CAAC,CAAA;QACD,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,IAAgC,EAAE,EAAE;YAC9D,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACtC,CAAC,CAAA;IACH,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAM;SACP;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QAEpB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YACxC,qBAAqB;YACrB,IAAI,CAAC,QAAQ,EAAE;gBACb,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAA;aAC3D;YACD,oBAAoB;YACpB,IAAI;gBACF,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;gBAC3C,qBAAqB;aACtB;YAAC,OAAO,CAAC,EAAE,GAAE;YACd,oBAAoB;QACtB,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAA;QAC9C,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAA;QAC1D,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED,kBAAkB,CAAC,IAAgC;QACjD,qBAAqB;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC7B,OAAO,CAAC,CAAA;SACT;QACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAA;QAClC,oBAAoB;QAEpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QACxD,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CACzC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACvB,CAAA;IACH,CAAC;IAED,YAAY,CAAC,EAAU,EAAE,GAAG,IAAW;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAA;QACpC,IAAI,EAAE,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC7C,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBAC/B,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBAChC,qBAAqB;aACtB;YACD,qBAAqB;YACrB,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;YAC/C,qBAAqB;YACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;YACxD,oBAAoB;YACpB,OAAO,GAAG,CAAA;SACX;aAAM;YACL,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;SAC3C;IACH,CAAC;CACF;AAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;AAClC,iEAAiE;AACjE,yBAAyB;AACzB,MAAM,CAAC,MAAM;AACX;;;;;;;;GAQG;AACH,MAAM;AAEN;;;;;;GAMG;AACH,IAAI;AAEJ;;;;;;GAMG;AACH,MAAM,GACP,GAAG,cAAc,CAChB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE,CACxE,CAAA","sourcesContent":["// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n reallyExit: (code?: number | undefined | null) => any\n emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n emitted: Emitted = {\n afterExit: false,\n exit: false,\n }\n\n listeners: Listeners = {\n afterExit: [],\n exit: [],\n }\n\n count: number = 0\n id: number = Math.random()\n\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter]\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n }\n\n on(ev: ExitEvent, fn: Handler) {\n this.listeners[ev].push(fn)\n }\n\n removeListener(ev: ExitEvent, fn: Handler) {\n const list = this.listeners[ev]\n const i = list.indexOf(fn)\n /* c8 ignore start */\n if (i === -1) {\n return\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0\n } else {\n list.splice(i, 1)\n }\n }\n\n emit(\n ev: ExitEvent,\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n ): boolean {\n if (this.emitted[ev]) {\n return false\n }\n this.emitted[ev] = true\n let ret: boolean = false\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret\n }\n return ret\n }\n}\n\nabstract class SignalExitBase {\n abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n abstract load(): void\n abstract unload(): void\n}\n\nconst signalExitWrap = (handler: T) => {\n return {\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n return handler.onExit(cb, opts)\n },\n load() {\n return handler.load()\n },\n unload() {\n return handler.unload()\n },\n }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => {}\n }\n load() {}\n unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n /* c8 ignore stop */\n #emitter = new Emitter()\n #process: ProcessRE\n #originalProcessEmit: ProcessRE['emit']\n #originalProcessReallyExit: ProcessRE['reallyExit']\n\n #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n #loaded: boolean = false\n\n constructor(process: ProcessRE) {\n super()\n this.#process = process\n // { : , ... }\n this.#sigListeners = {}\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig)\n let { count } = this.#emitter\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process as unknown as {\n __signal_exit_emitter__?: { count: number }\n }\n if (\n typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number'\n ) {\n count += p.__signal_exit_emitter__.count\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload()\n const ret = this.#emitter.emit('exit', null, sig)\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig\n if (!ret) process.kill(process.pid, s)\n /* c8 ignore stop */\n }\n }\n }\n\n this.#originalProcessReallyExit = process.reallyExit\n this.#originalProcessEmit = process.emit\n }\n\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => {}\n }\n /* c8 ignore stop */\n\n if (this.#loaded === false) {\n this.load()\n }\n\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n this.#emitter.on(ev, cb)\n return () => {\n this.#emitter.removeListener(ev, cb)\n if (\n this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0\n ) {\n this.unload()\n }\n }\n }\n\n load() {\n if (this.#loaded) {\n return\n }\n this.#loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1\n\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig]\n if (fn) this.#process.on(sig, fn)\n } catch (_) {}\n }\n\n this.#process.emit = (ev: string, ...a: any[]) => {\n return this.#processEmit(ev, ...a)\n }\n this.#process.reallyExit = (code?: number | null | undefined) => {\n return this.#processReallyExit(code)\n }\n }\n\n unload() {\n if (!this.#loaded) {\n return\n }\n this.#loaded = false\n\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig]\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig)\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener)\n /* c8 ignore start */\n } catch (_) {}\n /* c8 ignore stop */\n })\n this.#process.emit = this.#originalProcessEmit\n this.#process.reallyExit = this.#originalProcessReallyExit\n this.#emitter.count -= 1\n }\n\n #processReallyExit(code?: number | null | undefined) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0\n }\n this.#process.exitCode = code || 0\n /* c8 ignore stop */\n\n this.#emitter.emit('exit', this.#process.exitCode, null)\n return this.#originalProcessReallyExit.call(\n this.#process,\n this.#process.exitCode\n )\n }\n\n #processEmit(ev: string, ...args: any[]): any {\n const og = this.#originalProcessEmit\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0]\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args)\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null)\n /* c8 ignore stop */\n return ret\n } else {\n return og.call(this.#process, ev, ...args)\n }\n }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n /**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\n onExit,\n\n /**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n load,\n\n /**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n unload,\n} = signalExitWrap(\n processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n"]} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/mjs/package.json b/sdks/nodejs/node_modules/signal-exit/dist/mjs/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/mjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/sdks/nodejs/node_modules/signal-exit/dist/mjs/signals.d.ts b/sdks/nodejs/node_modules/signal-exit/dist/mjs/signals.d.ts deleted file mode 100644 index 3f01ef0..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/mjs/signals.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -/// -/** - * This is not the set of all possible signals. - * - * It IS, however, the set of all signals that trigger - * an exit on either Linux or BSD systems. Linux is a - * superset of the signal names supported on BSD, and - * the unknown signals just fail to register, so we can - * catch that easily enough. - * - * Windows signals are a different set, since there are - * signals that terminate Windows processes, but don't - * terminate (or don't even exist) on Posix systems. - * - * Don't bother with SIGKILL. It's uncatchable, which - * means that we can't fire any callbacks anyway. - * - * If a user does happen to register a handler on a non- - * fatal signal like SIGWINCH or something, and then - * exit, it'll end up firing `process.emit('exit')`, so - * the handler will be fired anyway. - * - * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised - * artificially, inherently leave the process in a - * state from which it is not safe to try and enter JS - * listeners. - */ -export declare const signals: NodeJS.Signals[]; -//# sourceMappingURL=signals.d.ts.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/mjs/signals.d.ts.map b/sdks/nodejs/node_modules/signal-exit/dist/mjs/signals.d.ts.map deleted file mode 100644 index 891fe1e..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/mjs/signals.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/signals.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,OAAO,EAAO,CAAA"} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/mjs/signals.js b/sdks/nodejs/node_modules/signal-exit/dist/mjs/signals.js deleted file mode 100644 index 7dbf15a..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/mjs/signals.js +++ /dev/null @@ -1,39 +0,0 @@ -/** - * This is not the set of all possible signals. - * - * It IS, however, the set of all signals that trigger - * an exit on either Linux or BSD systems. Linux is a - * superset of the signal names supported on BSD, and - * the unknown signals just fail to register, so we can - * catch that easily enough. - * - * Windows signals are a different set, since there are - * signals that terminate Windows processes, but don't - * terminate (or don't even exist) on Posix systems. - * - * Don't bother with SIGKILL. It's uncatchable, which - * means that we can't fire any callbacks anyway. - * - * If a user does happen to register a handler on a non- - * fatal signal like SIGWINCH or something, and then - * exit, it'll end up firing `process.emit('exit')`, so - * the handler will be fired anyway. - * - * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised - * artificially, inherently leave the process in a - * state from which it is not safe to try and enter JS - * listeners. - */ -export const signals = []; -signals.push('SIGHUP', 'SIGINT', 'SIGTERM'); -if (process.platform !== 'win32') { - signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT' - // should detect profiler and enable/disable accordingly. - // see #21 - // 'SIGPROF' - ); -} -if (process.platform === 'linux') { - signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT'); -} -//# sourceMappingURL=signals.js.map \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/dist/mjs/signals.js.map b/sdks/nodejs/node_modules/signal-exit/dist/mjs/signals.js.map deleted file mode 100644 index 91008c9..0000000 --- a/sdks/nodejs/node_modules/signal-exit/dist/mjs/signals.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,OAAO,GAAqB,EAAE,CAAA;AAC3C,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;AAE3C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;IAChC,OAAO,CAAC,IAAI,CACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ;IACR,yDAAyD;IACzD,UAAU;IACV,YAAY;KACb,CAAA;CACF;AAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;IAChC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;CACxD","sourcesContent":["/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n signals.push(\n 'SIGALRM',\n 'SIGABRT',\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n"]} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/signal-exit/package.json b/sdks/nodejs/node_modules/signal-exit/package.json deleted file mode 100644 index ac176ce..0000000 --- a/sdks/nodejs/node_modules/signal-exit/package.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "name": "signal-exit", - "version": "4.1.0", - "description": "when you want to fire an event no matter how a process exits.", - "main": "./dist/cjs/index.js", - "module": "./dist/mjs/index.js", - "browser": "./dist/mjs/browser.js", - "types": "./dist/mjs/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./dist/mjs/index.d.ts", - "default": "./dist/mjs/index.js" - }, - "require": { - "types": "./dist/cjs/index.d.ts", - "default": "./dist/cjs/index.js" - } - }, - "./signals": { - "import": { - "types": "./dist/mjs/signals.d.ts", - "default": "./dist/mjs/signals.js" - }, - "require": { - "types": "./dist/cjs/signals.d.ts", - "default": "./dist/cjs/signals.js" - } - }, - "./browser": { - "import": { - "types": "./dist/mjs/browser.d.ts", - "default": "./dist/mjs/browser.js" - }, - "require": { - "types": "./dist/cjs/browser.d.ts", - "default": "./dist/cjs/browser.js" - } - } - }, - "files": [ - "dist" - ], - "engines": { - "node": ">=14" - }, - "repository": { - "type": "git", - "url": "https://github.com/tapjs/signal-exit.git" - }, - "keywords": [ - "signal", - "exit" - ], - "author": "Ben Coe ", - "license": "ISC", - "devDependencies": { - "@types/cross-spawn": "^6.0.2", - "@types/node": "^18.15.11", - "@types/signal-exit": "^3.0.1", - "@types/tap": "^15.0.8", - "c8": "^7.13.0", - "prettier": "^2.8.6", - "tap": "^16.3.4", - "ts-node": "^10.9.1", - "typedoc": "^0.23.28", - "typescript": "^5.0.2" - }, - "scripts": { - "preversion": "npm test", - "postversion": "npm publish", - "prepublishOnly": "git push origin --follow-tags", - "preprepare": "rm -rf dist", - "prepare": "tsc -p tsconfig.json && tsc -p tsconfig-esm.json && bash ./scripts/fixup.sh", - "pretest": "npm run prepare", - "presnap": "npm run prepare", - "test": "c8 tap", - "snap": "c8 tap", - "format": "prettier --write . --loglevel warn", - "typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts" - }, - "prettier": { - "semi": false, - "printWidth": 75, - "tabWidth": 2, - "useTabs": false, - "singleQuote": true, - "jsxSingleQuote": false, - "bracketSameLine": true, - "arrowParens": "avoid", - "endOfLine": "lf" - }, - "tap": { - "coverage": false, - "jobs": 1, - "node-arg": [ - "--no-warnings", - "--loader", - "ts-node/esm" - ], - "ts": false - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } -} diff --git a/sdks/nodejs/node_modules/tslib/CopyrightNotice.txt b/sdks/nodejs/node_modules/tslib/CopyrightNotice.txt deleted file mode 100644 index 0e42542..0000000 --- a/sdks/nodejs/node_modules/tslib/CopyrightNotice.txt +++ /dev/null @@ -1,15 +0,0 @@ -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -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. -***************************************************************************** */ - diff --git a/sdks/nodejs/node_modules/tslib/LICENSE.txt b/sdks/nodejs/node_modules/tslib/LICENSE.txt deleted file mode 100644 index bfe6430..0000000 --- a/sdks/nodejs/node_modules/tslib/LICENSE.txt +++ /dev/null @@ -1,12 +0,0 @@ -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -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. \ No newline at end of file diff --git a/sdks/nodejs/node_modules/tslib/README.md b/sdks/nodejs/node_modules/tslib/README.md deleted file mode 100644 index 290cc61..0000000 --- a/sdks/nodejs/node_modules/tslib/README.md +++ /dev/null @@ -1,164 +0,0 @@ -# tslib - -This is a runtime library for [TypeScript](https://www.typescriptlang.org/) that contains all of the TypeScript helper functions. - -This library is primarily used by the `--importHelpers` flag in TypeScript. -When using `--importHelpers`, a module that uses helper functions like `__extends` and `__assign` in the following emitted file: - -```ts -var __assign = (this && this.__assign) || Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; -}; -exports.x = {}; -exports.y = __assign({}, exports.x); - -``` - -will instead be emitted as something like the following: - -```ts -var tslib_1 = require("tslib"); -exports.x = {}; -exports.y = tslib_1.__assign({}, exports.x); -``` - -Because this can avoid duplicate declarations of things like `__extends`, `__assign`, etc., this means delivering users smaller files on average, as well as less runtime overhead. -For optimized bundles with TypeScript, you should absolutely consider using `tslib` and `--importHelpers`. - -# Installing - -For the latest stable version, run: - -## npm - -```sh -# TypeScript 3.9.2 or later -npm install tslib - -# TypeScript 3.8.4 or earlier -npm install tslib@^1 - -# TypeScript 2.3.2 or earlier -npm install tslib@1.6.1 -``` - -## yarn - -```sh -# TypeScript 3.9.2 or later -yarn add tslib - -# TypeScript 3.8.4 or earlier -yarn add tslib@^1 - -# TypeScript 2.3.2 or earlier -yarn add tslib@1.6.1 -``` - -## bower - -```sh -# TypeScript 3.9.2 or later -bower install tslib - -# TypeScript 3.8.4 or earlier -bower install tslib@^1 - -# TypeScript 2.3.2 or earlier -bower install tslib@1.6.1 -``` - -## JSPM - -```sh -# TypeScript 3.9.2 or later -jspm install tslib - -# TypeScript 3.8.4 or earlier -jspm install tslib@^1 - -# TypeScript 2.3.2 or earlier -jspm install tslib@1.6.1 -``` - -# Usage - -Set the `importHelpers` compiler option on the command line: - -``` -tsc --importHelpers file.ts -``` - -or in your tsconfig.json: - -```json -{ - "compilerOptions": { - "importHelpers": true - } -} -``` - -#### For bower and JSPM users - -You will need to add a `paths` mapping for `tslib`, e.g. For Bower users: - -```json -{ - "compilerOptions": { - "module": "amd", - "importHelpers": true, - "baseUrl": "./", - "paths": { - "tslib" : ["bower_components/tslib/tslib.d.ts"] - } - } -} -``` - -For JSPM users: - -```json -{ - "compilerOptions": { - "module": "system", - "importHelpers": true, - "baseUrl": "./", - "paths": { - "tslib" : ["jspm_packages/npm/tslib@2.x.y/tslib.d.ts"] - } - } -} -``` - -## Deployment - -- Choose your new version number -- Set it in `package.json` and `bower.json` -- Create a tag: `git tag [version]` -- Push the tag: `git push --tags` -- Create a [release in GitHub](https://github.com/microsoft/tslib/releases) -- Run the [publish to npm](https://github.com/microsoft/tslib/actions?query=workflow%3A%22Publish+to+NPM%22) workflow - -Done. - -# Contribute - -There are many ways to [contribute](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md) to TypeScript. - -* [Submit bugs](https://github.com/Microsoft/TypeScript/issues) and help us verify fixes as they are checked in. -* Review the [source code changes](https://github.com/Microsoft/TypeScript/pulls). -* Engage with other TypeScript users and developers on [StackOverflow](http://stackoverflow.com/questions/tagged/typescript). -* Join the [#typescript](http://twitter.com/#!/search/realtime/%23typescript) discussion on Twitter. -* [Contribute bug fixes](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md). - -# Documentation - -* [Quick tutorial](http://www.typescriptlang.org/Tutorial) -* [Programming handbook](http://www.typescriptlang.org/Handbook) -* [Homepage](http://www.typescriptlang.org/) diff --git a/sdks/nodejs/node_modules/tslib/SECURITY.md b/sdks/nodejs/node_modules/tslib/SECURITY.md deleted file mode 100644 index 869fdfe..0000000 --- a/sdks/nodejs/node_modules/tslib/SECURITY.md +++ /dev/null @@ -1,41 +0,0 @@ - - -## Security - -Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). - -If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. - -## Reporting Security Issues - -**Please do not report security vulnerabilities through public GitHub issues.** - -Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). - -If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). - -You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). - -Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: - - * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) - * Full paths of source file(s) related to the manifestation of the issue - * The location of the affected source code (tag/branch/commit or direct URL) - * Any special configuration required to reproduce the issue - * Step-by-step instructions to reproduce the issue - * Proof-of-concept or exploit code (if possible) - * Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. - -## Preferred Languages - -We prefer all communications to be in English. - -## Policy - -Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). - - diff --git a/sdks/nodejs/node_modules/tslib/modules/index.d.ts b/sdks/nodejs/node_modules/tslib/modules/index.d.ts deleted file mode 100644 index 3244fab..0000000 --- a/sdks/nodejs/node_modules/tslib/modules/index.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -// Note: named reexports are used instead of `export *` because -// TypeScript itself doesn't resolve the `export *` when checking -// if a particular helper exists. -export { - __extends, - __assign, - __rest, - __decorate, - __param, - __esDecorate, - __runInitializers, - __propKey, - __setFunctionName, - __metadata, - __awaiter, - __generator, - __exportStar, - __values, - __read, - __spread, - __spreadArrays, - __spreadArray, - __await, - __asyncGenerator, - __asyncDelegator, - __asyncValues, - __makeTemplateObject, - __importStar, - __importDefault, - __classPrivateFieldGet, - __classPrivateFieldSet, - __classPrivateFieldIn, - __createBinding, - __addDisposableResource, - __disposeResources, - __rewriteRelativeImportExtension, -} from '../tslib.js'; -export * as default from '../tslib.js'; diff --git a/sdks/nodejs/node_modules/tslib/modules/index.js b/sdks/nodejs/node_modules/tslib/modules/index.js deleted file mode 100644 index c91f618..0000000 --- a/sdks/nodejs/node_modules/tslib/modules/index.js +++ /dev/null @@ -1,70 +0,0 @@ -import tslib from '../tslib.js'; -const { - __extends, - __assign, - __rest, - __decorate, - __param, - __esDecorate, - __runInitializers, - __propKey, - __setFunctionName, - __metadata, - __awaiter, - __generator, - __exportStar, - __createBinding, - __values, - __read, - __spread, - __spreadArrays, - __spreadArray, - __await, - __asyncGenerator, - __asyncDelegator, - __asyncValues, - __makeTemplateObject, - __importStar, - __importDefault, - __classPrivateFieldGet, - __classPrivateFieldSet, - __classPrivateFieldIn, - __addDisposableResource, - __disposeResources, - __rewriteRelativeImportExtension, -} = tslib; -export { - __extends, - __assign, - __rest, - __decorate, - __param, - __esDecorate, - __runInitializers, - __propKey, - __setFunctionName, - __metadata, - __awaiter, - __generator, - __exportStar, - __createBinding, - __values, - __read, - __spread, - __spreadArrays, - __spreadArray, - __await, - __asyncGenerator, - __asyncDelegator, - __asyncValues, - __makeTemplateObject, - __importStar, - __importDefault, - __classPrivateFieldGet, - __classPrivateFieldSet, - __classPrivateFieldIn, - __addDisposableResource, - __disposeResources, - __rewriteRelativeImportExtension, -}; -export default tslib; diff --git a/sdks/nodejs/node_modules/tslib/modules/package.json b/sdks/nodejs/node_modules/tslib/modules/package.json deleted file mode 100644 index aafa0e4..0000000 --- a/sdks/nodejs/node_modules/tslib/modules/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/tslib/package.json b/sdks/nodejs/node_modules/tslib/package.json deleted file mode 100644 index 57d0578..0000000 --- a/sdks/nodejs/node_modules/tslib/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "tslib", - "author": "Microsoft Corp.", - "homepage": "https://www.typescriptlang.org/", - "version": "2.8.1", - "license": "0BSD", - "description": "Runtime library for TypeScript helper functions", - "keywords": [ - "TypeScript", - "Microsoft", - "compiler", - "language", - "javascript", - "tslib", - "runtime" - ], - "bugs": { - "url": "https://github.com/Microsoft/TypeScript/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/Microsoft/tslib.git" - }, - "main": "tslib.js", - "module": "tslib.es6.js", - "jsnext:main": "tslib.es6.js", - "typings": "tslib.d.ts", - "sideEffects": false, - "exports": { - ".": { - "module": { - "types": "./modules/index.d.ts", - "default": "./tslib.es6.mjs" - }, - "import": { - "node": "./modules/index.js", - "default": { - "types": "./modules/index.d.ts", - "default": "./tslib.es6.mjs" - } - }, - "default": "./tslib.js" - }, - "./*": "./*", - "./": "./" - } -} diff --git a/sdks/nodejs/node_modules/tslib/tslib.d.ts b/sdks/nodejs/node_modules/tslib/tslib.d.ts deleted file mode 100644 index f23df55..0000000 --- a/sdks/nodejs/node_modules/tslib/tslib.d.ts +++ /dev/null @@ -1,460 +0,0 @@ -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -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. -***************************************************************************** */ - -/** - * Used to shim class extends. - * - * @param d The derived class. - * @param b The base class. - */ -export declare function __extends(d: Function, b: Function): void; - -/** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * - * @param t The target object to copy to. - * @param sources One or more source objects from which to copy properties - */ -export declare function __assign(t: any, ...sources: any[]): any; - -/** - * Performs a rest spread on an object. - * - * @param t The source value. - * @param propertyNames The property names excluded from the rest spread. - */ -export declare function __rest(t: any, propertyNames: (string | symbol)[]): any; - -/** - * Applies decorators to a target object - * - * @param decorators The set of decorators to apply. - * @param target The target object. - * @param key If specified, the own property to apply the decorators to. - * @param desc The property descriptor, defaults to fetching the descriptor from the target object. - * @experimental - */ -export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; - -/** - * Creates an observing function decorator from a parameter decorator. - * - * @param paramIndex The parameter index to apply the decorator to. - * @param decorator The parameter decorator to apply. Note that the return value is ignored. - * @experimental - */ -export declare function __param(paramIndex: number, decorator: Function): Function; - -/** - * Applies decorators to a class or class member, following the native ECMAScript decorator specification. - * @param ctor For non-field class members, the class constructor. Otherwise, `null`. - * @param descriptorIn The `PropertyDescriptor` to use when unable to look up the property from `ctor`. - * @param decorators The decorators to apply - * @param contextIn The `DecoratorContext` to clone for each decorator application. - * @param initializers An array of field initializer mutation functions into which new initializers are written. - * @param extraInitializers An array of extra initializer functions into which new initializers are written. - */ -export declare function __esDecorate(ctor: Function | null, descriptorIn: object | null, decorators: Function[], contextIn: object, initializers: Function[] | null, extraInitializers: Function[]): void; - -/** - * Runs field initializers or extra initializers generated by `__esDecorate`. - * @param thisArg The `this` argument to use. - * @param initializers The array of initializers to evaluate. - * @param value The initial value to pass to the initializers. - */ -export declare function __runInitializers(thisArg: unknown, initializers: Function[], value?: any): any; - -/** - * Converts a computed property name into a `string` or `symbol` value. - */ -export declare function __propKey(x: any): string | symbol; - -/** - * Assigns the name of a function derived from the left-hand side of an assignment. - * @param f The function to rename. - * @param name The new name for the function. - * @param prefix A prefix (such as `"get"` or `"set"`) to insert before the name. - */ -export declare function __setFunctionName(f: Function, name: string | symbol, prefix?: string): Function; - -/** - * Creates a decorator that sets metadata. - * - * @param metadataKey The metadata key - * @param metadataValue The metadata value - * @experimental - */ -export declare function __metadata(metadataKey: any, metadataValue: any): Function; - -/** - * Converts a generator function into a pseudo-async function, by treating each `yield` as an `await`. - * - * @param thisArg The reference to use as the `this` value in the generator function - * @param _arguments The optional arguments array - * @param P The optional promise constructor argument, defaults to the `Promise` property of the global object. - * @param generator The generator function - */ -export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; - -/** - * Creates an Iterator object using the body as the implementation. - * - * @param thisArg The reference to use as the `this` value in the function - * @param body The generator state-machine based implementation. - * - * @see [./docs/generator.md] - */ -export declare function __generator(thisArg: any, body: Function): any; - -/** - * Creates bindings for all enumerable properties of `m` on `exports` - * - * @param m The source object - * @param o The `exports` object. - */ -export declare function __exportStar(m: any, o: any): void; - -/** - * Creates a value iterator from an `Iterable` or `ArrayLike` object. - * - * @param o The object. - * @throws {TypeError} If `o` is neither `Iterable`, nor an `ArrayLike`. - */ -export declare function __values(o: any): any; - -/** - * Reads values from an `Iterable` or `ArrayLike` object and returns the resulting array. - * - * @param o The object to read from. - * @param n The maximum number of arguments to read, defaults to `Infinity`. - */ -export declare function __read(o: any, n?: number): any[]; - -/** - * Creates an array from iterable spread. - * - * @param args The Iterable objects to spread. - * @deprecated since TypeScript 4.2 - Use `__spreadArray` - */ -export declare function __spread(...args: any[][]): any[]; - -/** - * Creates an array from array spread. - * - * @param args The ArrayLikes to spread into the resulting array. - * @deprecated since TypeScript 4.2 - Use `__spreadArray` - */ -export declare function __spreadArrays(...args: any[][]): any[]; - -/** - * Spreads the `from` array into the `to` array. - * - * @param pack Replace empty elements with `undefined`. - */ -export declare function __spreadArray(to: any[], from: any[], pack?: boolean): any[]; - -/** - * Creates an object that signals to `__asyncGenerator` that it shouldn't be yielded, - * and instead should be awaited and the resulting value passed back to the generator. - * - * @param v The value to await. - */ -export declare function __await(v: any): any; - -/** - * Converts a generator function into an async generator function, by using `yield __await` - * in place of normal `await`. - * - * @param thisArg The reference to use as the `this` value in the generator function - * @param _arguments The optional arguments array - * @param generator The generator function - */ -export declare function __asyncGenerator(thisArg: any, _arguments: any, generator: Function): any; - -/** - * Used to wrap a potentially async iterator in such a way so that it wraps the result - * of calling iterator methods of `o` in `__await` instances, and then yields the awaited values. - * - * @param o The potentially async iterator. - * @returns A synchronous iterator yielding `__await` instances on every odd invocation - * and returning the awaited `IteratorResult` passed to `next` every even invocation. - */ -export declare function __asyncDelegator(o: any): any; - -/** - * Creates a value async iterator from an `AsyncIterable`, `Iterable` or `ArrayLike` object. - * - * @param o The object. - * @throws {TypeError} If `o` is neither `AsyncIterable`, `Iterable`, nor an `ArrayLike`. - */ -export declare function __asyncValues(o: any): any; - -/** - * Creates a `TemplateStringsArray` frozen object from the `cooked` and `raw` arrays. - * - * @param cooked The cooked possibly-sparse array. - * @param raw The raw string content. - */ -export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray; - -/** - * Used to shim default and named imports in ECMAScript Modules transpiled to CommonJS. - * - * ```js - * import Default, { Named, Other } from "mod"; - * // or - * import { default as Default, Named, Other } from "mod"; - * ``` - * - * @param mod The CommonJS module exports object. - */ -export declare function __importStar(mod: T): T; - -/** - * Used to shim default imports in ECMAScript Modules transpiled to CommonJS. - * - * ```js - * import Default from "mod"; - * ``` - * - * @param mod The CommonJS module exports object. - */ -export declare function __importDefault(mod: T): T | { default: T }; - -/** - * Emulates reading a private instance field. - * - * @param receiver The instance from which to read the private field. - * @param state A WeakMap containing the private field value for an instance. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * - * @throws {TypeError} If `state` doesn't have an entry for `receiver`. - */ -export declare function __classPrivateFieldGet( - receiver: T, - state: { has(o: T): boolean, get(o: T): V | undefined }, - kind?: "f" -): V; - -/** - * Emulates reading a private static field. - * - * @param receiver The object from which to read the private static field. - * @param state The class constructor containing the definition of the static field. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The descriptor that holds the static field value. - * - * @throws {TypeError} If `receiver` is not `state`. - */ -export declare function __classPrivateFieldGet unknown, V>( - receiver: T, - state: T, - kind: "f", - f: { value: V } -): V; - -/** - * Emulates evaluating a private instance "get" accessor. - * - * @param receiver The instance on which to evaluate the private "get" accessor. - * @param state A WeakSet used to verify an instance supports the private "get" accessor. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The "get" accessor function to evaluate. - * - * @throws {TypeError} If `state` doesn't have an entry for `receiver`. - */ -export declare function __classPrivateFieldGet( - receiver: T, - state: { has(o: T): boolean }, - kind: "a", - f: () => V -): V; - -/** - * Emulates evaluating a private static "get" accessor. - * - * @param receiver The object on which to evaluate the private static "get" accessor. - * @param state The class constructor containing the definition of the static "get" accessor. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The "get" accessor function to evaluate. - * - * @throws {TypeError} If `receiver` is not `state`. - */ -export declare function __classPrivateFieldGet unknown, V>( - receiver: T, - state: T, - kind: "a", - f: () => V -): V; - -/** - * Emulates reading a private instance method. - * - * @param receiver The instance from which to read a private method. - * @param state A WeakSet used to verify an instance supports the private method. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The function to return as the private instance method. - * - * @throws {TypeError} If `state` doesn't have an entry for `receiver`. - */ -export declare function __classPrivateFieldGet unknown>( - receiver: T, - state: { has(o: T): boolean }, - kind: "m", - f: V -): V; - -/** - * Emulates reading a private static method. - * - * @param receiver The object from which to read the private static method. - * @param state The class constructor containing the definition of the static method. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The function to return as the private static method. - * - * @throws {TypeError} If `receiver` is not `state`. - */ -export declare function __classPrivateFieldGet unknown, V extends (...args: any[]) => unknown>( - receiver: T, - state: T, - kind: "m", - f: V -): V; - -/** - * Emulates writing to a private instance field. - * - * @param receiver The instance on which to set a private field value. - * @param state A WeakMap used to store the private field value for an instance. - * @param value The value to store in the private field. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * - * @throws {TypeError} If `state` doesn't have an entry for `receiver`. - */ -export declare function __classPrivateFieldSet( - receiver: T, - state: { has(o: T): boolean, set(o: T, value: V): unknown }, - value: V, - kind?: "f" -): V; - -/** - * Emulates writing to a private static field. - * - * @param receiver The object on which to set the private static field. - * @param state The class constructor containing the definition of the private static field. - * @param value The value to store in the private field. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The descriptor that holds the static field value. - * - * @throws {TypeError} If `receiver` is not `state`. - */ -export declare function __classPrivateFieldSet unknown, V>( - receiver: T, - state: T, - value: V, - kind: "f", - f: { value: V } -): V; - -/** - * Emulates writing to a private instance "set" accessor. - * - * @param receiver The instance on which to evaluate the private instance "set" accessor. - * @param state A WeakSet used to verify an instance supports the private "set" accessor. - * @param value The value to store in the private accessor. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The "set" accessor function to evaluate. - * - * @throws {TypeError} If `state` doesn't have an entry for `receiver`. - */ -export declare function __classPrivateFieldSet( - receiver: T, - state: { has(o: T): boolean }, - value: V, - kind: "a", - f: (v: V) => void -): V; - -/** - * Emulates writing to a private static "set" accessor. - * - * @param receiver The object on which to evaluate the private static "set" accessor. - * @param state The class constructor containing the definition of the static "set" accessor. - * @param value The value to store in the private field. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The "set" accessor function to evaluate. - * - * @throws {TypeError} If `receiver` is not `state`. - */ -export declare function __classPrivateFieldSet unknown, V>( - receiver: T, - state: T, - value: V, - kind: "a", - f: (v: V) => void -): V; - -/** - * Checks for the existence of a private field/method/accessor. - * - * @param state The class constructor containing the static member, or the WeakMap or WeakSet associated with a private instance member. - * @param receiver The object for which to test the presence of the private member. - */ -export declare function __classPrivateFieldIn( - state: (new (...args: any[]) => unknown) | { has(o: any): boolean }, - receiver: unknown, -): boolean; - -/** - * Creates a re-export binding on `object` with key `objectKey` that references `target[key]`. - * - * @param object The local `exports` object. - * @param target The object to re-export from. - * @param key The property key of `target` to re-export. - * @param objectKey The property key to re-export as. Defaults to `key`. - */ -export declare function __createBinding(object: object, target: object, key: PropertyKey, objectKey?: PropertyKey): void; - -/** - * Adds a disposable resource to a resource-tracking environment object. - * @param env A resource-tracking environment object. - * @param value Either a Disposable or AsyncDisposable object, `null`, or `undefined`. - * @param async When `true`, `AsyncDisposable` resources can be added. When `false`, `AsyncDisposable` resources cannot be added. - * @returns The {@link value} argument. - * - * @throws {TypeError} If {@link value} is not an object, or if either `Symbol.dispose` or `Symbol.asyncDispose` are not - * defined, or if {@link value} does not have an appropriate `Symbol.dispose` or `Symbol.asyncDispose` method. - */ -export declare function __addDisposableResource(env: { stack: { value?: unknown, dispose?: Function, async: boolean }[]; error: unknown; hasError: boolean; }, value: T, async: boolean): T; - -/** - * Disposes all resources in a resource-tracking environment object. - * @param env A resource-tracking environment object. - * @returns A {@link Promise} if any resources in the environment were marked as `async` when added; otherwise, `void`. - * - * @throws {SuppressedError} if an error thrown during disposal would have suppressed a prior error from disposal or the - * error recorded in the resource-tracking environment object. - * @seealso {@link __addDisposableResource} - */ -export declare function __disposeResources(env: { stack: { value?: unknown, dispose?: Function, async: boolean }[]; error: unknown; hasError: boolean; }): any; - -/** - * Transforms a relative import specifier ending in a non-declaration TypeScript file extension to its JavaScript file extension counterpart. - * @param path The import specifier. - * @param preserveJsx Causes '*.tsx' to transform to '*.jsx' instead of '*.js'. Should be true when `--jsx` is set to `preserve`. - */ -export declare function __rewriteRelativeImportExtension(path: string, preserveJsx?: boolean): string; \ No newline at end of file diff --git a/sdks/nodejs/node_modules/tslib/tslib.es6.html b/sdks/nodejs/node_modules/tslib/tslib.es6.html deleted file mode 100644 index b122e41..0000000 --- a/sdks/nodejs/node_modules/tslib/tslib.es6.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sdks/nodejs/node_modules/tslib/tslib.es6.js b/sdks/nodejs/node_modules/tslib/tslib.es6.js deleted file mode 100644 index 6c1739b..0000000 --- a/sdks/nodejs/node_modules/tslib/tslib.es6.js +++ /dev/null @@ -1,402 +0,0 @@ -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -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. -***************************************************************************** */ -/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -export function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -export var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -export function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -export function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -export function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -export function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { - function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } - var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; - var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; - var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); - var _, done = false; - for (var i = decorators.length - 1; i >= 0; i--) { - var context = {}; - for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; - for (var p in contextIn.access) context.access[p] = contextIn.access[p]; - context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; - var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); - if (kind === "accessor") { - if (result === void 0) continue; - if (result === null || typeof result !== "object") throw new TypeError("Object expected"); - if (_ = accept(result.get)) descriptor.get = _; - if (_ = accept(result.set)) descriptor.set = _; - if (_ = accept(result.init)) initializers.unshift(_); - } - else if (_ = accept(result)) { - if (kind === "field") initializers.unshift(_); - else descriptor[key] = _; - } - } - if (target) Object.defineProperty(target, contextIn.name, descriptor); - done = true; -}; - -export function __runInitializers(thisArg, initializers, value) { - var useValue = arguments.length > 2; - for (var i = 0; i < initializers.length; i++) { - value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); - } - return useValue ? value : void 0; -}; - -export function __propKey(x) { - return typeof x === "symbol" ? x : "".concat(x); -}; - -export function __setFunctionName(f, name, prefix) { - if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; - return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); -}; - -export function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -export function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -export function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); - return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -export var __createBinding = Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -}); - -export function __exportStar(m, o) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); -} - -export function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} - -export function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -/** @deprecated */ -export function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -/** @deprecated */ -export function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -} - -export function __spreadArray(to, from, pack) { - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); -} - -export function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -export function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; - function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } - function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -export function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } -} - -export function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -export function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -var __setModuleDefault = Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}; - -var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); -}; - -export function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; -} - -export function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - -export function __classPrivateFieldGet(receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -} - -export function __classPrivateFieldSet(receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; -} - -export function __classPrivateFieldIn(state, receiver) { - if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); - return typeof state === "function" ? receiver === state : state.has(receiver); -} - -export function __addDisposableResource(env, value, async) { - if (value !== null && value !== void 0) { - if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); - var dispose, inner; - if (async) { - if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); - dispose = value[Symbol.asyncDispose]; - } - if (dispose === void 0) { - if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); - dispose = value[Symbol.dispose]; - if (async) inner = dispose; - } - if (typeof dispose !== "function") throw new TypeError("Object not disposable."); - if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; - env.stack.push({ value: value, dispose: dispose, async: async }); - } - else if (async) { - env.stack.push({ async: true }); - } - return value; - -} - -var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; -}; - -export function __disposeResources(env) { - function fail(e) { - env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; - env.hasError = true; - } - var r, s = 0; - function next() { - while (r = env.stack.pop()) { - try { - if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); - if (r.dispose) { - var result = r.dispose.call(r.value); - if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); - } - else s |= 1; - } - catch (e) { - fail(e); - } - } - if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); - if (env.hasError) throw env.error; - } - return next(); -} - -export function __rewriteRelativeImportExtension(path, preserveJsx) { - if (typeof path === "string" && /^\.\.?\//.test(path)) { - return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { - return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); - }); - } - return path; -} - -export default { - __extends: __extends, - __assign: __assign, - __rest: __rest, - __decorate: __decorate, - __param: __param, - __esDecorate: __esDecorate, - __runInitializers: __runInitializers, - __propKey: __propKey, - __setFunctionName: __setFunctionName, - __metadata: __metadata, - __awaiter: __awaiter, - __generator: __generator, - __createBinding: __createBinding, - __exportStar: __exportStar, - __values: __values, - __read: __read, - __spread: __spread, - __spreadArrays: __spreadArrays, - __spreadArray: __spreadArray, - __await: __await, - __asyncGenerator: __asyncGenerator, - __asyncDelegator: __asyncDelegator, - __asyncValues: __asyncValues, - __makeTemplateObject: __makeTemplateObject, - __importStar: __importStar, - __importDefault: __importDefault, - __classPrivateFieldGet: __classPrivateFieldGet, - __classPrivateFieldSet: __classPrivateFieldSet, - __classPrivateFieldIn: __classPrivateFieldIn, - __addDisposableResource: __addDisposableResource, - __disposeResources: __disposeResources, - __rewriteRelativeImportExtension: __rewriteRelativeImportExtension, -}; diff --git a/sdks/nodejs/node_modules/tslib/tslib.es6.mjs b/sdks/nodejs/node_modules/tslib/tslib.es6.mjs deleted file mode 100644 index c17990a..0000000 --- a/sdks/nodejs/node_modules/tslib/tslib.es6.mjs +++ /dev/null @@ -1,401 +0,0 @@ -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -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. -***************************************************************************** */ -/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -export function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -export var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -export function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -export function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -export function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -export function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { - function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } - var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; - var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; - var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); - var _, done = false; - for (var i = decorators.length - 1; i >= 0; i--) { - var context = {}; - for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; - for (var p in contextIn.access) context.access[p] = contextIn.access[p]; - context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; - var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); - if (kind === "accessor") { - if (result === void 0) continue; - if (result === null || typeof result !== "object") throw new TypeError("Object expected"); - if (_ = accept(result.get)) descriptor.get = _; - if (_ = accept(result.set)) descriptor.set = _; - if (_ = accept(result.init)) initializers.unshift(_); - } - else if (_ = accept(result)) { - if (kind === "field") initializers.unshift(_); - else descriptor[key] = _; - } - } - if (target) Object.defineProperty(target, contextIn.name, descriptor); - done = true; -}; - -export function __runInitializers(thisArg, initializers, value) { - var useValue = arguments.length > 2; - for (var i = 0; i < initializers.length; i++) { - value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); - } - return useValue ? value : void 0; -}; - -export function __propKey(x) { - return typeof x === "symbol" ? x : "".concat(x); -}; - -export function __setFunctionName(f, name, prefix) { - if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; - return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); -}; - -export function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -export function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -export function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); - return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -export var __createBinding = Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -}); - -export function __exportStar(m, o) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); -} - -export function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} - -export function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -/** @deprecated */ -export function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -/** @deprecated */ -export function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -} - -export function __spreadArray(to, from, pack) { - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); -} - -export function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -export function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; - function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } - function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -export function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } -} - -export function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -export function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -var __setModuleDefault = Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}; - -var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); -}; - -export function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; -} - -export function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - -export function __classPrivateFieldGet(receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -} - -export function __classPrivateFieldSet(receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; -} - -export function __classPrivateFieldIn(state, receiver) { - if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); - return typeof state === "function" ? receiver === state : state.has(receiver); -} - -export function __addDisposableResource(env, value, async) { - if (value !== null && value !== void 0) { - if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); - var dispose, inner; - if (async) { - if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); - dispose = value[Symbol.asyncDispose]; - } - if (dispose === void 0) { - if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); - dispose = value[Symbol.dispose]; - if (async) inner = dispose; - } - if (typeof dispose !== "function") throw new TypeError("Object not disposable."); - if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; - env.stack.push({ value: value, dispose: dispose, async: async }); - } - else if (async) { - env.stack.push({ async: true }); - } - return value; -} - -var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; -}; - -export function __disposeResources(env) { - function fail(e) { - env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; - env.hasError = true; - } - var r, s = 0; - function next() { - while (r = env.stack.pop()) { - try { - if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); - if (r.dispose) { - var result = r.dispose.call(r.value); - if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); - } - else s |= 1; - } - catch (e) { - fail(e); - } - } - if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); - if (env.hasError) throw env.error; - } - return next(); -} - -export function __rewriteRelativeImportExtension(path, preserveJsx) { - if (typeof path === "string" && /^\.\.?\//.test(path)) { - return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { - return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); - }); - } - return path; -} - -export default { - __extends, - __assign, - __rest, - __decorate, - __param, - __esDecorate, - __runInitializers, - __propKey, - __setFunctionName, - __metadata, - __awaiter, - __generator, - __createBinding, - __exportStar, - __values, - __read, - __spread, - __spreadArrays, - __spreadArray, - __await, - __asyncGenerator, - __asyncDelegator, - __asyncValues, - __makeTemplateObject, - __importStar, - __importDefault, - __classPrivateFieldGet, - __classPrivateFieldSet, - __classPrivateFieldIn, - __addDisposableResource, - __disposeResources, - __rewriteRelativeImportExtension, -}; diff --git a/sdks/nodejs/node_modules/tslib/tslib.html b/sdks/nodejs/node_modules/tslib/tslib.html deleted file mode 100644 index 44c9ba5..0000000 --- a/sdks/nodejs/node_modules/tslib/tslib.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sdks/nodejs/node_modules/tslib/tslib.js b/sdks/nodejs/node_modules/tslib/tslib.js deleted file mode 100644 index 5e12ace..0000000 --- a/sdks/nodejs/node_modules/tslib/tslib.js +++ /dev/null @@ -1,484 +0,0 @@ -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -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. -***************************************************************************** */ -/* global global, define, Symbol, Reflect, Promise, SuppressedError, Iterator */ -var __extends; -var __assign; -var __rest; -var __decorate; -var __param; -var __esDecorate; -var __runInitializers; -var __propKey; -var __setFunctionName; -var __metadata; -var __awaiter; -var __generator; -var __exportStar; -var __values; -var __read; -var __spread; -var __spreadArrays; -var __spreadArray; -var __await; -var __asyncGenerator; -var __asyncDelegator; -var __asyncValues; -var __makeTemplateObject; -var __importStar; -var __importDefault; -var __classPrivateFieldGet; -var __classPrivateFieldSet; -var __classPrivateFieldIn; -var __createBinding; -var __addDisposableResource; -var __disposeResources; -var __rewriteRelativeImportExtension; -(function (factory) { - var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {}; - if (typeof define === "function" && define.amd) { - define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); }); - } - else if (typeof module === "object" && typeof module.exports === "object") { - factory(createExporter(root, createExporter(module.exports))); - } - else { - factory(createExporter(root)); - } - function createExporter(exports, previous) { - if (exports !== root) { - if (typeof Object.create === "function") { - Object.defineProperty(exports, "__esModule", { value: true }); - } - else { - exports.__esModule = true; - } - } - return function (id, v) { return exports[id] = previous ? previous(id, v) : v; }; - } -}) -(function (exporter) { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - - __extends = function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - - __assign = Object.assign || function (t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - - __rest = function (s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; - }; - - __decorate = function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - - __param = function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } - }; - - __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { - function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } - var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; - var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; - var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); - var _, done = false; - for (var i = decorators.length - 1; i >= 0; i--) { - var context = {}; - for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; - for (var p in contextIn.access) context.access[p] = contextIn.access[p]; - context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; - var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); - if (kind === "accessor") { - if (result === void 0) continue; - if (result === null || typeof result !== "object") throw new TypeError("Object expected"); - if (_ = accept(result.get)) descriptor.get = _; - if (_ = accept(result.set)) descriptor.set = _; - if (_ = accept(result.init)) initializers.unshift(_); - } - else if (_ = accept(result)) { - if (kind === "field") initializers.unshift(_); - else descriptor[key] = _; - } - } - if (target) Object.defineProperty(target, contextIn.name, descriptor); - done = true; - }; - - __runInitializers = function (thisArg, initializers, value) { - var useValue = arguments.length > 2; - for (var i = 0; i < initializers.length; i++) { - value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); - } - return useValue ? value : void 0; - }; - - __propKey = function (x) { - return typeof x === "symbol" ? x : "".concat(x); - }; - - __setFunctionName = function (f, name, prefix) { - if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; - return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); - }; - - __metadata = function (metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); - }; - - __awaiter = function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - - __generator = function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); - return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } - }; - - __exportStar = function(m, o) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); - }; - - __createBinding = Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); - }) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - - __values = function (o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); - }; - - __read = function (o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; - }; - - /** @deprecated */ - __spread = function () { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; - }; - - /** @deprecated */ - __spreadArrays = function () { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; - }; - - __spreadArray = function (to, from, pack) { - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); - }; - - __await = function (v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); - }; - - __asyncGenerator = function (thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; - function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } - function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } - }; - - __asyncDelegator = function (o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } - }; - - __asyncValues = function (o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } - }; - - __makeTemplateObject = function (cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; - }; - - var __setModuleDefault = Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - }) : function(o, v) { - o["default"] = v; - }; - - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - - __importStar = function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; - - __importDefault = function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; - }; - - __classPrivateFieldGet = function (receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); - }; - - __classPrivateFieldSet = function (receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; - }; - - __classPrivateFieldIn = function (state, receiver) { - if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); - return typeof state === "function" ? receiver === state : state.has(receiver); - }; - - __addDisposableResource = function (env, value, async) { - if (value !== null && value !== void 0) { - if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); - var dispose, inner; - if (async) { - if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); - dispose = value[Symbol.asyncDispose]; - } - if (dispose === void 0) { - if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); - dispose = value[Symbol.dispose]; - if (async) inner = dispose; - } - if (typeof dispose !== "function") throw new TypeError("Object not disposable."); - if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; - env.stack.push({ value: value, dispose: dispose, async: async }); - } - else if (async) { - env.stack.push({ async: true }); - } - return value; - }; - - var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; - }; - - __disposeResources = function (env) { - function fail(e) { - env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; - env.hasError = true; - } - var r, s = 0; - function next() { - while (r = env.stack.pop()) { - try { - if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); - if (r.dispose) { - var result = r.dispose.call(r.value); - if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); - } - else s |= 1; - } - catch (e) { - fail(e); - } - } - if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); - if (env.hasError) throw env.error; - } - return next(); - }; - - __rewriteRelativeImportExtension = function (path, preserveJsx) { - if (typeof path === "string" && /^\.\.?\//.test(path)) { - return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { - return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); - }); - } - return path; - }; - - exporter("__extends", __extends); - exporter("__assign", __assign); - exporter("__rest", __rest); - exporter("__decorate", __decorate); - exporter("__param", __param); - exporter("__esDecorate", __esDecorate); - exporter("__runInitializers", __runInitializers); - exporter("__propKey", __propKey); - exporter("__setFunctionName", __setFunctionName); - exporter("__metadata", __metadata); - exporter("__awaiter", __awaiter); - exporter("__generator", __generator); - exporter("__exportStar", __exportStar); - exporter("__createBinding", __createBinding); - exporter("__values", __values); - exporter("__read", __read); - exporter("__spread", __spread); - exporter("__spreadArrays", __spreadArrays); - exporter("__spreadArray", __spreadArray); - exporter("__await", __await); - exporter("__asyncGenerator", __asyncGenerator); - exporter("__asyncDelegator", __asyncDelegator); - exporter("__asyncValues", __asyncValues); - exporter("__makeTemplateObject", __makeTemplateObject); - exporter("__importStar", __importStar); - exporter("__importDefault", __importDefault); - exporter("__classPrivateFieldGet", __classPrivateFieldGet); - exporter("__classPrivateFieldSet", __classPrivateFieldSet); - exporter("__classPrivateFieldIn", __classPrivateFieldIn); - exporter("__addDisposableResource", __addDisposableResource); - exporter("__disposeResources", __disposeResources); - exporter("__rewriteRelativeImportExtension", __rewriteRelativeImportExtension); -}); - -0 && (module.exports = { - __extends: __extends, - __assign: __assign, - __rest: __rest, - __decorate: __decorate, - __param: __param, - __esDecorate: __esDecorate, - __runInitializers: __runInitializers, - __propKey: __propKey, - __setFunctionName: __setFunctionName, - __metadata: __metadata, - __awaiter: __awaiter, - __generator: __generator, - __exportStar: __exportStar, - __createBinding: __createBinding, - __values: __values, - __read: __read, - __spread: __spread, - __spreadArrays: __spreadArrays, - __spreadArray: __spreadArray, - __await: __await, - __asyncGenerator: __asyncGenerator, - __asyncDelegator: __asyncDelegator, - __asyncValues: __asyncValues, - __makeTemplateObject: __makeTemplateObject, - __importStar: __importStar, - __importDefault: __importDefault, - __classPrivateFieldGet: __classPrivateFieldGet, - __classPrivateFieldSet: __classPrivateFieldSet, - __classPrivateFieldIn: __classPrivateFieldIn, - __addDisposableResource: __addDisposableResource, - __disposeResources: __disposeResources, - __rewriteRelativeImportExtension: __rewriteRelativeImportExtension, -}); diff --git a/sdks/nodejs/node_modules/typanion/README.md b/sdks/nodejs/node_modules/typanion/README.md deleted file mode 100644 index d1e970d..0000000 --- a/sdks/nodejs/node_modules/typanion/README.md +++ /dev/null @@ -1,117 +0,0 @@ -# Typanion - -> Static and runtime type assertion library with no dependencies - -[![](https://img.shields.io/npm/v/typanion.svg)]() [![](https://img.shields.io/npm/l/typanion.svg)]() [![](https://img.shields.io/badge/developed%20with-Yarn%202-blue)](https://github.com/yarnpkg/berry) - -## Installation - -``` -yarn add typanion -``` - -## Why - -- Typanion can validate nested arbitrary data structures -- Typanion is type-safe; it uses [type predicates](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates) -- Typanion allows you to derive types from your schemas -- Typanion can report detailed error reports - -Compared to [yup](https://github.com/jquense/yup), Typanion has a better inference support for TypeScript + supports `isOneOf`. Its functional API makes it very easy to tree shake, which is another bonus (although the library isn't very large in itself). - -## Documentation - -Check the website for our documentation: [mael.dev/typanion](https://mael.dev/typanion/). - -## Usage - -First define a schema using the builtin operators: - -```ts -import * as t from 'typanion'; - -const isMovie = t.isObject({ - title: t.isString(), - description: t.isString(), -}); -``` - -Then just call the schema to validate any `unknown` value: - -```ts -const userData = JSON.parse(input); - -if (isMovie(userData)) { - console.log(userData.title); -} -``` - -Passing a second parameter allows you to retrieve detailed errors: - -```ts -const userData = JSON.parse(input); -const errors: string[] = []; - -if (!isMovie(userData, {errors})) { - console.log(errors); -} -``` - -You can also apply coercion over the user input: - -```ts -const userData = JSON.parse(input); -const coercions: Coercion[] = []; - -if (isMovie(userData, {coercions})) { - // Coercions aren't flushed by default - for (const [p, op] of coercions) op(); - - // All relevant fields have now been coerced - // ... -} -``` - -You can derive the type from the schema and use it in other functions: - -```ts -import * as t from 'typanion'; - -const isMovie = t.isObject({ - title: t.isString(), - description: t.isString(), -}); - -type Movie = t.InferType; - -// Then just use your alias: -const printMovie = (movie: Movie) => { - // ... -}; -``` - -Schemas can be stored in multiple variables if needed: - -```ts -import * as t from 'typanion'; - -const isActor = t.isObject({ - name: t.isString(); -}); - -const isMovie = t.isObject({ - title: t.isString(), - description: t.isString(), - actors: t.isArray(isActor), -}); -``` - -## License (MIT) - -> **Copyright © 2020 Mael Nison** -> -> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/sdks/nodejs/node_modules/typanion/lib/index.d.ts b/sdks/nodejs/node_modules/typanion/lib/index.d.ts deleted file mode 100644 index 2cdda73..0000000 --- a/sdks/nodejs/node_modules/typanion/lib/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './predicates/cascadingPredicates'; -export * from './predicates/typePredicates'; -export * from './predicates/helperPredicates'; -export * from './tools'; -export * from './types'; diff --git a/sdks/nodejs/node_modules/typanion/lib/index.js b/sdks/nodejs/node_modules/typanion/lib/index.js deleted file mode 100644 index 26b2922..0000000 --- a/sdks/nodejs/node_modules/typanion/lib/index.js +++ /dev/null @@ -1,1305 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -const simpleKeyRegExp = /^[a-zA-Z_][a-zA-Z0-9_]*$/; -function getPrintable(value) { - if (value === null) - return `null`; - if (value === undefined) - return `undefined`; - if (value === ``) - return `an empty string`; - if (typeof value === 'symbol') - return `<${value.toString()}>`; - if (Array.isArray(value)) - return `an array`; - return JSON.stringify(value); -} -function getPrintableArray(value, conjunction) { - if (value.length === 0) - return `nothing`; - if (value.length === 1) - return getPrintable(value[0]); - const rest = value.slice(0, -1); - const trailing = value[value.length - 1]; - const separator = value.length > 2 - ? `, ${conjunction} ` - : ` ${conjunction} `; - return `${rest.map(value => getPrintable(value)).join(`, `)}${separator}${getPrintable(trailing)}`; -} -function computeKey(state, key) { - var _a, _b, _c; - if (typeof key === `number`) { - return `${(_a = state === null || state === void 0 ? void 0 : state.p) !== null && _a !== void 0 ? _a : `.`}[${key}]`; - } - else if (simpleKeyRegExp.test(key)) { - return `${(_b = state === null || state === void 0 ? void 0 : state.p) !== null && _b !== void 0 ? _b : ``}.${key}`; - } - else { - return `${(_c = state === null || state === void 0 ? void 0 : state.p) !== null && _c !== void 0 ? _c : `.`}[${JSON.stringify(key)}]`; - } -} -function plural(n, singular, plural) { - return n === 1 ? singular : plural; -} - -const colorStringRegExp = /^#[0-9a-f]{6}$/i; -const colorStringAlphaRegExp = /^#[0-9a-f]{6}([0-9a-f]{2})?$/i; -// https://stackoverflow.com/a/475217/880703 -const base64RegExp = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/; -// https://stackoverflow.com/a/14166194/880703 -const uuid4RegExp = /^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i; -// https://stackoverflow.com/a/28022901/880703 + https://www.debuggex.com/r/bl8J35wMKk48a7u_ -const iso8601RegExp = /^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/; - -function pushError({ errors, p } = {}, message) { - errors === null || errors === void 0 ? void 0 : errors.push(`${p !== null && p !== void 0 ? p : `.`}: ${message}`); - return false; -} -function makeSetter(target, key) { - return (v) => { - target[key] = v; - }; -} -function makeCoercionFn(target, key) { - return (v) => { - const previous = target[key]; - target[key] = v; - return makeCoercionFn(target, key).bind(null, previous); - }; -} -function makeLazyCoercionFn(fn, orig, generator) { - const commit = () => { - fn(generator()); - return revert; - }; - const revert = () => { - fn(orig); - return commit; - }; - return commit; -} - -/** - * Create a validator that always returns true and never refines the type. - */ -function isUnknown() { - return makeValidator({ - test: (value, state) => { - return true; - }, - }); -} -function isLiteral(expected) { - return makeValidator({ - test: (value, state) => { - if (value !== expected) - return pushError(state, `Expected ${getPrintable(expected)} (got ${getPrintable(value)})`); - return true; - }, - }); -} -/** - * Create a validator that only returns true when the tested value is a string. - * Refines the type to `string`. - */ -function isString() { - return makeValidator({ - test: (value, state) => { - if (typeof value !== `string`) - return pushError(state, `Expected a string (got ${getPrintable(value)})`); - return true; - }, - }); -} -function isEnum(enumSpec) { - const valuesArray = Array.isArray(enumSpec) ? enumSpec : Object.values(enumSpec); - const isAlphaNum = valuesArray.every(item => typeof item === 'string' || typeof item === 'number'); - const values = new Set(valuesArray); - if (values.size === 1) - return isLiteral([...values][0]); - return makeValidator({ - test: (value, state) => { - if (!values.has(value)) { - if (isAlphaNum) { - return pushError(state, `Expected one of ${getPrintableArray(valuesArray, `or`)} (got ${getPrintable(value)})`); - } - else { - return pushError(state, `Expected a valid enumeration value (got ${getPrintable(value)})`); - } - } - return true; - }, - }); -} -const BOOLEAN_COERCIONS = new Map([ - [`true`, true], - [`True`, true], - [`1`, true], - [1, true], - [`false`, false], - [`False`, false], - [`0`, false], - [0, false], -]); -/** - * Create a validator that only returns true when the tested value is a - * boolean. Refines the type to `boolean`. - * - * Supports coercion: - * - 'true' / 'True' / '1' / 1 will turn to `true` - * - 'false' / 'False' / '0' / 0 will turn to `false` - */ -function isBoolean() { - return makeValidator({ - test: (value, state) => { - var _a; - if (typeof value !== `boolean`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - const coercion = BOOLEAN_COERCIONS.get(value); - if (typeof coercion !== `undefined`) { - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]); - return true; - } - } - return pushError(state, `Expected a boolean (got ${getPrintable(value)})`); - } - return true; - }, - }); -} -/** - * Create a validator that only returns true when the tested value is a - * number (including floating numbers; use `cascade` and `isInteger` to - * restrict the range further). Refines the type to `number`. - * - * Supports coercion. - */ -function isNumber() { - return makeValidator({ - test: (value, state) => { - var _a; - if (typeof value !== `number`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - let coercion; - if (typeof value === `string`) { - let val; - try { - val = JSON.parse(value); - } - catch (_b) { } - // We check against JSON.stringify that the output is the same to ensure that the number can be safely represented in JS - if (typeof val === `number`) { - if (JSON.stringify(val) === value) { - coercion = val; - } - else { - return pushError(state, `Received a number that can't be safely represented by the runtime (${value})`); - } - } - } - if (typeof coercion !== `undefined`) { - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]); - return true; - } - } - return pushError(state, `Expected a number (got ${getPrintable(value)})`); - } - return true; - }, - }); -} -/** - * Important: This validator only makes sense when used in conjunction with - * coercion! It will always error when used without. - * - * Create a validator that only returns true when the tested value is a - * JSON representation of the expected type. Refines the type to the - * expected type, and casts the value into its inner value. - */ -function isPayload(spec) { - return makeValidator({ - test: (value, state) => { - var _a; - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) === `undefined`) - return pushError(state, `The isPayload predicate can only be used with coercion enabled`); - if (typeof state.coercion === `undefined`) - return pushError(state, `Unbound coercion result`); - if (typeof value !== `string`) - return pushError(state, `Expected a string (got ${getPrintable(value)})`); - let inner; - try { - inner = JSON.parse(value); - } - catch (_b) { - return pushError(state, `Expected a JSON string (got ${getPrintable(value)})`); - } - const wrapper = { value: inner }; - if (!spec(inner, Object.assign(Object.assign({}, state), { coercion: makeCoercionFn(wrapper, `value`) }))) - return false; - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, wrapper.value)]); - return true; - }, - }); -} -/** - * Create a validator that only returns true when the tested value is a - * valid date. Refines the type to `Date`. - * - * Supports coercion via one of the following formats: - * - ISO86001 strings - * - Unix timestamps - */ -function isDate() { - return makeValidator({ - test: (value, state) => { - var _a; - if (!(value instanceof Date)) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - let coercion; - if (typeof value === `string` && iso8601RegExp.test(value)) { - coercion = new Date(value); - } - else { - let timestamp; - if (typeof value === `string`) { - let val; - try { - val = JSON.parse(value); - } - catch (_b) { } - if (typeof val === `number`) { - timestamp = val; - } - } - else if (typeof value === `number`) { - timestamp = value; - } - if (typeof timestamp !== `undefined`) { - if (Number.isSafeInteger(timestamp) || !Number.isSafeInteger(timestamp * 1000)) { - coercion = new Date(timestamp * 1000); - } - else { - return pushError(state, `Received a timestamp that can't be safely represented by the runtime (${value})`); - } - } - } - if (typeof coercion !== `undefined`) { - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]); - return true; - } - } - return pushError(state, `Expected a date (got ${getPrintable(value)})`); - } - return true; - }, - }); -} -/** - * Create a validator that only returns true when the tested value is an - * array whose all values match the provided subspec. Refines the type to - * `Array`, with `T` being the subspec inferred type. - * - * Supports coercion if the `delimiter` option is set, in which case strings - * will be split accordingly. - */ -function isArray(spec, { delimiter } = {}) { - return makeValidator({ - test: (value, state) => { - var _a; - const originalValue = value; - if (typeof value === `string` && typeof delimiter !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - value = value.split(delimiter); - } - } - if (!Array.isArray(value)) - return pushError(state, `Expected an array (got ${getPrintable(value)})`); - let valid = true; - for (let t = 0, T = value.length; t < T; ++t) { - valid = spec(value[t], Object.assign(Object.assign({}, state), { p: computeKey(state, t), coercion: makeCoercionFn(value, t) })) && valid; - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; - } - } - if (value !== originalValue) - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]); - return valid; - }, - }); -} -/** - * Create a validator that only returns true when the tested value is an - * set whose all values match the provided subspec. Refines the type to - * `Set`, with `T` being the subspec inferred type. - * - * Supports coercion from arrays (or anything that can be coerced into an - * array). - */ -function isSet(spec, { delimiter } = {}) { - const isArrayValidator = isArray(spec, { delimiter }); - return makeValidator({ - test: (value, state) => { - var _a, _b; - if (Object.getPrototypeOf(value).toString() === `[object Set]`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - const originalValues = [...value]; - const coercedValues = [...value]; - if (!isArrayValidator(coercedValues, Object.assign(Object.assign({}, state), { coercion: undefined }))) - return false; - const updateValue = () => coercedValues.some((val, t) => val !== originalValues[t]) - ? new Set(coercedValues) - : value; - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, makeLazyCoercionFn(state.coercion, value, updateValue)]); - return true; - } - else { - let valid = true; - for (const subValue of value) { - valid = spec(subValue, Object.assign({}, state)) && valid; - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; - } - } - return valid; - } - } - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - const store = { value }; - if (!isArrayValidator(value, Object.assign(Object.assign({}, state), { coercion: makeCoercionFn(store, `value`) }))) - return false; - state.coercions.push([(_b = state.p) !== null && _b !== void 0 ? _b : `.`, makeLazyCoercionFn(state.coercion, value, () => new Set(store.value))]); - return true; - } - return pushError(state, `Expected a set (got ${getPrintable(value)})`); - } - }); -} -/** - * Create a validator that only returns true when the tested value is an - * map whose all values match the provided subspecs. Refines the type to - * `Map`, with `U` being the key subspec inferred type and `V` being - * the value subspec inferred type. - * - * Supports coercion from array of tuples (or anything that can be coerced into - * an array of tuples). - */ -function isMap(keySpec, valueSpec) { - const isArrayValidator = isArray(isTuple([keySpec, valueSpec])); - const isRecordValidator = isRecord(valueSpec, { keys: keySpec }); - return makeValidator({ - test: (value, state) => { - var _a, _b, _c; - if (Object.getPrototypeOf(value).toString() === `[object Map]`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - const originalValues = [...value]; - const coercedValues = [...value]; - if (!isArrayValidator(coercedValues, Object.assign(Object.assign({}, state), { coercion: undefined }))) - return false; - const updateValue = () => coercedValues.some((val, t) => val[0] !== originalValues[t][0] || val[1] !== originalValues[t][1]) - ? new Map(coercedValues) - : value; - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, makeLazyCoercionFn(state.coercion, value, updateValue)]); - return true; - } - else { - let valid = true; - for (const [key, subValue] of value) { - valid = keySpec(key, Object.assign({}, state)) && valid; - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; - } - valid = valueSpec(subValue, Object.assign(Object.assign({}, state), { p: computeKey(state, key) })) && valid; - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; - } - } - return valid; - } - } - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - const store = { value }; - if (Array.isArray(value)) { - if (!isArrayValidator(value, Object.assign(Object.assign({}, state), { coercion: undefined }))) - return false; - state.coercions.push([(_b = state.p) !== null && _b !== void 0 ? _b : `.`, makeLazyCoercionFn(state.coercion, value, () => new Map(store.value))]); - return true; - } - else { - if (!isRecordValidator(value, Object.assign(Object.assign({}, state), { coercion: makeCoercionFn(store, `value`) }))) - return false; - state.coercions.push([(_c = state.p) !== null && _c !== void 0 ? _c : `.`, makeLazyCoercionFn(state.coercion, value, () => new Map(Object.entries(store.value)))]); - return true; - } - } - return pushError(state, `Expected a map (got ${getPrintable(value)})`); - } - }); -} -/** - * Create a validator that only returns true when the tested value is a - * tuple whose each value matches the corresponding subspec. Refines the type - * into a tuple whose each item has the type inferred by the corresponding - * tuple. - * - * Supports coercion if the `delimiter` option is set, in which case strings - * will be split accordingly. - */ -function isTuple(spec, { delimiter } = {}) { - const lengthValidator = hasExactLength(spec.length); - return makeValidator({ - test: (value, state) => { - var _a; - if (typeof value === `string` && typeof delimiter !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - value = value.split(delimiter); - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]); - } - } - if (!Array.isArray(value)) - return pushError(state, `Expected a tuple (got ${getPrintable(value)})`); - let valid = lengthValidator(value, Object.assign({}, state)); - for (let t = 0, T = value.length; t < T && t < spec.length; ++t) { - valid = spec[t](value[t], Object.assign(Object.assign({}, state), { p: computeKey(state, t), coercion: makeCoercionFn(value, t) })) && valid; - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; - } - } - return valid; - }, - }); -} -/** - * Create a validator that only returns true when the tested value is an - * object with any amount of properties that must all match the provided - * subspec. Refines the type to `Record`, with `T` being the - * subspec inferred type. - * - * Keys can be optionally validated as well by using the `keys` optional - * subspec parameter. - */ -function isRecord(spec, { keys: keySpec = null, } = {}) { - const isArrayValidator = isArray(isTuple([keySpec !== null && keySpec !== void 0 ? keySpec : isString(), spec])); - return makeValidator({ - test: (value, state) => { - var _a; - if (Array.isArray(value)) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - if (!isArrayValidator(value, Object.assign(Object.assign({}, state), { coercion: undefined }))) - return false; - value = Object.fromEntries(value); - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]); - return true; - } - } - if (typeof value !== `object` || value === null) - return pushError(state, `Expected an object (got ${getPrintable(value)})`); - const keys = Object.keys(value); - let valid = true; - for (let t = 0, T = keys.length; t < T && (valid || (state === null || state === void 0 ? void 0 : state.errors) != null); ++t) { - const key = keys[t]; - const sub = value[key]; - if (key === `__proto__` || key === `constructor`) { - valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Unsafe property name`); - continue; - } - if (keySpec !== null && !keySpec(key, state)) { - valid = false; - continue; - } - if (!spec(sub, Object.assign(Object.assign({}, state), { p: computeKey(state, key), coercion: makeCoercionFn(value, key) }))) { - valid = false; - continue; - } - } - return valid; - }, - }); -} -/** - * @deprecated Replace `isDict` by `isRecord` - */ -function isDict(spec, opts = {}) { - return isRecord(spec, opts); -} -/** - * Create a validator that only returns true when the tested value is an - * object whose all properties match their corresponding subspec. Refines - * the type into an object whose each property has the type inferred by the - * corresponding subspec. - * - * Unlike `t.isPartial`, `t.isObject` doesn't allow extraneous properties by - * default. This behaviour can be altered by using the `extra` optional - * subspec parameter, which will be called to validate an object only - * containing the extraneous properties. - * - * Calling `t.isObject(..., {extra: t.isRecord(t.isUnknown())})` is - * essentially the same as calling `t.isPartial(...)`. - */ -function isObject(props, { extra: extraSpec = null, } = {}) { - const specKeys = Object.keys(props); - const validator = makeValidator({ - test: (value, state) => { - if (typeof value !== `object` || value === null) - return pushError(state, `Expected an object (got ${getPrintable(value)})`); - const keys = new Set([...specKeys, ...Object.keys(value)]); - const extra = {}; - let valid = true; - for (const key of keys) { - if (key === `constructor` || key === `__proto__`) { - valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Unsafe property name`); - } - else { - const spec = Object.prototype.hasOwnProperty.call(props, key) - ? props[key] - : undefined; - const sub = Object.prototype.hasOwnProperty.call(value, key) - ? value[key] - : undefined; - if (typeof spec !== `undefined`) { - valid = spec(sub, Object.assign(Object.assign({}, state), { p: computeKey(state, key), coercion: makeCoercionFn(value, key) })) && valid; - } - else if (extraSpec === null) { - valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Extraneous property (got ${getPrintable(sub)})`); - } - else { - Object.defineProperty(extra, key, { - enumerable: true, - get: () => sub, - set: makeSetter(value, key) - }); - } - } - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; - } - } - if (extraSpec !== null && (valid || (state === null || state === void 0 ? void 0 : state.errors) != null)) - valid = extraSpec(extra, state) && valid; - return valid; - }, - }); - return Object.assign(validator, { - properties: props, - }); -} -/** - * Create a validator that only returns true when the tested value is an - * object whose all properties match their corresponding subspec. Refines - * the type into an object whose each property has the type inferred by the - * corresponding subspec. - * - * Unlike `t.isObject`, `t.isPartial` allows extraneous properties. The - * resulting type will reflect this behaviour by including an index - * signature (each extraneous property being typed `unknown`). - * - * Calling `t.isPartial(...)` is essentially the same as calling - * `t.isObject(..., {extra: t.isRecord(t.isUnknown())})`. - */ -function isPartial(props) { - return isObject(props, { extra: isRecord(isUnknown()) }); -} -/** - * Create a validator that only returns true when the tested value is an - * object whose prototype is derived from the given class. Refines the type - * into a class instance. - */ -const isInstanceOf = (constructor) => makeValidator({ - test: (value, state) => { - if (!(value instanceof constructor)) - return pushError(state, `Expected an instance of ${constructor.name} (got ${getPrintable(value)})`); - return true; - }, -}); -/** - * Create a validator that only returns true when the tested value is an - * object matching any of the provided subspecs. If the optional `exclusive` - * parameter is set to `true`, the behaviour changes so that the validator - * only returns true when exactly one subspec matches. - */ -const isOneOf = (specs, { exclusive = false, } = {}) => makeValidator({ - test: (value, state) => { - var _a, _b, _c; - const matches = []; - const errorBuffer = typeof (state === null || state === void 0 ? void 0 : state.errors) !== `undefined` - ? [] : undefined; - for (let t = 0, T = specs.length; t < T; ++t) { - const subErrors = typeof (state === null || state === void 0 ? void 0 : state.errors) !== `undefined` - ? [] : undefined; - const subCoercions = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined` - ? [] : undefined; - if (specs[t](value, Object.assign(Object.assign({}, state), { errors: subErrors, coercions: subCoercions, p: `${(_a = state === null || state === void 0 ? void 0 : state.p) !== null && _a !== void 0 ? _a : `.`}#${t + 1}` }))) { - matches.push([`#${t + 1}`, subCoercions]); - if (!exclusive) { - break; - } - } - else { - errorBuffer === null || errorBuffer === void 0 ? void 0 : errorBuffer.push(subErrors[0]); - } - } - if (matches.length === 1) { - const [, subCoercions] = matches[0]; - if (typeof subCoercions !== `undefined`) - (_b = state === null || state === void 0 ? void 0 : state.coercions) === null || _b === void 0 ? void 0 : _b.push(...subCoercions); - return true; - } - if (matches.length > 1) - pushError(state, `Expected to match exactly a single predicate (matched ${matches.join(`, `)})`); - else - (_c = state === null || state === void 0 ? void 0 : state.errors) === null || _c === void 0 ? void 0 : _c.push(...errorBuffer); - return false; - }, -}); - -function makeTrait(value) { - return () => { - return value; - }; -} -function makeValidator({ test }) { - return makeTrait(test)(); -} -class TypeAssertionError extends Error { - constructor({ errors } = {}) { - let errorMessage = `Type mismatch`; - if (errors && errors.length > 0) { - errorMessage += `\n`; - for (const error of errors) { - errorMessage += `\n- ${error}`; - } - } - super(errorMessage); - } -} -/** - * Check that the specified value matches the given validator, and throws an - * exception if it doesn't. Refine the type if it passes. - */ -function assert(val, validator) { - if (!validator(val)) { - throw new TypeAssertionError(); - } -} -/** - * Check that the specified value matches the given validator, and throws an - * exception if it doesn't. Refine the type if it passes. - * - * Thrown exceptions include details about what exactly looks invalid in the - * tested value. - */ -function assertWithErrors(val, validator) { - const errors = []; - if (!validator(val, { errors })) { - throw new TypeAssertionError({ errors }); - } -} -/** - * Compile-time only. Refine the type as if the validator was matching the - * tested value, but doesn't actually run it. Similar to the classic `as` - * operator in TypeScript. - */ -function softAssert(val, validator) { - // It's a soft assert; we tell TypeScript about the type, but we don't need to check it -} -function as(value, validator, { coerce = false, errors: storeErrors, throw: throws } = {}) { - const errors = storeErrors ? [] : undefined; - if (!coerce) { - if (validator(value, { errors })) { - return throws ? value : { value, errors: undefined }; - } - else if (!throws) { - return { value: undefined, errors: errors !== null && errors !== void 0 ? errors : true }; - } - else { - throw new TypeAssertionError({ errors }); - } - } - const state = { value }; - const coercion = makeCoercionFn(state, `value`); - const coercions = []; - if (!validator(value, { errors, coercion, coercions })) { - if (!throws) { - return { value: undefined, errors: errors !== null && errors !== void 0 ? errors : true }; - } - else { - throw new TypeAssertionError({ errors }); - } - } - for (const [, apply] of coercions) - apply(); - if (throws) { - return state.value; - } - else { - return { value: state.value, errors: undefined }; - } -} -/** - * Create and return a new function that apply the given validators to each - * corresponding argument passed to the function and throws an exception in - * case of a mismatch. - */ -function fn(validators, fn) { - const isValidArgList = isTuple(validators); - return ((...args) => { - const check = isValidArgList(args); - if (!check) - throw new TypeAssertionError(); - return fn(...args); - }); -} - -/** - * Create a validator that checks that the tested array or string has at least - * the specified length. - */ -function hasMinLength(length) { - return makeValidator({ - test: (value, state) => { - if (!(value.length >= length)) - return pushError(state, `Expected to have a length of at least ${length} elements (got ${value.length})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested array or string has at most - * the specified length. - */ -function hasMaxLength(length) { - return makeValidator({ - test: (value, state) => { - if (!(value.length <= length)) - return pushError(state, `Expected to have a length of at most ${length} elements (got ${value.length})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested array or string has exactly - * the specified length. - */ -function hasExactLength(length) { - return makeValidator({ - test: (value, state) => { - if (!(value.length === length)) - return pushError(state, `Expected to have a length of exactly ${length} elements (got ${value.length})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested array only contains unique - * elements. The optional `map` parameter lets you define a transform to - * apply before making the check (the result of this transform will be - * discarded afterwards). - */ -function hasUniqueItems({ map, } = {}) { - return makeValidator({ - test: (value, state) => { - const set = new Set(); - const dup = new Set(); - for (let t = 0, T = value.length; t < T; ++t) { - const sub = value[t]; - const key = typeof map !== `undefined` - ? map(sub) - : sub; - if (set.has(key)) { - if (dup.has(key)) - continue; - pushError(state, `Expected to contain unique elements; got a duplicate with ${getPrintable(value)}`); - dup.add(key); - } - else { - set.add(key); - } - } - return dup.size === 0; - }, - }); -} -/** - * Create a validator that checks that the tested number is strictly less than 0. - */ -function isNegative() { - return makeValidator({ - test: (value, state) => { - if (!(value <= 0)) - return pushError(state, `Expected to be negative (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested number is equal or greater - * than 0. - */ -function isPositive() { - return makeValidator({ - test: (value, state) => { - if (!(value >= 0)) - return pushError(state, `Expected to be positive (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested number is equal or greater - * than the specified reference. - */ -function isAtLeast(n) { - return makeValidator({ - test: (value, state) => { - if (!(value >= n)) - return pushError(state, `Expected to be at least ${n} (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested number is equal or smaller - * than the specified reference. - */ -function isAtMost(n) { - return makeValidator({ - test: (value, state) => { - if (!(value <= n)) - return pushError(state, `Expected to be at most ${n} (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested number is between the - * specified references (including the upper boundary). - */ -function isInInclusiveRange(a, b) { - return makeValidator({ - test: (value, state) => { - if (!(value >= a && value <= b)) - return pushError(state, `Expected to be in the [${a}; ${b}] range (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested number is between the - * specified references (excluding the upper boundary). - */ -function isInExclusiveRange(a, b) { - return makeValidator({ - test: (value, state) => { - if (!(value >= a && value < b)) - return pushError(state, `Expected to be in the [${a}; ${b}[ range (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested number is an integer. - * - * By default Typanion will also check that it's a *safe* integer. For example, - * 2^53 wouldn't be a safe integer because 2^53+1 would be rounded to 2^53, - * which could put your applications at risk when used in loops. - */ -function isInteger({ unsafe = false, } = {}) { - return makeValidator({ - test: (value, state) => { - if (value !== Math.round(value)) - return pushError(state, `Expected to be an integer (got ${value})`); - if (!unsafe && !Number.isSafeInteger(value)) - return pushError(state, `Expected to be a safe integer (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string matches the given - * regular expression. - */ -function matchesRegExp(regExp) { - return makeValidator({ - test: (value, state) => { - if (!regExp.test(value)) - return pushError(state, `Expected to match the pattern ${regExp.toString()} (got ${getPrintable(value)})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string only contain lowercase - * characters. - */ -function isLowerCase() { - return makeValidator({ - test: (value, state) => { - if (value !== value.toLowerCase()) - return pushError(state, `Expected to be all-lowercase (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string only contain uppercase - * characters. - */ -function isUpperCase() { - return makeValidator({ - test: (value, state) => { - if (value !== value.toUpperCase()) - return pushError(state, `Expected to be all-uppercase (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string is a valid UUID v4. - */ -function isUUID4() { - return makeValidator({ - test: (value, state) => { - if (!uuid4RegExp.test(value)) - return pushError(state, `Expected to be a valid UUID v4 (got ${getPrintable(value)})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string is a valid ISO8601 - * date. - */ -function isISO8601() { - return makeValidator({ - test: (value, state) => { - if (!iso8601RegExp.test(value)) - return pushError(state, `Expected to be a valid ISO 8601 date string (got ${getPrintable(value)})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string is a valid hexadecimal - * color. Setting the optional `alpha` parameter to `true` allows an additional - * transparency channel to be included. - */ -function isHexColor({ alpha = false, }) { - return makeValidator({ - test: (value, state) => { - const res = alpha - ? colorStringRegExp.test(value) - : colorStringAlphaRegExp.test(value); - if (!res) - return pushError(state, `Expected to be a valid hexadecimal color string (got ${getPrintable(value)})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string is valid base64. - */ -function isBase64() { - return makeValidator({ - test: (value, state) => { - if (!base64RegExp.test(value)) - return pushError(state, `Expected to be a valid base 64 string (got ${getPrintable(value)})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string is valid JSON. A - * optional spec can be passed as parameter, in which case the data will be - * deserialized and validated against the spec (coercion will be disabled - * for this check, and even if successful the returned value will still be - * the original string). - */ -function isJSON(spec = isUnknown()) { - return makeValidator({ - test: (value, state) => { - let data; - try { - data = JSON.parse(value); - } - catch (_a) { - return pushError(state, `Expected to be a valid JSON string (got ${getPrintable(value)})`); - } - return spec(data, state); - }, - }); -} - -function cascade(spec, ...followups) { - const resolvedFollowups = Array.isArray(followups[0]) - ? followups[0] - : followups; - return makeValidator({ - test: (value, state) => { - var _a, _b; - const context = { value: value }; - const subCoercion = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined` - ? makeCoercionFn(context, `value`) : undefined; - const subCoercions = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined` - ? [] : undefined; - if (!spec(value, Object.assign(Object.assign({}, state), { coercion: subCoercion, coercions: subCoercions }))) - return false; - const reverts = []; - if (typeof subCoercions !== `undefined`) - for (const [, coercion] of subCoercions) - reverts.push(coercion()); - try { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (context.value !== value) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, context.value)]); - } - (_b = state === null || state === void 0 ? void 0 : state.coercions) === null || _b === void 0 ? void 0 : _b.push(...subCoercions); - } - return resolvedFollowups.every(spec => { - return spec(context.value, state); - }); - } - finally { - for (const revert of reverts) { - revert(); - } - } - }, - }); -} -function applyCascade(spec, ...followups) { - const resolvedFollowups = Array.isArray(followups[0]) - ? followups[0] - : followups; - return cascade(spec, resolvedFollowups); -} -/** - * Wraps the given spec to also allow `undefined`. - */ -function isOptional(spec) { - return makeValidator({ - test: (value, state) => { - if (typeof value === `undefined`) - return true; - return spec(value, state); - }, - }); -} -/** - * Wraps the given spec to also allow `null`. - */ -function isNullable(spec) { - return makeValidator({ - test: (value, state) => { - if (value === null) - return true; - return spec(value, state); - }, - }); -} -const checks = { - missing: (keys, key) => keys.has(key), - undefined: (keys, key, value) => keys.has(key) && typeof value[key] !== `undefined`, - nil: (keys, key, value) => keys.has(key) && value[key] != null, - falsy: (keys, key, value) => keys.has(key) && !!value[key], -}; -/** - * Create a validator that checks that the tested object contains the specified - * keys. -*/ -function hasRequiredKeys(requiredKeys, options) { - var _a; - const requiredSet = new Set(requiredKeys); - const check = checks[(_a = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _a !== void 0 ? _a : 'missing']; - return makeValidator({ - test: (value, state) => { - const keys = new Set(Object.keys(value)); - const problems = []; - for (const key of requiredSet) - if (!check(keys, key, value)) - problems.push(key); - if (problems.length > 0) - return pushError(state, `Missing required ${plural(problems.length, `property`, `properties`)} ${getPrintableArray(problems, `and`)}`); - return true; - }, - }); -} -/** -* Create a validator that checks that the tested object contains at least one -* of the specified keys. -*/ -function hasAtLeastOneKey(requiredKeys, options) { - var _a; - const requiredSet = new Set(requiredKeys); - const check = checks[(_a = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _a !== void 0 ? _a : 'missing']; - return makeValidator({ - test: (value, state) => { - const keys = Object.keys(value); - const valid = keys.some(key => check(requiredSet, key, value)); - if (!valid) - return pushError(state, `Missing at least one property from ${getPrintableArray(Array.from(requiredSet), `or`)}`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested object contains none of the - * specified keys. -*/ -function hasForbiddenKeys(forbiddenKeys, options) { - var _a; - const forbiddenSet = new Set(forbiddenKeys); - const check = checks[(_a = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _a !== void 0 ? _a : 'missing']; - return makeValidator({ - test: (value, state) => { - const keys = new Set(Object.keys(value)); - const problems = []; - for (const key of forbiddenSet) - if (check(keys, key, value)) - problems.push(key); - if (problems.length > 0) - return pushError(state, `Forbidden ${plural(problems.length, `property`, `properties`)} ${getPrintableArray(problems, `and`)}`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested object contains at most one - * of the specified keys. - */ -function hasMutuallyExclusiveKeys(exclusiveKeys, options) { - var _a; - const exclusiveSet = new Set(exclusiveKeys); - const check = checks[(_a = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _a !== void 0 ? _a : 'missing']; - return makeValidator({ - test: (value, state) => { - const keys = new Set(Object.keys(value)); - const used = []; - for (const key of exclusiveSet) - if (check(keys, key, value)) - used.push(key); - if (used.length > 1) - return pushError(state, `Mutually exclusive properties ${getPrintableArray(used, `and`)}`); - return true; - }, - }); -} -(function (KeyRelationship) { - KeyRelationship["Forbids"] = "Forbids"; - KeyRelationship["Requires"] = "Requires"; -})(exports.KeyRelationship || (exports.KeyRelationship = {})); -const keyRelationships = { - [exports.KeyRelationship.Forbids]: { - expect: false, - message: `forbids using`, - }, - [exports.KeyRelationship.Requires]: { - expect: true, - message: `requires using`, - }, -}; -/** - * Create a validator that checks that, when the specified subject property is - * set, the relationship is satisfied. - */ -function hasKeyRelationship(subject, relationship, others, options) { - var _a, _b; - const skipped = new Set((_a = options === null || options === void 0 ? void 0 : options.ignore) !== null && _a !== void 0 ? _a : []); - const check = checks[(_b = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _b !== void 0 ? _b : 'missing']; - const otherSet = new Set(others); - const spec = keyRelationships[relationship]; - const conjunction = relationship === exports.KeyRelationship.Forbids - ? `or` - : `and`; - return makeValidator({ - test: (value, state) => { - const keys = new Set(Object.keys(value)); - if (!check(keys, subject, value) || skipped.has(value[subject])) - return true; - const problems = []; - for (const key of otherSet) - if ((check(keys, key, value) && !skipped.has(value[key])) !== spec.expect) - problems.push(key); - if (problems.length >= 1) - return pushError(state, `Property "${subject}" ${spec.message} ${plural(problems.length, `property`, `properties`)} ${getPrintableArray(problems, conjunction)}`); - return true; - }, - }); -} - -exports.TypeAssertionError = TypeAssertionError; -exports.applyCascade = applyCascade; -exports.as = as; -exports.assert = assert; -exports.assertWithErrors = assertWithErrors; -exports.cascade = cascade; -exports.fn = fn; -exports.hasAtLeastOneKey = hasAtLeastOneKey; -exports.hasExactLength = hasExactLength; -exports.hasForbiddenKeys = hasForbiddenKeys; -exports.hasKeyRelationship = hasKeyRelationship; -exports.hasMaxLength = hasMaxLength; -exports.hasMinLength = hasMinLength; -exports.hasMutuallyExclusiveKeys = hasMutuallyExclusiveKeys; -exports.hasRequiredKeys = hasRequiredKeys; -exports.hasUniqueItems = hasUniqueItems; -exports.isArray = isArray; -exports.isAtLeast = isAtLeast; -exports.isAtMost = isAtMost; -exports.isBase64 = isBase64; -exports.isBoolean = isBoolean; -exports.isDate = isDate; -exports.isDict = isDict; -exports.isEnum = isEnum; -exports.isHexColor = isHexColor; -exports.isISO8601 = isISO8601; -exports.isInExclusiveRange = isInExclusiveRange; -exports.isInInclusiveRange = isInInclusiveRange; -exports.isInstanceOf = isInstanceOf; -exports.isInteger = isInteger; -exports.isJSON = isJSON; -exports.isLiteral = isLiteral; -exports.isLowerCase = isLowerCase; -exports.isMap = isMap; -exports.isNegative = isNegative; -exports.isNullable = isNullable; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isOneOf = isOneOf; -exports.isOptional = isOptional; -exports.isPartial = isPartial; -exports.isPayload = isPayload; -exports.isPositive = isPositive; -exports.isRecord = isRecord; -exports.isSet = isSet; -exports.isString = isString; -exports.isTuple = isTuple; -exports.isUUID4 = isUUID4; -exports.isUnknown = isUnknown; -exports.isUpperCase = isUpperCase; -exports.makeTrait = makeTrait; -exports.makeValidator = makeValidator; -exports.matchesRegExp = matchesRegExp; -exports.softAssert = softAssert; diff --git a/sdks/nodejs/node_modules/typanion/lib/index.mjs b/sdks/nodejs/node_modules/typanion/lib/index.mjs deleted file mode 100644 index dd9c6be..0000000 --- a/sdks/nodejs/node_modules/typanion/lib/index.mjs +++ /dev/null @@ -1,1249 +0,0 @@ -const simpleKeyRegExp = /^[a-zA-Z_][a-zA-Z0-9_]*$/; -function getPrintable(value) { - if (value === null) - return `null`; - if (value === undefined) - return `undefined`; - if (value === ``) - return `an empty string`; - if (typeof value === 'symbol') - return `<${value.toString()}>`; - if (Array.isArray(value)) - return `an array`; - return JSON.stringify(value); -} -function getPrintableArray(value, conjunction) { - if (value.length === 0) - return `nothing`; - if (value.length === 1) - return getPrintable(value[0]); - const rest = value.slice(0, -1); - const trailing = value[value.length - 1]; - const separator = value.length > 2 - ? `, ${conjunction} ` - : ` ${conjunction} `; - return `${rest.map(value => getPrintable(value)).join(`, `)}${separator}${getPrintable(trailing)}`; -} -function computeKey(state, key) { - var _a, _b, _c; - if (typeof key === `number`) { - return `${(_a = state === null || state === void 0 ? void 0 : state.p) !== null && _a !== void 0 ? _a : `.`}[${key}]`; - } - else if (simpleKeyRegExp.test(key)) { - return `${(_b = state === null || state === void 0 ? void 0 : state.p) !== null && _b !== void 0 ? _b : ``}.${key}`; - } - else { - return `${(_c = state === null || state === void 0 ? void 0 : state.p) !== null && _c !== void 0 ? _c : `.`}[${JSON.stringify(key)}]`; - } -} -function plural(n, singular, plural) { - return n === 1 ? singular : plural; -} - -const colorStringRegExp = /^#[0-9a-f]{6}$/i; -const colorStringAlphaRegExp = /^#[0-9a-f]{6}([0-9a-f]{2})?$/i; -// https://stackoverflow.com/a/475217/880703 -const base64RegExp = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/; -// https://stackoverflow.com/a/14166194/880703 -const uuid4RegExp = /^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i; -// https://stackoverflow.com/a/28022901/880703 + https://www.debuggex.com/r/bl8J35wMKk48a7u_ -const iso8601RegExp = /^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/; - -function pushError({ errors, p } = {}, message) { - errors === null || errors === void 0 ? void 0 : errors.push(`${p !== null && p !== void 0 ? p : `.`}: ${message}`); - return false; -} -function makeSetter(target, key) { - return (v) => { - target[key] = v; - }; -} -function makeCoercionFn(target, key) { - return (v) => { - const previous = target[key]; - target[key] = v; - return makeCoercionFn(target, key).bind(null, previous); - }; -} -function makeLazyCoercionFn(fn, orig, generator) { - const commit = () => { - fn(generator()); - return revert; - }; - const revert = () => { - fn(orig); - return commit; - }; - return commit; -} - -/** - * Create a validator that always returns true and never refines the type. - */ -function isUnknown() { - return makeValidator({ - test: (value, state) => { - return true; - }, - }); -} -function isLiteral(expected) { - return makeValidator({ - test: (value, state) => { - if (value !== expected) - return pushError(state, `Expected ${getPrintable(expected)} (got ${getPrintable(value)})`); - return true; - }, - }); -} -/** - * Create a validator that only returns true when the tested value is a string. - * Refines the type to `string`. - */ -function isString() { - return makeValidator({ - test: (value, state) => { - if (typeof value !== `string`) - return pushError(state, `Expected a string (got ${getPrintable(value)})`); - return true; - }, - }); -} -function isEnum(enumSpec) { - const valuesArray = Array.isArray(enumSpec) ? enumSpec : Object.values(enumSpec); - const isAlphaNum = valuesArray.every(item => typeof item === 'string' || typeof item === 'number'); - const values = new Set(valuesArray); - if (values.size === 1) - return isLiteral([...values][0]); - return makeValidator({ - test: (value, state) => { - if (!values.has(value)) { - if (isAlphaNum) { - return pushError(state, `Expected one of ${getPrintableArray(valuesArray, `or`)} (got ${getPrintable(value)})`); - } - else { - return pushError(state, `Expected a valid enumeration value (got ${getPrintable(value)})`); - } - } - return true; - }, - }); -} -const BOOLEAN_COERCIONS = new Map([ - [`true`, true], - [`True`, true], - [`1`, true], - [1, true], - [`false`, false], - [`False`, false], - [`0`, false], - [0, false], -]); -/** - * Create a validator that only returns true when the tested value is a - * boolean. Refines the type to `boolean`. - * - * Supports coercion: - * - 'true' / 'True' / '1' / 1 will turn to `true` - * - 'false' / 'False' / '0' / 0 will turn to `false` - */ -function isBoolean() { - return makeValidator({ - test: (value, state) => { - var _a; - if (typeof value !== `boolean`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - const coercion = BOOLEAN_COERCIONS.get(value); - if (typeof coercion !== `undefined`) { - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]); - return true; - } - } - return pushError(state, `Expected a boolean (got ${getPrintable(value)})`); - } - return true; - }, - }); -} -/** - * Create a validator that only returns true when the tested value is a - * number (including floating numbers; use `cascade` and `isInteger` to - * restrict the range further). Refines the type to `number`. - * - * Supports coercion. - */ -function isNumber() { - return makeValidator({ - test: (value, state) => { - var _a; - if (typeof value !== `number`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - let coercion; - if (typeof value === `string`) { - let val; - try { - val = JSON.parse(value); - } - catch (_b) { } - // We check against JSON.stringify that the output is the same to ensure that the number can be safely represented in JS - if (typeof val === `number`) { - if (JSON.stringify(val) === value) { - coercion = val; - } - else { - return pushError(state, `Received a number that can't be safely represented by the runtime (${value})`); - } - } - } - if (typeof coercion !== `undefined`) { - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]); - return true; - } - } - return pushError(state, `Expected a number (got ${getPrintable(value)})`); - } - return true; - }, - }); -} -/** - * Important: This validator only makes sense when used in conjunction with - * coercion! It will always error when used without. - * - * Create a validator that only returns true when the tested value is a - * JSON representation of the expected type. Refines the type to the - * expected type, and casts the value into its inner value. - */ -function isPayload(spec) { - return makeValidator({ - test: (value, state) => { - var _a; - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) === `undefined`) - return pushError(state, `The isPayload predicate can only be used with coercion enabled`); - if (typeof state.coercion === `undefined`) - return pushError(state, `Unbound coercion result`); - if (typeof value !== `string`) - return pushError(state, `Expected a string (got ${getPrintable(value)})`); - let inner; - try { - inner = JSON.parse(value); - } - catch (_b) { - return pushError(state, `Expected a JSON string (got ${getPrintable(value)})`); - } - const wrapper = { value: inner }; - if (!spec(inner, Object.assign(Object.assign({}, state), { coercion: makeCoercionFn(wrapper, `value`) }))) - return false; - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, wrapper.value)]); - return true; - }, - }); -} -/** - * Create a validator that only returns true when the tested value is a - * valid date. Refines the type to `Date`. - * - * Supports coercion via one of the following formats: - * - ISO86001 strings - * - Unix timestamps - */ -function isDate() { - return makeValidator({ - test: (value, state) => { - var _a; - if (!(value instanceof Date)) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - let coercion; - if (typeof value === `string` && iso8601RegExp.test(value)) { - coercion = new Date(value); - } - else { - let timestamp; - if (typeof value === `string`) { - let val; - try { - val = JSON.parse(value); - } - catch (_b) { } - if (typeof val === `number`) { - timestamp = val; - } - } - else if (typeof value === `number`) { - timestamp = value; - } - if (typeof timestamp !== `undefined`) { - if (Number.isSafeInteger(timestamp) || !Number.isSafeInteger(timestamp * 1000)) { - coercion = new Date(timestamp * 1000); - } - else { - return pushError(state, `Received a timestamp that can't be safely represented by the runtime (${value})`); - } - } - } - if (typeof coercion !== `undefined`) { - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]); - return true; - } - } - return pushError(state, `Expected a date (got ${getPrintable(value)})`); - } - return true; - }, - }); -} -/** - * Create a validator that only returns true when the tested value is an - * array whose all values match the provided subspec. Refines the type to - * `Array`, with `T` being the subspec inferred type. - * - * Supports coercion if the `delimiter` option is set, in which case strings - * will be split accordingly. - */ -function isArray(spec, { delimiter } = {}) { - return makeValidator({ - test: (value, state) => { - var _a; - const originalValue = value; - if (typeof value === `string` && typeof delimiter !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - value = value.split(delimiter); - } - } - if (!Array.isArray(value)) - return pushError(state, `Expected an array (got ${getPrintable(value)})`); - let valid = true; - for (let t = 0, T = value.length; t < T; ++t) { - valid = spec(value[t], Object.assign(Object.assign({}, state), { p: computeKey(state, t), coercion: makeCoercionFn(value, t) })) && valid; - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; - } - } - if (value !== originalValue) - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]); - return valid; - }, - }); -} -/** - * Create a validator that only returns true when the tested value is an - * set whose all values match the provided subspec. Refines the type to - * `Set`, with `T` being the subspec inferred type. - * - * Supports coercion from arrays (or anything that can be coerced into an - * array). - */ -function isSet(spec, { delimiter } = {}) { - const isArrayValidator = isArray(spec, { delimiter }); - return makeValidator({ - test: (value, state) => { - var _a, _b; - if (Object.getPrototypeOf(value).toString() === `[object Set]`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - const originalValues = [...value]; - const coercedValues = [...value]; - if (!isArrayValidator(coercedValues, Object.assign(Object.assign({}, state), { coercion: undefined }))) - return false; - const updateValue = () => coercedValues.some((val, t) => val !== originalValues[t]) - ? new Set(coercedValues) - : value; - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, makeLazyCoercionFn(state.coercion, value, updateValue)]); - return true; - } - else { - let valid = true; - for (const subValue of value) { - valid = spec(subValue, Object.assign({}, state)) && valid; - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; - } - } - return valid; - } - } - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - const store = { value }; - if (!isArrayValidator(value, Object.assign(Object.assign({}, state), { coercion: makeCoercionFn(store, `value`) }))) - return false; - state.coercions.push([(_b = state.p) !== null && _b !== void 0 ? _b : `.`, makeLazyCoercionFn(state.coercion, value, () => new Set(store.value))]); - return true; - } - return pushError(state, `Expected a set (got ${getPrintable(value)})`); - } - }); -} -/** - * Create a validator that only returns true when the tested value is an - * map whose all values match the provided subspecs. Refines the type to - * `Map`, with `U` being the key subspec inferred type and `V` being - * the value subspec inferred type. - * - * Supports coercion from array of tuples (or anything that can be coerced into - * an array of tuples). - */ -function isMap(keySpec, valueSpec) { - const isArrayValidator = isArray(isTuple([keySpec, valueSpec])); - const isRecordValidator = isRecord(valueSpec, { keys: keySpec }); - return makeValidator({ - test: (value, state) => { - var _a, _b, _c; - if (Object.getPrototypeOf(value).toString() === `[object Map]`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - const originalValues = [...value]; - const coercedValues = [...value]; - if (!isArrayValidator(coercedValues, Object.assign(Object.assign({}, state), { coercion: undefined }))) - return false; - const updateValue = () => coercedValues.some((val, t) => val[0] !== originalValues[t][0] || val[1] !== originalValues[t][1]) - ? new Map(coercedValues) - : value; - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, makeLazyCoercionFn(state.coercion, value, updateValue)]); - return true; - } - else { - let valid = true; - for (const [key, subValue] of value) { - valid = keySpec(key, Object.assign({}, state)) && valid; - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; - } - valid = valueSpec(subValue, Object.assign(Object.assign({}, state), { p: computeKey(state, key) })) && valid; - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; - } - } - return valid; - } - } - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - const store = { value }; - if (Array.isArray(value)) { - if (!isArrayValidator(value, Object.assign(Object.assign({}, state), { coercion: undefined }))) - return false; - state.coercions.push([(_b = state.p) !== null && _b !== void 0 ? _b : `.`, makeLazyCoercionFn(state.coercion, value, () => new Map(store.value))]); - return true; - } - else { - if (!isRecordValidator(value, Object.assign(Object.assign({}, state), { coercion: makeCoercionFn(store, `value`) }))) - return false; - state.coercions.push([(_c = state.p) !== null && _c !== void 0 ? _c : `.`, makeLazyCoercionFn(state.coercion, value, () => new Map(Object.entries(store.value)))]); - return true; - } - } - return pushError(state, `Expected a map (got ${getPrintable(value)})`); - } - }); -} -/** - * Create a validator that only returns true when the tested value is a - * tuple whose each value matches the corresponding subspec. Refines the type - * into a tuple whose each item has the type inferred by the corresponding - * tuple. - * - * Supports coercion if the `delimiter` option is set, in which case strings - * will be split accordingly. - */ -function isTuple(spec, { delimiter } = {}) { - const lengthValidator = hasExactLength(spec.length); - return makeValidator({ - test: (value, state) => { - var _a; - if (typeof value === `string` && typeof delimiter !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - value = value.split(delimiter); - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]); - } - } - if (!Array.isArray(value)) - return pushError(state, `Expected a tuple (got ${getPrintable(value)})`); - let valid = lengthValidator(value, Object.assign({}, state)); - for (let t = 0, T = value.length; t < T && t < spec.length; ++t) { - valid = spec[t](value[t], Object.assign(Object.assign({}, state), { p: computeKey(state, t), coercion: makeCoercionFn(value, t) })) && valid; - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; - } - } - return valid; - }, - }); -} -/** - * Create a validator that only returns true when the tested value is an - * object with any amount of properties that must all match the provided - * subspec. Refines the type to `Record`, with `T` being the - * subspec inferred type. - * - * Keys can be optionally validated as well by using the `keys` optional - * subspec parameter. - */ -function isRecord(spec, { keys: keySpec = null, } = {}) { - const isArrayValidator = isArray(isTuple([keySpec !== null && keySpec !== void 0 ? keySpec : isString(), spec])); - return makeValidator({ - test: (value, state) => { - var _a; - if (Array.isArray(value)) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - if (!isArrayValidator(value, Object.assign(Object.assign({}, state), { coercion: undefined }))) - return false; - value = Object.fromEntries(value); - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]); - return true; - } - } - if (typeof value !== `object` || value === null) - return pushError(state, `Expected an object (got ${getPrintable(value)})`); - const keys = Object.keys(value); - let valid = true; - for (let t = 0, T = keys.length; t < T && (valid || (state === null || state === void 0 ? void 0 : state.errors) != null); ++t) { - const key = keys[t]; - const sub = value[key]; - if (key === `__proto__` || key === `constructor`) { - valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Unsafe property name`); - continue; - } - if (keySpec !== null && !keySpec(key, state)) { - valid = false; - continue; - } - if (!spec(sub, Object.assign(Object.assign({}, state), { p: computeKey(state, key), coercion: makeCoercionFn(value, key) }))) { - valid = false; - continue; - } - } - return valid; - }, - }); -} -/** - * @deprecated Replace `isDict` by `isRecord` - */ -function isDict(spec, opts = {}) { - return isRecord(spec, opts); -} -/** - * Create a validator that only returns true when the tested value is an - * object whose all properties match their corresponding subspec. Refines - * the type into an object whose each property has the type inferred by the - * corresponding subspec. - * - * Unlike `t.isPartial`, `t.isObject` doesn't allow extraneous properties by - * default. This behaviour can be altered by using the `extra` optional - * subspec parameter, which will be called to validate an object only - * containing the extraneous properties. - * - * Calling `t.isObject(..., {extra: t.isRecord(t.isUnknown())})` is - * essentially the same as calling `t.isPartial(...)`. - */ -function isObject(props, { extra: extraSpec = null, } = {}) { - const specKeys = Object.keys(props); - const validator = makeValidator({ - test: (value, state) => { - if (typeof value !== `object` || value === null) - return pushError(state, `Expected an object (got ${getPrintable(value)})`); - const keys = new Set([...specKeys, ...Object.keys(value)]); - const extra = {}; - let valid = true; - for (const key of keys) { - if (key === `constructor` || key === `__proto__`) { - valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Unsafe property name`); - } - else { - const spec = Object.prototype.hasOwnProperty.call(props, key) - ? props[key] - : undefined; - const sub = Object.prototype.hasOwnProperty.call(value, key) - ? value[key] - : undefined; - if (typeof spec !== `undefined`) { - valid = spec(sub, Object.assign(Object.assign({}, state), { p: computeKey(state, key), coercion: makeCoercionFn(value, key) })) && valid; - } - else if (extraSpec === null) { - valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Extraneous property (got ${getPrintable(sub)})`); - } - else { - Object.defineProperty(extra, key, { - enumerable: true, - get: () => sub, - set: makeSetter(value, key) - }); - } - } - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; - } - } - if (extraSpec !== null && (valid || (state === null || state === void 0 ? void 0 : state.errors) != null)) - valid = extraSpec(extra, state) && valid; - return valid; - }, - }); - return Object.assign(validator, { - properties: props, - }); -} -/** - * Create a validator that only returns true when the tested value is an - * object whose all properties match their corresponding subspec. Refines - * the type into an object whose each property has the type inferred by the - * corresponding subspec. - * - * Unlike `t.isObject`, `t.isPartial` allows extraneous properties. The - * resulting type will reflect this behaviour by including an index - * signature (each extraneous property being typed `unknown`). - * - * Calling `t.isPartial(...)` is essentially the same as calling - * `t.isObject(..., {extra: t.isRecord(t.isUnknown())})`. - */ -function isPartial(props) { - return isObject(props, { extra: isRecord(isUnknown()) }); -} -/** - * Create a validator that only returns true when the tested value is an - * object whose prototype is derived from the given class. Refines the type - * into a class instance. - */ -const isInstanceOf = (constructor) => makeValidator({ - test: (value, state) => { - if (!(value instanceof constructor)) - return pushError(state, `Expected an instance of ${constructor.name} (got ${getPrintable(value)})`); - return true; - }, -}); -/** - * Create a validator that only returns true when the tested value is an - * object matching any of the provided subspecs. If the optional `exclusive` - * parameter is set to `true`, the behaviour changes so that the validator - * only returns true when exactly one subspec matches. - */ -const isOneOf = (specs, { exclusive = false, } = {}) => makeValidator({ - test: (value, state) => { - var _a, _b, _c; - const matches = []; - const errorBuffer = typeof (state === null || state === void 0 ? void 0 : state.errors) !== `undefined` - ? [] : undefined; - for (let t = 0, T = specs.length; t < T; ++t) { - const subErrors = typeof (state === null || state === void 0 ? void 0 : state.errors) !== `undefined` - ? [] : undefined; - const subCoercions = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined` - ? [] : undefined; - if (specs[t](value, Object.assign(Object.assign({}, state), { errors: subErrors, coercions: subCoercions, p: `${(_a = state === null || state === void 0 ? void 0 : state.p) !== null && _a !== void 0 ? _a : `.`}#${t + 1}` }))) { - matches.push([`#${t + 1}`, subCoercions]); - if (!exclusive) { - break; - } - } - else { - errorBuffer === null || errorBuffer === void 0 ? void 0 : errorBuffer.push(subErrors[0]); - } - } - if (matches.length === 1) { - const [, subCoercions] = matches[0]; - if (typeof subCoercions !== `undefined`) - (_b = state === null || state === void 0 ? void 0 : state.coercions) === null || _b === void 0 ? void 0 : _b.push(...subCoercions); - return true; - } - if (matches.length > 1) - pushError(state, `Expected to match exactly a single predicate (matched ${matches.join(`, `)})`); - else - (_c = state === null || state === void 0 ? void 0 : state.errors) === null || _c === void 0 ? void 0 : _c.push(...errorBuffer); - return false; - }, -}); - -function makeTrait(value) { - return () => { - return value; - }; -} -function makeValidator({ test }) { - return makeTrait(test)(); -} -class TypeAssertionError extends Error { - constructor({ errors } = {}) { - let errorMessage = `Type mismatch`; - if (errors && errors.length > 0) { - errorMessage += `\n`; - for (const error of errors) { - errorMessage += `\n- ${error}`; - } - } - super(errorMessage); - } -} -/** - * Check that the specified value matches the given validator, and throws an - * exception if it doesn't. Refine the type if it passes. - */ -function assert(val, validator) { - if (!validator(val)) { - throw new TypeAssertionError(); - } -} -/** - * Check that the specified value matches the given validator, and throws an - * exception if it doesn't. Refine the type if it passes. - * - * Thrown exceptions include details about what exactly looks invalid in the - * tested value. - */ -function assertWithErrors(val, validator) { - const errors = []; - if (!validator(val, { errors })) { - throw new TypeAssertionError({ errors }); - } -} -/** - * Compile-time only. Refine the type as if the validator was matching the - * tested value, but doesn't actually run it. Similar to the classic `as` - * operator in TypeScript. - */ -function softAssert(val, validator) { - // It's a soft assert; we tell TypeScript about the type, but we don't need to check it -} -function as(value, validator, { coerce = false, errors: storeErrors, throw: throws } = {}) { - const errors = storeErrors ? [] : undefined; - if (!coerce) { - if (validator(value, { errors })) { - return throws ? value : { value, errors: undefined }; - } - else if (!throws) { - return { value: undefined, errors: errors !== null && errors !== void 0 ? errors : true }; - } - else { - throw new TypeAssertionError({ errors }); - } - } - const state = { value }; - const coercion = makeCoercionFn(state, `value`); - const coercions = []; - if (!validator(value, { errors, coercion, coercions })) { - if (!throws) { - return { value: undefined, errors: errors !== null && errors !== void 0 ? errors : true }; - } - else { - throw new TypeAssertionError({ errors }); - } - } - for (const [, apply] of coercions) - apply(); - if (throws) { - return state.value; - } - else { - return { value: state.value, errors: undefined }; - } -} -/** - * Create and return a new function that apply the given validators to each - * corresponding argument passed to the function and throws an exception in - * case of a mismatch. - */ -function fn(validators, fn) { - const isValidArgList = isTuple(validators); - return ((...args) => { - const check = isValidArgList(args); - if (!check) - throw new TypeAssertionError(); - return fn(...args); - }); -} - -/** - * Create a validator that checks that the tested array or string has at least - * the specified length. - */ -function hasMinLength(length) { - return makeValidator({ - test: (value, state) => { - if (!(value.length >= length)) - return pushError(state, `Expected to have a length of at least ${length} elements (got ${value.length})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested array or string has at most - * the specified length. - */ -function hasMaxLength(length) { - return makeValidator({ - test: (value, state) => { - if (!(value.length <= length)) - return pushError(state, `Expected to have a length of at most ${length} elements (got ${value.length})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested array or string has exactly - * the specified length. - */ -function hasExactLength(length) { - return makeValidator({ - test: (value, state) => { - if (!(value.length === length)) - return pushError(state, `Expected to have a length of exactly ${length} elements (got ${value.length})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested array only contains unique - * elements. The optional `map` parameter lets you define a transform to - * apply before making the check (the result of this transform will be - * discarded afterwards). - */ -function hasUniqueItems({ map, } = {}) { - return makeValidator({ - test: (value, state) => { - const set = new Set(); - const dup = new Set(); - for (let t = 0, T = value.length; t < T; ++t) { - const sub = value[t]; - const key = typeof map !== `undefined` - ? map(sub) - : sub; - if (set.has(key)) { - if (dup.has(key)) - continue; - pushError(state, `Expected to contain unique elements; got a duplicate with ${getPrintable(value)}`); - dup.add(key); - } - else { - set.add(key); - } - } - return dup.size === 0; - }, - }); -} -/** - * Create a validator that checks that the tested number is strictly less than 0. - */ -function isNegative() { - return makeValidator({ - test: (value, state) => { - if (!(value <= 0)) - return pushError(state, `Expected to be negative (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested number is equal or greater - * than 0. - */ -function isPositive() { - return makeValidator({ - test: (value, state) => { - if (!(value >= 0)) - return pushError(state, `Expected to be positive (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested number is equal or greater - * than the specified reference. - */ -function isAtLeast(n) { - return makeValidator({ - test: (value, state) => { - if (!(value >= n)) - return pushError(state, `Expected to be at least ${n} (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested number is equal or smaller - * than the specified reference. - */ -function isAtMost(n) { - return makeValidator({ - test: (value, state) => { - if (!(value <= n)) - return pushError(state, `Expected to be at most ${n} (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested number is between the - * specified references (including the upper boundary). - */ -function isInInclusiveRange(a, b) { - return makeValidator({ - test: (value, state) => { - if (!(value >= a && value <= b)) - return pushError(state, `Expected to be in the [${a}; ${b}] range (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested number is between the - * specified references (excluding the upper boundary). - */ -function isInExclusiveRange(a, b) { - return makeValidator({ - test: (value, state) => { - if (!(value >= a && value < b)) - return pushError(state, `Expected to be in the [${a}; ${b}[ range (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested number is an integer. - * - * By default Typanion will also check that it's a *safe* integer. For example, - * 2^53 wouldn't be a safe integer because 2^53+1 would be rounded to 2^53, - * which could put your applications at risk when used in loops. - */ -function isInteger({ unsafe = false, } = {}) { - return makeValidator({ - test: (value, state) => { - if (value !== Math.round(value)) - return pushError(state, `Expected to be an integer (got ${value})`); - if (!unsafe && !Number.isSafeInteger(value)) - return pushError(state, `Expected to be a safe integer (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string matches the given - * regular expression. - */ -function matchesRegExp(regExp) { - return makeValidator({ - test: (value, state) => { - if (!regExp.test(value)) - return pushError(state, `Expected to match the pattern ${regExp.toString()} (got ${getPrintable(value)})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string only contain lowercase - * characters. - */ -function isLowerCase() { - return makeValidator({ - test: (value, state) => { - if (value !== value.toLowerCase()) - return pushError(state, `Expected to be all-lowercase (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string only contain uppercase - * characters. - */ -function isUpperCase() { - return makeValidator({ - test: (value, state) => { - if (value !== value.toUpperCase()) - return pushError(state, `Expected to be all-uppercase (got ${value})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string is a valid UUID v4. - */ -function isUUID4() { - return makeValidator({ - test: (value, state) => { - if (!uuid4RegExp.test(value)) - return pushError(state, `Expected to be a valid UUID v4 (got ${getPrintable(value)})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string is a valid ISO8601 - * date. - */ -function isISO8601() { - return makeValidator({ - test: (value, state) => { - if (!iso8601RegExp.test(value)) - return pushError(state, `Expected to be a valid ISO 8601 date string (got ${getPrintable(value)})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string is a valid hexadecimal - * color. Setting the optional `alpha` parameter to `true` allows an additional - * transparency channel to be included. - */ -function isHexColor({ alpha = false, }) { - return makeValidator({ - test: (value, state) => { - const res = alpha - ? colorStringRegExp.test(value) - : colorStringAlphaRegExp.test(value); - if (!res) - return pushError(state, `Expected to be a valid hexadecimal color string (got ${getPrintable(value)})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string is valid base64. - */ -function isBase64() { - return makeValidator({ - test: (value, state) => { - if (!base64RegExp.test(value)) - return pushError(state, `Expected to be a valid base 64 string (got ${getPrintable(value)})`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested string is valid JSON. A - * optional spec can be passed as parameter, in which case the data will be - * deserialized and validated against the spec (coercion will be disabled - * for this check, and even if successful the returned value will still be - * the original string). - */ -function isJSON(spec = isUnknown()) { - return makeValidator({ - test: (value, state) => { - let data; - try { - data = JSON.parse(value); - } - catch (_a) { - return pushError(state, `Expected to be a valid JSON string (got ${getPrintable(value)})`); - } - return spec(data, state); - }, - }); -} - -function cascade(spec, ...followups) { - const resolvedFollowups = Array.isArray(followups[0]) - ? followups[0] - : followups; - return makeValidator({ - test: (value, state) => { - var _a, _b; - const context = { value: value }; - const subCoercion = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined` - ? makeCoercionFn(context, `value`) : undefined; - const subCoercions = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined` - ? [] : undefined; - if (!spec(value, Object.assign(Object.assign({}, state), { coercion: subCoercion, coercions: subCoercions }))) - return false; - const reverts = []; - if (typeof subCoercions !== `undefined`) - for (const [, coercion] of subCoercions) - reverts.push(coercion()); - try { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (context.value !== value) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, context.value)]); - } - (_b = state === null || state === void 0 ? void 0 : state.coercions) === null || _b === void 0 ? void 0 : _b.push(...subCoercions); - } - return resolvedFollowups.every(spec => { - return spec(context.value, state); - }); - } - finally { - for (const revert of reverts) { - revert(); - } - } - }, - }); -} -function applyCascade(spec, ...followups) { - const resolvedFollowups = Array.isArray(followups[0]) - ? followups[0] - : followups; - return cascade(spec, resolvedFollowups); -} -/** - * Wraps the given spec to also allow `undefined`. - */ -function isOptional(spec) { - return makeValidator({ - test: (value, state) => { - if (typeof value === `undefined`) - return true; - return spec(value, state); - }, - }); -} -/** - * Wraps the given spec to also allow `null`. - */ -function isNullable(spec) { - return makeValidator({ - test: (value, state) => { - if (value === null) - return true; - return spec(value, state); - }, - }); -} -const checks = { - missing: (keys, key) => keys.has(key), - undefined: (keys, key, value) => keys.has(key) && typeof value[key] !== `undefined`, - nil: (keys, key, value) => keys.has(key) && value[key] != null, - falsy: (keys, key, value) => keys.has(key) && !!value[key], -}; -/** - * Create a validator that checks that the tested object contains the specified - * keys. -*/ -function hasRequiredKeys(requiredKeys, options) { - var _a; - const requiredSet = new Set(requiredKeys); - const check = checks[(_a = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _a !== void 0 ? _a : 'missing']; - return makeValidator({ - test: (value, state) => { - const keys = new Set(Object.keys(value)); - const problems = []; - for (const key of requiredSet) - if (!check(keys, key, value)) - problems.push(key); - if (problems.length > 0) - return pushError(state, `Missing required ${plural(problems.length, `property`, `properties`)} ${getPrintableArray(problems, `and`)}`); - return true; - }, - }); -} -/** -* Create a validator that checks that the tested object contains at least one -* of the specified keys. -*/ -function hasAtLeastOneKey(requiredKeys, options) { - var _a; - const requiredSet = new Set(requiredKeys); - const check = checks[(_a = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _a !== void 0 ? _a : 'missing']; - return makeValidator({ - test: (value, state) => { - const keys = Object.keys(value); - const valid = keys.some(key => check(requiredSet, key, value)); - if (!valid) - return pushError(state, `Missing at least one property from ${getPrintableArray(Array.from(requiredSet), `or`)}`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested object contains none of the - * specified keys. -*/ -function hasForbiddenKeys(forbiddenKeys, options) { - var _a; - const forbiddenSet = new Set(forbiddenKeys); - const check = checks[(_a = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _a !== void 0 ? _a : 'missing']; - return makeValidator({ - test: (value, state) => { - const keys = new Set(Object.keys(value)); - const problems = []; - for (const key of forbiddenSet) - if (check(keys, key, value)) - problems.push(key); - if (problems.length > 0) - return pushError(state, `Forbidden ${plural(problems.length, `property`, `properties`)} ${getPrintableArray(problems, `and`)}`); - return true; - }, - }); -} -/** - * Create a validator that checks that the tested object contains at most one - * of the specified keys. - */ -function hasMutuallyExclusiveKeys(exclusiveKeys, options) { - var _a; - const exclusiveSet = new Set(exclusiveKeys); - const check = checks[(_a = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _a !== void 0 ? _a : 'missing']; - return makeValidator({ - test: (value, state) => { - const keys = new Set(Object.keys(value)); - const used = []; - for (const key of exclusiveSet) - if (check(keys, key, value)) - used.push(key); - if (used.length > 1) - return pushError(state, `Mutually exclusive properties ${getPrintableArray(used, `and`)}`); - return true; - }, - }); -} -var KeyRelationship; -(function (KeyRelationship) { - KeyRelationship["Forbids"] = "Forbids"; - KeyRelationship["Requires"] = "Requires"; -})(KeyRelationship || (KeyRelationship = {})); -const keyRelationships = { - [KeyRelationship.Forbids]: { - expect: false, - message: `forbids using`, - }, - [KeyRelationship.Requires]: { - expect: true, - message: `requires using`, - }, -}; -/** - * Create a validator that checks that, when the specified subject property is - * set, the relationship is satisfied. - */ -function hasKeyRelationship(subject, relationship, others, options) { - var _a, _b; - const skipped = new Set((_a = options === null || options === void 0 ? void 0 : options.ignore) !== null && _a !== void 0 ? _a : []); - const check = checks[(_b = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _b !== void 0 ? _b : 'missing']; - const otherSet = new Set(others); - const spec = keyRelationships[relationship]; - const conjunction = relationship === KeyRelationship.Forbids - ? `or` - : `and`; - return makeValidator({ - test: (value, state) => { - const keys = new Set(Object.keys(value)); - if (!check(keys, subject, value) || skipped.has(value[subject])) - return true; - const problems = []; - for (const key of otherSet) - if ((check(keys, key, value) && !skipped.has(value[key])) !== spec.expect) - problems.push(key); - if (problems.length >= 1) - return pushError(state, `Property "${subject}" ${spec.message} ${plural(problems.length, `property`, `properties`)} ${getPrintableArray(problems, conjunction)}`); - return true; - }, - }); -} - -export { KeyRelationship, TypeAssertionError, applyCascade, as, assert, assertWithErrors, cascade, fn, hasAtLeastOneKey, hasExactLength, hasForbiddenKeys, hasKeyRelationship, hasMaxLength, hasMinLength, hasMutuallyExclusiveKeys, hasRequiredKeys, hasUniqueItems, isArray, isAtLeast, isAtMost, isBase64, isBoolean, isDate, isDict, isEnum, isHexColor, isISO8601, isInExclusiveRange, isInInclusiveRange, isInstanceOf, isInteger, isJSON, isLiteral, isLowerCase, isMap, isNegative, isNullable, isNumber, isObject, isOneOf, isOptional, isPartial, isPayload, isPositive, isRecord, isSet, isString, isTuple, isUUID4, isUnknown, isUpperCase, makeTrait, makeValidator, matchesRegExp, softAssert }; diff --git a/sdks/nodejs/node_modules/typanion/lib/internal/format.d.ts b/sdks/nodejs/node_modules/typanion/lib/internal/format.d.ts deleted file mode 100644 index f3e9c8d..0000000 --- a/sdks/nodejs/node_modules/typanion/lib/internal/format.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { ValidationState } from '../types'; -export declare function getPrintable(value: unknown): string; -export declare function getPrintableArray(value: unknown[], conjunction: string): string; -export declare function computeKey(state: ValidationState | undefined, key: string | number): string; -export declare function plural(n: number, singular: string, plural: string): string; diff --git a/sdks/nodejs/node_modules/typanion/lib/internal/regexps.d.ts b/sdks/nodejs/node_modules/typanion/lib/internal/regexps.d.ts deleted file mode 100644 index a3a10be..0000000 --- a/sdks/nodejs/node_modules/typanion/lib/internal/regexps.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare const colorStringRegExp: RegExp; -export declare const colorStringAlphaRegExp: RegExp; -export declare const base64RegExp: RegExp; -export declare const uuid4RegExp: RegExp; -export declare const iso8601RegExp: RegExp; diff --git a/sdks/nodejs/node_modules/typanion/lib/internal/tools.d.ts b/sdks/nodejs/node_modules/typanion/lib/internal/tools.d.ts deleted file mode 100644 index de5fff7..0000000 --- a/sdks/nodejs/node_modules/typanion/lib/internal/tools.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BoundCoercionFn, CoercionFn, ValidationState } from '../types'; -export declare function pushError({ errors, p }: ValidationState | undefined, message: string): boolean; -export declare function makeSetter(target: any, key: any): (v: any) => void; -export declare function makeCoercionFn(target: any, key: any): CoercionFn; -export declare function makeLazyCoercionFn(fn: CoercionFn, orig: any, generator: () => any): BoundCoercionFn; diff --git a/sdks/nodejs/node_modules/typanion/lib/predicates/cascadingPredicates.d.ts b/sdks/nodejs/node_modules/typanion/lib/predicates/cascadingPredicates.d.ts deleted file mode 100644 index d9f2491..0000000 --- a/sdks/nodejs/node_modules/typanion/lib/predicates/cascadingPredicates.d.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { AnyStrictValidator } from '../types'; -/** - * Create a validator that checks that the tested array or string has at least - * the specified length. - */ -export declare function hasMinLength(length: number): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested array or string has at most - * the specified length. - */ -export declare function hasMaxLength(length: number): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested array or string has exactly - * the specified length. - */ -export declare function hasExactLength(length: number): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested array only contains unique - * elements. The optional `map` parameter lets you define a transform to - * apply before making the check (the result of this transform will be - * discarded afterwards). - */ -export declare function hasUniqueItems({ map, }?: { - map?: (value: T) => unknown; -}): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested number is strictly less than 0. - */ -export declare function isNegative(): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested number is equal or greater - * than 0. - */ -export declare function isPositive(): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested number is equal or greater - * than the specified reference. - */ -export declare function isAtLeast(n: number): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested number is equal or smaller - * than the specified reference. - */ -export declare function isAtMost(n: number): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested number is between the - * specified references (including the upper boundary). - */ -export declare function isInInclusiveRange(a: number, b: number): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested number is between the - * specified references (excluding the upper boundary). - */ -export declare function isInExclusiveRange(a: number, b: number): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested number is an integer. - * - * By default Typanion will also check that it's a *safe* integer. For example, - * 2^53 wouldn't be a safe integer because 2^53+1 would be rounded to 2^53, - * which could put your applications at risk when used in loops. - */ -export declare function isInteger({ unsafe, }?: { - unsafe?: boolean; -}): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested string matches the given - * regular expression. - */ -export declare function matchesRegExp(regExp: RegExp): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested string only contain lowercase - * characters. - */ -export declare function isLowerCase(): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested string only contain uppercase - * characters. - */ -export declare function isUpperCase(): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested string is a valid UUID v4. - */ -export declare function isUUID4(): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested string is a valid ISO8601 - * date. - */ -export declare function isISO8601(): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested string is a valid hexadecimal - * color. Setting the optional `alpha` parameter to `true` allows an additional - * transparency channel to be included. - */ -export declare function isHexColor({ alpha, }: { - alpha?: boolean; -}): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested string is valid base64. - */ -export declare function isBase64(): import("../types").LooseValidator; -/** - * Create a validator that checks that the tested string is valid JSON. A - * optional spec can be passed as parameter, in which case the data will be - * deserialized and validated against the spec (coercion will be disabled - * for this check, and even if successful the returned value will still be - * the original string). - */ -export declare function isJSON(spec?: AnyStrictValidator): import("../types").LooseValidator; diff --git a/sdks/nodejs/node_modules/typanion/lib/predicates/helperPredicates.d.ts b/sdks/nodejs/node_modules/typanion/lib/predicates/helperPredicates.d.ts deleted file mode 100644 index 9cecf46..0000000 --- a/sdks/nodejs/node_modules/typanion/lib/predicates/helperPredicates.d.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { AnyStrictValidator, InferType, LooseTest, StrictTest, StrictValidator } from '../types'; -/** - * Create a validator that runs the provided spec before applying a series of - * followup validation on the refined type. This is useful when you not only - * wish to validate the data type itself, but also its format. - * - * For example, the following would validate that a value is a valid port: - * t.cascade(t.isNumber(), t.isInteger(), t.isInInclusiveRange(1, 655356)) - * - * And the following would validate that a value is base64: - * t.cascade(t.isString(), t.isBase64()) - */ -export declare function cascade(spec: T, followups: Array, InferType> | LooseTest>>): StrictValidator>; -export declare function cascade(spec: T, ...followups: Array, InferType> | LooseTest>>): StrictValidator>; -/** - * @deprecated Replace `applyCascade` by `cascade` - */ -export declare function applyCascade(spec: T, followups: Array, InferType> | LooseTest>>): StrictValidator>; -export declare function applyCascade(spec: T, ...followups: Array, InferType> | LooseTest>>): StrictValidator>; -/** - * Wraps the given spec to also allow `undefined`. - */ -export declare function isOptional(spec: T): StrictValidator | undefined>; -/** - * Wraps the given spec to also allow `null`. - */ -export declare function isNullable(spec: T): StrictValidator | null>; -export declare type MissingType = 'missing' | 'undefined' | 'nil' | 'falsy'; -/** - * Create a validator that checks that the tested object contains the specified - * keys. -*/ -export declare function hasRequiredKeys(requiredKeys: string[], options?: { - missingIf?: MissingType; -}): import("../types").LooseValidator, Record>; -/** -* Create a validator that checks that the tested object contains at least one -* of the specified keys. -*/ -export declare function hasAtLeastOneKey(requiredKeys: string[], options?: { - missingIf?: MissingType; -}): import("../types").LooseValidator, Record>; -/** - * Create a validator that checks that the tested object contains none of the - * specified keys. -*/ -export declare function hasForbiddenKeys(forbiddenKeys: string[], options?: { - missingIf?: MissingType; -}): import("../types").LooseValidator<{ - [key: string]: unknown; -}, { - [key: string]: unknown; -}>; -/** - * Create a validator that checks that the tested object contains at most one - * of the specified keys. - */ -export declare function hasMutuallyExclusiveKeys(exclusiveKeys: string[], options?: { - missingIf?: MissingType; -}): import("../types").LooseValidator<{ - [key: string]: unknown; -}, { - [key: string]: unknown; -}>; -export declare enum KeyRelationship { - Forbids = "Forbids", - Requires = "Requires" -} -/** - * Create a validator that checks that, when the specified subject property is - * set, the relationship is satisfied. - */ -export declare function hasKeyRelationship(subject: string, relationship: KeyRelationship, others: string[], options?: { - ignore?: any[]; - missingIf?: MissingType; -}): import("../types").LooseValidator<{ - [key: string]: unknown; -}, { - [key: string]: unknown; -}>; diff --git a/sdks/nodejs/node_modules/typanion/lib/predicates/typePredicates.d.ts b/sdks/nodejs/node_modules/typanion/lib/predicates/typePredicates.d.ts deleted file mode 100644 index 1f07a7a..0000000 --- a/sdks/nodejs/node_modules/typanion/lib/predicates/typePredicates.d.ts +++ /dev/null @@ -1,205 +0,0 @@ -import { AnyStrictValidator, InferType, StrictValidator } from '../types'; -/** - * Create a validator that always returns true and never refines the type. - */ -export declare function isUnknown(): StrictValidator; -/** - * Create a validator that only returns true when the tested value is exactly - * the same as the expected one. - * - * Refines the type to the provided literal, as much as possible. For example, - * if you provide a literal string as parameter, the resulting type will be - * whatever this literal string is, not a generic `string` type. The same is - * true for `null`, `true`, `false`, and literal numbers. - */ -export declare function isLiteral(expected: null): StrictValidator; -export declare function isLiteral(expected: true): StrictValidator; -export declare function isLiteral(expected: false): StrictValidator; -export declare function isLiteral(expected: T): StrictValidator; -export declare function isLiteral(expected: T): StrictValidator; -export declare function isLiteral(expected: T): StrictValidator; -/** - * Create a validator that only returns true when the tested value is a string. - * Refines the type to `string`. - */ -export declare function isString(): StrictValidator; -/** - * Create a validator that only returns true when the tested value is amongst - * the expected set of values. Accepts both value arrays (['foo', 'bar']) and - * dictionaries ({foo: 'foo', bar: 'bar'}), which makes them compatible with - * regular TypeScript enumerations (as long as they're not declared as `const - * enum`). - * - * Refines the type to the enumeration values as much as possible. For example, - * if you pass a TypeScript enumeration as expected set of values, the - * resulting type will be the union of all values in this enumeration. - */ -export declare function isEnum(values: ReadonlyArray): StrictValidator; -export declare function isEnum(enumSpec: Record): StrictValidator; -/** - * Create a validator that only returns true when the tested value is a - * boolean. Refines the type to `boolean`. - * - * Supports coercion: - * - 'true' / 'True' / '1' / 1 will turn to `true` - * - 'false' / 'False' / '0' / 0 will turn to `false` - */ -export declare function isBoolean(): StrictValidator; -/** - * Create a validator that only returns true when the tested value is a - * number (including floating numbers; use `cascade` and `isInteger` to - * restrict the range further). Refines the type to `number`. - * - * Supports coercion. - */ -export declare function isNumber(): StrictValidator; -/** - * Important: This validator only makes sense when used in conjunction with - * coercion! It will always error when used without. - * - * Create a validator that only returns true when the tested value is a - * JSON representation of the expected type. Refines the type to the - * expected type, and casts the value into its inner value. - */ -export declare function isPayload(spec: T): StrictValidator>; -/** - * Create a validator that only returns true when the tested value is a - * valid date. Refines the type to `Date`. - * - * Supports coercion via one of the following formats: - * - ISO86001 strings - * - Unix timestamps - */ -export declare function isDate(): StrictValidator; -/** - * Create a validator that only returns true when the tested value is an - * array whose all values match the provided subspec. Refines the type to - * `Array`, with `T` being the subspec inferred type. - * - * Supports coercion if the `delimiter` option is set, in which case strings - * will be split accordingly. - */ -export declare function isArray(spec: T, { delimiter }?: { - delimiter?: string | RegExp; -}): StrictValidator[]>; -/** - * Create a validator that only returns true when the tested value is an - * set whose all values match the provided subspec. Refines the type to - * `Set`, with `T` being the subspec inferred type. - * - * Supports coercion from arrays (or anything that can be coerced into an - * array). - */ -export declare function isSet(spec: T, { delimiter }?: { - delimiter?: string | RegExp; -}): StrictValidator>>; -/** - * Create a validator that only returns true when the tested value is an - * map whose all values match the provided subspecs. Refines the type to - * `Map`, with `U` being the key subspec inferred type and `V` being - * the value subspec inferred type. - * - * Supports coercion from array of tuples (or anything that can be coerced into - * an array of tuples). - */ -export declare function isMap(keySpec: TKey, valueSpec: TValue): StrictValidator, InferType>>; -declare type AnyStrictValidatorTuple = AnyStrictValidator[] | []; -declare type InferTypeFromTuple = { - [K in keyof T]: InferType; -}; -/** - * Create a validator that only returns true when the tested value is a - * tuple whose each value matches the corresponding subspec. Refines the type - * into a tuple whose each item has the type inferred by the corresponding - * tuple. - * - * Supports coercion if the `delimiter` option is set, in which case strings - * will be split accordingly. - */ -export declare function isTuple(spec: T, { delimiter }?: { - delimiter?: string | RegExp; -}): StrictValidator>; -/** - * Create a validator that only returns true when the tested value is an - * object with any amount of properties that must all match the provided - * subspec. Refines the type to `Record`, with `T` being the - * subspec inferred type. - * - * Keys can be optionally validated as well by using the `keys` optional - * subspec parameter. - */ -export declare function isRecord(spec: T, { keys: keySpec, }?: { - keys?: StrictValidator | null; -}): StrictValidator>>; -/** - * @deprecated Replace `isDict` by `isRecord` - */ -export declare function isDict(spec: T, opts?: { - keys?: StrictValidator | null; -}): StrictValidator>>; -declare type ExtractIndex = { - [K in keyof T as {} extends Record ? K : never]: T[K]; -}; -declare type RemoveIndex = { - [K in keyof T as {} extends Record ? never : K]: T[K]; -}; -declare type UndefinedProperties = { - [P in keyof T]-?: undefined extends T[P] ? P : never; -}[keyof T]; -declare type UndefinedToOptional = Partial>> & Pick>>; -declare type ObjectType = UndefinedToOptional> & ExtractIndex; -/** - * Create a validator that only returns true when the tested value is an - * object whose all properties match their corresponding subspec. Refines - * the type into an object whose each property has the type inferred by the - * corresponding subspec. - * - * Unlike `t.isPartial`, `t.isObject` doesn't allow extraneous properties by - * default. This behaviour can be altered by using the `extra` optional - * subspec parameter, which will be called to validate an object only - * containing the extraneous properties. - * - * Calling `t.isObject(..., {extra: t.isRecord(t.isUnknown())})` is - * essentially the same as calling `t.isPartial(...)`. - */ -export declare function isObject>(props: T, { extra: extraSpec, }?: { - extra?: UnknownValidator | null; -}): import("../types").StrictTest; } & InferType>> & import("../types").Trait; } & InferType>> & { - properties: T; -}; -/** - * Create a validator that only returns true when the tested value is an - * object whose all properties match their corresponding subspec. Refines - * the type into an object whose each property has the type inferred by the - * corresponding subspec. - * - * Unlike `t.isObject`, `t.isPartial` allows extraneous properties. The - * resulting type will reflect this behaviour by including an index - * signature (each extraneous property being typed `unknown`). - * - * Calling `t.isPartial(...)` is essentially the same as calling - * `t.isObject(..., {extra: t.isRecord(t.isUnknown())})`. - */ -export declare function isPartial(props: T): import("../types").StrictTest; } & Record>> & import("../types").Trait; } & Record>> & { - properties: T; -}; -/** - * Create a validator that only returns true when the tested value is an - * object whose prototype is derived from the given class. Refines the type - * into a class instance. - */ -export declare const isInstanceOf: InstanceType>(constructor: T) => StrictValidator>; -/** - * Create a validator that only returns true when the tested value is an - * object matching any of the provided subspecs. If the optional `exclusive` - * parameter is set to `true`, the behaviour changes so that the validator - * only returns true when exactly one subspec matches. - */ -export declare const isOneOf: (specs: readonly T[], { exclusive, }?: { - exclusive?: boolean | undefined; -}) => StrictValidator>; -export {}; diff --git a/sdks/nodejs/node_modules/typanion/lib/tools.d.ts b/sdks/nodejs/node_modules/typanion/lib/tools.d.ts deleted file mode 100644 index 4561a71..0000000 --- a/sdks/nodejs/node_modules/typanion/lib/tools.d.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { AnyStrictValidator, InferType, LooseTest, LooseValidator, StrictTest, StrictValidator, Trait } from './types'; -export declare function makeTrait(value: U): () => U & Trait; -export declare function makeValidator({ test }: { - test: StrictTest; -}): StrictValidator; -export declare function makeValidator({ test }: { - test: LooseTest; -}): LooseValidator; -export declare class TypeAssertionError extends Error { - constructor({ errors }?: { - errors?: string[]; - }); -} -/** - * Check that the specified value matches the given validator, and throws an - * exception if it doesn't. Refine the type if it passes. - */ -export declare function assert(val: unknown, validator: T): asserts val is InferType; -/** - * Check that the specified value matches the given validator, and throws an - * exception if it doesn't. Refine the type if it passes. - * - * Thrown exceptions include details about what exactly looks invalid in the - * tested value. - */ -export declare function assertWithErrors(val: unknown, validator: T): asserts val is InferType; -/** - * Compile-time only. Refine the type as if the validator was matching the - * tested value, but doesn't actually run it. Similar to the classic `as` - * operator in TypeScript. - */ -export declare function softAssert(val: unknown, validator: T): asserts val is InferType; -/** - * Check that the value matches the given validator. Returns a tuple where the - * first element is the validated value, and the second the reported errors. - * - * If the `errors` field is set to `false` (the default), the error reporting - * will be a single boolean. If set to `true`, it'll be an array of strings. - */ -export declare function as(value: unknown, validator: T, opts: { - coerce?: boolean; - errors?: boolean; - throw: true; -}): InferType; -export declare function as(value: unknown, validator: T, opts: { - coerce?: boolean; - errors: false; - throw?: false; -}): { - value: InferType; - errors: undefined; -} | { - value: unknown; - errors: true; -}; -export declare function as(value: unknown, validator: T, opts: { - coerce?: boolean; - errors: true; - throw?: false; -}): { - value: InferType; - errors: undefined; -} | { - value: unknown; - errors: Array; -}; -export declare function as(value: unknown, validator: T, opts?: { - coerce?: boolean; - errors?: boolean; - throw?: false; -}): { - value: InferType; - errors: undefined; -} | { - value: unknown; - errors: Array | true; -}; -declare type FnValidatedArgument = T extends [AnyStrictValidator, ...AnyStrictValidator[]] ? { - [K in keyof T]: InferType; -} : []; -interface FnValidatedFunction { - (...args: FnValidatedArgument): Ret; -} -/** - * Create and return a new function that apply the given validators to each - * corresponding argument passed to the function and throws an exception in - * case of a mismatch. - */ -export declare function fn(validators: T, fn: (...args: FnValidatedArgument) => Ret): FnValidatedFunction; -export {}; diff --git a/sdks/nodejs/node_modules/typanion/lib/types.d.ts b/sdks/nodejs/node_modules/typanion/lib/types.d.ts deleted file mode 100644 index d1946f0..0000000 --- a/sdks/nodejs/node_modules/typanion/lib/types.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -export declare type BoundCoercionFn = () => BoundCoercionFn; -export declare type CoercionFn = (v: any) => BoundCoercionFn; -export declare type Coercion = [string, BoundCoercionFn]; -/** - * Given a Typanion validator, return the type the validator guarantees if it - * matches. - */ -export declare type InferType = U extends Trait ? V : never; -export declare type Trait = { - __trait: Type; -}; -export declare type LooseTest = (value: U, test?: ValidationState) => boolean; -export declare type StrictTest = (value: U, test?: ValidationState) => value is V; -export declare type LooseValidator = LooseTest & Trait; -export declare type StrictValidator = StrictTest & Trait; -export declare type AnyStrictValidator = StrictValidator; -export declare type ValidationState = { - p?: string; - errors?: string[]; - coercions?: Coercion[]; - coercion?: CoercionFn; -}; diff --git a/sdks/nodejs/node_modules/typanion/package.json b/sdks/nodejs/node_modules/typanion/package.json deleted file mode 100644 index 209f245..0000000 --- a/sdks/nodejs/node_modules/typanion/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "typanion", - "description": "Simple runtime TypeScript validator library", - "homepage": "https://mael.dev/typanion/", - "version": "3.14.0", - "main": "lib/index", - "license": "MIT", - "sideEffects": false, - "repository": { - "url": "https://github.com/arcanis/typanion", - "type": "git" - }, - "workspaces": [ - "website" - ], - "devDependencies": { - "@rollup/plugin-typescript": "^8.2.1", - "@types/chai": "^4.2.11", - "@types/mocha": "^7.0.2", - "@types/node": "^17.0.21", - "chai": "^4.3.4", - "mocha": "^8.0.1", - "rollup": "^2.17.0", - "ts-node": "^8.10.2", - "tslib": "^2.0.0", - "typescript": "^4.6.3" - }, - "scripts": { - "prepack": "rm -rf lib && rollup -c", - "postpack": "rm -rf lib", - "test": "yarn tsc && TS_NODE_TRANSPILE_ONLY=true mocha --require ts-node/register --extension ts tests/**/*.test.ts" - }, - "publishConfig": { - "main": "lib/index" - }, - "files": [ - "lib" - ], - "packageManager": "yarn@4.0.0-rc.2" -} \ No newline at end of file diff --git a/sdks/nodejs/node_modules/universal-user-agent/.github/workflows/release.yml b/sdks/nodejs/node_modules/universal-user-agent/.github/workflows/release.yml deleted file mode 100644 index a74184d..0000000 --- a/sdks/nodejs/node_modules/universal-user-agent/.github/workflows/release.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Release -on: - push: - branches: - - master - - next - - beta - - "*.x" -jobs: - release: - permissions: - contents: write # to be able to publish a GitHub release - issues: write # to be able to comment on released issues - pull-requests: write # to be able to comment on released pull requests - id-token: write # to enable use of OIDC for npm provenance - name: release - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: lts/* - - run: npm ci - - run: npx semantic-release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/sdks/nodejs/node_modules/universal-user-agent/.github/workflows/test.yml b/sdks/nodejs/node_modules/universal-user-agent/.github/workflows/test.yml deleted file mode 100644 index c9efe52..0000000 --- a/sdks/nodejs/node_modules/universal-user-agent/.github/workflows/test.yml +++ /dev/null @@ -1,66 +0,0 @@ -name: Test -on: - push: - branches: - - master - pull_request: - types: - - opened - - synchronize - - reopened - -jobs: - test-deno: - runs-on: ubuntu-latest - needs: test-node - steps: - - uses: actions/checkout@v4 - - uses: denoland/setup-deno@v2 - with: - deno-version: v2.x # Run with latest stable Deno. - - run: deno install - - run: deno test - - test-bun: - runs-on: ubuntu-latest - needs: test-node - steps: - - uses: actions/checkout@v4 - - uses: oven-sh/setup-bun@v2 - - run: bun install - - run: bun test - - test-node: - runs-on: ubuntu-latest - strategy: - matrix: - node_version: - - 12 - - 14 - - 16 - - 18 - - 20 - - 22 - - 24 - - steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node_version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node_version }} - cache: npm - - run: npm ci - - run: npm run test:node - - test-types: - runs-on: ubuntu-latest - needs: - - test-node - - test-deno - - test-bun - steps: - - uses: actions/checkout@v2 - - run: npm ci - - run: npm run lint - - run: npm run test:types diff --git a/sdks/nodejs/node_modules/universal-user-agent/.github/workflows/update-prettier.yml b/sdks/nodejs/node_modules/universal-user-agent/.github/workflows/update-prettier.yml deleted file mode 100644 index 6b246c0..0000000 --- a/sdks/nodejs/node_modules/universal-user-agent/.github/workflows/update-prettier.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Update Prettier -on: - push: - branches: - - renovate/prettier-* -jobs: - update_prettier: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - version: 12 - cache: npm - node-version: 16 - - run: npm ci - - run: npm run lint:fix - - uses: gr2m/create-or-update-pull-request-action@v1.x - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - title: Prettier updated - body: An update to prettier required updates to your code. - branch: ${{ github.ref }} - commit-message: "style: prettier" diff --git a/sdks/nodejs/node_modules/universal-user-agent/CODE_OF_CONDUCT.md b/sdks/nodejs/node_modules/universal-user-agent/CODE_OF_CONDUCT.md deleted file mode 100644 index dad5ddc..0000000 --- a/sdks/nodejs/node_modules/universal-user-agent/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual attention or - advances -- Trolling, insulting/derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or electronic - address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at opensource+coc@martynus.net. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [https://contributor-covenant.org/version/1/4][version] - -[homepage]: https://contributor-covenant.org -[version]: https://contributor-covenant.org/version/1/4/ diff --git a/sdks/nodejs/node_modules/universal-user-agent/LICENSE.md b/sdks/nodejs/node_modules/universal-user-agent/LICENSE.md deleted file mode 100644 index e1d0d65..0000000 --- a/sdks/nodejs/node_modules/universal-user-agent/LICENSE.md +++ /dev/null @@ -1,7 +0,0 @@ -# [ISC License](https://spdx.org/licenses/ISC) - -Copyright (c) 2018-2021, Gregor Martynus (https://github.com/gr2m) - -Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 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. diff --git a/sdks/nodejs/node_modules/universal-user-agent/README.md b/sdks/nodejs/node_modules/universal-user-agent/README.md deleted file mode 100644 index f0f48cb..0000000 --- a/sdks/nodejs/node_modules/universal-user-agent/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# universal-user-agent - -> Get a user agent string across all JavaScript Runtime Environments - -[![@latest](https://img.shields.io/npm/v/universal-user-agent.svg)](https://www.npmjs.com/package/universal-user-agent) -[![Build Status](https://github.com/gr2m/universal-user-agent/workflows/Test/badge.svg)](https://github.com/gr2m/universal-user-agent/actions/workflows/test.yml?query=workflow%3ATest) - -```js -import { getUserAgent } from "universal-user-agent"; - -const userAgent = getUserAgent(); -// userAgent will look like this -// in browser: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0" -// in node: Node.js/v8.9.4 (macOS High Sierra; x64) -``` - -## License - -[ISC](LICENSE.md) diff --git a/sdks/nodejs/node_modules/universal-user-agent/SECURITY.md b/sdks/nodejs/node_modules/universal-user-agent/SECURITY.md deleted file mode 100644 index da9c516..0000000 --- a/sdks/nodejs/node_modules/universal-user-agent/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -## Security contact information - -To report a security vulnerability, please use the -[Tidelift security contact](https://tidelift.com/security). -Tidelift will coordinate the fix and disclosure. diff --git a/sdks/nodejs/node_modules/universal-user-agent/index.d.ts b/sdks/nodejs/node_modules/universal-user-agent/index.d.ts deleted file mode 100644 index 6e60db8..0000000 --- a/sdks/nodejs/node_modules/universal-user-agent/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Returns a User Agent String based on the current environment (Browser, Node, Deno, etc). - */ -export function getUserAgent(): string; diff --git a/sdks/nodejs/node_modules/universal-user-agent/index.js b/sdks/nodejs/node_modules/universal-user-agent/index.js deleted file mode 100644 index 83bb81f..0000000 --- a/sdks/nodejs/node_modules/universal-user-agent/index.js +++ /dev/null @@ -1,13 +0,0 @@ -export function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } - - if (typeof process === "object" && process.version !== undefined) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${ - process.arch - })`; - } - - return ""; -} diff --git a/sdks/nodejs/node_modules/universal-user-agent/index.test-d.ts b/sdks/nodejs/node_modules/universal-user-agent/index.test-d.ts deleted file mode 100644 index 00bbfc6..0000000 --- a/sdks/nodejs/node_modules/universal-user-agent/index.test-d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { expectType } from "tsd"; - -import { getUserAgent } from "./index.js"; - -expectType(getUserAgent()); diff --git a/sdks/nodejs/node_modules/universal-user-agent/index.test.js b/sdks/nodejs/node_modules/universal-user-agent/index.test.js deleted file mode 100644 index 2629862..0000000 --- a/sdks/nodejs/node_modules/universal-user-agent/index.test.js +++ /dev/null @@ -1,40 +0,0 @@ -import { getUserAgent } from "./index.js"; - -if (getUserAgent instanceof Function === false) { - throw new Error("getUserAgent is not a function"); -} - -if (typeof getUserAgent() !== "string") { - throw new Error("getUserAgent does not return a string"); -} - -if ("Deno" in globalThis) { - if (/Deno\//.test(getUserAgent()) === false) { - throw new Error( - "getUserAgent does not return the correct user agent for Deno" - ); - } -} else if ("Bun" in globalThis) { - if (/Bun\//.test(getUserAgent()) === false) { - throw new Error( - "getUserAgent does not return the correct user agent for Bun" - ); - } -} else { - if (/Node\.js\//.test(getUserAgent()) === false) { - throw new Error( - "getUserAgent does not return the correct user agent for Node.js" - ); - } -} - -delete globalThis.navigator; -delete globalThis.process; - -if (getUserAgent() !== "") { - throw new Error( - "getUserAgent does not return the correct user agent for undetectable environment" - ); -} - -console.info("getUserAgent test passed"); diff --git a/sdks/nodejs/node_modules/universal-user-agent/package.json b/sdks/nodejs/node_modules/universal-user-agent/package.json deleted file mode 100644 index 9a886f6..0000000 --- a/sdks/nodejs/node_modules/universal-user-agent/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "universal-user-agent", - "version": "7.0.3", - "type": "module", - "description": "Get a user agent string across all JavaScript Runtime Environments", - "exports": "./index.js", - "types": "index.d.ts", - "repository": "github:gr2m/universal-user-agent", - "keywords": [], - "author": "Gregor Martynus (https://github.com/gr2m)", - "license": "ISC", - "scripts": { - "lint": "prettier --check '*.{js,json,md}'", - "lint:fix": "prettier --write '*.{js,json,md}'", - "test": "npm run test:node && npm run test:types", - "test:bun": "bun test", - "test:node": "node index.test.js", - "test:deno": "deno test", - "test:types": "tsd" - }, - "devDependencies": { - "prettier": "^2.0.0", - "tsd": "^0.17.0" - }, - "publishConfig": { - "provenance": true - } -} diff --git a/server/Cargo.toml b/server/Cargo.toml index 1a400ab..826889d 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -17,6 +17,7 @@ constant_time_eq = "0.4.2" cookie = { version = "0.18", features = ["private", "key-expansion"] } futures-util = "0.3.32" governor = "0.10.4" +ipnet = "2.12" redis = { version = "1.0.4", features = ["tokio-comp", "connection-manager"] } serde = { version = "1.0.228", features = ["derive"] } serde_json = "1.0.149" @@ -34,6 +35,9 @@ tracing-subscriber = { version = "0.3.22", features = ["env-filter", "json"] } # Integration + e2e tests drive the spawned server over HTTP. `cookies` is for # the dashboard session flow; `stream` is for consuming the live SSE stream. reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls", "cookies", "stream"] } +# Drives routers in-process (`ServiceExt::oneshot`) for middleware unit tests. +# Already in the build graph through axum. +tower = { version = "0.5", features = ["util"] } [lints] workspace = true diff --git a/server/src/api/flags.rs b/server/src/api/flags.rs index 20e73b9..4cfc48a 100644 --- a/server/src/api/flags.rs +++ b/server/src/api/flags.rs @@ -396,7 +396,6 @@ async fn create_flag( .await .unwrap_or_default(); let expanded = super::segments::expand_flag_with_segments(payload.clone(), &segment_map); - state.store.upsert_flag(expanded.clone()); let msg = upsert_message(&env_id, &expanded, revision); publish_update(&state, &msg, "create_flag").await; @@ -703,7 +702,6 @@ pub(crate) async fn emit_patch( .unwrap_or_default(); let expanded = super::segments::expand_flag_with_segments(applied.result.flag.clone(), &segment_map); - state.store.upsert_flag(expanded.clone()); let msg = upsert_message(env_id, &expanded, applied.revision); publish_update(state, &msg, "patch_flag").await; @@ -887,7 +885,6 @@ async fn promote_flag( .await .unwrap_or_default(); let expanded = super::segments::expand_flag_with_segments(flag.clone(), &segment_map); - state.store.upsert_flag(expanded.clone()); let msg = upsert_message(&target_env_id, &expanded, revision); publish_update(&state, &msg, "promote_flag").await; diff --git a/server/src/api/health.rs b/server/src/api/health.rs index 85eb370..eb3aebf 100644 --- a/server/src/api/health.rs +++ b/server/src/api/health.rs @@ -1,12 +1,30 @@ -use crate::state::AppState; -use axum::{Json, Router, extract::State, routing::get}; +//! SDK health: the live SSE connections held by **this server instance**. +//! +//! Connections are tracked in process memory (`AppState::connected_clients`), +//! so behind a load balancer each instance reports only its own clients. +//! +//! Visibility follows project RBAC: workspace admins see every connection; +//! anyone else sees only connections of environments in projects they are a +//! member of, with the client address reduced to its network prefix. +//! Connections without an environment (dashboard sessions, the legacy +//! `SDK_KEY`) are visible to workspace admins only. + +use crate::auth::{AuthContext, get_session_claims}; +use crate::state::{AppState, ConnectedClient}; +use axum::{Json, Router, extract::State, http::StatusCode, routing::get}; +use ipnet::IpNet; use serde::Serialize; +use std::collections::HashSet; +use std::net::IpAddr; +use tracing::error; #[derive(Debug, Serialize)] pub struct ConnectedClientView { pub connection_id: String, pub environment_id: Option, pub sdk_key_name: Option, + /// Full address for workspace admins; a network prefix such as + /// `203.0.113.0/24` for everyone else. pub client_ip: String, pub connected_at: i64, } @@ -15,23 +33,89 @@ pub fn read_router() -> Router { Router::new().route("/health/connections", get(list_connections)) } -async fn list_connections(State(state): State) -> Json> { +/// IPv4 /24 or IPv6 /48: enough to tell sites apart, not to single out a host. +fn masked(ip: IpAddr) -> String { + let prefix = if ip.is_ipv4() { 24 } else { 48 }; + IpNet::new(ip, prefix) + .map(|net| net.trunc().to_string()) + .unwrap_or_default() +} + +fn view(c: &ConnectedClient, full_ip: bool) -> ConnectedClientView { + ConnectedClientView { + connection_id: c.connection_id.clone(), + environment_id: c.environment_id.clone(), + sdk_key_name: c.sdk_key_name.clone(), + client_ip: if full_ip { + c.client_ip.to_string() + } else { + masked(c.client_ip) + }, + connected_at: c.connected_at, + } +} + +async fn list_connections( + State(state): State, + ctx: AuthContext, +) -> Result>, StatusCode> { + // Sessions and PATs (either scope — this is a read) carry a user; SDK keys + // never reach this route (`sdk_key_route_allowed`), but refuse them anyway. + let claims = get_session_claims(&ctx).ok_or(StatusCode::FORBIDDEN)?; + let is_admin = claims.role == "admin"; + + let visible_envs: Option> = if is_admin { + None + } else { + let envs: Vec = sqlx::query_scalar( + "SELECT e.id::text FROM environments e \ + JOIN project_members pm ON pm.project_id = e.project_id \ + WHERE pm.user_id = $1", + ) + .bind(claims.user_id) + .fetch_all(&state.db) + .await + .map_err(|e| { + error!(error = %e, "DB error resolving SDK health visibility"); + StatusCode::INTERNAL_SERVER_ERROR + })?; + Some(envs.into_iter().collect()) + }; + let mut clients: Vec = state .connected_clients .iter() - .map(|entry| { - let c = entry.value(); - ConnectedClientView { - connection_id: c.connection_id.clone(), - environment_id: c.environment_id.clone(), - sdk_key_name: c.sdk_key_name.clone(), - client_ip: c.client_ip.clone(), - connected_at: c.connected_at, - } + .filter(|entry| match &visible_envs { + None => true, + Some(envs) => entry + .value() + .environment_id + .as_ref() + .is_some_and(|env| envs.contains(env)), }) + .map(|entry| view(entry.value(), is_admin)) .collect(); // Stable ordering so the dashboard doesn't jump around. - clients.sort_by_key(|c| c.connected_at); - Json(clients) + clients.sort_by(|a, b| { + a.connected_at + .cmp(&b.connected_at) + .then_with(|| a.connection_id.cmp(&b.connection_id)) + }); + Ok(Json(clients)) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn masks_to_network_prefix() { + assert_eq!(masked("203.0.113.77".parse().unwrap()), "203.0.113.0/24"); + assert_eq!( + masked("2001:db8:abcd:12::1".parse().unwrap()), + "2001:db8:abcd::/48" + ); + assert_eq!(masked("127.0.0.1".parse().unwrap()), "127.0.0.0/24"); + } } diff --git a/server/src/api/keys.rs b/server/src/api/keys.rs index 0ceafa2..83d53b8 100644 --- a/server/src/api/keys.rs +++ b/server/src/api/keys.rs @@ -149,21 +149,20 @@ async fn can_admin_project( pub async fn get_setup_key( State(state): State, jar: PrivateCookieJar, + headers: axum::http::HeaderMap, ) -> Result, StatusCode> { if jar.get("lg_session").is_some() { return Err(StatusCode::NOT_FOUND); } - let complete = sqlx::query("SELECT value FROM settings WHERE key = 'setup_complete'") - .fetch_optional(&state.db) + if crate::setup::is_setup_complete(&state.db) .await .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)? - .map(|row| row.get::("value") == "true") - .unwrap_or(false); - - if complete { + { return Err(StatusCode::NOT_FOUND); } + // The key is only shown to whoever is entitled to claim the installation. + crate::setup::verify(&state, &headers).await?; let row = sqlx::query( "SELECT k.id, k.name, k.value, k.created_at, k.environment_id::text, e.name AS env_name \ diff --git a/server/src/api/segments.rs b/server/src/api/segments.rs index 315dc51..f68bc91 100644 --- a/server/src/api/segments.rs +++ b/server/src/api/segments.rs @@ -9,7 +9,7 @@ use axum::{ use checkgate_core::evaluator::{Flag, TargetingRule}; use serde::{Deserialize, Serialize}; use serde_json::{Value, json}; -use sqlx::{PgPool, Row}; +use sqlx::Row; use std::collections::HashMap; use tracing::{error, info}; @@ -99,30 +99,6 @@ pub(crate) async fn load_env_segments( Ok(map) } -/// Load all segments across all environments, keyed by `(env_id, segment_key)`. -/// Used at startup to expand flags during FlagStore bootstrap. -pub(crate) async fn load_all_segments( - db: &PgPool, -) -> Result>, sqlx::Error> { - let rows = sqlx::query( - "SELECT environment_id::text, key, rules FROM segments ORDER BY environment_id, key", - ) - .fetch_all(db) - .await?; - - let mut map = HashMap::new(); - for row in rows { - let env_id: String = row.get("environment_id"); - let key: String = row.get("key"); - if let Ok(rules_val) = row.try_get::("rules") - && let Ok(rules) = serde_json::from_value::>(rules_val) - { - map.insert((env_id, key), rules); - } - } - Ok(map) -} - /// Expand any `segment_key` references in a flag's rules to their concrete rules. /// Uses the preloaded `segment_map` — no DB calls. Unexpanded segment keys that are /// not found in the map are silently dropped (safe: flag falls through to default). @@ -514,8 +490,6 @@ async fn rerevision_referencing_flags( async fn publish_rebroadcast(state: &AppState, flags: Vec) { for item in flags { let msg = super::flags::upsert_message(&item.env_id, &item.flag, item.revision); - // Also update FlagStore on this instance. - state.store.upsert_flag(item.flag); super::flags::publish_update(state, &msg, "segment_rebroadcast").await; } } diff --git a/server/src/api/session.rs b/server/src/api/session.rs index 1f24c26..0acbd2e 100644 --- a/server/src/api/session.rs +++ b/server/src/api/session.rs @@ -4,17 +4,18 @@ use argon2::{ }; use axum::{ Json, Router, - extract::{ConnectInfo, State}, - http::StatusCode, + extract::State, + http::{HeaderMap, StatusCode}, routing::{get, post}, }; use axum_extra::extract::cookie::{Cookie, PrivateCookieJar, SameSite}; use serde::{Deserialize, Serialize}; use sqlx::Row; -use std::net::SocketAddr; use time::Duration; use tracing::{error, info, warn}; +use crate::client_ip::ClientIp; +use crate::setup; use crate::state::AppState; // --------------------------------------------------------------------------- @@ -139,13 +140,7 @@ async fn get_workspace_name(state: &AppState) -> String { } async fn get_is_setup_complete(state: &AppState) -> bool { - sqlx::query_scalar::<_, String>("SELECT value FROM settings WHERE key = 'setup_complete'") - .fetch_optional(&state.db) - .await - .ok() - .flatten() - .map(|v| v == "true") - .unwrap_or(false) + setup::is_setup_complete(&state.db).await.unwrap_or(false) } // --------------------------------------------------------------------------- @@ -244,12 +239,12 @@ async fn clear_attempts(state: &AppState, email: &str) { )] pub async fn login( State(state): State, - ConnectInfo(addr): ConnectInfo, + ClientIp(client_ip): ClientIp, jar: PrivateCookieJar, Json(req): Json, ) -> Result<(PrivateCookieJar, Json), (StatusCode, Json)> { let email = req.email.trim().to_lowercase(); - let ip = addr.ip().to_string(); + let ip = client_ip.to_string(); if email.is_empty() || req.password.is_empty() { return Err(( @@ -436,22 +431,27 @@ pub async fn me( } /// First-run setup: creates the admin user and workspace, issues a session cookie. +/// +/// Requires the one-time setup token (see [`crate::setup`]). The whole claim +/// runs in one transaction under a database-wide advisory lock, and +/// `setup_complete` is re-read while holding it, so of any number of +/// concurrent requests — on any number of server instances — exactly one +/// creates the admin; the rest see setup already complete and get 404. pub async fn setup_complete( State(state): State, jar: PrivateCookieJar, + headers: HeaderMap, Json(req): Json, ) -> Result<(PrivateCookieJar, Json), StatusCode> { - let complete = - sqlx::query_scalar::<_, String>("SELECT value FROM settings WHERE key = 'setup_complete'") - .fetch_optional(&state.db) - .await - .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)? - .map(|v| v == "true") - .unwrap_or(false); - - if complete { + // Cheap pre-check so a finished installation answers 404 without a token. + // Not relied upon: the authoritative check is repeated under the lock. + if setup::is_setup_complete(&state.db) + .await + .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)? + { return Err(StatusCode::NOT_FOUND); } + setup::verify(&state, &headers).await?; let workspace_name = req.workspace_name.trim().to_string(); let name = req.name.trim().to_string(); @@ -468,24 +468,63 @@ pub async fn setup_complete( let password_hash = hash_password(&req.password)?; + // Any early return drops `db_tx`, which rolls the transaction back and + // releases the advisory lock. let mut db_tx = state.db.begin().await.map_err(|e| { error!(error = %e, "Failed to begin setup transaction"); StatusCode::INTERNAL_SERVER_ERROR })?; + // READ COMMITTED takes a fresh snapshot per statement, so the re-check + // below sees a commit that happened while this request waited for the + // lock. Set explicitly: under a REPEATABLE READ database default the + // snapshot would predate the wait. + sqlx::query("SET TRANSACTION ISOLATION LEVEL READ COMMITTED") + .execute(&mut *db_tx) + .await + .map_err(|e| { + error!(error = %e, "Failed to set setup transaction isolation"); + StatusCode::INTERNAL_SERVER_ERROR + })?; + + sqlx::query("SELECT pg_advisory_xact_lock($1)") + .bind(setup::SETUP_ADVISORY_LOCK) + .execute(&mut *db_tx) + .await + .map_err(|e| { + error!(error = %e, "Failed to acquire setup lock"); + StatusCode::INTERNAL_SERVER_ERROR + })?; + + if setup::is_setup_complete(&mut *db_tx).await.map_err(|e| { + error!(error = %e, "Failed to re-check setup state"); + StatusCode::INTERNAL_SERVER_ERROR + })? { + info!("Setup request lost the race — setup was completed concurrently"); + return Err(StatusCode::NOT_FOUND); + } + + // A row for this email may predate password auth (migration + // 20260416000004 left such rows without a password); setup may claim it. + // An account that already has a password is never overwritten. let row = sqlx::query( "INSERT INTO users (name, email, role, password_hash) VALUES ($1, $2, 'admin', $3) \ ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name, role = 'admin', \ - password_hash = EXCLUDED.password_hash RETURNING id", + password_hash = EXCLUDED.password_hash WHERE users.password_hash IS NULL \ + RETURNING id", ) .bind(&name) .bind(&email) .bind(&password_hash) - .fetch_one(&mut *db_tx) + .fetch_optional(&mut *db_tx) .await .map_err(|e| { error!(error = %e, "Failed to create admin user during setup"); StatusCode::INTERNAL_SERVER_ERROR + })? + .ok_or_else(|| { + warn!("Setup rejected: an account with this email already has a password"); + StatusCode::CONFLICT })?; sqlx::query( @@ -524,10 +563,16 @@ pub async fn setup_complete( StatusCode::INTERNAL_SERVER_ERROR })?; + setup::revoke_all(&mut *db_tx).await.map_err(|e| { + error!(error = %e, "Failed to revoke setup tokens"); + StatusCode::INTERNAL_SERVER_ERROR + })?; + db_tx.commit().await.map_err(|e| { error!(error = %e, "Failed to commit setup transaction"); StatusCode::INTERNAL_SERVER_ERROR })?; + setup::remove_token_file(); info!(email = %email, workspace = %workspace_name, project = %project_name, "Setup complete — admin user created"); diff --git a/server/src/client_ip.rs b/server/src/client_ip.rs new file mode 100644 index 0000000..f9c7e7f --- /dev/null +++ b/server/src/client_ip.rs @@ -0,0 +1,311 @@ +//! Resolves the client IP address a request is attributed to. +//! +//! The TCP peer address is the only value a client cannot choose, so it is the +//! default. `X-Forwarded-For` is consulted only when that peer is a proxy the +//! operator listed in `TRUSTED_PROXIES`; otherwise any client could pick its +//! own rate-limit identity (or frame another address) by sending the header. +//! +//! Proxies append the address they received a connection from, so the chain is +//! read from the right: each hop that is itself a trusted proxy is skipped, and +//! the first untrusted hop is the client. Entries left of that hop were written +//! by the client and are never used. + +use axum::{ + extract::{ConnectInfo, FromRequestParts, State}, + http::{HeaderMap, Request, StatusCode, request::Parts}, + middleware::Next, + response::Response, +}; +use ipnet::IpNet; +use std::net::{IpAddr, SocketAddr}; +use std::sync::Arc; + +/// Upper bound on the hops examined, so a long header costs bounded work. +const MAX_HOPS: usize = 32; + +/// Proxies whose `X-Forwarded-For` header is believed. +#[derive(Clone, Debug, Default)] +pub struct TrustedProxies { + nets: Vec, +} + +impl TrustedProxies { + /// Parses a comma- or whitespace-separated list of IP addresses and CIDR + /// ranges, e.g. `"10.0.0.0/8, 192.168.1.10, fd00::/8"`. + pub fn parse(spec: &str) -> Result { + let nets = spec + .split(|c: char| c == ',' || c.is_whitespace()) + .filter(|entry| !entry.is_empty()) + .map(|entry| { + entry + .parse::() + .or_else(|_| entry.parse::().map(IpNet::from)) + .map(|net| net.trunc()) + .map_err(|_| format!("invalid TRUSTED_PROXIES entry {entry:?}")) + }) + .collect::, _>>()?; + Ok(Self { nets }) + } + + /// Reads `TRUSTED_PROXIES`. Unset or empty means no proxy is trusted. + pub fn from_env() -> Result { + Self::parse(&std::env::var("TRUSTED_PROXIES").unwrap_or_default()) + } + + pub fn is_empty(&self) -> bool { + self.nets.is_empty() + } + + pub fn is_trusted(&self, ip: IpAddr) -> bool { + let ip = ip.to_canonical(); + self.nets.iter().any(|net| net.contains(&ip)) + } + + /// The address the request is attributed to. + pub fn resolve(&self, peer: IpAddr, headers: &HeaderMap) -> IpAddr { + let peer = peer.to_canonical(); + if !self.is_trusted(peer) { + return peer; + } + let mut hops = Vec::new(); + for value in headers.get_all("x-forwarded-for") { + // A header that is not visible ASCII cannot be a list of addresses; + // ignore the whole chain rather than guess which part is genuine. + let Ok(value) = value.to_str() else { + return peer; + }; + hops.extend(value.split(',').map(str::trim)); + } + let mut client = peer; + for hop in hops.iter().rev().take(MAX_HOPS) { + // A malformed hop ends the walk. Everything to its right was + // written by trusted proxies, so the nearest of those stands in for + // the client: a broken header can only merge clients into a + // proxy's budget, never hand a client a fresh one. + let Some(ip) = parse_hop(hop) else { + return client; + }; + client = ip; + if !self.is_trusted(ip) { + return ip; + } + } + client + } +} + +/// Parses one `X-Forwarded-For` entry: a bare address, or an address with a +/// port (`203.0.113.7:4711`, `[2001:db8::1]:443`), which some proxies emit. +fn parse_hop(hop: &str) -> Option { + let ip = hop + .parse::() + .ok() + .or_else(|| hop.parse::().ok().map(|addr| addr.ip())) + .or_else(|| { + hop.strip_prefix('[') + .and_then(|h| h.strip_suffix(']')) + .and_then(|h| h.parse::().ok()) + })?; + Some(ip.to_canonical()) +} + +/// The resolved client address, placed in request extensions by +/// [`resolve_client_ip`]. Handlers extract it instead of `ConnectInfo` so that +/// logs, lockout records and the SDK health view agree with the rate limiter. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct ClientIp(pub IpAddr); + +impl FromRequestParts for ClientIp +where + S: Send + Sync, +{ + type Rejection = StatusCode; + + async fn from_request_parts(parts: &mut Parts, _state: &S) -> Result { + if let Some(ip) = parts.extensions.get::() { + return Ok(*ip); + } + // Without the middleware, the TCP peer is still the safe answer. + parts + .extensions + .get::>() + .map(|ConnectInfo(addr)| ClientIp(addr.ip().to_canonical())) + .ok_or(StatusCode::INTERNAL_SERVER_ERROR) + } +} + +/// Middleware that resolves the client address once per request. +pub async fn resolve_client_ip( + State(trusted): State>, + ConnectInfo(addr): ConnectInfo, + mut req: Request, + next: Next, +) -> Response { + let ip = trusted.resolve(addr.ip(), req.headers()); + req.extensions_mut().insert(ClientIp(ip)); + next.run(req).await +} + +#[cfg(test)] +mod tests { + use super::*; + use axum::http::HeaderValue; + + fn ip(s: &str) -> IpAddr { + s.parse().unwrap() + } + + fn xff(values: &[&str]) -> HeaderMap { + let mut headers = HeaderMap::new(); + for v in values { + headers.append("x-forwarded-for", HeaderValue::from_str(v).unwrap()); + } + headers + } + + #[test] + fn direct_request_ignores_spoofed_header() { + let trusted = TrustedProxies::default(); + let headers = xff(&["198.51.100.1"]); + assert_eq!( + trusted.resolve(ip("203.0.113.9"), &headers), + ip("203.0.113.9") + ); + } + + #[test] + fn untrusted_proxy_header_is_ignored() { + let trusted = TrustedProxies::parse("10.0.0.0/8").unwrap(); + let headers = xff(&["198.51.100.1"]); + // The peer is not in the trusted range, so it is the client. + assert_eq!(trusted.resolve(ip("192.0.2.5"), &headers), ip("192.0.2.5")); + } + + #[test] + fn trusted_proxy_forwards_client() { + let trusted = TrustedProxies::parse("10.0.0.1").unwrap(); + let headers = xff(&["198.51.100.1"]); + assert_eq!( + trusted.resolve(ip("10.0.0.1"), &headers), + ip("198.51.100.1") + ); + } + + #[test] + fn trusted_proxy_without_header_is_the_client() { + let trusted = TrustedProxies::parse("10.0.0.1").unwrap(); + assert_eq!( + trusted.resolve(ip("10.0.0.1"), &HeaderMap::new()), + ip("10.0.0.1") + ); + } + + #[test] + fn multi_hop_chain_takes_rightmost_untrusted() { + let trusted = TrustedProxies::parse("10.0.0.0/8, 172.16.0.0/12").unwrap(); + // Client spoofs 1.1.1.1; the edge proxy (172.16.0.2) appended the real + // client 198.51.100.7; the inner proxy appended the edge proxy. + let headers = xff(&["1.1.1.1, 198.51.100.7, 172.16.0.2"]); + assert_eq!( + trusted.resolve(ip("10.0.0.1"), &headers), + ip("198.51.100.7") + ); + } + + #[test] + fn chain_split_across_header_lines_is_joined_in_order() { + let trusted = TrustedProxies::parse("10.0.0.0/8").unwrap(); + let headers = xff(&["1.1.1.1", "198.51.100.7, 10.0.0.2"]); + assert_eq!( + trusted.resolve(ip("10.0.0.1"), &headers), + ip("198.51.100.7") + ); + } + + #[test] + fn all_trusted_chain_falls_back_to_leftmost_hop() { + let trusted = TrustedProxies::parse("10.0.0.0/8").unwrap(); + let headers = xff(&["10.0.0.3, 10.0.0.2"]); + assert_eq!(trusted.resolve(ip("10.0.0.1"), &headers), ip("10.0.0.3")); + } + + #[test] + fn malformed_hop_stops_at_nearest_trusted_address() { + let trusted = TrustedProxies::parse("10.0.0.0/8").unwrap(); + for bad in ["not-an-ip", "", "unknown", "999.1.1.1", "1.2.3.4/24"] { + let headers = xff(&[&format!("198.51.100.7, {bad}")]); + assert_eq!( + trusted.resolve(ip("10.0.0.1"), &headers), + ip("10.0.0.1"), + "hop {bad:?}" + ); + let headers = xff(&[&format!("{bad}, 10.0.0.2")]); + assert_eq!( + trusted.resolve(ip("10.0.0.1"), &headers), + ip("10.0.0.2"), + "hop {bad:?} left of a trusted hop" + ); + } + } + + #[test] + fn non_ascii_header_is_ignored() { + let trusted = TrustedProxies::parse("10.0.0.1").unwrap(); + let mut headers = HeaderMap::new(); + headers.insert( + "x-forwarded-for", + HeaderValue::from_bytes(b"198.51.100.1\xff").unwrap(), + ); + assert_eq!(trusted.resolve(ip("10.0.0.1"), &headers), ip("10.0.0.1")); + } + + #[test] + fn hops_with_ports_and_brackets_parse() { + let trusted = TrustedProxies::parse("10.0.0.1").unwrap(); + for (hop, want) in [ + ("198.51.100.1:4711", "198.51.100.1"), + ("[2001:db8::1]:443", "2001:db8::1"), + ("[2001:db8::2]", "2001:db8::2"), + ("2001:db8::3", "2001:db8::3"), + ] { + assert_eq!( + trusted.resolve(ip("10.0.0.1"), &xff(&[hop])), + ip(want), + "{hop}" + ); + } + } + + #[test] + fn ipv4_mapped_addresses_are_canonical() { + let trusted = TrustedProxies::parse("10.0.0.1").unwrap(); + let headers = xff(&["::ffff:198.51.100.1"]); + assert_eq!( + trusted.resolve(ip("::ffff:10.0.0.1"), &headers), + ip("198.51.100.1") + ); + } + + #[test] + fn hop_walk_is_bounded() { + let trusted = TrustedProxies::parse("10.0.0.0/8").unwrap(); + let mut chain = vec!["198.51.100.1".to_string()]; + chain.extend((0..100).map(|i| format!("10.0.{}.{}", i / 250, i % 250 + 1))); + let headers = xff(&[&chain.join(", ")]); + // The real client sits beyond MAX_HOPS trusted hops, so the walk stops + // on a trusted address instead of reaching it. + assert!(trusted.is_trusted(trusted.resolve(ip("10.0.0.1"), &headers))); + } + + #[test] + fn parse_accepts_ips_and_cidrs_and_rejects_garbage() { + let trusted = TrustedProxies::parse(" 10.0.0.0/8,192.168.1.10 fd00::/8 ").unwrap(); + assert!(trusted.is_trusted(ip("10.255.0.1"))); + assert!(trusted.is_trusted(ip("192.168.1.10"))); + assert!(!trusted.is_trusted(ip("192.168.1.11"))); + assert!(trusted.is_trusted(ip("fd12::1"))); + assert!(TrustedProxies::parse("").unwrap().is_empty()); + assert!(TrustedProxies::parse("10.0.0.0/33").is_err()); + assert!(TrustedProxies::parse("proxy.internal").is_err()); + } +} diff --git a/server/src/main.rs b/server/src/main.rs index b9b7739..216a101 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -12,10 +12,12 @@ mod api; mod auth; +mod client_ip; mod integrations; mod notify; mod rate_limit; mod scheduler; +mod setup; mod state; mod stream; mod webhook_fire; @@ -28,11 +30,9 @@ use axum::{ routing::get, }; use axum_extra::extract::cookie::Key; -use checkgate_core::evaluator::Flag; -use checkgate_core::store::FlagStore; use dashmap::DashMap; use rand::RngExt as _; -use rate_limit::new_rate_limiter; +use rate_limit::{RateLimitConfig, RateLimiters}; use sqlx::{Row, postgres::PgPoolOptions}; use state::SdkKeyEntry; use std::sync::Arc; @@ -67,8 +67,10 @@ async fn main() -> Result<(), Box> { // ── PostgreSQL ──────────────────────────────────────────────────────────── - let db_url = std::env::var("DATABASE_URL") - .unwrap_or_else(|_| "postgres://checkgate:password@localhost/checkgate".to_string()); + let db_url = connection_url( + "DATABASE_URL", + "postgres://checkgate:password@localhost/checkgate", + )?; let max_conns = std::env::var("DB_MAX_CONNECTIONS") .ok() @@ -95,10 +97,22 @@ async fn main() -> Result<(), Box> { info!("Migrations complete — schema ready"); + // ── First-run setup token ───────────────────────────────────────────────── + + let setup_token = setup::configured_token().map_err(|e| { + error!(error = %e, "Invalid SETUP_TOKEN"); + e + })?; + setup::prepare(&db, setup_token.as_deref()) + .await + .map_err(|e| { + error!(error = %e, "Failed to prepare first-run setup"); + e + })?; + // ── Redis ───────────────────────────────────────────────────────────────── - let redis_url = - std::env::var("REDIS_URL").unwrap_or_else(|_| "redis://localhost:6379".to_string()); + let redis_url = connection_url("REDIS_URL", "redis://localhost:6379")?; info!("Connecting to Redis"); @@ -228,77 +242,37 @@ async fn main() -> Result<(), Box> { } }; - // ── Broadcast channel ───────────────────────────────────────────────────── - - const BROADCAST_CHANNEL_CAPACITY: usize = 256; - let (flag_tx, _) = broadcast::channel::(BROADCAST_CHANNEL_CAPACITY); - - // ── Bootstrap flag store from Postgres ──────────────────────────────────── + // ── Client identity & rate limits ───────────────────────────────────────── - let store = Arc::new(FlagStore::new()); - - // Preload all segments so flags can be expanded inline (no per-flag DB call). - let all_segments = api::segments::load_all_segments(&db).await.unwrap_or_else(|e| { - warn!(error = %e, "Failed to preload segments — flags with segment rules will be unexpanded"); - std::collections::HashMap::new() - }); - - let records = sqlx::query("SELECT data, environment_id::text AS env_id FROM flags") - .fetch_all(&db) - .await - .map_err(|e| { - error!(error = %e, "Failed to load flags from PostgreSQL on startup"); - e - })?; + let trusted_proxies = client_ip::TrustedProxies::from_env().map_err(|e| { + error!(error = %e, "Invalid TRUSTED_PROXIES"); + e + })?; + if trusted_proxies.is_empty() { + info!("TRUSTED_PROXIES not set — clients are identified by their TCP peer address"); + } else { + info!("TRUSTED_PROXIES set — X-Forwarded-For is honoured from those peers only"); + } + let trusted_proxies = Arc::new(trusted_proxies); - let total_rows = records.len(); - let mut loaded = 0usize; - let mut skipped = 0usize; + let rate_limit_config = RateLimitConfig::from_env().map_err(|e| { + error!(error = %e, "Invalid rate limit configuration"); + e + })?; + info!(config = ?rate_limit_config, "Rate limits per client per minute"); + let rate_limiters = Arc::new(RateLimiters::new(rate_limit_config)); + rate_limiters.spawn_eviction(); - for rec in records { - let env_id: String = match rec.try_get("env_id") { - Ok(v) => v, - Err(_) => { - skipped = skipped.saturating_add(1); - continue; - } - }; - match rec.try_get::("data") { - Err(e) => { - error!(error = %e, "Failed to read 'data' column from flags row"); - skipped = skipped.saturating_add(1); - } - Ok(data) => match serde_json::from_value::(data) { - Ok(flag) => { - // Build a per-env slice of the segment map for this flag. - let env_segments: std::collections::HashMap = all_segments - .iter() - .filter(|((eid, _), _)| eid == &env_id) - .map(|((_, key), rules)| (key.clone(), rules.clone())) - .collect(); - let expanded = api::segments::expand_flag_with_segments(flag, &env_segments); - store.upsert_flag(expanded); - loaded = loaded.saturating_add(1); - } - Err(e) => { - warn!(error = %e, "Skipping malformed flag row — schema may be out of sync"); - skipped = skipped.saturating_add(1); - } - }, - } - } + // ── Broadcast channel ───────────────────────────────────────────────────── - info!( - total_rows, - loaded, skipped, "Flag store initialised from PostgreSQL" - ); + const BROADCAST_CHANNEL_CAPACITY: usize = 256; + let (flag_tx, _) = broadcast::channel::(BROADCAST_CHANNEL_CAPACITY); // ── Redis pub/sub subscriber ─────────────────────────────────────────────── { let redis_sub = redis_client.clone(); let tx = flag_tx.clone(); - let store_ref = Arc::clone(&store); tokio::spawn(async move { let mut first_subscription = true; @@ -340,45 +314,10 @@ async fn main() -> Result<(), Box> { } }; - match serde_json::from_str::(&payload) { - Err(e) => { - warn!(error = %e, "Redis subscriber: received non-JSON payload"); - } - Ok(event) => match event.get("type").and_then(|t| t.as_str()) { - Some("UPSERT") => { - match event - .get("flag") - .and_then(|f| serde_json::from_value::(f.clone()).ok()) - { - Some(flag) => { - info!(flag_key = %flag.key, "Redis: applying remote UPSERT"); - store_ref.upsert_flag(flag); - } - None => { - warn!( - "Redis subscriber: UPSERT event missing valid 'flag' field" - ); - } - } - } - Some("DELETE") => match event.get("key").and_then(|k| k.as_str()) { - Some(key) => { - info!(flag_key = key, "Redis: applying remote DELETE"); - store_ref.delete_flag(key); - } - None => { - warn!("Redis subscriber: DELETE event missing 'key' field"); - } - }, - Some("RESYNC") => { - info!("Redis: resync requested — SSE clients will reconnect"); - } - other => { - warn!(event_type = ?other, "Redis subscriber: unknown event type"); - } - }, - } - + // Payloads are forwarded as-is: each SSE handler parses them + // and delivers only events for the environments it serves. + // There is no server-side flag cache to update — SSE + // bootstrap, snapshots and the REST API all read PostgreSQL. if tx.receiver_count() > 0 && let Err(e) = tx.send(payload) { @@ -404,13 +343,12 @@ async fn main() -> Result<(), Box> { redis_client, redis_conn, resync_pending: Arc::new(std::sync::atomic::AtomicBool::new(false)), - store, flag_tx, sdk_keys, - rate_limiter: new_rate_limiter(), session_key, connected_clients: Arc::new(DashMap::new()), webhook_client, + setup_token, }; // ── Middleware stack ─────────────────────────────────────────────────────── @@ -449,7 +387,7 @@ async fn main() -> Result<(), Box> { // Protected write: additionally requires admin role. // // Layer execution order for a write request (outermost → innermost): - // cors → rate_limit → csrf → require_auth → require_editor/require_admin → handler + // cors → client_ip → rate_limit → csrf → require_auth → require_editor/require_admin → handler let auth_routes = api::auth_router(); let setup_routes = api::setup_router(); @@ -511,9 +449,13 @@ async fn main() -> Result<(), Box> { .layer(middleware::from_fn(api::security_headers)) .layer(middleware::from_fn(api::csrf_protection)) .layer(middleware::from_fn_with_state( - app_state.clone(), + rate_limiters, rate_limit::rate_limit, )) + .layer(middleware::from_fn_with_state( + trusted_proxies, + client_ip::resolve_client_ip, + )) .layer(cors) .fallback_service(serve_dashboard) .with_state(app_state); @@ -542,6 +484,27 @@ async fn main() -> Result<(), Box> { Ok(()) } +/// Reads a required connection string. Release builds refuse to start without +/// it rather than quietly connecting to a local default — in a container that +/// could be a different database than the operator intended. Debug builds keep +/// the localhost default for `cargo run`. +fn connection_url(name: &str, dev_default: &str) -> Result { + match std::env::var(name) { + Ok(url) if !url.trim().is_empty() => Ok(url), + _ if cfg!(debug_assertions) => { + warn!( + variable = name, + "Not set — using the local development default" + ); + Ok(dev_default.to_string()) + } + _ => { + error!(variable = name, "Required connection setting is not set"); + Err(format!("{name} is not set")) + } + } +} + #[allow( clippy::expect_used, reason = "process startup: a kernel that will not install a signal handler is a fatal, non-recoverable condition and there is no request in flight to fail" diff --git a/server/src/rate_limit.rs b/server/src/rate_limit.rs index 0de4e9c..52fadd4 100644 --- a/server/src/rate_limit.rs +++ b/server/src/rate_limit.rs @@ -1,52 +1,665 @@ +//! Per-client rate limiting with a separate budget for each kind of endpoint. +//! +//! Clients are identified by [`ClientIp`], which only honours forwarding +//! headers from trusted proxies (see [`crate::client_ip`]). Each route class +//! has its own quota, so a burst of SDK polling cannot lock an operator out of +//! the dashboard and a password-guessing run cannot spend the SDK budget. +//! +//! The middleware runs once per HTTP request. An SSE stream is one request, so +//! only opening it is counted; events delivered on an open stream never are. + +use crate::client_ip::ClientIp; use axum::{ - extract::{ConnectInfo, State}, - http::{Request, StatusCode}, + Json, + extract::State, + http::{HeaderValue, Method, Request, StatusCode, header}, middleware::Next, - response::Response, + response::{IntoResponse, Response}, }; -use governor::{DefaultKeyedRateLimiter, Quota, RateLimiter}; -use std::{net::IpAddr, num::NonZeroU32, sync::Arc}; - -pub type IpRateLimiter = Arc>; - -/// 60 requests per minute per source IP on all API routes. -/// -/// `RATE_PER_MINUTE` is a `const`, so the `NonZeroU32` conversion is checked at -/// compile time — there is no runtime unwrap to fail. -const RATE_PER_MINUTE: NonZeroU32 = match NonZeroU32::new(60) { - Some(n) => n, - None => unreachable!(), +use governor::{DefaultKeyedRateLimiter, Quota, RateLimiter, clock::Clock}; +use std::{ + net::{IpAddr, Ipv6Addr}, + num::NonZeroU32, + sync::Arc, + time::Duration, }; -pub fn new_rate_limiter() -> IpRateLimiter { - Arc::new(RateLimiter::keyed(Quota::per_minute(RATE_PER_MINUTE))) +/// How often idle per-client entries are dropped from the limiter maps. +const EVICTION_INTERVAL: Duration = Duration::from_secs(60); + +/// The budget a request is charged to. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum RouteClass { + /// `/health`: probes from orchestrators and load balancers are never limited. + Exempt, + /// Password login and first-run setup — the credential-guessing surface. + Auth, + /// Dashboard and automation REST API. + Api, + /// SDK snapshot polling (`/flags/snapshot`). + Sdk, + /// Opening an SSE stream (`/stream`). + SseConnect, + /// Impression and event ingestion from SDKs. + Ingest, +} + +impl RouteClass { + fn name(self) -> &'static str { + match self { + RouteClass::Exempt => "exempt", + RouteClass::Auth => "auth", + RouteClass::Api => "api", + RouteClass::Sdk => "sdk", + RouteClass::SseConnect => "sse_connect", + RouteClass::Ingest => "ingest", + } + } +} + +/// Maps a request to its budget. +pub fn classify(method: &Method, path: &str) -> RouteClass { + let segments: Vec<&str> = path.split('/').filter(|s| !s.is_empty()).collect(); + match (method, segments.as_slice()) { + (_, ["health"]) => RouteClass::Exempt, + (&Method::POST, ["api", "auth", "login"]) | (_, ["api", "setup", ..]) => RouteClass::Auth, + (_, ["stream"]) => RouteClass::SseConnect, + (_, ["flags", "snapshot"]) => RouteClass::Sdk, + (&Method::POST, ["api", "environments", _, "impressions" | "events"]) => RouteClass::Ingest, + _ => RouteClass::Api, + } +} + +/// Requests per minute allowed per client for each class. `None` disables +/// limiting for that class (for deployments that limit at a gateway). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct RateLimitConfig { + pub auth: Option, + pub api: Option, + pub sdk: Option, + pub sse_connect: Option, + pub ingest: Option, +} + +impl Default for RateLimitConfig { + fn default() -> Self { + Self { + auth: NonZeroU32::new(20), + api: NonZeroU32::new(300), + sdk: NonZeroU32::new(600), + sse_connect: NonZeroU32::new(120), + ingest: NonZeroU32::new(600), + } + } +} + +impl RateLimitConfig { + /// Reads `RATE_LIMIT_{AUTH,API,SDK,SSE,INGEST}_PER_MINUTE`. Unset keeps the + /// default, `0` disables the class, anything else must be a positive integer. + pub fn from_env() -> Result { + Self::from_lookup(|name| std::env::var(name).ok()) + } + + fn from_lookup(lookup: impl Fn(&str) -> Option) -> Result { + let defaults = Self::default(); + let read = |name: &str, default: Option| match lookup(name) { + None => Ok(default), + Some(v) => v + .trim() + .parse::() + .map(NonZeroU32::new) + .map_err(|_| format!("{name} must be a non-negative integer, got {v:?}")), + }; + Ok(Self { + auth: read("RATE_LIMIT_AUTH_PER_MINUTE", defaults.auth)?, + api: read("RATE_LIMIT_API_PER_MINUTE", defaults.api)?, + sdk: read("RATE_LIMIT_SDK_PER_MINUTE", defaults.sdk)?, + sse_connect: read("RATE_LIMIT_SSE_PER_MINUTE", defaults.sse_connect)?, + ingest: read("RATE_LIMIT_INGEST_PER_MINUTE", defaults.ingest)?, + }) + } +} + +type Limiter = DefaultKeyedRateLimiter; + +/// One keyed limiter per route class. +pub struct RateLimiters { + auth: Option, + api: Option, + sdk: Option, + sse_connect: Option, + ingest: Option, +} + +impl RateLimiters { + pub fn new(config: RateLimitConfig) -> Self { + // A per-minute quota allows a burst of the whole minute's budget, then + // refills one request every 60/n seconds. + let per_minute = |n: Option| n.map(Quota::per_minute); + Self::with_quotas( + per_minute(config.auth), + per_minute(config.api), + per_minute(config.sdk), + per_minute(config.sse_connect), + per_minute(config.ingest), + ) + } + + fn with_quotas( + auth: Option, + api: Option, + sdk: Option, + sse_connect: Option, + ingest: Option, + ) -> Self { + let build = |q: Option| q.map(RateLimiter::keyed); + Self { + auth: build(auth), + api: build(api), + sdk: build(sdk), + sse_connect: build(sse_connect), + ingest: build(ingest), + } + } + + fn limiter(&self, class: RouteClass) -> Option<&Limiter> { + match class { + RouteClass::Exempt => None, + RouteClass::Auth => self.auth.as_ref(), + RouteClass::Api => self.api.as_ref(), + RouteClass::Sdk => self.sdk.as_ref(), + RouteClass::SseConnect => self.sse_connect.as_ref(), + RouteClass::Ingest => self.ingest.as_ref(), + } + } + + fn all(&self) -> impl Iterator { + [ + &self.auth, + &self.api, + &self.sdk, + &self.sse_connect, + &self.ingest, + ] + .into_iter() + .flatten() + } + + /// Charges one request to `class` for `ip`. On refusal, returns how long + /// until the next request would be accepted. + pub fn check(&self, class: RouteClass, ip: IpAddr) -> Result<(), Duration> { + let Some(limiter) = self.limiter(class) else { + return Ok(()); + }; + limiter + .check_key(&rate_key(ip)) + .map_err(|not_until| not_until.wait_time_from(limiter.clock().now())) + } + + /// Drops entries whose bucket has fully refilled — they are + /// indistinguishable from a client never seen — so the maps hold only + /// clients active within the last refill period. + pub fn evict_idle(&self) { + for limiter in self.all() { + limiter.retain_recent(); + limiter.shrink_to_fit(); + } + } + + /// Number of tracked client keys across all classes. + pub fn tracked_keys(&self) -> usize { + self.all().map(Limiter::len).sum() + } + + /// Runs [`Self::evict_idle`] in the background for the life of the process. + pub fn spawn_eviction(self: &Arc) { + let limiters = Arc::clone(self); + tokio::spawn(async move { + let mut tick = tokio::time::interval(EVICTION_INTERVAL); + loop { + tick.tick().await; + limiters.evict_idle(); + tracing::debug!( + tracked_keys = limiters.tracked_keys(), + "Rate limiter idle entries evicted" + ); + } + }); + } +} + +/// The key a client is limited under. An IPv6 client usually controls a whole +/// /64, so keying single addresses would hand it 2^64 fresh budgets (and grow +/// the map without bound); the /64 prefix is the unit it actually owns. +fn rate_key(ip: IpAddr) -> IpAddr { + match ip.to_canonical() { + IpAddr::V4(v4) => IpAddr::V4(v4), + IpAddr::V6(v6) => { + let mut segments = v6.segments(); + for host in segments.iter_mut().skip(4) { + *host = 0; + } + IpAddr::V6(Ipv6Addr::from(segments)) + } + } +} + +fn too_many_requests(wait: Duration) -> Response { + let retry_after = wait.as_secs().saturating_add(1); + let mut response = ( + StatusCode::TOO_MANY_REQUESTS, + Json(serde_json::json!({ + "error": "Too many requests. Please slow down and try again shortly.", + "retry_after_seconds": retry_after, + })), + ) + .into_response(); + response + .headers_mut() + .insert(header::RETRY_AFTER, HeaderValue::from(retry_after)); + response } pub async fn rate_limit( - State(state): State, - ConnectInfo(addr): ConnectInfo, + State(limiters): State>, + ClientIp(client_ip): ClientIp, req: Request, next: Next, -) -> Result { - // Prefer the first address in X-Forwarded-For so that rate limiting works - // correctly behind a reverse proxy. Fall back to the direct TCP peer. - let client_ip: IpAddr = req - .headers() - .get("x-forwarded-for") - .and_then(|v| v.to_str().ok()) - .and_then(|v| v.split(',').next()) - .and_then(|s| s.trim().parse().ok()) - .unwrap_or_else(|| addr.ip()); - - match state.rate_limiter.check_key(&client_ip) { - Ok(_) => Ok(next.run(req).await), - Err(_) => { +) -> Response { + let class = classify(req.method(), req.uri().path()); + match limiters.check(class, client_ip) { + Ok(()) => next.run(req).await, + Err(wait) => { tracing::warn!( client_ip = %client_ip, + class = class.name(), path = %req.uri().path(), "Rate limit exceeded" ); - Err(StatusCode::TOO_MANY_REQUESTS) + too_many_requests(wait) + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::client_ip::{TrustedProxies, resolve_client_ip}; + use axum::{ + Router, + body::Body, + extract::ConnectInfo, + middleware, + routing::{get, post}, + }; + use std::net::SocketAddr; + use tower::ServiceExt; + + fn nz(n: u32) -> Option { + NonZeroU32::new(n) + } + + fn ip(s: &str) -> IpAddr { + s.parse().unwrap() + } + + #[test] + fn classification() { + let cases = [ + (Method::GET, "/health", RouteClass::Exempt), + (Method::POST, "/api/auth/login", RouteClass::Auth), + (Method::GET, "/api/auth/me", RouteClass::Api), + (Method::POST, "/api/auth/logout", RouteClass::Api), + (Method::GET, "/api/setup/key", RouteClass::Auth), + (Method::POST, "/api/setup/complete", RouteClass::Auth), + (Method::GET, "/stream", RouteClass::SseConnect), + (Method::GET, "/flags/snapshot", RouteClass::Sdk), + ( + Method::POST, + "/api/environments/e/impressions", + RouteClass::Ingest, + ), + ( + Method::POST, + "/api/environments/e/events", + RouteClass::Ingest, + ), + (Method::GET, "/api/environments/e/events", RouteClass::Api), + (Method::GET, "/api/environments/e/flags", RouteClass::Api), + (Method::POST, "/api/projects", RouteClass::Api), + (Method::GET, "/api/health/connections", RouteClass::Api), + ]; + for (method, path, want) in cases { + assert_eq!(classify(&method, path), want, "{method} {path}"); + } + } + + #[test] + fn config_from_env_values() { + let config = RateLimitConfig::from_lookup(|name| match name { + "RATE_LIMIT_AUTH_PER_MINUTE" => Some("5".into()), + "RATE_LIMIT_INGEST_PER_MINUTE" => Some("0".into()), + _ => None, + }) + .unwrap(); + assert_eq!(config.auth, nz(5)); + assert_eq!(config.ingest, None, "0 disables the class"); + assert_eq!(config.api, RateLimitConfig::default().api); + assert!( + RateLimitConfig::from_lookup( + |n| (n == "RATE_LIMIT_API_PER_MINUTE").then(|| "lots".to_string()) + ) + .is_err() + ); + assert!( + RateLimitConfig::from_lookup( + |n| (n == "RATE_LIMIT_SDK_PER_MINUTE").then(|| "-1".to_string()) + ) + .is_err() + ); + } + + #[test] + fn budgets_are_independent_per_class_and_client() { + let limiters = RateLimiters::new(RateLimitConfig { + auth: nz(2), + api: nz(3), + sdk: nz(1), + sse_connect: nz(1), + ingest: None, + }); + let a = ip("198.51.100.1"); + let b = ip("198.51.100.2"); + assert!(limiters.check(RouteClass::Auth, a).is_ok()); + assert!(limiters.check(RouteClass::Auth, a).is_ok()); + assert!( + limiters.check(RouteClass::Auth, a).is_err(), + "auth exhausted" + ); + // Other classes and other clients are untouched. + for _ in 0..3 { + assert!(limiters.check(RouteClass::Api, a).is_ok()); + } + assert!(limiters.check(RouteClass::Api, a).is_err()); + assert!(limiters.check(RouteClass::Sdk, a).is_ok()); + assert!(limiters.check(RouteClass::SseConnect, a).is_ok()); + assert!(limiters.check(RouteClass::Auth, b).is_ok()); + // Disabled and exempt classes never refuse. + for _ in 0..1000 { + assert!(limiters.check(RouteClass::Ingest, a).is_ok()); + assert!(limiters.check(RouteClass::Exempt, a).is_ok()); + } + } + + #[test] + fn ipv6_clients_share_their_slash_64() { + let limiters = RateLimiters::new(RateLimitConfig { + auth: nz(1), + ..RateLimitConfig::default() + }); + assert!( + limiters + .check(RouteClass::Auth, ip("2001:db8:1:2::1")) + .is_ok() + ); + assert!( + limiters + .check(RouteClass::Auth, ip("2001:db8:1:2:ffff::9")) + .is_err(), + "same /64" + ); + assert!( + limiters + .check(RouteClass::Auth, ip("2001:db8:1:3::1")) + .is_ok() + ); + // IPv4-mapped IPv6 is the IPv4 client. + assert!(limiters.check(RouteClass::Auth, ip("192.0.2.1")).is_ok()); + assert!( + limiters + .check(RouteClass::Auth, ip("::ffff:192.0.2.1")) + .is_err() + ); + } + + #[test] + fn idle_entries_are_evicted() { + let fast = Quota::with_period(Duration::from_millis(5)).unwrap(); + let limiters = RateLimiters::with_quotas(Some(fast), None, None, None, None); + for i in 0..50u8 { + limiters + .check(RouteClass::Auth, IpAddr::from([198, 51, 100, i])) + .unwrap(); + } + assert_eq!(limiters.tracked_keys(), 50); + std::thread::sleep(Duration::from_millis(30)); + limiters.evict_idle(); + assert_eq!(limiters.tracked_keys(), 0, "refilled buckets are dropped"); + } + + // --- Middleware, driven through a real router --------------------------- + + fn app(trusted: &str, config: RateLimitConfig) -> Router { + let limiters = Arc::new(RateLimiters::new(config)); + let trusted = Arc::new(TrustedProxies::parse(trusted).unwrap()); + Router::new() + .route("/health", get(|| async { "OK" })) + .route("/api/auth/login", post(|| async { "login" })) + .route("/api/projects", get(|| async { "projects" })) + .route("/stream", get(|| async { "stream" })) + .route( + "/whoami", + get(|ClientIp(ip): ClientIp| async move { ip.to_string() }), + ) + .layer(middleware::from_fn_with_state(limiters, rate_limit)) + .layer(middleware::from_fn_with_state(trusted, resolve_client_ip)) + } + + async fn send( + app: &Router, + method: Method, + path: &str, + peer: &str, + xff: Option<&str>, + ) -> Response { + let mut req = Request::builder().method(method).uri(path); + if let Some(xff) = xff { + req = req.header("x-forwarded-for", xff); + } + let mut req = req.body(Body::empty()).unwrap(); + let peer: SocketAddr = format!("{peer}:40000").parse().unwrap(); + req.extensions_mut().insert(ConnectInfo(peer)); + app.clone().oneshot(req).await.unwrap() + } + + async fn body_text(response: Response) -> String { + let bytes = axum::body::to_bytes(response.into_body(), 1 << 16) + .await + .unwrap(); + String::from_utf8(bytes.to_vec()).unwrap() + } + + fn tight() -> RateLimitConfig { + RateLimitConfig { + auth: nz(2), + api: nz(3), + sdk: nz(3), + sse_connect: nz(1), + ingest: nz(3), + } + } + + #[tokio::test] + async fn spoofed_header_cannot_escape_the_budget() { + let app = app("", tight()); + // A direct client rotating X-Forwarded-For still spends one budget. + for i in 0..2 { + let r = send( + &app, + Method::POST, + "/api/auth/login", + "203.0.113.5", + Some(&format!("198.51.100.{i}")), + ) + .await; + assert_eq!(r.status(), StatusCode::OK); + } + let r = send( + &app, + Method::POST, + "/api/auth/login", + "203.0.113.5", + Some("198.51.100.99"), + ) + .await; + assert_eq!(r.status(), StatusCode::TOO_MANY_REQUESTS); + // And the header does not change who the request is attributed to. + let r = send( + &app, + Method::GET, + "/whoami", + "203.0.113.5", + Some("198.51.100.1"), + ) + .await; + assert_eq!(body_text(r).await, "203.0.113.5"); + } + + #[tokio::test] + async fn trusted_proxy_clients_get_separate_budgets() { + let app = app("10.0.0.0/8", tight()); + for client in ["198.51.100.1", "198.51.100.2"] { + for _ in 0..2 { + let r = send( + &app, + Method::POST, + "/api/auth/login", + "10.0.0.7", + Some(client), + ) + .await; + assert_eq!(r.status(), StatusCode::OK, "{client}"); + } + let r = send( + &app, + Method::POST, + "/api/auth/login", + "10.0.0.7", + Some(client), + ) + .await; + assert_eq!(r.status(), StatusCode::TOO_MANY_REQUESTS, "{client}"); + } + let r = send( + &app, + Method::GET, + "/whoami", + "10.0.0.7", + Some("1.1.1.1, 198.51.100.3, 10.0.0.9"), + ) + .await; + assert_eq!(body_text(r).await, "198.51.100.3", "multi-hop chain"); + } + + #[tokio::test] + async fn untrusted_proxy_is_limited_as_itself() { + let app = app("10.0.0.0/8", tight()); + for client in ["198.51.100.1", "198.51.100.2"] { + let r = send( + &app, + Method::POST, + "/api/auth/login", + "192.0.2.50", + Some(client), + ) + .await; + assert_eq!(r.status(), StatusCode::OK); + } + let r = send( + &app, + Method::POST, + "/api/auth/login", + "192.0.2.50", + Some("198.51.100.3"), + ) + .await; + assert_eq!(r.status(), StatusCode::TOO_MANY_REQUESTS); + } + + #[tokio::test] + async fn invalid_forwarded_header_falls_back_to_the_proxy() { + let app = app("10.0.0.0/8", tight()); + for bad in ["garbage", "", "198.51.100.1, nope"] { + let r = send(&app, Method::GET, "/whoami", "10.0.0.7", Some(bad)).await; + assert_eq!(body_text(r).await, "10.0.0.7", "{bad:?}"); + } + } + + #[tokio::test] + async fn refusal_is_a_429_with_retry_after_and_json_body() { + let app = app("", tight()); + for _ in 0..3 { + send(&app, Method::GET, "/api/projects", "203.0.113.5", None).await; + } + let r = send(&app, Method::GET, "/api/projects", "203.0.113.5", None).await; + assert_eq!(r.status(), StatusCode::TOO_MANY_REQUESTS); + let retry: u64 = r.headers()[header::RETRY_AFTER] + .to_str() + .unwrap() + .parse() + .unwrap(); + assert!((1..=61).contains(&retry), "retry-after {retry}"); + let body: serde_json::Value = serde_json::from_str(&body_text(r).await).unwrap(); + assert_eq!(body["retry_after_seconds"], retry); + assert!(body["error"].is_string()); + } + + #[tokio::test] + async fn classes_do_not_share_budgets_through_the_middleware() { + let app = app("", tight()); + for _ in 0..3 { + send(&app, Method::GET, "/api/projects", "203.0.113.5", None).await; + } + assert_eq!( + send(&app, Method::GET, "/api/projects", "203.0.113.5", None) + .await + .status(), + StatusCode::TOO_MANY_REQUESTS + ); + assert_eq!( + send(&app, Method::POST, "/api/auth/login", "203.0.113.5", None) + .await + .status(), + StatusCode::OK + ); + assert_eq!( + send(&app, Method::GET, "/stream", "203.0.113.5", None) + .await + .status(), + StatusCode::OK + ); + assert_eq!( + send(&app, Method::GET, "/stream", "203.0.113.5", None) + .await + .status(), + StatusCode::TOO_MANY_REQUESTS, + "one SSE connection per minute in this config" + ); + } + + #[tokio::test] + async fn health_checks_are_never_limited() { + let app = app("", tight()); + for _ in 0..3 { + send(&app, Method::GET, "/api/projects", "203.0.113.5", None).await; + } + for _ in 0..500 { + assert_eq!( + send(&app, Method::GET, "/health", "203.0.113.5", None) + .await + .status(), + StatusCode::OK + ); } } } diff --git a/server/src/scheduler.rs b/server/src/scheduler.rs index 9ed7c50..4295bbd 100644 --- a/server/src/scheduler.rs +++ b/server/src/scheduler.rs @@ -110,7 +110,6 @@ mod tests { use super::*; use crate::state::AppState; use axum_extra::extract::cookie::Key; - use checkgate_core::store::FlagStore; use dashmap::DashMap; use serde_json::json; use std::sync::Arc; @@ -158,13 +157,12 @@ mod tests { redis_conn: redis_client.get_connection_manager().await.unwrap(), resync_pending: Arc::new(std::sync::atomic::AtomicBool::new(false)), redis_client, - store: Arc::new(FlagStore::new()), flag_tx: broadcast::channel(256).0, sdk_keys: Arc::new(RwLock::new(vec![])), - rate_limiter: crate::rate_limit::new_rate_limiter(), session_key: Key::generate(), connected_clients: Arc::new(DashMap::new()), webhook_client: reqwest::Client::new(), + setup_token: None, }; tokio::time::timeout(Duration::from_secs(5), execute_due(&state)) .await diff --git a/server/src/setup.rs b/server/src/setup.rs new file mode 100644 index 0000000..13cd979 --- /dev/null +++ b/server/src/setup.rs @@ -0,0 +1,198 @@ +//! First-run ownership: the one-time setup token. +//! +//! Until setup completes, `/api/setup/*` creates the first workspace admin, so +//! whoever reaches a fresh installation first would otherwise own it. Those +//! routes therefore require a setup token in the `X-Checkgate-Setup-Token` +//! header — never a query parameter, so it cannot leak into access logs. +//! +//! The token comes from one of two places: +//! +//! - `SETUP_TOKEN` — chosen by the operator. Every instance must share it. +//! - Otherwise, each instance generates a random token on boot while setup is +//! incomplete, writes it to `SETUP_TOKEN_FILE` (mode 0600) and stores only +//! its SHA-256 in `settings`, so any instance accepts any generated token. +//! The token itself is never logged. +//! +//! Completing setup deletes every stored token hash in the same transaction +//! that marks setup complete. + +use crate::state::AppState; +use axum::http::{HeaderMap, StatusCode}; +use constant_time_eq::constant_time_eq; +use rand::RngExt as _; +use std::path::PathBuf; +use std::sync::Arc; +use tracing::{error, info, warn}; + +pub const SETUP_TOKEN_HEADER: &str = "x-checkgate-setup-token"; + +/// Shortest operator-chosen token accepted. Setup grants full admin rights. +const MIN_TOKEN_LEN: usize = 16; + +/// `settings` key prefix for generated token hashes. +const TOKEN_KEY_PREFIX: &str = "setup_token:"; + +/// Key for the transaction-scoped advisory lock that serializes setup across +/// every server instance sharing the database. +pub const SETUP_ADVISORY_LOCK: i64 = 0x636b_6774_5f73_6574; // "ckgt_set" + +/// Reads `SETUP_TOKEN`. Unset or empty means "generate one per instance". +pub fn configured_token() -> Result>, String> { + match std::env::var("SETUP_TOKEN") { + Ok(token) if !token.trim().is_empty() => { + let token = token.trim(); + if token.len() < MIN_TOKEN_LEN { + return Err(format!( + "SETUP_TOKEN must be at least {MIN_TOKEN_LEN} characters" + )); + } + Ok(Some(Arc::from(token))) + } + _ => Ok(None), + } +} + +fn token_file() -> PathBuf { + std::env::var_os("SETUP_TOKEN_FILE") + .map(PathBuf::from) + .unwrap_or_else(|| PathBuf::from("checkgate-setup-token")) +} + +pub(crate) async fn is_setup_complete<'e>( + db: impl sqlx::PgExecutor<'e>, +) -> Result { + Ok( + sqlx::query_scalar::<_, String>("SELECT value FROM settings WHERE key = 'setup_complete'") + .fetch_optional(db) + .await? + .is_some_and(|v| v == "true"), + ) +} + +/// Startup step: make sure a fresh installation can be claimed by its +/// operator, and only by its operator. +pub async fn prepare(db: &sqlx::PgPool, configured: Option<&str>) -> Result<(), String> { + let complete = is_setup_complete(db) + .await + .map_err(|e| format!("failed to read setup state: {e}"))?; + let path = token_file(); + + if complete { + // Nothing to claim: a token file left from before setup is just a + // stale secret on disk. + if path.exists() { + match std::fs::remove_file(&path) { + Ok(()) => info!(path = %path.display(), "Removed stale setup token file"), + Err(e) => { + warn!(path = %path.display(), error = %e, "Could not remove stale setup token file") + } + } + } + return Ok(()); + } + + if configured.is_some() { + info!("Setup is not complete — the setup wizard requires the SETUP_TOKEN value"); + return Ok(()); + } + + let mut bytes = [0u8; 32]; + rand::rng().fill(&mut bytes); + let token: String = bytes.iter().map(|b| format!("{b:02x}")).collect(); + + write_token_file(&path, &token).map_err(|e| { + format!( + "setup is not complete and the setup token could not be written to {} ({e}); \ + set SETUP_TOKEN, or SETUP_TOKEN_FILE to a writable path", + path.display() + ) + })?; + + sqlx::query("INSERT INTO settings (key, value) VALUES ($1, NOW()::text)") + .bind(format!( + "{TOKEN_KEY_PREFIX}{}", + crate::auth::hash_token(&token) + )) + .execute(db) + .await + .map_err(|e| format!("failed to store setup token: {e}"))?; + + info!( + path = %path.display(), + "Setup is not complete — a one-time setup token was written to this file; \ + enter it in the setup wizard" + ); + Ok(()) +} + +fn write_token_file(path: &std::path::Path, token: &str) -> std::io::Result<()> { + use std::io::Write as _; + let mut options = std::fs::OpenOptions::new(); + options.write(true).create(true).truncate(true); + #[cfg(unix)] + { + use std::os::unix::fs::OpenOptionsExt as _; + options.mode(0o600); + } + let mut file = options.open(path)?; + // `mode` only applies on creation; tighten a file that already existed. + #[cfg(unix)] + { + use std::os::unix::fs::PermissionsExt as _; + file.set_permissions(std::fs::Permissions::from_mode(0o600))?; + } + file.write_all(token.as_bytes())?; + file.write_all(b"\n") +} + +/// Accepts the request only if it carries a valid setup token. +pub(crate) async fn verify(state: &AppState, headers: &HeaderMap) -> Result<(), StatusCode> { + let presented = headers + .get(SETUP_TOKEN_HEADER) + .and_then(|v| v.to_str().ok()) + .map(str::trim) + .filter(|v| !v.is_empty()) + .ok_or(StatusCode::UNAUTHORIZED)?; + + let valid = match &state.setup_token { + Some(expected) => constant_time_eq(presented.as_bytes(), expected.as_bytes()), + // Looked up by hash, so the comparison leaks nothing about the token. + None => { + sqlx::query_scalar::<_, bool>("SELECT EXISTS(SELECT 1 FROM settings WHERE key = $1)") + .bind(format!( + "{TOKEN_KEY_PREFIX}{}", + crate::auth::hash_token(presented) + )) + .fetch_one(&state.db) + .await + .map_err(|e| { + error!(error = %e, "DB error verifying setup token"); + StatusCode::INTERNAL_SERVER_ERROR + })? + } + }; + if valid { + Ok(()) + } else { + warn!("Rejected setup request: invalid setup token"); + Err(StatusCode::UNAUTHORIZED) + } +} + +/// Deletes every generated token hash. Runs inside the setup transaction. +pub(crate) async fn revoke_all<'e>(db: impl sqlx::PgExecutor<'e>) -> Result<(), sqlx::Error> { + sqlx::query("DELETE FROM settings WHERE starts_with(key, 'setup_token:')") + .execute(db) + .await + .map(|_| ()) +} + +/// Best-effort removal of this instance's token file once setup is done. +pub(crate) fn remove_token_file() { + let path = token_file(); + if path.exists() + && let Err(e) = std::fs::remove_file(&path) + { + warn!(path = %path.display(), error = %e, "Could not remove setup token file"); + } +} diff --git a/server/src/state.rs b/server/src/state.rs index 281181c..8609298 100644 --- a/server/src/state.rs +++ b/server/src/state.rs @@ -1,7 +1,5 @@ -use crate::rate_limit::IpRateLimiter; use axum::extract::FromRef; use axum_extra::extract::cookie::Key; -use checkgate_core::store::FlagStore; use dashmap::DashMap; use redis::aio::ConnectionManager; use sqlx::PgPool; @@ -29,8 +27,8 @@ pub struct ConnectedClient { pub environment_id: Option, /// Human-readable SDK key name resolved at connect time. pub sdk_key_name: Option, - /// Stringified client IP address. - pub client_ip: String, + /// Client address, as resolved by `crate::client_ip`. + pub client_ip: std::net::IpAddr, /// Unix timestamp (seconds) when the connection was established. pub connected_at: i64, } @@ -45,20 +43,21 @@ pub struct AppState { /// Set while a publish has failed and a `RESYNC` broadcast is still being /// retried (see `flags::publish_update`). pub resync_pending: Arc, - pub store: Arc, /// Broadcast channel: the Redis subscriber pushes payloads here; /// each SSE handler subscribes instead of opening its own Redis connection. pub flag_tx: broadcast::Sender, /// Local key-management cache. Authentication always checks PostgreSQL. pub sdk_keys: Arc>>, - /// Per-IP rate limiter applied to all API routes. - pub rate_limiter: IpRateLimiter, /// Encryption key for `PrivateCookieJar`. Derived from `SESSION_SECRET` env var. pub session_key: Key, - /// Live SSE connections keyed by connection_id. Per-instance only. + /// Live SSE connections keyed by connection_id. Per-instance only: each + /// server reports its own clients on the SDK health page. pub connected_clients: Arc>, /// Shared HTTP client for outbound webhook delivery. pub webhook_client: reqwest::Client, + /// Operator-configured `SETUP_TOKEN`; `None` means per-instance generated + /// tokens, verified by hash against `settings` (see `crate::setup`). + pub setup_token: Option>, } /// Allows `PrivateCookieJar` extractors to pull the key out of `AppState` automatically. diff --git a/server/src/stream.rs b/server/src/stream.rs index cbdbbd3..c214e17 100644 --- a/server/src/stream.rs +++ b/server/src/stream.rs @@ -1,10 +1,11 @@ use crate::auth::{AuthContext, get_session_claims}; +use crate::client_ip::ClientIp; use crate::state::SdkKeyEntry; use crate::state::{AppState, ConnectedClient}; use axum::http::{HeaderName, HeaderValue}; use axum::{ Json, - extract::{ConnectInfo, State}, + extract::State, http::StatusCode, response::sse::{Event, KeepAlive, Sse}, }; @@ -13,7 +14,7 @@ use futures_util::stream::Stream; use rand::RngExt as _; use sqlx::Row; use std::collections::HashSet; -use std::{convert::Infallible, net::SocketAddr, sync::Arc, time::Duration}; +use std::{convert::Infallible, sync::Arc, time::Duration}; use tokio::sync::broadcast; use tracing::{info, warn}; @@ -41,13 +42,11 @@ fn random_connection_id() -> String { reason = "seconds since the Unix epoch; wrapping i64 would require a clock set beyond the year 292 billion" )] pub async fn sse_handler( - ConnectInfo(addr): ConnectInfo, + ClientIp(client_ip): ClientIp, State(state): State, ctx: AuthContext, req: axum::http::Request, ) -> Result>>, StatusCode> { - let client_ip = addr.ip(); - let sdk_key = req.extensions().get::(); let environment_id = sdk_key.and_then(|key| key.environment_id.clone()); let sdk_key_name = sdk_key.map(|key| key.name.clone()); @@ -146,7 +145,7 @@ pub async fn sse_handler( connection_id: connection_id.clone(), environment_id: environment_id.clone(), sdk_key_name: sdk_key_name.clone(), - client_ip: client_ip.to_string(), + client_ip, connected_at, }, ); diff --git a/server/tests/common/mod.rs b/server/tests/common/mod.rs new file mode 100644 index 0000000..6de0b19 --- /dev/null +++ b/server/tests/common/mod.rs @@ -0,0 +1,327 @@ +//! Shared harness for server integration tests that spawn the real binary. +//! +//! Unlike `integration.rs` and `e2e_sse.rs`, which reset the `public` schema of +//! the database they are given, these tests each create a database of their +//! own next to it, so tests in one binary can run in parallel. +//! +//! Requires `CHECKGATE_TEST_DATABASE_URL` and `CHECKGATE_TEST_REDIS_URL`; the +//! database role must be allowed to `CREATE DATABASE`. Without them the tests +//! skip, unless `CHECKGATE_REQUIRE_INTEGRATION` is set. +#![allow( + dead_code, + reason = "each test binary compiles this module and uses a different subset of it" +)] + +use serde_json::{Value, json}; +use std::path::{Path, PathBuf}; +use std::process::{Child, Command, Stdio}; +use std::time::Duration; + +pub const SETUP_TOKEN: &str = "test-setup-token-0123456789abcdef"; +pub const ADMIN_EMAIL: &str = "admin@acme.test"; +pub const ADMIN_PASSWORD: &str = "supersecret1"; +const SESSION_SECRET: &str = "test-secret-0123456789-0123456789-0123456789-0123456789"; + +pub struct TestEnv { + pub admin_db_url: String, + pub redis_url: String, +} + +pub fn test_env() -> Option { + match ( + std::env::var("CHECKGATE_TEST_DATABASE_URL"), + std::env::var("CHECKGATE_TEST_REDIS_URL"), + ) { + (Ok(admin_db_url), Ok(redis_url)) => Some(TestEnv { + admin_db_url, + redis_url, + }), + _ => { + assert!( + std::env::var("CHECKGATE_REQUIRE_INTEGRATION").is_err(), + "CHECKGATE_REQUIRE_INTEGRATION is set but CHECKGATE_TEST_DATABASE_URL / \ + CHECKGATE_TEST_REDIS_URL are not" + ); + eprintln!( + "SKIP: set CHECKGATE_TEST_DATABASE_URL and CHECKGATE_TEST_REDIS_URL to run server integration tests" + ); + None + } + } +} + +impl TestEnv { + /// Creates (or recreates) an empty database named `name` and returns its URL. + pub async fn fresh_database(&self, name: &str) -> String { + let pool = sqlx::PgPool::connect(&self.admin_db_url) + .await + .expect("connect to test database"); + sqlx::query(&format!("DROP DATABASE IF EXISTS \"{name}\" WITH (FORCE)")) + .execute(&pool) + .await + .expect("drop test database"); + sqlx::query(&format!("CREATE DATABASE \"{name}\"")) + .execute(&pool) + .await + .expect("create test database (the role needs CREATEDB)"); + pool.close().await; + let mut url = reqwest::Url::parse(&self.admin_db_url).expect("database URL"); + url.set_path(&format!("/{name}")); + url.to_string() + } +} + +/// Kills the spawned server when dropped (including on panic). +pub struct Server { + pub base: String, + /// Working directory; a generated setup token file lands here. + pub dir: PathBuf, + child: Child, +} + +impl Drop for Server { + fn drop(&mut self) { + let _ = self.child.kill(); + let _ = self.child.wait(); + } +} + +pub fn free_port() -> u16 { + std::net::TcpListener::bind("127.0.0.1:0") + .unwrap() + .local_addr() + .unwrap() + .port() +} + +impl Server { + /// Spawns the server binary and waits until `/health` answers. + /// `extra_env` overrides the defaults; a value of `None` removes a variable. + pub async fn spawn(db_url: &str, redis_url: &str, extra_env: &[(&str, Option<&str>)]) -> Self { + let port = free_port(); + let dir = std::env::temp_dir().join(format!("checkgate-test-{port}")); + // A directory left by an earlier run on the same port is stale. + let _ = std::fs::remove_dir_all(&dir); + Self::spawn_in(&dir, port, db_url, redis_url, extra_env).await + } + + /// Like [`Server::spawn`], reusing `dir` (to restart an instance) and + /// appending its stdout — the JSON log — to `dir/server.log`. + pub async fn spawn_in( + dir: &Path, + port: u16, + db_url: &str, + redis_url: &str, + extra_env: &[(&str, Option<&str>)], + ) -> Self { + let child = command(dir, port, db_url, redis_url, extra_env) + .spawn() + .expect("spawn server binary"); + let server = Server { + base: format!("http://127.0.0.1:{port}"), + dir: dir.to_path_buf(), + child, + }; + server.wait_healthy().await; + server + } + + /// Restarts the process in place: same port, directory and environment. + pub async fn restart( + self, + db_url: &str, + redis_url: &str, + extra_env: &[(&str, Option<&str>)], + ) -> Self { + let port: u16 = self.base.rsplit(':').next().unwrap().parse().unwrap(); + let dir = self.dir.clone(); + drop(self); + Self::spawn_in(&dir, port, db_url, redis_url, extra_env).await + } + + pub fn log(&self) -> String { + std::fs::read_to_string(self.dir.join("server.log")).unwrap_or_default() + } + + pub async fn wait_healthy(&self) { + let client = reqwest::Client::new(); + for _ in 0..120 { + if let Ok(resp) = client.get(format!("{}/health", self.base)).send().await + && resp.status().is_success() + { + return; + } + tokio::time::sleep(Duration::from_millis(250)).await; + } + panic!("server did not become healthy at {}", self.base); + } + + pub fn url(&self, path: &str) -> String { + format!("{}{}", self.base, path) + } +} + +fn command( + dir: &Path, + port: u16, + db_url: &str, + redis_url: &str, + extra_env: &[(&str, Option<&str>)], +) -> Command { + std::fs::create_dir_all(dir).unwrap(); + let log = std::fs::OpenOptions::new() + .create(true) + .append(true) + .open(dir.join("server.log")) + .unwrap(); + let mut cmd = Command::new(env!("CARGO_BIN_EXE_server")); + cmd.env("DATABASE_URL", db_url) + .env("REDIS_URL", redis_url) + .env("PORT", port.to_string()) + .env("SESSION_SECRET", SESSION_SECRET) + .env("COOKIE_SECURE", "false") + .env("SETUP_TOKEN", SETUP_TOKEN) + .env("DB_MAX_CONNECTIONS", "5") + .env("PUBLIC_DIR", dir) + .env("RUST_LOG", "info") + .env_remove("TRUSTED_PROXIES") + .env_remove("SETUP_TOKEN_FILE") + .current_dir(dir) + .stdout(Stdio::from(log)) + .stderr(Stdio::inherit()); + for (key, value) in extra_env { + match value { + Some(value) => cmd.env(key, value), + None => cmd.env_remove(key), + }; + } + cmd +} + +/// Runs the server with a configuration it must refuse, and returns its log. +pub async fn expect_startup_failure( + db_url: &str, + redis_url: &str, + extra_env: &[(&str, Option<&str>)], +) -> String { + let port = free_port(); + let dir = std::env::temp_dir().join(format!("checkgate-test-{port}")); + let _ = std::fs::remove_dir_all(&dir); + let mut child = command(&dir, port, db_url, redis_url, extra_env) + .spawn() + .expect("spawn server binary"); + for _ in 0..240 { + if let Some(status) = child.try_wait().unwrap() { + assert!(!status.success(), "server exited successfully"); + return std::fs::read_to_string(dir.join("server.log")).unwrap_or_default(); + } + tokio::time::sleep(Duration::from_millis(250)).await; + } + let _ = child.kill(); + panic!("server kept running with an invalid configuration"); +} + +pub fn session_client() -> reqwest::Client { + reqwest::Client::builder() + .cookie_store(true) + .build() + .unwrap() +} + +pub fn setup_body(email: &str, password: &str) -> Value { + json!({ + "workspace_name": "Acme", + "project_name": "Web", + "name": "Admin", + "email": email, + "password": password, + }) +} + +/// Sends `POST /api/setup/complete` with the given token (if any). +pub async fn post_setup( + client: &reqwest::Client, + base: &str, + token: Option<&str>, + body: &Value, +) -> reqwest::Response { + let mut req = client + .post(format!("{base}/api/setup/complete")) + .header("X-Checkgate-Request", "true") + .json(body); + if let Some(token) = token { + req = req.header("X-Checkgate-Setup-Token", token); + } + req.send().await.unwrap() +} + +/// Completes first-run setup. Returns a logged-in admin client, the seeded +/// SDK key and its (Production) environment id. +pub async fn complete_setup(server: &Server) -> (reqwest::Client, String, String) { + let key: Value = reqwest::Client::new() + .get(server.url("/api/setup/key")) + .header("X-Checkgate-Setup-Token", SETUP_TOKEN) + .send() + .await + .unwrap() + .json() + .await + .unwrap(); + let admin = session_client(); + let r = post_setup( + &admin, + &server.base, + Some(SETUP_TOKEN), + &setup_body(ADMIN_EMAIL, ADMIN_PASSWORD), + ) + .await; + assert_eq!(r.status(), 200, "setup/complete"); + ( + admin, + key["key"].as_str().unwrap().to_string(), + key["environment_id"].as_str().unwrap().to_string(), + ) +} + +/// Sends a JSON request, asserts the status and returns the parsed body. +pub async fn request( + client: &reqwest::Client, + method: &str, + url: &str, + body: Option, + expected: u16, +) -> Value { + let mut req = client + .request(method.parse().unwrap(), url) + .header("X-Checkgate-Request", "true"); + if let Some(body) = body { + req = req.json(&body); + } + let response = req.send().await.unwrap(); + let status = response.status().as_u16(); + let text = response.text().await.unwrap(); + assert_eq!(status, expected, "{method} {url}: {text}"); + serde_json::from_str(&text).unwrap_or(Value::Null) +} + +pub fn bearer_client(token: &str) -> reqwest::Client { + let mut headers = reqwest::header::HeaderMap::new(); + headers.insert("Authorization", format!("Bearer {token}").parse().unwrap()); + reqwest::Client::builder() + .default_headers(headers) + .build() + .unwrap() +} + +pub async fn login(server: &Server, email: &str, password: &str) -> reqwest::Client { + let client = session_client(); + request( + &client, + "POST", + &server.url("/api/auth/login"), + Some(json!({ "email": email, "password": password })), + 200, + ) + .await; + client +} diff --git a/server/tests/e2e_sse.rs b/server/tests/e2e_sse.rs index bdd3d41..45c99ed 100644 --- a/server/tests/e2e_sse.rs +++ b/server/tests/e2e_sse.rs @@ -63,6 +63,9 @@ impl Drop for ServerGuard { } } +/// First-run setup token the spawned server is configured with. +const SETUP_TOKEN: &str = "e2e-setup-token-0123456789"; + fn free_port() -> u16 { std::net::TcpListener::bind("127.0.0.1:0") .unwrap() @@ -254,6 +257,7 @@ async fn sse_live_push_and_local_eval() { "e2e-secret-0123456789-0123456789-0123456789-0123456789", ) .env("COOKIE_SECURE", "false") + .env("SETUP_TOKEN", SETUP_TOKEN) .env("PUBLIC_DIR", public_dir.to_str().unwrap()) .env("RUST_LOG", "warn") .stdout(Stdio::null()) @@ -272,6 +276,7 @@ async fn sse_live_push_and_local_eval() { // Grab the seeded SDK key + env, complete setup. let key_body: Value = anon .get(format!("{base}/api/setup/key")) + .header("X-Checkgate-Setup-Token", SETUP_TOKEN) .send() .await .unwrap() @@ -282,6 +287,7 @@ async fn sse_live_push_and_local_eval() { let env = key_body["environment_id"].as_str().unwrap().to_string(); session.post(format!("{base}/api/setup/complete")) .header("X-Checkgate-Request", "true") + .header("X-Checkgate-Setup-Token", SETUP_TOKEN) .json(&json!({ "workspace_name": "E2E", "project_name": "P", "name": "A", "email": "a@e.test", "password": "supersecret1" })) .send().await.unwrap(); // SDK keys can't manage flags, so the "dashboard" side uses an admin PAT. diff --git a/server/tests/environment_isolation.rs b/server/tests/environment_isolation.rs new file mode 100644 index 0000000..4885dbc --- /dev/null +++ b/server/tests/environment_isolation.rs @@ -0,0 +1,490 @@ +#![allow( + clippy::unwrap_used, + clippy::expect_used, + clippy::panic, + clippy::indexing_slicing, + clippy::arithmetic_side_effects, + reason = "test code: a panic here is an assertion failure, not a DoS" +)] +//! Flags with the same key in different environments never leak into each +//! other, on any server path an SDK or the dashboard uses: REST reads, the +//! poll snapshot, SSE bootstrap, live SSE deltas (local and Redis-delivered +//! from another instance), deletes, recreates and server restarts. +//! +//! Each SDK-side store is scoped to one environment, exactly as in the SDKs, +//! and evaluated with the shared core so targeting rules, weighted variants +//! and prerequisites are checked end to end. + +mod common; + +use checkgate_core::evaluator::{Flag, FlagValue, UserContext, evaluate_variant}; +use checkgate_core::store::FlagStore; +use common::*; +use futures_util::StreamExt; +use serde_json::{Value, json}; +use std::collections::HashMap; +use std::time::Duration; +use tokio::sync::mpsc; + +const KEY: &str = "checkout"; + +type SseEvent = (String, String); + +/// Connects to `/stream` with an SDK key and forwards parsed frames. +fn open_stream(base: &str, sdk_key: &str) -> mpsc::UnboundedReceiver { + let (tx, rx) = mpsc::unbounded_channel(); + let url = format!("{base}/stream"); + let key = sdk_key.to_string(); + tokio::spawn(async move { + let resp = reqwest::Client::new() + .get(&url) + .bearer_auth(&key) + .send() + .await + .expect("open sse"); + assert_eq!(resp.status(), 200); + let mut stream = resp.bytes_stream(); + let mut buf = String::new(); + let (mut event, mut data) = (String::new(), String::new()); + while let Some(Ok(chunk)) = stream.next().await { + buf.push_str(&String::from_utf8_lossy(&chunk)); + while let Some(nl) = buf.find('\n') { + let line = buf[..nl].trim_end_matches('\r').to_string(); + buf.drain(..=nl); + if line.is_empty() { + if !event.is_empty() || !data.is_empty() { + let _ = tx.send((std::mem::take(&mut event), std::mem::take(&mut data))); + } + } else if let Some(v) = line.strip_prefix("event:") { + event = v.trim().to_string(); + } else if let Some(v) = line.strip_prefix("data:") { + data.push_str(v.trim()); + } + } + } + }); + rx +} + +/// An SDK's view of one environment: its stream and its local store. +struct Sdk { + env_id: String, + rx: mpsc::UnboundedReceiver, + store: FlagStore, +} + +impl Sdk { + async fn connect(base: &str, sdk_key: &str, env_id: &str) -> Self { + let mut sdk = Sdk { + env_id: env_id.to_string(), + rx: open_stream(base, sdk_key), + store: FlagStore::new(), + }; + let connected = sdk.next_event().await; + assert_eq!(connected.0, "connected"); + assert_eq!( + serde_json::from_str::(&connected.1).unwrap()["environment_id"], + env_id + ); + // Apply the bootstrap replay up to `ready`. + loop { + let (event, data) = sdk.next_event().await; + if event == "ready" { + break; + } + sdk.apply(&event, &data); + } + sdk + } + + async fn next_event(&mut self) -> SseEvent { + tokio::time::timeout(Duration::from_secs(10), self.rx.recv()) + .await + .expect("SSE event in time") + .expect("SSE stream open") + } + + /// Applies an `update` frame, asserting it belongs to this environment. + /// Returns the flag key it touched. + fn apply(&self, event: &str, data: &str) -> Option { + if event != "update" { + return None; + } + let msg: Value = serde_json::from_str(data).unwrap(); + assert_eq!( + msg["env_id"], self.env_id, + "an SDK only ever receives its own environment's events: {data}" + ); + match msg["type"].as_str() { + Some("UPSERT") => { + let flag: Flag = serde_json::from_value(msg["flag"].clone()).unwrap(); + let key = flag.key.clone(); + self.store.upsert_flag(flag); + Some(key) + } + Some("DELETE") => { + let key = msg["key"].as_str().unwrap().to_string(); + self.store.delete_flag(&key); + Some(key) + } + _ => None, + } + } + + /// Applies events until one touches `key`; returns every key touched. + async fn until(&mut self, key: &str) -> Vec { + let mut touched = Vec::new(); + loop { + let (event, data) = self.next_event().await; + if let Some(k) = self.apply(&event, &data) { + touched.push(k.clone()); + if k == key { + return touched; + } + } + } + } + + fn eval(&self, email: &str) -> Option<(bool, FlagValue)> { + let flag = self.store.get_flag(KEY)?; + let ctx = UserContext { + key: "user-1".into(), + attributes: HashMap::from([("email".to_string(), email.to_string())]), + }; + let r = evaluate_variant(&flag, &ctx, &self.store); + Some((r.enabled, r.value)) + } +} + +fn s(v: &str) -> FlagValue { + FlagValue::Str(v.into()) +} + +struct Fixture { + admin: reqwest::Client, + keys: [String; 3], + envs: [String; 3], +} + +impl Fixture { + fn flags_url(&self, server: &Server, env: usize) -> String { + server.url(&format!("/api/environments/{}/flags", self.envs[env])) + } + + /// Bumps a per-environment marker flag. Events on one instance are + /// delivered in publish order, so once an SDK sees its marker it has + /// seen every earlier event meant for it. + async fn marker(&self, server: &Server, env: usize, n: u32) { + request( + &self.admin, + "POST", + &self.flags_url(server, env), + Some(json!({ "key": "marker", "is_enabled": true, "flag_type": "boolean", "rules": [], "description": n.to_string() })), + 200, + ) + .await; + } +} + +/// Environments: 0 = Production (seeded), 1 = a second environment in the same +/// project, 2 = an environment in another project. All three define `checkout` +/// and `gate` with different values. +async fn fixture(server: &Server, db: &str) -> Fixture { + let (admin, prod_key, prod_env) = complete_setup(server).await; + let pool = sqlx::PgPool::connect(db).await.unwrap(); + let project: String = + sqlx::query_scalar("SELECT project_id::text FROM environments WHERE id = $1::uuid") + .bind(&prod_env) + .fetch_one(&pool) + .await + .unwrap(); + pool.close().await; + let other_project = request( + &admin, + "POST", + &server.url("/api/projects"), + Some(json!({ "name": "Other" })), + 200, + ) + .await["id"] + .as_str() + .unwrap() + .to_string(); + + let mut envs = vec![prod_env]; + let mut keys = vec![prod_key]; + for (project, slug) in [(&project, "iso-two"), (&other_project, "iso-three")] { + let env = request( + &admin, + "POST", + &server.url(&format!("/api/projects/{project}/environments")), + Some(json!({ "name": slug, "slug": slug })), + 200, + ) + .await["id"] + .as_str() + .unwrap() + .to_string(); + let key = request( + &admin, + "POST", + &server.url(&format!("/api/projects/{project}/keys")), + Some(json!({ "name": slug, "environment_id": env })), + 200, + ) + .await["key"] + .as_str() + .unwrap() + .to_string(); + envs.push(env); + keys.push(key); + } + let f = Fixture { + admin, + keys: keys.try_into().unwrap(), + envs: envs.try_into().unwrap(), + }; + + let gate = |enabled: bool| json!({ "key": "gate", "is_enabled": enabled, "flag_type": "boolean", "rules": [] }); + let checkout = [ + // 0: targeting rule + prerequisite on an enabled gate. + json!({ + "key": KEY, "is_enabled": true, "flag_type": "string", + "default_value": "alpha", "disabled_value": "alpha-off", + "rules": [{ "attribute": "email", "operator": "ends_with", "values": ["@vip.test"], "variant": "alpha-vip" }], + "prerequisites": [{ "flag_key": "gate" }], + }), + // 1: weighted variant, same prerequisite. + json!({ + "key": KEY, "is_enabled": true, "flag_type": "string", + "default_value": "beta", "disabled_value": "beta-off", + "variants": [{ "weight": 1, "value": "beta-weighted" }], + "rules": [], "prerequisites": [{ "flag_key": "gate" }], + }), + // 2: same prerequisite, but this environment's `gate` is off — the + // prerequisite must resolve against this environment's own `gate`. + json!({ + "key": KEY, "is_enabled": true, "flag_type": "string", + "default_value": "gamma", "disabled_value": "gamma-off", + "rules": [], "prerequisites": [{ "flag_key": "gate" }], + }), + ]; + for (i, body) in checkout.into_iter().enumerate() { + request( + &f.admin, + "POST", + &f.flags_url(server, i), + Some(gate(i != 2)), + 200, + ) + .await; + request(&f.admin, "POST", &f.flags_url(server, i), Some(body), 200).await; + } + f +} + +/// What each environment's `checkout` evaluates to for a regular and a VIP user. +fn expected_initial() -> [Option<[(bool, FlagValue); 2]>; 3] { + [ + Some([(true, s("alpha")), (true, s("alpha-vip"))]), + Some([(true, s("beta-weighted")), (true, s("beta-weighted"))]), + Some([(false, s("gamma-off")), (false, s("gamma-off"))]), + ] +} + +fn assert_evals(sdks: &[Sdk], expected: &[Option<[(bool, FlagValue); 2]>; 3], when: &str) { + for (i, sdk) in sdks.iter().enumerate() { + let got = sdk + .eval("someone@acme.test") + .map(|regular| [regular, sdk.eval("boss@vip.test").unwrap()]); + assert_eq!(got, expected[i], "environment {i} {when}"); + } +} + +async fn snapshot(server: &Server, key: &str) -> (String, Vec) { + let r = bearer_client(key) + .get(server.url("/flags/snapshot")) + .send() + .await + .unwrap(); + assert_eq!(r.status(), 200); + let env = r.headers()["x-checkgate-environment-id"] + .to_str() + .unwrap() + .to_string(); + (env, r.json().await.unwrap()) +} + +fn snapshot_default(flags: &[Value]) -> Option { + flags + .iter() + .find(|f| f["key"] == KEY) + .map(|f| f["default_value"].clone()) +} + +#[tokio::test] +async fn identical_flag_keys_stay_isolated_per_environment() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_env_isolation").await; + let server = Server::spawn(&db, &env.redis_url, &[]).await; + let f = fixture(&server, &db).await; + + // REST reads and poll snapshots return each environment's own row. + for (i, want) in ["alpha", "beta", "gamma"].into_iter().enumerate() { + let flag = request( + &f.admin, + "GET", + &format!("{}/{KEY}", f.flags_url(&server, i)), + None, + 200, + ) + .await; + assert_eq!(flag["default_value"], want, "REST env {i}"); + let (header_env, flags) = snapshot(&server, &f.keys[i]).await; + assert_eq!(header_env, f.envs[i]); + assert_eq!( + snapshot_default(&flags), + Some(json!(want)), + "snapshot env {i}" + ); + } + + // SSE bootstrap: each SDK store holds only its environment's flags. + let mut sdks = Vec::new(); + for i in 0..3 { + sdks.push(Sdk::connect(&server.base, &f.keys[i], &f.envs[i]).await); + } + assert_evals(&sdks, &expected_initial(), "after bootstrap"); + + // Updating environment 0 reaches only environment 0. + request( + &f.admin, + "PATCH", + &format!("{}/{KEY}", f.flags_url(&server, 0)), + Some(json!({ "default_value": "alpha-2" })), + 200, + ) + .await; + assert_eq!(sdks[0].until(KEY).await, vec![KEY]); + for (i, sdk) in sdks.iter_mut().enumerate().skip(1) { + f.marker(&server, i, 1).await; + assert_eq!( + sdk.until("marker").await, + vec!["marker"], + "env {i} saw no foreign update" + ); + } + let mut expected = expected_initial(); + expected[0] = Some([(true, s("alpha-2")), (true, s("alpha-vip"))]); + assert_evals(&sdks, &expected, "after updating env 0"); + + // Deleting environment 1's flag leaves the others intact. + request( + &f.admin, + "DELETE", + &format!("{}/{KEY}", f.flags_url(&server, 1)), + None, + 204, + ) + .await; + assert_eq!(sdks[1].until(KEY).await, vec![KEY]); + for i in [0, 2] { + f.marker(&server, i, 2).await; + assert_eq!( + sdks[i].until("marker").await, + vec!["marker"], + "env {i} saw no foreign delete" + ); + } + expected[1] = None; + assert_evals(&sdks, &expected, "after deleting env 1"); + assert_eq!( + snapshot_default(&snapshot(&server, &f.keys[1]).await.1), + None + ); + assert_eq!( + snapshot_default(&snapshot(&server, &f.keys[0]).await.1), + Some(json!("alpha-2")) + ); + request( + &f.admin, + "GET", + &format!("{}/{KEY}", f.flags_url(&server, 1)), + None, + 404, + ) + .await; + request( + &f.admin, + "GET", + &format!("{}/{KEY}", f.flags_url(&server, 2)), + None, + 200, + ) + .await; + + // Recreating it affects only environment 1 again. + request( + &f.admin, + "POST", + &f.flags_url(&server, 1), + Some(json!({ "key": KEY, "is_enabled": true, "flag_type": "string", "default_value": "beta-2", "rules": [] })), + 200, + ) + .await; + assert_eq!(sdks[1].until(KEY).await, vec![KEY]); + for i in [0, 2] { + f.marker(&server, i, 3).await; + assert_eq!( + sdks[i].until("marker").await, + vec!["marker"], + "env {i} saw no foreign recreate" + ); + } + expected[1] = Some([(true, s("beta-2")), (true, s("beta-2"))]); + assert_evals(&sdks, &expected, "after recreating env 1"); + drop(sdks); + + // A restarted server bootstraps every environment from its own rows. + let server = server.restart(&db, &env.redis_url, &[]).await; + let mut sdks = Vec::new(); + for i in 0..3 { + sdks.push(Sdk::connect(&server.base, &f.keys[i], &f.envs[i]).await); + } + assert_evals(&sdks, &expected, "after restart"); + + // Redis-delivered updates: a write on one instance reaches the matching + // environment's SDKs on another instance, and only those. + let second = Server::spawn(&db, &env.redis_url, &[]).await; + let mut remote = Vec::new(); + for i in 0..3 { + remote.push(Sdk::connect(&second.base, &f.keys[i], &f.envs[i]).await); + } + assert_evals(&remote, &expected, "second instance bootstrap"); + request( + &f.admin, + "PATCH", + &format!("{}/gate", f.flags_url(&server, 2)), + Some(json!({ "is_enabled": true })), + 200, + ) + .await; + assert_eq!(remote[2].until("gate").await, vec!["gate"]); + assert_eq!(sdks[2].until("gate").await, vec!["gate"]); + for i in 0..2 { + f.marker(&server, i, 4).await; + assert_eq!( + remote[i].until("marker").await, + vec!["marker"], + "remote env {i}" + ); + assert_eq!( + sdks[i].until("marker").await, + vec!["marker"], + "local env {i}" + ); + } + expected[2] = Some([(true, s("gamma")), (true, s("gamma"))]); + assert_evals(&remote, &expected, "second instance after remote update"); + assert_evals(&sdks, &expected, "first instance after update"); +} diff --git a/server/tests/integration.rs b/server/tests/integration.rs index 653a34b..7ed6c4d 100644 --- a/server/tests/integration.rs +++ b/server/tests/integration.rs @@ -64,6 +64,9 @@ impl Drop for ServerGuard { } } +/// First-run setup token the spawned server is configured with. +const SETUP_TOKEN: &str = "integration-setup-token-0123456789"; + fn free_port() -> u16 { std::net::TcpListener::bind("127.0.0.1:0") .unwrap() @@ -138,6 +141,11 @@ async fn full_api_flow() { "test-secret-0123456789-0123456789-0123456789-0123456789-0123456789", ) .env("COOKIE_SECURE", "false") + .env("SETUP_TOKEN", SETUP_TOKEN) + // The test client stands in for a reverse proxy: some scenarios send + // X-Forwarded-For to get a rate-limit budget of their own, which the + // server honours only from a trusted peer. + .env("TRUSTED_PROXIES", "127.0.0.1") .env("PUBLIC_DIR", public_dir.to_str().unwrap()) .env("RUST_LOG", "warn") .stdout(Stdio::null()) @@ -184,6 +192,7 @@ async fn setup_and_keys(ctx: &Ctx) -> (String, String, String) { let r = ctx .anon .get(ctx.url("/api/setup/key")) + .header("X-Checkgate-Setup-Token", SETUP_TOKEN) .send() .await .unwrap(); @@ -198,6 +207,7 @@ async fn setup_and_keys(ctx: &Ctx) -> (String, String, String) { .sess .post(ctx.url("/api/setup/complete")) .header("X-Checkgate-Request", "true") + .header("X-Checkgate-Setup-Token", SETUP_TOKEN) .json(&json!({ "workspace_name": "Acme", "project_name": "Web", @@ -223,6 +233,7 @@ async fn setup_and_keys(ctx: &Ctx) -> (String, String, String) { .sess .post(ctx.url("/api/setup/complete")) .header("X-Checkgate-Request", "true") + .header("X-Checkgate-Setup-Token", SETUP_TOKEN) .json(&json!({ "workspace_name": "x", "name": "x", "email": "x@x.t", "password": "supersecret1" })) .send() .await diff --git a/server/tests/rate_limit.rs b/server/tests/rate_limit.rs new file mode 100644 index 0000000..00f5259 --- /dev/null +++ b/server/tests/rate_limit.rs @@ -0,0 +1,271 @@ +#![allow( + clippy::unwrap_used, + clippy::expect_used, + clippy::panic, + clippy::indexing_slicing, + clippy::arithmetic_side_effects, + reason = "test code: a panic here is an assertion failure, not a DoS" +)] +//! Client identity and per-class rate limits, through the real server binary. +//! The tests connect from 127.0.0.1, so whether that address is listed in +//! `TRUSTED_PROXIES` decides whether `X-Forwarded-For` is believed. + +mod common; + +use common::*; +use futures_util::StreamExt as _; +use serde_json::{Value, json}; +use std::sync::atomic::{AtomicUsize, Ordering}; +use std::time::Duration; + +/// A failed login. Each uses a new email so the per-account lockout (5 +/// failures) never answers before the rate limiter does. +async fn login_attempt(server: &Server, xff: Option<&str>) -> reqwest::Response { + static ATTEMPT: AtomicUsize = AtomicUsize::new(0); + let n = ATTEMPT.fetch_add(1, Ordering::Relaxed); + let mut req = reqwest::Client::new() + .post(server.url("/api/auth/login")) + .header("X-Checkgate-Request", "true") + .json(&json!({ "email": format!("nobody-{n}@acme.test"), "password": "wrong-password" })); + if let Some(xff) = xff { + req = req.header("X-Forwarded-For", xff); + } + req.send().await.unwrap() +} + +async fn lockout_ips(db_url: &str) -> Vec { + let pool = sqlx::PgPool::connect(db_url).await.unwrap(); + let ips = sqlx::query_scalar("SELECT DISTINCT ip FROM login_attempts ORDER BY ip") + .fetch_all(&pool) + .await + .unwrap(); + pool.close().await; + ips +} + +#[tokio::test] +async fn spoofed_forwarded_for_from_a_direct_client_is_ignored() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_rl_direct").await; + let server = Server::spawn( + &db, + &env.redis_url, + &[("RATE_LIMIT_AUTH_PER_MINUTE", Some("3"))], + ) + .await; + + // Rotating the header does not buy a fresh budget. + for i in 0..3 { + let r = login_attempt(&server, Some(&format!("198.51.100.{i}"))).await; + assert_eq!(r.status(), 401, "attempt {i} reaches the handler"); + } + let r = login_attempt(&server, Some("198.51.100.200")).await; + assert_eq!(r.status(), 429); + let retry_after: u64 = r.headers()["retry-after"] + .to_str() + .unwrap() + .parse() + .unwrap(); + assert!(retry_after >= 1); + let body: Value = r.json().await.unwrap(); + assert_eq!(body["retry_after_seconds"], retry_after); + assert!(body["error"].is_string(), "dashboard reads `error`"); + + // Nor does it change who the attempts are recorded against. + assert_eq!(lockout_ips(&db).await, vec!["127.0.0.1".to_string()]); + + // Other budgets are independent of the exhausted one... + let r = reqwest::Client::new() + .get(server.url("/api/auth/workspace")) + .send() + .await + .unwrap(); + assert_eq!(r.status(), 200, "API budget unaffected"); + // ...and health checks are never limited. + for _ in 0..100 { + let r = reqwest::get(server.url("/health")).await.unwrap(); + assert_eq!(r.status(), 200); + } +} + +#[tokio::test] +async fn trusted_proxy_forwards_distinct_client_identities() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_rl_trusted").await; + let server = Server::spawn( + &db, + &env.redis_url, + &[ + ("RATE_LIMIT_AUTH_PER_MINUTE", Some("2")), + ("TRUSTED_PROXIES", Some("127.0.0.1/32")), + ], + ) + .await; + + for client in ["198.51.100.1", "198.51.100.2"] { + for _ in 0..2 { + assert_eq!(login_attempt(&server, Some(client)).await.status(), 401); + } + assert_eq!( + login_attempt(&server, Some(client)).await.status(), + 429, + "{client} has its own budget" + ); + } + // Multi-hop: the client-supplied left part is ignored; the right-most + // untrusted hop is the client. + assert_eq!( + login_attempt(&server, Some("198.51.100.1, 203.0.113.9, 127.0.0.1")) + .await + .status(), + 401, + "203.0.113.9 is a new client" + ); + // Garbage in the header falls back to the proxy's own budget. + assert_eq!( + login_attempt(&server, Some("not-an-ip")).await.status(), + 401 + ); + assert_eq!(login_attempt(&server, None).await.status(), 401); + assert_eq!(login_attempt(&server, Some("")).await.status(), 429); + + assert_eq!( + lockout_ips(&db).await, + vec!["127.0.0.1", "198.51.100.1", "198.51.100.2", "203.0.113.9"], + "lockout records the resolved client" + ); +} + +#[tokio::test] +async fn untrusted_proxy_cannot_forward_identities() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_rl_untrusted").await; + // 127.0.0.1 is not in the trusted range, so it is treated as the client. + let server = Server::spawn( + &db, + &env.redis_url, + &[ + ("RATE_LIMIT_AUTH_PER_MINUTE", Some("2")), + ("TRUSTED_PROXIES", Some("10.0.0.0/8")), + ], + ) + .await; + assert_eq!( + login_attempt(&server, Some("198.51.100.1")).await.status(), + 401 + ); + assert_eq!( + login_attempt(&server, Some("198.51.100.2")).await.status(), + 401 + ); + assert_eq!( + login_attempt(&server, Some("198.51.100.3")).await.status(), + 429 + ); +} + +#[tokio::test] +async fn invalid_rate_limit_or_proxy_configuration_is_refused() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_rl_config").await; + let log = expect_startup_failure( + &db, + &env.redis_url, + &[("TRUSTED_PROXIES", Some("10.0.0.0/8, proxy.internal"))], + ) + .await; + assert!(log.contains("TRUSTED_PROXIES"), "{log}"); + let log = expect_startup_failure( + &db, + &env.redis_url, + &[("RATE_LIMIT_SSE_PER_MINUTE", Some("plenty"))], + ) + .await; + assert!(log.contains("RATE_LIMIT_SSE_PER_MINUTE"), "{log}"); +} + +/// Reads SSE frames until one with `event: update` arrives for `flag_key`. +async fn next_update_for>( + stream: &mut (impl futures_util::Stream> + Unpin), + buf: &mut String, + flag_key: &str, +) { + let deadline = tokio::time::Instant::now() + Duration::from_secs(10); + loop { + while let Some(end) = buf.find("\n\n") { + let frame: String = buf.drain(..end + 2).collect(); + if frame.contains("event: update") && frame.contains(&format!("\"key\":\"{flag_key}\"")) + { + return; + } + } + let chunk = tokio::time::timeout_at(deadline, stream.next()) + .await + .expect("update arrives in time") + .expect("stream open") + .unwrap(); + buf.push_str(&String::from_utf8_lossy(chunk.as_ref())); + } +} + +#[tokio::test] +async fn sse_limits_connections_not_delivered_events() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_rl_sse").await; + let server = Server::spawn( + &db, + &env.redis_url, + &[("RATE_LIMIT_SSE_PER_MINUTE", Some("2"))], + ) + .await; + let (admin, sdk_key, env_id) = complete_setup(&server).await; + let sdk = bearer_client(&sdk_key); + + let first = sdk.get(server.url("/stream")).send().await.unwrap(); + assert_eq!(first.status(), 200); + let mut events = first.bytes_stream(); + let mut buf = String::new(); + + // Far more events than the connection budget flow over the open stream. + let flags = server.url(&format!("/api/environments/{env_id}/flags")); + for i in 0..10 { + let key = format!("sse-flag-{i}"); + request( + &admin, + "POST", + &flags, + Some(json!({ "key": key, "is_enabled": true, "flag_type": "boolean", "rules": [] })), + 200, + ) + .await; + next_update_for(&mut events, &mut buf, &key).await; + } + + // Opening streams is what is counted. + assert_eq!( + sdk.get(server.url("/stream")) + .send() + .await + .unwrap() + .status(), + 200 + ); + assert_eq!( + sdk.get(server.url("/stream")) + .send() + .await + .unwrap() + .status(), + 429, + "third connection in a minute" + ); + // Snapshot polling has its own budget. + assert_eq!( + sdk.get(server.url("/flags/snapshot")) + .send() + .await + .unwrap() + .status(), + 200 + ); +} diff --git a/server/tests/sdk_health.rs b/server/tests/sdk_health.rs new file mode 100644 index 0000000..4f70296 --- /dev/null +++ b/server/tests/sdk_health.rs @@ -0,0 +1,241 @@ +#![allow( + clippy::unwrap_used, + clippy::expect_used, + clippy::panic, + clippy::indexing_slicing, + clippy::arithmetic_side_effects, + reason = "test code: a panic here is an assertion failure, not a DoS" +)] +//! `GET /api/health/connections` only reveals connections of environments the +//! caller may see, and only workspace admins see full client addresses. + +mod common; + +use common::*; +use serde_json::json; +use std::collections::BTreeSet; + +/// Environment ids of the connections the client can see, plus their IPs. +async fn visible( + client: &reqwest::Client, + server: &Server, +) -> (BTreeSet, BTreeSet, usize) { + let list = request( + client, + "GET", + &server.url("/api/health/connections"), + None, + 200, + ) + .await; + let list = list.as_array().unwrap(); + let envs = list + .iter() + .map(|c| c["environment_id"].as_str().unwrap_or("").to_string()) + .collect(); + let ips = list + .iter() + .map(|c| c["client_ip"].as_str().unwrap().to_string()) + .collect(); + (envs, ips, list.len()) +} + +fn set(items: &[&str]) -> BTreeSet { + items.iter().map(|s| s.to_string()).collect() +} + +#[tokio::test] +async fn connections_are_scoped_to_project_membership() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_sdk_health").await; + let server = Server::spawn(&db, &env.redis_url, &[]).await; + let (admin, prod_key, prod_env) = complete_setup(&server).await; + + let pool = sqlx::PgPool::connect(&db).await.unwrap(); + let project_a: String = + sqlx::query_scalar("SELECT project_id::text FROM environments WHERE id = $1::uuid") + .bind(&prod_env) + .fetch_one(&pool) + .await + .unwrap(); + pool.close().await; + + let create_env = |project: String, slug: &'static str| { + let admin = admin.clone(); + let url = server.url(&format!("/api/projects/{project}/environments")); + async move { + request( + &admin, + "POST", + &url, + Some(json!({ "name": slug, "slug": slug })), + 200, + ) + .await["id"] + .as_str() + .unwrap() + .to_string() + } + }; + let create_key = |project: String, env_id: String| { + let admin = admin.clone(); + let url = server.url(&format!("/api/projects/{project}/keys")); + async move { + request( + &admin, + "POST", + &url, + Some(json!({ "name": format!("key-{env_id}"), "environment_id": env_id })), + 200, + ) + .await["key"] + .as_str() + .unwrap() + .to_string() + } + }; + + // Project A: Production (seeded) + Staging. Project B: one environment. + let staging_env = create_env(project_a.clone(), "qa-health").await; + let staging_key = create_key(project_a.clone(), staging_env.clone()).await; + let project_b = request( + &admin, + "POST", + &server.url("/api/projects"), + Some(json!({ "name": "Other" })), + 200, + ) + .await["id"] + .as_str() + .unwrap() + .to_string(); + let other_env = create_env(project_b.clone(), "other").await; + let other_key = create_key(project_b.clone(), other_env.clone()).await; + + // Users: a viewer of A, an editor of B only, and a user in no project. + let mut ids = Vec::new(); + for (email, role) in [ + ("viewer-a@acme.test", "viewer"), + ("editor-b@acme.test", "editor"), + ("outsider@acme.test", "viewer"), + ] { + let user = request( + &admin, + "POST", + &server.url("/api/users"), + Some( + json!({ "name": email, "email": email, "role": role, "password": ADMIN_PASSWORD }), + ), + 200, + ) + .await; + ids.push(user["id"].as_i64().unwrap()); + } + for (project, user, role) in [ + (&project_a, ids[0], "viewer"), + (&project_b, ids[1], "editor"), + ] { + request( + &admin, + "POST", + &server.url(&format!("/api/projects/{project}/members")), + Some(json!({ "user_id": user, "role": role })), + 200, + ) + .await; + } + let viewer_a = login(&server, "viewer-a@acme.test", ADMIN_PASSWORD).await; + let editor_b = login(&server, "editor-b@acme.test", ADMIN_PASSWORD).await; + let outsider = login(&server, "outsider@acme.test", ADMIN_PASSWORD).await; + let viewer_pat = request( + &viewer_a, + "POST", + &server.url("/api/tokens"), + Some(json!({ "name": "health", "scope": "read_only" })), + 200, + ) + .await["token"] + .as_str() + .unwrap() + .to_string(); + let viewer_pat = bearer_client(&viewer_pat); + + // Open simultaneous streams: three SDK environments plus an admin session. + let mut streams = Vec::new(); + for key in [&prod_key, &staging_key, &other_key] { + let r = bearer_client(key) + .get(server.url("/stream")) + .send() + .await + .unwrap(); + assert_eq!(r.status(), 200); + streams.push(r); + } + let session_stream = admin.get(server.url("/stream")).send().await.unwrap(); + assert_eq!(session_stream.status(), 200); + + // Workspace admin: everything, with full addresses. + let (envs, ips, n) = visible(&admin, &server).await; + assert_eq!(n, 4); + assert_eq!(envs, set(&[&prod_env, &staging_env, &other_env, ""])); + assert_eq!(ips, set(&["127.0.0.1"])); + + // Viewer of A: both of A's environments, masked addresses, nothing of B. + let (envs, ips, _) = visible(&viewer_a, &server).await; + assert_eq!(envs, set(&[&prod_env, &staging_env])); + assert_eq!(ips, set(&["127.0.0.0/24"])); + // A read-only PAT acts as its owner. + let (envs, _, _) = visible(&viewer_pat, &server).await; + assert_eq!(envs, set(&[&prod_env, &staging_env])); + + // Editor of B only: just B. + let (envs, ips, _) = visible(&editor_b, &server).await; + assert_eq!(envs, set(&[&other_env])); + assert_eq!(ips, set(&["127.0.0.0/24"])); + + // No membership: nothing at all. + let (_, _, n) = visible(&outsider, &server).await; + assert_eq!(n, 0); + + // SDK keys and anonymous callers cannot list connections. + for key in [&prod_key, &other_key] { + let r = bearer_client(key) + .get(server.url("/api/health/connections")) + .send() + .await + .unwrap(); + assert_eq!(r.status(), 403, "SDK key"); + } + let r = reqwest::Client::new() + .get(server.url("/api/health/connections")) + .send() + .await + .unwrap(); + assert_eq!(r.status(), 401, "anonymous"); + + // Closing a stream removes it from the listing. + drop(streams.pop()); + let mut remaining = 0; + for _ in 0..40 { + remaining = visible(&admin, &server).await.2; + if remaining == 3 { + break; + } + tokio::time::sleep(std::time::Duration::from_millis(100)).await; + } + assert_eq!(remaining, 3, "closed stream unregistered"); + let (envs, _, _) = visible(&editor_b, &server).await; + assert!(envs.is_empty()); + + // Membership changes apply on the next request. + request( + &admin, + "DELETE", + &server.url(&format!("/api/projects/{project_a}/members/{}", ids[0])), + None, + 204, + ) + .await; + let (_, _, n) = visible(&viewer_a, &server).await; + assert_eq!(n, 0, "removed member sees nothing"); +} diff --git a/server/tests/setup_ownership.rs b/server/tests/setup_ownership.rs new file mode 100644 index 0000000..6fe768b --- /dev/null +++ b/server/tests/setup_ownership.rs @@ -0,0 +1,389 @@ +#![allow( + clippy::unwrap_used, + clippy::expect_used, + clippy::panic, + clippy::indexing_slicing, + clippy::arithmetic_side_effects, + reason = "test code: a panic here is an assertion failure, not a DoS" +)] +//! First-run setup: exactly one authorized request may claim an installation, +//! however many arrive at once and on however many instances. + +mod common; + +use common::*; +use serde_json::{Value, json}; + +async fn post_concurrently(servers: &[&Server], attempts_per_server: usize) -> Vec<(String, u16)> { + let mut tasks = Vec::new(); + for (s, server) in servers.iter().enumerate() { + for i in 0..attempts_per_server { + let base = server.base.clone(); + let email = format!("racer-{s}-{i}@acme.test"); + tasks.push(tokio::spawn(async move { + let r = post_setup( + &session_client(), + &base, + Some(SETUP_TOKEN), + &setup_body(&email, &format!("password-{s}-{i}")), + ) + .await; + (email, r.status().as_u16()) + })); + } + } + let mut results = Vec::new(); + for task in tasks { + results.push(task.await.unwrap()); + } + results +} + +/// Asserts exactly one winner and that the database holds only its identity. +async fn assert_single_winner(db_url: &str, server: &Server, results: &[(String, u16)]) { + let winners: Vec<&(String, u16)> = results.iter().filter(|(_, s)| *s == 200).collect(); + assert_eq!(winners.len(), 1, "exactly one setup wins: {results:?}"); + for (email, status) in results { + assert!( + *status == 200 || *status == 404, + "{email}: losers see setup already complete, got {status}" + ); + } + let winner = &winners[0].0; + + let pool = sqlx::PgPool::connect(db_url).await.unwrap(); + let users: Vec<(String, String)> = sqlx::query_as("SELECT email, role FROM users") + .fetch_all(&pool) + .await + .unwrap(); + assert_eq!(users, vec![(winner.clone(), "admin".to_string())]); + pool.close().await; + + // The winner's credentials work; a loser's were never stored. + let (s, i) = winner + .trim_start_matches("racer-") + .trim_end_matches("@acme.test") + .split_once('-') + .unwrap(); + login(server, winner, &format!("password-{s}-{i}")).await; + if let Some((loser, _)) = results.iter().find(|(_, s)| *s == 404) { + request( + &session_client(), + "POST", + &server.url("/api/auth/login"), + Some(json!({ "email": loser, "password": "password-0-0" })), + 401, + ) + .await; + } +} + +#[tokio::test] +async fn two_concurrent_setups_have_one_winner() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_setup_two").await; + let server = Server::spawn(&db, &env.redis_url, &[]).await; + let results = post_concurrently(&[&server], 2).await; + assert_single_winner(&db, &server, &results).await; +} + +#[tokio::test] +async fn many_concurrent_setups_have_one_winner() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_setup_many").await; + let server = Server::spawn(&db, &env.redis_url, &[]).await; + let results = post_concurrently(&[&server], 12).await; + assert_single_winner(&db, &server, &results).await; +} + +#[tokio::test] +async fn concurrent_setups_across_instances_have_one_winner() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_setup_multi").await; + let a = Server::spawn(&db, &env.redis_url, &[]).await; + let b = Server::spawn(&db, &env.redis_url, &[]).await; + let results = post_concurrently(&[&a, &b], 6).await; + assert_single_winner(&db, &b, &results).await; +} + +#[tokio::test] +async fn concurrent_setups_have_one_winner_under_repeatable_read_default() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_setup_rr").await; + // Setup must not rely on the database's default isolation level: under + // REPEATABLE READ a snapshot taken before the lock wait would miss the + // winner's commit. + let pool = sqlx::PgPool::connect(&db).await.unwrap(); + sqlx::query("ALTER DATABASE cg_setup_rr SET default_transaction_isolation = 'repeatable read'") + .execute(&pool) + .await + .unwrap(); + pool.close().await; + let server = Server::spawn(&db, &env.redis_url, &[]).await; + let results = post_concurrently(&[&server], 8).await; + assert_single_winner(&db, &server, &results).await; +} + +#[tokio::test] +async fn setup_requires_a_valid_token_and_is_one_time() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_setup_token").await; + let server = Server::spawn(&db, &env.redis_url, &[]).await; + let anon = reqwest::Client::new(); + let body = setup_body(ADMIN_EMAIL, ADMIN_PASSWORD); + + // Missing, empty and wrong tokens are refused, for the key and the claim. + for token in [None, Some(""), Some("wrong-token-0123456789abcdef")] { + let r = post_setup(&anon, &server.base, token, &body).await; + assert_eq!(r.status(), 401, "setup with token {token:?}"); + let mut req = anon.get(server.url("/api/setup/key")); + if let Some(token) = token { + req = req.header("X-Checkgate-Setup-Token", token); + } + assert_eq!( + req.send().await.unwrap().status(), + 401, + "key with {token:?}" + ); + } + // The token is a header, never a query parameter. + let r = anon + .get(server.url(&format!("/api/setup/key?setup_token={SETUP_TOKEN}"))) + .send() + .await + .unwrap(); + assert_eq!(r.status(), 401, "query-string token is ignored"); + // A refused attempt changed nothing. + let workspace: Value = anon + .get(server.url("/api/auth/workspace")) + .send() + .await + .unwrap() + .json() + .await + .unwrap(); + assert_eq!(workspace["is_setup_complete"], false); + + let (admin, _, _) = complete_setup(&server).await; + request(&admin, "GET", &server.url("/api/auth/me"), None, 200).await; + login(&server, ADMIN_EMAIL, ADMIN_PASSWORD).await; + + // Repeated setup — even with the valid token and the same email — is a 404 + // and does not touch the established account. + let takeover = setup_body(ADMIN_EMAIL, "attacker-password"); + let r = post_setup( + &session_client(), + &server.base, + Some(SETUP_TOKEN), + &takeover, + ) + .await; + assert_eq!(r.status(), 404, "setup after completion"); + let r = anon + .get(server.url("/api/setup/key")) + .header("X-Checkgate-Setup-Token", SETUP_TOKEN) + .send() + .await + .unwrap(); + assert_eq!(r.status(), 404, "setup key after completion"); + login(&server, ADMIN_EMAIL, ADMIN_PASSWORD).await; + request( + &session_client(), + "POST", + &server.url("/api/auth/login"), + Some(json!({ "email": ADMIN_EMAIL, "password": "attacker-password" })), + 401, + ) + .await; +} + +#[tokio::test] +async fn generated_tokens_work_on_every_instance_and_never_reach_the_log() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_setup_generated").await; + let generated = [("SETUP_TOKEN", None)]; + let a = Server::spawn(&db, &env.redis_url, &generated).await; + let b = Server::spawn(&db, &env.redis_url, &generated).await; + + let read_token = |server: &Server| { + let path = server.dir.join("checkgate-setup-token"); + #[cfg(unix)] + { + use std::os::unix::fs::PermissionsExt as _; + let mode = std::fs::metadata(&path).unwrap().permissions().mode(); + assert_eq!(mode & 0o777, 0o600, "token file is owner-only"); + } + std::fs::read_to_string(path).unwrap().trim().to_string() + }; + let token_a = read_token(&a); + let token_b = read_token(&b); + assert_eq!(token_a.len(), 64); + assert_ne!(token_a, token_b, "each instance generates its own token"); + + // Instance B accepts instance A's token: hashes live in the shared database. + let r = reqwest::Client::new() + .get(b.url("/api/setup/key")) + .header("X-Checkgate-Setup-Token", &token_a) + .send() + .await + .unwrap(); + assert_eq!(r.status(), 200, "cross-instance token"); + + let r = post_setup( + &session_client(), + &a.base, + Some(&token_b), + &setup_body(ADMIN_EMAIL, ADMIN_PASSWORD), + ) + .await; + assert_eq!(r.status(), 200, "setup with generated token"); + + let pool = sqlx::PgPool::connect(&db).await.unwrap(); + let remaining: i64 = + sqlx::query_scalar("SELECT COUNT(*) FROM settings WHERE starts_with(key, 'setup_token:')") + .fetch_one(&pool) + .await + .unwrap(); + assert_eq!(remaining, 0, "setup revokes every generated token"); + pool.close().await; + assert!( + !a.dir.join("checkgate-setup-token").exists(), + "the instance that ran setup removes its token file" + ); + + // B's file is stale now; B removes it on its next start. + assert!(b.dir.join("checkgate-setup-token").exists()); + let b = b.restart(&db, &env.redis_url, &generated).await; + assert!(!b.dir.join("checkgate-setup-token").exists()); + + for (server, token) in [(&a, &token_a), (&b, &token_b)] { + let log = server.log(); + assert!(log.contains("setup token"), "log mentions the token file"); + assert!(!log.contains(token.as_str()), "token value is never logged"); + } +} + +#[tokio::test] +async fn failed_setup_rolls_back_completely() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_setup_rollback").await; + let generated = [("SETUP_TOKEN", None)]; + let server = Server::spawn(&db, &env.redis_url, &generated).await; + let token = std::fs::read_to_string(server.dir.join("checkgate-setup-token")) + .unwrap() + .trim() + .to_string(); + + // Fail the last write setup makes before marking itself complete. + let pool = sqlx::PgPool::connect(&db).await.unwrap(); + sqlx::query( + "CREATE FUNCTION fail_setup() RETURNS trigger LANGUAGE plpgsql AS $$ \ + BEGIN RAISE EXCEPTION 'injected setup failure'; END $$", + ) + .execute(&pool) + .await + .unwrap(); + sqlx::query("CREATE TRIGGER fail_setup BEFORE UPDATE ON projects FOR EACH ROW EXECUTE FUNCTION fail_setup()") + .execute(&pool) + .await + .unwrap(); + + let body = setup_body(ADMIN_EMAIL, ADMIN_PASSWORD); + let r = post_setup(&session_client(), &server.base, Some(&token), &body).await; + assert_eq!(r.status(), 500, "injected failure surfaces"); + + let users: i64 = sqlx::query_scalar("SELECT COUNT(*) FROM users") + .fetch_one(&pool) + .await + .unwrap(); + assert_eq!(users, 0, "admin insert rolled back"); + let complete: Option = + sqlx::query_scalar("SELECT value FROM settings WHERE key = 'setup_complete'") + .fetch_optional(&pool) + .await + .unwrap(); + assert_ne!( + complete.as_deref(), + Some("true"), + "setup not marked complete" + ); + let workspace: String = + sqlx::query_scalar("SELECT value FROM settings WHERE key = 'workspace_name'") + .fetch_one(&pool) + .await + .unwrap(); + assert_eq!(workspace, "", "workspace name rolled back"); + let tokens: i64 = + sqlx::query_scalar("SELECT COUNT(*) FROM settings WHERE starts_with(key, 'setup_token:')") + .fetch_one(&pool) + .await + .unwrap(); + assert_eq!(tokens, 1, "token revocation rolled back too"); + + // Once the fault is gone, the same token completes setup. + sqlx::query("DROP TRIGGER fail_setup ON projects") + .execute(&pool) + .await + .unwrap(); + let r = post_setup(&session_client(), &server.base, Some(&token), &body).await; + assert_eq!(r.status(), 200, "retry after rollback"); + login(&server, ADMIN_EMAIL, ADMIN_PASSWORD).await; + pool.close().await; +} + +#[tokio::test] +async fn setup_never_overwrites_an_account_with_a_password() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_setup_existing").await; + let server = Server::spawn(&db, &env.redis_url, &[]).await; + let pool = sqlx::PgPool::connect(&db).await.unwrap(); + // A pre-password-auth row may be claimed; an account with a password not. + sqlx::query( + "INSERT INTO users (name, email, role, password_hash) VALUES \ + ('Legacy', 'legacy@acme.test', 'viewer', NULL), \ + ('Owner', 'owner@acme.test', 'viewer', 'not-a-real-hash')", + ) + .execute(&pool) + .await + .unwrap(); + + let r = post_setup( + &session_client(), + &server.base, + Some(SETUP_TOKEN), + &setup_body("owner@acme.test", ADMIN_PASSWORD), + ) + .await; + assert_eq!(r.status(), 409); + let (role, hash): (String, String) = + sqlx::query_as("SELECT role, password_hash FROM users WHERE email = 'owner@acme.test'") + .fetch_one(&pool) + .await + .unwrap(); + assert_eq!( + (role.as_str(), hash.as_str()), + ("viewer", "not-a-real-hash") + ); + + let r = post_setup( + &session_client(), + &server.base, + Some(SETUP_TOKEN), + &setup_body("legacy@acme.test", ADMIN_PASSWORD), + ) + .await; + assert_eq!(r.status(), 200, "passwordless legacy row is claimable"); + login(&server, "legacy@acme.test", ADMIN_PASSWORD).await; + pool.close().await; +} + +#[tokio::test] +async fn short_setup_token_is_refused_at_startup() { + let Some(env) = test_env() else { return }; + let db = env.fresh_database("cg_setup_short").await; + let log = expect_startup_failure(&db, &env.redis_url, &[("SETUP_TOKEN", Some("short"))]).await; + assert!( + log.contains("SETUP_TOKEN"), + "error names the setting: {log}" + ); +}

- - - -